ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDg4MDk0MzUuLmNjMWNkY2QgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTMsMTEgKzEzLDggQEAKICp+CiAuZ2RiX2hpc3RvcnkKIERvYy9idWlsZC8KLURvYy90b29scy9kb2N1dGlscy8KLURvYy90b29scy9qaW5qYS8KLURvYy90b29scy9qaW5qYTIvCi1Eb2MvdG9vbHMvcHlnbWVudHMvCi1Eb2MvdG9vbHMvc3BoaW54LworRG9jL3ZlbnYvCitMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKIExpYi9fc3lzY29uZmlnZGF0YS5weQpAQCAtMzEsMTggKzI4LDMxIEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAotTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgotTW9kdWxlcy9fdGVzdGVtYmVkCi1QQ2J1aWxkLyouYnNjCi1QQ2J1aWxkLyouZGxsCi1QQ2J1aWxkLyouZXhlCi1QQ2J1aWxkLyouZXhwCi1QQ2J1aWxkLyoubGliCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyoubwotUENidWlsZC8qLnBkYgotUENidWlsZC9XaW4zMi10ZW1wLSoKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQcm9ncmFtcy9fdGVzdGVtYmVkCitQQy9weXRob25fbnQqLmgKK1BDL3B5dGhvbm50X3JjKi5oCitQQy8qLyouZXhlCitQQy8qLyouZXhwCitQQy8qLyoubGliCitQQy8qLyouYnNjCitQQy8qLyouZGxsCitQQy8qLyoucGRiCitQQy8qLyoudXNlcgorUEMvKi8qLm5jYgorUEMvKi8qLnN1bworUEMvKi9XaW4zMi10ZW1wLSoKK1BDLyoveDY0LXRlbXAtKgorUEMvKi9hbWQ2NAorUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCitQQ2J1aWxkLyotcGdpCitQQ2J1aWxkLyotcGdvCitQQ2J1aWxkLy52cy8KIFBDYnVpbGQvYW1kNjQvCitQQ2J1aWxkL29iai8KK1BDQnVpbGQvd2luMzIvCiAucHVyaWZ5CiBQYXJzZXIvcGdlbgogX19weWNhY2hlX18KQEAgLTY0LDYgKzc0LDcgQEAKIHB5Y29uZmlnLmgKIHB5dGhvbi1jb25maWcKIHB5dGhvbi1jb25maWcucHkKK3B5dGhvbi5iYXQKIHB5dGhvbi5leGUKIHB5dGhvbi1nZGIucHkKIHB5dGhvbi5leGUtZ2RiLnB5CkBAIC03NSwzICs4Niw2IEBACiBjb3ZlcmFnZS8KIGV4dGVybmFscy8KIGh0bWxjb3YvCitUb29scy9tc2kvb2JqCitUb29scy9zc2wvYW1kNjQKK1Rvb2xzL3NzbC93aW4zMgpkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IDllNWE1ODMuLjgwNmUxNTYgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTksNiArOSw3IEBACiBhdXRvbTR0ZS5jYWNoZSQKIF5idWlsZC8KIF5Eb2MvYnVpbGQvCiteRG9jL3ZlbnYvCiBidWlsZG5vJAogY29uZmlnLmNhY2hlCiBjb25maWcubG9nCkBAIC0xOCw2ICsxOSw3IEBACiBwbGF0Zm9ybSQKIHB5Y29uZmlnLmgkCiBweXRob24kCitweXRob24uYmF0JAogcHl0aG9uLmV4ZSQKIHB5dGhvbi1jb25maWckCiBweXRob24tY29uZmlnLnB5JApAQCAtNDgsMTMgKzUwLDEyIEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9kaXN0dXRpbHMvY29tbWFuZC8qLnBkYgogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQogUEMvcHl0aG9uX250Ki5oCiBQQy9weXRob25udF9yYyouaAotUEMvKi5vYmoKLVBDLyouZXhlCiBQQy8qLyouZXhlCiBQQy8qLyouZXhwCiBQQy8qLyoubGliCkBAIC02NywyOSArNjgsMjEgQEAKIFBDLyovV2luMzItdGVtcC0qCiBQQy8qL3g2NC10ZW1wLSoKIFBDLyovYW1kNjQKLVBDYnVpbGQvKi5leGUKLVBDYnVpbGQvKi5kbGwKLVBDYnVpbGQvKi5wZGIKLVBDYnVpbGQvKi5saWIKLVBDYnVpbGQvKi5leHAKLVBDYnVpbGQvKi5vCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyoudXNlcgogUENidWlsZC8qLnN1bwogUENidWlsZC8qLipzZGYKLVBDYnVpbGQvV2luMzItdGVtcC0qCi1QQ2J1aWxkL3g2NC10ZW1wLSoKIFBDYnVpbGQvKi1wZ2kKIFBDYnVpbGQvKi1wZ28KK1BDYnVpbGQvLnZzCiBQQ2J1aWxkL2FtZDY0Ci1QQ2J1aWxkL2lwY2gKK1BDYnVpbGQvb2JqCitQQ2J1aWxkL3dpbjMyCiBUb29scy91bmljb2RlL2J1aWxkLwogVG9vbHMvdW5pY29kZS9NQVBQSU5HUy8KIEJ1aWxkTG9nLmh0bQogX19weWNhY2hlX18KLU1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKLU1vZHVsZXMvX3Rlc3RlbWJlZAorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1Byb2dyYW1zL190ZXN0ZW1iZWQKIC5jb3ZlcmFnZQogY292ZXJhZ2UvCiBleHRlcm5hbHMvCkBAIC05OCwzICs5MSw2IEBACiAqLmdjbm8KICouZ2NvdgogY292ZXJhZ2UuaW5mbworVG9vbHMvbXNpL29iagorVG9vbHMvc3NsL2FtZDY0CitUb29scy9zc2wvd2luMzIKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGQ1ZWVhMjQuLmYyMmEwMjggMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ0LDMgKzE0NCw5IEBACiBhYjJjMDIzYTk0MzJmMTY2NTJlODljNDA0YmJjODRhYTkxYmY1NWFmIHYzLjQuMgogNjlkZDUyOGNhNjI1NWE2NmMzN2NjNWNmNjgwZTgzNTdkMTA4YjAzNiB2My40LjNyYzEKIGI0Y2JlY2JjMDc4MWU4OWEzMDlkMDNiNjBhMWY3NWY4NDk5MjUwZTYgdjMuNC4zCis1ZDRiNmE1N2Q1ZmQ3NTY0YmY3M2YzZGIwZTQ2ZmU1ZWViMDBiY2Q4IHYzLjUuMGExCiswMzM3YmQ3ZWJjYjY1NTlkNjk2NzliYzcwMjUwNTlhZDFjZTRmNDMyIHYzLjUuMGEyCis4MjY1NmUyOGI1ZTVjNGFlNDhkOGRkOGI1ZjBkNzk2ODkwOGE4MmI2IHYzLjUuMGEzCis0MTNlMGUwMDA0ZjRmOTU0MzMxY2I4MTIyYWE1NWZlMjA4OTg0OTU1IHYzLjUuMGE0CiswNzFmZWZiYjVlM2RiNzcwYzZjMTlmYmE5OTk0Njk5ZjEyMWIxY2VhIHYzLjUuMGIxCis3YTA4OGFmNTYxNWJmMDQwMjRlOTkxMjA2OGY0YmQ4ZjQzZWQzOTE3IHYzLjUuMGIyCmRpZmYgLS1naXQgYS8uaGd0b3VjaCBiLy5oZ3RvdWNoCmluZGV4IDdlM2E1ZTcuLmI5YmUwZjEgMTAwNjQ0Ci0tLSBhLy5oZ3RvdWNoCisrKyBiLy5oZ3RvdWNoCkBAIC0yLDcgKzIsOSBAQAogIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCiAjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCitJbmNsdWRlL29wY29kZS5oOiAgTGliL29wY29kZS5weSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CiAKIEluY2x1ZGUvUHl0aG9uLWFzdC5oOiBQYXJzZXIvUHl0aG9uLmFzZGwgUGFyc2VyL2FzZGwucHkgUGFyc2VyL2FzZGxfYy5weQogUHl0aG9uL1B5dGhvbi1hc3QuYzogSW5jbHVkZS9QeXRob24tYXN0LmgKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCBlYTMwMjMxLi5hNDJlOThiIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTIgQEAKIAogLlBIT05ZOiBoZWxwIGJ1aWxkIGh0bWwgaHRtbGhlbHAgbGF0ZXggdGV4dCBjaGFuZ2VzIGxpbmtjaGVjayBcCiAJc3VzcGljaW91cyBjb3ZlcmFnZSBkb2N0ZXN0IHB5ZG9jLXRvcGljcyBodG1sdmlldyBjbGVhbiBkaXN0IGNoZWNrIHNlcnZlIFwKLQlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUKKwlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUgdmVudgogCiBoZWxwOgogCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFrZSA8dGFyZ2V0Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgogCUBlY2hvICIgIGNsZWFuICAgICAgdG8gcmVtb3ZlIGJ1aWxkIGZpbGVzIgorCUBlY2hvICIgIHZlbnYgICAgICAgdG8gY3JlYXRlIGEgdmVudiB3aXRoIG5lY2Vzc2FyeSB0b29scyIKIAlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgogCUBlY2hvICIgIGh0bWx2aWV3ICAgdG8gb3BlbiB0aGUgaW5kZXggcGFnZSBidWlsdCBieSB0aGUgaHRtbCB0YXJnZXQgaW4geW91ciBicm93c2VyIgogCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgpAQCAtOTUsMTQgKzk2LDE4IEBACiAKIHB5ZG9jLXRvcGljczogQlVJTERFUiA9IHB5ZG9jLXRvcGljcwogcHlkb2MtdG9waWNzOiBidWlsZAotCUBlY2hvICJCdWlsZGluZyBmaW5pc2hlZDsgbm93IGNvcHkgYnVpbGQvcHlkb2MtdG9waWNzL3RvcGljcy5weSIgXAotCSAgICAgICJ0byAuLi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkiCisJQGVjaG8gIkJ1aWxkaW5nIGZpbmlzaGVkOyBub3cgcnVuIHRoaXM6IiBcCisJICAgICAgImNwIGJ1aWxkL3B5ZG9jLXRvcGljcy90b3BpY3MucHkgLi4vTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IgogCiBodG1sdmlldzogaHRtbAogCSAkKFBZVEhPTikgLWMgImltcG9ydCB3ZWJicm93c2VyOyB3ZWJicm93c2VyLm9wZW4oJ2J1aWxkL2h0bWwvaW5kZXguaHRtbCcpIgogCiBjbGVhbjoKLQktcm0gLXJmIGJ1aWxkLyoKKwktcm0gLXJmIGJ1aWxkLyogdmVudi8qCisKK3ZlbnY6CisJJChQWVRIT04pIC1tIHZlbnYgdmVudgorCS4vdmVudi9iaW4vcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCAtVSBTcGhpbngKIAogZGlzdDoKIAlybSAtcmYgZGlzdApAQCAtMTcyLDQgKzE3NywzIEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgotCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IDU4YmRhNjIuLjU4MGQxMDIgMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgcmVTdHJ1Y3R1cmVkVGV4dCAocmVTVCkgc291cmNlcyB0byB0aGUgUHl0aG9uCiBkb2N1bWVudGF0aW9uLiAgWW91IGRvbid0IG5lZWQgdG8gYnVpbGQgdGhlbSB5b3Vyc2VsZiwgcHJlYnVpbHQgdmVyc2lvbnMgYXJlCi1hdmFpbGFibGUgYXQgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC9kb3dubG9hZC5odG1sPi4KK2F2YWlsYWJsZSBhdCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L2Rvd25sb2FkLmh0bWw+LgogCiBEb2N1bWVudGF0aW9uIG9uIGF1dGhvcmluZyBQeXRob24gZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFib3V0CiBib3RoIHN0eWxlIGFuZCBtYXJrdXAsIGlzIGF2YWlsYWJsZSBpbiB0aGUgIkRvY3VtZW50aW5nIFB5dGhvbiIgY2hhcHRlciBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggM2MwZjRiOS4uZWQ2MmRlYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgogCi1gYHcqYGAgKDpjbGFzczpgYnl0ZWFycmF5YCBvciByZWFkLXdyaXRlIGJ5dGUtb3JpZW50ZWQgYnVmZmVyKSBbUHlfYnVmZmVyXQorYGB3KmBgIChyZWFkLXdyaXRlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApIFtQeV9idWZmZXJdCiAgICBUaGlzIGZvcm1hdCBhY2NlcHRzIGFueSBvYmplY3Qgd2hpY2ggaW1wbGVtZW50cyB0aGUgcmVhZC13cml0ZSBidWZmZXIKICAgIGludGVyZmFjZS4gSXQgZmlsbHMgYSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLgogICAgVGhlIGJ1ZmZlciBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGJ5dGVzLiBUaGUgY2FsbGVyIGhhdmUgdG8gY2FsbApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvZGVjLnJzdCBiL0RvYy9jLWFwaS9jb2RlYy5yc3QKaW5kZXggODMyNTJhZi4uZGZlM2Q0MyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvZGVjLnJzdAorKysgYi9Eb2MvYy1hcGkvY29kZWMucnN0CkBAIC0xMTYsMyArMTE2LDggQEAKICAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKGBgXHhgYCwgYGBcdWBgIGFuZAogICAgYGBcVWBgKS4KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCisKKyAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKaW5kZXggNjZiNzc1Mi4uODE0MzE3YiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdApAQCAtOSwxMyArOSwxOSBAQAogCiBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgd2lsbCBsZXQgeW91IGhhbmRsZSBhbmQgcmFpc2UgUHl0aG9uCiBleGNlcHRpb25zLiAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgc29tZSBvZiB0aGUgYmFzaWNzIG9mIFB5dGhvbgotZXhjZXB0aW9uIGhhbmRsaW5nLiAgSXQgd29ya3Mgc29tZXdoYXQgbGlrZSB0aGUgVW5peCA6YzpkYXRhOmBlcnJub2AgdmFyaWFibGU6CitleGNlcHRpb24gaGFuZGxpbmcuICBJdCB3b3JrcyBzb21ld2hhdCBsaWtlIHRoZSBQT1NJWCA6YzpkYXRhOmBlcnJub2AgdmFyaWFibGU6CiB0aGVyZSBpcyBhIGdsb2JhbCBpbmRpY2F0b3IgKHBlciB0aHJlYWQpIG9mIHRoZSBsYXN0IGVycm9yIHRoYXQgb2NjdXJyZWQuICBNb3N0Ci1mdW5jdGlvbnMgZG9uJ3QgY2xlYXIgdGhpcyBvbiBzdWNjZXNzLCBidXQgd2lsbCBzZXQgaXQgdG8gaW5kaWNhdGUgdGhlIGNhdXNlIG9mCi10aGUgZXJyb3Igb24gZmFpbHVyZS4gIE1vc3QgZnVuY3Rpb25zIGFsc28gcmV0dXJuIGFuIGVycm9yIGluZGljYXRvciwgdXN1YWxseQotKk5VTEwqIGlmIHRoZXkgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhIHBvaW50ZXIsIG9yIGBgLTFgYCBpZiB0aGV5IHJldHVybiBhbgotaW50ZWdlciAoZXhjZXB0aW9uOiB0aGUgOmM6ZnVuYzpgUHlBcmdfXCpgIGZ1bmN0aW9ucyByZXR1cm4gYGAxYGAgZm9yIHN1Y2Nlc3MgYW5kCi1gYDBgYCBmb3IgZmFpbHVyZSkuCitDIEFQSSBmdW5jdGlvbnMgZG9uJ3QgY2xlYXIgdGhpcyBvbiBzdWNjZXNzLCBidXQgd2lsbCBzZXQgaXQgdG8gaW5kaWNhdGUgdGhlCitjYXVzZSBvZiB0aGUgZXJyb3Igb24gZmFpbHVyZS4gIE1vc3QgQyBBUEkgZnVuY3Rpb25zIGFsc28gcmV0dXJuIGFuIGVycm9yCitpbmRpY2F0b3IsIHVzdWFsbHkgKk5VTEwqIGlmIHRoZXkgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhIHBvaW50ZXIsIG9yIGBgLTFgYAoraWYgdGhleSByZXR1cm4gYW4gaW50ZWdlciAoZXhjZXB0aW9uOiB0aGUgOmM6ZnVuYzpgUHlBcmdfXCpgIGZ1bmN0aW9ucworcmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzIGFuZCBgYDBgYCBmb3IgZmFpbHVyZSkuCisKK0NvbmNyZXRlbHksIHRoZSBlcnJvciBpbmRpY2F0b3IgY29uc2lzdHMgb2YgdGhyZWUgb2JqZWN0IHBvaW50ZXJzOiB0aGUKK2V4Y2VwdGlvbidzIHR5cGUsIHRoZSBleGNlcHRpb24ncyB2YWx1ZSwgYW5kIHRoZSB0cmFjZWJhY2sgb2JqZWN0LiAgQW55CitvZiB0aG9zZSBwb2ludGVycyBjYW4gYmUgTlVMTCBpZiBub24tc2V0IChhbHRob3VnaCBzb21lIGNvbWJpbmF0aW9ucyBhcmUKK2ZvcmJpZGRlbiwgZm9yIGV4YW1wbGUgeW91IGNhbid0IGhhdmUgYSBub24tTlVMTCB0cmFjZWJhY2sgaWYgdGhlIGV4Y2VwdGlvbgordHlwZSBpcyBOVUxMKS4KIAogV2hlbiBhIGZ1bmN0aW9uIG11c3QgZmFpbCBiZWNhdXNlIHNvbWUgZnVuY3Rpb24gaXQgY2FsbGVkIGZhaWxlZCwgaXQgZ2VuZXJhbGx5CiBkb2Vzbid0IHNldCB0aGUgZXJyb3IgaW5kaWNhdG9yOyB0aGUgZnVuY3Rpb24gaXQgY2FsbGVkIGFscmVhZHkgc2V0IGl0LiAgSXQgaXMKQEAgLTI3LDEyICszMywyMSBAQAogcHJvcGFnYXRlZCwgYWRkaXRpb25hbCBjYWxscyBpbnRvIHRoZSBQeXRob24vQyBBUEkgbWF5IG5vdCBiZWhhdmUgYXMgaW50ZW5kZWQKIGFuZCBtYXkgZmFpbCBpbiBteXN0ZXJpb3VzIHdheXMuCiAKLVRoZSBlcnJvciBpbmRpY2F0b3IgY29uc2lzdHMgb2YgdGhyZWUgUHl0aG9uIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgcmVzdWx0Ci1vZiBgYHN5cy5leGNfaW5mbygpYGAuICBBUEkgZnVuY3Rpb25zIGV4aXN0IHRvIGludGVyYWN0IHdpdGggdGhlIGVycm9yIGluZGljYXRvcgotaW4gdmFyaW91cyB3YXlzLiAgVGhlcmUgaXMgYSBzZXBhcmF0ZSBlcnJvciBpbmRpY2F0b3IgZm9yIGVhY2ggdGhyZWFkLgorLi4gbm90ZTo6CisgICBUaGUgZXJyb3IgaW5kaWNhdG9yIGlzICoqbm90KiogdGhlIHJlc3VsdCBvZiA6ZnVuYzpgc3lzLmV4Y19pbmZvKClgLgorICAgVGhlIGZvcm1lciBjb3JyZXNwb25kcyB0byBhbiBleGNlcHRpb24gdGhhdCBpcyBub3QgeWV0IGNhdWdodCAoYW5kIGlzCisgICB0aGVyZWZvcmUgc3RpbGwgcHJvcGFnYXRpbmcpLCB3aGlsZSB0aGUgbGF0dGVyIHJldHVybnMgYW4gZXhjZXB0aW9uIGFmdGVyCisgICBpdCBpcyBjYXVnaHQgKGFuZCBoYXMgdGhlcmVmb3JlIHN0b3BwZWQgcHJvcGFnYXRpbmcpLgogCi0uLiBYWFggT3JkZXIgb2YgdGhlc2Ugc2hvdWxkIGJlIG1vcmUgdGhvdWdodGZ1bC4KLSAgIEVpdGhlciBhbHBoYWJldGljYWwgb3Igc29tZSBraW5kIG9mIHN0cnVjdHVyZS4KKworUHJpbnRpbmcgYW5kIGNsZWFyaW5nCis9PT09PT09PT09PT09PT09PT09PT0KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9DbGVhcigpCisKKyAgIENsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIG5vdCBzZXQsIHRoZXJlIGlzIG5vCisgICBlZmZlY3QuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfUHJpbnRFeChpbnQgc2V0X3N5c19sYXN0X3ZhcnMpCkBAIC01MSwxMjcgKzY2LDI0IEBACiAgICBBbGlhcyBmb3IgYGBQeUVycl9QcmludEV4KDEpYGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9PY2N1cnJlZCgpCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9Xcml0ZVVucmFpc2FibGUoUHlPYmplY3QgKm9iaikKIAotICAgVGVzdCB3aGV0aGVyIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgc2V0LiAgSWYgc2V0LCByZXR1cm4gdGhlIGV4Y2VwdGlvbiAqdHlwZSoKLSAgICh0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGxhc3QgY2FsbCB0byBvbmUgb2YgdGhlIDpjOmZ1bmM6YFB5RXJyX1NldFwqYAotICAgZnVuY3Rpb25zIG9yIHRvIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgKS4gIElmIG5vdCBzZXQsIHJldHVybiAqTlVMTCouICBZb3UgZG8gbm90Ci0gICBvd24gYSByZWZlcmVuY2UgdG8gdGhlIHJldHVybiB2YWx1ZSwgc28geW91IGRvIG5vdCBuZWVkIHRvIDpjOmZ1bmM6YFB5X0RFQ1JFRmAKLSAgIGl0LgorICAgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSB0byBgYHN5cy5zdGRlcnJgYCB3aGVuIGFuCisgICBleGNlcHRpb24gaGFzIGJlZW4gc2V0IGJ1dCBpdCBpcyBpbXBvc3NpYmxlIGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYWN0dWFsbHkKKyAgIHJhaXNlIHRoZSBleGNlcHRpb24uICBJdCBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFuCisgICA6bWV0aDpgX19kZWxfX2AgbWV0aG9kLgogCi0gICAuLiBub3RlOjoKLQotICAgICAgRG8gbm90IGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byBhIHNwZWNpZmljIGV4Y2VwdGlvbjsgdXNlCi0gICAgICA6YzpmdW5jOmBQeUVycl9FeGNlcHRpb25NYXRjaGVzYCBpbnN0ZWFkLCBzaG93biBiZWxvdy4gIChUaGUgY29tcGFyaXNvbiBjb3VsZAotICAgICAgZWFzaWx5IGZhaWwgc2luY2UgdGhlIGV4Y2VwdGlvbiBtYXkgYmUgYW4gaW5zdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzLCBpbiB0aGUKLSAgICAgIGNhc2Ugb2YgYSBjbGFzcyBleGNlcHRpb24sIG9yIGl0IG1heSBiZSBhIHN1YmNsYXNzIG9mIHRoZSBleHBlY3RlZCBleGNlcHRpb24uKQorICAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50ICpvYmoqIHRoYXQgaWRlbnRpZmllcyB0aGUgY29udGV4dAorICAgaW4gd2hpY2ggdGhlIHVucmFpc2FibGUgZXhjZXB0aW9uIG9jY3VycmVkLiBUaGUgcmVwciBvZiAqb2JqKiB3aWxsIGJlIHByaW50ZWQgaW4KKyAgIHRoZSB3YXJuaW5nIG1lc3NhZ2UuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5T2JqZWN0ICpleGMpCitSYWlzaW5nIGV4Y2VwdGlvbnMKKz09PT09PT09PT09PT09PT09PQogCi0gICBFcXVpdmFsZW50IHRvIGBgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5RXJyX09jY3VycmVkKCksIGV4YylgYC4gIFRoaXMKLSAgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyBhY3R1YWxseSBzZXQ7IGEgbWVtb3J5IGFjY2VzcwotICAgdmlvbGF0aW9uIHdpbGwgb2NjdXIgaWYgbm8gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZ2l2ZW4sIFB5T2JqZWN0ICpleGMpCi0KLSAgIFJldHVybiB0cnVlIGlmIHRoZSAqZ2l2ZW4qIGV4Y2VwdGlvbiBtYXRjaGVzIHRoZSBleGNlcHRpb24gaW4gKmV4YyouICBJZgotICAgKmV4YyogaXMgYSBjbGFzcyBvYmplY3QsIHRoaXMgYWxzbyByZXR1cm5zIHRydWUgd2hlbiAqZ2l2ZW4qIGlzIGFuIGluc3RhbmNlCi0gICBvZiBhIHN1YmNsYXNzLiAgSWYgKmV4YyogaXMgYSB0dXBsZSwgYWxsIGV4Y2VwdGlvbnMgaW4gdGhlIHR1cGxlIChhbmQKLSAgIHJlY3Vyc2l2ZWx5IGluIHN1YnR1cGxlcykgYXJlIHNlYXJjaGVkIGZvciBhIG1hdGNoLgotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbihQeU9iamVjdCoqZXhjLCBQeU9iamVjdCoqdmFsLCBQeU9iamVjdCoqdGIpCi0KLSAgIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdGhlIHZhbHVlcyByZXR1cm5lZCBieSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgYmVsb3cKLSAgIGNhbiBiZSAidW5ub3JtYWxpemVkIiwgbWVhbmluZyB0aGF0IGBgKmV4Y2BgIGlzIGEgY2xhc3Mgb2JqZWN0IGJ1dCBgYCp2YWxgYCBpcwotICAgbm90IGFuIGluc3RhbmNlIG9mIHRoZSAgc2FtZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUKLSAgIHRoZSBjbGFzcyBpbiB0aGF0IGNhc2UuICBJZiB0aGUgdmFsdWVzIGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQsIG5vdGhpbmcgaGFwcGVucy4KLSAgIFRoZSBkZWxheWVkIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gKmRvZXMgbm90KiBpbXBsaWNpdGx5IHNldCB0aGUgYGBfX3RyYWNlYmFja19fYGAKLSAgICAgIGF0dHJpYnV0ZSBvbiB0aGUgZXhjZXB0aW9uIHZhbHVlLiBJZiBzZXR0aW5nIHRoZSB0cmFjZWJhY2sKLSAgICAgIGFwcHJvcHJpYXRlbHkgaXMgZGVzaXJlZCwgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHNuaXBwZXQgaXMgbmVlZGVkOjoKLQotICAgICAgICAgaWYgKHRiICE9IE5VTEwpIHsKLSAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOwotICAgICAgICAgfQotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0NsZWFyKCkKLQotICAgQ2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgbm90IHNldCwgdGhlcmUgaXMgbm8KLSAgIGVmZmVjdC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9GZXRjaChQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQotCi0gICBSZXRyaWV2ZSB0aGUgZXJyb3IgaW5kaWNhdG9yIGludG8gdGhyZWUgdmFyaWFibGVzIHdob3NlIGFkZHJlc3NlcyBhcmUgcGFzc2VkLgotICAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCBzZXQgYWxsIHRocmVlIHZhcmlhYmxlcyB0byAqTlVMTCouICBJZiBpdCBpcwotICAgc2V0LCBpdCB3aWxsIGJlIGNsZWFyZWQgYW5kIHlvdSBvd24gYSByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3QgcmV0cmlldmVkLiAgVGhlCi0gICB2YWx1ZSBhbmQgdHJhY2ViYWNrIG9iamVjdCBtYXkgYmUgKk5VTEwqIGV2ZW4gd2hlbiB0aGUgdHlwZSBvYmplY3QgaXMgbm90LgotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBvbmx5IHVzZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIGhhbmRsZSBleGNlcHRpb25zIG9yCi0gICAgICBieSBjb2RlIHRoYXQgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXJyb3IgaW5kaWNhdG9yIHRlbXBvcmFyaWx5LgotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1Jlc3RvcmUoUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKLQotICAgU2V0ICB0aGUgZXJyb3IgaW5kaWNhdG9yIGZyb20gdGhlIHRocmVlIG9iamVjdHMuICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzCi0gICBhbHJlYWR5IHNldCwgaXQgaXMgY2xlYXJlZCBmaXJzdC4gIElmIHRoZSBvYmplY3RzIGFyZSAqTlVMTCosIHRoZSBlcnJvcgotICAgaW5kaWNhdG9yIGlzIGNsZWFyZWQuICBEbyBub3QgcGFzcyBhICpOVUxMKiB0eXBlIGFuZCBub24tKk5VTEwqIHZhbHVlIG9yCi0gICB0cmFjZWJhY2suICBUaGUgZXhjZXB0aW9uIHR5cGUgc2hvdWxkIGJlIGEgY2xhc3MuICBEbyBub3QgcGFzcyBhbiBpbnZhbGlkCi0gICBleGNlcHRpb24gdHlwZSBvciB2YWx1ZS4gKFZpb2xhdGluZyB0aGVzZSBydWxlcyB3aWxsIGNhdXNlIHN1YnRsZSBwcm9ibGVtcwotICAgbGF0ZXIuKSAgVGhpcyBjYWxsIHRha2VzIGF3YXkgYSByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3Q6IHlvdSBtdXN0IG93biBhCi0gICByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3QgYmVmb3JlIHRoZSBjYWxsIGFuZCBhZnRlciB0aGUgY2FsbCB5b3Ugbm8gbG9uZ2VyIG93bgotICAgdGhlc2UgcmVmZXJlbmNlcy4gIChJZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzLCBkb24ndCB1c2UgdGhpcyBmdW5jdGlvbi4gIEkKLSAgIHdhcm5lZCB5b3UuKQotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBvbmx5IHVzZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlCi0gICAgICBlcnJvciBpbmRpY2F0b3IgdGVtcG9yYXJpbHk7IHVzZSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgdG8gc2F2ZSB0aGUgY3VycmVudAotICAgICAgZXhjZXB0aW9uIHN0YXRlLgotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKLQotICAgUmV0cmlldmUgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCi0gICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgYWxyZWFkeSBjYXVnaHQsIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKLSAgIGZyZXNobHkgcmFpc2VkLiAgUmV0dXJucyBuZXcgcmVmZXJlbmNlcyBmb3IgdGhlIHRocmVlIG9iamVjdHMsIGFueSBvZiB3aGljaAotICAgbWF5IGJlICpOVUxMKi4gIERvZXMgbm90IG1vZGlmeSB0aGUgZXhjZXB0aW9uIGluZm8gc3RhdGUuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KLSAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgotICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfU2V0RXhjSW5mb2AgdG8gcmVzdG9yZSBvciBjbGVhciB0aGUKLSAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQotCi0gICBTZXQgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCi0gICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgYWxyZWFkeSBjYXVnaHQsIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKLSAgIGZyZXNobHkgcmFpc2VkLiAgVGhpcyBmdW5jdGlvbiBzdGVhbHMgdGhlIHJlZmVyZW5jZXMgb2YgdGhlIGFyZ3VtZW50cy4KLSAgIFRvIGNsZWFyIHRoZSBleGNlcHRpb24gc3RhdGUsIHBhc3MgKk5VTEwqIGZvciBhbGwgdGhyZWUgYXJndW1lbnRzLgotICAgRm9yIGdlbmVyYWwgcnVsZXMgYWJvdXQgdGhlIHRocmVlIGFyZ3VtZW50cywgc2VlIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCi0gICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KLSAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX0dldEV4Y0luZm9gIHRvIHJlYWQgdGhlIGV4Y2VwdGlvbgotICAgICAgc3RhdGUuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworVGhlc2UgZnVuY3Rpb25zIGhlbHAgeW91IHNldCB0aGUgY3VycmVudCB0aHJlYWQncyBlcnJvciBpbmRpY2F0b3IuCitGb3IgY29udmVuaWVuY2UsIHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgYWx3YXlzIHJldHVybiBhCitOVUxMIHBvaW50ZXIgZm9yIHVzZSBpbiBhIGBgcmV0dXJuYGAgc3RhdGVtZW50LgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldFN0cmluZyhQeU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKQEAgLTE5Nyw2ICsxMDksMTQgQEAKICAgIHN0cmluZy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX0Zvcm1hdFYoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQorCisgICBTYW1lIGFzIDpjOmZ1bmM6YFB5RXJyX0Zvcm1hdGAsIGJ1dCB0YWtpbmcgYSA6Yzp0eXBlOmB2YV9saXN0YCBhcmd1bWVudCByYXRoZXIKKyAgIHRoYW4gYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXROb25lKFB5T2JqZWN0ICp0eXBlKQogCiAgICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYFB5RXJyX1NldE9iamVjdCh0eXBlLCBQeV9Ob25lKWBgLgpAQCAtMzQ2LDYgKzI2NiwyMiBAQAogICAgdXNlLgogCiAKK0lzc3Vpbmcgd2FybmluZ3MKKz09PT09PT09PT09PT09PT0KKworVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBpc3N1ZSB3YXJuaW5ncyBmcm9tIEMgY29kZS4gIFRoZXkgbWlycm9yIHNpbWlsYXIKK2Z1bmN0aW9ucyBleHBvcnRlZCBieSB0aGUgUHl0aG9uIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUuICBUaGV5IG5vcm1hbGx5CitwcmludCBhIHdhcm5pbmcgbWVzc2FnZSB0byAqc3lzLnN0ZGVycio7IGhvd2V2ZXIsIGl0IGlzCithbHNvIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGF0IHdhcm5pbmdzIGFyZSB0byBiZSB0dXJuZWQgaW50bworZXJyb3JzLCBhbmQgaW4gdGhhdCBjYXNlIHRoZXkgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQKK3RoZSBmdW5jdGlvbnMgcmFpc2UgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgYSBwcm9ibGVtIHdpdGggdGhlIHdhcm5pbmcgbWFjaGluZXJ5LgorVGhlIHJldHVybiB2YWx1ZSBpcyBgYDBgYCBpZiBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBvciBgYC0xYGAgaWYgYW4gZXhjZXB0aW9uCitpcyByYWlzZWQuICAoSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIGEgd2FybmluZyBtZXNzYWdlIGlzCithY3R1YWxseSBwcmludGVkLCBub3Igd2hhdCB0aGUgcmVhc29uIGlzIGZvciB0aGUgZXhjZXB0aW9uOyB0aGlzIGlzCitpbnRlbnRpb25hbC4pICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCB0aGUgY2FsbGVyIHNob3VsZCBkbyBpdHMgbm9ybWFsCitleGNlcHRpb24gaGFuZGxpbmcgKGZvciBleGFtcGxlLCA6YzpmdW5jOmBQeV9ERUNSRUZgIG93bmVkIHJlZmVyZW5jZXMgYW5kIHJldHVybgorYW4gZXJyb3IgdmFsdWUpLgorCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1dhcm5FeChQeU9iamVjdCAqY2F0ZWdvcnksIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCiAKICAgIElzc3VlIGEgd2FybmluZyBtZXNzYWdlLiAgVGhlICpjYXRlZ29yeSogYXJndW1lbnQgaXMgYSB3YXJuaW5nIGNhdGVnb3J5IChzZWUKQEAgLTM1NSwxOCArMjkxLDYgQEAKICAgIGlzIHRoZSBmdW5jdGlvbiBjYWxsaW5nIDpjOmZ1bmM6YFB5RXJyX1dhcm5FeGAsIDIgaXMgIHRoZSBmdW5jdGlvbiBhYm92ZSB0aGF0LAogICAgYW5kIHNvIGZvcnRoLgogCi0gICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSB0byAqc3lzLnN0ZGVycio7IGhvd2V2ZXIsIGl0IGlzCi0gICBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGF0IHdhcm5pbmdzIGFyZSB0byBiZSB0dXJuZWQgaW50bwotICAgZXJyb3JzLCBhbmQgaW4gdGhhdCBjYXNlIHRoaXMgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQKLSAgIHRoZSBmdW5jdGlvbiByYWlzZXMgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgYSBwcm9ibGVtIHdpdGggdGhlIHdhcm5pbmcgbWFjaGluZXJ5Ci0gICAodGhlIGltcGxlbWVudGF0aW9uIGltcG9ydHMgdGhlIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgdG8gZG8gdGhlIGhlYXZ5IGxpZnRpbmcpLgotICAgVGhlIHJldHVybiB2YWx1ZSBpcyBgYDBgYCBpZiBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBvciBgYC0xYGAgaWYgYW4gZXhjZXB0aW9uCi0gICBpcyByYWlzZWQuICAoSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIGEgd2FybmluZyBtZXNzYWdlIGlzCi0gICBhY3R1YWxseSBwcmludGVkLCBub3Igd2hhdCB0aGUgcmVhc29uIGlzIGZvciB0aGUgZXhjZXB0aW9uOyB0aGlzIGlzCi0gICBpbnRlbnRpb25hbC4pICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCB0aGUgY2FsbGVyIHNob3VsZCBkbyBpdHMgbm9ybWFsCi0gICBleGNlcHRpb24gaGFuZGxpbmcgKGZvciBleGFtcGxlLCA6YzpmdW5jOmBQeV9ERUNSRUZgIG93bmVkIHJlZmVyZW5jZXMgYW5kIHJldHVybgotICAgYW4gZXJyb3IgdmFsdWUpLgotCiAgICBXYXJuaW5nIGNhdGVnb3JpZXMgbXVzdCBiZSBzdWJjbGFzc2VzIG9mIDpjOmRhdGE6YFdhcm5pbmdgOyB0aGUgZGVmYXVsdCB3YXJuaW5nCiAgICBjYXRlZ29yeSBpcyA6YzpkYXRhOmBSdW50aW1lV2FybmluZ2AuICBUaGUgc3RhbmRhcmQgUHl0aG9uIHdhcm5pbmcgY2F0ZWdvcmllcyBhcmUKICAgIGF2YWlsYWJsZSBhcyBnbG9iYWwgdmFyaWFibGVzIHdob3NlIG5hbWVzIGFyZSBgYFB5RXhjX2BgIGZvbGxvd2VkIGJ5IHRoZSBQeXRob24KQEAgLTQxMCw2ICszMzQsMTM5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCitRdWVyeWluZyB0aGUgZXJyb3IgaW5kaWNhdG9yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfT2NjdXJyZWQoKQorCisgICBUZXN0IHdoZXRoZXIgdGhlIGVycm9yIGluZGljYXRvciBpcyBzZXQuICBJZiBzZXQsIHJldHVybiB0aGUgZXhjZXB0aW9uICp0eXBlKgorICAgKHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbGFzdCBjYWxsIHRvIG9uZSBvZiB0aGUgOmM6ZnVuYzpgUHlFcnJfU2V0XCpgCisgICBmdW5jdGlvbnMgb3IgdG8gOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWApLiAgSWYgbm90IHNldCwgcmV0dXJuICpOVUxMKi4gIFlvdSBkbyBub3QKKyAgIG93biBhIHJlZmVyZW5jZSB0byB0aGUgcmV0dXJuIHZhbHVlLCBzbyB5b3UgZG8gbm90IG5lZWQgdG8gOmM6ZnVuYzpgUHlfREVDUkVGYAorICAgaXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBEbyBub3QgY29tcGFyZSB0aGUgcmV0dXJuIHZhbHVlIHRvIGEgc3BlY2lmaWMgZXhjZXB0aW9uOyB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXNgIGluc3RlYWQsIHNob3duIGJlbG93LiAgKFRoZSBjb21wYXJpc29uIGNvdWxkCisgICAgICBlYXNpbHkgZmFpbCBzaW5jZSB0aGUgZXhjZXB0aW9uIG1heSBiZSBhbiBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgY2xhc3MsIGluIHRoZQorICAgICAgY2FzZSBvZiBhIGNsYXNzIGV4Y2VwdGlvbiwgb3IgaXQgbWF5IGJlIGEgc3ViY2xhc3Mgb2YgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbi4pCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5T2JqZWN0ICpleGMpCisKKyAgIEVxdWl2YWxlbnQgdG8gYGBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoUHlFcnJfT2NjdXJyZWQoKSwgZXhjKWBgLiAgVGhpcworICAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGlzIGFjdHVhbGx5IHNldDsgYSBtZW1vcnkgYWNjZXNzCisgICB2aW9sYXRpb24gd2lsbCBvY2N1ciBpZiBubyBleGNlcHRpb24gaGFzIGJlZW4gcmFpc2VkLgorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5T2JqZWN0ICpnaXZlbiwgUHlPYmplY3QgKmV4YykKKworICAgUmV0dXJuIHRydWUgaWYgdGhlICpnaXZlbiogZXhjZXB0aW9uIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiB0eXBlIGluICpleGMqLiAgSWYKKyAgICpleGMqIGlzIGEgY2xhc3Mgb2JqZWN0LCB0aGlzIGFsc28gcmV0dXJucyB0cnVlIHdoZW4gKmdpdmVuKiBpcyBhbiBpbnN0YW5jZQorICAgb2YgYSBzdWJjbGFzcy4gIElmICpleGMqIGlzIGEgdHVwbGUsIGFsbCBleGNlcHRpb24gdHlwZXMgaW4gdGhlIHR1cGxlIChhbmQKKyAgIHJlY3Vyc2l2ZWx5IGluIHN1YnR1cGxlcykgYXJlIHNlYXJjaGVkIGZvciBhIG1hdGNoLgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0ZldGNoKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCisKKyAgIFJldHJpZXZlIHRoZSBlcnJvciBpbmRpY2F0b3IgaW50byB0aHJlZSB2YXJpYWJsZXMgd2hvc2UgYWRkcmVzc2VzIGFyZSBwYXNzZWQuCisgICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIG5vdCBzZXQsIHNldCBhbGwgdGhyZWUgdmFyaWFibGVzIHRvICpOVUxMKi4gIElmIGl0IGlzCisgICBzZXQsIGl0IHdpbGwgYmUgY2xlYXJlZCBhbmQgeW91IG93biBhIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdCByZXRyaWV2ZWQuICBUaGUKKyAgIHZhbHVlIGFuZCB0cmFjZWJhY2sgb2JqZWN0IG1heSBiZSAqTlVMTCogZXZlbiB3aGVuIHRoZSB0eXBlIG9iamVjdCBpcyBub3QuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBieSBjb2RlIHRoYXQgbmVlZHMgdG8gY2F0Y2ggZXhjZXB0aW9ucyBvcgorICAgICAgYnkgY29kZSB0aGF0IG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseSwgZS5nLjo6CisKKyAgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqdHlwZSwgKip2YWx1ZSwgKip0cmFjZWJhY2s7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmdHlwZSwgJnZhbHVlLCAmdHJhY2ViYWNrKTsKKworICAgICAgICAgICAgLyogLi4uIGNvZGUgdGhhdCBtaWdodCBwcm9kdWNlIG90aGVyIGVycm9ycyAuLi4gKi8KKworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKTsKKyAgICAgICAgIH0KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9SZXN0b3JlKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisKKyAgIFNldCAgdGhlIGVycm9yIGluZGljYXRvciBmcm9tIHRoZSB0aHJlZSBvYmplY3RzLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcworICAgYWxyZWFkeSBzZXQsIGl0IGlzIGNsZWFyZWQgZmlyc3QuICBJZiB0aGUgb2JqZWN0cyBhcmUgKk5VTEwqLCB0aGUgZXJyb3IKKyAgIGluZGljYXRvciBpcyBjbGVhcmVkLiAgRG8gbm90IHBhc3MgYSAqTlVMTCogdHlwZSBhbmQgbm9uLSpOVUxMKiB2YWx1ZSBvcgorICAgdHJhY2ViYWNrLiAgVGhlIGV4Y2VwdGlvbiB0eXBlIHNob3VsZCBiZSBhIGNsYXNzLiAgRG8gbm90IHBhc3MgYW4gaW52YWxpZAorICAgZXhjZXB0aW9uIHR5cGUgb3IgdmFsdWUuIChWaW9sYXRpbmcgdGhlc2UgcnVsZXMgd2lsbCBjYXVzZSBzdWJ0bGUgcHJvYmxlbXMKKyAgIGxhdGVyLikgIFRoaXMgY2FsbCB0YWtlcyBhd2F5IGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0OiB5b3UgbXVzdCBvd24gYQorICAgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IGJlZm9yZSB0aGUgY2FsbCBhbmQgYWZ0ZXIgdGhlIGNhbGwgeW91IG5vIGxvbmdlciBvd24KKyAgIHRoZXNlIHJlZmVyZW5jZXMuICAoSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhpcywgZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24uICBJCisgICB3YXJuZWQgeW91LikKKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZQorICAgICAgZXJyb3IgaW5kaWNhdG9yIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX0ZldGNoYCB0byBzYXZlIHRoZSBjdXJyZW50CisgICAgICBlcnJvciBpbmRpY2F0b3IuCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKFB5T2JqZWN0KipleGMsIFB5T2JqZWN0Kip2YWwsIFB5T2JqZWN0Kip0YikKKworICAgVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IDpjOmZ1bmM6YFB5RXJyX0ZldGNoYCBiZWxvdworICAgY2FuIGJlICJ1bm5vcm1hbGl6ZWQiLCBtZWFuaW5nIHRoYXQgYGAqZXhjYGAgaXMgYSBjbGFzcyBvYmplY3QgYnV0IGBgKnZhbGBgIGlzCisgICBub3QgYW4gaW5zdGFuY2Ugb2YgdGhlICBzYW1lIGNsYXNzLiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBpbnN0YW50aWF0ZQorICAgdGhlIGNsYXNzIGluIHRoYXQgY2FzZS4gIElmIHRoZSB2YWx1ZXMgYXJlIGFscmVhZHkgbm9ybWFsaXplZCwgbm90aGluZyBoYXBwZW5zLgorICAgVGhlIGRlbGF5ZWQgbm9ybWFsaXphdGlvbiBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiAqZG9lcyBub3QqIGltcGxpY2l0bHkgc2V0IHRoZSBgYF9fdHJhY2ViYWNrX19gYAorICAgICAgYXR0cmlidXRlIG9uIHRoZSBleGNlcHRpb24gdmFsdWUuIElmIHNldHRpbmcgdGhlIHRyYWNlYmFjaworICAgICAgYXBwcm9wcmlhdGVseSBpcyBkZXNpcmVkLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgc25pcHBldCBpcyBuZWVkZWQ6OgorCisgICAgICAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7CisgICAgICAgICB9CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQorCisgICBSZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyAqYWxyZWFkeSBjYXVnaHQqLCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFJldHVybnMgbmV3IHJlZmVyZW5jZXMgZm9yIHRoZSB0aHJlZSBvYmplY3RzLCBhbnkgb2Ygd2hpY2gKKyAgIG1heSBiZSAqTlVMTCouICBEb2VzIG5vdCBtb2RpZnkgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0YXRlLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX1NldEV4Y0luZm9gIHRvIHJlc3RvcmUgb3IgY2xlYXIgdGhlCisgICAgICBleGNlcHRpb24gc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKKworICAgU2V0IHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzICphbHJlYWR5IGNhdWdodCosIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKKyAgIGZyZXNobHkgcmFpc2VkLiAgVGhpcyBmdW5jdGlvbiBzdGVhbHMgdGhlIHJlZmVyZW5jZXMgb2YgdGhlIGFyZ3VtZW50cy4KKyAgIFRvIGNsZWFyIHRoZSBleGNlcHRpb24gc3RhdGUsIHBhc3MgKk5VTEwqIGZvciBhbGwgdGhyZWUgYXJndW1lbnRzLgorICAgRm9yIGdlbmVyYWwgcnVsZXMgYWJvdXQgdGhlIHRocmVlIGFyZ3VtZW50cywgc2VlIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX0dldEV4Y0luZm9gIHRvIHJlYWQgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK1NpZ25hbCBIYW5kbGluZworPT09PT09PT09PT09PT09CisKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9DaGVja1NpZ25hbHMoKQogCiAgICAuLiBpbmRleDo6CkBAIC00NDMsMTMgKzUwMCwyMSBAQAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2lnbmFsX1NldFdha2V1cEZkKGludCBmZCkKIAotICAgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIHNwZWNpZmllcyBhIGZpbGUgZGVzY3JpcHRvciB0byB3aGljaCBhIGBgJ1wwJ2BgIGJ5dGUgd2lsbAotICAgYmUgd3JpdHRlbiB3aGVuZXZlciBhIHNpZ25hbCBpcyByZWNlaXZlZC4gIEl0IHJldHVybnMgdGhlIHByZXZpb3VzIHN1Y2ggZmlsZQotICAgZGVzY3JpcHRvci4gIFRoZSB2YWx1ZSBgYC0xYGAgZGlzYWJsZXMgdGhlIGZlYXR1cmU7IHRoaXMgaXMgdGhlIGluaXRpYWwgc3RhdGUuCisgICBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gc3BlY2lmaWVzIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHdoaWNoIHRoZSBzaWduYWwgbnVtYmVyCisgICBpcyB3cml0dGVuIGFzIGEgc2luZ2xlIGJ5dGUgd2hlbmV2ZXIgYSBzaWduYWwgaXMgcmVjZWl2ZWQuICpmZCogbXVzdCBiZQorICAgbm9uLWJsb2NraW5nLiBJdCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdWNoIGZpbGUgZGVzY3JpcHRvci4KKworICAgVGhlIHZhbHVlIGBgLTFgYCBkaXNhYmxlcyB0aGUgZmVhdHVyZTsgdGhpcyBpcyB0aGUgaW5pdGlhbCBzdGF0ZS4KICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byA6ZnVuYzpgc2lnbmFsLnNldF93YWtldXBfZmRgIGluIFB5dGhvbiwgYnV0IHdpdGhvdXQgYW55CiAgICBlcnJvciBjaGVja2luZy4gICpmZCogc2hvdWxkIGJlIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAogICAgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBPbiBXaW5kb3dzLCB0aGUgZnVuY3Rpb24gbm93IGFsc28gc3VwcG9ydHMgc29ja2V0IGhhbmRsZXMuCisKKworRXhjZXB0aW9uIENsYXNzZXMKKz09PT09PT09PT09PT09PT09CiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfTmV3RXhjZXB0aW9uKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpiYXNlLCBQeU9iamVjdCAqZGljdCkKIApAQCAtNDc1LDE4ICs1NDAsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKFB5T2JqZWN0ICpvYmopCi0KLSAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gYGBzeXMuc3RkZXJyYGAgd2hlbiBhbgotICAgZXhjZXB0aW9uIGhhcyBiZWVuIHNldCBidXQgaXQgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIGludGVycHJldGVyIHRvIGFjdHVhbGx5Ci0gICByYWlzZSB0aGUgZXhjZXB0aW9uLiAgSXQgaXMgdXNlZCwgZm9yIGV4YW1wbGUsIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbgotICAgOm1ldGg6YF9fZGVsX19gIG1ldGhvZC4KLQotICAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50ICpvYmoqIHRoYXQgaWRlbnRpZmllcyB0aGUgY29udGV4dAotICAgaW4gd2hpY2ggdGhlIHVucmFpc2FibGUgZXhjZXB0aW9uIG9jY3VycmVkLiBUaGUgcmVwciBvZiAqb2JqKiB3aWxsIGJlIHByaW50ZWQgaW4KLSAgIHRoZSB3YXJuaW5nIG1lc3NhZ2UuCi0KLQogRXhjZXB0aW9uIE9iamVjdHMKID09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbXBvcnQucnN0IGIvRG9jL2MtYXBpL2ltcG9ydC5yc3QKaW5kZXggMzY0MWZjNi4uMDFlMGRlYiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QKKysrIGIvRG9jL2MtYXBpL2ltcG9ydC5yc3QKQEAgLTE4Myw5ICsxODMsOSBAQAogCiAuLiBjOmZ1bmN0aW9uOjogbG9uZyBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpCiAKLSAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciBQeXRob24gYnl0ZWNvZGUgZmlsZXMgKGEuay5hLiA6ZmlsZTpgLnB5Y2AgYW5kCi0gICA6ZmlsZTpgLnB5b2AgZmlsZXMpLiAgVGhlIG1hZ2ljIG51bWJlciBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgZmlyc3QgZm91ciBieXRlcwotICAgb2YgdGhlIGJ5dGVjb2RlIGZpbGUsIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4gUmV0dXJucyAtMSBvbiBlcnJvci4KKyAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciBQeXRob24gYnl0ZWNvZGUgZmlsZXMgKGEuay5hLiA6ZmlsZTpgLnB5Y2AgZmlsZSkuCisgICBUaGUgbWFnaWMgbnVtYmVyIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCBmb3VyIGJ5dGVzIG9mIHRoZSBieXRlY29kZQorICAgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLiBSZXR1cm5zIC0xIG9uIGVycm9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmV0dXJuIHZhbHVlIG9mIC0xIHVwb24gZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA0ZDM1OGNhLi5mYWM5YjQ3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0xMzQsNiArMTM0LDkgQEAKICAgIGNoYW5nZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtJ3MgZXhlY3V0aW9uLiAgTm8gY29kZSBpbiB0aGUgUHl0aG9uCiAgICBpbnRlcnByZXRlciB3aWxsIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBzdG9yYWdlLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogd2NoYXIqIFB5X0dldFByb2dyYW1OYW1lKCkKIApAQCAtMjQ1LDYgKzI0OCw5IEBACiAgICA6ZGF0YTpgc3lzLmV4ZWNfcHJlZml4YCB0byBiZSBlbXB0eS4gIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gbW9kaWZ5IHRoZXNlCiAgICBpZiByZXF1aXJlZCBhZnRlciBjYWxsaW5nIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgVGhlIHBhdGggYXJndW1lbnQgaXMgY29waWVkIGludGVybmFsbHksIHNvIHRoZSBjYWxsZXIgbWF5IGZyZWUgaXQgYWZ0ZXIgdGhlCiAgICBjYWxsIGNvbXBsZXRlcy4KIApAQCAtMzQ0LDYgKzM1MCw5IEBACiAgICAgIDpkYXRhOmBzeXMucGF0aGAsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHByZXBlbmRpbmcgdGhlIGN1cnJlbnQgd29ya2luZwogICAgICBkaXJlY3RvcnkgKGBgIi4iYGApLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgLi4gbm90ZTo6CiAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFwcGxpY2F0aW9ucyBlbWJlZGRpbmcgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgogICAgICAgZm9yIHB1cnBvc2VzIG90aGVyIHRoYW4gZXhlY3V0aW5nIGEgc2luZ2xlIHNjcmlwdCBwYXNzIDAgYXMgKnVwZGF0ZXBhdGgqLApAQCAtMzY4LDYgKzM3Nyw5IEBACiAgICB0byAxIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUKICAgIDpvcHRpb246YC1JYC4KIAorICAgVXNlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgdG8gZGVjb2RlIGEgYnl0ZXMgc3RyaW5nIHRvIGdldCBhCisgICA6Yzp0eXBlOmB3Y2hhcl8qYCBzdHJpbmcuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IFRoZSAqdXBkYXRlcGF0aCogdmFsdWUgZGVwZW5kcyBvbiA6b3B0aW9uOmAtSWAuCiAKIApAQCAtMzgyLDYgKzM5NCw5IEBACiAgICBleGVjdXRpb24uICBObyBjb2RlIGluIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgd2lsbCBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mCiAgICB0aGlzIHN0b3JhZ2UuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAKIC4uIGM6ZnVuY3Rpb246OiB3X2NoYXIqIFB5X0dldFB5dGhvbkhvbWUoKQogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDc5MDg2MjIuLjczMzkwMDYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC05Miw4ICs5Miw4IEBACiBuZWVkIHRvIGJlIGhlbGQuCiAKIFRoZSBkZWZhdWx0IHJhdyBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMTA2LDYgKzEwNiwxNyBAQAogICAgYmVlbiBpbml0aWFsaXplZCBpbiBhbnkgd2F5LgogCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQorCisgICBBbGxvY2F0ZXMgKm5lbGVtKiBlbGVtZW50cyBlYWNoIHdob3NlIHNpemUgaW4gYnl0ZXMgaXMgKmVsc2l6ZSogYW5kIHJldHVybnMKKyAgIGEgcG9pbnRlciBvZiB0eXBlIDpjOnR5cGU6YHZvaWRcKmAgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnksIG9yICpOVUxMKiBpZiB0aGUKKyAgIHJlcXVlc3QgZmFpbHMuIFRoZSBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyb3MuIFJlcXVlc3RpbmcgemVybyBlbGVtZW50cworICAgb3IgZWxlbWVudHMgb2Ygc2l6ZSB6ZXJvIGJ5dGVzIHJldHVybnMgYSBkaXN0aW5jdCBub24tKk5VTEwqIHBvaW50ZXIgaWYKKyAgIHBvc3NpYmxlLCBhcyBpZiBgYFB5TWVtX1Jhd0NhbGxvYygxLCAxKWBgIGhhZCBiZWVuIGNhbGxlZCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbikKIAogICAgUmVzaXplcyB0aGUgbWVtb3J5IGJsb2NrIHBvaW50ZWQgdG8gYnkgKnAqIHRvICpuKiBieXRlcy4gVGhlIGNvbnRlbnRzIHdpbGwKQEAgLTEzNiw4ICsxNDcsOCBAQAogbWVtb3J5IGZyb20gdGhlIFB5dGhvbiBoZWFwLgogCiBUaGUgZGVmYXVsdCBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtMTUyLDYgKzE2MywxNyBAQAogICAgYmVlbiBjYWxsZWQgaW5zdGVhZC4gVGhlIG1lbW9yeSB3aWxsIG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKKworICAgQWxsb2NhdGVzICpuZWxlbSogZWxlbWVudHMgZWFjaCB3aG9zZSBzaXplIGluIGJ5dGVzIGlzICplbHNpemUqIGFuZCByZXR1cm5zCisgICBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCBvciAqTlVMTCogaWYgdGhlCisgICByZXF1ZXN0IGZhaWxzLiBUaGUgbWVtb3J5IGlzIGluaXRpYWxpemVkIHRvIHplcm9zLiBSZXF1ZXN0aW5nIHplcm8gZWxlbWVudHMKKyAgIG9yIGVsZW1lbnRzIG9mIHNpemUgemVybyBieXRlcyByZXR1cm5zIGEgZGlzdGluY3Qgbm9uLSpOVUxMKiBwb2ludGVyIGlmCisgICBwb3NzaWJsZSwgYXMgaWYgYGBQeU1lbV9DYWxsb2MoMSwgMSlgYCBoYWQgYmVlbiBjYWxsZWQgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCiAKICAgIFJlc2l6ZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiB0byAqbiogYnl0ZXMuIFRoZSBjb250ZW50cyB3aWxsIGJlCkBAIC0yMTAsNyArMjMyLDcgQEAKIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLS4uIGM6dHlwZTo6IFB5TWVtQWxsb2NhdG9yCisuLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvckV4CiAKICAgIFN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRvci4gVGhlIHN0cnVjdHVyZSBoYXMKICAgIGZvdXIgZmllbGRzOgpAQCAtMjIyLDExICsyNDQsMTkgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiBtYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSlgYCAgICAgICAgICAgICAgICAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGB2b2lkKiBjYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpYGAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayBpbml0aWFsaXplZCAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHplcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiByZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpYGAgfCBhbGxvY2F0ZSBvciByZXNpemUgYSBtZW1vcnkgYmxvY2sgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkIGZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpYGAgICAgICAgICAgICAgICAgICAgICAgfCBmcmVlIGEgbWVtb3J5IGJsb2NrICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvcmAgc3RydWN0dXJlIHdhcyByZW5hbWVkIHRvCisgICAgICA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvckV4YCBhbmQgYSBuZXcgYGBjYWxsb2NgYCBmaWVsZCB3YXMgYWRkZWQuCisKKwogLi4gYzp0eXBlOjogUHlNZW1BbGxvY2F0b3JEb21haW4KIAogICAgRW51bSB1c2VkIHRvIGlkZW50aWZ5IGFuIGFsbG9jYXRvciBkb21haW4uIERvbWFpbnM6CkBAIC0yMzksMTIgKzI2OSwxMiBAQAogICAgICA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCBhbmQgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCiAgICBHZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fU2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIAogICAgU2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdCBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CmluZGV4IDk4NWEzNDcuLmRmOTMwMWYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tb2R1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CkBAIC03LDggKzcsNiBAQAogCiAuLiBpbmRleDo6IG9iamVjdDogbW9kdWxlCiAKLVRoZXJlIGFyZSBvbmx5IGEgZmV3IGZ1bmN0aW9ucyBzcGVjaWFsIHRvIG1vZHVsZSBvYmplY3RzLgotCiAKIC4uIGM6dmFyOjogUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGUKIApAQCAtMTA5LDYgKzEwNywxNCBAQAogICAgICAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLCB1c2UgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGluc3RlYWQuCiAKIAorUGVyLWludGVycHJldGVyIG1vZHVsZSBzdGF0ZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitTaW5nbGUtcGhhc2UgaW5pdGlhbGl6YXRpb24gY3JlYXRlcyBzaW5nbGV0b24gbW9kdWxlcyB0aGF0IGNhbiBzdG9yZSBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiBhcyBwYXJ0IG9mIHRoZSBpbnRlcnByZXRlciwgYWxsb3cgdGhhdCBzdGF0ZSB0byBiZSByZXRyaWV2ZWQgbGF0ZXIKK3dpdGggb25seSBhIHJlZmVyZW5jZSB0byB0aGUgbW9kdWxlIGRlZmluaXRpb24sIHJhdGhlciB0aGFuIHRvIHRoZSBtb2R1bGUKK2l0c2VsZi4KKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TW9kdWxlX0dldFN0YXRlKFB5T2JqZWN0ICptb2R1bGUpCiAKICAgIFJldHVybiB0aGUgInN0YXRlIiBvZiB0aGUgbW9kdWxlLCB0aGF0IGlzLCBhIHBvaW50ZXIgdG8gdGhlIGJsb2NrIG9mIG1lbW9yeQpAQCAtMTQ2LDI3ICsxNTIsNiBAQAogSW5pdGlhbGl6aW5nIEMgbW9kdWxlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1UaGVzZSBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgdXNlZCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZShQeU1vZHVsZURlZiAqbW9kdWxlKQotCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKm1vZHVsZSouICBUaGlzIGJlaGF2ZXMKLSAgIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlMmAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8KLSAgIDpjb25zdDpgUFlUSE9OX0FQSV9WRVJTSU9OYC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZTIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKLQotICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqLCBhc3N1bWluZyB0aGUKLSAgIEFQSSB2ZXJzaW9uICptb2R1bGVfYXBpX3ZlcnNpb24qLiAgSWYgdGhhdCB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSB2ZXJzaW9uCi0gICBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaXMgZW1pdHRlZC4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE1vc3QgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgCi0gICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KLQotCiAuLiBjOnR5cGU6OiBQeU1vZHVsZURlZgogCiAgICBUaGlzIHN0cnVjdCBob2xkcyBhbGwgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWVkZWQgdG8gY3JlYXRlIGEgbW9kdWxlIG9iamVjdC4KQEAgLTIxMCw5ICsxOTUsMTAgQEAKICAgICAgIEEgcG9pbnRlciB0byBhIHRhYmxlIG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMsIGRlc2NyaWJlZCBieQogICAgICAgOmM6dHlwZTpgUHlNZXRob2REZWZgIHZhbHVlcy4gIENhbiBiZSAqTlVMTCogaWYgbm8gZnVuY3Rpb25zIGFyZSBwcmVzZW50LgogCi0gICAuLiBjOm1lbWJlcjo6IGlucXVpcnkgbV9yZWxvYWQKKyAgIC4uIGM6bWVtYmVyOjogUHlNb2R1bGVEZWZfU2xvdCogbV9zbG90cwogCi0gICAgICBDdXJyZW50bHkgdW51c2VkLCBzaG91bGQgYmUgKk5VTEwqLgorICAgICAgQW4gYXJyYXkgb2Ygc2xvdCBkZWZpbml0aW9ucyBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sIHRlcm1pbmF0ZWQgYnkKKyAgICAgIGEgKk5VTEwqIGVudHJ5LgogCiAgICAuLiBjOm1lbWJlcjo6IHRyYXZlcnNlcHJvYyBtX3RyYXZlcnNlCiAKQEAgLTIyOSw2ICsyMTUsNjEgQEAKICAgICAgIEEgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcgZGVhbGxvY2F0aW9uIG9mIHRoZSBtb2R1bGUgb2JqZWN0LCBvciAqTlVMTCogaWYKICAgICAgIG5vdCBuZWVkZWQuCiAKK1RoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbWF5IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0CitkaXJlY3RseS4gVGhpcyBpcyByZWZlcnJlZCB0byBhcyAic2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uIiwgYW5kIHVzZXMgb25lCitvZiB0aGUgZm9sbG93aW5nIHR3byBtb2R1bGUgY3JlYXRpb24gZnVuY3Rpb25zOgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZShQeU1vZHVsZURlZiAqbW9kdWxlKQorCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKm1vZHVsZSouICBUaGlzIGJlaGF2ZXMKKyAgIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlMmAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8KKyAgIDpjb25zdDpgUFlUSE9OX0FQSV9WRVJTSU9OYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZTIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqLCBhc3N1bWluZyB0aGUKKyAgIEFQSSB2ZXJzaW9uICptb2R1bGVfYXBpX3ZlcnNpb24qLiAgSWYgdGhhdCB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSB2ZXJzaW9uCisgICBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaXMgZW1pdHRlZC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE1vc3QgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgCisgICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KKworCitBbHRlcm5hdGl2ZWx5LCB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIG1heSBpbnN0ZWFkIHJldHVybiBhCis6Yzp0eXBlOmBQeU1vZHVsZURlZmAgaW5zdGFuY2Ugd2l0aCBhIG5vbi1lbXB0eSBgYG1fc2xvdHNgYCBhcnJheS4gVGhpcyBpcworcmVmZXJyZWQgdG8gYXMgIm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIiwgYW5kIGBgUHlNb2R1bGVEZWZgYCBpbnN0YW5jZQorc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZURlZl9Jbml0KFB5TW9kdWxlRGVmICptb2R1bGUpCisKKyAgIEVuc3VyZXMgYSBtb2R1bGUgZGVmaW5pdGlvbiBpcyBhIHByb3Blcmx5IGluaXRpYWxpemVkIFB5dGhvbiBvYmplY3QgdGhhdAorICAgY29ycmVjdGx5IHJlcG9ydHMgaXRzIHR5cGUgYW5kIHJlZmVyZW5jZSBjb3VudC4KKworLi4gWFhYIChuY29naGxhbik6IEl0J3Mgbm90IGNsZWFyIGlmIGl0IG1ha2VzIHNlbnNlIHRvIGRvY3VtZW50IFB5TW9kdWxlX0V4ZWNEZWYKKyAgIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjIG9yIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMiBoZXJlLCBhcyBlbmQgdXNlciBjb2RlCisgICBnZW5lcmFsbHkgc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhvc2UuCisKK1RoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGlmIHVzaW5nIHNpbmdsZSBwaGFzZSBpbml0aWFsaXphdGlvbikgb3IKK2EgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSBtb2R1bGUgZXhlY3V0aW9uIHNsb3QgKGlmIHVzaW5nIG11bHRpcGhhc2UKK2luaXRpYWxpemF0aW9uKSwgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBoZWxwIGluaXRpYWxpemUgdGhlIG1vZHVsZQorc3RhdGU6CisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfU2V0RG9jU3RyaW5nKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKmRvY3N0cmluZykKKworICAgU2V0IHRoZSBkb2NzdHJpbmcgZm9yICptb2R1bGUqIHRvICpkb2NzdHJpbmcqLiBSZXR1cm4gYGAtMWBgIG9uIGVycm9yLCBgYDBgYAorICAgb24gc3VjY2Vzcy4KKworLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9BZGRGdW5jdGlvbnMoUHlPYmplY3QgKm1vZHVsZSwgUHlNZXRob2REZWYgKmZ1bmN0aW9ucykKKworICAgQWRkIHRoZSBmdW5jdGlvbnMgZnJvbSB0aGUgYGBOVUxMYGAgdGVybWluYXRlZCAqZnVuY3Rpb25zKiBhcnJheSB0byAqbW9kdWxlKi4KKyAgIFJlZmVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1ldGhvZERlZmAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiBpbmRpdmlkdWFsCisgICBlbnRyaWVzIChkdWUgdG8gdGhlIGxhY2sgb2YgYSBzaGFyZWQgbW9kdWxlIG5hbWVzcGFjZSwgbW9kdWxlIGxldmVsCisgICAiZnVuY3Rpb25zIiBpbXBsZW1lbnRlZCBpbiBDIHR5cGljYWxseSByZWNlaXZlIHRoZSBtb2R1bGUgYXMgdGhlaXIgZmlyc3QKKyAgIHBhcmFtZXRlciwgbWFraW5nIHRoZW0gc2ltaWxhciB0byBpbnN0YW5jZSBtZXRob2RzIG9uIFB5dGhvbiBjbGFzc2VzKS4KKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiAKQEAgLTIzNiw3ICsyNzcsNiBAQAogICAgYmUgdXNlZCBmcm9tIHRoZSBtb2R1bGUncyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gIFRoaXMgc3RlYWxzIGEgcmVmZXJlbmNlIHRvCiAgICAqdmFsdWUqLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KIAotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEludENvbnN0YW50KFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGxvbmcgdmFsdWUpCiAKICAgIEFkZCBhbiBpbnRlZ2VyIGNvbnN0YW50IHRvICptb2R1bGUqIGFzICpuYW1lKi4gIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gY2FuIGJlCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbnVtYmVyLnJzdCBiL0RvYy9jLWFwaS9udW1iZXIucnN0CmluZGV4IDIxOTUxYzMuLjliY2I2NDkgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9udW1iZXIucnN0CisrKyBiL0RvYy9jLWFwaS9udW1iZXIucnN0CkBAIC0zMCw2ICszMCwxNCBAQAogICAgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgbzEgKiBvMmBgLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpCisKKyAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiBtYXRyaXggbXVsdGlwbGljYXRpb24gb24gKm8xKiBhbmQgKm8yKiwgb3IgKk5VTEwqIG9uCisgICBmYWlsdXJlLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIGV4cHJlc3Npb24gYGBvMSBAIG8yYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlOdW1iZXJfRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpCiAKICAgIFJldHVybiB0aGUgZmxvb3Igb2YgKm8xKiBkaXZpZGVkIGJ5ICpvMiosIG9yICpOVUxMKiBvbiBmYWlsdXJlLiAgVGhpcyBpcwpAQCAtMTQ2LDYgKzE1NCwxNSBAQAogICAgdGhlIFB5dGhvbiBzdGF0ZW1lbnQgYGBvMSAqPSBvMmBgLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQorCisgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIG9uICpvMSogYW5kICpvMiosIG9yICpOVUxMKiBvbgorICAgZmFpbHVyZS4gIFRoZSBvcGVyYXRpb24gaXMgZG9uZSAqaW4tcGxhY2UqIHdoZW4gKm8xKiBzdXBwb3J0cyBpdC4gIFRoaXMgaXMKKyAgIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gc3RhdGVtZW50IGBgbzEgQD0gbzJgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpCiAKICAgIFJldHVybnMgdGhlIG1hdGhlbWF0aWNhbCBmbG9vciBvZiBkaXZpZGluZyAqbzEqIGJ5ICpvMiosIG9yICpOVUxMKiBvbiBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IDdmMWNjNjkuLmI5MjVhNjEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogICAgICAgUHlPYmplY3Qgb2JfYmFzZTsKIAotICAgU2VlIGRvY3VtZW50YXRpb24gb2YgOmM6dHlwZTo6YFB5T2JqZWN0YCBhYm92ZS4KKyAgIFNlZSBkb2N1bWVudGF0aW9uIG9mIDpjOnR5cGU6YFB5T2JqZWN0YCBhYm92ZS4KIAogCiAuLiBjOm1hY3JvOjogUHlPYmplY3RfVkFSX0hFQUQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zeXMucnN0IGIvRG9jL2MtYXBpL3N5cy5yc3QKaW5kZXggOTc2MGRjYS4uYTZhOTM5YyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N5cy5yc3QKKysrIGIvRG9jL2MtYXBpL3N5cy5yc3QKQEAgLTQ3LDYgKzQ3LDYwIEBACiAgICBub3QgY2FsbCB0aG9zZSBmdW5jdGlvbnMgZGlyZWN0bHkhICA6Yzp0eXBlOmBQeU9TX3NpZ2hhbmRsZXJfdGAgaXMgYSB0eXBlZGVmCiAgICBhbGlhcyBmb3IgOmM6dHlwZTpgdm9pZCAoXCopKGludClgLgogCisuLiBjOmZ1bmN0aW9uOjogd2NoYXJfdCogUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorCisgICBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUgOnJlZjpgc3Vycm9nYXRlZXNjYXBlCisgICBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogdW5kZWNvZGFibGUgYnl0ZXMgYXJlIGRlY29kZWQgYXMKKyAgIGNoYXJhY3RlcnMgaW4gcmFuZ2UgVStEQzgwLi5VK0RDRkYuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhCisgICBzdXJyb2dhdGUgY2hhcmFjdGVyLCBlc2NhcGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKKyAgIGhhbmRsZXIgaW5zdGVhZCBvZiBkZWNvZGluZyB0aGVtLgorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZywgdXNlCisgICA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYCB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IGBgTlVMTGBgLCB3cml0ZQorICAgdGhlIG51bWJlciBvZiB3aWRlIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvIGBgKnNpemVgYAorCisgICBSZXR1cm4gYGBOVUxMYGAgb24gZGVjb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuIElmICpzaXplKiBpcworICAgbm90IGBgTlVMTGBgLCBgYCpzaXplYGAgaXMgc2V0IHRvIGBgKHNpemVfdCktMWBgIG9uIG1lbW9yeSBlcnJvciBvciBzZXQgdG8KKyAgIGBgKHNpemVfdCktMmBgIG9uIGRlY29kaW5nIGVycm9yLgorCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24gdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nCisgICBiYWNrIHRvIGEgYnl0ZSBzdHJpbmcuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemVgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5X0VuY29kZUxvY2FsZShjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKKworICAgRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgIGluIHRoZSByYW5nZSBVK0RDODAuLlUrRENGRiBhcmUgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYuCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcsIHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYAorICAgdG8gZnJlZSB0aGUgbWVtb3J5LiBSZXR1cm4gYGBOVUxMYGAgb24gZW5jb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24KKyAgIGVycm9yCisKKyAgIElmIGVycm9yX3BvcyBpcyBub3QgYGBOVUxMYGAsIGBgKmVycm9yX3Bvc2BgIGlzIHNldCB0byB0aGUgaW5kZXggb2YgdGhlCisgICBpbnZhbGlkIGNoYXJhY3RlciBvbiBlbmNvZGluZyBlcnJvciwgb3Igc2V0IHRvIGBgKHNpemVfdCktMWBgIG90aGVyd2lzZS4KKworICAgVXNlIHRoZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyaW5nIGJhY2sKKyAgIHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfc3lzdGVtZnVuY3Rpb25zOgogCiBTeXN0ZW0gRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKaW5kZXggYjQzNjIyYS4uMzdkYzYzNSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdApAQCAtMjIwLDkgKzIyMCwxNCBAQAogICAgdGhlIHN1YnR5cGUncyA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cmAgYW5kIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9zZXRhdHRyb2AgYXJlIGJvdGggKk5VTEwqLgogCiAKLS4uIGM6bWVtYmVyOjogdm9pZCogUHlUeXBlT2JqZWN0LnRwX3Jlc2VydmVkCisuLiBjOm1lbWJlcjo6IHZvaWQqIFB5VHlwZU9iamVjdC50cF9hc19hc3luYwogCi0gICBSZXNlcnZlZCBzbG90LCBmb3JtZXJseSBrbm93biBhcyB0cF9jb21wYXJlLgorICAgUG9pbnRlciB0byBhbiBhZGRpdGlvbmFsIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGZpZWxkcyByZWxldmFudCBvbmx5IHRvCisgICBvYmplY3RzIHdoaWNoIGltcGxlbWVudCA6dGVybTpgYXdhaXRhYmxlYCBhbmQgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAKKyAgIHByb3RvY29scyBhdCB0aGUgQy1sZXZlbC4gIFNlZSA6cmVmOmBhc3luYy1zdHJ1Y3RzYCBmb3IgZGV0YWlscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBGb3JtZXJseSBrbm93biBhcyBgYHRwX2NvbXBhcmVgYCBhbmQgYGB0cF9yZXNlcnZlZGBgLgogCiAKIC4uIGM6bWVtYmVyOjogcmVwcmZ1bmMgUHlUeXBlT2JqZWN0LnRwX3JlcHIKQEAgLTExMTgsNiArMTEyMyw5IEBACiAgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7CiAKICAgICAgICAgICAgIHVuYXJ5ZnVuYyBuYl9pbmRleDsKKworICAgICAgICAgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5OwogICAgICAgIH0gUHlOdW1iZXJNZXRob2RzOwogCiAgICAuLiBub3RlOjoKQEAgLTEzMjksMyArMTMzNyw1OCBAQAogCiAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAogICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworCisuLiBfYXN5bmMtc3RydWN0czoKKworCitBc3luYyBPYmplY3QgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gc2VjdGlvbmF1dGhvcjo6IFl1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzp0eXBlOjogUHlBc3luY01ldGhvZHMKKworICAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyByZXF1aXJlZCB0byBpbXBsZW1lbnQKKyAgIDp0ZXJtOmBhd2FpdGFibGVgIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBvYmplY3RzLgorCisgICBIZXJlIGlzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjo6CisKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FpdGVyOworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FuZXh0OworICAgICAgICB9IFB5QXN5bmNNZXRob2RzOworCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9hd2FpdAorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCisKKyAgIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYXRvciwgaS5lLiA6YzpmdW5jOmBQeUl0ZXJfQ2hlY2tgIG11c3QKKyAgIHJldHVybiBgYDFgYCBmb3IgaXQuCisKKyAgIFRoaXMgc2xvdCBtYXkgYmUgc2V0IHRvICpOVUxMKiBpZiBhbiBvYmplY3QgaXMgbm90IGFuIDp0ZXJtOmBhd2FpdGFibGVgLgorCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9haXRlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYWl0ZXIoUHlPYmplY3QgKnNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdC4gIFNlZSA6bWV0aDpgX19hbmV4dF9fYCBmb3IgZGV0YWlscy4KKworICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqIGlmIGFuIG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgIGFzeW5jaHJvbm91cyBpdGVyYXRpb24gcHJvdG9jb2wuCisKKy4uIGM6bWVtYmVyOjogdW5hcnlmdW5jIFB5QXN5bmNNZXRob2RzLmFtX2FuZXh0CisKKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgIFB5T2JqZWN0ICphbV9hbmV4dChQeU9iamVjdCAqc2VsZikKKworICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LiAgU2VlIDptZXRoOmBfX2FuZXh0X19gIGZvciBkZXRhaWxzLgorICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IDY1ZDI0YzQuLjE0MDJhYmEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTc2NSwxMSArNzY1LDEzIEBACiAgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQKICAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC03OTAsMTEgKzc5MiwxMyBAQAogICAgKmVycm9ycyogaXMgYGBOVUxMYGAuIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gKnN0ciogY2Fubm90CiAgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bwotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC04MzksMTIgKzg0MywxNCBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEgc3RyaW5nCisgICBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKLSAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCi0gICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgpAQCAtODc0LDEyICs4ODAsMTMgQEAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhIHN0cmluZworICAgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZW5jb2RlIGEKLSAgICAgIHN0cmluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQotICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9jb25mLnB5IGIvRG9jL2NvbmYucHkKaW5kZXggZjgwM2RlMi4uMjhkZDgwZiAxMDA2NDQKLS0tIGEvRG9jL2NvbmYucHkKKysrIGIvRG9jL2NvbmYucHkKQEAgLTM2LDYgKzM2LDkgQEAKICMgUmVxdWlyZSBTcGhpbnggMS4yIGZvciBidWlsZC4KIG5lZWRzX3NwaGlueCA9ICcxLjInCiAKKyMgSWdub3JlIGFueSAucnN0IGZpbGVzIGluIHRoZSB2ZW52LyBkaXJlY3RvcnkuCitleGNsdWRlX3BhdHRlcm5zID0gWyd2ZW52LyonXQorCiAKICMgT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IDYwMjU2MTcuLmQxYzI0ZTUgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtMzQ5LDYgKzM0OSwxMSBAQAogUHlFcnJfRm9ybWF0OmNvbnN0IGNoYXIqOmZvcm1hdDo6CiBQeUVycl9Gb3JtYXQ6Oi4uLjo6CiAKK1B5RXJyX0Zvcm1hdFY6UHlPYmplY3QqOjpudWxsOgorUHlFcnJfRm9ybWF0VjpQeU9iamVjdCo6ZXhjZXB0aW9uOisxOgorUHlFcnJfRm9ybWF0Vjpjb25zdCBjaGFyKjpmb3JtYXQ6OgorUHlFcnJfRm9ybWF0Vjp2YV9saXN0OnZhcmdzOjoKKwogUHlFcnJfV2FybkV4OmludDo6OgogUHlFcnJfV2FybkV4OlB5T2JqZWN0KjpjYXRlZ29yeTowOgogUHlFcnJfV2FybkV4OmNvbnN0IGNoYXIqOm1lc3NhZ2U6OgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IDUzZDc1MjcuLmQwZjg5NDcgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTg2OCwyMyArODY4LDMxIEBACiAKICAgIENyZWF0ZSBhbiBhcmNoaXZlIGZpbGUgKGVnLiBgYHppcGBgIG9yIGBgdGFyYGApLiAgKmJhc2VfbmFtZSogIGlzIHRoZSBuYW1lIG9mCiAgICB0aGUgZmlsZSB0byBjcmVhdGUsIG1pbnVzIGFueSBmb3JtYXQtc3BlY2lmaWMgZXh0ZW5zaW9uOyAgKmZvcm1hdCogaXMgdGhlCi0gICBhcmNoaXZlIGZvcm1hdDogb25lIG9mIGBgemlwYGAsIGBgdGFyYGAsICBgYHp0YXJgYCwgb3IgYGBnenRhcmBgLiAqcm9vdF9kaXIqIGlzCi0gICBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBhcmNoaXZlOyBpZS4gd2UgdHlwaWNhbGx5Ci0gICBgYGNoZGlyYGAgaW50byAqcm9vdF9kaXIqIGJlZm9yZSAgY3JlYXRpbmcgdGhlIGFyY2hpdmUuICAqYmFzZV9kaXIqIGlzIHRoZQotICAgZGlyZWN0b3J5IHdoZXJlIHdlIHN0YXJ0ICBhcmNoaXZpbmcgZnJvbTsgaWUuICpiYXNlX2Rpciogd2lsbCBiZSB0aGUgY29tbW9uCi0gICBwcmVmaXggb2YgYWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUgYXJjaGl2ZS4gICpyb290X2RpciogYW5kICpiYXNlX2RpcioKLSAgIGJvdGggZGVmYXVsdCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZpbGUuCisgICBhcmNoaXZlIGZvcm1hdDogb25lIG9mIGBgemlwYGAsIGBgdGFyYGAsIGBgZ3p0YXJgYCwgYGBienRhcmBgLCBgYHh6dGFyYGAsIG9yCisgICBgYHp0YXJgYC4gKnJvb3RfZGlyKiBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQorICAgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseSBgYGNoZGlyYGAgaW50byAqcm9vdF9kaXIqIGJlZm9yZSAgY3JlYXRpbmcgdGhlCisgICBhcmNoaXZlLiAgKmJhc2VfZGlyKiBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIHdlIHN0YXJ0ICBhcmNoaXZpbmcgZnJvbTsgaWUuCisgICAqYmFzZV9kaXIqIHdpbGwgYmUgdGhlIGNvbW1vbiBwcmVmaXggb2YgYWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUKKyAgIGFyY2hpdmUuICAqcm9vdF9kaXIqIGFuZCAqYmFzZV9kaXIqIGJvdGggZGVmYXVsdCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZpbGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6dGFyYGAgZm9ybWF0LgogCiAKIC4uIGZ1bmN0aW9uOjogbWFrZV90YXJiYWxsKGJhc2VfbmFtZSwgYmFzZV9kaXJbLCBjb21wcmVzcz0nZ3ppcCcsIHZlcmJvc2U9MCwgZHJ5X3J1bj0wXSkKIAogICAgJ0NyZWF0ZSBhbiAob3B0aW9uYWwgY29tcHJlc3NlZCkgYXJjaGl2ZSBhcyBhIHRhciBmaWxlIGZyb20gYWxsIGZpbGVzIGluIGFuZAotICAgdW5kZXIgKmJhc2VfZGlyKi4gKmNvbXByZXNzKiBtdXN0IGJlIGBgJ2d6aXAnYGAgKHRoZSBkZWZhdWx0KSwgIGBgJ2NvbXByZXNzJ2BgLAotICAgYGAnYnppcDInYGAsIG9yIGBgTm9uZWBgLiAgQm90aCA6cHJvZ3JhbTpgdGFyYCBhbmQgdGhlIGNvbXByZXNzaW9uIHV0aWxpdHkgbmFtZWQKLSAgIGJ5ICpjb21wcmVzcyogbXVzdCBiZSBvbiB0aGUgIGRlZmF1bHQgcHJvZ3JhbSBzZWFyY2ggcGF0aCwgc28gdGhpcyBpcyBwcm9iYWJseQotICAgVW5peC1zcGVjaWZpYy4gIFRoZSAgb3V0cHV0IHRhciBmaWxlIHdpbGwgYmUgbmFtZWQgOmZpbGU6YGJhc2VfZGlyLnRhcmAsCi0gICBwb3NzaWJseSBwbHVzIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKDpmaWxlOmAuZ3pgLCA6ZmlsZTpgLmJ6MmAKLSAgIG9yIDpmaWxlOmAuWmApLiAgUmV0dXJuIHRoZSBvdXRwdXQgZmlsZW5hbWUuCisgICB1bmRlciAqYmFzZV9kaXIqLiAqY29tcHJlc3MqIG11c3QgYmUgYGAnZ3ppcCdgYCAodGhlIGRlZmF1bHQpLAorICAgYGAnYnppcDInYGAsIGBgJ3h6J2BgLCBgYCdjb21wcmVzcydgYCwgb3IgYGBOb25lYGAuICBGb3IgdGhlIGBgJ2NvbXByZXNzJ2BgCisgICBtZXRob2QgdGhlIGNvbXByZXNzaW9uIHV0aWxpdHkgbmFtZWQgYnkgOnByb2dyYW06YGNvbXByZXNzYCBtdXN0IGJlIG9uIHRoZQorICAgZGVmYXVsdCBwcm9ncmFtIHNlYXJjaCBwYXRoLCBzbyB0aGlzIGlzIHByb2JhYmx5IFVuaXgtc3BlY2lmaWMuICBUaGUgb3V0cHV0CisgICB0YXIgZmlsZSB3aWxsIGJlIG5hbWVkIDpmaWxlOmBiYXNlX2Rpci50YXJgLCBwb3NzaWJseSBwbHVzIHRoZSBhcHByb3ByaWF0ZQorICAgY29tcHJlc3Npb24gZXh0ZW5zaW9uIChgYC5nemBgLCBgYC5iejJgYCwgYGAueHpgYCBvciBgYC5aYGApLiAgUmV0dXJuIHRoZQorICAgb3V0cHV0IGZpbGVuYW1lLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGB4emBgIGNvbXByZXNzaW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgYmFzZV9kaXJbLCB2ZXJib3NlPTAsIGRyeV9ydW49MF0pCkBAIC0xMTkzLDEyICsxMjAxLDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogYnl0ZV9jb21waWxlKHB5X2ZpbGVzWywgb3B0aW1pemU9MCwgZm9yY2U9MCwgcHJlZml4PU5vbmUsIGJhc2VfZGlyPU5vbmUsIHZlcmJvc2U9MSwgZHJ5X3J1bj0wLCBkaXJlY3Q9Tm9uZV0pCiAKLSAgIEJ5dGUtY29tcGlsZSBhIGNvbGxlY3Rpb24gb2YgUHl0aG9uIHNvdXJjZSBmaWxlcyB0byBlaXRoZXIgOmZpbGU6YC5weWNgIG9yCi0gICA6ZmlsZTpgLnB5b2AgZmlsZXMgaW4gYSA6ZmlsZTpgX19weWNhY2hlX19gIHN1YmRpcmVjdG9yeSAoc2VlIDpwZXA6YDMxNDdgKS4KKyAgIEJ5dGUtY29tcGlsZSBhIGNvbGxlY3Rpb24gb2YgUHl0aG9uIHNvdXJjZSBmaWxlcyB0byA6ZmlsZTpgLnB5Y2AgZmlsZXMgaW4gYQorICAgOmZpbGU6YF9fcHljYWNoZV9fYCBzdWJkaXJlY3RvcnkgKHNlZSA6cGVwOmAzMTQ3YCBhbmQgOnBlcDpgNDg4YCkuCiAgICAqcHlfZmlsZXMqIGlzIGEgbGlzdCBvZiBmaWxlcyB0byBjb21waWxlOyBhbnkgZmlsZXMgdGhhdCBkb24ndCBlbmQgaW4KICAgIDpmaWxlOmAucHlgIGFyZSBzaWxlbnRseSBza2lwcGVkLiAgKm9wdGltaXplKiBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCi0gICAqIGBgMGBgIC0gZG9uJ3Qgb3B0aW1pemUgKGdlbmVyYXRlIDpmaWxlOmAucHljYCkKKyAgICogYGAwYGAgLSBkb24ndCBvcHRpbWl6ZQogICAgKiBgYDFgYCAtIG5vcm1hbCBvcHRpbWl6YXRpb24gKGxpa2UgYGBweXRob24gLU9gYCkKICAgICogYGAyYGAgLSBleHRyYSBvcHRpbWl6YXRpb24gKGxpa2UgYGBweXRob24gLU9PYGApCiAKQEAgLTEyMjIsMTAgKzEyMzAsMTMgQEAKICAgIGRvaW5nLCBsZWF2ZSBpdCBzZXQgdG8gYGBOb25lYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yLjMKLSAgICAgIENyZWF0ZSBgYC5weWNgYCBvciBgYC5weW9gYCBmaWxlcyB3aXRoIGFuIDpmdW5jOmBpbXBvcnQgbWFnaWMgdGFnCisgICAgICBDcmVhdGUgYGAucHljYGAgZmlsZXMgd2l0aCBhbiA6ZnVuYzpgaW1wb3J0IG1hZ2ljIHRhZwogICAgICAgPGltcC5nZXRfdGFnPmAgaW4gdGhlaXIgbmFtZSwgaW4gYSA6ZmlsZTpgX19weWNhY2hlX19gIHN1YmRpcmVjdG9yeQogICAgICAgaW5zdGVhZCBvZiBmaWxlcyB3aXRob3V0IHRhZyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIENyZWF0ZSBgYC5weWNgYCBmaWxlcyBhY2NvcmRpbmcgdG8gOnBlcDpgNDg4YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJmYzgyMl9lc2NhcGUoaGVhZGVyKQogCmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QgYi9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QKaW5kZXggYzU4MjdiNi4uMTQ0NjE5YiAxMDA2NDQKLS0tIGEvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdApAQCAtNzIsMTMgKzcyLDE5IEBACiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBGb3JtYXQgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHwKICs9PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rCi18IGBgZ3p0YXJgYCAgIHwgZ3ppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8ICgxKSwoMykgfAorfCBgYGd6dGFyYGAgICB8IGd6aXBwZWQgdGFyIGZpbGUgICAgICAgICAgICAgfCBcKDEpICAgIHwKIHwgICAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuZ3pgKSAgICAgICAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKworfCBgYGJ6dGFyYGAgICB8IGJ6aXBwZWQgdGFyIGZpbGUgICAgICAgICAgICAgfCAgICAgICAgIHwKK3wgICAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuYnoyYCkgICAgICAgICAgIHwgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKworfCBgYHh6dGFyYGAgICB8IHh6aXBwZWQgdGFyIGZpbGUgICAgICAgICAgICAgfCAgICAgICAgIHwKK3wgICAgICAgICAgICAgfCAoOmZpbGU6YC50YXIueHpgKSAgICAgICAgICAgIHwgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHp0YXJgYCAgICB8IGNvbXByZXNzZWQgdGFyIGZpbGUgICAgICAgICAgfCBcKDMpICAgIHwKIHwgICAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuWmApICAgICAgICAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwotfCBgYHRhcmBgICAgICB8IHRhciBmaWxlICg6ZmlsZTpgLnRhcmApICAgICAgfCBcKDMpICAgIHwKK3wgYGB0YXJgYCAgICAgfCB0YXIgZmlsZSAoOmZpbGU6YC50YXJgKSAgICAgIHwgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHppcGBgICAgICB8IHppcCBmaWxlICg6ZmlsZTpgLnppcGApICAgICAgfCAoMiksKDQpIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCkBAIC05NCw2ICsxMDAsOSBAQAogfCBgYG1zaWBgICAgICB8IE1pY3Jvc29mdCBJbnN0YWxsZXIuICAgICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiAKKy4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6dGFyYGAgZm9ybWF0LgorCiAKIE5vdGVzOgogCkBAIC0xMDQsOCArMTEzLDcgQEAKICAgIGRlZmF1bHQgb24gV2luZG93cwogCiAoMykKLSAgIHJlcXVpcmVzIGV4dGVybmFsIHV0aWxpdGllczogOnByb2dyYW06YHRhcmAgYW5kIHBvc3NpYmx5IG9uZSBvZiA6cHJvZ3JhbTpgZ3ppcGAsCi0gICA6cHJvZ3JhbTpgYnppcDJgLCBvciA6cHJvZ3JhbTpgY29tcHJlc3NgCisgICByZXF1aXJlcyBleHRlcm5hbCA6cHJvZ3JhbTpgY29tcHJlc3NgIHV0aWxpdHkuCiAKICg0KQogICAgcmVxdWlyZXMgZWl0aGVyIGV4dGVybmFsIDpwcm9ncmFtOmB6aXBgIHV0aWxpdHkgb3IgOm1vZDpgemlwZmlsZWAgbW9kdWxlIChwYXJ0CkBAIC0xMTksMjEgKzEyNywyMiBAQAogb3B0aW9uOyB5b3UgY2FuIGFsc28gdXNlIHRoZSBjb21tYW5kIHRoYXQgZGlyZWN0bHkgaW1wbGVtZW50cyB0aGUgZm9ybWF0IHlvdSdyZQogaW50ZXJlc3RlZCBpbi4gIFNvbWUgb2YgdGhlc2UgOmNvbW1hbmQ6YGJkaXN0YCAic3ViLWNvbW1hbmRzIiBhY3R1YWxseSBnZW5lcmF0ZQogc2V2ZXJhbCBzaW1pbGFyIGZvcm1hdHM7IGZvciBpbnN0YW5jZSwgdGhlIDpjb21tYW5kOmBiZGlzdF9kdW1iYCBjb21tYW5kCi1nZW5lcmF0ZXMgYWxsIHRoZSAiZHVtYiIgYXJjaGl2ZSBmb3JtYXRzIChgYHRhcmBgLCBgYHp0YXJgYCwgYGBnenRhcmBgLCBhbmQKLWBgemlwYGApLCBhbmQgOmNvbW1hbmQ6YGJkaXN0X3JwbWAgZ2VuZXJhdGVzIGJvdGggYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZQotOmNvbW1hbmQ6YGJkaXN0YCBzdWItY29tbWFuZHMsIGFuZCB0aGUgZm9ybWF0cyBnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgorZ2VuZXJhdGVzIGFsbCB0aGUgImR1bWIiIGFyY2hpdmUgZm9ybWF0cyAoYGB0YXJgYCwgYGBnenRhcmBgLCBgYGJ6dGFyYGAsCitgYHh6dGFyYGAsIGBgenRhcmBgLCBhbmQgYGB6aXBgYCksIGFuZCA6Y29tbWFuZDpgYmRpc3RfcnBtYCBnZW5lcmF0ZXMgYm90aAorYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZSA6Y29tbWFuZDpgYmRpc3RgIHN1Yi1jb21tYW5kcywgYW5kIHRoZSBmb3JtYXRzCitnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IENvbW1hbmQgICAgICAgICAgICAgICAgICB8IEZvcm1hdHMgICAgICAgICAgICAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgenRhciwgZ3p0YXIsIHppcCB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9ycG1gICAgICB8IHJwbSwgc3JwbSAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF93aW5pbnN0YCB8IHdpbmluc3QgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tbWFuZCAgICAgICAgICAgICAgICAgIHwgRm9ybWF0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgZ3p0YXIsIGJ6dGFyLCB4enRhciwgenRhciwgemlwIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29tbWFuZDpgYmRpc3RfcnBtYCAgICAgfCBycG0sIHNycG0gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbW1hbmQ6YGJkaXN0X3dpbmluc3RgIHwgd2luaW5zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGdpdmUgZGV0YWlscyBvbiB0aGUgaW5kaXZpZHVhbCA6Y29tbWFuZDpgYmRpc3RfXCpgCiBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdAppbmRleCAwZWNlNjQ2Li44ZjQ2YmQ3IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0xNTYsOCArMTU2LDggQEAKIAogcHVyZSBQeXRob24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIFB5dGhvbiBhbmQgY29udGFpbmVkIGluIGEgc2luZ2xlIDpmaWxlOmAucHlgIGZpbGUgKGFuZAotICAgcG9zc2libHkgYXNzb2NpYXRlZCA6ZmlsZTpgLnB5Y2AgYW5kL29yIDpmaWxlOmAucHlvYCBmaWxlcykuICBTb21ldGltZXMgcmVmZXJyZWQKLSAgIHRvIGFzIGEgInB1cmUgbW9kdWxlLiIKKyAgIHBvc3NpYmx5IGFzc29jaWF0ZWQgOmZpbGU6YC5weWNgIGZpbGVzKS4gIFNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhCisgICAicHVyZSBtb2R1bGUuIgogCiBleHRlbnNpb24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIHRoZSBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugb2YgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogQy9DKysKQEAgLTIxMCw1ICsyMTAsMyBAQAogICAgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91ciBzb3VyY2UgdHJlZSAob3IgIHNvdXJjZSBkaXN0cmlidXRpb24pOyB0aGUKICAgIGRpcmVjdG9yeSB3aGVyZSA6ZmlsZTpgc2V0dXAucHlgIGV4aXN0cy4gIEdlbmVyYWxseSAgOmZpbGU6YHNldHVwLnB5YCB3aWxsIGJlCiAgICBydW4gZnJvbSB0aGlzIGRpcmVjdG9yeS4KLQotCmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0IGIvRG9jL2Rpc3R1dGlscy9zb3VyY2VkaXN0LnJzdAppbmRleCBiOWYwY2M4Li5kNzlmMDBkIDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvc291cmNlZGlzdC5yc3QKQEAgLTMyLDEyICszMiwxOCBAQAogfCBgYGJ6dGFyYGAgfCBiemlwMidlZCB0YXIgZmlsZSAgICAgICB8ICAgICAgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuYnoyYCkgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKworfCBgYHh6dGFyYGAgfCB4eidlZCB0YXIgZmlsZSAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIueHpgKSAgICAgICB8ICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHp0YXJgYCAgfCBjb21wcmVzc2VkIHRhciBmaWxlICAgICB8IFwoNCkgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuWmApICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHRhcmBgICAgfCB0YXIgZmlsZSAoOmZpbGU6YC50YXJgKSB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGB4enRhcmBgIGZvcm1hdC4KKwogTm90ZXM6CiAKICgxKQpAQCAtNTQsNyArNjAsNyBAQAogICAgcmVxdWlyZXMgdGhlIDpwcm9ncmFtOmBjb21wcmVzc2AgcHJvZ3JhbS4gTm90aWNlIHRoYXQgdGhpcyBmb3JtYXQgaXMgbm93CiAgICBwZW5kaW5nIGZvciBkZXByZWNhdGlvbiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLgogCi1XaGVuIHVzaW5nIGFueSBgYHRhcmBgIGZvcm1hdCAoYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgenRhcmBgIG9yCitXaGVuIHVzaW5nIGFueSBgYHRhcmBgIGZvcm1hdCAoYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgeHp0YXJgYCwgYGB6dGFyYGAgb3IKIGBgdGFyYGApLCB1bmRlciBVbml4IHlvdSBjYW4gc3BlY2lmeSB0aGUgYGBvd25lcmBgIGFuZCBgYGdyb3VwYGAgbmFtZXMKIHRoYXQgd2lsbCBiZSBzZXQgZm9yIGVhY2ggbWVtYmVyIG9mIHRoZSBhcmNoaXZlLgogCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNmNiNjg2YS4uYWNkNjBhZSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNTgsMTIgKzU4LDE4IEBACiAgICBpbnQKICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgIHsKLSAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7ICAvKiBvcHRpb25hbCBidXQgcmVjb21tZW5kZWQgKi8KLSAgICAgUHlfSW5pdGlhbGl6ZSgpOwotICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgInByaW50KCdUb2RheSBpcycsIGN0aW1lKHRpbWUoKSkpXG4iKTsKLSAgICAgUHlfRmluYWxpemUoKTsKLSAgICAgcmV0dXJuIDA7CisgICAgICAgd2NoYXJfdCAqcHJvZ3JhbSA9IFB5X0RlY29kZUxvY2FsZShhcmd2WzBdLCBOVUxMKTsKKyAgICAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgZXJyb3I6IGNhbm5vdCBkZWNvZGUgYXJndlswXVxuIik7CisgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgfQorICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHByb2dyYW0pOyAgLyogb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkICovCisgICAgICAgUHlfSW5pdGlhbGl6ZSgpOworICAgICAgIFB5UnVuX1NpbXBsZVN0cmluZygiZnJvbSB0aW1lIGltcG9ydCB0aW1lLGN0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7CisgICAgICAgUHlfRmluYWxpemUoKTsKKyAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOworICAgICAgIHJldHVybiAwOwogICAgfQogCiBUaGUgOmM6ZnVuYzpgUHlfU2V0UHJvZ3JhbU5hbWVgIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCkBAIC0xNjAsNyArMTY2LDcgQEAKIGludGVyZXN0aW5nIHBhcnQgd2l0aCByZXNwZWN0IHRvIGVtYmVkZGluZyBQeXRob24gc3RhcnRzIHdpdGggOjoKIAogICAgUHlfSW5pdGlhbGl6ZSgpOwotICAgcE5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhhcmd2WzFdKTsKKyAgIHBOYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChhcmd2WzFdKTsKICAgIC8qIEVycm9yIGNoZWNraW5nIG9mIHBOYW1lIGxlZnQgb3V0ICovCiAgICBwTW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHBOYW1lKTsKIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CmluZGV4IGMxMGVmYTkuLjE3Y2ZkZWIgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKQEAgLTM3NSwxMSArMzc1LDE3IEBACiAgICBpbnQKICAgIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgIHsKKyAgICAgICB3Y2hhcl90ICpwcm9ncmFtID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbMF0sIE5VTEwpOworICAgICAgIGlmIChwcm9ncmFtID09IE5VTEwpIHsKKyAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBlcnJvcjogY2Fubm90IGRlY29kZSBhcmd2WzBdXG4iKTsKKyAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICB9CisKICAgICAgICAvKiBBZGQgYSBidWlsdC1pbiBtb2R1bGUsIGJlZm9yZSBQeV9Jbml0aWFsaXplICovCiAgICAgICAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYigic3BhbSIsIFB5SW5pdF9zcGFtKTsKIAogICAgICAgIC8qIFBhc3MgYXJndlswXSB0byB0aGUgUHl0aG9uIGludGVycHJldGVyICovCi0gICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUocHJvZ3JhbSk7CiAKICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBSZXF1aXJlZC4gKi8KICAgICAgICBQeV9Jbml0aWFsaXplKCk7CkBAIC0zOTEsNiArMzk3LDEwIEBACiAKICAgICAgICAuLi4KIAorICAgICAgIFB5TWVtX1Jhd0ZyZWUocHJvZ3JhbSk7CisgICAgICAgcmV0dXJuIDA7CisgICB9CisKIC4uIG5vdGU6OgogCiAgICBSZW1vdmluZyBlbnRyaWVzIGZyb20gYGBzeXMubW9kdWxlc2BgIG9yIGltcG9ydGluZyBjb21waWxlZCBtb2R1bGVzIGludG8KZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0IGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKaW5kZXggYWFhMzdiOC4uYjdlMzVmNCAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwpkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggMWRlODZlZi4uM2I3OTc1YiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC02OSwxMSArNjksMzQgQEAKICAgICAgIDpyZWY6YHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYXJndW1lbnRzIGFuZCBwYXJhbWV0ZXJzCiAgICAgICA8ZmFxLWFyZ3VtZW50LXZzLXBhcmFtZXRlcj5gLCBhbmQgOnBlcDpgMzYyYC4KIAorICAgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcgorICAgICAgQW4gb2JqZWN0IHdoaWNoIGNvbnRyb2xzIHRoZSBlbnZpcm9ubWVudCBzZWVuIGluIGFuCisgICAgICA6a2V5d29yZDpgYXN5bmMgd2l0aGAgc3RhdGVtZW50IGJ5IGRlZmluaW5nIDptZXRoOmBfX2FlbnRlcl9fYCBhbmQKKyAgICAgIDptZXRoOmBfX2FleGl0X19gIG1ldGhvZHMuICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAuCisKKyAgIGFzeW5jaHJvbm91cyBpdGVyYWJsZQorICAgICAgQW4gb2JqZWN0LCB0aGF0IGNhbiBiZSB1c2VkIGluIGFuIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudC4KKyAgICAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBhd2FpdGFibGVgIGZyb20gaXRzIDptZXRoOmBfX2FpdGVyX19gIG1ldGhvZCwKKyAgICAgIHdoaWNoIHNob3VsZCBpbiB0dXJuIGJlIHJlc29sdmVkIGluIGFuIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgCisgICAgICBvYmplY3QuICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAuCisKKyAgIGFzeW5jaHJvbm91cyBpdGVyYXRvcgorICAgICAgQW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyA6bWV0aDpgX19haXRlcl9fYCBhbmQgOm1ldGg6YF9fYW5leHRfX2AKKyAgICAgIG1ldGhvZHMsIHRoYXQgbXVzdCByZXR1cm4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0cy4KKyAgICAgIDprZXl3b3JkOmBhc3luYyBmb3JgIHJlc29sdmVzIGF3YWl0YWJsZSByZXR1cm5lZCBmcm9tIGFzeW5jaHJvbm91cworICAgICAgaXRlcmF0b3IncyA6bWV0aDpgX19hbmV4dF9fYCBtZXRob2QgdW50aWwgaXQgcmFpc2VzCisgICAgICA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGV4Y2VwdGlvbi4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KKwogICAgYXR0cmlidXRlCiAgICAgICBBIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3Qgd2hpY2ggaXMgcmVmZXJlbmNlZCBieSBuYW1lIHVzaW5nCiAgICAgICBkb3R0ZWQgZXhwcmVzc2lvbnMuICBGb3IgZXhhbXBsZSwgaWYgYW4gb2JqZWN0ICpvKiBoYXMgYW4gYXR0cmlidXRlCiAgICAgICAqYSogaXQgd291bGQgYmUgcmVmZXJlbmNlZCBhcyAqby5hKi4KIAorICAgYXdhaXRhYmxlCisgICAgICBBbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb24uICBDYW4gYmUKKyAgICAgIGEgOnRlcm06YGNvcm91dGluZWAgb3IgYW4gb2JqZWN0IHdpdGggYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorICAgICAgU2VlIGFsc28gOnBlcDpgNDkyYC4KKwogICAgQkRGTAogICAgICAgQmVuZXZvbGVudCBEaWN0YXRvciBGb3IgTGlmZSwgYS5rLmEuIGBHdWlkbyB2YW4gUm9zc3VtCiAgICAgICA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9+Z3VpZG8vPmBfLCBQeXRob24ncyBjcmVhdG9yLgpAQCAtODgsMTAgKzExMSwxNyBAQAogICAgYnl0ZXMtbGlrZSBvYmplY3QKICAgICAgIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXJvYmplY3RzYCwgbGlrZSA6Y2xhc3M6YGJ5dGVzYCwKICAgICAgIDpjbGFzczpgYnl0ZWFycmF5YCBvciA6Y2xhc3M6YG1lbW9yeXZpZXdgLiAgQnl0ZXMtbGlrZSBvYmplY3RzIGNhbgotICAgICAgYmUgdXNlZCBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgZXhwZWN0IGJpbmFyeSBkYXRhLCBzdWNoIGFzCi0gICAgICBjb21wcmVzc2lvbiwgc2F2aW5nIHRvIGEgYmluYXJ5IGZpbGUgb3Igc2VuZGluZyBvdmVyIGEgc29ja2V0LgotICAgICAgU29tZSBvcGVyYXRpb25zIG5lZWQgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIG11dGFibGUsIGluIHdoaWNoIGNhc2UKLSAgICAgIG5vdCBhbGwgYnl0ZXMtbGlrZSBvYmplY3RzIGNhbiBhcHBseS4KKyAgICAgIGJlIHVzZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IHdvcmsgd2l0aCBiaW5hcnkgZGF0YTsgdGhlc2UgaW5jbHVkZQorICAgICAgY29tcHJlc3Npb24sIHNhdmluZyB0byBhIGJpbmFyeSBmaWxlLCBhbmQgc2VuZGluZyBvdmVyIGEgc29ja2V0LgorCisgICAgICBTb21lIG9wZXJhdGlvbnMgbmVlZCB0aGUgYmluYXJ5IGRhdGEgdG8gYmUgbXV0YWJsZS4gIFRoZSBkb2N1bWVudGF0aW9uCisgICAgICBvZnRlbiByZWZlcnMgdG8gdGhlc2UgYXMgInJlYWQtd3JpdGUgYnl0ZXMtbGlrZSBvYmplY3RzIi4gIEV4YW1wbGUKKyAgICAgIG11dGFibGUgYnVmZmVyIG9iamVjdHMgaW5jbHVkZSA6Y2xhc3M6YGJ5dGVhcnJheWAgYW5kIGEKKyAgICAgIDpjbGFzczpgbWVtb3J5dmlld2Agb2YgYSA6Y2xhc3M6YGJ5dGVhcnJheWAuCisgICAgICBPdGhlciBvcGVyYXRpb25zIHJlcXVpcmUgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIHN0b3JlZCBpbgorICAgICAgaW1tdXRhYmxlIG9iamVjdHMgKCJyZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3RzIik7IGV4YW1wbGVzCisgICAgICBvZiB0aGVzZSBpbmNsdWRlIDpjbGFzczpgYnl0ZXNgIGFuZCBhIDpjbGFzczpgbWVtb3J5dmlld2AKKyAgICAgIG9mIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgogCiAgICBieXRlY29kZQogICAgICAgUHl0aG9uIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGludG8gYnl0ZWNvZGUsIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgpAQCAtMTM5LDYgKzE2OSwxOSBAQAogICAgICAgc3RhdGVtZW50IGJ5IGRlZmluaW5nIDptZXRoOmBfX2VudGVyX19gIGFuZCA6bWV0aDpgX19leGl0X19gIG1ldGhvZHMuCiAgICAgICBTZWUgOnBlcDpgMzQzYC4KIAorICAgY29yb3V0aW5lIGZ1bmN0aW9uCisgICAgICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QuICBJdCBpcyBkZWZpbmVkCisgICAgICB3aXRoIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIGtleXdvcmQsIGFuZCBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgLAorICAgICAgOmtleXdvcmQ6YGFzeW5jIGZvcmAsIGFuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAga2V5d29yZHMuICBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA0OTJgLgorCisgICBjb3JvdXRpbmUKKyAgICAgIENvcm91dGluZXMgaXMgYSBtb3JlIGdlbmVyYWxpemVkIGZvcm0gb2Ygc3Vicm91dGluZXMuIFN1YnJvdXRpbmVzIGFyZQorICAgICAgZW50ZXJlZCBhdCBvbmUgcG9pbnQgYW5kIGV4aXRlZCBhdCBhbm90aGVyIHBvaW50LiAgQ29yb3V0aW5lcywgY2FuIGJlCisgICAgICBlbnRlcmVkLCBleGl0ZWQsIGFuZCByZXN1bWVkIGF0IG1hbnkgZGlmZmVyZW50IHBvaW50cy4gIFNlZQorICAgICAgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9ucywgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIGFuZAorICAgICAgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIHN0YXRlbWVudHMuIFNlZSBhbHNvIDpwZXA6YDQ5MmAuCisKICAgIENQeXRob24KICAgICAgIFRoZSBjYW5vbmljYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSwgYXMKICAgICAgIGRpc3RyaWJ1dGVkIG9uIGBweXRob24ub3JnIDxodHRwczovL3d3dy5weXRob24ub3JnPmBfLiAgVGhlIHRlcm0gIkNQeXRob24iCkBAIC00MDIsNiArNDQ1LDE5IEBACiAgICAgICB0aGFuIGNvbXBpbGVkIG9uZXMsIHRob3VnaCB0aGVpciBwcm9ncmFtcyBnZW5lcmFsbHkgYWxzbyBydW4gbW9yZQogICAgICAgc2xvd2x5LiAgU2VlIGFsc28gOnRlcm06YGludGVyYWN0aXZlYC4KIAorICAgaW50ZXJwcmV0ZXIgc2h1dGRvd24KKyAgICAgIFdoZW4gYXNrZWQgdG8gc2h1dCBkb3duLCB0aGUgUHl0aG9uIGludGVycHJldGVyIGVudGVycyBhIHNwZWNpYWwgcGhhc2UKKyAgICAgIHdoZXJlIGl0IGdyYWR1YWxseSByZWxlYXNlcyBhbGwgYWxsb2NhdGVkIHJlc291cmNlcywgc3VjaCBhcyBtb2R1bGVzCisgICAgICBhbmQgdmFyaW91cyBjcml0aWNhbCBpbnRlcm5hbCBzdHJ1Y3R1cmVzLiAgSXQgYWxzbyBtYWtlcyBzZXZlcmFsIGNhbGxzCisgICAgICB0byB0aGUgOnRlcm06YGdhcmJhZ2UgY29sbGVjdG9yIDxnYXJiYWdlIGNvbGxlY3Rpb24+YC4gVGhpcyBjYW4gdHJpZ2dlcgorICAgICAgdGhlIGV4ZWN1dGlvbiBvZiBjb2RlIGluIHVzZXItZGVmaW5lZCBkZXN0cnVjdG9ycyBvciB3ZWFrcmVmIGNhbGxiYWNrcy4KKyAgICAgIENvZGUgZXhlY3V0ZWQgZHVyaW5nIHRoZSBzaHV0ZG93biBwaGFzZSBjYW4gZW5jb3VudGVyIHZhcmlvdXMKKyAgICAgIGV4Y2VwdGlvbnMgYXMgdGhlIHJlc291cmNlcyBpdCByZWxpZXMgb24gbWF5IG5vdCBmdW5jdGlvbiBhbnltb3JlCisgICAgICAoY29tbW9uIGV4YW1wbGVzIGFyZSBsaWJyYXJ5IG1vZHVsZXMgb3IgdGhlIHdhcm5pbmdzIG1hY2hpbmVyeSkuCisKKyAgICAgIFRoZSBtYWluIHJlYXNvbiBmb3IgaW50ZXJwcmV0ZXIgc2h1dGRvd24gaXMgdGhhdCB0aGUgYGBfX21haW5fX2BgIG1vZHVsZQorICAgICAgb3IgdGhlIHNjcmlwdCBiZWluZyBydW4gaGFzIGZpbmlzaGVkIGV4ZWN1dGluZy4KKwogICAgaXRlcmFibGUKICAgICAgIEFuIG9iamVjdCBjYXBhYmxlIG9mIHJldHVybmluZyBpdHMgbWVtYmVycyBvbmUgYXQgYSB0aW1lLiBFeGFtcGxlcyBvZgogICAgICAgaXRlcmFibGVzIGluY2x1ZGUgYWxsIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgc3RyYCwKQEAgLTQ0NCwxMiArNTAwLDEzIEBACiAKICAgICAgIEEgbnVtYmVyIG9mIHRvb2xzIGluIFB5dGhvbiBhY2NlcHQga2V5IGZ1bmN0aW9ucyB0byBjb250cm9sIGhvdyBlbGVtZW50cwogICAgICAgYXJlIG9yZGVyZWQgb3IgZ3JvdXBlZC4gIFRoZXkgaW5jbHVkZSA6ZnVuYzpgbWluYCwgOmZ1bmM6YG1heGAsCi0gICAgICA6ZnVuYzpgc29ydGVkYCwgOm1ldGg6YGxpc3Quc29ydGAsIDpmdW5jOmBoZWFwcS5uc21hbGxlc3RgLAotICAgICAgOmZ1bmM6YGhlYXBxLm5sYXJnZXN0YCwgYW5kIDpmdW5jOmBpdGVydG9vbHMuZ3JvdXBieWAuCisgICAgICA6ZnVuYzpgc29ydGVkYCwgOm1ldGg6YGxpc3Quc29ydGAsIDpmdW5jOmBoZWFwcS5tZXJnZWAsCisgICAgICA6ZnVuYzpgaGVhcHEubnNtYWxsZXN0YCwgOmZ1bmM6YGhlYXBxLm5sYXJnZXN0YCwgYW5kCisgICAgICA6ZnVuYzpgaXRlcnRvb2xzLmdyb3VwYnlgLgogCiAgICAgICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNyZWF0ZSBhIGtleSBmdW5jdGlvbi4gIEZvciBleGFtcGxlLiB0aGUKICAgICAgIDptZXRoOmBzdHIubG93ZXJgIG1ldGhvZCBjYW4gc2VydmUgYXMgYSBrZXkgZnVuY3Rpb24gZm9yIGNhc2UgaW5zZW5zaXRpdmUKLSAgICAgIHNvcnRzLiAgQWx0ZXJuYXRpdmVseSwgYW4gYWQtaG9jIGtleSBmdW5jdGlvbiBjYW4gYmUgYnVpbHQgZnJvbSBhCisgICAgICBzb3J0cy4gIEFsdGVybmF0aXZlbHksIGEga2V5IGZ1bmN0aW9uIGNhbiBiZSBidWlsdCBmcm9tIGEKICAgICAgIDprZXl3b3JkOmBsYW1iZGFgIGV4cHJlc3Npb24gc3VjaCBhcyBgYGxhbWJkYSByOiAoclswXSwgclsyXSlgYC4gIEFsc28sCiAgICAgICB0aGUgOm1vZDpgb3BlcmF0b3JgIG1vZHVsZSBwcm92aWRlcyB0aHJlZSBrZXkgZnVuY3Rpb24gY29uc3RydWN0b3JzOgogICAgICAgOmZ1bmM6YH5vcGVyYXRvci5hdHRyZ2V0dGVyYCwgOmZ1bmM6YH5vcGVyYXRvci5pdGVtZ2V0dGVyYCwgYW5kCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGUzNjI2MzEuLjc1MjRjNGEgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC03NTgsNiArNzU4LDE0IEBACiBJbiBhZGRpdGlvbiwgc29tZSBjb252ZXJ0ZXJzIGFjY2VwdCBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIEhlcmUgaXMgYSBsaXN0CiBvZiB0aGVzZSBhcmd1bWVudHMsIGFsb25nIHdpdGggdGhlaXIgbWVhbmluZ3M6CiAKKyAgYGBhY2NlcHRgYAorICAgIEEgc2V0IG9mIFB5dGhvbiB0eXBlcyAoYW5kIHBvc3NpYmx5IHBzZXVkby10eXBlcyk7CisgICAgdGhpcyByZXN0cmljdHMgdGhlIGFsbG93YWJsZSBQeXRob24gYXJndW1lbnQgdG8gdmFsdWVzIG9mIHRoZXNlIHR5cGVzLgorICAgIChUaGlzIGlzIG5vdCBhIGdlbmVyYWwtcHVycG9zZSBmYWNpbGl0eTsgYXMgYSBydWxlIGl0IG9ubHkgc3VwcG9ydHMKKyAgICBzcGVjaWZpYyBsaXN0cyBvZiB0eXBlcyBhcyBzaG93biBpbiB0aGUgbGVnYWN5IGNvbnZlcnRlciB0YWJsZS4pCisKKyAgICBUbyBhY2NlcHQgYGBOb25lYGAsIGFkZCBgYE5vbmVUeXBlYGAgdG8gdGhpcyBzZXQuCisKICAgYGBiaXR3aXNlYGAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdW5zaWduZWQgaW50ZWdlcnMuICBUaGUgbmF0aXZlIGludGVnZXIgdmFsdWUgb2YgdGhpcwogICAgIFB5dGhvbiBhcmd1bWVudCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHBhcmFtZXRlciB3aXRob3V0IGFueSByYW5nZSBjaGVja2luZywKQEAgLTc3MiwzOSArNzgwLDI3IEBACiAgICAgT25seSBzdXBwb3J0ZWQgZm9yIHN0cmluZ3MuICBTcGVjaWZpZXMgdGhlIGVuY29kaW5nIHRvIHVzZSB3aGVuIGNvbnZlcnRpbmcKICAgICB0aGlzIHN0cmluZyBmcm9tIGEgUHl0aG9uIHN0ciAoVW5pY29kZSkgdmFsdWUgaW50byBhIEMgYGBjaGFyICpgYCB2YWx1ZS4KIAotICBgYGxlbmd0aGBgCi0gICAgT25seSBzdXBwb3J0ZWQgZm9yIHN0cmluZ3MuICBJZiB0cnVlLCByZXF1ZXN0cyB0aGF0IHRoZSBsZW5ndGggb2YgdGhlCi0gICAgc3RyaW5nIGJlIHBhc3NlZCBpbiB0byB0aGUgaW1wbCBmdW5jdGlvbiwganVzdCBhZnRlciB0aGUgc3RyaW5nIHBhcmFtZXRlciwKLSAgICBpbiBhIHBhcmFtZXRlciBuYW1lZCBgYDxwYXJhbWV0ZXJfbmFtZT5fbGVuZ3RoYGAuCi0KLSAgYGBudWxsYWJsZWBgCi0gICAgT25seSBzdXBwb3J0ZWQgZm9yIHN0cmluZ3MuICBJZiB0cnVlLCB0aGlzIHBhcmFtZXRlciBtYXkgYWxzbyBiZSBzZXQgdG8KLSAgICBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB0aGUgQyBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gYGBOVUxMYGAuCiAKICAgYGBzdWJjbGFzc19vZmBgCiAgICAgT25seSBzdXBwb3J0ZWQgZm9yIHRoZSBgYG9iamVjdGBgIGNvbnZlcnRlci4gIFJlcXVpcmVzIHRoYXQgdGhlIFB5dGhvbgogICAgIHZhbHVlIGJlIGEgc3ViY2xhc3Mgb2YgYSBQeXRob24gdHlwZSwgYXMgZXhwcmVzc2VkIGluIEMuCiAKLSAgYGB0eXBlc2BgCi0gICAgT25seSBzdXBwb3J0ZWQgZm9yIHRoZSBgYG9iamVjdGBgIChhbmQgYGBzZWxmYGApIGNvbnZlcnRlci4gIFNwZWNpZmllcworICBgYHR5cGVgYAorICAgIE9ubHkgc3VwcG9ydGVkIGZvciB0aGUgYGBvYmplY3RgYCBhbmQgYGBzZWxmYGAgY29udmVydGVycy4gIFNwZWNpZmllcwogICAgIHRoZSBDIHR5cGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGVjbGFyZSB0aGUgdmFyaWFibGUuICBEZWZhdWx0IHZhbHVlIGlzCiAgICAgYGAiUHlPYmplY3QgKiJgYC4KIAotICBgYHR5cGVzYGAKLSAgICBBIHN0cmluZyBjb250YWluaW5nIGEgbGlzdCBvZiBQeXRob24gdHlwZXMgKGFuZCBwb3NzaWJseSBwc2V1ZG8tdHlwZXMpOwotICAgIHRoaXMgcmVzdHJpY3RzIHRoZSBhbGxvd2FibGUgUHl0aG9uIGFyZ3VtZW50IHRvIHZhbHVlcyBvZiB0aGVzZSB0eXBlcy4KLSAgICAoVGhpcyBpcyBub3QgYSBnZW5lcmFsLXB1cnBvc2UgZmFjaWxpdHk7IGFzIGEgcnVsZSBpdCBvbmx5IHN1cHBvcnRzCi0gICAgc3BlY2lmaWMgbGlzdHMgb2YgdHlwZXMgYXMgc2hvd24gaW4gdGhlIGxlZ2FjeSBjb252ZXJ0ZXIgdGFibGUuKQotCiAgIGBgemVyb2VzYGAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIGVtYmVkZGVkIE5VTCBieXRlcyAoYGAnXFwwJ2BgKSBhcmUKLSAgICBwZXJtaXR0ZWQgaW5zaWRlIHRoZSB2YWx1ZS4KKyAgICBwZXJtaXR0ZWQgaW5zaWRlIHRoZSB2YWx1ZS4gIFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB3aWxsIGJlIHBhc3NlZCBpbgorICAgIHRvIHRoZSBpbXBsIGZ1bmN0aW9uLCBqdXN0IGFmdGVyIHRoZSBzdHJpbmcgcGFyYW1ldGVyLCBhcyBhIHBhcmFtZXRlciBuYW1lZAorICAgIGBgPHBhcmFtZXRlcl9uYW1lPl9sZW5ndGhgYC4KIAogUGxlYXNlIG5vdGUsIG5vdCBldmVyeSBwb3NzaWJsZSBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMgd2lsbCB3b3JrLgotT2Z0ZW4gdGhlc2UgYXJndW1lbnRzIGFyZSBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5IGJ5IHNwZWNpZmljIGBgUHlBcmdfUGFyc2VUdXBsZWBgCitVc3VhbGx5IHRoZXNlIGFyZ3VtZW50cyBhcmUgaW1wbGVtZW50ZWQgYnkgc3BlY2lmaWMgYGBQeUFyZ19QYXJzZVR1cGxlYGAKICpmb3JtYXQgdW5pdHMqLCB3aXRoIHNwZWNpZmljIGJlaGF2aW9yLiAgRm9yIGV4YW1wbGUsIGN1cnJlbnRseSB5b3UgY2Fubm90Ci1jYWxsIGBgc3RyYGAgYW5kIHBhc3MgaW4gYGB6ZXJvZXM9VHJ1ZWBgIHdpdGhvdXQgYWxzbyBzcGVjaWZ5aW5nIGFuIGBgZW5jb2RpbmdgYDsKLWFsdGhvdWdoIGl0J3MgcGVyZmVjdGx5IHJlYXNvbmFibGUgdG8gdGhpbmsgdGhpcyB3b3VsZCB3b3JrLCB0aGVzZSBzZW1hbnRpY3MgZG9uJ3QKK2NhbGwgYGB1bnNpZ25lZF9zaG9ydGBgIHdpdGhvdXQgYWxzbyBzcGVjaWZ5aW5nIGBgYml0d2lzZT1UcnVlYGAuCitBbHRob3VnaCBpdCdzIHBlcmZlY3RseSByZWFzb25hYmxlIHRvIHRoaW5rIHRoaXMgd291bGQgd29yaywgdGhlc2Ugc2VtYW50aWNzIGRvbid0CiBtYXAgdG8gYW55IGV4aXN0aW5nIGZvcm1hdCB1bml0LiAgU28gQXJndW1lbnQgQ2xpbmljIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gIChPciwgYXQKIGxlYXN0LCBub3QgeWV0LikKIApAQCAtODE2LDEzICs4MTIsMTMgQEAKIGBgJ0InYGAgICAgIGBgdW5zaWduZWRfY2hhcihiaXR3aXNlPVRydWUpYGAKIGBgJ2InYGAgICAgIGBgdW5zaWduZWRfY2hhcmBgCiBgYCdjJ2BgICAgICBgYGNoYXJgYAotYGAnQydgYCAgICAgYGBpbnQodHlwZXM9J3N0cicpYGAKK2BgJ0MnYGAgICAgIGBgaW50KGFjY2VwdD17c3RyfSlgYAogYGAnZCdgYCAgICAgYGBkb3VibGVgYAogYGAnRCdgYCAgICAgYGBQeV9jb21wbGV4YGAKLWBgJ2VzIydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgbGVuZ3RoPVRydWUsIHplcm9lcz1UcnVlKWBgCiBgYCdlcydgYCAgICBgYHN0cihlbmNvZGluZz0nbmFtZV9vZl9lbmNvZGluZycpYGAKLWBgJ2V0IydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgdHlwZXM9J2J5dGVzIGJ5dGVhcnJheSBzdHInLCBsZW5ndGg9VHJ1ZSlgYAotYGAnZXQnYGAgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IHN0cicpYGAKK2BgJ2VzIydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgemVyb2VzPVRydWUpYGAKK2BgJ2V0J2BgICAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9KWBgCitgYCdldCMnYGAgICBgYHN0cihlbmNvZGluZz0nbmFtZV9vZl9lbmNvZGluZycsIGFjY2VwdD17Ynl0ZXMsIGJ5dGVhcnJheSwgc3RyfSwgemVyb2VzPVRydWUpYGAKIGBgJ2YnYGAgICAgIGBgZmxvYXRgYAogYGAnaCdgYCAgICAgYGBzaG9ydGBgCiBgYCdIJ2BgICAgICBgYHVuc2lnbmVkX3Nob3J0KGJpdHdpc2U9VHJ1ZSlgYApAQCAtODMwLDI5ICs4MjYsMzAgQEAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAogYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdsJ2BgICAgICBgYGxvbmdgYAogYGAnTCdgYCAgICAgYGBQWV9MT05HX0xPTkdgYAogYGAnbidgYCAgICAgYGBQeV9zc2l6ZV90YGAKK2BgJ08nYGAgICAgIGBgb2JqZWN0YGAKIGBgJ08hJ2BgICAgIGBgb2JqZWN0KHN1YmNsYXNzX29mPScmUHlTb21ldGhpbmdfVHlwZScpYGAKIGBgJ08mJ2BgICAgIGBgb2JqZWN0KGNvbnZlcnRlcj0nbmFtZV9vZl9jX2Z1bmN0aW9uJylgYAotYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAncCdgYCAgICAgYGBib29sYGAKLWBgJ3MjJ2BgICAgIGBgc3RyKGxlbmd0aD1UcnVlKWBgCiBgYCdTJ2BgICAgICBgYFB5Qnl0ZXNPYmplY3RgYAogYGAncydgYCAgICAgYGBzdHJgYAotYGAncyonYGAgICAgYGBQeV9idWZmZXIodHlwZXM9J3N0ciBieXRlcyBieXRlYXJyYXkgYnVmZmVyJylgYAotYGAndSMnYGAgICAgYGBQeV9VTklDT0RFKGxlbmd0aD1UcnVlKWBgCi1gYCd1J2BgICAgICBgYFB5X1VOSUNPREVgYAorYGAncyMnYGAgICAgYGBzdHIoemVyb2VzPVRydWUpYGAKK2BgJ3MqJ2BgICAgIGBgUHlfYnVmZmVyKGFjY2VwdD17YnVmZmVyLCBzdHJ9KWBgCiBgYCdVJ2BgICAgICBgYHVuaWNvZGVgYAotYGAndyonYGAgICAgYGBQeV9idWZmZXIodHlwZXM9J2J5dGVhcnJheSByd2J1ZmZlcicpYGAKLWBgJ3kjJ2BgICAgIGBgc3RyKHR5cGVzPSdieXRlcycsIGxlbmd0aD1UcnVlKWBgCitgYCd1J2BgICAgICBgYFB5X1VOSUNPREVgYAorYGAndSMnYGAgICAgYGBQeV9VTklDT0RFKHplcm9lcz1UcnVlKWBgCitgYCd3KidgYCAgICBgYFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSlgYAogYGAnWSdgYCAgICAgYGBQeUJ5dGVBcnJheU9iamVjdGBgCi1gYCd5J2BgICAgICBgYHN0cih0eXBlcz0nYnl0ZXMnKWBgCitgYCd5J2BgICAgICBgYHN0cihhY2NlcHQ9e2J5dGVzfSlgYAorYGAneSMnYGAgICAgYGBzdHIoYWNjZXB0PXtyb2J1ZmZlcn0sIHplcm9lcz1UcnVlKWBgCiBgYCd5KidgYCAgICBgYFB5X2J1ZmZlcmBgCi1gYCdaIydgYCAgICBgYFB5X1VOSUNPREUobnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpYGAKLWBgJ3ojJ2BgICAgIGBgc3RyKG51bGxhYmxlPVRydWUsIGxlbmd0aD1UcnVlKWBgCi1gYCdaJ2BgICAgICBgYFB5X1VOSUNPREUobnVsbGFibGU9VHJ1ZSlgYAotYGAneidgYCAgICAgYGBzdHIobnVsbGFibGU9VHJ1ZSlgYAotYGAneionYGAgICAgYGBQeV9idWZmZXIodHlwZXM9J3N0ciBieXRlcyBieXRlYXJyYXkgYnVmZmVyJywgbnVsbGFibGU9VHJ1ZSlgYAorYGAnWidgYCAgICAgYGBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pYGAKK2BgJ1ojJ2BgICAgIGBgUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSlgYAorYGAneidgYCAgICAgYGBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSlgYAorYGAneiMnYGAgICAgYGBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSwgemVyb2VzPVRydWUpYGAKK2BgJ3oqJ2BgICAgIGBgUHlfYnVmZmVyKGFjY2VwdD17YnVmZmVyLCBzdHIsIE5vbmVUeXBlfSlgYAogPT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIEFzIGFuIGV4YW1wbGUsIGhlcmUncyBvdXIgc2FtcGxlIGBgcGlja2xlLlBpY2tsZXIuZHVtcGBgIHVzaW5nIHRoZSBwcm9wZXIKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdCBiL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAppbmRleCAxOTY5YjMyLi45NDVhMjQwIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKKysrIGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CkBAIC00ODEsMTAgKzQ4MSwxMCBAQAogWW91IGNvdWxkIGVxdWFsbHkgd3JpdGUgYGBmb3IgaSBpbiBnZW5lcmF0ZV9pbnRzKDUpYGAsIG9yIGBgYSxiLGMgPQogZ2VuZXJhdGVfaW50cygzKWBgLgogCi1JbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGBgcmV0dXJuIHZhbHVlYGAgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KLWBgcmFpc2UgU3RvcEl0ZXJhdGlvbih2YWx1ZSlgYC4gIElmIG5vIHZhbHVlIGlzIHJldHVybmVkIG9yIHRoZSBib3R0b20gb2YgdGhlCi1mdW5jdGlvbiBpcyByZWFjaGVkLCB0aGUgcHJvY2Vzc2lvbiBvZiB2YWx1ZXMgZW5kcyBhbmQgdGhlIGdlbmVyYXRvciBjYW5ub3QKLXJldHVybiBhbnkgZnVydGhlciB2YWx1ZXMuCitJbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGBgcmV0dXJuIHZhbHVlYGAgY2F1c2VzIGBgU3RvcEl0ZXJhdGlvbih2YWx1ZSlgYAordG8gYmUgcmFpc2VkIGZyb20gdGhlIDptZXRoOmB+Z2VuZXJhdG9yLl9fbmV4dF9fYCBtZXRob2QuICBPbmNlIHRoaXMgaGFwcGVucywgb3IKK3RoZSBib3R0b20gb2YgdGhlIGZ1bmN0aW9uIGlzIHJlYWNoZWQsIHRoZSBwcm9jZXNzaW9uIG9mIHZhbHVlcyBlbmRzIGFuZCB0aGUKK2dlbmVyYXRvciBjYW5ub3QgeWllbGQgYW55IGZ1cnRoZXIgdmFsdWVzLgogCiBZb3UgY291bGQgYWNoaWV2ZSB0aGUgZWZmZWN0IG9mIGdlbmVyYXRvcnMgbWFudWFsbHkgYnkgd3JpdGluZyB5b3VyIG93biBjbGFzcwogYW5kIHN0b3JpbmcgYWxsIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGdlbmVyYXRvciBhcyBpbnN0YW5jZSB2YXJpYWJsZXMuICBGb3IKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdCBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAppbmRleCA2MzA1ZDI0Li44MTNiYzBmIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKKysrIGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CkBAIC0zMjUsNiArMzI1LDE1IEBACiAKICAgICBNYWluVGhyZWFkOiBMb29rIG91dCEKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFByaW9yIHRvIFB5dGhvbiAzLjUsIHRoZSA6Y2xhc3M6YFF1ZXVlTGlzdGVuZXJgIGFsd2F5cyBwYXNzZWQgZXZlcnkgbWVzc2FnZQorICAgcmVjZWl2ZWQgZnJvbSB0aGUgcXVldWUgdG8gZXZlcnkgaGFuZGxlciBpdCB3YXMgaW5pdGlhbGl6ZWQgd2l0aC4gKFRoaXMgd2FzCisgICBiZWNhdXNlIGl0IHdhcyBhc3N1bWVkIHRoYXQgbGV2ZWwgZmlsdGVyaW5nIHdhcyBhbGwgZG9uZSBvbiB0aGUgb3RoZXIgc2lkZSwKKyAgIHdoZXJlIHRoZSBxdWV1ZSBpcyBmaWxsZWQuKSBGcm9tIDMuNSBvbndhcmRzLCB0aGlzIGJlaGF2aW91ciBjYW4gYmUgY2hhbmdlZAorICAgYnkgcGFzc2luZyBhIGtleXdvcmQgYXJndW1lbnQgYGByZXNwZWN0X2hhbmRsZXJfbGV2ZWw9VHJ1ZWBgIHRvIHRoZQorICAgbGlzdGVuZXIncyBjb25zdHJ1Y3Rvci4gV2hlbiB0aGlzIGlzIGRvbmUsIHRoZSBsaXN0ZW5lciBjb21wYXJlcyB0aGUgbGV2ZWwKKyAgIG9mIGVhY2ggbWVzc2FnZSB3aXRoIHRoZSBoYW5kbGVyJ3MgbGV2ZWwsIGFuZCBvbmx5IHBhc3NlcyBhIG1lc3NhZ2UgdG8gYQorICAgaGFuZGxlciBpZiBpdCdzIGFwcHJvcHJpYXRlIHRvIGRvIHNvLgogCiAuLiBfbmV0d29yay1sb2dnaW5nOgogCkBAIC0xNjgwLDcgKzE2ODksNyBAQAogCiAgICAgZGVmIG1haW4oKToKICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLklORk8sIGZvcm1hdD0nJShtZXNzYWdlKXMnKQotICAgICAgICBsb2dnaW5nLmluZm8oXygnbWVzc2FnZSAxJywgc2V0X3ZhbHVlPXNldChbMSwgMiwgM10pLCBzbm93bWFuPSdcdTI2MDMnKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKF8oJ21lc3NhZ2UgMScsIHNldF92YWx1ZT17MSwgMiwgM30sIHNub3dtYW49J1x1MjYwMycpKQogCiAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcHlwb3J0aW5nLnJzdCBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CmluZGV4IDVlODc1Y2QuLmEyYWFmMzYgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CisrKyBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CkBAIC0yMDcsMTMgKzIwNywxMiBAQAogdGFibGUgbGlzdHMgdGhlICoqdW5pcXVlKiogbWV0aG9kcyBvZiBlYWNoIGRhdGEgdHlwZSBhY3Jvc3MgUHl0aG9uIDIgJiAzCiAoZS5nLiwgdGhlIGBgZGVjb2RlKClgYCBtZXRob2QgaXMgdXNhYmxlIG9uIHRoZSBlcXVpdmFsZW50IGJpbmFyeSBkYXRhIHR5cGUgaW4KIGVpdGhlciBQeXRob24gMiBvciAzLCBidXQgaXQgY2FuJ3QgYmUgdXNlZCBieSB0aGUgdGV4dCBkYXRhIHR5cGUgY29uc2lzdGVudGx5Ci1iZXR3ZWVuIFB5dGhvbiAyIGFuZCAzIGJlY2F1c2UgYGBzdHJgYCBpbiBQeXRob24gMyBkb2Vzbid0IGhhdmUgdGhlIG1ldGhvZCkuCitiZXR3ZWVuIFB5dGhvbiAyIGFuZCAzIGJlY2F1c2UgYGBzdHJgYCBpbiBQeXRob24gMyBkb2Vzbid0IGhhdmUgdGhlIG1ldGhvZCkuIERvCitub3RlIHRoYXQgYXMgb2YgUHl0aG9uIDMuNSB0aGUgYGBfX21vZF9fYGAgbWV0aG9kIHdhcyBhZGRlZCB0byB0aGUgYnl0ZXMgdHlwZS4KIAogPT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PQogKipUZXh0IGRhdGEqKiAgICAgICAgICAgICoqQmluYXJ5IGRhdGEqKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotX19tb2RfXyAoYGAlYGAgb3BlcmF0b3IpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBcICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBlbmNvZGUKQEAgLTM0OCwxMCArMzQ3LDEyIEBACiBQeXRob24gMiBvciAzIHN1cHBvcnQuCiAKIFlvdSBtYXkgYWxzbyB3YW50IHRvIHVzZSB1c2UgdGhlIGBgLWJiYGAgZmxhZyB3aXRoIHRoZSBQeXRob24gMyBpbnRlcnByZXRlciB0bwotdHJpZ2dlciBhbiBleGNlcHRpb24gd2hlbiB5b3UgYXJlIGNvbXBhcmluZyBieXRlcyB0byBzdHJpbmdzLiBVc3VhbGx5IGl0J3MKLXNpbXBseSBgYEZhbHNlYGAsIGJ1dCBpZiB5b3UgbWFkZSBhIG1pc3Rha2UgaW4geW91ciBzZXBhcmF0aW9uIG9mIHRleHQvYmluYXJ5Ci1kYXRhIGhhbmRsaW5nIHlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGNvbXBhcmluZyB0ZXh0IGFuZCBiaW5hcnkgZGF0YS4gVGhpcyBmbGFnCi13aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoYXQgb2NjdXJzIHRvIGhlbHAgdHJhY2sgZG93biBzdWNoIGNhc2VzLgordHJpZ2dlciBhbiBleGNlcHRpb24gd2hlbiB5b3UgYXJlIGNvbXBhcmluZyBieXRlcyB0byBzdHJpbmdzIG9yIGJ5dGVzIHRvIGFuIGludAorKHRoZSBsYXR0ZXIgaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIGluIFB5dGhvbiAzLjUpLiBCeSBkZWZhdWx0IHR5cGUtZGlmZmVyaW5nCitjb21wYXJpc29ucyBzaW1wbHkgcmV0dXJuIGBgRmFsc2VgYCwgYnV0IGlmIHlvdSBtYWRlIGEgbWlzdGFrZSBpbiB5b3VyCitzZXBhcmF0aW9uIG9mIHRleHQvYmluYXJ5IGRhdGEgaGFuZGxpbmcgb3IgaW5kZXhpbmcgb24gYnl0ZXMgeW91IHdvdWxkbid0IGVhc2lseQorZmluZCB0aGUgbWlzdGFrZS4gVGhpcyBmbGFnIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlc2Uga2luZHMgb2YKK2NvbXBhcmlzb25zIG9jY3VyLCBtYWtpbmcgdGhlIG1pc3Rha2UgbXVjaCBlYXNpZXIgdG8gdHJhY2sgZG93bi4KIAogQW5kIHRoYXQncyBtb3N0bHkgaXQhIEF0IHRoaXMgcG9pbnQgeW91ciBjb2RlIGJhc2UgaXMgY29tcGF0aWJsZSB3aXRoIGJvdGgKIFB5dGhvbiAyIGFuZCAzIHNpbXVsdGFuZW91c2x5LiBZb3VyIHRlc3Rpbmcgd2lsbCBhbHNvIGJlIHNldCB1cCBzbyB0aGF0IHlvdQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3JlZ2V4LnJzdCBiL0RvYy9ob3d0by9yZWdleC5yc3QKaW5kZXggOWFlMDRkNy4uYWQyYzZhYiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3JlZ2V4LnJzdAorKysgYi9Eb2MvaG93dG8vcmVnZXgucnN0CkBAIC0xMTM4LDcgKzExMzgsNyBAQAogCiBJZiAqcmVwbGFjZW1lbnQqIGlzIGEgc3RyaW5nLCBhbnkgYmFja3NsYXNoIGVzY2FwZXMgaW4gaXQgYXJlIHByb2Nlc3NlZC4gIFRoYXQKIGlzLCBgYFxuYGAgaXMgY29udmVydGVkIHRvIGEgc2luZ2xlIG5ld2xpbmUgY2hhcmFjdGVyLCBgYFxyYGAgaXMgY29udmVydGVkIHRvIGEKLWNhcnJpYWdlIHJldHVybiwgYW5kIHNvIGZvcnRoLiBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFxqYGAgYXJlIGxlZnQgYWxvbmUuCitjYXJyaWFnZSByZXR1cm4sIGFuZCBzbyBmb3J0aC4gVW5rbm93biBlc2NhcGVzIHN1Y2ggYXMgYGBcJmBgIGFyZSBsZWZ0IGFsb25lLgogQmFja3JlZmVyZW5jZXMsIHN1Y2ggYXMgYGBcNmBgLCBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgdGhlCiBjb3JyZXNwb25kaW5nIGdyb3VwIGluIHRoZSBSRS4gIFRoaXMgbGV0cyB5b3UgaW5jb3Jwb3JhdGUgcG9ydGlvbnMgb2YgdGhlCiBvcmlnaW5hbCB0ZXh0IGluIHRoZSByZXN1bHRpbmcgcmVwbGFjZW1lbnQgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0IGIvRG9jL2hvd3RvL3VuaWNvZGUucnN0CmluZGV4IGI0OWFjMzkuLmVlMzFhOWMgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by91bmljb2RlLnJzdAorKysgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKQEAgLTI4MCw4ICsyODAsOSBAQAogVGhlICplcnJvcnMqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgcmVzcG9uc2Ugd2hlbiB0aGUgaW5wdXQgc3RyaW5nIGNhbid0IGJlCiBjb252ZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBlbmNvZGluZydzIHJ1bGVzLiAgTGVnYWwgdmFsdWVzIGZvciB0aGlzIGFyZ3VtZW50IGFyZQogYGAnc3RyaWN0J2BgIChyYWlzZSBhIDpleGM6YFVuaWNvZGVEZWNvZGVFcnJvcmAgZXhjZXB0aW9uKSwgYGAncmVwbGFjZSdgYCAodXNlCi1gYFUrRkZGRGBgLCBgYFJFUExBQ0VNRU5UIENIQVJBQ1RFUmBgKSwgb3IgYGAnaWdub3JlJ2BgIChqdXN0IGxlYXZlIHRoZQotY2hhcmFjdGVyIG91dCBvZiB0aGUgVW5pY29kZSByZXN1bHQpLgorYGBVK0ZGRkRgYCwgYGBSRVBMQUNFTUVOVCBDSEFSQUNURVJgYCksIGBgJ2lnbm9yZSdgYCAoanVzdCBsZWF2ZSB0aGUKK2NoYXJhY3RlciBvdXQgb2YgdGhlIFVuaWNvZGUgcmVzdWx0KSwgb3IgYGAnYmFja3NsYXNocmVwbGFjZSdgYCAoaW5zZXJ0cyBhCitgYFx4Tk5gYCBlc2NhcGUgc2VxdWVuY2UpLgogVGhlIGZvbGxvd2luZyBleGFtcGxlcyBzaG93IHRoZSBkaWZmZXJlbmNlczo6CiAKICAgICA+Pj4gYidceDgwYWJjJy5kZWNvZGUoInV0Zi04IiwgInN0cmljdCIpICAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCkBAIC0yOTEsNiArMjkyLDggQEAKICAgICAgIGludmFsaWQgc3RhcnQgYnl0ZQogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAicmVwbGFjZSIpCiAgICAgJ1x1ZmZmZGFiYycKKyAgICA+Pj4gYidceDgwYWJjJy5kZWNvZGUoInV0Zi04IiwgImJhY2tzbGFzaHJlcGxhY2UiKQorICAgICdcXHg4MGFiYycKICAgICA+Pj4gYidceDgwYWJjJy5kZWNvZGUoInV0Zi04IiwgImlnbm9yZSIpCiAgICAgJ2FiYycKIApAQCAtMzI1LDggKzMyOCw5IEBACiA6bWV0aDpgfmJ5dGVzLmRlY29kZWAgbWV0aG9kIGJ1dCBzdXBwb3J0cyBhIGZldyBtb3JlIHBvc3NpYmxlIGhhbmRsZXJzLiBBcyB3ZWxsIGFzCiBgYCdzdHJpY3QnYGAsIGBgJ2lnbm9yZSdgYCwgYW5kIGBgJ3JlcGxhY2UnYGAgKHdoaWNoIGluIHRoaXMgY2FzZQogaW5zZXJ0cyBhIHF1ZXN0aW9uIG1hcmsgaW5zdGVhZCBvZiB0aGUgdW5lbmNvZGFibGUgY2hhcmFjdGVyKSwgdGhlcmUgaXMKLWFsc28gYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKGluc2VydHMgYW4gWE1MIGNoYXJhY3RlciByZWZlcmVuY2UpIGFuZAotYGBiYWNrc2xhc2hyZXBsYWNlYGAgKGluc2VydHMgYSBgYFx1Tk5OTmBgIGVzY2FwZSBzZXF1ZW5jZSkuCithbHNvIGBgJ3htbGNoYXJyZWZyZXBsYWNlJ2BgIChpbnNlcnRzIGFuIFhNTCBjaGFyYWN0ZXIgcmVmZXJlbmNlKSwKK2BgYmFja3NsYXNocmVwbGFjZWBgIChpbnNlcnRzIGEgYGBcdU5OTk5gYCBlc2NhcGUgc2VxdWVuY2UpIGFuZAorYGBuYW1lcmVwbGFjZWBgIChpbnNlcnRzIGEgYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlKS4KIAogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBkaWZmZXJlbnQgcmVzdWx0czo6CiAKQEAgLTM0Niw2ICszNTAsOCBAQAogICAgIGInJiM0MDk2MDthYmNkJiMxOTcyOycKICAgICA+Pj4gdS5lbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgIGInXFx1YTAwMGFiY2RcXHUwN2I0JworICAgID4+PiB1LmVuY29kZSgnYXNjaWknLCAnbmFtZXJlcGxhY2UnKQorICAgIGInXFxOe1lJIFNZTExBQkxFIElUfWFiY2RcXHUwN2I0JwogCiBUaGUgbG93LWxldmVsIHJvdXRpbmVzIGZvciByZWdpc3RlcmluZyBhbmQgYWNjZXNzaW5nIHRoZSBhdmFpbGFibGUKIGVuY29kaW5ncyBhcmUgZm91bmQgaW4gdGhlIDptb2Q6YGNvZGVjc2AgbW9kdWxlLiAgSW1wbGVtZW50aW5nIG5ldwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5LmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkuYwppbmRleCA4Zjc5ZmNmLi4xOWEyN2E4IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvbm9kZHkuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkuYwpAQCAtMzgsNyArMzgsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9ub2RkeSh2b2lkKSAKK1B5SW5pdF9ub2RkeSh2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCmluZGV4IDFjOTg2MGQuLjk4NmQ2NzAgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCisrKyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCkBAIC0xMyw3ICsxMyw3IEBACiAgICAgfQogCiAgICAgUHlfSW5pdGlhbGl6ZSgpOwotICAgIHBOYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYXJndlsxXSk7CisgICAgcE5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGFyZ3ZbMV0pOwogICAgIC8qIEVycm9yIGNoZWNraW5nIG9mIHBOYW1lIGxlZnQgb3V0ICovCiAKICAgICBwTW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHBOYW1lKTsKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmggYi9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oCmluZGV4IGZjYjg0NmEuLjVjOWY4ZjUgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmgKKysrIGIvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaApAQCAtOSw3ICs5LDcgQEAKICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICBzZXRhdHRyZnVuYyB0cF9zZXRhdHRyOwotICAgIHZvaWQgKnRwX3Jlc2VydmVkOworICAgIFB5QXN5bmNNZXRob2RzICp0cF9hc19hc3luYzsKICAgICByZXByZnVuYyB0cF9yZXByOwogCiAgICAgLyogTWV0aG9kIHN1aXRlcyBmb3Igc3RhbmRhcmQgY2xhc3NlcyAqLwpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGwvaW5kZXgucnN0IGIvRG9jL2luc3RhbGwvaW5kZXgucnN0CmluZGV4IDhmM2FkNzIuLjg3NmYzNTAgMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbC9pbmRleC5yc3QKQEAgLTM2MSw3ICszNjEsNyBAQAogVHlwZSBvZiBmaWxlICAgIEluc3RhbGxhdGlvbiBkaXJlY3RvcnkKID09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogbW9kdWxlcyAgICAgICAgIDpmaWxlOmB7dXNlcmJhc2V9XFxQeXRob257WFl9XFxzaXRlLXBhY2thZ2VzYAotc2NyaXB0cyAgICAgICAgIDpmaWxlOmB7dXNlcmJhc2V9XFxTY3JpcHRzYAorc2NyaXB0cyAgICAgICAgIDpmaWxlOmB7dXNlcmJhc2V9XFxQeXRob257WFl9XFxTY3JpcHRzYAogZGF0YSAgICAgICAgICAgIDpmaWxlOmB7dXNlcmJhc2V9YAogQyBoZWFkZXJzICAgICAgIDpmaWxlOmB7dXNlcmJhc2V9XFxQeXRob257WFl9XFxJbmNsdWRlXFx7ZGlzdG5hbWV9YAogPT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9fX2Z1dHVyZV9fLnJzdCBiL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0CmluZGV4IDcyZjI5NjMuLjczZDhiNmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0CisrKyBiL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0CkBAIC04Nyw2ICs4Nyw5IEBACiB8IHVuaWNvZGVfbGl0ZXJhbHMgfCAyLjYuMGEyICAgICB8IDMuMCAgICAgICAgICB8IDpwZXA6YDMxMTJgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAqQnl0ZXMgbGl0ZXJhbHMgaW4gUHl0aG9uIDMwMDAqICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGdlbmVyYXRvcl9zdG9wICAgfCAzLjUuMGIxICAgICB8IDMuNyAgICAgICAgICB8IDpwZXA6YDQ3OWA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAqU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycyogIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIAogLi4gc2VlYWxzbzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKaW5kZXggMDY3ZmI4Zi4uNzIwOTVhOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdApAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5IZWxwRm9ybWF0dGVyLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycz0nLScsIGZyb21maWxlX3ByZWZpeF9jaGFycz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50X2RlZmF1bHQ9Tm9uZSwgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUsIGFsbG93X2FiYnJldj1UcnVlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0LiBBbGwgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkCiAgICBhcyBrZXl3b3JkIGFyZ3VtZW50cy4gRWFjaCBwYXJhbWV0ZXIgaGFzIGl0cyBvd24gbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbgpAQCAtMTY5LDYgKzE2OSwxMiBAQAogCiAgICAqIGFkZF9oZWxwXyAtIEFkZCBhIC1oLy0taGVscCBvcHRpb24gdG8gdGhlIHBhcnNlciAoZGVmYXVsdDogYGBUcnVlYGApCiAKKyAgICogYWxsb3dfYWJicmV2XyAtIEFsbG93cyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgaWYgdGhlCisgICAgIGFiYnJldmlhdGlvbiBpcyB1bmFtYmlndW91cy4gKGRlZmF1bHQ6IGBgVHJ1ZWBgKQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKmFsbG93X2FiYnJldiogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSBob3cgZWFjaCBvZiB0aGVzZSBhcmUgdXNlZC4KIAogCkBAIC01MTgsNiArNTI0LDI2IEBACiAgICA+Pj4gcGFyc2VyLnBhcnNlX2FyZ3MoW10pCiAgICBOYW1lc3BhY2UoKQogCisuLiBfYWxsb3dfYWJicmV2OgorCithbGxvd19hYmJyZXYKK15eXl5eXl5eXl5eXgorCitOb3JtYWxseSwgd2hlbiB5b3UgcGFzcyBhbiBhcmd1bWVudCBsaXN0IHRvIHRoZQorOm1ldGg6YH5Bcmd1bWVudFBhcnNlci5wYXJzZV9hcmdzYCBtZXRob2Qgb2YgYSA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCwKK2l0IDpyZWY6YHJlY29nbml6ZXMgYWJicmV2aWF0aW9ucyA8cHJlZml4LW1hdGNoaW5nPmAgb2YgbG9uZyBvcHRpb25zLgorCitUaGlzIGZlYXR1cmUgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgYGBhbGxvd19hYmJyZXZgYCB0byBgYEZhbHNlYGA6OgorCisgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIGFsbG93X2FiYnJldj1GYWxzZSkKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvb2JhcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICA+Pj4gcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1mb29ubGV5JywgYWN0aW9uPSdzdG9yZV9mYWxzZScpCisgICA+Pj4gcGFyc2VyLnBhcnNlX2FyZ3MoWyctLWZvb24nXSkKKyAgIHVzYWdlOiBQUk9HIFstaF0gWy0tZm9vYmFyXSBbLS1mb29ubGV5XQorICAgUFJPRzogZXJyb3I6IHVucmVjb2duaXplZCBhcmd1bWVudHM6IC0tZm9vbgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiBjb25mbGljdF9oYW5kbGVyCiBeXl5eXl5eXl5eXl5eXl5eCkBAIC0xNDEwLDkgKzE0MzYsOSBAQAogQXJndW1lbnQgYWJicmV2aWF0aW9ucyAocHJlZml4IG1hdGNoaW5nKQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1UaGUgOm1ldGg6YH5Bcmd1bWVudFBhcnNlci5wYXJzZV9hcmdzYCBtZXRob2QgYWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZQotYWJicmV2aWF0ZWQgdG8gYSBwcmVmaXgsIGlmIHRoZSBhYmJyZXZpYXRpb24gaXMgdW5hbWJpZ3VvdXMgKHRoZSBwcmVmaXggbWF0Y2hlcwotYSB1bmlxdWUgb3B0aW9uKTo6CitUaGUgOm1ldGg6YH5Bcmd1bWVudFBhcnNlci5wYXJzZV9hcmdzYCBtZXRob2QgOnJlZjpgYnkgZGVmYXVsdCA8YWxsb3dfYWJicmV2PmAKK2FsbG93cyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdG8gYSBwcmVmaXgsIGlmIHRoZSBhYmJyZXZpYXRpb24gaXMKK3VuYW1iaWd1b3VzICh0aGUgcHJlZml4IG1hdGNoZXMgYSB1bmlxdWUgb3B0aW9uKTo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYmFjb24nKQpAQCAtMTQyNiw2ICsxNDUyLDcgQEAKICAgIFBST0c6IGVycm9yOiBhbWJpZ3VvdXMgb3B0aW9uOiAtYmEgY291bGQgbWF0Y2ggLWJhZGdlciwgLWJhY29uCiAKIEFuIGVycm9yIGlzIHByb2R1Y2VkIGZvciBhcmd1bWVudHMgdGhhdCBjb3VsZCBwcm9kdWNlIG1vcmUgdGhhbiBvbmUgb3B0aW9ucy4KK1RoaXMgZmVhdHVyZSBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyA6cmVmOmBhbGxvd19hYmJyZXZgIHRvIGBgRmFsc2VgYC4KIAogCiBCZXlvbmQgYGBzeXMuYXJndmBgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKaW5kZXggYzZmYTA2MS4uNzk0ZGE4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdApAQCAtMTQ3LDQwICsxNDcsNiBAQAogICAgYnkgdGhlIGNoYW5uZWwgYWZ0ZXIgOm1ldGg6YGZvdW5kX3Rlcm1pbmF0b3JgIGlzIGNhbGxlZC4KIAogCi1hc3luY2hhdCAtIEF1eGlsaWFyeSBDbGFzc2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gY2xhc3M6OiBmaWZvKGxpc3Q9Tm9uZSkKLQotICAgQSA6Y2xhc3M6YGZpZm9gIGhvbGRpbmcgZGF0YSB3aGljaCBoYXMgYmVlbiBwdXNoZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGJ1dAotICAgbm90IHlldCBwb3BwZWQgZm9yIHdyaXRpbmcgdG8gdGhlIGNoYW5uZWwuICBBIDpjbGFzczpgZmlmb2AgaXMgYSBsaXN0IHVzZWQKLSAgIHRvIGhvbGQgZGF0YSBhbmQvb3IgcHJvZHVjZXJzIHVudGlsIHRoZXkgYXJlIHJlcXVpcmVkLiAgSWYgdGhlICpsaXN0KgotICAgYXJndW1lbnQgaXMgcHJvdmlkZWQgdGhlbiBpdCBzaG91bGQgY29udGFpbiBwcm9kdWNlcnMgb3IgZGF0YSBpdGVtcyB0byBiZQotICAgd3JpdHRlbiB0byB0aGUgY2hhbm5lbC4KLQotCi0gICAuLiBtZXRob2Q6OiBpc19lbXB0eSgpCi0KLSAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgYW5kIG9ubHkgaWYgdGhlIGZpZm8gaXMgZW1wdHkuCi0KLQotICAgLi4gbWV0aG9kOjogZmlyc3QoKQotCi0gICAgICBSZXR1cm5zIHRoZSBsZWFzdC1yZWNlbnRseSA6bWV0aDpgcHVzaGBcIGVkIGl0ZW0gZnJvbSB0aGUgZmlmby4KLQotCi0gICAuLiBtZXRob2Q6OiBwdXNoKGRhdGEpCi0KLSAgICAgIEFkZHMgdGhlIGdpdmVuIGRhdGEgKHdoaWNoIG1heSBiZSBhIHN0cmluZyBvciBhIHByb2R1Y2VyIG9iamVjdCkgdG8gdGhlCi0gICAgICBwcm9kdWNlciBmaWZvLgotCi0KLSAgIC4uIG1ldGhvZDo6IHBvcCgpCi0KLSAgICAgIElmIHRoZSBmaWZvIGlzIG5vdCBlbXB0eSwgcmV0dXJucyBgYFRydWUsIGZpcnN0KClgYCwgZGVsZXRpbmcgdGhlIHBvcHBlZAotICAgICAgaXRlbS4gIFJldHVybnMgYGBGYWxzZSwgTm9uZWBgIGZvciBhbiBlbXB0eSBmaWZvLgotCi0KIC4uIF9hc3luY2hhdC1leGFtcGxlOgogCiBhc3luY2hhdCBFeGFtcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3BzLnJzdAppbmRleCBhZmI4YjlmLi5hZTNiZjkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wcy5yc3QKQEAgLTEwMCw4ICsxMDAsNiBAQAogCiA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCBzcGVjaWZpYyBsaW1pdHM6CiAKLS0gU1NMIGlzIG5vdCBzdXBwb3J0ZWQ6IDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfY29ubmVjdGlvbmAgYW5kCi0gIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyYCBjYW5ub3QgYmUgdXNlZCB3aXRoIFNTTCBmb3IgZXhhbXBsZQogLSA6bWV0aDpgfkJhc2VFdmVudExvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50YCAoVURQKSBpcyBub3Qgc3VwcG9ydGVkCiAtIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5hZGRfcmVhZGVyYCBhbmQgOm1ldGg6YH5CYXNlRXZlbnRMb29wLmFkZF93cml0ZXJgIGFyZQogICBub3Qgc3VwcG9ydGVkCkBAIC0xMTIsNiArMTEwLDEwIEBACiA8aHR0cDovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9IaWdoX1ByZWNpc2lvbl9FdmVudF9UaW1lcj5gXykgYW5kIG9uIHRoZSBXaW5kb3dzCiBjb25maWd1cmF0aW9uLiBTZWUgOnJlZjpgYXN5bmNpbyBkZWxheWVkIGNhbGxzIDxhc3luY2lvLWRlbGF5ZWQtY2FsbHM+YC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAgbm93IHN1cHBvcnRzIFNTTC4KKwogCiBNYWMgT1MgWAogXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKaW5kZXggMzM3MDY3Mi4uZjExYzA5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKQEAgLTgsNyArOCw2IEBACiAqIDpjbGFzczpgUXVldWVgCiAqIDpjbGFzczpgUHJpb3JpdHlRdWV1ZWAKICogOmNsYXNzOmBMaWZvUXVldWVgCi0qIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAKIAogYXN5bmNpbyBxdWV1ZSBBUEkgd2FzIGRlc2lnbmVkIHRvIGJlIGNsb3NlIHRvIGNsYXNzZXMgb2YgdGhlIDptb2Q6YHF1ZXVlYAogbW9kdWxlICg6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWAsIDpjbGFzczpgfnF1ZXVlLlByaW9yaXR5UXVldWVgLApAQCAtMTQ0LDE2ICsxNDMsNiBAQAogICAgIGZpcnN0LgogCiAKLUpvaW5hYmxlUXVldWUKLV5eXl5eXl5eXl5eXl4KLQotLi4gY2xhc3M6OiBKb2luYWJsZVF1ZXVlCi0KLSAgIERlcHJlY2F0ZWQgYWxpYXMgZm9yIDpjbGFzczpgUXVldWVgLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy40LjQKLQotCiBFeGNlcHRpb25zCiBeXl5eXl5eXl5eCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QgYi9Eb2MvbGlicmFyeS9iejIucnN0CmluZGV4IDQ4OGNkYTUuLjFiOGQ5Y2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYnoyLnJzdApAQCAtMTIwLDYgKzEyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCisgICAgICBgYE5vbmVgYC4KKwogCiBJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYyLDE1ICsxNjYsMzIgQEAKICAgICAgIHlvdSBuZWVkIHRvIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAsCiAgICAgICB5b3UgbXVzdCB1c2UgYSBuZXcgZGVjb21wcmVzc29yIGZvciBlYWNoIHN0cmVhbS4KIAotICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhKQorICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhLCBtYXhfbGVuZ3RoPS0xKQogCi0gICAgICBQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQKLSAgICAgIGRhdGEgaWYgcG9zc2libGUsIG9yIGFuIGVtcHR5IGJ5dGUgc3RyaW5nIG90aGVyd2lzZS4KKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApLCByZXR1cm5pbmcKKyAgICAgIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLiBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQKKyAgICAgIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUKKyAgICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvdXRwdXQgb2YgYW55CisgICAgICBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCiAKLSAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCi0gICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKLSAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKyAgICAgIElmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKgorICAgICAgYnl0ZXMgb2YgZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlcgorICAgICAgb3V0cHV0IGNhbiBiZSBwcm9kdWNlZCwgdGhlIDphdHRyOmB+Lm5lZWRzX2lucHV0YCBhdHRyaWJ1dGUgd2lsbAorICAgICAgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dCBjYWxsIHRvCisgICAgICA6bWV0aDpgfi5kZWNvbXByZXNzYCBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYGBiJydgYCB0byBvYnRhaW4KKyAgICAgIG1vcmUgb2YgdGhlIG91dHB1dC4KIAorICAgICAgSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIKKyAgICAgIGJlY2F1c2UgdGhpcyB3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZQorICAgICAgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlCisgICAgICB3aWxsIGJlIHNldCB0byBgYFRydWVgYC4KKworICAgICAgQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAorICAgICAgcmFpc2VzIGFuIGBFT0ZFcnJvcmAuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZQorICAgICAgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgfi51bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgQWRkZWQgdGhlICptYXhfbGVuZ3RoKiBwYXJhbWV0ZXIuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGVvZgogCkBAIC0xODYsNiArMjA3LDEzIEBACiAgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGhhcyBiZWVuCiAgICAgICByZWFjaGVkLCBpdHMgdmFsdWUgd2lsbCBiZSBgYGInJ2BgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBuZWVkc19pbnB1dAorCisgICAgICBgYEZhbHNlYGAgaWYgdGhlIDptZXRoOmAuZGVjb21wcmVzc2AgbWV0aG9kIGNhbiBwcm92aWRlIG1vcmUKKyAgICAgIGRlY29tcHJlc3NlZCBkYXRhIGJlZm9yZSByZXF1aXJpbmcgbmV3IHVuY29tcHJlc3NlZCBpbnB1dC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NnaS5yc3QgYi9Eb2MvbGlicmFyeS9jZ2kucnN0CmluZGV4IGZhMTMxNDUuLjBhOWU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NnaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY2dpLnJzdApAQCAtMTU3LDYgKzE1Nyw5IEBACiAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawogICAgICAgICAgICBsaW5lY291bnQgPSBsaW5lY291bnQgKyAxCiAKKzpjbGFzczpgRmllbGRTdG9yYWdlYCBvYmplY3RzIGFsc28gc3VwcG9ydCBiZWluZyB1c2VkIGluIGEgOmtleXdvcmQ6YHdpdGhgCitzdGF0ZW1lbnQsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjbG9zZSB0aGVtIHdoZW4gZG9uZS4KKwogSWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgd2hlbiBvYnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGFuIHVwbG9hZGVkIGZpbGUKIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgdXNlciBpbnRlcnJ1cHRzIHRoZSBmb3JtIHN1Ym1pc3Npb24gYnkgY2xpY2tpbmcgb24KIGEgQmFjayBvciBDYW5jZWwgYnV0dG9uKSB0aGUgOmF0dHI6YH5GaWVsZFN0b3JhZ2UuZG9uZWAgYXR0cmlidXRlIG9mIHRoZQpAQCAtMTgyLDYgKzE4NSwxMCBAQAogICAgVGhlIDphdHRyOmB+RmllbGRTdG9yYWdlLmZpbGVgIGF0dHJpYnV0ZSBpcyBhdXRvbWF0aWNhbGx5IGNsb3NlZCB1cG9uIHRoZQogICAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIHRoZSBjcmVhdGluZyA6Y2xhc3M6YEZpZWxkU3RvcmFnZWAgaW5zdGFuY2UuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIHRvIHRoZQorICAgOmNsYXNzOmBGaWVsZFN0b3JhZ2VgIGNsYXNzLgorCiAKIEhpZ2hlciBMZXZlbCBJbnRlcmZhY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdCBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAppbmRleCBhOTgxZDk0Li5hYjYxOWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CkBAIC0yMDcsNiArMjA3LDM4IEBACiAgICBhbmQgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAogCisuLiBmdW5jdGlvbjo6IGlzY2xvc2UoYSwgYiwgKiwgcmVsX3RvbD0xZS0wOSwgYWJzX3RvbD0wLjApCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdmFsdWVzICphKiBhbmQgKmIqIGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIGFuZAorICAgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjbG9zZSBpcyBkZXRlcm1pbmVkIGFjY29yZGluZyB0bworICAgZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCisKKyAgICpyZWxfdG9sKiBpcyB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIC0tIGl0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZQorICAgYmV0d2VlbiAqYSogYW5kICpiKiwgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZSBvZiAqYSogb3IgKmIqLgorICAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIHRvbGVyYW5jZSBvZiA1JSwgcGFzcyBgYHJlbF90b2w9MC4wNWBgLiAgVGhlIGRlZmF1bHQKKyAgIHRvbGVyYW5jZSBpcyBgYDFlLTA5YGAsIHdoaWNoIGFzc3VyZXMgdGhhdCB0aGUgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUKKyAgIHdpdGhpbiBhYm91dCA5IGRlY2ltYWwgZGlnaXRzLiAgKnJlbF90b2wqIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICphYnNfdG9sKiBpcyB0aGUgbWluaW11bSBhYnNvbHV0ZSB0b2xlcmFuY2UgLS0gdXNlZnVsIGZvciBjb21wYXJpc29ucyBuZWFyCisgICB6ZXJvLiAqYWJzX3RvbCogbXVzdCBiZSBhdCBsZWFzdCB6ZXJvLgorCisgICBJZiBubyBlcnJvcnMgb2NjdXIsIHRoZSByZXN1bHQgd2lsbCBiZToKKyAgIGBgYWJzKGEtYikgPD0gbWF4KHJlbF90b2wgKiBtYXgoYWJzKGEpLCBhYnMoYikpLCBhYnNfdG9sKWBgLgorCisgICBUaGUgSUVFRSA3NTQgc3BlY2lhbCB2YWx1ZXMgb2YgYGBOYU5gYCwgYGBpbmZgYCwgYW5kIGBgLWluZmBgIHdpbGwgYmUKKyAgIGhhbmRsZWQgYWNjb3JkaW5nIHRvIElFRUUgcnVsZXMuICBTcGVjaWZpY2FsbHksIGBgTmFOYGAgaXMgbm90IGNvbnNpZGVyZWQKKyAgIGNsb3NlIHRvIGFueSBvdGhlciB2YWx1ZSwgaW5jbHVkaW5nIGBgTmFOYGAuICBgYGluZmBgIGFuZCBgYC1pbmZgYCBhcmUgb25seQorICAgY29uc2lkZXJlZCBjbG9zZSB0byB0aGVtc2VsdmVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpwZXA6YDQ4NWAgLS0gQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorCisKIENvbnN0YW50cwogLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNWI1ZDdjYy4uMjc1MjAxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTQsNiArNCw3IEBACiAuLiBtb2R1bGU6OiBjb2RlCiAgICA6c3lub3BzaXM6IEZhY2lsaXRpZXMgdG8gaW1wbGVtZW50IHJlYWQtZXZhbC1wcmludCBsb29wcy4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29kZS5weWAKIAogVGhlIGBgY29kZWBgIG1vZHVsZSBwcm92aWRlcyBmYWNpbGl0aWVzIHRvIGltcGxlbWVudCByZWFkLWV2YWwtcHJpbnQgbG9vcHMgaW4KIFB5dGhvbi4gIFR3byBjbGFzc2VzIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC0xMTMsNiArMTE0LDkgQEAKICAgIGJlY2F1c2UgaXQgaXMgd2l0aGluIHRoZSBpbnRlcnByZXRlciBvYmplY3QgaW1wbGVtZW50YXRpb24uIFRoZSBvdXRwdXQgaXMKICAgIHdyaXR0ZW4gYnkgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNSBUaGUgZnVsbCBjaGFpbmVkIHRyYWNlYmFjayBpcyBkaXNwbGF5ZWQgaW5zdGVhZAorICAgICAgb2YganVzdCB0aGUgcHJpbWFyeSB0cmFjZWJhY2suCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVJbnRlcnByZXRlci53cml0ZShkYXRhKQogCkBAIC0xNjUsNCArMTY5LDMgQEAKICAgIG5ld2xpbmUuICBXaGVuIHRoZSB1c2VyIGVudGVycyB0aGUgRU9GIGtleSBzZXF1ZW5jZSwgOmV4YzpgRU9GRXJyb3JgIGlzIHJhaXNlZC4KICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHJlYWRzIGZyb20gYGBzeXMuc3RkaW5gYDsgYSBzdWJjbGFzcyBtYXkgcmVwbGFjZSB0aGlzCiAgICB3aXRoIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0IGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAppbmRleCAxOWQ3MTkyLi43NDNjY2JhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKQEAgLTcsNiArNyw3IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogTWFyYy1BbmRyw6kgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IE1hcnRpbiB2LiBMw7Z3aXMgPG1hcnRpbkB2LmxvZXdpcy5kZT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29kZWNzLnB5YAogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFVuaWNvZGUKQEAgLTI5LDEwICszMCw5IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB3aXRoCiBhbnkgY29kZWM6CiAKLS4uIGZ1bmN0aW9uOjogZW5jb2RlKG9iaiwgW2VuY29kaW5nWywgZXJyb3JzXV0pCisuLiBmdW5jdGlvbjo6IGVuY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKIAotICAgRW5jb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4gVGhlIGRlZmF1bHQKLSAgIGVuY29kaW5nIGlzIGBgdXRmLThgYC4KKyAgIEVuY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouCiAKICAgICpFcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgdGhlIGRlc2lyZWQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUKICAgIGRlZmF1bHQgZXJyb3IgaGFuZGxlciBpcyBgYCdzdHJpY3QnYGAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZQpAQCAtNDAsMTAgKzQwLDkgQEAKICAgIDpleGM6YFVuaWNvZGVFbmNvZGVFcnJvcmApLiBSZWZlciB0byA6cmVmOmBjb2RlYy1iYXNlLWNsYXNzZXNgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBjb2RlYyBlcnJvciBoYW5kbGluZy4KIAotLi4gZnVuY3Rpb246OiBkZWNvZGUob2JqLCBbZW5jb2RpbmdbLCBlcnJvcnNdXSkKKy4uIGZ1bmN0aW9uOjogZGVjb2RlKG9iaiwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQogCi0gICBEZWNvZGVzICpvYmoqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciAqZW5jb2RpbmcqLiBUaGUgZGVmYXVsdAotICAgZW5jb2RpbmcgaXMgYGB1dGYtOGBgLgorICAgRGVjb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4KIAogICAgKkVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCB0aGUgZGVzaXJlZCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZQogICAgZGVmYXVsdCBlcnJvciBoYW5kbGVyIGlzIGBgJ3N0cmljdCdgYCBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlCkBAIC0xMDQsNyArMTAzLDYgQEAKIFRvIHNpbXBsaWZ5IGFjY2VzcyB0byB0aGUgdmFyaW91cyBjb2RlYyBjb21wb25lbnRzLCB0aGUgbW9kdWxlIHByb3ZpZGVzCiB0aGVzZSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyB3aGljaCB1c2UgOmZ1bmM6YGxvb2t1cGAgZm9yIHRoZSBjb2RlYyBsb29rdXA6CiAKLQogLi4gZnVuY3Rpb246OiBnZXRlbmNvZGVyKGVuY29kaW5nKQogCiAgICBMb29rIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4gaXRzIGVuY29kZXIgZnVuY3Rpb24uCkBAIC0yNzQsNiArMjcyLDcgQEAKIGNvZGVjIHdpbGwgaGFuZGxlIGVuY29kaW5nIGFuZCBkZWNvZGluZyBlcnJvcnMuCiAKIAorLi4gX3N1cnJvZ2F0ZWVzY2FwZToKIC4uIF9lcnJvci1oYW5kbGVyczoKIAogRXJyb3IgSGFuZGxlcnMKQEAgLTMxNSwxMCArMzE0LDE0IEBACiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuICBJbXBsZW1lbnRlZCAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbiA6ZnVuYzpgeG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgIHwgUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgfCAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgfAorfCBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgICB8IFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2VzLiAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgYmFja3NsYXNocmVwbGFjZV9lcnJvcnNgLiAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJ25hbWVyZXBsYWNlJ2BgICAgICAgIHwgUmVwbGFjZSB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZSBzZXF1ZW5jZXMgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBuYW1lcmVwbGFjZV9lcnJvcnNgLiAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgICAgfCBPbiBkZWNvZGluZywgcmVwbGFjZSBieXRlIHdpdGggaW5kaXZpZHVhbCAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1cnJvZ2F0ZSBjb2RlIHJhbmdpbmcgZnJvbSBgYFUrREM4MGBgIHRvICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBVK0RDRkZgYC4gIFRoaXMgY29kZSB3aWxsIHRoZW4gYmUgdHVybmVkICAgIHwKQEAgLTM0NCw2ICszNDcsMTMgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICBUaGUgYGAnc3Vycm9nYXRlcGFzcydgYCBlcnJvciBoYW5kbGVycyBub3cgd29ya3Mgd2l0aCB1dGYtMTZcKiBhbmQgdXRmLTMyXCogY29kZWNzLgogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmtzIHdpdGggZGVjb2RpbmcgYW5kCisgICB0cmFuc2xhdGluZy4KKwogVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgYnkgcmVnaXN0ZXJpbmcgYSBuZXcgbmFtZWQgZXJyb3IKIGhhbmRsZXI6CiAKQEAgLTQxMSw5ICs0MjEsMTcgQEAKIAogLi4gZnVuY3Rpb246OiBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyhleGNlcHRpb24pCiAKLSAgIEltcGxlbWVudHMgdGhlIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgZXJyb3IgaGFuZGxpbmcgKGZvciBlbmNvZGluZyB3aXRoCisgICBJbXBsZW1lbnRzIHRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IKKyAgIDp0ZXJtOmB0ZXh0IGVuY29kaW5ncyA8dGV4dCBlbmNvZGluZz5gIG9ubHkpOiBtYWxmb3JtZWQgZGF0YSBpcworICAgcmVwbGFjZWQgYnkgYSBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogbmFtZXJlcGxhY2VfZXJyb3JzKGV4Y2VwdGlvbikKKworICAgSW1wbGVtZW50cyB0aGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxpbmcgKGZvciBlbmNvZGluZyB3aXRoCiAgICA6dGVybTpgdGV4dCBlbmNvZGluZ3MgPHRleHQgZW5jb2Rpbmc+YCBvbmx5KTogdGhlCi0gICB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgYnkgYSBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuCisgICB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgYnkgYSBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKIC4uIF9jb2RlYy1vYmplY3RzOgpAQCAtMTE0Miw4ICsxMTYwLDE2IEBACiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGtvaThfciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ1c3NpYW4gICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGtvaThfdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhamlrICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNSAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGtvaThfdSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVrcmFpbmlhbiAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGt6MTA0OCAgICAgICAgICB8IGt6XzEwNDgsIHN0cmsxMDQ4XzIwMDIsIHJrMTA0OCB8IEthemFraCAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNSAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IG1hY19jeXJpbGxpYyAgICB8IG1hY2N5cmlsbGljICAgICAgICAgICAgICAgICAgICB8IEJ1bGdhcmlhbiwgQnllbG9ydXNzaWFuLCAgICAgICB8CiB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1hY2Vkb25pYW4sIFJ1c3NpYW4sIFNlcmJpYW4gICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xNDQ0LDQgKzE0NzAsMyBAQAogQk9NIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBVVEYtOCBlbmNvZGVkIGJ5dGVzLiBGb3IgdGhlIHN0YXRlZnVsIGVuY29kZXIgdGhpcwogaXMgb25seSBkb25lIG9uY2UgKG9uIHRoZSBmaXJzdCB3cml0ZSB0byB0aGUgYnl0ZSBzdHJlYW0pLiAgRm9yIGRlY29kaW5nIGFuCiBvcHRpb25hbCBVVEYtOCBlbmNvZGVkIEJPTSBhdCB0aGUgc3RhcnQgb2YgdGhlIGRhdGEgd2lsbCBiZSBza2lwcGVkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCA5OWM0MzExLi44YzcxMGVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTMzLDEzICszMywxNCBAQAogCiAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfEx8THxMfAogCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQUJDICAgICAgICAgICAgICAgICAgICAgICAgSW5oZXJpdHMgZnJvbSAgICAgICAgICBBYnN0cmFjdCBNZXRob2RzICAgICAgICBNaXhpbiBNZXRob2RzCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCiA6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAogOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKIDpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCiAKQEAgLTgwLDcgKzgxLDExIEBACiA6Y2xhc3M6YEtleXNWaWV3YCAgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAogOmNsYXNzOmBWYWx1ZXNWaWV3YCAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAKLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBBd2FpdGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fYXdhaXRfX2BgCis6Y2xhc3M6YENvcm91dGluZWAgICAgICAgICA6Y2xhc3M6YEF3YWl0YWJsZWAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYAorOmNsYXNzOmBBc3luY0l0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fYWl0ZXJfX2BgCis6Y2xhc3M6YEFzeW5jSXRlcmF0b3JgICAgICA6Y2xhc3M6YEFzeW5jSXRlcmFibGVgIGBgX19hbmV4dF9fYGAgICAgICAgICAgIGBgX19haXRlcl9fYGAKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKIC4uIGNsYXNzOjogQ29udGFpbmVyCkBAIC0xMDIsMTEgKzEwNywzNCBAQAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IEdlbmVyYXRvcgorCisgICBBQkMgZm9yIGdlbmVyYXRvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcm90b2NvbCBkZWZpbmVkIGluCisgICA6cGVwOmAzNDJgIHRoYXQgZXh0ZW5kcyBpdGVyYXRvcnMgd2l0aCB0aGUgOm1ldGg6YH5nZW5lcmF0b3Iuc2VuZGAsCisgICA6bWV0aDpgfmdlbmVyYXRvci50aHJvd2AgYW5kIDptZXRoOmB+Z2VuZXJhdG9yLmNsb3NlYCBtZXRob2RzLgorICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGdlbmVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBjbGFzczo6IFNlcXVlbmNlCiAgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQogCiAgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KIAorICAgSW1wbGVtZW50YXRpb24gbm90ZTogU29tZSBvZiB0aGUgbWl4aW4gbWV0aG9kcywgc3VjaCBhcworICAgOm1ldGg6YF9faXRlcl9fYCwgOm1ldGg6YF9fcmV2ZXJzZWRfX2AgYW5kIDptZXRoOmBpbmRleGAsIG1ha2UKKyAgIHJlcGVhdGVkIGNhbGxzIHRvIHRoZSB1bmRlcmx5aW5nIDptZXRoOmBfX2dldGl0ZW1fX2AgbWV0aG9kLgorICAgQ29uc2VxdWVudGx5LCBpZiA6bWV0aDpgX19nZXRpdGVtX19gIGlzIGltcGxlbWVudGVkIHdpdGggY29uc3RhbnQKKyAgIGFjY2VzcyBzcGVlZCwgdGhlIG1peGluIG1ldGhvZHMgd2lsbCBoYXZlIGxpbmVhciBwZXJmb3JtYW5jZTsKKyAgIGhvd2V2ZXIsIGlmIHRoZSB1bmRlcmx5aW5nIG1ldGhvZCBpcyBsaW5lYXIgKGFzIGl0IHdvdWxkIGJlIHdpdGggYQorICAgbGlua2VkIGxpc3QpLCB0aGUgbWl4aW5zIHdpbGwgaGF2ZSBxdWFkcmF0aWMgcGVyZm9ybWFuY2UgYW5kIHdpbGwKKyAgIGxpa2VseSBuZWVkIHRvIGJlIG92ZXJyaWRkZW4uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgaW5kZXgoKSBtZXRob2QgYWRkZWQgc3VwcG9ydCBmb3IgKnN0b3AqIGFuZCAqc3RhcnQqCisgICAgICBhcmd1bWVudHMuCisKKwogLi4gY2xhc3M6OiBTZXQKICAgICAgICAgICAgTXV0YWJsZVNldAogCkBAIC0xMjQsNiArMTUyLDQxIEBACiAKICAgIEFCQ3MgZm9yIG1hcHBpbmcsIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8dmlldz5gLgogCisuLiBjbGFzczo6IEF3YWl0YWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIGBgX19hd2FpdF9fYGAgbWV0aG9kLiAgSW5zdGFuY2VzCisgICBvZiBzdWNoIGNsYXNzZXMgY2FuIGJlIHVzZWQgaW4gYGBhd2FpdGBgIGV4cHJlc3Npb24uCisKKyAgIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdHMgYW5kIGluc3RhbmNlcyBvZgorICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLkNvcm91dGluZWAgYXJlIHRvbyBpbnN0YW5jZXMgb2YgdGhpcyBBQkMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjbGFzczo6IENvcm91dGluZQorCisgICBBQkMgZm9yIGNvcm91dGluZSBjb21wYXRpYmxlIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgYSBzdWJzZXQgb2YKKyAgIGdlbmVyYXRvciBtZXRob2RzIGRlZmluZWQgaW4gOnBlcDpgMzQyYCwgbmFtZWx5OgorICAgOm1ldGg6YH5nZW5lcmF0b3Iuc2VuZGAsIDptZXRoOmB+Z2VuZXJhdG9yLnRocm93YCwKKyAgIDptZXRoOmB+Z2VuZXJhdG9yLmNsb3NlYCBtZXRob2RzLiAgOm1ldGg6YF9fYXdhaXRfX2AgbXVzdCBhbHNvIGJlCisgICBpbXBsZW1lbnRlZC4gIEFsbCA6Y2xhc3M6YENvcm91dGluZWAgaW5zdGFuY2VzIGFyZSBhbHNvIGluc3RhbmNlcyBvZgorICAgOmNsYXNzOmBBd2FpdGFibGVgLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjbGFzczo6IEFzeW5jSXRlcmFibGUKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSBgYF9fYWl0ZXJfX2BgIG1ldGhvZC4gIFNlZSBhbHNvIHRoZQorICAgZGVmaW5pdGlvbiBvZiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhYmxlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGNsYXNzOjogQXN5bmNJdGVyYXRvcgorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIGBgX19haXRlcl9fYGAgYW5kIGBgX19hbmV4dF9fYGAKKyAgIG1ldGhvZHMuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogVGhlc2UgQUJDcyBhbGxvdyB1cyB0byBhc2sgY2xhc3NlcyBvciBpbnN0YW5jZXMgaWYgdGhleSBwcm92aWRlCiBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksIGZvciBleGFtcGxlOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCA3NjZiZDM4Li5mMmJlZmU3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0zODcsNyArMzg3LDcgQEAKICAgICAgIFNlY3Rpb24gNC42LjMsIEV4ZXJjaXNlIDE5Ki4KIAogICAgICogVG8gZW51bWVyYXRlIGFsbCBkaXN0aW5jdCBtdWx0aXNldHMgb2YgYSBnaXZlbiBzaXplIG92ZXIgYSBnaXZlbiBzZXQgb2YKLSAgICAgIGVsZW1lbnRzLCBzZWUgOmZ1bmM6YGl0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudGAuCisgICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgOgogCiAgICAgICAgICAgICBtYXAoQ291bnRlciwgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoJ0FCQycsIDIpKSAtLT4gQUEgQUIgQUMgQkIgQkMgQ0MKIApAQCAtNDM3LDYgKzQzNywxMyBAQAogICAgICAgICBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlIGxlYXZpbmcgaXQgd2l0aCBsZW5ndGggMC4KIAogCisgICAgLi4gbWV0aG9kOjogY29weSgpCisKKyAgICAgICAgQ3JlYXRlIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkZXF1ZS4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAgICAgLi4gbWV0aG9kOjogY291bnQoeCkKIAogICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIGRlcXVlIGVsZW1lbnRzIGVxdWFsIHRvICp4Ki4KQEAgLTQ1Nyw2ICs0NjQsMjIgQEAKICAgICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgogCiAKKyAgICAuLiBtZXRob2Q6OiBpbmRleCh4Wywgc3RhcnRbLCBzdG9wXV0pCisKKyAgICAgICAgUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiAqeCogaW4gdGhlIGRlcXVlIChhdCBvciBhZnRlciBpbmRleCAqc3RhcnQqCisgICAgICAgIGFuZCBiZWZvcmUgaW5kZXggKnN0b3AqKS4gIFJldHVybnMgdGhlIGZpcnN0IG1hdGNoIG9yIHJhaXNlcworICAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBub3QgZm91bmQuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworICAgIC4uIG1ldGhvZDo6IGluc2VydChpLCB4KQorCisgICAgICAgIEluc2VydCAqeCogaW50byB0aGUgZGVxdWUgYXQgcG9zaXRpb24gKmkqLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICAgICAuLiBtZXRob2Q6OiBwb3AoKQogCiAgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCkBAIC00NzEsNyArNDk0LDcgQEAKIAogICAgIC4uIG1ldGhvZDo6IHJlbW92ZSh2YWx1ZSkKIAotICAgICAgICBSZW1vdmVkIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCisgICAgICAgIFJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQogICAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCkBAIC01MDQsNiArNTI3LDkgQEAKIGFjY2VzcyBpcyBPKDEpIGF0IGJvdGggZW5kcyBidXQgc2xvd3MgdG8gTyhuKSBpbiB0aGUgbWlkZGxlLiAgRm9yIGZhc3QgcmFuZG9tCiBhY2Nlc3MsIHVzZSBsaXN0cyBpbnN0ZWFkLgogCitTdGFydGluZyBpbiB2ZXJzaW9uIDMuNSwgZGVxdWVzIHN1cHBvcnQgYGBfX2FkZF9fKClgYCwgYGBfX211bF9fKClgYCwKK2FuZCBgYF9faW11bF9fKClgYC4KKwogRXhhbXBsZToKIAogLi4gZG9jdGVzdDo6CkBAIC04OTksNiArOTI1LDE1IEBACiAKICAgICA+Pj4gUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQogCitEb2NzdHJpbmdzIGNhbiBiZSBjdXN0b21pemVkIGJ5IG1ha2luZyBkaXJlY3QgYXNzaWdubWVudHMgdG8gdGhlIGBgX19kb2NfX2BgCitmaWVsZHM6CisKKyAgID4+PiBCb29rID0gbmFtZWR0dXBsZSgnQm9vaycsIFsnaWQnLCAndGl0bGUnLCAnYXV0aG9ycyddKQorICAgPj4+IEJvb2suX19kb2NfXyA9ICdIYXJkY292ZXIgYm9vayBpbiBhY3RpdmUgY29sbGVjdGlvbicKKyAgID4+PiBCb29rLmlkLl9fZG9jX18gPSAnMTMtZGlnaXQgSVNCTicKKyAgID4+PiBCb29rLnRpdGxlLl9fZG9jX18gPSAnVGl0bGUgb2YgZmlyc3QgcHJpbnRpbmcnCisgICA+Pj4gQm9vay5hdXRob3IuX19kb2NfXyA9ICdMaXN0IG9mIGF1dGhvcnMgc29ydGVkIGJ5IGxhc3QgbmFtZScKKwogRGVmYXVsdCB2YWx1ZXMgY2FuIGJlIGltcGxlbWVudGVkIGJ5IHVzaW5nIDptZXRoOmBfcmVwbGFjZWAgdG8KIGN1c3RvbWl6ZSBhIHByb3RvdHlwZSBpbnN0YW5jZToKIApAQCAtOTgyLDYgKzEwMTcsOSBAQAoga2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGVpciBvcmRlciBpcyBsb3N0IGJlY2F1c2UgUHl0aG9uJ3MgZnVuY3Rpb24gY2FsbAogc2VtYW50aWNzIHBhc3MtaW4ga2V5d29yZCBhcmd1bWVudHMgdXNpbmcgYSByZWd1bGFyIHVub3JkZXJlZCBkaWN0aW9uYXJ5LgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8dmlldz5gIG9mIDpjbGFzczpgT3JkZXJlZERpY3RgIG5vdworICAgc3VwcG9ydCByZXZlcnNlIGl0ZXJhdGlvbiB1c2luZyA6ZnVuYzpgcmV2ZXJzZWRgLgogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBFeGFtcGxlcyBhbmQgUmVjaXBlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0IGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKaW5kZXggOTcxMmRlMi4uMDMyNWYxYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKQEAgLTQyLDcgKzQyLDggQEAKIAogLi4gY21kb3B0aW9uOjogLXEKIAotICAgRG8gbm90IHByaW50IHRoZSBsaXN0IG9mIGZpbGVzIGNvbXBpbGVkLCBwcmludCBvbmx5IGVycm9yIG1lc3NhZ2VzLgorICAgRG8gbm90IHByaW50IHRoZSBsaXN0IG9mIGZpbGVzIGNvbXBpbGVkLiBJZiBwYXNzZWQgb25jZSwgZXJyb3IgbWVzc2FnZXMgd2lsbAorICAgc3RpbGwgYmUgcHJpbnRlZC4gSWYgcGFzc2VkIHR3aWNlIChgYC1xcWBgKSwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAuLiBjbWRvcHRpb246OiAtZCBkZXN0ZGlyCiAKQEAgLTcwLDkgKzcxLDMzIEBACiAgICBpcyB0byB3cml0ZSBmaWxlcyB0byB0aGVpciA6cGVwOmAzMTQ3YCBsb2NhdGlvbnMgYW5kIG5hbWVzLCB3aGljaCBhbGxvd3MKICAgIGJ5dGUtY29kZSBmaWxlcyBmcm9tIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiB0byBjb2V4aXN0LgogCisuLiBjbWRvcHRpb246OiAtcgorCisgICBDb250cm9sIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCBmb3Igc3ViZGlyZWN0b3JpZXMuCisgICBJZiB0aGlzIGlzIGdpdmVuLCB0aGVuIGBgLWxgYCBvcHRpb24gd2lsbCBub3QgYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgOnByb2dyYW06YHB5dGhvbiAtbSBjb21waWxlYWxsIDxkaXJlY3Rvcnk+IC1yIDBgIGlzIGVxdWl2YWxlbnQgdG8KKyAgIDpwcm9ncmFtOmBweXRob24gLW0gY29tcGlsZWFsbCA8ZGlyZWN0b3J5PiAtbGAuCisKKy4uIGNtZG9wdGlvbjo6IC1qIE4KKworICAgVXNlICpOKiB3b3JrZXJzIHRvIGNvbXBpbGUgdGhlIGZpbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgorICAgSWYgYGAwYGAgaXMgdXNlZCwgdGhlbiB0aGUgcmVzdWx0IG9mIDpmdW5jOmBvcy5jcHVfY291bnQoKWAKKyAgIHdpbGwgYmUgdXNlZC4KKwogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgIEFkZGVkIHRoZSBgYC1pYGAsIGBgLWJgYCBhbmQgYGAtaGBgIG9wdGlvbnMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBBZGRlZCB0aGUgIGBgLWpgYCBhbmQgYGAtcmBgIG9wdGlvbnMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBgYC1xYGAgb3B0aW9uIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIGBgLWJgYCB3aWxsIGFsd2F5cyBwcm9kdWNlIGEgYnl0ZS1jb2RlIGZpbGUgZW5kaW5nIGluIGBgLnB5Y2BgLCBuZXZlcgorICAgYGAucHlvYGAuCisKKwogVGhlcmUgaXMgbm8gY29tbWFuZC1saW5lIG9wdGlvbiB0byBjb250cm9sIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgdXNlZCBieSB0aGUKIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZiBhbHJlYWR5CiBwcm92aWRlcyB0aGUgb3B0aW9uOiA6cHJvZ3JhbTpgcHl0aG9uIC1PIC1tIGNvbXBpbGVhbGxgLgpAQCAtODAsNyArMTA1LDcgQEAKIFB1YmxpYyBmdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCisuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCiAgICBmaWxlcyBhbG9uZyB0aGUgd2F5LgpAQCAtMTAxLDggKzEyNiw5IEBACiAgICBmaWxlIGNvbnNpZGVyZWQgZm9yIGNvbXBpbGF0aW9uLCBhbmQgaWYgaXQgcmV0dXJucyBhIHRydWUgdmFsdWUsIHRoZSBmaWxlCiAgICBpcyBza2lwcGVkLgogCi0gICBJZiAqcXVpZXQqIGlzIHRydWUsIG5vdGhpbmcgaXMgcHJpbnRlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVubGVzcyBlcnJvcnMKLSAgIG9jY3VyLgorICAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgb3IgYGAwYGAgKHRoZSBkZWZhdWx0KSwgdGhlIGZpbGVuYW1lcyBhbmQgb3RoZXIKKyAgIGluZm9ybWF0aW9uIGFyZSBwcmludGVkIHRvIHN0YW5kYXJkIG91dC4gU2V0IHRvIGBgMWBgLCBvbmx5IGVycm9ycyBhcmUKKyAgIHByaW50ZWQuIFNldCB0byBgYDJgYCwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAgICBJZiAqbGVnYWN5KiBpcyB0cnVlLCBieXRlLWNvZGUgZmlsZXMgYXJlIHdyaXR0ZW4gdG8gdGhlaXIgbGVnYWN5IGxvY2F0aW9ucwogICAgYW5kIG5hbWVzLCB3aGljaCBtYXkgb3ZlcndyaXRlIGJ5dGUtY29kZSBmaWxlcyBjcmVhdGVkIGJ5IGFub3RoZXIgdmVyc2lvbiBvZgpAQCAtMTEzLDExICsxMzksMjYgQEAKICAgICpvcHRpbWl6ZSogc3BlY2lmaWVzIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgZm9yIHRoZSBjb21waWxlci4gIEl0IGlzIHBhc3NlZCB0bwogICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbi4KIAorICAgVGhlIGFyZ3VtZW50ICp3b3JrZXJzKiBzcGVjaWZpZXMgaG93IG1hbnkgd29ya2VycyBhcmUgdXNlZCB0bworICAgY29tcGlsZSBmaWxlcyBpbiBwYXJhbGxlbC4gVGhlIGRlZmF1bHQgaXMgdG8gbm90IHVzZSBtdWx0aXBsZSB3b3JrZXJzLgorICAgSWYgdGhlIHBsYXRmb3JtIGNhbid0IHVzZSBtdWx0aXBsZSB3b3JrZXJzIGFuZCAqd29ya2VycyogYXJndW1lbnQgaXMgZ2l2ZW4sCisgICB0aGVuIHNlcXVlbnRpYWwgY29tcGlsYXRpb24gd2lsbCBiZSB1c2VkIGFzIGEgZmFsbGJhY2suICBJZiAqd29ya2VycyogaXMKKyAgIGxvd2VyIHRoYW4gYGAwYGAsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgKmxlZ2FjeSogYW5kICpvcHRpbWl6ZSogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICp3b3JrZXJzKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKICAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouCiAKQEAgLTEzMSw4ICsxNzIsOSBAQAogICAgZmlsZSBiZWluZyBjb21waWxlZCwgYW5kIGlmIGl0IHJldHVybnMgYSB0cnVlIHZhbHVlLCB0aGUgZmlsZSBpcyBub3QKICAgIGNvbXBpbGVkIGFuZCBgYFRydWVgYCBpcyByZXR1cm5lZC4KIAotICAgSWYgKnF1aWV0KiBpcyB0cnVlLCBub3RoaW5nIGlzIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCB1bmxlc3MgZXJyb3JzCi0gICBvY2N1ci4KKyAgIElmICpxdWlldCogaXMgYGBGYWxzZWBgIG9yIGBgMGBgICh0aGUgZGVmYXVsdCksIHRoZSBmaWxlbmFtZXMgYW5kIG90aGVyCisgICBpbmZvcm1hdGlvbiBhcmUgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXQuIFNldCB0byBgYDFgYCwgb25seSBlcnJvcnMgYXJlCisgICBwcmludGVkLiBTZXQgdG8gYGAyYGAsIGFsbCBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogICAgSWYgKmxlZ2FjeSogaXMgdHJ1ZSwgYnl0ZS1jb2RlIGZpbGVzIGFyZSB3cml0dGVuIHRvIHRoZWlyIGxlZ2FjeSBsb2NhdGlvbnMKICAgIGFuZCBuYW1lcywgd2hpY2ggbWF5IG92ZXJ3cml0ZSBieXRlLWNvZGUgZmlsZXMgY3JlYXRlZCBieSBhbm90aGVyIHZlcnNpb24gb2YKQEAgLTE0NSw4ICsxODcsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPVRydWUsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIElmCiAgICAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZApAQCAtMTU3LDYgKzIwNSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqbGVnYWN5KiBhbmQgKm9wdGltaXplKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KIAogVG8gZm9yY2UgYSByZWNvbXBpbGUgb2YgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBpbiB0aGUgOmZpbGU6YExpYi9gCiBzdWJkaXJlY3RvcnkgYW5kIGFsbCBpdHMgc3ViZGlyZWN0b3JpZXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggNDhiNDM2Mi4uMTFiMzkxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0zOCw3ICszOCw3IEBACiAgICAgICAgICAgICAgIGZ1dHVyZSA9IGV4ZWN1dG9yLnN1Ym1pdChwb3csIDMyMywgMTIzNSkKICAgICAgICAgICAgICAgcHJpbnQoZnV0dXJlLnJlc3VsdCgpKQogCi0gICAgLi4gbWV0aG9kOjogbWFwKGZ1bmMsICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSkKKyAgICAuLiBtZXRob2Q6OiBtYXAoZnVuYywgKml0ZXJhYmxlcywgdGltZW91dD1Ob25lLCBjaHVua3NpemU9MSkKIAogICAgICAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YG1hcChmdW5jLCAqaXRlcmFibGVzKSA8bWFwPmAgZXhjZXB0ICpmdW5jKiBpcyBleGVjdXRlZAogICAgICAgIGFzeW5jaHJvbm91c2x5IGFuZCBzZXZlcmFsIGNhbGxzIHRvICpmdW5jKiBtYXkgYmUgbWFkZSBjb25jdXJyZW50bHkuICBUaGUKQEAgLTQ4LDcgKzQ4LDE2IEBACiAgICAgICAgKnRpbWVvdXQqIGNhbiBiZSBhbiBpbnQgb3IgYSBmbG9hdC4gIElmICp0aW1lb3V0KiBpcyBub3Qgc3BlY2lmaWVkIG9yCiAgICAgICAgYGBOb25lYGAsIHRoZXJlIGlzIG5vIGxpbWl0IHRvIHRoZSB3YWl0IHRpbWUuICBJZiBhIGNhbGwgcmFpc2VzIGFuCiAgICAgICAgZXhjZXB0aW9uLCB0aGVuIHRoYXQgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gaXRzIHZhbHVlIGlzCi0gICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLgorICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4gV2hlbiB1c2luZyA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLCB0aGlzCisgICAgICAgbWV0aG9kIGNob3BzICppdGVyYWJsZXMqIGludG8gYSBudW1iZXIgb2YgY2h1bmtzIHdoaWNoIGl0IHN1Ym1pdHMgdG8gdGhlCisgICAgICAgcG9vbCBhcyBzZXBhcmF0ZSB0YXNrcy4gVGhlIChhcHByb3hpbWF0ZSkgc2l6ZSBvZiB0aGVzZSBjaHVua3MgY2FuIGJlCisgICAgICAgc3BlY2lmaWVkIGJ5IHNldHRpbmcgKmNodW5rc2l6ZSogdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyLiBGb3IgdmVyeSBsb25nCisgICAgICAgaXRlcmFibGVzLCB1c2luZyBhIGxhcmdlIHZhbHVlIGZvciAqY2h1bmtzaXplKiBjYW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlCisgICAgICAgcGVyZm9ybWFuY2UgY29tcGFyZWQgdG8gdGhlIGRlZmF1bHQgc2l6ZSBvZiAxLiBXaXRoIDpjbGFzczpgVGhyZWFkUG9vbEV4ZWN1dG9yYCwKKyAgICAgICAqY2h1bmtzaXplKiBoYXMgbm8gZWZmZWN0LgorCisgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICBBZGRlZCB0aGUgKmNodW5rc2l6ZSogYXJndW1lbnQuCiAKICAgICAuLiBtZXRob2Q6OiBzaHV0ZG93bih3YWl0PVRydWUpCiAKQEAgLTExNSwxMSArMTI0LDE5IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnMpCisuLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lKQogCiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IHVzZXMgYSBwb29sIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKgogICAgdGhyZWFkcyB0byBleGVjdXRlIGNhbGxzIGFzeW5jaHJvbm91c2x5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgKm1heF93b3JrZXJzKiBpcyBgYE5vbmVgYCBvcgorICAgICAgbm90IGdpdmVuLCBpdCB3aWxsIGRlZmF1bHQgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIG9uIHRoZSBtYWNoaW5lLAorICAgICAgbXVsdGlwbGllZCBieSBgYDVgYCwgYXNzdW1pbmcgdGhhdCA6Y2xhc3M6YFRocmVhZFBvb2xFeGVjdXRvcmAgaXMgb2Z0ZW4KKyAgICAgIHVzZWQgdG8gb3ZlcmxhcCBJL08gaW5zdGVhZCBvZiBDUFUgd29yayBhbmQgdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBzaG91bGQgYmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBmb3IgOmNsYXNzOmBQcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKwogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTE3NSw2ICsxOTIsOCBAQAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCBleGVjdXRlcyBjYWxscyBhc3luY2hyb25vdXNseSB1c2luZyBhIHBvb2wKICAgIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKiBwcm9jZXNzZXMuICBJZiAqbWF4X3dvcmtlcnMqIGlzIGBgTm9uZWBgIG9yIG5vdAogICAgZ2l2ZW4sIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb24gdGhlIG1hY2hpbmUuCisgICBJZiAqbWF4X3dvcmtlcnMqIGlzIGxvd2VyIG9yIGVxdWFsIHRvIGBgMGBgLCB0aGVuIGEgOmV4YzpgVmFsdWVFcnJvcmAKKyAgIHdpbGwgYmUgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgV2hlbiBvbmUgb2YgdGhlIHdvcmtlciBwcm9jZXNzZXMgdGVybWluYXRlcyBhYnJ1cHRseSwgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5yc3QKaW5kZXggOTI1NTFiYy4uYzkxODdhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0CkBAIC0xMSw2ICsxMSw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogQ2hyaXN0b3BoZXIgRy4gUGV0cmlsbGkgPHBldHJpbGxpQGFtYmVyLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiDFgXVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbmZpZ3BhcnNlci5weWAKKwogLi4gaW5kZXg6OgogICAgcGFpcjogLmluaTsgZmlsZQogICAgcGFpcjogY29uZmlndXJhdGlvbjsgZmlsZQpAQCAtMTQyLDEyICsxNDQsMTMgQEAKICAgID4+PiBmbG9hdCh0b3BzZWNyZXRbJ0NvbXByZXNzaW9uTGV2ZWwnXSkKICAgIDkuMAogCi1FeHRyYWN0aW5nIEJvb2xlYW4gdmFsdWVzIGlzIG5vdCB0aGF0IHNpbXBsZSwgdGhvdWdoLiAgUGFzc2luZyB0aGUgdmFsdWUKLXRvIGBgYm9vbCgpYGAgd291bGQgZG8gbm8gZ29vZCBzaW5jZSBgYGJvb2woJ0ZhbHNlJylgYCBpcyBzdGlsbAotYGBUcnVlYGAuICBUaGlzIGlzIHdoeSBjb25maWcgcGFyc2VycyBhbHNvIHByb3ZpZGUgOm1ldGg6YGdldGJvb2xlYW5gLgotVGhpcyBtZXRob2QgaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcmVjb2duaXplcyBCb29sZWFuIHZhbHVlcyBmcm9tCi1gYCd5ZXMnYGAvYGAnbm8nYGAsIGBgJ29uJ2BgL2BgJ29mZidgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uCi1Gb3IgZXhhbXBsZToKK1NpbmNlIHRoaXMgdGFzayBpcyBzbyBjb21tb24sIGNvbmZpZyBwYXJzZXJzIHByb3ZpZGUgYSByYW5nZSBvZiBoYW5keSBnZXR0ZXIKK21ldGhvZHMgdG8gaGFuZGxlIGludGVnZXJzLCBmbG9hdHMgYW5kIGJvb2xlYW5zLiAgVGhlIGxhc3Qgb25lIGlzIHRoZSBtb3N0CitpbnRlcmVzdGluZyBiZWNhdXNlIHNpbXBseSBwYXNzaW5nIHRoZSB2YWx1ZSB0byBgYGJvb2woKWBgIHdvdWxkIGRvIG5vIGdvb2QKK3NpbmNlIGBgYm9vbCgnRmFsc2UnKWBgIGlzIHN0aWxsIGBgVHJ1ZWBgLiAgVGhpcyBpcyB3aHkgY29uZmlnIHBhcnNlcnMgYWxzbworcHJvdmlkZSA6bWV0aDpgZ2V0Ym9vbGVhbmAuICBUaGlzIG1ldGhvZCBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCByZWNvZ25pemVzCitCb29sZWFuIHZhbHVlcyBmcm9tIGBgJ3llcydgYC9gYCdubydgYCwgYGAnb24nYGAvYGAnb2ZmJ2BgLAorYGAndHJ1ZSdgYC9gYCdmYWxzZSdgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uICBGb3IgZXhhbXBsZToKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE1OSwxMCArMTYyLDggQEAKICAgIFRydWUKIAogQXBhcnQgZnJvbSA6bWV0aDpgZ2V0Ym9vbGVhbmAsIGNvbmZpZyBwYXJzZXJzIGFsc28gcHJvdmlkZSBlcXVpdmFsZW50Ci06bWV0aDpgZ2V0aW50YCBhbmQgOm1ldGg6YGdldGZsb2F0YCBtZXRob2RzLCBidXQgdGhlc2UgYXJlIGZhciBsZXNzCi11c2VmdWwgc2luY2UgY29udmVyc2lvbiB1c2luZyA6ZnVuYzpgaW50YCBhbmQgOmZ1bmM6YGZsb2F0YCBpcwotc3VmZmljaWVudCBmb3IgdGhlc2UgdHlwZXMuCi0KKzptZXRoOmBnZXRpbnRgIGFuZCA6bWV0aDpgZ2V0ZmxvYXRgIG1ldGhvZHMuICBZb3UgY2FuIHJlZ2lzdGVyIHlvdXIgb3duCitjb252ZXJ0ZXJzIGFuZCBjdXN0b21pemUgdGhlIHByb3ZpZGVkIG9uZXMuIFsxXV8KIAogRmFsbGJhY2sgVmFsdWVzCiAtLS0tLS0tLS0tLS0tLS0KQEAgLTMxNywxMSArMzE4LDExIEBACiAuLiBjbGFzczo6IEV4dGVuZGVkSW50ZXJwb2xhdGlvbigpCiAKICAgIEFuIGFsdGVybmF0aXZlIGhhbmRsZXIgZm9yIGludGVycG9sYXRpb24gd2hpY2ggaW1wbGVtZW50cyBhIG1vcmUgYWR2YW5jZWQKLSAgIHN5bnRheCwgdXNlZCBmb3IgaW5zdGFuY2UgaW4gYGB6Yy5idWlsZG91dGBgLiBFeHRlbmRlZCBpbnRlcnBvbGF0aW9uIGlzCisgICBzeW50YXgsIHVzZWQgZm9yIGluc3RhbmNlIGluIGBgemMuYnVpbGRvdXRgYC4gIEV4dGVuZGVkIGludGVycG9sYXRpb24gaXMKICAgIHVzaW5nIGBgJHtzZWN0aW9uOm9wdGlvbn1gYCB0byBkZW5vdGUgYSB2YWx1ZSBmcm9tIGEgZm9yZWlnbiBzZWN0aW9uLgotICAgSW50ZXJwb2xhdGlvbiBjYW4gc3BhbiBtdWx0aXBsZSBsZXZlbHMuIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlIGBgc2VjdGlvbjpgYAotICAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24gKGFuZCBwb3NzaWJseQotICAgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCisgICBJbnRlcnBvbGF0aW9uIGNhbiBzcGFuIG11bHRpcGxlIGxldmVscy4gIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlCisgICBgYHNlY3Rpb246YGAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24KKyAgIChhbmQgcG9zc2libHkgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCiAKICAgIEZvciBleGFtcGxlLCB0aGUgY29uZmlndXJhdGlvbiBzcGVjaWZpZWQgYWJvdmUgd2l0aCBiYXNpYyBpbnRlcnBvbGF0aW9uLAogICAgd291bGQgbG9vayBsaWtlIHRoaXMgd2l0aCBleHRlbmRlZCBpbnRlcnBvbGF0aW9uOgpAQCAtMzk5LDEzICs0MDAsMTMgQEAKICAgKiBgYHBhcnNlci5wb3BpdGVtKClgYCBuZXZlciByZXR1cm5zIGl0LgogCiAqIGBgcGFyc2VyLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKWBgIC0gdGhlIHNlY29uZCBhcmd1bWVudCBpcyAqKm5vdCoqCi0gIGEgZmFsbGJhY2sgdmFsdWUuIE5vdGUgaG93ZXZlciB0aGF0IHRoZSBzZWN0aW9uLWxldmVsIGBgZ2V0KClgYCBtZXRob2RzIGFyZQorICBhIGZhbGxiYWNrIHZhbHVlLiAgTm90ZSBob3dldmVyIHRoYXQgdGhlIHNlY3Rpb24tbGV2ZWwgYGBnZXQoKWBgIG1ldGhvZHMgYXJlCiAgIGNvbXBhdGlibGUgYm90aCB3aXRoIHRoZSBtYXBwaW5nIHByb3RvY29sIGFuZCB0aGUgY2xhc3NpYyBjb25maWdwYXJzZXIgQVBJLgogCiAqIGBgcGFyc2VyLml0ZW1zKClgYCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmcgcHJvdG9jb2wgKHJldHVybnMgYSBsaXN0IG9mCiAgICpzZWN0aW9uX25hbWUqLCAqc2VjdGlvbl9wcm94eSogcGFpcnMgaW5jbHVkaW5nIHRoZSBERUZBVUxUU0VDVCkuICBIb3dldmVyLAogICB0aGlzIG1ldGhvZCBjYW4gYWxzbyBiZSBpbnZva2VkIHdpdGggYXJndW1lbnRzOiBgYHBhcnNlci5pdGVtcyhzZWN0aW9uLCByYXcsCi0gIHZhcnMpYGAuIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKKyAgdmFycylgYC4gIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKICAgYSBzcGVjaWZpZWQgYGBzZWN0aW9uYGAsIHdpdGggYWxsIGludGVycG9sYXRpb25zIGV4cGFuZGVkICh1bmxlc3MKICAgYGByYXc9VHJ1ZWBgIGlzIHByb3ZpZGVkKS4KIApAQCAtNTM5LDkgKzU0MCw5IEBACiAKICogKmRlbGltaXRlcnMqLCBkZWZhdWx0IHZhbHVlOiBgYCgnPScsICc6JylgYAogCi0gIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4gVGhlCi0gIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZCBhIGRlbGltaXRlci4KLSAgVGhpcyBtZWFucyB2YWx1ZXMgKGJ1dCBub3Qga2V5cykgY2FuIGNvbnRhaW4gdGhlIGRlbGltaXRlcnMuCisgIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4KKyAgVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZAorICBhIGRlbGltaXRlci4gIFRoaXMgbWVhbnMgdmFsdWVzIChidXQgbm90IGtleXMpIGNhbiBjb250YWluIHRoZSBkZWxpbWl0ZXJzLgogCiAgIFNlZSBhbHNvIHRoZSAqc3BhY2VfYXJvdW5kX2RlbGltaXRlcnMqIGFyZ3VtZW50IHRvCiAgIDptZXRoOmBDb25maWdQYXJzZXIud3JpdGVgLgpAQCAtNTUzLDcgKzU1NCw3IEBACiAgIENvbW1lbnQgcHJlZml4ZXMgYXJlIHN0cmluZ3MgdGhhdCBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSB2YWxpZCBjb21tZW50IHdpdGhpbgogICBhIGNvbmZpZyBmaWxlLiAqY29tbWVudF9wcmVmaXhlcyogYXJlIHVzZWQgb25seSBvbiBvdGhlcndpc2UgZW1wdHkgbGluZXMKICAgKG9wdGlvbmFsbHkgaW5kZW50ZWQpIHdoZXJlYXMgKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBjYW4gYmUgdXNlZCBhZnRlcgotICBldmVyeSB2YWxpZCB2YWx1ZSAoZS5nLiAgc2VjdGlvbiBuYW1lcywgb3B0aW9ucyBhbmQgZW1wdHkgbGluZXMgYXMgd2VsbCkuIEJ5CisgIGV2ZXJ5IHZhbGlkIHZhbHVlIChlLmcuIHNlY3Rpb24gbmFtZXMsIG9wdGlvbnMgYW5kIGVtcHR5IGxpbmVzIGFzIHdlbGwpLiAgQnkKICAgZGVmYXVsdCBpbmxpbmUgY29tbWVudHMgYXJlIGRpc2FibGVkIGFuZCBgYCcjJ2BgIGFuZCBgYCc7J2BgIGFyZSB1c2VkIGFzCiAgIHByZWZpeGVzIGZvciB3aG9sZSBsaW5lIGNvbW1lbnRzLgogCkBAIC01NjMsMTAgKzU2NCwxMCBAQAogCiAgIFBsZWFzZSBub3RlIHRoYXQgY29uZmlnIHBhcnNlcnMgZG9uJ3Qgc3VwcG9ydCBlc2NhcGluZyBvZiBjb21tZW50IHByZWZpeGVzIHNvCiAgIHVzaW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyogbWF5IHByZXZlbnQgdXNlcnMgZnJvbSBzcGVjaWZ5aW5nIG9wdGlvbgotICB2YWx1ZXMgd2l0aCBjaGFyYWN0ZXJzIHVzZWQgYXMgY29tbWVudCBwcmVmaXhlcy4gV2hlbiBpbiBkb3VidCwgYXZvaWQgc2V0dGluZwotICAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqLiBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mIHN0b3JpbmcKLSAgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUgdmFsdWVzIGlzIHRvCi0gIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKKyAgdmFsdWVzIHdpdGggY2hhcmFjdGVycyB1c2VkIGFzIGNvbW1lbnQgcHJlZml4ZXMuICBXaGVuIGluIGRvdWJ0LCBhdm9pZAorICBzZXR0aW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyouICBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mCisgIHN0b3JpbmcgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUKKyAgdmFsdWVzIGlzIHRvIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKIAogICAgID4+PiBmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyLCBFeHRlbmRlZEludGVycG9sYXRpb24KICAgICA+Pj4gcGFyc2VyID0gQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249RXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCkBAIC02MTEsNyArNjEyLDcgQEAKIAogICBXaGVuIHNldCB0byBgYFRydWVgYCwgdGhlIHBhcnNlciB3aWxsIG5vdCBhbGxvdyBmb3IgYW55IHNlY3Rpb24gb3Igb3B0aW9uCiAgIGR1cGxpY2F0ZXMgd2hpbGUgcmVhZGluZyBmcm9tIGEgc2luZ2xlIHNvdXJjZSAodXNpbmcgOm1ldGg6YHJlYWRfZmlsZWAsCi0gIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ugc3RyaWN0CisgIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHN0cmljdAogICBwYXJzZXJzIGluIG5ldyBhcHBsaWNhdGlvbnMuCiAKICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTY0NiwxMiArNjQ3LDEyIEBACiAKICAgVGhlIGNvbnZlbnRpb24gb2YgYWxsb3dpbmcgYSBzcGVjaWFsIHNlY3Rpb24gb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyCiAgIHNlY3Rpb25zIG9yIGludGVycG9sYXRpb24gcHVycG9zZXMgaXMgYSBwb3dlcmZ1bCBjb25jZXB0IG9mIHRoaXMgbGlicmFyeSwKLSAgbGV0dGluZyB1c2VycyBjcmVhdGUgY29tcGxleCBkZWNsYXJhdGl2ZSBjb25maWd1cmF0aW9ucy4gVGhpcyBzZWN0aW9uIGlzCisgIGxldHRpbmcgdXNlcnMgY3JlYXRlIGNvbXBsZXggZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbnMuICBUaGlzIHNlY3Rpb24gaXMKICAgbm9ybWFsbHkgY2FsbGVkIGBgIkRFRkFVTFQiYGAgYnV0IHRoaXMgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gcG9pbnQgdG8gYW55Ci0gIG90aGVyIHZhbGlkIHNlY3Rpb24gbmFtZS4gU29tZSB0eXBpY2FsIHZhbHVlcyBpbmNsdWRlOiBgYCJnZW5lcmFsImBgIG9yCi0gIGBgImNvbW1vbiJgYC4gVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucyB3aGVuCi0gIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KLSAgYSBmaWxlLiBJdHMgY3VycmVudCB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZQorICBvdGhlciB2YWxpZCBzZWN0aW9uIG5hbWUuICBTb21lIHR5cGljYWwgdmFsdWVzIGluY2x1ZGU6IGBgImdlbmVyYWwiYGAgb3IKKyAgYGAiY29tbW9uImBgLiAgVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucworICB3aGVuIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KKyAgYSBmaWxlLiAgSXRzIGN1cnJlbnQgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUKICAgYGBwYXJzZXJfaW5zdGFuY2UuZGVmYXVsdF9zZWN0aW9uYGAgYXR0cmlidXRlIGFuZCBtYXkgYmUgbW9kaWZpZWQgYXQgcnVudGltZQogICAoaS5lLiB0byBjb252ZXJ0IGZpbGVzIGZyb20gb25lIGZvcm1hdCB0byBhbm90aGVyKS4KIApAQCAtNjYwLDE0ICs2NjEsMzAgQEAKICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgdGhyb3VnaCB0aGUgKmludGVycG9sYXRpb24qIGFyZ3VtZW50LiBgYE5vbmVgYCBjYW4gYmUgdXNlZCB0byB0dXJuIG9mZgogICBpbnRlcnBvbGF0aW9uIGNvbXBsZXRlbHksIGBgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKClgYCBwcm92aWRlcyBhIG1vcmUKLSAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgIGFkdmFuY2VkIHZhcmlhbnQgaW5zcGlyZWQgYnkgYGB6Yy5idWlsZG91dGBgLiAgTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKICAgYGRlZGljYXRlZCBkb2N1bWVudGF0aW9uIHNlY3Rpb24gPCNpbnRlcnBvbGF0aW9uLW9mLXZhbHVlcz5gXy4KICAgOmNsYXNzOmBSYXdDb25maWdQYXJzZXJgIGhhcyBhIGRlZmF1bHQgdmFsdWUgb2YgYGBOb25lYGAuCiAKKyogKmNvbnZlcnRlcnMqLCBkZWZhdWx0IHZhbHVlOiBub3Qgc2V0CisKKyAgQ29uZmlnIHBhcnNlcnMgcHJvdmlkZSBvcHRpb24gdmFsdWUgZ2V0dGVycyB0aGF0IHBlcmZvcm0gdHlwZSBjb252ZXJzaW9uLiAgQnkKKyAgZGVmYXVsdCA6bWV0aDpgZ2V0aW50YCwgOm1ldGg6YGdldGZsb2F0YCwgYW5kIDptZXRoOmBnZXRib29sZWFuYCBhcmUKKyAgaW1wbGVtZW50ZWQuICBTaG91bGQgb3RoZXIgZ2V0dGVycyBiZSBkZXNpcmFibGUsIHVzZXJzIG1heSBkZWZpbmUgdGhlbSBpbgorICBhIHN1YmNsYXNzIG9yIHBhc3MgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5IGlzIGEgbmFtZSBvZiB0aGUgY29udmVydGVyIGFuZAorICBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUgaW1wbGVtZW50aW5nIHNhaWQgY29udmVyc2lvbi4gIEZvciBpbnN0YW5jZSwgcGFzc2luZworICBgYHsnZGVjaW1hbCc6IGRlY2ltYWwuRGVjaW1hbH1gYCB3b3VsZCBhZGQgOm1ldGg6YGdldGRlY2ltYWxgIG9uIGJvdGggdGhlCisgIHBhcnNlciBvYmplY3QgYW5kIGFsbCBzZWN0aW9uIHByb3hpZXMuICBJbiBvdGhlciB3b3JkcywgaXQgd2lsbCBiZSBwb3NzaWJsZQorICB0byB3cml0ZSBib3RoIGBgcGFyc2VyX2luc3RhbmNlLmdldGRlY2ltYWwoJ3NlY3Rpb24nLCAna2V5JywgZmFsbGJhY2s9MClgYAorICBhbmQgYGBwYXJzZXJfaW5zdGFuY2VbJ3NlY3Rpb24nXS5nZXRkZWNpbWFsKCdrZXknLCAwKWBgLgorCisgIElmIHRoZSBjb252ZXJ0ZXIgbmVlZHMgdG8gYWNjZXNzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyc2VyLCBpdCBjYW4gYmUKKyAgaW1wbGVtZW50ZWQgYXMgYSBtZXRob2Qgb24gYSBjb25maWcgcGFyc2VyIHN1YmNsYXNzLiAgSWYgdGhlIG5hbWUgb2YgdGhpcworICBtZXRob2Qgc3RhcnRzIHdpdGggYGBnZXRgYCwgaXQgd2lsbCBiZSBhdmFpbGFibGUgb24gYWxsIHNlY3Rpb24gcHJveGllcywgaW4KKyAgdGhlIGRpY3QtY29tcGF0aWJsZSBmb3JtIChzZWUgdGhlIGBgZ2V0ZGVjaW1hbCgpYGAgZXhhbXBsZSBhYm92ZSkuCiAKIE1vcmUgYWR2YW5jZWQgY3VzdG9taXphdGlvbiBtYXkgYmUgYWNoaWV2ZWQgYnkgb3ZlcnJpZGluZyBkZWZhdWx0IHZhbHVlcyBvZgotdGhlc2UgcGFyc2VyIGF0dHJpYnV0ZXMuICBUaGUgZGVmYXVsdHMgYXJlIGRlZmluZWQgb24gdGhlIGNsYXNzZXMsIHNvIHRoZXkKLW1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgYnkgYXR0cmlidXRlIGFzc2lnbm1lbnQuCit0aGVzZSBwYXJzZXIgYXR0cmlidXRlcy4gIFRoZSBkZWZhdWx0cyBhcmUgZGVmaW5lZCBvbiB0aGUgY2xhc3Nlcywgc28gdGhleSBtYXkKK2JlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBvciBieSBhdHRyaWJ1dGUgYXNzaWdubWVudC4KIAogLi4gYXR0cmlidXRlOjogQk9PTEVBTl9TVEFURVMKIApAQCAtNzI1LDEwICs3NDIsMTEgQEAKIAogLi4gYXR0cmlidXRlOjogU0VDVENSRQogCi0gIEEgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gcGFyc2Ugc2VjdGlvbiBoZWFkZXJzLiBUaGUgZGVmYXVsdAotICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gV2hpdGVzcGFjZSBpcyBjb25zaWRlcmVkIHBhcnQKLSAgb2YgdGhlIHNlY3Rpb24gbmFtZSwgdGh1cyBgYFsgIGxhcmNoICBdYGAgd2lsbCBiZSByZWFkIGFzIGEgc2VjdGlvbiBvZiBuYW1lCi0gIGBgIiAgbGFyY2ggICJgYC4gT3ZlcnJpZGUgdGhpcyBhdHRyaWJ1dGUgaWYgdGhhdCdzIHVuc3VpdGFibGUuICBGb3IgZXhhbXBsZToKKyAgQSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBzZWN0aW9uIGhlYWRlcnMuICBUaGUgZGVmYXVsdAorICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gIFdoaXRlc3BhY2UgaXMgY29uc2lkZXJlZAorICBwYXJ0IG9mIHRoZSBzZWN0aW9uIG5hbWUsIHRodXMgYGBbICBsYXJjaCAgXWBgIHdpbGwgYmUgcmVhZCBhcyBhIHNlY3Rpb24gb2YKKyAgbmFtZSBgYCIgIGxhcmNoICAiYGAuICBPdmVycmlkZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGF0J3MgdW5zdWl0YWJsZS4gIEZvcgorICBleGFtcGxlOgogCiAgIC4uIGRvY3Rlc3Q6OgogCkBAIC04NTksNyArODc3LDcgQEAKIENvbmZpZ1BhcnNlciBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IENvbmZpZ1BhcnNlcihkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QsIGFsbG93X25vX3ZhbHVlPUZhbHNlLCBkZWxpbWl0ZXJzPSgnPScsICc6JyksIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249Y29uZmlncGFyc2VyLkRFRkFVTFRTRUNULCBpbnRlcnBvbGF0aW9uPUJhc2ljSW50ZXJwb2xhdGlvbigpKQorLi4gY2xhc3M6OiBDb25maWdQYXJzZXIoZGVmYXVsdHM9Tm9uZSwgZGljdF90eXBlPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LCBhbGxvd19ub192YWx1ZT1GYWxzZSwgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksIGlubGluZV9jb21tZW50X3ByZWZpeGVzPU5vbmUsIHN0cmljdD1UcnVlLCBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwgZGVmYXVsdF9zZWN0aW9uPWNvbmZpZ3BhcnNlci5ERUZBVUxUU0VDVCwgaW50ZXJwb2xhdGlvbj1CYXNpY0ludGVycG9sYXRpb24oKSwgY29udmVydGVycz17fSkKIAogICAgVGhlIG1haW4gY29uZmlndXJhdGlvbiBwYXJzZXIuICBXaGVuICpkZWZhdWx0cyogaXMgZ2l2ZW4sIGl0IGlzIGluaXRpYWxpemVkCiAgICBpbnRvIHRoZSBkaWN0aW9uYXJ5IG9mIGludHJpbnNpYyBkZWZhdWx0cy4gIFdoZW4gKmRpY3RfdHlwZSogaXMgZ2l2ZW4sIGl0CkBAIC04NjksOCArODg3LDggQEAKICAgIFdoZW4gKmRlbGltaXRlcnMqIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0CiAgICBkaXZpZGUga2V5cyBmcm9tIHZhbHVlcy4gIFdoZW4gKmNvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsIGJlIHVzZWQKICAgIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBvdGhlcndpc2UgZW1wdHkgbGluZXMuCi0gICBDb21tZW50cyBjYW4gYmUgaW5kZW50ZWQuIFdoZW4gKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBpcyBnaXZlbiwgaXQgd2lsbCBiZQotICAgdXNlZCBhcyB0aGUgc2V0IG9mIHN1YnN0cmluZ3MgdGhhdCBwcmVmaXggY29tbWVudHMgaW4gbm9uLWVtcHR5IGxpbmVzLgorICAgQ29tbWVudHMgY2FuIGJlIGluZGVudGVkLiAgV2hlbiAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsCisgICBiZSB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBub24tZW1wdHkgbGluZXMuCiAKICAgIFdoZW4gKnN0cmljdCogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlciB3b24ndCBhbGxvdyBmb3IKICAgIGFueSBzZWN0aW9uIG9yIG9wdGlvbiBkdXBsaWNhdGVzIHdoaWxlIHJlYWRpbmcgZnJvbSBhIHNpbmdsZSBzb3VyY2UgKGZpbGUsCkBAIC04ODQsMTMgKzkwMiwxMyBAQAogCiAgICBXaGVuICpkZWZhdWx0X3NlY3Rpb24qIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgZm9yIHRoZSBzcGVjaWFsCiAgICBzZWN0aW9uIGhvbGRpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyIHNlY3Rpb25zIGFuZCBpbnRlcnBvbGF0aW9uIHB1cnBvc2VzCi0gICAobm9ybWFsbHkgbmFtZWQgYGAiREVGQVVMVCJgYCkuIFRoaXMgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCBhbmQgY2hhbmdlZCBvbgorICAgKG5vcm1hbGx5IG5hbWVkIGBgIkRFRkFVTFQiYGApLiAgVGhpcyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGFuZCBjaGFuZ2VkIG9uCiAgICBydW50aW1lIHVzaW5nIHRoZSBgYGRlZmF1bHRfc2VjdGlvbmBgIGluc3RhbmNlIGF0dHJpYnV0ZS4KIAogICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgIHRocm91Z2ggdGhlICppbnRlcnBvbGF0aW9uKiBhcmd1bWVudC4gYGBOb25lYGAgY2FuIGJlIHVzZWQgdG8gdHVybiBvZmYKICAgIGludGVycG9sYXRpb24gY29tcGxldGVseSwgYGBFeHRlbmRlZEludGVycG9sYXRpb24oKWBgIHByb3ZpZGVzIGEgbW9yZQotICAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgICBhZHZhbmNlZCB2YXJpYW50IGluc3BpcmVkIGJ5IGBgemMuYnVpbGRvdXRgYC4gIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCiAgICBgZGVkaWNhdGVkIGRvY3VtZW50YXRpb24gc2VjdGlvbiA8I2ludGVycG9sYXRpb24tb2YtdmFsdWVzPmBfLgogCiAgICBBbGwgb3B0aW9uIG5hbWVzIHVzZWQgaW4gaW50ZXJwb2xhdGlvbiB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRoZQpAQCAtODk5LDYgKzkxNywxMiBAQAogICAgY29udmVydHMgb3B0aW9uIG5hbWVzIHRvIGxvd2VyIGNhc2UpLCB0aGUgdmFsdWVzIGBgZm9vICUoYmFyKXNgYCBhbmQgYGBmb28KICAgICUoQkFSKXNgYCBhcmUgZXF1aXZhbGVudC4KIAorICAgV2hlbiAqY29udmVydGVycyogaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkKKyAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICBpbXBsZW1lbnRpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBzdHJpbmcgdG8gdGhlIGRlc2lyZWQgZGF0YXR5cGUuICBFdmVyeQorICAgY29udmVydGVyIGdldHMgaXRzIG93biBjb3JyZXNwb25kaW5nIDptZXRoOmBnZXQqKClgIG1ldGhvZCBvbiB0aGUgcGFyc2VyCisgICBvYmplY3QgYW5kIHNlY3Rpb24gcHJveGllcy4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFRoZSBkZWZhdWx0ICpkaWN0X3R5cGUqIGlzIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgLgogCkBAIC05MDcsNiArOTMxLDkgQEAKICAgICAgICplbXB0eV9saW5lc19pbl92YWx1ZXMqLCAqZGVmYXVsdF9zZWN0aW9uKiBhbmQgKmludGVycG9sYXRpb24qIHdlcmUKICAgICAgIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpjb252ZXJ0ZXJzKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdHMoKQogCkBAIC05NDQsNyArOTcxLDcgQEAKICAgIC4uIG1ldGhvZDo6IGhhc19vcHRpb24oc2VjdGlvbiwgb3B0aW9uKQogCiAgICAgICBJZiB0aGUgZ2l2ZW4gKnNlY3Rpb24qIGV4aXN0cywgYW5kIGNvbnRhaW5zIHRoZSBnaXZlbiAqb3B0aW9uKiwgcmV0dXJuCi0gICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiBJZiB0aGUgc3BlY2lmaWVkCisgICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiAgSWYgdGhlIHNwZWNpZmllZAogICAgICAgKnNlY3Rpb24qIGlzIDpjb25zdDpgTm9uZWAgb3IgYW4gZW1wdHkgc3RyaW5nLCBERUZBVUxUIGlzIGFzc3VtZWQuCiAKIApAQCAtMTA2OSw3ICsxMDk2LDcgQEAKICAgICAgIDptZXRoOmBnZXRgIG1ldGhvZC4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEl0ZW1zIHByZXNlbnQgaW4gKnZhcnMqIG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIHJlc3VsdC4gVGhlIHByZXZpb3VzCisgICAgICAgICBJdGVtcyBwcmVzZW50IGluICp2YXJzKiBubyBsb25nZXIgYXBwZWFyIGluIHRoZSByZXN1bHQuICBUaGUgcHJldmlvdXMKICAgICAgICAgIGJlaGF2aW91ciBtaXhlZCBhY3R1YWwgcGFyc2VyIG9wdGlvbnMgd2l0aCB2YXJpYWJsZXMgcHJvdmlkZWQgZm9yCiAgICAgICAgICBpbnRlcnBvbGF0aW9uLgogCkBAIC0xMTcwLDcgKzExOTcsNyBAQAogCiAgICAuLiBub3RlOjoKICAgICAgIENvbnNpZGVyIHVzaW5nIDpjbGFzczpgQ29uZmlnUGFyc2VyYCBpbnN0ZWFkIHdoaWNoIGNoZWNrcyB0eXBlcyBvZgotICAgICAgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQgaW50ZXJuYWxseS4gSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CisgICAgICB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbnRlcm5hbGx5LiAgSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CiAgICAgICBjYW4gdXNlIGBgQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSlgYC4KIAogCkBAIC0xMTgxLDcgKzEyMDgsNyBAQAogICAgICAgKmRlZmF1bHQgc2VjdGlvbiogbmFtZSBpcyBwYXNzZWQsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgICAgVHlwZSBvZiAqc2VjdGlvbiogaXMgbm90IGNoZWNrZWQgd2hpY2ggbGV0cyB1c2VycyBjcmVhdGUgbm9uLXN0cmluZyBuYW1lZAotICAgICAgc2VjdGlvbnMuIFRoaXMgYmVoYXZpb3VyIGlzIHVuc3VwcG9ydGVkIGFuZCBtYXkgY2F1c2UgaW50ZXJuYWwgZXJyb3JzLgorICAgICAgc2VjdGlvbnMuICBUaGlzIGJlaGF2aW91ciBpcyB1bnN1cHBvcnRlZCBhbmQgbWF5IGNhdXNlIGludGVybmFsIGVycm9ycy4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXQoc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSkKQEAgLTEyODIsMyArMTMwOSw0IEBACiAuLiBbMV0gQ29uZmlnIHBhcnNlcnMgYWxsb3cgZm9yIGhlYXZ5IGN1c3RvbWl6YXRpb24uICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4KICAgICAgICBjaGFuZ2luZyB0aGUgYmVoYXZpb3VyIG91dGxpbmVkIGJ5IHRoZSBmb290bm90ZSByZWZlcmVuY2UsIGNvbnN1bHQgdGhlCiAgICAgICAgYEN1c3RvbWl6aW5nIFBhcnNlciBCZWhhdmlvdXJgXyBzZWN0aW9uLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0IGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAppbmRleCA0MmI1YWYyLi5kNWEwZjA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKQEAgLTQ1LDcgKzQ1LDYgQEAKICAgIGZvciBtb3JlIGRldGFpbHMuCiAKIAotCiAuLiBkYXRhOjogRWxsaXBzaXMKIAogICAgVGhlIHNhbWUgYXMgYGAuLi5gYC4gIFNwZWNpYWwgdmFsdWUgdXNlZCBtb3N0bHkgaW4gY29uanVuY3Rpb24gd2l0aCBleHRlbmRlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCA2ZjM2ODY0Li41NTBiMzQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMTcyLDYgKzE3MiwxNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAorLi4gZnVuY3Rpb246OiByZWRpcmVjdF9zdGRlcnIobmV3X3RhcmdldCkKKworICAgU2ltaWxhciB0byA6ZnVuYzpgfmNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0YCBidXQgcmVkaXJlY3RpbmcKKyAgIDpkYXRhOmBzeXMuc3RkZXJyYCB0byBhbm90aGVyIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdC4KKworICAgVGhpcyBjb250ZXh0IG1hbmFnZXIgaXMgOnJlZjpgcmVlbnRyYW50IDxyZWVudHJhbnQtY21zPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGNsYXNzOjogQ29udGV4dERlY29yYXRvcigpCiAKICAgIEEgYmFzZSBjbGFzcyB0aGF0IGVuYWJsZXMgYSBjb250ZXh0IG1hbmFnZXIgdG8gYWxzbyBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggMzEzZGNlMC4uNjAyZTkwOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC01LDYgKzUsNyBAQAogICAgOnN5bm9wc2lzOiBXcml0ZSBhbmQgcmVhZCB0YWJ1bGFyIGRhdGEgdG8gYW5kIGZyb20gZGVsaW1pdGVkIGZpbGVzLgogLi4gc2VjdGlvbmF1dGhvcjo6IFNraXAgTW9udGFuYXJvIDxza2lwQHBvYm94LmNvbT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY3N2LnB5YAogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGNzdgpAQCAtNDE4LDcgKzQxOSw3IEBACiAKIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzICg6Y2xhc3M6YERpY3RXcml0ZXJgIGluc3RhbmNlcyBhbmQgb2JqZWN0cyByZXR1cm5lZCBieQogdGhlIDpmdW5jOmB3cml0ZXJgIGZ1bmN0aW9uKSBoYXZlIHRoZSBmb2xsb3dpbmcgcHVibGljIG1ldGhvZHMuICBBICpyb3cqIG11c3QgYmUKLWEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBvciBudW1iZXJzIGZvciA6Y2xhc3M6YFdyaXRlcmAgb2JqZWN0cyBhbmQgYSBkaWN0aW9uYXJ5CithbiBpdGVyYWJsZSBvZiBzdHJpbmdzIG9yIG51bWJlcnMgZm9yIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzIGFuZCBhIGRpY3Rpb25hcnkKIG1hcHBpbmcgZmllbGRuYW1lcyB0byBzdHJpbmdzIG9yIG51bWJlcnMgKGJ5IHBhc3NpbmcgdGhlbSB0aHJvdWdoIDpmdW5jOmBzdHJgCiBmaXJzdCkgZm9yIDpjbGFzczpgRGljdFdyaXRlcmAgb2JqZWN0cy4gIE5vdGUgdGhhdCBjb21wbGV4IG51bWJlcnMgYXJlIHdyaXR0ZW4KIG91dCBzdXJyb3VuZGVkIGJ5IHBhcmVucy4gVGhpcyBtYXkgY2F1c2Ugc29tZSBwcm9ibGVtcyBmb3Igb3RoZXIgcHJvZ3JhbXMgd2hpY2gKQEAgLTQzMCw2ICs0MzEsOCBAQAogICAgV3JpdGUgdGhlICpyb3cqIHBhcmFtZXRlciB0byB0aGUgd3JpdGVyJ3MgZmlsZSBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8KICAgIHRoZSBjdXJyZW50IGRpYWxlY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIGFyYml0cmFyeSBpdGVyYWJsZXMuCiAKIC4uIG1ldGhvZDo6IGNzdndyaXRlci53cml0ZXJvd3Mocm93cykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggZjNlNjBiNC4uZThkZmQ4MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC01OTksNiArNTk5LDEzIEBACiAgICAgICBPbmx5IG9uZSAqY2gqIGNhbiBiZSBwdXNoZWQgYmVmb3JlIDptZXRoOmBnZXRjaGAgaXMgY2FsbGVkLgogCiAKKy4uIGZ1bmN0aW9uOjogdXBkYXRlX2xpbmVzX2NvbHMoKQorCisgICBVcGRhdGUgOmVudnZhcjpgTElORVNgIGFuZCA6ZW52dmFyOmBDT0xTYC4gVXNlZnVsIGZvciBkZXRlY3RpbmcgbWFudWFsIHNjcmVlbiByZXNpemUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogdW5nZXRfd2NoKGNoKQogCiAgICBQdXNoICpjaCogc28gdGhlIG5leHQgOm1ldGg6YGdldF93Y2hgIHdpbGwgcmV0dXJuIGl0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDg4ZjNmNmUuLjk3NmNkNDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTcsNiArNyw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogVGltIFBldGVycyA8dGltQHpvcGUuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEEuTS4gS3VjaGxpbmcgPGFta0BhbWsuY2E+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2RhdGV0aW1lLnB5YAorCiAuLiBYWFggd2hhdCBvcmRlciBzaG91bGQgdGhlIHR5cGVzIGJlIGRpc2N1c3NlZCBpbj8KIAogVGhlIDptb2Q6YGRhdGV0aW1lYCBtb2R1bGUgc3VwcGxpZXMgY2xhc3NlcyBmb3IgbWFuaXB1bGF0aW5nIGRhdGVzIGFuZCB0aW1lcyBpbgpAQCAtNzU3LDEzICs3NTksMTkgQEAKICAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcwogICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24sCiAgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgotICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4gU2VlIGFsc28KLSAgIDptZXRoOmBmcm9tdGltZXN0YW1wYC4KKyAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguCiAKLSAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBgYHV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKWBgCi0gICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbjo6CisgICBUbyBnZXQgYW4gYXdhcmUgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCwgY2FsbCA6bWV0aDpgZnJvbXRpbWVzdGFtcGA6OgogCi0gICAgIGRhdGV0aW1lKDE5NzAsIDEsIDEpICsgdGltZWRlbHRhKHNlY29uZHM9dGltZXN0YW1wKQorICAgICBkYXRldGltZS5mcm9tdGltZXN0YW1wKHRpbWVzdGFtcCwgdGltZXpvbmUudXRjKQorCisgICBPbiB0aGUgUE9TSVggY29tcGxpYW50IHBsYXRmb3JtcywgaXQgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nCisgICBleHByZXNzaW9uOjoKKworICAgICBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKworICAgZXhjZXB0IHRoZSBsYXR0ZXIgZm9ybXVsYSBhbHdheXMgc3VwcG9ydHMgdGhlIGZ1bGwgeWVhcnMgcmFuZ2U6IGJldHdlZW4KKyAgIDpjb25zdDpgTUlOWUVBUmAgYW5kIDpjb25zdDpgTUFYWUVBUmAgaW5jbHVzaXZlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdGltZXN0YW1wCkBAIC0xMzc2LDEwICsxMzg0LDEzIEBACiAKICogZWZmaWNpZW50IHBpY2tsaW5nCiAKLSogaW4gQm9vbGVhbiBjb250ZXh0cywgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaXMgY29uc2lkZXJlZCB0byBiZSB0cnVlIGlmIGFuZAotICBvbmx5IGlmLCBhZnRlciBjb252ZXJ0aW5nIGl0IHRvIG1pbnV0ZXMgYW5kIHN1YnRyYWN0aW5nIDptZXRoOmB1dGNvZmZzZXRgIChvcgotICBgYDBgYCBpZiB0aGF0J3MgYGBOb25lYGApLCB0aGUgcmVzdWx0IGlzIG5vbi16ZXJvLgorSW4gYm9vbGVhbiBjb250ZXh0cywgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaXMgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgdHJ1ZS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIEJlZm9yZSBQeXRob24gMy41LCBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3YXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpZiBpdAorICAgcmVwcmVzZW50ZWQgbWlkbmlnaHQgaW4gVVRDLiAgVGhpcyBiZWhhdmlvciB3YXMgY29uc2lkZXJlZCBvYnNjdXJlIGFuZAorICAgZXJyb3ItcHJvbmUgYW5kIGhhcyBiZWVuIHJlbW92ZWQgaW4gUHl0aG9uIDMuNS4gIFNlZSA6aXNzdWU6YDEzOTM2YCBmb3IgZnVsbAorICAgZGV0YWlscy4KIAogSW5zdGFuY2UgbWV0aG9kczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGJtLnJzdCBiL0RvYy9saWJyYXJ5L2RibS5yc3QKaW5kZXggZTZhODJkNi4uM2YzYzQzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGJtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CkBAIC0zMjUsMTMgKzMyNSwxOCBAQAogICAgZHVtYmRibSBkYXRhYmFzZSBpcyBjcmVhdGVkLCBmaWxlcyB3aXRoIDpmaWxlOmAuZGF0YCBhbmQgOmZpbGU6YC5kaXJgIGV4dGVuc2lvbnMKICAgIGFyZSBjcmVhdGVkLgogCi0gICBUaGUgb3B0aW9uYWwgKmZsYWcqIGFyZ3VtZW50IGlzIGN1cnJlbnRseSBpZ25vcmVkOyB0aGUgZGF0YWJhc2UgaXMgYWx3YXlzIG9wZW5lZAotICAgZm9yIHVwZGF0ZSwgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KKyAgIFRoZSBvcHRpb25hbCAqZmxhZyogYXJndW1lbnQgc3VwcG9ydHMgb25seSB0aGUgc2VtYW50aWNzIG9mIGBgJ2MnYGAKKyAgIGFuZCBgYCduJ2BgIHZhbHVlcy4gIE90aGVyIHZhbHVlcyB3aWxsIGRlZmF1bHQgdG8gZGF0YWJhc2UgYmVpbmcgYWx3YXlzCisgICBvcGVuZWQgZm9yIHVwZGF0ZSwgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIAogICAgVGhlIG9wdGlvbmFsICptb2RlKiBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHkgd2hlbiB0aGUKICAgIGRhdGFiYXNlIGhhcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8gb2N0YWwgYGAwbzY2NmBgIChhbmQgd2lsbCBiZSBtb2RpZmllZAogICAgYnkgdGhlIHByZXZhaWxpbmcgdW1hc2spLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgOmZ1bmM6YC5vcGVuYCBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZSBmbGFnIGhhcyB0aGUgdmFsdWUKKyAgICAgIGBgJ24nYGAuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIGNsYXNzLCA6Y2xhc3M6YGR1bWJkYm1gIG9iamVjdHMKICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCA3NTliZTcwLi41ZDdmZmZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtMTIsNiArMTIsOCBAQAogLi4gbW9kdWxlYXV0aG9yOjogU3RlZmFuIEtyYWggPHNrcmFoIGF0IGJ5dGVyZWVmLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2RlY2ltYWwucHlgCisKIC4uIGltcG9ydCBtb2R1bGVzIGZvciB0ZXN0aW5nIGlubGluZSBkb2N0ZXN0cyB3aXRoIHRoZSBTcGhpbnggZG9jdGVzdCBidWlsZGVyCiAuLiB0ZXN0c2V0dXA6OiAqCiAKQEAgLTc0Miw3ICs3NDQsNyBAQAogICAgICAgKiBgYCJOYU4iYGAsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiAoTm90IGEgTnVtYmVyKS4KICAgICAgICogYGAic05hTiJgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTi4KIAotICAgLi4gbWV0aG9kOjogcXVhbnRpemUoZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUsIHdhdGNoZXhwPVRydWUpCisgICAuLiBtZXRob2Q6OiBxdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUKICAgICAgIGV4cG9uZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4KQEAgLTc2NSwxNCArNzY3LDggQEAKICAgICAgIGBgY29udGV4dGBgIGFyZ3VtZW50OyBpZiBuZWl0aGVyIGFyZ3VtZW50IGlzIGdpdmVuIHRoZSByb3VuZGluZyBtb2RlIG9mCiAgICAgICB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuCiAKLSAgICAgIElmICp3YXRjaGV4cCogaXMgc2V0IChkZWZhdWx0KSwgdGhlbiBhbiBlcnJvciBpcyByZXR1cm5lZCB3aGVuZXZlciB0aGUKLSAgICAgIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbgotICAgICAgOmF0dHI6YEV0aW55YC4KLQotICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotICAgICAgICAgKndhdGNoZXhwKiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnJvbSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbgotICAgICAgICAgYW5kIGlzIG5vdCBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uCi0gICAgICAgICAzLjQsIHdoZXJlIGl0IGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorICAgICAgQW4gZXJyb3IgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgdGhlIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4KKyAgICAgIDphdHRyOmBFbWF4YCBvciBsZXNzIHRoYW4gOmF0dHI6YEV0aW55YC4KIAogICAgLi4gbWV0aG9kOjogcmFkaXgoKQogCkBAIC0yMDkyLDQgKzIwODgsMyBAQAogCiAgICA+Pj4gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pLmNyZWF0ZV9kZWNpbWFsKCcxLjIzNDU2NzgnKQogICAgRGVjaW1hbCgnMS4yMzQ1JykKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0IGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CmluZGV4IDA2ZTcwNDguLmQyYjVmYTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKQEAgLTE2LDYgKzE2LDcgQEAKIAogLi4gdG9jdHJlZTo6CiAKKyAgIHR5cGluZy5yc3QKICAgIHB5ZG9jLnJzdAogICAgZG9jdGVzdC5yc3QKICAgIHVuaXR0ZXN0LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAppbmRleCA1ZjcyZWE2Li5lZmFhYzdhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdApAQCAtNyw2ICs3LDggQEAKIC4uIHNlY3Rpb25hdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW1fb25lQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIC4uIE1hcmt1cCBieSBGcmVkIEwuIERyYWtlLCBKci4gPGZkcmFrZUBhY20ub3JnPgogCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9kaWZmbGliLnB5YAorCiAuLiB0ZXN0c2V0dXA6OgogCiAgICBpbXBvcnQgc3lzCkBAIC0yNSw3ICsyNyw5IEBACiAgICBsaXR0bGUgZmFuY2llciB0aGFuLCBhbiBhbGdvcml0aG0gcHVibGlzaGVkIGluIHRoZSBsYXRlIDE5ODAncyBieSBSYXRjbGlmZiBhbmQKICAgIE9iZXJzaGVscCB1bmRlciB0aGUgaHlwZXJib2xpYyBuYW1lICJnZXN0YWx0IHBhdHRlcm4gbWF0Y2hpbmcuIiAgVGhlIGlkZWEgaXMgdG8KICAgIGZpbmQgdGhlIGxvbmdlc3QgY29udGlndW91cyBtYXRjaGluZyBzdWJzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIG5vICJqdW5rIgotICAgZWxlbWVudHMgKHRoZSBSYXRjbGlmZiBhbmQgT2JlcnNoZWxwIGFsZ29yaXRobSBkb2Vzbid0IGFkZHJlc3MganVuaykuICBUaGUgc2FtZQorICAgZWxlbWVudHM7IHRoZXNlICJqdW5rIiBlbGVtZW50cyBhcmUgb25lcyB0aGF0IGFyZSB1bmludGVyZXN0aW5nIGluIHNvbWUKKyAgIHNlbnNlLCBzdWNoIGFzIGJsYW5rIGxpbmVzIG9yIHdoaXRlc3BhY2UuICAoSGFuZGxpbmcganVuayBpcyBhbgorICAgZXh0ZW5zaW9uIHRvIHRoZSBSYXRjbGlmZiBhbmQgT2JlcnNoZWxwIGFsZ29yaXRobS4pIFRoZSBzYW1lCiAgICBpZGVhIGlzIHRoZW4gYXBwbGllZCByZWN1cnNpdmVseSB0byB0aGUgcGllY2VzIG9mIHRoZSBzZXF1ZW5jZXMgdG8gdGhlIGxlZnQgYW5kCiAgICB0byB0aGUgcmlnaHQgb2YgdGhlIG1hdGNoaW5nIHN1YnNlcXVlbmNlLiAgVGhpcyBkb2VzIG5vdCB5aWVsZCBtaW5pbWFsIGVkaXQKICAgIHNlcXVlbmNlcywgYnV0IGRvZXMgdGVuZCB0byB5aWVsZCBtYXRjaGVzIHRoYXQgImxvb2sgcmlnaHQiIHRvIHBlb3BsZS4KQEAgLTEwMCw3ICsxMDQsOCBAQAogCiAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHB1YmxpYzoKIAotICAgLi4gbWV0aG9kOjogbWFrZV9maWxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywgY29udGV4dD1GYWxzZSwgbnVtbGluZXM9NSkKKyAgIC4uIG1ldGhvZDo6IG1ha2VfZmlsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjPScnLCB0b2Rlc2M9JycsIGNvbnRleHQ9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1saW5lcz01LCAqLCBjaGFyc2V0PSd1dGYtOCcpCiAKICAgICAgIENvbXBhcmVzICpmcm9tbGluZXMqIGFuZCAqdG9saW5lcyogKGxpc3RzIG9mIHN0cmluZ3MpIGFuZCByZXR1cm5zIGEgc3RyaW5nIHdoaWNoCiAgICAgICBpcyBhIGNvbXBsZXRlIEhUTUwgZmlsZSBjb250YWluaW5nIGEgdGFibGUgc2hvd2luZyBsaW5lIGJ5IGxpbmUgZGlmZmVyZW5jZXMgd2l0aApAQCAtMTE5LDYgKzEyNCwxMCBAQAogICAgICAgdGhlIG5leHQgZGlmZmVyZW5jZSBoaWdobGlnaHQgYXQgdGhlIHRvcCBvZiB0aGUgYnJvd3NlciB3aXRob3V0IGFueSBsZWFkaW5nCiAgICAgICBjb250ZXh0KS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICpjaGFyc2V0KiBrZXl3b3JkLW9ubHkgYXJndW1lbnQgd2FzIGFkZGVkLiAgVGhlIGRlZmF1bHQgY2hhcnNldCBvZgorICAgICAgICAgSFRNTCBkb2N1bWVudCBjaGFuZ2VkIGZyb20gYGAnSVNPLTg4NTktMSdgYCB0byBgYCd1dGYtOCdgYC4KKwogICAgLi4gbWV0aG9kOjogbWFrZV90YWJsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjPScnLCB0b2Rlc2M9JycsIGNvbnRleHQ9RmFsc2UsIG51bWxpbmVzPTUpCiAKICAgICAgIENvbXBhcmVzICpmcm9tbGluZXMqIGFuZCAqdG9saW5lcyogKGxpc3RzIG9mIHN0cmluZ3MpIGFuZCByZXR1cm5zIGEgc3RyaW5nIHdoaWNoCkBAIC0yMDgsNyArMjE3LDcgQEAKICAgIENvbXBhcmUgKmEqIGFuZCAqYiogKGxpc3RzIG9mIHN0cmluZ3MpOyByZXR1cm4gYSA6Y2xhc3M6YERpZmZlcmBcIC1zdHlsZQogICAgZGVsdGEgKGEgOnRlcm06YGdlbmVyYXRvcmAgZ2VuZXJhdGluZyB0aGUgZGVsdGEgbGluZXMpLgogCi0gICBPcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgKmxpbmVqdW5rKiBhbmQgKmNoYXJqdW5rKiBhcmUgZm9yIGZpbHRlciBmdW5jdGlvbnMKKyAgIE9wdGlvbmFsIGtleXdvcmQgcGFyYW1ldGVycyAqbGluZWp1bmsqIGFuZCAqY2hhcmp1bmsqIGFyZSBmaWx0ZXJpbmcgZnVuY3Rpb25zCiAgICAob3IgYGBOb25lYGApOgogCiAgICAqbGluZWp1bmsqOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGFuZCByZXR1cm5zCkBAIC0yMjIsNyArMjMxLDcgQEAKICAgICpjaGFyanVuayo6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY2hhcmFjdGVyIChhIHN0cmluZyBvZiBsZW5ndGggMSksIGFuZAogICAgcmV0dXJucyBpZiB0aGUgY2hhcmFjdGVyIGlzIGp1bmssIG9yIGZhbHNlIGlmIG5vdC4gVGhlIGRlZmF1bHQgaXMgbW9kdWxlLWxldmVsCiAgICBmdW5jdGlvbiA6ZnVuYzpgSVNfQ0hBUkFDVEVSX0pVTktgLCB3aGljaCBmaWx0ZXJzIG91dCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEKLSAgIGJsYW5rIG9yIHRhYjsgbm90ZTogYmFkIGlkZWEgdG8gaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KKyAgIGJsYW5rIG9yIHRhYjsgaXQncyBhIGJhZCBpZGVhIHRvIGluY2x1ZGUgbmV3bGluZSBpbiB0aGlzISkuCiAKICAgIDpmaWxlOmBUb29scy9zY3JpcHRzL25kaWZmLnB5YCBpcyBhIGNvbW1hbmQtbGluZSBmcm9udC1lbmQgdG8gdGhpcyBmdW5jdGlvbi4KIApAQCAtMzA2LDYgKzMxNSwyMSBAQAogCiAgICBTZWUgOnJlZjpgZGlmZmxpYi1pbnRlcmZhY2VgIGZvciBhIG1vcmUgZGV0YWlsZWQgZXhhbXBsZS4KIAorLi4gZnVuY3Rpb246OiBkaWZmX2J5dGVzKGRmdW5jLCBhLCBiLCBmcm9tZmlsZT1iJycsIHRvZmlsZT1iJycsIGZyb21maWxlZGF0ZT1iJycsIHRvZmlsZWRhdGU9YicnLCBuPTMsIGxpbmV0ZXJtPWInXFxuJykKKworICAgQ29tcGFyZSAqYSogYW5kICpiKiAobGlzdHMgb2YgYnl0ZXMgb2JqZWN0cykgdXNpbmcgKmRmdW5jKjsgeWllbGQgYQorICAgc2VxdWVuY2Ugb2YgZGVsdGEgbGluZXMgKGFsc28gYnl0ZXMpIGluIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgKmRmdW5jKi4KKyAgICpkZnVuYyogbXVzdCBiZSBhIGNhbGxhYmxlLCB0eXBpY2FsbHkgZWl0aGVyIDpmdW5jOmB1bmlmaWVkX2RpZmZgIG9yCisgICA6ZnVuYzpgY29udGV4dF9kaWZmYC4KKworICAgQWxsb3dzIHlvdSB0byBjb21wYXJlIGRhdGEgd2l0aCB1bmtub3duIG9yIGluY29uc2lzdGVudCBlbmNvZGluZy4gQWxsCisgICBpbnB1dHMgZXhjZXB0ICpuKiBtdXN0IGJlIGJ5dGVzIG9iamVjdHMsIG5vdCBzdHIuIFdvcmtzIGJ5IGxvc3NsZXNzbHkKKyAgIGNvbnZlcnRpbmcgYWxsIGlucHV0cyAoZXhjZXB0ICpuKikgdG8gc3RyLCBhbmQgY2FsbGluZyBgYGRmdW5jKGEsIGIsCisgICBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZmlsZWRhdGUsIHRvZmlsZWRhdGUsIG4sIGxpbmV0ZXJtKWBgLiBUaGUgb3V0cHV0IG9mCisgICAqZGZ1bmMqIGlzIHRoZW4gY29udmVydGVkIGJhY2sgdG8gYnl0ZXMsIHNvIHRoZSBkZWx0YSBsaW5lcyB0aGF0IHlvdQorICAgcmVjZWl2ZSBoYXZlIHRoZSBzYW1lIHVua25vd24vaW5jb25zaXN0ZW50IGVuY29kaW5ncyBhcyAqYSogYW5kICpiKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGZ1bmN0aW9uOjogSVNfTElORV9KVU5LKGxpbmUpCiAKQEAgLTYyMiw2ICs2NDYsMTIgQEAKICAgIGxlbmd0aCAxKSwgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGp1bmsuIFRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgLAogICAgbWVhbmluZyB0aGF0IG5vIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGp1bmsuCiAKKyAgIFRoZXNlIGp1bmstZmlsdGVyaW5nIGZ1bmN0aW9ucyBzcGVlZCB1cCBtYXRjaGluZyB0byBmaW5kCisgICBkaWZmZXJlbmNlcyBhbmQgZG8gbm90IGNhdXNlIGFueSBkaWZmZXJpbmcgbGluZXMgb3IgY2hhcmFjdGVycyB0bworICAgYmUgaWdub3JlZC4gIFJlYWQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgOm1ldGg6YH5TZXF1ZW5jZU1hdGNoZXIuZmluZF9sb25nZXN0X21hdGNoYCBtZXRob2QncyAqaXNqdW5rKgorICAgcGFyYW1ldGVyIGZvciBhbiBleHBsYW5hdGlvbi4KKwogICAgOmNsYXNzOmBEaWZmZXJgIG9iamVjdHMgYXJlIHVzZWQgKGRlbHRhcyBnZW5lcmF0ZWQpIHZpYSBhIHNpbmdsZSBtZXRob2Q6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKaW5kZXggYjgxNmRjYy4uMmU5MzhhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXMucnN0CkBAIC00OCw4ICs0OCw5IEBACiAKIC4uIGNsYXNzOjogQnl0ZWNvZGUoeCwgKiwgZmlyc3RfbGluZT1Ob25lLCBjdXJyZW50X29mZnNldD1Ob25lKQogCi0gICBBbmFseXNlIHRoZSBieXRlY29kZSBjb3JyZXNwb25kaW5nIHRvIGEgZnVuY3Rpb24sIG1ldGhvZCwgc3RyaW5nIG9mIHNvdXJjZQotICAgY29kZSwgb3IgYSBjb2RlIG9iamVjdCAoYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGNvbXBpbGVgKS4KKworICAgQW5hbHlzZSB0aGUgYnl0ZWNvZGUgY29ycmVzcG9uZGluZyB0byBhIGZ1bmN0aW9uLCBnZW5lcmF0b3IsIG1ldGhvZCwgc3RyaW5nCisgICBvZiBzb3VyY2UgY29kZSwgb3IgYSBjb2RlIG9iamVjdCAoYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGNvbXBpbGVgKS4KIAogICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIG1hbnkgb2YgdGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYmVsb3csIG1vc3QKICAgIG5vdGFibHkgOmZ1bmM6YGdldF9pbnN0cnVjdGlvbnNgLCBhcyBpdGVyYXRpbmcgb3ZlciBhIDpjbGFzczpgQnl0ZWNvZGVgCkBAIC0xMDksNyArMTEwLDcgQEAKIC4uIGZ1bmN0aW9uOjogY29kZV9pbmZvKHgpCiAKICAgIFJldHVybiBhIGZvcm1hdHRlZCBtdWx0aS1saW5lIHN0cmluZyB3aXRoIGRldGFpbGVkIGNvZGUgb2JqZWN0IGluZm9ybWF0aW9uCi0gICBmb3IgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uLCBtZXRob2QsIHNvdXJjZSBjb2RlIHN0cmluZyBvciBjb2RlIG9iamVjdC4KKyAgIGZvciB0aGUgc3VwcGxpZWQgZnVuY3Rpb24sIGdlbmVyYXRvciwgbWV0aG9kLCBzb3VyY2UgY29kZSBzdHJpbmcgb3IgY29kZSBvYmplY3QuCiAKICAgIE5vdGUgdGhhdCB0aGUgZXhhY3QgY29udGVudHMgb2YgY29kZSBpbmZvIHN0cmluZ3MgYXJlIGhpZ2hseSBpbXBsZW1lbnRhdGlvbgogICAgZGVwZW5kZW50IGFuZCB0aGV5IG1heSBjaGFuZ2UgYXJiaXRyYXJpbHkgYWNyb3NzIFB5dGhvbiBWTXMgb3IgUHl0aG9uCkBAIC0xMzYsMTEgKzEzNywxMSBAQAogLi4gZnVuY3Rpb246OiBkaXMoeD1Ob25lLCAqLCBmaWxlPU5vbmUpCiAKICAgIERpc2Fzc2VtYmxlIHRoZSAqeCogb2JqZWN0LiAgKngqIGNhbiBkZW5vdGUgZWl0aGVyIGEgbW9kdWxlLCBhIGNsYXNzLCBhCi0gICBtZXRob2QsIGEgZnVuY3Rpb24sIGEgY29kZSBvYmplY3QsIGEgc3RyaW5nIG9mIHNvdXJjZSBjb2RlIG9yIGEgYnl0ZSBzZXF1ZW5jZQotICAgb2YgcmF3IGJ5dGVjb2RlLiAgRm9yIGEgbW9kdWxlLCBpdCBkaXNhc3NlbWJsZXMgYWxsIGZ1bmN0aW9ucy4gIEZvciBhIGNsYXNzLAotICAgaXQgZGlzYXNzZW1ibGVzIGFsbCBtZXRob2RzLiAgRm9yIGEgY29kZSBvYmplY3Qgb3Igc2VxdWVuY2Ugb2YgcmF3IGJ5dGVjb2RlLAotICAgaXQgcHJpbnRzIG9uZSBsaW5lIHBlciBieXRlY29kZSBpbnN0cnVjdGlvbi4gIFN0cmluZ3MgYXJlIGZpcnN0IGNvbXBpbGVkIHRvCi0gICBjb2RlIG9iamVjdHMgd2l0aCB0aGUgOmZ1bmM6YGNvbXBpbGVgIGJ1aWx0LWluIGZ1bmN0aW9uIGJlZm9yZSBiZWluZworICAgbWV0aG9kLCBhIGZ1bmN0aW9uLCBhIGdlbmVyYXRvciwgYSBjb2RlIG9iamVjdCwgYSBzdHJpbmcgb2Ygc291cmNlIGNvZGUgb3IKKyAgIGEgYnl0ZSBzZXF1ZW5jZSBvZiByYXcgYnl0ZWNvZGUuICBGb3IgYSBtb2R1bGUsIGl0IGRpc2Fzc2VtYmxlcyBhbGwgZnVuY3Rpb25zLgorICAgRm9yIGEgY2xhc3MsIGl0IGRpc2Fzc2VtYmxlcyBhbGwgbWV0aG9kcy4gIEZvciBhIGNvZGUgb2JqZWN0IG9yIHNlcXVlbmNlIG9mCisgICByYXcgYnl0ZWNvZGUsIGl0IHByaW50cyBvbmUgbGluZSBwZXIgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24uICBTdHJpbmdzIGFyZSBmaXJzdAorICAgY29tcGlsZWQgdG8gY29kZSBvYmplY3RzIHdpdGggdGhlIDpmdW5jOmBjb21waWxlYCBidWlsdC1pbiBmdW5jdGlvbiBiZWZvcmUgYmVpbmcKICAgIGRpc2Fzc2VtYmxlZC4gIElmIG5vIG9iamVjdCBpcyBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiBkaXNhc3NlbWJsZXMgdGhlIGxhc3QKICAgIHRyYWNlYmFjay4KIApAQCAtMzYxLDYgKzM2MiwxMyBAQAogICAgSW1wbGVtZW50cyBgYFRPUyA9IFRPUzEgKiBUT1NgYC4KIAogCisuLiBvcGNvZGU6OiBCSU5BUllfTUFUUklYX01VTFRJUExZCisKKyAgIEltcGxlbWVudHMgYGBUT1MgPSBUT1MxIEAgVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG9wY29kZTo6IEJJTkFSWV9GTE9PUl9ESVZJREUKIAogICAgSW1wbGVtZW50cyBgYFRPUyA9IFRPUzEgLy8gVE9TYGAuCkBAIC00MzMsNiArNDQxLDEzIEBACiAgICBJbXBsZW1lbnRzIGluLXBsYWNlIGBgVE9TID0gVE9TMSAqIFRPU2BgLgogCiAKKy4uIG9wY29kZTo6IElOUExBQ0VfTUFUUklYX01VTFRJUExZCisKKyAgIEltcGxlbWVudHMgaW4tcGxhY2UgYGBUT1MgPSBUT1MxIEAgVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG9wY29kZTo6IElOUExBQ0VfRkxPT1JfRElWSURFCiAKICAgIEltcGxlbWVudHMgaW4tcGxhY2UgYGBUT1MgPSBUT1MxIC8vIFRPU2BgLgpAQCAtNDkzLDYgKzUwOCwzOCBAQAogICAgSW1wbGVtZW50cyBgYGRlbCBUT1MxW1RPU11gYC4KIAogCisqKkNvcm91dGluZXMgb3Bjb2RlcyoqCisKKy4uIG9wY29kZTo6IEdFVF9BV0FJVEFCTEUKKworICAgSW1wbGVtZW50cyBgYFRPUyA9IGdldF9hd2FpdGFibGUoVE9TKWBgOyB3aGVyZSBgYGdldF9hd2FpdGFibGUobylgYAorICAgcmV0dXJucyBgYG9gYCBpZiBgYG9gYCBpcyBhIGNvcm91dGluZSBvYmplY3Q7IG9yIHJlc29sdmVkIGBgby5fX2F3YWl0X19gYC4KKworCisuLiBvcGNvZGU6OiBHRVRfQUlURVIKKworICAgSW1wbGVtZW50cyBgYFRPUyA9IGdldF9hd2FpdGFibGUoVE9TLl9fYWl0ZXJfXygpKWBgLiAgU2VlIGBgR0VUX0FXQUlUQUJMRWBgCisgICBmb3IgZGV0YWlscyBhYm91dCBgYGdldF9hd2FpdGFibGVgYAorCisKKy4uIG9wY29kZTo6IEdFVF9BTkVYVAorCisgICBJbXBsZW1lbnRzIGBgUFVTSChnZXRfYXdhaXRhYmxlKFRPUy5fX2FuZXh0X18oKSkpYGAuICBTZWUgYGBHRVRfQVdBSVRBQkxFYGAKKyAgIGZvciBkZXRhaWxzIGFib3V0IGBgZ2V0X2F3YWl0YWJsZWBgCisKKworLi4gb3Bjb2RlOjogQkVGT1JFX0FTWU5DX1dJVEgKKworICAgUmVzb2x2ZXMgYGBfX2FlbnRlcl9fYGAgYW5kIGBgX19hZXhpdF9fYGAgZnJvbSB0aGUgb2JqZWN0IG9uIHRvcCBvZiB0aGUKKyAgIHN0YWNrLiAgUHVzaGVzIGBgX19hZXhpdF9fYGAgYW5kIHJlc3VsdCBvZiBgYF9fYWVudGVyX18oKWBgIHRvIHRoZSBzdGFjay4KKworCisuLiBvcGNvZGU6OiBTRVRVUF9BU1lOQ19XSVRICisKKyAgIENyZWF0ZXMgYSBuZXcgZnJhbWUgb2JqZWN0LgorCisKKwogKipNaXNjZWxsYW5lb3VzIG9wY29kZXMqKgogCiAuLiBvcGNvZGU6OiBQUklOVF9FWFBSCkBAIC01OTcsNyArNjQ0LDcgQEAKICAgIDpvcGNvZGU6YFVOUEFDS19TRVFVRU5DRWApLgogCiAKLS4uIG9wY29kZTo6IFdJVEhfQ0xFQU5VUAorLi4gb3Bjb2RlOjogV0lUSF9DTEVBTlVQX1NUQVJUCiAKICAgIENsZWFucyB1cCB0aGUgc3RhY2sgd2hlbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYmxvY2sgZXhpdHMuICBUT1MgaXMgdGhlCiAgICBjb250ZXh0IG1hbmFnZXIncyA6bWV0aDpgX19leGl0X19gIGJvdW5kIG1ldGhvZC4gQmVsb3cgVE9TIGFyZSAxLS0zIHZhbHVlcwpAQCAtNjA5LDcgKzY1NiwxMyBAQAogICAgKiAoU0VDT05ELCBUSElSRCwgRk9VUlRIKSA9IGV4Y19pbmZvKCkKIAogICAgSW4gdGhlIGxhc3QgY2FzZSwgYGBUT1MoU0VDT05ELCBUSElSRCwgRk9VUlRIKWBgIGlzIGNhbGxlZCwgb3RoZXJ3aXNlCi0gICBgYFRPUyhOb25lLCBOb25lLCBOb25lKWBgLiAgSW4gYWRkaXRpb24sIFRPUyBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLgorICAgYGBUT1MoTm9uZSwgTm9uZSwgTm9uZSlgYC4gIFB1c2hlcyBTRUNPTkQgYW5kIHJlc3VsdCBvZiB0aGUgY2FsbAorICAgdG8gdGhlIHN0YWNrLgorCisKKy4uIG9wY29kZTo6IFdJVEhfQ0xFQU5VUF9GSU5JU0gKKworICAgUG9wcyBleGNlcHRpb24gdHlwZSBhbmQgcmVzdWx0IG9mICdleGl0JyBmdW5jdGlvbiBjYWxsIGZyb20gdGhlIHN0YWNrLgogCiAgICBJZiB0aGUgc3RhY2sgcmVwcmVzZW50cyBhbiBleGNlcHRpb24sICphbmQqIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybnMgYQogICAgJ3RydWUnIHZhbHVlLCB0aGlzIGluZm9ybWF0aW9uIGlzICJ6YXBwZWQiIGFuZCByZXBsYWNlZCB3aXRoIGEgc2luZ2xlCkBAIC03OTUsMTAgKzg0OCw2IEBACiAgICBQdXNoZXMgYSB0cnkgYmxvY2sgZnJvbSBhIHRyeS1leGNlcHQgY2xhdXNlIG9udG8gdGhlIGJsb2NrIHN0YWNrLiAqZGVsdGEqCiAgICBwb2ludHMgdG8gdGhlIGZpbmFsbHkgYmxvY2suCiAKLS4uIG9wY29kZTo6IFNUT1JFX01BUAotCi0gICBTdG9yZSBhIGtleSBhbmQgdmFsdWUgcGFpciBpbiBhIGRpY3Rpb25hcnkuICBQb3BzIHRoZSBrZXkgYW5kIHZhbHVlIHdoaWxlCi0gICBsZWF2aW5nIHRoZSBkaWN0aW9uYXJ5IG9uIHRoZSBzdGFjay4KIAogLi4gb3Bjb2RlOjogTE9BRF9GQVNUICh2YXJfbnVtKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0IGIvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdAppbmRleCBjNDk1NGQxLi4zZTZlODRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QKQEAgLTEyLDMgKzEyLDQgQEAKICAgIGRpc3R1dGlscy5yc3QKICAgIGVuc3VyZXBpcC5yc3QKICAgIHZlbnYucnN0CisgICB6aXBhcHAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CmluZGV4IDJlMzcyZGUuLjlhYTllYTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CkBAIC0xMDU4LDE1ICsxMDU4LDkgQEAKIAogICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBzYW1lIHNlYXJjaCB0ZWNobmlxdWUgYXMgOmZ1bmM6YHRlc3Rtb2RgLgogCi0gICAuLiBub3RlOjoKLSAgICAgIFVubGlrZSA6ZnVuYzpgdGVzdG1vZGAgYW5kIDpjbGFzczpgRG9jVGVzdEZpbmRlcmAsIHRoaXMgZnVuY3Rpb24gcmFpc2VzCi0gICAgICBhIDpleGM6YFZhbHVlRXJyb3JgIGlmICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MuICBZb3UgY2FuIHByZXZlbnQKLSAgICAgIHRoaXMgZXJyb3IgYnkgcGFzc2luZyBhIDpjbGFzczpgRG9jVGVzdEZpbmRlcmAgaW5zdGFuY2UgYXMgdGhlCi0gICAgICAqdGVzdF9maW5kZXIqIGFyZ3VtZW50IHdpdGggaXRzICpleGNsdWRlX2VtcHR5KiBrZXl3b3JkIGFyZ3VtZW50IHNldAotICAgICAgdG8gYGBGYWxzZWBgOjoKLQotICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcihleGNsdWRlX2VtcHR5PUZhbHNlKQotICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUodGVzdF9maW5kZXI9ZmluZGVyKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpmdW5jOmBEb2NUZXN0U3VpdGVgIHJldHVybnMgYW4gZW1wdHkgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmICptb2R1bGUqCisgICAgICBjb250YWlucyBubyBkb2NzdHJpbmdzIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCiBVbmRlciB0aGUgY292ZXJzLCA6ZnVuYzpgRG9jVGVzdFN1aXRlYCBjcmVhdGVzIGEgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIG91dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAppbmRleCBhZWVhOTQyLi5iOTFmMjZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdApAQCAtNTc4LDYgKzU3OCwxNSBAQAogICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCiAKIAorICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQorCisgICAgICBSZXR1cm4gdGhlIGxvd2VyY2FzZWQgdmFsdWUgKHdpdGhvdXQgcGFyYW1ldGVycykgb2YgdGhlIG1lc3NhZ2UncworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBpZiBpdCBoYXMgb25lLCBvciBgYE5vbmVgYC4gIFRoZQorICAgICAgcG9zc2libGUgdmFsdWVzIGZvciB0aGlzIG1ldGhvZCBhcmUgKmlubGluZSosICphdHRhY2htZW50KiBvciBgYE5vbmVgYAorICAgICAgaWYgdGhlIG1lc3NhZ2UgZm9sbG93cyA6cmZjOmAyMTgzYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIC4uIG1ldGhvZDo6IHdhbGsoKQogCiAgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKaW5kZXggMWQ3MDIyNS4uNjdkMGE2NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKQEAgLTE5NSw3ICsxOTUsOCBAQAogICAgc2V0IG9mIHRoZSB0ZXh0IGFuZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlCiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCBjb25zdHJ1Y3RvcjsgaXQgZGVmYXVsdHMKICAgIHRvIGBgdXMtYXNjaWlgYCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgYGBhc2NpaWBgIGNvZGUgcG9pbnRzLCBhbmQKLSAgIGBgdXRmLThgYCBvdGhlcndpc2UuCisgICBgYHV0Zi04YGAgb3RoZXJ3aXNlLiAgVGhlICpfY2hhcnNldCogcGFyYW1ldGVyIGFjY2VwdHMgZWl0aGVyIGEgc3RyaW5nIG9yIGEKKyAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuCiAKICAgIFVubGVzcyB0aGUgKl9jaGFyc2V0KiBhcmd1bWVudCBpcyBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYCwgdGhlCiAgICBNSU1FVGV4dCBvYmplY3QgY3JlYXRlZCB3aWxsIGhhdmUgYm90aCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgpAQCAtMjA2LDMgKzIwNyw2IEBACiAgICBgYENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgYCBoZWFkZXIsIGFmdGVyIHdoaWNoIGEgYGBzZXRfcGF5bG9hZGBgIGNhbGwKICAgIHdpbGwgYXV0b21hdGljYWxseSBlbmNvZGUgdGhlIG5ldyBwYXlsb2FkIChhbmQgYWRkIGEgbmV3CiAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpfY2hhcnNldCogYWxzbyBhY2NlcHRzIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKaW5kZXggZDRlM2ZjMS4uMDQ1YjExOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0xODcsNiArMTg3LDE4IEBACiAgICAgICA6Y29uc3Q6YEZhbHNlYCAodGhlIGRlZmF1bHQpLCBkZWZlY3RzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgICAgOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAgbWV0aG9kLgogCisKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21cXworCisgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBsaW5lcyBzdGFydGluZyB3aXRoICoiRnJvbSAiKiBpbiB0aGUgYm9keSBhcmUKKyAgICAgIGVzY2FwZWQgYnkgcHV0dGluZyBhIGBgPmBgIGluIGZyb250IG9mIHRoZW0uIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgd2hlbgorICAgICAgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4KKyAgICAgIERlZmF1bHQ6IDpjb25zdDpgRmFsc2VgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgICAgIFRoZSAqbWFuZ2xlX2Zyb21fKiBwYXJhbWV0ZXIuCisKICAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZwogICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CiAKQEAgLTMxOSw2ICszMzEsMTMgQEAKICAgIDpjb25zdDpgY29tcGF0MzJgLCB0aGF0IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgcG9saWN5LiAgVGh1cyB0aGUgZGVmYXVsdAogICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIuCiAKKyAgIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBoYXZlIHZhbHVlcyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgIDpjbGFzczpgUG9saWN5YCBkZWZhdWx0OgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KKworICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCisKICAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKICAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgogCkBAIC0zNTYsNiArMzc1LDE0IEBACiAgICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCiAKIAorQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAgaXMgcHJvdmlkZWQgYXMgYSBtb2R1bGUgY29uc3RhbnQ6CisKKy4uIGRhdGE6OiBjb21wYXQzMgorCisgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgorCisKIC4uIG5vdGU6OgogCiAgICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQpAQCAtMzc4LDYgKzQwNSwxNCBAQAogICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8gYWxsCiAgICBwb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKIAorICAgLi4gYXR0cmlidXRlOjogdXRmOAorCisgICAgICBJZiBgYEZhbHNlYGAsIGZvbGxvdyA6cmZjOmA1MzIyYCwgc3VwcG9ydGluZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbgorICAgICAgaGVhZGVycyBieSBlbmNvZGluZyB0aGVtIGFzICJlbmNvZGVkIHdvcmRzIi4gIElmIGBgVHJ1ZWBgLCBmb2xsb3cKKyAgICAgIDpyZmM6YDY1MzJgIGFuZCB1c2UgYGB1dGYtOGBgIGVuY29kaW5nIGZvciBoZWFkZXJzLiAgTWVzc2FnZXMKKyAgICAgIGZvcm1hdHRlZCBpbiB0aGlzIHdheSBtYXkgYmUgcGFzc2VkIHRvIFNNVFAgc2VydmVycyB0aGF0IHN1cHBvcnQKKyAgICAgIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkuCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJlZm9sZF9zb3VyY2UKIAogICAgICAgSWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IG9yaWdpbmF0ZWQgZnJvbSBhCkBAIC00OTksNiArNTM0LDE0IEBACiAgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQwogICAgY29tcGxpYW50LgogCisuLiBkYXRhOjogU01UUFVURjgKKworICAgVGhlIHNhbWUgYXMgYGBTTVRQYGAgZXhjZXB0IHRoYXQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBpcyBgYFRydWVgYC4KKyAgIFVzZWZ1bCBmb3Igc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHN0b3JlIHdpdGhvdXQgdXNpbmcgZW5jb2RlZAorICAgd29yZHMgaW4gdGhlIGhlYWRlcnMuICBTaG91bGQgb25seSBiZSB1c2VkIGZvciBTTVRQIHRyYXNtaXNzaW9uIGlmIHRoZQorICAgc2VuZGVyIG9yIHJlY2lwaWVudCBhZGRyZXNzZXMgaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycyAodGhlCisgICA6bWV0aDpgc210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZWAgbWV0aG9kIGhhbmRsZXMgdGhpcyBhdXRvbWF0aWNhbGx5KS4KKwogLi4gZGF0YTo6IEhUVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKaW5kZXggY2YwOTU1OS4uZDNiODM4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW51bS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKQEAgLTMxNCwxMSArMzE0LDExIEBACiAgICAgPj4+IHN0cihNb29kLmZ1bmt5KQogICAgICdteSBjdXN0b20gc3RyISAxJwogCi1UaGUgcnVsZXMgZm9yIHdoYXQgaXMgYWxsb3dlZCBhcmUgYXMgZm9sbG93czogX3N1bmRlcl8gbmFtZXMgKHN0YXJ0aW5nIGFuZAotZW5kaW5nIHdpdGggYSBzaW5nbGUgdW5kZXJzY29yZSkgYXJlIHJlc2VydmVkIGJ5IGVudW0gYW5kIGNhbm5vdCBiZSB1c2VkOwotYWxsIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCB3aXRoaW4gYW4gZW51bWVyYXRpb24gd2lsbCBiZWNvbWUgbWVtYmVycyBvZiB0aGlzCi1lbnVtZXJhdGlvbiwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mICpfX2R1bmRlcl9fKiBuYW1lcyBhbmQgZGVzY3JpcHRvcnMgKG1ldGhvZHMKLWFyZSBhbHNvIGRlc2NyaXB0b3JzKS4KK1RoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dzOiBuYW1lcyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCBhCit3aXRoIGEgc2luZ2xlIHVuZGVyc2NvcmUgYXJlIHJlc2VydmVkIGJ5IGVudW0gYW5kIGNhbm5vdCBiZSB1c2VkOyBhbGwgb3RoZXIKK2F0dHJpYnV0ZXMgZGVmaW5lZCB3aXRoaW4gYW4gZW51bWVyYXRpb24gd2lsbCBiZWNvbWUgbWVtYmVycyBvZiB0aGlzCitlbnVtZXJhdGlvbiwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHNwZWNpYWwgbWV0aG9kcyAoOm1ldGg6YF9fc3RyX19gLAorOm1ldGg6YF9fYWRkX19gLCBldGMuKSBhbmQgZGVzY3JpcHRvcnMgKG1ldGhvZHMgYXJlIGFsc28gZGVzY3JpcHRvcnMpLgogCiBOb3RlOiAgaWYgeW91ciBlbnVtZXJhdGlvbiBkZWZpbmVzIDptZXRoOmBfX25ld19fYCBhbmQvb3IgOm1ldGg6YF9faW5pdF9fYCB0aGVuCiB3aGF0ZXZlciB2YWx1ZShzKSB3ZXJlIGdpdmVuIHRvIHRoZSBlbnVtIG1lbWJlciB3aWxsIGJlIHBhc3NlZCBpbnRvIHRob3NlCkBAIC00MDAsNyArNDAwLDggQEAKIHdoaXRlc3BhY2Utc2VwYXJhdGVkIHN0cmluZyBvZiBuYW1lcywgYSBzZXF1ZW5jZSBvZiBuYW1lcywgYSBzZXF1ZW5jZSBvZgogMi10dXBsZXMgd2l0aCBrZXkvdmFsdWUgcGFpcnMsIG9yIGEgbWFwcGluZyAoZS5nLiBkaWN0aW9uYXJ5KSBvZiBuYW1lcyB0bwogdmFsdWVzLiAgVGhlIGxhc3QgdHdvIG9wdGlvbnMgZW5hYmxlIGFzc2lnbmluZyBhcmJpdHJhcnkgdmFsdWVzIHRvCi1lbnVtZXJhdGlvbnM7IHRoZSBvdGhlcnMgYXV0by1hc3NpZ24gaW5jcmVhc2luZyBpbnRlZ2VycyBzdGFydGluZyB3aXRoIDEuICBBCitlbnVtZXJhdGlvbnM7IHRoZSBvdGhlcnMgYXV0by1hc3NpZ24gaW5jcmVhc2luZyBpbnRlZ2VycyBzdGFydGluZyB3aXRoIDEgKHVzZQordGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBzdGFydGluZyB2YWx1ZSkuICBBCiBuZXcgY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgRW51bWAgaXMgcmV0dXJuZWQuICBJbiBvdGhlciB3b3JkcywgdGhlIGFib3ZlCiBhc3NpZ25tZW50IHRvIDpjbGFzczpgQW5pbWFsYCBpcyBlcXVpdmFsZW50IHRvOjoKIApAQCAtNDM4LDEyICs0MzksMTIgQEAKIAogVGhlIGNvbXBsZXRlIHNpZ25hdHVyZSBpczo6CiAKLSAgICBFbnVtKHZhbHVlPSdOZXdFbnVtTmFtZScsIG5hbWVzPTwuLi4+LCAqLCBtb2R1bGU9Jy4uLicsIHF1YWxuYW1lPScuLi4nLCB0eXBlPTxtaXhlZC1pbiBjbGFzcz4pCisgICAgRW51bSh2YWx1ZT0nTmV3RW51bU5hbWUnLCBuYW1lcz08Li4uPiwgKiwgbW9kdWxlPScuLi4nLCBxdWFsbmFtZT0nLi4uJywgdHlwZT08bWl4ZWQtaW4gY2xhc3M+LCBzdGFydD0xKQogCiA6dmFsdWU6IFdoYXQgdGhlIG5ldyBFbnVtIGNsYXNzIHdpbGwgcmVjb3JkIGFzIGl0cyBuYW1lLgogCiA6bmFtZXM6IFRoZSBFbnVtIG1lbWJlcnMuICBUaGlzIGNhbiBiZSBhIHdoaXRlc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIHN0cmluZwotICAodmFsdWVzIHdpbGwgc3RhcnQgYXQgMSk6OgorICAodmFsdWVzIHdpbGwgc3RhcnQgYXQgMSB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCk6OgogCiAgICAgJ3JlZCBncmVlbiBibHVlJyB8ICdyZWQsZ3JlZW4sYmx1ZScgfCAncmVkLCBncmVlbiwgYmx1ZScKIApAQCAtNDY1LDYgKzQ2NiwxMSBAQAogCiA6dHlwZTogdHlwZSB0byBtaXggaW4gdG8gbmV3IEVudW0gY2xhc3MuCiAKKzpzdGFydDogbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGF0IGlmIG9ubHkgbmFtZXMgYXJlIHBhc3NlZCBpbgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlICpzdGFydCogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogCiBEZXJpdmVkIEVudW1lcmF0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Vycm5vLnJzdCBiL0RvYy9saWJyYXJ5L2Vycm5vLnJzdAppbmRleCBkMjE2M2I2Li4yMmE1Y2JjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lcnJuby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXJybm8ucnN0CkBAIC00MSw3ICs0MSwxMCBAQAogCiAuLiBkYXRhOjogRUlOVFIKIAotICAgSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwKKyAgIEludGVycnVwdGVkIHN5c3RlbSBjYWxsLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIFRoaXMgZXJyb3IgaXMgbWFwcGVkIHRvIHRoZSBleGNlcHRpb24gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKIAogLi4gZGF0YTo6IEVJTwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCAyNzFhNWM4Li4yMjA5ZjE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzEwLDEwICszMTAsMjUgQEAKICAgIHJhaXNlZCwgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUKICAgIDphdHRyOmB2YWx1ZWAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgZXhjZXB0aW9uLgogCisgICBJZiBhIGdlbmVyYXRvciBmdW5jdGlvbiBkZWZpbmVkIGluIHRoZSBwcmVzZW5jZSBvZiBhIGBgZnJvbSBfX2Z1dHVyZV9fCisgICBpbXBvcnQgZ2VuZXJhdG9yX3N0b3BgYCBkaXJlY3RpdmUgcmFpc2VzIDpleGM6YFN0b3BJdGVyYXRpb25gLCBpdCB3aWxsIGJlCisgICBjb252ZXJ0ZWQgaW50byBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgKHJldGFpbmluZyB0aGUgOmV4YzpgU3RvcEl0ZXJhdGlvbmAKKyAgIGFzIHRoZSBuZXcgZXhjZXB0aW9uJ3MgY2F1c2UpLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgYGB2YWx1ZWBgIGF0dHJpYnV0ZSBhbmQgdGhlIGFiaWxpdHkgZm9yIGdlbmVyYXRvciBmdW5jdGlvbnMgdG8KICAgICAgIHVzZSBpdCB0byByZXR1cm4gYSB2YWx1ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEludHJvZHVjZWQgdGhlIFJ1bnRpbWVFcnJvciB0cmFuc2Zvcm1hdGlvbi4KKworLi4gZXhjZXB0aW9uOjogU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgIE11c3QgYmUgcmFpc2VkIGJ5IDptZXRoOmBfX2FuZXh0X19gIG1ldGhvZCBvZiBhbgorICAgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAgb2JqZWN0IHRvIHN0b3AgdGhlIGl0ZXJhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIGV4Y2VwdGlvbjo6IFN5bnRheEVycm9yCiAKICAgIFJhaXNlZCB3aGVuIHRoZSBwYXJzZXIgZW5jb3VudGVycyBhIHN5bnRheCBlcnJvci4gIFRoaXMgbWF5IG9jY3VyIGluIGFuCkBAIC01MzYsNyArNTUxLDEyIEBACiAuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCiAKICAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgotICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUlOVFJgYC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCA6cHk6ZGF0YTpgfmVycm5vLkVJTlRSYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFB5dGhvbiBub3cgcmV0cmllcyBzeXN0ZW0gY2FsbHMgd2hlbiBhIHN5c2NhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYQorICAgICAgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgCisgICAgICBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KIAogLi4gZXhjZXB0aW9uOjogSXNBRGlyZWN0b3J5RXJyb3IKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKaW5kZXggZWIyMDE2YS4uM2E1YmFkZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CkBAIC00Nyw2ICs0Nyw5IEBACiAgICBEdW1wIHRoZSB0cmFjZWJhY2tzIG9mIGFsbCB0aHJlYWRzIGludG8gKmZpbGUqLiBJZiAqYWxsX3RocmVhZHMqIGlzCiAgICBgYEZhbHNlYGAsIGR1bXAgb25seSB0aGUgY3VycmVudCB0aHJlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAKIEZhdWx0IGhhbmRsZXIgc3RhdGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTU5LDYgKzYyLDEyIEBACiAgICBwcm9kdWNlIHRyYWNlYmFja3MgZm9yIGV2ZXJ5IHJ1bm5pbmcgdGhyZWFkLiBPdGhlcndpc2UsIGR1bXAgb25seSB0aGUgY3VycmVudAogICAgdGhyZWFkLgogCisgICBUaGUgKmZpbGUqIG11c3QgYmUga2VwdCBvcGVuIHVudGlsIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGRpc2FibGVkOiBzZWUKKyAgIDpyZWY6YGlzc3VlIHdpdGggZmlsZSBkZXNjcmlwdG9ycyA8ZmF1bHRoYW5kbGVyLWZkPmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAuLiBmdW5jdGlvbjo6IGRpc2FibGUoKQogCiAgICBEaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiB1bmluc3RhbGwgdGhlIHNpZ25hbCBoYW5kbGVycyBpbnN0YWxsZWQgYnkKQEAgLTgyLDkgKzkxLDE2IEBACiAgICBjYWxsIHJlcGxhY2VzIHByZXZpb3VzIHBhcmFtZXRlcnMgYW5kIHJlc2V0cyB0aGUgdGltZW91dC4gVGhlIHRpbWVyIGhhcyBhCiAgICBzdWItc2Vjb25kIHJlc29sdXRpb24uCiAKKyAgIFRoZSAqZmlsZSogbXVzdCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIHRyYWNlYmFjayBpcyBkdW1wZWQgb3IKKyAgIDpmdW5jOmBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXJgIGlzIGNhbGxlZDogc2VlIDpyZWY6YGlzc3VlIHdpdGggZmlsZQorICAgZGVzY3JpcHRvcnMgPGZhdWx0aGFuZGxlci1mZD5gLgorCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgd2F0Y2hkb2cgdGhyZWFkIGFuZCB0aGVyZWZvcmUgaXMgbm90CiAgICBhdmFpbGFibGUgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggdGhyZWFkcyBkaXNhYmxlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCisKIC4uIGZ1bmN0aW9uOjogY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAogICAgQ2FuY2VsIHRoZSBsYXN0IGNhbGwgdG8gOmZ1bmM6YGR1bXBfdHJhY2ViYWNrX2xhdGVyYC4KQEAgLTk5LDggKzExNSwxNCBAQAogICAgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcywgb3Igb2YgdGhlIGN1cnJlbnQgdGhyZWFkIGlmICphbGxfdGhyZWFkcyogaXMKICAgIGBgRmFsc2VgYCwgaW50byAqZmlsZSouIENhbGwgdGhlIHByZXZpb3VzIGhhbmRsZXIgaWYgY2hhaW4gaXMgYGBUcnVlYGAuCiAKKyAgIFRoZSAqZmlsZSogbXVzdCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIHNpZ25hbCBpcyB1bnJlZ2lzdGVyZWQgYnkKKyAgIDpmdW5jOmB1bnJlZ2lzdGVyYDogc2VlIDpyZWY6YGlzc3VlIHdpdGggZmlsZSBkZXNjcmlwdG9ycyA8ZmF1bHRoYW5kbGVyLWZkPmAuCisKICAgIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCisKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3RlcihzaWdudW0pCiAKICAgIFVucmVnaXN0ZXIgYSB1c2VyIHNpZ25hbDogdW5pbnN0YWxsIHRoZSBoYW5kbGVyIG9mIHRoZSAqc2lnbnVtKiBzaWduYWwKQEAgLTExMCw2ICsxMzIsOCBAQAogICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgogCiAKKy4uIF9mYXVsdGhhbmRsZXItZmQ6CisKIElzc3VlIHdpdGggZmlsZSBkZXNjcmlwdG9ycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdCBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdAppbmRleCA4ZTkzMmZiLi40MzIxNDBmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mY250bC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmNudGwucnN0CkBAIC0yOCw0MSArMjgsNDEgQEAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCi0uLiBmdW5jdGlvbjo6IGZjbnRsKGZkLCBvcFssIGFyZ10pCisuLiBmdW5jdGlvbjo6IGZjbnRsKGZkLCBjbWQsIGFyZz0wKQogCi0gICBQZXJmb3JtIHRoZSBvcGVyYXRpb24gKm9wKiBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiAoZmlsZSBvYmplY3RzIHByb3ZpZGluZworICAgUGVyZm9ybSB0aGUgb3BlcmF0aW9uICpjbWQqIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIChmaWxlIG9iamVjdHMgcHJvdmlkaW5nCiAgICBhIDptZXRoOmB+aW8uSU9CYXNlLmZpbGVub2AgbWV0aG9kIGFyZSBhY2NlcHRlZCBhcyB3ZWxsKS4gIFRoZSB2YWx1ZXMgdXNlZAotICAgZm9yICpvcCogYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMKKyAgIGZvciAqY21kKiBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlIGFzIGNvbnN0YW50cwogICAgaW4gdGhlIDptb2Q6YGZjbnRsYCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW4gdGhlIHJlbGV2YW50IEMKLSAgIGhlYWRlciBmaWxlcy4gIFRoZSBhcmd1bWVudCAqYXJnKiBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHRoZSBpbnRlZ2VyCi0gICB2YWx1ZSBgYDBgYC4gIFdoZW4gcHJlc2VudCwgaXQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyIHZhbHVlLCBvciBhIHN0cmluZy4KLSAgIFdpdGggdGhlIGFyZ3VtZW50IG1pc3Npbmcgb3IgYW4gaW50ZWdlciB2YWx1ZSwgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uCi0gICBpcyB0aGUgaW50ZWdlciByZXR1cm4gdmFsdWUgb2YgdGhlIEMgOmM6ZnVuYzpgZmNudGxgIGNhbGwuICBXaGVuIHRoZSBhcmd1bWVudCBpcwotICAgYSBzdHJpbmcgaXQgcmVwcmVzZW50cyBhIGJpbmFyeSBzdHJ1Y3R1cmUsIGUuZy4gY3JlYXRlZCBieSA6ZnVuYzpgc3RydWN0LnBhY2tgLgotICAgVGhlIGJpbmFyeSBkYXRhIGlzIGNvcGllZCB0byBhIGJ1ZmZlciB3aG9zZSBhZGRyZXNzIGlzIHBhc3NlZCB0byB0aGUgQwotICAgOmM6ZnVuYzpgZmNudGxgIGNhbGwuICBUaGUgcmV0dXJuIHZhbHVlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIGlzIHRoZSBjb250ZW50cwotICAgb2YgdGhlIGJ1ZmZlciwgY29udmVydGVkIHRvIGEgc3RyaW5nIG9iamVjdC4gIFRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIHN0cmluZwotICAgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mIHRoZSAqYXJnKiBhcmd1bWVudC4gIFRoaXMgaXMgbGltaXRlZCB0byAxMDI0Ci0gICBieXRlcy4gIElmIHRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBpbiB0aGUgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzCi0gICBsYXJnZXIgdGhhbiAxMDI0IGJ5dGVzLCB0aGlzIGlzIG1vc3QgbGlrZWx5IHRvIHJlc3VsdCBpbiBhIHNlZ21lbnRhdGlvbgotICAgdmlvbGF0aW9uIG9yIGEgbW9yZSBzdWJ0bGUgZGF0YSBjb3JydXB0aW9uLgorICAgaGVhZGVyIGZpbGVzLiBUaGUgYXJndW1lbnQgKmFyZyogY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyIHZhbHVlLCBvciBhCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuIFdpdGggYW4gaW50ZWdlciB2YWx1ZSwgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzCisgICBmdW5jdGlvbiBpcyB0aGUgaW50ZWdlciByZXR1cm4gdmFsdWUgb2YgdGhlIEMgOmM6ZnVuYzpgZmNudGxgIGNhbGwuICBXaGVuCisgICB0aGUgYXJndW1lbnQgaXMgYnl0ZXMgaXQgcmVwcmVzZW50cyBhIGJpbmFyeSBzdHJ1Y3R1cmUsIGUuZy4gY3JlYXRlZCBieQorICAgOmZ1bmM6YHN0cnVjdC5wYWNrYC4gVGhlIGJpbmFyeSBkYXRhIGlzIGNvcGllZCB0byBhIGJ1ZmZlciB3aG9zZSBhZGRyZXNzIGlzCisgICBwYXNzZWQgdG8gdGhlIEMgOmM6ZnVuYzpgZmNudGxgIGNhbGwuICBUaGUgcmV0dXJuIHZhbHVlIGFmdGVyIGEgc3VjY2Vzc2Z1bAorICAgY2FsbCBpcyB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciwgY29udmVydGVkIHRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorICAgVGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aCBvZiB0aGUKKyAgICphcmcqIGFyZ3VtZW50LiBUaGlzIGlzIGxpbWl0ZWQgdG8gMTAyNCBieXRlcy4gSWYgdGhlIGluZm9ybWF0aW9uIHJldHVybmVkCisgICBpbiB0aGUgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGxhcmdlciB0aGFuIDEwMjQgYnl0ZXMsIHRoaXMgaXMKKyAgIG1vc3QgbGlrZWx5IHRvIHJlc3VsdCBpbiBhIHNlZ21lbnRhdGlvbiB2aW9sYXRpb24gb3IgYSBtb3JlIHN1YnRsZSBkYXRhCisgICBjb3JydXB0aW9uLgogCiAgICBJZiB0aGUgOmM6ZnVuYzpgZmNudGxgIGZhaWxzLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKIAotLi4gZnVuY3Rpb246OiBpb2N0bChmZCwgb3BbLCBhcmdbLCBtdXRhdGVfZmxhZ11dKQorLi4gZnVuY3Rpb246OiBpb2N0bChmZCwgcmVxdWVzdCwgYXJnPTAsIG11dGF0ZV9mbGFnPVRydWUpCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSA6ZnVuYzpgfmZjbnRsLmZjbnRsYCBmdW5jdGlvbiwgZXhjZXB0CiAgICB0aGF0IHRoZSBhcmd1bWVudCBoYW5kbGluZyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQuCiAKLSAgIFRoZSBvcCBwYXJhbWV0ZXIgaXMgbGltaXRlZCB0byB2YWx1ZXMgdGhhdCBjYW4gZml0IGluIDMyLWJpdHMuCi0gICBBZGRpdGlvbmFsIGNvbnN0YW50cyBvZiBpbnRlcmVzdCBmb3IgdXNlIGFzIHRoZSAqb3AqIGFyZ3VtZW50IGNhbiBiZQorICAgVGhlICpyZXF1ZXN0KiBwYXJhbWV0ZXIgaXMgbGltaXRlZCB0byB2YWx1ZXMgdGhhdCBjYW4gZml0IGluIDMyLWJpdHMuCisgICBBZGRpdGlvbmFsIGNvbnN0YW50cyBvZiBpbnRlcmVzdCBmb3IgdXNlIGFzIHRoZSAqcmVxdWVzdCogYXJndW1lbnQgY2FuIGJlCiAgICBmb3VuZCBpbiB0aGUgOm1vZDpgdGVybWlvc2AgbW9kdWxlLCB1bmRlciB0aGUgc2FtZSBuYW1lcyBhcyB1c2VkIGluCiAgICB0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuCiAKLSAgIFRoZSBwYXJhbWV0ZXIgKmFyZyogY2FuIGJlIG9uZSBvZiBhbiBpbnRlZ2VyLCBhYnNlbnQgKHRyZWF0ZWQgaWRlbnRpY2FsbHkgdG8gdGhlCi0gICBpbnRlZ2VyIGBgMGBgKSwgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQtb25seSBidWZmZXIgaW50ZXJmYWNlIChtb3N0IGxpa2VseQotICAgYSBwbGFpbiBQeXRob24gc3RyaW5nKSBvciBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgcmVhZC13cml0ZSBidWZmZXIgaW50ZXJmYWNlLgorICAgVGhlIHBhcmFtZXRlciAqYXJnKiBjYW4gYmUgb25lIG9mIGFuIGludGVnZXIsIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZQorICAgcmVhZC1vbmx5IGJ1ZmZlciBpbnRlcmZhY2UgKGxpa2UgOmNsYXNzOmBieXRlc2ApIG9yIGFuIG9iamVjdCBzdXBwb3J0aW5nCisgICB0aGUgcmVhZC13cml0ZSBidWZmZXIgaW50ZXJmYWNlIChsaWtlIDpjbGFzczpgYnl0ZWFycmF5YCkuCiAKICAgIEluIGFsbCBidXQgdGhlIGxhc3QgY2FzZSwgYmVoYXZpb3VyIGlzIGFzIGZvciB0aGUgOmZ1bmM6YH5mY250bC5mY250bGAKICAgIGZ1bmN0aW9uLgpAQCAtNzIsNyArNzIsNyBAQAogCiAgICBJZiBpdCBpcyBmYWxzZSwgdGhlIGJ1ZmZlcidzIG11dGFiaWxpdHkgaXMgaWdub3JlZCBhbmQgYmVoYXZpb3VyIGlzIGFzIGZvciBhCiAgICByZWFkLW9ubHkgYnVmZmVyLCBleGNlcHQgdGhhdCB0aGUgMTAyNCBieXRlIGxpbWl0IG1lbnRpb25lZCBhYm92ZSBpcyBhdm9pZGVkIC0tCi0gICBzbyBsb25nIGFzIHRoZSBidWZmZXIgeW91IHBhc3MgaXMgYXMgbGVhc3QgYXMgbG9uZyBhcyB3aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtCisgICBzbyBsb25nIGFzIHRoZSBidWZmZXIgeW91IHBhc3MgaXMgYXQgbGVhc3QgYXMgbG9uZyBhcyB3aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtCiAgICB3YW50cyB0byBwdXQgdGhlcmUsIHRoaW5ncyBzaG91bGQgd29yay4KIAogICAgSWYgKm11dGF0ZV9mbGFnKiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZW4gdGhlIGJ1ZmZlciBpcyAoaW4gZWZmZWN0KSBwYXNzZWQKQEAgLTk3LDI1ICs5NywyNSBAQAogICAgICAgYXJyYXkoJ2gnLCBbMTMzNDFdKQogCiAKLS4uIGZ1bmN0aW9uOjogZmxvY2soZmQsIG9wKQorLi4gZnVuY3Rpb246OiBmbG9jayhmZCwgb3BlcmF0aW9uKQogCi0gICBQZXJmb3JtIHRoZSBsb2NrIG9wZXJhdGlvbiAqb3AqIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIChmaWxlIG9iamVjdHMgcHJvdmlkaW5nCisgICBQZXJmb3JtIHRoZSBsb2NrIG9wZXJhdGlvbiAqb3BlcmF0aW9uKiBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiAoZmlsZSBvYmplY3RzIHByb3ZpZGluZwogICAgYSA6bWV0aDpgfmlvLklPQmFzZS5maWxlbm9gIG1ldGhvZCBhcmUgYWNjZXB0ZWQgYXMgd2VsbCkuIFNlZSB0aGUgVW5peCBtYW51YWwKICAgIDptYW5wYWdlOmBmbG9jaygyKWAgZm9yIGRldGFpbHMuICAoT24gc29tZSBzeXN0ZW1zLCB0aGlzIGZ1bmN0aW9uIGlzIGVtdWxhdGVkCiAgICB1c2luZyA6YzpmdW5jOmBmY250bGAuKQogCiAKLS4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIG9wZXJhdGlvbiwgW2xlbmd0aCwgW3N0YXJ0LCBbd2hlbmNlXV1dKQorLi4gZnVuY3Rpb246OiBsb2NrZihmZCwgY21kLCBsZW49MCwgc3RhcnQ9MCwgd2hlbmNlPTApCiAKICAgIFRoaXMgaXMgZXNzZW50aWFsbHkgYSB3cmFwcGVyIGFyb3VuZCB0aGUgOmZ1bmM6YH5mY250bC5mY250bGAgbG9ja2luZyBjYWxscy4KLSAgICpmZCogaXMgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBsb2NrIG9yIHVubG9jaywgYW5kICpvcGVyYXRpb24qCisgICAqZmQqIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCAqY21kKgogICAgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogCiAgICAqIDpjb25zdDpgTE9DS19VTmAgLS0gdW5sb2NrCiAgICAqIDpjb25zdDpgTE9DS19TSGAgLS0gYWNxdWlyZSBhIHNoYXJlZCBsb2NrCiAgICAqIDpjb25zdDpgTE9DS19FWGAgLS0gYWNxdWlyZSBhbiBleGNsdXNpdmUgbG9jawogCi0gICBXaGVuICpvcGVyYXRpb24qIGlzIDpjb25zdDpgTE9DS19TSGAgb3IgOmNvbnN0OmBMT0NLX0VYYCwgaXQgY2FuIGFsc28gYmUKKyAgIFdoZW4gKmNtZCogaXMgOmNvbnN0OmBMT0NLX1NIYCBvciA6Y29uc3Q6YExPQ0tfRVhgLCBpdCBjYW4gYWxzbyBiZQogICAgYml0d2lzZSBPUmVkIHdpdGggOmNvbnN0OmBMT0NLX05CYCB0byBhdm9pZCBibG9ja2luZyBvbiBsb2NrIGFjcXVpc2l0aW9uLgogICAgSWYgOmNvbnN0OmBMT0NLX05CYCBpcyB1c2VkIGFuZCB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQsIGFuCiAgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgpAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBzeXN0ZW1zLCA6Y29uc3Q6YExPQ0tfRVhgIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciByZWZlcnMgdG8gYQogICAgZmlsZSBvcGVuZWQgZm9yIHdyaXRpbmcuCiAKLSAgICpsZW5ndGgqIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgKnN0YXJ0KiBpcyB0aGUgYnl0ZSBvZmZzZXQgYXQKKyAgICpsZW4qIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgKnN0YXJ0KiBpcyB0aGUgYnl0ZSBvZmZzZXQgYXQKICAgIHdoaWNoIHRoZSBsb2NrIHN0YXJ0cywgcmVsYXRpdmUgdG8gKndoZW5jZSosIGFuZCAqd2hlbmNlKiBpcyBhcyB3aXRoCiAgICA6ZnVuYzpgaW8uSU9CYXNlLnNlZWtgLCBzcGVjaWZpY2FsbHk6CiAKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgKiA6Y29uc3Q6YDJgIC0tIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgKDpkYXRhOmBvcy5TRUVLX0VORGApCiAKICAgIFRoZSBkZWZhdWx0IGZvciAqc3RhcnQqIGlzIDAsIHdoaWNoIG1lYW5zIHRvIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCi0gICBUaGUgZGVmYXVsdCBmb3IgKmxlbmd0aCogaXMgMCB3aGljaCBtZWFucyB0byBsb2NrIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuICBUaGUKKyAgIFRoZSBkZWZhdWx0IGZvciAqbGVuKiBpcyAwIHdoaWNoIG1lYW5zIHRvIGxvY2sgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gIFRoZQogICAgZGVmYXVsdCBmb3IgKndoZW5jZSogaXMgYWxzbyAwLgogCiBFeGFtcGxlcyAoYWxsIG9uIGEgU1ZSNCBjb21wbGlhbnQgc3lzdGVtKTo6CkBAIC0xNDcsOSArMTQ3LDkgQEAKICAgIHJ2ID0gZmNudGwuZmNudGwoZiwgZmNudGwuRl9TRVRMS1csIGxvY2tkYXRhKQogCiBOb3RlIHRoYXQgaW4gdGhlIGZpcnN0IGV4YW1wbGUgdGhlIHJldHVybiB2YWx1ZSB2YXJpYWJsZSAqcnYqIHdpbGwgaG9sZCBhbgotaW50ZWdlciB2YWx1ZTsgaW4gdGhlIHNlY29uZCBleGFtcGxlIGl0IHdpbGwgaG9sZCBhIHN0cmluZyB2YWx1ZS4gIFRoZSBzdHJ1Y3R1cmUKLWxheS1vdXQgZm9yIHRoZSAqbG9ja2RhdGEqIHZhcmlhYmxlIGlzIHN5c3RlbSBkZXBlbmRlbnQgLS0tIHRoZXJlZm9yZSB1c2luZyB0aGUKLTpmdW5jOmBmbG9ja2AgY2FsbCBtYXkgYmUgYmV0dGVyLgoraW50ZWdlciB2YWx1ZTsgaW4gdGhlIHNlY29uZCBleGFtcGxlIGl0IHdpbGwgaG9sZCBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gIFRoZQorc3RydWN0dXJlIGxheS1vdXQgZm9yIHRoZSAqbG9ja2RhdGEqIHZhcmlhYmxlIGlzIHN5c3RlbSBkZXBlbmRlbnQgLS0tIHRoZXJlZm9yZQordXNpbmcgdGhlIDpmdW5jOmBmbG9ja2AgY2FsbCBtYXkgYmUgYmV0dGVyLgogCiAKIC4uIHNlZWFsc286OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZm9ybWF0dGVyLnJzdCBiL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QKaW5kZXggMTg0N2E4MC4uYTUxNWY3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZm9ybWF0dGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mb3JtYXR0ZXIucnN0CkBAIC01LDcgKzUsNyBAQAogICAgOnN5bm9wc2lzOiBHZW5lcmljIG91dHB1dCBmb3JtYXR0ZXIgYW5kIGRldmljZSBpbnRlcmZhY2UuCiAgICA6ZGVwcmVjYXRlZDoKIAotLi4gZGVwcmVjYXRlZDo6IDMuNAorLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDMuNgogICAgRHVlIHRvIGxhY2sgb2YgdXNhZ2UsIHRoZSBmb3JtYXR0ZXIgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIGlzIHNsYXRlZAogICAgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuNi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnJhY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2ZyYWN0aW9ucy5yc3QKaW5kZXggYzJjNzQwMS4uZTBmMDY4MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnJhY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0CkBAIC0xNzIsNiArMTcyLDkgQEAKICAgIHNpZ24gYXMgKmIqIGlmICpiKiBpcyBub256ZXJvOyBvdGhlcndpc2UgaXQgdGFrZXMgdGhlIHNpZ24gb2YgKmEqLiAgYGBnY2QoMCwKICAgIDApYGAgcmV0dXJucyBgYDBgYC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBtYXRoLmdjZGAgaW5zdGVhZC4KKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggNTM3NzMzNS4uNDA5ZjZjNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNTYsMTEgKzE1NiwxMiBAQAogCiAuLiBmdW5jdGlvbjo6IGNocihpKQogCi0gICBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgYSBjaGFyYWN0ZXIgd2hvc2UgVW5pY29kZSBjb2RlIHBvaW50IGlzIHRoZSBpbnRlZ2VyCi0gICAqaSouICBGb3IgZXhhbXBsZSwgYGBjaHIoOTcpYGAgcmV0dXJucyB0aGUgc3RyaW5nIGBgJ2EnYGAuIFRoaXMgaXMgdGhlCi0gICBpbnZlcnNlIG9mIDpmdW5jOmBvcmRgLiAgVGhlIHZhbGlkIHJhbmdlIGZvciB0aGUgYXJndW1lbnQgaXMgZnJvbSAwIHRocm91Z2gKLSAgIDEsMTE0LDExMSAoMHgxMEZGRkYgaW4gYmFzZSAxNikuICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMKLSAgIG91dHNpZGUgdGhhdCByYW5nZS4KKyAgIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGNoYXJhY3RlciB3aG9zZSBVbmljb2RlIGNvZGUgcG9pbnQgaXMgdGhlCisgICBpbnRlZ2VyICppKi4gIEZvciBleGFtcGxlLCBgYGNocig5NylgYCByZXR1cm5zIHRoZSBzdHJpbmcgYGAnYSdgYCwgd2hpbGUKKyAgIGBgY2hyKDk1NylgYCByZXR1cm5zIHRoZSBzdHJpbmcgYGAnzr0nYGAuIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YG9yZGAuCisKKyAgIFRoZSB2YWxpZCByYW5nZSBmb3IgdGhlIGFyZ3VtZW50IGlzIGZyb20gMCB0aHJvdWdoIDEsMTE0LDExMSAoMHgxMEZGRkYgaW4KKyAgIGJhc2UgMTYpLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIG91dHNpZGUgdGhhdCByYW5nZS4KIAogCiAuLiBmdW5jdGlvbjo6IGNsYXNzbWV0aG9kKGZ1bmN0aW9uKQpAQCAtOTcyLDkgKzk3MywxMSBAQAogICAgICBDaGFyYWN0ZXJzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVuY29kaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZQogICAgICBhcHByb3ByaWF0ZSBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSBgYCYjbm5uO2BgLgogCi0gICAqIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgKGFsc28gb25seSBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nKQotICAgICByZXBsYWNlcyB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIHdpdGggUHl0aG9uJ3MgYmFja3NsYXNoZWQgZXNjYXBlCi0gICAgIHNlcXVlbmNlcy4KKyAgICogYGAnYmFja3NsYXNocmVwbGFjZSdgYCByZXBsYWNlcyBtYWxmb3JtZWQgZGF0YSBieSBQeXRob24ncyBiYWNrc2xhc2hlZAorICAgICBlc2NhcGUgc2VxdWVuY2VzLgorCisgICAqIGBgJ25hbWVyZXBsYWNlJ2BgIChhbHNvIG9ubHkgc3VwcG9ydGVkIHdoZW4gd3JpdGluZykKKyAgICAgcmVwbGFjZXMgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBvcGVuKCkgYnVpbHQtaW4gZnVuY3Rpb24KQEAgLTk5OSw4ICsxMDAyLDggQEAKIAogICAgSWYgKmNsb3NlZmQqIGlzIGBgRmFsc2VgYCBhbmQgYSBmaWxlIGRlc2NyaXB0b3IgcmF0aGVyIHRoYW4gYSBmaWxlbmFtZSB3YXMKICAgIGdpdmVuLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW4gd2hlbiB0aGUgZmlsZSBpcwotICAgY2xvc2VkLiAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiAqY2xvc2VmZCogaGFzIG5vIGVmZmVjdCBhbmQgbXVzdCBiZSBgYFRydWVgYAotICAgKHRoZSBkZWZhdWx0KS4KKyAgIGNsb3NlZC4gIElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4gKmNsb3NlZmQqIG11c3QgYmUgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KQorICAgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLgogCiAgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZwogICAgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGgKQEAgLTEwNjIsMTQgKzEwNjUsMTggQEAKIAogICAgICAgVGhlIGBgJ1UnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAotLi4gWFhYIHdvcmtzIGZvciBieXRlcyB0b28sIGJ1dCBzaG91bGQgaXQ/CisKIC4uIGZ1bmN0aW9uOjogb3JkKGMpCiAKICAgIEdpdmVuIGEgc3RyaW5nIHJlcHJlc2VudGluZyBvbmUgVW5pY29kZSBjaGFyYWN0ZXIsIHJldHVybiBhbiBpbnRlZ2VyCi0gICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgY29kZQotICAgcG9pbnQgb2YgdGhhdCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBvcmQoJ2EnKWBgIHJldHVybnMgdGhlIGludGVnZXIgYGA5N2BgCi0gICBhbmQgYGBvcmQoJ1x1MjAyMCcpYGAgcmV0dXJucyBgYDgyMjRgYC4gIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YGNocmAuCisgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLAorICAgYGBvcmQoJ2EnKWBgIHJldHVybnMgdGhlIGludGVnZXIgYGA5N2BgIGFuZCBgYG9yZCgnzr0nKWBgIHJldHVybnMgYGA5NTdgYC4KKyAgIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YGNocmAuCiAKIAogLi4gZnVuY3Rpb246OiBwb3coeCwgeVssIHpdKQpAQCAtMTE4Niw2ICsxMTkzLDkgQEAKICAgIFRoZSByZXR1cm5lZCBwcm9wZXJ0eSBvYmplY3QgYWxzbyBoYXMgdGhlIGF0dHJpYnV0ZXMgYGBmZ2V0YGAsIGBgZnNldGBgLCBhbmQKICAgIGBgZmRlbGBgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBkb2NzdHJpbmdzIG9mIHByb3BlcnR5IG9iamVjdHMgYXJlIG5vdyB3cml0ZWFibGUuCisKIAogLi4gX2Z1bmMtcmFuZ2U6CiAuLiBmdW5jdGlvbjo6IHJhbmdlKHN0b3ApCkBAIC0xMjE4LDggKzEyMjgsOCBAQAogLi4gZnVuY3Rpb246OiByb3VuZChudW1iZXJbLCBuZGlnaXRzXSkKIAogICAgUmV0dXJuIHRoZSBmbG9hdGluZyBwb2ludCB2YWx1ZSAqbnVtYmVyKiByb3VuZGVkIHRvICpuZGlnaXRzKiBkaWdpdHMgYWZ0ZXIKLSAgIHRoZSBkZWNpbWFsIHBvaW50LiAgSWYgKm5kaWdpdHMqIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIHplcm8uIERlbGVnYXRlcwotICAgdG8gYGBudW1iZXIuX19yb3VuZF9fKG5kaWdpdHMpYGAuCisgICB0aGUgZGVjaW1hbCBwb2ludC4gIElmICpuZGlnaXRzKiBpcyBvbWl0dGVkLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGludGVnZXIKKyAgIHRvIGl0cyBpbnB1dC4gIERlbGVnYXRlcyB0byBgYG51bWJlci5fX3JvdW5kX18obmRpZ2l0cylgYC4KIAogICAgRm9yIHRoZSBidWlsdC1pbiB0eXBlcyBzdXBwb3J0aW5nIDpmdW5jOmByb3VuZGAsIHZhbHVlcyBhcmUgcm91bmRlZCB0byB0aGUKICAgIGNsb3Nlc3QgbXVsdGlwbGUgb2YgMTAgdG8gdGhlIHBvd2VyIG1pbnVzICpuZGlnaXRzKjsgaWYgdHdvIG11bHRpcGxlcyBhcmUKQEAgLTE0ODUsNyArMTQ5NSw5IEBACiAKICAgIFRoZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgb2YgdGhlIGl0ZXJhYmxlcyBpcyBndWFyYW50ZWVkLiBUaGlzCiAgICBtYWtlcyBwb3NzaWJsZSBhbiBpZGlvbSBmb3IgY2x1c3RlcmluZyBhIGRhdGEgc2VyaWVzIGludG8gbi1sZW5ndGggZ3JvdXBzCi0gICB1c2luZyBgYHppcCgqW2l0ZXIocyldKm4pYGAuCisgICB1c2luZyBgYHppcCgqW2l0ZXIocyldKm4pYGAuICBUaGlzIHJlcGVhdHMgdGhlICpzYW1lKiBpdGVyYXRvciBgYG5gYCB0aW1lcworICAgc28gdGhhdCBlYWNoIG91dHB1dCB0dXBsZSBoYXMgdGhlIHJlc3VsdCBvZiBgYG5gYCBjYWxscyB0byB0aGUgaXRlcmF0b3IuCisgICBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGRpdmlkaW5nIHRoZSBpbnB1dCBpbnRvIG4tbGVuZ3RoIGNodW5rcy4KIAogICAgOmZ1bmM6YHppcGAgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHVuZXF1YWwgbGVuZ3RoIGlucHV0cyB3aGVuIHlvdSBkb24ndAogICAgY2FyZSBhYm91dCB0cmFpbGluZywgdW5tYXRjaGVkIHZhbHVlcyBmcm9tIHRoZSBsb25nZXIgaXRlcmFibGVzLiAgSWYgdGhvc2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2djLnJzdCBiL0RvYy9saWJyYXJ5L2djLnJzdAppbmRleCA4MTM1NTQyLi5kMTFjMmUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2MucnN0CkBAIC0xODYsNyArMTg2LDcgQEAKICAgIGFkZGVkIHRvIHRoaXMgbGlzdCByYXRoZXIgdGhhbiBmcmVlZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIElmIHRoaXMgbGlzdCBpcyBub24tZW1wdHkgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24sIGEKKyAgICAgIElmIHRoaXMgbGlzdCBpcyBub24tZW1wdHkgYXQgOnRlcm06YGludGVycHJldGVyIHNodXRkb3duYCwgYQogICAgICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBpcyBlbWl0dGVkLCB3aGljaCBpcyBzaWxlbnQgYnkgZGVmYXVsdC4gIElmCiAgICAgICA6Y29uc3Q6YERFQlVHX1VOQ09MTEVDVEFCTEVgIGlzIHNldCwgaW4gYWRkaXRpb24gYWxsIHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgYXJlIHByaW50ZWQuCkBAIC0yNTIsOCArMjUyLDggQEAKICAgIHRvIHRoZSBgYGdhcmJhZ2VgYCBsaXN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgQWxzbyBwcmludCB0aGUgY29udGVudHMgb2YgdGhlIDpkYXRhOmBnYXJiYWdlYCBsaXN0IGF0IGludGVycHJldGVyCi0gICAgICBzaHV0ZG93biwgaWYgaXQgaXNuJ3QgZW1wdHkuCisgICAgICBBbHNvIHByaW50IHRoZSBjb250ZW50cyBvZiB0aGUgOmRhdGE6YGdhcmJhZ2VgIGxpc3QgYXQKKyAgICAgIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAsIGlmIGl0IGlzbid0IGVtcHR5LgogCiAuLiBkYXRhOjogREVCVUdfU0FWRUFMTAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IGZmMjNiNTkuLjUxNGNjNWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0zNDQsOSArMzQ0LDkgQEAKIFRoZSBlbnRpcmUgc2V0IG9mIGtleS92YWx1ZSBwYWlycyBhcmUgcGxhY2VkIGludG8gYSBkaWN0aW9uYXJ5IGFuZCBzZXQgYXMgdGhlCiAicHJvdGVjdGVkIiA6YXR0cjpgX2luZm9gIGluc3RhbmNlIHZhcmlhYmxlLgogCi1JZiB0aGUgOmZpbGU6YC5tb2AgZmlsZSdzIG1hZ2ljIG51bWJlciBpcyBpbnZhbGlkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1cgotd2hpbGUgcmVhZGluZyB0aGUgZmlsZSwgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UKLTpleGM6YE9TRXJyb3JgLgorSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIGlzCit1bmV4cGVjdGVkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1ciB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLCBpbnN0YW50aWF0aW5nIGEKKzpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBmcm9tIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nbG9iLnJzdCBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CmluZGV4IGFiY2JmMzguLjUwZjM4YTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dsb2IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICBUaGUgOm1vZDpgcGF0aGxpYmAgbW9kdWxlIG9mZmVycyBoaWdoLWxldmVsIHBhdGggb2JqZWN0cy4KIAogCi0uLiBmdW5jdGlvbjo6IGdsb2IocGF0aG5hbWUpCisuLiBmdW5jdGlvbjo6IGdsb2IocGF0aG5hbWUsICosIHJlY3Vyc2l2ZT1GYWxzZSkKIAogICAgUmV0dXJuIGEgcG9zc2libHktZW1wdHkgbGlzdCBvZiBwYXRoIG5hbWVzIHRoYXQgbWF0Y2ggKnBhdGhuYW1lKiwgd2hpY2ggbXVzdCBiZQogICAgYSBzdHJpbmcgY29udGFpbmluZyBhIHBhdGggc3BlY2lmaWNhdGlvbi4gKnBhdGhuYW1lKiBjYW4gYmUgZWl0aGVyIGFic29sdXRlCkBAIC0zNyw4ICszNywxOSBAQAogICAgOmZpbGU6YC4uLy4uL1Rvb2xzL1wqL1wqLmdpZmApLCBhbmQgY2FuIGNvbnRhaW4gc2hlbGwtc3R5bGUgd2lsZGNhcmRzLiBCcm9rZW4KICAgIHN5bWxpbmtzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0cyAoYXMgaW4gdGhlIHNoZWxsKS4KIAorICAgSWYgKnJlY3Vyc2l2ZSogaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gImBgKipgYCIgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kIHplcm8gb3IKKyAgIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLiAgSWYgdGhlIHBhdHRlcm4gaXMgZm9sbG93ZWQgYnkgYQorICAgYGBvcy5zZXBgYCwgb25seSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMgbWF0Y2guCiAKLS4uIGZ1bmN0aW9uOjogaWdsb2IocGF0aG5hbWUpCisgICAuLiBub3RlOjoKKyAgICAgIFVzaW5nIHRoZSAiYGAqKmBgIiBwYXR0ZXJuIGluIGxhcmdlIGRpcmVjdG9yeSB0cmVlcyBtYXkgY29uc3VtZQorICAgICAgYW4gaW5vcmRpbmF0ZSBhbW91bnQgb2YgdGltZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIHJlY3Vyc2l2ZSBnbG9icyB1c2luZyAiYGAqKmBgIi4KKworCisuLiBmdW5jdGlvbjo6IGlnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmU9RmFsc2UpCiAKICAgIFJldHVybiBhbiA6dGVybTpgaXRlcmF0b3JgIHdoaWNoIHlpZWxkcyB0aGUgc2FtZSB2YWx1ZXMgYXMgOmZ1bmM6YGdsb2JgCiAgICB3aXRob3V0IGFjdHVhbGx5IHN0b3JpbmcgdGhlbSBhbGwgc2ltdWx0YW5lb3VzbHkuCkBAIC01NSw4ICs2Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCi1Gb3IgZXhhbXBsZSwgY29uc2lkZXIgYSBkaXJlY3RvcnkgY29udGFpbmluZyBvbmx5IHRoZSBmb2xsb3dpbmcgZmlsZXM6Ci06ZmlsZTpgMS5naWZgLCA6ZmlsZTpgMi50eHRgLCBhbmQgOmZpbGU6YGNhcmQuZ2lmYC4gIDpmdW5jOmBnbG9iYCB3aWxsIHByb2R1Y2UKK0ZvciBleGFtcGxlLCBjb25zaWRlciBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgZmlsZXM6Cis6ZmlsZTpgMS5naWZgLCA6ZmlsZTpgMi50eHRgLCA6ZmlsZTpgY2FyZC5naWZgIGFuZCBhIHN1YmRpcmVjdG9yeSA6ZmlsZTpgc3ViYAord2hpY2ggY29udGFpbnMgb25seSB0aGUgZmlsZSA6ZmlsZTpgMy50eHRgLiAgOmZ1bmM6YGdsb2JgIHdpbGwgcHJvZHVjZQogdGhlIGZvbGxvd2luZyByZXN1bHRzLiAgTm90aWNlIGhvdyBhbnkgbGVhZGluZyBjb21wb25lbnRzIG9mIHRoZSBwYXRoIGFyZQogcHJlc2VydmVkLiA6OgogCkBAIC02Nyw2ICs3OSwxMCBAQAogICAgWycxLmdpZicsICdjYXJkLmdpZiddCiAgICA+Pj4gZ2xvYi5nbG9iKCc/LmdpZicpCiAgICBbJzEuZ2lmJ10KKyAgID4+PiBnbG9iLmdsb2IoJyoqLyoudHh0JywgcmVjdXJzaXZlPVRydWUpCisgICBbJzIudHh0JywgJ3N1Yi8zLnR4dCddCisgICA+Pj4gZ2xvYi5nbG9iKCcuLyoqLycsIHJlY3Vyc2l2ZT1UcnVlKQorICAgWycuLycsICcuL3N1Yi8nXQogCiBJZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIGZpbGVzIHN0YXJ0aW5nIHdpdGggYGAuYGAgdGhleSB3b24ndCBiZSBtYXRjaGVkIGJ5CiBkZWZhdWx0LiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSBkaXJlY3RvcnkgY29udGFpbmluZyA6ZmlsZTpgY2FyZC5naWZgIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QgYi9Eb2MvbGlicmFyeS9nemlwLnJzdAppbmRleCA3ODUzNmZhLi4wNGM0MWQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nemlwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nemlwLnJzdApAQCAtOTAsMTMgKzkwLDkgQEAKICAgIGlzIG5vIGNvbXByZXNzaW9uLiBUaGUgZGVmYXVsdCBpcyBgYDlgYC4KIAogICAgVGhlICptdGltZSogYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgbnVtZXJpYyB0aW1lc3RhbXAgdG8gYmUgd3JpdHRlbiB0bwotICAgdGhlIHN0cmVhbSB3aGVuIGNvbXByZXNzaW5nLiAgQWxsIDpwcm9ncmFtOmBnemlwYCBjb21wcmVzc2VkIHN0cmVhbXMgYXJlCi0gICByZXF1aXJlZCB0byBjb250YWluIGEgdGltZXN0YW1wLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlIGN1cnJlbnQKLSAgIHRpbWUgaXMgdXNlZC4gIFRoaXMgbW9kdWxlIGlnbm9yZXMgdGhlIHRpbWVzdGFtcCB3aGVuIGRlY29tcHJlc3Npbmc7Ci0gICBob3dldmVyLCBzb21lIHByb2dyYW1zLCBzdWNoIGFzIDpwcm9ncmFtOmBndW56aXBgXCAsIG1ha2UgdXNlIG9mIGl0LgotICAgVGhlIGZvcm1hdCBvZiB0aGUgdGltZXN0YW1wIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIHJldHVybiB2YWx1ZSBvZgotICAgYGB0aW1lLnRpbWUoKWBgIGFuZCBvZiB0aGUgYGBzdF9tdGltZWBgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IHJldHVybmVkCi0gICBieSBgYG9zLnN0YXQoKWBgLgorICAgdGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgZmllbGQgaW4gdGhlIHN0cmVhbSB3aGVuIGNvbXByZXNzaW5nLiAgSXQKKyAgIHNob3VsZCBvbmx5IGJlIHByb3ZpZGVkIGluIGNvbXByZXNzaW9uIG1vZGUuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUKKyAgIGN1cnJlbnQgdGltZSBpcyB1c2VkLiAgU2VlIHRoZSA6YXR0cjpgbXRpbWVgIGF0dHJpYnV0ZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICBDYWxsaW5nIGEgOmNsYXNzOmBHemlwRmlsZWAgb2JqZWN0J3MgOm1ldGg6YGNsb3NlYCBtZXRob2QgZG9lcyBub3QgY2xvc2UKICAgICpmaWxlb2JqKiwgc2luY2UgeW91IG1pZ2h0IHdpc2ggdG8gYXBwZW5kIG1vcmUgbWF0ZXJpYWwgYWZ0ZXIgdGhlIGNvbXByZXNzZWQKQEAgLTEwOCw5ICsxMDQsOSBAQAogICAgaW5jbHVkaW5nIGl0ZXJhdGlvbiBhbmQgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBPbmx5IHRoZQogICAgOm1ldGg6YHRydW5jYXRlYCBtZXRob2QgaXNuJ3QgaW1wbGVtZW50ZWQuCiAKLSAgIDpjbGFzczpgR3ppcEZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisgICA6Y2xhc3M6YEd6aXBGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kIGFuZCBhdHRyaWJ1dGU6CiAKLSAgIC4uIG1ldGhvZDo6IHBlZWsoW25dKQorICAgLi4gbWV0aG9kOjogcGVlayhuKQogCiAgICAgICBSZWFkICpuKiB1bmNvbXByZXNzZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCiAgICAgICBBdCBtb3N0IG9uZSBzaW5nbGUgcmVhZCBvbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0gaXMgZG9uZSB0byBzYXRpc2Z5CkBAIC0xMjQsOSArMTIwLDIxIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBhdHRyaWJ1dGU6OiBtdGltZQorCisgICAgICBXaGVuIGRlY29tcHJlc3NpbmcsIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBmaWVsZCBpbgorICAgICAgdGhlIG1vc3QgcmVjZW50bHkgcmVhZCBoZWFkZXIgbWF5IGJlIHJlYWQgZnJvbSB0aGlzIGF0dHJpYnV0ZSwgYXMgYW4KKyAgICAgIGludGVnZXIuICBUaGUgaW5pdGlhbCB2YWx1ZSBiZWZvcmUgcmVhZGluZyBhbnkgaGVhZGVycyBpcyBgYE5vbmVgYC4KKworICAgICAgQWxsIDpwcm9ncmFtOmBnemlwYCBjb21wcmVzc2VkIHN0cmVhbXMgYXJlIHJlcXVpcmVkIHRvIGNvbnRhaW4gdGhpcworICAgICAgdGltZXN0YW1wIGZpZWxkLiAgU29tZSBwcm9ncmFtcywgc3VjaCBhcyA6cHJvZ3JhbTpgZ3VuemlwYFwgLCBtYWtlIHVzZQorICAgICAgb2YgdGhlIHRpbWVzdGFtcC4gIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgOmZ1bmM6YHRpbWUudGltZWAgYW5kIHRoZSA6YXR0cjpgfm9zLnN0YXRfcmVzdWx0LnN0X210aW1lYCBhdHRyaWJ1dGUgb2YKKyAgICAgIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLnN0YXRgLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLCBhbG9uZyB3aXRoIHRoZQotICAgICAgKm10aW1lKiBhcmd1bWVudC4KKyAgICAgICptdGltZSogY29uc3RydWN0b3IgYXJndW1lbnQgYW5kIDphdHRyOmBtdGltZWAgYXR0cmlidXRlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgemVyby1wYWRkZWQgYW5kIHVuc2Vla2FibGUgZmlsZXMgd2FzIGFkZGVkLgpAQCAtMTM3LDYgKzE0NSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCd4J2BgIGFuZCBgYCd4YidgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgYXJiaXRyYXJ5CisgICAgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gLgorICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCisgICAgICBgYE5vbmVgYC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApAQCAtMTc1LDkgKzE4OSwxMCBAQAogRXhhbXBsZSBvZiBob3cgdG8gR1pJUCBjb21wcmVzcyBhbiBleGlzdGluZyBmaWxlOjoKIAogICAgaW1wb3J0IGd6aXAKKyAgIGltcG9ydCBzaHV0aWwKICAgIHdpdGggb3BlbignL2hvbWUvam9lL2ZpbGUudHh0JywgJ3JiJykgYXMgZl9pbjoKICAgICAgICB3aXRoIGd6aXAub3BlbignL2hvbWUvam9lL2ZpbGUudHh0Lmd6JywgJ3diJykgYXMgZl9vdXQ6Ci0gICAgICAgICAgIGZfb3V0LndyaXRlbGluZXMoZl9pbikKKyAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKGZfaW4sIGZfb3V0KQogCiBFeGFtcGxlIG9mIGhvdyB0byBHWklQIGNvbXByZXNzIGEgYmluYXJ5IHN0cmluZzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2hlYXBxLnJzdCBiL0RvYy9saWJyYXJ5L2hlYXBxLnJzdAppbmRleCBmODk3MGJlLi45ZmJiY2M2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oZWFwcS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaGVhcHEucnN0CkBAIC04Miw3ICs4Miw3IEBACiBUaGUgbW9kdWxlIGFsc28gb2ZmZXJzIHRocmVlIGdlbmVyYWwgcHVycG9zZSBmdW5jdGlvbnMgYmFzZWQgb24gaGVhcHMuCiAKIAotLi4gZnVuY3Rpb246OiBtZXJnZSgqaXRlcmFibGVzKQorLi4gZnVuY3Rpb246OiBtZXJnZSgqaXRlcmFibGVzLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkKIAogICAgTWVyZ2UgbXVsdGlwbGUgc29ydGVkIGlucHV0cyBpbnRvIGEgc2luZ2xlIHNvcnRlZCBvdXRwdXQgKGZvciBleGFtcGxlLCBtZXJnZQogICAgdGltZXN0YW1wZWQgZW50cmllcyBmcm9tIG11bHRpcGxlIGxvZyBmaWxlcykuICBSZXR1cm5zIGFuIDp0ZXJtOmBpdGVyYXRvcmAKQEAgLTkyLDYgKzkyLDE4IEBACiAgICBub3QgcHVsbCB0aGUgZGF0YSBpbnRvIG1lbW9yeSBhbGwgYXQgb25jZSwgYW5kIGFzc3VtZXMgdGhhdCBlYWNoIG9mIHRoZSBpbnB1dAogICAgc3RyZWFtcyBpcyBhbHJlYWR5IHNvcnRlZCAoc21hbGxlc3QgdG8gbGFyZ2VzdCkuCiAKKyAgIEhhcyB0d28gb3B0aW9uYWwgYXJndW1lbnRzIHdoaWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAqa2V5KiBzcGVjaWZpZXMgYSA6dGVybTpga2V5IGZ1bmN0aW9uYCBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvCisgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGlucHV0IGVsZW1lbnQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcworICAgYGBOb25lYGAgKGNvbXBhcmUgdGhlIGVsZW1lbnRzIGRpcmVjdGx5KS4KKworICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgaW5wdXQgZWxlbWVudHMKKyAgIGFyZSBtZXJnZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmtleSogYW5kICpyZXZlcnNlKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGZ1bmN0aW9uOjogbmxhcmdlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKaW5kZXggNDRiN2Q2ZS4uYjg0YzYwYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdApAQCAtMTYsMjEgKzE2LDEzIEBACiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3MgOmNsYXNzOmBIVE1MUGFyc2VyYCB3aGljaCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvcgogcGFyc2luZyB0ZXh0IGZpbGVzIGZvcm1hdHRlZCBpbiBIVE1MIChIeXBlclRleHQgTWFyay11cCBMYW5ndWFnZSkgYW5kIFhIVE1MLgogCi0uLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PUZhbHNlLCAqLCBjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQorLi4gY2xhc3M6OiBIVE1MUGFyc2VyKCosIGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZSkKIAotICAgQ3JlYXRlIGEgcGFyc2VyIGluc3RhbmNlLgorICAgQ3JlYXRlIGEgcGFyc2VyIGluc3RhbmNlIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCiAKLSAgIElmICpjb252ZXJ0X2NoYXJyZWZzKiBpcyBgYFRydWVgYCAoZGVmYXVsdDogYGBGYWxzZWBgKSwgYWxsIGNoYXJhY3RlcgorICAgSWYgKmNvbnZlcnRfY2hhcnJlZnMqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIGFsbCBjaGFyYWN0ZXIKICAgIHJlZmVyZW5jZXMgKGV4Y2VwdCB0aGUgb25lcyBpbiBgYHNjcmlwdGBgL2Bgc3R5bGVgYCBlbGVtZW50cykgYXJlCiAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBVbmljb2RlIGNoYXJhY3RlcnMuCi0gICBUaGUgdXNlIG9mIGBgY29udmVydF9jaGFycmVmcz1UcnVlYGAgaXMgZW5jb3VyYWdlZCBhbmQgd2lsbCBiZWNvbWUKLSAgIHRoZSBkZWZhdWx0IGluIFB5dGhvbiAzLjUuCi0KLSAgIElmICpzdHJpY3QqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpLCB0aGUgcGFyc2VyIHdpbGwgYWNjZXB0IGFuZCBwYXJzZQotICAgaW52YWxpZCBtYXJrdXAuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCB0aGUgcGFyc2VyIHdpbGwgcmFpc2UgYW4KLSAgIDpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9uIGluc3RlYWQgWyNdXyB3aGVuIGl0J3Mgbm90Ci0gICBhYmxlIHRvIHBhcnNlIHRoZSBtYXJrdXAuICBUaGUgdXNlIG9mIGBgc3RyaWN0PVRydWVgYCBpcyBkaXNjb3VyYWdlZCBhbmQKLSAgIHRoZSAqc3RyaWN0KiBhcmd1bWVudCBpcyBkZXByZWNhdGVkLgogCiAgICBBbiA6Y2xhc3M6YC5IVE1MUGFyc2VyYCBpbnN0YW5jZSBpcyBmZWQgSFRNTCBkYXRhIGFuZCBjYWxscyBoYW5kbGVyIG1ldGhvZHMKICAgIHdoZW4gc3RhcnQgdGFncywgZW5kIHRhZ3MsIHRleHQsIGNvbW1lbnRzLCBhbmQgb3RoZXIgbWFya3VwIGVsZW1lbnRzIGFyZQpAQCAtNDAsMzEgKzMyLDExIEBACiAgICBUaGlzIHBhcnNlciBkb2VzIG5vdCBjaGVjayB0aGF0IGVuZCB0YWdzIG1hdGNoIHN0YXJ0IHRhZ3Mgb3IgY2FsbCB0aGUgZW5kLXRhZwogICAgaGFuZGxlciBmb3IgZWxlbWVudHMgd2hpY2ggYXJlIGNsb3NlZCBpbXBsaWNpdGx5IGJ5IGNsb3NpbmcgYW4gb3V0ZXIgZWxlbWVudC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICpzdHJpY3QqIGFyZ3VtZW50IGFkZGVkLgotCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy41Ci0gICAgICBUaGUgKnN0cmljdCogYXJndW1lbnQgYW5kIHRoZSBzdHJpY3QgbW9kZSBoYXZlIGJlZW4gZGVwcmVjYXRlZC4KLSAgICAgIFRoZSBwYXJzZXIgaXMgbm93IGFibGUgdG8gYWNjZXB0IGFuZCBwYXJzZSBpbnZhbGlkIG1hcmt1cCB0b28uCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAqY29udmVydF9jaGFycmVmcyoga2V5d29yZCBhcmd1bWVudCBhZGRlZC4KIAotQW4gZXhjZXB0aW9uIGlzIGRlZmluZWQgYXMgd2VsbDoKLQotCi0uLiBleGNlcHRpb246OiBIVE1MUGFyc2VFcnJvcgotCi0gICBFeGNlcHRpb24gcmFpc2VkIGJ5IHRoZSA6Y2xhc3M6YEhUTUxQYXJzZXJgIGNsYXNzIHdoZW4gaXQgZW5jb3VudGVycyBhbiBlcnJvcgotICAgd2hpbGUgcGFyc2luZyBhbmQgKnN0cmljdCogaXMgYGBUcnVlYGAuICBUaGlzIGV4Y2VwdGlvbiBwcm92aWRlcyB0aHJlZQotICAgYXR0cmlidXRlczogOmF0dHI6YG1zZ2AgaXMgYSBicmllZiBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlIGVycm9yLAotICAgOmF0dHI6YGxpbmVub2AgaXMgdGhlIG51bWJlciBvZiB0aGUgbGluZSBvbiB3aGljaCB0aGUgYnJva2VuIGNvbnN0cnVjdCB3YXMKLSAgIGRldGVjdGVkLCBhbmQgOmF0dHI6YG9mZnNldGAgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGludG8gdGhlIGxpbmUgYXQKLSAgIHdoaWNoIHRoZSBjb25zdHJ1Y3Qgc3RhcnRzLgotCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy41Ci0gICAgICBUaGlzIGV4Y2VwdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGJlY2F1c2UgaXQncyBuZXZlciByYWlzZWQgYnkgdGhlIHBhcnNlcgotICAgICAgKHdoZW4gdGhlIGRlZmF1bHQgbm9uLXN0cmljdCBtb2RlIGlzIHVzZWQpLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBhcmd1bWVudCAqY29udmVydF9jaGFycmVmcyogaXMgbm93IGBgVHJ1ZWBgLgogCiAKIEV4YW1wbGUgSFRNTCBQYXJzZXIgQXBwbGljYXRpb24KQEAgLTI0Niw4ICsyMTgsNyBAQAogCiAgICBUaGUgKmRhdGEqIHBhcmFtZXRlciB3aWxsIGJlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGRlY2xhcmF0aW9uIGluc2lkZQogICAgdGhlIGBgPCFbLi4uXT5gYCBtYXJrdXAuICBJdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIGJlIG92ZXJyaWRkZW4gYnkgYQotICAgZGVyaXZlZCBjbGFzcy4gIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIHJhaXNlcyBhbiA6ZXhjOmBIVE1MUGFyc2VFcnJvcmAKLSAgIHdoZW4gKnN0cmljdCogaXMgYGBUcnVlYGAuCisgICBkZXJpdmVkIGNsYXNzLiAgVGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLgogCiAKIC4uIF9odG1scGFyc2VyLWV4YW1wbGVzOgpAQCAtMzU4LDkgKzMyOSwzIEBACiAgICBEYXRhICAgICA6IHRhZyBzb3VwCiAgICBFbmQgdGFnICA6IHAKICAgIEVuZCB0YWcgIDogYQotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWyNdIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgKnN0cmljdCogbW9kZSBkb2VzIG5vdCByYWlzZQotICAgICAgIGV4Y2VwdGlvbnMgZm9yIGFsbCBub24tY29tcGxpYW50IEhUTUwuICBUaGF0IGlzLCBzb21lIGludmFsaWQgSFRNTAotICAgICAgIGlzIHRvbGVyYXRlZCBldmVuIGluICpzdHJpY3QqIG1vZGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggODA3ZjY4NS4uZDU3NjQ5YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtMTgwLDYgKzE4MCwxNyBAQAogICAgaXMgcmVjZWl2ZWQgaW4gdGhlIEhUVFAgcHJvdG9jb2wgZnJvbSB0aGUgc2VydmVyLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFJlbW90ZURpc2Nvbm5lY3RlZAorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYCBhbmQgOmV4YzpgQmFkU3RhdHVzTGluZWAuICBSYWlzZWQKKyAgIGJ5IDptZXRoOmBIVFRQQ29ubmVjdGlvbi5nZXRyZXNwb25zZWAgd2hlbiB0aGUgYXR0ZW1wdCB0byByZWFkIHRoZSByZXNwb25zZQorICAgcmVzdWx0cyBpbiBubyBkYXRhIHJlYWQgZnJvbSB0aGUgY29ubmVjdGlvbiwgaW5kaWNhdGluZyB0aGF0IHRoZSByZW1vdGUgZW5kCisgICBoYXMgY2xvc2VkIHRoZSBjb25uZWN0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFByZXZpb3VzbHksIDpleGM6YEJhZFN0YXR1c0xpbmVgXCBgYCgnJylgYCB3YXMgcmFpc2VkLgorCisKIFRoZSBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhcmU6CiAKIC4uIGRhdGE6OiBIVFRQX1BPUlQKQEAgLTE5MSwyMjEgKzIwMiwxNSBAQAogCiAgICBUaGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgSFRUUFMgcHJvdG9jb2wgKGFsd2F5cyBgYDQ0M2BgKS4KIAotYW5kIGFsc28gdGhlIGZvbGxvd2luZyBjb25zdGFudHMgZm9yIGludGVnZXIgc3RhdHVzIGNvZGVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgQ29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbHVlICAgfCBEZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb25zdDpgQ09OVElOVUVgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDEwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4xLjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMS4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBTV0lUQ0hJTkdfUFJPVE9DT0xTYCAgICAgICAgICAgICB8IGBgMTAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjEuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4xLjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBST0NFU1NJTkdgICAgICAgICAgICAgICAgICAgICAgIHwgYGAxMDJgYCB8IFdFQkRBViwgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzEwMj5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE9LYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQ1JFQVRFRGAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBBQ0NFUFRFRGAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMjAyYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjM+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OYCAgIHwgYGAyMDNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuND5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9fQ09OVEVOVGAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIwNGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi41PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVNFVF9DT05URU5UYCAgICAgICAgICAgICAgICAgICB8IGBgMjA1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjY+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBBUlRJQUxfQ09OVEVOVGAgICAgICAgICAgICAgICAgIHwgYGAyMDZgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi43ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuNz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTVVMVElfU1RBVFVTYCAgICAgICAgICAgICAgICAgICAgfCBgYDIwN2BgIHwgV0VCREFWIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfMjA3PmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSU1fVVNFRGAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIyNmBgIHwgRGVsdGEgZW5jb2RpbmcgaW4gSFRUUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAzMjI5YCwgU2VjdGlvbiAxMC40LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTVVMVElQTEVfQ0hPSUNFU2AgICAgICAgICAgICAgICAgfCBgYDMwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBNT1ZFRF9QRVJNQU5FTlRMWWAgICAgICAgICAgICAgICB8IGBgMzAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEZPVU5EYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAzMDJgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgU0VFX09USEVSYCAgICAgICAgICAgICAgICAgICAgICAgfCBgYDMwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfTU9ESUZJRURgICAgICAgICAgICAgICAgICAgICB8IGBgMzA0YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFVTRV9QUk9YWWAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAzMDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVEVNUE9SQVJZX1JFRElSRUNUYCAgICAgICAgICAgICAgfCBgYDMwN2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy44PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBCQURfUkVRVUVTVGAgICAgICAgICAgICAgICAgICAgICB8IGBgNDAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFVOQVVUSE9SSVpFRGAgICAgICAgICAgICAgICAgICAgIHwgYGA0MDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUEFZTUVOVF9SRVFVSVJFRGAgICAgICAgICAgICAgICAgfCBgYDQwMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4zPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBGT1JCSURERU5gICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDAzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjQ+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PVF9GT1VORGAgICAgICAgICAgICAgICAgICAgICAgIHwgYGA0MDRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuNT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTUVUSE9EX05PVF9BTExPV0VEYCAgICAgICAgICAgICAgfCBgYDQwNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC42PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfQUNDRVBUQUJMRWAgICAgICAgICAgICAgICAgICB8IGBgNDA2YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40Ljc+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYCAgIHwgYGA0MDdgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC44ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuOD5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVF9USU1FT1VUYCAgICAgICAgICAgICAgICAgfCBgYDQwOGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC45PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBDT05GTElDVGAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDA5YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjEwPmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEdPTkVgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGA0MTBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTE+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTEVOR1RIX1JFUVVJUkVEYCAgICAgICAgICAgICAgICAgfCBgYDQxMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMj5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUkVDT05ESVRJT05fRkFJTEVEYCAgICAgICAgICAgICB8IGBgNDEyYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjEzPmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRWAgICAgICAgIHwgYGA0MTNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTQ+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVF9VUklfVE9PX0xPTkdgICAgICAgICAgICAgfCBgYDQxNGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xNT5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVTlNVUFBPUlRFRF9NRURJQV9UWVBFYCAgICAgICAgICB8IGBgNDE1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE2PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEVgIHwgYGA0MTZgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTc+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRVhQRUNUQVRJT05fRkFJTEVEYCAgICAgICAgICAgICAgfCBgYDQxN2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xOD5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVTlBST0NFU1NBQkxFX0VOVElUWWAgICAgICAgICAgICB8IGBgNDIyYGAgfCBXRUJEQVYsIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU180MjI+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBMT0NLRURgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDIzYGAgfCBXRUJEQVYgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU180MjM+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBGQUlMRURfREVQRU5ERU5DWWAgICAgICAgICAgICAgICB8IGBgNDI0YGAgfCBXRUJEQVYsIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU180MjQ+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVUEdSQURFX1JFUVVJUkVEYCAgICAgICAgICAgICAgICB8IGBgNDI2YGAgfCBIVFRQIFVwZ3JhZGUgdG8gVExTLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI4MTdgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUkVDT05ESVRJT05fUkVRVUlSRURgICAgICAgICAgICB8IGBgNDI4YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBUT09fTUFOWV9SRVFVRVNUU2AgICAgICAgICAgICAgICB8IGBgNDI5YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFYCB8IGBgNDMxYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBJTlRFUk5BTF9TRVJWRVJfRVJST1JgICAgICAgICAgICB8IGBgNTAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PVF9JTVBMRU1FTlRFRGAgICAgICAgICAgICAgICAgIHwgYGA1MDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQkFEX0dBVEVXQVlgICAgICAgICAgICAgICAgICAgICAgfCBgYDUwMmBgIHwgSFRUUC8xLjEgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS4zPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBTRVJWSUNFX1VOQVZBSUxBQkxFYCAgICAgICAgICAgICB8IGBgNTAzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjQ+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEdBVEVXQVlfVElNRU9VVGAgICAgICAgICAgICAgICAgIHwgYGA1MDRgYCB8IEhUVFAvMS4xIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuNT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURgICAgICAgfCBgYDUwNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS42PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBJTlNVRkZJQ0lFTlRfU1RPUkFHRWAgICAgICAgICAgICB8IGBgNTA3YGAgfCBXRUJEQVYsIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU181MDc+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfRVhURU5ERURgICAgICAgICAgICAgICAgICAgICB8IGBgNTEwYGAgfCBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI3NzRgLCBTZWN0aW9uIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYCB8IGBgNTExYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgIEFkZGVkIGNvZGVzIGBgNDI4YGAsIGBgNDI5YGAsIGBgNDMxYGAgYW5kIGBgNTExYGAgZnJvbSA6cmZjOmA2NTg1YC4KLQotCiAuLiBkYXRhOjogcmVzcG9uc2VzCiAKICAgIFRoaXMgZGljdGlvbmFyeSBtYXBzIHRoZSBIVFRQIDEuMSBzdGF0dXMgY29kZXMgdG8gdGhlIFczQyBuYW1lcy4KIAogICAgRXhhbXBsZTogYGBodHRwLmNsaWVudC5yZXNwb25zZXNbaHR0cC5jbGllbnQuTk9UX0ZPVU5EXWBgIGlzIGBgJ05vdCBGb3VuZCdgYC4KIAorU2VlIDpyZWY6YGh0dHAtc3RhdHVzLWNvZGVzYCBmb3IgYSBsaXN0IG9mIEhUVFAgc3RhdHVzIGNvZGVzIHRoYXQgYXJlCithdmFpbGFibGUgaW4gdGhpcyBtb2R1bGUgYXMgY29uc3RhbnRzLgorCiAKIC4uIF9odHRwY29ubmVjdGlvbi1vYmplY3RzOgogCkBAIC00NTgsNiArMjYzLDExIEBACiAgICAgICBOb3RlIHRoYXQgeW91IG11c3QgaGF2ZSByZWFkIHRoZSB3aG9sZSByZXNwb25zZSBiZWZvcmUgeW91IGNhbiBzZW5kIGEgbmV3CiAgICAgICByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiBhIDpleGM6YENvbm5lY3Rpb25FcnJvcmAgb3Igc3ViY2xhc3MgaXMgcmFpc2VkLCB0aGUKKyAgICAgIDpjbGFzczpgSFRUUENvbm5lY3Rpb25gIG9iamVjdCB3aWxsIGJlIHJlYWR5IHRvIHJlY29ubmVjdCB3aGVuCisgICAgICBhIG5ldyByZXF1ZXN0IGlzIHNlbnQuCisKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uc2V0X2RlYnVnbGV2ZWwobGV2ZWwpCiAKQEAgLTQ5Niw3ICszMDYsOSBAQAogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5jb25uZWN0KCkKIAotICAgQ29ubmVjdCB0byB0aGUgc2VydmVyIHNwZWNpZmllZCB3aGVuIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQuCisgICBDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgc3BlY2lmaWVkIHdoZW4gdGhlIG9iamVjdCB3YXMgY3JlYXRlZC4gIEJ5IGRlZmF1bHQsCisgICB0aGlzIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gbWFraW5nIGEgcmVxdWVzdCBpZiB0aGUgY2xpZW50IGRvZXMgbm90CisgICBhbHJlYWR5IGhhdmUgYSBjb25uZWN0aW9uLgogCiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CmluZGV4IDY0NmYyZTguLjdjODVkMDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdApAQCAtMTQzLDI2ICsxNDMsNDMgQEAKIAogICAgVGhlIGtleXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICA6bWV0aDpgfk1vcnNlbC5fX2VxX19gIG5vdyB0YWtlcyA6YXR0cjpgfk1vcnNlbC5rZXlgIGFuZCA6YXR0cjpgfk1vcnNlbC52YWx1ZWAKKyAgICAgIGludG8gYWNjb3VudC4KKwogCiAuLiBhdHRyaWJ1dGU6OiBNb3JzZWwudmFsdWUKIAogICAgVGhlIHZhbHVlIG9mIHRoZSBjb29raWUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIGFzc2lnbmluZyB0byBgYHZhbHVlYGA7IHVzZSA6bWV0aDpgfk1vcnNlbC5zZXRgIGluc3RlYWQuCisKIAogLi4gYXR0cmlidXRlOjogTW9yc2VsLmNvZGVkX3ZhbHVlCiAKICAgIFRoZSBlbmNvZGVkIHZhbHVlIG9mIHRoZSBjb29raWUgLS0tIHRoaXMgaXMgd2hhdCBzaG91bGQgYmUgc2VudC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgYXNzaWduaW5nIHRvIGBgY29kZWRfdmFsdWVgYDsgdXNlIDptZXRoOmB+TW9yc2VsLnNldGAgaW5zdGVhZC4KKwogCiAuLiBhdHRyaWJ1dGU6OiBNb3JzZWwua2V5CiAKICAgIFRoZSBuYW1lIG9mIHRoZSBjb29raWUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIGFzc2lnbmluZyB0byBgYGtleWBgOyB1c2UgOm1ldGg6YH5Nb3JzZWwuc2V0YCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IE1vcnNlbC5zZXQoa2V5LCB2YWx1ZSwgY29kZWRfdmFsdWUpCiAKICAgIFNldCB0aGUgKmtleSosICp2YWx1ZSogYW5kICpjb2RlZF92YWx1ZSogYXR0cmlidXRlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVGhlIHVuZG9jdW1lbnRlZCAqTGVnYWxDaGFycyogcGFyYW1ldGVyIGlzIGlnbm9yZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgYSBmdXR1cmUgdmVyc2lvbi4KKwogCiAuLiBtZXRob2Q6OiBNb3JzZWwuaXNSZXNlcnZlZEtleShLKQogCkBAIC0xOTMsNiArMjEwLDMwIEBACiAgICBUaGUgbWVhbmluZyBmb3IgKmF0dHJzKiBpcyB0aGUgc2FtZSBhcyBpbiA6bWV0aDpgb3V0cHV0YC4KIAogCisuLiBtZXRob2Q6OiBNb3JzZWwudXBkYXRlKHZhbHVlcykKKworICAgVXBkYXRlIHRoZSB2YWx1ZXMgaW4gdGhlIE1vcnNlbCBkaWN0aW9uYXJ5IHdpdGggdGhlIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeQorICAgKnZhbHVlcyouICBSYWlzZSBhbiBlcnJvciBpZiBhbnkgb2YgdGhlIGtleXMgaW4gdGhlICp2YWx1ZXMqIGRpY3QgaXMgbm90IGEKKyAgIHZhbGlkIDpyZmM6YDIxMDlgIGF0dHJpYnV0ZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIGFuIGVycm9yIGlzIHJhaXNlZCBmb3IgaW52YWxpZCBrZXlzLgorCisKKy4uIG1ldGhvZDo6IE1vcnNlbC5jb3B5KHZhbHVlKQorCisgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIE1vcnNlbCBvYmplY3QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICByZXR1cm4gYSBNb3JzZWwgb2JqZWN0IGluc3RlYWQgb2YgYSBkaWN0LgorCisKKy4uIG1ldGhvZDo6IE1vcnNlbC5zZXRkZWZhdWx0KGtleSwgdmFsdWU9Tm9uZSkKKworICAgUmFpc2UgYW4gZXJyb3IgaWYga2V5IGlzIG5vdCBhIHZhbGlkIDpyZmM6YDIxMDlgIGF0dHJpYnV0ZSwgb3RoZXJ3aXNlCisgICBiZWhhdmUgdGhlIHNhbWUgYXMgOm1ldGg6YGRpY3Quc2V0ZGVmYXVsdGAuCisKKwogLi4gX2Nvb2tpZS1leGFtcGxlOgogCiBFeGFtcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAucnN0CmluZGV4IGEzODdhMzcuLmI2ZjJjNTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAucnN0CkBAIC0xLDcgKzEsMTYgQEAKIDptb2Q6YGh0dHBgIC0tLSBIVFRQIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotYGBodHRwYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2V2ZXJhbCBtb2R1bGVzIGZvciB3b3JraW5nIHdpdGggdGhlCisuLiBtb2R1bGU6OiBodHRwCisgICA6c3lub3BzaXM6IEhUVFAgc3RhdHVzIGNvZGVzIGFuZCBtZXNzYWdlcworCisuLiBpbmRleDo6CisgICBwYWlyOiBIVFRQOyBwcm90b2NvbAorICAgc2luZ2xlOiBIVFRQOyBodHRwIChzdGFuZGFyZCBtb2R1bGUpCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2h0dHAvX19pbml0X18ucHlgCisKKzptb2Q6YGh0dHBgIGlzIGEgcGFja2FnZSB0aGF0IGNvbGxlY3RzIHNldmVyYWwgbW9kdWxlcyBmb3Igd29ya2luZyB3aXRoIHRoZQogSHlwZXJUZXh0IFRyYW5zZmVyIFByb3RvY29sOgogCiAqIDptb2Q6YGh0dHAuY2xpZW50YCBpcyBhIGxvdy1sZXZlbCBIVFRQIHByb3RvY29sIGNsaWVudDsgZm9yIGhpZ2gtbGV2ZWwgVVJMCkBAIC05LDMgKzE4LDEwNSBAQAogKiA6bW9kOmBodHRwLnNlcnZlcmAgY29udGFpbnMgYmFzaWMgSFRUUCBzZXJ2ZXIgY2xhc3NlcyBiYXNlZCBvbiA6bW9kOmBzb2NrZXRzZXJ2ZXJgCiAqIDptb2Q6YGh0dHAuY29va2llc2AgaGFzIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHN0YXRlIG1hbmFnZW1lbnQgd2l0aCBjb29raWVzCiAqIDptb2Q6YGh0dHAuY29va2llamFyYCBwcm92aWRlcyBwZXJzaXN0ZW5jZSBvZiBjb29raWVzCisKKzptb2Q6YGh0dHBgIGlzIGFsc28gYSBtb2R1bGUgdGhhdCBkZWZpbmVzIGEgbnVtYmVyIG9mIEhUVFAgc3RhdHVzIGNvZGVzIGFuZAorYXNzb2NpYXRlZCBtZXNzYWdlcyB0aHJvdWdoIHRoZSA6Y2xhc3M6YGh0dHAuSFRUUFN0YXR1c2AgZW51bToKKworLi4gY2xhc3M6OiBIVFRQU3RhdHVzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICBBIHN1YmNsYXNzIG9mIDpjbGFzczpgZW51bS5JbnRFbnVtYCB0aGF0IGRlZmluZXMgYSBzZXQgb2YgSFRUUCBzdGF0dXMgY29kZXMsCisgICByZWFzb24gcGhyYXNlcyBhbmQgbG9uZyBkZXNjcmlwdGlvbnMgd3JpdHRlbiBpbiBFbmdsaXNoLgorCisgICBVc2FnZTo6CisKKyAgICAgID4+PiBmcm9tIGh0dHAgaW1wb3J0IEhUVFBTdGF0dXMKKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LCisgICAgICA8SFRUUFN0YXR1cy5PSzogMjAwPgorICAgICAgPj4+IEhUVFBTdGF0dXMuT0sgPT0gMjAwCisgICAgICBUcnVlCisgICAgICA+Pj4gaHR0cC5IVFRQU3RhdHVzLk9LLnZhbHVlCisgICAgICAyMDAKKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LLnBocmFzZQorICAgICAgJ09LJworICAgICAgPj4+IEhUVFBTdGF0dXMuT0suZGVzY3JpcHRpb24KKyAgICAgICdSZXF1ZXN0IGZ1bGZpbGxlZCwgZG9jdW1lbnQgZm9sbG93cycKKyAgICAgID4+PiBsaXN0KEhUVFBTdGF0dXMpCisgICAgICBbPEhUVFBTdGF0dXMuQ09OVElOVUU6IDEwMD4sIDxIVFRQU3RhdHVzLlNXSVRDSElOR19QUk9UT0NPTFM6IDEwMT4sIC4uLl0KKworLi4gX2h0dHAtc3RhdHVzLWNvZGVzOgorCitIVFRQIHN0YXR1cyBjb2RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworU3VwcG9ydGVkLAorYElBTkEtcmVnaXN0ZXJlZCA8aHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLXN0YXR1cy1jb2Rlcy9odHRwLXN0YXR1cy1jb2Rlcy54aHRtbD5gXworc3RhdHVzIGNvZGVzIGF2YWlsYWJsZSBpbiA6Y2xhc3M6YGh0dHAuSFRUUFN0YXR1c2AgYXJlOgorCis9PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ29kZSAgICBFbnVtIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRhaWxzCis9PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYGAxMDBgYCBgYENPTlRJTlVFYGAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjIuMQorYGAxMDFgYCBgYFNXSVRDSElOR19QUk9UT0NPTFNgYCAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjIuMgorYGAxMDJgYCBgYFBST0NFU1NJTkdgYCAgICAgICAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgMjUxOGAsIFNlY3Rpb24gMTAuMQorYGAyMDBgYCBgYE9LYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuMQorYGAyMDFgYCBgYENSRUFURURgYCAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuMgorYGAyMDJgYCBgYEFDQ0VQVEVEYGAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuMworYGAyMDNgYCBgYE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OYGAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuNAorYGAyMDRgYCBgYE5PX0NPTlRFTlRgYCAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuNQorYGAyMDVgYCBgYFJFU0VUX0NPTlRFTlRgYCAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjMuNgorYGAyMDZgYCBgYFBBUlRJQUxfQ09OVEVOVGBgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMzYCwgU2VjdGlvbiA0LjEKK2BgMjA3YGAgYGBNVUxUSV9TVEFUVVNgYCAgICAgICAgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDQ5MThgLCBTZWN0aW9uIDExLjEKK2BgMjA4YGAgYGBBTFJFQURZX1JFUE9SVEVEYGAgICAgICAgICAgICAgICAgV2ViREFWIEJpbmRpbmcgRXh0ZW5zaW9ucyA6cmZjOmA1ODQyYCwgU2VjdGlvbiA3LjEgKEV4cGVyaW1lbnRhbCkKK2BgMjI2YGAgYGBJTV9VU0VEYGAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGEgRW5jb2RpbmcgaW4gSFRUUCA6cmZjOmAzMjI5YCwgU2VjdGlvbiAxMC40LjEKK2BgMzAwYGAgYGBNVUxUSVBMRV9DSE9JQ0VTYGAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjEKK2BgMzAxYGAgYGBNT1ZFRF9QRVJNQU5FTlRMWWBgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjIKK2BgMzAyYGAgYGBGT1VORGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjMKK2BgMzAzYGAgYGBTRUVfT1RIRVJgYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjQKK2BgMzA0YGAgYGBOT1RfTU9ESUZJRURgYCAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMmAsIFNlY3Rpb24gNC4xCitgYDMwNWBgIGBgVVNFX1BST1hZYGAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC41CitgYDMwN2BgIGBgVEVNUE9SQVJZX1JFRElSRUNUYGAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC43CitgYDMwOGBgIGBgUEVSTUFORU5UX1JFRElSRUNUYGAgICAgICAgICAgICAgIFBlcm1hbmVudCBSZWRpcmVjdCA6cmZjOmA3MjM4YCwgU2VjdGlvbiAzIChFeHBlcmltZW50YWwpCitgYDQwMGBgIGBgQkFEX1JFUVVFU1RgYCAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xCitgYDQwMWBgIGBgVU5BVVRIT1JJWkVEYGAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIEF1dGhlbnRpY2F0aW9uIDpyZmM6YDcyMzVgLCBTZWN0aW9uIDMuMQorYGA0MDJgYCBgYFBBWU1FTlRfUkVRVUlSRURgYCAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMgorYGA0MDNgYCBgYEZPUkJJRERFTmBgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMworYGA0MDRgYCBgYE5PVF9GT1VORGBgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuNAorYGA0MDVgYCBgYE1FVEhPRF9OT1RfQUxMT1dFRGBgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuNQorYGA0MDZgYCBgYE5PVF9BQ0NFUFRBQkxFYGAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuNgorYGA0MDdgYCBgYFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYGAgICBIVFRQLzEuMSBBdXRoZW50aWNhdGlvbiA6cmZjOmA3MjM1YCwgU2VjdGlvbiAzLjIKK2BgNDA4YGAgYGBSRVFVRVNUX1RJTUVPVVRgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjcKK2BgNDA5YGAgYGBDT05GTElDVGBgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjgKK2BgNDEwYGAgYGBHT05FYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjkKK2BgNDExYGAgYGBMRU5HVEhfUkVRVUlSRURgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjEwCitgYDQxMmBgIGBgUFJFQ09ORElUSU9OX0ZBSUxFRGBgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzJgLCBTZWN0aW9uIDQuMgorYGA0MTNgYCBgYFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRWBgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTEKK2BgNDE0YGAgYGBSRVFVRVNUX1VSSV9UT09fTE9OR2BgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjEyCitgYDQxNWBgIGBgVU5TVVBQT1JURURfTUVESUFfVFlQRWBgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMworYGA0MTZgYCBgYFJFUVVFU1RfUkFOR0VfTk9UX1NBVElTRklBQkxFYGAgICBIVFRQLzEuMSBSYW5nZSBSZXF1ZXN0cyA6cmZjOmA3MjMzYCwgU2VjdGlvbiA0LjQKK2BgNDE3YGAgYGBFWFBFQ1RBVElPTl9GQUlMRURgYCAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjE0CitgYDQyMmBgIGBgVU5QUk9DRVNTQUJMRV9FTlRJVFlgYCAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS4yCitgYDQyM2BgIGBgTE9DS0VEYGAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS4zCitgYDQyNGBgIGBgRkFJTEVEX0RFUEVOREVOQ1lgYCAgICAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS40CitgYDQyNmBgIGBgVVBHUkFERV9SRVFVSVJFRGBgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xNQorYGA0MjhgYCBgYFBSRUNPTkRJVElPTl9SRVFVSVJFRGBgICAgICAgICAgICBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgCitgYDQyOWBgIGBgVE9PX01BTllfUkVRVUVTVFNgYCAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMgOnJmYzpgNjU4NWAKK2BgNDMxYGAgYGBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFYGAgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcyA6cmZjOmA2NTg1YAorYGA1MDBgYCBgYElOVEVSTkFMX1NFUlZFUl9FUlJPUmBgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuMQorYGA1MDFgYCBgYE5PVF9JTVBMRU1FTlRFRGBgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuMgorYGA1MDJgYCBgYEJBRF9HQVRFV0FZYGAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuMworYGA1MDNgYCBgYFNFUlZJQ0VfVU5BVkFJTEFCTEVgYCAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuNAorYGA1MDRgYCBgYEdBVEVXQVlfVElNRU9VVGBgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuNQorYGA1MDVgYCBgYEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEYGAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjYuNgorYGA1MDZgYCBgYFZBUklBTlRfQUxTT19ORUdPVElBVEVTYGAgICAgICAgICBUcmFuc3BhcmVudCBDb250ZW50IE5lZ290aWF0aW9uIGluIEhUVFAgOnJmYzpgMjI5NWAsIFNlY3Rpb24gOC4xIChFeHBlcmltZW50YWwpCitgYDUwN2BgIGBgSU5TVUZGSUNJRU5UX1NUT1JBR0VgYCAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS41CitgYDUwOGBgIGBgTE9PUF9ERVRFQ1RFRGBgICAgICAgICAgICAgICAgICAgIFdlYkRBViBCaW5kaW5nIEV4dGVuc2lvbnMgOnJmYzpgNTg0MmAsIFNlY3Rpb24gNy4yIChFeHBlcmltZW50YWwpCitgYDUxMGBgIGBgTk9UX0VYVEVOREVEYGAgICAgICAgICAgICAgICAgICAgIEFuIEhUVFAgRXh0ZW5zaW9uIEZyYW1ld29yayA6cmZjOmAyNzc0YCwgU2VjdGlvbiA3IChFeHBlcmltZW50YWwpCitgYDUxMWBgIGBgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRGBgIEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNgorPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gb3JkZXIgdG8gcHJlc2VydmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGVudW0gdmFsdWVzIGFyZSBhbHNvIHByZXNlbnQKK2luIHRoZSA6bW9kOmBodHRwLmNsaWVudGAgbW9kdWxlIGluIHRoZSBmb3JtIG9mIGNvbnN0YW50cy4gVGhlIGVudW0gbmFtZSBpcworZXF1YWwgdG8gdGhlIGNvbnN0YW50IG5hbWUgKGkuZS4gYGBodHRwLkhUVFBTdGF0dXMuT0tgYCBpcyBhbHNvIGF2YWlsYWJsZSBhcworYGBodHRwLmNsaWVudC5PS2BgKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKaW5kZXggZmE3MzZmZS4uMTViMDkzMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKQEAgLTM3LDYgKzM3LDE5IEBACiAgICBpbml0aWFsaXplZC4gSWYgKmhvc3QqIGlzIG5vdCBzcGVjaWZpZWQsIGBgJydgYCAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuIElmCiAgICAqcG9ydCogaXMgb21pdHRlZCwgdGhlIHN0YW5kYXJkIElNQVA0IHBvcnQgKDE0MykgaXMgdXNlZC4KIAorICAgVGhlIDpjbGFzczpgSU1BUDRgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgV2hlbiB1c2VkCisgICBsaWtlIHRoaXMsIHRoZSBJTUFQNCBgYExPR09VVGBgIGNvbW1hbmQgaXMgaXNzdWVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUKKyAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgZXhpdHMuICBFLmcuOjoKKworICAgID4+PiBmcm9tIGltYXBsaWIgaW1wb3J0IElNQVA0CisgICAgPj4+IHdpdGggSU1BUDQoImRvbWFpbi5vcmciKSBhcyBNOgorICAgIC4uLiAgICAgTS5ub29wKCkKKyAgICAuLi4KKyAgICAoJ09LJywgW2InTm90aGluZyBBY2NvbXBsaXNoZWQuIGQyNWlmNjVoeTkwM3dlby44NyddKQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgorCiBUaHJlZSBleGNlcHRpb25zIGFyZSBkZWZpbmVkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlIDpjbGFzczpgSU1BUDRgIGNsYXNzOgogCiAKQEAgLTY0LDcgKzc3LDggQEAKIFRoZXJlJ3MgYWxzbyBhIHN1YmNsYXNzIGZvciBzZWN1cmUgY29ubmVjdGlvbnM6CiAKIAotLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKQorLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKQogCiAgICBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgSU1BUDRgIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wKICAgIGVuY3J5cHRlZCBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZApAQCAtMTk4LDYgKzIxMiwxMCBAQAogICAgdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuICBJdCBzaG91bGQgcmV0dXJuCiAgICBgYE5vbmVgYCBpZiB0aGUgY2xpZW50IGFib3J0IHJlc3BvbnNlIGBgKmBgIHNob3VsZCBiZSBzZW50IGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBzdHJpbmcgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgYXJlIG5vdyBlbmNvZGVkIHRvIGBgdXRmLThgYCBpbnN0ZWFkIG9mCisgICAgICBiZWluZyBsaW1pdGVkIHRvIEFTQ0lJLgorCiAKIC4uIG1ldGhvZDo6IElNQVA0LmNoZWNrKCkKIApAQCAtMjMwLDYgKzI0OCwxNiBAQAogICAgRGVsZXRlIHRoZSBBQ0xzIChyZW1vdmUgYW55IHJpZ2h0cykgc2V0IGZvciB3aG8gb24gbWFpbGJveC4KIAogCisuLiBtZXRob2Q6OiBJTUFQNC5lbmFibGUoY2FwYWJpbGl0eSkKKworICAgRW5hYmxlICpjYXBhYmlsaXR5KiAoc2VlIDpyZmM6YDUxNjFgKS4gIE1vc3QgY2FwYWJpbGl0aWVzIGRvIG5vdCBuZWVkIHRvIGJlCisgICBlbmFibGVkLiAgQ3VycmVudGx5IG9ubHkgdGhlIGBgVVRGOD1BQ0NFUFRgYCBjYXBhYmlsaXR5IGlzIHN1cHBvcnRlZAorICAgKHNlZSA6UkZDOmA2ODU1YCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmBlbmFibGVgIG1ldGhvZCBpdHNlbGYsIGFuZCA6UkZDOmA2ODU1YCBzdXBwb3J0LgorCisKIC4uIG1ldGhvZDo6IElNQVA0LmV4cHVuZ2UoKQogCiAgICBQZXJtYW5lbnRseSByZW1vdmUgZGVsZXRlZCBpdGVtcyBmcm9tIHNlbGVjdGVkIG1haWxib3guIEdlbmVyYXRlcyBhbiBgYEVYUFVOR0VgYApAQCAtMzY3LDcgKzM5NSw5IEBACiAgICBTZWFyY2ggbWFpbGJveCBmb3IgbWF0Y2hpbmcgbWVzc2FnZXMuICAqY2hhcnNldCogbWF5IGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCiAgICBubyBgYENIQVJTRVRgYCB3aWxsIGJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiAgVGhlIElNQVAKICAgIHByb3RvY29sIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIGNyaXRlcmlvbiBiZSBzcGVjaWZpZWQ7IGFuIGV4Y2VwdGlvbiB3aWxsIGJlCi0gICByYWlzZWQgd2hlbiB0aGUgc2VydmVyIHJldHVybnMgYW4gZXJyb3IuCisgICByYWlzZWQgd2hlbiB0aGUgc2VydmVyIHJldHVybnMgYW4gZXJyb3IuICAqY2hhcnNldCogbXVzdCBiZSBgYE5vbmVgYCBpZgorICAgdGhlIGBgVVRGOD1BQ0NFUFRgYCBjYXBhYmlsaXR5IHdhcyBlbmFibGVkIHVzaW5nIHRoZSA6bWV0aDpgZW5hYmxlYAorICAgY29tbWFuZC4KIAogICAgRXhhbXBsZTo6CiAKQEAgLTUyOSw2ICs1NTksMTUgQEAKICAgIHRoZSBtb2R1bGUgdmFyaWFibGUgYGBEZWJ1Z2BgLiAgVmFsdWVzIGdyZWF0ZXIgdGhhbiB0aHJlZSB0cmFjZSBlYWNoIGNvbW1hbmQuCiAKIAorLi4gYXR0cmlidXRlOjogSU1BUDQudXRmOF9lbmFibGVkCisKKyAgIEJvb2xlYW4gdmFsdWUgdGhhdCBpcyBub3JtYWxseSBgYEZhbHNlYGAsIGJ1dCBpcyBzZXQgdG8gYGBUcnVlYGAgaWYgYW4KKyAgIDptZXRoOmBlbmFibGVgIGNvbW1hbmQgaXMgc3VjY2Vzc2Z1bGx5IGlzc3VlZCBmb3IgdGhlIGBgVVRGOD1BQ0NFUFRgYAorICAgY2FwYWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gX2ltYXA0LWV4YW1wbGU6CiAKIElNQVA0IEV4YW1wbGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CmluZGV4IDllODk1MjMuLmM2MGRmMjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdApAQCAtNDgsNiArNDgsMTYgQEAKICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgJ3BuZydgYCAgfCBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzICAgICAgICAgfAogKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnd2VicCdgYCB8IFdlYlAgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCdleHInYGAgIHwgT3BlbkVYUiBGaWxlcyAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgVGhlICpleHIqIGZvcm1hdCB3YXMgYWRkZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgKndlYnAqIHR5cGUgd2FzIGFkZGVkLgogCiBZb3UgY2FuIGV4dGVuZCB0aGUgbGlzdCBvZiBmaWxlIHR5cGVzIDptb2Q6YGltZ2hkcmAgY2FuIHJlY29nbml6ZSBieSBhcHBlbmRpbmcKIHRvIHRoaXMgdmFyaWFibGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCA4M2E1MmU0Li42OGE2YjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTE5NywxMSArMTk3LDkgQEAKICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKICAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCi0gICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KLSAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgYGBGYWxzZWBgKS4gIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IgYGBGYWxzZWBgIGZvcgotICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKLSAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IKKyAgIGBgRmFsc2VgYCBmb3IgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IKKyAgIGBgX19kZWJ1Z19fYGAsIGxlYWRpbmcgdG8gb3B0aW1pemVkIGJ5dGVjb2RlLgogCiAgICAqcGF0aCogbmVlZCBub3QgZXhpc3QuCiAKQEAgLTIxMiw2ICsyMTAsOSBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBubyBsb25nZXIgY3JlYXRlcyBhIGBgLnB5b2BgIGZpbGUuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCBjOTQ3MzM1Li43NzFjNGM1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAgICAgOnBlcDpgNDUxYAogICAgICAgICBBIE1vZHVsZVNwZWMgVHlwZSBmb3IgdGhlIEltcG9ydCBTeXN0ZW0KIAorICAgIDpwZXA6YDQ4OGAKKyAgICAgICAgRWxpbWluYXRpb24gb2YgUFlPIGZpbGVzCisKKyAgICA6cGVwOmA0ODlgCisgICAgICAgIE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKwogICAgIDpwZXA6YDMxMjBgCiAgICAgICAgIFVzaW5nIFVURi04IGFzIHRoZSBEZWZhdWx0IFNvdXJjZSBFbmNvZGluZwogCkBAIC02OSw2ICs3NSwxMCBAQAogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIAorICAgIC4uIG5vdGU6OgorICAgICAgIFByb2dyYW1tYXRpYyBpbXBvcnRpbmcgb2YgbW9kdWxlcyBzaG91bGQgdXNlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYAorICAgICAgIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSkKIAogICAgIEltcG9ydCBhIG1vZHVsZS4gVGhlICpuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgd2hhdCBtb2R1bGUgdG8KQEAgLTgxLDEyICs5MSwxNSBAQAogCiAgICAgVGhlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYCBmdW5jdGlvbiBhY3RzIGFzIGEgc2ltcGxpZnlpbmcgd3JhcHBlciBhcm91bmQKICAgICA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGlzIG1lYW5zIGFsbCBzZW1hbnRpY3Mgb2YgdGhlIGZ1bmN0aW9uIGFyZQotICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLCBpbmNsdWRpbmcgcmVxdWlyaW5nIHRoZSBwYWNrYWdlCi0gICAgZnJvbSB3aGljaCBhbiBpbXBvcnQgaXMgb2NjdXJyaW5nIHRvIGhhdmUgYmVlbiBwcmV2aW91c2x5IGltcG9ydGVkCi0gICAgKGkuZS4sICpwYWNrYWdlKiBtdXN0IGFscmVhZHkgYmUgaW1wb3J0ZWQpLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQotICAgIGlzIHRoYXQgOmZ1bmM6YGltcG9ydF9tb2R1bGVgIHJldHVybnMgdGhlIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZQotICAgIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCi0gICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgorICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQorICAgIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyB0aGF0IDpmdW5jOmBpbXBvcnRfbW9kdWxlYCByZXR1cm5zIHRoZQorICAgIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYAorICAgIHJldHVybnMgdGhlIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KKworICAgIElmIHlvdSBhcmUgZHluYW1pY2FsbHkgaW1wb3J0aW5nIGEgbW9kdWxlIHRoYXQgd2FzIGNyZWF0ZWQgc2luY2UgdGhlCisgICAgaW50ZXJwcmV0ZXIgYmVnYW4gZXhlY3V0aW9uIChlLmcuLCBjcmVhdGVkIGEgUHl0aG9uIHNvdXJjZSBmaWxlKSwgeW91IG1heQorICAgIG5lZWQgdG8gY2FsbCA6ZnVuYzpgaW52YWxpZGF0ZV9jYWNoZXNgIGluIG9yZGVyIGZvciB0aGUgbmV3IG1vZHVsZSB0byBiZQorICAgIG5vdGljZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0uCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgIFBhcmVudCBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbXBvcnRlZC4KQEAgLTM0MSwxMyArMzU0LDE2IEBACiAKICAgICAuLiBtZXRob2Q6OiBjcmVhdGVfbW9kdWxlKHNwZWMpCiAKLSAgICAgICBBbiBvcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRvIHVzZSB3aGVuCi0gICAgICAgaW1wb3J0aW5nIGEgbW9kdWxlLiAgY3JlYXRlX21vZHVsZSgpIG1heSBhbHNvIHJldHVybiBgYE5vbmVgYCwKLSAgICAgICBpbmRpY2F0aW5nIHRoYXQgdGhlIGRlZmF1bHQgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCB0YWtlIHBsYWNlCi0gICAgICAgaW5zdGVhZC4KKyAgICAgICBBIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdG8gdXNlIHdoZW4KKyAgICAgICBpbXBvcnRpbmcgYSBtb2R1bGUuICBUaGlzIG1ldGhvZCBtYXkgcmV0dXJuIGBgTm9uZWBgLAorICAgICAgIGluZGljYXRpbmcgdGhhdCBkZWZhdWx0IG1vZHVsZSBjcmVhdGlvbiBzZW1hbnRpY3Mgc2hvdWxkIHRha2UgcGxhY2UuCiAKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgdGhpcyBtZXRob2Qgd2lsbCBub3QgYmUgb3B0aW9uYWwgd2hlbgorICAgICAgICAgIDptZXRoOmBleGVjX21vZHVsZWAgaXMgZGVmaW5lZC4KKwogICAgIC4uIG1ldGhvZDo6IGV4ZWNfbW9kdWxlKG1vZHVsZSkKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKQEAgLTQxMSw3ICs0MjcsNyBAQAogCiAgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIEFQSSBmb3IgbG9hZGluZyBhIG1vZHVsZSBpcyA6bWV0aDpgZXhlY19tb2R1bGVgCi0gICAgICAgICAgIChhbmQgb3B0aW9uYWxseSA6bWV0aDpgY3JlYXRlX21vZHVsZWApLiAgTG9hZGVycyBzaG91bGQgaW1wbGVtZW50CisgICAgICAgICAgIChhbmQgOm1ldGg6YGNyZWF0ZV9tb2R1bGVgKS4gIExvYWRlcnMgc2hvdWxkIGltcGxlbWVudAogICAgICAgICAgICBpdCBpbnN0ZWFkIG9mIGxvYWRfbW9kdWxlKCkuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSB0YWtlcyBjYXJlIG9mCiAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcmVzcG9uc2liaWxpdGllcyBvZiBsb2FkX21vZHVsZSgpIHdoZW4gZXhlY19tb2R1bGUoKQogICAgICAgICAgICBpcyBpbXBsZW1lbnRlZC4KQEAgLTQ5Myw3ICs1MDksNyBAQAogICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgICAgICBSYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKLSAgICAuLiBtZXRob2Q6OiBzb3VyY2VfdG9fY29kZShkYXRhLCBwYXRoPSc8c3RyaW5nPicpCisgICAgLi4gc3RhdGljbWV0aG9kOjogc291cmNlX3RvX2NvZGUoZGF0YSwgcGF0aD0nPHN0cmluZz4nKQogCiAgICAgICAgIENyZWF0ZSBhIGNvZGUgb2JqZWN0IGZyb20gUHl0aG9uIHNvdXJjZS4KIApAQCAtNTAyLDggKzUxOCwxNCBAQAogICAgICAgICB0aGUgInBhdGgiIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBvcmlnaW5hdGVkIGZyb20sIHdoaWNoIGNhbiBiZSBhbgogICAgICAgICBhYnN0cmFjdCBjb25jZXB0IChlLmcuIGxvY2F0aW9uIGluIGEgemlwIGZpbGUpLgogCisgICAgICAgIFdpdGggdGhlIHN1YnNlcXVlbnQgY29kZSBvYmplY3Qgb25lIGNhbiBleGVjdXRlIGl0IGluIGEgbW9kdWxlIGJ5CisgICAgICAgIHJ1bm5pbmcgYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYC4KKwogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBNYWRlIHRoZSBtZXRob2Qgc3RhdGljLgorCiAgICAgLi4gbWV0aG9kOjogZXhlY19tb2R1bGUobW9kdWxlKQogCiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCkBAIC02ODksNiArNzExLDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6YXR0cjpgQllURUNPREVfU1VGRklYRVNgIGluc3RlYWQuCisKIC4uIGF0dHJpYnV0ZTo6IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG9wdGltaXplZCBieXRlY29kZQpAQCAtNjk2LDE0ICs3MjEsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6YXR0cjpgQllURUNPREVfU1VGRklYRVNgIGluc3RlYWQuCisKIC4uIGF0dHJpYnV0ZTo6IEJZVEVDT0RFX1NVRkZJWEVTCiAKICAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBieXRlY29kZQotICAgbW9kdWxlcy4gU2V0IHRvIGVpdGhlciA6YXR0cjpgREVCVUdfQllURUNPREVfU1VGRklYRVNgIG9yCi0gICA6YXR0cjpgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTYCBiYXNlZCBvbiB3aGV0aGVyIGBgX19kZWJ1Z19fYGAgaXMgdHJ1ZS4KKyAgIG1vZHVsZXMgKGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3QpLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSB2YWx1ZSBpcyBubyBsb25nZXIgZGVwZW5kZW50IG9uIGBgX19kZWJ1Z19fYGAuCisKIC4uIGF0dHJpYnV0ZTo6IEVYVEVOU0lPTl9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IKQEAgLTczMiw5ICs3NjIsOSBAQAogICAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKICAgICBpbnN0YW50aWF0aW9uLgogCi0gICAgLi4gbm90ZTo6Ci0gICAgICAgRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBleHRlbnNpb24gbW9kdWxlIEMtQVBJLCBmb3Igbm93Ci0gICAgICAgQnVpbHRpbkltcG9ydGVyIGRvZXMgbm90IGltcGxlbWVudCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYC4KKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgIEFzIHBhcnQgb2YgOnBlcDpgNDg5YCwgdGhlIGJ1aWx0aW4gaW1wb3J0ZXIgbm93IGltcGxlbWVudHMKKyAgICAgICA6bWV0aDpgTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIGFuZCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYAogCiAKIC4uIGNsYXNzOjogRnJvemVuSW1wb3J0ZXIKQEAgLTc4Miw2ICs4MTIsMTEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBJZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtLSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBzdHJpbmcgLS0KKyAgICAgICAgIGlzIG5vIGxvbmdlciB2YWxpZCB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkIGJ1dCBubyB2YWx1ZSBpcyBjYWNoZWQKKyAgICAgICAgIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKICAgIC4uIGNsYXNzbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKIAogICAgICAgQSBsZWdhY3kgd3JhcHBlciBhcm91bmQgOm1ldGg6YGZpbmRfc3BlY2AuCkBAIC05NDQsMTQgKzk3OSwxOCBAQAogCiAgICAgICBQYXRoIHRvIHRoZSBleHRlbnNpb24gbW9kdWxlLgogCi0gICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShuYW1lPU5vbmUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfbW9kdWxlKHNwZWMpCiAKLSAgICAgIExvYWRzIHRoZSBleHRlbnNpb24gbW9kdWxlIGlmIGFuZCBvbmx5IGlmICpmdWxsbmFtZSogaXMgdGhlIHNhbWUgYXMKLSAgICAgIDphdHRyOmBuYW1lYCBvciBpcyBgYE5vbmVgYC4KKyAgICAgIENyZWF0ZXMgdGhlIG1vZHVsZSBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gc3BlY2lmaWNhdGlvbiBpbiBhY2NvcmRhbmNlCisgICAgICB3aXRoIDpwZXA6YDQ4OWAuCiAKLSAgICAgIC4uIG5vdGU6OgotICAgICAgICAgRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBleHRlbnNpb24gbW9kdWxlIEMtQVBJLCBmb3Igbm93Ci0gICAgICAgICBFeHRlbnNpb25GaWxlTG9hZGVyIGRvZXMgbm90IGltcGxlbWVudCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYC4KKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBtZXRob2Q6OiBleGVjX21vZHVsZShtb2R1bGUpCisKKyAgICAgIEluaXRpYWxpemVzIHRoZSBnaXZlbiBtb2R1bGUgb2JqZWN0IGluIGFjY29yZGFuY2Ugd2l0aCA6cGVwOmA0ODlgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKIApAQCAtMTA0NywyMyArMTA4NiwzNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotLi4gZnVuY3Rpb246OiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKQorLi4gZnVuY3Rpb246OiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lLCAqLCBvcHRpbWl6YXRpb249Tm9uZSkKIAotICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YCBwYXRoIHRvIHRoZSBieXRlLWNvbXBpbGVkIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgc291cmNlICpwYXRoKi4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCB0aGUgcmV0dXJuCisgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgLzpwZXA6YDQ4OGAgcGF0aCB0byB0aGUgYnl0ZS1jb21waWxlZCBmaWxlIGFzc29jaWF0ZWQKKyAgIHdpdGggdGhlIHNvdXJjZSAqcGF0aCouICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzIGBgL2Zvby9iYXIvYmF6LnB5YGAgdGhlIHJldHVybgogICAgdmFsdWUgd291bGQgYmUgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCBmb3IgUHl0aG9uIDMuMi4KICAgIFRoZSBgYGNweXRob24tMzJgYCBzdHJpbmcgY29tZXMgZnJvbSB0aGUgY3VycmVudCBtYWdpYyB0YWcgKHNlZQogICAgOmZ1bmM6YGdldF90YWdgOyBpZiA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgbm90IGRlZmluZWQgdGhlbgotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgVGhlIHJldHVybmVkIHBhdGggd2lsbCBlbmQgaW4KLSAgIGBgLnB5Y2BgIHdoZW4gYGBfX2RlYnVnX19gYCBpcyBgYFRydWVgYCBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgotICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBgYEZhbHNlYGApLiAgQnkgcGFzc2luZyBpbiBgYFRydWVgYCBvciBgYEZhbHNlYGAgZm9yCi0gICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgotICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4KIAotICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgorICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBvZiB0aGUKKyAgIGJ5dGVjb2RlIGZpbGUuIEFuIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIG5vIG9wdGltaXphdGlvbiwgc28KKyAgIGBgL2Zvby9iYXIvYmF6LnB5YGAgd2l0aCBhbiAqb3B0aW1pemF0aW9uKiBvZiBgYCcnYGAgd2lsbCByZXN1bHQgaW4gYQorICAgYnl0ZWNvZGUgcGF0aCBvZiBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgLiBgYE5vbmVgYCBjYXVzZXMKKyAgIHRoZSBpbnRlcnB0ZXIncyBvcHRpbWl6YXRpb24gbGV2ZWwgdG8gYmUgdXNlZC4gQW55IG90aGVyIHZhbHVlJ3Mgc3RyaW5nCisgICByZXByZXNlbnRhdGlvbiBiZWluZyB1c2VkLCBzbyBgYC9mb28vYmFyL2Jhei5weWBgIHdpdGggYW4gKm9wdGltaXphdGlvbiogb2YKKyAgIGBgMmBgIHdpbGwgbGVhZCB0byB0aGUgYnl0ZWNvZGUgcGF0aCBvZgorICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5vcHQtMi5weWNgYC4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgorICAgb2YgKm9wdGltaXphdGlvbiogY2FuIG9ubHkgYmUgYWxwaGFudW1lcmljLCBlbHNlIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlCisgICB0aGUgc3lzdGVtJ3MgdmFsdWUgZm9yIGBgX19kZWJ1Z19fYGAuIEEgYGBUcnVlYGAgdmFsdWUgaXMgdGhlIGVxdWl2YWxlbnQgb2YKKyAgIHNldHRpbmcgKm9wdGltaXphdGlvbiogdG8gdGhlIGVtcHR5IHN0cmluZy4gQSBgYEZhbHNlYGAgdmFsdWUgaXMgdGhlIHNhbWUgYXMKKyAgIHNldHRpbmcgKm9wdGltaXphdGlvbiogdG8gYGAxYGAuIElmIGJvdGggKmRlYnVnX292ZXJyaWRlKiBhbiAqb3B0aW1pemF0aW9uKgorICAgYXJlIG5vdCBgYE5vbmVgYCB0aGVuIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQgOjozLjUKKyAgICAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgd2FzIGFkZGVkIGFuZCB0aGUgKmRlYnVnX292ZXJyaWRlKiBwYXJhbWV0ZXIKKyAgICAgIHdhcyBkZXByZWNhdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTA3MSw3ICsxMTI0LDcgQEAKICAgIGZpbGUgcGF0aC4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMKICAgIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgdGhlIHJldHVybmVkIHBhdGggd291bGQgYmUKICAgIGBgL2Zvby9iYXIvYmF6LnB5YGAuICAqcGF0aCogbmVlZCBub3QgZXhpc3QsIGhvd2V2ZXIgaWYgaXQgZG9lcyBub3QgY29uZm9ybQotICAgdG8gOnBlcDpgMzE0N2AgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKKyAgIHRvIDpwZXA6YDMxNDdgIG9yIDpwZXA6YDQ4OGAgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKICAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCwKICAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KIApAQCAtMTExNyw2ICsxMTcwLDIxIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBmdW5jdGlvbjo6IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYC4KKworICAgSWYgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55CisgICBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4gQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgCisgICB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlCisgICBvbiB0aGUgbW9kdWxlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgdG8gY3JlYXRlIGEKKyAgIG5ldyBtb2R1bGUgYXMgKipzcGVjKiogaXMgdXNlZCB0byBzZXQgYXMgbWFueSBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzIG9uCisgICB0aGUgbW9kdWxlIGFzIHBvc3NpYmxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGVjb3JhdG9yOjogbW9kdWxlX2Zvcl9sb2FkZXIKIAogICAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAKQEAgLTExOTUsMyArMTI2MywzOSBAQAogICAgbW9kdWxlIHdpbGwgYmUgZmlsZS1iYXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGNsYXNzOjogTGF6eUxvYWRlcihsb2FkZXIpCisKKyAgIEEgY2xhc3Mgd2hpY2ggcG9zdHBvbmVzIHRoZSBleGVjdXRpb24gb2YgdGhlIGxvYWRlciBvZiBhIG1vZHVsZSB1bnRpbCB0aGUKKyAgIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGFjY2Vzc2VkLgorCisgICBUaGlzIGNsYXNzICoqb25seSoqIHdvcmtzIHdpdGggbG9hZGVycyB0aGF0IGRlZmluZQorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgYXMgY29udHJvbCBvdmVyIHdoYXQgbW9kdWxlIHR5cGUKKyAgIGlzIHVzZWQgZm9yIHRoZSBtb2R1bGUgaXMgcmVxdWlyZWQuIEZvciB0aG9zZSBzYW1lIHJlYXNvbnMsIHRoZSBsb2FkZXIncworICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2Qgd2lsbCBiZSBpZ25vcmVkIChpLmUuLCB0aGUKKyAgIGxvYWRlcidzIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYGBOb25lYGApLiBGaW5hbGx5LAorICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCisgICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKKyAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQorICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIEZvciBwcm9qZWN0cyB3aGVyZSBzdGFydHVwIHRpbWUgaXMgY3JpdGljYWwsIHRoaXMgY2xhc3MgYWxsb3dzIGZvcgorICAgICAgcG90ZW50aWFsbHkgbWluaW1pemluZyB0aGUgY29zdCBvZiBsb2FkaW5nIGEgbW9kdWxlIGlmIGl0IGlzIG5ldmVyIHVzZWQuCisgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIG5vdCBlc3NlbnRpYWwgdGhlbiB1c2Ugb2YgdGhpcyBjbGFzcyBpcworICAgICAgKipoZWF2aWx5KiogZGlzY291cmFnZWQgZHVlIHRvIGVycm9yIG1lc3NhZ2VzIGNyZWF0ZWQgZHVyaW5nIGxvYWRpbmcgYmVpbmcKKyAgICAgIHBvc3Rwb25lZCBhbmQgdGh1cyBvY2N1cnJpbmcgb3V0IG9mIGNvbnRleHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBjbGFzc21ldGhvZDo6IGZhY3RvcnkobG9hZGVyKQorCisgICAgICBBIHN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNhbGxhYmxlIHRoYXQgY3JlYXRlcyBhIGxhenkgbG9hZGVyLiBUaGlzCisgICAgICBpcyBtZWFudCB0byBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGxvYWRlciBpcyBwYXNzZWQgYnkgY2xhc3MKKyAgICAgIGluc3RlYWQgb2YgYnkgaW5zdGFuY2UuCisgICAgICA6OgorCisgICAgICAgIHN1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCisgICAgICAgIGxhenlfbG9hZGVyID0gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KGxvYWRlcikKKyAgICAgICAgZmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKHBhdGgsIFsobGF6eV9sb2FkZXIsIHN1ZmZpeGVzKV0pCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IDU3ZWI0ZmYuLjk4YjdjYjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0xNjgsNiArMTY4LDE2IEBACiB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyBhbmQgbG9jYWwgICAgICAgfAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB2YXJpYWJsZXMgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGdlbmVyYXRvciB8IF9fbmFtZV9fICAgICAgICB8IG5hbWUgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgX19xdWFsbmFtZV9fICAgIHwgcXVhbGlmaWVkIG5hbWUgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBnaV9mcmFtZSAgICAgICAgfCBmcmFtZSAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGdpX3J1bm5pbmcgICAgICB8IGlzIHRoZSBnZW5lcmF0b3IgcnVubmluZz8gfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgZ2lfY29kZSAgICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBidWlsdGluICAgfCBfX2RvY19fICAgICAgICAgfCBkb2N1bWVudGF0aW9uIHN0cmluZyAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8ICAgICAgICAgICB8IF9fbmFtZV9fICAgICAgICB8IG9yaWdpbmFsIG5hbWUgb2YgdGhpcyAgICAgfApAQCAtMTgwLDYgKzE5MCwxMiBAQAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgIEFkZCBgYF9fcXVhbG5hbWVfX2BgIGF0dHJpYnV0ZSB0byBnZW5lcmF0b3JzLiBUaGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZgorICAgZ2VuZXJhdG9ycyBpcyBub3cgc2V0IGZyb20gdGhlIGZ1bmN0aW9uIG5hbWUsIGluc3RlYWQgb2YgdGhlIGNvZGUgbmFtZSwgYW5kCisgICBpdCBjYW4gbm93IGJlIG1vZGlmaWVkLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0bWVtYmVycyhvYmplY3RbLCBwcmVkaWNhdGVdKQogCkBAIC0yNjEsNiArMjc3LDQ1IEBACiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2VuZXJhdG9yLgogCiAKKy4uIGZ1bmN0aW9uOjogaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYC4KKworICAgQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoIGFuIGBgYXN5bmMgZGVmYGAgc3ludGF4LAorICAgb3IgYXJlIGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGggOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAKKyAgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAuCisKKyAgIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZSBmb3IgcGxhaW4gUHl0aG9uIGdlbmVyYXRvcgorICAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIDp0ZXJtOmBjb3JvdXRpbmVgLgorCisgICBDb3JvdXRpbmVzIGFyZSByZXN1bHRzIG9mIGNhbGxzIG9mIGNvcm91dGluZSBmdW5jdGlvbnMgb3IKKyAgIGdlbmVyYXRvciBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAKKyAgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAuCisKKyAgIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZSBmb3IgcGxhaW4gcHl0aG9uIGdlbmVyYXRvcnMuCisKKyAgIFNlZSBhbHNvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGZ1bmN0aW9uOjogaXNhd2FpdGFibGUob2JqZWN0KQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGNhbiBiZSB1c2VkIGluIDprZXl3b3JkOmBhd2FpdGAKKyAgIGV4cHJlc3Npb24uCisKKyAgIFNlZSBhbHNvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogaXN0cmFjZWJhY2sob2JqZWN0KQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgpAQCAtMzUxLDYgKzQwNiw5IEBACiAuLiBmdW5jdGlvbjo6IGdldGRvYyhvYmplY3QpCiAKICAgIEdldCB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdCwgY2xlYW5lZCB1cCB3aXRoIDpmdW5jOmBjbGVhbmRvY2AuCisgICBJZiB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdCBpcyBub3QgcHJvdmlkZWQgYW5kIHRoZSBvYmplY3QgaXMKKyAgIGEgY2xhc3MsIGEgbWV0aG9kLCBhIHByb3BlcnR5IG9yIGEgZGVzY3JpcHRvciwgcmV0cmlldmUgdGhlIGRvY3VtZW50YXRpb24KKyAgIHN0cmluZyBmcm9tIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRjb21tZW50cyhvYmplY3QpCkBAIC00MjMsNyArNDgxLDcgQEAKIHJldHVybiBhbm5vdGF0aW9uLiAgVG8gcmV0cmlldmUgYSBTaWduYXR1cmUgb2JqZWN0LCB1c2UgdGhlIDpmdW5jOmBzaWduYXR1cmVgCiBmdW5jdGlvbi4KIAotLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUpCisuLiBmdW5jdGlvbjo6IHNpZ25hdHVyZShjYWxsYWJsZSwgXCosIGZvbGxvd193cmFwcGVkPVRydWUpCiAKICAgIFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QgZm9yIHRoZSBnaXZlbiBgYGNhbGxhYmxlYGA6OgogCkBAIC00NDgsNiArNTA2LDExIEBACiAgICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgbm8gc2lnbmF0dXJlIGNhbiBiZSBwcm92aWRlZCwgYW5kCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoYXQgdHlwZSBvZiBvYmplY3QgaXMgbm90IHN1cHBvcnRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBgYGZvbGxvd193cmFwcGVkYGAgcGFyYW1ldGVyLiBQYXNzIGBgRmFsc2VgYCB0byBnZXQgYSBzaWduYXR1cmUgb2YKKyAgICAgIGBgY2FsbGFibGVgYCBzcGVjaWZpY2FsbHkgKGBgY2FsbGFibGUuX193cmFwcGVkX19gYCB3aWxsIG5vdCBiZSB1c2VkIHRvCisgICAgICB1bndyYXAgZGVjb3JhdGVkIGNhbGxhYmxlcy4pCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBTb21lIGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25zIG9mCkBAIC00NzMsNiArNTM2LDkgQEAKICAgIFNpZ25hdHVyZSBvYmplY3RzIGFyZSAqaW1tdXRhYmxlKi4gIFVzZSA6bWV0aDpgU2lnbmF0dXJlLnJlcGxhY2VgIHRvIG1ha2UgYQogICAgbW9kaWZpZWQgY29weS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFNpZ25hdHVyZSBvYmplY3RzIGFyZSBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1wdHkKIAogICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KQEAgLTUxNywxMiArNTgzLDMwIEBACiAgICAgICAgICA+Pj4gc3RyKG5ld19zaWcpCiAgICAgICAgICAiKGEsIGIpIC0+ICduZXcgcmV0dXJuIGFubm8nIgogCisgICAuLiBjbGFzc21ldGhvZDo6IFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKG9iaiwgXCosIGZvbGxvd193cmFwcGVkPVRydWUpCisKKyAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgKG9yIGl0cyBzdWJjbGFzcykgb2JqZWN0IGZvciBhIGdpdmVuIGNhbGxhYmxlCisgICAgICAgYGBvYmpgYC4gIFBhc3MgYGBmb2xsb3dfd3JhcHBlZD1GYWxzZWBgIHRvIGdldCBhIHNpZ25hdHVyZSBvZiBgYG9iamBgCisgICAgICAgd2l0aG91dCB1bndyYXBwaW5nIGl0cyBgYF9fd3JhcHBlZF9fYGAgY2hhaW4uCisKKyAgICAgICBUaGlzIG1ldGhvZCBzaW1wbGlmaWVzIHN1YmNsYXNzaW5nIG9mIDpjbGFzczpgU2lnbmF0dXJlYDo6CisKKyAgICAgICAgIGNsYXNzIE15U2lnbmF0dXJlKFNpZ25hdHVyZSk6CisgICAgICAgICAgICAgcGFzcworICAgICAgICAgc2lnID0gTXlTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShtaW4pCisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaWcsIE15U2lnbmF0dXJlKQorCisgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogLi4gY2xhc3M6OiBQYXJhbWV0ZXIobmFtZSwga2luZCwgXCosIGRlZmF1bHQ9UGFyYW1ldGVyLmVtcHR5LCBhbm5vdGF0aW9uPVBhcmFtZXRlci5lbXB0eSkKIAogICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAogICAgeW91IGNhbiB1c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlIHBpY2tsYWJsZSBhbmQgaGFzaGFibGUuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5lbXB0eQogCiAgICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBkZWZhdWx0IHZhbHVlcyBhbmQKQEAgLTYzOSwyNyArNzIzLDggQEAKIAogICAgICAgICAgQXJndW1lbnRzIGZvciB3aGljaCA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yCiAgICAgICAgICA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgcmVsaWVkIG9uIGEgZGVmYXVsdCB2YWx1ZSBhcmUgc2tpcHBlZC4KLSAgICAgICAgIEhvd2V2ZXIsIGlmIG5lZWRlZCwgaXQgaXMgZWFzeSB0byBpbmNsdWRlIHRoZW0uCi0KLSAgICAgIDo6Ci0KLSAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0xMCk6Ci0gICAgICAgIC4uLiAgICAgcGFzcwotCi0gICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQotICAgICAgICA+Pj4gYmEgPSBzaWcuYmluZCg1KQotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1LCksIHt9KQotCi0gICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCk6Ci0gICAgICAgIC4uLiAgICAgaWYgKHBhcmFtLm5hbWUgbm90IGluIGJhLmFyZ3VtZW50cwotICAgICAgICAuLi4gICAgICAgICAgICAgYW5kIHBhcmFtLmRlZmF1bHQgaXMgbm90IHBhcmFtLmVtcHR5KToKLSAgICAgICAgLi4uICAgICAgICAgYmEuYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gcGFyYW0uZGVmYXVsdAotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1LCAxMCksIHt9KQotCisgICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIHVzZSA6bWV0aDpgQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHNgIHRvIGFkZAorICAgICAgICAgdGhlbS4KIAogICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJncwogCkBAIC02NzUsNiArNzQwLDI2IEBACiAKICAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgOmNsYXNzOmBTaWduYXR1cmVgIG9iamVjdC4KIAorICAgLi4gbWV0aG9kOjogQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHMoKQorCisgICAgICBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgYXJndW1lbnRzLgorCisgICAgICBGb3IgdmFyaWFibGUtcG9zaXRpb25hbCBhcmd1bWVudHMgKGBgKmFyZ3NgYCkgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgIGVtcHR5IHR1cGxlLgorCisgICAgICBGb3IgdmFyaWFibGUta2V5d29yZCBhcmd1bWVudHMgKGBgKiprd2FyZ3NgYCkgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgIGVtcHR5IGRpY3QuCisKKyAgICAgIDo6CisKKyAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0naGFtJywgKmFyZ3MpOiBwYXNzCisgICAgICAgID4+PiBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgnc3BhbScpCisgICAgICAgID4+PiBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgID4+PiBiYS5hcmd1bWVudHMKKyAgICAgICAgT3JkZXJlZERpY3QoWygnYScsICdzcGFtJyksICgnYicsICdoYW0nKSwgKCdhcmdzJywgKCkpXSkKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIFRoZSA6YXR0cjpgYXJnc2AgYW5kIDphdHRyOmBrd2FyZ3NgIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gaW52b2tlCiAgICBmdW5jdGlvbnM6OgogCkBAIC03MTksOCArODA0LDEwIEBACiAgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAotICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgaW5zdGVhZCwgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAgICAgIGtleXdvcmQtb25seSBhcmd1bWVudHMgYW5kIGFubm90YXRpb25zLgorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZAorICAgICAgaW4gUHl0aG9uIDMuNi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldGZ1bGxhcmdzcGVjKGZ1bmMpCkBAIC03NDEsMTUgKzgyOCwxNiBAQAogCiAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCiAKLSAgIC4uIG5vdGU6OgotICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YAotICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBvbiA6ZnVuYzpgc2lnbmF0dXJlYCwgYnV0IHN0aWxsIGlnbm9yZXMKICAgICAgIGBgX193cmFwcGVkX19gYCBhdHRyaWJ1dGVzIGFuZCBpbmNsdWRlcyB0aGUgYWxyZWFkeSBib3VuZCBmaXJzdAogICAgICAgcGFyYW1ldGVyIGluIHRoZSBzaWduYXR1cmUgb3V0cHV0IGZvciBib3VuZCBtZXRob2RzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGFyZ3ZhbHVlcyhmcmFtZSkKIApAQCAtNzU5LDYgKzg0NywxMSBAQAogICAgYXJlIHRoZSBuYW1lcyBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqbG9jYWxzKiBpcyB0aGUKICAgIGxvY2FscyBkaWN0aW9uYXJ5IG9mIHRoZSBnaXZlbiBmcmFtZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9uc1ssIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlLCBmb3JtYXRyZXR1cm5zLCBmb3JtYXRhbm5vdGF0aW9uc11dKQogCkBAIC03ODEsNiArODc0LDExIEBACiAgICA+Pj4gZm9ybWF0YXJnc3BlYygqZ2V0ZnVsbGFyZ3NwZWMoZikpCiAgICAnKGE6IGludCwgYjogZmxvYXQpJwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3ZhbHVlcyhhcmdzWywgdmFyYXJncywgdmFya3csIGxvY2FscywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWVdKQogCkBAIC03ODgsNiArODg2LDExIEBACiAgICA6ZnVuYzpgZ2V0YXJndmFsdWVzYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCiAgICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRtcm8oY2xzKQogCkBAIC04MjIsOCArOTI1LDggQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG5vdGU6OgotICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIGluc3RlYWQuCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBhbmQgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRjbG9zdXJldmFycyhmdW5jKQpAQCAtODY0LDExICs5NjcsMTcgQEAKIFRoZSBpbnRlcnByZXRlciBzdGFjawogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuICJmcmFtZSByZWNvcmRzLCIgZWFjaCByZWNvcmQgaXMgYSB0dXBsZSBvZgotc2l4IGl0ZW1zOiB0aGUgZnJhbWUgb2JqZWN0LCB0aGUgZmlsZW5hbWUsIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgY3VycmVudCBsaW5lLAorV2hlbiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gImZyYW1lIHJlY29yZHMsIiBlYWNoIHJlY29yZCBpcyBhCis6dGVybTpgbmFtZWQgdHVwbGVgCitgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAuCitUaGUgdHVwbGUgY29udGFpbnMgdGhlIGZyYW1lIG9iamVjdCwgdGhlIGZpbGVuYW1lLCB0aGUgbGluZSBudW1iZXIgb2YgdGhlCitjdXJyZW50IGxpbmUsCiB0aGUgZnVuY3Rpb24gbmFtZSwgYSBsaXN0IG9mIGxpbmVzIG9mIGNvbnRleHQgZnJvbSB0aGUgc291cmNlIGNvZGUsIGFuZCB0aGUKIGluZGV4IG9mIHRoZSBjdXJyZW50IGxpbmUgd2l0aGluIHRoYXQgbGlzdC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGluc3RlYWQgb2YgYSB0dXBsZS4KKwogLi4gbm90ZTo6CiAKICAgIEtlZXBpbmcgcmVmZXJlbmNlcyB0byBmcmFtZSBvYmplY3RzLCBhcyBmb3VuZCBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgZnJhbWUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCAzYWRmNmU5Li5mMDA5YzY1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zMzksOCArMzM5LDExIEBACiAgICAgICBpZiAqc2l6ZSogaXMgbm90IHNwZWNpZmllZCkuICBUaGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24gaXNuJ3QgY2hhbmdlZC4KICAgICAgIFRoaXMgcmVzaXppbmcgY2FuIGV4dGVuZCBvciByZWR1Y2UgdGhlIGN1cnJlbnQgZmlsZSBzaXplLiAgSW4gY2FzZSBvZgogICAgICAgZXh0ZW5zaW9uLCB0aGUgY29udGVudHMgb2YgdGhlIG5ldyBmaWxlIGFyZWEgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybQotICAgICAgKG9uIG1vc3Qgc3lzdGVtcywgYWRkaXRpb25hbCBieXRlcyBhcmUgemVyby1maWxsZWQsIG9uIFdpbmRvd3MgdGhleSdyZQotICAgICAgdW5kZXRlcm1pbmVkKS4gIFRoZSBuZXcgZmlsZSBzaXplIGlzIHJldHVybmVkLgorICAgICAgKG9uIG1vc3Qgc3lzdGVtcywgYWRkaXRpb25hbCBieXRlcyBhcmUgemVyby1maWxsZWQpLiAgVGhlIG5ldyBmaWxlIHNpemUKKyAgICAgIGlzIHJldHVybmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgV2luZG93cyB3aWxsIG5vdyB6ZXJvLWZpbGwgZmlsZXMgd2hlbiBleHRlbmRpbmcuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRhYmxlKCkKIApAQCAtMzkxLDggKzM5NCw4IEBACiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCiAgICAgICBSZWFkIHVwIHRvIGBgbGVuKGIpYGAgYnl0ZXMgaW50byA6Y2xhc3M6YGJ5dGVhcnJheWAgKmIqIGFuZCByZXR1cm4gdGhlCi0gICAgICBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIElmIHRoZSBvYmplY3QgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIG5vCi0gICAgICBieXRlcyBhcmUgYXZhaWxhYmxlLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8gYnl0ZXMKKyAgICAgIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCkBAIC00NjUsOSArNDY4LDEwIEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWQxKHNpemU9LTEpCiAKLSAgICAgIFJlYWQgYW5kIHJldHVybiB1cCB0byAqc2l6ZSogYnl0ZXMsIHdpdGggYXQgbW9zdCBvbmUgY2FsbCB0byB0aGUgdW5kZXJseWluZwotICAgICAgcmF3IHN0cmVhbSdzIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRgIG1ldGhvZC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UKLSAgICAgIGFyZSBpbXBsZW1lbnRpbmcgeW91ciBvd24gYnVmZmVyaW5nIG9uIHRvcCBvZiBhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgCisgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKnNpemUqIGJ5dGVzLCB3aXRoIGF0IG1vc3Qgb25lIGNhbGwgdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHJhdyBzdHJlYW0ncyA6bWV0aDpgflJhd0lPQmFzZS5yZWFkYCAob3IKKyAgICAgIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRpbnRvYCkgbWV0aG9kLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBhcmUKKyAgICAgIGltcGxlbWVudGluZyB5b3VyIG93biBidWZmZXJpbmcgb24gdG9wIG9mIGEgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAKICAgICAgIG9iamVjdC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGludG8oYikKQEAgLTQ3OCw4ICs0ODIsMTkgQEAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwogICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAotICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCi0gICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgorICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluIG5vbgorICAgICAgYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAuLiBtZXRob2Q6OiByZWFkaW50bzEoYikKKworICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiwgLHVzaW5nIGF0IG1vc3Qgb25lIGNhbGwgdG8KKyAgICAgIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0ncyA6bWV0aDpgflJhd0lPQmFzZS5yZWFkYCAob3IKKyAgICAgIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRpbnRvYCkgbWV0aG9kLiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgorCisgICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4gbm9uCisgICAgICBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCkBAIC01MDcsOSArNTIyLDEyIEBACiAgICBUaGUgKm5hbWUqIGNhbiBiZSBvbmUgb2YgdHdvIHRoaW5nczoKIAogICAgKiBhIGNoYXJhY3RlciBzdHJpbmcgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB0aGUKLSAgICAgZmlsZSB3aGljaCB3aWxsIGJlIG9wZW5lZDsKKyAgICAgZmlsZSB3aGljaCB3aWxsIGJlIG9wZW5lZC4gSW4gdGhpcyBjYXNlIGNsb3NlZmQgbXVzdCBiZSBUcnVlICh0aGUgZGVmYXVsdCkKKyAgICAgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLgogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgotICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KKyAgICAgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyA6Y2xhc3M6YEZpbGVJT2Agb2JqZWN0IHdpbGwgZ2l2ZSBhY2Nlc3MuIFdoZW4gdGhlCisgICAgIEZpbGVJTyBvYmplY3QgaXMgY2xvc2VkIHRoaXMgZmQgd2lsbCBiZSBjbG9zZWQgYXMgd2VsbCwgdW5sZXNzICpjbG9zZWZkKgorICAgICBpcyBzZXQgdG8gYGBGYWxzZWBgLgogCiAgICBUaGUgKm1vZGUqIGNhbiBiZSBgYCdyJ2BgLCBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgZm9yIHJlYWRpbmcKICAgIChkZWZhdWx0KSwgd3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gVGhlIGZpbGUgd2lsbCBiZQpAQCAtNTk4LDYgKzYxNiwxMSBAQAogCiAgICAgICBJbiA6Y2xhc3M6YEJ5dGVzSU9gLCB0aGlzIGlzIHRoZSBzYW1lIGFzIDptZXRoOmByZWFkYC4KIAorICAgLi4gbWV0aG9kOjogcmVhZGludG8xKCkKKworICAgICAgSW4gOmNsYXNzOmBCeXRlc0lPYCwgdGhpcyBpcyB0aGUgc2FtZSBhcyA6bWV0aDpgcmVhZGludG9gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBCdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpCiAKQEAgLTgwNywxMSArODMwLDEzIEBACiAgICBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3IgKHRoZSBkZWZhdWx0IG9mIGBgTm9uZWBgIGhhcyB0aGUgc2FtZQogICAgZWZmZWN0KSwgb3IgcGFzcyBgYCdpZ25vcmUnYGAgdG8gaWdub3JlIGVycm9ycy4gIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcKICAgIGVycm9ycyBjYW4gbGVhZCB0byBkYXRhIGxvc3MuKSAgYGAncmVwbGFjZSdgYCBjYXVzZXMgYSByZXBsYWNlbWVudCBtYXJrZXIKLSAgIChzdWNoIGFzIGBgJz8nYGApIHRvIGJlIGluc2VydGVkIHdoZXJlIHRoZXJlIGlzIG1hbGZvcm1lZCBkYXRhLiAgV2hlbgotICAgd3JpdGluZywgYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKHJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MIGNoYXJhY3RlcgotICAgcmVmZXJlbmNlKSBvciBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChyZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlCi0gICBzZXF1ZW5jZXMpIGNhbiBiZSB1c2VkLiAgQW55IG90aGVyIGVycm9yIGhhbmRsaW5nIG5hbWUgdGhhdCBoYXMgYmVlbgotICAgcmVnaXN0ZXJlZCB3aXRoIDpmdW5jOmBjb2RlY3MucmVnaXN0ZXJfZXJyb3JgIGlzIGFsc28gdmFsaWQuCisgICAoc3VjaCBhcyBgYCc/J2BgKSB0byBiZSBpbnNlcnRlZCB3aGVyZSB0aGVyZSBpcyBtYWxmb3JtZWQgZGF0YS4KKyAgIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgY2F1c2VzIG1hbGZvcm1lZCBkYXRhIHRvIGJlIHJlcGxhY2VkIGJ5IGEKKyAgIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZS4gIFdoZW4gd3JpdGluZywgYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAKKyAgIChyZXBsYWNlIHdpdGggdGhlIGFwcHJvcHJpYXRlIFhNTCBjaGFyYWN0ZXIgcmVmZXJlbmNlKSAgb3IgYGAnbmFtZXJlcGxhY2UnYGAKKyAgIChyZXBsYWNlIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlcykgY2FuIGJlIHVzZWQuICBBbnkgb3RoZXIgZXJyb3IKKyAgIGhhbmRsaW5nIG5hbWUgdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGgKKyAgIDpmdW5jOmBjb2RlY3MucmVnaXN0ZXJfZXJyb3JgIGlzIGFsc28gdmFsaWQuCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBpby5UZXh0SU9XcmFwcGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0IGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdAppbmRleCA5OWI1YmVhLi43YjU5NDQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKQEAgLTE0Niw2ICsxNDYsMjAgQEAKICAgICAgIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGggKG1vc3Qgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLiBUaGlzIGlzIDQgYnl0ZXMKICAgICAgIGZvciBJUHY0IGFuZCAxNiBieXRlcyBmb3IgSVB2Ni4KIAorICAgLi4gYXR0cmlidXRlOjogcmV2ZXJzZV9wb2ludGVyCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIEROUyBQVFIgcmVjb3JkIGZvciB0aGUgSVAgYWRkcmVzcywgZS5nLjo6CisKKyAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjEyNy4wLjAuMSIpLnJldmVyc2VfcG9pbnRlcgorICAgICAgICAgICcxLjAuMC4xMjcuaW4tYWRkci5hcnBhJworICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMjAwMTpkYjg6OjEiKS5yZXZlcnNlX3BvaW50ZXIKKyAgICAgICAgICAnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuOC5iLmQuMC4xLjAuMC4yLmlwNi5hcnBhJworCisgICAgICBUaGlzIGlzIHRoZSBuYW1lIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgcGVyZm9ybWluZyBhIFBUUiBsb29rdXAsIG5vdCB0aGUKKyAgICAgIHJlc29sdmVkIGhvc3RuYW1lIGl0c2VsZi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAogCiAgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4gIFNlZQpAQCAtMjI2LDYgKzI0MCw3IEBACiAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYCBjbGFzczoKIAogICAgLi4gYXR0cmlidXRlOjogcGFja2VkCisgICAuLiBhdHRyaWJ1dGU6OiByZXZlcnNlX3BvaW50ZXIKICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KICAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdApAQCAtMzc3LDYgKzM5MiwxMiBAQAogICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCwgYmlnLWVuZGlhbi4KICAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgogCisgICA0LiBBIHR3by10dXBsZSBvZiBhbiBhZGRyZXNzIGRlc2NyaXB0aW9uIGFuZCBhIG5ldG1hc2ssIHdoZXJlIHRoZSBhZGRyZXNzCisgICAgICBkZXNjcmlwdGlvbiBpcyBlaXRoZXIgYSBzdHJpbmcsIGEgMzItYml0cyBpbnRlZ2VyLCBhIDQtYnl0ZXMgcGFja2VkCisgICAgICBpbnRlZ2VyLCBvciBhbiBleGlzdGluZyBJUHY0QWRkcmVzcyBvYmplY3Q7IGFuZCB0aGUgbmV0bWFzayBpcyBlaXRoZXIKKyAgICAgIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuIGBgMjRgYCkgb3IgYSBzdHJpbmcKKyAgICAgIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG1hc2sgKGUuZy4gYGAyNTUuMjU1LjI1NS4wYGApLgorCiAgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0CiAgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKICAgIGFuIElQdjQgYWRkcmVzcy4KQEAgLTM4OSw2ICs0MTAsMTAgQEAKICAgIG9iamVjdHMgd2lsbCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBhcmd1bWVudCdzIElQIHZlcnNpb24gaXMKICAgIGluY29tcGF0aWJsZSB0byBgYHNlbGZgYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBBZGRlZCB0aGUgdHdvLXR1cGxlIGZvcm0gZm9yIHRoZSAqYWRkcmVzcyogY29uc3RydWN0b3IgcGFyYW1ldGVyLgorCiAgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCiAKQEAgLTU1Myw2ICs1NzgsMTEgQEAKICAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaXQtZW5kaWFuLgogICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCiAKKyAgIDQuIEEgdHdvLXR1cGxlIG9mIGFuIGFkZHJlc3MgZGVzY3JpcHRpb24gYW5kIGEgbmV0bWFzaywgd2hlcmUgdGhlIGFkZHJlc3MKKyAgICAgIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBhIHN0cmluZywgYSAxMjgtYml0cyBpbnRlZ2VyLCBhIDE2LWJ5dGVzIHBhY2tlZAorICAgICAgaW50ZWdlciwgb3IgYW4gZXhpc3RpbmcgSVB2NEFkZHJlc3Mgb2JqZWN0OyBhbmQgdGhlIG5ldG1hc2sgaXMgYW4KKyAgICAgIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoLgorCiAgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2CiAgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKICAgIGFuIElQdjYgYWRkcmVzcy4KQEAgLTU2MSw2ICs1OTEsMTAgQEAKICAgIHRoZW4gOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgaG9zdCBiaXRzIGFyZSBtYXNrZWQgb3V0CiAgICB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgYWRkcmVzcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgQWRkZWQgdGhlIHR3by10dXBsZSBmb3JtIGZvciB0aGUgKmFkZHJlc3MqIGNvbnN0cnVjdG9yIHBhcmFtZXRlci4KKwogICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgogICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgogICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCBmNDg5NTM1Li44Yzc1OTJkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTg3LDEwICs4NywxNSBAQAogCiAuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAotICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgb3IgOmNsYXNzOmB+ZnJhY3Rpb25zLkZyYWN0aW9uYC4KLSAgICBJZiB0aGUgb3B0aW9uYWwgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28KLSAgICBhcmd1bWVudHMgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgorICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMsIG9yIGFjY3VtdWxhdGVkCisgICAgcmVzdWx0cyBvZiBvdGhlciBiaW5hcnkgZnVuY3Rpb25zIChzcGVjaWZpZWQgdmlhIHRoZSBvcHRpb25hbAorICAgICpmdW5jKiBhcmd1bWVudCkuICBJZiAqZnVuYyogaXMgc3VwcGxpZWQsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCisgICAgb2YgdHdvIGFyZ3VtZW50cy4gRWxlbWVudHMgb2YgdGhlIGlucHV0ICppdGVyYWJsZSogbWF5IGJlIGFueSB0eXBlCisgICAgdGhhdCBjYW4gYmUgYWNjZXB0ZWQgYXMgYXJndW1lbnRzIHRvICpmdW5jKi4gKEZvciBleGFtcGxlLCB3aXRoCisgICAgdGhlIGRlZmF1bHQgb3BlcmF0aW9uIG9mIGFkZGl0aW9uLCBlbGVtZW50cyBtYXkgYmUgYW55IGFkZGFibGUKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIG9yCisgICAgOmNsYXNzOmB+ZnJhY3Rpb25zLkZyYWN0aW9uYC4pIElmIHRoZSBpbnB1dCBpdGVyYWJsZSBpcyBlbXB0eSwgdGhlCisgICAgb3V0cHV0IGl0ZXJhYmxlIHdpbGwgYWxzbyBiZSBlbXB0eS4KIAogICAgIEVxdWl2YWxlbnQgdG86OgogCkBAIC05OSw3ICsxMDQsMTAgQEAKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CiAgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRvdGFsID0gbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgogICAgICAgICAgICAgICAgIHRvdGFsID0gZnVuYyh0b3RhbCwgZWxlbWVudCkKQEAgLTQwMCw3ICs0MDgsMTAgQEAKICAgICAgICAgICBkZWYgX2dyb3VwZXIoc2VsZiwgdGd0a2V5KToKICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5jdXJya2V5ID09IHRndGtleToKICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuY3VycnZhbHVlCi0gICAgICAgICAgICAgICAgICBzZWxmLmN1cnJ2YWx1ZSA9IG5leHQoc2VsZi5pdCkgICAgIyBFeGl0IG9uIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJ2YWx1ZSA9IG5leHQoc2VsZi5pdCkKKyAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgc2VsZi5jdXJya2V5ID0gc2VsZi5rZXlmdW5jKHNlbGYuY3VycnZhbHVlKQogCiAKQEAgLTQyNCw3ICs0MzUsMTAgQEAKICAgICAgICAgICAjIGlzbGljZSgnQUJDREVGRycsIDAsIE5vbmUsIDIpIC0tPiBBIEMgRSBHCiAgICAgICAgICAgcyA9IHNsaWNlKCphcmdzKQogICAgICAgICAgIGl0ID0gaXRlcihyYW5nZShzLnN0YXJ0IG9yIDAsIHMuc3RvcCBvciBzeXMubWF4c2l6ZSwgcy5zdGVwIG9yIDEpKQotICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKKyAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgZm9yIGksIGVsZW1lbnQgaW4gZW51bWVyYXRlKGl0ZXJhYmxlKToKICAgICAgICAgICAgICAgaWYgaSA9PSBuZXh0aToKICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW1lbnQKQEAgLTU4Miw3ICs1OTYsMTAgQEAKICAgICAgICAgICAgIGRlZiBnZW4obXlkZXF1ZSk6CiAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG15ZGVxdWU6ICAgICAgICAgICAgICMgd2hlbiB0aGUgbG9jYWwgZGVxdWUgaXMgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbCA9IG5leHQoaXQpICAgICAgICMgZmV0Y2ggYSBuZXcgdmFsdWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsID0gbmV4dChpdCkgICAjIGZldGNoIGEgbmV3IHZhbHVlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBkZXF1ZXM6ICAgICAgICAjIGxvYWQgaXQgdG8gYWxsIHRoZSBkZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZChuZXd2YWwpCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIG15ZGVxdWUucG9wbGVmdCgpCkBAIC02NTcsNiArNjc0LDExIEBACiAgICAgICAgIlJldHVybiBmdW5jdGlvbigwKSwgZnVuY3Rpb24oMSksIC4uLiIKICAgICAgICByZXR1cm4gbWFwKGZ1bmN0aW9uLCBjb3VudChzdGFydCkpCiAKKyAgIGRlZiB0YWlsKG4sIGl0ZXJhYmxlKToKKyAgICAgICAiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGxhc3QgbiBpdGVtcyIKKyAgICAgICAjIHRhaWwoMywgJ0FCQ0RFRkcnKSAtLT4gRSBGIEcKKyAgICAgICByZXR1cm4gaXRlcihjb2xsZWN0aW9ucy5kZXF1ZShpdGVyYWJsZSwgbWF4bGVuPW4pKQorCiAgICBkZWYgY29uc3VtZShpdGVyYXRvciwgbik6CiAgICAgICAgIkFkdmFuY2UgdGhlIGl0ZXJhdG9yIG4tc3RlcHMgYWhlYWQuIElmIG4gaXMgbm9uZSwgY29uc3VtZSBlbnRpcmVseS4iCiAgICAgICAgIyBVc2UgZnVuY3Rpb25zIHRoYXQgY29uc3VtZSBpdGVyYXRvcnMgYXQgQyBzcGVlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2pzb24ucnN0IGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKaW5kZXggNmY1ZjhiMS4uNDliYjA5MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvanNvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKQEAgLTEwNiw2ICsxMDYsOCBAQAogICAgICQgZWNobyAnezEuMjozLjR9JyB8IHB5dGhvbiAtbSBqc29uLnRvb2wKICAgICBFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzOiBsaW5lIDEgY29sdW1uIDIgKGNoYXIgMSkKIAorU2VlIDpyZWY6YGpzb24tY29tbWFuZGxpbmVgIGZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uLgorCiAuLiBoaWdobGlnaHQ6OiBweXRob24zCiAKIC4uIG5vdGU6OgpAQCAtMjQ4LDcgKzI1MCw3IEBACiAgICB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGNsYXNzLgogCiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCiAuLiBmdW5jdGlvbjo6IGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKIApAQCAtMjU5LDcgKzI2MSw3IEBACiAgICAqZW5jb2RpbmcqIHdoaWNoIGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCiAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKIEVuY29kZXJzIGFuZCBEZWNvZGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMzIsMTMgKzMzNCwxNiBAQAogICAgYGAnXG4nYGAsIGBgJ1xyJ2BgIGFuZCBgYCdcMCdgYC4KIAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogZGVjb2RlKHMpCiAKICAgICAgIFJldHVybiB0aGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UKICAgICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KQogCisgICAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBnaXZlbiBKU09OIGRvY3VtZW50IGlzIG5vdAorICAgICAgdmFsaWQuCisKICAgIC4uIG1ldGhvZDo6IHJhd19kZWNvZGUocykKIAogICAgICAgRGVjb2RlIGEgSlNPTiBkb2N1bWVudCBmcm9tICpzKiAoYSA6Y2xhc3M6YHN0cmAgYmVnaW5uaW5nIHdpdGggYQpAQCAtNDY3LDYgKzQ3MiwzNiBAQAogICAgICAgICAgICAgICAgIG15c29ja2V0LndyaXRlKGNodW5rKQogCiAKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gZXhjZXB0aW9uOjogSlNPTkRlY29kZUVycm9yKG1zZywgZG9jLCBwb3MsIGVuZD1Ob25lKQorCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgVmFsdWVFcnJvcmAgd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICAgIFRoZSB1bmZvcm1hdHRlZCBlcnJvciBtZXNzYWdlLgorCisgICAgLi4gYXR0cmlidXRlOjogZG9jCisKKyAgICAgICAgVGhlIEpTT04gZG9jdW1lbnQgYmVpbmcgcGFyc2VkLgorCisgICAgLi4gYXR0cmlidXRlOjogcG9zCisKKyAgICAgICAgVGhlIHN0YXJ0IGluZGV4IG9mICpkb2MqIHdoZXJlIHBhcnNpbmcgZmFpbGVkLgorCisgICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgICAgVGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgICAgVGhlIGNvbHVtbiBjb3JyZXNwb25kaW5nIHRvICpwb3MqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiBTdGFuZGFyZCBDb21wbGlhbmNlIGFuZCBJbnRlcm9wZXJhYmlsaXR5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU4OCw2ICs2MjMsNjggQEAKIHdoZW4gc2VyaWFsaXppbmcgaW5zdGFuY2VzIG9mICJleG90aWMiIG51bWVyaWNhbCB0eXBlcyBzdWNoIGFzCiA6Y2xhc3M6YGRlY2ltYWwuRGVjaW1hbGAuCiAKKy4uIGhpZ2hsaWdodDo6IGJhc2gKKy4uIG1vZHVsZTo6IGpzb24udG9vbAorCisuLiBfanNvbi1jb21tYW5kbGluZToKKworQ29tbWFuZCBMaW5lIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpganNvbi50b29sYCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB2YWxpZGF0ZQorYW5kIHByZXR0eS1wcmludCBKU09OIG9iamVjdHMuCisKK0lmIHRoZSBvcHRpb25hbCBgYGluZmlsZWBgIGFuZCBgYG91dGZpbGVgYCBhcmd1bWVudHMgYXJlIG5vdAorc3BlY2lmaWVkLCA6YXR0cjpgc3lzLnN0ZGluYCBhbmQgOmF0dHI6YHN5cy5zdGRvdXRgIHdpbGwgYmUgdXNlZCByZXNwZWN0aXZlbHk6OgorCisgICAgJCBlY2hvICd7Impzb24iOiAib2JqIn0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAorICAgIHsKKyAgICAgICAgImpzb24iOiAib2JqIgorICAgIH0KKyAgICAkIGVjaG8gJ3sxLjI6My40fScgfCBweXRob24gLW0ganNvbi50b29sCisgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAyIChjaGFyIDEpCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgb3V0cHV0IGlzIG5vdyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgaW5wdXQuIFVzZSB0aGUKKyAgIDpvcHRpb246YC0tc29ydC1rZXlzYCBvcHRpb24gdG8gc29ydCB0aGUgb3V0cHV0IG9mIGRpY3Rpb25hcmllcworICAgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCitDb21tYW5kIGxpbmUgb3B0aW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gY21kb3B0aW9uOjogaW5maWxlCisKKyAgIFRoZSBKU09OIGZpbGUgdG8gYmUgdmFsaWRhdGVkIG9yIHByZXR0eS1wcmludGVkOjoKKworICAgICAgJCBweXRob24gLW0ganNvbi50b29sIG1wX2ZpbG1zLmpzb24KKyAgICAgIFsKKyAgICAgICAgICB7CisgICAgICAgICAgICAgICJ0aXRsZSI6ICJBbmQgTm93IGZvciBTb21ldGhpbmcgQ29tcGxldGVseSBEaWZmZXJlbnQiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzEKKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgInRpdGxlIjogIk1vbnR5IFB5dGhvbiBhbmQgdGhlIEhvbHkgR3JhaWwiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzUKKyAgICAgICAgICB9CisgICAgICBdCisKKyAgIElmICppbmZpbGUqIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgZnJvbSA6YXR0cjpgc3lzLnN0ZGluYC4KKworLi4gY21kb3B0aW9uOjogb3V0ZmlsZQorCisgICBXcml0ZSB0aGUgb3V0cHV0IG9mIHRoZSAqaW5maWxlKiB0byB0aGUgZ2l2ZW4gKm91dGZpbGUqLiBPdGhlcndpc2UsIHdyaXRlIGl0CisgICB0byA6YXR0cjpgc3lzLnN0ZG91dGAuCisKKy4uIGNtZG9wdGlvbjo6IC0tc29ydC1rZXlzCisKKyAgIFNvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBTaG93IHRoZSBoZWxwIG1lc3NhZ2UuCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QgYi9Eb2MvbGlicmFyeS9saW5lY2FjaGUucnN0CmluZGV4IGYxOGIxY2QuLjZjOTJjYzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbGluZWNhY2hlLnJzdApAQCAtNDcsNiArNDcsMTQgQEAKICAgIGNoYW5nZWQgb24gZGlzaywgYW5kIHlvdSByZXF1aXJlIHRoZSB1cGRhdGVkIHZlcnNpb24uICBJZiAqZmlsZW5hbWUqIGlzIG9taXR0ZWQsCiAgICBpdCB3aWxsIGNoZWNrIGFsbCB0aGUgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAKKy4uIGZ1bmN0aW9uOjogbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKKworICAgQ2FwdHVyZSBlbm91Z2ggZGV0YWlsIGFib3V0IGEgbm9uLWZpbGUgYmFzZWQgbW9kdWxlIHRvIHBlcm1pdCBnZXR0aW5nIGl0cworICAgbGluZXMgbGF0ZXIgdmlhIDpmdW5jOmBnZXRsaW5lYCBldmVuIGlmICptb2R1bGVfZ2xvYmFscyogaXMgTm9uZSBpbiB0aGUgbGF0ZXIKKyAgIGNhbGwuIFRoaXMgYXZvaWRzIGRvaW5nIEkvTyB1bnRpbCBhIGxpbmUgaXMgYWN0dWFsbHkgbmVlZGVkLCB3aXRob3V0IGhhdmluZworICAgdG8gY2FycnkgdGhlIG1vZHVsZSBnbG9iYWxzIGFyb3VuZCBpbmRlZmluaXRlbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiBFeGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggOTYwMDE5My4uYmM3ZjVmOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC0zODcsNiArMzg3LDE0IEBACiAgICBgYHN0cihmbG9hdClgYCwgYnV0IHRha2VzIHRoZSBkZWNpbWFsIHBvaW50IGludG8gYWNjb3VudC4KIAogCisuLiBmdW5jdGlvbjo6IGRlbG9jYWxpemUoc3RyaW5nKQorCisgICAgQ29udmVydHMgYSBzdHJpbmcgaW50byBhIG5vcm1hbGl6ZWQgbnVtYmVyIHN0cmluZywgZm9sbG93aW5nIHRoZQorICAgIDpjb25zdDpgTENfTlVNRVJJQ2Agc2V0dGluZ3MuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGF0b2Yoc3RyaW5nKQogCiAgICBDb252ZXJ0cyBhIHN0cmluZyB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgZm9sbG93aW5nIHRoZSA6Y29uc3Q6YExDX05VTUVSSUNgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IGQ5NDY4OTIuLjY3NDAzYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NTMsNyArODUzLDcgQEAKICAgIGNyZWRlbnRpYWxzLCB5b3Ugc2hvdWxkIGFsc28gc3BlY2lmeSBzZWN1cmU9VHJ1ZSBzbyB0aGF0IHlvdXIgdXNlcmlkIGFuZAogICAgcGFzc3dvcmQgYXJlIG5vdCBwYXNzZWQgaW4gY2xlYXJ0ZXh0IGFjcm9zcyB0aGUgd2lyZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSAqY29udGV4dCogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogICAgLi4gbWV0aG9kOjogbWFwTG9nUmVjb3JkKHJlY29yZCkKQEAgLTk1MywxMyArOTUzLDIwIEBACiBwb3NzaWJsZSwgd2hpbGUgYW55IHBvdGVudGlhbGx5IHNsb3cgb3BlcmF0aW9ucyAoc3VjaCBhcyBzZW5kaW5nIGFuIGVtYWlsIHZpYQogOmNsYXNzOmBTTVRQSGFuZGxlcmApIGFyZSBkb25lIG9uIGEgc2VwYXJhdGUgdGhyZWFkLgogCi0uLiBjbGFzczo6IFF1ZXVlTGlzdGVuZXIocXVldWUsICpoYW5kbGVycykKKy4uIGNsYXNzOjogUXVldWVMaXN0ZW5lcihxdWV1ZSwgKmhhbmRsZXJzLCByZXNwZWN0X2hhbmRsZXJfbGV2ZWw9RmFsc2UpCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgUXVldWVMaXN0ZW5lcmAgY2xhc3MuIFRoZSBpbnN0YW5jZSBpcwogICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgcXVldWUgdG8gc2VuZCBtZXNzYWdlcyB0byBhbmQgYSBsaXN0IG9mIGhhbmRsZXJzIHdoaWNoCiAgICB3aWxsIGhhbmRsZSBlbnRyaWVzIHBsYWNlZCBvbiB0aGUgcXVldWUuIFRoZSBxdWV1ZSBjYW4gYmUgYW55IHF1ZXVlLQogICAgbGlrZSBvYmplY3Q7IGl0J3MgcGFzc2VkIGFzLWlzIHRvIHRoZSA6bWV0aDpgZGVxdWV1ZWAgbWV0aG9kLCB3aGljaCBuZWVkcwotICAgdG8ga25vdyBob3cgdG8gZ2V0IG1lc3NhZ2VzIGZyb20gaXQuCisgICB0byBrbm93IGhvdyB0byBnZXQgbWVzc2FnZXMgZnJvbSBpdC4gSWYgYGByZXNwZWN0X2hhbmRsZXJfbGV2ZWxgYCBpcyBgYFRydWVgYCwKKyAgIGEgaGFuZGxlcidzIGxldmVsIGlzIHJlc3BlY3RlZCAoY29tcGFyZWQgd2l0aCB0aGUgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlKSB3aGVuCisgICBkZWNpZGluZyB3aGV0aGVyIHRvIHBhc3MgbWVzc2FnZXMgdG8gdGhhdCBoYW5kbGVyOyBvdGhlcndpc2UsIHRoZSBiZWhhdmlvdXIKKyAgIGlzIGFzIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyAtIHRvIGFsd2F5cyBwYXNzIGVhY2ggbWVzc2FnZSB0byBlYWNoCisgICBoYW5kbGVyLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgcmVzcGVjdF9oYW5kbGVyX2xldmVsc2BgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogICAgLi4gbWV0aG9kOjogZGVxdWV1ZShibG9jaykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAppbmRleCA5MGZiOWIwLi5iZjgyMWFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdApAQCAtMTU5LDExICsxNTksMTMgQEAKICAgICptc2cqIHVzaW5nIHRoZSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRvci4gKE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbgogICAgdXNlIGtleXdvcmRzIGluIHRoZSBmb3JtYXQgc3RyaW5nLCB0b2dldGhlciB3aXRoIGEgc2luZ2xlIGRpY3Rpb25hcnkgYXJndW1lbnQuKQogCi0gICBUaGVyZSBhcmUgdGhyZWUga2V5d29yZCBhcmd1bWVudHMgaW4gKmt3YXJncyogd2hpY2ggYXJlIGluc3BlY3RlZDogKmV4Y19pbmZvKgotICAgd2hpY2gsIGlmIGl0IGRvZXMgbm90IGV2YWx1YXRlIGFzIGZhbHNlLCBjYXVzZXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHRvIGJlCisgICBUaGVyZSBhcmUgdGhyZWUga2V5d29yZCBhcmd1bWVudHMgaW4gKmt3YXJncyogd2hpY2ggYXJlIGluc3BlY3RlZDoKKyAgICpleGNfaW5mbyosICpzdGFja19pbmZvKiwgYW5kICpleHRyYSouCisKKyAgIElmICpleGNfaW5mbyogZG9lcyBub3QgZXZhbHVhdGUgYXMgZmFsc2UsIGl0IGNhdXNlcyBleGNlcHRpb24gaW5mb3JtYXRpb24gdG8gYmUKICAgIGFkZGVkIHRvIHRoZSBsb2dnaW5nIG1lc3NhZ2UuIElmIGFuIGV4Y2VwdGlvbiB0dXBsZSAoaW4gdGhlIGZvcm1hdCByZXR1cm5lZCBieQotICAgOmZ1bmM6YHN5cy5leGNfaW5mb2ApIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VkOyBvdGhlcndpc2UsIDpmdW5jOmBzeXMuZXhjX2luZm9gCi0gICBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24uCisgICA6ZnVuYzpgc3lzLmV4Y19pbmZvYCkgb3IgYW4gZXhjZXB0aW9uIGluc3RhbmNlIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VkOworICAgb3RoZXJ3aXNlLCA6ZnVuYzpgc3lzLmV4Y19pbmZvYCBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24uCiAKICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCBpcyAqc3RhY2tfaW5mbyosIHdoaWNoIGRlZmF1bHRzIHRvCiAgICBgYEZhbHNlYGAuIElmIHRydWUsIHN0YWNrIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBsb2dnaW5nCkBAIC0yMjAsNiArMjIyLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgVGhlICpzdGFja19pbmZvKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpleGNfaW5mbyogcGFyYW1ldGVyIGNhbiBub3cgYWNjZXB0IGV4Y2VwdGlvbiBpbnN0YW5jZXMuCisKIAogLi4gbWV0aG9kOjogTG9nZ2VyLmluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2x6bWEucnN0IGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKaW5kZXggYjcxMDUxZC4uMDU0NjAwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbHptYS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTExMCw2ICsxMTAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAieCJgYCBhbmQgYGAieGIiYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKKyAgICAgIGBgTm9uZWBgLgorCiAKIENvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjIxLDEzICsyMjUsMzIgQEAKICAgICAgIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLCB5b3UgbXVzdAogICAgICAgY3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCiAKLSAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0tMSkKIAotICAgICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKLSAgICAgIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuCi0gICAgICBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bwotICAgICAgOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlCi0gICAgICBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4KKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApLCByZXR1cm5pbmcKKyAgICAgIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLiBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQKKyAgICAgIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUKKyAgICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvdXRwdXQgb2YgYW55CisgICAgICBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisKKyAgICAgIElmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKgorICAgICAgYnl0ZXMgb2YgZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlcgorICAgICAgb3V0cHV0IGNhbiBiZSBwcm9kdWNlZCwgdGhlIDphdHRyOmB+Lm5lZWRzX2lucHV0YCBhdHRyaWJ1dGUgd2lsbAorICAgICAgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dCBjYWxsIHRvCisgICAgICA6bWV0aDpgfi5kZWNvbXByZXNzYCBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYGBiJydgYCB0byBvYnRhaW4KKyAgICAgIG1vcmUgb2YgdGhlIG91dHB1dC4KKworICAgICAgSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIKKyAgICAgIGJlY2F1c2UgdGhpcyB3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZQorICAgICAgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlCisgICAgICB3aWxsIGJlIHNldCB0byBgYFRydWVgYC4KKworICAgICAgQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAorICAgICAgcmFpc2VzIGFuIGBFT0ZFcnJvcmAuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZQorICAgICAgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgfi51bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgQWRkZWQgdGhlICptYXhfbGVuZ3RoKiBwYXJhbWV0ZXIuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNoZWNrCiAKQEAgLTI0NSw2ICsyNjgsMTIgQEAKIAogICAgICAgQmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyByZWFjaGVkLCB0aGlzIHdpbGwgYmUgYGBiIiJgYC4KIAorICAgLi4gYXR0cmlidXRlOjogbmVlZHNfaW5wdXQKKworICAgICAgYGBGYWxzZWBgIGlmIHRoZSA6bWV0aDpgLmRlY29tcHJlc3NgIG1ldGhvZCBjYW4gcHJvdmlkZSBtb3JlCisgICAgICBkZWNvbXByZXNzZWQgZGF0YSBiZWZvcmUgcmVxdWlyaW5nIG5ldyB1bmNvbXByZXNzZWQgaW5wdXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDBmYzdjN2MuLjI0NDY2M2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC0xMDAsNiArMTAwLDQ4IEBACiAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzkzMDkwLz5gX1wuCiAKIAorLi4gZnVuY3Rpb246OiBnY2QoYSwgYikKKworICAgUmV0dXJuIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0aGUgaW50ZWdlcnMgKmEqIGFuZCAqYiouICBJZiBlaXRoZXIKKyAgICphKiBvciAqYiogaXMgbm9uemVybywgdGhlbiB0aGUgdmFsdWUgb2YgYGBnY2QoYSwgYilgYCBpcyB0aGUgbGFyZ2VzdAorICAgcG9zaXRpdmUgaW50ZWdlciB0aGF0IGRpdmlkZXMgYm90aCAqYSogYW5kICpiKi4gIGBgZ2NkKDAsIDApYGAgcmV0dXJucworICAgYGAwYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGZ1bmN0aW9uOjogaXNjbG9zZShhLCBiLCAqLCByZWxfdG9sPTFlLTA5LCBhYnNfdG9sPTAuMCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSB2YWx1ZXMgKmEqIGFuZCAqYiogYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgYW5kCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBXaGV0aGVyIG9yIG5vdCB0d28gdmFsdWVzIGFyZSBjb25zaWRlcmVkIGNsb3NlIGlzIGRldGVybWluZWQgYWNjb3JkaW5nIHRvCisgICBnaXZlbiBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgdG9sZXJhbmNlcy4KKworICAgKnJlbF90b2wqIGlzIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UgLS0gaXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlCisgICBiZXR3ZWVuICphKiBhbmQgKmIqLCByZWxhdGl2ZSB0byB0aGUgbGFyZ2VyIGFic29sdXRlIHZhbHVlIG9mICphKiBvciAqYiouCisgICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgdG9sZXJhbmNlIG9mIDUlLCBwYXNzIGBgcmVsX3RvbD0wLjA1YGAuICBUaGUgZGVmYXVsdAorICAgdG9sZXJhbmNlIGlzIGBgMWUtMDlgYCwgd2hpY2ggYXNzdXJlcyB0aGF0IHRoZSB0d28gdmFsdWVzIGFyZSB0aGUgc2FtZQorICAgd2l0aGluIGFib3V0IDkgZGVjaW1hbCBkaWdpdHMuICAqcmVsX3RvbCogbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KKworICAgKmFic190b2wqIGlzIHRoZSBtaW5pbXVtIGFic29sdXRlIHRvbGVyYW5jZSAtLSB1c2VmdWwgZm9yIGNvbXBhcmlzb25zIG5lYXIKKyAgIHplcm8uICphYnNfdG9sKiBtdXN0IGJlIGF0IGxlYXN0IHplcm8uCisKKyAgIElmIG5vIGVycm9ycyBvY2N1ciwgdGhlIHJlc3VsdCB3aWxsIGJlOgorICAgYGBhYnMoYS1iKSA8PSBtYXgocmVsX3RvbCAqIG1heChhYnMoYSksIGFicyhiKSksIGFic190b2wpYGAuCisKKyAgIFRoZSBJRUVFIDc1NCBzcGVjaWFsIHZhbHVlcyBvZiBgYE5hTmBgLCBgYGluZmBgLCBhbmQgYGAtaW5mYGAgd2lsbCBiZQorICAgaGFuZGxlZCBhY2NvcmRpbmcgdG8gSUVFRSBydWxlcy4gIFNwZWNpZmljYWxseSwgYGBOYU5gYCBpcyBub3QgY29uc2lkZXJlZAorICAgY2xvc2UgdG8gYW55IG90aGVyIHZhbHVlLCBpbmNsdWRpbmcgYGBOYU5gYC4gIGBgaW5mYGAgYW5kIGBgLWluZmBgIGFyZSBvbmx5CisgICBjb25zaWRlcmVkIGNsb3NlIHRvIHRoZW1zZWx2ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOnBlcDpgNDg1YCAtLSBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIGFwcHJveGltYXRlIGVxdWFsaXR5CisKKwogLi4gZnVuY3Rpb246OiBpc2Zpbml0ZSh4KQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKngqIGlzIG5laXRoZXIgYW4gaW5maW5pdHkgbm9yIGEgTmFOLCBhbmQKQEAgLTM4Myw2ICs0MjUsMjIgQEAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgZSA9IDIuNzE4MjgxLi4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgogCiAKKy4uIGRhdGE6OiBpbmYKKworICAgQSBmbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gIChGb3IgbmVnYXRpdmUgaW5maW5pdHksIHVzZQorICAgYGAtbWF0aC5pbmZgYC4pICBFcXVpdmFsZW50IHRvIHRoZSBvdXRwdXQgb2YgYGBmbG9hdCgnaW5mJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gZGF0YTo6IG5hbgorCisgICBBIGZsb2F0aW5nLXBvaW50ICJub3QgYSBudW1iZXIiIChOYU4pIHZhbHVlLiAgRXF1aXZhbGVudCB0byB0aGUgb3V0cHV0IG9mCisgICBgYGZsb2F0KCduYW4nKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBpbXBsLWRldGFpbDo6CiAKICAgIFRoZSA6bW9kOmBtYXRoYCBtb2R1bGUgY29uc2lzdHMgbW9zdGx5IG9mIHRoaW4gd3JhcHBlcnMgYXJvdW5kIHRoZSBwbGF0Zm9ybSBDCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tbWFwLnJzdCBiL0RvYy9saWJyYXJ5L21tYXAucnN0CmluZGV4IDE4ZTA1ZTMuLmI3NGE4MjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21tYXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21tYXAucnN0CkBAIC0xNzQsNiArMTc0LDkgQEAKICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCiAgICAgICBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBmbHVzaChbb2Zmc2V0Wywgc2l6ZV1dKQogCkBAIC0yMzQsNiArMjM3LDkgQEAKICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCiAgICAgICBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBzZWVrKHBvc1ssIHdoZW5jZV0pCiAKQEAgLTI2MSw2ICsyNjcsOSBAQAogICAgICAgd2VyZSB3cml0dGVuLiBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCiAgICAgICB3cml0aW5nIHRvIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZShieXRlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCA0ZDVmMzA4Li44NzAzZjhmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTEzNTIsNiArMTM1Miw5IEBACiAgICBOb3RlIHRoYXQgYWNjZXNzaW5nIHRoZSBjdHlwZXMgb2JqZWN0IHRocm91Z2ggdGhlIHdyYXBwZXIgY2FuIGJlIGEgbG90IHNsb3dlcgogICAgdGhhbiBhY2Nlc3NpbmcgdGhlIHJhdyBjdHlwZXMgb2JqZWN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3luY2hyb25pemVkIG9iamVjdHMgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuCisKIAogVGhlIHRhYmxlIGJlbG93IGNvbXBhcmVzIHRoZSBzeW50YXggZm9yIGNyZWF0aW5nIHNoYXJlZCBjdHlwZXMgb2JqZWN0cyBmcm9tCiBzaGFyZWQgbWVtb3J5IHdpdGggdGhlIG5vcm1hbCBjdHlwZXMgc3ludGF4LiAgKEluIHRoZSB0YWJsZSBgYE15U3RydWN0YGAgaXMgc29tZQpAQCAtMTgzOSw5ICsxODQyLDkgQEAKICAgICAgICAgID4+PiBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKICAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2xlbl9fJykKICAgICAgICAgIDEwCi0gICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoc2xpY2UoMiwgNyksKSkgICMgZXF1aXYgdG8gYGxbMjo3XWAKKyAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsIChzbGljZSgyLCA3KSwpKSAjIGVxdWl2YWxlbnQgdG8gbFsyOjddCiAgICAgICAgICBbMiwgMywgNCwgNSwgNl0KLSAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgIyBlcXVpdiB0byBgbFsyMF1gCisgICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICAgICAgIyBlcXVpdmFsZW50IHRvIGxbMjBdCiAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAuLi4KICAgICAgICAgIEluZGV4RXJyb3I6IGxpc3QgaW5kZXggb3V0IG9mIHJhbmdlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QKaW5kZXggZjllMmEzZC4uYzAxZTYzYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L29wZXJhdG9yLnJzdApAQCAtMTM4LDYgKzEzOCwxNCBAQAogICAgUmV0dXJuIGBgYSAqIGJgYCwgZm9yICphKiBhbmQgKmIqIG51bWJlcnMuCiAKIAorLi4gZnVuY3Rpb246OiBtYXRtdWwoYSwgYikKKyAgICAgICAgICAgICAgX19tYXRtdWxfXyhhLCBiKQorCisgICBSZXR1cm4gYGBhIEAgYmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IG5lZyhvYmopCiAgICAgICAgICAgICAgIF9fbmVnX18ob2JqKQogCkBAIC0zOTEsNiArMzk5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTXVsdGlwbGljYXRpb24gICAgICAgIHwgYGBhICogYmBgICAgICAgICAgICAgICAgfCBgYG11bChhLCBiKWBgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgTWF0cml4IE11bHRpcGxpY2F0aW9uIHwgYGBhIEAgYmBgICAgICAgICAgICAgICAgfCBgYG1hdG11bChhLCBiKWBgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTmVnYXRpb24gKEFyaXRobWV0aWMpIHwgYGAtIGFgYCAgICAgICAgICAgICAgICAgfCBgYG5lZyhhKWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTmVnYXRpb24gKExvZ2ljYWwpICAgIHwgYGBub3QgYWBgICAgICAgICAgICAgICAgfCBgYG5vdF8oYSlgYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTQ5OSw2ICs1MDksMTQgQEAKICAgIGBgYSA9IGltdWwoYSwgYilgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSAqPSBiYGAuCiAKIAorLi4gZnVuY3Rpb246OiBpbWF0bXVsKGEsIGIpCisgICAgICAgICAgICAgIF9faW1hdG11bF9fKGEsIGIpCisKKyAgIGBgYSA9IGltYXRtdWwoYSwgYilgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSBAPSBiYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogaW9yKGEsIGIpCiAgICAgICAgICAgICAgIF9faW9yX18oYSwgYikKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCA5MjYzMWIyLi5lNGZlNDRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNjYsMTEgKzY2LDI0IEBACiAgICBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCiAKIAorLi4gZnVuY3Rpb246OiBjb21tb25wYXRoKHBhdGhzKQorCisgICBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIGVhY2ggcGF0aG5hbWUgaW4gdGhlIHNlcXVlbmNlCisgICAqcGF0aHMqLiAgUmFpc2UgVmFsdWVFcnJvciBpZiAqcGF0aHMqIGNvbnRhaW5zIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlCisgICBwYXRobmFtZXMsIG9yIGlmICpwYXRocyogaXMgZW1wdHkuICBVbmxpa2UgOmZ1bmM6YGNvbW1vbnByZWZpeGAsIHRoaXMKKyAgIHJldHVybnMgYSB2YWxpZCBwYXRoLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBjb21tb25wcmVmaXgobGlzdCkKIAotICAgUmV0dXJuIHRoZSBsb25nZXN0IHBhdGggcHJlZml4ICh0YWtlbiBjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSB0aGF0IGlzIGEgcHJlZml4Ci0gICBvZiBhbGwgcGF0aHMgaW4gICpsaXN0Ki4gIElmICpsaXN0KiBpcyBlbXB0eSwgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCi0gICBOb3RlIHRoYXQgdGhpcyBtYXkgcmV0dXJuIGludmFsaWQgcGF0aHMgYmVjYXVzZSBpdCB3b3JrcyBhIGNoYXJhY3RlciBhdCBhIHRpbWUuCisgICBSZXR1cm4gdGhlIGxvbmdlc3QgcGF0aCBwcmVmaXggKHRha2VuIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIpIHRoYXQgaXMgYQorICAgcHJlZml4IG9mIGFsbCBwYXRocyBpbiAgKmxpc3QqLiAgSWYgKmxpc3QqIGlzIGVtcHR5LCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZworICAgKGBgJydgYCkuICBOb3RlIHRoYXQgdGhpcyBtYXkgcmV0dXJuIGludmFsaWQgcGF0aHMgYmVjYXVzZSBpdCB3b3JrcyBhCisgICBjaGFyYWN0ZXIgYXQgYSB0aW1lLiAgVG8gb2J0YWluIGEgdmFsaWQgcGF0aCwgc2VlIDpmdW5jOmBjb21tb25wYXRoYC4KIAogCiAuLiBmdW5jdGlvbjo6IGRpcm5hbWUocGF0aCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCBkNjc3YjM5Li4xNmU1MDE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC03OCw5ICs3OCwxMCBAQAogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgT24gc29tZSBzeXN0ZW1zLCBjb252ZXJzaW9uIHVzaW5nIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBtYXkgZmFpbC4gSW4gdGhpcwotICAgY2FzZSwgUHl0aG9uIHVzZXMgdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAgZW5jb2RpbmcgZXJyb3IgaGFuZGxlciwgd2hpY2ggbWVhbnMKLSAgIHRoYXQgdW5kZWNvZGFibGUgYnl0ZXMgYXJlIHJlcGxhY2VkIGJ5IGEgVW5pY29kZSBjaGFyYWN0ZXIgVStEQ3h4IG9uCi0gICBkZWNvZGluZywgYW5kIHRoZXNlIGFyZSBhZ2FpbiB0cmFuc2xhdGVkIHRvIHRoZSBvcmlnaW5hbCBieXRlIG9uIGVuY29kaW5nLgorICAgY2FzZSwgUHl0aG9uIHVzZXMgdGhlIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGluZyBlcnJvciBoYW5kbGVyCisgICA8c3Vycm9nYXRlZXNjYXBlPmAsIHdoaWNoIG1lYW5zIHRoYXQgdW5kZWNvZGFibGUgYnl0ZXMgYXJlIHJlcGxhY2VkIGJ5IGEKKyAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrREN4eCBvbiBkZWNvZGluZywgYW5kIHRoZXNlIGFyZSBhZ2FpbiB0cmFuc2xhdGVkIHRvIHRoZQorICAgb3JpZ2luYWwgYnl0ZSBvbiBlbmNvZGluZy4KIAogCiBUaGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgbXVzdCBndWFyYW50ZWUgdG8gc3VjY2Vzc2Z1bGx5IGRlY29kZSBhbGwgYnl0ZXMKQEAgLTMxMSw4ICszMTIsNiBAQAogCiAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0cHBpZCgpCiAKQEAgLTU0OSw4ICs1NDgsNiBAQAogICAgT24gcGxhdGZvcm1zIHdoZXJlIDpjOmZ1bmM6YHN0cmVycm9yYCByZXR1cm5zIGBgTlVMTGBgIHdoZW4gZ2l2ZW4gYW4gdW5rbm93bgogICAgZXJyb3IgbnVtYmVyLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBkYXRhOjogc3VwcG9ydHNfYnl0ZXNfZW52aXJvbgogCkBAIC01NjQsOCArNTYxLDYgQEAKIAogICAgU2V0IHRoZSBjdXJyZW50IG51bWVyaWMgdW1hc2sgYW5kIHJldHVybiB0aGUgcHJldmlvdXMgdW1hc2suCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IHVuYW1lKCkKIApAQCAtNjU2LDggKzY1MSw2IEBACiAKICAgIENsb3NlIGZpbGUgZGVzY3JpcHRvciAqZmQqLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgSS9PIGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYSBmaWxlCkBAIC02NzcsOCArNjcwLDYgQEAKICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgcGFzcwogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBkZXZpY2VfZW5jb2RpbmcoZmQpCiAKQEAgLTY5NSw4ICs2ODYsNiBAQAogICAgMjogc3RkZXJyKSwgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3IgaXMgOnJlZjpgaW5oZXJpdGFibGUKICAgIDxmZF9pbmhlcml0YW5jZT5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgbmV3IGZpbGUgZGVzY3JpcHRvciBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCkBAIC03MDcsOCArNjk2LDYgQEAKICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkMiogaXMgOnJlZjpgaW5oZXJpdGFibGUgPGZkX2luaGVyaXRhbmNlPmAgYnkgZGVmYXVsdCwKICAgIG9yIG5vbi1pbmhlcml0YWJsZSBpZiAqaW5oZXJpdGFibGUqIGlzIGBgRmFsc2VgYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkIHRoZSBvcHRpb25hbCAqaW5oZXJpdGFibGUqIHBhcmFtZXRlci4KIApAQCAtNzc0LDggKzc2MSw2IEBACiAKICAgICAgIFRoZSA6ZnVuYzpgLnN0YXRgIGZ1bmN0aW9uLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBmc3RhdHZmcyhmZCkKIApAQCAtODA0LDggKzc4OSwyMSBAQAogICAgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICBgYG9zLnRydW5jYXRlKGZkLCBsZW5ndGgpYGAuCiAKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MKKworLi4gZnVuY3Rpb246OiBnZXRfYmxvY2tpbmcoZmQpCisKKyAgIEdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yOiBgYEZhbHNlYGAgaWYgdGhlCisgICA6ZGF0YTpgT19OT05CTE9DS2AgZmxhZyBpcyBzZXQsIGBgVHJ1ZWBgIGlmIHRoZSBmbGFnIGlzIGNsZWFyZWQuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBzZXRfYmxvY2tpbmdgIGFuZCA6bWV0aDpgc29ja2V0LnNvY2tldC5zZXRibG9ja2luZ2AuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGZ1bmN0aW9uOjogaXNhdHR5KGZkKQogCkBAIC04NDYsOCArODQ0LDYgQEAKICAgIGN1cnJlbnQgcG9zaXRpb247IDpjb25zdDpgU0VFS19FTkRgIG9yIGBgMmBgIHRvIHNldCBpdCByZWxhdGl2ZSB0byB0aGUgZW5kIG9mCiAgICB0aGUgZmlsZS4gUmV0dXJuIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIGluIGJ5dGVzLCBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBkYXRhOjogU0VFS19TRVQKICAgICAgICAgICBTRUVLX0NVUgpAQCAtODU2LDggKzg1Miw2IEBACiAgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgbHNlZWtgIGZ1bmN0aW9uLiBUaGVpciB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAyLAogICAgcmVzcGVjdGl2ZWx5LgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBjb3VsZCBzdXBwb3J0IGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCiAgICAgICA6ZGF0YTpgb3MuU0VFS19IT0xFYCBvciA6ZGF0YTpgb3MuU0VFS19EQVRBYC4KQEAgLTg3OCw4ICs4NzIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YCB3aXRoIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBuZXcgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdyBub24taW5oZXJpdGFibGUuCiAKQEAgLTg5Myw2ICs4ODUsMTEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgb3B0aW9ucyBmb3IgdGhlICpmbGFncyogcGFyYW1ldGVyIHRvIHRoZQogOmZ1bmM6YH5vcy5vcGVuYCBmdW5jdGlvbi4gIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yCiBgYHxgYC4gIFNvbWUgb2YgdGhlbSBhcmUgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgRm9yIGRlc2NyaXB0aW9ucyBvZgpAQCAtMTA2MCw4ICsxMDU3LDYgQEAKICAgIGJ5dGVzIHJlYWQuICBJZiB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5ICpmZCogaGFzIGJlZW4gcmVhY2hlZCwgYW4KICAgIGVtcHR5IGJ5dGVzIG9iamVjdCBpcyByZXR1cm5lZC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtMTA3MCw2ICsxMDY1LDExIEBACiAgICAgICA6ZnVuYzpgcG9wZW5gIG9yIDpmdW5jOmBmZG9wZW5gLCBvciA6ZGF0YTpgc3lzLnN0ZGluYCwgdXNlIGl0cwogICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIG9yIDptZXRoOmB+ZmlsZS5yZWFkbGluZWAgbWV0aG9kcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzKQogICAgICAgICAgICAgICBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycz1Ob25lLCB0cmFpbGVycz1Ob25lLCBmbGFncz0wKQpAQCAtMTEwNyw2ICsxMTA3LDE4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCisuLiBmdW5jdGlvbjo6IHNldF9ibG9ja2luZyhmZCwgYmxvY2tpbmcpCisKKyAgIFNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4gU2V0IHRoZQorICAgOmRhdGE6YE9fTk9OQkxPQ0tgIGZsYWcgaWYgYmxvY2tpbmcgaXMgYGBGYWxzZWBgLCBjbGVhciB0aGUgZmxhZyBvdGhlcndpc2UuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBnZXRfYmxvY2tpbmdgIGFuZCA6bWV0aDpgc29ja2V0LnNvY2tldC5zZXRibG9ja2luZ2AuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZGF0YTo6IFNGX05PRElTS0lPCiAgICAgICAgICAgU0ZfTU5PV0FJVAogICAgICAgICAgIFNGX1NZTkMKQEAgLTExNjMsOCArMTE3NSw2IEBACiAgICBXcml0ZSB0aGUgYnl0ZXN0cmluZyBpbiAqc3RyKiB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gUmV0dXJuIHRoZSBudW1iZXIgb2YKICAgIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4uCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGxvdy1sZXZlbCBJL08gYW5kIG11c3QgYmUgYXBwbGllZCB0byBhIGZpbGUKQEAgLTExNzMsNiArMTE4MywxMSBAQAogICAgICAgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3Rkb3V0YCBvciA6ZGF0YTpgc3lzLnN0ZGVycmAsIHVzZSBpdHMKICAgICAgIDptZXRoOmB+ZmlsZS53cml0ZWAgbWV0aG9kLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIGZ1bmN0aW9uOjogd3JpdGV2KGZkLCBidWZmZXJzKQogCkBAIC0xMzM1LDggKzEzNTAsNiBAQAogICAgb3Igbm90IGl0IGlzIGF2YWlsYWJsZSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkc2AuICBJZiBpdCBpcwogICAgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVXNpbmcgOmZ1bmM6YGFjY2Vzc2AgdG8gY2hlY2sgaWYgYSB1c2VyIGlzIGF1dGhvcml6ZWQgdG8gZS5nLiBvcGVuIGEgZmlsZQpAQCAtMTM4OSw4ICsxNDAyLDYgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLiAgVGhlCiAgICBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4gZmlsZS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCiAgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KQEAgLTE0NTIsOCArMTQ2Myw2IEBACiAgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKICAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIEFsdGhvdWdoIFdpbmRvd3Mgc3VwcG9ydHMgOmZ1bmM6YGNobW9kYCwgeW91IGNhbiBvbmx5IHNldCB0aGUgZmlsZSdzCkBAIC0xNTA0LDE1ICsxNTEzLDExIEBACiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQogCiAgICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogbGNoZmxhZ3MocGF0aCwgZmxhZ3MpCiAKQEAgLTE1NzUsNyArMTU4MCwxMSBAQAogICAgLi4gbm90ZTo6CiAgICAgICBUbyBlbmNvZGUgYGBzdHJgYCBmaWxlbmFtZXMgdG8gYGBieXRlc2BgLCB1c2UgOmZ1bmM6YH5vcy5mc2VuY29kZWAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKyAgIC4uIHNlZWFsc286OgorCisgICAgICBUaGUgOmZ1bmM6YHNjYW5kaXJgIGZ1bmN0aW9uIHJldHVybnMgZGlyZWN0b3J5IGVudHJpZXMgYWxvbmcgd2l0aAorICAgICAgZmlsZSBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGdpdmluZyBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIG1hbnkKKyAgICAgIGNvbW1vbiB1c2UgY2FzZXMuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKnBhdGgqIHBhcmFtZXRlciBiZWNhbWUgb3B0aW9uYWwuCkBAIC0xNjI0LDggKzE2MzMsNiBAQAogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzOyBzZWUgdGhlCiAgICA6bW9kOmB0ZW1wZmlsZWAgbW9kdWxlJ3MgOmZ1bmM6YHRlbXBmaWxlLm1rZHRlbXBgIGZ1bmN0aW9uLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCkBAIC0xNzg0LDggKzE3OTEsNiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byA6ZnVuYzpgdW5saW5rYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIApAQCAtMTgxOSw4ICsxODI0LDYgQEAKIAogICAgSWYgeW91IHdhbnQgY3Jvc3MtcGxhdGZvcm0gb3ZlcndyaXRpbmcgb2YgdGhlIGRlc3RpbmF0aW9uLCB1c2UgOmZ1bmM6YHJlcGxhY2VgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KIApAQCAtMTg0OSw4ICsxODUyLDYgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bwogICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIApAQCAtMTg2MywxMiArMTg2NCwxODAgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCiAgICA8ZGlyX2ZkPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCiAKKy4uIGZ1bmN0aW9uOjogc2NhbmRpcihwYXRoPScuJykKKworICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgZW50cmllcworICAgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluIGFyYml0cmFyeQorICAgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QgaW5jbHVkZWQuCisKKyAgIFVzaW5nIDpmdW5jOmBzY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBsaXN0ZGlyYCBjYW4gc2lnbmlmaWNhbnRseQorICAgaW5jcmVhc2UgdGhlIHBlcmZvcm1hbmNlIG9mIGNvZGUgdGhhdCBhbHNvIG5lZWRzIGZpbGUgdHlwZSBvciBmaWxlCisgICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcworICAgaW5mb3JtYXRpb24gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMgaXQgd2hlbiBzY2FubmluZyBhIGRpcmVjdG9yeS4KKyAgIEFsbCA6Y2xhc3M6YERpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAorICAgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQorICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YERpckVudHJ5LnN0YXRgCisgICBhbHdheXMgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbCBvbiBVbml4IGJ1dCBvbmx5IHJlcXVpcmVzIG9uZSBmb3IKKyAgIHN5bWJvbGljIGxpbmtzIG9uIFdpbmRvd3MuCisKKyAgIE9uIFVuaXgsICpwYXRoKiBjYW4gYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgKHVzZQorICAgOmZ1bmM6YH5vcy5mc2VuY29kZWAgYW5kIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGVuY29kZSBhbmQgZGVjb2RlCisgICA6Y2xhc3M6YGJ5dGVzYCBwYXRocykuIE9uIFdpbmRvd3MsICpwYXRoKiBtdXN0IGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgLgorICAgT24gYm90aCBzeXRlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfkRpckVudHJ5Lm5hbWVgIGFuZAorICAgOmF0dHI6YH5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBEaXJFbnRyeWAgd2lsbCBiZSBvZgorICAgdGhlIHNhbWUgdHlwZSBhcyAqcGF0aCouCisKKyAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YHNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCisgICB0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKKyAgIGBgJy4nYGAuIFRoZSBgYGVudHJ5LmlzX2ZpbGUoKWBgIGNhbGwgd2lsbCBnZW5lcmFsbHkgbm90IG1ha2UgYW4gYWRkaXRpb25hbAorICAgc3lzdGVtIGNhbGw6OgorCisgICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKKyAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgorICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBPbiBVbml4LWJhc2VkIHN5c3RlbXMsIDpmdW5jOmBzY2FuZGlyYCB1c2VzIHRoZSBzeXN0ZW0ncworICAgICAgYG9wZW5kaXIoKSA8aHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvb3BlbmRpci5odG1sPmBfCisgICAgICBhbmQKKyAgICAgIGByZWFkZGlyKCkgPGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3JlYWRkaXJfci5odG1sPmBfCisgICAgICBmdW5jdGlvbnMuIE9uIFdpbmRvd3MsIGl0IHVzZXMgdGhlIFdpbjMyCisgICAgICBgRmluZEZpcnN0RmlsZVcgPGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjQ0MTgodj12cy44NSkuYXNweD5gXworICAgICAgYW5kCisgICAgICBgRmluZE5leHRGaWxlVyA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NDQyOCh2PXZzLjg1KS5hc3B4PmBfCisgICAgICBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGNsYXNzOjogRGlyRW50cnkKKworICAgT2JqZWN0IHlpZWxkZWQgYnkgOmZ1bmM6YHNjYW5kaXJgIHRvIGV4cG9zZSB0aGUgZmlsZSBwYXRoIGFuZCBvdGhlciBmaWxlCisgICBhdHRyaWJ1dGVzIG9mIGEgZGlyZWN0b3J5IGVudHJ5LgorCisgICA6ZnVuYzpgc2NhbmRpcmAgd2lsbCBwcm92aWRlIGFzIG11Y2ggb2YgdGhpcyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSB3aXRob3V0CisgICBtYWtpbmcgYWRkaXRpb25hbCBzeXN0ZW0gY2FsbHMuIFdoZW4gYSBgYHN0YXQoKWBgIG9yIGBgbHN0YXQoKWBgIHN5c3RlbSBjYWxsCisgICBpcyBtYWRlLCB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCB3aWxsIGNhY2hlIHRoZSByZXN1bHQuCisKKyAgIGBgRGlyRW50cnlgYCBpbnN0YW5jZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gbG9uZy1saXZlZCBkYXRhCisgICBzdHJ1Y3R1cmVzOyBpZiB5b3Uga25vdyB0aGUgZmlsZSBtZXRhZGF0YSBoYXMgY2hhbmdlZCBvciBpZiBhIGxvbmcgdGltZSBoYXMKKyAgIGVsYXBzZWQgc2luY2UgY2FsbGluZyA6ZnVuYzpgc2NhbmRpcmAsIGNhbGwgYGBvcy5zdGF0KGVudHJ5LnBhdGgpYGAgdG8gZmV0Y2gKKyAgIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgIEJlY2F1c2UgdGhlIGBgRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CisgICBhbHNvIHJhaXNlIDpleGM6YE9TRXJyb3JgLiBJZiB5b3UgbmVlZCB2ZXJ5IGZpbmUtZ3JhaW5lZAorICAgY29udHJvbCBvdmVyIGVycm9ycywgeW91IGNhbiBjYXRjaCA6ZXhjOmBPU0Vycm9yYCB3aGVuIGNhbGxpbmcgb25lIG9mIHRoZQorICAgYGBEaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KKworICAgQXR0cmlidXRlcyBhbmQgbWV0aG9kcyBvbiBhIGBgRGlyRW50cnlgYCBpbnN0YW5jZSBhcmUgYXMgZm9sbG93czoKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKgorICAgICAgYXJndW1lbnQuCisKKyAgICAgIFRoZSA6YXR0cjpgbmFtZWAgYXR0cmlidXRlIHdpbGwgYmUgb2YgdGhlIHNhbWUgdHlwZSAoYGBzdHJgYCBvcgorICAgICAgYGBieXRlc2BgKSBhcyB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKiBhcmd1bWVudC4gVXNlCisgICAgICA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBkZWNvZGUgYnl0ZSBmaWxlbmFtZXMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIGVudHJ5J3MgZnVsbCBwYXRoIG5hbWU6IGVxdWl2YWxlbnQgdG8gYGBvcy5wYXRoLmpvaW4oc2NhbmRpcl9wYXRoLAorICAgICAgZW50cnkubmFtZSlgYCB3aGVyZSAqc2NhbmRpcl9wYXRoKiBpcyB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKgorICAgICAgYXJndW1lbnQuICBUaGUgcGF0aCBpcyBvbmx5IGFic29sdXRlIGlmIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCisgICAgICBhcmd1bWVudCB3YXMgYWJzb2x1dGUuCisKKyAgICAgIFRoZSA6YXR0cjpgcGF0aGAgYXR0cmlidXRlIHdpbGwgYmUgb2YgdGhlIHNhbWUgdHlwZSAoYGBzdHJgYCBvcgorICAgICAgYGBieXRlc2BgKSBhcyB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKiBhcmd1bWVudC4gVXNlCisgICAgICA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBkZWNvZGUgYnl0ZSBmaWxlbmFtZXMuCisKKyAgIC4uIG1ldGhvZDo6IGlub2RlKCkKKworICAgICAgUmV0dXJuIHRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGVudHJ5LgorCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgdXNlIGBgb3Muc3RhdChlbnRyeS5wYXRoLAorICAgICAgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAgICBPbiBVbml4LCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogaXNfZGlyKFwqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgcmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZQorICAgICAgZW50cnkgaXMgYSBkaXJlY3Rvcnkgb3IgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5OworICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiBpdCBpcyBvciBwb2ludHMgdG8gYW55IG90aGVyIGtpbmQgb2YgZmlsZSwgb3IgaWYgaXQKKyAgICAgIGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLCByZXR1cm4gYGBUcnVlYGAgb25seSBpZiB0aGlzIGVudHJ5CisgICAgICBpcyBhIGRpcmVjdG9yeTsgcmV0dXJuIGBgRmFsc2VgYCBpZiBpdCBpcyBhbnkgb3RoZXIga2luZCBvZiBmaWxlCisgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsIDpmdW5jOmBvcy5zdGF0YAorICAgICAgYWxvbmcgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTRElSYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAgICBUaGlzIG1ldGhvZCBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHN1Y2ggYXMgOmV4YzpgUGVybWlzc2lvbkVycm9yYCwKKyAgICAgIGJ1dCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgY2F1Z2h0IGFuZCBub3QgcmFpc2VkLgorCisgICAgICBJbiBtb3N0IGNhc2VzLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogaXNfZmlsZShcKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgICAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIHJldHVybiBgYFRydWVgYCBpZiB0aGUKKyAgICAgIGVudHJ5IGlzIGEgZmlsZSBvciBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gYSBmaWxlOyByZXR1cm4gYGBGYWxzZWBgCisgICAgICBpZiBpdCBpcyBvciBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksIG9yIGlmIGl0CisgICAgICBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGBgRmFsc2VgYCwgcmV0dXJuIGBgVHJ1ZWBgIG9ubHkgaWYgdGhpcyBlbnRyeQorICAgICAgaXMgYSBmaWxlOyByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IGlzIGEgZGlyZWN0b3J5IG9yIG90aGVyIG5vbi1maWxlIGVudHJ5LAorICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAKKyAgICAgIGFsb25nIHdpdGggOmZ1bmM6YHN0YXQuU19JU1JFR2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgICAgVGhpcyBtZXRob2QgY2FuIHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzdWNoIGFzIDpleGM6YFBlcm1pc3Npb25FcnJvcmAsCisgICAgICBidXQgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIGlzIGNhdWdodCBhbmQgbm90IHJhaXNlZC4KKworICAgICAgSW4gbW9zdCBjYXNlcywgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3N5bWxpbmsoKQorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhpcyBlbnRyeSBpcyBhIHN5bWJvbGljIGxpbmsgKGV2ZW4gaWYgYnJva2VuKTsKKyAgICAgIHJldHVybiBgYEZhbHNlYGAgaWYgaXQgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IG9yIGFueSBraW5kIG9mIGZpbGUsCisgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsCisgICAgICA6ZnVuYzpgb3MucGF0aC5pc2xpbmtgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoZSBtZXRob2QgY2FuIHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzdWNoIGFzIDpleGM6YFBlcm1pc3Npb25FcnJvcmAsCisgICAgICBidXQgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIGlzIGNhdWdodCBhbmQgbm90IHJhaXNlZC4KKworICAgICAgSW4gbW9zdCBjYXNlcywgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQuCisKKyAgIC4uIG1ldGhvZDo6IHN0YXQoXCosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICAgICBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YCBvYmplY3QgZm9yIHRoaXMgZW50cnkuIFRoaXMgbWV0aG9kCisgICAgICBmb2xsb3dzIHN5bWJvbGljIGxpbmtzIGJ5IGRlZmF1bHQ7IHRvIHN0YXQgYSBzeW1ib2xpYyBsaW5rIGFkZCB0aGUKKyAgICAgIGBgZm9sbG93X3N5bWxpbmtzPUZhbHNlYGAgYXJndW1lbnQuCisKKyAgICAgIE9uIFVuaXgsIHRoaXMgbWV0aG9kIGFsd2F5cyByZXF1aXJlcyBhIHN5c3RlbSBjYWxsLiBPbiBXaW5kb3dzLAorICAgICAgYGBEaXJFbnRyeS5zdGF0KClgYCByZXF1aXJlcyBhIHN5c3RlbSBjYWxsIG9ubHkgaWYgdGhlCisgICAgICBlbnRyeSBpcyBhIHN5bWJvbGljIGxpbmssIGFuZCBgYERpckVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgCisgICAgICBuZXZlciByZXF1aXJlcyBhIHN5c3RlbSBjYWxsLgorCisgICAgICBPbiBXaW5kb3dzLCB0aGUgYGBzdF9pbm9gYCwgYGBzdF9kZXZgYCBhbmQgYGBzdF9ubGlua2BgIGF0dHJpYnV0ZXMgb2YgdGhlCisgICAgICA6Y2xhc3M6YHN0YXRfcmVzdWx0YCBhcmUgYWx3YXlzIHNldCB0byB6ZXJvLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bworICAgICAgZ2V0IHRoZXNlIGF0dHJpYnV0ZXMuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsIDpmdW5jOmBvcy5zdGF0YAorICAgICAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIEdldCB0aGUgc3RhdHVzIG9mIGEgZmlsZSBvciBhIGZpbGUgZGVzY3JpcHRvci4gUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhCkBAIC0xODk1LDggKzIwNjQsNiBAQAogICAgICAgPj4+IHN0YXRpbmZvLnN0X3NpemUKICAgICAgIDI2NAogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHNlZWFsc286OgogCiAgICAgICA6ZnVuYzpgZnN0YXRgIGFuZCA6ZnVuYzpgbHN0YXRgIGZ1bmN0aW9ucy4KQEAgLTIwNDQsNiArMjIxMSwxNSBAQAogCiAgICAgICBGaWxlIHR5cGUuCiAKKyAgIE9uIFdpbmRvd3Mgc3lzdGVtcywgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGUgaXMgYWxzbyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0X2ZpbGVfYXR0cmlidXRlcworCisgICAgICBXaW5kb3dzIGZpbGUgYXR0cmlidXRlczogYGBkd0ZpbGVBdHRyaWJ1dGVzYGAgbWVtYmVyIG9mIHRoZQorICAgICAgYGBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTmBgIHN0cnVjdHVyZSByZXR1cm5lZCBieQorICAgICAgOmM6ZnVuYzpgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGVgLiBTZWUgdGhlIGBgRklMRV9BVFRSSUJVVEVfKmBgCisgICAgICBjb25zdGFudHMgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZS4KKwogICAgVGhlIHN0YW5kYXJkIG1vZHVsZSA6bW9kOmBzdGF0YCBkZWZpbmVzIGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzIHRoYXQgYXJlCiAgICB1c2VmdWwgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBhIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZS4gKE9uCiAgICBXaW5kb3dzLCBzb21lIGl0ZW1zIGFyZSBmaWxsZWQgd2l0aCBkdW1teSB2YWx1ZXMuKQpAQCAtMjA2MSw2ICsyMjM3LDkgQEAKICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLCBhbmQKICAgICAgIDphdHRyOmBzdF9jdGltZV9uc2AgbWVtYmVycy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YHN0X2ZpbGVfYXR0cmlidXRlc2AgbWVtYmVyIG9uIFdpbmRvd3MuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWx1ZV0pCiAKQEAgLTIyNjQsMTAgKzI0NDMsMTIgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCkBAIC0yMjc2LDggKzI0NTcsNiBAQAogICAgbmFtZS4gIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIDpmdW5jOmByZW1vdmVgIGZvcgogICAgZnVydGhlciBpbmZvcm1hdGlvbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKQEAgLTIzMTQsOCArMjQ5Myw2IEBACiAgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKICAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KQEAgLTI0MDYsNiArMjU4MywxMCBAQAogICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CiAgICAgICAgICAgICAgIG9zLnJtZGlyKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKKyAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCisKIAogLi4gZnVuY3Rpb246OiBmd2Fsayh0b3A9Jy4nLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMjU2Miw4ICsyNzQzLDYgQEAKICAgIFB5dGhvbiBzaWduYWwgaGFuZGxlciByZWdpc3RlcmVkIGZvciA6Y29uc3Q6YFNJR0FCUlRgIHdpdGgKICAgIDpmdW5jOmBzaWduYWwuc2lnbmFsYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZXhlY2wocGF0aCwgYXJnMCwgYXJnMSwgLi4uKQogICAgICAgICAgICAgICBleGVjbGUocGF0aCwgYXJnMCwgYXJnMSwgLi4uLCBlbnYpCkBAIC0yNjI3LDggKzI4MDYsNiBAQAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwogICAgc3RkaW8gYnVmZmVycywgZXRjLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgc3RhbmRhcmQgd2F5IHRvIGV4aXQgaXMgYGBzeXMuZXhpdChuKWBgLiAgOmZ1bmM6YF9leGl0YCBzaG91bGQKQEAgLTI5OTAsNiArMzE2NywxMCBAQAogICAgZG9lc24ndCB3b3JrIGlmIGl0IGlzLiAgVXNlIHRoZSA6ZnVuYzpgb3MucGF0aC5ub3JtcGF0aGAgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQKICAgIHRoZSBwYXRoIGlzIHByb3Blcmx5IGVuY29kZWQgZm9yIFdpbjMyLgogCisgICBUbyByZWR1Y2UgaW50ZXJwcmV0ZXIgc3RhcnR1cCBvdmVyaGVhZCwgdGhlIFdpbjMyIDpjOmZ1bmM6YFNoZWxsRXhlY3V0ZWAKKyAgIGZ1bmN0aW9uIGlzIG5vdCByZXNvbHZlZCB1bnRpbCB0aGlzIGZ1bmN0aW9uIGlzIGZpcnN0IGNhbGxlZC4gIElmIHRoZSBmdW5jdGlvbgorICAgY2Fubm90IGJlIHJlc29sdmVkLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKwogICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgogCiAKQEAgLTMxMzcsNiArMzMxOCwxMSBAQAogICAgaWQgaXMga25vd24sIG5vdCBuZWNlc3NhcmlseSBhIGNoaWxkIHByb2Nlc3MuIFRoZSA6ZnVuYzpgc3Bhd25cKiA8c3Bhd25sPmAKICAgIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCA6Y29uc3Q6YFBfTk9XQUlUYCByZXR1cm4gc3VpdGFibGUgcHJvY2VzcyBoYW5kbGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIGZ1bmN0aW9uOjogd2FpdDMob3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0IGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CmluZGV4IGJiNTA4MWEuLmM2MGQ1OTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKQEAgLTE0OCwyMSArMTQ4LDMwIEBACiAKIC4uIG1ldGhvZDo6IG9zc19hdWRpb19kZXZpY2Uud3JpdGUoZGF0YSkKIAotICAgV3JpdGUgdGhlIFB5dGhvbiBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhdWRpbyBkZXZpY2UgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mCi0gICBieXRlcyB3cml0dGVuLiAgSWYgdGhlIGF1ZGlvIGRldmljZSBpcyBpbiBibG9ja2luZyBtb2RlICh0aGUgZGVmYXVsdCksIHRoZQotICAgZW50aXJlIHN0cmluZyBpcyBhbHdheXMgd3JpdHRlbiAoYWdhaW4sIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdXN1YWwgVW5peCBkZXZpY2UKLSAgIHNlbWFudGljcykuICBJZiB0aGUgZGV2aWNlIGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLCBzb21lIGRhdGEgbWF5IG5vdCBiZSB3cml0dGVuCisgICBXcml0ZSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgKmRhdGEqIHRvIHRoZSBhdWRpbyBkZXZpY2UgYW5kIHJldHVybiB0aGUKKyAgIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgSWYgdGhlIGF1ZGlvIGRldmljZSBpcyBpbiBibG9ja2luZyBtb2RlICh0aGUKKyAgIGRlZmF1bHQpLCB0aGUgZW50aXJlIGRhdGEgaXMgYWx3YXlzIHdyaXR0ZW4gKGFnYWluLCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tCisgICB1c3VhbCBVbml4IGRldmljZSBzZW1hbnRpY3MpLiAgSWYgdGhlIGRldmljZSBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSwgc29tZQorICAgZGF0YSBtYXkgbm90IGJlIHdyaXR0ZW4KICAgIC0tLXNlZSA6bWV0aDpgd3JpdGVhbGxgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiBtZXRob2Q6OiBvc3NfYXVkaW9fZGV2aWNlLndyaXRlYWxsKGRhdGEpCiAKLSAgIFdyaXRlIHRoZSBlbnRpcmUgUHl0aG9uIHN0cmluZyAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZTogd2FpdHMgdW50aWwgdGhlIGF1ZGlvCi0gICBkZXZpY2UgaXMgYWJsZSB0byBhY2NlcHQgZGF0YSwgd3JpdGVzIGFzIG11Y2ggZGF0YSBhcyBpdCB3aWxsIGFjY2VwdCwgYW5kCi0gICByZXBlYXRzIHVudGlsICpkYXRhKiBoYXMgYmVlbiBjb21wbGV0ZWx5IHdyaXR0ZW4uIElmIHRoZSBkZXZpY2UgaXMgaW4gYmxvY2tpbmcKLSAgIG1vZGUgKHRoZSBkZWZhdWx0KSwgdGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIDptZXRoOmB3cml0ZWA7IDptZXRoOmB3cml0ZWFsbGAKLSAgIGlzIG9ubHkgdXNlZnVsIGluIG5vbi1ibG9ja2luZyBtb2RlLiAgSGFzIG5vIHJldHVybiB2YWx1ZSwgc2luY2UgdGhlIGFtb3VudCBvZgotICAgZGF0YSB3cml0dGVuIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUgYW1vdW50IG9mIGRhdGEgc3VwcGxpZWQuCisgICBXcml0ZSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgKmRhdGEqIHRvIHRoZSBhdWRpbyBkZXZpY2U6IHdhaXRzIHVudGlsCisgICB0aGUgYXVkaW8gZGV2aWNlIGlzIGFibGUgdG8gYWNjZXB0IGRhdGEsIHdyaXRlcyBhcyBtdWNoIGRhdGEgYXMgaXQgd2lsbAorICAgYWNjZXB0LCBhbmQgcmVwZWF0cyB1bnRpbCAqZGF0YSogaGFzIGJlZW4gY29tcGxldGVseSB3cml0dGVuLiBJZiB0aGUgZGV2aWNlCisgICBpcyBpbiBibG9ja2luZyBtb2RlICh0aGUgZGVmYXVsdCksIHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcworICAgOm1ldGg6YHdyaXRlYDsgOm1ldGg6YHdyaXRlYWxsYCBpcyBvbmx5IHVzZWZ1bCBpbiBub24tYmxvY2tpbmcgbW9kZS4gIEhhcworICAgbm8gcmV0dXJuIHZhbHVlLCBzaW5jZSB0aGUgYW1vdW50IG9mIGRhdGEgd3JpdHRlbiBpcyBhbHdheXMgZXF1YWwgdG8gdGhlCisgICBhbW91bnQgb2YgZGF0YSBzdXBwbGllZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgIEF1ZGlvIGRldmljZSBvYmplY3RzIGFsc28gc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLCBpLmUuIHRoZXkgY2FuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdCBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CmluZGV4IDI0ZTJhMzAuLjJmMDY1NDQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CkBAIC02MjgsNiArNjI4LDE3IEBACiAgICAgICBQb3NpeFBhdGgoJy9ob21lL2FudG9pbmUvcGF0aGxpYicpCiAKIAorLi4gY2xhc3NtZXRob2Q6OiBQYXRoLmhvbWUoKQorCisgICBSZXR1cm4gYSBuZXcgcGF0aCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKGFzCisgICByZXR1cm5lZCBieSA6ZnVuYzpgb3MucGF0aC5leHBhbmR1c2VyYCB3aXRoIGBgfmBgIGNvbnN0cnVjdCk6OgorCisgICAgICA+Pj4gUGF0aC5ob21lKCkKKyAgICAgIFBvc2l4UGF0aCgnL2hvbWUvYW50b2luZScpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguc3RhdCgpCiAKICAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHBhdGggKHNpbWlsYXJseSB0byA6ZnVuYzpgb3Muc3RhdGApLgpAQCAtNjcwLDYgKzY4MSwxOCBAQAogICAgICAgc3ltbGluayAqcG9pbnRzIHRvKiBhbiBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeS4KIAogCisuLiBtZXRob2Q6OiBQYXRoLmV4cGFuZHVzZXIoKQorCisgICBSZXR1cm4gYSBuZXcgcGF0aCB3aXRoIGV4cGFuZGVkIGBgfmBgIGFuZCBgYH51c2VyYGAgY29uc3RydWN0cywKKyAgIGFzIHJldHVybmVkIGJ5IDptZXRoOmBvcy5wYXRoLmV4cGFuZHVzZXJgOjoKKworICAgICAgPj4+IHAgPSBQb3NpeFBhdGgoJ34vZmlsbXMvTW9udHkgUHl0aG9uJykKKyAgICAgID4+PiBwLmV4cGFuZHVzZXIoKQorICAgICAgUG9zaXhQYXRoKCcvaG9tZS9lcmljL2ZpbG1zL01vbnR5IFB5dGhvbicpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguZ2xvYihwYXR0ZXJuKQogCiAgICBHbG9iIHRoZSBnaXZlbiAqcGF0dGVybiogaW4gdGhlIGRpcmVjdG9yeSByZXByZXNlbnRlZCBieSB0aGlzIHBhdGgsCkBAIC03OTEsNyArODE0LDcgQEAKICAgIHRoZSBzeW1ib2xpYyBsaW5rJ3MgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gaXRzIHRhcmdldCdzLgogCiAKLS4uIG1ldGhvZDo6IFBhdGgubWtkaXIobW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSkKKy4uIG1ldGhvZDo6IFBhdGgubWtkaXIobW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSwgZXhpc3Rfb2s9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgYXQgdGhpcyBnaXZlbiBwYXRoLiAgSWYgKm1vZGUqIGlzIGdpdmVuLCBpdCBpcwogICAgY29tYmluZWQgd2l0aCB0aGUgcHJvY2VzcycgYGB1bWFza2BgIHZhbHVlIHRvIGRldGVybWluZSB0aGUgZmlsZSBtb2RlCkBAIC04MDUsNiArODI4LDE2IEBACiAgICBJZiAqcGFyZW50cyogaXMgZmFsc2UgKHRoZSBkZWZhdWx0KSwgYSBtaXNzaW5nIHBhcmVudCByYWlzZXMKICAgIDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYC4KIAorICAgSWYgKmV4aXN0X29rKiBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLCBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzCisgICByYWlzZWQgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuCisKKyAgIElmICpleGlzdF9vayogaXMgdHJ1ZSwgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb25zIHdpbGwgYmUKKyAgIGlnbm9yZWQgKHNhbWUgYmVoYXZpb3IgYXMgdGhlIFBPU0lYIGBgbWtkaXIgLXBgYCBjb21tYW5kKSwgYnV0IG9ubHkgaWYgdGhlCisgICBsYXN0IHBhdGggY29tcG9uZW50IGlzIG5vdCBhbiBleGlzdGluZyBub24tZGlyZWN0b3J5IGZpbGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmV4aXN0X29rKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBhdGgub3Blbihtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQogCkBAIC04MjQsNiArODU3LDM0IEBACiAgICBpZiB0aGUgZmlsZSdzIHVpZCBpc24ndCBmb3VuZCBpbiB0aGUgc3lzdGVtIGRhdGFiYXNlLgogCiAKKy4uIG1ldGhvZDo6IFBhdGgucmVhZF9ieXRlcygpCisKKyAgIFJldHVybiB0aGUgYmluYXJ5IGNvbnRlbnRzIG9mIHRoZSBwb2ludGVkLXRvIGZpbGUgYXMgYSBieXRlcyBvYmplY3Q6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X2JpbmFyeV9maWxlJykKKyAgICAgID4+PiBwLndyaXRlX2J5dGVzKGInQmluYXJ5IGZpbGUgY29udGVudHMnKQorICAgICAgMjAKKyAgICAgID4+PiBwLnJlYWRfYnl0ZXMoKQorICAgICAgYidCaW5hcnkgZmlsZSBjb250ZW50cycKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gbWV0aG9kOjogUGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCisKKyAgIFJldHVybiB0aGUgZGVjb2RlZCBjb250ZW50cyBvZiB0aGUgcG9pbnRlZC10byBmaWxlIGFzIGEgc3RyaW5nOjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV90ZXh0X2ZpbGUnKQorICAgICAgPj4+IHAud3JpdGVfdGV4dCgnVGV4dCBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDE4CisgICAgICA+Pj4gcC5yZWFkX3RleHQoKQorICAgICAgJ1RleHQgZmlsZSBjb250ZW50cycKKworICAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDpmdW5jOmBvcGVuYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUGF0aC5yZW5hbWUodGFyZ2V0KQogCiAgICBSZW5hbWUgdGhpcyBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgZ2l2ZW4gKnRhcmdldCouICAqdGFyZ2V0KiBjYW4gYmUKQEAgLTg4NCw2ICs5NDUsMjUgQEAKICAgIFJlbW92ZSB0aGlzIGRpcmVjdG9yeS4gIFRoZSBkaXJlY3RvcnkgbXVzdCBiZSBlbXB0eS4KIAogCisuLiBtZXRob2Q6OiBQYXRoLnNhbWVmaWxlKG90aGVyX3BhdGgpCisKKyAgIFJldHVybiB3aGV0aGVyIHRoaXMgcGF0aCBwb2ludHMgdG8gdGhlIHNhbWUgZmlsZSBhcyAqb3RoZXJfcGF0aCosIHdoaWNoCisgICBjYW4gYmUgZWl0aGVyIGEgUGF0aCBvYmplY3QsIG9yIGEgc3RyaW5nLiAgVGhlIHNlbWFudGljcyBhcmUgc2ltaWxhcgorICAgdG8gOmZ1bmM6YG9zLnBhdGguc2FtZWZpbGVgIGFuZCA6ZnVuYzpgb3MucGF0aC5zYW1lc3RhdGAuCisKKyAgIEFuIDpleGM6YE9TRXJyb3JgIGNhbiBiZSByYWlzZWQgaWYgZWl0aGVyIGZpbGUgY2Fubm90IGJlIGFjY2Vzc2VkIGZvciBzb21lCisgICByZWFzb24uCisKKyAgICAgID4+PiBwID0gUGF0aCgnc3BhbScpCisgICAgICA+Pj4gcSA9IFBhdGgoJ2VnZ3MnKQorICAgICAgPj4+IHAuc2FtZWZpbGUocSkKKyAgICAgIEZhbHNlCisgICAgICA+Pj4gcC5zYW1lZmlsZSgnc3BhbScpCisgICAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGguc3ltbGlua190byh0YXJnZXQsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpCiAKICAgIE1ha2UgdGhpcyBwYXRoIGEgc3ltYm9saWMgbGluayB0byAqdGFyZ2V0Ki4gIFVuZGVyIFdpbmRvd3MsCkBAIC05MTcsMyArOTk3LDMzIEBACiAKICAgIFJlbW92ZSB0aGlzIGZpbGUgb3Igc3ltYm9saWMgbGluay4gIElmIHRoZSBwYXRoIHBvaW50cyB0byBhIGRpcmVjdG9yeSwKICAgIHVzZSA6ZnVuYzpgUGF0aC5ybWRpcmAgaW5zdGVhZC4KKworCisuLiBtZXRob2Q6OiBQYXRoLndyaXRlX2J5dGVzKGRhdGEpCisKKyAgIE9wZW4gdGhlIGZpbGUgcG9pbnRlZCB0byBpbiBieXRlcyBtb2RlLCB3cml0ZSAqZGF0YSogdG8gaXQsIGFuZCBjbG9zZSB0aGUKKyAgIGZpbGU6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X2JpbmFyeV9maWxlJykKKyAgICAgID4+PiBwLndyaXRlX2J5dGVzKGInQmluYXJ5IGZpbGUgY29udGVudHMnKQorICAgICAgMjAKKyAgICAgID4+PiBwLnJlYWRfYnl0ZXMoKQorICAgICAgYidCaW5hcnkgZmlsZSBjb250ZW50cycKKworICAgQW4gZXhpc3RpbmcgZmlsZSBvZiB0aGUgc2FtZSBuYW1lIGlzIG92ZXJ3cml0dGVuLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBtZXRob2Q6OiBQYXRoLndyaXRlX3RleHQoZGF0YSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCisKKyAgIE9wZW4gdGhlIGZpbGUgcG9pbnRlZCB0byBpbiB0ZXh0IG1vZGUsIHdyaXRlICpkYXRhKiB0byBpdCwgYW5kIGNsb3NlIHRoZQorICAgZmlsZTo6CisKKyAgICAgID4+PiBwID0gUGF0aCgnbXlfdGV4dF9maWxlJykKKyAgICAgID4+PiBwLndyaXRlX3RleHQoJ1RleHQgZmlsZSBjb250ZW50cycpCisgICAgICAxOAorICAgICAgPj4+IHAucmVhZF90ZXh0KCkKKyAgICAgICdUZXh0IGZpbGUgY29udGVudHMnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggNDczNTZmOS4uNGNlNGQzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC04NTksNyArODU5LDcgQEAKICAgIGRhdGEgPSB7CiAgICAgICAgJ2EnOiBbMSwgMi4wLCAzLCA0KzZqXSwKICAgICAgICAnYic6ICgiY2hhcmFjdGVyIHN0cmluZyIsIGIiYnl0ZSBzdHJpbmciKSwKLSAgICAgICAnYyc6IHNldChbTm9uZSwgVHJ1ZSwgRmFsc2VdKQorICAgICAgICdjJzoge05vbmUsIFRydWUsIEZhbHNlfQogICAgfQogCiAgICB3aXRoIG9wZW4oJ2RhdGEucGlja2xlJywgJ3diJykgYXMgZjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggMTNlYTdiOS4uNWQzMjk1ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTU4LDcgKzU4LDcgQEAKIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KLSAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAuCiAKIAogLi4gY2xhc3M6OiBJbXBMb2FkZXIoZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpCkBAIC02Nyw3ICs2Nyw3IEBACiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKICAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCi0gICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGZ1bmN0aW9uOjogZmluZF9sb2FkZXIoZnVsbG5hbWUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKaW5kZXggZTI3ZjJhZC4uNjc5Y2M2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdApAQCAtMjQ3LDYgKzI0Nyw4IEBACiAKICAgIFRoaXMgaXMgYW5vdGhlciBuYW1lIGZvciA6ZnVuYzpgbGludXhfZGlzdHJpYnV0aW9uYC4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNworCiAuLiBmdW5jdGlvbjo6IGxpbnV4X2Rpc3RyaWJ1dGlvbihkaXN0bmFtZT0nJywgdmVyc2lvbj0nJywgaWQ9JycsIHN1cHBvcnRlZF9kaXN0cz0oJ1N1U0UnLCdkZWJpYW4nLCdyZWRoYXQnLCdtYW5kcmFrZScsLi4uKSwgZnVsbF9kaXN0cmlidXRpb25fbmFtZT0xKQogCiAgICBUcmllcyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIExpbnV4IE9TIGRpc3RyaWJ1dGlvbiBuYW1lLgpAQCAtMjYzLDYgKzI2NSw4IEBACiAgICBwYXJhbWV0ZXJzLiAgYGBpZGBgIGlzIHRoZSBpdGVtIGluIHBhcmVudGhlc2VzIGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlci4gIEl0CiAgICBpcyB1c3VhbGx5IHRoZSB2ZXJzaW9uIGNvZGVuYW1lLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy43CisKIC4uIGZ1bmN0aW9uOjogbGliY192ZXIoZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgbGliPScnLCB2ZXJzaW9uPScnLCBjaHVua3NpemU9MjA0OCkKIAogICAgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaWJjIHZlcnNpb24gYWdhaW5zdCB3aGljaCB0aGUgZmlsZSBleGVjdXRhYmxlIChkZWZhdWx0cwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdCBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKaW5kZXggNDViYWFkOS4uODQ2OGY0YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CkBAIC0xOTQsNiArMTk0LDE1IEBACiAgICB0aGUgdW5pcXVlIGlkIGZvciB0aGF0IG1lc3NhZ2UgaW4gdGhlIGZvcm0gYGAncmVzcG9uc2UgbWVzZ251bSB1aWRgYCwgb3RoZXJ3aXNlCiAgICByZXN1bHQgaXMgbGlzdCBgYChyZXNwb25zZSwgWydtZXNnbnVtIHVpZCcsIC4uLl0sIG9jdGV0cylgYC4KIAorCisuLiBtZXRob2Q6OiBQT1AzLnV0ZjgoKQorCisgICBUcnkgdG8gc3dpdGNoIHRvIFVURi04IG1vZGUuIFJldHVybnMgdGhlIHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsLAorICAgcmFpc2VzIDpjbGFzczpgZXJyb3JfcHJvdG9gIGlmIG5vdC4gU3BlY2lmaWVkIGluIDpSRkM6YDY4NTZgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBtZXRob2Q6OiBQT1AzLnN0bHMoY29udGV4dD1Ob25lKQogCiAgICBTdGFydCBhIFRMUyBzZXNzaW9uIG9uIHRoZSBhY3RpdmUgY29ubmVjdGlvbiBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgMjU5NWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wcHJpbnQucnN0IGIvRG9jL2xpYnJhcnkvcHByaW50LnJzdAppbmRleCBjMDU4OWEzLi4wYjQ0ZGM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKQEAgLTIzNSwxMCArMjM1LDEwIEBACiAgICAgICAgICAgICAgJ2NsYXNzaWZpZXJzJzogWydQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIgOjogT25seSddLAotICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgUHl0aG9uIHByb2dyYW1taW5nLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggc3BlY2lhbCBmb2N1c1xyXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgcHJvZ3JhbW1pbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwcm90b2NvbCBpbnRlZ3JhdGlvbi4nLAorICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgUHl0aG9uIHByb2dyYW1taW5nLCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lhbCBmb2N1c1xyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgcHJvZ3JhbW1pbmcgYW5kIG11bHRpcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi4nLAogICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAogICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCiAgICAgICAgICAgICAgJ2hvbWVfcGFnZSc6ICdodHRwOi8vdHdpc3RlZG1hdHJpeC5jb20vJywKQEAgLTI4OCwxMCArMjg4LDEwIEBACiAgICAgICAgICAgICAgJ2NoZWVzZWNha2VfZG9jdW1lbnRhdGlvbl9pZCc6IE5vbmUsCiAgICAgICAgICAgICAgJ2NoZWVzZWNha2VfaW5zdGFsbGFiaWxpdHlfaWQnOiBOb25lLAogICAgICAgICAgICAgICdjbGFzc2lmaWVycyc6IFsuLi5dLAotICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgUHl0aG9uIHByb2dyYW1taW5nLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggc3BlY2lhbCBmb2N1c1xyXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgcHJvZ3JhbW1pbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwcm90b2NvbCBpbnRlZ3JhdGlvbi4nLAorICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgUHl0aG9uIHByb2dyYW1taW5nLCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lhbCBmb2N1c1xyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgcHJvZ3JhbW1pbmcgYW5kIG11bHRpcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi4nLAogICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAogICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCiAgICAgICAgICAgICAgJ2hvbWVfcGFnZSc6ICdodHRwOi8vdHdpc3RlZG1hdHJpeC5jb20vJywKQEAgLTMyMywxMyArMzIzLDEyIEBACiAgICAgICAgICAgICAgJ2NoZWVzZWNha2VfaW5zdGFsbGFiaWxpdHlfaWQnOiBOb25lLAogICAgICAgICAgICAgICdjbGFzc2lmaWVycyc6IFsuLi5dLAogICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBwcm9ncmFtbWluZywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHNwZWNpYWwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2N1c1xyXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29yayBwcm9ncmFtbWluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBtdWx0aXByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrIGZvciBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmFtbWluZywgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgZm9jdXNcclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3JhbW1pbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwcm90b2NvbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVncmF0aW9uLicsCiAgICAgICAgICAgICAgJ2RvY3NfdXJsJzogJycsCiAgICAgICAgICAgICAgJ2Rvd25sb2FkX3VybCc6ICdVTktOT1dOJywKQEAgLTM0NCw4ICszNDMsOCBAQAogICAgICAgICAgICAgICdyZWxlYXNlX3VybCc6ICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvVHdpc3RlZC8xMi4zLjAnLAogICAgICAgICAgICAgICdyZXF1aXJlc19weXRob24nOiBOb25lLAogICAgICAgICAgICAgICdzdGFibGVfdmVyc2lvbic6IE5vbmUsCi0gICAgICAgICAgICAgJ3N1bW1hcnknOiAnQW4gYXN5bmNocm9ub3VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JraW5nIGZyYW1ld29yayAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnd3JpdHRlbiBpbiBQeXRob24nLAorICAgICAgICAgICAgICdzdW1tYXJ5JzogJ0FuIGFzeW5jaHJvbm91cyBuZXR3b3JraW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXdvcmsgd3JpdHRlbiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uJywKICAgICAgICAgICAgICAndmVyc2lvbic6ICcxMi4zLjAnfSwKICAgICAndXJscyc6IFt7Li4ufSwgey4uLn1dfQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAppbmRleCBiYWU4NDUwLi45N2YyYjIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdApAQCAtMjksOSArMjksOSBAQAogLi4gZnVuY3Rpb246OiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUsIGRvcmFpc2U9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBDb21waWxlIGEgc291cmNlIGZpbGUgdG8gYnl0ZS1jb2RlIGFuZCB3cml0ZSBvdXQgdGhlIGJ5dGUtY29kZSBjYWNoZSBmaWxlLgotICAgVGhlIHNvdXJjZSBjb2RlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlIG5hbWUgKmZpbGUqLiAgVGhlICBieXRlLWNvZGUgaXMKLSAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpQRVA6YDMxNDdgIHBhdGgsIGVuZGluZyBpbgotICAgYGAucHljYGAgKGBgLnB5b2BgIGlmIG9wdGltaXphdGlvbiBpcyBlbmFibGVkIGluIHRoZSBjdXJyZW50IGludGVycHJldGVyKS4KKyAgIFRoZSBzb3VyY2UgY29kZSBpcyBsb2FkZWQgZnJvbSB0aGUgZmlsZSBuYW1lICpmaWxlKi4gIFRoZSBieXRlLWNvZGUgaXMKKyAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpwZXA6YDMxNDdgLzpwZXA6YDQ4OGAgcGF0aCwgZW5kaW5nCisgICBpbiBgYC5weWNgYC4KICAgIEZvciBleGFtcGxlLCBpZiAqZmlsZSogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCAqY2ZpbGUqIHdpbGwgZGVmYXVsdCB0bwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCBmb3IgUHl0aG9uIDMuMi4gIElmICpkZmlsZSogaXMKICAgIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgaW4gZXJyb3IgbWVzc2FnZXMgd2hlbgpAQCAtNjgsNyArNjgsNyBAQAogLi4gZnVuY3Rpb246OiBtYWluKGFyZ3M9Tm9uZSkKIAogICAgQ29tcGlsZSBzZXZlcmFsIHNvdXJjZSBmaWxlcy4gIFRoZSBmaWxlcyBuYW1lZCBpbiAqYXJncyogKG9yIG9uIHRoZSBjb21tYW5kCi0gICBsaW5lLCBpZiAqYXJncyogaXMgYGBOb25lYGApIGFyZSBjb21waWxlZCBhbmQgdGhlIHJlc3VsdGluZyBieXRlY29kZSBpcworICAgbGluZSwgaWYgKmFyZ3MqIGlzIGBgTm9uZWBgKSBhcmUgY29tcGlsZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZS1jb2RlIGlzCiAgICBjYWNoZWQgaW4gdGhlIG5vcm1hbCBtYW5uZXIuICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNlYXJjaCBhIGRpcmVjdG9yeQogICAgc3RydWN0dXJlIHRvIGxvY2F0ZSBzb3VyY2UgZmlsZXM7IGl0IG9ubHkgY29tcGlsZXMgZmlsZXMgbmFtZWQgZXhwbGljaXRseS4KICAgIElmIGBgJy0nYGAgaXMgdGhlIG9ubHkgcGFyYW1ldGVyIGluIGFyZ3MsIHRoZSBsaXN0IG9mIGZpbGVzIGlzIHRha2VuIGZyb20KQEAgLTg2LDQgKzg2LDMgQEAKIAogICAgTW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgCiAgICAgICBVdGlsaXRpZXMgdG8gY29tcGlsZSBhbGwgUHl0aG9uIHNvdXJjZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSB0cmVlLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggNjgwZDY5MC4uMWNiMDkzNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTU4LDIyICsxNTgsMzIgQEAKIAogRXhhbXBsZSBvZiBob3cgdG8gd2FpdCBmb3IgZW5xdWV1ZWQgdGFza3MgdG8gYmUgY29tcGxldGVkOjoKIAotICAgZGVmIHdvcmtlcigpOgotICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCi0gICAgICAgICAgIGRvX3dvcmsoaXRlbSkKLSAgICAgICAgICAgcS50YXNrX2RvbmUoKQorICAgIGRlZiB3b3JrZXIoKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCisgICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGRvX3dvcmsoaXRlbSkKKyAgICAgICAgICAgIHEudGFza19kb25lKCkKIAotICAgcSA9IFF1ZXVlKCkKLSAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6Ci0gICAgICAgIHQgPSBUaHJlYWQodGFyZ2V0PXdvcmtlcikKLSAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgcSA9IHF1ZXVlLlF1ZXVlKCkKKyAgICB0aHJlYWRzID0gW10KKyAgICBmb3IgaSBpbiByYW5nZShudW1fd29ya2VyX3RocmVhZHMpOgorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d29ya2VyKQogICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdGhyZWFkcy5hcHBlbmQodCkKIAotICAgZm9yIGl0ZW0gaW4gc291cmNlKCk6Ci0gICAgICAgcS5wdXQoaXRlbSkKKyAgICBmb3IgaXRlbSBpbiBzb3VyY2UoKToKKyAgICAgICAgcS5wdXQoaXRlbSkKIAotICAgcS5qb2luKCkgICAgICAgIyBibG9jayB1bnRpbCBhbGwgdGFza3MgYXJlIGRvbmUKKyAgICAjIGJsb2NrIHVudGlsIGFsbCB0YXNrcyBhcmUgZG9uZQorICAgIHEuam9pbigpCisKKyAgICAjIHN0b3Agd29ya2VycworICAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6CisgICAgICAgIHEucHV0KE5vbmUpCisgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgdC5qb2luKCkKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDExZGQzNjcuLmY4Yjc3MjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDYsOCArNDYsNyBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuICBVc2UgOmZ1bmM6YG9zLnVyYW5kb21gIG9yIDpjbGFzczpgU3lzdGVtUmFuZG9tYCBpZgotICAgeW91IHJlcXVpcmUgYSBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorICAgc2VjdXJpdHkgcHVycG9zZXMuCiAKIAogQm9va2tlZXBpbmcgZnVuY3Rpb25zOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IGMzYzhiNjUuLjg4ODQ1ODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTI4MSw5ICsyODEsNyBAQAogICAgYXNzZXJ0aW9uYC4gYGAoPzw9YWJjKWRlZmBgIHdpbGwgZmluZCBhIG1hdGNoIGluIGBgYWJjZGVmYGAsIHNpbmNlIHRoZQogICAgbG9va2JlaGluZCB3aWxsIGJhY2sgdXAgMyBjaGFyYWN0ZXJzIGFuZCBjaGVjayBpZiB0aGUgY29udGFpbmVkIHBhdHRlcm4gbWF0Y2hlcy4KICAgIFRoZSBjb250YWluZWQgcGF0dGVybiBtdXN0IG9ubHkgbWF0Y2ggc3RyaW5ncyBvZiBzb21lIGZpeGVkIGxlbmd0aCwgbWVhbmluZyB0aGF0Ci0gICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIEdyb3VwCi0gICByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGV2ZW4gaWYgdGhleSBtYXRjaCBzdHJpbmdzIG9mIHNvbWUgZml4ZWQgbGVuZ3RoLgotICAgTm90ZSB0aGF0CisgICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIE5vdGUgdGhhdAogICAgcGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBwb3NpdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgd2lsbCBub3QgbWF0Y2ggYXQgdGhlCiAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZDsgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgdGhlCiAgICA6ZnVuYzpgc2VhcmNoYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgOmZ1bmM6YG1hdGNoYCBmdW5jdGlvbjoKQEAgLTI5OSwxMiArMjk3LDE0IEBACiAgICAgICA+Pj4gbS5ncm91cCgwKQogICAgICAgJ2VnZycKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgZ3JvdXAgcmVmZXJlbmNlcyBvZiBmaXhlZCBsZW5ndGguCisKIGBgKD88IS4uLilgYAogICAgTWF0Y2hlcyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIGlzIG5vdCBwcmVjZWRlZCBieSBhIG1hdGNoIGZvcgogICAgYGAuLi5gYC4gIFRoaXMgaXMgY2FsbGVkIGEgOmRmbjpgbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25gLiAgU2ltaWxhciB0bwogICAgcG9zaXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zLCB0aGUgY29udGFpbmVkIHBhdHRlcm4gbXVzdCBvbmx5IG1hdGNoIHN0cmluZ3Mgb2YKLSAgIHNvbWUgZml4ZWQgbGVuZ3RoIGFuZCBzaG91bGRuJ3QgY29udGFpbiBncm91cCByZWZlcmVuY2VzLgotICAgUGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBuZWdhdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgbWF5CisgICBzb21lIGZpeGVkIGxlbmd0aC4gIFBhdHRlcm5zIHdoaWNoIHN0YXJ0IHdpdGggbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zIG1heQogICAgbWF0Y2ggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkLgogCiBgYCg/KGlkL25hbWUpeWVzLXBhdHRlcm58bm8tcGF0dGVybilgYApAQCAtNDM4LDYgKzQzOCwxMCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKKyAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQorICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtNTI0LDcgKzUyOCwxMSBAQAogICAgY3VycmVudCBsb2NhbGUuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnIGlzIGRpc2NvdXJhZ2VkIGFzIHRoZSBsb2NhbGUgbWVjaGFuaXNtCiAgICBpcyB2ZXJ5IHVucmVsaWFibGUsIGFuZCBpdCBvbmx5IGhhbmRsZXMgb25lICJjdWx0dXJlIiBhdCBhIHRpbWUgYW55d2F5OwogICAgeW91IHNob3VsZCB1c2UgVW5pY29kZSBtYXRjaGluZyBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwotICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuCisgICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgRGVwcmVjYXRlZCB0aGUgdXNlIG9mICA6Y29uc3Q6YHJlLkxPQ0FMRWAgd2l0aCBzdHJpbmcgcGF0dGVybnMgb3IKKyAgICAgIDpjb25zdDpgcmUuQVNDSUlgLgogCiAKIC4uIGRhdGE6OiBNCkBAIC02MjUsMTcgKzYzMywzNyBAQAogICAgVGhhdCB3YXksIHNlcGFyYXRvciBjb21wb25lbnRzIGFyZSBhbHdheXMgZm91bmQgYXQgdGhlIHNhbWUgcmVsYXRpdmUKICAgIGluZGljZXMgd2l0aGluIHRoZSByZXN1bHQgbGlzdC4KIAotICAgTm90ZSB0aGF0ICpzcGxpdCogd2lsbCBuZXZlciBzcGxpdCBhIHN0cmluZyBvbiBhbiBlbXB0eSBwYXR0ZXJuIG1hdGNoLgotICAgRm9yIGV4YW1wbGU6CisgICAuLiBub3RlOjoKIAotICAgICAgPj4+IHJlLnNwbGl0KCd4KicsICdmb28nKQotICAgICAgWydmb28nXQotICAgICAgPj4+IHJlLnNwbGl0KCIoP20pXiQiLCAiZm9vXG5cbmJhclxuIikKLSAgICAgIFsnZm9vXG5cbmJhclxuJ10KKyAgICAgIDpmdW5jOmBzcGxpdGAgZG9lc24ndCBjdXJyZW50bHkgc3BsaXQgYSBzdHJpbmcgb24gYW4gZW1wdHkgcGF0dGVybiBtYXRjaC4KKyAgICAgIEZvciBleGFtcGxlOgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoJ3gqJywgJ2F4YmMnKQorICAgICAgICAgWydhJywgJ2JjJ10KKworICAgICAgRXZlbiB0aG91Z2ggYGAneConYGAgYWxzbyBtYXRjaGVzIDAgJ3gnIGJlZm9yZSAnYScsIGJldHdlZW4gJ2InIGFuZCAnYycsCisgICAgICBhbmQgYWZ0ZXIgJ2MnLCBjdXJyZW50bHkgdGhlc2UgbWF0Y2hlcyBhcmUgaWdub3JlZC4gIFRoZSBjb3JyZWN0IGJlaGF2aW9yCisgICAgICAoaS5lLiBzcGxpdHRpbmcgb24gZW1wdHkgbWF0Y2hlcyB0b28gYW5kIHJldHVybmluZyBgYFsnJywgJ2EnLCAnYicsICdjJywKKyAgICAgICcnXWBgKSB3aWxsIGJlIGltcGxlbWVudGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24sIGJ1dCBzaW5jZSB0aGlzCisgICAgICBpcyBhIGJhY2t3YXJkIGluY29tcGF0aWJsZSBjaGFuZ2UsIGEgOmV4YzpgRnV0dXJlV2FybmluZ2Agd2lsbCBiZSByYWlzZWQKKyAgICAgIGluIHRoZSBtZWFud2hpbGUuCisKKyAgICAgIFBhdHRlcm5zIHRoYXQgY2FuIG9ubHkgbWF0Y2ggZW1wdHkgc3RyaW5ncyBjdXJyZW50bHkgbmV2ZXIgc3BsaXQgdGhlCisgICAgICBzdHJpbmcuICBTaW5jZSB0aGlzIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjU6OgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoIl4kIiwgImZvb1xuXG5iYXJcbiIsIGZsYWdzPXJlLk0pCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICAgIC4uLgorICAgICAgICAgVmFsdWVFcnJvcjogc3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3BsaXR0aW5nIG9uIGEgcGF0dGVybiB0aGF0IGNvdWxkIG1hdGNoIGFuIGVtcHR5IHN0cmluZyBub3cgcmFpc2VzCisgICAgICBhIHdhcm5pbmcuICBQYXR0ZXJucyB0aGF0IGNhbiBvbmx5IG1hdGNoIGVtcHR5IHN0cmluZ3MgYXJlIG5vdyByZWplY3RlZC4KIAogLi4gZnVuY3Rpb246OiBmaW5kYWxsKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCkKIApAQCAtNjYzLDcgKzY5MSw3IEBACiAgICAqc3RyaW5nKiBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICAqcmVwbCogY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb247IGlmIGl0IGlzCiAgICBhIHN0cmluZywgYW55IGJhY2tzbGFzaCBlc2NhcGVzIGluIGl0IGFyZSBwcm9jZXNzZWQuICBUaGF0IGlzLCBgYFxuYGAgaXMKICAgIGNvbnZlcnRlZCB0byBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3RlciwgYGBccmBgIGlzIGNvbnZlcnRlZCB0byBhIGNhcnJpYWdlIHJldHVybiwgYW5kCi0gICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCisgICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXCZgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCiAgICBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cCA2IGluIHRoZSBwYXR0ZXJuLgogICAgRm9yIGV4YW1wbGU6CiAKQEAgLTcwNSw2ICs3MzMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCisgICAgICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorCiAKIC4uIGZ1bmN0aW9uOjogc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApCiAKQEAgLTcxNCw2ICs3NDksOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgorCiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIApAQCAtNzMwLDEzICs3NjgsMzYgQEAKICAgIENsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGUuCiAKIAotLi4gZXhjZXB0aW9uOjogZXJyb3IKKy4uIGV4Y2VwdGlvbjo6IGVycm9yKG1zZywgcGF0dGVybj1Ob25lLCBwb3M9Tm9uZSkKIAogICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgc3RyaW5nIHBhc3NlZCB0byBvbmUgb2YgdGhlIGZ1bmN0aW9ucyBoZXJlIGlzIG5vdCBhCiAgICB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gKGZvciBleGFtcGxlLCBpdCBtaWdodCBjb250YWluIHVubWF0Y2hlZCBwYXJlbnRoZXNlcykKICAgIG9yIHdoZW4gc29tZSBvdGhlciBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXBpbGF0aW9uIG9yIG1hdGNoaW5nLiAgSXQgaXMgbmV2ZXIgYW4KLSAgIGVycm9yIGlmIGEgc3RyaW5nIGNvbnRhaW5zIG5vIG1hdGNoIGZvciBhIHBhdHRlcm4uCisgICBlcnJvciBpZiBhIHN0cmluZyBjb250YWlucyBubyBtYXRjaCBmb3IgYSBwYXR0ZXJuLiAgVGhlIGVycm9yIGluc3RhbmNlIGhhcworICAgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0dGVybgorCisgICAgICBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBvcworCisgICAgICBUaGUgaW5kZXggb2YgKnBhdHRlcm4qIHdoZXJlIGNvbXBpbGF0aW9uIGZhaWxlZC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgIFRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gKnBvcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgIFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KIAogLi4gX3JlLW9iamVjdHM6CiAKQEAgLTg4OSw2ICs5NTAsOCBAQAogICAgKGBgXGc8MT5gYCwgYGBcZzxuYW1lPmBgKSBhcmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgY29ycmVzcG9uZGluZyBncm91cC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cChbZ3JvdXAxLCAuLi5dKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggNjkyMzEwYi4uMzg2NGYwZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtNTksNiArNTksMTQgQEAKICAgIFNhdmUgYSByZWFkbGluZSBoaXN0b3J5IGZpbGUuIFRoZSBkZWZhdWx0IGZpbGVuYW1lIGlzIDpmaWxlOmB+Ly5oaXN0b3J5YC4KIAogCisuLiBmdW5jdGlvbjo6IGFwcGVuZF9oaXN0b3J5X2ZpbGUobmVsZW1lbnRzWywgZmlsZW5hbWVdKQorCisgICBBcHBlbmQgdGhlIGxhc3QgKm5lbGVtZW50cyogb2YgaGlzdG9yeSB0byBhIGZpbGUuICBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcworICAgOmZpbGU6YH4vLmhpc3RvcnlgLiAgVGhlIGZpbGUgbXVzdCBhbHJlYWR5IGV4aXN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGNsZWFyX2hpc3RvcnkoKQogCiAgICBDbGVhciB0aGUgY3VycmVudCBoaXN0b3J5LiAgKE5vdGU6IHRoaXMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpZiB0aGUKQEAgLTIwOSw2ICsyMTcsMjYgQEAKIFRoaXMgY29kZSBpcyBhY3R1YWxseSBhdXRvbWF0aWNhbGx5IHJ1biB3aGVuIFB5dGhvbiBpcyBydW4gaW4KIDpyZWY6YGludGVyYWN0aXZlIG1vZGUgPHR1dC1pbnRlcmFjdGl2ZT5gIChzZWUgOnJlZjpgcmxjb21wbGV0ZXItY29uZmlnYCkuCiAKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBhY2hpZXZlcyB0aGUgc2FtZSBnb2FsIGJ1dCBzdXBwb3J0cyBjb25jdXJyZW50IGludGVyYWN0aXZlCitzZXNzaW9ucywgYnkgb25seSBhcHBlbmRpbmcgdGhlIG5ldyBoaXN0b3J5LiA6OgorCisgICBpbXBvcnQgYXRleGl0CisgICBpbXBvcnQgb3MKKyAgIGltcG9ydCByZWFsaW5lCisgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weXRob25faGlzdG9yeSIpCisKKyAgIHRyeToKKyAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0ZmlsZSkKKyAgICAgICBoX2xlbiA9IHJlYWRsaW5lLmdldF9oaXN0b3J5X2xlbmd0aCgpCisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgb3BlbihoaXN0ZmlsZSwgJ3diJykuY2xvc2UoKQorICAgICAgIGhfbGVuID0gMAorCisgICBkZWYgc2F2ZShwcmV2X2hfbGVuLCBoaXN0ZmlsZSk6CisgICAgICAgbmV3X2hfbGVuID0gcmVhZGxpbmUuZ2V0X2hpc3RvcnlfbGVuZ3RoKCkKKyAgICAgICByZWFkbGluZS5hcHBlbmRfaGlzdG9yeV9maWxlKG5ld19oX2xlbiAtIHByZXZfaF9sZW4sIGhpc3RmaWxlKQorICAgYXRleGl0LnJlZ2lzdGVyKHNhdmUsIGhfbGVuLCBoaXN0ZmlsZSkKKwogVGhlIGZvbGxvd2luZyBleGFtcGxlIGV4dGVuZHMgdGhlIDpjbGFzczpgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIGNsYXNzIHRvCiBzdXBwb3J0IGhpc3Rvcnkgc2F2ZS9yZXN0b3JlLiA6OgogCkBAIC0yMzQsNCArMjYyLDMgQEAKIAogICAgICAgIGRlZiBzYXZlX2hpc3Rvcnkoc2VsZiwgaGlzdGZpbGUpOgogICAgICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IDUzMzRhZjguLmE2MmRjODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtMTQ1LDYgKzE0NSwxMyBAQAogICAgICAgbGlicmFyeSwgYW5kIGRvZXMgbm90IGhhbmRsZSBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgZG9uJ3Qgb3JpZ2luYXRlIGZyb20KICAgICAgIFdpblNvY2suCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCisKIC4uIGF0dHJpYnV0ZTo6IFBJUEVfQlVGCiAKICAgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyB3aGljaCBjYW4gYmUgd3JpdHRlbiB3aXRob3V0IGJsb2NraW5nIHRvIGEgcGlwZQpAQCAtMjQyLDYgKzI0OSwxMiBAQAogICAgcmV0dXJuaW5nLiBJZiAqdGltZW91dCogaXMgb21pdHRlZCwgLTEsIG9yIDpjb25zdDpgTm9uZWAsIHRoZSBjYWxsIHdpbGwKICAgIGJsb2NrIHVudGlsIHRoZXJlIGlzIGFuIGV2ZW50IGZvciB0aGlzIHBvbGwgb2JqZWN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKwogCiAuLiBfZXBvbGwtb2JqZWN0czoKIApAQCAtMzIyLDYgKzMzNSwxMiBAQAogCiAgICBXYWl0IGZvciBldmVudHMuIHRpbWVvdXQgaW4gc2Vjb25kcyAoZmxvYXQpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9wb2xsLW9iamVjdHM6CiAKQEAgLTQwMSw2ICs0MjAsMTIgQEAKICAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIG5lZ2F0aXZlLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCiAgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2txdWV1ZS1vYmplY3RzOgogCkBAIC00MzUsNiArNDYwLDEyIEBACiAgICAtIG1heF9ldmVudHMgbXVzdCBiZSAwIG9yIGEgcG9zaXRpdmUgaW50ZWdlcgogICAgLSB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0cyBwb3NzaWJsZSkKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2tldmVudC1vYmplY3RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdAppbmRleCA5ODM3N2M4Li5mNmVmMjRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdG9ycy5yc3QKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICstLSBTZWxlY3RTZWxlY3RvcgogICAgKy0tIFBvbGxTZWxlY3RvcgogICAgKy0tIEVwb2xsU2VsZWN0b3IKKyAgICstLSBEZXZwb2xsU2VsZWN0b3IKICAgICstLSBLcXVldWVTZWxlY3RvcgogCiAKQEAgLTE1OCw2ICsxNTksMTIgQEAKICAgICAgICAgICB0aW1lb3V0IGhhcyBlbGFwc2VkIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWw6IGluIHRoaXMKICAgICAgICAgICBjYXNlLCBhbiBlbXB0eSBsaXN0IHdpbGwgYmUgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBUaGUgc2VsZWN0b3IgaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkCisgICAgICAgICBieSBhIHNpZ25hbCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgZGlkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gKHNlZQorICAgICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgIG9mIGV2ZW50cyBiZWZvcmUgdGhlIHRpbWVvdXQuCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgQ2xvc2UgdGhlIHNlbGVjdG9yLgpAQCAtMjA3LDYgKzIxNCwxNiBAQAogICAgICAgVGhpcyByZXR1cm5zIHRoZSBmaWxlIGRlc2NyaXB0b3IgdXNlZCBieSB0aGUgdW5kZXJseWluZwogICAgICAgOmZ1bmM6YHNlbGVjdC5lcG9sbGAgb2JqZWN0LgogCisuLiBjbGFzczo6IERldnBvbGxTZWxlY3RvcigpCisKKyAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAtYmFzZWQgc2VsZWN0b3IuCisKKyAgIC4uIG1ldGhvZDo6IGZpbGVubygpCisKKyAgICAgIFRoaXMgcmV0dXJucyB0aGUgZmlsZSBkZXNjcmlwdG9yIHVzZWQgYnkgdGhlIHVuZGVybHlpbmcKKyAgICAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBLcXVldWVTZWxlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDA0YWZlOTIuLjNiNDY3ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtMTkxLDcgKzE5MSw4IEBACiAgICBtYXRjaCBvbmUgb2YgdGhlIGdsb2Itc3R5bGUgKnBhdHRlcm5zKiBwcm92aWRlZC4gIFNlZSB0aGUgZXhhbXBsZSBiZWxvdy4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz1GYWxzZSwgaWdub3JlPU5vbmUsIGNvcHlfZnVuY3Rpb249Y29weTIsIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgXAorICAgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKICAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKiwgcmV0dXJuaW5nIHRoZQogICAgZGVzdGluYXRpb24gZGlyZWN0b3J5LiAgVGhlIGRlc3RpbmF0aW9uCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCwgY29weV9mdW5jdGlvbj1jb3B5MikKIAogICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCiAgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KQEAgLTI5MiwxNSArMjkzLDI2IEBACiAgICBiZSBvdmVyd3JpdHRlbiBkZXBlbmRpbmcgb24gOmZ1bmM6YG9zLnJlbmFtZWAgc2VtYW50aWNzLgogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwotICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgotICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisgICB1c2VkLiBPdGhlcndpc2UsICpzcmMqIGlzIGNvcGllZCB0byAqZHN0KiB1c2luZyAqY29weV9mdW5jdGlvbiogYW5kIHRoZW4KKyAgIHJlbW92ZWQuICBJbiBjYXNlIG9mIHN5bWxpbmtzLCBhIG5ldyBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgb2YgKnNyYyoKKyAgIHdpbGwgYmUgY3JlYXRlZCBpbiBvciBhcyAqZHN0KiBhbmQgKnNyYyogd2lsbCBiZSByZW1vdmVkLgorCisgICBJZiAqY29weV9mdW5jdGlvbiogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMKKyAgICpzcmMqIGFuZCAqZHN0KiwgYW5kIHdpbGwgYmUgdXNlZCB0byBjb3B5ICpzcmMqIHRvICpkZXN0KiBpZgorICAgOmZ1bmM6YG9zLnJlbmFtZWAgY2Fubm90IGJlIHVzZWQuICBJZiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LAorICAgOmZ1bmM6YGNvcHl0cmVlYCBpcyBjYWxsZWQsIHBhc3NpbmcgaXQgdGhlIDpmdW5jOmBjb3B5X2Z1bmN0aW9uYC4gVGhlCisgICBkZWZhdWx0ICpjb3B5X2Z1bmN0aW9uKiBpcyA6ZnVuYzpgY29weTJgLiAgVXNpbmcgOmZ1bmM6YGNvcHlgIGFzIHRoZQorICAgKmNvcHlfZnVuY3Rpb24qIGFsbG93cyB0aGUgbW92ZSB0byBzdWNjZWVkIHdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFsc28KKyAgIGNvcHkgdGhlIG1ldGFkYXRhLCBhdCB0aGUgZXhwZW5zZSBvZiBub3QgY29weWluZyBhbnkgb2YgdGhlIG1ldGFkYXRhLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgZXhwbGljaXQgc3ltbGluayBoYW5kbGluZyBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcywgdGh1cyBhZGFwdGluZwogICAgICAgaXQgdG8gdGhlIGJlaGF2aW9yIG9mIEdOVSdzIDpwcm9ncmFtOmBtdmAuCiAgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbioga2V5d29yZCBhcmd1bWVudC4KKwogLi4gZnVuY3Rpb246OiBkaXNrX3VzYWdlKHBhdGgpCiAKICAgIFJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgCkBAIC00MTgsNiArNDMwLDI2IEBACiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCiAKIAorLi4gX3NodXRpbC1ybXRyZWUtZXhhbXBsZToKKworcm10cmVlIGV4YW1wbGUKK35+fn5+fn5+fn5+fn5+CisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gcmVtb3ZlIGEgZGlyZWN0b3J5IHRyZWUgb24gV2luZG93cyB3aGVyZSBzb21lCitvZiB0aGUgZmlsZXMgaGF2ZSB0aGVpciByZWFkLW9ubHkgYml0IHNldC4gSXQgdXNlcyB0aGUgb25lcnJvciBjYWxsYmFjawordG8gY2xlYXIgdGhlIHJlYWRvbmx5IGJpdCBhbmQgcmVhdHRlbXB0IHRoZSByZW1vdmUuIEFueSBzdWJzZXF1ZW50IGZhaWx1cmUKK3dpbGwgcHJvcGFnYXRlLiA6OgorCisgICAgaW1wb3J0IG9zLCBzdGF0CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgZGVmIHJlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBfKToKKyAgICAgICAgIkNsZWFyIHRoZSByZWFkb25seSBiaXQgYW5kIHJlYXR0ZW1wdCB0aGUgcmVtb3ZhbCIKKyAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lXUklURSkKKyAgICAgICAgZnVuYyhwYXRoKQorCisgICAgc2h1dGlsLnJtdHJlZShkaXJlY3RvcnksIG9uZXJyb3I9cmVtb3ZlX3JlYWRvbmx5KQorCiAuLiBfYXJjaGl2aW5nLW9wZXJhdGlvbnM6CiAKIEFyY2hpdmluZyBvcGVyYXRpb25zCkBAIC00MzQsNyArNDY2LDggQEAKIAogICAgKmJhc2VfbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBpbmNsdWRpbmcgdGhlIHBhdGgsIG1pbnVzCiAgICBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbi4gKmZvcm1hdCogaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YKLSAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KKyAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSksICJ4enRhciIKKyAgIChpZiB0aGUgOm1vZDpgbHptYWAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KIAogICAgKnJvb3RfZGlyKiBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQogICAgYXJjaGl2ZTsgZm9yIGV4YW1wbGUsIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICpyb290X2RpciogYmVmb3JlIGNyZWF0aW5nIHRoZQpAQCAtNDU3LDYgKzQ5MCw5IEBACiAKICAgIFRoZSAqdmVyYm9zZSogYXJndW1lbnQgaXMgdW51c2VkIGFuZCBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlICp4enRhciogZm9ybWF0LgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTQ2Nyw2ICs1MDMsNyBAQAogCiAgICAtICpnenRhcio6IGd6aXAnZWQgdGFyLWZpbGUKICAgIC0gKmJ6dGFyKjogYnppcDInZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBiejJgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQorICAgLSAqeHp0YXIqOiB4eidlZCB0YXItZmlsZSAoaWYgdGhlIDptb2Q6YGx6bWFgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQogICAgLSAqdGFyKjogdW5jb21wcmVzc2VkIHRhciBmaWxlCiAgICAtICp6aXAqOiBaSVAgZmlsZQogCkBAIC01NDIsNiArNTc5LDcgQEAKIAogICAgLSAqZ3p0YXIqOiBnemlwJ2VkIHRhci1maWxlCiAgICAtICpienRhcio6IGJ6aXAyJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgYnoyYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKKyAgIC0gKnh6dGFyKjogeHonZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKICAgIC0gKnRhcio6IHVuY29tcHJlc3NlZCB0YXIgZmlsZQogICAgLSAqemlwKjogWklQIGZpbGUKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdCBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKaW5kZXggODRlMjgzNi4uOTU0OTgzOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaWduYWwucnN0CkBAIC02NSw2ICs2NSwxNiBAQAogTW9kdWxlIGNvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIHNpZ25hbCAoU0lHKiksIGhhbmRsZXIgKDpjb25zdDpgU0lHX0RGTGAsIDpjb25zdDpgU0lHX0lHTmApIGFuZCBzaWdtYXNrCisgICAoOmNvbnN0OmBTSUdfQkxPQ0tgLCA6Y29uc3Q6YFNJR19VTkJMT0NLYCwgOmNvbnN0OmBTSUdfU0VUTUFTS2ApCisgICByZWxhdGVkIGNvbnN0YW50cyBsaXN0ZWQgYmVsb3cgd2VyZSB0dXJuZWQgaW50bworICAgOmNsYXNzOmBlbnVtcyA8ZW51bS5JbnRFbnVtPmAuCisgICA6ZnVuYzpgZ2V0c2lnbmFsYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCBhbmQKKyAgIDpmdW5jOmBzaWd3YWl0YCBmdW5jdGlvbnMgcmV0dXJuIGh1bWFuLXJlYWRhYmxlCisgICA6Y2xhc3M6YGVudW1zIDxlbnVtLkludEVudW0+YC4KKworCiBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGFyZToKIAogCkBAIC0yMDksMjEgKzIxOSwyMSBAQAogICAgOmZ1bmM6YHNpZ3BlbmRpbmdgLgogCiAKLS4uIGZ1bmN0aW9uOjogcHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKQorLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWduYWxudW0pCiAKLSAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbmFsbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKICAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQogICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KICAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCi0gICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKLSAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAotICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhCisgICBzaWduYWwgdG8gYSBwYXJ0aWN1bGFyIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsCisgICB0byBmYWlsIHdpdGggOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKICAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAogICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQogICAgZm9yICp0aHJlYWRfaWQqLgogCi0gICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIElmICpzaWduYWxudW0qIGlzIDAsIHRoZW4gbm8gc2lnbmFsIGlzIHNlbnQsIGJ1dCBlcnJvciBjaGVja2luZyBpcyBzdGlsbAogICAgcGVyZm9ybWVkOyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgcHRocmVhZF9raWxsKDMpYCBmb3IgZnVydGhlcgpAQCAtMzA4LDYgKzMxOCw5IEBACiAgICBhdHRlbXB0aW5nIHRvIGNhbGwgaXQgZnJvbSBvdGhlciB0aHJlYWRzIHdpbGwgY2F1c2UgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgZXhjZXB0aW9uIHRvIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXQgaGFuZGxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpCiAKQEAgLTM5NSw2ICs0MDgsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgbm90IGluICpzaWdzZXQqCisgICAgICBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yCisgICAgICB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ3RpbWVkd2FpdChzaWdzZXQsIHRpbWVvdXQpCiAKQEAgLTQwOSw2ICs0MjcsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCAqdGltZW91dCogaWYgaW50ZXJydXB0ZWQKKyAgICAgIGJ5IGEgc2lnbmFsIG5vdCBpbiAqc2lnc2V0KiBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBfc2lnbmFsLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTFlNWRhOC4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTI2LDI0ICsyNiwyMyBAQAogICAgOm9wdGlvbjpgLVNgLgogCiAuLiBpbmRleDo6Ci0gICBwYWlyOiBzaXRlLXB5dGhvbjsgZGlyZWN0b3J5CiAgICBwYWlyOiBzaXRlLXBhY2thZ2VzOyBkaXJlY3RvcnkKIAogSXQgc3RhcnRzIGJ5IGNvbnN0cnVjdGluZyB1cCB0byBmb3VyIGRpcmVjdG9yaWVzIGZyb20gYSBoZWFkIGFuZCBhIHRhaWwgcGFydC4KIEZvciB0aGUgaGVhZCBwYXJ0LCBpdCB1c2VzIGBgc3lzLnByZWZpeGBgIGFuZCBgYHN5cy5leGVjX3ByZWZpeGBgOyBlbXB0eSBoZWFkcwogYXJlIHNraXBwZWQuICBGb3IgdGhlIHRhaWwgcGFydCwgaXQgdXNlcyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGVuCiA6ZmlsZTpgbGliL3NpdGUtcGFja2FnZXNgIChvbiBXaW5kb3dzKSBvcgotOmZpbGU6YGxpYi9weXRob257WC5ZfS9zaXRlLXBhY2thZ2VzYCBhbmQgdGhlbiA6ZmlsZTpgbGliL3NpdGUtcHl0aG9uYCAob24KLVVuaXggYW5kIE1hY2ludG9zaCkuICBGb3IgZWFjaCBvZiB0aGUgZGlzdGluY3QgaGVhZC10YWlsIGNvbWJpbmF0aW9ucywgaXQgc2VlcwotaWYgaXQgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kIGlmIHNvLCBhZGRzIGl0IHRvIGBgc3lzLnBhdGhgYCBhbmQKLWFsc28gaW5zcGVjdHMgdGhlIG5ld2x5IGFkZGVkIHBhdGggZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuCis6ZmlsZTpgbGliL3B5dGhvbntYLll9L3NpdGUtcGFja2FnZXNgIChvbiBVbml4IGFuZCBNYWNpbnRvc2gpLiAgRm9yIGVhY2gKK29mIHRoZSBkaXN0aW5jdCBoZWFkLXRhaWwgY29tYmluYXRpb25zLCBpdCBzZWVzIGlmIGl0IHJlZmVycyB0byBhbiBleGlzdGluZworZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZCBhbHNvIGluc3BlY3RzIHRoZSBuZXdseQorYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAotLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQuCiAKIElmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCiBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKLWl0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZAogc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCiBpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKIHRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKQEAgLTE5NSw4ICsxOTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldHNpdGVwYWNrYWdlcygpCiAKLSAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMgKGFuZCBwb3NzaWJseQotICAgc2l0ZS1weXRob24pLgorICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCAzZWJlZDA2Li45NzdmOWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yMCw3ICsyMCw4IEBACiBBZGRpdGlvbmFsbHkgdGhlIFNNVFBDaGFubmVsIG1heSBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdmVyeSBzcGVjaWZpYwogaW50ZXJhY3Rpb24gYmVoYXZpb3VyIHdpdGggU01UUCBjbGllbnRzLgogCi1UaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBleHRlbnNpb24uCitUaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBhbmQgOnJmYzpgNjUzMWAKK1NNVFBVVEY4IGV4dGVuc2lvbnMuCiAKIAogU01UUFNlcnZlciBPYmplY3RzCkBAIC0yOCw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKQEAgLTM5LDI1ICs0MCw3NyBAQAogICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubwogICAgbGltaXQuCiAKLSAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCisgICAqbWFwKiBpcyB0aGUgc29ja2V0IG1hcCB0byB1c2UgZm9yIGNvbm5lY3Rpb25zIChhbiBpbml0aWFsbHkgZW1wdHkKKyAgIGRpY3Rpb25hcnkgaXMgYSBzdWl0YWJsZSB2YWx1ZSkuICBJZiBub3Qgc3BlY2lmaWVkIHRoZSA6bW9kOmBhc3luY29yZWAKKyAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKyAgICplbmFibGVfU01UUFVURjgqIGRldGVybWlucyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKKyAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgogCi0gICAgICBSYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24uIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0bworICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKKyAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCisgICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KKyAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisKKyAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCisKKyAgICAgIFJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KICAgICAgIGRvIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGlzIG1lc3NhZ2UuIFdoYXRldmVyIHdhcyBwYXNzZWQgaW4gdGhlCiAgICAgICBjb25zdHJ1Y3RvciBhcyAqcmVtb3RlYWRkciogd2lsbCBiZSBhdmFpbGFibGUgYXMgdGhlIDphdHRyOmBfcmVtb3RlYWRkcmAKICAgICAgIGF0dHJpYnV0ZS4gKnBlZXIqIGlzIHRoZSByZW1vdGUgaG9zdCdzIGFkZHJlc3MsICptYWlsZnJvbSogaXMgdGhlIGVudmVsb3BlCiAgICAgICBvcmlnaW5hdG9yLCAqcmNwdHRvcyogYXJlIHRoZSBlbnZlbG9wZSByZWNpcGllbnRzIGFuZCAqZGF0YSogaXMgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBlLW1haWwgKHdoaWNoIHNob3VsZCBiZSBpbiA6cmZjOmAyODIyYAorICAgICAgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgdGhlIGUtbWFpbCAod2hpY2ggc2hvdWxkIGJlIGluIDpyZmM6YDUzMjFgCiAgICAgICBmb3JtYXQpLgogCisgICAgICBJZiB0aGUgKmRlY29kZV9kYXRhKiBjb25zdHJ1Y3RvciBrZXl3b3JkIGlzIHNldCB0byBgYFRydWVgYCwgdGhlICpkYXRhKgorICAgICAgYXJndW1lbnQgd2lsbCBiZSBhIHVuaWNvZGUgc3RyaW5nLiAgSWYgaXQgaXMgc2V0IHRvIGBgRmFsc2VgYCwgaXQKKyAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisKKyAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5CisgICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKKyAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICBrZXlzOgorCisgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CisgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYAorICAgICAgICAgICAgIGNvbW1hbmQgKHRoZSBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3M7IGV4YW1wbGU6CisgICAgICAgICAgICAgYGBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXWBgKS4KKworICAgICAgICAgICpyY3B0X29wdGlvbnMqOgorICAgICAgICAgICAgIHNhbWUgYXMgKm1haWxfb3B0aW9ucyogYnV0IGZvciB0aGUgYGBSQ1BUYGAgY29tbWFuZC4KKyAgICAgICAgICAgICBDdXJyZW50bHkgbm8gYGBSQ1BUIFRPYGAgb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCBzbyBmb3Igbm93CisgICAgICAgICAgICAgdGhpcyB3aWxsIGFsd2F5cyBiZSBhbiBlbXB0eSBsaXN0LgorCisgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgYGBwcm9jZXNzX21lc3NhZ2VgYCBzaG91bGQgdXNlIHRoZSBgYCoqa3dhcmdzYGAKKyAgICAgIHNpZ25hdHVyZSB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLCBzaW5jZSBmdXR1cmUgZmVhdHVyZQorICAgICAgZW5oYW5jZW1lbnRzIG1heSBhZGQga2V5cyB0byB0aGUga3dhcmdzIGRpY3Rpb25hcnkuCisKKyAgICAgIFJldHVybiBgYE5vbmVgYCB0byByZXF1ZXN0IGEgbm9ybWFsIGBgMjUwIE9rYGAgcmVzcG9uc2U7IG90aGVyd2lzZQorICAgICAgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiA6UkZDOmA1MzIxYCBmb3JtYXQuCisKICAgIC4uIGF0dHJpYnV0ZTo6IGNoYW5uZWxfY2xhc3MKIAogICAgICAgT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIHVzZSBhIGN1c3RvbSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBmb3IKICAgICAgIG1hbmFnaW5nIFNNVFAgY2xpZW50cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSAqbWFwKiBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIFRoZSAqbWFwKiBjb25zdHJ1Y3RvciBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKKyAgICAgIHNwZWNpZmllZC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtOTcsNyArMTUwLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTA4LDExICsxNjEsMjQgQEAKICAgIGFjY2VwdGVkIGluIGEgYGBEQVRBYGAgY29tbWFuZC4gIEEgdmFsdWUgb2YgYGBOb25lYGAgb3IgYGAwYGAgbWVhbnMgbm8KICAgIGxpbWl0LgogCisgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbnMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCisgICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKwogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAorICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5CisgICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNtdHBfc2VydmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDhlMWJmYjUuLjI1Mjc5ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC02MSw2ICs2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBUaGUgU01UUFVURjggZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkgaXMgbm93IHN1cHBvcnRlZC4KKworCiAuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUgWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKQpAQCAtMTYxLDYgKzE2NSwxMyBAQAogICAgVGhlIHNlcnZlciByZWZ1c2VkIG91ciBgYEhFTE9gYCBtZXNzYWdlLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFNNVFBOb3RTdXBwb3J0ZWRFcnJvcgorCisgICAgVGhlIGNvbW1hbmQgb3Igb3B0aW9uIGF0dGVtcHRlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBleGNlcHRpb246OiBTTVRQQXV0aGVudGljYXRpb25FcnJvcgogCiAgICBTTVRQIGF1dGhlbnRpY2F0aW9uIHdlbnQgd3JvbmcuICBNb3N0IHByb2JhYmx5IHRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUKQEAgLTE4OSw4ICsyMDAsMTIgQEAKIAogLi4gbWV0aG9kOjogU01UUC5zZXRfZGVidWdsZXZlbChsZXZlbCkKIAotICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHRydWUgdmFsdWUgZm9yICpsZXZlbCogcmVzdWx0cyBpbiBkZWJ1ZyBtZXNzYWdlcwotICAgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHZhbHVlIG9mIDEgb3IgYGBUcnVlYGAgZm9yICpsZXZlbCogcmVzdWx0cyBpbgorICAgZGVidWcgbWVzc2FnZXMgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbQorICAgdGhlIHNlcnZlci4gIEEgdmFsdWUgb2YgMiBmb3IgKmxldmVsKiByZXN1bHRzIGluIHRoZXNlIG1lc3NhZ2VzIGJlaW5nCisgICB0aW1lc3RhbXBlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgQWRkZWQgZGVidWdsZXZlbCAyLgogCiAKIC4uIG1ldGhvZDo6IFNNVFAuZG9jbWQoY21kLCBhcmdzPScnKQpAQCAtMjQwLDggKzI1NSw3IEBACiAgICB0aGUgc2VydmVyIGlzIHN0b3JlZCBhcyB0aGUgOmF0dHI6YGVobG9fcmVzcGAgYXR0cmlidXRlLCA6YXR0cjpgZG9lc19lc210cGAKICAgIGlzIHNldCB0byB0cnVlIG9yIGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgRVNNVFAsIGFuZAogICAgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYCB3aWxsIGJlIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUKLSAgIFNNVFAgc2VydmljZSBleHRlbnNpb25zIHRoaXMgc2VydmVyIHN1cHBvcnRzLCBhbmQgdGhlaXIKLSAgIHBhcmFtZXRlcnMgKGlmIGFueSkuCisgICBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucyB0aGlzIHNlcnZlciBzdXBwb3J0cywgYW5kIHRoZWlyIHBhcmFtZXRlcnMgKGlmIGFueSkuCiAKICAgIFVubGVzcyB5b3Ugd2lzaCB0byB1c2UgOm1ldGg6YGhhc19leHRuYCBiZWZvcmUgc2VuZGluZyBtYWlsLCBpdCBzaG91bGQgbm90IGJlCiAgICBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBleHBsaWNpdGx5LiAgSXQgd2lsbCBiZSBpbXBsaWNpdGx5IGNhbGxlZCBieQpAQCAtMjg4LDkgKzMwMiw1MSBAQAogICAgOmV4YzpgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3JgCiAgICAgICBUaGUgc2VydmVyIGRpZG4ndCBhY2NlcHQgdGhlIHVzZXJuYW1lL3Bhc3N3b3JkIGNvbWJpbmF0aW9uLgogCisgICA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkRXJyb3JgCisgICAgICBUaGUgYGBBVVRIYGAgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisKICAgIDpleGM6YFNNVFBFeGNlcHRpb25gCiAgICAgICBObyBzdWl0YWJsZSBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2FzIGZvdW5kLgogCisgICBFYWNoIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHN1cHBvcnRlZCBieSA6bW9kOmBzbXRwbGliYCBhcmUgdHJpZWQgaW4KKyAgIHR1cm4gaWYgdGhleSBhcmUgYWR2ZXJ0aXNlZCBhcyBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciAoc2VlIDptZXRoOmBhdXRoYAorICAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcykuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkRXJyb3JgIG1heSBiZSByYWlzZWQuCisKKworLi4gbWV0aG9kOjogU01UUC5hdXRoKG1lY2hhbmlzbSwgYXV0aG9iamVjdCkKKworICAgSXNzdWUgYW4gYGBTTVRQYGAgYGBBVVRIYGAgY29tbWFuZCBmb3IgdGhlIHNwZWNpZmllZCBhdXRoZW50aWNhdGlvbgorICAgKm1lY2hhbmlzbSosIGFuZCBoYW5kbGUgdGhlIGNoYWxsZW5nZSByZXNwb25zZSB2aWEgKmF1dGhvYmplY3QqLgorCisgICAqbWVjaGFuaXNtKiBzcGVjaWZpZXMgd2hpY2ggYXV0aGVudGljYXRpb24gbWVjaGFuaXNtIGlzIHRvCisgICBiZSB1c2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBgYEFVVEhgYCBjb21tYW5kOyB0aGUgdmFsaWQgdmFsdWVzIGFyZQorICAgdGhvc2UgbGlzdGVkIGluIHRoZSBgYGF1dGhgYCBlbGVtZW50IG9mIDphdHRyOmBlc210cF9mZWF0dXJlc2AuCisKKyAgICphdXRob2JqZWN0KiBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0IHRha2luZyBhIHNpbmdsZSBhcmd1bWVudDoKKworICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2UpCisKKyAgIEl0IHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MgdGhlIHNlcnZlcidzIGNoYWxsZW5nZSByZXNwb25zZTsgdGhlCisgICAqY2hhbGxlbmdlKiBhcmd1bWVudCBpdCBpcyBwYXNzZWQgd2lsbCBiZSBhIGBgYnl0ZXNgYC4gIEl0IHNob3VsZCByZXR1cm4KKyAgIGBgYnl0ZXNgYCAqZGF0YSogdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuCisKKyAgIFRoZSBgYFNNVFBgYCBjbGFzcyBwcm92aWRlcyBgYGF1dGhvYmplY3RzYGAgZm9yIHRoZSBgYENSQU0tTUQ1YGAsIGBgUExBSU5gYCwKKyAgIGFuZCBgYExPR0lOYGAgbWVjaGFuaXNtczsgdGhleSBhcmUgbmFtZWQgYGBTTVRQLmF1dGhfY3JhbV9tZDVgYCwKKyAgIGBgU01UUC5hdXRoX3BsYWluYGAsIGFuZCBgYFNNVFAuYXV0aF9sb2dpbmBgIHJlc3BlY3RpdmVseS4gIFRoZXkgYWxsIHJlcXVpcmUKKyAgIHRoYXQgdGhlIGBgdXNlcmBgIGFuZCBgYHBhc3N3b3JkYGAgcHJvcGVydGllcyBvZiB0aGUgYGBTTVRQYGAgaW5zdGFuY2UgYXJlCisgICBzZXQgdG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorCisgICBVc2VyIGNvZGUgZG9lcyBub3Qgbm9ybWFsbHkgbmVlZCB0byBjYWxsIGBgYXV0aGBgIGRpcmVjdGx5LCBidXQgY2FuIGluc3RlYWQKKyAgIGNhbGwgdGhlIDptZXRoOmBsb2dpbmAgbWV0aG9kLCB3aGljaCB3aWxsIHRyeSBlYWNoIG9mIHRoZSBhYm92ZSBtZWNoYW5pc21zIGluCisgICB0dXJuLCBpbiB0aGUgb3JkZXIgbGlzdGVkLiAgYGBhdXRoYGAgaXMgZXhwb3NlZCB0byBmYWNpbGl0YXRlIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyBub3QgKG9yIG5vdCB5ZXQpIHN1cHBvcnRlZCBkaXJlY3RseQorICAgYnkgOm1vZDpgc210cGxpYmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpCiAKQEAgLTMxMCw3ICszNjYsNyBAQAogICAgOmV4YzpgU01UUEhlbG9FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IHJlcGx5IHByb3Blcmx5IHRvIHRoZSBgYEhFTE9gYCBncmVldGluZy4KIAotICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKICAgICAgVGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTVEFSVFRMUyBleHRlbnNpb24uCiAKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAKQEAgLTMyNCw2ICszODAsMTEgQEAKICAgICAgIDphdHRyOmBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRvciogKHNlZQogICAgICAgOmRhdGE6YH5zc2wuSEFTX1NOSWApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGVycm9yIHJhaXNlZCBmb3IgbGFjayBvZiBTVEFSVFRMUyBzdXBwb3J0IGlzIG5vdyB0aGUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgc3ViY2xhc3MgaW5zdGVhZCBvZiB0aGUgYmFzZQorICAgICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zNjAsNiArNDIxLDkgQEAKICAgIHJlY2lwaWVudCB0aGF0IHdhcyByZWZ1c2VkLiAgRWFjaCBlbnRyeSBjb250YWlucyBhIHR1cGxlIG9mIHRoZSBTTVRQIGVycm9yIGNvZGUKICAgIGFuZCB0aGUgYWNjb21wYW55aW5nIGVycm9yIG1lc3NhZ2Ugc2VudCBieSB0aGUgc2VydmVyLgogCisgICBJZiBgYFNNVFBVVEY4YGAgaXMgaW5jbHVkZWQgaW4gKm1haWxfb3B0aW9ucyosIGFuZCB0aGUgc2VydmVyIHN1cHBvcnRzIGl0LAorICAgKmZyb21fYWRkciogYW5kICp0b19hZGRyKiBtYXkgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKIAogICAgOmV4YzpgU01UUFJlY2lwaWVudHNSZWZ1c2VkYApAQCAtMzc4LDEyICs0NDIsMjAgQEAKICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YgYQogICAgICAgcmVjaXBpZW50KS4KIAorICAgOmV4YzpgU01UUE5vdFN1cHBvcnRlZEVycm9yYAorICAgICAgYGBTTVRQVVRGOGBgIHdhcyBnaXZlbiBpbiB0aGUgKm1haWxfb3B0aW9ucyogYnV0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICBzZXJ2ZXIuCisKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBgYFNNVFBVVEY4YGAgc3VwcG9ydCBhZGRlZCwgYW5kIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlCisgICAgICByYWlzZWQgaWYgYGBTTVRQVVRGOGBgIGlzIHNwZWNpZmllZCBidXQgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGl0LgorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZF9tZXNzYWdlKG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQpAQCAtMzk1LDcgKzQ2Nyw3IEBACiAKICAgIElmICpmcm9tX2FkZHIqIGlzIGBgTm9uZWBgIG9yICp0b19hZGRycyogaXMgYGBOb25lYGAsIGBgc2VuZF9tZXNzYWdlYGAgZmlsbHMKICAgIHRob3NlIGFyZ3VtZW50cyB3aXRoIGFkZHJlc3NlcyBleHRyYWN0ZWQgZnJvbSB0aGUgaGVhZGVycyBvZiAqbXNnKiBhcwotICAgc3BlY2lmaWVkIGluIDpyZmM6YDI4MjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAorICAgc3BlY2lmaWVkIGluIDpyZmM6YDUzMjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAogICAgZmllbGQgaWYgaXQgaXMgcHJlc2VudCwgYW5kIG90aGVyd2lzZSB0byB0aGUgOm1haWxoZWFkZXI6YEZyb21gIGZpZWxkLgogICAgKnRvX2FkcmVzc2VzKiBjb21iaW5lcyB0aGUgdmFsdWVzIChpZiBhbnkpIG9mIHRoZSA6bWFpbGhlYWRlcjpgVG9gLAogICAgOm1haWxoZWFkZXI6YENjYCwgYW5kIDptYWlsaGVhZGVyOmBCY2NgIGZpZWxkcyBmcm9tICptc2cqLiAgSWYgZXhhY3RseSBvbmUKQEAgLTQxMCwxMCArNDgyLDE4IEBACiAgICBjYWxscyA6bWV0aDpgc2VuZG1haWxgIHRvIHRyYW5zbWl0IHRoZSByZXN1bHRpbmcgbWVzc2FnZS4gIFJlZ2FyZGxlc3Mgb2YgdGhlCiAgICB2YWx1ZXMgb2YgKmZyb21fYWRkciogYW5kICp0b19hZGRycyosIGBgc2VuZF9tZXNzYWdlYGAgZG9lcyBub3QgdHJhbnNtaXQgYW55CiAgICA6bWFpbGhlYWRlcjpgQmNjYCBvciA6bWFpbGhlYWRlcjpgUmVzZW50LUJjY2AgaGVhZGVycyB0aGF0IG1heSBhcHBlYXIKLSAgIGluICptc2cqLgorICAgaW4gKm1zZyouICBJZiBhbnkgb2YgdGhlIGFkZHJlc3NlcyBpbiAqZnJvbV9hZGRyKiBhbmQgKnRvX2FkZHJzKiBjb250YWluCisgICBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgdGhlIHNlcnZlciBkb2VzIG5vdCBhZHZlcnRpc2UgYGBTTVRQVVRGOGBgIHN1cHBvcnQsCisgICBhbiA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkYCBlcnJvciBpcyByYWlzZWQuICBPdGhlcndpc2UgdGhlIGBgTWVzc2FnZWBgIGlzCisgICBzZXJpYWxpemVkIHdpdGggYSBjbG9uZSBvZiBpdHMgOm1vZDpgfmVtYWlsLnBvbGljeWAgd2l0aCB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGF0dHJpYnV0ZSBzZXQgdG8gYGBUcnVlYGAsIGFuZAorICAgYGBTTVRQVVRGOGBgIGFuZCBgYEJPRFk9OEJJVE1JTUVgYCBhcmUgYWRkZWQgdG8gKm1haWxfb3B0aW9ucyouCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIGludGVybmF0aW9uYWxpemVkIGFkZHJlc3NlcyAoYGBTTVRQVVRGOGBgKS4KKwogCiAuLiBtZXRob2Q6OiBTTVRQLnF1aXQoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0IGIvRG9jL2xpYnJhcnkvc25kaGRyLnJzdAppbmRleCBmMzZkZjY4Li5mOGI1ZDhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NuZGhkci5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIAogVGhlIDptb2Q6YHNuZGhkcmAgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIHR5cGUKIG9mIHNvdW5kIGRhdGEgd2hpY2ggaXMgaW4gYSBmaWxlLiAgV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gZGV0ZXJtaW5lCi13aGF0IHR5cGUgb2Ygc291bmQgZGF0YSBpcyBzdG9yZWQgaW4gYSBmaWxlLCB0aGV5IHJldHVybiBhIHR1cGxlIGBgKHR5cGUsCi1zYW1wbGluZ19yYXRlLCBjaGFubmVscywgZnJhbWVzLCBiaXRzX3Blcl9zYW1wbGUpYGAuICBUaGUgdmFsdWUgZm9yICp0eXBlKgord2hhdCB0eXBlIG9mIHNvdW5kIGRhdGEgaXMgc3RvcmVkIGluIGEgZmlsZSwgdGhleSByZXR1cm4gYQorOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCwgY29udGFpbmluZyBmaXZlIGF0dHJpYnV0ZXM6IChgYGZpbGV0eXBlYGAsCitgYGZyYW1lcmF0ZWBgLCBgYG5jaGFubmVsc2BgLCBgYG5mcmFtZXNgYCwgYGBzYW1wd2lkdGhgYCkuIFRoZSB2YWx1ZSBmb3IgKnR5cGUqCiBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZSBhbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgYGAnYWlmYydgYCwgYGAnYWlmZidgYCwKIGBgJ2F1J2BgLCBgYCdoY29tJ2BgLCBgYCdzbmRyJ2BgLCBgYCdzbmR0J2BgLCBgYCd2b2MnYGAsIGBgJ3dhdidgYCwgYGAnOHN2eCdgYCwKIGBgJ3NiJ2BgLCBgYCd1YidgYCwgb3IgYGAndWwnYGAuICBUaGUgKnNhbXBsaW5nX3JhdGUqIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKQEAgLTMxLDEzICszMiwxOSBAQAogLi4gZnVuY3Rpb246OiB3aGF0KGZpbGVuYW1lKQogCiAgICBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHNvdW5kIGRhdGEgc3RvcmVkIGluIHRoZSBmaWxlICpmaWxlbmFtZSogdXNpbmcKLSAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgdHVwbGUgYXMgZGVzY3JpYmVkIGFib3ZlLCBvdGhlcndpc2UKKyAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgbmFtZWR0dXBsZSBhcyBkZXNjcmliZWQgYWJvdmUsIG90aGVyd2lzZQogICAgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIC4uIGZ1bmN0aW9uOjogd2hhdGhkcihmaWxlbmFtZSkKIAogICAgRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBzb3VuZCBkYXRhIHN0b3JlZCBpbiBhIGZpbGUgYmFzZWQgb24gdGhlIGZpbGUgIGhlYWRlci4KLSAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzIGdpdmVuIGJ5ICpmaWxlbmFtZSouICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0dXBsZSBhcworICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgaXMgZ2l2ZW4gYnkgKmZpbGVuYW1lKi4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5hbWVkdHVwbGUgYXMKICAgIGRlc2NyaWJlZCBhYm92ZSBvbiBzdWNjZXNzLCBvciBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDgyNzE5MWUuLjFkY2RiMmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtNDYsMTcgKzQ2LDIwIEBACiAtIFRoZSBhZGRyZXNzIG9mIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IGJvdW5kIHRvIGEgZmlsZSBzeXN0ZW0gbm9kZQogICBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZywgdXNpbmcgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFuZCB0aGUKICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKHNlZSA6cGVwOmAzODNgKS4gIEFuIGFkZHJlc3MgaW4KLSAgTGludXgncyBhYnN0cmFjdCBuYW1lc3BhY2UgaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgd2l0aAorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgd2l0aAogICBhbiBpbml0aWFsIG51bGwgYnl0ZTsgbm90ZSB0aGF0IHNvY2tldHMgaW4gdGhpcyBuYW1lc3BhY2UgY2FuCiAgIGNvbW11bmljYXRlIHdpdGggbm9ybWFsIGZpbGUgc3lzdGVtIHNvY2tldHMsIHNvIHByb2dyYW1zIGludGVuZGVkIHRvCiAgIHJ1biBvbiBMaW51eCBtYXkgbmVlZCB0byBkZWFsIHdpdGggYm90aCB0eXBlcyBvZiBhZGRyZXNzLiAgQSBzdHJpbmcgb3IKLSAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBlaXRoZXIgdHlwZSBvZiBhZGRyZXNzIHdoZW4KKyAgYnl0ZXMtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgogICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAogICAgICAgZW5jb2RpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAtIEEgcGFpciBgYChob3N0LCBwb3J0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0lORVRgIGFkZHJlc3MgZmFtaWx5LAogICB3aGVyZSAqaG9zdCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhIGhvc3RuYW1lIGluIEludGVybmV0IGRvbWFpbgogICBub3RhdGlvbiBsaWtlIGBgJ2RhcmluZy5jd2kubmwnYGAgb3IgYW4gSVB2NCBhZGRyZXNzIGxpa2UgYGAnMTAwLjUwLjIwMC41J2BgLApAQCAtMjc2LDYgKzI3OSwxOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZGF0YTo6IENBTl9SQVdfRkRfRlJBTUVTCisKKyAgIEVuYWJsZXMgQ0FOIEZEIHN1cHBvcnQgaW4gYSBDQU5fUkFXIHNvY2tldC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgVGhpcyBhbGxvd3MgeW91ciBhcHBsaWNhdGlvbiB0byBzZW5kIGJvdGggQ0FOIGFuZCBDQU4gRkQgZnJhbWVzOyBob3dldmVyLAorICAgeW91IG9uZSBtdXN0IGFjY2VwdCBib3RoIENBTiBhbmQgQ0FOIEZEIGZyYW1lcyB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgc29ja2V0LgorCisgICBUaGlzIGNvbnN0YW50IGlzIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMy42LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEFGX1JEUwogICAgICAgICAgIFBGX1JEUwogICAgICAgICAgIFNPTF9SRFMKQEAgLTM1Miw3ICszNjcsNiBAQAogICAgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlci4gIEFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlciBhcmUKICAgIGFzIGZvciB0aGUgOmZ1bmM6YC5zb2NrZXRgIGZ1bmN0aW9uIGFib3ZlLiBUaGUgZGVmYXVsdCBmYW1pbHkgaXMgOmNvbnN0OmBBRl9VTklYYAogICAgaWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBBRl9JTkVUYC4KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogICAgVGhlIG5ld2x5IGNyZWF0ZWQgc29ja2V0cyBhcmUgOnJlZjpgbm9uLWluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gLgogCkBAIC0zNjMsNiArMzc3LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgcmV0dXJuZWQgc29ja2V0cyBhcmUgbm93IG5vbi1pbmhlcml0YWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFdpbmRvd3Mgc3VwcG9ydCBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3NbLCB0aW1lb3V0Wywgc291cmNlX2FkZHJlc3NdXSkKIApAQCAtNjA5LDggKzYyNiw4IEBACiAKIC4uIGZ1bmN0aW9uOjogaW5ldF9udG9hKHBhY2tlZF9pcCkKIAotICAgQ29udmVydCBhIDMyLWJpdCBwYWNrZWQgSVB2NCBhZGRyZXNzIChhIGJ5dGVzIG9iamVjdCBmb3VyIGNoYXJhY3RlcnMgaW4KLSAgIGxlbmd0aCkgdG8gaXRzIHN0YW5kYXJkIGRvdHRlZC1xdWFkIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yIGV4YW1wbGUsCisgICBDb252ZXJ0IGEgMzItYml0IHBhY2tlZCBJUHY0IGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBmb3VyCisgICBieXRlcyBpbiBsZW5ndGgpIHRvIGl0cyBzdGFuZGFyZCBkb3R0ZWQtcXVhZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLAogICAgJzEyMy40NS42Ny44OScpLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBjb252ZXJzaW5nIHdpdGggYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUKICAgIHN0YW5kYXJkIEMgbGlicmFyeSBhbmQgbmVlZHMgb2JqZWN0cyBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCwgd2hpY2gKICAgIGlzIHRoZSBDIHR5cGUgZm9yIHRoZSAzMi1iaXQgcGFja2VkIGJpbmFyeSBkYXRhIHRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgYW4KQEAgLTYyMSw2ICs2MzgsOSBAQAogICAgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfbnRvcGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgSVB2NC92NiBkdWFsCiAgICBzdGFjayBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGluZXRfcHRvbihhZGRyZXNzX2ZhbWlseSwgaXBfc3RyaW5nKQogCkBAIC02NDMsMjIgKzY2MywyNiBAQAogCiAuLiBmdW5jdGlvbjo6IGluZXRfbnRvcChhZGRyZXNzX2ZhbWlseSwgcGFja2VkX2lwKQogCi0gICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgYnl0ZXMgb2JqZWN0IG9mIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMpIHRvIGl0cwotICAgc3RhbmRhcmQsIGZhbWlseS1zcGVjaWZpYyBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvcgotICAgYGAnNWFlZjoyYjo6OCdgYCkuIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sCi0gICByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkKLSAgIG9yIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCisgICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvZiBzb21lIG51bWJlciBvZgorICAgYnl0ZXMpIHRvIGl0cyBzdGFuZGFyZCwgZmFtaWx5LXNwZWNpZmljIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yCisgICBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvciBgYCc1YWVmOjJiOjo4J2BgKS4KKyAgIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sIHJldHVybnMgYW4KKyAgIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkgb3IKKyAgIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAotICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCi0gICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KKyAgIDpjb25zdDpgQUZfSU5FVDZgLiBJZiB0aGUgYnl0ZXMgb2JqZWN0ICpwYWNrZWRfaXAqIGlzIG5vdCB0aGUgY29ycmVjdAorICAgbGVuZ3RoIGZvciB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgZmFtaWx5LCA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIEEgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcyksIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIHN1cHBvcnQgYWRkZWQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4KICAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CkBAIC03ODMsNiArODA3LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIHNvY2tldCBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuYmluZChhZGRyZXNzKQogCkBAIC04MTUsNiArODQ0LDE5IEBACiAgICBDb25uZWN0IHRvIGEgcmVtb3RlIHNvY2tldCBhdCAqYWRkcmVzcyouIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZQogICAgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKKyAgIElmIHRoZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgbWV0aG9kIHdhaXRzIHVudGlsIHRoZQorICAgY29ubmVjdGlvbiBjb21wbGV0ZXMsIG9yIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIG9uIHRpbWVvdXQsIGlmIHRoZQorICAgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzCisgICBhIHRpbWVvdXQuIEZvciBub24tYmxvY2tpbmcgc29ja2V0cywgdGhlIG1ldGhvZCByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICBzaWduYWwgKG9yIHRoZSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBzaWduYWwgaGFuZGxlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgbWV0aG9kIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYQorICAgICAgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMKKyAgICAgIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQgKHNlZSB0aGUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKIApAQCAtOTEwLDEyICs5NTIsMTUgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oYmFja2xvZykKKy4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCi0gICBMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG1hZGUgdG8gdGhlIHNvY2tldC4gIFRoZSAqYmFja2xvZyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZQotICAgbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbm5lY3Rpb25zIGFuZCBzaG91bGQgYmUgYXQgbGVhc3QgMDsgdGhlIG1heGltdW0gdmFsdWUKLSAgIGlzIHN5c3RlbS1kZXBlbmRlbnQgKHVzdWFsbHkgNSksIHRoZSBtaW5pbXVtIHZhbHVlIGlzIGZvcmNlZCB0byAwLgorICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKKyAgIGJlIGF0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisgICB1bmFjY2VwdGVkIGNvbm5lY3Rpb25zIHRoYXQgdGhlIHN5c3RlbSB3aWxsIGFsbG93IGJlZm9yZSByZWZ1c2luZyBuZXcKKyAgIGNvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmJhY2tsb2cqIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwuCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5tYWtlZmlsZShtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsICosIGVuY29kaW5nPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQpAQCAtOTUzLDYgKzk5OCwxMSBAQAogICAgICAgRm9yIGJlc3QgbWF0Y2ggd2l0aCBoYXJkd2FyZSBhbmQgbmV0d29yayByZWFsaXRpZXMsIHRoZSB2YWx1ZSBvZiAgKmJ1ZnNpemUqCiAgICAgICBzaG91bGQgYmUgYSByZWxhdGl2ZWx5IHNtYWxsIHBvd2VyIG9mIDIsIGZvciBleGFtcGxlLCA0MDk2LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQucmVjdmZyb20oYnVmc2l6ZVssIGZsYWdzXSkKIApAQCAtOTYyLDYgKzEwMTIsMTEgQEAKICAgIDptYW5wYWdlOmByZWN2KDIpYCBmb3IgdGhlIG1lYW5pbmcgb2YgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpmbGFncyo7IGl0IGRlZmF1bHRzCiAgICB0byB6ZXJvLiAoVGhlIGZvcm1hdCBvZiAqYWRkcmVzcyogZGVwZW5kcyBvbiB0aGUgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKIApAQCAtMTAyOCw2ICsxMDgzLDExIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQucmVjdm1zZ19pbnRvKGJ1ZmZlcnNbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKIApAQCAtMTA5NCw2ICsxMTU0LDExIEBACiAgICBhcHBsaWNhdGlvbiBuZWVkcyB0byBhdHRlbXB0IGRlbGl2ZXJ5IG9mIHRoZSByZW1haW5pbmcgZGF0YS4gRm9yIGZ1cnRoZXIKICAgIGluZm9ybWF0aW9uIG9uIHRoaXMgdG9waWMsIGNvbnN1bHQgdGhlIDpyZWY6YHNvY2tldC1ob3d0b2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kYWxsKGJ5dGVzWywgZmxhZ3NdKQogCkBAIC0xMTA0LDYgKzExNjksMTUgQEAKICAgIHN1Y2Nlc3MuICBPbiBlcnJvciwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kIHRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgaG93CiAgICBtdWNoIGRhdGEsIGlmIGFueSwgd2FzIHN1Y2Nlc3NmdWxseSBzZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGRhdGEgaXMgc2VudCBzdWNjZXNzZnVseS4KKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdGhlIG1heGltdW0gdG90YWwgZHVyYXRpb24gdG8gc2VuZCBhbGwgZGF0YS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNlbmR0byhieXRlcywgYWRkcmVzcykKICAgICAgICAgICAgIHNvY2tldC5zZW5kdG8oYnl0ZXMsIGZsYWdzLCBhZGRyZXNzKQpAQCAtMTExNCw2ICsxMTg4LDExIEBACiAgICBieXRlcyBzZW50LiAoVGhlIGZvcm1hdCBvZiAqYWRkcmVzcyogZGVwZW5kcyBvbiB0aGUgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZQogICAgYWJvdmUuKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkKIApAQCAtMTE1MCw2ICsxMjI5LDI2IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKworLi4gbWV0aG9kOjogc29ja2V0LnNlbmRmaWxlKGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKQorCisgICBTZW5kIGEgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlCisgICA6bW9kOmBvcy5zZW5kZmlsZWAgYW5kIHJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4KKyAgICpmaWxlKiBtdXN0IGJlIGEgcmVndWxhciBmaWxlIG9iamVjdCBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuIElmCisgICA6bW9kOmBvcy5zZW5kZmlsZWAgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBXaW5kb3dzKSBvciAqZmlsZSogaXMgbm90IGEKKyAgIHJlZ3VsYXIgZmlsZSA6bWV0aDpgc2VuZGAgd2lsbCBiZSB1c2VkIGluc3RlYWQuICpvZmZzZXQqIHRlbGxzIGZyb20gd2hlcmUgdG8KKyAgIHN0YXJ0IHJlYWRpbmcgdGhlIGZpbGUuIElmIHNwZWNpZmllZCwgKmNvdW50KiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzCisgICB0byB0cmFuc21pdCBhcyBvcHBvc2VkIHRvIHNlbmRpbmcgdGhlIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQuIEZpbGUKKyAgIHBvc2l0aW9uIGlzIHVwZGF0ZWQgb24gcmV0dXJuIG9yIGFsc28gaW4gY2FzZSBvZiBlcnJvciBpbiB3aGljaCBjYXNlCisgICA6bWV0aDpgZmlsZS50ZWxsKCkgPGlvLklPQmFzZS50ZWxsPmAgY2FuIGJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgbnVtYmVyIG9mCisgICBieXRlcyB3aGljaCB3ZXJlIHNlbnQuIFRoZSBzb2NrZXQgbXVzdCBiZSBvZiA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCB0eXBlLiBOb24tCisgICBibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gbWV0aG9kOjogc29ja2V0LnNldF9pbmhlcml0YWJsZShpbmhlcml0YWJsZSkKIApAQCAtMTE4OSwxMSArMTI4OCwxNSBAQAogCiAgICBTZXQgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBzb2NrZXQgb3B0aW9uIChzZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKICAgIDptYW5wYWdlOmBzZXRzb2Nrb3B0KDIpYCkuICBUaGUgbmVlZGVkIHN5bWJvbGljIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUKLSAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciBvciBhCi0gICBieXRlcyBvYmplY3QgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8KKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciBvcgorICAgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSBpdCBpcworICAgdXAgdG8gdGhlIGNhbGxlciB0bwogICAgZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluCiAgICBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8gZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zaHV0ZG93bihob3cpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CmluZGV4IDFlYzQ0MzguLjlkYjM2ZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdApAQCAtMTEzLDcgKzExMyw3IEBACiBBbm90aGVyIGFwcHJvYWNoIHRvIGhhbmRsaW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyByZXF1ZXN0cyBpbiBhbiBlbnZpcm9ubWVudAogdGhhdCBzdXBwb3J0cyBuZWl0aGVyIHRocmVhZHMgbm9yIDpmdW5jOmB+b3MuZm9ya2AgKG9yIHdoZXJlIHRoZXNlIGFyZSB0b28KIGV4cGVuc2l2ZSBvciBpbmFwcHJvcHJpYXRlIGZvciB0aGUgc2VydmljZSkgaXMgdG8gbWFpbnRhaW4gYW4gZXhwbGljaXQgdGFibGUgb2YKLXBhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIDpmdW5jOmB+c2VsZWN0LnNlbGVjdGAgdG8gZGVjaWRlIHdoaWNoCitwYXJ0aWFsbHkgZmluaXNoZWQgcmVxdWVzdHMgYW5kIHRvIHVzZSA6bW9kOmBzZWxlY3RvcnNgIHRvIGRlY2lkZSB3aGljaAogcmVxdWVzdCB0byB3b3JrIG9uIG5leHQgKG9yIHdoZXRoZXIgdG8gaGFuZGxlIGEgbmV3IGluY29taW5nIHJlcXVlc3QpLiAgVGhpcyBpcwogcGFydGljdWxhcmx5IGltcG9ydGFudCBmb3Igc3RyZWFtIHNlcnZpY2VzIHdoZXJlIGVhY2ggY2xpZW50IGNhbiBwb3RlbnRpYWxseSBiZQogY29ubmVjdGVkIGZvciBhIGxvbmcgdGltZSAoaWYgdGhyZWFkcyBvciBzdWJwcm9jZXNzZXMgY2Fubm90IGJlIHVzZWQpLiAgU2VlCkBAIC0xMzYsNyArMTM2LDcgQEAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuZmlsZW5vKCkKIAogICAgUmV0dXJuIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgc29ja2V0IG9uIHdoaWNoIHRoZSBzZXJ2ZXIgaXMKLSAgIGxpc3RlbmluZy4gIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCBjb21tb25seSBwYXNzZWQgdG8gOmZ1bmM6YHNlbGVjdC5zZWxlY3RgLCB0bworICAgbGlzdGVuaW5nLiAgVGhpcyBmdW5jdGlvbiBpcyBtb3N0IGNvbW1vbmx5IHBhc3NlZCB0byA6bW9kOmBzZWxlY3RvcnNgLCB0bwogICAgYWxsb3cgbW9uaXRvcmluZyBtdWx0aXBsZSBzZXJ2ZXJzIGluIHRoZSBzYW1lIHByb2Nlc3MuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA2MDk3ZTdhLi5mYzY5YTgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtNjQ5LDYgKzY0OSw5IEBACiAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBjb2x1bW4gbmFtZXMuIEltbWVkaWF0ZWx5IGFmdGVyIGEgcXVlcnksCiAgICAgICBpdCBpcyB0aGUgZmlyc3QgbWVtYmVyIG9mIGVhY2ggdHVwbGUgaW4gOmF0dHI6YEN1cnNvci5kZXNjcmlwdGlvbmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIHNsaWNpbmcuCisKIExldCdzIGFzc3VtZSB3ZSBpbml0aWFsaXplIGEgdGFibGUgYXMgaW4gdGhlIGV4YW1wbGUgZ2l2ZW4gYWJvdmU6OgogCiAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCI6bWVtb3J5OiIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCAyMzNkZThkLi40MDc1MTM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTMxNSw2ICszMTUsOCBAQAogCiAgICBGb3IgYWxtb3N0IGFsbCBhcHBsaWNhdGlvbnMgOmZ1bmM6YG9zLnVyYW5kb21gIGlzIHByZWZlcmFibGUuCiAKKyAgIEZvciBhbG1vc3QgYWxsIGFwcGxpY2F0aW9ucyA6ZnVuYzpgb3MudXJhbmRvbWAgaXMgcHJlZmVyYWJsZS4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGZ1bmN0aW9uOjogUkFORF9zdGF0dXMoKQpAQCAtMzM1LDYgKzMzNyw4IEBACiAgICBTZWUgaHR0cDovL2VnZC5zb3VyY2Vmb3JnZS5uZXQvIG9yIGh0dHA6Ly9wcm5nZC5zb3VyY2Vmb3JnZS5uZXQvIGZvciBzb3VyY2VzCiAgICBvZiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb25zLgogCisgICBBdmFpbGFiaWxpdHk6IG5vdCBhdmFpbGFibGUgd2l0aCBMaWJyZVNTTC4KKwogLi4gZnVuY3Rpb246OiBSQU5EX2FkZChieXRlcywgZW50cm9weSkKIAogICAgTWl4IHRoZSBnaXZlbiAqYnl0ZXMqIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKQEAgLTM0Miw2ICszNDYsOSBAQAogICAgc3RyaW5nIChzbyB5b3UgY2FuIGFsd2F5cyB1c2UgOmNvbnN0OmAwLjBgKS4gIFNlZSA6cmZjOmAxNzUwYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24gb24gc291cmNlcyBvZiBlbnRyb3B5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogQ2VydGlmaWNhdGUgaGFuZGxpbmcKIF5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTM1MCwxMCArMzU3LDkgQEAKICAgIFZlcmlmeSB0aGF0ICpjZXJ0KiAoaW4gZGVjb2RlZCBmb3JtYXQgYXMgcmV0dXJuZWQgYnkKICAgIDptZXRoOmBTU0xTb2NrZXQuZ2V0cGVlcmNlcnRgKSBtYXRjaGVzIHRoZSBnaXZlbiAqaG9zdG5hbWUqLiAgVGhlIHJ1bGVzCiAgICBhcHBsaWVkIGFyZSB0aG9zZSBmb3IgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIEhUVFBTIHNlcnZlcnMgYXMgb3V0bGluZWQKLSAgIGluIDpyZmM6YDI4MThgIGFuZCA6cmZjOmA2MTI1YCwgZXhjZXB0IHRoYXQgSVAgYWRkcmVzc2VzIGFyZSBub3QgY3VycmVudGx5Ci0gICBzdXBwb3J0ZWQuIEluIGFkZGl0aW9uIHRvIEhUVFBTLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IKLSAgIGNoZWNraW5nIHRoZSBpZGVudGl0eSBvZiBzZXJ2ZXJzIGluIHZhcmlvdXMgU1NMLWJhc2VkIHByb3RvY29scyBzdWNoIGFzCi0gICBGVFBTLCBJTUFQUywgUE9QUyBhbmQgb3RoZXJzLgorICAgaW4gOnJmYzpgMjgxOGAgYW5kIDpyZmM6YDYxMjVgLiAgSW4gYWRkaXRpb24gdG8gSFRUUFMsIHRoaXMgZnVuY3Rpb24KKyAgIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIHNlcnZlcnMgaW4gdmFyaW91cworICAgU1NMLWJhc2VkIHByb3RvY29scyBzdWNoIGFzIEZUUFMsIElNQVBTLCBQT1BTIGFuZCBvdGhlcnMuCiAKICAgIDpleGM6YENlcnRpZmljYXRlRXJyb3JgIGlzIHJhaXNlZCBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCB0aGUgZnVuY3Rpb24KICAgIHJldHVybnMgbm90aGluZzo6CkBAIC0zNzUsMjIgKzM4MSwzOCBAQAogICAgICAgSUROIEEtbGFiZWxzIHN1Y2ggYXMgYGB3d3cqLnhuLS1wdGhvbi1rdmEub3JnYGAgYXJlIHN0aWxsIHN1cHBvcnRlZCwKICAgICAgIGJ1dCBgYHgqLnB5dGhvbi5vcmdgYCBubyBsb25nZXIgbWF0Y2hlcyBgYHhuLS10ZGEucHl0aG9uLm9yZ2BgLgogCi0uLiBmdW5jdGlvbjo6IGNlcnRfdGltZV90b19zZWNvbmRzKHRpbWVzdHJpbmcpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgTWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLCB3aGVuIHByZXNlbnQgaW4gdGhlIHN1YmplY3RBbHROYW1lIGZpZWxkCisgICAgICBvZiB0aGUgY2VydGlmaWNhdGUsIGlzIG5vdyBzdXBwb3J0ZWQuCiAKLSAgIFJldHVybnMgYSBmbG9hdGluZy1wb2ludCB2YWx1ZSBjb250YWluaW5nIGEgbm9ybWFsIHNlY29uZHMtYWZ0ZXItdGhlLWVwb2NoCi0gICB0aW1lIHZhbHVlLCBnaXZlbiB0aGUgdGltZS1zdHJpbmcgcmVwcmVzZW50aW5nIHRoZSAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiCi0gICBkYXRlIGZyb20gYSBjZXJ0aWZpY2F0ZS4KKy4uIGZ1bmN0aW9uOjogY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lKQogCi0gICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2gsIGdpdmVuIHRoZSBgYGNlcnRfdGltZWBgCisgICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiIGRhdGUgZnJvbSBhCisgICBjZXJ0aWZpY2F0ZSBpbiBgYCIlYiAlZCAlSDolTTolUyAlWSAlWiJgYCBzdHJwdGltZSBmb3JtYXQgKEMKKyAgIGxvY2FsZSkuCiAKLSAgICAgPj4+IGltcG9ydCBzc2wKLSAgICAgPj4+IHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygiTWF5ICA5IDAwOjAwOjAwIDIwMDcgR01UIikKLSAgICAgMTE3ODY5NDAwMC4wCi0gICAgID4+PiBpbXBvcnQgdGltZQotICAgICA+Pj4gdGltZS5jdGltZShzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoIk1heSAgOSAwMDowMDowMCAyMDA3IEdNVCIpKQotICAgICAnV2VkIE1heSAgOSAwMDowMDowMCAyMDA3JworICAgSGVyZSdzIGFuIGV4YW1wbGU6CiAKLS4uIGZ1bmN0aW9uOjogZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShhZGRyLCBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MywgY2FfY2VydHM9Tm9uZSkKKyAgIC4uIGRvY3Rlc3Q6OiBuZXdjb250ZXh0CisKKyAgICAgID4+PiBpbXBvcnQgc3NsCisgICAgICA+Pj4gdGltZXN0YW1wID0gc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiKQorICAgICAgPj4+IHRpbWVzdGFtcAorICAgICAgMTUxNTE0NDg4MworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisgICAgICA+Pj4gcHJpbnQoZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApKQorICAgICAgMjAxOC0wMS0wNSAwOTozNDo0MworCisgICAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiIGRhdGVzIG11c3QgdXNlIEdNVCAoOnJmYzpgNTI4MGApLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSW50ZXJwcmV0IHRoZSBpbnB1dCB0aW1lIGFzIGEgdGltZSBpbiBVVEMgYXMgc3BlY2lmaWVkIGJ5ICdHTVQnCisgICAgICB0aW1lem9uZSBpbiB0aGUgaW5wdXQgc3RyaW5nLiBMb2NhbCB0aW1lem9uZSB3YXMgdXNlZAorICAgICAgcHJldmlvdXNseS4gUmV0dXJuIGFuIGludGVnZXIgKG5vIGZyYWN0aW9ucyBvZiBhIHNlY29uZCBpbiB0aGUKKyAgICAgIGlucHV0IGZvcm1hdCkKKworLi4gZnVuY3Rpb246OiBnZXRfc2VydmVyX2NlcnRpZmljYXRlKGFkZHIsIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSkKIAogICAgR2l2ZW4gdGhlIGFkZHJlc3MgYGBhZGRyYGAgb2YgYW4gU1NMLXByb3RlY3RlZCBzZXJ2ZXIsIGFzIGEgKCpob3N0bmFtZSosCiAgICAqcG9ydC1udW1iZXIqKSBwYWlyLCBmZXRjaGVzIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSwgYW5kIHJldHVybnMgaXQgYXMgYQpAQCAtNDA0LDYgKzQyNiwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IElQdjYtY29tcGF0aWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBkZWZhdWx0ICpzc2xfdmVyc2lvbiogaXMgY2hhbmdlZCBmcm9tIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2AgdG8KKyAgICAgIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgd2l0aCBtb2Rlcm4gc2VydmVycy4KKwogLi4gZnVuY3Rpb246OiBERVJfY2VydF90b19QRU1fY2VydChERVJfY2VydF9ieXRlcykKIAogICAgR2l2ZW4gYSBjZXJ0aWZpY2F0ZSBhcyBhIERFUi1lbmNvZGVkIGJsb2Igb2YgYnl0ZXMsIHJldHVybnMgYSBQRU0tZW5jb2RlZApAQCAtNjcxLDYgKzY5NywxMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gZGF0YTo6IEhBU19BTFBOCisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgorICAgUHJvdG9jb2wgTmVnb3RpYXRpb24qIFRMUyBleHRlbnNpb24gYXMgZGVzY3JpYmVkIGluIDpyZmM6YDczMDFgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEhBU19FQ0RICiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQKQEAgLTc4OCw2ICs4MjEsOCBAQAogICAgICAoYnV0IHBhc3NpbmcgYSBub24temVybyBgYGZsYWdzYGAgYXJndW1lbnQgaXMgbm90IGFsbG93ZWQpCiAgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kKClgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZGFsbCgpYCAod2l0aAogICAgICB0aGUgc2FtZSBsaW1pdGF0aW9uKQorICAgLSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZGZpbGUoKWAgKGJ1dCA6bW9kOmBvcy5zZW5kZmlsZWAgd2lsbCBiZSB1c2VkCisgICAgIGZvciBwbGFpbi10ZXh0IHNvY2tldHMgb25seSwgZWxzZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZCgpYCB3aWxsIGJlIHVzZWQpCiAgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zaHV0ZG93bigpYAogCiAgICBIb3dldmVyLCBzaW5jZSB0aGUgU1NMIChhbmQgVExTKSBwcm90b2NvbCBoYXMgaXRzIG93biBmcmFtaW5nIGF0b3AKQEAgLTc5OCw2ICs4MzMsMTUgQEAKICAgIFVzdWFsbHksIDpjbGFzczpgU1NMU29ja2V0YCBhcmUgbm90IGNyZWF0ZWQgZGlyZWN0bHksIGJ1dCB1c2luZyB0aGUKICAgIDpmdW5jOmB3cmFwX3NvY2tldGAgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YHNlbmRmaWxlYCBtZXRob2Qgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmBzaHV0ZG93bmAgZG9lcyBub3QgcmVzZXQgdGhlIHNvY2tldCB0aW1lb3V0IGVhY2ggdGltZSBieXRlcworICAgICAgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbgorICAgICAgb2YgdGhlIHNodXRkb3duLgorCisKIFNTTCBzb2NrZXRzIGFsc28gaGF2ZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogLi4gbWV0aG9kOjogU1NMU29ja2V0LnJlYWQobGVuPTAsIGJ1ZmZlcj1Ob25lKQpAQCAtODEyLDYgKzg1NiwxMSBAQAogICAgQXMgYXQgYW55IHRpbWUgYSByZS1uZWdvdGlhdGlvbiBpcyBwb3NzaWJsZSwgYSBjYWxsIHRvIDptZXRoOmByZWFkYCBjYW4gYWxzbwogICAgY2F1c2Ugd3JpdGUgb3BlcmF0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCisgICAgICBieXRlcy4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LndyaXRlKGJ1ZikKIAogICAgV3JpdGUgKmJ1ZiogdG8gdGhlIFNTTCBzb2NrZXQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFRoZQpAQCAtODIzLDYgKzg3MiwxMCBAQAogICAgQXMgYXQgYW55IHRpbWUgYSByZS1uZWdvdGlhdGlvbiBpcyBwb3NzaWJsZSwgYSBjYWxsIHRvIDptZXRoOmB3cml0ZWAgY2FuCiAgICBhbHNvIGNhdXNlIHJlYWQgb3BlcmF0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KKyAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KKwogLi4gbm90ZTo6CiAKICAgIFRoZSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYCBhbmQgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgIG1ldGhvZHMgYXJlIHRoZQpAQCAtODQ0LDYgKzg5NywxMCBAQAogICAgICAgOmF0dHI6YH5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhdHRyaWJ1dGUgb2YgdGhlIHNvY2tldCdzCiAgICAgICA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YCBpcyB0cnVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIG9mIHRoZSBoYW5kc2hha2UuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5nZXRwZWVyY2VydChiaW5hcnlfZm9ybT1GYWxzZSkKIAogICAgSWYgdGhlcmUgaXMgbm8gY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNvbm5lY3Rpb24sCkBAIC05MTcsNiArOTc0LDE3IEBACiAgICB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGl0cyB1c2UsIGFuZCB0aGUgbnVtYmVyIG9mIHNlY3JldAogICAgYml0cyBiZWluZyB1c2VkLiAgSWYgbm8gY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZCwgcmV0dXJucyBgYE5vbmVgYC4KIAorLi4gbWV0aG9kOjogU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzKCkKKworICAgUmV0dXJuIHRoZSBsaXN0IG9mIGNpcGhlcnMgc2hhcmVkIGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2UuICBFYWNoCisgICBlbnRyeSBvZiB0aGUgcmV0dXJuZWQgbGlzdCBpcyBhIHRocmVlLXZhbHVlIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlCisgICBjaXBoZXIsIHRoZSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGl0cyB1c2UsIGFuZCB0aGUgbnVtYmVyCisgICBvZiBzZWNyZXQgYml0cyB0aGUgY2lwaGVyIHVzZXMuICA6bWV0aDpgflNTTFNvY2tldC5zaGFyZWRfY2lwaGVyc2AgcmV0dXJucworICAgYGBOb25lYGAgaWYgbm8gY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZCBvciB0aGUgc29ja2V0IGlzIGEgY2xpZW50CisgICBzb2NrZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQuY29tcHJlc3Npb24oKQogCiAgICBSZXR1cm4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiZWluZyB1c2VkIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYApAQCAtOTQwLDEyICsxMDA4LDIyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKKyAgIFJldHVybiB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlLiAgSWYKKyAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9hbHBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIGlmIHRoZSBvdGhlciBwYXJ0eSBkb2VzCisgICBub3Qgc3VwcG9ydCBBTFBOLCBpZiB0aGlzIHNvY2tldCBkb2VzIG5vdCBzdXBwb3J0IGFueSBvZiB0aGUgY2xpZW50J3MKKyAgIHByb3Bvc2VkIHByb3RvY29scywgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IGhhcHBlbmVkIHlldCwgYGBOb25lYGAgaXMKKyAgIHJldHVybmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAKLSAgIFJldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTL1NTTCBoYW5kc2hha2UuIElmCi0gICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIG9yIGlmIHRoZSBvdGhlciBwYXJ0eQotICAgZG9lcyBub3Qgc3VwcG9ydCBOUE4sIG9yIGlmIHRoZSBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgaGFwcGVuZWQsIHRoaXMgd2lsbAotICAgcmV0dXJuIGBgTm9uZWBgLgorICAgUmV0dXJuIHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMvU1NMCisgICBoYW5kc2hha2UuIElmIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgb3IKKyAgIGlmIHRoZSBvdGhlciBwYXJ0eSBkb2VzIG5vdCBzdXBwb3J0IE5QTiwgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IHlldAorICAgaGFwcGVuZWQsIHRoaXMgd2lsbCByZXR1cm4gYGBOb25lYGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC05NTcsNiArMTAzNSwxNiBAQAogICAgcmV0dXJuZWQgc29ja2V0IHNob3VsZCBhbHdheXMgYmUgdXNlZCBmb3IgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhlCiAgICBvdGhlciBzaWRlIG9mIHRoZSBjb25uZWN0aW9uLCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgc29ja2V0LgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQudmVyc2lvbigpCisKKyAgIFJldHVybiB0aGUgYWN0dWFsIFNTTCBwcm90b2NvbCB2ZXJzaW9uIG5lZ290aWF0ZWQgYnkgdGhlIGNvbm5lY3Rpb24KKyAgIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYCBpcyBubyBzZWN1cmUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KKyAgIEFzIG9mIHRoaXMgd3JpdGluZywgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlIGBgIlNTTHYyImBgLAorICAgYGAiU1NMdjMiYGAsIGBgIlRMU3YxImBgLCBgYCJUTFN2MS4xImBgIGFuZCBgYCJUTFN2MS4yImBgLgorICAgUmVjZW50IE9wZW5TU0wgdmVyc2lvbnMgbWF5IGRlZmluZSBtb3JlIHJldHVybiB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQucGVuZGluZygpCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsIHBlbmRpbmcgb24KQEAgLTExMzUsNiArMTIyMywyMCBAQAogICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKHByb3RvY29scykKKworICAgU3BlY2lmeSB3aGljaCBwcm90b2NvbHMgdGhlIHNvY2tldCBzaG91bGQgYWR2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUworICAgaGFuZHNoYWtlLiBJdCBzaG91bGQgYmUgYSBsaXN0IG9mIEFTQ0lJIHN0cmluZ3MsIGxpa2UgYGBbJ2h0dHAvMS4xJywKKyAgICdzcGR5LzInXWBgLCBvcmRlcmVkIGJ5IHByZWZlcmVuY2UuIFRoZSBzZWxlY3Rpb24gb2YgYSBwcm90b2NvbCB3aWxsIGhhcHBlbgorICAgZHVyaW5nIHRoZSBoYW5kc2hha2UsIGFuZCB3aWxsIHBsYXkgb3V0IGFjY29yZGluZyB0byA6cmZjOmA3MzAxYC4gQWZ0ZXIgYQorICAgc3VjY2Vzc2Z1bCBoYW5kc2hha2UsIHRoZSA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2xgIG1ldGhvZCB3aWxsCisgICByZXR1cm4gdGhlIGFncmVlZC11cG9uIHByb3RvY29sLgorCisgICBUaGlzIG1ldGhvZCB3aWxsIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlmIDpkYXRhOmBIQVNfQUxQTmAgaXMKKyAgIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhwcm90b2NvbHMpCiAKICAgIFNwZWNpZnkgd2hpY2ggcHJvdG9jb2xzIHRoZSBzb2NrZXQgc2hvdWxkIGFkdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKQEAgLTExNzUsNyArMTI3Nyw3IEBACiAKICAgIER1ZSB0byB0aGUgZWFybHkgbmVnb3RpYXRpb24gcGhhc2Ugb2YgdGhlIFRMUyBjb25uZWN0aW9uLCBvbmx5IGxpbWl0ZWQKICAgIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgYXJlIHVzYWJsZSBsaWtlCi0gICA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbGAgYW5kIDphdHRyOmBTU0xTb2NrZXQuY29udGV4dGAuCisgICA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2xgIGFuZCA6YXR0cjpgU1NMU29ja2V0LmNvbnRleHRgLgogICAgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGAsIDptZXRoOmBTU0xTb2NrZXQuZ2V0cGVlcmNlcnRgLAogICAgOm1ldGg6YFNTTFNvY2tldC5jaXBoZXJgIGFuZCA6bWV0aDpgU1NMU29ja2V0LmNvbXByZXNzYCBtZXRob2RzIHJlcXVpcmUgdGhhdAogICAgdGhlIFRMUyBjb25uZWN0aW9uIGhhcyBwcm9ncmVzc2VkIGJleW9uZCB0aGUgVExTIENsaWVudCBIZWxsbyBhbmQgdGhlcmVmb3JlCkBAIC0xMjUxLDEwICsxMzUzLDIwIEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWx3YXlzIGFsbG93IGEgc2VydmVyX2hvc3RuYW1lIHRvIGJlIHBhc3NlZCwgZXZlbiBpZiBPcGVuU1NMIGRvZXMgbm90CiAgICAgICBoYXZlIFNOSS4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorCisgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTU0xPYmplY3RgIGluc3RhbmNlIGJ5IHdyYXBwaW5nIHRoZSBCSU8gb2JqZWN0cworICAgKmluY29taW5nKiBhbmQgKm91dGdvaW5nKi4gVGhlIFNTTCByb3V0aW5lcyB3aWxsIHJlYWQgaW5wdXQgZGF0YSBmcm9tIHRoZQorICAgaW5jb21pbmcgQklPIGFuZCB3cml0ZSBkYXRhIHRvIHRoZSBvdXRnb2luZyBCSU8uCisKKyAgIFRoZSAqc2VydmVyX3NpZGUqIGFuZCAqc2VydmVyX2hvc3RuYW1lKiBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcworICAgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNlc3Npb25fc3RhdHMoKQogCiAgICBHZXQgc3RhdGlzdGljcyBhYm91dCB0aGUgU1NMIHNlc3Npb25zIGNyZWF0ZWQgb3IgbWFuYWdlZCBieSB0aGlzIGNvbnRleHQuCkBAIC0xNjI3LDcgKzE3MzksNyBAQAogCiBBbmQgZ28gYmFjayB0byBsaXN0ZW5pbmcgZm9yIG5ldyBjbGllbnQgY29ubmVjdGlvbnMgKG9mIGNvdXJzZSwgYSByZWFsIHNlcnZlcgogd291bGQgcHJvYmFibHkgaGFuZGxlIGVhY2ggY2xpZW50IGNvbm5lY3Rpb24gaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIG9yIHB1dAotdGhlIHNvY2tldHMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIHVzZSBhbiBldmVudCBsb29wKS4KK3RoZSBzb2NrZXRzIGluIDpyZWY6YG5vbi1ibG9ja2luZyBtb2RlIDxzc2wtbm9uYmxvY2tpbmc+YCBhbmQgdXNlIGFuIGV2ZW50IGxvb3ApLgogCiAKIC4uIF9zc2wtbm9uYmxvY2tpbmc6CkBAIC0xNjQ5LDYgKzE3NjEsMTIgQEAKICAgc29ja2V0IGZpcnN0LCBhbmQgYXR0ZW1wdHMgdG8gKnJlYWQqIGZyb20gdGhlIFNTTCBzb2NrZXQgbWF5IHJlcXVpcmUKICAgYSBwcmlvciAqd3JpdGUqIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldC4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgIEluIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLCB0aGUgOm1ldGg6YCFTU0xTb2NrZXQuc2VuZGAgbWV0aG9kCisgICAgIHJldHVybmVkIHplcm8gaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YFNTTFdhbnRXcml0ZUVycm9yYCBvcgorICAgICA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYC4KKwogLSBDYWxsaW5nIDpmdW5jOmB+c2VsZWN0LnNlbGVjdGAgdGVsbHMgeW91IHRoYXQgdGhlIE9TLWxldmVsIHNvY2tldCBjYW4gYmUKICAgcmVhZCBmcm9tIChvciB3cml0dGVuIHRvKSwgYnV0IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgdGhlcmUgaXMgc3VmZmljaWVudAogICBkYXRhIGF0IHRoZSB1cHBlciBTU0wgbGF5ZXIuICBGb3IgZXhhbXBsZSwgb25seSBwYXJ0IG9mIGFuIFNTTCBmcmFtZSBtaWdodApAQCAtMTY4MSwxMyArMTc5OSwxNDMgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIFRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc3VwcG9ydHMgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzIGFuZCBwcm92aWRlcyBhCisgICBUaGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHN1cHBvcnRzIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cworICAgPHNzbC1ub25ibG9ja2luZz5gIGFuZCBwcm92aWRlcyBhCiAgICBoaWdoZXIgbGV2ZWwgQVBJLiBJdCBwb2xscyBmb3IgZXZlbnRzIHVzaW5nIHRoZSA6bW9kOmBzZWxlY3RvcnNgIG1vZHVsZSBhbmQKICAgIGhhbmRsZXMgOmV4YzpgU1NMV2FudFdyaXRlRXJyb3JgLCA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYCBhbmQKICAgIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgZXhjZXB0aW9ucy4gSXQgcnVucyB0aGUgU1NMIGhhbmRzaGFrZSBhc3luY2hyb25vdXNseQogICAgYXMgd2VsbC4KIAogCitNZW1vcnkgQklPIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworRXZlciBzaW5jZSB0aGUgU1NMIG1vZHVsZSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi42LCB0aGUgOmNsYXNzOmBTU0xTb2NrZXRgCitjbGFzcyBoYXMgcHJvdmlkZWQgdHdvIHJlbGF0ZWQgYnV0IGRpc3RpbmN0IGFyZWFzIG9mIGZ1bmN0aW9uYWxpdHk6CisKKy0gU1NMIHByb3RvY29sIGhhbmRsaW5nCistIE5ldHdvcmsgSU8KKworVGhlIG5ldHdvcmsgSU8gQVBJIGlzIGlkZW50aWNhbCB0byB0aGF0IHByb3ZpZGVkIGJ5IDpjbGFzczpgc29ja2V0LnNvY2tldGAsCitmcm9tIHdoaWNoIDpjbGFzczpgU1NMU29ja2V0YCBhbHNvIGluaGVyaXRzLiBUaGlzIGFsbG93cyBhbiBTU0wgc29ja2V0IHRvIGJlCit1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgYSByZWd1bGFyIHNvY2tldCwgbWFraW5nIGl0IHZlcnkgZWFzeSB0byBhZGQKK1NTTCBzdXBwb3J0IHRvIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uLgorCitDb21iaW5pbmcgU1NMIHByb3RvY29sIGhhbmRsaW5nIGFuZCBuZXR3b3JrIElPIHVzdWFsbHkgd29ya3Mgd2VsbCwgYnV0IHRoZXJlCithcmUgc29tZSBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0LiBBbiBleGFtcGxlIGlzIGFzeW5jIElPIGZyYW1ld29ya3MgdGhhdCB3YW50IHRvCit1c2UgYSBkaWZmZXJlbnQgSU8gbXVsdGlwbGV4aW5nIG1vZGVsIHRoYW4gdGhlICJzZWxlY3QvcG9sbCBvbiBhIGZpbGUKK2Rlc2NyaXB0b3IiIChyZWFkaW5lc3MgYmFzZWQpIG1vZGVsIHRoYXQgaXMgYXNzdW1lZCBieSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgCithbmQgYnkgdGhlIGludGVybmFsIE9wZW5TU0wgc29ja2V0IElPIHJvdXRpbmVzLiBUaGlzIGlzIG1vc3RseSByZWxldmFudCBmb3IKK3BsYXRmb3JtcyBsaWtlIFdpbmRvd3Mgd2hlcmUgdGhpcyBtb2RlbCBpcyBub3QgZWZmaWNpZW50LiBGb3IgdGhpcyBwdXJwb3NlLCBhCityZWR1Y2VkIHNjb3BlIHZhcmlhbnQgb2YgOmNsYXNzOmBTU0xTb2NrZXRgIGNhbGxlZCA6Y2xhc3M6YFNTTE9iamVjdGAgaXMKK3Byb3ZpZGVkLgorCisuLiBjbGFzczo6IFNTTE9iamVjdAorCisgICBBIHJlZHVjZWQtc2NvcGUgdmFyaWFudCBvZiA6Y2xhc3M6YFNTTFNvY2tldGAgcmVwcmVzZW50aW5nIGFuIFNTTCBwcm90b2NvbAorICAgaW5zdGFuY2UgdGhhdCBkb2VzIG5vdCBjb250YWluIGFueSBuZXR3b3JrIElPIG1ldGhvZHMuIFRoaXMgY2xhc3MgaXMKKyAgIHR5cGljYWxseSB1c2VkIGJ5IGZyYW1ld29yayBhdXRob3JzIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIElPCisgICBmb3IgU1NMIHRocm91Z2ggbWVtb3J5IGJ1ZmZlcnMuCisKKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugb24gdG9wIG9mIGEgbG93LWxldmVsIFNTTCBvYmplY3QgYXMKKyAgIGltcGxlbWVudGVkIGJ5IE9wZW5TU0wuIFRoaXMgb2JqZWN0IGNhcHR1cmVzIHRoZSBzdGF0ZSBvZiBhbiBTU0wgY29ubmVjdGlvbgorICAgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55IG5ldHdvcmsgSU8gaXRzZWxmLiBJTyBuZWVkcyB0byBiZSBwZXJmb3JtZWQgdGhyb3VnaAorICAgc2VwYXJhdGUgIkJJTyIgb2JqZWN0cyB3aGljaCBhcmUgT3BlblNTTCdzIElPIGFic3RyYWN0aW9uIGxheWVyLgorCisgICBBbiA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlCisgICA6bWV0aDpgflNTTENvbnRleHQud3JhcF9iaW9gIG1ldGhvZC4gVGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgdGhlCisgICA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYW5kIGJpbmQgaXQgdG8gYSBwYWlyIG9mIEJJT3MuIFRoZSAqaW5jb21pbmcqCisgICBCSU8gaXMgdXNlZCB0byBwYXNzIGRhdGEgZnJvbSBQeXRob24gdG8gdGhlIFNTTCBwcm90b2NvbCBpbnN0YW5jZSwgd2hpbGUgdGhlCisgICAqb3V0Z29pbmcqIEJJTyBpcyB1c2VkIHRvIHBhc3MgZGF0YSB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBhdmFpbGFibGU6CisKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCisgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmdldHBlZXJjZXJ0YAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2xgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmNpcGhlcmAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnNgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmNvbXByZXNzaW9uYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5wZW5kaW5nYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnVud3JhcGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AKKworICAgV2hlbiBjb21wYXJlZCB0byA6Y2xhc3M6YFNTTFNvY2tldGAsIHRoaXMgb2JqZWN0IGxhY2tzIHRoZSBmb2xsb3dpbmcKKyAgIGZlYXR1cmVzOgorCisgICAtIEFueSBmb3JtIG9mIG5ldHdvcmsgSU8gaW5jbHVnaW5nIG1ldGhvZHMgc3VjaCBhcyBgYHJlY3YoKWBgIGFuZAorICAgICBgYHNlbmQoKWBgLgorCisgICAtIFRoZXJlIGlzIG5vICpkb19oYW5kc2hha2Vfb25fY29ubmVjdCogbWFjaGluZXJ5LiBZb3UgbXVzdCBhbHdheXMgbWFudWFsbHkKKyAgICAgY2FsbCA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIHRvIHN0YXJ0IHRoZSBoYW5kc2hha2UuCisKKyAgIC0gVGhlcmUgaXMgbm8gaGFuZGxpbmcgb2YgKnN1cHByZXNzX3JhZ2dlZF9lb2ZzKi4gQWxsIGVuZC1vZi1maWxlIGNvbmRpdGlvbnMKKyAgICAgdGhhdCBhcmUgaW4gdmlvbGF0aW9uIG9mIHRoZSBwcm90b2NvbCBhcmUgcmVwb3J0ZWQgdmlhIHRoZQorICAgICA6ZXhjOmBTU0xFT0ZFcnJvcmAgZXhjZXB0aW9uLgorCisgICAtIFRoZSBtZXRob2QgOm1ldGg6YH5TU0xTb2NrZXQudW53cmFwYCBjYWxsIGRvZXMgbm90IHJldHVybiBhbnl0aGluZywKKyAgICAgdW5saWtlIGZvciBhbiBTU0wgc29ja2V0IHdoZXJlIGl0IHJldHVybnMgdGhlIHVuZGVybHlpbmcgc29ja2V0LgorCisgICAtIFRoZSAqc2VydmVyX25hbWVfY2FsbGJhY2sqIGNhbGxiYWNrIHBhc3NlZCB0bworICAgICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfc2VydmVybmFtZV9jYWxsYmFja2Agd2lsbCBnZXQgYW4gOmNsYXNzOmBTU0xPYmplY3RgCisgICAgIGluc3RhbmNlIGluc3RlYWQgb2YgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgYXMgaXRzIGZpcnN0IHBhcmFtZXRlci4KKworICAgU29tZSBub3RlcyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgOmNsYXNzOmBTU0xPYmplY3RgOgorCisgICAtIEFsbCBJTyBvbiBhbiA6Y2xhc3M6YFNTTE9iamVjdGAgaXMgOnJlZjpgbm9uLWJsb2NraW5nIDxzc2wtbm9uYmxvY2tpbmc+YC4KKyAgICAgVGhpcyBtZWFucyB0aGF0IGZvciBleGFtcGxlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIHdpbGwgcmFpc2UgYW4KKyAgICAgOmV4YzpgU1NMV2FudFJlYWRFcnJvcmAgaWYgaXQgbmVlZHMgbW9yZSBkYXRhIHRoYW4gdGhlIGluY29taW5nIEJJTyBoYXMKKyAgICAgYXZhaWxhYmxlLgorCisgICAtIFRoZXJlIGlzIG5vIG1vZHVsZS1sZXZlbCBgYHdyYXBfYmlvKClgYCBjYWxsIGxpa2UgdGhlcmUgaXMgZm9yCisgICAgIDptZXRoOmB+U1NMQ29udGV4dC53cmFwX3NvY2tldGAuIEFuIDpjbGFzczpgU1NMT2JqZWN0YCBpcyBhbHdheXMgY3JlYXRlZAorICAgICB2aWEgYW4gOmNsYXNzOmBTU0xDb250ZXh0YC4KKworQW4gU1NMT2JqZWN0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBvdXRzaWRlIHdvcmxkIHVzaW5nIG1lbW9yeSBidWZmZXJzLiBUaGUKK2NsYXNzIDpjbGFzczpgTWVtb3J5QklPYCBwcm92aWRlcyBhIG1lbW9yeSBidWZmZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhpcworcHVycG9zZS4gIEl0IHdyYXBzIGFuIE9wZW5TU0wgbWVtb3J5IEJJTyAoQmFzaWMgSU8pIG9iamVjdDoKKworLi4gY2xhc3M6OiBNZW1vcnlCSU8KKworICAgQSBtZW1vcnkgYnVmZmVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJldHdlZW4gUHl0aG9uIGFuZCBhbiBTU0wKKyAgIHByb3RvY29sIGluc3RhbmNlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBNZW1vcnlCSU8ucGVuZGluZworCisgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjdXJyZW50bHkgaW4gdGhlIG1lbW9yeSBidWZmZXIuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IE1lbW9yeUJJTy5lb2YKKworICAgICAgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IEJJTyBpcyBjdXJyZW50IGF0IHRoZSBlbmQtb2YtZmlsZQorICAgICAgcG9zaXRpb24uCisKKyAgIC4uIG1ldGhvZDo6IE1lbW9yeUJJTy5yZWFkKG49LTEpCisKKyAgICAgIFJlYWQgdXAgdG8gKm4qIGJ5dGVzIGZyb20gdGhlIG1lbW9yeSBidWZmZXIuIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkIG9yCisgICAgICBuZWdhdGl2ZSwgYWxsIGJ5dGVzIGFyZSByZXR1cm5lZC4KKworICAgLi4gbWV0aG9kOjogTWVtb3J5QklPLndyaXRlKGJ1ZikKKworICAgICAgV3JpdGUgdGhlIGJ5dGVzIGZyb20gKmJ1ZiogdG8gdGhlIG1lbW9yeSBCSU8uIFRoZSAqYnVmKiBhcmd1bWVudCBtdXN0IGJlIGFuCisgICAgICBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIHByb3RvY29sLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvCisgICAgICB0aGUgbGVuZ3RoIG9mICpidWYqLgorCisgICAuLiBtZXRob2Q6OiBNZW1vcnlCSU8ud3JpdGVfZW9mKCkKKworICAgICAgV3JpdGUgYW4gRU9GIG1hcmtlciB0byB0aGUgbWVtb3J5IEJJTy4gQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBpdAorICAgICAgaXMgaWxsZWdhbCB0byBjYWxsIDptZXRoOmB+TWVtb3J5QklPLndyaXRlYC4gVGhlIGF0dHJpYnV0ZSA6YXR0cjpgZW9mYCB3aWxsCisgICAgICBiZWNvbWUgdHJ1ZSBhZnRlciBhbGwgZGF0YSBjdXJyZW50bHkgaW4gdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFkLgorCisKIC4uIF9zc2wtc2VjdXJpdHk6CiAKIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0LnJzdCBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CmluZGV4IDI0NzY5ZjYuLjg0NWIyZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgd2Fsa3RyZWUoc3lzLmFyZ3ZbMV0sIHZpc2l0ZmlsZSkKIAotQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNvdmVydCBhIGZpbGUncyBtb2RlIGluIGEgaHVtYW4KK0FuIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBjb252ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgogcmVhZGFibGUgc3RyaW5nOgogCiAuLiBmdW5jdGlvbjo6IGZpbGVtb2RlKG1vZGUpCkBAIC0zOTksMyArMzk5LDI5IEBACiAgICBUaGUgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUuCiAKIFNlZSB0aGUgXCpCU0Qgb3IgTWFjIE9TIHN5c3RlbXMgbWFuIHBhZ2UgOm1hbnBhZ2U6YGNoZmxhZ3MoMilgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitPbiBXaW5kb3dzLCB0aGUgZm9sbG93aW5nIGZpbGUgYXR0cmlidXRlIGNvbnN0YW50cyBhcmUgYXZhaWxhYmxlIGZvciB1c2Ugd2hlbgordGVzdGluZyBiaXRzIGluIHRoZSBgYHN0X2ZpbGVfYXR0cmlidXRlc2BgIG1lbWJlciByZXR1cm5lZCBieSA6ZnVuYzpgb3Muc3RhdGAuCitTZWUgdGhlIGBXaW5kb3dzIEFQSSBkb2N1bWVudGF0aW9uCis8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9nZzI1ODExNy5hc3B4PmBfCitmb3IgbW9yZSBkZXRhaWwgb24gdGhlIG1lYW5pbmcgb2YgdGhlc2UgY29uc3RhbnRzLgorCisuLiBkYXRhOjogRklMRV9BVFRSSUJVVEVfQVJDSElWRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ERVZJQ0UKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9ISURERU4KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9PRkZMSU5FCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9TWVNURU0KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9WSVJUVUFMCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDA1N2UzYWYuLjg5ZDAzMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTM1NCw3ICszNTQsNyBAQAogICAgVGhlIG51bWVyaWMgbGl0ZXJhbHMgYWNjZXB0ZWQgaW5jbHVkZSB0aGUgZGlnaXRzIGBgMGBgIHRvIGBgOWBgIG9yIGFueQogICAgVW5pY29kZSBlcXVpdmFsZW50IChjb2RlIHBvaW50cyB3aXRoIHRoZSBgYE5kYGAgcHJvcGVydHkpLgogCi0gICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL2V4dHJhY3RlZC9EZXJpdmVkTnVtZXJpY1R5cGUudHh0CisgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNy4wLjAvdWNkL2V4dHJhY3RlZC9EZXJpdmVkTnVtZXJpY1R5cGUudHh0CiAgICBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGNvZGUgcG9pbnRzIHdpdGggdGhlIGBgTmRgYCBwcm9wZXJ0eS4KIAogCkBAIC0xOTM3LDYgKzE5MzcsMTYgQEAKICAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5zdHJpcCgnY21vd3ouJykKICAgICAgICdleGFtcGxlJwogCisgICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgdmFsdWVzIGFyZSBzdHJpcHBlZAorICAgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIGxlYWRpbmcgZW5kIHVudGlsCisgICByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIHRoZSBzZXQgb2YKKyAgIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyBwbGFjZSBvbiB0aGUgdHJhaWxpbmcgZW5kLgorICAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSAnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzIgLi4uLi4uLicKKyAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpCisgICAgICAnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzInCisKIAogLi4gbWV0aG9kOjogc3RyLnN3YXBjYXNlKCkKIApAQCAtMjI4OSw2ICsyMjk5LDE5IEBACiAgICA+Pj4gYnl0ZXMuZnJvbWhleCgnMkVmMCBGMWYyICAnKQogICAgYicuXHhmMFx4ZjFceGYyJwogCitBIHJldmVyc2UgY29udmVyc2lvbiBmdW5jdGlvbiBleGlzdHMgdG8gdHJhbnNmb3JtIGEgYnl0ZXMgb2JqZWN0IGludG8gaXRzCitoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KKworLi4gbWV0aG9kOjogYnl0ZXMuaGV4KCkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgIGJ5dGUgaW4gdGhlIGluc3RhbmNlLgorCisgICA+Pj4gYidceGYwXHhmMVx4ZjInLmhleCgpCisgICAnZjBmMWYyJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogU2luY2UgYnl0ZXMgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzIChha2luIHRvIGEgdHVwbGUpLCBmb3IgYSBieXRlcwogb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcwogb2JqZWN0IG9mIGxlbmd0aCAxLiAgKFRoaXMgY29udHJhc3RzIHdpdGggdGV4dCBzdHJpbmdzLCB3aGVyZSBib3RoIGluZGV4aW5nCkBAIC0yMzQ0LDYgKzIzNjcsMTkgQEAKICAgID4+PiBieXRlYXJyYXkuZnJvbWhleCgnMkVmMCBGMWYyICAnKQogICAgYnl0ZWFycmF5KGInLlx4ZjBceGYxXHhmMicpCiAKK0EgcmV2ZXJzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cyB0byB0cmFuc2Zvcm0gYSBieXRlYXJyYXkgb2JqZWN0IGludG8gaXRzCitoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KKworLi4gbWV0aG9kOjogYnl0ZWFycmF5LmhleCgpCisKKyAgIFJldHVybiBhIHN0cmluZyBvYmplY3QgY29udGFpbmluZyB0d28gaGV4YWRlY2ltYWwgZGlnaXRzIGZvciBlYWNoCisgICBieXRlIGluIHRoZSBpbnN0YW5jZS4KKworICAgPj4+IGJ5dGVhcnJheShiJ1x4ZjBceGYxXHhmMicpLmhleCgpCisgICAnZjBmMWYyJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogU2luY2UgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyAoYWtpbiB0byBhIGxpc3QpLCBmb3IgYQogYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUgYGBiWzA6MV1gYCB3aWxsIGJlCiBhIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlCkBAIC0zMDg5LDYgKzMxMjUsMjAzIEBACiAgICAgICBhbHdheXMgcHJvZHVjZXMgYSBuZXcgb2JqZWN0LCBldmVuIGlmIG5vIGNoYW5nZXMgd2VyZSBtYWRlLgogCiAKKy4uIF9ieXRlcy1mb3JtYXR0aW5nOgorCitgYHByaW50ZmBgLXN0eWxlIEJ5dGVzIEZvcm1hdHRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBieXRlcyAoJSkKKyAgIHNpbmdsZTogZm9ybWF0dGluZywgYnl0ZWFycmF5ICglKQorICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBieXRlcyAoJSkKKyAgIHNpbmdsZTogaW50ZXJwb2xhdGlvbiwgYnl0ZWFycmF5ICglKQorICAgc2luZ2xlOiBieXRlczsgZm9ybWF0dGluZworICAgc2luZ2xlOiBieXRlYXJyYXk7IGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogYnl0ZXM7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogYnl0ZWFycmF5OyBpbnRlcnBvbGF0aW9uCisgICBzaW5nbGU6IHByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCisgICBzaW5nbGU6IHNwcmludGYtc3R5bGUgZm9ybWF0dGluZworICAgc2luZ2xlOiAlIGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogJSBpbnRlcnBvbGF0aW9uCisKKy4uIG5vdGU6OgorCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgSWYgdGhlIHZhbHVlIGJlaW5nIHByaW50ZWQgbWF5IGJlIGEgdHVwbGUgb3IKKyAgIGRpY3Rpb25hcnksIHdyYXAgaXQgaW4gYSB0dXBsZS4KKworQnl0ZXMgb2JqZWN0cyAoYGBieXRlc2BgL2BgYnl0ZWFycmF5YGApIGhhdmUgb25lIHVuaXF1ZSBidWlsdC1pbiBvcGVyYXRpb246Cit0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCitUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIGJ5dGVzICpmb3JtYXR0aW5nKiBvciAqaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuCitHaXZlbiBgYGZvcm1hdCAlIHZhbHVlc2BgICh3aGVyZSAqZm9ybWF0KiBpcyBhIGJ5dGVzIG9iamVjdCksIGBgJWBgIGNvbnZlcnNpb24KK3NwZWNpZmljYXRpb25zIGluICpmb3JtYXQqIGFyZSByZXBsYWNlZCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCisKK0lmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCitvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCitpdGVtcyBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBieXRlcyBvYmplY3QsIG9yIGEgc2luZ2xlIG1hcHBpbmcgb2JqZWN0IChmb3IKK2V4YW1wbGUsIGEgZGljdGlvbmFyeSkuCisKK0EgY29udmVyc2lvbiBzcGVjaWZpZXIgY29udGFpbnMgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBhbmQgaGFzIHRoZSBmb2xsb3dpbmcKK2NvbXBvbmVudHMsIHdoaWNoIG11c3Qgb2NjdXIgaW4gdGhpcyBvcmRlcjoKKworIy4gVGhlIGBgJyUnYGAgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIHNwZWNpZmllci4KKworIy4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgKGZvciBleGFtcGxlLCBgYChzb21lbmFtZSlgYCkuCisKKyMuIENvbnZlcnNpb24gZmxhZ3MgKG9wdGlvbmFsKSwgd2hpY2ggYWZmZWN0IHRoZSByZXN1bHQgb2Ygc29tZSBjb252ZXJzaW9uCisgICB0eXBlcy4KKworIy4gTWluaW11bSBmaWVsZCB3aWR0aCAob3B0aW9uYWwpLiAgSWYgc3BlY2lmaWVkIGFzIGFuIGBgJyonYGAgKGFzdGVyaXNrKSwgdGhlCisgICBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlCisgICBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGUgbWluaW11bSBmaWVsZCB3aWR0aCBhbmQgb3B0aW9uYWwgcHJlY2lzaW9uLgorCisjLiBQcmVjaXNpb24gKG9wdGlvbmFsKSwgZ2l2ZW4gYXMgYSBgYCcuJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZSBwcmVjaXNpb24uICBJZgorICAgc3BlY2lmaWVkIGFzIGBgJyonYGAgKGFuIGFzdGVyaXNrKSwgdGhlIGFjdHVhbCBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0CisgICBlbGVtZW50IG9mIHRoZSB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZQorICAgcHJlY2lzaW9uLgorCisjLiBMZW5ndGggbW9kaWZpZXIgKG9wdGlvbmFsKS4KKworIy4gQ29udmVyc2lvbiB0eXBlLgorCitXaGVuIHRoZSByaWdodCBhcmd1bWVudCBpcyBhIGRpY3Rpb25hcnkgKG9yIG90aGVyIG1hcHBpbmcgdHlwZSksIHRoZW4gdGhlCitmb3JtYXRzIGluIHRoZSBieXRlcyBvYmplY3QgKm11c3QqIGluY2x1ZGUgYSBwYXJlbnRoZXNpc2VkIG1hcHBpbmcga2V5IGludG8gdGhhdAorZGljdGlvbmFyeSBpbnNlcnRlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYGAnJSdgYCBjaGFyYWN0ZXIuIFRoZSBtYXBwaW5nIGtleQorc2VsZWN0cyB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGZyb20gdGhlIG1hcHBpbmcuICBGb3IgZXhhbXBsZToKKworICAgPj4+IHByaW50KGInJShsYW5ndWFnZSlzIGhhcyAlKG51bWJlcikwM2QgcXVvdGUgdHlwZXMuJyAlCisgICAuLi4gICAgICAge2InbGFuZ3VhZ2UnOiBiIlB5dGhvbiIsIGIibnVtYmVyIjogMn0pCisgICBiJ1B5dGhvbiBoYXMgMDAyIHF1b3RlIHR5cGVzLicKKworSW4gdGhpcyBjYXNlIG5vIGBgKmBgIHNwZWNpZmllcnMgbWF5IG9jY3VyIGluIGEgZm9ybWF0IChzaW5jZSB0aGV5IHJlcXVpcmUgYQorc2VxdWVudGlhbCBwYXJhbWV0ZXIgbGlzdCkuCisKK1RoZSBjb252ZXJzaW9uIGZsYWcgY2hhcmFjdGVycyBhcmU6CisKKystLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBGbGFnICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgYGAnIydgYCB8IFRoZSB2YWx1ZSBjb252ZXJzaW9uIHdpbGwgdXNlIHRoZSAiYWx0ZXJuYXRlIGZvcm0iICh3aGVyZSBkZWZpbmVkICAgfAorfCAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnMCdgYCB8IFRoZSBjb252ZXJzaW9uIHdpbGwgYmUgemVybyBwYWRkZWQgZm9yIG51bWVyaWMgdmFsdWVzLiAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJy0nYGAgfCBUaGUgY29udmVydGVkIHZhbHVlIGlzIGxlZnQgYWRqdXN0ZWQgKG92ZXJyaWRlcyB0aGUgYGAnMCdgYCAgICAgICAgIHwKK3wgICAgICAgICB8IGNvbnZlcnNpb24gaWYgYm90aCBhcmUgZ2l2ZW4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJyAnYGAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5IHwKK3wgICAgICAgICB8IHN0cmluZykgcHJvZHVjZWQgYnkgYSBzaWduZWQgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJysnYGAgfCBBIHNpZ24gY2hhcmFjdGVyIChgYCcrJ2BgIG9yIGBgJy0nYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgIHwKK3wgICAgICAgICB8IChvdmVycmlkZXMgYSAic3BhY2UiIGZsYWcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0EgbGVuZ3RoIG1vZGlmaWVyIChgYGhgYCwgYGBsYGAsIG9yIGBgTGBgKSBtYXkgYmUgcHJlc2VudCwgYnV0IGlzIGlnbm9yZWQgYXMgaXQKK2lzIG5vdCBuZWNlc3NhcnkgZm9yIFB5dGhvbiAtLSBzbyBlLmcuIGBgJWxkYGAgaXMgaWRlbnRpY2FsIHRvIGBgJWRgYC4KKworVGhlIGNvbnZlcnNpb24gdHlwZXMgYXJlOgorCisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IENvbnZlcnNpb24gfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2QnYGAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2knYGAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ28nYGAgICAgfCBTaWduZWQgb2N0YWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3UnYGAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYCdkJ2BgLiAgICAgICAgfCBcKDgpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3gnYGAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ1gnYGAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2UnYGAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKGxvd2VyY2FzZSkuICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0UnYGAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKHVwcGVyY2FzZSkuICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2YnYGAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0YnYGAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2cnYGAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgbG93ZXJjYXNlIGV4cG9uZW50aWFsICAgfCBcKDQpICB8Cit8ICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0cnYGAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgfCBcKDQpICB8Cit8ICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2MnYGAgICAgfCBTaW5nbGUgYnl0ZSAoYWNjZXB0cyBpbnRlZ2VyIG9yIHNpbmdsZSAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBieXRlIG9iamVjdHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2InYGAgICAgfCBCeXRlcyAoYW55IG9iamVjdCB0aGF0IGZvbGxvd3MgdGhlICAgICAgICAgICAgICAgICAgfCBcKDUpICB8Cit8ICAgICAgICAgICAgfCA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCBvciBoYXMgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCA6bWV0aDpgX19ieXRlc19fYCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3MnYGAgICAgfCBgYCdzJ2BgIGlzIGFuIGFsaWFzIGZvciBgYCdiJ2BgIGFuZCBzaG91bGQgb25seSAgICAgfCBcKDYpICB8Cit8ICAgICAgICAgICAgfCBiZSB1c2VkIGZvciBQeXRob24yLzMgY29kZSBiYXNlcy4gICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2EnYGAgICAgfCBCeXRlcyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgfCBcKDUpICB8Cit8ICAgICAgICAgICAgfCBgYHJlcHIob2JqKS5lbmNvZGUoJ2FzY2lpJywnYmFja3NsYXNocmVwbGFjZSlgYCkuICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3InYGAgICAgfCBgYCdyJ2BgIGlzIGFuIGFsaWFzIGZvciBgYCdhJ2BgIGFuZCBzaG91bGQgb25seSAgICAgfCBcKDcpICB8Cit8ICAgICAgICAgICAgfCBiZSB1c2VkIGZvciBQeXRob24yLzMgY29kZSBiYXNlcy4gICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJyUnYGAgICAgfCBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQsIHJlc3VsdHMgaW4gYSBgYCclJ2BgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisKK05vdGVzOgorCisoMSkKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgYSBsZWFkaW5nIHplcm8gKGBgJzAnYGApIHRvIGJlIGluc2VydGVkIGJldHdlZW4KKyAgIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZSBsZWFkaW5nIGNoYXJhY3RlcgorICAgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uCisKKygyKQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgYGAnMHgnYGAgb3IgYGAnMFgnYGAgKGRlcGVuZGluZyBvbiB3aGV0aGVyCisgICB0aGUgYGAneCdgYCBvciBgYCdYJ2BgIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWQgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZworICAgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90CisgICBhbHJlYWR5IGEgemVyby4KKworKDMpCisgICBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgdG8gYWx3YXlzIGNvbnRhaW4gYSBkZWNpbWFsIHBvaW50LCBldmVuIGlmCisgICBubyBkaWdpdHMgZm9sbG93IGl0LgorCisgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgYW5kCisgICBkZWZhdWx0cyB0byA2LgorCisoNCkKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWwgcG9pbnQsIGFuZAorICAgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZS4KKworICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LgorCisoNSkKKyAgIElmIHByZWNpc2lvbiBpcyBgYE5gYCwgdGhlIG91dHB1dCBpcyB0cnVuY2F0ZWQgdG8gYGBOYGAgY2hhcmFjdGVycy4KKworKDYpCisgICBgYGInJXMnYGAgaXMgZGVwcmVjYXRlZCwgYnV0IHdpbGwgbm90IGJlIHJlbW92ZWQgZHVyaW5nIHRoZSAzLnggc2VyaWVzLgorCisoNykKKyAgIGBgYiclcidgYCBpcyBkZXByZWNhdGVkLCBidXQgd2lsbCBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgdGhlIDMueCBzZXJpZXMuCisKKyg4KQorICAgU2VlIDpwZXA6YDIzN2AuCisKKy4uIG5vdGU6OgorCisgICBUaGUgYnl0ZWFycmF5IHZlcnNpb24gb2YgdGhpcyBtZXRob2QgZG9lcyAqbm90KiBvcGVyYXRlIGluIHBsYWNlIC0gaXQKKyAgIGFsd2F5cyBwcm9kdWNlcyBhIG5ldyBvYmplY3QsIGV2ZW4gaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUuCisKKy4uIHNlZWFsc286OiA6cGVwOmA0NjFgLgorLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIF90eXBlbWVtb3J5dmlldzoKIAogTWVtb3J5IFZpZXdzCkBAIC0zMTE3LDEwICszMzUwLDggQEAKICAgIHRoZSB2aWV3LiBUaGUgOmNsYXNzOmB+bWVtb3J5dmlldy5pdGVtc2l6ZWAgYXR0cmlidXRlIHdpbGwgZ2l2ZSB5b3UgdGhlCiAgICBudW1iZXIgb2YgYnl0ZXMgaW4gYSBzaW5nbGUgZWxlbWVudC4KIAotICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgdG8gZXhwb3NlIGl0cyBkYXRhLiBJZgotICAgOmNsYXNzOmB+bWVtb3J5dmlldy5mb3JtYXRgIGlzIG9uZSBvZiB0aGUgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzCi0gICBmcm9tIHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwgaW5kZXhpbmcgd2lsbCByZXR1cm4gYSBzaW5nbGUgZWxlbWVudAotICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiBGdWxsIHNsaWNpbmcgd2lsbCByZXN1bHQgaW4gYSBzdWJ2aWV3OjoKKyAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBzdXBwb3J0cyBzbGljaW5nIGFuZCBpbmRleGluZyB0byBleHBvc2UgaXRzIGRhdGEuCisgICBPbmUtZGltZW5zaW9uYWwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgogCiAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKICAgICA+Pj4gdlsxXQpAQCAtMzEzMiwyNSArMzM2MywyOSBAQAogICAgID4+PiBieXRlcyh2WzE6NF0pCiAgICAgYidiY2UnCiAKLSAgIE90aGVyIG5hdGl2ZSBmb3JtYXRzOjoKKyAgIElmIDpjbGFzczpgfm1lbW9yeXZpZXcuZm9ybWF0YCBpcyBvbmUgb2YgdGhlIG5hdGl2ZSBmb3JtYXQgc3BlY2lmaWVycworICAgZnJvbSB0aGUgOm1vZDpgc3RydWN0YCBtb2R1bGUsIGluZGV4aW5nIHdpdGggYW4gaW50ZWdlciBvciBhIHR1cGxlIG9mCisgICBpbnRlZ2VycyBpcyBhbHNvIHN1cHBvcnRlZCBhbmQgcmV0dXJucyBhIHNpbmdsZSAqZWxlbWVudCogd2l0aAorICAgdGhlIGNvcnJlY3QgdHlwZS4gIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBjYW4gYmUgaW5kZXhlZAorICAgd2l0aCBhbiBpbnRlZ2VyIG9yIGEgb25lLWludGVnZXIgdHVwbGUuICBNdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cworICAgY2FuIGJlIGluZGV4ZWQgd2l0aCB0dXBsZXMgb2YgZXhhY3RseSAqbmRpbSogaW50ZWdlcnMgd2hlcmUgKm5kaW0qIGlzCisgICB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMuICBaZXJvLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIGNhbiBiZSBpbmRleGVkCisgICB3aXRoIHRoZSBlbXB0eSB0dXBsZS4KKworICAgSGVyZSBpcyBhbiBleGFtcGxlIHdpdGggYSBub24tYnl0ZSBmb3JtYXQ6OgogCiAgICAgICA+Pj4gaW1wb3J0IGFycmF5CiAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQotICAgICAgPj4+IGFbMF0KKyAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgPj4+IG1bMF0KICAgICAgIC0xMTExMTExMQotICAgICAgPj4+IGFbLTFdCisgICAgICA+Pj4gbVstMV0KICAgICAgIDQ0NDQ0NDQ0Ci0gICAgICA+Pj4gYVsyOjNdLnRvbGlzdCgpCi0gICAgICBbLTMzMzMzMzMzXQotICAgICAgPj4+IGFbOjoyXS50b2xpc3QoKQorICAgICAgPj4+IG1bOjoyXS50b2xpc3QoKQogICAgICAgWy0xMTExMTExMSwgLTMzMzMzMzMzXQotICAgICAgPj4+IGFbOjotMV0udG9saXN0KCkKLSAgICAgIFs0NDQ0NDQ0NCwgLTMzMzMzMzMzLCAyMjIyMjIyMiwgLTExMTExMTExXQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotICAgSWYgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHdyaXRhYmxlLCB0aGUgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZQotICAgYXNzaWdubWVudC4gUmVzaXppbmcgaXMgbm90IGFsbG93ZWQ6OgorICAgSWYgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHdyaXRhYmxlLCB0aGUgbWVtb3J5dmlldyBzdXBwb3J0cworICAgb25lLWRpbWVuc2lvbmFsIHNsaWNlIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKIAogICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQogICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCkBAIC0zMTgzLDEyICszNDE4LDE2IEBACiAgICAgICBUcnVlCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3MgY2FuIG5vdyBiZSBzbGljZWQuCiAgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzICdCJywgJ2InIG9yICdjJyBhcmUgbm93IGhhc2hhYmxlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgbWVtb3J5dmlldyBpcyBub3cgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5IHdpdGgKICAgICAgIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgbWVtb3J5dmlld3MgY2FuIG5vdyBiZSBpbmRleGVkIHdpdGggdHVwbGUgb2YgaW50ZWdlcnMuCisKICAgIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHNldmVyYWwgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogX19lcV9fKGV4cG9ydGVyKQpAQCAtMzI1NSw2ICszNDk0LDE3IEBACiAgICAgICBzdXBwb3J0cyBhbGwgZm9ybWF0IHN0cmluZ3MsIGluY2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBub3QgaW4KICAgICAgIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN5bnRheC4KIAorICAgLi4gbWV0aG9kOjogaGV4KCkKKworICAgICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgICAgIGJ5dGUgaW4gdGhlIGJ1ZmZlci4gOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIiYWJjIikKKyAgICAgICAgID4+PiBtLmhleCgpCisgICAgICAgICAnNjE2MjYzJworCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogICAgLi4gbWV0aG9kOjogdG9saXN0KCkKIAogICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiA6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggMTliZGIyMS4uMmJkOGRmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC05NSw2ICs5NSwxMCBAQAogICAgICAgYW4gYXJiaXRyYXJ5IHNldCBvZiBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgIDptZXRoOmBmb3JtYXRgIGlzIGp1c3QgYSB3cmFwcGVyIHRoYXQgY2FsbHMgOm1ldGg6YHZmb3JtYXRgLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICAgICBQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiBoYXMgYmVlbgorICAgICAgICAgZGVwcmVjYXRlZC4KKwogICAgLi4gbWV0aG9kOjogdmZvcm1hdChmb3JtYXRfc3RyaW5nLCBhcmdzLCBrd2FyZ3MpCiAKICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgYWN0dWFsIHdvcmsgb2YgZm9ybWF0dGluZy4gIEl0IGlzIGV4cG9zZWQgYXMgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCAzNmNiZjNjLi45YTJmNGRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMjUsMTA0ICsyNSwzMiBAQAogVXNpbmcgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIE1vZHVsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgZm9sbG93aW5nCi1jb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGFsbCB1c2UgY2FzZXMgdGhleSBjYW4gaGFuZGxlLiBGb3IgbW9yZSBhZHZhbmNlZAotdXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCitUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgOmZ1bmM6YHJ1bmAKK2Z1bmN0aW9uIGZvciBhbGwgdXNlIGNhc2VzIGl0IGNhbiBoYW5kbGUuIEZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlcywgdGhlCit1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KKworVGhlIDpmdW5jOmBydW5gIGZ1bmN0aW9uIHdhcyBhZGRlZCBpbiBQeXRob24gMy41OyBpZiB5b3UgbmVlZCB0byByZXRhaW4KK2NvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucywgc2VlIHRoZSA6cmVmOmBjYWxsLWZ1bmN0aW9uLXRyaW9gIHNlY3Rpb24uCiAKIAotLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCisgICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICByZXR1cm4gdGhlIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwogICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCiAgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSBhcGFydCBmcm9tICp0aW1lb3V0KiwKKyAgICppbnB1dCogYW5kICpjaGVjayosIGFsbCB0aGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHBhc3NlZCB0aHJvdWdoIHRvCisgICB0aGF0IGludGVyZmFjZS4KIAotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQotICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcwotICAgaGFzIHRlcm1pbmF0ZWQuCisgICBUaGlzIGRvZXMgbm90IGNhcHR1cmUgc3Rkb3V0IG9yIHN0ZGVyciBieSBkZWZhdWx0LiBUbyBkbyBzbywgcGFzcworICAgOmRhdGE6YFBJUEVgIGZvciB0aGUgKnN0ZG91dCogYW5kL29yICpzdGRlcnIqIGFyZ3VtZW50cy4KIAotICAgRXhhbXBsZXM6OgotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jYWxsKFsibHMiLCAiLWwiXSkKLSAgICAgIDAKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2FsbCgiZXhpdCAxIiwgc2hlbGw9VHJ1ZSkKLSAgICAgIDEKLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICAqdGltZW91dCogd2FzIGFkZGVkLgotCi0KLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCi0KLSAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgotICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQotICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKLSAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZS4KLQotICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgotICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCi0KLSAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKLSAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKLSAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKLSAgIGhhcyB0ZXJtaW5hdGVkLgotCi0gICBFeGFtcGxlczo6Ci0KLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJscyIsICItbCJdKQotICAgICAgMAotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19jYWxsKCJleGl0IDEiLCBzaGVsbD1UcnVlKQotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgLi4uCi0gICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCi0gICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAotICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCi0gICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KLQotCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBpbnB1dD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQotCi0gICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCi0KLSAgIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCi0gICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3IucmV0dXJuY29kZWAgYXR0cmlidXRlIGFuZCBhbnkgb3V0cHV0IGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3Iub3V0cHV0YCBhdHRyaWJ1dGUuCi0KLSAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KLSAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKLSAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqaW5wdXQqIGFuZCAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0bwotICAgdGhhdCBpbnRlcmZhY2UuICBJbiBhZGRpdGlvbiwgKnN0ZG91dCogaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBhcmd1bWVudCwgYXMKLSAgIGl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBjb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgc3VicHJvY2Vzcy4KLQotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB3YWl0ZWQgZm9yLiAgVGhlCiAgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCiAgICBoYXMgdGVybWluYXRlZC4KIApAQCAtMTMyLDUzICs2MCw2NCBAQAogICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKICAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCiAKKyAgIElmICpjaGVjayogaXMgVHJ1ZSwgYW5kIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub24temVybyBleGl0IGNvZGUsIGEKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBBdHRyaWJ1dGVzIG9mIHRoYXQKKyAgIGV4Y2VwdGlvbiBob2xkIHRoZSBhcmd1bWVudHMsIHRoZSBleGl0IGNvZGUsIGFuZCBzdGRvdXQgYW5kIHN0ZGVyciBpZiB0aGV5CisgICB3ZXJlIGNhcHR1cmVkLgorCiAgICBFeGFtcGxlczo6CiAKLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImVjaG8iLCAiSGVsbG8gV29ybGQhIl0pCi0gICAgICBiJ0hlbGxvIFdvcmxkIVxuJworICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dAorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnXSwgcmV0dXJuY29kZT0wKQogCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJlY2hvIiwgIkhlbGxvIFdvcmxkISJdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgICAgICdIZWxsbyBXb3JsZCFcbicKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsic2VkIiwgIi1lIiwgInMvZm9vL2Jhci8iXSwKLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1iIndoZW4gaW4gdGhlIGNvdXJzZSBvZiBmb29tYW4gZXZlbnRzXG4iKQotICAgICAgYid3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgYmFybWFuIGV2ZW50c1xuJwotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImV4aXQgMSIsIHNoZWxsPVRydWUpCisgICAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oImV4aXQgMSIsIHNoZWxsPVRydWUsIGNoZWNrPVRydWUpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAuLi4KKyAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAotICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCi0gICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKyAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnLCAnL2Rldi9udWxsJ10sIHJldHVybmNvZGU9MCwKKyAgICAgIHN0ZG91dD1iJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBKYW4gMjMgMTY6MjMgL2Rldi9udWxsXG4nKQogCi0gICBUaGlzIGJlaGF2aW91ciBtYXkgYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nICp1bml2ZXJzYWxfbmV3bGluZXMqIHRvCi0gICBgYFRydWVgYCBhcyBkZXNjcmliZWQgYmVsb3cgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAotICAgVG8gYWxzbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZQotICAgYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYDo6CisuLiBjbGFzczo6IENvbXBsZXRlZFByb2Nlc3MKIAotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAotICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCi0gICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKyAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KIAotICAgLi4gbm90ZTo6CisgICAuLiBhdHRyaWJ1dGU6OiBhcmdzCiAKLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisgICAgICBUaGUgYXJndW1lbnRzIHVzZWQgdG8gbGF1bmNoIHRoZSBwcm9jZXNzLiBUaGlzIG1heSBiZSBhIGxpc3Qgb3IgYSBzdHJpbmcuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgLi4gYXR0cmlidXRlOjogcmV0dXJuY29kZQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKyAgICAgIEV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBUeXBpY2FsbHksIGFuIGV4aXQgc3RhdHVzIG9mIDAgaW5kaWNhdGVzCisgICAgICB0aGF0IGl0IHJhbiBzdWNjZXNzZnVsbHkuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40Ci0gICAgICAqaW5wdXQqIHdhcyBhZGRlZC4KKyAgICAgIEEgbmVnYXRpdmUgdmFsdWUgYGAtTmBgIGluZGljYXRlcyB0aGF0IHRoZSBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwKKyAgICAgIGBgTmBgIChQT1NJWCBvbmx5KS4KKworICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRvdXQKKyAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisKKyAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCisgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKKyAgICAgIE5vbmUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgorCisgICAgICBDYXB0dXJlZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3RkZXJyCisgICAgICB3YXMgbm90IGNhcHR1cmVkLgorCisgICAuLiBtZXRob2Q6OiBjaGVja19yZXR1cm5jb2RlKCkKKworICAgICAgSWYgOmF0dHI6YHJldHVybmNvZGVgIGlzIG5vbi16ZXJvLCByYWlzZSBhIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBkYXRhOjogREVWTlVMTAogCkBAIC0yMjUsMTEgKzE2NCwyMiBAQAogCiAgICAgLi4gYXR0cmlidXRlOjogb3V0cHV0CiAKLSAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBieQorICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgaXQgd2FzIGNhcHR1cmVkIGJ5IDpmdW5jOmBydW5gIG9yCiAgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KIAorICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAorCisgICAgICAgIEFsaWFzIGZvciBvdXRwdXQsIGZvciBzeW1tZXRyeSB3aXRoIDphdHRyOmBzdGRlcnJgLgorCisgICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCisKKyAgICAgICAgU3RkZXJyIG91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAuCisgICAgICAgIE90aGVyd2lzZSwgYGBOb25lYGAuCisKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIC4uIGV4Y2VwdGlvbjo6IENhbGxlZFByb2Nlc3NFcnJvcgogCkBAIC0yNDYsOSArMTk2LDIwIEBACiAKICAgICAuLiBhdHRyaWJ1dGU6OiBvdXRwdXQKIAotICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGJ5CisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAgb3IKICAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgogCisgICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgICAgQWxpYXMgZm9yIG91dHB1dCwgZm9yIHN5bW1ldHJ5IHdpdGggOmF0dHI6YHN0ZGVycmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKKworICAgICAgICBTdGRlcnIgb3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIGl0IHdhcyBjYXB0dXJlZCBieSA6ZnVuYzpgcnVuYC4KKyAgICAgICAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIAogLi4gX2ZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHM6CkBAIC02MzUsNiArNTk2LDcgQEAKICAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KKyAgIFRoZSBkYXRhIHdpbGwgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgc3RyaW5ncy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTg1MSw2ICs4MTMsOTYgQEAKIAogICAgVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgOmRhdGE6YENSRUFURV9ORVdfQ09OU09MRWAgaXMgc3BlY2lmaWVkLgogCisuLiBfY2FsbC1mdW5jdGlvbi10cmlvOgorCitPbGRlciBoaWdoLWxldmVsIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHJpb3IgdG8gUHl0aG9uIDMuNSwgdGhlc2UgdGhyZWUgZnVuY3Rpb25zIGNvbXByaXNlZCB0aGUgaGlnaCBsZXZlbCBBUEkgdG8KK3N1YnByb2Nlc3MuIFlvdSBjYW4gbm93IHVzZSA6ZnVuYzpgcnVuYCBpbiBtYW55IGNhc2VzLCBidXQgbG90cyBvZiBleGlzdGluZyBjb2RlCitjYWxscyB0aGVzZSBmdW5jdGlvbnMuCisKKy4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisKKyAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgorICAgcmV0dXJuIHRoZSA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgorCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgorCisgICAgICAgcnVuKC4uLikucmV0dXJuY29kZQorCisgICAoZXhjZXB0IHRoYXQgdGhlICppbnB1dCogYW5kICpjaGVjayogcGFyYW1ldGVycyBhcmUgbm90IHN1cHBvcnRlZCkKKworICAgLi4gbm90ZTo6CisKKyAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKKyAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCisgICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKKyAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisuLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KKyAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uLCBjaGVjaz1UcnVlKQorCisgICAoZXhjZXB0IHRoYXQgdGhlICppbnB1dCogcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQpCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCisgICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAorICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCisgICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKworCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBpbnB1dD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCisKKyAgIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCisgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZQorICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3IucmV0dXJuY29kZWAgYXR0cmlidXRlIGFuZCBhbnkgb3V0cHV0IGluIHRoZQorICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3Iub3V0cHV0YCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uLCBjaGVjaz1UcnVlLCBzdGRvdXQ9UElQRSkuc3Rkb3V0CisKKyAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAorICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCisgICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKworICAgVGhpcyBiZWhhdmlvdXIgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyAqdW5pdmVyc2FsX25ld2xpbmVzKiB0bworICAgYGBUcnVlYGAgYXMgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLgorCisgICBUbyBhbHNvIGNhcHR1cmUgc3RhbmRhcmQgZXJyb3IgaW4gdGhlIHJlc3VsdCwgdXNlCisgICBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgOjoKKworICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCisgICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKKyAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgKmlucHV0KiB3YXMgYWRkZWQuCiAKIC4uIF9zdWJwcm9jZXNzLXJlcGxhY2VtZW50czoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0IGIvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0CmluZGV4IDI1MDNkMzMuLmJhMmNhZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5bXRhYmxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeW10YWJsZS5yc3QKQEAgLTcxLDEwICs3MSw2IEBACiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgYmxvY2sgdXNlcyBgYGV4ZWNgYC4KIAotICAgLi4gbWV0aG9kOjogaGFzX2ltcG9ydF9zdGFyKCkKLQotICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBibG9jayB1c2VzIGEgc3RhcnJlZCBmcm9tLWltcG9ydC4KLQogICAgLi4gbWV0aG9kOjogZ2V0X2lkZW50aWZpZXJzKCkKIAogICAgICAgUmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBvZiBzeW1ib2xzIGluIHRoaXMgdGFibGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCAzMDI0MDg2Li45ZDYyODM1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCiAuLiBkYXRhOjogZG9udF93cml0ZV9ieXRlY29kZQogCi0gICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgZmlsZXMgb24gdGhlCiAgICBpbXBvcnQgb2Ygc291cmNlIG1vZHVsZXMuICBUaGlzIHZhbHVlIGlzIGluaXRpYWxseSBzZXQgdG8gYGBUcnVlYGAgb3IKICAgIGBgRmFsc2VgYCBkZXBlbmRpbmcgb24gdGhlIDpvcHRpb246YC1CYCBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCB0aGUKICAgIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gc2V0IGl0CkBAIC01NzYsNiArNTc2LDE4IEBACiAgICAgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfY29yb3V0aW5lX3dyYXBwZXIoKQorCisgICBSZXR1cm5zIGBgTm9uZWBgLCBvciBhIHdyYXBwZXIgc2V0IGJ5IDpmdW5jOmBzZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogaGFzaF9pbmZvCiAKICAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaApAQCAtNzE4LDYgKzczMCwxNCBAQAogICAgdmFsdWUgb2YgOmZ1bmM6YGludGVybmAgYXJvdW5kIHRvIGJlbmVmaXQgZnJvbSBpdC4KIAogCisuLiBmdW5jdGlvbjo6IGlzX2ZpbmFsaXppbmcoKQorCisgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgUHl0aG9uIGludGVycHJldGVyIGlzCisgICA6dGVybTpgc2h1dHRpbmcgZG93biA8aW50ZXJwcmV0ZXIgc2h1dGRvd24+YCwgOmNvbnN0OmBGYWxzZWAgb3RoZXJ3aXNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBkYXRhOjogbGFzdF90eXBlCiAgICAgICAgICAgbGFzdF92YWx1ZQogICAgICAgICAgIGxhc3RfdHJhY2ViYWNrCkBAIC0xMDUzLDYgKzEwNzMsNDIgQEAKICAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKworICAgQWxsb3dzIHRvIGludGVyY2VwdCBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzLgorCisgICAqd3JhcHBlciogbXVzdCBiZSBlaXRoZXI6CisKKyAgICogYSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgb25lIGFyZ3VtZW50IChhIGNvcm91dGluZSBvYmplY3QpOworICAgKiBgYE5vbmVgYCwgdG8gcmVzZXQgdGhlIHdyYXBwZXIuCisKKyAgIElmIGNhbGxlZCB0d2ljZSwgdGhlIG5ldyB3cmFwcGVyIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUuICBUaGUgZnVuY3Rpb24KKyAgIGlzIHRocmVhZC1zcGVjaWZpYy4KKworICAgVGhlICp3cmFwcGVyKiBjYWxsYWJsZSBjYW5ub3QgZGVmaW5lIG5ldyBjb3JvdXRpbmVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHk6OgorCisgICAgICAgIGRlZiB3cmFwcGVyKGNvcm8pOgorICAgICAgICAgICAgYXN5bmMgZGVmIHdyYXAoY29ybyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvcm8KKyAgICAgICAgICAgIHJldHVybiB3cmFwKGNvcm8pCisgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIGZhaWwgd2l0aCBhIFJ1bnRpbWVFcnJvciwgYmVjYXVzZQorICAgICAgICAjIGB3cmFwcGVyYCBjcmVhdGVzIGEgYHdyYXAoY29ybylgIGNvcm91dGluZToKKyAgICAgICAgZm9vKCkKKworICAgU2VlIGFsc28gOmZ1bmM6YGdldF9jb3JvdXRpbmVfd3JhcHBlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KKworICAgLi4gbm90ZTo6CisgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIG9uIGEgcHJvdmlzaW9uYWwgYmFzaXMgKHNlZSA6cGVwOmA0MTFgCisgICAgICBmb3IgZGV0YWlscy4pICBVc2UgaXQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgorCisKIC4uIGRhdGE6OiBzdGRpbgogICAgICAgICAgIHN0ZG91dAogICAgICAgICAgIHN0ZGVycgpAQCAtMTIyMyw0ICsxMjc5LDMgQEAKIC4uIHJ1YnJpYzo6IENpdGF0aW9ucwogCiAuLiBbQzk5XSBJU08vSUVDIDk4OTk6MTk5OS4gICJQcm9ncmFtbWluZyBsYW5ndWFnZXMgLS0gQy4iICBBIHB1YmxpYyBkcmFmdCBvZiB0aGlzIHN0YW5kYXJkIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cxNC93d3cvZG9jcy9uMTI1Ni5wZGZcIC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAppbmRleCAwNWYyOWFkLi5hZGFjYjBhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdApAQCAtNjIsNiArNjIsMjMgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdyOnh6J2BgICAgICAgIHwgT3BlbiBmb3IgcmVhZGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24uICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAneCdgYCBvciAgICAgICB8IENyZWF0ZSBhIHRhcmZpbGUgZXhjbHVzaXZlbHkgd2l0aG91dCAgICAgICAgfAorICAgfCBgYCd4OidgYCAgICAgICAgIHwgY29tcHJlc3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBSYWlzZSBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IGlmIGl0IGlzIGFscmVhZHkgZXhpc3RzLiAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3g6Z3onYGAgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIHdpdGggZ3ppcCBjb21wcmVzc2lvbi4gICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IFJhaXNlIGFuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgZXhjZXB0aW9uICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgaWYgaXQgaXMgYWxyZWFkeSBleGlzdHMuICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAneDpiejInYGAgICAgICB8IENyZWF0ZSBhIHRhcmZpbGUgd2l0aCBiemlwMiBjb21wcmVzc2lvbi4gICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd4Onh6J2BgICAgICAgIHwgQ3JlYXRlIGEgdGFyZmlsZSB3aXRoIGx6bWEgY29tcHJlc3Npb24uICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBSYWlzZSBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IGlmIGl0IGlzIGFscmVhZHkgZXhpc3RzLiAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ2EnIG9yICdhOidgYCAgfCBPcGVuIGZvciBhcHBlbmRpbmcgd2l0aCBubyBjb21wcmVzc2lvbi4gVGhlIHwKICAgIHwgICAgICAgICAgICAgICAgICB8IGZpbGUgaXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4gICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC04Miw5ICs5OSw5IEBACiAgICBJZiAqZmlsZW9iaiogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgOnRlcm06YGZpbGUgb2JqZWN0YAogICAgb3BlbmVkIGluIGJpbmFyeSBtb2RlIGZvciAqbmFtZSouIEl0IGlzIHN1cHBvc2VkIHRvIGJlIGF0IHBvc2l0aW9uIDAuCiAKLSAgIEZvciBtb2RlcyBgYCd3Omd6J2BgLCBgYCdyOmd6J2BgLCBgYCd3OmJ6MidgYCwgYGAncjpiejInYGAsIDpmdW5jOmB0YXJmaWxlLm9wZW5gCi0gICBhY2NlcHRzIHRoZSBrZXl3b3JkIGFyZ3VtZW50ICpjb21wcmVzc2xldmVsKiB0byBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbiBsZXZlbCBvZgotICAgdGhlIGZpbGUuCisgICBGb3IgbW9kZXMgYGAndzpneidgYCwgYGAncjpneidgYCwgYGAndzpiejInYGAsIGBgJ3I6YnoyJ2BgLCBgYCd4Omd6J2BgLAorICAgYGAneDpiejInYGAsIDpmdW5jOmB0YXJmaWxlLm9wZW5gIGFjY2VwdHMgdGhlIGtleXdvcmQgYXJndW1lbnQKKyAgICpjb21wcmVzc2xldmVsKiB0byBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbiBsZXZlbCBvZiB0aGUgZmlsZS4KIAogICAgRm9yIHNwZWNpYWwgcHVycG9zZXMsIHRoZXJlIGlzIGEgc2Vjb25kIGZvcm1hdCBmb3IgKm1vZGUqOgogICAgYGAnZmlsZW1vZGV8W2NvbXByZXNzaW9uXSdgYC4gIDpmdW5jOmB0YXJmaWxlLm9wZW5gIHdpbGwgcmV0dXJuIGEgOmNsYXNzOmBUYXJGaWxlYApAQCAtMTI3LDYgKzE0NCw4IEBACiAgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKIC4uIGNsYXNzOjogVGFyRmlsZQogCkBAIC0yNTIsOCArMjcxLDggQEAKICAgIEluIHRoaXMgY2FzZSwgdGhlIGZpbGUgb2JqZWN0J3MgOmF0dHI6YG5hbWVgIGF0dHJpYnV0ZSBpcyB1c2VkIGlmIGl0IGV4aXN0cy4KIAogICAgKm1vZGUqIGlzIGVpdGhlciBgYCdyJ2BgIHRvIHJlYWQgZnJvbSBhbiBleGlzdGluZyBhcmNoaXZlLCBgYCdhJ2BgIHRvIGFwcGVuZAotICAgZGF0YSB0byBhbiBleGlzdGluZyBmaWxlIG9yIGBgJ3cnYGAgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcKLSAgIG9uZS4KKyAgIGRhdGEgdG8gYW4gZXhpc3RpbmcgZmlsZSwgYGAndydgYCB0byBjcmVhdGUgYSBuZXcgZmlsZSBvdmVyd3JpdGluZyBhbiBleGlzdGluZworICAgb25lIG9yIGBgJ3gnYGAgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb25seSBpZiBpdCdzIG5vdCBleGlzdHMuCiAKICAgIElmICpmaWxlb2JqKiBpcyBnaXZlbiwgaXQgaXMgdXNlZCBmb3IgcmVhZGluZyBvciB3cml0aW5nIGRhdGEuIElmIGl0IGNhbiBiZQogICAgZGV0ZXJtaW5lZCwgKm1vZGUqIGlzIG92ZXJyaWRkZW4gYnkgKmZpbGVvYmoqJ3MgbW9kZS4gKmZpbGVvYmoqIHdpbGwgYmUgdXNlZApAQCAtMjkyLDEyICszMTEsMTQgQEAKICAgIHRvIGJlIGhhbmRsZWQuIFRoZSBkZWZhdWx0IHNldHRpbmdzIHdpbGwgd29yayBmb3IgbW9zdCB1c2Vycy4KICAgIFNlZSBzZWN0aW9uIDpyZWY6YHRhci11bmljb2RlYCBmb3IgaW4tZGVwdGggaW5mb3JtYXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgKmVycm9ycyogYXJndW1lbnQuCi0KICAgIFRoZSAqcGF4X2hlYWRlcnMqIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyB3aGljaAogICAgd2lsbCBiZSBhZGRlZCBhcyBhIHBheCBnbG9iYWwgaGVhZGVyIGlmICpmb3JtYXQqIGlzIDpjb25zdDpgUEFYX0ZPUk1BVGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBVc2UgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgKmVycm9ycyogYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAogLi4gY2xhc3NtZXRob2Q6OiBUYXJGaWxlLm9wZW4oLi4uKQogCkBAIC0zMjgsMTEgKzM0OSwxNSBAQAogICAgcmV0dXJuZWQgYnkgOm1ldGg6YGdldG1lbWJlcnNgLgogCiAKLS4uIG1ldGhvZDo6IFRhckZpbGUubGlzdCh2ZXJib3NlPVRydWUpCisuLiBtZXRob2Q6OiBUYXJGaWxlLmxpc3QodmVyYm9zZT1UcnVlLCAqLCBtZW1iZXJzPU5vbmUpCiAKICAgIFByaW50IGEgdGFibGUgb2YgY29udGVudHMgdG8gYGBzeXMuc3Rkb3V0YGAuIElmICp2ZXJib3NlKiBpcyA6Y29uc3Q6YEZhbHNlYCwKICAgIG9ubHkgdGhlIG5hbWVzIG9mIHRoZSBtZW1iZXJzIGFyZSBwcmludGVkLiBJZiBpdCBpcyA6Y29uc3Q6YFRydWVgLCBvdXRwdXQKLSAgIHNpbWlsYXIgdG8gdGhhdCBvZiA6cHJvZ3JhbTpgbHMgLWxgIGlzIHByb2R1Y2VkLgorICAgc2ltaWxhciB0byB0aGF0IG9mIDpwcm9ncmFtOmBscyAtbGAgaXMgcHJvZHVjZWQuIElmIG9wdGlvbmFsICptZW1iZXJzKiBpcworICAgZ2l2ZW4sIGl0IG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlIGxpc3QgcmV0dXJuZWQgYnkgOm1ldGg6YGdldG1lbWJlcnNgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICptZW1iZXJzKiBwYXJhbWV0ZXIuCiAKIAogLi4gbWV0aG9kOjogVGFyRmlsZS5uZXh0KCkKQEAgLTM0Miw3ICszNjcsNyBAQAogICAgYXZhaWxhYmxlLgogCiAKLS4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGFsbChwYXRoPSIuIiwgbWVtYmVycz1Ob25lKQorLi4gbWV0aG9kOjogVGFyRmlsZS5leHRyYWN0YWxsKHBhdGg9Ii4iLCBtZW1iZXJzPU5vbmUsICosIG51bWVyaWNfb3duZXI9RmFsc2UpCiAKICAgIEV4dHJhY3QgYWxsIG1lbWJlcnMgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvcgogICAgZGlyZWN0b3J5ICpwYXRoKi4gSWYgb3B0aW9uYWwgKm1lbWJlcnMqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZQpAQCAtMzUyLDYgKzM3NywxMCBAQAogICAgcmVzZXQgZWFjaCB0aW1lIGEgZmlsZSBpcyBjcmVhdGVkIGluIGl0LiBBbmQsIGlmIGEgZGlyZWN0b3J5J3MgcGVybWlzc2lvbnMgZG8KICAgIG5vdCBhbGxvdyB3cml0aW5nLCBleHRyYWN0aW5nIGZpbGVzIHRvIGl0IHdpbGwgZmFpbC4KIAorICAgSWYgKm51bWVyaWNfb3duZXIqIGlzIDpjb25zdDpgVHJ1ZWAsIHRoZSB1aWQgYW5kIGdpZCBudW1iZXJzIGZyb20gdGhlIHRhcmZpbGUKKyAgIGFyZSB1c2VkIHRvIHNldCB0aGUgb3duZXIvZ3JvdXAgZm9yIHRoZSBleHRyYWN0ZWQgZmlsZXMuIE90aGVyd2lzZSwgdGhlIG5hbWVkCisgICB2YWx1ZXMgZnJvbSB0aGUgdGFyZmlsZSBhcmUgdXNlZC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIE5ldmVyIGV4dHJhY3QgYXJjaGl2ZXMgZnJvbSB1bnRydXN0ZWQgc291cmNlcyB3aXRob3V0IHByaW9yIGluc3BlY3Rpb24uCkBAIC0zNTksOCArMzg4LDExIEBACiAgICAgICB0aGF0IGhhdmUgYWJzb2x1dGUgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYGAiLyJgYCBvciBmaWxlbmFtZXMgd2l0aCB0d28KICAgICAgIGRvdHMgYGAiLi4iYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgKm51bWVyaWNfb25seSogcGFyYW1ldGVyLgogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3QobWVtYmVyLCBwYXRoPSIiLCBzZXRfYXR0cnM9VHJ1ZSkKKworLi4gbWV0aG9kOjogVGFyRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUsICosIG51bWVyaWNfb3duZXI9RmFsc2UpCiAKICAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgdXNpbmcgaXRzCiAgICBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5IGFzIHBvc3NpYmxlLiAqbWVtYmVyKgpAQCAtMzY4LDYgKzQwMCwxMCBAQAogICAgZGlyZWN0b3J5IHVzaW5nICpwYXRoKi4gRmlsZSBhdHRyaWJ1dGVzIChvd25lciwgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzCiAgICAqc2V0X2F0dHJzKiBpcyBmYWxzZS4KIAorICAgSWYgKm51bWVyaWNfb3duZXIqIGlzIDpjb25zdDpgVHJ1ZWAsIHRoZSB1aWQgYW5kIGdpZCBudW1iZXJzIGZyb20gdGhlIHRhcmZpbGUKKyAgIGFyZSB1c2VkIHRvIHNldCB0aGUgb3duZXIvZ3JvdXAgZm9yIHRoZSBleHRyYWN0ZWQgZmlsZXMuIE90aGVyd2lzZSwgdGhlIG5hbWVkCisgICB2YWx1ZXMgZnJvbSB0aGUgdGFyZmlsZSBhcmUgdXNlZC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZSA6bWV0aDpgZXh0cmFjdGAgbWV0aG9kIGRvZXMgbm90IHRha2UgY2FyZSBvZiBzZXZlcmFsIGV4dHJhY3Rpb24gaXNzdWVzLgpAQCAtMzgwLDYgKzQxNiw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICpzZXRfYXR0cnMqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqbnVtZXJpY19vbmx5KiBwYXJhbWV0ZXIuCisKIC4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGZpbGUobWVtYmVyKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gKm1lbWJlciogbWF5IGJlIGEgZmlsZW5hbWUKQEAgLTgwMiw0ICs4NDEsMyBAQAogYmVjYXVzZSBhbGwgdGhlIG1ldGFkYXRhIGlzIHN0b3JlZCB1c2luZyAqVVRGLTgqLiAqZW5jb2RpbmcqIGlzIG9ubHkgdXNlZCBpbgogdGhlIHJhcmUgY2FzZXMgd2hlbiBiaW5hcnkgcGF4IGhlYWRlcnMgYXJlIGRlY29kZWQgb3Igd2hlbiBzdHJpbmdzIHdpdGgKIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdAppbmRleCA0NGQwMjVkLi4wMzg3ZmIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CkBAIC01NCw2ICs1NCwxMyBAQAogICAgdW5kZXJseWluZyB0cnVlIGZpbGUgb2JqZWN0LiBUaGlzIGZpbGUtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgaW4gYQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwganVzdCBsaWtlIGEgbm9ybWFsIGZpbGUuCiAKKyAgIFRoZSA6cHk6ZGF0YTpgb3MuT19UTVBGSUxFYCBmbGFnIGlzIHVzZWQgaWYgaXQgaXMgYXZhaWxhYmxlIGFuZCB3b3JrcworICAgKExpbnV4LXNwZWNpZmljLCByZXF1aXJlIExpbnV4IGtlcm5lbCAzLjExIG9yIGxhdGVyKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgVGhlIDpweTpkYXRhOmBvcy5PX1RNUEZJTEVgIGZsYWcgaXMgbm93IHVzZWQgaWYgYXZhaWxhYmxlLgorCiAKIC4uIGZ1bmN0aW9uOjogTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGJ1ZmZlcmluZz1Ob25lLCBlbmNvZGluZz1Ob25lLCBuZXdsaW5lPU5vbmUsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgZGVsZXRlPVRydWUpCiAKQEAgLTExMiw3ICsxMTksNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZnVuY3Rpb246OiBta3N0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbWtzdGVtcChzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKQogCiAgICBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIG1vc3Qgc2VjdXJlIG1hbm5lciBwb3NzaWJsZS4gIFRoZXJlIGFyZQogICAgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBmaWxlJ3MgY3JlYXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHBsYXRmb3JtCkBAIC0xNDEsNiArMTQ4LDE2IEBACiAgICBmaWxlbmFtZSB3aWxsIGhhdmUgYW55IG5pY2UgcHJvcGVydGllcywgc3VjaCBhcyBub3QgcmVxdWlyaW5nIHF1b3RpbmcKICAgIHdoZW4gcGFzc2VkIHRvIGV4dGVybmFsIGNvbW1hbmRzIHZpYSBgYG9zLnBvcGVuKClgYC4KIAorICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbXVzdCBhbGwgY29udGFpbiB0aGUgc2FtZSB0eXBlLCBpZiBzcGVjaWZpZWQuCisgICBJZiB0aGV5IGFyZSBieXRlcywgdGhlIHJldHVybmVkIG5hbWUgd2lsbCBiZSBieXRlcyBpbnN0ZWFkIG9mIHN0ci4KKyAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGEgYnl0ZXMgcmV0dXJuIHZhbHVlIHdpdGggb3RoZXJ3aXNlIGRlZmF1bHQgYmVoYXZpb3IsCisgICBwYXNzIGBgc3VmZml4PWInJ2BgLgorCisgICBBICpwcmVmaXgqIHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICA6ZnVuYzpgZ2V0dGVtcHByZWZpeGAgb3IgOmZ1bmM6YGdldHRlbXBwcmVmaXhiYCBhcyBhcHByb3ByaWF0ZS4KKworICAgQSAqc3VmZml4KiB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1c2UgYW4gYXBwcm9wcmlhdGUgZW1wdHkgdmFsdWUuCisKICAgIElmICp0ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IGluZGljYXRlcyB3aGV0aGVyIHRvIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5CiAgICBtb2RlICh0aGUgZGVmYXVsdCkgb3IgdGV4dCBtb2RlLiAgT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgbWFrZXMgbm8KICAgIGRpZmZlcmVuY2UuCkBAIC0xNDksOCArMTY2LDE0IEBACiAgICBmaWxlIChhcyB3b3VsZCBiZSByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmApIGFuZCB0aGUgYWJzb2x1dGUgcGF0aG5hbWUKICAgIG9mIHRoYXQgZmlsZSwgaW4gdGhhdCBvcmRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpzdWZmaXgqLCAqcHJlZml4KiwgYW5kICpkaXIqIG1heSBub3cgYmUgc3VwcGxpZWQgaW4gYnl0ZXMgaW4gb3JkZXIgdG8KKyAgICAgIG9idGFpbiBhIGJ5dGVzIHJldHVybiB2YWx1ZS4gIFByaW9yIHRvIHRoaXMsIG9ubHkgc3RyIHdhcyBhbGxvd2VkLgorICAgICAgKnN1ZmZpeCogYW5kICpwcmVmaXgqIG5vdyBhY2NlcHQgYW5kIGRlZmF1bHQgdG8gYGBOb25lYGAgdG8gY2F1c2UKKyAgICAgIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZC4KIAotLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKKworLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpCiAKICAgIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIHRoZSBtb3N0IHNlY3VyZSBtYW5uZXIgcG9zc2libGUuIFRoZXJlCiAgICBhcmUgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBkaXJlY3RvcnkncyBjcmVhdGlvbi4gIFRoZSBkaXJlY3RvcnkgaXMKQEAgLTE2NCw2ICsxODcsMTIgQEAKIAogICAgOmZ1bmM6YG1rZHRlbXBgIHJldHVybnMgdGhlIGFic29sdXRlIHBhdGhuYW1lIG9mIHRoZSBuZXcgZGlyZWN0b3J5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbWF5IG5vdyBiZSBzdXBwbGllZCBpbiBieXRlcyBpbiBvcmRlciB0bworICAgICAgb2J0YWluIGEgYnl0ZXMgcmV0dXJuIHZhbHVlLiAgUHJpb3IgdG8gdGhpcywgb25seSBzdHIgd2FzIGFsbG93ZWQuCisgICAgICAqc3VmZml4KiBhbmQgKnByZWZpeCogbm93IGFjY2VwdCBhbmQgZGVmYXVsdCB0byBgYE5vbmVgYCB0byBjYXVzZQorICAgICAgYW4gYXBwcm9wcmlhdGUgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogbWt0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKIApAQCAtMjMyLDEyICsyNjEsMjMgQEAKICAgIDpkYXRhOmB0ZW1wZGlyYCBpcyBub3QgYGBOb25lYGAsIHRoaXMgc2ltcGx5IHJldHVybnMgaXRzIGNvbnRlbnRzOyBvdGhlcndpc2UsCiAgICB0aGUgc2VhcmNoIGRlc2NyaWJlZCBhYm92ZSBpcyBwZXJmb3JtZWQsIGFuZCB0aGUgcmVzdWx0IHJldHVybmVkLgogCisuLiBmdW5jdGlvbjo6IGdldHRlbXBkaXJiKCkKKworICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcGRpcmAgYnV0IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gYnl0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXgoKQogCiAgICBSZXR1cm4gdGhlIGZpbGVuYW1lIHByZWZpeCB1c2VkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZXMuICBUaGlzIGRvZXMgbm90CiAgICBjb250YWluIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50LgogCisuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXhiKCkKKworICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcHByZWZpeGJgIGJ1dCB0aGUgcmV0dXJuIHZhbHVlIGlzIGluIGJ5dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiBFeGFtcGxlcwogLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKaW5kZXggOTc0OTA5ZS4uOGYyZGY3YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKQEAgLTU2OCw2ICs1NjgsMTcgQEAKICAgICAgIGRlZiBsb2FkX3Rlc3RzKCphcmdzKToKICAgICAgICAgICByZXR1cm4gbG9hZF9wYWNrYWdlX3Rlc3RzKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICphcmdzKQogCisuLiBmdW5jdGlvbjo6IGRldGVjdF9hcGlfbWlzbWF0Y2gocmVmX2FwaSwgb3RoZXJfYXBpLCAqLCBpZ25vcmU9KCkpOgorCisgICBSZXR1cm5zIHRoZSBzZXQgb2YgYXR0cmlidXRlcywgZnVuY3Rpb25zIG9yIG1ldGhvZHMgb2YgYHJlZl9hcGlgIG5vdAorICAgZm91bmQgb24gYG90aGVyX2FwaWAsIGV4Y2VwdCBmb3IgYSBkZWZpbmVkIGxpc3Qgb2YgaXRlbXMgdG8gYmUKKyAgIGlnbm9yZWQgaW4gdGhpcyBjaGVjayBzcGVjaWZpZWQgaW4gYGlnbm9yZWAuCisKKyAgIEJ5IGRlZmF1bHQgdGhpcyBza2lwcyBwcml2YXRlIGF0dHJpYnV0ZXMgYmVnaW5uaW5nIHdpdGggJ18nIGJ1dAorICAgaW5jbHVkZXMgYWxsIG1hZ2ljIG1ldGhvZHMsIGkuZS4gdGhvc2Ugc3RhcnRpbmcgYW5kIGVuZGluZyBpbiAnX18nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiBUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggOGQ4YjdkNC4uM2QzMzVjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTMxNCw5ICszMTQsOSBAQAogICAgcHJvY2Vzc2VzIHJ1bm5pbmcgZm9yIG1vcmUgdGhhbiA0OSBkYXlzLiBPbiBtb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiBXaW5kb3dzCiAgICBhbmQgb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMsIDpmdW5jOmBtb25vdG9uaWNgIGlzIHN5c3RlbS13aWRlLgogCi0gICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MsIE1hYyBPUyBYLCBMaW51eCwgRnJlZUJTRCwgT3BlbkJTRCwgU29sYXJpcy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyBhbHdheXMgYXZhaWxhYmxlLgogCiAKIC4uIGZ1bmN0aW9uOjogcGVyZl9jb3VudGVyKCkKQEAgLTM1MCw2ICszNTAsMTEgQEAKICAgIHJlcXVlc3RlZCBieSBhbiBhcmJpdHJhcnkgYW1vdW50IGJlY2F1c2Ugb2YgdGhlIHNjaGVkdWxpbmcgb2Ygb3RoZXIgYWN0aXZpdHkKICAgIGluIHRoZSBzeXN0ZW0uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gbm93IHNsZWVwcyBhdCBsZWFzdCAqc2VjcyogZXZlbiBpZiB0aGUgc2xlZXAgaXMgaW50ZXJydXB0ZWQKKyAgICAgIGJ5IGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiBzdHJmdGltZShmb3JtYXRbLCB0XSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggNzBkZjQwOS4uZDEwNTFmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC01OSwxOCArNTksMjYgQEAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aHJlZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYW5kIGEgcHVibGljIGNsYXNzOgogCiAKLS4uIGZ1bmN0aW9uOjogdGltZWl0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgbnVtYmVyPTEwMDAwMDApCisuLiBmdW5jdGlvbjo6IHRpbWVpdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIG51bWJlcj0xMDAwMDAwLCBnbG9iYWxzPU5vbmUpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgVGltZXJgIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHN0YXRlbWVudCwgKnNldHVwKiBjb2RlIGFuZAogICAgKnRpbWVyKiBmdW5jdGlvbiBhbmQgcnVuIGl0cyA6bWV0aDpgLnRpbWVpdGAgbWV0aG9kIHdpdGggKm51bWJlciogZXhlY3V0aW9ucy4KKyAgIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYXJndW1lbnQgc3BlY2lmaWVzIGEgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV4ZWN1dGUgdGhlCisgICBjb2RlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogcmVwZWF0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgcmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwKQorLi4gZnVuY3Rpb246OiByZXBlYXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCByZXBlYXQ9MywgbnVtYmVyPTEwMDAwMDAsIGdsb2JhbHM9Tm9uZSkKIAogICAgQ3JlYXRlIGEgOmNsYXNzOmBUaW1lcmAgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gc3RhdGVtZW50LCAqc2V0dXAqIGNvZGUgYW5kCiAgICAqdGltZXIqIGZ1bmN0aW9uIGFuZCBydW4gaXRzIDptZXRoOmAucmVwZWF0YCBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gKnJlcGVhdCoKLSAgIGNvdW50IGFuZCAqbnVtYmVyKiBleGVjdXRpb25zLgorICAgY291bnQgYW5kICpudW1iZXIqIGV4ZWN1dGlvbnMuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFyZ3VtZW50IHNwZWNpZmllcyBhCisgICBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gZXhlY3V0ZSB0aGUgY29kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gZnVuY3Rpb246OiBkZWZhdWx0X3RpbWVyKCkKIApAQCAtODAsNyArODgsNyBAQAogICAgICAgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCBpcyBub3cgdGhlIGRlZmF1bHQgdGltZXIuCiAKIAotLi4gY2xhc3M6OiBUaW1lcihzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08dGltZXIgZnVuY3Rpb24+KQorLi4gY2xhc3M6OiBUaW1lcihzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08dGltZXIgZnVuY3Rpb24+LCBnbG9iYWxzPU5vbmUpCiAKICAgIENsYXNzIGZvciB0aW1pbmcgZXhlY3V0aW9uIHNwZWVkIG9mIHNtYWxsIGNvZGUgc25pcHBldHMuCiAKQEAgLTg4LDcgKzk2LDkgQEAKICAgIGZvciBzZXR1cCwgYW5kIGEgdGltZXIgZnVuY3Rpb24uICBCb3RoIHN0YXRlbWVudHMgZGVmYXVsdCB0byBgYCdwYXNzJ2BgOwogICAgdGhlIHRpbWVyIGZ1bmN0aW9uIGlzIHBsYXRmb3JtLWRlcGVuZGVudCAoc2VlIHRoZSBtb2R1bGUgZG9jIHN0cmluZykuCiAgICAqc3RtdCogYW5kICpzZXR1cCogbWF5IGFsc28gY29udGFpbiBtdWx0aXBsZSBzdGF0ZW1lbnRzIHNlcGFyYXRlZCBieSBgYDtgYAotICAgb3IgbmV3bGluZXMsIGFzIGxvbmcgYXMgdGhleSBkb24ndCBjb250YWluIG11bHRpLWxpbmUgc3RyaW5nIGxpdGVyYWxzLgorICAgb3IgbmV3bGluZXMsIGFzIGxvbmcgYXMgdGhleSBkb24ndCBjb250YWluIG11bHRpLWxpbmUgc3RyaW5nIGxpdGVyYWxzLiAgVGhlCisgICBzdGF0ZW1lbnQgd2lsbCBieSBkZWZhdWx0IGJlIGV4ZWN1dGVkIHdpdGhpbiB0aW1laXQncyBuYW1lc3BhY2U7IHRoaXMgYmVoYXZpb3IKKyAgIGNhbiBiZSBjb250cm9sbGVkIGJ5IHBhc3NpbmcgYSBuYW1lc3BhY2UgdG8gKmdsb2JhbHMqLgogCiAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlIDptZXRoOmAudGltZWl0YAogICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsIDptZXRoOmAudGltZWl0YApAQCAtMTAxLDYgKzExMSw4IEBACiAgICB3aWxsIHRoZW4gYmUgZXhlY3V0ZWQgYnkgOm1ldGg6YC50aW1laXRgLiAgTm90ZSB0aGF0IHRoZSB0aW1pbmcgb3ZlcmhlYWQgaXMgYQogICAgbGl0dGxlIGxhcmdlciBpbiB0aGlzIGNhc2UgYmVjYXVzZSBvZiB0aGUgZXh0cmEgZnVuY3Rpb24gY2FsbHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKICAgIC4uIG1ldGhvZDo6IFRpbWVyLnRpbWVpdChudW1iZXI9MTAwMDAwMCkKIApAQCAtMTY5LDcgKzE4MSw3IEBACiAKIFdoZW4gY2FsbGVkIGFzIGEgcHJvZ3JhbSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHRoZSBmb2xsb3dpbmcgZm9ybSBpcyB1c2VkOjoKIAotICAgcHl0aG9uIC1tIHRpbWVpdCBbLW4gTl0gWy1yIE5dIFstcyBTXSBbLXRdIFstY10gWy1oXSBbc3RhdGVtZW50IC4uLl0KKyAgIHB5dGhvbiAtbSB0aW1laXQgWy1uIE5dIFstciBOXSBbLXUgVV0gWy1zIFNdIFstdF0gWy1jXSBbLWhdIFtzdGF0ZW1lbnQgLi4uXQogCiBXaGVyZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHVuZGVyc3Rvb2Q6CiAKQEAgLTE5OCw2ICsyMTAsMTIgQEAKIAogICAgdXNlIDpmdW5jOmB0aW1lLnRpbWVgIChkZXByZWNhdGVkKQogCisuLiBjbWRvcHRpb246OiAtdSwgLS11bml0PVUKKworICAgIHNwZWNpZnkgYSB0aW1lIHVuaXQgZm9yIHRpbWVyIG91dHB1dDsgY2FuIHNlbGVjdCB1c2VjLCBtc2VjLCBvciBzZWMKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIGNtZG9wdGlvbjo6IC1jLCAtLWNsb2NrCiAKICAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlcHJlY2F0ZWQpCkBAIC0zMjAsMyArMzM4LDE3IEBACiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIGltcG9ydCB0aW1laXQKICAgICAgICBwcmludCh0aW1laXQudGltZWl0KCJ0ZXN0KCkiLCBzZXR1cD0iZnJvbSBfX21haW5fXyBpbXBvcnQgdGVzdCIpKQorCitBbm90aGVyIG9wdGlvbiBpcyB0byBwYXNzIDpmdW5jOmBnbG9iYWxzYCB0byB0aGUgICpnbG9iYWxzKiBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGNvZGUKK3RvIGJlIGV4ZWN1dGVkIHdpdGhpbiB5b3VyIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZS4gIFRoaXMgY2FuIGJlIG1vcmUgY29udmVuaWVudAordGhhbiBpbmRpdmlkdWFsbHkgc3BlY2lmeWluZyBpbXBvcnRzOjoKKworICAgZGVmIGYoeCk6CisgICAgICAgcmV0dXJuIHgqKjIKKyAgIGRlZiBnKHgpOgorICAgICAgIHJldHVybiB4Kio0CisgICBkZWYgaCh4KToKKyAgICAgICByZXR1cm4geCoqOAorCisgICBpbXBvcnQgdGltZWl0CisgICBwcmludCh0aW1laXQudGltZWl0KCdbZnVuYyg0MikgZm9yIGZ1bmMgaW4gKGYsZyxoKV0nLCBnbG9iYWxzPWdsb2JhbHMoKSkpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90b2tlbi5yc3QgYi9Eb2MvbGlicmFyeS90b2tlbi5yc3QKaW5kZXggNGNkNzA5OC4uODhmYjM4YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdG9rZW4ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rva2VuLnJzdApAQCAtOTMsNiArOTMsNyBAQAogICAgICAgICAgIERPVUJMRVNMQVNICiAgICAgICAgICAgRE9VQkxFU0xBU0hFUVVBTAogICAgICAgICAgIEFUCisgICAgICAgICAgQVRFUVVBTAogICAgICAgICAgIFJBUlJPVwogICAgICAgICAgIEVMTElQU0lTCiAgICAgICAgICAgT1AKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDE1ZmJlZGMuLjhkMjE2ZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtMjIsMTUgKzIyLDIwIEBACiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfdGIodHJhY2ViYWNrLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpCiAKLSAgIFByaW50IHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyBmcm9tICp0cmFjZWJhY2sqLiAgSWYgKmxpbWl0KiBpcyBvbWl0dGVkCi0gICBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMgYXJlIHByaW50ZWQuIElmICpmaWxlKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUKLSAgIG91dHB1dCBnb2VzIHRvIGBgc3lzLnN0ZGVycmBgOyBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIG9wZW4gZmlsZSBvciBmaWxlLWxpa2UKLSAgIG9iamVjdCB0byByZWNlaXZlIHRoZSBvdXRwdXQuCisgICBQcmludCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAqdHJhY2ViYWNrKiAoc3RhcnRpbmcgZnJvbQorICAgdGhlIGNhbGxlcidzIGZyYW1lKSBpZiAqbGltaXQqIGlzIHBvc2l0aXZlLiAgT3RoZXJ3aXNlLCBwcmludCB0aGUgbGFzdAorICAgYGBhYnMobGltaXQpYGAgZW50cmllcy4gIElmICpsaW1pdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMKKyAgIGFyZSBwcmludGVkLiAgSWYgKmZpbGUqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSBvdXRwdXQgZ29lcyB0bworICAgYGBzeXMuc3RkZXJyYGA7IG90aGVyd2lzZSBpdCBzaG91bGQgYmUgYW4gb3BlbiBmaWxlIG9yIGZpbGUtbGlrZSBvYmplY3QKKyAgIHRvIHJlY2VpdmUgdGhlIG91dHB1dC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICBBZGRlZCBuZWdhdGl2ZSAqbGltaXQqIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBwcmludF9leGNlcHRpb24odHlwZSwgdmFsdWUsIHRyYWNlYmFjaywgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCi0gICBQcmludCBleGNlcHRpb24gaW5mb3JtYXRpb24gYW5kIHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyBmcm9tCisgICBQcmludCBleGNlcHRpb24gaW5mb3JtYXRpb24gYW5kIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbQogICAgKnRyYWNlYmFjayogdG8gKmZpbGUqLiBUaGlzIGRpZmZlcnMgZnJvbSA6ZnVuYzpgcHJpbnRfdGJgIGluIHRoZSBmb2xsb3dpbmcKICAgIHdheXM6CiAKQEAgLTQxLDYgKzQ2LDcgQEAKICAgICAgcHJpbnRzIHRoZSBsaW5lIHdoZXJlIHRoZSBzeW50YXggZXJyb3Igb2NjdXJyZWQgd2l0aCBhIGNhcmV0IGluZGljYXRpbmcgdGhlCiAgICAgIGFwcHJveGltYXRlIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KIAorICAgVGhlIG9wdGlvbmFsICpsaW1pdCogYXJndW1lbnQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIDpmdW5jOmBwcmludF90YmAuCiAgICBJZiAqY2hhaW4qIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlbiBjaGFpbmVkIGV4Y2VwdGlvbnMgKHRoZQogICAgOmF0dHI6YF9fY2F1c2VfX2Agb3IgOmF0dHI6YF9fY29udGV4dF9fYCBhdHRyaWJ1dGVzIG9mIHRoZSBleGNlcHRpb24pIHdpbGwgYmUKICAgIHByaW50ZWQgYXMgd2VsbCwgbGlrZSB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmIGRvZXMgd2hlbiBwcmludGluZyBhbiB1bmhhbmRsZWQKQEAgLTQ5LDMzICs1NSw0MSBAQAogCiAuLiBmdW5jdGlvbjo6IHByaW50X2V4YyhsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpCiAKLSAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSlgYC4KKyAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQsIGZpbGUsCisgICBjaGFpbilgYC4KIAogCiAuLiBmdW5jdGlvbjo6IHByaW50X2xhc3QobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCiAgICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbihzeXMubGFzdF90eXBlLCBzeXMubGFzdF92YWx1ZSwKLSAgIHN5cy5sYXN0X3RyYWNlYmFjaywgbGltaXQsIGZpbGUpYGAuICBJbiBnZW5lcmFsIGl0IHdpbGwgd29yayBvbmx5IGFmdGVyCi0gICBhbiBleGNlcHRpb24gaGFzIHJlYWNoZWQgYW4gaW50ZXJhY3RpdmUgcHJvbXB0IChzZWUgOmRhdGE6YHN5cy5sYXN0X3R5cGVgKS4KKyAgIHN5cy5sYXN0X3RyYWNlYmFjaywgbGltaXQsIGZpbGUsIGNoYWluKWBgLiAgSW4gZ2VuZXJhbCBpdCB3aWxsIHdvcmsgb25seQorICAgYWZ0ZXIgYW4gZXhjZXB0aW9uIGhhcyByZWFjaGVkIGFuIGludGVyYWN0aXZlIHByb21wdCAoc2VlCisgICA6ZGF0YTpgc3lzLmxhc3RfdHlwZWApLgogCiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpCiAKLSAgIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgc3RhY2sgdHJhY2UgZnJvbSBpdHMgaW52b2NhdGlvbiBwb2ludC4gIFRoZSBvcHRpb25hbCAqZioKLSAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRlIHN0YWNrIGZyYW1lIHRvIHN0YXJ0LiAgVGhlIG9wdGlvbmFsCi0gICAqbGltaXQqIGFuZCAqZmlsZSogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKLSAgIDpmdW5jOmBwcmludF9leGNlcHRpb25gLgorICAgUHJpbnQgdXAgdG8gKmxpbWl0KiBzdGFjayB0cmFjZSBlbnRyaWVzIChzdGFydGluZyBmcm9tIHRoZSBpbnZvY2F0aW9uCisgICBwb2ludCkgaWYgKmxpbWl0KiBpcyBwb3NpdGl2ZS4gIE90aGVyd2lzZSwgcHJpbnQgdGhlIGxhc3QgYGBhYnMobGltaXQpYGAKKyAgIGVudHJpZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBwcmludGVkLgorICAgVGhlIG9wdGlvbmFsICpmKiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBzdGFjayBmcmFtZQorICAgdG8gc3RhcnQuICBUaGUgb3B0aW9uYWwgKmZpbGUqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOmZ1bmM6YHByaW50X3RiYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICBBZGRlZCBuZWdhdGl2ZSAqbGltaXQqIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBleHRyYWN0X3RiKHRyYWNlYmFjaywgbGltaXQ9Tm9uZSkKIAotICAgUmV0dXJuIGEgbGlzdCBvZiB1cCB0byAqbGltaXQqICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyaWVzIGV4dHJhY3RlZAotICAgZnJvbSB0aGUgdHJhY2ViYWNrIG9iamVjdCAqdHJhY2ViYWNrKi4gIEl0IGlzIHVzZWZ1bCBmb3IgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgb2YKLSAgIHN0YWNrIHRyYWNlcy4gIElmICpsaW1pdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYWxsIGVudHJpZXMgYXJlIGV4dHJhY3RlZC4gIEEKLSAgICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyeSBpcyBhIDQtdHVwbGUgKCpmaWxlbmFtZSosICpsaW5lIG51bWJlciosCi0gICAqZnVuY3Rpb24gbmFtZSosICp0ZXh0KikgcmVwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzdWFsbHkgcHJpbnRlZAotICAgZm9yIGEgc3RhY2sgdHJhY2UuICBUaGUgKnRleHQqIGlzIGEgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZQotICAgc3RyaXBwZWQ7IGlmIHRoZSBzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSBpdCBpcyBgYE5vbmVgYC4KKyAgIFJldHVybiBhIGxpc3Qgb2YgInByZS1wcm9jZXNzZWQiIHN0YWNrIHRyYWNlIGVudHJpZXMgZXh0cmFjdGVkIGZyb20gdGhlCisgICB0cmFjZWJhY2sgb2JqZWN0ICp0cmFjZWJhY2sqLiAgSXQgaXMgdXNlZnVsIGZvciBhbHRlcm5hdGUgZm9ybWF0dGluZyBvZgorICAgc3RhY2sgdHJhY2VzLiAgVGhlIG9wdGlvbmFsICpsaW1pdCogYXJndW1lbnQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6ZnVuYzpgcHJpbnRfdGJgLiAgQSAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cnkgaXMgYSA0LXR1cGxlCisgICAoKmZpbGVuYW1lKiwgKmxpbmUgbnVtYmVyKiwgKmZ1bmN0aW9uIG5hbWUqLCAqdGV4dCopIHJlcHJlc2VudGluZyB0aGUKKyAgIGluZm9ybWF0aW9uIHRoYXQgaXMgdXN1YWxseSBwcmludGVkIGZvciBhIHN0YWNrIHRyYWNlLiAgVGhlICp0ZXh0KiBpcyBhCisgICBzdHJpbmcgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzCisgICBub3QgYXZhaWxhYmxlIGl0IGlzIGBgTm9uZWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZXh0cmFjdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpCkBAIC0xMzYsNiArMTUwLDE2MiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZnVuY3Rpb246OiB3YWxrX3N0YWNrKGYpCisKKyAgIFdhbGsgYSBzdGFjayBmb2xsb3dpbmcgYGBmLmZfYmFja2BgIGZyb20gdGhlIGdpdmVuIGZyYW1lLCB5aWVsZGluZyB0aGUgZnJhbWUKKyAgIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4gSWYgKmYqIGlzIGBgTm9uZWBgLCB0aGUgY3VycmVudCBzdGFjayBpcworICAgdXNlZC4gVGhpcyBoZWxwZXIgaXMgdXNlZCB3aXRoIDptZXRoOmBTdGFja1N1bW1hcnkuZXh0cmFjdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBmdW5jdGlvbjo6IHdhbGtfdGIodGIpCisKKyAgIFdhbGsgYSB0cmFjZWJhY2sgZm9sbG93aW5nIGBgdGJfbmV4dGBgIHlpZWxkaW5nIHRoZSBmcmFtZSBhbmQgbGluZSBudW1iZXIKKyAgIGZvciBlYWNoIGZyYW1lLiBUaGlzIGhlbHBlciBpcyB1c2VkIHdpdGggOm1ldGg6YFN0YWNrU3VtbWFyeS5leHRyYWN0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBtb2R1bGUgYWxzbyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKKworOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCis6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2JqZWN0cyBhcmUgY3JlYXRlZCBmcm9tIGFjdHVhbCBleGNlcHRpb25zIHRvCitjYXB0dXJlIGRhdGEgZm9yIGxhdGVyIHByaW50aW5nIGluIGEgbGlnaHR3ZWlnaHQgZmFzaGlvbi4KKworLi4gY2xhc3M6OiBUcmFjZWJhY2tFeGNlcHRpb24oZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjaywgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlKQorCisgICBDYXB0dXJlIGFuIGV4Y2VwdGlvbiBmb3IgbGF0ZXIgcmVuZGVyaW5nLiAqbGltaXQqLCAqbG9va3VwX2xpbmVzKiBhbmQKKyAgICpjYXB0dXJlX2xvY2FscyogYXJlIGFzIGZvciB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNsYXNzLgorCisgICBOb3RlIHRoYXQgd2hlbiBsb2NhbHMgYXJlIGNhcHR1cmVkLCB0aGV5IGFyZSBhbHNvIHNob3duIGluIHRoZSB0cmFjZWJhY2suCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fY2F1c2VfXworCisgICAgICBBIDpjbGFzczpgVHJhY2ViYWNrRXhjZXB0aW9uYCBvZiB0aGUgb3JpZ2luYWwgYGBfX2NhdXNlX19gYC4KKworICAgLi4gYXR0cmlidXRlOjogX19jb250ZXh0X18KKworICAgICAgQSA6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2YgdGhlIG9yaWdpbmFsIGBgX19jb250ZXh0X19gYC4KKworICAgLi4gYXR0cmlidXRlOjogX19zdXBwcmVzc19jb250ZXh0X18KKworICAgICAgVGhlIGBgX19zdXBwcmVzc19jb250ZXh0X19gYCB2YWx1ZSBmcm9tIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0YWNrCisKKyAgICAgIEEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIHJlcHJlc2VudGluZyB0aGUgdHJhY2ViYWNrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBleGNfdHlwZQorCisgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYWNlYmFjay4KKworICAgLi4gYXR0cmlidXRlOjogZmlsZW5hbWUKKworICAgICAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgZmlsZSBuYW1lIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogdGV4dAorCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSB0ZXh0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogb2Zmc2V0CisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZC4KKworICAgLi4gYXR0cmlidXRlOjogbXNnCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UuCisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZnJvbV9leGNlcHRpb24oZXhjLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UpCisKKyAgICAgIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciBsYXRlciByZW5kZXJpbmcuICpsaW1pdCosICpsb29rdXBfbGluZXMqIGFuZAorICAgICAgKmNhcHR1cmVfbG9jYWxzKiBhcmUgYXMgZm9yIHRoZSA6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgY2xhc3MuCisKKyAgICAgIE5vdGUgdGhhdCB3aGVuIGxvY2FscyBhcmUgY2FwdHVyZWQsIHRoZXkgYXJlIGFsc28gc2hvd24gaW4gdGhlIHRyYWNlYmFjay4KKworICAgLi4gbWV0aG9kOjogZm9ybWF0KCosIGNoYWluPVRydWUpCisKKyAgICAgIEZvcm1hdCB0aGUgZXhjZXB0aW9uLgorCisgICAgICBJZiAqY2hhaW4qIGlzIG5vdCBgYFRydWVgYCwgYGBfX2NhdXNlX19gYCBhbmQgYGBfX2NvbnRleHRfX2BgIHdpbGwgbm90CisgICAgICBiZSBmb3JtYXR0ZWQuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lIGFuZAorICAgICAgc29tZSBjb250YWluaW5nIGludGVybmFsIG5ld2xpbmVzLiA6ZnVuYzpgfnRyYWNlYmFjay5wcmludF9leGNlcHRpb25gCisgICAgICBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kIHdoaWNoIGp1c3QgcHJpbnRzIHRoZSBsaW5lcyB0byBhIGZpbGUuCisKKyAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisKKyAgIC4uIG1ldGhvZDo6ICBmb3JtYXRfZXhjZXB0aW9uX29ubHkoKQorCisgICAgICBGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIHRoZSB0cmFjZWJhY2suCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lLgorCisgICAgICBOb3JtYWxseSwgdGhlIGdlbmVyYXRvciBlbWl0cyBhIHNpbmdsZSBzdHJpbmc7IGhvd2V2ZXIsIGZvcgorICAgICAgOmV4YzpgU3ludGF4RXJyb3JgIGV4Y2VwdGlvbnMsIGl0IGVtaXRzIHNldmVyYWwgbGluZXMgdGhhdCAod2hlbgorICAgICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUgc3ludGF4CisgICAgICBlcnJvciBvY2N1cnJlZC4KKworICAgICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CisgICAgICBzdHJpbmcgaW4gdGhlIG91dHB1dC4KKworCis6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKzpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3RzIHJlcHJlc2VudCBhIGNhbGwgc3RhY2sgcmVhZHkgZm9yIGZvcm1hdHRpbmcuCisKKy4uIGNsYXNzOjogU3RhY2tTdW1tYXJ5CisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZXh0cmFjdChmcmFtZV9nZW4sICosIGxpbWl0PU5vbmUsIGxvb2t1cF9saW5lcz1UcnVlLCBjYXB0dXJlX2xvY2Fscz1GYWxzZSkKKworICAgICAgQ29uc3RydWN0IGEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIG9iamVjdCBmcm9tIGEgZnJhbWUgZ2VuZXJhdG9yIChzdWNoIGFzCisgICAgICBpcyByZXR1cm5lZCBieSA6ZnVuYzpgfnRyYWNlYmFjay53YWxrX3N0YWNrYCBvcgorICAgICAgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa190YmApLgorCisgICAgICBJZiAqbGltaXQqIGlzIHN1cHBsaWVkLCBvbmx5IHRoaXMgbWFueSBmcmFtZXMgYXJlIHRha2VuIGZyb20gKmZyYW1lX2dlbiouCisgICAgICBJZiAqbG9va3VwX2xpbmVzKiBpcyBgYEZhbHNlYGAsIHRoZSByZXR1cm5lZCA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAKKyAgICAgIG9iamVjdHMgd2lsbCBub3QgaGF2ZSByZWFkIHRoZWlyIGxpbmVzIGluIHlldCwgbWFraW5nIHRoZSBjb3N0IG9mCisgICAgICBjcmVhdGluZyB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNoZWFwZXIgKHdoaWNoIG1heSBiZSB2YWx1YWJsZSBpZiBpdAorICAgICAgbWF5IG5vdCBhY3R1YWxseSBnZXQgZm9ybWF0dGVkKS4gSWYgKmNhcHR1cmVfbG9jYWxzKiBpcyBgYFRydWVgYCB0aGUKKyAgICAgIGxvY2FsIHZhcmlhYmxlcyBpbiBlYWNoIDpjbGFzczpgRnJhbWVTdW1tYXJ5YCBhcmUgY2FwdHVyZWQgYXMgb2JqZWN0CisgICAgICByZXByZXNlbnRhdGlvbnMuCisKKyAgIC4uIGNsYXNzbWV0aG9kOjogZnJvbV9saXN0KGFfbGlzdCkKKworICAgICAgQ29uc3RydWN0IGEgOmNsYXNzOmBTdGFja1N1bW1hcnlgIG9iamVjdCBmcm9tIGEgc3VwcGxpZWQgb2xkLXN0eWxlIGxpc3QKKyAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKKyAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgorCisKKzpjbGFzczpgRnJhbWVTdW1tYXJ5YCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworOmNsYXNzOmBGcmFtZVN1bW1hcnlgIG9iamVjdHMgcmVwcmVzZW50IGEgc2luZ2xlIGZyYW1lIGluIGEgdHJhY2ViYWNrLgorCisuLiBjbGFzczo6IEZyYW1lU3VtbWFyeShmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsb29rdXBfbGluZT1UcnVlLCBsb2NhbHM9Tm9uZSwgbGluZT1Ob25lKQorCisgICBSZXByZXNlbnQgYSBzaW5nbGUgZnJhbWUgaW4gdGhlIHRyYWNlYmFjayBvciBzdGFjayB0aGF0IGlzIGJlaW5nIGZvcm1hdHRlZAorICAgb3IgcHJpbnRlZC4gSXQgbWF5IG9wdGlvbmFsbHkgaGF2ZSBhIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgdGhlIGZyYW1lcworICAgbG9jYWxzIGluY2x1ZGVkIGluIGl0LiBJZiAqbG9va3VwX2xpbmUqIGlzIGBgRmFsc2VgYCwgdGhlIHNvdXJjZSBjb2RlIGlzIG5vdAorICAgbG9va2VkIHVwIHVudGlsIHRoZSA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgaGFzIHRoZSA6YXR0cjpgfkZyYW1lU3VtbWFyeS5saW5lYAorICAgYXR0cmlidXRlIGFjY2Vzc2VkICh3aGljaCBhbHNvIGhhcHBlbnMgd2hlbiBjYXN0aW5nIGl0IHRvIGEgdHVwbGUpLgorICAgOmF0dHI6YH5GcmFtZVN1bW1hcnkubGluZWAgbWF5IGJlIGRpcmVjdGx5IHByb3ZpZGVkLCBhbmQgd2lsbCBwcmV2ZW50IGxpbmUKKyAgIGxvb2t1cHMgaGFwcGVuaW5nIGF0IGFsbC4gKmxvY2FscyogaXMgYW4gb3B0aW9uYWwgbG9jYWwgdmFyaWFibGUKKyAgIGRpY3Rpb25hcnksIGFuZCBpZiBzdXBwbGllZCB0aGUgdmFyaWFibGUgcmVwcmVzZW50YXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCisgICBzdW1tYXJ5IGZvciBsYXRlciBkaXNwbGF5LgogCiAuLiBfdHJhY2ViYWNrLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAppbmRleCBhMDRhNDMyLi4xM2M4MWE3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CkBAIC0zNjMsNyArMzYzLDcgQEAKICAgIEZpbHRlciBvbiB0cmFjZXMgb2YgbWVtb3J5IGJsb2Nrcy4KIAogICAgU2VlIHRoZSA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbiBmb3IgdGhlIHN5bnRheCBvZgotICAgKmZpbGVuYW1lX3BhdHRlcm4qLiBUaGUgYGAnLnB5YydgYCBhbmQgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbnMgYXJlCisgICAqZmlsZW5hbWVfcGF0dGVybiouIFRoZSBgYCcucHljJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzCiAgICByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KIAogICAgRXhhbXBsZXM6CkBAIC0zNzQsNiArMzc0LDEwIEBACiAgICAgIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUKICAgICogYGBGaWx0ZXIoRmFsc2UsICI8dW5rbm93bj4iKWBgIGV4Y2x1ZGVzIGVtcHR5IHRyYWNlYmFja3MKIAorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJy5weW8nYGAgZmlsZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlcGxhY2VkIHdpdGggYGAnLnB5J2BgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKIAogICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IHRyYWNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCkBAIC02MzEsNCArNjM1LDMgQEAKICAgICAgICAgICAgICAgb2JqID0gT2JqZWN0KCkKICAgICAgICAgICAgIEZpbGUgInRlc3QucHkiLCBsaW5lIDEyCiAgICAgICAgICAgICAgIHRiID0gdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2soZigpKQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90dXJ0bGUucnN0IGIvRG9jL2xpYnJhcnkvdHVydGxlLnJzdAppbmRleCBlZmU1YzU0Li4zMGRkNmVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90dXJ0bGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QKQEAgLTE4NzksNyArMTg3OSw3IEBACiAKICAgICAgID4+PiBjdiA9IHNjcmVlbi5nZXRjYW52YXMoKQogICAgICAgPj4+IGN2Ci0gICAgICA8dHVydGxlLlNjcm9sbGVkQ2FudmFzIG9iamVjdCBhdCAuLi4+CisgICAgICA8dHVydGxlLlNjcm9sbGVkQ2FudmFzIG9iamVjdCAuLi4+CiAKIAogLi4gZnVuY3Rpb246OiBnZXRzaGFwZXMoKQpAQCAtMjM1MSw2ICsyMzUxLDkgQEAKIHwgICAgICAgICAgICAgICAgfCBwYWlyd2lzZSBpbiBvcHBvc2l0ZSAgICAgICAgIHwgc2hhcGVzaXplLCB0aWx0LCAgICAgIHwKIHwgICAgICAgICAgICAgICAgfCBkaXJlY3Rpb24gICAgICAgICAgICAgICAgICAgIHwgZ2V0X3NoYXBlcG9seSwgdXBkYXRlIHwKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgc29ydGluZ19hbmltYXRlfCB2aXN1YWwgZGVtb25zdHJhdGlvbiBvZiAgICAgIHwgc2ltcGxlIGFsaWdubWVudCwgICAgIHwKK3wgICAgICAgICAgICAgICAgfCBkaWZmZXJlbnQgc29ydGluZyBtZXRob2RzICAgIHwgcmFuZG9taXphdGlvbiAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgdHJlZSAgICAgICAgICAgfCBhIChncmFwaGljYWwpIGJyZWFkdGggICAgICAgIHwgOmZ1bmM6YGNsb25lYCAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgfCBmaXJzdCB0cmVlICh1c2luZyBnZW5lcmF0b3JzKXwgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCBhYmRiOTM5Li4zZmIwYzljIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC0xMTUsNiArMTE1LDEwIEBACiAgICBUaGUgdHlwZSBvZiA6dGVybTpgbW9kdWxlcyA8bW9kdWxlPmAuIENvbnN0cnVjdG9yIHRha2VzIHRoZSBuYW1lIG9mIHRoZQogICAgbW9kdWxlIHRvIGJlIGNyZWF0ZWQgYW5kIG9wdGlvbmFsbHkgaXRzIDp0ZXJtOmBkb2NzdHJpbmdgLgogCisgICAuLiBub3RlOjoKKyAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZSBpZiB5b3UKKyAgICAgIHdpc2ggdG8gc2V0IHRoZSB2YXJpb3VzIGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMuCisKICAgIC4uIGF0dHJpYnV0ZTo6IF9fZG9jX18KIAogICAgICAgVGhlIDp0ZXJtOmBkb2NzdHJpbmdgIG9mIHRoZSBtb2R1bGUuIERlZmF1bHRzIHRvIGBgTm9uZWBgLgpAQCAtMjY3LDMgKzI3MSwxNyBAQAogICAgYXR0cmlidXRlcyBvbiB0aGUgY2xhc3Mgd2l0aCB0aGUgc2FtZSBuYW1lIChzZWUgRW51bSBmb3IgYW4gZXhhbXBsZSkuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKK0Nvcm91dGluZXMgVXRpbGl0eSBGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjb3JvdXRpbmUoZ2VuX2Z1bmMpCisKKyAgIFRoZSBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGEgOnRlcm06YGNvcm91dGluZSBmdW5jdGlvbmAsCisgICBzbyB0aGF0IGl0IHJldHVybnMgYSA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QuCisKKyAgICpnZW5fZnVuYyogaXMgbW9kaWZpZWQgaW4tcGxhY2UsIGhlbmNlIHRoZSBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhCisgICBkZWNvcmF0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YmVhMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTAsMCArMSwxNSBAQAorOm1vZDpgdHlwaW5nYCAtLS0gU3VwcG9ydCBmb3IgdHlwZSBoaW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB0eXBpbmcKKyAgIDpzeW5vcHNpczogU3VwcG9ydCBmb3IgdHlwZSBoaW50cyAoc2VlIFBFUCA0ODQpLgorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi90eXBpbmcucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAorZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZSA6Y2xhc3M6YEFueWAsIDpjbGFzczpgVW5pb25gLAorOmNsYXNzOmBUdXBsZWAsIDpjbGFzczpgQ2FsbGFibGVgLCA6Y2xhc3M6YFR5cGVWYXJgLCBhbmQKKzpjbGFzczpgR2VuZXJpY2AuICBGb3IgZnVsbCBzcGVjaWZpY2F0aW9uIHBsZWFzZSBzZWUgOnBlcDpgNDg0YC4gIEZvcgorYSBzaW1wbGlmaWVkIGludHJvZHVjdGlvbiB0byB0eXBlIGhpbnRzIHNlZSA6cGVwOmA0ODNgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDNiM2QzYTAuLjI0ZGRlZjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE1LDggKzE1LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA2LjMuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDcuMC4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNy4wLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0xNjYsNiArMTY2LDYgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvTmFtZUFsaWFzZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNy4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzcuMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKaW5kZXggOTFkNWEyNy4uZjc2YzMwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTE4MSw3MSArMTgxLDc3IEBACiAtLS0tLS0tLS0tLS0tLQogCiAKLWBNb2NrYCBpcyBhIGZsZXhpYmxlIG1vY2sgb2JqZWN0IGludGVuZGVkIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiBzdHVicyBhbmQKKzpjbGFzczpgTW9ja2AgaXMgYSBmbGV4aWJsZSBtb2NrIG9iamVjdCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSB1c2Ugb2Ygc3R1YnMgYW5kCiB0ZXN0IGRvdWJsZXMgdGhyb3VnaG91dCB5b3VyIGNvZGUuIE1vY2tzIGFyZSBjYWxsYWJsZSBhbmQgY3JlYXRlIGF0dHJpYnV0ZXMgYXMKIG5ldyBtb2NrcyB3aGVuIHlvdSBhY2Nlc3MgdGhlbSBbI11fLiBBY2Nlc3NpbmcgdGhlIHNhbWUgYXR0cmlidXRlIHdpbGwgYWx3YXlzCiByZXR1cm4gdGhlIHNhbWUgbW9jay4gTW9ja3MgcmVjb3JkIGhvdyB5b3UgdXNlIHRoZW0sIGFsbG93aW5nIHlvdSB0byBtYWtlCiBhc3NlcnRpb25zIGFib3V0IHdoYXQgeW91ciBjb2RlIGhhcyBkb25lIHRvIHRoZW0uCiAKLTpjbGFzczpgTWFnaWNNb2NrYCBpcyBhIHN1YmNsYXNzIG9mIGBNb2NrYCB3aXRoIGFsbCB0aGUgbWFnaWMgbWV0aG9kcworOmNsYXNzOmBNYWdpY01vY2tgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBNb2NrYCB3aXRoIGFsbCB0aGUgbWFnaWMgbWV0aG9kcwogcHJlLWNyZWF0ZWQgYW5kIHJlYWR5IHRvIHVzZS4gVGhlcmUgYXJlIGFsc28gbm9uLWNhbGxhYmxlIHZhcmlhbnRzLCB1c2VmdWwKIHdoZW4geW91IGFyZSBtb2NraW5nIG91dCBvYmplY3RzIHRoYXQgYXJlbid0IGNhbGxhYmxlOgogOmNsYXNzOmBOb25DYWxsYWJsZU1vY2tgIGFuZCA6Y2xhc3M6YE5vbkNhbGxhYmxlTWFnaWNNb2NrYAogCiBUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3JzIG1ha2VzIGl0IGVhc3kgdG8gdGVtcG9yYXJpbHkgcmVwbGFjZSBjbGFzc2VzCi1pbiBhIHBhcnRpY3VsYXIgbW9kdWxlIHdpdGggYSBgTW9ja2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBjcmVhdGUKLWEgYE1hZ2ljTW9ja2AgZm9yIHlvdS4gWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIGNsYXNzIG9mIGBNb2NrYCB1c2luZwotdGhlIGBuZXdfY2FsbGFibGVgIGFyZ3VtZW50IHRvIGBwYXRjaGAuCitpbiBhIHBhcnRpY3VsYXIgbW9kdWxlIHdpdGggYSA6Y2xhc3M6YE1vY2tgIG9iamVjdC4gQnkgZGVmYXVsdCA6ZnVuYzpgcGF0Y2hgIHdpbGwgY3JlYXRlCithIDpjbGFzczpgTWFnaWNNb2NrYCBmb3IgeW91LiBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgY2xhc3Mgb2YgOmNsYXNzOmBNb2NrYCB1c2luZwordGhlICpuZXdfY2FsbGFibGUqIGFyZ3VtZW50IHRvIDpmdW5jOmBwYXRjaGAuCiAKIAotLi4gY2xhc3M6OiBNb2NrKHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgKiprd2FyZ3MpCisuLiBjbGFzczo6IE1vY2soc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCB1bnNhZmU9RmFsc2UsICoqa3dhcmdzKQogCi0gICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YE1vY2tgIG9iamVjdC4gOmNsYXNzOmBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cwogICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKIAotICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgKiAqc3BlYyo6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKICAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKICAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgogICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLgotICAgICAgQWNjZXNzaW5nIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisgICAgICBBY2Nlc3NpbmcgYW55IGF0dHJpYnV0ZSBub3QgaW4gdGhpcyBsaXN0IHdpbGwgcmFpc2UgYW4gOmV4YzpgQXR0cmlidXRlRXJyb3JgLgogCi0gICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgSWYgKnNwZWMqIGlzIGFuIG9iamVjdCAocmF0aGVyIHRoYW4gYSBsaXN0IG9mIHN0cmluZ3MpIHRoZW4KICAgICAgIDphdHRyOmB+aW5zdGFuY2UuX19jbGFzc19fYCByZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgc3BlYyBvYmplY3QuIFRoaXMKLSAgICAgIGFsbG93cyBtb2NrcyB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cy4KKyAgICAgIGFsbG93cyBtb2NrcyB0byBwYXNzIDpmdW5jOmBpc2luc3RhbmNlYCB0ZXN0cy4KIAotICAgICogYHNwZWNfc2V0YDogQSBzdHJpY3RlciB2YXJpYW50IG9mIGBzcGVjYC4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgorICAgICogKnNwZWNfc2V0KjogQSBzdHJpY3RlciB2YXJpYW50IG9mICpzcGVjKi4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgogICAgICAgb3IgZ2V0IGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9jayB0aGF0IGlzbid0IG9uIHRoZSBvYmplY3QgcGFzc2VkIGFzCi0gICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKyAgICAgICpzcGVjX3NldCogd2lsbCByYWlzZSBhbiA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAuCiAKLSAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCisgICAgKiAqc2lkZV9lZmZlY3QqOiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgTW9jayBpcyBjYWxsZWQuIFNlZQogICAgICAgdGhlIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgYXR0cmlidXRlLiBVc2VmdWwgZm9yIHJhaXNpbmcgZXhjZXB0aW9ucyBvcgogICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCiAgICAgICBhcmd1bWVudHMgYXMgdGhlIG1vY2ssIGFuZCB1bmxlc3MgaXQgcmV0dXJucyA6ZGF0YTpgREVGQVVMVGAsIHRoZSByZXR1cm4KICAgICAgIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlLgogCi0gICAgICBBbHRlcm5hdGl2ZWx5IGBzaWRlX2VmZmVjdGAgY2FuIGJlIGFuIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZS4gSW4KKyAgICAgIEFsdGVybmF0aXZlbHkgKnNpZGVfZWZmZWN0KiBjYW4gYmUgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLiBJbgogICAgICAgdGhpcyBjYXNlIHRoZSBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuCiAKLSAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIElmICpzaWRlX2VmZmVjdCogaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KICAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLgogCi0gICAgICBBIGBzaWRlX2VmZmVjdGAgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBpdCB0byBgTm9uZWAuCisgICAgICBBICpzaWRlX2VmZmVjdCogY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBpdCB0byBgYE5vbmVgYC4KIAotICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICogKnJldHVybl92YWx1ZSo6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAogICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKICAgICAgIDphdHRyOmByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KIAotICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICogKnVuc2FmZSo6IEJ5IGRlZmF1bHQgaWYgYW55IGF0dHJpYnV0ZSBzdGFydHMgd2l0aCAqYXNzZXJ0KiBvcgorICAgICAgKmFzc3JldCogd2lsbCByYWlzZSBhbiA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAuIFBhc3NpbmcgYGB1bnNhZmU9VHJ1ZWBgCisgICAgICB3aWxsIGFsbG93IGFjY2VzcyB0byB0aGVzZSBhdHRyaWJ1dGVzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgICogKndyYXBzKjogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmICp3cmFwcyogaXMgbm90IE5vbmUgdGhlbgogICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKICAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCiAgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZAogICAgICAgb2JqZWN0IChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwKLSAgICAgIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmApLgorICAgICAgcmFpc2UgYW4gOmV4YzpgQXR0cmlidXRlRXJyb3JgKS4KIAotICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCi0gICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0ICpyZXR1cm5fdmFsdWUqIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSAqcmV0dXJuX3ZhbHVlKiBpcyByZXR1cm5lZCBpbnN0ZWFkLgogCi0gICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgKiAqbmFtZSo6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCiAgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAogICAgICAgbW9ja3MuCiAKQEAgLTMxNSw2ICszMjEsMjAgQEAKICAgICAgICAgICAgID4+PiBjYWxscyA9IFtjYWxsKDQpLCBjYWxsKDIpLCBjYWxsKDMpXQogICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgICAgID4+PiBtID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICA+Pj4gb2JqID0gbS5oZWxsbygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdoZWxsbycgdG8gbm90IGhhdmUgYmVlbiBjYWxsZWQuIENhbGxlZCAxIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKICAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKIApAQCAtMTAzMiwyNSArMTA1MiwzMSBAQAogICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKICAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQogCi0gICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICAuLiBub3RlOjoKKworICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBJZiB5b3UgYXJlIHBhdGNoaW5nIGJ1aWx0aW5zIGluIGEgbW9kdWxlIHRoZW4geW91IGRvbid0CisgICAgICAgICAgIG5lZWQgdG8gcGFzcyBgYGNyZWF0ZT1UcnVlYGAsIGl0IHdpbGwgYmUgYWRkZWQgYnkgZGVmYXVsdC4KKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgOmNsYXNzOmBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQogICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKLSAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gYHBhdGNoYCBmaW5kcwotICAgIHRlc3RzIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZCBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggYHBhdGNoLlRFU1RfUFJFRklYYC4KLSAgICBCeSBkZWZhdWx0IHRoaXMgaXMgYHRlc3RgLCB3aGljaCBtYXRjaGVzIHRoZSB3YXkgYHVuaXR0ZXN0YCBmaW5kcyB0ZXN0cy4KLSAgICBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYC4KKyAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gOmZ1bmM6YHBhdGNoYCBmaW5kcworICAgIHRlc3RzIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZCBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggYGBwYXRjaC5URVNUX1BSRUZJWGBgLgorICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgYCd0ZXN0J2BgLCB3aGljaCBtYXRjaGVzIHRoZSB3YXkgOm1vZDpgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgorICAgIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwcmVmaXggYnkgc2V0dGluZyBgYHBhdGNoLlRFU1RfUFJFRklYYGAuCiAKICAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCiAgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKICAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQotICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIDpmdW5jOmBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgogCi0gICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCi0gICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKyAgICA6ZnVuYzpgcGF0Y2hgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZSBwYXNzZWQgdG8KKyAgICB0aGUgOmNsYXNzOmBNb2NrYCAob3IgKm5ld19jYWxsYWJsZSopIG9uIGNvbnN0cnVjdGlvbi4KIAotICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYGBwYXRjaC5kaWN0KC4uLilgYCwgYGBwYXRjaC5tdWx0aXBsZSguLi4pYGAgYW5kIGBgcGF0Y2gub2JqZWN0KC4uLilgYCBhcmUKICAgICBhdmFpbGFibGUgZm9yIGFsdGVybmF0ZSB1c2UtY2FzZXMuCiAKLWBwYXRjaGAgYXMgZnVuY3Rpb24gZGVjb3JhdG9yLCBjcmVhdGluZyB0aGUgbW9jayBmb3IgeW91IGFuZCBwYXNzaW5nIGl0IGludG8KKzpmdW5jOmBwYXRjaGAgYXMgZnVuY3Rpb24gZGVjb3JhdG9yLCBjcmVhdGluZyB0aGUgbW9jayBmb3IgeW91IGFuZCBwYXNzaW5nIGl0IGludG8KIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb246CiAKICAgICA+Pj4gQHBhdGNoKCdfX21haW5fXy5Tb21lQ2xhc3MnKQpAQCAtMTM5MiwxNSArMTQxOCwzMSBAQAogICAgICAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MgaXMgc2VsZi5Nb2NrQ2xhc3MKICAgICAgICAgLi4uCiAKLSAgICBBcyBhbiBhZGRlZCBib251cyB5b3Ugbm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgYHBhdGNoZXJgCisgICAgQXMgYW4gYWRkZWQgYm9udXMgeW91IG5vIGxvbmdlciBuZWVkIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGBgcGF0Y2hlcmBgCiAgICAgb2JqZWN0LgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHN0b3AgYWxsIHBhdGNoZXMgd2hpY2ggaGF2ZSBiZWVuIHN0YXJ0ZWQgYnkgdXNpbmcKLWBwYXRjaC5zdG9wYWxsYC4KKzpmdW5jOmBwYXRjaC5zdG9wYWxsYC4KIAogLi4gZnVuY3Rpb246OiBwYXRjaC5zdG9wYWxsCiAKLSAgICBTdG9wIGFsbCBhY3RpdmUgcGF0Y2hlcy4gT25seSBzdG9wcyBwYXRjaGVzIHN0YXJ0ZWQgd2l0aCBgc3RhcnRgLgorICAgIFN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiBPbmx5IHN0b3BzIHBhdGNoZXMgc3RhcnRlZCB3aXRoIGBgc3RhcnRgYC4KKworCisuLiBfcGF0Y2gtYnVpbHRpbnM6CisKK3BhdGNoIGJ1aWx0aW5zCit+fn5+fn5+fn5+fn5+fgorWW91IGNhbiBwYXRjaCBhbnkgYnVpbHRpbnMgd2l0aGluIGEgbW9kdWxlLiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgcGF0Y2hlcworYnVpbHRpbiA6ZnVuYzpgb3JkYDoKKworICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLm9yZCcpCisgICAgLi4uIGRlZiB0ZXN0KG1vY2tfb3JkKToKKyAgICAuLi4gICAgIG1vY2tfb3JkLnJldHVybl92YWx1ZSA9IDEwMQorICAgIC4uLiAgICAgcHJpbnQob3JkKCdjJykpCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorICAgIDEwMQogCiAKIFRFU1RfUFJFRklYCkBAIC0xNTg3LDcgKzE2MjksNyBAQAogKiBDb250ZXh0IG1hbmFnZXI6IGBgX19lbnRlcl9fYGAgYW5kIGBgX19leGl0X19gYAogKiBVbmFyeSBudW1lcmljIG1ldGhvZHM6IGBgX19uZWdfX2BgLCBgYF9fcG9zX19gYCBhbmQgYGBfX2ludmVydF9fYGAKICogVGhlIG51bWVyaWMgbWV0aG9kcyAoaW5jbHVkaW5nIHJpZ2h0IGhhbmQgYW5kIGluLXBsYWNlIHZhcmlhbnRzKToKLSAgYGBfX2FkZF9fYGAsIGBgX19zdWJfX2BgLCBgYF9fbXVsX19gYCwgYGBfX2Rpdl9fYGAsYGBfX3RydWVkaXZfX2BgLAorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fbWF0bXVsX19gYCwgYGBfX2Rpdl9fYGAsIGBgX190cnVlZGl2X19gYCwKICAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKICAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCiAqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgCkBAIC0yMDEzLDcgKzIwNTUsNyBAQAogZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgogCiAgICAgPj4+IG0gPSBtb2NrX29wZW4oKQotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSk6CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKICAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKICAgICAuLi4KQEAgLTIwMjgsNyArMjA3MCw3IEBACiAKIEFuZCBmb3IgcmVhZGluZyBmaWxlczoKIAotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJykpIGFzIG06CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CiAgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKICAgICAuLi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCBiZGIxOGJjLi43MGY5OWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0yMTQsOSArMjE0LDE2IEBACiAKICAgIFN0b3AgdGhlIHRlc3QgcnVuIG9uIHRoZSBmaXJzdCBlcnJvciBvciBmYWlsdXJlLgogCisuLiBjbWRvcHRpb246OiAtLWxvY2FscworCisgICBTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzLgorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgIFRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBgYC1iYGAsIGBgLWNgYCBhbmQgYGAtZmBgIHdlcmUgYWRkZWQuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgVGhlIGNvbW1hbmQtbGluZSBvcHRpb24gYGAtLWxvY2Fsc2BgLgorCiBUaGUgY29tbWFuZCBsaW5lIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRlc3QgZGlzY292ZXJ5LCBmb3IgcnVubmluZyBhbGwgb2YgdGhlCiB0ZXN0cyBpbiBhIHByb2plY3Qgb3IganVzdCBhIHN1YnNldC4KIApAQCAtMTU0Myw2ICsxNTUwLDIwIEBACiAgICA6ZGF0YTpgdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXJgLiAgVXNpbmcgYSBzdWJjbGFzcyBvciBpbnN0YW5jZSwgaG93ZXZlciwKICAgIGFsbG93cyBjdXN0b21pemF0aW9uIG9mIHNvbWUgY29uZmlndXJhYmxlIHByb3BlcnRpZXMuCiAKKyAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcnJvcnMKKworICAgICAgQSBsaXN0IG9mIHRoZSBub24tZmF0YWwgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIGxvYWRpbmcgdGVzdHMuIE5vdCByZXNldAorICAgICAgYnkgdGhlIGxvYWRlciBhdCBhbnkgcG9pbnQuIEZhdGFsIGVycm9ycyBhcmUgc2lnbmFsbGVkIGJ5IHRoZSByZWxldmFudAorICAgICAgYSBtZXRob2QgcmFpc2luZyBhbiBleGNlcHRpb24gdG8gdGhlIGNhbGxlci4gTm9uLWZhdGFsIGVycm9ycyBhcmUgYWxzbworICAgICAgaW5kaWNhdGVkIGJ5IGEgc3ludGhldGljIHRlc3QgdGhhdCB3aWxsIHJhaXNlIHRoZSBvcmlnaW5hbCBlcnJvciB3aGVuCisgICAgICBydW4uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogCkBAIC0xNTUyLDcgKzE1NzMsNyBAQAogICAgICAgOmNsYXNzOmB0ZXN0Q2FzZUNsYXNzYC4KIAogCi0gICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkKKyAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpCiAKICAgICAgIFJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIGdpdmVuIG1vZHVsZS4gVGhpcwogICAgICAgbWV0aG9kIHNlYXJjaGVzICptb2R1bGUqIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YFRlc3RDYXNlYCBhbmQKQEAgLTE1NjksMTEgKzE1OTAsMTggQEAKIAogICAgICAgSWYgYSBtb2R1bGUgcHJvdmlkZXMgYSBgYGxvYWRfdGVzdHNgYCBmdW5jdGlvbiBpdCB3aWxsIGJlIGNhbGxlZCB0bwogICAgICAgbG9hZCB0aGUgdGVzdHMuIFRoaXMgYWxsb3dzIG1vZHVsZXMgdG8gY3VzdG9taXplIHRlc3QgbG9hZGluZy4KLSAgICAgIFRoaXMgaXMgdGhlIGBsb2FkX3Rlc3RzIHByb3RvY29sYF8uCisgICAgICBUaGlzIGlzIHRoZSBgbG9hZF90ZXN0cyBwcm90b2NvbGBfLiAgVGhlICpwYXR0ZXJuKiBhcmd1bWVudCBpcyBwYXNzZWQgYXMKKyAgICAgIHRoZSB0aGlyZCBhcmd1bWVudCB0byBgYGxvYWRfdGVzdHNgYC4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIFN1cHBvcnQgZm9yIGBgbG9hZF90ZXN0c2BgIGFkZGVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgVGhlIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbCAqdXNlX2xvYWRfdGVzdHMqIGRlZmF1bHQgYXJndW1lbnQgaXMKKyAgICAgICAgIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQsIGFsdGhvdWdoIGl0IGlzIHN0aWxsIGFjY2VwdGVkIGZvciBiYWNrd2FyZAorICAgICAgICAgY29tcGF0aWJpbGl0eS4gIFRoZSBtZXRob2QgYWxzbyBub3cgYWNjZXB0cyBhIGtleXdvcmQtb25seSBhcmd1bWVudAorICAgICAgICAgKnBhdHRlcm4qIHdoaWNoIGlzIHBhc3NlZCB0byBgYGxvYWRfdGVzdHNgYCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuCisKIAogICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgbW9kdWxlPU5vbmUpCiAKQEAgLTE1OTksNiArMTYyNywxMiBAQAogCiAgICAgICBUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgKm5hbWUqIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiAqbW9kdWxlKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIGFuIDpleGM6YEltcG9ydEVycm9yYCBvciA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb2NjdXJzIHdoaWxlIHRyYXZlcnNpbmcKKyAgICAgICpuYW1lKiB0aGVuIGEgc3ludGhldGljIHRlc3QgdGhhdCByYWlzZXMgdGhhdCBlcnJvciB3aGVuIHJ1biB3aWxsIGJlCisgICAgICByZXR1cm5lZC4gVGhlc2UgZXJyb3JzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZXJyb3JzIGFjY3VtdWxhdGVkIGJ5CisgICAgICBzZWxmLmVycm9ycy4KKwogCiAgICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTmFtZXMobmFtZXMsIG1vZHVsZT1Ob25lKQogCkBAIC0xNjI1LDE4ICsxNjU5LDIyIEBACiAgICAgICB0aGUgc3RhcnQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSB0aGVuIHRoZSB0b3AgbGV2ZWwKICAgICAgIGRpcmVjdG9yeSBtdXN0IGJlIHNwZWNpZmllZCBzZXBhcmF0ZWx5LgogCi0gICAgICBJZiBpbXBvcnRpbmcgYSBtb2R1bGUgZmFpbHMsIGZvciBleGFtcGxlIGR1ZSB0byBhIHN5bnRheCBlcnJvciwgdGhlbiB0aGlzCi0gICAgICB3aWxsIGJlIHJlY29yZGVkIGFzIGEgc2luZ2xlIGVycm9yIGFuZCBkaXNjb3Zlcnkgd2lsbCBjb250aW51ZS4gIElmIHRoZQotICAgICAgaW1wb3J0IGZhaWx1cmUgaXMgZHVlIHRvIDpleGM6YFNraXBUZXN0YCBiZWluZyByYWlzZWQsIGl0IHdpbGwgYmUgcmVjb3JkZWQKLSAgICAgIGFzIGEgc2tpcCBpbnN0ZWFkIG9mIGFuIGVycm9yLgorICAgICAgSWYgaW1wb3J0aW5nIGEgbW9kdWxlIGZhaWxzLCBmb3IgZXhhbXBsZSBkdWUgdG8gYSBzeW50YXggZXJyb3IsIHRoZW4KKyAgICAgIHRoaXMgd2lsbCBiZSByZWNvcmRlZCBhcyBhIHNpbmdsZSBlcnJvciBhbmQgZGlzY292ZXJ5IHdpbGwgY29udGludWUuICBJZgorICAgICAgdGhlIGltcG9ydCBmYWlsdXJlIGlzIGR1ZSB0byA6ZXhjOmBTa2lwVGVzdGAgYmVpbmcgcmFpc2VkLCBpdCB3aWxsIGJlCisgICAgICByZWNvcmRlZCBhcyBhIHNraXAgaW5zdGVhZCBvZiBhbiBlcnJvci4KIAotICAgICAgSWYgYSB0ZXN0IHBhY2thZ2UgbmFtZSAoZGlyZWN0b3J5IHdpdGggOmZpbGU6YF9faW5pdF9fLnB5YCkgbWF0Y2hlcyB0aGUKLSAgICAgIHBhdHRlcm4gdGhlbiB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgYGBsb2FkX3Rlc3RzYGAKLSAgICAgIGZ1bmN0aW9uLiBJZiB0aGlzIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggKmxvYWRlciosICp0ZXN0cyosCi0gICAgICAqcGF0dGVybiouCisgICAgICBJZiBhIHBhY2thZ2UgKGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBmaWxlIG5hbWVkIDpmaWxlOmBfX2luaXRfXy5weWApIGlzCisgICAgICBmb3VuZCwgdGhlIHBhY2thZ2Ugd2lsbCBiZSBjaGVja2VkIGZvciBhIGBgbG9hZF90ZXN0c2BgIGZ1bmN0aW9uLiBJZiB0aGlzCisgICAgICBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZAorICAgICAgYGBwYWNrYWdlLmxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybilgYC4gVGVzdCBkaXNjb3ZlcnkgdGFrZXMgY2FyZQorICAgICAgdG8gZW5zdXJlIHRoYXQgYSBwYWNrYWdlIGlzIG9ubHkgY2hlY2tlZCBmb3IgdGVzdHMgb25jZSBkdXJpbmcgYW4KKyAgICAgIGludm9jYXRpb24sIGV2ZW4gaWYgdGhlIGxvYWRfdGVzdHMgZnVuY3Rpb24gaXRzZWxmIGNhbGxzCisgICAgICBgYGxvYWRlci5kaXNjb3ZlcmBgLgogCi0gICAgICBJZiBgYGxvYWRfdGVzdHNgYCBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAqbm90KiByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UsCi0gICAgICBgYGxvYWRfdGVzdHNgYCBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBhbGwgdGVzdHMgaW4gdGhlIHBhY2thZ2UuCisgICAgICBJZiBgYGxvYWRfdGVzdHNgYCBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAqbm90KiByZWN1cnNlIGludG8gdGhlCisgICAgICBwYWNrYWdlLCBgYGxvYWRfdGVzdHNgYCBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBhbGwgdGVzdHMgaW4gdGhlCisgICAgICBwYWNrYWdlLgogCiAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdAogICAgICAgcGFja2FnZXMgY2FuIGNvbnRpbnVlIGRpc2NvdmVyeSB0aGVtc2VsdmVzLiAqdG9wX2xldmVsX2RpciogaXMgc3RvcmVkIHNvCkBAIC0xNjU1LDYgKzE2OTMsMTEgQEAKICAgICAgICAgICAgdGhlIHNhbWUgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbSdzIG9yZGVyaW5nIGlzIG5vdAogICAgICAgICAgICBkZXBlbmRlbnQgb24gZmlsZSBuYW1lLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgRm91bmQgcGFja2FnZXMgYXJlIG5vdyBjaGVja2VkIGZvciBgYGxvYWRfdGVzdHNgYCByZWdhcmRsZXNzIG9mCisgICAgICAgICB3aGV0aGVyIHRoZWlyIHBhdGggbWF0Y2hlcyAqcGF0dGVybiosIGJlY2F1c2UgaXQgaXMgaW1wb3NzaWJsZSBmb3IKKyAgICAgICAgIGEgcGFja2FnZSBuYW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IHBhdHRlcm4uCisKIAogICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG9mIGEgOmNsYXNzOmBUZXN0TG9hZGVyYCBjYW4gYmUgY29uZmlndXJlZCBlaXRoZXIgYnkKICAgIHN1YmNsYXNzaW5nIG9yIGFzc2lnbm1lbnQgb24gYW4gaW5zdGFuY2U6CkBAIC0xNzM3LDEyICsxNzgwLDEwIEBACiAKICAgICAgIFNldCB0byBgYFRydWVgYCB3aGVuIHRoZSBleGVjdXRpb24gb2YgdGVzdHMgc2hvdWxkIHN0b3AgYnkgOm1ldGg6YHN0b3BgLgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IHRlc3RzUnVuCiAKICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgdGVzdHMgcnVuIHNvIGZhci4KIAotCiAgICAuLiBhdHRyaWJ1dGU6OiBidWZmZXIKIAogICAgICAgSWYgc2V0IHRvIHRydWUsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCB3aWxsIGJlIGJ1ZmZlcmVkIGluIGJldHdlZW4KQEAgLTE3NTIsNyArMTc5Myw2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IGZhaWxmYXN0CiAKICAgICAgIElmIHNldCB0byB0cnVlIDptZXRoOmBzdG9wYCB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgZmlyc3QgZmFpbHVyZSBvciBlcnJvciwKQEAgLTE3NjAsNiArMTgwMCwxMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gYXR0cmlidXRlOjogdGJfbG9jYWxzCisKKyAgICAgIElmIHNldCB0byB0cnVlIHRoZW4gbG9jYWwgdmFyaWFibGVzIHdpbGwgYmUgc2hvd24gaW4gdHJhY2ViYWNrcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKICAgIC4uIG1ldGhvZDo6IHdhc1N1Y2Nlc3NmdWwoKQogCkBAIC0xNzcwLDcgKzE4MTUsNiBAQAogICAgICAgICAgUmV0dXJucyBgYEZhbHNlYGAgaWYgdGhlcmUgd2VyZSBhbnkgOmF0dHI6YHVuZXhwZWN0ZWRTdWNjZXNzZXNgCiAgICAgICAgICBmcm9tIHRlc3RzIG1hcmtlZCB3aXRoIHRoZSA6ZnVuYzpgZXhwZWN0ZWRGYWlsdXJlYCBkZWNvcmF0b3IuCiAKLQogICAgLi4gbWV0aG9kOjogc3RvcCgpCiAKICAgICAgIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgdG8gc2lnbmFsIHRoYXQgdGhlIHNldCBvZiB0ZXN0cyBiZWluZyBydW4gc2hvdWxkCkBAIC0xOTAyLDEyICsxOTQ2LDE0IEBACiAKIAogLi4gY2xhc3M6OiBUZXh0VGVzdFJ1bm5lcihzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPVRydWUsIHZlcmJvc2l0eT0xLCBmYWlsZmFzdD1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9RmFsc2UsIHJlc3VsdGNsYXNzPU5vbmUsIHdhcm5pbmdzPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSwgKiwgdGJfbG9jYWxzPUZhbHNlKQogCiAgICBBIGJhc2ljIHRlc3QgcnVubmVyIGltcGxlbWVudGF0aW9uIHRoYXQgb3V0cHV0cyByZXN1bHRzIHRvIGEgc3RyZWFtLiBJZiAqc3RyZWFtKgogICAgaXMgYGBOb25lYGAsIHRoZSBkZWZhdWx0LCA6ZGF0YTpgc3lzLnN0ZGVycmAgaXMgdXNlZCBhcyB0aGUgb3V0cHV0IHN0cmVhbS4gVGhpcyBjbGFzcwogICAgaGFzIGEgZmV3IGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLCBidXQgaXMgZXNzZW50aWFsbHkgdmVyeSBzaW1wbGUuICBHcmFwaGljYWwKLSAgIGFwcGxpY2F0aW9ucyB3aGljaCBydW4gdGVzdCBzdWl0ZXMgc2hvdWxkIHByb3ZpZGUgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucy4KKyAgIGFwcGxpY2F0aW9ucyB3aGljaCBydW4gdGVzdCBzdWl0ZXMgc2hvdWxkIHByb3ZpZGUgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucy4gU3VjaAorICAgaW1wbGVtZW50YXRpb25zIHNob3VsZCBhY2NlcHQgYGAqKmt3YXJnc2BgIGFzIHRoZSBpbnRlcmZhY2UgdG8gY29uc3RydWN0IHJ1bm5lcnMKKyAgIGNoYW5nZXMgd2hlbiBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gdW5pdHRlc3QuCiAKICAgIEJ5IGRlZmF1bHQgdGhpcyBydW5uZXIgc2hvd3MgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwKICAgIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgLCA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGFuZApAQCAtMTkyNiw2ICsxOTcyLDkgQEAKICAgICAgIFRoZSBkZWZhdWx0IHN0cmVhbSBpcyBzZXQgdG8gOmRhdGE6YHN5cy5zdGRlcnJgIGF0IGluc3RhbnRpYXRpb24gdGltZSByYXRoZXIKICAgICAgIHRoYW4gaW1wb3J0IHRpbWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgdGJfbG9jYWxzIHBhcmFtZXRlci4KKwogICAgLi4gbWV0aG9kOjogX21ha2VSZXN1bHQoKQogCiAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiBgYFRlc3RSZXN1bHRgYCB1c2VkIGJ5IDptZXRoOmBydW5gLgpAQCAtMjAyMyw3ICsyMDcyLDEwIEBACiBJZiBhIHRlc3QgbW9kdWxlIGRlZmluZXMgYGBsb2FkX3Rlc3RzYGAgaXQgd2lsbCBiZSBjYWxsZWQgYnkKIDptZXRoOmBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGVgIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgogCi0gICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBOb25lKQorICAgIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybikKKword2hlcmUgKnBhdHRlcm4qIGlzIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIGZyb20gYGBsb2FkVGVzdHNGcm9tTW9kdWxlYGAuICBJdAorZGVmYXVsdHMgdG8gYGBOb25lYGAuCiAKIEl0IHNob3VsZCByZXR1cm4gYSA6Y2xhc3M6YFRlc3RTdWl0ZWAuCiAKQEAgLTIwNDUsMjEgKzIwOTcsMTIgQEAKICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3RzKHRlc3RzKQogICAgICAgICByZXR1cm4gc3VpdGUKIAotSWYgZGlzY292ZXJ5IGlzIHN0YXJ0ZWQsIGVpdGhlciBmcm9tIHRoZSBjb21tYW5kIGxpbmUgb3IgYnkgY2FsbGluZwotOm1ldGg6YFRlc3RMb2FkZXIuZGlzY292ZXJgLCB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBwYWNrYWdlCi1uYW1lIHRoZW4gdGhlIHBhY2thZ2UgOmZpbGU6YF9faW5pdF9fLnB5YCB3aWxsIGJlIGNoZWNrZWQgZm9yIGBgbG9hZF90ZXN0c2BgLgotCi0uLiBub3RlOjoKLQotICAgVGhlIGRlZmF1bHQgcGF0dGVybiBpcyBgYCd0ZXN0Ki5weSdgYC4gVGhpcyBtYXRjaGVzIGFsbCBQeXRob24gZmlsZXMKLSAgIHRoYXQgc3RhcnQgd2l0aCBgYCd0ZXN0J2BgIGJ1dCAqd29uJ3QqIG1hdGNoIGFueSB0ZXN0IGRpcmVjdG9yaWVzLgotCi0gICBBIHBhdHRlcm4gbGlrZSBgYCd0ZXN0KidgYCB3aWxsIG1hdGNoIHRlc3QgcGFja2FnZXMgYXMgd2VsbCBhcwotICAgbW9kdWxlcy4KLQotSWYgdGhlIHBhY2thZ2UgOmZpbGU6YF9faW5pdF9fLnB5YCBkZWZpbmVzIGBgbG9hZF90ZXN0c2BgIHRoZW4gaXQgd2lsbCBiZQotY2FsbGVkIGFuZCBkaXNjb3Zlcnkgbm90IGNvbnRpbnVlZCBpbnRvIHRoZSBwYWNrYWdlLiBgYGxvYWRfdGVzdHNgYAotaXMgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgorSWYgZGlzY292ZXJ5IGlzIHN0YXJ0ZWQgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIHBhY2thZ2UsIGVpdGhlciBmcm9tIHRoZQorY29tbWFuZCBsaW5lIG9yIGJ5IGNhbGxpbmcgOm1ldGg6YFRlc3RMb2FkZXIuZGlzY292ZXJgLCB0aGVuIHRoZSBwYWNrYWdlCis6ZmlsZTpgX19pbml0X18ucHlgIHdpbGwgYmUgY2hlY2tlZCBmb3IgYGBsb2FkX3Rlc3RzYGAuICBJZiB0aGF0IGZ1bmN0aW9uIGRvZXMKK25vdCBleGlzdCwgZGlzY292ZXJ5IHdpbGwgcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlIGFzIHRob3VnaCBpdCB3ZXJlIGp1c3QKK2Fub3RoZXIgZGlyZWN0b3J5LiAgT3RoZXJ3aXNlLCBkaXNjb3Zlcnkgb2YgdGhlIHBhY2thZ2UncyB0ZXN0cyB3aWxsIGJlIGxlZnQgdXAKK3RvIGBgbG9hZF90ZXN0c2BgIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOjoKIAogICAgIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybikKIApAQCAtMjA3OCw2ICsyMTIxLDExIEBACiAgICAgICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCiAgICAgICAgIHJldHVybiBzdGFuZGFyZF90ZXN0cwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgRGlzY292ZXJ5IG5vIGxvbmdlciBjaGVja3MgcGFja2FnZSBuYW1lcyBmb3IgbWF0Y2hpbmcgKnBhdHRlcm4qIGR1ZSB0byB0aGUKKyAgIGltcG9zc2liaWxpdHkgb2YgcGFja2FnZSBuYW1lcyBtYXRjaGluZyB0aGUgZGVmYXVsdCBwYXR0ZXJuLgorCisKIAogQ2xhc3MgYW5kIE1vZHVsZSBGaXh0dXJlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKaW5kZXggMTU0YTUyMS4uODAwZjgzMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CkBAIC0yNjgsNiArMjY4LDExIEBACiAgICA6ZnVuYzpgdXJsdW5zcGxpdGAsIHJlbW92aW5nIHBvc3NpYmxlICpzY2hlbWUqIGFuZCAqbmV0bG9jKiBwYXJ0cy4KIAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBCZWhhdmlvdXIgdXBkYXRlZCB0byBtYXRjaCB0aGUgc2VtYW50aWNzIGRlZmluZWQgaW4gOnJmYzpgMzk4NmAuCisKKwogLi4gZnVuY3Rpb246OiB1cmxkZWZyYWcodXJsKQogCiAgICBJZiAqdXJsKiBjb250YWlucyBhIGZyYWdtZW50IGlkZW50aWZpZXIsIHJldHVybiBhIG1vZGlmaWVkIHZlcnNpb24gb2YgKnVybCoKQEAgLTUxNCw3ICs1MTksOCBAQAogICAgRXhhbXBsZTogYGB1bnF1b3RlX3RvX2J5dGVzKCdhJTI2JUVGJylgYCB5aWVsZHMgYGBiJ2EmXHhlZidgYC4KIAogCi0uLiBmdW5jdGlvbjo6IHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQorLi4gZnVuY3Rpb246OiB1cmxlbmNvZGUocXVlcnksIGRvc2VxPUZhbHNlLCBzYWZlPScnLCBlbmNvZGluZz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgcXVvdGVfdmlhPXF1b3RlX3BsdXMpCiAKICAgIENvbnZlcnQgYSBtYXBwaW5nIG9iamVjdCBvciBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcywgd2hpY2ggbWF5CiAgICBjb250YWluIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLCB0byBhICJwZXJjZW50LWVuY29kZWQiCkBAIC01MjMsOCArNTI5LDE2IEBACiAgICBwcm9wZXJseSBlbmNvZGVkIHRvIGJ5dGVzLCBvdGhlcndpc2UgaXQgd291bGQgcmVzdWx0IGluIGEgOmV4YzpgVHlwZUVycm9yYC4KIAogICAgVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgYSBzZXJpZXMgb2YgYGBrZXk9dmFsdWVgYCBwYWlycyBzZXBhcmF0ZWQgYnkgYGAnJidgYAotICAgY2hhcmFjdGVycywgd2hlcmUgYm90aCAqa2V5KiBhbmQgKnZhbHVlKiBhcmUgcXVvdGVkIHVzaW5nIDpmdW5jOmBxdW90ZV9wbHVzYAotICAgYWJvdmUuIFdoZW4gYSBzZXF1ZW5jZSBvZiB0d28tZWxlbWVudCB0dXBsZXMgaXMgdXNlZCBhcyB0aGUgKnF1ZXJ5KgorICAgY2hhcmFjdGVycywgd2hlcmUgYm90aCAqa2V5KiBhbmQgKnZhbHVlKiBhcmUgcXVvdGVkIHVzaW5nIHRoZSAqcXVvdGVfdmlhKgorICAgZnVuY3Rpb24uICBCeSBkZWZhdWx0LCA6ZnVuYzpgcXVvdGVfcGx1c2AgaXMgdXNlZCB0byBxdW90ZSB0aGUgdmFsdWVzLCB3aGljaAorICAgbWVhbnMgc3BhY2VzIGFyZSBxdW90ZWQgYXMgYSBgYCcrJ2BgIGNoYXJhY3RlciBhbmQgJy8nIGNoYXJhY3RlcnMgYXJlCisgICBlbmNvZGVkIGFzIGBgJTJGYGAsIHdoaWNoIGZvbGxvd3MgdGhlIHN0YW5kYXJkIGZvciBHRVQgcmVxdWVzdHMKKyAgIChgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgKS4gIEFuIGFsdGVybmF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBiZQorICAgcGFzc2VkIGFzICpxdW90ZV92aWEqIGlzIDpmdW5jOmBxdW90ZWAsIHdoaWNoIHdpbGwgZW5jb2RlIHNwYWNlcyBhcyBgYCUyMGBgCisgICBhbmQgbm90IGVuY29kZSAnLycgY2hhcmFjdGVycy4gIEZvciBtYXhpbXVtIGNvbnRyb2wgb2Ygd2hhdCBpcyBxdW90ZWQsIHVzZQorICAgYGBxdW90ZWBgIGFuZCBzcGVjaWZ5IGEgdmFsdWUgZm9yICpzYWZlKi4KKworICAgV2hlbiBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpcyB1c2VkIGFzIHRoZSAqcXVlcnkqCiAgICBhcmd1bWVudCwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgZWFjaCB0dXBsZSBpcyBhIGtleSBhbmQgdGhlIHNlY29uZCBpcyBhCiAgICB2YWx1ZS4gVGhlIHZhbHVlIGVsZW1lbnQgaW4gaXRzZWxmIGNhbiBiZSBhIHNlcXVlbmNlIGFuZCBpbiB0aGF0IGNhc2UsIGlmCiAgICB0aGUgb3B0aW9uYWwgcGFyYW1ldGVyICpkb3NlcSogaXMgZXZhbHVhdGVzIHRvICpUcnVlKiwgaW5kaXZpZHVhbApAQCAtNTMzLDcgKzU0Nyw3IEBACiAgICBzdHJpbmcgd2lsbCBtYXRjaCB0aGUgb3JkZXIgb2YgcGFyYW1ldGVyIHR1cGxlcyBpbiB0aGUgc2VxdWVuY2UuCiAKICAgIFRoZSAqc2FmZSosICplbmNvZGluZyosIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0bwotICAgOmZ1bmM6YHF1b3RlX3BsdXNgICh0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycyBhcmUgb25seSBwYXNzZWQKKyAgICpxdW90ZV92aWEqICh0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycyBhcmUgb25seSBwYXNzZWQKICAgIHdoZW4gYSBxdWVyeSBlbGVtZW50IGlzIGEgOmNsYXNzOmBzdHJgKS4KIAogICAgVG8gcmV2ZXJzZSB0aGlzIGVuY29kaW5nIHByb2Nlc3MsIDpmdW5jOmBwYXJzZV9xc2AgYW5kIDpmdW5jOmBwYXJzZV9xc2xgIGFyZQpAQCAtNTQ1LDYgKzU1OSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgUXVlcnkgcGFyYW1ldGVyIHN1cHBvcnRzIGJ5dGVzIGFuZCBzdHJpbmcgb2JqZWN0cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICAqcXVvdGVfdmlhKiBwYXJhbWV0ZXIuCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCA3NWI5NWQ5Li4zNDliYTcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0xMTUsNiArMTE1LDcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKwogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKICAgIEluc3RhbGwgYW4gOmNsYXNzOmBPcGVuZXJEaXJlY3RvcmAgaW5zdGFuY2UgYXMgdGhlIGRlZmF1bHQgZ2xvYmFsIG9wZW5lci4KQEAgLTI4NywxMyArMjg4LDM3IEBACiAgICBmaXRzLgogCiAKKy4uIGNsYXNzOjogSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCgpCisKKyAgIEEgdmFyaWFudCBvZiA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG1gIHRoYXQgYWxzbyBoYXMgYQorICAgZGF0YWJhc2Ugb2YgYGB1cmkgLT4gaXNfYXV0aGVudGljYXRlZGBgIG1hcHBpbmdzLiAgQ2FuIGJlIHVzZWQgYnkgYQorICAgQmFzaWNBdXRoIGhhbmRsZXIgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc2VuZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscworICAgaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGBgNDAxYGAgcmVzcG9uc2UgZmlyc3QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGNsYXNzOjogQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCiAgICBUaGlzIGlzIGEgbWl4aW4gY2xhc3MgdGhhdCBoZWxwcyB3aXRoIEhUVFAgYXV0aGVudGljYXRpb24sIGJvdGggdG8gdGhlIHJlbW90ZQogICAgaG9zdCBhbmQgdG8gYSBwcm94eS4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQgYmUgc29tZXRoaW5nIHRoYXQgaXMKICAgIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvIHNlY3Rpb24KICAgIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QgYmUKLSAgIHN1cHBvcnRlZC4KKyAgIHN1cHBvcnRlZC4gIElmICpwYXNzd2RfbWdyKiBhbHNvIHByb3ZpZGVzIGBgaXNfYXV0aGVudGljYXRlZGBgIGFuZAorICAgYGB1cGRhdGVfYXV0aGVudGljYXRlZGBgIG1ldGhvZHMgKHNlZQorICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3Itd2l0aC1wcmlvci1hdXRoYCksIHRoZW4gdGhlIGhhbmRsZXIgd2lsbCB1c2UgdGhlCisgICBgYGlzX2F1dGhlbnRpY2F0ZWRgYCByZXN1bHQgZm9yIGEgZ2l2ZW4gVVJJIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0bworICAgc2VuZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyB3aXRoIHRoZSByZXF1ZXN0LiAgSWYgYGBpc19hdXRoZW50aWNhdGVkYGAKKyAgIHJldHVybnMgYGBUcnVlYGAgZm9yIHRoZSBVUkksIGNyZWRlbnRpYWxzIGFyZSBzZW50LiAgSWYgYGBpc19hdXRoZW50aWNhdGVkYGAKKyAgIGlzIGBgRmFsc2VgYCwgY3JlZGVudGlhbHMgYXJlIG5vdCBzZW50LCBhbmQgdGhlbiBpZiBhIGBgNDAxYGAgcmVzcG9uc2UgaXMKKyAgIHJlY2VpdmVkIHRoZSByZXF1ZXN0IGlzIHJlLXNlbnQgd2l0aCB0aGUgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuICBJZgorICAgYXV0aGVudGljYXRpb24gc3VjY2VlZHMsIGBgdXBkYXRlX2F1dGhlbnRpY2F0ZWRgYCBpcyBjYWxsZWQgdG8gc2V0CisgICBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBgYFRydWVgYCBmb3IgdGhlIFVSSSwgc28gdGhhdCBzdWJzZXF1ZW50IHJlcXVlc3RzIHRvCisgICB0aGUgVVJJIG9yIGFueSBvZiBpdHMgc3VwZXItVVJJcyB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSB0aGUKKyAgIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIEFkZGVkIGBgaXNfYXV0aGVudGljYXRlZGBgIHN1cHBvcnQuCiAKIAogLi4gY2xhc3M6OiBIVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTg0NSw2ICs4NzAsNDIgQEAKICAgIHNlYXJjaGVkIGlmIHRoZSBnaXZlbiAqcmVhbG0qIGhhcyBubyBtYXRjaGluZyB1c2VyL3Bhc3N3b3JkLgogCiAKKy4uIF9odHRwLXBhc3N3b3JkLW1nci13aXRoLXByaW9yLWF1dGg6CisKK0hUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGggT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgcGFzc3dvcmQgbWFuYWdlciBleHRlbmRzIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgdG8gc3VwcG9ydAordHJhY2tpbmcgVVJJcyBmb3Igd2hpY2ggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgc2hvdWxkIGFsd2F5cyBiZSBzZW50LgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGguYWRkX3Bhc3N3b3JkKHJlYWxtLCB1cmksIHVzZXIsIFwKKyAgICAgICAgICAgIHBhc3N3ZCwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSkKKworICAgKnJlYWxtKiwgKnVyaSosICp1c2VyKiwgKnBhc3N3ZCogYXJlIGFzIGZvcgorICAgOm1ldGg6YEhUVFBQYXNzd29yZE1nci5hZGRfcGFzc3dvcmRgLiAgKmlzX2F1dGhlbnRpY2F0ZWQqIHNldHMgdGhlIGluaXRpYWwKKyAgIHZhbHVlIG9mIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvciB0aGUgZ2l2ZW4gVVJJIG9yIGxpc3Qgb2YgVVJJcy4KKyAgIElmICppc19hdXRoZW50aWNhdGVkKiBpcyBzcGVjaWZpZWQgYXMgYGBUcnVlYGAsICpyZWFsbSogaXMgaWdub3JlZC4KKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3IuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBhdXRodXJpKQorCisgICBTYW1lIGFzIGZvciA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG1gIG9iamVjdHMKKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLnVwZGF0ZV9hdXRoZW50aWNhdGVkKHNlbGYsIHVyaSwgXAorICAgICAgICAgICAgaXNfYXV0aGVudGljYXRlZD1GYWxzZSkKKworICAgVXBkYXRlIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvciB0aGUgZ2l2ZW4gKnVyaSogb3IgbGlzdAorICAgb2YgVVJJcy4KKworCisuLiBtZXRob2Q6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLmlzX2F1dGhlbnRpY2F0ZWQoc2VsZiwgYXV0aHVyaSkKKworICAgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYGBpc19hdXRoZW50aWNhdGVkYGAgZmxhZyBmb3IKKyAgIHRoZSBnaXZlbiBVUkkuCisKKwogLi4gX2Fic3RyYWN0LWJhc2ljLWF1dGgtaGFuZGxlcjoKIAogQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIE9iamVjdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dlYWtyZWYucnN0IGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKaW5kZXggY2M4ODNiMS4uMmUxNjA3NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKQEAgLTI1OCw3ICsyNTgsNyBAQAogICAgYXJlIGNhbGxlZCBpbiByZXZlcnNlIG9yZGVyIG9mIGNyZWF0aW9uLgogCiAgICBBIGZpbmFsaXplciB3aWxsIG5ldmVyIGludm9rZSBpdHMgY2FsbGJhY2sgZHVyaW5nIHRoZSBsYXRlciBwYXJ0IG9mCi0gICB0aGUgaW50ZXJwcmV0ZXIgc2h1dGRvd24gd2hlbiBtb2R1bGUgZ2xvYmFscyBhcmUgbGlhYmxlIHRvIGhhdmUKKyAgIHRoZSA6dGVybTpgaW50ZXJwcmV0ZXIgc2h1dGRvd25gIHdoZW4gbW9kdWxlIGdsb2JhbHMgYXJlIGxpYWJsZSB0byBoYXZlCiAgICBiZWVuIHJlcGxhY2VkIGJ5IDpjb25zdDpgTm9uZWAuCiAKICAgIC4uIG1ldGhvZDo6IF9fY2FsbF9fKCkKQEAgLTUyNyw4ICs1MjcsOCBAQAogCiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzIG5vIGxvbmdlciBwcmV2ZW50CiByZWZlcmVuY2UgY3ljbGVzIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQsIGFuZCBtb2R1bGUgZ2xvYmFscyBhcmUKLW5vIGxvbmdlciBmb3JjZWQgdG8gOmNvbnN0OmBOb25lYCBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24uIFNvIHRoaXMKLWNvZGUgc2hvdWxkIHdvcmsgd2l0aG91dCBhbnkgaXNzdWVzIG9uIENQeXRob24uCitubyBsb25nZXIgZm9yY2VkIHRvIDpjb25zdDpgTm9uZWAgZHVyaW5nIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAuCitTbyB0aGlzIGNvZGUgc2hvdWxkIHdvcmsgd2l0aG91dCBhbnkgaXNzdWVzIG9uIENQeXRob24uCiAKIEhvd2V2ZXIsIGhhbmRsaW5nIG9mIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzIGlzIG5vdG9yaW91c2x5IGltcGxlbWVudGF0aW9uCiBzcGVjaWZpYywgc2luY2UgaXQgZGVwZW5kcyBvbiBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBpbnRlcnByZXRlcidzIGdhcmJhZ2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggYTllMTlkYS4uZGU3NGMzMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTE4NCwxMCArMTg0LDExIEBACiBtYW5pcHVsYXRpb24gb2YgV1NHSSByZXNwb25zZSBoZWFkZXJzIHVzaW5nIGEgbWFwcGluZy1saWtlIGludGVyZmFjZS4KIAogCi0uLiBjbGFzczo6IEhlYWRlcnMoaGVhZGVycykKKy4uIGNsYXNzOjogSGVhZGVycyhbaGVhZGVyc10pCiAKICAgIENyZWF0ZSBhIG1hcHBpbmctbGlrZSBvYmplY3Qgd3JhcHBpbmcgKmhlYWRlcnMqLCB3aGljaCBtdXN0IGJlIGEgbGlzdCBvZiBoZWFkZXIKLSAgIG5hbWUvdmFsdWUgdHVwbGVzIGFzIGRlc2NyaWJlZCBpbiA6cGVwOmAzMzMzYC4KKyAgIG5hbWUvdmFsdWUgdHVwbGVzIGFzIGRlc2NyaWJlZCBpbiA6cGVwOmAzMzMzYC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgKmhlYWRlcnMqIGlzCisgICBhbiBlbXB0eSBsaXN0LgogCiAgICA6Y2xhc3M6YEhlYWRlcnNgIG9iamVjdHMgc3VwcG9ydCB0eXBpY2FsIG1hcHBpbmcgb3BlcmF0aW9ucyBpbmNsdWRpbmcKICAgIDptZXRoOmBfX2dldGl0ZW1fX2AsIDptZXRoOmBnZXRgLCA6bWV0aDpgX19zZXRpdGVtX19gLCA6bWV0aDpgc2V0ZGVmYXVsdGAsCkBAIC0yNTEsNiArMjUyLDEwIEBACiAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKIAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKmhlYWRlcnMqIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KKworCiA6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgIC0tIGEgc2ltcGxlIFdTR0kgSFRUUCBzZXJ2ZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QKaW5kZXggM2FiNjA2My4uMzFjYTI2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLnNheC5yZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdApAQCAtMTAwLDggKzEwMCwxMCBAQAogICAgc3lzdGVtIGlkZW50aWZpZXIgKGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBpbnB1dCBzb3VyY2UgLS0gdHlwaWNhbGx5IGEgZmlsZQogICAgbmFtZSBvciBhbiBVUkwpLCBhIGZpbGUtbGlrZSBvYmplY3QsIG9yIGFuIDpjbGFzczpgSW5wdXRTb3VyY2VgIG9iamVjdC4gV2hlbgogICAgOm1ldGg6YHBhcnNlYCByZXR1cm5zLCB0aGUgaW5wdXQgaXMgY29tcGxldGVseSBwcm9jZXNzZWQsIGFuZCB0aGUgcGFyc2VyIG9iamVjdAotICAgY2FuIGJlIGRpc2NhcmRlZCBvciByZXNldC4gQXMgYSBsaW1pdGF0aW9uLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5Ci0gICBhY2NlcHRzIGJ5dGUgc3RyZWFtczsgcHJvY2Vzc2luZyBvZiBjaGFyYWN0ZXIgc3RyZWFtcyBpcyBmb3IgZnVydGhlciBzdHVkeS4KKyAgIGNhbiBiZSBkaXNjYXJkZWQgb3IgcmVzZXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIGNoYXJhY3RlciBzdHJlYW1zLgogCiAKIC4uIG1ldGhvZDo6IFhNTFJlYWRlci5nZXRDb250ZW50SGFuZGxlcigpCkBAIC0yODgsOCArMjkwLDcgQEAKIAogLi4gbWV0aG9kOjogSW5wdXRTb3VyY2Uuc2V0Qnl0ZVN0cmVhbShieXRlZmlsZSkKIAotICAgU2V0IHRoZSBieXRlIHN0cmVhbSAoYSBQeXRob24gZmlsZS1saWtlIG9iamVjdCB3aGljaCBkb2VzIG5vdCBwZXJmb3JtCi0gICBieXRlLXRvLWNoYXJhY3RlciBjb252ZXJzaW9uKSBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuCisgICBTZXQgdGhlIGJ5dGUgc3RyZWFtIChhIDp0ZXJtOmBiaW5hcnkgZmlsZWApIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KIAogICAgVGhlIFNBWCBwYXJzZXIgd2lsbCBpZ25vcmUgdGhpcyBpZiB0aGVyZSBpcyBhbHNvIGEgY2hhcmFjdGVyIHN0cmVhbSBzcGVjaWZpZWQsCiAgICBidXQgaXQgd2lsbCB1c2UgYSBieXRlIHN0cmVhbSBpbiBwcmVmZXJlbmNlIHRvIG9wZW5pbmcgYSBVUkkgY29ubmVjdGlvbiBpdHNlbGYuCkBAIC0zMDgsOCArMzA5LDcgQEAKIAogLi4gbWV0aG9kOjogSW5wdXRTb3VyY2Uuc2V0Q2hhcmFjdGVyU3RyZWFtKGNoYXJmaWxlKQogCi0gICBTZXQgdGhlIGNoYXJhY3RlciBzdHJlYW0gZm9yIHRoaXMgaW5wdXQgc291cmNlLiAoVGhlIHN0cmVhbSBtdXN0IGJlIGEgUHl0aG9uIDEuNgotICAgVW5pY29kZS13cmFwcGVkIGZpbGUtbGlrZSB0aGF0IHBlcmZvcm1zIGNvbnZlcnNpb24gdG8gc3RyaW5ncy4pCisgICBTZXQgdGhlIGNoYXJhY3RlciBzdHJlYW0gKGEgOnRlcm06YHRleHQgZmlsZWApIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KIAogICAgSWYgdGhlcmUgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtIHNwZWNpZmllZCwgdGhlIFNBWCBwYXJzZXIgd2lsbCBpZ25vcmUgYW55IGJ5dGUKICAgIHN0cmVhbSBhbmQgd2lsbCBub3QgYXR0ZW1wdCB0byBvcGVuIGEgVVJJIGNvbm5lY3Rpb24gdG8gdGhlIHN5c3RlbSBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLnNheC5yc3QgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdAppbmRleCBlOTVkNmIwLi41NWY5Nzk5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdApAQCAtNDcsNyArNDcsMTEgQEAKIC4uIGZ1bmN0aW9uOjogcGFyc2VTdHJpbmcoc3RyaW5nLCBoYW5kbGVyLCBlcnJvcl9oYW5kbGVyPWhhbmRsZXIuRXJyb3JIYW5kbGVyKCkpCiAKICAgIFNpbWlsYXIgdG8gOmZ1bmM6YHBhcnNlYCwgYnV0IHBhcnNlcyBmcm9tIGEgYnVmZmVyICpzdHJpbmcqIHJlY2VpdmVkIGFzIGEKLSAgIHBhcmFtZXRlci4KKyAgIHBhcmFtZXRlci4gICpzdHJpbmcqIG11c3QgYmUgYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2Ugb3IgYQorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgOmNsYXNzOmBzdHJgIGluc3RhbmNlcy4KIAogQSB0eXBpY2FsIFNBWCBhcHBsaWNhdGlvbiB1c2VzIHRocmVlIGtpbmRzIG9mIG9iamVjdHM6IHJlYWRlcnMsIGhhbmRsZXJzIGFuZAogaW5wdXQgc291cmNlcy4gICJSZWFkZXIiIGluIHRoaXMgY29udGV4dCBpcyBhbm90aGVyIHRlcm0gZm9yIHBhcnNlciwgaS5lLiBzb21lCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGNjNWU4M2EuLmUxOTk5MzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC0yNyw3ICsyNyw3IEBACiAgICBjb25zdHJ1Y3RlZCBkYXRhLiAgSWYgeW91IG5lZWQgdG8gcGFyc2UgdW50cnVzdGVkIG9yIHVuYXV0aGVudGljYXRlZCBkYXRhIHNlZQogICAgOnJlZjpgeG1sLXZ1bG5lcmFiaWxpdGllc2AuCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAKICAgIEZvciBodHRwcyBVUklzLCA6bW9kOmB4bWxycGMuY2xpZW50YCBub3cgcGVyZm9ybXMgYWxsIHRoZSBuZWNlc3NhcnkKICAgIGNlcnRpZmljYXRlIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdApAQCAtMTI5LDcgKzEyOSw3IEBACiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgdGhlICpjb250ZXh0KiBhcmd1bWVudC4KIAogCkBAIC0yMDAsNiArMjAwLDExIEBACiAgICBubyBzdWNoIHN0cmluZyBpcyBhdmFpbGFibGUsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4gVGhlIGRvY3VtZW50YXRpb24KICAgIHN0cmluZyBtYXkgY29udGFpbiBIVE1MIG1hcmt1cC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgSW5zdGFuY2VzIG9mIDpjbGFzczpgU2VydmVyUHJveHlgIHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBmb3IgY2xvc2luZyB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQuCisKIAogQSB3b3JraW5nIGV4YW1wbGUgZm9sbG93cy4gVGhlIHNlcnZlciBjb2RlOjoKIApAQCAtMjE3LDkgKzIyMiw5IEBACiAKICAgIGltcG9ydCB4bWxycGMuY2xpZW50CiAKLSAgIHByb3h5ID0geG1scnBjLmNsaWVudC5TZXJ2ZXJQcm94eSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpCi0gICBwcmludCgiMyBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigzKSkpCi0gICBwcmludCgiMTAwIGlzIGV2ZW46ICVzIiAlIHN0cihwcm94eS5pc19ldmVuKDEwMCkpKQorICAgd2l0aCB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvIikgYXMgcHJveHk6CisgICAgICAgcHJpbnQoIjMgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMykpKQorICAgICAgIHByaW50KCIxMDAgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMTAwKSkpCiAKIC4uIF9kYXRldGltZS1vYmplY3RzOgogCkBAIC01MjcsMTQgKzUzMiwxNCBAQAogICAgZnJvbSB4bWxycGMuY2xpZW50IGltcG9ydCBTZXJ2ZXJQcm94eSwgRXJyb3IKIAogICAgIyBzZXJ2ZXIgPSBTZXJ2ZXJQcm94eSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgIyBsb2NhbCBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNlcnZlclByb3h5KCJodHRwOi8vYmV0dHkudXNlcmxhbmQuY29tIikKKyAgIHdpdGggU2VydmVyUHJveHkoImh0dHA6Ly9iZXR0eS51c2VybGFuZC5jb20iKSBhcyBwcm94eToKIAotICAgcHJpbnQoc2VydmVyKQorICAgICAgIHByaW50KHByb3h5KQogCi0gICB0cnk6Ci0gICAgICAgcHJpbnQoc2VydmVyLmV4YW1wbGVzLmdldFN0YXRlTmFtZSg0MSkpCi0gICBleGNlcHQgRXJyb3IgYXMgdjoKLSAgICAgICBwcmludCgiRVJST1IiLCB2KQorICAgICAgIHRyeToKKyAgICAgICAgICAgcHJpbnQocHJveHkuZXhhbXBsZXMuZ2V0U3RhdGVOYW1lKDQxKSkKKyAgICAgICBleGNlcHQgRXJyb3IgYXMgdjoKKyAgICAgICAgICAgcHJpbnQoIkVSUk9SIiwgdikKIAogVG8gYWNjZXNzIGFuIFhNTC1SUEMgc2VydmVyIHRocm91Z2ggYSBwcm94eSwgeW91IG5lZWQgdG8gZGVmaW5lICBhIGN1c3RvbQogdHJhbnNwb3J0LiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdzoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QgYi9Eb2MvbGlicmFyeS96aXBhcHAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDg0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS96aXBhcHAucnN0CkBAIC0wLDAgKzEsMjU5IEBACis6bW9kOmB6aXBhcHBgIC0tLSBNYW5hZ2UgZXhlY3V0YWJsZSBweXRob24gemlwIGFyY2hpdmVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHppcGFwcAorICAgOnN5bm9wc2lzOiBNYW5hZ2UgZXhlY3V0YWJsZSBweXRob24gemlwIGFyY2hpdmVzCisKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBFeGVjdXRhYmxlIFppcCBGaWxlcworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvemlwYXBwLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyB0b29scyB0byBtYW5hZ2UgdGhlIGNyZWF0aW9uIG9mIHppcCBmaWxlcyBjb250YWluaW5nCitQeXRob24gY29kZSwgd2hpY2ggY2FuIGJlICA6cmVmOmBleGVjdXRlZCBkaXJlY3RseSBieSB0aGUgUHl0aG9uIGludGVycHJldGVyCis8dXNpbmctb24taW50ZXJmYWNlLW9wdGlvbnM+YC4gIFRoZSBtb2R1bGUgcHJvdmlkZXMgYm90aCBhCis6cmVmOmB6aXBhcHAtY29tbWFuZC1saW5lLWludGVyZmFjZWAgYW5kIGEgOnJlZjpgemlwYXBwLXB5dGhvbi1hcGlgLgorCisKK0Jhc2ljIEV4YW1wbGUKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0aGUgOnJlZjpgY29tbWFuZC1saW5lLWludGVyZmFjZWAKK2NhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeSBjb250YWluaW5nCitQeXRob24gY29kZS4gIFdoZW4gcnVuLCB0aGUgYXJjaGl2ZSB3aWxsIGV4ZWN1dGUgdGhlIGBgbWFpbmBgIGZ1bmN0aW9uIGZyb20KK3RoZSBtb2R1bGUgYGBteWFwcGBgIGluIHRoZSBhcmNoaXZlLgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICJteWFwcDptYWluIgorICAgJCBweXRob24gbXlhcHAucHl6CisgICA8b3V0cHV0IGZyb20gbXlhcHA+CisKKworLi4gX3ppcGFwcC1jb21tYW5kLWxpbmUtaW50ZXJmYWNlOgorCitDb21tYW5kLUxpbmUgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gY2FsbGVkIGFzIGEgcHJvZ3JhbSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHRoZSBmb2xsb3dpbmcgZm9ybSBpcyB1c2VkOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIHNvdXJjZSBbb3B0aW9uc10KKworSWYgKnNvdXJjZSogaXMgYSBkaXJlY3RvcnksIHRoaXMgd2lsbCBjcmVhdGUgYW4gYXJjaGl2ZSBmcm9tIHRoZSBjb250ZW50cyBvZgorKnNvdXJjZSouICBJZiAqc291cmNlKiBpcyBhIGZpbGUsIGl0IHNob3VsZCBiZSBhbiBhcmNoaXZlLCBhbmQgaXQgd2lsbCBiZQorY29waWVkIHRvIHRoZSB0YXJnZXQgYXJjaGl2ZSAob3IgdGhlIGNvbnRlbnRzIG9mIGl0cyBzaGViYW5nIGxpbmUgd2lsbCBiZQorZGlzcGxheWVkIGlmIHRoZSAtLWluZm8gb3B0aW9uIGlzIHNwZWNpZmllZCkuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgdW5kZXJzdG9vZDoKKworLi4gcHJvZ3JhbTo6IHppcGFwcAorCisuLiBjbWRvcHRpb246OiAtbyA8b3V0cHV0PiwgLS1vdXRwdXQ9PG91dHB1dD4KKworICAgV3JpdGUgdGhlIG91dHB1dCB0byBhIGZpbGUgbmFtZWQgKm91dHB1dCouICBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAorICAgdGhlIG91dHB1dCBmaWxlbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBpbnB1dCAqc291cmNlKiwgd2l0aCB0aGUKKyAgIGV4dGVuc2lvbiBgYC5weXpgYCBhZGRlZC4gIElmIGFuIGV4cGxpY2l0IGZpbGVuYW1lIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzCisgICBpcyAoc28gYSBgYC5weXpgYCBleHRlbnNpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHJlcXVpcmVkKS4KKworICAgQW4gb3V0cHV0IGZpbGVuYW1lIG11c3QgYmUgc3BlY2lmaWVkIGlmIHRoZSAqc291cmNlKiBpcyBhbiBhcmNoaXZlIChhbmQgaW4KKyAgIHRoYXQgY2FzZSwgKm91dHB1dCogbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgKnNvdXJjZSopLgorCisuLiBjbWRvcHRpb246OiAtcCA8aW50ZXJwcmV0ZXI+LCAtLXB5dGhvbj08aW50ZXJwcmV0ZXI+CisKKyAgIEFkZCBhIGBgIyFgYCBsaW5lIHRvIHRoZSBhcmNoaXZlIHNwZWNpZnlpbmcgKmludGVycHJldGVyKiBhcyB0aGUgY29tbWFuZAorICAgdG8gcnVuLiAgQWxzbywgb24gUE9TSVgsIG1ha2UgdGhlIGFyY2hpdmUgZXhlY3V0YWJsZS4gIFRoZSBkZWZhdWx0IGlzIHRvCisgICB3cml0ZSBubyBgYCMhYGAgbGluZSwgYW5kIG5vdCBtYWtlIHRoZSBmaWxlIGV4ZWN1dGFibGUuCisKKy4uIGNtZG9wdGlvbjo6IC1tIDxtYWluZm4+LCAtLW1haW49PG1haW5mbj4KKworICAgV3JpdGUgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSB0byB0aGUgYXJjaGl2ZSB0aGF0IGV4ZWN1dGVzICptYWluZm4qLiAgVGhlCisgICAqbWFpbmZuKiBhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAicGtnLm1vZDpmbiIsIHdoZXJlICJwa2cubW9kIiBpcyBhCisgICBwYWNrYWdlL21vZHVsZSBpbiB0aGUgYXJjaGl2ZSwgYW5kICJmbiIgaXMgYSBjYWxsYWJsZSBpbiB0aGUgZ2l2ZW4gbW9kdWxlLgorICAgVGhlIGBgX19tYWluX18ucHlgYCBmaWxlIHdpbGwgZXhlY3V0ZSB0aGF0IGNhbGxhYmxlLgorCisgICA6b3B0aW9uOmAtLW1haW5gIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb3B5aW5nIGFuIGFyY2hpdmUuCisKKy4uIGNtZG9wdGlvbjo6IC0taW5mbworCisgICBEaXNwbGF5IHRoZSBpbnRlcnByZXRlciBlbWJlZGRlZCBpbiB0aGUgYXJjaGl2ZSwgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuICBJbgorICAgdGhpcyBjYXNlLCBhbnkgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZCBhbmQgU09VUkNFIG11c3QgYmUgYW4gYXJjaGl2ZSwgbm90IGEKKyAgIGRpcmVjdG9yeS4KKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBQcmludCBhIHNob3J0IHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuCisKKworLi4gX3ppcGFwcC1weXRob24tYXBpOgorCitQeXRob24gQVBJCistLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgZGVmaW5lcyB0d28gY29udmVuaWVuY2UgZnVuY3Rpb25zOgorCisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQ9Tm9uZSwgaW50ZXJwcmV0ZXI9Tm9uZSwgbWFpbj1Ob25lKQorCisgICBDcmVhdGUgYW4gYXBwbGljYXRpb24gYXJjaGl2ZSBmcm9tICpzb3VyY2UqLiAgVGhlIHNvdXJjZSBjYW4gYmUgYW55CisgICBvZiB0aGUgZm9sbG93aW5nOgorCisgICAqIFRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5LCBvciBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYCBvYmplY3QgcmVmZXJyaW5nCisgICAgIHRvIGEgZGlyZWN0b3J5LCBpbiB3aGljaCBjYXNlIGEgbmV3IGFwcGxpY2F0aW9uIGFyY2hpdmUgd2lsbCBiZQorICAgICBjcmVhdGVkIGZyb20gdGhlIGNvbnRlbnQgb2YgdGhhdCBkaXJlY3RvcnkuCisgICAqIFRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGFwcGxpY2F0aW9uIGFyY2hpdmUgZmlsZSwgb3IgYSA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAKKyAgICAgb2JqZWN0IHJlZmVycmluZyB0byBzdWNoIGEgZmlsZSwgaW4gd2hpY2ggY2FzZSB0aGUgZmlsZSBpcyBjb3BpZWQgdG8KKyAgICAgdGhlIHRhcmdldCAobW9kaWZ5aW5nIGl0IHRvIHJlZmxlY3QgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmludGVycHJldGVyKgorICAgICBhcmd1bWVudCkuICBUaGUgZmlsZSBuYW1lIHNob3VsZCBpbmNsdWRlIHRoZSBgYC5weXpgYCBleHRlbnNpb24sIGlmIHJlcXVpcmVkLgorICAgKiBBIGZpbGUgb2JqZWN0IG9wZW4gZm9yIHJlYWRpbmcgaW4gYnl0ZXMgbW9kZS4gIFRoZSBjb250ZW50IG9mIHRoZQorICAgICBmaWxlIHNob3VsZCBiZSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlLCBhbmQgdGhlIGZpbGUgb2JqZWN0IGlzCisgICAgIGFzc3VtZWQgdG8gYmUgcG9zaXRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUuCisKKyAgIFRoZSAqdGFyZ2V0KiBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZXJlIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSB3aWxsIGJlCisgICB3cml0dGVuOgorCisgICAqIElmIGl0IGlzIHRoZSBuYW1lIG9mIGEgZmlsZSwgb3IgYSA6Y2xhc3M6YHBhdGhsYi5QYXRoYCBvYmplY3QsCisgICAgIHRoZSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGF0IGZpbGUuCisgICAqIElmIGl0IGlzIGFuIG9wZW4gZmlsZSBvYmplY3QsIHRoZSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGF0CisgICAgIGZpbGUgb2JqZWN0LCB3aGljaCBtdXN0IGJlIG9wZW4gZm9yIHdyaXRpbmcgaW4gYnl0ZXMgbW9kZS4KKyAgICogSWYgdGhlIHRhcmdldCBpcyBvbWl0dGVkIChvciBOb25lKSwgdGhlIHNvdXJjZSBtdXN0IGJlIGEgZGlyZWN0b3J5CisgICAgIGFuZCB0aGUgdGFyZ2V0IHdpbGwgYmUgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlLCB3aXRoCisgICAgIGEgYGAucHl6YGAgZXh0ZW5zaW9uIGFkZGVkLgorCisgICBUaGUgKmludGVycHJldGVyKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIgd2l0aCB3aGljaCB0aGUgYXJjaGl2ZSB3aWxsIGJlIGV4ZWN1dGVkLiAgSXQgaXMgd3JpdHRlbiBhcworICAgYSAic2hlYmFuZyIgbGluZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUuICBPbiBQT1NJWCwgdGhpcyB3aWxsIGJlCisgICBpbnRlcnByZXRlZCBieSB0aGUgT1MsIGFuZCBvbiBXaW5kb3dzIGl0IHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgUHl0aG9uCisgICBsYXVuY2hlci4gIE9taXR0aW5nIHRoZSAqaW50ZXJwcmV0ZXIqIHJlc3VsdHMgaW4gbm8gc2hlYmFuZyBsaW5lIGJlaW5nCisgICB3cml0dGVuLiAgSWYgYW4gaW50ZXJwcmV0ZXIgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIHRhcmdldCBpcyBhCisgICBmaWxlbmFtZSwgdGhlIGV4ZWN1dGFibGUgYml0IG9mIHRoZSB0YXJnZXQgZmlsZSB3aWxsIGJlIHNldC4KKworICAgVGhlICptYWluKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlCisgICB1c2VkIGFzIHRoZSBtYWluIHByb2dyYW0gZm9yIHRoZSBhcmNoaXZlLiAgSXQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGlmCisgICB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBkb2VzIG5vdCBhbHJlYWR5IGNvbnRhaW4gYQorICAgYGBfX21haW5fXy5weWBgIGZpbGUuICBUaGUgKm1haW4qIGFyZ3VtZW50IHNob3VsZCB0YWtlIHRoZSBmb3JtCisgICAicGtnLm1vZHVsZTpjYWxsYWJsZSIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZworICAgInBrZy5tb2R1bGUiIGFuZCBleGVjdXRpbmcgdGhlIGdpdmVuIGNhbGxhYmxlIHdpdGggbm8gYXJndW1lbnRzLiAgSXQKKyAgIGlzIGFuIGVycm9yIHRvIG9taXQgKm1haW4qIGlmIHRoZSBzb3VyY2UgaXMgYSBkaXJlY3RvcnkgYW5kIGRvZXMgbm90CisgICBjb250YWluIGEgYGBfX21haW5fXy5weWBgIGZpbGUsIGFzIG90aGVyd2lzZSB0aGUgcmVzdWx0aW5nIGFyY2hpdmUKKyAgIHdvdWxkIG5vdCBiZSBleGVjdXRhYmxlLgorCisgICBJZiBhIGZpbGUgb2JqZWN0IGlzIHNwZWNpZmllZCBmb3IgKnNvdXJjZSogb3IgKnRhcmdldCosIGl0IGlzIHRoZQorICAgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gY2xvc2UgaXQgYWZ0ZXIgY2FsbGluZyBjcmVhdGVfYXJjaGl2ZS4KKworICAgV2hlbiBjb3B5aW5nIGFuIGV4aXN0aW5nIGFyY2hpdmUsIGZpbGUgb2JqZWN0cyBzdXBwbGllZCBvbmx5IG5lZWQKKyAgIGBgcmVhZGBgIGFuZCBgYHJlYWRsaW5lYGAsIG9yIGBgd3JpdGVgYCBtZXRob2RzLiAgV2hlbiBjcmVhdGluZyBhbgorICAgYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5LCBpZiB0aGUgdGFyZ2V0IGlzIGEgZmlsZSBvYmplY3QgaXQgd2lsbCBiZQorICAgcGFzc2VkIHRvIHRoZSBgYHppcGZpbGUuWmlwRmlsZWBgIGNsYXNzLCBhbmQgbXVzdCBzdXBwbHkgdGhlIG1ldGhvZHMKKyAgIG5lZWRlZCBieSB0aGF0IGNsYXNzLgorCisuLiBmdW5jdGlvbjo6IGdldF9pbnRlcnByZXRlcihhcmNoaXZlKQorCisgICBSZXR1cm4gdGhlIGludGVycHJldGVyIHNwZWNpZmllZCBpbiB0aGUgYGAjIWBgIGxpbmUgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICAgYXJjaGl2ZS4gIElmIHRoZXJlIGlzIG5vIGBgIyFgYCBsaW5lLCByZXR1cm4gOmNvbnN0OmBOb25lYC4KKyAgIFRoZSAqYXJjaGl2ZSogYXJndW1lbnQgY2FuIGJlIGEgZmlsZW5hbWUgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0IG9wZW4KKyAgIGZvciByZWFkaW5nIGluIGJ5dGVzIG1vZGUuICBJdCBpcyBhc3N1bWVkIHRvIGJlIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4KKworCisuLiBfemlwYXBwLWV4YW1wbGVzOgorCitFeGFtcGxlcworLS0tLS0tLS0KKworUGFjayB1cCBhIGRpcmVjdG9yeSBpbnRvIGFuIGFyY2hpdmUsIGFuZCBydW4gaXQuCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAKKyAgICQgcHl0aG9uIG15YXBwLnB5egorICAgPG91dHB1dCBmcm9tIG15YXBwPgorCitUaGUgc2FtZSBjYW4gYmUgZG9uZSB1c2luZyB0aGUgOmZ1bmM6YGNyZWF0ZV9hcmNoaXZlYCBmdW5jdG9uOjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ215YXBwLnB5eicsICdteWFwcCcpCisKK1RvIG1ha2UgdGhlIGFwcGxpY2F0aW9uIGRpcmVjdGx5IGV4ZWN1dGFibGUgb24gUE9TSVgsIHNwZWNpZnkgYW4gaW50ZXJwcmV0ZXIKK3RvIHVzZS4KKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtcCAiL3Vzci9iaW4vZW52IHB5dGhvbiIKKyAgICQgLi9teWFwcC5weXoKKyAgIDxvdXRwdXQgZnJvbSBteWFwcD4KKworVG8gcmVwbGFjZSB0aGUgc2hlYmFuZyBsaW5lIG9uIGFuIGV4aXN0aW5nIGFyY2hpdmUsIGNyZWF0ZSBhIG1vZGlmaWVkIGFyY2hpdmUKK3VzaW5nIHRoZSA6ZnVuYzpgY3JlYXRlX2FyY2hpdmVgIGZ1bmN0aW9uOjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ29sZF9hcmNoaXZlLnB5eicsICduZXdfYXJjaGl2ZS5weXonLCAnL3Vzci9iaW4vcHl0aG9uMycpCisKK1RvIHVwZGF0ZSB0aGUgZmlsZSBpbiBwbGFjZSwgZG8gdGhlIHJlcGxhY2VtZW50IGluIG1lbW9yeSB1c2luZyBhIDpjbGFzczpgQnl0ZXNJT2AKK29iamVjdCwgYW5kIHRoZW4gb3ZlcndyaXRlIHRoZSBzb3VyY2UgYWZ0ZXJ3YXJkcy4gIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHJpc2sKK3doZW4gb3ZlcndyaXRpbmcgYSBmaWxlIGluIHBsYWNlIHRoYXQgYW4gZXJyb3Igd2lsbCByZXN1bHQgaW4gdGhlIGxvc3Mgb2YKK3RoZSBvcmlnaW5hbCBmaWxlLiAgVGhpcyBjb2RlIGRvZXMgbm90IHByb3RlY3QgYWdhaW5zdCBzdWNoIGVycm9ycywgYnV0Citwcm9kdWN0aW9uIGNvZGUgc2hvdWxkIGRvIHNvLiAgQWxzbywgdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIGFyY2hpdmUKK2ZpdHMgaW4gbWVtb3J5OjoKKworICAgPj4+IGltcG9ydCB6aXBhcHAKKyAgID4+PiBpbXBvcnQgaW8KKyAgID4+PiB0ZW1wID0gaW8uQnl0ZXNJTygpCisgICA+Pj4gemlwYXBwLmNyZWF0ZV9hcmNoaXZlKCdteWFwcC5weXonLCB0ZW1wLCAnL3Vzci9iaW4vcHl0aG9uMicpCisgICA+Pj4gd2l0aCBvcGVuKCdteWFwcC5weXonLCAnd2InKSBhcyBmOgorICAgPj4+ICAgICBmLndyaXRlKHRlbXAuZ2V0dmFsdWUoKSkKKworTm90ZSB0aGF0IGlmIHlvdSBzcGVjaWZ5IGFuIGludGVycHJldGVyIGFuZCB0aGVuIGRpc3RyaWJ1dGUgeW91ciBhcHBsaWNhdGlvbgorYXJjaGl2ZSwgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGludGVycHJldGVyIHVzZWQgaXMgcG9ydGFibGUuICBUaGUgUHl0aG9uCitsYXVuY2hlciBmb3IgV2luZG93cyBzdXBwb3J0cyBtb3N0IGNvbW1vbiBmb3JtcyBvZiBQT1NJWCBgYCMhYGAgbGluZSwgYnV0IHRoZXJlCithcmUgb3RoZXIgaXNzdWVzIHRvIGNvbnNpZGVyOgorCisqIElmIHlvdSB1c2UgIi91c3IvYmluL2VudiBweXRob24iIChvciBvdGhlciBmb3JtcyBvZiB0aGUgInB5dGhvbiIgY29tbWFuZCwKKyAgc3VjaCBhcyAiL3Vzci9iaW4vcHl0aG9uIiksIHlvdSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgeW91ciB1c2VycyBtYXkgaGF2ZQorICBlaXRoZXIgUHl0aG9uIDIgb3IgUHl0aG9uIDMgYXMgdGhlaXIgZGVmYXVsdCwgYW5kIHdyaXRlIHlvdXIgY29kZSB0byB3b3JrCisgIHVuZGVyIGJvdGggdmVyc2lvbnMuCisqIElmIHlvdSB1c2UgYW4gZXhwbGljaXQgdmVyc2lvbiwgZm9yIGV4YW1wbGUgIi91c3IvYmluL2VudiBweXRob24zIiB5b3VyCisgIGFwcGxpY2F0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHVzZXJzIHdobyBkbyBub3QgaGF2ZSB0aGF0IHZlcnNpb24uICAoVGhpcworICBtYXkgYmUgd2hhdCB5b3Ugd2FudCBpZiB5b3UgaGF2ZSBub3QgbWFkZSB5b3VyIGNvZGUgUHl0aG9uIDIgY29tcGF0aWJsZSkuCisqIFRoZXJlIGlzIG5vIHdheSB0byBzYXkgInB5dGhvbiBYLlkgb3IgbGF0ZXIiLCBzbyBiZSBjYXJlZnVsIG9mIHVzaW5nIGFuCisgIGV4YWN0IHZlcnNpb24gbGlrZSAiL3Vzci9iaW4vZW52IHB5dGhvbjMuNCIgYXMgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgeW91cgorICBzaGViYW5nIGxpbmUgZm9yIHVzZXJzIG9mIFB5dGhvbiAzLjUsIGZvciBleGFtcGxlLgorCitUaGUgUHl0aG9uIFppcCBBcHBsaWNhdGlvbiBBcmNoaXZlIEZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uIGhhcyBiZWVuIGFibGUgdG8gZXhlY3V0ZSB6aXAgZmlsZXMgd2hpY2ggY29udGFpbiBhIGBgX19tYWluX18ucHlgYCBmaWxlCitzaW5jZSB2ZXJzaW9uIDIuNi4gIEluIG9yZGVyIHRvIGJlIGV4ZWN1dGVkIGJ5IFB5dGhvbiwgYW4gYXBwbGljYXRpb24gYXJjaGl2ZQorc2ltcGx5IGhhcyB0byBiZSBhIHN0YW5kYXJkIHppcCBmaWxlIGNvbnRhaW5pbmcgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSB3aGljaAord2lsbCBiZSBydW4gYXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYXBwbGljYXRpb24uICBBcyB1c3VhbCBmb3IgYW55IFB5dGhvbgorc2NyaXB0LCB0aGUgcGFyZW50IG9mIHRoZSBzY3JpcHQgKGluIHRoaXMgY2FzZSB0aGUgemlwIGZpbGUpIHdpbGwgYmUgcGxhY2VkIG9uCis6ZGF0YTpgc3lzLnBhdGhgIGFuZCB0aHVzIGZ1cnRoZXIgbW9kdWxlcyBjYW4gYmUgaW1wb3J0ZWQgZnJvbSB0aGUgemlwIGZpbGUuCisKK1RoZSB6aXAgZmlsZSBmb3JtYXQgYWxsb3dzIGFyYml0cmFyeSBkYXRhIHRvIGJlIHByZXBlbmRlZCB0byBhIHppcCBmaWxlLiAgVGhlCit6aXAgYXBwbGljYXRpb24gZm9ybWF0IHVzZXMgdGhpcyBhYmlsaXR5IHRvIHByZXBlbmQgYSBzdGFuZGFyZCBQT1NJWCAic2hlYmFuZyIKK2xpbmUgdG8gdGhlIGZpbGUgKGBgIyEvcGF0aC90by9pbnRlcnByZXRlcmBgKS4KKworRm9ybWFsbHksIHRoZSBQeXRob24gemlwIGFwcGxpY2F0aW9uIGZvcm1hdCBpcyB0aGVyZWZvcmU6CisKKzEuIEFuIG9wdGlvbmFsIHNoZWJhbmcgbGluZSwgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBgYGInIyEnYGAgZm9sbG93ZWQgYnkgYW4KKyAgIGludGVycHJldGVyIG5hbWUsIGFuZCB0aGVuIGEgbmV3bGluZSAoYGBiJ1xuJ2BgKSBjaGFyYWN0ZXIuICBUaGUgaW50ZXJwcmV0ZXIKKyAgIG5hbWUgY2FuIGJlIGFueXRoaW5nIGFjY2VwdGFibGUgdG8gdGhlIE9TICJzaGViYW5nIiBwcm9jZXNzaW5nLCBvciB0aGUgUHl0aG9uCisgICBsYXVuY2hlciBvbiBXaW5kb3dzLiAgVGhlIGludGVycHJldGVyIHNob3VsZCBiZSBlbmNvZGVkIGluIFVURi04IG9uIFdpbmRvd3MsCisgICBhbmQgaW4gOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKWAgb24gUE9TSVguCisyLiBTdGFuZGFyZCB6aXBmaWxlIGRhdGEsIGFzIGdlbmVyYXRlZCBieSB0aGUgOm1vZDpgemlwZmlsZWAgbW9kdWxlLiAgVGhlCisgICB6aXBmaWxlIGNvbnRlbnQgKm11c3QqIGluY2x1ZGUgYSBmaWxlIGNhbGxlZCBgYF9fbWFpbl9fLnB5YGAgKHdoaWNoIG11c3QgYmUKKyAgIGluIHRoZSAicm9vdCIgb2YgdGhlIHppcGZpbGUgLSBpLmUuLCBpdCBjYW5ub3QgYmUgaW4gYSBzdWJkaXJlY3RvcnkpLiAgVGhlCisgICB6aXBmaWxlIGRhdGEgY2FuIGJlIGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkLgorCitJZiBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGhhcyBhIHNoZWJhbmcgbGluZSwgaXQgbWF5IGhhdmUgdGhlIGV4ZWN1dGFibGUgYml0IHNldAorb24gUE9TSVggc3lzdGVtcywgdG8gYWxsb3cgaXQgdG8gYmUgZXhlY3V0ZWQgZGlyZWN0bHkuCisKK1RoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRoYXQgdGhlIHRvb2xzIGluIHRoaXMgbW9kdWxlIGFyZSB1c2VkIHRvIGNyZWF0ZQorYXBwbGljYXRpb24gYXJjaGl2ZXMgLSB0aGUgbW9kdWxlIGlzIGEgY29udmVuaWVuY2UsIGJ1dCBhcmNoaXZlcyBpbiB0aGUgYWJvdmUKK2Zvcm1hdCBjcmVhdGVkIGJ5IGFueSBtZWFucyBhcmUgYWNjZXB0YWJsZSB0byBQeXRob24uCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggMTBhMDk0Zi4uZDQwMzE1ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTEzNCwxMiArMTM0LDE2IEBACiAKICAgIE9wZW4gYSBaSVAgZmlsZSwgd2hlcmUgKmZpbGUqIGNhbiBiZSBlaXRoZXIgYSBwYXRoIHRvIGEgZmlsZSAoYSBzdHJpbmcpIG9yIGEKICAgIGZpbGUtbGlrZSBvYmplY3QuICBUaGUgKm1vZGUqIHBhcmFtZXRlciBzaG91bGQgYmUgYGAncidgYCB0byByZWFkIGFuIGV4aXN0aW5nCi0gICBmaWxlLCBgYCd3J2BgIHRvIHRydW5jYXRlIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBvciBgYCdhJ2BgIHRvIGFwcGVuZCB0byBhbgotICAgZXhpc3RpbmcgZmlsZS4gIElmICptb2RlKiBpcyBgYCdhJ2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIFpJUAorICAgZmlsZSwgYGAndydgYCB0byB0cnVuY2F0ZSBhbmQgd3JpdGUgYSBuZXcgZmlsZSwgYGAneCdgYCB0byBleGNsdXNpdmUgY3JlYXRlCisgICBhbmQgd3JpdGUgYSBuZXcgZmlsZSwgb3IgYGAnYSdgYCB0byBhcHBlbmQgdG8gYW4gZXhpc3RpbmcgZmlsZS4KKyAgIElmICptb2RlKiBpcyBgYCd4J2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGZpbGUsCisgICBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBJZiAqbW9kZSogaXMgYGAnYSdgYCBhbmQgKmZpbGUqIHJlZmVycyB0byBhbiBleGlzdGluZyBaSVAKICAgIGZpbGUsIHRoZW4gYWRkaXRpb25hbCBmaWxlcyBhcmUgYWRkZWQgdG8gaXQuICBJZiAqZmlsZSogZG9lcyBub3QgcmVmZXIgdG8gYQogICAgWklQIGZpbGUsIHRoZW4gYSBuZXcgWklQIGFyY2hpdmUgaXMgYXBwZW5kZWQgdG8gdGhlIGZpbGUuICBUaGlzIGlzIG1lYW50IGZvcgogICAgYWRkaW5nIGEgWklQIGFyY2hpdmUgdG8gYW5vdGhlciBmaWxlIChzdWNoIGFzIDpmaWxlOmBweXRob24uZXhlYCkuICBJZgogICAgKm1vZGUqIGlzIGBgYWBgIGFuZCB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBhdCBhbGwsIGl0IGlzIGNyZWF0ZWQuCisgICBJZiAqbW9kZSogaXMgYGByYGAgb3IgYGBhYGAsIHRoZSBmaWxlIHNob3VsZCBiZSBzZWVrYWJsZS4KICAgICpjb21wcmVzc2lvbiogaXMgdGhlIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgdG8gdXNlIHdoZW4gd3JpdGluZyB0aGUgYXJjaGl2ZSwKICAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKQEAgLTE1MSw3ICsxNTUsNyBAQAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KIAotICAgSWYgdGhlIGZpbGUgaXMgY3JlYXRlZCB3aXRoIG1vZGUgYGAnYSdgYCBvciBgYCd3J2BgIGFuZCB0aGVuCisgICBJZiB0aGUgZmlsZSBpcyBjcmVhdGVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgYW5kIHRoZW4KICAgIDptZXRoOmBjbG9zZWQgPGNsb3NlPmAgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzIHRvIHRoZSBhcmNoaXZlLCB0aGUgYXBwcm9wcmlhdGUKICAgIFpJUCBzdHJ1Y3R1cmVzIGZvciBhbiBlbXB0eSBhcmNoaXZlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4KIApAQCAtMTcxLDYgKzE3NSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFpJUDY0IGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjI2LDE0ICsyMzQsOCBAQAogCiAgICAuLiBub3RlOjoKIAotICAgICAgSWYgdGhlIFppcEZpbGUgd2FzIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhIGZpbGUtbGlrZSBvYmplY3QgYXMgdGhlICBmaXJzdAotICAgICAgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBzaGFyZXMgdGhlCi0gICAgICBaaXBGaWxlJ3MgZmlsZSBwb2ludGVyLiAgVW5kZXIgdGhlc2UgIGNpcmN1bXN0YW5jZXMsIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkKLSAgICAgIDptZXRoOmAub3BlbmAgc2hvdWxkIG5vdCAgYmUgdXNlZCBhZnRlciBhbnkgYWRkaXRpb25hbCBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQKLSAgICAgIG9uIHRoZSAgWmlwRmlsZSBvYmplY3QuICBJZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgc3RyaW5nICh0aGUKLSAgICAgIGZpbGVuYW1lKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuICA6bWV0aDpgLm9wZW5gIHdpbGwKLSAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgaGVsZCBieSB0aGUgWmlwRXh0RmlsZSwgYWxsb3dpbmcgaXQgdG8KLSAgICAgIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUgIFppcEZpbGUuCisgICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKKyAgICAgIFppcEZpbGUuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zMTgsNyArMzIwLDggQEAKICAgICphcmNuYW1lKiAoYnkgZGVmYXVsdCwgdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzICpmaWxlbmFtZSosIGJ1dCB3aXRob3V0IGEgZHJpdmUKICAgIGxldHRlciBhbmQgd2l0aCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4gIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSoKICAgIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yCi0gICB0aGUgbmV3IGVudHJ5LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZworICAgdGhlIG5ldyBlbnRyeS4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKICAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCiAgICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQogICAgOmV4YzpgUnVudGltZUVycm9yYC4KQEAgLTM0MCwxNiArMzQzLDE2IEBACiAgICAgICBJZiBgYGFyY25hbWVgYCAob3IgYGBmaWxlbmFtZWBgLCBpZiBgYGFyY25hbWVgYCBpcyAgbm90IGdpdmVuKSBjb250YWlucyBhIG51bGwKICAgICAgIGJ5dGUsIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlIHdpbGwgYmUgdHJ1bmNhdGVkIGF0IHRoZSBudWxsIGJ5dGUuCiAKLQogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBieXRlc1ssIGNvbXByZXNzX3R5cGVdKQogCiAgICBXcml0ZSB0aGUgc3RyaW5nICpieXRlcyogdG8gdGhlIGFyY2hpdmU7ICp6aW5mb19vcl9hcmNuYW1lKiBpcyBlaXRoZXIgdGhlIGZpbGUKICAgIG5hbWUgaXQgd2lsbCBiZSBnaXZlbiBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlLiAgSWYgaXQncwogICAgYW4gaW5zdGFuY2UsIGF0IGxlYXN0IHRoZSBmaWxlbmFtZSwgZGF0ZSwgYW5kIHRpbWUgbXVzdCBiZSBnaXZlbi4gIElmIGl0J3MgYQotICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuIFRoZSBhcmNoaXZlIG11c3QgYmUKLSAgIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlCi0gICBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgICB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcKLSAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCisgICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKKyAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KIAogICAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKiBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKgogICAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIG5ldyBlbnRyeSwgb3IgaW4gdGhlICp6aW5mb19vcl9hcmNuYW1lKgpAQCAtMzc3LDcgKzM4MCw4IEBACiAuLiBhdHRyaWJ1dGU6OiBaaXBGaWxlLmNvbW1lbnQKIAogICAgVGhlIGNvbW1lbnQgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIFpJUCBmaWxlLiAgSWYgYXNzaWduaW5nIGEgY29tbWVudCB0byBhCi0gICA6Y2xhc3M6YFppcEZpbGVgIGluc3RhbmNlIGNyZWF0ZWQgd2l0aCBtb2RlICdhJyBvciAndycsIHRoaXMgc2hvdWxkIGJlIGEKKyAgIDpjbGFzczpgWmlwRmlsZWAgaW5zdGFuY2UgY3JlYXRlZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLAorICAgdGhpcyBzaG91bGQgYmUgYQogICAgc3RyaW5nIG5vIGxvbmdlciB0aGFuIDY1NTM1IGJ5dGVzLiAgQ29tbWVudHMgbG9uZ2VyIHRoYW4gdGhpcyB3aWxsIGJlCiAgICB0cnVuY2F0ZWQgaW4gdGhlIHdyaXR0ZW4gYXJjaGl2ZSB3aGVuIDptZXRoOmBjbG9zZWAgaXMgY2FsbGVkLgogCkBAIC00MDcsOCArNDExLDcgQEAKICAgICAgIGFyY2hpdmUuCiAKICAgICAgIElmIHRoZSAqb3B0aW1pemUqIHBhcmFtZXRlciB0byA6Y2xhc3M6YFB5WmlwRmlsZWAgd2FzIG5vdCBnaXZlbiBvciBgYC0xYGAsCi0gICAgICB0aGUgY29ycmVzcG9uZGluZyBmaWxlIGlzIGEgOmZpbGU6YFwqLnB5b2AgZmlsZSBpZiBhdmFpbGFibGUsIGVsc2UgYQotICAgICAgOmZpbGU6YFwqLnB5Y2AgZmlsZSwgY29tcGlsaW5nIGlmIG5lY2Vzc2FyeS4KKyAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgaXMgYSA6ZmlsZTpgXCoucHljYCBmaWxlLCBjb21waWxpbmcgaWYgbmVjZXNzYXJ5LgogCiAgICAgICBJZiB0aGUgKm9wdGltaXplKiBwYXJhbWV0ZXIgdG8gOmNsYXNzOmBQeVppcEZpbGVgIHdhcyBgYDBgYCwgYGAxYGAgb3IKICAgICAgIGBgMmBgLCBvbmx5IGZpbGVzIHdpdGggdGhhdCBvcHRpbWl6YXRpb24gbGV2ZWwgKHNlZSA6ZnVuYzpgY29tcGlsZWApIGFyZQpAQCAtNTcxLDQgKzU3NCwzIEBACiAuLiBhdHRyaWJ1dGU6OiBaaXBJbmZvLmZpbGVfc2l6ZQogCiAgICBTaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZmlsZS4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdCBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKaW5kZXggMmNmNTA4Yi4uOGE1ZDVkMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CkBAIC0yMCwxMCArMjAsMTAgQEAKIGltcG9ydCBmcm9tIHRoZSA6ZmlsZTpgbGliL2Agc3ViZGlyZWN0b3J5IHdpdGhpbiB0aGUgYXJjaGl2ZS4KIAogQW55IGZpbGVzIG1heSBiZSBwcmVzZW50IGluIHRoZSBaSVAgYXJjaGl2ZSwgYnV0IG9ubHkgZmlsZXMgOmZpbGU6YC5weWAgYW5kCi06ZmlsZTpgLnB5W2NvXWAgYXJlIGF2YWlsYWJsZSBmb3IgaW1wb3J0LiAgWklQIGltcG9ydCBvZiBkeW5hbWljIG1vZHVsZXMKKzpmaWxlOmAucHljYCBhcmUgYXZhaWxhYmxlIGZvciBpbXBvcnQuICBaSVAgaW1wb3J0IG9mIGR5bmFtaWMgbW9kdWxlcwogKDpmaWxlOmAucHlkYCwgOmZpbGU6YC5zb2ApIGlzIGRpc2FsbG93ZWQuIE5vdGUgdGhhdCBpZiBhbiBhcmNoaXZlIG9ubHkgY29udGFpbnMKIDpmaWxlOmAucHlgIGZpbGVzLCBQeXRob24gd2lsbCBub3QgYXR0ZW1wdCB0byBtb2RpZnkgdGhlIGFyY2hpdmUgYnkgYWRkaW5nIHRoZQotY29ycmVzcG9uZGluZyA6ZmlsZTpgLnB5Y2Agb3IgOmZpbGU6YC5weW9gIGZpbGUsIG1lYW5pbmcgdGhhdCBpZiBhIFpJUCBhcmNoaXZlCitjb3JyZXNwb25kaW5nIDpmaWxlOmAucHljYCBmaWxlLCBtZWFuaW5nIHRoYXQgaWYgYSBaSVAgYXJjaGl2ZQogZG9lc24ndCBjb250YWluIDpmaWxlOmAucHljYCBmaWxlcywgaW1wb3J0aW5nIG1heSBiZSByYXRoZXIgc2xvdy4KIAogWklQIGFyY2hpdmVzIHdpdGggYW4gYXJjaGl2ZSBjb21tZW50IGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KQEAgLTE2MSw0ICsxNjEsMyBAQAogICAgPj4+IGltcG9ydCBqd3p0aHJlYWRpbmcKICAgID4+PiBqd3p0aHJlYWRpbmcuX19maWxlX18KICAgICdleGFtcGxlLnppcC9qd3p0aHJlYWRpbmcucHknCi0KZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCAyNTFmODIyLi4zZmY5MWYyIDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC04LDkgKzgsMTcgQEAKIGlmICIlU1BISU5YQlVJTEQlIiBFUVUgIiIgc2V0IFNQSElOWEJVSUxEPXNwaGlueC1idWlsZA0KIGlmICIlUFlUSE9OJSIgRVFVICIiIHNldCBQWVRIT049cHkNCiANCi1pZiBERUZJTkVEIFByb2dyYW1GaWxlcyh4ODYpIHNldCBfUFJHTUZMUz0lUHJvZ3JhbUZpbGVzKHg4NiklDQotaWYgTk9UIERFRklORUQgUHJvZ3JhbUZpbGVzKHg4Nikgc2V0IF9QUkdNRkxTPSVQcm9ncmFtRmlsZXMlDQotaWYgIiVIVE1MSEVMUCUiIEVRVSAiIiBzZXQgSFRNTEhFTFA9JV9QUkdNRkxTJVxIVE1MIEhlbHAgV29ya3Nob3BcaGhjLmV4ZQ0KK2lmICIlMSIgTkVRICJodG1saGVscCIgZ290byA6c2tpcGhoY3NlYXJjaA0KK2lmIGV4aXN0ICIlSFRNTEhFTFAlIiBnb3RvIDpza2lwaGhjc2VhcmNoDQorDQorcmVtIFNlYXJjaCBmb3IgSEhDIGluIGxpa2VseSBwbGFjZXMNCitzZXQgSFRNTEhFTFA9DQord2hlcmUgaGhjIC9xICYmIHNldCBIVE1MSEVMUD1oaGMgJiYgZ290byA6c2tpcGhoY3NlYXJjaA0KK3doZXJlIC9SIC4uXGV4dGVybmFscyBoaGMgPiAiJVRFTVAlXGhoYy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgSFRNTEhFTFA9IDwgIiVURU1QJVxoaGMubG9jIiAmIGRlbCAiJVRFTVAlXGhoYy5sb2MiDQoraWYgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiB3aGVyZSAvUiAiJVByb2dyYW1GaWxlcyh4ODYpJSIgaGhjID4gIiVURU1QJVxoaGMubG9jIiAyPiBudWwgJiYgc2V0IC9QIEhUTUxIRUxQPSA8ICIlVEVNUCVcaGhjLmxvYyIgJiBkZWwgIiVURU1QJVxoaGMubG9jIg0KK2lmIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMlIiBoaGMgPiAiJVRFTVAlXGhoYy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgSFRNTEhFTFA9IDwgIiVURU1QJVxoaGMubG9jIiAmIGRlbCAiJVRFTVAlXGhoYy5sb2MiDQoraWYgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiBlY2hvIENhbm5vdCBmaW5kIEhIQyBvbiBQQVRIIG9yIGluIGV4dGVybmFscyAmIGV4aXQgL0IgMQ0KKzpza2lwaGhjc2VhcmNoDQogDQogaWYgIiVESVNUVkVSU0lPTiUiIEVRVSAiIiBmb3IgL2YgInVzZWJhY2txIiAlJXYgaW4gKGAlUFlUSE9OJSB0b29scy9leHRlbnNpb25zL3BhdGNobGV2ZWwucHlgKSBkbyBzZXQgRElTVFZFUlNJT049JSV2DQogDQpAQCAtMzYsNyArNDQsOCBAQAogICAgIGVjaG8uDQogICAgIGVjaG8uSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3RhbGxlZCwgZ3JhYiBpdCBmcm9tDQogICAgIGVjaG8uaHR0cDovL3NwaGlueC1kb2Mub3JnLw0KLSAgICBnb3RvIGVuZA0KKyAgICBwb3BkDQorICAgIGV4aXQgL0IgMQ0KICkNCiANCiByZW0gVGFyZ2V0cyB0aGF0IGRvIHJlcXVpcmUgc3BoaW54LWJ1aWxkIGFuZCBoYXZlIHRoZWlyIG93biBsYWJlbA0KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKaW5kZXggNWRkMTdlYi4uNThiNmQ3MSAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKQEAgLTUxLDYgKzUxLDkgQEAKICAgICAgICAgICAgICAgICA6IHwgYHdpdGhfc3RtdGAKICAgICAgICAgICAgICAgICA6IHwgYGZ1bmNkZWZgCiAgICAgICAgICAgICAgICAgOiB8IGBjbGFzc2RlZmAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX3dpdGhfc3RtdGAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX2Zvcl9zdG10YAorICAgICAgICAgICAgICAgIDogfCBgYXN5bmNfZnVuY2RlZmAKICAgIHN1aXRlOiBgc3RtdF9saXN0YCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgYHN0YXRlbWVudGArIERFREVOVAogICAgc3RhdGVtZW50OiBgc3RtdF9saXN0YCBORVdMSU5FIHwgYGNvbXBvdW5kX3N0bXRgCiAgICBzdG10X2xpc3Q6IGBzaW1wbGVfc3RtdGAgKCI7IiBgc2ltcGxlX3N0bXRgKSogWyI7Il0KQEAgLTY2MCw2ICs2NjMsMTEyIEBACiAgICA6cGVwOmAzMTI5YCAtIENsYXNzIERlY29yYXRvcnMKIAogCitDb3JvdXRpbmVzCis9PT09PT09PT09CisKKy4uIF9gYXN5bmMgZGVmYDoKKworQ29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluaXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFzeW5jX2Z1bmNkZWY6ICJhc3luYyIgYGZ1bmNkZWZgCisKK0V4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnkgcG9pbnRzCisoc2VlIDp0ZXJtOmBjb3JvdXRpbmVgLikgIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbnMsIDprZXl3b3JkOmBhc3luYyBmb3JgCithbmQgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGhlaXIgYm9kaWVzLgorCitGdW5jdGlvbnMgZGVmaW5lZCB3aXRoIGBgYXN5bmMgZGVmYGAgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lIGZ1bmN0aW9ucywKK2V2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiBgYGF3YWl0YGAgb3IgYGBhc3luY2BgIGtleXdvcmRzLgorCitJdCBpcyBhIDpleGM6YFN5bnRheEVycm9yYCB0byB1c2UgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucyBpbiBjb3JvdXRpbmVzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBfYGFzeW5jIGZvcmA6CisKK1RoZSA6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXN5bmNfZm9yX3N0bXQ6ICJhc3luYyIgYGZvcl9zdG10YAorCitBbiA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhYmxlYCBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzCisqaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBjYW4gY2FsbCBhc3luY2hyb25vdXMKK2NvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuCisKK1RoZSBgYGFzeW5jIGZvcmBgIHN0YXRlbWVudCBhbGxvd3MgY29udmVuaWVudCBpdGVyYXRpb24gb3ZlciBhc3luY2hyb25vdXMKK2l0ZXJhdG9ycy4KKworVGhlIGZvbGxvd2luZyBjb2RlOjoKKworICAgIGFzeW5jIGZvciBUQVJHRVQgaW4gSVRFUjoKKyAgICAgICAgQkxPQ0sKKyAgICBlbHNlOgorICAgICAgICBCTE9DSzIKKworSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86OgorCisgICAgaXRlciA9IChJVEVSKQorICAgIGl0ZXIgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYWl0ZXJfXyhpdGVyKQorICAgIHJ1bm5pbmcgPSBUcnVlCisgICAgd2hpbGUgcnVubmluZzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcikKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJ1bm5pbmcgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgQkxPQ0sKKyAgICBlbHNlOgorICAgICAgICBCTE9DSzIKKworU2VlIGFsc28gOm1ldGg6YF9fYWl0ZXJfX2AgYW5kIDptZXRoOmBfX2FuZXh0X19gIGZvciBkZXRhaWxzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBfYGFzeW5jIHdpdGhgOgorCitUaGUgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIHN0YXRlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXN5bmNfd2l0aF9zdG10OiAiYXN5bmMiIGB3aXRoX3N0bXRgCisKK0FuIDp0ZXJtOmBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyYCBpcyBhIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHRoYXQgaXMKK2FibGUgdG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLgorCitUaGUgZm9sbG93aW5nIGNvZGU6OgorCisgICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjoKKyAgICAgICAgQkxPQ0sKKworSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86OgorCisgICAgbWdyID0gKEVYUFIpCisgICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fCisgICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKQorICAgIGV4YyA9IFRydWUKKworICAgIFZBUiA9IGF3YWl0IGFlbnRlcgorICAgIHRyeToKKyAgICAgICAgQkxPQ0sKKyAgICBleGNlcHQ6CisgICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6CisgICAgICAgICAgICByYWlzZQorICAgIGVsc2U6CisgICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSkKKworU2VlIGFsc28gOm1ldGg6YF9fYWVudGVyX19gIGFuZCA6bWV0aDpgX19hZXhpdF9fYCBmb3IgZGV0YWlscy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0OTJgIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXgKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCBkZGExOGJhLi41MDhiNGI1IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC02MTYsNiArNjE2LDE2IEBACiAgICAgICBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mCiAgICAgICB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQuCiAKKyAgIENvcm91dGluZSBmdW5jdGlvbnMKKyAgICAgIC4uIGluZGV4OjoKKyAgICAgICAgIHNpbmdsZTogY29yb3V0aW5lOyBmdW5jdGlvbgorCisgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIGlzIGNhbGxlZAorICAgICAgYSA6ZGZuOmBjb3JvdXRpbmUgZnVuY3Rpb25gLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgcmV0dXJucyBhCisgICAgICA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QuICBJdCBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zLAorICAgICAgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgd2l0aGAgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudHMuIFNlZQorICAgICAgYWxzbyA6cmVmOmBjb3JvdXRpbmVzYCBzZWN0aW9uLgorCiAgICBCdWlsdC1pbiBmdW5jdGlvbnMKICAgICAgIC4uIGluZGV4OjoKICAgICAgICAgIG9iamVjdDogYnVpbHQtaW4gZnVuY3Rpb24KQEAgLTE5ODYsNiArMTk5Niw3IEBACiAuLiBtZXRob2Q6OiBvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpCisgICAgICAgICAgICBvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcikKQEAgLTIwMDIsMTUgKzIwMTMsMTYgQEAKICAgICAgIGJ1aWx0aW46IHBvdwogICAgICAgYnVpbHRpbjogcG93CiAKLSAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgK2BgLAotICAgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwKLSAgIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uCi0gICBgYHggKyB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX2FkZF9fYAotICAgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSA6bWV0aDpgX19kaXZtb2RfX2AgbWV0aG9kIHNob3VsZCBiZSB0aGUKLSAgIGVxdWl2YWxlbnQgdG8gdXNpbmcgOm1ldGg6YF9fZmxvb3JkaXZfX2AgYW5kIDptZXRoOmBfX21vZF9fYDsgaXQgc2hvdWxkIG5vdCBiZQotICAgcmVsYXRlZCB0byA6bWV0aDpgX190cnVlZGl2X19gLiAgTm90ZSB0aGF0IDptZXRoOmBfX3Bvd19fYCBzaG91bGQgYmUgZGVmaW5lZAotICAgdG8gYWNjZXB0IGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluCi0gICA6ZnVuYzpgcG93YCBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuCisgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zCisgICAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwKKyAgIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8KKyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCArIHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdAorICAgaGFzIGFuIDptZXRoOmBfX2FkZF9fYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlCisgICA6bWV0aDpgX19kaXZtb2RfX2AgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZworICAgOm1ldGg6YF9fZmxvb3JkaXZfX2AgYW5kIDptZXRoOmBfX21vZF9fYDsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvCisgICA6bWV0aDpgX190cnVlZGl2X19gLiAgTm90ZSB0aGF0IDptZXRoOmBfX3Bvd19fYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQKKyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBwb3dgCisgICBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuCiAKICAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZSBzdXBwbGllZAogICAgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC4KQEAgLTIwMTksNiArMjAzMSw3IEBACiAuLiBtZXRob2Q6OiBvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpCisgICAgICAgICAgICBvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpCkBAIC0yMDM0LDE0ICsyMDQ3LDE0IEBACiAgICAgICBidWlsdGluOiBkaXZtb2QKICAgICAgIGJ1aWx0aW46IHBvdwogCi0gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYCtgYCwKLSAgIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLCA6ZnVuYzpgcG93YCwgYGAqKmBgLAotICAgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4KLSAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZQotICAgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbI11fICBGb3IKLSAgIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZgotICAgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19yc3ViX19gIG1ldGhvZCwgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmCi0gICBgYHguX19zdWJfXyh5KWBgIHJldHVybnMgKk5vdEltcGxlbWVudGVkKi4KKyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMKKyAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAorICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApIHdpdGggcmVmbGVjdGVkCisgICAoc3dhcHBlZCkgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcworICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAorICAgdHlwZXMuIFsjXV8gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcworICAgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19yc3ViX19gIG1ldGhvZCwgYGB5Ll9fcnN1Yl9fKHgpYGAKKyAgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnMgKk5vdEltcGxlbWVudGVkKi4KIAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBwb3cKIApAQCAtMjA1OSw2ICsyMDcyLDcgQEAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgICAgIG9iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcikKQEAgLTIwNzAsMTcgKzIwODQsMTcgQEAKICAgICAgICAgICAgIG9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKQogCiAgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpYyBhc3NpZ25tZW50cwotICAgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLCBgYCoqPWBgLCBgYDw8PWBgLCBgYD4+PWBgLAotICAgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZSBvcGVyYXRpb24KLSAgIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcwotICAgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZAotICAgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuCi0gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHdpdGggYW4gOm1ldGg6YF9faWFkZF9fYCBtZXRob2QsIGBgeCArPSB5YGAgaXMgZXF1aXZhbGVudAotICAgdG8gYGB4ID0geC5fX2lhZGRfXyh5KWBgIC4gT3RoZXJ3aXNlLCBgYHguX19hZGRfXyh5KWBgIGFuZCBgYHkuX19yYWRkX18oeClgYAotICAgYXJlIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsCi0gICBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUKLSAgIDpyZWY6YGZhcS1hdWdtZW50ZWQtYXNzaWdubWVudC10dXBsZS1lcnJvcmApLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbgotICAgZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLgorICAgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgQD1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsIGBgKio9YGAsIGBgPDw9YGAsCisgICBgYD4+PWBgLCBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlCisgICBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsCisgICBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUKKyAgIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCoKKyAgIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhbiA6bWV0aDpgX19pYWRkX19gIG1ldGhvZCwgYGB4ICs9IHlgYCBpcworICAgZXF1aXZhbGVudCB0byBgYHggPSB4Ll9faWFkZF9fKHkpYGAgLiBPdGhlcndpc2UsIGBgeC5fX2FkZF9fKHkpYGAgYW5kCisgICBgYHkuX19yYWRkX18oeClgYCBhcmUgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuIEluCisgICBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnMgKHNlZQorICAgOnJlZjpgZmFxLWF1Z21lbnRlZC1hc3NpZ25tZW50LXR1cGxlLWVycm9yYCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QKKyAgIHBhcnQgb2YgdGhlIGRhdGEgbW9kZWwuCiAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fbmVnX18oc2VsZikKQEAgLTIyNTAsNiArMjI2NCwxMDQgQEAKIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS4KIAogCisuLiBfY29yb3V0aW5lczoKKworQ29yb3V0aW5lcworPT09PT09PT09PQorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGNvcm91dGluZQorCisKK0F3YWl0YWJsZSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXdhaXRhYmxlKiBvYmplY3QgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisqIEEgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0IHJldHVybmVkIGZyb20gYSA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYC4KKworKiBBIDp0ZXJtOmBnZW5lcmF0b3JgIGRlY29yYXRlZCB3aXRoIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgCisgIChvciA6ZnVuYzpgYXN5bmNpby5jb3JvdXRpbmVgKSBkZWNvcmF0b3IuCisKKyogQW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBhbiBgYF9fYXdhaXRfX2BgIG1ldGhvZC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYXdhaXRfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiA6dGVybTpgaXRlcmF0b3JgLiAgU2hvdWxkIGJlIHVzZWQgdG8gaW1wbGVtZW50CisgICA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLiAgRm9yIGluc3RhbmNlLCA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRzCisgICB0aGlzIG1ldGhvZCB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIHNlZWFsc286OiA6cGVwOmA0OTJgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGF3YWl0YWJsZSBvYmplY3RzLgorCisKK0FzeW5jaHJvbm91cyBJdGVyYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gKmFzeW5jaHJvbm91cyBpdGVyYWJsZSogaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlIGluIGl0cworYGBfX2FpdGVyX19gYCBpbXBsZW1lbnRhdGlvbiwgYW5kIGFuICphc3luY2hyb25vdXMgaXRlcmF0b3IqIGNhbiBjYWxsCithc3luY2hyb25vdXMgY29kZSBpbiBpdHMgYGBfX2FuZXh0X19gYCBtZXRob2QuCisKK0FzeW5jaHJvbm91cyBpdGVyYXRvcnMgY2FuIGJlIHVzZWQgaW4gYSA6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQuCisKKy4uIG1ldGhvZDo6IG9iamVjdC5fX2FpdGVyX18oc2VsZikKKworICAgTXVzdCByZXR1cm4gYW4gKmF3YWl0YWJsZSogcmVzdWx0aW5nIGluIGFuICphc3luY2hyb25vdXMgaXRlcmF0b3IqIG9iamVjdC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYW5leHRfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiAqYXdhaXRhYmxlKiByZXN1bHRpbmcgaW4gYSBuZXh0IHZhbHVlIG9mIHRoZSBpdGVyYXRvci4gIFNob3VsZAorICAgcmFpc2UgYSA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGVycm9yIHdoZW4gdGhlIGl0ZXJhdGlvbiBpcyBvdmVyLgorCitBbiBleGFtcGxlIG9mIGFuIGFzeW5jaHJvbm91cyBpdGVyYWJsZSBvYmplY3Q6OgorCisgICAgY2xhc3MgUmVhZGVyOgorICAgICAgICBhc3luYyBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICAgICAuLi4KKworICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgdmFsID0gYXdhaXQgc2VsZi5yZWFkbGluZSgpCisgICAgICAgICAgICBpZiB2YWwgPT0gYicnOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCitBc3luY2hyb25vdXMgQ29udGV4dCBNYW5hZ2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gKmFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIqIGlzIGEgKmNvbnRleHQgbWFuYWdlciogdGhhdCBpcyBhYmxlIHRvCitzdXNwZW5kIGV4ZWN1dGlvbiBpbiBpdHMgYGBfX2FlbnRlcl9fYGAgYW5kIGBgX19hZXhpdF9fYGAgbWV0aG9kcy4KKworQXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcnMgY2FuIGJlIHVzZWQgaW4gYSA6a2V5d29yZDpgYXN5bmMgd2l0aGAgc3RhdGVtZW50LgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hZW50ZXJfXyhzZWxmKQorCisgICBUaGlzIG1ldGhvZCBpcyBzZW1hbnRpY2FsbHkgc2ltaWxhciB0byB0aGUgOm1ldGg6YF9fZW50ZXJfX2AsIHdpdGggb25seQorICAgZGlmZmVyZW5jZSB0aGF0IGl0IG11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqLgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaykKKworICAgVGhpcyBtZXRob2QgaXMgc2VtYW50aWNhbGx5IHNpbWlsYXIgdG8gdGhlIDptZXRoOmBfX2V4aXRfX2AsIHdpdGggb25seQorICAgZGlmZmVyZW5jZSB0aGF0IGl0IG11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqLgorCitBbiBleGFtcGxlIG9mIGFuIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIgY2xhc3M6OgorCisgICAgY2xhc3MgQXN5bmNDb250ZXh0TWFuYWdlcjoKKyAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICBhd2FpdCBsb2coJ2VudGVyaW5nIGNvbnRleHQnKQorCisgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4YywgdGIpOgorICAgICAgICAgICAgYXdhaXQgbG9nKCdleGl0aW5nIGNvbnRleHQnKQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIEl0ICppcyogcG9zc2libGUgaW4gc29tZSBjYXNlcyB0byBjaGFuZ2UgYW4gb2JqZWN0J3MgdHlwZSwgdW5kZXIgY2VydGFpbgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAppbmRleCBkZDNjYjllLi45ZDNmZGYyIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdApAQCAtNDQzLDEyICs0NDMsMTIgQEAKIC4uIG1ldGhvZDo6IGdlbmVyYXRvci5jbG9zZSgpCiAKICAgIFJhaXNlcyBhIDpleGM6YEdlbmVyYXRvckV4aXRgIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdhcwotICAgcGF1c2VkLiAgSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiB0aGVuIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCAoYnkKLSAgIGV4aXRpbmcgbm9ybWFsbHksIG9yIGR1ZSB0byBhbHJlYWR5IGJlaW5nIGNsb3NlZCkgb3IgOmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5Ci0gICBub3QgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiksIGNsb3NlIHJldHVybnMgdG8gaXRzIGNhbGxlci4gIElmIHRoZSBnZW5lcmF0b3IKLSAgIHlpZWxkcyBhIHZhbHVlLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGdlbmVyYXRvciByYWlzZXMgYW55Ci0gICBvdGhlciBleGNlcHRpb24sIGl0IGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4gIDptZXRoOmBjbG9zZWAgZG9lcyBub3RoaW5nCi0gICBpZiB0aGUgZ2VuZXJhdG9yIGhhcyBhbHJlYWR5IGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uIG9yIG5vcm1hbCBleGl0LgorICAgcGF1c2VkLiAgSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiB0aGVuIGV4aXRzIGdyYWNlZnVsbHksIGlzIGFscmVhZHkgY2xvc2VkLAorICAgb3IgcmFpc2VzIDpleGM6YEdlbmVyYXRvckV4aXRgIChieSBub3QgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiksIGNsb3NlCisgICByZXR1cm5zIHRvIGl0cyBjYWxsZXIuICBJZiB0aGUgZ2VuZXJhdG9yIHlpZWxkcyBhIHZhbHVlLCBhCisgICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBnZW5lcmF0b3IgcmFpc2VzIGFueSBvdGhlciBleGNlcHRpb24sCisgICBpdCBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuICA6bWV0aDpgY2xvc2VgIGRvZXMgbm90aGluZyBpZiB0aGUgZ2VuZXJhdG9yCisgICBoYXMgYWxyZWFkeSBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiBvciBub3JtYWwgZXhpdC4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IHlpZWxkOyBleGFtcGxlcwogCkBAIC04MTEsNiArODExLDIwIEBACiAgICBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLgogCiAKKy4uIF9hd2FpdDoKKworQXdhaXQgZXhwcmVzc2lvbgorPT09PT09PT09PT09PT09PQorCitTdXNwZW5kIHRoZSBleGVjdXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAgb24gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LgorQ2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgYSA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYC4KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXdhaXQ6IFsiYXdhaXQiXSBgcHJpbWFyeWAKKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gX3Bvd2VyOgogCiBUaGUgcG93ZXIgb3BlcmF0b3IKQEAgLTgyMCw3ICs4MzQsNyBAQAogbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZSBzeW50YXggaXM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIHBvd2VyOiBgcHJpbWFyeWAgWyIqKiIgYHVfZXhwcmBdCisgICBwb3dlcjogYGF3YWl0YCBbIioqIiBgdV9leHByYF0KIAogVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZSBvcGVyYXRvcnMKIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpbiB0aGUgZXZhbHVhdGlvbiBvcmRlcgpAQCAtODkxLDggKzkwNSw5IEBACiBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmUgb3BlcmF0b3JzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBtX2V4cHI6IGB1X2V4cHJgIHwgYG1fZXhwcmAgIioiIGB1X2V4cHJgIHwgYG1fZXhwcmAgIi8vIiBgdV9leHByYCB8IGBtX2V4cHJgICIvIiBgdV9leHByYAotICAgICAgICAgOiB8IGBtX2V4cHJgICIlIiBgdV9leHByYAorICAgbV9leHByOiBgdV9leHByYCB8IGBtX2V4cHJgICIqIiBgdV9leHByYCB8IGBtX2V4cHJgICJAIiBgbV9leHByYCB8CisgICAgICAgICA6IGBtX2V4cHJgICIvLyIgYHVfZXhwcmB8IGBtX2V4cHJgICIvIiBgdV9leHByYCB8CisgICAgICAgICA6IGBtX2V4cHJgICIlIiBgdV9leHByYAogICAgYV9leHByOiBgbV9leHByYCB8IGBhX2V4cHJgICIrIiBgbV9leHByYCB8IGBhX2V4cHJgICItIiBgbV9leHByYAogCiAuLiBpbmRleDo6IHNpbmdsZTogbXVsdGlwbGljYXRpb24KQEAgLTkwMyw2ICs5MTgsMTMgQEAKIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlCiByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuCiAKKy4uIGluZGV4Ojogc2luZ2xlOiBtYXRyaXggbXVsdGlwbGljYXRpb24KKworVGhlIGBgQGBgIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uLiAgTm8KK2J1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gaW5kZXg6OgogICAgZXhjZXB0aW9uOiBaZXJvRGl2aXNpb25FcnJvcgogICAgc2luZ2xlOiBkaXZpc2lvbgpAQCAtMTM0NiwxMyArMTM2OCwxNiBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgK2BgLCBgYC1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsjXV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIG1hdHJpeCAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtdWx0aXBsaWNhdGlvbiBkaXZpc2lvbiwgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbWFpbmRlciBbI11fICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCt4YGAsIGBgLXhgYCwgYGB+eGBgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWyNdXyAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgYXdhaXRgYCBgYHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYHhbaW5kZXhdYGAsIGBgeFtpbmRleDppbmRleF1gYCwgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsICAgICAgICAgICAgICB8CiB8IGBgeChhcmd1bWVudHMuLi4pYGAsIGBgeC5hdHRyaWJ1dGVgYCAgICAgICAgICB8IGNhbGwsIGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CmluZGV4IDc5NjZiYzUuLjUwZTQ2ODggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTMzOSw2ICszMzksNyBAQAogCiAgICAgbW9kdWxlID0gTm9uZQogICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lIGFuZCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgorICAgICAgICAjIEl0IGlzIGFzc3VtZWQgJ2V4ZWNfbW9kdWxlJyB3aWxsIGFsc28gYmUgZGVmaW5lZCBvbiB0aGUgbG9hZGVyLgogICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IE1vZHVsZVR5cGUoc3BlYy5uYW1lKQpAQCAtNDI3LDcgKzQyOCw3IEBACiBieSBpbXBsZW1lbnRpbmcgYSA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG1ldGhvZC4KIEl0IHRha2VzIG9uZSBhcmd1bWVudCwgdGhlIG1vZHVsZSBzcGVjLCBhbmQgcmV0dXJucyB0aGUgbmV3IG1vZHVsZSBvYmplY3QKIHRvIHVzZSBkdXJpbmcgbG9hZGluZy4gIGBgY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgbmVlZCB0byBzZXQgYW55IGF0dHJpYnV0ZXMKLW9uIHRoZSBtb2R1bGUgb2JqZWN0LiAgSWYgdGhlIGxvYWRlciBkb2VzIG5vdCBkZWZpbmUgYGBjcmVhdGVfbW9kdWxlKClgYCwgdGhlCitvbiB0aGUgbW9kdWxlIG9iamVjdC4gIElmIHRoZSBtZXRob2QgcmV0dXJucyBgYE5vbmVgYCwgdGhlCiBpbXBvcnQgbWFjaGluZXJ5IHdpbGwgY3JlYXRlIHRoZSBuZXcgbW9kdWxlIGl0c2VsZi4KIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CkBAIC00NTksNyArNDYwLDEzIEBACiAKICAgICAqIElmIGxvYWRpbmcgZmFpbHMsIHRoZSBsb2FkZXIgbXVzdCByZW1vdmUgYW55IG1vZHVsZXMgaXQgaGFzIGluc2VydGVkCiAgICAgICBpbnRvIDpkYXRhOmBzeXMubW9kdWxlc2AsIGJ1dCBpdCBtdXN0IHJlbW92ZSAqKm9ubHkqKiB0aGUgZmFpbGluZwotICAgICAgbW9kdWxlLCBhbmQgb25seSBpZiB0aGUgbG9hZGVyIGl0c2VsZiBoYXMgbG9hZGVkIGl0IGV4cGxpY2l0bHkuCisgICAgICBtb2R1bGUocyksIGFuZCBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgdGhlIG1vZHVsZShzKQorICAgICAgZXhwbGljaXRseS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIEEgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCBpcyByYWlzZWQgd2hlbiBgYGV4ZWNfbW9kdWxlKClgYCBpcyBkZWZpbmVkIGJ1dAorICAgYGBjcmVhdGVfbW9kdWxlKClgYCBpcyBub3QuIFN0YXJ0aW5nIGluIFB5dGhvbiAzLjYgaXQgd2lsbCBiZSBhbiBlcnJvciB0byBub3QKKyAgIGRlZmluZSBgYGNyZWF0ZV9tb2R1bGUoKWBgIG9uIGEgbG9hZGVyIGF0dGFjaGVkIHRvIGEgTW9kdWxlU3BlYy4KIAogU3VibW9kdWxlcwogLS0tLS0tLS0tLQpAQCAtNjc0LDcgKzY4MSw3IEBACiAKIFRoZSBkZWZhdWx0IHNldCBvZiBwYXRoIGVudHJ5IGZpbmRlcnMgaW1wbGVtZW50IGFsbCB0aGUgc2VtYW50aWNzIGZvciBmaW5kaW5nCiBtb2R1bGVzIG9uIHRoZSBmaWxlIHN5c3RlbSwgaGFuZGxpbmcgc3BlY2lhbCBmaWxlIHR5cGVzIHN1Y2ggYXMgUHl0aG9uIHNvdXJjZQotY29kZSAoYGAucHlgYCBmaWxlcyksIFB5dGhvbiBieXRlIGNvZGUgKGBgLnB5Y2BgIGFuZCBgYC5weW9gYCBmaWxlcykgYW5kCitjb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgZmlsZXMpIGFuZAogc2hhcmVkIGxpYnJhcmllcyAoZS5nLiBgYC5zb2BgIGZpbGVzKS4gV2hlbiBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHppcGltcG9ydGAKIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSwgdGhlIGRlZmF1bHQgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gaGFuZGxlCiBsb2FkaW5nIGFsbCBvZiB0aGVzZSBmaWxlIHR5cGVzIChvdGhlciB0aGFuIHNoYXJlZCBsaWJyYXJpZXMpIGZyb20gemlwZmlsZXMuCkBAIC03ODgsNiArNzk1LDE1IEBACiB0byBhc2sgdGhlIGZpbmRlciBmb3IgYSBtb2R1bGUgc3BlYywgd2hpY2ggaXMgdGhlbiB1c2VkIHdoZW4gbG9hZGluZyB0aGUKIG1vZHVsZS4KIAorVGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgLS0gZGVub3RlZCBieSBhbiBlbXB0eSBzdHJpbmcgLS0gaXMgaGFuZGxlZAorc2xpZ2h0bHkgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBlbnRyaWVzIG9uIDpkYXRhOmBzeXMucGF0aGAuIEZpcnN0LCBpZiB0aGUKK2N1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaXMgZm91bmQgdG8gbm90IGV4aXN0LCBubyB2YWx1ZSBpcyBzdG9yZWQgaW4KKzpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuIFNlY29uZCwgdGhlIHZhbHVlIGZvciB0aGUgY3VycmVudCB3b3JraW5nCitkaXJlY3RvcnkgaXMgbG9va2VkIHVwIGZyZXNoIGZvciBlYWNoIG1vZHVsZSBsb29rdXAuIFRoaXJkLCB0aGUgcGF0aCB1c2VkIGZvcgorOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbmQgcmV0dXJuZWQgYnkKKzptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjYCB3aWxsIGJlIHRoZSBhY3R1YWwgY3VycmVudAord29ya2luZyBkaXJlY3RvcnkgYW5kIG5vdCB0aGUgZW1wdHkgc3RyaW5nLgorCiBQYXRoIGVudHJ5IGZpbmRlciBwcm90b2NvbAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKaW5kZXggMzczYmUxNi4uNzY5ZTBhNyAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CkBAIC0zMTEsNyArMzExLDcgQEAKICogKk5kKiAtIGRlY2ltYWwgbnVtYmVycwogKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9ucwogKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluIGBQcm9wTGlzdC50eHQKLSAgPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZC9Qcm9wTGlzdC50eHQ+YF8gdG8gc3VwcG9ydCBiYWNrd2FyZHMKKyAgPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzcuMC4wL3VjZC9Qcm9wTGlzdC50eHQ+YF8gdG8gc3VwcG9ydCBiYWNrd2FyZHMKICAgY29tcGF0aWJpbGl0eQogKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2UKIApAQCAtNjkwLDcgKzY5MCw3IEBACiAKIFRoZSBmb2xsb3dpbmcgdG9rZW5zIGFyZSBvcGVyYXRvcnM6OgogCi0gICArICAgICAgIC0gICAgICAgKiAgICAgICAqKiAgICAgIC8gICAgICAgLy8gICAgICAlCisgICArICAgICAgIC0gICAgICAgKiAgICAgICAqKiAgICAgIC8gICAgICAgLy8gICAgICAlICAgICAgQAogICAgPDwgICAgICA+PiAgICAgICYgICAgICAgfCAgICAgICBeICAgICAgIH4KICAgIDwgICAgICAgPiAgICAgICA8PSAgICAgID49ICAgICAgPT0gICAgICAhPQogCkBAIC03MDYsNyArNzA2LDcgQEAKIAogICAgKCAgICAgICApICAgICAgIFsgICAgICAgXSAgICAgICB7ICAgICAgIH0KICAgICwgICAgICAgOiAgICAgICAuICAgICAgIDsgICAgICAgQCAgICAgICA9ICAgICAgIC0+Ci0gICArPSAgICAgIC09ICAgICAgKj0gICAgICAvPSAgICAgIC8vPSAgICAgJT0KKyAgICs9ICAgICAgLT0gICAgICAqPSAgICAgIC89ICAgICAgLy89ICAgICAlPSAgICAgIEA9CiAgICAmPSAgICAgIHw9ICAgICAgXj0gICAgICA+Pj0gICAgIDw8PSAgICAgKio9CiAKIFRoZSBwZXJpb2QgY2FuIGFsc28gb2NjdXIgaW4gZmxvYXRpbmctcG9pbnQgYW5kIGltYWdpbmFyeSBsaXRlcmFscy4gIEEgc2VxdWVuY2UKQEAgLTcyNyw0ICs3MjcsNCBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy83LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggODk0NmI0Zi4uNWY2MDU0MCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtMjgxLDcgKzI4MSw3IEBACiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10OiBgYXVndGFyZ2V0YCBgYXVnb3BgIChgZXhwcmVzc2lvbl9saXN0YCB8IGB5aWVsZF9leHByZXNzaW9uYCkKICAgIGF1Z3RhcmdldDogYGlkZW50aWZpZXJgIHwgYGF0dHJpYnV0ZXJlZmAgfCBgc3Vic2NyaXB0aW9uYCB8IGBzbGljaW5nYAotICAgYXVnb3A6ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IgorICAgYXVnb3A6ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSIKICAgICAgICAgOiB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSIKIAogKFNlZSBzZWN0aW9uIDpyZWY6YHByaW1hcmllc2AgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWUKZGlmZiAtLWdpdCBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CmluZGV4IDY0YTU2NjUuLmQ0NGIwNTIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQpAQCAtMzQsNyArMzQsNyBAQAogCiAKIElTU1VFX1VSSSA9ICdodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZSVzJwotU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNC8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjUvJXMnCiAKICMgbW9ua2V5LXBhdGNoIHJlU1QgcGFyc2VyIHRvIGRpc2FibGUgYWxwaGFiZXRpYyBhbmQgcm9tYW4gZW51bWVyYXRlZCBsaXN0cwogZnJvbSBkb2N1dGlscy5wYXJzZXJzLnJzdC5zdGF0ZXMgaW1wb3J0IEJvZHkKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKaW5kZXggNDg2NTNhZjguLjg0MzJmNzggMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CkBAIC0xMjIsNiArMTIyLDggQEAKIGxpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCiBsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQogbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCwiPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIiMjAwMTpkYjg6OjEiIikucmV2ZXJzZV9wb2ludGVyIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCI+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIiIyMDAxOmRiODo6MSIiKS5yZXZlcnNlX3BvaW50ZXIiCiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosIiIiOjphYmM6NzpkZWYiIiIKIGxpYnJhcnkvaXBhZGRyZXNzLCw6ZGVmLCIiIjo6YWJjOjc6ZGVmIiIiCiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosOjpGRkZGLzk2CkBAIC0xMzYsMTIgKzEzOCw5IEBACiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CiBsaWJyYXJ5L2l0ZXJ0b29scywsOnN0ZXAsZWxlbWVudHMgZnJvbSBzZXFbc3RhcnQ6c3RvcDpzdGVwXQogbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KLWxpYnJhcnkvbGluZWNhY2hlLCw6c3lzLCJzeXM6eDozOjM6c3lzOi9kZXY6L2Jpbi9zaCIKIGxpYnJhcnkvbG9nZ2luZy5oYW5kbGVycywsOnBvcnQsaG9zdDpwb3J0CiBsaWJyYXJ5L21tYXAsLDppMixvYmpbaTE6aTJdCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEFkZCBtb3JlIHRhc2tzIHVzaW5nIGBwdXQoKWAKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsOnF1ZXVlLCI+Pj4gUXVldWVNYW5hZ2VyLnJlZ2lzdGVyKCdnZXRfcXVldWUnLCBjYWxsYWJsZT1sYW1iZGE6cXVldWUpIgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyByZWdpc3RlciB0aGUgRm9vIGNsYXNzOyBtYWtlIGBmKClgIGFuZCBgZygpYCBhY2Nlc3NpYmxlIHZpYSBwcm94eQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyByZWdpc3RlciB0aGUgRm9vIGNsYXNzOyBtYWtlIGBnKClgIGFuZCBgX2goKWAgYWNjZXNzaWJsZSB2aWEgcHJveHkKQEAgLTE3OSw4ICsxNzgsNiBAQAogbGlicmFyeS9zc2wsLDpvcHMsRW1haWwgQWRkcmVzcyBbXTpvcHNAbXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20KIGxpYnJhcnkvc3NsLCw6U29tZSwiTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNvbWUgQ2l0eSIKIGxpYnJhcnkvc3NsLCw6VVMsQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbQVVdOlVTCi1saWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6Oi0xXS50b2xpc3QoKQotbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjoyXS50b2xpc3QoKQogbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KIGxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBoYXNoKHZbOjotMl0pID09IGhhc2goYidhYmNlZmcnWzo6LTJdKQogbGlicmFyeS9zdGR0eXBlcywsOmxlbixzW2xlbihzKTpsZW4ocyldCkBAIC0yNTYsNiArMjUzLDExIEBACiB3aGF0c25ldy8yLjUsLDptZW1vcnksOm1lbW9yeToKIHdoYXRzbmV3LzIuNSwsOnN0ZXAsW3N0YXJ0OnN0b3A6c3RlcF0KIHdoYXRzbmV3LzIuNSwsOnN0b3AsW3N0YXJ0OnN0b3A6c3RlcF0KK3doYXRzbmV3LzIuNywsOjosIlBhcnNlUmVzdWx0KHNjaGVtZT0naHR0cCcsIG5ldGxvYz0nWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0nLCIKK3doYXRzbmV3LzIuNywsOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKK3doYXRzbmV3LzIuNywsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKK3doYXRzbmV3LzIuNywsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgord2hhdHNuZXcvMi43LCw6OiwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgogd2hhdHNuZXcvMy4yLCw6YWZmZSwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgogd2hhdHNuZXcvMy4yLCw6YWZmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCiB3aGF0c25ldy8zLjIsLDpiZWVmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCkBAIC0yNzEsMTQgKzI3MywyMCBAQAogd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKIHdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KIHdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3L2NoYW5nZWxvZywsOnBsYXRmb3JtLDpwbGF0Zm9ybToKIHdoYXRzbmV3L2NoYW5nZWxvZywsOmd6LCI6IFRhckZpbGUgb3BlbmVkIHdpdGggZXh0ZXJuYWwgZmlsZW9iaiBhbmQgIiJ3Omd6IiIgbW9kZSBkaWRuJ3QiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDpQeXRob25DbWQsIldpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIuIgogd2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBVc2UgIiIxMjcuMC4wLjEiIiBvciAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIiBhcyBtdWNoIGFzIgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6cGFzc3dvcmQsdXNlcjpwYXNzd29yZAotd2hhdHNuZXcvMi43LDc4MCw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jwotd2hhdHNuZXcvMi43LDkwNyw6OiwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDkwNyw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCi13aGF0c25ldy8yLjcsMTY1Nyw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQotd2hhdHNuZXcvMi43LDE2NTcsOjosIlBhcnNlUmVzdWx0KHNjaGVtZT0naHR0cCcsIG5ldGxvYz0nWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0nLCIKK2xpYnJhcnkvdGFyZmlsZSwxNDksOnh6LCd4Onh6JworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMjkwLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMzIsOmFjdG9yLCJmb3IgYWN0b3IgaW4gcm9vdC5maW5kYWxsKCdyZWFsX3BlcnNvbjphY3RvcicsIG5zKToiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMzIsOm5hbWUsIm5hbWUgPSBhY3Rvci5maW5kKCdyZWFsX3BlcnNvbjpuYW1lJywgbnMpIgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzMyLDpjaGFyYWN0ZXIsImZvciBjaGFyIGluIGFjdG9yLmZpbmRhbGwoJ3JvbGU6Y2hhcmFjdGVyJywgbnMpOiIKK2xpYnJhcnkvemlwYXBwLDMxLDptYWluLCIkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIiJteWFwcDptYWluIiIiCitsaWJyYXJ5L3ppcGFwcCw4Miw6Zm4sImFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICIicGtnLm1vZDpmbiIiLCB3aGVyZSAiInBrZy5tb2QiIiBpcyBhIgorbGlicmFyeS96aXBhcHAsMTU1LDpjYWxsYWJsZSwiIiJwa2cubW9kdWxlOmNhbGxhYmxlIiIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZyIKK2xpYnJhcnkvc3RkdHlwZXMsMzc2Nyw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbAppbmRleCBhYmRmMDcwLi43OGU5YzRmIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCisrKyBiL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKQEAgLTMsOCArMyw3IEBACiA8aDM+RG9jcyBmb3Igb3RoZXIgdmVyc2lvbnM8L2gzPgogPHVsPgogICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi43LyI+UHl0aG9uIDIuNyAoc3RhYmxlKTwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zLyI+UHl0aG9uIDMuMyAoc3RhYmxlKTwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41LyI+UHl0aG9uIDMuNSAoaW4gZGV2ZWxvcG1lbnQpPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjQvIj5QeXRob24gMy40IChzdGFibGUpPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPk9sZCB2ZXJzaW9uczwvYT48L2xpPgogPC91bD4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2FwcGVuZGl4LnJzdCBiL0RvYy90dXRvcmlhbC9hcHBlbmRpeC5yc3QKaW5kZXggODY3MGVmYy4uNjcyNjJhMSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2FwcGVuZGl4LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0CkBAIC00MCw3ICs0MCw3IEBACiBPbiBCU0QnaXNoIFVuaXggc3lzdGVtcywgUHl0aG9uIHNjcmlwdHMgY2FuIGJlIG1hZGUgZGlyZWN0bHkgZXhlY3V0YWJsZSwgbGlrZQogc2hlbGwgc2NyaXB0cywgYnkgcHV0dGluZyB0aGUgbGluZSA6OgogCi0gICAjIS91c3IvYmluL2VudiBweXRob24zLjQKKyAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMuNQogCiAoYXNzdW1pbmcgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgb24gdGhlIHVzZXIncyA6ZW52dmFyOmBQQVRIYCkgYXQgdGhlIGJlZ2lubmluZwogb2YgdGhlIHNjcmlwdCBhbmQgZ2l2aW5nIHRoZSBmaWxlIGFuIGV4ZWN1dGFibGUgbW9kZS4gIFRoZSBgYCMhYGAgbXVzdCBiZSB0aGUKQEAgLTEwNyw3ICsxMDcsNyBAQAogCiAgICA+Pj4gaW1wb3J0IHNpdGUKICAgID4+PiBzaXRlLmdldHVzZXJzaXRlcGFja2FnZXMoKQotICAgJy9ob21lL3VzZXIvLmxvY2FsL2xpYi9weXRob24zLjQvc2l0ZS1wYWNrYWdlcycKKyAgICcvaG9tZS91c2VyLy5sb2NhbC9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnCiAKIE5vdyB5b3UgY2FuIGNyZWF0ZSBhIGZpbGUgbmFtZWQgOmZpbGU6YHVzZXJjdXN0b21pemUucHlgIGluIHRoYXQgZGlyZWN0b3J5IGFuZAogcHV0IGFueXRoaW5nIHlvdSB3YW50IGluIGl0LiAgSXQgd2lsbCBhZmZlY3QgZXZlcnkgaW52b2NhdGlvbiBvZiBQeXRob24sIHVubGVzcwpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdCBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKaW5kZXggMWVhMjk5Zi4uYTIwMzFlZCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CkBAIC03MywxMCArNzMsMTEgQEAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVzICp4KiBhcHBlYXJzIGluIHRoZSBsaXN0LgogCiAKLS4uIG1ldGhvZDo6IGxpc3Quc29ydCgpCisuLiBtZXRob2Q6OiBsaXN0LnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpCiAgICA6bm9pbmRleDoKIAotICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCisgICBTb3J0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBpbiBwbGFjZSAodGhlIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCBmb3Igc29ydAorICAgY3VzdG9taXphdGlvbiwgc2VlIDpmdW5jOmBzb3J0ZWRgIGZvciB0aGVpciBleHBsYW5hdGlvbikuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5yZXZlcnNlKCkKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IDgwNTE2MzQuLmQ1Nzg5YTYgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjRgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjVgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjQKKyAgIHB5dGhvbjMuNQogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zNGAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjM1YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzQKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNQogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTYsOCArOTYsOCBAQAogcHJpbnRzIGEgd2VsY29tZSBtZXNzYWdlIHN0YXRpbmcgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBhIGNvcHlyaWdodCBub3RpY2UKIGJlZm9yZSBwcmludGluZyB0aGUgZmlyc3QgcHJvbXB0OjoKIAotICAgJCBweXRob24zLjQKLSAgIFB5dGhvbiAzLjQgKGRlZmF1bHQsIE1hciAxNiAyMDE0LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy41CisgICBQeXRob24gMy41IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKaW5kZXggZmQzNjFhZS4uOWFlNjRiMCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdApAQCAtMjE2LDE1ICsyMTYsMTUgQEAKICAgc3RhdGVtZW50cywgdGhlIGBgLU9PYGAgc3dpdGNoIHJlbW92ZXMgYm90aCBhc3NlcnQgc3RhdGVtZW50cyBhbmQgX19kb2NfXwogICBzdHJpbmdzLiAgU2luY2Ugc29tZSBwcm9ncmFtcyBtYXkgcmVseSBvbiBoYXZpbmcgdGhlc2UgYXZhaWxhYmxlLCB5b3Ugc2hvdWxkCiAgIG9ubHkgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLiAgIk9wdGltaXplZCIgbW9kdWxlcyBoYXZlCi0gIGEgLnB5byByYXRoZXIgdGhhbiBhIC5weWMgc3VmZml4IGFuZCBhcmUgdXN1YWxseSBzbWFsbGVyLiAgRnV0dXJlIHJlbGVhc2VzIG1heQorICBhbiBgYG9wdC1gYCB0YWcgYW5kIGFyZSB1c3VhbGx5IHNtYWxsZXIuICBGdXR1cmUgcmVsZWFzZXMgbWF5CiAgIGNoYW5nZSB0aGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb24uCiAKLSogQSBwcm9ncmFtIGRvZXNuJ3QgcnVuIGFueSBmYXN0ZXIgd2hlbiBpdCBpcyByZWFkIGZyb20gYSBgYC5weWNgYCBvciBgYC5weW9gYAorKiBBIHByb2dyYW0gZG9lc24ndCBydW4gYW55IGZhc3RlciB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5Y2BgCiAgIGZpbGUgdGhhbiB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5YGAgZmlsZTsgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGZhc3RlcgotICBhYm91dCBgYC5weWNgYCBvciBgYC5weW9gYCBmaWxlcyBpcyB0aGUgc3BlZWQgd2l0aCB3aGljaCB0aGV5IGFyZSBsb2FkZWQuCisgIGFib3V0IGBgLnB5Y2BgIGZpbGVzIGlzIHRoZSBzcGVlZCB3aXRoIHdoaWNoIHRoZXkgYXJlIGxvYWRlZC4KIAotKiBUaGUgbW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgIGNhbiBjcmVhdGUgLnB5YyBmaWxlcyAob3IgLnB5byBmaWxlcyB3aGVuCi0gIDpvcHRpb246YC1PYCBpcyB1c2VkKSBmb3IgYWxsIG1vZHVsZXMgaW4gYSBkaXJlY3RvcnkuCisqIFRoZSBtb2R1bGUgOm1vZDpgY29tcGlsZWFsbGAgY2FuIGNyZWF0ZSAucHljIGZpbGVzIGZvciBhbGwgbW9kdWxlcyBpbiBhCisgIGRpcmVjdG9yeS4KIAogKiBUaGVyZSBpcyBtb3JlIGRldGFpbCBvbiB0aGlzIHByb2Nlc3MsIGluY2x1ZGluZyBhIGZsb3cgY2hhcnQgb2YgdGhlCiAgIGRlY2lzaW9ucywgaW4gUEVQIDMxNDcuCkBAIC01NDgsNCArNTQ4LDMgQEAKIC4uIFsjXSBJbiBmYWN0IGZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBhbHNvICdzdGF0ZW1lbnRzJyB0aGF0IGFyZSAnZXhlY3V0ZWQnOyB0aGUKICAgIGV4ZWN1dGlvbiBvZiBhIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBkZWZpbml0aW9uIGVudGVycyB0aGUgZnVuY3Rpb24gbmFtZSBpbgogICAgdGhlIG1vZHVsZSdzIGdsb2JhbCBzeW1ib2wgdGFibGUuCi0KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggNzJkNTFkZS4uMDk1NGViYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzQnCisgICAnQzpcXFB5dGhvbjM1JwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggYzAxOTdlYS4uZjdkMmEwYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTgsNyArMTgsNyBAQAogCiAgICA+Pj4gaW1wb3J0IHJlcHJsaWIKICAgID4+PiByZXBybGliLnJlcHIoc2V0KCdzdXBlcmNhbGlmcmFnaWxpc3RpY2V4cGlhbGlkb2Npb3VzJykpCi0gICAic2V0KFsnYScsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAuLi5dKSIKKyAgICJ7J2EnLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgLi4ufSIKIAogVGhlIDptb2Q6YHBwcmludGAgbW9kdWxlIG9mZmVycyBtb3JlIHNvcGhpc3RpY2F0ZWQgY29udHJvbCBvdmVyIHByaW50aW5nIGJvdGgKIGJ1aWx0LWluIGFuZCB1c2VyIGRlZmluZWQgb2JqZWN0cyBpbiBhIHdheSB0aGF0IGlzIHJlYWRhYmxlIGJ5IHRoZSBpbnRlcnByZXRlci4KQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzQvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zNS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IDQwMTdjZTguLjcwMWM2MjQgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTE5MCwxMyArMTkwLDE2IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1iCiAKLSAgIElzc3VlIGEgd2FybmluZyB3aGVuIGNvbXBhcmluZyBzdHIgYW5kIGJ5dGVzLiBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQorICAgSXNzdWUgYSB3YXJuaW5nIHdoZW4gY29tcGFyaW5nIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCB3aXRoCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agd2l0aCA6Y2xhc3M6YGludGAuICBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQogICAgb3B0aW9uIGlzIGdpdmVuIHR3aWNlICg6b3B0aW9uOmAtYmJgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWZmZWN0cyBjb21wYXJpc29ucyBvZiA6Y2xhc3M6YGJ5dGVzYCB3aXRoIDpjbGFzczpgaW50YC4KIAogLi4gY21kb3B0aW9uOjogLUIKIAotICAgSWYgZ2l2ZW4sIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiBnaXZlbiwgUHl0aG9uIHdvbid0IHRyeSB0byB3cml0ZSBgYC5weWNgYCBmaWxlcyBvbiB0aGUKICAgIGltcG9ydCBvZiBzb3VyY2UgbW9kdWxlcy4gIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA0NWJkZDVhLi4wMmJjYmVlIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTIxLDExICsyMSwxMSBAQAogT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91CiBkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIGM6XFB5dGhvbjM0XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKIAogb3IgZXF1aXZhbGVudGx5OjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcgYi9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyNTg5MgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy93aW5faW5zdGFsbGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYzA1ZjcyYS4uOGUzYzExMCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtNywyMiArNywxODYgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioKIAogLi4gc2VjdGlvbmF1dGhvcjo6IFJvYmVydCBMZWhtYW5uIDxsZWhtYW5ucm9AZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPgogCiBUaGlzIGRvY3VtZW50IGFpbXMgdG8gZ2l2ZSBhbiBvdmVydmlldyBvZiBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW91ciB5b3Ugc2hvdWxkCiBrbm93IGFib3V0IHdoZW4gdXNpbmcgUHl0aG9uIG9uIE1pY3Jvc29mdCBXaW5kb3dzLgogCi0uLiBYWFggKG5jb2dobGFuKQotCi0gICBUaGlzIGxvb2tzIHJhdGhlciBzdGFsZSB0byBtZS4uLgotCi0KIEluc3RhbGxpbmcgUHl0aG9uCiA9PT09PT09PT09PT09PT09PQogCi1Vbmxpa2UgbW9zdCBVbml4IHN5c3RlbXMgYW5kIHNlcnZpY2VzLCBXaW5kb3dzIGRvZXMgbm90IHJlcXVpcmUgUHl0aG9uIG5hdGl2ZWx5Ci1hbmQgdGh1cyBkb2VzIG5vdCBwcmUtaW5zdGFsbCBhIHZlcnNpb24gb2YgUHl0aG9uLiAgSG93ZXZlciwgdGhlIENQeXRob24gdGVhbQorVW5saWtlIG1vc3QgVW5peCBzeXN0ZW1zIGFuZCBzZXJ2aWNlcywgV2luZG93cyBkb2VzIG5vdCBpbmNsdWRlIGEgc3lzdGVtCitzdXBwb3J0ZWQgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbi4gVG8gbWFrZSBQeXRob24gYXZhaWxhYmxlLCB0aGUgQ1B5dGhvbiB0ZWFtCiBoYXMgY29tcGlsZWQgV2luZG93cyBpbnN0YWxsZXJzIChNU0kgcGFja2FnZXMpIHdpdGggZXZlcnkgYHJlbGVhc2UKLTxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4KKzxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4gVGhlc2UgaW5zdGFsbGVycworYXJlIHByaW1hcmlseSBpbnRlbmRlZCB0byBhZGQgYSBwZXItdXNlciBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLCB3aXRoIHRoZQorY29yZSBpbnRlcnByZXRlciBhbmQgbGlicmFyeSBiZWluZyB1c2VkIGJ5IGEgc2luZ2xlIHVzZXIuIFRoZSBpbnN0YWxsZXIgaXMgYWxzbworYWJsZSB0byBpbnN0YWxsIGZvciBhbGwgdXNlcnMgb2YgYSBzaW5nbGUgbWFjaGluZSwgYW5kIGEgc2VwYXJhdGUgWklQIGZpbGUgaXMKK2F2YWlsYWJsZSBmb3IgYXBwbGljYXRpb24tbG9jYWwgZGlzdHJpYnV0aW9ucy4KKworSW5zdGFsbGF0aW9uIFN0ZXBzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAorYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCitkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKK2RlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCitmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKK2R1cmluZyBpbnN0YWxsYXRpb24uCisKK0FmdGVyIHN0YXJ0aW5nIHRoZSBpbnN0YWxsZXIsIG9uZSBvZiB0d28gb3B0aW9ucyBtYXkgYmUgc2VsZWN0ZWQ6CisKKy4uIGltYWdlOjogd2luX2luc3RhbGxlci5wbmcKKworSWYgeW91IHNlbGVjdCAiSW5zdGFsbCBOb3ciOgorCisqIFlvdSB3aWxsICpub3QqIG5lZWQgdG8gYmUgYW4gYWRtaW5pc3RyYXRvciAodW5sZXNzIGEgc3lzdGVtIHVwZGF0ZSBmb3IgdGhlCisgIEMgUnVudGltZSBMaWJyYXJ5IGlzIHJlcXVpcmVkKQorKiBQeXRob24gd2lsbCBiZSBpbnN0YWxsZWQgaW50byB5b3VyIHVzZXIgZGlyZWN0b3J5CisqIFRoZSA6cmVmOmBsYXVuY2hlcmAgd2lsbCAqYWxzbyogYmUgaW5zdGFsbGVkIGludG8geW91ciB1c2VyIGRpcmVjdG9yeQorKiBUaGUgc3RhbmRhcmQgbGlicmFyeSwgdGVzdCBzdWl0ZSwgbGF1bmNoZXIgYW5kIHBpcCB3aWxsIGJlIGluc3RhbGxlZAorKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8geW91ciA6ZW52dmFyOmBQQVRIYAorKiBTaG9ydGN1dHMgd2lsbCBvbmx5IGJlIHZpc2libGUgZm9yIHRoZSBjdXJyZW50IHVzZXIKKworU2VsZWN0aW5nICJDdXN0b21pemUgaW5zdGFsbGF0aW9uIiB3aWxsIGFsbG93IHlvdSB0byBzZWxlY3QgdGhlIGZlYXR1cmVzIHRvCitpbnN0YWxsLCB0aGUgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIGFuZCBvdGhlciBvcHRpb25zIG9yIHBvc3QtaW5zdGFsbCBhY3Rpb25zLgorVG8gaW5zdGFsbCBkZWJ1Z2dpbmcgc3ltYm9scyBvciBiaW5hcmllcywgeW91IHdpbGwgbmVlZCB0byB1c2UgdGhpcyBvcHRpb24uCisKK1RvIHBlcmZvcm0gYW4gYWxsLXVzZXJzIGluc3RhbGxhdGlvbiwgeW91IHNob3VsZCBzZWxlY3QgIkN1c3RvbWl6ZQoraW5zdGFsbGF0aW9uIi4gSW4gdGhpcyBjYXNlOgorCisqIFlvdSBtYXkgYmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBhZG1pbmlzdHJhdGl2ZSBjcmVkZW50aWFscyBvciBhcHByb3ZhbAorKiBQeXRob24gd2lsbCBiZSBpbnN0YWxsZWQgaW50byB0aGUgUHJvZ3JhbSBGaWxlcyBkaXJlY3RvcnkKKyogVGhlIDpyZWY6YGxhdW5jaGVyYCB3aWxsIGJlIGluc3RhbGxlZCBpbnRvIHRoZSBXaW5kb3dzIGRpcmVjdG9yeQorKiBPcHRpb25hbCBmZWF0dXJlcyBtYXkgYmUgc2VsZWN0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbgorKiBUaGUgc3RhbmRhcmQgbGlicmFyeSB3aWxsIGJlIHByZS1jb21waWxlZCB0byBieXRlY29kZQorKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAorKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCisKKy4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKKworSW5zdGFsbGluZyBXaXRob3V0IFVJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiB0aGUgaW5zdGFsbGVyIFVJIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmcm9tIHRoZQorY29tbWFuZCBsaW5lLCBhbGxvd2luZyBzY3JpcHRlZCBpbnN0YWxsZXJzIHRvIHJlcGxpY2F0ZSBhbiBpbnN0YWxsYXRpb24gb24gbWFueQorbWFjaGluZXMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLiAgVGhlc2Ugb3B0aW9ucyBtYXkgYWxzbyBiZSBzZXQgd2l0aG91dAorc3VwcHJlc3NpbmcgdGhlIFVJIGluIG9yZGVyIHRvIGNoYW5nZSBzb21lIG9mIHRoZSBkZWZhdWx0cy4KKworVG8gY29tcGxldGVseSBoaWRlIHRoZSBpbnN0YWxsZXIgVUkgYW5kIGluc3RhbGwgUHl0aG9uIHNpbGVudGx5LCBwYXNzIHRoZQorYGAvcXVpZXRgYCAoYGAvcWBgKSBvcHRpb24uIFRvIHNraXAgcGFzdCB0aGUgdXNlciBpbnRlcmFjdGlvbiBidXQgc3RpbGwgZGlzcGxheQorcHJvZ3Jlc3MgYW5kIGVycm9ycywgcGFzcyB0aGUgYGAvcGFzc2l2ZWBgIChgYC9wYGApIG9wdGlvbi4gVGhlIGBgL3VuaW5zdGFsbGBgCitvcHRpb24gbWF5IGJlIHBhc3NlZCB0byBpbW1lZGlhdGVseSBiZWdpbiByZW1vdmluZyBQeXRob24gLSBubyBwcm9tcHQgd2lsbCBiZQorZGlzcGxheWVkLgorCitBbGwgb3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIGBgbmFtZT12YWx1ZWBgLCB3aGVyZSB0aGUgdmFsdWUgaXMgdXN1YWxseQorYGAwYGAgdG8gZGlzYWJsZSBhIGZlYXR1cmUsIGBgMWBgIHRvIGVuYWJsZSBhIGZlYXR1cmUsIG9yIGEgcGF0aC4gVGhlIGZ1bGwgbGlzdAorb2YgYXZhaWxhYmxlIG9wdGlvbnMgaXMgc2hvd24gYmVsb3cuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgSW5zdGFsbEFsbFVzZXJzICAgICAgICAgICB8IFBlcmZvcm0gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBUYXJnZXREaXIgICAgICAgICAgICAgICAgIHwgVGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgICAgICAgICAgIHwgU2VsZWN0ZWQgYmFzZWQgb24gICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluc3RhbGxBbGxVc2VycyAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIgIHwgVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAgIHwgOmZpbGU6YCVQcm9ncmFtRmlsZXMlXFxcIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvciBhbGwtdXNlciBpbnN0YWxscyAgICAgICAgICAgICAgICB8IFB5dGhvbiBYLllgIG9yIDpmaWxlOmBcICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAlUHJvZ3JhbUZpbGVzKHg4NiklXFxcICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIFguWWAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IERlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIgfCBUaGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgICAgfCA6ZmlsZTpgJUxvY2FsQXBwRGF0YSVcXFwgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwganVzdC1mb3ItbWUgaW5zdGFsbHMgICAgICAgICAgICAgICAgIHwgUHJvZ3JhbXNcXFB5dGhvblhZYCBvciAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmaWxlOmAlTG9jYWxBcHBEYXRhJVxcXCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ncmFtc1xcUHl0aG9uWFktMzJgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRGVmYXVsdEN1c3RvbVRhcmdldERpciAgICB8IFRoZSBkZWZhdWx0IGN1c3RvbSBpbnN0YWxsIGRpcmVjdG9yeSB8IChlbXB0eSkgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFVJICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQXNzb2NpYXRlRmlsZXMgICAgICAgICAgICB8IENyZWF0ZSBmaWxlIGFzc29jaWF0aW9ucyBpZiB0aGUgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsYXVuY2hlciBpcyBhbHNvIGluc3RhbGxlZC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tcGlsZUFsbCAgICAgICAgICAgICAgICB8IENvbXBpbGUgYWxsIGBgLnB5YGAgZmlsZXMgdG8gICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYC5weWNgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgUHJlcGVuZFBhdGggICAgICAgICAgICAgICB8IEFkZCBpbnN0YWxsIGFuZCBTY3JpcHRzIGRpcmVjdG9yaWVzICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aG8gOmVudnZhcjpgUEFUSGAgYW5kIGBgLlBZYGAgdG8gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmVudnZhcjpgUEFUSEVYVGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNob3J0Y3V0cyAgICAgICAgICAgICAgICAgfCBDcmVhdGUgc2hvcnRjdXRzIGZvciB0aGUgaW50ZXJwcmV0ZXIsfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG9jdW1lbnRhdGlvbiBhbmQgSURMRSBpZiBpbnN0YWxsZWQuIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfZG9jICAgICAgICAgICAgICAgfCBJbnN0YWxsIFB5dGhvbiBtYW51YWwgICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9kZWJ1ZyAgICAgICAgICAgICB8IEluc3RhbGwgZGVidWcgYmluYXJpZXMgICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2RldiAgICAgICAgICAgICAgIHwgSW5zdGFsbCBkZXZlbG9wZXIgaGVhZGVycyBhbmQgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2V4ZSAgICAgICAgICAgICAgIHwgSW5zdGFsbCA6ZmlsZTpgcHl0aG9uLmV4ZWAgYW5kICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGF0ZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2xhdW5jaGVyICAgICAgICAgIHwgSW5zdGFsbCA6cmVmOmBsYXVuY2hlcmAuICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfbGliICAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgYW5kICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5zaW9uIG1vZHVsZXMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfcGlwICAgICAgICAgICAgICAgfCBJbnN0YWxsIGJ1bmRsZWQgcGlwIGFuZCBzZXR1cHRvb2xzICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9zeW1ib2xzICAgICAgICAgICB8IEluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgKGAqYC5wZGIpICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX3RjbHRrICAgICAgICAgICAgIHwgSW5zdGFsbCBUY2wvVGsgc3VwcG9ydCBhbmQgSURMRSAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfdGVzdCAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZSAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV90b29scyAgICAgICAgICAgICB8IEluc3RhbGwgdXRpbGl0eSBzY3JpcHRzICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTaW1wbGVJbnN0YWxsICAgICAgICAgICAgIHwgRGlzYWJsZSBtb3N0IGluc3RhbGwgVUkgICAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0ZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKK3lvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CisKKyAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisKK1RvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAorc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6OgorCisgICAgcHl0aG9uLTMuNS4wLmV4ZSAvcGFzc2l2ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAgU2ltcGxlSW5zdGFsbD0xCisKKyhOb3RlIHRoYXQgb21pdHRpbmcgdGhlIGxhdW5jaGVyIGFsc28gb21pdHMgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpcyBvbmx5CityZWNvbW1lbmRlZCBmb3IgcGVyLXVzZXIgaW5zdGFsbHMgd2hlbiB0aGVyZSBpcyBhbHNvIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uCit0aGF0IGluY2x1ZGVkIHRoZSBsYXVuY2hlci4pCisKKy4uIF9pbnN0YWxsLWxheW91dC1vcHRpb246CisKK0luc3RhbGxpbmcgV2l0aG91dCBEb3dubG9hZGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIHNvbWUgZmVhdHVyZXMgb2YgUHl0aG9uIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGluaXRpYWwgaW5zdGFsbGVyIGRvd25sb2FkLAorc2VsZWN0aW5nIHRob3NlIGZlYXR1cmVzIG1heSByZXF1aXJlIGFuIGludGVybmV0IGNvbm5lY3Rpb24uICBUbyBhdm9pZCB0aGlzCituZWVkLCBhbGwgcG9zc2libGUgY29tcG9uZW50cyBtYXkgYmUgZG93bmxvYWRlZCBvbi1kZW1hbmQgdG8gY3JlYXRlIGEgY29tcGxldGUKKypsYXlvdXQqIHRoYXQgd2lsbCBubyBsb25nZXIgcmVxdWlyZSBhbiBpbnRlcm5ldCBjb25uZWN0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhlCitzZWxlY3RlZCBmZWF0dXJlcy4gTm90ZSB0aGF0IHRoaXMgZG93bmxvYWQgbWF5IGJlIGJpZ2dlciB0aGFuIHJlcXVpcmVkLCBidXQKK3doZXJlIGEgbGFyZ2UgbnVtYmVyIG9mIGluc3RhbGxhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIHBlcmZvcm1lZCBpdCBpcyB2ZXJ5Cit1c2VmdWwgdG8gaGF2ZSBhIGxvY2FsbHkgY2FjaGVkIGNvcHkuCisKK0V4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gQ29tbWFuZCBQcm9tcHQgdG8gZG93bmxvYWQgYWxsIHBvc3NpYmxlCityZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy41LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKK25hbWUgb2YgeW91ciBpbnN0YWxsZXIsIGFuZCB0byBjcmVhdGUgbGF5b3V0cyBpbiB0aGVpciBvd24gZGlyZWN0b3JpZXMgdG8KK2F2b2lkIGNvbGxpc2lvbnMgYmV0d2VlbiBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCisKKzo6CisKKyAgICBweXRob24tMy41LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCisKK1lvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBgYC9xdWlldGBgIG9wdGlvbiB0byBoaWRlIHRoZSBwcm9ncmVzcyBkaXNwbGF5LgorCisKK090aGVyIFBsYXRmb3JtcworLS0tLS0tLS0tLS0tLS0tCiAKIFdpdGggb25nb2luZyBkZXZlbG9wbWVudCBvZiBQeXRob24sIHNvbWUgcGxhdGZvcm1zIHRoYXQgdXNlZCB0byBiZSBzdXBwb3J0ZWQKIGVhcmxpZXIgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgKGR1ZSB0byB0aGUgbGFjayBvZiB1c2VycyBvciBkZXZlbG9wZXJzKS4KQEAgLTY2LDE5ICsyMzAsMzEgQEAKIGBBY3RpdmVQeXRob24gPGh0dHA6Ly93d3cuYWN0aXZlc3RhdGUuY29tL2FjdGl2ZXB5dGhvbi8+YF8KICAgICBJbnN0YWxsZXIgd2l0aCBtdWx0aS1wbGF0Zm9ybSBjb21wYXRpYmlsaXR5LCBkb2N1bWVudGF0aW9uLCBQeVdpbjMyCiAKLWBFbnRob3VnaHQgUHl0aG9uIERpc3RyaWJ1dGlvbiA8aHR0cHM6Ly93d3cuZW50aG91Z2h0LmNvbS9wcm9kdWN0cy9lcGQvPmBfCi0gICAgUG9wdWxhciBtb2R1bGVzIChzdWNoIGFzIFB5V2luMzIpIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBkb2N1bWVudGF0aW9uLCB0b29sCi0gICAgc3VpdGUgZm9yIGJ1aWxkaW5nIGV4dGVuc2libGUgUHl0aG9uIGFwcGxpY2F0aW9ucworYEFuYWNvbmRhIDxodHRwOi8vd3d3LmNvbnRpbnV1bS5pby9kb3dubG9hZHMvPmBfCisgICAgUG9wdWxhciBzY2llbnRpZmljIG1vZHVsZXMgKHN1Y2ggYXMgbnVtcHksIHNjaXB5IGFuZCBwYW5kYXMpIGFuZCB0aGUKKyAgICBgYGNvbmRhYGAgcGFja2FnZSBtYW5hZ2VyLgogCi1Ob3RpY2UgdGhhdCB0aGVzZSBwYWNrYWdlcyBhcmUgbGlrZWx5IHRvIGluc3RhbGwgKm9sZGVyKiB2ZXJzaW9ucyBvZiBQeXRob24uCitgQ2Fub3B5IDxodHRwczovL3d3dy5lbnRob3VnaHQuY29tL3Byb2R1Y3RzL2Nhbm9weS8+YF8KKyAgICBBICJjb21wcmVoZW5zaXZlIFB5dGhvbiBhbmFseXNpcyBlbnZpcm9ubWVudCIgd2l0aCBlZGl0b3JzIGFuZCBvdGhlcgorICAgIGRldmVsb3BtZW50IHRvb2xzLgorCitgV2luUHl0aG9uIDxodHRwczovL3dpbnB5dGhvbi5naXRodWIuaW8vPmBfCisgICAgV2luZG93cy1zcGVjaWZpYyBkaXN0cmlidXRpb24gd2l0aCBwcmVidWlsdCBzY2llbnRpZmljIHBhY2thZ2VzIGFuZAorICAgIHRvb2xzIGZvciBidWlsZGluZyBwYWNrYWdlcy4KKworTm90ZSB0aGF0IHRoZXNlIHBhY2thZ2VzIG1heSBub3QgaW5jbHVkZSB0aGUgbGF0ZXN0IHZlcnNpb25zIG9mIFB5dGhvbiBvcgorb3RoZXIgbGlicmFyaWVzLCBhbmQgYXJlIG5vdCBtYWludGFpbmVkIG9yIHN1cHBvcnRlZCBieSB0aGUgY29yZSBQeXRob24gdGVhbS4KIAogCiAKIENvbmZpZ3VyaW5nIFB5dGhvbgogPT09PT09PT09PT09PT09PT09CiAKLUluIG9yZGVyIHRvIHJ1biBQeXRob24gZmxhd2xlc3NseSwgeW91IG1pZ2h0IGhhdmUgdG8gY2hhbmdlIGNlcnRhaW4gZW52aXJvbm1lbnQKLXNldHRpbmdzIGluIFdpbmRvd3MuCitUbyBydW4gUHl0aG9uIGNvbnZlbmllbnRseSBmcm9tIGEgY29tbWFuZCBwcm9tcHQsIHlvdSBtaWdodCBjb25zaWRlciBjaGFuZ2luZworc29tZSBkZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBXaW5kb3dzLiAgV2hpbGUgdGhlIGluc3RhbGxlciBwcm92aWRlcyBhbgorb3B0aW9uIHRvIGNvbmZpZ3VyZSB0aGUgUEFUSCBhbmQgUEFUSEVYVCB2YXJpYWJsZXMgZm9yIHlvdSwgdGhpcyBpcyBvbmx5CityZWxpYWJsZSBmb3IgYSBzaW5nbGUsIHN5c3RlbS13aWRlIGluc3RhbGxhdGlvbi4gIElmIHlvdSByZWd1bGFybHkgdXNlIG11bHRpcGxlCit2ZXJzaW9ucyBvZiBQeXRob24sIGNvbnNpZGVyIHVzaW5nIHRoZSA6cmVmOmBsYXVuY2hlcmAuCiAKIAogLi4gX3NldHRpbmctZW52dmFyczoKQEAgLTg2LDE2MyArMjYyLDg2IEBACiBFeGN1cnN1czogU2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaW5kb3dzIGhhcyBhIGJ1aWx0LWluIGRpYWxvZyBmb3IgY2hhbmdpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb2xsb3dpbmcKLWd1aWRlIGFwcGxpZXMgdG8gWFAgY2xhc3NpY2FsIHZpZXcpOiBSaWdodC1jbGljayB0aGUgaWNvbiBmb3IgeW91ciBtYWNoaW5lCi0odXN1YWxseSBsb2NhdGVkIG9uIHlvdXIgRGVza3RvcCBhbmQgY2FsbGVkICJNeSBDb21wdXRlciIpIGFuZCBjaG9vc2UKLTptZW51c2VsZWN0aW9uOmBQcm9wZXJ0aWVzYCB0aGVyZS4gIFRoZW4sIG9wZW4gdGhlIDpndWlsYWJlbDpgQWR2YW5jZWRgIHRhYgotYW5kIGNsaWNrIHRoZSA6Z3VpbGFiZWw6YEVudmlyb25tZW50IFZhcmlhYmxlc2AgYnV0dG9uLgorV2luZG93cyBhbGxvd3MgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGJlIGNvbmZpZ3VyZWQgcGVybWFuZW50bHkgYXQgYm90aCB0aGUKK1VzZXIgbGV2ZWwgYW5kIHRoZSBTeXN0ZW0gbGV2ZWwsIG9yIHRlbXBvcmFyaWx5IGluIGEgY29tbWFuZCBwcm9tcHQuCiAKLUluIHNob3J0LCB5b3VyIHBhdGggaXM6CitUbyB0ZW1wb3JhcmlseSBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvcGVuIENvbW1hbmQgUHJvbXB0IGFuZCB1c2UgdGhlCis6Y29tbWFuZDpgc2V0YCBjb21tYW5kOjoKIAotICAgIDptZW51c2VsZWN0aW9uOmBNeSBDb21wdXRlcgotICAgIC0tPiBQcm9wZXJ0aWVzCi0gICAgLS0+IEFkdmFuY2VkCi0gICAgLS0+IEVudmlyb25tZW50IFZhcmlhYmxlc2AKKyAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy41OyVQQVRIJQorICAgIEM6XD5zZXQgUFlUSE9OUEFUSD0lUFlUSE9OUEFUSCU7QzpcTXlfcHl0aG9uX2xpYgorICAgIEM6XD5weXRob24KIAorVGhlc2UgY2hhbmdlcyB3aWxsIGFwcGx5IHRvIGFueSBmdXJ0aGVyIGNvbW1hbmRzIGV4ZWN1dGVkIGluIHRoYXQgY29uc29sZSwgYW5kCit3aWxsIGJlIGluaGVyaXRlZCBieSBhbnkgYXBwbGljYXRpb25zIHN0YXJ0ZWQgZnJvbSB0aGUgY29uc29sZS4KKworSW5jbHVkaW5nIHRoZSB2YXJpYWJsZSBuYW1lIHdpdGhpbiBwZXJjZW50IHNpZ25zIHdpbGwgZXhwYW5kIHRvIHRoZSBleGlzdGluZwordmFsdWUsIGFsbG93aW5nIHlvdSB0byBhZGQgeW91ciBuZXcgdmFsdWUgYXQgZWl0aGVyIHRoZSBzdGFydCBvciB0aGUgZW5kLgorTW9kaWZ5aW5nIDplbnZ2YXI6YFBBVEhgIGJ5IGFkZGluZyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcKKzpwcm9ncmFtOmBweXRob24uZXhlYCB0byB0aGUgc3RhcnQgaXMgYSBjb21tb24gd2F5IHRvIGVuc3VyZSB0aGUgY29ycmVjdCB2ZXJzaW9uCitvZiBQeXRob24gaXMgbGF1bmNoZWQuCisKK1RvIHBlcm1hbmVudGx5IG1vZGlmeSB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGNsaWNrIFN0YXJ0IGFuZCBzZWFyY2gKK2ZvciAnZWRpdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMnLCBvciBvcGVuIFN5c3RlbSBwcm9wZXJ0aWVzLCA6Z3VpbGFiZWw6YEFkdmFuY2VkCitzeXN0ZW0gc2V0dGluZ3NgIGFuZCBjbGljayB0aGUgOmd1aWxhYmVsOmBFbnZpcm9ubWVudCBWYXJpYWJsZXNgIGJ1dHRvbi4KIEluIHRoaXMgZGlhbG9nLCB5b3UgY2FuIGFkZCBvciBtb2RpZnkgVXNlciBhbmQgU3lzdGVtIHZhcmlhYmxlcy4gVG8gY2hhbmdlCiBTeXN0ZW0gdmFyaWFibGVzLCB5b3UgbmVlZCBub24tcmVzdHJpY3RlZCBhY2Nlc3MgdG8geW91ciBtYWNoaW5lCiAoaS5lLiBBZG1pbmlzdHJhdG9yIHJpZ2h0cykuCiAKLUFub3RoZXIgd2F5IG9mIGFkZGluZyB2YXJpYWJsZXMgdG8geW91ciBlbnZpcm9ubWVudCBpcyB1c2luZyB0aGUgOmNvbW1hbmQ6YHNldGAKLWNvbW1hbmQ6OgorLi4gbm90ZTo6CiAKLSAgICBzZXQgUFlUSE9OUEFUSD0lUFlUSE9OUEFUSCU7QzpcTXlfcHl0aG9uX2xpYgorICAgIFdpbmRvd3Mgd2lsbCBjb25jYXRlbmF0ZSBVc2VyIHZhcmlhYmxlcyAqYWZ0ZXIqIFN5c3RlbSB2YXJpYWJsZXMsIHdoaWNoIG1heQorICAgIGNhdXNlIHVuZXhwZWN0ZWQgcmVzdWx0cyB3aGVuIG1vZGlmeWluZyA6ZW52dmFyOmBQQVRIYC4KIAotVG8gbWFrZSB0aGlzIHNldHRpbmcgcGVybWFuZW50LCB5b3UgY291bGQgYWRkIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1hbmQgbGluZSB0bwoteW91ciA6ZmlsZTpgYXV0b2V4ZWMuYmF0YC4gOnByb2dyYW06YG1zY29uZmlnYCBpcyBhIGdyYXBoaWNhbCBpbnRlcmZhY2UgdG8gdGhpcwotZmlsZS4KLQotVmlld2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY2FuIGFsc28gYmUgZG9uZSBtb3JlIHN0cmFpZ2h0LWZvcndhcmQ6IFRoZQotY29tbWFuZCBwcm9tcHQgd2lsbCBleHBhbmQgc3RyaW5ncyB3cmFwcGVkIGludG8gcGVyY2VudCBzaWducyBhdXRvbWF0aWNhbGx5OjoKLQotICAgIGVjaG8gJVBBVEglCi0KLUNvbnN1bHQgOmNvbW1hbmQ6YHNldCAvP2AgZm9yIGRldGFpbHMgb24gdGhpcyBiZWhhdmlvdXIuCisgICAgVGhlIDplbnZ2YXI6YFBZVEhPTlBBVEhgIHZhcmlhYmxlIGlzIHVzZWQgYnkgYWxsIHZlcnNpb25zIG9mIFB5dGhvbiAyIGFuZAorICAgIFB5dGhvbiAzLCBzbyB5b3Ugc2hvdWxkIG5vdCBwZXJtYW5lbnRseSBjb25maWd1cmUgdGhpcyB2YXJpYWJsZSB1bmxlc3MgaXQKKyAgICBvbmx5IGluY2x1ZGVzIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggYWxsIG9mIHlvdXIgaW5zdGFsbGVkIFB5dGhvbgorICAgIHZlcnNpb25zLgogCiAuLiBzZWVhbHNvOjoKIAotICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA4NDMKKyAgICBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzEwMDg0MwogICAgICAgRW52aXJvbm1lbnQgdmFyaWFibGVzIGluIFdpbmRvd3MgTlQKIAotICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8zMTA1MTkKKyAgICBodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2M3NTQyNTAuYXNweAorICAgICAgVGhlIFNFVCBjb21tYW5kLCBmb3IgdGVtcG9yYXJpbHkgbW9kaWZ5aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworCisgICAgaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjNzU1MTA0LmFzcHgKKyAgICAgIFRoZSBTRVRYIGNvbW1hbmQsIGZvciBwZXJtYW5lbnRseSBtb2RpZnlpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCisKKyAgICBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzMxMDUxOQogICAgICAgSG93IFRvIE1hbmFnZSBFbnZpcm9ubWVudCBWYXJpYWJsZXMgaW4gV2luZG93cyBYUAogCi0gICBodHRwOi8vd3d3LmNoZW0uZ2xhLmFjLnVrL35sb3Vpcy9zb2Z0d2FyZS9mYXEvcTEuaHRtbAorICAgIGh0dHA6Ly93d3cuY2hlbS5nbGEuYWMudWsvfmxvdWlzL3NvZnR3YXJlL2ZhcS9xMS5odG1sCiAgICAgICBTZXR0aW5nIEVudmlyb25tZW50IHZhcmlhYmxlcywgTG91aXMgSi4gRmFycnVnaWEKIAotCiAuLiBfd2luZG93cy1wYXRoLW1vZDoKIAogRmluZGluZyB0aGUgUHl0aG9uIGV4ZWN1dGFibGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogCiBCZXNpZGVzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3RhcnQgbWVudSBlbnRyeSBmb3IgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIEFzIG9mCi1QeXRob24gMy4zLCB0aGUgaW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KK2ludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBUaGUKK2luc3RhbGxlciBmb3IgUHl0aG9uIDMuNSBhbmQgbGF0ZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgogCi1BdCB0aGUgIkN1c3RvbWl6ZSBQeXRob24gMy4zIiBzY3JlZW4sIGFuIG9wdGlvbiBjYWxsZWQKLSJBZGQgcHl0aG9uLmV4ZSB0byBzZWFyY2ggcGF0aCIgY2FuIGJlIGVuYWJsZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIHBsYWNlCi15b3VyIGluc3RhbGxhdGlvbiBpbnRvIHRoZSA6ZW52dmFyOmAlUEFUSCVgLiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZQotOmNvbW1hbmQ6YHB5dGhvbmAgdG8gcnVuIHRoZSBpbnRlcnByZXRlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgorT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIDMuNSB0bworUEFUSCIgY2FuIGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKKzplbnZ2YXI6YFBBVEhgLiAgVGhlIGxvY2F0aW9uIG9mIHRoZSA6ZmlsZTpgU2NyaXB0c1xcYCBmb2xkZXIgaXMgYWxzbyBhZGRlZC4KK1RoaXMgYWxsb3dzIHlvdSB0byB0eXBlIDpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIsIGFuZAorOmNvbW1hbmQ6YHBpcGAgb3IgLiBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyCiBzY3JpcHRzIHdpdGggY29tbWFuZCBsaW5lIG9wdGlvbnMsIHNlZSA6cmVmOmB1c2luZy1vbi1jbWRsaW5lYCBkb2N1bWVudGF0aW9uLgogCiBJZiB5b3UgZG9uJ3QgZW5hYmxlIHRoaXMgb3B0aW9uIGF0IGluc3RhbGwgdGltZSwgeW91IGNhbiBhbHdheXMgcmUtcnVuIHRoZQotaW5zdGFsbGVyIHRvIGNob29zZSBpdC4KK2luc3RhbGxlciwgc2VsZWN0IE1vZGlmeSwgYW5kIGVuYWJsZSBpdC4gIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gbWFudWFsbHkKK21vZGlmeSB0aGUgOmVudnZhcjpgUEFUSGAgdXNpbmcgdGhlIGRpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gIFlvdQorbmVlZCB0byBzZXQgeW91ciA6ZW52dmFyOmBQQVRIYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBkaXJlY3RvcnkKK29mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiwgZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uIGZyb20gb3RoZXIgZW50cmllcy4gIEFuCitleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYWxyZWFkeQorZXhpc3RlZCk6OgogCi1UaGUgYWx0ZXJuYXRpdmUgaXMgbWFudWFsbHkgbW9kaWZ5aW5nIHRoZSA6ZW52dmFyOmAlUEFUSCVgIHVzaW5nIHRoZQotZGlyZWN0aW9ucyBpbiA6cmVmOmBzZXR0aW5nLWVudnZhcnNgLiBZb3UgbmVlZCB0byBzZXQgeW91ciA6ZW52dmFyOmAlUEFUSCVgCi1lbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgb2YgeW91ciBQeXRob24gZGlzdHJpYnV0aW9uLAotZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uIGZyb20gb3RoZXIgZW50cmllcy4gQW4gZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rCi1saWtlIHRoaXMgKGFzc3VtaW5nIHRoZSBmaXJzdCB0d28gZW50cmllcyBhcmUgV2luZG93cycgZGVmYXVsdCk6OgotCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFB5dGhvbjMzCi0KLQotRmluZGluZyBtb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0KLQotUHl0aG9uIHVzdWFsbHkgc3RvcmVzIGl0cyBsaWJyYXJ5IChhbmQgdGhlcmVieSB5b3VyIHNpdGUtcGFja2FnZXMgZm9sZGVyKSBpbiB0aGUKLWluc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBTbywgaWYgeW91IGhhZCBpbnN0YWxsZWQgUHl0aG9uIHRvCi06ZmlsZTpgQzpcXFB5dGhvblxcYCwgdGhlIGRlZmF1bHQgbGlicmFyeSB3b3VsZCByZXNpZGUgaW4KLTpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgotOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KLQotVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKLQotKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50Ci0gIGRpcmVjdG9yeS4KLQotKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgZXhpc3RzLCBhcyBkZXNjcmliZWQgaW4KLSAgOnJlZjpgdXNpbmctb24tZW52dmFyc2AsIGl0cyBlbnRyaWVzIGFyZSBhZGRlZCBuZXh0LiAgTm90ZSB0aGF0IG9uIFdpbmRvd3MsCi0gIHBhdGhzIGluIHRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucywgdG8gZGlzdGluZ3Vpc2ggdGhlbQotICBmcm9tIHRoZSBjb2xvbiB1c2VkIGluIGRyaXZlIGlkZW50aWZpZXJzIChgYEM6XGBgIGV0Yy4pLgotCi0qIEFkZGl0aW9uYWwgImFwcGxpY2F0aW9uIHBhdGhzIiBjYW4gYmUgYWRkZWQgaW4gdGhlIHJlZ2lzdHJ5IGFzIHN1YmtleXMgb2YKLSAgOnNhbXA6YFxcU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3ZlcnNpb259XFxQeXRob25QYXRoYCB1bmRlciBib3RoIHRoZQotICBgYEhLRVlfQ1VSUkVOVF9VU0VSYGAgYW5kIGBgSEtFWV9MT0NBTF9NQUNISU5FYGAgaGl2ZXMuICBTdWJrZXlzIHdoaWNoIGhhdmUKLSAgc2VtaWNvbG9uLWRlbGltaXRlZCBwYXRoIHN0cmluZ3MgYXMgdGhlaXIgZGVmYXVsdCB2YWx1ZSB3aWxsIGNhdXNlIGVhY2ggcGF0aAotICB0byBiZSBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiAgKE5vdGUgdGhhdCBhbGwga25vd24gaW5zdGFsbGVycyBvbmx5IHVzZQotICBIS0xNLCBzbyBIS0NVIGlzIHR5cGljYWxseSBlbXB0eS4pCi0KLSogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcwotICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCi0gIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQotICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCi0gIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQotICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCi0KLSogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KLSAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKLSAgcmVsYXRpdmUgZW50cmllcyBpcyB1c2VkIChlLmcuIGBgLlxMaWI7LlxwbGF0LXdpbmBgLCBldGMpLgotCi1UaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKLQotKiBXaGVuIHJ1bm5pbmcgOmZpbGU6YHB5dGhvbi5leGVgLCBvciBhbnkgb3RoZXIgLmV4ZSBpbiB0aGUgbWFpbiBQeXRob24KLSAgZGlyZWN0b3J5IChlaXRoZXIgYW4gaW5zdGFsbGVkIHZlcnNpb24sIG9yIGRpcmVjdGx5IGZyb20gdGhlIFBDYnVpbGQKLSAgZGlyZWN0b3J5KSwgdGhlIGNvcmUgcGF0aCBpcyBkZWR1Y2VkLCBhbmQgdGhlIGNvcmUgcGF0aHMgaW4gdGhlIHJlZ2lzdHJ5IGFyZQotICBpZ25vcmVkLiAgT3RoZXIgImFwcGxpY2F0aW9uIHBhdGhzIiBpbiB0aGUgcmVnaXN0cnkgYXJlIGFsd2F5cyByZWFkLgotCi0qIFdoZW4gUHl0aG9uIGlzIGhvc3RlZCBpbiBhbm90aGVyIC5leGUgKGRpZmZlcmVudCBkaXJlY3RvcnksIGVtYmVkZGVkIHZpYSBDT00sCi0gIGV0YyksIHRoZSAiUHl0aG9uIEhvbWUiIHdpbGwgbm90IGJlIGRlZHVjZWQsIHNvIHRoZSBjb3JlIHBhdGggZnJvbSB0aGUKLSAgcmVnaXN0cnkgaXMgdXNlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KLQotKiBJZiBQeXRob24gY2FuJ3QgZmluZCBpdHMgaG9tZSBhbmQgdGhlcmUgaXMgbm8gcmVnaXN0cnkgKGVnLCBmcm96ZW4gLmV4ZSwgc29tZQotICB2ZXJ5IHN0cmFuZ2UgaW5zdGFsbGF0aW9uIHNldHVwKSB5b3UgZ2V0IGEgcGF0aCB3aXRoIHNvbWUgZGVmYXVsdCwgYnV0Ci0gIHJlbGF0aXZlLCBwYXRocy4KLQotCi1FeGVjdXRpbmcgc2NyaXB0cwotLS0tLS0tLS0tLS0tLS0tLS0KLQotQXMgb2YgUHl0aG9uIDMuMywgUHl0aG9uIGluY2x1ZGVzIGEgbGF1bmNoZXIgd2hpY2ggZmFjaWxpdGF0ZXMgcnVubmluZyBQeXRob24KLXNjcmlwdHMuIFNlZSA6cmVmOmBsYXVuY2hlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLUV4ZWN1dGluZyBzY3JpcHRzIHdpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlciBpbnN0YWxsZWQsIFB5dGhvbiBzY3JpcHRzIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24KLWBgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbi5leGVgIGJ5IGRlZmF1bHQuICBUaGlzIGV4ZWN1dGFibGUKLW9wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzIG9wZW4gZXZlbiBpZiB0aGUgcHJvZ3JhbSB1c2VzIGEgR1VJLiAgSWYgeW91IGRvCi1ub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZSBleHRlbnNpb24gYGAucHl3YGAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2NyaXB0Ci10byBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9udy5leGVgIGJ5IGRlZmF1bHQgKGJvdGggZXhlY3V0YWJsZXMgYXJlCi1sb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgb2YgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSkuICBUaGlzCi1zdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24gc3RhcnR1cC4KLQotWW91IGNhbiBhbHNvIG1ha2UgYWxsIGBgLnB5YGAgc2NyaXB0cyBleGVjdXRlIHdpdGggOnByb2dyYW06YHB5dGhvbncuZXhlYCwKLXNldHRpbmcgdGhpcyB0aHJvdWdoIHRoZSB1c3VhbCBmYWNpbGl0aWVzLCBmb3IgZXhhbXBsZSAobWlnaHQgcmVxdWlyZQotYWRtaW5pc3RyYXRpdmUgcmlnaHRzKToKLQotIy4gTGF1bmNoIGEgY29tbWFuZCBwcm9tcHQuCi0jLiBBc3NvY2lhdGUgdGhlIGNvcnJlY3QgZmlsZSBncm91cCB3aXRoIGBgLnB5YGAgc2NyaXB0czo6Ci0KLSAgICAgIGFzc29jIC5weT1QeXRob24uRmlsZQotCi0jLiBSZWRpcmVjdCBhbGwgUHl0aG9uIGZpbGVzIHRvIHRoZSBuZXcgZXhlY3V0YWJsZTo6Ci0KLSAgICAgIGZ0eXBlIFB5dGhvbi5GaWxlPUM6XFBhdGhcdG9ccHl0aG9udy5leGUgIiUxIiAlKgotCisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNQogCiAuLiBfbGF1bmNoZXI6CiAKQEAgLTI1MSwyMSArMzUwLDI2IEBACiAKIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi1UaGUgUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzIGlzIGEgdXRpbGl0eSB3aGljaCBhaWRzIGluIHRoZSBsb2NhdGlvbiBhbmQKLWV4ZWN1dGlvbiBvZiBkaWZmZXJlbnQgUHl0aG9uIHZlcnNpb25zLiAgSXQgYWxsb3dzIHNjcmlwdHMgKG9yIHRoZQorVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiBsb2NhdGluZyBhbmQKK2V4ZWN1dGluZyBvZiBkaWZmZXJlbnQgUHl0aG9uIHZlcnNpb25zLiAgSXQgYWxsb3dzIHNjcmlwdHMgKG9yIHRoZQogY29tbWFuZC1saW5lKSB0byBpbmRpY2F0ZSBhIHByZWZlcmVuY2UgZm9yIGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24sIGFuZAogd2lsbCBsb2NhdGUgYW5kIGV4ZWN1dGUgdGhhdCB2ZXJzaW9uLgogCitVbmxpa2UgdGhlIDplbnZ2YXI6YFBBVEhgIHZhcmlhYmxlLCB0aGUgbGF1bmNoZXIgd2lsbCBjb3JyZWN0bHkgc2VsZWN0IHRoZSBtb3N0CithcHByb3ByaWF0ZSB2ZXJzaW9uIG9mIFB5dGhvbi4gSXQgd2lsbCBwcmVmZXIgcGVyLXVzZXIgaW5zdGFsbGF0aW9ucyBvdmVyCitzeXN0ZW0td2lkZSBvbmVzLCBhbmQgb3JkZXJzIGJ5IGxhbmd1YWdlIHZlcnNpb24gcmF0aGVyIHRoYW4gdXNpbmcgdGhlIG1vc3QKK3JlY2VudGx5IGluc3RhbGxlZCB2ZXJzaW9uLgorCiBHZXR0aW5nIHN0YXJ0ZWQKIC0tLS0tLS0tLS0tLS0tLQogCiBGcm9tIHRoZSBjb21tYW5kLWxpbmUKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1Zb3Ugc2hvdWxkIGVuc3VyZSB0aGUgbGF1bmNoZXIgaXMgb24geW91ciBQQVRIIC0gZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMKLWluc3RhbGxlZCBpdCBtYXkgYWxyZWFkeSBiZSB0aGVyZSwgYnV0IGNoZWNrIGp1c3QgaW4gY2FzZSBpdCBpcyBub3QuCi0KLUZyb20gYSBjb21tYW5kLXByb21wdCwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CitTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiAzLjMgYW5kIGxhdGVyIHdpbGwgcHV0IHRoZSBsYXVuY2hlciBvbiB5b3VyCis6ZW52dmFyOmBQQVRIYC4gVGhlIGxhdW5jaGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgYXZhaWxhYmxlIHZlcnNpb25zIG9mCitQeXRob24sIHNvIGl0IGRvZXMgbm90IG1hdHRlciB3aGljaCB2ZXJzaW9uIGlzIGluc3RhbGxlZC4gVG8gY2hlY2sgdGhhdCB0aGUKK2xhdW5jaGVyIGlzIGF2YWlsYWJsZSwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4gQ29tbWFuZCBQcm9tcHQ6CiAKIDo6CiAKQEAgLTI5MSw2ICszOTUsMjggQEAKIAogWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KIAorSWYgeW91IHNlZSB0aGUgZm9sbG93aW5nIGVycm9yLCB5b3UgZG8gbm90IGhhdmUgdGhlIGxhdW5jaGVyIGluc3RhbGxlZDoKKworOjoKKworICAncHknIGlzIG5vdCByZWNvZ25pemVkIGFzIGFuIGludGVybmFsIG9yIGV4dGVybmFsIGNvbW1hbmQsCisgIG9wZXJhYmxlIHByb2dyYW0gb3IgYmF0Y2ggZmlsZS4KKworUGVyLXVzZXIgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gZG8gbm90IGFkZCB0aGUgbGF1bmNoZXIgdG8gOmVudnZhcjpgUEFUSGAKK3VubGVzcyB0aGUgb3B0aW9uIHdhcyBzZWxlY3RlZCBvbiBpbnN0YWxsYXRpb24uCisKK1ZpcnR1YWwgZW52aXJvbm1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworSWYgdGhlIGxhdW5jaGVyIGlzIHJ1biB3aXRoIG5vIGV4cGxpY2l0IFB5dGhvbiB2ZXJzaW9uIHNwZWNpZmljYXRpb24sIGFuZCBhCit2aXJ0dWFsIGVudmlyb25tZW50IChjcmVhdGVkIHdpdGggdGhlIHN0YW5kYXJkIGxpYnJhcnkgOm1vZDpgdmVudmAgbW9kdWxlIG9yCit0aGUgZXh0ZXJuYWwgYGB2aXJ0dWFsZW52YGAgdG9vbCkgYWN0aXZlLCB0aGUgbGF1bmNoZXIgd2lsbCBydW4gdGhlIHZpcnR1YWwKK2Vudmlyb25tZW50J3MgaW50ZXJwcmV0ZXIgcmF0aGVyIHRoYW4gdGhlIGdsb2JhbCBvbmUuICBUbyBydW4gdGhlIGdsb2JhbAoraW50ZXJwcmV0ZXIsIGVpdGhlciBkZWFjdGl2YXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LCBvciBleHBsaWNpdGx5IHNwZWNpZnkKK3RoZSBnbG9iYWwgUHl0aG9uIHZlcnNpb24uCisKIEZyb20gYSBzY3JpcHQKIF5eXl5eXl5eXl5eXl4KIApAQCAtMzI2LDcgKzQ1Miw3IEBACiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIFRoZSBsYXVuY2hlciBzaG91bGQgaGF2ZSBiZWVuIGFzc29jaWF0ZWQgd2l0aCBQeXRob24gZmlsZXMgKGkuZS4gYGAucHlgYCwKLWBgLnB5d2BgLCBgYC5weWNgYCwgYGAucHlvYGAgZmlsZXMpIHdoZW4gaXQgd2FzIGluc3RhbGxlZC4gIFRoaXMgbWVhbnMgdGhhdAorYGAucHl3YGAsIGBgLnB5Y2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKIHdoZW4geW91IGRvdWJsZS1jbGljayBvbiBvbmUgb2YgdGhlc2UgZmlsZXMgZnJvbSBXaW5kb3dzIGV4cGxvcmVyIHRoZSBsYXVuY2hlcgogd2lsbCBiZSB1c2VkLCBhbmQgdGhlcmVmb3JlIHlvdSBjYW4gdXNlIHRoZSBzYW1lIGZhY2lsaXRpZXMgZGVzY3JpYmVkIGFib3ZlIHRvCiBoYXZlIHRoZSBzY3JpcHQgc3BlY2lmeSB0aGUgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC4KQEAgLTM2NSw2ICs0OTEsMTYgQEAKIG9uIFdpbmRvd3Mgd2hpY2ggeW91IGhvcGUgd2lsbCBiZSB1c2VmdWwgb24gVW5peCwgeW91IHNob3VsZCB1c2Ugb25lIG9mIHRoZQogc2hlYmFuZyBsaW5lcyBzdGFydGluZyB3aXRoIGBgL3VzcmBgLgogCitBbnkgb2YgdGhlIGFib3ZlIHZpcnR1YWwgY29tbWFuZHMgY2FuIGJlIHN1ZmZpeGVkIHdpdGggYW4gZXhwbGljaXQgdmVyc2lvbgorKGVpdGhlciBqdXN0IHRoZSBtYWpvciB2ZXJzaW9uLCBvciB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24pIC0gZm9yIGV4YW1wbGUKK2BgL3Vzci9iaW4vcHl0aG9uMi43YGAgLSB3aGljaCB3aWxsIGNhdXNlIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiB0byBiZSBsb2NhdGVkCithbmQgdXNlZC4KKworVGhlIGBgL3Vzci9iaW4vZW52YGAgZm9ybSBvZiBzaGViYW5nIGxpbmUgaGFzIG9uZSBmdXJ0aGVyIHNwZWNpYWwgcHJvcGVydHkuCitCZWZvcmUgbG9va2luZyBmb3IgaW5zdGFsbGVkIFB5dGhvbiBpbnRlcnByZXRlcnMsIHRoaXMgZm9ybSB3aWxsIHNlYXJjaCB0aGUKK2V4ZWN1dGFibGUgOmVudnZhcjpgUEFUSGAgZm9yIGEgUHl0aG9uIGV4ZWN1dGFibGUuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlCitiZWhhdmlvdXIgb2YgdGhlIFVuaXggYGBlbnZgYCBwcm9ncmFtLCB3aGljaCBwZXJmb3JtcyBhIDplbnZ2YXI6YFBBVEhgIHNlYXJjaC4KKwogQXJndW1lbnRzIGluIHNoZWJhbmcgbGluZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTM4MywxNyArNTE5LDE2IEBACiBDdXN0b21pemF0aW9uIHZpYSBJTkkgZmlsZXMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0gICAgVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZQotICAgIGN1cnJlbnQgdXNlcidzICJhcHBsaWNhdGlvbiBkYXRhIiBkaXJlY3RvcnkgKGkuZS4gdGhlIGRpcmVjdG9yeSByZXR1cm5lZAotICAgIGJ5IGNhbGxpbmcgdGhlIFdpbmRvd3MgZnVuY3Rpb24gU0hHZXRGb2xkZXJQYXRoIHdpdGggQ1NJRExfTE9DQUxfQVBQREFUQSkKLSAgICBhbmQgYGBweS5pbmlgYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiAgVGhlIHNhbWUgLmluaQotICAgIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZSAnY29uc29sZScgdmVyc2lvbiBvZiB0aGUgbGF1bmNoZXIgKGkuZS4KLSAgICBweS5leGUpIGFuZCBmb3IgdGhlICd3aW5kb3dzJyB2ZXJzaW9uIChpLmUuIHB5dy5leGUpCitUd28gLmluaSBmaWxlcyB3aWxsIGJlIHNlYXJjaGVkIGJ5IHRoZSBsYXVuY2hlciAtIGBgcHkuaW5pYGAgaW4gdGhlIGN1cnJlbnQKK3VzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkgY2FsbGluZyB0aGUKK1dpbmRvd3MgZnVuY3Rpb24gU0hHZXRGb2xkZXJQYXRoIHdpdGggQ1NJRExfTE9DQUxfQVBQREFUQSkgYW5kIGBgcHkuaW5pYGAgaW4gdGhlCitzYW1lIGRpcmVjdG9yeSBhcyB0aGUgbGF1bmNoZXIuIFRoZSBzYW1lIC5pbmkgZmlsZXMgYXJlIHVzZWQgZm9yIGJvdGggdGhlCisnY29uc29sZScgdmVyc2lvbiBvZiB0aGUgbGF1bmNoZXIgKGkuZS4gcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbgorKGkuZS4gcHl3LmV4ZSkKIAotICAgIEN1c3RvbWl6YXRpb24gc3BlY2lmaWVkIGluIHRoZSAiYXBwbGljYXRpb24gZGlyZWN0b3J5IiB3aWxsIGhhdmUKLSAgICBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZSBuZXh0IHRvIHRoZSBleGVjdXRhYmxlLCBzbyBhIHVzZXIsIHdobyBtYXkgbm90Ci0gICAgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlIC5pbmkgZmlsZSBuZXh0IHRvIHRoZSBsYXVuY2hlciwgY2FuIG92ZXJyaWRlCi0gICAgY29tbWFuZHMgaW4gdGhhdCBnbG9iYWwgLmluaSBmaWxlKQorQ3VzdG9taXphdGlvbiBzcGVjaWZpZWQgaW4gdGhlICJhcHBsaWNhdGlvbiBkaXJlY3RvcnkiIHdpbGwgaGF2ZSBwcmVjZWRlbmNlIG92ZXIKK3RoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUKKy5pbmkgZmlsZSBuZXh0IHRvIHRoZSBsYXVuY2hlciwgY2FuIG92ZXJyaWRlIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKIAogQ3VzdG9taXppbmcgZGVmYXVsdCBQeXRob24gdmVyc2lvbnMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC00ODgsNiArNjIzLDkzIEBACiB0YXJnZXQgUHl0aG9uLgogCiAKKworRmluZGluZyBtb2R1bGVzCis9PT09PT09PT09PT09PT0KKworUHl0aG9uIHVzdWFsbHkgc3RvcmVzIGl0cyBsaWJyYXJ5IChhbmQgdGhlcmVieSB5b3VyIHNpdGUtcGFja2FnZXMgZm9sZGVyKSBpbiB0aGUKK2luc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBTbywgaWYgeW91IGhhZCBpbnN0YWxsZWQgUHl0aG9uIHRvCis6ZmlsZTpgQzpcXFB5dGhvblxcYCwgdGhlIGRlZmF1bHQgbGlicmFyeSB3b3VsZCByZXNpZGUgaW4KKzpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgorOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KKworVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKKworKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CisgIGRpcmVjdG9yeS4KKworKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgZXhpc3RzLCBhcyBkZXNjcmliZWQgaW4KKyAgOnJlZjpgdXNpbmctb24tZW52dmFyc2AsIGl0cyBlbnRyaWVzIGFyZSBhZGRlZCBuZXh0LiAgTm90ZSB0aGF0IG9uIFdpbmRvd3MsCisgIHBhdGhzIGluIHRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucywgdG8gZGlzdGluZ3Vpc2ggdGhlbQorICBmcm9tIHRoZSBjb2xvbiB1c2VkIGluIGRyaXZlIGlkZW50aWZpZXJzIChgYEM6XGBgIGV0Yy4pLgorCisqIEFkZGl0aW9uYWwgImFwcGxpY2F0aW9uIHBhdGhzIiBjYW4gYmUgYWRkZWQgaW4gdGhlIHJlZ2lzdHJ5IGFzIHN1YmtleXMgb2YKKyAgOnNhbXA6YFxcU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3ZlcnNpb259XFxQeXRob25QYXRoYCB1bmRlciBib3RoIHRoZQorICBgYEhLRVlfQ1VSUkVOVF9VU0VSYGAgYW5kIGBgSEtFWV9MT0NBTF9NQUNISU5FYGAgaGl2ZXMuICBTdWJrZXlzIHdoaWNoIGhhdmUKKyAgc2VtaWNvbG9uLWRlbGltaXRlZCBwYXRoIHN0cmluZ3MgYXMgdGhlaXIgZGVmYXVsdCB2YWx1ZSB3aWxsIGNhdXNlIGVhY2ggcGF0aAorICB0byBiZSBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiAgKE5vdGUgdGhhdCBhbGwga25vd24gaW5zdGFsbGVycyBvbmx5IHVzZQorICBIS0xNLCBzbyBIS0NVIGlzIHR5cGljYWxseSBlbXB0eS4pCisKKyogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcworICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQorICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCisgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQorICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisKKyogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KKyAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKKyAgcmVsYXRpdmUgZW50cmllcyBpcyB1c2VkIChlLmcuIGBgLlxMaWI7LlxwbGF0LXdpbmBgLCBldGMpLgorCitJZiBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaXMgZm91bmQgYWxvbmdzaWRlIHRoZSBtYWluIGV4ZWN1dGFibGUgb3IgaW4gdGhlCitkaXJlY3Rvcnkgb25lIGxldmVsIGFib3ZlIHRoZSBleGVjdXRhYmxlLCB0aGUgZm9sbG93aW5nIHZhcmlhdGlvbnMgYXBwbHk6CisKKyogSWYgYGBob21lYGAgaXMgYW4gYWJzb2x1dGUgcGF0aCBhbmQgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgbm90IHNldCwgdGhpcworICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCisgIGhvbWUgbG9jYXRpb24uCisKKyogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQorICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQorICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KKworVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CisKKyogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCisgIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCisgIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKKyAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KKworKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAorICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCisgIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCisKKyogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGFyZSBubyByZWdpc3RyeSB2YWx1ZSAoZnJvemVuIC5leGUsCisgIHNvbWUgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAorICByZWxhdGl2ZSwgcGF0aHMuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKK2ZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CisKKyogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCisgIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCisgIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgorCisqIElmIHlvdSBhcmUgbG9hZGluZyA6ZmlsZTpgcHl0aG9uMy5kbGxgIG9yIDpmaWxlOmBweXRob24zNS5kbGxgIGluIHlvdXIgb3duCisgIGV4ZWN1dGFibGUsIGV4cGxpY2l0bHkgY2FsbCA6YzpmdW5jOmBQeV9TZXRQYXRoYCBvciAoYXQgbGVhc3QpCisgIDpjOmZ1bmM6YFB5X1NldFByb2dyYW1OYW1lYCBiZWZvcmUgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCisKKyogQ2xlYXIgYW5kL29yIG92ZXJ3cml0ZSA6ZW52dmFyOmBQWVRIT05QQVRIYCBhbmQgc2V0IDplbnZ2YXI6YFBZVEhPTkhPTUVgCisgIGJlZm9yZSBsYXVuY2hpbmcgOmZpbGU6YHB5dGhvbi5leGVgIGZyb20geW91ciBhcHBsaWNhdGlvbi4KKworKiBJZiB5b3UgY2Fubm90IHVzZSB0aGUgcHJldmlvdXMgc3VnZ2VzdGlvbnMgKGZvciBleGFtcGxlLCB5b3UgYXJlIGEKKyAgZGlzdHJpYnV0aW9uIHRoYXQgYWxsb3dzIHBlb3BsZSB0byBydW4gOmZpbGU6YHB5dGhvbi5leGVgIGRpcmVjdGx5KSwgZW5zdXJlCisgIHRoYXQgdGhlIGxhbmRtYXJrIGZpbGUgKDpmaWxlOmBMaWJcXG9zLnB5YCkgZXhpc3RzIGluIHlvdXIgaW5zdGFsbCBkaXJlY3RvcnkuCisgIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUuKQorCitUaGVzZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmaWxlcyBpbiBhIHN5c3RlbS13aWRlIGluc3RhbGxhdGlvbiB3aWxsIG5vdCB0YWtlCitwcmVjZWRlbmNlIG92ZXIgdGhlIGNvcHkgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYnVuZGxlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uCitPdGhlcndpc2UsIHlvdXIgdXNlcnMgbWF5IGV4cGVyaWVuY2UgcHJvYmxlbXMgdXNpbmcgeW91ciBhcHBsaWNhdGlvbi4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtNDk4LDcgKzcyMCw2IEBACiBUaGUgV2luZG93cy1zcGVjaWZpYyBzdGFuZGFyZCBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluCiA6cmVmOmBtc3dpbi1zcGVjaWZpYy1zZXJ2aWNlc2AuCiAKLQogUHlXaW4zMgogLS0tLS0tLQogCkBAIC01NTcsMjAgKzc3OCw4IEBACiA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvc2V0dXAuaHRtbCNnZXR0aW5nLXRoZS1zb3VyY2UtY29kZT5gXy4KIAogVGhlIHNvdXJjZSB0cmVlIGNvbnRhaW5zIGEgYnVpbGQgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgZm9yIE1pY3Jvc29mdAotVmlzdWFsIEMrKywgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcy4KLVZpZXcgdGhlIDpmaWxlOmByZWFkbWUudHh0YCBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IERpcmVjdG9yeSAgICAgICAgICB8IE1TVkMgdmVyc2lvbiB8IFZpc3VhbCBTdHVkaW8gdmVyc2lvbiB8Ci0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpmaWxlOmBQQy9WUzkuMC9gICB8IDkuMCAgICAgICAgICB8IDIwMDggICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpmaWxlOmBQQ2J1aWxkL2AgICB8IDEwLjAgICAgICAgICB8IDIwMTAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLU5vdGUgdGhhdCBhbnkgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSA6ZmlsZTpgUENgIGRpcmVjdG9yeSBhcmUgbm90Ci1uZWNlc3NhcmlseSBmdWxseSBzdXBwb3J0ZWQuICBUaGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZmlsZXMKLWZvciB0aGUgY29tcGlsZXIgdXNlZCB0byBidWlsZCB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4KK1Zpc3VhbCBTdHVkaW8gMjAxNSwgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbgorcmVsZWFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbiB0aGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeS4KIAogQ2hlY2sgOmZpbGU6YFBDYnVpbGQvcmVhZG1lLnR4dGAgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIHByb2Nlc3MuCiAKQEAgLTYwMyw1ICs4MTIsMyBAQAogCiAgICA6cGVwOmAzOTdgIC0gUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzCiAgICAgICBUaGUgcHJvcG9zYWwgZm9yIHRoZSBsYXVuY2hlciB0byBiZSBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KLQotCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiOWZkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtMCwwICsxLDExMDYgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy41CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpSZWxlYXNlOiB8cmVsZWFzZXwKKzpEYXRlOiB8dG9kYXl8CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjUsIGNvbXBhcmVkIHRvIDMuNC4KKworRm9yIGZ1bGwgZGV0YWlscywgc2VlIHRoZSA6c291cmNlOmBNaXNjL05FV1NgIGZpbGUuCisKKy4uIG5vdGU6OgorCisgICBQcmVyZWxlYXNlIHVzZXJzIHNob3VsZCBiZSBhd2FyZSB0aGF0IHRoaXMgZG9jdW1lbnQgaXMgY3VycmVudGx5IGluIGRyYWZ0CisgICBmb3JtLiBJdCB3aWxsIGJlIHVwZGF0ZWQgc3Vic3RhbnRpYWxseSBhcyBQeXRob24gMy41IG1vdmVzIHRvd2FyZHMgcmVsZWFzZSwKKyAgIHNvIGl0J3Mgd29ydGggY2hlY2tpbmcgYmFjayBldmVuIGFmdGVyIHJlYWRpbmcgZWFybGllciB2ZXJzaW9ucy4KKworCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDQ3OGAgLSBQeXRob24gMy41IFJlbGVhc2UgU2NoZWR1bGUKKworCitTdW1tYXJ5IC0tIFJlbGVhc2UgaGlnaGxpZ2h0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gVGhpcyBzZWN0aW9uIHNpbmdsZXMgb3V0IHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VzIGluIFB5dGhvbiAzLjUuCisgICBCcmV2aXR5IGlzIGtleS4KKworTmV3IHN5bnRheCBmZWF0dXJlczoKKworKiA6cGVwOmA0NjVgLCBhIG5ldyBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3I6IGBgYSBAIGJgYC4KKyogOnBlcDpgNDkyYCwgY29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXguCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgemlwYXBwYDogOnJlZjpgSW1wcm92aW5nIFB5dGhvbiBaSVAgQXBwbGljYXRpb24gU3VwcG9ydAorICA8d2hhdHNuZXctemlwYXBwPmAgKDpwZXA6YDQ0MWApLgorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogYGBieXRlcyAlIGFyZ3NgYCwgYGBieXRlYXJyYXkgJSBhcmdzYGA6IDpwZXA6YDQ2MWAgLSBBZGRpbmcgYGAlYGAgZm9ybWF0dGluZworICB0byBieXRlcyBhbmQgYnl0ZWFycmF5CisqIGBgYidceGYwXHg5Zlx4OTBceDhkJy5oZXgoKWBgLCBgYGJ5dGVhcnJheShiJ1x4ZjBceDlmXHg5MFx4OGQnKS5oZXgoKWBgLAorICBgYG1lbW9yeXZpZXcoYidceGYwXHg5Zlx4OTBceDhkJykuaGV4KClgYDogOmlzc3VlOmA5OTUxYCAtIEEgYGBoZXhgYCBtZXRob2QKKyAgaGFzIGJlZW4gYWRkZWQgdG8gYnl0ZXMsIGJ5dGVhcnJheSwgYW5kIG1lbW9yeXZpZXcuCisKK0ltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBXaGVuIHRoZSBgYExDX1RZUEVgYCBsb2NhbGUgaXMgdGhlIFBPU0lYIGxvY2FsZSAoYGBDYGAgbG9jYWxlKSwKKyAgOnB5OmRhdGE6YHN5cy5zdGRpbmAgYW5kIDpweTpkYXRhOmBzeXMuc3Rkb3V0YCBhcmUgbm93IHVzaW5nIHRoZQorICBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yIGhhbmRsZXIsIGluc3RlYWQgb2YgdGhlIGBgc3RyaWN0YGAgZXJyb3IgaGFuZGxlcgorICAoOmlzc3VlOmAxOTk3N2ApLgorCisqIDpwZXA6YDQ4OGAsIHRoZSBlbGltaW5hdGlvbiBvZiBgYC5weW9gYCBmaWxlcy4KKyogOnBlcDpgNDg5YCwgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gb2YgZXh0ZW5zaW9uIG1vZHVsZXMuCisKK1NpZ25pZmljYW50bHkgSW1wcm92ZWQgTGlicmFyeSBNb2R1bGVzOgorCisqIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgIGlzIG5vdyBpbXBsZW1lbnRlZCBpbiBDLCB3aGljaCBpbXByb3ZlcworICBpdHMgcGVyZm9ybWFuY2UgYmV0d2VlbiA0eCB0byAxMDB4IHRpbWVzLiAgQ29udHJpYnV0ZWQgYnkgRXJpYyBTbm93IGluCisgIDppc3N1ZTpgMTY5OTFgLgorCisqIFlvdSBtYXkgbm93IHBhc3MgYnl0ZXMgdG8gdGhlIDptb2Q6YHRlbXBmaWxlYCBtb2R1bGUncyBBUElzIGFuZCBpdCB3aWxsCisgIHJldHVybiB0aGUgdGVtcG9yYXJ5IHBhdGhuYW1lIGFzIGJ5dGVzIGluc3RlYWQgb2Ygc3RyLiAgSXQgYWxzbyBhY2NlcHRzCisgIGEgdmFsdWUgb2YgYGBOb25lYGAgb24gcGFyYW1ldGVycyB3aGVyZSBvbmx5IHN0ciB3YXMgYWNjZXB0ZWQgaW4gdGhlIHBhc3QgdG8KKyAgZG8gdGhlIHJpZ2h0IHRoaW5nIGJhc2VkIG9uIHRoZSB0eXBlcyBvZiB0aGUgb3RoZXIgaW5wdXRzLiAgVHdvIGZ1bmN0aW9ucywKKyAgOmZ1bmM6YGdldHRlbXBkaXJiYCBhbmQgOmZ1bmM6YGdldHRlbXBwcmVmaXhiYCwgaGF2ZSBiZWVuIGFkZGVkIHRvIGdvIGFsb25nCisgIHdpdGggdGhpcy4gIFRoaXMgYmVoYXZpb3IgbWF0Y2hlcyB0aGF0IG9mIHRoZSA6bW9kOmBvc2AgQVBJcy4KKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIE5vbmUgeWV0LgorCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcy4KKworCisuLiBQRVAtc2l6ZWQgaXRlbXMgbmV4dC4KKworLi4gX3BlcC00WFg6CisKKy4uIFBFUCA0WFg6IFZpcnR1YWwgRW52aXJvbm1lbnRzCisuLiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKy4uIChJbXBsZW1lbnRlZCBieSBGb28gQmFyLikKKworLi4gLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0WFhgIC0gUHl0aG9uIFZpcnR1YWwgRW52aXJvbm1lbnRzCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2FybCBNZXllcgorCisKK1BFUCA0OTIgLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBQRVAgYWRkZWQgZGVkaWNhdGVkIHN5bnRheCBmb3IgZGVjbGFyaW5nIDp0ZXJtOmBjb3JvdXRpbmVzIDxjb3JvdXRpbmU+YCwKKzprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbnMsIG5ldyBhc3luY2hyb25vdXMgOmtleXdvcmQ6YGFzeW5jIGZvcmAKK2FuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAgc3RhdGVtZW50cy4KKworRXhhbXBsZTo6CisKKyAgICBhc3luYyBkZWYgcmVhZF9kYXRhKGRiKToKKyAgICAgICAgYXN5bmMgd2l0aCBkYi50cmFuc2FjdGlvbigpOgorICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGRiLmZldGNoKCdTRUxFQ1QgLi4uJykKKworUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDkyYCAtLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorCisKK1BFUCA0NjEgLSBGb3JtYXR0aW5nIHN1cHBvcnQgZm9yIGJ5dGVzIGFuZCBieXRlYXJyYXkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBQRVAgcHJvcG9zZXMgYWRkaW5nICUgZm9ybWF0dGluZyBvcGVyYXRpb25zIHNpbWlsYXIgdG8gUHl0aG9uIDIncyBgYHN0cmBgCit0eXBlIHRvIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCisKK0V4YW1wbGVzOjoKKworICAgID4+PiBiJ0hlbGxvICVzIScgJSBiJ1dvcmxkJworICAgIGInSGVsbG8gV29ybGQhJworICAgID4+PiBiJ3g9JWkgeT0lZicgJSAoMSwgMi41KQorICAgIGIneD0xIHk9Mi41MDAwMDAnCisKK1VuaWNvZGUgaXMgbm90IGFsbG93ZWQgZm9yIGBgJXNgYCwgYnV0IGl0IGlzIGFjY2VwdGVkIGJ5IGBgJWFgYCAoZXF1aXZhbGVudCBvZgorYGByZXByKG9iaikuZW5jb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJylgYCk6OgorCisgICAgPj4+IGInSGVsbG8gJXMhJyAlICdXb3JsZCcKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgIFR5cGVFcnJvcjogJWIgcmVxdWlyZXMgYnl0ZXMsIG9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgX19ieXRlc19fLCBub3QgJ3N0cicKKyAgICA+Pj4gYidwcmljZTogJWEnICUgJzEw4oKsJworICAgIGIicHJpY2U6ICcxMFxcdTIwYWMnIgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDYxYCAtLSBBZGRpbmcgJSBmb3JtYXR0aW5nIHRvIGJ5dGVzIGFuZCBieXRlYXJyYXkKKworCitQRVAgNDY1IC0gQSBkZWRpY2F0ZWQgaW5maXggb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBQRVAgcHJvcG9zZXMgYSBuZXcgYmluYXJ5IG9wZXJhdG9yIHRvIGJlIHVzZWQgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiwKK2NhbGxlZCBgYEBgYC4gKE1uZW1vbmljOiBgYEBgYCBpcyBgYCpgYCBmb3IgbUFUcmljZXMuKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDY1YCAtLSBBIGRlZGljYXRlZCBpbmZpeCBvcGVyYXRvciBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uCisKKworUEVQIDQ3MSAtIG9zLnNjYW5kaXIoKSBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0NzFgIGFkZHMgYSBuZXcgZGlyZWN0b3J5IGl0ZXJhdGlvbiBmdW5jdGlvbiwgOmZ1bmM6YG9zLnNjYW5kaXJgLAordG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuIEFkZGl0aW9uYWxseSwgOmZ1bmM6YG9zLndhbGtgIGlzIG5vdworaW1wbGVtZW50ZWQgdXNpbmcgOmZ1bmM6YG9zLnNjYW5kaXJgLCB3aGljaCBzcGVlZHMgaXQgdXAgYnkgMy01IHRpbWVzCitvbiBQT1NJWCBzeXN0ZW1zIGFuZCBieSA3LTIwIHRpbWVzIG9uIFdpbmRvd3Mgc3lzdGVtcy4KKworUEVQIGFuZCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGJ5IEJlbiBIb3l0IHdpdGggdGhlIGhlbHAgb2YgVmljdG9yIFN0aW5uZXIuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NzFgIC0tIG9zLnNjYW5kaXIoKSBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeQorICAgaXRlcmF0b3IKKworCitQRVAgNDc1OiBSZXRyeSBzeXN0ZW0gY2FsbHMgZmFpbGluZyB3aXRoIEVJTlRSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ3NWAgYWRkcyBzdXBwb3J0IGZvciBhdXRvbWF0aWMgcmV0cnkgb2Ygc3lzdGVtIGNhbGxzIGZhaWxpbmcgd2l0aAorOnB5OmRhdGE6YH5lcnJuby5FSU5UUmA6IHRoaXMgbWVhbnMgdGhhdCB1c2VyIGNvZGUgZG9lc24ndCBoYXZlIHRvIGRlYWwgd2l0aAorRUlOVFIgb3IgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgbWFudWFsbHksIGFuZCBzaG91bGQgbWFrZSBpdCBtb3JlIHJvYnVzdAorYWdhaW5zdCBhc3luY2hyb25vdXMgc2lnbmFsIHJlY2VwdGlvbi4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ3NWAgLS0gUmV0cnkgc3lzdGVtIGNhbGxzIGZhaWxpbmcgd2l0aCBFSU5UUgorCisKK1BFUCA0Nzk6IENoYW5nZSBTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0NzlgIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGdlbmVyYXRvcnM6IHdoZW4gYSA6ZXhjOmBTdG9wSXRlcmF0aW9uYAorZXhjZXB0aW9uIGlzIHJhaXNlZCBpbnNpZGUgYSBnZW5lcmF0b3IsIGl0IGlzIHJlcGxhY2VkIHdpdGggYQorOmV4YzpgUnVudGltZUVycm9yYC4gIFRvIGVuYWJsZSB0aGUgZmVhdHVyZSBhIGBgX19mdXR1cmVfX2BgIGltcG9ydCBzaG91bGQKK2JlIHVzZWQ6OgorCisgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorCitXaXRob3V0IGEgYGBfX2Z1dHVyZV9fYGAgaW1wb3J0LCBhIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgIHdpbGwgYmUKK3JhaXNlZC4KKworUEVQIHdyaXR0ZW4gYnkgQ2hyaXMgQW5nZWxpY28gYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5CitDaHJpcyBBbmdlbGljbywgWXVyeSBTZWxpdmFub3YgYW5kIE5pY2sgQ29naGxhbi4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ3OWAgLS0gQ2hhbmdlIFN0b3BJdGVyYXRpb24gaGFuZGxpbmcgaW5zaWRlIGdlbmVyYXRvcnMKKworCitQRVAgNDg2OiBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODZgIG1ha2VzIHRoZSBXaW5kb3dzIGxhdW5jaGVyIChzZWUgOnBlcDpgMzk3YCkgYXdhcmUgb2YgYW4gYWN0aXZlCit2aXJ0dWFsIGVudmlyb25tZW50LiBXaGVuIHRoZSBkZWZhdWx0IGludGVycHJldGVyIHdvdWxkIGJlIHVzZWQgYW5kIHRoZQorYGBWSVJUVUFMX0VOVmBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlIGludGVycHJldGVyIGluIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIHVzZWQuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDg2YCAtLSBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKworCitQRVAgNDg4OiBFbGltaW5hdGlvbiBvZiBQWU8gZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODhgIGRvZXMgYXdheSB3aXRoIHRoZSBjb25jZXB0IG9mIGBgLnB5b2BgIGZpbGVzLiBUaGlzIG1lYW5zIHRoYXQKK2BgLnB5Y2BgIGZpbGVzIHJlcHJlc2VudCBib3RoIHVub3B0aW1pemVkIGFuZCBvcHRpbWl6ZWQgYnl0ZWNvZGUuIFRvIHByZXZlbnQgdGhlCituZWVkIHRvIGNvbnN0YW50bHkgcmVnZW5lcmF0ZSBieXRlY29kZSBmaWxlcywgYGAucHljYGAgZmlsZXMgbm93IGhhdmUgYW4KK29wdGlvbmFsIGBgb3B0LWBgIHRhZyBpbiB0aGVpciBuYW1lIHdoZW4gdGhlIGJ5dGVjb2RlIGlzIG9wdGltaXplZC4gVGhpcyBoYXMgdGhlCitzaWRlLWVmZmVjdCBvZiBubyBtb3JlIGJ5dGVjb2RlIGZpbGUgbmFtZSBjbGFzaGVzIHdoZW4gcnVubmluZyB1bmRlciBlaXRoZXIKK2BgLU9gYCBvciBgYC1PT2BgLiBDb25zZXF1ZW50bHksIGJ5dGVjb2RlIGZpbGVzIGdlbmVyYXRlZCBmcm9tIGBgLU9gYCwgYW5kCitgYC1PT2BgIG1heSBub3cgZXhpc3Qgc2ltdWx0YW5lb3VzbHkuIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAKK2hhcyBhbiB1cGRhdGVkIEFQSSB0byBoZWxwIHdpdGggdGhpcyBjaGFuZ2UuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODhgIC0tIEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworCisKK1BFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg5YCB1cGRhdGVzIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlCit0d28gc3RlcCBtb2R1bGUgbG9hZGluZyBtZWNoYW5pc20gaW50cm9kdWNlZCBieSA6cGVwOmA0NTFgIGluIFB5dGhvbiAzLjQuCisKK1RoaXMgY2hhbmdlIGJyaW5ncyB0aGUgaW1wb3J0IHNlbWFudGljcyBvZiBleHRlbnNpb24gbW9kdWxlcyB0aGF0IG9wdC1pbiB0bwordXNpbmcgdGhlIG5ldyBtZWNoYW5pc20gbXVjaCBjbG9zZXIgdG8gdGhvc2Ugb2YgUHl0aG9uIHNvdXJjZSBhbmQgYnl0ZWNvZGUKK21vZHVsZXMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBhbnkgdmFsaWQgaWRlbnRpZmllciBhcyBhIG1vZHVsZSBuYW1lLAorcmF0aGVyIHRoYW4gYmVpbmcgcmVzdHJpY3RlZCB0byBBU0NJSS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ4OGAgLS0gTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbgorCitQRVAgNDg1OiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIGFwcHJveGltYXRlIGVxdWFsaXR5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ4NWAgYWRkcyB0aGUgOmZ1bmM6YG1hdGguaXNjbG9zZWAgYW5kIDpmdW5jOmBjbWF0aC5pc2Nsb3NlYAorZnVuY3Rpb25zIHdoaWNoIHRlbGwgd2hldGhlciB0d28gdmFsdWVzIGFyZSBhcHByb3hpbWF0ZWx5IGVxdWFsIG9yCisiY2xvc2UiIHRvIGVhY2ggb3RoZXIuICBXaGV0aGVyIG9yIG5vdCB0d28gdmFsdWVzIGFyZSBjb25zaWRlcmVkCitjbG9zZSBpcyBkZXRlcm1pbmVkIGFjY29yZGluZyB0byBnaXZlbiBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgdG9sZXJhbmNlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ4NWAgLS0gQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorCitPdGhlciBMYW5ndWFnZSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgc21hbGxlciBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvcmUgUHl0aG9uIGxhbmd1YWdlIGFyZToKKworKiBBZGRlZCB0aGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlcnMuICBUaGUgYGAnYmFja3NsYXNocmVwbGFjZSdgYAorICBlcnJvciBoYW5kbGVycyBub3cgd29ya3Mgd2l0aCBkZWNvZGluZyBhbmQgdHJhbnNsYXRpbmcuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTk2NzZgIGFuZCA6aXNzdWU6YDIyMjg2YC4pCisKKyogVGhlIDpvcHRpb246YC1iYCBvcHRpb24gbm93IGFmZmVjdHMgY29tcGFyaXNvbnMgb2YgOmNsYXNzOmBieXRlc2Agd2l0aAorICA6Y2xhc3M6YGludGAuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNjgxYCkKKworKiBOZXcgS2F6YWtoIDpyZWY6YGNvZGVjIDxzdGFuZGFyZC1lbmNvZGluZ3M+YCBgYGt6MTA0OGBgLiAgKENvbnRyaWJ1dGVkIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjY4MmAuKQorCisqIFByb3BlcnR5IGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0YWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKKyAgOmZ1bmM6YGNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIGRvY3N0cmluZ3MuCisgIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjQwNjRgLikKKworKiBOZXcgVGFqaWsgOnJlZjpgY29kZWMgPHN0YW5kYXJkLWVuY29kaW5ncz5gIGBga29pOF90YGAuICAoQ29udHJpYnV0ZWQgYnkKKyAgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNjgxYC4pCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKKy4uIF93aGF0c25ldy16aXBhcHA6CisKK3ppcGFwcAorLS0tLS0tCisKK1RoZSBuZXcgOm1vZDpgemlwYXBwYCBtb2R1bGUgKHNwZWNpZmllZCBpbiA6cGVwOmA0NDFgKSBwcm92aWRlcyBhbiBBUEkgYW5kCitjb21tYW5kIGxpbmUgdG9vbCBmb3IgY3JlYXRpbmcgZXhlY3V0YWJsZSBQeXRob24gWmlwIEFwcGxpY2F0aW9ucywgd2hpY2gKK3dlcmUgaW50cm9kdWNlZCBpbiBQeXRob24gMi42IGluIDppc3N1ZTpgMTczOTQ2OGAgYnV0IHdoaWNoIHdlcmUgbm90IHdlbGwKK3B1YmxpY2lzZWQsIGVpdGhlciBhdCB0aGUgdGltZSBvciBzaW5jZS4KKworV2l0aCB0aGUgbmV3IG1vZHVsZSwgYnVuZGxpbmcgeW91ciBhcHBsaWNhdGlvbiBpcyBhcyBzaW1wbGUgYXMgcHV0dGluZyBhbGwKK3RoZSBmaWxlcywgaW5jbHVkaW5nIGEgYGBfX21haW5fXy5weWBgIGZpbGUsIGludG8gYSBkaXJlY3RvcnkgYGBteWFwcGBgCithbmQgcnVubmluZzo6CisKKyAgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAKKyAgICAkIHB5dGhvbiBteWFwcC5weXoKKworCitJbXByb3ZlZCBNb2R1bGVzCis9PT09PT09PT09PT09PT09CisKK2FyZ3BhcnNlCistLS0tLS0tLQorCisqIDpjbGFzczpgfmFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYCBub3cgYWxsb3dzIHRvIGRpc2FibGUKKyAgOnJlZjpgYWJicmV2aWF0ZWQgdXNhZ2UgPHByZWZpeC1tYXRjaGluZz5gIG9mIGxvbmcgb3B0aW9ucyBieSBzZXR0aW5nCisgIDpyZWY6YGFsbG93X2FiYnJldmAgdG8gYGBGYWxzZWBgLgorICAoQ29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gUGF1Z2gsIFN0ZXZlbiBCZXRoYXJkLCBwYXVsIGozIGFuZCBEYW5pZWwgRXJpa3Nzb24uKQorCitjZ2kKKy0tLQorCisqIDpjbGFzczpgfmNnaS5GaWVsZFN0b3JhZ2VgIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgorICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIwMjg5YC4pCisKK2NtYXRoCistLS0tLQorCisqIDpmdW5jOmBjbWF0aC5pc2Nsb3NlYCBmdW5jdGlvbiBhZGRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIEJhcmtlciBhbmQgVGFsIEVpbmF0IGluIDppc3N1ZTpgMjQyNzBgLikKKworCitjb2RlCistLS0tCisKKyogVGhlIDpmdW5jOmBjb2RlLkludGVyYWN0aXZlSW50ZXJwcmV0ZXIuc2hvd3RyYWNlYmFja2AgbWV0aG9kIG5vdyBwcmludHMKKyAgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2ssIGp1c3QgbGlrZSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCisgIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAxNzQ0MmAuKQorCitjb2xsZWN0aW9ucworLS0tLS0tLS0tLS0KKworKiBZb3UgY2FuIG5vdyB1cGRhdGUgZG9jc3RyaW5ncyBwcm9kdWNlZCBieSA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWA6OgorCisgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgUG9pbnQuX19kb2NfXyA9ICdvcmRlcmVkIHBhaXInCisgICAgUG9pbnQueC5fX2RvY19fID0gJ2Fic2Npc3NhJworICAgIFBvaW50LnkuX19kb2NfXyA9ICdvcmRpbmF0ZScKKworICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDI0MDY0YC4pCisKK2NvbXBpbGVhbGwKKy0tLS0tLS0tLS0KKworKiA6ZnVuYzpgY29tcGlsZWFsbC5jb21waWxlX2RpcmAgYW5kIDptb2Q6YGNvbXBpbGVhbGxgJ3MgY29tbWFuZC1saW5lIGludGVyZmFjZQorICBjYW4gbm93IGRvIHBhcmFsbGVsIGJ5dGVjb2RlIGNvbXBpbGF0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTYxMDRgLikKKworY29udGV4dGxpYgorLS0tLS0tLS0tLQorCisqIFRoZSBuZXcgOmZ1bmM6YGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyYCBjb250ZXh0IG1hbmFnZXIoc2ltaWxhciB0bworICA6ZnVuYzpgY29udGV4dGxpYi5yZWRpcmVjdF9zdGRvdXRgKSBtYWtlcyBpdCBlYXNpZXIgZm9yIHV0aWxpdHkgc2NyaXB0cyB0bworICBoYW5kbGUgaW5mbGV4aWJsZSBBUElzIHRoYXQgd3JpdGUgdGhlaXIgb3V0cHV0IHRvIDpkYXRhOmBzeXMuc3RkZXJyYCBhbmQKKyAgZG9uJ3QgcHJvdmlkZSBhbnkgb3B0aW9ucyB0byByZWRpcmVjdCBpdC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyMjM4OWAuKQorCitjdXJzZXMKKy0tLS0tLQorKiBUaGUgbmV3IDpmdW5jOmBjdXJzZXMudXBkYXRlX2xpbmVzX2NvbHNgIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHZhcmlhYmxlcworICA6ZW52dmFyOmBjdXJzZXMuTElORVNgIGFuZCA6ZW52dmFyOmBjdXJzZXMuQ09MU2AuCisKK2RpZmZsaWIKKy0tLS0tLS0KKworKiBUaGUgY2hhcnNldCBvZiB0aGUgSFRNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgOm1ldGg6YGRpZmZsaWIuSHRtbERpZmYubWFrZV9maWxlYAorICBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgYnkgdXNpbmcgKmNoYXJzZXQqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuICBUaGUgZGVmYXVsdAorICBjaGFyc2V0IG9mIEhUTUwgZG9jdW1lbnQgY2hhbmdlZCBmcm9tIGBgJ0lTTy04ODU5LTEnYGAgdG8gYGAndXRmLTgnYGAuCisgIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjA1MmAuKQorCisqIEl0J3Mgbm93IHBvc3NpYmxlIHRvIGNvbXBhcmUgbGlzdHMgb2YgYnl0ZSBzdHJpbmdzIHdpdGgKKyAgOmZ1bmM6YGRpZmZsaWIuZGlmZl9ieXRlc2AgKGZpeGVzIGEgcmVncmVzc2lvbiBmcm9tIFB5dGhvbiAyKS4KKworZGlzdHV0aWxzCistLS0tLS0tLS0KKworKiBUaGUgYGBidWlsZGBgIGFuZCBgYGJ1aWxkX2V4dGBgIGNvbW1hbmRzIG5vdyBhY2NlcHQgYSBgYC1qYGAKKyAgb3B0aW9uIHRvIGVuYWJsZSBwYXJhbGxlbCBidWlsZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgNTMwOWAuKQorCisqIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBMWk1BIGNvbXByZXNzaW9uLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE2MzE0YC4pCisKK2RvY3Rlc3QKKy0tLS0tLS0KKworKiA6ZnVuYzpgZG9jdGVzdC5Eb2NUZXN0U3VpdGVgIHJldHVybnMgYW4gZW1wdHkgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmCisgICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YFZhbHVlRXJyb3JgLgorICAoQ29udHJpYnV0ZWQgYnkgR2xlbm4gSm9uZXMgaW4gOmlzc3VlOmAxNTkxNmAuKQorCitlbWFpbAorLS0tLS0KKworKiBBIG5ldyBwb2xpY3kgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tYW5nbGVfZnJvbV9gIGNvbnRyb2xzCisgIHdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAiRnJvbSAiIGluIGVtYWlsIGJvZGllcyBhcmUgcHJlZml4ZWQgd2l0aAorICBhICc+JyBjaGFyYWN0ZXIgYnkgZ2VuZXJhdG9ycy4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvcgorICA6YXR0cjpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVyIHBvbGljaWVzLgorICAoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGluIDppc3N1ZTpgMjAwOThgLikKKworKiBBIG5ldyBtZXRob2QgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb25gIHByb3ZpZGVzCisgIGVhc3kgYWNjZXNzIHRvIGEgY2Fub25pY2FsIHZhbHVlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gCisgIGhlYWRlciAoYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gc3VjaCBoZWFkZXIpLiAgKENvbnRyaWJ1dGVkIGJ5IEFiaGlsYXNoIFJhagorICBpbiA6aXNzdWU6YDIxMDgzYC4pCisKKyogQSBuZXcgcG9saWN5IG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBjYW4gYmUgc2V0CisgIGBgVHJ1ZWBgIHRvIGVuY29kZSBlbWFpbCBoZWFkZXJzIHVzaW5nIHRoZSB1dGY4IGNoYXJzZXQgaW5zdGVhZCBvZiB1c2luZworICBlbmNvZGVkIHdvcmRzLiAgVGhpcyBhbGxvd3MgYGBNZXNzYWdlc2BgIHRvIGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8KKyAgOnJmYzpgNjUzMmAgYW5kIHVzZWQgd2l0aCBhbiBTTVRQIHNlcnZlciB0aGF0IHN1cHBvcnRzIHRoZSA6cmZjOmA2NTMxYAorICBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBpbiA6aXNzdWU6YDI0MjExYC4pCisKK2dsb2IKKy0tLS0KKworKiA6ZnVuYzpgfmdsb2IuaWdsb2JgIGFuZCA6ZnVuYzpgfmdsb2IuZ2xvYmAgbm93IHN1cHBvcnQgcmVjdXJzaXZlIHNlYXJjaCBpbgorICBzdWJkaXJlY3RvcmllcyB1c2luZyB0aGUgImBgKipgYCIgcGF0dGVybi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMzk2OGAuKQorCitpZGxlbGliIGFuZCBJRExFCistLS0tLS0tLS0tLS0tLS0tCisKK1NpbmNlIGlkbGVsaWIgaW1wbGVtZW50cyB0aGUgSURMRSBzaGVsbCBhbmQgZWRpdG9yIGFuZCBpcyBub3QgaW50ZW5kZWQgZm9yCitpbXBvcnQgYnkgb3RoZXIgcHJvZ3JhbXMsIGl0IGdldHMgaW1wcm92ZW1lbnRzIHdpdGggZXZlcnkgcmVsZWFzZS4gU2VlCis6ZmlsZTpgTGliL2lkbGVsaWIvTkVXUy50eHRgIGZvciBhIGN1bXVsYXRpdmUgbGlzdCBvZiBjaGFuZ2VzIHNpbmNlIDMuNC4wLAorYXMgd2VsbCBhcyBjaGFuZ2VzIG1hZGUgaW4gZnV0dXJlIDMuNS54IHJlbGVhc2VzLiBUaGlzIGZpbGUgaXMgYWxzbyBhdmFpbGFibGUKK2Zyb20gdGhlIElETEUgSGVscCAtPiBBYm91dCBJZGxlIGRpYWxvZy4KKworaW1hcGxpYgorLS0tLS0tLQorCisqIDpjbGFzczpgSU1BUDRgIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLiAgV2hlbiB1c2VkIGluIGEKKyAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwgdGhlIElNQVA0IGBgTE9HT1VUYGAgY29tbWFuZCB3aWxsIGJlIGNhbGxlZAorICBhdXRvbWF0aWNhbGx5IGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLiAgKENvbnRyaWJ1dGVkIGJ5IFRhcmVrIFppYWTDqSBhbmQKKyAgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDQ5NzJgLikKKworKiA6bW9kOmBpbWFwbGliYCBub3cgc3VwcG9ydHMgOnJmYzpgNTE2MWA6IHRoZSA6bWV0aDpgfmltYXBsaWIuSU1BUDQuZW5hYmxlYAorICBleHRlbnNpb24pLCBhbmQgOnJmYzpgNjg1NWA6IHV0Zi04IHN1cHBvcnQgKGludGVybmF0aW9uYWxpemVkIGVtYWlsLCB2aWEgdGhlCisgIGBgVVRGOD1BQ0NFUFRgYCBhcmd1bWVudCB0byA6bWV0aDpgfmltYXBsaWIuSU1BUDQuZW5hYmxlYCkuICBBIG5ldyBhdHRyaWJ1dGUsCisgIDphdHRyOmB+aW1hcGxpYi5JTUFQNC51dGY4X2VuYWJsZWRgLCB0cmFja3Mgd2hldGhlciBvciBub3QgOnJmYzpgNjg1NWAKKyAgc3VwcG9ydCBpcyBlbmFibGVkLiAgTWlsYW4gT2JlcmtpcmNoLCBSLiBEYXZpZCBNdXJyYXksIGFuZCBNYWNpZWogU3p1bGlrIGluCisgIDppc3N1ZTpgMjE4MDBgLikKKworKiA6bW9kOmBpbWFwbGliYCBub3cgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSSBzdHJpbmcgdXNlcm5hbWVzIGFuZAorICBwYXNzd29yZHMgdXNpbmcgYGBVVEY4YGAsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBSRkNzLiAgKENvbnRyaWJ1dGVkIGJ5IE1pbGFuCisgIE9iZXJraXJjaCBpbiA6aXNzdWU6YDIxODAwYC4pCisKK2ltZ2hkcgorLS0tLS0tCisKKyogOmZ1bmM6YH5pbWdoZHIud2hhdGAgbm93IHJlY29nbml6ZXMgdGhlIGBPcGVuRVhSIDxodHRwOi8vd3d3Lm9wZW5leHIuY29tPmBfCisgIGZvcm1hdC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gVmlnbmFsaSBhbmQgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjAyOTVgLikKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworKiA6Y2xhc3M6YGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXJgIGFsbG93cyBmb3IgdGhlIGxhenkgbG9hZGluZyBvZiBtb2R1bGVzIGluCisgIGFwcGxpY2F0aW9ucyB3aGVyZSBzdGFydHVwIHRpbWUgaXMgcGFyYW1vdW50LgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTc2MjFgLikKKworKiA6ZnVuYzpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLnNvdXJjZV90b19jb2RlYCBpcyBub3cgYQorICBzdGF0aWMgbWV0aG9kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aCBzb3VyY2UgY29kZSBpbiBhIHN0cmluZy4KKyAgV2l0aCBhIG1vZHVsZSBvYmplY3QgdGhhdCB5b3Ugd2FudCB0byBpbml0aWFsaXplIHlvdSBjYW4gdGhlbiB1c2UKKyAgYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYCB0byBleGVjdXRlIHRoZSBjb2RlIGluIHRoZSBtb2R1bGUuCisKKyogOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIGlzIG5vdyB0aGUgcHJlZmVycmVkIHdheSB0byBjcmVhdGUgYQorICBuZXcgbW9kdWxlLiBDb21wYXJlZCB0byA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgLCB0aGlzIG5ldyBmdW5jdGlvbiB3aWxsIHNldAorICB0aGUgdmFyaW91cyBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRoZSBwYXNzZWQtaW4gc3BlYyBvYmplY3QuCisKK2luc3BlY3QKKy0tLS0tLS0KKworKiA6Y2xhc3M6YGluc3BlY3QuU2lnbmF0dXJlYCBhbmQgOmNsYXNzOmBpbnNwZWN0LlBhcmFtZXRlcmAgYXJlIG5vdworICBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLiAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjA3MjZgCisgIGFuZCA6aXNzdWU6YDIwMzM0YC4pCisKKyogTmV3IG1ldGhvZCA6bWV0aDpgaW5zcGVjdC5Cb3VuZEFyZ3VtZW50cy5hcHBseV9kZWZhdWx0c2AuICAoQ29udHJpYnV0ZWQKKyAgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDE5MGAuKQorCisqIE5ldyBjbGFzcyBtZXRob2QgOm1ldGg6YGluc3BlY3QuU2lnbmF0dXJlLmZyb21fY2FsbGFibGVgLCB3aGljaCBtYWtlcworICBzdWJjbGFzc2luZyBvZiA6Y2xhc3M6YH5pbnNwZWN0LlNpZ25hdHVyZWAgZWFzaWVyLiAgKENvbnRyaWJ1dGVkCisgIGJ5IFl1cnkgU2VsaXZhbm92IGFuZCBFcmljIFNub3cgaW4gOmlzc3VlOmAxNzM3M2AuKQorCisqIE5ldyBhcmd1bWVudCBgYGZvbGxvd193cmFwcGVkYGAgZm9yIDpmdW5jOmBpbnNwZWN0LnNpZ25hdHVyZWAuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNjkxYC4pCisKKyogTmV3IDpmdW5jOmB+aW5zcGVjdC5pc2Nvcm91dGluZWAsIDpmdW5jOmB+aW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uYCwKKyAgYW5kIDpmdW5jOmB+aW5zcGVjdC5pc2F3YWl0YWJsZWAgZnVuY3Rpb25zLiAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92CisgIGluIDppc3N1ZTpgMjQwMTdgLikKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworKiA6Y2xhc3M6YGlwYWRkcmVzcy5JUHY0TmV0d29ya2AgYW5kIDpjbGFzczpgaXBhZGRyZXNzLklQdjZOZXR3b3JrYCBub3cKKyAgYWNjZXB0IGFuIGBgKGFkZHJlc3MsIG5ldG1hc2spYGAgdHVwbGUgYXJndW1lbnQsIHNvIGFzIHRvIGVhc2lseSBjb25zdHJ1Y3QKKyAgbmV0d29yayBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IFBldGVyIE1vb2R5CisgIGFuZCBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDE2NTMxYC4pCisKK2pzb24KKy0tLS0KKworKiBUaGUgb3V0cHV0IG9mIDptb2Q6YGpzb24udG9vbGAgY29tbWFuZCBsaW5lIGludGVyZmFjZSBpcyBub3cgaW4gdGhlIHNhbWUKKyAgb3JkZXIgYXMgdGhlIGlucHV0LiBVc2UgdGhlIDpvcHRpb246YC0tc29ydC1rZXlzYCBvcHRpb24gdG8gc29ydCB0aGUgb3V0cHV0CisgIG9mIGRpY3Rpb25hcmllcyBhbHBoYWJldGljYWxseSBieSBrZXkuICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbgorICA6aXNzdWU6YDIxNjUwYC4pCisKKyogSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgOmV4YzpganNvbi5KU09ORGVjb2RlRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgVmFsdWVFcnJvcmAuICAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxOTM2MWAuKQorCittYXRoCistLS0tCisKKyogOmRhdGE6YG1hdGguaW5mYCBhbmQgOmRhdGE6YG1hdGgubmFuYCBjb25zdGFudHMgYWRkZWQuICAoQ29udHJpYnV0ZWQgYnkgTWFyaworICBEaWNraW5zb24gaW4gOmlzc3VlOmAyMzE4NWAuKQorKiA6ZnVuYzpgbWF0aC5pc2Nsb3NlYCBmdW5jdGlvbiBhZGRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIEJhcmtlciBhbmQgVGFsIEVpbmF0IGluIDppc3N1ZTpgMjQyNzBgLikKKworb3MKKy0tCisKKyogTmV3IDpmdW5jOmBvcy5zY2FuZGlyYCBmdW5jdGlvbiB0aGF0IGV4cG9zZXMgZmlsZSBpbmZvcm1hdGlvbiBmcm9tCisgIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdoZW4gbGlzdGluZyBhIGRpcmVjdG9yeS4gOmZ1bmM6YG9zLnNjYW5kaXJgCisgIHJldHVybnMgYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvCisgIHRoZSBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiAoQ29udHJpYnV0ZWQgYnkgQmVuCisgIEhveXQgd2l0aCB0aGUgaGVscCBvZiBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyNTI0YC4pCisKKyogOmNsYXNzOmBvcy5zdGF0X3Jlc3VsdGAgbm93IGhhcyBhIDphdHRyOmB+b3Muc3RhdF9yZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzYAorICBhdHRyaWJ1dGUgb24gV2luZG93cy4gIChDb250cmlidXRlZCBieSBCZW4gSG95dCBpbiA6aXNzdWU6YDIxNzE5YC4pCisKK29zLnBhdGgKKy0tLS0tLS0KKworKiBOZXcgOmZ1bmM6YH5vcy5wYXRoLmNvbW1vbnBhdGhgIGZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgY29tbW9uIHBhdGggcHJlZml4LgorICBVbmxpa2UgdGhlIDpmdW5jOmB+b3MucGF0aC5jb21tb25wcmVmaXhgIGZ1bmN0aW9uLCBpdCBhbHdheXMgcmV0dXJucyBhIHZhbGlkCisgIHBhdGNoLiAgKENvbnRyaWJ1dGVkIGJ5IFJhZmlrIERyYW91aSBhbmQgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDEwMzk1YC4pCisKK3BpY2tsZQorLS0tLS0tCisKKyogU2VyaWFsaXppbmcgbW9yZSAibG9va3VwYWJsZSIgb2JqZWN0cyAoc3VjaCBhcyB1bmJvdW5kIG1ldGhvZHMgb3IgbmVzdGVkCisgIGNsYXNzZXMpIG5vdyBhcmUgc3VwcG9ydGVkIHdpdGggcGlja2xlIHByb3RvY29scyA8IDQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2MTFgLikKKworcG9wbGliCistLS0tLS0KKworKiBBIG5ldyBjb21tYW5kIDptZXRoOmB+cG9wbGliLlBPUDMudXRmOGAgZW5hYmxlcyA6cmZjOmA2ODU2YAorICAoaW50ZXJuYXRpb25hbGl6ZWQgZW1haWwpIHN1cHBvcnQgaWYgdGhlIFBPUCBzZXJ2ZXIgc3VwcG9ydHMgaXQuICAoQ29udHJpYnV0ZWQKKyAgYnkgTWlsYW4gT2JlcktpcmNoIGluIDppc3N1ZTpgMjE4MDRgLikKKworcmUKKy0tCisKKyogTnVtYmVyIG9mIGNhcHR1cmluZyBncm91cHMgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIG5vIGxvbmdlciBsaW1pdGVkIGJ5IDEwMC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQzN2AuKQorCisqIE5vdyB1bm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGVtcHR5IHN0cmluZ3MgaW4gOmZ1bmM6YHJlLnN1YmAKKyAgYW5kIDpmdW5jOmByZS5zdWJuYC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTUxOTYzOGAuKQorCitzaHV0aWwKKy0tLS0tLQorCisqIDpmdW5jOmB+c2h1dGlsLm1vdmVgIG5vdyBhY2NlcHRzIGEgKmNvcHlfZnVuY3Rpb24qIGFyZ3VtZW50LCBhbGxvd2luZywKKyAgZm9yIGV4YW1wbGUsIDpmdW5jOmB+c2h1dGlsLmNvcHlgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdAorICA6ZnVuYzpgfnNodXRpbC5jb3B5MmAgaWYgdGhlcmUgaXMgYSBuZWVkIHRvIGlnbm9yZSBtZXRhZGF0YS4gIChDb250cmlidXRlZCBieQorICBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAxOTg0MGAuKQorCitzaWduYWwKKy0tLS0tLQorCisqIE9uIFdpbmRvd3MsIDpmdW5jOmBzaWduYWwuc2V0X3dha2V1cF9mZGAgbm93IGFsc28gc3VwcG9ydHMgc29ja2V0IGhhbmRsZXMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMDE4YC4pCisKKyogRGlmZmVyZW50IGNvbnN0YW50cyBvZiA6bW9kOmBzaWduYWxgIG1vZHVsZSBhcmUgbm93IGVudW1lcmF0aW9uIHZhbHVlcyB1c2luZworICB0aGUgOm1vZDpgZW51bWAgbW9kdWxlLiBUaGlzIGFsbG93cyBtZWFuaW5nZnVsIG5hbWVzIHRvIGJlIHByaW50ZWQgZHVyaW5nCisgIGRlYnVnZ2luZywgaW5zdGVhZCBvZiBpbnRlZ2VyIOKAnG1hZ2ljIG51bWJlcnPigJ0uICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvCisgIFJvZG9sYScgaW4gOmlzc3VlOmAyMTA3NmAuKQorCitzbXRwZAorLS0tLS0KKworKiBCb3RoIDpjbGFzczpgfnNtdHBkLlNNVFBTZXJ2ZXJgIGFuZCA6Y2xhc3M6YHNtdHBkLlNNVFBDaGFubmVsYCBub3cgYWNjZXB0IGEKKyAgKmRlY29kZV9kYXRhKiBrZXl3b3JkIHRvIGRldGVybWluZSBpZiB0aGUgREFUQSBwb3J0aW9uIG9mIHRoZSBTTVRQCisgIHRyYW5zYWN0aW9uIGlzIGRlY29kZWQgdXNpbmcgdGhlIGBgdXRmLThgYCBjb2RlYyBvciBpcyBpbnN0ZWFkIHByb3ZpZGVkIHRvCisgIDptZXRoOmB+c210cGQuU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2VgIGFzIGEgYnl0ZSBzdHJpbmcuICBUaGUgZGVmYXVsdAorICBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgCisgIGluIFB5dGhvbiAzLjYuICBJZiAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAsIHRoZQorICA6bWV0aDpgfnNtdHBkLlNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlYCBtZXRob2QgbXVzdCBiZSBwcmVwYXJlZCB0byBhY2NlcHQKKyAga2V5d29yZCBhcmd1bWVudHMuICAoQ29udHJpYnV0ZWQgYnkgTWFjaWVqIFN6dWxpayBpbiA6aXNzdWU6YDE5NjYyYC4pCisKKyogOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgbm93IGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYCBleHRlbnNpb24KKyAgKDpyZmM6YDYxNTJgKSBpZiBpZiAqZGVjb2RlX2RhdGEqIGhhcyBiZWVuIHNldCBgYFRydWVgYC4gIElmIHRoZSBjbGllbnQKKyAgc3BlY2lmaWVzIGBgQk9EWT04QklUTUlNRWBgIG9uIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBpdCBpcyBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgdmlhIHRoZSBgYG1haWxfb3B0aW9uc2BgIGtleXdvcmQuCisgIChDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggYW5kIFIuICBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMTc5NWAuKQorCisqIDpjbGFzczpgfnNtdHBkLlNNVFBTZXJ2ZXJgIG5vdyBzdXBwb3J0cyB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbgorICAoOnJmYzpgNjUzMWA6IEludGVybmF0aW9uYWxpemVkIEVtYWlsKS4gIElmIHRoZSBjbGllbnQgc3BlY2lmaWVkIGBgU01UUFVURjgKKyAgQk9EWT04QklUTUlNRWBgIG9uIHRoZSBgYE1BSUxgYCBjb21tYW5kLCB0aGV5IGFyZSBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgdmlhIHRoZSBgYG1haWxfb3B0aW9uc2BgIGtleXdvcmQuCisgIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAKKyAgbWV0aG9kIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGBgU01UUFVURjhgYCBkYXRhLiAgKENvbnRyaWJ1dGVkIGJ5IE1pbGFuCisgIE9iZXJraXJjaCBpbiA6aXNzdWU6YDIxNzI1YC4pCisKKyogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHByb3ZpZGUsIGRpcmVjdGx5IG9yIHZpYSBuYW1lIHJlc29sdXRpb24sIElQdjYKKyAgYWRkcmVzc2VzIGluIHRoZSA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYCBjb25zdHJ1Y3RvciwgYW5kIGhhdmUgaXQKKyAgc3VjY2Vzc2Z1bGx5IGNvbm5lY3QuICAoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGluIDppc3N1ZTpgMTQ3NThgLikKKworc210cGxpYgorLS0tLS0tLQorCisqIEEgbmV3IDptZXRoOmB+c210cGxpYi5TTVRQLmF1dGhgIG1ldGhvZCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvCisgIGltcGxlbWVudCBjdXN0b20gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1pbGFuIE9iZXJraXJjaCBpbiA6aXNzdWU6YDE1MDE0YC4pCisKKyogQWRkaXRpb25hbCBkZWJ1Z2xldmVsICgyKSBzaG93cyB0aW1lc3RhbXBzIGZvciBkZWJ1ZyBtZXNzYWdlcyBpbgorICA6Y2xhc3M6YHNtdHBsaWIuU01UUGAuICAoQ29udHJpYnV0ZWQgYnkgR2F2aW4gQ2hhcHBlbGwgYW5kIE1hY2llaiBTenVsaWsgaW4KKyAgOmlzc3VlOmAxNjkxNGAuKQorCisqIDptb2Q6YHNtdHBsaWJgIG5vdyBzdXBwb3J0cyA6cmZjOmA2NTMxYCAoU01UUFVURjgpIGluIGJvdGggdGhlCisgIDptZXRoOmB+c210cGxpYi5TTVRQLnNlbmRtYWlsYCBhbmQgOm1ldGg6YH5zbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlYAorICBjb21tYW5kcy4gIChDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggYW5kIFIuIERhdmlkIE11cnJheSBpbgorICA6aXNzdWU6YDIyMDI3YC4pCisKK3NuZGhkcgorLS0tLS0tCisKKyogOmZ1bmM6YH5zbmRoZHIud2hhdGAgYW5kIDpmdW5jOmB+c25kaGRyLndoYXRoZHJgIG5vdyByZXR1cm4KKyAgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE4NjE1YC4pCisKK3NvY2tldAorLS0tLS0tCisKKyogTmV3IDptZXRoOmBzb2NrZXQuc29ja2V0LnNlbmRmaWxlYCBtZXRob2QgYWxsb3dzIHRvIHNlbmQgYSBmaWxlIG92ZXIgYSBzb2NrZXQKKyAgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZSA6ZnVuYzpgb3Muc2VuZGZpbGVgIGZ1bmN0aW9uIG9uIFVOSVggcmVzdWx0aW5nIGluCisgIHVwbG9hZHMgYmVpbmcgZnJvbSAyeCB0byAzeCBmYXN0ZXIgdGhhbiB3aGVuIHVzaW5nIHBsYWluCisgIDptZXRoOmBzb2NrZXQuc29ja2V0LnNlbmRgLgorICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxNzU1MmAuKQorCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKKyogVGhlIG5ldyA6ZnVuYzpgc3VicHJvY2Vzcy5ydW5gIGZ1bmN0aW9uIHJ1bnMgc3VicHJvY2Vzc2VzIGFuZCByZXR1cm5zIGEKKyAgOmNsYXNzOmBzdWJwcm9jZXNzLkNvbXBsZXRlZFByb2Nlc3NgIG9iamVjdC4gIEl0IFByb3ZpZGVzIGEgbW9yZSBjb25zaXN0ZW50CisgIEFQSSB0aGFuIDpmdW5jOmB+c3VicHJvY2Vzcy5jYWxsYCwgOmZ1bmM6YH5zdWJwcm9jZXNzLmNoZWNrX2NhbGxgIGFuZAorICA6ZnVuYzpgfnN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0YC4KKworc3lzCistLS0KKworKiBOZXcgOmZ1bmM6YH5zeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyYCBhbmQgOmZ1bmM6YH5zeXMuZ2V0X2Nvcm91dGluZV93cmFwcGVyYAorICBmdW5jdGlvbnMuICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDAxN2AuKQorCitzeXNjb25maWcKKy0tLS0tLS0tLQorCisqIFRoZSB1c2VyIHNjcmlwdHMgZGlyZWN0b3J5IG9uIFdpbmRvd3MgaXMgbm93IHZlcnNpb25lZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFBhdWwgTW9vcmUgaW4gOmlzc3VlOmAyMzQzN2AuKQorCit0YXJmaWxlCistLS0tLS0tCisKKyogVGhlIDpmdW5jOmB0YXJmaWxlLm9wZW5gIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pCisgIG1vZGUuICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxNzE3YC4pCisKKyogVGhlIDptZXRoOmB+dGFyZmlsZS5UYXJGaWxlLmV4dHJhY3RhbGxgIGFuZCA6bWV0aDpgfnRhcmZpbGUuVGFyRmlsZS5leHRyYWN0YAorICBtZXRob2RzIG5vdyB0YWtlIGEga2V5d29yZCBwYXJhbWV0ZXIgKm51bWVyaWNfb25seSouIElmIHNldCB0byBgYFRydWVgYCwKKyAgdGhlIGV4dHJhY3RlZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZAorICBmcm9tIHRoZSB0YXJmaWxlLiBJZiBzZXQgdG8gYGBGYWxzZWBgICh0aGUgZGVmYXVsdCwgYW5kIHRoZSBiZWhhdmlvciBpbgorICB2ZXJzaW9ucyBwcmlvciB0byAzLjUpLCB0aGV5IHdpbGwgYmUgb3duZWQgYnl0aGUgbmFtZWQgdXNlciBhbmQgZ3JvdXAgaW4gdGhlCisgIHRhcmZpbGUuICAoQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBWb2d0IGFuZCBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjMxOTNgLikKKwordGltZQorLS0tLQorCisqIFRoZSA6ZnVuYzpgdGltZS5tb25vdG9uaWNgIGZ1bmN0aW9uIGlzIG5vdyBhbHdheXMgYXZhaWxhYmxlLiAgKENvbnRyaWJ1dGVkIGJ5CisgIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNDNgLikKKwordGtpbnRlcgorLS0tLS0tLQorCisqIFRoZSA6bW9kOmB0a2ludGVyLl9maXhgIG1vZHVsZSB1c2VkIGZvciBzZXR0aW5nIHVwIHRoZSBUY2wvVGsgZW52aXJvbm1lbnQKKyAgb24gV2luZG93cyBoYXMgYmVlbiByZXBsYWNlZCBieSBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIDptb2Q6YF90a2ludGVyYAorICBtb2R1bGUgd2hpY2ggbWFrZXMgbm8gcGVybWFuZW50IGNoYW5nZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLgorICAoQ29udHJpYnV0ZWQgYnkgWmFjaGFyeSBXYXJlIGluIDppc3N1ZTpgMjAwMzVgLikKKwordHlwZXMKKy0tLS0tCisKKyogTmV3IDpmdW5jOmB+dHlwZXMuY29yb3V0aW5lYCBmdW5jdGlvbi4gIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdgorICBpbiA6aXNzdWU6YDI0MDE3YC4pCisKK3VybGxpYgorLS0tLS0tCisKKyogQSBuZXcgOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aGAgYWxsb3dzIEhUVFAgQmFzaWMKKyAgQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgdG8gYmUgbWFuYWdlZCBzbyBhcyB0byBlbGltaW5hdGUgdW5uZWNlc3NhcnkKKyAgYGA0MDFgYCByZXNwb25zZSBoYW5kbGluZywgb3IgdG8gdW5jb25kaXRpb25hbGx5IHNlbmQgY3JlZGVudGlhbHMKKyAgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aCBzZXJ2ZXJzIHRoYXQgcmV0dXJuIGEKKyAgYGA0MDRgYCByZXNwb25zZSBpbnN0ZWFkIG9mIGEgYGA0MDFgYCBpZiB0aGUgYGBBdXRob3JpemF0aW9uYGAgaGVhZGVyIGlzIG5vdAorICBzZW50LiAgKENvbnRyaWJ1dGVkIGJ5IE1hdGVqIENlcGwgaW4gOmlzc3VlOmAxOTQ5NGAgYW5kIEFrc2hpdCBLaHVyYW5hIGluCisgIDppc3N1ZTpgNzE1OWAuKQorCisqIEEgbmV3IDpmdW5jOmB+dXJsbGliLnBhcnNlLnVybGVuY29kZWAgcGFyYW1ldGVyICpxdW90ZV92aWEqIHByb3ZpZGVzIGEgd2F5IHRvCisgIGNvbnRyb2wgdGhlIGVuY29kaW5nIG9mIHF1ZXJ5IHBhcnRzIGlmIG5lZWRlZC4gIChDb250cmlidXRlZCBieSBTYW13eXNlIGFuZAorICBBcm5vbiBZYWFyaSBpbiA6aXNzdWU6YDEzODY2YC4pCisKK3dzZ2lyZWYKKy0tLS0tLS0KKworKiAqaGVhZGVycyogcGFyYW1ldGVyIG9mIDpjbGFzczpgd3NnaXJlZi5oZWFkZXJzLkhlYWRlcnNgIGlzIG5vdyBvcHRpb25hbC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFBhYmxvIFRvcnJlcyBOYXZhcnJldGUgYW5kIFNpbGVudEdob3N0IGluIDppc3N1ZTpgNTgwMGAuKQorCit4bWxycGMKKy0tLS0tLQorCisqIDpjbGFzczpgeG1scnBjLmNsaWVudC5TZXJ2ZXJQcm94eWAgaXMgbm93IGEgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAuCisgIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAyMDYyN2AuKQorCit4bWwuc2F4CistLS0tLS0tCisKKyogU0FYIHBhcnNlcnMgbm93IHN1cHBvcnQgYSBjaGFyYWN0ZXIgc3RyZWFtIG9mCisgIDpjbGFzczpgfnhtbC5zYXgueG1scmVhZGVyLklucHV0U291cmNlYCBvYmplY3QuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3NWAuKQorCitmYXVsdGhhbmRsZXIKKy0tLS0tLS0tLS0tLQorCisqIDpmdW5jOmB+ZmF1bHRoYW5kbGVyLmVuYWJsZWAsIDpmdW5jOmB+ZmF1bHRoYW5kbGVyLnJlZ2lzdGVyYCwKKyAgOmZ1bmM6YH5mYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tgIGFuZAorICA6ZnVuYzpgfmZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcmAgZnVuY3Rpb25zIG5vdyBhY2NlcHQgZmlsZQorICBkZXNjcmlwdG9ycy4gIChDb250cmlidXRlZCBieSBXZWkgV3UgaW4gOmlzc3VlOmAyMzU2NmAuKQorCit6aXBmaWxlCistLS0tLS0tCisKKyogQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBaSVAgZmlsZXMgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMjUyYC4pCisKKyogVGhlIDpmdW5jOmB6aXBmaWxlLlppcEZpbGUub3BlbmAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIGBgJ3gnYGAgKGV4Y2x1c2l2ZQorICBjcmVhdGlvbikgbW9kZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3MTdgLikKKworCitPcHRpbWl6YXRpb25zCis9PT09PT09PT09PT09CisKK1RoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIGhhdmUgYmVlbiBhZGRlZDoKKworKiA6ZnVuYzpgb3Mud2Fsa2AgaGFzIGJlZW4gc3BlZCB1cCBieSAzLTV4IG9uIFBPU0lYIHN5c3RlbXMgYW5kIDctMjB4CisgIG9uIFdpbmRvd3MuIFRoaXMgd2FzIGRvbmUgdXNpbmcgdGhlIG5ldyA6ZnVuYzpgb3Muc2NhbmRpcmAgZnVuY3Rpb24sCisgIHdoaWNoIGV4cG9zZXMgZmlsZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1bmRlcmx5aW5nIGBgcmVhZGRpcmBgIGFuZAorICBgYEZpbmRGaXJzdEZpbGVgYC9gYEZpbmROZXh0RmlsZWBgIHN5c3RlbSBjYWxscy4gKENvbnRyaWJ1dGVkIGJ5CisgIEJlbiBIb3l0IHdpdGggaGVscCBmcm9tIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjM2MDVgLikKKworKiBDb25zdHJ1Y3Rpb24gb2YgYGBieXRlcyhpbnQpYGAgKGZpbGxlZCBieSB6ZXJvIGJ5dGVzKSBpcyBmYXN0ZXIgYW5kIHVzZXMgbGVzcworICBtZW1vcnkgZm9yIGxhcmdlIG9iamVjdHMuIGBgY2FsbG9jKClgYCBpcyB1c2VkIGluc3RlYWQgb2YgYGBtYWxsb2MoKWBgIHRvCisgIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlc2Ugb2JqZWN0cy4KKworKiBTb21lIG9wZXJhdGlvbnMgb24gOmNsYXNzOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrYCBhbmQKKyAgOmNsYXNzOmB+aXBhZGRyZXNzLklQdjZOZXR3b3JrYCBoYXZlIGJlZW4gbWFzc2l2ZWx5IHNwZWQgdXAsIHN1Y2ggYXMKKyAgOm1ldGg6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsuc3VibmV0c2AsIDptZXRoOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrLnN1cGVybmV0YCwKKyAgOmZ1bmM6YH5pcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2VgLCA6ZnVuYzpgfmlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXNgLgorICBUaGUgc3BlZWQgdXAgY2FuIHJhbmdlIGZyb20gM3ggdG8gMTV4LgorICAoOmlzc3VlOmAyMTQ4NmAsIDppc3N1ZTpgMjE0ODdgLCA6aXNzdWU6YDIwODI2YCkKKworKiBNYW55IG9wZXJhdGlvbnMgb24gOmNsYXNzOmBpby5CeXRlc0lPYCBhcmUgbm93IDUwJSB0byAxMDAlIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNTM4MWAgYW5kIERhdmlkIFdpbHNvbiBpbgorICA6aXNzdWU6YDIyMDAzYC4pCisKKyogOmZ1bmM6YG1hcnNoYWwuZHVtcHNgIGlzIG5vdyBmYXN0ZXIgKDY1JS04NSUgd2l0aCB2ZXJzaW9ucyAzLS00LCAyMC0yNSUgd2l0aAorICB2ZXJzaW9ucyAwLS0yIG9uIHR5cGljYWwgZGF0YSwgYW5kIHVwIHRvIDV4IGluIGJlc3QgY2FzZXMpLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIwNDE2YCBhbmQgOmlzc3VlOmAyMzM0NGAuKQorCisqIFRoZSBVVEYtMzIgZW5jb2RlciBpcyBub3cgM3ggdG8gN3ggZmFzdGVyLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EKKyAgaW4gOmlzc3VlOmAxNTAyN2AuKQorCisKK0J1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitDaGFuZ2VzIHRvIFB5dGhvbidzIGJ1aWxkIHByb2Nlc3MgYW5kIHRvIHRoZSBDIEFQSSBpbmNsdWRlOgorCisqIE5ldyBgYGNhbGxvY2BgIGZ1bmN0aW9uczoKKworICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AKKyAgKiA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgCisgICogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYAorICAqIDpjOmZ1bmM6YF9QeU9iamVjdF9HQ19DYWxsb2NgCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitOZXcgS2V5d29yZHMKKy0tLS0tLS0tLS0tLQorCitgYGFzeW5jYGAgYW5kIGBgYXdhaXRgYCBhcmUgbm90IHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgYXMgdmFyaWFibGUsIGNsYXNzIG9yCitmdW5jdGlvbiBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwgYmVjb21lCitwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4KKworCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBXaW5kb3dzIFhQIC0gUGVyIDpQRVA6YDExYCwgTWljcm9zb2Z0IHN1cHBvcnQgb2YgV2luZG93cyBYUCBoYXMgZW5kZWQuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgOm1vZDpgZm9ybWF0dGVyYCBtb2R1bGUgaGFzIG5vdyBncmFkdWF0ZWQgdG8gZnVsbCBkZXByZWNhdGlvbiBhbmQgaXMgc3RpbGwKKyAgc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjYuCisKKyogOm1vZDpgc210cGRgIGhhcyBpbiB0aGUgcGFzdCBhbHdheXMgZGVjb2RlZCB0aGUgREFUQSBwb3J0aW9uIG9mIGVtYWlsCisgIG1lc3NhZ2VzIHVzaW5nIHRoZSBgYHV0Zi04YGAgY29kZWMuICBUaGlzIGNhbiBub3cgYmUgY29udHJvbGxlZCBieSB0aGUgbmV3CisgICpkZWNvZGVfZGF0YSoga2V5d29yZCB0byA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCisgIGBgVHJ1ZWBgLCBidXQgdGhpcyBkZWZhdWx0IGlzIGRlcHJlY2F0ZWQuICBTcGVjaWZ5IHRoZSAqZGVjb2RlX2RhdGEqIGtleXdvcmQKKyAgd2l0aCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSB0byBhdm9pZCB0aGUgZGVwcmVjYXRpb24gd2FybmluZy4KKworKiBEaXJlY3RseSBhc3NpZ25pbmcgdmFsdWVzIHRvIHRoZSA6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwua2V5YCwKKyAgOmF0dHI6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnZhbHVlYCBhbmQKKyAgOmF0dHI6YH5odHRwLmNvb2tpZXMuTW9yc2VsLmNvZGVkX3ZhbHVlYCBvZiA6Y2xhc3M6YH5odHRwLmNvb2tpZXMuTW9yc2VsYAorICBvYmplY3RzIGlzIGRlcHJlY2F0ZWQuICBVc2UgdGhlIDpmdW5jOmB+aHR0cC5jb29raWVzLk1vcnNlbC5zZXRgIG1ldGhvZAorICBpbnN0ZWFkLiAgSW4gYWRkaXRpb24sIHRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBvZgorICA6ZnVuYzpgfmh0dHAuY29va2llcy5Nb3JzZWwuc2V0YCBpcyBkZXByZWNhdGVkLCBhbmQgaXMgbm93IGlnbm9yZWQuCisKKyogUGFzc2luZyBhIGZvcm1hdCBzdHJpbmcgYXMga2V5d29yZCBhcmd1bWVudCAqZm9ybWF0X3N0cmluZyogdG8gdGhlCisgIDptZXRoOmB+c3RyaW5nLkZvcm1hdHRlci5mb3JtYXRgIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmBzdHJpbmcuRm9ybWF0dGVyYAorICBjbGFzcyBoYXMgYmVlbiBkZXByZWNhdGVkLgorCisqIDpmdW5jOmBwbGF0Zm9ybS5kaXN0YCBhbmQgOmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb25zIGFyZQorICBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcuICBMaW51eCBkaXN0cmlidXRpb25zIHVzZQorICB0b28gbWFueSBkaWZmZXJlbnQgd2F5cyBvZiBkZXNjcmliaW5nIHRoZW1zZWx2ZXMsIHNvIHRoZSBmdW5jdGlvbmFsaXR5IGlzCisgIGxlZnQgdG8gYSBwYWNrYWdlLgorICAoQ29udHJpYnV0ZWQgYnkgVmFqcmFza3kgS29rIGFuZCBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMTMyMmAuKQorCisqIFRoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBgYGZyb21fZnVuY3Rpb25gYCBhbmQgYGBmcm9tX2J1aWx0aW5gYCBtZXRob2RzIG9mCisgIDpjbGFzczpgaW5zcGVjdC5TaWduYXR1cmVgIGFyZSBkZXByZWNhdGVkLiAgVXNlIG5ldworICA6bWV0aDpgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZWAgaW5zdGVhZC4gKENvbnRyaWJ1dGVkIGJ5IFl1cnkKKyAgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQyNDhgLikKKworKiA6ZnVuYzpgaW5zcGVjdC5nZXRhcmdzcGVjYCBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbgorICBQeXRob24gMy42LiAgKFNlZSA6aXNzdWU6YDIwNDM4YCBmb3IgZGV0YWlscy4pCisKKyogOmZ1bmM6YH5pbnNwZWN0LmdldGZ1bGxhcmdzcGVjYCwgOmZ1bmM6YH5pbnNwZWN0LmdldGFyZ3ZhbHVlc2AsCisgIDpmdW5jOmB+aW5zcGVjdC5nZXRjYWxsYXJnc2AsIDpmdW5jOmB+aW5zcGVjdC5nZXRhcmd2YWx1ZXNgLAorICA6ZnVuYzpgfmluc3BlY3QuZm9ybWF0YXJnc3BlY2AsIGFuZCA6ZnVuYzpgfmluc3BlY3QuZm9ybWF0YXJndmFsdWVzYCBhcmUKKyAgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiA6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIEFQSS4gIChTZWUgOmlzc3VlOmAyMDQzOGAKKyAgZm9yIGRldGFpbHMuKQorCisKK0RlcHJlY2F0ZWQgZnVuY3Rpb25zIGFuZCB0eXBlcyBvZiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBOb25lIHlldC4KKworCitEZXByZWNhdGVkIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogTm9uZSB5ZXQuCisKKworUmVtb3ZlZAorPT09PT09PQorCitBUEkgYW5kIEZlYXR1cmUgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIG9ic29sZXRlIGFuZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgQVBJcyBhbmQgZmVhdHVyZXMgaGF2ZSBiZWVuCityZW1vdmVkOgorCisqIFRoZSBgYF9fdmVyc2lvbl9fYGAgYXR0cmlidXRlIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgZW1haWwgcGFja2FnZS4gIFRoZQorICBlbWFpbCBjb2RlIGhhc24ndCBiZWVuIHNoaXBwZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBzdGRsaWIgZm9yIGEgbG9uZyB0aW1lLAorICBhbmQgdGhlIGBgX192ZXJzaW9uX19gYCBzdHJpbmcgd2FzIG5vdCB1cGRhdGVkIGluIHRoZSBsYXN0IGZldyByZWxlYXNlcy4KKworKiBUaGUgaW50ZXJuYWwgYGBOZXRyY2BgIGNsYXNzIGluIHRoZSA6bW9kOmBmdHBsaWJgIG1vZHVsZSB3YXMgZGVwcmVjYXRlZCBpbgorICAzLjQsIGFuZCBoYXMgbm93IGJlZW4gcmVtb3ZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hdHQgQ2hhcHV0IGluIDppc3N1ZTpgNjYyM2AuKQorCisqIFRoZSBjb25jZXB0IG9mIGBgLnB5b2BgIGZpbGVzIGhhcyBiZWVuIHJlbW92ZWQuCisKKyogVGhlIEpvaW5hYmxlUXVldWUgY2xhc3MgaW4gdGhlIHByb3Zpc2lvbmFsIGFzeW5jaW8gbW9kdWxlIHdhcyBkZXByZWNhdGVkCisgIGluIDMuNC40IGFuZCBpcyBub3cgcmVtb3ZlZCAoOmlzc3VlOmAyMzQ2NGApLgorCisKK1BvcnRpbmcgdG8gUHl0aG9uIDMuNQorPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBsaXN0cyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjaGFuZ2VzIGFuZCBvdGhlciBidWdmaXhlcwordGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgY29kZS4KKworQ2hhbmdlcyBpbiB0aGUgUHl0aG9uIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDpwZXA6YDQ3NWA6IEV4YW1wbGVzIG9mIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm93IHJldHJpZWQgd2hlbiBpbnRlcnJ1cHRlZAorICBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90CisgIHJhaXNlIGFuIGV4Y2VwdGlvbjoKKworICAtIDpmdW5jOmBvcGVuYCwgOmZ1bmM6YG9zLm9wZW5gLCA6ZnVuYzpgaW8ub3BlbmAKKyAgLSBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlCisgIC0gOm1vZDpgb3NgIGZ1bmN0aW9uczoKKworICAgICogOmZ1bmM6YG9zLmZjaGRpcmAKKyAgICAqIDpmdW5jOmBvcy5mY2htb2RgCisgICAgKiA6ZnVuYzpgb3MuZmNob3duYAorICAgICogOmZ1bmM6YG9zLmZkYXRhc3luY2AKKyAgICAqIDpmdW5jOmBvcy5mc3RhdGAKKyAgICAqIDpmdW5jOmBvcy5mc3RhdHZmc2AKKyAgICAqIDpmdW5jOmBvcy5mc3luY2AKKyAgICAqIDpmdW5jOmBvcy5mdHJ1bmNhdGVgCisgICAgKiA6ZnVuYzpgb3MubWtmaWZvYAorICAgICogOmZ1bmM6YG9zLm1rbm9kYAorICAgICogOmZ1bmM6YG9zLnBvc2l4X2ZhZHZpc2VgCisgICAgKiA6ZnVuYzpgb3MucG9zaXhfZmFsbG9jYXRlYAorICAgICogOmZ1bmM6YG9zLnByZWFkYAorICAgICogOmZ1bmM6YG9zLnB3cml0ZWAKKyAgICAqIDpmdW5jOmBvcy5yZWFkYAorICAgICogOmZ1bmM6YG9zLnJlYWR2YAorICAgICogOmZ1bmM6YG9zLnNlbmRmaWxlYAorICAgICogOmZ1bmM6YG9zLndhaXQzYAorICAgICogOmZ1bmM6YG9zLndhaXQ0YAorICAgICogOmZ1bmM6YG9zLndhaXRgCisgICAgKiA6ZnVuYzpgb3Mud2FpdGlkYAorICAgICogOmZ1bmM6YG9zLndhaXRwaWRgCisgICAgKiA6ZnVuYzpgb3Mud3JpdGVgCisgICAgKiA6ZnVuYzpgb3Mud3JpdGV2YAorICAgICogc3BlY2lhbCBjYXNlczogOmZ1bmM6YG9zLmNsb3NlYCBhbmQgOmZ1bmM6YG9zLmR1cDJgIG5vdyBpZ25vcmUKKyAgICAgIDpweTpkYXRhOmB+ZXJybm8uRUlOVFJgIGVycm9yLCB0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCAoc2VlIHRoZSBQRVAKKyAgICAgIGZvciB0aGUgcmF0aW9uYWxlKQorCisgIC0gOmZ1bmM6YHNlbGVjdC5zZWxlY3RgLCA6ZnVuYzpgc2VsZWN0LnBvbGwucG9sbGAsIDpmdW5jOmBzZWxlY3QuZXBvbGwucG9sbGAsCisgICAgOmZ1bmM6YHNlbGVjdC5rcXVldWUuY29udHJvbGAsIDpmdW5jOmBzZWxlY3QuZGV2cG9sbC5wb2xsYAorICAtIDpmdW5jOmBzb2NrZXQuc29ja2V0YCBtZXRob2RzOgorCisgICAgKiA6bWV0aDpgfnNvY2tldC5zb2NrZXQuYWNjZXB0YAorICAgICogOm1ldGg6YH5zb2NrZXQuc29ja2V0LmNvbm5lY3RgIChleGNlcHQgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzKQorICAgICogOm1ldGg6YH5zb2NrZXQuc29ja2V0LnJlY3ZgCisgICAgKiA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdmZyb21gCisgICAgKiA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ2AKKyAgICAqIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYAorICAgICogOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRhbGxgCisgICAgKiA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ2AKKyAgICAqIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kdG9gCisKKyAgLSA6ZnVuYzpgc2lnbmFsLnNpZ3RpbWVkd2FpdGAsIDpmdW5jOmBzaWduYWwuc2lnd2FpdGluZm9gCisgIC0gOmZ1bmM6YHRpbWUuc2xlZXBgCisKKyogQmVmb3JlIFB5dGhvbiAzLjUsIGEgOmNsYXNzOmBkYXRldGltZS50aW1lYCBvYmplY3Qgd2FzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UKKyAgaWYgaXQgcmVwcmVzZW50ZWQgbWlkbmlnaHQgaW4gVVRDLiAgVGhpcyBiZWhhdmlvciB3YXMgY29uc2lkZXJlZCBvYnNjdXJlIGFuZAorICBlcnJvci1wcm9uZSBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBpbiBQeXRob24gMy41LiAgU2VlIDppc3N1ZTpgMTM5MzZgIGZvciBmdWxsCisgIGRldGFpbHMuCisKKyogOm1ldGg6YHNzbC5TU0xTb2NrZXQuc2VuZCgpYCBub3cgcmFpc2VzIGVpdGhlciA6ZXhjOmBzc2wuU1NMV2FudFJlYWRFcnJvcmAKKyAgb3IgOmV4Yzpgc3NsLlNTTFdhbnRXcml0ZUVycm9yYCBvbiBhIG5vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbgorICB3b3VsZCBibG9jay4gUHJldmlvdXNseSwgaXQgd291bGQgcmV0dXJuIDAuICBTZWUgOmlzc3VlOmAyMDk1MWAuCisKKyogVGhlIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUgb2YgZ2VuZXJhdG9yIGlzIG5vdyBzZXQgZnJvbSB0aGUgZnVuY3Rpb24gbmFtZSwKKyAgaW5zdGVhZCBvZiBiZWluZyBzZXQgZnJvbSB0aGUgY29kZSBuYW1lLiBVc2UgYGBnZW4uZ2lfY29kZS5jb19uYW1lYGAgdG8KKyAgcmV0cmlldmUgdGhlIGNvZGUgbmFtZS4gR2VuZXJhdG9ycyBhbHNvIGhhdmUgYSBuZXcgYGBfX3F1YWxuYW1lX19gYAorICBhdHRyaWJ1dGUsIHRoZSBxdWFsaWZpZWQgbmFtZSwgd2hpY2ggaXMgbm93IHVzZWQgZm9yIHRoZSByZXByZXNlbnRhdGlvbgorICBvZiBhIGdlbmVyYXRvciAoYGByZXByKGdlbilgYCkuIFNlZSA6aXNzdWU6YDIxMjA1YC4KKworKiBUaGUgZGVwcmVjYXRlZCAic3RyaWN0IiBtb2RlIGFuZCBhcmd1bWVudCBvZiA6Y2xhc3M6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VyYCwKKyAgOm1ldGg6YEhUTUxQYXJzZXIuZXJyb3JgLCBhbmQgdGhlIDpleGM6YEhUTUxQYXJzZXJFcnJvcmAgZXhjZXB0aW9uIGhhdmUgYmVlbgorICByZW1vdmVkLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDE1MTE0YC4pCisgIFRoZSAqY29udmVydF9jaGFycmVmcyogYXJndW1lbnQgb2YgOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgaXMKKyAgbm93IGBgVHJ1ZWBgIGJ5IGRlZmF1bHQuICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxMDQ3YC4pCisKKyogQWx0aG91Z2ggaXQgaXMgbm90IGZvcm1hbGx5IHBhcnQgb2YgdGhlIEFQSSwgaXQgaXMgd29ydGggbm90aW5nIGZvciBwb3J0aW5nCisgIHB1cnBvc2VzIChpZTogZml4aW5nIHRlc3RzKSB0aGF0IGVycm9yIG1lc3NhZ2VzIHRoYXQgd2VyZSBwcmV2aW91c2x5IG9mIHRoZQorICBmb3JtICInc29tZXR5cGUnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIgYXJlIG5vdyBvZiB0aGUgZm9ybSAiYQorICBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdzb21ldHlwZSciLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aQorICBpbiA6aXNzdWU6YDE2NTE4YC4pCisKKyogSWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNldCB0byBhIGRpcmVjdG9yeSB0aGF0IG5vIGxvbmdlciBleGlzdHMgdGhlbgorICA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgd2lsbCBubyBsb25nZXIgYmUgcmFpc2VkIGFuZCBpbnN0ZWFkCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLmZpbmRfc3BlY2Agd2lsbCByZXR1cm4gYGBOb25lYGAKKyAgKip3aXRob3V0KiogY2FjaGluZyBgYE5vbmVgYCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHdoaWNoIGlzCisgIGRpZmZlcmVudCB0aGFuIHRoZSB0eXBpY2FsIGNhc2UgKDppc3N1ZTpgMjI4MzRgKS4KKworKiBIVFRQIHN0YXR1cyBjb2RlIGFuZCBtZXNzYWdlcyBmcm9tIDptb2Q6YGh0dHAuY2xpZW50YCBhbmQgOm1vZDpgaHR0cC5zZXJ2ZXJgCisgIHdlcmUgcmVmYWN0b3JlZCBpbnRvIGEgY29tbW9uIDpjbGFzczpgfmh0dHAuSFRUUFN0YXR1c2AgZW51bS4gIFRoZSB2YWx1ZXMgaW4KKyAgOm1vZDpgaHR0cC5jbGllbnRgIGFuZCA6bW9kOmBodHRwLnNlcnZlcmAgcmVtYWluIGF2YWlsYWJsZSBmb3IgYmFja3dhcmRzCisgIGNvbXBhdGliaWxpdHkuICAoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBpbiA6aXNzdWU6YDIxNzkzYC4pCisKKyogV2hlbiBhbiBpbXBvcnQgbG9hZGVyIGRlZmluZXMgOm1ldGg6YH5pbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5leGVjX21vZHVsZWAKKyAgaXQgaXMgbm93IGV4cGVjdGVkIHRvIGFsc28gZGVmaW5lCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgKHJhaXNlcyBhCisgIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2Agbm93LCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjYpLiBJZiB0aGUgbG9hZGVyCisgIGluaGVyaXRzIGZyb20gOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkxvYWRlcmAgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCBlbHNlCisgIHNpbXBseSBkZWZpbmUgOm1ldGg6YH5pbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5jcmVhdGVfbW9kdWxlYCB0byByZXR1cm4KKyAgYGBOb25lYGAgKDppc3N1ZTpgMjMwMTRgKS4KKworKiA6ZnVuYzpgcmUuc3BsaXRgIGFsd2F5cyBpZ25vcmVkIGVtcHR5IHBhdHRlcm4gbWF0Y2hlcywgc28gdGhlIGBgJ3gqJ2BgCisgIHBhdHRlcm4gd29ya2VkIHRoZSBzYW1lIGFzIGBgJ3grJ2BgLCBhbmQgdGhlIGBgJ1xiJ2BgIHBhdHRlcm4gbmV2ZXIgd29ya2VkLgorICBOb3cgOmZ1bmM6YHJlLnNwbGl0YCByYWlzZXMgYSB3YXJuaW5nIGlmIHRoZSBwYXR0ZXJuIGNvdWxkIG1hdGNoCisgIGFuIGVtcHR5IHN0cmluZy4gIEZvciBjb21wYXRpYmlsaXR5IHVzZSBwYXR0ZXJucyB0aGF0IG5ldmVyIG1hdGNoIGFuIGVtcHR5CisgIHN0cmluZyAoZS5nLiBgYCd4KydgYCBpbnN0ZWFkIG9mIGBgJ3gqJ2BgKS4gIFBhdHRlcm5zIHRoYXQgY291bGQgb25seSBtYXRjaAorICBhbiBlbXB0eSBzdHJpbmcgKHN1Y2ggYXMgYGAnXGInYGApIG5vdyByYWlzZSBhbiBlcnJvci4KKworKiBUaGUgOmNsYXNzOmB+aHR0cC5jb29raWVzLk1vcnNlbGAgZGljdC1saWtlIGludGVyZmFjZSBoYXMgYmVlbiBtYWRlIHNlbGYKKyAgY29uc2lzdGVudDogIG1vcnNlbCBjb21wYXJpc29uIG5vdyB0YWtlcyB0aGUgOmF0dHI6YH5odHRwLmNvb2tpZXMuTW9yc2VsLmtleWAKKyAgYW5kIDphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgaW50byBhY2NvdW50LAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29weWAgbm93IHJlc3VsdHMgaW4gYQorICA6Y2xhc3M6YH5odHRwLmNvb2tpZXMuTW9yc2VsYCBpbnN0YW5jZSByYXRoZXIgdGhhbiBhIDpjbGFzczpgZGljdGAsIGFuZAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwudXBkYXRlYCB3aWxsIG5vdyByYWlzZSBhbiBleGNlcHRpb24gaWYgYW55IG9mIHRoZQorICBrZXlzIGluIHRoZSB1cGRhdGUgZGljdGlvbmFyeSBhcmUgaW52YWxpZC4gIEluIGFkZGl0aW9uLCB0aGUgdW5kb2N1bWVudGVkCisgICpMZWdhbENoYXJzKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCBhbmQKKyAgaXMgbm93IGlnbm9yZWQuICAoOmlzc3VlOmAyMjExYCkKKworKiA6cGVwOmA0ODhgIGhhcyByZW1vdmVkIGBgLnB5b2BgIGZpbGVzIGZyb20gUHl0aG9uIGFuZCBpbnRyb2R1Y2VkIHRoZSBvcHRpb25hbAorICBgYG9wdC1gYCB0YWcgaW4gYGAucHljYGAgZmlsZSBuYW1lcy4gVGhlCisgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaGFzIGdhaW5lZCBhbiAqb3B0aW1pemF0aW9uKgorICBwYXJhbWV0ZXIgdG8gaGVscCBjb250cm9sIHRoZSBgYG9wdC1gYCB0YWcuIEJlY2F1c2Ugb2YgdGhpcywgdGhlCisgICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbiBpcyBub3cgZGVwcmVjYXRlZC4gYC5weW9gIGZpbGVzCisgIGFyZSBhbHNvIG5vIGxvbmdlciBzdXBwb3J0ZWQgYXMgYSBmaWxlIGFyZ3VtZW50IHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgYW5kCisgIHRodXMgc2VydmUgbm8gcHVycG9zZSB3aGVuIGRpc3RyaWJ1dGVkIG9uIHRoZWlyIG93biAoaS5lLiBzb3VyY2xlc3MgY29kZQorICBkaXN0cmlidXRpb24pLiBEdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGZvciBieXRlY29kZSBoYXMgY2hhbmdlZAorICBpbiBQeXRob24gMy41LCBhbGwgb2xkIGAucHlvYCBmaWxlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUKKyAgaW52YWxpZCByZWdhcmRsZXNzIG9mIHRoaXMgUEVQLgorCisqIFRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSBub3cgZXhwb3J0cyB0aGUgQ0FOX1JBV19GRF9GUkFNRVMgY29uc3RhbnQgb24gbGludXgKKyAgMy42IGFuZCBncmVhdGVyLgorCisqIFRoZSBgcHlnZXR0ZXh0LnB5YCBUb29sIG5vdyB1c2VzIHRoZSBzdGFuZGFyZCArTk5OTiBmb3JtYXQgZm9yIHRpbWV6b25lcyBpbgorICB0aGUgUE9ULUNyZWF0aW9uLURhdGUgaGVhZGVyLgorCisqIFRoZSA6bW9kOmBzbXRwbGliYCBtb2R1bGUgbm93IHVzZXMgOmRhdGE6YHN5cy5zdGRlcnJgIGluc3RlYWQgb2YgcHJldmlvdXMKKyAgbW9kdWxlIGxldmVsIDpkYXRhOmBzdGRlcnJgIHZhcmlhYmxlIGZvciBkZWJ1ZyBvdXRwdXQuICBJZiB5b3VyICh0ZXN0KQorICBwcm9ncmFtIGRlcGVuZHMgb24gcGF0Y2hpbmcgdGhlIG1vZHVsZSBsZXZlbCB2YXJpYWJsZSB0byBjYXB0dXJlIHRoZSBkZWJ1ZworICBvdXRwdXQsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIGl0IHRvIGNhcHR1cmUgc3lzLnN0ZGVyciBpbnN0ZWFkLgorCisqIFRoZSA6bWV0aDpgc3RyLnN0YXJ0c3dpdGhgIGFuZCA6bWV0aDpgc3RyLmVuZHN3aXRoYCBtZXRob2RzIG5vIGxvbmdlciByZXR1cm4KKyAgYGBUcnVlYGAgd2hlbiBmaW5kaW5nIHRoZSBlbXB0eSBzdHJpbmcgYW5kIHRoZSBpbmRleGVzIGFyZSBjb21wbGV0ZWx5IG91dCBvZgorICByYW5nZS4gIFNlZSA6aXNzdWU6YDI0Mjg0YC4KKworQ2hhbmdlcyBpbiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIHVuZG9jdW1lbnRlZCA6YzptZW1iZXI6YH5QeU1lbW9yeVZpZXdPYmplY3QuZm9ybWF0YCBtZW1iZXIgb2YgdGhlCisgIChub24tcHVibGljKSA6Yzp0eXBlOmBQeU1lbW9yeVZpZXdPYmplY3RgIHN0cnVjdHVyZSBoYXMgYmVlbiByZW1vdmVkLgorCisgIEFsbCBleHRlbnNpb25zIHJlbHlpbmcgb24gdGhlIHJlbGV2YW50IHBhcnRzIGluIGBgbWVtb3J5b2JqZWN0LmhgYAorICBtdXN0IGJlIHJlYnVpbHQuCisKKyogVGhlIDpjOnR5cGU6YFB5TWVtQWxsb2NhdG9yYCBzdHJ1Y3R1cmUgd2FzIHJlbmFtZWQgdG8KKyAgOmM6dHlwZTpgUHlNZW1BbGxvY2F0b3JFeGAgYW5kIGEgbmV3IGBgY2FsbG9jYGAgZmllbGQgd2FzIGFkZGVkLgorCisqIFJlbW92ZWQgbm9uLWRvY3VtZW50ZWQgbWFjcm8gOmM6bWFjcm86YFB5T2JqZWN0X1JFUFJgIHdoaWNoIGxlYWtlZCByZWZlcmVuY2VzLgorICBVc2UgZm9ybWF0IGNoYXJhY3RlciBgYCVSYGAgaW4gOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Gb3JtYXRgLWxpa2UgZnVuY3Rpb25zCisgIHRvIGZvcm1hdCB0aGUgOmZ1bmM6YHJlcHJgIG9mIHRoZSBvYmplY3QuCisKKyogQmVjYXVzZSB0aGUgbGFjayBvZiB0aGUgOmF0dHI6YF9fbW9kdWxlX19gIGF0dHJpYnV0ZSBicmVha3MgcGlja2xpbmcgYW5kCisgIGludHJvc3BlY3Rpb24sIGEgZGVwcmVjYXRpb24gd2FybmluZyBub3cgaXMgcmFpc2VkIGZvciBidWlsdGluIHR5cGUgd2l0aG91dAorICB0aGUgOmF0dHI6YF9fbW9kdWxlX19gIGF0dHJpYnV0ZS4gIFdvdWxkIGJlIGFuIEF0dHJpYnV0ZUVycm9yIGluIGZ1dHVyZS4KKyAgKDppc3N1ZTpgMjAyMDRgKQorCisqIEFzIHBhcnQgb2YgUEVQIDQ5MiBpbXBsZW1lbnRhdGlvbiwgYGB0cF9yZXNlcnZlZGBgIHNsb3Qgb2YKKyAgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCB3YXMgcmVwbGFjZWQgd2l0aCBhCisgIDpjOm1lbWJlcjpgUHlUeXBlT2JqZWN0LnRwX2FzX2FzeW5jYCBzbG90LgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggMjk5MDJlNC4uZWRiNTUwMiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CiAgICAzLjIucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggMDVjMzE4MS4uODZlYzQzMiAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjEsOCArMjEsMTEgQEAKIAogZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKIGRlY29yYXRvcnM6IGRlY29yYXRvcisKLWRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKQorZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKQorCithc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmCiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCisKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCiB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKICAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KQEAgLTQwLDcgKzQzLDcgQEAKIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCi1hdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CithdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCiAjIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CkBAIC02NSw3ICs2OCw4IEBACiBub25sb2NhbF9zdG10OiAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKIGFzc2VydF9zdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KIAotY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCitjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10Cithc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KQogaWZfc3RtdDogJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiB3aGlsZV9zdG10OiAnd2hpbGUnIHRlc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogZm9yX3N0bXQ6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQpAQCAtODksNyArOTMsNyBAQAogbm90X3Rlc3Q6ICdub3QnIG5vdF90ZXN0IHwgY29tcGFyaXNvbgogY29tcGFyaXNvbjogZXhwciAoY29tcF9vcCBleHByKSoKICMgPD4gaXNuJ3QgYWN0dWFsbHkgYSB2YWxpZCBjb21wYXJpc29uIG9wZXJhdG9yIGluIFB5dGhvbi4gSXQncyBoZXJlIGZvciB0aGUKLSMgc2FrZSBvZiBhIF9fZnV0dXJlX18gaW1wb3J0IGRlc2NyaWJlZCBpbiBQRVAgNDAxCisjIHNha2Ugb2YgYSBfX2Z1dHVyZV9fIGltcG9ydCBkZXNjcmliZWQgaW4gUEVQIDQwMSAod2hpY2ggcmVhbGx5IHdvcmtzIDotKQogY29tcF9vcDogJzwnfCc+J3wnPT0nfCc+PSd8Jzw9J3wnPD4nfCchPSd8J2luJ3wnbm90JyAnaW4nfCdpcyd8J2lzJyAnbm90Jwogc3Rhcl9leHByOiAnKicgZXhwcgogZXhwcjogeG9yX2V4cHIgKCd8JyB4b3JfZXhwcikqCkBAIC05Nyw5ICsxMDEsMTAgQEAKIGFuZF9leHByOiBzaGlmdF9leHByICgnJicgc2hpZnRfZXhwcikqCiBzaGlmdF9leHByOiBhcml0aF9leHByICgoJzw8J3wnPj4nKSBhcml0aF9leHByKSoKIGFyaXRoX2V4cHI6IHRlcm0gKCgnKyd8Jy0nKSB0ZXJtKSoKLXRlcm06IGZhY3RvciAoKCcqJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCit0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKIGZhY3RvcjogKCcrJ3wnLSd8J34nKSBmYWN0b3IgfCBwb3dlcgotcG93ZXI6IGF0b20gdHJhaWxlciogWycqKicgZmFjdG9yXQorcG93ZXI6IGF0b21fZXhwciBbJyoqJyBmYWN0b3JdCithdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgogYXRvbTogKCcoJyBbeWllbGRfZXhwcnx0ZXN0bGlzdF9jb21wXSAnKScgfAogICAgICAgICdbJyBbdGVzdGxpc3RfY29tcF0gJ10nIHwKICAgICAgICAneycgW2RpY3RvcnNldG1ha2VyXSAnfScgfApAQCAtMTExLDE3ICsxMTYsMjkgQEAKIHNsaWNlb3A6ICc6JyBbdGVzdF0KIGV4cHJsaXN0OiAoZXhwcnxzdGFyX2V4cHIpICgnLCcgKGV4cHJ8c3Rhcl9leHByKSkqIFsnLCddCiB0ZXN0bGlzdDogdGVzdCAoJywnIHRlc3QpKiBbJywnXQotZGljdG9yc2V0bWFrZXI6ICggKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8Ci0gICAgICAgICAgICAgICAgICAodGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkpICkKK2RpY3RvcnNldG1ha2VyOiAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKKyAgICAgICAgICAgICAgICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKSkqIFsnLCddKSkgfAorICAgICAgICAgICAgICAgICAgKCh0ZXN0IHwgc3Rhcl9leHByKQorICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCBzdGFyX2V4cHIpKSogWycsJ10pKSApCiAKIGNsYXNzZGVmOiAnY2xhc3MnIE5BTUUgWycoJyBbYXJnbGlzdF0gJyknXSAnOicgc3VpdGUKIAotYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXQotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdIAotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKionIHRlc3QpCithcmdsaXN0OiBhcmd1bWVudCAoJywnIGFyZ3VtZW50KSogIFsnLCddCisKICMgVGhlIHJlYXNvbiB0aGF0IGtleXdvcmRzIGFyZSB0ZXN0IG5vZGVzIGluc3RlYWQgb2YgTkFNRSBpcyB0aGF0IHVzaW5nIE5BTUUKICMgcmVzdWx0cyBpbiBhbiBhbWJpZ3VpdHkuIGFzdC5jIG1ha2VzIHN1cmUgaXQncyBhIE5BTUUuCi1hcmd1bWVudDogdGVzdCBbY29tcF9mb3JdIHwgdGVzdCAnPScgdGVzdCAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisjICJ0ZXN0ICc9JyB0ZXN0IiBpcyByZWFsbHkgImtleXdvcmQgJz0nIHRlc3QiLCBidXQgd2UgaGF2ZSBubyBzdWNoIHRva2VuLgorIyBUaGVzZSBuZWVkIHRvIGJlIGluIGEgc2luZ2xlIHJ1bGUgdG8gYXZvaWQgZ3JhbW1hciB0aGF0IGlzIGFtYmlndW91cworIyB0byBvdXIgTEwoMSkgcGFyc2VyLiBFdmVuIHRob3VnaCAndGVzdCcgaW5jbHVkZXMgJypleHByJyBpbiBzdGFyX2V4cHIsCisjIHdlIGV4cGxpY2l0bHkgbWF0Y2ggJyonIGhlcmUsIHRvbywgdG8gZ2l2ZSBpdCBwcm9wZXIgcHJlY2VkZW5jZS4KKyMgSWxsZWdhbCBjb21iaW5hdGlvbnMgYW5kIG9yZGVyaW5ncyBhcmUgYmxvY2tlZCBpbiBhc3QuYzoKKyMgbXVsdGlwbGUgKHRlc3QgY29tcF9mb3IpIGFyZ3VlbWVudHMgYXJlIGJsb2NrZWQ7IGtleXdvcmQgdW5wYWNraW5ncworIyB0aGF0IHByZWNlZGUgaXRlcmFibGUgdW5wYWNraW5ncyBhcmUgYmxvY2tlZDsgZXRjLgorYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKKyAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAorICAgICAgICAgICAgJyoqJyB0ZXN0IHwKKyAgICAgICAgICAgIHN0YXJfZXhwciApCisKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCiBjb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDY3ZDY3N2IuLjNiYzAxNWYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC0xNSw5ICsxNSw5IEBACiAKIHR5cGVkZWYgZW51bSBfYm9vbG9wIHsgQW5kPTEsIE9yPTIgfSBib29sb3BfdHk7CiAKLXR5cGVkZWYgZW51bSBfb3BlcmF0b3IgeyBBZGQ9MSwgU3ViPTIsIE11bHQ9MywgRGl2PTQsIE1vZD01LCBQb3c9NiwgTFNoaWZ0PTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUlNoaWZ0PTgsIEJpdE9yPTksIEJpdFhvcj0xMCwgQml0QW5kPTExLCBGbG9vckRpdj0xMiB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JfdHk7Cit0eXBlZGVmIGVudW0gX29wZXJhdG9yIHsgQWRkPTEsIFN1Yj0yLCBNdWx0PTMsIE1hdE11bHQ9NCwgRGl2PTUsIE1vZD02LCBQb3c9NywKKyAgICAgICAgICAgICAgICAgICAgICAgICBMU2hpZnQ9OCwgUlNoaWZ0PTksIEJpdE9yPTEwLCBCaXRYb3I9MTEsIEJpdEFuZD0xMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9vckRpdj0xMyB9IG9wZXJhdG9yX3R5OwogCiB0eXBlZGVmIGVudW0gX3VuYXJ5b3AgeyBJbnZlcnQ9MSwgTm90PTIsIFVBZGQ9MywgVVN1Yj00IH0gdW5hcnlvcF90eTsKIApAQCAtNjMsMTIgKzYzLDEzIEBACiAgICAgfSB2OwogfTsKIAotZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIENsYXNzRGVmX2tpbmQ9MiwgUmV0dXJuX2tpbmQ9MywKLSAgICAgICAgICAgICAgICAgIERlbGV0ZV9raW5kPTQsIEFzc2lnbl9raW5kPTUsIEF1Z0Fzc2lnbl9raW5kPTYsIEZvcl9raW5kPTcsCi0gICAgICAgICAgICAgICAgICBXaGlsZV9raW5kPTgsIElmX2tpbmQ9OSwgV2l0aF9raW5kPTEwLCBSYWlzZV9raW5kPTExLAotICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTIsIEFzc2VydF9raW5kPTEzLCBJbXBvcnRfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xNSwgR2xvYmFsX2tpbmQ9MTYsIE5vbmxvY2FsX2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MTgsIFBhc3Nfa2luZD0xOSwgQnJlYWtfa2luZD0yMCwgQ29udGludWVfa2luZD0yMX07CitlbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQXN5bmNGdW5jdGlvbkRlZl9raW5kPTIsIENsYXNzRGVmX2tpbmQ9MywKKyAgICAgICAgICAgICAgICAgIFJldHVybl9raW5kPTQsIERlbGV0ZV9raW5kPTUsIEFzc2lnbl9raW5kPTYsCisgICAgICAgICAgICAgICAgICBBdWdBc3NpZ25fa2luZD03LCBGb3Jfa2luZD04LCBBc3luY0Zvcl9raW5kPTksIFdoaWxlX2tpbmQ9MTAsCisgICAgICAgICAgICAgICAgICBJZl9raW5kPTExLCBXaXRoX2tpbmQ9MTIsIEFzeW5jV2l0aF9raW5kPTEzLCBSYWlzZV9raW5kPTE0LAorICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTUsIEFzc2VydF9raW5kPTE2LCBJbXBvcnRfa2luZD0xNywKKyAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xOCwgR2xvYmFsX2tpbmQ9MTksIE5vbmxvY2FsX2tpbmQ9MjAsCisgICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MjEsIFBhc3Nfa2luZD0yMiwgQnJlYWtfa2luZD0yMywgQ29udGludWVfa2luZD0yNH07CiBzdHJ1Y3QgX3N0bXQgewogICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTgyLDEwICs4MywxNiBAQAogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c190eSBhcmdzOworICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CisgICAgICAgICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgICAgICBleHByX3R5IHJldHVybnM7CisgICAgICAgIH0gQXN5bmNGdW5jdGlvbkRlZjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYmFzZXM7CiAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHM7Ci0gICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzOwotICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpkZWNvcmF0b3JfbGlzdDsKICAgICAgICAgfSBDbGFzc0RlZjsKQEAgLTExNyw2ICsxMjQsMTMgQEAKICAgICAgICAgfSBGb3I7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGl0ZXI7CisgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKKyAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CisgICAgICAgIH0gQXN5bmNGb3I7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0ZXN0OwogICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOwpAQCAtMTM0LDYgKzE0OCwxMSBAQAogICAgICAgICB9IFdpdGg7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKml0ZW1zOworICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CisgICAgICAgIH0gQXN5bmNXaXRoOworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgZXhjOwogICAgICAgICAgICAgZXhwcl90eSBjYXVzZTsKICAgICAgICAgfSBSYWlzZTsKQEAgLTE4MCwxMSArMTk5LDExIEBACiBlbnVtIF9leHByX2tpbmQge0Jvb2xPcF9raW5kPTEsIEJpbk9wX2tpbmQ9MiwgVW5hcnlPcF9raW5kPTMsIExhbWJkYV9raW5kPTQsCiAgICAgICAgICAgICAgICAgICBJZkV4cF9raW5kPTUsIERpY3Rfa2luZD02LCBTZXRfa2luZD03LCBMaXN0Q29tcF9raW5kPTgsCiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBZaWVsZF9raW5kPTEyLCBZaWVsZEZyb21fa2luZD0xMywgQ29tcGFyZV9raW5kPTE0LAotICAgICAgICAgICAgICAgICAgQ2FsbF9raW5kPTE1LCBOdW1fa2luZD0xNiwgU3RyX2tpbmQ9MTcsIEJ5dGVzX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0xOSwgRWxsaXBzaXNfa2luZD0yMCwgQXR0cmlidXRlX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBTdWJzY3JpcHRfa2luZD0yMiwgU3RhcnJlZF9raW5kPTIzLCBOYW1lX2tpbmQ9MjQsCi0gICAgICAgICAgICAgICAgICBMaXN0X2tpbmQ9MjUsIFR1cGxlX2tpbmQ9MjZ9OworICAgICAgICAgICAgICAgICAgQXdhaXRfa2luZD0xMiwgWWllbGRfa2luZD0xMywgWWllbGRGcm9tX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBDb21wYXJlX2tpbmQ9MTUsIENhbGxfa2luZD0xNiwgTnVtX2tpbmQ9MTcsIFN0cl9raW5kPTE4LAorICAgICAgICAgICAgICAgICAgQnl0ZXNfa2luZD0xOSwgTmFtZUNvbnN0YW50X2tpbmQ9MjAsIEVsbGlwc2lzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVfa2luZD0yMiwgU3Vic2NyaXB0X2tpbmQ9MjMsIFN0YXJyZWRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIE5hbWVfa2luZD0yNSwgTGlzdF9raW5kPTI2LCBUdXBsZV9raW5kPTI3fTsKIHN0cnVjdCBfZXhwciB7CiAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgdW5pb24gewpAQCAtMjQ3LDYgKzI2NiwxMCBAQAogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIH0gQXdhaXQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgfSBZaWVsZDsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CkBAIC0yNjMsOCArMjg2LDYgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZnVuYzsKICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzOwogICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzOwotICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzOwogICAgICAgICB9IENhbGw7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewpAQCAtNDA2LDExICs0MjcsMTQgQEAKIHN0bXRfdHkgX1B5X0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzX3R5IGFyZ3MsIGFzZGxfc2VxICogYm9keSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGV4cHJfdHkgcmV0dXJucywgaW50IGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIENsYXNzRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSBfUHlfQ2xhc3NEZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCisjZGVmaW5lIEFzeW5jRnVuY3Rpb25EZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSBfUHlfQXN5bmNGdW5jdGlvbkRlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCitzdG10X3R5IF9QeV9Bc3luY0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzX3R5IGFyZ3MsIGFzZGxfc2VxICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgZXhwcl90eSByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBDbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIF9QeV9DbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCiBzdG10X3R5IF9QeV9DbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLCBleHByX3R5IGt3YXJncywgYXNkbF9zZXEgKiBib2R5LAotICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBSZXR1cm4oYTAsIGExLCBhMiwgYTMpIF9QeV9SZXR1cm4oYTAsIGExLCBhMiwgYTMpCiBzdG10X3R5IF9QeV9SZXR1cm4oZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRGVsZXRlKGEwLCBhMSwgYTIsIGEzKSBfUHlfRGVsZXRlKGEwLCBhMSwgYTIsIGEzKQpAQCAtNDI1LDYgKzQ0OSw5IEBACiAjZGVmaW5lIEZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X0ZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKIHN0bXRfdHkgX1B5X0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICBvcmVsc2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEFzeW5jRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQXN5bmNGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9Bc3luY0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICoKKyAgICAgICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgV2hpbGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1doaWxlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBzdG10X3R5IF9QeV9XaGlsZShleHByX3R5IHRlc3QsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDM0LDYgKzQ2MSw5IEBACiAjZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9XaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQXN5bmNXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X0FzeW5jV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCitzdG10X3R5IF9QeV9Bc3luY1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQKKyAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1JhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1JhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQ5Niw2ICs1MjYsOCBAQAogI2RlZmluZSBHZW5lcmF0b3JFeHAoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfR2VuZXJhdG9yRXhwKGEwLCBhMSwgYTIsIGEzLCBhNCkKIGV4cHJfdHkgX1B5X0dlbmVyYXRvckV4cChleHByX3R5IGVsdCwgYXNkbF9zZXEgKiBnZW5lcmF0b3JzLCBpbnQgbGluZW5vLCBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEF3YWl0KGEwLCBhMSwgYTIsIGEzKSBfUHlfQXdhaXQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Bd2FpdChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBZaWVsZChhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfWWllbGQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKQpAQCAtNTA0LDEwICs1MzYsOSBAQAogI2RlZmluZSBDb21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Db21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9Db21wYXJlKGV4cHJfdHkgbGVmdCwgYXNkbF9pbnRfc2VxICogb3BzLCBhc2RsX3NlcSAqIGNvbXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBDYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgX1B5X0NhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotZXhwcl90eSBfUHlfQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgZXhwcl90eQotICAgICAgICAgICAgICAgICBzdGFyYXJncywgZXhwcl90eSBrd2FyZ3MsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCi0gICAgICAgICAgICAgICAgICphcmVuYSk7CisjZGVmaW5lIENhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0NhbGwoZXhwcl90eSBmdW5jLCBhc2RsX3NlcSAqIGFyZ3MsIGFzZGxfc2VxICoga2V5d29yZHMsIGludAorICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIE51bShhMCwgYTEsIGEyLCBhMykgX1B5X051bShhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggMmRkODI5MC4uODU4ZGJkMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAidHVwbGVvYmplY3QuaCIKICNpbmNsdWRlICJsaXN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgorI2luY2x1ZGUgIm9kaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZW51bW9iamVjdC5oIgogI2luY2x1ZGUgInNldG9iamVjdC5oIgogI2luY2x1ZGUgIm1ldGhvZG9iamVjdC5oIgpAQCAtMTEyLDYgKzExMyw3IEBACiAjaW5jbHVkZSAicHlhcmVuYS5oIgogI2luY2x1ZGUgIm1vZHN1cHBvcnQuaCIKICNpbmNsdWRlICJweXRob25ydW4uaCIKKyNpbmNsdWRlICJweWxpZmVjeWNsZS5oIgogI2luY2x1ZGUgImNldmFsLmgiCiAjaW5jbHVkZSAic3lzbW9kdWxlLmgiCiAjaW5jbHVkZSAiaW50cmNoZWNrLmgiCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Fic3RyYWN0LmggYi9JbmNsdWRlL2Fic3RyYWN0LmgKaW5kZXggNmU4NTBiOC4uODNkYmY5NCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hYnN0cmFjdC5oCisrKyBiL0luY2x1ZGUvYWJzdHJhY3QuaApAQCAtMjY2LDYgKzI2NiwxMiBAQAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmNhbGxhYmxlX29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3aGVyZSk7CisjZW5kaWYKKwogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKQEAgLTY1OCw2ICs2NjQsMTIgQEAKICAgICAgbzEqbzIuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKKworICAgICAgIC8qCisgICAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uOiBvMSBAIG8yLgorICAgICAgICovCisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiAKICAgICAgICAvKgpAQCAtODMyLDYgKzg0NCwxMiBAQAogICAgICBvMSAqPSBvMi4KICAgICAgICAqLwogCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKKworICAgICAgIC8qCisgICAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uOiBvMSBAPSBvMi4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm8yKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmggYi9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaAppbmRleCAxNDk4YjhmLi4xMWQ1ZjQyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaAorKysgYi9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaApAQCAtMjEsOCArMjEsOCBAQAogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CiAKLS8qIFRoaXMgb25lIGdldHMgdGhlIHJhdyBhcmd1bWVudCBsaXN0LiAqLwotZXh0ZXJuIFB5T2JqZWN0KiBfUHlfYnl0ZXNfbWFrZXRyYW5zKFB5T2JqZWN0ICphcmdzKTsKKy8qIFRoZSBtYWtldHJhbnMoKSBzdGF0aWMgbWV0aG9kLiAqLworZXh0ZXJuIFB5T2JqZWN0KiBfUHlfYnl0ZXNfbWFrZXRyYW5zKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKTsKIAogLyogU2hhcmVkIF9fZG9jX18gc3RyaW5ncy4gKi8KIGV4dGVybiBjb25zdCBjaGFyIF9QeV9pc3NwYWNlX19kb2NfX1tdOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IDBlZThkMzYuLmUzNzliYWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDYgKzYyLDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUJ5dGVzX1Jlc2l6ZShQeU9iamVjdCAqKiwgUHlfc3NpemVfdCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCiAJCQkJCQkgICBjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NldmFsLmggYi9JbmNsdWRlL2NldmFsLmgKaW5kZXggNjgxMTM2Ny4uZWM2MjU3MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jZXZhbC5oCisrKyBiL0luY2x1ZGUvY2V2YWwuaApAQCAtMjMsNiArMjMsOCBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0UHJvZmlsZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0VHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCk7CiAjZW5kaWYKIAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggN2M3ZTViZi4uNTZlNmVjMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTIxLDcgKzIxLDEyIEBACiAgICAgUHlPYmplY3QgKmNvX3Zhcm5hbWVzOwkvKiB0dXBsZSBvZiBzdHJpbmdzIChsb2NhbCB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fZnJlZXZhcnM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGZyZWUgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2NlbGx2YXJzOyAgICAgIC8qIHR1cGxlIG9mIHN0cmluZ3MgKGNlbGwgdmFyaWFibGUgbmFtZXMpICovCi0gICAgLyogVGhlIHJlc3QgZG9lc24ndCBjb3VudCBmb3IgaGFzaCBvciBjb21wYXJpc29ucyAqLworICAgIC8qIFRoZSByZXN0IGFyZW4ndCB1c2VkIGluIGVpdGhlciBoYXNoIG9yIGNvbXBhcmlzb25zLCBleGNlcHQgZm9yCisgICAgICAgY29fbmFtZSAodXNlZCBpbiBib3RoKSBhbmQgY29fZmlyc3RsaW5lbm8gKHVzZWQgb25seSBpbgorICAgICAgIGNvbXBhcmlzb25zKS4gIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIKKyAgICAgICBmb3IgdHJhY2ViYWNrcyBhbmQgZGVidWdnZXJzOyBvdGhlcndpc2UsIGNvbnN0YW50IGRlLWR1cGxpY2F0aW9uCisgICAgICAgd291bGQgY29sbGFwc2UgaWRlbnRpY2FsIGZ1bmN0aW9ucy9sYW1iZGFzIGRlZmluZWQgb24gZGlmZmVyZW50IGxpbmVzLgorICAgICovCiAgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwpAQCAtNDYsNiArNTEsMTEgQEAKICovCiAjZGVmaW5lIENPX05PRlJFRSAgICAgICAweDAwNDAKIAorLyogVGhlIENPX0NPUk9VVElORSBmbGFnIGlzIHNldCBmb3IgY29yb3V0aW5lIGZ1bmN0aW9ucyAoZGVmaW5lZCB3aXRoCisgICBgYGFzeW5jIGRlZmBgIGtleXdvcmRzKSAqLworI2RlZmluZSBDT19DT1JPVVRJTkUgICAgICAgICAgICAweDAwODAKKyNkZWZpbmUgQ09fSVRFUkFCTEVfQ09ST1VUSU5FICAgMHgwMTAwCisKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCiAjZGVmaW5lIENPX0dFTkVSQVRPUl9BTExPV0VEICAgIDB4MTAwMApAQCAtNTcsNiArNjcsNyBAQAogI2RlZmluZSBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyAweDIwMDAwCiAKICNkZWZpbmUgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgIDB4NDAwMDAKKyNkZWZpbmUgQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QICAweDgwMDAwCiAKIC8qIFRoaXMgdmFsdWUgaXMgZm91bmQgaW4gdGhlIGNvX2NlbGwyYXJnIGFycmF5IHdoZW4gdGhlIGFzc29jaWF0ZWQgY2VsbAogICAgdmFyaWFibGUgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbiBhcmd1bWVudC4gVGhlIG1heGltdW0gbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGVjcy5oIGIvSW5jbHVkZS9jb2RlY3MuaAppbmRleCBiMzA4OGU0Li45ZTRmMzA1IDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGVjcy5oCisrKyBiL0luY2x1ZGUvY29kZWNzLmgKQEAgLTcxLDcgKzcxLDcgQEAKICAgIG9iamVjdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUgZW5jb2RlciBmdW5jdGlvbiBmb3VuZCBmb3IgdGhlIGdpdmVuCiAgICBlbmNvZGluZyB1c2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgbWV0aG9kIGRlZmluZWQgYnkgZXJyb3JzLiBlcnJvcnMKICAgIG1heSBiZSBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBtZXRob2QgZGVmaW5lZCBmb3IgdGhlIGNvZGVjLgotICAgCisKICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2Ugbm8gZW5jb2RlciBjYW4gYmUgZm91bmQuCiAKICAqLwpAQCAtODcsNyArODcsNyBAQAogICAgb2JqZWN0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZSBkZWNvZGVyIGZ1bmN0aW9uIGZvdW5kIGZvciB0aGUgZ2l2ZW4KICAgIGVuY29kaW5nIHVzaW5nIHRoZSBlcnJvciBoYW5kbGluZyBtZXRob2QgZGVmaW5lZCBieSBlcnJvcnMuIGVycm9ycwogICAgbWF5IGJlIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG1ldGhvZCBkZWZpbmVkIGZvciB0aGUgY29kZWMuCi0gICAKKwogICAgUmFpc2VzIGEgTG9va3VwRXJyb3IgaW4gY2FzZSBubyBlbmNvZGVyIGNhbiBiZSBmb3VuZC4KIAogICovCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAogCiAKLS8qIC0tLSBDb2RlYyBMb29rdXAgQVBJcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKy8qIC0tLSBDb2RlYyBMb29rdXAgQVBJcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICBBbGwgQVBJcyByZXR1cm4gYSBjb2RlYyBvYmplY3Qgd2l0aCBpbmNyZW1lbnRlZCByZWZjb3VudCBhbmQgYXJlCiAgICBiYXNlZCBvbiBfUHlDb2RlY19Mb29rdXAoKS4gIFRoZSBzYW1lIGNvbW1lbnRzIHcvciB0byB0aGUgZW5jb2RpbmcKQEAgLTIyNSw2ICsyMjUsOSBAQAogLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXHgsIFx1IGFuZCBcVSkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpOwogCisvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChcTiwgXHgsIFx1IGFuZCBcVSkgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19OYW1lUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKTsKKwogUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X2hleGRpZ2l0czsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBpbGUuaCBiL0luY2x1ZGUvY29tcGlsZS5oCmluZGV4IGM2NjUwZDcuLmVjZDhkYzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGlsZS5oCisrKyBiL0luY2x1ZGUvY29tcGlsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEZVVFVSRV9QUklOVF9GVU5DVElPTiAicHJpbnRfZnVuY3Rpb24iCiAjZGVmaW5lIEZVVFVSRV9VTklDT0RFX0xJVEVSQUxTICJ1bmljb2RlX2xpdGVyYWxzIgogI2RlZmluZSBGVVRVUkVfQkFSUllfQVNfQkRGTCAiYmFycnlfYXNfRkxVRkwiCisjZGVmaW5lIEZVVFVSRV9HRU5FUkFUT1JfU1RPUCAiZ2VuZXJhdG9yX3N0b3AiCiAKIHN0cnVjdCBfbW9kOyAvKiBEZWNsYXJlIHRoZSBleGlzdGVuY2Ugb2YgdGhpcyB0eXBlICovCiAjZGVmaW5lIFB5QVNUX0NvbXBpbGUobW9kLCBzLCBmLCBhcikgUHlBU1RfQ29tcGlsZUV4KG1vZCwgcywgZiwgLTEsIGFyKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAppbmRleCAxOTM0ZjNiLi5jYjhjNTJjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAorKysgYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaApAQCAtMTQsMjEgKzE0LDEzIEBACiAKIC8qIE9wZXJhdGlvbnMgb24gY29tcGxleCBudW1iZXJzIGZyb20gY29tcGxleG1vZHVsZS5jICovCiAKLSNkZWZpbmUgY19zdW0gX1B5X2Nfc3VtCi0jZGVmaW5lIGNfZGlmZiBfUHlfY19kaWZmCi0jZGVmaW5lIGNfbmVnIF9QeV9jX25lZwotI2RlZmluZSBjX3Byb2QgX1B5X2NfcHJvZAotI2RlZmluZSBjX3F1b3QgX1B5X2NfcXVvdAotI2RlZmluZSBjX3BvdyBfUHlfY19wb3cKLSNkZWZpbmUgY19hYnMgX1B5X2NfYWJzCi0KLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19zdW0oUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfZGlmZihQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19uZWcoUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfcHJvZChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19xdW90KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX3BvdyhQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoZG91YmxlKSBjX2FicyhQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2Nfc3VtKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19kaWZmKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19uZWcoUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3Byb2QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3F1b3QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3BvdyhQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfY19hYnMoUHlfY29tcGxleCk7CiAjZW5kaWYKIAogLyogQ29tcGxleCBvYmplY3QgaW50ZXJmYWNlICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGVmMTIyYmQuLjMyMGY5ZWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0yNyw2ICsyNywxMSBAQAogICAgIFB5T2JqZWN0ICoqbWFfdmFsdWVzOwogfSBQeURpY3RPYmplY3Q7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlEaWN0T2JqZWN0ICpkdl9kaWN0OworfSBfUHlEaWN0Vmlld09iamVjdDsKKwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RfVHlwZTsKQEAgLTQwLDkgKzQ1LDkgQEAKICNkZWZpbmUgUHlEaWN0X0NoZWNrKG9wKSBcCiAgICAgICAgICAgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfRElDVF9TVUJDTEFTUykKICNkZWZpbmUgUHlEaWN0X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0X1R5cGUpCi0jZGVmaW5lIFB5RGljdEtleXNfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0S2V5c19UeXBlKQotI2RlZmluZSBQeURpY3RJdGVtc19DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeURpY3RJdGVtc19UeXBlKQotI2RlZmluZSBQeURpY3RWYWx1ZXNfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0VmFsdWVzX1R5cGUpCisjZGVmaW5lIFB5RGljdEtleXNfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5RGljdEtleXNfVHlwZSkKKyNkZWZpbmUgUHlEaWN0SXRlbXNfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5RGljdEl0ZW1zX1R5cGUpCisjZGVmaW5lIFB5RGljdFZhbHVlc19DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlEaWN0VmFsdWVzX1R5cGUpCiAvKiBUaGlzIGV4Y2x1ZGVzIFZhbHVlcywgc2luY2UgdGhleSBhcmUgbm90IHNldHMuICovCiAjIGRlZmluZSBQeURpY3RWaWV3U2V0X0NoZWNrKG9wKSBcCiAgICAgKFB5RGljdEtleXNfQ2hlY2sob3ApIHx8IFB5RGljdEl0ZW1zX0NoZWNrKG9wKSkKQEAgLTUwLDYgKzU1LDEwIEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X05ldyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CkBAIC01OCw2ICs2NywxMCBAQAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGludCkgX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSwgUHlfaGFzaF90IGhhc2gpOworI2VuZGlmCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCkBAIC02Nyw2ICs4MCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSwgUHlfaGFzaF90ICpoYXNoKTsKK1B5T2JqZWN0ICpfUHlEaWN0Vmlld19OZXcoUHlPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9LZXlzKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9WYWx1ZXMoUHlPYmplY3QgKm1wKTsKQEAgLTgwLDYgKzk0LDkgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9NYXliZVVudHJhY2soUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CiBQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CitQeU9iamVjdCAqX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICopOworUHlPYmplY3QgKl9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5T2JqZWN0ICpfUHlEaWN0X0Zyb21LZXlzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2RlZmluZSBfUHlEaWN0X0hhc1NwbGl0VGFibGUoZCkgKChkKS0+bWFfdmFsdWVzICE9IE5VTEwpCiAKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKQEAgLTk3LDYgKzExNCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb3RoZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOworI2VuZGlmCisKIC8qIFB5RGljdF9NZXJnZUZyb21TZXEyIHVwZGF0ZXMvbWVyZ2VzIGZyb20gYW4gaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZwogICAgaXRlcmFibGUgb2JqZWN0cyBvZiBsZW5ndGggMi4gIElmIG92ZXJyaWRlIGlzIHRydWUsIHRoZSBsYXN0IG9jY3VycmVuY2UKICAgIG9mIGEga2V5IHdpbnMsIGVsc2UgdGhlIGZpcnN0LiAgVGhlIFB5dGhvbiBkaWN0IGNvbnN0cnVjdG9yIGRpY3Qoc2VxMikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZW9iamVjdC5oIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKaW5kZXggMDkzOTc0NC4uMDMxNTVkMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKQEAgLTMyLDE3ICszMiw2IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RmlsZV9OZXdTdGRQcmludGVyKGludCk7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTdGRQcmludGVyX1R5cGU7Ci0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKLS8qIEEgcm91dGluZSB0byBjaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvbiBXaW5kb3dzLiAgUmV0dXJucyAwCi0gKiBhbmQgc2V0cyBlcnJubyB0byBFQkFERiBpZiBpdCBpc24ndC4gIFRoaXMgaXMgdG8gYXZvaWQgQXNzZXJ0aW9ucwotICogZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgV2luZG93cyBDUlQgYmVnaW5uaW5nIHdpdGgKLSAqIFZpc3VhbCBTdHVkaW8gMjAwNQotICovCi1pbnQgX1B5VmVyaWZ5X2ZkKGludCBmZCk7Ci0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCi0jZW5kaWYKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgY2FuIGJlIHNlbGVjdCgpLWVkLiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggZTliYWQ4MC4uYjRhNjgzYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC03LDMwICs3LDU5IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOwogCi1QeUFQSV9GVU5DKHdjaGFyX3QgKikgX1B5X2NoYXIyd2NoYXIoCitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfRGVjb2RlTG9jYWxlKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwogCi1QeUFQSV9GVU5DKGNoYXIqKSBfUHlfd2NoYXIyY2hhcigKK1B5QVBJX0ZVTkMoY2hhciopIFB5X0VuY29kZUxvY2FsZSgKICAgICBjb25zdCB3Y2hhcl90ICp0ZXh0LAogICAgIHNpemVfdCAqZXJyb3JfcG9zKTsKIAotI2lmIGRlZmluZWQoSEFWRV9TVEFUKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQotUHlBUElfRlVOQyhpbnQpIF9QeV93c3RhdCgKLSAgICBjb25zdCB3Y2hhcl90KiBwYXRoLAotICAgIHN0cnVjdCBzdGF0ICpidWYpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisjaWZkZWYgTVNfV0lORE9XUworc3RydWN0IF9QeV9zdGF0X3N0cnVjdCB7CisgICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7CisgICAgX19pbnQ2NCBzdF9pbm87CisgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKKyAgICBpbnQgc3Rfbmxpbms7CisgICAgaW50IHN0X3VpZDsKKyAgICBpbnQgc3RfZ2lkOworICAgIHVuc2lnbmVkIGxvbmcgc3RfcmRldjsKKyAgICBfX2ludDY0IHN0X3NpemU7CisgICAgdGltZV90IHN0X2F0aW1lOworICAgIGludCBzdF9hdGltZV9uc2VjOworICAgIHRpbWVfdCBzdF9tdGltZTsKKyAgICBpbnQgc3RfbXRpbWVfbnNlYzsKKyAgICB0aW1lX3Qgc3RfY3RpbWU7CisgICAgaW50IHN0X2N0aW1lX25zZWM7CisgICAgdW5zaWduZWQgbG9uZyBzdF9maWxlX2F0dHJpYnV0ZXM7Cit9OworI2Vsc2UKKyMgIGRlZmluZSBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdAogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1NUQVQKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXQoCisgICAgaW50IGZkLAorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cyk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXRfbm9yYWlzZSgKKyAgICBpbnQgZmQsCisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc3RhdCgKICAgICBQeU9iamVjdCAqcGF0aCwKLSAgICBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1Zik7Ci0jZW5kaWYKKyAgICBzdHJ1Y3Qgc3RhdCAqc3RhdHVzKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfb3Blbl9ub3JhaXNlKAorICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAorICAgIGludCBmbGFncyk7CiAjZW5kaWYKIAogUHlBUElfRlVOQyhGSUxFICopIF9QeV93Zm9wZW4oCkBAIC00NSw2ICs3NCwyMSBAQAogICAgIFB5T2JqZWN0ICpwYXRoLAogICAgIGNvbnN0IGNoYXIgKm1vZGUpOwogCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9yZWFkKAorICAgIGludCBmZCwKKyAgICB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfd3JpdGUoCisgICAgaW50IGZkLAorICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICBzaXplX3QgY291bnQpOworCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV93cml0ZV9ub3JhaXNlKAorICAgIGludCBmZCwKKyAgICBjb25zdCB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKwogI2lmZGVmIEhBVkVfUkVBRExJTksKIFB5QVBJX0ZVTkMoaW50KSBfUHlfd3JlYWRsaW5rKAogICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC03MCw4ICsxMTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MpOwogCiBQeUFQSV9GVU5DKGludCkgX1B5X2R1cChpbnQgZmQpOworCisjaWZuZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZ2V0X2Jsb2NraW5nKGludCBmZCk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKTsKKyNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCisvKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAorICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKKyAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCisgKiBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAqLworaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOworCisjZWxzZQorI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCiAjZW5kaWYKIAorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ2Vub2JqZWN0LmggYi9JbmNsdWRlL2dlbm9iamVjdC5oCmluZGV4IDY1ZjFlY2YuLmVlMGIxMzAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ2Vub2JqZWN0LmgKKysrIGIvSW5jbHVkZS9nZW5vYmplY3QuaApAQCAtMjUsNiArMjUsMTIgQEAKIAogICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCiAgICAgUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OworCisgICAgLyogTmFtZSBvZiB0aGUgZ2VuZXJhdG9yLiAqLworICAgIFB5T2JqZWN0ICpnaV9uYW1lOworCisgICAgLyogUXVhbGlmaWVkIG5hbWUgb2YgdGhlIGdlbmVyYXRvci4gKi8KKyAgICBQeU9iamVjdCAqZ2lfcXVhbG5hbWU7CiB9IFB5R2VuT2JqZWN0OwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlHZW5fVHlwZTsKQEAgLTMyLDEyICszOCwyMSBAQAogI2RlZmluZSBQeUdlbl9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlHZW5fVHlwZSkKICNkZWZpbmUgUHlHZW5fQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUdlbl9UeXBlKQogCisjZGVmaW5lIFB5R2VuX0NoZWNrQ29yb3V0aW5lRXhhY3Qob3ApIChQeUdlbl9DaGVja0V4YWN0KG9wKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChQeUNvZGVPYmplY3QqKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeUdlbk9iamVjdCopb3ApLT5naV9jb2RlKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Y29fZmxhZ3MgJiAoQ09fSVRFUkFCTEVfQ09ST1VUSU5FIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSkpKQorCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5R2VuX05ldyhzdHJ1Y3QgX2ZyYW1lICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOwogUHlBUElfRlVOQyhpbnQpIFB5R2VuX05lZWRzRmluYWxpemluZyhQeUdlbk9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKiopOwogUHlPYmplY3QgKl9QeUdlbl9TZW5kKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHZW5fRmluYWxpemUoUHlPYmplY3QgKnNlbGYpOwogCitQeU9iamVjdCAqX1B5R2VuX0dldEF3YWl0YWJsZUl0ZXIoUHlPYmplY3QgKm8pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCAzZWM5NDlhLi5kMDMwYmMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC02LDc5ICs2LDgyIEBACiAjZGVmaW5lIGRlY29yYXRvciAyNTkKICNkZWZpbmUgZGVjb3JhdG9ycyAyNjAKICNkZWZpbmUgZGVjb3JhdGVkIDI2MQotI2RlZmluZSBmdW5jZGVmIDI2MgotI2RlZmluZSBwYXJhbWV0ZXJzIDI2MwotI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NAotI2RlZmluZSB0ZnBkZWYgMjY1Ci0jZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NgotI2RlZmluZSB2ZnBkZWYgMjY3Ci0jZGVmaW5lIHN0bXQgMjY4Ci0jZGVmaW5lIHNpbXBsZV9zdG10IDI2OQotI2RlZmluZSBzbWFsbF9zdG10IDI3MAotI2RlZmluZSBleHByX3N0bXQgMjcxCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzIKLSNkZWZpbmUgYXVnYXNzaWduIDI3MwotI2RlZmluZSBkZWxfc3RtdCAyNzQKLSNkZWZpbmUgcGFzc19zdG10IDI3NQotI2RlZmluZSBmbG93X3N0bXQgMjc2Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc3Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc4Ci0jZGVmaW5lIHJldHVybl9zdG10IDI3OQotI2RlZmluZSB5aWVsZF9zdG10IDI4MAotI2RlZmluZSByYWlzZV9zdG10IDI4MQotI2RlZmluZSBpbXBvcnRfc3RtdCAyODIKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjgzCi0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NAotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODUKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg2Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODcKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OAotI2RlZmluZSBkb3R0ZWRfbmFtZSAyODkKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkwCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkxCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MgotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5MwotI2RlZmluZSBpZl9zdG10IDI5NAotI2RlZmluZSB3aGlsZV9zdG10IDI5NQotI2RlZmluZSBmb3Jfc3RtdCAyOTYKLSNkZWZpbmUgdHJ5X3N0bXQgMjk3Ci0jZGVmaW5lIHdpdGhfc3RtdCAyOTgKLSNkZWZpbmUgd2l0aF9pdGVtIDI5OQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMAotI2RlZmluZSBzdWl0ZSAzMDEKLSNkZWZpbmUgdGVzdCAzMDIKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzAzCi0jZGVmaW5lIGxhbWJkZWYgMzA0Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNQotI2RlZmluZSBvcl90ZXN0IDMwNgotI2RlZmluZSBhbmRfdGVzdCAzMDcKLSNkZWZpbmUgbm90X3Rlc3QgMzA4Ci0jZGVmaW5lIGNvbXBhcmlzb24gMzA5Ci0jZGVmaW5lIGNvbXBfb3AgMzEwCi0jZGVmaW5lIHN0YXJfZXhwciAzMTEKLSNkZWZpbmUgZXhwciAzMTIKLSNkZWZpbmUgeG9yX2V4cHIgMzEzCi0jZGVmaW5lIGFuZF9leHByIDMxNAotI2RlZmluZSBzaGlmdF9leHByIDMxNQotI2RlZmluZSBhcml0aF9leHByIDMxNgotI2RlZmluZSB0ZXJtIDMxNwotI2RlZmluZSBmYWN0b3IgMzE4Ci0jZGVmaW5lIHBvd2VyIDMxOQotI2RlZmluZSBhdG9tIDMyMAotI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyMQotI2RlZmluZSB0cmFpbGVyIDMyMgotI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyMwotI2RlZmluZSBzdWJzY3JpcHQgMzI0Ci0jZGVmaW5lIHNsaWNlb3AgMzI1Ci0jZGVmaW5lIGV4cHJsaXN0IDMyNgotI2RlZmluZSB0ZXN0bGlzdCAzMjcKLSNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzI4Ci0jZGVmaW5lIGNsYXNzZGVmIDMyOQotI2RlZmluZSBhcmdsaXN0IDMzMAotI2RlZmluZSBhcmd1bWVudCAzMzEKLSNkZWZpbmUgY29tcF9pdGVyIDMzMgotI2RlZmluZSBjb21wX2ZvciAzMzMKLSNkZWZpbmUgY29tcF9pZiAzMzQKLSNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKLSNkZWZpbmUgeWllbGRfZXhwciAzMzYKLSNkZWZpbmUgeWllbGRfYXJnIDMzNworI2RlZmluZSBhc3luY19mdW5jZGVmIDI2MgorI2RlZmluZSBmdW5jZGVmIDI2MworI2RlZmluZSBwYXJhbWV0ZXJzIDI2NAorI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NQorI2RlZmluZSB0ZnBkZWYgMjY2CisjZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NworI2RlZmluZSB2ZnBkZWYgMjY4CisjZGVmaW5lIHN0bXQgMjY5CisjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAorI2RlZmluZSBzbWFsbF9zdG10IDI3MQorI2RlZmluZSBleHByX3N0bXQgMjcyCisjZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKKyNkZWZpbmUgYXVnYXNzaWduIDI3NAorI2RlZmluZSBkZWxfc3RtdCAyNzUKKyNkZWZpbmUgcGFzc19zdG10IDI3NgorI2RlZmluZSBmbG93X3N0bXQgMjc3CisjZGVmaW5lIGJyZWFrX3N0bXQgMjc4CisjZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5CisjZGVmaW5lIHJldHVybl9zdG10IDI4MAorI2RlZmluZSB5aWVsZF9zdG10IDI4MQorI2RlZmluZSByYWlzZV9zdG10IDI4MgorI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKKyNkZWZpbmUgaW1wb3J0X25hbWUgMjg0CisjZGVmaW5lIGltcG9ydF9mcm9tIDI4NQorI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKKyNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3CisjZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKKyNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKKyNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCisjZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCisjZGVmaW5lIGFzc2VydF9zdG10IDI5MworI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAorI2RlZmluZSBhc3luY19zdG10IDI5NQorI2RlZmluZSBpZl9zdG10IDI5NgorI2RlZmluZSB3aGlsZV9zdG10IDI5NworI2RlZmluZSBmb3Jfc3RtdCAyOTgKKyNkZWZpbmUgdHJ5X3N0bXQgMjk5CisjZGVmaW5lIHdpdGhfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9pdGVtIDMwMQorI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgorI2RlZmluZSBzdWl0ZSAzMDMKKyNkZWZpbmUgdGVzdCAzMDQKKyNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1CisjZGVmaW5lIGxhbWJkZWYgMzA2CisjZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNworI2RlZmluZSBvcl90ZXN0IDMwOAorI2RlZmluZSBhbmRfdGVzdCAzMDkKKyNkZWZpbmUgbm90X3Rlc3QgMzEwCisjZGVmaW5lIGNvbXBhcmlzb24gMzExCisjZGVmaW5lIGNvbXBfb3AgMzEyCisjZGVmaW5lIHN0YXJfZXhwciAzMTMKKyNkZWZpbmUgZXhwciAzMTQKKyNkZWZpbmUgeG9yX2V4cHIgMzE1CisjZGVmaW5lIGFuZF9leHByIDMxNgorI2RlZmluZSBzaGlmdF9leHByIDMxNworI2RlZmluZSBhcml0aF9leHByIDMxOAorI2RlZmluZSB0ZXJtIDMxOQorI2RlZmluZSBmYWN0b3IgMzIwCisjZGVmaW5lIHBvd2VyIDMyMQorI2RlZmluZSBhdG9tX2V4cHIgMzIyCisjZGVmaW5lIGF0b20gMzIzCisjZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0CisjZGVmaW5lIHRyYWlsZXIgMzI1CisjZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2CisjZGVmaW5lIHN1YnNjcmlwdCAzMjcKKyNkZWZpbmUgc2xpY2VvcCAzMjgKKyNkZWZpbmUgZXhwcmxpc3QgMzI5CisjZGVmaW5lIHRlc3RsaXN0IDMzMAorI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKKyNkZWZpbmUgY2xhc3NkZWYgMzMyCisjZGVmaW5lIGFyZ2xpc3QgMzMzCisjZGVmaW5lIGFyZ3VtZW50IDMzNAorI2RlZmluZSBjb21wX2l0ZXIgMzM1CisjZGVmaW5lIGNvbXBfZm9yIDMzNgorI2RlZmluZSBjb21wX2lmIDMzNworI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAorI2RlZmluZSB5aWVsZF9leHByIDMzOQorI2RlZmluZSB5aWVsZF9hcmcgMzQwCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1tYXIuaCBiL0luY2x1ZGUvZ3JhbW1hci5oCmluZGV4IGJhN2QxOWQuLjg1MTIwYjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbW1hci5oCisrKyBiL0luY2x1ZGUvZ3JhbW1hci5oCkBAIC0zNyw3ICszNyw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgaW50CQkgc19uYXJjczsKICAgICBhcmMJCSpzX2FyYzsJCS8qIEFycmF5IG9mIGFyY3MgKi8KLQkKKwogICAgIC8qIE9wdGlvbmFsIGFjY2VsZXJhdG9ycyAqLwogICAgIGludAkJIHNfbG93ZXI7CS8qIExvd2VzdCBsYWJlbCBpbmRleCAqLwogICAgIGludAkJIHNfdXBwZXI7CS8qIEhpZ2hlc3QgbGFiZWwgaW5kZXggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbGlzdG9iamVjdC5oIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKaW5kZXggNzRjZjQ2Zi4uZGFhNTEzZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9saXN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgUHlMaXN0X0dFVF9JVEVNKG9wLCBpKSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSkKICNkZWZpbmUgUHlMaXN0X1NFVF9JVEVNKG9wLCBpLCB2KSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSA9ICh2KSkKICNkZWZpbmUgUHlMaXN0X0dFVF9TSVpFKG9wKSAgICBQeV9TSVpFKG9wKQorI2RlZmluZSBfUHlMaXN0X0lURU1TKG9wKSAgICAgICgoKFB5TGlzdE9iamVjdCAqKShvcCkpLT5vYl9pdGVtKQogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCBmZjQzMzA5Li5hZWQ1OWNlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTk4LDYgKzE5OCw5IEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIFB5T1Nfc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5T1Nfc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIAorLyogRm9yIHVzZSBieSB0aGUgZ2NkIGZ1bmN0aW9uIGluIG1hdGhtb2R1bGUuYyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0dDRChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmggYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCmluZGV4IDM4MmNhOTIuLmFiNWVlMDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaApAQCAtNDUsOSArNDUsNiBAQAogfSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0OwogCiAKLS8qIGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gMy41ICovCi0jZGVmaW5lIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQgMyAvKiBtdXN0IGJlID49IDMgKi8KLQogLyogbWVtb3J5dmlldyBzdGF0ZSBmbGFncyAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIG1hc3RlciBidWZmZXIgYmxvY2tlZCAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19DICAgICAgICAgICAweDAwMiAgLyogQy1jb250aWd1b3VzIGxheW91dCAqLwpAQCAtNjIsNyArNTksNiBAQAogICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCiAgICAgUHlfc3NpemVfdCBleHBvcnRzOyAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ1ZmZlciByZS1leHBvcnRzICovCiAgICAgUHlfYnVmZmVyIHZpZXc7ICAgICAgICAgICAgICAgLyogcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIHZpZXcgKi8KLSAgICBjaGFyIGZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUXTsgLyogZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiAzLjUgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggM2NjMmVhOS4uZTJhZDgwNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBACiB0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKIAogI2RlZmluZSBQeUNGdW5jdGlvbl9OZXcoTUwsIFNFTEYpIFB5Q0Z1bmN0aW9uX05ld0V4KChNTCksIChTRUxGKSwgTlVMTCkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwgCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KQEAgLTY2LDcgKzY2LDcgQEAKIAogLyogTUVUSF9DT0VYSVNUIGFsbG93cyBhIG1ldGhvZCB0byBiZSBlbnRlcmVkIGV2ZW4gdGhvdWdoIGEgc2xvdCBoYXMKICAgIGFscmVhZHkgZmlsbGVkIHRoZSBlbnRyeS4gIFdoZW4gZGVmaW5lZCwgdGhlIGZsYWcgYWxsb3dzIGEgc2VwYXJhdGUKLSAgIG1ldGhvZCwgIl9fY29udGFpbnNfXyIgZm9yIGV4YW1wbGUsIHRvIGNvZXhpc3Qgd2l0aCBhIGRlZmluZWQgCisgICBtZXRob2QsICJfX2NvbnRhaW5zX18iIGZvciBleGFtcGxlLCB0byBjb2V4aXN0IHdpdGggYSBkZWZpbmVkCiAgICBzbG90IGxpa2Ugc3FfY29udGFpbnMuICovCiAKICNkZWZpbmUgTUVUSF9DT0VYSVNUICAgMHgwMDQwCkBAIC03Nyw2ICs3Nyw3IEBACiAgICAgUHlNZXRob2REZWYgKm1fbWw7IC8qIERlc2NyaXB0aW9uIG9mIHRoZSBDIGZ1bmN0aW9uIHRvIGNhbGwgKi8KICAgICBQeU9iamVjdCAgICAqbV9zZWxmOyAvKiBQYXNzZWQgYXMgJ3NlbGYnIGFyZyB0byB0aGUgQyBmdW5jLCBjYW4gYmUgTlVMTCAqLwogICAgIFB5T2JqZWN0ICAgICptX21vZHVsZTsgLyogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlLCBjYW4gYmUgYW55dGhpbmcgKi8KKyAgICBQeU9iamVjdCAgICAqbV93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gUHlDRnVuY3Rpb25PYmplY3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA1ZGUwNDU4Li44MjlhYWY4IDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTIsMTMgKzEyLDEzIEBACiAvKiBJZiBQWV9TU0laRV9UX0NMRUFOIGlzIGRlZmluZWQsIGVhY2ggZnVuY3Rpb25zIHRyZWF0cyAjLXNwZWNpZmllcgogICAgdG8gbWVhbiBQeV9zc2l6ZV90ICovCiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgotI2RlZmluZSBQeUFyZ19QYXJzZQkJCV9QeUFyZ19QYXJzZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlCQlfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotI2RlZmluZSBQeUFyZ19WYVBhcnNlCQkJX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLSNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0jZGVmaW5lIFB5X0J1aWxkVmFsdWUJCQlfUHlfQnVpbGRWYWx1ZV9TaXplVAotI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUJCQlfUHlfVmFCdWlsZFZhbHVlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAorI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKICNlbmRpZgpAQCAtNTAsNiArNTAsMTMgQEAKICNkZWZpbmUgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgYykgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI2MsIGMpCiAjZGVmaW5lIFB5TW9kdWxlX0FkZFN0cmluZ01hY3JvKG0sIGMpIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICNjLCBjKQogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9FeGVjRGVmKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpOworI2VuZGlmCisKICNkZWZpbmUgUHlfQ0xFQU5VUF9TVVBQT1JURUQgMHgyMDAwMAogCiAjZGVmaW5lIFBZVEhPTl9BUElfVkVSU0lPTiAxMDEzCkBAIC02NywzNSArNzQsMzUgQEAKICAgIFBsZWFzZSBhZGQgYSBsaW5lIG9yIHR3byB0byB0aGUgdG9wIG9mIHRoaXMgbG9nIGZvciBlYWNoIEFQSQogICAgdmVyc2lvbiBjaGFuZ2U6CiAKLSAgIDIyLUZlYi0yMDA2ICBNdkwJMTAxMwlQRVAgMzUzIC0gbG9uZyBpbmRpY2VzIGZvciBzZXF1ZW5jZSBsZW5ndGhzCisgICAyMi1GZWItMjAwNiAgTXZMICAgICAxMDEzICAgIFBFUCAzNTMgLSBsb25nIGluZGljZXMgZm9yIHNlcXVlbmNlIGxlbmd0aHMKIAotICAgMTktQXVnLTIwMDIgIEd2UgkxMDEyCUNoYW5nZXMgdG8gc3RyaW5nIG9iamVjdCBzdHJ1Y3QgZm9yCi0gICAJCQkJaW50ZXJuaW5nIGNoYW5nZXMsIHNhdmluZyAzIGJ5dGVzLgorICAgMTktQXVnLTIwMDIgIEd2UiAgICAgMTAxMiAgICBDaGFuZ2VzIHRvIHN0cmluZyBvYmplY3Qgc3RydWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5pbmcgY2hhbmdlcywgc2F2aW5nIDMgYnl0ZXMuCiAKLSAgIDE3LUp1bC0yMDAxCUd2UgkxMDExCURlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCisgICAxNy1KdWwtMjAwMSAgR3ZSICAgICAxMDExICAgIERlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCiAKICAgIDI1LUphbi0yMDAxICBGTEQgICAgIDEwMTAgICAgUGFyYW1ldGVycyBhZGRlZCB0byBQeUNvZGVfTmV3KCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVfTmV3KCk7IFB5dGhvbiAyLjFhMgogCiAgICAxNC1NYXItMjAwMCAgR3ZSICAgICAxMDA5ICAgIFVuaWNvZGUgQVBJIGFkZGVkCiAKLSAgIDMtSmFuLTE5OTkJR3ZSCTEwMDcJRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKKyAgIDMtSmFuLTE5OTkgICBHdlIgICAgIDEwMDcgICAgRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKIAotICAgMy1EZWMtMTk5OAlHdlIJMTAwOAlQeXRob24gMS41LjJiMQorICAgMy1EZWMtMTk5OCAgIEd2UiAgICAgMTAwOCAgICBQeXRob24gMS41LjJiMQogCi0gICAxOC1KYW4tMTk5NwlHdlIJMTAwNwlzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcworICAgMTgtSmFuLTE5OTcgIEd2UiAgICAgMTAwNyAgICBzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcwogCi0gICAxMS1PY3QtMTk5NglHdlIJcmVuYW1lZCBQeV9FbGxpcHNlcyB0byBQeV9FbGxpcHNpcyA6LSgKKyAgIDExLU9jdC0xOTk2ICBHdlIgICAgIHJlbmFtZWQgUHlfRWxsaXBzZXMgdG8gUHlfRWxsaXBzaXMgOi0oCiAKLSAgIDMwLUp1bC0xOTk2CUd2UglTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCisgICAzMC1KdWwtMTk5NiAgR3ZSICAgICBTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCiAKLSAgIDIzLUp1bC0xOTk2CUd2UglGb3IgMS40IC0tIGJldHRlciBzYWZlIHRoYW4gc29ycnkgdGhpcyB0aW1lIDotKQorICAgMjMtSnVsLTE5OTYgIEd2UiAgICAgRm9yIDEuNCAtLSBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHRoaXMgdGltZSA6LSkKIAotICAgNy1Ob3YtMTk5NQlHdlIJS2V5d29yZCBhcmd1bWVudHMgKHNob3VsZCd2ZSBiZWVuIGRvbmUgYXQgMS4zIDotKCApCisgICA3LU5vdi0xOTk1ICAgR3ZSICAgICBLZXl3b3JkIGFyZ3VtZW50cyAoc2hvdWxkJ3ZlIGJlZW4gZG9uZSBhdCAxLjMgOi0oICkKIAotICAgMTAtSmFuLTE5OTUJR3ZSCVJlbmFtZWQgZ2xvYmFscyB0byBuZXcgbmFtaW5nIHNjaGVtZQorICAgMTAtSmFuLTE5OTUgIEd2UiAgICAgUmVuYW1lZCBnbG9iYWxzIHRvIG5ldyBuYW1pbmcgc2NoZW1lCiAKLSAgIDktSmFuLTE5OTUJR3ZSCUluaXRpYWwgdmVyc2lvbiAoaW5jb21wYXRpYmxlIHdpdGggb2xkZXIgQVBJKQorICAgOS1KYW4tMTk5NSAgIEd2UiAgICAgSW5pdGlhbCB2ZXJzaW9uIChpbmNvbXBhdGlibGUgd2l0aCBvbGRlciBBUEkpCiAqLwogCiAvKiBUaGUgUFlUSE9OX0FCSV9WRVJTSU9OIGlzIGludHJvZHVjZWQgaW4gUEVQIDM4NC4gRm9yIHRoZSBsaWZldGltZSBvZgpAQCAtMTA1LDEwICsxMTIsMTEgQEAKICNkZWZpbmUgUFlUSE9OX0FCSV9TVFJJTkcgIjMiCiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gLyogV2hlbiB3ZSBhcmUgdHJhY2luZyByZWZlcmVuY2UgY291bnRzLCByZW5hbWUgUHlNb2R1bGVfQ3JlYXRlMiBzbworIC8qIFdoZW4gd2UgYXJlIHRyYWNpbmcgcmVmZXJlbmNlIGNvdW50cywgcmVuYW1lIG1vZHVsZSBjcmVhdGlvbiBmdW5jdGlvbnMgc28KICAgICBtb2R1bGVzIGNvbXBpbGVkIHdpdGggaW5jb21wYXRpYmxlIHNldHRpbmdzIHdpbGwgZ2VuZXJhdGUgYQogICAgIGxpbmstdGltZSBlcnJvci4gKi8KICAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZTIgUHlNb2R1bGVfQ3JlYXRlMlRyYWNlUmVmcworICNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMlRyYWNlUmVmcwogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqLApAQCAtMTE2LDEyICsxMjQsMjcgQEAKIAogI2lmZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZShtb2R1bGUpIFwKLQlQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQorICAgICAgICBQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQogI2Vsc2UKICNkZWZpbmUgUHlNb2R1bGVfQ3JlYXRlKG1vZHVsZSkgXAotCVB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCisgICAgICAgIFB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKFB5TW9kdWxlRGVmICpkZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pOworCisjaWZkZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FCSV9WRVJTSU9OKQorI2Vsc2UKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FQSV9WRVJTSU9OKQorI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCisjZW5kaWYgLyogTmV3IGluIDMuNSAqLworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKGNoYXIgKikgX1B5X1BhY2thZ2VDb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCBmMTE5MzY0Li4yMjlkN2ZhIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTMwLDYgKzMwLDEyIEBACiBQeUFQSV9GVU5DKHN0cnVjdCBQeU1vZHVsZURlZiopIFB5TW9kdWxlX0dldERlZihQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKikgUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QqKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVEZWZfSW5pdChzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1vZHVsZURlZl9UeXBlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX0Jhc2UgewogICBQeU9iamVjdF9IRUFECiAgIFB5T2JqZWN0KiAoKm1faW5pdCkodm9pZCk7CkBAIC00NCwxOSArNTAsMzUgQEAKICAgICBOVUxMLCAvKiBtX2NvcHkgKi8gICAgICAgICAgXAogICB9CiAKK3N0cnVjdCBQeU1vZHVsZURlZl9TbG90OworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK3R5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3R7CisgICAgaW50IHNsb3Q7CisgICAgdm9pZCAqdmFsdWU7Cit9IFB5TW9kdWxlRGVmX1Nsb3Q7CisKKyNkZWZpbmUgUHlfbW9kX2NyZWF0ZSAxCisjZGVmaW5lIFB5X21vZF9leGVjIDIKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfbW9kX0xBU1RfU0xPVCAyCisjZW5kaWYKKworI2VuZGlmIC8qIE5ldyBpbiAzLjUgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgUHlNb2R1bGVEZWZ7CiAgIFB5TW9kdWxlRGVmX0Jhc2UgbV9iYXNlOwogICBjb25zdCBjaGFyKiBtX25hbWU7CiAgIGNvbnN0IGNoYXIqIG1fZG9jOwogICBQeV9zc2l6ZV90IG1fc2l6ZTsKICAgUHlNZXRob2REZWYgKm1fbWV0aG9kczsKLSAgaW5xdWlyeSBtX3JlbG9hZDsKKyAgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QqIG1fc2xvdHM7CiAgIHRyYXZlcnNlcHJvYyBtX3RyYXZlcnNlOwogICBpbnF1aXJ5IG1fY2xlYXI7CiAgIGZyZWVmdW5jIG1fZnJlZTsKIH1QeU1vZHVsZURlZjsKIAotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCAyZTRlMmJhLi42NTRhZDg1IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMjYsNyArMjYsNyBAQAogCiAvKiBOb2RlIGFjY2VzcyBmdW5jdGlvbnMgKi8KICNkZWZpbmUgTkNIKG4pCQkoKG4pLT5uX25jaGlsZHJlbikKLQkKKwogI2RlZmluZSBDSElMRChuLCBpKQkoJihuKS0+bl9jaGlsZFtpXSkKICNkZWZpbmUgUkNISUxEKG4sIGkpCShDSElMRChuLCBOQ0gobikgKyBpKSkKICNkZWZpbmUgVFlQRShuKQkJKChuKS0+bl90eXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNWY4NjJhYi4uOGFmY2JlOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC02NSw2ICs2NSw3IEBACiAjZXJyb3IgUHlfTElNSVRFRF9BUEkgaXMgaW5jb21wYXRpYmxlIHdpdGggUHlfREVCVUcsIFB5X1RSQUNFX1JFRlMsIGFuZCBQeV9SRUZfREVCVUcKICNlbmRpZgogCisKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAvKiBEZWZpbmUgcG9pbnRlcnMgdG8gc3VwcG9ydCBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgbGl2ZSBoZWFwIG9iamVjdHMuICovCiAjZGVmaW5lIF9QeU9iamVjdF9IRUFEX0VYVFJBICAgICAgICAgICAgXApAQCAtMjc1LDYgKzI3Niw5IEBACiAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3RydWVfZGl2aWRlOwogCiAgICAgdW5hcnlmdW5jIG5iX2luZGV4OworCisgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseTsKIH0gUHlOdW1iZXJNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yOTcsNiArMzAxLDExIEBACiAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0OwogfSBQeU1hcHBpbmdNZXRob2RzOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgIHVuYXJ5ZnVuYyBhbV9haXRlcjsKKyAgICB1bmFyeWZ1bmMgYW1fYW5leHQ7Cit9IFB5QXN5bmNNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgIGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyOwpAQCAtMzQyLDcgKzM1MSw3IEBACiAgICAgcHJpbnRmdW5jIHRwX3ByaW50OwogICAgIGdldGF0dHJmdW5jIHRwX2dldGF0dHI7CiAgICAgc2V0YXR0cmZ1bmMgdHBfc2V0YXR0cjsKLSAgICB2b2lkICp0cF9yZXNlcnZlZDsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSAqLworICAgIFB5QXN5bmNNZXRob2RzICp0cF9hc19hc3luYzsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSBvciB0cF9yZXNlcnZlZCAqLwogICAgIHJlcHJmdW5jIHRwX3JlcHI7CiAKICAgICAvKiBNZXRob2Qgc3VpdGVzIGZvciBzdGFuZGFyZCBjbGFzc2VzICovCkBAIC00NDksNiArNDU4LDcgQEAKICAgICAvKiBOb3RlOiB0aGVyZSdzIGEgZGVwZW5kZW5jeSBvbiB0aGUgb3JkZXIgb2YgdGhlc2UgbWVtYmVycwogICAgICAgIGluIHNsb3RwdHIoKSBpbiB0eXBlb2JqZWN0LmMgLiAqLwogICAgIFB5VHlwZU9iamVjdCBodF90eXBlOworICAgIFB5QXN5bmNNZXRob2RzIGFzX2FzeW5jOwogICAgIFB5TnVtYmVyTWV0aG9kcyBhc19udW1iZXI7CiAgICAgUHlNYXBwaW5nTWV0aG9kcyBhc19tYXBwaW5nOwogICAgIFB5U2VxdWVuY2VNZXRob2RzIGFzX3NlcXVlbmNlOyAvKiBhc19zZXF1ZW5jZSBjb21lcyBhZnRlciBhc19tYXBwaW5nLApAQCAtNTcyLDEzICs1ODIsNiBAQAogUHlBUElfRlVOQyhpbnQpIFB5X1JlcHJFbnRlcihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfUmVwckxlYXZlKFB5T2JqZWN0ICopOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBIZWxwZXIgZm9yIHBhc3Npbmcgb2JqZWN0cyB0byBwcmludGYgYW5kIHRoZSBsaWtlLgotICAgTGVha3MgcmVmY291bnRzLiAgRG9uJ3QgdXNlIGl0IQotKi8KLSNkZWZpbmUgUHlPYmplY3RfUkVQUihvYmopIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihvYmopKQotI2VuZGlmCi0KIC8qIEZsYWcgYml0cyBmb3IgcHJpbnRpbmc6ICovCiAjZGVmaW5lIFB5X1BSSU5UX1JBVyAgICAxICAgICAgIC8qIE5vIHN0cmluZyBxdW90ZXMgZXRjLiAqLwogCkBAIC03MTQsMTEgKzcxNywxNyBAQAogICAgICAgICAgICAgICAgIF9QeV9OZWdhdGl2ZVJlZmNvdW50KF9fRklMRV9fLCBfX0xJTkVfXywgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikoT1ApKTsgICAgICAgICBcCiB9CisvKiBQeV9SRUZfREVCVUcgYWxzbyBjb250cm9scyB0aGUgZGlzcGxheSBvZiByZWZjb3VudHMgYW5kIG1lbW9yeSBibG9jaworICogYWxsb2NhdGlvbnMgYXQgdGhlIGludGVyYWN0aXZlIHByb21wdCBhbmQgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24KKyAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlEZWJ1Z19QcmludFRvdGFsUmVmcyh2b2lkKTsKKyNkZWZpbmUgX1BZX0RFQlVHX1BSSU5UX1RPVEFMX1JFRlMoKSBfUHlEZWJ1Z19QcmludFRvdGFsUmVmcygpCiAjZWxzZQogI2RlZmluZSBfUHlfSU5DX1JFRlRPVEFMCiAjZGVmaW5lIF9QeV9ERUNfUkVGVE9UQUwKICNkZWZpbmUgX1B5X1JFRl9ERUJVR19DT01NQQogI2RlZmluZSBfUHlfQ0hFQ0tfUkVGQ05UKE9QKSAgICAvKiBhIHNlbWljb2xvbiAqLzsKKyNkZWZpbmUgX1BZX0RFQlVHX1BSSU5UX1RPVEFMX1JFRlMoKQogI2VuZGlmIC8qIFB5X1JFRl9ERUJVRyAqLwogCiAjaWZkZWYgQ09VTlRfQUxMT0NTCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDNmMjFiNzAuLjY1YjZkOTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC05NSw2ICs5NSw3IEBACiAgICB0aGUgcmF3IG1lbW9yeS4KICovCiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfTWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9DYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfRnJlZSh2b2lkICpwdHIpOwogCkBAIC0zMjEsNyArMzIyLDggQEAKICAgICAgICAgKCFQeVR1cGxlX0NoZWNrRXhhY3Qob2JqKSB8fCBfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvYmopKSkKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19DYWxsb2Moc2l6ZV90IHNpemUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3KFB5VHlwZU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlWYXJPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ld1ZhcihQeVR5cGVPYmplY3QgKiwgUHlfc3NpemVfdCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0dDX1RyYWNrKHZvaWQgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29kaWN0b2JqZWN0LmggYi9JbmNsdWRlL29kaWN0b2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkOTU5MgotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvb2RpY3RvYmplY3QuaApAQCAtMCwwICsxLDQzIEBACisjaWZuZGVmIFB5X09ESUNUT0JKRUNUX0gKKyNkZWZpbmUgUHlfT0RJQ1RPQkpFQ1RfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKy8qIE9yZGVyZWREaWN0ICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKwordHlwZWRlZiBzdHJ1Y3QgX29kaWN0b2JqZWN0IFB5T0RpY3RPYmplY3Q7CisKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0X1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdEl0ZXJfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0S2V5c19UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RJdGVtc19UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RWYWx1ZXNfVHlwZTsKKworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCisKKyNkZWZpbmUgUHlPRGljdF9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlPRGljdF9UeXBlKQorI2RlZmluZSBQeU9EaWN0X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlPRGljdF9UeXBlKQorI2RlZmluZSBQeU9EaWN0X1NJWkUob3ApICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV91c2VkCisjZGVmaW5lIFB5T0RpY3RfSGFzS2V5KG9kLCBrZXkpIChQeU1hcHBpbmdfSGFzS2V5KFB5T2JqZWN0ICopb2QsIGtleSkKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9EaWN0X05ldyh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CitQeUFQSV9GVU5DKGludCkgUHlPRGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSk7CisKKy8qIHdyYXBwZXJzIGFyb3VuZCBQeURpY3QqIGZ1bmN0aW9ucyAqLworI2RlZmluZSBQeU9EaWN0X0dldEl0ZW0ob2QsIGtleSkgUHlEaWN0X0dldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSkKKyNkZWZpbmUgUHlPRGljdF9HZXRJdGVtV2l0aEVycm9yKG9kLCBrZXkpIFwKKyAgICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilvZCwga2V5KQorI2RlZmluZSBQeU9EaWN0X0NvbnRhaW5zKG9kLCBrZXkpIFB5RGljdF9Db250YWlucygoUHlPYmplY3QgKilvZCwga2V5KQorI2RlZmluZSBQeU9EaWN0X1NpemUob2QpIFB5RGljdF9TaXplKChQeU9iamVjdCAqKW9kKQorI2RlZmluZSBQeU9EaWN0X0dldEl0ZW1TdHJpbmcob2QsIGtleSkgXAorICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKChQeU9iamVjdCAqKW9kLCBrZXkpCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09ESUNUT0JKRUNUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDA5MzZmMmQuLmNhNTkzMzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtMSwzICsxLDQgQEAKKy8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgKi8KICNpZm5kZWYgUHlfT1BDT0RFX0gKICNkZWZpbmUgUHlfT1BDT0RFX0gKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNSwxNDEgKzYsMTIxIEBACiAjZW5kaWYKIAogCi0vKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCi0KLSNkZWZpbmUgUE9QX1RPUCAgICAgICAgIDEKLSNkZWZpbmUgUk9UX1RXTyAgICAgICAgIDIKLSNkZWZpbmUgUk9UX1RIUkVFICAgICAgIDMKLSNkZWZpbmUgRFVQX1RPUCAgICAgICAgIDQKLSNkZWZpbmUgRFVQX1RPUF9UV08gICAgIDUKLSNkZWZpbmUgTk9QICAgICAgICAgICAgIDkKLQotI2RlZmluZSBVTkFSWV9QT1NJVElWRSAgMTAKLSNkZWZpbmUgVU5BUllfTkVHQVRJVkUgIDExCi0jZGVmaW5lIFVOQVJZX05PVCAgICAgICAxMgotCi0jZGVmaW5lIFVOQVJZX0lOVkVSVCAgICAxNQotCi0jZGVmaW5lIEJJTkFSWV9QT1dFUiAgICAxOQotCi0jZGVmaW5lIEJJTkFSWV9NVUxUSVBMWSAyMAotCi0jZGVmaW5lIEJJTkFSWV9NT0RVTE8gICAyMgotI2RlZmluZSBCSU5BUllfQUREICAgICAgMjMKLSNkZWZpbmUgQklOQVJZX1NVQlRSQUNUIDI0Ci0jZGVmaW5lIEJJTkFSWV9TVUJTQ1IgICAyNQotI2RlZmluZSBCSU5BUllfRkxPT1JfRElWSURFIDI2Ci0jZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAyNwotI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAyOAotI2RlZmluZSBJTlBMQUNFX1RSVUVfRElWSURFIDI5Ci0KLSNkZWZpbmUgU1RPUkVfTUFQICAgICAgIDU0Ci0jZGVmaW5lIElOUExBQ0VfQUREICAgICA1NQotI2RlZmluZSBJTlBMQUNFX1NVQlRSQUNUICAgICAgICA1NgotI2RlZmluZSBJTlBMQUNFX01VTFRJUExZICAgICAgICA1NwotCi0jZGVmaW5lIElOUExBQ0VfTU9EVUxPICA1OQotI2RlZmluZSBTVE9SRV9TVUJTQ1IgICAgNjAKLSNkZWZpbmUgREVMRVRFX1NVQlNDUiAgIDYxCi0KLSNkZWZpbmUgQklOQVJZX0xTSElGVCAgIDYyCi0jZGVmaW5lIEJJTkFSWV9SU0hJRlQgICA2MwotI2RlZmluZSBCSU5BUllfQU5EICAgICAgNjQKLSNkZWZpbmUgQklOQVJZX1hPUiAgICAgIDY1Ci0jZGVmaW5lIEJJTkFSWV9PUiAgICAgICA2NgotI2RlZmluZSBJTlBMQUNFX1BPV0VSICAgNjcKLSNkZWZpbmUgR0VUX0lURVIgICAgICAgIDY4Ci0jZGVmaW5lIFBSSU5UX0VYUFIgICAgICA3MAotI2RlZmluZSBMT0FEX0JVSUxEX0NMQVNTIDcxCi0jZGVmaW5lIFlJRUxEX0ZST00gICAgICA3MgotCi0jZGVmaW5lIElOUExBQ0VfTFNISUZUICA3NQotI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgNzYKLSNkZWZpbmUgSU5QTEFDRV9BTkQgICAgIDc3Ci0jZGVmaW5lIElOUExBQ0VfWE9SICAgICA3OAotI2RlZmluZSBJTlBMQUNFX09SICAgICAgNzkKLSNkZWZpbmUgQlJFQUtfTE9PUCAgICAgIDgwCi0jZGVmaW5lIFdJVEhfQ0xFQU5VUCAgICA4MQotCi0jZGVmaW5lIFJFVFVSTl9WQUxVRSAgICA4MwotI2RlZmluZSBJTVBPUlRfU1RBUiAgICAgODQKLQotI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgODYKLSNkZWZpbmUgUE9QX0JMT0NLICAgICAgIDg3Ci0jZGVmaW5lIEVORF9GSU5BTExZICAgICA4OAotI2RlZmluZSBQT1BfRVhDRVBUICAgICAgODkKLQotI2RlZmluZSBIQVZFX0FSR1VNRU5UICAgOTAgICAgICAvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLwotCi0jZGVmaW5lIFNUT1JFX05BTUUgICAgICA5MCAgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBERUxFVEVfTkFNRSAgICAgOTEgICAgICAvKiAiIiAqLwotI2RlZmluZSBVTlBBQ0tfU0VRVUVOQ0UgOTIgICAgICAvKiBOdW1iZXIgb2Ygc2VxdWVuY2UgaXRlbXMgKi8KLSNkZWZpbmUgRk9SX0lURVIgICAgICAgIDkzCi0jZGVmaW5lIFVOUEFDS19FWCAgICAgICA5NCAgICAgIC8qIE51bSBpdGVtcyBiZWZvcmUgdmFyaWFibGUgcGFydCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOdW0gaXRlbXMgYWZ0ZXIgdmFyaWFibGUgcGFydCA8PCA4KSAqLwotCi0jZGVmaW5lIFNUT1JFX0FUVFIgICAgICA5NSAgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBERUxFVEVfQVRUUiAgICAgOTYgICAgICAvKiAiIiAqLwotI2RlZmluZSBTVE9SRV9HTE9CQUwgICAgOTcgICAgICAvKiAiIiAqLwotI2RlZmluZSBERUxFVEVfR0xPQkFMICAgOTggICAgICAvKiAiIiAqLwotCi0jZGVmaW5lIExPQURfQ09OU1QgICAgICAxMDAgICAgIC8qIEluZGV4IGluIGNvbnN0IGxpc3QgKi8KLSNkZWZpbmUgTE9BRF9OQU1FICAgICAgIDEwMSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIEJVSUxEX1RVUExFICAgICAxMDIgICAgIC8qIE51bWJlciBvZiB0dXBsZSBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9MSVNUICAgICAgMTAzICAgICAvKiBOdW1iZXIgb2YgbGlzdCBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9TRVQgICAgICAgMTA0ICAgICAvKiBOdW1iZXIgb2Ygc2V0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX01BUCAgICAgICAxMDUgICAgIC8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KLSNkZWZpbmUgTE9BRF9BVFRSICAgICAgIDEwNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIENPTVBBUkVfT1AgICAgICAxMDcgICAgIC8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KLSNkZWZpbmUgSU1QT1JUX05BTUUgICAgIDEwOCAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIElNUE9SVF9GUk9NICAgICAxMDkgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotCi0jZGVmaW5lIEpVTVBfRk9SV0FSRCAgICAxMTAgICAgIC8qIE51bWJlciBvZiBieXRlcyB0byBza2lwICovCi0jZGVmaW5lIEpVTVBfSUZfRkFMU0VfT1JfUE9QIDExMSAgICAgICAgLyogVGFyZ2V0IGJ5dGUgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIGNvZGUgKi8KLSNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAxMTIgLyogIiIgKi8KLSNkZWZpbmUgSlVNUF9BQlNPTFVURSAgIDExMyAgICAgLyogIiIgKi8KLSNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgMTE0ICAgLyogIiIgKi8KLSNkZWZpbmUgUE9QX0pVTVBfSUZfVFJVRSAxMTUgICAgLyogIiIgKi8KLQotI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgMTE2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLQotI2RlZmluZSBDT05USU5VRV9MT09QICAgMTE5ICAgICAvKiBTdGFydCBvZiBsb29wIChhYnNvbHV0ZSkgKi8KLSNkZWZpbmUgU0VUVVBfTE9PUCAgICAgIDEyMCAgICAgLyogVGFyZ2V0IGFkZHJlc3MgKHJlbGF0aXZlKSAqLwotI2RlZmluZSBTRVRVUF9FWENFUFQgICAgMTIxICAgICAvKiAiIiAqLwotI2RlZmluZSBTRVRVUF9GSU5BTExZICAgMTIyICAgICAvKiAiIiAqLwotCi0jZGVmaW5lIExPQURfRkFTVCAgICAgICAxMjQgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBTVE9SRV9GQVNUICAgICAgMTI1ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgREVMRVRFX0ZBU1QgICAgIDEyNiAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0KLSNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgIDEzMCAgICAgLyogTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiBvciAzKSAqLwotLyogQ0FMTF9GVU5DVElPTl9YWFggb3Bjb2RlcyBkZWZpbmVkIGJlbG93IGRlcGVuZCBvbiB0aGlzIGRlZmluaXRpb24gKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTiAgIDEzMSAgICAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgTUFLRV9GVU5DVElPTiAgIDEzMiAgICAgLyogI2RlZmF1bHRzICsgI2t3ZGVmYXVsdHM8PDggKyAjYW5ub3RhdGlvbnM8PDE2ICovCi0jZGVmaW5lIEJVSUxEX1NMSUNFICAgICAxMzMgICAgIC8qIE51bWJlciBvZiBpdGVtcyAqLwotCi0jZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAxMzQgICAgIC8qIHNhbWUgYXMgTUFLRV9GVU5DVElPTiAqLwotI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgMTM1ICAgICAvKiBMb2FkIGZyZWUgdmFyaWFibGUgZnJvbSBjbG9zdXJlICovCi0jZGVmaW5lIExPQURfREVSRUYgICAgICAxMzYgICAgIC8qIExvYWQgYW5kIGRlcmVmZXJlbmNlIGZyb20gY2xvc3VyZSBjZWxsICovIAotI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgMTM3ICAgICAvKiBTdG9yZSBpbnRvIGNlbGwgKi8gCi0jZGVmaW5lIERFTEVURV9ERVJFRiAgICAxMzggICAgIC8qIERlbGV0ZSBjbG9zdXJlIGNlbGwgKi8gCi0KLS8qIFRoZSBuZXh0IDMgb3Bjb2RlcyBtdXN0IGJlIGNvbnRpZ3VvdXMgYW5kIHNhdGlzZnkKLSAgIChDQUxMX0ZVTkNUSU9OX1ZBUiAtIENBTExfRlVOQ1RJT04pICYgMyA9PSAxICAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAgICAxNDAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MSAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgICAgMTQyICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotCi0jZGVmaW5lIFNFVFVQX1dJVEggMTQzCi0KLS8qIFN1cHBvcnQgZm9yIG9wYXJncyBtb3JlIHRoYW4gMTYgYml0cyBsb25nICovCi0jZGVmaW5lIEVYVEVOREVEX0FSRyAgMTQ0Ci0KLSNkZWZpbmUgTElTVF9BUFBFTkQgICAgIDE0NQotI2RlZmluZSBTRVRfQUREICAgICAgICAgMTQ2Ci0jZGVmaW5lIE1BUF9BREQgICAgICAgICAxNDcKLQotI2RlZmluZSBMT0FEX0NMQVNTREVSRUYgICAxNDgKKyAgICAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCisjZGVmaW5lIFBPUF9UT1AgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBST1RfVFdPICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUgUk9UX1RIUkVFICAgICAgICAgICAgICAgICAzCisjZGVmaW5lIERVUF9UT1AgICAgICAgICAgICAgICAgICAgNAorI2RlZmluZSBEVVBfVE9QX1RXTyAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgTk9QICAgICAgICAgICAgICAgICAgICAgICA5CisjZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAgICAgICAgICAxMAorI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgICAgICAgICAgMTEKKyNkZWZpbmUgVU5BUllfTk9UICAgICAgICAgICAgICAgIDEyCisjZGVmaW5lIFVOQVJZX0lOVkVSVCAgICAgICAgICAgICAxNQorI2RlZmluZSBCSU5BUllfTUFUUklYX01VTFRJUExZICAgMTYKKyNkZWZpbmUgSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkgIDE3CisjZGVmaW5lIEJJTkFSWV9QT1dFUiAgICAgICAgICAgICAxOQorI2RlZmluZSBCSU5BUllfTVVMVElQTFkgICAgICAgICAgMjAKKyNkZWZpbmUgQklOQVJZX01PRFVMTyAgICAgICAgICAgIDIyCisjZGVmaW5lIEJJTkFSWV9BREQgICAgICAgICAgICAgICAyMworI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QgICAgICAgICAgMjQKKyNkZWZpbmUgQklOQVJZX1NVQlNDUiAgICAgICAgICAgIDI1CisjZGVmaW5lIEJJTkFSWV9GTE9PUl9ESVZJREUgICAgICAyNgorI2RlZmluZSBCSU5BUllfVFJVRV9ESVZJREUgICAgICAgMjcKKyNkZWZpbmUgSU5QTEFDRV9GTE9PUl9ESVZJREUgICAgIDI4CisjZGVmaW5lIElOUExBQ0VfVFJVRV9ESVZJREUgICAgICAyOQorI2RlZmluZSBHRVRfQUlURVIgICAgICAgICAgICAgICAgNTAKKyNkZWZpbmUgR0VUX0FORVhUICAgICAgICAgICAgICAgIDUxCisjZGVmaW5lIEJFRk9SRV9BU1lOQ19XSVRIICAgICAgICA1MgorI2RlZmluZSBJTlBMQUNFX0FERCAgICAgICAgICAgICAgNTUKKyNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVCAgICAgICAgIDU2CisjZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgICA1NworI2RlZmluZSBJTlBMQUNFX01PRFVMTyAgICAgICAgICAgNTkKKyNkZWZpbmUgU1RPUkVfU1VCU0NSICAgICAgICAgICAgIDYwCisjZGVmaW5lIERFTEVURV9TVUJTQ1IgICAgICAgICAgICA2MQorI2RlZmluZSBCSU5BUllfTFNISUZUICAgICAgICAgICAgNjIKKyNkZWZpbmUgQklOQVJZX1JTSElGVCAgICAgICAgICAgIDYzCisjZGVmaW5lIEJJTkFSWV9BTkQgICAgICAgICAgICAgICA2NAorI2RlZmluZSBCSU5BUllfWE9SICAgICAgICAgICAgICAgNjUKKyNkZWZpbmUgQklOQVJZX09SICAgICAgICAgICAgICAgIDY2CisjZGVmaW5lIElOUExBQ0VfUE9XRVIgICAgICAgICAgICA2NworI2RlZmluZSBHRVRfSVRFUiAgICAgICAgICAgICAgICAgNjgKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgICAgICAgICAgIDcwCisjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgICAgICAgICA3MQorI2RlZmluZSBZSUVMRF9GUk9NICAgICAgICAgICAgICAgNzIKKyNkZWZpbmUgR0VUX0FXQUlUQUJMRSAgICAgICAgICAgIDczCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICAgICAgICAgICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgICAgICAgICAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgICAgICAgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICAgICAgICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgICAgICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgICAgICAgICAgIDgwCisjZGVmaW5lIFdJVEhfQ0xFQU5VUF9TVEFSVCAgICAgICA4MQorI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKKyNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCisjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgICAgICAgICAgODYKKyNkZWZpbmUgUE9QX0JMT0NLICAgICAgICAgICAgICAgIDg3CisjZGVmaW5lIEVORF9GSU5BTExZICAgICAgICAgICAgICA4OAorI2RlZmluZSBQT1BfRVhDRVBUICAgICAgICAgICAgICAgODkKKyNkZWZpbmUgSEFWRV9BUkdVTUVOVCAgICAgICAgICAgIDkwCisjZGVmaW5lIFNUT1JFX05BTUUgICAgICAgICAgICAgICA5MAorI2RlZmluZSBERUxFVEVfTkFNRSAgICAgICAgICAgICAgOTEKKyNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFICAgICAgICAgIDkyCisjZGVmaW5lIEZPUl9JVEVSICAgICAgICAgICAgICAgICA5MworI2RlZmluZSBVTlBBQ0tfRVggICAgICAgICAgICAgICAgOTQKKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDk1CisjZGVmaW5lIERFTEVURV9BVFRSICAgICAgICAgICAgICA5NgorI2RlZmluZSBTVE9SRV9HTE9CQUwgICAgICAgICAgICAgOTcKKyNkZWZpbmUgREVMRVRFX0dMT0JBTCAgICAgICAgICAgIDk4CisjZGVmaW5lIExPQURfQ09OU1QgICAgICAgICAgICAgIDEwMAorI2RlZmluZSBMT0FEX05BTUUgICAgICAgICAgICAgICAxMDEKKyNkZWZpbmUgQlVJTERfVFVQTEUgICAgICAgICAgICAgMTAyCisjZGVmaW5lIEJVSUxEX0xJU1QgICAgICAgICAgICAgIDEwMworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgICAgICAgICAxMDQKKyNkZWZpbmUgQlVJTERfTUFQICAgICAgICAgICAgICAgMTA1CisjZGVmaW5lIExPQURfQVRUUiAgICAgICAgICAgICAgIDEwNgorI2RlZmluZSBDT01QQVJFX09QICAgICAgICAgICAgICAxMDcKKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgICAgICAgICAgMTA4CisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAgICAgICAgIDEwOQorI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgICAgICAgICAxMTAKKyNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgICAgMTExCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgICAgIDExMgorI2RlZmluZSBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMTMKKyNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgMTE0CisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDExNQorI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgICAgICAgICAxMTYKKyNkZWZpbmUgQ09OVElOVUVfTE9PUCAgICAgICAgICAgMTE5CisjZGVmaW5lIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDEyMAorI2RlZmluZSBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMjEKKyNkZWZpbmUgU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIyCisjZGVmaW5lIExPQURfRkFTVCAgICAgICAgICAgICAgIDEyNAorI2RlZmluZSBTVE9SRV9GQVNUICAgICAgICAgICAgICAxMjUKKyNkZWZpbmUgREVMRVRFX0ZBU1QgICAgICAgICAgICAgMTI2CisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgIDEzMAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAxMzEKKyNkZWZpbmUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgMTMyCisjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAgICAgICAgIDEzMworI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgICAgICAgICAxMzQKKyNkZWZpbmUgTE9BRF9DTE9TVVJFICAgICAgICAgICAgMTM1CisjZGVmaW5lIExPQURfREVSRUYgICAgICAgICAgICAgIDEzNgorI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgICAgICAgICAxMzcKKyNkZWZpbmUgREVMRVRFX0RFUkVGICAgICAgICAgICAgMTM4CisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgIDE0MAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAxNDEKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgMTQyCisjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MworI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKKyNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CisjZGVmaW5lIFNFVF9BREQgICAgICAgICAgICAgICAgIDE0NgorI2RlZmluZSBNQVBfQUREICAgICAgICAgICAgICAgICAxNDcKKyNkZWZpbmUgTE9BRF9DTEFTU0RFUkVGICAgICAgICAgMTQ4CisjZGVmaW5lIEJVSUxEX0xJU1RfVU5QQUNLICAgICAgIDE0OQorI2RlZmluZSBCVUlMRF9NQVBfVU5QQUNLICAgICAgICAxNTAKKyNkZWZpbmUgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgMTUxCisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgorI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKKyNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpAQCAtMTQ4LDggKzEyOSw5IEBACiAjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NwogCiAKLWVudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwgUHlDbXBfR1Q9UHlfR1QsIFB5Q21wX0dFPVB5X0dFLAotICAgICAgICAgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OwogCiAjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3NkZWZzLmggYi9JbmNsdWRlL29zZGVmcy5oCmluZGV4IDBjMmUzNGIuLmJkODRjMWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3NkZWZzLmgKKysrIGIvSW5jbHVkZS9vc2RlZnMuaApAQCAtNywxNSArNywxMiBAQAogCiAvKiBPcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyAqLwogCi0vKiBNb2QgYnkgY2hyaXNoOiBRTlggaGFzIFdBVENPTSwgYnV0IGlzbid0IERPUyAqLwotI2lmICFkZWZpbmVkKF9fUU5YX18pCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0RKR1BQX18pCisjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBTRVAgTCdcXCcKICNkZWZpbmUgQUxUU0VQIEwnLycKICNkZWZpbmUgTUFYUEFUSExFTiAyNTYKICNkZWZpbmUgREVMSU0gTCc7JwogI2VuZGlmCi0jZW5kaWYKIAogLyogRmlsZW5hbWUgc2VwYXJhdG9yICovCiAjaWZuZGVmIFNFUApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCBmODg0Y2QxLi5mMTc3M2YwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNAotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTMKLSNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCi0jZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAorI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfQkVUQQorI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkyCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy40LjMrIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjUuMGIyKyIKIC8qLS1lbmQgY29uc3RhbnRzLS0qLwogCiAvKiBWZXJzaW9uIGFzIGEgc2luZ2xlIDQtYnl0ZSBoZXggbnVtYmVyLCBlLmcuIDB4MDEwNTAyQjIgPT0gMS41LjJiMi4KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlhdG9taWMuaCBiL0luY2x1ZGUvcHlhdG9taWMuaAppbmRleCBkNGUxOWUwLi45OTgxNmE1IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5YXRvbWljLmgKKysrIGIvSW5jbHVkZS9weWF0b21pYy5oCkBAIC0xLDE0ICsxLDE1IEBACi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBJc3N1ZSAjMjM2NDQ6IDxzdGRhdG9taWMuaD4gaXMgaW5jb21wYXRpYmxlIHdpdGggQysrLCBzZWU6CisgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02MDkzMiAqLworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSAmJiAhZGVmaW5lZChfX2NwbHVzcGx1cykKICNpZm5kZWYgUHlfQVRPTUlDX0gKICNkZWZpbmUgUHlfQVRPTUlDX0gKLS8qIFhYWDogV2hlbiBjb21waWxlcnMgc3RhcnQgb2ZmZXJpbmcgYSBzdGRhdG9taWMuaCB3aXRoIGxvY2stZnJlZQotICAgYXRvbWljX2ludCBhbmQgYXRvbWljX2FkZHJlc3MgdHlwZXMsIGluY2x1ZGUgdGhhdCBoZXJlIGFuZCByZXdyaXRlCi0gICB0aGUgYXRvbWljIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgaXQuICovCiAKICNpbmNsdWRlICJkeW5hbWljX2Fubm90YXRpb25zLmgiCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7CisjaW5jbHVkZSAicHljb25maWcuaCIKKworI2lmIGRlZmluZWQoSEFWRV9TVERfQVRPTUlDKQorI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgogI2VuZGlmCiAKIC8qIFRoaXMgaXMgbW9kZWxlZCBhZnRlciB0aGUgYXRvbWljcyBpbnRlcmZhY2UgZnJvbSBDMXgsIGFjY29yZGluZyB0bwpAQCAtMjAsNiArMjEsNzYgQEAKICAqIEJld2FyZSwgdGhlIGltcGxlbWVudGF0aW9ucyBoZXJlIGFyZSBkZWVwIG1hZ2ljLgogICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfU1REX0FUT01JQykKKwordHlwZWRlZiBlbnVtIF9QeV9tZW1vcnlfb3JkZXIgeworICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsYXhlZCA9IG1lbW9yeV9vcmRlcl9yZWxheGVkLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxdWlyZSA9IG1lbW9yeV9vcmRlcl9hY3F1aXJlLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsZWFzZSA9IG1lbW9yeV9vcmRlcl9yZWxlYXNlLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxX3JlbCA9IG1lbW9yeV9vcmRlcl9hY3FfcmVsLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfc2VxX2NzdCA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0Cit9IF9QeV9tZW1vcnlfb3JkZXI7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7CisgICAgX0F0b21pYyB2b2lkICpfdmFsdWU7Cit9IF9QeV9hdG9taWNfYWRkcmVzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgeworICAgIGF0b21pY19pbnQgX3ZhbHVlOworfSBfUHlfYXRvbWljX2ludDsKKworI2RlZmluZSBfUHlfYXRvbWljX3NpZ25hbF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgYXRvbWljX3NpZ25hbF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3RocmVhZF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgYXRvbWljX3RocmVhZF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3N0b3JlX2V4cGxpY2l0KEFUT01JQ19WQUwsIE5FV19WQUwsIE9SREVSKSBcCisgICAgYXRvbWljX3N0b3JlX2V4cGxpY2l0KCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgTkVXX1ZBTCwgT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY19sb2FkX2V4cGxpY2l0KEFUT01JQ19WQUwsIE9SREVSKSBcCisgICAgYXRvbWljX2xvYWRfZXhwbGljaXQoJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBPUkRFUikKKworLyogVXNlIGJ1aWx0aW4gYXRvbWljIG9wZXJhdGlvbnMgaW4gR0NDID49IDQuNyAqLworI2VsaWYgZGVmaW5lZChIQVZFX0JVSUxUSU5fQVRPTUlDKQorCit0eXBlZGVmIGVudW0gX1B5X21lbW9yeV9vcmRlciB7CisgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxheGVkID0gX19BVE9NSUNfUkVMQVhFRCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX2FjcXVpcmUgPSBfX0FUT01JQ19BQ1FVSVJFLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsZWFzZSA9IF9fQVRPTUlDX1JFTEVBU0UsCisgICAgX1B5X21lbW9yeV9vcmRlcl9hY3FfcmVsID0gX19BVE9NSUNfQUNRX1JFTCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX3NlcV9jc3QgPSBfX0FUT01JQ19TRVFfQ1NUCit9IF9QeV9tZW1vcnlfb3JkZXI7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7CisgICAgdm9pZCAqX3ZhbHVlOworfSBfUHlfYXRvbWljX2FkZHJlc3M7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKKyAgICBpbnQgX3ZhbHVlOworfSBfUHlfYXRvbWljX2ludDsKKworI2RlZmluZSBfUHlfYXRvbWljX3NpZ25hbF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgX19hdG9taWNfc2lnbmFsX2ZlbmNlKE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfdGhyZWFkX2ZlbmNlKC8qbWVtb3J5X29yZGVyKi8gT1JERVIpIFwKKyAgICBfX2F0b21pY190aHJlYWRfZmVuY2UoT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY19zdG9yZV9leHBsaWNpdChBVE9NSUNfVkFMLCBORVdfVkFMLCBPUkRFUikgXAorICAgIChhc3NlcnQoKE9SREVSKSA9PSBfX0FUT01JQ19SRUxBWEVEICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX1NFUV9DU1QgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfUkVMRUFTRSksICAgICAgICAgICAgICAgICAgXAorICAgICBfX2F0b21pY19zdG9yZV9uKCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgTkVXX1ZBTCwgT1JERVIpKQorCisjZGVmaW5lIF9QeV9hdG9taWNfbG9hZF9leHBsaWNpdChBVE9NSUNfVkFMLCBPUkRFUikgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KChPUkRFUikgPT0gX19BVE9NSUNfUkVMQVhFRCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19TRVFfQ1NUICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX0FDUVVJUkUgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfQ09OU1VNRSksICAgICAgICAgICAgICAgICAgXAorICAgICBfX2F0b21pY19sb2FkX24oJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBPUkRFUikpCisKKyNlbHNlCisKIHR5cGVkZWYgZW51bSBfUHlfbWVtb3J5X29yZGVyIHsKICAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQsCiAgICAgX1B5X21lbW9yeV9vcmRlcl9hY3F1aXJlLApAQCAtMTYyLDYgKzIzMyw3IEBACiAgICAgKChBVE9NSUNfVkFMKS0+X3ZhbHVlKQogCiAjZW5kaWYgIC8qICFnY2MgeDg2ICovCisjZW5kaWYKIAogLyogU3RhbmRhcmRpemVkIHNob3J0Y3V0cy4gKi8KICNkZWZpbmUgX1B5X2F0b21pY19zdG9yZShBVE9NSUNfVkFMLCBORVdfVkFMKSBcCkBAIC0xNzYsOSArMjQ4LDUgQEAKICNkZWZpbmUgX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoQVRPTUlDX1ZBTCkgXAogICAgIF9QeV9hdG9taWNfbG9hZF9leHBsaWNpdChBVE9NSUNfVkFMLCBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQpCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KICNlbmRpZiAgLyogUHlfQVRPTUlDX0ggKi8KICNlbmRpZiAgLyogUHlfTElNSVRFRF9BUEkgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggOGZlOTgxOC4uMTliZWMyYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGVzZSBnbG9iYWwgdmFyaWFibGUgYXJlIGRlZmluZWQgaW4gcHlsaWZlY3ljbGUuYyAqLworLyogWFhYIChuY29naGxhbik6IG1vdmUgdGhlc2UgZGVjbGFyYXRpb25zIHRvIHB5bGlmZWN5Y2xlLmg/ICovCiBQeUFQSV9EQVRBKGludCkgUHlfRGVidWdGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X1ZlcmJvc2VGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X1F1aWV0RmxhZzsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAwMmY2NWQ2Li5hMDE5ODY1IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC05OSw2ICs5OSw3IEBACiAjZGVmaW5lIF9QeV9OT19SRVRVUk4KICNlbmRpZgogCisvKiBEZWZpbmVkIGluIFB5dGhvbi9weWxpZmVjeWNsZS5jICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkgX1B5X05PX1JFVFVSTjsKIAogI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCkBAIC0xNDYsNiArMTQ3LDcgQEAKIAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CYXNlRXhjZXB0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FeGNlcHRpb247CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3RvcEl0ZXJhdGlvbjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfR2VuZXJhdG9yRXhpdDsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpAQCAtMjQ0LDYgKzI0NiwxMiBAQAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgICAvKiBBU0NJSS1lbmNvZGVkIHN0cmluZyAgKi8KICAgICAuLi4KICAgICApOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfRm9ybWF0VigKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICB2YV9saXN0IHZhcmdzKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2RlYmUyCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCkBAIC0wLDAgKzEsMTI0IEBACisKKy8qIEludGVyZmFjZXMgdG8gY29uZmlndXJlLCBxdWVyeSwgY3JlYXRlICYgZGVzdHJveSB0aGUgUHl0aG9uIHJ1bnRpbWUgKi8KKworI2lmbmRlZiBQeV9QWUxJRkVDWUNMRV9ICisjZGVmaW5lIFB5X1BZTElGRUNZQ0xFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfRlVOQyh2b2lkKSBQeV9TZXRQcm9ncmFtTmFtZSh3Y2hhcl90ICopOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByb2dyYW1OYW1lKHZvaWQpOworCitQeUFQSV9GVU5DKHZvaWQpIFB5X1NldFB5dGhvbkhvbWUod2NoYXJfdCAqKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQeXRob25Ib21lKHZvaWQpOworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBPbmx5IHVzZWQgYnkgYXBwbGljYXRpb25zIHRoYXQgZW1iZWQgdGhlIGludGVycHJldGVyIGFuZCBuZWVkIHRvCisgKiBvdmVycmlkZSB0aGUgc3RhbmRhcmQgZW5jb2RpbmcgZGV0ZXJtaW5hdGlvbiBtZWNoYW5pc20KKyAqLworUHlBUElfRlVOQyhpbnQpIFB5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZUV4KGludCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CisjZW5kaWYKK1B5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlfSXNJbml0aWFsaXplZCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeV9OZXdJbnRlcnByZXRlcih2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqKTsKKworCisvKiBQeV9QeUF0RXhpdCBpcyBmb3IgdGhlIGF0ZXhpdCBtb2R1bGUsIFB5X0F0RXhpdCBpcyBmb3IgbG93LWxldmVsCisgKiBleGl0IGZ1bmN0aW9ucy4KKyAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfUHlBdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKKyNlbmRpZgorUHlBUElfRlVOQyhpbnQpIFB5X0F0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpOworCitQeUFQSV9GVU5DKHZvaWQpIFB5X0V4aXQoaW50KTsKKworLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfUmVzdG9yZVNpZ25hbHModm9pZCk7CisKK1B5QVBJX0ZVTkMoaW50KSBQeV9GZElzSW50ZXJhY3RpdmUoRklMRSAqLCBjb25zdCBjaGFyICopOworI2VuZGlmCisKKy8qIEJvb3RzdHJhcCBfX21haW5fXyAoZGVmaW5lZCBpbiBNb2R1bGVzL21haW4uYykgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeV9NYWluKGludCBhcmdjLCB3Y2hhcl90ICoqYXJndik7CisKKy8qIEluIGdldHBhdGguYyAqLworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByb2dyYW1GdWxsUGF0aCh2b2lkKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcmVmaXgodm9pZCk7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0RXhlY1ByZWZpeCh2b2lkKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQYXRoKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSAgICAgIFB5X1NldFBhdGgoY29uc3Qgd2NoYXJfdCAqKTsKKyNpZmRlZiBNU19XSU5ET1dTCitpbnQgX1B5X0NoZWNrUHl0aG9uMygpOworI2VuZGlmCisKKy8qIEluIHRoZWlyIG93biBmaWxlcyAqLworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7CitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7CitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGdpZGVudGlmaWVyKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ3ZlcnNpb24odm9pZCk7CisjZW5kaWYKKworLyogSW50ZXJuYWwgLS0gdmFyaW91cyBvbmUtdGltZSBpbml0aWFsaXphdGlvbnMgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5QnVpbHRpbl9Jbml0KHZvaWQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0luaXQodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KFB5T2JqZWN0ICogYmx0aW5tb2QpOworUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRIb29rc19Jbml0KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIF9QeUZyYW1lX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeUJ5dGVBcnJheV9Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fSW5pdCh2b2lkKTsKKyNlbmRpZgorCisvKiBWYXJpb3VzIGludGVybmFsIGZpbmFsaXplcnMgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeU1ldGhvZF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUZyYW1lX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5Q0Z1bmN0aW9uX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeVR1cGxlX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5TGlzdF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeVNldF9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZUFycmF5X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5RmxvYXRfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5R0NfRHVtcFNodXRkb3duU3RhdHModm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKKworUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOworI2VuZGlmCisKKy8qIFNpZ25hbHMgKi8KK3R5cGVkZWYgdm9pZCAoKlB5T1Nfc2lnaGFuZGxlcl90KShpbnQpOworUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19nZXRzaWcoaW50KTsKK1B5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1Nfc2V0c2lnKGludCwgUHlPU19zaWdoYW5kbGVyX3QpOworCisvKiBSYW5kb20gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tICh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X1BZTElGRUNZQ0xFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYWNyby5oIGIvSW5jbHVkZS9weW1hY3JvLmgKaW5kZXggNzk5N2M1NS4uM2Y2ZjVkYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hY3JvLmgKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTEsMTMgKzEsMjYgQEAKICNpZm5kZWYgUHlfUFlNQUNST19ICiAjZGVmaW5lIFB5X1BZTUFDUk9fSAogCisvKiBNaW5pbXVtIHZhbHVlIGJldHdlZW4geCBhbmQgeSAqLwogI2RlZmluZSBQeV9NSU4oeCwgeSkgKCgoeCkgPiAoeSkpID8gKHkpIDogKHgpKQorCisvKiBNYXhpbXVtIHZhbHVlIGJldHdlZW4geCBhbmQgeSAqLwogI2RlZmluZSBQeV9NQVgoeCwgeSkgKCgoeCkgPiAoeSkpID8gKHgpIDogKHkpKQogCisvKiBBYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIHggKi8KKyNkZWZpbmUgUHlfQUJTKHgpICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKKworI2RlZmluZSBfUHlfWFNUUklOR0lGWSh4KSAjeAorCisvKiBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIFB5X1NUUklOR0lGWSgxMjMpIGlzIHJlcGxhY2VkCisgICB3aXRoICIxMjMiIGJ5IHRoZSBwcmVwcm9jZXNzb3IuIERlZmluZXMgYXJlIGFsc28gcmVwbGFjZWQgYnkgdGhlaXIgdmFsdWUuCisgICBGb3IgZXhhbXBsZSBQeV9TVFJJTkdJRlkoX19MSU5FX18pIGlzIHJlcGxhY2VkIGJ5IHRoZSBsaW5lIG51bWJlciwgbm90CisgICBieSAiX19MSU5FX18iLiAqLworI2RlZmluZSBQeV9TVFJJTkdJRlkoeCkgX1B5X1hTVFJJTkdJRlkoeCkKKwogLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwogI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQogCi0KIC8qIEFzc2VydCBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSwgYXMgYW4gZXhwcmVzc2lvbi4KIAogICAgWW91ciBjb21waWxlIHdpbGwgZmFpbCBpZiB0aGUgY29uZGl0aW9uIGlzbid0IHRydWUsIG9yIGNhbid0IGJlIGV2YWx1YXRlZApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1lbS5oIGIvSW5jbHVkZS9weW1lbS5oCmluZGV4IDIzNzJiODYuLjA0M2RiNjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltZW0uaAorKysgYi9JbmNsdWRlL3B5bWVtLmgKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd01hbGxvYyhzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3Q2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX1Jhd0ZyZWUodm9pZCAqcHRyKTsKICNlbmRpZgpAQCAtNTcsNiArNTgsNyBAQAogKi8KIAogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX01hbGxvYyhzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX0ZyZWUodm9pZCAqcHRyKTsKIApAQCAtMTI2LDIyICsxMjgsMjUgQEAKIH0gUHlNZW1BbGxvY2F0b3JEb21haW47CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiB1c2VyIGNvbnRleHQgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgMyBmdW5jdGlvbnMgKi8KKyAgICAvKiB1c2VyIGNvbnRleHQgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgNCBmdW5jdGlvbnMgKi8KICAgICB2b2lkICpjdHg7CiAKICAgICAvKiBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAqLwogICAgIHZvaWQqICgqbWFsbG9jKSAodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CiAKKyAgICAvKiBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayBpbml0aWFsaXplZCBieSB6ZXJvcyAqLworICAgIHZvaWQqICgqY2FsbG9jKSAodm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworCiAgICAgLyogYWxsb2NhdGUgb3IgcmVzaXplIGEgbWVtb3J5IGJsb2NrICovCiAgICAgdm9pZCogKCpyZWFsbG9jKSAodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiAKICAgICAvKiByZWxlYXNlIGEgbWVtb3J5IGJsb2NrICovCiAgICAgdm9pZCAoKmZyZWUpICh2b2lkICpjdHgsIHZvaWQgKnB0cik7Ci19IFB5TWVtQWxsb2NhdG9yOworfSBQeU1lbUFsbG9jYXRvckV4OwogCiAvKiBHZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcik7CiAKIC8qIFNldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciBvZiB0aGUgc3BlY2lmaWVkIGRvbWFpbi4KIApAQCAtMTU1LDcgKzE2MCw3IEBACiAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKSBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB0byByZWluc3RhbGwgdGhlIGRlYnVnIGhvb2tzCiAgICBvbiB0b3Agb24gdGhlIG5ldyBhbGxvY2F0b3IuICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcik7CiAKIC8qIFNldHVwIGhvb2tzIHRvIGRldGVjdCBidWdzIGluIHRoZSBmb2xsb3dpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKICAgIGZ1bmN0aW9uczoKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IGIyOWY5YmQuLjY2ZTAwZDQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMzU3LDI4ICszNTcsNiBAQAogICogc3RhdCgpIGFuZCBmc3RhdCgpIGZpZGRsaW5nICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBXZSBleHBlY3QgdGhhdCBzdGF0IGFuZCBmc3RhdCBleGlzdCBvbiBtb3N0IHN5c3RlbXMuCi0gKiAgSXQncyBjb25maXJtZWQgb24gVW5peCwgTWFjIGFuZCBXaW5kb3dzLgotICogIElmIHlvdSBkb24ndCBoYXZlIHRoZW0sIGFkZAotICogICAgICAjZGVmaW5lIERPTlRfSEFWRV9TVEFUCi0gKiBhbmQvb3IKLSAqICAgICAgI2RlZmluZSBET05UX0hBVkVfRlNUQVQKLSAqIHRvIHlvdXIgcHljb25maWcuaC4gUHl0aG9uIGNvZGUgYmV5b25kIHRoaXMgc2hvdWxkIGNoZWNrIEhBVkVfU1RBVCBhbmQKLSAqIEhBVkVfRlNUQVQgaW5zdGVhZC4KLSAqIEFsc28KLSAqICAgICAgI2RlZmluZSBIQVZFX1NZU19TVEFUX0gKLSAqIGlmIDxzeXMvc3RhdC5oPiBleGlzdHMgb24geW91ciBwbGF0Zm9ybSwgYW5kCi0gKiAgICAgICNkZWZpbmUgSEFWRV9TVEFUX0gKLSAqIGlmIDxzdGF0Lmg+IGRvZXMuCi0gKi8KLSNpZm5kZWYgRE9OVF9IQVZFX1NUQVQKLSNkZWZpbmUgSEFWRV9TVEFUCi0jZW5kaWYKLQotI2lmbmRlZiBET05UX0hBVkVfRlNUQVQKLSNkZWZpbmUgSEFWRV9GU1RBVAotI2VuZGlmCi0KICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2VsaWYgZGVmaW5lZChIQVZFX1NUQVRfSCkKQEAgLTU4OCw2ICs1NjYsMjUgQEAKICAgICB9IHdoaWxlICgwKQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0dDQ19BU01fRk9SX01DNjg4ODEKKyNkZWZpbmUgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OIDEKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fSEVBREVSIFwKKyAgdW5zaWduZWQgaW50IG9sZF9mcGNyLCBuZXdfZnBjcgorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVAkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOwkJCVwKKyAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLwkJCVwKKyAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7CQkJCVwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOwlcCisgIH0gd2hpbGUgKDApCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORAkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7CVwKKyAgfSB3aGlsZSAoMCkKKyNlbmRpZgorCiAvKiBkZWZhdWx0IGRlZmluaXRpb25zIGFyZSBlbXB0eSAqLwogI2lmbmRlZiBIQVZFX1BZX1NFVF81M0JJVF9QUkVDSVNJT04KICNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fSEVBREVSCkBAIC04ODAsNCArODc3LDI0IEBACiAjZGVmaW5lIFBZX0xJVFRMRV9FTkRJQU4gMQogI2VuZGlmCiAKKyNpZmRlZiBQeV9CVUlMRF9DT1JFIAorLyoKKyAqIE1hY3JvcyB0byBwcm90ZWN0IENSVCBjYWxscyBhZ2FpbnN0IGluc3RhbnQgdGVybWluYXRpb24gd2hlbiBwYXNzZWQgYW4KKyAqIGludmFsaWQgcGFyYW1ldGVyIChpc3N1ZTIzNTI0KS4KKyAqLworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTkwMAorCitleHRlcm4gX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX1B5X3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyOworI2RlZmluZSBfUHlfQkVHSU5fU1VQUFJFU1NfSVBIIHsgX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX1B5X29sZF9oYW5kbGVyID0gXAorICAgIF9zZXRfdGhyZWFkX2xvY2FsX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoX1B5X3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKTsKKyNkZWZpbmUgX1B5X0VORF9TVVBQUkVTU19JUEggX3NldF90aHJlYWRfbG9jYWxfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcihfUHlfb2xkX2hhbmRsZXIpOyB9CisKKyNlbHNlCisKKyNkZWZpbmUgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2RlZmluZSBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisjZW5kaWYgLyogX01TQ19WRVIgPj0gMTkwMCAqLworI2VuZGlmIC8qIFB5X0JVSUxEX0NPUkUgKi8KKwogI2VuZGlmIC8qIFB5X1BZUE9SVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDQ5OTJjMjIuLmEyZmQ4MDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC0xMzQsNiArMTM0LDkgQEAKICAgICB2b2lkICgqb25fZGVsZXRlKSh2b2lkICopOwogICAgIHZvaWQgKm9uX2RlbGV0ZV9kYXRhOwogCisgICAgUHlPYmplY3QgKmNvcm91dGluZV93cmFwcGVyOworICAgIGludCBpbl9jb3JvdXRpbmVfd3JhcHBlcjsKKwogICAgIC8qIFhYWCBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGFsc28gYmUgaGVyZSAqLwogCiB9IFB5VGhyZWFkU3RhdGU7CkBAIC0xNzQsMTIgKzE3NywxNiBAQAogLyogVmFyaWFibGUgYW5kIG1hY3JvIGZvciBpbi1saW5lIGFjY2VzcyB0byBjdXJyZW50IHRocmVhZCBzdGF0ZSAqLwogCiAvKiBBc3N1bWluZyB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIEdJTCwgdGhpcyBpcyB0aGUKLSAgIFB5VGhyZWFkU3RhdGUgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgIFB5VGhyZWFkU3RhdGUgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgSXNzdWUgIzIzNjQ0OiBweWF0b21pYy5oIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyAoeWV0KS4gRGlzYWJsZQorICAgUHlUaHJlYWRTdGF0ZV9HRVQoKSBvcHRpbWl6YXRpb246IGRlY2xhcmUgaXQgYXMgYW4gYWxpYXMgdG8KKyAgIFB5VGhyZWFkU3RhdGVfR2V0KCksIGFzIGRvbmUgZm9yIGxpbWl0ZWQgQVBJLiAqLworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSAmJiAhZGVmaW5lZChfX2NwbHVzcGx1cykKIFB5QVBJX0RBVEEoX1B5X2F0b21pY19hZGRyZXNzKSBfUHlUaHJlYWRTdGF0ZV9DdXJyZW50OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQorI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpCiAjZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgUHlUaHJlYWRTdGF0ZV9HZXQoKQogI2Vsc2UKICNkZWZpbmUgUHlUaHJlYWRTdGF0ZV9HRVQoKSBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RyaGV4LmggYi9JbmNsdWRlL3B5c3RyaGV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjMTI1NQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlzdHJoZXguaApAQCAtMCwwICsxLDE3IEBACisjaWZuZGVmIFB5X1NUUkhFWF9ICisjZGVmaW5lIFB5X1NUUkhFWF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogUmV0dXJucyBhIHN0cigpIGNvbnRhaW5pbmcgdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKy8qIFJldHVybnMgYSBieXRlcygpIGNvbnRhaW5pbmcgdGhlIEFTQ0lJIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qICFQeV9TVFJIRVhfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKaW5kZXggMmZjNTU3OC4uZjkyMTQ4ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAorKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCkBAIC05LDcgKzksOCBAQAogCiAjZGVmaW5lIFB5Q0ZfTUFTSyAoQ09fRlVUVVJFX0RJVklTSU9OIHwgQ09fRlVUVVJFX0FCU09MVVRFX0lNUE9SVCB8IFwKICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfV0lUSF9TVEFURU1FTlQgfCBDT19GVVRVUkVfUFJJTlRfRlVOQ1RJT04gfCBcCi0gICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgfCBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCkKKyAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyB8IENPX0ZVVFVSRV9CQVJSWV9BU19CREZMIHwgXAorICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCkKICNkZWZpbmUgUHlDRl9NQVNLX09CU09MRVRFIChDT19ORVNURUQpCiAjZGVmaW5lIFB5Q0ZfU09VUkNFX0lTX1VURjggIDB4MDEwMAogI2RlZmluZSBQeUNGX0RPTlRfSU1QTFlfREVERU5UIDB4MDIwMApAQCAtMjIsMzAgKzIzLDYgQEAKIH0gUHlDb21waWxlckZsYWdzOwogI2VuZGlmCiAKLVB5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHJvZ3JhbU5hbWUod2NoYXJfdCAqKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKLQotUHlBUElfRlVOQyh2b2lkKSBQeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKik7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHl0aG9uSG9tZSh2b2lkKTsKLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotLyogT25seSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0aGF0IGVtYmVkIHRoZSBpbnRlcnByZXRlciBhbmQgbmVlZCB0bwotICogb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGVuY29kaW5nIGRldGVybWluYXRpb24gbWVjaGFuaXNtCi0gKi8KLVB5QVBJX0ZVTkMoaW50KSBQeV9TZXRTdGFuZGFyZFN0cmVhbUVuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKLSNlbmRpZgotCi1QeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOwotI2VuZGlmCi1QeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOwotUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7Ci1QeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKik7Ci0KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9BbnlGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKQEAgLTE2NiwyNiArMTQzLDYgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfUHJpbnRFeChpbnQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9EaXNwbGF5KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCi0vKiBQeV9QeUF0RXhpdCBpcyBmb3IgdGhlIGF0ZXhpdCBtb2R1bGUsIFB5X0F0RXhpdCBpcyBmb3IgbG93LWxldmVsCi0gKiBleGl0IGZ1bmN0aW9ucy4KLSAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh2b2lkKSBfUHlfUHlBdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKLSNlbmRpZgotUHlBUElfRlVOQyhpbnQpIFB5X0F0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpOwotCi1QeUFQSV9GVU5DKHZvaWQpIFB5X0V4aXQoaW50KTsKLQotLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLiAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh2b2lkKSBfUHlfUmVzdG9yZVNpZ25hbHModm9pZCk7Ci0KLVB5QVBJX0ZVTkMoaW50KSBQeV9GZElzSW50ZXJhY3RpdmUoRklMRSAqLCBjb25zdCBjaGFyICopOwotI2VuZGlmCi0KLS8qIEJvb3RzdHJhcCAqLwotUHlBUElfRlVOQyhpbnQpIFB5X01haW4oaW50IGFyZ2MsIHdjaGFyX3QgKiphcmd2KTsKLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVXNlIG1hY3JvcyBmb3IgYSBidW5jaCBvZiBvbGQgdmFyaWFudHMgKi8KICNkZWZpbmUgUHlSdW5fU3RyaW5nKHN0ciwgcywgZywgbCkgUHlSdW5fU3RyaW5nRmxhZ3Moc3RyLCBzLCBnLCBsLCBOVUxMKQpAQCAtMjA3LDY0ICsxNjQsNiBAQAogICAgIFB5UnVuX0ZpbGVFeEZsYWdzKGZwLCBwLCBzLCBnLCBsLCAwLCBmbGFncykKICNlbmRpZgogCi0vKiBJbiBnZXRwYXRoLmMgKi8KLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtRnVsbFBhdGgodm9pZCk7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJlZml4KHZvaWQpOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldEV4ZWNQcmVmaXgodm9pZCk7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UGF0aCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgICAgICBQeV9TZXRQYXRoKGNvbnN0IHdjaGFyX3QgKik7Ci0jaWZkZWYgTVNfV0lORE9XUwotaW50IF9QeV9DaGVja1B5dGhvbjMoKTsKLSNlbmRpZgotCi0vKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFBsYXRmb3JtKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOwotI2VuZGlmCi0KLS8qIEludGVybmFsIC0tIHZhcmlvdXMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb25zICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKGludCkgUHlCeXRlQXJyYXlfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0luaXQodm9pZCk7Ci0jZW5kaWYKLQotLyogVmFyaW91cyBpbnRlcm5hbCBmaW5hbGl6ZXJzICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlNZXRob2RfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlGcmFtZV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUNGdW5jdGlvbl9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeURpY3RfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlUdXBsZV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUxpc3RfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlTZXRfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVBcnJheV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeUZsb2F0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5T1NfRmluaUludGVycnVwdHModm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0R1bXBTaHV0ZG93blN0YXRzKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeVR5cGVfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0Zpbmkodm9pZCk7Ci0KLVB5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKLSNlbmRpZgotCiAvKiBTdHVmZiB3aXRoIG5vIHByb3BlciBob21lICh5ZXQpICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGNoYXIgKikgUHlPU19SZWFkbGluZShGSUxFICosIEZJTEUgKiwgY29uc3QgY2hhciAqKTsKQEAgLTI5MCwxNCArMTg5LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0NoZWNrU3RhY2sodm9pZCk7CiAjZW5kaWYKIAotLyogU2lnbmFscyAqLwotdHlwZWRlZiB2b2lkICgqUHlPU19zaWdoYW5kbGVyX3QpKGludCk7Ci1QeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX2dldHNpZyhpbnQpOwotUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19zZXRzaWcoaW50LCBQeU9TX3NpZ2hhbmRsZXJfdCk7Ci0KLS8qIFJhbmRvbSAqLwotUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20gKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IGIwZmM2ZDAuLjAyN2MzZDggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMTMsNjAgKzEzLDI2IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9HRVRUSU1FT0ZEQVkKLXR5cGVkZWYgc3RydWN0IHRpbWV2YWwgX1B5VGltZV90aW1ldmFsOworI2lmZGVmIFBZX0lOVDY0X1QKKy8qIF9QeVRpbWVfdDogUHl0aG9uIHRpbWVzdGFtcCB3aXRoIHN1YnNlY29uZCBwcmVjaXNpb24uIEl0IGNhbiBiZSB1c2VkIHRvCisgICBzdG9yZSBhIGR1cmF0aW9uLCBhbmQgc28gaW5kaXJlY3RseSBhIGRhdGUgKHJlbGF0ZWQgdG8gYW5vdGhlciBkYXRlLCBsaWtlCisgICBVTklYIGVwb2NoKS4gKi8KK3R5cGVkZWYgUFlfSU5UNjRfVCBfUHlUaW1lX3Q7CisjZGVmaW5lIF9QeVRpbWVfTUlOIFBZX0xMT05HX01JTgorI2RlZmluZSBfUHlUaW1lX01BWCBQWV9MTE9OR19NQVgKICNlbHNlCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgdGltZV90ICAgICAgIHR2X3NlYzsgICAvKiBzZWNvbmRzIHNpbmNlIEphbi4gMSwgMTk3MCAqLwotICAgIGxvbmcgICAgICAgICB0dl91c2VjOyAgLyogYW5kIG1pY3Jvc2Vjb25kcyAqLwotfSBfUHlUaW1lX3RpbWV2YWw7CisjICBlcnJvciAiX1B5VGltZV90IG5lZWQgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHR5cGUiCiAjZW5kaWYKIAotLyogU3RydWN0dXJlIHVzZWQgYnkgdGltZS5nZXRfY2xvY2tfaW5mbygpICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb247Ci0gICAgaW50IG1vbm90b25pYzsKLSAgICBpbnQgYWRqdXN0YWJsZTsKLSAgICBkb3VibGUgcmVzb2x1dGlvbjsKLX0gX1B5X2Nsb2NrX2luZm9fdDsKLQotLyogU2ltaWxhciB0byBQT1NJWCBnZXR0aW1lb2ZkYXkgYnV0IGNhbm5vdCBmYWlsLiAgSWYgc3lzdGVtIGdldHRpbWVvZmRheQotICogZmFpbHMgb3IgaXMgbm90IGF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIGxvd2VyIHJlc29sdXRpb24gY2xvY2tzLgotICovCi1QeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApOwotCi0vKiBTaW1pbGFyIHRvIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgYnV0IHJldHJpZXZlIGFsc28gaW5mb3JtYXRpb24gb24gdGhlCi0gKiBjbG9jayB1c2VkIHRvIGdldCB0aGUgY3VycmVudCB0aW1lLiAqLwotUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKAotICAgIF9QeVRpbWVfdGltZXZhbCAqdHAsCi0gICAgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7Ci0KLSNkZWZpbmUgX1B5VGltZV9BRERfU0VDT05EUyh0diwgaW50ZXJ2YWwpIFwKLWRvIHsgXAotICAgIHR2LnR2X3VzZWMgKz0gKGxvbmcpICgoKGxvbmcpIGludGVydmFsIC0gaW50ZXJ2YWwpICogMTAwMDAwMCk7IFwKLSAgICB0di50dl9zZWMgKz0gKHRpbWVfdCkgaW50ZXJ2YWwgKyAodGltZV90KSAodHYudHZfdXNlYyAvIDEwMDAwMDApOyBcCi0gICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwOyBcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lIF9QeVRpbWVfSU5URVJWQUwodHZfc3RhcnQsIHR2X2VuZCkgXAotICAgICgodHZfZW5kLnR2X3NlYyAtIHR2X3N0YXJ0LnR2X3NlYykgKyBcCi0gICAgICh0dl9lbmQudHZfdXNlYyAtIHR2X3N0YXJ0LnR2X3VzZWMpICogMC4wMDAwMDEpCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLQogdHlwZWRlZiBlbnVtIHsKLSAgICAvKiBSb3VuZCB0b3dhcmRzIHplcm8uICovCi0gICAgX1B5VGltZV9ST1VORF9ET1dOPTAsCi0gICAgLyogUm91bmQgYXdheSBmcm9tIHplcm8uICovCi0gICAgX1B5VGltZV9ST1VORF9VUAorICAgIC8qIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpLgorICAgICAgIEZvciBleGFtcGxlLCB1c2VkIHRvIHJlYWQgYSBjbG9jay4gKi8KKyAgICBfUHlUaW1lX1JPVU5EX0ZMT09SPTAsCisgICAgLyogUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikuCisgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgZm9yIHRpbWVvdXQgdG8gd2FpdCAiYXQgbGVhc3QiIE4gc2Vjb25kcy4gKi8KKyAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcKIH0gX1B5VGltZV9yb3VuZF90OwogCi0vKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gdGltZV90LiAqLwotUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoCi0gICAgUHlPYmplY3QgKm9iaiwKLSAgICB0aW1lX3QgKnNlYywKLSAgICBfUHlUaW1lX3JvdW5kX3QpOwotCiAvKiBDb252ZXJ0IGEgdGltZV90IHRvIGEgUHlMb25nLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zyb21UaW1lX3QoCiAgICAgdGltZV90IHNlYyk7CkBAIC03NSw2ICs0MSwxMiBAQAogUHlBUElfRlVOQyh0aW1lX3QpIF9QeUxvbmdfQXNUaW1lX3QoCiAgICAgUHlPYmplY3QgKm9iaik7CiAKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byB0aW1lX3QuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVfdCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIF9QeVRpbWVfcm91bmRfdCk7CisKIC8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byBhIHRpbWV2YWwgc3RydWN0dXJlLgogICAgdXNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgogICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwKS4gKi8KQEAgLTkyLDEwICs2NCwxMTQgQEAKICAgICB0aW1lX3QgKnNlYywKICAgICBsb25nICpuc2VjLAogICAgIF9QeVRpbWVfcm91bmRfdCk7CisKKworLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2Ygc2Vjb25kcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21TZWNvbmRzKGludCBzZWNvbmRzKTsKKworLyogTWFjcm8gdG8gY3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2Ygc2Vjb25kcywgbm8gaW50ZWdlciBvdmVyZmxvdy4KKyAgIE9ubHkgdXNlIHRoZSBtYWNybyBmb3Igc21hbGwgdmFsdWVzLCBwcmVmZXIgX1B5VGltZV9Gcm9tU2Vjb25kcygpLiAqLworI2RlZmluZSBfUFlUSU1FX0ZST01TRUNPTkRTKHNlY29uZHMpIFwKKyAgICAgICAgICAgICgoX1B5VGltZV90KShzZWNvbmRzKSAqICgxMDAwICogMTAwMCAqIDEwMDApKQorCisvKiBDcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgKFB5dGhvbiBmbG9hdCBvciBpbnQpIHRvIGEgdGltZXRhbXAuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIChQeXRob24gZmxvYXQgb3IgaW50LCAxMF4tMykgdG8gYSB0aW1ldGFtcC4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfRnJvbU1pbGxpc2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IGEgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIHNlY29uZHMgYXMgYSBDIGRvdWJsZS4gKi8KK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShfUHlUaW1lX3QgdCk7CisKKy8qIENvbnZlcnQgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyAoMTBeLTMgc2Vjb25kcykuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhfUHlUaW1lX3QgdCwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBtaWNyb3NlY29uZHMgKDEwXi02IHNlY29uZHMpLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoX1B5VGltZV90IHQsCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCB0aW1lc3RhbXAgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKDEwXi05IHNlY29uZHMpIGFzIGEgUHl0aG9uIGludAorICAgb2JqZWN0LiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QoX1B5VGltZV90IHQpOworCisvKiBDb252ZXJ0IGEgdGltZXN0YW1wIHRvIGEgdGltZXZhbCBzdHJ1Y3R1cmUgKG1pY3Jvc2Vjb25kIHJlc29sdXRpb24pLgorICAgdHZfdXNlYyBpcyBhbHdheXMgcG9zaXRpdmUuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiB0aGUgY29udmVyc2lvbiBvdmVyZmxvd2VkLAorICAgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0FzVGltZXZhbChfUHlUaW1lX3QgdCwKKyAgICBzdHJ1Y3QgdGltZXZhbCAqdHYsCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogU2ltaWxhciB0byBfUHlUaW1lX0FzVGltZXZhbCgpLCBidXQgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1ldmFsX25vcmFpc2UoX1B5VGltZV90IHQsCisgICAgc3RydWN0IHRpbWV2YWwgKnR2LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKKy8qIENvbnZlcnQgYSB0aW1lc3RhbXAgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUgKG5hbm9zZWNvbmQgcmVzb2x1dGlvbikuCisgICB0dl9uc2VjIGlzIGFsd2F5cyBwb3NpdGl2ZS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1lc3BlYyhfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWVzcGVjICp0cyk7CiAjZW5kaWYKIAotLyogRHVtbXkgdG8gZm9yY2UgbGlua2luZy4gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9Jbml0KHZvaWQpOworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorCisgICBUaGUgZnVuY3Rpb24gY2Fubm90IGZhaWwuIF9QeVRpbWVfSW5pdCgpIGVuc3VyZXMgdGhhdCB0aGUgc3lzdGVtIGNsb2NrCisgICB3b3Jrcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrKHZvaWQpOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4gX1B5VGltZV9Jbml0KCkgZW5zdXJlcyB0aGF0IGEgbW9ub3RvbmljIGNsb2NrCisgICBpcyBhdmFpbGFibGUgYW5kIHdvcmtzLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2sodm9pZCk7CisKKworLyogU3RydWN0dXJlIHVzZWQgYnkgdGltZS5nZXRfY2xvY2tfaW5mbygpICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb247CisgICAgaW50IG1vbm90b25pYzsKKyAgICBpbnQgYWRqdXN0YWJsZTsKKyAgICBkb3VibGUgcmVzb2x1dGlvbjsKK30gX1B5X2Nsb2NrX2luZm9fdDsKKworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorICogRmlsbCBjbG9jayBpbmZvcm1hdGlvbiBpZiBpbmZvIGlzIG5vdCBOVUxMLgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oCisgICAgX1B5VGltZV90ICp0LAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIEZpbGwgaW5mbyAoaWYgc2V0KSB3aXRoIGluZm9ybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiB1c2VkIHRvIGdldCB0aGUgdGltZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKAorICAgIF9QeVRpbWVfdCAqdCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKworCisvKiBJbml0aWFsaXplIHRpbWUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0luaXQodm9pZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggYWUzZjU1Ni4uZjE3YmMxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC02LDM4ICs2LDQzIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgorLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCiAxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAogMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQogMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CiAKLU5vdGU6IC5wb3AoKSBhYnVzZXMgdGhlIGhhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcwotbm8gbWVhbmluZyBvdGhlcndpc2UuCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaGF2ZSBubyBtZWFuaW5nLgorVGhlIGhhc2ggZmllbGQgb2YgRHVtbW55IHNsb3RzIGFyZSBzZXQgdG8gLTEKK21lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQorZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisKICNkZWZpbmUgUHlTZXRfTUlOU0laRSA4CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIHRoZSBrZXkuICovCiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiB0aGUga2V5ICovCiB9IHNldGVudHJ5OwogCisvKiBUaGUgU2V0T2JqZWN0IGRhdGEgc3RydWN0dXJlIGlzIHNoYXJlZCBieSBzZXQgYW5kIGZyb3plbnNldCBvYmplY3RzLgogCi0vKgotVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBzaGFyZWQgYnkgc2V0IGFuZCBmcm96ZW5zZXQgb2JqZWN0cy4KK0ludmFyaWFudCBmb3Igc2V0czoKKyAtIGhhc2ggaXMgLTEKKworSW52YXJpYW50cyBmb3IgZnJvemVuc2V0czoKKyAtIGRhdGEgaXMgaW1tdXRhYmxlLgorIC0gaGFzaCBpcyB0aGUgaGFzaCBvZiB0aGUgZnJvemVuc2V0IG9yIC0xIGlmIG5vdCBjb21wdXRlZCB5ZXQuCisKICovCiAKLXR5cGVkZWYgc3RydWN0IF9zZXRvYmplY3QgUHlTZXRPYmplY3Q7Ci1zdHJ1Y3QgX3NldG9iamVjdCB7Cit0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlfc3NpemVfdCBmaWxsOyAgLyogIyBBY3RpdmUgKyAjIER1bW15ICovCi0gICAgUHlfc3NpemVfdCB1c2VkOyAgLyogIyBBY3RpdmUgKi8KKyAgICBQeV9zc2l6ZV90IGZpbGw7ICAgICAgICAgICAgLyogTnVtYmVyIGFjdGl2ZSBhbmQgZHVtbXkgZW50cmllcyovCisgICAgUHlfc3NpemVfdCB1c2VkOyAgICAgICAgICAgIC8qIE51bWJlciBhY3RpdmUgZW50cmllcyAqLwogCiAgICAgLyogVGhlIHRhYmxlIGNvbnRhaW5zIG1hc2sgKyAxIHNsb3RzLCBhbmQgdGhhdCdzIGEgcG93ZXIgb2YgMi4KICAgICAgKiBXZSBzdG9yZSB0aGUgbWFzayBpbnN0ZWFkIG9mIHRoZSBzaXplIGJlY2F1c2UgdGhlIG1hc2sgaXMgbW9yZQpAQCAtNDUsMzMgKzUwLDQyIEBACiAgICAgICovCiAgICAgUHlfc3NpemVfdCBtYXNrOwogCi0gICAgLyogdGFibGUgcG9pbnRzIHRvIHNtYWxsdGFibGUgZm9yIHNtYWxsIHRhYmxlcywgZWxzZSB0bwotICAgICAqIGFkZGl0aW9uYWwgbWFsbG9jJ2VkIG1lbW9yeS4gIHRhYmxlIGlzIG5ldmVyIE5VTEwhICBUaGlzIHJ1bGUKLSAgICAgKiBzYXZlcyByZXBlYXRlZCBydW50aW1lIG51bGwtdGVzdHMuCisgICAgLyogVGhlIHRhYmxlIHBvaW50cyB0byBhIGZpeGVkLXNpemUgc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzCisgICAgICogb3IgdG8gYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5IGZvciBiaWdnZXIgdGFibGVzLgorICAgICAqIFRoZSB0YWJsZSBwb2ludGVyIGlzIG5ldmVyIE5VTEwgd2hpY2ggc2F2ZXMgdXMgZnJvbSByZXBlYXRlZAorICAgICAqIHJ1bnRpbWUgbnVsbC10ZXN0cy4KICAgICAgKi8KICAgICBzZXRlbnRyeSAqdGFibGU7Ci0gICAgc2V0ZW50cnkgKigqbG9va3VwKShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKLSAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogb25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCi0gICAgc2V0ZW50cnkgc21hbGx0YWJsZVtQeVNldF9NSU5TSVpFXTsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogT25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCisgICAgUHlfc3NpemVfdCBmaW5nZXI7ICAgICAgICAgIC8qIFNlYXJjaCBmaW5nZXIgZm9yIHBvcCgpICovCiAKKyAgICBzZXRlbnRyeSBzbWFsbHRhYmxlW1B5U2V0X01JTlNJWkVdOwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgICAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotfTsKLSNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworfSBQeVNldE9iamVjdDsKKworI2RlZmluZSBQeVNldF9HRVRfU0laRShzbykgKCgoUHlTZXRPYmplY3QgKikoc28pKS0+dXNlZCkKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlTZXRfRHVtbXk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7CitQeUFQSV9GVU5DKGludCkgX1B5U2V0X1VwZGF0ZShQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqaXRlcmFibGUpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CisKKyNlbmRpZiAvKiBTZWN0aW9uIGV4Y2x1ZGVkIGJ5IFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVNldF9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RnJvemVuU2V0X1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTZXRJdGVyX1R5cGU7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVNldF9EdW1teTsKLSNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X05ldyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGcm96ZW5TZXRfTmV3KFB5T2JqZWN0ICopOwogCi0vKiBJbnZhcmlhbnRzIGZvciBmcm96ZW5zZXRzOgotICogICAgIGRhdGEgaXMgaW1tdXRhYmxlLgotICogICAgIGhhc2ggaXMgdGhlIGhhc2ggb2YgdGhlIGZyb3plbnNldCBvciAtMSBpZiBub3QgY29tcHV0ZWQgeWV0LgotICogSW52YXJpYW50cyBmb3Igc2V0czoKLSAqICAgICBoYXNoIGlzIC0xCi0gKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9BZGQoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ29udGFpbnMoUHlPYmplY3QgKmFueXNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfRGlzY2FyZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVNldF9TaXplKFB5T2JqZWN0ICphbnlzZXQpOwogCiAjZGVmaW5lIFB5RnJvemVuU2V0X0NoZWNrRXhhY3Qob2IpIChQeV9UWVBFKG9iKSA9PSAmUHlGcm96ZW5TZXRfVHlwZSkKICNkZWZpbmUgUHlBbnlTZXRfQ2hlY2tFeGFjdChvYikgXApAQCAtODcsMjYgKzEwMSw2IEBACiAgICAgKFB5X1RZUEUob2IpID09ICZQeUZyb3plblNldF9UeXBlIHx8IFwKICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYiksICZQeUZyb3plblNldF9UeXBlKSkKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9OZXcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnJvemVuU2V0X05ldyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlTZXRfU2l6ZShQeU9iamVjdCAqYW55c2V0KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlTZXRfR0VUX1NJWkUoc28pICgoKFB5U2V0T2JqZWN0ICopKHNvKSktPnVzZWQpCi0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhcihQeU9iamVjdCAqc2V0KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9Db250YWlucyhQeU9iamVjdCAqYW55c2V0LCBQeU9iamVjdCAqa2V5KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9EaXNjYXJkKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICprZXkpOwotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0FkZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhpbnQpIF9QeVNldF9VcGRhdGUoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKml0ZXJhYmxlKTsKLQotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7Ci0jZW5kaWYKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaAppbmRleCBmN2VlOTBjLi4yNjM3MGUwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zbGljZW9iamVjdC5oCkBAIC00MSw3ICs0MSw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzKFB5T2JqZWN0ICpyLCBQeV9zc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCAqc3RlcCk7CiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzRXgoUHlPYmplY3QgKnIsIFB5X3NzaXplX3QgbGVuZ3RoLAotCQkJCSAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgCisJCQkJICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICpzdG9wLAogCQkJCSAgICBQeV9zc2l6ZV90ICpzdGVwLCBQeV9zc2l6ZV90ICpzbGljZWxlbmd0aCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDFjZmQ4ODQuLjE0MDljZDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQzLDcgKzQzLDYgQEAKICAgICBQeU9iamVjdCAqc3RlX2NoaWxkcmVuOyAgLyogbGlzdCBvZiBjaGlsZCBibG9ja3MgKi8KICAgICBQeU9iamVjdCAqc3RlX2RpcmVjdGl2ZXM7LyogbG9jYXRpb25zIG9mIGdsb2JhbCBhbmQgbm9ubG9jYWwgc3RhdGVtZW50cyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwotICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCiAgICAgaW50IHN0ZV9uZXN0ZWQ7ICAgICAgLyogdHJ1ZSBpZiBibG9jayBpcyBuZXN0ZWQgKi8KICAgICB1bnNpZ25lZCBzdGVfZnJlZSA6IDE7ICAgICAgICAvKiB0cnVlIGlmIGJsb2NrIGhhcyBmcmVlIHZhcmlhYmxlcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9jaGlsZF9mcmVlIDogMTsgIC8qIHRydWUgaWYgYSBjaGlsZCBibG9jayBoYXMgZnJlZSB2YXJzLApAQCAtMTA4LDEwICsxMDcsNiBAQAogI2RlZmluZSBGUkVFIDQKICNkZWZpbmUgQ0VMTCA1CiAKLS8qIFRoZSBmb2xsb3dpbmcgdHdvIG5hbWVzIGFyZSB1c2VkIGZvciB0aGUgc3RlX3Vub3B0aW1pemVkIGJpdCBmaWVsZCAqLwotI2RlZmluZSBPUFRfSU1QT1JUX1NUQVIgMQotI2RlZmluZSBPUFRfVE9QTEVWRUwgMiAgLyogdG9wLWxldmVsIG5hbWVzLCBpbmNsdWRpbmcgZXZhbCBhbmQgZXhlYyAqLwotCiAjZGVmaW5lIEdFTkVSQVRPUiAxCiAjZGVmaW5lIEdFTkVSQVRPUl9FWFBSRVNTSU9OIDIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS90b2tlbi5oIGIvSW5jbHVkZS90b2tlbi5oCmluZGV4IDkwNTAyMmIuLjU5NWFmYTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdG9rZW4uaAorKysgYi9JbmNsdWRlL3Rva2VuLmgKQEAgLTU4LDEzICs1OCwxNiBAQAogI2RlZmluZSBET1VCTEVTVEFSRVFVQUwJNDYKICNkZWZpbmUgRE9VQkxFU0xBU0gJNDcKICNkZWZpbmUgRE9VQkxFU0xBU0hFUVVBTCA0OAotI2RlZmluZSBBVCAgICAgICAgICAgICAgNDkJCi0jZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MAotI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTEKKyNkZWZpbmUgQVQgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIEFURVFVQUwJCTUwCisjZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MQorI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTIKIC8qIERvbid0IGZvcmdldCB0byB1cGRhdGUgdGhlIHRhYmxlIF9QeVBhcnNlcl9Ub2tlbk5hbWVzIGluIHRva2VuaXplci5jISAqLwotI2RlZmluZSBPUAkJNTIKLSNkZWZpbmUgRVJST1JUT0tFTgk1MwotI2RlZmluZSBOX1RPS0VOUwk1NAorI2RlZmluZSBPUAkJNTMKKyNkZWZpbmUgQVdBSVQJCTU0CisjZGVmaW5lIEFTWU5DCQk1NQorI2RlZmluZSBFUlJPUlRPS0VOCTU2CisjZGVmaW5lIE5fVE9LRU5TCTU3CiAKIC8qIFNwZWNpYWwgZGVmaW5pdGlvbnMgZm9yIGNvb3BlcmF0aW9uIHdpdGggcGFyc2VyICovCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHlwZXNsb3RzLmggYi9JbmNsdWRlL3R5cGVzbG90cy5oCmluZGV4IGFkM2NkZmIuLjBjZTZhMzcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHlwZXNsb3RzLmgKKysrIGIvSW5jbHVkZS90eXBlc2xvdHMuaApAQCAtNzQsMyArNzQsMTIgQEAKICNkZWZpbmUgUHlfdHBfbWVtYmVycyA3MgogI2RlZmluZSBQeV90cF9nZXRzZXQgNzMKICNkZWZpbmUgUHlfdHBfZnJlZSA3NAorI2RlZmluZSBQeV9uYl9tYXRyaXhfbXVsdGlwbHkgNzUKKyNkZWZpbmUgUHlfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkgNzYKKyNkZWZpbmUgUHlfYW1fYXdhaXQgNzcKKyNkZWZpbmUgUHlfYW1fYWl0ZXIgNzgKKyNkZWZpbmUgUHlfYW1fYW5leHQgNzkKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCisvKiBOZXcgaW4gMy41ICovCisjZGVmaW5lIFB5X3RwX2ZpbmFsaXplIDgwCisjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdWNuaGFzaC5oIGIvSW5jbHVkZS91Y25oYXNoLmgKaW5kZXggOGRlOWJhMC4uNDUzNjJlOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS91Y25oYXNoLmgKKysrIGIvSW5jbHVkZS91Y25oYXNoLmgKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBpbnQgc2l6ZTsKIAogICAgIC8qIEdldCBuYW1lIGZvciBhIGdpdmVuIGNoYXJhY3RlciBjb2RlLiAgUmV0dXJucyBub24temVybyBpZgotICAgICAgIHN1Y2Nlc3MsIHplcm8gaWYgbm90LiAgRG9lcyBub3Qgc2V0IFB5dGhvbiBleGNlcHRpb25zLiAKKyAgICAgICBzdWNjZXNzLCB6ZXJvIGlmIG5vdC4gIERvZXMgbm90IHNldCBQeXRob24gZXhjZXB0aW9ucy4KICAgICAgICBJZiBzZWxmIGlzIE5VTEwsIGRhdGEgY29tZSBmcm9tIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlLgogICAgICAgIElmIGl0IGlzIG5vdCBOVUxMLCBpdCBzaG91bGQgYmUgYSB1bmljb2RlZGF0YS51Y2RfWF9ZX1ogb2JqZWN0ICovCiAgICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCBkN2IyYWNlLi40YmE2MzI4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMjA2MCwxMiArMjA2MCw2IEBACiAgICAgUHlPYmplY3QgKmVsZW1lbnQgICAgICAgICAgIC8qIEVsZW1lbnQgc3RyaW5nICovCiAgICAgKTsKIAotLyogQ2hlY2tzIHdoZXRoZXIgdGhlIHN0cmluZyBjb250YWlucyBhbnkgTlVMIGNoYXJhY3RlcnMuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0ICopOwotI2VuZGlmCi0KIC8qIENoZWNrcyB3aGV0aGVyIGFyZ3VtZW50IGlzIGEgdmFsaWQgaWRlbnRpZmllci4gKi8KIAogUHlBUElfRlVOQyhpbnQpIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIoUHlPYmplY3QgKnMpOwpAQCAtMjI0NSw2ICsyMjM5LDggQEAKICAgICBQeV9VTklDT0RFIGMKICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gb3JtYXRMb25nKFB5T2JqZWN0ICosIGludCwgaW50LCBpbnQpOworCiAvKiBDcmVhdGUgYSBjb3B5IG9mIGEgdW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gTlVMTAogICAgYW5kIHJhaXNlIGEgTWVtb3J5RXJyb3IgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsIG90aGVyd2lzZQogICAgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZSB0aGUgYnVmZmVyKS4gKi8KZGlmZiAtLWdpdCBhL0xpYi9fX2Z1dHVyZV9fLnB5IGIvTGliL19fZnV0dXJlX18ucHkKaW5kZXggM2IyZDVlYy4uNjNiMmJlMyAxMDA2NDQKLS0tIGEvTGliL19fZnV0dXJlX18ucHkKKysrIGIvTGliL19fZnV0dXJlX18ucHkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAicHJpbnRfZnVuY3Rpb24iLAogICAgICJ1bmljb2RlX2xpdGVyYWxzIiwKICAgICAiYmFycnlfYXNfRkxVRkwiLAorICAgICJnZW5lcmF0b3Jfc3RvcCIsCiBdCiAKIF9fYWxsX18gPSBbImFsbF9mZWF0dXJlX25hbWVzIl0gKyBhbGxfZmVhdHVyZV9uYW1lcwpAQCAtNzIsNiArNzMsNyBAQAogQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OICA9IDB4MTAwMDAgICAjIHByaW50IGZ1bmN0aW9uCiBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyA9IDB4MjAwMDAgIyB1bmljb2RlIHN0cmluZyBsaXRlcmFscwogQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgPSAweDQwMDAwCitDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgID0gMHg4MDAwMCAjIFN0b3BJdGVyYXRpb24gYmVjb21lcyBSdW50aW1lRXJyb3IgaW4gZ2VuZXJhdG9ycwogCiBjbGFzcyBfRmVhdHVyZToKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9uYWxSZWxlYXNlLCBtYW5kYXRvcnlSZWxlYXNlLCBjb21waWxlcl9mbGFnKToKQEAgLTEzMiwzICsxMzQsNyBAQAogYmFycnlfYXNfRkxVRkwgPSBfRmVhdHVyZSgoMywgMSwgMCwgImFscGhhIiwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDMsIDksIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMKQorCitnZW5lcmF0b3Jfc3RvcCA9IF9GZWF0dXJlKCgzLCA1LCAwLCAiYmV0YSIsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgzLCA3LCAwLCAiYWxwaGEiLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCmRpZmYgLS1naXQgYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weSBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CmluZGV4IDMzYjU5YWIuLmEwMmIyMTkgMTAwNjQ0Ci0tLSBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CisrKyBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CkBAIC05LDcgKzksOCBAQAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgc3lzCiAKLV9fYWxsX18gPSBbIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwKK19fYWxsX18gPSBbIkF3YWl0YWJsZSIsICJDb3JvdXRpbmUiLCAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsCiAgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLAogICAgICAgICAgICAiU2V0IiwgIk11dGFibGVTZXQiLAogICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCkBAIC01MCw2ICs1MSw3IEBACiBkaWN0X2l0ZW1zID0gdHlwZSh7fS5pdGVtcygpKQogIyMgbWlzYyAjIwogbWFwcGluZ3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQorZ2VuZXJhdG9yID0gdHlwZSgobGFtYmRhOiAoeWllbGQpKSgpKQogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwpAQCAtNzMsNiArNzUsMTI3IEBACiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKK2NsYXNzIF9Bd2FpdGFibGVNZXRhKEFCQ01ldGEpOgorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKGNscywgaW5zdGFuY2UpOgorICAgICAgICAjIDB4ODAgPSBDT19DT1JPVVRJTkUKKyAgICAgICAgIyAweDEwMCA9IENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gaW1wb3J0ICdpbnNwZWN0JyBtb2R1bGUsIGFzCisgICAgICAgICMgYSBkZXBlbmRlbmN5IGZvciAnY29sbGVjdGlvbnMuYWJjJy4KKyAgICAgICAgQ09fQ09ST1VUSU5FUyA9IDB4ODAgfCAweDEwMAorCisgICAgICAgIGlmIChpc2luc3RhbmNlKGluc3RhbmNlLCBnZW5lcmF0b3IpIGFuZAorICAgICAgICAgICAgaW5zdGFuY2UuZ2lfY29kZS5jb19mbGFncyAmIENPX0NPUk9VVElORVMpOgorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJldHVybiBzdXBlcigpLl9faW5zdGFuY2VjaGVja19fKGluc3RhbmNlKQorCisKK2NsYXNzIEF3YWl0YWJsZShtZXRhY2xhc3M9X0F3YWl0YWJsZU1ldGEpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgIHlpZWxkCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQXdhaXRhYmxlOgorICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgorICAgICAgICAgICAgICAgIGlmICJfX2F3YWl0X18iIGluIEIuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9fYXdhaXRfXyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworY2xhc3MgQ29yb3V0aW5lKEF3YWl0YWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgY29yb3V0aW5lLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgY29yb3V0aW5lLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgdHlwCisgICAgICAgICAgICB2YWwgPSB0eXAoKQorICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKKyAgICAgICAgcmFpc2UgdmFsCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGNvcm91dGluZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGhyb3coR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQ29yb3V0aW5lOgorICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKKyAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK2NsYXNzIEFzeW5jSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBBc3luY0l0ZXJhdG9yKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhYmxlOgorICAgICAgICAgICAgaWYgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitjbGFzcyBBc3luY0l0ZXJhdG9yKEFzeW5jSXRlcmFibGUpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBpdGVtIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbiB3aGVuIGV4aGF1c3RlZC4iIiIKKyAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmF0b3I6CisgICAgICAgICAgICBpZiAoYW55KCJfX2FuZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCiBjbGFzcyBJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMTI0LDYgKzI0Nyw2NCBAQAogSXRlcmF0b3IucmVnaXN0ZXIodHVwbGVfaXRlcmF0b3IpCiBJdGVyYXRvci5yZWdpc3Rlcih6aXBfaXRlcmF0b3IpCiAKKworY2xhc3MgR2VuZXJhdG9yKEl0ZXJhdG9yKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBpdGVtIGZyb20gdGhlIGdlbmVyYXRvci4KKyAgICAgICAgV2hlbiBleGhhdXN0ZWQsIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5zZW5kKE5vbmUpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIlNlbmQgYSB2YWx1ZSBpbnRvIHRoZSBnZW5lcmF0b3IuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBnZW5lcmF0b3IuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHZhbCBpcyBOb25lOgorICAgICAgICAgICAgaWYgdGIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSB0eXAKKyAgICAgICAgICAgIHZhbCA9IHR5cCgpCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsID0gdmFsLndpdGhfdHJhY2ViYWNrKHRiKQorICAgICAgICByYWlzZSB2YWwKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiUmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgKEdlbmVyYXRvckV4aXQsIFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBHZW5lcmF0b3I6CisgICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KKyAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2l0ZXJfXycsICdfX25leHRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6CisgICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgorICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitHZW5lcmF0b3IucmVnaXN0ZXIoZ2VuZXJhdG9yKQorCisKIGNsYXNzIFNpemVkKG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC00NTMsNiArNjM0LDggQEAKIAogY2xhc3MgTWFwcGluZ1ZpZXcoU2l6ZWQpOgogCisgICAgX19zbG90c19fID0gJ19tYXBwaW5nJywKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXBwaW5nKToKICAgICAgICAgc2VsZi5fbWFwcGluZyA9IG1hcHBpbmcKIApAQCAtNDY1LDYgKzY0OCw4IEBACiAKIGNsYXNzIEtleXNWaWV3KE1hcHBpbmdWaWV3LCBTZXQpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZnJvbV9pdGVyYWJsZShzZWxmLCBpdCk6CiAgICAgICAgIHJldHVybiBzZXQoaXQpCkBAIC00ODAsNiArNjY1LDggQEAKIAogY2xhc3MgSXRlbXNWaWV3KE1hcHBpbmdWaWV3LCBTZXQpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZnJvbV9pdGVyYWJsZShzZWxmLCBpdCk6CiAgICAgICAgIHJldHVybiBzZXQoaXQpCkBAIC01MDIsNiArNjg5LDggQEAKIAogY2xhc3MgVmFsdWVzVmlldyhNYXBwaW5nVmlldyk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKICAgICAgICAgICAgIGlmIHZhbHVlID09IHNlbGYuX21hcHBpbmdba2V5XToKQEAgLTY0NywxMyArODM2LDIzIEBACiAgICAgICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKGxlbihzZWxmKSkpOgogICAgICAgICAgICAgeWllbGQgc2VsZltpXQogCi0gICAgZGVmIGluZGV4KHNlbGYsIHZhbHVlKToKLSAgICAgICAgJycnUy5pbmRleCh2YWx1ZSkgLT4gaW50ZWdlciAtLSByZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUuCisgICAgZGVmIGluZGV4KHNlbGYsIHZhbHVlLCBzdGFydD0wLCBzdG9wPU5vbmUpOgorICAgICAgICAnJydTLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgogICAgICAgICAgICBSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuCiAgICAgICAgICcnJwotICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUoc2VsZik6Ci0gICAgICAgICAgICBpZiB2ID09IHZhbHVlOgotICAgICAgICAgICAgICAgIHJldHVybiBpCisgICAgICAgIGlmIHN0YXJ0IGlzIG5vdCBOb25lIGFuZCBzdGFydCA8IDA6CisgICAgICAgICAgICBzdGFydCA9IG1heChsZW4oc2VsZikgKyBzdGFydCwgMCkKKyAgICAgICAgaWYgc3RvcCBpcyBub3QgTm9uZSBhbmQgc3RvcCA8IDA6CisgICAgICAgICAgICBzdG9wICs9IGxlbihzZWxmKQorCisgICAgICAgIGkgPSBzdGFydAorICAgICAgICB3aGlsZSBzdG9wIGlzIE5vbmUgb3IgaSA8IHN0b3A6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZltpXSA9PSB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpICs9IDEKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogCiAgICAgZGVmIGNvdW50KHNlbGYsIHZhbHVlKToKZGlmZiAtLWdpdCBhL0xpYi9fY29tcHJlc3Npb24ucHkgYi9MaWIvX2NvbXByZXNzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMGYzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvX2NvbXByZXNzaW9uLnB5CkBAIC0wLDAgKzEsMTUyIEBACisiIiJJbnRlcm5hbCBjbGFzc2VzIHVzZWQgYnkgdGhlIGd6aXAsIGx6bWEgYW5kIGJ6MiBtb2R1bGVzIiIiCisKK2ltcG9ydCBpbworCisKK0JVRkZFUl9TSVpFID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRSAgIyBDb21wcmVzc2VkIGRhdGEgcmVhZCBjaHVuayBzaXplCisKKworY2xhc3MgQmFzZVN0cmVhbShpby5CdWZmZXJlZElPQmFzZSk6CisgICAgIiIiTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLiIiIgorCisgICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQorCisgICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi53cml0YWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworCitjbGFzcyBEZWNvbXByZXNzUmVhZGVyKGlvLlJhd0lPQmFzZSk6CisgICAgIiIiQWRhcHRzIHRoZSBkZWNvbXByZXNzb3IgQVBJIHRvIGEgUmF3SU9CYXNlIHJlYWRlciBBUEkiIiIKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgZGVjb21wX2ZhY3RvcnksIHRyYWlsaW5nX2Vycm9yPSgpLCAqKmRlY29tcF9hcmdzKToKKyAgICAgICAgc2VsZi5fZnAgPSBmcAorICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQorICAgICAgICBzZWxmLl9wb3MgPSAwICAjIEN1cnJlbnQgb2Zmc2V0IGluIGRlY29tcHJlc3NlZCBzdHJlYW0KKworICAgICAgICAjIFNldCB0byBzaXplIG9mIGRlY29tcHJlc3NlZCBzdHJlYW0gb25jZSBpdCBpcyBrbm93biwgZm9yIFNFRUtfRU5ECisgICAgICAgIHNlbGYuX3NpemUgPSAtMQorCisgICAgICAgICMgU2F2ZSB0aGUgZGVjb21wcmVzc29yIGZhY3RvcnkgYW5kIGFyZ3VtZW50cy4KKyAgICAgICAgIyBJZiB0aGUgZmlsZSBjb250YWlucyBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMsIGVhY2gKKyAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4gQSBuZXcgZGVjb21wcmVzc29yCisgICAgICAgICMgb2JqZWN0IGlzIGFsc28gbmVlZGVkIHdoZW4gaW1wbGVtZW50aW5nIGEgYmFja3dhcmRzIHNlZWsoKS4KKyAgICAgICAgc2VsZi5fZGVjb21wX2ZhY3RvcnkgPSBkZWNvbXBfZmFjdG9yeQorICAgICAgICBzZWxmLl9kZWNvbXBfYXJncyA9IGRlY29tcF9hcmdzCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KCoqc2VsZi5fZGVjb21wX2FyZ3MpCisKKyAgICAgICAgIyBFeGNlcHRpb24gY2xhc3MgdG8gY2F0Y2ggZnJvbSBkZWNvbXByZXNzb3Igc2lnbmlmeWluZyBpbnZhbGlkCisgICAgICAgICMgdHJhaWxpbmcgZGF0YSB0byBpZ25vcmUKKyAgICAgICAgc2VsZi5fdHJhaWxpbmdfZXJyb3IgPSB0cmFpbGluZ19lcnJvcgorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBOb25lCisgICAgICAgIHJldHVybiBzdXBlcigpLmNsb3NlKCkKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZwLnNlZWthYmxlKCkKKworICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIHZpZXcsIHZpZXcuY2FzdCgiQiIpIGFzIGJ5dGVfdmlldzoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKGJ5dGVfdmlldykpCisgICAgICAgICAgICBieXRlX3ZpZXdbOmxlbihkYXRhKV0gPSBkYXRhCisgICAgICAgIHJldHVybiBsZW4oZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlYWRhbGwoKQorCisgICAgICAgIGlmIG5vdCBzaXplIG9yIHNlbGYuX2VvZjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgZGF0YSA9IE5vbmUgICMgRGVmYXVsdCBpZiBFT0YgaXMgZW5jb3VudGVyZWQKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5yZWFkKEJVRkZFUl9TSVpFKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgKKyAgICAgICAgICAgICAgICAgICAgKipzZWxmLl9kZWNvbXBfYXJncykKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaywgc2l6ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5fdHJhaWxpbmdfZXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgVHJhaWxpbmcgZGF0YSBpc24ndCBhIHZhbGlkIGNvbXByZXNzZWQgc3RyZWFtOyBpZ25vcmUgaXQuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5uZWVkc19pbnB1dDoKKyAgICAgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBzZWxmLl9mcC5yZWFkKEJVRkZFUl9TSVpFKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYXdibG9jayA9IGIiIgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaywgc2l6ZSkKKyAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDApCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gc2VsZi5fZGVjb21wX2ZhY3RvcnkoKipzZWxmLl9kZWNvbXBfYXJncykKKworICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKKyAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KKyAgICAgICAgaWYgd2hlbmNlID09IGlvLlNFRUtfU0VUOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0NVUjoKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0VORDoKKyAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgorICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5yZWFkKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKKworICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCisgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKKyAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCisKKyAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgIHdoaWxlIG9mZnNldCA+IDA6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKG1pbihpby5ERUZBVUxUX0JVRkZFUl9TSVpFLCBvZmZzZXQpKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG9mZnNldCAtPSBsZW4oZGF0YSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9wb3MKZGlmZiAtLWdpdCBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5IGIvTGliL19kdW1teV90aHJlYWQucHkKaW5kZXggYjY3Y2ZiOS4uMzZlNWYzOCAxMDA2NDQKLS0tIGEvTGliL19kdW1teV90aHJlYWQucHkKKysrIGIvTGliL19kdW1teV90aHJlYWQucHkKQEAgLTE0MCw2ICsxNDAsMTQgQEAKICAgICBkZWYgbG9ja2VkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5sb2NrZWRfc3RhdHVzCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiPCVzICVzLiVzIG9iamVjdCBhdCAlcz4iICUgKAorICAgICAgICAgICAgImxvY2tlZCIgaWYgc2VsZi5sb2NrZWRfc3RhdHVzIGVsc2UgInVubG9ja2VkIiwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICBoZXgoaWQoc2VsZikpCisgICAgICAgICkKKwogIyBVc2VkIHRvIHNpZ25hbCB0aGF0IGludGVycnVwdF9tYWluIHdhcyBjYWxsZWQgaW4gYSAidGhyZWFkIgogX2ludGVycnVwdCA9IEZhbHNlCiAjIFRydWUgd2hlbiBub3QgZXhlY3V0aW5nIGluIGEgInRocmVhZCIKZGlmZiAtLWdpdCBhL0xpYi9fcHlkZWNpbWFsLnB5IGIvTGliL19weWRlY2ltYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViYTRlZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9fcHlkZWNpbWFsLnB5CkBAIC0wLDAgKzEsNjM4MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDQgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyMgV3JpdHRlbiBieSBFcmljIFByaWNlIDxlcHJpY2UgYXQgdGpoc3N0LmVkdT4KKyMgICAgYW5kIEZhY3VuZG8gQmF0aXN0YSA8ZmFjdW5kbyBhdCB0YW5pcXVldGlsLmNvbS5hcj4KKyMgICAgYW5kIFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKyMgICAgYW5kIEFhaHogPGFhaHogYXQgcG9ib3guY29tPgorIyAgICBhbmQgVGltIFBldGVycworCisjIFRoaXMgbW9kdWxlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgbGF0ZXN0IHVwZGF0ZXMgb2YgdGhlCisjIElCTSBzcGVjaWZpY2F0aW9uIGFzIGl0IGV2b2x2ZXMuICBUaG9zZSB1cGRhdGVzIHdpbGwgYmUgdHJlYXRlZAorIyBhcyBidWcgZml4ZXMgKGRldmlhdGlvbiBmcm9tIHRoZSBzcGVjIGlzIGEgY29tcGF0aWJpbGl0eSwgdXNhYmlsaXR5CisjIGJ1ZykgYW5kIHdpbGwgYmUgYmFja3BvcnRlZC4gIEF0IHRoaXMgcG9pbnQgdGhlIHNwZWMgaXMgc3RhYmlsaXppbmcKKyMgYW5kIHRoZSB1cGRhdGVzIGFyZSBiZWNvbWluZyBmZXdlciwgc21hbGxlciwgYW5kIGxlc3Mgc2lnbmlmaWNhbnQuCisKKyIiIgorVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFzZWQgb24KK3RoZSBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uOgorCisgICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKKworYW5kIElFRUUgc3RhbmRhcmQgODU0LTE5ODc6CisKKyAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfODU0LTE5ODcKKworRGVjaW1hbCBmbG9hdGluZyBwb2ludCBoYXMgZmluaXRlIHByZWNpc2lvbiB3aXRoIGFyYml0cmFyaWx5IGxhcmdlIGJvdW5kcy4KKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMgdG8gc3VwcG9ydCBhcml0aG1ldGljIHVzaW5nIGZhbWlsaWFyCisic2Nob29saG91c2UiIHJ1bGVzIGFuZCB0byBhdm9pZCBzb21lIG9mIHRoZSB0cmlja3kgcmVwcmVzZW50YXRpb24KK2lzc3VlcyBhc3NvY2lhdGVkIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50LiAgVGhlIHBhY2thZ2UgaXMgZXNwZWNpYWxseQordXNlZnVsIGZvciBmaW5hbmNpYWwgYXBwbGljYXRpb25zIG9yIGZvciBjb250ZXh0cyB3aGVyZSB1c2VycyBoYXZlCitleHBlY3RhdGlvbnMgdGhhdCBhcmUgYXQgb2RkcyB3aXRoIGJpbmFyeSBmbG9hdGluZyBwb2ludCAoZm9yIGluc3RhbmNlLAoraW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCAxLjAwICUgMC4xIGdpdmVzIDAuMDk5OTk5OTk5OTk5OTk5OTUgaW5zdGVhZAorb2YgMC4wOyBEZWNpbWFsKCcxLjAwJykgJSBEZWNpbWFsKCcwLjEnKSByZXR1cm5zIHRoZSBleHBlY3RlZAorRGVjaW1hbCgnMC4wMCcpKS4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB1c2luZyB0aGUgZGVjaW1hbCBtb2R1bGU6CisKKz4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKKz4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKKz4+PiBEZWNpbWFsKDApCitEZWNpbWFsKCcwJykKKz4+PiBEZWNpbWFsKCcxJykKK0RlY2ltYWwoJzEnKQorPj4+IERlY2ltYWwoJy0uMDEyMycpCitEZWNpbWFsKCctMC4wMTIzJykKKz4+PiBEZWNpbWFsKDEyMzQ1NikKK0RlY2ltYWwoJzEyMzQ1NicpCis+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4JykKK0RlY2ltYWwoJzEuMjM0NUUrMTIzNDU2ODAnKQorPj4+IERlY2ltYWwoJzEuMzMnKSArIERlY2ltYWwoJzEuMjcnKQorRGVjaW1hbCgnMi42MCcpCis+Pj4gRGVjaW1hbCgnMTIuMzQnKSArIERlY2ltYWwoJzMuODcnKSAtIERlY2ltYWwoJzE4LjQxJykKK0RlY2ltYWwoJy0yLjIwJykKKz4+PiBkaWcgPSBEZWNpbWFsKDEpCis+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKKzAuMzMzMzMzMzMzCis+Pj4gZ2V0Y29udGV4dCgpLnByZWMgPSAxOAorPj4+IHByaW50KGRpZyAvIERlY2ltYWwoMykpCiswLjMzMzMzMzMzMzMzMzMzMzMzMworPj4+IHByaW50KGRpZy5zcXJ0KCkpCisxCis+Pj4gcHJpbnQoRGVjaW1hbCgzKS5zcXJ0KCkpCisxLjczMjA1MDgwNzU2ODg3NzI5Cis+Pj4gcHJpbnQoRGVjaW1hbCgzKSAqKiAxMjMpCis0Ljg1MTkyNzgwOTc2ODk2NDI3RSs1OAorPj4+IGluZiA9IERlY2ltYWwoMSkgLyBEZWNpbWFsKDApCis+Pj4gcHJpbnQoaW5mKQorSW5maW5pdHkKKz4+PiBuZWdpbmYgPSBEZWNpbWFsKC0xKSAvIERlY2ltYWwoMCkKKz4+PiBwcmludChuZWdpbmYpCistSW5maW5pdHkKKz4+PiBwcmludChuZWdpbmYgKyBpbmYpCitOYU4KKz4+PiBwcmludChuZWdpbmYgKiBpbmYpCistSW5maW5pdHkKKz4+PiBwcmludChkaWcgLyAwKQorSW5maW5pdHkKKz4+PiBnZXRjb250ZXh0KCkudHJhcHNbRGl2aXNpb25CeVplcm9dID0gMQorPj4+IHByaW50KGRpZyAvIDApCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIC4uLgorICAuLi4KKyAgLi4uCitkZWNpbWFsLkRpdmlzaW9uQnlaZXJvOiB4IC8gMAorPj4+IGMgPSBDb250ZXh0KCkKKz4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCiswCis+Pj4gYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkKK0RlY2ltYWwoJ05hTicpCis+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDEKKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMQorPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzAKKz4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgLi4uCisgIC4uLgorICAuLi4KK2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogMCAvIDAKKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMQorPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCis+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKz4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKK05hTgorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisxCis+Pj4KKyIiIgorCitfX2FsbF9fID0gWworICAgICMgVHdvIG1ham9yIGNsYXNzZXMKKyAgICAnRGVjaW1hbCcsICdDb250ZXh0JywKKworICAgICMgTmFtZWQgdHVwbGUgcmVwcmVzZW50YXRpb24KKyAgICAnRGVjaW1hbFR1cGxlJywKKworICAgICMgQ29udGV4dHMKKyAgICAnRGVmYXVsdENvbnRleHQnLCAnQmFzaWNDb250ZXh0JywgJ0V4dGVuZGVkQ29udGV4dCcsCisKKyAgICAjIEV4Y2VwdGlvbnMKKyAgICAnRGVjaW1hbEV4Y2VwdGlvbicsICdDbGFtcGVkJywgJ0ludmFsaWRPcGVyYXRpb24nLCAnRGl2aXNpb25CeVplcm8nLAorICAgICdJbmV4YWN0JywgJ1JvdW5kZWQnLCAnU3Vibm9ybWFsJywgJ092ZXJmbG93JywgJ1VuZGVyZmxvdycsCisgICAgJ0Zsb2F0T3BlcmF0aW9uJywKKworICAgICMgRXhjZXB0aW9uYWwgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgSW52YWxpZE9wZXJhdGlvbgorICAgICdEaXZpc2lvbkltcG9zc2libGUnLCAnSW52YWxpZENvbnRleHQnLCAnQ29udmVyc2lvblN5bnRheCcsICdEaXZpc2lvblVuZGVmaW5lZCcsCisKKyAgICAjIENvbnN0YW50cyBmb3IgdXNlIGluIHNldHRpbmcgdXAgY29udGV4dHMKKyAgICAnUk9VTkRfRE9XTicsICdST1VORF9IQUxGX1VQJywgJ1JPVU5EX0hBTEZfRVZFTicsICdST1VORF9DRUlMSU5HJywKKyAgICAnUk9VTkRfRkxPT1InLCAnUk9VTkRfVVAnLCAnUk9VTkRfSEFMRl9ET1dOJywgJ1JPVU5EXzA1VVAnLAorCisgICAgIyBGdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb250ZXh0cworICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JywKKworICAgICMgTGltaXRzIGZvciB0aGUgQyB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5CisgICAgJ01BWF9QUkVDJywgICdNQVhfRU1BWCcsICdNSU5fRU1JTicsICdNSU5fRVRJTlknLAorCisgICAgIyBDIHZlcnNpb246IGNvbXBpbGUgdGltZSBjaG9pY2UgdGhhdCBlbmFibGVzIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgICdIQVZFX1RIUkVBRFMnCitdCisKK19feG5hbWVfXyA9IF9fbmFtZV9fICAgICMgc3lzLm1vZHVsZXMgbG9va3VwICgtLXdpdGhvdXQtdGhyZWFkcykKK19fbmFtZV9fID0gJ2RlY2ltYWwnICAgICMgRm9yIHBpY2tsaW5nCitfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC8KK19fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4xIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgorCitpbXBvcnQgbWF0aCBhcyBfbWF0aAoraW1wb3J0IG51bWJlcnMgYXMgX251bWJlcnMKK2ltcG9ydCBzeXMKKwordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKKyAgICBEZWNpbWFsVHVwbGUgPSBfbmFtZWR0dXBsZSgnRGVjaW1hbFR1cGxlJywgJ3NpZ24gZGlnaXRzIGV4cG9uZW50JykKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBEZWNpbWFsVHVwbGUgPSBsYW1iZGEgKmFyZ3M6IGFyZ3MKKworIyBSb3VuZGluZworUk9VTkRfRE9XTiA9ICdST1VORF9ET1dOJworUk9VTkRfSEFMRl9VUCA9ICdST1VORF9IQUxGX1VQJworUk9VTkRfSEFMRl9FVkVOID0gJ1JPVU5EX0hBTEZfRVZFTicKK1JPVU5EX0NFSUxJTkcgPSAnUk9VTkRfQ0VJTElORycKK1JPVU5EX0ZMT09SID0gJ1JPVU5EX0ZMT09SJworUk9VTkRfVVAgPSAnUk9VTkRfVVAnCitST1VORF9IQUxGX0RPV04gPSAnUk9VTkRfSEFMRl9ET1dOJworUk9VTkRfMDVVUCA9ICdST1VORF8wNVVQJworCisjIENvbXBhdGliaWxpdHkgd2l0aCB0aGUgQyB2ZXJzaW9uCitIQVZFX1RIUkVBRFMgPSBUcnVlCitpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgIE1BWF9QUkVDID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUFYX0VNQVggPSA5OTk5OTk5OTk5OTk5OTk5OTkKKyAgICBNSU5fRU1JTiA9IC05OTk5OTk5OTk5OTk5OTk5OTkKK2Vsc2U6CisgICAgTUFYX1BSRUMgPSA0MjUwMDAwMDAKKyAgICBNQVhfRU1BWCA9IDQyNTAwMDAwMAorICAgIE1JTl9FTUlOID0gLTQyNTAwMDAwMAorCitNSU5fRVRJTlkgPSBNSU5fRU1JTiAtIChNQVhfUFJFQy0xKQorCisjIEVycm9ycworCitjbGFzcyBEZWNpbWFsRXhjZXB0aW9uKEFyaXRobWV0aWNFcnJvcik6CisgICAgIiIiQmFzZSBleGNlcHRpb24gY2xhc3MuCisKKyAgICBVc2VkIGV4Y2VwdGlvbnMgZGVyaXZlIGZyb20gdGhpcy4KKyAgICBJZiBhbiBleGNlcHRpb24gZGVyaXZlcyBmcm9tIGFub3RoZXIgZXhjZXB0aW9uIGJlc2lkZXMgdGhpcyAoc3VjaCBhcworICAgIFVuZGVyZmxvdyAoSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKSB0aGF0IGluZGljYXRlcyB0aGF0IGl0IGlzIG9ubHkKKyAgICBjYWxsZWQgaWYgdGhlIG90aGVycyBhcmUgcHJlc2VudC4gIFRoaXMgaXNuJ3QgYWN0dWFsbHkgdXNlZCBmb3IKKyAgICBhbnl0aGluZywgdGhvdWdoLgorCisgICAgaGFuZGxlICAtLSBDYWxsZWQgd2hlbiBjb250ZXh0Ll9yYWlzZV9lcnJvciBpcyBjYWxsZWQgYW5kIHRoZQorICAgICAgICAgICAgICAgdHJhcF9lbmFibGVyIGlzIG5vdCBzZXQuICBGaXJzdCBhcmd1bWVudCBpcyBzZWxmLCBzZWNvbmQgaXMgdGhlCisgICAgICAgICAgICAgICBjb250ZXh0LiAgTW9yZSBhcmd1bWVudHMgY2FuIGJlIGdpdmVuLCB0aG9zZSBiZWluZyBhZnRlcgorICAgICAgICAgICAgICAgdGhlIGV4cGxhbmF0aW9uIGluIF9yYWlzZV9lcnJvciAoRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihOZXdFcnJvciwgJygteCkhJywgc2VsZi5fc2lnbikgd291bGQKKyAgICAgICAgICAgICAgIGNhbGwgTmV3RXJyb3IoKS5oYW5kbGUoY29udGV4dCwgc2VsZi5fc2lnbikuKQorCisgICAgVG8gZGVmaW5lIGEgbmV3IGV4Y2VwdGlvbiwgaXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gaGF2ZSBpdCBkZXJpdmUKKyAgICBmcm9tIERlY2ltYWxFeGNlcHRpb24uCisgICAgIiIiCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBDbGFtcGVkKERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIkV4cG9uZW50IG9mIGEgMCBjaGFuZ2VkIHRvIGZpdCBib3VuZHMuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBjbGFtcGVkIGlmIHRoZSBleHBvbmVudCBvZiBhIHJlc3VsdCBoYXMgYmVlbgorICAgIGFsdGVyZWQgaW4gb3JkZXIgdG8gZml0IHRoZSBjb25zdHJhaW50cyBvZiBhIHNwZWNpZmljIGNvbmNyZXRlCisgICAgcmVwcmVzZW50YXRpb24uICBUaGlzIG1heSBvY2N1ciB3aGVuIHRoZSBleHBvbmVudCBvZiBhIHplcm8gcmVzdWx0IHdvdWxkCisgICAgYmUgb3V0c2lkZSB0aGUgYm91bmRzIG9mIGEgcmVwcmVzZW50YXRpb24sIG9yIHdoZW4gYSBsYXJnZSBub3JtYWwKKyAgICBudW1iZXIgd291bGQgaGF2ZSBhbiBlbmNvZGVkIGV4cG9uZW50IHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkLiAgSW4KKyAgICB0aGlzIGxhdHRlciBjYXNlLCB0aGUgZXhwb25lbnQgaXMgcmVkdWNlZCB0byBmaXQgYW5kIHRoZSBjb3JyZXNwb25kaW5nCisgICAgbnVtYmVyIG9mIHplcm8gZGlnaXRzIGFyZSBhcHBlbmRlZCB0byB0aGUgY29lZmZpY2llbnQgKCJmb2xkLWRvd24iKS4KKyAgICAiIiIKKworY2xhc3MgSW52YWxpZE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJBbiBpbnZhbGlkIG9wZXJhdGlvbiB3YXMgcGVyZm9ybWVkLgorCisgICAgVmFyaW91cyBiYWQgdGhpbmdzIGNhdXNlIHRoaXM6CisKKyAgICBTb21ldGhpbmcgY3JlYXRlcyBhIHNpZ25hbGluZyBOYU4KKyAgICAtSU5GICsgSU5GCisgICAgMCAqICgrLSlJTkYKKyAgICAoKy0pSU5GIC8gKCstKUlORgorICAgIHggJSAwCisgICAgKCstKUlORiAlIHgKKyAgICB4Ll9yZXNjYWxlKCBub24taW50ZWdlciApCisgICAgc3FydCgteCkgLCB4ID4gMAorICAgIDAgKiogMAorICAgIHggKiogKG5vbi1pbnRlZ2VyKQorICAgIHggKiogKCstKUlORgorICAgIEFuIG9wZXJhbmQgaXMgaW52YWxpZAorCisgICAgVGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGFmdGVyIHRoZXNlIGlzIGEgcXVpZXQgcG9zaXRpdmUgTmFOLAorICAgIGV4Y2VwdCB3aGVuIHRoZSBjYXVzZSBpcyBhIHNpZ25hbGluZyBOYU4sIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcworICAgIGFsc28gYSBxdWlldCBOYU4sIGJ1dCB3aXRoIHRoZSBvcmlnaW5hbCBzaWduLCBhbmQgYW4gb3B0aW9uYWwKKyAgICBkaWFnbm9zdGljIGluZm9ybWF0aW9uLgorICAgICIiIgorICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShhcmdzWzBdLl9zaWduLCBhcmdzWzBdLl9pbnQsICduJywgVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeF9uYW4oY29udGV4dCkKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgQ29udmVyc2lvblN5bnRheChJbnZhbGlkT3BlcmF0aW9uKToKKyAgICAiIiJUcnlpbmcgdG8gY29udmVydCBiYWRseSBmb3JtZWQgc3RyaW5nLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgYW4gc3RyaW5nIGlzIGJlaW5nCisgICAgY29udmVydGVkIHRvIGEgbnVtYmVyIGFuZCBpdCBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBudW1lcmljIHN0cmluZworICAgIHN5bnRheC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCisgICAgIiIiCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIERpdmlzaW9uQnlaZXJvKERlY2ltYWxFeGNlcHRpb24sIFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAiIiJEaXZpc2lvbiBieSAwLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgZGl2aXNpb24tYnktemVybyBpZiBkaXZpc2lvbiBvZiBhIGZpbml0ZSBudW1iZXIKKyAgICBieSB6ZXJvIHdhcyBhdHRlbXB0ZWQgKGR1cmluZyBhIGRpdmlkZS1pbnRlZ2VyIG9yIGRpdmlkZSBvcGVyYXRpb24sIG9yIGEKKyAgICBwb3dlciBvcGVyYXRpb24gd2l0aCBuZWdhdGl2ZSByaWdodC1oYW5kIG9wZXJhbmQpLCBhbmQgdGhlIGRpdmlkZW5kIHdhcworICAgIG5vdCB6ZXJvLgorCisgICAgVGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGlzIFtzaWduLGluZl0sIHdoZXJlIHNpZ24gaXMgdGhlIGV4Y2x1c2l2ZQorICAgIG9yIG9mIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgZm9yIGRpdmlkZSwgb3IgaXMgMSBmb3IgYW4gb2RkIHBvd2VyIG9mCisgICAgLTAsIGZvciBwb3dlci4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgc2lnbiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCisKK2NsYXNzIERpdmlzaW9uSW1wb3NzaWJsZShJbnZhbGlkT3BlcmF0aW9uKToKKyAgICAiIiJDYW5ub3QgcGVyZm9ybSB0aGUgZGl2aXNpb24gYWRlcXVhdGVseS4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIHRoZSBpbnRlZ2VyIHJlc3VsdCBvZiBhCisgICAgZGl2aWRlLWludGVnZXIgb3IgcmVtYWluZGVyIG9wZXJhdGlvbiBoYWQgdG9vIG1hbnkgZGlnaXRzICh3b3VsZCBiZQorICAgIGxvbmdlciB0aGFuIHByZWNpc2lvbikuICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgorICAgICIiIgorCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIERpdmlzaW9uVW5kZWZpbmVkKEludmFsaWRPcGVyYXRpb24sIFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAiIiJVbmRlZmluZWQgcmVzdWx0IG9mIGRpdmlzaW9uLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgZGl2aXNpb24gYnkgemVybyB3YXMKKyAgICBhdHRlbXB0ZWQgKGR1cmluZyBhIGRpdmlkZS1pbnRlZ2VyLCBkaXZpZGUsIG9yIHJlbWFpbmRlciBvcGVyYXRpb24pLCBhbmQKKyAgICB0aGUgZGl2aWRlbmQgaXMgYWxzbyB6ZXJvLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBJbmV4YWN0KERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIkhhZCB0byByb3VuZCwgbG9zaW5nIGluZm9ybWF0aW9uLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW5leGFjdCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiBpcworICAgIG5vdCBleGFjdCAodGhhdCBpcywgaXQgbmVlZGVkIHRvIGJlIHJvdW5kZWQgYW5kIGFueSBkaXNjYXJkZWQgZGlnaXRzCisgICAgd2VyZSBub24temVybyksIG9yIGlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBjb25kaXRpb24gb2NjdXJzLiAgVGhlCisgICAgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCisKKyAgICBUaGUgaW5leGFjdCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KKyAgICBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHdhcyBpbmV4YWN0LgorICAgICIiIgorCitjbGFzcyBJbnZhbGlkQ29udGV4dChJbnZhbGlkT3BlcmF0aW9uKToKKyAgICAiIiJJbnZhbGlkIGNvbnRleHQuICBVbmtub3duIHJvdW5kaW5nLCBmb3IgZXhhbXBsZS4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGFuIGludmFsaWQgY29udGV4dCB3YXMKKyAgICBkZXRlY3RlZCBkdXJpbmcgYW4gb3BlcmF0aW9uLiAgVGhpcyBjYW4gb2NjdXIgaWYgY29udGV4dHMgYXJlIG5vdCBjaGVja2VkCisgICAgb24gY3JlYXRpb24gYW5kIGVpdGhlciB0aGUgcHJlY2lzaW9uIGV4Y2VlZHMgdGhlIGNhcGFiaWxpdHkgb2YgdGhlCisgICAgdW5kZXJseWluZyBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiBvciBhbiB1bmtub3duIG9yIHVuc3VwcG9ydGVkIHJvdW5kaW5nCisgICAgd2FzIHNwZWNpZmllZC4gIFRoZXNlIGFzcGVjdHMgb2YgdGhlIGNvbnRleHQgbmVlZCBvbmx5IGJlIGNoZWNrZWQgd2hlbgorICAgIHRoZSB2YWx1ZXMgYXJlIHJlcXVpcmVkIHRvIGJlIHVzZWQuICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgorICAgICIiIgorCisgICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6CisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIFJvdW5kZWQoRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiTnVtYmVyIGdvdCByb3VuZGVkIChub3QgIG5lY2Vzc2FyaWx5IGNoYW5nZWQgZHVyaW5nIHJvdW5kaW5nKS4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHJvdW5kZWQgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKKyAgICByb3VuZGVkICh0aGF0IGlzLCBzb21lIHplcm8gb3Igbm9uLXplcm8gZGlnaXRzIHdlcmUgZGlzY2FyZGVkIGZyb20gdGhlCisgICAgY29lZmZpY2llbnQpLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQorICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgorCisgICAgVGhlIHJvdW5kZWQgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCisgICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSBjYXVzZWQgYSBsb3NzIG9mIHByZWNpc2lvbi4KKyAgICAiIiIKKworY2xhc3MgU3Vibm9ybWFsKERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIkV4cG9uZW50IDwgRW1pbiBiZWZvcmUgcm91bmRpbmcuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBzdWJub3JtYWwgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhIGNvbnZlcnNpb24gb3IKKyAgICBvcGVyYXRpb24gaXMgc3Vibm9ybWFsICh0aGF0IGlzLCBpdHMgYWRqdXN0ZWQgZXhwb25lbnQgaXMgbGVzcyB0aGFuCisgICAgRW1pbiwgYmVmb3JlIGFueSByb3VuZGluZykuICBUaGUgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCisKKyAgICBUaGUgc3Vibm9ybWFsIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgorICAgIG9yIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgeWllbGRlZCBhIHN1Ym5vcm1hbCByZXN1bHQuCisgICAgIiIiCisKK2NsYXNzIE92ZXJmbG93KEluZXhhY3QsIFJvdW5kZWQpOgorICAgICIiIk51bWVyaWNhbCBvdmVyZmxvdy4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIG92ZXJmbG93IGlmIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBhIHJlc3VsdAorICAgIChmcm9tIGEgY29udmVyc2lvbiBvciBmcm9tIGFuIG9wZXJhdGlvbiB0aGF0IGlzIG5vdCBhbiBhdHRlbXB0IHRvIGRpdmlkZQorICAgIGJ5IHplcm8pLCBhZnRlciByb3VuZGluZywgd291bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQKKyAgICBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZSBFbWF4KS4KKworICAgIFRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgcm91bmRpbmcgbW9kZToKKworICAgIEZvciByb3VuZC1oYWxmLXVwIGFuZCByb3VuZC1oYWxmLWV2ZW4gKGFuZCBmb3Igcm91bmQtaGFsZi1kb3duIGFuZAorICAgIHJvdW5kLXVwLCBpZiBpbXBsZW1lbnRlZCksIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLAorICAgIHdoZXJlIHNpZ24gaXMgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQuICBGb3Igcm91bmQtZG93biwgdGhlCisgICAgcmVzdWx0IGlzIHRoZSBsYXJnZXN0IGZpbml0ZSBudW1iZXIgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gdGhlCisgICAgY3VycmVudCBwcmVjaXNpb24sIHdpdGggdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQuICBGb3IKKyAgICByb3VuZC1jZWlsaW5nLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGZvciByb3VuZC1kb3duIGlmIHRoZSBzaWduIG9mCisgICAgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgaXMgMSwgb3IgaXMgWzAsaW5mXSBvdGhlcndpc2UuICBGb3Igcm91bmQtZmxvb3IsCisgICAgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlCisgICAgcmVzdWx0IGlzIDAsIG9yIGlzIFsxLGluZl0gb3RoZXJ3aXNlLiAgSW4gYWxsIGNhc2VzLCBJbmV4YWN0IGFuZCBSb3VuZGVkCisgICAgd2lsbCBhbHNvIGJlIHJhaXNlZC4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgc2lnbiwgKmFyZ3MpOgorICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nIGluIChST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfVVApOgorICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorICAgICAgICBpZiBzaWduID09IDA6CisgICAgICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0NFSUxJTkc6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzknKmNvbnRleHQucHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXgtY29udGV4dC5wcmVjKzEpCisgICAgICAgIGlmIHNpZ24gPT0gMToKKyAgICAgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfRkxPT1I6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzknKmNvbnRleHQucHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4LWNvbnRleHQucHJlYysxKQorCisKK2NsYXNzIFVuZGVyZmxvdyhJbmV4YWN0LCBSb3VuZGVkLCBTdWJub3JtYWwpOgorICAgICIiIk51bWVyaWNhbCB1bmRlcmZsb3cgd2l0aCByZXN1bHQgcm91bmRlZCB0byAwLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgdW5kZXJmbG93IGlmIGEgcmVzdWx0IGlzIGluZXhhY3QgYW5kIHRoZQorICAgIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgd291bGQgYmUgc21hbGxlciAobW9yZSBuZWdhdGl2ZSkgdGhhbgorICAgIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlCisgICAgRW1pbikuICBUaGF0IGlzLCB0aGUgcmVzdWx0IGlzIGJvdGggaW5leGFjdCBhbmQgc3Vibm9ybWFsLgorCisgICAgVGhlIHJlc3VsdCBhZnRlciBhbiB1bmRlcmZsb3cgd2lsbCBiZSBhIHN1Ym5vcm1hbCBudW1iZXIgcm91bmRlZCwgaWYKKyAgICBuZWNlc3NhcnksIHNvIHRoYXQgaXRzIGV4cG9uZW50IGlzIG5vdCBsZXNzIHRoYW4gRXRpbnkuICBUaGlzIG1heSByZXN1bHQKKyAgICBpbiAwIHdpdGggdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgYW5kIGFuIGV4cG9uZW50IG9mIEV0aW55LgorCisgICAgSW4gYWxsIGNhc2VzLCBJbmV4YWN0LCBSb3VuZGVkLCBhbmQgU3Vibm9ybWFsIHdpbGwgYWxzbyBiZSByYWlzZWQuCisgICAgIiIiCisKK2NsYXNzIEZsb2F0T3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24sIFR5cGVFcnJvcik6CisgICAgIiIiRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIERlY2ltYWwoKSBjb25zdHJ1Y3RvciwgY29udGV4dC5jcmVhdGVfZGVjaW1hbCgpIGFuZAorICAgIGFsbCBjb21wYXJpc29uIG9wZXJhdG9ycy4gQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuCisgICAgQW55IG9jY3VycmVuY2Ugb2YgYSBtaXhlZCBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZworICAgIEZsb2F0T3BlcmF0aW9uIGluIHRoZSBjb250ZXh0IGZsYWdzLiAgRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aAorICAgIERlY2ltYWwuZnJvbV9mbG9hdCgpIG9yIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgpIGRvIG5vdAorICAgIHNldCB0aGUgZmxhZy4KKworICAgIE90aGVyd2lzZSAodGhlIHNpZ25hbCBpcyB0cmFwcGVkKSwgb25seSBlcXVhbGl0eSBjb21wYXJpc29ucyBhbmQgZXhwbGljaXQKKyAgICBjb252ZXJzaW9ucyBhcmUgc2lsZW50LiBBbGwgb3RoZXIgbWl4ZWQgb3BlcmF0aW9ucyByYWlzZSBGbG9hdE9wZXJhdGlvbi4KKyAgICAiIiIKKworIyBMaXN0IG9mIHB1YmxpYyB0cmFwcyBhbmQgZmxhZ3MKK19zaWduYWxzID0gW0NsYW1wZWQsIERpdmlzaW9uQnlaZXJvLCBJbmV4YWN0LCBPdmVyZmxvdywgUm91bmRlZCwKKyAgICAgICAgICAgIFVuZGVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgU3Vibm9ybWFsLCBGbG9hdE9wZXJhdGlvbl0KKworIyBNYXAgY29uZGl0aW9ucyAocGVyIHRoZSBzcGVjKSB0byBzaWduYWxzCitfY29uZGl0aW9uX21hcCA9IHtDb252ZXJzaW9uU3ludGF4OkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICBEaXZpc2lvbkltcG9zc2libGU6SW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgIERpdmlzaW9uVW5kZWZpbmVkOkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ29udGV4dDpJbnZhbGlkT3BlcmF0aW9ufQorCisjIFZhbGlkIHJvdW5kaW5nIG1vZGVzCitfcm91bmRpbmdfbW9kZXMgPSAoUk9VTkRfRE9XTiwgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLCBST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgIFJPVU5EX0ZMT09SLCBST1VORF9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF8wNVVQKQorCisjIyMjIyBDb250ZXh0IEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFRoZSBnZXRjb250ZXh0KCkgYW5kIHNldGNvbnRleHQoKSBmdW5jdGlvbiBtYW5hZ2UgYWNjZXNzIHRvIGEgdGhyZWFkLWxvY2FsCisjIGN1cnJlbnQgY29udGV4dC4gIFB5Mi40IG9mZmVycyBkaXJlY3Qgc3VwcG9ydCBmb3IgdGhyZWFkIGxvY2Fscy4gIElmIHRoYXQKKyMgaXMgbm90IGF2YWlsYWJsZSwgdXNlIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpIHdoaWNoIGlzIHNsb3dlciBidXQgd2lsbAorIyB3b3JrIGZvciBvbGRlciBQeXRob25zLiAgSWYgdGhyZWFkcyBhcmUgbm90IHBhcnQgb2YgdGhlIGJ1aWxkLCBjcmVhdGUgYQorIyBtb2NrIHRocmVhZGluZyBvYmplY3Qgd2l0aCB0aHJlYWRpbmcubG9jYWwoKSByZXR1cm5pbmcgdGhlIG1vZHVsZSBuYW1lc3BhY2UuCisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkczsgY3JlYXRlIGEgbW9jayBvYmplY3QgaW5zdGVhZAorICAgIGNsYXNzIE1vY2tUaHJlYWRpbmcob2JqZWN0KToKKyAgICAgICAgZGVmIGxvY2FsKHNlbGYsIHN5cz1zeXMpOgorICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW19feG5hbWVfX10KKyAgICB0aHJlYWRpbmcgPSBNb2NrVGhyZWFkaW5nKCkKKyAgICBkZWwgTW9ja1RocmVhZGluZworCit0cnk6CisgICAgdGhyZWFkaW5nLmxvY2FsCisKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKworICAgICMgVG8gZml4IHJlbG9hZGluZywgZm9yY2UgaXQgdG8gY3JlYXRlIGEgbmV3IGNvbnRleHQKKyAgICAjIE9sZCBjb250ZXh0cyBoYXZlIGRpZmZlcmVudCBleGNlcHRpb25zIGluIHRoZWlyIGRpY3RzLCBtYWtpbmcgcHJvYmxlbXMuCisgICAgaWYgaGFzYXR0cih0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSwgJ19fZGVjaW1hbF9jb250ZXh0X18nKToKKyAgICAgICAgZGVsIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18KKworICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQpOgorICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6CisgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAorCisgICAgZGVmIGdldGNvbnRleHQoKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCisKKyAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCisgICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0CisgICAgICAgICAgICByZXR1cm4gY29udGV4dAorCitlbHNlOgorCisgICAgbG9jYWwgPSB0aHJlYWRpbmcubG9jYWwoKQorICAgIGlmIGhhc2F0dHIobG9jYWwsICdfX2RlY2ltYWxfY29udGV4dF9fJyk6CisgICAgICAgIGRlbCBsb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCisKKyAgICBkZWYgZ2V0Y29udGV4dChfbG9jYWw9bG9jYWwpOgorICAgICAgICAiIiJSZXR1cm5zIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KKworICAgICAgICBJZiB0aGlzIHRocmVhZCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGNvbnRleHQsIHJldHVybnMKKyAgICAgICAgYSBuZXcgY29udGV4dCBhbmQgc2V0cyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCisgICAgICAgIE5ldyBjb250ZXh0cyBhcmUgY29waWVzIG9mIERlZmF1bHRDb250ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKKworICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQsIF9sb2NhbD1sb2NhbCk6CisgICAgICAgICIiIlNldCB0aGlzIHRocmVhZCdzIGNvbnRleHQgdG8gY29udGV4dC4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpbiAoRGVmYXVsdENvbnRleHQsIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0KToKKyAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAorCisgICAgZGVsIHRocmVhZGluZywgbG9jYWwgICAgICAgICMgRG9uJ3QgY29udGFtaW5hdGUgdGhlIG5hbWVzcGFjZQorCitkZWYgbG9jYWxjb250ZXh0KGN0eD1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgZm9yIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dAorCisgICAgVXNlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZAorICAgIFRoZSByZXR1cm5lZCBjb250ZXh0IG1hbmFnZXIgY3JlYXRlcyBhIGxvY2FsIGRlY2ltYWwgY29udGV4dAorICAgIGluIGEgd2l0aCBzdGF0ZW1lbnQ6CisgICAgICAgIGRlZiBzaW4oeCk6CisgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjdHg6CisgICAgICAgICAgICAgICAgIGN0eC5wcmVjICs9IDIKKyAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KKyAgICAgICAgICAgICAgICAgIyB1c2VzIGEgcHJlY2lzaW9uIDIgZ3JlYXRlciB0aGFuIG5vcm1hbAorICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgcHJlY2lzaW9uCisKKyAgICAgICAgIGRlZiBzaW4oeCk6CisgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKKyAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KKyAgICAgICAgICAgICAgICAgIyB1c2VzIHRoZSBFeHRlbmRlZCBDb250ZXh0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICMgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbgorICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgY29udGV4dAorCisgICAgPj4+IHNldGNvbnRleHQoRGVmYXVsdENvbnRleHQpCisgICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQorICAgIDI4CisgICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KCk6CisgICAgLi4uICAgICBjdHggPSBnZXRjb250ZXh0KCkKKyAgICAuLi4gICAgIGN0eC5wcmVjICs9IDIKKyAgICAuLi4gICAgIHByaW50KGN0eC5wcmVjKQorICAgIC4uLgorICAgIDMwCisgICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6CisgICAgLi4uICAgICBwcmludChnZXRjb250ZXh0KCkucHJlYykKKyAgICAuLi4KKyAgICA5CisgICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQorICAgIDI4CisgICAgIiIiCisgICAgaWYgY3R4IGlzIE5vbmU6IGN0eCA9IGdldGNvbnRleHQoKQorICAgIHJldHVybiBfQ29udGV4dE1hbmFnZXIoY3R4KQorCisKKyMjIyMjIERlY2ltYWwgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIERvIG5vdCBzdWJjbGFzcyBEZWNpbWFsIGZyb20gbnVtYmVycy5SZWFsIGFuZCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgc3VjaAorIyAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90IGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLiAgU2VlIHRoZSBub3RlcyBpbgorIyBudW1iZXJzLnB5IGZvciBtb3JlIGRldGFpbC4KKworY2xhc3MgRGVjaW1hbChvYmplY3QpOgorICAgICIiIkZsb2F0aW5nIHBvaW50IGNsYXNzIGZvciBkZWNpbWFsIGFyaXRobWV0aWMuIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoJ19leHAnLCdfaW50JywnX3NpZ24nLCAnX2lzX3NwZWNpYWwnKQorICAgICMgR2VuZXJhbGx5LCB0aGUgdmFsdWUgb2YgdGhlIERlY2ltYWwgaW5zdGFuY2UgaXMgZ2l2ZW4gYnkKKyAgICAjICAoLTEpKipfc2lnbiAqIF9pbnQgKiAxMCoqX2V4cAorICAgICMgU3BlY2lhbCB2YWx1ZXMgYXJlIHNpZ25pZmllZCBieSBfaXNfc3BlY2lhbCA9PSBUcnVlCisKKyAgICAjIFdlJ3JlIGltbXV0YWJsZSwgc28gdXNlIF9fbmV3X18gbm90IF9faW5pdF9fCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0iMCIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgcG9pbnQgaW5zdGFuY2UuCisKKyAgICAgICAgPj4+IERlY2ltYWwoJzMuMTQnKSAgICAgICAgICAgICAgIyBzdHJpbmcgaW5wdXQKKyAgICAgICAgRGVjaW1hbCgnMy4xNCcpCisgICAgICAgID4+PiBEZWNpbWFsKCgwLCAoMywgMSwgNCksIC0yKSkgICMgdHVwbGUgKHNpZ24sIGRpZ2l0X3R1cGxlLCBleHBvbmVudCkKKyAgICAgICAgRGVjaW1hbCgnMy4xNCcpCisgICAgICAgID4+PiBEZWNpbWFsKDMxNCkgICAgICAgICAgICAgICAgICMgaW50CisgICAgICAgIERlY2ltYWwoJzMxNCcpCisgICAgICAgID4+PiBEZWNpbWFsKERlY2ltYWwoMzE0KSkgICAgICAgICMgYW5vdGhlciBkZWNpbWFsIGluc3RhbmNlCisgICAgICAgIERlY2ltYWwoJzMxNCcpCisgICAgICAgID4+PiBEZWNpbWFsKCcgIDMuMTQgIFxcbicpICAgICAgICAjIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb2theQorICAgICAgICBEZWNpbWFsKCczLjE0JykKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGNvZWZmaWNpZW50LCBzZWxmLl9pbnQsIGlzIGFjdHVhbGx5IHN0b3JlZCBhcworICAgICAgICAjIGEgc3RyaW5nIHJhdGhlciB0aGFuIGFzIGEgdHVwbGUgb2YgZGlnaXRzLiAgVGhpcyBzcGVlZHMgdXAKKyAgICAgICAgIyB0aGUgImRpZ2l0cyB0byBpbnRlZ2VyIiBhbmQgImludGVnZXIgdG8gZGlnaXRzIiBjb252ZXJzaW9ucworICAgICAgICAjIHRoYXQgYXJlIHVzZWQgaW4gYWxtb3N0IGV2ZXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uIG9uCisgICAgICAgICMgRGVjaW1hbHMuICBUaGlzIGlzIGFuIGludGVybmFsIGRldGFpbDogdGhlIGFzX3R1cGxlIGZ1bmN0aW9uCisgICAgICAgICMgYW5kIHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIHN0aWxsIGRlYWwgd2l0aCB0dXBsZXMgb2YKKyAgICAgICAgIyBkaWdpdHMuCisKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKworICAgICAgICAjIEZyb20gYSBzdHJpbmcKKyAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCisgICAgICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGxpdGVyYWwgZm9yIERlY2ltYWw6ICVyIiAlIHZhbHVlKQorCisgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduJykgPT0gIi0iOgorICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAwCisgICAgICAgICAgICBpbnRwYXJ0ID0gbS5ncm91cCgnaW50JykKKyAgICAgICAgICAgIGlmIGludHBhcnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyCisgICAgICAgICAgICAgICAgZnJhY3BhcnQgPSBtLmdyb3VwKCdmcmFjJykgb3IgJycKKyAgICAgICAgICAgICAgICBleHAgPSBpbnQobS5ncm91cCgnZXhwJykgb3IgJzAnKQorICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoaW50cGFydCtmcmFjcGFydCkpCisgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gZXhwIC0gbGVuKGZyYWNwYXJ0KQorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaWFnID0gbS5ncm91cCgnZGlhZycpCisgICAgICAgICAgICAgICAgaWYgZGlhZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBOYU4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGludChkaWFnIG9yICcwJykpLmxzdHJpcCgnMCcpCisgICAgICAgICAgICAgICAgICAgIGlmIG0uZ3JvdXAoJ3NpZ25hbCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ04nCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnbicKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGluZmluaXR5CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJworICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnRicKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAjIEZyb20gYW4gaW50ZWdlcgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgICAgICAgaWYgdmFsdWUgPj0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQorICAgICAgICAgICAgc2VsZi5fZXhwID0gMAorICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGFicyh2YWx1ZSkpCisgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyBGcm9tIGFub3RoZXIgZGVjaW1hbAorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCisgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KKyAgICAgICAgICAgIHNlbGYuX2ludCAgPSB2YWx1ZS5faW50CisgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsICA9IHZhbHVlLl9pc19zcGVjaWFsCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICMgRnJvbSBhbiBpbnRlcm5hbCB3b3JraW5nIHZhbHVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIF9Xb3JrUmVwKToKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5zaWduCisgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIodmFsdWUuaW50KQorICAgICAgICAgICAgc2VsZi5fZXhwID0gaW50KHZhbHVlLmV4cCkKKyAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAjIHR1cGxlL2xpc3QgY29udmVyc2lvbiAocG9zc2libHkgZnJvbSBhc190dXBsZSgpKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCx0dXBsZSkpOgorICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSAhPSAzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdHVwbGUgc2l6ZSBpbiBjcmVhdGlvbiBvZiBEZWNpbWFsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIGxpc3Qgb3IgdHVwbGUuICBUaGUgbGlzdCBvciB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGhhdmUgZXhhY3RseSB0aHJlZSBlbGVtZW50cy4nKQorICAgICAgICAgICAgIyBwcm9jZXNzIHNpZ24uICBUaGUgaXNpbnN0YW5jZSB0ZXN0IHJlamVjdHMgZmxvYXRzCisgICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UodmFsdWVbMF0sIGludCkgYW5kIHZhbHVlWzBdIGluICgwLDEpKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHNpZ24uICBUaGUgZmlyc3QgdmFsdWUgaW4gdGhlIHR1cGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgYW4gaW50ZWdlcjsgZWl0aGVyIDAgZm9yIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aXZlIG51bWJlciBvciAxIGZvciBhIG5lZ2F0aXZlIG51bWJlci4iKQorICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlWzBdCisgICAgICAgICAgICBpZiB2YWx1ZVsyXSA9PSAnRic6CisgICAgICAgICAgICAgICAgIyBpbmZpbml0eTogdmFsdWVbMV0gaXMgaWdub3JlZAorICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJworICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCisgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBwcm9jZXNzIGFuZCB2YWxpZGF0ZSB0aGUgZGlnaXRzIGluIHZhbHVlWzFdCisgICAgICAgICAgICAgICAgZGlnaXRzID0gW10KKyAgICAgICAgICAgICAgICBmb3IgZGlnaXQgaW4gdmFsdWVbMV06CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlnaXQsIGludCkgYW5kIDAgPD0gZGlnaXQgPD0gOToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBsZWFkaW5nIHplcm9zCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWdpdHMgb3IgZGlnaXQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMuYXBwZW5kKGRpZ2l0KQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHNlY29uZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBjb21wb3NlZCBvZiBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCB0aHJvdWdoIDkuIikKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZVsyXSBpbiAoJ24nLCAnTicpOgorICAgICAgICAgICAgICAgICAgICAjIE5hTjogZGlnaXRzIGZvcm0gdGhlIGRpYWdub3N0aWMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZVsyXSwgaW50KToKKyAgICAgICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyOiBkaWdpdHMgZ2l2ZSB0aGUgY29lZmZpY2llbnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMgb3IgWzBdKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHRoaXJkIHZhbHVlIGluIHRoZSB0dXBsZSBtdXN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYW4gaW50ZWdlciwgb3Igb25lIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgJ0YnLCAnbicsICdOJy4iKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSAiCisgICAgICAgICAgICAgICAgImVuYWJsZWQiKQorICAgICAgICAgICAgdmFsdWUgPSBEZWNpbWFsLmZyb21fZmxvYXQodmFsdWUpCisgICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAorICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCisgICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvIERlY2ltYWwiICUgdmFsdWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9mbG9hdChjbHMsIGYpOgorICAgICAgICAiIiJDb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuCisKKyAgICAgICAgTm90ZSB0aGF0IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpIGlzIG5vdCB0aGUgc2FtZSBhcyBEZWNpbWFsKCcwLjEnKS4KKyAgICAgICAgU2luY2UgMC4xIGlzIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCB0aGUKKyAgICAgICAgdmFsdWUgaXMgc3RvcmVkIGFzIHRoZSBuZWFyZXN0IHJlcHJlc2VudGFibGUgdmFsdWUgd2hpY2ggaXMKKyAgICAgICAgMHgxLjk5OTk5OTk5OTk5OWFwLTQuICBUaGUgZXhhY3QgZXF1aXZhbGVudCBvZiB0aGUgdmFsdWUgaW4gZGVjaW1hbAorICAgICAgICBpcyAwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUuCisKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCisgICAgICAgIERlY2ltYWwoJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC1mbG9hdCgnaW5mJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoLTAuMCkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGludCk6ICAgICAgICAgICAgICAgICMgaGFuZGxlIGludGVnZXIgaW5wdXRzCisgICAgICAgICAgICByZXR1cm4gY2xzKGYpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgbXVzdCBiZSBpbnQgb3IgZmxvYXQuIikKKyAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6CisgICAgICAgICAgICByZXR1cm4gY2xzKHJlcHIoZikpCisgICAgICAgIGlmIF9tYXRoLmNvcHlzaWduKDEuMCwgZikgPT0gMS4wOgorICAgICAgICAgICAgc2lnbiA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNpZ24gPSAxCisgICAgICAgIG4sIGQgPSBhYnMoZikuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgIGsgPSBkLmJpdF9sZW5ndGgoKSAtIDEKKyAgICAgICAgcmVzdWx0ID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIobio1KiprKSwgLWspCisgICAgICAgIGlmIGNscyBpcyBEZWNpbWFsOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNscyhyZXN1bHQpCisKKyAgICBkZWYgX2lzbmFuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgorCisgICAgICAgIDAgaWYgYSBudW1iZXIKKyAgICAgICAgMSBpZiBOYU4KKyAgICAgICAgMiBpZiBzTmFOCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwCisgICAgICAgICAgICBpZiBleHAgPT0gJ24nOgorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBlbGlmIGV4cCA9PSAnTic6CisgICAgICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfaXNpbmZpbml0eShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgaW5maW5pdGUKKworICAgICAgICAwIGlmIGZpbml0ZSBvciBub3QgYSBudW1iZXIKKyAgICAgICAgMSBpZiArSU5GCisgICAgICAgIC0xIGlmIC1JTkYKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6CisgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfY2hlY2tfbmFucyhzZWxmLCBvdGhlcj1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgorCisgICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBzTmFOLCBzaWduYWwKKyAgICAgICAgaWYgc2VsZiwgb3RoZXIgYXJlIE5hTiByZXR1cm4gbmFuCisgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgRG9uZSBiZWZvcmUgb3BlcmF0aW9ucy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCisgICAgICAgIGlmIG90aGVyIGlzIE5vbmU6CisgICAgICAgICAgICBvdGhlcl9pc19uYW4gPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKKworICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW46CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKKyAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCisgICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQorCisgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeF9uYW4oY29udGV4dCkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfY29tcGFyZV9jaGVja19uYW5zKHNlbGYsIG90aGVyLCBjb250ZXh0KToKKyAgICAgICAgIiIiVmVyc2lvbiBvZiBfY2hlY2tfbmFucyB1c2VkIGZvciB0aGUgc2lnbmFsaW5nIGNvbXBhcmlzb25zCisgICAgICAgIGNvbXBhcmVfc2lnbmFsLCBfX2xlX18sIF9fbHRfXywgX19nZV9fLCBfX2d0X18uCisKKyAgICAgICAgU2lnbmFsIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIHNlbGYgb3Igb3RoZXIgaXMgYSAocXVpZXQKKyAgICAgICAgb3Igc2lnbmFsaW5nKSBOYU4uICBTaWduYWxpbmcgTmFOcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBxdWlldAorICAgICAgICBOYU5zLgorCisgICAgICAgIFJldHVybiAwIGlmIG5laXRoZXIgb3BlcmFuZCBpcyBhIE5hTi4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIHNOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQorICAgICAgICAgICAgZWxpZiBvdGhlci5pc19zbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCisgICAgICAgICAgICBlbGlmIHNlbGYuaXNfcW5hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKKyAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfcW5hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbm9uemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBOYU5zIGFuZCBpbmZpbml0aWVzIGFyZSBjb25zaWRlcmVkIG5vbnplcm8uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5faXNfc3BlY2lhbCBvciBzZWxmLl9pbnQgIT0gJzAnCisKKyAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgICAgICIiIkNvbXBhcmUgdGhlIHR3byBub24tTmFOIGRlY2ltYWwgaW5zdGFuY2VzIHNlbGYgYW5kIG90aGVyLgorCisgICAgICAgIFJldHVybnMgLTEgaWYgc2VsZiA8IG90aGVyLCAwIGlmIHNlbGYgPT0gb3RoZXIgYW5kIDEKKyAgICAgICAgaWYgc2VsZiA+IG90aGVyLiAgVGhpcyByb3V0aW5lIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4iIiIKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgc2VsZl9pbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKKyAgICAgICAgICAgIG90aGVyX2luZiA9IG90aGVyLl9pc2luZmluaXR5KCkKKyAgICAgICAgICAgIGlmIHNlbGZfaW5mID09IG90aGVyX2luZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxpZiBzZWxmX2luZiA8IG90aGVyX2luZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICAjIGNoZWNrIGZvciB6ZXJvczsgIERlY2ltYWwoJzAnKSA9PSBEZWNpbWFsKCctMCcpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKm90aGVyLl9zaWduKQorICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgorCisgICAgICAgICMgSWYgZGlmZmVyZW50IHNpZ25zLCBuZWcgb25lIGlzIGxlc3MKKyAgICAgICAgaWYgb3RoZXIuX3NpZ24gPCBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPCBvdGhlci5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQorICAgICAgICBvdGhlcl9hZGp1c3RlZCA9IG90aGVyLmFkanVzdGVkKCkKKyAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCA9PSBvdGhlcl9hZGp1c3RlZDoKKyAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBvdGhlci5fZXhwKQorICAgICAgICAgICAgb3RoZXJfcGFkZGVkID0gb3RoZXIuX2ludCArICcwJyoob3RoZXIuX2V4cCAtIHNlbGYuX2V4cCkKKyAgICAgICAgICAgIGlmIHNlbGZfcGFkZGVkID09IG90aGVyX3BhZGRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxpZiBzZWxmX3BhZGRlZCA8IG90aGVyX3BhZGRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLSgtMSkqKnNlbGYuX3NpZ24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KKyAgICAgICAgZWxpZiBzZWxmX2FkanVzdGVkID4gb3RoZXJfYWRqdXN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgorICAgICAgICBlbHNlOiAjIHNlbGZfYWRqdXN0ZWQgPCBvdGhlcl9hZGp1c3RlZAorICAgICAgICAgICAgcmV0dXJuIC0oKC0xKSoqc2VsZi5fc2lnbikKKworICAgICMgTm90ZTogVGhlIERlY2ltYWwgc3RhbmRhcmQgZG9lc24ndCBjb3ZlciByaWNoIGNvbXBhcmlzb25zIGZvcgorICAgICMgRGVjaW1hbHMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgc3BlY2lmaWNhdGlvbiBpcyBzaWxlbnQgb24gdGhlCisgICAgIyBzdWJqZWN0IG9mIHdoYXQgc2hvdWxkIGhhcHBlbiBmb3IgYSBjb21wYXJpc29uIGludm9sdmluZyBhIE5hTi4KKyAgICAjIFdlIHRha2UgdGhlIGZvbGxvd2luZyBhcHByb2FjaDoKKyAgICAjCisgICAgIyAgID09IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIEZhbHNlCisgICAgIyAgICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIFRydWUKKyAgICAjICAgPT0gb3IgIT0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgc2lnbmFsaW5nIE5hTiBzaWduYWwKKyAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBvciBUcnVlIGFzIGFib3ZlIGlmIHRoZQorICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgorICAgICMgICA8LCA+LCA8PSBhbmQgPj0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgKHF1aWV0IG9yIHNpZ25hbGluZykKKyAgICAjICAgICAgTmFOIHNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgcmV0dXJuIEZhbHNlIGlmIHRoZQorICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgorICAgICMKKyAgICAjIFRoaXMgYmVoYXZpb3IgaXMgZGVzaWduZWQgdG8gY29uZm9ybSBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvCisgICAgIyB0aGF0IHNwZWNpZmllZCBieSBJRUVFIDc1NC4KKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPVRydWUpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGlmIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDwgMAorCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMAorCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPiAwCisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+PSAwCisKKyAgICBkZWYgY29tcGFyZShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZSBzZWxmIHRvIG90aGVyLiAgUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZToKKworICAgICAgICBhIG9yIGIgaXMgYSBOYU4gPT0+IERlY2ltYWwoJ05hTicpCisgICAgICAgIGEgPCBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnLTEnKQorICAgICAgICBhID09IGIgICAgICAgICAgPT0+IERlY2ltYWwoJzAnKQorICAgICAgICBhID4gYiAgICAgICAgICAgPT0+IERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgICMgQ29tcGFyZShOYU4sIE5hTikgPSBOYU4KKyAgICAgICAgaWYgKHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIgYW5kIG90aGVyLl9pc19zcGVjaWFsKToKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYuX2NtcChvdGhlcikpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICIiInguX19oYXNoX18oKSA8PT0+IGhhc2goeCkiIiIKKworICAgICAgICAjIEluIG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoYXNoIG9mIGEgRGVjaW1hbCBpbnN0YW5jZQorICAgICAgICAjIGFncmVlcyB3aXRoIHRoZSBoYXNoIG9mIGEgbnVtZXJpY2FsbHkgZXF1YWwgaW50ZWdlciwgZmxvYXQKKyAgICAgICAgIyBvciBGcmFjdGlvbiwgd2UgZm9sbG93IHRoZSBydWxlcyBmb3IgbnVtZXJpYyBoYXNoZXMgb3V0bGluZWQKKyAgICAgICAgIyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gIChTZWUgbGlicmFyeSBkb2NzLCAnQnVpbHQtaW4gVHlwZXMnKS4KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IGhhc2ggYSBzaWduYWxpbmcgTmFOIHZhbHVlLicpCisgICAgICAgICAgICBlbGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeUhBU0hfTkFOCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtX1B5SEFTSF9JTkYKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX1B5SEFTSF9JTkYKKworICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIGV4cF9oYXNoID0gcG93KDEwLCBzZWxmLl9leHAsIF9QeUhBU0hfTU9EVUxVUykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4cF9oYXNoID0gcG93KF9QeUhBU0hfMTBJTlYsIC1zZWxmLl9leHAsIF9QeUhBU0hfTU9EVUxVUykKKyAgICAgICAgaGFzaF8gPSBpbnQoc2VsZi5faW50KSAqIGV4cF9oYXNoICUgX1B5SEFTSF9NT0RVTFVTCisgICAgICAgIGFucyA9IGhhc2hfIGlmIHNlbGYgPj0gMCBlbHNlIC1oYXNoXworICAgICAgICByZXR1cm4gLTIgaWYgYW5zID09IC0xIGVsc2UgYW5zCisKKyAgICBkZWYgYXNfdHVwbGUoc2VsZik6CisgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhIHRyaXBsZSB0dXBsZS4KKworICAgICAgICBUbyBzaG93IHRoZSBpbnRlcm5hbHMgZXhhY3RseSBhcyB0aGV5IGFyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBEZWNpbWFsVHVwbGUoc2VsZi5fc2lnbiwgdHVwbGUobWFwKGludCwgc2VsZi5faW50KSksIHNlbGYuX2V4cCkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGFuIGluc3RhbmNlIG9mIERlY2ltYWwuIiIiCisgICAgICAgICMgSW52YXJpYW50OiAgZXZhbChyZXByKGQpKSA9PSBkCisgICAgICAgIHJldHVybiAiRGVjaW1hbCgnJXMnKSIgJSBzdHIoc2VsZikKKworICAgIGRlZiBfX3N0cl9fKHNlbGYsIGVuZz1GYWxzZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgbm90YXRpb24uCisKKyAgICAgICAgQ2FwdHVyZXMgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2lnbiA9IFsnJywgJy0nXVtzZWxmLl9zaWduXQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5fZXhwID09ICdGJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lnbiArICdJbmZpbml0eScKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fZXhwID09ICduJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lnbiArICdOYU4nICsgc2VsZi5faW50CisgICAgICAgICAgICBlbHNlOiAjIHNlbGYuX2V4cCA9PSAnTicKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lnbiArICdzTmFOJyArIHNlbGYuX2ludAorCisgICAgICAgICMgbnVtYmVyIG9mIGRpZ2l0cyBvZiBzZWxmLl9pbnQgdG8gbGVmdCBvZiBkZWNpbWFsIHBvaW50CisgICAgICAgIGxlZnRkaWdpdHMgPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KQorCisgICAgICAgICMgZG90cGxhY2UgaXMgbnVtYmVyIG9mIGRpZ2l0cyBvZiBzZWxmLl9pbnQgdG8gdGhlIGxlZnQgb2YgdGhlCisgICAgICAgICMgZGVjaW1hbCBwb2ludCBpbiB0aGUgbWFudGlzc2Egb2YgdGhlIG91dHB1dCBzdHJpbmcgKHRoYXQgaXMsCisgICAgICAgICMgYWZ0ZXIgYWRqdXN0aW5nIHRoZSBleHBvbmVudCkKKyAgICAgICAgaWYgc2VsZi5fZXhwIDw9IDAgYW5kIGxlZnRkaWdpdHMgPiAtNjoKKyAgICAgICAgICAgICMgbm8gZXhwb25lbnQgcmVxdWlyZWQKKyAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cworICAgICAgICBlbGlmIG5vdCBlbmc6CisgICAgICAgICAgICAjIHVzdWFsIHNjaWVudGlmaWMgbm90YXRpb246IDEgZGlnaXQgb24gbGVmdCBvZiB0aGUgcG9pbnQKKyAgICAgICAgICAgIGRvdHBsYWNlID0gMQorICAgICAgICBlbGlmIHNlbGYuX2ludCA9PSAnMCc6CisgICAgICAgICAgICAjIGVuZ2luZWVyaW5nIG5vdGF0aW9uLCB6ZXJvCisgICAgICAgICAgICBkb3RwbGFjZSA9IChsZWZ0ZGlnaXRzICsgMSkgJSAzIC0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBlbmdpbmVlcmluZyBub3RhdGlvbiwgbm9uemVybworICAgICAgICAgICAgZG90cGxhY2UgPSAobGVmdGRpZ2l0cyAtIDEpICUgMyArIDEKKworICAgICAgICBpZiBkb3RwbGFjZSA8PSAwOgorICAgICAgICAgICAgaW50cGFydCA9ICcwJworICAgICAgICAgICAgZnJhY3BhcnQgPSAnLicgKyAnMCcqKC1kb3RwbGFjZSkgKyBzZWxmLl9pbnQKKyAgICAgICAgZWxpZiBkb3RwbGFjZSA+PSBsZW4oc2VsZi5faW50KToKKyAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnQrJzAnKihkb3RwbGFjZS1sZW4oc2VsZi5faW50KSkKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnRbOmRvdHBsYWNlXQorICAgICAgICAgICAgZnJhY3BhcnQgPSAnLicgKyBzZWxmLl9pbnRbZG90cGxhY2U6XQorICAgICAgICBpZiBsZWZ0ZGlnaXRzID09IGRvdHBsYWNlOgorICAgICAgICAgICAgZXhwID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBleHAgPSBbJ2UnLCAnRSddW2NvbnRleHQuY2FwaXRhbHNdICsgIiUrZCIgJSAobGVmdGRpZ2l0cy1kb3RwbGFjZSkKKworICAgICAgICByZXR1cm4gc2lnbiArIGludHBhcnQgKyBmcmFjcGFydCArIGV4cAorCisgICAgZGVmIHRvX2VuZ19zdHJpbmcoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29udmVydCB0byBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4KKworICAgICAgICBFbmdpbmVlcmluZyBub3RhdGlvbiBoYXMgYW4gZXhwb25lbnQgd2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZQorICAgICAgICBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbCBwbGFjZS4KKworICAgICAgICBTYW1lIHJ1bGVzIGZvciB3aGVuIGluIGV4cG9uZW50aWFsIGFuZCB3aGVuIGFzIGEgdmFsdWUgYXMgaW4gX19zdHJfXy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oZW5nPVRydWUsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX25lZ19fKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gc3dpdGNoZWQuCisKKyAgICAgICAgUm91bmRzLCBpZiBpdCBoYXMgcmVhc29uLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgbm90IHNlbGYgYW5kIGNvbnRleHQucm91bmRpbmcgIT0gUk9VTkRfRkxPT1I6CisgICAgICAgICAgICAjIC1EZWNpbWFsKCcwJykgaXMgRGVjaW1hbCgnMCcpLCBub3QgRGVjaW1hbCgnLTAnKSwgZXhjZXB0CisgICAgICAgICAgICAjIGluIFJPVU5EX0ZMT09SIHJvdW5kaW5nIG1vZGUuCisgICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfYWJzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9uZWdhdGUoKQorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9fcG9zX18oc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHksIHVubGVzcyBpdCBpcyBhIHNOYU4uCisKKyAgICAgICAgUm91bmRzIHRoZSBudW1iZXIgKGlmIG1vcmUgdGhlbiBwcmVjaXNpb24gZGlnaXRzKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgbm90IHNlbGYgYW5kIGNvbnRleHQucm91bmRpbmcgIT0gUk9VTkRfRkxPT1I6CisgICAgICAgICAgICAjICsgKC0wKSA9IDAsIGV4Y2VwdCBpbiBST1VORF9GTE9PUiByb3VuZGluZyBtb2RlLgorICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X2FicygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX19hYnNfXyhzZWxmLCByb3VuZD1UcnVlLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBzZWxmLgorCisgICAgICAgIElmIHRoZSBrZXl3b3JkIGFyZ3VtZW50ICdyb3VuZCcgaXMgZmFsc2UsIGRvIG5vdCByb3VuZC4gIFRoZQorICAgICAgICBleHByZXNzaW9uIHNlbGYuX19hYnNfXyhyb3VuZD1GYWxzZSkgaXMgZXF1aXZhbGVudCB0bworICAgICAgICBzZWxmLmNvcHlfYWJzKCkuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgcm91bmQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb3B5X2FicygpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fX25lZ19fKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX19wb3NfXyhjb250ZXh0PWNvbnRleHQpCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgc2VsZiArIG90aGVyLgorCisgICAgICAgIC1JTkYgKyBJTkYgKG9yIHRoZSByZXZlcnNlKSBjYXVzZSBJbnZhbGlkT3BlcmF0aW9uIGVycm9ycy4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgICMgSWYgYm90aCBJTkYsIHNhbWUgc2lnbiA9PiBzYW1lIGFzIGJvdGgsIG9wcG9zaXRlID0+IGVycm9yLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NpZ24gIT0gb3RoZXIuX3NpZ24gYW5kIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnLUlORiArIElORicpCisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwob3RoZXIpICAjIENhbid0IGJvdGggYmUgaW5maW5pdHkgaGVyZQorCisgICAgICAgIGV4cCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCisgICAgICAgIG5lZ2F0aXZlemVybyA9IDAKKyAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9GTE9PUiBhbmQgc2VsZi5fc2lnbiAhPSBvdGhlci5fc2lnbjoKKyAgICAgICAgICAgICMgSWYgdGhlIGFuc3dlciBpcyAwLCB0aGUgc2lnbiBzaG91bGQgYmUgbmVnYXRpdmUsIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgIG5lZ2F0aXZlemVybyA9IDEKKworICAgICAgICBpZiBub3Qgc2VsZiBhbmQgbm90IG90aGVyOgorICAgICAgICAgICAgc2lnbiA9IG1pbihzZWxmLl9zaWduLCBvdGhlci5fc2lnbikKKyAgICAgICAgICAgIGlmIG5lZ2F0aXZlemVybzoKKyAgICAgICAgICAgICAgICBzaWduID0gMQorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnMCcsIGV4cCkKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgZXhwID0gbWF4KGV4cCwgb3RoZXIuX2V4cCAtIGNvbnRleHQucHJlYy0xKQorICAgICAgICAgICAgYW5zID0gb3RoZXIuX3Jlc2NhbGUoZXhwLCBjb250ZXh0LnJvdW5kaW5nKQorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgZXhwID0gbWF4KGV4cCwgc2VsZi5fZXhwIC0gY29udGV4dC5wcmVjLTEpCisgICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cCwgY29udGV4dC5yb3VuZGluZykKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgIG9wMSwgb3AyID0gX25vcm1hbGl6ZShvcDEsIG9wMiwgY29udGV4dC5wcmVjKQorCisgICAgICAgIHJlc3VsdCA9IF9Xb3JrUmVwKCkKKyAgICAgICAgaWYgb3AxLnNpZ24gIT0gb3AyLnNpZ246CisgICAgICAgICAgICAjIEVxdWFsIGFuZCBvcHBvc2l0ZQorICAgICAgICAgICAgaWYgb3AxLmludCA9PSBvcDIuaW50OgorICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUobmVnYXRpdmV6ZXJvLCAnMCcsIGV4cCkKKyAgICAgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgICAgIGlmIG9wMS5pbnQgPCBvcDIuaW50OgorICAgICAgICAgICAgICAgIG9wMSwgb3AyID0gb3AyLCBvcDEKKyAgICAgICAgICAgICAgICAjIE9LLCBub3cgYWJzKG9wMSkgPiBhYnMob3AyKQorICAgICAgICAgICAgaWYgb3AxLnNpZ24gPT0gMToKKyAgICAgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDEKKyAgICAgICAgICAgICAgICBvcDEuc2lnbiwgb3AyLnNpZ24gPSBvcDIuc2lnbiwgb3AxLnNpZ24KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAwCisgICAgICAgICAgICAgICAgIyBTbyB3ZSBrbm93IHRoZSBzaWduLCBhbmQgb3AxID4gMC4KKyAgICAgICAgZWxpZiBvcDEuc2lnbiA9PSAxOgorICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAxCisgICAgICAgICAgICBvcDEuc2lnbiwgb3AyLnNpZ24gPSAoMCwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMAorICAgICAgICAjIE5vdywgb3AxID4gYWJzKG9wMikgPiAwCisKKyAgICAgICAgaWYgb3AyLnNpZ24gPT0gMDoKKyAgICAgICAgICAgIHJlc3VsdC5pbnQgPSBvcDEuaW50ICsgb3AyLmludAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmludCA9IG9wMS5pbnQgLSBvcDIuaW50CisKKyAgICAgICAgcmVzdWx0LmV4cCA9IG9wMS5leHAKKyAgICAgICAgYW5zID0gRGVjaW1hbChyZXN1bHQpCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIHJldHVybiBhbnMKKworICAgIF9fcmFkZF9fID0gX19hZGRfXworCisgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzZWxmIC0gb3RoZXIiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIHNlbGYgLSBvdGhlciBpcyBjb21wdXRlZCBhcyBzZWxmICsgb3RoZXIuY29weV9uZWdhdGUoKQorICAgICAgICByZXR1cm4gc2VsZi5fX2FkZF9fKG90aGVyLmNvcHlfbmVnYXRlKCksIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX3JzdWJfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIG90aGVyIC0gc2VsZiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIHJldHVybiBvdGhlci5fX3N1Yl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX211bF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc2VsZiAqIG90aGVyLgorCisgICAgICAgICgrLSkgSU5GICogMCAob3IgaXRzIHJldmVyc2UpIHJhaXNlIEludmFsaWRPcGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICByZXN1bHRzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJygrLSlJTkYgKiAwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdHNpZ25dCisKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnMCAqICgrLSlJTkYnKQorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0c2lnbl0KKworICAgICAgICByZXN1bHRleHAgPSBzZWxmLl9leHAgKyBvdGhlci5fZXhwCisKKyAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIG11bHRpcGx5aW5nIGJ5IHplcm8KKyAgICAgICAgaWYgbm90IHNlbGYgb3Igbm90IG90aGVyOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCAnMCcsIHJlc3VsdGV4cCkKKyAgICAgICAgICAgICMgRml4aW5nIGluIGNhc2UgdGhlIGV4cG9uZW50IGlzIG91dCBvZiBib3VuZHMKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIG11bHRpcGx5aW5nIGJ5IHBvd2VyIG9mIDEwCisgICAgICAgIGlmIHNlbGYuX2ludCA9PSAnMSc6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIG90aGVyLl9pbnQsIHJlc3VsdGV4cCkKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgIGlmIG90aGVyLl9pbnQgPT0gJzEnOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBzZWxmLl9pbnQsIHJlc3VsdGV4cCkKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBzdHIob3AxLmludCAqIG9wMi5pbnQpLCByZXN1bHRleHApCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgcmV0dXJuIGFucworICAgIF9fcm11bF9fID0gX19tdWxfXworCisgICAgZGVmIF9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc2VsZiAvIG90aGVyLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgYW5kIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcoKy0pSU5GLygrLSlJTkYnKQorCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorCisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQsICdEaXZpc2lvbiBieSBpbmZpbml0eScpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCBjb250ZXh0LkV0aW55KCkpCisKKyAgICAgICAgIyBTcGVjaWFsIGNhc2VzIGZvciB6ZXJvZXMKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAvIDAnKQorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvIDAnLCBzaWduKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwIC0gb3RoZXIuX2V4cAorICAgICAgICAgICAgY29lZmYgPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE9LLCBzbyBuZWl0aGVyID0gMCwgSU5GIG9yIE5hTgorICAgICAgICAgICAgc2hpZnQgPSBsZW4ob3RoZXIuX2ludCkgLSBsZW4oc2VsZi5faW50KSArIGNvbnRleHQucHJlYyArIDEKKyAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAgLSBzaGlmdAorICAgICAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICAgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgICAgICAgICBjb2VmZiwgcmVtYWluZGVyID0gZGl2bW9kKG9wMS5pbnQgKiAxMCoqc2hpZnQsIG9wMi5pbnQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvZWZmLCByZW1haW5kZXIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCAqIDEwKiotc2hpZnQpCisgICAgICAgICAgICBpZiByZW1haW5kZXI6CisgICAgICAgICAgICAgICAgIyByZXN1bHQgaXMgbm90IGV4YWN0OyBhZGp1c3QgdG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcKKyAgICAgICAgICAgICAgICBpZiBjb2VmZiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHJlc3VsdCBpcyBleGFjdDsgZ2V0IGFzIGNsb3NlIHRvIGlkZWFsIGV4cG9uZW50IGFzIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgaWRlYWxfZXhwID0gc2VsZi5fZXhwIC0gb3RoZXIuX2V4cAorICAgICAgICAgICAgICAgIHdoaWxlIGV4cCA8IGlkZWFsX2V4cCBhbmQgY29lZmYgJSAxMCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb2VmZiAvLz0gMTAKKyAgICAgICAgICAgICAgICAgICAgZXhwICs9IDEKKworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihjb2VmZiksIGV4cCkKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX2RpdmlkZShzZWxmLCBvdGhlciwgY29udGV4dCk6CisgICAgICAgICIiIlJldHVybiAoc2VsZiAvLyBvdGhlciwgc2VsZiAlIG90aGVyKSwgdG8gY29udGV4dC5wcmVjIHByZWNpc2lvbi4KKworICAgICAgICBBc3N1bWVzIHRoYXQgbmVpdGhlciBzZWxmIG5vciBvdGhlciBpcyBhIE5hTiwgdGhhdCBzZWxmIGlzIG5vdAorICAgICAgICBpbmZpbml0ZSBhbmQgdGhhdCBvdGhlciBpcyBub256ZXJvLgorICAgICAgICAiIiIKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWRlYWxfZXhwID0gc2VsZi5fZXhwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZGVhbF9leHAgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQorCisgICAgICAgIGV4cGRpZmYgPSBzZWxmLmFkanVzdGVkKCkgLSBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmIG9yIG90aGVyLl9pc2luZmluaXR5KCkgb3IgZXhwZGlmZiA8PSAtMjoKKyAgICAgICAgICAgIHJldHVybiAoX2RlY19mcm9tX3RyaXBsZShzaWduLCAnMCcsIDApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXNjYWxlKGlkZWFsX2V4cCwgY29udGV4dC5yb3VuZGluZykpCisgICAgICAgIGlmIGV4cGRpZmYgPD0gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICAgICAgaWYgb3AxLmV4cCA+PSBvcDIuZXhwOgorICAgICAgICAgICAgICAgIG9wMS5pbnQgKj0gMTAqKihvcDEuZXhwIC0gb3AyLmV4cCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3AyLmludCAqPSAxMCoqKG9wMi5leHAgLSBvcDEuZXhwKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50KQorICAgICAgICAgICAgaWYgcSA8IDEwKipjb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgcmV0dXJuIChfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihxKSwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHN0cihyKSwgaWRlYWxfZXhwKSkKKworICAgICAgICAjIEhlcmUgdGhlIHF1b3RpZW50IGlzIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRhYmxlCisgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uSW1wb3NzaWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1b3RpZW50IHRvbyBsYXJnZSBpbiAvLywgJSBvciBkaXZtb2QnKQorICAgICAgICByZXR1cm4gYW5zLCBhbnMKKworICAgIGRlZiBfX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX190cnVlZGl2X18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX3RydWVkaXZfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19kaXZtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiAoc2VsZiAvLyBvdGhlciwgc2VsZiAlIG90aGVyKQorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIChhbnMsIGFucykKKworICAgICAgICBzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ2Rpdm1vZChJTkYsIElORiknKQorICAgICAgICAgICAgICAgIHJldHVybiBhbnMsIGFucworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gKF9TaWduZWRJbmZpbml0eVtzaWduXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdJTkYgJSB4JykpCisKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICdkaXZtb2QoMCwgMCknKQorICAgICAgICAgICAgICAgIHJldHVybiBhbnMsIGFucworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gKGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvLyAwJywgc2lnbiksCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAneCAlIDAnKSkKKworICAgICAgICBxdW90aWVudCwgcmVtYWluZGVyID0gc2VsZi5fZGl2aWRlKG90aGVyLCBjb250ZXh0KQorICAgICAgICByZW1haW5kZXIgPSByZW1haW5kZXIuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gcXVvdGllbnQsIHJlbWFpbmRlcgorCisgICAgZGVmIF9fcmRpdm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fZGl2bW9kX18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX2Rpdm1vZF9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBfX21vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZiAlIG90aGVyCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdJTkYgJSB4JykKKyAgICAgICAgZWxpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAneCAlIDAnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwICUgMCcpCisKKyAgICAgICAgcmVtYWluZGVyID0gc2VsZi5fZGl2aWRlKG90aGVyLCBjb250ZXh0KVsxXQorICAgICAgICByZW1haW5kZXIgPSByZW1haW5kZXIuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gcmVtYWluZGVyCisKKyAgICBkZWYgX19ybW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19tb2RfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fbW9kX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIHJlbWFpbmRlcl9uZWFyKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVtYWluZGVyIG5lYXJlc3QgdG8gMC0gIGFicyhyZW1haW5kZXItbmVhcikgPD0gb3RoZXIvMgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBzZWxmID09ICsvLWluZmluaXR5IC0+IEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcl9uZWFyKGluZmluaXR5LCB4KScpCisKKyAgICAgICAgIyBvdGhlciA9PSAwIC0+IGVpdGhlciBJbnZhbGlkT3BlcmF0aW9uIG9yIERpdmlzaW9uVW5kZWZpbmVkCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcih4LCAwKScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcl9uZWFyKDAsIDApJykKKworICAgICAgICAjIG90aGVyID0gKy8taW5maW5pdHkgLT4gcmVtYWluZGVyID0gc2VsZgorICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgIyBzZWxmID0gMCAtPiByZW1haW5kZXIgPSBzZWxmLCB3aXRoIGlkZWFsIGV4cG9uZW50CisgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgaWRlYWxfZXhwb25lbnQpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICAjIGNhdGNoIG1vc3QgY2FzZXMgb2YgbGFyZ2Ugb3Igc21hbGwgcXVvdGllbnQKKyAgICAgICAgZXhwZGlmZiA9IHNlbGYuYWRqdXN0ZWQoKSAtIG90aGVyLmFkanVzdGVkKCkKKyAgICAgICAgaWYgZXhwZGlmZiA+PSBjb250ZXh0LnByZWMgKyAxOgorICAgICAgICAgICAgIyBleHBkaWZmID49IHByZWMrMSA9PiBhYnMoc2VsZi9vdGhlcikgPiAxMCoqcHJlYworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uSW1wb3NzaWJsZSkKKyAgICAgICAgaWYgZXhwZGlmZiA8PSAtMjoKKyAgICAgICAgICAgICMgZXhwZGlmZiA8PSAtMiA9PiBhYnMoc2VsZi9vdGhlcikgPCAwLjEKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoaWRlYWxfZXhwb25lbnQsIGNvbnRleHQucm91bmRpbmcpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICAjIGFkanVzdCBib3RoIGFyZ3VtZW50cyB0byBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LCB0aGVuIGRpdmlkZQorICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgaWYgb3AxLmV4cCA+PSBvcDIuZXhwOgorICAgICAgICAgICAgb3AxLmludCAqPSAxMCoqKG9wMS5leHAgLSBvcDIuZXhwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3AyLmludCAqPSAxMCoqKG9wMi5leHAgLSBvcDEuZXhwKQorICAgICAgICBxLCByID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQpCisgICAgICAgICMgcmVtYWluZGVyIGlzIHIqMTAqKmlkZWFsX2V4cG9uZW50OyBvdGhlciBpcyArLy1vcDIuaW50ICoKKyAgICAgICAgIyAxMCoqaWRlYWxfZXhwb25lbnQuICAgQXBwbHkgY29ycmVjdGlvbiB0byBlbnN1cmUgdGhhdAorICAgICAgICAjIGFicyhyZW1haW5kZXIpIDw9IGFicyhvdGhlcikvMgorICAgICAgICBpZiAyKnIgKyAocSYxKSA+IG9wMi5pbnQ6CisgICAgICAgICAgICByIC09IG9wMi5pbnQKKyAgICAgICAgICAgIHEgKz0gMQorCisgICAgICAgIGlmIHEgPj0gMTAqKmNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUpCisKKyAgICAgICAgIyByZXN1bHQgaGFzIHNhbWUgc2lnbiBhcyBzZWxmIHVubGVzcyByIGlzIG5lZ2F0aXZlCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCisgICAgICAgIGlmIHIgPCAwOgorICAgICAgICAgICAgc2lnbiA9IDEtc2lnbgorICAgICAgICAgICAgciA9IC1yCisKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIociksIGlkZWFsX2V4cG9uZW50KQorICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiInNlbGYgLy8gb3RoZXIiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdJTkYgLy8gSU5GJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCisKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8vIDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgLy8gMCcpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dClbMF0KKworICAgIGRlZiBfX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fZmxvb3JkaXZfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fZmxvb3JkaXZfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgorICAgICAgICAiIiJGbG9hdCByZXByZXNlbnRhdGlvbi4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNuYW4oKToKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHNpZ25hbGluZyBOYU4gdG8gZmxvYXQiKQorICAgICAgICAgICAgcyA9ICItbmFuIiBpZiBzZWxmLl9zaWduIGVsc2UgIm5hbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHMgPSBzdHIoc2VsZikKKyAgICAgICAgcmV0dXJuIGZsb2F0KHMpCisKKyAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgIiIiQ29udmVydHMgc2VsZiB0byBhbiBpbnQsIHRydW5jYXRpbmcgaWYgbmVjZXNzYXJ5LiIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5faXNuYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciIpCisgICAgICAgICAgICBlbGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJDYW5ub3QgY29udmVydCBpbmZpbml0eSB0byBpbnRlZ2VyIikKKyAgICAgICAgcyA9ICgtMSkqKnNlbGYuX3NpZ24KKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICByZXR1cm4gcyppbnQoc2VsZi5faW50KSoxMCoqc2VsZi5fZXhwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcyppbnQoc2VsZi5faW50WzpzZWxmLl9leHBdIG9yICcwJykKKworICAgIF9fdHJ1bmNfXyA9IF9faW50X18KKworICAgIGRlZiByZWFsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorICAgIHJlYWwgPSBwcm9wZXJ0eShyZWFsKQorCisgICAgZGVmIGltYWcoc2VsZik6CisgICAgICAgIHJldHVybiBEZWNpbWFsKDApCisgICAgaW1hZyA9IHByb3BlcnR5KGltYWcpCisKKyAgICBkZWYgY29uanVnYXRlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fY29tcGxleF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gY29tcGxleChmbG9hdChzZWxmKSkKKworICAgIGRlZiBfZml4X25hbihzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiRGVjYXBpdGF0ZSB0aGUgcGF5bG9hZCBvZiBhIE5hTiB0byBmaXQgdGhlIGNvbnRleHQiIiIKKyAgICAgICAgcGF5bG9hZCA9IHNlbGYuX2ludAorCisgICAgICAgICMgbWF4aW11bSBsZW5ndGggb2YgcGF5bG9hZCBpcyBwcmVjaXNpb24gaWYgY2xhbXA9MCwKKyAgICAgICAgIyBwcmVjaXNpb24tMSBpZiBjbGFtcD0xLgorICAgICAgICBtYXhfcGF5bG9hZF9sZW4gPSBjb250ZXh0LnByZWMgLSBjb250ZXh0LmNsYW1wCisgICAgICAgIGlmIGxlbihwYXlsb2FkKSA+IG1heF9wYXlsb2FkX2xlbjoKKyAgICAgICAgICAgIHBheWxvYWQgPSBwYXlsb2FkW2xlbihwYXlsb2FkKS1tYXhfcGF5bG9hZF9sZW46XS5sc3RyaXAoJzAnKQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgcGF5bG9hZCwgc2VsZi5fZXhwLCBUcnVlKQorICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgZGVmIF9maXgoc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIlJvdW5kIGlmIGl0IGlzIG5lY2Vzc2FyeSB0byBrZWVwIHNlbGYgd2l0aGluIHByZWMgcHJlY2lzaW9uLgorCisgICAgICAgIFJvdW5kcyBhbmQgZml4ZXMgdGhlIGV4cG9uZW50LiAgRG9lcyBub3QgcmFpc2Ugb24gYSBzTmFOLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgc2VsZiAtIERlY2ltYWwgaW5zdGFuY2UKKyAgICAgICAgY29udGV4dCAtIGNvbnRleHQgdXNlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6CisgICAgICAgICAgICAgICAgIyBkZWNhcGl0YXRlIHBheWxvYWQgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBzZWxmIGlzICsvLUluZmluaXR5OyByZXR1cm4gdW5hbHRlcmVkCisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICAjIGlmIHNlbGYgaXMgemVybyB0aGVuIGV4cG9uZW50IHNob3VsZCBiZSBiZXR3ZWVuIEV0aW55IGFuZAorICAgICAgICAjIEVtYXggaWYgY2xhbXA9PTAsIGFuZCBiZXR3ZWVuIEV0aW55IGFuZCBFdG9wIGlmIGNsYW1wPT0xLgorICAgICAgICBFdGlueSA9IGNvbnRleHQuRXRpbnkoKQorICAgICAgICBFdG9wID0gY29udGV4dC5FdG9wKCkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBleHBfbWF4ID0gW2NvbnRleHQuRW1heCwgRXRvcF1bY29udGV4dC5jbGFtcF0KKyAgICAgICAgICAgIG5ld19leHAgPSBtaW4obWF4KHNlbGYuX2V4cCwgRXRpbnkpLCBleHBfbWF4KQorICAgICAgICAgICAgaWYgbmV3X2V4cCAhPSBzZWxmLl9leHA6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIG5ld19leHApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBleHBfbWluIGlzIHRoZSBzbWFsbGVzdCBhbGxvd2FibGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCwKKyAgICAgICAgIyBlcXVhbCB0byBtYXgoc2VsZi5hZGp1c3RlZCgpLWNvbnRleHQucHJlYysxLCBFdGlueSkKKyAgICAgICAgZXhwX21pbiA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gY29udGV4dC5wcmVjCisgICAgICAgIGlmIGV4cF9taW4gPiBFdG9wOgorICAgICAgICAgICAgIyBvdmVyZmxvdzogZXhwX21pbiA+IEV0b3AgaWZmIHNlbGYuYWRqdXN0ZWQoKSA+IEVtYXgKKyAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LCAnYWJvdmUgRW1heCcsIHNlbGYuX3NpZ24pCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBzZWxmX2lzX3N1Ym5vcm1hbCA9IGV4cF9taW4gPCBFdGlueQorICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKKyAgICAgICAgICAgIGV4cF9taW4gPSBFdGlueQorCisgICAgICAgICMgcm91bmQgaWYgc2VsZiBoYXMgdG9vIG1hbnkgZGlnaXRzCisgICAgICAgIGlmIHNlbGYuX2V4cCA8IGV4cF9taW46CisgICAgICAgICAgICBkaWdpdHMgPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGV4cF9taW4KKyAgICAgICAgICAgIGlmIGRpZ2l0cyA8IDA6CisgICAgICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzEnLCBleHBfbWluLTEpCisgICAgICAgICAgICAgICAgZGlnaXRzID0gMAorICAgICAgICAgICAgcm91bmRpbmdfbWV0aG9kID0gc2VsZi5fcGlja19yb3VuZGluZ19mdW5jdGlvbltjb250ZXh0LnJvdW5kaW5nXQorICAgICAgICAgICAgY2hhbmdlZCA9IHJvdW5kaW5nX21ldGhvZChzZWxmLCBkaWdpdHMpCisgICAgICAgICAgICBjb2VmZiA9IHNlbGYuX2ludFs6ZGlnaXRzXSBvciAnMCcKKyAgICAgICAgICAgIGlmIGNoYW5nZWQgPiAwOgorICAgICAgICAgICAgICAgIGNvZWZmID0gc3RyKGludChjb2VmZikrMSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oY29lZmYpID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgICAgICBjb2VmZiA9IGNvZWZmWzotMV0KKyAgICAgICAgICAgICAgICAgICAgZXhwX21pbiArPSAxCisKKyAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciB0aGUgcm91bmRpbmcgcHVzaGVkIHRoZSBleHBvbmVudCBvdXQgb2YgcmFuZ2UKKyAgICAgICAgICAgIGlmIGV4cF9taW4gPiBFdG9wOgorICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LCAnYWJvdmUgRW1heCcsIHNlbGYuX3NpZ24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgY29lZmYsIGV4cF9taW4pCisKKyAgICAgICAgICAgICMgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIHNpZ25hbHMsIHRha2luZyBjYXJlIHRvIHJlc3BlY3QKKyAgICAgICAgICAgICMgdGhlIHByZWNlZGVuY2UgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgICAgICBpZiBjaGFuZ2VkIGFuZCBzZWxmX2lzX3N1Ym5vcm1hbDoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihVbmRlcmZsb3cpCisgICAgICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCisgICAgICAgICAgICBpZiBjaGFuZ2VkOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgaWYgbm90IGFuczoKKyAgICAgICAgICAgICAgICAjIHJhaXNlIENsYW1wZWQgb24gdW5kZXJmbG93IHRvIDAKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorCisgICAgICAgICMgZm9sZCBkb3duIGlmIGNsYW1wID09IDEgYW5kIHNlbGYgaGFzIHRvbyBmZXcgZGlnaXRzCisgICAgICAgIGlmIGNvbnRleHQuY2xhbXAgPT0gMSBhbmQgc2VsZi5fZXhwID4gRXRvcDoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisgICAgICAgICAgICBzZWxmX3BhZGRlZCA9IHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gRXRvcCkKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGZfcGFkZGVkLCBFdG9wKQorCisgICAgICAgICMgaGVyZSBzZWxmIHdhcyByZXByZXNlbnRhYmxlIHRvIGJlZ2luIHdpdGg7IHJldHVybiB1bmNoYW5nZWQKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICMgZm9yIGVhY2ggb2YgdGhlIHJvdW5kaW5nIGZ1bmN0aW9ucyBiZWxvdzoKKyAgICAjICAgc2VsZiBpcyBhIGZpbml0ZSwgbm9uemVybyBEZWNpbWFsCisgICAgIyAgIHByZWMgaXMgYW4gaW50ZWdlciBzYXRpc2Z5aW5nIDAgPD0gcHJlYyA8IGxlbihzZWxmLl9pbnQpCisgICAgIworICAgICMgZWFjaCBmdW5jdGlvbiByZXR1cm5zIGVpdGhlciAtMSwgMCwgb3IgMSwgYXMgZm9sbG93czoKKyAgICAjICAgMSBpbmRpY2F0ZXMgdGhhdCBzZWxmIHNob3VsZCBiZSByb3VuZGVkIHVwIChhd2F5IGZyb20gemVybykKKyAgICAjICAgMCBpbmRpY2F0ZXMgdGhhdCBzZWxmIHNob3VsZCBiZSB0cnVuY2F0ZWQsIGFuZCB0aGF0IGFsbCB0aGUKKyAgICAjICAgICBkaWdpdHMgdG8gYmUgdHJ1bmNhdGVkIGFyZSB6ZXJvcyAoc28gdGhlIHZhbHVlIGlzIHVuY2hhbmdlZCkKKyAgICAjICAtMSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgbm9uemVybyBkaWdpdHMgdG8gYmUgdHJ1bmNhdGVkCisKKyAgICBkZWYgX3JvdW5kX2Rvd24oc2VsZiwgcHJlYyk6CisgICAgICAgICIiIkFsc28ga25vd24gYXMgcm91bmQtdG93YXJkcy0wLCB0cnVuY2F0ZS4iIiIKKyAgICAgICAgaWYgX2FsbF96ZXJvcyhzZWxmLl9pbnQsIHByZWMpOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgZGVmIF9yb3VuZF91cChzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmRzIGF3YXkgZnJvbSAwLiIiIgorICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIGRlZiBfcm91bmRfaGFsZl91cChzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmRzIDUgdXAgKGF3YXkgZnJvbSAwKSIiIgorICAgICAgICBpZiBzZWxmLl9pbnRbcHJlY10gaW4gJzU2Nzg5JzoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgX2FsbF96ZXJvcyhzZWxmLl9pbnQsIHByZWMpOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgZGVmIF9yb3VuZF9oYWxmX2Rvd24oc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kIDUgZG93biIiIgorICAgICAgICBpZiBfZXhhY3RfaGFsZihzZWxmLl9pbnQsIHByZWMpOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfaGFsZl91cChwcmVjKQorCisgICAgZGVmIF9yb3VuZF9oYWxmX2V2ZW4oc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kIDUgdG8gZXZlbiwgcmVzdCB0byBuZWFyZXN0LiIiIgorICAgICAgICBpZiBfZXhhY3RfaGFsZihzZWxmLl9pbnQsIHByZWMpIGFuZCBcCisgICAgICAgICAgICAgICAgKHByZWMgPT0gMCBvciBzZWxmLl9pbnRbcHJlYy0xXSBpbiAnMDI0NjgnKToKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2hhbGZfdXAocHJlYykKKworICAgIGRlZiBfcm91bmRfY2VpbGluZyhzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmRzIHVwIChub3QgYXdheSBmcm9tIDAgaWYgbmVnYXRpdmUuKSIiIgorICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQorCisgICAgZGVmIF9yb3VuZF9mbG9vcihzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmRzIGRvd24gKG5vdCB0b3dhcmRzIDAgaWYgbmVnYXRpdmUpIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQorCisgICAgZGVmIF9yb3VuZF8wNXVwKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZCBkb3duIHVubGVzcyBkaWdpdCBwcmVjLTEgaXMgMCBvciA1LiIiIgorICAgICAgICBpZiBwcmVjIGFuZCBzZWxmLl9pbnRbcHJlYy0xXSBub3QgaW4gJzA1JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIF9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uID0gZGljdCgKKyAgICAgICAgUk9VTkRfRE9XTiA9IF9yb3VuZF9kb3duLAorICAgICAgICBST1VORF9VUCA9IF9yb3VuZF91cCwKKyAgICAgICAgUk9VTkRfSEFMRl9VUCA9IF9yb3VuZF9oYWxmX3VwLAorICAgICAgICBST1VORF9IQUxGX0RPV04gPSBfcm91bmRfaGFsZl9kb3duLAorICAgICAgICBST1VORF9IQUxGX0VWRU4gPSBfcm91bmRfaGFsZl9ldmVuLAorICAgICAgICBST1VORF9DRUlMSU5HID0gX3JvdW5kX2NlaWxpbmcsCisgICAgICAgIFJPVU5EX0ZMT09SID0gX3JvdW5kX2Zsb29yLAorICAgICAgICBST1VORF8wNVVQID0gX3JvdW5kXzA1dXAsCisgICAgKQorCisgICAgZGVmIF9fcm91bmRfXyhzZWxmLCBuPU5vbmUpOgorICAgICAgICAiIiJSb3VuZCBzZWxmIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIG9yIHRvIGEgZ2l2ZW4gcHJlY2lzaW9uLgorCisgICAgICAgIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCByb3VuZCBhIGZpbml0ZSBEZWNpbWFsCisgICAgICAgIGluc3RhbmNlIHNlbGYgdG8gdGhlIG5lYXJlc3QgaW50ZWdlci4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IKKyAgICAgICAgYSBOYU4gdGhlbiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLiAgSWYgc2VsZiBpcyBmaW5pdGUKKyAgICAgICAgYW5kIGxpZXMgZXhhY3RseSBoYWxmd2F5IGJldHdlZW4gdHdvIGludGVnZXJzIHRoZW4gaXQgaXMKKyAgICAgICAgcm91bmRlZCB0byB0aGUgaW50ZWdlciB3aXRoIGV2ZW4gbGFzdCBkaWdpdC4KKworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpKQorICAgICAgICAxMjMKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJy00NTYuNzg5JykpCisgICAgICAgIC00NTcKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJy0zLjAnKSkKKyAgICAgICAgLTMKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzIuNScpKQorICAgICAgICAyCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCczLjUnKSkKKyAgICAgICAgNAorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnSW5mJykpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgT3ZlcmZsb3dFcnJvcjogY2Fubm90IHJvdW5kIGFuIGluZmluaXR5CisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBWYWx1ZUVycm9yOiBjYW5ub3Qgcm91bmQgYSBOYU4KKworICAgICAgICBJZiBhIHNlY29uZCBhcmd1bWVudCBuIGlzIHN1cHBsaWVkLCBzZWxmIGlzIHJvdW5kZWQgdG8gbgorICAgICAgICBkZWNpbWFsIHBsYWNlcyB1c2luZyB0aGUgcm91bmRpbmcgbW9kZSBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICBGb3IgYW4gaW50ZWdlciBuLCByb3VuZChzZWxmLCAtbikgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvCisgICAgICAgIHNlbGYucXVhbnRpemUoRGVjaW1hbCgnMUVuJykpLgorCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JyksIDApCisgICAgICAgIERlY2ltYWwoJzEyMycpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JyksIDIpCisgICAgICAgIERlY2ltYWwoJzEyMy40NicpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JyksIC0yKQorICAgICAgICBEZWNpbWFsKCcxRSsyJykKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJy1JbmZpbml0eScpLCAzNykKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ3NOYU4xMjMnKSwgMCkKKyAgICAgICAgRGVjaW1hbCgnTmFOMTIzJykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgdHdvLWFyZ3VtZW50IGZvcm06IHVzZSB0aGUgZXF1aXZhbGVudCBxdWFudGl6ZSBjYWxsCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuLCBpbnQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignU2Vjb25kIGFyZ3VtZW50IHRvIHJvdW5kIHNob3VsZCBiZSBpbnRlZ3JhbCcpCisgICAgICAgICAgICBleHAgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgLW4pCisgICAgICAgICAgICByZXR1cm4gc2VsZi5xdWFudGl6ZShleHApCisKKyAgICAgICAgIyBvbmUtYXJndW1lbnQgZm9ybQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfSEFMRl9FVkVOKSkKKworICAgIGRlZiBfX2Zsb29yX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmxvb3Igb2Ygc2VsZiwgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBGb3IgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBzZWxmLCByZXR1cm4gdGhlIGdyZWF0ZXN0CisgICAgICAgIGludGVnZXIgbiBzdWNoIHRoYXQgbiA8PSBzZWxmLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvciBhIE5hTgorICAgICAgICB0aGVuIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9GTE9PUikpCisKKyAgICBkZWYgX19jZWlsX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY2VpbGluZyBvZiBzZWxmLCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIEZvciBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIHNlbGYsIHJldHVybiB0aGUgbGVhc3QgaW50ZWdlciBuCisgICAgICAgIHN1Y2ggdGhhdCBuID49IHNlbGYuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yIGEgTmFOIHRoZW4gYQorICAgICAgICBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0NFSUxJTkcpKQorCisgICAgZGVmIGZtYShzZWxmLCBvdGhlciwgdGhpcmQsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkZ1c2VkIG11bHRpcGx5LWFkZC4KKworICAgICAgICBSZXR1cm5zIHNlbGYqb3RoZXIrdGhpcmQgd2l0aCBubyByb3VuZGluZyBvZiB0aGUgaW50ZXJtZWRpYXRlCisgICAgICAgIHByb2R1Y3Qgc2VsZipvdGhlci4KKworICAgICAgICBzZWxmIGFuZCBvdGhlciBhcmUgbXVsdGlwbGllZCB0b2dldGhlciwgd2l0aCBubyByb3VuZGluZyBvZgorICAgICAgICB0aGUgcmVzdWx0LiAgVGhlIHRoaXJkIG9wZXJhbmQgaXMgdGhlbiBhZGRlZCB0byB0aGUgcmVzdWx0LAorICAgICAgICBhbmQgYSBzaW5nbGUgZmluYWwgcm91bmRpbmcgaXMgcGVyZm9ybWVkLgorICAgICAgICAiIiIKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisgICAgICAgIHRoaXJkID0gX2NvbnZlcnRfb3RoZXIodGhpcmQsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICAjIGNvbXB1dGUgcHJvZHVjdDsgcmFpc2UgSW52YWxpZE9wZXJhdGlvbiBpZiBlaXRoZXIgb3BlcmFuZCBpcworICAgICAgICAjIGEgc2lnbmFsaW5nIE5hTiBvciBpZiB0aGUgcHJvZHVjdCBpcyB6ZXJvIHRpbWVzIGluZmluaXR5LgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnTic6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywgc2VsZikKKyAgICAgICAgICAgIGlmIG90aGVyLl9leHAgPT0gJ04nOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsIG90aGVyKQorICAgICAgICAgICAgaWYgc2VsZi5fZXhwID09ICduJzoKKyAgICAgICAgICAgICAgICBwcm9kdWN0ID0gc2VsZgorICAgICAgICAgICAgZWxpZiBvdGhlci5fZXhwID09ICduJzoKKyAgICAgICAgICAgICAgICBwcm9kdWN0ID0gb3RoZXIKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fZXhwID09ICdGJzoKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lORiAqIDAgaW4gZm1hJykKKyAgICAgICAgICAgICAgICBwcm9kdWN0ID0gX1NpZ25lZEluZmluaXR5W3NlbGYuX3NpZ24gXiBvdGhlci5fc2lnbl0KKyAgICAgICAgICAgIGVsaWYgb3RoZXIuX2V4cCA9PSAnRic6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAgKiBJTkYgaW4gZm1hJykKKyAgICAgICAgICAgICAgICBwcm9kdWN0ID0gX1NpZ25lZEluZmluaXR5W3NlbGYuX3NpZ24gXiBvdGhlci5fc2lnbl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByb2R1Y3QgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnQoc2VsZi5faW50KSAqIGludChvdGhlci5faW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgKyBvdGhlci5fZXhwKQorCisgICAgICAgIHJldHVybiBwcm9kdWN0Ll9fYWRkX18odGhpcmQsIGNvbnRleHQpCisKKyAgICBkZWYgX3Bvd2VyX21vZHVsbyhzZWxmLCBvdGhlciwgbW9kdWxvLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJUaHJlZSBhcmd1bWVudCB2ZXJzaW9uIG9mIF9fcG93X18iIiIKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBtb2R1bG8gPSBfY29udmVydF9vdGhlcihtb2R1bG8pCisgICAgICAgIGlmIG1vZHVsbyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBtb2R1bG8KKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBkZWFsIHdpdGggTmFOczogaWYgdGhlcmUgYXJlIGFueSBzTmFOcyB0aGVuIGZpcnN0IG9uZSB3aW5zLAorICAgICAgICAjIChpLmUuIGJlaGF2aW91ciBmb3IgTmFOcyBpcyBpZGVudGljYWwgdG8gdGhhdCBvZiBmbWEpCisgICAgICAgIHNlbGZfaXNfbmFuID0gc2VsZi5faXNuYW4oKQorICAgICAgICBvdGhlcl9pc19uYW4gPSBvdGhlci5faXNuYW4oKQorICAgICAgICBtb2R1bG9faXNfbmFuID0gbW9kdWxvLl9pc25hbigpCisgICAgICAgIGlmIHNlbGZfaXNfbmFuIG9yIG90aGVyX2lzX25hbiBvciBtb2R1bG9faXNfbmFuOgorICAgICAgICAgICAgaWYgc2VsZl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlcl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICAgICAgaWYgbW9kdWxvX2lzX25hbiA9PSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxvKQorICAgICAgICAgICAgaWYgc2VsZl9pc19uYW46CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKKyAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeF9uYW4oY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBtb2R1bG8uX2ZpeF9uYW4oY29udGV4dCkKKworICAgICAgICAjIGNoZWNrIGlucHV0czogd2UgYXBwbHkgc2FtZSByZXN0cmljdGlvbnMgYXMgUHl0aG9uJ3MgcG93KCkKKyAgICAgICAgaWYgbm90IChzZWxmLl9pc2ludGVnZXIoKSBhbmQKKyAgICAgICAgICAgICAgICBvdGhlci5faXNpbnRlZ2VyKCkgYW5kCisgICAgICAgICAgICAgICAgbW9kdWxvLl9pc2ludGVnZXIoKSk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgM3JkIGFyZ3VtZW50IG5vdCBhbGxvd2VkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5sZXNzIGFsbCBhcmd1bWVudHMgYXJlIGludGVnZXJzJykKKyAgICAgICAgaWYgb3RoZXIgPCAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDJuZCBhcmd1bWVudCBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZWdhdGl2ZSB3aGVuIDNyZCBhcmd1bWVudCBzcGVjaWZpZWQnKQorICAgICAgICBpZiBub3QgbW9kdWxvOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDNyZCBhcmd1bWVudCBjYW5ub3QgYmUgMCcpCisKKyAgICAgICAgIyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIGZvciBkZWNpbWFsOiB0aGUgbW9kdWx1cyBtdXN0IGJlIGxlc3MKKyAgICAgICAgIyB0aGFuIDEwKipwcmVjIGluIGFic29sdXRlIHZhbHVlCisgICAgICAgIGlmIG1vZHVsby5hZGp1c3RlZCgpID49IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN1ZmZpY2llbnQgcHJlY2lzaW9uOiBwb3coKSAzcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBtdXN0IG5vdCBoYXZlIG1vcmUgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBkaWdpdHMnKQorCisgICAgICAgICMgZGVmaW5lIDAqKjAgPT0gTmFOLCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0d28tYXJndW1lbnQgcG93CisgICAgICAgICMgKGV2ZW4gdGhvdWdoIGl0IGh1cnRzISkKKyAgICAgICAgaWYgbm90IG90aGVyIGFuZCBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdCBsZWFzdCBvbmUgb2YgcG93KCkgMXN0IGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIDJuZCBhcmd1bWVudCBtdXN0IGJlIG5vbnplcm8gOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCoqMCBpcyBub3QgZGVmaW5lZCcpCisKKyAgICAgICAgIyBjb21wdXRlIHNpZ24gb2YgcmVzdWx0CisgICAgICAgIGlmIG90aGVyLl9pc2V2ZW4oKToKKyAgICAgICAgICAgIHNpZ24gPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaWduID0gc2VsZi5fc2lnbgorCisgICAgICAgICMgY29udmVydCBtb2R1bG8gdG8gYSBQeXRob24gaW50ZWdlciwgYW5kIHNlbGYgYW5kIG90aGVyIHRvCisgICAgICAgICMgRGVjaW1hbCBpbnRlZ2VycyAoaS5lLiBmb3JjZSB0aGVpciBleHBvbmVudHMgdG8gYmUgPj0gMCkKKyAgICAgICAgbW9kdWxvID0gYWJzKGludChtb2R1bG8pKQorICAgICAgICBiYXNlID0gX1dvcmtSZXAoc2VsZi50b19pbnRlZ3JhbF92YWx1ZSgpKQorICAgICAgICBleHBvbmVudCA9IF9Xb3JrUmVwKG90aGVyLnRvX2ludGVncmFsX3ZhbHVlKCkpCisKKyAgICAgICAgIyBjb21wdXRlIHJlc3VsdCB1c2luZyBpbnRlZ2VyIHBvdygpCisgICAgICAgIGJhc2UgPSAoYmFzZS5pbnQgJSBtb2R1bG8gKiBwb3coMTAsIGJhc2UuZXhwLCBtb2R1bG8pKSAlIG1vZHVsbworICAgICAgICBmb3IgaSBpbiByYW5nZShleHBvbmVudC5leHApOgorICAgICAgICAgICAgYmFzZSA9IHBvdyhiYXNlLCAxMCwgbW9kdWxvKQorICAgICAgICBiYXNlID0gcG93KGJhc2UsIGV4cG9uZW50LmludCwgbW9kdWxvKQorCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihiYXNlKSwgMCkKKworICAgIGRlZiBfcG93ZXJfZXhhY3Qoc2VsZiwgb3RoZXIsIHApOgorICAgICAgICAiIiJBdHRlbXB0IHRvIGNvbXB1dGUgc2VsZioqb3RoZXIgZXhhY3RseS4KKworICAgICAgICBHaXZlbiBEZWNpbWFscyBzZWxmIGFuZCBvdGhlciBhbmQgYW4gaW50ZWdlciBwLCBhdHRlbXB0IHRvCisgICAgICAgIGNvbXB1dGUgYW4gZXhhY3QgcmVzdWx0IGZvciB0aGUgcG93ZXIgc2VsZioqb3RoZXIsIHdpdGggcAorICAgICAgICBkaWdpdHMgb2YgcHJlY2lzaW9uLiAgUmV0dXJuIE5vbmUgaWYgc2VsZioqb3RoZXIgaXMgbm90CisgICAgICAgIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBwIGRpZ2l0cy4KKworICAgICAgICBBc3N1bWVzIHRoYXQgZWxpbWluYXRpb24gb2Ygc3BlY2lhbCBjYXNlcyBoYXMgYWxyZWFkeSBiZWVuCisgICAgICAgIHBlcmZvcm1lZDogc2VsZiBhbmQgb3RoZXIgbXVzdCBib3RoIGJlIG5vbnNwZWNpYWw7IHNlbGYgbXVzdAorICAgICAgICBiZSBwb3NpdGl2ZSBhbmQgbm90IG51bWVyaWNhbGx5IGVxdWFsIHRvIDE7IG90aGVyIG11c3QgYmUKKyAgICAgICAgbm9uemVyby4gIEZvciBlZmZpY2llbmN5LCBvdGhlci5fZXhwIHNob3VsZCBub3QgYmUgdG9vIGxhcmdlLAorICAgICAgICBzbyB0aGF0IDEwKiphYnMob3RoZXIuX2V4cCkgaXMgYSBmZWFzaWJsZSBjYWxjdWxhdGlvbi4iIiIKKworICAgICAgICAjIEluIHRoZSBjb21tZW50cyBiZWxvdywgd2Ugd3JpdGUgeCBmb3IgdGhlIHZhbHVlIG9mIHNlbGYgYW5kIHkgZm9yIHRoZQorICAgICAgICAjIHZhbHVlIG9mIG90aGVyLiAgV3JpdGUgeCA9IHhjKjEwKip4ZSBhbmQgYWJzKHkpID0geWMqMTAqKnllLCB3aXRoIHhjCisgICAgICAgICMgYW5kIHljIHBvc2l0aXZlIGludGVnZXJzIG5vdCBkaXZpc2libGUgYnkgMTAuCisKKyAgICAgICAgIyBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGlkZW50aWZ5IHRoZSAqZmFpbHVyZSoKKyAgICAgICAgIyBvZiB4Kip5IHRvIGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSB3aXRoIGFzIGxpdHRsZSBlZmZvcnQgYXMKKyAgICAgICAgIyBwb3NzaWJsZS4gIFNvIHdlIGxvb2sgZm9yIGNoZWFwIGFuZCBlYXN5IHRlc3RzIHRoYXQKKyAgICAgICAgIyBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIHgqKnkgYmVpbmcgZXhhY3QuICBPbmx5IGlmIGFsbAorICAgICAgICAjIHRoZXNlIHRlc3RzIGFyZSBwYXNzZWQgZG8gd2UgZ28gb24gdG8gYWN0dWFsbHkgY29tcHV0ZSB4Kip5LgorCisgICAgICAgICMgSGVyZSdzIHRoZSBtYWluIGlkZWEuICBFeHByZXNzIHkgYXMgYSByYXRpb25hbCBudW1iZXIgbS9uLCB3aXRoIG0gYW5kCisgICAgICAgICMgbiByZWxhdGl2ZWx5IHByaW1lIGFuZCBuPjAuICBUaGVuIGZvciB4Kip5IHRvIGJlIGV4YWN0bHkKKyAgICAgICAgIyByZXByZXNlbnRhYmxlIChhdCAqYW55KiBwcmVjaXNpb24pLCB4YyBtdXN0IGJlIHRoZSBudGggcG93ZXIgb2YgYQorICAgICAgICAjIHBvc2l0aXZlIGludGVnZXIgYW5kIHhlIG11c3QgYmUgZGl2aXNpYmxlIGJ5IG4uICBJZiB5IGlzIG5lZ2F0aXZlCisgICAgICAgICMgdGhlbiBhZGRpdGlvbmFsbHkgeGMgbXVzdCBiZSBhIHBvd2VyIG9mIGVpdGhlciAyIG9yIDUsIGhlbmNlIGEgcG93ZXIKKyAgICAgICAgIyBvZiAyKipuIG9yIDUqKm4uCisgICAgICAgICMKKyAgICAgICAgIyBUaGVyZSdzIGEgbGltaXQgdG8gaG93IHNtYWxsIHx5fCBjYW4gYmU6IGlmIHk9bS9uIGFzIGFib3ZlCisgICAgICAgICMgdGhlbjoKKyAgICAgICAgIworICAgICAgICAjICAoMSkgaWYgeGMgIT0gMSB0aGVuIGZvciB0aGUgcmVzdWx0IHRvIGJlIHJlcHJlc2VudGFibGUgd2UKKyAgICAgICAgIyAgICAgIG5lZWQgeGMqKigxL24pID49IDIsIGFuZCBoZW5jZSBhbHNvIHhjKip8eXwgPj0gMi4gIFNvCisgICAgICAgICMgICAgICBpZiB8eXwgPD0gMS9uYml0cyh4YykgdGhlbiB4YyA8IDIqKm5iaXRzKHhjKSA8PQorICAgICAgICAjICAgICAgMioqKDEvfHl8KSwgaGVuY2UgeGMqKnx5fCA8IDIgYW5kIHRoZSByZXN1bHQgaXMgbm90CisgICAgICAgICMgICAgICByZXByZXNlbnRhYmxlLgorICAgICAgICAjCisgICAgICAgICMgICgyKSBpZiB4ZSAhPSAwLCB8eGV8KigxL24pID49IDEsIHNvIHx4ZXwqfHl8ID49IDEuICBIZW5jZSBpZgorICAgICAgICAjICAgICAgfHl8IDwgMS98eGV8IHRoZW4gdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgIworICAgICAgICAjIE5vdGUgdGhhdCBzaW5jZSB4IGlzIG5vdCBlcXVhbCB0byAxLCBhdCBsZWFzdCBvbmUgb2YgKDEpIGFuZAorICAgICAgICAjICgyKSBtdXN0IGFwcGx5LiAgTm93IHx5fCA8IDEvbmJpdHMoeGMpIGlmZiB8eWN8Km5iaXRzKHhjKSA8CisgICAgICAgICMgMTAqKi15ZSBpZmYgbGVuKHN0cih8eWN8Km5iaXRzKHhjKSkgPD0gLXllLgorICAgICAgICAjCisgICAgICAgICMgVGhlcmUncyBhbHNvIGEgbGltaXQgdG8gaG93IGxhcmdlIHkgY2FuIGJlLCBhdCBsZWFzdCBpZiBpdCdzCisgICAgICAgICMgcG9zaXRpdmU6IHRoZSBub3JtYWxpemVkIHJlc3VsdCB3aWxsIGhhdmUgY29lZmZpY2llbnQgeGMqKnksCisgICAgICAgICMgc28gaWYgaXQncyByZXByZXNlbnRhYmxlIHRoZW4geGMqKnkgPCAxMCoqcCwgYW5kIHkgPAorICAgICAgICAjIHAvbG9nMTAoeGMpLiAgSGVuY2UgaWYgeSpsb2cxMCh4YykgPj0gcCB0aGVuIHRoZSByZXN1bHQgaXMKKyAgICAgICAgIyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlLgorCisgICAgICAgICMgaWYgbGVuKHN0cihhYnMoeWMqeGUpKSA8PSAteWUgdGhlbiBhYnMoeWMqeGUpIDwgMTAqKi15ZSwKKyAgICAgICAgIyBzbyB8eXwgPCAxL3hlIGFuZCB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlLgorICAgICAgICAjIFNpbWlsYXJseSwgbGVuKHN0cihhYnMoeWMpKnhjX2JpdHMpKSA8PSAteWUgaW1wbGllcyB8eXwKKyAgICAgICAgIyA8IDEvbmJpdHMoeGMpLgorCisgICAgICAgIHggPSBfV29ya1JlcChzZWxmKQorICAgICAgICB4YywgeGUgPSB4LmludCwgeC5leHAKKyAgICAgICAgd2hpbGUgeGMgJSAxMCA9PSAwOgorICAgICAgICAgICAgeGMgLy89IDEwCisgICAgICAgICAgICB4ZSArPSAxCisKKyAgICAgICAgeSA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICB5YywgeWUgPSB5LmludCwgeS5leHAKKyAgICAgICAgd2hpbGUgeWMgJSAxMCA9PSAwOgorICAgICAgICAgICAgeWMgLy89IDEwCisgICAgICAgICAgICB5ZSArPSAxCisKKyAgICAgICAgIyBjYXNlIHdoZXJlIHhjID09IDE6IHJlc3VsdCBpcyAxMCoqKHhlKnkpLCB3aXRoIHhlKnkKKyAgICAgICAgIyByZXF1aXJlZCB0byBiZSBhbiBpbnRlZ2VyCisgICAgICAgIGlmIHhjID09IDE6CisgICAgICAgICAgICB4ZSAqPSB5YworICAgICAgICAgICAgIyByZXN1bHQgaXMgbm93IDEwKiooeGUgKiAxMCoqeWUpOyAgeGUgKiAxMCoqeWUgbXVzdCBiZSBpbnRlZ3JhbAorICAgICAgICAgICAgd2hpbGUgeGUgJSAxMCA9PSAwOgorICAgICAgICAgICAgICAgIHhlIC8vPSAxMAorICAgICAgICAgICAgICAgIHllICs9IDEKKyAgICAgICAgICAgIGlmIHllIDwgMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgZXhwb25lbnQgPSB4ZSAqIDEwKip5ZQorICAgICAgICAgICAgaWYgeS5zaWduID09IDE6CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQKKyAgICAgICAgICAgICMgaWYgb3RoZXIgaXMgYSBub25uZWdhdGl2ZSBpbnRlZ2VyLCB1c2UgaWRlYWwgZXhwb25lbnQKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKSBhbmQgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICBpZGVhbF9leHBvbmVudCA9IHNlbGYuX2V4cCppbnQob3RoZXIpCisgICAgICAgICAgICAgICAgemVyb3MgPSBtaW4oZXhwb25lbnQtaWRlYWxfZXhwb25lbnQsIHAtMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemVyb3MgPSAwCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScgKyAnMCcqemVyb3MsIGV4cG9uZW50LXplcm9zKQorCisgICAgICAgICMgY2FzZSB3aGVyZSB5IGlzIG5lZ2F0aXZlOiB4YyBtdXN0IGJlIGVpdGhlciBhIHBvd2VyCisgICAgICAgICMgb2YgMiBvciBhIHBvd2VyIG9mIDUuCisgICAgICAgIGlmIHkuc2lnbiA9PSAxOgorICAgICAgICAgICAgbGFzdF9kaWdpdCA9IHhjICUgMTAKKyAgICAgICAgICAgIGlmIGxhc3RfZGlnaXQgaW4gKDIsNCw2LDgpOgorICAgICAgICAgICAgICAgICMgcXVpY2sgdGVzdCBmb3IgcG93ZXIgb2YgMgorICAgICAgICAgICAgICAgIGlmIHhjICYgLXhjICE9IHhjOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgICMgbm93IHhjIGlzIGEgcG93ZXIgb2YgMjsgZSBpcyBpdHMgZXhwb25lbnQKKyAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKS0xCisKKyAgICAgICAgICAgICAgICAjIFdlIG5vdyBoYXZlOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCA9IDIqKmUgKiAxMCoqeGUsIGUgPiAwLCBhbmQgeSA8IDAuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVGhlIGV4YWN0IHJlc3VsdCBpczoKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHgqKnkgPSA1KiooLWUqeSkgKiAxMCoqKGUqeSArIHhlKnkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgcHJvdmlkZWQgdGhhdCBib3RoIGUqeSBhbmQgeGUqeSBhcmUgaW50ZWdlcnMuICBOb3RlIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAjIDUqKigtZSp5KSA+PSAxMCoqcCwgdGhlbiB0aGUgcmVzdWx0IGNhbid0IGJlIGV4cHJlc3NlZAorICAgICAgICAgICAgICAgICMgZXhhY3RseSB3aXRoIHAgZGlnaXRzIG9mIHByZWNpc2lvbi4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBVc2luZyB0aGUgYWJvdmUsIHdlIGNhbiBndWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZS4KKyAgICAgICAgICAgICAgICAjIDkzLzY1IGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2coMTApL2xvZyg1KSwgc28gaWYKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHllID49IGxlbihzdHIoOTMqcC8vNjUpKQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHRoZW4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIC1lKnkgPj0gLXkgPj0gMTAqKnllID4gOTMqcC82NSA+IHAqbG9nKDEwKS9sb2coNSksCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgc28gNSoqKC1lKnkpID49IDEwKipwLCBhbmQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQKKyAgICAgICAgICAgICAgICAjIGNhbid0IGJlIGV4cHJlc3NlZCBpbiBwIGRpZ2l0cy4KKworICAgICAgICAgICAgICAgICMgZW1heCA+PSBsYXJnZXN0IGUgc3VjaCB0aGF0IDUqKmUgPCAxMCoqcC4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCo5My8vNjUKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgICMgRmluZCAtZSp5IGFuZCAteGUqeTsgYm90aCBtdXN0IGJlIGludGVnZXJzCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgeGMgPSA1KiplCisKKyAgICAgICAgICAgIGVsaWYgbGFzdF9kaWdpdCA9PSA1OgorICAgICAgICAgICAgICAgICMgZSA+PSBsb2dfNSh4YykgaWYgeGMgaXMgYSBwb3dlciBvZiA1OyB3ZSBoYXZlCisgICAgICAgICAgICAgICAgIyBlcXVhbGl0eSBhbGwgdGhlIHdheSB1cCB0byB4Yz01KioyNjU4CisgICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YykqMjgvLzY1CisgICAgICAgICAgICAgICAgeGMsIHJlbWFpbmRlciA9IGRpdm1vZCg1KiplLCB4YykKKyAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgd2hpbGUgeGMgJSA1ID09IDA6CisgICAgICAgICAgICAgICAgICAgIHhjIC8vPSA1CisgICAgICAgICAgICAgICAgICAgIGUgLT0gMQorCisgICAgICAgICAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZSwgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgaW4KKyAgICAgICAgICAgICAgICAjIHRoZSAneGMgaXMgYSBwb3dlciBvZiAyJyBicmFuY2guICAxMC8zIGlzIGFuIHVwcGVyIGJvdW5kIGZvcgorICAgICAgICAgICAgICAgICMgbG9nKDEwKS9sb2coMikuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqMTAvLzMKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHhjID0gMioqZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBpZiB4YyA+PSAxMCoqcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgeGUgPSAtZS14ZQorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKHhjKSwgeGUpCisKKyAgICAgICAgIyBub3cgeSBpcyBwb3NpdGl2ZTsgZmluZCBtIGFuZCBuIHN1Y2ggdGhhdCB5ID0gbS9uCisgICAgICAgIGlmIHllID49IDA6CisgICAgICAgICAgICBtLCBuID0geWMqMTAqKnllLCAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB4ZSAhPSAwIGFuZCBsZW4oc3RyKGFicyh5Yyp4ZSkpKSA8PSAteWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHhjX2JpdHMgPSBfbmJpdHMoeGMpCisgICAgICAgICAgICBpZiB4YyAhPSAxIGFuZCBsZW4oc3RyKGFicyh5YykqeGNfYml0cykpIDw9IC15ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgbSwgbiA9IHljLCAxMCoqKC15ZSkKKyAgICAgICAgICAgIHdoaWxlIG0gJSAyID09IG4gJSAyID09IDA6CisgICAgICAgICAgICAgICAgbSAvLz0gMgorICAgICAgICAgICAgICAgIG4gLy89IDIKKyAgICAgICAgICAgIHdoaWxlIG0gJSA1ID09IG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbSAvLz0gNQorICAgICAgICAgICAgICAgIG4gLy89IDUKKworICAgICAgICAjIGNvbXB1dGUgbnRoIHJvb3Qgb2YgeGMqMTAqKnhlCisgICAgICAgIGlmIG4gPiAxOgorICAgICAgICAgICAgIyBpZiAxIDwgeGMgPCAyKipuIHRoZW4geGMgaXNuJ3QgYW4gbnRoIHBvd2VyCisgICAgICAgICAgICBpZiB4YyAhPSAxIGFuZCB4Y19iaXRzIDw9IG46CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgeGUsIHJlbSA9IGRpdm1vZCh4ZSwgbikKKyAgICAgICAgICAgIGlmIHJlbSAhPSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICMgY29tcHV0ZSBudGggcm9vdCBvZiB4YyB1c2luZyBOZXd0b24ncyBtZXRob2QKKyAgICAgICAgICAgIGEgPSAxIDw8IC0oLV9uYml0cyh4YykvL24pICMgaW5pdGlhbCBlc3RpbWF0ZQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBxLCByID0gZGl2bW9kKHhjLCBhKioobi0xKSkKKyAgICAgICAgICAgICAgICBpZiBhIDw9IHE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYSA9IChhKihuLTEpICsgcSkvL24KKyAgICAgICAgICAgIGlmIG5vdCAoYSA9PSBxIGFuZCByID09IDApOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICB4YyA9IGEKKworICAgICAgICAjIG5vdyB4YyoxMCoqeGUgaXMgdGhlIG50aCByb290IG9mIHRoZSBvcmlnaW5hbCB4YyoxMCoqeGUKKyAgICAgICAgIyBjb21wdXRlIG10aCBwb3dlciBvZiB4YyoxMCoqeGUKKworICAgICAgICAjIGlmIG0gPiBwKjEwMC8vX2xvZzEwX2xiKHhjKSB0aGVuIG0gPiBwL2xvZzEwKHhjKSwgaGVuY2UgeGMqKm0gPgorICAgICAgICAjIDEwKipwIGFuZCB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlLgorICAgICAgICBpZiB4YyA+IDEgYW5kIG0gPiBwKjEwMC8vX2xvZzEwX2xiKHhjKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHhjID0geGMqKm0KKyAgICAgICAgeGUgKj0gbQorICAgICAgICBpZiB4YyA+IDEwKipwOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGJ5IHRoaXMgcG9pbnQgdGhlIHJlc3VsdCAqaXMqIGV4YWN0bHkgcmVwcmVzZW50YWJsZQorICAgICAgICAjIGFkanVzdCB0aGUgZXhwb25lbnQgdG8gZ2V0IGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBpZGVhbAorICAgICAgICAjIGV4cG9uZW50LCBpZiBuZWNlc3NhcnkKKyAgICAgICAgc3RyX3hjID0gc3RyKHhjKQorICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCkgYW5kIG90aGVyLl9zaWduID09IDA6CisgICAgICAgICAgICBpZGVhbF9leHBvbmVudCA9IHNlbGYuX2V4cCppbnQob3RoZXIpCisgICAgICAgICAgICB6ZXJvcyA9IG1pbih4ZS1pZGVhbF9leHBvbmVudCwgcC1sZW4oc3RyX3hjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHplcm9zID0gMAorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHJfeGMrJzAnKnplcm9zLCB4ZS16ZXJvcykKKworICAgIGRlZiBfX3Bvd19fKHNlbGYsIG90aGVyLCBtb2R1bG89Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgKiogb3RoZXIgWyAlIG1vZHVsb10uCisKKyAgICAgICAgV2l0aCB0d28gYXJndW1lbnRzLCBjb21wdXRlIHNlbGYqKm90aGVyLgorCisgICAgICAgIFdpdGggdGhyZWUgYXJndW1lbnRzLCBjb21wdXRlIChzZWxmKipvdGhlcikgJSBtb2R1bG8uICBGb3IgdGhlCisgICAgICAgIHRocmVlIGFyZ3VtZW50IGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZQorICAgICAgICBhcmd1bWVudHMgaG9sZDoKKworICAgICAgICAgLSBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWwKKyAgICAgICAgIC0gb3RoZXIgbXVzdCBiZSBub25uZWdhdGl2ZQorICAgICAgICAgLSBlaXRoZXIgc2VsZiBvciBvdGhlciAob3IgYm90aCkgbXVzdCBiZSBub256ZXJvCisgICAgICAgICAtIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIG11c3QgaGF2ZSBhdCBtb3N0IHAgZGlnaXRzLAorICAgICAgICAgICB3aGVyZSBwIGlzIHRoZSBjb250ZXh0IHByZWNpc2lvbi4KKworICAgICAgICBJZiBhbnkgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGlzIHZpb2xhdGVkIHRoZSBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGZsYWcgaXMgcmFpc2VkLgorCisgICAgICAgIFRoZSByZXN1bHQgb2YgcG93KHNlbGYsIG90aGVyLCBtb2R1bG8pIGlzIGlkZW50aWNhbCB0byB0aGUKKyAgICAgICAgcmVzdWx0IHRoYXQgd291bGQgYmUgb2J0YWluZWQgYnkgY29tcHV0aW5nIChzZWxmKipvdGhlcikgJQorICAgICAgICBtb2R1bG8gd2l0aCB1bmJvdW5kZWQgcHJlY2lzaW9uLCBidXQgaXMgY29tcHV0ZWQgbW9yZQorICAgICAgICBlZmZpY2llbnRseS4gIEl0IGlzIGFsd2F5cyBleGFjdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgbW9kdWxvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Bvd2VyX21vZHVsbyhvdGhlciwgbW9kdWxvLCBjb250ZXh0KQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgZWl0aGVyIGFyZ3VtZW50IGlzIGEgTmFOID0+IHJlc3VsdCBpcyBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgMCoqMCA9IE5hTiAoISksIHgqKjAgPSAxIGZvciBub256ZXJvIHggKGluY2x1ZGluZyArLy1JbmZpbml0eSkKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcwICoqIDAnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorCisgICAgICAgICMgcmVzdWx0IGhhcyBzaWduIDEgaWZmIHNlbGYuX3NpZ24gaXMgMSBhbmQgb3RoZXIgaXMgYW4gb2RkIGludGVnZXIKKyAgICAgICAgcmVzdWx0X3NpZ24gPSAwCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXIuX2lzZXZlbigpOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRfc2lnbiA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyAtdmUqKm5vbmludGVnZXIgPSBOYU4KKyAgICAgICAgICAgICAgICAjICgtMCkqKm5vbmludGVnZXIgPSAwKipub25pbnRlZ2VyCisgICAgICAgICAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAneCAqKiB5IHdpdGggeCBuZWdhdGl2ZSBhbmQgeSBub3QgYW4gaW50ZWdlcicpCisgICAgICAgICAgICAjIG5lZ2F0ZSBzZWxmLCB3aXRob3V0IGRvaW5nIGFueSB1bndhbnRlZCByb3VuZGluZworICAgICAgICAgICAgc2VsZiA9IHNlbGYuY29weV9uZWdhdGUoKQorCisgICAgICAgICMgMCoqKCt2ZSBvciBJbmYpPSAwOyAwKiooLXZlIG9yIC1JbmYpID0gSW5maW5pdHkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICBpZiBvdGhlci5fc2lnbiA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMCcsIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0X3NpZ25dCisKKyAgICAgICAgIyBJbmYqKigrdmUgb3IgSW5mKSA9IEluZjsgSW5mKiooLXZlIG9yIC1JbmYpID0gMAorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiBvdGhlci5fc2lnbiA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0X3NpZ25dCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMCcsIDApCisKKyAgICAgICAgIyAxKipvdGhlciA9IDEsIGJ1dCB0aGUgY2hvaWNlIG9mIGV4cG9uZW50IGFuZCB0aGUgZmxhZ3MKKyAgICAgICAgIyBkZXBlbmQgb24gdGhlIGV4cG9uZW50IG9mIHNlbGYsIGFuZCBvbiB3aGV0aGVyIG90aGVyIGlzIGEKKyAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyLCBhIG5lZ2F0aXZlIGludGVnZXIsIG9yIG5laXRoZXIKKyAgICAgICAgaWYgc2VsZiA9PSBfT25lOgorICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpOgorICAgICAgICAgICAgICAgICMgZXhwID0gbWF4KHNlbGYuX2V4cCptYXgoaW50KG90aGVyKSwgMCksCisgICAgICAgICAgICAgICAgIyAxLWNvbnRleHQucHJlYykgYnV0IGV2YWx1YXRpbmcgaW50KG90aGVyKSBkaXJlY3RseQorICAgICAgICAgICAgICAgICMgaXMgZGFuZ2Vyb3VzIHVudGlsIHdlIGtub3cgb3RoZXIgaXMgc21hbGwgKG90aGVyCisgICAgICAgICAgICAgICAgIyBjb3VsZCBiZSAxZTk5OTk5OTk5OSkKKyAgICAgICAgICAgICAgICBpZiBvdGhlci5fc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMAorICAgICAgICAgICAgICAgIGVsaWYgb3RoZXIgPiBjb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBjb250ZXh0LnByZWMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gaW50KG90aGVyKQorCisgICAgICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwICogbXVsdGlwbGllcgorICAgICAgICAgICAgICAgIGlmIGV4cCA8IDEtY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgICAgICBleHAgPSAxLWNvbnRleHQucHJlYworICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICAgICAgZXhwID0gMS1jb250ZXh0LnByZWMKKworICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcxJysnMCcqLWV4cCwgZXhwKQorCisgICAgICAgICMgY29tcHV0ZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmCisgICAgICAgIHNlbGZfYWRqID0gc2VsZi5hZGp1c3RlZCgpCisKKyAgICAgICAgIyBzZWxmICoqIGluZmluaXR5IGlzIGluZmluaXR5IGlmIHNlbGYgPiAxLCAwIGlmIHNlbGYgPCAxCisgICAgICAgICMgc2VsZiAqKiAtaW5maW5pdHkgaXMgaW5maW5pdHkgaWYgc2VsZiA8IDEsIDAgaWYgc2VsZiA+IDEKKyAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlmIChvdGhlci5fc2lnbiA9PSAwKSA9PSAoc2VsZl9hZGogPCAwKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQorCisgICAgICAgICMgZnJvbSBoZXJlIG9uLCB0aGUgcmVzdWx0IGFsd2F5cyBnb2VzIHRocm91Z2ggdGhlIGNhbGwKKyAgICAgICAgIyB0byBfZml4IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgYW5zID0gTm9uZQorICAgICAgICBleGFjdCA9IEZhbHNlCisKKyAgICAgICAgIyBjcnVkZSB0ZXN0IHRvIGNhdGNoIGNhc2VzIG9mIGV4dHJlbWUgb3ZlcmZsb3cvdW5kZXJmbG93LiAgSWYKKyAgICAgICAgIyBsb2cxMChzZWxmKSpvdGhlciA+PSAxMCoqYm91bmQgYW5kIGJvdW5kID49IGxlbihzdHIoRW1heCkpCisgICAgICAgICMgdGhlbiAxMCoqYm91bmQgPj0gMTAqKmxlbihzdHIoRW1heCkpID49IEVtYXgrMSBhbmQgaGVuY2UKKyAgICAgICAgIyBzZWxmKipvdGhlciA+PSAxMCoqKEVtYXgrMSksIHNvIG92ZXJmbG93IG9jY3Vycy4gIFRoZSB0ZXN0CisgICAgICAgICMgZm9yIHVuZGVyZmxvdyBpcyBzaW1pbGFyLgorICAgICAgICBib3VuZCA9IHNlbGYuX2xvZzEwX2V4cF9ib3VuZCgpICsgb3RoZXIuYWRqdXN0ZWQoKQorICAgICAgICBpZiAoc2VsZl9hZGogPj0gMCkgPT0gKG90aGVyLl9zaWduID09IDApOgorICAgICAgICAgICAgIyBzZWxmID4gMSBhbmQgb3RoZXIgK3ZlLCBvciBzZWxmIDwgMSBhbmQgb3RoZXIgLXZlCisgICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93CisgICAgICAgICAgICBpZiBib3VuZCA+PSBsZW4oc3RyKGNvbnRleHQuRW1heCkpOgorICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcxJywgY29udGV4dC5FbWF4KzEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHNlbGYgPiAxIGFuZCBvdGhlciAtdmUsIG9yIHNlbGYgPCAxIGFuZCBvdGhlciArdmUKKyAgICAgICAgICAgICMgcG9zc2liaWxpdHkgb2YgdW5kZXJmbG93IHRvIDAKKyAgICAgICAgICAgIEV0aW55ID0gY29udGV4dC5FdGlueSgpCisgICAgICAgICAgICBpZiBib3VuZCA+PSBsZW4oc3RyKC1FdGlueSkpOgorICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcxJywgRXRpbnktMSkKKworICAgICAgICAjIHRyeSBmb3IgYW4gZXhhY3QgcmVzdWx0IHdpdGggcHJlY2lzaW9uICsxCisgICAgICAgIGlmIGFucyBpcyBOb25lOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fcG93ZXJfZXhhY3Qob3RoZXIsIGNvbnRleHQucHJlYyArIDEpCisgICAgICAgICAgICBpZiBhbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgcmVzdWx0X3NpZ24gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgxLCBhbnMuX2ludCwgYW5zLl9leHApCisgICAgICAgICAgICAgICAgZXhhY3QgPSBUcnVlCisKKyAgICAgICAgIyB1c3VhbCBjYXNlOiBpbmV4YWN0IHJlc3VsdCwgeCoqeSBjb21wdXRlZCBkaXJlY3RseSBhcyBleHAoeSpsb2coeCkpCisgICAgICAgIGlmIGFucyBpcyBOb25lOgorICAgICAgICAgICAgcCA9IGNvbnRleHQucHJlYworICAgICAgICAgICAgeCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICB4YywgeGUgPSB4LmludCwgeC5leHAKKyAgICAgICAgICAgIHkgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgICAgIHljLCB5ZSA9IHkuaW50LCB5LmV4cAorICAgICAgICAgICAgaWYgeS5zaWduID09IDE6CisgICAgICAgICAgICAgICAgeWMgPSAteWMKKworICAgICAgICAgICAgIyBjb21wdXRlIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogIHN0YXJ0IHdpdGggcHJlY2lzaW9uICszLAorICAgICAgICAgICAgIyB0aGVuIGluY3JlYXNlIHByZWNpc2lvbiB1bnRpbCByZXN1bHQgaXMgdW5hbWJpZ3VvdXNseSByb3VuZGFibGUKKyAgICAgICAgICAgIGV4dHJhID0gMworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjb2VmZiwgZXhwID0gX2Rwb3dlcih4YywgeGUsIHljLCB5ZSwgcCtleHRyYSkKKyAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihjb2VmZikpLXAtMSkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKKworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgc3RyKGNvZWZmKSwgZXhwKQorCisgICAgICAgICMgdW5saWtlIGV4cCwgbG4gYW5kIGxvZzEwLCB0aGUgcG93ZXIgZnVuY3Rpb24gcmVzcGVjdHMgdGhlCisgICAgICAgICMgcm91bmRpbmcgbW9kZTsgbm8gbmVlZCB0byBzd2l0Y2ggdG8gUk9VTkRfSEFMRl9FVkVOIGhlcmUKKworICAgICAgICAjIFRoZXJlJ3MgYSBkaWZmaWN1bHR5IGhlcmUgd2hlbiAnb3RoZXInIGlzIG5vdCBhbiBpbnRlZ2VyIGFuZAorICAgICAgICAjIHRoZSByZXN1bHQgaXMgZXhhY3QuICBJbiB0aGlzIGNhc2UsIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgICMgcmVxdWlyZXMgdGhhdCB0aGUgSW5leGFjdCBmbGFnIGJlIHJhaXNlZCAoaW4gc3BpdGUgb2YKKyAgICAgICAgIyBleGFjdG5lc3MpLCBidXQgc2luY2UgdGhlIHJlc3VsdCBpcyBleGFjdCBfZml4IHdvbid0IGRvIHRoaXMKKyAgICAgICAgIyBmb3IgdXMuICAoQ29ycmVzcG9uZGluZ2x5LCB0aGUgVW5kZXJmbG93IHNpZ25hbCBzaG91bGQgYWxzbworICAgICAgICAjIGJlIHJhaXNlZCBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuKSAgV2UgY2FuJ3QgZGlyZWN0bHkgcmFpc2UKKyAgICAgICAgIyB0aGVzZSBzaWduYWxzIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgY2FsbGluZyBfZml4LCBzaW5jZQorICAgICAgICAjIHRoYXQgd291bGQgdmlvbGF0ZSB0aGUgcHJlY2VkZW5jZSBmb3Igc2lnbmFscy4gIFNvIHdlIHdyYXAKKyAgICAgICAgIyB0aGUgLl9maXggY2FsbCBpbiBhIHRlbXBvcmFyeSBjb250ZXh0LCBhbmQgcmVyYWlzZQorICAgICAgICAjIGFmdGVyd2FyZHMuCisgICAgICAgIGlmIGV4YWN0IGFuZCBub3Qgb3RoZXIuX2lzaW50ZWdlcigpOgorICAgICAgICAgICAgIyBwYWQgd2l0aCB6ZXJvcyB1cCB0byBsZW5ndGggY29udGV4dC5wcmVjKzEgaWYgbmVjZXNzYXJ5OyB0aGlzCisgICAgICAgICAgICAjIGVuc3VyZXMgdGhhdCB0aGUgUm91bmRlZCBzaWduYWwgd2lsbCBiZSByYWlzZWQuCisgICAgICAgICAgICBpZiBsZW4oYW5zLl9pbnQpIDw9IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICBleHBkaWZmID0gY29udGV4dC5wcmVjICsgMSAtIGxlbihhbnMuX2ludCkKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGFucy5fc2lnbiwgYW5zLl9pbnQrJzAnKmV4cGRpZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMuX2V4cC1leHBkaWZmKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCwgd2l0aCBjbGVhcmVkIGZsYWdzL3RyYXBzCisgICAgICAgICAgICBuZXdjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgICAgIG5ld2NvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBfc2lnbmFsczoKKyAgICAgICAgICAgICAgICBuZXdjb250ZXh0LnRyYXBzW2V4Y2VwdGlvbl0gPSAwCisKKyAgICAgICAgICAgICMgcm91bmQgaW4gdGhlIG5ldyBjb250ZXh0CisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChuZXdjb250ZXh0KQorCisgICAgICAgICAgICAjIHJhaXNlIEluZXhhY3QsIGFuZCBpZiBuZWNlc3NhcnksIFVuZGVyZmxvdworICAgICAgICAgICAgbmV3Y29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGlmIG5ld2NvbnRleHQuZmxhZ3NbU3Vibm9ybWFsXToKKyAgICAgICAgICAgICAgICBuZXdjb250ZXh0Ll9yYWlzZV9lcnJvcihVbmRlcmZsb3cpCisKKyAgICAgICAgICAgICMgcHJvcGFnYXRlIHNpZ25hbHMgdG8gdGhlIG9yaWdpbmFsIGNvbnRleHQ7IF9maXggY291bGQKKyAgICAgICAgICAgICMgaGF2ZSByYWlzZWQgYW55IG9mIE92ZXJmbG93LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwKKyAgICAgICAgICAgICMgSW5leGFjdCwgUm91bmRlZCwgQ2xhbXBlZC4gIE92ZXJmbG93IG5lZWRzIHRoZSBjb3JyZWN0CisgICAgICAgICAgICAjIGFyZ3VtZW50cy4gIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGV4Y2VwdGlvbnMgaXMKKyAgICAgICAgICAgICMgaW1wb3J0YW50IGhlcmUuCisgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW092ZXJmbG93XToKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBhbnMuX3NpZ24pCisgICAgICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFVuZGVyZmxvdywgU3Vibm9ybWFsLCBJbmV4YWN0LCBSb3VuZGVkLCBDbGFtcGVkOgorICAgICAgICAgICAgICAgIGlmIG5ld2NvbnRleHQuZmxhZ3NbZXhjZXB0aW9uXToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoZXhjZXB0aW9uKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBfX3Jwb3dfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX3Bvd19fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX19wb3dfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgbm9ybWFsaXplKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIk5vcm1hbGl6ZS0gc3RyaXAgdHJhaWxpbmcgMHMsIGNoYW5nZSBhbnl0aGluZyBlcXVhbCB0byAwIHRvIDBlMCIiIgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGR1cCA9IHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICBpZiBkdXAuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBkdXAKKworICAgICAgICBpZiBub3QgZHVwOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoZHVwLl9zaWduLCAnMCcsIDApCisgICAgICAgIGV4cF9tYXggPSBbY29udGV4dC5FbWF4LCBjb250ZXh0LkV0b3AoKV1bY29udGV4dC5jbGFtcF0KKyAgICAgICAgZW5kID0gbGVuKGR1cC5faW50KQorICAgICAgICBleHAgPSBkdXAuX2V4cAorICAgICAgICB3aGlsZSBkdXAuX2ludFtlbmQtMV0gPT0gJzAnIGFuZCBleHAgPCBleHBfbWF4OgorICAgICAgICAgICAgZXhwICs9IDEKKyAgICAgICAgICAgIGVuZCAtPSAxCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKGR1cC5fc2lnbiwgZHVwLl9pbnRbOmVuZF0sIGV4cCkKKworICAgIGRlZiBxdWFudGl6ZShzZWxmLCBleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlF1YW50aXplIHNlbGYgc28gaXRzIGV4cG9uZW50IGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgZXhwLgorCisgICAgICAgIFNpbWlsYXIgdG8gc2VsZi5fcmVzY2FsZShleHAuX2V4cCkgYnV0IHdpdGggZXJyb3IgY2hlY2tpbmcuCisgICAgICAgICIiIgorICAgICAgICBleHAgPSBfY29udmVydF9vdGhlcihleHAsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHJvdW5kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIGV4cC5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoZXhwLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgZXhwLl9pc2luZmluaXR5KCkgb3Igc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGlmIGV4cC5faXNpbmZpbml0eSgpIGFuZCBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpICAjIGlmIGJvdGggYXJlIGluZiwgaXQgaXMgT0sKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgd2l0aCBvbmUgSU5GJykKKworICAgICAgICAjIGV4cC5fZXhwIHNob3VsZCBiZSBiZXR3ZWVuIEV0aW55IGFuZCBFbWF4CisgICAgICAgIGlmIG5vdCAoY29udGV4dC5FdGlueSgpIDw9IGV4cC5fZXhwIDw9IGNvbnRleHQuRW1heCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAndGFyZ2V0IGV4cG9uZW50IG91dCBvZiBib3VuZHMgaW4gcXVhbnRpemUnKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGV4cC5fZXhwKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQorICAgICAgICBpZiBzZWxmX2FkanVzdGVkID4gY29udGV4dC5FbWF4OgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCisgICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgLSBleHAuX2V4cCArIDEgPiBjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCisKKyAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAuX2V4cCwgcm91bmRpbmcpCisgICAgICAgIGlmIGFucy5hZGp1c3RlZCgpID4gY29udGV4dC5FbWF4OgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCisgICAgICAgIGlmIGxlbihhbnMuX2ludCkgPiBjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCisKKyAgICAgICAgIyByYWlzZSBhcHByb3ByaWF0ZSBmbGFncworICAgICAgICBpZiBhbnMgYW5kIGFucy5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorICAgICAgICBpZiBhbnMuX2V4cCA+IHNlbGYuX2V4cDoKKyAgICAgICAgICAgIGlmIGFucyAhPSBzZWxmOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorCisgICAgICAgICMgY2FsbCB0byBmaXggdGFrZXMgY2FyZSBvZiBhbnkgbmVjZXNzYXJ5IGZvbGRkb3duLCBhbmQKKyAgICAgICAgIyBzaWduYWxzIENsYW1wZWQgaWYgbmVjZXNzYXJ5CisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgYW5kIG90aGVyIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQ7IG90aGVyd2lzZQorICAgICAgICByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlLCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFyZSB1c2VkOgorICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIGluZmluaXRpZXMKKyAgICAgICAgICAgKiByZXR1cm4gVHJ1ZSBpZiBib3RoIG9wZXJhbmRzIGFyZSBOYU5zCisgICAgICAgICAgICogb3RoZXJ3aXNlLCByZXR1cm4gRmFsc2UuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuaXNfbmFuKCkgYW5kIG90aGVyLmlzX25hbigpIG9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNfaW5maW5pdGUoKSBhbmQgb3RoZXIuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSBvdGhlci5fZXhwCisKKyAgICBkZWYgX3Jlc2NhbGUoc2VsZiwgZXhwLCByb3VuZGluZyk6CisgICAgICAgICIiIlJlc2NhbGUgc2VsZiBzbyB0aGF0IHRoZSBleHBvbmVudCBpcyBleHAsIGVpdGhlciBieSBwYWRkaW5nIHdpdGggemVyb3MKKyAgICAgICAgb3IgYnkgdHJ1bmNhdGluZyBkaWdpdHMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgorCisgICAgICAgIFNwZWNpYWxzIGFyZSByZXR1cm5lZCB3aXRob3V0IGNoYW5nZS4gIFRoaXMgb3BlcmF0aW9uIGlzCisgICAgICAgIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vIGluZm9ybWF0aW9uIGZyb20gdGhlCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgZXhwID0gZXhwIHRvIHNjYWxlIHRvIChhbiBpbnRlZ2VyKQorICAgICAgICByb3VuZGluZyA9IHJvdW5kaW5nIG1vZGUKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwKQorCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSBleHA6CisgICAgICAgICAgICAjIHBhZCBhbnN3ZXIgd2l0aCB6ZXJvcyBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBleHApLCBleHApCisKKyAgICAgICAgIyB0b28gbWFueSBkaWdpdHM7IHJvdW5kIGFuZCBsb3NlIGRhdGEuICBJZiBzZWxmLmFkanVzdGVkKCkgPAorICAgICAgICAjIGV4cC0xLCByZXBsYWNlIHNlbGYgYnkgMTAqKihleHAtMSkgYmVmb3JlIHJvdW5kaW5nCisgICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwCisgICAgICAgIGlmIGRpZ2l0cyA8IDA6CisgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cC0xKQorICAgICAgICAgICAgZGlnaXRzID0gMAorICAgICAgICB0aGlzX2Z1bmN0aW9uID0gc2VsZi5fcGlja19yb3VuZGluZ19mdW5jdGlvbltyb3VuZGluZ10KKyAgICAgICAgY2hhbmdlZCA9IHRoaXNfZnVuY3Rpb24oc2VsZiwgZGlnaXRzKQorICAgICAgICBjb2VmZiA9IHNlbGYuX2ludFs6ZGlnaXRzXSBvciAnMCcKKyAgICAgICAgaWYgY2hhbmdlZCA9PSAxOgorICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwKQorCisgICAgZGVmIF9yb3VuZChzZWxmLCBwbGFjZXMsIHJvdW5kaW5nKToKKyAgICAgICAgIiIiUm91bmQgYSBub256ZXJvLCBub25zcGVjaWFsIERlY2ltYWwgdG8gYSBmaXhlZCBudW1iZXIgb2YKKyAgICAgICAgc2lnbmlmaWNhbnQgZmlndXJlcywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCisKKyAgICAgICAgSW5maW5pdGllcywgTmFOcyBhbmQgemVyb3MgYXJlIHJldHVybmVkIHVuYWx0ZXJlZC4KKworICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBxdWlldDogaXQgcmFpc2VzIG5vIGZsYWdzLCBhbmQgdXNlcyBubworICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb250ZXh0LgorCisgICAgICAgICIiIgorICAgICAgICBpZiBwbGFjZXMgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhdCBsZWFzdCAxIGluIF9yb3VuZCIpCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKHNlbGYuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCisgICAgICAgICMgaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSByZXNjYWxlIGFsdGVycyB0aGUgYWRqdXN0ZWQgZXhwb25lbnQ7CisgICAgICAgICMgZm9yIGV4YW1wbGUgd2hlbiByb3VuZGluZyA5OS45NyB0byAzIHNpZ25pZmljYW50IGZpZ3VyZXMuCisgICAgICAgICMgV2hlbiB0aGlzIGhhcHBlbnMgd2UgZW5kIHVwIHdpdGggYW4gZXh0cmEgMCBhdCB0aGUgZW5kIG9mCisgICAgICAgICMgdGhlIG51bWJlcjsgYSBzZWNvbmQgcmVzY2FsZSBmaXhlcyB0aGlzLgorICAgICAgICBpZiBhbnMuYWRqdXN0ZWQoKSAhPSBzZWxmLmFkanVzdGVkKCk6CisgICAgICAgICAgICBhbnMgPSBhbnMuX3Jlc2NhbGUoYW5zLmFkanVzdGVkKCkrMS1wbGFjZXMsIHJvdW5kaW5nKQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUm91bmRzIHRvIGEgbmVhcmJ5IGludGVnZXIuCisKKyAgICAgICAgSWYgbm8gcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQsIHRha2UgdGhlIHJvdW5kaW5nIG1vZGUgZnJvbQorICAgICAgICB0aGUgY29udGV4dC4gIFRoaXMgbWV0aG9kIHJhaXNlcyB0aGUgUm91bmRlZCBhbmQgSW5leGFjdCBmbGFncworICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorCisgICAgICAgIFNlZSBhbHNvOiB0b19pbnRlZ3JhbF92YWx1ZSwgd2hpY2ggZG9lcyBleGFjdGx5IHRoZSBzYW1lIGFzCisgICAgICAgIHRoaXMgbWV0aG9kIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgcmFpc2UgSW5leGFjdCBvciBSb3VuZGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIDApCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZworICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQorICAgICAgICBpZiBhbnMgIT0gc2VsZjoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiB0b19pbnRlZ3JhbF92YWx1ZShzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSb3VuZHMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgd2l0aG91dCByYWlzaW5nIGluZXhhY3QsIHJvdW5kZWQuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCisKKyAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQorICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKKworICAgIGRlZiBzcXJ0KHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygc2VsZi4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5fc2lnbiA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICAjIGV4cG9uZW50ID0gc2VsZi5fZXhwIC8vIDIuICBzcXJ0KC0wKSA9IC0wCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgc2VsZi5fZXhwIC8vIDIpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NxcnQoLXgpLCB4ID4gMCcpCisKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50IHNlbGYgcmVwcmVzZW50cyBhIHBvc2l0aXZlIG51bWJlci4gIExldCBwIGJlCisgICAgICAgICMgdGhlIGRlc2lyZWQgcHJlY2lzaW9uIGFuZCBleHByZXNzIHNlbGYgaW4gdGhlIGZvcm0gYyoxMDAqKmUKKyAgICAgICAgIyB3aXRoIGMgYSBwb3NpdGl2ZSByZWFsIG51bWJlciBhbmQgZSBhbiBpbnRlZ2VyLCBjIGFuZCBlCisgICAgICAgICMgYmVpbmcgY2hvc2VuIHNvIHRoYXQgMTAwKioocC0xKSA8PSBjIDwgMTAwKipwLiAgVGhlbiB0aGUKKyAgICAgICAgIyAoZXhhY3QpIHNxdWFyZSByb290IG9mIHNlbGYgaXMgc3FydChjKSoxMCoqZSwgYW5kIDEwKioocC0xKQorICAgICAgICAjIDw9IHNxcnQoYykgPCAxMCoqcCwgc28gdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBEZWNpbWFsIGF0CisgICAgICAgICMgcHJlY2lzaW9uIHAgaXMgbioxMCoqZSB3aGVyZSBuID0gcm91bmRfaGFsZl9ldmVuKHNxcnQoYykpLAorICAgICAgICAjIHRoZSBjbG9zZXN0IGludGVnZXIgdG8gc3FydChjKSB3aXRoIHRoZSBldmVuIGludGVnZXIgY2hvc2VuCisgICAgICAgICMgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCisgICAgICAgICMKKyAgICAgICAgIyBUbyBlbnN1cmUgY29ycmVjdCByb3VuZGluZyBpbiBhbGwgY2FzZXMsIHdlIHVzZSB0aGUKKyAgICAgICAgIyBmb2xsb3dpbmcgdHJpY2s6IHdlIGNvbXB1dGUgdGhlIHNxdWFyZSByb290IHRvIGFuIGV4dHJhCisgICAgICAgICMgcGxhY2UgKHByZWNpc2lvbiBwKzEgaW5zdGVhZCBvZiBwcmVjaXNpb24gcCksIHJvdW5kaW5nIGRvd24uCisgICAgICAgICMgVGhlbiwgaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCBpdHMgbGFzdCBkaWdpdCBpcyAwIG9yIDUsCisgICAgICAgICMgd2UgaW5jcmVhc2UgdGhlIGxhc3QgZGlnaXQgdG8gMSBvciA2IHJlc3BlY3RpdmVseTsgaWYgaXQncworICAgICAgICAjIGV4YWN0IHdlIGxlYXZlIHRoZSBsYXN0IGRpZ2l0IGFsb25lLiAgTm93IHRoZSBmaW5hbCByb3VuZCB0bworICAgICAgICAjIHAgcGxhY2VzIChvciBmZXdlciBpbiB0aGUgY2FzZSBvZiB1bmRlcmZsb3cpIHdpbGwgcm91bmQKKyAgICAgICAgIyBjb3JyZWN0bHkgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBmbGFncy4KKworICAgICAgICAjIHVzZSBhbiBleHRyYSBkaWdpdCBvZiBwcmVjaXNpb24KKyAgICAgICAgcHJlYyA9IGNvbnRleHQucHJlYysxCisKKyAgICAgICAgIyB3cml0ZSBhcmd1bWVudCBpbiB0aGUgZm9ybSBjKjEwMCoqZSB3aGVyZSBlID0gc2VsZi5fZXhwLy8yCisgICAgICAgICMgaXMgdGhlICdpZGVhbCcgZXhwb25lbnQsIHRvIGJlIHVzZWQgaWYgdGhlIHNxdWFyZSByb290IGlzCisgICAgICAgICMgZXhhY3RseSByZXByZXNlbnRhYmxlLiAgbCBpcyB0aGUgbnVtYmVyIG9mICdkaWdpdHMnIG9mIGMgaW4KKyAgICAgICAgIyBiYXNlIDEwMCwgc28gdGhhdCAxMDAqKihsLTEpIDw9IGMgPCAxMDAqKmwuCisgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgZSA9IG9wLmV4cCA+PiAxCisgICAgICAgIGlmIG9wLmV4cCAmIDE6CisgICAgICAgICAgICBjID0gb3AuaW50ICogMTAKKyAgICAgICAgICAgIGwgPSAobGVuKHNlbGYuX2ludCkgPj4gMSkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjID0gb3AuaW50CisgICAgICAgICAgICBsID0gbGVuKHNlbGYuX2ludCkrMSA+PiAxCisKKyAgICAgICAgIyByZXNjYWxlIHNvIHRoYXQgYyBoYXMgZXhhY3RseSBwcmVjIGJhc2UgMTAwICdkaWdpdHMnCisgICAgICAgIHNoaWZ0ID0gcHJlYy1sCisgICAgICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgICAgICBjICo9IDEwMCoqc2hpZnQKKyAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYywgcmVtYWluZGVyID0gZGl2bW9kKGMsIDEwMCoqLXNoaWZ0KQorICAgICAgICAgICAgZXhhY3QgPSBub3QgcmVtYWluZGVyCisgICAgICAgIGUgLT0gc2hpZnQKKworICAgICAgICAjIGZpbmQgbiA9IGZsb29yKHNxcnQoYykpIHVzaW5nIE5ld3RvbidzIG1ldGhvZAorICAgICAgICBuID0gMTAqKnByZWMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHEgPSBjLy9uCisgICAgICAgICAgICBpZiBuIDw9IHE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbiA9IG4gKyBxID4+IDEKKyAgICAgICAgZXhhY3QgPSBleGFjdCBhbmQgbipuID09IGMKKworICAgICAgICBpZiBleGFjdDoKKyAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyByZXNjYWxlIHRvIHVzZSBpZGVhbCBleHBvbmVudCBlCisgICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICAgICAgICAgICMgYXNzZXJ0IG4gJSAxMCoqc2hpZnQgPT0gMAorICAgICAgICAgICAgICAgIG4gLy89IDEwKipzaGlmdAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuICo9IDEwKiotc2hpZnQKKyAgICAgICAgICAgIGUgKz0gc2hpZnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgZml4IGxhc3QgZGlnaXQgYXMgZGVzY3JpYmVkIGFib3ZlCisgICAgICAgICAgICBpZiBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKG4pLCBlKQorCisgICAgICAgICMgcm91bmQsIGFuZCBmaXQgdG8gY3VycmVudCBjb250ZXh0CisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBtYXgoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlciB2YWx1ZS4KKworICAgICAgICBMaWtlIG1heChzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKKyAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCisgICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKKyAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQorICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQorICAgICAgICAgICAgaWYgc24gb3Igb246CisgICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisKKyAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKKyAgICAgICAgaWYgYyA9PSAwOgorICAgICAgICAgICAgIyBJZiBib3RoIG9wZXJhbmRzIGFyZSBmaW5pdGUgYW5kIGVxdWFsIGluIG51bWVyaWNhbCB2YWx1ZQorICAgICAgICAgICAgIyB0aGVuIGFuIG9yZGVyaW5nIGlzIGFwcGxpZWQ6CisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIElmIHRoZSBzaWducyBkaWZmZXIgdGhlbiBtYXggcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZQorICAgICAgICAgICAgIyBwb3NpdGl2ZSBzaWduIGFuZCBtaW4gcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZSBuZWdhdGl2ZSBzaWduCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIElmIHRoZSBzaWducyBhcmUgdGhlIHNhbWUgdGhlbiB0aGUgZXhwb25lbnQgaXMgdXNlZCB0byBzZWxlY3QKKyAgICAgICAgICAgICMgdGhlIHJlc3VsdC4gIFRoaXMgaXMgZXhhY3RseSB0aGUgb3JkZXJpbmcgdXNlZCBpbiBjb21wYXJlX3RvdGFsLgorICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKKworICAgICAgICBpZiBjID09IC0xOgorICAgICAgICAgICAgYW5zID0gb3RoZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBtaW4oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXIgdmFsdWUuCisKKyAgICAgICAgTGlrZSBtaW4oc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCisgICAgICAgIE5hTiAoYW5kIHNpZ25hbHMgaWYgb25lIGlzIHNOYU4pLiAgQWxzbyByb3VuZHMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCisgICAgICAgIGlmIGMgPT0gMDoKKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCisKKyAgICAgICAgaWYgYyA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IG90aGVyCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX2lzaW50ZWdlcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHNlbGYgaXMgYW4gaW50ZWdlciIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmVzdCA9IHNlbGYuX2ludFtzZWxmLl9leHA6XQorICAgICAgICByZXR1cm4gcmVzdCA9PSAnMCcqbGVuKHJlc3QpCisKKyAgICBkZWYgX2lzZXZlbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHNlbGYgaXMgZXZlbi4gIEFzc3VtZXMgc2VsZiBpcyBhbiBpbnRlZ2VyLiIiIgorICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmLl9leHAgPiAwOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ludFstMStzZWxmLl9leHBdIGluICcwMjQ2OCcKKworICAgIGRlZiBhZGp1c3RlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKKyAgICAgICAgIyBJZiBOYU4gb3IgSW5maW5pdHksIHNlbGYuX2V4cCBpcyBzdHJpbmcKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgY2Fub25pY2FsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgorCisgICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCisgICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gdGhlIG90aGVyIG9wZXJhbmQgbnVtZXJpY2FsbHkuCisKKyAgICAgICAgSXQncyBwcmV0dHkgbXVjaCBsaWtlIGNvbXBhcmUoKSwgYnV0IGFsbCBOYU5zIHNpZ25hbCwgd2l0aCBzaWduYWxpbmcKKyAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0ID0gVHJ1ZSkKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgIHJldHVybiBzZWxmLmNvbXBhcmUob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCisKKyAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAorICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0CisgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICAjIGlmIG9uZSBpcyBuZWdhdGl2ZSBhbmQgdGhlIG90aGVyIGlzIHBvc2l0aXZlLCBpdCdzIGVhc3kKKyAgICAgICAgaWYgc2VsZi5fc2lnbiBhbmQgbm90IG90aGVyLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbiBhbmQgb3RoZXIuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICBzaWduID0gc2VsZi5fc2lnbgorCisgICAgICAgICMgbGV0J3MgaGFuZGxlIGJvdGggTmFOIHR5cGVzCisgICAgICAgIHNlbGZfbmFuID0gc2VsZi5faXNuYW4oKQorICAgICAgICBvdGhlcl9uYW4gPSBvdGhlci5faXNuYW4oKQorICAgICAgICBpZiBzZWxmX25hbiBvciBvdGhlcl9uYW46CisgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSBvdGhlcl9uYW46CisgICAgICAgICAgICAgICAgIyBjb21wYXJlIHBheWxvYWRzIGFzIHRob3VnaCB0aGV5J3JlIGludGVnZXJzCisgICAgICAgICAgICAgICAgc2VsZl9rZXkgPSBsZW4oc2VsZi5faW50KSwgc2VsZi5faW50CisgICAgICAgICAgICAgICAgb3RoZXJfa2V5ID0gbGVuKG90aGVyLl9pbnQpLCBvdGhlci5faW50CisgICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPCBvdGhlcl9rZXk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGZfa2V5ID4gb3RoZXJfa2V5OgorICAgICAgICAgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICByZXR1cm4gX1plcm8KKworICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorCisgICAgICAgIGlmIHNlbGYgPCBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgaWYgc2VsZiA+IG90aGVyOgorICAgICAgICAgICAgcmV0dXJuIF9PbmUKKworICAgICAgICBpZiBzZWxmLl9leHAgPCBvdGhlci5fZXhwOgorICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgIGlmIHNlbGYuX2V4cCA+IG90aGVyLl9leHA6CisgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgcmV0dXJuIF9aZXJvCisKKworICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyBhYnN0cmFjdCByZXByLiwgaWdub3Jpbmcgc2lnbi4KKworICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBzID0gc2VsZi5jb3B5X2FicygpCisgICAgICAgIG8gPSBvdGhlci5jb3B5X2FicygpCisgICAgICAgIHJldHVybiBzLmNvbXBhcmVfdG90YWwobykKKworICAgIGRlZiBjb3B5X2FicyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4gIiIiCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQorCisgICAgZGVmIGNvcHlfbmVnYXRlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIGludmVydGVkLiIiIgorICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKKworICAgIGRlZiBjb3B5X3NpZ24oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgc2VsZiB3aXRoIHRoZSBzaWduIG9mIG90aGVyLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKG90aGVyLl9zaWduLCBzZWxmLl9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKKworICAgIGRlZiBleHAoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBlICoqIHNlbGYuIiIiCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgZXhwKE5hTikgPSBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIGV4cCgtSW5maW5pdHkpID0gMAorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gX1plcm8KKworICAgICAgICAjIGV4cCgwKSA9IDEKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX09uZQorCisgICAgICAgICMgZXhwKEluZmluaXR5KSA9IEluZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICAjIHRoZSByZXN1bHQgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgaW5leGFjdCAodGhlIHRydWUKKyAgICAgICAgIyBtYXRoZW1hdGljYWwgcmVzdWx0IGlzIHRyYW5zY2VuZGVudGFsKS4gVGhlcmUncyBubyBuZWVkIHRvCisgICAgICAgICMgcmFpc2UgUm91bmRlZCBhbmQgSW5leGFjdCBoZXJlLS0tdGhleSdsbCBhbHdheXMgYmUgcmFpc2VkIGFzCisgICAgICAgICMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gX2ZpeC4KKyAgICAgICAgcCA9IGNvbnRleHQucHJlYworICAgICAgICBhZGogPSBzZWxmLmFkanVzdGVkKCkKKworICAgICAgICAjIHdlIG9ubHkgbmVlZCB0byBkbyBhbnkgY29tcHV0YXRpb24gZm9yIHF1aXRlIGEgc21hbGwgcmFuZ2UKKyAgICAgICAgIyBvZiBhZGp1c3RlZCBleHBvbmVudHMtLS1mb3IgZXhhbXBsZSwgLTI5IDw9IGFkaiA8PSAxMCBmb3IKKyAgICAgICAgIyB0aGUgZGVmYXVsdCBjb250ZXh0LiAgRm9yIHNtYWxsZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBpcworICAgICAgICAjIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gMSBhdCB0aGUgZ2l2ZW4gcHJlY2lzaW9uLCB3aGlsZSBmb3IKKyAgICAgICAgIyBsYXJnZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBlaXRoZXIgb3ZlcmZsb3dzIG9yIHVuZGVyZmxvd3MuCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqID4gbGVuKHN0cigoY29udGV4dC5FbWF4KzEpKjMpKToKKyAgICAgICAgICAgICMgb3ZlcmZsb3cKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkVtYXgrMSkKKyAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDEgYW5kIGFkaiA+IGxlbihzdHIoKC1jb250ZXh0LkV0aW55KCkrMSkqMykpOgorICAgICAgICAgICAgIyB1bmRlcmZsb3cgdG8gMAorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKQorICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqIDwgLXA6CisgICAgICAgICAgICAjIHArMSBkaWdpdHM7IGZpbmFsIHJvdW5kIHdpbGwgcmFpc2UgY29ycmVjdCBmbGFncworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScgKyAnMCcqKHAtMSkgKyAnMScsIC1wKQorICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqIDwgLXAtMToKKyAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICc5JyoocCsxKSwgLXAtMSkKKyAgICAgICAgIyBnZW5lcmFsIGNhc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICAgICAgaWYgb3Auc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIGMgPSAtYworCisgICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiBpbmNyZWFzZSBwcmVjaXNpb24gYnkKKyAgICAgICAgICAgICMgMyBkaWdpdHMgYXQgYSB0aW1lIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5CisgICAgICAgICAgICAjIHJvdW5kYWJsZSByZXN1bHQKKyAgICAgICAgICAgIGV4dHJhID0gMworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAoYywgZSwgcCtleHRyYSkKKyAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihjb2VmZikpLXAtMSkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKKworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoY29lZmYpLCBleHApCisKKyAgICAgICAgIyBhdCB0aGlzIHN0YWdlLCBhbnMgc2hvdWxkIHJvdW5kIGNvcnJlY3RseSB3aXRoICphbnkqCisgICAgICAgICMgcm91bmRpbmcgbW9kZSwgbm90IGp1c3Qgd2l0aCBST1VORF9IQUxGX0VWRU4KKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIGlzX2Nhbm9uaWNhbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cworICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGlzX2Zpbml0ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKKyAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9pc19zcGVjaWFsCisKKyAgICBkZWYgaXNfaW5maW5pdGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ0YnCisKKyAgICBkZWYgaXNfbmFuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcU5hTiBvciBzTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwIGluICgnbicsICdOJykKKworICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIG5vcm1hbCBudW1iZXI7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICByZXR1cm4gY29udGV4dC5FbWluIDw9IHNlbGYuYWRqdXN0ZWQoKQorCisgICAgZGVmIGlzX3FuYW4oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxdWlldCBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ24nCisKKyAgICBkZWYgaXNfc2lnbmVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2lnbiA9PSAxCisKKyAgICBkZWYgaXNfc25hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHNpZ25hbGluZyBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ04nCisKKyAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgc3Vibm9ybWFsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbgorCisgICAgZGVmIGlzX3plcm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwgYW5kIHNlbGYuX2ludCA9PSAnMCcKKworICAgIGRlZiBfbG5fZXhwX2JvdW5kKHNlbGYpOgorICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxuKCkuCisgICAgICAgIEluIG90aGVyIHdvcmRzLCBjb21wdXRlIHIgc3VjaCB0aGF0IHNlbGYubG4oKSA+PSAxMCoqci4gIEFzc3VtZXMKKyAgICAgICAgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgorICAgICAgICAiIiIKKworICAgICAgICAjIGZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcyAxLTEveCA8PSBsbih4KSA8PSB4LTEKKyAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCisgICAgICAgIGlmIGFkaiA+PSAxOgorICAgICAgICAgICAgIyBhcmd1bWVudCA+PSAxMDsgd2UgdXNlIDIzLzEwID0gMi4zIGFzIGEgbG93ZXIgYm91bmQgZm9yIGxuKDEwKQorICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKjIzLy8xMCkpIC0gMQorICAgICAgICBpZiBhZGogPD0gLTI6CisgICAgICAgICAgICAjIGFyZ3VtZW50IDw9IDAuMQorICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoKC0xLWFkaikqMjMvLzEwKSkgLSAxCisgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgIGlmIGFkaiA9PSAwOgorICAgICAgICAgICAgIyAxIDwgc2VsZiA8IDEwCisgICAgICAgICAgICBudW0gPSBzdHIoYy0xMCoqLWUpCisgICAgICAgICAgICBkZW4gPSBzdHIoYykKKyAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikKKyAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQorICAgICAgICByZXR1cm4gZSArIGxlbihzdHIoMTAqKi1lIC0gYykpIC0gMQorCisKKyAgICBkZWYgbG4oc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2Ygc2VsZi4iIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBsbihOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBsbigwLjApID09IC1JbmZpbml0eQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQorCisgICAgICAgICMgbG4oSW5maW5pdHkpID0gSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX0luZmluaXR5CisKKyAgICAgICAgIyBsbigxLjApID09IDAuMAorICAgICAgICBpZiBzZWxmID09IF9PbmU6CisgICAgICAgICAgICByZXR1cm4gX1plcm8KKworICAgICAgICAjIGxuKG5lZ2F0aXZlKSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG4gb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCisKKyAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICBwID0gY29udGV4dC5wcmVjCisKKyAgICAgICAgIyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IHJlcGVhdGVkbHkgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDMKKyAgICAgICAgIyB1bnRpbCB3ZSBnZXQgYW4gdW5hbWJpZ3VvdXNseSByb3VuZGFibGUgcmVzdWx0CisgICAgICAgIHBsYWNlcyA9IHAgLSBzZWxmLl9sbl9leHBfYm91bmQoKSArIDIgIyBhdCBsZWFzdCBwKzMgcGxhY2VzCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjb2VmZiA9IF9kbG9nKGMsIGUsIHBsYWNlcykKKyAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQorICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoYWJzKGNvZWZmKSkpLXAtMSkpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBwbGFjZXMgKz0gMworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGludChjb2VmZjwwKSwgc3RyKGFicyhjb2VmZikpLCAtcGxhY2VzKQorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgX2xvZzEwX2V4cF9ib3VuZChzZWxmKToKKyAgICAgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sb2cxMCgpLgorICAgICAgICBJbiBvdGhlciB3b3JkcywgZmluZCByIHN1Y2ggdGhhdCBzZWxmLmxvZzEwKCkgPj0gMTAqKnIuCisgICAgICAgIEFzc3VtZXMgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgorICAgICAgICAiIiIKKworICAgICAgICAjIEZvciB4ID49IDEwIG9yIHggPCAwLjEgd2Ugb25seSBuZWVkIGEgYm91bmQgb24gdGhlIGludGVnZXIKKyAgICAgICAgIyBwYXJ0IG9mIGxvZzEwKHNlbGYpLCBhbmQgdGhpcyBjb21lcyBkaXJlY3RseSBmcm9tIHRoZQorICAgICAgICAjIGV4cG9uZW50IG9mIHguICBGb3IgMC4xIDw9IHggPD0gMTAgd2UgdXNlIHRoZSBpbmVxdWFsaXRpZXMKKyAgICAgICAgIyAxLTEveCA8PSBsb2coeCkgPD0geC0xLiBJZiB4ID4gMSB3ZSBoYXZlIHxsb2cxMCh4KXwgPgorICAgICAgICAjICgxLTEveCkvMi4zMSA+IDAuICBJZiB4IDwgMSB0aGVuIHxsb2cxMCh4KXwgPiAoMS14KS8yLjMxID4gMAorCisgICAgICAgIGFkaiA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQorICAgICAgICBpZiBhZGogPj0gMToKKyAgICAgICAgICAgICMgc2VsZiA+PSAxMAorICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKSktMQorICAgICAgICBpZiBhZGogPD0gLTI6CisgICAgICAgICAgICAjIHNlbGYgPCAwLjEKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKC0xLWFkaikpLTEKKyAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgaWYgYWRqID09IDA6CisgICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKKyAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKKyAgICAgICAgICAgIGRlbiA9IHN0cigyMzEqYykKKyAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikgKyAyCisgICAgICAgICMgYWRqID09IC0xLCAwLjEgPD0gc2VsZiA8IDEKKyAgICAgICAgbnVtID0gc3RyKDEwKiotZS1jKQorICAgICAgICByZXR1cm4gbGVuKG51bSkgKyBlIC0gKG51bSA8ICIyMzEiKSAtIDEKKworICAgIGRlZiBsb2cxMChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGxvZzEwKE5hTikgPSBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIGxvZzEwKDAuMCkgPT0gLUluZmluaXR5CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5CisKKyAgICAgICAgIyBsb2cxMChJbmZpbml0eSkgPSBJbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKworICAgICAgICAjIGxvZzEwKG5lZ2F0aXZlIG9yIC1JbmZpbml0eSkgcmFpc2VzIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZzEwIG9mIGEgbmVnYXRpdmUgdmFsdWUnKQorCisgICAgICAgICMgbG9nMTAoMTAqKm4pID0gbgorICAgICAgICBpZiBzZWxmLl9pbnRbMF0gPT0gJzEnIGFuZCBzZWxmLl9pbnRbMTpdID09ICcwJyoobGVuKHNlbGYuX2ludCkgLSAxKToKKyAgICAgICAgICAgICMgYW5zd2VyIG1heSBuZWVkIHJvdW5kaW5nCisgICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcmVzdWx0IGlzIGlycmF0aW9uYWwsIHNvIG5lY2Vzc2FyaWx5IGluZXhhY3QKKyAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICAgICAgcCA9IGNvbnRleHQucHJlYworCisgICAgICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24KKyAgICAgICAgICAgICMgdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCisgICAgICAgICAgICBwbGFjZXMgPSBwLXNlbGYuX2xvZzEwX2V4cF9ib3VuZCgpKzIKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29lZmYgPSBfZGxvZzEwKGMsIGUsIHBsYWNlcykKKyAgICAgICAgICAgICAgICAjIGFzc2VydCBsZW4oc3RyKGFicyhjb2VmZikpKS1wID49IDEKKyAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcGxhY2VzICs9IDMKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBsb2diKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHNlbGYncyBNU0QuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQorICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBzZWxmIChhcyB0aG91Z2ggaXQgd2VyZSB0cnVuY2F0ZWQKKyAgICAgICAgdG8gYSBzaW5nbGUgZGlnaXQgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHZhbHVlIG9mIHRoYXQgZGlnaXQgYW5kCisgICAgICAgIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCisgICAgICAgICIiIgorICAgICAgICAjIGxvZ2IoTmFOKSA9IE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGxvZ2IoKy8tSW5mKSA9ICtJbmYKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQorCisgICAgICAgICMgbG9nYigwKSA9IC1JbmYsIERpdmlzaW9uQnlaZXJvCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAnbG9nYigwKScsIDEpCisKKyAgICAgICAgIyBvdGhlcndpc2UsIHNpbXBseSByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYsIGFzIGEKKyAgICAgICAgIyBEZWNpbWFsLiAgTm90ZSB0aGF0IG5vIGF0dGVtcHQgaXMgbWFkZSB0byBmaXQgdGhlIHJlc3VsdAorICAgICAgICAjIGludG8gdGhlIGN1cnJlbnQgY29udGV4dC4KKyAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmLmFkanVzdGVkKCkpCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9pc2xvZ2ljYWwoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBsb2dpY2FsIG9wZXJhbmQuCisKKyAgICAgICAgRm9yIGJlaW5nIGxvZ2ljYWwsIGl0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIHdpdGggYSBzaWduIG9mIDAsCisgICAgICAgIGFuIGV4cG9uZW50IG9mIDAsIGFuZCBhIGNvZWZmaWNpZW50IHdob3NlIGRpZ2l0cyBtdXN0IGFsbCBiZQorICAgICAgICBlaXRoZXIgMCBvciAxLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSAwIG9yIHNlbGYuX2V4cCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGZvciBkaWcgaW4gc2VsZi5faW50OgorICAgICAgICAgICAgaWYgZGlnIG5vdCBpbiAnMDEnOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9maWxsX2xvZ2ljYWwoc2VsZiwgY29udGV4dCwgb3BhLCBvcGIpOgorICAgICAgICBkaWYgPSBjb250ZXh0LnByZWMgLSBsZW4ob3BhKQorICAgICAgICBpZiBkaWYgPiAwOgorICAgICAgICAgICAgb3BhID0gJzAnKmRpZiArIG9wYQorICAgICAgICBlbGlmIGRpZiA8IDA6CisgICAgICAgICAgICBvcGEgPSBvcGFbLWNvbnRleHQucHJlYzpdCisgICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGIpCisgICAgICAgIGlmIGRpZiA+IDA6CisgICAgICAgICAgICBvcGIgPSAnMCcqZGlmICsgb3BiCisgICAgICAgIGVsaWYgZGlmIDwgMDoKKyAgICAgICAgICAgIG9wYiA9IG9wYlstY29udGV4dC5wcmVjOl0KKyAgICAgICAgcmV0dXJuIG9wYSwgb3BiCisKKyAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkFwcGxpZXMgYW4gJ2FuZCcgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCisgICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQorCisgICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCisgICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSkmaW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCisKKyAgICBkZWYgbG9naWNhbF9pbnZlcnQoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiSW52ZXJ0IGFsbCBpdHMgZGlnaXRzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHJldHVybiBzZWxmLmxvZ2ljYWxfeG9yKF9kZWNfZnJvbV90cmlwbGUoMCwnMScqY29udGV4dC5wcmVjLDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQorCisgICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkFwcGxpZXMgYW4gJ29yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKKyAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCisKKyAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKKyAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKXxpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKKworICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQXBwbGllcyBhbiAneG9yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKKyAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCisKKyAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKKyAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKV5pbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKKworICAgIGRlZiBtYXhfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLmNvcHlfYWJzKCkuX2NtcChvdGhlci5jb3B5X2FicygpKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gc2VsZgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIG1pbl9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCisgICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKKyAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQorICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQorICAgICAgICAgICAgaWYgc24gb3Igb246CisgICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisKKyAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCisgICAgICAgIGlmIGMgPT0gMDoKKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCisKKyAgICAgICAgaWYgYyA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IG90aGVyCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgbmV4dF9taW51cyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBpdHNlbGYuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfRkxPT1IpCisgICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQorICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCisgICAgICAgIHJldHVybiBzZWxmLl9fc3ViX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQorCisgICAgZGVmIG5leHRfcGx1cyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBpdHNlbGYuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCAnOScqY29udGV4dC5wcmVjLCBjb250ZXh0LkV0b3AoKSkKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0NFSUxJTkcpCisgICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQorICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQorICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCisgICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQorCisgICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBzZWxmLCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciB0byBzZWxmCisgICAgICAgIChleGNsdWRpbmcgc2VsZikgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIsCisgICAgICAgIHVubGVzcyBib3RoIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZQorICAgICAgICBudW1lcmljYWxseSBlcXVhbCwgdGhlbiB0aGUgcmVzdWx0IGlzIGEgY29weSBvZiBzZWxmIHdpdGggdGhlCisgICAgICAgIHNpZ24gc2V0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIG90aGVyLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgY29tcGFyaXNvbiA9IHNlbGYuX2NtcChvdGhlcikKKyAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9zaWduKG90aGVyKQorCisgICAgICAgIGlmIGNvbXBhcmlzb24gPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfcGx1cyhjb250ZXh0KQorICAgICAgICBlbHNlOiAjIGNvbXBhcmlzb24gPT0gMQorICAgICAgICAgICAgYW5zID0gc2VsZi5uZXh0X21pbnVzKGNvbnRleHQpCisKKyAgICAgICAgIyBkZWNpZGUgd2hpY2ggZmxhZ3MgdG8gcmFpc2UgdXNpbmcgdmFsdWUgb2YgYW5zCisgICAgICAgIGlmIGFucy5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5maW5pdGUgcmVzdWx0IGZyb20gbmV4dF90b3dhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9zaWduKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgIGVsaWYgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihVbmRlcmZsb3cpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgICMgaWYgcHJlY2lzaW9uID09IDEgdGhlbiB3ZSBkb24ndCByYWlzZSBDbGFtcGVkIGZvciBhCisgICAgICAgICAgICAjIHJlc3VsdCAwRS1FdGlueS4KKyAgICAgICAgICAgIGlmIG5vdCBhbnM6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2Ygc2VsZi4KKworICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKKyAgICAgICAgICBzTmFOCisgICAgICAgICAgTmFOCisgICAgICAgICAgLUluZmluaXR5CisgICAgICAgICAgLU5vcm1hbAorICAgICAgICAgIC1TdWJub3JtYWwKKyAgICAgICAgICAtWmVybworICAgICAgICAgICtaZXJvCisgICAgICAgICAgK1N1Ym5vcm1hbAorICAgICAgICAgICtOb3JtYWwKKyAgICAgICAgICArSW5maW5pdHkKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgorICAgICAgICAgICAgcmV0dXJuICJzTmFOIgorICAgICAgICBpZiBzZWxmLmlzX3FuYW4oKToKKyAgICAgICAgICAgIHJldHVybiAiTmFOIgorICAgICAgICBpbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKKyAgICAgICAgaWYgaW5mID09IDE6CisgICAgICAgICAgICByZXR1cm4gIitJbmZpbml0eSIKKyAgICAgICAgaWYgaW5mID09IC0xOgorICAgICAgICAgICAgcmV0dXJuICItSW5maW5pdHkiCisgICAgICAgIGlmIHNlbGYuaXNfemVybygpOgorICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIi1aZXJvIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gIitaZXJvIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHNlbGYuaXNfc3Vibm9ybWFsKGNvbnRleHQ9Y29udGV4dCk6CisgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgICAgIHJldHVybiAiLVN1Ym5vcm1hbCIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICIrU3Vibm9ybWFsIgorICAgICAgICAjIGp1c3QgYSBub3JtYWwsIHJlZ3VsYXIsIGJvcmluZyBudW1iZXIsIDopCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gIi1Ob3JtYWwiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIitOb3JtYWwiCisKKyAgICBkZWYgcmFkaXgoc2VsZik6CisgICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KSIiIgorICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKKworICAgIGRlZiByb3RhdGUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKKyAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCisgICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAorICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCisgICAgICAgIGlmIHRvcGFkID4gMDoKKyAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZworICAgICAgICBlbGlmIHRvcGFkIDwgMDoKKyAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQorCisgICAgICAgICMgbGV0J3Mgcm90YXRlIQorICAgICAgICByb3RhdGVkID0gcm90ZGlnW3Rvcm90Ol0gKyByb3RkaWdbOnRvcm90XQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQorCisgICAgZGVmIHNjYWxlYihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBzZWxmIG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgdG8gaXRzIGV4cC4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisgICAgICAgIGxpbWluZiA9IC0yICogKGNvbnRleHQuRW1heCArIGNvbnRleHQucHJlYykKKyAgICAgICAgbGltc3VwID0gIDIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQorICAgICAgICBpZiBub3QgKGxpbWluZiA8PSBpbnQob3RoZXIpIDw9IGxpbXN1cCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgIGQgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwICsgaW50KG90aGVyKSkKKyAgICAgICAgZCA9IGQuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIHNoaWZ0KHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIHNlbGYsIHZhbHVlLW9mLW90aGVyIHRpbWVzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgaWYgbm90ICgtY29udGV4dC5wcmVjIDw9IGludChvdGhlcikgPD0gY29udGV4dC5wcmVjKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBnZXQgdmFsdWVzLCBwYWQgaWYgbmVjZXNzYXJ5CisgICAgICAgIHRvcm90ID0gaW50KG90aGVyKQorICAgICAgICByb3RkaWcgPSBzZWxmLl9pbnQKKyAgICAgICAgdG9wYWQgPSBjb250ZXh0LnByZWMgLSBsZW4ocm90ZGlnKQorICAgICAgICBpZiB0b3BhZCA+IDA6CisgICAgICAgICAgICByb3RkaWcgPSAnMCcqdG9wYWQgKyByb3RkaWcKKyAgICAgICAgZWxpZiB0b3BhZCA8IDA6CisgICAgICAgICAgICByb3RkaWcgPSByb3RkaWdbLXRvcGFkOl0KKworICAgICAgICAjIGxldCdzIHNoaWZ0IQorICAgICAgICBpZiB0b3JvdCA8IDA6CisgICAgICAgICAgICBzaGlmdGVkID0gcm90ZGlnWzp0b3JvdF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWcgKyAnMCcqdG9yb3QKKyAgICAgICAgICAgIHNoaWZ0ZWQgPSBzaGlmdGVkWy1jb250ZXh0LnByZWM6XQorCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQorCisgICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIChzdHIoc2VsZiksKSkKKworICAgIGRlZiBfX2NvcHlfXyhzZWxmKToKKyAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBEZWNpbWFsOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgSSdtIGltbXV0YWJsZTsgdGhlcmVmb3JlIEkgYW0gbXkgb3duIGNsb25lCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCisKKyAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW8pOgorICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6CisgICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBNeSBjb21wb25lbnRzIGFyZSBhbHNvIGltbXV0YWJsZQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc3RyKHNlbGYpKQorCisgICAgIyBQRVAgMzEwMSBzdXBwb3J0LiAgdGhlIF9sb2NhbGVjb252IGtleXdvcmQgYXJndW1lbnQgc2hvdWxkIGJlCisgICAgIyBjb25zaWRlcmVkIHByaXZhdGU6IGl0J3MgcHJvdmlkZWQgZm9yIGVhc2Ugb2YgdGVzdGluZyBvbmx5LgorICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWNpZmllciwgY29udGV4dD1Ob25lLCBfbG9jYWxlY29udj1Ob25lKToKKyAgICAgICAgIiIiRm9ybWF0IGEgRGVjaW1hbCBpbnN0YW5jZSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHNwZWNpZmllci4KKworICAgICAgICBUaGUgc3BlY2lmaWVyIHNob3VsZCBiZSBhIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIsIHdpdGggdGhlCisgICAgICAgIGZvcm0gZGVzY3JpYmVkIGluIFBFUCAzMTAxLiAgRm9ybWF0dGluZyB0eXBlcyAnZScsICdFJywgJ2YnLAorICAgICAgICAnRicsICdnJywgJ0cnLCAnbicgYW5kICclJyBhcmUgc3VwcG9ydGVkLiAgSWYgdGhlIGZvcm1hdHRpbmcKKyAgICAgICAgdHlwZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBOb3RlOiBQRVAgMzEwMSBzYXlzIHRoYXQgaWYgdGhlIHR5cGUgaXMgbm90IHByZXNlbnQgdGhlbgorICAgICAgICAjIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgICAgICMgV2UgdGFrZSB0aGUgbGliZXJ0eSBvZiBpZ25vcmluZyB0aGlzIHJlcXVpcmVtZW50IGZvcgorICAgICAgICAjIERlY2ltYWwtLS1pdCdzIHByZXN1bWFibHkgdGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQKKyAgICAgICAgIyBmb3JtYXQoZmxvYXQsICcnKSBiZWhhdmVzIHNpbWlsYXJseSB0byBzdHIoZmxvYXQpLgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgc3BlYyA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKHNwZWNpZmllciwgX2xvY2FsZWNvbnY9X2xvY2FsZWNvbnYpCisKKyAgICAgICAgIyBzcGVjaWFsIHZhbHVlcyBkb24ndCBjYXJlIGFib3V0IHRoZSB0eXBlIG9yIHByZWNpc2lvbgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgc2lnbiA9IF9mb3JtYXRfc2lnbihzZWxmLl9zaWduLCBzcGVjKQorICAgICAgICAgICAgYm9keSA9IHN0cihzZWxmLmNvcHlfYWJzKCkpCisgICAgICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgorICAgICAgICAgICAgICAgIGJvZHkgKz0gJyUnCisgICAgICAgICAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKQorCisgICAgICAgICMgYSB0eXBlIG9mIE5vbmUgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIGNvbnRleHQKKyAgICAgICAgaWYgc3BlY1sndHlwZSddIGlzIE5vbmU6CisgICAgICAgICAgICBzcGVjWyd0eXBlJ10gPSBbJ2cnLCAnRyddW2NvbnRleHQuY2FwaXRhbHNdCisKKyAgICAgICAgIyBpZiB0eXBlIGlzICclJywgYWRqdXN0IGV4cG9uZW50IG9mIHNlbGYgYWNjb3JkaW5nbHkKKyAgICAgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKKyAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwKzIpCisKKyAgICAgICAgIyByb3VuZCBpZiBuZWNlc3NhcnksIHRha2luZyByb3VuZGluZyBtb2RlIGZyb20gdGhlIGNvbnRleHQKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCisgICAgICAgIHByZWNpc2lvbiA9IHNwZWNbJ3ByZWNpc2lvbiddCisgICAgICAgIGlmIHByZWNpc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24rMSwgcm91bmRpbmcpCisgICAgICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKKyAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgtcHJlY2lzaW9uLCByb3VuZGluZykKKyAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRycgYW5kIGxlbihzZWxmLl9pbnQpID4gcHJlY2lzaW9uOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24sIHJvdW5kaW5nKQorICAgICAgICAjIHNwZWNpYWwgY2FzZTogemVyb3Mgd2l0aCBhIHBvc2l0aXZlIGV4cG9uZW50IGNhbid0IGJlCisgICAgICAgICMgcmVwcmVzZW50ZWQgaW4gZml4ZWQgcG9pbnQ7IHJlc2NhbGUgdGhlbSB0byAwZTAuCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBzZWxmLl9leHAgPiAwIGFuZCBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6CisgICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKKworICAgICAgICAjIGZpZ3VyZSBvdXQgcGxhY2VtZW50IG9mIHRoZSBkZWNpbWFsIHBvaW50CisgICAgICAgIGxlZnRkaWdpdHMgPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KQorICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBwcmVjaXNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxIC0gcHJlY2lzaW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMQorICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKKyAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cworICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZ0cnOgorICAgICAgICAgICAgaWYgc2VsZi5fZXhwIDw9IDAgYW5kIGxlZnRkaWdpdHMgPiAtNjoKKyAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCisKKyAgICAgICAgIyBmaW5kIGRpZ2l0cyBiZWZvcmUgYW5kIGFmdGVyIGRlY2ltYWwgcG9pbnQsIGFuZCBnZXQgZXhwb25lbnQKKyAgICAgICAgaWYgZG90cGxhY2UgPCAwOgorICAgICAgICAgICAgaW50cGFydCA9ICcwJworICAgICAgICAgICAgZnJhY3BhcnQgPSAnMCcqKC1kb3RwbGFjZSkgKyBzZWxmLl9pbnQKKyAgICAgICAgZWxpZiBkb3RwbGFjZSA+IGxlbihzZWxmLl9pbnQpOgorICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCArICcwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCisgICAgICAgICAgICBmcmFjcGFydCA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0gb3IgJzAnCisgICAgICAgICAgICBmcmFjcGFydCA9IHNlbGYuX2ludFtkb3RwbGFjZTpdCisgICAgICAgIGV4cCA9IGxlZnRkaWdpdHMtZG90cGxhY2UKKworICAgICAgICAjIGRvbmUgd2l0aCB0aGUgZGVjaW1hbC1zcGVjaWZpYyBzdHVmZjsgIGhhbmQgb3ZlciB0aGUgcmVzdAorICAgICAgICAjIG9mIHRoZSBmb3JtYXR0aW5nIHRvIHRoZSBfZm9ybWF0X251bWJlciBmdW5jdGlvbgorICAgICAgICByZXR1cm4gX2Zvcm1hdF9udW1iZXIoc2VsZi5fc2lnbiwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYykKKworZGVmIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgY29lZmZpY2llbnQsIGV4cG9uZW50LCBzcGVjaWFsPUZhbHNlKToKKyAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIGluc3RhbmNlIGRpcmVjdGx5LCB3aXRob3V0IGFueSB2YWxpZGF0aW9uLAorICAgIG5vcm1hbGl6YXRpb24gKGUuZy4gcmVtb3ZhbCBvZiBsZWFkaW5nIHplcm9zKSBvciBhcmd1bWVudAorICAgIGNvbnZlcnNpb24uCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGZvciAqaW50ZXJuYWwgdXNlIG9ubHkqLgorICAgICIiIgorCisgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKERlY2ltYWwpCisgICAgc2VsZi5fc2lnbiA9IHNpZ24KKyAgICBzZWxmLl9pbnQgPSBjb2VmZmljaWVudAorICAgIHNlbGYuX2V4cCA9IGV4cG9uZW50CisgICAgc2VsZi5faXNfc3BlY2lhbCA9IHNwZWNpYWwKKworICAgIHJldHVybiBzZWxmCisKKyMgUmVnaXN0ZXIgRGVjaW1hbCBhcyBhIGtpbmQgb2YgTnVtYmVyIChhbiBhYnN0cmFjdCBiYXNlIGNsYXNzKS4KKyMgSG93ZXZlciwgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIFJlYWwgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdAorIyBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4KK19udW1iZXJzLk51bWJlci5yZWdpc3RlcihEZWNpbWFsKQorCisKKyMjIyMjIENvbnRleHQgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBfQ29udGV4dE1hbmFnZXIob2JqZWN0KToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgY2xhc3MgdG8gc3VwcG9ydCBsb2NhbGNvbnRleHQoKS4KKworICAgICAgU2V0cyBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gX19lbnRlcl9fKCkgYW5kIHJlc3RvcmVzCisgICAgICB0aGUgcHJldmlvdXMgZGVjaW1hbCBjb250ZXh0IGluIF9fZXhpdF9fKCkKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X2NvbnRleHQpOgorICAgICAgICBzZWxmLm5ld19jb250ZXh0ID0gbmV3X2NvbnRleHQuY29weSgpCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNldGNvbnRleHQoc2VsZi5uZXdfY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHNlbGYubmV3X2NvbnRleHQKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgorICAgICAgICBzZXRjb250ZXh0KHNlbGYuc2F2ZWRfY29udGV4dCkKKworY2xhc3MgQ29udGV4dChvYmplY3QpOgorICAgICIiIkNvbnRhaW5zIHRoZSBjb250ZXh0IGZvciBhIERlY2ltYWwgaW5zdGFuY2UuCisKKyAgICBDb250YWluczoKKyAgICBwcmVjIC0gcHJlY2lzaW9uIChmb3IgdXNlIGluIHJvdW5kaW5nLCBkaXZpc2lvbiwgc3F1YXJlIHJvb3RzLi4pCisgICAgcm91bmRpbmcgLSByb3VuZGluZyB0eXBlIChob3cgeW91IHJvdW5kKQorICAgIHRyYXBzIC0gSWYgdHJhcHNbZXhjZXB0aW9uXSA9IDEsIHRoZW4gdGhlIGV4Y2VwdGlvbiBpcworICAgICAgICAgICAgICAgICAgICByYWlzZWQgd2hlbiBpdCBpcyBjYXVzZWQuICBPdGhlcndpc2UsIGEgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0ZWQgaW4uCisgICAgZmxhZ3MgIC0gV2hlbiBhbiBleGNlcHRpb24gaXMgY2F1c2VkLCBmbGFnc1tleGNlcHRpb25dIGlzIHNldC4KKyAgICAgICAgICAgICAoV2hldGhlciBvciBub3QgdGhlIHRyYXBfZW5hYmxlciBpcyBzZXQpCisgICAgICAgICAgICAgU2hvdWxkIGJlIHJlc2V0IGJ5IHVzZXIgb2YgRGVjaW1hbCBpbnN0YW5jZS4KKyAgICBFbWluIC0gICBNaW5pbXVtIGV4cG9uZW50CisgICAgRW1heCAtICAgTWF4aW11bSBleHBvbmVudAorICAgIGNhcGl0YWxzIC0gICAgICBJZiAxLCAxKjEwXjEgaXMgcHJpbnRlZCBhcyAxRSsxLgorICAgICAgICAgICAgICAgICAgICBJZiAwLCBwcmludGVkIGFzIDFlMQorICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLCB0cmFwcz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKKyAgICAgICAgIyBTZXQgZGVmYXVsdHM7IGZvciBldmVyeXRoaW5nIGV4Y2VwdCBmbGFncyBhbmQgX2lnbm9yZWRfZmxhZ3MsCisgICAgICAgICMgaW5oZXJpdCBmcm9tIERlZmF1bHRDb250ZXh0LgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYyA9IERlZmF1bHRDb250ZXh0CisgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5wcmVjID0gcHJlYyBpZiBwcmVjIGlzIG5vdCBOb25lIGVsc2UgZGMucHJlYworICAgICAgICBzZWxmLnJvdW5kaW5nID0gcm91bmRpbmcgaWYgcm91bmRpbmcgaXMgbm90IE5vbmUgZWxzZSBkYy5yb3VuZGluZworICAgICAgICBzZWxmLkVtaW4gPSBFbWluIGlmIEVtaW4gaXMgbm90IE5vbmUgZWxzZSBkYy5FbWluCisgICAgICAgIHNlbGYuRW1heCA9IEVtYXggaWYgRW1heCBpcyBub3QgTm9uZSBlbHNlIGRjLkVtYXgKKyAgICAgICAgc2VsZi5jYXBpdGFscyA9IGNhcGl0YWxzIGlmIGNhcGl0YWxzIGlzIG5vdCBOb25lIGVsc2UgZGMuY2FwaXRhbHMKKyAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wIGlmIGNsYW1wIGlzIG5vdCBOb25lIGVsc2UgZGMuY2xhbXAKKworICAgICAgICBpZiBfaWdub3JlZF9mbGFncyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gX2lnbm9yZWRfZmxhZ3MKKworICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKKyAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzICsgdHJhcHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKKworICAgICAgICBpZiBmbGFncyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QuZnJvbWtleXMoX3NpZ25hbHMsIDApCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpOgorICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QoKHMsIGludChzIGluIGZsYWdzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyBmbGFncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBmbGFncworCisgICAgZGVmIF9zZXRfaW50ZWdlcl9jaGVjayhzZWxmLCBuYW1lLCB2YWx1ZSwgdm1pbiwgdm1heCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGFuIGludGVnZXIiICUgbmFtZSkKKyAgICAgICAgaWYgdm1pbiA9PSAnLWluZic6CisgICAgICAgICAgICBpZiB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJXMsICVkXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQorICAgICAgICBlbGlmIHZtYXggPT0gJ2luZic6CisgICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW46CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVzXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluIG9yIHZhbHVlID4gdm1heDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJWRdLiBnb3QgJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBfc2V0X3NpZ25hbF9kaWN0KHNlbGYsIG5hbWUsIGQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhIHNpZ25hbCBkaWN0IiAlIGQpCisgICAgICAgIGZvciBrZXkgaW4gZDoKKyAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gX3NpZ25hbHM6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCisgICAgICAgIGZvciBrZXkgaW4gX3NpZ25hbHM6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIGQ6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgZCkKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJ3ByZWMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAxLCAnaW5mJykKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWluJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgJy1pbmYnLCAwKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtYXgnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAnaW5mJykKKyAgICAgICAgZWxpZiBuYW1lID09ICdjYXBpdGFscyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2xhbXAnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ3JvdW5kaW5nJzoKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBpbiBfcm91bmRpbmdfbW9kZXM6CisgICAgICAgICAgICAgICAgIyByYWlzZSBUeXBlRXJyb3IgZXZlbiBmb3Igc3RyaW5ncyB0byBoYXZlIGNvbnNpc3RlbmN5CisgICAgICAgICAgICAgICAgIyBhbW9uZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzOiBpbnZhbGlkIHJvdW5kaW5nIG1vZGUiICUgdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2ZsYWdzJyBvciBuYW1lID09ICd0cmFwcyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X3NpZ25hbF9kaWN0KG5hbWUsIHZhbHVlKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ19pZ25vcmVkX2ZsYWdzJzoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKKyAgICAgICAgICAgICAgICAiJ2RlY2ltYWwuQ29udGV4dCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSBuYW1lKQorCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXMgY2Fubm90IGJlIGRlbGV0ZWQiICUgbmFtZSkKKworICAgICMgU3VwcG9ydCBmb3IgcGlja2xpbmcsIGNvcHksIGFuZCBkZWVwY29weQorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICBmbGFncyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgdHJhcHMgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi50cmFwcy5pdGVtcygpIGlmIHZdCisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sCisgICAgICAgICAgICAgICAgKHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCisgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIGZsYWdzLCB0cmFwcykpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICIiIlNob3cgdGhlIGN1cnJlbnQgY29udGV4dC4iIiIKKyAgICAgICAgcyA9IFtdCisgICAgICAgIHMuYXBwZW5kKCdDb250ZXh0KHByZWM9JShwcmVjKWQsIHJvdW5kaW5nPSUocm91bmRpbmcpcywgJworICAgICAgICAgICAgICAgICAnRW1pbj0lKEVtaW4pZCwgRW1heD0lKEVtYXgpZCwgY2FwaXRhbHM9JShjYXBpdGFscylkLCAnCisgICAgICAgICAgICAgICAgICdjbGFtcD0lKGNsYW1wKWQnCisgICAgICAgICAgICAgICAgICUgdmFycyhzZWxmKSkKKyAgICAgICAgbmFtZXMgPSBbZi5fX25hbWVfXyBmb3IgZiwgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgcy5hcHBlbmQoJ2ZsYWdzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKKyAgICAgICAgbmFtZXMgPSBbdC5fX25hbWVfXyBmb3IgdCwgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgcy5hcHBlbmQoJ3RyYXBzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKKyAgICAgICAgcmV0dXJuICcsICcuam9pbihzKSArICcpJworCisgICAgZGVmIGNsZWFyX2ZsYWdzKHNlbGYpOgorICAgICAgICAiIiJSZXNldCBhbGwgZmxhZ3MgdG8gemVybyIiIgorICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgorICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKKworICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKKyAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCisKKyAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIHJldHVybiBuYworCisgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgorICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmNvcHkoKSwgc2VsZi50cmFwcy5jb3B5KCksCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQorICAgICAgICByZXR1cm4gbmMKKyAgICBfX2NvcHlfXyA9IGNvcHkKKworICAgIGRlZiBfcmFpc2VfZXJyb3Ioc2VsZiwgY29uZGl0aW9uLCBleHBsYW5hdGlvbiA9IE5vbmUsICphcmdzKToKKyAgICAgICAgIiIiSGFuZGxlcyBhbiBlcnJvcgorCisgICAgICAgIElmIHRoZSBmbGFnIGlzIGluIF9pZ25vcmVkX2ZsYWdzLCByZXR1cm5zIHRoZSBkZWZhdWx0IHJlc3BvbnNlLgorICAgICAgICBPdGhlcndpc2UsIGl0IHNldHMgdGhlIGZsYWcsIHRoZW4sIGlmIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHRyYXBfZW5hYmxlciBpcyBzZXQsIGl0IHJlcmFpc2VzIHRoZSBleGNlcHRpb24uICBPdGhlcndpc2UsIGl0IHJldHVybnMKKyAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgc2V0dGluZyB0aGUgZmxhZy4KKyAgICAgICAgIiIiCisgICAgICAgIGVycm9yID0gX2NvbmRpdGlvbl9tYXAuZ2V0KGNvbmRpdGlvbiwgY29uZGl0aW9uKQorICAgICAgICBpZiBlcnJvciBpbiBzZWxmLl9pZ25vcmVkX2ZsYWdzOgorICAgICAgICAgICAgIyBEb24ndCB0b3VjaCB0aGUgZmxhZworICAgICAgICAgICAgcmV0dXJuIGVycm9yKCkuaGFuZGxlKHNlbGYsICphcmdzKQorCisgICAgICAgIHNlbGYuZmxhZ3NbZXJyb3JdID0gMQorICAgICAgICBpZiBub3Qgc2VsZi50cmFwc1tlcnJvcl06CisgICAgICAgICAgICAjIFRoZSBlcnJvcnMgZGVmaW5lIGhvdyB0byBoYW5kbGUgdGhlbXNlbHZlcy4KKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24oKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCisKKyAgICAgICAgIyBFcnJvcnMgc2hvdWxkIG9ubHkgYmUgcmlza2VkIG9uIGNvcGllcyBvZiB0aGUgY29udGV4dAorICAgICAgICAjIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBbXQorICAgICAgICByYWlzZSBlcnJvcihleHBsYW5hdGlvbikKKworICAgIGRlZiBfaWdub3JlX2FsbF9mbGFncyhzZWxmKToKKyAgICAgICAgIiIiSWdub3JlIGFsbCBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pZ25vcmVfZmxhZ3MoKl9zaWduYWxzKQorCisgICAgZGVmIF9pZ25vcmVfZmxhZ3Moc2VsZiwgKmZsYWdzKToKKyAgICAgICAgIiIiSWdub3JlIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCisgICAgICAgICMgRG8gbm90IG11dGF0ZS0tIFRoaXMgd2F5LCBjb3BpZXMgb2YgYSBjb250ZXh0IGxlYXZlIHRoZSBvcmlnaW5hbAorICAgICAgICAjIGFsb25lLgorICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gKHNlbGYuX2lnbm9yZWRfZmxhZ3MgKyBsaXN0KGZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGxpc3QoZmxhZ3MpCisKKyAgICBkZWYgX3JlZ2FyZF9mbGFncyhzZWxmLCAqZmxhZ3MpOgorICAgICAgICAiIiJTdG9wIGlnbm9yaW5nIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCisgICAgICAgIGlmIGZsYWdzIGFuZCBpc2luc3RhbmNlKGZsYWdzWzBdLCAodHVwbGUsbGlzdCkpOgorICAgICAgICAgICAgZmxhZ3MgPSBmbGFnc1swXQorICAgICAgICBmb3IgZmxhZyBpbiBmbGFnczoKKyAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MucmVtb3ZlKGZsYWcpCisKKyAgICAjIFdlIGluaGVyaXQgb2JqZWN0Ll9faGFzaF9fLCBzbyB3ZSBtdXN0IGRlbnkgdGhpcyBleHBsaWNpdGx5CisgICAgX19oYXNoX18gPSBOb25lCisKKyAgICBkZWYgRXRpbnkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgRXRpbnkgKD0gRW1pbiAtIHByZWMgKyAxKSIiIgorICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1pbiAtIHNlbGYucHJlYyArIDEpCisKKyAgICBkZWYgRXRvcChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBtYXhpbXVtIGV4cG9uZW50ICg9IEVtYXggLSBwcmVjICsgMSkiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWxmLkVtYXggLSBzZWxmLnByZWMgKyAxKQorCisgICAgZGVmIF9zZXRfcm91bmRpbmcoc2VsZiwgdHlwZSk6CisgICAgICAgICIiIlNldHMgdGhlIHJvdW5kaW5nIHR5cGUuCisKKyAgICAgICAgU2V0cyB0aGUgcm91bmRpbmcgdHlwZSwgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgKHByZXZpb3VzKQorICAgICAgICByb3VuZGluZyB0eXBlLiAgT2Z0ZW4gdXNlZCBsaWtlOgorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQorICAgICAgICAjIHNvIHlvdSBkb24ndCBjaGFuZ2UgdGhlIGNhbGxpbmcgY29udGV4dAorICAgICAgICAjIGlmIGFuIGVycm9yIG9jY3VycyBpbiB0aGUgbWlkZGxlLgorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9VUCkKKyAgICAgICAgdmFsID0gc2VsZi5fX3N1Yl9fKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhyb3VuZGluZykKKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByb3VuZGluZyA9IHNlbGYucm91bmRpbmcKKyAgICAgICAgc2VsZi5yb3VuZGluZz0gdHlwZQorICAgICAgICByZXR1cm4gcm91bmRpbmcKKworICAgIGRlZiBjcmVhdGVfZGVjaW1hbChzZWxmLCBudW09JzAnKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGJ1dCB1c2luZyBzZWxmIGFzIGNvbnRleHQuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKKyAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi4iIiIKKworICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgbnVtICE9IG51bS5zdHJpcCgpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQorCisgICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhZ25vc3RpYyBpbmZvIHRvbyBsb25nIGluIE5hTiIpCisgICAgICAgIHJldHVybiBkLl9maXgoc2VsZikKKworICAgIGRlZiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KHNlbGYsIGYpOgorICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBhIGZsb2F0IGJ1dCByb3VuZGluZyB1c2luZyBzZWxmCisgICAgICAgIGFzIHRoZSBjb250ZXh0LgorCisgICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCisgICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQorICAgICAgICBEZWNpbWFsKCczLjE0MTUnKQorICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCisgICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgZGVjaW1hbC5JbmV4YWN0CisKKyAgICAgICAgIiIiCisgICAgICAgIGQgPSBEZWNpbWFsLmZyb21fZmxvYXQoZikgICAgICAgIyBBbiBleGFjdCBjb252ZXJzaW9uCisgICAgICAgIHJldHVybiBkLl9maXgoc2VsZikgICAgICAgICAgICAgIyBBcHBseSB0aGUgY29udGV4dCByb3VuZGluZworCisgICAgIyBNZXRob2RzCisgICAgZGVmIGFicyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgSWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcgdGhlIG1pbnVzCisgICAgICAgIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZworICAgICAgICB0aGUgcGx1cyBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicygtMSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5fX2Fic19fKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBhZGQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybiB0aGUgc3VtIG9mIHRoZSB0d28gb3BlcmFuZHMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnNy4wMCcpKQorICAgICAgICBEZWNpbWFsKCcxOS4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzFFKzInKSwgRGVjaW1hbCgnMS4wMUUrNCcpKQorICAgICAgICBEZWNpbWFsKCcxLjAyRSs0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoOCksIDUpCisgICAgICAgIERlY2ltYWwoJzEzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoNSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19hZGRfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX2FwcGx5KHNlbGYsIGEpOgorICAgICAgICByZXR1cm4gc3RyKGEuX2ZpeChzZWxmKSkKKworICAgIGRlZiBjYW5vbmljYWwoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCisKKyAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKKyAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMi41MCcpCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQorICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoKQorCisgICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHZhbHVlcyBudW1lcmljYWxseS4KKworICAgICAgICBJZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGRpZmZlciwgYSB2YWx1ZSByZXByZXNlbnRpbmcgZWFjaCBvcGVyYW5kCisgICAgICAgICgnLTEnIGlmIHRoZSBvcGVyYW5kIGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIG9wZXJhbmQgaXMgemVybyBvcgorICAgICAgICBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIHplcm8pIGlzIHVzZWQgaW4KKyAgICAgICAgcGxhY2Ugb2YgdGhhdCBvcGVyYW5kIGZvciB0aGUgY29tcGFyaXNvbiBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwKKyAgICAgICAgb3BlcmFuZC4KKworICAgICAgICBUaGUgY29tcGFyaXNvbiBpcyB0aGVuIGVmZmVjdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZWNvbmQgb3BlcmFuZCBmcm9tCisgICAgICAgIHRoZSBmaXJzdCBhbmQgdGhlbiByZXR1cm5pbmcgYSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCBvZiB0aGUKKyAgICAgICAgc3VidHJhY3Rpb246ICctMScgaWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSByZXN1bHQgaXMKKyAgICAgICAgemVybyBvciBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gemVyby4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnLTMnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCctMycpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgxKSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29tcGFyZShiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgb2YgdGhlIHR3byBvcGVyYW5kcyBudW1lcmljYWxseS4KKworICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZworICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dAorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgMAorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdOYU4nKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAxCisgICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgMAorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdzTmFOJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgMQorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKC0xKSwgMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29tcGFyZV9zaWduYWwoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbi4KKworICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCisgICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKKyAgICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi43MycpLCBEZWNpbWFsKCcxMjcuOScpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCctMTI3JyksICBEZWNpbWFsKCcxMicpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zMCcpLCBEZWNpbWFsKCcxMi4zJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnMTIuMzAwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWwoYikKKworICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIGlnbm9yaW5nIHNpZ24uCisKKyAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb21wYXJlX3RvdGFsX21hZyhiKQorCisgICAgZGVmIGNvcHlfYWJzKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldCB0byAwLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnLTEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKC0xKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvcHlfYWJzKCkKKworICAgIGRlZiBjb3B5X2RlY2ltYWwoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBkZWNpbWFsIG9iamVjdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnLTEuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbCgxKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBEZWNpbWFsKGEpCisKKyAgICBkZWYgY29weV9uZWdhdGUoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZShEZWNpbWFsKCcxMDEuNScpKQorICAgICAgICBEZWNpbWFsKCctMTAxLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJy0xMDEuNScpKQorICAgICAgICBEZWNpbWFsKCcxMDEuNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoMSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29weV9uZWdhdGUoKQorCisgICAgZGVmIGNvcHlfc2lnbihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29waWVzIHRoZSBzZWNvbmQgb3BlcmFuZCdzIHNpZ24gdG8gdGhlIGZpcnN0IG9uZS4KKworICAgICAgICBJbiBkZXRhaWwsIGl0IHJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24KKyAgICAgICAgZXF1YWwgdG8gdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoJy0xLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJy03LjMzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCAtMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKDEpLCAtMikKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29weV9zaWduKGIpCisKKyAgICBkZWYgZGl2aWRlKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJEZWNpbWFsIGRpdmlzaW9uIGluIGEgc3BlY2lmaWVkIGNvbnRleHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzAuMzMzMzMzMzMzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzAuNjY2NjY2NjY3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnNScpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzIuNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnMTInKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzguMDAnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCc0LjAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MDAnKSwgRGVjaW1hbCgnMi4wJykpCisgICAgICAgIERlY2ltYWwoJzEuMjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMDAwJyksIERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxMDAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MEUrNicpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzEuMjBFKzYnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCA1KQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCg1KSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIERlY2ltYWwoNSkpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX190cnVlZGl2X18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIGRpdmlkZV9pbnQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkRpdmlkZXMgdHdvIG51bWJlcnMgYW5kIHJldHVybnMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgMykKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKDEwKSwgMykKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgRGVjaW1hbCgzKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX2Zsb29yZGl2X18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIGRpdm1vZChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJuIChhIC8vIGIsIGEgJSBiKS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCBEZWNpbWFsKDMpKQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcyJykpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoNCkpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgNCkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCA0KQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIERlY2ltYWwoNCkpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fZGl2bW9kX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIGV4cChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBlICoqIGEuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy1JbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy0xJykpCisgICAgICAgIERlY2ltYWwoJzAuMzY3ODc5NDQxJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzIuNzE4MjgxODMnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMC42OTMxNDcxODEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcrSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5leHAoMTApCisgICAgICAgIERlY2ltYWwoJzIyMDI2LjQ2NTgnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9X2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5leHAoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGZtYShzZWxmLCBhLCBiLCBjKToKKyAgICAgICAgIiIiUmV0dXJucyBhIG11bHRpcGxpZWQgYnkgYiwgcGx1cyBjLgorCisgICAgICAgIFRoZSBmaXJzdCB0d28gb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHVzaW5nIG11bHRpcGx5LAorICAgICAgICB0aGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQgb2YgdGhhdAorICAgICAgICBtdWx0aXBsaWNhdGlvbiwgdXNpbmcgYWRkLCBhbGwgd2l0aCBvbmx5IG9uZSBmaW5hbCByb3VuZGluZy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCczJyksIERlY2ltYWwoJzUnKSwgRGVjaW1hbCgnNycpKQorICAgICAgICBEZWNpbWFsKCcyMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTUnKSwgRGVjaW1hbCgnNycpKQorICAgICAgICBEZWNpbWFsKCctOCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzg4ODU2NTI5MCcpLCBEZWNpbWFsKCcxNTU3Ljk2OTMwJyksIERlY2ltYWwoJy04NjA4Ny43NTc4JykpCisgICAgICAgIERlY2ltYWwoJzEuMzg0MzU3MzZFKzEyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgNCkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIERlY2ltYWwoMyksIDQpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCBEZWNpbWFsKDQpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmZtYShiLCBjLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cworICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaXNfY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQorICAgICAgICByZXR1cm4gYS5pc19jYW5vbmljYWwoKQorCisgICAgZGVmIGlzX2Zpbml0ZShzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEEgRGVjaW1hbCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGZpbml0ZSBpZiBpdCBpcyBuZWl0aGVyCisgICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnLTAuMycpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdJbmYnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKDEpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX2Zpbml0ZSgpCisKKyAgICBkZWYgaXNfaW5maW5pdGUoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGluZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19pbmZpbml0ZSgpCisKKyAgICBkZWYgaXNfbmFuKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHFOYU4gb3Igc05hTjsKKyAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJ05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJy1zTmFOJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX25hbigpCisKKyAgICBkZWYgaXNfbm9ybWFsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIG5vcm1hbCBudW1iZXI7CisgICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19ub3JtYWwoMSkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfbm9ybWFsKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBpc19xbmFuKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnTmFOJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19xbmFuKCkKKworICAgIGRlZiBpc19zaWduZWQoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTEyJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCg4KQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCgtOCkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfc2lnbmVkKCkKKworICAgIGRlZiBpc19zbmFuKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU47CisgICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnc05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbigxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfc25hbigpCisKKyAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMUUtOTk5JykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3N1Ym5vcm1hbChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgaXNfemVybyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCcwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJy0wRSsyJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygwKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc196ZXJvKCkKKworICAgIGRlZiBsbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxLjAwMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMi43MTgyODE4MycpKQorICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAwJykKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4zMDI1ODUwOScpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJytJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLmxuKDEpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG4oY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZzEwKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAuMDAxJykpCisgICAgICAgIERlY2ltYWwoJy0zJykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMS4wMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnNzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS44NDUwOTgwNCcpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJytJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLmxvZzEwKDApCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBjLmxvZzEwKDEpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9nMTAoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2Ioc2VsZiwgYSk6CisgICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGludGVnZXIgd2hpY2ggaXMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUKKyAgICAgICAgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgdGhlIG9wZXJhbmQgKGFzIHRob3VnaCB0aGUKKyAgICAgICAgb3BlcmFuZCB3ZXJlIHRydW5jYXRlZCB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUKKyAgICAgICAgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMjUwJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzAuMDMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMCkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMDApCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9nYihjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdhbmQnIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgorCisgICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxMTExJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZCgxMTAsIDExMDEpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgxMTApLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgRGVjaW1hbCgxMTAxKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2ljYWxfYW5kKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBhKToKKyAgICAgICAgIiIiSW52ZXJ0IGFsbCB0aGUgZGlnaXRzIGluIHRoZSBvcGVyYW5kLgorCisgICAgICAgIFRoZSBvcGVyYW5kIG11c3QgYmUgYSBsb2dpY2FsIG51bWJlci4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTExMTExMTExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzExMTExMTExMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTExMTExMTExJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEwMTAxMDEwMScpKQorICAgICAgICBEZWNpbWFsKCcxMDEwMTAxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTExMTEwMDEwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2dpY2FsX29yKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAnb3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgorCisgICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTExMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTEwJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzExMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoMTEwLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMTExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoMTEwKSwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTExMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIERlY2ltYWwoMTEwMSkpCisgICAgICAgIERlY2ltYWwoJzExMTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9naWNhbF9vcihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF94b3Ioc2VsZiwgYSwgYik6CisgICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICd4b3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgorCisgICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTEwMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKDExMCksIDExMDEpCisgICAgICAgIERlY2ltYWwoJzEwMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKDExMCwgRGVjaW1hbCgxMTAxKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX3hvcihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWF4KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJtYXggY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWF4aW11bS4KKworICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgorICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCisgICAgICAgIG9wZXJhdGlvbi4gIElmIHRoZXkgYXJlIG51bWVyaWNhbGx5IGVxdWFsIHRoZW4gdGhlIGxlZnQtaGFuZCBvcGVyYW5kCisgICAgICAgIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlIHRoZSBtYXhpbXVtIChjbG9zZXIgdG8gcG9zaXRpdmUKKyAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heCgxLCAyKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgxKSwgMikKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubWF4KGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtYXhfbWFnKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTEwJykpCisgICAgICAgIERlY2ltYWwoJy0xMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZygxLCAtMikKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgxKSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5tYXhfbWFnKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtaW4oc2VsZiwgYSwgYik6CisgICAgICAgICIiIm1pbiBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtaW5pbXVtLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKKyAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKKyAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1pbmltdW0gKGNsb3NlciB0byBuZWdhdGl2ZQorICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzEuMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbigxLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgxKSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIERlY2ltYWwoMjkpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1pbihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWluX21hZyhzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCctMycpLCBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnLTMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgLTIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgxKSwgLTIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubWluX21hZyhiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWludXMoc2VsZiwgYSk6CisgICAgICAgICIiIk1pbnVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBtaW51cyBpbiBQeXRob24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgc3VidHJhY3Q7IHRoZQorICAgICAgICBvcGVyYXRpb24gbWludXMoYSkgaXMgY2FsY3VsYXRlZCBhcyBzdWJ0cmFjdCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKKyAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnMS4zJykpCisgICAgICAgIERlY2ltYWwoJy0xLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKERlY2ltYWwoJy0xLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cygxKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5fX25lZ19fKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBtdWx0aXBseShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIibXVsdGlwbHkgbXVsdGlwbGllcyB0d28gb3BlcmFuZHMuCisKKyAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyCisgICAgICAgICgnbG9uZyBtdWx0aXBsaWNhdGlvbicpLCByZXN1bHRpbmcgaW4gYSBudW1iZXIgd2hpY2ggbWF5IGJlIGFzIGxvbmcgYXMKKyAgICAgICAgdGhlIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIG9wZXJhbmRzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMS4yMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzMuNjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcyMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMC45JyksIERlY2ltYWwoJzAuOCcpKQorICAgICAgICBEZWNpbWFsKCcwLjcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnLTAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNjU0MzIxJyksIERlY2ltYWwoJzY1NDMyMScpKQorICAgICAgICBEZWNpbWFsKCc0LjI4MTM1OTcxRSsxMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoNywgNykKKyAgICAgICAgRGVjaW1hbCgnNDknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoNyksIDcpCisgICAgICAgIERlY2ltYWwoJzQ5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCBEZWNpbWFsKDcpKQorICAgICAgICBEZWNpbWFsKCc0OScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX211bF9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBhLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKKyAgICAgICAgPj4+IGMubmV4dF9taW51cyhEZWNpbWFsKCcxRS0xMDA3JykpCisgICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfbWludXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDQnKQorICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJ0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJzkuOTk5OTk5OTlFKzk5OScpCisgICAgICAgID4+PiBjLm5leHRfbWludXMoMSkKKyAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubmV4dF9taW51cyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBhLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCisgICAgICAgID4+PiBjLm5leHRfcGx1cyhEZWNpbWFsKCctMUUtMTAwNycpKQorICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJy0xLjAwMDAwMDAzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDAyJykKKyAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy1JbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCctOS45OTk5OTk5OUUrOTk5JykKKyAgICAgICAgPj4+IGMubmV4dF9wbHVzKDEpCisgICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubmV4dF9wbHVzKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBuZXh0X3Rvd2FyZChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gYSwgaW4gZGlyZWN0aW9uIHRvd2FyZHMgYi4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGZyb20gdGhlIGZpcnN0CisgICAgICAgIG9wZXJhbmQgKGJ1dCBub3QgdGhlIGZpcnN0IG9wZXJhbmQpIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbgorICAgICAgICB0b3dhcmRzIHRoZSBzZWNvbmQgb3BlcmFuZCwgdW5sZXNzIHRoZSBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lCisgICAgICAgIHZhbHVlLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTFFLTEwMDcnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxRS0xMDA3JyksIERlY2ltYWwoJy0xMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJy0xMCcpKQorICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzAuMDAnKSwgRGVjaW1hbCgnLTAuMDAwMCcpKQorICAgICAgICBEZWNpbWFsKCctMC4wMCcpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKDAsIDEpCisgICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDApLCAxKQorICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgRGVjaW1hbCgxKSkKKyAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5uZXh0X3Rvd2FyZChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbm9ybWFsaXplKHNlbGYsIGEpOgorICAgICAgICAiIiJub3JtYWxpemUgcmVkdWNlcyBhbiBvcGVyYW5kIHRvIGl0cyBzaW1wbGVzdCBmb3JtLgorCisgICAgICAgIEVzc2VudGlhbGx5IGEgcGx1cyBvcGVyYXRpb24gd2l0aCBhbGwgdHJhaWxpbmcgemVyb3MgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICByZXN1bHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0yLjAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxLjIwMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCctMTIwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjJFKzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxMjAuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4yRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMC4wMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoNikKKyAgICAgICAgRGVjaW1hbCgnNicpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5ub3JtYWxpemUoY29udGV4dD1zZWxmKQorCisgICAgZGVmIG51bWJlcl9jbGFzcyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiB0aGUgb3BlcmFuZC4KKworICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKKyAgICAgICAgICAtc05hTgorICAgICAgICAgIC1OYU4KKyAgICAgICAgICAtSW5maW5pdHkKKyAgICAgICAgICAtTm9ybWFsCisgICAgICAgICAgLVN1Ym5vcm1hbAorICAgICAgICAgIC1aZXJvCisgICAgICAgICAgK1plcm8KKyAgICAgICAgICArU3Vibm9ybWFsCisgICAgICAgICAgK05vcm1hbAorICAgICAgICAgICtJbmZpbml0eQorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICAnK0luZmluaXR5JworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMUUtMTAnKSkKKyAgICAgICAgJytOb3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcyLjUwJykpCisgICAgICAgICcrTm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMC4xRS05OTknKSkKKyAgICAgICAgJytTdWJub3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwJykpCisgICAgICAgICcrWmVybycKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wJykpCisgICAgICAgICctWmVybycKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wLjFFLTk5OScpKQorICAgICAgICAnLVN1Ym5vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0xRS0xMCcpKQorICAgICAgICAnLU5vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0yLjUwJykpCisgICAgICAgICctTm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLUluZmluaXR5JykpCisgICAgICAgICctSW5maW5pdHknCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgJ05hTicKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy1OYU4nKSkKKyAgICAgICAgJ05hTicKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgJ3NOYU4nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcygxMjMpCisgICAgICAgICcrTm9ybWFsJworICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubnVtYmVyX2NsYXNzKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBwbHVzKHNlbGYsIGEpOgorICAgICAgICAiIiJQbHVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBwbHVzIGluIFB5dGhvbi4KKworICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBhZGQ7IHRoZQorICAgICAgICBvcGVyYXRpb24gcGx1cyhhKSBpcyBjYWxjdWxhdGVkIGFzIGFkZCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKKyAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cyhEZWNpbWFsKCcxLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJy0xLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cygtMSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19wb3NfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcG93ZXIoc2VsZiwgYSwgYiwgbW9kdWxvPU5vbmUpOgorICAgICAgICAiIiJSYWlzZXMgYSB0byB0aGUgcG93ZXIgb2YgYiwgdG8gbW9kdWxvIGlmIGdpdmVuLgorCisgICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBhKipiLiAgSWYgYSBpcyBuZWdhdGl2ZSB0aGVuIGIKKyAgICAgICAgbXVzdCBiZSBpbnRlZ3JhbC4gIFRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyBiIGlzCisgICAgICAgIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5CisgICAgICAgIGluICdwcmVjaXNpb24nIGRpZ2l0cy4KKworICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uICBGb3IgdGhlCisgICAgICAgIHRocmVlIGFyZ3VtZW50IGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZQorICAgICAgICBhcmd1bWVudHMgaG9sZDoKKworICAgICAgICAgLSBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWwKKyAgICAgICAgIC0gYiBtdXN0IGJlIG5vbm5lZ2F0aXZlCisgICAgICAgICAtIGF0IGxlYXN0IG9uZSBvZiBhIG9yIGIgbXVzdCBiZSBub256ZXJvCisgICAgICAgICAtIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGhhdmUgYXQgbW9zdCAncHJlY2lzaW9uJyBkaWdpdHMKKworICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhhLCBiLCBtb2R1bG8pIGlzIGlkZW50aWNhbCB0byB0aGUgcmVzdWx0CisgICAgICAgIHRoYXQgd291bGQgYmUgb2J0YWluZWQgYnkgY29tcHV0aW5nIChhKipiKSAlIG1vZHVsbyB3aXRoCisgICAgICAgIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlIGVmZmljaWVudGx5LiAgSXQgaXMKKyAgICAgICAgYWx3YXlzIGV4YWN0LgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCc4JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTInKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctOCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnLTMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4xMjUnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxLjcnKSwgRGVjaW1hbCgnOCcpKQorICAgICAgICBEZWNpbWFsKCc2OS43NTc1NzQ0JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJy0xJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJy0xJykpCisgICAgICAgIERlY2ltYWwoJy0wJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCisgICAgICAgIERlY2ltYWwoJzExJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQorICAgICAgICBEZWNpbWFsKCctMTEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc4JyksIERlY2ltYWwoJzE2JykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTE2JykpCisgICAgICAgIERlY2ltYWwoJzExJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMjNFMTIzNDUnKSwgRGVjaW1hbCgnNjdFMTg5JyksIERlY2ltYWwoJzEyMzQ1Njc4OScpKQorICAgICAgICBEZWNpbWFsKCcxMTcyOTgzMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzE3JyksIERlY2ltYWwoJzE3MjknKSkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMjMnKSwgRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCc2NTUzNycpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCA3KQorICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKERlY2ltYWwoNyksIDcpCisgICAgICAgIERlY2ltYWwoJzgyMzU0MycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgRGVjaW1hbCg3KSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX3Bvd19fKGIsIG1vZHVsbywgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIHF1YW50aXplKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gJ2EnIChyb3VuZGVkKSwgaGF2aW5nIHRoZSBleHBvbmVudCBvZiAnYicuCisKKyAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIGxlZnQtaGFuZAorICAgICAgICBvcGVyYW5kLiAgSXQgbWF5IGJlIHJvdW5kZWQgdXNpbmcgdGhlIGN1cnJlbnQgcm91bmRpbmcgc2V0dGluZyAoaWYgdGhlCisgICAgICAgIGV4cG9uZW50IGlzIGJlaW5nIGluY3JlYXNlZCksIG11bHRpcGxpZWQgYnkgYSBwb3NpdGl2ZSBwb3dlciBvZiB0ZW4gKGlmCisgICAgICAgIHRoZSBleHBvbmVudCBpcyBiZWluZyBkZWNyZWFzZWQpLCBvciBpcyB1bmNoYW5nZWQgKGlmIHRoZSBleHBvbmVudCBpcworICAgICAgICBhbHJlYWR5IGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCkuCisKKyAgICAgICAgVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZQorICAgICAgICBxdWFudGl6ZSBvcGVyYXRpb24gd291bGQgYmUgZ3JlYXRlciB0aGFuIHByZWNpc2lvbiB0aGVuIGFuIEludmFsaWQKKyAgICAgICAgb3BlcmF0aW9uIGNvbmRpdGlvbiBpcyByYWlzZWQuICBUaGlzIGd1YXJhbnRlZXMgdGhhdCwgdW5sZXNzIHRoZXJlIGlzCisgICAgICAgIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgb2YgYSBxdWFudGl6ZSBpcyBhbHdheXMKKyAgICAgICAgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kLgorCisgICAgICAgIEFsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIHdpbGwgbmV2ZXIgcmFpc2UgVW5kZXJmbG93LCBldmVuCisgICAgICAgIGlmIHRoZSByZXN1bHQgaXMgc3Vibm9ybWFsIGFuZCBpbmV4YWN0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQorICAgICAgICBEZWNpbWFsKCcyLjE3MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCisgICAgICAgIERlY2ltYWwoJzIuMTcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSswJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMWUrMScpKQorICAgICAgICBEZWNpbWFsKCcwRSsxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctSW5mJyksIERlY2ltYWwoJ0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0wLjEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMWUrNScpKQorICAgICAgICBEZWNpbWFsKCctMEUrNScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnKzM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0zNTIzNjQ1MC42JyksIERlY2ltYWwoJzFlLTInKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMScpKQorICAgICAgICBEZWNpbWFsKCcyMTcuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMjE3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUrMScpKQorICAgICAgICBEZWNpbWFsKCcyLjJFKzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsyJykpCisgICAgICAgIERlY2ltYWwoJzJFKzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEucXVhbnRpemUoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIHJhZGl4KHNlbGYpOgorICAgICAgICAiIiJKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikKKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJhZGl4KCkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoMTApCisKKyAgICBkZWYgcmVtYWluZGVyKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIHJlc2lkdWUgb2YgdGhlIGRpdmlkZW5kIGFmdGVyIHRoZSBvcGVyYXRpb24gb2YKKyAgICAgICAgY2FsY3VsYXRpbmcgaW50ZWdlciBkaXZpc2lvbiBhcyBkZXNjcmliZWQgZm9yIGRpdmlkZS1pbnRlZ2VyLCByb3VuZGVkCisgICAgICAgIHRvIHByZWNpc2lvbiBkaWdpdHMgaWYgbmVjZXNzYXJ5LiAgVGhlIHNpZ24gb2YgdGhlIHJlc3VsdCwgaWYKKyAgICAgICAgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLgorCisgICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KKyAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQorICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzAuMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMycpKQorICAgICAgICBEZWNpbWFsKCcwLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCA2KQorICAgICAgICBEZWNpbWFsKCc0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgyMiksIDYpCisgICAgICAgIERlY2ltYWwoJzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcigyMiwgRGVjaW1hbCg2KSkKKyAgICAgICAgRGVjaW1hbCgnNCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX21vZF9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyB0byBiZSAiYSAtIGIgKiBuIiwgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRoZSBleGFjdAorICAgICAgICB2YWx1ZSBvZiAieCAvIGIiIChpZiB0d28gaW50ZWdlcnMgYXJlIGVxdWFsbHkgbmVhciB0aGVuIHRoZSBldmVuIG9uZQorICAgICAgICBpcyBjaG9zZW4pLiAgSWYgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUKKyAgICAgICAgc2lnbiBvZiBhLgorCisgICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KKyAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQorICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuOScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnNicpKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzAuMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCisgICAgICAgIERlY2ltYWwoJzAuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMy42JyksIERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCctMC4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcigzLCAxMSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgzKSwgMTEpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIERlY2ltYWwoMTEpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnJlbWFpbmRlcl9uZWFyKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiByb3RhdGUoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2YgYSwgYiB0aW1lcy4KKworICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBhIHJvdGF0ZWQgY29weSBvZiB0aGUgZGlnaXRzIGluCisgICAgICAgIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4gIFRoZSBudW1iZXIgb2YgcGxhY2VzIG9mCisgICAgICAgIHJvdGF0aW9uIGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKKyAgICAgICAgd2l0aCB0aGUgcm90YXRpb24gYmVpbmcgdG8gdGhlIGxlZnQgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzCisgICAgICAgIHBvc2l0aXZlIG9yIHRvIHRoZSByaWdodCBvdGhlcndpc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQorICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCisgICAgICAgIERlY2ltYWwoJzEyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCisgICAgICAgIERlY2ltYWwoJzg5MTIzNDU2NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQorICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCAxKQorICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoMTMzMzMzMyksIDEpCisgICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgRGVjaW1hbCgxKSkKKyAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEucm90YXRlKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyBuZXZlciBhZmZlY3RlZCBieSBlaXRoZXIgdGhlIHNpZ24gb3IgdGhlIGNvZWZmaWNpZW50IG9mCisgICAgICAgIGVpdGhlciBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMDEnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJ0luZicpLCBEZWNpbWFsKCctSW5mJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oMTAwMDAsIC0xKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMDApLCAtMSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgRGVjaW1hbCgtMSkpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNhbWVfcXVhbnR1bShiKQorCisgICAgZGVmIHNjYWxlYiAoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgaXRzIGV4cC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJy0yJykpCisgICAgICAgIERlY2ltYWwoJzAuMDc1MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCc3LjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzcuNTBFKzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYigxLCA0KQorICAgICAgICBEZWNpbWFsKCcxRSs0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgxKSwgNCkKKyAgICAgICAgRGVjaW1hbCgnMUUrNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIERlY2ltYWwoNCkpCisgICAgICAgIERlY2ltYWwoJzFFKzQnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuc2NhbGViKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBzaGlmdChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgorCisgICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgc2hpZnRlZCBjb3B5IG9mIHRoZSBkaWdpdHMKKyAgICAgICAgaW4gdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMKKyAgICAgICAgdG8gc2hpZnQgaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAorICAgICAgICB3aXRoIHRoZSBzaGlmdCBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKKyAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4gIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlCisgICAgICAgIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzM0JyksIERlY2ltYWwoJzgnKSkKKyAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCcxMjM0NTY3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQorICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCAyKQorICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoODg4ODg4ODgpLCAyKQorICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuc2hpZnQoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIHNxcnQoc2VsZiwgYSk6CisgICAgICAgICIiIlNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi4KKworICAgICAgICBJZiB0aGUgcmVzdWx0IG11c3QgYmUgaW5leGFjdCwgaXQgaXMgcm91bmRlZCB1c2luZyB0aGUgcm91bmQtaGFsZi1ldmVuCisgICAgICAgIGFsZ29yaXRobS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJy0wJykpCisgICAgICAgIERlY2ltYWwoJy0wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzAuMzknKSkKKyAgICAgICAgRGVjaW1hbCgnMC42MjQ0OTk4MDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxLjAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzcnKSkKKyAgICAgICAgRGVjaW1hbCgnMi42NDU3NTEzMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCczLjE2MjI3NzY2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KDIpCisgICAgICAgIERlY2ltYWwoJzEuNDE0MjEzNTYnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnByZWMKKyAgICAgICAgOQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuc3FydChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gb3BlcmFuZHMuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4wNycpKQorICAgICAgICBEZWNpbWFsKCcwLjIzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4zMCcpKQorICAgICAgICBEZWNpbWFsKCcwLjAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMi4wNycpKQorICAgICAgICBEZWNpbWFsKCctMC43NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgNSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCg4KSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgRGVjaW1hbCg1KSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX3N1Yl9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGEpOgorICAgICAgICAiIiJDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi4KKworICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnRvX2VuZ19zdHJpbmcoY29udGV4dD1zZWxmKQorCisgICAgZGVmIHRvX3NjaV9zdHJpbmcoc2VsZiwgYSk6CisgICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgorCisgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19zdHJfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgYSk6CisgICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgorCisgICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQorICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgorICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmc7IEluZXhhY3QgYW5kIFJvdW5kZWQgZmxhZ3MKKyAgICAgICAgYXJlIGFsbG93ZWQgaW4gdGhpcyBvcGVyYXRpb24uICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZQorICAgICAgICBjb250ZXh0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMC4wJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTBFKzUnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCc3Ljg5RSs3NycpKQorICAgICAgICBEZWNpbWFsKCc3Ljg5RSs3NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEudG9faW50ZWdyYWxfZXhhY3QoY29udGV4dD1zZWxmKQorCisgICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIGEpOgorICAgICAgICAiIiJSb3VuZHMgdG8gYW4gaW50ZWdlci4KKworICAgICAgICBXaGVuIHRoZSBvcGVyYW5kIGhhcyBhIG5lZ2F0aXZlIGV4cG9uZW50LCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHVzaW5nIHRoZSBxdWFudGl6ZSgpIG9wZXJhdGlvbiB1c2luZyB0aGUgZ2l2ZW4gb3BlcmFuZCBhcyB0aGUKKyAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KKyAgICAgICAgb2YgdGhlIG9wZXJhbmQgYXMgdGhlIHByZWNpc2lvbiBzZXR0aW5nLCBleGNlcHQgdGhhdCBubyBmbGFncyB3aWxsCisgICAgICAgIGJlIHNldC4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlIGNvbnRleHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwLjAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDEuNScpKQorICAgICAgICBEZWNpbWFsKCcxMDInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy0xMDEuNScpKQorICAgICAgICBEZWNpbWFsKCctMTAyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMEUrNScpKQorICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzcuODlFKzc3JykpCisgICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCctSW5mJykpCisgICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF92YWx1ZShjb250ZXh0PXNlbGYpCisKKyAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQorICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKKworY2xhc3MgX1dvcmtSZXAob2JqZWN0KToKKyAgICBfX3Nsb3RzX18gPSAoJ3NpZ24nLCdpbnQnLCdleHAnKQorICAgICMgc2lnbjogMCBvciAxCisgICAgIyBpbnQ6ICBpbnQKKyAgICAjIGV4cDogIE5vbmUsIGludCwgb3Igc3RyaW5nCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9Tm9uZSk6CisgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNpZ24gPSBOb25lCisgICAgICAgICAgICBzZWxmLmludCA9IDAKKyAgICAgICAgICAgIHNlbGYuZXhwID0gTm9uZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIERlY2ltYWwpOgorICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWUuX3NpZ24KKyAgICAgICAgICAgIHNlbGYuaW50ID0gaW50KHZhbHVlLl9pbnQpCisgICAgICAgICAgICBzZWxmLmV4cCA9IHZhbHVlLl9leHAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKQorICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWVbMF0KKyAgICAgICAgICAgIHNlbGYuaW50ID0gdmFsdWVbMV0KKyAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWVbMl0KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIoJXIsICVyLCAlcikiICUgKHNlbGYuc2lnbiwgc2VsZi5pbnQsIHNlbGYuZXhwKQorCisgICAgX19zdHJfXyA9IF9fcmVwcl9fCisKKworCitkZWYgX25vcm1hbGl6ZShvcDEsIG9wMiwgcHJlYyA9IDApOgorICAgICIiIk5vcm1hbGl6ZXMgb3AxLCBvcDIgdG8gaGF2ZSB0aGUgc2FtZSBleHAgYW5kIGxlbmd0aCBvZiBjb2VmZmljaWVudC4KKworICAgIERvbmUgZHVyaW5nIGFkZGl0aW9uLgorICAgICIiIgorICAgIGlmIG9wMS5leHAgPCBvcDIuZXhwOgorICAgICAgICB0bXAgPSBvcDIKKyAgICAgICAgb3RoZXIgPSBvcDEKKyAgICBlbHNlOgorICAgICAgICB0bXAgPSBvcDEKKyAgICAgICAgb3RoZXIgPSBvcDIKKworICAgICMgTGV0IGV4cCA9IG1pbih0bXAuZXhwIC0gMSwgdG1wLmFkanVzdGVkKCkgLSBwcmVjaXNpb24gLSAxKS4KKyAgICAjIFRoZW4gYWRkaW5nIDEwKipleHAgdG8gdG1wIGhhcyB0aGUgc2FtZSBlZmZlY3QgKGFmdGVyIHJvdW5kaW5nKQorICAgICMgYXMgYWRkaW5nIGFueSBwb3NpdGl2ZSBxdWFudGl0eSBzbWFsbGVyIHRoYW4gMTAqKmV4cDsgc2ltaWxhcmx5CisgICAgIyBmb3Igc3VidHJhY3Rpb24uICBTbyBpZiBvdGhlciBpcyBzbWFsbGVyIHRoYW4gMTAqKmV4cCB3ZSByZXBsYWNlCisgICAgIyBpdCB3aXRoIDEwKipleHAuICBUaGlzIGF2b2lkcyB0bXAuZXhwIC0gb3RoZXIuZXhwIGdldHRpbmcgdG9vIGxhcmdlLgorICAgIHRtcF9sZW4gPSBsZW4oc3RyKHRtcC5pbnQpKQorICAgIG90aGVyX2xlbiA9IGxlbihzdHIob3RoZXIuaW50KSkKKyAgICBleHAgPSB0bXAuZXhwICsgbWluKC0xLCB0bXBfbGVuIC0gcHJlYyAtIDIpCisgICAgaWYgb3RoZXJfbGVuICsgb3RoZXIuZXhwIC0gMSA8IGV4cDoKKyAgICAgICAgb3RoZXIuaW50ID0gMQorICAgICAgICBvdGhlci5leHAgPSBleHAKKworICAgIHRtcC5pbnQgKj0gMTAgKiogKHRtcC5leHAgLSBvdGhlci5leHApCisgICAgdG1wLmV4cCA9IG90aGVyLmV4cAorICAgIHJldHVybiBvcDEsIG9wMgorCisjIyMjIyBJbnRlZ2VyIGFyaXRobWV0aWMgZnVuY3Rpb25zIHVzZWQgYnkgbG4sIGxvZzEwLCBleHAgYW5kIF9fcG93X18gIyMjIyMKKworX25iaXRzID0gaW50LmJpdF9sZW5ndGgKKworZGVmIF9kZWNpbWFsX2xzaGlmdF9leGFjdChuLCBlKToKKyAgICAiIiIgR2l2ZW4gaW50ZWdlcnMgbiBhbmQgZSwgcmV0dXJuIG4gKiAxMCoqZSBpZiBpdCdzIGFuIGludGVnZXIsIGVsc2UgTm9uZS4KKworICAgIFRoZSBjb21wdXRhdGlvbiBpcyBkZXNpZ25lZCB0byBhdm9pZCBjb21wdXRpbmcgbGFyZ2UgcG93ZXJzIG9mIDEwCisgICAgdW5uZWNlc3NhcmlseS4KKworICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMywgNCkKKyAgICAzMDAwMAorICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMzAwLCAtOTk5OTk5OTk5KSAgIyByZXR1cm5zIE5vbmUKKworICAgICIiIgorICAgIGlmIG4gPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGUgPj0gMDoKKyAgICAgICAgcmV0dXJuIG4gKiAxMCoqZQorICAgIGVsc2U6CisgICAgICAgICMgdmFsX24gPSBsYXJnZXN0IHBvd2VyIG9mIDEwIGRpdmlkaW5nIG4uCisgICAgICAgIHN0cl9uID0gc3RyKGFicyhuKSkKKyAgICAgICAgdmFsX24gPSBsZW4oc3RyX24pIC0gbGVuKHN0cl9uLnJzdHJpcCgnMCcpKQorICAgICAgICByZXR1cm4gTm9uZSBpZiB2YWxfbiA8IC1lIGVsc2UgbiAvLyAxMCoqLWUKKworZGVmIF9zcXJ0X25lYXJlc3QobiwgYSk6CisgICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcG9zaXRpdmUgaW50ZWdlciBuLiAgYSBpcworICAgIGFuIGluaXRpYWwgYXBwcm94aW1hdGlvbiB0byB0aGUgc3F1YXJlIHJvb3QuICBBbnkgcG9zaXRpdmUgaW50ZWdlcgorICAgIHdpbGwgZG8gZm9yIGEsIGJ1dCB0aGUgY2xvc2VyIGEgaXMgdG8gdGhlIHNxdWFyZSByb290IG9mIG4gdGhlCisgICAgZmFzdGVyIGNvbnZlcmdlbmNlIHdpbGwgYmUuCisKKyAgICAiIiIKKyAgICBpZiBuIDw9IDAgb3IgYSA8PSAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCb3RoIGFyZ3VtZW50cyB0byBfc3FydF9uZWFyZXN0IHNob3VsZCBiZSBwb3NpdGl2ZS4iKQorCisgICAgYj0wCisgICAgd2hpbGUgYSAhPSBiOgorICAgICAgICBiLCBhID0gYSwgYS0tbi8vYT4+MQorICAgIHJldHVybiBhCisKK2RlZiBfcnNoaWZ0X25lYXJlc3QoeCwgc2hpZnQpOgorICAgICIiIkdpdmVuIGFuIGludGVnZXIgeCBhbmQgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIHNoaWZ0LCByZXR1cm4gY2xvc2VzdAorICAgIGludGVnZXIgdG8geCAvIDIqKnNoaWZ0OyB1c2Ugcm91bmQtdG8tZXZlbiBpbiBjYXNlIG9mIGEgdGllLgorCisgICAgIiIiCisgICAgYiwgcSA9IDEgPDwgc2hpZnQsIHggPj4gc2hpZnQKKyAgICByZXR1cm4gcSArICgyKih4ICYgKGItMSkpICsgKHEmMSkgPiBiKQorCitkZWYgX2Rpdl9uZWFyZXN0KGEsIGIpOgorICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byBhL2IsIGEgYW5kIGIgcG9zaXRpdmUgaW50ZWdlcnM7IHJvdW5kcyB0byBldmVuCisgICAgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCisKKyAgICAiIiIKKyAgICBxLCByID0gZGl2bW9kKGEsIGIpCisgICAgcmV0dXJuIHEgKyAoMipyICsgKHEmMSkgPiBiKQorCitkZWYgX2lsb2coeCwgTSwgTCA9IDgpOgorICAgICIiIkludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmxvZyh4L00pLCB3aXRoIGFic29sdXRlIGVycm9yIGJvdW5kYWJsZQorICAgIGluIHRlcm1zIG9ubHkgb2YgeC9NLgorCisgICAgR2l2ZW4gcG9zaXRpdmUgaW50ZWdlcnMgeCBhbmQgTSwgcmV0dXJuIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0bworICAgIE0gKiBsb2coeC9NKS4gIEZvciBMID0gOCBhbmQgMC4xIDw9IHgvTSA8PSAxMCB0aGUgZGlmZmVyZW5jZQorICAgIGJldHdlZW4gdGhlIGFwcHJveGltYXRpb24gYW5kIHRoZSBleGFjdCByZXN1bHQgaXMgYXQgbW9zdCAyMi4gIEZvcgorICAgIEwgPSA4IGFuZCAxLjAgPD0geC9NIDw9IDEwLjAgdGhlIGRpZmZlcmVuY2UgaXMgYXQgbW9zdCAxNS4gIEluCisgICAgYm90aCBjYXNlcyB0aGVzZSBhcmUgdXBwZXIgYm91bmRzIG9uIHRoZSBlcnJvcjsgaXQgd2lsbCB1c3VhbGx5IGJlCisgICAgbXVjaCBzbWFsbGVyLiIiIgorCisgICAgIyBUaGUgYmFzaWMgYWxnb3JpdGhtIGlzIHRoZSBmb2xsb3dpbmc6IGxldCBsb2cxcCBiZSB0aGUgZnVuY3Rpb24KKyAgICAjIGxvZzFwKHgpID0gbG9nKDEreCkuICBUaGVuIGxvZyh4L00pID0gbG9nMXAoKHgtTSkvTSkuICBXZSB1c2UKKyAgICAjIHRoZSByZWR1Y3Rpb24KKyAgICAjCisgICAgIyAgICBsb2cxcCh5KSA9IDIqbG9nMXAoeS8oMStzcXJ0KDEreSkpKQorICAgICMKKyAgICAjIHJlcGVhdGVkbHkgdW50aWwgdGhlIGFyZ3VtZW50IHRvIGxvZzFwIGlzIHNtYWxsICg8IDIqKi1MIGluCisgICAgIyBhYnNvbHV0ZSB2YWx1ZSkuICBGb3Igc21hbGwgeSB3ZSBjYW4gdXNlIHRoZSBUYXlsb3Igc2VyaWVzCisgICAgIyBleHBhbnNpb24KKyAgICAjCisgICAgIyAgICBsb2cxcCh5KSB+IHkgLSB5KioyLzIgKyB5KiozLzMgLSAuLi4gLSAoLXkpKipUL1QKKyAgICAjCisgICAgIyB0cnVuY2F0aW5nIGF0IFQgc3VjaCB0aGF0IHkqKlQgaXMgc21hbGwgZW5vdWdoLiAgVGhlIHdob2xlCisgICAgIyBjb21wdXRhdGlvbiBpcyBjYXJyaWVkIG91dCBpbiBhIGZvcm0gb2YgZml4ZWQtcG9pbnQgYXJpdGhtZXRpYywKKyAgICAjIHdpdGggYSByZWFsIG51bWJlciB6IGJlaW5nIHJlcHJlc2VudGVkIGJ5IGFuIGludGVnZXIKKyAgICAjIGFwcHJveGltYXRpb24gdG8geipNLiAgVG8gYXZvaWQgbG9zcyBvZiBwcmVjaXNpb24sIHRoZSB5IGJlbG93CisgICAgIyBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gMioqUip5Kk0sIHdoZXJlIFIgaXMgdGhlCisgICAgIyBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQgc28gZmFyLgorCisgICAgeSA9IHgtTQorICAgICMgYXJndW1lbnQgcmVkdWN0aW9uOyBSID0gbnVtYmVyIG9mIHJlZHVjdGlvbnMgcGVyZm9ybWVkCisgICAgUiA9IDAKKyAgICB3aGlsZSAoUiA8PSBMIGFuZCBhYnMoeSkgPDwgTC1SID49IE0gb3IKKyAgICAgICAgICAgUiA+IEwgYW5kIGFicyh5KSA+PiBSLUwgPj0gTSk6CisgICAgICAgIHkgPSBfZGl2X25lYXJlc3QoKE0qeSkgPDwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBNICsgX3NxcnRfbmVhcmVzdChNKihNK19yc2hpZnRfbmVhcmVzdCh5LCBSKSksIE0pKQorICAgICAgICBSICs9IDEKKworICAgICMgVGF5bG9yIHNlcmllcyB3aXRoIFQgdGVybXMKKyAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQorICAgIHlzaGlmdCA9IF9yc2hpZnRfbmVhcmVzdCh5LCBSKQorICAgIHcgPSBfZGl2X25lYXJlc3QoTSwgVCkKKyAgICBmb3IgayBpbiByYW5nZShULTEsIDAsIC0xKToKKyAgICAgICAgdyA9IF9kaXZfbmVhcmVzdChNLCBrKSAtIF9kaXZfbmVhcmVzdCh5c2hpZnQqdywgTSkKKworICAgIHJldHVybiBfZGl2X25lYXJlc3Qodyp5LCBNKQorCitkZWYgX2Rsb2cxMChjLCBlLCBwKToKKyAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIHAgPj0gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCisgICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZzEwKGMqMTAqKmUpLCB3aXRoIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgYXQgbW9zdCAxLiAgQXNzdW1lcyB0aGF0IGMqMTAqKmUgaXMgbm90IGV4YWN0bHkgMS4iIiIKKworICAgICMgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDI7IGNvbXBlbnNhdGUgZm9yIHRoaXMgYnkgZGl2aWRpbmcKKyAgICAjIGZpbmFsIHJlc3VsdCBieSAxMDAKKyAgICBwICs9IDIKKworICAgICMgd3JpdGUgYyoxMCoqZSBhcyBkKjEwKipmIHdpdGggZWl0aGVyOgorICAgICMgICBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwgb3IKKyAgICAjICAgZiA8PSAwIGFuZCAwLjEgPD0gZCA8PSAxLgorICAgICMgVGh1cyBmb3IgYyoxMCoqZSBjbG9zZSB0byAxLCBmID0gMAorICAgIGwgPSBsZW4oc3RyKGMpKQorICAgIGYgPSBlK2wgLSAoZStsID49IDEpCisKKyAgICBpZiBwID4gMDoKKyAgICAgICAgTSA9IDEwKipwCisgICAgICAgIGsgPSBlK3AtZgorICAgICAgICBpZiBrID49IDA6CisgICAgICAgICAgICBjICo9IDEwKiprCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykKKworICAgICAgICBsb2dfZCA9IF9pbG9nKGMsIE0pICMgZXJyb3IgPCA1ICsgMjIgPSAyNworICAgICAgICBsb2dfMTAgPSBfbG9nMTBfZGlnaXRzKHApICMgZXJyb3IgPCAxCisgICAgICAgIGxvZ19kID0gX2Rpdl9uZWFyZXN0KGxvZ19kKk0sIGxvZ18xMCkKKyAgICAgICAgbG9nX3RlbnBvd2VyID0gZipNICMgZXhhY3QKKyAgICBlbHNlOgorICAgICAgICBsb2dfZCA9IDAgICMgZXJyb3IgPCAyLjMxCisgICAgICAgIGxvZ190ZW5wb3dlciA9IF9kaXZfbmVhcmVzdChmLCAxMCoqLXApICMgZXJyb3IgPCAwLjUKKworICAgIHJldHVybiBfZGl2X25lYXJlc3QobG9nX3RlbnBvd2VyK2xvZ19kLCAxMDApCisKK2RlZiBfZGxvZyhjLCBlLCBwKToKKyAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIGNvbXB1dGUgYW4gaW50ZWdlcgorICAgIGFwcHJveGltYXRpb24gdG8gMTAqKnAgKiBsb2coYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKKyAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgorCisgICAgIyBJbmNyZWFzZSBwcmVjaXNpb24gYnkgMi4gVGhlIHByZWNpc2lvbiBpbmNyZWFzZSBpcyBjb21wZW5zYXRlZAorICAgICMgZm9yIGF0IHRoZSBlbmQgd2l0aCBhIGRpdmlzaW9uIGJ5IDEwMC4KKyAgICBwICs9IDIKKworICAgICMgcmV3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXIgZiA+PSAwIGFuZCAxIDw9IGQgPD0gMTAsCisgICAgIyBvciBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuICBUaGVuIHdlIGNhbiBjb21wdXRlIDEwKipwICogbG9nKGMqMTAqKmUpCisgICAgIyBhcyAxMCoqcCAqIGxvZyhkKSArIDEwKipwKmYgKiBsb2coMTApLgorICAgIGwgPSBsZW4oc3RyKGMpKQorICAgIGYgPSBlK2wgLSAoZStsID49IDEpCisKKyAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byAxMCoqcCpsb2coZCksIHdpdGggZXJyb3IgPCAyNworICAgIGlmIHAgPiAwOgorICAgICAgICBrID0gZStwLWYKKyAgICAgICAgaWYgayA+PSAwOgorICAgICAgICAgICAgYyAqPSAxMCoqaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYyA9IF9kaXZfbmVhcmVzdChjLCAxMCoqLWspICAjIGVycm9yIG9mIDw9IDAuNSBpbiBjCisKKyAgICAgICAgIyBfaWxvZyBtYWduaWZpZXMgZXhpc3RpbmcgZXJyb3IgaW4gYyBieSBhIGZhY3RvciBvZiBhdCBtb3N0IDEwCisgICAgICAgIGxvZ19kID0gX2lsb2coYywgMTAqKnApICMgZXJyb3IgPCA1ICsgMjIgPSAyNworICAgIGVsc2U6CisgICAgICAgICMgcCA8PSAwOiBqdXN0IGFwcHJveGltYXRlIHRoZSB3aG9sZSB0aGluZyBieSAwOyBlcnJvciA8IDIuMzEKKyAgICAgICAgbG9nX2QgPSAwCisKKyAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byBmKjEwKipwKmxvZygxMCksIHdpdGggZXJyb3IgPCAxMS4KKyAgICBpZiBmOgorICAgICAgICBleHRyYSA9IGxlbihzdHIoYWJzKGYpKSktMQorICAgICAgICBpZiBwICsgZXh0cmEgPj0gMDoKKyAgICAgICAgICAgICMgZXJyb3IgaW4gZiAqIF9sb2cxMF9kaWdpdHMocCtleHRyYSkgPCB8ZnwgKiAxID0gfGZ8CisgICAgICAgICAgICAjIGFmdGVyIGRpdmlzaW9uLCBlcnJvciA8IHxmfC8xMCoqZXh0cmEgKyAwLjUgPCAxMCArIDAuNSA8IDExCisgICAgICAgICAgICBmX2xvZ190ZW4gPSBfZGl2X25lYXJlc3QoZipfbG9nMTBfZGlnaXRzKHArZXh0cmEpLCAxMCoqZXh0cmEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmX2xvZ190ZW4gPSAwCisgICAgZWxzZToKKyAgICAgICAgZl9sb2dfdGVuID0gMAorCisgICAgIyBlcnJvciBpbiBzdW0gPCAxMSsyNyA9IDM4OyBlcnJvciBhZnRlciBkaXZpc2lvbiA8IDAuMzggKyAwLjUgPCAxCisgICAgcmV0dXJuIF9kaXZfbmVhcmVzdChmX2xvZ190ZW4gKyBsb2dfZCwgMTAwKQorCitjbGFzcyBfTG9nMTBNZW1vaXplKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgdG8gY29tcHV0ZSwgc3RvcmUsIGFuZCBhbGxvdyByZXRyaWV2YWwgb2YsIGRpZ2l0cyBvZiB0aGUKKyAgICBjb25zdGFudCBsb2coMTApID0gMi4zMDI1ODUuLi4uICBUaGlzIGNvbnN0YW50IGlzIG5lZWRlZCBieQorICAgIERlY2ltYWwubG4sIERlY2ltYWwubG9nMTAsIERlY2ltYWwuZXhwIGFuZCBEZWNpbWFsLl9fcG93X18uIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmRpZ2l0cyA9ICIyMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA3NjAxMTAxNDg4NiIKKworICAgIGRlZiBnZXRkaWdpdHMoc2VsZiwgcCk6CisgICAgICAgICIiIkdpdmVuIGFuIGludGVnZXIgcCA+PSAwLCByZXR1cm4gZmxvb3IoMTAqKnApKmxvZygxMCkuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGYuZ2V0ZGlnaXRzKDMpIHJldHVybnMgMjMwMi4KKyAgICAgICAgIiIiCisgICAgICAgICMgZGlnaXRzIGFyZSBzdG9yZWQgYXMgYSBzdHJpbmcsIGZvciBxdWljayBjb252ZXJzaW9uIHRvCisgICAgICAgICMgaW50ZWdlciBpbiB0aGUgY2FzZSB0aGF0IHdlJ3ZlIGFscmVhZHkgY29tcHV0ZWQgZW5vdWdoCisgICAgICAgICMgZGlnaXRzOyB0aGUgc3RvcmVkIGRpZ2l0cyBzaG91bGQgYWx3YXlzIGJlIGNvcnJlY3QKKyAgICAgICAgIyAodHJ1bmNhdGVkLCBub3Qgcm91bmRlZCB0byBuZWFyZXN0KS4KKyAgICAgICAgaWYgcCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwIHNob3VsZCBiZSBub25uZWdhdGl2ZSIpCisKKyAgICAgICAgaWYgcCA+PSBsZW4oc2VsZi5kaWdpdHMpOgorICAgICAgICAgICAgIyBjb21wdXRlIHArMywgcCs2LCBwKzksIC4uLiBkaWdpdHM7IGNvbnRpbnVlIHVudGlsIGF0CisgICAgICAgICAgICAjIGxlYXN0IG9uZSBvZiB0aGUgZXh0cmEgZGlnaXRzIGlzIG5vbnplcm8KKyAgICAgICAgICAgIGV4dHJhID0gMworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAjIGNvbXB1dGUgcCtleHRyYSBkaWdpdHMsIGNvcnJlY3QgdG8gd2l0aGluIDF1bHAKKyAgICAgICAgICAgICAgICBNID0gMTAqKihwK2V4dHJhKzIpCisgICAgICAgICAgICAgICAgZGlnaXRzID0gc3RyKF9kaXZfbmVhcmVzdChfaWxvZygxMCpNLCBNKSwgMTAwKSkKKyAgICAgICAgICAgICAgICBpZiBkaWdpdHNbLWV4dHJhOl0gIT0gJzAnKmV4dHJhOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKKyAgICAgICAgICAgICMga2VlcCBhbGwgcmVsaWFibGUgZGlnaXRzIHNvIGZhcjsgcmVtb3ZlIHRyYWlsaW5nIHplcm9zCisgICAgICAgICAgICAjIGFuZCBuZXh0IG5vbnplcm8gZGlnaXQKKyAgICAgICAgICAgIHNlbGYuZGlnaXRzID0gZGlnaXRzLnJzdHJpcCgnMCcpWzotMV0KKyAgICAgICAgcmV0dXJuIGludChzZWxmLmRpZ2l0c1s6cCsxXSkKKworX2xvZzEwX2RpZ2l0cyA9IF9Mb2cxME1lbW9pemUoKS5nZXRkaWdpdHMKKworZGVmIF9pZXhwKHgsIE0sIEw9OCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgeCBhbmQgTSwgTSA+IDAsIHN1Y2ggdGhhdCB4L00gaXMgc21hbGwgaW4gYWJzb2x1dGUKKyAgICB2YWx1ZSwgY29tcHV0ZSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gTSpleHAoeC9NKS4gIEZvciAwIDw9CisgICAgeC9NIDw9IDIuNCwgdGhlIGFic29sdXRlIGVycm9yIGluIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSA2MCAoYW5kCisgICAgaXMgdXN1YWxseSBtdWNoIHNtYWxsZXIpLiIiIgorCisgICAgIyBBbGdvcml0aG06IHRvIGNvbXB1dGUgZXhwKHopIGZvciBhIHJlYWwgbnVtYmVyIHosIGZpcnN0IGRpdmlkZSB6CisgICAgIyBieSBhIHN1aXRhYmxlIHBvd2VyIFIgb2YgMiBzbyB0aGF0IHx6LzIqKlJ8IDwgMioqLUwuICBUaGVuCisgICAgIyBjb21wdXRlIGV4cG0xKHovMioqUikgPSBleHAoei8yKipSKSAtIDEgdXNpbmcgdGhlIHVzdWFsIFRheWxvcgorICAgICMgc2VyaWVzCisgICAgIworICAgICMgICAgIGV4cG0xKHgpID0geCArIHgqKjIvMiEgKyB4KiozLzMhICsgLi4uCisgICAgIworICAgICMgTm93IHVzZSB0aGUgaWRlbnRpdHkKKyAgICAjCisgICAgIyAgICAgZXhwbTEoMngpID0gZXhwbTEoeCkqKGV4cG0xKHgpKzIpCisgICAgIworICAgICMgUiB0aW1lcyB0byBjb21wdXRlIHRoZSBzZXF1ZW5jZSBleHBtMSh6LzIqKlIpLAorICAgICMgZXhwbTEoei8yKiooUi0xKSksIC4uLiAsIGV4cCh6LzIpLCBleHAoeikuCisKKyAgICAjIEZpbmQgUiBzdWNoIHRoYXQgeC8yKipSL00gPD0gMioqLUwKKyAgICBSID0gX25iaXRzKCh4PDxMKS8vTSkKKworICAgICMgVGF5bG9yIHNlcmllcy4gICgyKipMKSoqVCA+IE0KKyAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQorICAgIHkgPSBfZGl2X25lYXJlc3QoeCwgVCkKKyAgICBNc2hpZnQgPSBNPDxSCisgICAgZm9yIGkgaW4gcmFuZ2UoVC0xLCAwLCAtMSk6CisgICAgICAgIHkgPSBfZGl2X25lYXJlc3QoeCooTXNoaWZ0ICsgeSksIE1zaGlmdCAqIGkpCisKKyAgICAjIEV4cGFuc2lvbgorICAgIGZvciBrIGluIHJhbmdlKFItMSwgLTEsIC0xKToKKyAgICAgICAgTXNoaWZ0ID0gTTw8KGsrMikKKyAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh5Kih5K01zaGlmdCksIE1zaGlmdCkKKworICAgIHJldHVybiBNK3kKKworZGVmIF9kZXhwKGMsIGUsIHApOgorICAgICIiIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSksIHdpdGggcCBkZWNpbWFsIHBsYWNlcyBvZgorICAgIHByZWNpc2lvbi4KKworICAgIFJldHVybnMgaW50ZWdlcnMgZCwgZiBzdWNoIHRoYXQ6CisKKyAgICAgIDEwKioocC0xKSA8PSBkIDw9IDEwKipwLCBhbmQKKyAgICAgIChkLTEpKjEwKipmIDwgZXhwKGMqMTAqKmUpIDwgKGQrMSkqMTAqKmYKKworICAgIEluIG90aGVyIHdvcmRzLCBkKjEwKipmIGlzIGFuIGFwcHJveGltYXRpb24gdG8gZXhwKGMqMTAqKmUpIHdpdGggcAorICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24sIGFuZCB3aXRoIGFuIGVycm9yIGluIGQgb2YgYXQgbW9zdCAxLiAgVGhpcyBpcworICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBkCisgICAgPSAxMCoqKHAtMSkgdGhlIGVycm9yIGNvdWxkIGJlIHVwIHRvIDEwIHVscC4iIiIKKworICAgICMgd2UnbGwgY2FsbCBpZXhwIHdpdGggTSA9IDEwKioocCsyKSwgZ2l2aW5nIHArMyBkaWdpdHMgb2YgcHJlY2lzaW9uCisgICAgcCArPSAyCisKKyAgICAjIGNvbXB1dGUgbG9nKDEwKSB3aXRoIGV4dHJhIHByZWNpc2lvbiA9IGFkanVzdGVkIGV4cG9uZW50IG9mIGMqMTAqKmUKKyAgICBleHRyYSA9IG1heCgwLCBlICsgbGVuKHN0cihjKSkgLSAxKQorICAgIHEgPSBwICsgZXh0cmEKKworICAgICMgY29tcHV0ZSBxdW90aWVudCBjKjEwKiplLyhsb2coMTApKSA9IGMqMTAqKihlK3EpLyhsb2coMTApKjEwKipxKSwKKyAgICAjIHJvdW5kaW5nIGRvd24KKyAgICBzaGlmdCA9IGUrcQorICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgIGNzaGlmdCA9IGMqMTAqKnNoaWZ0CisgICAgZWxzZToKKyAgICAgICAgY3NoaWZ0ID0gYy8vMTAqKi1zaGlmdAorICAgIHF1b3QsIHJlbSA9IGRpdm1vZChjc2hpZnQsIF9sb2cxMF9kaWdpdHMocSkpCisKKyAgICAjIHJlZHVjZSByZW1haW5kZXIgYmFjayB0byBvcmlnaW5hbCBwcmVjaXNpb24KKyAgICByZW0gPSBfZGl2X25lYXJlc3QocmVtLCAxMCoqZXh0cmEpCisKKyAgICAjIGVycm9yIGluIHJlc3VsdCBvZiBfaWV4cCA8IDEyMDsgIGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC42MgorICAgIHJldHVybiBfZGl2X25lYXJlc3QoX2lleHAocmVtLCAxMCoqcCksIDEwMDApLCBxdW90IC0gcCArIDMKKworZGVmIF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHApOgorICAgICIiIkdpdmVuIGludGVnZXJzIHhjLCB4ZSwgeWMgYW5kIHllIHJlcHJlc2VudGluZyBEZWNpbWFscyB4ID0geGMqMTAqKnhlIGFuZAorICAgIHkgPSB5YyoxMCoqeWUsIGNvbXB1dGUgeCoqeS4gIFJldHVybnMgYSBwYWlyIG9mIGludGVnZXJzIChjLCBlKSBzdWNoIHRoYXQ6CisKKyAgICAgIDEwKioocC0xKSA8PSBjIDw9IDEwKipwLCBhbmQKKyAgICAgIChjLTEpKjEwKiplIDwgeCoqeSA8IChjKzEpKjEwKiplCisKKyAgICBpbiBvdGhlciB3b3JkcywgYyoxMCoqZSBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIHgqKnkgd2l0aCBwIGRpZ2l0cworICAgIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gYyBvZiBhdCBtb3N0IDEuICAoVGhpcyBpcworICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBjCisgICAgPT0gMTAqKihwLTEpIHdlIGNhbiBvbmx5IGd1YXJhbnRlZSBlcnJvciA8IDEwdWxwLikKKworICAgIFdlIGFzc3VtZSB0aGF0OiB4IGlzIHBvc2l0aXZlIGFuZCBub3QgZXF1YWwgdG8gMSwgYW5kIHkgaXMgbm9uemVyby4KKyAgICAiIiIKKworICAgICMgRmluZCBiIHN1Y2ggdGhhdCAxMCoqKGItMSkgPD0gfHl8IDw9IDEwKipiCisgICAgYiA9IGxlbihzdHIoYWJzKHljKSkpICsgeWUKKworICAgICMgbG9nKHgpID0gbHhjKjEwKiooLXAtYi0xKSwgdG8gcCtiKzEgcGxhY2VzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50CisgICAgbHhjID0gX2Rsb2coeGMsIHhlLCBwK2IrMSkKKworICAgICMgY29tcHV0ZSBwcm9kdWN0IHkqbG9nKHgpID0geWMqbHhjKjEwKiooLXAtYi0xK3llKSA9IHBjKjEwKiooLXAtMSkKKyAgICBzaGlmdCA9IHllLWIKKyAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICBwYyA9IGx4Yyp5YyoxMCoqc2hpZnQKKyAgICBlbHNlOgorICAgICAgICBwYyA9IF9kaXZfbmVhcmVzdChseGMqeWMsIDEwKiotc2hpZnQpCisKKyAgICBpZiBwYyA9PSAwOgorICAgICAgICAjIHdlIHByZWZlciBhIHJlc3VsdCB0aGF0IGlzbid0IGV4YWN0bHkgMTsgdGhpcyBtYWtlcyBpdAorICAgICAgICAjIGVhc2llciB0byBjb21wdXRlIGEgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IGluIF9fcG93X18KKyAgICAgICAgaWYgKChsZW4oc3RyKHhjKSkgKyB4ZSA+PSAxKSA9PSAoeWMgPiAwKSk6ICMgaWYgeCoqeSA+IDE6CisgICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKihwLTEpKzEsIDEtcAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29lZmYsIGV4cCA9IDEwKipwLTEsIC1wCisgICAgZWxzZToKKyAgICAgICAgY29lZmYsIGV4cCA9IF9kZXhwKHBjLCAtKHArMSksIHArMSkKKyAgICAgICAgY29lZmYgPSBfZGl2X25lYXJlc3QoY29lZmYsIDEwKQorICAgICAgICBleHAgKz0gMQorCisgICAgcmV0dXJuIGNvZWZmLCBleHAKKworZGVmIF9sb2cxMF9sYihjLCBjb3JyZWN0aW9uID0geworICAgICAgICAnMSc6IDEwMCwgJzInOiA3MCwgJzMnOiA1MywgJzQnOiA0MCwgJzUnOiAzMSwKKyAgICAgICAgJzYnOiAyMywgJzcnOiAxNiwgJzgnOiAxMCwgJzknOiA1fSk6CisgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciAxMDAqbG9nMTAoYykgZm9yIGEgcG9zaXRpdmUgaW50ZWdlciBjLiIiIgorICAgIGlmIGMgPD0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGFyZ3VtZW50IHRvIF9sb2cxMF9sYiBzaG91bGQgYmUgbm9ubmVnYXRpdmUuIikKKyAgICBzdHJfYyA9IHN0cihjKQorICAgIHJldHVybiAxMDAqbGVuKHN0cl9jKSAtIGNvcnJlY3Rpb25bc3RyX2NbMF1dCisKKyMjIyMjIEhlbHBlciBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9RmFsc2UsIGFsbG93X2Zsb2F0PUZhbHNlKToKKyAgICAiIiJDb252ZXJ0IG90aGVyIHRvIERlY2ltYWwuCisKKyAgICBWZXJpZmllcyB0aGF0IGl0J3Mgb2sgdG8gdXNlIGluIGFuIGltcGxpY2l0IGNvbnN0cnVjdGlvbi4KKyAgICBJZiBhbGxvd19mbG9hdCBpcyB0cnVlLCBhbGxvdyBjb252ZXJzaW9uIGZyb20gZmxvYXQ7ICB0aGlzCisgICAgaXMgdXNlZCBpbiB0aGUgY29tcGFyaXNvbiBtZXRob2RzIChfX2VxX18gYW5kIGZyaWVuZHMpLgorCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGVjaW1hbCk6CisgICAgICAgIHJldHVybiBvdGhlcgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKQorICAgIGlmIGFsbG93X2Zsb2F0IGFuZCBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CisgICAgICAgIHJldHVybiBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCisKKyAgICBpZiByYWlzZWl0OgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgb3RoZXIpCisgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKK2RlZiBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlciwgZXF1YWxpdHlfb3A9RmFsc2UpOgorICAgICIiIkdpdmVuIGEgRGVjaW1hbCBpbnN0YW5jZSBzZWxmIGFuZCBhIFB5dGhvbiBvYmplY3Qgb3RoZXIsIHJldHVybgorICAgIGEgcGFpciAocywgbykgb2YgRGVjaW1hbCBpbnN0YW5jZXMgc3VjaCB0aGF0ICJzIG9wIG8iIGlzCisgICAgZXF1aXZhbGVudCB0byAic2VsZiBvcCBvdGhlciIgZm9yIGFueSBvZiB0aGUgNiBjb21wYXJpc29uCisgICAgb3BlcmF0b3JzICJvcCIuCisKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKKyAgICAgICAgcmV0dXJuIHNlbGYsIG90aGVyCisKKyAgICAjIENvbXBhcmlzb24gd2l0aCBhIFJhdGlvbmFsIGluc3RhbmNlIChhbHNvIGluY2x1ZGVzIGludGVnZXJzKToKKyAgICAjIHNlbGYgb3Agbi9kIDw9PiBzZWxmKmQgb3AgbiAoZm9yIG4gYW5kIGQgaW50ZWdlcnMsIGQgcG9zaXRpdmUpLgorICAgICMgQSBOYU4gb3IgaW5maW5pdHkgY2FuIGJlIGxlZnQgdW5jaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQorICAgICMgY29tcGFyaXNvbiByZXN1bHQuCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuUmF0aW9uYWwpOgorICAgICAgICBpZiBub3Qgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBvdGhlci5kZW5vbWluYXRvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHApCisgICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsKG90aGVyLm51bWVyYXRvcikKKworICAgICMgQ29tcGFyaXNvbnMgd2l0aCBmbG9hdCBhbmQgY29tcGxleCB0eXBlcy4gID09IGFuZCAhPSBjb21wYXJpc29ucworICAgICMgd2l0aCBjb21wbGV4IG51bWJlcnMgc2hvdWxkIHN1Y2NlZWQsIHJldHVybmluZyBlaXRoZXIgVHJ1ZSBvciBGYWxzZQorICAgICMgYXMgYXBwcm9wcmlhdGUuICBPdGhlciBjb21wYXJpc29ucyByZXR1cm4gTm90SW1wbGVtZW50ZWQuCisgICAgaWYgZXF1YWxpdHlfb3AgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLkNvbXBsZXgpIGFuZCBvdGhlci5pbWFnID09IDA6CisgICAgICAgIG90aGVyID0gb3RoZXIucmVhbAorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKKyAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiBlcXVhbGl0eV9vcDoKKyAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSBlbmFibGVkIikKKyAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKKyAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQsIE5vdEltcGxlbWVudGVkCisKKworIyMjIyMgU2V0dXAgU3BlY2lmaWMgQ29udGV4dHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBUaGUgZGVmYXVsdCBjb250ZXh0IHByb3RvdHlwZSB1c2VkIGJ5IENvbnRleHQoKQorIyBJcyBtdXRhYmxlLCBzbyB0aGF0IG5ldyBjb250ZXh0cyBjYW4gaGF2ZSBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMKKworRGVmYXVsdENvbnRleHQgPSBDb250ZXh0KAorICAgICAgICBwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCisgICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb25dLAorICAgICAgICBmbGFncz1bXSwKKyAgICAgICAgRW1heD05OTk5OTksCisgICAgICAgIEVtaW49LTk5OTk5OSwKKyAgICAgICAgY2FwaXRhbHM9MSwKKyAgICAgICAgY2xhbXA9MAorKQorCisjIFByZS1tYWRlIGFsdGVybmF0ZSBjb250ZXh0cyBvZmZlcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uCisjIERvbid0IGNoYW5nZSB0aGVzZTsgdGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gc2VsZWN0IHRoZXNlCisjIGNvbnRleHRzIGFuZCBiZSBhYmxlIHRvIHJlcHJvZHVjZSByZXN1bHRzIGZyb20gb3RoZXIgaW1wbGVtZW50YXRpb25zCisjIG9mIHRoZSBzcGVjLgorCitCYXNpY0NvbnRleHQgPSBDb250ZXh0KAorICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfVVAsCisgICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIENsYW1wZWQsIFVuZGVyZmxvd10sCisgICAgICAgIGZsYWdzPVtdLAorKQorCitFeHRlbmRlZENvbnRleHQgPSBDb250ZXh0KAorICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgdHJhcHM9W10sCisgICAgICAgIGZsYWdzPVtdLAorKQorCisKKyMjIyMjIGNydWQgZm9yIHBhcnNpbmcgc3RyaW5ncyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgUmVndWxhciBleHByZXNzaW9uIHVzZWQgZm9yIHBhcnNpbmcgbnVtZXJpYyBzdHJpbmdzLiAgQWRkaXRpb25hbAorIyBjb21tZW50czoKKyMKKyMgMS4gVW5jb21tZW50IHRoZSB0d28gJ1xzKicgbGluZXMgdG8gYWxsb3cgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcKKyMgd2hpdGVzcGFjZS4gIEJ1dCBub3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gZGlzYWxsb3dzIHdoaXRlc3BhY2UgaW4KKyMgYSBudW1lcmljIHN0cmluZy4KKyMKKyMgMi4gRm9yIGZpbml0ZSBudW1iZXJzIChub3QgaW5maW5pdGllcyBhbmQgTmFOcykgdGhlIGJvZHkgb2YgdGhlCisjIG51bWJlciBiZXR3ZWVuIHRoZSBvcHRpb25hbCBzaWduIGFuZCB0aGUgb3B0aW9uYWwgZXhwb25lbnQgbXVzdCBoYXZlCisjIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0LCBwb3NzaWJseSBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gIFRoZQorIyBsb29rYWhlYWQgZXhwcmVzc2lvbiAnKD89XGR8XC5cZCknIGNoZWNrcyB0aGlzLgorCitpbXBvcnQgcmUKK19wYXJzZXIgPSByZS5jb21waWxlKHIiIiIgICAgICAgICMgQSBudW1lcmljIHN0cmluZyBjb25zaXN0cyBvZjoKKyMgICAgXHMqCisgICAgKD9QPHNpZ24+Wy0rXSk/ICAgICAgICAgICAgICAjIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGVpdGhlci4uLgorICAgICgKKyAgICAgICAgKD89XGR8XC5cZCkgICAgICAgICAgICAgICMgLi4uYSBudW1iZXIgKHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0KQorICAgICAgICAoP1A8aW50PlxkKikgICAgICAgICAgICAgIyBoYXZpbmcgYSAocG9zc2libHkgZW1wdHkpIGludGVnZXIgcGFydAorICAgICAgICAoXC4oP1A8ZnJhYz5cZCopKT8gICAgICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBmcmFjdGlvbmFsIHBhcnQKKyAgICAgICAgKEUoP1A8ZXhwPlstK10/XGQrKSk/ICAgICMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgZXhwb25lbnQsIG9yLi4uCisgICAgfAorICAgICAgICBJbmYoaW5pdHkpPyAgICAgICAgICAgICAgIyAuLi5hbiBpbmZpbml0eSwgb3IuLi4KKyAgICB8CisgICAgICAgICg/UDxzaWduYWw+cyk/ICAgICAgICAgICAjIC4uLmFuIChvcHRpb25hbGx5IHNpZ25hbGluZykKKyAgICAgICAgTmFOICAgICAgICAgICAgICAgICAgICAgICMgTmFOCisgICAgICAgICg/UDxkaWFnPlxkKikgICAgICAgICAgICAjIHdpdGggKHBvc3NpYmx5IGVtcHR5KSBkaWFnbm9zdGljIGluZm8uCisgICAgKQorIyAgICBccyoKKyAgICBcWgorIiIiLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkubWF0Y2gKKworX2FsbF96ZXJvcyA9IHJlLmNvbXBpbGUoJzAqJCcpLm1hdGNoCitfZXhhY3RfaGFsZiA9IHJlLmNvbXBpbGUoJzUwKiQnKS5tYXRjaAorCisjIyMjIyBQRVAzMTAxIHN1cHBvcnQgZnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gaGF2ZSBsaXR0bGUgdG8gZG8gd2l0aCB0aGUgRGVjaW1hbAorIyBjbGFzcywgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJldXNlZCBvciBhZGFwdGVkIGZvciBvdGhlciBwdXJlCisjIFB5dGhvbiBudW1lcmljIGNsYXNzZXMgdGhhdCB3YW50IHRvIGltcGxlbWVudCBfX2Zvcm1hdF9fCisjCisjIEEgZm9ybWF0IHNwZWNpZmllciBmb3IgRGVjaW1hbCBsb29rcyBsaWtlOgorIworIyAgIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bbWluaW11bXdpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorCitfcGFyc2VfZm9ybWF0X3NwZWNpZmllcl9yZWdleCA9IHJlLmNvbXBpbGUociIiIlxBCisoPzoKKyAgICg/UDxmaWxsPi4pPworICAgKD9QPGFsaWduPls8Pj1eXSkKKyk/CisoP1A8c2lnbj5bLSsgXSk/CisoP1A8YWx0PlwjKT8KKyg/UDx6ZXJvcGFkPjApPworKD9QPG1pbmltdW13aWR0aD4oPyEwKVxkKyk/CisoP1A8dGhvdXNhbmRzX3NlcD4sKT8KKyg/OlwuKD9QPHByZWNpc2lvbj4wfCg/ITApXGQrKSk/CisoP1A8dHlwZT5bZUVmRmdHbiVdKT8KK1xaCisiIiIsIHJlLlZFUkJPU0V8cmUuRE9UQUxMKQorCitkZWwgcmUKKworIyBUaGUgbG9jYWxlIG1vZHVsZSBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlICduJyBmb3JtYXQgc3BlY2lmaWVyLiAgVGhlCisjIHJlc3Qgb2YgdGhlIFBFUCAzMTAxIGNvZGUgZnVuY3Rpb25zIHF1aXRlIGhhcHBpbHkgd2l0aG91dCBpdCwgc28gd2UKKyMgZG9uJ3QgY2FyZSB0b28gbXVjaCBpZiBsb2NhbGUgaXNuJ3QgcHJlc2VudC4KK3RyeToKKyAgICBpbXBvcnQgbG9jYWxlIGFzIF9sb2NhbGUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKK2RlZiBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcihmb3JtYXRfc3BlYywgX2xvY2FsZWNvbnY9Tm9uZSk6CisgICAgIiIiUGFyc2UgYW5kIHZhbGlkYXRlIGEgZm9ybWF0IHNwZWNpZmllci4KKworICAgIFR1cm5zIGEgc3RhbmRhcmQgbnVtZXJpYyBmb3JtYXQgc3BlY2lmaWVyIGludG8gYSBkaWN0LCB3aXRoIHRoZQorICAgIGZvbGxvd2luZyBlbnRyaWVzOgorCisgICAgICBmaWxsOiBmaWxsIGNoYXJhY3RlciB0byBwYWQgZmllbGQgdG8gbWluaW11bSB3aWR0aAorICAgICAgYWxpZ246IGFsaWdubWVudCB0eXBlLCBlaXRoZXIgJzwnLCAnPicsICc9JyBvciAnXicKKyAgICAgIHNpZ246IGVpdGhlciAnKycsICctJyBvciAnICcKKyAgICAgIG1pbmltdW13aWR0aDogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgbWluaW11bSB3aWR0aAorICAgICAgemVyb3BhZDogYm9vbGVhbiwgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHBhZCB3aXRoIHplcm9zCisgICAgICB0aG91c2FuZHNfc2VwOiBzdHJpbmcgdG8gdXNlIGFzIHRob3VzYW5kcyBzZXBhcmF0b3IsIG9yICcnCisgICAgICBncm91cGluZzogZ3JvdXBpbmcgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3JzLCBpbiBmb3JtYXQKKyAgICAgICAgdXNlZCBieSBsb2NhbGVjb252CisgICAgICBkZWNpbWFsX3BvaW50OiBzdHJpbmcgdG8gdXNlIGZvciBkZWNpbWFsIHBvaW50CisgICAgICBwcmVjaXNpb246IG5vbm5lZ2F0aXZlIGludGVnZXIgZ2l2aW5nIHByZWNpc2lvbiwgb3IgTm9uZQorICAgICAgdHlwZTogb25lIG9mIHRoZSBjaGFyYWN0ZXJzICdlRWZGZ0clJywgb3IgTm9uZQorCisgICAgIiIiCisgICAgbSA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4Lm1hdGNoKGZvcm1hdF9zcGVjKQorICAgIGlmIG0gaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCisKKyAgICAjIGdldCB0aGUgZGljdGlvbmFyeQorICAgIGZvcm1hdF9kaWN0ID0gbS5ncm91cGRpY3QoKQorCisgICAgIyB6ZXJvcGFkOyBkZWZhdWx0cyBmb3IgZmlsbCBhbmQgYWxpZ25tZW50LiAgSWYgemVybyBwYWRkaW5nCisgICAgIyBpcyByZXF1ZXN0ZWQsIHRoZSBmaWxsIGFuZCBhbGlnbiBmaWVsZHMgc2hvdWxkIGJlIGFic2VudC4KKyAgICBmaWxsID0gZm9ybWF0X2RpY3RbJ2ZpbGwnXQorICAgIGFsaWduID0gZm9ybWF0X2RpY3RbJ2FsaWduJ10KKyAgICBmb3JtYXRfZGljdFsnemVyb3BhZCddID0gKGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gaXMgbm90IE5vbmUpCisgICAgaWYgZm9ybWF0X2RpY3RbJ3plcm9wYWQnXToKKyAgICAgICAgaWYgZmlsbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZpbGwgY2hhcmFjdGVyIGNvbmZsaWN0cyB3aXRoICcwJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCisgICAgICAgIGlmIGFsaWduIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWxpZ25tZW50IGNvbmZsaWN0cyB3aXRoICcwJyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCisgICAgZm9ybWF0X2RpY3RbJ2ZpbGwnXSA9IGZpbGwgb3IgJyAnCisgICAgIyBQRVAgMzEwMSBvcmlnaW5hbGx5IHNwZWNpZmllZCB0aGF0IHRoZSBkZWZhdWx0IGFsaWdubWVudCBzaG91bGQKKyAgICAjIGJlIGxlZnQ7ICBpdCB3YXMgbGF0ZXIgYWdyZWVkIHRoYXQgcmlnaHQtYWxpZ25lZCBtYWtlcyBtb3JlIHNlbnNlCisgICAgIyBmb3IgbnVtZXJpYyB0eXBlcy4gIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNjg1Ny4KKyAgICBmb3JtYXRfZGljdFsnYWxpZ24nXSA9IGFsaWduIG9yICc+JworCisgICAgIyBkZWZhdWx0IHNpZ24gaGFuZGxpbmc6ICctJyBmb3IgbmVnYXRpdmUsICcnIGZvciBwb3NpdGl2ZQorICAgIGlmIGZvcm1hdF9kaWN0WydzaWduJ10gaXMgTm9uZToKKyAgICAgICAgZm9ybWF0X2RpY3RbJ3NpZ24nXSA9ICctJworCisgICAgIyBtaW5pbXVtd2lkdGggZGVmYXVsdHMgdG8gMDsgcHJlY2lzaW9uIHJlbWFpbnMgTm9uZSBpZiBub3QgZ2l2ZW4KKyAgICBmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gPSBpbnQoZm9ybWF0X2RpY3RbJ21pbmltdW13aWR0aCddIG9yICcwJykKKyAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gaXMgbm90IE5vbmU6CisgICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IGludChmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10pCisKKyAgICAjIGlmIGZvcm1hdCB0eXBlIGlzICdnJyBvciAnRycgdGhlbiBhIHByZWNpc2lvbiBvZiAwIG1ha2VzIGxpdHRsZQorICAgICMgc2Vuc2U7IGNvbnZlcnQgaXQgdG8gMS4gIFNhbWUgaWYgZm9ybWF0IHR5cGUgaXMgdW5zcGVjaWZpZWQuCisgICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID09IDA6CisgICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaXMgTm9uZSBvciBmb3JtYXRfZGljdFsndHlwZSddIGluICdnR24nOgorICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gMQorCisgICAgIyBkZXRlcm1pbmUgdGhvdXNhbmRzIHNlcGFyYXRvciwgZ3JvdXBpbmcsIGFuZCBkZWNpbWFsIHNlcGFyYXRvciwgYW5kCisgICAgIyBhZGQgYXBwcm9wcmlhdGUgZW50cmllcyB0byBmb3JtYXRfZGljdAorICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPT0gJ24nOgorICAgICAgICAjIGFwYXJ0IGZyb20gc2VwYXJhdG9ycywgJ24nIGJlaGF2ZXMganVzdCBsaWtlICdnJworICAgICAgICBmb3JtYXRfZGljdFsndHlwZSddID0gJ2cnCisgICAgICAgIGlmIF9sb2NhbGVjb252IGlzIE5vbmU6CisgICAgICAgICAgICBfbG9jYWxlY29udiA9IF9sb2NhbGUubG9jYWxlY29udigpCisgICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBsaWNpdCB0aG91c2FuZHMgc2VwYXJhdG9yIGNvbmZsaWN0cyB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiduJyB0eXBlIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKKyAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9IF9sb2NhbGVjb252Wyd0aG91c2FuZHNfc2VwJ10KKyAgICAgICAgZm9ybWF0X2RpY3RbJ2dyb3VwaW5nJ10gPSBfbG9jYWxlY29udlsnZ3JvdXBpbmcnXQorICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gX2xvY2FsZWNvbnZbJ2RlY2ltYWxfcG9pbnQnXQorICAgIGVsc2U6CisgICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgTm9uZToKKyAgICAgICAgICAgIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gPSAnJworICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IFszLCAwXQorICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gJy4nCisKKyAgICByZXR1cm4gZm9ybWF0X2RpY3QKKworZGVmIF9mb3JtYXRfYWxpZ24oc2lnbiwgYm9keSwgc3BlYyk6CisgICAgIiIiR2l2ZW4gYW4gdW5wYWRkZWQsIG5vbi1hbGlnbmVkIG51bWVyaWMgc3RyaW5nICdib2R5JyBhbmQgc2lnbgorICAgIHN0cmluZyAnc2lnbicsIGFkZCBwYWRkaW5nIGFuZCBhbGlnbm1lbnQgY29uZm9ybWluZyB0byB0aGUgZ2l2ZW4KKyAgICBmb3JtYXQgc3BlY2lmaWVyIGRpY3Rpb25hcnkgJ3NwZWMnIChhcyBwcm9kdWNlZCBieQorICAgIHBhcnNlX2Zvcm1hdF9zcGVjaWZpZXIpLgorCisgICAgIiIiCisgICAgIyBob3cgbXVjaCBleHRyYSBzcGFjZSBkbyB3ZSBoYXZlIHRvIHBsYXkgd2l0aD8KKyAgICBtaW5pbXVtd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXQorICAgIGZpbGwgPSBzcGVjWydmaWxsJ10KKyAgICBwYWRkaW5nID0gZmlsbCoobWluaW11bXdpZHRoIC0gbGVuKHNpZ24pIC0gbGVuKGJvZHkpKQorCisgICAgYWxpZ24gPSBzcGVjWydhbGlnbiddCisgICAgaWYgYWxpZ24gPT0gJzwnOgorICAgICAgICByZXN1bHQgPSBzaWduICsgYm9keSArIHBhZGRpbmcKKyAgICBlbGlmIGFsaWduID09ICc+JzoKKyAgICAgICAgcmVzdWx0ID0gcGFkZGluZyArIHNpZ24gKyBib2R5CisgICAgZWxpZiBhbGlnbiA9PSAnPSc6CisgICAgICAgIHJlc3VsdCA9IHNpZ24gKyBwYWRkaW5nICsgYm9keQorICAgIGVsaWYgYWxpZ24gPT0gJ14nOgorICAgICAgICBoYWxmID0gbGVuKHBhZGRpbmcpLy8yCisgICAgICAgIHJlc3VsdCA9IHBhZGRpbmdbOmhhbGZdICsgc2lnbiArIGJvZHkgKyBwYWRkaW5nW2hhbGY6XQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VucmVjb2duaXNlZCBhbGlnbm1lbnQgZmllbGQnKQorCisgICAgcmV0dXJuIHJlc3VsdAorCitkZWYgX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgorICAgICIiIkNvbnZlcnQgYSBsb2NhbGVjb252LXN0eWxlIGdyb3VwaW5nIGludG8gYSAocG9zc2libHkgaW5maW5pdGUpCisgICAgaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGdyb3VwIGxlbmd0aHMuCisKKyAgICAiIiIKKyAgICAjIFRoZSByZXN1bHQgZnJvbSBsb2NhbGVjb252KClbJ2dyb3VwaW5nJ10sIGFuZCB0aGUgaW5wdXQgdG8gdGhpcworICAgICMgZnVuY3Rpb24sIHNob3VsZCBiZSBhIGxpc3Qgb2YgaW50ZWdlcnMgaW4gb25lIG9mIHRoZQorICAgICMgZm9sbG93aW5nIHRocmVlIGZvcm1zOgorICAgICMKKyAgICAjICAgKDEpIGFuIGVtcHR5IGxpc3QsIG9yCisgICAgIyAgICgyKSBub25lbXB0eSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgWzBdCisgICAgIyAgICgzKSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgW2xvY2FsZS5DSEFSX01BWF0sIG9yCisKKyAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHJlcGVhdAorICAgIGlmIG5vdCBncm91cGluZzoKKyAgICAgICAgcmV0dXJuIFtdCisgICAgZWxpZiBncm91cGluZ1stMV0gPT0gMCBhbmQgbGVuKGdyb3VwaW5nKSA+PSAyOgorICAgICAgICByZXR1cm4gY2hhaW4oZ3JvdXBpbmdbOi0xXSwgcmVwZWF0KGdyb3VwaW5nWy0yXSkpCisgICAgZWxpZiBncm91cGluZ1stMV0gPT0gX2xvY2FsZS5DSEFSX01BWDoKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nWzotMV0KKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bnJlY29nbmlzZWQgZm9ybWF0IGZvciBncm91cGluZycpCisKK2RlZiBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoZGlnaXRzLCBzcGVjLCBtaW5fd2lkdGg9MSk6CisgICAgIiIiSW5zZXJ0IHRob3VzYW5kcyBzZXBhcmF0b3JzIGludG8gYSBkaWdpdCBzdHJpbmcuCisKKyAgICBzcGVjIGlzIGEgZGljdGlvbmFyeSB3aG9zZSBrZXlzIHNob3VsZCBpbmNsdWRlICd0aG91c2FuZHNfc2VwJyBhbmQKKyAgICAnZ3JvdXBpbmcnOyB0eXBpY2FsbHkgaXQncyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGZvcm1hdAorICAgIHNwZWNpZmllciB1c2luZyBfcGFyc2VfZm9ybWF0X3NwZWNpZmllci4KKworICAgIFRoZSBtaW5fd2lkdGgga2V5d29yZCBhcmd1bWVudCBnaXZlcyB0aGUgbWluaW11bSBsZW5ndGggb2YgdGhlCisgICAgcmVzdWx0LCB3aGljaCB3aWxsIGJlIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeS4KKworICAgIElmIG5lY2Vzc2FyeSwgdGhlIHplcm8gcGFkZGluZyBhZGRzIGFuIGV4dHJhICcwJyBvbiB0aGUgbGVmdCB0bworICAgIGF2b2lkIGEgbGVhZGluZyB0aG91c2FuZHMgc2VwYXJhdG9yLiAgRm9yIGV4YW1wbGUsIGluc2VydGluZworICAgIGNvbW1hcyBldmVyeSB0aHJlZSBkaWdpdHMgaW4gJzEyMzQ1NicsIHdpdGggbWluX3dpZHRoPTgsIGdpdmVzCisgICAgJzAsMTIzLDQ1NicsIGV2ZW4gdGhvdWdoIHRoYXQgaGFzIGxlbmd0aCA5LgorCisgICAgIiIiCisKKyAgICBzZXAgPSBzcGVjWyd0aG91c2FuZHNfc2VwJ10KKyAgICBncm91cGluZyA9IHNwZWNbJ2dyb3VwaW5nJ10KKworICAgIGdyb3VwcyA9IFtdCisgICAgZm9yIGwgaW4gX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgorICAgICAgICBpZiBsIDw9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJncm91cCBsZW5ndGggc2hvdWxkIGJlIHBvc2l0aXZlIikKKyAgICAgICAgIyBtYXgoLi4uLCAxKSBmb3JjZXMgYXQgbGVhc3QgMSBkaWdpdCB0byB0aGUgbGVmdCBvZiBhIHNlcGFyYXRvcgorICAgICAgICBsID0gbWluKG1heChsZW4oZGlnaXRzKSwgbWluX3dpZHRoLCAxKSwgbCkKKyAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKKyAgICAgICAgZGlnaXRzID0gZGlnaXRzWzotbF0KKyAgICAgICAgbWluX3dpZHRoIC09IGwKKyAgICAgICAgaWYgbm90IGRpZ2l0cyBhbmQgbWluX3dpZHRoIDw9IDA6CisgICAgICAgICAgICBicmVhaworICAgICAgICBtaW5fd2lkdGggLT0gbGVuKHNlcCkKKyAgICBlbHNlOgorICAgICAgICBsID0gbWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpCisgICAgICAgIGdyb3Vwcy5hcHBlbmQoJzAnKihsIC0gbGVuKGRpZ2l0cykpICsgZGlnaXRzWy1sOl0pCisgICAgcmV0dXJuIHNlcC5qb2luKHJldmVyc2VkKGdyb3VwcykpCisKK2RlZiBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpOgorICAgICIiIkRldGVybWluZSBzaWduIGNoYXJhY3Rlci4iIiIKKworICAgIGlmIGlzX25lZ2F0aXZlOgorICAgICAgICByZXR1cm4gJy0nCisgICAgZWxpZiBzcGVjWydzaWduJ10gaW4gJyArJzoKKyAgICAgICAgcmV0dXJuIHNwZWNbJ3NpZ24nXQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJworCitkZWYgX2Zvcm1hdF9udW1iZXIoaXNfbmVnYXRpdmUsIGludHBhcnQsIGZyYWNwYXJ0LCBleHAsIHNwZWMpOgorICAgICIiIkZvcm1hdCBhIG51bWJlciwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBkYXRhOgorCisgICAgaXNfbmVnYXRpdmU6IHRydWUgaWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgZWxzZSBmYWxzZQorICAgIGludHBhcnQ6IHN0cmluZyBvZiBkaWdpdHMgdGhhdCBtdXN0IGFwcGVhciBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICBmcmFjcGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgY29tZSBhZnRlciB0aGUgcG9pbnQKKyAgICBleHA6IGV4cG9uZW50LCBhcyBhbiBpbnRlZ2VyCisgICAgc3BlYzogZGljdGlvbmFyeSByZXN1bHRpbmcgZnJvbSBwYXJzaW5nIHRoZSBmb3JtYXQgc3BlY2lmaWVyCisKKyAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGluZm9ybWF0aW9uIGluIHNwZWMgdG86CisgICAgICBpbnNlcnQgc2VwYXJhdG9ycyAoZGVjaW1hbCBzZXBhcmF0b3IgYW5kIHRob3VzYW5kcyBzZXBhcmF0b3JzKQorICAgICAgZm9ybWF0IHRoZSBzaWduCisgICAgICBmb3JtYXQgdGhlIGV4cG9uZW50CisgICAgICBhZGQgdHJhaWxpbmcgJyUnIGZvciB0aGUgJyUnIHR5cGUKKyAgICAgIHplcm8tcGFkIGlmIG5lY2Vzc2FyeQorICAgICAgZmlsbCBhbmQgYWxpZ24gaWYgbmVjZXNzYXJ5CisgICAgIiIiCisKKyAgICBzaWduID0gX2Zvcm1hdF9zaWduKGlzX25lZ2F0aXZlLCBzcGVjKQorCisgICAgaWYgZnJhY3BhcnQgb3Igc3BlY1snYWx0J106CisgICAgICAgIGZyYWNwYXJ0ID0gc3BlY1snZGVjaW1hbF9wb2ludCddICsgZnJhY3BhcnQKKworICAgIGlmIGV4cCAhPSAwIG9yIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgorICAgICAgICBlY2hhciA9IHsnRSc6ICdFJywgJ2UnOiAnZScsICdHJzogJ0UnLCAnZyc6ICdlJ31bc3BlY1sndHlwZSddXQorICAgICAgICBmcmFjcGFydCArPSAiezB9ezE6K30iLmZvcm1hdChlY2hhciwgZXhwKQorICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6CisgICAgICAgIGZyYWNwYXJ0ICs9ICclJworCisgICAgaWYgc3BlY1snemVyb3BhZCddOgorICAgICAgICBtaW5fd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXSAtIGxlbihmcmFjcGFydCkgLSBsZW4oc2lnbikKKyAgICBlbHNlOgorICAgICAgICBtaW5fd2lkdGggPSAwCisgICAgaW50cGFydCA9IF9pbnNlcnRfdGhvdXNhbmRzX3NlcChpbnRwYXJ0LCBzcGVjLCBtaW5fd2lkdGgpCisKKyAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBpbnRwYXJ0K2ZyYWNwYXJ0LCBzcGVjKQorCisKKyMjIyMjIFVzZWZ1bCBDb25zdGFudHMgKGludGVybmFsIHVzZSBvbmx5KSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFJldXNhYmxlIGRlZmF1bHRzCitfSW5maW5pdHkgPSBEZWNpbWFsKCdJbmYnKQorX05lZ2F0aXZlSW5maW5pdHkgPSBEZWNpbWFsKCctSW5mJykKK19OYU4gPSBEZWNpbWFsKCdOYU4nKQorX1plcm8gPSBEZWNpbWFsKDApCitfT25lID0gRGVjaW1hbCgxKQorX05lZ2F0aXZlT25lID0gRGVjaW1hbCgtMSkKKworIyBfU2lnbmVkSW5maW5pdHlbc2lnbl0gaXMgaW5maW5pdHkgdy8gdGhhdCBzaWduCitfU2lnbmVkSW5maW5pdHkgPSAoX0luZmluaXR5LCBfTmVnYXRpdmVJbmZpbml0eSkKKworIyBDb25zdGFudHMgcmVsYXRlZCB0byB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbjsgIGhhc2goeCkgaXMgYmFzZWQKKyMgb24gdGhlIHJlZHVjdGlvbiBvZiB4IG1vZHVsbyBfUHlIQVNIX01PRFVMVVMKK19QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cworIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucworX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgorX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgorCisjIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKK19QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKK2RlbCBzeXMKZGlmZiAtLWdpdCBhL0xpYi9fcHlpby5weSBiL0xpYi9fcHlpby5weQppbmRleCBjMGI1ZmQxLi41MGFkOWZmIDEwMDY0NAotLS0gYS9MaWIvX3B5aW8ucHkKKysrIGIvTGliL19weWlvLnB5CkBAIC02LDExICs2LDE3IEBACiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBhcnJheQoraW1wb3J0IHN0YXQKICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdAogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZnJvbSBfZHVtbXlfdGhyZWFkIGltcG9ydCBhbGxvY2F0ZV9sb2NrIGFzIExvY2sKK2lmIG9zLm5hbWUgPT0gJ3dpbjMyJzoKKyAgICBmcm9tIG1zdmNydCBpbXBvcnQgc2V0bW9kZSBhcyBfc2V0bW9kZQorZWxzZToKKyAgICBfc2V0bW9kZSA9IE5vbmUKIAogaW1wb3J0IGlvCiBmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKQEAgLTI1Niw3ICsyNjIsNyBAQAogICAgIFRyaWNrIHNvIHRoYXQgb3BlbiB3b24ndCBiZWNvbWUgYSBib3VuZCBtZXRob2Qgd2hlbiBzdG9yZWQKICAgICBhcyBhIGNsYXNzIHZhcmlhYmxlIChhcyBkYm0uZHVtYiBkb2VzKS4KIAotICAgIFNlZSBpbml0c3RkaW8oKSBpbiBQeXRob24vcHl0aG9ucnVuLmMuCisgICAgU2VlIGluaXRzdGRpbygpIGluIFB5dGhvbi9weWxpZmVjeWNsZS5jLgogICAgICIiIgogICAgIF9fZG9jX18gPSBEb2NEZXNjcmlwdG9yKCkKIApAQCAtNjYyLDE2ICs2NjgsMzMgQEAKICAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubwogICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCiAgICAgICAgICIiIgotICAgICAgICAjIFhYWCBUaGlzIG91Z2h0IHRvIHdvcmsgd2l0aCBhbnl0aGluZyB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgQVBJCi0gICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKGIpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1GYWxzZSkKKworICAgIGRlZiByZWFkaW50bzEoc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gKmIqLCB1c2luZyBhdCBtb3N0IG9uZSBzeXN0ZW0gY2FsbAorCisgICAgICAgIFJldHVybnMgYW4gaW50IHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisKKyAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubworICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCisgICAgICAgICIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1UcnVlKQorCisgICAgZGVmIF9yZWFkaW50byhzZWxmLCBiLCByZWFkMSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIG1lbW9yeXZpZXcpOgorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgYiA9IGIuY2FzdCgnQicpCisKKyAgICAgICAgaWYgcmVhZDE6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShsZW4oYikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihiKSkKICAgICAgICAgbiA9IGxlbihkYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiWzpuXSA9IGRhdGEKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpbXBvcnQgYXJyYXkKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIGFycmF5LmFycmF5KToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnIKLSAgICAgICAgICAgIGJbOm5dID0gYXJyYXkuYXJyYXkoJ2InLCBkYXRhKQorCisgICAgICAgIGJbOm5dID0gZGF0YQorCiAgICAgICAgIHJldHVybiBuCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgYik6CkBAIC03OTAsMTMgKzgxMywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGNsc25hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICBtb2RuYW1lID0gc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXworICAgICAgICBjbHNuYW1lID0gc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfT4iLmZvcm1hdChjbHNuYW1lKQorICAgICAgICAgICAgcmV0dXJuICI8e30ue30+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfSBuYW1lPXsxIXJ9PiIuZm9ybWF0KGNsc25hbWUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gIjx7fS57fSBuYW1lPXshcn0+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSwgbmFtZSkKIAogICAgICMjIyBMb3dlci1sZXZlbCBBUElzICMjIwogCkBAIC05OTMsMTAgKzEwMTcsNyBAQAogICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFJlYWQgdW50aWwgRU9GIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTAxNSwxMCArMTAzNiw3IEBACiAgICAgICAgIGNodW5rcyA9IFtidWZbcG9zOl1dCiAgICAgICAgIHdhbnRlZCA9IG1heChzZWxmLmJ1ZmZlcl9zaXplLCBuKQogICAgICAgICB3aGlsZSBhdmFpbCA8IG46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQogICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMDQ3LDEyICsxMDY1LDcgQEAKICAgICAgICAgaGF2ZSA9IGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcwogICAgICAgICBpZiBoYXZlIDwgd2FudCBvciBoYXZlIDw9IDA6CiAgICAgICAgICAgICB0b19yZWFkID0gc2VsZi5idWZmZXJfc2l6ZSAtIGhhdmUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQogICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2J1ZiA9IHNlbGYuX3JlYWRfYnVmW3NlbGYuX3JlYWRfcG9zOl0gKyBjdXJyZW50CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCkBAIC0xMDcxLDYgKzEwODQsNTggQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VubG9ja2VkKAogICAgICAgICAgICAgICAgIG1pbihzaXplLCBsZW4oc2VsZi5fcmVhZF9idWYpIC0gc2VsZi5fcmVhZF9wb3MpKQogCisgICAgIyBJbXBsZW1lbnRpbmcgcmVhZGludG8oKSBhbmQgcmVhZGludG8xKCkgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSAod2UKKyAgICAjIGNvdWxkIHJlbHkgb24gdGhlIGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZgorICAgICMgcmVhZCgpIGFuZCByZWFkMSgpKS4gV2UgZG8gaXQgYW55d2F5IHRvIGtlZXAgdGhlIF9weWlvIGltcGxlbWVudGF0aW9uCisgICAgIyBzaW1pbGFyIHRvIHRoZSBpbyBpbXBsZW1lbnRhdGlvbiAod2hpY2ggaW1wbGVtZW50cyB0aGUgbWV0aG9kcyBmb3IKKyAgICAjIHBlcmZvcm1hbmNlIHJlYXNvbnMpLgorICAgIGRlZiBfcmVhZGludG8oc2VsZiwgYnVmLCByZWFkMSk6CisgICAgICAgICIiIlJlYWQgZGF0YSBpbnRvICpidWYqIHdpdGggYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwuIiIiCisKKyAgICAgICAgaWYgbGVuKGJ1ZikgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgIyBOZWVkIHRvIGNyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IG9mIHR5cGUgJ2InLCBvdGhlcndpc2UKKyAgICAgICAgIyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gYXNzaWduIGJ5dGVzIHRvIGl0LCBhbmQgc2xpY2luZyBpdAorICAgICAgICAjIHdvdWxkIGNyZWF0ZSBhIG5ldyBvYmplY3QuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJ1ZiwgbWVtb3J5dmlldyk6CisgICAgICAgICAgICBidWYgPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgYnVmID0gYnVmLmNhc3QoJ0InKQorCisgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgorICAgICAgICAgICAgd2hpbGUgd3JpdHRlbiA8IGxlbihidWYpOgorCisgICAgICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gcmVhZCBmcm9tIGludGVybmFsIGJ1ZmZlcgorICAgICAgICAgICAgICAgIGF2YWlsID0gbWluKGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcywgbGVuKGJ1ZikpCisgICAgICAgICAgICAgICAgaWYgYXZhaWw6CisgICAgICAgICAgICAgICAgICAgIGJ1Zlt3cml0dGVuOndyaXR0ZW4rYXZhaWxdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9idWZbc2VsZi5fcmVhZF9wb3M6c2VsZi5fcmVhZF9wb3MrYXZhaWxdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zICs9IGF2YWlsCisgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gYXZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgd3JpdHRlbiA9PSBsZW4oYnVmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAjIElmIHJlbWFpbmluZyBzcGFjZSBpbiBjYWxsZXJzIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgICMgaW50ZXJuYWwgYnVmZmVyLCByZWFkIGRpcmVjdGx5IGludG8gY2FsbGVycyBidWZmZXIKKyAgICAgICAgICAgICAgICBpZiBsZW4oYnVmKSAtIHdyaXR0ZW4gPiBzZWxmLmJ1ZmZlcl9zaXplOgorICAgICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcucmVhZGludG8oYnVmW3dyaXR0ZW46XSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG46CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAjIGVvZgorICAgICAgICAgICAgICAgICAgICB3cml0dGVuICs9IG4KKworICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJlZmlsbCBpbnRlcm5hbCBidWZmZXIgLSB1bmxlc3Mgd2UncmUKKyAgICAgICAgICAgICAgICAjIGluIHJlYWQxIG1vZGUgYW5kIGFscmVhZHkgZ290IHNvbWUgZGF0YQorICAgICAgICAgICAgICAgIGVsaWYgbm90IChyZWFkMSBhbmQgd3JpdHRlbik6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wZWVrX3VubG9ja2VkKDEpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBlb2YKKworICAgICAgICAgICAgICAgICMgSW4gcmVhZGludG8xIG1vZGUsIHJldHVybiBhcyBzb29uIGFzIHdlIGhhdmUgc29tZSBkYXRhCisgICAgICAgICAgICAgICAgaWYgcmVhZDEgYW5kIHdyaXR0ZW46CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIHdyaXR0ZW4KKwogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSArIHNlbGYuX3JlYWRfcG9zCiAKQEAgLTExNDksOCArMTIxNCw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcud3JpdGUoc2VsZi5fd3JpdGVfYnVmKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzZWxmLnJhdyBzaG91bGQgaW1wbGVtZW50IFJhd0lPQmFzZTogaXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQpAQCAtMTIyMCw2ICsxMjgzLDkgQEAKICAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5yZWFkMShzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWRpbnRvMShiKQorCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGFibGUoKQogCkBAIC0xMzA0LDYgKzEzNzAsMTAgQEAKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkMShzZWxmLCBzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bzEoc2VsZiwgYikKKwogICAgIGRlZiB3cml0ZShzZWxmLCBiKToKICAgICAgICAgaWYgc2VsZi5fcmVhZF9idWY6CiAgICAgICAgICAgICAjIFVuZG8gcmVhZGFoZWFkCkBAIC0xMzEzLDYgKzEzODMsMzQ1IEBACiAgICAgICAgIHJldHVybiBCdWZmZXJlZFdyaXRlci53cml0ZShzZWxmLCBiKQogCiAKK2NsYXNzIEZpbGVJTyhSYXdJT0Jhc2UpOgorICAgIF9mZCA9IC0xCisgICAgX2NyZWF0ZWQgPSBGYWxzZQorICAgIF9yZWFkYWJsZSA9IEZhbHNlCisgICAgX3dyaXRhYmxlID0gRmFsc2UKKyAgICBfYXBwZW5kaW5nID0gRmFsc2UKKyAgICBfc2Vla2FibGUgPSBOb25lCisgICAgX2Nsb3NlZmQgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0ncicsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpOgorICAgICAgICAiIiJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCisgICAgICAgIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQKKyAgICAgICAgZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkCisgICAgICAgIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorICAgICAgICBleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllcworICAgICAgICB3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLiBBZGQgYSAnKycgdG8gdGhlIG1vZGUKKyAgICAgICAgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQorICAgICAgICBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKKyAgICAgICAgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS4KKyAgICAgICAgKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgorICAgICAgICByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fZmQgPj0gMDoKKyAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQgPSAtMQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgZmxvYXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgICAgICBmZCA9IGZpbGUKKyAgICAgICAgICAgIGlmIGZkIDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3InKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmQgPSAtMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKKyAgICAgICAgaWYgbm90IHNldChtb2RlKSA8PSBzZXQoJ3hyd2FiKycpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBtb2RlOiAlcycgJSAobW9kZSwpKQorICAgICAgICBpZiBzdW0oYyBpbiAncndheCcgZm9yIGMgaW4gbW9kZSkgIT0gMSBvciBtb2RlLmNvdW50KCcrJykgPiAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RlIGFuZCBhdCBtb3N0IG9uZSBwbHVzJykKKworICAgICAgICBpZiAneCcgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZWQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKyAgICAgICAgICAgIGZsYWdzID0gb3MuT19FWENMIHwgb3MuT19DUkVBVAorICAgICAgICBlbGlmICdyJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IDAKKyAgICAgICAgZWxpZiAndycgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0NSRUFUIHwgb3MuT19UUlVOQworICAgICAgICBlbGlmICdhJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hcHBlbmRpbmcgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IG9zLk9fQVBQRU5EIHwgb3MuT19DUkVBVAorCisgICAgICAgIGlmICcrJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKworICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZSBhbmQgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JEV1IKKyAgICAgICAgZWxpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIGZsYWdzIHw9IG9zLk9fUkRPTkxZCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1dST05MWQorCisgICAgICAgIGZsYWdzIHw9IGdldGF0dHIob3MsICdPX0JJTkFSWScsIDApCisKKyAgICAgICAgbm9pbmhlcml0X2ZsYWcgPSAoZ2V0YXR0cihvcywgJ09fTk9JTkhFUklUJywgMCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihvcywgJ09fQ0xPRVhFQycsIDApKQorICAgICAgICBmbGFncyB8PSBub2luaGVyaXRfZmxhZworCisgICAgICAgIG93bmVkX2ZkID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmZCA8IDA6CisgICAgICAgICAgICAgICAgaWYgbm90IGNsb3NlZmQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZScpCisgICAgICAgICAgICAgICAgaWYgb3BlbmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihmaWxlLCBmbGFncywgMG82NjYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcGVuZXIoZmlsZSwgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZkLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBpbnRlZ2VyIGZyb20gb3BlbmVyJykKKyAgICAgICAgICAgICAgICAgICAgaWYgZmQgPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yJykKKyAgICAgICAgICAgICAgICBvd25lZF9mZCA9IGZkCisgICAgICAgICAgICAgICAgaWYgbm90IG5vaW5oZXJpdF9mbGFnOgorICAgICAgICAgICAgICAgICAgICBvcy5zZXRfaW5oZXJpdGFibGUoZmQsIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZkID0gY2xvc2VmZAorICAgICAgICAgICAgZmRmc3RhdCA9IG9zLmZzdGF0KGZkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0RJUihmZGZzdGF0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcihlcnJuby5FSVNESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0cmVycm9yKGVycm5vLkVJU0RJUiksIGZpbGUpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIEF0dHJpYnVlRXJyb3IgaWYgc3RhdC5TX0lTRElSIG9yIGVycm5vLkVJU0RJUgorICAgICAgICAgICAgICAgICMgZG9uJ3QgZXhpc3QuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5fYmxrc2l6ZSA9IGdldGF0dHIoZmRmc3RhdCwgJ3N0X2Jsa3NpemUnLCAwKQorICAgICAgICAgICAgaWYgc2VsZi5fYmxrc2l6ZSA8PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX2Jsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisKKyAgICAgICAgICAgIGlmIF9zZXRtb2RlOgorICAgICAgICAgICAgICAgICMgZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzIChcclxuIDw9PiBcbikKKyAgICAgICAgICAgICAgICBfc2V0bW9kZShmZCwgb3MuT19CSU5BUlkpCisKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGUKKyAgICAgICAgICAgIGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgICAgICAjIEZvciBjb25zaXN0ZW50IGJlaGF2aW91ciwgd2UgZXhwbGljaXRseSBzZWVrIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZW5kIG9mIGZpbGUgKG90aGVyd2lzZSwgaXQgbWlnaHQgYmUgZG9uZSBvbmx5IG9uIHRoZQorICAgICAgICAgICAgICAgICMgZmlyc3Qgd3JpdGUoKSkuCisgICAgICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIFNFRUtfRU5EKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpZiBvd25lZF9mZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShvd25lZF9mZCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuX2ZkID0gZmQKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBjbGFzc19uYW1lID0gJyVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmV0dXJuICc8JXMgW2Nsb3NlZF0+JyAlIGNsYXNzX25hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgZmQ9JWQgbW9kZT0lciBjbG9zZWZkPSVyPicgJQorICAgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgc2VsZi5fZmQsIHNlbGYubW9kZSwgc2VsZi5fY2xvc2VmZCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgbmFtZT0lciBtb2RlPSVyIGNsb3NlZmQ9JXI+JyAlCisgICAgICAgICAgICAgICAgICAgIChjbGFzc19uYW1lLCBuYW1lLCBzZWxmLm1vZGUsIHNlbGYuX2Nsb3NlZmQpKQorCisgICAgZGVmIF9jaGVja1JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZycpCisKKyAgICBkZWYgX2NoZWNrV3JpdGFibGUoc2VsZiwgbXNnPU5vbmUpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZycpCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQorICAgICAgICBpZiBzaXplIGlzIE5vbmUgb3Igc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG9zLnJlYWQoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHJlYWRhbGwoc2VsZik6CisgICAgICAgICIiIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsCisgICAgICAgIG9yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tSZWFkYWJsZSgpCisgICAgICAgIGJ1ZnNpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvcyA9IG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKyAgICAgICAgICAgIGVuZCA9IG9zLmZzdGF0KHNlbGYuX2ZkKS5zdF9zaXplCisgICAgICAgICAgICBpZiBlbmQgPj0gcG9zOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBlbmQgLSBwb3MgKyAxCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSA+PSBidWZzaXplOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBsZW4ocmVzdWx0KQorICAgICAgICAgICAgICAgIGJ1ZnNpemUgKz0gbWF4KGJ1ZnNpemUsIERFRkFVTFRfQlVGRkVSX1NJWkUpCisgICAgICAgICAgICBuID0gYnVmc2l6ZSAtIGxlbihyZXN1bHQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2h1bmsgPSBvcy5yZWFkKHNlbGYuX2ZkLCBuKQorICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBjaHVuazogIyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGNodW5rCisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKworICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iIiIKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKG0pKQorICAgICAgICBuID0gbGVuKGRhdGEpCisgICAgICAgIG1bOm5dID0gZGF0YQorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworICAgICAgICBPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KKyAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsCisgICAgICAgIHJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3Mud3JpdGUoc2VsZi5fZmQsIGIpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9U0VFS19TRVQpOgorICAgICAgICAiIiJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KKyAgICAgICAgU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzCisgICAgICAgIGFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSwKKyAgICAgICAgYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCisgICAgICAgIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS4KKworICAgICAgICBOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwb3MsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYW4gaW50ZWdlciBpcyByZXF1aXJlZCcpCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCBwb3MsIHdoZW5jZSkKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJ0ZWxsKCkgLT4gaW50LiAgQ3VycmVudCBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIENhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKworICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuCisKKyAgICAgICAgU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuCisgICAgICAgIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tXcml0YWJsZSgpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLnRlbGwoKQorICAgICAgICBvcy5mdHJ1bmNhdGUoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIEEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorICAgICAgICBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgZmlsZSBzdXBwb3J0cyByYW5kb20tYWNjZXNzLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGlzIE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50ZWxsKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9zZWVrYWJsZQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHJlYWQgbW9kZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZkCisKKyAgICBkZWYgaXNhdHR5KHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmlzYXR0eShzZWxmLl9mZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWZkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZmQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2RlKHNlbGYpOgorICAgICAgICAiIiJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUiIiIKKyAgICAgICAgaWYgc2VsZi5fY3JlYXRlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAneGIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3hiJworICAgICAgICBlbGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAnYWIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2FiJworICAgICAgICBlbGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICAgICAgcmV0dXJuICdyYisnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAncmInCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJ3diJworCisKIGNsYXNzIFRleHRJT0Jhc2UoSU9CYXNlKToKIAogICAgICIiIkJhc2UgY2xhc3MgZm9yIHRleHQgSS9PLgpAQCAtMTU2Niw3ICsxOTc1LDggQEAKICAgICAjICAgLSAiY2hhcnNfLi4uIiBmb3IgaW50ZWdlciB2YXJpYWJsZXMgdGhhdCBjb3VudCBkZWNvZGVkIGNoYXJhY3RlcnMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gIjxfcHlpby5UZXh0SU9XcmFwcGVyIgorICAgICAgICByZXN1bHQgPSAiPHt9Lnt9Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZjc2ZmZmMS4uMzc0OTIzZCAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC0xNjcsOSArMTY3LDkgQEAKICAgICAgICAgICAgIHRpbWUudHpzZXQoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIG5vX3NhdmluZyA9IGZyb3plbnNldChbInV0YyIsICJnbXQiLCB0aW1lLnR6bmFtZVswXS5sb3dlcigpXSkKKyAgICAgICAgbm9fc2F2aW5nID0gZnJvemVuc2V0KHsidXRjIiwgImdtdCIsIHRpbWUudHpuYW1lWzBdLmxvd2VyKCl9KQogICAgICAgICBpZiB0aW1lLmRheWxpZ2h0OgotICAgICAgICAgICAgaGFzX3NhdmluZyA9IGZyb3plbnNldChbdGltZS50em5hbWVbMV0ubG93ZXIoKV0pCisgICAgICAgICAgICBoYXNfc2F2aW5nID0gZnJvemVuc2V0KHt0aW1lLnR6bmFtZVsxXS5sb3dlcigpfSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoKQogICAgICAgICBzZWxmLnRpbWV6b25lID0gKG5vX3NhdmluZywgaGFzX3NhdmluZykKQEAgLTI1Myw4ICsyNTMsOCBAQAogICAgICAgICAjIGZvcm1hdCBkaXJlY3RpdmVzICglbSwgZXRjLikuCiAgICAgICAgIHJlZ2V4X2NoYXJzID0gcmVfY29tcGlsZShyIihbXFwuXiQqKz9cKFwpe31cW1xdfF0pIikKICAgICAgICAgZm9ybWF0ID0gcmVnZXhfY2hhcnMuc3ViKHIiXFxcMSIsIGZvcm1hdCkKLSAgICAgICAgd2hpdGVzcGFjZV9yZXBsYWNlbWVudCA9IHJlX2NvbXBpbGUoJ1xzKycpCi0gICAgICAgIGZvcm1hdCA9IHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQuc3ViKCdccysnLCBmb3JtYXQpCisgICAgICAgIHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQgPSByZV9jb21waWxlKHInXHMrJykKKyAgICAgICAgZm9ybWF0ID0gd2hpdGVzcGFjZV9yZXBsYWNlbWVudC5zdWIocidcXHMrJywgZm9ybWF0KQogICAgICAgICB3aGlsZSAnJScgaW4gZm9ybWF0OgogICAgICAgICAgICAgZGlyZWN0aXZlX2luZGV4ID0gZm9ybWF0LmluZGV4KCclJykrMQogICAgICAgICAgICAgcHJvY2Vzc2VkX2Zvcm1hdCA9ICIlcyVzJXMiICUgKHByb2Nlc3NlZF9mb3JtYXQsCmRpZmYgLS1naXQgYS9MaWIvYWJjLnB5IGIvTGliL2FiYy5weQppbmRleCAwMzU4YTQ2Li4xY2JmOTZhIDEwMDY0NAotLS0gYS9MaWIvYWJjLnB5CisrKyBiL0xpYi9hYmMucHkKQEAgLTE2OCw3ICsxNjgsNyBAQAogCiAgICAgZGVmIF9kdW1wX3JlZ2lzdHJ5KGNscywgZmlsZT1Ob25lKToKICAgICAgICAgIiIiRGVidWcgaGVscGVyIHRvIHByaW50IHRoZSBBQkMgcmVnaXN0cnkuIiIiCi0gICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19uYW1lX18pLCBmaWxlPWZpbGUpCisgICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19xdWFsbmFtZV9fKSwgZmlsZT1maWxlKQogICAgICAgICBwcmludCgiSW52LmNvdW50ZXI6ICVzIiAlIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciwgZmlsZT1maWxlKQogICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoY2xzLl9fZGljdF9fLmtleXMoKSk6CiAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIl9hYmNfIik6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggYmUyNzZiYi4uOWEwNjcxOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTIwOSwxMSArMTIwOSw2IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgTmFtZXNwYWNlKToKLSAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX19kaWN0X18KIApAQCAtMTU5NSw2ICsxNTkwLDcgQEAKICAgICAgICAgLSBhcmd1bWVudF9kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgYXJndW1lbnRzCiAgICAgICAgIC0gY29uZmxpY3RfaGFuZGxlciAtLSBTdHJpbmcgaW5kaWNhdGluZyBob3cgdG8gaGFuZGxlIGNvbmZsaWN0cwogICAgICAgICAtIGFkZF9oZWxwIC0tIEFkZCBhIC1oLy1oZWxwIG9wdGlvbgorICAgICAgICAtIGFsbG93X2FiYnJldiAtLSBBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseQogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCkBAIC0xNjA4LDcgKzE2MDQsOCBAQAogICAgICAgICAgICAgICAgICBmcm9tZmlsZV9wcmVmaXhfY2hhcnM9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgICBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsCi0gICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpOgorICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlLAorICAgICAgICAgICAgICAgICBhbGxvd19hYmJyZXY9VHJ1ZSk6CiAKICAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgIHN1cGVyaW5pdChkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKQEAgLTE2MjYsNiArMTYyMyw3IEBACiAgICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgIHNlbGYuZnJvbWZpbGVfcHJlZml4X2NoYXJzID0gZnJvbWZpbGVfcHJlZml4X2NoYXJzCiAgICAgICAgIHNlbGYuYWRkX2hlbHAgPSBhZGRfaGVscAorICAgICAgICBzZWxmLmFsbG93X2FiYnJldiA9IGFsbG93X2FiYnJldgogCiAgICAgICAgIGFkZF9ncm91cCA9IHNlbGYuYWRkX2FyZ3VtZW50X2dyb3VwCiAgICAgICAgIHNlbGYuX3Bvc2l0aW9uYWxzID0gYWRkX2dyb3VwKF8oJ3Bvc2l0aW9uYWwgYXJndW1lbnRzJykpCkBAIC0yMTAzLDIzICsyMTAxLDI0IEBACiAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnCiAKLSAgICAgICAgIyBzZWFyY2ggdGhyb3VnaCBhbGwgcG9zc2libGUgcHJlZml4ZXMgb2YgdGhlIG9wdGlvbiBzdHJpbmcKLSAgICAgICAgIyBhbmQgYWxsIGFjdGlvbnMgaW4gdGhlIHBhcnNlciBmb3IgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zCi0gICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQorICAgICAgICBpZiBzZWxmLmFsbG93X2FiYnJldjoKKyAgICAgICAgICAgICMgc2VhcmNoIHRocm91Z2ggYWxsIHBvc3NpYmxlIHByZWZpeGVzIG9mIHRoZSBvcHRpb24gc3RyaW5nCisgICAgICAgICAgICAjIGFuZCBhbGwgYWN0aW9ucyBpbiB0aGUgcGFyc2VyIGZvciBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMKKyAgICAgICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQogCi0gICAgICAgICMgaWYgbXVsdGlwbGUgYWN0aW9ucyBtYXRjaCwgdGhlIG9wdGlvbiBzdHJpbmcgd2FzIGFtYmlndW91cwotICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgotICAgICAgICAgICAgb3B0aW9ucyA9ICcsICcuam9pbihbb3B0aW9uX3N0cmluZwotICAgICAgICAgICAgICAgIGZvciBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZyBpbiBvcHRpb25fdHVwbGVzXSkKLSAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KLSAgICAgICAgICAgIG1zZyA9IF8oJ2FtYmlndW91cyBvcHRpb246ICUob3B0aW9uKXMgY291bGQgbWF0Y2ggJShtYXRjaGVzKXMnKQotICAgICAgICAgICAgc2VsZi5lcnJvcihtc2cgJSBhcmdzKQorICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSBhY3Rpb25zIG1hdGNoLCB0aGUgb3B0aW9uIHN0cmluZyB3YXMgYW1iaWd1b3VzCisgICAgICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgorICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAnLCAnLmpvaW4oW29wdGlvbl9zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9yIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnIGluIG9wdGlvbl90dXBsZXNdKQorICAgICAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KKyAgICAgICAgICAgICAgICBtc2cgPSBfKCdhbWJpZ3VvdXMgb3B0aW9uOiAlKG9wdGlvbilzIGNvdWxkIG1hdGNoICUobWF0Y2hlcylzJykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlIGFyZ3MpCiAKLSAgICAgICAgIyBpZiBleGFjdGx5IG9uZSBhY3Rpb24gbWF0Y2hlZCwgdGhpcyBzZWdtZW50YXRpb24gaXMgZ29vZCwKLSAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KLSAgICAgICAgZWxpZiBsZW4ob3B0aW9uX3R1cGxlcykgPT0gMToKLSAgICAgICAgICAgIG9wdGlvbl90dXBsZSwgPSBvcHRpb25fdHVwbGVzCi0gICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCisgICAgICAgICAgICAjIGlmIGV4YWN0bHkgb25lIGFjdGlvbiBtYXRjaGVkLCB0aGlzIHNlZ21lbnRhdGlvbiBpcyBnb29kLAorICAgICAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KKyAgICAgICAgICAgIGVsaWYgbGVuKG9wdGlvbl90dXBsZXMpID09IDE6CisgICAgICAgICAgICAgICAgb3B0aW9uX3R1cGxlLCA9IG9wdGlvbl90dXBsZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCiAKICAgICAgICAgIyBpZiBpdCB3YXMgbm90IGZvdW5kIGFzIGFuIG9wdGlvbiwgYnV0IGl0IGxvb2tzIGxpa2UgYSBuZWdhdGl2ZQogICAgICAgICAjIG51bWJlciwgaXQgd2FzIG1lYW50IHRvIGJlIHBvc2l0aW9uYWwKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCAxNGMxNTJmLi5mNzI4ZDFiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODcsNiArMjg3LDkgQEAKIAogY2xhc3MgZmlmbzoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3F1ZXVlcy5weSBiL0xpYi9hc3luY2lvL3F1ZXVlcy5weQppbmRleCBlZDExNjYyLi41MDU0M2M4IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9xdWV1ZXMucHkKKysrIGIvTGliL2FzeW5jaW8vcXVldWVzLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiUXVldWVzIiIiCiAKLV9fYWxsX18gPSBbJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJywgJ1F1ZXVlRnVsbCcsICdRdWV1ZUVtcHR5JywKLSAgICAgICAgICAgJ0pvaW5hYmxlUXVldWUnXQorX19hbGxfXyA9IFsnUXVldWUnLCAnUHJpb3JpdHlRdWV1ZScsICdMaWZvUXVldWUnLCAnUXVldWVGdWxsJywgJ1F1ZXVlRW1wdHknXQogCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBoZWFwcQpAQCAtMjg3LDcgKzI4NiwzIEBACiAKICAgICBkZWYgX2dldChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3F1ZXVlLnBvcCgpCi0KLQotSm9pbmFibGVRdWV1ZSA9IFF1ZXVlCi0iIiJEZXByZWNhdGVkIGFsaWFzIGZvciBRdWV1ZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCAwMGE2Mzk2Li4zYjUxZjBmIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKICAgICAgZXJyb3Jjb2RlCiAKLV9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoKEVDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERikpCitfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KHtFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREZ9KQogCiB0cnk6CiAgICAgc29ja2V0X21hcApAQCAtMTQxLDEwICsxNDEsNyBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKIAogICAgICAgICBmb3IgZmQgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0xODIsMTAgKzE3OSw4IEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByID0gW10KKworICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQogICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CkBAIC0yMjAsNyArMjE1LDcgQEAKICAgICBjb25uZWN0aW5nID0gRmFsc2UKICAgICBjbG9zaW5nID0gRmFsc2UKICAgICBhZGRyID0gTm9uZQotICAgIGlnbm9yZV9sb2dfdHlwZXMgPSBmcm96ZW5zZXQoWyd3YXJuaW5nJ10pCisgICAgaWdub3JlX2xvZ190eXBlcyA9IGZyb3plbnNldCh7J3dhcm5pbmcnfSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgaWYgbWFwIGlzIE5vbmU6CkBAIC0yNTUsNyArMjUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBzdGF0dXMgPSBbc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXysiLiIrc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCisgICAgICAgIHN0YXR1cyA9IFtzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fKyIuIitzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX19dCiAgICAgICAgIGlmIHNlbGYuYWNjZXB0aW5nIGFuZCBzZWxmLmFkZHI6CiAgICAgICAgICAgICBzdGF0dXMuYXBwZW5kKCdsaXN0ZW5pbmcnKQogICAgICAgICBlbGlmIHNlbGYuY29ubmVjdGVkOgpAQCAtNDA0LDIwICszOTksNiBAQAogICAgICAgICAgICAgICAgIGlmIHdoeS5hcmdzWzBdIG5vdCBpbiAoRU5PVENPTk4sIEVCQURGKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAotICAgICMgY2hlYXAgaW5oZXJpdGFuY2UsIHVzZWQgdG8gcGFzcyBhbGwgb3RoZXIgYXR0cmlidXRlCi0gICAgIyByZWZlcmVuY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXRhdHRyID0gZ2V0YXR0cihzZWxmLnNvY2tldCwgYXR0cikKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGF0dHIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gIiUobWUpcy4lKGF0dHIpcyBpcyBkZXByZWNhdGVkOyB1c2UgJShtZSlzLnNvY2tldC4lKGF0dHIpcyAiIFwKLSAgICAgICAgICAgICAgICAgICJpbnN0ZWFkIiAlIHsnbWUnIDogc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICdhdHRyJyA6IGF0dHJ9Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgICAgICByZXR1cm4gcmV0YXR0cgotCiAgICAgIyBsb2cgYW5kIGxvZ19pbmZvIG1heSBiZSBvdmVycmlkZGVuIHRvIHByb3ZpZGUgbW9yZSBzb3BoaXN0aWNhdGVkCiAgICAgIyBsb2dnaW5nIGFuZCB3YXJuaW5nIG1ldGhvZHMuIEluIGdlbmVyYWwsIGxvZyBpcyBmb3IgJ2hpdCcgbG9nZ2luZwogICAgICMgYW5kICdsb2dfaW5mbycgaXMgZm9yIGluZm9ybWF0aW9uYWwsIHdhcm5pbmcgYW5kIGVycm9yIGxvZ2dpbmcuCkBAIC02MDQsOCArNTg1LDYgQEAKICMgUmVnYXJkbGVzcywgdGhpcyBpcyB1c2VmdWwgZm9yIHBpcGVzLCBhbmQgc3RkaW4vc3Rkb3V0Li4uCiAKIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKLSAgICBpbXBvcnQgZmNudGwKLQogICAgIGNsYXNzIGZpbGVfd3JhcHBlcjoKICAgICAgICAgIyBIZXJlIHdlIG92ZXJyaWRlIGp1c3QgZW5vdWdoIHRvIG1ha2UgYSBmaWxlCiAgICAgICAgICMgbG9vayBsaWtlIGEgc29ja2V0IGZvciB0aGUgcHVycG9zZXMgb2YgYXN5bmNvcmUuCkBAIC02NTYsOSArNjM1LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLnNldF9maWxlKGZkKQogICAgICAgICAgICAgIyBzZXQgaXQgdG8gbm9uLWJsb2NraW5nIG1vZGUKLSAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBGYWxzZSkKIAogICAgICAgICBkZWYgc2V0X2ZpbGUoc2VsZiwgZmQpOgogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBmaWxlX3dyYXBwZXIoZmQpCmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA4MjcyZDVjLi41NmI1Zjg1IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzNSwxNCArMjM1LDEzIEBACiAgICAgZmluZm8gPSBnZXRmaWxlaW5mbyhpbnApCiAgICAgb2ZwID0gQmluSGV4KGZpbmZvLCBvdXQpCiAKLSAgICBpZnAgPSBpby5vcGVuKGlucCwgJ3JiJykKLSAgICAjIFhYWFggRG8gdGV4dGZpbGUgdHJhbnNsYXRpb24gb24gbm9uLW1hYyBzeXN0ZW1zCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKLSAgICAgICAgaWYgbm90IGQ6IGJyZWFrCi0gICAgICAgIG9mcC53cml0ZShkKQotICAgIG9mcC5jbG9zZV9kYXRhKCkKLSAgICBpZnAuY2xvc2UoKQorICAgIHdpdGggaW8ub3BlbihpbnAsICdyYicpIGFzIGlmcDoKKyAgICAgICAgIyBYWFhYIERvIHRleHRmaWxlIHRyYW5zbGF0aW9uIG9uIG5vbi1tYWMgc3lzdGVtcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkOiBicmVhaworICAgICAgICAgICAgb2ZwLndyaXRlKGQpCisgICAgICAgIG9mcC5jbG9zZV9kYXRhKCkKIAogICAgIGlmcCA9IG9wZW5yc3JjKGlucCwgJ3JiJykKICAgICB3aGlsZSBUcnVlOgpAQCAtNDU5LDEzICs0NTgsMTIgQEAKICAgICBpZiBub3Qgb3V0OgogICAgICAgICBvdXQgPSBpZnAuRk5hbWUKIAotICAgIG9mcCA9IGlvLm9wZW4ob3V0LCAnd2InKQotICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBkID0gaWZwLnJlYWQoMTI4MDAwKQotICAgICAgICBpZiBub3QgZDogYnJlYWsKLSAgICAgICAgb2ZwLndyaXRlKGQpCi0gICAgb2ZwLmNsb3NlKCkKKyAgICB3aXRoIGlvLm9wZW4ob3V0LCAnd2InKSBhcyBvZnA6CisgICAgICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGQgPSBpZnAucmVhZCgxMjgwMDApCisgICAgICAgICAgICBpZiBub3QgZDogYnJlYWsKKyAgICAgICAgICAgIG9mcC53cml0ZShkKQogICAgIGlmcC5jbG9zZV9kYXRhKCkKIAogICAgIGQgPSBpZnAucmVhZF9yc3JjKDEyODAwMCkKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IDZjNWE2MGQuLmJjNzhjNTQgMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTIsNiArMTIsNyBAQAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFJMb2NrCkBAIC0yMywxMyArMjQsMTEgQEAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgQloyRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAKICAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTYxLDEzICs2MCwxMSBAQAogICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCi0gICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgIyB3cml0ZWxpbmVzKCkgZG9lcyBub3QgZGVhZGxvY2suCiAgICAgICAgIHNlbGYuX2xvY2sgPSBSTG9jaygpCiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIGJ1ZmZlcmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiAnYnVmZmVyaW5nJyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKQEAgLTc5LDkgKzc2LDYgQEAKICAgICAgICAgaWYgbW9kZSBpbiAoIiIsICJyIiwgInJiIik6CiAgICAgICAgICAgICBtb2RlID0gInJiIgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgogICAgICAgICAgICAgbW9kZSA9ICJ3YiIKICAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCkBAIC0xMDcsNiArMTAxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLAorICAgICAgICAgICAgICAgIEJaMkRlY29tcHJlc3NvciwgdHJhaWxpbmdfZXJyb3I9T1NFcnJvcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTEzMCw4ICsxMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjbG9zZWQoc2VsZik6CkBAIC0xNDUsMTI1ICsxNDUsMTggQEAKIAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9idWZmZXIuc2Vla2FibGUoKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFECiAKICAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQogCi0gICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCi0KLSAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQotICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKLQotICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCi0gICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90Ci0gICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCi0gICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKLQotICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6Ci0gICAgICAgICAgICAgICAgICAgICMgRW5kLW9mLXN0cmVhbSBtYXJrZXIgYW5kIGVuZCBvZiBmaWxlLiBXZSdyZSBnb29kLgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFByb2JsZW0gLSB3ZSB3ZXJlIGV4cGVjdGluZyBtb3JlIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgYnppcDIgc3RyZWFtLiBXZSdyZSBkb25lIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBuPTApOgogICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KIApAQCAtMjcyLDkgKzE2NSwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKQorICAgICAgICAgICAgIyBhbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSAoZXhjZXB0IGF0IEVPRiksIGluZGVwZW5kZW50CisgICAgICAgICAgICAjIG9mIHRoZSB2YWx1ZSBvZiBuCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsobikKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0yODQsNDcgKzE3OCwyOSBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKLSAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKLSAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLgorICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYi4KIAogICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KICAgICAgICAgIiIiCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkaW50byhiKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMzOSwxNSArMjE1LDcgQEAKICAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCi0gICAgICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNjEsNyArMjI5LDggQEAKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQogICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZXMoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KQEAgLTM4NiwxOCArMjU1LDkgQEAKICAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisgICAgICAgICAgICByZXR1cm4gX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0ud3JpdGVsaW5lcyhzZWxmLCBzZXEpCiAKLSAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KLSAgICBkZWYgX3Jld2luZChzZWxmKToKLSAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQotICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCiAKICAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKQEAgLTQxNCwzNSArMjc0LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCi0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgotICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6ICVzIiAlICh3aGVuY2UsKSkKLQotICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCi0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCA2OTU5YzllLi40YmUyOGJhIDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTU2Niw2ICs1NjYsMTIgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbi4iIiIKICAgICAgICAgcmV0dXJuICJGaWVsZFN0b3JhZ2UoJXIsICVyLCAlcikiICUgKApkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDZlYjUyZTcuLmIyOTExMDAgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTI5NCw5ICsyOTQsOCBAQAogICAgICAgICAgICAgKGZkLCBwYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4PXN1ZmZpeCwgZGlyPXNlbGYubG9nZGlyKQogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9zLmZkb3BlbihmZCwgJ3cnKQotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQotICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQogICAgICAgICAgICAgICAgIG1zZyA9ICclcyBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhpcyBlcnJvci4nICUgcGF0aAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBzYXZlIHRyYWNlYmFjayB0byAlcywgYnV0IGZhaWxlZC4nICUgcGF0aApkaWZmIC0tZ2l0IGEvTGliL2NvZGUucHkgYi9MaWIvY29kZS5weQppbmRleCBmODE4NGI2Li41MzI0NGUzIDEwMDY0NAotLS0gYS9MaWIvY29kZS5weQorKysgYi9MaWIvY29kZS5weQpAQCAtNyw2ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IGFyZ3BhcnNlCiBmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBjb21waWxlX2NvbW1hbmQKIAogX19hbGxfXyA9IFsiSW50ZXJhY3RpdmVJbnRlcnByZXRlciIsICJJbnRlcmFjdGl2ZUNvbnNvbGUiLCAiaW50ZXJhY3QiLApAQCAtMTM2LDI1ICsxMzcsMTggQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCisgICAgICAgIHN5cy5sYXN0X3R5cGUsIHN5cy5sYXN0X3ZhbHVlLCBsYXN0X3RiID0gZWkgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBsYXN0X3RiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKLSAgICAgICAgICAgIHRibGlzdCA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQotICAgICAgICAgICAgZGVsIHRibGlzdFs6MV0KLSAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9saXN0KHRibGlzdCkKLSAgICAgICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgICAgIGxpbmVzLmluc2VydCgwLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIikKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKKyAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZWlbMF0sIGVpWzFdLCBsYXN0X3RiLnRiX25leHQpCisgICAgICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soZWlbMF0sIGVpWzFdLCBsYXN0X3RiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCi0gICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQotICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGFzdF90YiA9IGVpID0gTm9uZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KQEAgLTI5OSw0ICsyOTMsMTIgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGludGVyYWN0KCkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMiKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5xIG9yIHN5cy5mbGFncy5xdWlldDoKKyAgICAgICAgYmFubmVyID0gJycKKyAgICBlbHNlOgorICAgICAgICBiYW5uZXIgPSBOb25lCisgICAgaW50ZXJhY3QoYmFubmVyKQpkaWZmIC0tZ2l0IGEvTGliL2NvZGVjcy5weSBiL0xpYi9jb2RlY3MucHkKaW5kZXggNjZkZDAyNC4uMzFlNzNiZCAxMDA2NDQKLS0tIGEvTGliL2NvZGVjcy5weQorKysgYi9MaWIvY29kZWNzLnB5CkBAIC0yNyw3ICsyNyw4IEBACiAgICAgICAgICAgICJnZXRpbmNyZW1lbnRhbGRlY29kZXIiLCAiZ2V0cmVhZGVyIiwgImdldHdyaXRlciIsCiAgICAgICAgICAgICJlbmNvZGUiLCAiZGVjb2RlIiwgIml0ZXJlbmNvZGUiLCAiaXRlcmRlY29kZSIsCiAgICAgICAgICAgICJzdHJpY3RfZXJyb3JzIiwgImlnbm9yZV9lcnJvcnMiLCAicmVwbGFjZV9lcnJvcnMiLAotICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzIiwgImJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzIiwKKyAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyIsICJuYW1lcmVwbGFjZV9lcnJvcnMiLAogICAgICAgICAgICAicmVnaXN0ZXJfZXJyb3IiLCAibG9va3VwX2Vycm9yIl0KIAogIyMjIENvbnN0YW50cwpAQCAtMTA1LDggKzEwNiw4IEBACiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzLiVzIG9iamVjdCBmb3IgZW5jb2RpbmcgJXMgYXQgMHgleD4iICUgXAotICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgcmV0dXJuICI8JXMuJXMgb2JqZWN0IGZvciBlbmNvZGluZyAlcyBhdCAlI3g+IiAlIFwKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIGlkKHNlbGYpKQogCiBjbGFzcyBDb2RlYzoKQEAgLTEyNiw3ICsxMjcsOCBAQAogICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScgLSByZXBsYWNlIHdpdGggcHJpdmF0ZSBjb2RlIHBvaW50cyBVK0RDbm4uCiAgICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuCi0gICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgIC0gUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICAgICdiYWNrc2xhc2hyZXBsYWNlJyAgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAgICAgICduYW1lcmVwbGFjZScgICAgICAgLSBSZXBsYWNlIHdpdGggXFxOey4uLn0gZXNjYXBlIHNlcXVlbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCiAKICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgdmlhIHJlZ2lzdGVyX2Vycm9yLgpAQCAtMzU4LDcgKzM2MCw4IEBACiAgICAgICAgICAgICAgJ3htbGNoYXJyZWZyZXBsYWNlJyAtIFJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciByZWZlcmVuY2UuCiAgICAgICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzIChvbmx5IGZvciBlbmNvZGluZykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgICAgICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWVzIGNhbiBiZSBleHRlbmRlZCB2aWEKICAgICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLgpAQCAtNDI4LDcgKzQzMSw4IEBACiAKICAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICAnaWdub3JlJyAtIGlnbm9yZSB0aGUgY2hhcmFjdGVyIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0Ci0gICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7CisgICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlczsKIAogICAgICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHBhcmFtZXRlciB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYQogICAgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IuCkBAIC0xMDgwLDYgKzEwODQsNyBAQAogICAgIHJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJyZXBsYWNlIikKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInhtbGNoYXJyZWZyZXBsYWNlIikKICAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IGxvb2t1cF9lcnJvcigiYmFja3NsYXNocmVwbGFjZSIpCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJuYW1lcmVwbGFjZSIpCiBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgIyBJbiAtLWRpc2FibGUtdW5pY29kZSBidWlsZHMsIHRoZXNlIGVycm9yIGhhbmRsZXIgYXJlIG1pc3NpbmcKICAgICBzdHJpY3RfZXJyb3JzID0gTm9uZQpAQCAtMTA4Nyw2ICsxMDkyLDcgQEAKICAgICByZXBsYWNlX2Vycm9ycyA9IE5vbmUKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMgPSBOb25lCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gTm9uZQogCiAjIFRlbGwgbW9kdWxlZmluZGVyIHRoYXQgdXNpbmcgY29kZWNzIHByb2JhYmx5IG5lZWRzIHRoZSBlbmNvZGluZ3MKICMgcGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IDU2NWFlODYuLjgwZGM0ZjYgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgX2NvbGxlY3Rpb25zX2FiYwogX19hbGxfXyArPSBfY29sbGVjdGlvbnNfYWJjLl9fYWxsX18KIAotZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKQEAgLTE2LDEwICsxNSw0MCBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdCBhcyBfcmVwZWF0LCBjaGFpbiBhcyBfY2hhaW4sIHN0YXJtYXAgYXMgX3N0YXJtYXAKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIgYXMgX3JlY3Vyc2l2ZV9yZXByCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIE11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihkZXF1ZSkKKwordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIE9yZGVyZWREaWN0CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitjbGFzcyBfT3JkZXJlZERpY3RLZXlzVmlldyhLZXlzVmlldyk6CisKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHJldmVyc2VkKHNlbGYuX21hcHBpbmcpCisKK2NsYXNzIF9PcmRlcmVkRGljdEl0ZW1zVmlldyhJdGVtc1ZpZXcpOgorCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgZm9yIGtleSBpbiByZXZlcnNlZChzZWxmLl9tYXBwaW5nKToKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHNlbGYuX21hcHBpbmdba2V5XSkKKworY2xhc3MgX09yZGVyZWREaWN0VmFsdWVzVmlldyhWYWx1ZXNWaWV3KToKKworICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9tYXBwaW5nW2tleV0KKwogY2xhc3MgX0xpbmsob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAncHJldicsICduZXh0JywgJ2tleScsICdfX3dlYWtyZWZfXycKIApAQCAtODMsNiArMTEyLDggQEAKICAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgIGxpbmtfcHJldi5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CisgICAgICAgIGxpbmsucHJldiA9IE5vbmUKKyAgICAgICAgbGluay5uZXh0ID0gTm9uZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAnb2QuX19pdGVyX18oKSA8PT0+IGl0ZXIob2QpJwpAQCAtMTY2LDkgKzE5NywxOSBAQAogICAgICAgICByZXR1cm4gc2l6ZQogCiAgICAgdXBkYXRlID0gX191cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51cGRhdGUKLSAgICBrZXlzID0gTXV0YWJsZU1hcHBpbmcua2V5cwotICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcwotICAgIGl0ZW1zID0gTXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAiRC5rZXlzKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3Mga2V5cyIKKyAgICAgICAgcmV0dXJuIF9PcmRlcmVkRGljdEtleXNWaWV3KHNlbGYpCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgICJELml0ZW1zKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgaXRlbXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RJdGVtc1ZpZXcoc2VsZikKKworICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICJELnZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyB2YWx1ZXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RWYWx1ZXNWaWV3KHNlbGYpCisKICAgICBfX25lX18gPSBNdXRhYmxlTWFwcGluZy5fX25lX18KIAogICAgIF9fbWFya2VyID0gb2JqZWN0KCkKQEAgLTIzMyw2ICsyNzQsMTMgQEAKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIExlYXZlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGluIHBsYWNlLgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIG5hbWVkdHVwbGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC03MDUsMTQgKzc1MywyMiBAQAogCiAgICAgZGVmIF9fcG9zX18oc2VsZik6CiAgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCi0gICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisgICAgICAgIHJlc3VsdCA9IENvdW50ZXIoKQorICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgaWYgY291bnQgPiAwOgorICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfX25lZ19fKHNlbGYpOgogICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKICAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KIAogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKyAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gMCAtIGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKICAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCkBAIC05NTgsNyArMTAxNCw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPCAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPD0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPT0gc2VsZi5fX2Nhc3Qob3RoZXIpCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgIT0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPiAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPj0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fY2FzdChzZWxmLCBvdGhlcik6CkBAIC0xMDMwLDE1ICsxMDg1LDEzIEBACiAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKTogcmV0dXJuIGZsb2F0KHNlbGYuZGF0YSkKICAgICBkZWYgX19jb21wbGV4X18oc2VsZik6IHJldHVybiBjb21wbGV4KHNlbGYuZGF0YSkKICAgICBkZWYgX19oYXNoX18oc2VsZik6IHJldHVybiBoYXNoKHNlbGYuZGF0YSkKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5kYXRhWzpdLCkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBzdHJpbmcuZGF0YQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHN0cmluZwotICAgIGRlZiBfX25lX18oc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBzdHJpbmcuZGF0YQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhICE9IHN0cmluZwogICAgIGRlZiBfX2x0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8IHN0cmluZy5kYXRhCkBAIC0xMDc4LDkgKzExMzEsMTMgQEAKICAgICBfX3JtdWxfXyA9IF9fbXVsX18KICAgICBkZWYgX19tb2RfXyhzZWxmLCBhcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSAlIGFyZ3MpCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIGZvcm1hdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmb3JtYXQgJSBhcmdzKQogCiAgICAgIyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyOgogICAgIGRlZiBjYXBpdGFsaXplKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmNhcGl0YWxpemUoKSkKKyAgICBkZWYgY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2FzZWZvbGQoKSkKICAgICBkZWYgY2VudGVyKHNlbGYsIHdpZHRoLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2VudGVyKHdpZHRoLCAqYXJncykpCiAgICAgZGVmIGNvdW50KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CkBAIC0xMTAzLDYgKzExNjAsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmZpbmQoc3ViLCBzdGFydCwgZW5kKQogICAgIGRlZiBmb3JtYXQoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0KCphcmdzLCAqKmt3ZHMpCisgICAgZGVmIGZvcm1hdF9tYXAoc2VsZiwgbWFwcGluZyk6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0X21hcChtYXBwaW5nKQogICAgIGRlZiBpbmRleChzZWxmLCBzdWIsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmluZGV4KHN1Yiwgc3RhcnQsIGVuZCkKICAgICBkZWYgaXNhbHBoYShzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2FscGhhKCkKQEAgLTExMTIsNiArMTE3MSw3IEBACiAgICAgZGVmIGlzaWRlbnRpZmllcihzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2lkZW50aWZpZXIoKQogICAgIGRlZiBpc2xvd2VyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzbG93ZXIoKQogICAgIGRlZiBpc251bWVyaWMoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNudW1lcmljKCkKKyAgICBkZWYgaXNwcmludGFibGUoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNwcmludGFibGUoKQogICAgIGRlZiBpc3NwYWNlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzc3BhY2UoKQogICAgIGRlZiBpc3RpdGxlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdGl0bGUoKQogICAgIGRlZiBpc3VwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdXBwZXIoKQpAQCAtMTEyMCw2ICsxMTgwLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sanVzdCh3aWR0aCwgKmFyZ3MpKQogICAgIGRlZiBsb3dlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sb3dlcigpKQogICAgIGRlZiBsc3RyaXAoc2VsZiwgY2hhcnM9Tm9uZSk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEubHN0cmlwKGNoYXJzKSkKKyAgICBtYWtldHJhbnMgPSBzdHIubWFrZXRyYW5zCiAgICAgZGVmIHBhcnRpdGlvbihzZWxmLCBzZXApOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnBhcnRpdGlvbihzZXApCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgb2xkLCBuZXcsIG1heHNwbGl0PS0xKToKZGlmZiAtLWdpdCBhL0xpYi9jb21waWxlYWxsLnB5IGIvTGliL2NvbXBpbGVhbGwucHkKaW5kZXggZDk1N2VlNS4uNjRjMGE5YSAxMDA2NDQKLS0tIGEvTGliL2NvbXBpbGVhbGwucHkKKysrIGIvTGliL2NvbXBpbGVhbGwucHkKQEAgLTEsNCArMSw0IEBACi0iIiJNb2R1bGUvc2NyaXB0IHRvIGJ5dGUtY29tcGlsZSBhbGwgLnB5IGZpbGVzIHRvIC5weWMgKG9yIC5weW8pIGZpbGVzLgorIiIiTW9kdWxlL3NjcmlwdCB0byBieXRlLWNvbXBpbGUgYWxsIC5weSBmaWxlcyB0byAucHljIGZpbGVzLgogCiBXaGVuIGNhbGxlZCBhcyBhIHNjcmlwdCB3aXRoIGFyZ3VtZW50cywgdGhpcyBjb21waWxlcyB0aGUgZGlyZWN0b3JpZXMKIGdpdmVuIGFzIGFyZ3VtZW50cyByZWN1cnNpdmVseTsgdGhlIC1sIG9wdGlvbiBwcmV2ZW50cyBpdCBmcm9tCkBAIC0xNiwzMiArMTYsMjQgQEAKIGltcG9ydCBweV9jb21waWxlCiBpbXBvcnQgc3RydWN0CiAKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIFByb2Nlc3NQb29sRXhlY3V0b3IgPSBOb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKLWRlZiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwKLSAgICAgICAgICAgICAgICBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZS4KLQotICAgIEFyZ3VtZW50cyAob25seSBkaXIgaXMgcmVxdWlyZWQpOgotCi0gICAgZGlyOiAgICAgICB0aGUgZGlyZWN0b3J5IHRvIGJ5dGUtY29tcGlsZQotICAgIG1heGxldmVsczogbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMTApCi0gICAgZGRpcjogICAgICB0aGUgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlCi0gICAgICAgICAgICAgICBmaWxlIGFzIGl0IGlzIGNvbXBpbGVkIGludG8gZWFjaCBieXRlLWNvZGUgZmlsZS4KLSAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgotICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKLSAgICBvcHRpbWl6ZTogIG9wdGltaXphdGlvbiBsZXZlbCBvciAtMSBmb3IgbGV2ZWwgb2YgdGhlIGludGVycHJldGVyCi0gICAgIiIiCitkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKKyAgICAgICAgaWYgcXVpZXQgPCAyOgorICAgICAgICAgICAgcHJpbnQoIkNhbid0IGxpc3QgeyFyfSIuZm9ybWF0KGRpcikpCiAgICAgICAgIG5hbWVzID0gW10KICAgICBuYW1lcy5zb3J0KCkKLSAgICBzdWNjZXNzID0gMQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBuYW1lID09ICdfX3B5Y2FjaGVfXyc6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTEsMTcgKzQzLDUzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkZmlsZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZnVsbG5hbWUpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgIHlpZWxkIGZ1bGxuYW1lCiAgICAgICAgIGVsaWYgKG1heGxldmVscyA+IDAgYW5kIG5hbWUgIT0gb3MuY3VyZGlyIGFuZCBuYW1lICE9IG9zLnBhcmRpciBhbmQKICAgICAgICAgICAgICAgb3MucGF0aC5pc2RpcihmdWxsbmFtZSkgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSkpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGZ1bGxuYW1lLCBtYXhsZXZlbHMgLSAxLCBkZmlsZSwgZm9yY2UsIHJ4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0LCBsZWdhY3ksIG9wdGltaXplKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX3dhbGtfZGlyKGZ1bGxuYW1lLCBkZGlyPWRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGV2ZWxzPW1heGxldmVscyAtIDEsIHF1aWV0PXF1aWV0KQorCitkZWYgY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsCisgICAgICAgICAgICAgICAgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSwgd29ya2Vycz0xKToKKyAgICAiIiJCeXRlLWNvbXBpbGUgYWxsIG1vZHVsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSB0cmVlLgorCisgICAgQXJndW1lbnRzIChvbmx5IGRpciBpcyByZXF1aXJlZCk6CisKKyAgICBkaXI6ICAgICAgIHRoZSBkaXJlY3RvcnkgdG8gYnl0ZS1jb21waWxlCisgICAgbWF4bGV2ZWxzOiBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCAoZGVmYXVsdCAxMCkKKyAgICBkZGlyOiAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUKKyAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgaXMgY29tcGlsZWQgaW50byBlYWNoIGJ5dGUtY29kZSBmaWxlLgorICAgIGZvcmNlOiAgICAgaWYgVHJ1ZSwgZm9yY2UgY29tcGlsYXRpb24sIGV2ZW4gaWYgdGltZXN0YW1wcyBhcmUgdXAtdG8tZGF0ZQorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCisgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocworICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKKyAgICB3b3JrZXJzOiAgIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAgICAiIiIKKyAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKKyAgICBzdWNjZXNzID0gMQorICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd29ya2VycyA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwJykKKworICAgICAgICB3b3JrZXJzID0gd29ya2VycyBvciBOb25lCisgICAgICAgIHdpdGggUHJvY2Vzc1Bvb2xFeGVjdXRvcihtYXhfd29ya2Vycz13b3JrZXJzKSBhcyBleGVjdXRvcjoKKyAgICAgICAgICAgIHJlc3VsdHMgPSBleGVjdXRvci5tYXAocGFydGlhbChjb21waWxlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyLCBmb3JjZT1mb3JjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1yeCwgcXVpZXQ9cXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQorICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSwgb3B0aW1pemUpOgogICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsCitkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLAogICAgICAgICAgICAgICAgICBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKToKICAgICAiIiJCeXRlLWNvbXBpbGUgb25lIGZpbGUuCiAKQEAgLTcxLDcgKzk5LDggQEAKICAgICBkZGlyOiAgICAgIGlmIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgY29tcGlsZWQgaW4gdG8gdGhlCiAgICAgICAgICAgICAgICBieXRlLWNvZGUgZmlsZS4KICAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKQEAgLTg3LDExICsxMTYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbG5hbWUpOgogICAgICAgICBpZiBsZWdhY3k6Ci0gICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpCisgICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgJ2MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9IG9wdGltaXplIGlmIG9wdGltaXplID49IDEgZWxzZSAnJwogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lKQogICAgICAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNmaWxlKQpAQCAtMTE0LDcgKzE0NCwxMCBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgaWYgcXVpZXQ6CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcworICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyoqKiAnLCBlbmQ9JycpCkBAIC0xMjMsMjAgKzE1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKKyAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIEVycm9yIGNvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PUZhbHNlLAorZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsCiAgICAgICAgICAgICAgICAgIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpOgogICAgICIiIkJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlIG9uIHN5cy5wYXRoLgogCkBAIC0xNDUsMTQgKzE3OSwxNSBAQAogICAgIHNraXBfY3VyZGlyOiBpZiB0cnVlLCBza2lwIGN1cnJlbnQgZGlyZWN0b3J5IChkZWZhdWx0IFRydWUpCiAgICAgbWF4bGV2ZWxzOiAgIG1heCByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMCkKICAgICBmb3JjZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCi0gICAgcXVpZXQ6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IEZhbHNlKQorICAgIHF1aWV0OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCAwKQogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgogICAgIHN1Y2Nlc3MgPSAxCiAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICAgaWYgKG5vdCBkaXIgb3IgZGlyID09IG9zLmN1cmRpcikgYW5kIHNraXBfY3VyZGlyOgotICAgICAgICAgICAgcHJpbnQoJ1NraXBwaW5nIGN1cnJlbnQgZGlyZWN0b3J5JykKKyAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKKyAgICAgICAgICAgICAgICBwcmludCgnU2tpcHBpbmcgY3VycmVudCBkaXJlY3RvcnknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgYW5kIGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlLCBxdWlldD1xdWlldCwKQEAgLTE2OSwxMCArMjA0LDE1IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MTAsIGRlc3Q9J21heGxldmVscycsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCByZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgdHlwZT1pbnQsIGRlc3Q9J3JlY3Vyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnY29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZiBgLWxgIGFuZCBgLXJgIG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZW4gYC1yYCB0YWtlcyBwcmVjZWRlbmNlLicpKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nZm9yY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZm9yY2UgcmVidWlsZCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwIHRvIGRhdGUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncXVpZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdjb3VudCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXM7IC1xcSB3aWxsIHN1cHByZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBtZXNzYWdlcyBhcyB3ZWxsLicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdsZWdhY3knLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGxlZ2FjeSAocHJlLVBFUDMxNDcpIGNvbXBpbGVkIGZpbGUgbG9jYXRpb25zJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsIG1ldGF2YXI9J0RFU1RESVInLCAgZGVzdD0nZGRpcicsIGRlZmF1bHQ9Tm9uZSwKQEAgLTE5Miw4ICsyMzIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCd6ZXJvIG9yIG1vcmUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBjb21waWxlOyBpZiBubyBhcmd1bWVudHMgZ2l2ZW4sIGRlZmF1bHRzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZXF1aXZhbGVudCBvZiAtbCBzeXMucGF0aCcpKQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWonLCAnLS13b3JrZXJzJywgZGVmYXVsdD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsIGhlbHA9J1J1biBjb21waWxlYWxsIGNvbmN1cnJlbnRseScpCiAKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIGNvbXBpbGVfZGVzdHMgPSBhcmdzLmNvbXBpbGVfZGVzdAogCiAgICAgaWYgKGFyZ3MuZGRpciBhbmQgKGxlbihjb21waWxlX2Rlc3RzKSAhPSAxCkBAIC0yMDMsNiArMjQ1LDEyIEBACiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBhcmdzLnJ4ID0gcmUuY29tcGlsZShhcmdzLnJ4KQogCisKKyAgICBpZiBhcmdzLnJlY3Vyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5yZWN1cnNpb24KKyAgICBlbHNlOgorICAgICAgICBtYXhsZXZlbHMgPSBhcmdzLm1heGxldmVscworCiAgICAgIyBpZiBmbGlzdCBpcyBwcm92aWRlZCB0aGVuIGxvYWQgaXQKICAgICBpZiBhcmdzLmZsaXN0OgogICAgICAgICB0cnk6CkBAIC0yMTAsOSArMjU4LDEzIEBACiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9kZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJFcnJvciByZWFkaW5nIGZpbGUgbGlzdCB7fSIuZm9ybWF0KGFyZ3MuZmxpc3QpKQorICAgICAgICAgICAgaWYgYXJncy5xdWlldCA8IDI6CisgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJlYWRpbmcgZmlsZSBsaXN0IHt9Ii5mb3JtYXQoYXJncy5mbGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGlmIGFyZ3Mud29ya2VycyBpcyBub3QgTm9uZToKKyAgICAgICAgYXJncy53b3JrZXJzID0gYXJncy53b3JrZXJzIG9yIE5vbmUKKwogICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgdHJ5OgogICAgICAgICBpZiBjb21waWxlX2Rlc3RzOgpAQCAtMjIyLDE2ICsyNzQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnF1aWV0LCBhcmdzLmxlZ2FjeSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9kaXIoZGVzdCwgYXJncy5tYXhsZXZlbHMsIGFyZ3MuZGRpciwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGRlc3QsIG1heGxldmVscywgYXJncy5kZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5mb3JjZSwgYXJncy5yeCwgYXJncy5xdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5LCB3b3JrZXJzPWFyZ3Mud29ya2Vycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZV9wYXRoKGxlZ2FjeT1hcmdzLmxlZ2FjeSwgZm9yY2U9YXJncy5mb3JjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9YXJncy5xdWlldCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQorICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKKyAgICAgICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQppbmRleCBhY2QwNWQwLi45ZTQ0NzEzIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKQEAgLTMwMiwxNyArMzAyLDIwIEBACiAgICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxGdXR1cmUgYXQgJXMgc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZXgoaWQoc2VsZikpLAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24uX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPEZ1dHVyZSBhdCAlcyBzdGF0ZT0lcyByZXR1cm5lZCAlcz4nICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgaGV4KGlkKHNlbGYpKSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8JXMgYXQgJSN4IHN0YXRlPSVzIHJldHVybmVkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICAgICAgcmV0dXJuICc8RnV0dXJlIGF0ICVzIHN0YXRlPSVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgIGhleChpZChzZWxmKSksCisgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXM+JyAlICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTUxNyw3ICs1MjAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUpOgorICAgIGRlZiBtYXAoc2VsZiwgZm4sICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGEgaXRlcmF0b3IgZXF1aXZhbGVudCB0byBtYXAoZm4sIGl0ZXIpLgogCiAgICAgICAgIEFyZ3M6CkBAIC01MjUsNiArNTI4LDEwIEBACiAgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KICAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKICAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBUaGUgc2l6ZSBvZiB0aGUgY2h1bmtzIHRoZSBpdGVyYWJsZSB3aWxsIGJlIGJyb2tlbiBpbnRvCisgICAgICAgICAgICAgICAgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byBhIGNoaWxkIHByb2Nlc3MuIFRoaXMgYXJndW1lbnQgaXMgb25seQorICAgICAgICAgICAgICAgIHVzZWQgYnkgUHJvY2Vzc1Bvb2xFeGVjdXRvcjsgaXQgaXMgaWdub3JlZCBieQorICAgICAgICAgICAgICAgIFRocmVhZFBvb2xFeGVjdXRvci4KIAogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgQW4gaXRlcmF0b3IgZXF1aXZhbGVudCB0bzogbWFwKGZ1bmMsICppdGVyYWJsZXMpIGJ1dCB0aGUgY2FsbHMgbWF5CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggMDdiNTIyNS4uM2RkNmRhMSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNTUsNiArNTUsOSBAQAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdHJhY2ViYWNrCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcyBhbmQgcHJvY2Vzc2VzLiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlCiAjIGludGVycHJldGVyIHRvIGV4aXQgd2hlbiB0aGVyZSBhcmUgc3RpbGwgaWRsZSBwcm9jZXNzZXMgaW4gYQpAQCAtODgsNiArOTEsMjcgQEAKICMgKEZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZCkuCiBFWFRSQV9RVUVVRURfQ0FMTFMgPSAxCiAKKyMgSGFjayB0byBlbWJlZCBzdHJpbmdpZmljYXRpb24gb2YgcmVtb3RlIHRyYWNlYmFjayBpbiBsb2NhbCB0cmFjZWJhY2sKKworY2xhc3MgX1JlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yik6CisgICAgICAgIHNlbGYudGIgPSB0YgorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50YgorCitjbGFzcyBfRXhjZXB0aW9uV2l0aFRyYWNlYmFjazoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjLCB0Yik6CisgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShleGMpLCBleGMsIHRiKQorICAgICAgICB0YiA9ICcnLmpvaW4odGIpCisgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgIHNlbGYudGIgPSAnXG4iIiJcbiVzIiIiJyAlIHRiCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBfcmVidWlsZF9leGMsIChzZWxmLmV4Yywgc2VsZi50YikKKworZGVmIF9yZWJ1aWxkX2V4YyhleGMsIHRiKToKKyAgICBleGMuX19jYXVzZV9fID0gX1JlbW90ZVRyYWNlYmFjayh0YikKKyAgICByZXR1cm4gZXhjCisKIGNsYXNzIF9Xb3JrSXRlbShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdXR1cmUsIGZuLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICBzZWxmLmZ1dHVyZSA9IGZ1dHVyZQpAQCAtMTA4LDYgKzEzMiwyNiBAQAogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAKK2RlZiBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemUpOgorICAgICIiIiBJdGVyYXRlcyBvdmVyIHppcCgpZWQgaXRlcmFibGVzIGluIGNodW5rcy4gIiIiCisgICAgaXQgPSB6aXAoKml0ZXJhYmxlcykKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjaHVuayA9IHR1cGxlKGl0ZXJ0b29scy5pc2xpY2UoaXQsIGNodW5rc2l6ZSkpCisgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB5aWVsZCBjaHVuaworCitkZWYgX3Byb2Nlc3NfY2h1bmsoZm4sIGNodW5rKToKKyAgICAiIiIgUHJvY2Vzc2VzIGEgY2h1bmsgb2YgYW4gaXRlcmFibGUgcGFzc2VkIHRvIG1hcC4KKworICAgIFJ1bnMgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBtYXAoKSBvbiBhIGNodW5rIG9mIHRoZQorICAgIGl0ZXJhYmxlIHBhc3NlZCB0byBtYXAuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuCisKKyAgICAiIiIKKyAgICByZXR1cm4gW2ZuKCphcmdzKSBmb3IgYXJncyBpbiBjaHVua10KKwogZGVmIF9wcm9jZXNzX3dvcmtlcihjYWxsX3F1ZXVlLCByZXN1bHRfcXVldWUpOgogICAgICIiIkV2YWx1YXRlcyBjYWxscyBmcm9tIGNhbGxfcXVldWUgYW5kIHBsYWNlcyB0aGUgcmVzdWx0cyBpbiByZXN1bHRfcXVldWUuCiAKQEAgLTEzMCw4ICsxNzQsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gY2FsbF9pdGVtLmZuKCpjYWxsX2l0ZW0uYXJncywgKipjYWxsX2l0ZW0ua3dhcmdzKQogICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uPWUpKQorICAgICAgICAgICAgZXhjID0gX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwgZXhjZXB0aW9uPWV4YykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KF9SZXN1bHRJdGVtKGNhbGxfaXRlbS53b3JrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9cikpCkBAIC0zMzQsNiArMzc4LDkgQEAKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gb3MuY3B1X2NvdW50KCkgb3IgMQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXhfd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIikKKwogICAgICAgICAgICAgc2VsZi5fbWF4X3dvcmtlcnMgPSBtYXhfd29ya2VycwogCiAgICAgICAgICMgTWFrZSB0aGUgY2FsbCBxdWV1ZSBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyB0bwpAQCAtNDA4LDYgKzQ1NSwzNSBAQAogICAgICAgICAgICAgcmV0dXJuIGYKICAgICBzdWJtaXQuX19kb2NfXyA9IF9iYXNlLkV4ZWN1dG9yLnN1Ym1pdC5fX2RvY19fCiAKKyAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZm46IEEgY2FsbGFibGUgdGhhdCB3aWxsIHRha2UgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KKyAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKKyAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBJZiBncmVhdGVyIHRoYW4gb25lLCB0aGUgaXRlcmFibGVzIHdpbGwgYmUgY2hvcHBlZCBpbnRvCisgICAgICAgICAgICAgICAgY2h1bmtzIG9mIHNpemUgY2h1bmtzaXplIGFuZCBzdWJtaXR0ZWQgdG8gdGhlIHByb2Nlc3MgcG9vbC4KKyAgICAgICAgICAgICAgICBJZiBzZXQgdG8gb25lLCB0aGUgaXRlbXMgaW4gdGhlIGxpc3Qgd2lsbCBiZSBzZW50IG9uZSBhdCBhIHRpbWUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG86IG1hcChmdW5jLCAqaXRlcmFibGVzKSBidXQgdGhlIGNhbGxzIG1heQorICAgICAgICAgICAgYmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBUaW1lb3V0RXJyb3I6IElmIHRoZSBlbnRpcmUgcmVzdWx0IGl0ZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGdpdmVuIHRpbWVvdXQuCisgICAgICAgICAgICBFeGNlcHRpb246IElmIGZuKCphcmdzKSByYWlzZXMgZm9yIGFueSB2YWx1ZXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBjaHVua3NpemUgPCAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2h1bmtzaXplIG11c3QgYmUgPj0gMS4iKQorCisgICAgICAgIHJlc3VsdHMgPSBzdXBlcigpLm1hcChwYXJ0aWFsKF9wcm9jZXNzX2NodW5rLCBmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemU9Y2h1bmtzaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKHJlc3VsdHMpCisKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGhyZWFkID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmOWJlYjBmLi4zYWU0NDJkIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IG9zCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcy4gVGhpcyBpcyBkb25lIHRvIGFsbG93IHRoZSBpbnRlcnByZXRlcgogIyB0byBleGl0IHdoZW4gdGhlcmUgYXJlIHN0aWxsIGlkbGUgdGhyZWFkcyBpbiBhIFRocmVhZFBvb2xFeGVjdXRvcidzIHRocmVhZApAQCAtODAsMTMgKzgxLDIwIEBACiAgICAgICAgIF9iYXNlLkxPR0dFUi5jcml0aWNhbCgnRXhjZXB0aW9uIGluIHdvcmtlcicsIGV4Y19pbmZvPVRydWUpCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KICAgICAgICAgIiIiCisgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CisgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgorICAgICAgICAgICAgIyB1c2VkIHRvIG92ZXJsYXAgSS9PIGluc3RlYWQgb2YgQ1BVIHdvcmsuCisgICAgICAgICAgICBtYXhfd29ya2VycyA9IChvcy5jcHVfY291bnQoKSBvciAxKSAqIDUKKyAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heF93b3JrZXJzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQorCiAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWF4X3dvcmtlcnMKICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCmRpZmYgLS1naXQgYS9MaWIvY29uZmlncGFyc2VyLnB5IGIvTGliL2NvbmZpZ3BhcnNlci5weQppbmRleCA0ZWU4MzA3Li5lY2QwNjYwIDEwMDY0NAotLS0gYS9MaWIvY29uZmlncGFyc2VyLnB5CisrKyBiL0xpYi9jb25maWdwYXJzZXIucHkKQEAgLTE3LDcgKzE3LDggQEAKICAgICBfX2luaXRfXyhkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9X2RlZmF1bHRfZGljdCwgYWxsb3dfbm9fdmFsdWU9RmFsc2UsCiAgICAgICAgICAgICAgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksCiAgICAgICAgICAgICAgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsCi0gICAgICAgICAgICAgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUpOgorICAgICAgICAgICAgIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249J0RFRkFVTFQnLAorICAgICAgICAgICAgIGludGVycG9sYXRpb249PHVuc2V0PiwgY29udmVydGVycz08dW5zZXQ+KToKICAgICAgICAgQ3JlYXRlIHRoZSBwYXJzZXIuIFdoZW4gYGRlZmF1bHRzJyBpcyBnaXZlbiwgaXQgaXMgaW5pdGlhbGl6ZWQgaW50byB0aGUKICAgICAgICAgZGljdGlvbmFyeSBvciBpbnRyaW5zaWMgZGVmYXVsdHMuIFRoZSBrZXlzIG11c3QgYmUgc3RyaW5ncywgdGhlIHZhbHVlcwogICAgICAgICBtdXN0IGJlIGFwcHJvcHJpYXRlIGZvciAlKClzIHN0cmluZyBpbnRlcnBvbGF0aW9uLgpAQCAtNDcsNiArNDgsMjUgQEAKICAgICAgICAgV2hlbiBgYWxsb3dfbm9fdmFsdWUnIGlzIFRydWUgKGRlZmF1bHQ6IEZhbHNlKSwgb3B0aW9ucyB3aXRob3V0CiAgICAgICAgIHZhbHVlcyBhcmUgYWNjZXB0ZWQ7IHRoZSB2YWx1ZSBwcmVzZW50ZWQgZm9yIHRoZXNlIGlzIE5vbmUuCiAKKyAgICAgICAgV2hlbiBgZGVmYXVsdF9zZWN0aW9uJyBpcyBnaXZlbiwgdGhlIG5hbWUgb2YgdGhlIHNwZWNpYWwgc2VjdGlvbiBpcworICAgICAgICBuYW1lZCBhY2NvcmRpbmdseS4gQnkgZGVmYXVsdCBpdCBpcyBjYWxsZWQgYGAiREVGQVVMVCJgYCBidXQgdGhpcyBjYW4KKyAgICAgICAgYmUgY3VzdG9taXplZCB0byBwb2ludCB0byBhbnkgb3RoZXIgdmFsaWQgc2VjdGlvbiBuYW1lLiBJdHMgY3VycmVudAorICAgICAgICB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSBgYHBhcnNlcl9pbnN0YW5jZS5kZWZhdWx0X3NlY3Rpb25gYAorICAgICAgICBhdHRyaWJ1dGUgYW5kIG1heSBiZSBtb2RpZmllZCBhdCBydW50aW1lLgorCisgICAgICAgIFdoZW4gYGludGVycG9sYXRpb25gIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYW4gSW50ZXJwb2xhdGlvbiBzdWJjbGFzcworICAgICAgICBpbnN0YW5jZS4gSXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBoYW5kbGVyIGZvciBvcHRpb24gdmFsdWUKKyAgICAgICAgcHJlLXByb2Nlc3Npbmcgd2hlbiB1c2luZyBnZXR0ZXJzLiBSYXdDb25maWdQYXJzZXIgb2JqZWN0IHMgZG9uJ3QgZG8KKyAgICAgICAgYW55IHNvcnQgb2YgaW50ZXJwb2xhdGlvbiwgd2hlcmVhcyBDb25maWdQYXJzZXIgdXNlcyBhbiBpbnN0YW5jZSBvZgorICAgICAgICBCYXNpY0ludGVycG9sYXRpb24uIFRoZSBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYSBgYHpjLmJ1aWxkYm90YGAKKyAgICAgICAgaW5zcGlyZWQgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFdoZW4gYGNvbnZlcnRlcnNgIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5CisgICAgICAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICAgICAgIGltcGxlbWVudGluZyB0aGUgY29udmVyc2lvbiBmcm9tIHN0cmluZyB0byB0aGUgZGVzaXJlZCBkYXRhdHlwZS4gRXZlcnkKKyAgICAgICAgY29udmVydGVyIGdldHMgaXRzIGNvcnJlc3BvbmRpbmcgZ2V0KigpIG1ldGhvZCBvbiB0aGUgcGFyc2VyIG9iamVjdCBhbmQKKyAgICAgICAgc2VjdGlvbiBwcm94aWVzLgorCiAgICAgc2VjdGlvbnMoKQogICAgICAgICBSZXR1cm4gYWxsIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gbmFtZXMsIHNhbnMgREVGQVVMVC4KIApAQCAtMTI5LDkgKzE0OSwxMSBAQAogCiBfX2FsbF9fID0gWyJOb1NlY3Rpb25FcnJvciIsICJEdXBsaWNhdGVPcHRpb25FcnJvciIsICJEdXBsaWNhdGVTZWN0aW9uRXJyb3IiLAogICAgICAgICAgICAiTm9PcHRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvbkRlcHRoRXJyb3IiLAotICAgICAgICAgICAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwgIlBhcnNpbmdFcnJvciIsCi0gICAgICAgICAgICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKKyAgICAgICAgICAgIkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwKKyAgICAgICAgICAgIlBhcnNpbmdFcnJvciIsICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKICAgICAgICAgICAgIkNvbmZpZ1BhcnNlciIsICJTYWZlQ29uZmlnUGFyc2VyIiwgIlJhd0NvbmZpZ1BhcnNlciIsCisgICAgICAgICAgICJJbnRlcnBvbGF0aW9uIiwgIkJhc2ljSW50ZXJwb2xhdGlvbiIsICAiRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIiwKKyAgICAgICAgICAgIkxlZ2FjeUludGVycG9sYXRpb24iLCAiU2VjdGlvblByb3h5IiwgIkNvbnZlcnRlck1hcHBpbmciLAogICAgICAgICAgICAiREVGQVVMVFNFQ1QiLCAiTUFYX0lOVEVSUE9MQVRJT05fREVQVEgiXQogCiBERUZBVUxUU0VDVCA9ICJERUZBVUxUIgpAQCAtNDEwLDcgKzQzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIHYgPSBtYXBbdmFyXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmVzdCwgdmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByZXN0LCB2YXIpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgIGlmICIlIiBpbiB2OgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0ZV9zb21lKHBhcnNlciwgb3B0aW9uLCBhY2N1bSwgdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBtYXAsIGRlcHRoICsgMSkKQEAgLTQ4Miw3ICs1MDQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lICc6JyBmb3VuZDogJXIiICUgKHJlc3QsKSkKICAgICAgICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJlc3QsICI6Ii5qb2luKHBhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByZXN0LCAiOiIuam9pbihwYXRoKSkgZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgaWYgIiQiIGluIHY6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRlX3NvbWUocGFyc2VyLCBvcHQsIGFjY3VtLCB2LCBzZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QocGFyc2VyLml0ZW1zKHNlY3QsIHJhdz1UcnVlKSksCkBAIC01MTUsNyArNTM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAlIHZhcnMKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCBlLmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgZS5hcmdzWzBdKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgdmFsdWUgYW5kICIlKCIgaW4gdmFsdWU6CkBAIC01ODAsMTEgKzYwMiwxMiBAQAogICAgICAgICAgICAgICAgICBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksIGlubGluZV9jb21tZW50X3ByZWZpeGVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHN0cmljdD1UcnVlLCBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVmYXVsdF9zZWN0aW9uPURFRkFVTFRTRUNULAotICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0aW9uPV9VTlNFVCk6CisgICAgICAgICAgICAgICAgIGludGVycG9sYXRpb249X1VOU0VULCBjb252ZXJ0ZXJzPV9VTlNFVCk6CiAKICAgICAgICAgc2VsZi5fZGljdCA9IGRpY3RfdHlwZQogICAgICAgICBzZWxmLl9zZWN0aW9ucyA9IHNlbGYuX2RpY3QoKQogICAgICAgICBzZWxmLl9kZWZhdWx0cyA9IHNlbGYuX2RpY3QoKQorICAgICAgICBzZWxmLl9jb252ZXJ0ZXJzID0gQ29udmVydGVyTWFwcGluZyhzZWxmKQogICAgICAgICBzZWxmLl9wcm94aWVzID0gc2VsZi5fZGljdCgpCiAgICAgICAgIHNlbGYuX3Byb3hpZXNbZGVmYXVsdF9zZWN0aW9uXSA9IFNlY3Rpb25Qcm94eShzZWxmLCBkZWZhdWx0X3NlY3Rpb24pCiAgICAgICAgIGlmIGRlZmF1bHRzOgpAQCAtNjEyLDYgKzYzNSw4IEBACiAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0aW9uID0gc2VsZi5fREVGQVVMVF9JTlRFUlBPTEFUSU9OCiAgICAgICAgIGlmIHNlbGYuX2ludGVycG9sYXRpb24gaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBJbnRlcnBvbGF0aW9uKCkKKyAgICAgICAgaWYgY29udmVydGVycyBpcyBub3QgX1VOU0VUOgorICAgICAgICAgICAgc2VsZi5fY29udmVydGVycy51cGRhdGUoY29udmVydGVycykKIAogICAgIGRlZiBkZWZhdWx0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmF1bHRzCkBAIC02NDcsNyArNjcyLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3B0cyA9IHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dLmNvcHkoKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKQorICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikgZnJvbSBOb25lCiAgICAgICAgIG9wdHMudXBkYXRlKHNlbGYuX2RlZmF1bHRzKQogICAgICAgICByZXR1cm4gbGlzdChvcHRzLmtleXMoKSkKIApAQCAtNzc1LDM2ICs4MDAsMzEgQEAKICAgICBkZWYgX2dldChzZWxmLCBzZWN0aW9uLCBjb252LCBvcHRpb24sICoqa3dhcmdzKToKICAgICAgICAgcmV0dXJuIGNvbnYoc2VsZi5nZXQoc2VjdGlvbiwgb3B0aW9uLCAqKmt3YXJncykpCiAKLSAgICBkZWYgZ2V0aW50KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCi0gICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQpOgorICAgIGRlZiBfZ2V0X2NvbnYoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCBjb252LCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0KHNlY3Rpb24sIGludCwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0KHNlY3Rpb24sIGNvbnYsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKICAgICAgICAgZXhjZXB0IChOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6CiAgICAgICAgICAgICBpZiBmYWxsYmFjayBpcyBfVU5TRVQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCisgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKworICAgICMgZ2V0aW50LCBnZXRmbG9hdCBhbmQgZ2V0Ym9vbGVhbiBwcm92aWRlZCBkaXJlY3RseSBmb3IgYmFja3dhcmRzIGNvbXBhdAorICAgIGRlZiBnZXRpbnQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKKyAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2NvbnYoc2VjdGlvbiwgb3B0aW9uLCBpbnQsIHJhdz1yYXcsIHZhcnM9dmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKIAogICAgIGRlZiBnZXRmbG9hdChzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAotICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0KHNlY3Rpb24sIGZsb2F0LCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycykKLSAgICAgICAgZXhjZXB0IChOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6Ci0gICAgICAgICAgICBpZiBmYWxsYmFjayBpcyBfVU5TRVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCisgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2NvbnYoc2VjdGlvbiwgb3B0aW9uLCBmbG9hdCwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQogCiAgICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0KHNlY3Rpb24sIHNlbGYuX2NvbnZlcnRfdG9fYm9vbGVhbiwgb3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXc9cmF3LCB2YXJzPXZhcnMpCi0gICAgICAgIGV4Y2VwdCAoTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgotICAgICAgICAgICAgaWYgZmFsbGJhY2sgaXMgX1VOU0VUOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaworICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2NvbnYoc2VjdGlvbiwgb3B0aW9uLCBzZWxmLl9jb252ZXJ0X3RvX2Jvb2xlYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXc9cmF3LCB2YXJzPXZhcnMsIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKIAogICAgIGRlZiBpdGVtcyhzZWxmLCBzZWN0aW9uPV9VTlNFVCwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIChuYW1lLCB2YWx1ZSkgdHVwbGVzIGZvciBlYWNoIG9wdGlvbiBpbiBhIHNlY3Rpb24uCkBAIC04NzYsNyArODk2LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWN0ZGljdCA9IHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikKKyAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAgc2VjdGRpY3Rbc2VsZi5vcHRpb254Zm9ybShvcHRpb24pXSA9IHZhbHVlCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZnAsIHNwYWNlX2Fyb3VuZF9kZWxpbWl0ZXJzPVRydWUpOgpAQCAtOTE3LDcgKzkzNyw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VjdGRpY3QgPSBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pCisgICAgICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikgZnJvbSBOb25lCiAgICAgICAgIG9wdGlvbiA9IHNlbGYub3B0aW9ueGZvcm0ob3B0aW9uKQogICAgICAgICBleGlzdGVkID0gb3B0aW9uIGluIHNlY3RkaWN0CiAgICAgICAgIGlmIGV4aXN0ZWQ6CkBAIC0xMTU0LDYgKzExNzQsMTAgQEAKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigib3B0aW9uIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnZlcnRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb252ZXJ0ZXJzCisKIAogY2xhc3MgQ29uZmlnUGFyc2VyKFJhd0NvbmZpZ1BhcnNlcik6CiAgICAgIiIiQ29uZmlnUGFyc2VyIGltcGxlbWVudGluZyBpbnRlcnBvbGF0aW9uLiIiIgpAQCAtMTE5NCw2ICsxMjE4LDEwIEBACiAgICAgICAgICIiIkNyZWF0ZXMgYSB2aWV3IG9uIGEgc2VjdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGBuYW1lYCBpbiBgcGFyc2VyYC4iIiIKICAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIGZvciBjb252IGluIHBhcnNlci5jb252ZXJ0ZXJzOgorICAgICAgICAgICAga2V5ID0gJ2dldCcgKyBjb252CisgICAgICAgICAgICBnZXR0ZXIgPSBmdW5jdG9vbHMucGFydGlhbChzZWxmLmdldCwgX2ltcGw9Z2V0YXR0cihwYXJzZXIsIGtleSkpCisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgZ2V0dGVyKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gJzxTZWN0aW9uOiB7fT4nLmZvcm1hdChzZWxmLl9uYW1lKQpAQCAtMTIyNywyMiArMTI1NSw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmRlZmF1bHRzKCkKIAotICAgIGRlZiBnZXQoc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0KHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKLQotICAgIGRlZiBnZXRpbnQoc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0aW50KHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKLQotICAgIGRlZiBnZXRmbG9hdChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXRmbG9hdChzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKLQotICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldGJvb2xlYW4oc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKLQogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBwYXJzZXIoc2VsZik6CiAgICAgICAgICMgVGhlIHBhcnNlciBvYmplY3Qgb2YgdGhlIHByb3h5IGlzIHJlYWQtb25seS4KQEAgLTEyNTIsMyArMTI2NCw3NyBAQAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBzZWN0aW9uIG9uIGEgcHJveHkgaXMgcmVhZC1vbmx5LgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGdldChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAorICAgICAgICAgICAgX2ltcGw9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJHZXQgYW4gb3B0aW9uIHZhbHVlLgorCisgICAgICAgIFVubGVzcyBgZmFsbGJhY2tgIGlzIHByb3ZpZGVkLCBgTm9uZWAgd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb3B0aW9uCisgICAgICAgIGlzIG5vdCBmb3VuZC4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBJZiBgX2ltcGxgIGlzIHByb3ZpZGVkLCBpdCBzaG91bGQgYmUgYSBnZXR0ZXIgbWV0aG9kIG9uIHRoZSBwYXJzZXIKKyAgICAgICAgIyBvYmplY3QgdGhhdCBwcm92aWRlcyB0aGUgZGVzaXJlZCB0eXBlIGNvbnZlcnNpb24uCisgICAgICAgIGlmIG5vdCBfaW1wbDoKKyAgICAgICAgICAgIF9pbXBsID0gc2VsZi5fcGFyc2VyLmdldAorICAgICAgICByZXR1cm4gX2ltcGwoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCisKKworY2xhc3MgQ29udmVydGVyTWFwcGluZyhNdXRhYmxlTWFwcGluZyk6CisgICAgIiIiRW5hYmxlcyByZXVzZSBvZiBnZXQqKCkgbWV0aG9kcyBiZXR3ZWVuIHRoZSBwYXJzZXIgYW5kIHNlY3Rpb24gcHJveGllcy4KKworICAgIElmIGEgcGFyc2VyIGNsYXNzIGltcGxlbWVudHMgYSBnZXR0ZXIgZGlyZWN0bHksIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuCisgICAga2V5IHdpbGwgYmUgYGBOb25lYGAuIFRoZSBwcmVzZW5jZSBvZiB0aGUgY29udmVydGVyIG5hbWUgaGVyZSBlbmFibGVzCisgICAgc2VjdGlvbiBwcm94aWVzIHRvIGZpbmQgYW5kIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gb24gdGhlIHBhcnNlciBjbGFzcy4KKyAgICAiIiIKKworICAgIEdFVFRFUkNSRSA9IHJlLmNvbXBpbGUociJeZ2V0KD9QPG5hbWU+LispJCIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyKToKKyAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCisgICAgICAgIHNlbGYuX2RhdGEgPSB7fQorICAgICAgICBmb3IgZ2V0dGVyIGluIGRpcihzZWxmLl9wYXJzZXIpOgorICAgICAgICAgICAgbSA9IHNlbGYuR0VUVEVSQ1JFLm1hdGNoKGdldHRlcikKKyAgICAgICAgICAgIGlmIG5vdCBtIG9yIG5vdCBjYWxsYWJsZShnZXRhdHRyKHNlbGYuX3BhcnNlciwgZ2V0dGVyKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlbGYuX2RhdGFbbS5ncm91cCgnbmFtZScpXSA9IE5vbmUgICAjIFNlZSBjbGFzcyBkb2NzdHJpbmcuCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGFba2V5XQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBrID0gJ2dldCcgKyBrZXkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luY29tcGF0aWJsZSBrZXk6IHt9ICh0eXBlOiB7fSknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLmZvcm1hdChrZXksIHR5cGUoa2V5KSkpCisgICAgICAgIGlmIGsgPT0gJ2dldCc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbmNvbXBhdGlibGUga2V5OiBjYW5ub3QgdXNlICIiIGFzIGEgbmFtZScpCisgICAgICAgIHNlbGYuX2RhdGFba2V5XSA9IHZhbHVlCisgICAgICAgIGZ1bmMgPSBmdW5jdG9vbHMucGFydGlhbChzZWxmLl9wYXJzZXIuX2dldF9jb252LCBjb252PXZhbHVlKQorICAgICAgICBmdW5jLmNvbnZlcnRlciA9IHZhbHVlCisgICAgICAgIHNldGF0dHIoc2VsZi5fcGFyc2VyLCBrLCBmdW5jKQorICAgICAgICBmb3IgcHJveHkgaW4gc2VsZi5fcGFyc2VyLnZhbHVlcygpOgorICAgICAgICAgICAgZ2V0dGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwocHJveHkuZ2V0LCBfaW1wbD1mdW5jKQorICAgICAgICAgICAgc2V0YXR0cihwcm94eSwgaywgZ2V0dGVyKQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGsgPSAnZ2V0JyArIChrZXkgb3IgTm9uZSkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKyAgICAgICAgZGVsIHNlbGYuX2RhdGFba2V5XQorICAgICAgICBmb3IgaW5zdCBpbiBpdGVydG9vbHMuY2hhaW4oKHNlbGYuX3BhcnNlciwpLCBzZWxmLl9wYXJzZXIudmFsdWVzKCkpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbGF0dHIoaW5zdCwgaykKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGRvbid0IHJhaXNlIHNpbmNlIHRoZSBlbnRyeSB3YXMgcHJlc2VudCBpbiBfZGF0YSwgc2lsZW50bHkKKyAgICAgICAgICAgICAgICAjIGNsZWFuIHVwCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fZGF0YSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2RhdGEpCmRpZmYgLS1naXQgYS9MaWIvY29udGV4dGxpYi5weSBiL0xpYi9jb250ZXh0bGliLnB5CmluZGV4IDgyZWU5NTUuLjM3OWMyNTEgMTAwNjQ0Ci0tLSBhL0xpYi9jb250ZXh0bGliLnB5CisrKyBiL0xpYi9jb250ZXh0bGliLnB5CkBAIC01LDcgKzUsNyBAQAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIF9fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLAotICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInN1cHByZXNzIl0KKyAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTc3LDEwICs3NywxNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuZ2VuLnRocm93KHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spCiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJnZW5lcmF0b3IgZGlkbid0IHN0b3AgYWZ0ZXIgdGhyb3coKSIpCiAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleGM6Ci0gICAgICAgICAgICAgICAgIyBTdXBwcmVzcyB0aGUgZXhjZXB0aW9uICp1bmxlc3MqIGl0J3MgdGhlIHNhbWUgZXhjZXB0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICAjIFN1cHByZXNzIFN0b3BJdGVyYXRpb24gKnVubGVzcyogaXQncyB0aGUgc2FtZSBleGNlcHRpb24gdGhhdAogICAgICAgICAgICAgICAgICMgd2FzIHBhc3NlZCB0byB0aHJvdygpLiAgVGhpcyBwcmV2ZW50cyBhIFN0b3BJdGVyYXRpb24KLSAgICAgICAgICAgICAgICAjIHJhaXNlZCBpbnNpZGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgZnJvbSBiZWluZyBzdXBwcmVzc2VkCisgICAgICAgICAgICAgICAgIyByYWlzZWQgaW5zaWRlIHRoZSAid2l0aCIgc3RhdGVtZW50IGZyb20gYmVpbmcgc3VwcHJlc3NlZC4KICAgICAgICAgICAgICAgICByZXR1cm4gZXhjIGlzIG5vdCB2YWx1ZQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgIyBMaWtld2lzZSwgYXZvaWQgc3VwcHJlc3NpbmcgaWYgYSBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICMgd2FzIHBhc3NlZCB0byB0aHJvdygpIGFuZCBsYXRlciB3cmFwcGVkIGludG8gYSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgICAgICAjIChzZWUgUEVQIDQ3OSkuCisgICAgICAgICAgICAgICAgaWYgZXhjLl9fY2F1c2VfXyBpcyB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAjIG9ubHkgcmUtcmFpc2UgaWYgaXQncyAqbm90KiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzCiAgICAgICAgICAgICAgICAgIyBwYXNzZWQgdG8gdGhyb3coKSwgYmVjYXVzZSBfX2V4aXRfXygpIG11c3Qgbm90IHJhaXNlCkBAIC0xNTEsOCArMTU4LDI3IEBACiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgIHNlbGYudGhpbmcuY2xvc2UoKQogCi1jbGFzcyByZWRpcmVjdF9zdGRvdXQ6Ci0gICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciB0ZW1wb3JhcmlseSByZWRpcmVjdGluZyBzdGRvdXQgdG8gYW5vdGhlciBmaWxlCisKK2NsYXNzIF9SZWRpcmVjdFN0cmVhbToKKworICAgIF9zdHJlYW0gPSBOb25lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X3RhcmdldCk6CisgICAgICAgIHNlbGYuX25ld190YXJnZXQgPSBuZXdfdGFyZ2V0CisgICAgICAgICMgV2UgdXNlIGEgbGlzdCBvZiBvbGQgdGFyZ2V0cyB0byBtYWtlIHRoaXMgQ00gcmUtZW50cmFudAorICAgICAgICBzZWxmLl9vbGRfdGFyZ2V0cyA9IFtdCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLl9vbGRfdGFyZ2V0cy5hcHBlbmQoZ2V0YXR0cihzeXMsIHNlbGYuX3N0cmVhbSkpCisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0sIHNlbGYuX25ld190YXJnZXQpCisgICAgICAgIHJldHVybiBzZWxmLl9uZXdfdGFyZ2V0CisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjdHlwZSwgZXhjaW5zdCwgZXhjdGIpOgorICAgICAgICBzZXRhdHRyKHN5cywgc2VsZi5fc3RyZWFtLCBzZWxmLl9vbGRfdGFyZ2V0cy5wb3AoKSkKKworCitjbGFzcyByZWRpcmVjdF9zdGRvdXQoX1JlZGlyZWN0U3RyZWFtKToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IHJlZGlyZWN0aW5nIHN0ZG91dCB0byBhbm90aGVyIGZpbGUuCiAKICAgICAgICAgIyBIb3cgdG8gc2VuZCBoZWxwKCkgdG8gc3RkZXJyCiAgICAgICAgIHdpdGggcmVkaXJlY3Rfc3Rkb3V0KHN5cy5zdGRlcnIpOgpAQCAtMTY0LDE4ICsxOTAsMTMgQEAKICAgICAgICAgICAgICAgICBoZWxwKHBvdykKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfdGFyZ2V0KToKLSAgICAgICAgc2VsZi5fbmV3X3RhcmdldCA9IG5ld190YXJnZXQKLSAgICAgICAgIyBXZSB1c2UgYSBsaXN0IG9mIG9sZCB0YXJnZXRzIHRvIG1ha2UgdGhpcyBDTSByZS1lbnRyYW50Ci0gICAgICAgIHNlbGYuX29sZF90YXJnZXRzID0gW10KKyAgICBfc3RyZWFtID0gInN0ZG91dCIKIAotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX29sZF90YXJnZXRzLmFwcGVuZChzeXMuc3Rkb3V0KQotICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5fbmV3X3RhcmdldAotICAgICAgICByZXR1cm4gc2VsZi5fbmV3X3RhcmdldAogCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y3R5cGUsIGV4Y2luc3QsIGV4Y3RiKToKLSAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX29sZF90YXJnZXRzLnBvcCgpCitjbGFzcyByZWRpcmVjdF9zdGRlcnIoX1JlZGlyZWN0U3RyZWFtKToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IHJlZGlyZWN0aW5nIHN0ZGVyciB0byBhbm90aGVyIGZpbGUuIiIiCisKKyAgICBfc3RyZWFtID0gInN0ZGVyciIKIAogCiBjbGFzcyBzdXBwcmVzczoKZGlmZiAtLWdpdCBhL0xpYi9jb3B5LnB5IGIvTGliL2NvcHkucHkKaW5kZXggYmI4ODQwZS4uM2E0NWZkZiAxMDA2NDQKLS0tIGEvTGliL2NvcHkucHkKKysrIGIvTGliL2NvcHkucHkKQEAgLTk0LDcgKzk0LDcgQEAKICAgICBlbHNlOgogICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX2V4X18iLCBOb25lKQogICAgICAgICBpZiByZWR1Y3RvcjoKLSAgICAgICAgICAgIHJ2ID0gcmVkdWN0b3IoMikKKyAgICAgICAgICAgIHJ2ID0gcmVkdWN0b3IoNCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfXyIsIE5vbmUpCiAgICAgICAgICAgICBpZiByZWR1Y3RvcjoKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfZXhfXyIsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgIGlmIHJlZHVjdG9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSByZWR1Y3RvcigyKQorICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSByZWR1Y3Rvcig0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9fIiwgTm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlZHVjdG9yOgpAQCAtMjIxLDE3ICsyMjEsMTUgQEAKIGRbbGlzdF0gPSBfZGVlcGNvcHlfbGlzdAogCiBkZWYgX2RlZXBjb3B5X3R1cGxlKHgsIG1lbW8pOgotICAgIHkgPSBbXQotICAgIGZvciBhIGluIHg6Ci0gICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQorICAgIHkgPSBbZGVlcGNvcHkoYSwgbWVtbykgZm9yIGEgaW4geF0KICAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKICAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KICAgICB0cnk6CiAgICAgICAgIHJldHVybiBtZW1vW2lkKHgpXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcwotICAgIGZvciBpIGluIHJhbmdlKGxlbih4KSk6Ci0gICAgICAgIGlmIHhbaV0gaXMgbm90IHlbaV06CisgICAgZm9yIGssIGogaW4gemlwKHgsIHkpOgorICAgICAgICBpZiBrIGlzIG5vdCBqOgogICAgICAgICAgICAgeSA9IHR1cGxlKHkpCiAgICAgICAgICAgICBicmVhawogICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvY3N2LnB5IGIvTGliL2Nzdi5weQppbmRleCBhNTZlZWQ4Li5jYTQwZTVlIDEwMDY0NAotLS0gYS9MaWIvY3N2LnB5CisrKyBiL0xpYi9jc3YucHkKQEAgLTE0NywxNiArMTQ3LDEzIEBACiAgICAgICAgICAgICBpZiB3cm9uZ19maWVsZHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGljdCBjb250YWlucyBmaWVsZHMgbm90IGluIGZpZWxkbmFtZXM6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIi5qb2luKFtyZXByKHgpIGZvciB4IGluIHdyb25nX2ZpZWxkc10pKQotICAgICAgICByZXR1cm4gW3Jvd2RpY3QuZ2V0KGtleSwgc2VsZi5yZXN0dmFsKSBmb3Iga2V5IGluIHNlbGYuZmllbGRuYW1lc10KKyAgICAgICAgcmV0dXJuIChyb3dkaWN0LmdldChrZXksIHNlbGYucmVzdHZhbCkgZm9yIGtleSBpbiBzZWxmLmZpZWxkbmFtZXMpCiAKICAgICBkZWYgd3JpdGVyb3coc2VsZiwgcm93ZGljdCk6CiAgICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZXJvdyhzZWxmLl9kaWN0X3RvX2xpc3Qocm93ZGljdCkpCiAKICAgICBkZWYgd3JpdGVyb3dzKHNlbGYsIHJvd2RpY3RzKToKLSAgICAgICAgcm93cyA9IFtdCi0gICAgICAgIGZvciByb3dkaWN0IGluIHJvd2RpY3RzOgotICAgICAgICAgICAgcm93cy5hcHBlbmQoc2VsZi5fZGljdF90b19saXN0KHJvd2RpY3QpKQotICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIud3JpdGVyb3dzKHJvd3MpCisgICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZXJvd3MobWFwKHNlbGYuX2RpY3RfdG9fbGlzdCwgcm93ZGljdHMpKQogCiAjIEd1YXJkIFNuaWZmZXIncyB0eXBlIGNoZWNraW5nIGFnYWluc3QgYnVpbGRzIHRoYXQgZXhjbHVkZSBjb21wbGV4KCkKIHRyeToKQEAgLTIzMSwyMCArMjI4LDIxIEBACiAgICAgICAgIHF1b3RlcyA9IHt9CiAgICAgICAgIGRlbGltcyA9IHt9CiAgICAgICAgIHNwYWNlcyA9IDAKKyAgICAgICAgZ3JvdXBpbmRleCA9IHJlZ2V4cC5ncm91cGluZGV4CiAgICAgICAgIGZvciBtIGluIG1hdGNoZXM6Ci0gICAgICAgICAgICBuID0gcmVnZXhwLmdyb3VwaW5kZXhbJ3F1b3RlJ10gLSAxCisgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsncXVvdGUnXSAtIDEKICAgICAgICAgICAgIGtleSA9IG1bbl0KICAgICAgICAgICAgIGlmIGtleToKICAgICAgICAgICAgICAgICBxdW90ZXNba2V5XSA9IHF1b3Rlcy5nZXQoa2V5LCAwKSArIDEKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuID0gcmVnZXhwLmdyb3VwaW5kZXhbJ2RlbGltJ10gLSAxCisgICAgICAgICAgICAgICAgbiA9IGdyb3VwaW5kZXhbJ2RlbGltJ10gLSAxCiAgICAgICAgICAgICAgICAga2V5ID0gbVtuXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBrZXkgYW5kIChkZWxpbWl0ZXJzIGlzIE5vbmUgb3Iga2V5IGluIGRlbGltaXRlcnMpOgogICAgICAgICAgICAgICAgIGRlbGltc1trZXldID0gZGVsaW1zLmdldChrZXksIDApICsgMQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG4gPSByZWdleHAuZ3JvdXBpbmRleFsnc3BhY2UnXSAtIDEKKyAgICAgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsnc3BhY2UnXSAtIDEKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbVtuXToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CmluZGV4IDVjODAzZmYuLjRjYjZkMGQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQpAQCAtMjM3LDE0ICsyMzcsOCBAQAogCiBjbGFzcyBjX2NoYXJfcChfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJ6IgotICAgIGlmIF9vcy5uYW1lID09ICJudCI6Ci0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIGlmIG5vdCB3aW5kbGwua2VybmVsMzIuSXNCYWRTdHJpbmdQdHJBKHNlbGYsIC0xKToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNhc3Qoc2VsZiwgY192b2lkX3ApLnZhbHVlKQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY2FzdChzZWxmLCBjX3ZvaWRfcCkudmFsdWUpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNfdm9pZF9wLmZyb21fYnVmZmVyKHNlbGYpLnZhbHVlKQogX2NoZWNrX3NpemUoY19jaGFyX3AsICJQIikKIAogY2xhc3MgY192b2lkX3AoX1NpbXBsZUNEYXRhKToKQEAgLTI1OSw2ICsyNTMsOCBAQAogCiBjbGFzcyBjX3djaGFyX3AoX1NpbXBsZUNEYXRhKToKICAgICBfdHlwZV8gPSAiWiIKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY192b2lkX3AuZnJvbV9idWZmZXIoc2VsZikudmFsdWUpCiAKIGNsYXNzIGNfd2NoYXIoX1NpbXBsZUNEYXRhKToKICAgICBfdHlwZV8gPSAidSIKQEAgLTM1Myw3ICszNDksNyBAQAogICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzICclcycsIGhhbmRsZSAleCBhdCAleD4iICUgXAorICAgICAgICByZXR1cm4gIjwlcyAnJXMnLCBoYW5kbGUgJXggYXQgJSN4PiIgJSBcCiAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX25hbWUsCiAgICAgICAgICAgICAgICAgKHNlbGYuX2hhbmRsZSAmIChfc3lzLm1heHNpemUqMiArIDEpKSwKICAgICAgICAgICAgICAgICBpZChzZWxmKSAmIChfc3lzLm1heHNpemUqMiArIDEpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fZW5kaWFuLnB5IGIvTGliL2N0eXBlcy9fZW5kaWFuLnB5CmluZGV4IGRhZTY1ZmMuLjM3NDQ0YmQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX2VuZGlhbi5weQorKysgYi9MaWIvY3R5cGVzL19lbmRpYW4ucHkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogICAgIGNsYXNzIEJpZ0VuZGlhblN0cnVjdHVyZShTdHJ1Y3R1cmUsIG1ldGFjbGFzcz1fc3dhcHBlZF9tZXRhKToKICAgICAgICAgIiIiU3RydWN0dXJlIHdpdGggYmlnIGVuZGlhbiBieXRlIG9yZGVyIiIiCisgICAgICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgICAgIF9zd2FwcGVkYnl0ZXNfID0gTm9uZQogCiBlbGlmIHN5cy5ieXRlb3JkZXIgPT0gImJpZyI6CkBAIC01Myw2ICs1NCw3IEBACiAgICAgQmlnRW5kaWFuU3RydWN0dXJlID0gU3RydWN0dXJlCiAgICAgY2xhc3MgTGl0dGxlRW5kaWFuU3RydWN0dXJlKFN0cnVjdHVyZSwgbWV0YWNsYXNzPV9zd2FwcGVkX21ldGEpOgogICAgICAgICAiIiJTdHJ1Y3R1cmUgd2l0aCBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKKyAgICAgICAgX19zbG90c19fID0gKCkKICAgICAgICAgX3N3YXBwZWRieXRlc18gPSBOb25lCiAKIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2J5dGVzd2FwLnB5CmluZGV4IDQyN2JiOGIuLjAxYzk3ZTggMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2J5dGVzd2FwLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2J5dGVzd2FwLnB5CkBAIC0yMiw2ICsyMiwyNiBAQAogICAgICAgICAgICAgc2V0YXR0cihiaXRzLCAiaSVzIiAlIGksIDEpCiAgICAgICAgICAgICBkdW1wKGJpdHMpCiAKKyAgICBkZWYgdGVzdF9zbG90cyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmlnUG9pbnQoQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjX2ludCksICgieSIsIGNfaW50KV0KKworICAgICAgICBjbGFzcyBMb3dQb2ludChMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGNfaW50KSwgKCJ5IiwgY19pbnQpXQorCisgICAgICAgIGJpZyA9IEJpZ1BvaW50KCkKKyAgICAgICAgbGl0dGxlID0gTG93UG9pbnQoKQorICAgICAgICBiaWcueCA9IDQKKyAgICAgICAgYmlnLnkgPSAyCisgICAgICAgIGxpdHRsZS54ID0gMgorICAgICAgICBsaXR0bGUueSA9IDQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBiaWcueiA9IDQyCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbGl0dGxlLnogPSAyNAorCiAgICAgZGVmIHRlc3RfZW5kaWFuX3Nob3J0KHNlbGYpOgogICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjX3Nob3J0Ll9fY3R5cGVfbGVfXywgY19zaG9ydCkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CmluZGV4IDRmYjg5NjQuLjI4NDY4YzEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQpAQCAtNTIsNyArNTIsOSBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCiAgICAgZGVmIHRlc3RfbG9hZF9saWJyYXJ5KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShsaWJjX25hbWUpCisgICAgICAgICMgQ1JUIGlzIG5vIGxvbmdlciBkaXJlY3RseSBsb2FkYWJsZS4gU2VlIGlzc3VlMjM2MDYgZm9yIHRoZQorICAgICAgICAjIGRpc2N1c3Npb24gYWJvdXQgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcy4KKyAgICAgICAgI3NlbGYuYXNzZXJ0SXNOb3ROb25lKGxpYmNfbmFtZSkKICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICBwcmludChmaW5kX2xpYnJhcnkoImtlcm5lbDMyIikpCiAgICAgICAgICAgICBwcmludChmaW5kX2xpYnJhcnkoInVzZXIzMiIpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQppbmRleCBlMjRhNTIwLi40MDczOGY3IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQpAQCAtMjIsNyArMjIsMTAgQEAKICAgICBkZWYgdGVzdF9wYXNzX3BvaW50ZXJzKHNlbGYpOgogICAgICAgICBkbGwgPSBDRExMKF9jdHlwZXNfdGVzdC5fX2ZpbGVfXykKICAgICAgICAgZnVuYyA9IGRsbC5fdGVzdGZ1bmNfcF9wCi0gICAgICAgIGZ1bmMucmVzdHlwZSA9IGNfbG9uZworICAgICAgICBpZiBzaXplb2YoY19sb25nbG9uZykgPT0gc2l6ZW9mKGNfdm9pZF9wKToKKyAgICAgICAgICAgIGZ1bmMucmVzdHlwZSA9IGNfbG9uZ2xvbmcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZ1bmMucmVzdHlwZSA9IGNfbG9uZwogCiAgICAgICAgIGkgPSBjX2ludCgxMjM0NTY3OCkKICMjICAgICAgICBmdW5jLmFyZ3R5cGVzID0gKFBPSU5URVIoY19pbnQpLCkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3Byb3RvdHlwZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5CmluZGV4IDgxOGMxMTEuLmNkMGM2NDkgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3Byb3RvdHlwZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHJvdG90eXBlcy5weQpAQCAtNjksNyArNjksMTAgQEAKIAogICAgIGRlZiB0ZXN0X2ludF9wb2ludGVyX2FyZyhzZWxmKToKICAgICAgICAgZnVuYyA9IHRlc3RkbGwuX3Rlc3RmdW5jX3BfcAotICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKKyAgICAgICAgaWYgc2l6ZW9mKGNfbG9uZ2xvbmcpID09IHNpemVvZihjX3ZvaWRfcCk6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmdsb25nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmdW5jKDApKQogCiAgICAgICAgIGNpID0gY19pbnQoMCkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQppbmRleCAxYzFmZDdkLi45NTUxZTdhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CkBAIC01OSw4ICs1OSwxMyBAQAogICAgICAgICBpdGVtcyA9IFtdCiAgICAgICAgICMgX2Zyb3plbl9pbXBvcnRsaWIgY2hhbmdlcyBzaXplIHdoZW5ldmVyIGltcG9ydGxpYi5fYm9vdHN0cmFwCiAgICAgICAgICMgY2hhbmdlcywgc28gaXQgZ2V0cyBhIHNwZWNpYWwgY2FzZS4gIFdlIHNob3VsZCBtYWtlIHN1cmUgaXQncwotICAgICAgICAjIGZvdW5kLCBidXQgZG9uJ3Qgd29ycnkgYWJvdXQgaXRzIHNpemUgdG9vIG11Y2guCi0gICAgICAgIF9mem5faW1wbGliX3NlZW4gPSBGYWxzZQorICAgICAgICAjIGZvdW5kLCBidXQgZG9uJ3Qgd29ycnkgYWJvdXQgaXRzIHNpemUgdG9vIG11Y2guICBUaGUgc2FtZQorICAgICAgICAjIGFwcGxpZXMgdG8gX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwuCisgICAgICAgIGJvb3RzdHJhcF9zZWVuID0gW10KKyAgICAgICAgYm9vdHN0cmFwX2V4cGVjdGVkID0gWworICAgICAgICAgICAgICAgIGInX2Zyb3plbl9pbXBvcnRsaWInLAorICAgICAgICAgICAgICAgIGInX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnLAorICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGVudHJ5IGluIGZ0OgogICAgICAgICAgICAgIyBUaGlzIGlzIGRhbmdlcm91cy4gV2UgKmNhbiogaXRlcmF0ZSBvdmVyIGEgcG9pbnRlciwgYnV0CiAgICAgICAgICAgICAjIHRoZSBsb29wIHdpbGwgbm90IHRlcm1pbmF0ZSAobWF5YmUgd2l0aCBhbiBhY2Nlc3MKQEAgLTY4LDEwICs3MywxMCBAQAogICAgICAgICAgICAgaWYgZW50cnkubmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgIGlmIGVudHJ5Lm5hbWUgPT0gYidfZnJvemVuX2ltcG9ydGxpYic6Ci0gICAgICAgICAgICAgICAgX2Z6bl9pbXBsaWJfc2VlbiA9IFRydWUKKyAgICAgICAgICAgIGlmIGVudHJ5Lm5hbWUgaW4gYm9vdHN0cmFwX2V4cGVjdGVkOgorICAgICAgICAgICAgICAgIGJvb3RzdHJhcF9zZWVuLmFwcGVuZChlbnRyeS5uYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5zaXplLAotICAgICAgICAgICAgICAgICAgICAiX2Zyb3plbl9pbXBvcnRsaWIgd2FzIHJlcG9ydGVkIGFzIGhhdmluZyBubyBzaXplIikKKyAgICAgICAgICAgICAgICAgICAgInt9IHdhcyByZXBvcnRlZCBhcyBoYXZpbmcgbm8gc2l6ZSIuZm9ybWF0KGVudHJ5Lm5hbWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoKGVudHJ5Lm5hbWUsIGVudHJ5LnNpemUpKQogCkBAIC04MSw4ICs4Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9mem5faW1wbGliX3NlZW4sCi0gICAgICAgICAgICAiX2Zyb3plbl9pbXBvcnRsaWIgd2Fzbid0IGZvdW5kIGluIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChib290c3RyYXBfc2VlbiksIGJvb3RzdHJhcF9leHBlY3RlZCwKKyAgICAgICAgICAgICJmcm96ZW4gYm9vdHN0cmFwIG1vZHVsZXMgZGlkIG5vdCBtYXRjaCBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIikKIAogICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgX3BvaW50ZXJfdHlwZV9jYWNoZQogICAgICAgICBkZWwgX3BvaW50ZXJfdHlwZV9jYWNoZVtzdHJ1Y3RfZnJvemVuXQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDU5NTExM2IuLjllNzRjY2QgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgaSA9IGkgKyBsZW4ocHJlZml4KQogICAgICAgICBzLCByZXN0ID0gc3lzLnZlcnNpb25baTpdLnNwbGl0KCIgIiwgMSkKICAgICAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgICAgIGlmIG1ham9yVmVyc2lvbiA+PSAxMzoKKyAgICAgICAgICAgIG1ham9yVmVyc2lvbiArPSAxCiAgICAgICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICAgICAjIEkgZG9uJ3QgdGhpbmsgcGF0aHMgYXJlIGFmZmVjdGVkIGJ5IG1pbm9yIHZlcnNpb24gaW4gdmVyc2lvbiA2CiAgICAgICAgIGlmIG1ham9yVmVyc2lvbiA9PSA2OgpAQCAtMzYsOCArMzgsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGlmIHZlcnNpb24gPD0gNjoKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNydCcKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxpZiB2ZXJzaW9uIDw9IDEzOgogICAgICAgICAgICAgY2xpYm5hbWUgPSAnbXN2Y3IlZCcgJSAodmVyc2lvbiAqIDEwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCisgICAgICAgICAgICAjIGRpc2N1c3Npb24gYWJvdXQgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcy4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgIyBJZiBweXRob24gd2FzIGJ1aWx0IHdpdGggaW4gZGVidWcgbW9kZQogICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQpkaWZmIC0tZ2l0IGEvTGliL2RhdGV0aW1lLnB5IGIvTGliL2RhdGV0aW1lLnB5CmluZGV4IDM0ZTVkMzguLmRiMTNiMTIgMTAwNjQ0Ci0tLSBhL0xpYi9kYXRldGltZS5weQorKysgYi9MaWIvZGF0ZXRpbWUucHkKQEAgLTEyLDcgKzEyLDcgQEAKIAogTUlOWUVBUiA9IDEKIE1BWFlFQVIgPSA5OTk5Ci1fTUFYT1JESU5BTCA9IDM2NTIwNTkgIyBkYXRlLm1heC50b29yZGluYWwoKQorX01BWE9SRElOQUwgPSAzNjUyMDU5ICAjIGRhdGUubWF4LnRvb3JkaW5hbCgpCiAKICMgVXRpbGl0eSBmdW5jdGlvbnMsIGFkYXB0ZWQgZnJvbSBQeXRob24ncyBEZW1vL2NsYXNzZXMvRGF0ZXMucHksIHdoaWNoCiAjIGFsc28gYXNzdW1lcyB0aGUgY3VycmVudCBHcmVnb3JpYW4gY2FsZW5kYXIgaW5kZWZpbml0ZWx5IGV4dGVuZGVkIGluCkBAIC0yNiw3ICsyNiw3IEBACiAjIC0xIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGluZGV4aW5nIHB1cnBvc2VzLgogX0RBWVNfSU5fTU9OVEggPSBbLTEsIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdCiAKLV9EQVlTX0JFRk9SRV9NT05USCA9IFstMV0gIyAtMSBpcyBhIHBsYWNlaG9sZGVyIGZvciBpbmRleGluZyBwdXJwb3Nlcy4KK19EQVlTX0JFRk9SRV9NT05USCA9IFstMV0gICMgLTEgaXMgYSBwbGFjZWhvbGRlciBmb3IgaW5kZXhpbmcgcHVycG9zZXMuCiBkYm0gPSAwCiBmb3IgZGltIGluIF9EQVlTX0lOX01PTlRIWzE6XToKICAgICBfREFZU19CRUZPUkVfTU9OVEguYXBwZW5kKGRibSkKQEAgLTE2Miw5ICsxNjIsOSBAQAogIyBDb3JyZWN0bHkgc3Vic3RpdHV0ZSBmb3IgJXogYW5kICVaIGVzY2FwZXMgaW4gc3RyZnRpbWUgZm9ybWF0cy4KIGRlZiBfd3JhcF9zdHJmdGltZShvYmplY3QsIGZvcm1hdCwgdGltZXR1cGxlKToKICAgICAjIERvbid0IGNhbGwgdXRjb2Zmc2V0KCkgb3IgdHpuYW1lKCkgdW5sZXNzIGFjdHVhbGx5IG5lZWRlZC4KLSAgICBmcmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJWYKLSAgICB6cmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKLSAgICBacmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJVoKKyAgICBmcmVwbGFjZSA9IE5vbmUgICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCisgICAgenJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlegorICAgIFpyZXBsYWNlID0gTm9uZSAgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJVoKIAogICAgICMgU2NhbiBmb3JtYXQgZm9yICV6IGFuZCAlWiBlc2NhcGVzLCByZXBsYWNpbmcgYXMgbmVlZGVkLgogICAgIG5ld2Zvcm1hdCA9IFtdCkBAIC0yMTcsMTEgKzIxNyw2IEBACiAgICAgbmV3Zm9ybWF0ID0gIiIuam9pbihuZXdmb3JtYXQpCiAgICAgcmV0dXJuIF90aW1lLnN0cmZ0aW1lKG5ld2Zvcm1hdCwgdGltZXR1cGxlKQogCi1kZWYgX2NhbGxfdHppbmZvX21ldGhvZCh0emluZm8sIG1ldGhuYW1lLCB0emluZm9hcmcpOgotICAgIGlmIHR6aW5mbyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBnZXRhdHRyKHR6aW5mbywgbWV0aG5hbWUpKHR6aW5mb2FyZykKLQogIyBKdXN0IHJhaXNlIFR5cGVFcnJvciBpZiB0aGUgYXJnIGlzbid0IE5vbmUgb3IgYSBzdHJpbmcuCiBkZWYgX2NoZWNrX3R6bmFtZShuYW1lKToKICAgICBpZiBuYW1lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgpAQCAtMjQ1LDEzICsyNDAsMzEgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gYSB3aG9sZSBudW1iZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBtaW51dGVzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgb2Zmc2V0KSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICItdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgdGltZWRlbHRhKGhvdXJzPTI0KSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQorCitkZWYgX2NoZWNrX2ludF9maWVsZCh2YWx1ZSk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5fX2ludF9fKCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19pbnRfXyByZXR1cm5lZCBub24taW50ICh0eXBlICVzKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlICVzKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSh2YWx1ZSkuX19uYW1lX18pCisgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQogCiBkZWYgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpOgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHllYXIsIGludCk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW50IGV4cGVjdGVkJykKKyAgICB5ZWFyID0gX2NoZWNrX2ludF9maWVsZCh5ZWFyKQorICAgIG1vbnRoID0gX2NoZWNrX2ludF9maWVsZChtb250aCkKKyAgICBkYXkgPSBfY2hlY2tfaW50X2ZpZWxkKGRheSkKICAgICBpZiBub3QgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVI6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3llYXIgbXVzdCBiZSBpbiAlZC4uJWQnICUgKE1JTllFQVIsIE1BWFlFQVIpLCB5ZWFyKQogICAgIGlmIG5vdCAxIDw9IG1vbnRoIDw9IDEyOgpAQCAtMjU5LDEwICsyNzIsMTMgQEAKICAgICBkaW0gPSBfZGF5c19pbl9tb250aCh5ZWFyLCBtb250aCkKICAgICBpZiBub3QgMSA8PSBkYXkgPD0gZGltOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkYXkgbXVzdCBiZSBpbiAxLi4lZCcgJSBkaW0sIGRheSkKKyAgICByZXR1cm4geWVhciwgbW9udGgsIGRheQogCiBkZWYgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UoaG91ciwgaW50KToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnQgZXhwZWN0ZWQnKQorICAgIGhvdXIgPSBfY2hlY2tfaW50X2ZpZWxkKGhvdXIpCisgICAgbWludXRlID0gX2NoZWNrX2ludF9maWVsZChtaW51dGUpCisgICAgc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChzZWNvbmQpCisgICAgbWljcm9zZWNvbmQgPSBfY2hlY2tfaW50X2ZpZWxkKG1pY3Jvc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IGhvdXIgPD0gMjM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2hvdXIgbXVzdCBiZSBpbiAwLi4yMycsIGhvdXIpCiAgICAgaWYgbm90IDAgPD0gbWludXRlIDw9IDU5OgpAQCAtMjcxLDYgKzI4Nyw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKKyAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCiAKIGRlZiBfY2hlY2tfdHppbmZvX2FyZyh0eik6CiAgICAgaWYgdHogaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgpAQCAtMzE2LDcgKzMzMyw3IEBACiAgICAgUmVwcmVzZW50YXRpb246IChkYXlzLCBzZWNvbmRzLCBtaWNyb3NlY29uZHMpLiAgV2h5PyAgQmVjYXVzZSBJCiAgICAgZmVsdCBsaWtlIGl0LgogICAgICIiIgotICAgIF9fc2xvdHNfXyA9ICdfZGF5cycsICdfc2Vjb25kcycsICdfbWljcm9zZWNvbmRzJworICAgIF9fc2xvdHNfXyA9ICdfZGF5cycsICdfc2Vjb25kcycsICdfbWljcm9zZWNvbmRzJywgJ19oYXNoY29kZScKIAogICAgIGRlZiBfX25ld19fKGNscywgZGF5cz0wLCBzZWNvbmRzPTAsIG1pY3Jvc2Vjb25kcz0wLAogICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcz0wLCBtaW51dGVzPTAsIGhvdXJzPTAsIHdlZWtzPTApOgpAQCAtMzgyLDM4ICszOTksMjYgQEAKICAgICAgICAgIyBzZWNvbmRzZnJhYyBpc24ndCByZWZlcmVuY2VkIGFnYWluCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShtaWNyb3NlY29uZHMsIGZsb2F0KToKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyArPSB1c2RvdWJsZQotICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gcm91bmQobWljcm9zZWNvbmRzLCAwKQotICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMWU2KQotICAgICAgICAgICAgYXNzZXJ0IG1pY3Jvc2Vjb25kcyA9PSBpbnQobWljcm9zZWNvbmRzKQotICAgICAgICAgICAgYXNzZXJ0IHNlY29uZHMgPT0gaW50KHNlY29uZHMpCi0gICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0LiozNjAwLikKLSAgICAgICAgICAgIGFzc2VydCBkYXlzID09IGludChkYXlzKQotICAgICAgICAgICAgYXNzZXJ0IHNlY29uZHMgPT0gaW50KHNlY29uZHMpCi0gICAgICAgICAgICBkICs9IGludChkYXlzKQotICAgICAgICAgICAgcyArPSBpbnQoc2Vjb25kcykgICAjIGNhbid0IG92ZXJmbG93Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpCi0gICAgICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDMgKiAyNCAqIDM2MDAKLSAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcyArIHVzZG91YmxlKQogICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMTAwMDAwMCkKICAgICAgICAgICAgIGRheXMsIHNlY29uZHMgPSBkaXZtb2Qoc2Vjb25kcywgMjQqMzYwMCkKICAgICAgICAgICAgIGQgKz0gZGF5cwotICAgICAgICAgICAgcyArPSBpbnQoc2Vjb25kcykgICAgIyBjYW4ndCBvdmVyZmxvdwotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQotICAgICAgICAgICAgYXNzZXJ0IGFicyhzKSA8PSAzICogMjQgKiAzNjAwCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgPSBmbG9hdChtaWNyb3NlY29uZHMpCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgKz0gdXNkb3VibGUKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcywgMCkKKyAgICAgICAgICAgIHMgKz0gc2Vjb25kcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gaW50KG1pY3Jvc2Vjb25kcykKKyAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCisgICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0KjM2MDApCisgICAgICAgICAgICBkICs9IGRheXMKKyAgICAgICAgICAgIHMgKz0gc2Vjb25kcworICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gcm91bmQobWljcm9zZWNvbmRzICsgdXNkb3VibGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBpbnQpCiAgICAgICAgIGFzc2VydCBhYnMocykgPD0gMyAqIDI0ICogMzYwMAogICAgICAgICBhc3NlcnQgYWJzKG1pY3Jvc2Vjb25kcykgPCAzLjFlNgogCiAgICAgICAgICMgSnVzdCBhIGxpdHRsZSBiaXQgb2YgY2FycnlpbmcgcG9zc2libGUgZm9yIG1pY3Jvc2Vjb25kcyBhbmQgc2Vjb25kcy4KLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBmbG9hdCkKLSAgICAgICAgYXNzZXJ0IGludChtaWNyb3NlY29uZHMpID09IG1pY3Jvc2Vjb25kcwotICAgICAgICB1cyA9IGludChtaWNyb3NlY29uZHMpCi0gICAgICAgIHNlY29uZHMsIHVzID0gZGl2bW9kKHVzLCAxMDAwMDAwKQotICAgICAgICBzICs9IHNlY29uZHMgICAgIyBjYW50J3Qgb3ZlcmZsb3cKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQorICAgICAgICBzZWNvbmRzLCB1cyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCisgICAgICAgIHMgKz0gc2Vjb25kcwogICAgICAgICBkYXlzLCBzID0gZGl2bW9kKHMsIDI0KjM2MDApCiAgICAgICAgIGQgKz0gZGF5cwogCkBAIC00MjEsMjcgKzQyNiwzMSBAQAogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpIGFuZCAwIDw9IHMgPCAyNCozNjAwCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHVzLCBpbnQpIGFuZCAwIDw9IHVzIDwgMTAwMDAwMAogCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLSAgICAgICAgc2VsZi5fZGF5cyA9IGQKLSAgICAgICAgc2VsZi5fc2Vjb25kcyA9IHMKLSAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzID0gdXMKICAgICAgICAgaWYgYWJzKGQpID4gOTk5OTk5OTk5OgogICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigidGltZWRlbHRhICMgb2YgZGF5cyBpcyB0b28gbGFyZ2U6ICVkIiAlIGQpCiAKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgc2VsZi5fZGF5cyA9IGQKKyAgICAgICAgc2VsZi5fc2Vjb25kcyA9IHMKKyAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzID0gdXMKKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9taWNyb3NlY29uZHM6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZHMpCisgICAgICAgICAgICByZXR1cm4gIiVzLiVzKCVkLCAlZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZHMpCiAgICAgICAgIGlmIHNlbGYuX3NlY29uZHM6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCkiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMpCi0gICAgICAgIHJldHVybiAiJXMoJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9kYXlzKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlY29uZHMpCisgICAgICAgIHJldHVybiAiJXMuJXMoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5cykKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICBtbSwgc3MgPSBkaXZtb2Qoc2VsZi5fc2Vjb25kcywgNjApCkBAIC00NTcsNyArNDY2LDcgQEAKIAogICAgIGRlZiB0b3RhbF9zZWNvbmRzKHNlbGYpOgogICAgICAgICAiIiJUb3RhbCBzZWNvbmRzIGluIHRoZSBkdXJhdGlvbi4iIiIKLSAgICAgICAgcmV0dXJuICgoc2VsZi5kYXlzICogODY0MDAgKyBzZWxmLnNlY29uZHMpKjEwKio2ICsKKyAgICAgICAgcmV0dXJuICgoc2VsZi5kYXlzICogODY0MDAgKyBzZWxmLnNlY29uZHMpICogMTAqKjYgKwogICAgICAgICAgICAgICAgIHNlbGYubWljcm9zZWNvbmRzKSAvIDEwKio2CiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTU3OCwxMiArNTg3LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC02MTMsNyArNjE2LDkgQEAKICAgICAgICAgcmV0dXJuIF9jbXAoc2VsZi5fZ2V0c3RhdGUoKSwgb3RoZXIuX2dldHN0YXRlKCkpCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKCkpCisgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQogCiAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX2RheXMgIT0gMCBvcgpAQCAtNjYxLDcgKzY2Niw3IEBACiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgogICAgIHllYXIsIG1vbnRoLCBkYXkKICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX3llYXInLCAnX21vbnRoJywgJ19kYXknCisgICAgX19zbG90c19fID0gJ195ZWFyJywgJ19tb250aCcsICdfZGF5JywgJ19oYXNoY29kZScKIAogICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KQEAgLTY3MCwxNyArNjc1LDE5IEBACiAKICAgICAgICAgeWVhciwgbW9udGgsIGRheSAocmVxdWlyZWQsIGJhc2UgMSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIChpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDQgYW5kCi0gICAgICAgICAgICAxIDw9IHllYXJbMl0gPD0gMTIgYW5kIG1vbnRoIGlzIE5vbmUpOiAgIyBNb250aCBpcyBzYW5lCisgICAgICAgIGlmIG1vbnRoIGlzIE5vbmUgYW5kIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gNCBhbmQgXAorICAgICAgICAgICAgICAgIDEgPD0geWVhclsyXSA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhcikKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQorICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCiAgICAgICAgIHNlbGYuX21vbnRoID0gbW9udGgKICAgICAgICAgc2VsZi5fZGF5ID0gZGF5CisgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICMgQWRkaXRpb25hbCBjb25zdHJ1Y3RvcnMKQEAgLTcyMCwxMCArNzI3LDExIEBACiAgICAgICAgID4+PiByZXByKGR0KQogICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgMSwgMSwgMCwgMCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YyknCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gIiVzKCVkLCAlZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl95ZWFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb250aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5KQorICAgICAgICByZXR1cm4gIiVzLiVzKCVkLCAlZCwgJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3llYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXkpCiAgICAgIyBYWFggVGhlc2Ugc2hvdWxkbid0IGRlcGVuZCBvbiB0aW1lLmxvY2FsdGltZSgpLCBiZWNhdXNlIHRoYXQKICAgICAjIGNsaXBzIHRoZSB1c2FibGUgZGF0ZXMgdG8gWzE5NzAgLi4gMjAzOCkuICBBdCBsZWFzdCBjdGltZSgpIGlzCiAgICAgIyBlYXNpbHkgZG9uZSB3aXRob3V0IHVzaW5nIHN0cmZ0aW1lKCkgLS0gdGhhdCdzIGJldHRlciB0b28gYmVjYXVzZQpAQCAtNzQzLDYgKzc1MSw4IEBACiAgICAgICAgIHJldHVybiBfd3JhcF9zdHJmdGltZShzZWxmLCBmbXQsIHNlbGYudGltZXR1cGxlKCkpCiAKICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmbXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmbXQsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm11c3QgYmUgc3RyLCBub3QgJXMiICUgdHlwZShmbXQpLl9fbmFtZV9fKQogICAgICAgICBpZiBsZW4oZm10KSAhPSAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZnRpbWUoZm10KQogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCkBAIC04MDAsNyArODEwLDYgQEAKICAgICAgICAgICAgIG1vbnRoID0gc2VsZi5fbW9udGgKICAgICAgICAgaWYgZGF5IGlzIE5vbmU6CiAgICAgICAgICAgICBkYXkgPSBzZWxmLl9kYXkKLSAgICAgICAgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCiAgICAgICAgIHJldHVybiBkYXRlKHllYXIsIG1vbnRoLCBkYXkpCiAKICAgICAjIENvbXBhcmlzb25zIG9mIGRhdGUgb2JqZWN0cyB3aXRoIG90aGVyLgpAQCAtODEwLDExICs4MTksNiBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KICAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC04NDMsNyArODQ3LDkgQEAKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIkhhc2guIgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgQ29tcHV0YXRpb25zCiAKQEAgLTkxMyw4ICs5MTksNiBAQAogICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcpOgotICAgICAgICBpZiBsZW4oc3RyaW5nKSAhPSA0IG9yIG5vdCAoMSA8PSBzdHJpbmdbMl0gPD0gMTIpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZW5vdWdoIGFyZ3VtZW50cyIpCiAgICAgICAgIHloaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5ID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KIApAQCAtOTMzLDYgKzkzNyw3IEBACiAgICAgU3ViY2xhc3NlcyBtdXN0IG92ZXJyaWRlIHRoZSBuYW1lKCksIHV0Y29mZnNldCgpIGFuZCBkc3QoKSBtZXRob2RzLgogICAgICIiIgogICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKICAgICAgICAgImRhdGV0aW1lIC0+IHN0cmluZyBuYW1lIG9mIHRpbWUgem9uZS4iCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInR6aW5mbyBzdWJjbGFzcyBtdXN0IG92ZXJyaWRlIHR6bmFtZSgpIikKQEAgLTEwMTksNiArMTAyNCw3IEBACiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgogICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvCiAgICAgIiIiCisgICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgpAQCAtMTAyOSwxOCArMTAzNSwyMiBAQAogICAgICAgICBzZWNvbmQsIG1pY3Jvc2Vjb25kIChkZWZhdWx0IHRvIHplcm8pCiAgICAgICAgIHR6aW5mbyAoZGVmYXVsdCB0byBOb25lKQogICAgICAgICAiIiIKLSAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKLSAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2OgorICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0gPCAyNDoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKKyAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKICAgICAgICAgc2VsZi5fbWludXRlID0gbWludXRlCiAgICAgICAgIHNlbGYuX3NlY29uZCA9IHNlY29uZAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbworICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEwNzksMTIgKzEwODksNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtMTEyNSw4ICsxMTI5LDggQEAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgogICAgICAgICAgICAgcmV0dXJuIF9jbXAoKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQpAQCAtMTEzOSwxNiArMTE0MywyMCBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAiIiJIYXNoLiIiIgotICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgaWYgbm90IHR6b2ZmOiAjIHplcm8gb3IgTm9uZQotICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKLSAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgYXNzZXJ0IG5vdCBtICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCi0gICAgICAgIG0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCi0gICAgICAgIGlmIDAgPD0gaCA8IDI0OgotICAgICAgICAgICAgcmV0dXJuIGhhc2godGltZShoLCBtLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkpCi0gICAgICAgIHJldHVybiBoYXNoKChoLCBtLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkpCisgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgorICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBub3QgdHpvZmY6ICAjIHplcm8gb3IgTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoLCBtID0gZGl2bW9kKHRpbWVkZWx0YShob3Vycz1zZWxmLmhvdXIsIG1pbnV0ZXM9c2VsZi5taW51dGUpIC0gdHpvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBtICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCisgICAgICAgICAgICAgICAgbSAvLz0gdGltZWRlbHRhKG1pbnV0ZXM9MSkKKyAgICAgICAgICAgICAgICBpZiAwIDw9IGggPCAyNDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHRpbWUoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCgoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgQ29udmVyc2lvbiB0byBzdHJpbmcKIApAQCAtMTE3Niw4ICsxMTg0LDkgQEAKICAgICAgICAgICAgIHMgPSAiLCAlZCIgJSBzZWxmLl9zZWNvbmQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHMgPSAiIgotICAgICAgICBzPSAiJXMoJWQsICVkJXMpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHMpCisgICAgICAgIHM9ICIlcy4lcyglZCwgJWQlcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKQEAgLTEyMTAsNiArMTIxOSw4IEBACiAgICAgICAgIHJldHVybiBfd3JhcF9zdHJmdGltZShzZWxmLCBmbXQsIHRpbWV0dXBsZSkKIAogICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZtdCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZtdCwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibXVzdCBiZSBzdHIsIG5vdCAlcyIgJSB0eXBlKGZtdCkuX19uYW1lX18pCiAgICAgICAgIGlmIGxlbihmbXQpICE9IDA6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdHJmdGltZShmbXQpCiAgICAgICAgIHJldHVybiBzdHIoc2VsZikKQEAgLTEyNjYsMTYgKzEyNzcsOCBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbykKIAotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zZWNvbmQgb3Igc2VsZi5taWNyb3NlY29uZDoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIG9mZnNldCA9IHNlbGYudXRjb2Zmc2V0KCkgb3IgdGltZWRlbHRhKDApCi0gICAgICAgIHJldHVybiB0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAhPSBvZmZzZXQKLQogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKICAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgpAQCAtMTI4OSwxNSArMTI5MiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsIHNlbGYuX3R6aW5mbykKIAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKLSAgICAgICAgaWYgbGVuKHN0cmluZykgIT0gNiBvciBzdHJpbmdbMF0gPj0gMjQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKQotICAgICAgICAoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICB1czEsIHVzMiwgdXMzKSA9IHN0cmluZworICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnIikKKyAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCi0gICAgICAgIGlmIHR6aW5mbyBpcyBOb25lIG9yIGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKLSAgICAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyAlciIgJSB0emluZm8pCisgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKQEAgLTEzMTQsMjUgKzEzMTMsMzAgQEAKICAgICBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuCiAgICAgaW5zdGFuY2Ugb2YgYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgdGltZS5fX3Nsb3RzX18KIAotICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgKAotICAgICAgICAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywKLSAgICAgICAgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJykKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTA6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKLSAgICAgICAgICAgIHNlbGYgPSBkYXRlLl9fbmV3X18oY2xzLCB5ZWFyWzo0XSkKKyAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQotICAgICAgICBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQotICAgICAgICBzZWxmID0gZGF0ZS5fX25ld19fKGNscywgeWVhciwgbW9udGgsIGRheSkKKyAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgc2VsZi5feWVhciA9IHllYXIKKyAgICAgICAgc2VsZi5fbW9udGggPSBtb250aAorICAgICAgICBzZWxmLl9kYXkgPSBkYXkKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKICAgICAgICAgc2VsZi5fbWludXRlID0gbWludXRlCiAgICAgICAgIHNlbGYuX3NlY29uZCA9IHNlY29uZAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbworICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEzNjcsNyArMTM3MSw2IEBACiAKICAgICAgICAgQSB0aW1lem9uZSBpbmZvIG9iamVjdCBtYXkgYmUgcGFzc2VkIGluIGFzIHdlbGwuCiAgICAgICAgICIiIgotCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6KQogCiAgICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmxvY2FsdGltZSBpZiB0eiBpcyBOb25lIGVsc2UgX3RpbWUuZ210aW1lCkBAIC0xMzkxLDcgKzEzOTQsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKLSAgICAgICAgIkNvbnN0cnVjdCBhIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4iCisgICAgICAgICIiIkNvbnN0cnVjdCBhIG5haXZlIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wLiIiIgogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKICAgICAgICAgdXMgPSBpbnQoZnJhYyAqIDFlNikKIApAQCAtMTQwNiwxMSArMTQwOSw2IEBACiAgICAgICAgIHNzID0gbWluKHNzLCA1OSkgICAgIyBjbGFtcCBvdXQgbGVhcCBzZWNvbmRzIGlmIHRoZSBwbGF0Zm9ybSBoYXMgdGhlbQogICAgICAgICByZXR1cm4gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzKQogCi0gICAgIyBYWFggVGhpcyBpcyBzdXBwb3NlZCB0byBkbyBiZXR0ZXIgdGhhbiB3ZSAqY2FuKiBkbyBieSB1c2luZyB0aW1lLnRpbWUoKSwKLSAgICAjIFhYWCBpZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgYSBtb3JlIGFjY3VyYXRlIHdheS4gIFRoZSBDIGltcGxlbWVudGF0aW9uCi0gICAgIyBYWFggdXNlcyBnZXR0aW1lb2ZkYXkgb24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBpdCwgYnV0IHRoYXQgaXNuJ3QKLSAgICAjIFhYWCBhdmFpbGFibGUgZnJvbSBQeXRob24uICBTbyBub3coKSBtYXkgcmV0dXJuIGRpZmZlcmVudCByZXN1bHRzCi0gICAgIyBYWFggYWNyb3NzIHRoZSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG5vdyhjbHMsIHR6PU5vbmUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSB0aW1lLnRpbWUoKSBhbmQgb3B0aW9uYWwgdGltZSB6b25lIGluZm8uIgpAQCAtMTQ5NywxMSArMTQ5NSw4IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQotICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8pCisgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKQEAgLTE1NzEsMTAgKzE1NjYsOSBAQAogICAgICAgICBPcHRpb25hbCBhcmd1bWVudCBzZXAgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBkYXRlIGFuZAogICAgICAgICB0aW1lLCBkZWZhdWx0ICdUJy4KICAgICAgICAgIiIiCi0gICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwKSArCi0gICAgICAgICAgICAgICAgX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkpCisgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKworICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQogICAgICAgICBvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgIGlmIG9mZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIG9mZi5kYXlzIDwgMDoKQEAgLTE1OTAsMTQgKzE1ODQsMTUgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIiQ29udmVydCB0byBmb3JtYWwgc3RyaW5nLCBmb3IgcmVwcigpLiIiIgotICAgICAgICBMID0gW3NlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksICMgVGhlc2UgYXJlIG5ldmVyIHplcm8KKyAgICAgICAgTCA9IFtzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCAgIyBUaGVzZSBhcmUgbmV2ZXIgemVybwogICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCBzZWxmLl9taWNyb3NlY29uZF0KICAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgIGRlbCBMWy0xXQogICAgICAgICBpZiBMWy0xXSA9PSAwOgogICAgICAgICAgICAgZGVsIExbLTFdCi0gICAgICAgIHMgPSAiLCAiLmpvaW4obWFwKHN0ciwgTCkpCi0gICAgICAgIHMgPSAiJXMoJXMpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzKQorICAgICAgICBzID0gIiVzLiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIuam9pbihtYXAoc3RyLCBMKSkpCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgpAQCAtMTYyOSw3ICsxNjI0LDkgQEAKICAgICAgICAgaXQgbWVhbiBhbnl0aGluZyBpbiBwYXJ0aWN1bGFyLiBGb3IgZXhhbXBsZSwgIkdNVCIsICJVVEMiLCAiLTUwMCIsCiAgICAgICAgICItNTowMCIsICJFRFQiLCAiVVMvRWFzdGVybiIsICJBbWVyaWNhL05ldyBZb3JrIiBhcmUgYWxsIHZhbGlkIHJlcGxpZXMuCiAgICAgICAgICIiIgotICAgICAgICBuYW1lID0gX2NhbGxfdHppbmZvX21ldGhvZChzZWxmLl90emluZm8sICJ0em5hbWUiLCBzZWxmKQorICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIG5hbWUgPSBzZWxmLl90emluZm8udHpuYW1lKHNlbGYpCiAgICAgICAgIF9jaGVja190em5hbWUobmFtZSkKICAgICAgICAgcmV0dXJuIG5hbWUKIApAQCAtMTY1OCwxNCArMTY1NSw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgotICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKQEAgLTE3MTUsOSArMTcwNCw5IEBACiAgICAgICAgICAgICByZXR1cm4gX2NtcCgoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCksCi0gICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5feWVhciwgb3RoZXIuX21vbnRoLCBvdGhlci5fZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyLl95ZWFyLCBvdGhlci5fbW9udGgsIG90aGVyLl9kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgogICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKQEAgLTE3NzUsMTIgKzE3NjQsMTUgQEAKICAgICAgICAgcmV0dXJuIGJhc2UgKyBvdG9mZiAtIG15b2ZmCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQotICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKLSAgICAgICAgZGF5cyA9IF95bWQyb3JkKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkpCi0gICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCi0gICAgICAgIHJldHVybiBoYXNoKHRpbWVkZWx0YShkYXlzLCBzZWNvbmRzLCBzZWxmLm1pY3Jvc2Vjb25kKSAtIHR6b2ZmKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgdHpvZmYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF5cyA9IF95bWQyb3JkKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkpCisgICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuaG91ciAqIDM2MDAgKyBzZWxmLm1pbnV0ZSAqIDYwICsgc2VsZi5zZWNvbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godGltZWRlbHRhKGRheXMsIHNlY29uZHMsIHNlbGYubWljcm9zZWNvbmQpIC0gdHpvZmYpCisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIApAQCAtMTc5NywxNCArMTc4OSwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsIHNlbGYuX3R6aW5mbykKIAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKKyAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCiAgICAgICAgICh5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VsZi5faG91ciwKICAgICAgICAgIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzKSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwotICAgICAgICBpZiB0emluZm8gaXMgTm9uZSBvciBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6Ci0gICAgICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmcgJXIiICUgdHppbmZvKQorICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQpAQCAtMTgyMCw3ICsxODExLDcgQEAKICAgICAjIFhYWCBUaGlzIGNvdWxkIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseQogICAgIFRIVVJTREFZID0gMwogICAgIGZpcnN0ZGF5ID0gX3ltZDJvcmQoeWVhciwgMSwgMSkKLSAgICBmaXJzdHdlZWtkYXkgPSAoZmlyc3RkYXkgKyA2KSAlIDcgIyBTZWUgd2Vla2RheSgpIGFib3ZlCisgICAgZmlyc3R3ZWVrZGF5ID0gKGZpcnN0ZGF5ICsgNikgJSA3ICAjIFNlZSB3ZWVrZGF5KCkgYWJvdmUKICAgICB3ZWVrMW1vbmRheSA9IGZpcnN0ZGF5IC0gZmlyc3R3ZWVrZGF5CiAgICAgaWYgZmlyc3R3ZWVrZGF5ID4gVEhVUlNEQVk6CiAgICAgICAgIHdlZWsxbW9uZGF5ICs9IDcKQEAgLTE4NDEsMTMgKzE4MzIsMTIgQEAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuYW1lIG11c3QgYmUgYSBzdHJpbmciKQogICAgICAgICBpZiBub3QgY2xzLl9taW5vZmZzZXQgPD0gb2Zmc2V0IDw9IGNscy5fbWF4b2Zmc2V0OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KS4iKQotICAgICAgICBpZiAob2Zmc2V0Lm1pY3Jvc2Vjb25kcyAhPSAwIG9yCi0gICAgICAgICAgICBvZmZzZXQuc2Vjb25kcyAlIDYwICE9IDApOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZWRlbHRhKGhvdXJzPTI0KS4iKQorICAgICAgICBpZiAob2Zmc2V0Lm1pY3Jvc2Vjb25kcyAhPSAwIG9yIG9mZnNldC5zZWNvbmRzICUgNjAgIT0gMCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpCiAgICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZShvZmZzZXQsIG5hbWUpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTE4ODQsMTAgKzE4NzQsMTIgQEAKICAgICAgICAgaWYgc2VsZiBpcyBzZWxmLnV0YzoKICAgICAgICAgICAgIHJldHVybiAnZGF0ZXRpbWUudGltZXpvbmUudXRjJwogICAgICAgICBpZiBzZWxmLl9uYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQpCi0gICAgICAgIHJldHVybiAiJXMoJXIsICVyKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCisgICAgICAgICAgICByZXR1cm4gIiVzLiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0KQorICAgICAgICByZXR1cm4gIiVzLiVzKCVyLCAlcikiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCwgc2VsZi5fbmFtZSkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50em5hbWUoTm9uZSkKQEAgLTIxNDIsMTQgKzIxMzQsMTMgQEAKICAgICBwYXNzCiBlbHNlOgogICAgICMgQ2xlYW4gdXAgdW51c2VkIG5hbWVzCi0gICAgZGVsIChfREFZTkFNRVMsIF9EQVlTX0JFRk9SRV9NT05USCwgX0RBWVNfSU5fTU9OVEgsCi0gICAgICAgICBfREkxMDBZLCBfREk0MDBZLCBfREk0WSwgX01BWE9SRElOQUwsIF9NT05USE5BTUVTLAotICAgICAgICAgX2J1aWxkX3N0cnVjdF90aW1lLCBfY2FsbF90emluZm9fbWV0aG9kLCBfY2hlY2tfZGF0ZV9maWVsZHMsCi0gICAgICAgICBfY2hlY2tfdGltZV9maWVsZHMsIF9jaGVja190emluZm9fYXJnLCBfY2hlY2tfdHpuYW1lLAotICAgICAgICAgX2NoZWNrX3V0Y19vZmZzZXQsIF9jbXAsIF9jbXBlcnJvciwgX2RhdGVfY2xhc3MsIF9kYXlzX2JlZm9yZV9tb250aCwKLSAgICAgICAgIF9kYXlzX2JlZm9yZV95ZWFyLCBfZGF5c19pbl9tb250aCwgX2Zvcm1hdF90aW1lLCBfaXNfbGVhcCwKLSAgICAgICAgIF9pc293ZWVrMW1vbmRheSwgX21hdGgsIF9vcmQyeW1kLCBfdGltZSwgX3RpbWVfY2xhc3MsIF90emluZm9fY2xhc3MsCi0gICAgICAgICBfd3JhcF9zdHJmdGltZSwgX3ltZDJvcmQpCisgICAgZGVsIChfREFZTkFNRVMsIF9EQVlTX0JFRk9SRV9NT05USCwgX0RBWVNfSU5fTU9OVEgsIF9ESTEwMFksIF9ESTQwMFksCisgICAgICAgICBfREk0WSwgX0VQT0NILCBfTUFYT1JESU5BTCwgX01PTlRITkFNRVMsIF9idWlsZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcywgX2NoZWNrX2ludF9maWVsZCwgX2NoZWNrX3RpbWVfZmllbGRzLAorICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcsIF9jaGVja190em5hbWUsIF9jaGVja191dGNfb2Zmc2V0LCBfY21wLCBfY21wZXJyb3IsCisgICAgICAgICBfZGF0ZV9jbGFzcywgX2RheXNfYmVmb3JlX21vbnRoLCBfZGF5c19iZWZvcmVfeWVhciwgX2RheXNfaW5fbW9udGgsCisgICAgICAgICBfZm9ybWF0X3RpbWUsIF9pc19sZWFwLCBfaXNvd2VlazFtb25kYXksIF9tYXRoLCBfb3JkMnltZCwKKyAgICAgICAgIF90aW1lLCBfdGltZV9jbGFzcywgX3R6aW5mb19jbGFzcywgX3dyYXBfc3RyZnRpbWUsIF95bWQyb3JkKQogICAgICMgWFhYIFNpbmNlIGltcG9ydCAqIGFib3ZlIGV4Y2x1ZGVzIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBfLAogICAgICMgZG9jc3RyaW5nIGRvZXMgbm90IGdldCBvdmVyd3JpdHRlbi4gSW4gdGhlIGZ1dHVyZSwgaXQgbWF5IGJlCiAgICAgIyBhcHByb3ByaWF0ZSB0byBtYWludGFpbiBhIHNpbmdsZSBtb2R1bGUgbGV2ZWwgZG9jc3RyaW5nIGFuZApkaWZmIC0tZ2l0IGEvTGliL2RibS9fX2luaXRfXy5weSBiL0xpYi9kYm0vX19pbml0X18ucHkKaW5kZXggNWY0NjY0YS4uNjgzMWE4NCAxMDA2NDQKLS0tIGEvTGliL2RibS9fX2luaXRfXy5weQorKysgYi9MaWIvZGJtL19faW5pdF9fLnB5CkBAIC0xNTMsOSArMTUzLDkgQEAKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICMgUmVhZCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgLS0gdGhlIG1hZ2ljIG51bWJlcgotICAgIHMxNiA9IGYucmVhZCgxNikKLSAgICBmLmNsb3NlKCkKKyAgICB3aXRoIGY6CisgICAgICAgICMgUmVhZCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgLS0gdGhlIG1hZ2ljIG51bWJlcgorICAgICAgICBzMTYgPSBmLnJlYWQoMTYpCiAgICAgcyA9IHMxNlswOjRdCiAKICAgICAjIFJldHVybiAiIiBpZiBub3QgYXQgbGVhc3QgNCBieXRlcwpkaWZmIC0tZ2l0IGEvTGliL2RibS9kdW1iLnB5IGIvTGliL2RibS9kdW1iLnB5CmluZGV4IDYzYmMzMjkuLjc3NzdhN2MgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vZHVtYi5weQorKysgYi9MaWIvZGJtL2R1bWIucHkKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICBfb3MgPSBfb3MgICAgICAgIyBmb3IgX2NvbW1pdCgpCiAgICAgX2lvID0gX2lvICAgICAgICMgZm9yIF9jb21taXQoKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGViYXNlbmFtZSwgbW9kZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGViYXNlbmFtZSwgbW9kZSwgZmxhZz0nYycpOgogICAgICAgICBzZWxmLl9tb2RlID0gbW9kZQogCiAgICAgICAgICMgVGhlIGRpcmVjdG9yeSBmaWxlIGlzIGEgdGV4dCBmaWxlLiAgRWFjaCBsaW5lIGxvb2tzIGxpa2UKQEAgLTY1LDYgKzY1LDE3IEBACiAgICAgICAgICMgVGhlIGluZGV4IGlzIGFuIGluLW1lbW9yeSBkaWN0LCBtaXJyb3JpbmcgdGhlIGRpcmVjdG9yeSBmaWxlLgogICAgICAgICBzZWxmLl9pbmRleCA9IE5vbmUgICMgbWFwcyBrZXlzIHRvIChwb3MsIHNpeikgcGFpcnMKIAorICAgICAgICAjIEhhbmRsZSB0aGUgY3JlYXRpb24KKyAgICAgICAgc2VsZi5fY3JlYXRlKGZsYWcpCisgICAgICAgIHNlbGYuX3VwZGF0ZSgpCisKKyAgICBkZWYgX2NyZWF0ZShzZWxmLCBmbGFnKToKKyAgICAgICAgaWYgZmxhZyA9PSAnbic6CisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKHNlbGYuX2RhdGZpbGUsIHNlbGYuX2Jha2ZpbGUsIHNlbGYuX2RpcmZpbGUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX29zLnJlbW92ZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIE1vZCBieSBKYWNrOiBjcmVhdGUgZGF0YSBmaWxlIGlmIG5lZWRlZAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCkBAIC03Myw3ICs4NCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBzZWxmLl91cGRhdGUoKQogCiAgICAgIyBSZWFkIGRpcmVjdG9yeSBmaWxlIGludG8gdGhlIGluLW1lbW9yeSBpbmRleCBkaWN0LgogICAgIGRlZiBfdXBkYXRlKHNlbGYpOgpAQCAtMjY2LDIwICsyNzYsMjAgQEAKICAgICAgICAgc2VsZi5jbG9zZSgpCiAKIAotZGVmIG9wZW4oZmlsZSwgZmxhZz1Ob25lLCBtb2RlPTBvNjY2KToKK2RlZiBvcGVuKGZpbGUsIGZsYWc9J2MnLCBtb2RlPTBvNjY2KToKICAgICAiIiJPcGVuIHRoZSBkYXRhYmFzZSBmaWxlLCBmaWxlbmFtZSwgYW5kIHJldHVybiBjb3JyZXNwb25kaW5nIG9iamVjdC4KIAogICAgIFRoZSBmbGFnIGFyZ3VtZW50LCB1c2VkIHRvIGNvbnRyb2wgaG93IHRoZSBkYXRhYmFzZSBpcyBvcGVuZWQgaW4gdGhlCi0gICAgb3RoZXIgREJNIGltcGxlbWVudGF0aW9ucywgaXMgaWdub3JlZCBpbiB0aGUgZGJtLmR1bWIgbW9kdWxlOyB0aGUKLSAgICBkYXRhYmFzZSBpcyBhbHdheXMgb3BlbmVkIGZvciB1cGRhdGUsIGFuZCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcwotICAgIG5vdCBleGlzdC4KKyAgICBvdGhlciBEQk0gaW1wbGVtZW50YXRpb25zLCBzdXBwb3J0cyBvbmx5IHRoZSBzZW1hbnRpY3Mgb2YgJ2MnIGFuZCAnbicKKyAgICB2YWx1ZXMuICBPdGhlciB2YWx1ZXMgd2lsbCBkZWZhdWx0IHRvIHRoZSBzZW1hbnRpY3Mgb2YgJ2MnIHZhbHVlOgorICAgIHRoZSBkYXRhYmFzZSB3aWxsIGFsd2F5cyBvcGVuZWQgZm9yIHVwZGF0ZSBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0CisgICAgZG9lcyBub3QgZXhpc3QuCiAKICAgICBUaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVU5JWCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHkgd2hlbgogICAgIHRoZSBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIGNvZGUgMG82NjYgKGFuZAogICAgIHdpbGwgYmUgbW9kaWZpZWQgYnkgdGhlIHByZXZhaWxpbmcgdW1hc2spLgogCiAgICAgIiIiCi0gICAgIyBmbGFnIGFyZ3VtZW50IGlzIGN1cnJlbnRseSBpZ25vcmVkCiAKICAgICAjIE1vZGlmeSBtb2RlIGRlcGVuZGluZyBvbiB0aGUgdW1hc2sKICAgICB0cnk6CkBAIC0yOTAsNSArMzAwLDQgQEAKICAgICBlbHNlOgogICAgICAgICAjIFR1cm4gb2ZmIGFueSBiaXRzIHRoYXQgYXJlIHNldCBpbiB0aGUgdW1hc2sKICAgICAgICAgbW9kZSA9IG1vZGUgJiAofnVtKQotCi0gICAgcmV0dXJuIF9EYXRhYmFzZShmaWxlLCBtb2RlKQorICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSwgZmxhZz1mbGFnKQpkaWZmIC0tZ2l0IGEvTGliL2RlY2ltYWwucHkgYi9MaWIvZGVjaW1hbC5weQppbmRleCAzMjRlNGY5Li43NzQ2ZWEyIDEwMDY0NAotLS0gYS9MaWIvZGVjaW1hbC5weQorKysgYi9MaWIvZGVjaW1hbC5weQpAQCAtMSw2NDEzICsxLDExIEBACi0jIENvcHlyaWdodCAoYykgMjAwNCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotIyBXcml0dGVuIGJ5IEVyaWMgUHJpY2UgPGVwcmljZSBhdCB0amhzc3QuZWR1PgotIyAgICBhbmQgRmFjdW5kbyBCYXRpc3RhIDxmYWN1bmRvIGF0IHRhbmlxdWV0aWwuY29tLmFyPgotIyAgICBhbmQgUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgotIyAgICBhbmQgQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+Ci0jICAgIGFuZCBUaW0gUGV0ZXJzCi0KLSMgVGhpcyBtb2R1bGUgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBsYXRlc3QgdXBkYXRlcyBvZiB0aGUKLSMgSUJNIHNwZWNpZmljYXRpb24gYXMgaXQgZXZvbHZlcy4gIFRob3NlIHVwZGF0ZXMgd2lsbCBiZSB0cmVhdGVkCi0jIGFzIGJ1ZyBmaXhlcyAoZGV2aWF0aW9uIGZyb20gdGhlIHNwZWMgaXMgYSBjb21wYXRpYmlsaXR5LCB1c2FiaWxpdHkKLSMgYnVnKSBhbmQgd2lsbCBiZSBiYWNrcG9ydGVkLiAgQXQgdGhpcyBwb2ludCB0aGUgc3BlYyBpcyBzdGFiaWxpemluZwotIyBhbmQgdGhlIHVwZGF0ZXMgYXJlIGJlY29taW5nIGZld2VyLCBzbWFsbGVyLCBhbmQgbGVzcyBzaWduaWZpY2FudC4KLQotIiIiCi1UaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYXNlZCBvbgotdGhlIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb246Ci0KLSAgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjYXJpdGguaHRtbAotCi1hbmQgSUVFRSBzdGFuZGFyZCA4NTQtMTk4NzoKLQotICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV84NTQtMTk4NwotCi1EZWNpbWFsIGZsb2F0aW5nIHBvaW50IGhhcyBmaW5pdGUgcHJlY2lzaW9uIHdpdGggYXJiaXRyYXJpbHkgbGFyZ2UgYm91bmRzLgotCi1UaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBzdXBwb3J0IGFyaXRobWV0aWMgdXNpbmcgZmFtaWxpYXIKLSJzY2hvb2xob3VzZSIgcnVsZXMgYW5kIHRvIGF2b2lkIHNvbWUgb2YgdGhlIHRyaWNreSByZXByZXNlbnRhdGlvbgotaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQuICBUaGUgcGFja2FnZSBpcyBlc3BlY2lhbGx5Ci11c2VmdWwgZm9yIGZpbmFuY2lhbCBhcHBsaWNhdGlvbnMgb3IgZm9yIGNvbnRleHRzIHdoZXJlIHVzZXJzIGhhdmUKLWV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhdCBvZGRzIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50IChmb3IgaW5zdGFuY2UsCi1pbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsIDEuMDAgJSAwLjEgZ2l2ZXMgMC4wOTk5OTk5OTk5OTk5OTk5NSBpbnN0ZWFkCi1vZiAwLjA7IERlY2ltYWwoJzEuMDAnKSAlIERlY2ltYWwoJzAuMScpIHJldHVybnMgdGhlIGV4cGVjdGVkCi1EZWNpbWFsKCcwLjAwJykpLgotCi1IZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBkZWNpbWFsIG1vZHVsZToKLQotPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgKgotPj4+IHNldGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KQotPj4+IERlY2ltYWwoMCkKLURlY2ltYWwoJzAnKQotPj4+IERlY2ltYWwoJzEnKQotRGVjaW1hbCgnMScpCi0+Pj4gRGVjaW1hbCgnLS4wMTIzJykKLURlY2ltYWwoJy0wLjAxMjMnKQotPj4+IERlY2ltYWwoMTIzNDU2KQotRGVjaW1hbCgnMTIzNDU2JykKLT4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2NzgnKQotRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY4MCcpCi0+Pj4gRGVjaW1hbCgnMS4zMycpICsgRGVjaW1hbCgnMS4yNycpCi1EZWNpbWFsKCcyLjYwJykKLT4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQotRGVjaW1hbCgnLTIuMjAnKQotPj4+IGRpZyA9IERlY2ltYWwoMSkKLT4+PiBwcmludChkaWcgLyBEZWNpbWFsKDMpKQotMC4zMzMzMzMzMzMKLT4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDE4Ci0+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKLTAuMzMzMzMzMzMzMzMzMzMzMzMzCi0+Pj4gcHJpbnQoZGlnLnNxcnQoKSkKLTEKLT4+PiBwcmludChEZWNpbWFsKDMpLnNxcnQoKSkKLTEuNzMyMDUwODA3NTY4ODc3MjkKLT4+PiBwcmludChEZWNpbWFsKDMpICoqIDEyMykKLTQuODUxOTI3ODA5NzY4OTY0MjdFKzU4Ci0+Pj4gaW5mID0gRGVjaW1hbCgxKSAvIERlY2ltYWwoMCkKLT4+PiBwcmludChpbmYpCi1JbmZpbml0eQotPj4+IG5lZ2luZiA9IERlY2ltYWwoLTEpIC8gRGVjaW1hbCgwKQotPj4+IHByaW50KG5lZ2luZikKLS1JbmZpbml0eQotPj4+IHByaW50KG5lZ2luZiArIGluZikKLU5hTgotPj4+IHByaW50KG5lZ2luZiAqIGluZikKLS1JbmZpbml0eQotPj4+IHByaW50KGRpZyAvIDApCi1JbmZpbml0eQotPj4+IGdldGNvbnRleHQoKS50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSAxCi0+Pj4gcHJpbnQoZGlnIC8gMCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi0gIC4uLgotICAuLi4KLWRlY2ltYWwuRGl2aXNpb25CeVplcm86IHggLyAwCi0+Pj4gYyA9IENvbnRleHQoKQotPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTAKLT4+PiBjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKQotRGVjaW1hbCgnTmFOJykKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMQotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMAotPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLi4KLSAgLi4uCi0gIC4uLgotZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uOiAwIC8gMAotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAotPj4+IHByaW50KGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpKQotTmFOCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTEKLT4+PgotIiIiCi0KLV9fYWxsX18gPSBbCi0gICAgIyBUd28gbWFqb3IgY2xhc3NlcwotICAgICdEZWNpbWFsJywgJ0NvbnRleHQnLAotCi0gICAgIyBOYW1lZCB0dXBsZSByZXByZXNlbnRhdGlvbgotICAgICdEZWNpbWFsVHVwbGUnLAotCi0gICAgIyBDb250ZXh0cwotICAgICdEZWZhdWx0Q29udGV4dCcsICdCYXNpY0NvbnRleHQnLCAnRXh0ZW5kZWRDb250ZXh0JywKLQotICAgICMgRXhjZXB0aW9ucwotICAgICdEZWNpbWFsRXhjZXB0aW9uJywgJ0NsYW1wZWQnLCAnSW52YWxpZE9wZXJhdGlvbicsICdEaXZpc2lvbkJ5WmVybycsCi0gICAgJ0luZXhhY3QnLCAnUm91bmRlZCcsICdTdWJub3JtYWwnLCAnT3ZlcmZsb3cnLCAnVW5kZXJmbG93JywKLSAgICAnRmxvYXRPcGVyYXRpb24nLAotCi0gICAgIyBFeGNlcHRpb25hbCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciBJbnZhbGlkT3BlcmF0aW9uCi0gICAgJ0RpdmlzaW9uSW1wb3NzaWJsZScsICdJbnZhbGlkQ29udGV4dCcsICdDb252ZXJzaW9uU3ludGF4JywgJ0RpdmlzaW9uVW5kZWZpbmVkJywKLQotICAgICMgQ29uc3RhbnRzIGZvciB1c2UgaW4gc2V0dGluZyB1cCBjb250ZXh0cwotICAgICdST1VORF9ET1dOJywgJ1JPVU5EX0hBTEZfVVAnLCAnUk9VTkRfSEFMRl9FVkVOJywgJ1JPVU5EX0NFSUxJTkcnLAotICAgICdST1VORF9GTE9PUicsICdST1VORF9VUCcsICdST1VORF9IQUxGX0RPV04nLCAnUk9VTkRfMDVVUCcsCi0KLSAgICAjIEZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGNvbnRleHRzCi0gICAgJ3NldGNvbnRleHQnLCAnZ2V0Y29udGV4dCcsICdsb2NhbGNvbnRleHQnLAotCi0gICAgIyBMaW1pdHMgZm9yIHRoZSBDIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkKLSAgICAnTUFYX1BSRUMnLCAgJ01BWF9FTUFYJywgJ01JTl9FTUlOJywgJ01JTl9FVElOWScsCi0KLSAgICAjIEMgdmVyc2lvbjogY29tcGlsZSB0aW1lIGNob2ljZSB0aGF0IGVuYWJsZXMgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0Ci0gICAgJ0hBVkVfVEhSRUFEUycKLV0KLQotX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCi1fX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KLQotaW1wb3J0IG1hdGggYXMgX21hdGgKLWltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCi1pbXBvcnQgc3lzCiAKIHRyeToKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCi0gICAgRGVjaW1hbFR1cGxlID0gX25hbWVkdHVwbGUoJ0RlY2ltYWxUdXBsZScsICdzaWduIGRpZ2l0cyBleHBvbmVudCcpCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgRGVjaW1hbFR1cGxlID0gbGFtYmRhICphcmdzOiBhcmdzCi0KLSMgUm91bmRpbmcKLVJPVU5EX0RPV04gPSAnUk9VTkRfRE9XTicKLVJPVU5EX0hBTEZfVVAgPSAnUk9VTkRfSEFMRl9VUCcKLVJPVU5EX0hBTEZfRVZFTiA9ICdST1VORF9IQUxGX0VWRU4nCi1ST1VORF9DRUlMSU5HID0gJ1JPVU5EX0NFSUxJTkcnCi1ST1VORF9GTE9PUiA9ICdST1VORF9GTE9PUicKLVJPVU5EX1VQID0gJ1JPVU5EX1VQJwotUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKLVJPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKLQotIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgotSEFWRV9USFJFQURTID0gVHJ1ZQotaWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKLSAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQotICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5Ci0gICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5Ci1lbHNlOgotICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCi0gICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKLSAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKLQotTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKLQotIyBFcnJvcnMKLQotY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgotICAgICIiIkJhc2UgZXhjZXB0aW9uIGNsYXNzLgotCi0gICAgVXNlZCBleGNlcHRpb25zIGRlcml2ZSBmcm9tIHRoaXMuCi0gICAgSWYgYW4gZXhjZXB0aW9uIGRlcml2ZXMgZnJvbSBhbm90aGVyIGV4Y2VwdGlvbiBiZXNpZGVzIHRoaXMgKHN1Y2ggYXMKLSAgICBVbmRlcmZsb3cgKEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCkgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBvbmx5Ci0gICAgY2FsbGVkIGlmIHRoZSBvdGhlcnMgYXJlIHByZXNlbnQuICBUaGlzIGlzbid0IGFjdHVhbGx5IHVzZWQgZm9yCi0gICAgYW55dGhpbmcsIHRob3VnaC4KLQotICAgIGhhbmRsZSAgLS0gQ2FsbGVkIHdoZW4gY29udGV4dC5fcmFpc2VfZXJyb3IgaXMgY2FsbGVkIGFuZCB0aGUKLSAgICAgICAgICAgICAgIHRyYXBfZW5hYmxlciBpcyBub3Qgc2V0LiAgRmlyc3QgYXJndW1lbnQgaXMgc2VsZiwgc2Vjb25kIGlzIHRoZQotICAgICAgICAgICAgICAgY29udGV4dC4gIE1vcmUgYXJndW1lbnRzIGNhbiBiZSBnaXZlbiwgdGhvc2UgYmVpbmcgYWZ0ZXIKLSAgICAgICAgICAgICAgIHRoZSBleHBsYW5hdGlvbiBpbiBfcmFpc2VfZXJyb3IgKEZvciBleGFtcGxlLAotICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoTmV3RXJyb3IsICcoLXgpIScsIHNlbGYuX3NpZ24pIHdvdWxkCi0gICAgICAgICAgICAgICBjYWxsIE5ld0Vycm9yKCkuaGFuZGxlKGNvbnRleHQsIHNlbGYuX3NpZ24pLikKLQotICAgIFRvIGRlZmluZSBhIG5ldyBleGNlcHRpb24sIGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGhhdmUgaXQgZGVyaXZlCi0gICAgZnJvbSBEZWNpbWFsRXhjZXB0aW9uLgotICAgICIiIgotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICBwYXNzCi0KLQotY2xhc3MgQ2xhbXBlZChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJFeHBvbmVudCBvZiBhIDAgY2hhbmdlZCB0byBmaXQgYm91bmRzLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KLSAgICBhbHRlcmVkIGluIG9yZGVyIHRvIGZpdCB0aGUgY29uc3RyYWludHMgb2YgYSBzcGVjaWZpYyBjb25jcmV0ZQotICAgIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBtYXkgb2NjdXIgd2hlbiB0aGUgZXhwb25lbnQgb2YgYSB6ZXJvIHJlc3VsdCB3b3VsZAotICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCi0gICAgbnVtYmVyIHdvdWxkIGhhdmUgYW4gZW5jb2RlZCBleHBvbmVudCB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZC4gIEluCi0gICAgdGhpcyBsYXR0ZXIgY2FzZSwgdGhlIGV4cG9uZW50IGlzIHJlZHVjZWQgdG8gZml0IGFuZCB0aGUgY29ycmVzcG9uZGluZwotICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCi0gICAgIiIiCi0KLWNsYXNzIEludmFsaWRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIHBlcmZvcm1lZC4KLQotICAgIFZhcmlvdXMgYmFkIHRoaW5ncyBjYXVzZSB0aGlzOgotCi0gICAgU29tZXRoaW5nIGNyZWF0ZXMgYSBzaWduYWxpbmcgTmFOCi0gICAgLUlORiArIElORgotICAgIDAgKiAoKy0pSU5GCi0gICAgKCstKUlORiAvICgrLSlJTkYKLSAgICB4ICUgMAotICAgICgrLSlJTkYgJSB4Ci0gICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQotICAgIHNxcnQoLXgpICwgeCA+IDAKLSAgICAwICoqIDAKLSAgICB4ICoqIChub24taW50ZWdlcikKLSAgICB4ICoqICgrLSlJTkYKLSAgICBBbiBvcGVyYW5kIGlzIGludmFsaWQKLQotICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGVzZSBpcyBhIHF1aWV0IHBvc2l0aXZlIE5hTiwKLSAgICBleGNlcHQgd2hlbiB0aGUgY2F1c2UgaXMgYSBzaWduYWxpbmcgTmFOLCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMKLSAgICBhbHNvIGEgcXVpZXQgTmFOLCBidXQgd2l0aCB0aGUgb3JpZ2luYWwgc2lnbiwgYW5kIGFuIG9wdGlvbmFsCi0gICAgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYXJnc1swXS5fc2lnbiwgYXJnc1swXS5faW50LCAnbicsIFRydWUpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgIHJldHVybiBfTmFOCi0KLWNsYXNzIENvbnZlcnNpb25TeW50YXgoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGFuIHN0cmluZyBpcyBiZWluZwotICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKLSAgICBzeW50YXguICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgotICAgICIiIgotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBEaXZpc2lvbkJ5WmVybyhEZWNpbWFsRXhjZXB0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgIiIiRGl2aXNpb24gYnkgMC4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGRpdmlzaW9uLWJ5LXplcm8gaWYgZGl2aXNpb24gb2YgYSBmaW5pdGUgbnVtYmVyCi0gICAgYnkgemVybyB3YXMgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciBvciBkaXZpZGUgb3BlcmF0aW9uLCBvciBhCi0gICAgcG93ZXIgb3BlcmF0aW9uIHdpdGggbmVnYXRpdmUgcmlnaHQtaGFuZCBvcGVyYW5kKSwgYW5kIHRoZSBkaXZpZGVuZCB3YXMKLSAgICBub3QgemVyby4KLQotICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLCB3aGVyZSBzaWduIGlzIHRoZSBleGNsdXNpdmUKLSAgICBvciBvZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGZvciBkaXZpZGUsIG9yIGlzIDEgZm9yIGFuIG9kZCBwb3dlciBvZgotICAgIC0wLCBmb3IgcG93ZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQotCi1jbGFzcyBEaXZpc2lvbkltcG9zc2libGUoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiQ2Fubm90IHBlcmZvcm0gdGhlIGRpdmlzaW9uIGFkZXF1YXRlbHkuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiB0aGUgaW50ZWdlciByZXN1bHQgb2YgYQotICAgIGRpdmlkZS1pbnRlZ2VyIG9yIHJlbWFpbmRlciBvcGVyYXRpb24gaGFkIHRvbyBtYW55IGRpZ2l0cyAod291bGQgYmUKLSAgICBsb25nZXIgdGhhbiBwcmVjaXNpb24pLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLQotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBEaXZpc2lvblVuZGVmaW5lZChJbnZhbGlkT3BlcmF0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgIiIiVW5kZWZpbmVkIHJlc3VsdCBvZiBkaXZpc2lvbi4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCi0gICAgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciwgZGl2aWRlLCBvciByZW1haW5kZXIgb3BlcmF0aW9uKSwgYW5kCi0gICAgdGhlIGRpdmlkZW5kIGlzIGFsc28gemVyby4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgSW5leGFjdChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJIYWQgdG8gcm91bmQsIGxvc2luZyBpbmZvcm1hdGlvbi4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGluZXhhY3Qgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKLSAgICBub3QgZXhhY3QgKHRoYXQgaXMsIGl0IG5lZWRlZCB0byBiZSByb3VuZGVkIGFuZCBhbnkgZGlzY2FyZGVkIGRpZ2l0cwotICAgIHdlcmUgbm9uLXplcm8pLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQotICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgotCi0gICAgVGhlIGluZXhhY3Qgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCi0gICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB3YXMgaW5leGFjdC4KLSAgICAiIiIKLQotY2xhc3MgSW52YWxpZENvbnRleHQoSW52YWxpZE9wZXJhdGlvbik6Ci0gICAgIiIiSW52YWxpZCBjb250ZXh0LiAgVW5rbm93biByb3VuZGluZywgZm9yIGV4YW1wbGUuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCi0gICAgZGV0ZWN0ZWQgZHVyaW5nIGFuIG9wZXJhdGlvbi4gIFRoaXMgY2FuIG9jY3VyIGlmIGNvbnRleHRzIGFyZSBub3QgY2hlY2tlZAotICAgIG9uIGNyZWF0aW9uIGFuZCBlaXRoZXIgdGhlIHByZWNpc2lvbiBleGNlZWRzIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQotICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZwotICAgIHdhcyBzcGVjaWZpZWQuICBUaGVzZSBhc3BlY3RzIG9mIHRoZSBjb250ZXh0IG5lZWQgb25seSBiZSBjaGVja2VkIHdoZW4KLSAgICB0aGUgdmFsdWVzIGFyZSByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLQotICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBSb3VuZGVkKERlY2ltYWxFeGNlcHRpb24pOgotICAgICIiIk51bWJlciBnb3Qgcm91bmRlZCAobm90ICBuZWNlc3NhcmlseSBjaGFuZ2VkIGR1cmluZyByb3VuZGluZykuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyByb3VuZGVkIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCi0gICAgcm91bmRlZCAodGhhdCBpcywgc29tZSB6ZXJvIG9yIG5vbi16ZXJvIGRpZ2l0cyB3ZXJlIGRpc2NhcmRlZCBmcm9tIHRoZQotICAgIGNvZWZmaWNpZW50KSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKLSAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSByb3VuZGVkIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgotICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgY2F1c2VkIGEgbG9zcyBvZiBwcmVjaXNpb24uCi0gICAgIiIiCi0KLWNsYXNzIFN1Ym5vcm1hbChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgc3Vibm9ybWFsIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYSBjb252ZXJzaW9uIG9yCi0gICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgotICAgIEVtaW4sIGJlZm9yZSBhbnkgcm91bmRpbmcpLiAgVGhlIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgotCi0gICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KLSAgICBvciBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHlpZWxkZWQgYSBzdWJub3JtYWwgcmVzdWx0LgotICAgICIiIgotCi1jbGFzcyBPdmVyZmxvdyhJbmV4YWN0LCBSb3VuZGVkKToKLSAgICAiIiJOdW1lcmljYWwgb3ZlcmZsb3cuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBvdmVyZmxvdyBpZiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgYSByZXN1bHQKLSAgICAoZnJvbSBhIGNvbnZlcnNpb24gb3IgZnJvbSBhbiBvcGVyYXRpb24gdGhhdCBpcyBub3QgYW4gYXR0ZW1wdCB0byBkaXZpZGUKLSAgICBieSB6ZXJvKSwgYWZ0ZXIgcm91bmRpbmcsIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0Ci0gICAgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUgRW1heCkuCi0KLSAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHJvdW5kaW5nIG1vZGU6Ci0KLSAgICBGb3Igcm91bmQtaGFsZi11cCBhbmQgcm91bmQtaGFsZi1ldmVuIChhbmQgZm9yIHJvdW5kLWhhbGYtZG93biBhbmQKLSAgICByb3VuZC11cCwgaWYgaW1wbGVtZW50ZWQpLCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwKLSAgICB3aGVyZSBzaWduIGlzIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yIHJvdW5kLWRvd24sIHRoZQotICAgIHJlc3VsdCBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQotICAgIGN1cnJlbnQgcHJlY2lzaW9uLCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yCi0gICAgcm91bmQtY2VpbGluZywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZgotICAgIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGlzIDEsIG9yIGlzIFswLGluZl0gb3RoZXJ3aXNlLiAgRm9yIHJvdW5kLWZsb29yLAotICAgIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZQotICAgIHJlc3VsdCBpcyAwLCBvciBpcyBbMSxpbmZdIG90aGVyd2lzZS4gIEluIGFsbCBjYXNlcywgSW5leGFjdCBhbmQgUm91bmRlZAotICAgIHdpbGwgYWxzbyBiZSByYWlzZWQuCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKLSAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyBpbiAoUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1VORF9IQUxGX0RPV04sIFJPVU5EX1VQKToKLSAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgaWYgc2lnbiA9PSAwOgotICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9DRUlMSU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4LWNvbnRleHQucHJlYysxKQotICAgICAgICBpZiBzaWduID09IDE6Ci0gICAgICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKLQotCi1jbGFzcyBVbmRlcmZsb3coSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKToKLSAgICAiIiJOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHVuZGVyZmxvdyBpZiBhIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCB0aGUKLSAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KLSAgICB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZQotICAgIEVtaW4pLiAgVGhhdCBpcywgdGhlIHJlc3VsdCBpcyBib3RoIGluZXhhY3QgYW5kIHN1Ym5vcm1hbC4KLQotICAgIFRoZSByZXN1bHQgYWZ0ZXIgYW4gdW5kZXJmbG93IHdpbGwgYmUgYSBzdWJub3JtYWwgbnVtYmVyIHJvdW5kZWQsIGlmCi0gICAgbmVjZXNzYXJ5LCBzbyB0aGF0IGl0cyBleHBvbmVudCBpcyBub3QgbGVzcyB0aGFuIEV0aW55LiAgVGhpcyBtYXkgcmVzdWx0Ci0gICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KLQotICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgotICAgICIiIgotCi1jbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgotICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgotCi0gICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCi0gICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKLSAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgotICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKLSAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKLSAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKLSAgICBzZXQgdGhlIGZsYWcuCi0KLSAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0Ci0gICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCi0gICAgIiIiCi0KLSMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCi1fc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCi0gICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCi0KLSMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscwotX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgRGl2aXNpb25JbXBvc3NpYmxlOkludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICBEaXZpc2lvblVuZGVmaW5lZDpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHQ6SW52YWxpZE9wZXJhdGlvbn0KLQotIyBWYWxpZCByb3VuZGluZyBtb2RlcwotX3JvdW5kaW5nX21vZGVzID0gKFJPVU5EX0RPV04sIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwgUk9VTkRfQ0VJTElORywKLSAgICAgICAgICAgICAgICAgICBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfMDVVUCkKLQotIyMjIyMgQ29udGV4dCBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBUaGUgZ2V0Y29udGV4dCgpIGFuZCBzZXRjb250ZXh0KCkgZnVuY3Rpb24gbWFuYWdlIGFjY2VzcyB0byBhIHRocmVhZC1sb2NhbAotIyBjdXJyZW50IGNvbnRleHQuICBQeTIuNCBvZmZlcnMgZGlyZWN0IHN1cHBvcnQgZm9yIHRocmVhZCBsb2NhbHMuICBJZiB0aGF0Ci0jIGlzIG5vdCBhdmFpbGFibGUsIHVzZSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSB3aGljaCBpcyBzbG93ZXIgYnV0IHdpbGwKLSMgd29yayBmb3Igb2xkZXIgUHl0aG9ucy4gIElmIHRocmVhZHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBidWlsZCwgY3JlYXRlIGEKLSMgbW9jayB0aHJlYWRpbmcgb2JqZWN0IHdpdGggdGhyZWFkaW5nLmxvY2FsKCkgcmV0dXJuaW5nIHRoZSBtb2R1bGUgbmFtZXNwYWNlLgotCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKLSAgICBjbGFzcyBNb2NrVGhyZWFkaW5nKG9iamVjdCk6Ci0gICAgICAgIGRlZiBsb2NhbChzZWxmLCBzeXM9c3lzKToKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICB0aHJlYWRpbmcgPSBNb2NrVGhyZWFkaW5nKCkKLSAgICBkZWwgTW9ja1RocmVhZGluZwotCi10cnk6Ci0gICAgdGhyZWFkaW5nLmxvY2FsCi0KLWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLQotICAgICMgVG8gZml4IHJlbG9hZGluZywgZm9yY2UgaXQgdG8gY3JlYXRlIGEgbmV3IGNvbnRleHQKLSAgICAjIE9sZCBjb250ZXh0cyBoYXZlIGRpZmZlcmVudCBleGNlcHRpb25zIGluIHRoZWlyIGRpY3RzLCBtYWtpbmcgcHJvYmxlbXMuCi0gICAgaWYgaGFzYXR0cih0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSwgJ19fZGVjaW1hbF9jb250ZXh0X18nKToKLSAgICAgICAgZGVsIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18KLQotICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQpOgotICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotCi0gICAgZGVmIGdldGNvbnRleHQoKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0KLSAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCi0gICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKLSAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLl9fZGVjaW1hbF9jb250ZXh0X18gPSBjb250ZXh0Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotCi1lbHNlOgotCi0gICAgbG9jYWwgPSB0aHJlYWRpbmcubG9jYWwoKQotICAgIGlmIGhhc2F0dHIobG9jYWwsICdfX2RlY2ltYWxfY29udGV4dF9fJyk6Ci0gICAgICAgIGRlbCBsb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCi0KLSAgICBkZWYgZ2V0Y29udGV4dChfbG9jYWw9bG9jYWwpOgotICAgICAgICAiIiJSZXR1cm5zIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KLQotICAgICAgICBJZiB0aGlzIHRocmVhZCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGNvbnRleHQsIHJldHVybnMKLSAgICAgICAgYSBuZXcgY29udGV4dCBhbmQgc2V0cyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0gICAgICAgIE5ldyBjb250ZXh0cyBhcmUgY29waWVzIG9mIERlZmF1bHRDb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKLSAgICAgICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLQotICAgIGRlZiBzZXRjb250ZXh0KGNvbnRleHQsIF9sb2NhbD1sb2NhbCk6Ci0gICAgICAgICIiIlNldCB0aGlzIHRocmVhZCdzIGNvbnRleHQgdG8gY29udGV4dC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpbiAoRGVmYXVsdENvbnRleHQsIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0KToKLSAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgIF9sb2NhbC5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotCi0gICAgZGVsIHRocmVhZGluZywgbG9jYWwgICAgICAgICMgRG9uJ3QgY29udGFtaW5hdGUgdGhlIG5hbWVzcGFjZQotCi1kZWYgbG9jYWxjb250ZXh0KGN0eD1Ob25lKToKLSAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgZm9yIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dAotCi0gICAgVXNlcyBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZAotICAgIFRoZSByZXR1cm5lZCBjb250ZXh0IG1hbmFnZXIgY3JlYXRlcyBhIGxvY2FsIGRlY2ltYWwgY29udGV4dAotICAgIGluIGEgd2l0aCBzdGF0ZW1lbnQ6Ci0gICAgICAgIGRlZiBzaW4oeCk6Ci0gICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjdHg6Ci0gICAgICAgICAgICAgICAgIGN0eC5wcmVjICs9IDIKLSAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KLSAgICAgICAgICAgICAgICAgIyB1c2VzIGEgcHJlY2lzaW9uIDIgZ3JlYXRlciB0aGFuIG5vcm1hbAotICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgcHJlY2lzaW9uCi0KLSAgICAgICAgIGRlZiBzaW4oeCk6Ci0gICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKLSAgICAgICAgICAgICAgICAgIyBSZXN0IG9mIHNpbiBjYWxjdWxhdGlvbiBhbGdvcml0aG0KLSAgICAgICAgICAgICAgICAgIyB1c2VzIHRoZSBFeHRlbmRlZCBDb250ZXh0IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICMgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbgotICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgY29udGV4dAotCi0gICAgPj4+IHNldGNvbnRleHQoRGVmYXVsdENvbnRleHQpCi0gICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQotICAgIDI4Ci0gICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KCk6Ci0gICAgLi4uICAgICBjdHggPSBnZXRjb250ZXh0KCkKLSAgICAuLi4gICAgIGN0eC5wcmVjICs9IDIKLSAgICAuLi4gICAgIHByaW50KGN0eC5wcmVjKQotICAgIC4uLgotICAgIDMwCi0gICAgPj4+IHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgLi4uICAgICBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAuLi4KLSAgICA5Ci0gICAgPj4+IHByaW50KGdldGNvbnRleHQoKS5wcmVjKQotICAgIDI4Ci0gICAgIiIiCi0gICAgaWYgY3R4IGlzIE5vbmU6IGN0eCA9IGdldGNvbnRleHQoKQotICAgIHJldHVybiBfQ29udGV4dE1hbmFnZXIoY3R4KQotCi0KLSMjIyMjIERlY2ltYWwgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIERvIG5vdCBzdWJjbGFzcyBEZWNpbWFsIGZyb20gbnVtYmVycy5SZWFsIGFuZCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgc3VjaAotIyAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90IGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLiAgU2VlIHRoZSBub3RlcyBpbgotIyBudW1iZXJzLnB5IGZvciBtb3JlIGRldGFpbC4KLQotY2xhc3MgRGVjaW1hbChvYmplY3QpOgotICAgICIiIkZsb2F0aW5nIHBvaW50IGNsYXNzIGZvciBkZWNpbWFsIGFyaXRobWV0aWMuIiIiCi0KLSAgICBfX3Nsb3RzX18gPSAoJ19leHAnLCdfaW50JywnX3NpZ24nLCAnX2lzX3NwZWNpYWwnKQotICAgICMgR2VuZXJhbGx5LCB0aGUgdmFsdWUgb2YgdGhlIERlY2ltYWwgaW5zdGFuY2UgaXMgZ2l2ZW4gYnkKLSAgICAjICAoLTEpKipfc2lnbiAqIF9pbnQgKiAxMCoqX2V4cAotICAgICMgU3BlY2lhbCB2YWx1ZXMgYXJlIHNpZ25pZmllZCBieSBfaXNfc3BlY2lhbCA9PSBUcnVlCi0KLSAgICAjIFdlJ3JlIGltbXV0YWJsZSwgc28gdXNlIF9fbmV3X18gbm90IF9faW5pdF9fCi0gICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0iMCIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgcG9pbnQgaW5zdGFuY2UuCi0KLSAgICAgICAgPj4+IERlY2ltYWwoJzMuMTQnKSAgICAgICAgICAgICAgIyBzdHJpbmcgaW5wdXQKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKCgwLCAoMywgMSwgNCksIC0yKSkgICMgdHVwbGUgKHNpZ24sIGRpZ2l0X3R1cGxlLCBleHBvbmVudCkKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKDMxNCkgICAgICAgICAgICAgICAgICMgaW50Ci0gICAgICAgIERlY2ltYWwoJzMxNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKERlY2ltYWwoMzE0KSkgICAgICAgICMgYW5vdGhlciBkZWNpbWFsIGluc3RhbmNlCi0gICAgICAgIERlY2ltYWwoJzMxNCcpCi0gICAgICAgID4+PiBEZWNpbWFsKCcgIDMuMTQgIFxcbicpICAgICAgICAjIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb2theQotICAgICAgICBEZWNpbWFsKCczLjE0JykKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGNvZWZmaWNpZW50LCBzZWxmLl9pbnQsIGlzIGFjdHVhbGx5IHN0b3JlZCBhcwotICAgICAgICAjIGEgc3RyaW5nIHJhdGhlciB0aGFuIGFzIGEgdHVwbGUgb2YgZGlnaXRzLiAgVGhpcyBzcGVlZHMgdXAKLSAgICAgICAgIyB0aGUgImRpZ2l0cyB0byBpbnRlZ2VyIiBhbmQgImludGVnZXIgdG8gZGlnaXRzIiBjb252ZXJzaW9ucwotICAgICAgICAjIHRoYXQgYXJlIHVzZWQgaW4gYWxtb3N0IGV2ZXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uIG9uCi0gICAgICAgICMgRGVjaW1hbHMuICBUaGlzIGlzIGFuIGludGVybmFsIGRldGFpbDogdGhlIGFzX3R1cGxlIGZ1bmN0aW9uCi0gICAgICAgICMgYW5kIHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIHN0aWxsIGRlYWwgd2l0aCB0dXBsZXMgb2YKLSAgICAgICAgIyBkaWdpdHMuCi0KLSAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKLQotICAgICAgICAjIEZyb20gYSBzdHJpbmcKLSAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGxpdGVyYWwgZm9yIERlY2ltYWw6ICVyIiAlIHZhbHVlKQotCi0gICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduJykgPT0gIi0iOgotICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSAwCi0gICAgICAgICAgICBpbnRwYXJ0ID0gbS5ncm91cCgnaW50JykKLSAgICAgICAgICAgIGlmIGludHBhcnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyCi0gICAgICAgICAgICAgICAgZnJhY3BhcnQgPSBtLmdyb3VwKCdmcmFjJykgb3IgJycKLSAgICAgICAgICAgICAgICBleHAgPSBpbnQobS5ncm91cCgnZXhwJykgb3IgJzAnKQotICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoaW50cGFydCtmcmFjcGFydCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gZXhwIC0gbGVuKGZyYWNwYXJ0KQotICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaWFnID0gbS5ncm91cCgnZGlhZycpCi0gICAgICAgICAgICAgICAgaWYgZGlhZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgIyBOYU4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGludChkaWFnIG9yICcwJykpLmxzdHJpcCgnMCcpCi0gICAgICAgICAgICAgICAgICAgIGlmIG0uZ3JvdXAoJ3NpZ25hbCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ04nCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnbicKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGluZmluaXR5Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJwotICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSAnRicKLSAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIEZyb20gYW4gaW50ZWdlcgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgaWYgdmFsdWUgPj0gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQotICAgICAgICAgICAgc2VsZi5fZXhwID0gMAotICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKGFicyh2YWx1ZSkpCi0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyBGcm9tIGFub3RoZXIgZGVjaW1hbAotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCi0gICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KLSAgICAgICAgICAgIHNlbGYuX2ludCAgPSB2YWx1ZS5faW50Ci0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsICA9IHZhbHVlLl9pc19zcGVjaWFsCi0gICAgICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICMgRnJvbSBhbiBpbnRlcm5hbCB3b3JraW5nIHZhbHVlCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIF9Xb3JrUmVwKToKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIodmFsdWUuaW50KQotICAgICAgICAgICAgc2VsZi5fZXhwID0gaW50KHZhbHVlLmV4cCkKLSAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIHR1cGxlL2xpc3QgY29udmVyc2lvbiAocG9zc2libHkgZnJvbSBhc190dXBsZSgpKQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCx0dXBsZSkpOgotICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSAhPSAzOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdHVwbGUgc2l6ZSBpbiBjcmVhdGlvbiBvZiBEZWNpbWFsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIGxpc3Qgb3IgdHVwbGUuICBUaGUgbGlzdCBvciB0dXBsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGhhdmUgZXhhY3RseSB0aHJlZSBlbGVtZW50cy4nKQotICAgICAgICAgICAgIyBwcm9jZXNzIHNpZ24uICBUaGUgaXNpbnN0YW5jZSB0ZXN0IHJlamVjdHMgZmxvYXRzCi0gICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UodmFsdWVbMF0sIGludCkgYW5kIHZhbHVlWzBdIGluICgwLDEpKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHNpZ24uICBUaGUgZmlyc3QgdmFsdWUgaW4gdGhlIHR1cGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgYW4gaW50ZWdlcjsgZWl0aGVyIDAgZm9yIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aXZlIG51bWJlciBvciAxIGZvciBhIG5lZ2F0aXZlIG51bWJlci4iKQotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlWzBdCi0gICAgICAgICAgICBpZiB2YWx1ZVsyXSA9PSAnRic6Ci0gICAgICAgICAgICAgICAgIyBpbmZpbml0eTogdmFsdWVbMV0gaXMgaWdub3JlZAotICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcwJwotICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCi0gICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBwcm9jZXNzIGFuZCB2YWxpZGF0ZSB0aGUgZGlnaXRzIGluIHZhbHVlWzFdCi0gICAgICAgICAgICAgICAgZGlnaXRzID0gW10KLSAgICAgICAgICAgICAgICBmb3IgZGlnaXQgaW4gdmFsdWVbMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlnaXQsIGludCkgYW5kIDAgPD0gZGlnaXQgPD0gOToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBsZWFkaW5nIHplcm9zCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWdpdHMgb3IgZGlnaXQgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMuYXBwZW5kKGRpZ2l0KQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHNlY29uZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBjb21wb3NlZCBvZiBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCB0aHJvdWdoIDkuIikKLSAgICAgICAgICAgICAgICBpZiB2YWx1ZVsyXSBpbiAoJ24nLCAnTicpOgotICAgICAgICAgICAgICAgICAgICAjIE5hTjogZGlnaXRzIGZvcm0gdGhlIGRpYWdub3N0aWMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZVsyXSwgaW50KToKLSAgICAgICAgICAgICAgICAgICAgIyBmaW5pdGUgbnVtYmVyOiBkaWdpdHMgZ2l2ZSB0aGUgY29lZmZpY2llbnQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ID0gJycuam9pbihtYXAoc3RyLCBkaWdpdHMgb3IgWzBdKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIHRoaXJkIHZhbHVlIGluIHRoZSB0dXBsZSBtdXN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYW4gaW50ZWdlciwgb3Igb25lIG9mIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgJ0YnLCAnbicsICdOJy4iKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSAiCi0gICAgICAgICAgICAgICAgImVuYWJsZWQiKQotICAgICAgICAgICAgdmFsdWUgPSBEZWNpbWFsLmZyb21fZmxvYXQodmFsdWUpCi0gICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvIERlY2ltYWwiICUgdmFsdWUpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9mbG9hdChjbHMsIGYpOgotICAgICAgICAiIiJDb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuCi0KLSAgICAgICAgTm90ZSB0aGF0IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpIGlzIG5vdCB0aGUgc2FtZSBhcyBEZWNpbWFsKCcwLjEnKS4KLSAgICAgICAgU2luY2UgMC4xIGlzIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCB0aGUKLSAgICAgICAgdmFsdWUgaXMgc3RvcmVkIGFzIHRoZSBuZWFyZXN0IHJlcHJlc2VudGFibGUgdmFsdWUgd2hpY2ggaXMKLSAgICAgICAgMHgxLjk5OTk5OTk5OTk5OWFwLTQuICBUaGUgZXhhY3QgZXF1aXZhbGVudCBvZiB0aGUgdmFsdWUgaW4gZGVjaW1hbAotICAgICAgICBpcyAwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUuCi0KLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCi0gICAgICAgIERlY2ltYWwoJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC1mbG9hdCgnaW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoLTAuMCkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGludCk6ICAgICAgICAgICAgICAgICMgaGFuZGxlIGludGVnZXIgaW5wdXRzCi0gICAgICAgICAgICByZXR1cm4gY2xzKGYpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgbXVzdCBiZSBpbnQgb3IgZmxvYXQuIikKLSAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKHJlcHIoZikpCi0gICAgICAgIGlmIF9tYXRoLmNvcHlzaWduKDEuMCwgZikgPT0gMS4wOgotICAgICAgICAgICAgc2lnbiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNpZ24gPSAxCi0gICAgICAgIG4sIGQgPSBhYnMoZikuYXNfaW50ZWdlcl9yYXRpbygpCi0gICAgICAgIGsgPSBkLmJpdF9sZW5ndGgoKSAtIDEKLSAgICAgICAgcmVzdWx0ID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIobio1KiprKSwgLWspCi0gICAgICAgIGlmIGNscyBpcyBEZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNscyhyZXN1bHQpCi0KLSAgICBkZWYgX2lzbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgotCi0gICAgICAgIDAgaWYgYSBudW1iZXIKLSAgICAgICAgMSBpZiBOYU4KLSAgICAgICAgMiBpZiBzTmFOCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwCi0gICAgICAgICAgICBpZiBleHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICBlbGlmIGV4cCA9PSAnTic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDIKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfaXNpbmZpbml0eShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgaW5maW5pdGUKLQotICAgICAgICAwIGlmIGZpbml0ZSBvciBub3QgYSBudW1iZXIKLSAgICAgICAgMSBpZiArSU5GCi0gICAgICAgIC0xIGlmIC1JTkYKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfY2hlY2tfbmFucyhzZWxmLCBvdGhlcj1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgotCi0gICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBzTmFOLCBzaWduYWwKLSAgICAgICAgaWYgc2VsZiwgb3RoZXIgYXJlIE5hTiByZXR1cm4gbmFuCi0gICAgICAgIHJldHVybiAwCi0KLSAgICAgICAgRG9uZSBiZWZvcmUgb3BlcmF0aW9ucy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBvdGhlcl9pc19uYW4gPSBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKLQotICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW46Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotCi0gICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeF9uYW4oY29udGV4dCkKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfY29tcGFyZV9jaGVja19uYW5zKHNlbGYsIG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgIiIiVmVyc2lvbiBvZiBfY2hlY2tfbmFucyB1c2VkIGZvciB0aGUgc2lnbmFsaW5nIGNvbXBhcmlzb25zCi0gICAgICAgIGNvbXBhcmVfc2lnbmFsLCBfX2xlX18sIF9fbHRfXywgX19nZV9fLCBfX2d0X18uCi0KLSAgICAgICAgU2lnbmFsIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIHNlbGYgb3Igb3RoZXIgaXMgYSAocXVpZXQKLSAgICAgICAgb3Igc2lnbmFsaW5nKSBOYU4uICBTaWduYWxpbmcgTmFOcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBxdWlldAotICAgICAgICBOYU5zLgotCi0gICAgICAgIFJldHVybiAwIGlmIG5laXRoZXIgb3BlcmFuZCBpcyBhIE5hTi4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIHNOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgZWxpZiBvdGhlci5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBlbGlmIHNlbGYuaXNfcW5hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfcW5hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbm9uemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBOYU5zIGFuZCBpbmZpbml0aWVzIGFyZSBjb25zaWRlcmVkIG5vbnplcm8uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5faXNfc3BlY2lhbCBvciBzZWxmLl9pbnQgIT0gJzAnCi0KLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6Ci0gICAgICAgICIiIkNvbXBhcmUgdGhlIHR3byBub24tTmFOIGRlY2ltYWwgaW5zdGFuY2VzIHNlbGYgYW5kIG90aGVyLgotCi0gICAgICAgIFJldHVybnMgLTEgaWYgc2VsZiA8IG90aGVyLCAwIGlmIHNlbGYgPT0gb3RoZXIgYW5kIDEKLSAgICAgICAgaWYgc2VsZiA+IG90aGVyLiAgVGhpcyByb3V0aW5lIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2VsZl9pbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKLSAgICAgICAgICAgIG90aGVyX2luZiA9IG90aGVyLl9pc2luZmluaXR5KCkKLSAgICAgICAgICAgIGlmIHNlbGZfaW5mID09IG90aGVyX2luZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxpZiBzZWxmX2luZiA8IG90aGVyX2luZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgICAgICAjIGNoZWNrIGZvciB6ZXJvczsgIERlY2ltYWwoJzAnKSA9PSBEZWNpbWFsKCctMCcpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKm90aGVyLl9zaWduKQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgotCi0gICAgICAgICMgSWYgZGlmZmVyZW50IHNpZ25zLCBuZWcgb25lIGlzIGxlc3MKLSAgICAgICAgaWYgb3RoZXIuX3NpZ24gPCBzZWxmLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPCBvdGhlci5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQotICAgICAgICBvdGhlcl9hZGp1c3RlZCA9IG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCA9PSBvdGhlcl9hZGp1c3RlZDoKLSAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBvdGhlci5fZXhwKQotICAgICAgICAgICAgb3RoZXJfcGFkZGVkID0gb3RoZXIuX2ludCArICcwJyoob3RoZXIuX2V4cCAtIHNlbGYuX2V4cCkKLSAgICAgICAgICAgIGlmIHNlbGZfcGFkZGVkID09IG90aGVyX3BhZGRlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxpZiBzZWxmX3BhZGRlZCA8IG90aGVyX3BhZGRlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gLSgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgZWxpZiBzZWxmX2FkanVzdGVkID4gb3RoZXJfYWRqdXN0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gKC0xKSoqc2VsZi5fc2lnbgotICAgICAgICBlbHNlOiAjIHNlbGZfYWRqdXN0ZWQgPCBvdGhlcl9hZGp1c3RlZAotICAgICAgICAgICAgcmV0dXJuIC0oKC0xKSoqc2VsZi5fc2lnbikKLQotICAgICMgTm90ZTogVGhlIERlY2ltYWwgc3RhbmRhcmQgZG9lc24ndCBjb3ZlciByaWNoIGNvbXBhcmlzb25zIGZvcgotICAgICMgRGVjaW1hbHMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgc3BlY2lmaWNhdGlvbiBpcyBzaWxlbnQgb24gdGhlCi0gICAgIyBzdWJqZWN0IG9mIHdoYXQgc2hvdWxkIGhhcHBlbiBmb3IgYSBjb21wYXJpc29uIGludm9sdmluZyBhIE5hTi4KLSAgICAjIFdlIHRha2UgdGhlIGZvbGxvd2luZyBhcHByb2FjaDoKLSAgICAjCi0gICAgIyAgID09IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIEZhbHNlCi0gICAgIyAgICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0IE5hTiBhbHdheXMgcmV0dXJuIFRydWUKLSAgICAjICAgPT0gb3IgIT0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgc2lnbmFsaW5nIE5hTiBzaWduYWwKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBvciBUcnVlIGFzIGFib3ZlIGlmIHRoZQotICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgotICAgICMgICA8LCA+LCA8PSBhbmQgPj0gY29tcGFyaXNvbnMgaW52b2x2aW5nIGEgKHF1aWV0IG9yIHNpZ25hbGluZykKLSAgICAjICAgICAgTmFOIHNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgcmV0dXJuIEZhbHNlIGlmIHRoZQotICAgICMgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlzIG5vdCB0cmFwcGVkLgotICAgICMKLSAgICAjIFRoaXMgYmVoYXZpb3IgaXMgZGVzaWduZWQgdG8gY29uZm9ybSBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvCi0gICAgIyB0aGF0IHNwZWNpZmllZCBieSBJRUVFIDc1NC4KLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPVRydWUpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGlmIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPVRydWUpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGlmIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAotCi0KLSAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKLQotICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKLQotICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAotCi0gICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAotCi0gICAgZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmUgc2VsZiB0byBvdGhlci4gIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6Ci0KLSAgICAgICAgYSBvciBiIGlzIGEgTmFOID09PiBEZWNpbWFsKCdOYU4nKQotICAgICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJykKLSAgICAgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJykKLSAgICAgICAgYSA+IGIgICAgICAgICAgID09PiBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICAjIENvbXBhcmUoTmFOLCBOYU4pID0gTmFOCi0gICAgICAgIGlmIChzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyIGFuZCBvdGhlci5faXNfc3BlY2lhbCk6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmLl9jbXAob3RoZXIpKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICAiIiJ4Ll9faGFzaF9fKCkgPD09PiBoYXNoKHgpIiIiCi0KLSAgICAgICAgIyBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UKLSAgICAgICAgIyBhZ3JlZXMgd2l0aCB0aGUgaGFzaCBvZiBhIG51bWVyaWNhbGx5IGVxdWFsIGludGVnZXIsIGZsb2F0Ci0gICAgICAgICMgb3IgRnJhY3Rpb24sIHdlIGZvbGxvdyB0aGUgcnVsZXMgZm9yIG51bWVyaWMgaGFzaGVzIG91dGxpbmVkCi0gICAgICAgICMgaW4gdGhlIGRvY3VtZW50YXRpb24uICAoU2VlIGxpYnJhcnkgZG9jcywgJ0J1aWx0LWluIFR5cGVzJykuCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBoYXNoIGEgc2lnbmFsaW5nIE5hTiB2YWx1ZS4nKQotICAgICAgICAgICAgZWxpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX05BTgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLV9QeUhBU0hfSU5GCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeUhBU0hfSU5GCi0KLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCi0gICAgICAgIGhhc2hfID0gaW50KHNlbGYuX2ludCkgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUwotICAgICAgICBhbnMgPSBoYXNoXyBpZiBzZWxmID49IDAgZWxzZSAtaGFzaF8KLSAgICAgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucwotCi0gICAgZGVmIGFzX3R1cGxlKHNlbGYpOgotICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYSB0cmlwbGUgdHVwbGUuCi0KLSAgICAgICAgVG8gc2hvdyB0aGUgaW50ZXJuYWxzIGV4YWN0bHkgYXMgdGhleSBhcmUuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgotICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZAotICAgICAgICByZXR1cm4gIkRlY2ltYWwoJyVzJykiICUgc3RyKHNlbGYpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmc9RmFsc2UsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBpbiBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIENhcHR1cmVzIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIHNpZ24gPSBbJycsICctJ11bc2VsZi5fc2lnbl0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnSW5maW5pdHknCi0gICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnTmFOJyArIHNlbGYuX2ludAotICAgICAgICAgICAgZWxzZTogIyBzZWxmLl9leHAgPT0gJ04nCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnc05hTicgKyBzZWxmLl9pbnQKLQotICAgICAgICAjIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIGxlZnQgb2YgZGVjaW1hbCBwb2ludAotICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKLQotICAgICAgICAjIGRvdHBsYWNlIGlzIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIHRoZSBsZWZ0IG9mIHRoZQotICAgICAgICAjIGRlY2ltYWwgcG9pbnQgaW4gdGhlIG1hbnRpc3NhIG9mIHRoZSBvdXRwdXQgc3RyaW5nICh0aGF0IGlzLAotICAgICAgICAjIGFmdGVyIGFkanVzdGluZyB0aGUgZXhwb25lbnQpCi0gICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6Ci0gICAgICAgICAgICAjIG5vIGV4cG9uZW50IHJlcXVpcmVkCi0gICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKLSAgICAgICAgZWxpZiBub3QgZW5nOgotICAgICAgICAgICAgIyB1c3VhbCBzY2llbnRpZmljIG5vdGF0aW9uOiAxIGRpZ2l0IG9uIGxlZnQgb2YgdGhlIHBvaW50Ci0gICAgICAgICAgICBkb3RwbGFjZSA9IDEKLSAgICAgICAgZWxpZiBzZWxmLl9pbnQgPT0gJzAnOgotICAgICAgICAgICAgIyBlbmdpbmVlcmluZyBub3RhdGlvbiwgemVybwotICAgICAgICAgICAgZG90cGxhY2UgPSAobGVmdGRpZ2l0cyArIDEpICUgMyAtIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIG5vbnplcm8KLSAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgLSAxKSAlIDMgKyAxCi0KLSAgICAgICAgaWYgZG90cGxhY2UgPD0gMDoKLSAgICAgICAgICAgIGludHBhcnQgPSAnMCcKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50Ci0gICAgICAgIGVsaWYgZG90cGxhY2UgPj0gbGVuKHNlbGYuX2ludCk6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50KycwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0KLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgc2VsZi5faW50W2RvdHBsYWNlOl0KLSAgICAgICAgaWYgbGVmdGRpZ2l0cyA9PSBkb3RwbGFjZToKLSAgICAgICAgICAgIGV4cCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgZXhwID0gWydlJywgJ0UnXVtjb250ZXh0LmNhcGl0YWxzXSArICIlK2QiICUgKGxlZnRkaWdpdHMtZG90cGxhY2UpCi0KLSAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRwYXJ0ICsgZnJhY3BhcnQgKyBleHAKLQotICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnZlcnQgdG8gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuCi0KLSAgICAgICAgRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmUKLSAgICAgICAgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuCi0KLSAgICAgICAgU2FtZSBydWxlcyBmb3Igd2hlbiBpbiBleHBvbmVudGlhbCBhbmQgd2hlbiBhcyBhIHZhbHVlIGFzIGluIF9fc3RyX18uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX3N0cl9fKGVuZz1UcnVlLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19uZWdfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHN3aXRjaGVkLgotCi0gICAgICAgIFJvdW5kcywgaWYgaXQgaGFzIHJlYXNvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgIyAtRGVjaW1hbCgnMCcpIGlzIERlY2ltYWwoJzAnKSwgbm90IERlY2ltYWwoJy0wJyksIGV4Y2VwdAotICAgICAgICAgICAgIyBpbiBST1VORF9GTE9PUiByb3VuZGluZyBtb2RlLgotICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X2FicygpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfbmVnYXRlKCkKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfX3Bvc19fKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5LCB1bmxlc3MgaXQgaXMgYSBzTmFOLgotCi0gICAgICAgIFJvdW5kcyB0aGUgbnVtYmVyIChpZiBtb3JlIHRoZW4gcHJlY2lzaW9uIGRpZ2l0cykKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgotICAgICAgICAgICAgIyArICgtMCkgPSAwLCBleGNlcHQgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KLSAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmKQotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9fYWJzX18oc2VsZiwgcm91bmQ9VHJ1ZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2Ygc2VsZi4KLQotICAgICAgICBJZiB0aGUga2V5d29yZCBhcmd1bWVudCAncm91bmQnIGlzIGZhbHNlLCBkbyBub3Qgcm91bmQuICBUaGUKLSAgICAgICAgZXhwcmVzc2lvbiBzZWxmLl9fYWJzX18ocm91bmQ9RmFsc2UpIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgICAgc2VsZi5jb3B5X2FicygpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IHJvdW5kOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9hYnMoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX19uZWdfXyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9fcG9zX18oY29udGV4dD1jb250ZXh0KQotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHNlbGYgKyBvdGhlci4KLQotICAgICAgICAtSU5GICsgSU5GIChvciB0aGUgcmV2ZXJzZSkgY2F1c2UgSW52YWxpZE9wZXJhdGlvbiBlcnJvcnMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAjIElmIGJvdGggSU5GLCBzYW1lIHNpZ24gPT4gc2FtZSBhcyBib3RoLCBvcHBvc2l0ZSA9PiBlcnJvci4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJy1JTkYgKyBJTkYnKQotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKSAgIyBDYW4ndCBib3RoIGJlIGluZmluaXR5IGhlcmUKLQotICAgICAgICBleHAgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQotICAgICAgICBuZWdhdGl2ZXplcm8gPSAwCi0gICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfRkxPT1IgYW5kIHNlbGYuX3NpZ24gIT0gb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICAjIElmIHRoZSBhbnN3ZXIgaXMgMCwgdGhlIHNpZ24gc2hvdWxkIGJlIG5lZ2F0aXZlLCBpbiB0aGlzIGNhc2UuCi0gICAgICAgICAgICBuZWdhdGl2ZXplcm8gPSAxCi0KLSAgICAgICAgaWYgbm90IHNlbGYgYW5kIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIHNpZ24gPSBtaW4oc2VsZi5fc2lnbiwgb3RoZXIuX3NpZ24pCi0gICAgICAgICAgICBpZiBuZWdhdGl2ZXplcm86Ci0gICAgICAgICAgICAgICAgc2lnbiA9IDEKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCBleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cCA9IG1heChleHAsIG90aGVyLl9leHAgLSBjb250ZXh0LnByZWMtMSkKLSAgICAgICAgICAgIGFucyA9IG90aGVyLl9yZXNjYWxlKGV4cCwgY29udGV4dC5yb3VuZGluZykKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGV4cCA9IG1heChleHAsIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYy0xKQotICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICBvcDEsIG9wMiA9IF9ub3JtYWxpemUob3AxLCBvcDIsIGNvbnRleHQucHJlYykKLQotICAgICAgICByZXN1bHQgPSBfV29ya1JlcCgpCi0gICAgICAgIGlmIG9wMS5zaWduICE9IG9wMi5zaWduOgotICAgICAgICAgICAgIyBFcXVhbCBhbmQgb3Bwb3NpdGUKLSAgICAgICAgICAgIGlmIG9wMS5pbnQgPT0gb3AyLmludDoKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKG5lZ2F0aXZlemVybywgJzAnLCBleHApCi0gICAgICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgICAgICBpZiBvcDEuaW50IDwgb3AyLmludDoKLSAgICAgICAgICAgICAgICBvcDEsIG9wMiA9IG9wMiwgb3AxCi0gICAgICAgICAgICAgICAgIyBPSywgbm93IGFicyhvcDEpID4gYWJzKG9wMikKLSAgICAgICAgICAgIGlmIG9wMS5zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAxCi0gICAgICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gb3AyLnNpZ24sIG9wMS5zaWduCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMAotICAgICAgICAgICAgICAgICMgU28gd2Uga25vdyB0aGUgc2lnbiwgYW5kIG9wMSA+IDAuCi0gICAgICAgIGVsaWYgb3AxLnNpZ24gPT0gMToKLSAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQotICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gKDAsIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKLSAgICAgICAgIyBOb3csIG9wMSA+IGFicyhvcDIpID4gMAotCi0gICAgICAgIGlmIG9wMi5zaWduID09IDA6Ci0gICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCArIG9wMi5pbnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5pbnQgPSBvcDEuaW50IC0gb3AyLmludAotCi0gICAgICAgIHJlc3VsdC5leHAgPSBvcDEuZXhwCi0gICAgICAgIGFucyA9IERlY2ltYWwocmVzdWx0KQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBfX3JhZGRfXyA9IF9fYWRkX18KLQotICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc2VsZiAtIG90aGVyIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyBzZWxmIC0gb3RoZXIgaXMgY29tcHV0ZWQgYXMgc2VsZiArIG90aGVyLmNvcHlfbmVnYXRlKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhvdGhlci5jb3B5X25lZ2F0ZSgpLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBvdGhlciAtIHNlbGYiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICByZXR1cm4gb3RoZXIuX19zdWJfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19tdWxfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgKiBvdGhlci4KLQotICAgICAgICAoKy0pIElORiAqIDAgKG9yIGl0cyByZXZlcnNlKSByYWlzZSBJbnZhbGlkT3BlcmF0aW9uLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgcmVzdWx0c2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcoKy0pSU5GICogMCcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQotCi0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiAoKy0pSU5GJykKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdHNpZ25dCi0KLSAgICAgICAgcmVzdWx0ZXhwID0gc2VsZi5fZXhwICsgb3RoZXIuX2V4cAotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSB6ZXJvCi0gICAgICAgIGlmIG5vdCBzZWxmIG9yIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgJzAnLCByZXN1bHRleHApCi0gICAgICAgICAgICAjIEZpeGluZyBpbiBjYXNlIHRoZSBleHBvbmVudCBpcyBvdXQgb2YgYm91bmRzCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSBwb3dlciBvZiAxMAotICAgICAgICBpZiBzZWxmLl9pbnQgPT0gJzEnOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBvdGhlci5faW50LCByZXN1bHRleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBvdGhlci5faW50ID09ICcxJzoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc2VsZi5faW50LCByZXN1bHRleHApCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc3RyKG9wMS5pbnQgKiBvcDIuaW50KSwgcmVzdWx0ZXhwKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgIHJldHVybiBhbnMKLSAgICBfX3JtdWxfXyA9IF9fbXVsX18KLQotICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgLyBvdGhlci4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORi8oKy0pSU5GJykKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkLCAnRGl2aXNpb24gYnkgaW5maW5pdHknKQotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgY29udGV4dC5FdGlueSgpKQotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlcyBmb3IgemVyb2VzCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgLyAwJykKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLyAwJywgc2lnbikKLQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKLSAgICAgICAgICAgIGNvZWZmID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBPSywgc28gbmVpdGhlciA9IDAsIElORiBvciBOYU4KLSAgICAgICAgICAgIHNoaWZ0ID0gbGVuKG90aGVyLl9pbnQpIC0gbGVuKHNlbGYuX2ludCkgKyBjb250ZXh0LnByZWMgKyAxCi0gICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwIC0gc2hpZnQKLSAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50ICogMTAqKnNoaWZ0LCBvcDIuaW50KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb2VmZiwgcmVtYWluZGVyID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQgKiAxMCoqLXNoaWZ0KQotICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgYWRqdXN0IHRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nCi0gICAgICAgICAgICAgICAgaWYgY29lZmYgJSA1ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmICs9IDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IGdldCBhcyBjbG9zZSB0byBpZGVhbCBleHBvbmVudCBhcyBwb3NzaWJsZQotICAgICAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKLSAgICAgICAgICAgICAgICB3aGlsZSBleHAgPCBpZGVhbF9leHAgYW5kIGNvZWZmICUgMTAgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgY29lZmYgLy89IDEwCi0gICAgICAgICAgICAgICAgICAgIGV4cCArPSAxCi0KLSAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoY29lZmYpLCBleHApCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9kaXZpZGUoc2VsZiwgb3RoZXIsIGNvbnRleHQpOgotICAgICAgICAiIiJSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlciksIHRvIGNvbnRleHQucHJlYyBwcmVjaXNpb24uCi0KLSAgICAgICAgQXNzdW1lcyB0aGF0IG5laXRoZXIgc2VsZiBub3Igb3RoZXIgaXMgYSBOYU4sIHRoYXQgc2VsZiBpcyBub3QKLSAgICAgICAgaW5maW5pdGUgYW5kIHRoYXQgb3RoZXIgaXMgbm9uemVyby4KLSAgICAgICAgIiIiCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLSAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWRlYWxfZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKLQotICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQotICAgICAgICBpZiBub3Qgc2VsZiBvciBvdGhlci5faXNpbmZpbml0eSgpIG9yIGV4cGRpZmYgPD0gLTI6Ci0gICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzY2FsZShpZGVhbF9leHAsIGNvbnRleHQucm91bmRpbmcpKQotICAgICAgICBpZiBleHBkaWZmIDw9IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKLSAgICAgICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKLSAgICAgICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKLSAgICAgICAgICAgIGlmIHEgPCAxMCoqY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgIHJldHVybiAoX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIocSksIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzdHIociksIGlkZWFsX2V4cCkpCi0KLSAgICAgICAgIyBIZXJlIHRoZSBxdW90aWVudCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50YWJsZQotICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdW90aWVudCB0b28gbGFyZ2UgaW4gLy8sICUgb3IgZGl2bW9kJykKLSAgICAgICAgcmV0dXJuIGFucywgYW5zCi0KLSAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fdHJ1ZWRpdl9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX190cnVlZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlcikKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiAoYW5zLCBhbnMpCi0KLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdkaXZtb2QoSU5GLCBJTkYpJykKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChfU2lnbmVkSW5maW5pdHlbc2lnbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpKQotCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnZGl2bW9kKDAsIDApJykKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsIHNpZ24pLAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykpCi0KLSAgICAgICAgcXVvdGllbnQsIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dCkKLSAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHF1b3RpZW50LCByZW1haW5kZXIKLQotICAgIGRlZiBfX3JkaXZtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Rpdm1vZF9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19kaXZtb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgX19tb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYgJSBvdGhlcgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpCi0gICAgICAgIGVsaWYgbm90IG90aGVyOgotICAgICAgICAgICAgaWYgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAlIDAnKQotCi0gICAgICAgIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dClbMV0KLSAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHJlbWFpbmRlcgotCi0gICAgZGVmIF9fcm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fbW9kX18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX21vZF9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJlbWFpbmRlciBuZWFyZXN0IHRvIDAtICBhYnMocmVtYWluZGVyLW5lYXIpIDw9IG90aGVyLzIKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgc2VsZiA9PSArLy1pbmZpbml0eSAtPiBJbnZhbGlkT3BlcmF0aW9uCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcihpbmZpbml0eSwgeCknKQotCi0gICAgICAgICMgb3RoZXIgPT0gMCAtPiBlaXRoZXIgSW52YWxpZE9wZXJhdGlvbiBvciBEaXZpc2lvblVuZGVmaW5lZAotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoeCwgMCknKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcigwLCAwKScpCi0KLSAgICAgICAgIyBvdGhlciA9ICsvLWluZmluaXR5IC0+IHJlbWFpbmRlciA9IHNlbGYKLSAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgc2VsZiA9IDAgLT4gcmVtYWluZGVyID0gc2VsZiwgd2l0aCBpZGVhbCBleHBvbmVudAotICAgICAgICBpZGVhbF9leHBvbmVudCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGlkZWFsX2V4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgIyBjYXRjaCBtb3N0IGNhc2VzIG9mIGxhcmdlIG9yIHNtYWxsIHF1b3RpZW50Ci0gICAgICAgIGV4cGRpZmYgPSBzZWxmLmFkanVzdGVkKCkgLSBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIGV4cGRpZmYgPj0gY29udGV4dC5wcmVjICsgMToKLSAgICAgICAgICAgICMgZXhwZGlmZiA+PSBwcmVjKzEgPT4gYWJzKHNlbGYvb3RoZXIpID4gMTAqKnByZWMKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUpCi0gICAgICAgIGlmIGV4cGRpZmYgPD0gLTI6Ci0gICAgICAgICAgICAjIGV4cGRpZmYgPD0gLTIgPT4gYWJzKHNlbGYvb3RoZXIpIDwgMC4xCi0gICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGlkZWFsX2V4cG9uZW50LCBjb250ZXh0LnJvdW5kaW5nKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgIyBhZGp1c3QgYm90aCBhcmd1bWVudHMgdG8gaGF2ZSB0aGUgc2FtZSBleHBvbmVudCwgdGhlbiBkaXZpZGUKLSAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKLSAgICAgICAgICAgIG9wMS5pbnQgKj0gMTAqKihvcDEuZXhwIC0gb3AyLmV4cCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKLSAgICAgICAgcSwgciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50KQotICAgICAgICAjIHJlbWFpbmRlciBpcyByKjEwKippZGVhbF9leHBvbmVudDsgb3RoZXIgaXMgKy8tb3AyLmludCAqCi0gICAgICAgICMgMTAqKmlkZWFsX2V4cG9uZW50LiAgIEFwcGx5IGNvcnJlY3Rpb24gdG8gZW5zdXJlIHRoYXQKLSAgICAgICAgIyBhYnMocmVtYWluZGVyKSA8PSBhYnMob3RoZXIpLzIKLSAgICAgICAgaWYgMipyICsgKHEmMSkgPiBvcDIuaW50OgotICAgICAgICAgICAgciAtPSBvcDIuaW50Ci0gICAgICAgICAgICBxICs9IDEKLQotICAgICAgICBpZiBxID49IDEwKipjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQotCi0gICAgICAgICMgcmVzdWx0IGhhcyBzYW1lIHNpZ24gYXMgc2VsZiB1bmxlc3MgciBpcyBuZWdhdGl2ZQotICAgICAgICBzaWduID0gc2VsZi5fc2lnbgotICAgICAgICBpZiByIDwgMDoKLSAgICAgICAgICAgIHNpZ24gPSAxLXNpZ24KLSAgICAgICAgICAgIHIgPSAtcgotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHIpLCBpZGVhbF9leHBvbmVudCkKLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJzZWxmIC8vIG90aGVyIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GIC8vIElORicpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvLyAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8vIDAnKQotCi0gICAgICAgIHJldHVybiBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzBdCi0KLSAgICBkZWYgX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Zsb29yZGl2X18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX2Zsb29yZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKLSAgICAgICAgIiIiRmxvYXQgcmVwcmVzZW50YXRpb24uIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCBzaWduYWxpbmcgTmFOIHRvIGZsb2F0IikKLSAgICAgICAgICAgIHMgPSAiLW5hbiIgaWYgc2VsZi5fc2lnbiBlbHNlICJuYW4iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzID0gc3RyKHNlbGYpCi0gICAgICAgIHJldHVybiBmbG9hdChzKQotCi0gICAgZGVmIF9faW50X18oc2VsZik6Ci0gICAgICAgICIiIkNvbnZlcnRzIHNlbGYgdG8gYW4gaW50LCB0cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4iIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgaW5maW5pdHkgdG8gaW50ZWdlciIpCi0gICAgICAgIHMgPSAoLTEpKipzZWxmLl9zaWduCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludCkqMTAqKnNlbGYuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludFs6c2VsZi5fZXhwXSBvciAnMCcpCi0KLSAgICBfX3RydW5jX18gPSBfX2ludF9fCi0KLSAgICBkZWYgcmVhbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLSAgICByZWFsID0gcHJvcGVydHkocmVhbCkKLQotICAgIGRlZiBpbWFnKHNlbGYpOgotICAgICAgICByZXR1cm4gRGVjaW1hbCgwKQotICAgIGltYWcgPSBwcm9wZXJ0eShpbWFnKQotCi0gICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbXBsZXgoZmxvYXQoc2VsZikpCi0KLSAgICBkZWYgX2ZpeF9uYW4oc2VsZiwgY29udGV4dCk6Ci0gICAgICAgICIiIkRlY2FwaXRhdGUgdGhlIHBheWxvYWQgb2YgYSBOYU4gdG8gZml0IHRoZSBjb250ZXh0IiIiCi0gICAgICAgIHBheWxvYWQgPSBzZWxmLl9pbnQKLQotICAgICAgICAjIG1heGltdW0gbGVuZ3RoIG9mIHBheWxvYWQgaXMgcHJlY2lzaW9uIGlmIGNsYW1wPTAsCi0gICAgICAgICMgcHJlY2lzaW9uLTEgaWYgY2xhbXA9MS4KLSAgICAgICAgbWF4X3BheWxvYWRfbGVuID0gY29udGV4dC5wcmVjIC0gY29udGV4dC5jbGFtcAotICAgICAgICBpZiBsZW4ocGF5bG9hZCkgPiBtYXhfcGF5bG9hZF9sZW46Ci0gICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFtsZW4ocGF5bG9hZCktbWF4X3BheWxvYWRfbGVuOl0ubHN0cmlwKCcwJykKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHBheWxvYWQsIHNlbGYuX2V4cCwgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgIGRlZiBfZml4KHNlbGYsIGNvbnRleHQpOgotICAgICAgICAiIiJSb3VuZCBpZiBpdCBpcyBuZWNlc3NhcnkgdG8ga2VlcCBzZWxmIHdpdGhpbiBwcmVjIHByZWNpc2lvbi4KLQotICAgICAgICBSb3VuZHMgYW5kIGZpeGVzIHRoZSBleHBvbmVudC4gIERvZXMgbm90IHJhaXNlIG9uIGEgc05hTi4KLQotICAgICAgICBBcmd1bWVudHM6Ci0gICAgICAgIHNlbGYgLSBEZWNpbWFsIGluc3RhbmNlCi0gICAgICAgIGNvbnRleHQgLSBjb250ZXh0IHVzZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgICAgICMgZGVjYXBpdGF0ZSBwYXlsb2FkIGlmIG5lY2Vzc2FyeQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgc2VsZiBpcyArLy1JbmZpbml0eTsgcmV0dXJuIHVuYWx0ZXJlZAotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgIyBpZiBzZWxmIGlzIHplcm8gdGhlbiBleHBvbmVudCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQKLSAgICAgICAgIyBFbWF4IGlmIGNsYW1wPT0wLCBhbmQgYmV0d2VlbiBFdGlueSBhbmQgRXRvcCBpZiBjbGFtcD09MS4KLSAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKLSAgICAgICAgRXRvcCA9IGNvbnRleHQuRXRvcCgpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIEV0b3BdW2NvbnRleHQuY2xhbXBdCi0gICAgICAgICAgICBuZXdfZXhwID0gbWluKG1heChzZWxmLl9leHAsIEV0aW55KSwgZXhwX21heCkKLSAgICAgICAgICAgIGlmIG5ld19leHAgIT0gc2VsZi5fZXhwOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBuZXdfZXhwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgZXhwX21pbiBpcyB0aGUgc21hbGxlc3QgYWxsb3dhYmxlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQsCi0gICAgICAgICMgZXF1YWwgdG8gbWF4KHNlbGYuYWRqdXN0ZWQoKS1jb250ZXh0LnByZWMrMSwgRXRpbnkpCi0gICAgICAgIGV4cF9taW4gPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYwotICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKLSAgICAgICAgICAgICMgb3ZlcmZsb3c6IGV4cF9taW4gPiBFdG9wIGlmZiBzZWxmLmFkanVzdGVkKCkgPiBFbWF4Ci0gICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgc2VsZl9pc19zdWJub3JtYWwgPSBleHBfbWluIDwgRXRpbnkKLSAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICBleHBfbWluID0gRXRpbnkKLQotICAgICAgICAjIHJvdW5kIGlmIHNlbGYgaGFzIHRvbyBtYW55IGRpZ2l0cwotICAgICAgICBpZiBzZWxmLl9leHAgPCBleHBfbWluOgotICAgICAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHBfbWluCi0gICAgICAgICAgICBpZiBkaWdpdHMgPCAwOgotICAgICAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwX21pbi0xKQotICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDAKLSAgICAgICAgICAgIHJvdW5kaW5nX21ldGhvZCA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bY29udGV4dC5yb3VuZGluZ10KLSAgICAgICAgICAgIGNoYW5nZWQgPSByb3VuZGluZ19tZXRob2Qoc2VsZiwgZGlnaXRzKQotICAgICAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCi0gICAgICAgICAgICBpZiBjaGFuZ2VkID4gMDoKLSAgICAgICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNvZWZmKSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBjb2VmZls6LTFdCi0gICAgICAgICAgICAgICAgICAgIGV4cF9taW4gKz0gMQotCi0gICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHJvdW5kaW5nIHB1c2hlZCB0aGUgZXhwb25lbnQgb3V0IG9mIHJhbmdlCi0gICAgICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHBfbWluKQotCi0gICAgICAgICAgICAjIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBzaWduYWxzLCB0YWtpbmcgY2FyZSB0byByZXNwZWN0Ci0gICAgICAgICAgICAjIHRoZSBwcmVjZWRlbmNlIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbgotICAgICAgICAgICAgaWYgY2hhbmdlZCBhbmQgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQotICAgICAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQotICAgICAgICAgICAgaWYgY2hhbmdlZDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgIGlmIG5vdCBhbnM6Ci0gICAgICAgICAgICAgICAgIyByYWlzZSBDbGFtcGVkIG9uIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLQotICAgICAgICAjIGZvbGQgZG93biBpZiBjbGFtcCA9PSAxIGFuZCBzZWxmIGhhcyB0b28gZmV3IGRpZ2l0cwotICAgICAgICBpZiBjb250ZXh0LmNsYW1wID09IDEgYW5kIHNlbGYuX2V4cCA+IEV0b3A6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotICAgICAgICAgICAgc2VsZl9wYWRkZWQgPSBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIEV0b3ApCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmX3BhZGRlZCwgRXRvcCkKLQotICAgICAgICAjIGhlcmUgc2VsZiB3YXMgcmVwcmVzZW50YWJsZSB0byBiZWdpbiB3aXRoOyByZXR1cm4gdW5jaGFuZ2VkCi0gICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAjIGZvciBlYWNoIG9mIHRoZSByb3VuZGluZyBmdW5jdGlvbnMgYmVsb3c6Ci0gICAgIyAgIHNlbGYgaXMgYSBmaW5pdGUsIG5vbnplcm8gRGVjaW1hbAotICAgICMgICBwcmVjIGlzIGFuIGludGVnZXIgc2F0aXNmeWluZyAwIDw9IHByZWMgPCBsZW4oc2VsZi5faW50KQotICAgICMKLSAgICAjIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgLTEsIDAsIG9yIDEsIGFzIGZvbGxvd3M6Ci0gICAgIyAgIDEgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pCi0gICAgIyAgIDAgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgdHJ1bmNhdGVkLCBhbmQgdGhhdCBhbGwgdGhlCi0gICAgIyAgICAgZGlnaXRzIHRvIGJlIHRydW5jYXRlZCBhcmUgemVyb3MgKHNvIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQpCi0gICAgIyAgLTEgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIG5vbnplcm8gZGlnaXRzIHRvIGJlIHRydW5jYXRlZAotCi0gICAgZGVmIF9yb3VuZF9kb3duKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJBbHNvIGtub3duIGFzIHJvdW5kLXRvd2FyZHMtMCwgdHJ1bmNhdGUuIiIiCi0gICAgICAgIGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgIGRlZiBfcm91bmRfdXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyBhd2F5IGZyb20gMC4iIiIKLSAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfdXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyA1IHVwIChhd2F5IGZyb20gMCkiIiIKLSAgICAgICAgaWYgc2VsZi5faW50W3ByZWNdIGluICc1Njc4OSc6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgIGRlZiBfcm91bmRfaGFsZl9kb3duKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZCA1IGRvd24iIiIKLSAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKToKLSAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2hhbGZfdXAocHJlYykKLQotICAgIGRlZiBfcm91bmRfaGFsZl9ldmVuKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZCA1IHRvIGV2ZW4sIHJlc3QgdG8gbmVhcmVzdC4iIiIKLSAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKSBhbmQgXAotICAgICAgICAgICAgICAgIChwcmVjID09IDAgb3Igc2VsZi5faW50W3ByZWMtMV0gaW4gJzAyNDY4Jyk6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2NlaWxpbmcoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyB1cCAobm90IGF3YXkgZnJvbSAwIGlmIG5lZ2F0aXZlLikiIiIKLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLQotICAgIGRlZiBfcm91bmRfZmxvb3Ioc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kcyBkb3duIChub3QgdG93YXJkcyAwIGlmIG5lZ2F0aXZlKSIiIgotICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLQotICAgIGRlZiBfcm91bmRfMDV1cChzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgZG93biB1bmxlc3MgZGlnaXQgcHJlYy0xIGlzIDAgb3IgNS4iIiIKLSAgICAgICAgaWYgcHJlYyBhbmQgc2VsZi5faW50W3ByZWMtMV0gbm90IGluICcwNSc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBfcGlja19yb3VuZGluZ19mdW5jdGlvbiA9IGRpY3QoCi0gICAgICAgIFJPVU5EX0RPV04gPSBfcm91bmRfZG93biwKLSAgICAgICAgUk9VTkRfVVAgPSBfcm91bmRfdXAsCi0gICAgICAgIFJPVU5EX0hBTEZfVVAgPSBfcm91bmRfaGFsZl91cCwKLSAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gX3JvdW5kX2hhbGZfZG93biwKLSAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gX3JvdW5kX2hhbGZfZXZlbiwKLSAgICAgICAgUk9VTkRfQ0VJTElORyA9IF9yb3VuZF9jZWlsaW5nLAotICAgICAgICBST1VORF9GTE9PUiA9IF9yb3VuZF9mbG9vciwKLSAgICAgICAgUk9VTkRfMDVVUCA9IF9yb3VuZF8wNXVwLAotICAgICkKLQotICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgbj1Ob25lKToKLSAgICAgICAgIiIiUm91bmQgc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBvciB0byBhIGdpdmVuIHByZWNpc2lvbi4KLQotICAgICAgICBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBzdXBwbGllZCwgcm91bmQgYSBmaW5pdGUgRGVjaW1hbAotICAgICAgICBpbnN0YW5jZSBzZWxmIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yCi0gICAgICAgIGEgTmFOIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIElmIHNlbGYgaXMgZmluaXRlCi0gICAgICAgIGFuZCBsaWVzIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ2VycyB0aGVuIGl0IGlzCi0gICAgICAgIHJvdW5kZWQgdG8gdGhlIGludGVnZXIgd2l0aCBldmVuIGxhc3QgZGlnaXQuCi0KLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSkKLSAgICAgICAgMTIzCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctNDU2Ljc4OScpKQotICAgICAgICAtNDU3Ci0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctMy4wJykpCi0gICAgICAgIC0zCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcyLjUnKSkKLSAgICAgICAgMgotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMy41JykpCi0gICAgICAgIDQKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ0luZicpKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIE92ZXJmbG93RXJyb3I6IGNhbm5vdCByb3VuZCBhbiBpbmZpbml0eQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAuLi4KLSAgICAgICAgVmFsdWVFcnJvcjogY2Fubm90IHJvdW5kIGEgTmFOCi0KLSAgICAgICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgbiBpcyBzdXBwbGllZCwgc2VsZiBpcyByb3VuZGVkIHRvIG4KLSAgICAgICAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgZm9yIHRoZSBjdXJyZW50Ci0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgRm9yIGFuIGludGVnZXIgbiwgcm91bmQoc2VsZiwgLW4pIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bwotICAgICAgICBzZWxmLnF1YW50aXplKERlY2ltYWwoJzFFbicpKS4KLQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAwKQotICAgICAgICBEZWNpbWFsKCcxMjMnKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAyKQotICAgICAgICBEZWNpbWFsKCcxMjMuNDYnKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMUUrMicpCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctSW5maW5pdHknKSwgMzcpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdzTmFOMTIzJyksIDApCi0gICAgICAgIERlY2ltYWwoJ05hTjEyMycpCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIHR3by1hcmd1bWVudCBmb3JtOiB1c2UgdGhlIGVxdWl2YWxlbnQgcXVhbnRpemUgY2FsbAotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobiwgaW50KToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1NlY29uZCBhcmd1bWVudCB0byByb3VuZCBzaG91bGQgYmUgaW50ZWdyYWwnKQotICAgICAgICAgICAgZXhwID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIC1uKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucXVhbnRpemUoZXhwKQotCi0gICAgICAgICMgb25lLWFyZ3VtZW50IGZvcm0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0hBTEZfRVZFTikpCi0KLSAgICBkZWYgX19mbG9vcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGZsb29yIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCi0KLSAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBncmVhdGVzdAotICAgICAgICBpbnRlZ2VyIG4gc3VjaCB0aGF0IG4gPD0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4KLSAgICAgICAgdGhlbiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQotICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfRkxPT1IpKQotCi0gICAgZGVmIF9fY2VpbF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNlaWxpbmcgb2Ygc2VsZiwgYXMgYW4gaW50ZWdlci4KLQotICAgICAgICBGb3IgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBzZWxmLCByZXR1cm4gdGhlIGxlYXN0IGludGVnZXIgbgotICAgICAgICBzdWNoIHRoYXQgbiA+PSBzZWxmLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvciBhIE5hTiB0aGVuIGEKLSAgICAgICAgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9DRUlMSU5HKSkKLQotICAgIGRlZiBmbWEoc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJGdXNlZCBtdWx0aXBseS1hZGQuCi0KLSAgICAgICAgUmV0dXJucyBzZWxmKm90aGVyK3RoaXJkIHdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZQotICAgICAgICBwcm9kdWN0IHNlbGYqb3RoZXIuCi0KLSAgICAgICAgc2VsZiBhbmQgb3RoZXIgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHdpdGggbm8gcm91bmRpbmcgb2YKLSAgICAgICAgdGhlIHJlc3VsdC4gIFRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCwKLSAgICAgICAgYW5kIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgIyBjb21wdXRlIHByb2R1Y3Q7IHJhaXNlIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIG9wZXJhbmQgaXMKLSAgICAgICAgIyBhIHNpZ25hbGluZyBOYU4gb3IgaWYgdGhlIHByb2R1Y3QgaXMgemVybyB0aW1lcyBpbmZpbml0eS4KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ04nOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsIHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlci5fZXhwID09ICdOJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBvdGhlcikKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IHNlbGYKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuX2V4cCA9PSAnbic6Ci0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IG90aGVyCi0gICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnRic6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTkYgKiAwIGluIGZtYScpCi0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCi0gICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICogSU5GIGluIGZtYScpCi0gICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcm9kdWN0ID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKLQotICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQotCi0gICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQotICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbW9kdWxvCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgZGVhbCB3aXRoIE5hTnM6IGlmIHRoZXJlIGFyZSBhbnkgc05hTnMgdGhlbiBmaXJzdCBvbmUgd2lucywKLSAgICAgICAgIyAoaS5lLiBiZWhhdmlvdXIgZm9yIE5hTnMgaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgZm1hKQotICAgICAgICBzZWxmX2lzX25hbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgbW9kdWxvX2lzX25hbiA9IG1vZHVsby5faXNuYW4oKQotICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW4gb3IgbW9kdWxvX2lzX25hbjoKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKLSAgICAgICAgICAgIGlmIG1vZHVsb19pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsbykKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICBpZiBvdGhlcl9pc19uYW46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxvLl9maXhfbmFuKGNvbnRleHQpCi0KLSAgICAgICAgIyBjaGVjayBpbnB1dHM6IHdlIGFwcGx5IHNhbWUgcmVzdHJpY3Rpb25zIGFzIFB5dGhvbidzIHBvdygpCi0gICAgICAgIGlmIG5vdCAoc2VsZi5faXNpbnRlZ2VyKCkgYW5kCi0gICAgICAgICAgICAgICAgb3RoZXIuX2lzaW50ZWdlcigpIGFuZAotICAgICAgICAgICAgICAgIG1vZHVsby5faXNpbnRlZ2VyKCkpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDNyZCBhcmd1bWVudCBub3QgYWxsb3dlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VubGVzcyBhbGwgYXJndW1lbnRzIGFyZSBpbnRlZ2VycycpCi0gICAgICAgIGlmIG90aGVyIDwgMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAybmQgYXJndW1lbnQgY2Fubm90IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkJykKLSAgICAgICAgaWYgbm90IG1vZHVsbzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgY2Fubm90IGJlIDAnKQotCi0gICAgICAgICMgYWRkaXRpb25hbCByZXN0cmljdGlvbiBmb3IgZGVjaW1hbDogdGhlIG1vZHVsdXMgbXVzdCBiZSBsZXNzCi0gICAgICAgICMgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZQotICAgICAgICBpZiBtb2R1bG8uYWRqdXN0ZWQoKSA+PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdWZmaWNpZW50IHByZWNpc2lvbjogcG93KCkgM3JkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgbXVzdCBub3QgaGF2ZSBtb3JlIHRoYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gZGlnaXRzJykKLQotICAgICAgICAjIGRlZmluZSAwKiowID09IE5hTiwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdHdvLWFyZ3VtZW50IHBvdwotICAgICAgICAjIChldmVuIHRob3VnaCBpdCBodXJ0cyEpCi0gICAgICAgIGlmIG5vdCBvdGhlciBhbmQgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgbGVhc3Qgb25lIG9mIHBvdygpIDFzdCBhcmd1bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCAybmQgYXJndW1lbnQgbXVzdCBiZSBub256ZXJvIDsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAqKjAgaXMgbm90IGRlZmluZWQnKQotCi0gICAgICAgICMgY29tcHV0ZSBzaWduIG9mIHJlc3VsdAotICAgICAgICBpZiBvdGhlci5faXNldmVuKCk6Ci0gICAgICAgICAgICBzaWduID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KLQotICAgICAgICAjIGNvbnZlcnQgbW9kdWxvIHRvIGEgUHl0aG9uIGludGVnZXIsIGFuZCBzZWxmIGFuZCBvdGhlciB0bwotICAgICAgICAjIERlY2ltYWwgaW50ZWdlcnMgKGkuZS4gZm9yY2UgdGhlaXIgZXhwb25lbnRzIHRvIGJlID49IDApCi0gICAgICAgIG1vZHVsbyA9IGFicyhpbnQobW9kdWxvKSkKLSAgICAgICAgYmFzZSA9IF9Xb3JrUmVwKHNlbGYudG9faW50ZWdyYWxfdmFsdWUoKSkKLSAgICAgICAgZXhwb25lbnQgPSBfV29ya1JlcChvdGhlci50b19pbnRlZ3JhbF92YWx1ZSgpKQotCi0gICAgICAgICMgY29tcHV0ZSByZXN1bHQgdXNpbmcgaW50ZWdlciBwb3coKQotICAgICAgICBiYXNlID0gKGJhc2UuaW50ICUgbW9kdWxvICogcG93KDEwLCBiYXNlLmV4cCwgbW9kdWxvKSkgJSBtb2R1bG8KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZXhwb25lbnQuZXhwKToKLSAgICAgICAgICAgIGJhc2UgPSBwb3coYmFzZSwgMTAsIG1vZHVsbykKLSAgICAgICAgYmFzZSA9IHBvdyhiYXNlLCBleHBvbmVudC5pbnQsIG1vZHVsbykKLQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoYmFzZSksIDApCi0KLSAgICBkZWYgX3Bvd2VyX2V4YWN0KHNlbGYsIG90aGVyLCBwKToKLSAgICAgICAgIiIiQXR0ZW1wdCB0byBjb21wdXRlIHNlbGYqKm90aGVyIGV4YWN0bHkuCi0KLSAgICAgICAgR2l2ZW4gRGVjaW1hbHMgc2VsZiBhbmQgb3RoZXIgYW5kIGFuIGludGVnZXIgcCwgYXR0ZW1wdCB0bwotICAgICAgICBjb21wdXRlIGFuIGV4YWN0IHJlc3VsdCBmb3IgdGhlIHBvd2VyIHNlbGYqKm90aGVyLCB3aXRoIHAKLSAgICAgICAgZGlnaXRzIG9mIHByZWNpc2lvbi4gIFJldHVybiBOb25lIGlmIHNlbGYqKm90aGVyIGlzIG5vdAotICAgICAgICBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gcCBkaWdpdHMuCi0KLSAgICAgICAgQXNzdW1lcyB0aGF0IGVsaW1pbmF0aW9uIG9mIHNwZWNpYWwgY2FzZXMgaGFzIGFscmVhZHkgYmVlbgotICAgICAgICBwZXJmb3JtZWQ6IHNlbGYgYW5kIG90aGVyIG11c3QgYm90aCBiZSBub25zcGVjaWFsOyBzZWxmIG11c3QKLSAgICAgICAgYmUgcG9zaXRpdmUgYW5kIG5vdCBudW1lcmljYWxseSBlcXVhbCB0byAxOyBvdGhlciBtdXN0IGJlCi0gICAgICAgIG5vbnplcm8uICBGb3IgZWZmaWNpZW5jeSwgb3RoZXIuX2V4cCBzaG91bGQgbm90IGJlIHRvbyBsYXJnZSwKLSAgICAgICAgc28gdGhhdCAxMCoqYWJzKG90aGVyLl9leHApIGlzIGEgZmVhc2libGUgY2FsY3VsYXRpb24uIiIiCi0KLSAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZCB5IGZvciB0aGUKLSAgICAgICAgIyB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIGFicyh5KSA9IHljKjEwKip5ZSwgd2l0aCB4YwotICAgICAgICAjIGFuZCB5YyBwb3NpdGl2ZSBpbnRlZ2VycyBub3QgZGl2aXNpYmxlIGJ5IDEwLgotCi0gICAgICAgICMgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBpZGVudGlmeSB0aGUgKmZhaWx1cmUqCi0gICAgICAgICMgb2YgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgd2l0aCBhcyBsaXR0bGUgZWZmb3J0IGFzCi0gICAgICAgICMgcG9zc2libGUuICBTbyB3ZSBsb29rIGZvciBjaGVhcCBhbmQgZWFzeSB0ZXN0cyB0aGF0Ci0gICAgICAgICMgZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiB4Kip5IGJlaW5nIGV4YWN0LiAgT25seSBpZiBhbGwKLSAgICAgICAgIyB0aGVzZSB0ZXN0cyBhcmUgcGFzc2VkIGRvIHdlIGdvIG9uIHRvIGFjdHVhbGx5IGNvbXB1dGUgeCoqeS4KLQotICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAotICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5Ci0gICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKLSAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQotICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCi0gICAgICAgICMgb2YgMioqbiBvciA1KipuLgotICAgICAgICAjCi0gICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQotICAgICAgICAjIHRoZW46Ci0gICAgICAgICMKLSAgICAgICAgIyAgKDEpIGlmIHhjICE9IDEgdGhlbiBmb3IgdGhlIHJlc3VsdCB0byBiZSByZXByZXNlbnRhYmxlIHdlCi0gICAgICAgICMgICAgICBuZWVkIHhjKiooMS9uKSA+PSAyLCBhbmQgaGVuY2UgYWxzbyB4YyoqfHl8ID49IDIuICBTbwotICAgICAgICAjICAgICAgaWYgfHl8IDw9IDEvbmJpdHMoeGMpIHRoZW4geGMgPCAyKipuYml0cyh4YykgPD0KLSAgICAgICAgIyAgICAgIDIqKigxL3x5fCksIGhlbmNlIHhjKip8eXwgPCAyIGFuZCB0aGUgcmVzdWx0IGlzIG5vdAotICAgICAgICAjICAgICAgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgIwotICAgICAgICAjICAoMikgaWYgeGUgIT0gMCwgfHhlfCooMS9uKSA+PSAxLCBzbyB8eGV8Knx5fCA+PSAxLiAgSGVuY2UgaWYKLSAgICAgICAgIyAgICAgIHx5fCA8IDEvfHhlfCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgICMKLSAgICAgICAgIyBOb3RlIHRoYXQgc2luY2UgeCBpcyBub3QgZXF1YWwgdG8gMSwgYXQgbGVhc3Qgb25lIG9mICgxKSBhbmQKLSAgICAgICAgIyAoMikgbXVzdCBhcHBseS4gIE5vdyB8eXwgPCAxL25iaXRzKHhjKSBpZmYgfHljfCpuYml0cyh4YykgPAotICAgICAgICAjIDEwKioteWUgaWZmIGxlbihzdHIofHljfCpuYml0cyh4YykpIDw9IC15ZS4KLSAgICAgICAgIwotICAgICAgICAjIFRoZXJlJ3MgYWxzbyBhIGxpbWl0IHRvIGhvdyBsYXJnZSB5IGNhbiBiZSwgYXQgbGVhc3QgaWYgaXQncwotICAgICAgICAjIHBvc2l0aXZlOiB0aGUgbm9ybWFsaXplZCByZXN1bHQgd2lsbCBoYXZlIGNvZWZmaWNpZW50IHhjKip5LAotICAgICAgICAjIHNvIGlmIGl0J3MgcmVwcmVzZW50YWJsZSB0aGVuIHhjKip5IDwgMTAqKnAsIGFuZCB5IDwKLSAgICAgICAgIyBwL2xvZzEwKHhjKS4gIEhlbmNlIGlmIHkqbG9nMTAoeGMpID49IHAgdGhlbiB0aGUgcmVzdWx0IGlzCi0gICAgICAgICMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZS4KLQotICAgICAgICAjIGlmIGxlbihzdHIoYWJzKHljKnhlKSkgPD0gLXllIHRoZW4gYWJzKHljKnhlKSA8IDEwKioteWUsCi0gICAgICAgICMgc28gfHl8IDwgMS94ZSBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgIyBTaW1pbGFybHksIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllIGltcGxpZXMgfHl8Ci0gICAgICAgICMgPCAxL25iaXRzKHhjKS4KLQotICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCi0gICAgICAgIHdoaWxlIHhjICUgMTAgPT0gMDoKLSAgICAgICAgICAgIHhjIC8vPSAxMAotICAgICAgICAgICAgeGUgKz0gMQotCi0gICAgICAgIHkgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCi0gICAgICAgIHdoaWxlIHljICUgMTAgPT0gMDoKLSAgICAgICAgICAgIHljIC8vPSAxMAotICAgICAgICAgICAgeWUgKz0gMQotCi0gICAgICAgICMgY2FzZSB3aGVyZSB4YyA9PSAxOiByZXN1bHQgaXMgMTAqKih4ZSp5KSwgd2l0aCB4ZSp5Ci0gICAgICAgICMgcmVxdWlyZWQgdG8gYmUgYW4gaW50ZWdlcgotICAgICAgICBpZiB4YyA9PSAxOgotICAgICAgICAgICAgeGUgKj0geWMKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdyAxMCoqKHhlICogMTAqKnllKTsgIHhlICogMTAqKnllIG11c3QgYmUgaW50ZWdyYWwKLSAgICAgICAgICAgIHdoaWxlIHhlICUgMTAgPT0gMDoKLSAgICAgICAgICAgICAgICB4ZSAvLz0gMTAKLSAgICAgICAgICAgICAgICB5ZSArPSAxCi0gICAgICAgICAgICBpZiB5ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGV4cG9uZW50ID0geGUgKiAxMCoqeWUKLSAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50Ci0gICAgICAgICAgICAjIGlmIG90aGVyIGlzIGEgbm9ubmVnYXRpdmUgaW50ZWdlciwgdXNlIGlkZWFsIGV4cG9uZW50Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCkgYW5kIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQotICAgICAgICAgICAgICAgIHplcm9zID0gbWluKGV4cG9uZW50LWlkZWFsX2V4cG9uZW50LCBwLTEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHplcm9zID0gMAotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKnplcm9zLCBleHBvbmVudC16ZXJvcykKLQotICAgICAgICAjIGNhc2Ugd2hlcmUgeSBpcyBuZWdhdGl2ZTogeGMgbXVzdCBiZSBlaXRoZXIgYSBwb3dlcgotICAgICAgICAjIG9mIDIgb3IgYSBwb3dlciBvZiA1LgotICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgIGxhc3RfZGlnaXQgPSB4YyAlIDEwCi0gICAgICAgICAgICBpZiBsYXN0X2RpZ2l0IGluICgyLDQsNiw4KToKLSAgICAgICAgICAgICAgICAjIHF1aWNrIHRlc3QgZm9yIHBvd2VyIG9mIDIKLSAgICAgICAgICAgICAgICBpZiB4YyAmIC14YyAhPSB4YzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAjIG5vdyB4YyBpcyBhIHBvd2VyIG9mIDI7IGUgaXMgaXRzIGV4cG9uZW50Ci0gICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YyktMQotCi0gICAgICAgICAgICAgICAgIyBXZSBub3cgaGF2ZToKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyAgIHggPSAyKiplICogMTAqKnhlLCBlID4gMCwgYW5kIHkgPCAwLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRoZSBleGFjdCByZXN1bHQgaXM6Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB4Kip5ID0gNSoqKC1lKnkpICogMTAqKihlKnkgKyB4ZSp5KQotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIHByb3ZpZGVkIHRoYXQgYm90aCBlKnkgYW5kIHhlKnkgYXJlIGludGVnZXJzLiAgTm90ZSB0aGF0IGlmCi0gICAgICAgICAgICAgICAgIyA1KiooLWUqeSkgPj0gMTAqKnAsIHRoZW4gdGhlIHJlc3VsdCBjYW4ndCBiZSBleHByZXNzZWQKLSAgICAgICAgICAgICAgICAjIGV4YWN0bHkgd2l0aCBwIGRpZ2l0cyBvZiBwcmVjaXNpb24uCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVXNpbmcgdGhlIGFib3ZlLCB3ZSBjYW4gZ3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUuCi0gICAgICAgICAgICAgICAgIyA5My82NSBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nKDEwKS9sb2coNSksIHNvIGlmCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB5ZSA+PSBsZW4oc3RyKDkzKnAvLzY1KSkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyB0aGVuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICAtZSp5ID49IC15ID49IDEwKip5ZSA+IDkzKnAvNjUgPiBwKmxvZygxMCkvbG9nKDUpLAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIHNvIDUqKigtZSp5KSA+PSAxMCoqcCwgYW5kIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0Ci0gICAgICAgICAgICAgICAgIyBjYW4ndCBiZSBleHByZXNzZWQgaW4gcCBkaWdpdHMuCi0KLSAgICAgICAgICAgICAgICAjIGVtYXggPj0gbGFyZ2VzdCBlIHN1Y2ggdGhhdCA1KiplIDwgMTAqKnAuCi0gICAgICAgICAgICAgICAgZW1heCA9IHAqOTMvLzY1Ci0gICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAjIEZpbmQgLWUqeSBhbmQgLXhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycwotICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKLSAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKLSAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIHhjID0gNSoqZQotCi0gICAgICAgICAgICBlbGlmIGxhc3RfZGlnaXQgPT0gNToKLSAgICAgICAgICAgICAgICAjIGUgPj0gbG9nXzUoeGMpIGlmIHhjIGlzIGEgcG93ZXIgb2YgNTsgd2UgaGF2ZQotICAgICAgICAgICAgICAgICMgZXF1YWxpdHkgYWxsIHRoZSB3YXkgdXAgdG8geGM9NSoqMjY1OAotICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpKjI4Ly82NQotICAgICAgICAgICAgICAgIHhjLCByZW1haW5kZXIgPSBkaXZtb2QoNSoqZSwgeGMpCi0gICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgotICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQotICAgICAgICAgICAgICAgICAgICBlIC09IDEKLQotICAgICAgICAgICAgICAgICMgR3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUsIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIGluCi0gICAgICAgICAgICAgICAgIyB0aGUgJ3hjIGlzIGEgcG93ZXIgb2YgMicgYnJhbmNoLiAgMTAvMyBpcyBhbiB1cHBlciBib3VuZCBmb3IKLSAgICAgICAgICAgICAgICAjIGxvZygxMCkvbG9nKDIpLgotICAgICAgICAgICAgICAgIGVtYXggPSBwKjEwLy8zCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB4YyA9IDIqKmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgaWYgeGMgPj0gMTAqKnA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHhlID0gLWUteGUKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cih4YyksIHhlKQotCi0gICAgICAgICMgbm93IHkgaXMgcG9zaXRpdmU7IGZpbmQgbSBhbmQgbiBzdWNoIHRoYXQgeSA9IG0vbgotICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgbSwgbiA9IHljKjEwKip5ZSwgMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgeGUgIT0gMCBhbmQgbGVuKHN0cihhYnMoeWMqeGUpKSkgPD0gLXllOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB4Y19iaXRzID0gX25iaXRzKHhjKQotICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgbGVuKHN0cihhYnMoeWMpKnhjX2JpdHMpKSA8PSAteWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIG0sIG4gPSB5YywgMTAqKigteWUpCi0gICAgICAgICAgICB3aGlsZSBtICUgMiA9PSBuICUgMiA9PSAwOgotICAgICAgICAgICAgICAgIG0gLy89IDIKLSAgICAgICAgICAgICAgICBuIC8vPSAyCi0gICAgICAgICAgICB3aGlsZSBtICUgNSA9PSBuICUgNSA9PSAwOgotICAgICAgICAgICAgICAgIG0gLy89IDUKLSAgICAgICAgICAgICAgICBuIC8vPSA1Ci0KLSAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjKjEwKip4ZQotICAgICAgICBpZiBuID4gMToKLSAgICAgICAgICAgICMgaWYgMSA8IHhjIDwgMioqbiB0aGVuIHhjIGlzbid0IGFuIG50aCBwb3dlcgotICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgeGNfYml0cyA8PSBuOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIHhlLCByZW0gPSBkaXZtb2QoeGUsIG4pCi0gICAgICAgICAgICBpZiByZW0gIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAjIGNvbXB1dGUgbnRoIHJvb3Qgb2YgeGMgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCi0gICAgICAgICAgICBhID0gMSA8PCAtKC1fbmJpdHMoeGMpLy9uKSAjIGluaXRpYWwgZXN0aW1hdGUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcSwgciA9IGRpdm1vZCh4YywgYSoqKG4tMSkpCi0gICAgICAgICAgICAgICAgaWYgYSA8PSBxOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGEgPSAoYSoobi0xKSArIHEpLy9uCi0gICAgICAgICAgICBpZiBub3QgKGEgPT0gcSBhbmQgciA9PSAwKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgeGMgPSBhCi0KLSAgICAgICAgIyBub3cgeGMqMTAqKnhlIGlzIHRoZSBudGggcm9vdCBvZiB0aGUgb3JpZ2luYWwgeGMqMTAqKnhlCi0gICAgICAgICMgY29tcHV0ZSBtdGggcG93ZXIgb2YgeGMqMTAqKnhlCi0KLSAgICAgICAgIyBpZiBtID4gcCoxMDAvL19sb2cxMF9sYih4YykgdGhlbiBtID4gcC9sb2cxMCh4YyksIGhlbmNlIHhjKiptID4KLSAgICAgICAgIyAxMCoqcCBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgaWYgeGMgPiAxIGFuZCBtID4gcCoxMDAvL19sb2cxMF9sYih4Yyk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB4YyA9IHhjKiptCi0gICAgICAgIHhlICo9IG0KLSAgICAgICAgaWYgeGMgPiAxMCoqcDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBieSB0aGlzIHBvaW50IHRoZSByZXN1bHQgKmlzKiBleGFjdGx5IHJlcHJlc2VudGFibGUKLSAgICAgICAgIyBhZGp1c3QgdGhlIGV4cG9uZW50IHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgaWRlYWwKLSAgICAgICAgIyBleHBvbmVudCwgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIHN0cl94YyA9IHN0cih4YykKLSAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgotICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQotICAgICAgICAgICAgemVyb3MgPSBtaW4oeGUtaWRlYWxfZXhwb25lbnQsIHAtbGVuKHN0cl94YykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6ZXJvcyA9IDAKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyX3hjKycwJyp6ZXJvcywgeGUtemVyb3MpCi0KLSAgICBkZWYgX19wb3dfXyhzZWxmLCBvdGhlciwgbW9kdWxvPU5vbmUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmICoqIG90aGVyIFsgJSBtb2R1bG9dLgotCi0gICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBzZWxmKipvdGhlci4KLQotICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoc2VsZioqb3RoZXIpICUgbW9kdWxvLiAgRm9yIHRoZQotICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKLSAgICAgICAgYXJndW1lbnRzIGhvbGQ6Ci0KLSAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCi0gICAgICAgICAtIG90aGVyIG11c3QgYmUgbm9ubmVnYXRpdmUKLSAgICAgICAgIC0gZWl0aGVyIHNlbGYgb3Igb3RoZXIgKG9yIGJvdGgpIG11c3QgYmUgbm9uemVybwotICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBtdXN0IGhhdmUgYXQgbW9zdCBwIGRpZ2l0cywKLSAgICAgICAgICAgd2hlcmUgcCBpcyB0aGUgY29udGV4dCBwcmVjaXNpb24uCi0KLSAgICAgICAgSWYgYW55IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2aW9sYXRlZCB0aGUgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBmbGFnIGlzIHJhaXNlZC4KLQotICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhzZWxmLCBvdGhlciwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlCi0gICAgICAgIHJlc3VsdCB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoc2VsZioqb3RoZXIpICUKLSAgICAgICAgbW9kdWxvIHdpdGggdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUKLSAgICAgICAgZWZmaWNpZW50bHkuICBJdCBpcyBhbHdheXMgZXhhY3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG1vZHVsbyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3dlcl9tb2R1bG8ob3RoZXIsIG1vZHVsbywgY29udGV4dCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGVpdGhlciBhcmd1bWVudCBpcyBhIE5hTiA9PiByZXN1bHQgaXMgTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIDAqKjAgPSBOYU4gKCEpLCB4KiowID0gMSBmb3Igbm9uemVybyB4IChpbmNsdWRpbmcgKy8tSW5maW5pdHkpCi0gICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnMCAqKiAwJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLQotICAgICAgICAjIHJlc3VsdCBoYXMgc2lnbiAxIGlmZiBzZWxmLl9zaWduIGlzIDEgYW5kIG90aGVyIGlzIGFuIG9kZCBpbnRlZ2VyCi0gICAgICAgIHJlc3VsdF9zaWduID0gMAotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG90aGVyLl9pc2V2ZW4oKToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3NpZ24gPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgLXZlKipub25pbnRlZ2VyID0gTmFOCi0gICAgICAgICAgICAgICAgIyAoLTApKipub25pbnRlZ2VyID0gMCoqbm9uaW50ZWdlcgotICAgICAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3ggKiogeSB3aXRoIHggbmVnYXRpdmUgYW5kIHkgbm90IGFuIGludGVnZXInKQotICAgICAgICAgICAgIyBuZWdhdGUgc2VsZiwgd2l0aG91dCBkb2luZyBhbnkgdW53YW50ZWQgcm91bmRpbmcKLSAgICAgICAgICAgIHNlbGYgPSBzZWxmLmNvcHlfbmVnYXRlKCkKLQotICAgICAgICAjIDAqKigrdmUgb3IgSW5mKT0gMDsgMCoqKC12ZSBvciAtSW5mKSA9IEluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQotCi0gICAgICAgICMgSW5mKiooK3ZlIG9yIEluZikgPSBJbmY7IEluZioqKC12ZSBvciAtSW5mKSA9IDAKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQotCi0gICAgICAgICMgMSoqb3RoZXIgPSAxLCBidXQgdGhlIGNob2ljZSBvZiBleHBvbmVudCBhbmQgdGhlIGZsYWdzCi0gICAgICAgICMgZGVwZW5kIG9uIHRoZSBleHBvbmVudCBvZiBzZWxmLCBhbmQgb24gd2hldGhlciBvdGhlciBpcyBhCi0gICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciwgYSBuZWdhdGl2ZSBpbnRlZ2VyLCBvciBuZWl0aGVyCi0gICAgICAgIGlmIHNlbGYgPT0gX09uZToKLSAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKToKLSAgICAgICAgICAgICAgICAjIGV4cCA9IG1heChzZWxmLl9leHAqbWF4KGludChvdGhlciksIDApLAotICAgICAgICAgICAgICAgICMgMS1jb250ZXh0LnByZWMpIGJ1dCBldmFsdWF0aW5nIGludChvdGhlcikgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAjIGlzIGRhbmdlcm91cyB1bnRpbCB3ZSBrbm93IG90aGVyIGlzIHNtYWxsIChvdGhlcgotICAgICAgICAgICAgICAgICMgY291bGQgYmUgMWU5OTk5OTk5OTkpCi0gICAgICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIG90aGVyID4gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gY29udGV4dC5wcmVjCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGludChvdGhlcikKLQotICAgICAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAqIG11bHRpcGxpZXIKLSAgICAgICAgICAgICAgICBpZiBleHAgPCAxLWNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgZXhwID0gMS1jb250ZXh0LnByZWMKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCi0KLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScrJzAnKi1leHAsIGV4cCkKLQotICAgICAgICAjIGNvbXB1dGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZgotICAgICAgICBzZWxmX2FkaiA9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgICAgICMgc2VsZiAqKiBpbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmID4gMSwgMCBpZiBzZWxmIDwgMQotICAgICAgICAjIHNlbGYgKiogLWluZmluaXR5IGlzIGluZmluaXR5IGlmIHNlbGYgPCAxLCAwIGlmIHNlbGYgPiAxCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZiAob3RoZXIuX3NpZ24gPT0gMCkgPT0gKHNlbGZfYWRqIDwgMCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLQotICAgICAgICAjIGZyb20gaGVyZSBvbiwgdGhlIHJlc3VsdCBhbHdheXMgZ29lcyB0aHJvdWdoIHRoZSBjYWxsCi0gICAgICAgICMgdG8gX2ZpeCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCi0gICAgICAgIGFucyA9IE5vbmUKLSAgICAgICAgZXhhY3QgPSBGYWxzZQotCi0gICAgICAgICMgY3J1ZGUgdGVzdCB0byBjYXRjaCBjYXNlcyBvZiBleHRyZW1lIG92ZXJmbG93L3VuZGVyZmxvdy4gIElmCi0gICAgICAgICMgbG9nMTAoc2VsZikqb3RoZXIgPj0gMTAqKmJvdW5kIGFuZCBib3VuZCA+PSBsZW4oc3RyKEVtYXgpKQotICAgICAgICAjIHRoZW4gMTAqKmJvdW5kID49IDEwKipsZW4oc3RyKEVtYXgpKSA+PSBFbWF4KzEgYW5kIGhlbmNlCi0gICAgICAgICMgc2VsZioqb3RoZXIgPj0gMTAqKihFbWF4KzEpLCBzbyBvdmVyZmxvdyBvY2N1cnMuICBUaGUgdGVzdAotICAgICAgICAjIGZvciB1bmRlcmZsb3cgaXMgc2ltaWxhci4KLSAgICAgICAgYm91bmQgPSBzZWxmLl9sb2cxMF9leHBfYm91bmQoKSArIG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgKHNlbGZfYWRqID49IDApID09IChvdGhlci5fc2lnbiA9PSAwKToKLSAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyICt2ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyIC12ZQotICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdwotICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cihjb250ZXh0LkVtYXgpKToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIGNvbnRleHQuRW1heCsxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBzZWxmID4gMSBhbmQgb3RoZXIgLXZlLCBvciBzZWxmIDwgMSBhbmQgb3RoZXIgK3ZlCi0gICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICBFdGlueSA9IGNvbnRleHQuRXRpbnkoKQotICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cigtRXRpbnkpKToKLSAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIEV0aW55LTEpCi0KLSAgICAgICAgIyB0cnkgZm9yIGFuIGV4YWN0IHJlc3VsdCB3aXRoIHByZWNpc2lvbiArMQotICAgICAgICBpZiBhbnMgaXMgTm9uZToKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Bvd2VyX2V4YWN0KG90aGVyLCBjb250ZXh0LnByZWMgKyAxKQotICAgICAgICAgICAgaWYgYW5zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMSwgYW5zLl9pbnQsIGFucy5fZXhwKQotICAgICAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQotCi0gICAgICAgICMgdXN1YWwgY2FzZTogaW5leGFjdCByZXN1bHQsIHgqKnkgY29tcHV0ZWQgZGlyZWN0bHkgYXMgZXhwKHkqbG9nKHgpKQotICAgICAgICBpZiBhbnMgaXMgTm9uZToKLSAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKLSAgICAgICAgICAgIHggPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCi0gICAgICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICB5YywgeWUgPSB5LmludCwgeS5leHAKLSAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIHljID0gLXljCi0KLSAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6ICBzdGFydCB3aXRoIHByZWNpc2lvbiArMywKLSAgICAgICAgICAgICMgdGhlbiBpbmNyZWFzZSBwcmVjaXNpb24gdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCi0gICAgICAgICAgICBleHRyYSA9IDMKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHArZXh0cmEpCi0gICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleHRyYSArPSAzCi0KLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sIHN0cihjb2VmZiksIGV4cCkKLQotICAgICAgICAjIHVubGlrZSBleHAsIGxuIGFuZCBsb2cxMCwgdGhlIHBvd2VyIGZ1bmN0aW9uIHJlc3BlY3RzIHRoZQotICAgICAgICAjIHJvdW5kaW5nIG1vZGU7IG5vIG5lZWQgdG8gc3dpdGNoIHRvIFJPVU5EX0hBTEZfRVZFTiBoZXJlCi0KLSAgICAgICAgIyBUaGVyZSdzIGEgZGlmZmljdWx0eSBoZXJlIHdoZW4gJ290aGVyJyBpcyBub3QgYW4gaW50ZWdlciBhbmQKLSAgICAgICAgIyB0aGUgcmVzdWx0IGlzIGV4YWN0LiAgSW4gdGhpcyBjYXNlLCB0aGUgc3BlY2lmaWNhdGlvbgotICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIEluZXhhY3QgZmxhZyBiZSByYWlzZWQgKGluIHNwaXRlIG9mCi0gICAgICAgICMgZXhhY3RuZXNzKSwgYnV0IHNpbmNlIHRoZSByZXN1bHQgaXMgZXhhY3QgX2ZpeCB3b24ndCBkbyB0aGlzCi0gICAgICAgICMgZm9yIHVzLiAgKENvcnJlc3BvbmRpbmdseSwgdGhlIFVuZGVyZmxvdyBzaWduYWwgc2hvdWxkIGFsc28KLSAgICAgICAgIyBiZSByYWlzZWQgZm9yIHN1Ym5vcm1hbCByZXN1bHRzLikgIFdlIGNhbid0IGRpcmVjdGx5IHJhaXNlCi0gICAgICAgICMgdGhlc2Ugc2lnbmFscyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgX2ZpeCwgc2luY2UKLSAgICAgICAgIyB0aGF0IHdvdWxkIHZpb2xhdGUgdGhlIHByZWNlZGVuY2UgZm9yIHNpZ25hbHMuICBTbyB3ZSB3cmFwCi0gICAgICAgICMgdGhlIC5fZml4IGNhbGwgaW4gYSB0ZW1wb3JhcnkgY29udGV4dCwgYW5kIHJlcmFpc2UKLSAgICAgICAgIyBhZnRlcndhcmRzLgotICAgICAgICBpZiBleGFjdCBhbmQgbm90IG90aGVyLl9pc2ludGVnZXIoKToKLSAgICAgICAgICAgICMgcGFkIHdpdGggemVyb3MgdXAgdG8gbGVuZ3RoIGNvbnRleHQucHJlYysxIGlmIG5lY2Vzc2FyeTsgdGhpcwotICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgdGhlIFJvdW5kZWQgc2lnbmFsIHdpbGwgYmUgcmFpc2VkLgotICAgICAgICAgICAgaWYgbGVuKGFucy5faW50KSA8PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgZXhwZGlmZiA9IGNvbnRleHQucHJlYyArIDEgLSBsZW4oYW5zLl9pbnQpCi0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShhbnMuX3NpZ24sIGFucy5faW50KycwJypleHBkaWZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9leHAtZXhwZGlmZikKLQotICAgICAgICAgICAgIyBjcmVhdGUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQsIHdpdGggY2xlYXJlZCBmbGFncy90cmFwcwotICAgICAgICAgICAgbmV3Y29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICAgICBuZXdjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgbmV3Y29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMAotCi0gICAgICAgICAgICAjIHJvdW5kIGluIHRoZSBuZXcgY29udGV4dAotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgobmV3Y29udGV4dCkKLQotICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0LCBhbmQgaWYgbmVjZXNzYXJ5LCBVbmRlcmZsb3cKLSAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW1N1Ym5vcm1hbF06Ci0gICAgICAgICAgICAgICAgbmV3Y29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQotCi0gICAgICAgICAgICAjIHByb3BhZ2F0ZSBzaWduYWxzIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0OyBfZml4IGNvdWxkCi0gICAgICAgICAgICAjIGhhdmUgcmFpc2VkIGFueSBvZiBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAjIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQuICBPdmVyZmxvdyBuZWVkcyB0aGUgY29ycmVjdAotICAgICAgICAgICAgIyBhcmd1bWVudHMuICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBleGNlcHRpb25zIGlzCi0gICAgICAgICAgICAjIGltcG9ydGFudCBoZXJlLgotICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tPdmVyZmxvd106Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4JywgYW5zLl9zaWduKQotICAgICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCwgQ2xhbXBlZDoKLSAgICAgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW2V4Y2VwdGlvbl06Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGV4Y2VwdGlvbikKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX19ycG93X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19wb3dfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fcG93X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJOb3JtYWxpemUtIHN0cmlwIHRyYWlsaW5nIDBzLCBjaGFuZ2UgYW55dGhpbmcgZXF1YWwgdG8gMCB0byAwZTAiIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBkdXAgPSBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgaWYgZHVwLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gZHVwCi0KLSAgICAgICAgaWYgbm90IGR1cDoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKGR1cC5fc2lnbiwgJzAnLCAwKQotICAgICAgICBleHBfbWF4ID0gW2NvbnRleHQuRW1heCwgY29udGV4dC5FdG9wKCldW2NvbnRleHQuY2xhbXBdCi0gICAgICAgIGVuZCA9IGxlbihkdXAuX2ludCkKLSAgICAgICAgZXhwID0gZHVwLl9leHAKLSAgICAgICAgd2hpbGUgZHVwLl9pbnRbZW5kLTFdID09ICcwJyBhbmQgZXhwIDwgZXhwX21heDoKLSAgICAgICAgICAgIGV4cCArPSAxCi0gICAgICAgICAgICBlbmQgLT0gMQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sIGR1cC5faW50WzplbmRdLCBleHApCi0KLSAgICBkZWYgcXVhbnRpemUoc2VsZiwgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUsIHdhdGNoZXhwPVRydWUpOgotICAgICAgICAiIiJRdWFudGl6ZSBzZWxmIHNvIGl0cyBleHBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGV4cC4KLQotICAgICAgICBTaW1pbGFyIHRvIHNlbGYuX3Jlc2NhbGUoZXhwLl9leHApIGJ1dCB3aXRoIGVycm9yIGNoZWNraW5nLgotICAgICAgICAiIiIKLSAgICAgICAgZXhwID0gX2NvbnZlcnRfb3RoZXIoZXhwLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBleHAuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGV4cCwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIGV4cC5faXNpbmZpbml0eSgpIG9yIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKSAgIyBpZiBib3RoIGFyZSBpbmYsIGl0IGlzIE9LCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHdpdGggb25lIElORicpCi0KLSAgICAgICAgIyBpZiB3ZSdyZSBub3Qgd2F0Y2hpbmcgZXhwb25lbnRzLCBkbyBhIHNpbXBsZSByZXNjYWxlCi0gICAgICAgIGlmIG5vdCB3YXRjaGV4cDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLl9leHAsIHJvdW5kaW5nKQotICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0IGFuZCBSb3VuZGVkIHdoZXJlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICBpZiBhbnMuX2V4cCA+IHNlbGYuX2V4cDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgZXhwLl9leHAgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kIEVtYXgKLSAgICAgICAgaWYgbm90IChjb250ZXh0LkV0aW55KCkgPD0gZXhwLl9leHAgPD0gY29udGV4dC5FbWF4KToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICd0YXJnZXQgZXhwb25lbnQgb3V0IG9mIGJvdW5kcyBpbiBxdWFudGl6ZScpCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwLl9leHApCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICBzZWxmX2FkanVzdGVkID0gc2VsZi5hZGp1c3RlZCgpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPiBjb250ZXh0LkVtYXg6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKLSAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCAtIGV4cC5fZXhwICsgMSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKLQotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwLCByb3VuZGluZykKLSAgICAgICAgaWYgYW5zLmFkanVzdGVkKCkgPiBjb250ZXh0LkVtYXg6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnQgb2YgcXVhbnRpemUgcmVzdWx0IHRvbyBsYXJnZSBmb3IgY3VycmVudCBjb250ZXh0JykKLSAgICAgICAgaWYgbGVuKGFucy5faW50KSA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSByZXN1bHQgaGFzIHRvbyBtYW55IGRpZ2l0cyBmb3IgY3VycmVudCBjb250ZXh0JykKLQotICAgICAgICAjIHJhaXNlIGFwcHJvcHJpYXRlIGZsYWdzCi0gICAgICAgIGlmIGFucyBhbmQgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0gICAgICAgIGlmIGFucy5fZXhwID4gc2VsZi5fZXhwOgotICAgICAgICAgICAgaWYgYW5zICE9IHNlbGY6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0KLSAgICAgICAgIyBjYWxsIHRvIGZpeCB0YWtlcyBjYXJlIG9mIGFueSBuZWNlc3NhcnkgZm9sZGRvd24sIGFuZAotICAgICAgICAjIHNpZ25hbHMgQ2xhbXBlZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudDsgb3RoZXJ3aXNlCi0gICAgICAgIHJldHVybiBGYWxzZS4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIHVzZWQ6Ci0gICAgICAgICAgICogcmV0dXJuIFRydWUgaWYgYm90aCBvcGVyYW5kcyBhcmUgaW5maW5pdGllcwotICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIE5hTnMKLSAgICAgICAgICAgKiBvdGhlcndpc2UsIHJldHVybiBGYWxzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHJldHVybiAoc2VsZi5pc19uYW4oKSBhbmQgb3RoZXIuaXNfbmFuKCkgb3IKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pc19pbmZpbml0ZSgpIGFuZCBvdGhlci5pc19pbmZpbml0ZSgpKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09IG90aGVyLl9leHAKLQotICAgIGRlZiBfcmVzY2FsZShzZWxmLCBleHAsIHJvdW5kaW5nKToKLSAgICAgICAgIiIiUmVzY2FsZSBzZWxmIHNvIHRoYXQgdGhlIGV4cG9uZW50IGlzIGV4cCwgZWl0aGVyIGJ5IHBhZGRpbmcgd2l0aCB6ZXJvcwotICAgICAgICBvciBieSB0cnVuY2F0aW5nIGRpZ2l0cywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCi0KLSAgICAgICAgU3BlY2lhbHMgYXJlIHJldHVybmVkIHdpdGhvdXQgY2hhbmdlLiAgVGhpcyBvcGVyYXRpb24gaXMKLSAgICAgICAgcXVpZXQ6IGl0IHJhaXNlcyBubyBmbGFncywgYW5kIHVzZXMgbm8gaW5mb3JtYXRpb24gZnJvbSB0aGUKLSAgICAgICAgY29udGV4dC4KLQotICAgICAgICBleHAgPSBleHAgdG8gc2NhbGUgdG8gKGFuIGludGVnZXIpCi0gICAgICAgIHJvdW5kaW5nID0gcm91bmRpbmcgbW9kZQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBleHApCi0KLSAgICAgICAgaWYgc2VsZi5fZXhwID49IGV4cDoKLSAgICAgICAgICAgICMgcGFkIGFuc3dlciB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeQotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIGV4cCksIGV4cCkKLQotICAgICAgICAjIHRvbyBtYW55IGRpZ2l0czsgcm91bmQgYW5kIGxvc2UgZGF0YS4gIElmIHNlbGYuYWRqdXN0ZWQoKSA8Ci0gICAgICAgICMgZXhwLTEsIHJlcGxhY2Ugc2VsZiBieSAxMCoqKGV4cC0xKSBiZWZvcmUgcm91bmRpbmcKLSAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHAKLSAgICAgICAgaWYgZGlnaXRzIDwgMDoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwLTEpCi0gICAgICAgICAgICBkaWdpdHMgPSAwCi0gICAgICAgIHRoaXNfZnVuY3Rpb24gPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW3JvdW5kaW5nXQotICAgICAgICBjaGFuZ2VkID0gdGhpc19mdW5jdGlvbihzZWxmLCBkaWdpdHMpCi0gICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJwotICAgICAgICBpZiBjaGFuZ2VkID09IDE6Ci0gICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHApCi0KLSAgICBkZWYgX3JvdW5kKHNlbGYsIHBsYWNlcywgcm91bmRpbmcpOgotICAgICAgICAiIiJSb3VuZCBhIG5vbnplcm8sIG5vbnNwZWNpYWwgRGVjaW1hbCB0byBhIGZpeGVkIG51bWJlciBvZgotICAgICAgICBzaWduaWZpY2FudCBmaWd1cmVzLCB1c2luZyB0aGUgZ2l2ZW4gcm91bmRpbmcgbW9kZS4KLQotICAgICAgICBJbmZpbml0aWVzLCBOYU5zIGFuZCB6ZXJvcyBhcmUgcmV0dXJuZWQgdW5hbHRlcmVkLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vCi0gICAgICAgIGluZm9ybWF0aW9uIGZyb20gdGhlIGNvbnRleHQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBsYWNlcyA8PSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IDEgaW4gX3JvdW5kIikKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoc2VsZi5hZGp1c3RlZCgpKzEtcGxhY2VzLCByb3VuZGluZykKLSAgICAgICAgIyBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlIHJlc2NhbGUgYWx0ZXJzIHRoZSBhZGp1c3RlZCBleHBvbmVudDsKLSAgICAgICAgIyBmb3IgZXhhbXBsZSB3aGVuIHJvdW5kaW5nIDk5Ljk3IHRvIDMgc2lnbmlmaWNhbnQgZmlndXJlcy4KLSAgICAgICAgIyBXaGVuIHRoaXMgaGFwcGVucyB3ZSBlbmQgdXAgd2l0aCBhbiBleHRyYSAwIGF0IHRoZSBlbmQgb2YKLSAgICAgICAgIyB0aGUgbnVtYmVyOyBhIHNlY29uZCByZXNjYWxlIGZpeGVzIHRoaXMuCi0gICAgICAgIGlmIGFucy5hZGp1c3RlZCgpICE9IHNlbGYuYWRqdXN0ZWQoKToKLSAgICAgICAgICAgIGFucyA9IGFucy5fcmVzY2FsZShhbnMuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSb3VuZHMgdG8gYSBuZWFyYnkgaW50ZWdlci4KLQotICAgICAgICBJZiBubyByb3VuZGluZyBtb2RlIGlzIHNwZWNpZmllZCwgdGFrZSB0aGUgcm91bmRpbmcgbW9kZSBmcm9tCi0gICAgICAgIHRoZSBjb250ZXh0LiAgVGhpcyBtZXRob2QgcmFpc2VzIHRoZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGZsYWdzCi0gICAgICAgIHdoZW4gYXBwcm9wcmlhdGUuCi0KLSAgICAgICAgU2VlIGFsc286IHRvX2ludGVncmFsX3ZhbHVlLCB3aGljaCBkb2VzIGV4YWN0bHkgdGhlIHNhbWUgYXMKLSAgICAgICAgdGhpcyBtZXRob2QgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCByYWlzZSBJbmV4YWN0IG9yIFJvdW5kZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgMCkKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCi0gICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCB3aXRob3V0IHJhaXNpbmcgaW5leGFjdCwgcm91bmRlZC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKLQotICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQotCi0gICAgZGVmIHNxcnQoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiBzZWxmLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBzZWxmLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICMgZXhwb25lbnQgPSBzZWxmLl9leHAgLy8gMi4gIHNxcnQoLTApID0gLTAKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBzZWxmLl9leHAgLy8gMikKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc3FydCgteCksIHggPiAwJykKLQotICAgICAgICAjIEF0IHRoaXMgcG9pbnQgc2VsZiByZXByZXNlbnRzIGEgcG9zaXRpdmUgbnVtYmVyLiAgTGV0IHAgYmUKLSAgICAgICAgIyB0aGUgZGVzaXJlZCBwcmVjaXNpb24gYW5kIGV4cHJlc3Mgc2VsZiBpbiB0aGUgZm9ybSBjKjEwMCoqZQotICAgICAgICAjIHdpdGggYyBhIHBvc2l0aXZlIHJlYWwgbnVtYmVyIGFuZCBlIGFuIGludGVnZXIsIGMgYW5kIGUKLSAgICAgICAgIyBiZWluZyBjaG9zZW4gc28gdGhhdCAxMDAqKihwLTEpIDw9IGMgPCAxMDAqKnAuICBUaGVuIHRoZQotICAgICAgICAjIChleGFjdCkgc3F1YXJlIHJvb3Qgb2Ygc2VsZiBpcyBzcXJ0KGMpKjEwKiplLCBhbmQgMTAqKihwLTEpCi0gICAgICAgICMgPD0gc3FydChjKSA8IDEwKipwLCBzbyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIERlY2ltYWwgYXQKLSAgICAgICAgIyBwcmVjaXNpb24gcCBpcyBuKjEwKiplIHdoZXJlIG4gPSByb3VuZF9oYWxmX2V2ZW4oc3FydChjKSksCi0gICAgICAgICMgdGhlIGNsb3Nlc3QgaW50ZWdlciB0byBzcXJ0KGMpIHdpdGggdGhlIGV2ZW4gaW50ZWdlciBjaG9zZW4KLSAgICAgICAgIyBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KLSAgICAgICAgIwotICAgICAgICAjIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIGluIGFsbCBjYXNlcywgd2UgdXNlIHRoZQotICAgICAgICAjIGZvbGxvd2luZyB0cmljazogd2UgY29tcHV0ZSB0aGUgc3F1YXJlIHJvb3QgdG8gYW4gZXh0cmEKLSAgICAgICAgIyBwbGFjZSAocHJlY2lzaW9uIHArMSBpbnN0ZWFkIG9mIHByZWNpc2lvbiBwKSwgcm91bmRpbmcgZG93bi4KLSAgICAgICAgIyBUaGVuLCBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QgYW5kIGl0cyBsYXN0IGRpZ2l0IGlzIDAgb3IgNSwKLSAgICAgICAgIyB3ZSBpbmNyZWFzZSB0aGUgbGFzdCBkaWdpdCB0byAxIG9yIDYgcmVzcGVjdGl2ZWx5OyBpZiBpdCdzCi0gICAgICAgICMgZXhhY3Qgd2UgbGVhdmUgdGhlIGxhc3QgZGlnaXQgYWxvbmUuICBOb3cgdGhlIGZpbmFsIHJvdW5kIHRvCi0gICAgICAgICMgcCBwbGFjZXMgKG9yIGZld2VyIGluIHRoZSBjYXNlIG9mIHVuZGVyZmxvdykgd2lsbCByb3VuZAotICAgICAgICAjIGNvcnJlY3RseSBhbmQgcmFpc2UgdGhlIGFwcHJvcHJpYXRlIGZsYWdzLgotCi0gICAgICAgICMgdXNlIGFuIGV4dHJhIGRpZ2l0IG9mIHByZWNpc2lvbgotICAgICAgICBwcmVjID0gY29udGV4dC5wcmVjKzEKLQotICAgICAgICAjIHdyaXRlIGFyZ3VtZW50IGluIHRoZSBmb3JtIGMqMTAwKiplIHdoZXJlIGUgPSBzZWxmLl9leHAvLzIKLSAgICAgICAgIyBpcyB0aGUgJ2lkZWFsJyBleHBvbmVudCwgdG8gYmUgdXNlZCBpZiB0aGUgc3F1YXJlIHJvb3QgaXMKLSAgICAgICAgIyBleGFjdGx5IHJlcHJlc2VudGFibGUuICBsIGlzIHRoZSBudW1iZXIgb2YgJ2RpZ2l0cycgb2YgYyBpbgotICAgICAgICAjIGJhc2UgMTAwLCBzbyB0aGF0IDEwMCoqKGwtMSkgPD0gYyA8IDEwMCoqbC4KLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBlID0gb3AuZXhwID4+IDEKLSAgICAgICAgaWYgb3AuZXhwICYgMToKLSAgICAgICAgICAgIGMgPSBvcC5pbnQgKiAxMAotICAgICAgICAgICAgbCA9IChsZW4oc2VsZi5faW50KSA+PiAxKSArIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGMgPSBvcC5pbnQKLSAgICAgICAgICAgIGwgPSBsZW4oc2VsZi5faW50KSsxID4+IDEKLQotICAgICAgICAjIHJlc2NhbGUgc28gdGhhdCBjIGhhcyBleGFjdGx5IHByZWMgYmFzZSAxMDAgJ2RpZ2l0cycKLSAgICAgICAgc2hpZnQgPSBwcmVjLWwKLSAgICAgICAgaWYgc2hpZnQgPj0gMDoKLSAgICAgICAgICAgIGMgKj0gMTAwKipzaGlmdAotICAgICAgICAgICAgZXhhY3QgPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjLCByZW1haW5kZXIgPSBkaXZtb2QoYywgMTAwKiotc2hpZnQpCi0gICAgICAgICAgICBleGFjdCA9IG5vdCByZW1haW5kZXIKLSAgICAgICAgZSAtPSBzaGlmdAotCi0gICAgICAgICMgZmluZCBuID0gZmxvb3Ioc3FydChjKSkgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCi0gICAgICAgIG4gPSAxMCoqcHJlYwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgcSA9IGMvL24KLSAgICAgICAgICAgIGlmIG4gPD0gcToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuID0gbiArIHEgPj4gMQotICAgICAgICBleGFjdCA9IGV4YWN0IGFuZCBuKm4gPT0gYwotCi0gICAgICAgIGlmIGV4YWN0OgotICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IHJlc2NhbGUgdG8gdXNlIGlkZWFsIGV4cG9uZW50IGUKLSAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICAgICAgIyBhc3NlcnQgbiAlIDEwKipzaGlmdCA9PSAwCi0gICAgICAgICAgICAgICAgbiAvLz0gMTAqKnNoaWZ0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG4gKj0gMTAqKi1zaGlmdAotICAgICAgICAgICAgZSArPSBzaGlmdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyByZXN1bHQgaXMgbm90IGV4YWN0OyBmaXggbGFzdCBkaWdpdCBhcyBkZXNjcmliZWQgYWJvdmUKLSAgICAgICAgICAgIGlmIG4gJSA1ID09IDA6Ci0gICAgICAgICAgICAgICAgbiArPSAxCi0KLSAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIobiksIGUpCi0KLSAgICAgICAgIyByb3VuZCwgYW5kIGZpdCB0byBjdXJyZW50IGNvbnRleHQKLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIG1heChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VyIHZhbHVlLgotCi0gICAgICAgIExpa2UgbWF4KHNlbGYsIG90aGVyKSBleGNlcHQgaWYgb25lIGlzIG5vdCBhIG51bWJlciwgcmV0dXJucwotICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKLSAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAotICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCi0gICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgICAgICBpZiBzbiBvciBvbjoKLSAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLQotICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjID09IDA6Ci0gICAgICAgICAgICAjIElmIGJvdGggb3BlcmFuZHMgYXJlIGZpbml0ZSBhbmQgZXF1YWwgaW4gbnVtZXJpY2FsIHZhbHVlCi0gICAgICAgICAgICAjIHRoZW4gYW4gb3JkZXJpbmcgaXMgYXBwbGllZDoKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGRpZmZlciB0aGVuIG1heCByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlCi0gICAgICAgICAgICAjIHBvc2l0aXZlIHNpZ24gYW5kIG1pbiByZXR1cm5zIHRoZSBvcGVyYW5kIHdpdGggdGhlIG5lZ2F0aXZlIHNpZ24KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgSWYgdGhlIHNpZ25zIGFyZSB0aGUgc2FtZSB0aGVuIHRoZSBleHBvbmVudCBpcyB1c2VkIHRvIHNlbGVjdAotICAgICAgICAgICAgIyB0aGUgcmVzdWx0LiAgVGhpcyBpcyBleGFjdGx5IHRoZSBvcmRlcmluZyB1c2VkIGluIGNvbXBhcmVfdG90YWwuCi0gICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQotCi0gICAgICAgIGlmIGMgPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBvdGhlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZgotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIG1pbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlciB2YWx1ZS4KLQotICAgICAgICBMaWtlIG1pbihzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKLSAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfaXNpbnRlZ2VyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgc2VsZiBpcyBhbiBpbnRlZ2VyIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXN0ID0gc2VsZi5faW50W3NlbGYuX2V4cDpdCi0gICAgICAgIHJldHVybiByZXN0ID09ICcwJypsZW4ocmVzdCkKLQotICAgIGRlZiBfaXNldmVuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgc2VsZiBpcyBldmVuLiAgQXNzdW1lcyBzZWxmIGlzIGFuIGludGVnZXIuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGYuX2V4cCA+IDA6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5faW50Wy0xK3NlbGYuX2V4cF0gaW4gJzAyNDY4JwotCi0gICAgZGVmIGFkanVzdGVkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQotICAgICAgICAjIElmIE5hTiBvciBJbmZpbml0eSwgc2VsZi5fZXhwIGlzIHN0cmluZwotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBjYW5vbmljYWwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCi0KLSAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKLSAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byB0aGUgb3RoZXIgb3BlcmFuZCBudW1lcmljYWxseS4KLQotICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZwotICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQgPSBUcnVlKQotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShvdGhlciwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gb3RoZXIgdXNpbmcgdGhlIGFic3RyYWN0IHJlcHJlc2VudGF0aW9ucy4KLQotICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCi0gICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKLSAgICAgICAgcmVwcmVzZW50YXRpb25zLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgICMgaWYgb25lIGlzIG5lZ2F0aXZlIGFuZCB0aGUgb3RoZXIgaXMgcG9zaXRpdmUsIGl0J3MgZWFzeQotICAgICAgICBpZiBzZWxmLl9zaWduIGFuZCBub3Qgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgIGlmIG5vdCBzZWxmLl9zaWduIGFuZCBvdGhlci5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCi0KLSAgICAgICAgIyBsZXQncyBoYW5kbGUgYm90aCBOYU4gdHlwZXMKLSAgICAgICAgc2VsZl9uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIG90aGVyX25hbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgIGlmIHNlbGZfbmFuIG9yIG90aGVyX25hbjoKLSAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IG90aGVyX25hbjoKLSAgICAgICAgICAgICAgICAjIGNvbXBhcmUgcGF5bG9hZHMgYXMgdGhvdWdoIHRoZXkncmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBzZWxmX2tleSA9IGxlbihzZWxmLl9pbnQpLCBzZWxmLl9pbnQKLSAgICAgICAgICAgICAgICBvdGhlcl9rZXkgPSBsZW4ob3RoZXIuX2ludCksIG90aGVyLl9pbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmX2tleSA8IG90aGVyX2tleToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPiBvdGhlcl9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0KLSAgICAgICAgaWYgc2VsZiA8IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICBpZiBzZWxmID4gb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA8IG90aGVyLl9leHA6Ci0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgaWYgc2VsZi5fZXhwID4gb3RoZXIuX2V4cDoKLSAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICByZXR1cm4gX1plcm8KLQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIGFic3RyYWN0IHJlcHIuLCBpZ25vcmluZyBzaWduLgotCi0gICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIHMgPSBzZWxmLmNvcHlfYWJzKCkKLSAgICAgICAgbyA9IG90aGVyLmNvcHlfYWJzKCkKLSAgICAgICAgcmV0dXJuIHMuY29tcGFyZV90b3RhbChvKQotCi0gICAgZGVmIGNvcHlfYWJzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHNldCB0byAwLiAiIiIKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCi0KLSAgICBkZWYgY29weV9uZWdhdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuIiIiCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmIHdpdGggdGhlIHNpZ24gb2Ygb3RoZXIuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUob3RoZXIuX3NpZ24sIHNlbGYuX2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGV4cChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGUgKiogc2VsZi4iIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBleHAoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgZXhwKC1JbmZpbml0eSkgPSAwCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICMgZXhwKDApID0gMQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfT25lCi0KLSAgICAgICAgIyBleHAoSW5maW5pdHkpID0gSW5maW5pdHkKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgdGhlIHJlc3VsdCBpcyBub3cgZ3VhcmFudGVlZCB0byBiZSBpbmV4YWN0ICh0aGUgdHJ1ZQotICAgICAgICAjIG1hdGhlbWF0aWNhbCByZXN1bHQgaXMgdHJhbnNjZW5kZW50YWwpLiBUaGVyZSdzIG5vIG5lZWQgdG8KLSAgICAgICAgIyByYWlzZSBSb3VuZGVkIGFuZCBJbmV4YWN0IGhlcmUtLS10aGV5J2xsIGFsd2F5cyBiZSByYWlzZWQgYXMKLSAgICAgICAgIyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBfZml4LgotICAgICAgICBwID0gY29udGV4dC5wcmVjCi0gICAgICAgIGFkaiA9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgICAgICMgd2Ugb25seSBuZWVkIHRvIGRvIGFueSBjb21wdXRhdGlvbiBmb3IgcXVpdGUgYSBzbWFsbCByYW5nZQotICAgICAgICAjIG9mIGFkanVzdGVkIGV4cG9uZW50cy0tLWZvciBleGFtcGxlLCAtMjkgPD0gYWRqIDw9IDEwIGZvcgotICAgICAgICAjIHRoZSBkZWZhdWx0IGNvbnRleHQuICBGb3Igc21hbGxlciBleHBvbmVudCB0aGUgcmVzdWx0IGlzCi0gICAgICAgICMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSAxIGF0IHRoZSBnaXZlbiBwcmVjaXNpb24sIHdoaWxlIGZvcgotICAgICAgICAjIGxhcmdlciBleHBvbmVudCB0aGUgcmVzdWx0IGVpdGhlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cy4KLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPiBsZW4oc3RyKChjb250ZXh0LkVtYXgrMSkqMykpOgotICAgICAgICAgICAgIyBvdmVyZmxvdwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRW1heCsxKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqID4gbGVuKHN0cigoLWNvbnRleHQuRXRpbnkoKSsxKSozKSk6Ci0gICAgICAgICAgICAjIHVuZGVyZmxvdyB0byAwCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpCi0gICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAwIGFuZCBhZGogPCAtcDoKLSAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyoocC0xKSArICcxJywgLXApCi0gICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAxIGFuZCBhZGogPCAtcC0xOgotICAgICAgICAgICAgIyBwKzEgZGlnaXRzOyBmaW5hbCByb3VuZCB3aWxsIHJhaXNlIGNvcnJlY3QgZmxhZ3MKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKihwKzEpLCAtcC0xKQotICAgICAgICAjIGdlbmVyYWwgY2FzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgICAgICBpZiBvcC5zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgYyA9IC1jCi0KLSAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IGluY3JlYXNlIHByZWNpc2lvbiBieQotICAgICAgICAgICAgIyAzIGRpZ2l0cyBhdCBhIHRpbWUgdW50aWwgd2UgZ2V0IGFuIHVuYW1iaWd1b3VzbHkKLSAgICAgICAgICAgICMgcm91bmRhYmxlIHJlc3VsdAotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZGV4cChjLCBlLCBwK2V4dHJhKQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cihjb2VmZiksIGV4cCkKLQotICAgICAgICAjIGF0IHRoaXMgc3RhZ2UsIGFucyBzaG91bGQgcm91bmQgY29ycmVjdGx5IHdpdGggKmFueSoKLSAgICAgICAgIyByb3VuZGluZyBtb2RlLCBub3QganVzdCB3aXRoIFJPVU5EX0hBTEZfRVZFTgotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCi0gICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgaXNfZmluaXRlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgotICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwKLQotICAgIGRlZiBpc19pbmZpbml0ZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnRicKLQotICAgIGRlZiBpc19uYW4oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxTmFOIG9yIHNOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgaW4gKCduJywgJ04nKQotCi0gICAgZGVmIGlzX25vcm1hbChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbm9ybWFsIG51bWJlcjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHJldHVybiBjb250ZXh0LkVtaW4gPD0gc2VsZi5hZGp1c3RlZCgpCi0KLSAgICBkZWYgaXNfcW5hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnbicKLQotICAgIGRlZiBpc19zaWduZWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9zaWduID09IDEKLQotICAgIGRlZiBpc19zbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgc2lnbmFsaW5nIE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSAnTicKLQotICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICByZXR1cm4gc2VsZi5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluCi0KLSAgICBkZWYgaXNfemVybyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3BlY2lhbCBhbmQgc2VsZi5faW50ID09ICcwJwotCi0gICAgZGVmIF9sbl9leHBfYm91bmQoc2VsZik6Ci0gICAgICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG4oKS4KLSAgICAgICAgSW4gb3RoZXIgd29yZHMsIGNvbXB1dGUgciBzdWNoIHRoYXQgc2VsZi5sbigpID49IDEwKipyLiAgQXNzdW1lcwotICAgICAgICB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgZm9yIDAuMSA8PSB4IDw9IDEwIHdlIHVzZSB0aGUgaW5lcXVhbGl0aWVzIDEtMS94IDw9IGxuKHgpIDw9IHgtMQotICAgICAgICBhZGogPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKLSAgICAgICAgaWYgYWRqID49IDE6Ci0gICAgICAgICAgICAjIGFyZ3VtZW50ID49IDEwOyB3ZSB1c2UgMjMvMTAgPSAyLjMgYXMgYSBsb3dlciBib3VuZCBmb3IgbG4oMTApCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGoqMjMvLzEwKSkgLSAxCi0gICAgICAgIGlmIGFkaiA8PSAtMjoKLSAgICAgICAgICAgICMgYXJndW1lbnQgPD0gMC4xCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cigoLTEtYWRqKSoyMy8vMTApKSAtIDEKLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKLSAgICAgICAgaWYgYWRqID09IDA6Ci0gICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKLSAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKLSAgICAgICAgICAgIGRlbiA9IHN0cihjKQotICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKQotICAgICAgICAjIGFkaiA9PSAtMSwgMC4xIDw9IHNlbGYgPCAxCi0gICAgICAgIHJldHVybiBlICsgbGVuKHN0cigxMCoqLWUgLSBjKSkgLSAxCi0KLQotICAgIGRlZiBsbihzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxuKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGxuKDAuMCkgPT0gLUluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0KLSAgICAgICAgIyBsbihJbmZpbml0eSkgPSBJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKLQotICAgICAgICAjIGxuKDEuMCkgPT0gMC4wCi0gICAgICAgIGlmIHNlbGYgPT0gX09uZToKLSAgICAgICAgICAgIHJldHVybiBfWmVybwotCi0gICAgICAgICMgbG4obmVnYXRpdmUpIHJhaXNlcyBJbnZhbGlkT3BlcmF0aW9uCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsbiBvZiBhIG5lZ2F0aXZlIHZhbHVlJykKLQotICAgICAgICAjIHJlc3VsdCBpcyBpcnJhdGlvbmFsLCBzbyBuZWNlc3NhcmlseSBpbmV4YWN0Ci0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgIHAgPSBjb250ZXh0LnByZWMKLQotICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMwotICAgICAgICAjIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5IHJvdW5kYWJsZSByZXN1bHQKLSAgICAgICAgcGxhY2VzID0gcCAtIHNlbGYuX2xuX2V4cF9ib3VuZCgpICsgMiAjIGF0IGxlYXN0IHArMyBwbGFjZXMKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNvZWZmID0gX2Rsb2coYywgZSwgcGxhY2VzKQotICAgICAgICAgICAgIyBhc3NlcnQgbGVuKHN0cihhYnMoY29lZmYpKSktcCA+PSAxCi0gICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHBsYWNlcyArPSAzCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBfbG9nMTBfZXhwX2JvdW5kKHNlbGYpOgotICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxvZzEwKCkuCi0gICAgICAgIEluIG90aGVyIHdvcmRzLCBmaW5kIHIgc3VjaCB0aGF0IHNlbGYubG9nMTAoKSA+PSAxMCoqci4KLSAgICAgICAgQXNzdW1lcyB0aGF0IHNlbGYgaXMgZmluaXRlIGFuZCBwb3NpdGl2ZSBhbmQgdGhhdCBzZWxmICE9IDEuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgRm9yIHggPj0gMTAgb3IgeCA8IDAuMSB3ZSBvbmx5IG5lZWQgYSBib3VuZCBvbiB0aGUgaW50ZWdlcgotICAgICAgICAjIHBhcnQgb2YgbG9nMTAoc2VsZiksIGFuZCB0aGlzIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgICAgICMgZXhwb25lbnQgb2YgeC4gIEZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcwotICAgICAgICAjIDEtMS94IDw9IGxvZyh4KSA8PSB4LTEuIElmIHggPiAxIHdlIGhhdmUgfGxvZzEwKHgpfCA+Ci0gICAgICAgICMgKDEtMS94KS8yLjMxID4gMC4gIElmIHggPCAxIHRoZW4gfGxvZzEwKHgpfCA+ICgxLXgpLzIuMzEgPiAwCi0KLSAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCi0gICAgICAgIGlmIGFkaiA+PSAxOgotICAgICAgICAgICAgIyBzZWxmID49IDEwCi0gICAgICAgICAgICByZXR1cm4gbGVuKHN0cihhZGopKS0xCi0gICAgICAgIGlmIGFkaiA8PSAtMjoKLSAgICAgICAgICAgICMgc2VsZiA8IDAuMQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoLTEtYWRqKSktMQotICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICBpZiBhZGogPT0gMDoKLSAgICAgICAgICAgICMgMSA8IHNlbGYgPCAxMAotICAgICAgICAgICAgbnVtID0gc3RyKGMtMTAqKi1lKQotICAgICAgICAgICAgZGVuID0gc3RyKDIzMSpjKQotICAgICAgICAgICAgcmV0dXJuIGxlbihudW0pIC0gbGVuKGRlbikgLSAobnVtIDwgZGVuKSArIDIKLSAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQotICAgICAgICBudW0gPSBzdHIoMTAqKi1lLWMpCi0gICAgICAgIHJldHVybiBsZW4obnVtKSArIGUgLSAobnVtIDwgIjIzMSIpIC0gMQotCi0gICAgZGVmIGxvZzEwKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHNlbGYuIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgbG9nMTAoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgbG9nMTAoMC4wKSA9PSAtSW5maW5pdHkKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKLQotICAgICAgICAjIGxvZzEwKEluZmluaXR5KSA9IEluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotCi0gICAgICAgICMgbG9nMTAobmVnYXRpdmUgb3IgLUluZmluaXR5KSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nMTAgb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCi0KLSAgICAgICAgIyBsb2cxMCgxMCoqbikgPSBuCi0gICAgICAgIGlmIHNlbGYuX2ludFswXSA9PSAnMScgYW5kIHNlbGYuX2ludFsxOl0gPT0gJzAnKihsZW4oc2VsZi5faW50KSAtIDEpOgotICAgICAgICAgICAgIyBhbnN3ZXIgbWF5IG5lZWQgcm91bmRpbmcKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAotICAgICAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCi0KLSAgICAgICAgICAgICMgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiByZXBlYXRlZGx5IGluY3JlYXNlIHByZWNpc2lvbgotICAgICAgICAgICAgIyB1bnRpbCByZXN1bHQgaXMgdW5hbWJpZ3VvdXNseSByb3VuZGFibGUKLSAgICAgICAgICAgIHBsYWNlcyA9IHAtc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkrMgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBjb2VmZiA9IF9kbG9nMTAoYywgZSwgcGxhY2VzKQotICAgICAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGFicyhjb2VmZikpKS1wLTEpKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBwbGFjZXMgKz0gMwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShpbnQoY29lZmY8MCksIHN0cihhYnMoY29lZmYpKSwgLXBsYWNlcykKLQotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQotICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIGxvZ2Ioc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2Ygc2VsZidzIE1TRC4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlCi0gICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHNlbGYgKGFzIHRob3VnaCBpdCB3ZXJlIHRydW5jYXRlZAotICAgICAgICB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQKLSAgICAgICAgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgbG9nYihOYU4pID0gTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgbG9nYigrLy1JbmYpID0gK0luZgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0KLSAgICAgICAgIyBsb2diKDApID0gLUluZiwgRGl2aXNpb25CeVplcm8KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICdsb2diKDApJywgMSkKLQotICAgICAgICAjIG90aGVyd2lzZSwgc2ltcGx5IHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZiwgYXMgYQotICAgICAgICAjIERlY2ltYWwuICBOb3RlIHRoYXQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGZpdCB0aGUgcmVzdWx0Ci0gICAgICAgICMgaW50byB0aGUgY3VycmVudCBjb250ZXh0LgotICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuYWRqdXN0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX2lzbG9naWNhbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIGxvZ2ljYWwgb3BlcmFuZC4KLQotICAgICAgICBGb3IgYmVpbmcgbG9naWNhbCwgaXQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIgd2l0aCBhIHNpZ24gb2YgMCwKLSAgICAgICAgYW4gZXhwb25lbnQgb2YgMCwgYW5kIGEgY29lZmZpY2llbnQgd2hvc2UgZGlnaXRzIG11c3QgYWxsIGJlCi0gICAgICAgIGVpdGhlciAwIG9yIDEuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9zaWduICE9IDAgb3Igc2VsZi5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZm9yIGRpZyBpbiBzZWxmLl9pbnQ6Ci0gICAgICAgICAgICBpZiBkaWcgbm90IGluICcwMSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX2ZpbGxfbG9naWNhbChzZWxmLCBjb250ZXh0LCBvcGEsIG9wYik6Ci0gICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGEpCi0gICAgICAgIGlmIGRpZiA+IDA6Ci0gICAgICAgICAgICBvcGEgPSAnMCcqZGlmICsgb3BhCi0gICAgICAgIGVsaWYgZGlmIDwgMDoKLSAgICAgICAgICAgIG9wYSA9IG9wYVstY29udGV4dC5wcmVjOl0KLSAgICAgICAgZGlmID0gY29udGV4dC5wcmVjIC0gbGVuKG9wYikKLSAgICAgICAgaWYgZGlmID4gMDoKLSAgICAgICAgICAgIG9wYiA9ICcwJypkaWYgKyBvcGIKLSAgICAgICAgZWxpZiBkaWYgPCAwOgotICAgICAgICAgICAgb3BiID0gb3BiWy1jb250ZXh0LnByZWM6XQotICAgICAgICByZXR1cm4gb3BhLCBvcGIKLQotICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAnYW5kJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKSZpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJJbnZlcnQgYWxsIGl0cyBkaWdpdHMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYubG9naWNhbF94b3IoX2RlY19mcm9tX3RyaXBsZSgwLCcxJypjb250ZXh0LnByZWMsMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbG9naWNhbF9vcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAnb3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYwotICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKLQotICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcwotICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpfGludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQotCi0gICAgZGVmIGxvZ2ljYWxfeG9yKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJBcHBsaWVzIGFuICd4b3InIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYwotICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKLQotICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcwotICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpXmludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQotCi0gICAgZGVmIG1heF9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgbWluX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKLSAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAotICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCi0gICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgICAgICBpZiBzbiBvciBvbjoKLSAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLQotICAgICAgICBjID0gc2VsZi5jb3B5X2FicygpLl9jbXAob3RoZXIuY29weV9hYnMoKSkKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGl0c2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzknKmNvbnRleHQucHJlYywgY29udGV4dC5FdG9wKCkpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9GTE9PUikKLSAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCi0gICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKLSAgICAgICAgcmV0dXJuIHNlbGYuX19zdWJfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGl0c2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfQ0VJTElORykKLSAgICAgICAgY29udGV4dC5faWdub3JlX2FsbF9mbGFncygpCi0gICAgICAgIG5ld19zZWxmID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIG5ld19zZWxmICE9IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gbmV3X3NlbGYKLSAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FdGlueSgpLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF90b3dhcmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIHNlbGYsIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlci4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHRvIHNlbGYKLSAgICAgICAgKGV4Y2x1ZGluZyBzZWxmKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyBvdGhlciwKLSAgICAgICAgdW5sZXNzIGJvdGggaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlCi0gICAgICAgIG51bWVyaWNhbGx5IGVxdWFsLCB0aGVuIHRoZSByZXN1bHQgaXMgYSBjb3B5IG9mIHNlbGYgd2l0aCB0aGUKLSAgICAgICAgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2Ygb3RoZXIuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBjb21wYXJpc29uID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjb21wYXJpc29uID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb3B5X3NpZ24ob3RoZXIpCi0KLSAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYubmV4dF9wbHVzKGNvbnRleHQpCi0gICAgICAgIGVsc2U6ICMgY29tcGFyaXNvbiA9PSAxCi0gICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfbWludXMoY29udGV4dCkKLQotICAgICAgICAjIGRlY2lkZSB3aGljaCBmbGFncyB0byByYWlzZSB1c2luZyB2YWx1ZSBvZiBhbnMKLSAgICAgICAgaWYgYW5zLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbmZpbml0ZSByZXN1bHQgZnJvbSBuZXh0X3Rvd2FyZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMuX3NpZ24pCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgZWxpZiBhbnMuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbjoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgIyBpZiBwcmVjaXNpb24gPT0gMSB0aGVuIHdlIGRvbid0IHJhaXNlIENsYW1wZWQgZm9yIGEKLSAgICAgICAgICAgICMgcmVzdWx0IDBFLUV0aW55LgotICAgICAgICAgICAgaWYgbm90IGFuczoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBudW1iZXJfY2xhc3Moc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiBzZWxmLgotCi0gICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgotICAgICAgICAgIHNOYU4KLSAgICAgICAgICBOYU4KLSAgICAgICAgICAtSW5maW5pdHkKLSAgICAgICAgICAtTm9ybWFsCi0gICAgICAgICAgLVN1Ym5vcm1hbAotICAgICAgICAgIC1aZXJvCi0gICAgICAgICAgK1plcm8KLSAgICAgICAgICArU3Vibm9ybWFsCi0gICAgICAgICAgK05vcm1hbAotICAgICAgICAgICtJbmZpbml0eQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICByZXR1cm4gInNOYU4iCi0gICAgICAgIGlmIHNlbGYuaXNfcW5hbigpOgotICAgICAgICAgICAgcmV0dXJuICJOYU4iCi0gICAgICAgIGluZiA9IHNlbGYuX2lzaW5maW5pdHkoKQotICAgICAgICBpZiBpbmYgPT0gMToKLSAgICAgICAgICAgIHJldHVybiAiK0luZmluaXR5IgotICAgICAgICBpZiBpbmYgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gIi1JbmZpbml0eSIKLSAgICAgICAgaWYgc2VsZi5pc196ZXJvKCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAiLVplcm8iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAiK1plcm8iCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgc2VsZi5pc19zdWJub3JtYWwoY29udGV4dD1jb250ZXh0KToKLSAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICAgICAgcmV0dXJuICItU3Vibm9ybWFsIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIitTdWJub3JtYWwiCi0gICAgICAgICMganVzdCBhIG5vcm1hbCwgcmVndWxhciwgYm9yaW5nIG51bWJlciwgOikKLSAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAiLU5vcm1hbCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiK05vcm1hbCIKLQotICAgIGRlZiByYWRpeChzZWxmKToKLSAgICAgICAgIiIiSnVzdCByZXR1cm5zIDEwLCBhcyB0aGlzIGlzIERlY2ltYWwsIDopIiIiCi0gICAgICAgIHJldHVybiBEZWNpbWFsKDEwKQotCi0gICAgZGVmIHJvdGF0ZShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0gICAgICAgIGlmIG5vdCAoLWNvbnRleHQucHJlYyA8PSBpbnQob3RoZXIpIDw9IGNvbnRleHQucHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgZ2V0IHZhbHVlcywgcGFkIGlmIG5lY2Vzc2FyeQotICAgICAgICB0b3JvdCA9IGludChvdGhlcikKLSAgICAgICAgcm90ZGlnID0gc2VsZi5faW50Ci0gICAgICAgIHRvcGFkID0gY29udGV4dC5wcmVjIC0gbGVuKHJvdGRpZykKLSAgICAgICAgaWYgdG9wYWQgPiAwOgotICAgICAgICAgICAgcm90ZGlnID0gJzAnKnRvcGFkICsgcm90ZGlnCi0gICAgICAgIGVsaWYgdG9wYWQgPCAwOgotICAgICAgICAgICAgcm90ZGlnID0gcm90ZGlnWy10b3BhZDpdCi0KLSAgICAgICAgIyBsZXQncyByb3RhdGUhCi0gICAgICAgIHJvdGF0ZWQgPSByb3RkaWdbdG9yb3Q6XSArIHJvdGRpZ1s6dG9yb3RdCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCi0KLSAgICBkZWYgc2NhbGViKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHNlbGYgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLSAgICAgICAgbGltaW5mID0gLTIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQotICAgICAgICBsaW1zdXAgPSAgMiAqIChjb250ZXh0LkVtYXggKyBjb250ZXh0LnByZWMpCi0gICAgICAgIGlmIG5vdCAobGltaW5mIDw9IGludChvdGhlcikgPD0gbGltc3VwKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgZCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHAgKyBpbnQob3RoZXIpKQotICAgICAgICBkID0gZC5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBkCi0KLSAgICBkZWYgc2hpZnQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCi0gICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAotICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCi0gICAgICAgIGlmIHRvcGFkID4gMDoKLSAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZwotICAgICAgICBlbGlmIHRvcGFkIDwgMDoKLSAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQotCi0gICAgICAgICMgbGV0J3Mgc2hpZnQhCi0gICAgICAgIGlmIHRvcm90IDwgMDoKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWdbOnRvcm90XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2hpZnRlZCA9IHJvdGRpZyArICcwJyp0b3JvdAotICAgICAgICAgICAgc2hpZnRlZCA9IHNoaWZ0ZWRbLWNvbnRleHQucHJlYzpdCi0KLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ZWQubHN0cmlwKCcwJykgb3IgJzAnLCBzZWxmLl9leHApCi0KLSAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgKHN0cihzZWxmKSwpKQotCi0gICAgZGVmIF9fY29weV9fKHNlbGYpOgotICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBJJ20gaW1tdXRhYmxlOyB0aGVyZWZvcmUgSSBhbSBteSBvd24gY2xvbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cihzZWxmKSkKLQotICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgaXMgRGVjaW1hbDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIE15IGNvbXBvbmVudHMgYXJlIGFsc28gaW1tdXRhYmxlCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCi0KLSAgICAjIFBFUCAzMTAxIHN1cHBvcnQuICB0aGUgX2xvY2FsZWNvbnYga2V5d29yZCBhcmd1bWVudCBzaG91bGQgYmUKLSAgICAjIGNvbnNpZGVyZWQgcHJpdmF0ZTogaXQncyBwcm92aWRlZCBmb3IgZWFzZSBvZiB0ZXN0aW5nIG9ubHkuCi0gICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlY2lmaWVyLCBjb250ZXh0PU5vbmUsIF9sb2NhbGVjb252PU5vbmUpOgotICAgICAgICAiIiJGb3JtYXQgYSBEZWNpbWFsIGluc3RhbmNlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc3BlY2lmaWVyLgotCi0gICAgICAgIFRoZSBzcGVjaWZpZXIgc2hvdWxkIGJlIGEgc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciwgd2l0aCB0aGUKLSAgICAgICAgZm9ybSBkZXNjcmliZWQgaW4gUEVQIDMxMDEuICBGb3JtYXR0aW5nIHR5cGVzICdlJywgJ0UnLCAnZicsCi0gICAgICAgICdGJywgJ2cnLCAnRycsICduJyBhbmQgJyUnIGFyZSBzdXBwb3J0ZWQuICBJZiB0aGUgZm9ybWF0dGluZwotICAgICAgICB0eXBlIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgICB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzLgotICAgICAgICAiIiIKLQotICAgICAgICAjIE5vdGU6IFBFUCAzMTAxIHNheXMgdGhhdCBpZiB0aGUgdHlwZSBpcyBub3QgcHJlc2VudCB0aGVuCi0gICAgICAgICMgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4KLSAgICAgICAgIyBXZSB0YWtlIHRoZSBsaWJlcnR5IG9mIGlnbm9yaW5nIHRoaXMgcmVxdWlyZW1lbnQgZm9yCi0gICAgICAgICMgRGVjaW1hbC0tLWl0J3MgcHJlc3VtYWJseSB0aGVyZSB0byBtYWtlIHN1cmUgdGhhdAotICAgICAgICAjIGZvcm1hdChmbG9hdCwgJycpIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHN0cihmbG9hdCkuCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBzcGVjID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIoc3BlY2lmaWVyLCBfbG9jYWxlY29udj1fbG9jYWxlY29udikKLQotICAgICAgICAjIHNwZWNpYWwgdmFsdWVzIGRvbid0IGNhcmUgYWJvdXQgdGhlIHR5cGUgb3IgcHJlY2lzaW9uCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBzaWduID0gX2Zvcm1hdF9zaWduKHNlbGYuX3NpZ24sIHNwZWMpCi0gICAgICAgICAgICBib2R5ID0gc3RyKHNlbGYuY29weV9hYnMoKSkKLSAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6Ci0gICAgICAgICAgICAgICAgYm9keSArPSAnJScKLSAgICAgICAgICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGJvZHksIHNwZWMpCi0KLSAgICAgICAgIyBhIHR5cGUgb2YgTm9uZSBkZWZhdWx0cyB0byAnZycgb3IgJ0cnLCBkZXBlbmRpbmcgb24gY29udGV4dAotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaXMgTm9uZToKLSAgICAgICAgICAgIHNwZWNbJ3R5cGUnXSA9IFsnZycsICdHJ11bY29udGV4dC5jYXBpdGFsc10KLQotICAgICAgICAjIGlmIHR5cGUgaXMgJyUnLCBhZGp1c3QgZXhwb25lbnQgb2Ygc2VsZiBhY2NvcmRpbmdseQotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgotICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZi5faW50LCBzZWxmLl9leHArMikKLQotICAgICAgICAjIHJvdW5kIGlmIG5lY2Vzc2FyeSwgdGFraW5nIHJvdW5kaW5nIG1vZGUgZnJvbSB0aGUgY29udGV4dAotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKLSAgICAgICAgcHJlY2lzaW9uID0gc3BlY1sncHJlY2lzaW9uJ10KLSAgICAgICAgaWYgcHJlY2lzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgc3BlY1sndHlwZSddIGluICdlRSc6Ci0gICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbisxLCByb3VuZGluZykKLSAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKC1wcmVjaXNpb24sIHJvdW5kaW5nKQotICAgICAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2dHJyBhbmQgbGVuKHNlbGYuX2ludCkgPiBwcmVjaXNpb246Ci0gICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3JvdW5kKHByZWNpc2lvbiwgcm91bmRpbmcpCi0gICAgICAgICMgc3BlY2lhbCBjYXNlOiB6ZXJvcyB3aXRoIGEgcG9zaXRpdmUgZXhwb25lbnQgY2FuJ3QgYmUKLSAgICAgICAgIyByZXByZXNlbnRlZCBpbiBmaXhlZCBwb2ludDsgcmVzY2FsZSB0aGVtIHRvIDBlMC4KLSAgICAgICAgaWYgbm90IHNlbGYgYW5kIHNlbGYuX2V4cCA+IDAgYW5kIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQotCi0gICAgICAgICMgZmlndXJlIG91dCBwbGFjZW1lbnQgb2YgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCi0gICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICAgICAgaWYgbm90IHNlbGYgYW5kIHByZWNpc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEgLSBwcmVjaXNpb24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0gICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdmRiUnOgotICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCi0gICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRyc6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgotICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEKLQotICAgICAgICAjIGZpbmQgZGlnaXRzIGJlZm9yZSBhbmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCwgYW5kIGdldCBleHBvbmVudAotICAgICAgICBpZiBkb3RwbGFjZSA8IDA6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAotICAgICAgICBlbGlmIGRvdHBsYWNlID4gbGVuKHNlbGYuX2ludCk6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50ICsgJzAnKihkb3RwbGFjZS1sZW4oc2VsZi5faW50KSkKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnRbOmRvdHBsYWNlXSBvciAnMCcKLSAgICAgICAgICAgIGZyYWNwYXJ0ID0gc2VsZi5faW50W2RvdHBsYWNlOl0KLSAgICAgICAgZXhwID0gbGVmdGRpZ2l0cy1kb3RwbGFjZQotCi0gICAgICAgICMgZG9uZSB3aXRoIHRoZSBkZWNpbWFsLXNwZWNpZmljIHN0dWZmOyAgaGFuZCBvdmVyIHRoZSByZXN0Ci0gICAgICAgICMgb2YgdGhlIGZvcm1hdHRpbmcgdG8gdGhlIF9mb3JtYXRfbnVtYmVyIGZ1bmN0aW9uCi0gICAgICAgIHJldHVybiBfZm9ybWF0X251bWJlcihzZWxmLl9zaWduLCBpbnRwYXJ0LCBmcmFjcGFydCwgZXhwLCBzcGVjKQotCi1kZWYgX2RlY19mcm9tX3RyaXBsZShzaWduLCBjb2VmZmljaWVudCwgZXhwb25lbnQsIHNwZWNpYWw9RmFsc2UpOgotICAgICIiIkNyZWF0ZSBhIGRlY2ltYWwgaW5zdGFuY2UgZGlyZWN0bHksIHdpdGhvdXQgYW55IHZhbGlkYXRpb24sCi0gICAgbm9ybWFsaXphdGlvbiAoZS5nLiByZW1vdmFsIG9mIGxlYWRpbmcgemVyb3MpIG9yIGFyZ3VtZW50Ci0gICAgY29udmVyc2lvbi4KLQotICAgIFRoaXMgZnVuY3Rpb24gaXMgZm9yICppbnRlcm5hbCB1c2Ugb25seSouCi0gICAgIiIiCi0KLSAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oRGVjaW1hbCkKLSAgICBzZWxmLl9zaWduID0gc2lnbgotICAgIHNlbGYuX2ludCA9IGNvZWZmaWNpZW50Ci0gICAgc2VsZi5fZXhwID0gZXhwb25lbnQKLSAgICBzZWxmLl9pc19zcGVjaWFsID0gc3BlY2lhbAotCi0gICAgcmV0dXJuIHNlbGYKLQotIyBSZWdpc3RlciBEZWNpbWFsIGFzIGEga2luZCBvZiBOdW1iZXIgKGFuIGFic3RyYWN0IGJhc2UgY2xhc3MpLgotIyBIb3dldmVyLCBkbyBub3QgcmVnaXN0ZXIgaXQgYXMgUmVhbCAoYmVjYXVzZSBEZWNpbWFscyBhcmUgbm90Ci0jIGludGVyb3BlcmFibGUgd2l0aCBmbG9hdHMpLgotX251bWJlcnMuTnVtYmVyLnJlZ2lzdGVyKERlY2ltYWwpCi0KLQotIyMjIyMgQ29udGV4dCBjbGFzcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWNsYXNzIF9Db250ZXh0TWFuYWdlcihvYmplY3QpOgotICAgICIiIkNvbnRleHQgbWFuYWdlciBjbGFzcyB0byBzdXBwb3J0IGxvY2FsY29udGV4dCgpLgotCi0gICAgICBTZXRzIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiBfX2VudGVyX18oKSBhbmQgcmVzdG9yZXMKLSAgICAgIHRoZSBwcmV2aW91cyBkZWNpbWFsIGNvbnRleHQgaW4gX19leGl0X18oKQotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfY29udGV4dCk6Ci0gICAgICAgIHNlbGYubmV3X2NvbnRleHQgPSBuZXdfY29udGV4dC5jb3B5KCkKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX2NvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2V0Y29udGV4dChzZWxmLm5ld19jb250ZXh0KQotICAgICAgICByZXR1cm4gc2VsZi5uZXdfY29udGV4dAotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0LCB2LCB0Yik6Ci0gICAgICAgIHNldGNvbnRleHQoc2VsZi5zYXZlZF9jb250ZXh0KQotCi1jbGFzcyBDb250ZXh0KG9iamVjdCk6Ci0gICAgIiIiQ29udGFpbnMgdGhlIGNvbnRleHQgZm9yIGEgRGVjaW1hbCBpbnN0YW5jZS4KLQotICAgIENvbnRhaW5zOgotICAgIHByZWMgLSBwcmVjaXNpb24gKGZvciB1c2UgaW4gcm91bmRpbmcsIGRpdmlzaW9uLCBzcXVhcmUgcm9vdHMuLikKLSAgICByb3VuZGluZyAtIHJvdW5kaW5nIHR5cGUgKGhvdyB5b3Ugcm91bmQpCi0gICAgdHJhcHMgLSBJZiB0cmFwc1tleGNlcHRpb25dID0gMSwgdGhlbiB0aGUgZXhjZXB0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aGVuIGl0IGlzIGNhdXNlZC4gIE90aGVyd2lzZSwgYSB2YWx1ZSBpcwotICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRlZCBpbi4KLSAgICBmbGFncyAgLSBXaGVuIGFuIGV4Y2VwdGlvbiBpcyBjYXVzZWQsIGZsYWdzW2V4Y2VwdGlvbl0gaXMgc2V0LgotICAgICAgICAgICAgIChXaGV0aGVyIG9yIG5vdCB0aGUgdHJhcF9lbmFibGVyIGlzIHNldCkKLSAgICAgICAgICAgICBTaG91bGQgYmUgcmVzZXQgYnkgdXNlciBvZiBEZWNpbWFsIGluc3RhbmNlLgotICAgIEVtaW4gLSAgIE1pbmltdW0gZXhwb25lbnQKLSAgICBFbWF4IC0gICBNYXhpbXVtIGV4cG9uZW50Ci0gICAgY2FwaXRhbHMgLSAgICAgIElmIDEsIDEqMTBeMSBpcyBwcmludGVkIGFzIDFFKzEuCi0gICAgICAgICAgICAgICAgICAgIElmIDAsIHByaW50ZWQgYXMgMWUxCi0gICAgY2xhbXAgLSAgSWYgMSwgY2hhbmdlIGV4cG9uZW50cyBpZiB0b28gaGlnaCAoRGVmYXVsdCAwKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIF9pZ25vcmVkX2ZsYWdzPU5vbmUpOgotICAgICAgICAjIFNldCBkZWZhdWx0czsgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IGZsYWdzIGFuZCBfaWdub3JlZF9mbGFncywKLSAgICAgICAgIyBpbmhlcml0IGZyb20gRGVmYXVsdENvbnRleHQuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRjID0gRGVmYXVsdENvbnRleHQKLSAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBzZWxmLnByZWMgPSBwcmVjIGlmIHByZWMgaXMgbm90IE5vbmUgZWxzZSBkYy5wcmVjCi0gICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZyBpZiByb3VuZGluZyBpcyBub3QgTm9uZSBlbHNlIGRjLnJvdW5kaW5nCi0gICAgICAgIHNlbGYuRW1pbiA9IEVtaW4gaWYgRW1pbiBpcyBub3QgTm9uZSBlbHNlIGRjLkVtaW4KLSAgICAgICAgc2VsZi5FbWF4ID0gRW1heCBpZiBFbWF4IGlzIG5vdCBOb25lIGVsc2UgZGMuRW1heAotICAgICAgICBzZWxmLmNhcGl0YWxzID0gY2FwaXRhbHMgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmUgZWxzZSBkYy5jYXBpdGFscwotICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAgaWYgY2xhbXAgaXMgbm90IE5vbmUgZWxzZSBkYy5jbGFtcAotCi0gICAgICAgIGlmIF9pZ25vcmVkX2ZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gW10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBfaWdub3JlZF9mbGFncwotCi0gICAgICAgIGlmIHRyYXBzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRyYXBzID0gZGMudHJhcHMuY29weSgpCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHJhcHMsIGRpY3QpOgotICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwotCi0gICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscyArIGZsYWdzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGZsYWdzCi0KLSAgICBkZWYgX3NldF9pbnRlZ2VyX2NoZWNrKHNlbGYsIG5hbWUsIHZhbHVlLCB2bWluLCB2bWF4KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYW4gaW50ZWdlciIgJSBuYW1lKQotICAgICAgICBpZiB2bWluID09ICctaW5mJzoKLSAgICAgICAgICAgIGlmIHZhbHVlID4gdm1heDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslcywgJWRdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCi0gICAgICAgIGVsaWYgdm1heCA9PSAnaW5mJzoKLSAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJXNdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW4gb3IgdmFsdWUgPiB2bWF4OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlZF0uIGdvdCAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIF9zZXRfc2lnbmFsX2RpY3Qoc2VsZiwgbmFtZSwgZCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGQsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGEgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgZm9yIGtleSBpbiBkOgotICAgICAgICAgICAgaWYgbm90IGtleSBpbiBfc2lnbmFsczoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgZm9yIGtleSBpbiBfc2lnbmFsczoKLSAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gZDoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKLSAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCBkKQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAncHJlYyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDEsICdpbmYnKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtaW4nOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAnLWluZicsIDApCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnRW1heCc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsICdpbmYnKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ2NhcGl0YWxzJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKLSAgICAgICAgZWxpZiBuYW1lID09ICdjbGFtcCc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgaWYgbm90IHZhbHVlIGluIF9yb3VuZGluZ19tb2RlczoKLSAgICAgICAgICAgICAgICAjIHJhaXNlIFR5cGVFcnJvciBldmVuIGZvciBzdHJpbmdzIHRvIGhhdmUgY29uc2lzdGVuY3kKLSAgICAgICAgICAgICAgICAjIGFtb25nIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zLgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXM6IGludmFsaWQgcm91bmRpbmcgbW9kZSIgJSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnZmxhZ3MnIG9yIG5hbWUgPT0gJ3RyYXBzJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfc2lnbmFsX2RpY3QobmFtZSwgdmFsdWUpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnX2lnbm9yZWRfZmxhZ3MnOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAotICAgICAgICAgICAgICAgICInZGVjaW1hbC5Db250ZXh0JyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCi0KLSAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBjYW5ub3QgYmUgZGVsZXRlZCIgJSBuYW1lKQotCi0gICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5Ci0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIGZsYWdzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICB0cmFwcyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywKLSAgICAgICAgICAgICAgICAoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgZmxhZ3MsIHRyYXBzKSkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgIiIiU2hvdyB0aGUgY3VycmVudCBjb250ZXh0LiIiIgotICAgICAgICBzID0gW10KLSAgICAgICAgcy5hcHBlbmQoJ0NvbnRleHQocHJlYz0lKHByZWMpZCwgcm91bmRpbmc9JShyb3VuZGluZylzLCAnCi0gICAgICAgICAgICAgICAgICdFbWluPSUoRW1pbilkLCBFbWF4PSUoRW1heClkLCBjYXBpdGFscz0lKGNhcGl0YWxzKWQsICcKLSAgICAgICAgICAgICAgICAgJ2NsYW1wPSUoY2xhbXApZCcKLSAgICAgICAgICAgICAgICAgJSB2YXJzKHNlbGYpKQotICAgICAgICBuYW1lcyA9IFtmLl9fbmFtZV9fIGZvciBmLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICBzLmFwcGVuZCgnZmxhZ3M9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQotICAgICAgICBuYW1lcyA9IFt0Ll9fbmFtZV9fIGZvciB0LCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQotICAgICAgICBzLmFwcGVuZCgndHJhcHM9WycgKyAnLCAnLmpvaW4obmFtZXMpICsgJ10nKQotICAgICAgICByZXR1cm4gJywgJy5qb2luKHMpICsgJyknCi0KLSAgICBkZWYgY2xlYXJfZmxhZ3Moc2VsZik6Ci0gICAgICAgICIiIlJlc2V0IGFsbCBmbGFncyB0byB6ZXJvIiIiCi0gICAgICAgIGZvciBmbGFnIGluIHNlbGYuZmxhZ3M6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzW2ZsYWddID0gMAotCi0gICAgZGVmIGNsZWFyX3RyYXBzKHNlbGYpOgotICAgICAgICAiIiJSZXNldCBhbGwgdHJhcHMgdG8gemVybyIiIgotICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLnRyYXBzOgotICAgICAgICAgICAgc2VsZi50cmFwc1tmbGFnXSA9IDAKLQotICAgIGRlZiBfc2hhbGxvd19jb3B5KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hhbGxvdyBjb3B5IGZyb20gc2VsZi4iIiIKLSAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBzZWxmLmZsYWdzLCBzZWxmLnRyYXBzLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncykKLSAgICAgICAgcmV0dXJuIG5jCi0KLSAgICBkZWYgY29weShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGRlZXAgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCi0gICAgICAgIHJldHVybiBuYwotICAgIF9fY29weV9fID0gY29weQotCi0gICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgotICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCi0KLSAgICAgICAgSWYgdGhlIGZsYWcgaXMgaW4gX2lnbm9yZWRfZmxhZ3MsIHJldHVybnMgdGhlIGRlZmF1bHQgcmVzcG9uc2UuCi0gICAgICAgIE90aGVyd2lzZSwgaXQgc2V0cyB0aGUgZmxhZywgdGhlbiwgaWYgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICAgICAgdHJhcF9lbmFibGVyIGlzIHNldCwgaXQgcmVyYWlzZXMgdGhlIGV4Y2VwdGlvbi4gIE90aGVyd2lzZSwgaXQgcmV0dXJucwotICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhZnRlciBzZXR0aW5nIHRoZSBmbGFnLgotICAgICAgICAiIiIKLSAgICAgICAgZXJyb3IgPSBfY29uZGl0aW9uX21hcC5nZXQoY29uZGl0aW9uLCBjb25kaXRpb24pCi0gICAgICAgIGlmIGVycm9yIGluIHNlbGYuX2lnbm9yZWRfZmxhZ3M6Ci0gICAgICAgICAgICAjIERvbid0IHRvdWNoIHRoZSBmbGFnCi0gICAgICAgICAgICByZXR1cm4gZXJyb3IoKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCi0KLSAgICAgICAgc2VsZi5mbGFnc1tlcnJvcl0gPSAxCi0gICAgICAgIGlmIG5vdCBzZWxmLnRyYXBzW2Vycm9yXToKLSAgICAgICAgICAgICMgVGhlIGVycm9ycyBkZWZpbmUgaG93IHRvIGhhbmRsZSB0aGVtc2VsdmVzLgotICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbigpLmhhbmRsZShzZWxmLCAqYXJncykKLQotICAgICAgICAjIEVycm9ycyBzaG91bGQgb25seSBiZSByaXNrZWQgb24gY29waWVzIG9mIHRoZSBjb250ZXh0Ci0gICAgICAgICMgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCi0gICAgICAgIHJhaXNlIGVycm9yKGV4cGxhbmF0aW9uKQotCi0gICAgZGVmIF9pZ25vcmVfYWxsX2ZsYWdzKHNlbGYpOgotICAgICAgICAiIiJJZ25vcmUgYWxsIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2lnbm9yZV9mbGFncygqX3NpZ25hbHMpCi0KLSAgICBkZWYgX2lnbm9yZV9mbGFncyhzZWxmLCAqZmxhZ3MpOgotICAgICAgICAiIiJJZ25vcmUgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgIyBEbyBub3QgbXV0YXRlLS0gVGhpcyB3YXksIGNvcGllcyBvZiBhIGNvbnRleHQgbGVhdmUgdGhlIG9yaWdpbmFsCi0gICAgICAgICMgYWxvbmUuCi0gICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSAoc2VsZi5faWdub3JlZF9mbGFncyArIGxpc3QoZmxhZ3MpKQotICAgICAgICByZXR1cm4gbGlzdChmbGFncykKLQotICAgIGRlZiBfcmVnYXJkX2ZsYWdzKHNlbGYsICpmbGFncyk6Ci0gICAgICAgICIiIlN0b3AgaWdub3JpbmcgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQiIiIKLSAgICAgICAgaWYgZmxhZ3MgYW5kIGlzaW5zdGFuY2UoZmxhZ3NbMF0sICh0dXBsZSxsaXN0KSk6Ci0gICAgICAgICAgICBmbGFncyA9IGZsYWdzWzBdCi0gICAgICAgIGZvciBmbGFnIGluIGZsYWdzOgotICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncy5yZW1vdmUoZmxhZykKLQotICAgICMgV2UgaW5oZXJpdCBvYmplY3QuX19oYXNoX18sIHNvIHdlIG11c3QgZGVueSB0aGlzIGV4cGxpY2l0bHkKLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBFdGlueShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBFdGlueSAoPSBFbWluIC0gcHJlYyArIDEpIiIiCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5FbWluIC0gc2VsZi5wcmVjICsgMSkKLQotICAgIGRlZiBFdG9wKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIG1heGltdW0gZXhwb25lbnQgKD0gRW1heCAtIHByZWMgKyAxKSIiIgotICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1heCAtIHNlbGYucHJlYyArIDEpCi0KLSAgICBkZWYgX3NldF9yb3VuZGluZyhzZWxmLCB0eXBlKToKLSAgICAgICAgIiIiU2V0cyB0aGUgcm91bmRpbmcgdHlwZS4KLQotICAgICAgICBTZXRzIHRoZSByb3VuZGluZyB0eXBlLCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCAocHJldmlvdXMpCi0gICAgICAgIHJvdW5kaW5nIHR5cGUuICBPZnRlbiB1c2VkIGxpa2U6Ci0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICMgc28geW91IGRvbid0IGNoYW5nZSB0aGUgY2FsbGluZyBjb250ZXh0Ci0gICAgICAgICMgaWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBtaWRkbGUuCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX1VQKQotICAgICAgICB2YWwgPSBzZWxmLl9fc3ViX18ob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKHJvdW5kaW5nKQotCi0gICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZwotICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCi0gICAgICAgIHJldHVybiByb3VuZGluZwotCi0gICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgYnV0IHVzaW5nIHNlbGYgYXMgY29udGV4dC4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQotICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCi0KLSAgICAgICAgZCA9IERlY2ltYWwobnVtLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIGQuX2lzbmFuKCkgYW5kIGxlbihkLl9pbnQpID4gc2VsZi5wcmVjIC0gc2VsZi5jbGFtcDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWFnbm9zdGljIGluZm8gdG9vIGxvbmcgaW4gTmFOIikKLSAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKQotCi0gICAgZGVmIGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZiwgZik6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGEgZmxvYXQgYnV0IHJvdW5kaW5nIHVzaW5nIHNlbGYKLSAgICAgICAgYXMgdGhlIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKLSAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCi0gICAgICAgIERlY2ltYWwoJzMuMTQxNScpCi0gICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKLSAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAgIC4uLgotICAgICAgICBkZWNpbWFsLkluZXhhY3Q6IE5vbmUKLQotICAgICAgICAiIiIKLSAgICAgICAgZCA9IERlY2ltYWwuZnJvbV9mbG9hdChmKSAgICAgICAjIEFuIGV4YWN0IGNvbnZlcnNpb24KLSAgICAgICAgcmV0dXJuIGQuX2ZpeChzZWxmKSAgICAgICAgICAgICAjIEFwcGx5IHRoZSBjb250ZXh0IHJvdW5kaW5nCi0KLSAgICAjIE1ldGhvZHMKLSAgICBkZWYgYWJzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICBJZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUgbWludXMKLSAgICAgICAgb3BlcmF0aW9uIG9uIHRoZSBvcGVyYW5kLiAgT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nCi0gICAgICAgIHRoZSBwbHVzIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKC0xKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLl9fYWJzX18oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGFkZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc3LjAwJykpCi0gICAgICAgIERlY2ltYWwoJzE5LjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMUUrMicpLCBEZWNpbWFsKCcxLjAxRSs0JykpCi0gICAgICAgIERlY2ltYWwoJzEuMDJFKzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCgxLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCg4KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMTMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZCg1LCA1KQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX2FkZF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiBfYXBwbHkoc2VsZiwgYSk6Ci0gICAgICAgIHJldHVybiBzdHIoYS5fZml4KHNlbGYpKQotCi0gICAgZGVmIGNhbm9uaWNhbChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KLQotICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQotICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBEZWNpbWFsKCcyLjUwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCi0gICAgICAgIHJldHVybiBhLmNhbm9uaWNhbCgpCi0KLSAgICBkZWYgY29tcGFyZShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdmFsdWVzIG51bWVyaWNhbGx5LgotCi0gICAgICAgIElmIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgZGlmZmVyLCBhIHZhbHVlIHJlcHJlc2VudGluZyBlYWNoIG9wZXJhbmQKLSAgICAgICAgKCctMScgaWYgdGhlIG9wZXJhbmQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgb3BlcmFuZCBpcyB6ZXJvIG9yCi0gICAgICAgIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4gemVybykgaXMgdXNlZCBpbgotICAgICAgICBwbGFjZSBvZiB0aGF0IG9wZXJhbmQgZm9yIHRoZSBjb21wYXJpc29uIGluc3RlYWQgb2YgdGhlIGFjdHVhbAotICAgICAgICBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBjb21wYXJpc29uIGlzIHRoZW4gZWZmZWN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20KLSAgICAgICAgdGhlIGZpcnN0IGFuZCB0aGVuIHJldHVybmluZyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mIHRoZQotICAgICAgICBzdWJ0cmFjdGlvbjogJy0xJyBpZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIHJlc3VsdCBpcwotICAgICAgICB6ZXJvIG9yIG5lZ2F0aXZlIHplcm8sIG9yICcxJyBpZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCczJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCctMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZSgxLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBjb21wYXJlX3NpZ25hbChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBvZiB0aGUgdHdvIG9wZXJhbmRzIG51bWVyaWNhbGx5LgotCi0gICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCi0gICAgICAgIE5hTnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBxdWlldCBOYU5zLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0Ci0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAwCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ05hTicpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0gICAgICAgIDEKLSAgICAgICAgPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAwCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ3NOYU4nKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAxCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoLTEpLCAyKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlX3NpZ25hbChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgY29tcGFyZV90b3RhbChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLgotCi0gICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKLSAgICAgICAgdmFsdWUuIE5vdGUgdGhhdCBhIHRvdGFsIG9yZGVyaW5nIGlzIGRlZmluZWQgZm9yIGFsbCBwb3NzaWJsZSBhYnN0cmFjdAotICAgICAgICByZXByZXNlbnRhdGlvbnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjczJyksIERlY2ltYWwoJzEyNy45JykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJy0xMjcnKSwgIERlY2ltYWwoJzEyJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMzAnKSwgRGVjaW1hbCgnMTIuMzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCcxMi4zMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZV90b3RhbChiKQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gaWdub3Jpbmcgc2lnbi4KLQotICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWxfbWFnKGIpCi0KLSAgICBkZWYgY29weV9hYnMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicyhEZWNpbWFsKCctMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoLTEpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9hYnMoKQotCi0gICAgZGVmIGNvcHlfZGVjaW1hbChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGRlY2ltYWwgb2JqZWN0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcyLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCctMS4wMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKDEpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoYSkKLQotICAgIGRlZiBjb3B5X25lZ2F0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJzEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJy0xMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoRGVjaW1hbCgnLTEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJzEwMS41JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZSgxKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb3B5X25lZ2F0ZSgpCi0KLSAgICBkZWYgY29weV9zaWduKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb3BpZXMgdGhlIHNlY29uZCBvcGVyYW5kJ3Mgc2lnbiB0byB0aGUgZmlyc3Qgb25lLgotCi0gICAgICAgIEluIGRldGFpbCwgaXQgcmV0dXJucyBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbgotICAgICAgICBlcXVhbCB0byB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQotICAgICAgICBEZWNpbWFsKCcxLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnNy4zMycpKQotICAgICAgICBEZWNpbWFsKCcxLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCctNy4zMycpKQotICAgICAgICBEZWNpbWFsKCctMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIC0yKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoMSksIC0yKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb3B5X3NpZ24oYikKLQotICAgIGRlZiBkaXZpZGUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkRlY2ltYWwgZGl2aXNpb24gaW4gYSBzcGVjaWZpZWQgY29udGV4dC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zMzMzMzMzMzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC42NjY2NjY2NjcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCc1JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMi41JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCcxMicpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnOC4wMCcpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzQuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwMCcpLCBEZWNpbWFsKCcyLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTAwMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyLjQwRSs2JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yMEUrNicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIDUpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKDUpLCA1KQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoNSwgRGVjaW1hbCg1KSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3RydWVkaXZfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZGl2aWRlX2ludChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiRGl2aWRlcyB0d28gbnVtYmVycyBhbmQgcmV0dXJucyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAuMycpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCAzKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoMTApLCAzKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCBEZWNpbWFsKDMpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fZmxvb3JkaXZfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZGl2bW9kKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm4gKGEgLy8gYiwgYSAlIGIpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoMykpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgRGVjaW1hbCg0KSkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZCg4LCA0KQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIDQpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgRGVjaW1hbCg0KSkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX19kaXZtb2RfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgZXhwKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGUgKiogYS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zNjc4Nzk0NDEnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi43MTgyODE4MycpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwLjY5MzE0NzE4MScpKQotICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmV4cCgxMCkKLSAgICAgICAgRGVjaW1hbCgnMjIwMjYuNDY1OCcpCi0gICAgICAgICIiIgotICAgICAgICBhID1fY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmV4cChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgZm1hKHNlbGYsIGEsIGIsIGMpOgotICAgICAgICAiIiJSZXR1cm5zIGEgbXVsdGlwbGllZCBieSBiLCBwbHVzIGMuCi0KLSAgICAgICAgVGhlIGZpcnN0IHR3byBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCB0b2dldGhlciwgdXNpbmcgbXVsdGlwbHksCi0gICAgICAgIHRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCBvZiB0aGF0Ci0gICAgICAgIG11bHRpcGxpY2F0aW9uLCB1c2luZyBhZGQsIGFsbCB3aXRoIG9ubHkgb25lIGZpbmFsIHJvdW5kaW5nLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNScpLCBEZWNpbWFsKCc3JykpCi0gICAgICAgIERlY2ltYWwoJzIyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctNScpLCBEZWNpbWFsKCc3JykpCi0gICAgICAgIERlY2ltYWwoJy04JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnODg4NTY1MjkwJyksIERlY2ltYWwoJzE1NTcuOTY5MzAnKSwgRGVjaW1hbCgnLTg2MDg3Ljc1NzgnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zODQzNTczNkUrMTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCA0KQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgRGVjaW1hbCgzKSwgNCkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIDMsIERlY2ltYWwoNCkpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuZm1hKGIsIGMsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc19jYW5vbmljYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGNhbm9uaWNhbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCi0gICAgICAgIGNhbm9uaWNhbCwgc28gdGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGZvciBhbnkgRGVjaW1hbC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpc19jYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCi0gICAgICAgIHJldHVybiBhLmlzX2Nhbm9uaWNhbCgpCi0KLSAgICBkZWYgaXNfZmluaXRlKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKLSAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCctMC4zJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ0luZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfZmluaXRlKCkKLQotICAgIGRlZiBpc19pbmZpbml0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX2luZmluaXRlKCkKLQotICAgIGRlZiBpc19uYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcU5hTiBvciBzTmFOOwotICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnLXNOYU4nKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbigxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfbmFuKCkKLQotICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgbm9ybWFsIG51bWJlcjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcwLjFFLTk5OScpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBjLmlzX25vcm1hbCgxKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19ub3JtYWwoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGlzX3FuYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnc05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3FuYW4oKQotCi0gICAgZGVmIGlzX3NpZ25lZChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMTInKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCctMCcpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKDgpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKC04KQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19zaWduZWQoKQotCi0gICAgZGVmIGlzX3NuYW4oc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCdzTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19zbmFuKCkKLQotICAgIGRlZiBpc19zdWJub3JtYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIHN1Ym5vcm1hbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbCgxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc3Vibm9ybWFsKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc196ZXJvKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnLTBFKzInKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDApCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3plcm8oKQotCi0gICAgZGVmIGxuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEuMDAwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcyLjcxODI4MTgzJykpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDAnKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcyLjMwMjU4NTA5JykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnK0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMubG4oMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sbihjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9nMTAoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMC4wMDEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTMnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxLjAwMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcwLjMwMTAyOTk5NicpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCc3MCcpKQotICAgICAgICBEZWNpbWFsKCcxLjg0NTA5ODA0JykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnK0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoMCkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMubG9nMTAoMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2cxMChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9nYihzZWxmLCBhKToKLSAgICAgICAgIiIiIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmQncyBNU0QuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQotICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgb3BlcmFuZCAoYXMgdGhvdWdoIHRoZQotICAgICAgICBvcGVyYW5kIHdlcmUgdHJ1bmNhdGVkIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZQotICAgICAgICB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZCB3aXRob3V0IGxpbWl0aW5nIHRoZSByZXN1bHRpbmcgZXhwb25lbnQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyNTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMC4wMycpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEwMCkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2diKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX2FuZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ2FuZCcgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKDExMCksIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoMTEwLCBEZWNpbWFsKDExMDEpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9hbmQoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2ljYWxfaW52ZXJ0KHNlbGYsIGEpOgotICAgICAgICAiIiJJbnZlcnQgYWxsIHRoZSBkaWdpdHMgaW4gdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgVGhlIG9wZXJhbmQgbXVzdCBiZSBhIGxvZ2ljYWwgbnVtYmVyLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTExMTExMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTExMTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxMTExMTExMTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTAxMDEwMTAxJykpCi0gICAgICAgIERlY2ltYWwoJzEwMTAxMDEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydCgxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExMTAwMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9pbnZlcnQoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoJzExMTAnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzExMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgxMTApLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2dpY2FsX29yKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ3hvcicgYmV0d2VlbiBlYWNoIG9wZXJhbmQncyBkaWdpdHMuCi0KLSAgICAgICAgVGhlIG9wZXJhbmRzIG11c3QgYmUgYm90aCBsb2dpY2FsIG51bWJlcnMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCi0gICAgICAgIERlY2ltYWwoJzExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTAxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcigxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoMTEwKSwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTAxMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCBEZWNpbWFsKDExMDEpKQotICAgICAgICBEZWNpbWFsKCcxMDExJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfeG9yKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtYXgoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIm1heCBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtYXhpbXVtLgotCi0gICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKLSAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKLSAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1heGltdW0gKGNsb3NlciB0byBwb3NpdGl2ZQotICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCcxLjAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5tYXgoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG1heF9tYWcoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIC0yKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoMSwgRGVjaW1hbCgtMikpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm1heF9tYWcoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG1pbihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIibWluIGNvbXBhcmVzIHR3byB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybnMgdGhlIG1pbmltdW0uCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KLSAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGFzIHRob3VnaCBieSB0aGUgY29tcGFyZQotICAgICAgICBvcGVyYXRpb24uICBJZiB0aGV5IGFyZSBudW1lcmljYWxseSBlcXVhbCB0aGVuIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAotICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWluaW11bSAoY2xvc2VyIHRvIG5lZ2F0aXZlCi0gICAgICAgIGluZmluaXR5KSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKDEpLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oMSwgRGVjaW1hbCgyOSkpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWluKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW5fbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCczJyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJ05hTicpKQotICAgICAgICBEZWNpbWFsKCctMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZygxLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5taW5fbWFnKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW51cyhzZWxmLCBhKToKLSAgICAgICAgIiIiTWludXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IG1pbnVzIGluIFB5dGhvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBzdWJ0cmFjdDsgdGhlCi0gICAgICAgIG9wZXJhdGlvbiBtaW51cyhhKSBpcyBjYWxjdWxhdGVkIGFzIHN1YnRyYWN0KCcwJywgYSkgd2hlcmUgdGhlICcwJwotICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cyhEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnLTEuMycpKQotICAgICAgICBEZWNpbWFsKCcxLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKDEpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLl9fbmVnX18oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG11bHRpcGx5KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJtdWx0aXBseSBtdWx0aXBsaWVzIHR3byBvcGVyYW5kcy4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIHNwZWNpYWwgdmFsdWUgdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KLSAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIKLSAgICAgICAgKCdsb25nIG11bHRpcGxpY2F0aW9uJyksIHJlc3VsdGluZyBpbiBhIG51bWJlciB3aGljaCBtYXkgYmUgYXMgbG9uZyBhcwotICAgICAgICB0aGUgc3VtIG9mIHRoZSBsZW5ndGhzIG9mIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcxLjIwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMy42MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzIxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnMC44JykpCi0gICAgICAgIERlY2ltYWwoJzAuNzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCctMCcpKQotICAgICAgICBEZWNpbWFsKCctMC4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCc2NTQzMjEnKSwgRGVjaW1hbCgnNjU0MzIxJykpCi0gICAgICAgIERlY2ltYWwoJzQuMjgxMzU5NzFFKzExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCA3KQotICAgICAgICBEZWNpbWFsKCc0OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCg3KSwgNykKLSAgICAgICAgRGVjaW1hbCgnNDknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIERlY2ltYWwoNykpCi0gICAgICAgIERlY2ltYWwoJzQ5JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fbXVsX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIG5leHRfbWludXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X21pbnVzKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJzFFLTEwMDcnKSkKLSAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCi0gICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnOS45OTk5OTk5OUUrOTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9taW51cygxKQotICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X21pbnVzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBuZXh0X3BsdXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy0xRS0xMDA3JykpCi0gICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X3BsdXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQotICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJy05Ljk5OTk5OTk5RSs5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoMSkKLSAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X3BsdXMoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBhLCBpbiBkaXJlY3Rpb24gdG93YXJkcyBiLgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgZnJvbSB0aGUgZmlyc3QKLSAgICAgICAgb3BlcmFuZCAoYnV0IG5vdCB0aGUgZmlyc3Qgb3BlcmFuZCkgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uCi0gICAgICAgIHRvd2FyZHMgdGhlIHNlY29uZCBvcGVyYW5kLCB1bmxlc3MgdGhlIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUKLSAgICAgICAgdmFsdWUuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMUUtMTAwNycpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy0wRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwMicpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzFFLTEwMDcnKSwgRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcwRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSwgRGVjaW1hbCgnLTEwJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMC4wMCcpLCBEZWNpbWFsKCctMC4wMDAwJykpCi0gICAgICAgIERlY2ltYWwoJy0wLjAwJykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgMSkKLSAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoMCksIDEpCi0gICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZCgwLCBEZWNpbWFsKDEpKQotICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm5leHRfdG93YXJkKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBub3JtYWxpemUoc2VsZiwgYSk6Ci0gICAgICAgICIiIm5vcm1hbGl6ZSByZWR1Y2VzIGFuIG9wZXJhbmQgdG8gaXRzIHNpbXBsZXN0IGZvcm0uCi0KLSAgICAgICAgRXNzZW50aWFsbHkgYSBwbHVzIG9wZXJhdGlvbiB3aXRoIGFsbCB0cmFpbGluZyB6ZXJvcyByZW1vdmVkIGZyb20gdGhlCi0gICAgICAgIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnLTIuMCcpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEuMjAwJykpCi0gICAgICAgIERlY2ltYWwoJzEuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0xMjAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzEyMC4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcwLjAwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZSg2KQotICAgICAgICBEZWNpbWFsKCc2JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm5vcm1hbGl6ZShjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBjbGFzcyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgotICAgICAgICAgIC1zTmFOCi0gICAgICAgICAgLU5hTgotICAgICAgICAgIC1JbmZpbml0eQotICAgICAgICAgIC1Ob3JtYWwKLSAgICAgICAgICAtU3Vibm9ybWFsCi0gICAgICAgICAgLVplcm8KLSAgICAgICAgICArWmVybwotICAgICAgICAgICtTdWJub3JtYWwKLSAgICAgICAgICArTm9ybWFsCi0gICAgICAgICAgK0luZmluaXR5Ci0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgICcrSW5maW5pdHknCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcxRS0xMCcpKQotICAgICAgICAnK05vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwLjFFLTk5OScpKQotICAgICAgICAnK1N1Ym5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzAnKSkKLSAgICAgICAgJytaZXJvJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgJy1aZXJvJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAuMUUtOTk5JykpCi0gICAgICAgICctU3Vibm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTFFLTEwJykpCi0gICAgICAgICctTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTIuNTAnKSkKLSAgICAgICAgJy1Ob3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctSW5maW5pdHknKSkKLSAgICAgICAgJy1JbmZpbml0eScKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ05hTicpKQotICAgICAgICAnTmFOJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLU5hTicpKQotICAgICAgICAnTmFOJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnc05hTicpKQotICAgICAgICAnc05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKDEyMykKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5udW1iZXJfY2xhc3MoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHBsdXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIlBsdXMgY29ycmVzcG9uZHMgdG8gdW5hcnkgcHJlZml4IHBsdXMgaW4gUHl0aG9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIGFkZDsgdGhlCi0gICAgICAgIG9wZXJhdGlvbiBwbHVzKGEpIGlzIGNhbGN1bGF0ZWQgYXMgYWRkKCcwJywgYSkgd2hlcmUgdGhlICcwJwotICAgICAgICBoYXMgdGhlIHNhbWUgZXhwb25lbnQgYXMgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJzEuMycpKQotICAgICAgICBEZWNpbWFsKCcxLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoRGVjaW1hbCgnLTEuMycpKQotICAgICAgICBEZWNpbWFsKCctMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKC0xKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX3Bvc19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBwb3dlcihzZWxmLCBhLCBiLCBtb2R1bG89Tm9uZSk6Ci0gICAgICAgICIiIlJhaXNlcyBhIHRvIHRoZSBwb3dlciBvZiBiLCB0byBtb2R1bG8gaWYgZ2l2ZW4uCi0KLSAgICAgICAgV2l0aCB0d28gYXJndW1lbnRzLCBjb21wdXRlIGEqKmIuICBJZiBhIGlzIG5lZ2F0aXZlIHRoZW4gYgotICAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGIgaXMKLSAgICAgICAgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlIGFuZCBjYW4gYmUgZXhwcmVzc2VkIGV4YWN0bHkKLSAgICAgICAgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLgotCi0gICAgICAgIFdpdGggdGhyZWUgYXJndW1lbnRzLCBjb21wdXRlIChhKipiKSAlIG1vZHVsby4gIEZvciB0aGUKLSAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCi0gICAgICAgIGFyZ3VtZW50cyBob2xkOgotCi0gICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAotICAgICAgICAgLSBiIG11c3QgYmUgbm9ubmVnYXRpdmUKLSAgICAgICAgIC0gYXQgbGVhc3Qgb25lIG9mIGEgb3IgYiBtdXN0IGJlIG5vbnplcm8KLSAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgaGF2ZSBhdCBtb3N0ICdwcmVjaXNpb24nIGRpZ2l0cwotCi0gICAgICAgIFRoZSByZXN1bHQgb2YgcG93KGEsIGIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZSByZXN1bHQKLSAgICAgICAgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKGEqKmIpICUgbW9kdWxvIHdpdGgKLSAgICAgICAgdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUgZWZmaWNpZW50bHkuICBJdCBpcwotICAgICAgICBhbHdheXMgZXhhY3QuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzgnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy04JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCctMycpKQotICAgICAgICBEZWNpbWFsKCcwLjEyNScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEuNycpLCBEZWNpbWFsKCc4JykpCi0gICAgICAgIERlY2ltYWwoJzY5Ljc1NzU3NDQnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMwMTAyOTk5NicpKQotICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnLTEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJy0xMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzgnKSwgRGVjaW1hbCgnMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCctMTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyM0UxMjM0NScpLCBEZWNpbWFsKCc2N0UxODknKSwgRGVjaW1hbCgnMTIzNDU2Nzg5JykpCi0gICAgICAgIERlY2ltYWwoJzExNzI5ODMwJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMTcnKSwgRGVjaW1hbCgnMTcyOScpKQotICAgICAgICBEZWNpbWFsKCctMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yMycpLCBEZWNpbWFsKCcwJyksIERlY2ltYWwoJzY1NTM3JykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIDcpCi0gICAgICAgIERlY2ltYWwoJzgyMzU0MycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoRGVjaW1hbCg3KSwgNykKLSAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCBEZWNpbWFsKDcpLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fcG93X18oYiwgbW9kdWxvLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgcXVhbnRpemUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byAnYScgKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mICdiJy4KLQotICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBkZXJpdmVkIGZyb20gdGhhdCBvZiB0aGUgbGVmdC1oYW5kCi0gICAgICAgIG9wZXJhbmQuICBJdCBtYXkgYmUgcm91bmRlZCB1c2luZyB0aGUgY3VycmVudCByb3VuZGluZyBzZXR0aW5nIChpZiB0aGUKLSAgICAgICAgZXhwb25lbnQgaXMgYmVpbmcgaW5jcmVhc2VkKSwgbXVsdGlwbGllZCBieSBhIHBvc2l0aXZlIHBvd2VyIG9mIHRlbiAoaWYKLSAgICAgICAgdGhlIGV4cG9uZW50IGlzIGJlaW5nIGRlY3JlYXNlZCksIG9yIGlzIHVuY2hhbmdlZCAoaWYgdGhlIGV4cG9uZW50IGlzCi0gICAgICAgIGFscmVhZHkgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kKS4KLQotICAgICAgICBVbmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaWYgdGhlIGxlbmd0aCBvZiB0aGUgY29lZmZpY2llbnQgYWZ0ZXIgdGhlCi0gICAgICAgIHF1YW50aXplIG9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIHRoZW4gYW4gSW52YWxpZAotICAgICAgICBvcGVyYXRpb24gY29uZGl0aW9uIGlzIHJhaXNlZC4gIFRoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMKLSAgICAgICAgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCBvZiBhIHF1YW50aXplIGlzIGFsd2F5cwotICAgICAgICBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCi0KLSAgICAgICAgQWxzbyB1bmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgcXVhbnRpemUgd2lsbCBuZXZlciByYWlzZSBVbmRlcmZsb3csIGV2ZW4KLSAgICAgICAgaWYgdGhlIHJlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDAxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMTcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSsxJykpCi0gICAgICAgIERlY2ltYWwoJzBFKzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy1JbmYnKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAuMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxZSs1JykpCi0gICAgICAgIERlY2ltYWwoJy0wRSs1JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcrMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0xJykpCi0gICAgICAgIERlY2ltYWwoJzIxNy4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMCcpKQotICAgICAgICBEZWNpbWFsKCcyMTcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzInKSkKLSAgICAgICAgRGVjaW1hbCgnMkUrMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5xdWFudGl6ZShiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgcmFkaXgoc2VsZik6Ci0gICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KQotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmFkaXgoKQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKLQotICAgIGRlZiByZW1haW5kZXIoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHJlbWFpbmRlciBmcm9tIGludGVnZXIgZGl2aXNpb24uCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgcmVzaWR1ZSBvZiB0aGUgZGl2aWRlbmQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBvZgotICAgICAgICBjYWxjdWxhdGluZyBpbnRlZ2VyIGRpdmlzaW9uIGFzIGRlc2NyaWJlZCBmb3IgZGl2aWRlLWludGVnZXIsIHJvdW5kZWQKLSAgICAgICAgdG8gcHJlY2lzaW9uIGRpZ2l0cyBpZiBuZWNlc3NhcnkuICBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0LCBpZgotICAgICAgICBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuCi0KLSAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgotICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCi0gICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCi0gICAgICAgIERlY2ltYWwoJzAuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoMjIsIDYpCi0gICAgICAgIERlY2ltYWwoJzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKDIyKSwgNikKLSAgICAgICAgRGVjaW1hbCgnNCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCBEZWNpbWFsKDYpKQotICAgICAgICBEZWNpbWFsKCc0JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fbW9kX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHJlbWFpbmRlcl9uZWFyKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRvIGJlICJhIC0gYiAqIG4iLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0Ci0gICAgICAgIHZhbHVlIG9mICJ4IC8gYiIgKGlmIHR3byBpbnRlZ2VycyBhcmUgZXF1YWxseSBuZWFyIHRoZW4gdGhlIGV2ZW4gb25lCi0gICAgICAgIGlzIGNob3NlbikuICBJZiB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZQotICAgICAgICBzaWduIG9mIGEuCi0KLSAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgotICAgICAgICAodGhhdCBpcywgaWYgaW50ZWdlciBkaXZpc2lvbiBvbiB0aGUgc2FtZSB0d28gb3BlcmFuZHMgd291bGQgZmFpbCwgdGhlCi0gICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMC45JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCc2JykpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJy0wLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIDExKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDMpLCAxMSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoMywgRGVjaW1hbCgxMSkpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucmVtYWluZGVyX25lYXIoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHJvdGF0ZShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHJvdGF0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgotCi0gICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgcm90YXRlZCBjb3B5IG9mIHRoZSBkaWdpdHMgaW4KLSAgICAgICAgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMgb2YKLSAgICAgICAgcm90YXRpb24gaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAotICAgICAgICB3aXRoIHRoZSByb3RhdGlvbiBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKLSAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCi0gICAgICAgIERlY2ltYWwoJzQwMDAwMDAwMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKLSAgICAgICAgRGVjaW1hbCgnMTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnLTInKSkKLSAgICAgICAgRGVjaW1hbCgnODkxMjM0NTY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTIzNDU2Nzg5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCi0gICAgICAgIERlY2ltYWwoJzM0NTY3ODkxMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKDEzMzMzMzMsIDEpCi0gICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgxMzMzMzMzKSwgMSkKLSAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCBEZWNpbWFsKDEpKQotICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5yb3RhdGUoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIG5ldmVyIGFmZmVjdGVkIGJ5IGVpdGhlciB0aGUgc2lnbiBvciB0aGUgY29lZmZpY2llbnQgb2YKLSAgICAgICAgZWl0aGVyIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDEnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnSW5mJyksIERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgLTEpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwMCksIC0xKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKDEwMDAwLCBEZWNpbWFsKC0xKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2FtZV9xdWFudHVtKGIpCi0KLSAgICBkZWYgc2NhbGViIChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSBpdHMgZXhwLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnLTInKSkKLSAgICAgICAgRGVjaW1hbCgnMC4wNzUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzcuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnNy41MEUrMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIDQpCi0gICAgICAgIERlY2ltYWwoJzFFKzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKDEpLCA0KQotICAgICAgICBEZWNpbWFsKCcxRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoMSwgRGVjaW1hbCg0KSkKLSAgICAgICAgRGVjaW1hbCgnMUUrNCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zY2FsZWIoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNoaWZ0KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIGEsIGIgdGltZXMuCi0KLSAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgYSBzaGlmdGVkIGNvcHkgb2YgdGhlIGRpZ2l0cwotICAgICAgICBpbiB0aGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcwotICAgICAgICB0byBzaGlmdCBpcyB0YWtlbiBmcm9tIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQsCi0gICAgICAgIHdpdGggdGhlIHNoaWZ0IGJlaW5nIHRvIHRoZSBsZWZ0IGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcwotICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLiAgRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUKLSAgICAgICAgY29lZmZpY2llbnQgYXJlIHplcm9zLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzknKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1NjcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJysyJykpCi0gICAgICAgIERlY2ltYWwoJzM0NTY3ODkwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIDIpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCg4ODg4ODg4OCksIDIpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoODg4ODg4ODgsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzg4ODg4ODgwMCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zaGlmdChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgc3FydChzZWxmLCBhKToKLSAgICAgICAgIiIiU3F1YXJlIHJvb3Qgb2YgYSBub24tbmVnYXRpdmUgbnVtYmVyIHRvIGNvbnRleHQgcHJlY2lzaW9uLgotCi0gICAgICAgIElmIHRoZSByZXN1bHQgbXVzdCBiZSBpbmV4YWN0LCBpdCBpcyByb3VuZGVkIHVzaW5nIHRoZSByb3VuZC1oYWxmLWV2ZW4KLSAgICAgICAgYWxnb3JpdGhtLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMC4zOScpKQotICAgICAgICBEZWNpbWFsKCcwLjYyNDQ5OTgwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMS4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCcyLjY0NTc1MTMxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzMuMTYyMjc3NjYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoMikKLSAgICAgICAgRGVjaW1hbCgnMS40MTQyMTM1NicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucHJlYwotICAgICAgICA5Ci0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5zcXJ0KGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzdWJ0cmFjdChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBvcGVyYW5kcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjA3JykpCi0gICAgICAgIERlY2ltYWwoJzAuMjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcxLjMwJykpCi0gICAgICAgIERlY2ltYWwoJzAuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoJzEuMycpLCBEZWNpbWFsKCcyLjA3JykpCi0gICAgICAgIERlY2ltYWwoJy0wLjc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCA1KQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKDgpLCA1KQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdCg4LCBEZWNpbWFsKDUpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fc3ViX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHRvX2VuZ19zdHJpbmcoc2VsZiwgYSk6Ci0gICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEudG9fZW5nX3N0cmluZyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9fc2NpX3N0cmluZyhzZWxmLCBhKToKLSAgICAgICAgIiIiQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uCi0KLSAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQuCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX3N0cl9fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiB0b19pbnRlZ3JhbF9leGFjdChzZWxmLCBhKToKLSAgICAgICAgIiIiUm91bmRzIHRvIGFuIGludGVnZXIuCi0KLSAgICAgICAgV2hlbiB0aGUgb3BlcmFuZCBoYXMgYSBuZWdhdGl2ZSBleHBvbmVudCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQotICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCi0gICAgICAgIGxlZnQtaGFuZC1vcGVyYW5kLCAxRSswIGFzIHRoZSByaWdodC1oYW5kLW9wZXJhbmQsIGFuZCB0aGUgcHJlY2lzaW9uCi0gICAgICAgIG9mIHRoZSBvcGVyYW5kIGFzIHRoZSBwcmVjaXNpb24gc2V0dGluZzsgSW5leGFjdCBhbmQgUm91bmRlZCBmbGFncwotICAgICAgICBhcmUgYWxsb3dlZCBpbiB0aGlzIG9wZXJhdGlvbi4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlCi0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAwLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMEUrNScpKQotICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzcuODlFKzc3JykpCi0gICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfdmFsdWUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgotCi0gICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKLSAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQotICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgotICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmcsIGV4Y2VwdCB0aGF0IG5vIGZsYWdzIHdpbGwKLSAgICAgICAgYmUgc2V0LiAgVGhlIHJvdW5kaW5nIG1vZGUgaXMgdGFrZW4gZnJvbSB0aGUgY29udGV4dC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDAuMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJzEwMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnLTEwMS41JykpCi0gICAgICAgIERlY2ltYWwoJy0xMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwRSs1JykpCi0gICAgICAgIERlY2ltYWwoJzEuMEUrNicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnNy44OUUrNzcnKSkKLSAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9c2VsZikKLQotICAgICMgdGhlIG1ldGhvZCBuYW1lIGNoYW5nZWQsIGJ1dCB3ZSBwcm92aWRlIGFsc28gdGhlIG9sZCBvbmUsIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgdG9faW50ZWdyYWwgPSB0b19pbnRlZ3JhbF92YWx1ZQotCi1jbGFzcyBfV29ya1JlcChvYmplY3QpOgotICAgIF9fc2xvdHNfXyA9ICgnc2lnbicsJ2ludCcsJ2V4cCcpCi0gICAgIyBzaWduOiAwIG9yIDEKLSAgICAjIGludDogIGludAotICAgICMgZXhwOiAgTm9uZSwgaW50LCBvciBzdHJpbmcKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT1Ob25lKToKLSAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2lnbiA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuaW50ID0gMAotICAgICAgICAgICAgc2VsZi5leHAgPSBOb25lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6Ci0gICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZS5fc2lnbgotICAgICAgICAgICAgc2VsZi5pbnQgPSBpbnQodmFsdWUuX2ludCkKLSAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWUuX2V4cAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpCi0gICAgICAgICAgICBzZWxmLnNpZ24gPSB2YWx1ZVswXQotICAgICAgICAgICAgc2VsZi5pbnQgPSB2YWx1ZVsxXQotICAgICAgICAgICAgc2VsZi5leHAgPSB2YWx1ZVsyXQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiglciwgJXIsICVyKSIgJSAoc2VsZi5zaWduLCBzZWxmLmludCwgc2VsZi5leHApCi0KLSAgICBfX3N0cl9fID0gX19yZXByX18KLQotCi0KLWRlZiBfbm9ybWFsaXplKG9wMSwgb3AyLCBwcmVjID0gMCk6Ci0gICAgIiIiTm9ybWFsaXplcyBvcDEsIG9wMiB0byBoYXZlIHRoZSBzYW1lIGV4cCBhbmQgbGVuZ3RoIG9mIGNvZWZmaWNpZW50LgotCi0gICAgRG9uZSBkdXJpbmcgYWRkaXRpb24uCi0gICAgIiIiCi0gICAgaWYgb3AxLmV4cCA8IG9wMi5leHA6Ci0gICAgICAgIHRtcCA9IG9wMgotICAgICAgICBvdGhlciA9IG9wMQotICAgIGVsc2U6Ci0gICAgICAgIHRtcCA9IG9wMQotICAgICAgICBvdGhlciA9IG9wMgotCi0gICAgIyBMZXQgZXhwID0gbWluKHRtcC5leHAgLSAxLCB0bXAuYWRqdXN0ZWQoKSAtIHByZWNpc2lvbiAtIDEpLgotICAgICMgVGhlbiBhZGRpbmcgMTAqKmV4cCB0byB0bXAgaGFzIHRoZSBzYW1lIGVmZmVjdCAoYWZ0ZXIgcm91bmRpbmcpCi0gICAgIyBhcyBhZGRpbmcgYW55IHBvc2l0aXZlIHF1YW50aXR5IHNtYWxsZXIgdGhhbiAxMCoqZXhwOyBzaW1pbGFybHkKLSAgICAjIGZvciBzdWJ0cmFjdGlvbi4gIFNvIGlmIG90aGVyIGlzIHNtYWxsZXIgdGhhbiAxMCoqZXhwIHdlIHJlcGxhY2UKLSAgICAjIGl0IHdpdGggMTAqKmV4cC4gIFRoaXMgYXZvaWRzIHRtcC5leHAgLSBvdGhlci5leHAgZ2V0dGluZyB0b28gbGFyZ2UuCi0gICAgdG1wX2xlbiA9IGxlbihzdHIodG1wLmludCkpCi0gICAgb3RoZXJfbGVuID0gbGVuKHN0cihvdGhlci5pbnQpKQotICAgIGV4cCA9IHRtcC5leHAgKyBtaW4oLTEsIHRtcF9sZW4gLSBwcmVjIC0gMikKLSAgICBpZiBvdGhlcl9sZW4gKyBvdGhlci5leHAgLSAxIDwgZXhwOgotICAgICAgICBvdGhlci5pbnQgPSAxCi0gICAgICAgIG90aGVyLmV4cCA9IGV4cAotCi0gICAgdG1wLmludCAqPSAxMCAqKiAodG1wLmV4cCAtIG90aGVyLmV4cCkKLSAgICB0bXAuZXhwID0gb3RoZXIuZXhwCi0gICAgcmV0dXJuIG9wMSwgb3AyCi0KLSMjIyMjIEludGVnZXIgYXJpdGhtZXRpYyBmdW5jdGlvbnMgdXNlZCBieSBsbiwgbG9nMTAsIGV4cCBhbmQgX19wb3dfXyAjIyMjIwotCi1fbmJpdHMgPSBpbnQuYml0X2xlbmd0aAotCi1kZWYgX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KG4sIGUpOgotICAgICIiIiBHaXZlbiBpbnRlZ2VycyBuIGFuZCBlLCByZXR1cm4gbiAqIDEwKiplIGlmIGl0J3MgYW4gaW50ZWdlciwgZWxzZSBOb25lLgotCi0gICAgVGhlIGNvbXB1dGF0aW9uIGlzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXB1dGluZyBsYXJnZSBwb3dlcnMgb2YgMTAKLSAgICB1bm5lY2Vzc2FyaWx5LgotCi0gICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzLCA0KQotICAgIDMwMDAwCi0gICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzMDAsIC05OTk5OTk5OTkpICAjIHJldHVybnMgTm9uZQotCi0gICAgIiIiCi0gICAgaWYgbiA9PSAwOgotICAgICAgICByZXR1cm4gMAotICAgIGVsaWYgZSA+PSAwOgotICAgICAgICByZXR1cm4gbiAqIDEwKiplCi0gICAgZWxzZToKLSAgICAgICAgIyB2YWxfbiA9IGxhcmdlc3QgcG93ZXIgb2YgMTAgZGl2aWRpbmcgbi4KLSAgICAgICAgc3RyX24gPSBzdHIoYWJzKG4pKQotICAgICAgICB2YWxfbiA9IGxlbihzdHJfbikgLSBsZW4oc3RyX24ucnN0cmlwKCcwJykpCi0gICAgICAgIHJldHVybiBOb25lIGlmIHZhbF9uIDwgLWUgZWxzZSBuIC8vIDEwKiotZQotCi1kZWYgX3NxcnRfbmVhcmVzdChuLCBhKToKLSAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIG4uICBhIGlzCi0gICAgYW4gaW5pdGlhbCBhcHByb3hpbWF0aW9uIHRvIHRoZSBzcXVhcmUgcm9vdC4gIEFueSBwb3NpdGl2ZSBpbnRlZ2VyCi0gICAgd2lsbCBkbyBmb3IgYSwgYnV0IHRoZSBjbG9zZXIgYSBpcyB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgbiB0aGUKLSAgICBmYXN0ZXIgY29udmVyZ2VuY2Ugd2lsbCBiZS4KLQotICAgICIiIgotICAgIGlmIG4gPD0gMCBvciBhIDw9IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIF9zcXJ0X25lYXJlc3Qgc2hvdWxkIGJlIHBvc2l0aXZlLiIpCi0KLSAgICBiPTAKLSAgICB3aGlsZSBhICE9IGI6Ci0gICAgICAgIGIsIGEgPSBhLCBhLS1uLy9hPj4xCi0gICAgcmV0dXJuIGEKLQotZGVmIF9yc2hpZnRfbmVhcmVzdCh4LCBzaGlmdCk6Ci0gICAgIiIiR2l2ZW4gYW4gaW50ZWdlciB4IGFuZCBhIG5vbm5lZ2F0aXZlIGludGVnZXIgc2hpZnQsIHJldHVybiBjbG9zZXN0Ci0gICAgaW50ZWdlciB0byB4IC8gMioqc2hpZnQ7IHVzZSByb3VuZC10by1ldmVuIGluIGNhc2Ugb2YgYSB0aWUuCi0KLSAgICAiIiIKLSAgICBiLCBxID0gMSA8PCBzaGlmdCwgeCA+PiBzaGlmdAotICAgIHJldHVybiBxICsgKDIqKHggJiAoYi0xKSkgKyAocSYxKSA+IGIpCi0KLWRlZiBfZGl2X25lYXJlc3QoYSwgYik6Ci0gICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIGEvYiwgYSBhbmQgYiBwb3NpdGl2ZSBpbnRlZ2Vyczsgcm91bmRzIHRvIGV2ZW4KLSAgICBpbiB0aGUgY2FzZSBvZiBhIHRpZS4KLQotICAgICIiIgotICAgIHEsIHIgPSBkaXZtb2QoYSwgYikKLSAgICByZXR1cm4gcSArICgyKnIgKyAocSYxKSA+IGIpCi0KLWRlZiBfaWxvZyh4LCBNLCBMID0gOCk6Ci0gICAgIiIiSW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIE0qbG9nKHgvTSksIHdpdGggYWJzb2x1dGUgZXJyb3IgYm91bmRhYmxlCi0gICAgaW4gdGVybXMgb25seSBvZiB4L00uCi0KLSAgICBHaXZlbiBwb3NpdGl2ZSBpbnRlZ2VycyB4IGFuZCBNLCByZXR1cm4gYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvCi0gICAgTSAqIGxvZyh4L00pLiAgRm9yIEwgPSA4IGFuZCAwLjEgPD0geC9NIDw9IDEwIHRoZSBkaWZmZXJlbmNlCi0gICAgYmV0d2VlbiB0aGUgYXBwcm94aW1hdGlvbiBhbmQgdGhlIGV4YWN0IHJlc3VsdCBpcyBhdCBtb3N0IDIyLiAgRm9yCi0gICAgTCA9IDggYW5kIDEuMCA8PSB4L00gPD0gMTAuMCB0aGUgZGlmZmVyZW5jZSBpcyBhdCBtb3N0IDE1LiAgSW4KLSAgICBib3RoIGNhc2VzIHRoZXNlIGFyZSB1cHBlciBib3VuZHMgb24gdGhlIGVycm9yOyBpdCB3aWxsIHVzdWFsbHkgYmUKLSAgICBtdWNoIHNtYWxsZXIuIiIiCi0KLSAgICAjIFRoZSBiYXNpYyBhbGdvcml0aG0gaXMgdGhlIGZvbGxvd2luZzogbGV0IGxvZzFwIGJlIHRoZSBmdW5jdGlvbgotICAgICMgbG9nMXAoeCkgPSBsb2coMSt4KS4gIFRoZW4gbG9nKHgvTSkgPSBsb2cxcCgoeC1NKS9NKS4gIFdlIHVzZQotICAgICMgdGhlIHJlZHVjdGlvbgotICAgICMKLSAgICAjICAgIGxvZzFwKHkpID0gMipsb2cxcCh5LygxK3NxcnQoMSt5KSkpCi0gICAgIwotICAgICMgcmVwZWF0ZWRseSB1bnRpbCB0aGUgYXJndW1lbnQgdG8gbG9nMXAgaXMgc21hbGwgKDwgMioqLUwgaW4KLSAgICAjIGFic29sdXRlIHZhbHVlKS4gIEZvciBzbWFsbCB5IHdlIGNhbiB1c2UgdGhlIFRheWxvciBzZXJpZXMKLSAgICAjIGV4cGFuc2lvbgotICAgICMKLSAgICAjICAgIGxvZzFwKHkpIH4geSAtIHkqKjIvMiArIHkqKjMvMyAtIC4uLiAtICgteSkqKlQvVAotICAgICMKLSAgICAjIHRydW5jYXRpbmcgYXQgVCBzdWNoIHRoYXQgeSoqVCBpcyBzbWFsbCBlbm91Z2guICBUaGUgd2hvbGUKLSAgICAjIGNvbXB1dGF0aW9uIGlzIGNhcnJpZWQgb3V0IGluIGEgZm9ybSBvZiBmaXhlZC1wb2ludCBhcml0aG1ldGljLAotICAgICMgd2l0aCBhIHJlYWwgbnVtYmVyIHogYmVpbmcgcmVwcmVzZW50ZWQgYnkgYW4gaW50ZWdlcgotICAgICMgYXBwcm94aW1hdGlvbiB0byB6Kk0uICBUbyBhdm9pZCBsb3NzIG9mIHByZWNpc2lvbiwgdGhlIHkgYmVsb3cKLSAgICAjIGlzIGFjdHVhbGx5IGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byAyKipSKnkqTSwgd2hlcmUgUiBpcyB0aGUKLSAgICAjIG51bWJlciBvZiByZWR1Y3Rpb25zIHBlcmZvcm1lZCBzbyBmYXIuCi0KLSAgICB5ID0geC1NCi0gICAgIyBhcmd1bWVudCByZWR1Y3Rpb247IFIgPSBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQKLSAgICBSID0gMAotICAgIHdoaWxlIChSIDw9IEwgYW5kIGFicyh5KSA8PCBMLVIgPj0gTSBvcgotICAgICAgICAgICBSID4gTCBhbmQgYWJzKHkpID4+IFItTCA+PSBNKToKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCgoTSp5KSA8PCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgIE0gKyBfc3FydF9uZWFyZXN0KE0qKE0rX3JzaGlmdF9uZWFyZXN0KHksIFIpKSwgTSkpCi0gICAgICAgIFIgKz0gMQotCi0gICAgIyBUYXlsb3Igc2VyaWVzIHdpdGggVCB0ZXJtcwotICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCi0gICAgeXNoaWZ0ID0gX3JzaGlmdF9uZWFyZXN0KHksIFIpCi0gICAgdyA9IF9kaXZfbmVhcmVzdChNLCBUKQotICAgIGZvciBrIGluIHJhbmdlKFQtMSwgMCwgLTEpOgotICAgICAgICB3ID0gX2Rpdl9uZWFyZXN0KE0sIGspIC0gX2Rpdl9uZWFyZXN0KHlzaGlmdCp3LCBNKQotCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdCh3KnksIE0pCi0KLWRlZiBfZGxvZzEwKGMsIGUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgcCA+PSAwLCBjb21wdXRlIGFuIGludGVnZXIKLSAgICBhcHByb3hpbWF0aW9uIHRvIDEwKipwICogbG9nMTAoYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgotCi0gICAgIyBpbmNyZWFzZSBwcmVjaXNpb24gYnkgMjsgY29tcGVuc2F0ZSBmb3IgdGhpcyBieSBkaXZpZGluZwotICAgICMgZmluYWwgcmVzdWx0IGJ5IDEwMAotICAgIHAgKz0gMgotCi0gICAgIyB3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXI6Ci0gICAgIyAgIGYgPj0gMCBhbmQgMSA8PSBkIDw9IDEwLCBvcgotICAgICMgICBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuCi0gICAgIyBUaHVzIGZvciBjKjEwKiplIGNsb3NlIHRvIDEsIGYgPSAwCi0gICAgbCA9IGxlbihzdHIoYykpCi0gICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKLQotICAgIGlmIHAgPiAwOgotICAgICAgICBNID0gMTAqKnAKLSAgICAgICAgayA9IGUrcC1mCi0gICAgICAgIGlmIGsgPj0gMDoKLSAgICAgICAgICAgIGMgKj0gMTAqKmsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGMgPSBfZGl2X25lYXJlc3QoYywgMTAqKi1rKQotCi0gICAgICAgIGxvZ19kID0gX2lsb2coYywgTSkgIyBlcnJvciA8IDUgKyAyMiA9IDI3Ci0gICAgICAgIGxvZ18xMCA9IF9sb2cxMF9kaWdpdHMocCkgIyBlcnJvciA8IDEKLSAgICAgICAgbG9nX2QgPSBfZGl2X25lYXJlc3QobG9nX2QqTSwgbG9nXzEwKQotICAgICAgICBsb2dfdGVucG93ZXIgPSBmKk0gIyBleGFjdAotICAgIGVsc2U6Ci0gICAgICAgIGxvZ19kID0gMCAgIyBlcnJvciA8IDIuMzEKLSAgICAgICAgbG9nX3RlbnBvd2VyID0gX2Rpdl9uZWFyZXN0KGYsIDEwKiotcCkgIyBlcnJvciA8IDAuNQotCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChsb2dfdGVucG93ZXIrbG9nX2QsIDEwMCkKLQotZGVmIF9kbG9nKGMsIGUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIGMsIGUgYW5kIHAgd2l0aCBjID4gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCi0gICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZyhjKjEwKiplKSwgd2l0aCBhbiBhYnNvbHV0ZSBlcnJvciBvZgotICAgIGF0IG1vc3QgMS4gIEFzc3VtZXMgdGhhdCBjKjEwKiplIGlzIG5vdCBleGFjdGx5IDEuIiIiCi0KLSAgICAjIEluY3JlYXNlIHByZWNpc2lvbiBieSAyLiBUaGUgcHJlY2lzaW9uIGluY3JlYXNlIGlzIGNvbXBlbnNhdGVkCi0gICAgIyBmb3IgYXQgdGhlIGVuZCB3aXRoIGEgZGl2aXNpb24gYnkgMTAwLgotICAgIHAgKz0gMgotCi0gICAgIyByZXdyaXRlIGMqMTAqKmUgYXMgZCoxMCoqZiB3aXRoIGVpdGhlciBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwKLSAgICAjIG9yIGYgPD0gMCBhbmQgMC4xIDw9IGQgPD0gMS4gIFRoZW4gd2UgY2FuIGNvbXB1dGUgMTAqKnAgKiBsb2coYyoxMCoqZSkKLSAgICAjIGFzIDEwKipwICogbG9nKGQpICsgMTAqKnAqZiAqIGxvZygxMCkuCi0gICAgbCA9IGxlbihzdHIoYykpCi0gICAgZiA9IGUrbCAtIChlK2wgPj0gMSkKLQotICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIDEwKipwKmxvZyhkKSwgd2l0aCBlcnJvciA8IDI3Ci0gICAgaWYgcCA+IDA6Ci0gICAgICAgIGsgPSBlK3AtZgotICAgICAgICBpZiBrID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwKiprCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykgICMgZXJyb3Igb2YgPD0gMC41IGluIGMKLQotICAgICAgICAjIF9pbG9nIG1hZ25pZmllcyBleGlzdGluZyBlcnJvciBpbiBjIGJ5IGEgZmFjdG9yIG9mIGF0IG1vc3QgMTAKLSAgICAgICAgbG9nX2QgPSBfaWxvZyhjLCAxMCoqcCkgIyBlcnJvciA8IDUgKyAyMiA9IDI3Ci0gICAgZWxzZToKLSAgICAgICAgIyBwIDw9IDA6IGp1c3QgYXBwcm94aW1hdGUgdGhlIHdob2xlIHRoaW5nIGJ5IDA7IGVycm9yIDwgMi4zMQotICAgICAgICBsb2dfZCA9IDAKLQotICAgICMgY29tcHV0ZSBhcHByb3hpbWF0aW9uIHRvIGYqMTAqKnAqbG9nKDEwKSwgd2l0aCBlcnJvciA8IDExLgotICAgIGlmIGY6Ci0gICAgICAgIGV4dHJhID0gbGVuKHN0cihhYnMoZikpKS0xCi0gICAgICAgIGlmIHAgKyBleHRyYSA+PSAwOgotICAgICAgICAgICAgIyBlcnJvciBpbiBmICogX2xvZzEwX2RpZ2l0cyhwK2V4dHJhKSA8IHxmfCAqIDEgPSB8ZnwKLSAgICAgICAgICAgICMgYWZ0ZXIgZGl2aXNpb24sIGVycm9yIDwgfGZ8LzEwKipleHRyYSArIDAuNSA8IDEwICsgMC41IDwgMTEKLSAgICAgICAgICAgIGZfbG9nX3RlbiA9IF9kaXZfbmVhcmVzdChmKl9sb2cxMF9kaWdpdHMocCtleHRyYSksIDEwKipleHRyYSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZfbG9nX3RlbiA9IDAKLSAgICBlbHNlOgotICAgICAgICBmX2xvZ190ZW4gPSAwCi0KLSAgICAjIGVycm9yIGluIHN1bSA8IDExKzI3ID0gMzg7IGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC4zOCArIDAuNSA8IDEKLSAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KGZfbG9nX3RlbiArIGxvZ19kLCAxMDApCi0KLWNsYXNzIF9Mb2cxME1lbW9pemUob2JqZWN0KToKLSAgICAiIiJDbGFzcyB0byBjb21wdXRlLCBzdG9yZSwgYW5kIGFsbG93IHJldHJpZXZhbCBvZiwgZGlnaXRzIG9mIHRoZQotICAgIGNvbnN0YW50IGxvZygxMCkgPSAyLjMwMjU4NS4uLi4gIFRoaXMgY29uc3RhbnQgaXMgbmVlZGVkIGJ5Ci0gICAgRGVjaW1hbC5sbiwgRGVjaW1hbC5sb2cxMCwgRGVjaW1hbC5leHAgYW5kIERlY2ltYWwuX19wb3dfXy4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuZGlnaXRzID0gIjIzMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2IgotCi0gICAgZGVmIGdldGRpZ2l0cyhzZWxmLCBwKToKLSAgICAgICAgIiIiR2l2ZW4gYW4gaW50ZWdlciBwID49IDAsIHJldHVybiBmbG9vcigxMCoqcCkqbG9nKDEwKS4KLQotICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZi5nZXRkaWdpdHMoMykgcmV0dXJucyAyMzAyLgotICAgICAgICAiIiIKLSAgICAgICAgIyBkaWdpdHMgYXJlIHN0b3JlZCBhcyBhIHN0cmluZywgZm9yIHF1aWNrIGNvbnZlcnNpb24gdG8KLSAgICAgICAgIyBpbnRlZ2VyIGluIHRoZSBjYXNlIHRoYXQgd2UndmUgYWxyZWFkeSBjb21wdXRlZCBlbm91Z2gKLSAgICAgICAgIyBkaWdpdHM7IHRoZSBzdG9yZWQgZGlnaXRzIHNob3VsZCBhbHdheXMgYmUgY29ycmVjdAotICAgICAgICAjICh0cnVuY2F0ZWQsIG5vdCByb3VuZGVkIHRvIG5lYXJlc3QpLgotICAgICAgICBpZiBwIDwgMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInAgc2hvdWxkIGJlIG5vbm5lZ2F0aXZlIikKLQotICAgICAgICBpZiBwID49IGxlbihzZWxmLmRpZ2l0cyk6Ci0gICAgICAgICAgICAjIGNvbXB1dGUgcCszLCBwKzYsIHArOSwgLi4uIGRpZ2l0czsgY29udGludWUgdW50aWwgYXQKLSAgICAgICAgICAgICMgbGVhc3Qgb25lIG9mIHRoZSBleHRyYSBkaWdpdHMgaXMgbm9uemVybwotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICMgY29tcHV0ZSBwK2V4dHJhIGRpZ2l0cywgY29ycmVjdCB0byB3aXRoaW4gMXVscAotICAgICAgICAgICAgICAgIE0gPSAxMCoqKHArZXh0cmErMikKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSBzdHIoX2Rpdl9uZWFyZXN0KF9pbG9nKDEwKk0sIE0pLCAxMDApKQotICAgICAgICAgICAgICAgIGlmIGRpZ2l0c1stZXh0cmE6XSAhPSAnMCcqZXh0cmE6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotICAgICAgICAgICAgIyBrZWVwIGFsbCByZWxpYWJsZSBkaWdpdHMgc28gZmFyOyByZW1vdmUgdHJhaWxpbmcgemVyb3MKLSAgICAgICAgICAgICMgYW5kIG5leHQgbm9uemVybyBkaWdpdAotICAgICAgICAgICAgc2VsZi5kaWdpdHMgPSBkaWdpdHMucnN0cmlwKCcwJylbOi0xXQotICAgICAgICByZXR1cm4gaW50KHNlbGYuZGlnaXRzWzpwKzFdKQotCi1fbG9nMTBfZGlnaXRzID0gX0xvZzEwTWVtb2l6ZSgpLmdldGRpZ2l0cwotCi1kZWYgX2lleHAoeCwgTSwgTD04KToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyB4IGFuZCBNLCBNID4gMCwgc3VjaCB0aGF0IHgvTSBpcyBzbWFsbCBpbiBhYnNvbHV0ZQotICAgIHZhbHVlLCBjb21wdXRlIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmV4cCh4L00pLiAgRm9yIDAgPD0KLSAgICB4L00gPD0gMi40LCB0aGUgYWJzb2x1dGUgZXJyb3IgaW4gdGhlIHJlc3VsdCBpcyBib3VuZGVkIGJ5IDYwIChhbmQKLSAgICBpcyB1c3VhbGx5IG11Y2ggc21hbGxlcikuIiIiCi0KLSAgICAjIEFsZ29yaXRobTogdG8gY29tcHV0ZSBleHAoeikgZm9yIGEgcmVhbCBudW1iZXIgeiwgZmlyc3QgZGl2aWRlIHoKLSAgICAjIGJ5IGEgc3VpdGFibGUgcG93ZXIgUiBvZiAyIHNvIHRoYXQgfHovMioqUnwgPCAyKiotTC4gIFRoZW4KLSAgICAjIGNvbXB1dGUgZXhwbTEoei8yKipSKSA9IGV4cCh6LzIqKlIpIC0gMSB1c2luZyB0aGUgdXN1YWwgVGF5bG9yCi0gICAgIyBzZXJpZXMKLSAgICAjCi0gICAgIyAgICAgZXhwbTEoeCkgPSB4ICsgeCoqMi8yISArIHgqKjMvMyEgKyAuLi4KLSAgICAjCi0gICAgIyBOb3cgdXNlIHRoZSBpZGVudGl0eQotICAgICMKLSAgICAjICAgICBleHBtMSgyeCkgPSBleHBtMSh4KSooZXhwbTEoeCkrMikKLSAgICAjCi0gICAgIyBSIHRpbWVzIHRvIGNvbXB1dGUgdGhlIHNlcXVlbmNlIGV4cG0xKHovMioqUiksCi0gICAgIyBleHBtMSh6LzIqKihSLTEpKSwgLi4uICwgZXhwKHovMiksIGV4cCh6KS4KLQotICAgICMgRmluZCBSIHN1Y2ggdGhhdCB4LzIqKlIvTSA8PSAyKiotTAotICAgIFIgPSBfbmJpdHMoKHg8PEwpLy9NKQotCi0gICAgIyBUYXlsb3Igc2VyaWVzLiAgKDIqKkwpKipUID4gTQotICAgIFQgPSAtaW50KC0xMCpsZW4oc3RyKE0pKS8vKDMqTCkpCi0gICAgeSA9IF9kaXZfbmVhcmVzdCh4LCBUKQotICAgIE1zaGlmdCA9IE08PFIKLSAgICBmb3IgaSBpbiByYW5nZShULTEsIDAsIC0xKToKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh4KihNc2hpZnQgKyB5KSwgTXNoaWZ0ICogaSkKLQotICAgICMgRXhwYW5zaW9uCi0gICAgZm9yIGsgaW4gcmFuZ2UoUi0xLCAtMSwgLTEpOgotICAgICAgICBNc2hpZnQgPSBNPDwoaysyKQotICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KHkqKHkrTXNoaWZ0KSwgTXNoaWZ0KQotCi0gICAgcmV0dXJuIE0reQotCi1kZWYgX2RleHAoYywgZSwgcCk6Ci0gICAgIiIiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIHRvIGV4cChjKjEwKiplKSwgd2l0aCBwIGRlY2ltYWwgcGxhY2VzIG9mCi0gICAgcHJlY2lzaW9uLgotCi0gICAgUmV0dXJucyBpbnRlZ2VycyBkLCBmIHN1Y2ggdGhhdDoKLQotICAgICAgMTAqKihwLTEpIDw9IGQgPD0gMTAqKnAsIGFuZAotICAgICAgKGQtMSkqMTAqKmYgPCBleHAoYyoxMCoqZSkgPCAoZCsxKSoxMCoqZgotCi0gICAgSW4gb3RoZXIgd29yZHMsIGQqMTAqKmYgaXMgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSkgd2l0aCBwCi0gICAgZGlnaXRzIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gZCBvZiBhdCBtb3N0IDEuICBUaGlzIGlzCi0gICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGQKLSAgICA9IDEwKioocC0xKSB0aGUgZXJyb3IgY291bGQgYmUgdXAgdG8gMTAgdWxwLiIiIgotCi0gICAgIyB3ZSdsbCBjYWxsIGlleHAgd2l0aCBNID0gMTAqKihwKzIpLCBnaXZpbmcgcCszIGRpZ2l0cyBvZiBwcmVjaXNpb24KLSAgICBwICs9IDIKLQotICAgICMgY29tcHV0ZSBsb2coMTApIHdpdGggZXh0cmEgcHJlY2lzaW9uID0gYWRqdXN0ZWQgZXhwb25lbnQgb2YgYyoxMCoqZQotICAgIGV4dHJhID0gbWF4KDAsIGUgKyBsZW4oc3RyKGMpKSAtIDEpCi0gICAgcSA9IHAgKyBleHRyYQotCi0gICAgIyBjb21wdXRlIHF1b3RpZW50IGMqMTAqKmUvKGxvZygxMCkpID0gYyoxMCoqKGUrcSkvKGxvZygxMCkqMTAqKnEpLAotICAgICMgcm91bmRpbmcgZG93bgotICAgIHNoaWZ0ID0gZStxCi0gICAgaWYgc2hpZnQgPj0gMDoKLSAgICAgICAgY3NoaWZ0ID0gYyoxMCoqc2hpZnQKLSAgICBlbHNlOgotICAgICAgICBjc2hpZnQgPSBjLy8xMCoqLXNoaWZ0Ci0gICAgcXVvdCwgcmVtID0gZGl2bW9kKGNzaGlmdCwgX2xvZzEwX2RpZ2l0cyhxKSkKLQotICAgICMgcmVkdWNlIHJlbWFpbmRlciBiYWNrIHRvIG9yaWdpbmFsIHByZWNpc2lvbgotICAgIHJlbSA9IF9kaXZfbmVhcmVzdChyZW0sIDEwKipleHRyYSkKLQotICAgICMgZXJyb3IgaW4gcmVzdWx0IG9mIF9pZXhwIDwgMTIwOyAgZXJyb3IgYWZ0ZXIgZGl2aXNpb24gPCAwLjYyCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChfaWV4cChyZW0sIDEwKipwKSwgMTAwMCksIHF1b3QgLSBwICsgMwotCi1kZWYgX2Rwb3dlcih4YywgeGUsIHljLCB5ZSwgcCk6Ci0gICAgIiIiR2l2ZW4gaW50ZWdlcnMgeGMsIHhlLCB5YyBhbmQgeWUgcmVwcmVzZW50aW5nIERlY2ltYWxzIHggPSB4YyoxMCoqeGUgYW5kCi0gICAgeSA9IHljKjEwKip5ZSwgY29tcHV0ZSB4Kip5LiAgUmV0dXJucyBhIHBhaXIgb2YgaW50ZWdlcnMgKGMsIGUpIHN1Y2ggdGhhdDoKLQotICAgICAgMTAqKihwLTEpIDw9IGMgPD0gMTAqKnAsIGFuZAotICAgICAgKGMtMSkqMTAqKmUgPCB4Kip5IDwgKGMrMSkqMTAqKmUKLQotICAgIGluIG90aGVyIHdvcmRzLCBjKjEwKiplIGlzIGFuIGFwcHJveGltYXRpb24gdG8geCoqeSB3aXRoIHAgZGlnaXRzCi0gICAgb2YgcHJlY2lzaW9uLCBhbmQgd2l0aCBhbiBlcnJvciBpbiBjIG9mIGF0IG1vc3QgMS4gIChUaGlzIGlzCi0gICAgYWxtb3N0LCBidXQgbm90IHF1aXRlLCB0aGUgc2FtZSBhcyB0aGUgZXJyb3IgYmVpbmcgPCAxdWxwOiB3aGVuIGMKLSAgICA9PSAxMCoqKHAtMSkgd2UgY2FuIG9ubHkgZ3VhcmFudGVlIGVycm9yIDwgMTB1bHAuKQotCi0gICAgV2UgYXNzdW1lIHRoYXQ6IHggaXMgcG9zaXRpdmUgYW5kIG5vdCBlcXVhbCB0byAxLCBhbmQgeSBpcyBub256ZXJvLgotICAgICIiIgotCi0gICAgIyBGaW5kIGIgc3VjaCB0aGF0IDEwKiooYi0xKSA8PSB8eXwgPD0gMTAqKmIKLSAgICBiID0gbGVuKHN0cihhYnMoeWMpKSkgKyB5ZQotCi0gICAgIyBsb2coeCkgPSBseGMqMTAqKigtcC1iLTEpLCB0byBwK2IrMSBwbGFjZXMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICBseGMgPSBfZGxvZyh4YywgeGUsIHArYisxKQotCi0gICAgIyBjb21wdXRlIHByb2R1Y3QgeSpsb2coeCkgPSB5YypseGMqMTAqKigtcC1iLTEreWUpID0gcGMqMTAqKigtcC0xKQotICAgIHNoaWZ0ID0geWUtYgotICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgIHBjID0gbHhjKnljKjEwKipzaGlmdAotICAgIGVsc2U6Ci0gICAgICAgIHBjID0gX2Rpdl9uZWFyZXN0KGx4Yyp5YywgMTAqKi1zaGlmdCkKLQotICAgIGlmIHBjID09IDA6Ci0gICAgICAgICMgd2UgcHJlZmVyIGEgcmVzdWx0IHRoYXQgaXNuJ3QgZXhhY3RseSAxOyB0aGlzIG1ha2VzIGl0Ci0gICAgICAgICMgZWFzaWVyIHRvIGNvbXB1dGUgYSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQgaW4gX19wb3dfXwotICAgICAgICBpZiAoKGxlbihzdHIoeGMpKSArIHhlID49IDEpID09ICh5YyA+IDApKTogIyBpZiB4Kip5ID4gMToKLSAgICAgICAgICAgIGNvZWZmLCBleHAgPSAxMCoqKHAtMSkrMSwgMS1wCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKnAtMSwgLXAKLSAgICBlbHNlOgotICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAocGMsIC0ocCsxKSwgcCsxKQotICAgICAgICBjb2VmZiA9IF9kaXZfbmVhcmVzdChjb2VmZiwgMTApCi0gICAgICAgIGV4cCArPSAxCi0KLSAgICByZXR1cm4gY29lZmYsIGV4cAotCi1kZWYgX2xvZzEwX2xiKGMsIGNvcnJlY3Rpb24gPSB7Ci0gICAgICAgICcxJzogMTAwLCAnMic6IDcwLCAnMyc6IDUzLCAnNCc6IDQwLCAnNSc6IDMxLAotICAgICAgICAnNic6IDIzLCAnNyc6IDE2LCAnOCc6IDEwLCAnOSc6IDV9KToKLSAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIDEwMCpsb2cxMChjKSBmb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGMuIiIiCi0gICAgaWYgYyA8PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgYXJndW1lbnQgdG8gX2xvZzEwX2xiIHNob3VsZCBiZSBub25uZWdhdGl2ZS4iKQotICAgIHN0cl9jID0gc3RyKGMpCi0gICAgcmV0dXJuIDEwMCpsZW4oc3RyX2MpIC0gY29ycmVjdGlvbltzdHJfY1swXV0KLQotIyMjIyMgSGVscGVyIEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWRlZiBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1GYWxzZSwgYWxsb3dfZmxvYXQ9RmFsc2UpOgotICAgICIiIkNvbnZlcnQgb3RoZXIgdG8gRGVjaW1hbC4KLQotICAgIFZlcmlmaWVzIHRoYXQgaXQncyBvayB0byB1c2UgaW4gYW4gaW1wbGljaXQgY29uc3RydWN0aW9uLgotICAgIElmIGFsbG93X2Zsb2F0IGlzIHRydWUsIGFsbG93IGNvbnZlcnNpb24gZnJvbSBmbG9hdDsgIHRoaXMKLSAgICBpcyB1c2VkIGluIHRoZSBjb21wYXJpc29uIG1ldGhvZHMgKF9fZXFfXyBhbmQgZnJpZW5kcykuCi0KLSAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKLSAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwob3RoZXIpCi0gICAgaWYgYWxsb3dfZmxvYXQgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKLQotICAgIGlmIHJhaXNlaXQ6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBvdGhlcikKLSAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQotZGVmIF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1GYWxzZSk6Ci0gICAgIiIiR2l2ZW4gYSBEZWNpbWFsIGluc3RhbmNlIHNlbGYgYW5kIGEgUHl0aG9uIG9iamVjdCBvdGhlciwgcmV0dXJuCi0gICAgYSBwYWlyIChzLCBvKSBvZiBEZWNpbWFsIGluc3RhbmNlcyBzdWNoIHRoYXQgInMgb3AgbyIgaXMKLSAgICBlcXVpdmFsZW50IHRvICJzZWxmIG9wIG90aGVyIiBmb3IgYW55IG9mIHRoZSA2IGNvbXBhcmlzb24KLSAgICBvcGVyYXRvcnMgIm9wIi4KLQotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERlY2ltYWwpOgotICAgICAgICByZXR1cm4gc2VsZiwgb3RoZXIKLQotICAgICMgQ29tcGFyaXNvbiB3aXRoIGEgUmF0aW9uYWwgaW5zdGFuY2UgKGFsc28gaW5jbHVkZXMgaW50ZWdlcnMpOgotICAgICMgc2VsZiBvcCBuL2QgPD0+IHNlbGYqZCBvcCBuIChmb3IgbiBhbmQgZCBpbnRlZ2VycywgZCBwb3NpdGl2ZSkuCi0gICAgIyBBIE5hTiBvciBpbmZpbml0eSBjYW4gYmUgbGVmdCB1bmNoYW5nZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlCi0gICAgIyBjb21wYXJpc29uIHJlc3VsdC4KLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5SYXRpb25hbCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnQoc2VsZi5faW50KSAqIG90aGVyLmRlbm9taW5hdG9yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCkKLSAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwob3RoZXIubnVtZXJhdG9yKQotCi0gICAgIyBDb21wYXJpc29ucyB3aXRoIGZsb2F0IGFuZCBjb21wbGV4IHR5cGVzLiAgPT0gYW5kICE9IGNvbXBhcmlzb25zCi0gICAgIyB3aXRoIGNvbXBsZXggbnVtYmVycyBzaG91bGQgc3VjY2VlZCwgcmV0dXJuaW5nIGVpdGhlciBUcnVlIG9yIEZhbHNlCi0gICAgIyBhcyBhcHByb3ByaWF0ZS4gIE90aGVyIGNvbXBhcmlzb25zIHJldHVybiBOb3RJbXBsZW1lbnRlZC4KLSAgICBpZiBlcXVhbGl0eV9vcCBhbmQgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuQ29tcGxleCkgYW5kIG90aGVyLmltYWcgPT0gMDoKLSAgICAgICAgb3RoZXIgPSBvdGhlci5yZWFsCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgotICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGlmIGVxdWFsaXR5X29wOgotICAgICAgICAgICAgY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlIGVuYWJsZWQiKQotICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQotICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZCwgTm90SW1wbGVtZW50ZWQKLQotCi0jIyMjIyBTZXR1cCBTcGVjaWZpYyBDb250ZXh0cyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIFRoZSBkZWZhdWx0IGNvbnRleHQgcHJvdG90eXBlIHVzZWQgYnkgQ29udGV4dCgpCi0jIElzIG11dGFibGUsIHNvIHRoYXQgbmV3IGNvbnRleHRzIGNhbiBoYXZlIGRpZmZlcmVudCBkZWZhdWx0IHZhbHVlcwotCi1EZWZhdWx0Q29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbl0sCi0gICAgICAgIGZsYWdzPVtdLAotICAgICAgICBFbWF4PTk5OTk5OSwKLSAgICAgICAgRW1pbj0tOTk5OTk5LAotICAgICAgICBjYXBpdGFscz0xLAotICAgICAgICBjbGFtcD0wCi0pCi0KLSMgUHJlLW1hZGUgYWx0ZXJuYXRlIGNvbnRleHRzIG9mZmVyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24KLSMgRG9uJ3QgY2hhbmdlIHRoZXNlOyB0aGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3QgdGhlc2UKLSMgY29udGV4dHMgYW5kIGJlIGFibGUgdG8gcmVwcm9kdWNlIHJlc3VsdHMgZnJvbSBvdGhlciBpbXBsZW1lbnRhdGlvbnMKLSMgb2YgdGhlIHNwZWMuCi0KLUJhc2ljQ29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9VUCwKLSAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgQ2xhbXBlZCwgVW5kZXJmbG93XSwKLSAgICAgICAgZmxhZ3M9W10sCi0pCi0KLUV4dGVuZGVkQ29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAotICAgICAgICB0cmFwcz1bXSwKLSAgICAgICAgZmxhZ3M9W10sCi0pCi0KLQotIyMjIyMgY3J1ZCBmb3IgcGFyc2luZyBzdHJpbmdzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBmb3IgcGFyc2luZyBudW1lcmljIHN0cmluZ3MuICBBZGRpdGlvbmFsCi0jIGNvbW1lbnRzOgotIwotIyAxLiBVbmNvbW1lbnQgdGhlIHR3byAnXHMqJyBsaW5lcyB0byBhbGxvdyBsZWFkaW5nIGFuZC9vciB0cmFpbGluZwotIyB3aGl0ZXNwYWNlLiAgQnV0IG5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBkaXNhbGxvd3Mgd2hpdGVzcGFjZSBpbgotIyBhIG51bWVyaWMgc3RyaW5nLgotIwotIyAyLiBGb3IgZmluaXRlIG51bWJlcnMgKG5vdCBpbmZpbml0aWVzIGFuZCBOYU5zKSB0aGUgYm9keSBvZiB0aGUKLSMgbnVtYmVyIGJldHdlZW4gdGhlIG9wdGlvbmFsIHNpZ24gYW5kIHRoZSBvcHRpb25hbCBleHBvbmVudCBtdXN0IGhhdmUKLSMgYXQgbGVhc3Qgb25lIGRlY2ltYWwgZGlnaXQsIHBvc3NpYmx5IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAgVGhlCi0jIGxvb2thaGVhZCBleHByZXNzaW9uICcoPz1cZHxcLlxkKScgY2hlY2tzIHRoaXMuCi0KLWltcG9ydCByZQotX3BhcnNlciA9IHJlLmNvbXBpbGUociIiIiAgICAgICAgIyBBIG51bWVyaWMgc3RyaW5nIGNvbnNpc3RzIG9mOgotIyAgICBccyoKLSAgICAoP1A8c2lnbj5bLStdKT8gICAgICAgICAgICAgICMgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgZWl0aGVyLi4uCi0gICAgKAotICAgICAgICAoPz1cZHxcLlxkKSAgICAgICAgICAgICAgIyAuLi5hIG51bWJlciAod2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQpCi0gICAgICAgICg/UDxpbnQ+XGQqKSAgICAgICAgICAgICAjIGhhdmluZyBhIChwb3NzaWJseSBlbXB0eSkgaW50ZWdlciBwYXJ0Ci0gICAgICAgIChcLig/UDxmcmFjPlxkKikpPyAgICAgICAjIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGZyYWN0aW9uYWwgcGFydAotICAgICAgICAoRSg/UDxleHA+Wy0rXT9cZCspKT8gICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBleHBvbmVudCwgb3IuLi4KLSAgICB8Ci0gICAgICAgIEluZihpbml0eSk/ICAgICAgICAgICAgICAjIC4uLmFuIGluZmluaXR5LCBvci4uLgotICAgIHwKLSAgICAgICAgKD9QPHNpZ25hbD5zKT8gICAgICAgICAgICMgLi4uYW4gKG9wdGlvbmFsbHkgc2lnbmFsaW5nKQotICAgICAgICBOYU4gICAgICAgICAgICAgICAgICAgICAgIyBOYU4KLSAgICAgICAgKD9QPGRpYWc+XGQqKSAgICAgICAgICAgICMgd2l0aCAocG9zc2libHkgZW1wdHkpIGRpYWdub3N0aWMgaW5mby4KLSAgICApCi0jICAgIFxzKgotICAgIFxaCi0iIiIsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKS5tYXRjaAotCi1fYWxsX3plcm9zID0gcmUuY29tcGlsZSgnMCokJykubWF0Y2gKLV9leGFjdF9oYWxmID0gcmUuY29tcGlsZSgnNTAqJCcpLm1hdGNoCi0KLSMjIyMjIFBFUDMxMDEgc3VwcG9ydCBmdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBoYXZlIGxpdHRsZSB0byBkbyB3aXRoIHRoZSBEZWNpbWFsCi0jIGNsYXNzLCBhbmQgY291bGQgcG90ZW50aWFsbHkgYmUgcmV1c2VkIG9yIGFkYXB0ZWQgZm9yIG90aGVyIHB1cmUKLSMgUHl0aG9uIG51bWVyaWMgY2xhc3NlcyB0aGF0IHdhbnQgdG8gaW1wbGVtZW50IF9fZm9ybWF0X18KLSMKLSMgQSBmb3JtYXQgc3BlY2lmaWVyIGZvciBEZWNpbWFsIGxvb2tzIGxpa2U6Ci0jCi0jICAgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVttaW5pbXVtd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCi0KLV9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4ID0gcmUuY29tcGlsZShyIiIiXEEKLSg/OgotICAgKD9QPGZpbGw+Lik/Ci0gICAoP1A8YWxpZ24+Wzw+PV5dKQotKT8KLSg/UDxzaWduPlstKyBdKT8KLSg/UDxhbHQ+XCMpPwotKD9QPHplcm9wYWQ+MCk/Ci0oP1A8bWluaW11bXdpZHRoPig/ITApXGQrKT8KLSg/UDx0aG91c2FuZHNfc2VwPiwpPwotKD86XC4oP1A8cHJlY2lzaW9uPjB8KD8hMClcZCspKT8KLSg/UDx0eXBlPltlRWZGZ0duJV0pPwotXFoKLSIiIiwgcmUuVkVSQk9TRXxyZS5ET1RBTEwpCi0KLWRlbCByZQotCi0jIFRoZSBsb2NhbGUgbW9kdWxlIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgJ24nIGZvcm1hdCBzcGVjaWZpZXIuICBUaGUKLSMgcmVzdCBvZiB0aGUgUEVQIDMxMDEgY29kZSBmdW5jdGlvbnMgcXVpdGUgaGFwcGlseSB3aXRob3V0IGl0LCBzbyB3ZQotIyBkb24ndCBjYXJlIHRvbyBtdWNoIGlmIGxvY2FsZSBpc24ndCBwcmVzZW50LgotdHJ5OgotICAgIGltcG9ydCBsb2NhbGUgYXMgX2xvY2FsZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotZGVmIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKGZvcm1hdF9zcGVjLCBfbG9jYWxlY29udj1Ob25lKToKLSAgICAiIiJQYXJzZSBhbmQgdmFsaWRhdGUgYSBmb3JtYXQgc3BlY2lmaWVyLgotCi0gICAgVHVybnMgYSBzdGFuZGFyZCBudW1lcmljIGZvcm1hdCBzcGVjaWZpZXIgaW50byBhIGRpY3QsIHdpdGggdGhlCi0gICAgZm9sbG93aW5nIGVudHJpZXM6Ci0KLSAgICAgIGZpbGw6IGZpbGwgY2hhcmFjdGVyIHRvIHBhZCBmaWVsZCB0byBtaW5pbXVtIHdpZHRoCi0gICAgICBhbGlnbjogYWxpZ25tZW50IHR5cGUsIGVpdGhlciAnPCcsICc+JywgJz0nIG9yICdeJwotICAgICAgc2lnbjogZWl0aGVyICcrJywgJy0nIG9yICcgJwotICAgICAgbWluaW11bXdpZHRoOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBtaW5pbXVtIHdpZHRoCi0gICAgICB6ZXJvcGFkOiBib29sZWFuLCBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcGFkIHdpdGggemVyb3MKLSAgICAgIHRob3VzYW5kc19zZXA6IHN0cmluZyB0byB1c2UgYXMgdGhvdXNhbmRzIHNlcGFyYXRvciwgb3IgJycKLSAgICAgIGdyb3VwaW5nOiBncm91cGluZyBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvcnMsIGluIGZvcm1hdAotICAgICAgICB1c2VkIGJ5IGxvY2FsZWNvbnYKLSAgICAgIGRlY2ltYWxfcG9pbnQ6IHN0cmluZyB0byB1c2UgZm9yIGRlY2ltYWwgcG9pbnQKLSAgICAgIHByZWNpc2lvbjogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgcHJlY2lzaW9uLCBvciBOb25lCi0gICAgICB0eXBlOiBvbmUgb2YgdGhlIGNoYXJhY3RlcnMgJ2VFZkZnRyUnLCBvciBOb25lCi0KLSAgICAiIiIKLSAgICBtID0gX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJfcmVnZXgubWF0Y2goZm9ybWF0X3NwZWMpCi0gICAgaWYgbSBpcyBOb25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLQotICAgICMgZ2V0IHRoZSBkaWN0aW9uYXJ5Ci0gICAgZm9ybWF0X2RpY3QgPSBtLmdyb3VwZGljdCgpCi0KLSAgICAjIHplcm9wYWQ7IGRlZmF1bHRzIGZvciBmaWxsIGFuZCBhbGlnbm1lbnQuICBJZiB6ZXJvIHBhZGRpbmcKLSAgICAjIGlzIHJlcXVlc3RlZCwgdGhlIGZpbGwgYW5kIGFsaWduIGZpZWxkcyBzaG91bGQgYmUgYWJzZW50LgotICAgIGZpbGwgPSBmb3JtYXRfZGljdFsnZmlsbCddCi0gICAgYWxpZ24gPSBmb3JtYXRfZGljdFsnYWxpZ24nXQotICAgIGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gPSAoZm9ybWF0X2RpY3RbJ3plcm9wYWQnXSBpcyBub3QgTm9uZSkKLSAgICBpZiBmb3JtYXRfZGljdFsnemVyb3BhZCddOgotICAgICAgICBpZiBmaWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmlsbCBjaGFyYWN0ZXIgY29uZmxpY3RzIHdpdGggJzAnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICAgICAgaWYgYWxpZ24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBbGlnbm1lbnQgY29uZmxpY3RzIHdpdGggJzAnIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICBmb3JtYXRfZGljdFsnZmlsbCddID0gZmlsbCBvciAnICcKLSAgICAjIFBFUCAzMTAxIG9yaWdpbmFsbHkgc3BlY2lmaWVkIHRoYXQgdGhlIGRlZmF1bHQgYWxpZ25tZW50IHNob3VsZAotICAgICMgYmUgbGVmdDsgIGl0IHdhcyBsYXRlciBhZ3JlZWQgdGhhdCByaWdodC1hbGlnbmVkIG1ha2VzIG1vcmUgc2Vuc2UKLSAgICAjIGZvciBudW1lcmljIHR5cGVzLiAgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2ODU3LgotICAgIGZvcm1hdF9kaWN0WydhbGlnbiddID0gYWxpZ24gb3IgJz4nCi0KLSAgICAjIGRlZmF1bHQgc2lnbiBoYW5kbGluZzogJy0nIGZvciBuZWdhdGl2ZSwgJycgZm9yIHBvc2l0aXZlCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3NpZ24nXSBpcyBOb25lOgotICAgICAgICBmb3JtYXRfZGljdFsnc2lnbiddID0gJy0nCi0KLSAgICAjIG1pbmltdW13aWR0aCBkZWZhdWx0cyB0byAwOyBwcmVjaXNpb24gcmVtYWlucyBOb25lIGlmIG5vdCBnaXZlbgotICAgIGZvcm1hdF9kaWN0WydtaW5pbXVtd2lkdGgnXSA9IGludChmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gb3IgJzAnKQotICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSBpcyBub3QgTm9uZToKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gaW50KGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSkKLQotICAgICMgaWYgZm9ybWF0IHR5cGUgaXMgJ2cnIG9yICdHJyB0aGVuIGEgcHJlY2lzaW9uIG9mIDAgbWFrZXMgbGl0dGxlCi0gICAgIyBzZW5zZTsgY29udmVydCBpdCB0byAxLiAgU2FtZSBpZiBmb3JtYXQgdHlwZSBpcyB1bnNwZWNpZmllZC4KLSAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPT0gMDoKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHbic6Ci0gICAgICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSAxCi0KLSAgICAjIGRldGVybWluZSB0aG91c2FuZHMgc2VwYXJhdG9yLCBncm91cGluZywgYW5kIGRlY2ltYWwgc2VwYXJhdG9yLCBhbmQKLSAgICAjIGFkZCBhcHByb3ByaWF0ZSBlbnRyaWVzIHRvIGZvcm1hdF9kaWN0Ci0gICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSA9PSAnbic6Ci0gICAgICAgICMgYXBhcnQgZnJvbSBzZXBhcmF0b3JzLCAnbicgYmVoYXZlcyBqdXN0IGxpa2UgJ2cnCi0gICAgICAgIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPSAnZycKLSAgICAgICAgaWYgX2xvY2FsZWNvbnYgaXMgTm9uZToKLSAgICAgICAgICAgIF9sb2NhbGVjb252ID0gX2xvY2FsZS5sb2NhbGVjb252KCkKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGxpY2l0IHRob3VzYW5kcyBzZXBhcmF0b3IgY29uZmxpY3RzIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ24nIHR5cGUgaW4gZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQotICAgICAgICBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddID0gX2xvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQotICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IF9sb2NhbGVjb252Wydncm91cGluZyddCi0gICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSBfbG9jYWxlY29udlsnZGVjaW1hbF9wb2ludCddCi0gICAgZWxzZToKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSBpcyBOb25lOgotICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9ICcnCi0gICAgICAgIGZvcm1hdF9kaWN0Wydncm91cGluZyddID0gWzMsIDBdCi0gICAgICAgIGZvcm1hdF9kaWN0WydkZWNpbWFsX3BvaW50J10gPSAnLicKLQotICAgIHJldHVybiBmb3JtYXRfZGljdAotCi1kZWYgX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKToKLSAgICAiIiJHaXZlbiBhbiB1bnBhZGRlZCwgbm9uLWFsaWduZWQgbnVtZXJpYyBzdHJpbmcgJ2JvZHknIGFuZCBzaWduCi0gICAgc3RyaW5nICdzaWduJywgYWRkIHBhZGRpbmcgYW5kIGFsaWdubWVudCBjb25mb3JtaW5nIHRvIHRoZSBnaXZlbgotICAgIGZvcm1hdCBzcGVjaWZpZXIgZGljdGlvbmFyeSAnc3BlYycgKGFzIHByb2R1Y2VkIGJ5Ci0gICAgcGFyc2VfZm9ybWF0X3NwZWNpZmllcikuCi0KLSAgICAiIiIKLSAgICAjIGhvdyBtdWNoIGV4dHJhIHNwYWNlIGRvIHdlIGhhdmUgdG8gcGxheSB3aXRoPwotICAgIG1pbmltdW13aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddCi0gICAgZmlsbCA9IHNwZWNbJ2ZpbGwnXQotICAgIHBhZGRpbmcgPSBmaWxsKihtaW5pbXVtd2lkdGggLSBsZW4oc2lnbikgLSBsZW4oYm9keSkpCi0KLSAgICBhbGlnbiA9IHNwZWNbJ2FsaWduJ10KLSAgICBpZiBhbGlnbiA9PSAnPCc6Ci0gICAgICAgIHJlc3VsdCA9IHNpZ24gKyBib2R5ICsgcGFkZGluZwotICAgIGVsaWYgYWxpZ24gPT0gJz4nOgotICAgICAgICByZXN1bHQgPSBwYWRkaW5nICsgc2lnbiArIGJvZHkKLSAgICBlbGlmIGFsaWduID09ICc9JzoKLSAgICAgICAgcmVzdWx0ID0gc2lnbiArIHBhZGRpbmcgKyBib2R5Ci0gICAgZWxpZiBhbGlnbiA9PSAnXic6Ci0gICAgICAgIGhhbGYgPSBsZW4ocGFkZGluZykvLzIKLSAgICAgICAgcmVzdWx0ID0gcGFkZGluZ1s6aGFsZl0gKyBzaWduICsgYm9keSArIHBhZGRpbmdbaGFsZjpdCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pc2VkIGFsaWdubWVudCBmaWVsZCcpCi0KLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6Ci0gICAgIiIiQ29udmVydCBhIGxvY2FsZWNvbnYtc3R5bGUgZ3JvdXBpbmcgaW50byBhIChwb3NzaWJseSBpbmZpbml0ZSkKLSAgICBpdGVyYWJsZSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgZ3JvdXAgbGVuZ3Rocy4KLQotICAgICIiIgotICAgICMgVGhlIHJlc3VsdCBmcm9tIGxvY2FsZWNvbnYoKVsnZ3JvdXBpbmcnXSwgYW5kIHRoZSBpbnB1dCB0byB0aGlzCi0gICAgIyBmdW5jdGlvbiwgc2hvdWxkIGJlIGEgbGlzdCBvZiBpbnRlZ2VycyBpbiBvbmUgb2YgdGhlCi0gICAgIyBmb2xsb3dpbmcgdGhyZWUgZm9ybXM6Ci0gICAgIwotICAgICMgICAoMSkgYW4gZW1wdHkgbGlzdCwgb3IKLSAgICAjICAgKDIpIG5vbmVtcHR5IGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbMF0KLSAgICAjICAgKDMpIGxpc3Qgb2YgcG9zaXRpdmUgaW50ZWdlcnMgKyBbbG9jYWxlLkNIQVJfTUFYXSwgb3IKLQotICAgIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbiwgcmVwZWF0Ci0gICAgaWYgbm90IGdyb3VwaW5nOgotICAgICAgICByZXR1cm4gW10KLSAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSAwIGFuZCBsZW4oZ3JvdXBpbmcpID49IDI6Ci0gICAgICAgIHJldHVybiBjaGFpbihncm91cGluZ1s6LTFdLCByZXBlYXQoZ3JvdXBpbmdbLTJdKSkKLSAgICBlbGlmIGdyb3VwaW5nWy0xXSA9PSBfbG9jYWxlLkNIQVJfTUFYOgotICAgICAgICByZXR1cm4gZ3JvdXBpbmdbOi0xXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXNlZCBmb3JtYXQgZm9yIGdyb3VwaW5nJykKLQotZGVmIF9pbnNlcnRfdGhvdXNhbmRzX3NlcChkaWdpdHMsIHNwZWMsIG1pbl93aWR0aD0xKToKLSAgICAiIiJJbnNlcnQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW50byBhIGRpZ2l0IHN0cmluZy4KLQotICAgIHNwZWMgaXMgYSBkaWN0aW9uYXJ5IHdob3NlIGtleXMgc2hvdWxkIGluY2x1ZGUgJ3Rob3VzYW5kc19zZXAnIGFuZAotICAgICdncm91cGluZyc7IHR5cGljYWxseSBpdCdzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgZm9ybWF0Ci0gICAgc3BlY2lmaWVyIHVzaW5nIF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyLgotCi0gICAgVGhlIG1pbl93aWR0aCBrZXl3b3JkIGFyZ3VtZW50IGdpdmVzIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiB0aGUKLSAgICByZXN1bHQsIHdoaWNoIHdpbGwgYmUgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5LgotCi0gICAgSWYgbmVjZXNzYXJ5LCB0aGUgemVybyBwYWRkaW5nIGFkZHMgYW4gZXh0cmEgJzAnIG9uIHRoZSBsZWZ0IHRvCi0gICAgYXZvaWQgYSBsZWFkaW5nIHRob3VzYW5kcyBzZXBhcmF0b3IuICBGb3IgZXhhbXBsZSwgaW5zZXJ0aW5nCi0gICAgY29tbWFzIGV2ZXJ5IHRocmVlIGRpZ2l0cyBpbiAnMTIzNDU2Jywgd2l0aCBtaW5fd2lkdGg9OCwgZ2l2ZXMKLSAgICAnMCwxMjMsNDU2JywgZXZlbiB0aG91Z2ggdGhhdCBoYXMgbGVuZ3RoIDkuCi0KLSAgICAiIiIKLQotICAgIHNlcCA9IHNwZWNbJ3Rob3VzYW5kc19zZXAnXQotICAgIGdyb3VwaW5nID0gc3BlY1snZ3JvdXBpbmcnXQotCi0gICAgZ3JvdXBzID0gW10KLSAgICBmb3IgbCBpbiBfZ3JvdXBfbGVuZ3Rocyhncm91cGluZyk6Ci0gICAgICAgIGlmIGwgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImdyb3VwIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmUiKQotICAgICAgICAjIG1heCguLi4sIDEpIGZvcmNlcyBhdCBsZWFzdCAxIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIGEgc2VwYXJhdG9yCi0gICAgICAgIGwgPSBtaW4obWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpLCBsKQotICAgICAgICBncm91cHMuYXBwZW5kKCcwJyoobCAtIGxlbihkaWdpdHMpKSArIGRpZ2l0c1stbDpdKQotICAgICAgICBkaWdpdHMgPSBkaWdpdHNbOi1sXQotICAgICAgICBtaW5fd2lkdGggLT0gbAotICAgICAgICBpZiBub3QgZGlnaXRzIGFuZCBtaW5fd2lkdGggPD0gMDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG1pbl93aWR0aCAtPSBsZW4oc2VwKQotICAgIGVsc2U6Ci0gICAgICAgIGwgPSBtYXgobGVuKGRpZ2l0cyksIG1pbl93aWR0aCwgMSkKLSAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKLSAgICByZXR1cm4gc2VwLmpvaW4ocmV2ZXJzZWQoZ3JvdXBzKSkKLQotZGVmIF9mb3JtYXRfc2lnbihpc19uZWdhdGl2ZSwgc3BlYyk6Ci0gICAgIiIiRGV0ZXJtaW5lIHNpZ24gY2hhcmFjdGVyLiIiIgotCi0gICAgaWYgaXNfbmVnYXRpdmU6Ci0gICAgICAgIHJldHVybiAnLScKLSAgICBlbGlmIHNwZWNbJ3NpZ24nXSBpbiAnICsnOgotICAgICAgICByZXR1cm4gc3BlY1snc2lnbiddCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcnCi0KLWRlZiBfZm9ybWF0X251bWJlcihpc19uZWdhdGl2ZSwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYyk6Ci0gICAgIiIiRm9ybWF0IGEgbnVtYmVyLCBnaXZlbiB0aGUgZm9sbG93aW5nIGRhdGE6Ci0KLSAgICBpc19uZWdhdGl2ZTogdHJ1ZSBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBlbHNlIGZhbHNlCi0gICAgaW50cGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgYXBwZWFyIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludAotICAgIGZyYWNwYXJ0OiBzdHJpbmcgb2YgZGlnaXRzIHRoYXQgbXVzdCBjb21lIGFmdGVyIHRoZSBwb2ludAotICAgIGV4cDogZXhwb25lbnQsIGFzIGFuIGludGVnZXIKLSAgICBzcGVjOiBkaWN0aW9uYXJ5IHJlc3VsdGluZyBmcm9tIHBhcnNpbmcgdGhlIGZvcm1hdCBzcGVjaWZpZXIKLQotICAgIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgaW5mb3JtYXRpb24gaW4gc3BlYyB0bzoKLSAgICAgIGluc2VydCBzZXBhcmF0b3JzIChkZWNpbWFsIHNlcGFyYXRvciBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvcnMpCi0gICAgICBmb3JtYXQgdGhlIHNpZ24KLSAgICAgIGZvcm1hdCB0aGUgZXhwb25lbnQKLSAgICAgIGFkZCB0cmFpbGluZyAnJScgZm9yIHRoZSAnJScgdHlwZQotICAgICAgemVyby1wYWQgaWYgbmVjZXNzYXJ5Ci0gICAgICBmaWxsIGFuZCBhbGlnbiBpZiBuZWNlc3NhcnkKLSAgICAiIiIKLQotICAgIHNpZ24gPSBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpCi0KLSAgICBpZiBmcmFjcGFydCBvciBzcGVjWydhbHQnXToKLSAgICAgICAgZnJhY3BhcnQgPSBzcGVjWydkZWNpbWFsX3BvaW50J10gKyBmcmFjcGFydAotCi0gICAgaWYgZXhwICE9IDAgb3Igc3BlY1sndHlwZSddIGluICdlRSc6Ci0gICAgICAgIGVjaGFyID0geydFJzogJ0UnLCAnZSc6ICdlJywgJ0cnOiAnRScsICdnJzogJ2UnfVtzcGVjWyd0eXBlJ11dCi0gICAgICAgIGZyYWNwYXJ0ICs9ICJ7MH17MTorfSIuZm9ybWF0KGVjaGFyLCBleHApCi0gICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKLSAgICAgICAgZnJhY3BhcnQgKz0gJyUnCi0KLSAgICBpZiBzcGVjWyd6ZXJvcGFkJ106Ci0gICAgICAgIG1pbl93aWR0aCA9IHNwZWNbJ21pbmltdW13aWR0aCddIC0gbGVuKGZyYWNwYXJ0KSAtIGxlbihzaWduKQotICAgIGVsc2U6Ci0gICAgICAgIG1pbl93aWR0aCA9IDAKLSAgICBpbnRwYXJ0ID0gX2luc2VydF90aG91c2FuZHNfc2VwKGludHBhcnQsIHNwZWMsIG1pbl93aWR0aCkKLQotICAgIHJldHVybiBfZm9ybWF0X2FsaWduKHNpZ24sIGludHBhcnQrZnJhY3BhcnQsIHNwZWMpCi0KLQotIyMjIyMgVXNlZnVsIENvbnN0YW50cyAoaW50ZXJuYWwgdXNlIG9ubHkpICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgUmV1c2FibGUgZGVmYXVsdHMKLV9JbmZpbml0eSA9IERlY2ltYWwoJ0luZicpCi1fTmVnYXRpdmVJbmZpbml0eSA9IERlY2ltYWwoJy1JbmYnKQotX05hTiA9IERlY2ltYWwoJ05hTicpCi1fWmVybyA9IERlY2ltYWwoMCkKLV9PbmUgPSBEZWNpbWFsKDEpCi1fTmVnYXRpdmVPbmUgPSBEZWNpbWFsKC0xKQotCi0jIF9TaWduZWRJbmZpbml0eVtzaWduXSBpcyBpbmZpbml0eSB3LyB0aGF0IHNpZ24KLV9TaWduZWRJbmZpbml0eSA9IChfSW5maW5pdHksIF9OZWdhdGl2ZUluZmluaXR5KQotCi0jIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAotIyBvbiB0aGUgcmVkdWN0aW9uIG9mIHggbW9kdWxvIF9QeUhBU0hfTU9EVUxVUwotX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCi0jIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCi1fUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCi1fUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCi0KLSMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUwotX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQotZGVsIHN5cwotCi10cnk6Ci0gICAgaW1wb3J0IF9kZWNpbWFsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotZWxzZToKLSAgICBzMSA9IHNldChkaXIoKSkKLSAgICBzMiA9IHNldChkaXIoX2RlY2ltYWwpKQotICAgIGZvciBuYW1lIGluIHMxIC0gczI6Ci0gICAgICAgIGRlbCBnbG9iYWxzKClbbmFtZV0KLSAgICBkZWwgczEsIHMyLCBuYW1lCiAgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgKgotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBkb2N0ZXN0LCBkZWNpbWFsCi0gICAgZG9jdGVzdC50ZXN0bW9kKGRlY2ltYWwpCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX19kb2NfXworICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fdmVyc2lvbl9fCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX19saWJtcGRlY192ZXJzaW9uX18KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0ICoKKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fZG9jX18KKyAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fdmVyc2lvbl9fCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX2xpYm1wZGVjX3ZlcnNpb25fXwpkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCA3ZWI0MmE5Li4yMmQ5MTQ1IDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMjgsOSArMjgsOSBAQAogCiBfX2FsbF9fID0gWydnZXRfY2xvc2VfbWF0Y2hlcycsICduZGlmZicsICdyZXN0b3JlJywgJ1NlcXVlbmNlTWF0Y2hlcicsCiAgICAgICAgICAgICdEaWZmZXInLCdJU19DSEFSQUNURVJfSlVOSycsICdJU19MSU5FX0pVTksnLCAnY29udGV4dF9kaWZmJywKLSAgICAgICAgICAgJ3VuaWZpZWRfZGlmZicsICdIdG1sRGlmZicsICdNYXRjaCddCisgICAgICAgICAgICd1bmlmaWVkX2RpZmYnLCAnZGlmZl9ieXRlcycsICdIdG1sRGlmZicsICdNYXRjaCddCiAKLWltcG9ydCBoZWFwcQorZnJvbSBoZWFwcSBpbXBvcnQgbmxhcmdlc3QgYXMgX25sYXJnZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCiAKIE1hdGNoID0gX25hbWVkdHVwbGUoJ01hdGNoJywgJ2EgYiBzaXplJykKQEAgLTcyOSw3ICs3MjksNyBAQAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgocy5yYXRpbygpLCB4KSkKIAogICAgICMgTW92ZSB0aGUgYmVzdCBzY29yZXJzIHRvIGhlYWQgb2YgbGlzdAotICAgIHJlc3VsdCA9IGhlYXBxLm5sYXJnZXN0KG4sIHJlc3VsdCkKKyAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgcmVzdWx0KQogICAgICMgU3RyaXAgc2NvcmVzIGZvciB0aGUgYmVzdCBuIG1hdGNoZXMKICAgICByZXR1cm4gW3ggZm9yIHNjb3JlLCB4IGluIHJlc3VsdF0KIApAQCAtODUyLDEwICs4NTIsOSBAQAogICAgICAgICAgIGFuZCByZXR1cm4gdHJ1ZSBpZmYgdGhlIHN0cmluZyBpcyBqdW5rLiBUaGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uCiAgICAgICAgICAgYElTX0xJTkVfSlVOS2AgbWF5IGJlIHVzZWQgdG8gZmlsdGVyIG91dCBsaW5lcyB3aXRob3V0IHZpc2libGUKICAgICAgICAgICBjaGFyYWN0ZXJzLCBleGNlcHQgZm9yIGF0IG1vc3Qgb25lIHNwbGF0ICgnIycpLiAgSXQgaXMgcmVjb21tZW5kZWQKLSAgICAgICAgICB0byBsZWF2ZSBsaW5lanVuayBOb25lOyBhcyBvZiBQeXRob24gMi4zLCB0aGUgdW5kZXJseWluZwotICAgICAgICAgIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMgZ3Jvd24gYW4gYWRhcHRpdmUgbm90aW9uIG9mICJub2lzZSIgbGluZXMKLSAgICAgICAgICB0aGF0J3MgYmV0dGVyIHRoYW4gYW55IHN0YXRpYyBkZWZpbml0aW9uIHRoZSBhdXRob3IgaGFzIGV2ZXIgYmVlbgotICAgICAgICAgIGFibGUgdG8gY3JhZnQuCisgICAgICAgICAgdG8gbGVhdmUgbGluZWp1bmsgTm9uZTsgdGhlIHVuZGVybHlpbmcgU2VxdWVuY2VNYXRjaGVyIGNsYXNzIGhhcworICAgICAgICAgIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzIHRoYXQncyBiZXR0ZXIgdGhhbiBhbnkgc3RhdGljCisgICAgICAgICAgZGVmaW5pdGlvbiB0aGUgYXV0aG9yIGhhcyBldmVyIGJlZW4gYWJsZSB0byBjcmFmdC4KIAogICAgICAgICAtIGBjaGFyanVua2A6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc3RyaW5nIG9mIGxlbmd0aCAxLiBUaGUKICAgICAgICAgICBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gYElTX0NIQVJBQ1RFUl9KVU5LYCBtYXkgYmUgdXNlZCB0byBmaWx0ZXIgb3V0CkBAIC0xMTc1LDYgKzExNzQsNyBAQAogICAgICBmb3VyCiAgICAgIiIiCiAKKyAgICBfY2hlY2tfdHlwZXMoYSwgYiwgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWZpbGVkYXRlLCB0b2ZpbGVkYXRlLCBsaW5ldGVybSkKICAgICBzdGFydGVkID0gRmFsc2UKICAgICBmb3IgZ3JvdXAgaW4gU2VxdWVuY2VNYXRjaGVyKE5vbmUsYSxiKS5nZXRfZ3JvdXBlZF9vcGNvZGVzKG4pOgogICAgICAgICBpZiBub3Qgc3RhcnRlZDoKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAgICAgICBmb3VyCiAgICAgIiIiCiAKKyAgICBfY2hlY2tfdHlwZXMoYSwgYiwgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWZpbGVkYXRlLCB0b2ZpbGVkYXRlLCBsaW5ldGVybSkKICAgICBwcmVmaXggPSBkaWN0KGluc2VydD0nKyAnLCBkZWxldGU9Jy0gJywgcmVwbGFjZT0nISAnLCBlcXVhbD0nICAnKQogICAgIHN0YXJ0ZWQgPSBGYWxzZQogICAgIGZvciBncm91cCBpbiBTZXF1ZW5jZU1hdGNoZXIoTm9uZSxhLGIpLmdldF9ncm91cGVkX29wY29kZXMobik6CkBAIC0xMjkzLDIyICsxMjk0LDcwIEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGJbajE6ajJdOgogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcHJlZml4W3RhZ10gKyBsaW5lCiAKK2RlZiBfY2hlY2tfdHlwZXMoYSwgYiwgKmFyZ3MpOgorICAgICMgQ2hlY2tpbmcgdHlwZXMgaXMgd2VpcmQsIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgZ2FyYmxlZCBvdXRwdXQgd2hlbgorICAgICMgc29tZW9uZSBwYXNzZXMgbWl4ZWQgYnl0ZXMgYW5kIHN0ciB0byB7dW5pZmllZCxjb250ZXh0fV9kaWZmKCkuIEUuZy4KKyAgICAjIHdpdGhvdXQgdGhpcyBjaGVjaywgcGFzc2luZyBmaWxlbmFtZXMgYXMgYnl0ZXMgcmVzdWx0cyBpbiBvdXRwdXQgbGlrZQorICAgICMgICAtLS0gYidvbGRmaWxlLnR4dCcKKyAgICAjICAgKysrIGInbmV3ZmlsZS50eHQnCisgICAgIyBiZWNhdXNlIG9mIGhvdyBzdHIuZm9ybWF0KCkgaW5jb3Jwb3JhdGVzIGJ5dGVzIG9iamVjdHMuCisgICAgaWYgYSBhbmQgbm90IGlzaW5zdGFuY2UoYVswXSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsaW5lcyB0byBjb21wYXJlIG11c3QgYmUgc3RyLCBub3QgJXMgKCVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoYVswXSkuX19uYW1lX18sIGFbMF0pKQorICAgIGlmIGIgYW5kIG5vdCBpc2luc3RhbmNlKGJbMF0sIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKGJbMF0pLl9fbmFtZV9fLCBiWzBdKSkKKyAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYWxsIGFyZ3VtZW50cyBtdXN0IGJlIHN0ciwgbm90OiAlcicgJSAoYXJnLCkpCisKK2RlZiBkaWZmX2J5dGVzKGRmdW5jLCBhLCBiLCBmcm9tZmlsZT1iJycsIHRvZmlsZT1iJycsCisgICAgICAgICAgICAgICBmcm9tZmlsZWRhdGU9YicnLCB0b2ZpbGVkYXRlPWInJywgbj0zLCBsaW5ldGVybT1iJ1xuJyk6CisgICAgciIiIgorICAgIENvbXBhcmUgYGFgIGFuZCBgYmAsIHR3byBzZXF1ZW5jZXMgb2YgbGluZXMgcmVwcmVzZW50ZWQgYXMgYnl0ZXMgcmF0aGVyCisgICAgdGhhbiBzdHIuIFRoaXMgaXMgYSB3cmFwcGVyIGZvciBgZGZ1bmNgLCB3aGljaCBpcyB0eXBpY2FsbHkgZWl0aGVyCisgICAgdW5pZmllZF9kaWZmKCkgb3IgY29udGV4dF9kaWZmKCkuIElucHV0cyBhcmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8KKyAgICBzdHJpbmdzIHNvIHRoYXQgYGRmdW5jYCBvbmx5IGhhcyB0byB3b3JyeSBhYm91dCBzdHJpbmdzLCBhbmQgZW5jb2RlZAorICAgIGJhY2sgdG8gYnl0ZXMgb24gcmV0dXJuLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjb21wYXJlIGZpbGVzIHdpdGgKKyAgICB1bmtub3duIG9yIGluY29uc2lzdGVudCBlbmNvZGluZy4gQWxsIG90aGVyIGlucHV0cyAoZXhjZXB0IGBuYCkgbXVzdCBiZQorICAgIGJ5dGVzIHJhdGhlciB0aGFuIHN0ci4KKyAgICAiIiIKKyAgICBkZWYgZGVjb2RlKHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBtc2cgPSAoJ2FsbCBhcmd1bWVudHMgbXVzdCBiZSBieXRlcywgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAodHlwZShzKS5fX25hbWVfXywgcykpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKSBmcm9tIGVycgorICAgIGEgPSBsaXN0KG1hcChkZWNvZGUsIGEpKQorICAgIGIgPSBsaXN0KG1hcChkZWNvZGUsIGIpKQorICAgIGZyb21maWxlID0gZGVjb2RlKGZyb21maWxlKQorICAgIHRvZmlsZSA9IGRlY29kZSh0b2ZpbGUpCisgICAgZnJvbWZpbGVkYXRlID0gZGVjb2RlKGZyb21maWxlZGF0ZSkKKyAgICB0b2ZpbGVkYXRlID0gZGVjb2RlKHRvZmlsZWRhdGUpCisgICAgbGluZXRlcm0gPSBkZWNvZGUobGluZXRlcm0pCisKKyAgICBsaW5lcyA9IGRmdW5jKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbiwgbGluZXRlcm0pCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHlpZWxkIGxpbmUuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCiBkZWYgbmRpZmYoYSwgYiwgbGluZWp1bms9Tm9uZSwgY2hhcmp1bms9SVNfQ0hBUkFDVEVSX0pVTkspOgogICAgIHIiIiIKICAgICBDb21wYXJlIGBhYCBhbmQgYGJgIChsaXN0cyBvZiBzdHJpbmdzKTsgcmV0dXJuIGEgYERpZmZlcmAtc3R5bGUgZGVsdGEuCiAKICAgICBPcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgYGxpbmVqdW5rYCBhbmQgYGNoYXJqdW5rYCBhcmUgZm9yIGZpbHRlcgotICAgIGZ1bmN0aW9ucyAob3IgTm9uZSk6CisgICAgZnVuY3Rpb25zLCBvciBjYW4gYmUgTm9uZToKIAotICAgIC0gbGluZWp1bms6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwgYW5kCisgICAgLSBsaW5lanVuazogQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBhY2NlcHQgYSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50IGFuZAogICAgICAgcmV0dXJuIHRydWUgaWZmIHRoZSBzdHJpbmcgaXMganVuay4gIFRoZSBkZWZhdWx0IGlzIE5vbmUsIGFuZCBpcwotICAgICAgcmVjb21tZW5kZWQ7IGFzIG9mIFB5dGhvbiAyLjMsIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzIGlzCi0gICAgICB1c2VkIHRoYXQgZG9lcyBhIGdvb2Qgam9iIG9uIGl0cyBvd24uCisgICAgICByZWNvbW1lbmRlZDsgdGhlIHVuZGVybHlpbmcgU2VxdWVuY2VNYXRjaGVyIGNsYXNzIGhhcyBhbiBhZGFwdGl2ZQorICAgICAgbm90aW9uIG9mICJub2lzZSIgbGluZXMuCiAKLSAgICAtIGNoYXJqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvZiBsZW5ndGggMS4gVGhlCi0gICAgICBkZWZhdWx0IGlzIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBJU19DSEFSQUNURVJfSlVOSywgd2hpY2ggZmlsdGVycyBvdXQKLSAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYSBibGFuayBvciB0YWI7IG5vdGU6IGJhZCBpZGVhIHRvIGluY2x1ZGUgbmV3bGluZQotICAgICAgaW4gdGhpcyEpLgorICAgIC0gY2hhcmp1bms6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY2hhcmFjdGVyIChzdHJpbmcgb2YgbGVuZ3RoCisgICAgICAxKSwgYW5kIHJldHVybnMgdHJ1ZSBpZmYgdGhlIGNoYXJhY3RlciBpcyBqdW5rLiBUaGUgZGVmYXVsdCBpcworICAgICAgdGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBJU19DSEFSQUNURVJfSlVOSywgd2hpY2ggZmlsdGVycyBvdXQKKyAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYSBibGFuayBvciB0YWI7IG5vdGU6IGl0J3MgYSBiYWQgaWRlYSB0bworICAgICAgaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KIAogICAgIFRvb2xzL3NjcmlwdHMvbmRpZmYucHkgaXMgYSBjb21tYW5kLWxpbmUgZnJvbnQtZW5kIHRvIHRoaXMgZnVuY3Rpb24uCiAKQEAgLTE0MTAsNyArMTQ1OSw3IEBACiAgICAgICAgICAgICBjaGFuZ2VfcmUuc3ViKHJlY29yZF9zdWJfaW5mbyxtYXJrZXJzKQogICAgICAgICAgICAgIyBwcm9jZXNzIGVhY2ggdHVwbGUgaW5zZXJ0aW5nIG91ciBzcGVjaWFsIG1hcmtzIHRoYXQgd29uJ3QgYmUKICAgICAgICAgICAgICMgbm90aWNlZCBieSBhbiB4bWwvaHRtbCBlc2NhcGVyLgotICAgICAgICAgICAgZm9yIGtleSwoYmVnaW4sZW5kKSBpbiBzdWJfaW5mb1s6Oi0xXToKKyAgICAgICAgICAgIGZvciBrZXksKGJlZ2luLGVuZCkgaW4gcmV2ZXJzZWQoc3ViX2luZm8pOgogICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0WzA6YmVnaW5dKydcMCcra2V5K3RleHRbYmVnaW46ZW5kXSsnXDEnK3RleHRbZW5kOl0KICAgICAgICAgICAgIHRleHQgPSB0ZXh0WzI6XQogICAgICAgICAjIEhhbmRsZSBjYXNlIG9mIGFkZC9kZWxldGUgZW50aXJlIGxpbmUKQEAgLTE0NDgsMTAgKzE0OTcsNyBAQAogICAgICAgICAgICAgIyBhcmUgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZWFjaCBvZiB0aGUgNCBsaW5lcwogICAgICAgICAgICAgIyBzbyB3ZSBjYW4gZG8gc29tZSB2ZXJ5IHJlYWRhYmxlIGNvbXBhcmlzb25zLgogICAgICAgICAgICAgd2hpbGUgbGVuKGxpbmVzKSA8IDQ6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV4dChkaWZmX2xpbmVzX2l0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdYJykKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV4dChkaWZmX2xpbmVzX2l0ZXJhdG9yLCAnWCcpKQogICAgICAgICAgICAgcyA9ICcnLmpvaW4oW2xpbmVbMF0gZm9yIGxpbmUgaW4gbGluZXNdKQogICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdYJyk6CiAgICAgICAgICAgICAgICAgIyBXaGVuIG5vIG1vcmUgbGluZXMsIHB1bXAgb3V0IGFueSByZW1haW5pbmcgYmxhbmsgbGluZXMgc28gdGhlCkBAIC0xNTE0LDcgKzE1NjAsNyBAQAogICAgICAgICAgICAgICAgIG51bV9ibGFua3NfdG9feWllbGQgLT0gMQogICAgICAgICAgICAgICAgIHlpZWxkICgnJywnXG4nKSxOb25lLFRydWUKICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnWCcpOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbV9saW5lLHRvX2xpbmUsVHJ1ZQogCkBAIC0xNTM2LDcgKzE1ODIsMTAgQEAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICMgQ29sbGVjdGluZyBsaW5lcyBvZiB0ZXh0IHVudGlsIHdlIGhhdmUgYSBmcm9tL3RvIHBhaXIKICAgICAgICAgICAgIHdoaWxlIChsZW4oZnJvbWxpbmVzKT09MCBvciBsZW4odG9saW5lcyk9PTApOgotICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgaWYgZnJvbV9saW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBmcm9tbGluZXMuYXBwZW5kKChmcm9tX2xpbmUsZm91bmRfZGlmZikpCiAgICAgICAgICAgICAgICAgaWYgdG9fbGluZSBpcyBub3QgTm9uZToKQEAgLTE1NTAsOCArMTU5OSw3IEBACiAgICAgIyB0aGVtIHVwIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZSB3aXRoIHRoZW0uCiAgICAgbGluZV9wYWlyX2l0ZXJhdG9yID0gX2xpbmVfcGFpcl9pdGVyYXRvcigpCiAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgeWllbGQgbmV4dChsaW5lX3BhaXJfaXRlcmF0b3IpCisgICAgICAgIHlpZWxkIGZyb20gbGluZV9wYWlyX2l0ZXJhdG9yCiAgICAgIyBIYW5kbGUgY2FzZSB3aGVyZSB1c2VyIHdhbnRzIGNvbnRleHQgZGlmZmVyZW5jaW5nLiAgV2UgbXVzdCBkbyBzb21lCiAgICAgIyBzdG9yYWdlIG9mIGxpbmVzIHVudGlsIHdlIGtub3cgZm9yIHN1cmUgdGhhdCB0aGV5IGFyZSB0byBiZSB5aWVsZGVkLgogICAgIGVsc2U6CkBAIC0xNTY0LDcgKzE2MTIsMTAgQEAKICAgICAgICAgICAgIGluZGV4LCBjb250ZXh0TGluZXMgPSAwLCBbTm9uZV0qKGNvbnRleHQpCiAgICAgICAgICAgICBmb3VuZF9kaWZmID0gRmFsc2UKICAgICAgICAgICAgIHdoaWxlKGZvdW5kX2RpZmYgaXMgRmFsc2UpOgotICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnJvbV9saW5lLCB0b19saW5lLCBmb3VuZF9kaWZmID0gbmV4dChsaW5lX3BhaXJfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgIGkgPSBpbmRleCAlIGNvbnRleHQKICAgICAgICAgICAgICAgICBjb250ZXh0TGluZXNbaV0gPSAoZnJvbV9saW5lLCB0b19saW5lLCBmb3VuZF9kaWZmKQogICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKQEAgLTE2MDEsNyArMTY1Miw3IEBACiAKIDxoZWFkPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIKLSAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKyAgICAgICAgICBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JShjaGFyc2V0KXMiIC8+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4lKHN0eWxlcylzCiAgICAgPC9zdHlsZT4KQEAgLTE2NzksNyArMTczMCw3IEBACiAgICAgICAgIHRhYnNpemUgLS0gdGFiIHN0b3Agc3BhY2luZywgZGVmYXVsdHMgdG8gOC4KICAgICAgICAgd3JhcGNvbHVtbiAtLSBjb2x1bW4gbnVtYmVyIHdoZXJlIGxpbmVzIGFyZSBicm9rZW4gYW5kIHdyYXBwZWQsCiAgICAgICAgICAgICBkZWZhdWx0cyB0byBOb25lIHdoZXJlIGxpbmVzIGFyZSBub3Qgd3JhcHBlZC4KLSAgICAgICAgbGluZWp1bmssY2hhcmp1bmsgLS0ga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gbmRpZmYoKSAodXNlZCB0byBieQorICAgICAgICBsaW5lanVuayxjaGFyanVuayAtLSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byBuZGlmZigpICh1c2VkIGJ5CiAgICAgICAgICAgICBIdG1sRGlmZigpIHRvIGdlbmVyYXRlIHRoZSBzaWRlIGJ5IHNpZGUgSFRNTCBkaWZmZXJlbmNlcykuICBTZWUKICAgICAgICAgICAgIG5kaWZmKCkgZG9jdW1lbnRhdGlvbiBmb3IgYXJndW1lbnQgZGVmYXVsdCB2YWx1ZXMgYW5kIGRlc2NyaXB0aW9ucy4KICAgICAgICAgIiIiCkBAIC0xNjg4LDggKzE3MzksOCBAQAogICAgICAgICBzZWxmLl9saW5lanVuayA9IGxpbmVqdW5rCiAgICAgICAgIHNlbGYuX2NoYXJqdW5rID0gY2hhcmp1bmsKIAotICAgIGRlZiBtYWtlX2ZpbGUoc2VsZixmcm9tbGluZXMsdG9saW5lcyxmcm9tZGVzYz0nJyx0b2Rlc2M9JycsY29udGV4dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIG51bWxpbmVzPTUpOgorICAgIGRlZiBtYWtlX2ZpbGUoc2VsZiwgZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLAorICAgICAgICAgICAgICAgICAgY29udGV4dD1GYWxzZSwgbnVtbGluZXM9NSwgKiwgY2hhcnNldD0ndXRmLTgnKToKICAgICAgICAgIiIiUmV0dXJucyBIVE1MIGZpbGUgb2Ygc2lkZSBieSBzaWRlIGNvbXBhcmlzb24gd2l0aCBjaGFuZ2UgaGlnaGxpZ2h0cwogCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTE3MDQsMTMgKzE3NTUsMTYgQEAKICAgICAgICAgICAgIFdoZW4gY29udGV4dCBpcyBGYWxzZSwgY29udHJvbHMgdGhlIG51bWJlciBvZiBsaW5lcyB0byBwbGFjZQogICAgICAgICAgICAgdGhlICJuZXh0IiBsaW5rIGFuY2hvcnMgYmVmb3JlIHRoZSBuZXh0IGNoYW5nZSAoc28gY2xpY2sgb2YKICAgICAgICAgICAgICJuZXh0IiBsaW5rIGp1bXBzIHRvIGp1c3QgYmVmb3JlIHRoZSBjaGFuZ2UpLgorICAgICAgICBjaGFyc2V0IC0tIGNoYXJzZXQgb2YgdGhlIEhUTUwgZG9jdW1lbnQKICAgICAgICAgIiIiCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVfdGVtcGxhdGUgJSBkaWN0KAotICAgICAgICAgICAgc3R5bGVzID0gc2VsZi5fc3R5bGVzLAotICAgICAgICAgICAgbGVnZW5kID0gc2VsZi5fbGVnZW5kLAotICAgICAgICAgICAgdGFibGUgPSBzZWxmLm1ha2VfdGFibGUoZnJvbWxpbmVzLHRvbGluZXMsZnJvbWRlc2MsdG9kZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LG51bWxpbmVzPW51bWxpbmVzKSkKKyAgICAgICAgcmV0dXJuIChzZWxmLl9maWxlX3RlbXBsYXRlICUgZGljdCgKKyAgICAgICAgICAgIHN0eWxlcz1zZWxmLl9zdHlsZXMsCisgICAgICAgICAgICBsZWdlbmQ9c2VsZi5fbGVnZW5kLAorICAgICAgICAgICAgdGFibGU9c2VsZi5tYWtlX3RhYmxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2MsIHRvZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIG51bWxpbmVzPW51bWxpbmVzKSwKKyAgICAgICAgICAgIGNoYXJzZXQ9Y2hhcnNldAorICAgICAgICApKS5lbmNvZGUoY2hhcnNldCwgJ3htbGNoYXJyZWZyZXBsYWNlJykuZGVjb2RlKGNoYXJzZXQpCiAKICAgICBkZWYgX3RhYl9uZXdsaW5lX3JlcGxhY2Uoc2VsZixmcm9tbGluZXMsdG9saW5lcyk6CiAgICAgICAgICIiIlJldHVybnMgZnJvbS90byBsaW5lIGxpc3RzIHdpdGggdGFicyBleHBhbmRlZCBhbmQgbmV3bGluZXMgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IDgxY2JlN2YuLmFmMzdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMjksNyArMjksNyBAQAogICAgIHJldHVybiBjCiAKIGRlZiBkaXMoeD1Ob25lLCAqLCBmaWxlPU5vbmUpOgotICAgICIiIkRpc2Fzc2VtYmxlIGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgb3IgY29kZS4KKyAgICAiIiJEaXNhc3NlbWJsZSBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGdlbmVyYXRvcnMsIG9yIGNvZGUuCiAKICAgICBXaXRoIG5vIGFyZ3VtZW50LCBkaXNhc3NlbWJsZSB0aGUgbGFzdCB0cmFjZWJhY2suCiAKQEAgLTQxLDYgKzQxLDggQEAKICAgICAgICAgeCA9IHguX19mdW5jX18KICAgICBpZiBoYXNhdHRyKHgsICdfX2NvZGVfXycpOiAgIyBGdW5jdGlvbgogICAgICAgICB4ID0geC5fX2NvZGVfXworICAgIGlmIGhhc2F0dHIoeCwgJ2dpX2NvZGUnKTogICMgR2VuZXJhdG9yCisgICAgICAgIHggPSB4LmdpX2NvZGUKICAgICBpZiBoYXNhdHRyKHgsICdfX2RpY3RfXycpOiAgIyBDbGFzcyBvciBtb2R1bGUKICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoeC5fX2RpY3RfXy5pdGVtcygpKQogICAgICAgICBmb3IgbmFtZSwgeDEgaW4gaXRlbXM6CkBAIC04Miw2ICs4NCw4IEBACiAgICAgMTY6ICJORVNURUQiLAogICAgIDMyOiAiR0VORVJBVE9SIiwKICAgICA2NDogIk5PRlJFRSIsCisgICAxMjg6ICJDT1JPVVRJTkUiLAorICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKIH0KIAogZGVmIHByZXR0eV9mbGFncyhmbGFncyk6CkBAIC05OSwxMSArMTAzLDEzIEBACiAgICAgcmV0dXJuICIsICIuam9pbihuYW1lcykKIAogZGVmIF9nZXRfY29kZV9vYmplY3QoeCk6Ci0gICAgIiIiSGVscGVyIHRvIGhhbmRsZSBtZXRob2RzLCBmdW5jdGlvbnMsIHN0cmluZ3MgYW5kIHJhdyBjb2RlIG9iamVjdHMiIiIKKyAgICAiIiJIZWxwZXIgdG8gaGFuZGxlIG1ldGhvZHMsIGZ1bmN0aW9ucywgZ2VuZXJhdG9ycywgc3RyaW5ncyBhbmQgcmF3IGNvZGUgb2JqZWN0cyIiIgogICAgIGlmIGhhc2F0dHIoeCwgJ19fZnVuY19fJyk6ICMgTWV0aG9kCiAgICAgICAgIHggPSB4Ll9fZnVuY19fCiAgICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogIyBGdW5jdGlvbgogICAgICAgICB4ID0geC5fX2NvZGVfXworICAgIGlmIGhhc2F0dHIoeCwgJ2dpX2NvZGUnKTogICMgR2VuZXJhdG9yCisgICAgICAgIHggPSB4LmdpX2NvZGUKICAgICBpZiBpc2luc3RhbmNlKHgsIHN0cik6ICAgICAjIFNvdXJjZSBjb2RlCiAgICAgICAgIHggPSBfdHJ5X2NvbXBpbGUoeCwgIjxkaXNhc3NlbWJseT4iKQogICAgIGlmIGhhc2F0dHIoeCwgJ2NvX2NvZGUnKTogICMgQ29kZSBvYmplY3QKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTZkOWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9fbXN2Y2NvbXBpbGVyLnB5CkBAIC0wLDAgKzEsNTYxIEBACisiIiJkaXN0dXRpbHMuX21zdmNjb21waWxlcgorCitDb250YWlucyBNU1ZDQ29tcGlsZXIsIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhYnN0cmFjdCBDQ29tcGlsZXIgY2xhc3MKK2ZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDE1LgorCitUaGUgbW9kdWxlIGlzIGNvbXBhdGlibGUgd2l0aCBWUyAyMDE1IGFuZCBsYXRlci4gWW91IGNhbiBmaW5kIGxlZ2FjeSBzdXBwb3J0Citmb3Igb2xkZXIgdmVyc2lvbnMgaW4gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIgYW5kIGRpc3R1dGlscy5tc3ZjY29tcGlsZXIuCisiIiIKKworIyBXcml0dGVuIGJ5IFBlcnJ5IFN0b2xsCisjIGhhY2tlZCBieSBSb2JpbiBCZWNrZXIgYW5kIFRob21hcyBIZWxsZXIgdG8gZG8gYSBiZXR0ZXIgam9iIG9mCisjICAgZmluZGluZyBEZXZTdHVkaW8gKHRocm91Z2ggdGhlIHJlZ2lzdHJ5KQorIyBwb3J0ZWQgdG8gVlMgMjAwNSBhbmQgVlMgMjAwOCBieSBDaHJpc3RpYW4gSGVpbWVzCisjIHBvcnRlZCB0byBWUyAyMDE1IGJ5IFN0ZXZlIERvd2VyCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQorCitmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvciwgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlRXJyb3IsIExpYkVycm9yLCBMaW5rRXJyb3IKK2Zyb20gZGlzdHV0aWxzLmNjb21waWxlciBpbXBvcnQgQ0NvbXBpbGVyLCBnZW5fbGliX29wdGlvbnMKK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKK2Zyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQorCitpbXBvcnQgd2lucmVnCitmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQKKworZGVmIF9maW5kX3ZjdmFyc2FsbCgpOgorICAgIHdpdGggd2lucmVnLk9wZW5LZXlFeCgKKyAgICAgICAgd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgciJTb2Z0d2FyZVxNaWNyb3NvZnRcVmlzdWFsU3R1ZGlvXFN4U1xWQzciLAorICAgICAgICBhY2Nlc3M9d2lucmVnLktFWV9SRUFEIHwgd2lucmVnLktFWV9XT1c2NF8zMktFWQorICAgICkgYXMga2V5OgorICAgICAgICBpZiBub3Qga2V5OgorICAgICAgICAgICAgbG9nLmRlYnVnKCJWaXN1YWwgQysrIGlzIG5vdCByZWdpc3RlcmVkIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgYmVzdF92ZXJzaW9uID0gMAorICAgICAgICBiZXN0X2RpciA9IE5vbmUKKyAgICAgICAgZm9yIGkgaW4gY291bnQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2LCB2Y19kaXIsIHZ0ID0gd2lucmVnLkVudW1WYWx1ZShrZXksIGkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgdiBhbmQgdnQgPT0gd2lucmVnLlJFR19TWiBhbmQgb3MucGF0aC5pc2Rpcih2Y19kaXIpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGludChmbG9hdCh2KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSAxNCBhbmQgdmVyc2lvbiA+IGJlc3RfdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgYmVzdF92ZXJzaW9uLCBiZXN0X2RpciA9IHZlcnNpb24sIHZjX2RpcgorICAgICAgICBpZiBub3QgYmVzdF92ZXJzaW9uOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJObyBzdWl0YWJsZSBWaXN1YWwgQysrIHZlcnNpb24gZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB2Y3ZhcnNhbGwgPSBvcy5wYXRoLmpvaW4oYmVzdF9kaXIsICJ2Y3ZhcnNhbGwuYmF0IikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHZjdmFyc2FsbCk6CisgICAgICAgICAgICBsb2cuZGVidWcoIiVzIGNhbm5vdCBiZSBmb3VuZCIsIHZjdmFyc2FsbCkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgcmV0dXJuIHZjdmFyc2FsbAorCitkZWYgX2dldF92Y19lbnYocGxhdF9zcGVjKToKKyAgICBpZiBvcy5nZXRlbnYoIkRJU1RVVElMU19VU0VfU0RLIik6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBrZXkubG93ZXIoKTogdmFsdWUKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKQorICAgICAgICB9CisKKyAgICB2Y3ZhcnNhbGwgPSBfZmluZF92Y3ZhcnNhbGwoKQorICAgIGlmIG5vdCB2Y3ZhcnNhbGw6CisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZjdmFyc2FsbC5iYXQiKQorCisgICAgdHJ5OgorICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICcie30iIHt9ICYmIHNldCcuZm9ybWF0KHZjdmFyc2FsbCwgcGxhdF9zcGVjKSwKKyAgICAgICAgICAgIHNoZWxsPVRydWUsCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGM6CisgICAgICAgIGxvZy5lcnJvcihleGMub3V0cHV0KQorICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCJFcnJvciBleGVjdXRpbmcge30iCisgICAgICAgICAgICAgICAgLmZvcm1hdChleGMuY21kKSkKKworICAgIHJldHVybiB7CisgICAgICAgIGtleS5sb3dlcigpOiB2YWx1ZQorICAgICAgICBmb3Iga2V5LCBfLCB2YWx1ZSBpbgorICAgICAgICAobGluZS5wYXJ0aXRpb24oJz0nKSBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpKQorICAgICAgICBpZiBrZXkgYW5kIHZhbHVlCisgICAgfQorCitkZWYgX2ZpbmRfZXhlKGV4ZSwgcGF0aHM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHBhdGggdG8gYW4gTVNWQyBleGVjdXRhYmxlIHByb2dyYW0uCisKKyAgICBUcmllcyB0byBmaW5kIHRoZSBwcm9ncmFtIGluIHNldmVyYWwgcGxhY2VzOiBmaXJzdCwgb25lIG9mIHRoZQorICAgIE1TVkMgcHJvZ3JhbSBzZWFyY2ggcGF0aHMgZnJvbSB0aGUgcmVnaXN0cnk7IG5leHQsIHRoZSBkaXJlY3RvcmllcworICAgIGluIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgSWYgYW55IG9mIHRob3NlIHdvcmssIHJldHVybiBhbgorICAgIGFic29sdXRlIHBhdGggdGhhdCBpcyBrbm93biB0byBleGlzdC4gIElmIG5vbmUgb2YgdGhlbSB3b3JrLCBqdXN0CisgICAgcmV0dXJuIHRoZSBvcmlnaW5hbCBwcm9ncmFtIG5hbWUsICdleGUnLgorICAgICIiIgorICAgIGlmIG5vdCBwYXRoczoKKyAgICAgICAgcGF0aHMgPSBvcy5nZXRlbnYoJ3BhdGgnKS5zcGxpdChvcy5wYXRoc2VwKQorICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgocCksIGV4ZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgorICAgICAgICAgICAgcmV0dXJuIGZuCisgICAgcmV0dXJuIGV4ZQorCisjIEEgbWFwIGtleWVkIGJ5IGdldF9wbGF0Zm9ybSgpIHJldHVybiB2YWx1ZXMgdG8gdmFsdWVzIGFjY2VwdGVkIGJ5CisjICd2Y3ZhcnNhbGwuYmF0Jy4gIE5vdGUgYSBjcm9zcy1jb21waWxlIG1heSBjb21iaW5lIHRoZXNlIChlZywgJ3g4Nl9hbWQ2NCcgaXMKKyMgdGhlIHBhcmFtIHRvIGNyb3NzLWNvbXBpbGUgb24geDg2IHRhcmdldHRpbmcgYW1kNjQuKQorUExBVF9UT19WQ1ZBUlMgPSB7CisgICAgJ3dpbjMyJyA6ICd4ODYnLAorICAgICd3aW4tYW1kNjQnIDogJ2FtZDY0JywKK30KKworY2xhc3MgTVNWQ0NvbXBpbGVyKENDb21waWxlcikgOgorICAgICIiIkNvbmNyZXRlIGNsYXNzIHRoYXQgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdG8gTWljcm9zb2Z0IFZpc3VhbCBDKyssCisgICAgICAgYXMgZGVmaW5lZCBieSB0aGUgQ0NvbXBpbGVyIGFic3RyYWN0IGNsYXNzLiIiIgorCisgICAgY29tcGlsZXJfdHlwZSA9ICdtc3ZjJworCisgICAgIyBKdXN0IHNldCB0aGlzIHNvIENDb21waWxlcidzIGNvbnN0cnVjdG9yIGRvZXNuJ3QgYmFyZi4gIFdlIGN1cnJlbnRseQorICAgICMgZG9uJ3QgdXNlIHRoZSAnc2V0X2V4ZWN1dGFibGVzKCknIGJ1cmVhdWNyYWN5IHByb3ZpZGVkIGJ5IENDb21waWxlciwKKyAgICAjIGFzIGl0IHJlYWxseSBpc24ndCBuZWNlc3NhcnkgZm9yIHRoaXMgc29ydCBvZiBzaW5nbGUtY29tcGlsZXIgY2xhc3MuCisgICAgIyBXb3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBjb25zaXN0ZW50IGludGVyZmFjZSB3aXRoIFVuaXhDQ29tcGlsZXIsCisgICAgIyB0aG91Z2gsIHNvIGl0J3Mgd29ydGggdGhpbmtpbmcgYWJvdXQuCisgICAgZXhlY3V0YWJsZXMgPSB7fQorCisgICAgIyBQcml2YXRlIGNsYXNzIGRhdGEgKG5lZWQgdG8gZGlzdGluZ3Vpc2ggQyBmcm9tIEMrKyBzb3VyY2UgZm9yIGNvbXBpbGVyKQorICAgIF9jX2V4dGVuc2lvbnMgPSBbJy5jJ10KKyAgICBfY3BwX2V4dGVuc2lvbnMgPSBbJy5jYycsICcuY3BwJywgJy5jeHgnXQorICAgIF9yY19leHRlbnNpb25zID0gWycucmMnXQorICAgIF9tY19leHRlbnNpb25zID0gWycubWMnXQorCisgICAgIyBOZWVkZWQgZm9yIHRoZSBmaWxlbmFtZSBnZW5lcmF0aW9uIG1ldGhvZHMgcHJvdmlkZWQgYnkgdGhlCisgICAgIyBiYXNlIGNsYXNzLCBDQ29tcGlsZXIuCisgICAgc3JjX2V4dGVuc2lvbnMgPSAoX2NfZXh0ZW5zaW9ucyArIF9jcHBfZXh0ZW5zaW9ucyArCisgICAgICAgICAgICAgICAgICAgICAgX3JjX2V4dGVuc2lvbnMgKyBfbWNfZXh0ZW5zaW9ucykKKyAgICByZXNfZXh0ZW5zaW9uID0gJy5yZXMnCisgICAgb2JqX2V4dGVuc2lvbiA9ICcub2JqJworICAgIHN0YXRpY19saWJfZXh0ZW5zaW9uID0gJy5saWInCisgICAgc2hhcmVkX2xpYl9leHRlbnNpb24gPSAnLmRsbCcKKyAgICBzdGF0aWNfbGliX2Zvcm1hdCA9IHNoYXJlZF9saWJfZm9ybWF0ID0gJyVzJXMnCisgICAgZXhlX2V4dGVuc2lvbiA9ICcuZXhlJworCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT0wLCBkcnlfcnVuPTAsIGZvcmNlPTApOgorICAgICAgICBDQ29tcGlsZXIuX19pbml0X18gKHNlbGYsIHZlcmJvc2UsIGRyeV9ydW4sIGZvcmNlKQorICAgICAgICAjIHRhcmdldCBwbGF0Zm9ybSAoLnBsYXRfbmFtZSBpcyBjb25zaXN0ZW50IHdpdGggJ2JkaXN0JykKKyAgICAgICAgc2VsZi5wbGF0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgZGVmIGluaXRpYWxpemUoc2VsZiwgcGxhdF9uYW1lPU5vbmUpOgorICAgICAgICAjIG11bHRpLWluaXQgbWVhbnMgd2Ugd291bGQgbmVlZCB0byBjaGVjayBwbGF0Zm9ybSBzYW1lIGVhY2ggdGltZS4uLgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuaW5pdGlhbGl6ZWQsICJkb24ndCBpbml0IG11bHRpcGxlIHRpbWVzIgorICAgICAgICBpZiBwbGF0X25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHBsYXRfbmFtZSA9IGdldF9wbGF0Zm9ybSgpCisgICAgICAgICMgc2FuaXR5IGNoZWNrIGZvciBwbGF0Zm9ybXMgdG8gcHJldmVudCBvYnNjdXJlIGVycm9ycyBsYXRlci4KKyAgICAgICAgaWYgcGxhdF9uYW1lIG5vdCBpbiBQTEFUX1RPX1ZDVkFSUzoKKyAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoIi0tcGxhdC1uYW1lIG11c3QgYmUgb25lIG9mIHt9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHR1cGxlKFBMQVRfVE9fVkNWQVJTKSkpCisKKyAgICAgICAgIyBPbiB4ODYsICd2Y3ZhcnNhbGwuYmF0IGFtZDY0JyBjcmVhdGVzIGFuIGVudiB0aGF0IGRvZXNuJ3Qgd29yazsKKyAgICAgICAgIyB0byBjcm9zcyBjb21waWxlLCB5b3UgdXNlICd4ODZfYW1kNjQnLgorICAgICAgICAjIE9uIEFNRDY0LCAndmN2YXJzYWxsLmJhdCBhbWQ2NCcgaXMgYSBuYXRpdmUgYnVpbGQgZW52OyB0byBjcm9zcworICAgICAgICAjIGNvbXBpbGUgdXNlICd4ODYnIChpZSwgaXQgcnVucyB0aGUgeDg2IGNvbXBpbGVyIGRpcmVjdGx5KQorICAgICAgICBpZiBwbGF0X25hbWUgPT0gZ2V0X3BsYXRmb3JtKCkgb3IgcGxhdF9uYW1lID09ICd3aW4zMic6CisgICAgICAgICAgICAjIG5hdGl2ZSBidWlsZCBvciBjcm9zcy1jb21waWxlIHRvIHdpbjMyCisgICAgICAgICAgICBwbGF0X3NwZWMgPSBQTEFUX1RPX1ZDVkFSU1twbGF0X25hbWVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGNyb3NzIGNvbXBpbGUgZnJvbSB3aW4zMiAtPiBzb21lIDY0Yml0CisgICAgICAgICAgICBwbGF0X3NwZWMgPSAne31fe30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBQTEFUX1RPX1ZDVkFSU1tnZXRfcGxhdGZvcm0oKV0sCisgICAgICAgICAgICAgICAgUExBVF9UT19WQ1ZBUlNbcGxhdF9uYW1lXQorICAgICAgICAgICAgKQorCisgICAgICAgIHZjX2VudiA9IF9nZXRfdmNfZW52KHBsYXRfc3BlYykKKyAgICAgICAgaWYgbm90IHZjX2VudjoKKyAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoIlVuYWJsZSB0byBmaW5kIGEgY29tcGF0aWJsZSAiCisgICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8gaW5zdGFsbGF0aW9uLiIpCisKKyAgICAgICAgcGF0aHMgPSB2Y19lbnYuZ2V0KCdwYXRoJywgJycpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgIHNlbGYuY2MgPSBfZmluZF9leGUoImNsLmV4ZSIsIHBhdGhzKQorICAgICAgICBzZWxmLmxpbmtlciA9IF9maW5kX2V4ZSgibGluay5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5saWIgPSBfZmluZF9leGUoImxpYi5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5yYyA9IF9maW5kX2V4ZSgicmMuZXhlIiwgcGF0aHMpICAgIyByZXNvdXJjZSBjb21waWxlcgorICAgICAgICBzZWxmLm1jID0gX2ZpbmRfZXhlKCJtYy5leGUiLCBwYXRocykgICAjIG1lc3NhZ2UgY29tcGlsZXIKKyAgICAgICAgc2VsZi5tdCA9IF9maW5kX2V4ZSgibXQuZXhlIiwgcGF0aHMpICAgIyBtZXNzYWdlIGNvbXBpbGVyCisKKyAgICAgICAgZm9yIGRpciBpbiB2Y19lbnYuZ2V0KCdpbmNsdWRlJywgJycpLnNwbGl0KG9zLnBhdGhzZXApOgorICAgICAgICAgICAgaWYgZGlyOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkX2luY2x1ZGVfZGlyKGRpcikKKworICAgICAgICBmb3IgZGlyIGluIHZjX2Vudi5nZXQoJ2xpYicsICcnKS5zcGxpdChvcy5wYXRoc2VwKToKKyAgICAgICAgICAgIGlmIGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9saWJyYXJ5X2RpcihkaXIpCisKKyAgICAgICAgc2VsZi5wcmVwcm9jZXNzX29wdGlvbnMgPSBOb25lCisgICAgICAgIHNlbGYuY29tcGlsZV9vcHRpb25zID0gWworICAgICAgICAgICAgJy9ub2xvZ28nLCAnL094JywgJy9NRCcsICcvVzMnLCAnL0dMJywgJy9ETkRFQlVHJworICAgICAgICBdCisgICAgICAgIHNlbGYuY29tcGlsZV9vcHRpb25zX2RlYnVnID0gWworICAgICAgICAgICAgJy9ub2xvZ28nLCAnL09kJywgJy9NRGQnLCAnL1ppJywgJy9XMycsICcvRF9ERUJVRycKKyAgICAgICAgXQorCisgICAgICAgIHNlbGYubGRmbGFnc19zaGFyZWQgPSBbCisgICAgICAgICAgICAnL25vbG9nbycsICcvRExMJywgJy9JTkNSRU1FTlRBTDpOTycKKyAgICAgICAgXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc2hhcmVkX2RlYnVnID0gWworICAgICAgICAgICAgJy9ub2xvZ28nLCAnL0RMTCcsICcvSU5DUkVNRU5UQUw6bm8nLCAnL0RFQlVHOkZVTEwnCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5sZGZsYWdzX3N0YXRpYyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJworICAgICAgICBdCisKKyAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IFRydWUKKworICAgICMgLS0gV29ya2VyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBkZWYgb2JqZWN0X2ZpbGVuYW1lcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfZGlyPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj0nJyk6CisgICAgICAgIGV4dF9tYXAgPSB7ZXh0OiBzZWxmLm9ial9leHRlbnNpb24gZm9yIGV4dCBpbiBzZWxmLnNyY19leHRlbnNpb25zfQorICAgICAgICBleHRfbWFwLnVwZGF0ZSgoZXh0LCBzZWxmLnJlc19leHRlbnNpb24pCisgICAgICAgICAgICAgICAgZm9yIGV4dCBpbiBzZWxmLl9yY19leHRlbnNpb25zICsgc2VsZi5fbWNfZXh0ZW5zaW9ucykKKworICAgICAgICBkZWYgbWFrZV9vdXRfcGF0aChwKToKKyAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQocCkKKyAgICAgICAgICAgIGlmIHN0cmlwX2RpcjoKKyAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5iYXNlbmFtZShiYXNlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfLCBiYXNlID0gb3MucGF0aC5zcGxpdGRyaXZlKGJhc2UpCisgICAgICAgICAgICAgICAgaWYgYmFzZS5zdGFydHN3aXRoKChvcy5wYXRoLnNlcCwgb3MucGF0aC5hbHRzZXApKToKKyAgICAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VbMTpdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UgKyBleHRfbWFwW2V4dF0KKyAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgICAgICAgICAjIEJldHRlciB0byByYWlzZSBhbiBleGNlcHRpb24gaW5zdGVhZCBvZiBzaWxlbnRseSBjb250aW51aW5nCisgICAgICAgICAgICAgICAgIyBhbmQgbGF0ZXIgY29tcGxhaW4gYWJvdXQgc291cmNlcyBhbmQgdGFyZ2V0cyBoYXZpbmcKKyAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBsZW5ndGhzCisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKCJEb24ndCBrbm93IGhvdyB0byBjb21waWxlIHt9Ii5mb3JtYXQocCkpCisKKyAgICAgICAgb3V0cHV0X2RpciA9IG91dHB1dF9kaXIgb3IgJycKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBtYWtlX291dF9wYXRoKHNyY19uYW1lKSkKKyAgICAgICAgICAgIGZvciBzcmNfbmFtZSBpbiBzb3VyY2VfZmlsZW5hbWVzCisgICAgICAgIF0KKworCisgICAgZGVmIGNvbXBpbGUoc2VsZiwgc291cmNlcywKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPU5vbmUsIG1hY3Jvcz1Ob25lLCBpbmNsdWRlX2RpcnM9Tm9uZSwgZGVidWc9MCwKKyAgICAgICAgICAgICAgICBleHRyYV9wcmVhcmdzPU5vbmUsIGV4dHJhX3Bvc3RhcmdzPU5vbmUsIGRlcGVuZHM9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBjb21waWxlX2luZm8gPSBzZWxmLl9zZXR1cF9jb21waWxlKG91dHB1dF9kaXIsIG1hY3JvcywgaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMsIGRlcGVuZHMsIGV4dHJhX3Bvc3RhcmdzKQorICAgICAgICBtYWNyb3MsIG9iamVjdHMsIGV4dHJhX3Bvc3RhcmdzLCBwcF9vcHRzLCBidWlsZCA9IGNvbXBpbGVfaW5mbworCisgICAgICAgIGNvbXBpbGVfb3B0cyA9IGV4dHJhX3ByZWFyZ3Mgb3IgW10KKyAgICAgICAgY29tcGlsZV9vcHRzLmFwcGVuZCgnL2MnKQorICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgIGNvbXBpbGVfb3B0cy5leHRlbmQoc2VsZi5jb21waWxlX29wdGlvbnNfZGVidWcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21waWxlX29wdHMuZXh0ZW5kKHNlbGYuY29tcGlsZV9vcHRpb25zKQorCisKKyAgICAgICAgYWRkX2NwcF9vcHRzID0gRmFsc2UKKworICAgICAgICBmb3Igb2JqIGluIG9iamVjdHM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3JjLCBleHQgPSBidWlsZFtvYmpdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGRlYnVnOgorICAgICAgICAgICAgICAgICMgcGFzcyB0aGUgZnVsbCBwYXRobmFtZSB0byBNU1ZDIGluIGRlYnVnIG1vZGUsCisgICAgICAgICAgICAgICAgIyB0aGlzIGFsbG93cyB0aGUgZGVidWdnZXIgdG8gZmluZCB0aGUgc291cmNlIGZpbGUKKyAgICAgICAgICAgICAgICAjIHdpdGhvdXQgYXNraW5nIHRoZSB1c2VyIHRvIGJyb3dzZSBmb3IgaXQKKyAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmFic3BhdGgoc3JjKQorCisgICAgICAgICAgICBpZiBleHQgaW4gc2VsZi5fY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIGlucHV0X29wdCA9ICIvVGMiICsgc3JjCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9jcHBfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSAiL1RwIiArIHNyYworICAgICAgICAgICAgICAgIGFkZF9jcHBfb3B0cyA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgZXh0IGluIHNlbGYuX3JjX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgIyBjb21waWxlIC5SQyB0byAuUkVTIGZpbGUKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSBzcmMKKyAgICAgICAgICAgICAgICBvdXRwdXRfb3B0ID0gIi9mbyIgKyBvYmoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYucmNdICsgcHBfb3B0cyArIFtvdXRwdXRfb3B0LCBpbnB1dF9vcHRdKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9tY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgICMgQ29tcGlsZSAuTUMgdG8gLlJDIGZpbGUgdG8gLlJFUyBmaWxlLgorICAgICAgICAgICAgICAgICMgICAqICctaCBkaXInIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IGZvciB0aGUKKyAgICAgICAgICAgICAgICAjICAgICBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlCisgICAgICAgICAgICAgICAgIyAgICogJy1yIGRpcicgc3BlY2lmaWVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICMgICAgIGdlbmVyYXRlZCBSQyBmaWxlIGFuZCB0aGUgYmluYXJ5IG1lc3NhZ2UgcmVzb3VyY2UKKyAgICAgICAgICAgICAgICAjICAgICBpdCBpbmNsdWRlcworICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIEZvciBub3cgKHNpbmNlIHRoZXJlIGFyZSBubyBvcHRpb25zIHRvIGNoYW5nZSB0aGlzKSwKKyAgICAgICAgICAgICAgICAjIHdlIHVzZSB0aGUgc291cmNlLWRpcmVjdG9yeSBmb3IgdGhlIGluY2x1ZGUgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAjIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBSQyBmaWxlIGFuZCBtZXNzYWdlCisgICAgICAgICAgICAgICAgIyByZXNvdXJjZXMuIFRoaXMgd29ya3MgYXQgbGVhc3QgZm9yIHdpbjMyYWxsLgorICAgICAgICAgICAgICAgIGhfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNyYykKKyAgICAgICAgICAgICAgICByY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUob2JqKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCBjb21waWxlIC5NQyB0byAuUkMgYW5kIC5IIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihbc2VsZi5tYywgJy1oJywgaF9kaXIsICctcicsIHJjX2Rpciwgc3JjXSkKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgXyA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSAoc3JjKSkKKyAgICAgICAgICAgICAgICAgICAgcmNfZmlsZSA9IG9zLnBhdGguam9pbihyY19kaXIsIGJhc2UgKyAnLnJjJykKKyAgICAgICAgICAgICAgICAgICAgIyB0aGVuIGNvbXBpbGUgLlJDIHRvIC5SRVMgZmlsZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLnJjLCAiL2ZvIiArIG9iaiwgcmNfZmlsZV0pCisKKyAgICAgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIGhvdyB0byBoYW5kbGUgdGhpcyBmaWxlPworICAgICAgICAgICAgICAgIHJhaXNlIENvbXBpbGVFcnJvcigiRG9uJ3Qga25vdyBob3cgdG8gY29tcGlsZSB7fSB0byB7fSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzcmMsIG9iaikpCisKKyAgICAgICAgICAgIGFyZ3MgPSBbc2VsZi5jY10gKyBjb21waWxlX29wdHMgKyBwcF9vcHRzCisgICAgICAgICAgICBpZiBhZGRfY3BwX29wdHM6CisgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy9FSHNjJykKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGlucHV0X29wdCkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIvRm8iICsgb2JqKQorICAgICAgICAgICAgYXJncy5leHRlbmQoZXh0cmFfcG9zdGFyZ3MpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKGFyZ3MpCisgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IobXNnKQorCisgICAgICAgIHJldHVybiBvYmplY3RzCisKKworICAgIGRlZiBjcmVhdGVfc3RhdGljX2xpYihzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbGlibmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbGFuZz1Ob25lKToKKworICAgICAgICBpZiBub3Qgc2VsZi5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZSgpCisgICAgICAgIG9iamVjdHMsIG91dHB1dF9kaXIgPSBzZWxmLl9maXhfb2JqZWN0X2FyZ3Mob2JqZWN0cywgb3V0cHV0X2RpcikKKyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKG91dHB1dF9saWJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1vdXRwdXRfZGlyKQorCisgICAgICAgIGlmIHNlbGYuX25lZWRfbGluayhvYmplY3RzLCBvdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAgICAgbGliX2FyZ3MgPSBvYmplY3RzICsgWycvT1VUOicgKyBvdXRwdXRfZmlsZW5hbWVdCisgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICBwYXNzICMgWFhYIHdoYXQgZ29lcyBoZXJlPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubGliXSArIGxpYl9hcmdzKQorICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgcmFpc2UgTGliRXJyb3IobXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJza2lwcGluZyAlcyAodXAtdG8tZGF0ZSkiLCBvdXRwdXRfZmlsZW5hbWUpCisKKworICAgIGRlZiBsaW5rKHNlbGYsCisgICAgICAgICAgICAgdGFyZ2V0X2Rlc2MsCisgICAgICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICBvdXRwdXRfZmlsZW5hbWUsCisgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLAorICAgICAgICAgICAgIGxpYnJhcmllcz1Ob25lLAorICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1Ob25lLAorICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPU5vbmUsCisgICAgICAgICAgICAgZXhwb3J0X3N5bWJvbHM9Tm9uZSwKKyAgICAgICAgICAgICBkZWJ1Zz0wLAorICAgICAgICAgICAgIGV4dHJhX3ByZWFyZ3M9Tm9uZSwKKyAgICAgICAgICAgICBleHRyYV9wb3N0YXJncz1Ob25lLAorICAgICAgICAgICAgIGJ1aWxkX3RlbXA9Tm9uZSwKKyAgICAgICAgICAgICB0YXJnZXRfbGFuZz1Ob25lKToKKworICAgICAgICBpZiBub3Qgc2VsZi5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZSgpCisgICAgICAgIG9iamVjdHMsIG91dHB1dF9kaXIgPSBzZWxmLl9maXhfb2JqZWN0X2FyZ3Mob2JqZWN0cywgb3V0cHV0X2RpcikKKyAgICAgICAgZml4ZWRfYXJncyA9IHNlbGYuX2ZpeF9saWJfYXJncyhsaWJyYXJpZXMsIGxpYnJhcnlfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycykKKyAgICAgICAgbGlicmFyaWVzLCBsaWJyYXJ5X2RpcnMsIHJ1bnRpbWVfbGlicmFyeV9kaXJzID0gZml4ZWRfYXJncworCisgICAgICAgIGlmIHJ1bnRpbWVfbGlicmFyeV9kaXJzOgorICAgICAgICAgICAgc2VsZi53YXJuKCJJIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoICdydW50aW1lX2xpYnJhcnlfZGlycyc6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgKyBzdHIocnVudGltZV9saWJyYXJ5X2RpcnMpKQorCisgICAgICAgIGxpYl9vcHRzID0gZ2VuX2xpYl9vcHRpb25zKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycywgcnVudGltZV9saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcykKKyAgICAgICAgaWYgb3V0cHV0X2RpciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZW5hbWUpCisKKyAgICAgICAgaWYgc2VsZi5fbmVlZF9saW5rKG9iamVjdHMsIG91dHB1dF9maWxlbmFtZSk6CisgICAgICAgICAgICBsZGZsYWdzID0gKHNlbGYubGRmbGFnc19zaGFyZWRfZGVidWcgaWYgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZWxmLmxkZmxhZ3Nfc2hhcmVkKQorICAgICAgICAgICAgaWYgdGFyZ2V0X2Rlc2MgPT0gQ0NvbXBpbGVyLkVYRUNVVEFCTEU6CisgICAgICAgICAgICAgICAgbGRmbGFncyA9IGxkZmxhZ3NbMTpdCisKKyAgICAgICAgICAgIGV4cG9ydF9vcHRzID0gW10KKyAgICAgICAgICAgIGZvciBzeW0gaW4gKGV4cG9ydF9zeW1ib2xzIG9yIFtdKToKKyAgICAgICAgICAgICAgICBleHBvcnRfb3B0cy5hcHBlbmQoIi9FWFBPUlQ6IiArIHN5bSkKKworICAgICAgICAgICAgbGRfYXJncyA9IChsZGZsYWdzICsgbGliX29wdHMgKyBleHBvcnRfb3B0cyArCisgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgKyBbJy9PVVQ6JyArIG91dHB1dF9maWxlbmFtZV0pCisKKyAgICAgICAgICAgICMgVGhlIE1TVkMgbGlua2VyIGdlbmVyYXRlcyAubGliIGFuZCAuZXhwIGZpbGVzLCB3aGljaCBjYW5ub3QgYmUKKyAgICAgICAgICAgICMgc3VwcHJlc3NlZCBieSBhbnkgbGlua2VyIHN3aXRjaGVzLiBUaGUgLmxpYiBmaWxlcyBtYXkgZXZlbiBiZQorICAgICAgICAgICAgIyBuZWVkZWQhIE1ha2Ugc3VyZSB0aGV5IGFyZSBnZW5lcmF0ZWQgaW4gdGhlIHRlbXBvcmFyeSBidWlsZAorICAgICAgICAgICAgIyBkaXJlY3RvcnkuIFNpbmNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbmFtZXMgZm9yIGRlYnVnIGFuZCByZWxlYXNlCisgICAgICAgICAgICAjIGJ1aWxkcywgdGhleSBjYW4gZ28gaW50byB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBidWlsZF90ZW1wID0gb3MucGF0aC5kaXJuYW1lKG9iamVjdHNbMF0pCisgICAgICAgICAgICBpZiBleHBvcnRfc3ltYm9scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAoZGxsX25hbWUsIGRsbF9leHQpID0gb3MucGF0aC5zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShvdXRwdXRfZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGltcGxpYl9maWxlID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBidWlsZF90ZW1wLAorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZmlsZW5hbWUoZGxsX25hbWUpKQorICAgICAgICAgICAgICAgIGxkX2FyZ3MuYXBwZW5kICgnL0lNUExJQjonICsgaW1wbGliX2ZpbGUpCisKKyAgICAgICAgICAgIHNlbGYubWFuaWZlc3Rfc2V0dXBfbGRhcmdzKG91dHB1dF9maWxlbmFtZSwgYnVpbGRfdGVtcCwgbGRfYXJncykKKworICAgICAgICAgICAgaWYgZXh0cmFfcHJlYXJnczoKKyAgICAgICAgICAgICAgICBsZF9hcmdzWzowXSA9IGV4dHJhX3ByZWFyZ3MKKyAgICAgICAgICAgIGlmIGV4dHJhX3Bvc3RhcmdzOgorICAgICAgICAgICAgICAgIGxkX2FyZ3MuZXh0ZW5kKGV4dHJhX3Bvc3RhcmdzKQorCisgICAgICAgICAgICBzZWxmLm1rcGF0aChvcy5wYXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVuYW1lKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLmxpbmtlcl0gKyBsZF9hcmdzKQorICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgcmFpc2UgTGlua0Vycm9yKG1zZykKKworICAgICAgICAgICAgIyBlbWJlZCB0aGUgbWFuaWZlc3QKKyAgICAgICAgICAgICMgWFhYIC0gdGhpcyBpcyBzb21ld2hhdCBmcmFnaWxlIC0gaWYgbXQuZXhlIGZhaWxzLCBkaXN0dXRpbHMKKyAgICAgICAgICAgICMgd2lsbCBzdGlsbCBjb25zaWRlciB0aGUgRExMIHVwLXRvLWRhdGUsIGJ1dCBpdCB3aWxsIG5vdCBoYXZlIGEKKyAgICAgICAgICAgICMgbWFuaWZlc3QuICBNYXliZSB3ZSBzaG91bGQgbGluayB0byBhIHRlbXAgZmlsZT8gIE9UT0gsIHRoYXQKKyAgICAgICAgICAgICMgaW1wbGllcyBhIGJ1aWxkIGVudmlyb25tZW50IGVycm9yIHRoYXQgc2hvdWxkbid0IGdvIHVuZGV0ZWN0ZWQuCisgICAgICAgICAgICBtZmluZm8gPSBzZWxmLm1hbmlmZXN0X2dldF9lbWJlZF9pbmZvKHRhcmdldF9kZXNjLCBsZF9hcmdzKQorICAgICAgICAgICAgaWYgbWZpbmZvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG1mZmlsZW5hbWUsIG1maWQgPSBtZmluZm8KKyAgICAgICAgICAgICAgICBvdXRfYXJnID0gJy1vdXRwdXRyZXNvdXJjZTp7fTt7fScuZm9ybWF0KG91dHB1dF9maWxlbmFtZSwgbWZpZCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubXQsICctbm9sb2dvJywgJy1tYW5pZmVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mZmlsZW5hbWUsIG91dF9hcmddKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBMaW5rRXJyb3IobXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJza2lwcGluZyAlcyAodXAtdG8tZGF0ZSkiLCBvdXRwdXRfZmlsZW5hbWUpCisKKyAgICBkZWYgbWFuaWZlc3Rfc2V0dXBfbGRhcmdzKHNlbGYsIG91dHB1dF9maWxlbmFtZSwgYnVpbGRfdGVtcCwgbGRfYXJncyk6CisgICAgICAgICMgSWYgd2UgbmVlZCBhIG1hbmlmZXN0IGF0IGFsbCwgYW4gZW1iZWRkZWQgbWFuaWZlc3QgaXMgcmVjb21tZW5kZWQuCisgICAgICAgICMgU2VlIE1TRE4gYXJ0aWNsZSB0aXRsZWQKKyAgICAgICAgIyAiSG93IHRvOiBFbWJlZCBhIE1hbmlmZXN0IEluc2lkZSBhIEMvQysrIEFwcGxpY2F0aW9uIgorICAgICAgICAjIChjdXJyZW50bHkgYXQgaHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczIzNTU5MShWUy44MCkuYXNweCkKKyAgICAgICAgIyBBc2sgdGhlIGxpbmtlciB0byBnZW5lcmF0ZSB0aGUgbWFuaWZlc3QgaW4gdGhlIHRlbXAgZGlyLCBzbworICAgICAgICAjIHdlIGNhbiBjaGVjayBpdCwgYW5kIHBvc3NpYmx5IGVtYmVkIGl0LCBsYXRlci4KKyAgICAgICAgdGVtcF9tYW5pZmVzdCA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICBidWlsZF90ZW1wLAorICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUob3V0cHV0X2ZpbGVuYW1lKSArICIubWFuaWZlc3QiKQorICAgICAgICBsZF9hcmdzLmFwcGVuZCgnL01BTklGRVNURklMRTonICsgdGVtcF9tYW5pZmVzdCkKKworICAgIGRlZiBtYW5pZmVzdF9nZXRfZW1iZWRfaW5mbyhzZWxmLCB0YXJnZXRfZGVzYywgbGRfYXJncyk6CisgICAgICAgICMgSWYgYSBtYW5pZmVzdCBzaG91bGQgYmUgZW1iZWRkZWQsIHJldHVybiBhIHR1cGxlIG9mCisgICAgICAgICMgKG1hbmlmZXN0X2ZpbGVuYW1lLCByZXNvdXJjZV9pZCkuICBSZXR1cm5zIE5vbmUgaWYgbm8gbWFuaWZlc3QKKyAgICAgICAgIyBzaG91bGQgYmUgZW1iZWRkZWQuICBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTc4MzMgZm9yIHdoeQorICAgICAgICAjIHdlIHdhbnQgdG8gYXZvaWQgYW55IG1hbmlmZXN0IGZvciBleHRlbnNpb24gbW9kdWxlcyBpZiB3ZSBjYW4pCisgICAgICAgIGZvciBhcmcgaW4gbGRfYXJnczoKKyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCIvTUFOSUZFU1RGSUxFOiIpOgorICAgICAgICAgICAgICAgIHRlbXBfbWFuaWZlc3QgPSBhcmcuc3BsaXQoIjoiLCAxKVsxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIG5vIC9NQU5JRkVTVEZJTEUgc28gbm90aGluZyB0byBkby4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHRhcmdldF9kZXNjID09IENDb21waWxlci5FWEVDVVRBQkxFOgorICAgICAgICAgICAgIyBieSBkZWZhdWx0LCBleGVjdXRhYmxlcyBhbHdheXMgZ2V0IHRoZSBtYW5pZmVzdCB3aXRoIHRoZQorICAgICAgICAgICAgIyBDUlQgcmVmZXJlbmNlZC4KKyAgICAgICAgICAgIG1maWQgPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEV4dGVuc2lvbiBtb2R1bGVzIHRyeSBhbmQgYXZvaWQgYW55IG1hbmlmZXN0IGlmIHBvc3NpYmxlLgorICAgICAgICAgICAgbWZpZCA9IDIKKyAgICAgICAgICAgIHRlbXBfbWFuaWZlc3QgPSBzZWxmLl9yZW1vdmVfdmlzdWFsX2NfcmVmKHRlbXBfbWFuaWZlc3QpCisgICAgICAgIGlmIHRlbXBfbWFuaWZlc3QgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB0ZW1wX21hbmlmZXN0LCBtZmlkCisKKyAgICBkZWYgX3JlbW92ZV92aXN1YWxfY19yZWYoc2VsZiwgbWFuaWZlc3RfZmlsZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhlIFZpc3VhbCBDIHJ1bnRpbWUsIHNvIHRoZXkgd2lsbAorICAgICAgICAgICAgIyBmYWxsIHRocm91Z2ggdG8gdGhlIFZpc3VhbCBDIGRlcGVuZGVuY3kgb2YgUHl0aG9uLmV4ZS4KKyAgICAgICAgICAgICMgVGhpcyB3YXksIHdoZW4gaW5zdGFsbGVkIGZvciBhIHJlc3RyaWN0ZWQgdXNlciAoZS5nLgorICAgICAgICAgICAgIyBydW50aW1lcyBhcmUgbm90IGluIFdpblN4UyBmb2xkZXIsIGJ1dCBpbiBQeXRob24ncyBvd24KKyAgICAgICAgICAgICMgZm9sZGVyKSwgdGhlIHJ1bnRpbWVzIGRvIG5vdCBuZWVkIHRvIGJlIGluIGV2ZXJ5IGZvbGRlcgorICAgICAgICAgICAgIyB3aXRoIC5weWQncy4KKyAgICAgICAgICAgICMgUmV0dXJucyBlaXRoZXIgdGhlIGZpbGVuYW1lIG9mIHRoZSBtb2RpZmllZCBtYW5pZmVzdCBvcgorICAgICAgICAgICAgIyBOb25lIGlmIG5vIG1hbmlmZXN0IHNob3VsZCBiZSBlbWJlZGRlZC4KKyAgICAgICAgICAgIG1hbmlmZXN0X2YgPSBvcGVuKG1hbmlmZXN0X2ZpbGUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gbWFuaWZlc3RfZi5yZWFkKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgbWFuaWZlc3RfZi5jbG9zZSgpCisgICAgICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgKKyAgICAgICAgICAgICAgICByIiIiPGFzc2VtYmx5SWRlbnRpdHkuKj9uYW1lPSgifCcpTWljcm9zb2Z0XC4iIiJcCisgICAgICAgICAgICAgICAgciIiIlZDXGR7Mn1cLkNSVCgifCcpLio/KC8+fDwvYXNzZW1ibHlJZGVudGl0eT4pIiIiLAorICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkKKyAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQorICAgICAgICAgICAgcGF0dGVybiA9ICI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCisgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKKyAgICAgICAgICAgICMgTm93IHNlZSBpZiBhbnkgb3RoZXIgYXNzZW1ibGllcyBhcmUgcmVmZXJlbmNlZCAtIGlmIG5vdCwgd2UKKyAgICAgICAgICAgICMgZG9uJ3Qgd2FudCBhIG1hbmlmZXN0IGVtYmVkZGVkLgorICAgICAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoCisgICAgICAgICAgICAgICAgciIiIjxhc3NlbWJseUlkZW50aXR5Lio/bmFtZT0oPzoifCcpKC4rPykoPzoifCcpIiIiCisgICAgICAgICAgICAgICAgciIiIi4qPyg/Oi8+fDwvYXNzZW1ibHlJZGVudGl0eT4pIiIiLCByZS5ET1RBTEwpCisgICAgICAgICAgICBpZiByZS5zZWFyY2gocGF0dGVybiwgbWFuaWZlc3RfYnVmKSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIG1hbmlmZXN0X2YgPSBvcGVuKG1hbmlmZXN0X2ZpbGUsICd3JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtYW5pZmVzdF9mLndyaXRlKG1hbmlmZXN0X2J1ZikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3RfZmlsZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBtYW5pZmVzdF9mLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAjIC0tIE1pc2NlbGxhbmVvdXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgVGhlc2UgYXJlIGFsbCB1c2VkIGJ5IHRoZSAnZ2VuX2xpYl9vcHRpb25zKCkgZnVuY3Rpb24sIGluCisgICAgIyBjY29tcGlsZXIucHkuCisKKyAgICBkZWYgbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJldHVybiAiL0xJQlBBVEg6IiArIGRpcgorCisgICAgZGVmIHJ1bnRpbWVfbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoCisgICAgICAgICAgICAgICJkb24ndCBrbm93IGhvdyB0byBzZXQgcnVudGltZSBsaWJyYXJ5IHNlYXJjaCBwYXRoIGZvciBNU1ZDIikKKworICAgIGRlZiBsaWJyYXJ5X29wdGlvbihzZWxmLCBsaWIpOgorICAgICAgICByZXR1cm4gc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKGxpYikKKworICAgIGRlZiBmaW5kX2xpYnJhcnlfZmlsZShzZWxmLCBkaXJzLCBsaWIsIGRlYnVnPTApOgorICAgICAgICAjIFByZWZlciBhIGRlYnVnZ2luZyBsaWJyYXJ5IGlmIGZvdW5kIChhbmQgcmVxdWVzdGVkKSwgYnV0IGRlYWwKKyAgICAgICAgIyB3aXRoIGl0IGlmIHdlIGRvbid0IGhhdmUgb25lLgorICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgIHRyeV9uYW1lcyA9IFtsaWIgKyAiX2QiLCBsaWJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnlfbmFtZXMgPSBbbGliXQorICAgICAgICBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0cnlfbmFtZXM6CisgICAgICAgICAgICAgICAgbGliZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNlbGYubGlicmFyeV9maWxlbmFtZShuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaWJmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpYmZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT29wcywgZGlkbid0IGZpbmQgaXQgaW4gKmFueSogb2YgJ2RpcnMnCisgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCA0NDcwYmIwLi5iZWQxMzg0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtNTcsMjYgKzU3LDI4IEBACiAgICAgIiIiQ3JlYXRlIGEgKHBvc3NpYmx5IGNvbXByZXNzZWQpIHRhciBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlcgogICAgICdiYXNlX2RpcicuCiAKLSAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJjb21wcmVzcyIsICJiemlwMiIsIG9yIE5vbmUuCi0gICAgKGNvbXByZXNzIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yKQorICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgInh6IiwgImNvbXByZXNzIiwgb3IKKyAgICBOb25lLiAgKCJjb21wcmVzcyIgd2lsbCBiZSBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIpCiAKICAgICAnb3duZXInIGFuZCAnZ3JvdXAnIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBvd25lciBhbmQgYSBncm91cCBmb3IgdGhlCiAgICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgIHdpbGwgYmUgdXNlZC4KIAogICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9kaXInICsgICIudGFyIiwgcG9zc2libHkgcGx1cwotICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCAiLmJ6MiIgb3IgIi5aIikuCisgICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsICIuYnoyIiwgIi54eiIgb3IgIi5aIikuCiAKICAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgIiIiCi0gICAgdGFyX2NvbXByZXNzaW9uID0geydnemlwJzogJ2d6JywgJ2J6aXAyJzogJ2J6MicsIE5vbmU6ICcnLCAnY29tcHJlc3MnOiAnJ30KLSAgICBjb21wcmVzc19leHQgPSB7J2d6aXAnOiAnLmd6JywgJ2J6aXAyJzogJy5iejInLCAnY29tcHJlc3MnOiAnLlonfQorICAgIHRhcl9jb21wcmVzc2lvbiA9IHsnZ3ppcCc6ICdneicsICdiemlwMic6ICdiejInLCAneHonOiAneHonLCBOb25lOiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzJzogJyd9CisgICAgY29tcHJlc3NfZXh0ID0geydnemlwJzogJy5neicsICdiemlwMic6ICcuYnoyJywgJ3h6JzogJy54eicsCisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzcyc6ICcuWid9CiAKICAgICAjIGZsYWdzIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtLCBlYWNoIGVsZW1lbnQgb2YgbGlzdCB3aWxsIGJlIGFuIGFyZ3VtZW50CiAgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQua2V5cygpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnOiBtdXN0IGJlIE5vbmUsICdnemlwJywgJ2J6aXAyJyAiCi0gICAgICAgICAgICAgICJvciAnY29tcHJlc3MnIikKKyAgICAgICAgICAgICAgImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJzogbXVzdCBiZSBOb25lLCAnZ3ppcCcsICdiemlwMicsICIKKyAgICAgICAgICAgICAgIid4eicgb3IgJ2NvbXByZXNzJyIpCiAKICAgICBhcmNoaXZlX25hbWUgPSBiYXNlX25hbWUgKyAnLnRhcicKICAgICBpZiBjb21wcmVzcyAhPSAnY29tcHJlc3MnOgpAQCAtMTc3LDYgKzE3OSw3IEBACiBBUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAgJ2d6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnZ3ppcCcpXSwgImd6aXAnZWQgdGFyLWZpbGUiKSwKICAgICAnYnp0YXInOiAobWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdiemlwMicpXSwgImJ6aXAyJ2VkIHRhci1maWxlIiksCisgICAgJ3h6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAneHonKV0sICJ4eidlZCB0YXItZmlsZSIpLAogICAgICd6dGFyJzogIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2NvbXByZXNzJyldLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICd0YXInOiAgIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgTm9uZSldLCAidW5jb21wcmVzc2VkIHRhciBmaWxlIiksCiAgICAgJ3ppcCc6ICAgKG1ha2VfemlwZmlsZSwgW10sIlpJUCBmaWxlIikKQEAgLTE5Nyw4ICsyMDAsOCBAQAogICAgICIiIkNyZWF0ZSBhbiBhcmNoaXZlIGZpbGUgKGVnLiB6aXAgb3IgdGFyKS4KIAogICAgICdiYXNlX25hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZSwgbWludXMgYW55IGZvcm1hdC1zcGVjaWZpYwotICAgIGV4dGVuc2lvbjsgJ2Zvcm1hdCcgaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgInppcCIsICJ0YXIiLCAienRhciIsCi0gICAgb3IgImd6dGFyIi4KKyAgICBleHRlbnNpb247ICdmb3JtYXQnIGlzIHRoZSBhcmNoaXZlIGZvcm1hdDogb25lIG9mICJ6aXAiLCAidGFyIiwgImd6dGFyIiwKKyAgICAiYnp0YXIiLCAieHp0YXIiLCBvciAienRhciIuCiAKICAgICAncm9vdF9kaXInIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCiAgICAgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICdyb290X2RpcicgYmVmb3JlIGNyZWF0aW5nIHRoZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQppbmRleCA5MTFlODRkLi5iN2RmMzk0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQpAQCAtOTU5LDcgKzk1OSw3IEBACiAjIGlzIGFzc3VtZWQgdG8gYmUgaW4gdGhlICdkaXN0dXRpbHMnIHBhY2thZ2UuKQogY29tcGlsZXJfY2xhc3MgPSB7ICd1bml4JzogICAgKCd1bml4Y2NvbXBpbGVyJywgJ1VuaXhDQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCBVTklYLXN0eWxlIGNvbXBpbGVyIiksCi0gICAgICAgICAgICAgICAgICAgJ21zdmMnOiAgICAoJ21zdmNjb21waWxlcicsICdNU1ZDQ29tcGlsZXInLAorICAgICAgICAgICAgICAgICAgICdtc3ZjJzogICAgKCdfbXN2Y2NvbXBpbGVyJywgJ01TVkNDb21waWxlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc29mdCBWaXN1YWwgQysrIiksCiAgICAgICAgICAgICAgICAgICAgJ2N5Z3dpbic6ICAoJ2N5Z3dpbmNjb21waWxlcicsICdDeWd3aW5DQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDeWd3aW4gcG9ydCBvZiBHTlUgQyBDb21waWxlciBmb3IgV2luMzIiKSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weQppbmRleCA2ODE0YTFjLi4wMTQ4NzFkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5CkBAIC02MSwxMyArNjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJ30KIAogICAgICMgRXN0YWJsaXNoIHRoZSBwcmVmZXJyZWQgb3JkZXIgKGZvciB0aGUgLS1oZWxwLWZvcm1hdHMgb3B0aW9uKS4KLSAgICBmb3JtYXRfY29tbWFuZHMgPSBbJ3JwbScsICdnenRhcicsICdienRhcicsICd6dGFyJywgJ3RhcicsCisgICAgZm9ybWF0X2NvbW1hbmRzID0gWydycG0nLCAnZ3p0YXInLCAnYnp0YXInLCAneHp0YXInLCAnenRhcicsICd0YXInLAogICAgICAgICAgICAgICAgICAgICAgICAnd2luaW5zdCcsICd6aXAnLCAnbXNpJ10KIAogICAgICMgQW5kIHRoZSByZWFsIGluZm9ybWF0aW9uLgogICAgIGZvcm1hdF9jb21tYW5kID0geydycG0nOiAgICgnYmRpc3RfcnBtJywgICJSUE0gZGlzdHJpYnV0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgJ2d6dGFyJzogKCdiZGlzdF9kdW1iJywgImd6aXAnZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnYnp0YXInOiAoJ2JkaXN0X2R1bWInLCAiYnppcDInZWQgdGFyIGZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAneHp0YXInOiAoJ2JkaXN0X2R1bWInLCAieHonZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnenRhcic6ICAoJ2JkaXN0X2R1bWInLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd0YXInOiAgICgnYmRpc3RfZHVtYicsICJ0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JzogKCdiZGlzdF93aW5pbnN0JywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggNDQwNWQxMi4uZjFiZmIyNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTIyLDcgKzIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBuYW1lIHRvIGVtYmVkIGluIGdlbmVyYXRlZCBmaWxlbmFtZXMgIgogICAgICAgICAgICAgICAgICAgICAgIihkZWZhdWx0OiAlcykiICUgZ2V0X3BsYXRmb3JtKCkpLAogICAgICAgICAgICAgICAgICAgICAoJ2Zvcm1hdD0nLCAnZicsCi0gICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIHp0YXIsIGd6dGFyLCB6aXApIiksCisgICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIGd6dGFyLCBienRhciwgeHp0YXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJ6dGFyLCB6aXApIiksCiAgICAgICAgICAgICAgICAgICAgICgna2VlcC10ZW1wJywgJ2snLAogICAgICAgICAgICAgICAgICAgICAgImtlZXAgdGhlIHBzZXVkby1pbnN0YWxsYXRpb24gdHJlZSBhcm91bmQgYWZ0ZXIgIiArCiAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBhcmNoaXZlIiksCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IDk1OWE4YmYuLjBjMGUyYzEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0zMDMsNyArMzAzLDYgQEAKICAgICAgICAgcmV0dXJuIGluc3RhbGxlcl9uYW1lCiAKICAgICBkZWYgZ2V0X2V4ZV9ieXRlcyhzZWxmKToKLSAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgogICAgICAgICAjIElmIGEgdGFyZ2V0LXZlcnNpb24gb3RoZXIgdGhhbiB0aGUgY3VycmVudCB2ZXJzaW9uIGhhcyBiZWVuCiAgICAgICAgICMgc3BlY2lmaWVkLCB0aGVuIHVzaW5nIHRoZSBNU1ZDIHZlcnNpb24gZnJvbSAqdGhpcyogYnVpbGQgaXMgbm8gZ29vZC4KICAgICAgICAgIyBXaXRob3V0IGFjdHVhbGx5IGZpbmRpbmcgYW5kIGV4ZWN1dGluZyB0aGUgdGFyZ2V0IHZlcnNpb24gYW5kIHBhcnNpbmcKQEAgLTMxMywyMCArMzEyLDMzIEBACiAgICAgICAgICMgV2UgY2FuIHRoZW4gZXhlY3V0ZSB0aGlzIHByb2dyYW0gdG8gb2J0YWluIGFueSBpbmZvIHdlIG5lZWQsIHN1Y2gKICAgICAgICAgIyBhcyB0aGUgcmVhbCBzeXMudmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBidWlsZC4KICAgICAgICAgY3VyX3ZlcnNpb24gPSBnZXRfcHl0aG9uX3ZlcnNpb24oKQotICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIGFuZCBzZWxmLnRhcmdldF92ZXJzaW9uICE9IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgIyBJZiB0aGUgdGFyZ2V0IHZlcnNpb24gaXMgKmxhdGVyKiB0aGFuIHVzLCB0aGVuIHdlIGFzc3VtZSB0aGV5Ci0gICAgICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQotICAgICAgICAgICAgIyBzdHJpbmcgY29tcGFyZXMgc2VlbSB3cm9uZywgYnV0IGFyZSB3aGF0IHN5c2NvbmZpZy5weSBpdHNlbGYgdXNlcwotICAgICAgICAgICAgaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA+IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgICAgIGJ2ID0gZ2V0X2J1aWxkX3ZlcnNpb24oKQorCisgICAgICAgICMgSWYgdGhlIHRhcmdldCB2ZXJzaW9uIGlzICpsYXRlciogdGhhbiB1cywgdGhlbiB3ZSBhc3N1bWUgdGhleQorICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQorICAgICAgICAjIHN0cmluZyBjb21wYXJlcyBzZWVtIHdyb25nLCBidXQgYXJlIHdoYXQgc3lzY29uZmlnLnB5IGl0c2VsZiB1c2VzCisgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gYW5kIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCBjdXJfdmVyc2lvbjoKKyAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCAiMi40IjoKKyAgICAgICAgICAgICAgICBidiA9IDYuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uID09ICIyLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gNy4xCisgICAgICAgICAgICBlbGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPT0gIjIuNSI6CisgICAgICAgICAgICAgICAgYnYgPSA4LjAKKyAgICAgICAgICAgIGVsaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA8PSAiMy4yIjoKKyAgICAgICAgICAgICAgICBidiA9IDkuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDw9ICIzLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gMTAuMAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDwgIjIuNCI6Ci0gICAgICAgICAgICAgICAgICAgIGJ2ID0gNi4wCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnYgPSA3LjEKKyAgICAgICAgICAgICAgICBidiA9IDE0LjAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZm9yIGN1cnJlbnQgdmVyc2lvbiAtIHVzZSBhdXRob3JpdGF0aXZlIGNoZWNrLgotICAgICAgICAgICAgYnYgPSBnZXRfYnVpbGRfdmVyc2lvbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnJvbSBtc3ZjcnQgaW1wb3J0IENSVF9BU1NFTUJMWV9WRVJTSU9OCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgIyBjcm9zcy1idWlsZGluZywgc28gYXNzdW1lIHRoZSBsYXRlc3QgdmVyc2lvbgorICAgICAgICAgICAgICAgIGJ2ID0gMTQuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidiA9IGZsb2F0KCcuJy5qb2luKENSVF9BU1NFTUJMWV9WRVJTSU9OLnNwbGl0KCcuJywgMilbOjJdKSkKKwogCiAgICAgICAgICMgd2luaW5zdC14LnkuZXhlIGlzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGlzIGZpbGUKICAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CmluZGV4IGNmYzE1Y2YuLjMzN2RkMGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICIoZGVmYXVsdDogJXMpIiAlIGdldF9wbGF0Zm9ybSgpKSwKICAgICAgICAgKCdjb21waWxlcj0nLCAnYycsCiAgICAgICAgICAic3BlY2lmeSB0aGUgY29tcGlsZXIgdHlwZSIpLAorICAgICAgICAoJ3BhcmFsbGVsPScsICdqJywKKyAgICAgICAgICJudW1iZXIgb2YgcGFyYWxsZWwgYnVpbGQgam9icyIpLAogICAgICAgICAoJ2RlYnVnJywgJ2cnLAogICAgICAgICAgImNvbXBpbGUgZXh0ZW5zaW9ucyBhbmQgbGlicmFyaWVzIHdpdGggZGVidWdnaW5nIGluZm9ybWF0aW9uIiksCiAgICAgICAgICgnZm9yY2UnLCAnZicsCkBAIC02NSw2ICs2Nyw3IEBACiAgICAgICAgIHNlbGYuZGVidWcgPSBOb25lCiAgICAgICAgIHNlbGYuZm9yY2UgPSAwCiAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSBpcyBOb25lOgpAQCAtMTE2LDYgKzExOSwxMiBAQAogICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhcmFsbGVsLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyYWxsZWwgPSBpbnQoc2VsZi5wYXJhbGxlbCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKCJwYXJhbGxlbCBzaG91bGQgYmUgYW4gaW50ZWdlciIpCisKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAjIFJ1biBhbGwgcmVsZXZhbnQgc3ViLWNvbW1hbmRzLiAgVGhpcyB3aWxsIGJlIHNvbWUgc3Vic2V0IG9mOgogICAgICAgICAjICAtIGJ1aWxkX3B5ICAgICAgLSBwdXJlIFB5dGhvbiBtb2R1bGVzCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCBhY2JlNjQ4Li5kNGNiMTFlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTQsNyArNCwxMCBAQAogbW9kdWxlcyAoY3VycmVudGx5IGxpbWl0ZWQgdG8gQyBleHRlbnNpb25zLCBzaG91bGQgYWNjb21tb2RhdGUgQysrCiBleHRlbnNpb25zIEFTQVApLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCAqCiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlciwgZ2V0X3B5dGhvbl92ZXJzaW9uCkBAIC0xNiwxMCArMTksNiBAQAogCiBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQogCi1pZiBvcy5uYW1lID09ICdudCc6Ci0gICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgotICAgIE1TVkNfVkVSU0lPTiA9IGludChnZXRfYnVpbGRfdmVyc2lvbigpKQotCiAjIEFuIGV4dGVuc2lvbiBuYW1lIGlzIGp1c3QgYSBkb3Qtc2VwYXJhdGVkIGxpc3Qgb2YgUHl0aG9uIE5BTUVzIChpZS4KICMgdGhlIHNhbWUgYXMgYSBmdWxseS1xdWFsaWZpZWQgbW9kdWxlIG5hbWUpLgogZXh0ZW5zaW9uX25hbWVfcmUgPSByZS5jb21waWxlIFwKQEAgLTg1LDYgKzg0LDggQEAKICAgICAgICAgICJmb3JjaWJseSBidWlsZCBldmVyeXRoaW5nIChpZ25vcmUgZmlsZSB0aW1lc3RhbXBzKSIpLAogICAgICAgICAoJ2NvbXBpbGVyPScsICdjJywKICAgICAgICAgICJzcGVjaWZ5IHRoZSBjb21waWxlciB0eXBlIiksCisgICAgICAgICgncGFyYWxsZWw9JywgJ2onLAorICAgICAgICAgIm51bWJlciBvZiBwYXJhbGxlbCBidWlsZCBqb2JzIiksCiAgICAgICAgICgnc3dpZy1jcHAnLCBOb25lLAogICAgICAgICAgIm1ha2UgU1dJRyBjcmVhdGUgQysrIGZpbGVzIChkZWZhdWx0IGlzIEMpIiksCiAgICAgICAgICgnc3dpZy1vcHRzPScsIE5vbmUsCkBAIC0xMjQsNiArMTI1LDcgQEAKICAgICAgICAgc2VsZi5zd2lnX2NwcCA9IE5vbmUKICAgICAgICAgc2VsZi5zd2lnX29wdHMgPSBOb25lCiAgICAgICAgIHNlbGYudXNlciA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb21waWxlcicsICdjb21waWxlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RlYnVnJywgJ2RlYnVnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9yY2UnLCAnZm9yY2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdwYXJhbGxlbCcsICdwYXJhbGxlbCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3BsYXRfbmFtZScsICdwbGF0X25hbWUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCkBAIC0xOTksMjcgKzIwMiwxNyBAQAogICAgICAgICAgICAgX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCiAgICAgICAgICAgICBpZiBfc3lzX2hvbWU6CiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKF9zeXNfaG9tZSkKLSAgICAgICAgICAgIGlmIE1TVkNfVkVSU0lPTiA+PSA5OgotICAgICAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSAnJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0Ci0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNlbGYucGxhdF9uYW1lWzQ6XQotICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnUENidWlsZCcpCi0gICAgICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKG5ld19saWIsIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQobmV3X2xpYikKIAotICAgICAgICAgICAgZWxpZiBNU1ZDX1ZFUlNJT04gPT0gODoKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZTOC4wJykpCi0gICAgICAgICAgICBlbGlmIE1TVkNfVkVSU0lPTiA9PSA3OgotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEMnLCAnVlM3LjEnKSkKKyAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lID09ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc3VmZml4ID0gJ3dpbjMyJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZDNicpKQorICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0CisgICAgICAgICAgICAgICAgc3VmZml4ID0gc2VsZi5wbGF0X25hbWVbNDpdCisgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ1BDYnVpbGQnKQorICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4obmV3X2xpYiwgc3VmZml4KQorICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG5ld19saWIpCiAKICAgICAgICAgIyBmb3IgZXh0ZW5zaW9ucyB1bmRlciBDeWd3aW4gYW5kIEF0aGVPUyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlCiAgICAgICAgICMgYXBwZW5kZWQgdG8gbGlicmFyeV9kaXJzCkBAIC0yNzQsNiArMjY3LDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKHVzZXJfbGliKQogICAgICAgICAgICAgICAgIHNlbGYucnBhdGguYXBwZW5kKHVzZXJfbGliKQogCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXJhbGxlbCwgc3RyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gaW50KHNlbGYucGFyYWxsZWwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcigicGFyYWxsZWwgc2hvdWxkIGJlIGFuIGludGVnZXIiKQorCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBuZXdfY29tcGlsZXIKIApAQCAtNDQyLDE1ICs0NDEsNDUgQEAKICAgICBkZWYgYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKToKICAgICAgICAgIyBGaXJzdCwgc2FuaXR5LWNoZWNrIHRoZSAnZXh0ZW5zaW9ucycgbGlzdAogICAgICAgICBzZWxmLmNoZWNrX2V4dGVuc2lvbnNfbGlzdChzZWxmLmV4dGVuc2lvbnMpCisgICAgICAgIGlmIHNlbGYucGFyYWxsZWw6CisgICAgICAgICAgICBzZWxmLl9idWlsZF9leHRlbnNpb25zX3BhcmFsbGVsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKCkKIAorICAgIGRlZiBfYnVpbGRfZXh0ZW5zaW9uc19wYXJhbGxlbChzZWxmKToKKyAgICAgICAgd29ya2VycyA9IHNlbGYucGFyYWxsZWwKKyAgICAgICAgaWYgc2VsZi5wYXJhbGxlbCBpcyBUcnVlOgorICAgICAgICAgICAgd29ya2VycyA9IG9zLmNwdV9jb3VudCgpICAjIG1heSByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgVGhyZWFkUG9vbEV4ZWN1dG9yCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHdvcmtlcnMgPSBOb25lCisKKyAgICAgICAgaWYgd29ya2VycyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fYnVpbGRfZXh0ZW5zaW9uc19zZXJpYWwoKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2l0aCBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CisgICAgICAgICAgICBmdXR1cmVzID0gW2V4ZWN1dG9yLnN1Ym1pdChzZWxmLmJ1aWxkX2V4dGVuc2lvbiwgZXh0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uc10KKyAgICAgICAgICAgIGZvciBleHQsIGZ1dCBpbiB6aXAoc2VsZi5leHRlbnNpb25zLCBmdXR1cmVzKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2ZpbHRlcl9idWlsZF9lcnJvcnMoZXh0KToKKyAgICAgICAgICAgICAgICAgICAgZnV0LnJlc3VsdCgpCisKKyAgICBkZWYgX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKHNlbGYpOgogICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fZmlsdGVyX2J1aWxkX2Vycm9ycyhleHQpOgogICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfZXh0ZW5zaW9uKGV4dCkKLSAgICAgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGV4dC5vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBlKSkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9maWx0ZXJfYnVpbGRfZXJyb3JzKHNlbGYsIGV4dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgZXh0Lm9wdGlvbmFsOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAoZXh0Lm5hbWUsIGUpKQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogICAgICAgICBzb3VyY2VzID0gZXh0LnNvdXJjZXMKQEAgLTUwMiwxNSArNTMxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3M9ZXh0cmFfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1leHQuZGVwZW5kcykKIAotICAgICAgICAjIFhYWCAtLSB0aGlzIGlzIGEgVmlsZSBIQUNLIQotICAgICAgICAjCi0gICAgICAgICMgVGhlIHNldHVwLnB5IHNjcmlwdCBmb3IgUHl0aG9uIG9uIFVuaXggbmVlZHMgdG8gYmUgYWJsZSB0bwotICAgICAgICAjIGdldCB0aGlzIGxpc3Qgc28gaXQgY2FuIHBlcmZvcm0gYWxsIHRoZSBjbGVhbiB1cCBuZWVkZWQgdG8KLSAgICAgICAgIyBhdm9pZCBrZWVwaW5nIG9iamVjdCBmaWxlcyBhcm91bmQgd2hlbiBjbGVhbmluZyBvdXQgYSBmYWlsZWQKLSAgICAgICAgIyBidWlsZCBvZiBhbiBleHRlbnNpb24gbW9kdWxlLiAgU2luY2UgRGlzdHV0aWxzIGRvZXMgbm90Ci0gICAgICAgICMgdHJhY2sgZGVwZW5kZW5jaWVzLCB3ZSBoYXZlIHRvIGdldCByaWQgb2YgaW50ZXJtZWRpYXRlcyB0bwotICAgICAgICAjIGVuc3VyZSBhbGwgdGhlIGludGVybWVkaWF0ZXMgd2lsbCBiZSBwcm9wZXJseSByZS1idWlsdC4KLSAgICAgICAgIworICAgICAgICAjIFhYWCBvdXRkYXRlZCB2YXJpYWJsZSwga2VwdCBoZXJlIGluIGNhc2UgdGhpcmQtcGFydCBjb2RlCisgICAgICAgICMgbmVlZHMgaXQuCiAgICAgICAgIHNlbGYuX2J1aWx0X29iamVjdHMgPSBvYmplY3RzWzpdCiAKICAgICAgICAgIyBOb3cgbGluayB0aGUgb2JqZWN0IGZpbGVzIHRvZ2V0aGVyIGludG8gYSAic2hhcmVkIG9iamVjdCIgLS0KQEAgLTY1NSwxMCArNjc3LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKICAgICAgICAgZXh0X3BhdGggPSBleHRfbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICMgZXh0ZW5zaW9ucyBpbiBkZWJ1Z19tb2RlIGFyZSBuYW1lZCAnbW9kdWxlX2QucHlkJyB1bmRlciB3aW5kb3dzCiAgICAgICAgIGV4dF9zdWZmaXggPSBnZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArICdfZCcgKyBleHRfc3VmZml4CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArIGV4dF9zdWZmaXgKIAogICAgIGRlZiBnZXRfZXhwb3J0X3N5bWJvbHMoc2VsZiwgZXh0KToKQEAgLTY4Myw3ICs3MDIsNyBAQAogICAgICAgICAjIHRvIG5lZWQgaXQgbWVudGlvbmVkIGV4cGxpY2l0bHksIHRob3VnaCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgICMgQXBwZW5kICdfZCcgdG8gdGhlIHB5dGhvbiBpbXBvcnQgbGlicmFyeSBvbiBkZWJ1ZyBidWlsZHMuCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBNU1ZDQ29tcGlsZXIKKyAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgaW1wb3J0IE1TVkNDb21waWxlcgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5jb21waWxlciwgTVNWQ0NvbXBpbGVyKToKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICJweXRob24lZCVkIgogICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkKaW5kZXggOTEwMGI5Ni4uY2YwY2E1NyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weQpAQCAtMzE0LDEwICszMTQsMTAgQEAKICAgICAgICAgICAgIGlmIGluY2x1ZGVfYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBvcHRpbWl6YXRpb249JycpKQogICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW1pemUgPiAwOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1GYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIG91dHB1dHMgKz0gWwogICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IGQ3NjhkYzUuLjY3ZGIwMDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgICdwdXJlbGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdwbGF0bGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdoZWFkZXJzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9JbmNsdWRlLyRkaXN0X25hbWUnLAotICAgICAgICAnc2NyaXB0cyc6ICckdXNlcmJhc2UvU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9TY3JpcHRzJywKICAgICAgICAgJ2RhdGEnICAgOiAnJHVzZXJiYXNlJywKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkKaW5kZXggMjE1ODEzYi4uNjE1NGNmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weQpAQCAtMjIsMTUgKzIyLDE1IEBACiAgICAgIyBwb3NzaWJsZSBzY2VuYXJpb3M6CiAgICAgIyAgIDEpIG5vIGNvbXBpbGF0aW9uIGF0IGFsbCAoLS1uby1jb21waWxlIC0tbm8tb3B0aW1pemUpCiAgICAgIyAgIDIpIGNvbXBpbGUgLnB5YyBvbmx5ICgtLWNvbXBpbGUgLS1uby1vcHRpbWl6ZTsgZGVmYXVsdCkKLSAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAibGV2ZWwgMSIgLnB5byAoLS1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDQpIGNvbXBpbGUgImxldmVsIDEiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDUpIGNvbXBpbGUgLnB5YyBhbmQgImxldmVsIDIiIC5weW8gKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCi0gICAgIyAgIDYpIGNvbXBpbGUgImxldmVsIDIiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKKyAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAib3B0LTEiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplKQorICAgICMgICA0KSBjb21waWxlICJvcHQtMSIgLnB5YyBvbmx5ICgtLW5vLWNvbXBpbGUgLS1vcHRpbWl6ZSkKKyAgICAjICAgNSkgY29tcGlsZSAucHljIGFuZCAib3B0LTIiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCisgICAgIyAgIDYpIGNvbXBpbGUgIm9wdC0yIiAucHljIG9ubHkgKC0tbm8tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCiAgICAgIwotICAgICMgVGhlIFVJIGZvciB0aGlzIGlzIHR3byBvcHRpb24sICdjb21waWxlJyBhbmQgJ29wdGltaXplJy4KKyAgICAjIFRoZSBVSSBmb3IgdGhpcyBpcyB0d28gb3B0aW9ucywgJ2NvbXBpbGUnIGFuZCAnb3B0aW1pemUnLgogICAgICMgJ2NvbXBpbGUnIGlzIHN0cmljdGx5IGJvb2xlYW4sIGFuZCBvbmx5IGRlY2lkZXMgd2hldGhlciB0bwogICAgICMgZ2VuZXJhdGUgLnB5YyBmaWxlcy4gICdvcHRpbWl6ZScgaXMgdGhyZWUtd2F5ICgwLCAxLCBvciAyKSwgYW5kCi0gICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHlvIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCisgICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHljIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCiAgICAgIyBvcHRpbWl6YXRpb24gdG8gdXNlLgogCiAgICAgdXNlcl9vcHRpb25zID0gWwpAQCAtMTY2LDEwICsxNjYsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGVzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIG9wdGltaXphdGlvbj0nJykpCiAgICAgICAgICAgICBpZiBzZWxmLm9wdGltaXplID4gMDoKICAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlcy5hcHBlbmQoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIHJldHVybiBieXRlY29kZV9maWxlcwogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQppbmRleCAxYTk2ZTIyLi4xYzRmYzQ4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKQEAgLTEsMTEgKzEsMTQgQEAKLSIiImRpc3R1dGlscy5jb21tYW5kLnVwbG9hZAorIiIiCitkaXN0dXRpbHMuY29tbWFuZC51cGxvYWQKIAotSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIFB5UEkpLiIiIgorSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIGEgcGFja2FnZQoraW5kZXgpLgorIiIiCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcywgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBoYXNobGliCiBmcm9tIGJhc2U2NCBpbXBvcnQgc3RhbmRhcmRfYjY0ZW5jb2RlCiBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuLCBSZXF1ZXN0LCBIVFRQRXJyb3IKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQpAQCAtMTQsMTIgKzE3LDYgQEAKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCi0jIHRoaXMga2VlcHMgY29tcGF0aWJpbGl0eSBmb3IgMi4zIGFuZCAyLjQKLWlmIHN5cy52ZXJzaW9uIDwgIjIuNSI6Ci0gICAgZnJvbSBtZDUgaW1wb3J0IG1kNQotZWxzZToKLSAgICBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQotCiBjbGFzcyB1cGxvYWQoUHlQSVJDQ29tbWFuZCk6CiAKICAgICBkZXNjcmlwdGlvbiA9ICJ1cGxvYWQgYmluYXJ5IHBhY2thZ2UgdG8gUHlQSSIKQEAgLTYwLDcgKzU3LDggQEAKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgotICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoIk5vIGRpc3QgZmlsZSBjcmVhdGVkIGluIGVhcmxpZXIgY29tbWFuZCIpCisgICAgICAgICAgICBtc2cgPSAiTm8gZGlzdCBmaWxlIGNyZWF0ZWQgaW4gZWFybGllciBjb21tYW5kIgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogICAgICAgICBmb3IgY29tbWFuZCwgcHl2ZXJzaW9uLCBmaWxlbmFtZSBpbiBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgogICAgICAgICAgICAgc2VsZi51cGxvYWRfZmlsZShjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lKQogCkBAIC0xMDMsMTAgKzEwMSwxMCBAQAogICAgICAgICAgICAgJ2NvbnRlbnQnOiAob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksY29udGVudCksCiAgICAgICAgICAgICAnZmlsZXR5cGUnOiBjb21tYW5kLAogICAgICAgICAgICAgJ3B5dmVyc2lvbic6IHB5dmVyc2lvbiwKLSAgICAgICAgICAgICdtZDVfZGlnZXN0JzogbWQ1KGNvbnRlbnQpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgJ21kNV9kaWdlc3QnOiBoYXNobGliLm1kNShjb250ZW50KS5oZXhkaWdlc3QoKSwKIAogICAgICAgICAgICAgIyBhZGRpdGlvbmFsIG1ldGEtZGF0YQotICAgICAgICAgICAgJ21ldGFkYXRhX3ZlcnNpb24nIDogJzEuMCcsCisgICAgICAgICAgICAnbWV0YWRhdGFfdmVyc2lvbic6ICcxLjAnLAogICAgICAgICAgICAgJ3N1bW1hcnknOiBtZXRhLmdldF9kZXNjcmlwdGlvbigpLAogICAgICAgICAgICAgJ2hvbWVfcGFnZSc6IG1ldGEuZ2V0X3VybCgpLAogICAgICAgICAgICAgJ2F1dGhvcic6IG1ldGEuZ2V0X2NvbnRhY3QoKSwKQEAgLTE0OSw3ICsxNDcsNyBAQAogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICB0aXRsZSA9ICdcclxuQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5CiAgICAgICAgICAgICAjIGhhbmRsZSBtdWx0aXBsZSBlbnRyaWVzIGZvciB0aGUgc2FtZSBuYW1lCi0gICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSAhPSB0eXBlKFtdKToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0dXBsZToKQEAgLTE2NiwxMyArMTY0LDE1IEBACiAgICAgICAgIGJvZHkud3JpdGUoZW5kX2JvdW5kYXJ5KQogICAgICAgICBib2R5ID0gYm9keS5nZXR2YWx1ZSgpCiAKLSAgICAgICAgc2VsZi5hbm5vdW5jZSgiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSksIGxvZy5JTkZPKQorICAgICAgICBtc2cgPSAiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSkKKyAgICAgICAgc2VsZi5hbm5vdW5jZShtc2csIGxvZy5JTkZPKQogCiAgICAgICAgICMgYnVpbGQgdGhlIFJlcXVlc3QKLSAgICAgICAgaGVhZGVycyA9IHsnQ29udGVudC10eXBlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0lcycgJSBib3VuZGFyeSwKLSAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnOiBzdHIobGVuKGJvZHkpKSwKLSAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGh9CisgICAgICAgIGhlYWRlcnMgPSB7CisgICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSVzJyAlIGJvdW5kYXJ5LAorICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJzogc3RyKGxlbihib2R5KSksCisgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGgsCisgICAgICAgIH0KIAogICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdChzZWxmLnJlcG9zaXRvcnksIGRhdGE9Ym9keSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLWFtZDY0LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2I4NWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjQ1MjRkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CmluZGV4IDJiZmU2NmEuLmYwNWIzNGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKQEAgLTIyMSw4ICsyMjEsNiBAQAogICAgICAgICAjIEhtbSwgc2hvdWxkIHdlIGRvIHNvbWV0aGluZyBpZiBleGl0aW5nIHdpdGggYSBub24temVybyBjb2RlCiAgICAgICAgICMgKGllLiBlcnJvcik/CiAgICAgICAgIHBhc3MKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJhaXNlCiAKICAgICBpZiBfc2V0dXBfZGlzdHJpYnV0aW9uIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigoIidkaXN0dXRpbHMuY29yZS5zZXR1cCgpJyB3YXMgbmV2ZXIgY2FsbGVkIC0tICIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQppbmRleCA3ZWIwNGJjLi5mZmIzM2ZmNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQpAQCAtNCw3ICs0LDkgQEAKIGJlaW5nIGJ1aWx0L2luc3RhbGxlZC9kaXN0cmlidXRlZC4KICIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlX2Zyb21fZmlsZQogCiB0cnk6CkBAIC0yMiw3ICsyNCw3IEBACiAjIHRoZSBzYW1lIGFzIGEgUHl0aG9uIE5BTUUgLS0gSSBkb24ndCBhbGxvdyBsZWFkaW5nIHVuZGVyc2NvcmVzLiAgVGhlIGZhY3QKICMgdGhhdCB0aGV5J3JlIHZlcnkgc2ltaWxhciBpcyBubyBjb2luY2lkZW5jZTsgdGhlIGRlZmF1bHQgbmFtaW5nIHNjaGVtZSBpcwogIyB0byBsb29rIGZvciBhIFB5dGhvbiBtb2R1bGUgbmFtZWQgYWZ0ZXIgdGhlIGNvbW1hbmQuCi1jb21tYW5kX3JlID0gcmUuY29tcGlsZSAocideW2EtekEtWl0oW2EtekEtWjAtOV9dKikkJykKK2NvbW1hbmRfcmUgPSByZS5jb21waWxlKHInXlthLXpBLVpdKFthLXpBLVowLTlfXSopJCcpCiAKIAogY2xhc3MgRGlzdHJpYnV0aW9uOgpAQCAtMzksNyArNDEsNiBAQAogICAgIFNlZSB0aGUgY29kZSBmb3IgJ3NldHVwKCknLCBpbiBjb3JlLnB5LCBmb3IgZGV0YWlscy4KICAgICAiIiIKIAotCiAgICAgIyAnZ2xvYmFsX29wdGlvbnMnIGRlc2NyaWJlcyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgdGhhdCBtYXkgYmUKICAgICAjIHN1cHBsaWVkIHRvIHRoZSBzZXR1cCBzY3JpcHQgcHJpb3IgdG8gYW55IGFjdHVhbCBjb21tYW5kcy4KICAgICAjIEVnLiAiLi9zZXR1cC5weSAtbiIgb3IgIi4vc2V0dXAucHkgLS1xdWlldCIgYm90aCB0YWtlIGFkdmFudGFnZSBvZgpAQCAtNDgsMTIgKzQ5LDEzIEBACiAgICAgIyBkb24ndCB3YW50IHRvIHBvbGx1dGUgdGhlIGNvbW1hbmRzIHdpdGggdG9vIG1hbnkgb3B0aW9ucyB0aGF0IHRoZXkKICAgICAjIGhhdmUgbWluaW1hbCBjb250cm9sIG92ZXIuCiAgICAgIyBUaGUgZm91cnRoIGVudHJ5IGZvciB2ZXJib3NlIG1lYW5zIHRoYXQgaXQgY2FuIGJlIHJlcGVhdGVkLgotICAgIGdsb2JhbF9vcHRpb25zID0gWygndmVyYm9zZScsICd2JywgInJ1biB2ZXJib3NlbHkgKGRlZmF1bHQpIiwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgKCdxdWlldCcsICdxJywgInJ1biBxdWlldGx5ICh0dXJucyB2ZXJib3NpdHkgb2ZmKSIpLAotICAgICAgICAgICAgICAgICAgICAgICgnZHJ5LXJ1bicsICduJywgImRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCdoZWxwJywgJ2gnLCAic2hvdyBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ25vLXVzZXItY2ZnJywgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZSBweWRpc3R1dGlscy5jZmcgaW4geW91ciBob21lIGRpcmVjdG9yeScpLAorICAgIGdsb2JhbF9vcHRpb25zID0gWworICAgICAgICAoJ3ZlcmJvc2UnLCAndicsICJydW4gdmVyYm9zZWx5IChkZWZhdWx0KSIsIDEpLAorICAgICAgICAoJ3F1aWV0JywgJ3EnLCAicnVuIHF1aWV0bHkgKHR1cm5zIHZlcmJvc2l0eSBvZmYpIiksCisgICAgICAgICgnZHJ5LXJ1bicsICduJywgImRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIiksCisgICAgICAgICgnaGVscCcsICdoJywgInNob3cgZGV0YWlsZWQgaGVscCBtZXNzYWdlIiksCisgICAgICAgICgnbm8tdXNlci1jZmcnLCBOb25lLAorICAgICAgICAgICAgJ2lnbm9yZSBweWRpc3R1dGlscy5jZmcgaW4geW91ciBob21lIGRpcmVjdG9yeScpLAogICAgIF0KIAogICAgICMgJ2NvbW1vbl91c2FnZScgaXMgYSBzaG9ydCAoMi0zIGxpbmUpIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjb21tb24KQEAgLTExNSwxMCArMTE3LDkgQEAKICAgICAjIG5lZ2F0aXZlIG9wdGlvbnMgYXJlIG9wdGlvbnMgdGhhdCBleGNsdWRlIG90aGVyIG9wdGlvbnMKICAgICBuZWdhdGl2ZV9vcHQgPSB7J3F1aWV0JzogJ3ZlcmJvc2UnfQogCi0KICAgICAjIC0tIENyZWF0aW9uL2luaXRpYWxpemF0aW9uIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgZGVmIF9faW5pdF9fIChzZWxmLCBhdHRycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0cnM9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdCBhIG5ldyBEaXN0cmlidXRpb24gaW5zdGFuY2U6IGluaXRpYWxpemUgYWxsIHRoZQogICAgICAgICBhdHRyaWJ1dGVzIG9mIGEgRGlzdHJpYnV0aW9uLCBhbmQgdGhlbiB1c2UgJ2F0dHJzJyAoYSBkaWN0aW9uYXJ5CiAgICAgICAgIG1hcHBpbmcgYXR0cmlidXRlIG5hbWVzIHRvIHZhbHVlcykgdG8gYXNzaWduIHNvbWUgb2YgdGhvc2UKQEAgLTUzMiwxNSArNTMzLDE1IEBACiAgICAgICAgICMgdG8gYmUgc3VyZSB0aGF0IHRoZSBiYXNpYyAiY29tbWFuZCIgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkLgogICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhjbWRfY2xhc3MsIENvbW1hbmQpOgogICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQ2xhc3NFcnJvcigKLSAgICAgICAgICAgICAgICAgICJjb21tYW5kIGNsYXNzICVzIG11c3Qgc3ViY2xhc3MgQ29tbWFuZCIgJSBjbWRfY2xhc3MpCisgICAgICAgICAgICAgICAgImNvbW1hbmQgY2xhc3MgJXMgbXVzdCBzdWJjbGFzcyBDb21tYW5kIiAlIGNtZF9jbGFzcykKIAogICAgICAgICAjIEFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbW1hbmQgb2JqZWN0IHByb3ZpZGVzIGEgbGlzdCBvZiBpdHMKICAgICAgICAgIyBrbm93biBvcHRpb25zLgogICAgICAgICBpZiBub3QgKGhhc2F0dHIoY21kX2NsYXNzLCAndXNlcl9vcHRpb25zJykgYW5kCiAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MudXNlcl9vcHRpb25zLCBsaXN0KSk6Ci0gICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNDbGFzc0Vycm9yKCgiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHByb3ZpZGUgIiArCi0gICAgICAgICAgICAgICAgICAgIid1c2VyX29wdGlvbnMnIGF0dHJpYnV0ZSAoYSBsaXN0IG9mIHR1cGxlcykiKSAlIFwKLSAgICAgICAgICAgICAgICAgIGNtZF9jbGFzcykKKyAgICAgICAgICAgIG1zZyA9ICgiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHByb3ZpZGUgIgorICAgICAgICAgICAgICAgICIndXNlcl9vcHRpb25zJyBhdHRyaWJ1dGUgKGEgbGlzdCBvZiB0dXBsZXMpIikKKyAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0NsYXNzRXJyb3IobXNnICUgY21kX2NsYXNzKQogCiAgICAgICAgICMgSWYgdGhlIGNvbW1hbmQgY2xhc3MgaGFzIGEgbGlzdCBvZiBuZWdhdGl2ZSBhbGlhcyBvcHRpb25zLAogICAgICAgICAjIG1lcmdlIGl0IGluIHdpdGggdGhlIGdsb2JhbCBuZWdhdGl2ZSBhbGlhc2VzLgpAQCAtNTUyLDEyICs1NTMsMTEgQEAKICAgICAgICAgIyBDaGVjayBmb3IgaGVscF9vcHRpb25zIGluIGNvbW1hbmQgY2xhc3MuICBUaGV5IGhhdmUgYSBkaWZmZXJlbnQKICAgICAgICAgIyBmb3JtYXQgKHR1cGxlIG9mIGZvdXIpIHNvIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGhlcmUuCiAgICAgICAgIGlmIChoYXNhdHRyKGNtZF9jbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICBoZWxwX29wdGlvbnMgPSBmaXhfaGVscF9vcHRpb25zKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBoZWxwX29wdGlvbnMgPSBbXQogCi0KICAgICAgICAgIyBBbGwgY29tbWFuZHMgc3VwcG9ydCB0aGUgZ2xvYmFsIG9wdGlvbnMgdG9vLCBqdXN0IGJ5IGFkZGluZwogICAgICAgICAjIGluICdnbG9iYWxfb3B0aW9ucycuCiAgICAgICAgIHBhcnNlci5zZXRfb3B0aW9uX3RhYmxlKHNlbGYuZ2xvYmFsX29wdGlvbnMgKwpAQCAtNTcwLDcgKzU3MCw3IEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiAoaGFzYXR0cihjbWRfY2xhc3MsICdoZWxwX29wdGlvbnMnKSBhbmQKLSAgICAgICAgICAgIGlzaW5zdGFuY2UoY21kX2NsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgorICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoY21kX2NsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgogICAgICAgICAgICAgaGVscF9vcHRpb25fZm91bmQ9MAogICAgICAgICAgICAgZm9yIChoZWxwX29wdGlvbiwgc2hvcnQsIGRlc2MsIGZ1bmMpIGluIGNtZF9jbGFzcy5oZWxwX29wdGlvbnM6CiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvcHRzLCBwYXJzZXIuZ2V0X2F0dHJfbmFtZShoZWxwX29wdGlvbikpOgpAQCAtNjQ3LDcgKzY0Nyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGtsYXNzID0gc2VsZi5nZXRfY29tbWFuZF9jbGFzcyhjb21tYW5kKQogICAgICAgICAgICAgaWYgKGhhc2F0dHIoa2xhc3MsICdoZWxwX29wdGlvbnMnKSBhbmQKLSAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGtsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgorICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGtsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgogICAgICAgICAgICAgICAgIHBhcnNlci5zZXRfb3B0aW9uX3RhYmxlKGtsYXNzLnVzZXJfb3B0aW9ucyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4X2hlbHBfb3B0aW9ucyhrbGFzcy5oZWxwX29wdGlvbnMpKQogICAgICAgICAgICAgZWxzZToKQEAgLTgxNCw3ICs4MTQsNyBAQAogICAgICAgICAgICAga2xhc3NfbmFtZSA9IGNvbW1hbmQKIAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9faW1wb3J0X18gKG1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgyMyw4ICs4MjMsOCBAQAogICAgICAgICAgICAgICAgIGtsYXNzID0gZ2V0YXR0cihtb2R1bGUsIGtsYXNzX25hbWUpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzTW9kdWxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgY29tbWFuZCAnJXMnIChubyBjbGFzcyAnJXMnIGluIG1vZHVsZSAnJXMnKSIKLSAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBrbGFzc19uYW1lLCBtb2R1bGVfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbW1hbmQgJyVzJyAobm8gY2xhc3MgJyVzJyBpbiBtb2R1bGUgJyVzJykiCisgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIGtsYXNzX25hbWUsIG1vZHVsZV9uYW1lKSkKIAogICAgICAgICAgICAgc2VsZi5jbWRjbGFzc1tjb21tYW5kXSA9IGtsYXNzCiAgICAgICAgICAgICByZXR1cm4ga2xhc3MKQEAgLTg0MCw3ICs4NDAsNyBAQAogICAgICAgICBjbWRfb2JqID0gc2VsZi5jb21tYW5kX29iai5nZXQoY29tbWFuZCkKICAgICAgICAgaWYgbm90IGNtZF9vYmogYW5kIGNyZWF0ZToKICAgICAgICAgICAgIGlmIERFQlVHOgotICAgICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoIkRpc3RyaWJ1dGlvbi5nZXRfY29tbWFuZF9vYmooKTogIiBcCisgICAgICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgiRGlzdHJpYnV0aW9uLmdldF9jb21tYW5kX29iaigpOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpbmcgJyVzJyBjb21tYW5kIG9iamVjdCIgJSBjb21tYW5kKQogCiAgICAgICAgICAgICBrbGFzcyA9IHNlbGYuZ2V0X2NvbW1hbmRfY2xhc3MoY29tbWFuZCkKQEAgLTg5Nyw4ICs4OTcsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGNvbW1hbmRfb2JqLCBvcHRpb24sIHZhbHVlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgaW4gJXM6IGNvbW1hbmQgJyVzJyBoYXMgbm8gc3VjaCBvcHRpb24gJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc291cmNlLCBjb21tYW5kX25hbWUsIG9wdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgaW4gJXM6IGNvbW1hbmQgJyVzJyBoYXMgbm8gc3VjaCBvcHRpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKHNvdXJjZSwgY29tbWFuZF9uYW1lLCBvcHRpb24pKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKG1zZykKIApAQCAtOTc0LDcgKzk3NCw2IEBACiAgICAgICAgIGNtZF9vYmoucnVuKCkKICAgICAgICAgc2VsZi5oYXZlX3J1bltjb21tYW5kXSA9IDEKIAotCiAgICAgIyAtLSBEaXN0cmlidXRpb24gcXVlcnkgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiBoYXNfcHVyZV9tb2R1bGVzKHNlbGYpOgpAQCAtMTExMiwxNyArMTExMSwxNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9ICcxLjAnCiAgICAgICAgIGlmIChzZWxmLnByb3ZpZGVzIG9yIHNlbGYucmVxdWlyZXMgb3Igc2VsZi5vYnNvbGV0ZXMgb3IKLSAgICAgICAgICAgIHNlbGYuY2xhc3NpZmllcnMgb3Igc2VsZi5kb3dubG9hZF91cmwpOgorICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NpZmllcnMgb3Igc2VsZi5kb3dubG9hZF91cmwpOgogICAgICAgICAgICAgdmVyc2lvbiA9ICcxLjEnCiAKICAgICAgICAgZmlsZS53cml0ZSgnTWV0YWRhdGEtVmVyc2lvbjogJXNcbicgJSB2ZXJzaW9uKQotICAgICAgICBmaWxlLndyaXRlKCdOYW1lOiAlc1xuJyAlIHNlbGYuZ2V0X25hbWUoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ1ZlcnNpb246ICVzXG4nICUgc2VsZi5nZXRfdmVyc2lvbigpICkKLSAgICAgICAgZmlsZS53cml0ZSgnU3VtbWFyeTogJXNcbicgJSBzZWxmLmdldF9kZXNjcmlwdGlvbigpICkKLSAgICAgICAgZmlsZS53cml0ZSgnSG9tZS1wYWdlOiAlc1xuJyAlIHNlbGYuZ2V0X3VybCgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3QoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvci1lbWFpbDogJXNcbicgJSBzZWxmLmdldF9jb250YWN0X2VtYWlsKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdMaWNlbnNlOiAlc1xuJyAlIHNlbGYuZ2V0X2xpY2Vuc2UoKSApCisgICAgICAgIGZpbGUud3JpdGUoJ05hbWU6ICVzXG4nICUgc2VsZi5nZXRfbmFtZSgpKQorICAgICAgICBmaWxlLndyaXRlKCdWZXJzaW9uOiAlc1xuJyAlIHNlbGYuZ2V0X3ZlcnNpb24oKSkKKyAgICAgICAgZmlsZS53cml0ZSgnU3VtbWFyeTogJXNcbicgJSBzZWxmLmdldF9kZXNjcmlwdGlvbigpKQorICAgICAgICBmaWxlLndyaXRlKCdIb21lLXBhZ2U6ICVzXG4nICUgc2VsZi5nZXRfdXJsKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvcjogJXNcbicgJSBzZWxmLmdldF9jb250YWN0KCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvci1lbWFpbDogJXNcbicgJSBzZWxmLmdldF9jb250YWN0X2VtYWlsKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0xpY2Vuc2U6ICVzXG4nICUgc2VsZi5nZXRfbGljZW5zZSgpKQogICAgICAgICBpZiBzZWxmLmRvd25sb2FkX3VybDoKICAgICAgICAgICAgIGZpbGUud3JpdGUoJ0Rvd25sb2FkLVVSTDogJXNcbicgJSBzZWxmLmRvd25sb2FkX3VybCkKIApAQCAtMTEzMSw3ICsxMTMwLDcgQEAKIAogICAgICAgICBrZXl3b3JkcyA9ICcsJy5qb2luKHNlbGYuZ2V0X2tleXdvcmRzKCkpCiAgICAgICAgIGlmIGtleXdvcmRzOgotICAgICAgICAgICAgZmlsZS53cml0ZSgnS2V5d29yZHM6ICVzXG4nICUga2V5d29yZHMgKQorICAgICAgICAgICAgZmlsZS53cml0ZSgnS2V5d29yZHM6ICVzXG4nICUga2V5d29yZHMpCiAKICAgICAgICAgc2VsZi5fd3JpdGVfbGlzdChmaWxlLCAnUGxhdGZvcm0nLCBzZWxmLmdldF9wbGF0Zm9ybXMoKSkKICAgICAgICAgc2VsZi5fd3JpdGVfbGlzdChmaWxlLCAnQ2xhc3NpZmllcicsIHNlbGYuZ2V0X2NsYXNzaWZpZXJzKCkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weSBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CmluZGV4IGE5MzY1NWEuLjdlZmJiNzQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CkBAIC0xMzEsNiArMTMxLDE0IEBACiAgICAgICAgICAgICBtc2cgPSAiVW5rbm93biBFeHRlbnNpb24gb3B0aW9uczogJXMiICUgb3B0aW9ucwogICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2cpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPCVzLiVzKCVyKSBhdCAlI3g+JyAlICgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICBzZWxmLm5hbWUsCisgICAgICAgICAgICBpZChzZWxmKSkKKworCiBkZWYgcmVhZF9zZXR1cF9maWxlKGZpbGVuYW1lKToKICAgICAiIiJSZWFkcyBhIFNldHVwIGZpbGUgYW5kIHJldHVybnMgRXh0ZW5zaW9uIGluc3RhbmNlcy4iIiIKICAgICBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IChwYXJzZV9tYWtlZmlsZSwgZXhwYW5kX21ha2VmaWxlX3ZhcnMsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKaW5kZXggOTY4OGYyMC4uZDEzNzRlZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQpAQCAtMTc5LDYgKzE3OSw5IEBACiAgICAgaSA9IGkgKyBsZW4ocHJlZml4KQogICAgIHMsIHJlc3QgPSBzeXMudmVyc2lvbltpOl0uc3BsaXQoIiAiLCAxKQogICAgIG1ham9yVmVyc2lvbiA9IGludChzWzotMl0pIC0gNgorICAgIGlmIG1ham9yVmVyc2lvbiA+PSAxMzoKKyAgICAgICAgIyB2MTMgd2FzIHNraXBwZWQgYW5kIHNob3VsZCBiZSB2MTQKKyAgICAgICAgbWFqb3JWZXJzaW9uICs9IDEKICAgICBtaW5vclZlcnNpb24gPSBpbnQoc1syOjNdKSAvIDEwLjAKICAgICAjIEkgZG9uJ3QgdGhpbmsgcGF0aHMgYXJlIGFmZmVjdGVkIGJ5IG1pbm9yIHZlcnNpb24gaW4gdmVyc2lvbiA2CiAgICAgaWYgbWFqb3JWZXJzaW9uID09IDY6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CmluZGV4IDgxMTY2NTYuLjEwNDhjZDQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CkBAIC0xNTcsNiArMTU3LDkgQEAKICAgICBpID0gaSArIGxlbihwcmVmaXgpCiAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgaWYgbWFqb3JWZXJzaW9uID49IDEzOgorICAgICAgICAjIHYxMyB3YXMgc2tpcHBlZCBhbmQgc2hvdWxkIGJlIHYxNAorICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICMgSSBkb24ndCB0aGluayBwYXRocyBhcmUgYWZmZWN0ZWQgYnkgbWlub3IgdmVyc2lvbiBpbiB2ZXJzaW9uIDYKICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkgYi9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CmluZGV4IDIyZTg3ZTguLjVkZDQxNWEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zcGF3bi5weQpAQCAtMTM3LDkgKzEzNyw2IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGlkLCBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgZXJybm8KLSAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgbm90IERFQlVHOgogICAgICAgICAgICAgICAgICAgICBjbWQgPSBleGVjdXRhYmxlCiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXhlY0Vycm9yKApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCBhMTQ1MmZlLi41NzM3MjRkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtOSw2ICs5LDcgQEAKIEVtYWlsOiAgICAgICAgPGZkcmFrZUBhY20ub3JnPgogIiIiCiAKK2ltcG9ydCBfaW1wCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMjIsMjMgKzIzLDE1IEBACiBCQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIAogIyBQYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4gT24gV2luZG93cyB0aGUgYmluYXJ5IG1heQotIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCi0jIGl0J2xsIGxpdmUgaW4gcHJvamVjdC9QQ2J1aWxkL2FtZDY0LgorIyBsaXZlIGluIHByb2plY3QvUENCdWlsZC93aW4zMiBvciBwcm9qZWN0L1BDQnVpbGQvYW1kNjQuCiAjIHNldCBmb3IgY3Jvc3MgYnVpbGRzCiBpZiAiX1BZVEhPTl9QUk9KRUNUX0JBU0UiIGluIG9zLmVudmlyb246CiAgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLmVudmlyb25bIl9QWVRIT05fUFJPSkVDVF9CQVNFIl0pCiBlbHNlOgogICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAicGNidWlsZCIgaW4gcHJvamVjdF9iYXNlWy04Ol0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIpKQotIyBQQy9WUzcuMQotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY1xcdiIgaW4gcHJvamVjdF9iYXNlWy0xMDpdLmxvd2VyKCk6Ci0gICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsIG9zLnBhdGgucGFyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5wYXJkaXIpKQotIyBQQy9BTUQ2NAotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY2J1aWxkXFxhbWQ2NCIgaW4gcHJvamVjdF9iYXNlWy0xNDpdLmxvd2VyKCk6Ci0gICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsIG9zLnBhdGgucGFyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5wYXJkaXIpKQoraWYgKG9zLm5hbWUgPT0gJ250JyBhbmQKKyAgICBwcm9qZWN0X2Jhc2UubG93ZXIoKS5lbmRzd2l0aCgoJ1xccGNidWlsZFxcd2luMzInLCAnXFxwY2J1aWxkXFxhbWQ2NCcpKSk6CisgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShwcm9qZWN0X2Jhc2UpKQogCiAjIHB5dGhvbl9idWlsZDogKEJvb2xlYW4pIGlmIHRydWUsIHdlJ3JlIGVpdGhlciBidWlsZGluZyBQeXRob24gb3IKICMgYnVpbGRpbmcgYW4gZXh0ZW5zaW9uIHdpdGggYW4gdW4taW5zdGFsbGVkIFB5dGhvbiwgc28gd2UgdXNlCkBAIC01MSwxMSArNDQsOSBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQotaWYgX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kIFwKLSAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ3BjYnVpbGQnLCAncGNidWlsZFxcYW1kNjQnKSk6Ci0gICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKLSAgICBpZiBfc3lzX2hvbWUuZW5kc3dpdGgoJ3BjYnVpbGQnKTogICAjIG11c3QgYmUgYW1kNjQKLSAgICAgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKK2lmIChfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQKKyAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ1xccGNidWlsZFxcd2luMzInLCAnXFxwY2J1aWxkXFxhbWQ2NCcpKSk6CisgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpKQogZGVmIF9weXRob25fYnVpbGQoKToKICAgICBpZiBfc3lzX2hvbWU6CiAgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQpAQCAtNDY4LDcgKzQ1OSw3IEBACiAgICAgIyBYWFggaG1tbS4uIGEgbm9ybWFsIGluc3RhbGwgcHV0cyBpbmNsdWRlIGZpbGVzIGhlcmUKICAgICBnWydJTkNMVURFUFknXSA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCkKIAotICAgIGdbJ0VYVF9TVUZGSVgnXSA9ICcucHlkJworICAgIGdbJ0VYVF9TVUZGSVgnXSA9IF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKClbMF0KICAgICBnWydFWEUnXSA9ICIuZXhlIgogICAgIGdbJ1ZFUlNJT04nXSA9IGdldF9weXRob25fdmVyc2lvbigpLnJlcGxhY2UoIi4iLCAiIikKICAgICBnWydCSU5ESVInXSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKaW5kZXggMmQ3MmFmNC4uMDJmYTFlMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkNISVZFX0ZPUk1BVFMpCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlLCBzcGF3bgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja193YXJuaW5ncywgcnVuX3VuaXR0ZXN0LCBwYXRjaAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzLCBydW5fdW5pdHRlc3QsIHBhdGNoLCBjaGFuZ2VfY3dkCiAKIHRyeToKICAgICBpbXBvcnQgZ3JwCkBAIC0zNCw2ICszNCwxNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIFpMSUJfU1VQUE9SVCA9IEZhbHNlCiAKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQorCiBkZWYgY2FuX2ZzX2VuY29kZShmaWxlbmFtZSk6CiAgICAgIiIiCiAgICAgUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGNhbiBiZSBzYXZlZCBpbiB0aGUgZmlsZSBzeXN0ZW0uCkBAIC01MiwxOSArNjIsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKLSAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnYXJjaGl2ZScpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYsIG5hbWU9J2FyY2hpdmUnKToKKyAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsIG5hbWUsICcudGFyLmd6JykKKyAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCBuYW1lLCAnLnRhcicsIGNvbXByZXNzPU5vbmUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9nemlwKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLmd6JywgY29tcHJlc3M9J2d6aXAnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAnTmVlZCBiejIgc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9iemlwMihzZWxmKToKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKHRtcGRpciwgJ2FyY2hpdmUnLCAnLnRhci5iejInLCBjb21wcmVzcz0nYnppcDInKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ05lZWQgbHptYSBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX3h6KHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLnh6JywgY29tcHJlc3M9J3h6JykKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ8OlcmNoaXYnKSwKICAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2xhdGluMShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGxhdGluIGNoYXJhY3RlcnMuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ8OlcmNoaXYnKSAjIG5vdGUgdGhpcyBpc24ndCBhIHJlYWwgd29yZAorICAgICAgICBzZWxmLnRlc3RfbWFrZV90YXJiYWxsKCfDpXJjaGl2JykgIyBub3RlIHRoaXMgaXNuJ3QgYSByZWFsIHdvcmQKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgn44Gu44Ki44O844Kr44Kk44OWJyksCiAgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9leHRlbmRlZChzZWxmKToKQEAgLTcyLDE2ICs5OSw5IEBACiAgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGV4dGVuZGVkCiAgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgbGF0aW4gY2hhcnNldC4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgn44Gu44Ki44O844Kr44Kk44OWJykgIyBqYXBhbmVzZSBmb3IgYXJjaGl2ZQorICAgICAgICBzZWxmLnRlc3RfbWFrZV90YXJiYWxsKCfjga7jgqLjg7zjgqvjgqTjg5YnKSAjIGphcGFuZXNlIGZvciBhcmNoaXZlCiAKLSAgICBkZWYgX21ha2VfdGFyYmFsbChzZWxmLCB0YXJnZXRfbmFtZSk6Ci0gICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQotICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4odG1wZGlyLCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQotCisgICAgZGVmIF9tYWtlX3RhcmJhbGwoc2VsZiwgdG1wZGlyLCB0YXJnZXRfbmFtZSwgc3VmZml4LCAqKmt3YXJncyk6CiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICB1bml0dGVzdC5za2lwVW5sZXNzKHNwbGl0ZHJpdmUodG1wZGlyKVswXSA9PSBzcGxpdGRyaXZlKHRtcGRpcjIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UgYW5kIHRhcmdldCBzaG91bGQgYmUgb24gc2FtZSBkcml2ZSIpCkBAIC04OSwyNyArMTA5LDEzIEBACiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKIAogICAgICAgICAjIHdvcmtpbmcgd2l0aCByZWxhdGl2ZSBwYXRocyB0byBhdm9pZCB0YXIgd2FybmluZ3MKLSAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9zLmNoZGlyKHRtcGRpcikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWFrZV90YXJiYWxsKHNwbGl0ZHJpdmUoYmFzZV9uYW1lKVsxXSwgJy4nKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MuY2hkaXIob2xkX2RpcikKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHRtcGRpcik6CisgICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnZGlzdCcsICoqa3dhcmdzKQogCiAgICAgICAgICMgY2hlY2sgaWYgdGhlIGNvbXByZXNzZWQgdGFyYmFsbCB3YXMgY3JlYXRlZAotICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXIuZ3onCisgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyBzdWZmaXgKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQotCi0gICAgICAgICMgdHJ5aW5nIGFuIHVuY29tcHJlc3NlZCBvbmUKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQotICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3MuY2hkaXIodG1wZGlyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnLicsIGNvbXByZXNzPU5vbmUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQotICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXInCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHRhcmJhbGwpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQogCiAgICAgZGVmIF90YXJpbmZvKHNlbGYsIHBhdGgpOgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4ocGF0aCkKQEAgLTEyMCw2ICsxMjYsOSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgdGFyLmNsb3NlKCkKIAorICAgIF9jcmVhdGVkX2ZpbGVzID0gKCdkaXN0JywgJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsCisgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3Qvc3ViJywgJ2Rpc3Qvc3ViL2ZpbGUzJywgJ2Rpc3Qvc3ViMicpCisKICAgICBkZWYgX2NyZWF0ZV9maWxlcyhzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCkBAIC0xMzAsMTUgKzEzOSwxNSBAQAogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YicpKQogICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViMicpKQotICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKLSAgICAgICAgcmV0dXJuIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lCisgICAgICAgIHJldHVybiB0bXBkaXIKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZpbmRfZXhlY3V0YWJsZSgndGFyJykgYW5kIGZpbmRfZXhlY3V0YWJsZSgnZ3ppcCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFpMSUJfU1VQUE9SVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnTmVlZCB0aGUgdGFyLCBnemlwIGFuZCB6bGliIGNvbW1hbmQgdG8gcnVuJykKICAgICBkZWYgdGVzdF90YXJmaWxlX3ZzX3RhcihzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIodG1wZGlyKQogICAgICAgICB0cnk6CkBAIC0xNjQsNyArMTczLDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbDIpKQogICAgICAgICAjIGxldCdzIGNvbXBhcmUgYm90aCB0YXJiYWxscwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX3RhcmluZm8odGFyYmFsbDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsMiksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCiAKICAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQpAQCAtMTkxLDcgKzIwMSw4IEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCdjb21wcmVzcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29tcHJlc3MgcHJvZ3JhbSBpcyByZXF1aXJlZCcpCiAgICAgZGVmIHRlc3RfY29tcHJlc3NfZGVwcmVjYXRlZChzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQogCiAgICAgICAgICMgdXNpbmcgY29tcHJlc3MgYW5kIHRlc3RpbmcgdGhlIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCkBAIC0yMjQsMTcgKzIzNSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdOZWVkIHppcCBhbmQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKLSAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKLQotICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKLSAgICAgICAgbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgdG1wZGlyKQorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdhcmNoaXZlJykKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHRtcGRpcik6CisgICAgICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCAnZGlzdCcpCiAKICAgICAgICAgIyBjaGVjayBpZiB0aGUgY29tcHJlc3NlZCB0YXJiYWxsIHdhcyBjcmVhdGVkCiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnppcCcKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJiYWxsKSBhcyB6ZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHpmLm5hbWVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsICdkaXN0L3N1Yi9maWxlMyddKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWklQX1NVUFBPUlQsICdOZWVkIHppcCBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlX25vX3psaWIoc2VsZik6CkBAIC0yNTAsMTggKzI2MSwyNCBAQAogICAgICAgICBwYXRjaChzZWxmLCBhcmNoaXZlX3V0aWwuemlwZmlsZSwgJ1ppcEZpbGUnLCBmYWtlX3ppcGZpbGUpCiAKICAgICAgICAgIyBjcmVhdGUgc29tZXRoaW5nIHRvIHRhciBhbmQgY29tcHJlc3MKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQotICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCB0bXBkaXIpCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsICdkaXN0JykKIAogICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy56aXAnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoKHRhcmJhbGwsICJ3IiksIHsnY29tcHJlc3Npb24nOiB6aXBmaWxlLlpJUF9TVE9SRUR9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUodGFyYmFsbCkgYXMgemY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh6Zi5uYW1lbGlzdCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydkaXN0L2ZpbGUxJywgJ2Rpc3QvZmlsZTInLCAnZGlzdC9zdWIvZmlsZTMnXSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19hcmNoaXZlX2Zvcm1hdHMoWydnenRhcicsICd4eHgnLCAnemlwJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX2FyY2hpdmVfZm9ybWF0cyhbJ2d6dGFyJywgJ3ppcCddKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKFsnZ3p0YXInLCAnYnp0YXInLCAneHp0YXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6dGFyJywgJ3RhcicsICd6aXAnXSkpCiAKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmUoc2VsZik6CiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCkBAIC0yODIsNiArMjk5LDQxIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgQVJDSElWRV9GT1JNQVRTWyd4eHgnXQogCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX3RhcihzZWxmKToKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpICwgJ2FyY2hpdmUnKQorICAgICAgICByZXMgPSBtYWtlX2FyY2hpdmUoYmFzZV9uYW1lLCAndGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8ocmVzKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX2d6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICdnenRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLmd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICdOZWVkIGJ6MiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX2J6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICdienRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLmJ6MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ05lZWQgeHogc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZV94enRhcihzZWxmKToKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpICwgJ2FyY2hpdmUnKQorICAgICAgICByZXMgPSBtYWtlX2FyY2hpdmUoYmFzZV9uYW1lLCAneHp0YXInLCBiYXNlX2RpciwgJ2Rpc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHJlcyksICdhcmNoaXZlLnRhci54eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCiAgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX293bmVyX2dyb3VwKHNlbGYpOgogICAgICAgICAjIHRlc3RpbmcgbWFrZV9hcmNoaXZlIHdpdGggb3duZXIgYW5kIGdyb3VwLCB3aXRoIHZhcmlvdXMgY29tYmluYXRpb25zCiAgICAgICAgICMgdGhpcyB3b3JrcyBldmVuIGlmIHRoZXJlJ3Mgbm90IGdpZC91aWQgc3VwcG9ydApAQCAtMjkxLDcgKzM0Myw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBncm91cCA9IG93bmVyID0gJ3Jvb3QnCiAKLSAgICAgICAgYmFzZV9kaXIsIHJvb3RfZGlyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgcm9vdF9kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCiAgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd6aXAnLCByb290X2RpciwgYmFzZV9kaXIsIG93bmVyPW93bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9Z3JvdXApCkBAIC0zMTEsNyArMzY0LDggQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICJSZXF1aXJlcyB6bGliIikKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKICAgICBkZWYgdGVzdF90YXJmaWxlX3Jvb3Rfb3duZXIoc2VsZik6Ci0gICAgICAgIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHRtcGRpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdhcmNoaXZlJykKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIG9zLmNoZGlyKHRtcGRpcikKICAgICAgICAgZ3JvdXAgPSBncnAuZ2V0Z3JnaWQoMClbMF0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weQppbmRleCA1MDNhNmU4Li5mNzYyZjVkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5CkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICAgICAgIyB3aGF0IGZvcm1hdHMgZG9lcyBiZGlzdCBvZmZlcj8KICAgICAgICAgZm9ybWF0cyA9IFsnYnp0YXInLCAnZ3p0YXInLCAnbXNpJywgJ3JwbScsICd0YXInLAotICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JywgJ3ppcCcsICd6dGFyJ10KKyAgICAgICAgICAgICAgICAgICAnd2luaW5zdCcsICd4enRhcicsICd6aXAnLCAnenRhciddCiAgICAgICAgIGZvdW5kID0gc29ydGVkKGNtZC5mb3JtYXRfY29tbWFuZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgZm9ybWF0cykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggYjlmNDA3Zi4uMzY2ZmZiZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0zNyw2ICszNyw5IEBACiAgICAgICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQgaW1wb3J0IGJ1aWxkX2V4dAogICAgICAgICBidWlsZF9leHQuVVNFUl9CQVNFID0gc2l0ZS5VU0VSX0JBU0UKIAorICAgIGRlZiBidWlsZF9leHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2V4dCgqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgdGVzdF9idWlsZF9leHQoc2VsZik6CiAgICAgICAgIGdsb2JhbCBBTFJFQURZX1RFU1RFRAogICAgICAgICBjb3B5X3h4bW9kdWxlX2Moc2VsZi50bXBfZGlyKQpAQCAtNDQsNyArNDcsNyBAQAogICAgICAgICB4eF9leHQgPSBFeHRlbnNpb24oJ3h4JywgW3h4X2NdKQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IFt4eF9leHRdfSkKICAgICAgICAgZGlzdC5wYWNrYWdlX2RpciA9IHNlbGYudG1wX2RpcgotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgZml4dXBfYnVpbGRfZXh0KGNtZCkKICAgICAgICAgY21kLmJ1aWxkX2xpYiA9IHNlbGYudG1wX2RpcgogICAgICAgICBjbWQuYnVpbGRfdGVtcCA9IHNlbGYudG1wX2RpcgpAQCAtOTEsNyArOTQsNyBAQAogCiAgICAgZGVmIHRlc3Rfc29sYXJpc19lbmFibGVfc2hhcmVkKHNlbGYpOgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCd9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgb2xkID0gc3lzLnBsYXRmb3JtCiAKICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ3N1bm9zJyAjIGZvb2xpbmcgZmluYWxpemVfb3B0aW9ucwpAQCAtMTEzLDcgKzExNiw3IEBACiAgICAgZGVmIHRlc3RfdXNlcl9zaXRlKHNlbGYpOgogICAgICAgICBpbXBvcnQgc2l0ZQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCd9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKIAogICAgICAgICAjIG1ha2luZyBzdXJlIHRoZSB1c2VyIG9wdGlvbiBpcyB0aGVyZQogICAgICAgICBvcHRpb25zID0gW25hbWUgZm9yIG5hbWUsIHNob3J0LCBsYWJsZSBpbgpAQCAtMTQ0LDE0ICsxNDcsMTQgQEAKICAgICAgICAgIyB3aXRoIHRoZSBvcHRpb25hbCBhcmd1bWVudC4KICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFVua25vd25GaWxlRXJyb3IsIENvbXBpbGVFcnJvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZC5ydW4pICAjIHNob3VsZCByYWlzZSBhbiBlcnJvcgogCiAgICAgICAgIG1vZHVsZXMgPSBbRXh0ZW5zaW9uKCdmb28nLCBbJ3h4eCddLCBvcHRpb25hbD1UcnVlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgY21kLnJ1bigpICAjIHNob3VsZCBwYXNzCiAKQEAgLTE2MCw3ICsxNjMsNyBAQAogICAgICAgICAjIGV0Yy4pIGFyZSBpbiB0aGUgaW5jbHVkZSBzZWFyY2ggcGF0aC4KICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAogICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCkBAIC0xNzIsMTQgKzE3NSwxNCBAQAogCiAgICAgICAgICMgbWFrZSBzdXJlIGNtZC5saWJyYXJpZXMgaXMgdHVybmVkIGludG8gYSBsaXN0CiAgICAgICAgICMgaWYgaXQncyBhIHN0cmluZwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmxpYnJhcmllcyA9ICdteV9saWIsIG90aGVyX2xpYiBsYXN0bGliJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmxpYnJhcmllcywgWydteV9saWInLCAnb3RoZXJfbGliJywgJ2xhc3RsaWInXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBjbWQubGlicmFyeV9kaXJzIGlzIHR1cm5lZCBpbnRvIGEgbGlzdAogICAgICAgICAjIGlmIGl0J3MgYSBzdHJpbmcKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5saWJyYXJ5X2RpcnMgPSAnbXlfbGliX2RpciVzb3RoZXJfbGliX2RpcicgJSBvcy5wYXRoc2VwCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignbXlfbGliX2RpcicsIGNtZC5saWJyYXJ5X2RpcnMpCkBAIC0xODcsNyArMTkwLDcgQEAKIAogICAgICAgICAjIG1ha2Ugc3VyZSBycGF0aCBpcyB0dXJuZWQgaW50byBhIGxpc3QKICAgICAgICAgIyBpZiBpdCdzIGEgc3RyaW5nCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQucnBhdGggPSAnb25lJXN0d28nICUgb3MucGF0aHNlcAogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnJwYXRoLCBbJ29uZScsICd0d28nXSkKQEAgLTE5NiwzMiArMTk5LDMyIEBACiAKICAgICAgICAgIyBtYWtlIHN1cmUgZGVmaW5lIGlzIHR1cm5lZCBpbnRvIDItdHVwbGVzCiAgICAgICAgICMgc3RyaW5ncyBpZiB0aGV5IGFyZSAnLCctc2VwYXJhdGVkIHN0cmluZ3MKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5kZWZpbmUgPSAnb25lLHR3bycKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5kZWZpbmUsIFsoJ29uZScsICcxJyksICgndHdvJywgJzEnKV0pCiAKICAgICAgICAgIyBtYWtlIHN1cmUgdW5kZWYgaXMgdHVybmVkIGludG8gYSBsaXN0IG9mCiAgICAgICAgICMgc3RyaW5ncyBpZiB0aGV5IGFyZSAnLCctc2VwYXJhdGVkIHN0cmluZ3MKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC51bmRlZiA9ICdvbmUsdHdvJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnVuZGVmLCBbJ29uZScsICd0d28nXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBzd2lnX29wdHMgaXMgdHVybmVkIGludG8gYSBsaXN0Ci0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuc3dpZ19vcHRzID0gTm9uZQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnN3aWdfb3B0cywgW10pCiAKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5zd2lnX29wdHMgPSAnMSAyJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnN3aWdfb3B0cywgWycxJywgJzInXSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2V4dGVuc2lvbnNfbGlzdChzZWxmKToKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAKICAgICAgICAgIydleHRlbnNpb25zJyBvcHRpb24gbXVzdCBiZSBhIGxpc3Qgb2YgRXh0ZW5zaW9uIGluc3RhbmNlcwpAQCAtMjcwLDcgKzI3Myw3IEBACiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZV9maWxlcyhzZWxmKToKICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuZ2V0X3NvdXJjZV9maWxlcygpLCBbJ3h4eCddKQogCkBAIC0yNzksNyArMjgyLDcgQEAKICAgICAgICAgIyBzaG91bGQgbm90IGJlIG92ZXJyaWRlbiBieSBhIGNvbXBpbGVyIGluc3RhbmNlCiAgICAgICAgICMgd2hlbiB0aGUgY29tbWFuZCBpcyBydW4KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuY29tcGlsZXIgPSAndW5peCcKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBjbWQucnVuKCkKQEAgLTI5Miw3ICsyOTUsNyBAQAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ2ZvbycsIFtjX2ZpbGVdLCBvcHRpb25hbD1GYWxzZSkKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0X21vZHVsZXMnOiBbZXh0XX0pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBmaXh1cF9idWlsZF9leHQoY21kKQogICAgICAgICBjbWQuZW5zdXJlX2ZpbmFsaXplZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtZC5nZXRfb3V0cHV0cygpKSwgMSkKQEAgLTM1NSw3ICszNTgsNyBAQAogICAgICAgICAjZXRyZWVfZXh0ID0gRXh0ZW5zaW9uKCdseG1sLmV0cmVlJywgW2V0cmVlX2NdKQogICAgICAgICAjZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAnbHhtbCcsICdleHRfbW9kdWxlcyc6IFtldHJlZV9leHRdfSkKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuaW5wbGFjZSA9IDEKICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpciA9IHsnJzogJ3NyYyd9CiAgICAgICAgIGNtZC5kaXN0cmlidXRpb24ucGFja2FnZXMgPSBbJ2x4bWwnLCAnbHhtbC5odG1sJ10KQEAgLTQ2Miw3ICs0NjUsNyBAQAogICAgICAgICAgICAgJ2V4dF9tb2R1bGVzJzogW2RlcHRhcmdldF9leHRdCiAgICAgICAgIH0pCiAgICAgICAgIGRpc3QucGFja2FnZV9kaXIgPSBzZWxmLnRtcF9kaXIKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5idWlsZF9saWIgPSBzZWxmLnRtcF9kaXIKICAgICAgICAgY21kLmJ1aWxkX3RlbXAgPSBzZWxmLnRtcF9kaXIKIApAQCAtNDgxLDggKzQ4NCwxOSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJXcm9uZyBkZXBsb3ltZW50IHRhcmdldCBkdXJpbmcgY29tcGlsYXRpb24iKQogCiAKK2NsYXNzIFBhcmFsbGVsQnVpbGRFeHRUZXN0Q2FzZShCdWlsZEV4dFRlc3RDYXNlKToKKworICAgIGRlZiBidWlsZF9leHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgYnVpbGRfZXh0ID0gc3VwZXIoKS5idWlsZF9leHQoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBidWlsZF9leHQucGFyYWxsZWwgPSBUcnVlCisgICAgICAgIHJldHVybiBidWlsZF9leHQKKworCiBkZWYgdGVzdF9zdWl0ZSgpOgotICAgIHJldHVybiB1bml0dGVzdC5tYWtlU3VpdGUoQnVpbGRFeHRUZXN0Q2FzZSkKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoQnVpbGRFeHRUZXN0Q2FzZSkpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoUGFyYWxsZWxCdWlsZEV4dFRlc3RDYXNlKSkKKyAgICByZXR1cm4gc3VpdGUKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKaW5kZXggYzhmNmI4OS4uMTgyODNkYyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQpAQCAtMTIwLDggKzEyMCw4IEBACiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihjbWQuYnVpbGRfbGliKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksIFsnX19weWNhY2hlX18nLCAnYm9pbGVkZWdncy5weSddKQogICAgICAgICBmb3VuZCA9IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKGNtZC5idWlsZF9saWIsICdfX3B5Y2FjaGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydib2lsZWRlZ2dzLiVzLnB5bycgJSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnXSkKKyAgICAgICAgZXhwZWN0ID0gJ2JvaWxlZGVnZ3Mue30ub3B0LTEucHljJy5mb3JtYXQoc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm91bmQpLCBbZXhwZWN0XSkKIAogICAgIGRlZiB0ZXN0X2Rpcl9pbl9wYWNrYWdlX2RhdGEoc2VsZik6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQppbmRleCAxOGUxZTU3Li45MzEzMzMwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQpAQCAtMjAsOCArMjAsNiBAQAogCiAKIGRlZiBfbWFrZV9leHRfbmFtZShtb2RuYW1lKToKLSAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIHN5cy5leGVjdXRhYmxlLmVuZHN3aXRoKCdfZC5leGUnKToKLSAgICAgICAgbW9kbmFtZSArPSAnX2QnCiAgICAgcmV0dXJuIG1vZG5hbWUgKyBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0VYVF9TVUZGSVgnKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQppbmRleCA0MGRkMWE5Li41Mzc4YWE4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CkBAIC00NCwxMiArNDQsMTEgQEAKICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwcm9qZWN0X2RpciwgJ2Zvby5weScpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShmLCAnIyBweXRob24gZmlsZScpCiAgICAgICAgIGNtZC5ieXRlX2NvbXBpbGUoW2ZdKQotICAgICAgICBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPVRydWUpCi0gICAgICAgIHB5b19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9RmFsc2UpCisgICAgICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIG9wdGltaXphdGlvbj0nJykKKyAgICAgICAgcHljX29wdF9maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPWNtZC5vcHRpbWl6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5Y19maWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5b19maWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5Y19vcHRfZmlsZSkpCiAKICAgICBkZWYgdGVzdF9nZXRfb3V0cHV0cyhzZWxmKToKICAgICAgICAgcHJvamVjdF9kaXIsIGRpc3QgPSBzZWxmLmNyZWF0ZV9kaXN0KCkKQEAgLTY2LDggKzY1LDggQEAKICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlcyA9IFsnc3BhbSddCiAgICAgICAgIGNtZC5kaXN0cmlidXRpb24uc2NyaXB0X25hbWUgPSAnc2V0dXAucHknCiAKLSAgICAgICAgIyBnZXRfb3V0cHV0cyBzaG91bGQgcmV0dXJuIDQgZWxlbWVudHM6IHNwYW0vX19pbml0X18ucHksIC5weWMgYW5kCi0gICAgICAgICMgLnB5bywgZm9vLmltcG9ydC10YWctYWJpZmxhZ3Muc28gLyBmb28ucHlkCisgICAgICAgICMgZ2V0X291dHB1dHMgc2hvdWxkIHJldHVybiA0IGVsZW1lbnRzOiBzcGFtL19faW5pdF9fLnB5IGFuZCAucHljLAorICAgICAgICAjIGZvby5pbXBvcnQtdGFnLWFiaWZsYWdzLnNvIC8gZm9vLnB5ZAogICAgICAgICBvdXRwdXRzID0gY21kLmdldF9vdXRwdXRzKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0cHV0cyksIDQsIG91dHB1dHMpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfbXN2Y2NvbXBpbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDA3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfbXN2Y2NvbXBpbGVyLnB5CkBAIC0wLDAgKzEsMTYwIEBACisiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIuIiIiCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcworCitmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc1BsYXRmb3JtRXJyb3IKK2Zyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisKKyMgQSBtYW5pZmVzdCB3aXRoIHRoZSBvbmx5IGFzc2VtYmx5IHJlZmVyZW5jZSBiZWluZyB0aGUgbXN2Y3J0IGFzc2VtYmx5LCBzbworIyBzaG91bGQgaGF2ZSB0aGUgYXNzZW1ibHkgY29tcGxldGVseSBzdHJpcHBlZC4gIE5vdGUgdGhhdCBhbHRob3VnaCB0aGUKKyMgYXNzZW1ibHkgaGFzIGEgPHNlY3VyaXR5PiByZWZlcmVuY2UgdGhlIGFzc2VtYmx5IGlzIHJlbW92ZWQgLSB0aGF0IGlzCisjIGN1cnJlbnRseSBhICJmZWF0dXJlIiwgbm90IGEgYnVnIDopCitfTUFOSUZFU1RfV0lUSF9PTkxZX01TVkNfUkVGRVJFTkNFID0gIiIiXAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PgorPGFzc2VtYmx5IHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MSIKKyAgICAgICAgICBtYW5pZmVzdFZlcnNpb249IjEuMCI+CisgIDx0cnVzdEluZm8geG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYzIj4KKyAgICA8c2VjdXJpdHk+CisgICAgICA8cmVxdWVzdGVkUHJpdmlsZWdlcz4KKyAgICAgICAgPHJlcXVlc3RlZEV4ZWN1dGlvbkxldmVsIGxldmVsPSJhc0ludm9rZXIiIHVpQWNjZXNzPSJmYWxzZSI+CisgICAgICAgIDwvcmVxdWVzdGVkRXhlY3V0aW9uTGV2ZWw+CisgICAgICA8L3JlcXVlc3RlZFByaXZpbGVnZXM+CisgICAgPC9zZWN1cml0eT4KKyAgPC90cnVzdEluZm8+CisgIDxkZXBlbmRlbmN5PgorICAgIDxkZXBlbmRlbnRBc3NlbWJseT4KKyAgICAgIDxhc3NlbWJseUlkZW50aXR5IHR5cGU9IndpbjMyIiBuYW1lPSJNaWNyb3NvZnQuVkM5MC5DUlQiCisgICAgICAgICB2ZXJzaW9uPSI5LjAuMjEwMjIuOCIgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlPSJ4ODYiCisgICAgICAgICBwdWJsaWNLZXlUb2tlbj0iWFhYWCI+CisgICAgICA8L2Fzc2VtYmx5SWRlbnRpdHk+CisgICAgPC9kZXBlbmRlbnRBc3NlbWJseT4KKyAgPC9kZXBlbmRlbmN5PgorPC9hc3NlbWJseT4KKyIiIgorCisjIEEgbWFuaWZlc3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFzc2VtYmxpZXMgb3RoZXIgdGhhbiBtc3ZjcnQuICBXaGVuIHByb2Nlc3NlZCwKKyMgdGhpcyBhc3NlbWJseSBzaG91bGQgYmUgcmV0dXJuZWQgd2l0aCBqdXN0IHRoZSBtc3ZjcnQgcGFydCByZW1vdmVkLgorX01BTklGRVNUX1dJVEhfTVVMVElQTEVfUkVGRVJFTkNFUyA9ICIiIlwKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KKzxhc3NlbWJseSB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjEiCisgICAgICAgICAgbWFuaWZlc3RWZXJzaW9uPSIxLjAiPgorICA8dHJ1c3RJbmZvIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MyI+CisgICAgPHNlY3VyaXR5PgorICAgICAgPHJlcXVlc3RlZFByaXZpbGVnZXM+CisgICAgICAgIDxyZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbCBsZXZlbD0iYXNJbnZva2VyIiB1aUFjY2Vzcz0iZmFsc2UiPgorICAgICAgICA8L3JlcXVlc3RlZEV4ZWN1dGlvbkxldmVsPgorICAgICAgPC9yZXF1ZXN0ZWRQcml2aWxlZ2VzPgorICAgIDwvc2VjdXJpdHk+CisgIDwvdHJ1c3RJbmZvPgorICA8ZGVwZW5kZW5jeT4KKyAgICA8ZGVwZW5kZW50QXNzZW1ibHk+CisgICAgICA8YXNzZW1ibHlJZGVudGl0eSB0eXBlPSJ3aW4zMiIgbmFtZT0iTWljcm9zb2Z0LlZDOTAuQ1JUIgorICAgICAgICAgdmVyc2lvbj0iOS4wLjIxMDIyLjgiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0ieDg2IgorICAgICAgICAgcHVibGljS2V5VG9rZW49IlhYWFgiPgorICAgICAgPC9hc3NlbWJseUlkZW50aXR5PgorICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+CisgIDwvZGVwZW5kZW5jeT4KKyAgPGRlcGVuZGVuY3k+CisgICAgPGRlcGVuZGVudEFzc2VtYmx5PgorICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0id2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5WQzkwLk1GQyIKKyAgICAgICAgdmVyc2lvbj0iOS4wLjIxMDIyLjgiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0ieDg2IgorICAgICAgICBwdWJsaWNLZXlUb2tlbj0iWFhYWCI+PC9hc3NlbWJseUlkZW50aXR5PgorICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+CisgIDwvZGVwZW5kZW5jeT4KKzwvYXNzZW1ibHk+CisiIiIKKworX0NMRUFORURfTUFOSUZFU1QgPSAiIiJcCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+Cis8YXNzZW1ibHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYxIgorICAgICAgICAgIG1hbmlmZXN0VmVyc2lvbj0iMS4wIj4KKyAgPHRydXN0SW5mbyB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPgorICAgIDxzZWN1cml0eT4KKyAgICAgIDxyZXF1ZXN0ZWRQcml2aWxlZ2VzPgorICAgICAgICA8cmVxdWVzdGVkRXhlY3V0aW9uTGV2ZWwgbGV2ZWw9ImFzSW52b2tlciIgdWlBY2Nlc3M9ImZhbHNlIj4KKyAgICAgICAgPC9yZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbD4KKyAgICAgIDwvcmVxdWVzdGVkUHJpdmlsZWdlcz4KKyAgICA8L3NlY3VyaXR5PgorICA8L3RydXN0SW5mbz4KKyAgPGRlcGVuZGVuY3k+CisKKyAgPC9kZXBlbmRlbmN5PgorICA8ZGVwZW5kZW5jeT4KKyAgICA8ZGVwZW5kZW50QXNzZW1ibHk+CisgICAgICA8YXNzZW1ibHlJZGVudGl0eSB0eXBlPSJ3aW4zMiIgbmFtZT0iTWljcm9zb2Z0LlZDOTAuTUZDIgorICAgICAgICB2ZXJzaW9uPSI5LjAuMjEwMjIuOCIgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlPSJ4ODYiCisgICAgICAgIHB1YmxpY0tleVRva2VuPSJYWFhYIj48L2Fzc2VtYmx5SWRlbnRpdHk+CisgICAgPC9kZXBlbmRlbnRBc3NlbWJseT4KKyAgPC9kZXBlbmRlbmN5PgorPC9hc3NlbWJseT4iIiIKKworU0tJUF9NRVNTQUdFID0gKE5vbmUgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgZWxzZQorICAgICAgICAgICAgICAgICJUaGVzZSB0ZXN0cyBhcmUgb25seSBmb3Igd2luMzIiKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhTS0lQX01FU1NBR0UgaXMgTm9uZSwgU0tJUF9NRVNTQUdFKQorY2xhc3MgbXN2Y2NvbXBpbGVyVGVzdENhc2Uoc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9ub19jb21waWxlcihzZWxmKToKKyAgICAgICAgIyBtYWtlcyBzdXJlIHF1ZXJ5X3ZjdmFyc2FsbCByYWlzZXMKKyAgICAgICAgIyBhIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IgaWYgdGhlIGNvbXBpbGVyCisgICAgICAgICMgaXMgbm90IGZvdW5kCisgICAgICAgIGZyb20gZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgaW1wb3J0IF9nZXRfdmNfZW52CisgICAgICAgIGRlZiBfZmluZF92Y3ZhcnNhbGwoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyIGFzIF9tc3ZjY29tcGlsZXIKKyAgICAgICAgb2xkX2ZpbmRfdmN2YXJzYWxsID0gX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBfZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgX2dldF92Y19lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3b250IGZpbmQgdGhpcyB2ZXJzaW9uJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gb2xkX2ZpbmRfdmN2YXJzYWxsCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfdmlzdWFsX2NfcmVmKHNlbGYpOgorICAgICAgICBmcm9tIGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyIGltcG9ydCBNU1ZDQ29tcGlsZXIKKyAgICAgICAgdGVtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIG1hbmlmZXN0ID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdtYW5pZmVzdCcpCisgICAgICAgIGYgPSBvcGVuKG1hbmlmZXN0LCAndycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYud3JpdGUoX01BTklGRVNUX1dJVEhfTVVMVElQTEVfUkVGRVJFTkNFUykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGNvbXBpbGVyID0gTVNWQ0NvbXBpbGVyKCkKKyAgICAgICAgY29tcGlsZXIuX3JlbW92ZV92aXN1YWxfY19yZWYobWFuaWZlc3QpCisKKyAgICAgICAgIyBzZWUgd2hhdCB3ZSBnb3QKKyAgICAgICAgZiA9IG9wZW4obWFuaWZlc3QpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzCisgICAgICAgICAgICBjb250ZW50ID0gJ1xuJy5qb2luKFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCldKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgIyBtYWtlcyBzdXJlIHRoZSBtYW5pZmVzdCB3YXMgcHJvcGVybHkgY2xlYW5lZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnQsIF9DTEVBTkVEX01BTklGRVNUKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX2VudGlyZV9tYW5pZmVzdChzZWxmKToKKyAgICAgICAgZnJvbSBkaXN0dXRpbHMuX21zdmNjb21waWxlciBpbXBvcnQgTVNWQ0NvbXBpbGVyCisgICAgICAgIHRlbXBkaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBtYW5pZmVzdCA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbWFuaWZlc3QnKQorICAgICAgICBmID0gb3BlbihtYW5pZmVzdCwgJ3cnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmLndyaXRlKF9NQU5JRkVTVF9XSVRIX09OTFlfTVNWQ19SRUZFUkVOQ0UpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICBjb21waWxlciA9IE1TVkNDb21waWxlcigpCisgICAgICAgIGdvdCA9IGNvbXBpbGVyLl9yZW1vdmVfdmlzdWFsX2NfcmVmKG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnb3QpCisKKworZGVmIHRlc3Rfc3VpdGUoKToKKyAgICByZXR1cm4gdW5pdHRlc3QubWFrZVN1aXRlKG1zdmNjb21waWxlclRlc3RDYXNlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggNWFkY2FjNS4uZTQyMzMyNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtMzIyLDExICszMjIsMTEgQEAKICAgICAgICAgICAgICAgICAgIHByZWZpeD1Ob25lLCBiYXNlX2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgICAgdmVyYm9zZT0xLCBkcnlfcnVuPTAsCiAgICAgICAgICAgICAgICAgICBkaXJlY3Q9Tm9uZSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIGVpdGhlciAucHljCi0gICAgb3IgLnB5byBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CisgICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIC5weWMKKyAgICBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CiAgICAgb2YgZmlsZXMgdG8gY29tcGlsZTsgYW55IGZpbGVzIHRoYXQgZG9uJ3QgZW5kIGluICIucHkiIGFyZSBzaWxlbnRseQogICAgIHNraXBwZWQuICAnb3B0aW1pemUnIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUgKGdlbmVyYXRlIC5weWMpCisgICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUKICAgICAgIDEgLSBub3JtYWwgb3B0aW1pemF0aW9uIChsaWtlICJweXRob24gLU8iKQogICAgICAgMiAtIGV4dHJhIG9wdGltaXphdGlvbiAobGlrZSAicHl0aG9uIC1PTyIpCiAgICAgSWYgJ2ZvcmNlJyBpcyB0cnVlLCBhbGwgZmlsZXMgYXJlIHJlY29tcGlsZWQgcmVnYXJkbGVzcyBvZgpAQCAtNDM4LDggKzQzOCw5IEBACiAgICAgICAgICAgICAjICAgY2ZpbGUgLSBieXRlLWNvbXBpbGVkIGZpbGUKICAgICAgICAgICAgICMgICBkZmlsZSAtIHB1cnBvcnRlZCBzb3VyY2UgZmlsZW5hbWUgKHNhbWUgYXMgJ2ZpbGUnIGJ5IGRlZmF1bHQpCiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9ICcnIGlmIG9wdGltaXplID09IDAgZWxzZSBvcHRpbWl6ZQogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgIGZpbGUsIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgICAgICAgICAgZGZpbGUgPSBmaWxlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb24ucHkgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb24ucHkKaW5kZXggZWJjYWI4NC4uYWYxNGNjMSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy92ZXJzaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbi5weQpAQCAtNDgsMTIgKzQ4LDYgQEAKICAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgIHJldHVybiBjID09IDAKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQotICAgICAgICBpZiBjIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIGMKLSAgICAgICAgcmV0dXJuIGMgIT0gMAotCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCiAgICAgICAgIGlmIGMgaXMgTm90SW1wbGVtZW50ZWQ6CmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDY0ZTZkNzEuLjk2YWIwYzQgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC01MzAsOCArNTMwLDkgQEAKICAgICAgICAgICAgIGV4YW1wbGVzID0gJzEgZXhhbXBsZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4YW1wbGVzID0gJyVkIGV4YW1wbGVzJyAlIGxlbihzZWxmLmV4YW1wbGVzKQotICAgICAgICByZXR1cm4gKCc8RG9jVGVzdCAlcyBmcm9tICVzOiVzICglcyk+JyAlCi0gICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIGV4YW1wbGVzKSkKKyAgICAgICAgcmV0dXJuICgnPCVzICVzIGZyb20gJXM6JXMgKCVzKT4nICUKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIGV4YW1wbGVzKSkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIG5vdCB0eXBlKG90aGVyKToKQEAgLTk3OCw3ICs5NzksOCBAQAogICAgICAgICAgICAgZm9yIHZhbG5hbWUsIHZhbCBpbiBvYmouX19kaWN0X18uaXRlbXMoKToKICAgICAgICAgICAgICAgICB2YWxuYW1lID0gJyVzLiVzJyAlIChuYW1lLCB2YWxuYW1lKQogICAgICAgICAgICAgICAgICMgUmVjdXJzZSB0byBmdW5jdGlvbnMgJiBjbGFzc2VzLgotICAgICAgICAgICAgICAgIGlmICgoaW5zcGVjdC5pc3JvdXRpbmUodmFsKSBvciBpbnNwZWN0LmlzY2xhc3ModmFsKSkgYW5kCisgICAgICAgICAgICAgICAgaWYgKChpbnNwZWN0Lmlzcm91dGluZShpbnNwZWN0LnVud3JhcCh2YWwpKQorICAgICAgICAgICAgICAgICAgICAgb3IgaW5zcGVjdC5pc2NsYXNzKHZhbCkpIGFuZAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcm9tX21vZHVsZShtb2R1bGUsIHZhbCkpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9maW5kKHRlc3RzLCB2YWwsIHZhbG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JzLCBzZWVuKQpAQCAtMTA0OSw3ICsxMDUxLDcgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgbW9kdWxlLl9fbmFtZV9fKQotICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSBpbiAoIi5weWMiLCAiLnB5byIpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSA9PSAiLnB5YyI6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jc3RyaW5nLCBnbG9icywgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vKQpAQCAtMjM2NywxNSArMjM2OSw2IEBACiAgICAgICAgIHN1aXRlID0gX0RvY1Rlc3RTdWl0ZSgpCiAgICAgICAgIHN1aXRlLmFkZFRlc3QoU2tpcERvY1Rlc3RDYXNlKG1vZHVsZSkpCiAgICAgICAgIHJldHVybiBzdWl0ZQotICAgIGVsaWYgbm90IHRlc3RzOgotICAgICAgICAjIFdoeSBkbyB3ZSB3YW50IHRvIGRvIHRoaXM/IEJlY2F1c2UgaXQgcmV2ZWFscyBhIGJ1ZyB0aGF0IG1pZ2h0Ci0gICAgICAgICMgb3RoZXJ3aXNlIGJlIGhpZGRlbi4KLSAgICAgICAgIyBJdCBpcyBwcm9iYWJseSBhIGJ1ZyB0aGF0IHRoaXMgZXhjZXB0aW9uIGlzIG5vdCBhbHNvIHJhaXNlZCBpZiB0aGUKLSAgICAgICAgIyBudW1iZXIgb2YgZG9jdGVzdCBleGFtcGxlcyBpbiB0ZXN0cyBpcyB6ZXJvIChpLmUuIGlmIG5vIGRvY3Rlc3QKLSAgICAgICAgIyBleGFtcGxlcyB3ZXJlIGZvdW5kKS4gIEhvd2V2ZXIsIHdlIHNob3VsZCBwcm9iYWJseSBub3QgYmUgcmFpc2luZwotICAgICAgICAjIGFuIGV4Y2VwdGlvbiBhdCBhbGwgaGVyZSwgdGhvdWdoIGl0IGlzIHRvbyBsYXRlIHRvIG1ha2UgdGhpcyBjaGFuZ2UKLSAgICAgICAgIyBmb3IgYSBtYWludGVuYW5jZSByZWxlYXNlLiAgU2VlIGFsc28gaXNzdWUgIzE0NjQ5LgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1vZHVsZSwgImhhcyBubyBkb2NzdHJpbmdzIikKIAogICAgIHRlc3RzLnNvcnQoKQogICAgIHN1aXRlID0gX0RvY1Rlc3RTdWl0ZSgpCkBAIC0yMzg1LDcgKzIzNzgsNyBAQAogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgbm90IHRlc3QuZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1vZHVsZS5fX2ZpbGVfXwotICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSBpbiAoIi5weWMiLCAiLnB5byIpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSA9PSAiLnB5YyI6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgICAgICAgICB0ZXN0LmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICAgc3VpdGUuYWRkVGVzdChEb2NUZXN0Q2FzZSh0ZXN0LCAqKm9wdGlvbnMpKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19faW5pdF9fLnB5IGIvTGliL2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGZmMTZmNmEuLmZhZTg3MjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fX2luaXRfXy5weQorKysgYi9MaWIvZW1haWwvX19pbml0X18ucHkKQEAgLTQsOCArNCw2IEBACiAKICIiIkEgcGFja2FnZSBmb3IgcGFyc2luZywgaGFuZGxpbmcsIGFuZCBnZW5lcmF0aW5nIGVtYWlsIG1lc3NhZ2VzLiIiIgogCi1fX3ZlcnNpb25fXyA9ICc1LjEuMCcKLQogX19hbGxfXyA9IFsKICAgICAnYmFzZTY0bWltZScsCiAgICAgJ2NoYXJzZXQnLApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGE5YmRmNDQuLmYyNjQxOTEgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTMyMCwxNyArMzIwLDE4IEBACiAgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKIAogICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcgaWYgZm9sZGVkLnBvbGljeS51dGY4IGVsc2UgJ2FzY2lpJwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQogICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKGVuY29kaW5nKQogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZworICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZyB3aGVuIHV0ZjggaXMgRmFsc2UuCiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCiAgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBmb2xkZWQucG9saWN5KQogICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKQEAgLTM5NCwxMSArMzk1LDEyIEBACiAKICAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnIGlmIGZvbGRlZC5wb2xpY3kudXRmOCBlbHNlICdhc2NpaScKICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKICAgICAgICAgICAgIGlzX2V3ID0gRmFsc2UKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgpAQCAtNDc1LDEyICs0NzcsMTMgQEAKICAgICAgICAgIyBjb21tZW50IHRoYXQgYmVjb21lcyBhIGJhcnJpZXIgYWNyb3NzIHdoaWNoIHdlIGNhbid0IGNvbXBvc2UgZW5jb2RlZAogICAgICAgICAjIHdvcmRzLgogICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcgaWYgZm9sZGVkLnBvbGljeS51dGY4IGVsc2UgJ2FzY2lpJwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQogICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQogICAgICAgICAgICAgaGFzX2V3ID0gRmFsc2UKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weSBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQppbmRleCA4MTA2MTE0Li5jMGQ5OGE0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKKysrIGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CkBAIC0xNDksMTIgKzE0OSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBOb25lIG9yIDAgbWVhbnMgbm8gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBpbmcgaXMgZG9uZS4gIERlZmF1bHQgaXMgNzguCiAKKyAgICBtYW5nbGVfZnJvbV8gICAgICAgIC0tIGEgZmxhZyB0aGF0LCB3aGVuIFRydWUgZXNjYXBlcyBGcm9tXyBsaW5lcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgb2YgdGhlIG1lc3NhZ2UgYnkgcHV0dGluZyBhIGA+JyBpbiBmcm9udCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuIERlZmF1bHQ6IFRydWUuCisKICAgICAiIiIKIAogICAgIHJhaXNlX29uX2RlZmVjdCA9IEZhbHNlCiAgICAgbGluZXNlcCA9ICdcbicKICAgICBjdGVfdHlwZSA9ICc4Yml0JwogICAgIG1heF9saW5lX2xlbmd0aCA9IDc4CisgICAgbWFuZ2xlX2Zyb21fID0gRmFsc2UKIAogICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKICAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgpAQCAtMjY2LDYgKzI3Miw4IEBACiAgICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbiA1LjEuCiAgICAgIiIiCiAKKyAgICBtYW5nbGVfZnJvbV8gPSBUcnVlCisKICAgICBkZWYgX3Nhbml0aXplX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKICAgICAgICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2NoYXJzZXQucHkgYi9MaWIvZW1haWwvY2hhcnNldC5weQppbmRleCBlOTk5NDcyLi5lZTU2NDA0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvY2hhcnNldC5weQorKysgYi9MaWIvZW1haWwvY2hhcnNldC5weQpAQCAtMjQ5LDkgKzI0OSw2IEBACiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBzdHIoc2VsZikgPT0gc3RyKG90aGVyKS5sb3dlcigpCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKLQogICAgIGRlZiBnZXRfYm9keV9lbmNvZGluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIHVzZWQgZm9yIGJvZHkgZW5jb2RpbmcuCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5IGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKaW5kZXggYzk1YjI3Zi4uZTJlM2U5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKIE5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCiBOTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQpAQCAtNTIsOCArNTMsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIyBDaHVua3Mgb2YgdGhlIGxhc3QgcGFydGlhbCBsaW5lIHB1c2hlZCBpbnRvIHRoaXMgb2JqZWN0LgogICAgICAgICBzZWxmLl9wYXJ0aWFsID0gW10KLSAgICAgICAgIyBUaGUgbGlzdCBvZiBmdWxsLCBwdXNoZWQgbGluZXMsIGluIHJldmVyc2Ugb3JkZXIKLSAgICAgICAgc2VsZi5fbGluZXMgPSBbXQorICAgICAgICAjIEEgZGVxdWUgb2YgZnVsbCwgcHVzaGVkIGxpbmVzCisgICAgICAgIHNlbGYuX2xpbmVzID0gZGVxdWUoKQogICAgICAgICAjIFRoZSBzdGFjayBvZiBmYWxzZS1FT0YgY2hlY2tpbmcgcHJlZGljYXRlcy4KICAgICAgICAgc2VsZi5fZW9mc3RhY2sgPSBbXQogICAgICAgICAjIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2VkIG9yIG5vdC4KQEAgLTc4LDIxICs3OSwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5lZWRNb3JlRGF0YQogICAgICAgICAjIFBvcCB0aGUgbGluZSBvZmYgdGhlIHN0YWNrIGFuZCBzZWUgaWYgaXQgbWF0Y2hlcyB0aGUgY3VycmVudAogICAgICAgICAjIGZhbHNlLUVPRiBwcmVkaWNhdGUuCi0gICAgICAgIGxpbmUgPSBzZWxmLl9saW5lcy5wb3AoKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZXMucG9wbGVmdCgpCiAgICAgICAgICMgUkZDIDIwNDYsIHNlY3Rpb24gNS4xLjIgcmVxdWlyZXMgdXMgdG8gcmVjb2duaXplIG91dGVyIGxldmVsCiAgICAgICAgICMgYm91bmRhcmllcyBhdCBhbnkgbGV2ZWwgb2YgaW5uZXIgbmVzdGluZy4gIERvIHRoaXMsIGJ1dCBiZSBzdXJlIGl0J3MKICAgICAgICAgIyBpbiB0aGUgb3JkZXIgb2YgbW9zdCB0byBsZWFzdCBuZXN0ZWQuCi0gICAgICAgIGZvciBhdGVvZiBpbiBzZWxmLl9lb2ZzdGFja1s6Oi0xXToKKyAgICAgICAgZm9yIGF0ZW9mIGluIHJldmVyc2VkKHNlbGYuX2VvZnN0YWNrKToKICAgICAgICAgICAgIGlmIGF0ZW9mKGxpbmUpOgogICAgICAgICAgICAgICAgICMgV2UncmUgYXQgdGhlIGZhbHNlIEVPRi4gIEJ1dCBwdXNoIHRoZSBsYXN0IGxpbmUgYmFjayBmaXJzdC4KLSAgICAgICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmRsZWZ0KGxpbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICBkZWYgdW5yZWFkbGluZShzZWxmLCBsaW5lKToKICAgICAgICAgIyBMZXQgdGhlIGNvbnN1bWVyIHB1c2ggYSBsaW5lIGJhY2sgaW50byB0aGUgYnVmZmVyLgogICAgICAgICBhc3NlcnQgbGluZSBpcyBub3QgTmVlZE1vcmVEYXRhCi0gICAgICAgIHNlbGYuX2xpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmRsZWZ0KGxpbmUpCiAKICAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKICAgICAgICAgIiIiUHVzaCBzb21lIG5ldyBkYXRhIGludG8gdGhpcyBvYmplY3QuIiIiCkBAIC0xMTksOCArMTIwLDcgQEAKICAgICAgICAgc2VsZi5wdXNobGluZXMocGFydHMpCiAKICAgICBkZWYgcHVzaGxpbmVzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgIyBSZXZlcnNlIGFuZCBpbnNlcnQgYXQgdGhlIGZyb250IG9mIHRoZSBsaW5lcy4KLSAgICAgICAgc2VsZi5fbGluZXNbOjBdID0gbGluZXNbOjotMV0KKyAgICAgICAgc2VsZi5fbGluZXMuZXh0ZW5kKGxpbmVzKQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2dlbmVyYXRvci5weSBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKaW5kZXggNDczNTcyMS4uMTFmZjE2ZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2dlbmVyYXRvci5weQorKysgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CkBAIC0zMiwxNiArMzIsMTYgQEAKICAgICAjIFB1YmxpYyBpbnRlcmZhY2UKICAgICAjCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgdGhlIGdlbmVyYXRvciBmb3IgbWVzc2FnZSBmbGF0dGVuaW5nLgogCiAgICAgICAgIG91dGZwIGlzIHRoZSBvdXRwdXQgZmlsZS1saWtlIG9iamVjdCBmb3Igd3JpdGluZyB0aGUgbWVzc2FnZSB0by4gIEl0CiAgICAgICAgIG11c3QgaGF2ZSBhIHdyaXRlKCkgbWV0aG9kLgogCi0gICAgICAgIE9wdGlvbmFsIG1hbmdsZV9mcm9tXyBpcyBhIGZsYWcgdGhhdCwgd2hlbiBUcnVlICh0aGUgZGVmYXVsdCksIGVzY2FwZXMKLSAgICAgICAgRnJvbV8gbGluZXMgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UgYnkgcHV0dGluZyBhIGA+JyBpbiBmcm9udCBvZgotICAgICAgICB0aGVtLgorICAgICAgICBPcHRpb25hbCBtYW5nbGVfZnJvbV8gaXMgYSBmbGFnIHRoYXQsIHdoZW4gVHJ1ZSAodGhlIGRlZmF1bHQgaWYgcG9saWN5CisgICAgICAgIGlzIG5vdCBzZXQpLCBlc2NhcGVzIEZyb21fIGxpbmVzIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIGJ5IHB1dHRpbmcKKyAgICAgICAgYSBgPicgaW4gZnJvbnQgb2YgdGhlbS4KIAogICAgICAgICBPcHRpb25hbCBtYXhoZWFkZXJsZW4gc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCiAgICAgICAgIGhlYWRlci4gIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwpAQCAtNTYsNiArNTYsOSBAQAogICAgICAgICBmbGF0dGVuIG1ldGhvZCBpcyB1c2VkLgogCiAgICAgICAgICIiIgorCisgICAgICAgIGlmIG1hbmdsZV9mcm9tXyBpcyBOb25lOgorICAgICAgICAgICAgbWFuZ2xlX2Zyb21fID0gVHJ1ZSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeS5tYW5nbGVfZnJvbV8KICAgICAgICAgc2VsZi5fZnAgPSBvdXRmcAogICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8gPSBtYW5nbGVfZnJvbV8KICAgICAgICAgc2VsZi5tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KQEAgLTQ0OSw3ICs0NTIsNyBAQAogICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgICB3aXRoIGEgZm9ybWF0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcnQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CiAgICAgICAgICIiIkxpa2UgR2VuZXJhdG9yLl9faW5pdF9fKCkgZXhjZXB0IHRoYXQgYW4gYWRkaXRpb25hbCBvcHRpb25hbAogICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA5Yzg5NTg5Li42ODIwZWExIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTI2Miw5ICsyNjIsNiBAQAogICAgICAgICAjIGFyZ3MgYW5kIGRvIGFub3RoZXIgY29tcGFyaXNvbi4KICAgICAgICAgcmV0dXJuIG90aGVyID09IHN0cihzZWxmKQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgotCiAgICAgZGVmIGFwcGVuZChzZWxmLCBzLCBjaGFyc2V0PU5vbmUsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgICIiIkFwcGVuZCBhIHN0cmluZyB0byB0aGUgTUlNRSBoZWFkZXIuCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQppbmRleCA5MTFhMmFmLi40NjhjYTllIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKKysrIGIvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC04MSw3ICs4MSw4IEBACiAgICAgICAgIHJldHVybiBscAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkFkZHJlc3MoZGlzcGxheV9uYW1lPXshcn0sIHVzZXJuYW1lPXshcn0sIGRvbWFpbj17IXJ9KSIuZm9ybWF0KAorICAgICAgICByZXR1cm4gInt9KGRpc3BsYXlfbmFtZT17IXJ9LCB1c2VybmFtZT17IXJ9LCBkb21haW49eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYudXNlcm5hbWUsIHNlbGYuZG9tYWluKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xMzIsNyArMTMzLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkdyb3VwKGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICByZXR1cm4gInt9KGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYuYWRkcmVzc2VzKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IDJmMzdkYmIuLmE4OTIwMTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC05MjcsMjAgKzkyNywyMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIFtwYXJ0LmdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaikgZm9yIHBhcnQgaW4gc2VsZi53YWxrKCldCiAKKyAgICBkZWYgZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQtZGlzcG9zaXRpb24gaWYgaXQgZXhpc3RzLCBvciBOb25lLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFsdWVzIGNhbiBiZSBlaXRoZXIgJ2lubGluZScsICdhdHRhY2htZW50JyBvciBOb25lCisgICAgICAgIGFjY29yZGluZyB0byB0aGUgcmZjMjE4My4KKyAgICAgICAgIiIiCisgICAgICAgIHZhbHVlID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgY19kID0gX3NwbGl0cGFyYW0odmFsdWUpWzBdLmxvd2VyKCkKKyAgICAgICAgcmV0dXJuIGNfZAorCiAgICAgIyBJLmUuIGRlZiB3YWxrKHNlbGYpOiAuLi4KICAgICBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgd2FsawogCi0jIFhYWCBTdXBwb3J0IGZvciB0ZW1wb3JhcnkgZGVwcmVjYXRpb24gaGFjayBmb3IgaXNfYXR0YWNobWVudCBwcm9wZXJ0eS4KLWNsYXNzIF9Jc0F0dGFjaG1lbnQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgd2FybmluZ3Mud2FybigiaXNfYXR0YWNobWVudCB3aWxsIGJlIGEgbWV0aG9kLCBub3QgYSBwcm9wZXJ0eSwgaW4gMy41IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0zKQotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQogCiBjbGFzcyBNSU1FUGFydChNZXNzYWdlKToKIApAQCAtOTUwLDEyICs5NTEsOSBAQAogICAgICAgICAgICAgcG9saWN5ID0gZGVmYXVsdAogICAgICAgICBNZXNzYWdlLl9faW5pdF9fKHNlbGYsIHBvbGljeSkKIAotICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19hdHRhY2htZW50KHNlbGYpOgogICAgICAgICBjX2QgPSBzZWxmLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpCi0gICAgICAgIHJlc3VsdCA9IEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCi0gICAgICAgICMgWFhYIHRyYW5zaXRpb25hbCBoYWNrIHRvIHJhaXNlIGRlcHJlY2F0aW9uIGlmIG5vdCBjYWxsZWQuCi0gICAgICAgIHJldHVybiBfSXNBdHRhY2htZW50KHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCiAKICAgICBkZWYgX2ZpbmRfYm9keShzZWxmLCBwYXJ0LCBwcmVmZXJlbmNlbGlzdCk6CiAgICAgICAgIGlmIHBhcnQuaXNfYXR0YWNobWVudCgpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggZWMxOGI4NS4uNDc5OTI4ZSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC02LDYgKzYsNyBAQAogCiBfX2FsbF9fID0gWydNSU1FVGV4dCddCiAKK2Zyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldAogZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAogCiAKQEAgLTM0LDYgKzM1LDggQEAKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1cy1hc2NpaScKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCisgICAgICAgIGlmIGlzaW5zdGFuY2UoX2NoYXJzZXQsIENoYXJzZXQpOgorICAgICAgICAgICAgX2NoYXJzZXQgPSBzdHIoX2NoYXJzZXQpCiAKICAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqeydjaGFyc2V0JzogX2NoYXJzZXR9KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggZjBiMjBmNC4uNmFjNjRhNSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BvbGljeS5weQorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC0zNSw2ICszNSwxMyBAQAogICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvCiAgICAgYWxsIFBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAgdXRmOCAgICAgICAgICAgICAgICAtLSBpZiBGYWxzZSAodGhlIGRlZmF1bHQpIG1lc3NhZ2UgaGVhZGVycyB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGFzIEFTQ0lJLCB1c2luZyBlbmNvZGVkIHdvcmRzIHRvIGVuY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBzb3VyY2Ugc3RyaW5ncy4gIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCB0aGUgbWVzc2FnZSBoZWFkZXJzIHdpbGwgYmUgc2VyaWFsaXplZCB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBhbmQgd2lsbCBub3QgY29udGFpbiBlbmNvZGVkIHdvcmRzIChzZWUgUkZDCisgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTMyIGZvciBtb3JlIG9uIHRoaXMgc2VyaWFsaXphdGlvbiBmb3JtYXQpLgorCiAgICAgcmVmb2xkX3NvdXJjZSAgICAgICAtLSBpZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBNZXNzYWdlIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZSBmcm9tIHRoZSBwYXJzaW5nIG9mIHNvbWUgc291cmNlLCB0aGlzIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQKQEAgLTcyLDYgKzc5LDcgQEAKIAogICAgICIiIgogCisgICAgdXRmOCA9IEZhbHNlCiAgICAgcmVmb2xkX3NvdXJjZSA9ICdsb25nJwogICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQogICAgIGNvbnRlbnRfbWFuYWdlciA9IHJhd19kYXRhX21hbmFnZXIKQEAgLTE3NSw5ICsxODMsMTMgQEAKICAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKICAgICAgICAgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgogCisgICAgICAgIElmIHV0ZjggaXMgdHJ1ZSwgaGVhZGVycyBhcmUgZW5jb2RlZCB0byB1dGY4LCBvdGhlcndpc2UgdG8gYXNjaWkgd2l0aAorICAgICAgICBub24tQVNDSUkgdW5pY29kZSByZW5kZXJlZCBhcyBlbmNvZGVkIHdvcmRzLgorCiAgICAgICAgICIiIgogICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKLSAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGNoYXJzZXQgPSAndXRmOCcgaWYgc2VsZi51dGY4IGVsc2UgJ2FzY2lpJworICAgICAgICByZXR1cm4gZm9sZGVkLmVuY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKIAogICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1GYWxzZSk6CiAgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CkBAIC0xOTksMyArMjExLDQgQEAKIHN0cmljdCA9IGRlZmF1bHQuY2xvbmUocmFpc2Vfb25fZGVmZWN0PVRydWUpCiBTTVRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJykKIEhUVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nLCBtYXhfbGluZV9sZW5ndGg9Tm9uZSkKK1NNVFBVVEY4ID0gU01UUC5jbG9uZSh1dGY4PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKaW5kZXggNGNiYWFkZS4uNjdjODI4ZCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQpAQCAtNDEyLDYgKzQxMiwxMSBAQAogICAgICMga29pOF9yIGNvZGVjCiAgICAgJ2Nza29pOHInICAgICAgICAgICAgOiAna29pOF9yJywKIAorICAgICMga3oxMDQ4IGNvZGVjCisgICAgJ2t6XzEwNDgnICAgICAgICAgICA6ICdrejEwNDgnLAorICAgICdyazEwNDgnICAgICAgICAgICAgOiAna3oxMDQ4JywKKyAgICAnc3RyazEwNDhfMjAwMicgICAgIDogJ2t6MTA0OCcsCisKICAgICAjIGxhdGluXzEgY29kZWMKICAgICAjCiAgICAgIyBOb3RlIHRoYXQgdGhlIGxhdGluXzEgY29kZWMgaXMgaW1wbGVtZW50ZWQgaW50ZXJuYWxseSBpbiBDIGFuZCBhCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKaW5kZXggMjg3ZWI4Ny4uOTVjYjJhZSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpAQCAtMTEsMjAgKzExLDIzIEBACiAjIyMgQ29kZWMgQVBJcwogCiBlbmNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgNjUwMDEpCi1kZWNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgNjUwMDEpCitfZGVjb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDY1MDAxKQorCitkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgIHJldHVybiBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg2NTAwMSwgaW5wdXQsIGVycm9ycywgVHJ1ZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgotICAgIF9idWZmZXJfZGVjb2RlID0gZGVjb2RlCisgICAgX2J1ZmZlcl9kZWNvZGUgPSBfZGVjb2RlCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBlbmNvZGUgPSBlbmNvZGUKIAogY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgotICAgIGRlY29kZSA9IGRlY29kZQorICAgIGRlY29kZSA9IF9kZWNvZGUKIAogIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCiAKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mva29pOF90LnB5IGIvTGliL2VuY29kaW5ncy9rb2k4X3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0MTViYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mva29pOF90LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGtvaThfdAorIiIiCisjIGh0dHA6Ly9ydS53aWtpcGVkaWEub3JnL3dpa2kv0JrQntCYLTgKKyMgaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvbGliaWNvbnYvbGliaWNvbnYtNC9saWJpY29udi90ZXN0cy9LT0k4LVQuVFhUCisKK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKKworICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKKworICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgorICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIHBhc3MKKworY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIHBhc3MKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdrb2k4LXQnLAorICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCisgICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCisKKworIyMjIERlY29kaW5nIFRhYmxlCisKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUwNDliJyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5MycgICAjICAweDgxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFhJyAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ5MicgICAjICAweDgzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKKyAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgorICAgICdcdWZmZmUnICAgIyAgMHg4OCAtPiBVTkRFRklORUQKKyAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KKyAgICAnXHUwNGIzJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDRiMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiNycgICAjICAweDhEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGI2JyAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1ZmZmZScgICAjICAweDhGIC0+IFVOREVGSU5FRAorICAgICdcdTA0OWEnICAgIyAgMHg5MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAorICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECisgICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgorICAgICdcdWZmZmUnICAgIyAgMHg5QSAtPiBVTkRFRklORUQKKyAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1ZmZmZScgICAjICAweDlDIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4OUUgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweDlGIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhBMCAtPiBVTkRFRklORUQKKyAgICAnXHUwNGVmJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHUwNGVlJyAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTA0NTEnICAgIyAgMHhBMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdcdTA0ZTMnICAgIyAgMHhBNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdWZmZmUnICAgIyAgMHhBOCAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4QTkgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweEFBIC0+IFVOREVGSU5FRAorICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgorICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHVmZmZlJyAgICMgIDB4QUYgLT4gVU5ERUZJTkVECisgICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgorICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KKyAgICAnXHUwNDAxJyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KKyAgICAnXHVmZmZlJyAgICMgIDB4QjQgLT4gVU5ERUZJTkVECisgICAgJ1x1MDRlMicgICAjICAweEI1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKKyAgICAnXHVmZmZlJyAgICMgIDB4QjggLT4gVU5ERUZJTkVECisgICAgJ1x1MjExNicgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCisgICAgJ1x1ZmZmZScgICAjICAweEJBIC0+IFVOREVGSU5FRAorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHVmZmZlJyAgICMgIDB4QkMgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweEJEIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhCRSAtPiBVTkRFRklORUQKKyAgICAnXHhhOScgICAgICMgIDB4QkYgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUwNDRlJyAgICMgIDB4QzAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCisgICAgJ1x1MDQzMCcgICAjICAweEMxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAjICAweEMyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0NDYnICAgIyAgMHhDMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQzNCcgICAjICAweEM0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICdcdTA0MzUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAnXHUwNDQ0JyAgICMgIDB4QzYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCisgICAgJ1x1MDQzMycgICAjICAweEM3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICAnXHUwNDQ1JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCisgICAgJ1x1MDQzOCcgICAjICAweEM5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgJ1x1MDQzOScgICAjICAweENBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAjICAweENCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgIyAgMHhDQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAnXHUwNDNjJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAjICAweENFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICdcdTA0M2YnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDRmJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCisgICAgJ1x1MDQ0MCcgICAjICAweEQyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICdcdTA0NDEnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgJ1x1MDQ0MycgICAjICAweEQ1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgJ1x1MDQzNicgICAjICAweEQ2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDMyJyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQ0YycgICAjICAweEQ4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDRiJyAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDM3JyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQ0OCcgICAjICAweERCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKKyAgICAnXHUwNDRkJyAgICMgIDB4REMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKKyAgICAnXHUwNDQ5JyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQ0NycgICAjICAweERFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKyAgICAnXHUwNDRhJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmUnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgICdcdTA0MTAnICAgIyAgMHhFMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisgICAgJ1x1MDQxMScgICAjICAweEUyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQyNicgICAjICAweEUzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorICAgICdcdTA0MTQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgICdcdTA0MjQnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorICAgICdcdTA0MTMnICAgIyAgMHhFNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKKyAgICAnXHUwNDI1JyAgICMgIDB4RTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKKyAgICAnXHUwNDE4JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgICdcdTA0MTknICAgIyAgMHhFQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQxYScgICAjICAweEVCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAjICAweEVDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCisgICAgJ1x1MDQxYycgICAjICAweEVEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCisgICAgJ1x1MDQxZCcgICAjICAweEVFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAjICAweEVGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyAgICAnXHUwNDFmJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKKyAgICAnXHUwNDJmJyAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKyAgICAnXHUwNDIwJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKyAgICAnXHUwNDIyJyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKKyAgICAnXHUwNDIzJyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MTYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICAnXHUwNDEyJyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDJjJyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQyYicgICAjICAweEY5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDE3JyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDI4JyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyZCcgICAjICAweEZDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyAgICAnXHUwNDI5JyAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDI3JyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQyYScgICAjICAweEZGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorKQorCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9rejEwNDgucHkgYi9MaWIvZW5jb2RpbmdzL2t6MTA0OC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTJhZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9rejEwNDgucHkKQEAgLTAsMCArMSwzMDcgQEAKKyIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMga3oxMDQ4IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JU0MvS1oxMDQ4LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KKworIiIiIyIKKworaW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgorCisgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCwgZXJyb3JzLCBlbmNvZGluZ190YWJsZSkKKworICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIGVycm9ycywgZGVjb2RpbmdfdGFibGUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzLCBlbmNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgorICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCwgc2VsZi5lcnJvcnMsIGRlY29kaW5nX3RhYmxlKVswXQorCitjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIHBhc3MKKworY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBwYXNzCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0na3oxMDQ4JywKKyAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAorICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCisgICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCisgICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCisgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCisgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCisgICAgKQorCisKKyMjIyBEZWNvZGluZyBUYWJsZQorCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUwNDAyJyAgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQorICAgICdcdTA0MDMnICAgICMgIDB4ODEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCisgICAgJ1x1MjAxYScgICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNDUzJyAgICAjICAweDgzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKKyAgICAnXHUyMDFlJyAgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTIwMjAnICAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCisgICAgJ1x1MjBhYycgICAgIyAgMHg4OCAtPiBFVVJPIFNJR04KKyAgICAnXHUyMDMwJyAgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDQwOScgICAgIyAgMHg4QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKKyAgICAnXHUyMDM5JyAgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQwYScgICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKKyAgICAnXHUwNDlhJyAgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYScgICAgIyAgMHg4RSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCisgICAgJ1x1MDQwZicgICAgIyAgMHg4RiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFCisgICAgJ1x1MDQ1MicgICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCisgICAgJ1x1MjAxOCcgICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHVmZmZlJyAgICAjICAweDk4IC0+IFVOREVGSU5FRAorICAgICdcdTIxMjInICAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDQ1OScgICAgIyAgMHg5QSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTEpFCisgICAgJ1x1MjAzYScgICAgIyAgMHg5QiAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNDVhJyAgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKKyAgICAnXHUwNDliJyAgICAjICAweDlEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmInICAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKyAgICAnXHUwNDVmJyAgICAjICAweDlGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCisgICAgJ1x4YTAnICAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTA0YjAnICAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdcdTA0YjEnICAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNGQ4JyAgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YTQnICAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCisgICAgJ1x1MDRlOCcgICAgIyAgMHhBNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworICAgICdceGE2JyAgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgorICAgICdceGE3JyAgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDQwMScgICAgIyAgMHhBOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworICAgICdceGE5JyAgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUwNDkyJyAgICAjICAweEFBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdceGFiJyAgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x4YWQnICAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgorICAgICdceGFlJyAgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x1MDRhZScgICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x4YjAnICAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x1MDQwNicgICAgIyAgMHhCMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDU2JyAgICAjICAweEIzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNGU5JyAgICAjICAweEI0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworICAgICdceGI1JyAgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1MDQ1MScgICAgIyAgMHhCOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHUyMTE2JyAgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCisgICAgJ1x1MDQ5MycgICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x4YmInICAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNGQ5JyAgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQQorICAgICdcdTA0YTInICAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGEzJyAgICAjICAweEJFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWYnICAgICMgIDB4QkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNDEwJyAgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICAnXHUwNDExJyAgICAjICAweEMxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQxMicgICAgIyAgMHhDMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQorICAgICdcdTA0MTMnICAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQxNCcgICAgIyAgMHhDNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgICMgIDB4QzUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyAgICAnXHUwNDE2JyAgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgICdcdTA0MTcnICAgICMgIDB4QzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDE4JyAgICAjICAweEM4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyAgICAnXHUwNDE5JyAgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDFhJyAgICAjICAweENBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAgIyAgMHhDQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAorICAgICdcdTA0MWMnICAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICAnXHUwNDFkJyAgICAjICAweENEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAgIyAgMHhDRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1x1MDQxZicgICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgICdcdTA0MjAnICAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICAjICAweEQxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCisgICAgJ1x1MDQyMicgICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgICdcdTA0MjMnICAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MjQnICAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKKyAgICAnXHUwNDI1JyAgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQyNicgICAgIyAgMHhENiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICAnXHUwNDI3JyAgICAjICAweEQ3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorICAgICdcdTA0MjgnICAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyOScgICAgIyAgMHhEOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQorICAgICdcdTA0MmEnICAgICMgIDB4REEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCisgICAgJ1x1MDQyYicgICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQyYycgICAgIyAgMHhEQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDJkJyAgICAjICAweEREIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyAgICAnXHUwNDJlJyAgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgJ1x1MDQyZicgICAgIyAgMHhERiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQorICAgICdcdTA0MzAnICAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAnXHUwNDMxJyAgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0MzInICAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQzMycgICAgIyAgMHhFMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgJ1x1MDQzNCcgICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICAjICAweEU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICdcdTA0MzYnICAgICMgIDB4RTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQorICAgICdcdTA0MzcnICAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQzOCcgICAgIyAgMHhFOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgICdcdTA0MzknICAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDNhJyAgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgJ1x1MDQzYycgICAgIyAgMHhFQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAnXHUwNDNkJyAgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgICMgIDB4RUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAnXHUwNDNmJyAgICAjICAweEVGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQorICAgICdcdTA0NDAnICAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgJ1x1MDQ0MScgICAgIyAgMHhGMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICAjICAweEYyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICdcdTA0NDMnICAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAnXHUwNDQ0JyAgICAjICAweEY0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgICdcdTA0NDUnICAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCisgICAgJ1x1MDQ0NicgICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQ0NycgICAgIyAgMHhGNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQ0OCcgICAgIyAgMHhGOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCisgICAgJ1x1MDQ0OScgICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDRhJyAgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDRiJyAgICAjICAweEZCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQ0YycgICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0ZCcgICAgIyAgMHhGRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQorICAgICdcdTA0NGUnICAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCisgICAgJ1x1MDQ0ZicgICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKykKKworIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZSA9IGNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VudW0ucHkgYi9MaWIvZW51bS5weQppbmRleCAzY2QzZGY4Li5jMjhmMzQ1IDEwMDY0NAotLS0gYS9MaWIvZW51bS5weQorKysgYi9MaWIvZW51bS5weQpAQCAtMTA2LDEyICsxMDYsMjAgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgZW51bSBtZW1iZXIgbmFtZTogezB9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgJywnLmpvaW4oaW52YWxpZF9uYW1lcykpKQogCisgICAgICAgICMgY3JlYXRlIGEgZGVmYXVsdCBkb2NzdHJpbmcgaWYgb25lIGhhcyBub3QgYmVlbiBwcm92aWRlZAorICAgICAgICBpZiAnX19kb2NfXycgbm90IGluIGNsYXNzZGljdDoKKyAgICAgICAgICAgIGNsYXNzZGljdFsnX19kb2NfXyddID0gJ0FuIGVudW1lcmF0aW9uLicKKwogICAgICAgICAjIGNyZWF0ZSBvdXIgbmV3IEVudW0gdHlwZQogICAgICAgICBlbnVtX2NsYXNzID0gc3VwZXIoKS5fX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCkKICAgICAgICAgZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXyA9IFtdICAgICAgICAgICAgICAgIyBuYW1lcyBpbiBkZWZpbml0aW9uIG9yZGVyCiAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9tYXBfID0gT3JkZXJlZERpY3QoKSAgICAgICMgbmFtZS0+dmFsdWUgbWFwCiAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl90eXBlXyA9IG1lbWJlcl90eXBlCiAKKyAgICAgICAgIyBzYXZlIGF0dHJpYnV0ZXMgZnJvbSBzdXBlciBjbGFzc2VzIHNvIHdlIGtub3cgaWYgd2UgY2FuIHRha2UKKyAgICAgICAgIyB0aGUgc2hvcnRjdXQgb2Ygc3RvcmluZyBtZW1iZXJzIGluIHRoZSBjbGFzcyBkaWN0CisgICAgICAgIGJhc2VfYXR0cmlidXRlcyA9IHthIGZvciBiIGluIGJhc2VzIGZvciBhIGluIGIuX19kaWN0X199CisKICAgICAgICAgIyBSZXZlcnNlIHZhbHVlLT5uYW1lIG1hcCBmb3IgaGFzaGFibGUgdmFsdWVzLgogICAgICAgICBlbnVtX2NsYXNzLl92YWx1ZTJtZW1iZXJfbWFwXyA9IHt9CiAKQEAgLTE2NSw2ICsxNzMsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBbGlhc2VzIGRvbid0IGFwcGVhciBpbiBtZW1iZXIgbmFtZXMgKG9ubHkgaW4gX19tZW1iZXJzX18pLgogICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18uYXBwZW5kKG1lbWJlcl9uYW1lKQorICAgICAgICAgICAgIyBwZXJmb3JtYW5jZSBib29zdCBmb3IgYW55IG1lbWJlciB0aGF0IHdvdWxkIG5vdCBzaGFkb3cKKyAgICAgICAgICAgICMgYSBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKKyAgICAgICAgICAgIGlmIG1lbWJlcl9uYW1lIG5vdCBpbiBiYXNlX2F0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgc2V0YXR0cihlbnVtX2NsYXNzLCBtZW1iZXJfbmFtZSwgZW51bV9tZW1iZXIpCisgICAgICAgICAgICAjIG5vdyBhZGQgdG8gX21lbWJlcl9tYXBfCiAgICAgICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwX1ttZW1iZXJfbmFtZV0gPSBlbnVtX21lbWJlcgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgVGhpcyBtYXkgZmFpbCBpZiB2YWx1ZSBpcyBub3QgaGFzaGFibGUuIFdlIGNhbid0IGFkZCB0aGUgdmFsdWUKQEAgLTE5Myw3ICsyMDYsNyBAQAogICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCiAgICAgICAgIHJldHVybiBlbnVtX2NsYXNzCiAKLSAgICBkZWYgX19jYWxsX18oY2xzLCB2YWx1ZSwgbmFtZXM9Tm9uZSwgKiwgbW9kdWxlPU5vbmUsIHF1YWxuYW1lPU5vbmUsIHR5cGU9Tm9uZSk6CisgICAgZGVmIF9fY2FsbF9fKGNscywgdmFsdWUsIG5hbWVzPU5vbmUsICosIG1vZHVsZT1Ob25lLCBxdWFsbmFtZT1Ob25lLCB0eXBlPU5vbmUsIHN0YXJ0PTEpOgogICAgICAgICAiIiJFaXRoZXIgcmV0dXJucyBhbiBleGlzdGluZyBtZW1iZXIsIG9yIGNyZWF0ZXMgYSBuZXcgZW51bSBjbGFzcy4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJvdGggd2hlbiBhbiBlbnVtIGNsYXNzIGlzIGdpdmVuIGEgdmFsdWUgdG8gbWF0Y2gKQEAgLTIwNSw3ICsyMTgsNyBAQAogICAgICAgICBgdmFsdWVgIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIG5ldyBjbGFzcy4KIAogICAgICAgICBgbmFtZXNgIHNob3VsZCBiZSBlaXRoZXIgYSBzdHJpbmcgb2Ygd2hpdGUtc3BhY2UvY29tbWEgZGVsaW1pdGVkIG5hbWVzCi0gICAgICAgICh2YWx1ZXMgd2lsbCBzdGFydCBhdCAxKSwgb3IgYW4gaXRlcmF0b3IvbWFwcGluZyBvZiBuYW1lLCB2YWx1ZSBwYWlycy4KKyAgICAgICAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IGBzdGFydGApLCBvciBhbiBpdGVyYXRvci9tYXBwaW5nIG9mIG5hbWUsIHZhbHVlIHBhaXJzLgogCiAgICAgICAgIGBtb2R1bGVgIHNob3VsZCBiZSBzZXQgdG8gdGhlIG1vZHVsZSB0aGlzIGNsYXNzIGlzIGJlaW5nIGNyZWF0ZWQgaW47CiAgICAgICAgIGlmIGl0IGlzIG5vdCBzZXQsIGFuIGF0dGVtcHQgdG8gZmluZCB0aGF0IG1vZHVsZSB3aWxsIGJlIG1hZGUsIGJ1dCBpZgpAQCAtMjIxLDcgKzIzNCw3IEBACiAgICAgICAgIGlmIG5hbWVzIGlzIE5vbmU6ICAjIHNpbXBsZSB2YWx1ZSBsb29rdXAKICAgICAgICAgICAgIHJldHVybiBjbHMuX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgICAjIG90aGVyd2lzZSwgZnVuY3Rpb25hbCBBUEk6IHdlJ3JlIGNyZWF0aW5nIGEgbmV3IEVudW0gdHlwZQotICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfKHZhbHVlLCBuYW1lcywgbW9kdWxlPW1vZHVsZSwgcXVhbG5hbWU9cXVhbG5hbWUsIHR5cGU9dHlwZSkKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlXyh2YWx1ZSwgbmFtZXMsIG1vZHVsZT1tb2R1bGUsIHF1YWxuYW1lPXF1YWxuYW1lLCB0eXBlPXR5cGUsIHN0YXJ0PXN0YXJ0KQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhjbHMsIG1lbWJlcik6CiAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG1lbWJlciwgY2xzKSBhbmQgbWVtYmVyLl9uYW1lXyBpbiBjbHMuX21lbWJlcl9tYXBfCkBAIC0yOTIsMTYgKzMwNSwxNiBAQAogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ0Nhbm5vdCByZWFzc2lnbiBtZW1iZXJzLicpCiAgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCiAKLSAgICBkZWYgX2NyZWF0ZV8oY2xzLCBjbGFzc19uYW1lLCBuYW1lcz1Ob25lLCAqLCBtb2R1bGU9Tm9uZSwgcXVhbG5hbWU9Tm9uZSwgdHlwZT1Ob25lKToKKyAgICBkZWYgX2NyZWF0ZV8oY2xzLCBjbGFzc19uYW1lLCBuYW1lcz1Ob25lLCAqLCBtb2R1bGU9Tm9uZSwgcXVhbG5hbWU9Tm9uZSwgdHlwZT1Ob25lLCBzdGFydD0xKToKICAgICAgICAgIiIiQ29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBFbnVtIGNsYXNzLgogCiAgICAgICAgIGBuYW1lc2AgY2FuIGJlOgogCiAgICAgICAgICogQSBzdHJpbmcgY29udGFpbmluZyBtZW1iZXIgbmFtZXMsIHNlcGFyYXRlZCBlaXRoZXIgd2l0aCBzcGFjZXMgb3IKLSAgICAgICAgICBjb21tYXMuICBWYWx1ZXMgYXJlIGF1dG8tbnVtYmVyZWQgZnJvbSAxLgotICAgICAgICAqIEFuIGl0ZXJhYmxlIG9mIG1lbWJlciBuYW1lcy4gIFZhbHVlcyBhcmUgYXV0by1udW1iZXJlZCBmcm9tIDEuCisgICAgICAgICAgY29tbWFzLiAgVmFsdWVzIGFyZSBpbmNyZW1lbnRlZCBieSAxIGZyb20gYHN0YXJ0YC4KKyAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiBtZW1iZXIgbmFtZXMuICBWYWx1ZXMgYXJlIGluY3JlbWVudGVkIGJ5IDEgZnJvbSBgc3RhcnRgLgogICAgICAgICAqIEFuIGl0ZXJhYmxlIG9mIChtZW1iZXIgbmFtZSwgdmFsdWUpIHBhaXJzLgotICAgICAgICAqIEEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZSAtPiB2YWx1ZS4KKyAgICAgICAgKiBBIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUgLT4gdmFsdWUgcGFpcnMuCiAKICAgICAgICAgIiIiCiAgICAgICAgIG1ldGFjbHMgPSBjbHMuX19jbGFzc19fCkBAIC0zMTIsNyArMzI1LDcgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgMSldCisgICAgICAgICAgICBuYW1lcyA9IFsoZSwgaSkgZm9yIChpLCBlKSBpbiBlbnVtZXJhdGUobmFtZXMsIHN0YXJ0KV0KIAogICAgICAgICAjIEhlcmUsIG5hbWVzIGlzIGVpdGhlciBhbiBpdGVyYWJsZSBvZiAobmFtZSwgdmFsdWUpIG9yIGEgbWFwcGluZy4KICAgICAgICAgZm9yIGl0ZW0gaW4gbmFtZXM6CkBAIC00NjgsMTAgKzQ4MSw5IEBACiAgICAgICAgICAgICAgICAgbQogICAgICAgICAgICAgICAgIGZvciBjbHMgaW4gc2VsZi5fX2NsYXNzX18ubXJvKCkKICAgICAgICAgICAgICAgICBmb3IgbSBpbiBjbHMuX19kaWN0X18KLSAgICAgICAgICAgICAgICBpZiBtWzBdICE9ICdfJworICAgICAgICAgICAgICAgIGlmIG1bMF0gIT0gJ18nIGFuZCBtIG5vdCBpbiBzZWxmLl9tZW1iZXJfbWFwXwogICAgICAgICAgICAgICAgIF0KLSAgICAgICAgcmV0dXJuIChbJ19fY2xhc3NfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLCAnbmFtZScsICd2YWx1ZSddICsKLSAgICAgICAgICAgICAgICBhZGRlZF9iZWhhdmlvcikKKyAgICAgICAgcmV0dXJuIChbJ19fY2xhc3NfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nXSArIGFkZGVkX2JlaGF2aW9yKQogCiAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpOgogICAgICAgICAjIG1peGVkLWluIEVudW1zIHNob3VsZCB1c2UgdGhlIG1peGVkLWluIHR5cGUncyBfX2Zvcm1hdF9fLCBvdGhlcndpc2UKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IDhhZjRhNTcuLmFmODEwZDEgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtMjc3LDI0ICsyNzcsMjQgQEAKIAogICAgIGRlZiBuZXh0ZmlsZShzZWxmKToKICAgICAgICAgc2F2ZXN0ZG91dCA9IHNlbGYuX3NhdmVzdGRvdXQKLSAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IDAKKyAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IE5vbmUKICAgICAgICAgaWYgc2F2ZXN0ZG91dDoKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlc3Rkb3V0CiAKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fb3V0cHV0Ci0gICAgICAgIHNlbGYuX291dHB1dCA9IDAKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gTm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBvdXRwdXQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0LmNsb3NlKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCi0gICAgICAgICAgICBzZWxmLl9maWxlID0gMAorICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBmaWxlIGFuZCBub3Qgc2VsZi5faXNzdGRpbjoKICAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGJhY2t1cGZpbGVuYW1lID0gc2VsZi5fYmFja3VwZmlsZW5hbWUKLSAgICAgICAgICAgICAgICBzZWxmLl9iYWNrdXBmaWxlbmFtZSA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9iYWNrdXBmaWxlbmFtZSA9IE5vbmUKICAgICAgICAgICAgICAgICBpZiBiYWNrdXBmaWxlbmFtZSBhbmQgbm90IHNlbGYuX2JhY2t1cDoKICAgICAgICAgICAgICAgICAgICAgdHJ5OiBvcy51bmxpbmsoYmFja3VwZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvZm9ybWF0dGVyLnB5IGIvTGliL2Zvcm1hdHRlci5weQppbmRleCA5MzM4MjYxLi41ZThlMmZmIDEwMDY0NAotLS0gYS9MaWIvZm9ybWF0dGVyLnB5CisrKyBiL0xpYi9mb3JtYXR0ZXIucHkKQEAgLTIxLDcgKzIxLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogd2FybmluZ3Mud2FybigndGhlIGZvcm1hdHRlciBtb2R1bGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcKLSAgICAgICAgICAgICAgJ1B5dGhvbiAzLjYnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAnUHl0aG9uIDMuNicsIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAKIEFTX0lTID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2ZyYWN0aW9ucy5weSBiL0xpYi9mcmFjdGlvbnMucHkKaW5kZXggNzllODNmZi4uNjBiMDcyOCAxMDA2NDQKLS0tIGEvTGliL2ZyYWN0aW9ucy5weQorKysgYi9MaWIvZnJhY3Rpb25zLnB5CkBAIC0yMCw2ICsyMCwxNyBAQAogICAgIFVubGVzcyBiPT0wLCB0aGUgcmVzdWx0IHdpbGwgaGF2ZSB0aGUgc2FtZSBzaWduIGFzIGIgKHNvIHRoYXQgd2hlbgogICAgIGIgaXMgZGl2aWRlZCBieSBpdCwgdGhlIHJlc3VsdCBjb21lcyBvdXQgcG9zaXRpdmUpLgogICAgICIiIgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oJ2ZyYWN0aW9ucy5nY2QoKSBpcyBkZXByZWNhdGVkLiBVc2UgbWF0aC5nY2QoKSBpbnN0ZWFkLicsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgaWYgdHlwZShhKSBpcyBpbnQgaXMgdHlwZShiKToKKyAgICAgICAgaWYgKGIgb3IgYSkgPCAwOgorICAgICAgICAgICAgcmV0dXJuIC1tYXRoLmdjZChhLCBiKQorICAgICAgICByZXR1cm4gbWF0aC5nY2QoYSwgYikKKyAgICByZXR1cm4gX2djZChhLCBiKQorCitkZWYgX2djZChhLCBiKToKKyAgICAjIFN1cHBvcnRzIG5vbi1pbnRlZ2VycyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KICAgICB3aGlsZSBiOgogICAgICAgICBhLCBiID0gYiwgYSViCiAgICAgcmV0dXJuIGEKQEAgLTcwLDcgKzgxLDcgQEAKICAgICBfX3Nsb3RzX18gPSAoJ19udW1lcmF0b3InLCAnX2Rlbm9taW5hdG9yJykKIAogICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KLSAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lLCBfbm9ybWFsaXplPVRydWUpOgogICAgICAgICAiIiJDb25zdHJ1Y3RzIGEgUmF0aW9uYWwuCiAKICAgICAgICAgVGFrZXMgYSBzdHJpbmcgbGlrZSAnMy8yJyBvciAnMS41JywgYW5vdGhlciBSYXRpb25hbCBpbnN0YW5jZSwgYQpAQCAtMTA0LDcgKzExNSwxMiBAQAogICAgICAgICBzZWxmID0gc3VwZXIoRnJhY3Rpb24sIGNscykuX19uZXdfXyhjbHMpCiAKICAgICAgICAgaWYgZGVub21pbmF0b3IgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBudW1iZXJzLlJhdGlvbmFsKToKKyAgICAgICAgICAgIGlmIHR5cGUobnVtZXJhdG9yKSBpcyBpbnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gbnVtZXJhdG9yCisgICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgbnVtYmVycy5SYXRpb25hbCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gbnVtZXJhdG9yLm51bWVyYXRvcgogICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gbnVtZXJhdG9yLmRlbm9taW5hdG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTE1Myw2ICsxNjksOSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgUmF0aW9uYWwgaW5zdGFuY2UiKQogCisgICAgICAgIGVsaWYgdHlwZShudW1lcmF0b3IpIGlzIGludCBpcyB0eXBlKGRlbm9taW5hdG9yKToKKyAgICAgICAgICAgIHBhc3MgIyAqdmVyeSogbm9ybWFsIGNhc2UKKwogICAgICAgICBlbGlmIChpc2luc3RhbmNlKG51bWVyYXRvciwgbnVtYmVycy5SYXRpb25hbCkgYW5kCiAgICAgICAgICAgICBpc2luc3RhbmNlKGRlbm9taW5hdG9yLCBudW1iZXJzLlJhdGlvbmFsKSk6CiAgICAgICAgICAgICBudW1lcmF0b3IsIGRlbm9taW5hdG9yID0gKApAQCAtMTY1LDkgKzE4NCwxOCBAQAogCiAgICAgICAgIGlmIGRlbm9taW5hdG9yID09IDA6CiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcignRnJhY3Rpb24oJXMsIDApJyAlIG51bWVyYXRvcikKLSAgICAgICAgZyA9IGdjZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKQotICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IgLy8gZwotICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IGRlbm9taW5hdG9yIC8vIGcKKyAgICAgICAgaWYgX25vcm1hbGl6ZToKKyAgICAgICAgICAgIGlmIHR5cGUobnVtZXJhdG9yKSBpcyBpbnQgaXMgdHlwZShkZW5vbWluYXRvcik6CisgICAgICAgICAgICAgICAgIyAqdmVyeSogbm9ybWFsIGNhc2UKKyAgICAgICAgICAgICAgICBnID0gbWF0aC5nY2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikKKyAgICAgICAgICAgICAgICBpZiBkZW5vbWluYXRvciA8IDA6CisgICAgICAgICAgICAgICAgICAgIGcgPSAtZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnID0gX2djZChudW1lcmF0b3IsIGRlbm9taW5hdG9yKQorICAgICAgICAgICAgbnVtZXJhdG9yIC8vPSBnCisgICAgICAgICAgICBkZW5vbWluYXRvciAvLz0gZworICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IKKyAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBkZW5vbWluYXRvcgogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0yNzcsNyArMzA1LDggQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIicmVwcihzZWxmKSIiIgotICAgICAgICByZXR1cm4gKCdGcmFjdGlvbiglcywgJXMpJyAlIChzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yKSkKKyAgICAgICAgcmV0dXJuICclcyglcywgJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICIiInN0cihzZWxmKSIiIgpAQCAtMzk1LDE3ICs0MjQsMTcgQEAKIAogICAgIGRlZiBfYWRkKGEsIGIpOgogICAgICAgICAiIiJhICsgYiIiIgotICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5udW1lcmF0b3IgKiBiLmRlbm9taW5hdG9yICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGIubnVtZXJhdG9yICogYS5kZW5vbWluYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGEuZGVub21pbmF0b3IgKiBiLmRlbm9taW5hdG9yKQorICAgICAgICBkYSwgZGIgPSBhLmRlbm9taW5hdG9yLCBiLmRlbm9taW5hdG9yCisgICAgICAgIHJldHVybiBGcmFjdGlvbihhLm51bWVyYXRvciAqIGRiICsgYi5udW1lcmF0b3IgKiBkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhICogZGIpCiAKICAgICBfX2FkZF9fLCBfX3JhZGRfXyA9IF9vcGVyYXRvcl9mYWxsYmFja3MoX2FkZCwgb3BlcmF0b3IuYWRkKQogCiAgICAgZGVmIF9zdWIoYSwgYik6CiAgICAgICAgICIiImEgLSBiIiIiCi0gICAgICAgIHJldHVybiBGcmFjdGlvbihhLm51bWVyYXRvciAqIGIuZGVub21pbmF0b3IgLQotICAgICAgICAgICAgICAgICAgICAgICAgYi5udW1lcmF0b3IgKiBhLmRlbm9taW5hdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgYS5kZW5vbWluYXRvciAqIGIuZGVub21pbmF0b3IpCisgICAgICAgIGRhLCBkYiA9IGEuZGVub21pbmF0b3IsIGIuZGVub21pbmF0b3IKKyAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEubnVtZXJhdG9yICogZGIgLSBiLm51bWVyYXRvciAqIGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgZGEgKiBkYikKIAogICAgIF9fc3ViX18sIF9fcnN1Yl9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfc3ViLCBvcGVyYXRvci5zdWIpCiAKQEAgLTQ1MywxMCArNDgyLDEyIEBACiAgICAgICAgICAgICAgICAgcG93ZXIgPSBiLm51bWVyYXRvcgogICAgICAgICAgICAgICAgIGlmIHBvd2VyID49IDA6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9udW1lcmF0b3IgKiogcG93ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl9kZW5vbWluYXRvciAqKiBwb3dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX2Rlbm9taW5hdG9yICoqIHBvd2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25vcm1hbGl6ZT1GYWxzZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5fZGVub21pbmF0b3IgKiogLXBvd2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5fbnVtZXJhdG9yICoqIC1wb3dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX251bWVyYXRvciAqKiAtcG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbm9ybWFsaXplPUZhbHNlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIEEgZnJhY3Rpb25hbCBwb3dlciB3aWxsIGdlbmVyYWxseSBwcm9kdWNlIGFuCiAgICAgICAgICAgICAgICAgIyBpcnJhdGlvbmFsIG51bWJlci4KQEAgLTQ4MCwxNSArNTExLDE1IEBACiAKICAgICBkZWYgX19wb3NfXyhhKToKICAgICAgICAgIiIiK2E6IENvZXJjZXMgYSBzdWJjbGFzcyBpbnN0YW5jZSB0byBGcmFjdGlvbiIiIgotICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5fbnVtZXJhdG9yLCBhLl9kZW5vbWluYXRvcikKKyAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEuX251bWVyYXRvciwgYS5fZGVub21pbmF0b3IsIF9ub3JtYWxpemU9RmFsc2UpCiAKICAgICBkZWYgX19uZWdfXyhhKToKICAgICAgICAgIiIiLWEiIiIKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uKC1hLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yKQorICAgICAgICByZXR1cm4gRnJhY3Rpb24oLWEuX251bWVyYXRvciwgYS5fZGVub21pbmF0b3IsIF9ub3JtYWxpemU9RmFsc2UpCiAKICAgICBkZWYgX19hYnNfXyhhKToKICAgICAgICAgIiIiYWJzKGEpIiIiCi0gICAgICAgIHJldHVybiBGcmFjdGlvbihhYnMoYS5fbnVtZXJhdG9yKSwgYS5fZGVub21pbmF0b3IpCisgICAgICAgIHJldHVybiBGcmFjdGlvbihhYnMoYS5fbnVtZXJhdG9yKSwgYS5fZGVub21pbmF0b3IsIF9ub3JtYWxpemU9RmFsc2UpCiAKICAgICBkZWYgX190cnVuY19fKGEpOgogICAgICAgICAiIiJ0cnVuYyhhKSIiIgpAQCAtNTU1LDYgKzU4Niw4IEBACiAKICAgICBkZWYgX19lcV9fKGEsIGIpOgogICAgICAgICAiIiJhID09IGIiIiIKKyAgICAgICAgaWYgdHlwZShiKSBpcyBpbnQ6CisgICAgICAgICAgICByZXR1cm4gYS5fbnVtZXJhdG9yID09IGIgYW5kIGEuX2Rlbm9taW5hdG9yID09IDEKICAgICAgICAgaWYgaXNpbnN0YW5jZShiLCBudW1iZXJzLlJhdGlvbmFsKToKICAgICAgICAgICAgIHJldHVybiAoYS5fbnVtZXJhdG9yID09IGIubnVtZXJhdG9yIGFuZAogICAgICAgICAgICAgICAgICAgICBhLl9kZW5vbWluYXRvciA9PSBiLmRlbm9taW5hdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggNGQ5MmI4Ni4uNTRiMGUyYyAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC00Miw3ICs0Miw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAogCi1fX2FsbF9fID0gWyJGVFAiLCAiTmV0cmMiXQorX19hbGxfXyA9IFsiRlRQIl0KIAogIyBNYWdpYyBudW1iZXIgZnJvbSA8c29ja2V0Lmg+CiBNU0dfT09CID0gMHgxICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIGRhdGEgb3V0IG9mIGJhbmQKQEAgLTkyMywxMTUgKzkyMyw2IEBACiAgICAgdGFyZ2V0LnZvaWRyZXNwKCkKIAogCi1jbGFzcyBOZXRyYzoKLSAgICAiIiJDbGFzcyB0byBwYXJzZSAmIHByb3ZpZGUgYWNjZXNzIHRvICduZXRyYycgZm9ybWF0IGZpbGVzLgotCi0gICAgU2VlIHRoZSBuZXRyYyg0KSBtYW4gcGFnZSBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGZpbGUgZm9ybWF0LgotCi0gICAgV0FSTklORzogVGhpcyBjbGFzcyBpcyBvYnNvbGV0ZSAtLSB1c2UgbW9kdWxlIG5ldHJjIGluc3RlYWQuCi0KLSAgICAiIiIKLSAgICBfX2RlZnVzZXIgPSBOb25lCi0gICAgX19kZWZwYXNzd2QgPSBOb25lCi0gICAgX19kZWZhY2N0ID0gTm9uZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUpOgotICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgbmV0cmMgbW9kdWxlIGluc3RlYWQiLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmICJIT01FIiBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIkhPTUUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLm5ldHJjIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigic3BlY2lmeSBmaWxlIHRvIGxvYWQgb3Igc2V0ICRIT01FIikKLSAgICAgICAgc2VsZi5fX2hvc3RzID0ge30KLSAgICAgICAgc2VsZi5fX21hY3JvcyA9IHt9Ci0gICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQotICAgICAgICBpbl9tYWNybyA9IDAKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgaW5fbWFjcm8gYW5kIGxpbmUuc3RyaXAoKToKLSAgICAgICAgICAgICAgICBtYWNyb19saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBpbl9tYWNybzoKLSAgICAgICAgICAgICAgICBzZWxmLl9fbWFjcm9zW21hY3JvX25hbWVdID0gdHVwbGUobWFjcm9fbGluZXMpCi0gICAgICAgICAgICAgICAgaW5fbWFjcm8gPSAwCi0gICAgICAgICAgICB3b3JkcyA9IGxpbmUuc3BsaXQoKQotICAgICAgICAgICAgaG9zdCA9IHVzZXIgPSBwYXNzd2QgPSBhY2N0ID0gTm9uZQotICAgICAgICAgICAgZGVmYXVsdCA9IDAKLSAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICB3MSA9IHdvcmRzW2ldCi0gICAgICAgICAgICAgICAgaWYgaSsxIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICAgICAgdzIgPSB3b3Jkc1tpICsgMV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB3MiA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiB3MSA9PSAnZGVmYXVsdCc6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnbWFjaGluZScgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBob3N0ID0gdzIubG93ZXIoKQotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdsb2dpbicgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICB1c2VyID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAncGFzc3dvcmQnIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dkID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnYWNjb3VudCcgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBhY2N0ID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnbWFjZGVmJyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY3JvX25hbWUgPSB3MgotICAgICAgICAgICAgICAgICAgICBtYWNyb19saW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGluX21hY3JvID0gMQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmdXNlciA9IHVzZXIgb3Igc2VsZi5fX2RlZnVzZXIKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmcGFzc3dkID0gcGFzc3dkIG9yIHNlbGYuX19kZWZwYXNzd2QKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmYWNjdCA9IGFjY3Qgb3Igc2VsZi5fX2RlZmFjY3QKLSAgICAgICAgICAgIGlmIGhvc3Q6Ci0gICAgICAgICAgICAgICAgaWYgaG9zdCBpbiBzZWxmLl9faG9zdHM6Ci0gICAgICAgICAgICAgICAgICAgIG91c2VyLCBvcGFzc3dkLCBvYWNjdCA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ob3N0c1tob3N0XQotICAgICAgICAgICAgICAgICAgICB1c2VyID0gdXNlciBvciBvdXNlcgotICAgICAgICAgICAgICAgICAgICBwYXNzd2QgPSBwYXNzd2Qgb3Igb3Bhc3N3ZAotICAgICAgICAgICAgICAgICAgICBhY2N0ID0gYWNjdCBvciBvYWNjdAotICAgICAgICAgICAgICAgIHNlbGYuX19ob3N0c1tob3N0XSA9IHVzZXIsIHBhc3N3ZCwgYWNjdAotICAgICAgICBmcC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0X2hvc3RzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGhvc3RzIG1lbnRpb25lZCBpbiB0aGUgLm5ldHJjIGZpbGUuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9faG9zdHMua2V5cygpCi0KLSAgICBkZWYgZ2V0X2FjY291bnQoc2VsZiwgaG9zdCk6Ci0gICAgICAgICIiIlJldHVybnMgbG9naW4gaW5mb3JtYXRpb24gZm9yIHRoZSBuYW1lZCBob3N0LgotCi0gICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSB0cmlwbGUgY29udGFpbmluZyB1c2VyaWQsCi0gICAgICAgIHBhc3N3b3JkLCBhbmQgdGhlIGFjY291bnRpbmcgZmllbGQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGhvc3QgPSBob3N0Lmxvd2VyKCkKLSAgICAgICAgdXNlciA9IHBhc3N3ZCA9IGFjY3QgPSBOb25lCi0gICAgICAgIGlmIGhvc3QgaW4gc2VsZi5fX2hvc3RzOgotICAgICAgICAgICAgdXNlciwgcGFzc3dkLCBhY2N0ID0gc2VsZi5fX2hvc3RzW2hvc3RdCi0gICAgICAgIHVzZXIgPSB1c2VyIG9yIHNlbGYuX19kZWZ1c2VyCi0gICAgICAgIHBhc3N3ZCA9IHBhc3N3ZCBvciBzZWxmLl9fZGVmcGFzc3dkCi0gICAgICAgIGFjY3QgPSBhY2N0IG9yIHNlbGYuX19kZWZhY2N0Ci0gICAgICAgIHJldHVybiB1c2VyLCBwYXNzd2QsIGFjY3QKLQotICAgIGRlZiBnZXRfbWFjcm9zKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBkZWZpbmVkIG1hY3JvIG5hbWVzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX21hY3Jvcy5rZXlzKCkKLQotICAgIGRlZiBnZXRfbWFjcm8oc2VsZiwgbWFjcm8pOgotICAgICAgICAiIiJSZXR1cm4gYSBzZXF1ZW5jZSBvZiBsaW5lcyB3aGljaCBkZWZpbmUgYSBuYW1lZCBtYWNyby4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19tYWNyb3NbbWFjcm9dCi0KLQotCiBkZWYgdGVzdCgpOgogICAgICcnJ1Rlc3QgcHJvZ3JhbS4KICAgICBVc2FnZTogZnRwIFstZF0gWy1yW2ZpbGVdXSBob3N0IFstbFtkaXJdXSBbLWRbZGlyXV0gWy1wXSBbZmlsZV0gLi4uCkBAIC0xMDQ1LDYgKzkzNiw4IEBACiAgICAgICAgIHByaW50KHRlc3QuX19kb2NfXykKICAgICAgICAgc3lzLmV4aXQoMCkKIAorICAgIGltcG9ydCBuZXRyYworCiAgICAgZGVidWdnaW5nID0gMAogICAgIHJjZmlsZSA9IE5vbmUKICAgICB3aGlsZSBzeXMuYXJndlsxXSA9PSAnLWQnOgpAQCAtMTA1OSwxNCArOTUyLDE0IEBACiAgICAgZnRwLnNldF9kZWJ1Z2xldmVsKGRlYnVnZ2luZykKICAgICB1c2VyaWQgPSBwYXNzd2QgPSBhY2N0ID0gJycKICAgICB0cnk6Ci0gICAgICAgIG5ldHJjID0gTmV0cmMocmNmaWxlKQorICAgICAgICBuZXRyY29iaiA9IG5ldHJjLm5ldHJjKHJjZmlsZSkKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgaWYgcmNmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ291bGQgbm90IG9wZW4gYWNjb3VudCBmaWxlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tIHVzaW5nIGFub255bW91cyBsb2dpbi4iKQogICAgIGVsc2U6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHVzZXJpZCwgcGFzc3dkLCBhY2N0ID0gbmV0cmMuZ2V0X2FjY291bnQoaG9zdCkKKyAgICAgICAgICAgIHVzZXJpZCwgYWNjdCwgcGFzc3dkID0gbmV0cmNvYmouYXV0aGVudGljYXRvcnMoaG9zdCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgIyBubyBhY2NvdW50IGZvciBob3N0CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggM2U5M2EzZC4uMDlkZjA2OCAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC0yMyw3ICsyMyw3IEBACiBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtLZXlEaWN0aW9uYXJ5CiB0cnk6CiAgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBSTG9jawotZXhjZXB0OgorZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNsYXNzIFJMb2NrOgogICAgICAgICAnRHVtbXkgcmVlbnRyYW50IGxvY2sgZm9yIGJ1aWxkcyB3aXRob3V0IHRocmVhZHMnCiAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6IHBhc3MKQEAgLTk0LDEwOCArOTQsMTA5IEBACiAjIGluZmluaXRlIHJlY3Vyc2lvbiB0aGF0IGNvdWxkIG9jY3VyIHdoZW4gdGhlIG9wZXJhdG9yIGRpc3BhdGNoIGxvZ2ljCiAjIGRldGVjdHMgYSBOb3RJbXBsZW1lbnRlZCByZXN1bHQgYW5kIHRoZW4gY2FsbHMgYSByZWZsZWN0ZWQgbWV0aG9kLgogCi1kZWYgX2d0X2Zyb21fbHQoc2VsZiwgb3RoZXIpOgorZGVmIF9ndF9mcm9tX2x0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8IGIpIGFuZCAoYSAhPSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2x0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfbGVfZnJvbV9sdChzZWxmLCBvdGhlcik6CitkZWYgX2xlX2Zyb21fbHQoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPD0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhIDwgYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sdF9fKG90aGVyKQogICAgIHJldHVybiBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgogCi1kZWYgX2dlX2Zyb21fbHQoc2VsZiwgb3RoZXIpOgorZGVmIF9nZV9mcm9tX2x0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPCBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2x0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKLWRlZiBfZ2VfZnJvbV9sZShzZWxmLCBvdGhlcik6CitkZWYgX2dlX2Zyb21fbGUoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPj0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8PSBiKSBvciAoYSA9PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2xlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9sdF9mcm9tX2xlKHNlbGYsIG90aGVyKToKK2RlZiBfbHRfZnJvbV9sZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA8PSBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfZ3RfZnJvbV9sZShzZWxmLCBvdGhlcik6CitkZWYgX2d0X2Zyb21fbGUoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPiBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhIDw9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbGVfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKIAotZGVmIF9sdF9mcm9tX2d0KHNlbGYsIG90aGVyKToKK2RlZiBfbHRfZnJvbV9ndChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPiBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19ndF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2dlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIpOgorZGVmIF9nZV9mcm9tX2d0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA+IGIpIG9yIChhID09IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ3RfXyhvdGhlcikKICAgICByZXR1cm4gb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9sZV9mcm9tX2d0KHNlbGYsIG90aGVyKToKK2RlZiBfbGVfZnJvbV9ndChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID4gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19ndF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAogCi1kZWYgX2xlX2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgorZGVmIF9sZV9mcm9tX2dlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDw9IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPj0gYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19nZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCiAKLWRlZiBfZ3RfZnJvbV9nZShzZWxmLCBvdGhlcik6CitkZWYgX2d0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPiBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPj0gYikgYW5kIChhICE9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ2VfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2x0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgorZGVmIF9sdF9mcm9tX2dlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDwgYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2dlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKK19jb252ZXJ0ID0geworICAgICdfX2x0X18nOiBbKCdfX2d0X18nLCBfZ3RfZnJvbV9sdCksCisgICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2x0KSwKKyAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fbHQpXSwKKyAgICAnX19sZV9fJzogWygnX19nZV9fJywgX2dlX2Zyb21fbGUpLAorICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9sZSksCisgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2xlKV0sCisgICAgJ19fZ3RfXyc6IFsoJ19fbHRfXycsIF9sdF9mcm9tX2d0KSwKKyAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fZ3QpLAorICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9ndCldLAorICAgICdfX2dlX18nOiBbKCdfX2xlX18nLCBfbGVfZnJvbV9nZSksCisgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2dlKSwKKyAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fZ2UpXQorfQorCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhvZHMiIiIKLSAgICBjb252ZXJ0ID0gewotICAgICAgICAnX19sdF9fJzogWygnX19ndF9fJywgX2d0X2Zyb21fbHQpLAotICAgICAgICAgICAgICAgICAgICgnX19sZV9fJywgX2xlX2Zyb21fbHQpLAotICAgICAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fbHQpXSwKLSAgICAgICAgJ19fbGVfXyc6IFsoJ19fZ2VfXycsIF9nZV9mcm9tX2xlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fbHRfXycsIF9sdF9mcm9tX2xlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2xlKV0sCi0gICAgICAgICdfX2d0X18nOiBbKCdfX2x0X18nLCBfbHRfZnJvbV9ndCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9ndCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9ndCldLAotICAgICAgICAnX19nZV9fJzogWygnX19sZV9fJywgX2xlX2Zyb21fZ2UpLAotICAgICAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fZ2UpLAotICAgICAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fZ2UpXQotICAgIH0KICAgICAjIEZpbmQgdXNlci1kZWZpbmVkIGNvbXBhcmlzb25zIChub3QgdGhvc2UgaW5oZXJpdGVkIGZyb20gb2JqZWN0KS4KLSAgICByb290cyA9IFtvcCBmb3Igb3AgaW4gY29udmVydCBpZiBnZXRhdHRyKGNscywgb3AsIE5vbmUpIGlzIG5vdCBnZXRhdHRyKG9iamVjdCwgb3AsIE5vbmUpXQorICAgIHJvb3RzID0gW29wIGZvciBvcCBpbiBfY29udmVydCBpZiBnZXRhdHRyKGNscywgb3AsIE5vbmUpIGlzIG5vdCBnZXRhdHRyKG9iamVjdCwgb3AsIE5vbmUpXQogICAgIGlmIG5vdCByb290czoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbXVzdCBkZWZpbmUgYXQgbGVhc3Qgb25lIG9yZGVyaW5nIG9wZXJhdGlvbjogPCA+IDw9ID49JykKICAgICByb290ID0gbWF4KHJvb3RzKSAgICAgICAjIHByZWZlciBfX2x0X18gdG8gX19sZV9fIHRvIF9fZ3RfXyB0byBfX2dlX18KLSAgICBmb3Igb3BuYW1lLCBvcGZ1bmMgaW4gY29udmVydFtyb290XToKKyAgICBmb3Igb3BuYW1lLCBvcGZ1bmMgaW4gX2NvbnZlcnRbcm9vdF06CiAgICAgICAgIGlmIG9wbmFtZSBub3QgaW4gcm9vdHM6CiAgICAgICAgICAgICBvcGZ1bmMuX19uYW1lX18gPSBvcG5hbWUKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBvcG5hbWUsIG9wZnVuYykKQEAgLTIyMiw4ICsyMjMsNiBAQAogICAgICAgICAgICAgcmV0dXJuIG15Y21wKHNlbGYub2JqLCBvdGhlci5vYmopIDw9IDAKICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICByZXR1cm4gbXljbXAoc2VsZi5vYmosIG90aGVyLm9iaikgPj0gMAotICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSAhPSAwCiAgICAgICAgIF9faGFzaF9fID0gTm9uZQogICAgIHJldHVybiBLCiAKQEAgLTI0Miw2ICsyNDEsMTQgQEAKICAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgICBhbmQga2V5d29yZHMuCiAgICAgIiIiCisgICAgaWYgaGFzYXR0cihmdW5jLCAnZnVuYycpOgorICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncworICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCisgICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAga2V5d29yZHMgPSB0bXBrdworICAgICAgICBkZWwgdG1wa3cKKyAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYworCiAgICAgZGVmIG5ld2Z1bmMoKmZhcmdzLCAqKmZrZXl3b3Jkcyk6CiAgICAgICAgIG5ld2tleXdvcmRzID0ga2V5d29yZHMuY29weSgpCiAgICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShma2V5d29yZHMpCkBAIC0yOTEsNyArMjk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICJ7bW9kdWxlfS57Y2xzfSh7ZnVuY30sIHthcmdzfSwge2tleXdvcmRzfSkiCiAgICAgICAgIHJldHVybiBmb3JtYXRfc3RyaW5nLmZvcm1hdChtb2R1bGU9c2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1zZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1zZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jPXNlbGYuZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzPWtleXdvcmRzKQpAQCAtNDEyLDEyMCArNDE5LDEyOSBAQAogICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG1heHNpemUsIGludCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgbWF4c2l6ZSB0byBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUnKQogCisgICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbik6CisgICAgICAgIHdyYXBwZXIgPSBfbHJ1X2NhY2hlX3dyYXBwZXIodXNlcl9mdW5jdGlvbiwgbWF4c2l6ZSwgdHlwZWQsIF9DYWNoZUluZm8pCisgICAgICAgIHJldHVybiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB1c2VyX2Z1bmN0aW9uKQorCisgICAgcmV0dXJuIGRlY29yYXRpbmdfZnVuY3Rpb24KKworZGVmIF9scnVfY2FjaGVfd3JhcHBlcih1c2VyX2Z1bmN0aW9uLCBtYXhzaXplLCB0eXBlZCwgX0NhY2hlSW5mbyk6CiAgICAgIyBDb25zdGFudHMgc2hhcmVkIGJ5IGFsbCBscnUgY2FjaGUgaW5zdGFuY2VzOgogICAgIHNlbnRpbmVsID0gb2JqZWN0KCkgICAgICAgICAgIyB1bmlxdWUgb2JqZWN0IHVzZWQgdG8gc2lnbmFsIGNhY2hlIG1pc3NlcwogICAgIG1ha2Vfa2V5ID0gX21ha2Vfa2V5ICAgICAgICAgIyBidWlsZCBhIGtleSBmcm9tIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKICAgICBQUkVWLCBORVhULCBLRVksIFJFU1VMVCA9IDAsIDEsIDIsIDMgICAjIG5hbWVzIGZvciB0aGUgbGluayBmaWVsZHMKIAotICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24pOgotICAgICAgICBjYWNoZSA9IHt9Ci0gICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgIGZ1bGwgPSBGYWxzZQotICAgICAgICBjYWNoZV9nZXQgPSBjYWNoZS5nZXQgICAgIyBib3VuZCBtZXRob2QgdG8gbG9va3VwIGEga2V5IG9yIHJldHVybiBOb25lCi0gICAgICAgIGxvY2sgPSBSTG9jaygpICAgICAgICAgICAjIGJlY2F1c2UgbGlua2VkbGlzdCB1cGRhdGVzIGFyZW4ndCB0aHJlYWRzYWZlCi0gICAgICAgIHJvb3QgPSBbXSAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgdGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdAotICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdICAgICAjIGluaXRpYWxpemUgYnkgcG9pbnRpbmcgdG8gc2VsZgorICAgIGNhY2hlID0ge30KKyAgICBoaXRzID0gbWlzc2VzID0gMAorICAgIGZ1bGwgPSBGYWxzZQorICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKKyAgICBsb2NrID0gUkxvY2soKSAgICAgICAgICAgIyBiZWNhdXNlIGxpbmtlZGxpc3QgdXBkYXRlcyBhcmVuJ3QgdGhyZWFkc2FmZQorICAgIHJvb3QgPSBbXSAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgdGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdAorICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCiAKLSAgICAgICAgaWYgbWF4c2l6ZSA9PSAwOgorICAgIGlmIG1heHNpemUgPT0gMDoKIAotICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgIyBObyBjYWNoaW5nIC0tIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAotICAgICAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICMgTm8gY2FjaGluZyAtLSBqdXN0IGEgc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwKKyAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcworICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGVsaWYgbWF4c2l6ZSBpcyBOb25lOgorCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIyBTaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKKyAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcworICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICByZXN1bHQgPSBjYWNoZV9nZXQoa2V5LCBzZW50aW5lbCkKKyAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3Qgc2VudGluZWw6CisgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAorICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKyAgICBlbHNlOgogCi0gICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICAjIFNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlX2dldChrZXksIHNlbnRpbmVsKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3Qgc2VudGluZWw6CisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIyBTaXplIGxpbWl0ZWQgY2FjaGluZyB0aGF0IHRyYWNrcyBhY2Nlc3NlcyBieSByZWNlbmN5CisgICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGZ1bGwKKyAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQorICAgICAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQorICAgICAgICAgICAgICAgIGlmIGxpbmsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgTW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBfa2V5LCByZXN1bHQgPSBsaW5rCisgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldltORVhUXSA9IGxpbmtfbmV4dAorICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKKyAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0CisgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgIGhpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQKKyAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgICAgICMgR2V0dGluZyBoZXJlIG1lYW5zIHRoYXQgdGhpcyBzYW1lIGtleSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgU2luY2UgdGhlIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaXMgYWxyZWFkeSBkb25lLCB3ZSBuZWVkIG9ubHkgcmV0dXJuIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGVkIHJlc3VsdCBhbmQgdXBkYXRlIHRoZSBjb3VudCBvZiBtaXNzZXMuCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbGlmIGZ1bGw6CisgICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBvbGQgcm9vdCB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0LgorICAgICAgICAgICAgICAgICAgICBvbGRyb290ID0gcm9vdAorICAgICAgICAgICAgICAgICAgICBvbGRyb290W0tFWV0gPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtSRVNVTFRdID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICMgRW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBvbGQga2V5IGFuZCBvbGQgcmVzdWx0IHRvCisgICAgICAgICAgICAgICAgICAgICMgcHJldmVudCB0aGVpciByZWYgY291bnRzIGZyb20gZ29pbmcgdG8gemVybyBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICMgY2xlYW4tdXAgY29kZSAoaS5lLiBfX2RlbF9fKSBmcm9tIHJ1bm5pbmcgd2hpbGUgd2UncmUKKyAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCBhZGp1c3RpbmcgdGhlIGxpbmtzLgorICAgICAgICAgICAgICAgICAgICByb290ID0gb2xkcm9vdFtORVhUXQorICAgICAgICAgICAgICAgICAgICBvbGRrZXkgPSByb290W0tFWV0KKyAgICAgICAgICAgICAgICAgICAgb2xkcmVzdWx0ID0gcm9vdFtSRVNVTFRdCisgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIHRoZSBjYWNoZSBkaWN0aW9uYXJ5LgorICAgICAgICAgICAgICAgICAgICBkZWwgY2FjaGVbb2xka2V5XQorICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHBvdGVudGlhbGx5IHJlZW50cmFudCBjYWNoZVtrZXldIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFzdCwgYWZ0ZXIgdGhlIHJvb3QgYW5kIGxpbmtzIGhhdmUgYmVlbiBwdXQgaW4KKyAgICAgICAgICAgICAgICAgICAgIyBhIGNvbnNpc3RlbnQgc3RhdGUuCisgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBvbGRyb290CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBQdXQgcmVzdWx0IGluIGEgbmV3IGxpbmsgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KKyAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBjYWNoZVtrZXldID0gbGluaworICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGxlbihjYWNoZSkgPj0gbWF4c2l6ZSkKICAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBlbHNlOgorICAgIGRlZiBjYWNoZV9pbmZvKCk6CisgICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCisgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgbGVuKGNhY2hlKSkKIAotICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgIyBTaXplIGxpbWl0ZWQgY2FjaGluZyB0aGF0IHRyYWNrcyBhY2Nlc3NlcyBieSByZWNlbmN5Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgcm9vdCwgaGl0cywgbWlzc2VzLCBmdWxsCi0gICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCi0gICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICBsaW5rID0gY2FjaGVfZ2V0KGtleSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwgX2tleSwgcmVzdWx0ID0gbGluawotICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rW05FWFRdID0gcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgU2luY2UgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIG9sZCByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290ID0gcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtLRVldID0ga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290W1JFU1VMVF0gPSByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuCi0gICAgICAgICAgICAgICAgICAgICAgICByb290ID0gb2xkcm9vdFtORVhUXQotICAgICAgICAgICAgICAgICAgICAgICAgb2xka2V5ID0gcm9vdFtLRVldCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyZXN1bHQgPSByb290W1JFU1VMVF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHVwZGF0ZSB0aGUgY2FjaGUgZGljdGlvbmFyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtvbGRrZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHBvdGVudGlhbGx5IHJlZW50cmFudCBjYWNoZVtrZXldIGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhc3QsIGFmdGVyIHRoZSByb290IGFuZCBsaW5rcyBoYXZlIGJlZW4gcHV0IGluCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgY29uc2lzdGVudCBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBvbGRyb290Ci0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLgotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGNhY2hlW2tleV0gPSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGxlbihjYWNoZSkgPj0gbWF4c2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZGVmIGNhY2hlX2NsZWFyKCk6CisgICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgorICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGZ1bGwKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQorICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQorICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKKyAgICAgICAgICAgIGZ1bGwgPSBGYWxzZQogCi0gICAgICAgIGRlZiBjYWNoZV9pbmZvKCk6Ci0gICAgICAgICAgICAiIiJSZXBvcnQgY2FjaGUgc3RhdGlzdGljcyIiIgotICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgbGVuKGNhY2hlKSkKKyAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCisgICAgd3JhcHBlci5jYWNoZV9jbGVhciA9IGNhY2hlX2NsZWFyCisgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKLSAgICAgICAgZGVmIGNhY2hlX2NsZWFyKCk6Ci0gICAgICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGUgYW5kIGNhY2hlIHN0YXRpc3RpY3MiIiIKLSAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgZnVsbAotICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdCi0gICAgICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAgICAgICAgICBmdWxsID0gRmFsc2UKLQotICAgICAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCi0gICAgICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgotICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKLQotICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBfbHJ1X2NhY2hlX3dyYXBwZXIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xpYi9nZW5lcmljcGF0aC5weSBiL0xpYi9nZW5lcmljcGF0aC5weQppbmRleCBjYTRhNTEwLi42NzE0MDYxIDEwMDY0NAotLS0gYS9MaWIvZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL2dlbmVyaWNwYXRoLnB5CkBAIC0xMzAsMyArMTMwLDE2IEBACiAgICAgICAgICAgICBmaWxlbmFtZUluZGV4ICs9IDEKIAogICAgIHJldHVybiBwLCBwWzowXQorCitkZWYgX2NoZWNrX2FyZ190eXBlcyhmdW5jbmFtZSwgKmFyZ3MpOgorICAgIGhhc3N0ciA9IGhhc2J5dGVzID0gRmFsc2UKKyAgICBmb3IgcyBpbiBhcmdzOgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgICAgICBoYXNzdHIgPSBUcnVlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CisgICAgICAgICAgICBoYXNieXRlcyA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNuYW1lLCBzLl9fY2xhc3NfXy5fX25hbWVfXykpIGZyb20gTm9uZQorICAgIGlmIGhhc3N0ciBhbmQgaGFzYnl0ZXM6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIpIGZyb20gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2dldHRleHQucHkgYi9MaWIvZ2V0dGV4dC5weQppbmRleCA4Y2FmMWQxLi4xMDEzNzhmIDEwMDY0NAotLS0gYS9MaWIvZ2V0dGV4dC5weQorKysgYi9MaWIvZ2V0dGV4dC5weQpAQCAtMjI3LDYgKzIyNywxMyBAQAogICAgIExFX01BR0lDID0gMHg5NTA0MTJkZQogICAgIEJFX01BR0lDID0gMHhkZTEyMDQ5NQogCisgICAgIyBBY2NlcHRhYmxlIC5tbyB2ZXJzaW9ucworICAgIFZFUlNJT05TID0gKDAsIDEpCisKKyAgICBkZWYgX2dldF92ZXJzaW9ucyhzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIG1ham9yIHZlcnNpb24sIG1pbm9yIHZlcnNpb24iIiIKKyAgICAgICAgcmV0dXJuICh2ZXJzaW9uID4+IDE2LCB2ZXJzaW9uICYgMHhmZmZmKQorCiAgICAgZGVmIF9wYXJzZShzZWxmLCBmcCk6CiAgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgLm1vIGZvcm1hdHMuIiIiCiAgICAgICAgIHVucGFjayA9IHN0cnVjdC51bnBhY2sKQEAgLTI0Nyw2ICsyNTQsMTIgQEAKICAgICAgICAgICAgIGlpID0gJz5JSScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0JhZCBtYWdpYyBudW1iZXInLCBmaWxlbmFtZSkKKworICAgICAgICBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uID0gc2VsZi5fZ2V0X3ZlcnNpb25zKHZlcnNpb24pCisKKyAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiBub3QgaW4gc2VsZi5WRVJTSU9OUzoKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0JhZCB2ZXJzaW9uIG51bWJlciAnICsgc3RyKG1ham9yX3ZlcnNpb24pLCBmaWxlbmFtZSkKKwogICAgICAgICAjIE5vdyBwdXQgYWxsIG1lc3NhZ2VzIGZyb20gdGhlIC5tbyBmaWxlIGJ1ZmZlciBpbnRvIHRoZSBjYXRhbG9nCiAgICAgICAgICMgZGljdGlvbmFyeS4KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbXNnY291bnQpOgpkaWZmIC0tZ2l0IGEvTGliL2dsb2IucHkgYi9MaWIvZ2xvYi5weQppbmRleCBkNmVjYTI0Li41NmQ2NzA0IDEwMDY0NAotLS0gYS9MaWIvZ2xvYi5weQorKysgYi9MaWIvZ2xvYi5weQpAQCAtNiw3ICs2LDcgQEAKIAogX19hbGxfXyA9IFsiZ2xvYiIsICJpZ2xvYiJdCiAKLWRlZiBnbG9iKHBhdGhuYW1lKToKK2RlZiBnbG9iKHBhdGhuYW1lLCAqLCByZWN1cnNpdmU9RmFsc2UpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgYSBwYXRobmFtZSBwYXR0ZXJuLgogCiAgICAgVGhlIHBhdHRlcm4gbWF5IGNvbnRhaW4gc2ltcGxlIHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBhIGxhCkBAIC0xNCwxMCArMTQsMTIgQEAKICAgICBkb3QgYXJlIHNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgbm90IG1hdGNoZWQgYnkgJyonIGFuZCAnPycKICAgICBwYXR0ZXJucy4KIAorICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAorICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoaWdsb2IocGF0aG5hbWUpKQorICAgIHJldHVybiBsaXN0KGlnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmU9cmVjdXJzaXZlKSkKIAotZGVmIGlnbG9iKHBhdGhuYW1lKToKK2RlZiBpZ2xvYihwYXRobmFtZSwgKiwgcmVjdXJzaXZlPUZhbHNlKToKICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igd2hpY2ggeWllbGRzIHRoZSBwYXRocyBtYXRjaGluZyBhIHBhdGhuYW1lIHBhdHRlcm4uCiAKICAgICBUaGUgcGF0dGVybiBtYXkgY29udGFpbiBzaW1wbGUgc2hlbGwtc3R5bGUgd2lsZGNhcmRzIGEgbGEKQEAgLTI1LDYgKzI3LDggQEAKICAgICBkb3QgYXJlIHNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgbm90IG1hdGNoZWQgYnkgJyonIGFuZCAnPycKICAgICBwYXR0ZXJucy4KIAorICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAorICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBoYXNfbWFnaWMocGF0aG5hbWUpOgpAQCAtMzcsMTcgKzQxLDIzIEBACiAgICAgICAgICAgICAgICAgeWllbGQgcGF0aG5hbWUKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGRpcm5hbWU6Ci0gICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoTm9uZSwgYmFzZW5hbWUpCisgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IxKGRpcm5hbWUsIGJhc2VuYW1lKQogICAgICAgICByZXR1cm4KICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgdGhlIGFyZ3VtZW50IGl0c2VsZiBhcyBhIGRpcm5hbWUgaWYgaXQgaXMgYQogICAgICMgZHJpdmUgb3IgVU5DIHBhdGguICBQcmV2ZW50IGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhIGRyaXZlIG9yIFVOQyBwYXRoCiAgICAgIyBjb250YWlucyBtYWdpYyBjaGFyYWN0ZXJzIChpLmUuIHInXFw/XEM6JykuCiAgICAgaWYgZGlybmFtZSAhPSBwYXRobmFtZSBhbmQgaGFzX21hZ2ljKGRpcm5hbWUpOgotICAgICAgICBkaXJzID0gaWdsb2IoZGlybmFtZSkKKyAgICAgICAgZGlycyA9IGlnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZT1yZWN1cnNpdmUpCiAgICAgZWxzZToKICAgICAgICAgZGlycyA9IFtkaXJuYW1lXQogICAgIGlmIGhhc19tYWdpYyhiYXNlbmFtZSk6Ci0gICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjEKKyAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQogICAgIGVsc2U6CiAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjAKICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgpAQCAtODMsNiArOTMsMzQgQEAKICAgICAgICAgICAgIHJldHVybiBbYmFzZW5hbWVdCiAgICAgcmV0dXJuIFtdCiAKKyMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCisjIGRpcmVjdG9yeS4KKworZGVmIGdsb2IyKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKKyAgICBpZiBkaXJuYW1lOgorICAgICAgICB5aWVsZCBwYXR0ZXJuWzowXQorICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisKKyMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KKworZGVmIF9ybGlzdGRpcihkaXJuYW1lKToKKyAgICBpZiBub3QgZGlybmFtZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShkaXJuYW1lLCBieXRlcyk6CisgICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgorICAgIHRyeToKKyAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgeCBpbiBuYW1lczoKKyAgICAgICAgaWYgbm90IF9pc2hpZGRlbih4KToKKyAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgeCkgaWYgZGlybmFtZSBlbHNlIHgKKyAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oeCwgeSkKKwogCiBtYWdpY19jaGVjayA9IHJlLmNvbXBpbGUoJyhbKj9bXSknKQogbWFnaWNfY2hlY2tfYnl0ZXMgPSByZS5jb21waWxlKGInKFsqP1tdKScpCkBAIC05Nyw2ICsxMzUsMTIgQEAKIGRlZiBfaXNoaWRkZW4ocGF0aCk6CiAgICAgcmV0dXJuIHBhdGhbMF0gaW4gKCcuJywgYicuJ1swXSkKIAorZGVmIF9pc3JlY3Vyc2l2ZShwYXR0ZXJuKToKKyAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJ5dGVzKToKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gYicqKicKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcGF0dGVybiA9PSAnKionCisKIGRlZiBlc2NhcGUocGF0aG5hbWUpOgogICAgICIiIkVzY2FwZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCA3YWQwMGUxLi40NTE1MmU0IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCB6bGliCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbworaW1wb3J0IF9jb21wcmVzc2lvbgogCiBfX2FsbF9fID0gWyJHemlwRmlsZSIsICJvcGVuIiwgImNvbXByZXNzIiwgImRlY29tcHJlc3MiXQogCkBAIC04OSw0OSArOTAsMzUgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbcmVhZDpdICsgXAogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5yZWFkKHNpemUtc2VsZi5fbGVuZ3RoK3JlYWQpCiAKLSAgICBkZWYgcHJlcGVuZChzZWxmLCBwcmVwZW5kPWInJywgcmVhZHByZXZpb3VzPUZhbHNlKToKKyAgICBkZWYgcHJlcGVuZChzZWxmLCBwcmVwZW5kPWInJyk6CiAgICAgICAgIGlmIHNlbGYuX3JlYWQgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHByZXBlbmQKLSAgICAgICAgZWxpZiByZWFkcHJldmlvdXMgYW5kIGxlbihwcmVwZW5kKSA8PSBzZWxmLl9yZWFkOgorICAgICAgICBlbHNlOiAgIyBBc3N1bWUgZGF0YSB3YXMgcmVhZCBzaW5jZSB0aGUgbGFzdCBwcmVwZW5kKCkgY2FsbAogICAgICAgICAgICAgc2VsZi5fcmVhZCAtPSBsZW4ocHJlcGVuZCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX3JlYWQ6XSArIHByZXBlbmQKICAgICAgICAgc2VsZi5fbGVuZ3RoID0gbGVuKHNlbGYuX2J1ZmZlcikKICAgICAgICAgc2VsZi5fcmVhZCA9IDAKIAotICAgIGRlZiB1bnVzZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3JlYWQgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBiJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9yZWFkOl0KLQotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgotICAgICAgICAjIFRoaXMgaXMgb25seSBldmVyIGNhbGxlZCB3aXRoIG9mZnNldD13aGVuY2U9MAotICAgICAgICBpZiB3aGVuY2UgPT0gMSBhbmQgc2VsZi5fcmVhZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIDAgPD0gb2Zmc2V0ICsgc2VsZi5fcmVhZCA8PSBzZWxmLl9sZW5ndGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZCArPSBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbGYuX2xlbmd0aCAtIHNlbGYuX3JlYWQKKyAgICBkZWYgc2VlayhzZWxmLCBvZmYpOgogICAgICAgICBzZWxmLl9yZWFkID0gTm9uZQogICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLmZpbGUuc2VlayhvZmZzZXQsIHdoZW5jZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5zZWVrKG9mZikKIAotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5maWxlLCBuYW1lKQorICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUgICMgQWxsb3dzIGZhc3QtZm9yd2FyZGluZyBldmVuIGluIHVuc2Vla2FibGUgc3RyZWFtcwogCi0KLWNsYXNzIEd6aXBGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKK2NsYXNzIEd6aXBGaWxlKF9jb21wcmVzc2lvbi5CYXNlU3RyZWFtKToKICAgICAiIiJUaGUgR3ppcEZpbGUgY2xhc3Mgc2ltdWxhdGVzIG1vc3Qgb2YgdGhlIG1ldGhvZHMgb2YgYSBmaWxlIG9iamVjdCB3aXRoCi0gICAgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcmVhZGludG8oKSBhbmQgdHJ1bmNhdGUoKSBtZXRob2RzLgorICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHRydW5jYXRlKCkgbWV0aG9kLgogCiAgICAgVGhpcyBjbGFzcyBvbmx5IHN1cHBvcnRzIG9wZW5pbmcgZmlsZXMgaW4gYmluYXJ5IG1vZGUuIElmIHlvdSBuZWVkIHRvIG9wZW4gYQogICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHVzZSB0aGUgZ3ppcC5vcGVuKCkgZnVuY3Rpb24uCiAKICAgICAiIiIKIAorICAgICMgT3ZlcnJpZGRlbiB3aXRoIGludGVybmFsIGZpbGUgb2JqZWN0IHRvIGJlIGNsb3NlZCwgaWYgb25seSBhIGZpbGVuYW1lCisgICAgIyBpcyBwYXNzZWQgaW4KICAgICBteWZpbGVvYmogPSBOb25lCi0gICAgbWF4X3JlYWRfY2h1bmsgPSAxMCAqIDEwMjQgKiAxMDI0ICAgIyAxME1iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLAogICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSk6CkBAIC0xNjMsMTMgKzE1MCw4IEBACiAgICAgICAgIGF0IGFsbC4gVGhlIGRlZmF1bHQgaXMgOS4KIAogICAgICAgICBUaGUgbXRpbWUgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgbnVtZXJpYyB0aW1lc3RhbXAgdG8gYmUgd3JpdHRlbgotICAgICAgICB0byB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuICBBbGwgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbXMKLSAgICAgICAgYXJlIHJlcXVpcmVkIHRvIGNvbnRhaW4gYSB0aW1lc3RhbXAuICBJZiBvbWl0dGVkIG9yIE5vbmUsIHRoZQotICAgICAgICBjdXJyZW50IHRpbWUgaXMgdXNlZC4gIFRoaXMgbW9kdWxlIGlnbm9yZXMgdGhlIHRpbWVzdGFtcCB3aGVuCi0gICAgICAgIGRlY29tcHJlc3Npbmc7IGhvd2V2ZXIsIHNvbWUgcHJvZ3JhbXMsIHN1Y2ggYXMgZ3VuemlwLCBtYWtlIHVzZQotICAgICAgICBvZiBpdC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRpbWVzdGFtcCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZQotICAgICAgICByZXR1cm4gdmFsdWUgb2YgdGltZS50aW1lKCkgYW5kIG9mIHRoZSBzdF9tdGltZSBtZW1iZXIgb2YgdGhlCi0gICAgICAgIG9iamVjdCByZXR1cm5lZCBieSBvcy5zdGF0KCkuCisgICAgICAgIHRvIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGZpZWxkIGluIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgSWYgb21pdHRlZCBvciBOb25lLCB0aGUgY3VycmVudCB0aW1lIGlzIHVzZWQuCiAKICAgICAgICAgIiIiCiAKQEAgLTE4OCwxOCArMTcwLDkgQEAKIAogICAgICAgICBpZiBtb2RlLnN0YXJ0c3dpdGgoJ3InKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFJFQUQKLSAgICAgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKLSAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCi0gICAgICAgICAgICAjIEJ1ZmZlciBkYXRhIHJlYWQgZnJvbSBnemlwIGZpbGUuIGV4dHJhc3RhcnQgaXMgb2Zmc2V0IGluCi0gICAgICAgICAgICAjIHN0cmVhbSB3aGVyZSBidWZmZXIgc3RhcnRzLiBleHRyYXNpemUgaXMgbnVtYmVyIG9mCi0gICAgICAgICAgICAjIGJ5dGVzIHJlbWFpbmluZyBpbiBidWZmZXIgZnJvbSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4KLSAgICAgICAgICAgIHNlbGYuZXh0cmFidWYgPSBiIiIKLSAgICAgICAgICAgIHNlbGYuZXh0cmFzaXplID0gMAotICAgICAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gMAorICAgICAgICAgICAgcmF3ID0gX0d6aXBSZWFkZXIoZmlsZW9iaikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKICAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGVuYW1lCi0gICAgICAgICAgICAjIFN0YXJ0cyBzbWFsbCwgc2NhbGVzIGV4cG9uZW50aWFsbHkKLSAgICAgICAgICAgIHNlbGYubWluX3JlYWRzaXplID0gMTAwCi0gICAgICAgICAgICBmaWxlb2JqID0gX1BhZGRlZEZpbGUoZmlsZW9iaikKIAogICAgICAgICBlbGlmIG1vZGUuc3RhcnRzd2l0aCgoJ3cnLCAnYScsICd4JykpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gV1JJVEUKQEAgLTIwOSwxMiArMTgyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bGliLkRFRl9NRU1fTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfbXRpbWUgPSBtdGltZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKICAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagotICAgICAgICBzZWxmLm9mZnNldCA9IDAKLSAgICAgICAgc2VsZi5tdGltZSA9IG10aW1lCiAKICAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgogICAgICAgICAgICAgc2VsZi5fd3JpdGVfZ3ppcF9oZWFkZXIoKQpAQCAtMjI3LDI2ICsxOTksMjIgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbWUgKyAiLmd6IgogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbXRpbWUoc2VsZik6CisgICAgICAgICIiIkxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgcmVhZCBmcm9tIHN0cmVhbSwgb3IgTm9uZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJhdy5fbGFzdF9tdGltZQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBmaWxlb2JqID0gc2VsZi5maWxlb2JqCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW9iaiwgX1BhZGRlZEZpbGUpOgotICAgICAgICAgICAgZmlsZW9iaiA9IGZpbGVvYmouZmlsZQotICAgICAgICBzID0gcmVwcihmaWxlb2JqKQorICAgICAgICBzID0gcmVwcihzZWxmLmZpbGVvYmopCiAgICAgICAgIHJldHVybiAnPGd6aXAgJyArIHNbMTotMV0gKyAnICcgKyBoZXgoaWQoc2VsZikpICsgJz4nCiAKLSAgICBkZWYgX2NoZWNrX2Nsb3NlZChzZWxmKToKLSAgICAgICAgIiIiUmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCBoYXMgYmVlbiBjbG9zZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4nKQotCiAgICAgZGVmIF9pbml0X3dyaXRlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgc2VsZi5uYW1lID0gZmlsZW5hbWUKICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGIiIikgJiAweGZmZmZmZmZmCiAgICAgICAgIHNlbGYuc2l6ZSA9IDAKICAgICAgICAgc2VsZi53cml0ZWJ1ZiA9IFtdCiAgICAgICAgIHNlbGYuYnVmc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5vZmZzZXQgPSAwICAjIEN1cnJlbnQgZmlsZSBvZmZzZXQgZm9yIHNlZWsoKSwgdGVsbCgpLCBldGMKIAogICAgIGRlZiBfd3JpdGVfZ3ppcF9oZWFkZXIoc2VsZik6CiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShiJ1wwMzdcMjEzJykgICAgICAgICAgICAgIyBtYWdpYyBoZWFkZXIKQEAgLTI2NSw3ICsyMzMsNyBAQAogICAgICAgICBpZiBmbmFtZToKICAgICAgICAgICAgIGZsYWdzID0gRk5BTUUKICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGNocihmbGFncykuZW5jb2RlKCdsYXRpbi0xJykpCi0gICAgICAgIG10aW1lID0gc2VsZi5tdGltZQorICAgICAgICBtdGltZSA9IHNlbGYuX3dyaXRlX210aW1lCiAgICAgICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBtdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHdyaXRlMzJ1KHNlbGYuZmlsZW9iaiwgaW50KG10aW1lKSkKQEAgLTI3NCw1OSArMjQyLDggQEAKICAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoZm5hbWUgKyBiJ1wwMDAnKQogCi0gICAgZGVmIF9pbml0X3JlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpICYgMHhmZmZmZmZmZgotICAgICAgICBzZWxmLnNpemUgPSAwCi0KLSAgICBkZWYgX3JlYWRfZXhhY3Qoc2VsZiwgbik6Ci0gICAgICAgIGRhdGEgPSBzZWxmLmZpbGVvYmoucmVhZChuKQotICAgICAgICB3aGlsZSBsZW4oZGF0YSkgPCBuOgotICAgICAgICAgICAgYiA9IHNlbGYuZmlsZW9iai5yZWFkKG4gLSBsZW4oZGF0YSkpCi0gICAgICAgICAgICBpZiBub3QgYjoKLSAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCi0gICAgICAgICAgICBkYXRhICs9IGIKLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBfcmVhZF9nemlwX2hlYWRlcihzZWxmKToKLSAgICAgICAgbWFnaWMgPSBzZWxmLmZpbGVvYmoucmVhZCgyKQotICAgICAgICBpZiBtYWdpYyA9PSBiJyc6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBtYWdpYyAhPSBiJ1wwMzdcMjEzJzoKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05vdCBhIGd6aXBwZWQgZmlsZScpCi0KLSAgICAgICAgbWV0aG9kLCBmbGFnLCBzZWxmLm10aW1lID0gc3RydWN0LnVucGFjaygiPEJCSXh4Iiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKLSAgICAgICAgaWYgbWV0aG9kICE9IDg6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCi0KLSAgICAgICAgaWYgZmxhZyAmIEZFWFRSQToKLSAgICAgICAgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIGV4dHJhIGZpZWxkLCBpZiBwcmVzZW50Ci0gICAgICAgICAgICBleHRyYV9sZW4sID0gc3RydWN0LnVucGFjaygiPEgiLCBzZWxmLl9yZWFkX2V4YWN0KDIpKQotICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdChleHRyYV9sZW4pCi0gICAgICAgIGlmIGZsYWcgJiBGTkFNRToKLSAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcyA9IHNlbGYuZmlsZW9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZmxhZyAmIEZDT01NRU5UOgotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBjb250YWluaW5nIGEgY29tbWVudAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBzID0gc2VsZi5maWxlb2JqLnJlYWQoMSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBmbGFnICYgRkhDUkM6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2V4YWN0KDIpICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSAxNi1iaXQgaGVhZGVyIENSQwotCi0gICAgICAgIHVudXNlZCA9IHNlbGYuZmlsZW9iai51bnVzZWQoKQotICAgICAgICBpZiB1bnVzZWQ6Ci0gICAgICAgICAgICB1bmNvbXByZXNzID0gc2VsZi5kZWNvbXByZXNzLmRlY29tcHJlc3ModW51c2VkKQotICAgICAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSh1bmNvbXByZXNzKQotICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIHdyaXRlKHNlbGYsZGF0YSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gV1JJVEU6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJ3cml0ZSgpIG9uIHJlYWQtb25seSBHemlwRmlsZSBvYmplY3QiKQpAQCAtMzM0LDE2NiArMjUxLDQ3IEBACiAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUoKSBvbiBjbG9zZWQgR3ppcEZpbGUgb2JqZWN0IikKIAotICAgICAgICAjIENvbnZlcnQgZGF0YSB0eXBlIGlmIGNhbGxlZCBieSBpby5CdWZmZXJlZFdyaXRlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBtZW1vcnl2aWV3KToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvYnl0ZXMoKQorICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKKyAgICAgICAgICAgIGxlbmd0aCA9IGxlbihkYXRhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBhY2NlcHQgYW55IGRhdGEgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCisgICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKQorICAgICAgICAgICAgbGVuZ3RoID0gZGF0YS5uYnl0ZXMKIAotICAgICAgICBpZiBsZW4oZGF0YSkgPiAwOgorICAgICAgICBpZiBsZW5ndGggPiAwOgogICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHNlbGYuY29tcHJlc3MuY29tcHJlc3MoZGF0YSkpCi0gICAgICAgICAgICBzZWxmLnNpemUgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBzZWxmLnNpemUgKz0gbGVuZ3RoCiAgICAgICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5jcmMpICYgMHhmZmZmZmZmZgotICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBzZWxmLm9mZnNldCArPSBsZW5ndGgKIAotICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBsZW5ndGgKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJyZWFkKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQotCi0gICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGInJwotCi0gICAgICAgIHJlYWRzaXplID0gMTAyNAotICAgICAgICBpZiBzaXplIDwgMDogICAgICAgICMgZ2V0IHRoZSB3aG9sZSB0aGluZwotICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZChyZWFkc2l6ZSk6Ci0gICAgICAgICAgICAgICAgcmVhZHNpemUgPSBtaW4oc2VsZi5tYXhfcmVhZF9jaHVuaywgcmVhZHNpemUgKiAyKQotICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCi0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgIyBqdXN0IGdldCBzb21lIG1vcmUgb2YgaXQKLSAgICAgICAgICAgIHdoaWxlIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZChyZWFkc2l6ZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKLQotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IHNlbGYuZXh0cmFzaXplIC0gc2l6ZQotCi0gICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKLSAgICAgICAgcmV0dXJuIGNodW5rCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICAiIiJJbXBsZW1lbnRzIEJ1ZmZlcmVkSU9CYXNlLnJlYWQxKCkKKworICAgICAgICBSZWFkcyB1cCB0byBhIGJ1ZmZlcidzIHdvcnRoIG9mIGRhdGEgaXMgc2l6ZSBpcyBuZWdhdGl2ZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicmVhZDEoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCiAKLSAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gYicnCi0KLSAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZSBjYWxsIHRvIF9yZWFkKCkgbWF5IG5vdCByZXR1cm4KLSAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KLSAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5fcmVhZCgpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBzaXplIDwgMCBvciBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKLQotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQotICAgICAgICBzZWxmLmV4dHJhc2l6ZSAtPSBzaXplCi0gICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKLSAgICAgICAgcmV0dXJuIGNodW5rCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkMShzaXplKQogCiAgICAgZGVmIHBlZWsoc2VsZiwgbik6CisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgInBlZWsoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCi0KLSAgICAgICAgIyBEbyBub3QgcmV0dXJuIHJpZGljdWxvdXNseSBzbWFsbCBidWZmZXJzLCBmb3Igb25lIGNvbW1vbiBpZGlvbQotICAgICAgICAjIGlzIHRvIGNhbGwgcGVlaygxKSBhbmQgZXhwZWN0IG1vcmUgYnl0ZXMgaW4gcmV0dXJuLgotICAgICAgICBpZiBuIDwgMTAwOgotICAgICAgICAgICAgbiA9IDEwMAotICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA9PSAwOgotICAgICAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGInJwotICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCByZXR1cm4gYiIiIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCBFT0YuCi0gICAgICAgICAgICAjIDEwMjQgaXMgdGhlIHNhbWUgYnVmZmVyaW5nIGhldXJpc3RpYyB1c2VkIGluIHJlYWQoKQotICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPT0gMCBhbmQgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgcmVtYWluaW5nID0gc2VsZi5leHRyYXNpemUKLSAgICAgICAgYXNzZXJ0IHJlbWFpbmluZyA9PSBsZW4oc2VsZi5leHRyYWJ1ZikgLSBvZmZzZXQKLSAgICAgICAgcmV0dXJuIHNlbGYuZXh0cmFidWZbb2Zmc2V0Om9mZnNldCArIG5dCi0KLSAgICBkZWYgX3VucmVhZChzZWxmLCBidWYpOgotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IGxlbihidWYpICsgc2VsZi5leHRyYXNpemUKLSAgICAgICAgc2VsZi5vZmZzZXQgLT0gbGVuKGJ1ZikKLQotICAgIGRlZiBfcmVhZChzZWxmLCBzaXplPTEwMjQpOgotICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuX25ld19tZW1iZXI6Ci0gICAgICAgICAgICAjIElmIHRoZSBfbmV3X21lbWJlciBmbGFnIGlzIHNldCwgd2UgaGF2ZSB0bwotICAgICAgICAgICAgIyBqdW1wIHRvIHRoZSBuZXh0IG1lbWJlciwgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkX2d6aXBfaGVhZGVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBzZWxmLmRlY29tcHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IEZhbHNlCi0KLSAgICAgICAgIyBSZWFkIGEgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBmaWxlCi0gICAgICAgIGJ1ZiA9IHNlbGYuZmlsZW9iai5yZWFkKHNpemUpCi0KLSAgICAgICAgIyBJZiB0aGUgRU9GIGhhcyBiZWVuIHJlYWNoZWQsIGZsdXNoIHRoZSBkZWNvbXByZXNzaW9uIG9iamVjdAotICAgICAgICAjIGFuZCBtYXJrIHRoaXMgb2JqZWN0IGFzIGZpbmlzaGVkLgotCi0gICAgICAgIGlmIGJ1ZiA9PSBiIiI6Ci0gICAgICAgICAgICB1bmNvbXByZXNzID0gc2VsZi5kZWNvbXByZXNzLmZsdXNoKCkKLSAgICAgICAgICAgICMgUHJlcGVuZCB0aGUgYWxyZWFkeSByZWFkIGJ5dGVzIHRvIHRoZSBmaWxlb2JqIHRvIHRoZXkgY2FuIGJlCi0gICAgICAgICAgICAjIHNlZW4gYnkgX3JlYWRfZW9mKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai5wcmVwZW5kKHNlbGYuZGVjb21wcmVzcy51bnVzZWRfZGF0YSwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKLSAgICAgICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEoIHVuY29tcHJlc3MgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5kZWNvbXByZXNzKGJ1ZikKLSAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCi0KLSAgICAgICAgaWYgc2VsZi5kZWNvbXByZXNzLnVudXNlZF9kYXRhICE9IGIiIjoKLSAgICAgICAgICAgICMgRW5kaW5nIGNhc2U6IHdlJ3ZlIGNvbWUgdG8gdGhlIGVuZCBvZiBhIG1lbWJlciBpbiB0aGUgZmlsZSwKLSAgICAgICAgICAgICMgc28gc2VlayBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgdW51c2VkIGRhdGEsIGZpbmlzaCB1cAotICAgICAgICAgICAgIyB0aGlzIG1lbWJlciwgYW5kIHJlYWQgYSBuZXcgZ3ppcCBoZWFkZXIuCi0gICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiB0byB0aGV5IGNhbiBiZQotICAgICAgICAgICAgIyBzZWVuIGJ5IF9yZWFkX2VvZigpIGFuZCBfcmVhZF9nemlwX2hlYWRlcigpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucHJlcGVuZChzZWxmLmRlY29tcHJlc3MudW51c2VkX2RhdGEsIFRydWUpCi0gICAgICAgICAgICAjIENoZWNrIHRoZSBDUkMgYW5kIGZpbGUgc2l6ZSwgYW5kIHNldCB0aGUgZmxhZyBzbyB3ZSByZWFkCi0gICAgICAgICAgICAjIGEgbmV3IG1lbWJlciBvbiB0aGUgbmV4dCBjYWxsCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9hZGRfcmVhZF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5jcmMpICYgMHhmZmZmZmZmZgotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBzZWxmLmV4dHJhYnVmID0gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6XSArIGRhdGEKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBzZWxmLmV4dHJhc2l6ZSArIGxlbihkYXRhKQotICAgICAgICBzZWxmLmV4dHJhc3RhcnQgPSBzZWxmLm9mZnNldAotICAgICAgICBzZWxmLnNpemUgPSBzZWxmLnNpemUgKyBsZW4oZGF0YSkKLQotICAgIGRlZiBfcmVhZF9lb2Yoc2VsZik6Ci0gICAgICAgICMgV2UndmUgcmVhZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCi0gICAgICAgICMgV2UgY2hlY2sgdGhlIHRoYXQgdGhlIGNvbXB1dGVkIENSQyBhbmQgc2l6ZSBvZiB0aGUKLSAgICAgICAgIyB1bmNvbXByZXNzZWQgZGF0YSBtYXRjaGVzIHRoZSBzdG9yZWQgdmFsdWVzLiAgTm90ZSB0aGF0IHRoZSBzaXplCi0gICAgICAgICMgc3RvcmVkIGlzIHRoZSB0cnVlIGZpbGUgc2l6ZSBtb2QgMioqMzIuCi0gICAgICAgIGNyYzMyLCBpc2l6ZSA9IHN0cnVjdC51bnBhY2soIjxJSSIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCi0gICAgICAgIGlmIGNyYzMyICE9IHNlbGYuY3JjOgotICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ1JDIGNoZWNrIGZhaWxlZCAlcyAhPSAlcyIgJSAoaGV4KGNyYzMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleChzZWxmLmNyYykpKQotICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLnNpemUgJiAweGZmZmZmZmZmKToKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkluY29ycmVjdCBsZW5ndGggb2YgZGF0YSBwcm9kdWNlZCIpCi0KLSAgICAgICAgIyBHemlwIGZpbGVzIGNhbiBiZSBwYWRkZWQgd2l0aCB6ZXJvZXMgYW5kIHN0aWxsIGhhdmUgYXJjaGl2ZXMuCi0gICAgICAgICMgQ29uc3VtZSBhbGwgemVybyBieXRlcyBhbmQgc2V0IHRoZSBmaWxlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdAotICAgICAgICAjIG5vbi16ZXJvIGJ5dGUuIFNlZSBodHRwOi8vd3d3Lmd6aXAub3JnLyNmYXE4Ci0gICAgICAgIGMgPSBiIlx4MDAiCi0gICAgICAgIHdoaWxlIGMgPT0gYiJceDAwIjoKLSAgICAgICAgICAgIGMgPSBzZWxmLmZpbGVvYmoucmVhZCgxKQotICAgICAgICBpZiBjOgotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnByZXBlbmQoYywgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5wZWVrKG4pCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY2xvc2VkKHNlbGYpOgpAQCAtNTEwLDYgKzMwOCw4IEBACiAgICAgICAgICAgICAgICAgd3JpdGUzMnUoZmlsZW9iaiwgc2VsZi5jcmMpCiAgICAgICAgICAgICAgICAgIyBzZWxmLnNpemUgbWF5IGV4Y2VlZCAyR0IsIG9yIGV2ZW4gNEdCCiAgICAgICAgICAgICAgICAgd3JpdGUzMnUoZmlsZW9iaiwgc2VsZi5zaXplICYgMHhmZmZmZmZmZikKKyAgICAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6CisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG15ZmlsZW9iaiA9IHNlbGYubXlmaWxlb2JqCiAgICAgICAgICAgICBpZiBteWZpbGVvYmo6CkBAIC01MTcsNyArMzE3LDcgQEAKICAgICAgICAgICAgICAgICBteWZpbGVvYmouY2xvc2UoKQogCiAgICAgZGVmIGZsdXNoKHNlbGYsemxpYl9tb2RlPXpsaWIuWl9TWU5DX0ZMVVNIKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgICMgRW5zdXJlIHRoZSBjb21wcmVzc29yJ3MgYnVmZmVyIGlzIGZsdXNoZWQKICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmNvbXByZXNzLmZsdXNoKHpsaWJfbW9kZSkpCkBAIC01MzYsMTIgKzMzNiw3IEBACiAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgZmlsZScnJwogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbid0IHJld2luZCBpbiB3cml0ZSBtb2RlIikKLSAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKLSAgICAgICAgc2VsZi5leHRyYWJ1ZiA9IGIiIgotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IDAKLSAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gMAotICAgICAgICBzZWxmLm9mZnNldCA9IDAKKyAgICAgICAgc2VsZi5fYnVmZmVyLnNlZWsoMCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubW9kZSA9PSBSRUFECkBAIC01NTIsMTMgKzM0NywxMyBAQAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgotICAgICAgICBpZiB3aGVuY2U6Ci0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMToKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTZWVrIGZyb20gZW5kIG5vdCBzdXBwb3J0ZWQnKQorICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgorICAgICAgICAgICAgaWYgd2hlbmNlICE9IGlvLlNFRUtfU0VUOgorICAgICAgICAgICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX0NVUjoKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBvZmZzZXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTZWVrIGZyb20gZW5kIG5vdCBzdXBwb3J0ZWQnKQogICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKICAgICAgICAgICAgIGNvdW50ID0gb2Zmc2V0IC0gc2VsZi5vZmZzZXQKQEAgLTU2Nyw1NSArMzYyLDE1NiBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2h1bmspCiAgICAgICAgICAgICBzZWxmLndyaXRlKGJ5dGVzKGNvdW50ICUgMTAyNCkpCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6Ci0gICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLm9mZnNldDoKLSAgICAgICAgICAgICAgICAjIGZvciBuZWdhdGl2ZSBzZWVrLCByZXdpbmQgYW5kIGRvIHBvc2l0aXZlIHNlZWsKLSAgICAgICAgICAgICAgICBzZWxmLnJld2luZCgpCi0gICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0Ci0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCAvLyAxMDI0KToKLSAgICAgICAgICAgICAgICBzZWxmLnJlYWQoMTAyNCkKLSAgICAgICAgICAgIHNlbGYucmVhZChjb3VudCAlIDEwMjQpCisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKIAogICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZGxpbmUoc2l6ZSkKKworCitjbGFzcyBfR3ppcFJlYWRlcihfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhfUGFkZGVkRmlsZShmcCksIHpsaWIuZGVjb21wcmVzc29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz0temxpYi5NQVhfV0JJVFMpCisgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKKyAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKKyAgICAgICAgc2VsZi5fbGFzdF9tdGltZSA9IE5vbmUKKworICAgIGRlZiBfaW5pdF9yZWFkKHNlbGYpOgorICAgICAgICBzZWxmLl9jcmMgPSB6bGliLmNyYzMyKGIiIikgJiAweGZmZmZmZmZmCisgICAgICAgIHNlbGYuX3N0cmVhbV9zaXplID0gMCAgIyBEZWNvbXByZXNzZWQgc2l6ZSBvZiB1bmNvbmNhdGVuYXRlZCBzdHJlYW0KKworICAgIGRlZiBfcmVhZF9leGFjdChzZWxmLCBuKToKKyAgICAgICAgJycnUmVhZCBleGFjdGx5ICpuKiBieXRlcyBmcm9tIGBzZWxmLl9mcGAKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBiZWNhdXNlIHNlbGYuX2ZwIG1heSBiZSB1bmJ1ZmZlcmVkLAorICAgICAgICBpLmUuIHJldHVybiBzaG9ydCByZWFkcy4KKyAgICAgICAgJycnCisKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZwLnJlYWQobikKKyAgICAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbjoKKyAgICAgICAgICAgIGIgPSBzZWxmLl9mcC5yZWFkKG4gLSBsZW4oZGF0YSkpCisgICAgICAgICAgICBpZiBub3QgYjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgICAgICBkYXRhICs9IGIKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfcmVhZF9nemlwX2hlYWRlcihzZWxmKToKKyAgICAgICAgbWFnaWMgPSBzZWxmLl9mcC5yZWFkKDIpCisgICAgICAgIGlmIG1hZ2ljID09IGInJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIG1hZ2ljICE9IGInXDAzN1wyMTMnOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTm90IGEgZ3ppcHBlZCBmaWxlICglciknICUgbWFnaWMpCisKKyAgICAgICAgKG1ldGhvZCwgZmxhZywKKyAgICAgICAgIHNlbGYuX2xhc3RfbXRpbWUpID0gc3RydWN0LnVucGFjaygiPEJCSXh4Iiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKKyAgICAgICAgaWYgbWV0aG9kICE9IDg6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCisKKyAgICAgICAgaWYgZmxhZyAmIEZFWFRSQToKKyAgICAgICAgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIGV4dHJhIGZpZWxkLCBpZiBwcmVzZW50CisgICAgICAgICAgICBleHRyYV9sZW4sID0gc3RydWN0LnVucGFjaygiPEgiLCBzZWxmLl9yZWFkX2V4YWN0KDIpKQorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdChleHRyYV9sZW4pCisgICAgICAgIGlmIGZsYWcgJiBGTkFNRToKKyAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuX2ZwLnJlYWQoMSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBmbGFnICYgRkNPTU1FTlQ6CisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgYSBjb21tZW50CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLl9mcC5yZWFkKDEpCisgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZmxhZyAmIEZIQ1JDOgorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICMgU2hvcnRjdXQgY29tbW9uIGNhc2UgLSBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlci4KLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0Ci0gICAgICAgICAgICBpID0gc2VsZi5leHRyYWJ1Zi5maW5kKGInXG4nLCBvZmZzZXQpICsgMQotICAgICAgICAgICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gaSAtIG9mZnNldAotICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGkgLSBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IGldCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgIyBzaXplPTAgaXMgc3BlY2lhbCBiZWNhdXNlIGRlY29tcHJlc3MobWF4X2xlbmd0aD0wKSBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmIG5vdCBzaXplOgorICAgICAgICAgICAgcmV0dXJuIGIiIgogCi0gICAgICAgICAgICBzaXplID0gc3lzLm1heHNpemUKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2VsZi5taW5fcmVhZHNpemUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2l6ZQotICAgICAgICBidWZzID0gW10KLSAgICAgICAgd2hpbGUgc2l6ZSAhPSAwOgotICAgICAgICAgICAgYyA9IHNlbGYucmVhZChyZWFkc2l6ZSkKLSAgICAgICAgICAgIGkgPSBjLmZpbmQoYidcbicpCisgICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUKKyAgICAgICAgIyBjYWxsIHRvIGRlY29tcHJlc3MoKSBtYXkgbm90IHJldHVybgorICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCisgICAgICAgICAgICAgICAgIyBzbyBmaW5pc2ggdXAgdGhpcyBtZW1iZXIsIGFuZCByZWFkIGEgbmV3IGd6aXAgaGVhZGVyLgorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIENSQyBhbmQgZmlsZSBzaXplLCBhbmQgc2V0IHRoZSBmbGFnIHNvIHdlIHJlYWQKKyAgICAgICAgICAgICAgICAjIGEgbmV3IG1lbWJlcgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KAorICAgICAgICAgICAgICAgICAgICAqKnNlbGYuX2RlY29tcF9hcmdzKQogCi0gICAgICAgICAgICAjIFdlIHNldCBpPXNpemUgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHVuZGVyIHR3bwotICAgICAgICAgICAgIyBjb25kaXRpb25zOiAxKSB0aGVyZSdzIG5vIG5ld2xpbmUsIGFuZCB0aGUgY2h1bmsgaXMKLSAgICAgICAgICAgICMgbGFyZ2VyIHRoYW4gc2l6ZSwgb3IgMikgdGhlcmUgaXMgYSBuZXdsaW5lLCBidXQgdGhlCi0gICAgICAgICAgICAjIHJlc3VsdGluZyBsaW5lIHdvdWxkIGJlIGxvbmdlciB0aGFuICdzaXplJy4KLSAgICAgICAgICAgIGlmIChzaXplIDw9IGkpIG9yIChpID09IC0xIGFuZCBsZW4oYykgPiBzaXplKToKLSAgICAgICAgICAgICAgICBpID0gc2l6ZSAtIDEKKyAgICAgICAgICAgIGlmIHNlbGYuX25ld19tZW1iZXI6CisgICAgICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAjIGp1bXAgdG8gdGhlIG5leHQgbWVtYmVyLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gRmFsc2UKIAotICAgICAgICAgICAgaWYgaSA+PSAwIG9yIGMgPT0gYicnOgotICAgICAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGNbOmkgKyAxXSkgICAgIyBBZGQgcG9ydGlvbiBvZiBsYXN0IGNodW5rCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5yZWFkKGNbaSArIDE6XSkgICAjIFB1c2ggYmFjayByZXN0IG9mIGNodW5rCisgICAgICAgICAgICAjIFJlYWQgYSBjaHVuayBvZiBkYXRhIGZyb20gdGhlIGZpbGUKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2ZwLnJlYWQoaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKKworICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ1Ziwgc2l6ZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bmNvbnN1bWVkX3RhaWwgIT0gYiIiOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhICE9IGIiIjoKKyAgICAgICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiBzbyB0aGV5IGNhbgorICAgICAgICAgICAgICAgICMgYmUgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhKQorCisgICAgICAgICAgICBpZiB1bmNvbXByZXNzICE9IGIiIjoKICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgYnVmID09IGIiIjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCiAKLSAgICAgICAgICAgICMgQXBwZW5kIGNodW5rIHRvIGxpc3QsIGRlY3JlYXNlICdzaXplJywKLSAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGMpCi0gICAgICAgICAgICBzaXplID0gc2l6ZSAtIGxlbihjKQotICAgICAgICAgICAgcmVhZHNpemUgPSBtaW4oc2l6ZSwgcmVhZHNpemUgKiAyKQotICAgICAgICBpZiByZWFkc2l6ZSA+IHNlbGYubWluX3JlYWRzaXplOgotICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSBtaW4ocmVhZHNpemUsIHNlbGYubWluX3JlYWRzaXplICogMiwgNTEyKQotICAgICAgICByZXR1cm4gYicnLmpvaW4oYnVmcykgIyBSZXR1cm4gcmVzdWx0aW5nIGxpbmUKKyAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4odW5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHVuY29tcHJlc3MKIAorICAgIGRlZiBfYWRkX3JlYWRfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fY3JjID0gemxpYi5jcmMzMihkYXRhLCBzZWxmLl9jcmMpICYgMHhmZmZmZmZmZgorICAgICAgICBzZWxmLl9zdHJlYW1fc2l6ZSA9IHNlbGYuX3N0cmVhbV9zaXplICsgbGVuKGRhdGEpCisKKyAgICBkZWYgX3JlYWRfZW9mKHNlbGYpOgorICAgICAgICAjIFdlJ3ZlIHJlYWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZQorICAgICAgICAjIFdlIGNoZWNrIHRoZSB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCisgICAgICAgICMgdW5jb21wcmVzc2VkIGRhdGEgbWF0Y2hlcyB0aGUgc3RvcmVkIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgc2l6ZQorICAgICAgICAjIHN0b3JlZCBpcyB0aGUgdHJ1ZSBmaWxlIHNpemUgbW9kIDIqKjMyLgorICAgICAgICBjcmMzMiwgaXNpemUgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBzZWxmLl9yZWFkX2V4YWN0KDgpKQorICAgICAgICBpZiBjcmMzMiAhPSBzZWxmLl9jcmM6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDUkMgY2hlY2sgZmFpbGVkICVzICE9ICVzIiAlIChoZXgoY3JjMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4KHNlbGYuX2NyYykpKQorICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLl9zdHJlYW1fc2l6ZSAmIDB4ZmZmZmZmZmYpOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiSW5jb3JyZWN0IGxlbmd0aCBvZiBkYXRhIHByb2R1Y2VkIikKKworICAgICAgICAjIEd6aXAgZmlsZXMgY2FuIGJlIHBhZGRlZCB3aXRoIHplcm9lcyBhbmQgc3RpbGwgaGF2ZSBhcmNoaXZlcy4KKyAgICAgICAgIyBDb25zdW1lIGFsbCB6ZXJvIGJ5dGVzIGFuZCBzZXQgdGhlIGZpbGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0CisgICAgICAgICMgbm9uLXplcm8gYnl0ZS4gU2VlIGh0dHA6Ly93d3cuZ3ppcC5vcmcvI2ZhcTgKKyAgICAgICAgYyA9IGIiXHgwMCIKKyAgICAgICAgd2hpbGUgYyA9PSBiIlx4MDAiOgorICAgICAgICAgICAgYyA9IHNlbGYuX2ZwLnJlYWQoMSkKKyAgICAgICAgaWYgYzoKKyAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoYykKKworICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzdXBlcigpLl9yZXdpbmQoKQorICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQogCiBkZWYgY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KToKICAgICAiIiJDb21wcmVzcyBkYXRhIGluIG9uZSBzaG90IGFuZCByZXR1cm4gdGhlIGNvbXByZXNzZWQgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvTGliL2hlYXBxLnB5IGIvTGliL2hlYXBxLnB5CmluZGV4IGQ2MTUyMzkuLjA3YWYzN2UgMTAwNjQ0Ci0tLSBhL0xpYi9oZWFwcS5weQorKysgYi9MaWIvaGVhcHEucHkKQEAgLTEyNyw4ICsxMjcsNiBAQAogX19hbGxfXyA9IFsnaGVhcHB1c2gnLCAnaGVhcHBvcCcsICdoZWFwaWZ5JywgJ2hlYXByZXBsYWNlJywgJ21lcmdlJywKICAgICAgICAgICAgJ25sYXJnZXN0JywgJ25zbWFsbGVzdCcsICdoZWFwcHVzaHBvcCddCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UsIGNvdW50LCB0ZWUsIGNoYWluCi0KIGRlZiBoZWFwcHVzaChoZWFwLCBpdGVtKToKICAgICAiIiJQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIiIiCiAgICAgaGVhcC5hcHBlbmQoaXRlbSkKQEAgLTE0MSw5ICsxMzksOCBAQAogICAgICAgICByZXR1cm5pdGVtID0gaGVhcFswXQogICAgICAgICBoZWFwWzBdID0gbGFzdGVsdAogICAgICAgICBfc2lmdHVwKGhlYXAsIDApCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQKLSAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgICAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgIHJldHVybiBsYXN0ZWx0CiAKIGRlZiBoZWFwcmVwbGFjZShoZWFwLCBpdGVtKToKICAgICAiIiJQb3AgYW5kIHJldHVybiB0aGUgY3VycmVudCBzbWFsbGVzdCB2YWx1ZSwgYW5kIGFkZCB0aGUgbmV3IGl0ZW0uCkBAIC0xNzksMTIgKzE3NiwyMiBAQAogICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICAgX3NpZnR1cCh4LCBpKQogCi1kZWYgX2hlYXBwdXNocG9wX21heChoZWFwLCBpdGVtKToKLSAgICAiIiJNYXhoZWFwIHZlcnNpb24gb2YgYSBoZWFwcHVzaCBmb2xsb3dlZCBieSBhIGhlYXBwb3AuIiIiCi0gICAgaWYgaGVhcCBhbmQgaXRlbSA8IGhlYXBbMF06Ci0gICAgICAgIGl0ZW0sIGhlYXBbMF0gPSBoZWFwWzBdLCBpdGVtCitkZWYgX2hlYXBwb3BfbWF4KGhlYXApOgorICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwb3AuIiIiCisgICAgbGFzdGVsdCA9IGhlYXAucG9wKCkgICAgIyByYWlzZXMgYXBwcm9wcmlhdGUgSW5kZXhFcnJvciBpZiBoZWFwIGlzIGVtcHR5CisgICAgaWYgaGVhcDoKKyAgICAgICAgcmV0dXJuaXRlbSA9IGhlYXBbMF0KKyAgICAgICAgaGVhcFswXSA9IGxhc3RlbHQKICAgICAgICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKLSAgICByZXR1cm4gaXRlbQorICAgICAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgIHJldHVybiBsYXN0ZWx0CisKK2RlZiBfaGVhcHJlcGxhY2VfbWF4KGhlYXAsIGl0ZW0pOgorICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwb3AgZm9sbG93ZWQgYnkgYSBoZWFwcHVzaC4iIiIKKyAgICByZXR1cm5pdGVtID0gaGVhcFswXSAgICAjIHJhaXNlcyBhcHByb3ByaWF0ZSBJbmRleEVycm9yIGlmIGhlYXAgaXMgZW1wdHkKKyAgICBoZWFwWzBdID0gaXRlbQorICAgIF9zaWZ0dXBfbWF4KGhlYXAsIDApCisgICAgcmV0dXJuIHJldHVybml0ZW0KIAogZGVmIF9oZWFwaWZ5X21heCh4KToKICAgICAiIiJUcmFuc2Zvcm0gbGlzdCBpbnRvIGEgbWF4aGVhcCwgaW4tcGxhY2UsIGluIE8obGVuKHgpKSB0aW1lLiIiIgpAQCAtMTkyLDQyICsxOTksNiBAQAogICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICAgX3NpZnR1cF9tYXgoeCwgaSkKIAotZGVmIG5sYXJnZXN0KG4sIGl0ZXJhYmxlKToKLSAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgotCi0gICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwgcmV2ZXJzZT1UcnVlKVs6bl0KLSAgICAiIiIKLSAgICBpZiBuIDwgMDoKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgIHJlc3VsdCA9IGxpc3QoaXNsaWNlKGl0LCBuKSkKLSAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgaGVhcGlmeShyZXN1bHQpCi0gICAgX2hlYXBwdXNocG9wID0gaGVhcHB1c2hwb3AKLSAgICBmb3IgZWxlbSBpbiBpdDoKLSAgICAgICAgX2hlYXBwdXNocG9wKHJlc3VsdCwgZWxlbSkKLSAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgbnNtYWxsZXN0KG4sIGl0ZXJhYmxlKToKLSAgICAiIiJGaW5kIHRoZSBuIHNtYWxsZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KLQotICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUpWzpuXQotICAgICIiIgotICAgIGlmIG4gPCAwOgotICAgICAgICByZXR1cm4gW10KLSAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgcmVzdWx0ID0gbGlzdChpc2xpY2UoaXQsIG4pKQotICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBfaGVhcGlmeV9tYXgocmVzdWx0KQotICAgIF9oZWFwcHVzaHBvcCA9IF9oZWFwcHVzaHBvcF9tYXgKLSAgICBmb3IgZWxlbSBpbiBpdDoKLSAgICAgICAgX2hlYXBwdXNocG9wKHJlc3VsdCwgZWxlbSkKLSAgICByZXN1bHQuc29ydCgpCi0gICAgcmV0dXJuIHJlc3VsdAotCiAjICdoZWFwJyBpcyBhIGhlYXAgYXQgYWxsIGluZGljZXMgPj0gc3RhcnRwb3MsIGV4Y2VwdCBwb3NzaWJseSBmb3IgcG9zLiAgcG9zCiAjIGlzIHRoZSBpbmRleCBvZiBhIGxlYWYgd2l0aCBhIHBvc3NpYmx5IG91dC1vZi1vcmRlciB2YWx1ZS4gIFJlc3RvcmUgdGhlCiAjIGhlYXAgaW52YXJpYW50LgpAQCAtMzQwLDEzICszMTEsNyBAQAogICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KICAgICBfc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpCiAKLSMgSWYgYXZhaWxhYmxlLCB1c2UgQyBpbXBsZW1lbnRhdGlvbgotdHJ5OgotICAgIGZyb20gX2hlYXBxIGltcG9ydCAqCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCi1kZWYgbWVyZ2UoKml0ZXJhYmxlcyk6CitkZWYgbWVyZ2UoKml0ZXJhYmxlcywga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpOgogICAgICcnJ01lcmdlIG11bHRpcGxlIHNvcnRlZCBpbnB1dHMgaW50byBhIHNpbmdsZSBzb3J0ZWQgb3V0cHV0LgogCiAgICAgU2ltaWxhciB0byBzb3J0ZWQoaXRlcnRvb2xzLmNoYWluKCppdGVyYWJsZXMpKSBidXQgcmV0dXJucyBhIGdlbmVyYXRvciwKQEAgLTM1Niw1MSArMzIxLDE1OCBAQAogICAgID4+PiBsaXN0KG1lcmdlKFsxLDMsNSw3XSwgWzAsMiw0LDhdLCBbNSwxMCwxNSwyMF0sIFtdLCBbMjVdKSkKICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNSwgNywgOCwgMTAsIDE1LCAyMCwgMjVdCiAKKyAgICBJZiAqa2V5KiBpcyBub3QgTm9uZSwgYXBwbGllcyBhIGtleSBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQgdG8gZGV0ZXJtaW5lCisgICAgaXRzIHNvcnQgb3JkZXIuCisKKyAgICA+Pj4gbGlzdChtZXJnZShbJ2RvZycsICdob3JzZSddLCBbJ2NhdCcsICdmaXNoJywgJ2thbmdhcm9vJ10sIGtleT1sZW4pKQorICAgIFsnZG9nJywgJ2NhdCcsICdmaXNoJywgJ2hvcnNlJywgJ2thbmdhcm9vJ10KKwogICAgICcnJwotICAgIF9oZWFwcG9wLCBfaGVhcHJlcGxhY2UsIF9TdG9wSXRlcmF0aW9uID0gaGVhcHBvcCwgaGVhcHJlcGxhY2UsIFN0b3BJdGVyYXRpb24KLSAgICBfbGVuID0gbGVuCiAKICAgICBoID0gW10KICAgICBoX2FwcGVuZCA9IGguYXBwZW5kCi0gICAgZm9yIGl0bnVtLCBpdCBpbiBlbnVtZXJhdGUobWFwKGl0ZXIsIGl0ZXJhYmxlcykpOgorCisgICAgaWYgcmV2ZXJzZToKKyAgICAgICAgX2hlYXBpZnkgPSBfaGVhcGlmeV9tYXgKKyAgICAgICAgX2hlYXBwb3AgPSBfaGVhcHBvcF9tYXgKKyAgICAgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAorICAgICAgICBkaXJlY3Rpb24gPSAtMQorICAgIGVsc2U6CisgICAgICAgIF9oZWFwaWZ5ID0gaGVhcGlmeQorICAgICAgICBfaGVhcHBvcCA9IGhlYXBwb3AKKyAgICAgICAgX2hlYXByZXBsYWNlID0gaGVhcHJlcGxhY2UKKyAgICAgICAgZGlyZWN0aW9uID0gMQorCisgICAgaWYga2V5IGlzIE5vbmU6CisgICAgICAgIGZvciBvcmRlciwgaXQgaW4gZW51bWVyYXRlKG1hcChpdGVyLCBpdGVyYWJsZXMpKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0ID0gaXQuX19uZXh0X18KKyAgICAgICAgICAgICAgICBoX2FwcGVuZChbbmV4dCgpLCBvcmRlciAqIGRpcmVjdGlvbiwgbmV4dF0pCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIF9oZWFwaWZ5KGgpCisgICAgICAgIHdoaWxlIGxlbihoKSA+IDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9yZGVyLCBuZXh0ID0gcyA9IGhbMF0KKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc1swXSA9IG5leHQoKSAgICAgICAgICAgIyByYWlzZXMgU3RvcEl0ZXJhdGlvbiB3aGVuIGV4aGF1c3RlZAorICAgICAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykgICAgICAjIHJlc3RvcmUgaGVhcCBjb25kaXRpb24KKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIF9oZWFwcG9wKGgpICAgICAgICAgICAgICAgICAjIHJlbW92ZSBlbXB0eSBpdGVyYXRvcgorICAgICAgICBpZiBoOgorICAgICAgICAgICAgIyBmYXN0IGNhc2Ugd2hlbiBvbmx5IGEgc2luZ2xlIGl0ZXJhdG9yIHJlbWFpbnMKKyAgICAgICAgICAgIHZhbHVlLCBvcmRlciwgbmV4dCA9IGhbMF0KKyAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgICAgICB5aWVsZCBmcm9tIG5leHQuX19zZWxmX18KKyAgICAgICAgcmV0dXJuCisKKyAgICBmb3Igb3JkZXIsIGl0IGluIGVudW1lcmF0ZShtYXAoaXRlciwgaXRlcmFibGVzKSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5leHQgPSBpdC5fX25leHRfXwotICAgICAgICAgICAgaF9hcHBlbmQoW25leHQoKSwgaXRudW0sIG5leHRdKQotICAgICAgICBleGNlcHQgX1N0b3BJdGVyYXRpb246CisgICAgICAgICAgICB2YWx1ZSA9IG5leHQoKQorICAgICAgICAgICAgaF9hcHBlbmQoW2tleSh2YWx1ZSksIG9yZGVyICogZGlyZWN0aW9uLCB2YWx1ZSwgbmV4dF0pCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICAgcGFzcwotICAgIGhlYXBpZnkoaCkKLQotICAgIHdoaWxlIF9sZW4oaCkgPiAxOgorICAgIF9oZWFwaWZ5KGgpCisgICAgd2hpbGUgbGVuKGgpID4gMToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB2LCBpdG51bSwgbmV4dCA9IHMgPSBoWzBdCi0gICAgICAgICAgICAgICAgeWllbGQgdgotICAgICAgICAgICAgICAgIHNbMF0gPSBuZXh0KCkgICAgICAgICAgICAgICAjIHJhaXNlcyBTdG9wSXRlcmF0aW9uIHdoZW4gZXhoYXVzdGVkCi0gICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKGgsIHMpICAgICAgICAgICMgcmVzdG9yZSBoZWFwIGNvbmRpdGlvbgotICAgICAgICBleGNlcHQgX1N0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICBfaGVhcHBvcChoKSAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIGVtcHR5IGl0ZXJhdG9yCisgICAgICAgICAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBzID0gaFswXQorICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXh0KCkKKyAgICAgICAgICAgICAgICBzWzBdID0ga2V5KHZhbHVlKQorICAgICAgICAgICAgICAgIHNbMl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShoLCBzKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIF9oZWFwcG9wKGgpCiAgICAgaWYgaDoKLSAgICAgICAgIyBmYXN0IGNhc2Ugd2hlbiBvbmx5IGEgc2luZ2xlIGl0ZXJhdG9yIHJlbWFpbnMKLSAgICAgICAgdiwgaXRudW0sIG5leHQgPSBoWzBdCi0gICAgICAgIHlpZWxkIHYKKyAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBoWzBdCisgICAgICAgIHlpZWxkIHZhbHVlCiAgICAgICAgIHlpZWxkIGZyb20gbmV4dC5fX3NlbGZfXwogCi0jIEV4dGVuZCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIG5zbWFsbGVzdCBhbmQgbmxhcmdlc3QgdG8gdXNlIGEga2V5PSBhcmd1bWVudAotX25zbWFsbGVzdCA9IG5zbWFsbGVzdAorCisjIEFsZ29yaXRobSBub3RlcyBmb3Igbmxhcmdlc3QoKSBhbmQgbnNtYWxsZXN0KCkKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBNYWtlIGEgc2luZ2xlIHBhc3Mgb3ZlciB0aGUgZGF0YSB3aGlsZSBrZWVwaW5nIHRoZSBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMKKyMgaW4gYSBoZWFwLiAgTWVtb3J5IGNvbnN1bXB0aW9uIGlzIGxpbWl0ZWQgdG8ga2VlcGluZyBrIHZhbHVlcyBpbiBhIGxpc3QuCisjCisjIE1lYXN1cmVkIHBlcmZvcm1hbmNlIGZvciByYW5kb20gaW5wdXRzOgorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGNvbXBhcmlzb25zCisjICAgIG4gaW5wdXRzICAgICBrLWV4dHJlbWUgdmFsdWVzICAoYXZlcmFnZSBvZiA1IHRyaWFscykgICAlIG1vcmUgdGhhbiBtaW4oKQorIyAtLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgICAxLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgICAgMywzMTcgICAgICAgICAgICAgICAyMzEuNyUKKyMgICAgIDEwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgICAxNCwwNDYgICAgICAgICAgICAgICAgNDAuNSUKKyMgICAgMTAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgIDEwNSw3NDkgICAgICAgICAgICAgICAgIDUuNyUKKyMgIDEsMDAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAxLDAwNyw3NTEgICAgICAgICAgICAgICAgIDAuOCUKKyMgMTAsMDAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgIDEwLDAwOSw0MDEgICAgICAgICAgICAgICAgIDAuMSUKKyMKKyMgVGhlb3JldGljYWwgbnVtYmVyIG9mIGNvbXBhcmlzb25zIGZvciBrIHNtYWxsZXN0IG9mIG4gcmFuZG9tIGlucHV0czoKKyMKKyMgU3RlcCAgIENvbXBhcmlzb25zICAgICAgICAgICAgICAgICAgQWN0aW9uCisjIC0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgMSAgICAgMS42NiAqIGsgICAgICAgICAgICAgICAgICAgICBoZWFwaWZ5IHRoZSBmaXJzdCBrLWlucHV0cworIyAgMiAgICAgbiAtIGsgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlIHJlbWFpbmluZyBlbGVtZW50cyB0byB0b3Agb2YgaGVhcAorIyAgMyAgICAgayAqICgxICsgbGcyKGspKSAqIGxuKG4vaykgICByZXBsYWNlIHRoZSB0b3Btb3N0IHZhbHVlIG9uIHRoZSBoZWFwCisjICA0ICAgICBrICogbGcyKGspIC0gKGsvMikgICAgICAgICAgIGZpbmFsIHNvcnQgb2YgdGhlIGsgbW9zdCBleHRyZW1lIHZhbHVlcworIworIyBDb21iaW5pbmcgYW5kIHNpbXBsaWZ5aW5nIGZvciBhIHJvdWdoIGVzdGltYXRlIGdpdmVzOgorIworIyAgICAgICAgY29tcGFyaXNvbnMgPSBuICsgayAqIChsb2coaywgMikgKiBsb2cobi9rKSArIGxvZyhrLCAyKSArIGxvZyhuL2spKQorIworIyBDb21wdXRpbmcgdGhlIG51bWJlciBvZiBjb21wYXJpc29ucyBmb3Igc3RlcCAzOgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAqIEZvciB0aGUgaS10aCBuZXcgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUsIHRoZSBwcm9iYWJpbGl0eSBvZiBiZWluZyBpbiB0aGUKKyMgICBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMgaXMgay9pLiAgRm9yIGV4YW1wbGUsIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgMTAxc3QKKyMgICB2YWx1ZSBzZWVuIGJlaW5nIGluIHRoZSAxMDAgbW9zdCBleHRyZW1lIHZhbHVlcyBpcyAxMDAvMTAxLgorIyAqIElmIHRoZSB2YWx1ZSBpcyBhIG5ldyBleHRyZW1lIHZhbHVlLCB0aGUgY29zdCBvZiBpbnNlcnRpbmcgaXQgaW50byB0aGUKKyMgICBoZWFwIGlzIDEgKyBsb2coaywgMikuCisjICogVGhlIHByb2JhYmlsaXR5IHRpbWVzIHRoZSBjb3N0IGdpdmVzOgorIyAgICAgICAgICAgIChrL2kpICogKDEgKyBsb2coaywgMikpCisjICogU3VtbWluZyBhY3Jvc3MgdGhlIHJlbWFpbmluZyBuLWsgZWxlbWVudHMgZ2l2ZXM6CisjICAgICAgICAgICAgc3VtKChrL2kpICogKDEgKyBsb2coaywgMikpIGZvciBpIGluIHJhbmdlKGsrMSwgbisxKSkKKyMgKiBUaGlzIHJlZHVjZXMgdG86CisjICAgICAgICAgICAgKEgobikgLSBIKGspKSAqIGsgKiAoMSArIGxvZyhrLCAyKSkKKyMgKiBXaGVyZSBIKG4pIGlzIHRoZSBuLXRoIGhhcm1vbmljIG51bWJlciBlc3RpbWF0ZWQgYnk6CisjICAgICAgICAgICAgZ2FtbWEgPSAwLjU3NzIxNTY2NDkKKyMgICAgICAgICAgICBIKG4pID0gbG9nKG4sIGUpICsgZ2FtbWEgKyAxIC8gKDIgKiBuKQorIyAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFybW9uaWNfc2VyaWVzXyhtYXRoZW1hdGljcykjUmF0ZV9vZl9kaXZlcmdlbmNlCisjICogU3Vic3RpdHV0aW5nIHRoZSBIKG4pIGZvcm11bGE6CisjICAgICAgICAgICAgY29tcGFyaXNvbnMgPSBrICogKDEgKyBsb2coaywgMikpICogKGxvZyhuL2ssIGUpICsgKDEvbiAtIDEvaykgLyAyKQorIworIyBXb3JzdC1jYXNlIGZvciBzdGVwIDM6CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW4gdGhlIHdvcnN0IGNhc2UsIHRoZSBpbnB1dCBkYXRhIGlzIHJldmVyc2VkIHNvcnRlZCBzbyB0aGF0IGV2ZXJ5IG5ldyBlbGVtZW50CisjIG11c3QgYmUgaW5zZXJ0ZWQgaW4gdGhlIGhlYXA6CisjCisjICAgICAgICAgICAgIGNvbXBhcmlzb25zID0gMS42NiAqIGsgKyBsb2coaywgMikgKiAobiAtIGspCisjCisjIEFsdGVybmF0aXZlIEFsZ29yaXRobXMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdGhlciBhbGdvcml0aG1zIHdlcmUgbm90IHVzZWQgYmVjYXVzZSB0aGV5OgorIyAxKSBUb29rIG11Y2ggbW9yZSBhdXhpbGlhcnkgbWVtb3J5LAorIyAyKSBNYWRlIG11bHRpcGxlIHBhc3NlcyBvdmVyIHRoZSBkYXRhLgorIyAzKSBNYWRlIG1vcmUgY29tcGFyaXNvbnMgaW4gY29tbW9uIGNhc2VzIChzbWFsbCBrLCBsYXJnZSBuLCBzZW1pLXJhbmRvbSBpbnB1dCkuCisjIFNlZSB0aGUgbW9yZSBkZXRhaWxlZCBjb21wYXJpc29uIG9mIGFwcHJvYWNoIGF0OgorIyBodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc1NzMtY29tcGFyZS1hbGdvcml0aG1zLWZvci1oZWFwcXNtYWxsZXN0CisKIGRlZiBuc21hbGxlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKToKICAgICAiIiJGaW5kIHRoZSBuIHNtYWxsZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KIAogICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXkpWzpuXQogICAgICIiIgotICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtaW4oKSB3aGVuIGxlbihpdGVyYWJsZSk+MAorCisgICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1pbigpCiAgICAgaWYgbiA9PSAxOgogICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgICAgIGhlYWQgPSBsaXN0KGlzbGljZShpdCwgMSkpCi0gICAgICAgIGlmIG5vdCBoZWFkOgotICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHNlbnRpbmVsID0gb2JqZWN0KCkKICAgICAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gW21pbihjaGFpbihoZWFkLCBpdCkpXQotICAgICAgICByZXR1cm4gW21pbihjaGFpbihoZWFkLCBpdCksIGtleT1rZXkpXQorICAgICAgICAgICAgcmVzdWx0ID0gbWluKGl0LCBkZWZhdWx0PXNlbnRpbmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gbWluKGl0LCBkZWZhdWx0PXNlbnRpbmVsLCBrZXk9a2V5KQorICAgICAgICByZXR1cm4gW10gaWYgcmVzdWx0IGlzIHNlbnRpbmVsIGVsc2UgW3Jlc3VsdF0KIAogICAgICMgV2hlbiBuPj1zaXplLCBpdCdzIGZhc3RlciB0byB1c2Ugc29ydGVkKCkKICAgICB0cnk6CkBAIC00MTMsMzIgKzQ4NSw1NyBAQAogCiAgICAgIyBXaGVuIGtleSBpcyBub25lLCB1c2Ugc2ltcGxlciBkZWNvcmF0aW9uCiAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgIGl0ID0gemlwKGl0ZXJhYmxlLCBjb3VudCgpKSAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgICAgIHJlc3VsdCA9IF9uc21hbGxlc3QobiwgaXQpCi0gICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgICAgICAjIHB1dCB0aGUgcmFuZ2UobikgZmlyc3Qgc28gdGhhdCB6aXAoKSBkb2Vzbid0CisgICAgICAgICMgY29uc3VtZSBvbmUgdG9vIG1hbnkgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmF0b3IKKyAgICAgICAgcmVzdWx0ID0gWyhlbGVtLCBpKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UobiksIGl0KV0KKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgX2hlYXBpZnlfbWF4KHJlc3VsdCkKKyAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgIG9yZGVyID0gbgorICAgICAgICBfaGVhcHJlcGxhY2UgPSBfaGVhcHJlcGxhY2VfbWF4CisgICAgICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICAgICAgaWYgZWxlbSA8IHRvcDoKKyAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoZWxlbSwgb3JkZXIpKQorICAgICAgICAgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICAgICAgICAgIG9yZGVyICs9IDEKKyAgICAgICAgcmVzdWx0LnNvcnQoKQorICAgICAgICByZXR1cm4gW3JbMF0gZm9yIHIgaW4gcmVzdWx0XQogCiAgICAgIyBHZW5lcmFsIGNhc2UsIHNsb3dlc3QgbWV0aG9kCi0gICAgaW4xLCBpbjIgPSB0ZWUoaXRlcmFibGUpCi0gICAgaXQgPSB6aXAobWFwKGtleSwgaW4xKSwgY291bnQoKSwgaW4yKSAgICAgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgcmVzdWx0ID0gX25zbWFsbGVzdChuLCBpdCkKLSAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICByZXN1bHQgPSBbKGtleShlbGVtKSwgaSwgZWxlbSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKG4pLCBpdCldCisgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCisgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgb3JkZXIgPSBuCisgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAorICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICBrID0ga2V5KGVsZW0pCisgICAgICAgIGlmIGsgPCB0b3A6CisgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoaywgb3JkZXIsIGVsZW0pKQorICAgICAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgICAgICBvcmRlciArPSAxCisgICAgcmVzdWx0LnNvcnQoKQorICAgIHJldHVybiBbclsyXSBmb3IgciBpbiByZXN1bHRdCiAKLV9ubGFyZ2VzdCA9IG5sYXJnZXN0CiBkZWYgbmxhcmdlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKToKICAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgogCiAgICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwga2V5PWtleSwgcmV2ZXJzZT1UcnVlKVs6bl0KICAgICAiIiIKIAotICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtYXgoKSB3aGVuIGxlbihpdGVyYWJsZSk+MAorICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtYXgoKQogICAgIGlmIG4gPT0gMToKICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICBoZWFkID0gbGlzdChpc2xpY2UoaXQsIDEpKQotICAgICAgICBpZiBub3QgaGVhZDoKLSAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBzZW50aW5lbCA9IG9iamVjdCgpCiAgICAgICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIFttYXgoY2hhaW4oaGVhZCwgaXQpKV0KLSAgICAgICAgcmV0dXJuIFttYXgoY2hhaW4oaGVhZCwgaXQpLCBrZXk9a2V5KV0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1heChpdCwgZGVmYXVsdD1zZW50aW5lbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG1heChpdCwgZGVmYXVsdD1zZW50aW5lbCwga2V5PWtleSkKKyAgICAgICAgcmV0dXJuIFtdIGlmIHJlc3VsdCBpcyBzZW50aW5lbCBlbHNlIFtyZXN1bHRdCiAKICAgICAjIFdoZW4gbj49c2l6ZSwgaXQncyBmYXN0ZXIgdG8gdXNlIHNvcnRlZCgpCiAgICAgdHJ5OgpAQCAtNDUxLDI2ICs1NDgsNjAgQEAKIAogICAgICMgV2hlbiBrZXkgaXMgbm9uZSwgdXNlIHNpbXBsZXIgZGVjb3JhdGlvbgogICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICBpdCA9IHppcChpdGVyYWJsZSwgY291bnQoMCwtMSkpICAgICAgICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgICAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgaXQpCi0gICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgICAgICByZXN1bHQgPSBbKGVsZW0sIGkpIGZvciBpLCBlbGVtIGluIHppcChyYW5nZSgwLCAtbiwgLTEpLCBpdCldCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGhlYXBpZnkocmVzdWx0KQorICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgb3JkZXIgPSAtbgorICAgICAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQorICAgICAgICBmb3IgZWxlbSBpbiBpdDoKKyAgICAgICAgICAgIGlmIHRvcCA8IGVsZW06CisgICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGVsZW0sIG9yZGVyKSkKKyAgICAgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgICAgICBvcmRlciAtPSAxCisgICAgICAgIHJlc3VsdC5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIFtyWzBdIGZvciByIGluIHJlc3VsdF0KIAogICAgICMgR2VuZXJhbCBjYXNlLCBzbG93ZXN0IG1ldGhvZAotICAgIGluMSwgaW4yID0gdGVlKGl0ZXJhYmxlKQotICAgIGl0ID0gemlwKG1hcChrZXksIGluMSksIGNvdW50KDAsLTEpLCBpbjIpICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgIHJlc3VsdCA9IF9ubGFyZ2VzdChuLCBpdCkKLSAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICByZXN1bHQgPSBbKGtleShlbGVtKSwgaSwgZWxlbSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKDAsIC1uLCAtMSksIGl0KV0KKyAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgaGVhcGlmeShyZXN1bHQpCisgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgb3JkZXIgPSAtbgorICAgIF9oZWFwcmVwbGFjZSA9IGhlYXByZXBsYWNlCisgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgIGsgPSBrZXkoZWxlbSkKKyAgICAgICAgaWYgdG9wIDwgazoKKyAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChrLCBvcmRlciwgZWxlbSkpCisgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgIG9yZGVyIC09IDEKKyAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCisgICAgcmV0dXJuIFtyWzJdIGZvciByIGluIHJlc3VsdF0KKworIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwcmVwbGFjZV9tYXgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwaWZ5X21heAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9oZWFwcSBpbXBvcnQgX2hlYXBwb3BfbWF4CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIyBTaW1wbGUgc2FuaXR5IHRlc3QKLSAgICBoZWFwID0gW10KLSAgICBkYXRhID0gWzEsIDMsIDUsIDcsIDksIDIsIDQsIDYsIDgsIDBdCi0gICAgZm9yIGl0ZW0gaW4gZGF0YToKLSAgICAgICAgaGVhcHB1c2goaGVhcCwgaXRlbSkKLSAgICBzb3J0ID0gW10KLSAgICB3aGlsZSBoZWFwOgotICAgICAgICBzb3J0LmFwcGVuZChoZWFwcG9wKGhlYXApKQotICAgIHByaW50KHNvcnQpCiAKICAgICBpbXBvcnQgZG9jdGVzdAotICAgIGRvY3Rlc3QudGVzdG1vZCgpCisgICAgcHJpbnQoZG9jdGVzdC50ZXN0bW9kKCkpCmRpZmYgLS1naXQgYS9MaWIvaHRtbC9lbnRpdGllcy5weSBiL0xpYi9odG1sL2VudGl0aWVzLnB5CmluZGV4IGY3ZGVhZTYuLjNlMTc3OGIgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL2VudGl0aWVzLnB5CisrKyBiL0xpYi9odG1sL2VudGl0aWVzLnB5CkBAIC0xLDUgKzEsOCBAQAogIiIiSFRNTCBjaGFyYWN0ZXIgZW50aXR5IHJlZmVyZW5jZXMuIiIiCiAKK19fYWxsX18gPSBbJ2h0bWw1JywgJ25hbWUyY29kZXBvaW50JywgJ2NvZGVwb2ludDJuYW1lJywgJ2VudGl0eWRlZnMnXQorCisKICMgbWFwcyB0aGUgSFRNTCBlbnRpdHkgbmFtZSB0byB0aGUgVW5pY29kZSBjb2RlIHBvaW50CiBuYW1lMmNvZGVwb2ludCA9IHsKICAgICAnQUVsaWcnOiAgICAweDAwYzYsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQUUgPSBsYXRpbiBjYXBpdGFsIGxpZ2F0dXJlIEFFLCBVKzAwQzYgSVNPbGF0MQpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGE2NTBkNWUuLjM5MGQ0Y2MgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTI5LDM1ICsyOSwxNSBAQAogcGljbG9zZSA9IHJlLmNvbXBpbGUoJz4nKQogY29tbWVudGNsb3NlID0gcmUuY29tcGlsZShyJy0tXHMqPicpCiAjIE5vdGU6Ci0jICAxKSB0aGUgc3RyaWN0IGF0dHJmaW5kIGlzbid0IHJlYWxseSBzdHJpY3QsIGJ1dCB3ZSBjYW4ndCBtYWtlIGl0Ci0jICAgICBjb3JyZWN0bHkgc3RyaWN0IHdpdGhvdXQgYnJlYWtpbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsKLSMgIDIpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCByZW1lbWJlciB0byB1cGRhdGUgbG9jYXRlc3RhcnR0YWdlbmQgdG9vOwotIyAgMykgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIGFuZC9vciBsb2NhdGVzdGFydHRhZ2VuZCB0aGUgcGFyc2VyIHdpbGwKKyMgIDEpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCByZW1lbWJlciB0byB1cGRhdGUgbG9jYXRlc3RhcnR0YWdlbmQgdG9vOworIyAgMikgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIGFuZC9vciBsb2NhdGVzdGFydHRhZ2VuZCB0aGUgcGFyc2VyIHdpbGwKICMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgotdGFnZmluZCA9IHJlLmNvbXBpbGUoJyhbYS16QS1aXVstLmEtekEtWjAtOTpfXSopKD86XHN8Lyg/IT4pKSonKQogIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW9wZW4tc3RhdGUKICMgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCiB0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgnKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCi1hdHRyZmluZCA9IHJlLmNvbXBpbGUoCi0gICAgcidccyooW2EtekEtWl9dWy0uOmEtekEtWl8wLTldKikoXHMqPVxzKicKLSAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8W15ccyJcJz08PmBdKikpPycpCiBhdHRyZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoCiAgICAgcicoKD88PVtcJyJccy9dKVteXHMvPl1bXlxzLz0+XSopKFxzKj0rXHMqJwogICAgIHInKFwnW15cJ10qXCd8IlteIl0qInwoPyFbXCciXSlbXj5cc10qKSk/KD86XHN8Lyg/IT4pKSonKQotbG9jYXRlc3RhcnR0YWdlbmQgPSByZS5jb21waWxlKHIiIiIKLSAgPFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKiAgICAgICAgICAjIHRhZyBuYW1lCi0gICg/OlxzKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGl0ZXNwYWNlIGJlZm9yZSBhdHRyaWJ1dGUgbmFtZQotICAgICg/OlthLXpBLVpfXVstLjphLXpBLVowLTlfXSogICAgICMgYXR0cmlidXRlIG5hbWUKLSAgICAgICg/OlxzKj1ccyogICAgICAgICAgICAgICAgICAgICAjIHZhbHVlIGluZGljYXRvcgotICAgICAgICAoPzonW14nXSonICAgICAgICAgICAgICAgICAgICMgTElUQS1lbmNsb3NlZCB2YWx1ZQotICAgICAgICAgIHxcIlteXCJdKlwiICAgICAgICAgICAgICAgICMgTElULWVuY2xvc2VkIHZhbHVlCi0gICAgICAgICAgfFteJ1wiPlxzXSsgICAgICAgICAgICAgICAgIyBiYXJlIHZhbHVlCi0gICAgICAgICApCi0gICAgICAgKT8KLSAgICAgKQotICAgKSoKLSAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyYWlsaW5nIHdoaXRlc3BhY2UKLSIiIiwgcmUuVkVSQk9TRSkKIGxvY2F0ZXN0YXJ0dGFnZW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyIiIiCiAgIDxbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSogICAgICAgIyB0YWcgbmFtZQogICAoPzpbXHMvXSogICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgd2hpdGVzcGFjZSBiZWZvcmUgYXR0cmlidXRlIG5hbWUKQEAgLTc5LDI1ICs1OSw2IEBACiBlbmR0YWdmaW5kID0gcmUuY29tcGlsZSgnPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQogCiAKLWNsYXNzIEhUTUxQYXJzZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIHJhaXNlZCBmb3IgYWxsIHBhcnNlIGVycm9ycy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIHBvc2l0aW9uPShOb25lLCBOb25lKSk6Ci0gICAgICAgIGFzc2VydCBtc2cKLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLSAgICAgICAgc2VsZi5saW5lbm8gPSBwb3NpdGlvblswXQotICAgICAgICBzZWxmLm9mZnNldCA9IHBvc2l0aW9uWzFdCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5tc2cKLSAgICAgICAgaWYgc2VsZi5saW5lbm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAiLCBhdCBsaW5lICVkIiAlIHNlbGYubGluZW5vCi0gICAgICAgIGlmIHNlbGYub2Zmc2V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgIiwgY29sdW1uICVkIiAlIChzZWxmLm9mZnNldCArIDEpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1fZGVmYXVsdF9zZW50aW5lbCA9IG9iamVjdCgpCiAKIGNsYXNzIEhUTUxQYXJzZXIoX21hcmt1cGJhc2UuUGFyc2VyQmFzZSk6CiAgICAgIiIiRmluZCB0YWdzIGFuZCBvdGhlciBtYXJrdXAgYW5kIGNhbGwgaGFuZGxlciBmdW5jdGlvbnMuCkBAIC0xMjMsMjcgKzg0LDEyIEBACiAKICAgICBDREFUQV9DT05URU5UX0VMRU1FTlRTID0gKCJzY3JpcHQiLCAic3R5bGUiKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1fZGVmYXVsdF9zZW50aW5lbCwgKiwKLSAgICAgICAgICAgICAgICAgY29udmVydF9jaGFycmVmcz1fZGVmYXVsdF9zZW50aW5lbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgY29udmVydF9jaGFycmVmcyBpcyBUcnVlIChkZWZhdWx0OiBGYWxzZSksIGFsbCBjaGFyYWN0ZXIgcmVmZXJlbmNlcworICAgICAgICBJZiBjb252ZXJ0X2NoYXJyZWZzIGlzIFRydWUgKHRoZSBkZWZhdWx0KSwgYWxsIGNoYXJhY3RlciByZWZlcmVuY2VzCiAgICAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBVbmljb2RlIGNoYXJhY3RlcnMuCi0gICAgICAgIElmIHN0cmljdCBpcyBzZXQgdG8gRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGUgcGFyc2VyIHdpbGwgcGFyc2UgaW52YWxpZAotICAgICAgICBtYXJrdXAsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSBzdHJpY3QgbW9kZQotICAgICAgICBhbmQgYXJndW1lbnQgYXJlIGRlcHJlY2F0ZWQuCiAgICAgICAgICIiIgotICAgICAgICBpZiBzdHJpY3QgaXMgbm90IF9kZWZhdWx0X3NlbnRpbmVsOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIHN0cmljdCBhcmd1bWVudCBhbmQgbW9kZSBhcmUgZGVwcmVjYXRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cmljdCA9IEZhbHNlICAjIGRlZmF1bHQKLSAgICAgICAgc2VsZi5zdHJpY3QgPSBzdHJpY3QKLSAgICAgICAgaWYgY29udmVydF9jaGFycmVmcyBpcyBfZGVmYXVsdF9zZW50aW5lbDoKLSAgICAgICAgICAgIGNvbnZlcnRfY2hhcnJlZnMgPSBGYWxzZSAgIyBkZWZhdWx0Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgdmFsdWUgb2YgY29udmVydF9jaGFycmVmcyB3aWxsIGJlY29tZSBUcnVlIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjMuNS4gWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHNldCB0aGUgdmFsdWUgZXhwbGljaXRseS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5jb252ZXJ0X2NoYXJyZWZzID0gY29udmVydF9jaGFycmVmcwogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMTY4LDExICsxMTQsNiBAQAogICAgICAgICAiIiJIYW5kbGUgYW55IGJ1ZmZlcmVkIGRhdGEuIiIiCiAgICAgICAgIHNlbGYuZ29haGVhZCgxKQogCi0gICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ2Vycm9yJyBtZXRob2QgaXMgZGVwcmVjYXRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByYWlzZSBIVE1MUGFyc2VFcnJvcihtZXNzYWdlLCBzZWxmLmdldHBvcygpKQotCiAgICAgX19zdGFydHRhZ190ZXh0ID0gTm9uZQogCiAgICAgZGVmIGdldF9zdGFydHRhZ190ZXh0KHNlbGYpOgpAQCAtMjI3LDEwICsxNjgsNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPD8iLCBpKToKICAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfcGkoaSkKICAgICAgICAgICAgICAgICBlbGlmIHN0YXJ0c3dpdGgoIjwhIiwgaSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfZGVjbGFyYXRpb24oaSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2h0bWxfZGVjbGFyYXRpb24oaSkKKyAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfaHRtbF9kZWNsYXJhdGlvbihpKQogICAgICAgICAgICAgICAgIGVsaWYgKGkgKyAxKSA8IG46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoIjwiKQogICAgICAgICAgICAgICAgICAgICBrID0gaSArIDEKQEAgLTIzOSw4ICsxNzcsNiBAQAogICAgICAgICAgICAgICAgIGlmIGsgPCAwOgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJFT0YgaW4gbWlkZGxlIG9mIGNvbnN0cnVjdCIpCiAgICAgICAgICAgICAgICAgICAgIGsgPSByYXdkYXRhLmZpbmQoJz4nLCBpICsgMSkKICAgICAgICAgICAgICAgICAgICAgaWYgayA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcmF3ZGF0YS5maW5kKCc8JywgaSArIDEpCkBAIC0yODIsMTMgKzIxOCwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICAjIG1hdGNoLmdyb3VwKCkgd2lsbCBjb250YWluIGF0IGxlYXN0IDIgY2hhcnMKICAgICAgICAgICAgICAgICAgICAgaWYgZW5kIGFuZCBtYXRjaC5ncm91cCgpID09IHJhd2RhdGFbaTpdOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcigiRU9GIGluIG1pZGRsZSBvZiBlbnRpdHkgb3IgY2hhciByZWYiKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbWF0Y2guZW5kKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDw9IGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHNlbGYudXBkYXRlcG9zKGksIGkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgayA9IG1hdGNoLmVuZCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDw9IGk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG4KKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzZWxmLnVwZGF0ZXBvcyhpLCBpICsgMSkKICAgICAgICAgICAgICAgICAgICAgIyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxpZiAoaSArIDEpIDwgbjoKQEAgLTM2NywxOCArMzAwLDEyIEBACiAKICAgICAgICAgIyBOb3cgcGFyc2UgdGhlIGRhdGEgYmV0d2VlbiBpKzEgYW5kIGogaW50byBhIHRhZyBhbmQgYXR0cnMKICAgICAgICAgYXR0cnMgPSBbXQotICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgIG1hdGNoID0gdGFnZmluZC5tYXRjaChyYXdkYXRhLCBpKzEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXRjaCA9IHRhZ2ZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSsxKQorICAgICAgICBtYXRjaCA9IHRhZ2ZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSsxKQogICAgICAgICBhc3NlcnQgbWF0Y2gsICd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2Vfc3RhcnR0YWcoKScKICAgICAgICAgayA9IG1hdGNoLmVuZCgpCiAgICAgICAgIHNlbGYubGFzdHRhZyA9IHRhZyA9IG1hdGNoLmdyb3VwKDEpLmxvd2VyKCkKICAgICAgICAgd2hpbGUgayA8IGVuZHBvczoKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIG0gPSBhdHRyZmluZC5tYXRjaChyYXdkYXRhLCBrKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtID0gYXR0cmZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaykKKyAgICAgICAgICAgIG0gPSBhdHRyZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBrKQogICAgICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGF0dHJuYW1lLCByZXN0LCBhdHRydmFsdWUgPSBtLmdyb3VwKDEsIDIsIDMpCkBAIC00MDEsOSArMzI4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAtIHNlbGYuX19zdGFydHRhZ190ZXh0LnJmaW5kKCJcbiIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCArIGxlbihzZWxmLl9fc3RhcnR0YWdfdGV4dCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoImp1bmsgY2hhcmFjdGVycyBpbiBzdGFydCB0YWc6ICVyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmF3ZGF0YVtrOmVuZHBvc11bOjIwXSwpKQogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YShyYXdkYXRhW2k6ZW5kcG9zXSkKICAgICAgICAgICAgIHJldHVybiBlbmRwb3MKICAgICAgICAgaWYgZW5kLmVuZHN3aXRoKCcvPicpOgpAQCAtNDE5LDEwICszNDMsNyBAQAogICAgICMgb3IgLTEgaWYgaW5jb21wbGV0ZS4KICAgICBkZWYgY2hlY2tfZm9yX3dob2xlX3N0YXJ0X3RhZyhzZWxmLCBpKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZC5tYXRjaChyYXdkYXRhLCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbSA9IGxvY2F0ZXN0YXJ0dGFnZW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkpCisgICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKQogICAgICAgICBpZiBtOgogICAgICAgICAgICAgaiA9IG0uZW5kKCkKICAgICAgICAgICAgIG5leHQgPSByYXdkYXRhW2o6aisxXQpAQCAtNDM1LDkgKzM1Niw2IEBACiAgICAgICAgICAgICAgICAgICAgICMgYnVmZmVyIGJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgICMgZWxzZSBib2d1cyBpbnB1dAotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZXBvcyhpLCBqICsgMSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcigibWFsZm9ybWVkIGVtcHR5IHN0YXJ0IHRhZyIpCiAgICAgICAgICAgICAgICAgaWYgaiA+IGk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTQ1MCw5ICszNjgsNiBAQAogICAgICAgICAgICAgICAgICMgZW5kIG9mIGlucHV0IGluIG9yIGJlZm9yZSBhdHRyaWJ1dGUgdmFsdWUsIG9yIHdlIGhhdmUgdGhlCiAgICAgICAgICAgICAgICAgIyAnLycgZnJvbSBhICcvPicgZW5kaW5nCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZXBvcyhpLCBqKQotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIm1hbGZvcm1lZCBzdGFydCB0YWciKQogICAgICAgICAgICAgaWYgaiA+IGk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICAgICAgIGVsc2U6CkBAIC00NzIsOCArMzg3LDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYuY2RhdGFfZWxlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTpndHBvc10pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGd0cG9zCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJiYWQgZW5kIHRhZzogJXIiICUgKHJhd2RhdGFbaTpndHBvc10sKSkKICAgICAgICAgICAgICMgZmluZCB0aGUgbmFtZTogdzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCiAgICAgICAgICAgICBuYW1lbWF0Y2ggPSB0YWdmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkrMikKICAgICAgICAgICAgIGlmIG5vdCBuYW1lbWF0Y2g6CkBAIC01MzksOCArNDUyLDcgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHVua25vd25fZGVjbChzZWxmLCBkYXRhKToKLSAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQorICAgICAgICBwYXNzCiAKICAgICAjIEludGVybmFsIC0tIGhlbHBlciB0byByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXIgcXVvdGluZwogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKZGlmZiAtLWdpdCBhL0xpYi9odHRwL19faW5pdF9fLnB5IGIvTGliL2h0dHAvX19pbml0X18ucHkKaW5kZXggMTk2ZDM3OC4uZDQzMzRjYyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvX19pbml0X18ucHkKKysrIGIvTGliL2h0dHAvX19pbml0X18ucHkKQEAgLTEgKzEsMTM0IEBACi0jIFRoaXMgZGlyZWN0b3J5IGlzIGEgUHl0aG9uIHBhY2thZ2UuCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KKworX19hbGxfXyA9IFsnSFRUUFN0YXR1cyddCisKK2NsYXNzIEhUVFBTdGF0dXMoSW50RW51bSk6CisgICAgIiIiSFRUUCBzdGF0dXMgY29kZXMgYW5kIHJlYXNvbiBwaHJhc2VzCisKKyAgICBTdGF0dXMgY29kZXMgZnJvbSB0aGUgZm9sbG93aW5nIFJGQ3MgYXJlIGFsbCBvYnNlcnZlZDoKKworICAgICAgICAqIFJGQyA3MjMxOiBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgKEhUVFAvMS4xKSwgb2Jzb2xldGVzIDI2MTYKKyAgICAgICAgKiBSRkMgNjU4NTogQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcworICAgICAgICAqIFJGQyAzMjI5OiBEZWx0YSBlbmNvZGluZyBpbiBIVFRQCisgICAgICAgICogUkZDIDQ5MTg6IEhUVFAgRXh0ZW5zaW9ucyBmb3IgV2ViREFWLCBvYnNvbGV0ZXMgMjUxOAorICAgICAgICAqIFJGQyA1ODQyOiBCaW5kaW5nIEV4dGVuc2lvbnMgdG8gV2ViREFWCisgICAgICAgICogUkZDIDcyMzg6IFBlcm1hbmVudCBSZWRpcmVjdAorICAgICAgICAqIFJGQyAyMjk1OiBUcmFuc3BhcmVudCBDb250ZW50IE5lZ290aWF0aW9uIGluIEhUVFAKKyAgICAgICAgKiBSRkMgMjc3NDogQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrCisgICAgIiIiCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgcGhyYXNlLCBkZXNjcmlwdGlvbj0nJyk6CisgICAgICAgIG9iaiA9IGludC5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKKworICAgICAgICBvYmoucGhyYXNlID0gcGhyYXNlCisgICAgICAgIG9iai5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCisgICAgICAgIHJldHVybiBvYmoKKworICAgICMgaW5mb3JtYXRpb25hbAorICAgIENPTlRJTlVFID0gMTAwLCAnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJworICAgIFNXSVRDSElOR19QUk9UT0NPTFMgPSAoMTAxLCAnU3dpdGNoaW5nIFByb3RvY29scycsCisgICAgICAgICAgICAnU3dpdGNoaW5nIHRvIG5ldyBwcm90b2NvbDsgb2JleSBVcGdyYWRlIGhlYWRlcicpCisgICAgUFJPQ0VTU0lORyA9IDEwMiwgJ1Byb2Nlc3NpbmcnCisKKyAgICAjIHN1Y2Nlc3MKKyAgICBPSyA9IDIwMCwgJ09LJywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBkb2N1bWVudCBmb2xsb3dzJworICAgIENSRUFURUQgPSAyMDEsICdDcmVhdGVkJywgJ0RvY3VtZW50IGNyZWF0ZWQsIFVSTCBmb2xsb3dzJworICAgIEFDQ0VQVEVEID0gKDIwMiwgJ0FjY2VwdGVkJywKKyAgICAgICAgJ1JlcXVlc3QgYWNjZXB0ZWQsIHByb2Nlc3NpbmcgY29udGludWVzIG9mZi1saW5lJykKKyAgICBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiA9ICgyMDMsCisgICAgICAgICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsICdSZXF1ZXN0IGZ1bGZpbGxlZCBmcm9tIGNhY2hlJykKKyAgICBOT19DT05URU5UID0gMjA0LCAnTm8gQ29udGVudCcsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgbm90aGluZyBmb2xsb3dzJworICAgIFJFU0VUX0NPTlRFTlQgPSAyMDUsICdSZXNldCBDb250ZW50JywgJ0NsZWFyIGlucHV0IGZvcm0gZm9yIGZ1cnRoZXIgaW5wdXQnCisgICAgUEFSVElBTF9DT05URU5UID0gMjA2LCAnUGFydGlhbCBDb250ZW50JywgJ1BhcnRpYWwgY29udGVudCBmb2xsb3dzJworICAgIE1VTFRJX1NUQVRVUyA9IDIwNywgJ011bHRpLVN0YXR1cycKKyAgICBBTFJFQURZX1JFUE9SVEVEID0gMjA4LCAnQWxyZWFkeSBSZXBvcnRlZCcKKyAgICBJTV9VU0VEID0gMjI2LCAnSU0gVXNlZCcKKworICAgICMgcmVkaXJlY3Rpb24KKyAgICBNVUxUSVBMRV9DSE9JQ0VTID0gKDMwMCwgJ011bHRpcGxlIENob2ljZXMnLAorICAgICAgICAnT2JqZWN0IGhhcyBzZXZlcmFsIHJlc291cmNlcyAtLSBzZWUgVVJJIGxpc3QnKQorICAgIE1PVkVEX1BFUk1BTkVOVExZID0gKDMwMSwgJ01vdmVkIFBlcm1hbmVudGx5JywKKyAgICAgICAgJ09iamVjdCBtb3ZlZCBwZXJtYW5lbnRseSAtLSBzZWUgVVJJIGxpc3QnKQorICAgIEZPVU5EID0gMzAyLCAnRm91bmQnLCAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcKKyAgICBTRUVfT1RIRVIgPSAzMDMsICdTZWUgT3RoZXInLCAnT2JqZWN0IG1vdmVkIC0tIHNlZSBNZXRob2QgYW5kIFVSTCBsaXN0JworICAgIE5PVF9NT0RJRklFRCA9ICgzMDQsICdOb3QgTW9kaWZpZWQnLAorICAgICAgICAnRG9jdW1lbnQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIGdpdmVuIHRpbWUnKQorICAgIFVTRV9QUk9YWSA9ICgzMDUsICdVc2UgUHJveHknLAorICAgICAgICAnWW91IG11c3QgdXNlIHByb3h5IHNwZWNpZmllZCBpbiBMb2NhdGlvbiB0byBhY2Nlc3MgdGhpcyByZXNvdXJjZScpCisgICAgVEVNUE9SQVJZX1JFRElSRUNUID0gKDMwNywgJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCisgICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JykKKyAgICBQRVJNQU5FTlRfUkVESVJFQ1QgPSAoMzA4LCAnUGVybWFuZW50IFJlZGlyZWN0JywKKyAgICAgICAgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnKQorCisgICAgIyBjbGllbnQgZXJyb3IKKyAgICBCQURfUkVRVUVTVCA9ICg0MDAsICdCYWQgUmVxdWVzdCcsCisgICAgICAgICdCYWQgcmVxdWVzdCBzeW50YXggb3IgdW5zdXBwb3J0ZWQgbWV0aG9kJykKKyAgICBVTkFVVEhPUklaRUQgPSAoNDAxLCAnVW5hdXRob3JpemVkJywKKyAgICAgICAgJ05vIHBlcm1pc3Npb24gLS0gc2VlIGF1dGhvcml6YXRpb24gc2NoZW1lcycpCisgICAgUEFZTUVOVF9SRVFVSVJFRCA9ICg0MDIsICdQYXltZW50IFJlcXVpcmVkJywKKyAgICAgICAgJ05vIHBheW1lbnQgLS0gc2VlIGNoYXJnaW5nIHNjaGVtZXMnKQorICAgIEZPUkJJRERFTiA9ICg0MDMsICdGb3JiaWRkZW4nLAorICAgICAgICAnUmVxdWVzdCBmb3JiaWRkZW4gLS0gYXV0aG9yaXphdGlvbiB3aWxsIG5vdCBoZWxwJykKKyAgICBOT1RfRk9VTkQgPSAoNDA0LCAnTm90IEZvdW5kJywKKyAgICAgICAgJ05vdGhpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gVVJJJykKKyAgICBNRVRIT0RfTk9UX0FMTE9XRUQgPSAoNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJywKKyAgICAgICAgJ1NwZWNpZmllZCBtZXRob2QgaXMgaW52YWxpZCBmb3IgdGhpcyByZXNvdXJjZScpCisgICAgTk9UX0FDQ0VQVEFCTEUgPSAoNDA2LCAnTm90IEFjY2VwdGFibGUnLAorICAgICAgICAnVVJJIG5vdCBhdmFpbGFibGUgaW4gcHJlZmVycmVkIGZvcm1hdCcpCisgICAgUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSAoNDA3LAorICAgICAgICAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAnWW91IG11c3QgYXV0aGVudGljYXRlIHdpdGggdGhpcyBwcm94eSBiZWZvcmUgcHJvY2VlZGluZycpCisgICAgUkVRVUVTVF9USU1FT1VUID0gKDQwOCwgJ1JlcXVlc3QgVGltZW91dCcsCisgICAgICAgICdSZXF1ZXN0IHRpbWVkIG91dDsgdHJ5IGFnYWluIGxhdGVyJykKKyAgICBDT05GTElDVCA9IDQwOSwgJ0NvbmZsaWN0JywgJ1JlcXVlc3QgY29uZmxpY3QnCisgICAgR09ORSA9ICg0MTAsICdHb25lJywKKyAgICAgICAgJ1VSSSBubyBsb25nZXIgZXhpc3RzIGFuZCBoYXMgYmVlbiBwZXJtYW5lbnRseSByZW1vdmVkJykKKyAgICBMRU5HVEhfUkVRVUlSRUQgPSAoNDExLCAnTGVuZ3RoIFJlcXVpcmVkJywKKyAgICAgICAgJ0NsaWVudCBtdXN0IHNwZWNpZnkgQ29udGVudC1MZW5ndGgnKQorICAgIFBSRUNPTkRJVElPTl9GQUlMRUQgPSAoNDEyLCAnUHJlY29uZGl0aW9uIEZhaWxlZCcsCisgICAgICAgICdQcmVjb25kaXRpb24gaW4gaGVhZGVycyBpcyBmYWxzZScpCisgICAgUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFID0gKDQxMywgJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCisgICAgICAgICdFbnRpdHkgaXMgdG9vIGxhcmdlJykKKyAgICBSRVFVRVNUX1VSSV9UT09fTE9ORyA9ICg0MTQsICdSZXF1ZXN0LVVSSSBUb28gTG9uZycsCisgICAgICAgICdVUkkgaXMgdG9vIGxvbmcnKQorICAgIFVOU1VQUE9SVEVEX01FRElBX1RZUEUgPSAoNDE1LCAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCisgICAgICAgICdFbnRpdHkgYm9keSBpbiB1bnN1cHBvcnRlZCBmb3JtYXQnKQorICAgIFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUgPSAoNDE2LAorICAgICAgICAnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCisgICAgICAgICdDYW5ub3Qgc2F0aXNmeSByZXF1ZXN0IHJhbmdlJykKKyAgICBFWFBFQ1RBVElPTl9GQUlMRUQgPSAoNDE3LCAnRXhwZWN0YXRpb24gRmFpbGVkJywKKyAgICAgICAgJ0V4cGVjdCBjb25kaXRpb24gY291bGQgbm90IGJlIHNhdGlzZmllZCcpCisgICAgVU5QUk9DRVNTQUJMRV9FTlRJVFkgPSA0MjIsICdVbnByb2Nlc3NhYmxlIEVudGl0eScKKyAgICBMT0NLRUQgPSA0MjMsICdMb2NrZWQnCisgICAgRkFJTEVEX0RFUEVOREVOQ1kgPSA0MjQsICdGYWlsZWQgRGVwZW5kZW5jeScKKyAgICBVUEdSQURFX1JFUVVJUkVEID0gNDI2LCAnVXBncmFkZSBSZXF1aXJlZCcKKyAgICBQUkVDT05ESVRJT05fUkVRVUlSRUQgPSAoNDI4LCAnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgJ1RoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsJykKKyAgICBUT09fTUFOWV9SRVFVRVNUUyA9ICg0MjksICdUb28gTWFueSBSZXF1ZXN0cycsCisgICAgICAgICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiAnCisgICAgICAgICdhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpJykKKyAgICBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFID0gKDQzMSwKKyAgICAgICAgJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAorICAgICAgICAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgJworICAgICAgICAnZmllbGRzIGFyZSB0b28gbGFyZ2UnKQorCisgICAgIyBzZXJ2ZXIgZXJyb3JzCisgICAgSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gKDUwMCwgJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCisgICAgICAgICdTZXJ2ZXIgZ290IGl0c2VsZiBpbiB0cm91YmxlJykKKyAgICBOT1RfSU1QTEVNRU5URUQgPSAoNTAxLCAnTm90IEltcGxlbWVudGVkJywKKyAgICAgICAgJ1NlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uJykKKyAgICBCQURfR0FURVdBWSA9ICg1MDIsICdCYWQgR2F0ZXdheScsCisgICAgICAgICdJbnZhbGlkIHJlc3BvbnNlcyBmcm9tIGFub3RoZXIgc2VydmVyL3Byb3h5JykKKyAgICBTRVJWSUNFX1VOQVZBSUxBQkxFID0gKDUwMywgJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAorICAgICAgICAnVGhlIHNlcnZlciBjYW5ub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gYSBoaWdoIGxvYWQnKQorICAgIEdBVEVXQVlfVElNRU9VVCA9ICg1MDQsICdHYXRld2F5IFRpbWVvdXQnLAorICAgICAgICAnVGhlIGdhdGV3YXkgc2VydmVyIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZScpCisgICAgSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQgPSAoNTA1LCAnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLAorICAgICAgICAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdCcpCisgICAgVkFSSUFOVF9BTFNPX05FR09USUFURVMgPSA1MDYsICdWYXJpYW50IEFsc28gTmVnb3RpYXRlcycKKyAgICBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNywgJ0luc3VmZmljaWVudCBTdG9yYWdlJworICAgIExPT1BfREVURUNURUQgPSA1MDgsICdMb29wIERldGVjdGVkJworICAgIE5PVF9FWFRFTkRFRCA9IDUxMCwgJ05vdCBFeHRlbmRlZCcKKyAgICBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gKDUxMSwKKyAgICAgICAgJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAnVGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2VzcycpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jbGllbnQucHkgYi9MaWIvaHR0cC9jbGllbnQucHkKaW5kZXggMWM2OWRjYi4uODBjODBjZiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY2xpZW50LnB5CisrKyBiL0xpYi9odHRwL2NsaWVudC5weQpAQCAtMjAsMTAgKzIwLDEyIEBACiAgICAgICB8ICggcHV0aGVhZGVyKCkgKSogIGVuZGhlYWRlcnMoKQogICAgICAgdgogICAgIFJlcXVlc3Qtc2VudAotICAgICAgfAotICAgICAgfCByZXNwb25zZSA9IGdldHJlc3BvbnNlKCkKLSAgICAgIHYKLSAgICBVbnJlYWQtcmVzcG9uc2UgICBbUmVzcG9uc2UtaGVhZGVycy1yZWFkXQorICAgICAgfFxfX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0cmVzcG9uc2UoKSByYWlzZXMKKyAgICAgIHwgcmVzcG9uc2UgPSBnZXRyZXNwb25zZSgpICAgICB8IENvbm5lY3Rpb25FcnJvcgorICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICBVbnJlYWQtcmVzcG9uc2UgICAgICAgICAgICAgICAgSWRsZQorICAgIFtSZXNwb25zZS1oZWFkZXJzLXJlYWRdCiAgICAgICB8XF9fX19fX19fX19fX19fX19fX19fCiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgfCByZXNwb25zZS5yZWFkKCkgICAgIHwgcHV0cmVxdWVzdCgpCkBAIC02OCw2ICs3MCw3IEBACiAKIGltcG9ydCBlbWFpbC5wYXJzZXIKIGltcG9ydCBlbWFpbC5tZXNzYWdlCitpbXBvcnQgaHR0cAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtODIsNyArODUsOCBAQAogICAgICAgICAgICAiVW5rbm93blRyYW5zZmVyRW5jb2RpbmciLCAiVW5pbXBsZW1lbnRlZEZpbGVNb2RlIiwKICAgICAgICAgICAgIkluY29tcGxldGVSZWFkIiwgIkludmFsaWRVUkwiLCAiSW1wcm9wZXJDb25uZWN0aW9uU3RhdGUiLAogICAgICAgICAgICAiQ2Fubm90U2VuZFJlcXVlc3QiLCAiQ2Fubm90U2VuZEhlYWRlciIsICJSZXNwb25zZU5vdFJlYWR5IiwKLSAgICAgICAgICAgIkJhZFN0YXR1c0xpbmUiLCAiTGluZVRvb0xvbmciLCAiZXJyb3IiLCAicmVzcG9uc2VzIl0KKyAgICAgICAgICAgIkJhZFN0YXR1c0xpbmUiLCAiTGluZVRvb0xvbmciLCAiUmVtb3RlRGlzY29ubmVjdGVkIiwgImVycm9yIiwKKyAgICAgICAgICAgInJlc3BvbnNlcyJdCiAKIEhUVFBfUE9SVCA9IDgwCiBIVFRQU19QT1JUID0gNDQzCkBAIC05NCwxMjIgKzk4LDEzIEBACiBfQ1NfUkVRX1NUQVJURUQgPSAnUmVxdWVzdC1zdGFydGVkJwogX0NTX1JFUV9TRU5UID0gJ1JlcXVlc3Qtc2VudCcKIAotIyBzdGF0dXMgY29kZXMKLSMgaW5mb3JtYXRpb25hbAotQ09OVElOVUUgPSAxMDAKLVNXSVRDSElOR19QUk9UT0NPTFMgPSAxMDEKLVBST0NFU1NJTkcgPSAxMDIKIAotIyBzdWNjZXNzZnVsCi1PSyA9IDIwMAotQ1JFQVRFRCA9IDIwMQotQUNDRVBURUQgPSAyMDIKLU5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OID0gMjAzCi1OT19DT05URU5UID0gMjA0Ci1SRVNFVF9DT05URU5UID0gMjA1Ci1QQVJUSUFMX0NPTlRFTlQgPSAyMDYKLU1VTFRJX1NUQVRVUyA9IDIwNwotSU1fVVNFRCA9IDIyNgorIyBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CitnbG9iYWxzKCkudXBkYXRlKGh0dHAuSFRUUFN0YXR1cy5fX21lbWJlcnNfXykKIAotIyByZWRpcmVjdGlvbgotTVVMVElQTEVfQ0hPSUNFUyA9IDMwMAotTU9WRURfUEVSTUFORU5UTFkgPSAzMDEKLUZPVU5EID0gMzAyCi1TRUVfT1RIRVIgPSAzMDMKLU5PVF9NT0RJRklFRCA9IDMwNAotVVNFX1BST1hZID0gMzA1Ci1URU1QT1JBUllfUkVESVJFQ1QgPSAzMDcKLQotIyBjbGllbnQgZXJyb3IKLUJBRF9SRVFVRVNUID0gNDAwCi1VTkFVVEhPUklaRUQgPSA0MDEKLVBBWU1FTlRfUkVRVUlSRUQgPSA0MDIKLUZPUkJJRERFTiA9IDQwMwotTk9UX0ZPVU5EID0gNDA0Ci1NRVRIT0RfTk9UX0FMTE9XRUQgPSA0MDUKLU5PVF9BQ0NFUFRBQkxFID0gNDA2Ci1QUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9IDQwNwotUkVRVUVTVF9USU1FT1VUID0gNDA4Ci1DT05GTElDVCA9IDQwOQotR09ORSA9IDQxMAotTEVOR1RIX1JFUVVJUkVEID0gNDExCi1QUkVDT05ESVRJT05fRkFJTEVEID0gNDEyCi1SRVFVRVNUX0VOVElUWV9UT09fTEFSR0UgPSA0MTMKLVJFUVVFU1RfVVJJX1RPT19MT05HID0gNDE0Ci1VTlNVUFBPUlRFRF9NRURJQV9UWVBFID0gNDE1Ci1SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFID0gNDE2Ci1FWFBFQ1RBVElPTl9GQUlMRUQgPSA0MTcKLVVOUFJPQ0VTU0FCTEVfRU5USVRZID0gNDIyCi1MT0NLRUQgPSA0MjMKLUZBSUxFRF9ERVBFTkRFTkNZID0gNDI0Ci1VUEdSQURFX1JFUVVJUkVEID0gNDI2Ci1QUkVDT05ESVRJT05fUkVRVUlSRUQgPSA0MjgKLVRPT19NQU5ZX1JFUVVFU1RTID0gNDI5Ci1SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFID0gNDMxCi0KLSMgc2VydmVyIGVycm9yCi1JTlRFUk5BTF9TRVJWRVJfRVJST1IgPSA1MDAKLU5PVF9JTVBMRU1FTlRFRCA9IDUwMQotQkFEX0dBVEVXQVkgPSA1MDIKLVNFUlZJQ0VfVU5BVkFJTEFCTEUgPSA1MDMKLUdBVEVXQVlfVElNRU9VVCA9IDUwNAotSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQgPSA1MDUKLUlOU1VGRklDSUVOVF9TVE9SQUdFID0gNTA3Ci1OT1RfRVhURU5ERUQgPSA1MTAKLU5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSA1MTEKLQorIyBhbm90aGVyIGhhY2sgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCi1yZXNwb25zZXMgPSB7Ci0gICAgMTAwOiAnQ29udGludWUnLAotICAgIDEwMTogJ1N3aXRjaGluZyBQcm90b2NvbHMnLAotCi0gICAgMjAwOiAnT0snLAotICAgIDIwMTogJ0NyZWF0ZWQnLAotICAgIDIwMjogJ0FjY2VwdGVkJywKLSAgICAyMDM6ICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsCi0gICAgMjA0OiAnTm8gQ29udGVudCcsCi0gICAgMjA1OiAnUmVzZXQgQ29udGVudCcsCi0gICAgMjA2OiAnUGFydGlhbCBDb250ZW50JywKLQotICAgIDMwMDogJ011bHRpcGxlIENob2ljZXMnLAotICAgIDMwMTogJ01vdmVkIFBlcm1hbmVudGx5JywKLSAgICAzMDI6ICdGb3VuZCcsCi0gICAgMzAzOiAnU2VlIE90aGVyJywKLSAgICAzMDQ6ICdOb3QgTW9kaWZpZWQnLAotICAgIDMwNTogJ1VzZSBQcm94eScsCi0gICAgMzA2OiAnKFVudXNlZCknLAotICAgIDMwNzogJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCi0KLSAgICA0MDA6ICdCYWQgUmVxdWVzdCcsCi0gICAgNDAxOiAnVW5hdXRob3JpemVkJywKLSAgICA0MDI6ICdQYXltZW50IFJlcXVpcmVkJywKLSAgICA0MDM6ICdGb3JiaWRkZW4nLAotICAgIDQwNDogJ05vdCBGb3VuZCcsCi0gICAgNDA1OiAnTWV0aG9kIE5vdCBBbGxvd2VkJywKLSAgICA0MDY6ICdOb3QgQWNjZXB0YWJsZScsCi0gICAgNDA3OiAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAotICAgIDQwODogJ1JlcXVlc3QgVGltZW91dCcsCi0gICAgNDA5OiAnQ29uZmxpY3QnLAotICAgIDQxMDogJ0dvbmUnLAotICAgIDQxMTogJ0xlbmd0aCBSZXF1aXJlZCcsCi0gICAgNDEyOiAnUHJlY29uZGl0aW9uIEZhaWxlZCcsCi0gICAgNDEzOiAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywKLSAgICA0MTQ6ICdSZXF1ZXN0LVVSSSBUb28gTG9uZycsCi0gICAgNDE1OiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCi0gICAgNDE2OiAnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCi0gICAgNDE3OiAnRXhwZWN0YXRpb24gRmFpbGVkJywKLSAgICA0Mjg6ICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAotICAgIDQyOTogJ1RvbyBNYW55IFJlcXVlc3RzJywKLSAgICA0MzE6ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKLQotICAgIDUwMDogJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCi0gICAgNTAxOiAnTm90IEltcGxlbWVudGVkJywKLSAgICA1MDI6ICdCYWQgR2F0ZXdheScsCi0gICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCi0gICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKLSAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCi0gICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCi19CityZXNwb25zZXMgPSB7djogdi5waHJhc2UgZm9yIHYgaW4gaHR0cC5IVFRQU3RhdHVzLl9fbWVtYmVyc19fLnZhbHVlcygpfQogCiAjIG1heGltYWwgYW1vdW50IG9mIGRhdGEgdG8gcmVhZCBhdCBvbmUgdGltZSBpbiBfc2FmZV9yZWFkCiBNQVhBTU9VTlQgPSAxMDQ4NTc2CkBAIC0zMDUsNyArMjAwLDcgQEAKICAgICByZXR1cm4gZW1haWwucGFyc2VyLlBhcnNlcihfY2xhc3M9X2NsYXNzKS5wYXJzZXN0cihoc3RyaW5nKQogCiAKLWNsYXNzIEhUVFBSZXNwb25zZShpby5SYXdJT0Jhc2UpOgorY2xhc3MgSFRUUFJlc3BvbnNlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKIAogICAgICMgU2VlIFJGQyAyNjE2IHNlYyAxOS42IGFuZCBSRkMgMTk0NSBzZWMgNiBmb3IgZGV0YWlscy4KIApAQCAtMzUzLDcgKzI0OCw4IEBACiAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgIyBQcmVzdW1hYmx5LCB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiBiZWZvcmUKICAgICAgICAgICAgICMgc2VuZGluZyBhIHZhbGlkIHJlc3BvbnNlLgotICAgICAgICAgICAgcmFpc2UgQmFkU3RhdHVzTGluZShsaW5lKQorICAgICAgICAgICAgcmFpc2UgUmVtb3RlRGlzY29ubmVjdGVkKCJSZW1vdGUgZW5kIGNsb3NlZCBjb25uZWN0aW9uIHdpdGhvdXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiByZXNwb25zZSIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZlcnNpb24sIHN0YXR1cywgcmVhc29uID0gbGluZS5zcGxpdChOb25lLCAyKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTUzMiw5ICs0MjgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBiIiIKIAogICAgICAgICBpZiBhbXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIEFtb3VudCBpcyBnaXZlbiwgc28gY2FsbCBiYXNlIGNsYXNzIHZlcnNpb24KLSAgICAgICAgICAgICMgKHdoaWNoIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHNlbGYucmVhZGludG8pCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoSFRUUFJlc3BvbnNlLCBzZWxmKS5yZWFkKGFtdCkKKyAgICAgICAgICAgICMgQW1vdW50IGlzIGdpdmVuLCBpbXBsZW1lbnQgdXNpbmcgcmVhZGludG8KKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoYW10KQorICAgICAgICAgICAgbiA9IHNlbGYucmVhZGludG8oYikKKyAgICAgICAgICAgIHJldHVybiBtZW1vcnl2aWV3KGIpWzpuXS50b2J5dGVzKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQW1vdW50IGlzIG5vdCBnaXZlbiAodW5ib3VuZGVkIHJlYWQpIHNvIHdlIG11c3QgY2hlY2sgc2VsZi5sZW5ndGgKICAgICAgICAgICAgICMgYW5kIHNlbGYuY2h1bmtlZApAQCAtNjE0LDcxICs1MTEsNjcgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICBkZWYgX2dldF9jaHVua19sZWZ0KHNlbGYpOgorICAgICAgICAjIHJldHVybiBzZWxmLmNodW5rX2xlZnQsIHJlYWRpbmcgYSBuZXcgY2h1bmsgaWYgbmVjZXNzYXJ5LgorICAgICAgICAjIGNodW5rX2xlZnQgPT0gMDogYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBjaHVuaywgbmVlZCB0byBjbG9zZSBpdAorICAgICAgICAjIGNodW5rX2xlZnQgPT0gTm9uZTogTm8gY3VycmVudCBjaHVuaywgc2hvdWxkIHJlYWQgbmV4dC4KKyAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm9uLXplcm8gb3IgTm9uZSBpZiB0aGUgbGFzdCBjaHVuayBoYXMKKyAgICAgICAgIyBiZWVuIHJlYWQuCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKKyAgICAgICAgaWYgbm90IGNodW5rX2xlZnQ6ICMgQ2FuIGJlIDAgb3IgTm9uZQorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFdlIGFyZSBhdCB0aGUgZW5kIG9mIGNodW5rLiBkaWNhcmQgY2h1bmsgZW5kCisgICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnKQorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgbGFzdCBjaHVuazogMSooIjAiKSBbIGNodW5rLWV4dGVuc2lvbiBdIENSTEYKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorICAgICAgICAgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQKKyAgICAgICAgcmV0dXJuIGNodW5rX2xlZnQKKwogICAgIGRlZiBfcmVhZGFsbF9jaHVua2VkKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKICAgICAgICAgdmFsdWUgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQotICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKLQotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQotCi0gICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCi0gICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQotCi0gICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IDAKKyAgICAgICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKKyAgICAgICAgZXhjZXB0IEluY29tcGxldGVSZWFkOgorICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQogCiAgICAgZGVmIF9yZWFkaW50b19jaHVua2VkKHNlbGYsIGIpOgogICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKLQogICAgICAgICB0b3RhbF9ieXRlcyA9IDAKICAgICAgICAgbXZiID0gbWVtb3J5dmlldyhiKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMoYlswOnRvdGFsX2J5dGVzXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKKyAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcwogCi0gICAgICAgICAgICBpZiBsZW4obXZiKSA8IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgotICAgICAgICAgICAgZWxpZiBsZW4obXZiKSA9PSBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKLSAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6Y2h1bmtfbGVmdF0KKyAgICAgICAgICAgICAgICBpZiBsZW4obXZiKSA8PSBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KKworICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzpjaHVua19sZWZ0XQogICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKHRlbXBfbXZiKQogICAgICAgICAgICAgICAgIG12YiA9IG12YltuOl0KICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCisgICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gMAogCi0gICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgotICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCi0gICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQotCi0gICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCi0KLSAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKLSAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCi0KLSAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCisgICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZDoKKyAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQogCiAgICAgZGVmIF9zYWZlX3JlYWQoc2VsZiwgYW10KToKICAgICAgICAgIiIiUmVhZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCwgY29tcGVuc2F0aW5nIGZvciBwYXJ0aWFsIHJlYWRzLgpAQCAtNzE5LDYgKzYxMiw3MyBAQAogICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgogICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKIAorICAgIGRlZiByZWFkMShzZWxmLCBuPS0xKToKKyAgICAgICAgIiIiUmVhZCB3aXRoIGF0IG1vc3Qgb25lIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwuICBJZiBhdCBsZWFzdCBvbmUKKyAgICAgICAgYnl0ZSBpcyBidWZmZXJlZCwgcmV0dXJuIHRoYXQgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZSBvciBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZDFfY2h1bmtlZChuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWQxKG4pCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgaWYgbiA+PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIHNvbWUgaW1wbGVtZW50YXRpb25zLCBsaWtlIEJ1ZmZlcmVkUmVhZGVyLCBkb24ndCBzdXBwb3J0IC0xCisgICAgICAgICAgICAjIFJlYWQgYW4gYXJiaXRyYXJpbHkgc2VsZWN0ZWQgbGFyZ2Vpc2ggY2h1bmsuCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWQxKDE2KjEwMjQpCisgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIG46CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHBlZWsoc2VsZiwgbj0tMSk6CisgICAgICAgICMgSGF2aW5nIHRoaXMgZW5hYmxlcyBJT0Jhc2UucmVhZGxpbmUoKSB0byByZWFkIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgIyBieXRlIGF0IGEgdGltZQorICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgc2VsZi5jaHVua2VkOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BlZWtfY2h1bmtlZChuKQorICAgICAgICByZXR1cm4gc2VsZi5mcC5wZWVrKG4pCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ9LTEpOgorICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgc2VsZi5jaHVua2VkOgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBJT0Jhc2UgcmVhZGxpbmUgd2hpY2ggdXNlcyBwZWVrKCkgYW5kIHJlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkucmVhZGxpbmUobGltaXQpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZnAucmVhZGxpbmUobGltaXQpCisgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIGxpbWl0OgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcmVhZDFfY2h1bmtlZChzZWxmLCBuKToKKyAgICAgICAgIyBTdHJpY3RseSBzcGVha2luZywgX2dldF9jaHVua19sZWZ0KCkgbWF5IGNhdXNlIG1vcmUgdGhhbiBvbmUgcmVhZCwKKyAgICAgICAgIyBidXQgdGhhdCBpcyBvaywgc2luY2UgdGhhdCBpcyB0byBzYXRpc2Z5IHRoZSBjaHVua2VkIHByb3RvY29sLgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmUgb3IgbiA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJworICAgICAgICBpZiBub3QgKDAgPD0gbiA8PSBjaHVua19sZWZ0KToKKyAgICAgICAgICAgIG4gPSBjaHVua19sZWZ0ICMgaWYgbiBpcyBuZWdhdGl2ZSBvciBsYXJnZXIgdGhhbiBjaHVua19sZWZ0CisgICAgICAgIHJlYWQgPSBzZWxmLmZwLnJlYWQxKG4pCisgICAgICAgIHNlbGYuY2h1bmtfbGVmdCAtPSBsZW4ocmVhZCkKKyAgICAgICAgaWYgbm90IHJlYWQ6CisgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChiIiIpCisgICAgICAgIHJldHVybiByZWFkCisKKyAgICBkZWYgX3BlZWtfY2h1bmtlZChzZWxmLCBuKToKKyAgICAgICAgIyBTdHJpY3RseSBzcGVha2luZywgX2dldF9jaHVua19sZWZ0KCkgbWF5IGNhdXNlIG1vcmUgdGhhbiBvbmUgcmVhZCwKKyAgICAgICAgIyBidXQgdGhhdCBpcyBvaywgc2luY2UgdGhhdCBpcyB0byBzYXRpc2Z5IHRoZSBjaHVua2VkIHByb3RvY29sLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICBleGNlcHQgSW5jb21wbGV0ZVJlYWQ6CisgICAgICAgICAgICByZXR1cm4gYicnICMgcGVlayBkb2Vzbid0IHdvcnJ5IGFib3V0IHByb3RvY29sCisgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBiJycgIyBlb2YKKyAgICAgICAgIyBwZWVrIGlzIGFsbG93ZWQgdG8gcmV0dXJuIG1vcmUgdGhhbiByZXF1ZXN0ZWQuICBKdXN0IHJlcXVlc3QgdGhlCisgICAgICAgICMgZW50aXJlIGNodW5rLCBhbmQgdHJ1bmNhdGUgd2hhdCB3ZSBnZXQuCisgICAgICAgIHJldHVybiBzZWxmLmZwLnBlZWsoY2h1bmtfbGVmdClbOmNodW5rX2xlZnRdCisKICAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5mcC5maWxlbm8oKQogCkBAIC03NjIsMTQgKzcyMiw2IEBACiAgICAgZGVmYXVsdF9wb3J0ID0gSFRUUF9QT1JUCiAgICAgYXV0b19vcGVuID0gMQogICAgIGRlYnVnbGV2ZWwgPSAwCi0gICAgIyBUQ1AgTWF4aW11bSBTZWdtZW50IFNpemUgKE1TUykgaXMgZGV0ZXJtaW5lZCBieSB0aGUgVENQIHN0YWNrIG9uCi0gICAgIyBhIHBlci1jb25uZWN0aW9uIGJhc2lzLiAgVGhlcmUgaXMgbm8gc2ltcGxlIGFuZCBlZmZpY2llbnQKLSAgICAjIHBsYXRmb3JtIGluZGVwZW5kZW50IG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgdGhlIE1TUywgc28KLSAgICAjIGluc3RlYWQgYSByZWFzb25hYmxlIGVzdGltYXRlIGlzIGNob3Nlbi4gIFRoZSBnZXRzb2Nrb3B0KCkKLSAgICAjIGludGVyZmFjZSB1c2luZyB0aGUgVENQX01BWFNFRyBwYXJhbWV0ZXIgbWF5IGJlIGEgc3VpdGFibGUKLSAgICAjIGFwcHJvYWNoIG9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMuIEEgdmFsdWUgb2YgMTZLaUIgaXMgY2hvc2VuCi0gICAgIyBhcyBhIHJlYXNvbmFibGUgZXN0aW1hdGUgb2YgdGhlIG1heGltdW0gTVNTLgotICAgIG1zcyA9IDE2Mzg0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC04NTEsNyArODAzLDcgQEAKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlc3BvbnNlX2NsYXNzKHNlbGYuc29jaywgbWV0aG9kPXNlbGYuX21ldGhvZCkKICAgICAgICAgKHZlcnNpb24sIGNvZGUsIG1lc3NhZ2UpID0gcmVzcG9uc2UuX3JlYWRfc3RhdHVzKCkKIAotICAgICAgICBpZiBjb2RlICE9IDIwMDoKKyAgICAgICAgaWYgY29kZSAhPSBodHRwLkhUVFBTdGF0dXMuT0s6CiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIlR1bm5lbCBjb25uZWN0aW9uIGZhaWxlZDogJWQgJXMiICUgKGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnN0cmlwKCkpKQpAQCAtODY1LDEwICs4MTcsMTQgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgcHJpbnQoJ2hlYWRlcjonLCBsaW5lLmRlY29kZSgpKQorCiAgICAgZGVmIGNvbm5lY3Qoc2VsZik6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIGhvc3QgYW5kIHBvcnQgc3BlY2lmaWVkIGluIF9faW5pdF9fLiIiIgotICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LHNlbGYucG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCwgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAoc2VsZi5ob3N0LHNlbGYucG9ydCksIHNlbGYudGltZW91dCwgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgc2VsZi5zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLCBzb2NrZXQuVENQX05PREVMQVksIDEpCiAKICAgICAgICAgaWYgc2VsZi5fdHVubmVsX2hvc3Q6CiAgICAgICAgICAgICBzZWxmLl90dW5uZWwoKQpAQCAtOTUxLDE5ICs5MDcsOSBAQAogICAgICAgICBzZWxmLl9idWZmZXIuZXh0ZW5kKChiIiIsIGIiIikpCiAgICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KLSAgICAgICAgIyBJZiBtc2cgYW5kIG1lc3NhZ2VfYm9keSBhcmUgc2VudCBpbiBhIHNpbmdsZSBzZW5kKCkgY2FsbCwKLSAgICAgICAgIyBpdCB3aWxsIGF2b2lkIHBlcmZvcm1hbmNlIHByb2JsZW1zIGNhdXNlZCBieSB0aGUgaW50ZXJhY3Rpb24KLSAgICAgICAgIyBiZXR3ZWVuIGRlbGF5ZWQgYWNrIGFuZCB0aGUgTmFnbGUgYWxnb3JpdGhtLiBIb3dldmVyLAotICAgICAgICAjIHRoZXJlIGlzIG5vIHBlcmZvcm1hbmNlIGdhaW4gaWYgdGhlIG1lc3NhZ2UgaXMgbGFyZ2VyCi0gICAgICAgICMgdGhhbiBNU1MgKGFuZCB0aGVyZSBpcyBhIG1lbW9yeSBwZW5hbHR5IGZvciB0aGUgbWVzc2FnZQotICAgICAgICAjIGNvcHkpLgotICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2VfYm9keSwgYnl0ZXMpIGFuZCBsZW4obWVzc2FnZV9ib2R5KSA8IHNlbGYubXNzOgotICAgICAgICAgICAgbXNnICs9IG1lc3NhZ2VfYm9keQotICAgICAgICAgICAgbWVzc2FnZV9ib2R5ID0gTm9uZQorCiAgICAgICAgIHNlbGYuc2VuZChtc2cpCiAgICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgbWVzc2FnZV9ib2R5IHdhcyBub3QgYSBzdHJpbmcgKGkuZS4gaXQgaXMgYSBmaWxlKSwgYW5kCi0gICAgICAgICAgICAjIHdlIG11c3QgcnVuIHRoZSByaXNrIG9mIE5hZ2xlLgogICAgICAgICAgICAgc2VsZi5zZW5kKG1lc3NhZ2VfYm9keSkKIAogICAgIGRlZiBwdXRyZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBza2lwX2hvc3Q9MCwgc2tpcF9hY2NlcHRfZW5jb2Rpbmc9MCk6CkBAIC0xMjI0LDcgKzExNzAsMTEgQEAKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXNwb25zZV9jbGFzcyhzZWxmLnNvY2ssIG1ldGhvZD1zZWxmLl9tZXRob2QpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UuYmVnaW4oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJlZ2luKCkKKyAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS53aWxsX2Nsb3NlICE9IF9VTktOT1dOCiAgICAgICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfSURMRQogCkBAIC0xMzI3LDcgKzEyNzcsOCBAQAogICAgICAgICAgICAgZSA9ICcsICVpIG1vcmUgZXhwZWN0ZWQnICUgc2VsZi5leHBlY3RlZAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZSA9ICcnCi0gICAgICAgIHJldHVybiAnSW5jb21wbGV0ZVJlYWQoJWkgYnl0ZXMgcmVhZCVzKScgJSAobGVuKHNlbGYucGFydGlhbCksIGUpCisgICAgICAgIHJldHVybiAnJXMoJWkgYnl0ZXMgcmVhZCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYucGFydGlhbCksIGUpCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiByZXByKHNlbGYpCiAKQEAgLTEzNTUsNSArMTMwNiwxMCBAQAogICAgICAgICBIVFRQRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICJnb3QgbW9yZSB0aGFuICVkIGJ5dGVzIHdoZW4gcmVhZGluZyAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChfTUFYTElORSwgbGluZV90eXBlKSkKIAorY2xhc3MgUmVtb3RlRGlzY29ubmVjdGVkKENvbm5lY3Rpb25SZXNldEVycm9yLCBCYWRTdGF0dXNMaW5lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIEJhZFN0YXR1c0xpbmUuX19pbml0X18oc2VsZiwgIiIpCisgICAgICAgIENvbm5lY3Rpb25SZXNldEVycm9yLl9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpCisKICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiBlcnJvciA9IEhUVFBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCBiZmM2YWU5Li5kNTRmNThhIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC04MjEsNyArODIxLDcgQEAKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIlcz0lcyIgJSAobmFtZSwgcmVwcihhdHRyKSkpCiAgICAgICAgIGFyZ3MuYXBwZW5kKCJyZXN0PSVzIiAlIHJlcHIoc2VsZi5fcmVzdCkpCiAgICAgICAgIGFyZ3MuYXBwZW5kKCJyZmMyMTA5PSVzIiAlIHJlcHIoc2VsZi5yZmMyMTA5KSkKLSAgICAgICAgcmV0dXJuICJDb29raWUoJXMpIiAlICIsICIuam9pbihhcmdzKQorICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICIsICIuam9pbihhcmdzKSkKIAogCiBjbGFzcyBDb29raWVQb2xpY3k6CkBAIC0xOTk5LDcgKzE5OTksNiBAQAogCiAgICAgICAgIG1hZ2ljID0gZi5yZWFkbGluZSgpCiAgICAgICAgIGlmIG5vdCBzZWxmLm1hZ2ljX3JlLnNlYXJjaChtYWdpYyk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlIExvYWRFcnJvcigKICAgICAgICAgICAgICAgICAiJXIgZG9lcyBub3QgbG9vayBsaWtlIGEgTmV0c2NhcGUgZm9ybWF0IGNvb2tpZXMgZmlsZSIgJQogICAgICAgICAgICAgICAgIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggNDgyZTYwMS4uZmRhMDJiNyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC0xMzgsNiArMTM4LDEyIEBACiBfc2VtaXNwYWNlam9pbiA9ICc7ICcuam9pbgogX3NwYWNlam9pbiA9ICcgJy5qb2luCiAKK2RlZiBfd2Fybl9kZXByZWNhdGVkX3NldHRlcihzZXR0ZXIpOgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIG1zZyA9ICgnVGhlIC4lcyBzZXR0ZXIgaXMgZGVwcmVjYXRlZC4gVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIHJlYWQtb25seSBpbiAnCisgICAgICAgICAgICdmdXR1cmUgcmVsZWFzZXMuIFBsZWFzZSB1c2UgdGhlIHNldCgpIG1ldGhvZCBpbnN0ZWFkLicgJSBzZXR0ZXIpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0zKQorCiAjCiAjIERlZmluZSBhbiBleGNlcHRpb24gdmlzaWJsZSB0byBFeHRlcm5hbCBtb2R1bGVzCiAjCkBAIC0xNTEsODggKzE1NywzNiBAQAogIyBpbnRvIGEgNCBjaGFyYWN0ZXIgc2VxdWVuY2U6IGEgZm9yd2FyZC1zbGFzaCBmb2xsb3dlZCBieSB0aGUKICMgdGhyZWUtZGlnaXQgb2N0YWwgZXF1aXZhbGVudCBvZiB0aGUgY2hhcmFjdGVyLiAgQW55ICdcJyBvciAnIicgaXMKICMgcXVvdGVkIHdpdGggYSBwcmVjZWVkaW5nICdcJyBzbGFzaC4KKyMgQmVjYXVzZSBvZiB0aGUgd2F5IGJyb3dzZXJzIHJlYWxseSBoYW5kbGUgY29va2llcyAoYXMgb3Bwb3NlZCB0byB3aGF0CisjIHRoZSBSRkMgc2F5cykgd2UgYWxzbyBlbmNvZGUgIiwiIGFuZCAiOyIuCiAjCiAjIFRoZXNlIGFyZSB0YWtlbiBmcm9tIFJGQzIwNjggYW5kIFJGQzIxMDkuCiAjICAgICAgIF9MZWdhbENoYXJzICAgICAgIGlzIHRoZSBsaXN0IG9mIGNoYXJzIHdoaWNoIGRvbid0IHJlcXVpcmUgIidzCiAjICAgICAgIF9UcmFuc2xhdG9yICAgICAgIGhhc2gtdGFibGUgZm9yIGZhc3QgcXVvdGluZwogIwotX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKLV9UcmFuc2xhdG9yICAgICAgID0gewotICAgICdcMDAwJyA6ICdcXDAwMCcsICAnXDAwMScgOiAnXFwwMDEnLCAgJ1wwMDInIDogJ1xcMDAyJywKLSAgICAnXDAwMycgOiAnXFwwMDMnLCAgJ1wwMDQnIDogJ1xcMDA0JywgICdcMDA1JyA6ICdcXDAwNScsCi0gICAgJ1wwMDYnIDogJ1xcMDA2JywgICdcMDA3JyA6ICdcXDAwNycsICAnXDAxMCcgOiAnXFwwMTAnLAotICAgICdcMDExJyA6ICdcXDAxMScsICAnXDAxMicgOiAnXFwwMTInLCAgJ1wwMTMnIDogJ1xcMDEzJywKLSAgICAnXDAxNCcgOiAnXFwwMTQnLCAgJ1wwMTUnIDogJ1xcMDE1JywgICdcMDE2JyA6ICdcXDAxNicsCi0gICAgJ1wwMTcnIDogJ1xcMDE3JywgICdcMDIwJyA6ICdcXDAyMCcsICAnXDAyMScgOiAnXFwwMjEnLAotICAgICdcMDIyJyA6ICdcXDAyMicsICAnXDAyMycgOiAnXFwwMjMnLCAgJ1wwMjQnIDogJ1xcMDI0JywKLSAgICAnXDAyNScgOiAnXFwwMjUnLCAgJ1wwMjYnIDogJ1xcMDI2JywgICdcMDI3JyA6ICdcXDAyNycsCi0gICAgJ1wwMzAnIDogJ1xcMDMwJywgICdcMDMxJyA6ICdcXDAzMScsICAnXDAzMicgOiAnXFwwMzInLAotICAgICdcMDMzJyA6ICdcXDAzMycsICAnXDAzNCcgOiAnXFwwMzQnLCAgJ1wwMzUnIDogJ1xcMDM1JywKLSAgICAnXDAzNicgOiAnXFwwMzYnLCAgJ1wwMzcnIDogJ1xcMDM3JywKK19MZWdhbENoYXJzID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIiEjJCUmJyorLS5eX2B8fjoiCitfVW5lc2NhcGVkQ2hhcnMgPSBfTGVnYWxDaGFycyArICcgKCkvPD0+P0BbXXt9JwogCi0gICAgIyBCZWNhdXNlIG9mIHRoZSB3YXkgYnJvd3NlcnMgcmVhbGx5IGhhbmRsZSBjb29raWVzIChhcyBvcHBvc2VkCi0gICAgIyB0byB3aGF0IHRoZSBSRkMgc2F5cykgd2UgYWxzbyBlbmNvZGUgLCBhbmQgOworX1RyYW5zbGF0b3IgPSB7bjogJ1xcJTAzbycgJSBuCisgICAgICAgICAgICAgICBmb3IgbiBpbiBzZXQocmFuZ2UoMjU2KSkgLSBzZXQobWFwKG9yZCwgX1VuZXNjYXBlZENoYXJzKSl9CitfVHJhbnNsYXRvci51cGRhdGUoeworICAgIG9yZCgnIicpOiAnXFwiJywKKyAgICBvcmQoJ1xcJyk6ICdcXFxcJywKK30pCiAKLSAgICAnLCcgOiAnXFwwNTQnLCAnOycgOiAnXFwwNzMnLAorX2lzX2xlZ2FsX2tleSA9IHJlLmNvbXBpbGUoJ1slc10rJyAlIF9MZWdhbENoYXJzKS5mdWxsbWF0Y2gKIAotICAgICciJyA6ICdcXCInLCAgICAgICAnXFwnIDogJ1xcXFwnLAotCi0gICAgJ1wxNzcnIDogJ1xcMTc3JywgICdcMjAwJyA6ICdcXDIwMCcsICAnXDIwMScgOiAnXFwyMDEnLAotICAgICdcMjAyJyA6ICdcXDIwMicsICAnXDIwMycgOiAnXFwyMDMnLCAgJ1wyMDQnIDogJ1xcMjA0JywKLSAgICAnXDIwNScgOiAnXFwyMDUnLCAgJ1wyMDYnIDogJ1xcMjA2JywgICdcMjA3JyA6ICdcXDIwNycsCi0gICAgJ1wyMTAnIDogJ1xcMjEwJywgICdcMjExJyA6ICdcXDIxMScsICAnXDIxMicgOiAnXFwyMTInLAotICAgICdcMjEzJyA6ICdcXDIxMycsICAnXDIxNCcgOiAnXFwyMTQnLCAgJ1wyMTUnIDogJ1xcMjE1JywKLSAgICAnXDIxNicgOiAnXFwyMTYnLCAgJ1wyMTcnIDogJ1xcMjE3JywgICdcMjIwJyA6ICdcXDIyMCcsCi0gICAgJ1wyMjEnIDogJ1xcMjIxJywgICdcMjIyJyA6ICdcXDIyMicsICAnXDIyMycgOiAnXFwyMjMnLAotICAgICdcMjI0JyA6ICdcXDIyNCcsICAnXDIyNScgOiAnXFwyMjUnLCAgJ1wyMjYnIDogJ1xcMjI2JywKLSAgICAnXDIyNycgOiAnXFwyMjcnLCAgJ1wyMzAnIDogJ1xcMjMwJywgICdcMjMxJyA6ICdcXDIzMScsCi0gICAgJ1wyMzInIDogJ1xcMjMyJywgICdcMjMzJyA6ICdcXDIzMycsICAnXDIzNCcgOiAnXFwyMzQnLAotICAgICdcMjM1JyA6ICdcXDIzNScsICAnXDIzNicgOiAnXFwyMzYnLCAgJ1wyMzcnIDogJ1xcMjM3JywKLSAgICAnXDI0MCcgOiAnXFwyNDAnLCAgJ1wyNDEnIDogJ1xcMjQxJywgICdcMjQyJyA6ICdcXDI0MicsCi0gICAgJ1wyNDMnIDogJ1xcMjQzJywgICdcMjQ0JyA6ICdcXDI0NCcsICAnXDI0NScgOiAnXFwyNDUnLAotICAgICdcMjQ2JyA6ICdcXDI0NicsICAnXDI0NycgOiAnXFwyNDcnLCAgJ1wyNTAnIDogJ1xcMjUwJywKLSAgICAnXDI1MScgOiAnXFwyNTEnLCAgJ1wyNTInIDogJ1xcMjUyJywgICdcMjUzJyA6ICdcXDI1MycsCi0gICAgJ1wyNTQnIDogJ1xcMjU0JywgICdcMjU1JyA6ICdcXDI1NScsICAnXDI1NicgOiAnXFwyNTYnLAotICAgICdcMjU3JyA6ICdcXDI1NycsICAnXDI2MCcgOiAnXFwyNjAnLCAgJ1wyNjEnIDogJ1xcMjYxJywKLSAgICAnXDI2MicgOiAnXFwyNjInLCAgJ1wyNjMnIDogJ1xcMjYzJywgICdcMjY0JyA6ICdcXDI2NCcsCi0gICAgJ1wyNjUnIDogJ1xcMjY1JywgICdcMjY2JyA6ICdcXDI2NicsICAnXDI2NycgOiAnXFwyNjcnLAotICAgICdcMjcwJyA6ICdcXDI3MCcsICAnXDI3MScgOiAnXFwyNzEnLCAgJ1wyNzInIDogJ1xcMjcyJywKLSAgICAnXDI3MycgOiAnXFwyNzMnLCAgJ1wyNzQnIDogJ1xcMjc0JywgICdcMjc1JyA6ICdcXDI3NScsCi0gICAgJ1wyNzYnIDogJ1xcMjc2JywgICdcMjc3JyA6ICdcXDI3NycsICAnXDMwMCcgOiAnXFwzMDAnLAotICAgICdcMzAxJyA6ICdcXDMwMScsICAnXDMwMicgOiAnXFwzMDInLCAgJ1wzMDMnIDogJ1xcMzAzJywKLSAgICAnXDMwNCcgOiAnXFwzMDQnLCAgJ1wzMDUnIDogJ1xcMzA1JywgICdcMzA2JyA6ICdcXDMwNicsCi0gICAgJ1wzMDcnIDogJ1xcMzA3JywgICdcMzEwJyA6ICdcXDMxMCcsICAnXDMxMScgOiAnXFwzMTEnLAotICAgICdcMzEyJyA6ICdcXDMxMicsICAnXDMxMycgOiAnXFwzMTMnLCAgJ1wzMTQnIDogJ1xcMzE0JywKLSAgICAnXDMxNScgOiAnXFwzMTUnLCAgJ1wzMTYnIDogJ1xcMzE2JywgICdcMzE3JyA6ICdcXDMxNycsCi0gICAgJ1wzMjAnIDogJ1xcMzIwJywgICdcMzIxJyA6ICdcXDMyMScsICAnXDMyMicgOiAnXFwzMjInLAotICAgICdcMzIzJyA6ICdcXDMyMycsICAnXDMyNCcgOiAnXFwzMjQnLCAgJ1wzMjUnIDogJ1xcMzI1JywKLSAgICAnXDMyNicgOiAnXFwzMjYnLCAgJ1wzMjcnIDogJ1xcMzI3JywgICdcMzMwJyA6ICdcXDMzMCcsCi0gICAgJ1wzMzEnIDogJ1xcMzMxJywgICdcMzMyJyA6ICdcXDMzMicsICAnXDMzMycgOiAnXFwzMzMnLAotICAgICdcMzM0JyA6ICdcXDMzNCcsICAnXDMzNScgOiAnXFwzMzUnLCAgJ1wzMzYnIDogJ1xcMzM2JywKLSAgICAnXDMzNycgOiAnXFwzMzcnLCAgJ1wzNDAnIDogJ1xcMzQwJywgICdcMzQxJyA6ICdcXDM0MScsCi0gICAgJ1wzNDInIDogJ1xcMzQyJywgICdcMzQzJyA6ICdcXDM0MycsICAnXDM0NCcgOiAnXFwzNDQnLAotICAgICdcMzQ1JyA6ICdcXDM0NScsICAnXDM0NicgOiAnXFwzNDYnLCAgJ1wzNDcnIDogJ1xcMzQ3JywKLSAgICAnXDM1MCcgOiAnXFwzNTAnLCAgJ1wzNTEnIDogJ1xcMzUxJywgICdcMzUyJyA6ICdcXDM1MicsCi0gICAgJ1wzNTMnIDogJ1xcMzUzJywgICdcMzU0JyA6ICdcXDM1NCcsICAnXDM1NScgOiAnXFwzNTUnLAotICAgICdcMzU2JyA6ICdcXDM1NicsICAnXDM1NycgOiAnXFwzNTcnLCAgJ1wzNjAnIDogJ1xcMzYwJywKLSAgICAnXDM2MScgOiAnXFwzNjEnLCAgJ1wzNjInIDogJ1xcMzYyJywgICdcMzYzJyA6ICdcXDM2MycsCi0gICAgJ1wzNjQnIDogJ1xcMzY0JywgICdcMzY1JyA6ICdcXDM2NScsICAnXDM2NicgOiAnXFwzNjYnLAotICAgICdcMzY3JyA6ICdcXDM2NycsICAnXDM3MCcgOiAnXFwzNzAnLCAgJ1wzNzEnIDogJ1xcMzcxJywKLSAgICAnXDM3MicgOiAnXFwzNzInLCAgJ1wzNzMnIDogJ1xcMzczJywgICdcMzc0JyA6ICdcXDM3NCcsCi0gICAgJ1wzNzUnIDogJ1xcMzc1JywgICdcMzc2JyA6ICdcXDM3NicsICAnXDM3NycgOiAnXFwzNzcnCi0gICAgfQotCi1kZWYgX3F1b3RlKHN0ciwgTGVnYWxDaGFycz1fTGVnYWxDaGFycyk6CitkZWYgX3F1b3RlKHN0cik6CiAgICAgciIiIlF1b3RlIGEgc3RyaW5nIGZvciB1c2UgaW4gYSBjb29raWUgaGVhZGVyLgogCiAgICAgSWYgdGhlIHN0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRvdWJsZS1xdW90ZWQsIHRoZW4ganVzdCByZXR1cm4gdGhlCiAgICAgc3RyaW5nLiAgT3RoZXJ3aXNlLCBzdXJyb3VuZCB0aGUgc3RyaW5nIGluIGRvdWJsZXF1b3RlcyBhbmQgcXVvdGUKICAgICAod2l0aCBhIFwpIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICAiIiIKLSAgICBpZiBhbGwoYyBpbiBMZWdhbENoYXJzIGZvciBjIGluIHN0cik6CisgICAgaWYgc3RyIGlzIE5vbmUgb3IgX2lzX2xlZ2FsX2tleShzdHIpOgogICAgICAgICByZXR1cm4gc3RyCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuICciJyArIF9udWxsam9pbihfVHJhbnNsYXRvci5nZXQocywgcykgZm9yIHMgaW4gc3RyKSArICciJworICAgICAgICByZXR1cm4gJyInICsgc3RyLnRyYW5zbGF0ZShfVHJhbnNsYXRvcikgKyAnIicKIAogCiBfT2N0YWxQYXR0ID0gcmUuY29tcGlsZShyIlxcWzAtM11bMC03XVswLTddIikKQEAgLTI0MSw3ICsxOTUsNyBAQAogZGVmIF91bnF1b3RlKHN0cik6CiAgICAgIyBJZiB0aGVyZSBhcmVuJ3QgYW55IGRvdWJsZXF1b3RlcywKICAgICAjIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IHNwZWNpYWwgY2hhcmFjdGVycy4gIFNlZSBSRkMgMjEwOS4KLSAgICBpZiBsZW4oc3RyKSA8IDI6CisgICAgaWYgc3RyIGlzIE5vbmUgb3IgbGVuKHN0cikgPCAyOgogICAgICAgICByZXR1cm4gc3RyCiAgICAgaWYgc3RyWzBdICE9ICciJyBvciBzdHJbLTFdICE9ICciJzoKICAgICAgICAgcmV0dXJuIHN0cgpAQCAtMzM5LDMzICsyOTMsMTA4IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzCi0gICAgICAgIHNlbGYua2V5ID0gc2VsZi52YWx1ZSA9IHNlbGYuY29kZWRfdmFsdWUgPSBOb25lCisgICAgICAgIHNlbGYuX2tleSA9IHNlbGYuX3ZhbHVlID0gc2VsZi5fY29kZWRfdmFsdWUgPSBOb25lCiAKICAgICAgICAgIyBTZXQgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fcmVzZXJ2ZWQ6CiAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgIiIpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga2V5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2V5CisKKyAgICBAa2V5LnNldHRlcgorICAgIGRlZiBrZXkoc2VsZiwga2V5KToKKyAgICAgICAgX3dhcm5fZGVwcmVjYXRlZF9zZXR0ZXIoJ2tleScpCisgICAgICAgIHNlbGYuX2tleSA9IGtleQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKKworICAgIEB2YWx1ZS5zZXR0ZXIKKyAgICBkZWYgdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBfd2Fybl9kZXByZWNhdGVkX3NldHRlcigndmFsdWUnKQorICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29kZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb2RlZF92YWx1ZQorCisgICAgQGNvZGVkX3ZhbHVlLnNldHRlcgorICAgIGRlZiBjb2RlZF92YWx1ZShzZWxmLCBjb2RlZF92YWx1ZSk6CisgICAgICAgIF93YXJuX2RlcHJlY2F0ZWRfc2V0dGVyKCdjb2RlZF92YWx1ZScpCisgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID0gY29kZWRfdmFsdWUKKwogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBLLCBWKToKICAgICAgICAgSyA9IEsubG93ZXIoKQogICAgICAgICBpZiBub3QgSyBpbiBzZWxmLl9yZXNlcnZlZDoKLSAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIEF0dHJpYnV0ZSAlcyIgJSBLKQorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgYXR0cmlidXRlICVyIiAlIChLLCkpCiAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwgSywgVikKIAorICAgIGRlZiBzZXRkZWZhdWx0KHNlbGYsIGtleSwgdmFsPU5vbmUpOgorICAgICAgICBrZXkgPSBrZXkubG93ZXIoKQorICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuX3Jlc2VydmVkOgorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgYXR0cmlidXRlICVyIiAlIChrZXksKSkKKyAgICAgICAgcmV0dXJuIGRpY3Quc2V0ZGVmYXVsdChzZWxmLCBrZXksIHZhbCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgbW9yc2VsKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobW9yc2VsLCBNb3JzZWwpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiAoZGljdC5fX2VxX18oc2VsZiwgbW9yc2VsKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9PSBtb3JzZWwuX3ZhbHVlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2tleSA9PSBtb3JzZWwuX2tleSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9PSBtb3JzZWwuX2NvZGVkX3ZhbHVlKQorCisgICAgX19uZV9fID0gb2JqZWN0Ll9fbmVfXworCisgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IE1vcnNlbCgpCisgICAgICAgIGRpY3QudXBkYXRlKG1vcnNlbCwgc2VsZikKKyAgICAgICAgbW9yc2VsLl9fZGljdF9fLnVwZGF0ZShzZWxmLl9fZGljdF9fKQorICAgICAgICByZXR1cm4gbW9yc2VsCisKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHZhbHVlcyk6CisgICAgICAgIGRhdGEgPSB7fQorICAgICAgICBmb3Iga2V5LCB2YWwgaW4gZGljdCh2YWx1ZXMpLml0ZW1zKCk6CisgICAgICAgICAgICBrZXkgPSBrZXkubG93ZXIoKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLl9yZXNlcnZlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKGtleSwpKQorICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsCisgICAgICAgIGRpY3QudXBkYXRlKHNlbGYsIGRhdGEpCisKICAgICBkZWYgaXNSZXNlcnZlZEtleShzZWxmLCBLKToKICAgICAgICAgcmV0dXJuIEsubG93ZXIoKSBpbiBzZWxmLl9yZXNlcnZlZAogCiAgICAgZGVmIHNldChzZWxmLCBrZXksIHZhbCwgY29kZWRfdmFsLCBMZWdhbENoYXJzPV9MZWdhbENoYXJzKToKLSAgICAgICAgIyBGaXJzdCB3ZSB2ZXJpZnkgdGhhdCB0aGUga2V5IGlzbid0IGEgcmVzZXJ2ZWQgd29yZAotICAgICAgICAjIFNlY29uZCB3ZSBtYWtlIHN1cmUgaXQgb25seSBjb250YWlucyBsZWdhbCBjaGFyYWN0ZXJzCisgICAgICAgIGlmIExlZ2FsQ2hhcnMgIT0gX0xlZ2FsQ2hhcnM6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0xlZ2FsQ2hhcnMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQsIGlnbm9yZWQgYW5kIHdpbGwgJworICAgICAgICAgICAgICAgICdiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4nLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorCiAgICAgICAgIGlmIGtleS5sb3dlcigpIGluIHNlbGYuX3Jlc2VydmVkOgotICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkF0dGVtcHQgdG8gc2V0IGEgcmVzZXJ2ZWQga2V5OiAlcyIgJSBrZXkpCi0gICAgICAgIGlmIGFueShjIG5vdCBpbiBMZWdhbENoYXJzIGZvciBjIGluIGtleSk6Ci0gICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSWxsZWdhbCBrZXkgdmFsdWU6ICVzIiAlIGtleSkKKyAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCdBdHRlbXB0IHRvIHNldCBhIHJlc2VydmVkIGtleSAlcicgJSAoa2V5LCkpCisgICAgICAgIGlmIG5vdCBfaXNfbGVnYWxfa2V5KGtleSk6CisgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcignSWxsZWdhbCBrZXkgJXInICUgKGtleSwpKQogCiAgICAgICAgICMgSXQncyBhIGdvb2Qga2V5LCBzbyBzYXZlIGl0LgotICAgICAgICBzZWxmLmtleSA9IGtleQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsCi0gICAgICAgIHNlbGYuY29kZWRfdmFsdWUgPSBjb2RlZF92YWwKKyAgICAgICAgc2VsZi5fa2V5ID0ga2V5CisgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsCisgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID0gY29kZWRfdmFsCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgJ2tleSc6IHNlbGYuX2tleSwKKyAgICAgICAgICAgICd2YWx1ZSc6IHNlbGYuX3ZhbHVlLAorICAgICAgICAgICAgJ2NvZGVkX3ZhbHVlJzogc2VsZi5fY29kZWRfdmFsdWUsCisgICAgICAgIH0KKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9rZXkgPSBzdGF0ZVsna2V5J10KKyAgICAgICAgc2VsZi5fdmFsdWUgPSBzdGF0ZVsndmFsdWUnXQorICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9IHN0YXRlWydjb2RlZF92YWx1ZSddCiAKICAgICBkZWYgb3V0cHV0KHNlbGYsIGF0dHJzPU5vbmUsIGhlYWRlcj0iU2V0LUNvb2tpZToiKToKICAgICAgICAgcmV0dXJuICIlcyAlcyIgJSAoaGVhZGVyLCBzZWxmLk91dHB1dFN0cmluZyhhdHRycykpCkBAIC0zNzMsOCArNDAyLDcgQEAKICAgICBfX3N0cl9fID0gb3V0cHV0CiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzOiAlcz0lcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmtleSwgcmVwcihzZWxmLnZhbHVlKSkKKyAgICAgICAgcmV0dXJuICc8JXM6ICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuT3V0cHV0U3RyaW5nKCkpCiAKICAgICBkZWYganNfb3V0cHV0KHNlbGYsIGF0dHJzPU5vbmUpOgogICAgICAgICAjIFByaW50IGphdmFzY3JpcHQKQEAgLTQwOCwxMCArNDM2LDkgQEAKICAgICAgICAgICAgICAgICBhcHBlbmQoIiVzPSVzIiAlIChzZWxmLl9yZXNlcnZlZFtrZXldLCBfZ2V0ZGF0ZSh2YWx1ZSkpKQogICAgICAgICAgICAgZWxpZiBrZXkgPT0gIm1heC1hZ2UiIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JWQiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIHZhbHVlKSkKLSAgICAgICAgICAgIGVsaWYga2V5ID09ICJzZWN1cmUiOgotICAgICAgICAgICAgICAgIGFwcGVuZChzdHIoc2VsZi5fcmVzZXJ2ZWRba2V5XSkpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAiaHR0cG9ubHkiOgotICAgICAgICAgICAgICAgIGFwcGVuZChzdHIoc2VsZi5fcmVzZXJ2ZWRba2V5XSkpCisgICAgICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9mbGFnczoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHN0cihzZWxmLl9yZXNlcnZlZFtrZXldKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXBwZW5kKCIlcz0lcyIgJSAoc2VsZi5fcmVzZXJ2ZWRba2V5XSwgdmFsdWUpKQogCkBAIC01MzQsMTAgKzU2MSwxNyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiBfX3BhcnNlX3N0cmluZyhzZWxmLCBzdHIsIHBhdHQ9X0Nvb2tpZVBhdHRlcm4pOgotICAgICAgICBpID0gMCAgICAgICAgICAgICMgT3VyIHN0YXJ0aW5nIHBvaW50Ci0gICAgICAgIG4gPSBsZW4oc3RyKSAgICAgIyBMZW5ndGggb2Ygc3RyaW5nCi0gICAgICAgIE0gPSBOb25lICAgICAgICAgIyBjdXJyZW50IG1vcnNlbAorICAgICAgICBpID0gMCAgICAgICAgICAgICAgICAgIyBPdXIgc3RhcnRpbmcgcG9pbnQKKyAgICAgICAgbiA9IGxlbihzdHIpICAgICAgICAgICMgTGVuZ3RoIG9mIHN0cmluZworICAgICAgICBwYXJzZWRfaXRlbXMgPSBbXSAgICAgIyBQYXJzZWQgKHR5cGUsIGtleSwgdmFsdWUpIHRyaXBsZXMKKyAgICAgICAgbW9yc2VsX3NlZW4gPSBGYWxzZSAgICMgQSBrZXk9dmFsdWUgcGFpciB3YXMgcHJldmlvdXNseSBlbmNvdW50ZXJlZAogCisgICAgICAgIFRZUEVfQVRUUklCVVRFID0gMQorICAgICAgICBUWVBFX0tFWVZBTFVFID0gMgorCisgICAgICAgICMgV2UgZmlyc3QgcGFyc2UgdGhlIHdob2xlIGNvb2tpZSBzdHJpbmcgYW5kIHJlamVjdCBpdCBpZiBpdCdzCisgICAgICAgICMgc3ludGFjdGljYWxseSBpbnZhbGlkICh0aGlzIGhlbHBzIGF2b2lkIHNvbWUgY2xhc3NlcyBvZiBpbmplY3Rpb24KKyAgICAgICAgIyBhdHRhY2tzKS4KICAgICAgICAgd2hpbGUgMCA8PSBpIDwgbjoKICAgICAgICAgICAgICMgU3RhcnQgbG9va2luZyBmb3IgYSBjb29raWUKICAgICAgICAgICAgIG1hdGNoID0gcGF0dC5tYXRjaChzdHIsIGkpCkBAIC01NDgsMjIgKzU4Miw0MSBAQAogICAgICAgICAgICAga2V5LCB2YWx1ZSA9IG1hdGNoLmdyb3VwKCJrZXkiKSwgbWF0Y2guZ3JvdXAoInZhbCIpCiAgICAgICAgICAgICBpID0gbWF0Y2guZW5kKDApCiAKLSAgICAgICAgICAgICMgUGFyc2UgdGhlIGtleSwgdmFsdWUgaW4gY2FzZSBpdCdzIG1ldGFpbmZvCiAgICAgICAgICAgICBpZiBrZXlbMF0gPT0gIiQiOgotICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGF0dHJpYnV0ZXMgd2hpY2ggcGVydGFpbiB0byB0aGUgY29va2llCi0gICAgICAgICAgICAgICAgIyBtZWNoYW5pc20gYXMgYSB3aG9sZS4gIFNlZSBSRkMgMjEwOS4KLSAgICAgICAgICAgICAgICAjIChEb2VzIGFueW9uZSBjYXJlPykKLSAgICAgICAgICAgICAgICBpZiBNOgotICAgICAgICAgICAgICAgICAgICBNW2tleVsxOl1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBpZiBub3QgbW9yc2VsX3NlZW46CisgICAgICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGF0dHJpYnV0ZXMgd2hpY2ggcGVydGFpbiB0byB0aGUgY29va2llCisgICAgICAgICAgICAgICAgICAgICMgbWVjaGFuaXNtIGFzIGEgd2hvbGUsIHN1Y2ggYXMgIiRWZXJzaW9uIi4KKyAgICAgICAgICAgICAgICAgICAgIyBTZWUgUkZDIDI5NjUuIChEb2VzIGFueW9uZSBjYXJlPykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5WzE6XSwgdmFsdWUpKQogICAgICAgICAgICAgZWxpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX3Jlc2VydmVkOgotICAgICAgICAgICAgICAgIGlmIE06Ci0gICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX2ZsYWdzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ba2V5XSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBub3QgbW9yc2VsX3NlZW46CisgICAgICAgICAgICAgICAgICAgICMgSW52YWxpZCBjb29raWUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGtleS5sb3dlcigpIGluIE1vcnNlbC5fZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5LCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ba2V5XSA9IF91bnF1b3RlKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBJbnZhbGlkIGNvb2tpZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfQVRUUklCVVRFLCBrZXksIF91bnF1b3RlKHZhbHVlKSkpCiAgICAgICAgICAgICBlbGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSBzZWxmLnZhbHVlX2RlY29kZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0tFWVZBTFVFLCBrZXksIHNlbGYudmFsdWVfZGVjb2RlKHZhbHVlKSkpCisgICAgICAgICAgICAgICAgbW9yc2VsX3NlZW4gPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSW52YWxpZCBjb29raWUgc3RyaW5nCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBUaGUgY29va2llIHN0cmluZyBpcyB2YWxpZCwgYXBwbHkgaXQuCisgICAgICAgIE0gPSBOb25lICAgICAgICAgIyBjdXJyZW50IG1vcnNlbAorICAgICAgICBmb3IgdHAsIGtleSwgdmFsdWUgaW4gcGFyc2VkX2l0ZW1zOgorICAgICAgICAgICAgaWYgdHAgPT0gVFlQRV9BVFRSSUJVVEU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IE0gaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBNW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgdHAgPT0gVFlQRV9LRVlWQUxVRQorICAgICAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSB2YWx1ZQogICAgICAgICAgICAgICAgIHNlbGYuX19zZXQoa2V5LCBydmFsLCBjdmFsKQogICAgICAgICAgICAgICAgIE0gPSBzZWxmW2tleV0KIApkaWZmIC0tZ2l0IGEvTGliL2h0dHAvc2VydmVyLnB5IGIvTGliL2h0dHAvc2VydmVyLnB5CmluZGV4IDQ3NjU1ZTcuLmZkMTNiZTMgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL3NlcnZlci5weQorKysgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKQEAgLTEwMyw2ICsxMDMsOCBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBhcmdwYXJzZQogCitmcm9tIGh0dHAgaW1wb3J0IEhUVFBTdGF0dXMKKwogCiAjIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQogREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gIiIiXApAQCAtMjgxLDcgKzI4Myw5IEBACiAgICAgICAgIGlmIGxlbih3b3JkcykgPT0gMzoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGgsIHZlcnNpb24gPSB3b3JkcwogICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYmFzZV92ZXJzaW9uX251bWJlciA9IHZlcnNpb24uc3BsaXQoJy8nLCAxKVsxXQpAQCAtMjk2LDI1ICszMDAsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gaW50KHZlcnNpb25fbnVtYmVyWzBdKSwgaW50KHZlcnNpb25fbnVtYmVyWzFdKQogICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMSwgMSkgYW5kIHNlbGYucHJvdG9jb2xfdmVyc2lvbiA+PSAiSFRUUC8xLjEiOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IEZhbHNlCiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDUwNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCBWZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgVmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAyOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCA9IHdvcmRzCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCiAgICAgICAgICAgICBpZiBjb21tYW5kICE9ICdHRVQnOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgSFRUUC8wLjkgcmVxdWVzdCB0eXBlICglcikiICUgY29tbWFuZCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICJCYWQgSFRUUC8wLjkgcmVxdWVzdCB0eXBlICglcikiICUgY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxpZiBub3Qgd29yZHM6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJCYWQgcmVxdWVzdCBzeW50YXggKCVyKSIgJSByZXF1ZXN0bGluZSkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCBzeW50YXggKCVyKSIgJSByZXF1ZXN0bGluZSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLmNvbW1hbmQsIHNlbGYucGF0aCwgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gPSBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uCiAKQEAgLTMyMyw3ICszMzMsOSBAQAogICAgICAgICAgICAgc2VsZi5oZWFkZXJzID0gaHR0cC5jbGllbnQucGFyc2VfaGVhZGVycyhzZWxmLnJmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCiAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZzoKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJMaW5lIHRvbyBsb25nIikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGNvbm50eXBlID0gc2VsZi5oZWFkZXJzLmdldCgnQ29ubmVjdGlvbicsICIiKQpAQCAtMzU1LDcgKzM2Nyw3IEBACiAgICAgICAgIEZhbHNlLgogCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Vfb25seSgxMDApCisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZV9vbmx5KEhUVFBTdGF0dXMuQ09OVElOVUUpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC0zNzMsNyArMzg1LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RsaW5lID0gJycKICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfdmVyc2lvbiA9ICcnCiAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gJycKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDE0KQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLlJFUVVFU1RfVVJJX1RPT19MT05HKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgbm90IHNlbGYucmF3X3JlcXVlc3RsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKQEAgLTM4Myw3ICszOTUsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbW5hbWUgPSAnZG9fJyArIHNlbGYuY29tbWFuZAogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgbW5hbWUpOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig1MDEsICJVbnN1cHBvcnRlZCBtZXRob2QgKCVyKSIgJSBzZWxmLmNvbW1hbmQpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCwKKyAgICAgICAgICAgICAgICAgICAgIlVuc3VwcG9ydGVkIG1ldGhvZCAoJXIpIiAlIHNlbGYuY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgbW5hbWUpCiAgICAgICAgICAgICBtZXRob2QoKQpAQCAtNDM4LDcgKzQ1MiwxMSBAQAogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1MZW5ndGgnLCBpbnQobGVuKGJvZHkpKSkKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgIGlmIHNlbGYuY29tbWFuZCAhPSAnSEVBRCcgYW5kIGNvZGUgPj0gMjAwIGFuZCBjb2RlIG5vdCBpbiAoMjA0LCAzMDQpOgorCisgICAgICAgIGlmIChzZWxmLmNvbW1hbmQgIT0gJ0hFQUQnIGFuZAorICAgICAgICAgICAgICAgIGNvZGUgPj0gMjAwIGFuZAorICAgICAgICAgICAgICAgIGNvZGUgbm90IGluICgKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT19DT05URU5ULCBIVFRQU3RhdHVzLk5PVF9NT0RJRklFRCkpOgogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShib2R5KQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKQEAgLTQ5OSw3ICs1MTcsOCBAQAogICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBzZW5kX3Jlc3BvbnNlKCkuCiAKICAgICAgICAgIiIiCi0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBIVFRQU3RhdHVzKToKKyAgICAgICAgICAgIGNvZGUgPSBjb2RlLnZhbHVlCiAgICAgICAgIHNlbGYubG9nX21lc3NhZ2UoJyIlcyIgJXMgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihjb2RlKSwgc3RyKHNpemUpKQogCkBAIC01ODIsODIgKzYwMSwxMSBAQAogICAgICMgTWVzc2FnZUNsYXNzIHVzZWQgdG8gcGFyc2UgaGVhZGVycwogICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHAuY2xpZW50LkhUVFBNZXNzYWdlCiAKLSAgICAjIFRhYmxlIG1hcHBpbmcgcmVzcG9uc2UgY29kZXMgdG8gbWVzc2FnZXM7IGVudHJpZXMgaGF2ZSB0aGUKLSAgICAjIGZvcm0ge2NvZGU6IChzaG9ydG1lc3NhZ2UsIGxvbmdtZXNzYWdlKX0uCi0gICAgIyBTZWUgUkZDIDI2MTYgYW5kIDY1ODUuCisgICAgIyBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgcmVzcG9uc2VzID0gewotICAgICAgICAxMDA6ICgnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJyksCi0gICAgICAgIDEwMTogKCdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKLSAgICAgICAgICAgICAgJ1N3aXRjaGluZyB0byBuZXcgcHJvdG9jb2w7IG9iZXkgVXBncmFkZSBoZWFkZXInKSwKLQotICAgICAgICAyMDA6ICgnT0snLCAnUmVxdWVzdCBmdWxmaWxsZWQsIGRvY3VtZW50IGZvbGxvd3MnKSwKLSAgICAgICAgMjAxOiAoJ0NyZWF0ZWQnLCAnRG9jdW1lbnQgY3JlYXRlZCwgVVJMIGZvbGxvd3MnKSwKLSAgICAgICAgMjAyOiAoJ0FjY2VwdGVkJywKLSAgICAgICAgICAgICAgJ1JlcXVlc3QgYWNjZXB0ZWQsIHByb2Nlc3NpbmcgY29udGludWVzIG9mZi1saW5lJyksCi0gICAgICAgIDIwMzogKCdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsICdSZXF1ZXN0IGZ1bGZpbGxlZCBmcm9tIGNhY2hlJyksCi0gICAgICAgIDIwNDogKCdObyBDb250ZW50JywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBub3RoaW5nIGZvbGxvd3MnKSwKLSAgICAgICAgMjA1OiAoJ1Jlc2V0IENvbnRlbnQnLCAnQ2xlYXIgaW5wdXQgZm9ybSBmb3IgZnVydGhlciBpbnB1dC4nKSwKLSAgICAgICAgMjA2OiAoJ1BhcnRpYWwgQ29udGVudCcsICdQYXJ0aWFsIGNvbnRlbnQgZm9sbG93cy4nKSwKLQotICAgICAgICAzMDA6ICgnTXVsdGlwbGUgQ2hvaWNlcycsCi0gICAgICAgICAgICAgICdPYmplY3QgaGFzIHNldmVyYWwgcmVzb3VyY2VzIC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDE6ICgnTW92ZWQgUGVybWFuZW50bHknLCAnT2JqZWN0IG1vdmVkIHBlcm1hbmVudGx5IC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDI6ICgnRm91bmQnLCAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDM6ICgnU2VlIE90aGVyJywgJ09iamVjdCBtb3ZlZCAtLSBzZWUgTWV0aG9kIGFuZCBVUkwgbGlzdCcpLAotICAgICAgICAzMDQ6ICgnTm90IE1vZGlmaWVkJywKLSAgICAgICAgICAgICAgJ0RvY3VtZW50IGhhcyBub3QgY2hhbmdlZCBzaW5jZSBnaXZlbiB0aW1lJyksCi0gICAgICAgIDMwNTogKCdVc2UgUHJveHknLAotICAgICAgICAgICAgICAnWW91IG11c3QgdXNlIHByb3h5IHNwZWNpZmllZCBpbiBMb2NhdGlvbiB0byBhY2Nlc3MgdGhpcyAnCi0gICAgICAgICAgICAgICdyZXNvdXJjZS4nKSwKLSAgICAgICAgMzA3OiAoJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCi0gICAgICAgICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JyksCi0KLSAgICAgICAgNDAwOiAoJ0JhZCBSZXF1ZXN0JywKLSAgICAgICAgICAgICAgJ0JhZCByZXF1ZXN0IHN5bnRheCBvciB1bnN1cHBvcnRlZCBtZXRob2QnKSwKLSAgICAgICAgNDAxOiAoJ1VuYXV0aG9yaXplZCcsCi0gICAgICAgICAgICAgICdObyBwZXJtaXNzaW9uIC0tIHNlZSBhdXRob3JpemF0aW9uIHNjaGVtZXMnKSwKLSAgICAgICAgNDAyOiAoJ1BheW1lbnQgUmVxdWlyZWQnLAotICAgICAgICAgICAgICAnTm8gcGF5bWVudCAtLSBzZWUgY2hhcmdpbmcgc2NoZW1lcycpLAotICAgICAgICA0MDM6ICgnRm9yYmlkZGVuJywKLSAgICAgICAgICAgICAgJ1JlcXVlc3QgZm9yYmlkZGVuIC0tIGF1dGhvcml6YXRpb24gd2lsbCBub3QgaGVscCcpLAotICAgICAgICA0MDQ6ICgnTm90IEZvdW5kJywgJ05vdGhpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gVVJJJyksCi0gICAgICAgIDQwNTogKCdNZXRob2QgTm90IEFsbG93ZWQnLAotICAgICAgICAgICAgICAnU3BlY2lmaWVkIG1ldGhvZCBpcyBpbnZhbGlkIGZvciB0aGlzIHJlc291cmNlLicpLAotICAgICAgICA0MDY6ICgnTm90IEFjY2VwdGFibGUnLCAnVVJJIG5vdCBhdmFpbGFibGUgaW4gcHJlZmVycmVkIGZvcm1hdC4nKSwKLSAgICAgICAgNDA3OiAoJ1Byb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywgJ1lvdSBtdXN0IGF1dGhlbnRpY2F0ZSB3aXRoICcKLSAgICAgICAgICAgICAgJ3RoaXMgcHJveHkgYmVmb3JlIHByb2NlZWRpbmcuJyksCi0gICAgICAgIDQwODogKCdSZXF1ZXN0IFRpbWVvdXQnLCAnUmVxdWVzdCB0aW1lZCBvdXQ7IHRyeSBhZ2FpbiBsYXRlci4nKSwKLSAgICAgICAgNDA5OiAoJ0NvbmZsaWN0JywgJ1JlcXVlc3QgY29uZmxpY3QuJyksCi0gICAgICAgIDQxMDogKCdHb25lJywKLSAgICAgICAgICAgICAgJ1VSSSBubyBsb25nZXIgZXhpc3RzIGFuZCBoYXMgYmVlbiBwZXJtYW5lbnRseSByZW1vdmVkLicpLAotICAgICAgICA0MTE6ICgnTGVuZ3RoIFJlcXVpcmVkJywgJ0NsaWVudCBtdXN0IHNwZWNpZnkgQ29udGVudC1MZW5ndGguJyksCi0gICAgICAgIDQxMjogKCdQcmVjb25kaXRpb24gRmFpbGVkJywgJ1ByZWNvbmRpdGlvbiBpbiBoZWFkZXJzIGlzIGZhbHNlLicpLAotICAgICAgICA0MTM6ICgnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywgJ0VudGl0eSBpcyB0b28gbGFyZ2UuJyksCi0gICAgICAgIDQxNDogKCdSZXF1ZXN0LVVSSSBUb28gTG9uZycsICdVUkkgaXMgdG9vIGxvbmcuJyksCi0gICAgICAgIDQxNTogKCdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywgJ0VudGl0eSBib2R5IGluIHVuc3VwcG9ydGVkIGZvcm1hdC4nKSwKLSAgICAgICAgNDE2OiAoJ1JlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUnLAotICAgICAgICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZS4nKSwKLSAgICAgICAgNDE3OiAoJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCi0gICAgICAgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyksCi0gICAgICAgIDQyODogKCdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAotICAgICAgICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJyksCi0gICAgICAgIDQyOTogKCdUb28gTWFueSBSZXF1ZXN0cycsICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyAnCi0gICAgICAgICAgICAgICdpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpLicpLAotICAgICAgICA0MzE6ICgnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byAnCi0gICAgICAgICAgICAgICdwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4nKSwKLQotICAgICAgICA1MDA6ICgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKSwKLSAgICAgICAgNTAxOiAoJ05vdCBJbXBsZW1lbnRlZCcsCi0gICAgICAgICAgICAgICdTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbicpLAotICAgICAgICA1MDI6ICgnQmFkIEdhdGV3YXknLCAnSW52YWxpZCByZXNwb25zZXMgZnJvbSBhbm90aGVyIHNlcnZlci9wcm94eS4nKSwKLSAgICAgICAgNTAzOiAoJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAotICAgICAgICAgICAgICAnVGhlIHNlcnZlciBjYW5ub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gYSBoaWdoIGxvYWQnKSwKLSAgICAgICAgNTA0OiAoJ0dhdGV3YXkgVGltZW91dCcsCi0gICAgICAgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJyksCi0gICAgICAgIDUwNTogKCdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0LicpLAotICAgICAgICA1MTE6ICgnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCi0gICAgICAgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLicpLAotICAgICAgICB9CisgICAgICAgIHY6ICh2LnBocmFzZSwgdi5kZXNjcmlwdGlvbikKKyAgICAgICAgZm9yIHYgaW4gSFRUUFN0YXR1cy5fX21lbWJlcnNfXy52YWx1ZXMoKQorICAgIH0KIAogCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC03MDcsNyArNjU1LDcgQEAKICAgICAgICAgICAgIHBhcnRzID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHNlbGYucGF0aCkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0cy5wYXRoLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICAgICAgIyByZWRpcmVjdCBicm93c2VyIC0gZG9pbmcgYmFzaWNhbGx5IHdoYXQgYXBhY2hlIGRvZXMKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMzAxKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICAgICAgICAgIG5ld19wYXJ0cyA9IChwYXJ0c1swXSwgcGFydHNbMV0sIHBhcnRzWzJdICsgJy8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1szXSwgcGFydHNbNF0pCiAgICAgICAgICAgICAgICAgbmV3X3VybCA9IHVybGxpYi5wYXJzZS51cmx1bnNwbGl0KG5ld19wYXJ0cykKQEAgLTcyNSwxMCArNjczLDEwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYicpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIkZpbGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCwgIkZpbGUgbm90IGZvdW5kIikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsIGN0eXBlKQogICAgICAgICAgICAgZnMgPSBvcy5mc3RhdChmLmZpbGVubygpKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBzdHIoZnNbNl0pKQpAQCAtNzUwLDcgKzY5OCw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpc3QgPSBvcy5saXN0ZGlyKHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIk5vIHBlcm1pc3Npb24gdG8gbGlzdCBkaXJlY3RvcnkiKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICJObyBwZXJtaXNzaW9uIHRvIGxpc3QgZGlyZWN0b3J5IikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGxpc3Quc29ydChrZXk9bGFtYmRhIGE6IGEubG93ZXIoKSkKICAgICAgICAgciA9IFtdCkBAIC03ODksNyArNzM5LDcgQEAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgICBmLndyaXRlKGVuY29kZWQpCiAgICAgICAgIGYuc2VlaygwKQotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgInRleHQvaHRtbDsgY2hhcnNldD0lcyIgJSBlbmMpCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxlbihlbmNvZGVkKSkpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQpAQCAtOTcxLDcgKzkyMSw5IEBACiAgICAgICAgIGlmIHNlbGYuaXNfY2dpKCk6CiAgICAgICAgICAgICBzZWxmLnJ1bl9jZ2koKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDUwMSwgIkNhbiBvbmx5IFBPU1QgdG8gQ0dJIHNjcmlwdHMiKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVELAorICAgICAgICAgICAgICAgICJDYW4gb25seSBQT1NUIHRvIENHSSBzY3JpcHRzIikKIAogICAgIGRlZiBzZW5kX2hlYWQoc2VsZik6CiAgICAgICAgICIiIlZlcnNpb24gb2Ygc2VuZF9oZWFkIHRoYXQgc3VwcG9ydCBDR0kgc2NyaXB0cyIiIgpAQCAtMTA0OSwxNyArMTAwMSwyMSBAQAogICAgICAgICBzY3JpcHRuYW1lID0gZGlyICsgJy8nICsgc2NyaXB0CiAgICAgICAgIHNjcmlwdGZpbGUgPSBzZWxmLnRyYW5zbGF0ZV9wYXRoKHNjcmlwdG5hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzY3JpcHRmaWxlKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDQsICJObyBzdWNoIENHSSBzY3JpcHQgKCVyKSIgJSBzY3JpcHRuYW1lKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICJObyBzdWNoIENHSSBzY3JpcHQgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDMsICJDR0kgc2NyaXB0IGlzIG5vdCBhIHBsYWluIGZpbGUgKCVyKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5GT1JCSURERU4sCisgICAgICAgICAgICAgICAgIkNHSSBzY3JpcHQgaXMgbm90IGEgcGxhaW4gZmlsZSAoJXIpIiAlIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaXNweSA9IHNlbGYuaXNfcHl0aG9uKHNjcmlwdG5hbWUpCiAgICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrIG9yIG5vdCBpc3B5OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkZPUkJJRERFTiwKKyAgICAgICAgICAgICAgICAgICAgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgUmVmZXJlbmNlOiBodHRwOi8vaG9vaG9vLm5jc2EudWl1Yy5lZHUvY2dpL2Vudi5odG1sCkBAIC0xMTI3LDcgKzEwODMsNyBAQAogICAgICAgICAgICAgICAgICAgJ0hUVFBfVVNFUl9BR0VOVCcsICdIVFRQX0NPT0tJRScsICdIVFRQX1JFRkVSRVInKToKICAgICAgICAgICAgIGVudi5zZXRkZWZhdWx0KGssICIiKQogCi0gICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDAsICJTY3JpcHQgb3V0cHV0IGZvbGxvd3MiKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSywgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCiAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCiAKICAgICAgICAgZGVjb2RlZF9xdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoJysnLCAnICcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cgYi9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cKaW5kZXggOTg1ODcxYi4uOTBlMDJmNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2hhbmdlTG9nCisrKyBiL0xpYi9pZGxlbGliL0NoYW5nZUxvZwpAQCAtMjAsNyArMjAsNyBAQAogMjAwMS0wNy0xOSAxNDo0OSAgZWxndWF2YXMKIAogCSogQ2hhbmdlTG9nLCBFZGl0b3JXaW5kb3cucHksIElOU1RBTExBVElPTiwgTkVXUy50eHQsIFJFQURNRS50eHQsCi0JVE9ETy50eHQsIGlkbGV2ZXIucHk6IAorCVRPRE8udHh0LCBpZGxldmVyLnB5OgogCW1pbm9yIHRpZHktdXBzIHJlYWR5IGZvciAwLjguMSBhbHBoYSB0YXJiYWxsIHJlbGVhc2UKIAogMjAwMS0wNy0xNyAxNToxMiAga2JrCkBAIC0xNzIsNyArMTcyLDcgQEAKIAlhbGwgdGhpcyB3b3JrIHcvIGEgZnV0dXJlLXN0bXQganVzdCBsb29rcyBoYXJkZXIgYW5kIGhhcmRlci4iCiAJLS10aW1fb25lCiAJCi0JKEZyb20gUmVsIDEuODogIkhhY2sgdG8gbWFrZSB0aGlzIHN0aWxsIHdvcmsgd2l0aCBQeXRob24gMS41LjIuIAorCShGcm9tIFJlbCAxLjg6ICJIYWNrIHRvIG1ha2UgdGhpcyBzdGlsbCB3b3JrIHdpdGggUHl0aG9uIDEuNS4yLgogCTstKCAiIC0tZmRyYWtlKQogCiAyMDAxLTA3LTE0IDE0OjUxICBrYmsKQEAgLTE5Myw3ICsxOTMsNyBAQAogCXRlc3QoKSB0byBfdGVzdCgpLiIgIC0tR3ZSCiAJCiAJVGhpcyB3YXMgYW4gaW50ZXJlc3RpbmcgbWVyZ2UuIFRoZSBqb2luIGNvbXBsZXRlbHkgbWlzc2VkIHJlbW92aW5nCi0JZ29vZG5hbWUoKSwgd2hpY2ggd2FzIGFkamFjZW50LCBidXQgb3V0c2lkZSBvZiwgYSBzbWFsbCBjb25mbGljdC4gCisJZ29vZG5hbWUoKSwgd2hpY2ggd2FzIGFkamFjZW50LCBidXQgb3V0c2lkZSBvZiwgYSBzbWFsbCBjb25mbGljdC4KIAlJIG9ubHkgY2F1Z2h0IGl0IGJ5IGNvbXBhcmluZyB0aGUgMS4xLjMuMi8xLjEuMy4zIGRpZmYuICBDVlMgYWluJ3QKIAlpbmZhbGxpYmxlLgogCkBAIC01MTYsMTIgKzUxNiwxMiBAQAogCiAyMDAwLTA4LTE1IDIyOjUxICBub3dvbmRlcgogCi0JKiBJRExFRk9SSy5odG1sOiAKKwkqIElETEVGT1JLLmh0bWw6CiAJY29ycmVjdGVkIGVtYWlsIGFkZHJlc3MKIAogMjAwMC0wOC0xNSAyMjo0NyAgbm93b25kZXIKIAotCSogSURMRUZPUksuaHRtbDogCisJKiBJRExFRk9SSy5odG1sOgogCWFkZGVkIC5odG1sIGZpbGUgZm9yIGh0dHA6Ly9pZGxlZm9yay5zb3VyY2Vmb3JnZS5uZXQKIAogMjAwMC0wOC0xNSAxMToxMyAgZHNjaGVyZXIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5IGIvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKaW5kZXggNDQ3ODNiNi4uN2QyNWFkYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKKysrIGIvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKQEAgLTU3LDE4ICs1NywxOCBAQAogICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIGJvcmRlciB3aWR0aCBhbmQgaG9yaXpvbnRhbCBwYWRkaW5nIHJlcXVpcmVkIHRvCiAgICAgICAgICAgICAjIGFsaWduIHRoZSBjb250ZXh0IHdpdGggdGhlIHRleHQgaW4gdGhlIG1haW4gVGV4dCB3aWRnZXQuCiAgICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEFsbCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGludChzdHIoPHZhbHVlPikpLCBzaW5jZSBzb21lCisgICAgICAgICAgICAjIEFsbCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGdldGludCgpLCBzaW5jZSBzb21lCiAgICAgICAgICAgICAjIHZhbHVlcyBtYXkgYmUgcGl4ZWwgb2JqZWN0cywgd2hpY2ggY2FuJ3Qgc2ltcGx5IGJlIGFkZGVkIHRvIGludHMuCiAgICAgICAgICAgICB3aWRnZXRzID0gc2VsZi5lZGl0d2luLnRleHQsIHNlbGYuZWRpdHdpbi50ZXh0X2ZyYW1lCiAgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgdmVydGljYWwgcGFkZGluZwogICAgICAgICAgICAgcGFkeCA9IDAKICAgICAgICAgICAgIGZvciB3aWRnZXQgaW4gd2lkZ2V0czoKLSAgICAgICAgICAgICAgICBwYWR4ICs9IGludChzdHIoIHdpZGdldC5wYWNrX2luZm8oKVsncGFkeCddICkpCi0gICAgICAgICAgICAgICAgcGFkeCArPSBpbnQoc3RyKCB3aWRnZXQuY2dldCgncGFkeCcpICkpCisgICAgICAgICAgICAgICAgcGFkeCArPSB3aWRnZXQudGsuZ2V0aW50KHdpZGdldC5wYWNrX2luZm8oKVsncGFkeCddKQorICAgICAgICAgICAgICAgIHBhZHggKz0gd2lkZ2V0LnRrLmdldGludCh3aWRnZXQuY2dldCgncGFkeCcpKQogICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHJlcXVpcmVkIGJvcmRlciB3aWR0aAogICAgICAgICAgICAgYm9yZGVyID0gMAogICAgICAgICAgICAgZm9yIHdpZGdldCBpbiB3aWRnZXRzOgotICAgICAgICAgICAgICAgIGJvcmRlciArPSBpbnQoc3RyKCB3aWRnZXQuY2dldCgnYm9yZGVyJykgKSkKKyAgICAgICAgICAgICAgICBib3JkZXIgKz0gd2lkZ2V0LnRrLmdldGludCh3aWRnZXQuY2dldCgnYm9yZGVyJykpCiAgICAgICAgICAgICBzZWxmLmxhYmVsID0gdGtpbnRlci5MYWJlbChzZWxmLmVkaXR3aW4udG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0iXG4iICogKHNlbGYuY29udGV4dF9kZXB0aCAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0hJU1RPUlkudHh0IGIvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKaW5kZXggMDFkNzNlZC4uNzMxZmFiZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKKysrIGIvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKQEAgLTExLDcgKzExLDcgQEAKICpSZWxlYXNlIGRhdGU6IDIyLUp1bC0yMDAxKgogCiAtIE5ldyB0YXJiYWxsIHJlbGVhc2VkIGFzIGEgcmVzdWx0IG9mIHRoZSAncmV2aXRhbGlzYXRpb24nIG9mIHRoZSBJRExFZm9yawotICBwcm9qZWN0LiAKKyAgcHJvamVjdC4KIAogLSBUaGlzIHJlbGVhc2UgcmVxdWlyZXMgcHl0aG9uIDIuMSBvciBiZXR0ZXIuIENvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyCiAgIHZlcnNpb25zIG9mIHB5dGhvbiAoZXNwZWNpYWxseSBhbmNpZW50IG9uZXMgbGlrZSAxLjV4KSBpcyBubyBsb25nZXIgYQpAQCAtMjYsOCArMjYsOCBAQAogICBub3Qgd29ya2luZywgYnV0IEkgYmVsaWV2ZSB0aGlzIHdhcyB0aGUgY2FzZSB3aXRoIHRoZSBwcmV2aW91cyBJRExFIGZvcmsKICAgcmVsZWFzZSAoMC43LjEpIGFzIHdlbGwuCiAKLS0gVGhpcyByZWxlYXNlIGlzIGJlaW5nIG1hZGUgbm93IHRvIG1hcmsgdGhlIHBvaW50IGF0IHdoaWNoIElETEVmb3JrIGlzIAotICBsYXVuY2hpbmcgaW50byBhIG5ldyBzdGFnZSBvZiBkZXZlbG9wbWVudC4gCistIFRoaXMgcmVsZWFzZSBpcyBiZWluZyBtYWRlIG5vdyB0byBtYXJrIHRoZSBwb2ludCBhdCB3aGljaCBJRExFZm9yayBpcworICBsYXVuY2hpbmcgaW50byBhIG5ldyBzdGFnZSBvZiBkZXZlbG9wbWVudC4KIAogLSBJRExFZm9yayBDVlMgd2lsbCBub3cgYmUgYnJhbmNoZWQgdG8gZW5hYmxlIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgYW5kCiAgIGV4cGxvcmF0aW9uIG9mIHRoZSB0d28gImV4ZWN1dGlvbiBpbiBhIHJlbW90ZSBwcm9jZXNzIiBwYXRjaGVzIHN1Ym1pdHRlZCBieQpAQCAtOTYsNyArOTYsNyBAQAogICAgIGluc3RlYWQgb2YgdGhlIElETEUgaGVscDsgc2hpZnQtVEFCIGlzIG5vdyBhIHN5bm9ueW0gZm9yIHVuaW5kZW50LgogCiAtIE5ldyBtb2R1bGVzOgotICAKKwogICBFeGVjQmluZGluZy5weSAgICAgICAgIEV4ZWN1dGVzIHByb2dyYW0gdGhyb3VnaCBsb2FkZXIKICAgbG9hZGVyLnB5ICAgICAgICAgICAgICBCb290c3RyYXBzIHVzZXIgcHJvZ3JhbQogICBwcm90b2NvbC5weSAgICAgICAgICAgIFJQQyBwcm90b2NvbApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCA5OWUzNzk2Li4yZDhjZTU0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSwxNSArMSwxMCBAQAotV2hhdCdzIE5ldyBpbiBJZGxlIDMuNC4zPworV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4wPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0/Py0/PyoKKypSZWxlYXNlIGRhdGU6IDIwMTUtMDktMTMqID8/CiAKIC0gSXNzdWUgIzIzMTg0OiByZW1vdmUgdW51c2VkIG5hbWVzIGFuZCBpbXBvcnRzIGluIGlkbGVsaWIuCiAgIEluaXRpYWwgcGF0Y2ggYnkgQWwgU3dlaWdhcnQuCiAKLQotV2hhdCdzIE5ldyBpbiBJZGxlIDMuNC4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0wMi0yNSoKLQogLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAogICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCiAgIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCkBAIC0zNCwxNSArMjksMTAgQEAKIAogLSBJc3N1ZSAjMjE5ODY6IENvZGUgb2JqZWN0cyBhcmUgbm90IG5vcm1hbGx5IHBpY2tsZWQgYnkgdGhlIHBpY2tsZSBtb2R1bGUuCiAgIFRvIG1hdGNoIHRoaXMsIHRoZXkgYXJlIG5vIGxvbmdlciBwaWNrbGVkIHdoZW4gcnVubmluZyB1bmRlciBJZGxlLgotCisgIAogLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCiAgIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMTAtMDYqCi0KIC0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAogICBtb3ZlIHZlcnNpb24gdG8gZW5kLgogCkBAIC03NywxNCArNjcsOCBAQAogCiAtIElzc3VlICMxODQwOTogQWRkIHVuaXR0ZXN0IGZvciBBdXRvQ29tcGxldGUuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KIAotLSBJc3N1ZSAjMTgxMDQ6IEFkZCBpZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSB3aXRoIGEgZmV3IHNhbXBsZSB0ZXN0cyB0byBiZWdpbgotICBjb25zb2xpZGF0aW5nIGFuZCBpbXByb3ZpbmcgaHVtYW4tdmFsaWRhdGVkIHRlc3RzIG9mIElkbGUuIENoYW5nZSBvdGhlciBmaWxlcwotICBhcyBuZWVkZWQgdG8gd29yayB3aXRoIGh0ZXN0LiAgUnVubmluZyB0aGUgbW9kdWxlIGFzIF9fbWFpbl9fIHJ1bnMgYWxsIHRlc3RzLgotCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMDUtMTgqCistIElzc3VlICMyMTQ3NzogaHRlc3QucHkgLSBJbXByb3ZlIGZyYW1ld29yaywgY29tcGxldGUgc2V0IG9mIHRlc3RzLgorICBQYXRjaGVzIGJ5IFNhaW1hZGhhdiBIZWJsaWthcgogCiAtIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCiAgIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCkBAIC0xNjEsNyArMTQ1LDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMi4xPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAxNS1NYXktMTEqCiAKIC0gSXNzdWUgIzYzNzg6IEZ1cnRoZXIgYWRqdXN0IGlkbGUuYmF0IHRvIHN0YXJ0IGFzc29jaWF0ZWQgUHl0aG9uCkBAIC0xNzksNyArMTYyLDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMWIxPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAwNi1NYXktMDkqCiAKIC0gVXNlIG9mICdmaWx0ZXInIGluIGtleWJpbmRpbmdEaWFsb2cucHkgd2FzIGNhdXNpbmcgY3VzdG9tIGtleSBhc3NpZ25tZW50IHRvCkBAIC0xODgsNyArMTcwLDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMWExPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAwNy1NYXItMDkqCiAKIC0gSXNzdWUgIzQ4MTU6IE9mZmVyIGNvbnZlcnNpb24gdG8gVVRGLTggaWYgc291cmNlIGZpbGVzIGhhdmUKQEAgLTIwNiw3ICsxODcsNiBAQAogCiBXaGF0J3MgTmV3IGluIElETEUgMi43PyAoVU5SRUxFQVNFRCwgYnV0IG1lcmdlZCBpbnRvIDMuMSByZWxlYXNlcyBhYm92ZS4pCiA9PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiBYWC1YWFgtMjAxMCoKIAogLSBpZGxlLnB5IG1vZGlmaWVkIGFuZCBzaW1wbGlmaWVkIHRvIGJldHRlciBzdXBwb3J0IGRldmVsb3BpbmcgZXhwZXJpbWVudGFsCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0IGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAppbmRleCBiMmJiNzNiLi43ZjRhNjZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0CisrKyBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIFRoZXJlIGlzIGEgUHl0aG9uIFNoZWxsIHdpbmRvdyB3aGljaCBmZWF0dXJlcyBjb2xvcml6aW5nIGFuZCBjb21tYW5kIHJlY2FsbC4KIAogSURMRSBleGVjdXRlcyBQeXRob24gY29kZSBpbiBhIHNlcGFyYXRlIHByb2Nlc3MsIHdoaWNoIGlzIHJlc3RhcnRlZCBmb3IgZWFjaAotUnVuIChGNSkgaW5pdGlhdGVkIGZyb20gYW4gZWRpdG9yIHdpbmRvdy4gIFRoZSBlbnZpcm9ubWVudCBjYW4gYWxzbyBiZSAKK1J1biAoRjUpIGluaXRpYXRlZCBmcm9tIGFuIGVkaXRvciB3aW5kb3cuICBUaGUgZW52aXJvbm1lbnQgY2FuIGFsc28gYmUKIHJlc3RhcnRlZCBmcm9tIHRoZSBTaGVsbCB3aW5kb3cgd2l0aG91dCByZXN0YXJ0aW5nIElETEUuCiAKIFRoaXMgZW5oYW5jZW1lbnQgaGFzIG9mdGVuIGJlZW4gcmVxdWVzdGVkLCBhbmQgaXMgbm93IGZpbmFsbHkgYXZhaWxhYmxlLiAgVGhlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQppbmRleCBiM2Q3YmZhLi42N2Q3ZjYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKQEAgLTQ3LDggKzQ3LDkgQEAKICAgICAgICAgdGsuY3JlYXRlY29tbWFuZCh3LCBzZWxmLmRpc3BhdGNoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIldpZGdldFJlZGlyZWN0b3IoJXM8JXM+KSIgJSAoc2VsZi53aWRnZXQuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53aWRnZXQuX3cpCisgICAgICAgIHJldHVybiAiJXMoJXM8JXM+KSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53aWRnZXQuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll93KQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiVW5yZWdpc3RlciBvcGVyYXRpb25zIGFuZCByZXZlcnQgcmVkaXJlY3Rpb24gY3JlYXRlZCBieSAuX19pbml0X18uIgpAQCAtMTQyLDcgKzE0Myw4IEBACiAgICAgICAgIHNlbGYub3JpZ19hbmRfb3BlcmF0aW9uID0gKHJlZGlyLm9yaWcsIG9wZXJhdGlvbikKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJPcmlnaW5hbENvbW1hbmQoJXIsICVyKSIgJSAoc2VsZi5yZWRpciwgc2VsZi5vcGVyYXRpb24pCisgICAgICAgIHJldHVybiAiJXMoJXIsICVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWRpciwgc2VsZi5vcGVyYXRpb24pCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgogICAgICAgICByZXR1cm4gc2VsZi50a19jYWxsKHNlbGYub3JpZ19hbmRfb3BlcmF0aW9uICsgYXJncykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBjNzc5MmZiLi5lZGJkNTU4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgZW5naW5lLnJldmFyLnNldCgxKQogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0cHJvZygpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1ib3guc2hvd2Vycm9yLm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcjogbm90aGluZyB0byByZXBlYXRcblBhdHRlcm46ICsnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcjogbm90aGluZyB0byByZXBlYXQgYXQgcG9zaXRpb24gMFxuUGF0dGVybjogKycpCiAKICAgICBkZWYgdGVzdF9yZXBvcnRfZXJyb3Ioc2VsZik6CiAgICAgICAgIHNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQppbmRleCAzN2I3NzEyLi41NjNkOTMzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKQEAgLTIsNCArMiwzIEBACiBLZXB0IG9ubHkgZm9yIHBvc3NpYmxlIGV4aXN0aW5nIGV4dGVuc2lvbiB1c2UuIiIiCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgogSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQotCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IDRkOWRmNTUuLjk3MGI2YTUgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC02Niw2ICs2Niw3IEBACiAgICAgICAgICdDUkVBVEUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAgJ0RFTEVURSc6ICAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICAnREVMRVRFQUNMJzogICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCisgICAgICAgICdFTkFCTEUnOiAgICAgICAoJ0FVVEgnLCApLAogICAgICAgICAnRVhBTUlORSc6ICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgICdFWFBVTkdFJzogICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICAnRkVUQ0gnOiAgICAgICAgKCdTRUxFQ1RFRCcsKSwKQEAgLTEwNywxMiArMTA4LDE3IEBACiAgICAgICAgIGJyJyAoP1A8aG91cj5bMC05XVswLTldKTooP1A8bWluPlswLTldWzAtOV0pOig/UDxzZWM+WzAtOV1bMC05XSknCiAgICAgICAgIGJyJyAoP1A8em9uZW4+Wy0rXSkoP1A8em9uZWg+WzAtOV1bMC05XSkoP1A8em9uZW0+WzAtOV1bMC05XSknCiAgICAgICAgIGJyJyInKQorIyBMaXRlcmFsIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogTGl0ZXJhbCA9IHJlLmNvbXBpbGUoYnInLip7KD9QPHNpemU+XGQrKX0kJywgcmUuQVNDSUkpCiBNYXBDUkxGID0gcmUuY29tcGlsZShicidcclxufFxyfFxuJykKIFJlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPlteXF1dKikpP1xdJykKIFVudGFnZ2VkX3Jlc3BvbnNlID0gcmUuY29tcGlsZShicidcKiAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT8nKQorIyBVbnRhZ2dlZF9zdGF0dXMgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIFVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoCiAgICAgYnInXCogKD9QPGRhdGE+XGQrKSAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGEyPi4qKSk/JywgcmUuQVNDSUkpCisjIFdlIGNvbXBpbGUgdGhlc2UgaW4gX21vZGVfeHh4LgorX0xpdGVyYWwgPSBicicuKnsoP1A8c2l6ZT5cZCspfSQnCitfVW50YWdnZWRfc3RhdHVzID0gYnInXCogKD9QPGRhdGE+XGQrKSAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGEyPi4qKSk/JwogCiAKIApAQCAtMTY2LDcgKzE3Miw3IEBACiAgICAgY2xhc3MgYWJvcnQoZXJyb3IpOiBwYXNzICAgICAgICAjIFNlcnZpY2UgZXJyb3JzIC0gY2xvc2UgYW5kIHJldHJ5CiAgICAgY2xhc3MgcmVhZG9ubHkoYWJvcnQpOiBwYXNzICAgICAjIE1haWxib3ggc3RhdHVzIGNoYW5nZWQgdG8gUkVBRC1PTkxZCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCA9ICcnLCBwb3J0ID0gSU1BUDRfUE9SVCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfUE9SVCk6CiAgICAgICAgIHNlbGYuZGVidWcgPSBEZWJ1ZwogICAgICAgICBzZWxmLnN0YXRlID0gJ0xPR09VVCcKICAgICAgICAgc2VsZi5saXRlcmFsID0gTm9uZSAgICAgICAgICAgICAjIEEgbGl0ZXJhbCBhcmd1bWVudCB0byBhIGNvbW1hbmQKQEAgLTE3Niw2ICsxODIsNyBAQAogICAgICAgICBzZWxmLmlzX3JlYWRvbmx5ID0gRmFsc2UgICAgICAgICMgUkVBRC1PTkxZIGRlc2lyZWQgc3RhdGUKICAgICAgICAgc2VsZi50YWdudW0gPSAwCiAgICAgICAgIHNlbGYuX3Rsc19lc3RhYmxpc2hlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGVfYXNjaWkoKQogCiAgICAgICAgICMgT3BlbiBzb2NrZXQgdG8gc2VydmVyLgogCkBAIC0xOTAsNiArMTk3LDE5IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBfbW9kZV9hc2NpaShzZWxmKToKKyAgICAgICAgc2VsZi51dGY4X2VuYWJsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgc2VsZi5MaXRlcmFsID0gcmUuY29tcGlsZShfTGl0ZXJhbCwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZShfVW50YWdnZWRfc3RhdHVzLCByZS5BU0NJSSkKKworCisgICAgZGVmIF9tb2RlX3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYudXRmOF9lbmFibGVkID0gVHJ1ZQorICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICd1dGYtOCcKKyAgICAgICAgc2VsZi5MaXRlcmFsID0gcmUuY29tcGlsZShfTGl0ZXJhbCkKKyAgICAgICAgc2VsZi5VbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKF9VbnRhZ2dlZF9zdGF0dXMpCisKIAogICAgIGRlZiBfY29ubmVjdChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgdW5pcXVlIHRhZyBmb3IgdGhpcyBzZXNzaW9uLApAQCAtMjM5LDYgKzI1OSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgYXR0ci5sb3dlcigpKQogICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVW5rbm93biBJTUFQNCBjb21tYW5kOiAnJXMnIiAlIGF0dHIpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sb2dvdXQoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAogCiAgICAgIyAgICAgICBPdmVycmlkYWJsZSBtZXRob2RzCkBAIC0zNTIsNyArMzgwLDEwIEBACiAgICAgICAgICAgICBkYXRlX3RpbWUgPSBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRlX3RpbWUgPSBOb25lCi0gICAgICAgIHNlbGYubGl0ZXJhbCA9IE1hcENSTEYuc3ViKENSTEYsIG1lc3NhZ2UpCisgICAgICAgIGxpdGVyYWwgPSBNYXBDUkxGLnN1YihDUkxGLCBtZXNzYWdlKQorICAgICAgICBpZiBzZWxmLnV0ZjhfZW5hYmxlZDoKKyAgICAgICAgICAgIGxpdGVyYWwgPSBiJ1VURjggKCcgKyBsaXRlcmFsICsgYicpJworICAgICAgICBzZWxmLmxpdGVyYWwgPSBsaXRlcmFsCiAgICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCBtYWlsYm94LCBmbGFncywgZGF0ZV90aW1lKQogCiAKQEAgLTQ0Nyw2ICs0NzgsMTggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnREVMRVRFQUNMJywgbWFpbGJveCwgd2hvKQogCisgICAgZGVmIGVuYWJsZShzZWxmLCBjYXBhYmlsaXR5KToKKyAgICAgICAgIiIiU2VuZCBhbiBSRkM1MTYxIGVuYWJsZSBzdHJpbmcgdG8gdGhlIHNlcnZlci4KKworICAgICAgICAodHlwLCBbZGF0YV0pID0gPGludGFuY2U+LmVuYWJsZShjYXBhYmlsaXR5KQorICAgICAgICAiIiIKKyAgICAgICAgaWYgJ0VOQUJMRScgbm90IGluIHNlbGYuY2FwYWJpbGl0aWVzOgorICAgICAgICAgICAgcmFpc2UgSU1BUDQuZXJyb3IoIlNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IEVOQUJMRSIpCisgICAgICAgIHR5cCwgZGF0YSA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKCdFTkFCTEUnLCBjYXBhYmlsaXR5KQorICAgICAgICBpZiB0eXAgPT0gJ09LJyBhbmQgJ1VURjg9QUNDRVBUJyBpbiBjYXBhYmlsaXR5LnVwcGVyKCk6CisgICAgICAgICAgICBzZWxmLl9tb2RlX3V0ZjgoKQorICAgICAgICByZXR1cm4gdHlwLCBkYXRhCisKICAgICBkZWYgZXhwdW5nZShzZWxmKToKICAgICAgICAgIiIiUGVybWFuZW50bHkgcmVtb3ZlIGRlbGV0ZWQgaXRlbXMgZnJvbSBzZWxlY3RlZCBtYWlsYm94LgogCkBAIC01NTMsNyArNTk2LDcgQEAKICAgICBkZWYgX0NSQU1fTUQ1X0FVVEgoc2VsZiwgY2hhbGxlbmdlKToKICAgICAgICAgIiIiIEF1dGhvYmplY3QgdG8gdXNlIHdpdGggQ1JBTS1NRDUgYXV0aGVudGljYXRpb24uICIiIgogICAgICAgICBpbXBvcnQgaG1hYwotICAgICAgICBwd2QgPSAoc2VsZi5wYXNzd29yZC5lbmNvZGUoJ0FTQ0lJJykgaWYgaXNpbnN0YW5jZShzZWxmLnBhc3N3b3JkLCBzdHIpCisgICAgICAgIHB3ZCA9IChzZWxmLnBhc3N3b3JkLmVuY29kZSgndXRmLTgnKSBpZiBpc2luc3RhbmNlKHNlbGYucGFzc3dvcmQsIHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2VsZi5wYXNzd29yZCkKICAgICAgICAgcmV0dXJuIHNlbGYudXNlciArICIgIiArIGhtYWMuSE1BQyhwd2QsIGNoYWxsZW5nZSwgJ21kNScpLmhleGRpZ2VzdCgpCiAKQEAgLTY1Myw5ICs2OTYsMTIgQEAKICAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc2VhcmNoKGNoYXJzZXQsIGNyaXRlcmlvbiwgLi4uKQogCiAgICAgICAgICdkYXRhJyBpcyBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBtYXRjaGluZyBtZXNzYWdlIG51bWJlcnMuCisgICAgICAgIElmIFVURjggaXMgZW5hYmxlZCwgY2hhcnNldCBNVVNUIGJlIE5vbmUuCiAgICAgICAgICIiIgogICAgICAgICBuYW1lID0gJ1NFQVJDSCcKICAgICAgICAgaWYgY2hhcnNldDoKKyAgICAgICAgICAgIGlmIHNlbGYudXRmOF9lbmFibGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIElNQVA0LmVycm9yKCJOb24tTm9uZSBjaGFyc2V0IG5vdCB2YWxpZCBpbiBVVEY4IG1vZGUiKQogICAgICAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCAnQ0hBUlNFVCcsIGNoYXJzZXQsICpjcml0ZXJpYSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgKmNyaXRlcmlhKQpAQCAtODY5LDcgKzkxNSw3IEBACiAgICAgZGVmIF9jaGVja19ieWUoc2VsZik6CiAgICAgICAgIGJ5ZSA9IHNlbGYudW50YWdnZWRfcmVzcG9uc2VzLmdldCgnQllFJykKICAgICAgICAgaWYgYnllOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydChieWVbLTFdLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpKQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydChieWVbLTFdLmRlY29kZShzZWxmLl9lbmNvZGluZywgJ3JlcGxhY2UnKSkKIAogCiAgICAgZGVmIF9jb21tYW5kKHNlbGYsIG5hbWUsICphcmdzKToKQEAgLTg5MCwxMiArOTM2LDEyIEBACiAgICAgICAgICAgICByYWlzZSBzZWxmLnJlYWRvbmx5KCdtYWlsYm94IHN0YXR1cyBjaGFuZ2VkIHRvIFJFQUQtT05MWScpCiAKICAgICAgICAgdGFnID0gc2VsZi5fbmV3X3RhZygpCi0gICAgICAgIG5hbWUgPSBieXRlcyhuYW1lLCAnQVNDSUknKQorICAgICAgICBuYW1lID0gYnl0ZXMobmFtZSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgIGRhdGEgPSB0YWcgKyBiJyAnICsgbmFtZQogICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgICAgICBpZiBhcmcgaXMgTm9uZTogY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzdHIpOgotICAgICAgICAgICAgICAgIGFyZyA9IGJ5dGVzKGFyZywgIkFTQ0lJIikKKyAgICAgICAgICAgICAgICBhcmcgPSBieXRlcyhhcmcsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBiJyAnICsgYXJnCiAKICAgICAgICAgbGl0ZXJhbCA9IHNlbGYubGl0ZXJhbApAQCAtOTA1LDcgKzk1MSw3IEBACiAgICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gbGl0ZXJhbAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsaXRlcmF0b3IgPSBOb25lCi0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBieXRlcygnIHslc30nICUgbGVuKGxpdGVyYWwpLCAnQVNDSUknKQorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYnl0ZXMoJyB7JXN9JyAlIGxlbihsaXRlcmFsKSwgc2VsZi5fZW5jb2RpbmcpCiAKICAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSA0OgpAQCAtOTcwLDcgKzEwMTYsNyBAQAogICAgICAgICB0eXAsIGRhdCA9IHNlbGYuY2FwYWJpbGl0eSgpCiAgICAgICAgIGlmIGRhdCA9PSBbTm9uZV06CiAgICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCdubyBDQVBBQklMSVRZIHJlc3BvbnNlIGZyb20gc2VydmVyJykKLSAgICAgICAgZGF0ID0gc3RyKGRhdFstMV0sICJBU0NJSSIpCisgICAgICAgIGRhdCA9IHN0cihkYXRbLTFdLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgZGF0ID0gZGF0LnVwcGVyKCkKICAgICAgICAgc2VsZi5jYXBhYmlsaXRpZXMgPSB0dXBsZShkYXQuc3BsaXQoKSkKIApAQCAtOTg5LDEwICsxMDM1LDEwIEBACiAgICAgICAgIGlmIHNlbGYuX21hdGNoKHNlbGYudGFncmUsIHJlc3ApOgogICAgICAgICAgICAgdGFnID0gc2VsZi5tby5ncm91cCgndGFnJykKICAgICAgICAgICAgIGlmIG5vdCB0YWcgaW4gc2VsZi50YWdnZWRfY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgndW5leHBlY3RlZCB0YWdnZWQgcmVzcG9uc2U6ICVzJyAlIHJlc3ApCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgndW5leHBlY3RlZCB0YWdnZWQgcmVzcG9uc2U6ICVyJyAlIHJlc3ApCiAKICAgICAgICAgICAgIHR5cCA9IHNlbGYubW8uZ3JvdXAoJ3R5cGUnKQotICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgJ0FTQ0lJJykKKyAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgZGF0ID0gc2VsZi5tby5ncm91cCgnZGF0YScpCiAgICAgICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddID0gKHR5cCwgW2RhdF0pCiAgICAgICAgIGVsc2U6CkBAIC0xMDAxLDcgKzEwNDcsNyBAQAogICAgICAgICAgICAgIyAnKicgKHVudGFnZ2VkKSByZXNwb25zZXM/CiAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tYXRjaChVbnRhZ2dlZF9yZXNwb25zZSwgcmVzcCk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fbWF0Y2goVW50YWdnZWRfc3RhdHVzLCByZXNwKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9tYXRjaChzZWxmLlVudGFnZ2VkX3N0YXR1cywgcmVzcCk6CiAgICAgICAgICAgICAgICAgICAgIGRhdDIgPSBzZWxmLm1vLmdyb3VwKCdkYXRhMicpCiAKICAgICAgICAgICAgIGlmIHNlbGYubW8gaXMgTm9uZToKQEAgLTEwMTEsMTcgKzEwNTcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb25fcmVzcG9uc2UgPSBzZWxmLm1vLmdyb3VwKCdkYXRhJykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUgICAgICMgTkI6IGluZGljYXRlcyBjb250aW51YXRpb24KIAotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoInVuZXhwZWN0ZWQgcmVzcG9uc2U6ICclcyciICUgcmVzcCkKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCJ1bmV4cGVjdGVkIHJlc3BvbnNlOiAlciIgJSByZXNwKQogCiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICdhc2NpaScpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICAgaWYgZGF0IGlzIE5vbmU6IGRhdCA9IGInJyAgICAgICAgIyBOdWxsIHVudGFnZ2VkIHJlc3BvbnNlCiAgICAgICAgICAgICBpZiBkYXQyOiBkYXQgPSBkYXQgKyBiJyAnICsgZGF0MgogCiAgICAgICAgICAgICAjIElzIHRoZXJlIGEgbGl0ZXJhbCB0byBjb21lPwogCi0gICAgICAgICAgICB3aGlsZSBzZWxmLl9tYXRjaChMaXRlcmFsLCBkYXQpOgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fbWF0Y2goc2VsZi5MaXRlcmFsLCBkYXQpOgogCiAgICAgICAgICAgICAgICAgIyBSZWFkIGxpdGVyYWwgZGlyZWN0IGZyb20gY29ubmVjdGlvbi4KIApAQCAtMTA0NSw3ICsxMDkxLDcgQEAKIAogICAgICAgICBpZiB0eXAgaW4gKCdPSycsICdOTycsICdCQUQnKSBhbmQgc2VsZi5fbWF0Y2goUmVzcG9uc2VfY29kZSwgZGF0KToKICAgICAgICAgICAgIHR5cCA9IHNlbGYubW8uZ3JvdXAoJ3R5cGUnKQotICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgIkFTQ0lJIikKKyAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3VudGFnZ2VkKHR5cCwgc2VsZi5tby5ncm91cCgnZGF0YScpKQogCiAgICAgICAgIGlmIF9fZGVidWdfXzoKQEAgLTExMTUsNyArMTE2MSw3IEBACiAKICAgICBkZWYgX25ld190YWcoc2VsZik6CiAKLSAgICAgICAgdGFnID0gc2VsZi50YWdwcmUgKyBieXRlcyhzdHIoc2VsZi50YWdudW0pLCAnQVNDSUknKQorICAgICAgICB0YWcgPSBzZWxmLnRhZ3ByZSArIGJ5dGVzKHN0cihzZWxmLnRhZ251bSksIHNlbGYuX2VuY29kaW5nKQogICAgICAgICBzZWxmLnRhZ251bSA9IHNlbGYudGFnbnVtICsgMQogICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddID0gTm9uZQogICAgICAgICByZXR1cm4gdGFnCkBAIC0xMjA1LDcgKzEyNTEsOCBAQAogICAgICAgICAiIiIKIAogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQpAQCAtMTI0Myw3ICsxMjkwLDcgQEAKIAogICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X3N0cmVhbShjb21tYW5kKQogCi0gICAgICAgICAgICB3aGVyZSAiY29tbWFuZCIgaXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN1YnByb2Nlc3MuUG9wZW4oKQorICAgICAgICAgICAgImNvbW1hbmQiIC0gYSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN1YnByb2Nlc3MuUG9wZW4oKQogCiAgICAgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGRvY3N0cmluZyBvZiB0aGUgcGFyZW50IGNsYXNzIElNQVA0LgogICAgICIiIgpAQCAtMTMyMCw3ICsxMzY3LDcgQEAKICAgICAgICAgIwogICAgICAgICBvdXAgPSBiJycKICAgICAgICAgaWYgaXNpbnN0YW5jZShpbnAsIHN0cik6Ci0gICAgICAgICAgICBpbnAgPSBpbnAuZW5jb2RlKCdBU0NJSScpCisgICAgICAgICAgICBpbnAgPSBpbnAuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHdoaWxlIGlucDoKICAgICAgICAgICAgIGlmIGxlbihpbnApID4gNDg6CiAgICAgICAgICAgICAgICAgdCA9IGlucFs6NDhdCmRpZmYgLS1naXQgYS9MaWIvaW1naGRyLnB5IGIvTGliL2ltZ2hkci5weQppbmRleCBhZGQyZWE4Li5iMjY3OTI1IDEwMDY0NAotLS0gYS9MaWIvaW1naGRyLnB5CisrKyBiL0xpYi9pbWdoZHIucHkKQEAgLTExMCw2ICsxMTAsMTggQEAKIAogdGVzdHMuYXBwZW5kKHRlc3RfYm1wKQogCitkZWYgdGVzdF93ZWJwKGgsIGYpOgorICAgIGlmIGguc3RhcnRzd2l0aChiJ1JJRkYnKSBhbmQgaFs4OjEyXSA9PSBiJ1dFQlAnOgorICAgICAgICByZXR1cm4gJ3dlYnAnCisKK3Rlc3RzLmFwcGVuZCh0ZXN0X3dlYnApCisKK2RlZiB0ZXN0X2V4cihoLCBmKToKKyAgICBpZiBoLnN0YXJ0c3dpdGgoYidceDc2XHgyZlx4MzFceDAxJyk6CisgICAgICAgIHJldHVybiAnZXhyJworCit0ZXN0cy5hcHBlbmQodGVzdF9leHIpCisKICMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKICMgU21hbGwgdGVzdCBwcm9ncmFtICMKICMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5CmluZGV4IGM5MjJlOTIuLjJjZDY0NDAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXAucHkKKysrIGIvTGliL2ltcC5weQpAQCAtOCwxNSArOCwxNiBAQAogIyAoUHJvYmFibHkpIG5lZWQgdG8gc3RheSBpbiBfaW1wCiBmcm9tIF9pbXAgaW1wb3J0IChsb2NrX2hlbGQsIGFjcXVpcmVfbG9jaywgcmVsZWFzZV9sb2NrLAogICAgICAgICAgICAgICAgICAgZ2V0X2Zyb3plbl9vYmplY3QsIGlzX2Zyb3plbl9wYWNrYWdlLAotICAgICAgICAgICAgICAgICAgaW5pdF9idWlsdGluLCBpbml0X2Zyb3plbiwgaXNfYnVpbHRpbiwgaXNfZnJvemVuLAorICAgICAgICAgICAgICAgICAgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKICAgICAgICAgICAgICAgICAgIF9maXhfY29fZmlsZW5hbWUpCiB0cnk6Ci0gICAgZnJvbSBfaW1wIGltcG9ydCBsb2FkX2R5bmFtaWMKKyAgICBmcm9tIF9pbXAgaW1wb3J0IGNyZWF0ZV9keW5hbWljCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgIyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBsb2FkaW5nLgotICAgIGxvYWRfZHluYW1pYyA9IE5vbmUKKyAgICBjcmVhdGVfZHluYW1pYyA9IE5vbmUKIAotZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIsIF9FUlJfTVNHLCBfU3BlY01ldGhvZHMKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IF9FUlJfTVNHLCBfZXhlYywgX2xvYWQsIF9idWlsdGluX2Zyb21fbmFtZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKQEAgLTI5LDcgKzMwLDcgQEAKIAogd2FybmluZ3Mud2FybigidGhlIGltcCBtb2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOyAiCiAgICAgICAgICAgICAgICJzZWUgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIGFsdGVybmF0aXZlIHVzZXMiLAotICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAKICMgREVQUkVDQVRFRAogU0VBUkNIX0VSUk9SID0gMApAQCAtNTgsMjQgKzU5LDIzIEBACiBkZWYgZ2V0X21hZ2ljKCk6CiAgICAgIiIiKipERVBSRUNBVEVEKioKIAotICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuCisgICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgZmlsZXMuCiAgICAgIiIiCiAgICAgcmV0dXJuIHV0aWwuTUFHSUNfTlVNQkVSCiAKIAogZGVmIGdldF90YWcoKToKLSAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgdGFnIGZvciAucHljIGZpbGVzLiIiIgogICAgIHJldHVybiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCiAKIAogZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgogICAgICIiIioqREVQUkVDQVRFRCoqCiAKLSAgICBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLgorICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5YyBmaWxlLgogCiAgICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCi0gICAgLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb24KLSAgICB3aWxsIGJlIC5weWMgdW5sZXNzIHN5cy5mbGFncy5vcHRpbWl6ZSBpcyBub24temVybywgdGhlbiBpdCB3aWxsIGJlIC5weW8uCisgICAgLnB5YyBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuCiAKICAgICBJZiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgdGhlbiBpdCBtdXN0IGJlIGEgYm9vbGVhbiBhbmQgaXMgdXNlZCBpbgogICAgIHBsYWNlIG9mIHN5cy5mbGFncy5vcHRpbWl6ZS4KQEAgLTgzLDE2ICs4MywxOCBAQAogICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGUpCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgIHJldHVybiB1dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlKQogCiAKIGRlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKICAgICAiIiIqKkRFUFJFQ0FURUQqKgogCi0gICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCisgICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLiBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgogCi0gICAgVGhlIC5weWMvLnB5byBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KLSAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGggZG9lcworICAgIFRoZSAucHljIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcwogICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKICAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KIApAQCAtMTY0LDExICsxNjYsMTAgQEAKIGRlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKICAgICBsb2FkZXIgPSBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpCiAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMuZXhlYyhzeXMubW9kdWxlc1tuYW1lXSkKKyAgICAgICAgbW9kdWxlID0gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgbW9kdWxlID0gX2xvYWQoc3BlYykKICAgICAjIFRvIGFsbG93IHJlbG9hZGluZyB0byBwb3RlbnRpYWxseSB3b3JrLCB1c2UgYSBub24taGFja2VkIGxvYWRlciB3aGljaAogICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCiAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKQEAgLTE4NSwxMSArMTg2LDEwIEBACiAgICAgIiIiKipERVBSRUNBVEVEKioiIiIKICAgICBsb2FkZXIgPSBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkKICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRobmFtZSwgbG9hZGVyPWxvYWRlcikKLSAgICBtZXRob2RzID0gX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5leGVjKHN5cy5tb2R1bGVzW25hbWVdKQorICAgICAgICBtb2R1bGUgPSBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgICBlbHNlOgotICAgICAgICBtb2R1bGUgPSBtZXRob2RzLmxvYWQoKQorICAgICAgICBtb2R1bGUgPSBfbG9hZChzcGVjKQogICAgICMgVG8gYWxsb3cgcmVsb2FkaW5nIHRvIHBvdGVudGlhbGx5IHdvcmssIHVzZSBhIG5vbi1oYWNrZWQgbG9hZGVyIHdoaWNoCiAgICAgIyB3b24ndCByZWx5IG9uIGEgbm93LWNsb3NlZCBmaWxlIG9iamVjdC4KICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQpAQCAtMjEwLDExICsyMTAsMTAgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcGFja2FnZScuZm9ybWF0KHBhdGgpKQogICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9W10pCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIHJldHVybiBtZXRob2RzLmV4ZWMoc3lzLm1vZHVsZXNbbmFtZV0pCisgICAgICAgIHJldHVybiBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgICBlbHNlOgotICAgICAgICByZXR1cm4gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCiAKIAogZGVmIGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBkZXRhaWxzKToKQEAgLTMxMywzICszMTIsMjggQEAKIAogICAgICIiIgogICAgIHJldHVybiBpbXBvcnRsaWIucmVsb2FkKG1vZHVsZSkKKworCitkZWYgaW5pdF9idWlsdGluKG5hbWUpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBMb2FkIGFuZCByZXR1cm4gYSBidWlsdC1pbiBtb2R1bGUgYnkgbmFtZSwgb3IgTm9uZSBpcyBzdWNoIG1vZHVsZSBkb2Vzbid0CisgICAgZXhpc3QKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfYnVpbHRpbl9mcm9tX25hbWUobmFtZSkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybiBOb25lCisKKworaWYgY3JlYXRlX2R5bmFtaWM6CisgICAgZGVmIGxvYWRfZHluYW1pYyhuYW1lLCBwYXRoLCBmaWxlPU5vbmUpOgorICAgICAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgICAgIExvYWQgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihuYW1lLCBwYXRoKQorICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKCkKK2Vsc2U6CisgICAgbG9hZF9keW5hbWljID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMWJjOTk0Ny4uYjZhOWY4MiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0zMCw5ICszMCwyNiBAQAogICAgICAgICBwYXNzCiAgICAgc3lzLm1vZHVsZXNbJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJ10gPSBfYm9vdHN0cmFwCiAKK3RyeToKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwgYXMgX2Jvb3RzdHJhcF9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAorICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX3NldHVwKF9ib290c3RyYXApCisgICAgX2Jvb3RzdHJhcC5fYm9vdHN0cmFwX2V4dGVybmFsID0gX2Jvb3RzdHJhcF9leHRlcm5hbAorZWxzZToKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fbmFtZV9fID0gJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJworICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX19wYWNrYWdlX18gPSAnaW1wb3J0bGliJworICAgIHRyeToKKyAgICAgICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fX2ZpbGVfXyA9IF9fZmlsZV9fLnJlcGxhY2UoJ19faW5pdF9fLnB5JywgJ19ib290c3RyYXBfZXh0ZXJuYWwucHknKQorICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICMgX19maWxlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCwgZS5nLiBpZiB0aGlzIGNvZGUgZ2V0cworICAgICAgICAjIGZyb3plbiBieSBhIHRvb2wgbGlrZSBjeF9GcmVlemUuCisgICAgICAgIHBhc3MKKyAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnXSA9IF9ib290c3RyYXBfZXh0ZXJuYWwKKwogIyBUbyBzaW1wbGlmeSBpbXBvcnRzIGluIHRlc3QgY29kZQotX3dfbG9uZyA9IF9ib290c3RyYXAuX3dfbG9uZwotX3JfbG9uZyA9IF9ib290c3RyYXAuX3JfbG9uZworX3dfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3dfbG9uZworX3JfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3JfbG9uZwogCiAjIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCiAjIGRlcGVuZGVuY2llcyBhbmQgc3RhcnR1cCBvdmVyaGVhZCBtaW5pbWlzYXRpb24gcGVybWl0dGluZyA6KQpAQCAtNzMsNyArOTAsNyBAQAogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgbm90IHNldCcuZm9ybWF0KG5hbWUpKSBmcm9tIE5vbmUKIAogICAgIHNwZWMgPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICAjIFdlIHdvbid0IHdvcnJ5IGFib3V0IG1hbGZvcm1lZCBzcGVjcyAobWlzc2luZyBhdHRyaWJ1dGVzKS4KQEAgLTEzOCwxNSArMTU1LDE1IEBACiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc3lzLm1vZHVsZXNbcGFyZW50X25hbWVdCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwgbmFtZT1wYXJlbnRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXBhcmVudF9uYW1lKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGtncGF0aCA9IHBhcmVudC5fX3BhdGhfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGtncGF0aCA9IE5vbmUKICAgICAgICAgdGFyZ2V0ID0gbW9kdWxlCiAgICAgICAgIHNwZWMgPSBtb2R1bGUuX19zcGVjX18gPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGtncGF0aCwgdGFyZ2V0KQotICAgICAgICBtZXRob2RzID0gX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKLSAgICAgICAgbWV0aG9kcy5leGVjKG1vZHVsZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fZXhlYyhzcGVjLCBtb2R1bGUpCiAgICAgICAgICMgVGhlIG1vZHVsZSBtYXkgaGF2ZSByZXBsYWNlZCBpdHNlbGYgaW4gc3lzLm1vZHVsZXMhCiAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggNWI5MWMwNS4uOTMxNzU0ZSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtOSw3ICs5LDcgQEAKICMKICMgSU1QT1JUQU5UOiBXaGVuZXZlciBtYWtpbmcgY2hhbmdlcyB0byB0aGlzIG1vZHVsZSwgYmUgc3VyZSB0byBydW4KICMgYSB0b3AtbGV2ZWwgbWFrZSBpbiBvcmRlciB0byBnZXQgdGhlIGZyb3plbiB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKLSMgdXBkYXRlLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKICMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQogIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgogIwpAQCAtMjIsMTAxICsyMiw3IEBACiAKICMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwotCi0KLWRlZiBfbWFrZV9yZWxheF9jYXNlKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKLSAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6Ci0gICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgotICAgICAgICAgICAgcmV0dXJuIGInUFlUSE9OQ0FTRU9LJyBpbiBfb3MuZW52aXJvbgotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgotICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBfcmVsYXhfY2FzZQotCi0KLWRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLiIiIgotICAgIHJldHVybiAoaW50KHgpICYgMHhGRkZGRkZGRikudG9fYnl0ZXMoNCwgJ2xpdHRsZScpCi0KLQotZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKLSAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgotICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhpbnRfYnl0ZXMsICdsaXR0bGUnKQotCi0KLWRlZiBfcGF0aF9qb2luKCpwYXRoX3BhcnRzKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luKCkuIiIiCi0gICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oW3BhcnQucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0cyBpZiBwYXJ0XSkKLQotCi1kZWYgX3BhdGhfc3BsaXQocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKLSAgICBpZiBsZW4ocGF0aF9zZXBhcmF0b3JzKSA9PSAxOgotICAgICAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihwYXRoX3NlcCkKLSAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgZm9yIHggaW4gcmV2ZXJzZWQocGF0aCk6Ci0gICAgICAgIGlmIHggaW4gcGF0aF9zZXBhcmF0b3JzOgotICAgICAgICAgICAgZnJvbnQsIHRhaWwgPSBwYXRoLnJzcGxpdCh4LCBtYXhzcGxpdD0xKQotICAgICAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgcmV0dXJuICcnLCBwYXRoCi0KLQotZGVmIF9wYXRoX3N0YXQocGF0aCk6Ci0gICAgIiIiU3RhdCB0aGUgcGF0aC4KLQotICAgIE1hZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBvdmVycmlkZSBpbiBleHBlcmltZW50cwotICAgIChlLmcuIGNhY2hlIHN0YXQgcmVzdWx0cykuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gX29zLnN0YXQocGF0aCkKLQotCi1kZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgotICAgICIiIlRlc3Qgd2hldGhlciB0aGUgcGF0aCBpcyB0aGUgc3BlY2lmaWVkIG1vZGUgdHlwZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHN0YXRfaW5mbyA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIChzdGF0X2luZm8uc3RfbW9kZSAmIDBvMTcwMDAwKSA9PSBtb2RlCi0KLQotZGVmIF9wYXRoX2lzZmlsZShwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5pc2ZpbGUuIiIiCi0gICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzEwMDAwMCkKLQotCi1kZWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNkaXIuIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKLSAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQotCi0KLWRlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgotICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCi0gICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKLSAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCi0gICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgotICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCi0gICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKLSAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQotICAgIHRyeToKLSAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KLSAgICAgICAgIyBwZXJmb3JtIGFuIGF0b21pYyByZW5hbWUuCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhmZCwgJ3diJykgYXMgZmlsZToKLSAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgX29zLnJlcGxhY2UocGF0aF90bXAsIHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF9vcy51bmxpbmsocGF0aF90bXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByYWlzZQotCitfYm9vdHN0cmFwX2V4dGVybmFsID0gTm9uZQogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgogICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuIiIiCkBAIC0xMzAsMTAgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotX2NvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCi0KLQotCiBjbGFzcyBfTWFuYWdlUmVsb2FkOgogCiAgICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCkBAIC0zMDksNyArMjExLDYgQEAKICAgICAgICAgbG9jay5yZWxlYXNlKCkKIAogIyBGcmFtZSBzdHJpcHBpbmcgbWFnaWMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogZGVmIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcwogICAgIG9mIGltcG9ydGxpYiBmcmFtZXMgdGhhdCBlbmQgd2l0aCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgpAQCAtMzIxLDIwMCArMjIyLDYgQEAKICAgICByZXR1cm4gZigqYXJncywgKiprd2RzKQogCiAKLSMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCi0jIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCi0jCi0jIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKLSMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0jIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCi0jCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKLSMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQotIyAxMC4KLSMKLSMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYwotIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0jIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCi0jIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcwotIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0jIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCi0jIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZwotIyB3aXRoIFB5dGhvbiAzLjJhMC4KLSMKLSMgS25vd24gdmFsdWVzOgotIyAgUHl0aG9uIDEuNTogICAyMDEyMQotIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAotIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMwotIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNwotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKLSMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKLSMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0jICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQotIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQotIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0jICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKLSMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKLSMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCi0jICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCi0jICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQotIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQotIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAotIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQotIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0jICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQotIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQotIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCi0jICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQotIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KLSMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6Ci0jICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCi0jICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCi0jICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCi0jICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKLSMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCi0jICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCi0jICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCi0jICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQotIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKLSMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCi0jICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKLSMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQotIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQotIwotIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCi0jIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0jIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgotCi1NQUdJQ19OVU1CRVIgPSAoMzMxMCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwotX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKLQotX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCi0KLVNPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10gICMgX3NldHVwKCkgYWRkcyAucHl3IGFzIG5lZWRlZC4KLQotREVCVUdfQllURUNPREVfU1VGRklYRVMgPSBbJy5weWMnXQotT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHlvJ10KLQotZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgotICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuCi0KLSAgICBUaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUKLSAgICAucHljLy5weW8gZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLiAgVGhlIGV4dGVuc2lvbgotICAgIHdpbGwgYmUgLnB5YyB1bmxlc3Mgc3lzLmZsYWdzLm9wdGltaXplIGlzIG5vbi16ZXJvLCB0aGVuIGl0IHdpbGwgYmUgLnB5by4KLQotICAgIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB1c2VkIGluCi0gICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgotCi0gICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBkZWJ1ZyA9IG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgaWYgZGVidWdfb3ZlcnJpZGUgaXMgTm9uZSBlbHNlIGRlYnVnX292ZXJyaWRlCi0gICAgaWYgZGVidWc6Ci0gICAgICAgIHN1ZmZpeGVzID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLSAgICBlbHNlOgotICAgICAgICBzdWZmaXhlcyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwotICAgIGlmIHRhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGZpbGVuYW1lID0gJycuam9pbihbKGJhc2UgaWYgYmFzZSBlbHNlIHJlc3QpLCBzZXAsIHRhZywgc3VmZml4ZXNbMF1dKQotICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBmaWxlbmFtZSkKLQotCi1kZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6Ci0gICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCi0KLSAgICBUaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bwotICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMvLnB5byBmaWxlLiAgSWYgcGF0aCBkb2VzCi0gICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZgotICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQotICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IG5vdCBib3R0b20tbGV2ZWwgZGlyZWN0b3J5IGluICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KF9QWUNBQ0hFLCBwYXRoKSkKLSAgICBpZiBweWNhY2hlX2ZpbGVuYW1lLmNvdW50KCcuJykgIT0gMjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhwZWN0ZWQgb25seSAyIGRvdHMgaW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQocHljYWNoZV9maWxlbmFtZSkpCi0gICAgYmFzZV9maWxlbmFtZSA9IHB5Y2FjaGVfZmlsZW5hbWUucGFydGl0aW9uKCcuJylbMF0KLSAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBiYXNlX2ZpbGVuYW1lICsgU09VUkNFX1NVRkZJWEVTWzBdKQotCi0KLWRlZiBfZ2V0X3NvdXJjZWZpbGUoYnl0ZWNvZGVfcGF0aCk6Ci0gICAgIiIiQ29udmVydCBhIGJ5dGVjb2RlIGZpbGUgcGF0aCB0byBhIHNvdXJjZSBwYXRoIChpZiBwb3NzaWJsZSkuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBwdXJlbHkgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvcgotICAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aEZpbGVuYW1lcygpIGluIHRoZSBDIEFQSS4KLQotICAgICIiIgotICAgIGlmIGxlbihieXRlY29kZV9wYXRoKSA9PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJlc3QsIF8sIGV4dGVuc2lvbiA9IGJ5dGVjb2RlX3BhdGgucnBhcnRpdGlvbignLicpCi0gICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICdweSc6Ci0gICAgICAgIHJldHVybiBieXRlY29kZV9wYXRoCi0gICAgdHJ5OgotICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCi0gICAgZXhjZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgc291cmNlX3BhdGggPSBieXRlY29kZV9wYXRoWzotMV0KLSAgICByZXR1cm4gc291cmNlX3BhdGggaWYgX3BhdGhfaXNmaWxlKHNvdXJjZV9wYXRoKSBlbHNlIGJ5dGVjb2RlX3BhdGgKLQotCi1kZWYgX2NhbGNfbW9kZShwYXRoKToKLSAgICAiIiJDYWxjdWxhdGUgdGhlIG1vZGUgcGVybWlzc2lvbnMgZm9yIGEgYnl0ZWNvZGUgZmlsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIG1vZGUgPSBfcGF0aF9zdGF0KHBhdGgpLnN0X21vZGUKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgbW9kZSA9IDBvNjY2Ci0gICAgIyBXZSBhbHdheXMgZW5zdXJlIHdyaXRlIGFjY2VzcyBzbyB3ZSBjYW4gdXBkYXRlIGNhY2hlZCBmaWxlcwotICAgICMgbGF0ZXIgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQtb25seSBvbiBXaW5kb3dzICgjNjA3NCkKLSAgICBtb2RlIHw9IDBvMjAwCi0gICAgcmV0dXJuIG1vZGUKLQotCiBkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgogICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6CkBAIC01MjMsMjQgKzIzMCw2IEBACiAgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQogCiAKLWRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgotICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCi0gICAgbG9hZGVyIGNhbiBoYW5kbGUuCi0KLSAgICBUaGUgZmlyc3QgYXJndW1lbnQgKHNlbGYpIG11c3QgZGVmaW5lIF9uYW1lIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGRlZiBfY2hlY2tfbmFtZV93cmFwcGVyKHNlbGYsIG5hbWU9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQotICAgICAgICBlbGlmIHNlbGYubmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlciBjYW5ub3QgaGFuZGxlICVzJyAlIG5hbWUsIG5hbWU9bmFtZSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCi0gICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQotICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCi0KLQogZGVmIF9yZXF1aXJlc19idWlsdGluKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGJ1aWx0LWluLiIiIgogICAgIGRlZiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKQEAgLTU2MywyMyArMjUyLDcgQEAKICAgICByZXR1cm4gX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyCiAKIAotZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bwotICAgIHNlbGYuZmluZF9sb2FkZXIoKS4KLQotICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgZmluZGVyLmZpbmRfc3BlYygpLgotCi0gICAgIiIiCi0gICAgIyBDYWxsIGZpbmRfbG9hZGVyKCkuIElmIGl0IHJldHVybnMgYSBzdHJpbmcgKGluZGljYXRpbmcgdGhpcwotICAgICMgaXMgYSBuYW1lc3BhY2UgcGFja2FnZSBwb3J0aW9uKSwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZAotICAgICMgcmV0dXJuIE5vbmUuCi0gICAgbG9hZGVyLCBwb3J0aW9ucyA9IHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpCi0gICAgaWYgbG9hZGVyIGlzIE5vbmUgYW5kIGxlbihwb3J0aW9ucyk6Ci0gICAgICAgIG1zZyA9ICdOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSB7fTogbWlzc2luZyBfX2luaXRfXycKLSAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLmZvcm1hdChwb3J0aW9uc1swXSksIEltcG9ydFdhcm5pbmcpCi0gICAgcmV0dXJuIGxvYWRlcgotCi0KKyMgVHlwaWNhbGx5IHVzZWQgYnkgbG9hZGVyIGNsYXNzZXMgYXMgYSBtZXRob2QgcmVwbGFjZW1lbnQuCiBkZWYgX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgogICAgICIiIkxvYWQgdGhlIHNwZWNpZmllZCBtb2R1bGUgaW50byBzeXMubW9kdWxlcyBhbmQgcmV0dXJuIGl0LgogCkBAIC01ODcsMTAzICsyNjAsMTIgQEAKIAogICAgICIiIgogICAgIHNwZWMgPSBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBzZWxmKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCi0gICAgICAgIG1ldGhvZHMuZXhlYyhtb2R1bGUpCisgICAgICAgIF9leGVjKHNwZWMsIG1vZHVsZSkKICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBtZXRob2RzLmxvYWQoKQotCi0KLWRlZiBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsIHNvdXJjZV9zdGF0cz1Ob25lLCBuYW1lPU5vbmUsIHBhdGg9Tm9uZSk6Ci0gICAgIiIiVmFsaWRhdGUgdGhlIGhlYWRlciBvZiB0aGUgcGFzc2VkLWluIGJ5dGVjb2RlIGFnYWluc3Qgc291cmNlX3N0YXRzIChpZgotICAgIGdpdmVuKSBhbmQgcmV0dXJuaW5nIHRoZSBieXRlY29kZSB0aGF0IGNhbiBiZSBjb21waWxlZCBieSBjb21waWxlKCkuCi0KLSAgICBBbGwgb3RoZXIgYXJndW1lbnRzIGFyZSB1c2VkIHRvIGVuaGFuY2UgZXJyb3IgcmVwb3J0aW5nLgotCi0gICAgSW1wb3J0RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIG1hZ2ljIG51bWJlciBpcyBpbmNvcnJlY3Qgb3IgdGhlIGJ5dGVjb2RlIGlzCi0gICAgZm91bmQgdG8gYmUgc3RhbGUuIEVPRkVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBkYXRhIGlzIGZvdW5kIHRvIGJlCi0gICAgdHJ1bmNhdGVkLgotCi0gICAgIiIiCi0gICAgZXhjX2RldGFpbHMgPSB7fQotICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWyduYW1lJ10gPSBuYW1lCi0gICAgZWxzZToKLSAgICAgICAgIyBUbyBwcmV2ZW50IGhhdmluZyB0byBtYWtlIGFsbCBtZXNzYWdlcyBoYXZlIGEgY29uZGl0aW9uYWwgbmFtZS4KLSAgICAgICAgbmFtZSA9ICc8Ynl0ZWNvZGU+JwotICAgIGlmIHBhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWydwYXRoJ10gPSBwYXRoCi0gICAgbWFnaWMgPSBkYXRhWzo0XQotICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KLSAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6Ci0gICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKLSAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgdGltZXN0YW1wIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCi0gICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6Ci0gICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQotICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHNvdXJjZV9zdGF0c1snbXRpbWUnXSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3NpemUpICE9IHNvdXJjZV9zaXplOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqZXhjX2RldGFpbHMpCi0gICAgcmV0dXJuIGRhdGFbMTI6XQotCi0KLWRlZiBfY29tcGlsZV9ieXRlY29kZShkYXRhLCBuYW1lPU5vbmUsIGJ5dGVjb2RlX3BhdGg9Tm9uZSwgc291cmNlX3BhdGg9Tm9uZSk6Ci0gICAgIiIiQ29tcGlsZSBieXRlY29kZSBhcyByZXR1cm5lZCBieSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKCkuIiIiCi0gICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKLSAgICBpZiBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgcmV0dXJuIGNvZGUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignTm9uLWNvZGUgb2JqZWN0IGluIHshcn0nLmZvcm1hdChieXRlY29kZV9wYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCi0KLWRlZiBfY29kZV90b19ieXRlY29kZShjb2RlLCBtdGltZT0wLCBzb3VyY2Vfc2l6ZT0wKToKLSAgICAiIiJDb21waWxlIGEgY29kZSBvYmplY3QgaW50byBieXRlY29kZSBmb3Igd3JpdGluZyBvdXQgdG8gYSBieXRlLWNvbXBpbGVkCi0gICAgZmlsZS4iIiIKLSAgICBkYXRhID0gYnl0ZWFycmF5KE1BR0lDX05VTUJFUikKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKG10aW1lKSkKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKHNvdXJjZV9zaXplKSkKLSAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGUpKQotICAgIHJldHVybiBkYXRhCi0KLQotZGVmIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKToKLSAgICAiIiJEZWNvZGUgYnl0ZXMgcmVwcmVzZW50aW5nIHNvdXJjZSBjb2RlIGFuZCByZXR1cm4gdGhlIHN0cmluZy4KLQotICAgIFVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQgaXMgdXNlZCBpbiB0aGUgZGVjb2RpbmcuCi0gICAgIiIiCi0gICAgaW1wb3J0IHRva2VuaXplICAjIFRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMuCi0gICAgc291cmNlX2J5dGVzX3JlYWRsaW5lID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQotICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHNvdXJjZV9ieXRlc19yZWFkbGluZSkKLSAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQotICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQotCisgICAgICAgIHJldHVybiBfbG9hZChzcGVjKQogCiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTcwNCw3ICsyODYsNyBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfU3BlY01ldGhvZHMoc3BlYykubW9kdWxlX3JlcHIoKQorICAgICAgICAgICAgcmV0dXJuIF9tb2R1bGVfcmVwcl9mcm9tX3NwZWMoc3BlYykKIAogICAgICMgV2UgY291bGQgdXNlIG1vZHVsZS5fX2NsYXNzX18uX19uYW1lX18gaW5zdGVhZCBvZiAnbW9kdWxlJyBpbiB0aGUKICAgICAjIHZhcmlvdXMgcmVwciBwZXJtdXRhdGlvbnMuCkBAIC04MjUsMTQgKzQwNyw5IEBACiAgICAgZGVmIGNhY2hlZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fY2FjaGVkIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBzZWxmLm9yaWdpbiBpcyBub3QgTm9uZSBhbmQgc2VsZi5fc2V0X2ZpbGVhdHRyOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vcmlnaW4KLSAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShTT1VSQ0VfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gY2FjaGVfZnJvbV9zb3VyY2UoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoQllURUNPREVfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBpZiBfYm9vdHN0cmFwX2V4dGVybmFsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWQgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfY2FjaGVkKHNlbGYub3JpZ2luKQogICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkCiAKICAgICBAY2FjaGVkLnNldHRlcgpAQCAtODU5LDYgKzQzNiwxMCBAQAogZGVmIHNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyLCAqLCBvcmlnaW49Tm9uZSwgaXNfcGFja2FnZT1Ob25lKToKICAgICAiIiJSZXR1cm4gYSBtb2R1bGUgc3BlYyBiYXNlZCBvbiB2YXJpb3VzIGxvYWRlciBtZXRob2RzLiIiIgogICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgIGlmIF9ib290c3RyYXBfZXh0ZXJuYWwgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24gPSBfYm9vdHN0cmFwX2V4dGVybmFsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCisKICAgICAgICAgaWYgaXNfcGFja2FnZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHNlYXJjaCA9IFtdIGlmIGlzX3BhY2thZ2UgZWxzZSBOb25lCkBAIC04ODEsNzAgKzQ2Miw2IEBACiBfUE9QVUxBVEUgPSBvYmplY3QoKQogCiAKLWRlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgotICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KLQotICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAotICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgotICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKLSAgICBpbXBvcnQgc3lzdGVtLgotCi0gICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgotCi0gICAgIiIiCi0gICAgaWYgbG9jYXRpb24gaXMgTm9uZToKLSAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCi0gICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKLSAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgotICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCi0gICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6Ci0gICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKLSAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90Ci0gICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCi0gICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQotICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCi0KLSAgICBzcGVjID0gTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1sb2NhdGlvbikKLSAgICBzcGVjLl9zZXRfZmlsZWF0dHIgPSBUcnVlCi0KLSAgICAjIFBpY2sgYSBsb2FkZXIgaWYgb25lIHdhc24ndCBwcm92aWRlZC4KLSAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgZm9yIGxvYWRlcl9jbGFzcywgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgICAgICAgICBpZiBsb2NhdGlvbi5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhuYW1lLCBsb2NhdGlvbikKLSAgICAgICAgICAgICAgICBzcGVjLmxvYWRlciA9IGxvYWRlcgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIyBTZXQgc3VibW9kdWxlX3NlYXJjaF9wYXRocyBhcHByb3ByaWF0ZWx5LgotICAgIGlmIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIF9QT1BVTEFURToKLSAgICAgICAgIyBDaGVjayB0aGUgbG9hZGVyLgotICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2lzX3BhY2thZ2UnKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpc19wYWNrYWdlID0gbG9hZGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbXQotICAgIGVsc2U6Ci0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPT0gW106Ci0gICAgICAgIGlmIGxvY2F0aW9uOgotICAgICAgICAgICAgZGlybmFtZSA9IF9wYXRoX3NwbGl0KGxvY2F0aW9uKVswXQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucy5hcHBlbmQoZGlybmFtZSkKLQotICAgIHJldHVybiBzcGVjCi0KLQogZGVmIF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyPU5vbmUsIG9yaWdpbj1Ob25lKToKICAgICAjIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIHVzZSBpbiBfc2V0dXAoKS4KICAgICB0cnk6CkBAIC05OTAsMjU3ICs1MDcsMTkwIEBACiAgICAgcmV0dXJuIHNwZWMKIAogCi1jbGFzcyBfU3BlY01ldGhvZHM6CitkZWYgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgKiwgb3ZlcnJpZGU9RmFsc2UpOgorICAgICMgVGhlIHBhc3NlZC1pbiBtb2R1bGUgbWF5IGJlIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZSBhc3NpZ25tZW50LAorICAgICMgaW4gd2hpY2ggY2FzZSB3ZSBzaW1wbHkgZG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGVzLgorICAgICMgX19uYW1lX18KKyAgICBpZiAob3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX25hbWVfXycsIE5vbmUpIGlzIE5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBzcGVjLm5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICMgX19sb2FkZXJfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgIyBBIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFjay4KKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgX2Jvb3RzdHJhcF9leHRlcm5hbCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgICAgICAgICAgX05hbWVzcGFjZUxvYWRlciA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX05hbWVzcGFjZUxvYWRlcgogCi0gICAgIiIiQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgc3BlYyBvYmplY3RzIHRvIHByb3ZpZGUgc3BlYy1zcGVjaWZpYwotICAgIG1ldGhvZHMuIiIiCisgICAgICAgICAgICAgICAgbG9hZGVyID0gX05hbWVzcGFjZUxvYWRlci5fX25ld19fKF9OYW1lc3BhY2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbG9hZGVyLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3BhY2thZ2VfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLnBhcmVudAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3NwZWNfXworICAgIHRyeToKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgICMgX19wYXRoX18KKyAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICMgX19maWxlX18vX19jYWNoZWRfXworICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICMgVGhlIHZhcmlvdXMgc3BlY19mcm9tXyogZnVuY3Rpb25zIGNvdWxkIGJlIG1hZGUgZmFjdG9yeSBtZXRob2RzIGhlcmUuCisgICAgICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19jYWNoZWRfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLmNhY2hlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc3BlYy5jYWNoZWQKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbW9kdWxlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6Ci0gICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKIAotICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSByZXByIHRvIHVzZSBmb3IgdGhlIG1vZHVsZS4iIiIKLSAgICAgICAgIyBXZSBtb3N0bHkgcmVwbGljYXRlIF9tb2R1bGVfcmVwcigpIHVzaW5nIHRoZSBzcGVjIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgbmFtZSA9ICc/JyBpZiBzcGVjLm5hbWUgaXMgTm9uZSBlbHNlIHNwZWMubmFtZQotICAgICAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfT4nLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoeyFyfSk+Jy5mb3JtYXQobmFtZSwgc3BlYy5sb2FkZXIpCitkZWYgbW9kdWxlX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJDcmVhdGUgYSBtb2R1bGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNwZWMuIiIiCisgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgorICAgIG1vZHVsZSA9IE5vbmUKKyAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgorICAgICAgICAjIElmIGNyZWF0ZV9tb2R1bGUoKSByZXR1cm5zIGBOb25lYCB0aGVuIGl0IG1lYW5zIGRlZmF1bHQKKyAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKKyAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQorICAgIHJldHVybiBtb2R1bGUKKworCitkZWYgX21vZHVsZV9yZXByX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJSZXR1cm4gdGhlIHJlcHIgdG8gdXNlIGZvciB0aGUgbW9kdWxlLiIiIgorICAgICMgV2UgbW9zdGx5IHJlcGxpY2F0ZSBfbW9kdWxlX3JlcHIoKSB1c2luZyB0aGUgc3BlYyBhdHRyaWJ1dGVzLgorICAgIG5hbWUgPSAnPycgaWYgc3BlYy5uYW1lIGlzIE5vbmUgZWxzZSBzcGVjLm5hbWUKKyAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgorICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0+Jy5mb3JtYXQobmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IGZyb20geyFyfT4nLmZvcm1hdChuYW1lLCBzcGVjLm9yaWdpbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHshcn0pPicuZm9ybWF0KG5hbWUsIHNwZWMubG9hZGVyKQorICAgIGVsc2U6CisgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gZnJvbSB7IXJ9PicuZm9ybWF0KG5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQogCi0gICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG1vZHVsZSwgKiwgX292ZXJyaWRlPUZhbHNlLCBfZm9yY2VfbmFtZT1UcnVlKToKLSAgICAgICAgIiIiU2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzLgogCi0gICAgICAgIEFsbCBtaXNzaW5nIGltcG9ydC1yZWxhdGVkIG1vZHVsZSBhdHRyaWJ1dGVzIHdpbGwgYmUgc2V0LiAgSGVyZQotICAgICAgICBpcyBob3cgdGhlIHNwZWMgYXR0cmlidXRlcyBtYXAgb250byB0aGUgbW9kdWxlOgorIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgIG5hbWUgPSBzcGVjLm5hbWUKKyAgICBfaW1wLmFjcXVpcmVfbG9jaygpCisgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CisgICAgICAgIGlmIHN5cy5tb2R1bGVzLmdldChuYW1lKSBpcyBub3QgbW9kdWxlOgorICAgICAgICAgICAgbXNnID0gJ21vZHVsZSB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNwZWMubmFtZSkKKyAgICAgICAgICAgICMgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCisgICAgICAgICAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgICAgICAgICAjIHdhcm5pbmcgaGVyZS4KKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCiAKLSAgICAgICAgc3BlYy5uYW1lIC0+IG1vZHVsZS5fX25hbWVfXwotICAgICAgICBzcGVjLmxvYWRlciAtPiBtb2R1bGUuX19sb2FkZXJfXwotICAgICAgICBzcGVjLnBhcmVudCAtPiBtb2R1bGUuX19wYWNrYWdlX18KLSAgICAgICAgc3BlYyAtPiBtb2R1bGUuX19zcGVjX18KIAotICAgICAgICBPcHRpb25hbDoKLSAgICAgICAgc3BlYy5vcmlnaW4gLT4gbW9kdWxlLl9fZmlsZV9fIChpZiBzcGVjLnNldF9maWxlYXR0ciBpcyB0cnVlKQotICAgICAgICBzcGVjLmNhY2hlZCAtPiBtb2R1bGUuX19jYWNoZWRfXyAoaWYgX19maWxlX18gYWxzbyBzZXQpCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgLT4gbW9kdWxlLl9fcGF0aF9fIChpZiBzZXQpCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLQotICAgICAgICAjIFRoZSBwYXNzZWQgaW4gbW9kdWxlIG1heSBiZSBub3Qgc3VwcG9ydCBhdHRyaWJ1dGUgYXNzaWdubWVudCwKLSAgICAgICAgIyBpbiB3aGljaCBjYXNlIHdlIHNpbXBseSBkb24ndCBzZXQgdGhlIGF0dHJpYnV0ZXMuCi0KLSAgICAgICAgIyBfX25hbWVfXwotICAgICAgICBpZiAoX292ZXJyaWRlIG9yIF9mb3JjZV9uYW1lIG9yCi0gICAgICAgICAgICBnZXRhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJywgTm9uZSkgaXMgTm9uZSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gc3BlYy5uYW1lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgX19sb2FkZXJfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIEEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrLgotICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IF9OYW1lc3BhY2VMb2FkZXIuX19uZXdfXyhfTmFtZXNwYWNlTG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBsb2FkZXIuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3BhY2thZ2VfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gc3BlYy5wYXJlbnQKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3NwZWNfXworZGVmIF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoc3BlYyk6CisgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKKyAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgIyB3YXJuaW5nIGhlcmUuCisgICAgc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUoc3BlYy5uYW1lKQorICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbc3BlYy5uYW1lXQorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAorICAgICAgICAgICAgIyBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfcGF0aHMsIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJlbHkKKyAgICAgICAgICAgICMgb24gc3BlYy5wYXJlbnQgaGVyZS4KKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXworICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLm5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fc3BlY19fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQogCi0gICAgICAgICMgX19wYXRoX18KLSAgICAgICAgaWYgX292ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYXRoX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKK2RlZiBfbG9hZF91bmxvY2tlZChzcGVjKToKKyAgICAjIEEgaGVscGVyIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBpbXBvcnQgc3lzdGVtLgorICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIG5vdCBhIG5hbWVzcGFjZSBwYWNrYWdlCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgIHJldHVybiBfbG9hZF9iYWNrd2FyZF9jb21wYXRpYmxlKHNwZWMpCiAKLSAgICAgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246Ci0gICAgICAgICAgICAjIF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgotICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAjIF9fY2FjaGVkX18KLSAgICAgICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNwZWMuY2FjaGVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IHNwZWMuY2FjaGVkCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBjcmVhdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgdG8gYmUgbG9hZGVkLgotCi0gICAgICAgIFRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBhcmUgYWxzbyBzZXQgd2l0aCB0aGUKLSAgICAgICAgYXBwcm9wcmlhdGUgdmFsdWVzIGZyb20gdGhlIHNwZWMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgotICAgICAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgotICAgICAgICAgICAgIyBJZiBjcmVhdGVfbW9kdWxlKCkgcmV0dXJucyBgTm9uZWAgaXQgbWVhbnMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgotICAgICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgIG1vZHVsZSA9IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICB3aXRoIF9pbnN0YWxsZWRfc2FmZWx5KG1vZHVsZSk6CisgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zcGVjLm5hbWUpCisgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2Ugc28gZG8gbm90aGluZy4KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZSA9IE5vbmUKLSAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgZXZlciBjYWxsZWQgYXMgdGhlICdpbycKLSAgICAgICAgICAgICMgbW9kdWxlIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlCi0gICAgICAgICAgICAjIHRyaWdnZXIgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKIAotICAgIGRlZiBfZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJEbyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBleGVjdXRlIHRoZSBtb2R1bGUuCisgICAgIyBXZSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgaW1wb3J0LXJlbGF0ZWQgbW9kdWxlIGF0dHJpYnV0ZXMgZ2V0CisgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCisgICAgIyB0aGVpciBvd24uCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KIAotICAgICAgICBUaGUgbmFtZXNwYWNlIG9mIGBtb2R1bGVgIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiBleGVjdXRpb24uCi0gICAgICAgIFRoaXMgbWV0aG9kIHVzZXMgdGhlIGxvYWRlcidzIGBleGVjX21vZHVsZSgpYCBtZXRob2QuCisjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKKyMgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfbG9hZChzcGVjKToKKyAgICAiIiJSZXR1cm4gYSBuZXcgbW9kdWxlIG9iamVjdCwgbG9hZGVkIGJ5IHRoZSBzcGVjJ3MgbG9hZGVyLgogCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICBUaGUgbW9kdWxlIGlzIG5vdCBhZGRlZCB0byBpdHMgcGFyZW50LgogCi0gICAgIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KLSAgICBkZWYgZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJFeGVjdXRlIHRoZSBzcGVjIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKLSAgICAgICAgbmFtZSA9IHNlbGYuc3BlYy5uYW1lCi0gICAgICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6Ci0gICAgICAgICAgICBpZiBzeXMubW9kdWxlcy5nZXQobmFtZSkgaXMgbm90IG1vZHVsZToKLSAgICAgICAgICAgICAgICBtc2cgPSAnbW9kdWxlIHshcn0gbm90IGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKLSAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zZWxmLnNwZWMubmFtZSkKLSAgICAgICAgICAgICAgICAjIG5hbWVzcGFjZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUsIF9vdmVycmlkZT1UcnVlKQotICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICAgICAgICAgIHNlbGYuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlLCBfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAgICAgICAgICMgd2FybmluZyBoZXJlLgotICAgICAgICAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlYyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgIElmIGEgbW9kdWxlIGlzIGFscmVhZHkgaW4gc3lzLm1vZHVsZXMsIHRoYXQgZXhpc3RpbmcgbW9kdWxlIGdldHMKKyAgICBjbG9iYmVyZWQuCiAKLSAgICBkZWYgX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZShzZWxmKToKLSAgICAgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKLSAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAjIHdhcm5pbmcgaGVyZS4KLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotICAgICAgICBzcGVjLmxvYWRlci5sb2FkX21vZHVsZShzcGVjLm5hbWUpCi0gICAgICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KLSAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAotICAgICAgICAgICAgICAgICMgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX3BhdGhzLCB3ZSBjYW4ndCBuZWNlc3NhcmlseSByZWx5Ci0gICAgICAgICAgICAgICAgIyBvbiBzcGVjLnBhcmVudCBoZXJlLgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNwZWMubmFtZS5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19zcGVjX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBfbG9hZF91bmxvY2tlZChzZWxmKToKLSAgICAgICAgIyBBIGhlbHBlciBmb3IgZGlyZWN0IHVzZSBieSB0aGUgaW1wb3J0IHN5c3RlbS4KLSAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgbm90IGEgbmFtZXNwYWNlIHBhY2thZ2UKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoKQotCi0gICAgICAgIG1vZHVsZSA9IHNlbGYuY3JlYXRlKCkKLSAgICAgICAgd2l0aCBfaW5zdGFsbGVkX3NhZmVseShtb2R1bGUpOgotICAgICAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNlbGYuc3BlYy5uYW1lKQotICAgICAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSBzbyBkbyBub3RoaW5nLgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjKG1vZHVsZSkKLQotICAgICAgICAjIFdlIGRvbid0IGVuc3VyZSB0aGF0IHRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBnZXQKLSAgICAgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCi0gICAgICAgICMgdGhlaXIgb3duLgotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCi0KLSAgICAjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKLSAgICAjIF9sb2FkX21vZHVsZV9zaGltKCkuCi0gICAgZGVmIGxvYWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBsb2FkZWQgYnkgdGhlIHNwZWMncyBsb2FkZXIuCi0KLSAgICAgICAgVGhlIG1vZHVsZSBpcyBub3QgYWRkZWQgdG8gaXRzIHBhcmVudC4KLQotICAgICAgICBJZiBhIG1vZHVsZSBpcyBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLCB0aGF0IGV4aXN0aW5nIG1vZHVsZSBnZXRzCi0gICAgICAgIGNsb2JiZXJlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQotICAgICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9hZF91bmxvY2tlZCgpCi0KLQotZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgotICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCi0gICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKLSAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCi0gICAgaWYgbm90IGxvYWRlcjoKLSAgICAgICAgaWYgc3BlYzoKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgotICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQotICAgIGlmIG5vdCBzcGVjOgotICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgdHJ5OgotICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKLSAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgotICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCi0gICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KLSAgICAgICAgcGFzcworICAgICIiIgorICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKKyAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzcGVjLm5hbWUpOgorICAgICAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiAjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMjg1LDE2ICs3MzUsMTcgQEAKICAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBAX3JlcXVpcmVzX2J1aWx0aW4KLSAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfYnVpbHRpbiwgZnVsbG5hbWUpCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gY2xzCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICcnCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgYnVpbHQtaW4gbW9kdWxlIiIiCisgICAgICAgIGlmIHNwZWMubmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3shcn0gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlJy5mb3JtYXQoc3BlYy5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9c3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmNyZWF0ZV9idWlsdGluLCBzcGVjKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkV4ZWMgYSBidWlsdC1pbiBtb2R1bGUiIiIKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19idWlsdGluCkBAIC0xMzE0LDYgKzc2NSw4IEBACiAgICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBidWlsdC1pbiBtb2R1bGVzIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBsb2FkX21vZHVsZSA9IGNsYXNzbWV0aG9kKF9sb2FkX21vZHVsZV9zaGltKQorCiAKIGNsYXNzIEZyb3plbkltcG9ydGVyOgogCkBAIC0xMzQ5LDYgKzgwMiwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY3JlYXRlX21vZHVsZShjbHMsIHNwZWMpOgorICAgICAgICAiIiJVc2UgZGVmYXVsdCBzZW1hbnRpY3MgZm9yIG1vZHVsZSBjcmVhdGlvbi4iIiIKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICAgbmFtZSA9IG1vZHVsZS5fX3NwZWNfXy5uYW1lCkBAIC0xMzg2LDczMSArODQzLDYgQEAKICAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCiAKIAotY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4iIiIKLQotICAgIFJFR0lTVFJZX0tFWSA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX0nKQotICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnJykKLSAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgotICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCi0gICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6Ci0gICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGZpbGVwYXRoCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICBmaWxlcGF0aCA9IGNscy5fc2VhcmNoX3JlZ2lzdHJ5KGZ1bGxuYW1lKQotICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX3BhdGhfc3RhdChmaWxlcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKLSAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6Ci0gICAgICAgICAgICAgICAgc3BlYyA9IHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCi0gICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgX0xvYWRlckJhc2ljczoKLQotICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKLSAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCi0gICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQotICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KLSAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCi0KLSAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgotICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCi0gICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQotCi0gICAgbG9hZF9tb2R1bGUgPSBfbG9hZF9tb2R1bGVfc2hpbQotCi0KLWNsYXNzIFNvdXJjZUxvYWRlcihfTG9hZGVyQmFzaWNzKToKLQotICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCi0gICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgotCi0gICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCi0gICAgICAgICIiIgotICAgICAgICByYWlzZSBJT0Vycm9yCi0KLSAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAotICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KLSAgICAgICAgUG9zc2libGUga2V5czoKLSAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQotICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOwotICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLSAgICAgICAgUmFpc2VzIElPRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0KLSAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKLSAgICAgICAgIiIiCi0gICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICIiIgotCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKLSAgICAgICAgcmV0dXJuIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQotCi0gICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgY29tcGlsZWQgZnJvbSBzb3VyY2UuCi0KLSAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgotCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKLSAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKLSAgICAgICAgc291cmNlX210aW1lID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCi0gICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKLSAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCi0gICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKLQotCi1jbGFzcyBGaWxlTG9hZGVyOgotCi0gICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0Ci0gICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCi0gICAgICAgIGZpbmRlci4iIiIKLSAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCi0gICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCi0gICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnBhdGgKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKLQotCi1jbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6Ci0KLSAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgotCi0gICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgotICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKLSAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgotICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKLSAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCi0gICAgICAgIHBhdGhfcGFydHMgPSBbXQotICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KLSAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKLSAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKLSAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCi0gICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KLSAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6Ci0gICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQotICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0Ci0gICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKLQotCi1jbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKLQotICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgotCi0gICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCi0gICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgotRVhURU5TSU9OX1NVRkZJWEVTID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyOgotCi0gICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KLQotICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCi0KLSAgICBAX2NoZWNrX25hbWUKLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSBsb2FkZWQgZnJvbSB7IXJ9Jywgc2VsZi5wYXRoKQotICAgICAgICBpc19wYWNrYWdlID0gc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKQotICAgICAgICBpZiBpc19wYWNrYWdlIGFuZCBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KLSAgICAgICAgaWYgbm90IGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCi0gICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQF9jaGVja19uYW1lCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aAotCi0KLWNsYXNzIF9OYW1lc3BhY2VQYXRoOgotICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQotICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncwotICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAotICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKLSAgICBpcyBzeXMucGF0aC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCi0gICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKLSAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgotCi0gICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgotICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQotICAgICAgICBpZiBkb3QgPT0gJyc6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCi0gICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJwotICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCi0gICAgICAgICMgIHBhcmVudCBwYXRoLgotICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCi0KLSAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKLSAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKLQotICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6Ci0gICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCi0gICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKLSAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKLSAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQotICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAotICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQotCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKLSAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQotCi0gICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKLQotCi0jIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIGluaXRfbW9kdWxlX2F0dHJzKCkgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuCi1jbGFzcyBfTmFtZXNwYWNlTG9hZGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX3BhdGggPSBfTmFtZXNwYWNlUGF0aChuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcikKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6Ci0gICAgICAgICIiIlJldHVybiByZXByIGZvciB0aGUgbW9kdWxlLgotCi0gICAgICAgIFRoZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvZXMgdGhlIGpvYiBpdHNlbGYuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IChuYW1lc3BhY2UpPicuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByZXR1cm4gY29tcGlsZSgnJywgJzxzdHJpbmc+JywgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKLQotICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGEgbmFtZXNwYWNlIG1vZHVsZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQotICAgICAgICByZXR1cm4gX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCi0KLQotIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBQYXRoRmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgotICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCi0gICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKLSAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKLSAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KLQotICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaG9vayhwYXRoKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6Ci0gICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlcgotICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBhdGggPT0gJyc6Ci0gICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKLSAgICAgICAgcmV0dXJuIGZpbmRlcgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9sZWdhY3lfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgZmluZGVyKToKLSAgICAgICAgIyBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSBmb3IgYSBEZXByZWNhdGlvbldhcm5pbmcgaWYKLSAgICAgICAgIyB3ZSBlbmRlZCB1cCBnb2luZyB0aGF0IHJvdXRlLgotICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6Ci0gICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lKQotICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQotICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQotICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHBvcnRpb25zCi0gICAgICAgIHJldHVybiBzcGVjCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2dldF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiRmluZCB0aGUgbG9hZGVyIG9yIG5hbWVzcGFjZV9wYXRoIGZvciB0aGlzIG1vZHVsZS9wYWNrYWdlIG5hbWUuIiIiCi0gICAgICAgICMgSWYgdGhpcyBlbmRzIHVwIGJlaW5nIGEgbmFtZXNwYWNlIHBhY2thZ2UsIG5hbWVzcGFjZV9wYXRoIGlzCi0gICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCi0gICAgICAgIG5hbWVzcGFjZV9wYXRoID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIHBhdGg6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbnRyeSwgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQotICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9zcGVjJyk6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKGZ1bGxuYW1lLCB0YXJnZXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGNscy5fbGVnYWN5X2dldF9zcGVjKGZ1bGxuYW1lLCBmaW5kZXIpCi0gICAgICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgICAgIHBvcnRpb25zID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgICAgIGlmIHBvcnRpb25zIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzcGVjIG1pc3NpbmcgbG9hZGVyJykKLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQotICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCi0gICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBuYW1lc3BhY2VfcGF0aAotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgotICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKLSAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBzcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKLSAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCi0gICAgICAgICAgICAgICAgIyAgc3BlYyB3aGljaCBjYW4gY3JlYXRlIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBzcGVjLm9yaWdpbiA9ICduYW1lc3BhY2UnCi0gICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IF9OYW1lc3BhY2VQYXRoKGZ1bGxuYW1lLCBuYW1lc3BhY2VfcGF0aCwgY2xzLl9nZXRfc3BlYykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBjbHMuZmluZF9zcGVjKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLQotCi1jbGFzcyBGaWxlRmluZGVyOgotCi0gICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCi0KLSAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCi0gICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmxvYWRlcl9kZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKLSAgICAgICAgMi10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyIGFuZCB0aGUgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyCi0gICAgICAgIHJlY29nbml6ZXMuIiIiCi0gICAgICAgIGxvYWRlcnMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBsb2FkZXJfZGV0YWlsczoKLSAgICAgICAgICAgIGxvYWRlcnMuZXh0ZW5kKChzdWZmaXgsIGxvYWRlcikgZm9yIHN1ZmZpeCBpbiBzdWZmaXhlcykKLSAgICAgICAgc2VsZi5fbG9hZGVycyA9IGxvYWRlcnMKLSAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aCBvciAnLicKLSAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoKQotICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQotCi0gICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgotICAgICAgICAiIiJJbnZhbGlkYXRlIHRoZSBkaXJlY3RvcnkgbXRpbWUuIiIiCi0gICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQotCi0gICAgZmluZF9tb2R1bGUgPSBfZmluZF9tb2R1bGVfc2hpbQotCi0gICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCi0gICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICBzcGVjID0gc2VsZi5maW5kX3NwZWMoZnVsbG5hbWUpCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lLCBbXQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIsIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgb3IgW10KLQotICAgIGRlZiBfZ2V0X3NwZWMoc2VsZiwgbG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgcGF0aCwgc21zbCwgdGFyZ2V0KToKLSAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZnVsbG5hbWUsIHBhdGgsIGxvYWRlcj1sb2FkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQotCi0gICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKLSAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKLSAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKLSAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXRpbWUgPSBfcGF0aF9zdGF0KHNlbGYucGF0aCBvciBfb3MuZ2V0Y3dkKCkpLnN0X210aW1lCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgbXRpbWUgPSAtMQotICAgICAgICBpZiBtdGltZSAhPSBzZWxmLl9wYXRoX210aW1lOgotICAgICAgICAgICAgc2VsZi5fZmlsbF9jYWNoZSgpCi0gICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKLSAgICAgICAgIyB0YWlsX21vZHVsZSBrZWVwcyB0aGUgb3JpZ2luYWwgY2FzaW5nLCBmb3IgX19maWxlX18gYW5kIGZyaWVuZHMKLSAgICAgICAgaWYgX3JlbGF4X2Nhc2UoKToKLSAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCi0gICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZS5sb3dlcigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKLSAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlCi0gICAgICAgICMgQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSAoYW5kIHRodXMgYSBwYWNrYWdlKS4KLSAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgotICAgICAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKGJhc2VfcGF0aCwgaW5pdF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgW2Jhc2VfcGF0aF0sIHRhcmdldCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBJZiBhIG5hbWVzcGFjZSBwYWNrYWdlLCByZXR1cm4gdGhlIHBhdGggaWYgd2UgZG9uJ3QKLSAgICAgICAgICAgICAgICAjICBmaW5kIGEgbW9kdWxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gX3BhdGhfaXNkaXIoYmFzZV9wYXRoKQotICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKLSAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQotICAgICAgICBpZiBpc19uYW1lc3BhY2U6Ci0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKLSAgICAgICAgICAgIHNwZWMgPSBNb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCi0gICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgotICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKLSAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKLSAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KLSAgICAgICAgICAgIGNvbnRlbnRzID0gW10KLSAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQotICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCi0gICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKLSAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKLSAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKLSAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgotICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQotICAgICAgICAgICAgICAgIGlmIGRvdDoKLSAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQotICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cwotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgotICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6Ci0gICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCi0gICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKLSAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCi0gICAgICAgIHJhaXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKLSAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgotICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKLQotICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKLQotCiAjIEltcG9ydCBpdHNlbGYgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGNsYXNzIF9JbXBvcnRMb2NrQ29udGV4dDoKQEAgLTIxNDYsNyArODc4LDcgQEAKIAogZGVmIF9maW5kX3NwZWMobmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgogICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCi0gICAgaWYgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgaWYgc3lzLm1ldGFfcGF0aCBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5tZXRhX3BhdGg6CiAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwpAQCAtMjIxOCwxMiArOTUwLDEyIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6Ci0gICAgICAgIG1vZHVsZSA9IF9TcGVjTWV0aG9kcyhzcGVjKS5fbG9hZF91bmxvY2tlZCgpCisgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgogICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgogICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQpAQCAtMjMwOCwxNyArMTA0MCw2IEBACiAgICAgcmV0dXJuIHBhY2thZ2UKIAogCi1kZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KLQotICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzKS4KLSAgICAiIiIKLSAgICBleHRlbnNpb25zID0gRXh0ZW5zaW9uRmlsZUxvYWRlciwgX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKQotICAgIHNvdXJjZSA9IFNvdXJjZUZpbGVMb2FkZXIsIFNPVVJDRV9TVUZGSVhFUwotICAgIGJ5dGVjb2RlID0gU291cmNlbGVzc0ZpbGVMb2FkZXIsIEJZVEVDT0RFX1NVRkZJWEVTCi0gICAgcmV0dXJuIFtleHRlbnNpb25zLCBzb3VyY2UsIGJ5dGVjb2RlXQotCi0KIGRlZiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUuCiAKQEAgLTIzNTgsOCArMTA3OSw3IEBACiAgICAgc3BlYyA9IEJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMobmFtZSkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBidWlsdC1pbiBtb2R1bGUgbmFtZWQgJyArIG5hbWUpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgIHJldHVybiBtZXRob2RzLl9sb2FkX3VubG9ja2VkKCkKKyAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiBkZWYgX3NldHVwKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKQEAgLTIzNzAsMTUgKzEwOTAsMTAgQEAKICAgICBtb2R1bGVzLCB0aG9zZSB0d28gbW9kdWxlcyBtdXN0IGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluLgogCiAgICAgIiIiCi0gICAgZ2xvYmFsIF9pbXAsIHN5cywgQllURUNPREVfU1VGRklYRVMKKyAgICBnbG9iYWwgX2ltcCwgc3lzCiAgICAgX2ltcCA9IF9pbXBfbW9kdWxlCiAgICAgc3lzID0gc3lzX21vZHVsZQogCi0gICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGVsc2U6Ci0gICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLQogICAgICMgU2V0IHVwIHRoZSBzcGVjIGZvciBleGlzdGluZyBidWlsdGluL2Zyb3plbiBtb2R1bGVzLgogICAgIG1vZHVsZV90eXBlID0gdHlwZShzeXMpCiAgICAgZm9yIG5hbWUsIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5pdGVtcygpOgpAQCAtMjM5MCwzOSArMTEwNSwxNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc3BlYyA9IF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyKQotICAgICAgICAgICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgICAgICAgICAgbWV0aG9kcy5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgICAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQogCiAgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCiAgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgZm9yIGJ1aWx0aW5fbmFtZSBpbiAoJ193YXJuaW5ncycsKToKICAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQogICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KLSAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQotICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKLSAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCi0gICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KLSAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCi0gICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZShidWlsdGluX29zKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKLSAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX29zJywgb3NfbW9kdWxlKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcCcsIHBhdGhfc2VwKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCAnJy5qb2luKHBhdGhfc2VwYXJhdG9ycykpCi0KICAgICAjIERpcmVjdGx5IGxvYWQgdGhlIF90aHJlYWQgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCiAgICAgdHJ5OgogICAgICAgICB0aHJlYWRfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCdfdGhyZWFkJykKQEAgLTI0MzUsMjcgKzExMjgsMTUgQEAKICAgICB3ZWFrcmVmX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZSgnX3dlYWtyZWYnKQogICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2Vha3JlZicsIHdlYWtyZWZfbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSB3aW5yZWcgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICB3aW5yZWdfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCd3aW5yZWcnKQotICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3dpbnJlZycsIHdpbnJlZ19tb2R1bGUpCi0KLSAgICAjIENvbnN0YW50cwotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKLSAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKLSAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQotCiAKIGRlZiBfaW5zdGFsbChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CiAgICAgIiIiSW5zdGFsbCBpbXBvcnRsaWIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKICAgICBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpCi0gICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQotICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCi0gICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6Ci0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKLSAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQorCisgICAgZ2xvYmFsIF9ib290c3RyYXBfZXh0ZXJuYWwKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsID0gX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbC5faW5zdGFsbChzeXMubW9kdWxlc1tfX25hbWVfX10pCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNjMTBiOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMCwwICsxLDE0MjUgQEAKKyIiIkNvcmUgaW1wbGVtZW50YXRpb24gb2YgcGF0aC1iYXNlZCBpbXBvcnQuCisKK1RoaXMgbW9kdWxlIGlzIE5PVCBtZWFudCB0byBiZSBkaXJlY3RseSBpbXBvcnRlZCEgSXQgaGFzIGJlZW4gZGVzaWduZWQgc3VjaAordGhhdCBpdCBjYW4gYmUgYm9vdHN0cmFwcGVkIGludG8gUHl0aG9uIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIEFzCitzdWNoIGl0IHJlcXVpcmVzIHRoZSBpbmplY3Rpb24gb2Ygc3BlY2lmaWMgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBpbiBvcmRlciB0bword29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCisKKyIiIgorIworIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgorIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQorIyB1cGRhdGVkLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIGFsbCBvdGhlcnMgd2hvIGRvbid0IGhhdmUgYSAuL3B5dGhvbiBhcm91bmQgdG8gZnJlZXplIHRoZSBtb2R1bGUKKyMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KKyMKKworIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyMgV2hlbiBlZGl0aW5nIHRoaXMgY29kZSBiZSBhd2FyZSB0aGF0IGNvZGUgZXhlY3V0ZWQgYXQgaW1wb3J0IHRpbWUgQ0FOTk9UCisjIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbworIyBhbnl0aGluZyBzcGVjaWZpZWQgYXQgdGhlIGNsYXNzIGxldmVsLgorCisjIEJvb3RzdHJhcC1yZWxhdGVkIGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICd3aW4nLCAnY3lnd2luJywgJ2RhcndpbicKKworCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KKyAgICBlbHNlOgorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCitkZWYgX3dfbG9uZyh4KToKKyAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4iIiIKKyAgICByZXR1cm4gKGludCh4KSAmIDB4RkZGRkZGRkYpLnRvX2J5dGVzKDQsICdsaXR0bGUnKQorCisKK2RlZiBfcl9sb25nKGludF9ieXRlcyk6CisgICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4iIiIKKyAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoaW50X2J5dGVzLCAnbGl0dGxlJykKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIHJldHVybiBwYXRoX3NlcC5qb2luKFtwYXJ0LnJzdHJpcChwYXRoX3NlcGFyYXRvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHMgaWYgcGFydF0pCisKKworZGVmIF9wYXRoX3NwbGl0KHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuIiIiCisgICAgaWYgbGVuKHBhdGhfc2VwYXJhdG9ycykgPT0gMToKKyAgICAgICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIGZyb250LCB0YWlsID0gcGF0aC5yc3BsaXQoeCwgbWF4c3BsaXQ9MSkKKyAgICAgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIHJldHVybiAnJywgcGF0aAorCisKK2RlZiBfcGF0aF9zdGF0KHBhdGgpOgorICAgICIiIlN0YXQgdGhlIHBhdGguCisKKyAgICBNYWRlIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gb3ZlcnJpZGUgaW4gZXhwZXJpbWVudHMKKyAgICAoZS5nLiBjYWNoZSBzdGF0IHJlc3VsdHMpLgorCisgICAgIiIiCisgICAgcmV0dXJuIF9vcy5zdGF0KHBhdGgpCisKKworZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKKyAgICAiIiJUZXN0IHdoZXRoZXIgdGhlIHBhdGggaXMgdGhlIHNwZWNpZmllZCBtb2RlIHR5cGUuIiIiCisgICAgdHJ5OgorICAgICAgICBzdGF0X2luZm8gPSBfcGF0aF9zdGF0KHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiAoc3RhdF9pbmZvLnN0X21vZGUgJiAwbzE3MDAwMCkgPT0gbW9kZQorCisKK2RlZiBfcGF0aF9pc2ZpbGUocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNmaWxlLiIiIgorICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8xMDAwMDApCisKKworZGVmIF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZGlyLiIiIgorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKKworCitkZWYgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBtb2RlPTBvNjY2KToKKyAgICAiIiJCZXN0LWVmZm9ydCBmdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGEgcGF0aCBhdG9taWNhbGx5LgorICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCisgICAgdGVtcG9yYXJ5IGZpbGUgaXMgYXR0ZW1wdGVkLiIiIgorICAgICMgaWQoKSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgcHNldWRvLXJhbmRvbSBmaWxlbmFtZS4KKyAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQorICAgIGZkID0gX29zLm9wZW4ocGF0aF90bXAsCisgICAgICAgICAgICAgICAgICBfb3MuT19FWENMIHwgX29zLk9fQ1JFQVQgfCBfb3MuT19XUk9OTFksIG1vZGUgJiAwbzY2NikKKyAgICB0cnk6CisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKKworCitfY29kZV90eXBlID0gdHlwZShfd3JpdGVfYXRvbWljLl9fY29kZV9fKQorCisKKyMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCisjIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCisjCisjIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKKyMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCisjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisjCisjIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKyMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgorIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KKyMKKyMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KKyMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorIyAxMC4KKyMKKyMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYworIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCisjIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCisjIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcworIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CisjIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCisjIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZworIyB3aXRoIFB5dGhvbiAzLjJhMC4KKyMKKyMgS25vd24gdmFsdWVzOgorIyAgUHl0aG9uIDEuNTogICAyMDEyMQorIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAorIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMworIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMworIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNworIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKKyMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKKyMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCisjICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQorIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCisjICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCisjICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKKyMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCisjICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQorIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCisjICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQorIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQorIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQorIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQorIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisjICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCisjICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCisjICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQorIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKKyMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisjICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KKyMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQorIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisjICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCisjICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisjICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKKyMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisjICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKKyMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCisjICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCisjICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCisjICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKKyMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCisjICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQorIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQorIyAgICAgUHl0aG9uIDMuNWEwICAzMzIwIChtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3IpCisjICAgICBQeXRob24gMy41YjEgIDMzMzAgKFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucykKKyMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKKyMKKyMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorIyBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKS4KKworTUFHSUNfTlVNQkVSID0gKDMzNDApLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK19SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworX09QVCA9ICdvcHQtJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KKyMgRGVwcmVjYXRlZC4KK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gQllURUNPREVfU1VGRklYRVMKKworZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUsICosIG9wdGltaXphdGlvbj1Ob25lKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMgZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMgZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLgorCisgICAgVGhlICdvcHRpbWl6YXRpb24nIHBhcmFtZXRlciBjb250cm9scyB0aGUgcHJlc3VtZWQgb3B0aW1pemF0aW9uIGxldmVsIG9mCisgICAgdGhlIGJ5dGVjb2RlIGZpbGUuIElmICdvcHRpbWl6YXRpb24nIGlzIG5vdCBOb25lLCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uCisgICAgb2YgdGhlIGFyZ3VtZW50IGlzIHRha2VuIGFuZCB2ZXJpZmllZCB0byBiZSBhbHBoYW51bWVyaWMgKGVsc2UgVmFsdWVFcnJvcgorICAgIGlzIHJhaXNlZCkuCisKKyAgICBUaGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLAorICAgIGEgVHJ1ZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvIHRoZSBlbXB0eSBzdHJpbmcKKyAgICB3aGlsZSBhIEZhbHNlIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyAnb3B0aW1pemF0aW9uJyB0byAnMScuCisKKyAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lOgorICAgICAgICBfd2FybmluZ3Mud2FybigndGhlIGRlYnVnX292ZXJyaWRlIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAgICAgICAgICAgICAiJ29wdGltaXphdGlvbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQorICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBhbG1vc3RfZmlsZW5hbWUgPSAnJy5qb2luKFsoYmFzZSBpZiBiYXNlIGVsc2UgcmVzdCksIHNlcCwgdGFnXSkKKyAgICBpZiBvcHRpbWl6YXRpb24gaXMgTm9uZToKKyAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDA6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3B0aW1pemF0aW9uID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgb3B0aW1pemF0aW9uID0gc3RyKG9wdGltaXphdGlvbikKKyAgICBpZiBvcHRpbWl6YXRpb24gIT0gJyc6CisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uaXNhbG51bSgpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYWxwaGFudW1lcmljJy5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICAgICAgYWxtb3N0X2ZpbGVuYW1lID0gJ3t9Lnt9e30nLmZvcm1hdChhbG1vc3RfZmlsZW5hbWUsIF9PUFQsIG9wdGltaXphdGlvbikKKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBfUFlDQUNIRSwgYWxtb3N0X2ZpbGVuYW1lICsgQllURUNPREVfU1VGRklYRVNbMF0pCisKKworZGVmIHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3LzQ4OCBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGRvdF9jb3VudCA9IHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKQorICAgIGlmIGRvdF9jb3VudCBub3QgaW4gezIsIDN9OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgb3IgMyBkb3RzIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KHB5Y2FjaGVfZmlsZW5hbWUpKQorICAgIGVsaWYgZG90X2NvdW50ID09IDM6CisgICAgICAgIG9wdGltaXphdGlvbiA9IHB5Y2FjaGVfZmlsZW5hbWUucnNwbGl0KCcuJywgMilbLTJdCisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uc3RhcnRzd2l0aChfT1BUKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9wdGltaXphdGlvbiBwb3J0aW9uIG9mIGZpbGVuYW1lIGRvZXMgbm90IHN0YXJ0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggeyFyfSIuZm9ybWF0KF9PUFQpKQorICAgICAgICBvcHRfbGV2ZWwgPSBvcHRpbWl6YXRpb25bbGVuKF9PUFQpOl0KKyAgICAgICAgaWYgbm90IG9wdF9sZXZlbC5pc2FsbnVtKCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvcHRpbWl6YXRpb24gbGV2ZWwgeyFyfSBpcyBub3QgYW4gYWxwaGFudW1lcmljICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIi5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFydGl0aW9uKCcuJykKKyAgICBpZiBub3QgcmVzdCBvciBleHRlbnNpb24ubG93ZXIoKVstMzotMV0gIT0gJ3B5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKyAgICB0cnk6CisgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX2Zyb21fY2FjaGUoYnl0ZWNvZGVfcGF0aCkKKyAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBzb3VyY2VfcGF0aCA9IGJ5dGVjb2RlX3BhdGhbOi0xXQorICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3BhdGgpIGVsc2UgYnl0ZWNvZGVfcGF0aAorCisKK2RlZiBfZ2V0X2NhY2hlZChmaWxlbmFtZSk6CisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoU09VUkNFX1NVRkZJWEVTKSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZV9mcm9tX3NvdXJjZShmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShCWVRFQ09ERV9TVUZGSVhFUykpOgorICAgICAgICByZXR1cm4gZmlsZW5hbWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfY2FsY19tb2RlKHBhdGgpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9kZSBwZXJtaXNzaW9ucyBmb3IgYSBieXRlY29kZSBmaWxlLiIiIgorICAgIHRyeToKKyAgICAgICAgbW9kZSA9IF9wYXRoX3N0YXQocGF0aCkuc3RfbW9kZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBtb2RlID0gMG82NjYKKyAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQorICAgIG1vZGUgfD0gMG8yMDAKKyAgICByZXR1cm4gbW9kZQorCisKK2RlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKKyAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQorICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQorICAgIGxvYWRlciBjYW4gaGFuZGxlLgorCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IChzZWxmKSBtdXN0IGRlZmluZSBfbmFtZSB3aGljaCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBkZWYgX2NoZWNrX25hbWVfd3JhcHBlcihzZWxmLCBuYW1lPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZWxpZiBzZWxmLm5hbWUgIT0gbmFtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXIgZm9yICVzIGNhbm5vdCBoYW5kbGUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgbmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgdHJ5OgorICAgICAgICBfd3JhcCA9IF9ib290c3RyYXAuX3dyYXAKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAjIFhYWCB5dWNrCisgICAgICAgIGRlZiBfd3JhcChuZXcsIG9sZCk6CisgICAgICAgICAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCisgICAgICAgICAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKKyAgICBfd3JhcChfY2hlY2tfbmFtZV93cmFwcGVyLCBtZXRob2QpCisgICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKKworCitkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgorICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCisgICAgc2VsZi5maW5kX2xvYWRlcigpLgorCisgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBmaW5kZXIuZmluZF9zcGVjKCkuCisKKyAgICAiIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gJ05vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fJworICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKworZGVmIF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwgc291cmNlX3N0YXRzPU5vbmUsIG5hbWU9Tm9uZSwgcGF0aD1Ob25lKToKKyAgICAiIiJWYWxpZGF0ZSB0aGUgaGVhZGVyIG9mIHRoZSBwYXNzZWQtaW4gYnl0ZWNvZGUgYWdhaW5zdCBzb3VyY2Vfc3RhdHMgKGlmCisgICAgZ2l2ZW4pIGFuZCByZXR1cm5pbmcgdGhlIGJ5dGVjb2RlIHRoYXQgY2FuIGJlIGNvbXBpbGVkIGJ5IGNvbXBpbGUoKS4KKworICAgIEFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHVzZWQgdG8gZW5oYW5jZSBlcnJvciByZXBvcnRpbmcuCisKKyAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGluY29ycmVjdCBvciB0aGUgYnl0ZWNvZGUgaXMKKyAgICBmb3VuZCB0byBiZSBzdGFsZS4gRU9GRXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIGRhdGEgaXMgZm91bmQgdG8gYmUKKyAgICB0cnVuY2F0ZWQuCisKKyAgICAiIiIKKyAgICBleGNfZGV0YWlscyA9IHt9CisgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ25hbWUnXSA9IG5hbWUKKyAgICBlbHNlOgorICAgICAgICAjIFRvIHByZXZlbnQgaGF2aW5nIHRvIG1ha2UgYWxsIG1lc3NhZ2VzIGhhdmUgYSBjb25kaXRpb25hbCBuYW1lLgorICAgICAgICBuYW1lID0gJzxieXRlY29kZT4nCisgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ3BhdGgnXSA9IHBhdGgKKyAgICBtYWdpYyA9IGRhdGFbOjRdCisgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQorICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQorICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKKyAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQorICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CisgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfc2l6ZSkgIT0gc291cmNlX3NpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipleGNfZGV0YWlscykKKyAgICByZXR1cm4gZGF0YVsxMjpdCisKKworZGVmIF9jb21waWxlX2J5dGVjb2RlKGRhdGEsIG5hbWU9Tm9uZSwgYnl0ZWNvZGVfcGF0aD1Ob25lLCBzb3VyY2VfcGF0aD1Ob25lKToKKyAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKKyAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQorICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6CisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQorICAgICAgICByZXR1cm4gY29kZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdOb24tY29kZSBvYmplY3QgaW4geyFyfScuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPW5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKKworZGVmIF9jb2RlX3RvX2J5dGVjb2RlKGNvZGUsIG10aW1lPTAsIHNvdXJjZV9zaXplPTApOgorICAgICIiIkNvbXBpbGUgYSBjb2RlIG9iamVjdCBpbnRvIGJ5dGVjb2RlIGZvciB3cml0aW5nIG91dCB0byBhIGJ5dGUtY29tcGlsZWQKKyAgICBmaWxlLiIiIgorICAgIGRhdGEgPSBieXRlYXJyYXkoTUFHSUNfTlVNQkVSKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobXRpbWUpKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX3NpemUpKQorICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZSkpCisgICAgcmV0dXJuIGRhdGEKKworCitkZWYgZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpOgorICAgICIiIkRlY29kZSBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiB0aGUgc3RyaW5nLgorCisgICAgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydCBpcyB1c2VkIGluIHRoZSBkZWNvZGluZy4KKyAgICAiIiIKKyAgICBpbXBvcnQgdG9rZW5pemUgICMgVG8gYXZvaWQgYm9vdHN0cmFwIGlzc3Vlcy4KKyAgICBzb3VyY2VfYnl0ZXNfcmVhZGxpbmUgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCisgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2Rpbmcoc291cmNlX2J5dGVzX3JlYWRsaW5lKQorICAgIG5ld2xpbmVfZGVjb2RlciA9IF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpCisgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisKKworIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfUE9QVUxBVEUgPSBvYmplY3QoKQorCisKK2RlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgorICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KKworICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAorICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgorICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKKyAgICBpbXBvcnQgc3lzdGVtLgorCisgICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgorCisgICAgIiIiCisgICAgaWYgbG9jYXRpb24gaXMgTm9uZToKKyAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCisgICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKKyAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgorICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKKyAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CisgICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCisgICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQorICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKG5hbWUsIGxvYWRlciwgb3JpZ2luPWxvY2F0aW9uKQorICAgIHNwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKKworICAgICMgUGljayBhIGxvYWRlciBpZiBvbmUgd2Fzbid0IHByb3ZpZGVkLgorICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICBmb3IgbG9hZGVyX2NsYXNzLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGxvY2F0aW9uLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKG5hbWUsIGxvY2F0aW9uKQorICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyID0gbG9hZGVyCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIFNldCBzdWJtb2R1bGVfc2VhcmNoX3BhdGhzIGFwcHJvcHJpYXRlbHkuCisgICAgaWYgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgX1BPUFVMQVRFOgorICAgICAgICAjIENoZWNrIHRoZSBsb2FkZXIuCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnaXNfcGFja2FnZScpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBsb2FkZXIuaXNfcGFja2FnZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtdCisgICAgZWxzZToKKyAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9PSBbXToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBkaXJuYW1lID0gX3BhdGhfc3BsaXQobG9jYXRpb24pWzBdCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zLmFwcGVuZChkaXJuYW1lKQorCisgICAgcmV0dXJuIHNwZWMKKworCisjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9JykKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZycpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCBrZXkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NlYXJjaF9yZWdpc3RyeShjbHMsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgY2xzLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWV9ERUJVRworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQorICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgorICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKKyAgICAgICAgaWYgZmlsZXBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9wYXRoX3N0YXQoZmlsZXBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgICAgICAgICBpZiBmaWxlcGF0aC5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgorICAgICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIoZnVsbG5hbWUsIGZpbGVwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgX0xvYWRlckJhc2ljczoKKworICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAorICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKKyAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCisgICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQorICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KKyAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiVXNlIGRlZmF1bHQgc2VtYW50aWNzIGZvciBtb2R1bGUgY3JlYXRpb24uIiIiCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgorICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCisgICAgICAgIGlmIGNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKKworCitjbGFzcyBTb3VyY2VMb2FkZXIoX0xvYWRlckJhc2ljcyk6CisKKyAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQorICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KKworICAgICAgICBSYWlzZXMgSU9FcnJvciB3aGVuIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgSU9FcnJvcgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCisgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorICAgICAgICAiIiIKKworCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9zb3VyY2UuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCisgICAgICAgIHJldHVybiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKKworICAgIGRlZiBzb3VyY2VfdG9fY29kZShzZWxmLCBkYXRhLCBwYXRoLCAqLCBfb3B0aW1pemU9LTEpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGNvbXBpbGVkIGZyb20gc291cmNlLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgY2FuIGJlIGFueSBvYmplY3QgdHlwZSB0aGF0IGNvbXBpbGUoKSBzdXBwb3J0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgorCisgICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgc291cmNlX210aW1lID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKKyAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCisgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKKworCitjbGFzcyBGaWxlTG9hZGVyOgorCisgICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0CisgICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCisgICAgICAgIGZpbmRlci4iIiIKKyAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCisgICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCisgICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCisgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6CisgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworCitjbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CisKKyAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CisgICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKKyAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKKyAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgICAgIHBhdGhfcGFydHMgPSBbXQorICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KKyAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKKyAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKKyAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6CisgICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CisgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKKworCitjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKKworICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgorCisgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCisgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisKKyMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgorRVhURU5TSU9OX1NVRkZJWEVTID0gW10KKworCitjbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorCisgICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KKworICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKKyAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAorICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMubmFtZSwgc2VsZi5wYXRoKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlIiIiCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKKworICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgorICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCisgICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKK2NsYXNzIF9OYW1lc3BhY2VQYXRoOgorICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQorICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncworICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAorICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKKyAgICBpcyBzeXMucGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKKyAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgorCisgICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgorICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICBpZiBkb3QgPT0gJyc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCisgICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJworICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCisgICAgICAgICMgIHBhcmVudCBwYXRoLgorICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCisKKyAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKKyAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKKworICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCisgICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKKyAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQorICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAorICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCisjIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIG1vZHVsZV9mcm9tX3NwZWMoKSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KK2NsYXNzIF9OYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgIiIiUmV0dXJuIHJlcHIgZm9yIHRoZSBtb2R1bGUuCisKKyAgICAgICAgVGhlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgZG9lcyB0aGUgam9iIGl0c2VsZi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKG5hbWVzcGFjZSk+Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBjb21waWxlKCcnLCAnPHN0cmluZz4nLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQorCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICIiIlVzZSBkZWZhdWx0IHNlbWFudGljcyBmb3IgbW9kdWxlIGNyZWF0aW9uLiIiIgorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQorCisKKyMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGF0aEZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgorICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCisKKyAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyCisgICAgICAgIGFuZCBjYWNoZSBpdC4gSWYgbm8gZmluZGVyIGlzIGF2YWlsYWJsZSwgc3RvcmUgTm9uZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgIyBEb24ndCBjYWNoZSB0aGUgZmFpbHVyZSBhcyB0aGUgY3dkIGNhbiBlYXNpbHkgY2hhbmdlIHRvCisgICAgICAgICAgICAgICAgIyBhIHZhbGlkIGRpcmVjdG9yeSBsYXRlciBvbi4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKKyAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCisgICAgICAgIHJldHVybiBmaW5kZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGVnYWN5X2dldF9zcGVjKGNscywgZnVsbG5hbWUsIGZpbmRlcik6CisgICAgICAgICMgVGhpcyB3b3VsZCBiZSBhIGdvb2QgcGxhY2UgZm9yIGEgRGVwcmVjYXRpb25XYXJuaW5nIGlmCisgICAgICAgICMgd2UgZW5kZWQgdXAgZ29pbmcgdGhhdCByb3V0ZS4KKyAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gcG9ydGlvbnMKKyAgICAgICAgcmV0dXJuIHNwZWMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKKyAgICAgICAgIyBJZiB0aGlzIGVuZHMgdXAgYmVpbmcgYSBuYW1lc3BhY2UgcGFja2FnZSwgbmFtZXNwYWNlX3BhdGggaXMKKyAgICAgICAgIyAgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3aWxsIGJlY29tZSBpdHMgX19wYXRoX18KKyAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQorICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVudHJ5LCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCisgICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX3NwZWMnKToKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoZnVsbG5hbWUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzcGVjID0gY2xzLl9sZWdhY3lfZ2V0X3NwZWMoZnVsbG5hbWUsIGZpbmRlcikKKyAgICAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCisgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICAgICAgaWYgcG9ydGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NwZWMgbWlzc2luZyBsb2FkZXInKQorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCisgICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKKyAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAorICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCisgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgaWYgbmFtZXNwYWNlX3BhdGg6CisgICAgICAgICAgICAgICAgIyBXZSBmb3VuZCBhdCBsZWFzdCBvbmUgbmFtZXNwYWNlIHBhdGguICBSZXR1cm4gYQorICAgICAgICAgICAgICAgICMgIHNwZWMgd2hpY2ggY2FuIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgc3BlYy5vcmlnaW4gPSAnbmFtZXNwYWNlJworICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBfTmFtZXNwYWNlUGF0aChmdWxsbmFtZSwgbmFtZXNwYWNlX3BhdGgsIGNscy5fZ2V0X3NwZWMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyCisKKworY2xhc3MgRmlsZUZpbmRlcjoKKworICAgICIiIkZpbGUtYmFzZWQgZmluZGVyLgorCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkluaXRpYWxpemUgd2l0aCB0aGUgcGF0aCB0byBzZWFyY2ggb24gYW5kIGEgdmFyaWFibGUgbnVtYmVyIG9mCisgICAgICAgIDItdHVwbGVzIGNvbnRhaW5pbmcgdGhlIGxvYWRlciBhbmQgdGhlIGZpbGUgc3VmZml4ZXMgdGhlIGxvYWRlcgorICAgICAgICByZWNvZ25pemVzLiIiIgorICAgICAgICBsb2FkZXJzID0gW10KKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gbG9hZGVyX2RldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiSW52YWxpZGF0ZSB0aGUgZGlyZWN0b3J5IG10aW1lLiIiIgorICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKKworICAgIGZpbmRfbW9kdWxlID0gX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSwgb3IgdGhlIG5hbWVzcGFjZQorICAgICAgICBwYWNrYWdlIHBvcnRpb25zLiBSZXR1cm5zIChsb2FkZXIsIGxpc3Qtb2YtcG9ydGlvbnMpLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IHNlbGYuZmluZF9zcGVjKGZ1bGxuYW1lKQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgW10KKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIG9yIFtdCisKKyAgICBkZWYgX2dldF9zcGVjKHNlbGYsIGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIHBhdGgsIHNtc2wsIHRhcmdldCk6CisgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKGZ1bGxuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c21zbCkKKworICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCisgICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuIiIiCisgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCisgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX3BhdGhfc3RhdChzZWxmLnBhdGggb3IgX29zLmdldGN3ZCgpKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIFtiYXNlX3BhdGhdLCB0YXJnZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgYSBuYW1lc3BhY2UgcGFja2FnZSwgcmV0dXJuIHRoZSBwYXRoIGlmIHdlIGRvbid0CisgICAgICAgICAgICAgICAgIyAgZmluZCBhIG1vZHVsZSBpbiB0aGUgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgIGlzX25hbWVzcGFjZSA9IF9wYXRoX2lzZGlyKGJhc2VfcGF0aCkKKyAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCisgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCisgICAgICAgICAgICByZXR1cm4gc3BlYworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgorICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKKyAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCisgICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKKyAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgorCisgICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCisgICAgICAgIHJhaXNlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKKyAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgorICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCisgICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKKworICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKKworCisjIEltcG9ydCBzZXR1cCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgorICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCisgICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKKyAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCisgICAgaWYgbm90IGxvYWRlcjoKKyAgICAgICAgaWYgc3BlYzoKKyAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgorICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQorICAgIGlmIG5vdCBzcGVjOgorICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCisgICAgdHJ5OgorICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKKyAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgorICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCisgICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KKyAgICAgICAgcGFzcworCisKK2RlZiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBmaWxlLWJhc2VkIG1vZHVsZSBsb2FkZXJzLgorCisgICAgRWFjaCBpdGVtIGlzIGEgdHVwbGUgKGxvYWRlciwgc3VmZml4ZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9zZXR1cChfYm9vdHN0cmFwX21vZHVsZSk6CisgICAgIiIiU2V0dXAgdGhlIHBhdGgtYmFzZWQgaW1wb3J0ZXJzIGZvciBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZAorICAgIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyAgICBPdGhlciBjb21wb25lbnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgY29yZSBib290c3RyYXAgbW9kdWxlLgorCisgICAgIiIiCisgICAgZ2xvYmFsIHN5cywgX2ltcCwgX2Jvb3RzdHJhcAorICAgIF9ib290c3RyYXAgPSBfYm9vdHN0cmFwX21vZHVsZQorICAgIHN5cyA9IF9ib290c3RyYXAuc3lzCisgICAgX2ltcCA9IF9ib290c3RyYXAuX2ltcAorCisgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCisgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgICAgIGlmIGJ1aWx0aW5fbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQorICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKKyAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCisgICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KKyAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdpbXBvcnRsaWIgcmVxdWlyZXMgcG9zaXggb3IgbnQnKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsICcnLmpvaW4ocGF0aF9zZXBhcmF0b3JzKSkKKworICAgICMgRGlyZWN0bHkgbG9hZCB0aGUgX3RocmVhZCBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB0cnk6CisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ190aHJlYWQnLCB0aHJlYWRfbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBfd2Vha3JlZiBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB3ZWFrcmVmX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKCdfd2Vha3JlZicpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisKKyAgICAjIERpcmVjdGx5IGxvYWQgdGhlIHdpbnJlZyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIHdpbnJlZ19tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgIyBDb25zdGFudHMKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3JlbGF4X2Nhc2UnLCBfbWFrZV9yZWxheF9jYXNlKCkpCisgICAgRVhURU5TSU9OX1NVRkZJWEVTLmV4dGVuZChfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpKQorICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgU09VUkNFX1NVRkZJWEVTLmFwcGVuZCgnLnB5dycpCisgICAgICAgIGlmICdfZC5weWQnIGluIEVYVEVOU0lPTl9TVUZGSVhFUzoKKyAgICAgICAgICAgIFdpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRCA9IFRydWUKKworCitkZWYgX2luc3RhbGwoX2Jvb3RzdHJhcF9tb2R1bGUpOgorICAgICIiIkluc3RhbGwgdGhlIHBhdGgtYmFzZWQgaW1wb3J0IGNvbXBvbmVudHMuIiIiCisgICAgX3NldHVwKF9ib290c3RyYXBfbW9kdWxlKQorICAgIHN1cHBvcnRlZF9sb2FkZXJzID0gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkKKyAgICBzeXMucGF0aF9ob29rcy5leHRlbmQoW0ZpbGVGaW5kZXIucGF0aF9ob29rKCpzdXBwb3J0ZWRfbG9hZGVycyldKQorICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKKworICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCisgICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCisgICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKKyAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCA1NThhYmQzLi4xMWFmMjJkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxMiArMSwxOCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIC4gaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKIGZyb20gLiBpbXBvcnQgbWFjaGluZXJ5CiB0cnk6CiAgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCisjICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAogZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICBpZiBleGMubmFtZSAhPSAnX2Zyb3plbl9pbXBvcnRsaWInOgogICAgICAgICByYWlzZQogICAgIF9mcm96ZW5faW1wb3J0bGliID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCA9IF9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBhYmMKIAogCkBAIC0xNCw3ICsyMCwxMCBAQAogICAgIGZvciBjbHMgaW4gY2xhc3NlczoKICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGNscykKICAgICAgICAgaWYgX2Zyb3plbl9pbXBvcnRsaWIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgZnJvemVuX2NscyA9IGdldGF0dHIoX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwsIGNscy5fX25hbWVfXykKICAgICAgICAgICAgIGFic3RyYWN0X2Nscy5yZWdpc3Rlcihmcm96ZW5fY2xzKQogCiAKQEAgLTEwMiw3ICsxMTEsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCiAKLSAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX2ZpbmRfbW9kdWxlX3NoaW0KIAogICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKICAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KQEAgLTEyMiwxMSArMTMxLDggQEAKICAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yIGlmIGFueXRoaW5nIHByZXZlbnRzIGl0CiAgICAgICAgIGZyb20gY3JlYXRpbmcgYSBuZXcgbW9kdWxlLiAgSXQgbWF5IHJldHVybiBOb25lIHRvIGluZGljYXRlCiAgICAgICAgIHRoYXQgdGhlIHNwZWMgc2hvdWxkIGNyZWF0ZSB0aGUgbmV3IG1vZHVsZS4KLQotICAgICAgICBjcmVhdGVfbW9kdWxlKCkgaXMgb3B0aW9uYWwuCi0KICAgICAgICAgIiIiCi0gICAgICAgICMgQnkgZGVmYXVsdCwgZGVmZXIgdG8gX1NwZWNNZXRob2RzLmNyZWF0ZSgpIGZvciB0aGUgbmV3IG1vZHVsZS4KKyAgICAgICAgIyBCeSBkZWZhdWx0LCBkZWZlciB0byBkZWZhdWx0IHNlbWFudGljcyBmb3IgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFdlIGRvbid0IGRlZmluZSBleGVjX21vZHVsZSgpIGhlcmUgc2luY2UgdGhhdCB3b3VsZCBicmVhawpAQCAtMjE3LDE1ICsyMjMsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAKLSAgICBkZWYgc291cmNlX3RvX2NvZGUoc2VsZiwgZGF0YSwgcGF0aD0nPHN0cmluZz4nKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+Jyk6CiAgICAgICAgICIiIkNvbXBpbGUgJ2RhdGEnIGludG8gYSBjb2RlIG9iamVjdC4KIAogICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyB0aGF0IGNvbXBpbGUoKSBjYW4gaGFuZGxlLiBUaGUncGF0aCcKICAgICAgICAgYXJndW1lbnQgc2hvdWxkIGJlIHdoZXJlIHRoZSBkYXRhIHdhcyByZXRyaWV2ZWQgKHdoZW4gYXBwbGljYWJsZSkuIiIiCiAgICAgICAgIHJldHVybiBjb21waWxlKGRhdGEsIHBhdGgsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCiAKLSAgICBleGVjX21vZHVsZSA9IF9ib290c3RyYXAuX0xvYWRlckJhc2ljcy5leGVjX21vZHVsZQotICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCisgICAgZXhlY19tb2R1bGUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9Mb2FkZXJCYXNpY3MuZXhlY19tb2R1bGUKKyAgICBsb2FkX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX0xvYWRlckJhc2ljcy5sb2FkX21vZHVsZQogCiBfcmVnaXN0ZXIoSW5zcGVjdExvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQogCkBAIC0yNjcsNyArMjc0LDcgQEAKIF9yZWdpc3RlcihFeGVjdXRpb25Mb2FkZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKLWNsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCiAgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCkBAIC0yNzYsNyArMjgzLDcgQEAKICAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogCi1jbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgorY2xhc3MgU291cmNlTG9hZGVyKF9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQogICAgIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGUpLgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCAyZTFiMmQ3Li4xYjJiNWM5IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMiwxOCArMiwxOCBAQAogCiBpbXBvcnQgX2ltcAogCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCAoU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1vZHVsZVNwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEJ1aWx0aW5JbXBvcnRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRnJvemVuSW1wb3J0ZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgUGF0aEZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRmlsZUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgUGF0aEZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgRmlsZUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKIAogCiBkZWYgYWxsX3N1ZmZpeGVzKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggNmQ3M2IxZC4uMWRiZmYyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMSwxNyArMSwxOSBAQAogIiIiVXRpbGl0eSBjb2RlIGZvciBjb25zdHJ1Y3RpbmcgaW1wb3J0ZXJzLCBldGMuIiIiCi0KLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1BR0lDX05VTUJFUgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IGRlY29kZV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fbG9hZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgorZnJvbSAuIGltcG9ydCBhYmMKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IG1vZHVsZV9mcm9tX3NwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IHNwZWNfZnJvbV9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9maW5kX3NwZWMKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IE1BR0lDX05VTUJFUgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IGRlY29kZV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgogCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKQEAgLTU0LDcgKzU2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTk0LDcgKzk2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTIwMCwzICsyMDIsOTQgQEAKICAgICAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbW9kdWxlLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgorCisKK2NsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisKKyAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgorCisKK2NsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgorCisgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgIiIiVHJpZ2dlciB0aGUgbG9hZCBvZiB0aGUgbW9kdWxlIGFuZCByZXR1cm4gdGhlIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgIyBBbGwgbW9kdWxlIG1ldGFkYXRhIG11c3QgYmUgZ2FybmVyZWQgZnJvbSBfX3NwZWNfXyBpbiBvcmRlciB0byBhdm9pZAorICAgICAgICAjIHVzaW5nIG11dGF0ZWQgdmFsdWVzLgorICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSBfTW9kdWxlCisgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCisgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKKyAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgorICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgorICAgICAgICAgICAgIyBDb2RlIHRoYXQgc2V0IHRoZSBhdHRyaWJ1dGUgbWF5IGhhdmUga2VwdCBhIHJlZmVyZW5jZSB0byB0aGUKKyAgICAgICAgICAgICMgYXNzaWduZWQgb2JqZWN0LCBtYWtpbmcgaWRlbnRpdHkgbW9yZSBpbXBvcnRhbnQgdGhhbiBlcXVhbGl0eS4KKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gYXR0cnNfdGhlbjoKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxpZiBpZChhdHRyc19ub3dba2V5XSkgIT0gaWQoYXR0cnNfdGhlbltrZXldKToKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICBzZWxmLl9fc3BlY19fLmxvYWRlci5leGVjX21vZHVsZShzZWxmKQorICAgICAgICAjIElmIGV4ZWNfbW9kdWxlKCkgd2FzIHVzZWQgZGlyZWN0bHkgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoZSBtb2R1bGUKKyAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgorICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgorICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cuZm9ybWF0KG9yaWdpbmFsX25hbWUpKQorICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgorICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgorICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBhdHRyKQorCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAiIiJUcmlnZ2VyIHRoZSBsb2FkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uLiIiIgorICAgICAgICAjIFRvIHRyaWdnZXIgdGhlIGxvYWQgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXR0cmlidXRlCisgICAgICAgICMgZG9lc24ndCBleGlzdC4KKyAgICAgICAgc2VsZi5fX2dldGF0dHJpYnV0ZV9fKGF0dHIpCisgICAgICAgIGRlbGF0dHIoc2VsZiwgYXR0cikKKworCitjbGFzcyBMYXp5TG9hZGVyKGFiYy5Mb2FkZXIpOgorCisgICAgIiIiQSBsb2FkZXIgdGhhdCBjcmVhdGVzIGEgbW9kdWxlIHdoaWNoIGRlZmVycyBsb2FkaW5nIHVudGlsIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKGxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRlciBtdXN0IGRlZmluZSBleGVjX21vZHVsZSgpJykKKyAgICAgICAgZWxpZiBoYXNhdHRyKGxvYWRlci5fX2NsYXNzX18sICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICAgICBpZiBhYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGUgIT0gbG9hZGVyLl9fY2xhc3NfXy5jcmVhdGVfbW9kdWxlOgorICAgICAgICAgICAgICAgICMgT25seSBjYXJlIGlmIGNyZWF0ZV9tb2R1bGUoKSBpcyBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICAjIGltcG9ydGxpYi5hYmMuTG9hZGVyLgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbG9hZGVyIGNhbm5vdCBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmYWN0b3J5KGNscywgbG9hZGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgY2FsbGFibGUgd2hpY2ggcmV0dXJucyB0aGUgZWFnZXIgbG9hZGVyIG1hZGUgbGF6eS4iIiIKKyAgICAgICAgY2xzLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IGNscyhsb2FkZXIoKmFyZ3MsICoqa3dhcmdzKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2FkZXIpOgorICAgICAgICBzZWxmLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKKyAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IHNlbGYubG9hZGVyCisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZi5sb2FkZXIKKyAgICAgICAgIyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGRlZXAtY29weWluZyBhcyB0cnlpbmcgdG8gc2V0IGFuIGF0dHJpYnV0ZQorICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKKyAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCisgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIG1vZHVsZS5fX2NsYXNzX18gPSBfTGF6eU1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCA0OWU2NmNlLi4yNWRkZDI2IDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAogICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKLSAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24tMzAwMCBmZWF0dXJlcworICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwogICAgIGN1cnJlbnRmcmFtZSgpIC0gZ2V0IHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lCkBAIC0zMiw2ICszMiw5IEBACiAgICAgICAgICAgICAgICdZdXJ5IFNlbGl2YW5vdiA8eXNlbGl2YW5vdkBzcHJ5bWl4LmNvbT4nKQogCiBpbXBvcnQgYXN0CitpbXBvcnQgZGlzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgZW51bQogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKQEAgLTQ4LDE4ICs1MSwxMCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgT3JkZXJlZERpY3QKIAogIyBDcmVhdGUgY29uc3RhbnRzIGZvciB0aGUgY29tcGlsZXIgZmxhZ3MgaW4gSW5jbHVkZS9jb2RlLmgKLSMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLCBidXQgZmFsbAotIyBiYWNrIHRvIGhhcmQtY29kaW5nIHNvIHRoZSBkZXBlbmRlbmN5IGlzIG9wdGlvbmFsCi10cnk6Ci0gICAgZnJvbSBkaXMgaW1wb3J0IENPTVBJTEVSX0ZMQUdfTkFNRVMgYXMgX2ZsYWdfbmFtZXMKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBDT19PUFRJTUlaRUQsIENPX05FV0xPQ0FMUyA9IDB4MSwgMHgyCi0gICAgQ09fVkFSQVJHUywgQ09fVkFSS0VZV09SRFMgPSAweDQsIDB4OAotICAgIENPX05FU1RFRCwgQ09fR0VORVJBVE9SLCBDT19OT0ZSRUUgPSAweDEwLCAweDIwLCAweDQwCi1lbHNlOgotICAgIG1vZF9kaWN0ID0gZ2xvYmFscygpCi0gICAgZm9yIGssIHYgaW4gX2ZsYWdfbmFtZXMuaXRlbXMoKToKLSAgICAgICAgbW9kX2RpY3RbIkNPXyIgKyB2XSA9IGsKKyMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uCittb2RfZGljdCA9IGdsb2JhbHMoKQorZm9yIGssIHYgaW4gZGlzLkNPTVBJTEVSX0ZMQUdfTkFNRVMuaXRlbXMoKToKKyAgICBtb2RfZGljdFsiQ09fIiArIHZdID0gawogCiAjIFNlZSBJbmNsdWRlL29iamVjdC5oCiBUUEZMQUdTX0lTX0FCU1RSQUNUID0gMSA8PCAyMApAQCAtMTgwLDcgKzE3NSwyMiBAQAogCiAgICAgU2VlIGhlbHAoaXNmdW5jdGlvbikgZm9yIGF0dHJpYnV0ZXMgbGlzdGluZy4iIiIKICAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAotICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0dFTkVSQVRPUikKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19HRU5FUkFUT1IgYW5kCisgICAgICAgICAgICAgICAgbm90IG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0NPUk9VVElORSkKKworZGVmIGlzY29yb3V0aW5lZnVuY3Rpb24ob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgorCisgICAgQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCwKKyAgICBvciBnZW5lcmF0b3JzIGRlY29yYXRlZCB3aXRoICJ0eXBlcy5jb3JvdXRpbmUiLgorICAgICIiIgorICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCisgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgKENPX0lURVJBQkxFX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSkpCisKK2RlZiBpc2F3YWl0YWJsZShvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgY2FuIGJlIHVzZWQgaW4gImF3YWl0IiBleHByZXNzaW9uLiIiIgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZSkKIAogZGVmIGlzZ2VuZXJhdG9yKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KQEAgLTE5Nyw3ICsyMDcsMTIgQEAKICAgICAgICAgc2VuZCAgICAgICAgICAgIHJlc3VtZXMgdGhlIGdlbmVyYXRvciBhbmQgInNlbmRzIiBhIHZhbHVlIHRoYXQgYmVjb21lcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlc3VsdCBvZiB0aGUgY3VycmVudCB5aWVsZC1leHByZXNzaW9uCiAgICAgICAgIHRocm93ICAgICAgICAgICB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIGdlbmVyYXRvciIiIgotICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuR2VuZXJhdG9yVHlwZSkKKyAgICByZXR1cm4gKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5HZW5lcmF0b3JUeXBlKSBhbmQKKyAgICAgICAgICAgIG5vdCBvYmplY3QuZ2lfY29kZS5jb19mbGFncyAmIENPX0NPUk9VVElORSkKKworZGVmIGlzY29yb3V0aW5lKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNvcm91dGluZS4iIiIKKyAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUpCiAKIGRlZiBpc3RyYWNlYmFjayhvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB0cmFjZWJhY2suCkBAIC00NjcsNiArNDgyLDc0IEBACiAgICAgZXhwbGluZSA9IGxpbmUuZXhwYW5kdGFicygpCiAgICAgcmV0dXJuIGxlbihleHBsaW5lKSAtIGxlbihleHBsaW5lLmxzdHJpcCgpKQogCitkZWYgX2ZpbmRjbGFzcyhmdW5jKToKKyAgICBjbHMgPSBzeXMubW9kdWxlcy5nZXQoZnVuYy5fX21vZHVsZV9fKQorICAgIGlmIGNscyBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGZvciBuYW1lIGluIGZ1bmMuX19xdWFsbmFtZV9fLnNwbGl0KCcuJylbOi0xXToKKyAgICAgICAgY2xzID0gZ2V0YXR0cihjbHMsIG5hbWUpCisgICAgaWYgbm90IGlzY2xhc3MoY2xzKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm4gY2xzCisKK2RlZiBfZmluZGRvYyhvYmopOgorICAgIGlmIGlzY2xhc3Mob2JqKToKKyAgICAgICAgZm9yIGJhc2UgaW4gb2JqLl9fbXJvX186CisgICAgICAgICAgICBpZiBiYXNlIGlzIG5vdCBvYmplY3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkb2MgPSBiYXNlLl9fZG9jX18KKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpZiBpc21ldGhvZChvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fZnVuY19fLl9fbmFtZV9fCisgICAgICAgIHNlbGYgPSBvYmouX19zZWxmX18KKyAgICAgICAgaWYgKGlzY2xhc3Moc2VsZikgYW5kCisgICAgICAgICAgICBnZXRhdHRyKGdldGF0dHIoc2VsZiwgbmFtZSwgTm9uZSksICdfX2Z1bmNfXycpIGlzIG9iai5fX2Z1bmNfXyk6CisgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCisgICAgICAgICAgICBjbHMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgIGVsaWYgaXNmdW5jdGlvbihvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCisgICAgICAgIGNscyA9IF9maW5kY2xhc3Mob2JqKQorICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBpc2J1aWx0aW4ob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBzZWxmID0gb2JqLl9fc2VsZl9fCisgICAgICAgIGlmIChpc2NsYXNzKHNlbGYpIGFuZAorICAgICAgICAgICAgc2VsZi5fX3F1YWxuYW1lX18gKyAnLicgKyBuYW1lID09IG9iai5fX3F1YWxuYW1lX18pOgorICAgICAgICAgICAgIyBjbGFzc21ldGhvZAorICAgICAgICAgICAgY2xzID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICBlbGlmIGlzbWV0aG9kZGVzY3JpcHRvcihvYmopIG9yIGlzZGF0YWRlc2NyaXB0b3Iob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBjbHMgPSBvYmouX19vYmpjbGFzc19fCisgICAgICAgIGlmIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBwcm9wZXJ0eSk6CisgICAgICAgIGZ1bmMgPSBmLmZnZXQKKyAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhmdW5jKQorICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZvciBiYXNlIGluIGNscy5fX21yb19fOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkb2MgPSBnZXRhdHRyKGJhc2UsIG5hbWUpLl9fZG9jX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRvYworICAgIHJldHVybiBOb25lCisKIGRlZiBnZXRkb2Mob2JqZWN0KToKICAgICAiIiJHZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QuCiAKQEAgLTQ3Nyw2ICs1NjAsMTEgQEAKICAgICAgICAgZG9jID0gb2JqZWN0Ll9fZG9jX18KICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCisgICAgaWYgZG9jIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRvYyA9IF9maW5kZG9jKG9iamVjdCkKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZG9jLCBzdHIpOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHJldHVybiBjbGVhbmRvYyhkb2MpCkBAIC04MTQsNiArOTAyLDE0IEBACiAgICAgICAgIHBhc3MKICAgICByZXR1cm4gbGluZXNbOmJsb2NrZmluZGVyLmxhc3RdCiAKK2RlZiBfbGluZV9udW1iZXJfaGVscGVyKGNvZGVfb2JqLCBsaW5lcywgbG51bSk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBzb3VyY2UgbGluZXMgYW5kIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGZvciBhIGNvZGUgb2JqZWN0LgorCisgICAgVGhlIGFyZ3VtZW50cyBtdXN0IGJlIGEgY29kZSBvYmplY3Qgd2l0aCBsaW5lcyBhbmQgbG51bSBmcm9tIGZpbmRzb3VyY2UuCisgICAgIiIiCisgICAgXywgZW5kX2xpbmUgPSBsaXN0KGRpcy5maW5kbGluZXN0YXJ0cyhjb2RlX29iaikpWy0xXQorICAgIHJldHVybiBsaW5lc1tsbnVtOmVuZF9saW5lXSwgbG51bSArIDEKKwogZGVmIGdldHNvdXJjZWxpbmVzKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBzb3VyY2UgbGluZXMgYW5kIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGZvciBhbiBvYmplY3QuCiAKQEAgLTgyMiwxMCArOTE4LDE5IEBACiAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgb2JqZWN0IGFuZCB0aGUgbGluZSBudW1iZXIgaW5kaWNhdGVzIHdoZXJlIGluIHRoZQogICAgIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdCBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gT1NFcnJvciBpcwogICAgIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKKyAgICBvYmplY3QgPSB1bndyYXAob2JqZWN0KQogICAgIGxpbmVzLCBsbnVtID0gZmluZHNvdXJjZShvYmplY3QpCiAKLSAgICBpZiBpc21vZHVsZShvYmplY3QpOiByZXR1cm4gbGluZXMsIDAKLSAgICBlbHNlOiByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKKyAgICBpZiBpc21vZHVsZShvYmplY3QpOgorICAgICAgICByZXR1cm4gbGluZXMsIDAKKyAgICBlbGlmIGlzY29kZShvYmplY3QpOgorICAgICAgICByZXR1cm4gX2xpbmVfbnVtYmVyX2hlbHBlcihvYmplY3QsIGxpbmVzLCBsbnVtKQorICAgIGVsaWYgaXNmdW5jdGlvbihvYmplY3QpOgorICAgICAgICByZXR1cm4gX2xpbmVfbnVtYmVyX2hlbHBlcihvYmplY3QuX19jb2RlX18sIGxpbmVzLCBsbnVtKQorICAgIGVsaWYgaXNtZXRob2Qob2JqZWN0KToKKyAgICAgICAgcmV0dXJuIF9saW5lX251bWJlcl9oZWxwZXIob2JqZWN0Ll9fZnVuY19fLl9fY29kZV9fLCBsaW5lcywgbG51bSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKIAogZGVmIGdldHNvdXJjZShvYmplY3QpOgogICAgICIiIlJldHVybiB0aGUgdGV4dCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIGFuIG9iamVjdC4KQEAgLTkxOSwxNyArMTAyNCwxOCBAQAogZGVmIGdldGFyZ3NwZWMoZnVuYyk6CiAgICAgIiIiR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KIAotICAgIEEgdHVwbGUgb2YgZm91ciB0aGluZ3MgaXMgcmV0dXJuZWQ6IChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMpLgotICAgICdhcmdzJyBpcyBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLgotICAgICdhcmdzJyB3aWxsIGluY2x1ZGUga2V5d29yZC1vbmx5IGFyZ3VtZW50IG5hbWVzLgotICAgICd2YXJhcmdzJyBhbmQgJ3Zhcmt3JyBhcmUgdGhlIG5hbWVzIG9mIHRoZSAqIGFuZCAqKiBhcmd1bWVudHMgb3IgTm9uZS4KKyAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywga2V5d29yZHMsIGRlZmF1bHRzKS4KKyAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcywgaW5jbHVkaW5nIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KKyAgICAndmFyYXJncycgYW5kICdrZXl3b3JkcycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCiAgICAgJ2RlZmF1bHRzJyBpcyBhbiBuLXR1cGxlIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4KIAotICAgIFVzZSB0aGUgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgZm9yIFB5dGhvbi0zMDAwIGNvZGUsIGFzIGFubm90YXRpb25zCisgICAgVXNlIHRoZSBnZXRmdWxsYXJnc3BlYygpIEFQSSBmb3IgUHl0aG9uIDMgY29kZSwgYXMgYW5ub3RhdGlvbnMKICAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC4gZ2V0YXJnc3BlYygpIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgogICAgIGlmIHRoZSBmdW5jIGhhcyBlaXRoZXIgYW5ub3RhdGlvbnMgb3Iga2V5d29yZCBhcmd1bWVudHMuCiAgICAgIiIiCi0KKyAgICB3YXJuaW5ncy53YXJuKCJpbnNwZWN0LmdldGFyZ3NwZWMoKSBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAgICAgICAidXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm4gPSBcCiAgICAgICAgIGdldGZ1bGxhcmdzcGVjKGZ1bmMpCiAgICAgaWYga3dvbmx5YXJncyBvciBhbm46CkBAIC05NTMsNiArMTA1OSw4IEBACiAgICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAogICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIHRyeToKQEAgLTk3Miw5ICsxMDgwLDEwIEBACiAgICAgICAgICMgZ2V0ZnVsbGFyZ3NwZWMoKSBoaXN0b3JpY2FsbHkgaWdub3JlZCBfX3dyYXBwZWRfXyBhdHRyaWJ1dGVzLAogICAgICAgICAjIHNvIHdlIGVuc3VyZSB0aGF0IHJlbWFpbnMgdGhlIGNhc2UgaW4gMy4zKwogCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UpCisgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdjbHM9U2lnbmF0dXJlKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICMgTW9zdCBvZiB0aGUgdGltZXMgJ3NpZ25hdHVyZScgd2lsbCByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICAjIEJ1dCwgaXQgY2FuIGFsc28gcmFpc2UgQXR0cmlidXRlRXJyb3IsIGFuZCwgbWF5YmUgc29tZXRoaW5nCkBAIC0xMDQzLDggKzExNTIsOCBAQAogZGVmIGZvcm1hdGFubm90YXRpb24oYW5ub3RhdGlvbiwgYmFzZV9tb2R1bGU9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShhbm5vdGF0aW9uLCB0eXBlKToKICAgICAgICAgaWYgYW5ub3RhdGlvbi5fX21vZHVsZV9fIGluICgnYnVpbHRpbnMnLCBiYXNlX21vZHVsZSk6Ci0gICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX25hbWVfXwotICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX21vZHVsZV9fKycuJythbm5vdGF0aW9uLl9fbmFtZV9fCisgICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KKyAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19tb2R1bGVfXysnLicrYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KICAgICByZXR1cm4gcmVwcihhbm5vdGF0aW9uKQogCiBkZWYgZm9ybWF0YW5ub3RhdGlvbnJlbGF0aXZldG8ob2JqZWN0KToKQEAgLTEzMTcsNiArMTQyNiw4IEBACiAgICAgIyBGcmFtZVR5cGUuZl9saW5lbm8gaXMgbm93IGEgZGVzY3JpcHRvciB0aGF0IGdyb3ZlbHMgY29fbG5vdGFiCiAgICAgcmV0dXJuIGZyYW1lLmZfbGluZW5vCiAKK0ZyYW1lSW5mbyA9IG5hbWVkdHVwbGUoJ0ZyYW1lSW5mbycsICgnZnJhbWUnLCkgKyBUcmFjZWJhY2suX2ZpZWxkcykKKwogZGVmIGdldG91dGVyZnJhbWVzKGZyYW1lLCBjb250ZXh0PTEpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgcmVjb3JkcyBmb3IgYSBmcmFtZSBhbmQgYWxsIGhpZ2hlciAoY2FsbGluZykgZnJhbWVzLgogCkBAIC0xMzI0LDcgKzE0MzUsOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKGZyYW1lLCkgKyBnZXRmcmFtZWluZm8oZnJhbWUsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAoZnJhbWUsKSArIGdldGZyYW1laW5mbyhmcmFtZSwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCiAgICAgcmV0dXJuIGZyYW1lbGlzdAogCkBAIC0xMzM1LDcgKzE0NDcsOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgdGI6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKHRiLnRiX2ZyYW1lLCkgKyBnZXRmcmFtZWluZm8odGIsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAodGIudGJfZnJhbWUsKSArIGdldGZyYW1laW5mbyh0YiwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgIHJldHVybiBmcmFtZWxpc3QKIApAQCAtMTUwMSw2ICsxNjE0LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QoY2xzLCBtZXRob2RfbmFtZSk6CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIuIENoZWNrcyBpZiBgYGNsc2BgIGhhcyBhbiBhdHRyaWJ1dGUKKyAgICBuYW1lZCBgYG1ldGhvZF9uYW1lYGAgYW5kIHJldHVybnMgaXQgb25seSBpZiBpdCBpcyBhCisgICAgcHVyZSBweXRob24gZnVuY3Rpb24uCisgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICBtZXRoID0gZ2V0YXR0cihjbHMsIG1ldGhvZF9uYW1lKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKQEAgLTE1MTMsOSArMTYzMCwxMCBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9wYXJ0aWFsKHdyYXBwZWRfc2lnLCBwYXJ0aWFsLCBleHRyYV9hcmdzPSgpKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBjYWxjdWxhdGUgaG93ICd3cmFwcGVkX3NpZycgc2lnbmF0dXJlIHdpbGwKLSAgICAjIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKLSAgICAjIG9uIGl0LgorICAgICIiIlByaXZhdGUgaGVscGVyIHRvIGNhbGN1bGF0ZSBob3cgJ3dyYXBwZWRfc2lnJyBzaWduYXR1cmUgd2lsbAorICAgIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKKyAgICBvbiBpdC4KKyAgICAiIiIKIAogICAgIG9sZF9wYXJhbXMgPSB3cmFwcGVkX3NpZy5wYXJhbWV0ZXJzCiAgICAgbmV3X3BhcmFtcyA9IE9yZGVyZWREaWN0KG9sZF9wYXJhbXMuaXRlbXMoKSkKQEAgLTE1ODgsOCArMTcwNiw5IEBACiAKIAogZGVmIF9zaWduYXR1cmVfYm91bmRfbWV0aG9kKHNpZyk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKLSAgICAjIGZ1bmN0aW9ucyB0byBib3VuZCBtZXRob2RzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKKyAgICBmdW5jdGlvbnMgdG8gYm91bmQgbWV0aG9kcy4KKyAgICAiIiIKIAogICAgIHBhcmFtcyA9IHR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQogCkBAIC0xNjEzLDggKzE3MzIsOSBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2lzX2J1aWx0aW4ob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgY2FsbGFibGUgdGhhdCBtaWdodAotICAgICMgc3VwcG9ydCBBcmd1bWVudCBDbGluaWMncyBfX3RleHRfc2lnbmF0dXJlX18gcHJvdG9jb2wuCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGNhbGxhYmxlIHRoYXQgbWlnaHQKKyAgICBzdXBwb3J0IEFyZ3VtZW50IENsaW5pYydzIF9fdGV4dF9zaWduYXR1cmVfXyBwcm90b2NvbC4KKyAgICAiIiIKICAgICByZXR1cm4gKGlzYnVpbHRpbihvYmopIG9yCiAgICAgICAgICAgICBpc21ldGhvZGRlc2NyaXB0b3Iob2JqKSBvcgogICAgICAgICAgICAgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcykgb3IKQEAgLTE2MjQsMTAgKzE3NDQsMTEgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2Uob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KLSAgICAjIEEgZ29vZCBleGFtcGxlIG9mIHN1Y2ggb2JqZWN0cyBhcmUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGgKLSAgICAjIEN5dGhvbiwgd2hpY2ggaGF2ZSBhbGwgYXR0cmlidXRlcyB0aGF0IGEgcHVyZSBQeXRob24gZnVuY3Rpb24KLSAgICAjIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiJQcml2YXRlIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KKyAgICBBIGdvb2QgZXhhbXBsZSBvZiBzdWNoIG9iamVjdHMgYXJlIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRoCisgICAgQ3l0aG9uLCB3aGljaCBoYXZlIGFsbCBhdHRyaWJ1dGVzIHRoYXQgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbgorICAgIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiIKIAogICAgIGlmIG5vdCBjYWxsYWJsZShvYmopIG9yIGlzY2xhc3Mob2JqKToKICAgICAgICAgIyBBbGwgZnVuY3Rpb24tbGlrZSBvYmplY3RzIGFyZSBvYnZpb3VzbHkgY2FsbGFibGVzLApAQCAtMTY0OCwxMSArMTc2OSwxMiBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9ib3VuZF9wYXJhbShzcGVjKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBnZXQgZmlyc3QgcGFyYW1ldGVyIG5hbWUgZnJvbSBhCi0gICAgIyBfX3RleHRfc2lnbmF0dXJlX18gb2YgYSBidWlsdGluIG1ldGhvZCwgd2hpY2ggc2hvdWxkCi0gICAgIyBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KLSAgICAjIEFzc3VtcHRpb25zIGFyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCB3b24ndCBoYXZlCi0gICAgIyBhIGRlZmF1bHQgdmFsdWUgb3IgYW4gYW5ub3RhdGlvbi4KKyAgICAiIiIgUHJpdmF0ZSBoZWxwZXIgdG8gZ2V0IGZpcnN0IHBhcmFtZXRlciBuYW1lIGZyb20gYQorICAgIF9fdGV4dF9zaWduYXR1cmVfXyBvZiBhIGJ1aWx0aW4gbWV0aG9kLCB3aGljaCBzaG91bGQKKyAgICBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KKyAgICBBc3N1bXB0aW9ucyBhcmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgd29uJ3QgaGF2ZQorICAgIGEgZGVmYXVsdCB2YWx1ZSBvciBhbiBhbm5vdGF0aW9uLgorICAgICIiIgogCiAgICAgYXNzZXJ0IHNwZWMuc3RhcnRzd2l0aCgnKCQnKQogCkBAIC0xNjcxLDcgKzE3OTMsOSBAQAogCiBkZWYgX3NpZ25hdHVyZV9zdHJpcF9ub25fcHl0aG9uX3N5bnRheChzaWduYXR1cmUpOgogICAgICIiIgotICAgIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzIGV4dGVuZGVkIHNpZ25hdHVyZSBmb3JtYXQuCisgICAgUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24uIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzCisgICAgZXh0ZW5kZWQgc2lnbmF0dXJlIGZvcm1hdC4KKwogICAgIFJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSB0aGluZ3M6CiAgICAgICAqIHRoYXQgc2lnbmF0dXJlIHJlLXJlbmRlcmVkIGluIHN0YW5kYXJkIFB5dGhvbiBzeW50YXgsCiAgICAgICAqIHRoZSBpbmRleCBvZiB0aGUgInNlbGYiIHBhcmFtZXRlciAoZ2VuZXJhbGx5IDApLCBvciBOb25lIGlmCkBAIC0xNzQwLDggKzE4NjQsMTAgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9mcm9tc3RyKGNscywgb2JqLCBzLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBwYXJzZSBjb250ZW50IG9mICdfX3RleHRfc2lnbmF0dXJlX18nCi0gICAgIyBhbmQgcmV0dXJuIGEgU2lnbmF0dXJlIGJhc2VkIG9uIGl0CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gcGFyc2UgY29udGVudCBvZiAnX190ZXh0X3NpZ25hdHVyZV9fJworICAgIGFuZCByZXR1cm4gYSBTaWduYXR1cmUgYmFzZWQgb24gaXQuCisgICAgIiIiCisKICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKIAogICAgIGNsZWFuX3NpZ25hdHVyZSwgc2VsZl9wYXJhbWV0ZXIsIGxhc3RfcG9zaXRpb25hbF9vbmx5ID0gXApAQCAtMTg3OSw4ICsyMDA1LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKGNscywgZnVuYywgc2tpcF9ib3VuZF9hcmc9VHJ1ZSk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKLSAgICAjIGJ1aWx0aW4gY2FsbGFibGVzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKKyAgICBidWlsdGluIGNhbGxhYmxlcy4KKyAgICAiIiIKKwogICAgIGlmIG5vdCBfc2lnbmF0dXJlX2lzX2J1aWx0aW4oZnVuYyk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigieyFyfSBpcyBub3QgYSBQeXRob24gYnVpbHRpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iLmZvcm1hdChmdW5jKSkKQEAgLTE4OTIsNyArMjAyMCw5NSBAQAogICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBmdW5jLCBzLCBza2lwX2JvdW5kX2FyZykKIAogCi1kZWYgX3NpZ25hdHVyZV9pbnRlcm5hbChvYmosIGZvbGxvd193cmFwcGVyX2NoYWlucz1UcnVlLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKK2RlZiBfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAiIiJQcml2YXRlIGhlbHBlcjogY29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24uIiIiCisKKyAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKKyAgICBpZiBub3QgaXNmdW5jdGlvbihmdW5jKToKKyAgICAgICAgaWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2UoZnVuYyk6CisgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBpdCdzIG5vdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBhbmQgbm90IGEgZHVjayB0eXBlCisgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJy5mb3JtYXQoZnVuYykpCisKKyAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKKworICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgIGZ1bmNfY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKKyAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICBwb3NpdGlvbmFsID0gdHVwbGUoYXJnX25hbWVzWzpwb3NfY291bnRdKQorICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgYW5ub3RhdGlvbnMgPSBmdW5jLl9fYW5ub3RhdGlvbnNfXworICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgaWYgZGVmYXVsdHM6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQorICAgIGVsc2U6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gMAorCisgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgbm9uX2RlZmF1bHRfY291bnQgPSBwb3NfY291bnQgLSBwb3NfZGVmYXVsdF9jb3VudAorICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQorCisgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgZm9yIG9mZnNldCwgbmFtZSBpbiBlbnVtZXJhdGUocG9zaXRpb25hbFtub25fZGVmYXVsdF9jb3VudDpdKToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQorCisgICAgIyAqYXJncworICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQorICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKKworICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgZm9yIG5hbWUgaW4ga2V5d29yZF9vbmx5OgorICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CisgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0ID0ga3dkZWZhdWx0cy5nZXQobmFtZSwgX2VtcHR5KQorCisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fS0VZV09SRF9PTkxZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKKyAgICAjICoqa3dhcmdzCisgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFM6CisgICAgICAgIGluZGV4ID0gcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50CisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1tpbmRleF0KKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfS0VZV09SRCkpCisKKyAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCisgICAgIyBwYXJhbWV0ZXJzIGxpc3QgKGZvciBjb3JyZWN0IG9yZGVyIGFuZCBkZWZhdWx0cyksIGl0IHNob3VsZCBiZSBPSy4KKyAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICBfX3ZhbGlkYXRlX3BhcmFtZXRlcnNfXz1pc19kdWNrX2Z1bmN0aW9uKQorCisKK2RlZiBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUob2JqLCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnY2xzKToKKworICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yIGFyYml0cmFyeQorICAgIGNhbGxhYmxlIG9iamVjdHMuCisgICAgIiIiCiAKICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCkBAIC0xOTAwLDkgKzIxMTYsMTIgQEAKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CiAgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZwogICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwob2JqLl9fZnVuY19fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLl9fZnVuY19fLAorICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICBpZiBza2lwX2JvdW5kX2FyZzoKICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpCiAgICAgICAgIGVsc2U6CkBAIC0xOTE1LDEwICsyMTM0LDExIEBACiAgICAgICAgICAgICAjIElmIHRoZSB1bndyYXBwZWQgb2JqZWN0IGlzIGEgKm1ldGhvZCosIHdlIG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgICMgc2tpcCBpdHMgZmlyc3QgcGFyYW1ldGVyIChzZWxmKS4KICAgICAgICAgICAgICMgU2VlIHRlc3Rfc2lnbmF0dXJlX3dyYXBwZWRfYm91bmRfbWV0aG9kIGZvciBkZXRhaWxzLgotICAgICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfaW50ZXJuYWwoCisgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAogICAgICAgICAgICAgICAgIG9iaiwKICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICB0cnk6CiAgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCkBAIC0xOTQ1LDkgKzIxNjUsMTIgQEAKICAgICAgICAgICAgICMgKHVzdWFsbHkgYHNlbGZgLCBvciBgY2xzYCkgd2lsbCBub3QgYmUgcGFzc2VkCiAgICAgICAgICAgICAjIGF1dG9tYXRpY2FsbHkgKGFzIGZvciBib3VuZG1ldGhvZHMpCiAKLSAgICAgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChwYXJ0aWFsbWV0aG9kLmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgcGFydGlhbG1ldGhvZC5mdW5jLAorICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbG1ldGhvZCwgKE5vbmUsKSkKIAogICAgICAgICAgICAgZmlyc3Rfd3JhcHBlZF9wYXJhbSA9IHR1cGxlKHdyYXBwZWRfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzBdCkBAIC0xOTU4LDE2ICsyMTgxLDE4IEBACiAgICAgaWYgaXNmdW5jdGlvbihvYmopIG9yIF9zaWduYXR1cmVfaXNfZnVuY3Rpb25saWtlKG9iaik6CiAgICAgICAgICMgSWYgaXQncyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBvciBhbiBvYmplY3QgdGhhdCBpcyBkdWNrIHR5cGUKICAgICAgICAgIyBvZiBhIFB5dGhvbiBmdW5jdGlvbiAoQ3l0aG9uIGZ1bmN0aW9ucywgZm9yIGluc3RhbmNlKSwgdGhlbjoKLSAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9mdW5jdGlvbihzaWdjbHMsIG9iaikKIAogICAgIGlmIF9zaWduYXR1cmVfaXNfYnVpbHRpbihvYmopOgotICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oU2lnbmF0dXJlLCBvYmosCisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbihzaWdjbHMsIG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQogCiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGZ1bmN0b29scy5wYXJ0aWFsKToKLSAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2ludGVybmFsKG9iai5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLmZ1bmMsCisgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgb2JqKQogCiAgICAgc2lnID0gTm9uZQpAQCAtMTk3OCwyMyArMjIwMywyOSBAQAogICAgICAgICAjIGluIGl0cyBtZXRhY2xhc3MKICAgICAgICAgY2FsbCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQogICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgIGNhbGwsCisgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBOb3cgd2UgY2hlY2sgaWYgdGhlICdvYmonIGNsYXNzIGhhcyBhICdfX25ld19fJyBtZXRob2QKICAgICAgICAgICAgIG5ldyA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2Qob2JqLCAnX19uZXdfXycpCiAgICAgICAgICAgICBpZiBuZXcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChuZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgICAgIG5ldywKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKICAgICAgICAgICAgICAgICBpbml0ID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCiAgICAgICAgICAgICAgICAgaWYgaW5pdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChpbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICAgICAgaWYgc2lnIGlzIE5vbmU6CiAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdywgdGhhdCBgb2JqYCBpcyBhIGNsYXNzLCB3aXRoIG5vIHVzZXItCkBAIC0yMDE2LDcgKzIyNDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiB0ZXh0X3NpZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgJ29iaicgY2xhc3MgaGFzIGEgX190ZXh0X3NpZ25hdHVyZV9fIGF0dHJpYnV0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGEgc2lnbmF0dXJlIGJhc2VkIG9uIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKFNpZ25hdHVyZSwgb2JqLCB0ZXh0X3NpZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoc2lnY2xzLCBvYmosIHRleHRfc2lnKQogCiAgICAgICAgICAgICAjIE5vICdfX3RleHRfc2lnbmF0dXJlX18nIHdhcyBmb3VuZCBmb3IgdGhlICdvYmonIGNsYXNzLgogICAgICAgICAgICAgIyBMYXN0IG9wdGlvbiBpcyB0byBjaGVjayBpZiBpdHMgJ19faW5pdF9fJyBpcwpAQCAtMjAyNCw5ICsyMjU1LDEzIEBACiAgICAgICAgICAgICBpZiB0eXBlIG5vdCBpbiBvYmouX19tcm9fXzoKICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBjbGFzcyAobm90IG1ldGFjbGFzcyksIGJ1dCBubyB1c2VyLWRlZmluZWQKICAgICAgICAgICAgICAgICAjIF9faW5pdF9fIG9yIF9fbmV3X18gZm9yIGl0Ci0gICAgICAgICAgICAgICAgaWYgb2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXzoKKyAgICAgICAgICAgICAgICBpZiAob2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgb2JqLl9fbmV3X18gaXMgb2JqZWN0Ll9fbmV3X18pOgogICAgICAgICAgICAgICAgICAgICAjIFJldHVybiBhIHNpZ25hdHVyZSBvZiAnb2JqZWN0JyBidWlsdGluLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlKG9iamVjdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbiB0eXBlIHshcn0nLmZvcm1hdChvYmopKQogCiAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CiAgICAgICAgICMgQW4gb2JqZWN0IHdpdGggX19jYWxsX18KQEAgLTIwMzYsOSArMjI3MSwxMSBAQAogICAgICAgICBjYWxsID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZCh0eXBlKG9iaiksICdfX2NhbGxfXycpCiAgICAgICAgIGlmIGNhbGwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICBjYWxsLAorICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4OgogICAgICAgICAgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIHshcn0nLmZvcm1hdChvYmopCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpIGZyb20gZXgKQEAgLTIwNTgsNDEgKzIyOTUsMzUgQEAKIAogICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NhbGxhYmxlIHshcn0gaXMgbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnLmZvcm1hdChvYmopKQogCi1kZWYgc2lnbmF0dXJlKG9iaik6Ci0gICAgJycnR2V0IGEgc2lnbmF0dXJlIG9iamVjdCBmb3IgdGhlIHBhc3NlZCBjYWxsYWJsZS4nJycKLSAgICByZXR1cm4gX3NpZ25hdHVyZV9pbnRlcm5hbChvYmopCi0KIAogY2xhc3MgX3ZvaWQ6Ci0gICAgJycnQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlJycnCisgICAgIiIiQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlLiIiIgogCiAKIGNsYXNzIF9lbXB0eToKLSAgICBwYXNzCisgICAgIiIiTWFya2VyIG9iamVjdCBmb3IgU2lnbmF0dXJlLmVtcHR5IGFuZCBQYXJhbWV0ZXIuZW1wdHkuIiIiCiAKIAotY2xhc3MgX1BhcmFtZXRlcktpbmQoaW50KToKLSAgICBkZWYgX19uZXdfXyhzZWxmLCAqYXJncywgbmFtZSk6Ci0gICAgICAgIG9iaiA9IGludC5fX25ld19fKHNlbGYsICphcmdzKQotICAgICAgICBvYmouX25hbWUgPSBuYW1lCi0gICAgICAgIHJldHVybiBvYmoKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGVudW0uSW50RW51bSk6CisgICAgUE9TSVRJT05BTF9PTkxZID0gMAorICAgIFBPU0lUSU9OQUxfT1JfS0VZV09SRCA9IDEKKyAgICBWQVJfUE9TSVRJT05BTCA9IDIKKyAgICBLRVlXT1JEX09OTFkgPSAzCisgICAgVkFSX0tFWVdPUkQgPSA0CiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfCiAKIAotX1BPU0lUSU9OQUxfT05MWSAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgwLCBuYW1lPSdQT1NJVElPTkFMX09OTFknKQotX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgPSBfUGFyYW1ldGVyS2luZCgxLCBuYW1lPSdQT1NJVElPTkFMX09SX0tFWVdPUkQnKQotX1ZBUl9QT1NJVElPTkFMICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgyLCBuYW1lPSdWQVJfUE9TSVRJT05BTCcpCi1fS0VZV09SRF9PTkxZICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDMsIG5hbWU9J0tFWVdPUkRfT05MWScpCi1fVkFSX0tFWVdPUkQgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDQsIG5hbWU9J1ZBUl9LRVlXT1JEJykKK19QT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT05MWQorX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgID0gX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PUl9LRVlXT1JECitfVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfUE9TSVRJT05BTAorX0tFWVdPUkRfT05MWSAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuS0VZV09SRF9PTkxZCitfVkFSX0tFWVdPUkQgICAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfS0VZV09SRAogCiAKIGNsYXNzIFBhcmFtZXRlcjoKLSAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorICAgICIiIlJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgaW4gYSBmdW5jdGlvbiBzaWduYXR1cmUuCiAKICAgICBIYXMgdGhlIGZvbGxvd2luZyBwdWJsaWMgYXR0cmlidXRlczoKIApAQCAtMjExMSw3ICsyMzQyLDcgQEAKICAgICAgICAgUG9zc2libGUgdmFsdWVzOiBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWWAsCiAgICAgICAgIGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEYCwgYFBhcmFtZXRlci5WQVJfUE9TSVRJT05BTGAsCiAgICAgICAgIGBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZYCwgYFBhcmFtZXRlci5WQVJfS0VZV09SRGAuCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19raW5kJywgJ19kZWZhdWx0JywgJ19hbm5vdGF0aW9uJykKIApAQCAtMjE0OCw2ICsyMzc5LDE2IEBACiAKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHR5cGUoc2VsZiksCisgICAgICAgICAgICAgICAgKHNlbGYuX25hbWUsIHNlbGYuX2tpbmQpLAorICAgICAgICAgICAgICAgIHsnX2RlZmF1bHQnOiBzZWxmLl9kZWZhdWx0LAorICAgICAgICAgICAgICAgICAnX2Fubm90YXRpb24nOiBzZWxmLl9hbm5vdGF0aW9ufSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9kZWZhdWx0ID0gc3RhdGVbJ19kZWZhdWx0J10KKyAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9IHN0YXRlWydfYW5ub3RhdGlvbiddCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTIxNjYsNyArMjQwNyw3IEBACiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBuYW1lPV92b2lkLCBraW5kPV92b2lkLAogICAgICAgICAgICAgICAgIGFubm90YXRpb249X3ZvaWQsIGRlZmF1bHQ9X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuJycnCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4iIiIKIAogICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKQEAgLTIyMDIsMjIgKzI0NDMsMjUgQEAKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzx7fSBhdCB7OiN4fSB7IXJ9PicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiAnPHt9ICJ7fSI+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYua2luZCwgc2VsZi5hbm5vdGF0aW9uLCBzZWxmLmRlZmF1bHQpKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIFBhcmFtZXRlcikgYW5kCi0gICAgICAgICAgICAgICAgc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHQgPT0gb3RoZXIuX2RlZmF1bHQgYW5kCi0gICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKKyAgICAgICAgcmV0dXJuIChzZWxmIGlzIG90aGVyIG9yCisgICAgICAgICAgICAgICAgICAgIChpc3N1YmNsYXNzKG90aGVyLl9fY2xhc3NfXywgUGFyYW1ldGVyKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUgPT0gb3RoZXIuX25hbWUgYW5kCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVmYXVsdCA9PSBvdGhlci5fZGVmYXVsdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPT0gb3RoZXIuX2Fubm90YXRpb24pKQogCiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCiAKIAogY2xhc3MgQm91bmRBcmd1bWVudHM6Ci0gICAgJycnUmVzdWx0IG9mIGBTaWduYXR1cmUuYmluZGAgY2FsbC4gIEhvbGRzIHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cworICAgICIiIlJlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKICAgICB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgogCiAgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CkBAIC0yMjMxLDcgKzI0NzUsOSBAQAogICAgICAgICBUdXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB2YWx1ZXMuCiAgICAgKiBrd2FyZ3MgOiBkaWN0CiAgICAgICAgIERpY3Qgb2Yga2V5d29yZCBhcmd1bWVudHMgdmFsdWVzLgotICAgICcnJworICAgICIiIgorCisgICAgX19zbG90c19fID0gKCdhcmd1bWVudHMnLCAnX3NpZ25hdHVyZScsICdfX3dlYWtyZWZfXycpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2lnbmF0dXJlLCBhcmd1bWVudHMpOgogICAgICAgICBzZWxmLmFyZ3VtZW50cyA9IGFyZ3VtZW50cwpAQCAtMjI5NCwxNyArMjU0MCw2MSBAQAogCiAgICAgICAgIHJldHVybiBrd2FyZ3MKIAorICAgIGRlZiBhcHBseV9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIiIiU2V0IGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIGFyZ3VtZW50cy4KKworICAgICAgICBGb3IgdmFyaWFibGUtcG9zaXRpb25hbCBhcmd1bWVudHMgKCphcmdzKSB0aGUgZGVmYXVsdCBpcyBhbgorICAgICAgICBlbXB0eSB0dXBsZS4KKworICAgICAgICBGb3IgdmFyaWFibGUta2V5d29yZCBhcmd1bWVudHMgKCoqa3dhcmdzKSB0aGUgZGVmYXVsdCBpcyBhbgorICAgICAgICBlbXB0eSBkaWN0LgorICAgICAgICAiIiIKKyAgICAgICAgYXJndW1lbnRzID0gc2VsZi5hcmd1bWVudHMKKyAgICAgICAgaWYgbm90IGFyZ3VtZW50czoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBuZXdfYXJndW1lbnRzID0gW10KKyAgICAgICAgZm9yIG5hbWUsIHBhcmFtIGluIHNlbGYuX3NpZ25hdHVyZS5wYXJhbWV0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV3X2FyZ3VtZW50cy5hcHBlbmQoKG5hbWUsIGFyZ3VtZW50c1tuYW1lXSkpCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgaWYgcGFyYW0uZGVmYXVsdCBpcyBub3QgX2VtcHR5OgorICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJhbS5kZWZhdWx0CisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kIGlzIF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gKCkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtLmtpbmQgaXMgX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgICAgICB2YWwgPSB7fQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBCb3VuZEFyZ3VtZW50cyB3YXMgbGlrZWx5IHByb2R1Y2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICMgU2lnbmF0dXJlLmJpbmRfcGFydGlhbCgpLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIG5ld19hcmd1bWVudHMuYXBwZW5kKChuYW1lLCB2YWwpKQorICAgICAgICBzZWxmLmFyZ3VtZW50cyA9IE9yZGVyZWREaWN0KG5ld19hcmd1bWVudHMpCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIChpc3N1YmNsYXNzKG90aGVyLl9fY2xhc3NfXywgQm91bmRBcmd1bWVudHMpIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlID09IG90aGVyLnNpZ25hdHVyZSBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9PSBvdGhlci5hcmd1bWVudHMpCisgICAgICAgIHJldHVybiAoc2VsZiBpcyBvdGhlciBvcgorICAgICAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIEJvdW5kQXJndW1lbnRzKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlID09IG90aGVyLnNpZ25hdHVyZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykpCiAKICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKIAorICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzdGF0ZVsnX3NpZ25hdHVyZSddCisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gc3RhdGVbJ2FyZ3VtZW50cyddCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4geydfc2lnbmF0dXJlJzogc2VsZi5fc2lnbmF0dXJlLCAnYXJndW1lbnRzJzogc2VsZi5hcmd1bWVudHN9CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBzZWxmLmFyZ3VtZW50cy5pdGVtcygpOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3t9PXshcn0nLmZvcm1hdChhcmcsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICc8e30gKHt9KT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQorCiAKIGNsYXNzIFNpZ25hdHVyZToKLSAgICAnJydBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KKyAgICAiIiJBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KICAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKICAgICBmdW5jdGlvbiwgYXMgd2VsbCBhcyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLgogCkBAIC0yMzI0LDcgKzI2MTQsNyBAQAogICAgICogYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKICAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgIHRvIHBhcmFtZXRlcnMgKHNpbXVsYXRpbmcgJ2Z1bmN0b29scy5wYXJ0aWFsJyBiZWhhdmlvci4pCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19yZXR1cm5fYW5ub3RhdGlvbicsICdfcGFyYW1ldGVycycpCiAKQEAgLTIzMzUsOSArMjYyNSw5IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1ldGVycz1Ob25lLCAqLCByZXR1cm5fYW5ub3RhdGlvbj1fZW1wdHksCiAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgogICAgICAgICBvYmplY3RzIGFuZCAncmV0dXJuX2Fubm90YXRpb24nLiAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuCi0gICAgICAgICcnJworICAgICAgICAiIiIKIAogICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgpCkBAIC0yMzg2LDg5ICsyNjc2LDI4IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9mdW5jdGlvbihjbHMsIGZ1bmMpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbicnJworICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbi4iIiIKIAotICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKLSAgICAgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6Ci0gICAgICAgICAgICBpZiBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShmdW5jKToKLSAgICAgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIElmIGl0J3Mgbm90IGEgcHVyZSBQeXRob24gZnVuY3Rpb24sIGFuZCBub3QgYSBkdWNrIHR5cGUKLSAgICAgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQotCi0gICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscwotCi0gICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgotICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCi0gICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAotICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKLSAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKLSAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50Ci0gICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCi0gICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KLSAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXwotICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwotCi0gICAgICAgIGlmIGRlZmF1bHRzOgotICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKLQotICAgICAgICBwYXJhbWV0ZXJzID0gW10KLQotICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCi0gICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKLSAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCi0KLSAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCi0gICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6Ci0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCi0KLSAgICAgICAgIyAqYXJncwotICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgotICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCi0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQotCi0gICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCi0gICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKLSAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKLSAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKLQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQotICAgICAgICAjICoqa3dhcmdzCi0gICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTOgotICAgICAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKLSAgICAgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6Ci0gICAgICAgICAgICAgICAgaW5kZXggKz0gMQotCi0gICAgICAgICAgICBuYW1lID0gYXJnX25hbWVzW2luZGV4XQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9LRVlXT1JEKSkKLQotICAgICAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCi0gICAgICAgICMgcGFyYW1ldGVycyBsaXN0IChmb3IgY29ycmVjdCBvcmRlciBhbmQgZGVmYXVsdHMpLCBpdCBzaG91bGQgYmUgT0suCi0gICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCi0gICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189aXNfZHVja19mdW5jdGlvbikKKyAgICAgICAgd2FybmluZ3Mud2FybigiaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9uKGNscywgZnVuYykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tX2J1aWx0aW4oY2xzLCBmdW5jKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBidWlsdGluIGZ1bmN0aW9uLiIiIgorCisgICAgICAgIHdhcm5pbmdzLndhcm4oImluc3BlY3QuU2lnbmF0dXJlLmZyb21fYnVpbHRpbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oY2xzLCBmdW5jKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY2FsbGFibGUoY2xzLCBvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIGNhbGxhYmxlIG9iamVjdC4iIiIKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShvYmosIHNpZ2Nscz1jbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVkKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCkBAIC0yNDc4LDEwICsyNzA3LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgcGFyYW1ldGVycz1fdm9pZCwgcmV0dXJuX2Fubm90YXRpb249X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KICAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCiAgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAKICAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBfdm9pZDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKQEAgLTI0OTIsNDEgKzI3MjEsMzAgQEAKICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikocGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249cmV0dXJuX2Fubm90YXRpb24pCiAKKyAgICBkZWYgX2hhc2hfYmFzaXMoc2VsZik6CisgICAgICAgIHBhcmFtcyA9IHR1cGxlKHBhcmFtIGZvciBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCAhPSBfS0VZV09SRF9PTkxZKQorCisgICAgICAgIGt3b19wYXJhbXMgPSB7cGFyYW0ubmFtZTogcGFyYW0gZm9yIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX0tFWVdPUkRfT05MWX0KKworICAgICAgICByZXR1cm4gcGFyYW1zLCBrd29fcGFyYW1zLCBzZWxmLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9oYXNoX2Jhc2lzKCkKKyAgICAgICAga3dvX3BhcmFtcyA9IGZyb3plbnNldChrd29fcGFyYW1zLnZhbHVlcygpKQorICAgICAgICByZXR1cm4gaGFzaCgocGFyYW1zLCBrd29fcGFyYW1zLCByZXR1cm5fYW5ub3RhdGlvbikpCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgKG5vdCBpc3N1YmNsYXNzKHR5cGUob3RoZXIpLCBTaWduYXR1cmUpIG9yCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuX2Fubm90YXRpb24gIT0gb3RoZXIucmV0dXJuX2Fubm90YXRpb24gb3IKLSAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYucGFyYW1ldGVycykgIT0gbGVuKG90aGVyLnBhcmFtZXRlcnMpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIG90aGVyX3Bvc2l0aW9ucyA9IHtwYXJhbTogaWR4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaWR4LCBwYXJhbSBpbiBlbnVtZXJhdGUob3RoZXIucGFyYW1ldGVycy5rZXlzKCkpfQotCi0gICAgICAgIGZvciBpZHgsIChwYXJhbV9uYW1lLCBwYXJhbSkgaW4gZW51bWVyYXRlKHNlbGYucGFyYW1ldGVycy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX0tFWVdPUkRfT05MWToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG90aGVyX3BhcmFtID0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0gIT0gb3RoZXJfcGFyYW06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvdGhlcl9pZHggPSBvdGhlcl9wb3NpdGlvbnNbcGFyYW1fbmFtZV0KLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT0gb3RoZXJfaWR4IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSAhPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiAoc2VsZiBpcyBvdGhlciBvcgorICAgICAgICAgICAgICAgICAgICAoaXNpbnN0YW5jZShvdGhlciwgU2lnbmF0dXJlKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hfYmFzaXMoKSA9PSBvdGhlci5faGFzaF9iYXNpcygpKSkKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQogCiAgICAgZGVmIF9iaW5kKHNlbGYsIGFyZ3MsIGt3YXJncywgKiwgcGFydGlhbD1GYWxzZSk6Ci0gICAgICAgICcnJ1ByaXZhdGUgbWV0aG9kLiAgRG9uJ3QgdXNlIGRpcmVjdGx5LicnJworICAgICAgICAiIiJQcml2YXRlIG1ldGhvZC4gRG9uJ3QgdXNlIGRpcmVjdGx5LiIiIgogCiAgICAgICAgIGFyZ3VtZW50cyA9IE9yZGVyZWREaWN0KCkKIApAQCAtMjU3NCw3ICsyNzkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6IHthcmchcn0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdChhcmc9cGFyYW0ubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNTg3LDcgKzI4MDUsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpIGZyb20gTm9uZQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCkBAIC0yNTk5LDggKzI4MTgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3thcmchcn0nLmZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc9cGFyYW0ubmFtZSkpIGZyb20gTm9uZQogCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKIApAQCAtMjYyOSw3ICsyODQ5LDcgQEAKICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICBpZiAobm90IHBhcnRpYWwgYW5kIHBhcmFtLmtpbmQgIT0gX1ZBUl9QT1NJVElPTkFMIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgX2VtcHR5KToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnLiBcCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiB7YXJnIXJ9Jy4gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KGFyZz1wYXJhbV9uYW1lKSkgZnJvbSBOb25lCiAKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjQ4LDI0ICsyODY4LDM3IEBACiAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50IHthcmchcn0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZz1uZXh0KGl0ZXIoa3dhcmdzKSkpKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9ib3VuZF9hcmd1bWVudHNfY2xzKHNlbGYsIGFyZ3VtZW50cykKIAogICAgIGRlZiBiaW5kKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBtYXBzIHRoZSBwYXNzZWQgYGFyZ3NgCisgICAgICAgICIiIkdldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBtYXBzIHRoZSBwYXNzZWQgYGFyZ3NgCiAgICAgICAgIGFuZCBga3dhcmdzYCB0byB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUuICBSYWlzZXMgYFR5cGVFcnJvcmAKICAgICAgICAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KLSAgICAgICAgJycnCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gYXJnc1swXS5fYmluZChhcmdzWzE6XSwga3dhcmdzKQogCiAgICAgZGVmIGJpbmRfcGFydGlhbCgqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgcGFydGlhbGx5IG1hcHMgdGhlCisgICAgICAgICIiIkdldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKICAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgogICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KLSAgICAgICAgJycnCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gYXJnc1swXS5fYmluZChhcmdzWzE6XSwga3dhcmdzLCBwYXJ0aWFsPVRydWUpCiAKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICh0eXBlKHNlbGYpLAorICAgICAgICAgICAgICAgICh0dXBsZShzZWxmLl9wYXJhbWV0ZXJzLnZhbHVlcygpKSwpLAorICAgICAgICAgICAgICAgIHsnX3JldHVybl9hbm5vdGF0aW9uJzogc2VsZi5fcmV0dXJuX2Fubm90YXRpb259KQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uID0gc3RhdGVbJ19yZXR1cm5fYW5ub3RhdGlvbiddCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPHt9IHt9PicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmKQorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIHJlbmRlcl9wb3Nfb25seV9zZXBhcmF0b3IgPSBGYWxzZQpAQCAtMjcxMSw2ICsyOTQ0LDEyIEBACiAKICAgICAgICAgcmV0dXJuIHJlbmRlcmVkCiAKKworZGVmIHNpZ25hdHVyZShvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUpOgorICAgICIiIkdldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuIiIiCisgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKG9iaiwgZm9sbG93X3dyYXBwZWQ9Zm9sbG93X3dyYXBwZWQpCisKKwogZGVmIF9tYWluKCk6CiAgICAgIiIiIExvZ2ljIGZvciBpbnNwZWN0aW5nIGFuIG9iamVjdCBnaXZlbiBhdCBjb21tYW5kIGxpbmUgIiIiCiAgICAgaW1wb3J0IGFyZ3BhcnNlCmRpZmYgLS1naXQgYS9MaWIvaXBhZGRyZXNzLnB5IGIvTGliL2lwYWRkcmVzcy5weQppbmRleCBhYzAzYzM2Li43NDY5YTlkIDEwMDY0NAotLS0gYS9MaWIvaXBhZGRyZXNzLnB5CisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICIiIgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoNCwgJ2JpZycpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NCIpCiAKIApAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gYWRkcmVzcy50b19ieXRlcygxNiwgJ2JpZycpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NiIpCiAKIApAQCAtMTY0LDIyICsxNjQsMjMgQEAKIAogCiBkZWYgX2ZpbmRfYWRkcmVzc19yYW5nZShhZGRyZXNzZXMpOgotICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBJUHYjQWRkcmVzcy4KKyAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2Ygc29ydGVkIGRlZHVwbGljYXRlZCBJUHYjQWRkcmVzcy4KIAogICAgIEFyZ3M6CiAgICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCiAKLSAgICBSZXR1cm5zOgorICAgIFlpZWxkczoKICAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBmaXJzdCBhbmQgbGFzdCBJUCBhZGRyZXNzZXMgaW4gdGhlIHNlcXVlbmNlLgogCiAgICAgIiIiCi0gICAgZmlyc3QgPSBsYXN0ID0gYWRkcmVzc2VzWzBdCi0gICAgZm9yIGlwIGluIGFkZHJlc3Nlc1sxOl06Ci0gICAgICAgIGlmIGlwLl9pcCA9PSBsYXN0Ll9pcCArIDE6Ci0gICAgICAgICAgICBsYXN0ID0gaXAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgcmV0dXJuIChmaXJzdCwgbGFzdCkKKyAgICBpdCA9IGl0ZXIoYWRkcmVzc2VzKQorICAgIGZpcnN0ID0gbGFzdCA9IG5leHQoaXQpCisgICAgZm9yIGlwIGluIGl0OgorICAgICAgICBpZiBpcC5faXAgIT0gbGFzdC5faXAgKyAxOgorICAgICAgICAgICAgeWllbGQgZmlyc3QsIGxhc3QKKyAgICAgICAgICAgIGZpcnN0ID0gaXAKKyAgICAgICAgbGFzdCA9IGlwCisgICAgeWllbGQgZmlyc3QsIGxhc3QKIAogCiBkZWYgX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMobnVtYmVyLCBiaXRzKToKQEAgLTE5NSwxMSArMTk2LDcgQEAKICAgICAiIiIKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgcmV0dXJuIGJpdHMKLSAgICBmb3IgaSBpbiByYW5nZShiaXRzKToKLSAgICAgICAgaWYgKG51bWJlciA+PiBpKSAmIDE6Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICMgQWxsIGJpdHMgb2YgaW50ZXJlc3Qgd2VyZSB6ZXJvLCBldmVuIGlmIHRoZXJlIGFyZSBtb3JlIGluIHRoZSBudW1iZXIKLSAgICByZXR1cm4gYml0cworICAgIHJldHVybiBtaW4oYml0cywgKH5udW1iZXIgJiAobnVtYmVyLTEpKS5iaXRfbGVuZ3RoKCkpCiAKIAogZGVmIHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KToKQEAgLTI1MCwxNSArMjQ3LDE0IEBACiAgICAgd2hpbGUgZmlyc3RfaW50IDw9IGxhc3RfaW50OgogICAgICAgICBuYml0cyA9IG1pbihfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhmaXJzdF9pbnQsIGlwX2JpdHMpLAogICAgICAgICAgICAgICAgICAgICAobGFzdF9pbnQgLSBmaXJzdF9pbnQgKyAxKS5iaXRfbGVuZ3RoKCkgLSAxKQotICAgICAgICBuZXQgPSBpcCgnJXMvJWQnICUgKGZpcnN0LCBpcF9iaXRzIC0gbmJpdHMpKQorICAgICAgICBuZXQgPSBpcCgoZmlyc3RfaW50LCBpcF9iaXRzIC0gbmJpdHMpKQogICAgICAgICB5aWVsZCBuZXQKICAgICAgICAgZmlyc3RfaW50ICs9IDEgPDwgbmJpdHMKICAgICAgICAgaWYgZmlyc3RfaW50IC0gMSA9PSBpcC5fQUxMX09ORVM6CiAgICAgICAgICAgICBicmVhawotICAgICAgICBmaXJzdCA9IGZpcnN0Ll9fY2xhc3NfXyhmaXJzdF9pbnQpCiAKIAotZGVmIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKGFkZHJlc3Nlcyk6CitkZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChhZGRyZXNzZXMpOgogICAgICIiIkxvb3BzIHRocm91Z2ggdGhlIGFkZHJlc3NlcywgY29sbGFwc2luZyBjb25jdXJyZW50IG5ldGJsb2Nrcy4KIAogICAgIEV4YW1wbGU6CkBAIC0yNjgsNyArMjY0LDcgQEAKICAgICAgICAgaXAzID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JykKICAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKIAotICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KKyAgICAgICAgX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQogCiAgICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQpAQCAtMjgyLDI4ICsyNzgsMjkgQEAKICAgICAgICAgcGFzc2VkLgogCiAgICAgIiIiCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgbGFzdF9hZGRyID0gTm9uZQotICAgICAgICByZXRfYXJyYXkgPSBbXQotICAgICAgICBvcHRpbWl6ZWQgPSBGYWxzZQotCi0gICAgICAgIGZvciBjdXJfYWRkciBpbiBhZGRyZXNzZXM6Ci0gICAgICAgICAgICBpZiBub3QgcmV0X2FycmF5OgotICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCi0gICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKLSAgICAgICAgICAgIGVsaWYgKGN1cl9hZGRyLm5ldHdvcmtfYWRkcmVzcyA+PSBsYXN0X2FkZHIubmV0d29ya19hZGRyZXNzIGFuZAotICAgICAgICAgICAgICAgIGN1cl9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IGxhc3RfYWRkci5icm9hZGNhc3RfYWRkcmVzcyk6Ci0gICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBjdXJfYWRkciA9PSBsaXN0KGxhc3RfYWRkci5zdXBlcm5ldCgpLnN1Ym5ldHMoKSlbMV06Ci0gICAgICAgICAgICAgICAgcmV0X2FycmF5Wy0xXSA9IGxhc3RfYWRkciA9IGxhc3RfYWRkci5zdXBlcm5ldCgpCi0gICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsYXN0X2FkZHIgPSBjdXJfYWRkcgotICAgICAgICAgICAgICAgIHJldF9hcnJheS5hcHBlbmQoY3VyX2FkZHIpCi0KLSAgICAgICAgYWRkcmVzc2VzID0gcmV0X2FycmF5Ci0gICAgICAgIGlmIG5vdCBvcHRpbWl6ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRkcmVzc2VzCisgICAgIyBGaXJzdCBtZXJnZQorICAgIHRvX21lcmdlID0gbGlzdChhZGRyZXNzZXMpCisgICAgc3VibmV0cyA9IHt9CisgICAgd2hpbGUgdG9fbWVyZ2U6CisgICAgICAgIG5ldCA9IHRvX21lcmdlLnBvcCgpCisgICAgICAgIHN1cGVybmV0ID0gbmV0LnN1cGVybmV0KCkKKyAgICAgICAgZXhpc3RpbmcgPSBzdWJuZXRzLmdldChzdXBlcm5ldCkKKyAgICAgICAgaWYgZXhpc3RpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHN1Ym5ldHNbc3VwZXJuZXRdID0gbmV0CisgICAgICAgIGVsaWYgZXhpc3RpbmcgIT0gbmV0OgorICAgICAgICAgICAgIyBNZXJnZSBjb25zZWN1dGl2ZSBzdWJuZXRzCisgICAgICAgICAgICBkZWwgc3VibmV0c1tzdXBlcm5ldF0KKyAgICAgICAgICAgIHRvX21lcmdlLmFwcGVuZChzdXBlcm5ldCkKKyAgICAjIFRoZW4gaXRlcmF0ZSBvdmVyIHJlc3VsdGluZyBuZXR3b3Jrcywgc2tpcHBpbmcgc3Vic3VtZWQgc3VibmV0cworICAgIGxhc3QgPSBOb25lCisgICAgZm9yIG5ldCBpbiBzb3J0ZWQoc3VibmV0cy52YWx1ZXMoKSk6CisgICAgICAgIGlmIGxhc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFNpbmNlIHRoZXkgYXJlIHNvcnRlZCwgbGFzdC5uZXR3b3JrX2FkZHJlc3MgPD0gbmV0Lm5ldHdvcmtfYWRkcmVzcworICAgICAgICAgICAgIyBpcyBhIGdpdmVuLgorICAgICAgICAgICAgaWYgbGFzdC5icm9hZGNhc3RfYWRkcmVzcyA+PSBuZXQuYnJvYWRjYXN0X2FkZHJlc3M6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgeWllbGQgbmV0CisgICAgICAgIGxhc3QgPSBuZXQKIAogCiBkZWYgY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3Nlcyk6CkBAIC0zMjQsNyArMzIxLDYgQEAKICAgICAgICAgVHlwZUVycm9yOiBJZiBwYXNzZWQgYSBsaXN0IG9mIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KIAogICAgICIiIgotICAgIGkgPSAwCiAgICAgYWRkcnMgPSBbXQogICAgIGlwcyA9IFtdCiAgICAgbmV0cyA9IFtdCkBAIC0zNTIsMTUgKzM0OCwxMyBAQAogCiAgICAgIyBzb3J0IGFuZCBkZWR1cAogICAgIGlwcyA9IHNvcnRlZChzZXQoaXBzKSkKLSAgICBuZXRzID0gc29ydGVkKHNldChuZXRzKSkKIAotICAgIHdoaWxlIGkgPCBsZW4oaXBzKToKLSAgICAgICAgKGZpcnN0LCBsYXN0KSA9IF9maW5kX2FkZHJlc3NfcmFuZ2UoaXBzW2k6XSkKLSAgICAgICAgaSA9IGlwcy5pbmRleChsYXN0KSArIDEKLSAgICAgICAgYWRkcnMuZXh0ZW5kKHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KSkKKyAgICAjIGZpbmQgY29uc2VjdXRpdmUgYWRkcmVzcyByYW5nZXMgaW4gdGhlIHNvcnRlZCBzZXF1ZW5jZSBhbmQgc3VtbWFyaXplIHRoZW0KKyAgICBpZiBpcHM6CisgICAgICAgIGZvciBmaXJzdCwgbGFzdCBpbiBfZmluZF9hZGRyZXNzX3JhbmdlKGlwcyk6CisgICAgICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQogCi0gICAgcmV0dXJuIGl0ZXIoX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoc29ydGVkKAotICAgICAgICBhZGRycyArIG5ldHMsIGtleT1fQmFzZU5ldHdvcmsuX2dldF9uZXR3b3Jrc19rZXkpKSkKKyAgICByZXR1cm4gX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChhZGRycyArIG5ldHMpCiAKIAogZGVmIGdldF9taXhlZF90eXBlX2tleShvYmopOgpAQCAtMzkyLDYgKzM4Niw4IEBACiAKICAgICAiIiJUaGUgbW90aGVyIGNsYXNzLiIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBleHBsb2RlZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb25naGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgpAQCAtNDAzLDYgKzM5OSwxNyBAQAogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBETlMgcG9pbnRlciBmb3IgdGhlIElQIGFkZHJlc3MsIGUuZy46CisgICAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjEyNy4wLjAuMSIpLnJldmVyc2VfcG9pbnRlcgorICAgICAgICAgICAgJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnCisgICAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjIwMDE6ZGI4OjoxIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgICAnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuOC5iLmQuMC4xLjAuMC4yLmlwNi5hcnBhJworCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmV2ZXJzZV9wb2ludGVyKCkKKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgogICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIHZlcnNpb24gc3BlY2lmaWVkJyAlICh0eXBlKHNlbGYpLCkKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCkBAIC00MjMsNyArNDMwLDggQEAKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBhZGRyZXNzX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4sIHNlbGYuX3ZlcnNpb24pKQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChjbHMsIHByZWZpeGxlbik6CiAgICAgICAgICIiIlR1cm4gdGhlIHByZWZpeCBsZW5ndGggaW50byBhIGJpdHdpc2UgbmV0bWFzawogCiAgICAgICAgIEFyZ3M6CkBAIC00MzMsOSArNDQxLDEwIEBACiAgICAgICAgICAgICBBbiBpbnRlZ2VyLgogCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fQUxMX09ORVMgXiAoc2VsZi5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQorICAgICAgICByZXR1cm4gY2xzLl9BTExfT05FUyBeIChjbHMuX0FMTF9PTkVTID4+IHByZWZpeGxlbikKIAotICAgIGRlZiBfcHJlZml4X2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoY2xzLCBpcF9pbnQpOgogICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIHRoZSBiaXR3aXNlIG5ldG1hc2suCiAKICAgICAgICAgQXJnczoKQEAgLTQ0OCwyMiArNDU3LDI0IEBACiAgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiB0aGUgaW5wdXQgaW50ZXJtaW5nbGVzIHplcm9lcyAmIG9uZXMKICAgICAgICAgIiIiCiAgICAgICAgIHRyYWlsaW5nX3plcm9lcyA9IF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGlwX2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbikKLSAgICAgICAgcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbiAtIHRyYWlsaW5nX3plcm9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuX21heF9wcmVmaXhsZW4pCisgICAgICAgIHByZWZpeGxlbiA9IGNscy5fbWF4X3ByZWZpeGxlbiAtIHRyYWlsaW5nX3plcm9lcwogICAgICAgICBsZWFkaW5nX29uZXMgPSBpcF9pbnQgPj4gdHJhaWxpbmdfemVyb2VzCiAgICAgICAgIGFsbF9vbmVzID0gKDEgPDwgcHJlZml4bGVuKSAtIDEKICAgICAgICAgaWYgbGVhZGluZ19vbmVzICE9IGFsbF9vbmVzOgotICAgICAgICAgICAgYnl0ZXNsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuIC8vIDgKKyAgICAgICAgICAgIGJ5dGVzbGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC8vIDgKICAgICAgICAgICAgIGRldGFpbHMgPSBpcF9pbnQudG9fYnl0ZXMoYnl0ZXNsZW4sICdiaWcnKQogICAgICAgICAgICAgbXNnID0gJ05ldG1hc2sgcGF0dGVybiAlciBtaXhlcyB6ZXJvZXMgJiBvbmVzJwogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBkZXRhaWxzKQogICAgICAgICByZXR1cm4gcHJlZml4bGVuCiAKLSAgICBkZWYgX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soc2VsZiwgbmV0bWFza19zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVwb3J0X2ludmFsaWRfbmV0bWFzayhjbHMsIG5ldG1hc2tfc3RyKToKICAgICAgICAgbXNnID0gJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snICUgbmV0bWFza19zdHIKICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IobXNnKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhzZWxmLCBwcmVmaXhsZW5fc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoY2xzLCBwcmVmaXhsZW5fc3RyKToKICAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSBhIG51bWVyaWMgc3RyaW5nCiAKICAgICAgICAgQXJnczoKQEAgLTQ3OCwxNiArNDg5LDE3IEBACiAgICAgICAgICMgaW50IGFsbG93cyBhIGxlYWRpbmcgKy8tIGFzIHdlbGwgYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSwKICAgICAgICAgIyBzbyB3ZSBlbnN1cmUgdGhhdCBpc24ndCB0aGUgY2FzZQogICAgICAgICBpZiBub3QgX0Jhc2VWNC5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChwcmVmaXhsZW5fc3RyKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwcmVmaXhsZW4gPSBpbnQocHJlZml4bGVuX3N0cikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCi0gICAgICAgIGlmIG5vdCAoMCA8PSBwcmVmaXhsZW4gPD0gc2VsZi5fbWF4X3ByZWZpeGxlbik6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgaWYgbm90ICgwIDw9IHByZWZpeGxlbiA8PSBjbHMuX21heF9wcmVmaXhsZW4pOgorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCiAgICAgICAgIHJldHVybiBwcmVmaXhsZW4KIAotICAgIGRlZiBfcHJlZml4X2Zyb21faXBfc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoY2xzLCBpcF9zdHIpOgogICAgICAgICAiIiJUdXJuIGEgbmV0bWFzay9ob3N0bWFzayBzdHJpbmcgaW50byBhIHByZWZpeCBsZW5ndGgKIAogICAgICAgICBBcmdzOgpAQCAtNTAxLDI0ICs1MTMsMjcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgUGFyc2UgdGhlIG5ldG1hc2svaG9zdG1hc2sgbGlrZSBhbiBJUCBhZGRyZXNzLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpcF9pbnQgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQorICAgICAgICAgICAgaXBfaW50ID0gY2xzLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQogICAgICAgICBleGNlcHQgQWRkcmVzc1ZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCiAKICAgICAgICAgIyBUcnkgbWF0Y2hpbmcgYSBuZXRtYXNrICh0aGlzIHdvdWxkIGJlIC8xKjAqLyBhcyBhIGJpdHdpc2UgcmVnZXhwKS4KICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIHR3byBhbWJpZ3VvdXMgY2FzZXMgKGFsbC1vbmVzIGFuZCBhbGwtemVyb2VzKSBhcmUKICAgICAgICAgIyB0cmVhdGVkIGFzIG5ldG1hc2tzLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKKyAgICAgICAgICAgIHJldHVybiBjbHMuX3ByZWZpeF9mcm9tX2lwX2ludChpcF9pbnQpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICMgSW52ZXJ0IHRoZSBiaXRzLCBhbmQgdHJ5IG1hdGNoaW5nIGEgLzArMSsvIGhvc3RtYXNrIGluc3RlYWQuCi0gICAgICAgIGlwX2ludCBePSBzZWxmLl9BTExfT05FUworICAgICAgICBpcF9pbnQgXj0gY2xzLl9BTExfT05FUwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKKyAgICAgICAgICAgIHJldHVybiBjbHMuX3ByZWZpeF9mcm9tX2lwX2ludChpcF9pbnQpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soaXBfc3RyKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHN0cihzZWxmKSwpCiAKIAogQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZwpAQCAtNTMwLDEwICs1NDUsNyBAQAogICAgIHVzZWQgYnkgc2luZ2xlIElQIGFkZHJlc3Nlcy4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKQotICAgICAgICAgICAgYW5kICcvJyBpbiBzdHIoYWRkcmVzcykpOgotICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiAlIGFkZHJlc3MpCisgICAgX19zbG90c19fID0gKCkKIAogICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faXAKQEAgLTU3OSw2ICs1OTEsOSBAQAogICAgIGRlZiBfZ2V0X2FkZHJlc3Nfa2V5KHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYpCiAKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5faXAsKQorCiAKIEBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKIGNsYXNzIF9CYXNlTmV0d29yayhfSVBBZGRyZXNzQmFzZSk6CkBAIC03NjUsNyArNzgwLDcgQEAKICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIG5vdCBjb250YWluZWQgaW4gJXMnICUgKG90aGVyLCBzZWxmKSkKICAgICAgICAgaWYgb3RoZXIgPT0gc2VsZjoKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgTWFrZSBzdXJlIHdlJ3JlIGNvbXBhcmluZyB0aGUgbmV0d29yayBvZiBvdGhlci4KICAgICAgICAgb3RoZXIgPSBvdGhlci5fX2NsYXNzX18oJyVzLyVzJyAlIChvdGhlci5uZXR3b3JrX2FkZHJlc3MsCkBAIC05MDAsMjAgKzkxNSwxMSBAQAogICAgICAgICAgICAgICAgICdwcmVmaXggbGVuZ3RoIGRpZmYgJWQgaXMgaW52YWxpZCBmb3IgbmV0YmxvY2sgJXMnICUgKAogICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuLCBzZWxmKSkKIAotICAgICAgICBmaXJzdCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmV0d29ya19hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmKSkKLQotICAgICAgICB5aWVsZCBmaXJzdAotICAgICAgICBjdXJyZW50ID0gZmlyc3QKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGJyb2FkY2FzdCA9IGN1cnJlbnQuYnJvYWRjYXN0X2FkZHJlc3MKLSAgICAgICAgICAgIGlmIGJyb2FkY2FzdCA9PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbmV3X2FkZHIgPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChicm9hZGNhc3QpICsgMSkKLSAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUgKG5ld19hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbikpCi0KKyAgICAgICAgc3RhcnQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGVuZCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBzdGVwID0gKGludChzZWxmLmhvc3RtYXNrKSArIDEpID4+IHByZWZpeGxlbl9kaWZmCisgICAgICAgIGZvciBuZXdfYWRkciBpbiByYW5nZShzdGFydCwgZW5kLCBzdGVwKToKKyAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygobmV3X2FkZHIsIG5ld19wcmVmaXhsZW4pKQogICAgICAgICAgICAgeWllbGQgY3VycmVudAogCiAgICAgZGVmIHN1cGVybmV0KHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CkBAIC05NDcsMTUgKzk1MywxNSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQogICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBzZWxmLl9wcmVmaXhsZW4gLSBuZXdfcHJlZml4CiAKLSAgICAgICAgaWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgIG5ld19wcmVmaXhsZW4gPSBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmCisgICAgICAgIGlmIG5ld19wcmVmaXhsZW4gPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAnY3VycmVudCBwcmVmaXhsZW4gaXMgJWQsIGNhbm5vdCBoYXZlIGEgcHJlZml4bGVuX2RpZmYgb2YgJWQnICUKICAgICAgICAgICAgICAgICAoc2VsZi5wcmVmaXhsZW4sIHByZWZpeGxlbl9kaWZmKSkKLSAgICAgICAgIyBUT0RPIChwbW9vZHkpOiBvcHRpbWl6ZSB0aGlzLgotICAgICAgICB0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKQotICAgICAgICByZXR1cm4gdC5fX2NsYXNzX18oJyVzLyVkJyAlICh0Lm5ldHdvcmtfYWRkcmVzcywgdC5wcmVmaXhsZW4pKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oKAorICAgICAgICAgICAgaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIChpbnQoc2VsZi5uZXRtYXNrKSA8PCBwcmVmaXhsZW5fZGlmZiksCisgICAgICAgICAgICBuZXdfcHJlZml4bGVuCisgICAgICAgICAgICApKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKQEAgLTEwNDksMjEgKzEwNTUsNDkgQEAKIAogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKyAgICBfdmVyc2lvbiA9IDQKICAgICAjIEVxdWl2YWxlbnQgdG8gMjU1LjI1NS4yNTUuMjU1IG9yIDMyIGJpdHMgb2YgMSdzLgogICAgIF9BTExfT05FUyA9ICgyKipJUFY0TEVOR1RIKSAtIDEKICAgICBfREVDSU1BTF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODknKQogCiAgICAgIyB0aGUgdmFsaWQgb2N0ZXRzIGZvciBob3N0IGFuZCBuZXRtYXNrcy4gb25seSB1c2VmdWwgZm9yIElQdjQuCi0gICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KCgyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMCkpCisgICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KHsyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMH0pCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6Ci0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSA0Ci0gICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisgICAgX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisgICAgIyBUaGVyZSBhcmUgb25seSBhIGhhbmRmdWwgb2YgdmFsaWQgdjQgbmV0bWFza3MsIHNvIHdlIGNhY2hlIHRoZW0gYWxsCisgICAgIyB3aGVuIGNvbnN0cnVjdGVkIChzZWUgX21ha2VfbmV0bWFzaygpKS4KKyAgICBfbmV0bWFza19jYWNoZSA9IHt9CiAKICAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN0cihzZWxmKQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21ha2VfbmV0bWFzayhjbHMsIGFyZyk6CisgICAgICAgICIiIk1ha2UgYSAobmV0bWFzaywgcHJlZml4X2xlbikgdHVwbGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQuCisKKyAgICAgICAgQXJndW1lbnQgY2FuIGJlOgorICAgICAgICAtIGFuIGludGVnZXIgKHRoZSBwcmVmaXggbGVuZ3RoKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiAiMjQiKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG5ldG1hc2sgKGUuZy4gIjI1NS4yNTUuMjU1LjAiKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJnIG5vdCBpbiBjbHMuX25ldG1hc2tfY2FjaGU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgaW50KToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBhcmcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtCisgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGNscy5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhcmcpCisgICAgICAgICAgICAgICAgZXhjZXB0IE5ldG1hc2tWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgb3IgaG9zdG1hc2sgaW4gZG90dGVkLXF1YWQgZm9ybS4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvci4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoYXJnKQorICAgICAgICAgICAgbmV0bWFzayA9IElQdjRBZGRyZXNzKGNscy5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisgICAgICAgICAgICBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXSA9IG5ldG1hc2ssIHByZWZpeGxlbgorICAgICAgICByZXR1cm4gY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKGNscywgaXBfc3RyKToKICAgICAgICAgIiIiVHVybiB0aGUgZ2l2ZW4gSVAgc3RyaW5nIGludG8gYW4gaW50ZWdlciBmb3IgY29tcGFyaXNvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTA4NCwxMSArMTExOCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiAlIGlwX3N0cikKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMobWFwKHNlbGYuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoY2xzLl9wYXJzZV9vY3RldCwgb2N0ZXRzKSwgJ2JpZycpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcGFyc2Vfb2N0ZXQoc2VsZiwgb2N0ZXRfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhcnNlX29jdGV0KGNscywgb2N0ZXRfc3RyKToKICAgICAgICAgIiIiQ29udmVydCBhIGRlY2ltYWwgb2N0ZXQgaW50byBhbiBpbnRlZ2VyLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xMTA0LDcgKzExMzksNyBAQAogICAgICAgICBpZiBub3Qgb2N0ZXRfc3RyOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgb2N0ZXQgbm90IHBlcm1pdHRlZCIpCiAgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KLSAgICAgICAgaWYgbm90IHNlbGYuX0RFQ0lNQUxfRElHSVRTLmlzc3VwZXJzZXQob2N0ZXRfc3RyKToKKyAgICAgICAgaWYgbm90IGNscy5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgogICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCiAgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgpAQCAtMTEyNCw3ICsxMTU5LDggQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCIgJSBvY3RldF9pbnQpCiAgICAgICAgIHJldHVybiBvY3RldF9pbnQKIAotICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoY2xzLCBpcF9pbnQpOgogICAgICAgICAiIiJUdXJucyBhIDMyLWJpdCBpbnRlZ2VyIGludG8gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCiAKICAgICAgICAgQXJnczoKQEAgLTExODgsNiArMTIyNCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgX3JldmVyc2VfcG9pbnRlcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZXZlcnNlIEROUyBwb2ludGVyIG5hbWUgZm9yIHRoZSBJUHY0IGFkZHJlc3MuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIFJGQzEwMzUgMy41LgorCisgICAgICAgICIiIgorICAgICAgICByZXZlcnNlX29jdGV0cyA9IHN0cihzZWxmKS5zcGxpdCgnLicpWzo6LTFdCisgICAgICAgIHJldHVybiAnLicuam9pbihyZXZlcnNlX29jdGV0cykgKyAnLmluLWFkZHIuYXJwYScKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgpAQCAtMTIwMSw2ICsxMjQ2LDggQEAKIAogICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NCBBZGRyZXNzZXMuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoJ19pcCcsICdfX3dlYWtyZWZfXycpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAKICAgICAgICAgIiIiCkBAIC0xMjE3LDkgKzEyNjQsNiBAQAogICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCi0gICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLQogICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCkBAIC0xMjM1LDYgKzEyNzksOCBAQAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgogICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgogICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBpZiAnLycgaW4gYWRkcl9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKICAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCiAKICAgICBAcHJvcGVydHkKQEAgLTEyNTEsOCArMTI5Nyw3IEBACiAgICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NCBOZXR3b3JrIHJhbmdlLgogCiAgICAgICAgICIiIgotICAgICAgICByZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gcmVzZXJ2ZWRfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX3Jlc2VydmVkX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKQEAgLTEyNjQsMjEgKzEzMDksNyBAQAogICAgICAgICAgICAgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZiBpbiBJUHY0TmV0d29yaygnMC4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxMC4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yOScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMC4xNzAvMzEnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5OC4xOC4wLjAvMTUnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5OC41MS4xMDAuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMjAzLjAuMTEzLjAvMjQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcyNTUuMjU1LjI1NS4yNTUvMzInKSkKLQorICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4gbmV0IGZvciBuZXQgaW4gc2VsZi5fY29uc3RhbnRzLl9wcml2YXRlX25ldHdvcmtzKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKQEAgLTEyODksOCArMTMyMCw3IEBACiAgICAgICAgICAgICBTZWUgUkZDIDMxNzEgZm9yIGRldGFpbHMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9tdWx0aWNhc3RfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgpAQCAtMTMwMSw4ICsxMzMxLDcgQEAKICAgICAgICAgICAgIFJGQyA1NzM1IDMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHVuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCi0gICAgICAgIHJldHVybiBzZWxmID09IHVuc3BlY2lmaWVkX2FkZHJlc3MKKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gc2VsZi5fY29uc3RhbnRzLl91bnNwZWNpZmllZF9hZGRyZXNzCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CkBAIC0xMzEyLDggKzEzNDEsNyBAQAogICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgcGVyIFJGQyAzMzMwLgogCiAgICAgICAgICIiIgotICAgICAgICBsb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbG9vcGJhY2tfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xvb3BiYWNrX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgpAQCAtMTMyMyw4ICsxMzUxLDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBsaW5rLWxvY2FsIHBlciBSRkMgMzkyNy4KIAogICAgICAgICAiIiIKLSAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xpbmtsb2NhbF9uZXR3b3JrCiAKIAogY2xhc3MgSVB2NEludGVyZmFjZShJUHY0QWRkcmVzcyk6CkBAIC0xMzM2LDYgKzEzNjMsMTggQEAKICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzc1swXSkKKyAgICAgICAgICAgIGlmIGxlbihhZGRyZXNzKSA+IDE6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJlc3NbMV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQogICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQogCkBAIC0xMzc1LDYgKzE0MTQsOCBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCiAKKyAgICBfX3JlZHVjZV9fID0gX0lQQWRkcmVzc0Jhc2UuX19yZWR1Y2VfXworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlwKHNlbGYpOgogICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXApCkBAIC0xNDQ3LDI0ICsxNDg4LDMwIEBACiAgICAgICAgICAgICAgIHN1cHBsaWVkLgogCiAgICAgICAgICIiIgotCi0gICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKICAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCiAKLSAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3Mgb3IgaW50ZWdlcgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChpbnQsIGJ5dGVzKSk6CiAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKLSAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soc2VsZi5fbWF4X3ByZWZpeGxlbikKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgotICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCi0gICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBhcmcgPSBhZGRyZXNzWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2Ugd2VyZW4ndCBnaXZlbiBhbiBhZGRyZXNzWzFdCisgICAgICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzWzBdKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soYXJnKQorICAgICAgICAgICAgcGFja2VkID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICAgICAgaWYgcGFja2VkICYgaW50KHNlbGYubmV0bWFzaykgIT0gcGFja2VkOgorICAgICAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHBhY2tlZCAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgpAQCAtMTQ3MywxNiArMTUyMCwxMCBAQAogICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKIAogICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhZGRyWzFdKQotICAgICAgICAgICAgZXhjZXB0IE5ldG1hc2tWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBvciBob3N0bWFzayBpbiBkb3R0ZWQtcXVhZCBmb3JtLgotICAgICAgICAgICAgICAgICMgVGhpcyBtYXkgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IuCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21faXBfc3RyaW5nKGFkZHJbMV0pCisgICAgICAgICAgICBhcmcgPSBhZGRyWzFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCiAKICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgaWYgKElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KQEAgLTE1MDksNiArMTU1MCwzNyBAQAogICAgICAgICAgICAgICAgIG5vdCBzZWxmLmlzX3ByaXZhdGUpCiAKIAorY2xhc3MgX0lQdjRDb25zdGFudHM6CisgICAgX2xpbmtsb2NhbF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JykKKworICAgIF9sb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKKworICAgIF9tdWx0aWNhc3RfbmV0d29yayA9IElQdjROZXR3b3JrKCcyMjQuMC4wLjAvNCcpCisKKyAgICBfcHJpdmF0ZV9uZXR3b3JrcyA9IFsKKyAgICAgICAgSVB2NE5ldHdvcmsoJzAuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTAuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxNzIuMTYuMC4wLzEyJyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjknKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMTcwLzMxJyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzE2JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTguMTguMC4wLzE1JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTguNTEuMTAwLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzIwMy4wLjExMy4wLzI0JyksCisgICAgICAgIElQdjROZXR3b3JrKCcyNDAuMC4wLjAvNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMjU1LjI1NS4yNTUuMjU1LzMyJyksCisgICAgICAgIF0KKworICAgIF9yZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKKworICAgIF91bnNwZWNpZmllZF9hZGRyZXNzID0gSVB2NEFkZHJlc3MoJzAuMC4wLjAnKQorCisKK0lQdjRBZGRyZXNzLl9jb25zdGFudHMgPSBfSVB2NENvbnN0YW50cworCiAKIGNsYXNzIF9CYXNlVjY6CiAKQEAgLTE1MTksMTUgKzE1OTEsMzcgQEAKIAogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKyAgICBfdmVyc2lvbiA9IDYKICAgICBfQUxMX09ORVMgPSAoMioqSVBWNkxFTkdUSCkgLSAxCiAgICAgX0hFWFRFVF9DT1VOVCA9IDgKICAgICBfSEVYX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicpCisgICAgX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6Ci0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSA2Ci0gICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICisgICAgIyBUaGVyZSBhcmUgb25seSBhIGJ1bmNoIG9mIHZhbGlkIHY2IG5ldG1hc2tzLCBzbyB3ZSBjYWNoZSB0aGVtIGFsbAorICAgICMgd2hlbiBjb25zdHJ1Y3RlZCAoc2VlIF9tYWtlX25ldG1hc2soKSkuCisgICAgX25ldG1hc2tfY2FjaGUgPSB7fQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21ha2VfbmV0bWFzayhjbHMsIGFyZyk6CisgICAgICAgICIiIk1ha2UgYSAobmV0bWFzaywgcHJlZml4X2xlbikgdHVwbGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQuCisKKyAgICAgICAgQXJndW1lbnQgY2FuIGJlOgorICAgICAgICAtIGFuIGludGVnZXIgKHRoZSBwcmVmaXggbGVuZ3RoKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiAiMjQiKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG5ldG1hc2sgKGUuZy4gIjI1NS4yNTUuMjU1LjAiKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJnIG5vdCBpbiBjbHMuX25ldG1hc2tfY2FjaGU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgaW50KToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBhcmcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFyZykKKyAgICAgICAgICAgIG5ldG1hc2sgPSBJUHY2QWRkcmVzcyhjbHMuX2lwX2ludF9mcm9tX3ByZWZpeChwcmVmaXhsZW4pKQorICAgICAgICAgICAgY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10gPSBuZXRtYXNrLCBwcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIGNscy5fbmV0bWFza19jYWNoZVthcmddCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhjbHMsIGlwX3N0cik6CiAgICAgICAgICIiIlR1cm4gYW4gSVB2NiBpcF9zdHIgaW50byBhbiBpbnRlZ2VyLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xNTYzLDcgKzE2NTcsNyBAQAogICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiA4IGNvbG9ucyAoOSBwYXJ0cykuCiAgICAgICAgICMgVGhlIGV4dHJhIGNvbG9uIGNvbWVzIGZyb20gdXNpbmcgdGhlICI6OiIgbm90YXRpb24gZm9yIGEgc2luZ2xlCiAgICAgICAgICMgbGVhZGluZyBvciB0cmFpbGluZyB6ZXJvIHBhcnQuCi0gICAgICAgIF9tYXhfcGFydHMgPSBzZWxmLl9IRVhURVRfQ09VTlQgKyAxCisgICAgICAgIF9tYXhfcGFydHMgPSBjbHMuX0hFWFRFVF9DT1VOVCArIDEKICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IF9tYXhfcGFydHM6CiAgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAlZCBjb2xvbnMgcGVybWl0dGVkIGluICVyIiAlIChfbWF4X3BhcnRzLTEsIGlwX3N0cikKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKQEAgLTE1OTUsMTcgKzE2ODksMTcgQEAKICAgICAgICAgICAgICAgICBpZiBwYXJ0c19sbzoKICAgICAgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCi0gICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gc2VsZi5fSEVYVEVUX0NPVU5UIC0gKHBhcnRzX2hpICsgcGFydHNfbG8pCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gY2xzLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKICAgICAgICAgICAgIGlmIHBhcnRzX3NraXBwZWQgPCAxOgogICAgICAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0ICVkIG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKLSAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGNscy5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIE90aGVyd2lzZSwgYWxsb2NhdGUgdGhlIGVudGlyZSBhZGRyZXNzIHRvIHBhcnRzX2hpLiAgVGhlCiAgICAgICAgICAgICAjIGVuZHBvaW50cyBjb3VsZCBzdGlsbCBiZSBlbXB0eSwgYnV0IF9wYXJzZV9oZXh0ZXQoKSB3aWxsIGNoZWNrCiAgICAgICAgICAgICAjIGZvciB0aGF0LgotICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBzZWxmLl9IRVhURVRfQ09VTlQ6CisgICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IGNscy5fSEVYVEVUX0NPVU5UOgogICAgICAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5ICVkIHBhcnRzIGV4cGVjdGVkIHdpdGhvdXQgJzo6JyBpbiAlciIKLSAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChjbHMuX0hFWFRFVF9DT1VOVCwgaXBfc3RyKSkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKICAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgogICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CkBAIC0xNjIxLDE2ICsxNzE1LDE3IEBACiAgICAgICAgICAgICBpcF9pbnQgPSAwCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwYXJ0c19oaSk6CiAgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgotICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICAgaXBfaW50IDw8PSAxNiAqIHBhcnRzX3NraXBwZWQKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1wYXJ0c19sbywgMCk6CiAgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgotICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGlwX2ludAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CiAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCiAKLSAgICBkZWYgX3BhcnNlX2hleHRldChzZWxmLCBoZXh0ZXRfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhcnNlX2hleHRldChjbHMsIGhleHRldF9zdHIpOgogICAgICAgICAiIiJDb252ZXJ0IGFuIElQdjYgaGV4dGV0IHN0cmluZyBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTE2NDUsNyArMTc0MCw3IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KLSAgICAgICAgaWYgbm90IHNlbGYuX0hFWF9ESUdJVFMuaXNzdXBlcnNldChoZXh0ZXRfc3RyKToKKyAgICAgICAgaWYgbm90IGNscy5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBoZXggZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIgJSBoZXh0ZXRfc3RyKQogICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKICAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKQEAgLTE2NTUsNyArMTc1MCw4IEBACiAgICAgICAgICMgTGVuZ3RoIGNoZWNrIG1lYW5zIHdlIGNhbiBza2lwIGNoZWNraW5nIHRoZSBpbnRlZ2VyIHZhbHVlCiAgICAgICAgIHJldHVybiBpbnQoaGV4dGV0X3N0ciwgMTYpCiAKLSAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoc2VsZiwgaGV4dGV0cyk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jb21wcmVzc19oZXh0ZXRzKGNscywgaGV4dGV0cyk6CiAgICAgICAgICIiIkNvbXByZXNzZXMgYSBsaXN0IG9mIGhleHRldHMuCiAKICAgICAgICAgQ29tcHJlc3NlcyBhIGxpc3Qgb2Ygc3RyaW5ncywgcmVwbGFjaW5nIHRoZSBsb25nZXN0IGNvbnRpbnVvdXMKQEAgLTE3MDIsNyArMTc5OCw4IEBACiAKICAgICAgICAgcmV0dXJuIGhleHRldHMKIAotICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludD1Ob25lKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChjbHMsIGlwX2ludD1Ob25lKToKICAgICAgICAgIiIiVHVybnMgYSAxMjgtYml0IGludGVnZXIgaW50byBoZXhhZGVjaW1hbCBub3RhdGlvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTcxNiwxNSArMTgxMywxNSBAQAogCiAgICAgICAgICIiIgogICAgICAgICBpZiBpcF9pbnQgaXMgTm9uZToKLSAgICAgICAgICAgIGlwX2ludCA9IGludChzZWxmLl9pcCkKKyAgICAgICAgICAgIGlwX2ludCA9IGludChjbHMuX2lwKQogCi0gICAgICAgIGlmIGlwX2ludCA+IHNlbGYuX0FMTF9PTkVTOgorICAgICAgICBpZiBpcF9pbnQgPiBjbHMuX0FMTF9PTkVTOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSVB2NiBhZGRyZXNzIGlzIHRvbyBsYXJnZScpCiAKICAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKICAgICAgICAgaGV4dGV0cyA9IFsnJXgnICUgaW50KGhleF9zdHJbeDp4KzRdLCAxNikgZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQogCi0gICAgICAgIGhleHRldHMgPSBzZWxmLl9jb21wcmVzc19oZXh0ZXRzKGhleHRldHMpCisgICAgICAgIGhleHRldHMgPSBjbHMuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKICAgICAgICAgcmV0dXJuICc6Jy5qb2luKGhleHRldHMpCiAKICAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKQEAgLTE3NTEsNiArMTg0OCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoJzonLmpvaW4ocGFydHMpLCBzZWxmLl9wcmVmaXhsZW4pCiAgICAgICAgIHJldHVybiAnOicuam9pbihwYXJ0cykKIAorICAgIGRlZiBfcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIG1ldGhvZCBkZXNjcmliZWQgaW4gUkZDMzU5NiAyLjUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldmVyc2VfY2hhcnMgPSBzZWxmLmV4cGxvZGVkWzo6LTFdLnJlcGxhY2UoJzonLCAnJykKKyAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2VfY2hhcnMpICsgJy5pcDYuYXJwYScKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgpAQCAtMTc2NCw2ICsxODcwLDggQEAKIAogICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NiBBZGRyZXNzZXMuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoJ19pcCcsICdfX3dlYWtyZWZfXycpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgYWRkcmVzcyBvYmplY3QuCiAKQEAgLTE3ODEsOSArMTg4OSw2IEBACiAgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCi0gICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLQogICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCkBAIC0xNzk5LDYgKzE5MDQsOCBAQAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgogICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgogICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBpZiAnLycgaW4gYWRkcl9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKICAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCiAKICAgICBAcHJvcGVydHkKQEAgLTE4MTUsOCArMTkyMiw3IEBACiAgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgogCiAgICAgICAgICIiIgotICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbXVsdGljYXN0X25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKQEAgLTE4MjcsMTYgKzE5MzMsNyBAQAogICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgcmVzZXJ2ZWRfbmV0d29ya3MgPSBbSVB2Nk5ldHdvcmsoJzo6LzgnKSwgSVB2Nk5ldHdvcmsoJzEwMDo6LzgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDo6LzcnKSwgSVB2Nk5ldHdvcmsoJzQwMDo6LzYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJzEwMDA6Oi80JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc0MDAwOjovMycpLCBJUHY2TmV0d29yaygnNjAwMDo6LzMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdBMDAwOjovMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnQzAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0UwMDA6Oi80JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGMDAwOjovNScpLCBJUHY2TmV0d29yaygnRjgwMDo6LzYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0ZFMDA6Oi85JyldCi0KLSAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gcmVzZXJ2ZWRfbmV0d29ya3MpCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiB4IGZvciB4IGluIHNlbGYuX2NvbnN0YW50cy5fcmVzZXJ2ZWRfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKQEAgLTE4NDYsOCArMTk0Myw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgogCiAgICAgICAgICIiIgotICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xpbmtsb2NhbF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKQEAgLTE4NjEsOCArMTk1Nyw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgogCiAgICAgICAgICIiIgotICAgICAgICBzaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBzaXRlbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX3NpdGVsb2NhbF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCkBAIC0xODc0LDE2ICsxOTY5LDcgQEAKICAgICAgICAgICAgIGlhbmEtaXB2Ni1zcGVjaWFsLXJlZ2lzdHJ5LgogCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzo6LzEyOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnOjpmZmZmOjA6MC85NicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMTAwOjovNjQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6Oi8yMycpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMToyOjovNDgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMzInKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6MTA6Oi8yOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnZmMwMDo6LzcnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpKQorICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4gbmV0IGZvciBuZXQgaW4gc2VsZi5fY29uc3RhbnRzLl9wcml2YXRlX25ldHdvcmtzKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2dsb2JhbChzZWxmKToKQEAgLTE5NjgsNiArMjA1NCwxNiBAQAogICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoc2VsZi5faXApCiAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzWzBdKQorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkcmVzc1sxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQogICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQpAQCAtMjAwNiw2ICsyMTAyLDggQEAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQogCisgICAgX19yZWR1Y2VfXyA9IF9JUEFkZHJlc3NCYXNlLl9fcmVkdWNlX18KKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpcChzZWxmKToKICAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKHNlbGYuX2lwKQpAQCAtMjA4MiwyMSArMjE4MCwyOCBAQAogICAgICAgICAgICAgICBzdXBwbGllZC4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKIAotICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyIG9yIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soc2VsZi5fbWF4X3ByZWZpeGxlbikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcwotICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKLSAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIHR1cGxlKToKKyAgICAgICAgICAgIGlmIGxlbihhZGRyZXNzKSA+IDE6CisgICAgICAgICAgICAgICAgYXJnID0gYWRkcmVzc1sxXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3NbMF0pCisgICAgICAgICAgICBwYWNrZWQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgICAgICBpZiBwYWNrZWQgJiBpbnQoc2VsZi5uZXRtYXNrKSAhPSBwYWNrZWQ6CisgICAgICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MocGFja2VkICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCkBAIC0yMTA2LDEyICsyMjExLDExIEBACiAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQogCiAgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgotICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcgotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhZGRyWzFdKQorICAgICAgICAgICAgYXJnID0gYWRkclsxXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCiAKLSAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCiAgICAgICAgIGlmIHN0cmljdDoKICAgICAgICAgICAgIGlmIChJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CiAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgpAQCAtMjE0OCwzICsyMjUyLDM5IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3NpdGVfbG9jYWwgYW5kCiAgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19zaXRlX2xvY2FsKQorCisKK2NsYXNzIF9JUHY2Q29uc3RhbnRzOgorCisgICAgX2xpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCisKKyAgICBfbXVsdGljYXN0X25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmYwMDo6LzgnKQorCisgICAgX3ByaXZhdGVfbmV0d29ya3MgPSBbCisgICAgICAgIElQdjZOZXR3b3JrKCc6OjEvMTI4JyksCisgICAgICAgIElQdjZOZXR3b3JrKCc6Oi8xMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6ZmZmZjowOjAvOTYnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzEwMDo6LzY0JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOjovMjMnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6Mjo6LzQ4JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzMyJyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOjEwOjovMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ2ZjMDA6Oi83JyksCisgICAgICAgIElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKSwKKyAgICAgICAgXQorCisgICAgX3Jlc2VydmVkX25ldHdvcmtzID0gWworICAgICAgICBJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAorICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAorICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCisgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAorICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKSwKKyAgICBdCisKKyAgICBfc2l0ZWxvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmVjMDo6LzEwJykKKworCitJUHY2QWRkcmVzcy5fY29uc3RhbnRzID0gX0lQdjZDb25zdGFudHMKZGlmZiAtLWdpdCBhL0xpYi9qc29uL19faW5pdF9fLnB5IGIvTGliL2pzb24vX19pbml0X18ucHkKaW5kZXggOTRmN2Q4Yy4uNmNlOTg4MCAxMDA2NDQKLS0tIGEvTGliL2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL2pzb24vX19pbml0X18ucHkKQEAgLTk4LDEyICs5OCwxMiBAQAogX192ZXJzaW9uX18gPSAnMi4wLjknCiBfX2FsbF9fID0gWwogICAgICdkdW1wJywgJ2R1bXBzJywgJ2xvYWQnLCAnbG9hZHMnLAotICAgICdKU09ORGVjb2RlcicsICdKU09ORW5jb2RlcicsCisgICAgJ0pTT05EZWNvZGVyJywgJ0pTT05EZWNvZGVFcnJvcicsICdKU09ORW5jb2RlcicsCiBdCiAKIF9fYXV0aG9yX18gPSAnQm9iIElwcG9saXRvIDxib2JAcmVkaXZpLmNvbT4nCiAKLWZyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyCitmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCiBmcm9tIC5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgogCiBfZGVmYXVsdF9lbmNvZGVyID0gSlNPTkVuY29kZXIoCkBAIC0zMTEsNyArMzExLDggQEAKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIG5vdCB7IXJ9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5fX2NsYXNzX18uX19uYW1lX18pKQogICAgIGlmIHMuc3RhcnRzd2l0aCh1J1x1ZmVmZicpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiKQorICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQogICAgIGlmIChjbHMgaXMgTm9uZSBhbmQgb2JqZWN0X2hvb2sgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfY29uc3RhbnQgaXMgTm9uZSBhbmQgb2JqZWN0X3BhaXJzX2hvb2sgaXMgTm9uZSBhbmQgbm90IGt3KToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IDU5ZTVmNDEuLjBmMDNmMjAgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtOCw3ICs4LDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBjX3NjYW5zdHJpbmcgPSBOb25lCiAKLV9fYWxsX18gPSBbJ0pTT05EZWNvZGVyJ10KK19fYWxsX18gPSBbJ0pTT05EZWNvZGVyJywgJ0pTT05EZWNvZGVFcnJvciddCiAKIEZMQUdTID0gcmUuVkVSQk9TRSB8IHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTAogCkBAIC0xNywzMiArMTcsMzAgQEAKIE5lZ0luZiA9IGZsb2F0KCctaW5mJykKIAogCi1kZWYgbGluZWNvbChkb2MsIHBvcyk6Ci0gICAgaWYgaXNpbnN0YW5jZShkb2MsIGJ5dGVzKToKLSAgICAgICAgbmV3bGluZSA9IGInXG4nCi0gICAgZWxzZToKLSAgICAgICAgbmV3bGluZSA9ICdcbicKLSAgICBsaW5lbm8gPSBkb2MuY291bnQobmV3bGluZSwgMCwgcG9zKSArIDEKLSAgICBpZiBsaW5lbm8gPT0gMToKLSAgICAgICAgY29sbm8gPSBwb3MgKyAxCi0gICAgZWxzZToKLSAgICAgICAgY29sbm8gPSBwb3MgLSBkb2MucmluZGV4KG5ld2xpbmUsIDAsIHBvcykKLSAgICByZXR1cm4gbGluZW5vLCBjb2xubworY2xhc3MgSlNPTkRlY29kZUVycm9yKFZhbHVlRXJyb3IpOgorICAgICIiIlN1YmNsYXNzIG9mIFZhbHVlRXJyb3Igd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllczoKIAorICAgIG1zZzogVGhlIHVuZm9ybWF0dGVkIGVycm9yIG1lc3NhZ2UKKyAgICBkb2M6IFRoZSBKU09OIGRvY3VtZW50IGJlaW5nIHBhcnNlZAorICAgIHBvczogVGhlIHN0YXJ0IGluZGV4IG9mIGRvYyB3aGVyZSBwYXJzaW5nIGZhaWxlZAorICAgIGxpbmVubzogVGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byBwb3MKKyAgICBjb2xubzogVGhlIGNvbHVtbiBjb3JyZXNwb25kaW5nIHRvIHBvcwogCi1kZWYgZXJybXNnKG1zZywgZG9jLCBwb3MsIGVuZD1Ob25lKToKLSAgICAjIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIF9qc29uCi0gICAgbGluZW5vLCBjb2xubyA9IGxpbmVjb2woZG9jLCBwb3MpCi0gICAgaWYgZW5kIGlzIE5vbmU6Ci0gICAgICAgIGZtdCA9ICd7MH06IGxpbmUgezF9IGNvbHVtbiB7Mn0gKGNoYXIgezN9KScKLSAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQobXNnLCBsaW5lbm8sIGNvbG5vLCBwb3MpCi0gICAgICAgICNmbXQgPSAnJXM6IGxpbmUgJWQgY29sdW1uICVkIChjaGFyICVkKScKLSAgICAgICAgI3JldHVybiBmbXQgJSAobXNnLCBsaW5lbm8sIGNvbG5vLCBwb3MpCi0gICAgZW5kbGluZW5vLCBlbmRjb2xubyA9IGxpbmVjb2woZG9jLCBlbmQpCi0gICAgZm10ID0gJ3swfTogbGluZSB7MX0gY29sdW1uIHsyfSAtIGxpbmUgezN9IGNvbHVtbiB7NH0gKGNoYXIgezV9IC0gezZ9KScKLSAgICByZXR1cm4gZm10LmZvcm1hdChtc2csIGxpbmVubywgY29sbm8sIGVuZGxpbmVubywgZW5kY29sbm8sIHBvcywgZW5kKQotICAgICNmbXQgPSAnJXM6IGxpbmUgJWQgY29sdW1uICVkIC0gbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQgLSAlZCknCi0gICAgI3JldHVybiBmbXQgJSAobXNnLCBsaW5lbm8sIGNvbG5vLCBlbmRsaW5lbm8sIGVuZGNvbG5vLCBwb3MsIGVuZCkKKyAgICAiIiIKKyAgICAjIE5vdGUgdGhhdCB0aGlzIGV4Y2VwdGlvbiBpcyB1c2VkIGZyb20gX2pzb24KKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBkb2MsIHBvcyk6CisgICAgICAgIGxpbmVubyA9IGRvYy5jb3VudCgnXG4nLCAwLCBwb3MpICsgMQorICAgICAgICBjb2xubyA9IHBvcyAtIGRvYy5yZmluZCgnXG4nLCAwLCBwb3MpCisgICAgICAgIGVycm1zZyA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlIChtc2csIGxpbmVubywgY29sbm8sIHBvcykKKyAgICAgICAgVmFsdWVFcnJvci5fX2luaXRfXyhzZWxmLCBlcnJtc2cpCisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYuZG9jID0gZG9jCisgICAgICAgIHNlbGYucG9zID0gcG9zCisgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCisgICAgICAgIHNlbGYuY29sbm8gPSBjb2xubworCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNlbGYubXNnLCBzZWxmLmRvYywgc2VsZi5wb3MpCiAKIAogX0NPTlNUQU5UUyA9IHsKQEAgLTY2LDcgKzY0LDcgQEAKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWCBlc2NhcGUiCi0gICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBwb3MpKQorICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIHBvcykKIAogZGVmIHB5X3NjYW5zdHJpbmcocywgZW5kLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgX2I9QkFDS1NMQVNILCBfbT1TVFJJTkdDSFVOSy5tYXRjaCk6CkBAIC04NCw4ICs4Miw3IEBACiAgICAgd2hpbGUgMToKICAgICAgICAgY2h1bmsgPSBfbShzLCBlbmQpCiAgICAgICAgIGlmIGNodW5rIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgIGVycm1zZygiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKQogICAgICAgICBlbmQgPSBjaHVuay5lbmQoKQogICAgICAgICBjb250ZW50LCB0ZXJtaW5hdG9yID0gY2h1bmsuZ3JvdXBzKCkKICAgICAgICAgIyBDb250ZW50IGlzIGNvbnRhaW5zIHplcm8gb3IgbW9yZSB1bmVzY2FwZWQgc3RyaW5nIGNoYXJhY3RlcnMKQEAgLTk5LDIyICs5NiwyMSBAQAogICAgICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgICAgICNtc2cgPSAiSW52YWxpZCBjb250cm9sIGNoYXJhY3RlciAlciBhdCIgJSAodGVybWluYXRvciwpCiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgY29udHJvbCBjaGFyYWN0ZXIgezAhcn0gYXQiLmZvcm1hdCh0ZXJtaW5hdG9yKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IobXNnLCBzLCBlbmQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIF9hcHBlbmQodGVybWluYXRvcikKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlc2MgPSBzW2VuZF0KICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgIGVycm1zZygiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKQogICAgICAgICAjIElmIG5vdCBhIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlLCBtdXN0IGJlIGluIHRoZSBsb29rdXAgdGFibGUKICAgICAgICAgaWYgZXNjICE9ICd1JzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjaGFyID0gX2JbZXNjXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcZXNjYXBlOiB7MCFyfSIuZm9ybWF0KGVzYykKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCisgICAgICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKG1zZywgcywgZW5kKQogICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHVuaSA9IF9kZWNvZGVfdVhYWFgocywgZW5kKQpAQCAtMTYzLDggKzE1OSw4IEBACiAgICAgICAgICAgICAgICAgcGFpcnMgPSBvYmplY3RfaG9vayhwYWlycykKICAgICAgICAgICAgIHJldHVybiBwYWlycywgZW5kICsgMQogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICciJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKAotICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigKKyAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCkKICAgICBlbmQgKz0gMQogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIGtleSwgZW5kID0gc2NhbnN0cmluZyhzLCBlbmQsIHN0cmljdCkKQEAgLTE3NCw3ICsxNzAsNyBAQAogICAgICAgICBpZiBzW2VuZDplbmQgKyAxXSAhPSAnOic6CiAgICAgICAgICAgICBlbmQgPSBfdyhzLCBlbmQpLmVuZCgpCiAgICAgICAgICAgICBpZiBzW2VuZDplbmQgKyAxXSAhPSAnOic6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyAnOicgZGVsaW1pdGVyIiwgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyAnOicgZGVsaW1pdGVyIiwgcywgZW5kKQogICAgICAgICBlbmQgKz0gMQogCiAgICAgICAgIHRyeToKQEAgLTE4OCw3ICsxODQsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICBwYWlyc19hcHBlbmQoKGtleSwgdmFsdWUpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXh0Y2hhciA9IHNbZW5kXQpAQCAtMjAyLDEzICsxOTgsMTMgQEAKICAgICAgICAgaWYgbmV4dGNoYXIgPT0gJ30nOgogICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxpZiBuZXh0Y2hhciAhPSAnLCc6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKQogICAgICAgICBlbmQgPSBfdyhzLCBlbmQpLmVuZCgpCiAgICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICAgZW5kICs9IDEKICAgICAgICAgaWYgbmV4dGNoYXIgIT0gJyInOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coCi0gICAgICAgICAgICAgICAgIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBzLCBlbmQgLSAxKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigKKyAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCAtIDEpCiAgICAgaWYgb2JqZWN0X3BhaXJzX2hvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgIHJlc3VsdCA9IG9iamVjdF9wYWlyc19ob29rKHBhaXJzKQogICAgICAgICByZXR1cm4gcmVzdWx0LCBlbmQKQEAgLTIzMiw3ICsyMjgsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICBfYXBwZW5kKHZhbHVlKQogICAgICAgICBuZXh0Y2hhciA9IHNbZW5kOmVuZCArIDFdCiAgICAgICAgIGlmIG5leHRjaGFyIGluIF93czoKQEAgLTI0Miw3ICsyMzgsNyBAQAogICAgICAgICBpZiBuZXh0Y2hhciA9PSAnXSc6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNbZW5kXSBpbiBfd3M6CiAgICAgICAgICAgICAgICAgZW5kICs9IDEKQEAgLTM0Myw3ICszMzksNyBAQAogICAgICAgICBvYmosIGVuZCA9IHNlbGYucmF3X2RlY29kZShzLCBpZHg9X3cocywgMCkuZW5kKCkpCiAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgaWYgZW5kICE9IGxlbihzKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHRyYSBkYXRhIiwgcywgZW5kLCBsZW4ocykpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHRyYSBkYXRhIiwgcywgZW5kKQogICAgICAgICByZXR1cm4gb2JqCiAKICAgICBkZWYgcmF3X2RlY29kZShzZWxmLCBzLCBpZHg9MCk6CkBAIC0zNTgsNSArMzU0LDUgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb2JqLCBlbmQgPSBzZWxmLnNjYW5fb25jZShzLCBpZHgpCiAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGVycjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgICAgICAgcmV0dXJuIG9iaiwgZW5kCmRpZmYgLS1naXQgYS9MaWIvanNvbi9lbmNvZGVyLnB5IGIvTGliL2pzb24vZW5jb2Rlci5weQppbmRleCAwNTEzODM4Li4yNmU5ZWIyIDEwMDY0NAotLS0gYS9MaWIvanNvbi9lbmNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2VuY29kZXIucHkKQEAgLTcsNiArNywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkgPSBOb25lCiB0cnk6CisgICAgZnJvbSBfanNvbiBpbXBvcnQgZW5jb2RlX2Jhc2VzdHJpbmcgYXMgY19lbmNvZGVfYmFzZXN0cmluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGNfZW5jb2RlX2Jhc2VzdHJpbmcgPSBOb25lCit0cnk6CiAgICAgZnJvbSBfanNvbiBpbXBvcnQgbWFrZV9lbmNvZGVyIGFzIGNfbWFrZV9lbmNvZGVyCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgY19tYWtlX2VuY29kZXIgPSBOb25lCkBAIC0zMCw3ICszNCw3IEBACiBJTkZJTklUWSA9IGZsb2F0KCdpbmYnKQogRkxPQVRfUkVQUiA9IHJlcHIKIAotZGVmIGVuY29kZV9iYXNlc3RyaW5nKHMpOgorZGVmIHB5X2VuY29kZV9iYXNlc3RyaW5nKHMpOgogICAgICIiIlJldHVybiBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gc3RyaW5nCiAKICAgICAiIiIKQEAgLTM5LDYgKzQzLDkgQEAKICAgICByZXR1cm4gJyInICsgRVNDQVBFLnN1YihyZXBsYWNlLCBzKSArICciJwogCiAKK2VuY29kZV9iYXNlc3RyaW5nID0gKGNfZW5jb2RlX2Jhc2VzdHJpbmcgb3IgcHlfZW5jb2RlX2Jhc2VzdHJpbmcpCisKKwogZGVmIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKHMpOgogICAgICIiIlJldHVybiBhbiBBU0NJSS1vbmx5IEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gc3RyaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi9qc29uL3Rvb2wucHkgYi9MaWIvanNvbi90b29sLnB5CmluZGV4IDdkYjQ1MjguLjRmMzE4MmMgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL3Rvb2wucHkKKysrIGIvTGliL2pzb24vdG9vbC5weQpAQCAtMTAsMjggKzEwLDM5IEBACiAgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAzIChjaGFyIDIpCiAKICIiIgotaW1wb3J0IHN5cworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBqc29uCitpbXBvcnQgc3lzCisKIAogZGVmIG1haW4oKToKLSAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6Ci0gICAgICAgIGluZmlsZSA9IHN5cy5zdGRpbgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotICAgIGVsaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgotICAgICAgICBpbmZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAncicpCi0gICAgICAgIG91dGZpbGUgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oc3lzLmFyZ3YpID09IDM6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMl0sICd3JykKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KHN5cy5hcmd2WzBdICsgIiBbaW5maWxlIFtvdXRmaWxlXV0iKQorICAgIHByb2cgPSAncHl0aG9uIC1tIGpzb24udG9vbCcKKyAgICBkZXNjcmlwdGlvbiA9ICgnQSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSBmb3IganNvbiBtb2R1bGUgJworICAgICAgICAgICAgICAgICAgICd0byB2YWxpZGF0ZSBhbmQgcHJldHR5LXByaW50IEpTT04gb2JqZWN0cy4nKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9cHJvZywgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnaW5maWxlJywgbmFyZ3M9Jz8nLCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhIEpTT04gZmlsZSB0byBiZSB2YWxpZGF0ZWQgb3IgcHJldHR5LXByaW50ZWQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ291dGZpbGUnLCBuYXJncz0nPycsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3dyaXRlIHRoZSBvdXRwdXQgb2YgaW5maWxlIHRvIG91dGZpbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc29ydC1rZXlzJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgYWxwaGFiZXRpY2FsbHkgYnkga2V5JykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaW5maWxlID0gb3B0aW9ucy5pbmZpbGUgb3Igc3lzLnN0ZGluCisgICAgb3V0ZmlsZSA9IG9wdGlvbnMub3V0ZmlsZSBvciBzeXMuc3Rkb3V0CisgICAgc29ydF9rZXlzID0gb3B0aW9ucy5zb3J0X2tleXMKICAgICB3aXRoIGluZmlsZToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2JqID0ganNvbi5sb2FkKGluZmlsZSkKKyAgICAgICAgICAgIGlmIHNvcnRfa2V5czoKKyAgICAgICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoZSkKICAgICB3aXRoIG91dGZpbGU6Ci0gICAgICAgIGpzb24uZHVtcChvYmosIG91dGZpbGUsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkKKyAgICAgICAganNvbi5kdW1wKG9iaiwgb3V0ZmlsZSwgc29ydF9rZXlzPXNvcnRfa2V5cywgaW5kZW50PTQpCiAgICAgICAgIG91dGZpbGUud3JpdGUoJ1xuJykKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dCBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CmluZGV4IGU2NjdiY2QuLmM5NTQ2NjkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CisrKyBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CkBAIC0zMyw3ICszMyw4IEBACiAKIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCi1kZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKK2RlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmIHwgYXN5bmNfZnVuY2RlZikKK2FzeW5jX2Z1bmNkZWY6IEFTWU5DIGZ1bmNkZWYKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCiB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCkBAIC04Miw3ICs4Myw4IEBACiBleGVjX3N0bXQ6ICdleGVjJyBleHByIFsnaW4nIHRlc3QgWycsJyB0ZXN0XV0KIGFzc2VydF9zdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KIAotY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCitjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10Cithc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KQogaWZfc3RtdDogJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiB3aGlsZV9zdG10OiAnd2hpbGUnIHRlc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogZm9yX3N0bXQ6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQpAQCAtMTIxLDcgKzEyMyw3IEBACiBhcml0aF9leHByOiB0ZXJtICgoJysnfCctJykgdGVybSkqCiB0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKIGZhY3RvcjogKCcrJ3wnLSd8J34nKSBmYWN0b3IgfCBwb3dlcgotcG93ZXI6IGF0b20gdHJhaWxlciogWycqKicgZmFjdG9yXQorcG93ZXI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCiBhdG9tOiAoJygnIFt5aWVsZF9leHByfHRlc3RsaXN0X2dleHBdICcpJyB8CiAgICAgICAgJ1snIFtsaXN0bWFrZXJdICddJyB8CiAgICAgICAgJ3snIFtkaWN0c2V0bWFrZXJdICd9JyB8CkBAIC0xNDIsNyArMTQ0LDcgQEAKIGNsYXNzZGVmOiAnY2xhc3MnIE5BTUUgWycoJyBbYXJnbGlzdF0gJyknXSAnOicgc3VpdGUKIAogYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXQotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdIAorICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfCcqKicgdGVzdCkKIGFyZ3VtZW50OiB0ZXN0IFtjb21wX2Zvcl0gfCB0ZXN0ICc9JyB0ZXN0ICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW4ucHkgYi9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQppbmRleCA3NTk5Mzk2Li4xYTY3OTU1IDEwMDc1NQotLS0gYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQorKysgYi9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQpAQCAtNjIsOCArNjIsMTAgQEAKIENPTU1FTlQgPSA1MwogTkwgPSA1NAogUkFSUk9XID0gNTUKLUVSUk9SVE9LRU4gPSA1NgotTl9UT0tFTlMgPSA1NworQVdBSVQgPSA1NgorQVNZTkMgPSA1NworRVJST1JUT0tFTiA9IDU4CitOX1RPS0VOUyA9IDU5CiBOVF9PRkZTRVQgPSAyNTYKICMtLWVuZCBjb25zdGFudHMtLQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbml6ZS5weSBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CmluZGV4IDNkZDFlZTkuLjY5MGZlYzQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICAgICAgZm9yIHRvayBpbiBpdGVyYWJsZToKICAgICAgICAgICAgIHRva251bSwgdG9rdmFsID0gdG9rWzoyXQogCi0gICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUik6CisgICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUiwgQVNZTkMsIEFXQUlUKToKICAgICAgICAgICAgICAgICB0b2t2YWwgKz0gJyAnCiAKICAgICAgICAgICAgIGlmIHRva251bSA9PSBJTkRFTlQ6CkBAIC0zNjYsNiArMzY2LDEwIEBACiAgICAgY29udGxpbmUgPSBOb25lCiAgICAgaW5kZW50cyA9IFswXQogCisgICAgIyAnc3Rhc2hlZCcgYW5kICdjdHgnIGFyZSB1c2VkIGZvciBhc3luYy9hd2FpdCBwYXJzaW5nCisgICAgc3Rhc2hlZCA9IE5vbmUKKyAgICBjdHggPSBbKCdzeW5jJywgMCldCisKICAgICB3aGlsZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29wIG92ZXIgbGluZXMgaW4gc3RyZWFtCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpbmUgPSByZWFkbGluZSgpCkBAIC00MDYsNiArNDEwLDEwIEBACiAgICAgICAgICAgICAgICAgcG9zID0gcG9zICsgMQogICAgICAgICAgICAgaWYgcG9zID09IG1heDogYnJlYWsKIAorICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKwogICAgICAgICAgICAgaWYgbGluZVtwb3NdIGluICcjXHJcbic6ICAgICAgICAgICAjIHNraXAgY29tbWVudHMgb3IgYmxhbmsgbGluZXMKICAgICAgICAgICAgICAgICBpZiBsaW5lW3Bvc10gPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBjb21tZW50X3Rva2VuID0gbGluZVtwb3M6XS5yc3RyaXAoJ1xyXG4nKQpAQCAtNDQ5LDkgKzQ1NywxNSBAQAogICAgICAgICAgICAgICAgICAgICBuZXdsaW5lID0gTkVXTElORQogICAgICAgICAgICAgICAgICAgICBpZiBwYXJlbmxldiA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lID0gTkwKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChuZXdsaW5lLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gZW5kcHJvZ3NbdG9rZW5dCkBAIC00NTksNiArNDczLDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZW5kbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgb24gb25lIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVuZG1hdGNoLmVuZCgwKQogICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBsaW5lW3N0YXJ0OnBvc10KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoU1RSSU5HLCB0b2tlbiwgc3BvcywgKGxudW0sIHBvcyksIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkgICAgICAgICAgICMgbXVsdGlwbGUgbGluZXMKQEAgLTQ3NiwyMiArNDkzLDY0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgKFNUUklORywgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluIG5hbWVjaGFyczogICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQotICAgICAgICAgICAgICAgICAgICB5aWVsZCAoTkFNRSwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuIGluICgnYXN5bmMnLCAnYXdhaXQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN0eFstMV1bMF0gPT0gJ2FzeW5jJyBhbmQgY3R4Wy0xXVsxXSA8IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZFswXSA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGFzaGVkWzFdID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmFwcGVuZCgoJ2FzeW5jJywgaW5kZW50c1stMV0pKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgKEFTWU5DLCBzdGFzaGVkWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzJdLCBzdGFzaGVkWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzRdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5hcHBlbmQoKCdzeW5jJywgaW5kZW50c1stMV0pKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRvawogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnXFwnOiAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdG10CiAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB5aWVsZCBpcyBuZXc7IG5lZWRlZCBmb3IgYmV0dGVyIGlkZW1wb3RlbmN5OgorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgKE5MLCB0b2tlbiwgc3BvcywgKGxudW0sIHBvcyksIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBpbml0aWFsIGluICcoW3snOiBwYXJlbmxldiA9IHBhcmVubGV2ICsgMQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gJyldfSc6IHBhcmVubGV2ID0gcGFyZW5sZXYgLSAxCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoT1AsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCAoRVJST1JUT0tFTiwgbGluZVtwb3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxudW0sIHBvcyksIChsbnVtLCBwb3MrMSksIGxpbmUpCiAgICAgICAgICAgICAgICAgcG9zID0gcG9zICsgMQogCisgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgZm9yIGluZGVudCBpbiBpbmRlbnRzWzE6XTogICAgICAgICAgICAgICAgICMgcG9wIHJlbWFpbmluZyBpbmRlbnQgbGV2ZWxzCiAgICAgICAgIHlpZWxkIChERURFTlQsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCiAgICAgeWllbGQgKEVORE1BUktFUiwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggNWJiOWQyYi4uMTA3YjVhYiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKQEAgLTU1LDEyICs1NSw0MiBAQAogCiAKIGNsYXNzIFRlc3RZaWVsZEZyb20oR3JhbW1hclRlc3QpOgotICAgIGRlZiB0ZXN0X21hdHJpeF9tdWx0aXBsaWNhdGlvbl9vcGVyYXRvcihzZWxmKToKKyAgICBkZWYgdGVzdF95aWVsZF9mcm9tKHNlbGYpOgogICAgICAgICBzZWxmLnZhbGlkYXRlKCJ5aWVsZCBmcm9tIHgiKQogICAgICAgICBzZWxmLnZhbGlkYXRlKCIoeWllbGQgZnJvbSB4KSArIHkiKQogICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCJ5aWVsZCBmcm9tIikKIAogCitjbGFzcyBUZXN0QXN5bmNBd2FpdChHcmFtbWFyVGVzdCk6CisgICAgZGVmIHRlc3RfYXdhaXRfZXhwcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHgKKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi5pbnZhbGlkX3N5bnRheCgiYXdhaXQgeCIpCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB4IiIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfdmFyKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jID0gMSIiIikKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhd2FpdCA9IDEiIiIpCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiZGVmIGFzeW5jKCk6IHBhc3MiIiIpCisKKyAgICBkZWYgdGVzdF9hc3luY193aXRoKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX2ZvcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggYTogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBhOiBwYXNzIiIiKQorCisKIGNsYXNzIFRlc3RSYWlzZUNoYW5nZXMoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0XzJ4X3N0eWxlXzEoc2VsZik6CiAgICAgICAgIHNlbGYudmFsaWRhdGUoInJhaXNlIikKZGlmZiAtLWdpdCBhL0xpYi9saW5lY2FjaGUucHkgYi9MaWIvbGluZWNhY2hlLnB5CmluZGV4IDg4NGNiZjQuLjNhZmNjZTEgMTAwNjQ0Ci0tLSBhL0xpYi9saW5lY2FjaGUucHkKKysrIGIvTGliL2xpbmVjYWNoZS5weQpAQCAtNSw2ICs1LDcgQEAKIHRoYXQgbmFtZS4KICIiIgogCitpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB0b2tlbml6ZQpAQCAtMjEsNyArMjIsOSBAQAogCiAjIFRoZSBjYWNoZQogCi1jYWNoZSA9IHt9ICMgVGhlIGNhY2hlCisjIFRoZSBjYWNoZS4gTWFwcyBmaWxlbmFtZXMgdG8gZWl0aGVyIGEgdGh1bmsgd2hpY2ggd2lsbCBwcm92aWRlIHNvdXJjZSBjb2RlLAorIyBvciBhIHR1cGxlIChzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lKSBvbmNlIGxvYWRlZC4KK2NhY2hlID0ge30KIAogCiBkZWYgY2xlYXJjYWNoZSgpOgpAQCAtMzYsNyArMzksOSBAQAogICAgIFVwZGF0ZSB0aGUgY2FjaGUgaWYgaXQgZG9lc24ndCBjb250YWluIGFuIGVudHJ5IGZvciB0aGlzIGZpbGUgYWxyZWFkeS4iIiIKIAogICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgotICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCisgICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCisgICAgICAgIGlmIGxlbihlbnRyeSkgIT0gMToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHVwZGF0ZWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKQEAgLTU4LDcgKzYzLDExIEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgIHNpemUsIG10aW1lLCBsaW5lcywgZnVsbG5hbWUgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgZW50cnkgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgaWYgbGVuKGVudHJ5KSA9PSAxOgorICAgICAgICAgICAgIyBsYXp5IGNhY2hlIGVudHJ5LCBsZWF2ZSBpdCBsYXp5LgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSA9IGVudHJ5CiAgICAgICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgbm8tb3AgZm9yIGZpbGVzIGxvYWRlZCB2aWEgYSBfX2xvYWRlcl9fCiAgICAgICAgIHRyeToKQEAgLTc2LDcgKzg1LDggQEAKICAgICBhbmQgcmV0dXJuIGFuIGVtcHR5IGxpc3QuIiIiCiAKICAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKLSAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSAhPSAxOgorICAgICAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQogICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKICAgICAgICAgcmV0dXJuIFtdCiAKQEAgLTg2LDI3ICs5NiwyMyBAQAogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBiYXNlbmFtZSA9IGZpbGVuYW1lCiAKLSAgICAgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCi0gICAgICAgIGlmIG1vZHVsZV9nbG9iYWxzIGFuZCAnX19sb2FkZXJfXycgaW4gbW9kdWxlX2dsb2JhbHM6Ci0gICAgICAgICAgICBuYW1lID0gbW9kdWxlX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycpCi0gICAgICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCi0gICAgICAgICAgICBnZXRfc291cmNlID0gZ2V0YXR0cihsb2FkZXIsICdnZXRfc291cmNlJywgTm9uZSkKLQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgZ2V0X3NvdXJjZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRfc291cmNlKG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vIGx1Y2ssIHRoZSBQRVAzMDIgbG9hZGVyIGNhbm5vdCBmaW5kIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lKydcbicgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCldLCBmdWxsbmFtZQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KKyAgICAgICAgIyBSZWFsaXNlIGEgbGF6eSBsb2FkZXIgYmFzZWQgbG9va3VwIGlmIHRoZXJlIGlzIG9uZQorICAgICAgICAjIG90aGVyd2lzZSB0cnkgdG8gbG9va3VwIHJpZ2h0IG5vdy4KKyAgICAgICAgaWYgbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YSA9IGNhY2hlW2ZpbGVuYW1lXVswXSgpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBObyBsdWNrLCB0aGUgUEVQMzAyIGxvYWRlciBjYW5ub3QgZmluZCB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgICAgICBjYWNoZVtmaWxlbmFtZV0gPSAoCisgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgW2xpbmUrJ1xuJyBmb3IgbGluZSBpbiBkYXRhLnNwbGl0bGluZXMoKV0sIGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgICAgICAjIFRyeSBsb29raW5nIHRocm91Z2ggdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCwgd2hpY2ggaXMgb25seSB1c2VmdWwKICAgICAgICAgIyB3aGVuIGhhbmRsaW5nIGEgcmVsYXRpdmUgZmlsZW5hbWUuCkBAIC0xMzYsMyArMTQyLDM2IEBACiAgICAgc2l6ZSwgbXRpbWUgPSBzdGF0LnN0X3NpemUsIHN0YXQuc3RfbXRpbWUKICAgICBjYWNoZVtmaWxlbmFtZV0gPSBzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lCiAgICAgcmV0dXJuIGxpbmVzCisKKworZGVmIGxhenljYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpOgorICAgICIiIlNlZWQgdGhlIGNhY2hlIGZvciBmaWxlbmFtZSB3aXRoIG1vZHVsZV9nbG9iYWxzLgorCisgICAgVGhlIG1vZHVsZSBsb2FkZXIgd2lsbCBiZSBhc2tlZCBmb3IgdGhlIHNvdXJjZSBvbmx5IHdoZW4gZ2V0bGluZXMgaXMKKyAgICBjYWxsZWQsIG5vdCBpbW1lZGlhdGVseS4KKworICAgIElmIHRoZXJlIGlzIGFuIGVudHJ5IGluIHRoZSBjYWNoZSBhbHJlYWR5LCBpdCBpcyBub3QgYWx0ZXJlZC4KKworICAgIDpyZXR1cm46IFRydWUgaWYgYSBsYXp5IGxvYWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgY2FjaGUsCisgICAgICAgIG90aGVyd2lzZSBGYWxzZS4gVG8gcmVnaXN0ZXIgc3VjaCBhIGxvYWQgYSBtb2R1bGUgbG9hZGVyIHdpdGggYQorICAgICAgICBnZXRfc291cmNlIG1ldGhvZCBtdXN0IGJlIGZvdW5kLCB0aGUgZmlsZW5hbWUgbXVzdCBiZSBhIGNhY2hhYmxlCisgICAgICAgIGZpbGVuYW1lLCBhbmQgdGhlIGZpbGVuYW1lIG11c3Qgbm90IGJlIGFscmVhZHkgY2FjaGVkLgorICAgICIiIgorICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCisgICAgaWYgbW9kdWxlX2dsb2JhbHMgYW5kICdfX2xvYWRlcl9fJyBpbiBtb2R1bGVfZ2xvYmFsczoKKyAgICAgICAgbmFtZSA9IG1vZHVsZV9nbG9iYWxzLmdldCgnX19uYW1lX18nKQorICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCisgICAgICAgIGdldF9zb3VyY2UgPSBnZXRhdHRyKGxvYWRlciwgJ2dldF9zb3VyY2UnLCBOb25lKQorCisgICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6CisgICAgICAgICAgICBnZXRfbGluZXMgPSBmdW5jdG9vbHMucGFydGlhbChnZXRfc291cmNlLCBuYW1lKQorICAgICAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKGdldF9saW5lcywpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggN2ZmNDM1Ni4uY2VhYTZkOCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDEsOCArMzAxLDggQEAKICAgICAiIiJDb252ZXJ0IGZsb2F0IHRvIGludGVnZXIsIHRha2luZyB0aGUgbG9jYWxlIGludG8gYWNjb3VudC4iIiIKICAgICByZXR1cm4gZm9ybWF0KCIlLjEyZyIsIHZhbCkKIAotZGVmIGF0b2Yoc3RyaW5nLCBmdW5jPWZsb2F0KToKLSAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgZmxvYXQgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorZGVmIGRlbG9jYWxpemUoc3RyaW5nKToKKyAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgbm9ybWFsaXplZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKICAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CkBAIC0zMTEsMTIgKzMxMSwxNSBAQAogICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKLSAgICAjZmluYWxseSwgcGFyc2UgdGhlIHN0cmluZwotICAgIHJldHVybiBmdW5jKHN0cmluZykKKyAgICByZXR1cm4gc3RyaW5nCiAKLWRlZiBhdG9pKHN0cik6CitkZWYgYXRvZihzdHJpbmcsIGZ1bmM9ZmxvYXQpOgorICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBmbG9hdCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisgICAgcmV0dXJuIGZ1bmMoZGVsb2NhbGl6ZShzdHJpbmcpKQorCitkZWYgYXRvaShzdHJpbmcpOgogICAgICJDb252ZXJ0cyBhIHN0cmluZyB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKLSAgICByZXR1cm4gYXRvZihzdHIsIGludCkKKyAgICByZXR1cm4gaW50KGRlbG9jYWxpemUoc3RyaW5nKSkKIAogZGVmIF90ZXN0KCk6CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpCkBAIC02OTYsNyArNjk5LDkgQEAKICAgICAnZXVjX2tyJzogICAgICAgICAgICAgICAgICAgICAgICdldWNLUicsCiAgICAgJ3V0Zl84JzogICAgICAgICAgICAgICAgICAgICAgICAnVVRGLTgnLAogICAgICdrb2k4X3InOiAgICAgICAgICAgICAgICAgICAgICAgJ0tPSTgtUicsCisgICAgJ2tvaThfdCc6ICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1UJywKICAgICAna29pOF91JzogICAgICAgICAgICAgICAgICAgICAgICdLT0k4LVUnLAorICAgICdrejEwNDgnOiAgICAgICAgICAgICAgICAgICAgICAgJ1JLMTA0OCcsCiAgICAgJ2NwMTI1MSc6ICAgICAgICAgICAgICAgICAgICAgICAnQ1AxMjUxJywKICAgICAnY3AxMjU1JzogICAgICAgICAgICAgICAgICAgICAgICdDUDEyNTUnLAogICAgICdjcDEyNTYnOiAgICAgICAgICAgICAgICAgICAgICAgJ0NQMTI1NicsCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDY3ZDlkMmUuLjEwNGIwYmUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAwMS0yMDE0IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAwMS0yMDE1IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLApAQCAtMTgsNyArMTgsNyBAQAogTG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4KIGNvbXAubGFuZy5weXRob24uCiAKLUNvcHlyaWdodCAoQykgMjAwMS0yMDE0IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDAxLTIwMTUgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQogIiIiCkBAIC0zMTYsNiArMzE2LDggQEAKICAgICAgICAgcmV0dXJuICc8TG9nUmVjb3JkOiAlcywgJXMsICVzLCAlcywgIiVzIj4nJShzZWxmLm5hbWUsIHNlbGYubGV2ZWxubywKICAgICAgICAgICAgIHNlbGYucGF0aG5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm1zZykKIAorICAgIF9fcmVwcl9fID0gX19zdHJfXworCiAgICAgZGVmIGdldE1lc3NhZ2Uoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgTG9nUmVjb3JkLgpAQCAtMTA5MSw3ICsxMDkzLDYgQEAKICMKICMgICBEZXRlcm1pbmUgd2hpY2ggY2xhc3MgdG8gdXNlIHdoZW4gaW5zdGFudGlhdGluZyBsb2dnZXJzLgogIwotX2xvZ2dlckNsYXNzID0gTm9uZQogCiBkZWYgc2V0TG9nZ2VyQ2xhc3Moa2xhc3MpOgogICAgICIiIgpAQCAtMTExMCw3ICsxMTExLDYgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyLgogICAgICIiIgotCiAgICAgcmV0dXJuIF9sb2dnZXJDbGFzcwogCiBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CkBAIC0xMzA3LDEyICsxMzA3LDExIEBACiAgICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKEVSUk9SKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhFUlJPUiwgbXNnLCBhcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiIKICAgICAgICAgQ29udmVuaWVuY2UgbWV0aG9kIGZvciBsb2dnaW5nIGFuIEVSUk9SIHdpdGggZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTQwNyw3ICsxNDA2LDkgQEAKICAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKICAgICAgICAgaWYgZXhjX2luZm86Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfaW5mbywgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGNfaW5mbyksIGV4Y19pbmZvLCBleGNfaW5mby5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgogICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgcmVjb3JkID0gc2VsZi5tYWtlUmVjb3JkKHNlbGYubmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBleHRyYSwgc2luZm8pCkBAIC0xNjE3LDEyICsxNjE4LDExIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IFRydWUKLSAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgZXhjX2luZm89ZXhjX2luZm8sICoqa3dhcmdzKQogCiAgICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xODA0LDE0ICsxODA0LDEzIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290LmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi1kZWYgZXhjZXB0aW9uKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKK2RlZiBleGNlcHRpb24obXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICIiIgogICAgIExvZyBhIG1lc3NhZ2Ugd2l0aCBzZXZlcml0eSAnRVJST1InIG9uIHRoZSByb290IGxvZ2dlciwgd2l0aCBleGNlcHRpb24KICAgICBpbmZvcm1hdGlvbi4gSWYgdGhlIGxvZ2dlciBoYXMgbm8gaGFuZGxlcnMsIGJhc2ljQ29uZmlnKCkgaXMgY2FsbGVkIHRvIGFkZAogICAgIGEgY29uc29sZSBoYW5kbGVyIHdpdGggYSBwcmUtZGVmaW5lZCBmb3JtYXQuCiAgICAgIiIiCi0gICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgIGVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgIGVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogZGVmIHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDg5NWZiMjYuLjhhOTk5MjMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTExNiwxMSArMTE2LDEyIEBACiAgICAgICAgIHNlY3RuYW1lID0gImZvcm1hdHRlcl8lcyIgJSBmb3JtCiAgICAgICAgIGZzID0gY3AuZ2V0KHNlY3RuYW1lLCAiZm9ybWF0IiwgcmF3PVRydWUsIGZhbGxiYWNrPU5vbmUpCiAgICAgICAgIGRmcyA9IGNwLmdldChzZWN0bmFtZSwgImRhdGVmbXQiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9Tm9uZSkKKyAgICAgICAgc3RsID0gY3AuZ2V0KHNlY3RuYW1lLCAic3R5bGUiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9JyUnKQogICAgICAgICBjID0gbG9nZ2luZy5Gb3JtYXR0ZXIKICAgICAgICAgY2xhc3NfbmFtZSA9IGNwW3NlY3RuYW1lXS5nZXQoImNsYXNzIikKICAgICAgICAgaWYgY2xhc3NfbmFtZToKICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbGFzc19uYW1lKQotICAgICAgICBmID0gYyhmcywgZGZzKQorICAgICAgICBmID0gYyhmcywgZGZzLCBzdGwpCiAgICAgICAgIGZvcm1hdHRlcnNbZm9ybV0gPSBmCiAgICAgcmV0dXJuIGZvcm1hdHRlcnMKIApAQCAtNjYwLDcgKzY2MSwxMiBAQAogICAgICAgICAgICAgZm10ID0gY29uZmlnLmdldCgnZm9ybWF0JywgTm9uZSkKICAgICAgICAgICAgIGRmbXQgPSBjb25maWcuZ2V0KCdkYXRlZm10JywgTm9uZSkKICAgICAgICAgICAgIHN0eWxlID0gY29uZmlnLmdldCgnc3R5bGUnLCAnJScpCi0gICAgICAgICAgICByZXN1bHQgPSBsb2dnaW5nLkZvcm1hdHRlcihmbXQsIGRmbXQsIHN0eWxlKQorICAgICAgICAgICAgY25hbWUgPSBjb25maWcuZ2V0KCdjbGFzcycsIE5vbmUpCisgICAgICAgICAgICBpZiBub3QgY25hbWU6CisgICAgICAgICAgICAgICAgYyA9IGxvZ2dpbmcuRm9ybWF0dGVyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbmFtZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGMoZm10LCBkZm10LCBzdHlsZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGNvbmZpZ3VyZV9maWx0ZXIoc2VsZiwgY29uZmlnKToKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggZmRhODA5My4uMDJhNWZjMSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDAxLTIwMTMgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIENvcHlyaWdodCAyMDAxLTIwMTUgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAjCiAjIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwogIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCkBAIC0xOCw3ICsxOCw3IEBACiBBZGRpdGlvbmFsIGhhbmRsZXJzIGZvciB0aGUgbG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIFRoZSBjb3JlIHBhY2thZ2UgaXMKIGJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4gY29tcC5sYW5nLnB5dGhvbi4KIAotQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nLmhhbmRsZXJzJyBhbmQgbG9nIGF3YXkhCiAiIiIKQEAgLTEzNTUsNyArMTM1NSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfc2VudGluZWwgPSBOb25lCiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCAqaGFuZGxlcnMpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWUsICpoYW5kbGVycywgcmVzcGVjdF9oYW5kbGVyX2xldmVsPUZhbHNlKToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVldWUgYW5kCiAgICAgICAgICAgICBoYW5kbGVycy4KQEAgLTEzNjQsNiArMTM2NCw3IEBACiAgICAgICAgICAgICBzZWxmLmhhbmRsZXJzID0gaGFuZGxlcnMKICAgICAgICAgICAgIHNlbGYuX3N0b3AgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZXNwZWN0X2hhbmRsZXJfbGV2ZWwgPSByZXNwZWN0X2hhbmRsZXJfbGV2ZWwKIAogICAgICAgICBkZWYgZGVxdWV1ZShzZWxmLCBibG9jayk6CiAgICAgICAgICAgICAiIiIKQEAgLTE0MDQsNyArMTQwNSwxMiBAQAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICByZWNvcmQgPSBzZWxmLnByZXBhcmUocmVjb3JkKQogICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5oYW5kbGVyczoKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZShyZWNvcmQpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgPSByZWNvcmQubGV2ZWxubyA+PSBoYW5kbGVyLmxldmVsCisgICAgICAgICAgICAgICAgaWYgcHJvY2VzczoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUocmVjb3JkKQogCiAgICAgICAgIGRlZiBfbW9uaXRvcihzZWxmKToKICAgICAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQppbmRleCBmMWQzOTU4Li44OTUyOGI2IDEwMDY0NAotLS0gYS9MaWIvbHptYS5weQorKysgYi9MaWIvbHptYS5weQpAQCAtMjUsMTcgKzI1LDE2IEBACiBpbXBvcnQgaW8KIGZyb20gX2x6bWEgaW1wb3J0ICoKIGZyb20gX2x6bWEgaW1wb3J0IF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMKK2ltcG9ydCBfY29tcHJlc3Npb24KIAogCiBfTU9ERV9DTE9TRUQgICA9IDAKIF9NT0RFX1JFQUQgICAgID0gMQotX01PREVfUkVBRF9FT0YgPSAyCisjIFZhbHVlIDIgbm8gbG9uZ2VyIHVzZWQKIF9NT0RFX1dSSVRFICAgID0gMwogCi1fQlVGRkVSX1NJWkUgPSA4MTkyCiAKLQotY2xhc3MgTFpNQUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgTFpNQUZpbGUoX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0pOgogCiAgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgTFpNQSAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTkyLDggKzkxLDYgQEAKICAgICAgICAgc2VsZi5fZnAgPSBOb25lCiAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQogICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECi0gICAgICAgIHNlbGYuX3BvcyA9IDAKLSAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCiAKICAgICAgICAgaWYgbW9kZSBpbiAoInIiLCAicmIiKToKICAgICAgICAgICAgIGlmIGNoZWNrICE9IC0xOgpAQCAtMTA1LDE5ICsxMDIsMTMgQEAKICAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9BVVRPCiAgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECi0gICAgICAgICAgICAjIFNhdmUgdGhlIGFyZ3MgdG8gcGFzcyB0byB0aGUgTFpNQURlY29tcHJlc3NvciBpbml0aWFsaXplci4KLSAgICAgICAgICAgICMgSWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBlYWNoCi0gICAgICAgICAgICAjIHN0cmVhbSB3aWxsIG5lZWQgYSBzZXBhcmF0ZSBkZWNvbXByZXNzb3Igb2JqZWN0LgotICAgICAgICAgICAgc2VsZi5faW5pdF9hcmdzID0geyJmb3JtYXQiOmZvcm1hdCwgImZpbHRlcnMiOmZpbHRlcnN9Ci0gICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAogICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIiwgImEiLCAiYWIiLCAieCIsICJ4YiIpOgogICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX1haCiAgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQogICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IExaTUFDb21wcmVzc29yKGZvcm1hdD1mb3JtYXQsIGNoZWNrPWNoZWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCkBAIC0xMzMsNiArMTI0LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLCBMWk1BRGVjb21wcmVzc29yLAorICAgICAgICAgICAgICAgIHRyYWlsaW5nX2Vycm9yPUxaTUFFcnJvciwgZm9ybWF0PWZvcm1hdCwgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3KQorCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCiAKQEAgLTE0Miw5ICsxMzgsOSBAQAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQogICAgICAgICAgICAgZWxpZiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQpAQCAtMTY5LDEyMyArMTY1LDE4IEBACiAKICAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHN1cHBvcnRzIHNlZWtpbmcuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2ZwLnNlZWthYmxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fYnVmZmVyLnNlZWthYmxlKCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgIHJldHVybiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRikKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRAogCiAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKIAotICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgotCi0gICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfV1JJVEU6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKLSAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6Ci0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCi0KLSAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgotICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAotICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgotICAgICAgICB3aGlsZSBzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkpCi0KLSAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgotICAgICAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBMWk1BRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgVHJhaWxpbmcgZGF0YSBpc24ndCBhIHZhbGlkIGNvbXByZXNzZWQgc3RyZWFtOyBpZ25vcmUgaXQuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCiAKQEAgLTI5Myw5ICsxODQsOSBAQAogICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKLSAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgIyBSZWxpZXMgb24gdGhlIHVuZG9jdW1lbnRlZCBmYWN0IHRoYXQgQnVmZmVyZWRSZWFkZXIucGVlaygpIGFsd2F5cworICAgICAgICAjIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgKGV4Y2VwdCBhdCBFT0YpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucGVlayhzaXplKQogCiAgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMwNCwzOCArMTk1LDE5IEBACiAgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiBzaXplID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkKHNpemUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAotICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisgICAgICAgIG1ha2luZyBtdWx0aXBsZSByZWFkcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4gUmVhZHMgdXAgdG8gYQorICAgICAgICBidWZmZXIncyB3b3J0aCBvZiBkYXRhIGlmIHNpemUgaXMgbmVnYXRpdmUuCiAKICAgICAgICAgUmV0dXJucyBiIiIgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgogICAgICAgICAiIiIKLSAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKLSAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KLSAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiAoc2l6ZSA9PSAwIG9yCi0gICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgIyBUaGlzIGdpdmVzIGEgc2lnbmlmaWNhbnQgc3BlZWR1cCBpZiAqc2l6ZSogaXMgc21hbGwuCi0gICAgICAgICAgICAoc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKSBhbmQgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpKToKLSAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgaWYgc2l6ZSA+IDA6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKz0gbGVuKGRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkMShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTM0NSwxNSArMjE3LDcgQEAKICAgICAgICAgY2FzZSB0aGUgbGluZSBtYXkgYmUgaW5jb21wbGV0ZSkuIFJldHVybnMgYicnIGlmIGFscmVhZHkgYXQgRU9GLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSB0aGUgd2hvbGUgbGluZSBpcyBpbiB0aGUgYnVmZmVyLgotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlci5maW5kKGIiXG4iLCBzZWxmLl9idWZmZXJfb2Zmc2V0KSArIDEKLSAgICAgICAgICAgIGlmIGVuZCA+IDA6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGxpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIHNpemUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZGxpbmUoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gdGhlIGZpbGUuCkBAIC0zNjgsMTYgKzIzMiw3IEBACiAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCi0gICAgIyBSZXdpbmQgdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBzdHJlYW0uCi0gICAgZGVmIF9yZXdpbmQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZwLnNlZWsoMCwgMCkKLSAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQUQKLSAgICAgICAgc2VsZi5fcG9zID0gMAotICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQotICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgogCiAgICAgICAgIFRoZSBuZXcgcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5IG9mZnNldCwgcmVsYXRpdmUgdG8gdGhlCkBAIC0zODksMzggKzI0NCwxNyBAQAogCiAgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgogCi0gICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzcCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzbyBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCiAgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKLQotICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgotICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgotICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCi0gICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQotCi0gICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KLSAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KLSAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQotCi0gICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQogCiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwogCiAKZGlmZiAtLWdpdCBhL0xpYi9tYWNwYXRoLnB5IGIvTGliL21hY3BhdGgucHkKaW5kZXggNWNhMDA5Ny4uYTkwZDEwNSAxMDA2NDQKLS0tIGEvTGliL21hY3BhdGgucHkKKysrIGIvTGliL21hY3BhdGgucHkKQEAgLTUwLDIwICs1MCwyNiBAQAogCiAKIGRlZiBqb2luKHMsICpwKToKLSAgICBjb2xvbiA9IF9nZXRfY29sb24ocykKLSAgICBwYXRoID0gcwotICAgIGZvciB0IGluIHA6Ci0gICAgICAgIGlmIChub3QgcGF0aCkgb3IgaXNhYnModCk6Ci0gICAgICAgICAgICBwYXRoID0gdAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdFs6MV0gPT0gY29sb246Ci0gICAgICAgICAgICB0ID0gdFsxOl0KLSAgICAgICAgaWYgY29sb24gbm90IGluIHBhdGg6Ci0gICAgICAgICAgICBwYXRoID0gY29sb24gKyBwYXRoCi0gICAgICAgIGlmIHBhdGhbLTE6XSAhPSBjb2xvbjoKLSAgICAgICAgICAgIHBhdGggPSBwYXRoICsgY29sb24KLSAgICAgICAgcGF0aCA9IHBhdGggKyB0Ci0gICAgcmV0dXJuIHBhdGgKKyAgICB0cnk6CisgICAgICAgIGNvbG9uID0gX2dldF9jb2xvbihzKQorICAgICAgICBwYXRoID0gcworICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgIHBhdGhbOjBdICsgY29sb24gICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgorICAgICAgICBmb3IgdCBpbiBwOgorICAgICAgICAgICAgaWYgKG5vdCBwYXRoKSBvciBpc2Ficyh0KToKKyAgICAgICAgICAgICAgICBwYXRoID0gdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB0WzoxXSA9PSBjb2xvbjoKKyAgICAgICAgICAgICAgICB0ID0gdFsxOl0KKyAgICAgICAgICAgIGlmIGNvbG9uIG5vdCBpbiBwYXRoOgorICAgICAgICAgICAgICAgIHBhdGggPSBjb2xvbiArIHBhdGgKKyAgICAgICAgICAgIGlmIHBhdGhbLTE6XSAhPSBjb2xvbjoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aCArIGNvbG9uCisgICAgICAgICAgICBwYXRoID0gcGF0aCArIHQKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZyk6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2pvaW4nLCBzLCAqcCkKKyAgICAgICAgcmFpc2UKIAogCiBkZWYgc3BsaXQocyk6CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDRlNDJhZDIuLjI0ZDRhZWMgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0xMjM0LDggKzEyMzQsOCBAQAogY2xhc3MgQmFieWwoX3NpbmdsZWZpbGVNYWlsYm94KToKICAgICAiIiJBbiBSbWFpbC1zdHlsZSBCYWJ5bCBtYWlsYm94LiIiIgogCi0gICAgX3NwZWNpYWxfbGFiZWxzID0gZnJvemVuc2V0KCgndW5zZWVuJywgJ2RlbGV0ZWQnLCAnZmlsZWQnLCAnYW5zd2VyZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcndhcmRlZCcsICdlZGl0ZWQnLCAncmVzZW50JykpCisgICAgX3NwZWNpYWxfbGFiZWxzID0gZnJvemVuc2V0KHsndW5zZWVuJywgJ2RlbGV0ZWQnLCAnZmlsZWQnLCAnYW5zd2VyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcndhcmRlZCcsICdlZGl0ZWQnLCAncmVzZW50J30pCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBCYWJ5bCBtYWlsYm94LiIiIgpAQCAtMTk1Myw3ICsxOTUzLDcgQEAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHlpZWxkIGxpbmUKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtMTk3MCw5ICsxOTcwLDExIEBACiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZS4iIiIKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2ZpbGUnKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fZmlsZSwgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fZmlsZSwgJ2Nsb3NlJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQogCiAgICAgZGVmIF9yZWFkKHNlbGYsIHNpemUsIHJlYWRfbWV0aG9kKToKICAgICAgICAgIiIiUmVhZCBzaXplIGJ5dGVzIHVzaW5nIHJlYWRfbWV0aG9kLiIiIgpkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggYjc3OGU2MC4uNTBmMjQ2MiAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKIGltcG9ydCBkaXMKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IG1hcnNoYWwKIGltcG9ydCBvcwpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgIGlmIG5vdCBtLl9fcGF0aF9fOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG1vZHVsZXMgPSB7fQotICAgICAgICAjICdzdWZmaXhlcycgdXNlZCB0byBiZSBhIGxpc3QgaGFyZGNvZGVkIHRvIFsiLnB5IiwgIi5weWMiLCAiLnB5byJdLgorICAgICAgICAjICdzdWZmaXhlcycgdXNlZCB0byBiZSBhIGxpc3QgaGFyZGNvZGVkIHRvIFsiLnB5IiwgIi5weWMiXS4KICAgICAgICAgIyBCdXQgd2UgbXVzdCBhbHNvIGNvbGxlY3QgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzIC0gYWx0aG91Z2gKICAgICAgICAgIyB3ZSBjYW5ub3Qgc2VwYXJhdGUgbm9ybWFsIGRsbHMgZnJvbSBQeXRob24gZXh0ZW5zaW9ucy4KICAgICAgICAgc3VmZml4ZXMgPSBbXQpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgICAgICAgICBjbyA9IGNvbXBpbGUoZnAucmVhZCgpKydcbicsIHBhdGhuYW1lLCAnZXhlYycpCiAgICAgICAgIGVsaWYgdHlwZSA9PSBpbXAuUFlfQ09NUElMRUQ6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbWFyc2hhbF9kYXRhID0gaW1wb3J0bGliLl9ib290c3RyYXAuX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihmcC5yZWFkKCkpCisgICAgICAgICAgICAgICAgbWFyc2hhbF9kYXRhID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihmcC5yZWFkKCkpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgIHNlbGYubXNnb3V0KDIsICJyYWlzZSBJbXBvcnRFcnJvcjogIiArIHN0cihleGMpLCBwYXRobmFtZSkKICAgICAgICAgICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvTGliL21zaWxpYi9fX2luaXRfXy5weSBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKaW5kZXggZDI5YTU5My4uODczNTYwZCAxMDA2NDQKLS0tIGEvTGliL21zaWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CkBAIC0zNjEsNyArMzYxLDcgQEAKICAgICAgICAgIyAgICAgICAgICAgICBbKGxvZ2ljYWwsIDAsIGZpbGVoYXNoLkludGVnZXJEYXRhKDEpLAogICAgICAgICAjICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoMiksIGZpbGVoYXNoLkludGVnZXJEYXRhKDMpLAogICAgICAgICAjICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoNCkpXSkKLSAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHJlbW92ZSAucHljLy5weW8gZmlsZXMgb24gdW5pbnN0YWxsICgyKQorICAgICAgICAjIEF1dG9tYXRpY2FsbHkgcmVtb3ZlIC5weWMgZmlsZXMgb24gdW5pbnN0YWxsICgyKQogICAgICAgICAjIFhYWDogYWRkaW5nIHNvIG1hbnkgUmVtb3ZlRmlsZSBlbnRyaWVzIG1ha2VzIGluc3RhbGxlciB1bmJlbGlldmFibHkKICAgICAgICAgIyBzbG93LiBTbyBpbnN0ZWFkLCB3ZSBoYXZlIHRvIHVzZSB3aWxkY2FyZCByZW1vdmUgZW50cmllcwogICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIucHkiKToKQEAgLTM4MiwxMCArMzgyLDkgQEAKICAgICAgICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgcmVtb3ZlX3B5YyhzZWxmKToKLSAgICAgICAgIlJlbW92ZSAucHljLy5weW8gZmlsZXMgb24gdW5pbnN0YWxsIgorICAgICAgICAiUmVtb3ZlIC5weWMgZmlsZXMgb24gdW5pbnN0YWxsIgogICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5jb21wb25lbnQrImMiLCBzZWxmLmNvbXBvbmVudCwgIioucHljIiwgc2VsZi5sb2dpY2FsLCAyKSwKLSAgICAgICAgICAgICAgICAgIChzZWxmLmNvbXBvbmVudCsibyIsIHNlbGYuY29tcG9uZW50LCAiKi5weW8iLCBzZWxmLmxvZ2ljYWwsIDIpXSkKKyAgICAgICAgICAgICAgICAgWyhzZWxmLmNvbXBvbmVudCsiYyIsIHNlbGYuY29tcG9uZW50LCAiKi5weWMiLCBzZWxmLmxvZ2ljYWwsIDIpXSkKIAogY2xhc3MgQmluYXJ5OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKaW5kZXggMWViMWE4ZC4uNGMzMjIzNyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQpAQCAtMzY1LDEwICszNjUsNyBAQAogICAgIGRlZiBfc2VuZChzZWxmLCBidWYsIHdyaXRlPV93cml0ZSk6CiAgICAgICAgIHJlbWFpbmluZyA9IGxlbihidWYpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbiA9IHdyaXRlKHNlbGYuX2hhbmRsZSwgYnVmKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG4gPSB3cml0ZShzZWxmLl9oYW5kbGUsIGJ1ZikKICAgICAgICAgICAgIHJlbWFpbmluZyAtPSBuCiAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gMDoKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzc5LDEwICszNzYsNyBAQAogICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGUKICAgICAgICAgcmVtYWluaW5nID0gc2l6ZQogICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNodW5rID0gcmVhZChoYW5kbGUsIHJlbWFpbmluZykKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCiAgICAgICAgICAgICBuID0gbGVuKGNodW5rKQogICAgICAgICAgICAgaWYgbiA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgpAQCAtNDAwLDE3ICszOTQsMTQgQEAKICAgICAgICAgaWYgbiA+IDE2Mzg0OgogICAgICAgICAgICAgIyBUaGUgcGF5bG9hZCBpcyBsYXJnZSBzbyBOYWdsZSdzIGFsZ29yaXRobSB3b24ndCBiZSB0cmlnZ2VyZWQKICAgICAgICAgICAgICMgYW5kIHdlJ2QgYmV0dGVyIGF2b2lkIHRoZSBjb3N0IG9mIGNvbmNhdGVuYXRpb24uCi0gICAgICAgICAgICBjaHVua3MgPSBbaGVhZGVyLCBidWZdCi0gICAgICAgIGVsaWYgbiA+IDA6CisgICAgICAgICAgICBzZWxmLl9zZW5kKGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuX3NlbmQoYnVmKQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBJc3N1ZSAj4oCvMjA1NDA6IGNvbmNhdGVuYXRlIGJlZm9yZSBzZW5kaW5nLCB0byBhdm9pZCBkZWxheXMgZHVlCiAgICAgICAgICAgICAjIHRvIE5hZ2xlJ3MgYWxnb3JpdGhtIG9uIGEgVENQIHNvY2tldC4KLSAgICAgICAgICAgIGNodW5rcyA9IFtoZWFkZXIgKyBidWZdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRoaXMgY29kZSBwYXRoIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycwotICAgICAgICAgICAgIyB3aGVuIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCi0gICAgICAgICAgICBjaHVua3MgPSBbaGVhZGVyXQotICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgotICAgICAgICAgICAgc2VsZi5fc2VuZChjaHVuaykKKyAgICAgICAgICAgICMgQWxzbyBub3RlIHdlIHdhbnQgdG8gYXZvaWQgc2VuZGluZyBhIDAtbGVuZ3RoIGJ1ZmZlciBzZXBhcmF0ZWx5LAorICAgICAgICAgICAgIyB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycyBpZiB0aGUgb3RoZXIgZW5kIGNsb3NlZCB0aGUgcGlwZS4KKyAgICAgICAgICAgIHNlbGYuX3NlbmQoaGVhZGVyICsgYnVmKQogCiAgICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CiAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3YoNCkKQEAgLTU5OSwxMyArNTkwLDcgQEAKICAgICAgICAgICAgIHNlbGYuX3VubGluayA9IE5vbmUKIAogICAgIGRlZiBhY2NlcHQoc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcywgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IHNlbGYuX3NvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzLCBzZWxmLl9sYXN0X2FjY2VwdGVkID0gc2VsZi5fc29ja2V0LmFjY2VwdCgpCiAgICAgICAgIHMuc2V0YmxvY2tpbmcoVHJ1ZSkKICAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKaW5kZXggMTM1ZGI3Zi4uMWFiZWE2NCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CkBAIC04Niw3ICs4Niw3IEBACiAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyk6CiAgICAgICAgICAgICAgICAgdGVtcC5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHRlbXAuc29ydCgpCi0gICAgICAgIHJldHVybiAnTmFtZXNwYWNlKCVzKScgJSBzdHIuam9pbignLCAnLCB0ZW1wKQorICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbih0ZW1wKSkKIAogZGljdCA9IGRpY3QKIGxpc3QgPSBsaXN0CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggNjk0ZWY5Ni4uMTk4NDM3NSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNTksOSArNTksOCBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgdGltZW91dCA8PSAwLjA6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkud2FpdCh0aW1lb3V0KQotICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkucmVsZWFzZSgpCisgICAgICAgIHdpdGggc2VsZi5faW4ubm90X2VtcHR5OgorICAgICAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LndhaXQodGltZW91dCkKICAgICAgICAgcmV0dXJuIHNlbGYuX2luLnFzaXplKCkgPiAwCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKaW5kZXggMzg3NTE3ZS4uYjI3Y2JhNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQpAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgICAgICAgICAgYWRkcmVzcyA9IGNvbm5lY3Rpb24uYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1VOSVgnKQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLmJpbmQoYWRkcmVzcykKICAgICAgICAgICAgICAgICBvcy5jaG1vZChhZGRyZXNzLCAwbzYwMCkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW4oMTAwKQorICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbigpCiAKICAgICAgICAgICAgICAgICAjIGFsbCBjbGllbnQgcHJvY2Vzc2VzIG93biB0aGUgd3JpdGUgZW5kIG9mIHRoZSAiYWxpdmUiIHBpcGU7CiAgICAgICAgICAgICAgICAgIyB3aGVuIHRoZXkgYWxsIHRlcm1pbmF0ZSB0aGUgcmVhZCBlbmQgYmVjb21lcyByZWFkeS4KQEAgLTE4OCw4ICsxODgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdChjb2RlKQogCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNPTk5BQk9SVEVEOgogICAgICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMjMwLDEzICsyMjgsNyBAQAogICAgIGRhdGEgPSBiJycKICAgICBsZW5ndGggPSBVTlNJR05FRF9TVFJVQ1Quc2l6ZQogICAgIHdoaWxlIGxlbihkYXRhKSA8IGxlbmd0aDoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzID0gb3MucmVhZChmZCwgbGVuZ3RoIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzID0gb3MucmVhZChmZCwgbGVuZ3RoIC0gbGVuKGRhdGEpKQogICAgICAgICBpZiBub3QgczoKICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCd1bmV4cGVjdGVkIEVPRicpCiAgICAgICAgIGRhdGEgKz0gcwpAQCAtMjQ1LDEzICsyMzcsNyBAQAogZGVmIHdyaXRlX3Vuc2lnbmVkKGZkLCBuKToKICAgICBtc2cgPSBVTlNJR05FRF9TVFJVQ1QucGFjayhuKQogICAgIHdoaWxlIG1zZzoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuYnl0ZXMgPSBvcy53cml0ZShmZCwgbXNnKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBuYnl0ZXMgPSBvcy53cml0ZShmZCwgbXNnKQogICAgICAgICBpZiBuYnl0ZXMgPT0gMDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc2hvdWxkIG5vdCBnZXQgaGVyZScpCiAgICAgICAgIG1zZyA9IG1zZ1tuYnl0ZXM6XQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDM0NGE0NWYuLjQ0ZDk2MzggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTU0LDcgKzU0LDkgQEAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgICBzZWxmLnNpemUsIHNlbGYubmFtZSA9IHNlbGYuX3N0YXRlID0gc3RhdGUKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUworICAgICAgICAgICAgIyBYWFggVGVtcG9yYXJpbHkgcHJldmVudGluZyBidWlsZGJvdCBmYWlsdXJlcyB3aGlsZSBkZXRlcm1pbmluZworICAgICAgICAgICAgIyBYWFggdGhlIGNvcnJlY3QgbG9uZy10ZXJtIGZpeC4gU2VlIGlzc3VlIDIzMDYwCisgICAgICAgICAgICAjYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUwogCiBlbHNlOgogCkBAIC02OSw3ICs3MSwxNCBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lKQogICAgICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChzZWxmLmZkLCkpCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmQsICd3YicsIGNsb3NlZmQ9RmFsc2UpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoYidcMCcqc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgYnMgPSAxMDI0ICogMTAyNAorICAgICAgICAgICAgICAgICAgICBpZiBzaXplID49IGJzOgorICAgICAgICAgICAgICAgICAgICAgICAgemVyb3MgPSBiJ1wwJyAqIGJzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShzaXplIC8vIGJzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHplcm9zKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHplcm9zCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoYidcMCcgKiAoc2l6ZSAlIGJzKSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGYudGVsbCgpID09IHNpemUKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKHNlbGYuZmQsIHNlbGYuc2l6ZSkKIAogICAgIGRlZiByZWR1Y2VfYXJlbmEoYSk6CkBAIC0yMTYsOSArMjI1LDggQEAKICAgICAgICAgYXNzZXJ0IDAgPD0gc2l6ZSA8IHN5cy5tYXhzaXplCiAgICAgICAgIGlmIG9zLmdldHBpZCgpICE9IHNlbGYuX2xhc3RwaWQ6CiAgICAgICAgICAgICBzZWxmLl9faW5pdF9fKCkgICAgICAgICAgICAgICAgICAgICAjIHJlaW5pdGlhbGl6ZSBhZnRlciBmb3JrCi0gICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2ZyZWVfcGVuZGluZ19ibG9ja3MoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2ZyZWVfcGVuZGluZ19ibG9ja3MoKQogICAgICAgICAgICAgc2l6ZSA9IHNlbGYuX3JvdW5kdXAobWF4KHNpemUsMSksIHNlbGYuX2FsaWdubWVudCkKICAgICAgICAgICAgIChhcmVuYSwgc3RhcnQsIHN0b3ApID0gc2VsZi5fbWFsbG9jKHNpemUpCiAgICAgICAgICAgICBuZXdfc3RvcCA9IHN0YXJ0ICsgc2l6ZQpAQCAtMjI3LDggKzIzNSw2IEBACiAgICAgICAgICAgICBibG9jayA9IChhcmVuYSwgc3RhcnQsIG5ld19zdG9wKQogICAgICAgICAgICAgc2VsZi5fYWxsb2NhdGVkX2Jsb2Nrcy5hZGQoYmxvY2spCiAgICAgICAgICAgICByZXR1cm4gYmxvY2sKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCiAKICMKICMgQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YgYW4gbW1hcCAtLSBjYW4gYmUgaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3MKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IDY2ZDQ2ZmMuLjc3NjY1NmUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtNjUsOCArNjUsOCBAQAogICAgICAgICAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkgPSBzdGF0ZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1Rva2VuKHR5cGVpZD0lciwgYWRkcmVzcz0lciwgaWQ9JXIpJyAlIFwKLSAgICAgICAgICAgICAgIChzZWxmLnR5cGVpZCwgc2VsZi5hZGRyZXNzLCBzZWxmLmlkKQorICAgICAgICByZXR1cm4gJyVzKHR5cGVpZD0lciwgYWRkcmVzcz0lciwgaWQ9JXIpJyAlIFwKKyAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkKIAogIwogIyBGdW5jdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzCkBAIC0zMDYsOCArMzA2LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzb21lIGluZm8gLS0tIHVzZWZ1bCB0byBzcG90IHByb2JsZW1zIHdpdGggcmVmY291bnRpbmcKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fb2JqLmtleXMoKSkKICAgICAgICAgICAgIGtleXMuc29ydCgpCkBAIC0zMTcsOCArMzE2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWRlbnQsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5pZF90b19vYmpbaWRlbnRdWzBdKVs6NzVdKSkKICAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4ocmVzdWx0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogICAgIGRlZiBudW1iZXJfb2Zfb2JqZWN0cyhzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNDMsOCArMzQwLDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIENyZWF0ZSBhIG5ldyBzaGFyZWQgb2JqZWN0IGFuZCByZXR1cm4gaXRzIGlkCiAgICAgICAgICcnJwotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGNhbGxhYmxlLCBleHBvc2VkLCBtZXRob2RfdG9fdHlwZWlkLCBwcm94eXR5cGUgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3RyeVt0eXBlaWRdCiAKQEAgLTM3NCw4ICszNzAsNiBAQAogICAgICAgICAgICAgIyBoYXMgYmVlbiBjcmVhdGVkLgogICAgICAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCiAgICAgICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAgICAgZGVmIGdldF9tZXRob2RzKHNlbGYsIGMsIHRva2VuKToKICAgICAgICAgJycnCkBAIC0zOTIsMjIgKzM4NiwxNiBAQAogICAgICAgICBzZWxmLnNlcnZlX2NsaWVudChjKQogCiAgICAgZGVmIGluY3JlZihzZWxmLCBjLCBpZGVudCk6Ci0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogICAgIGRlZiBkZWNyZWYoc2VsZiwgYywgaWRlbnQpOgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCiAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAjCiAjIENsYXNzIHRvIHJlcHJlc2VudCBzdGF0ZSBvZiBhIG1hbmFnZXIKQEAgLTY3MSwxNCArNjU5LDExIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4sIHNlcmlhbGl6ZXIsIG1hbmFnZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlKToKLSAgICAgICAgQmFzZVByb3h5Ll9tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0bHNfaWRzZXQgPSB1dGlsLkZvcmtBd2FyZUxvY2FsKCksIFByb2Nlc3NMb2NhbFNldCgpCiAgICAgICAgICAgICAgICAgQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsW3Rva2VuLmFkZHJlc3NdID0gdGxzX2lkc2V0Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBCYXNlUHJveHkuX211dGV4LnJlbGVhc2UoKQogCiAgICAgICAgICMgc2VsZi5fdGxzIGlzIHVzZWQgdG8gcmVjb3JkIHRoZSBjb25uZWN0aW9uIHVzZWQgYnkgdGhpcwogICAgICAgICAjIHRocmVhZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBtYW5hZ2VyIGF0IHRva2VuLmFkZHJlc3MKQEAgLTgxOCw4ICs4MDMsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0dmFsdWUoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QsIHR5cGVpZCAlciBhdCAlcz4nICUgXAotICAgICAgICAgICAgICAgKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3Rva2VuLnR5cGVpZCwgJzB4JXgnICUgaWQoc2VsZikpCisgICAgICAgIHJldHVybiAnPCVzIG9iamVjdCwgdHlwZWlkICVyIGF0ICUjeD4nICUgXAorICAgICAgICAgICAgICAgKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3Rva2VuLnR5cGVpZCwgaWQoc2VsZikpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgJycnCkBAIC05MTYsNyArOTAxLDcgQEAKICAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgdGVtcC5zb3J0KCkKLSAgICAgICAgcmV0dXJuICdOYW1lc3BhY2UoJXMpJyAlIHN0ci5qb2luKCcsICcsIHRlbXApCisgICAgICAgIHJldHVybiAnJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKHRlbXApKQogCiBjbGFzcyBWYWx1ZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlY29kZSwgdmFsdWUsIGxvY2s9VHJ1ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKaW5kZXggZGI2ZTNlMS4uNmQyNTQ2OSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQpAQCAtODcsNyArODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxNYXliZUVuY29kaW5nRXJyb3I6ICVzPiIgJSBzdHIoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXM6ICVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCiAKIAogZGVmIHdvcmtlcihpbnF1ZXVlLCBvdXRxdWV1ZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzPU5vbmUsCkBAIC02NzUsOCArNjc1LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBuZXh0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9pdGVtcy5wb3BsZWZ0KCkKICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgpAQCAtNjg5LDggKzY4OCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgICAgIHN1Y2Nlc3MsIHZhbHVlID0gaXRlbQogICAgICAgICBpZiBzdWNjZXNzOgpAQCAtNzAwLDggKzY5Nyw3IEBACiAgICAgX19uZXh0X18gPSBuZXh0ICAgICAgICAgICAgICAgICAgICAjIFhYWAogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgb2JqKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBpOgogICAgICAgICAgICAgICAgIHNlbGYuX2l0ZW1zLmFwcGVuZChvYmopCiAgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQpAQCAtNzE1LDE4ICs3MTEsMTMgQEAKIAogICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIF9zZXRfbGVuZ3RoKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5fbGVuZ3RoID0gbGVuZ3RoCiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcF91bm9yZGVyZWQoKWAKQEAgLTczNSwxNSArNzI2LDEyIEBACiBjbGFzcyBJTWFwVW5vcmRlcmVkSXRlcmF0b3IoSU1hcEl0ZXJhdG9yKToKIAogICAgIGRlZiBfc2V0KHNlbGYsIGksIG9iaik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5faXRlbXMuYXBwZW5kKG9iaikKICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogIwogIwpAQCAtNzY5LDEwICs3NTcsNyBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2hlbHBfc3R1ZmZfZmluaXNoKGlucXVldWUsIHRhc2tfaGFuZGxlciwgc2l6ZSk6CiAgICAgICAgICMgcHV0IHNlbnRpbmVscyBhdCBoZWFkIG9mIGlucXVldWUgdG8gbWFrZSB3b3JrZXJzIGZpbmlzaAotICAgICAgICBpbnF1ZXVlLm5vdF9lbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIGlucXVldWUubm90X2VtcHR5OgogICAgICAgICAgICAgaW5xdWV1ZS5xdWV1ZS5jbGVhcigpCiAgICAgICAgICAgICBpbnF1ZXVlLnF1ZXVlLmV4dGVuZChbTm9uZV0gKiBzaXplKQogICAgICAgICAgICAgaW5xdWV1ZS5ub3RfZW1wdHkubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpbnF1ZXVlLm5vdF9lbXB0eS5yZWxlYXNlKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weQppbmRleCAzNjdlNzJlLi5kMmViZDdjIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmsucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3JrLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgZXJybm8KIAogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTI5LDggKzI4LDYgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgZmxhZykKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzIG5vdCB5ZXQgY3JlYXRlZC4gU2VlICMxNzMxNzE3CiAgICAgICAgICAgICAgICAgICAgICMgZS5lcnJubyA9PSBlcnJuby5FQ0hJTEQgPT0gMTAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggMjkzYWQ3Ni4uNzg2YTMwMyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTgyLDE0ICs4MiwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5fc2VtLmFjcXVpcmUoYmxvY2ssIHRpbWVvdXQpOgogICAgICAgICAgICAgcmFpc2UgRnVsbAogCi0gICAgICAgIHNlbGYuX25vdGVtcHR5LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fbm90ZW1wdHk6CiAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF90aHJlYWQoKQogICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChvYmopCiAgICAgICAgICAgICBzZWxmLl9ub3RlbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIGlmIGJsb2NrIGFuZCB0aW1lb3V0IGlzIE5vbmU6CkBAIC0yMDYsMTIgKzIwMyw5IEBACiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZmluYWxpemVfY2xvc2UoYnVmZmVyLCBub3RlbXB0eSk6CiAgICAgICAgIGRlYnVnKCd0ZWxsaW5nIHF1ZXVlIHRocmVhZCB0byBxdWl0JykKLSAgICAgICAgbm90ZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBub3RlbXB0eToKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoX3NlbnRpbmVsKQogICAgICAgICAgICAgbm90ZW1wdHkubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG5vdGVtcHR5LnJlbGVhc2UoKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kX2J5dGVzLCB3cml0ZWxvY2ssIGNsb3NlLCBpZ25vcmVfZXBpcGUpOgpAQCAtMzAwLDM1ICsyOTQsMjQgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NlbS5hY3F1aXJlKGJsb2NrLCB0aW1lb3V0KToKICAgICAgICAgICAgIHJhaXNlIEZ1bGwKIAotICAgICAgICBzZWxmLl9ub3RlbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX25vdGVtcHR5LCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnRfdGhyZWFkKCkKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQob2JqKQogICAgICAgICAgICAgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQotICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Rhc2tfZG9uZSgpIGNhbGxlZCB0b28gbWFueSB0aW1lcycpCiAgICAgICAgICAgICBpZiBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLl9zZW1sb2NrLl9pc196ZXJvKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgam9pbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5fc2VtbG9jay5faXNfemVybygpOgogICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjIFNpbXBsaWZpZWQgUXVldWUgdHlwZSAtLSByZWFsbHkganVzdCBhIGxvY2tlZCBwaXBlCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CmluZGV4IDBjMTc4MjUuLjQyNThmNTkgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CkBAIC0xODgsNiArMTg4LDEyIEBACiAgICAgICAgIHNlbGYuYWNxdWlyZSA9IHNlbGYuX2xvY2suYWNxdWlyZQogICAgICAgICBzZWxmLnJlbGVhc2UgPSBzZWxmLl9sb2NrLnJlbGVhc2UKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2V4aXRfXygqYXJncykKKwogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICAgcmV0dXJuIHN5bmNocm9uaXplZCwgKHNlbGYuX29iaiwgc2VsZi5fbG9jaykKQEAgLTIxMiwzMiArMjE4LDIwIEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5fb2JqKQogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9vYmpbaV0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaSwgdmFsdWUpOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHNlbGYuX29ialtpXSA9IHZhbHVlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAgICAgZGVmIF9fZ2V0c2xpY2VfXyhzZWxmLCBzdGFydCwgc3RvcCk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29ialtzdGFydDpzdG9wXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKIAogICAgIGRlZiBfX3NldHNsaWNlX18oc2VsZiwgc3RhcnQsIHN0b3AsIHZhbHVlcyk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgc2VsZi5fb2JqW3N0YXJ0OnN0b3BdID0gdmFsdWVzCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAKIGNsYXNzIFN5bmNocm9uaXplZFN0cmluZyhTeW5jaHJvbml6ZWRBcnJheSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQppbmRleCBkZWExY2JkLi5kNGJkZjBlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9zZW1sb2NrLl9nZXRfdmFsdWUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgdmFsdWUgPSAndW5rbm93bicKLSAgICAgICAgcmV0dXJuICc8U2VtYXBob3JlKHZhbHVlPSVzKT4nICUgdmFsdWUKKyAgICAgICAgcmV0dXJuICc8JXModmFsdWU9JXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlKQogCiAjCiAjIEJvdW5kZWQgc2VtYXBob3JlCkBAIC0xNTAsOCArMTUwLDggQEAKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHZhbHVlID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9JXMsIG1heHZhbHVlPSVzKT4nICUgXAotICAgICAgICAgICAgICAgKHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQorICAgICAgICByZXR1cm4gJzwlcyh2YWx1ZT0lcywgbWF4dmFsdWU9JXMpPicgJSBcCisgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQogCiAjCiAjIE5vbi1yZWN1cnNpdmUgbG9jawpAQCAtMTc2LDcgKzE3Niw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9ICdTb21lT3RoZXJQcm9jZXNzJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSA9ICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxMb2NrKG93bmVyPSVzKT4nICUgbmFtZQorICAgICAgICByZXR1cm4gJzwlcyhvd25lcj0lcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkKIAogIwogIyBSZWN1cnNpdmUgbG9jawpAQCAtMjAyLDcgKzIwMiw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSwgY291bnQgPSAnU29tZU90aGVyUHJvY2VzcycsICdub256ZXJvJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSwgY291bnQgPSAndW5rbm93bicsICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxSTG9jayglcywgJXMpPicgJSAobmFtZSwgY291bnQpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgY291bnQpCiAKICMKICMgQ29uZGl0aW9uIHZhcmlhYmxlCkBAIC0yNDMsNyArMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50Ll9zZW1sb2NrLl9nZXRfdmFsdWUoKSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIG51bV93YWl0ZXJzID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPENvbmRpdGlvbiglcywgJXMpPicgJSAoc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICBhc3NlcnQgc2VsZi5fbG9jay5fc2VtbG9jay5faXNfbWluZSgpLCBcCkBAIC0zMzcsMzQgKzMzNywyNCBAQAogICAgICAgICBzZWxmLl9mbGFnID0gY3R4LlNlbWFwaG9yZSgwKQogCiAgICAgZGVmIGlzX3NldChzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZsYWcucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5fZmxhZy5hY3F1aXJlKEZhbHNlKQogICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIGNsZWFyKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzQsOCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMgQmFycmllcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CmluZGV4IDBiNjk1ZTQuLmVhNTQ0M2QgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKQEAgLTIxMiwxMCArMjEyLDExIEBACiAgICAgICAgICAgICBvYmogPSBOb25lCiAKICAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gJzxGaW5hbGl6ZSBvYmplY3QsIGRlYWQ+JworICAgICAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0LCBkZWFkPicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogCi0gICAgICAgIHggPSAnPEZpbmFsaXplIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgXAotICAgICAgICAgICAgZ2V0YXR0cihzZWxmLl9jYWxsYmFjaywgJ19fbmFtZV9fJywgc2VsZi5fY2FsbGJhY2spCisgICAgICAgIHggPSAnPCVzIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZi5fY2FsbGJhY2ssICdfX25hbWVfXycsIHNlbGYuX2NhbGxiYWNrKSkKICAgICAgICAgaWYgc2VsZi5fYXJnczoKICAgICAgICAgICAgIHggKz0gJywgYXJncz0nICsgc3RyKHNlbGYuX2FyZ3MpCiAgICAgICAgIGlmIHNlbGYuX2t3YXJnczoKQEAgLTMyNyw2ICszMjgsMTMgQEAKICAgICAgICAgc2VsZi5hY3F1aXJlID0gc2VsZi5fbG9jay5hY3F1aXJlCiAgICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX2xvY2sucmVsZWFzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19lbnRlcl9fKCkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZXhpdF9fKCphcmdzKQorCisKIGNsYXNzIEZvcmtBd2FyZUxvY2FsKHRocmVhZGluZy5sb2NhbCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIGxhbWJkYSBvYmogOiBvYmouX19kaWN0X18uY2xlYXIoKSkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IDk5Mjk3MGEuLjljYzVjYTcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICAgICAiaXNtb3VudCIsICJleHBhbmR1c2VyIiwiZXhwYW5kdmFycyIsIm5vcm1wYXRoIiwiYWJzcGF0aCIsCiAgICAgICAgICAgICJzcGxpdHVuYyIsImN1cmRpciIsInBhcmRpciIsInNlcCIsInBhdGhzZXAiLCJkZWZwYXRoIiwiYWx0c2VwIiwKICAgICAgICAgICAgImV4dHNlcCIsImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCIsCi0gICAgICAgICAgICJzYW1lZmlsZSIsICJzYW1lb3BlbmZpbGUiLCAic2FtZXN0YXQiLF0KKyAgICAgICAgICAgInNhbWVmaWxlIiwgInNhbWVvcGVuZmlsZSIsICJzYW1lc3RhdCIsICJjb21tb25wYXRoIl0KIAogIyBzdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMKICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC0zMiw0OCArMzIsMTIgQEAKICAgICBkZWZwYXRoID0gJ1xcV2luZG93cycKIGRldm51bGwgPSAnbnVsJwogCi1kZWYgX2dldF9lbXB0eShwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJwotCi1kZWYgX2dldF9zZXAocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJ1xcJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnXFwnCi0KLWRlZiBfZ2V0X2FsdHNlcChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLycKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy8nCi0KIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICByZXR1cm4gYidcXC8nCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICdcXC8nCiAKLWRlZiBfZ2V0X2RvdChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLicKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy4nCi0KLWRlZiBfZ2V0X2NvbG9uKHBhdGgpOgotICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gYic6JwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnOicKLQotZGVmIF9nZXRfc3BlY2lhbChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCi0KICMgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUgYW5kIG1hcCBzbGFzaGVzIHRvIGJhY2tzbGFzaGVzLgogIyBPdGhlciBub3JtYWxpemF0aW9ucyAoc3VjaCBhcyBvcHRpbWl6aW5nICcuLi8nIGF3YXkpIGFyZSBub3QgZG9uZQogIyAodGhpcyBpcyBkb25lIGJ5IG5vcm1wYXRoKS4KQEAgLTgyLDEwICs0NiwxNiBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIHJldHVybiBzLnJlcGxhY2UoX2dldF9hbHRzZXAocyksIF9nZXRfc2VwKHMpKS5sb3dlcigpCisgICAgdHJ5OgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoYicvJywgYidcXCcpLmxvd2VyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoJy8nLCAnXFwnKS5sb3dlcigpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBzdHIpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJXIiICUgcy5fX2NsYXNzX18uX19uYW1lX18pIGZyb20gTm9uZQorICAgICAgICByYWlzZQogCiAKICMgUmV0dXJuIHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlLgpAQCAtOTcsNDAgKzY3LDUxIEBACiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCi0gICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbOjFdIGluIF9nZXRfYm90aHNlcHMocykKKyAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKLSAgICBjb2xvbiA9IF9nZXRfY29sb24ocGF0aCkKLSAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgIGZvciBwIGluIHBhdGhzOgotICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCi0gICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6Ci0gICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCi0gICAgICAgICAgICBpZiBwX2RyaXZlIG9yIG5vdCByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSBwX3BhdGgKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgcF9kcml2ZSBhbmQgcF9kcml2ZSAhPSByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICBpZiBwX2RyaXZlLmxvd2VyKCkgIT0gcmVzdWx0X2RyaXZlLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQotICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgc2VwcyA9IGInXFwvJworICAgICAgICBjb2xvbiA9IGInOicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIHNlcHMgPSAnXFwvJworICAgICAgICBjb2xvbiA9ICc6JworICAgIHRyeToKKyAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgorICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIHBfZHJpdmUsIHBfcGF0aCA9IHNwbGl0ZHJpdmUocCkKKyAgICAgICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6CisgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUgb3Igbm90IHJlc3VsdF9kcml2ZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQogICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgU2FtZSBkcml2ZSBpbiBkaWZmZXJlbnQgY2FzZQotICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAjIFNlY29uZCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdAotICAgICAgICBpZiByZXN1bHRfcGF0aCBhbmQgcmVzdWx0X3BhdGhbLTFdIG5vdCBpbiBzZXBzOgotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAotICAgICAgICByZXN1bHRfcGF0aCA9IHJlc3VsdF9wYXRoICsgcF9wYXRoCi0gICAgIyMgYWRkIHNlcGFyYXRvciBiZXR3ZWVuIFVOQyBhbmQgbm9uLWFic29sdXRlIHBhdGgKLSAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAotICAgICAgICByZXN1bHRfZHJpdmUgYW5kIHJlc3VsdF9kcml2ZVstMTpdICE9IGNvbG9uKToKLSAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHNlcCArIHJlc3VsdF9wYXRoCi0gICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgICAgICAgICBlbGlmIHBfZHJpdmUgYW5kIHBfZHJpdmUgIT0gcmVzdWx0X2RyaXZlOgorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUubG93ZXIoKSAhPSByZXN1bHRfZHJpdmUubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQorICAgICAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBTYW1lIGRyaXZlIGluIGRpZmZlcmVudCBjYXNlCisgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQorICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QKKyAgICAgICAgICAgIGlmIHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFstMV0gbm90IGluIHNlcHM6CisgICAgICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAorICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHBfcGF0aAorICAgICAgICAjIyBhZGQgc2VwYXJhdG9yIGJldHdlZW4gVU5DIGFuZCBub24tYWJzb2x1dGUgcGF0aAorICAgICAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAorICAgICAgICAgICAgcmVzdWx0X2RyaXZlIGFuZCByZXN1bHRfZHJpdmVbLTE6XSAhPSBjb2xvbik6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0X2RyaXZlICsgc2VwICsgcmVzdWx0X3BhdGgKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcGF0aCwgKnBhdGhzKQorICAgICAgICByYWlzZQogCiAKICMgU3BsaXQgYSBwYXRoIGluIGEgZHJpdmUgc3BlY2lmaWNhdGlvbiAoYSBkcml2ZSBsZXR0ZXIgZm9sbG93ZWQgYnkgYQpAQCAtMTU1LDEwICsxMzYsMTYgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCi0gICAgZW1wdHkgPSBfZ2V0X2VtcHR5KHApCi0gICAgaWYgbGVuKHApID4gMToKLSAgICAgICAgc2VwID0gX2dldF9zZXAocCkKLSAgICAgICAgbm9ybXAgPSBwLnJlcGxhY2UoX2dldF9hbHRzZXAocCksIHNlcCkKKyAgICBpZiBsZW4ocCkgPj0gMjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CisgICAgICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICAgICAgYWx0c2VwID0gYicvJworICAgICAgICAgICAgY29sb24gPSBiJzonCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgICAgICBhbHRzZXAgPSAnLycKKyAgICAgICAgICAgIGNvbG9uID0gJzonCisgICAgICAgIG5vcm1wID0gcC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgICAgICBpZiAobm9ybXBbMDoyXSA9PSBzZXAqMikgYW5kIChub3JtcFsyOjNdICE9IHNlcCk6CiAgICAgICAgICAgICAjIGlzIGEgVU5DIHBhdGg6CiAgICAgICAgICAgICAjIHZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2IGRyaXZlIGxldHRlciBvciBVTkMgcGF0aApAQCAtMTY2LDE4ICsxNTMsMTggQEAKICAgICAgICAgICAgICMgICAgICAgICAgIGRpcmVjdG9yeSBeXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICAgIGluZGV4ID0gbm9ybXAuZmluZChzZXAsIDIpCiAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGluZGV4MiA9IG5vcm1wLmZpbmQoc2VwLCBpbmRleCArIDEpCiAgICAgICAgICAgICAjIGEgVU5DIHBhdGggY2FuJ3QgaGF2ZSB0d28gc2xhc2hlcyBpbiBhIHJvdwogICAgICAgICAgICAgIyAoYWZ0ZXIgdGhlIGluaXRpYWwgdHdvKQogICAgICAgICAgICAgaWYgaW5kZXgyID09IGluZGV4ICsgMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGlmIGluZGV4MiA9PSAtMToKICAgICAgICAgICAgICAgICBpbmRleDIgPSBsZW4ocCkKICAgICAgICAgICAgIHJldHVybiBwWzppbmRleDJdLCBwW2luZGV4MjpdCi0gICAgICAgIGlmIG5vcm1wWzE6Ml0gPT0gX2dldF9jb2xvbihwKToKKyAgICAgICAgaWYgbm9ybXBbMToyXSA9PSBjb2xvbjoKICAgICAgICAgICAgIHJldHVybiBwWzoyXSwgcFsyOl0KLSAgICByZXR1cm4gZW1wdHksIHAKKyAgICByZXR1cm4gcFs6MF0sIHAKIAogCiAjIFBhcnNlIFVOQyBwYXRocwpAQCAtMjIxLDEwICsyMDgsNyBAQAogICAgICAgICBpIC09IDEKICAgICBoZWFkLCB0YWlsID0gcFs6aV0sIHBbaTpdICAjIG5vdyB0YWlsIGhhcyBubyBzbGFzaGVzCiAgICAgIyByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIGhlYWQsIHVubGVzcyBpdCdzIGFsbCBzbGFzaGVzCi0gICAgaGVhZDIgPSBoZWFkCi0gICAgd2hpbGUgaGVhZDIgYW5kIGhlYWQyWy0xOl0gaW4gc2VwczoKLSAgICAgICAgaGVhZDIgPSBoZWFkMls6LTFdCi0gICAgaGVhZCA9IGhlYWQyIG9yIGhlYWQKKyAgICBoZWFkID0gaGVhZC5yc3RyaXAoc2Vwcykgb3IgaGVhZAogICAgIHJldHVybiBkICsgaGVhZCwgdGFpbAogCiAKQEAgLTIzNCw4ICsyMTgsMTAgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKLSAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIF9nZXRfc2VwKHApLCBfZ2V0X2FsdHNlcChwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZG90KHApKQorICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgorICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIGInXFwnLCBiJy8nLCBiJy4nKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgJ1xcJywgJy8nLCAnLicpCiBzcGxpdGV4dC5fX2RvY19fID0gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0Ll9fZG9jX18KIAogCkBAIC0zNDMsNyArMzI5LDcgQEAKICAgICAgICAgdXNlcmhvbWUgPSBqb2luKGRyaXZlLCBvcy5lbnZpcm9uWydIT01FUEFUSCddKQogCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHVzZXJob21lID0gdXNlcmhvbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgdXNlcmhvbWUgPSBvcy5mc2VuY29kZSh1c2VyaG9tZSkKIAogICAgIGlmIGkgIT0gMTogI351c2VyCiAgICAgICAgIHVzZXJob21lID0gam9pbihkaXJuYW1lKHVzZXJob21lKSwgcGF0aFsxOmldKQpAQCAtMzY5LDEzICszNTUsMTQgQEAKIAogICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgaWYgb3JkKCckJykgbm90IGluIHBhdGggYW5kIG9yZCgnJScpIG5vdCBpbiBwYXRoOgorICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgaW1wb3J0IHN0cmluZwogICAgICAgICB2YXJjaGFycyA9IGJ5dGVzKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfLScsICdhc2NpaScpCiAgICAgICAgIHF1b3RlID0gYidcJycKICAgICAgICAgcGVyY2VudCA9IGInJScKICAgICAgICAgYnJhY2UgPSBiJ3snCisgICAgICAgIHJicmFjZSA9IGInfScKICAgICAgICAgZG9sbGFyID0gYickJwogICAgICAgICBlbnZpcm9uID0gZ2V0YXR0cihvcywgJ2Vudmlyb25iJywgTm9uZSkKICAgICBlbHNlOgpAQCAtMzg2LDYgKzM3Myw3IEBACiAgICAgICAgIHF1b3RlID0gJ1wnJwogICAgICAgICBwZXJjZW50ID0gJyUnCiAgICAgICAgIGJyYWNlID0gJ3snCisgICAgICAgIHJicmFjZSA9ICd9JwogICAgICAgICBkb2xsYXIgPSAnJCcKICAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KICAgICByZXMgPSBwYXRoWzowXQpAQCAtNDMyLDE1ICs0MjAsOSBAQAogICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2luZGV4KzI6XQogICAgICAgICAgICAgICAgIHBhdGhsZW4gPSBsZW4ocGF0aCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRoLmluZGV4KGInfScpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgoJ30nKQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgocmJyYWNlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBiJyR7JyArIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAnJHsnICsgcGF0aAorICAgICAgICAgICAgICAgICAgICByZXMgKz0gZG9sbGFyICsgYnJhY2UgKyBwYXRoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aGxlbiAtIDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzppbmRleF0KQEAgLTQ1MCwxMCArNDMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlbnZpcm9uW3Zhcl0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBiJyR7JyArIHZhciArIGInfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnJHsnICsgdmFyICsgJ30nCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvbGxhciArIGJyYWNlICsgdmFyICsgcmJyYWNlCiAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB2YWx1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzowXQpAQCAtNDg1LDE2ICs0NjQsMjUgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgZG90ZG90ID0gX2dldF9kb3QocGF0aCkgKiAyCi0gICAgc3BlY2lhbF9wcmVmaXhlcyA9IF9nZXRfc3BlY2lhbChwYXRoKQorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgc3BlY2lhbF9wcmVmaXhlcyA9IChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQorICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworICAgICAgICBwYXJkaXIgPSAnLi4nCisgICAgICAgIHNwZWNpYWxfcHJlZml4ZXMgPSAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCiAgICAgaWYgcGF0aC5zdGFydHN3aXRoKHNwZWNpYWxfcHJlZml4ZXMpOgogICAgICAgICAjIGluIHRoZSBjYXNlIG9mIHBhdGhzIHdpdGggdGhlc2UgcHJlZml4ZXM6CiAgICAgICAgICMgXFwuXCAtPiBkZXZpY2UgbmFtZXMKICAgICAgICAgIyBcXD9cIC0+IGxpdGVyYWwgcGF0aHMKICAgICAgICAgIyBkbyBub3QgZG8gYW55IG5vcm1hbGl6YXRpb24sIGJ1dCByZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkCiAgICAgICAgIHJldHVybiBwYXRoCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZShfZ2V0X2FsdHNlcChwYXRoKSwgc2VwKQorICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYWx0c2VwLCBzZXApCiAgICAgcHJlZml4LCBwYXRoID0gc3BsaXRkcml2ZShwYXRoKQogCiAgICAgIyBjb2xsYXBzZSBpbml0aWFsIGJhY2tzbGFzaGVzCkBAIC01MDUsMTMgKzQ5MywxMyBAQAogICAgIGNvbXBzID0gcGF0aC5zcGxpdChzZXApCiAgICAgaSA9IDAKICAgICB3aGlsZSBpIDwgbGVuKGNvbXBzKToKLSAgICAgICAgaWYgbm90IGNvbXBzW2ldIG9yIGNvbXBzW2ldID09IF9nZXRfZG90KHBhdGgpOgorICAgICAgICBpZiBub3QgY29tcHNbaV0gb3IgY29tcHNbaV0gPT0gY3VyZGlyOgogICAgICAgICAgICAgZGVsIGNvbXBzW2ldCi0gICAgICAgIGVsaWYgY29tcHNbaV0gPT0gZG90ZG90OgotICAgICAgICAgICAgaWYgaSA+IDAgYW5kIGNvbXBzW2ktMV0gIT0gZG90ZG90OgorICAgICAgICBlbGlmIGNvbXBzW2ldID09IHBhcmRpcjoKKyAgICAgICAgICAgIGlmIGkgPiAwIGFuZCBjb21wc1tpLTFdICE9IHBhcmRpcjoKICAgICAgICAgICAgICAgICBkZWwgY29tcHNbaS0xOmkrMV0KICAgICAgICAgICAgICAgICBpIC09IDEKLSAgICAgICAgICAgIGVsaWYgaSA9PSAwIGFuZCBwcmVmaXguZW5kc3dpdGgoX2dldF9zZXAocGF0aCkpOgorICAgICAgICAgICAgZWxpZiBpID09IDAgYW5kIHByZWZpeC5lbmRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgIGRlbCBjb21wc1tpXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpICs9IDEKQEAgLTUxOSw3ICs1MDcsNyBAQAogICAgICAgICAgICAgaSArPSAxCiAgICAgIyBJZiB0aGUgcGF0aCBpcyBub3cgZW1wdHksIHN1YnN0aXR1dGUgJy4nCiAgICAgaWYgbm90IHByZWZpeCBhbmQgbm90IGNvbXBzOgotICAgICAgICBjb21wcy5hcHBlbmQoX2dldF9kb3QocGF0aCkpCisgICAgICAgIGNvbXBzLmFwcGVuZChjdXJkaXIpCiAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbXBzKQogCiAKQEAgLTU1OSw0MiArNTQ3LDEwOSBAQAogc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgPSAoaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbM10gPj0gMikKIAotZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Y3VyZGlyKToKK2RlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PU5vbmUpOgogICAgICIiIlJldHVybiBhIHJlbGF0aXZlIHZlcnNpb24gb2YgYSBwYXRoIiIiCi0gICAgc2VwID0gX2dldF9zZXAocGF0aCkKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgY3VyZGlyID0gYicuJworICAgICAgICBwYXJkaXIgPSBiJy4uJworICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgY3VyZGlyID0gJy4nCisgICAgICAgIHBhcmRpciA9ICcuLicKIAotICAgIGlmIHN0YXJ0IGlzIGN1cmRpcjoKLSAgICAgICAgc3RhcnQgPSBfZ2V0X2RvdChwYXRoKQorICAgIGlmIHN0YXJ0IGlzIE5vbmU6CisgICAgICAgIHN0YXJ0ID0gY3VyZGlyCiAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCi0gICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCi0gICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQotICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCi0gICAgcGF0aF9kcml2ZSwgcGF0aF9yZXN0ID0gc3BsaXRkcml2ZShwYXRoX2FicykKLSAgICBpZiBub3JtY2FzZShzdGFydF9kcml2ZSkgIT0gbm9ybWNhc2UocGF0aF9kcml2ZSk6Ci0gICAgICAgIGVycm9yID0gInBhdGggaXMgb24gbW91bnQgJ3swfScsIHN0YXJ0IG9uIG1vdW50ICd7MX0nIi5mb3JtYXQoCi0gICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJvcikKKyAgICB0cnk6CisgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQorICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCisgICAgICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCisgICAgICAgIHBhdGhfZHJpdmUsIHBhdGhfcmVzdCA9IHNwbGl0ZHJpdmUocGF0aF9hYnMpCisgICAgICAgIGlmIG5vcm1jYXNlKHN0YXJ0X2RyaXZlKSAhPSBub3JtY2FzZShwYXRoX2RyaXZlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgb24gbW91bnQgJXIsIHN0YXJ0IG9uIG1vdW50ICVyIiAlICgKKyAgICAgICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkpCiAKLSAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gc3RhcnRfcmVzdC5zcGxpdChzZXApIGlmIHhdCi0gICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KLSAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCi0gICAgaSA9IDAKLSAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgotICAgICAgICBpZiBub3JtY2FzZShlMSkgIT0gbm9ybWNhc2UoZTIpOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaSArPSAxCisgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBzdGFydF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgorICAgICAgICBpID0gMAorICAgICAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgorICAgICAgICAgICAgaWYgbm9ybWNhc2UoZTEpICE9IG5vcm1jYXNlKGUyKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCiAKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCisgICAgICAgIGlmIG5vdCByZWxfbGlzdDoKKyAgICAgICAgICAgIHJldHVybiBjdXJkaXIKKyAgICAgICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdyZWxwYXRoJywgcGF0aCwgc3RhcnQpCisgICAgICAgIHJhaXNlCisKKworIyBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIHRoZSBzZXF1ZW5jZSBvZiBwYXRocyBnaXZlbiBhcyBpbnB1dC4KKyMgVGhlIGZ1bmN0aW9uIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kICdzZXBhcmF0b3ItaW5zZW5zaXRpdmUnLCBpLmUuIGlmIHRoZQorIyBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gcGF0aHMgaXMgdGhlIHVzZSBvZiAnXCcgdmVyc3VzICcvJyBhcyBzZXBhcmF0b3IsCisjIHRoZXkgYXJlIGRlZW1lZCB0byBiZSBlcXVhbC4KKyMKKyMgSG93ZXZlciwgdGhlIHJldHVybmVkIHBhdGggd2lsbCBoYXZlIHRoZSBzdGFuZGFyZCAnXCcgc2VwYXJhdG9yIChldmVuIGlmIHRoZQorIyBnaXZlbiBwYXRocyBoYWQgdGhlIGFsdGVybmF0aXZlICcvJyBzZXBhcmF0b3IpIGFuZCB3aWxsIGhhdmUgdGhlIGNhc2Ugb2YgdGhlCisjIGZpcnN0IHBhdGggZ2l2ZW4gaW4gdGhlIHNlcXVlbmNlLiBBZGRpdGlvbmFsbHksIGFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMKKyMgc3RyaXBwZWQgZnJvbSB0aGUgcmV0dXJuZWQgcGF0aC4KKworZGVmIGNvbW1vbnBhdGgocGF0aHMpOgorICAgICIiIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguIiIiCisKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQorCisgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKICAgICBlbHNlOgotICAgICAgICBwYXJkaXIgPSAnLi4nCi0gICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCi0gICAgaWYgbm90IHJlbF9saXN0OgotICAgICAgICByZXR1cm4gX2dldF9kb3QocGF0aCkKLSAgICByZXR1cm4gam9pbigqcmVsX2xpc3QpCisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworCisgICAgdHJ5OgorICAgICAgICBkcml2ZXNwbGl0cyA9IFtzcGxpdGRyaXZlKHAucmVwbGFjZShhbHRzZXAsIHNlcCkubG93ZXIoKSkgZm9yIHAgaW4gcGF0aHNdCisgICAgICAgIHNwbGl0X3BhdGhzID0gW3Auc3BsaXQoc2VwKSBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0c10KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMiKSBmcm9tIE5vbmUKKworICAgICAgICAjIENoZWNrIHRoYXQgYWxsIGRyaXZlIGxldHRlcnMgb3IgVU5DIHBhdGhzIG1hdGNoLiBUaGUgY2hlY2sgaXMgbWFkZSBvbmx5CisgICAgICAgICMgbm93IG90aGVyd2lzZSB0eXBlIGVycm9ycyBmb3IgbWl4aW5nIHN0cmluZ3MgYW5kIGJ5dGVzIHdvdWxkIG5vdCBiZQorICAgICAgICAjIGNhdWdodC4KKyAgICAgICAgaWYgbGVuKHNldChkIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBhdGhzIGRvbid0IGhhdmUgdGhlIHNhbWUgZHJpdmUiKQorCisgICAgICAgIGRyaXZlLCBwYXRoID0gc3BsaXRkcml2ZShwYXRoc1swXS5yZXBsYWNlKGFsdHNlcCwgc2VwKSkKKyAgICAgICAgY29tbW9uID0gcGF0aC5zcGxpdChzZXApCisgICAgICAgIGNvbW1vbiA9IFtjIGZvciBjIGluIGNvbW1vbiBpZiBjIGFuZCBjICE9IGN1cmRpcl0KKworICAgICAgICBzcGxpdF9wYXRocyA9IFtbYyBmb3IgYyBpbiBzIGlmIGMgYW5kIGMgIT0gY3VyZGlyXSBmb3IgcyBpbiBzcGxpdF9wYXRoc10KKyAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCisgICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgorICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKKyAgICAgICAgICAgICAgICBjb21tb24gPSBjb21tb25bOmldCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1vbiA9IGNvbW1vbls6bGVuKHMxKV0KKworICAgICAgICBwcmVmaXggPSBkcml2ZSArIHNlcCBpZiBpc2FicyBlbHNlIGRyaXZlCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21tb24pCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnY29tbW9ucGF0aCcsICpwYXRocykKKyAgICAgICAgcmFpc2UKIAogCiAjIGRldGVybWluZSBpZiB0d28gZmlsZXMgYXJlIGluIGZhY3QgdGhlIHNhbWUgZmlsZQpkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggMGJkMWVlNi4uYzdiMzQ0MyAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC03MCw2ICs3MCw5IEBACiAKIGRlZl9vcCgnVU5BUllfSU5WRVJUJywgMTUpCiAKK2RlZl9vcCgnQklOQVJZX01BVFJJWF9NVUxUSVBMWScsIDE2KQorZGVmX29wKCdJTlBMQUNFX01BVFJJWF9NVUxUSVBMWScsIDE3KQorCiBkZWZfb3AoJ0JJTkFSWV9QT1dFUicsIDE5KQogZGVmX29wKCdCSU5BUllfTVVMVElQTFknLCAyMCkKIApAQCAtODIsNyArODUsMTAgQEAKIGRlZl9vcCgnSU5QTEFDRV9GTE9PUl9ESVZJREUnLCAyOCkKIGRlZl9vcCgnSU5QTEFDRV9UUlVFX0RJVklERScsIDI5KQogCi1kZWZfb3AoJ1NUT1JFX01BUCcsIDU0KQorZGVmX29wKCdHRVRfQUlURVInLCA1MCkKK2RlZl9vcCgnR0VUX0FORVhUJywgNTEpCitkZWZfb3AoJ0JFRk9SRV9BU1lOQ19XSVRIJywgNTIpCisKIGRlZl9vcCgnSU5QTEFDRV9BREQnLCA1NSkKIGRlZl9vcCgnSU5QTEFDRV9TVUJUUkFDVCcsIDU2KQogZGVmX29wKCdJTlBMQUNFX01VTFRJUExZJywgNTcpCkBAIC0xMDEsNiArMTA3LDcgQEAKIGRlZl9vcCgnUFJJTlRfRVhQUicsIDcwKQogZGVmX29wKCdMT0FEX0JVSUxEX0NMQVNTJywgNzEpCiBkZWZfb3AoJ1lJRUxEX0ZST00nLCA3MikKK2RlZl9vcCgnR0VUX0FXQUlUQUJMRScsIDczKQogCiBkZWZfb3AoJ0lOUExBQ0VfTFNISUZUJywgNzUpCiBkZWZfb3AoJ0lOUExBQ0VfUlNISUZUJywgNzYpCkBAIC0xMDgsNyArMTE1LDggQEAKIGRlZl9vcCgnSU5QTEFDRV9YT1InLCA3OCkKIGRlZl9vcCgnSU5QTEFDRV9PUicsIDc5KQogZGVmX29wKCdCUkVBS19MT09QJywgODApCi1kZWZfb3AoJ1dJVEhfQ0xFQU5VUCcsIDgxKQorZGVmX29wKCdXSVRIX0NMRUFOVVBfU1RBUlQnLCA4MSkKK2RlZl9vcCgnV0lUSF9DTEVBTlVQX0ZJTklTSCcsIDgyKQogCiBkZWZfb3AoJ1JFVFVSTl9WQUxVRScsIDgzKQogZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQpAQCAtMTk0LDcgKzIwMiwxNSBAQAogZGVmX29wKCdMT0FEX0NMQVNTREVSRUYnLCAxNDgpCiBoYXNmcmVlLmFwcGVuZCgxNDgpCiAKK2pyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCisKIGRlZl9vcCgnRVhURU5ERURfQVJHJywgMTQ0KQogRVhURU5ERURfQVJHID0gMTQ0CiAKK2RlZl9vcCgnQlVJTERfTElTVF9VTlBBQ0snLCAxNDkpCitkZWZfb3AoJ0JVSUxEX01BUF9VTlBBQ0snLCAxNTApCitkZWZfb3AoJ0JVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMJywgMTUxKQorZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0snLCAxNTIpCitkZWZfb3AoJ0JVSUxEX1NFVF9VTlBBQ0snLCAxNTMpCisKIGRlbCBkZWZfb3AsIG5hbWVfb3AsIGpyZWxfb3AsIGphYnNfb3AKZGlmZiAtLWdpdCBhL0xpYi9vcGVyYXRvci5weSBiL0xpYi9vcGVyYXRvci5weQppbmRleCBiNjAzNDlmLi4wZTJlNTNlIDEwMDY0NAotLS0gYS9MaWIvb3BlcmF0b3IucHkKKysrIGIvTGliL29wZXJhdG9yLnB5CkBAIC0xMiwxMiArMTIsMTIgQEAKIAogX19hbGxfXyA9IFsnYWJzJywgJ2FkZCcsICdhbmRfJywgJ2F0dHJnZXR0ZXInLCAnY29uY2F0JywgJ2NvbnRhaW5zJywgJ2NvdW50T2YnLAogICAgICAgICAgICAnZGVsaXRlbScsICdlcScsICdmbG9vcmRpdicsICdnZScsICdnZXRpdGVtJywgJ2d0JywgJ2lhZGQnLCAnaWFuZCcsCi0gICAgICAgICAgICdpY29uY2F0JywgJ2lmbG9vcmRpdicsICdpbHNoaWZ0JywgJ2ltb2QnLCAnaW11bCcsICdpbmRleCcsCi0gICAgICAgICAgICdpbmRleE9mJywgJ2ludicsICdpbnZlcnQnLCAnaW9yJywgJ2lwb3cnLCAnaXJzaGlmdCcsICdpc18nLAotICAgICAgICAgICAnaXNfbm90JywgJ2lzdWInLCAnaXRlbWdldHRlcicsICdpdHJ1ZWRpdicsICdpeG9yJywgJ2xlJywKLSAgICAgICAgICAgJ2xlbmd0aF9oaW50JywgJ2xzaGlmdCcsICdsdCcsICdtZXRob2RjYWxsZXInLCAnbW9kJywgJ211bCcsICduZScsCi0gICAgICAgICAgICduZWcnLCAnbm90XycsICdvcl8nLCAncG9zJywgJ3BvdycsICdyc2hpZnQnLCAnc2V0aXRlbScsICdzdWInLAotICAgICAgICAgICAndHJ1ZWRpdicsICd0cnV0aCcsICd4b3InXQorICAgICAgICAgICAnaWNvbmNhdCcsICdpZmxvb3JkaXYnLCAnaWxzaGlmdCcsICdpbWF0bXVsJywgJ2ltb2QnLCAnaW11bCcsCisgICAgICAgICAgICdpbmRleCcsICdpbmRleE9mJywgJ2ludicsICdpbnZlcnQnLCAnaW9yJywgJ2lwb3cnLCAnaXJzaGlmdCcsCisgICAgICAgICAgICdpc18nLCAnaXNfbm90JywgJ2lzdWInLCAnaXRlbWdldHRlcicsICdpdHJ1ZWRpdicsICdpeG9yJywgJ2xlJywKKyAgICAgICAgICAgJ2xlbmd0aF9oaW50JywgJ2xzaGlmdCcsICdsdCcsICdtYXRtdWwnLCAnbWV0aG9kY2FsbGVyJywgJ21vZCcsCisgICAgICAgICAgICdtdWwnLCAnbmUnLCAnbmVnJywgJ25vdF8nLCAnb3JfJywgJ3BvcycsICdwb3cnLCAncnNoaWZ0JywKKyAgICAgICAgICAgJ3NldGl0ZW0nLCAnc3ViJywgJ3RydWVkaXYnLCAndHJ1dGgnLCAneG9yJ10KIAogZnJvbSBidWlsdGlucyBpbXBvcnQgYWJzIGFzIF9hYnMKIApAQCAtMTA1LDYgKzEwNSwxMCBAQAogICAgICJTYW1lIGFzIGEgKiBiLiIKICAgICByZXR1cm4gYSAqIGIKIAorZGVmIG1hdG11bChhLCBiKToKKyAgICAiU2FtZSBhcyBhIEAgYi4iCisgICAgcmV0dXJuIGEgQCBiCisKIGRlZiBuZWcoYSk6CiAgICAgIlNhbWUgYXMgLWEuIgogICAgIHJldHVybiAtYQpAQCAtMjI3LDEwICsyMzEsMTMgQEAKICAgICBBZnRlciBoID0gYXR0cmdldHRlcignbmFtZS5maXJzdCcsICduYW1lLmxhc3QnKSwgdGhlIGNhbGwgaChyKSByZXR1cm5zCiAgICAgKHIubmFtZS5maXJzdCwgci5uYW1lLmxhc3QpLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICgnX2F0dHJzJywgJ19jYWxsJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRyLCAqYXR0cnMpOgogICAgICAgICBpZiBub3QgYXR0cnM6CiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLCBzdHIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXR0cmlidXRlIG5hbWUgbXVzdCBiZSBhIHN0cmluZycpCisgICAgICAgICAgICBzZWxmLl9hdHRycyA9IChhdHRyLCkKICAgICAgICAgICAgIG5hbWVzID0gYXR0ci5zcGxpdCgnLicpCiAgICAgICAgICAgICBkZWYgZnVuYyhvYmopOgogICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpAQCAtMjM4LDcgKzI0NSw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG9iagogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgKGF0dHIsKSArIGF0dHJzKSkKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0gKGF0dHIsKSArIGF0dHJzCisgICAgICAgICAgICBnZXR0ZXJzID0gdHVwbGUobWFwKGF0dHJnZXR0ZXIsIHNlbGYuX2F0dHJzKSkKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKGdldHRlcihvYmopIGZvciBnZXR0ZXIgaW4gZ2V0dGVycykKICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCkBAIC0yNDYsMTkgKzI1NCwzMCBAQAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbChvYmopCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMuJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKG1hcChyZXByLCBzZWxmLl9hdHRycykpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgc2VsZi5fYXR0cnMKKwogY2xhc3MgaXRlbWdldHRlcjoKICAgICAiIiIKICAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBmZXRjaGVzIHRoZSBnaXZlbiBpdGVtKHMpIGZyb20gaXRzIG9wZXJhbmQuCiAgICAgQWZ0ZXIgZiA9IGl0ZW1nZXR0ZXIoMiksIHRoZSBjYWxsIGYocikgcmV0dXJucyByWzJdLgogICAgIEFmdGVyIGcgPSBpdGVtZ2V0dGVyKDIsIDUsIDMpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMgKHJbMl0sIHJbNV0sIHJbM10pCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfaXRlbXMnLCAnX2NhbGwnKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW0sICppdGVtcyk6CiAgICAgICAgIGlmIG5vdCBpdGVtczoKKyAgICAgICAgICAgIHNlbGYuX2l0ZW1zID0gKGl0ZW0sKQogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gb2JqW2l0ZW1dCiAgICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaXRlbXMgPSAoaXRlbSwpICsgaXRlbXMKKyAgICAgICAgICAgIHNlbGYuX2l0ZW1zID0gaXRlbXMgPSAoaXRlbSwpICsgaXRlbXMKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG9ialtpXSBmb3IgaSBpbiBpdGVtcykKICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCkBAIC0yNjYsNiArMjg1LDE0IEBACiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKG9iaikKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihtYXAocmVwciwgc2VsZi5faXRlbXMpKSkKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIHNlbGYuX2l0ZW1zCisKIGNsYXNzIG1ldGhvZGNhbGxlcjoKICAgICAiIiIKICAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBjYWxscyB0aGUgZ2l2ZW4gbWV0aG9kIG9uIGl0cyBvcGVyYW5kLgpAQCAtMjczLDYgKzMwMCw3IEBACiAgICAgQWZ0ZXIgZyA9IG1ldGhvZGNhbGxlcignbmFtZScsICdkYXRlJywgZm9vPTEpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMKICAgICByLm5hbWUoJ2RhdGUnLCBmb289MSkuCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfYXJncycsICdfa3dhcmdzJykKIAogICAgIGRlZiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiBsZW4oYXJncykgPCAyOgpAQCAtMjgwLDEyICszMDgsMzAgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgIHNlbGYgPSBhcmdzWzBdCiAgICAgICAgIHNlbGYuX25hbWUgPSBhcmdzWzFdCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuX25hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21ldGhvZCBuYW1lIG11c3QgYmUgYSBzdHJpbmcnKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJnc1syOl0KICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKICAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCBzZWxmLl9uYW1lKSgqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLl9uYW1lKV0KKyAgICAgICAgYXJncy5leHRlbmQobWFwKHJlcHIsIHNlbGYuX2FyZ3MpKQorICAgICAgICBhcmdzLmV4dGVuZCgnJXM9JXInICUgKGssIHYpIGZvciBrLCB2IGluIHNlbGYuX2t3YXJncy5pdGVtcygpKQorICAgICAgICByZXR1cm4gJyVzLiVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKGFyZ3MpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9rd2FyZ3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLl9uYW1lLCkgKyBzZWxmLl9hcmdzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorICAgICAgICAgICAgcmV0dXJuIHBhcnRpYWwoc2VsZi5fX2NsYXNzX18sIHNlbGYuX25hbWUsICoqc2VsZi5fa3dhcmdzKSwgc2VsZi5fYXJncworCisKICMgSW4tcGxhY2UgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiojCiAKIGRlZiBpYWRkKGEsIGIpOgpAQCAtMzI2LDYgKzM3MiwxMSBAQAogICAgIGEgKj0gYgogICAgIHJldHVybiBhCiAKK2RlZiBpbWF0bXVsKGEsIGIpOgorICAgICJTYW1lIGFzIGEgQD0gYi4iCisgICAgYSBAPSBiCisgICAgcmV0dXJuIGEKKwogZGVmIGlvcihhLCBiKToKICAgICAiU2FtZSBhcyBhIHw9IGIuIgogICAgIGEgfD0gYgpAQCAtMzgzLDYgKzQzNCw3IEBACiBfX2xzaGlmdF9fID0gbHNoaWZ0CiBfX21vZF9fID0gbW9kCiBfX211bF9fID0gbXVsCitfX21hdG11bF9fID0gbWF0bXVsCiBfX25lZ19fID0gbmVnCiBfX29yX18gPSBvcl8KIF9fcG9zX18gPSBwb3MKQEAgLTQwMyw2ICs0NTUsNyBAQAogX19pbHNoaWZ0X18gPSBpbHNoaWZ0CiBfX2ltb2RfXyA9IGltb2QKIF9faW11bF9fID0gaW11bAorX19pbWF0bXVsX18gPSBpbWF0bXVsCiBfX2lvcl9fID0gaW9yCiBfX2lwb3dfXyA9IGlwb3cKIF9faXJzaGlmdF9fID0gaXJzaGlmdApkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IGE4ZjZhMGIuLjNkMmM2ZDMgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTYxLDYgKzYxLDEwIEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKKyAgICBpbXBvcnQgcG9zaXgKKyAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCisgICAgZGVsIHBvc2l4CisKIGVsaWYgJ250JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdudCcKICAgICBsaW5lc2VwID0gJ1xyXG4nCkBAIC0zMTksNyArMzIzLDcgQEAKICAgICB0aGUgdmFsdWUgb2YgdG9wZG93biwgdGhlIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgaXMgcmV0cmlldmVkIGJlZm9yZSB0aGUKICAgICB0dXBsZXMgZm9yIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBzdWJkaXJlY3RvcmllcyBhcmUgZ2VuZXJhdGVkLgogCi0gICAgQnkgZGVmYXVsdCBlcnJvcnMgZnJvbSB0aGUgb3MubGlzdGRpcigpIGNhbGwgYXJlIGlnbm9yZWQuICBJZgorICAgIEJ5IGRlZmF1bHQgZXJyb3JzIGZyb20gdGhlIG9zLnNjYW5kaXIoKSBjYWxsIGFyZSBpZ25vcmVkLiAgSWYKICAgICBvcHRpb25hbCBhcmcgJ29uZXJyb3InIGlzIHNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb247IGl0CiAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQsIGFuIE9TRXJyb3IgaW5zdGFuY2UuICBJdCBjYW4KICAgICByZXBvcnQgdGhlIGVycm9yIHRvIGNvbnRpbnVlIHdpdGggdGhlIHdhbGssIG9yIHJhaXNlIHRoZSBleGNlcHRpb24KQEAgLTM0OCw3ICszNTIsOCBAQAogCiAgICAgIiIiCiAKLSAgICBpc2xpbmssIGpvaW4sIGlzZGlyID0gcGF0aC5pc2xpbmssIHBhdGguam9pbiwgcGF0aC5pc2RpcgorICAgIGRpcnMgPSBbXQorICAgIG5vbmRpcnMgPSBbXQogCiAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICAjIGdldCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoZSBkaXJlY3RvcnkgY29udGFpbnMuICBvcy53YWxrCkBAIC0zNTYsMjggKzM2MSw3MSBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgIyBOb3RlIHRoYXQgbGlzdGRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCisgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQogICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCi0gICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3ApCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvbmVycm9yKGVycikKKyAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCiAgICAgICAgIHJldHVybgogCi0gICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBpZiBpc2Rpcihqb2luKHRvcCwgbmFtZSkpOgotICAgICAgICAgICAgZGlycy5hcHBlbmQobmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVudHJ5ID0gbmV4dChzY2FuZGlyX2l0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICB0cnk6CisgICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAorICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCisgICAgICAgICAgICBpc19kaXIgPSBGYWxzZQorCisgICAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorCisgICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6CisgICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCisgICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKKyAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCisgICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KKyAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCisgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKworICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhlbnRyeS5wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKKworICAgICMgWWllbGQgYmVmb3JlIHJlY3Vyc2lvbiBpZiBnb2luZyB0b3AgZG93bgogICAgIGlmIHRvcGRvd246CiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwotICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgIG5ld19wYXRoID0gam9pbih0b3AsIG5hbWUpCi0gICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgotICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKLSAgICBpZiBub3QgdG9wZG93bjoKKworICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKKyAgICAgICAgaXNsaW5rLCBqb2luID0gcGF0aC5pc2xpbmssIHBhdGguam9pbgorICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgbmFtZSkKKyAgICAgICAgICAgICMgSXNzdWUgIzIzNjA1OiBvcy5wYXRoLmlzbGluaygpIGlzIHVzZWQgaW5zdGVhZCBvZiBjYWNoaW5nCisgICAgICAgICAgICAjIGVudHJ5LmlzX3N5bWxpbmsoKSByZXN1bHQgZHVyaW5nIHRoZSBsb29wIG9uIG9zLnNjYW5kaXIoKSBiZWNhdXNlCisgICAgICAgICAgICAjIHRoZSBjYWxsZXIgY2FuIHJlcGxhY2UgdGhlIGRpcmVjdG9yeSBlbnRyeSBkdXJpbmcgdGhlICJ5aWVsZCIKKyAgICAgICAgICAgICMgYWJvdmUuCisgICAgICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorICAgIGVsc2U6CisgICAgICAgICMgWWllbGQgYWZ0ZXIgcmVjdXJzaW9uIGlmIGdvaW5nIGJvdHRvbSB1cAogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAogX19hbGxfXy5hcHBlbmQoIndhbGsiKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCA5MThhYzhkLi4wMWU2NmEwIDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMjI1LDYgKzIyNSwzNiBAQAogICAgICAgICAgICAgIyBJdCdzIGEgcGF0aCBvbiBhIG5ldHdvcmsgZHJpdmUgPT4gJ2ZpbGU6Ly9ob3N0L3NoYXJlL2EvYicKICAgICAgICAgICAgIHJldHVybiAnZmlsZTonICsgdXJscXVvdGVfZnJvbV9ieXRlcyhwYXRoLmFzX3Bvc2l4KCkuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIHVzZXJob21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgIGVsaWYgJ1VTRVJQUk9GSUxFJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydVU0VSUFJPRklMRSddCisgICAgICAgIGVsaWYgJ0hPTUVQQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRydiA9IG9zLmVudmlyb25bJ0hPTUVEUklWRSddCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgZHJ2ID0gJycKKyAgICAgICAgICAgIHVzZXJob21lID0gZHJ2ICsgb3MuZW52aXJvblsnSE9NRVBBVEgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBkZXRlcm1pbmUgaG9tZSBkaXJlY3RvcnkiKQorCisgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgIyBUcnkgdG8gZ3Vlc3MgdXNlciBob21lIGRpcmVjdG9yeS4gIEJ5IGRlZmF1bHQgYWxsIHVzZXJzCisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGFyZSBsb2NhdGVkIGluIHRoZSBzYW1lIHBsYWNlIGFuZCBhcmUgbmFtZWQgYnkKKyAgICAgICAgICAgICMgY29ycmVzcG9uZGluZyB1c2VybmFtZXMuICBJZiBjdXJyZW50IHVzZXIgaG9tZSBkaXJlY3RvcnkgcG9pbnRzCisgICAgICAgICAgICAjIHRvIG5vbnN0YW5kYXJkIHBsYWNlLCB0aGlzIGd1ZXNzIGlzIGxpa2VseSB3cm9uZy4KKyAgICAgICAgICAgIGlmIG9zLmVudmlyb25bJ1VTRVJOQU1FJ10gIT0gdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYucGFyc2VfcGFydHMoKHVzZXJob21lLCkpCisgICAgICAgICAgICAgICAgaWYgcGFydHNbLTFdICE9IG9zLmVudmlyb25bJ1VTRVJOQU1FJ106CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisgICAgICAgICAgICAgICAgcGFydHNbLTFdID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgdXNlcmhvbWUgPSBkcnYgKyByb290ICsgc2VsZi5qb2luKHBhcnRzWzE6XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1c2VyaG9tZSA9IHNlbGYuam9pbihwYXJ0cykKKyAgICAgICAgcmV0dXJuIHVzZXJob21lCiAKIGNsYXNzIF9Qb3NpeEZsYXZvdXIoX0ZsYXZvdXIpOgogICAgIHNlcCA9ICcvJwpAQCAtMzA4LDYgKzMzOCwyMSBAQAogICAgICAgICBicGF0aCA9IGJ5dGVzKHBhdGgpCiAgICAgICAgIHJldHVybiAnZmlsZTovLycgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKGJwYXRoKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKS5wd19kaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3bmFtKHVzZXJuYW1lKS5wd19kaXIKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGRldGVybWluZSBob21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisKIAogX3dpbmRvd3NfZmxhdm91ciA9IF9XaW5kb3dzRmxhdm91cigpCiBfcG9zaXhfZmxhdm91ciA9IF9Qb3NpeEZsYXZvdXIoKQpAQCAtOTY0LDYgKzEwMDksMjQgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBjbHMob3MuZ2V0Y3dkKCkpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaG9tZShjbHMpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcGF0aCBwb2ludGluZyB0byB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IChhcworICAgICAgICByZXR1cm5lZCBieSBvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2xzKGNscygpLl9mbGF2b3VyLmdldGhvbWVkaXIoTm9uZSkpCisKKyAgICBkZWYgc2FtZWZpbGUoc2VsZiwgb3RoZXJfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGBvdGhlcl9maWxlYCBpcyB0aGUgc2FtZSBvciBub3QgYXMgdGhpcyBmaWxlLgorICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5zYW1lZmlsZShmaWxlLCBvdGhlcl9maWxlKSkuCisgICAgICAgICIiIgorICAgICAgICBzdCA9IHNlbGYuc3RhdCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG90aGVyX3N0ID0gb3RoZXJfcGF0aC5zdGF0KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgb3RoZXJfc3QgPSBvcy5zdGF0KG90aGVyX3BhdGgpCisgICAgICAgIHJldHVybiBvcy5wYXRoLnNhbWVzdGF0KHN0LCBvdGhlcl9zdCkKKwogICAgIGRlZiBpdGVyZGlyKHNlbGYpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgdGhlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LiAgRG9lcyBub3QgeWllbGQgYW55CiAgICAgICAgIHJlc3VsdCBmb3IgdGhlIHNwZWNpYWwgcGF0aHMgJy4nIGFuZCAnLi4nLgpAQCAtMTA3Miw2ICsxMTM1LDM5IEBACiAgICAgICAgIHJldHVybiBpby5vcGVuKHN0cihzZWxmKSwgbW9kZSwgYnVmZmVyaW5nLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXI9c2VsZi5fb3BlbmVyKQogCisgICAgZGVmIHJlYWRfYnl0ZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIGJ5dGVzIG1vZGUsIHJlYWQgaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisgICAgZGVmIHJlYWRfdGV4dChzZWxmLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncicsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBkZWYgd3JpdGVfYnl0ZXMoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIGJ5dGVzIG1vZGUsIHdyaXRlIHRvIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICAjIHR5cGUtY2hlY2sgZm9yIHRoZSBidWZmZXIgaW50ZXJmYWNlIGJlZm9yZSB0cnVuY2F0aW5nIHRoZSBmaWxlCisgICAgICAgIHZpZXcgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3diJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKHZpZXcpCisKKyAgICBkZWYgd3JpdGVfdGV4dChzZWxmLCBkYXRhLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgd3JpdGUgdG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2RhdGEgbXVzdCBiZSBzdHIsIG5vdCAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSd3JywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZi53cml0ZShkYXRhKQorCiAgICAgZGVmIHRvdWNoKHNlbGYsIG1vZGU9MG82NjYsIGV4aXN0X29rPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgZmlsZSB3aXRoIHRoZSBnaXZlbiBhY2Nlc3MgbW9kZSwgaWYgaXQgZG9lc24ndCBleGlzdC4KQEAgLTEwOTUsMTQgKzExOTEsMjEgQEAKICAgICAgICAgZmQgPSBzZWxmLl9yYXdfb3BlbihmbGFncywgbW9kZSkKICAgICAgICAgb3MuY2xvc2UoZmQpCiAKLSAgICBkZWYgbWtkaXIoc2VsZiwgbW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSk6CisgICAgZGVmIG1rZGlyKHNlbGYsIG1vZGU9MG83NzcsIHBhcmVudHM9RmFsc2UsIGV4aXN0X29rPUZhbHNlKToKICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKICAgICAgICAgaWYgbm90IHBhcmVudHM6Ci0gICAgICAgICAgICBzZWxmLl9hY2Nlc3Nvci5ta2RpcihzZWxmLCBtb2RlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCBleGlzdF9vayBvciBub3Qgc2VsZi5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLl9hY2Nlc3Nvci5ta2RpcihzZWxmLCBtb2RlKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rfb2sgb3Igbm90IHNlbGYuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRU5PRU5UOgogICAgICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMTI4Myw2ICsxMzg2LDE3IEBACiAgICAgICAgICAgICAjIChzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzEyLykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIGV4cGFuZHVzZXIoc2VsZik6CisgICAgICAgICIiIiBSZXR1cm4gYSBuZXcgcGF0aCB3aXRoIGV4cGFuZGVkIH4gYW5kIH51c2VyIGNvbnN0cnVjdHMKKyAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLnBhdGguZXhwYW5kdXNlcikKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChub3QgKHNlbGYuX2RydiBvciBzZWxmLl9yb290KSBhbmQKKyAgICAgICAgICAgIHNlbGYuX3BhcnRzIGFuZCBzZWxmLl9wYXJ0c1swXVs6MV0gPT0gJ34nKToKKyAgICAgICAgICAgIGhvbWVkaXIgPSBzZWxmLl9mbGF2b3VyLmdldGhvbWVkaXIoc2VsZi5fcGFydHNbMF1bMTpdKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFydHMoW2hvbWVkaXJdICsgc2VsZi5fcGFydHNbMTpdKQorCisgICAgICAgIHJldHVybiBzZWxmCisKIAogY2xhc3MgUG9zaXhQYXRoKFBhdGgsIFB1cmVQb3NpeFBhdGgpOgogICAgIF9fc2xvdHNfXyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvcGRiLnB5IGIvTGliL3BkYi5weQppbmRleCBlMjg1NjRiLi5jZjJlZGJmIDEwMDc1NQotLS0gYS9MaWIvcGRiLnB5CisrKyBiL0xpYi9wZGIucHkKQEAgLTEzMTYsNyArMTMxNiw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBJcyBpdCBhIGNsYXNzPwogICAgICAgICBpZiB2YWx1ZS5fX2NsYXNzX18gaXMgdHlwZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnQ2xhc3MgJXMuJXMnICUgKHZhbHVlLl9fbW9kdWxlX18sIHZhbHVlLl9fbmFtZV9fKSkKKyAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnQ2xhc3MgJXMuJXMnICUgKHZhbHVlLl9fbW9kdWxlX18sIHZhbHVlLl9fcXVhbG5hbWVfXykpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZS4uLgogICAgICAgICBzZWxmLm1lc3NhZ2UodHlwZSh2YWx1ZSkpCmRpZmYgLS1naXQgYS9MaWIvcGlja2xlLnB5IGIvTGliL3BpY2tsZS5weQppbmRleCA2NzM4MmFlLi42YzI2YzVlIDEwMDY0NAotLS0gYS9MaWIvcGlja2xlLnB5CisrKyBiL0xpYi9waWNrbGUucHkKQEAgLTI1OCwyNCArMjU4LDIwIEBACiAKICMgVG9vbHMgdXNlZCBmb3IgcGlja2xpbmcuCiAKLWRlZiBfZ2V0YXR0cmlidXRlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9RmFsc2UpOgotICAgIGRvdHRlZF9wYXRoID0gbmFtZS5zcGxpdCgiLiIpCi0gICAgaWYgbm90IGFsbG93X3F1YWxuYW1lIGFuZCBsZW4oZG90dGVkX3BhdGgpID4gMToKLSAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbid0IGdldCBxdWFsaWZpZWQgYXR0cmlidXRlIHshcn0gb24geyFyfTsgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgcHJvdG9jb2xzID49IDQgdG8gZW5hYmxlIHN1cHBvcnQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKLSAgICBmb3Igc3VicGF0aCBpbiBkb3R0ZWRfcGF0aDoKK2RlZiBfZ2V0YXR0cmlidXRlKG9iaiwgbmFtZSk6CisgICAgZm9yIHN1YnBhdGggaW4gbmFtZS5zcGxpdCgnLicpOgogICAgICAgICBpZiBzdWJwYXRoID09ICc8bG9jYWxzPic6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ2FuJ3QgZ2V0IGxvY2FsIGF0dHJpYnV0ZSB7IXJ9IG9uIHshcn0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG5hbWUsIG9iaikpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhcmVudCA9IG9iagogICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHN1YnBhdGgpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJDYW4ndCBnZXQgYXR0cmlidXRlIHshcn0gb24geyFyfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKLSAgICByZXR1cm4gb2JqCisgICAgcmV0dXJuIG9iaiwgcGFyZW50CiAKLWRlZiB3aGljaG1vZHVsZShvYmosIG5hbWUsIGFsbG93X3F1YWxuYW1lPUZhbHNlKToKK2RlZiB3aGljaG1vZHVsZShvYmosIG5hbWUpOgogICAgICIiIkZpbmQgdGhlIG1vZHVsZSBhbiBvYmplY3QgYmVsb25nIHRvLiIiIgogICAgIG1vZHVsZV9uYW1lID0gZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkKICAgICBpZiBtb2R1bGVfbmFtZSBpcyBub3QgTm9uZToKQEAgLTI4Niw3ICsyODIsNyBAQAogICAgICAgICBpZiBtb2R1bGVfbmFtZSA9PSAnX19tYWluX18nIG9yIG1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUsIGFsbG93X3F1YWxuYW1lKSBpcyBvYmo6CisgICAgICAgICAgICBpZiBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSlbMF0gaXMgb2JqOgogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCkBAIC04OTksMTYgKzg5NSwxNiBAQAogICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKICAgICAgICAgbWVtbyA9IHNlbGYubWVtbwogCi0gICAgICAgIGlmIG5hbWUgaXMgTm9uZSBhbmQgc2VsZi5wcm90byA+PSA0OgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBuYW1lID0gZ2V0YXR0cihvYmosICdfX3F1YWxuYW1lX18nLCBOb25lKQogICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCiAKLSAgICAgICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIG5hbWUsIGFsbG93X3F1YWxuYW1lPXNlbGYucHJvdG8gPj0gNCkKKyAgICAgICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCiAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KLSAgICAgICAgICAgIG9iajIgPSBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICAgICAgb2JqMiwgcGFyZW50ID0gX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUpCiAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKAogICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgJXI6IGl0J3Mgbm90IGZvdW5kIGFzICVzLiVzIiAlCkBAIC05MzAsMTEgKzkyNiwxNiBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKEVYVDQgKyBwYWNrKCI8aSIsIGNvZGUpKQogICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBsYXN0bmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIGlmIHBhcmVudCBpcyBtb2R1bGU6CisgICAgICAgICAgICBuYW1lID0gbGFzdG5hbWUKICAgICAgICAgIyBOb24tQVNDSUkgaWRlbnRpZmllcnMgYXJlIHN1cHBvcnRlZCBvbmx5IHdpdGggcHJvdG9jb2xzID49IDMuCiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKICAgICAgICAgICAgIHNlbGYuc2F2ZShtb2R1bGVfbmFtZSkKICAgICAgICAgICAgIHNlbGYuc2F2ZShuYW1lKQogICAgICAgICAgICAgd3JpdGUoU1RBQ0tfR0xPQkFMKQorICAgICAgICBlbGlmIHBhcmVudCBpcyBub3QgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShnZXRhdHRyLCAocGFyZW50LCBsYXN0bmFtZSkpCiAgICAgICAgIGVsaWYgc2VsZi5wcm90byA+PSAzOgogICAgICAgICAgICAgd3JpdGUoR0xPQkFMICsgYnl0ZXMobW9kdWxlX25hbWUsICJ1dGYtOCIpICsgYidcbicgKwogICAgICAgICAgICAgICAgICAgYnl0ZXMobmFtZSwgInV0Zi04IikgKyBiJ1xuJykKQEAgLTEzNzMsOCArMTM3NCwxMCBAQAogICAgICAgICAgICAgZWxpZiBtb2R1bGUgaW4gX2NvbXBhdF9waWNrbGUuSU1QT1JUX01BUFBJTkc6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gX2NvbXBhdF9waWNrbGUuSU1QT1JUX01BUFBJTkdbbW9kdWxlXQogICAgICAgICBfX2ltcG9ydF9fKG1vZHVsZSwgbGV2ZWw9MCkKLSAgICAgICAgcmV0dXJuIF9nZXRhdHRyaWJ1dGUoc3lzLm1vZHVsZXNbbW9kdWxlXSwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICBpZiBzZWxmLnByb3RvID49IDQ6CisgICAgICAgICAgICByZXR1cm4gX2dldGF0dHJpYnV0ZShzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lKVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc3lzLm1vZHVsZXNbbW9kdWxlXSwgbmFtZSkKIAogICAgIGRlZiBsb2FkX3JlZHVjZShzZWxmKToKICAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IGE1NGU5NDcuLmZjNGEwNzQgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC02MTYsNyArNjE2LDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAjIFhYWCBuZWVkcyB0ZXN0CiAgICAgbW9kID0gKHN5cy5tb2R1bGVzLmdldChwYWNrYWdlKSBvcgotICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykubG9hZCgpKQorICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKSkKICAgICBpZiBtb2QgaXMgTm9uZSBvciBub3QgaGFzYXR0cihtb2QsICdfX2ZpbGVfXycpOgogICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggYzRmZmU5NS4uNjM0NTE4NCAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTE0LDYgKzExNCw4IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBzeXMsIG9zLCByZSwgc3VicHJvY2VzcwogCitpbXBvcnQgd2FybmluZ3MKKwogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKIAogIyBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtJ3MgL2Rldi9udWxsIGRldmljZQpAQCAtMTYzLDQwICsxNjUsMzkgQEAKICAgICAgICAgIyBoZXJlIHRvIHdvcmsgYXJvdW5kIHByb2JsZW1zIHdpdGggQ3lnd2luIG5vdCBiZWluZwogICAgICAgICAjIGFibGUgdG8gb3BlbiBzeW1saW5rcyBmb3IgcmVhZGluZwogICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5yZWFscGF0aChleGVjdXRhYmxlKQotICAgIGYgPSBvcGVuKGV4ZWN1dGFibGUsICdyYicpCi0gICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKLSAgICBwb3MgPSAwCi0gICAgd2hpbGUgMToKLSAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgotICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LCBwb3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtID0gTm9uZQotICAgICAgICBpZiBub3QgbToKLSAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCi0gICAgICAgICAgICBpZiBub3QgYmluYXJ5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSAwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCwgZ2xpYmMsIGdsaWJjdmVyc2lvbiwgc28sIHRocmVhZHMsIHNvdmVyc2lvbiA9IFsKLSAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcwotICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KLSAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6Ci0gICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgZWxpZiBnbGliYzoKLSAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgotICAgICAgICAgICAgICAgIGxpYiA9ICdnbGliYycKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCi0gICAgICAgICAgICBlbGlmIGdsaWJjdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgotICAgICAgICBlbGlmIHNvOgotICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CisgICAgd2l0aCBvcGVuKGV4ZWN1dGFibGUsICdyYicpIGFzIGY6CisgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgIHBvcyA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIGInbGliYycgaW4gYmluYXJ5IG9yIGInR0xJQkMnIGluIGJpbmFyeToKKyAgICAgICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnksIHBvcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbSA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBtOgorICAgICAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgICAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGxpYmNpbml0LCBnbGliYywgZ2xpYmN2ZXJzaW9uLCBzbywgdGhyZWFkcywgc292ZXJzaW9uID0gWworICAgICAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgICAgIGZvciBzIGluIG0uZ3JvdXBzKCldCisgICAgICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgICAgICAgICBpZiBzb3ZlcnNpb24gYW5kIHNvdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzb3ZlcnNpb24KLSAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbiArIHRocmVhZHMKLSAgICAgICAgcG9zID0gbS5lbmQoKQotICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZWxpZiBnbGliYzoKKyAgICAgICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKKyAgICAgICAgICAgICAgICAgICAgbGliID0gJ2dsaWJjJworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICAgICAgZWxpZiBnbGliY3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICBlbGlmIHNvOgorICAgICAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgorICAgICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKKyAgICAgICAgICAgICAgICAgICAgaWYgc292ZXJzaW9uIGFuZCBzb3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNvdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gKyB0aHJlYWRzCisgICAgICAgICAgICBwb3MgPSBtLmVuZCgpCiAgICAgcmV0dXJuIGxpYiwgdmVyc2lvbgogCiBkZWYgX2Rpc3RfdHJ5X2hhcmRlcihkaXN0bmFtZSwgdmVyc2lvbiwgaWQpOgpAQCAtMjk4LDYgKzI5OSwxNSBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1fc3VwcG9ydGVkX2Rpc3RzLAogICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTEpOgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oImRpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAgICJpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNyIsCisgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9kaXN0cmlidXRpb25fbmFtZSkKKworZGVmIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lKToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIExpbnV4IE9TIGRpc3RyaWJ1dGlvbiBuYW1lLgogCkBAIC0zNjQsOSArMzc0LDEzIEBACiAgICAgICAgIGFyZ3MgZ2l2ZW4gYXMgcGFyYW1ldGVycy4KIAogICAgICIiIgotICAgIHJldHVybiBsaW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPXN1cHBvcnRlZF9kaXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICB3YXJuaW5ncy53YXJuKCJkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgICAiaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjciLAorICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgIHJldHVybiBfbGludXhfZGlzdHJpYnV0aW9uKGRpc3RuYW1lLCB2ZXJzaW9uLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZGlzdHM9c3VwcG9ydGVkX2Rpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKIAogZGVmIHBvcGVuKGNtZCwgbW9kZT0ncicsIGJ1ZnNpemU9LTEpOgogCkBAIC0xNDI2LDcgKzE0NDAsMTUgQEAKIAogICAgIGVsaWYgc3lzdGVtIGluICgnTGludXgnLCk6CiAgICAgICAgICMgTGludXggYmFzZWQgc3lzdGVtcwotICAgICAgICBkaXN0bmFtZSwgZGlzdHZlcnNpb24sIGRpc3RpZCA9IGRpc3QoJycpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgc2VlIGlzc3VlICMxMzIyIGZvciBtb3JlIGluZm9ybWF0aW9uCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKKyAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAorICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBkaXN0bmFtZSwgZGlzdHZlcnNpb24sIGRpc3RpZCA9IGRpc3QoJycpCiAgICAgICAgIGlmIGRpc3RuYW1lIGFuZCBub3QgdGVyc2U6CiAgICAgICAgICAgICBwbGF0Zm9ybSA9IF9wbGF0Zm9ybShzeXN0ZW0sIHJlbGVhc2UsIG1hY2hpbmUsIHByb2Nlc3NvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoJywKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IDQ5MTU2MjguLmY2NzIzOTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNzEsNiArNzEsNyBAQAogICAgICAgICAgICAgVUlETCBbbXNnXSAgICAgICAgICAgICAgdWlkbChtc2cgPSBOb25lKQogICAgICAgICAgICAgQ0FQQSAgICAgICAgICAgICAgICAgICAgY2FwYSgpCiAgICAgICAgICAgICBTVExTICAgICAgICAgICAgICAgICAgICBzdGxzKCkKKyAgICAgICAgICAgIFVURjggICAgICAgICAgICAgICAgICAgIHV0ZjgoKQogCiAgICAgUmFpc2VzIG9uZSBleGNlcHRpb246ICdlcnJvcl9wcm90bycuCiAKQEAgLTM0OCw2ICszNDksMTIgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvbmdjbWQoJ1VJREwnKQogCiAKKyAgICBkZWYgdXRmOChzZWxmKToKKyAgICAgICAgIiIiVHJ5IHRvIGVudGVyIFVURi04IG1vZGUgKHNlZSBSRkMgNjg1NikuIFJldHVybnMgc2VydmVyIHJlc3BvbnNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdVVEY4JykKKworCiAgICAgZGVmIGNhcGEoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBzZXJ2ZXIgY2FwYWJpbGl0aWVzIChSRkMgMjQ0OSkgYXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgID4+PiBjPXBvcGxpYi5QT1AzKCdsb2NhbGhvc3QnKQpkaWZmIC0tZ2l0IGEvTGliL3Bvc2l4cGF0aC5weSBiL0xpYi9wb3NpeHBhdGgucHkKaW5kZXggMGFhNTNmZS4uMDliODg5NyAxMDA2NDQKLS0tIGEvTGliL3Bvc2l4cGF0aC5weQorKysgYi9MaWIvcG9zaXhwYXRoLnB5CkBAIC0yMiw3ICsyMiw4IEBACiAgICAgICAgICAgICJpc21vdW50IiwgImV4cGFuZHVzZXIiLCJleHBhbmR2YXJzIiwibm9ybXBhdGgiLCJhYnNwYXRoIiwKICAgICAgICAgICAgInNhbWVmaWxlIiwic2FtZW9wZW5maWxlIiwic2FtZXN0YXQiLAogICAgICAgICAgICAiY3VyZGlyIiwicGFyZGlyIiwic2VwIiwicGF0aHNlcCIsImRlZnBhdGgiLCJhbHRzZXAiLCJleHRzZXAiLAotICAgICAgICAgICAiZGV2bnVsbCIsInJlYWxwYXRoIiwic3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMiLCJyZWxwYXRoIl0KKyAgICAgICAgICAgImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCIsCisgICAgICAgICAgICJjb21tb25wYXRoIl0KIAogIyBTdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMuCiAjIFRoZXNlIGFyZSBwcmltYXJpbHkgZm9yIGV4cG9ydDsgaW50ZXJuYWxseSwgdGhleSBhcmUgaGFyZGNvZGVkLgpAQCAtNzUsNiArNzYsOCBAQAogICAgIHNlcCA9IF9nZXRfc2VwKGEpCiAgICAgcGF0aCA9IGEKICAgICB0cnk6CisgICAgICAgIGlmIG5vdCBwOgorICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgogICAgICAgICBmb3IgYiBpbiBwOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKQEAgLTgyLDExICs4NSw4IEBACiAgICAgICAgICAgICAgICAgcGF0aCArPSBiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBhdGggKz0gc2VwICsgYgotICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgIGlmIGFsbChpc2luc3RhbmNlKHMsIChzdHIsIGJ5dGVzKSkgZm9yIHMgaW4gKGEsKSArIHApOgotICAgICAgICAgICAgIyBNdXN0IGhhdmUgYSBtaXh0dXJlIG9mIHRleHQgYW5kIGJpbmFyeSBkYXRhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9uZW50cyIpIGZyb20gTm9uZQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnam9pbicsIGEsICpwKQogICAgICAgICByYWlzZQogICAgIHJldHVybiBwYXRoCiAKQEAgLTQ0NSwxMyArNDQ1LDU4IEBACiAgICAgaWYgc3RhcnQgaXMgTm9uZToKICAgICAgICAgc3RhcnQgPSBjdXJkaXIKIAotICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCi0gICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChwYXRoKS5zcGxpdChzZXApIGlmIHhdCisgICAgdHJ5OgorICAgICAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChzdGFydCkuc3BsaXQoc2VwKSBpZiB4XQorICAgICAgICBwYXRoX2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHBhdGgpLnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgorICAgICAgICBpID0gbGVuKGNvbW1vbnByZWZpeChbc3RhcnRfbGlzdCwgcGF0aF9saXN0XSkpCiAKLSAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCi0gICAgaSA9IGxlbihjb21tb25wcmVmaXgoW3N0YXJ0X2xpc3QsIHBhdGhfbGlzdF0pKQorICAgICAgICByZWxfbGlzdCA9IFtwYXJkaXJdICogKGxlbihzdGFydF9saXN0KS1pKSArIHBhdGhfbGlzdFtpOl0KKyAgICAgICAgaWYgbm90IHJlbF9saXN0OgorICAgICAgICAgICAgcmV0dXJuIGN1cmRpcgorICAgICAgICByZXR1cm4gam9pbigqcmVsX2xpc3QpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ3JlbHBhdGgnLCBwYXRoLCBzdGFydCkKKyAgICAgICAgcmFpc2UKIAotICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQotICAgIGlmIG5vdCByZWxfbGlzdDoKLSAgICAgICAgcmV0dXJuIGN1cmRpcgotICAgIHJldHVybiBqb2luKCpyZWxfbGlzdCkKKworIyBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIHRoZSBzZXF1ZW5jZSBvZiBwYXRocyBnaXZlbiBhcyBpbnB1dC4KKyMgVGhlIHBhdGhzIGFyZSBub3Qgbm9ybWFsaXplZCBiZWZvcmUgY29tcGFyaW5nIHRoZW0gKHRoaXMgaXMgdGhlCisjIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpLiBBbnkgdHJhaWxpbmcgc2VwYXJhdG9yIGlzIHN0cmlwcGVkIGZyb20gdGhlCisjIHJldHVybmVkIHBhdGguCisKK2RlZiBjb21tb25wYXRoKHBhdGhzKToKKyAgICAiIiJHaXZlbiBhIHNlcXVlbmNlIG9mIHBhdGggbmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoLiIiIgorCisgICAgaWYgbm90IHBhdGhzOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKKworICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYicvJworICAgICAgICBjdXJkaXIgPSBiJy4nCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworCisgICAgdHJ5OgorICAgICAgICBzcGxpdF9wYXRocyA9IFtwYXRoLnNwbGl0KHNlcCkgZm9yIHBhdGggaW4gcGF0aHNdCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaXNhYnMsID0gc2V0KHBbOjFdID09IHNlcCBmb3IgcCBpbiBwYXRocykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBtaXggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBhdGhzIikgZnJvbSBOb25lCisKKyAgICAgICAgc3BsaXRfcGF0aHMgPSBbW2MgZm9yIGMgaW4gcyBpZiBjIGFuZCBjICE9IGN1cmRpcl0gZm9yIHMgaW4gc3BsaXRfcGF0aHNdCisgICAgICAgIHMxID0gbWluKHNwbGl0X3BhdGhzKQorICAgICAgICBzMiA9IG1heChzcGxpdF9wYXRocykKKyAgICAgICAgY29tbW9uID0gczEKKyAgICAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKKyAgICAgICAgICAgIGlmIGMgIT0gczJbaV06CisgICAgICAgICAgICAgICAgY29tbW9uID0gczFbOmldCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBwcmVmaXggPSBzZXAgaWYgaXNhYnMgZWxzZSBzZXBbOjBdCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21tb24pCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnY29tbW9ucGF0aCcsICpwYXRocykKKyAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9wcHJpbnQucHkgYi9MaWIvcHByaW50LnB5CmluZGV4IDJjYmZmZWQuLjg3NjQ5YjQgMTAwNjQ0Ci0tLSBhL0xpYi9wcHJpbnQucHkKKysrIGIvTGliL3BwcmludC5weQpAQCAtMzQsOSArMzQsMTAgQEAKIAogIiIiCiAKK2ltcG9ydCBjb2xsZWN0aW9ucyBhcyBfY29sbGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5cyBhcyBfc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCBhcyBfT3JkZXJlZERpY3QKK2ltcG9ydCB0eXBlcyBhcyBfdHlwZXMKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPIGFzIF9TdHJpbmdJTwogCiBfX2FsbF9fID0gWyJwcHJpbnQiLCJwZm9ybWF0IiwiaXNyZWFkYWJsZSIsImlzcmVjdXJzaXZlIiwic2FmZXJlcHIiLApAQCAtODUsMTQgKzg2LDEwIEBACiAKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcnYgPSBzZWxmLm9iai5fX2x0X18ob3RoZXIub2JqKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYub2JqIDwgb3RoZXIub2JqCiAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICBydiA9IE5vdEltcGxlbWVudGVkCi0KLSAgICAgICAgaWYgcnYgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICBydiA9IChzdHIodHlwZShzZWxmLm9iaikpLCBpZChzZWxmLm9iaikpIDwgXAotICAgICAgICAgICAgICAgICAoc3RyKHR5cGUob3RoZXIub2JqKSksIGlkKG90aGVyLm9iaikpCi0gICAgICAgIHJldHVybiBydgorICAgICAgICAgICAgcmV0dXJuICgoc3RyKHR5cGUoc2VsZi5vYmopKSwgaWQoc2VsZi5vYmopKSA8IFwKKyAgICAgICAgICAgICAgICAgICAgKHN0cih0eXBlKG90aGVyLm9iaikpLCBpZChvdGhlci5vYmopKSkKIAogZGVmIF9zYWZlX3R1cGxlKHQpOgogICAgICJIZWxwZXIgZnVuY3Rpb24gZm9yIGNvbXBhcmluZyAyLXR1cGxlcyIKQEAgLTEyMyw5ICsxMjAsMTIgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGluZGVudCA9IGludChpbmRlbnQpCiAgICAgICAgIHdpZHRoID0gaW50KHdpZHRoKQotICAgICAgICBhc3NlcnQgaW5kZW50ID49IDAsICJpbmRlbnQgbXVzdCBiZSA+PSAwIgotICAgICAgICBhc3NlcnQgZGVwdGggaXMgTm9uZSBvciBkZXB0aCA+IDAsICJkZXB0aCBtdXN0IGJlID4gMCIKLSAgICAgICAgYXNzZXJ0IHdpZHRoLCAid2lkdGggbXVzdCBiZSAhPSAwIgorICAgICAgICBpZiBpbmRlbnQgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW5kZW50IG11c3QgYmUgPj0gMCcpCisgICAgICAgIGlmIGRlcHRoIGlzIG5vdCBOb25lIGFuZCBkZXB0aCA8PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGVwdGggbXVzdCBiZSA+IDAnKQorICAgICAgICBpZiBub3Qgd2lkdGg6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3aWR0aCBtdXN0IGJlICE9IDAnKQogICAgICAgICBzZWxmLl9kZXB0aCA9IGRlcHRoCiAgICAgICAgIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPSBpbmRlbnQKICAgICAgICAgc2VsZi5fd2lkdGggPSB3aWR0aApAQCAtMTUyLDEzMyArMTUyLDIyMyBAQAogICAgICAgICByZXR1cm4gcmVhZGFibGUgYW5kIG5vdCByZWN1cnNpdmUKIAogICAgIGRlZiBfZm9ybWF0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgotICAgICAgICBsZXZlbCA9IGxldmVsICsgMQogICAgICAgICBvYmppZCA9IGlkKG9iamVjdCkKICAgICAgICAgaWYgb2JqaWQgaW4gY29udGV4dDoKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShfcmVjdXJzaW9uKG9iamVjdCkpCiAgICAgICAgICAgICBzZWxmLl9yZWN1cnNpdmUgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IEZhbHNlCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmVwID0gc2VsZi5fcmVwcihvYmplY3QsIGNvbnRleHQsIGxldmVsIC0gMSkKLSAgICAgICAgdHlwID0gdHlwZShvYmplY3QpCi0gICAgICAgIG1heF93aWR0aCA9IHNlbGYuX3dpZHRoIC0gMSAtIGluZGVudCAtIGFsbG93YW5jZQotICAgICAgICBzZXBMaW5lcyA9IGxlbihyZXApID4gbWF4X3dpZHRoCisgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIob2JqZWN0LCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgLSBhbGxvd2FuY2UKKyAgICAgICAgaWYgbGVuKHJlcCkgPiBtYXhfd2lkdGg6CisgICAgICAgICAgICBwID0gc2VsZi5fZGlzcGF0Y2guZ2V0KHR5cGUob2JqZWN0KS5fX3JlcHJfXywgTm9uZSkKKyAgICAgICAgICAgIGlmIHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCisgICAgICAgICAgICAgICAgcChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsICsgMSkKKyAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmplY3QsIGRpY3QpOgorICAgICAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQorICAgICAgICAgICAgICAgIHNlbGYuX3BwcmludF9kaWN0KG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCArIDEpCisgICAgICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHN0cmVhbS53cml0ZShyZXApCisKKyAgICBfZGlzcGF0Y2ggPSB7fQorCisgICAgZGVmIF9wcHJpbnRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgd3JpdGUoJ3snKQorICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKKyAgICAgICAgICAgIHdyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCisgICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCisgICAgICAgIGlmIGxlbmd0aDoKKyAgICAgICAgICAgIGl0ZW1zID0gc29ydGVkKG9iamVjdC5pdGVtcygpLCBrZXk9X3NhZmVfdHVwbGUpCisgICAgICAgICAgICBzZWxmLl9mb3JtYXRfZGljdF9pdGVtcyhpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgd3JpdGUoJ30nKQogCi0gICAgICAgIGlmIHNlcExpbmVzOgotICAgICAgICAgICAgciA9IGdldGF0dHIodHlwLCAiX19yZXByX18iLCBOb25lKQotICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGRpY3QpOgotICAgICAgICAgICAgICAgIHdyaXRlKCd7JykKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW4ob2JqZWN0KQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCA9IGluZGVudCArIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIF9PcmRlcmVkRGljdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGxpc3Qob2JqZWN0Lml0ZW1zKCkpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IHNvcnRlZChvYmplY3QuaXRlbXMoKSwga2V5PV9zYWZlX3R1cGxlKQotICAgICAgICAgICAgICAgICAgICBrZXksIGVudCA9IGl0ZW1zWzBdCi0gICAgICAgICAgICAgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIoa2V5LCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUocmVwKQotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnOiAnKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihyZXApICsgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuZ3RoID4gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIGVudCBpbiBpdGVtc1sxOl06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihrZXksIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCcsXG4lcyVzOiAnICUgKCcgJyppbmRlbnQsIHJlcCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQgKyBsZW4ocmVwKSArIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50ID0gaW5kZW50IC0gc2VsZi5faW5kZW50X3Blcl9sZXZlbAotICAgICAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KLSAgICAgICAgICAgICAgICB3cml0ZSgnfScpCi0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgX2Rpc3BhdGNoW2RpY3QuX19yZXByX19dID0gX3BwcmludF9kaWN0CiAKLSAgICAgICAgICAgIGlmICgoaXNzdWJjbGFzcyh0eXAsIGxpc3QpIGFuZCByIGlzIGxpc3QuX19yZXByX18pIG9yCi0gICAgICAgICAgICAgICAgKGlzc3ViY2xhc3ModHlwLCB0dXBsZSkgYW5kIHIgaXMgdHVwbGUuX19yZXByX18pIG9yCi0gICAgICAgICAgICAgICAgKGlzc3ViY2xhc3ModHlwLCBzZXQpIGFuZCByIGlzIHNldC5fX3JlcHJfXykgb3IKLSAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyh0eXAsIGZyb3plbnNldCkgYW5kIHIgaXMgZnJvemVuc2V0Ll9fcmVwcl9fKQotICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW4ob2JqZWN0KQotICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBsaXN0KToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJ1snKQotICAgICAgICAgICAgICAgICAgICBlbmRjaGFyID0gJ10nCi0gICAgICAgICAgICAgICAgZWxpZiBpc3N1YmNsYXNzKHR5cCwgdHVwbGUpOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnKCcpCi0gICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnKScKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUocmVwKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIGlmIHR5cCBpcyBzZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgneycpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRjaGFyID0gJ30nCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSh0eXAuX19uYW1lX18pCi0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgnKHsnKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kY2hhciA9ICd9KScKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArPSBsZW4odHlwLl9fbmFtZV9fKSArIDEKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gc29ydGVkKG9iamVjdCwga2V5PV9zYWZlX2tleSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKLSAgICAgICAgICAgICAgICBpZiBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKyBzZWxmLl9pbmRlbnRfcGVyX2xldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQotICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCB0dXBsZSkgYW5kIGxlbmd0aCA9PSAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnLCcpCi0gICAgICAgICAgICAgICAgd3JpdGUoZW5kY2hhcikKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBkZWYgX3BwcmludF9vcmRlcmVkX2RpY3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBzdHJlYW0ud3JpdGUoY2xzLl9fbmFtZV9fICsgJygnKQorICAgICAgICBzZWxmLl9mb3JtYXQobGlzdChvYmplY3QuaXRlbXMoKSksIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIGxlbihjbHMuX19uYW1lX18pICsgMSwgYWxsb3dhbmNlICsgMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQogCi0gICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgc3RyKSBhbmQgbGVuKG9iamVjdCkgPiAwIGFuZCByIGlzIHN0ci5fX3JlcHJfXzoKLSAgICAgICAgICAgICAgICBjaHVua3MgPSBbXQotICAgICAgICAgICAgICAgIGxpbmVzID0gb2JqZWN0LnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgICAgICAgICBpZiBsZXZlbCA9PSAxOgotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBtYXhfd2lkdGggLT0gMgotICAgICAgICAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJlcCA9IHJlcHIobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlcCkgPD0gbWF4X3dpZHRoOgotICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXApCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEEgbGlzdCBvZiBhbHRlcm5hdGluZyAobm9uLXNwYWNlLCBzcGFjZSkgc3RyaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSByZS5zcGxpdChyJyhccyspJywgbGluZSkgKyBbJyddCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gJycKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihwYXJ0cyksIDIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgPSBwYXJ0c1tpXSArIHBhcnRzW2krMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjdXJyZW50ICsgcGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXByKGNhbmRpZGF0ZSkpID4gbWF4X3dpZHRoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gcGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGUKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfb3JkZXJlZF9kaWN0CisKKyAgICBkZWYgX3BwcmludF9saXN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzdHJlYW0ud3JpdGUoJ1snKQorICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoJ10nKQorCisgICAgX2Rpc3BhdGNoW2xpc3QuX19yZXByX19dID0gX3BwcmludF9saXN0CisKKyAgICBkZWYgX3BwcmludF90dXBsZShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc3RyZWFtLndyaXRlKCcoJykKKyAgICAgICAgZW5kY2hhciA9ICcsKScgaWYgbGVuKG9iamVjdCkgPT0gMSBlbHNlICcpJworICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgbGVuKGVuZGNoYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZShlbmRjaGFyKQorCisgICAgX2Rpc3BhdGNoW3R1cGxlLl9fcmVwcl9fXSA9IF9wcHJpbnRfdHVwbGUKKworICAgIGRlZiBfcHByaW50X3NldChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0eXAgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIGlmIHR5cCBpcyBzZXQ6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJ3snKQorICAgICAgICAgICAgZW5kY2hhciA9ICd9JworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHR5cC5fX25hbWVfXyArICcoeycpCisgICAgICAgICAgICBlbmRjaGFyID0gJ30pJworICAgICAgICAgICAgaW5kZW50ICs9IGxlbih0eXAuX19uYW1lX18pICsgMQorICAgICAgICBvYmplY3QgPSBzb3J0ZWQob2JqZWN0LCBrZXk9X3NhZmVfa2V5KQorICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgbGVuKGVuZGNoYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZShlbmRjaGFyKQorCisgICAgX2Rpc3BhdGNoW3NldC5fX3JlcHJfX10gPSBfcHByaW50X3NldAorICAgIF9kaXNwYXRjaFtmcm96ZW5zZXQuX19yZXByX19dID0gX3BwcmludF9zZXQKKworICAgIGRlZiBfcHByaW50X3N0cihzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgd3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNodW5rcyA9IFtdCisgICAgICAgIGxpbmVzID0gb2JqZWN0LnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgaWYgbGV2ZWwgPT0gMToKKyAgICAgICAgICAgIGluZGVudCArPSAxCisgICAgICAgICAgICBhbGxvd2FuY2UgKz0gMQorICAgICAgICBtYXhfd2lkdGgxID0gbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQKKyAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgIHJlcCA9IHJlcHIobGluZSkKKyAgICAgICAgICAgIGlmIGkgPT0gbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgbWF4X3dpZHRoMSAtPSBhbGxvd2FuY2UKKyAgICAgICAgICAgIGlmIGxlbihyZXApIDw9IG1heF93aWR0aDE6CisgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgQSBsaXN0IG9mIGFsdGVybmF0aW5nIChub24tc3BhY2UsIHNwYWNlKSBzdHJpbmdzCisgICAgICAgICAgICAgICAgcGFydHMgPSByZS5maW5kYWxsKHInXFMqXHMqJywgbGluZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgcGFydHMKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHBhcnRzWy0xXQorICAgICAgICAgICAgICAgIHBhcnRzLnBvcCgpICAjIGRyb3AgZW1wdHkgbGFzdCBwYXJ0CisgICAgICAgICAgICAgICAgbWF4X3dpZHRoMiA9IG1heF93aWR0aAorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJworICAgICAgICAgICAgICAgIGZvciBqLCBwYXJ0IGluIGVudW1lcmF0ZShwYXJ0cyk6CisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0CisgICAgICAgICAgICAgICAgICAgIGlmIGogPT0gbGVuKHBhcnRzKSAtIDEgYW5kIGkgPT0gbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfd2lkdGgyIC09IGFsbG93YW5jZQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocmVwcihjYW5kaWRhdGUpKSA+IG1heF93aWR0aDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocmVwcihjdXJyZW50KSkKLSAgICAgICAgICAgICAgICBpZiBsZW4oY2h1bmtzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIGxldmVsID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcoJykKLSAgICAgICAgICAgICAgICBmb3IgaSwgcmVwIGluIGVudW1lcmF0ZShjaHVua3MpOgotICAgICAgICAgICAgICAgICAgICBpZiBpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCdcbicgKyAnICcqaW5kZW50KQotICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgaWYgbGV2ZWwgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJyknKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB3cml0ZShyZXApCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gcGFydAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocmVwcihjdXJyZW50KSkKKyAgICAgICAgaWYgbGVuKGNodW5rcykgPT0gMToKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBsZXZlbCA9PSAxOgorICAgICAgICAgICAgd3JpdGUoJygnKQorICAgICAgICBmb3IgaSwgcmVwIGluIGVudW1lcmF0ZShjaHVua3MpOgorICAgICAgICAgICAgaWYgaSA+IDA6CisgICAgICAgICAgICAgICAgd3JpdGUoJ1xuJyArICcgJyppbmRlbnQpCisgICAgICAgICAgICB3cml0ZShyZXApCisgICAgICAgIGlmIGxldmVsID09IDE6CisgICAgICAgICAgICB3cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbc3RyLl9fcmVwcl9fXSA9IF9wcHJpbnRfc3RyCisKKyAgICBkZWYgX3BwcmludF9ieXRlcyhzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgaWYgbGVuKG9iamVjdCkgPD0gNDoKKyAgICAgICAgICAgIHdyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXJlbnMgPSBsZXZlbCA9PSAxCisgICAgICAgIGlmIHBhcmVuczoKKyAgICAgICAgICAgIGluZGVudCArPSAxCisgICAgICAgICAgICBhbGxvd2FuY2UgKz0gMQorICAgICAgICAgICAgd3JpdGUoJygnKQorICAgICAgICBkZWxpbSA9ICcnCisgICAgICAgIGZvciByZXAgaW4gX3dyYXBfYnl0ZXNfcmVwcihvYmplY3QsIHNlbGYuX3dpZHRoIC0gaW5kZW50LCBhbGxvd2FuY2UpOgorICAgICAgICAgICAgd3JpdGUoZGVsaW0pCisgICAgICAgICAgICB3cml0ZShyZXApCisgICAgICAgICAgICBpZiBub3QgZGVsaW06CisgICAgICAgICAgICAgICAgZGVsaW0gPSAnXG4nICsgJyAnKmluZGVudAorICAgICAgICBpZiBwYXJlbnM6CisgICAgICAgICAgICB3cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbYnl0ZXMuX19yZXByX19dID0gX3BwcmludF9ieXRlcworCisgICAgZGVmIF9wcHJpbnRfYnl0ZWFycmF5KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICB3cml0ZSgnYnl0ZWFycmF5KCcpCisgICAgICAgIHNlbGYuX3BwcmludF9ieXRlcyhieXRlcyhvYmplY3QpLCBzdHJlYW0sIGluZGVudCArIDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwgKyAxKQorICAgICAgICB3cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbYnl0ZWFycmF5Ll9fcmVwcl9fXSA9IF9wcHJpbnRfYnl0ZWFycmF5CisKKyAgICBkZWYgX3BwcmludF9tYXBwaW5ncHJveHkoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHN0cmVhbS53cml0ZSgnbWFwcGluZ3Byb3h5KCcpCisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuY29weSgpLCBzdHJlYW0sIGluZGVudCArIDEzLCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbX3R5cGVzLk1hcHBpbmdQcm94eVR5cGUuX19yZXByX19dID0gX3BwcmludF9tYXBwaW5ncHJveHkKKworICAgIGRlZiBfZm9ybWF0X2RpY3RfaXRlbXMoc2VsZiwgaXRlbXMsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk6CisgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIGluZGVudCArPSBzZWxmLl9pbmRlbnRfcGVyX2xldmVsCisgICAgICAgIGRlbGltbmwgPSAnLFxuJyArICcgJyAqIGluZGVudAorICAgICAgICBsYXN0X2luZGV4ID0gbGVuKGl0ZW1zKSAtIDEKKyAgICAgICAgZm9yIGksIChrZXksIGVudCkgaW4gZW51bWVyYXRlKGl0ZW1zKToKKyAgICAgICAgICAgIGxhc3QgPSBpID09IGxhc3RfaW5kZXgKKyAgICAgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIoa2V5LCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgIHdyaXRlKCc6ICcpCisgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihyZXApICsgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgaWYgbGFzdCBlbHNlIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBpZiBub3QgbGFzdDoKKyAgICAgICAgICAgICAgICB3cml0ZShkZWxpbW5sKQogCiAgICAgZGVmIF9mb3JtYXRfaXRlbXMoc2VsZiwgaXRlbXMsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgaW5kZW50ICs9IHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKKyAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6CisgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQogICAgICAgICBkZWxpbW5sID0gJyxcbicgKyAnICcgKiBpbmRlbnQKICAgICAgICAgZGVsaW0gPSAnJwotICAgICAgICB3aWR0aCA9IG1heF93aWR0aCA9IHNlbGYuX3dpZHRoIC0gaW5kZW50IC0gYWxsb3dhbmNlICsgMgotICAgICAgICBmb3IgZW50IGluIGl0ZW1zOgorICAgICAgICB3aWR0aCA9IG1heF93aWR0aCA9IHNlbGYuX3dpZHRoIC0gaW5kZW50ICsgMQorICAgICAgICBpdCA9IGl0ZXIoaXRlbXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHRfZW50ID0gbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbGFzdCA9IEZhbHNlCisgICAgICAgIHdoaWxlIG5vdCBsYXN0OgorICAgICAgICAgICAgZW50ID0gbmV4dF9lbnQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0X2VudCA9IG5leHQoaXQpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBsYXN0ID0gVHJ1ZQorICAgICAgICAgICAgICAgIG1heF93aWR0aCAtPSBhbGxvd2FuY2UKKyAgICAgICAgICAgICAgICB3aWR0aCAtPSBhbGxvd2FuY2UKICAgICAgICAgICAgIGlmIHNlbGYuX2NvbXBhY3Q6CiAgICAgICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihlbnQsIGNvbnRleHQsIGxldmVsKQogICAgICAgICAgICAgICAgIHcgPSBsZW4ocmVwKSArIDIKQEAgLTI5NCw3ICszODQsOSBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgd3JpdGUoZGVsaW0pCiAgICAgICAgICAgICBkZWxpbSA9IGRlbGltbmwKLSAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlIGlmIGxhc3QgZWxzZSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQogCiAgICAgZGVmIF9yZXByKHNlbGYsIG9iamVjdCwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgICByZXByLCByZWFkYWJsZSwgcmVjdXJzaXZlID0gc2VsZi5mb3JtYXQob2JqZWN0LCBjb250ZXh0LmNvcHkoKSwKQEAgLTMxMiwyOSArNDA0LDkzIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gX3NhZmVfcmVwcihvYmplY3QsIGNvbnRleHQsIG1heGxldmVscywgbGV2ZWwpCiAKKyAgICBkZWYgX3BwcmludF9kZWZhdWx0X2RpY3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmRmID0gc2VsZi5fcmVwcihvYmplY3QuZGVmYXVsdF9mYWN0b3J5LCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBpbmRlbnQgKz0gbGVuKGNscy5fX25hbWVfXykgKyAxCisgICAgICAgIHN0cmVhbS53cml0ZSgnJXMoJXMsXG4lcycgJSAoY2xzLl9fbmFtZV9fLCByZGYsICcgJyAqIGluZGVudCkpCisgICAgICAgIHNlbGYuX3BwcmludF9kaWN0KG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5fX3JlcHJfX10gPSBfcHByaW50X2RlZmF1bHRfZGljdAorCisgICAgZGVmIF9wcHJpbnRfY291bnRlcihzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKHsnKQorICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQorICAgICAgICBpdGVtcyA9IG9iamVjdC5tb3N0X2NvbW1vbigpCisgICAgICAgIHNlbGYuX2Zvcm1hdF9kaWN0X2l0ZW1zKGl0ZW1zLCBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIGxlbihjbHMuX19uYW1lX18pICsgMSwgYWxsb3dhbmNlICsgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnfSknKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Db3VudGVyLl9fcmVwcl9fXSA9IF9wcHJpbnRfY291bnRlcgorCisgICAgZGVmIF9wcHJpbnRfY2hhaW5fbWFwKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdC5tYXBzKToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBzdHJlYW0ud3JpdGUoY2xzLl9fbmFtZV9fICsgJygnKQorICAgICAgICBpbmRlbnQgKz0gbGVuKGNscy5fX25hbWVfXykgKyAxCisgICAgICAgIGZvciBpLCBtIGluIGVudW1lcmF0ZShvYmplY3QubWFwcyk6CisgICAgICAgICAgICBpZiBpID09IGxlbihvYmplY3QubWFwcykgLSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChtLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KG0sIHN0cmVhbSwgaW5kZW50LCAxLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJyxcbicgKyAnICcgKiBpbmRlbnQpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLkNoYWluTWFwLl9fcmVwcl9fXSA9IF9wcHJpbnRfY2hhaW5fbWFwCisKKyAgICBkZWYgX3BwcmludF9kZXF1ZShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCisgICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKKyAgICAgICAgc3RyZWFtLndyaXRlKCdbJykKKyAgICAgICAgaWYgb2JqZWN0Lm1heGxlbiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJ10pJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgcm1sID0gc2VsZi5fcmVwcihvYmplY3QubWF4bGVuLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXSxcbiVzbWF4bGVuPSVzKScgJSAoJyAnICogaW5kZW50LCBybWwpKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5kZXF1ZS5fX3JlcHJfX10gPSBfcHByaW50X2RlcXVlCisKKyAgICBkZWYgX3BwcmludF91c2VyX2RpY3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Vc2VyRGljdC5fX3JlcHJfX10gPSBfcHByaW50X3VzZXJfZGljdAorCisgICAgZGVmIF9wcHJpbnRfdXNlcl9saXN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmRhdGEsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsIC0gMSkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuVXNlckxpc3QuX19yZXByX19dID0gX3BwcmludF91c2VyX2xpc3QKKworICAgIGRlZiBfcHByaW50X3VzZXJfc3RyaW5nKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmRhdGEsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsIC0gMSkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuVXNlclN0cmluZy5fX3JlcHJfX10gPSBfcHByaW50X3VzZXJfc3RyaW5nCiAKICMgUmV0dXJuIHRyaXBsZSAocmVwcl9zdHJpbmcsIGlzcmVhZGFibGUsIGlzcmVjdXJzaXZlKS4KIAogZGVmIF9zYWZlX3JlcHIob2JqZWN0LCBjb250ZXh0LCBtYXhsZXZlbHMsIGxldmVsKToKICAgICB0eXAgPSB0eXBlKG9iamVjdCkKLSAgICBpZiB0eXAgaXMgc3RyOgotICAgICAgICBpZiAnbG9jYWxlJyBub3QgaW4gX3N5cy5tb2R1bGVzOgotICAgICAgICAgICAgcmV0dXJuIHJlcHIob2JqZWN0KSwgVHJ1ZSwgRmFsc2UKLSAgICAgICAgaWYgIiciIGluIG9iamVjdCBhbmQgJyInIG5vdCBpbiBvYmplY3Q6Ci0gICAgICAgICAgICBjbG9zdXJlID0gJyInCi0gICAgICAgICAgICBxdW90ZXMgPSB7JyInOiAnXFwiJ30KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNsb3N1cmUgPSAiJyIKLSAgICAgICAgICAgIHF1b3RlcyA9IHsiJyI6ICJcXCcifQotICAgICAgICBxZ2V0ID0gcXVvdGVzLmdldAotICAgICAgICBzaW8gPSBfU3RyaW5nSU8oKQotICAgICAgICB3cml0ZSA9IHNpby53cml0ZQotICAgICAgICBmb3IgY2hhciBpbiBvYmplY3Q6Ci0gICAgICAgICAgICBpZiBjaGFyLmlzYWxwaGEoKToKLSAgICAgICAgICAgICAgICB3cml0ZShjaGFyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3cml0ZShxZ2V0KGNoYXIsIHJlcHIoY2hhcilbMTotMV0pKQotICAgICAgICByZXR1cm4gKCIlcyVzJXMiICUgKGNsb3N1cmUsIHNpby5nZXR2YWx1ZSgpLCBjbG9zdXJlKSksIFRydWUsIEZhbHNlCisgICAgaWYgdHlwIGluIF9idWlsdGluX3NjYWxhcnM6CisgICAgICAgIHJldHVybiByZXByKG9iamVjdCksIFRydWUsIEZhbHNlCiAKICAgICByID0gZ2V0YXR0cih0eXAsICJfX3JlcHJfXyIsIE5vbmUpCiAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGRpY3QpIGFuZCByIGlzIGRpY3QuX19yZXByX186CkBAIC0zOTksNiArNTU1LDggQEAKICAgICByZXAgPSByZXByKG9iamVjdCkKICAgICByZXR1cm4gcmVwLCAocmVwIGFuZCBub3QgcmVwLnN0YXJ0c3dpdGgoJzwnKSksIEZhbHNlCiAKK19idWlsdGluX3NjYWxhcnMgPSBmcm96ZW5zZXQoe3N0ciwgYnl0ZXMsIGJ5dGVhcnJheSwgaW50LCBmbG9hdCwgY29tcGxleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIHR5cGUoTm9uZSl9KQogCiBkZWYgX3JlY3Vyc2lvbihvYmplY3QpOgogICAgIHJldHVybiAoIjxSZWN1cnNpb24gb24gJXMgd2l0aCBpZD0lcz4iCkBAIC00MTgsNSArNTc2LDIyIEBACiAgICAgcHJpbnQoIl9zYWZlX3JlcHI6IiwgdDIgLSB0MSkKICAgICBwcmludCgicGZvcm1hdDoiLCB0MyAtIHQyKQogCitkZWYgX3dyYXBfYnl0ZXNfcmVwcihvYmplY3QsIHdpZHRoLCBhbGxvd2FuY2UpOgorICAgIGN1cnJlbnQgPSBiJycKKyAgICBsYXN0ID0gbGVuKG9iamVjdCkgLy8gNCAqIDQKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ob2JqZWN0KSwgNCk6CisgICAgICAgIHBhcnQgPSBvYmplY3RbaTogaSs0XQorICAgICAgICBjYW5kaWRhdGUgPSBjdXJyZW50ICsgcGFydAorICAgICAgICBpZiBpID09IGxhc3Q6CisgICAgICAgICAgICB3aWR0aCAtPSBhbGxvd2FuY2UKKyAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiB3aWR0aDoKKyAgICAgICAgICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgeWllbGQgcmVwcihjdXJyZW50KQorICAgICAgICAgICAgY3VycmVudCA9IHBhcnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGUKKyAgICBpZiBjdXJyZW50OgorICAgICAgICB5aWVsZCByZXByKGN1cnJlbnQpCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgX3BlcmZjaGVjaygpCmRpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CmluZGV4IGY2NWVlYWYuLjExYzViNTAgMTAwNjQ0Ci0tLSBhL0xpYi9weV9jb21waWxlLnB5CisrKyBiL0xpYi9weV9jb21waWxlLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiUm91dGluZSB0byAiY29tcGlsZSIgYSAucHkgZmlsZSB0byBhIC5weWMgKG9yIC5weW8pIGZpbGUuCisiIiJSb3V0aW5lIHRvICJjb21waWxlIiBhIC5weSBmaWxlIHRvIGEgLnB5YyBmaWxlLgogCiBUaGlzIG1vZHVsZSBoYXMgaW50aW1hdGUga25vd2xlZGdlIG9mIHRoZSBmb3JtYXQgb2YgLnB5YyBmaWxlcy4KICIiIgogCi1pbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCkBAIC02Nyw3ICs2Nyw3IEBACiAKICAgICA6cGFyYW0gZmlsZTogVGhlIHNvdXJjZSBmaWxlIG5hbWUuCiAgICAgOnBhcmFtIGNmaWxlOiBUaGUgdGFyZ2V0IGJ5dGUgY29tcGlsZWQgZmlsZSBuYW1lLiAgV2hlbiBub3QgZ2l2ZW4sIHRoaXMKLSAgICAgICAgZGVmYXVsdHMgdG8gdGhlIFBFUCAzMTQ3IGxvY2F0aW9uLgorICAgICAgICBkZWZhdWx0cyB0byB0aGUgUEVQIDMxNDcvUEVQIDQ4OCBsb2NhdGlvbi4KICAgICA6cGFyYW0gZGZpbGU6IFB1cnBvcnRlZCBmaWxlIG5hbWUsIGkuZS4gdGhlIGZpbGUgbmFtZSB0aGF0IHNob3dzIHVwIGluCiAgICAgICAgIGVycm9yIG1lc3NhZ2VzLiAgRGVmYXVsdHMgdG8gdGhlIHNvdXJjZSBmaWxlIG5hbWUuCiAgICAgOnBhcmFtIGRvcmFpc2U6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBhbiBleGNlcHRpb24gc2hvdWxkIGJlCkBAIC04NSwxMiArODUsMTIgQEAKICAgICBOb3RlIHRoYXQgaXQgaXNuJ3QgbmVjZXNzYXJ5IHRvIGJ5dGUtY29tcGlsZSBQeXRob24gbW9kdWxlcyBmb3IKICAgICBleGVjdXRpb24gZWZmaWNpZW5jeSAtLSBQeXRob24gaXRzZWxmIGJ5dGUtY29tcGlsZXMgYSBtb2R1bGUgd2hlbgogICAgIGl0IGlzIGxvYWRlZCwgYW5kIGlmIGl0IGNhbiwgd3JpdGVzIG91dCB0aGUgYnl0ZWNvZGUgdG8gdGhlCi0gICAgY29ycmVzcG9uZGluZyAucHljIChvciAucHlvKSBmaWxlLgorICAgIGNvcnJlc3BvbmRpbmcgLnB5YyBmaWxlLgogCiAgICAgSG93ZXZlciwgaWYgYSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHVzZXJzLCBpdCBpcyBhCiAgICAgZ29vZCBpZGVhIHRvIGJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlcyB1cG9uIGluc3RhbGxhdGlvbiwgc2luY2UKICAgICBvdGhlciB1c2VycyBtYXkgbm90IGJlIGFibGUgdG8gd3JpdGUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcmllcywKLSAgICBhbmQgdGh1cyB0aGV5IHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdGhlIC5weWMvLnB5byBmaWxlLCBhbmQgdGhlbgorICAgIGFuZCB0aHVzIHRoZXkgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0aGUgLnB5YyBmaWxlLCBhbmQgdGhlbgogICAgIHRoZXkgd291bGQgYmUgYnl0ZS1jb21waWxpbmcgZXZlcnkgbW9kdWxlIGVhY2ggdGltZSBpdCBpcyBsb2FkZWQuCiAgICAgVGhpcyBjYW4gc2xvdyBkb3duIHByb2dyYW0gc3RhcnQtdXAgY29uc2lkZXJhYmx5LgogCkBAIC0xMDUsOCArMTA1LDkgQEAKICAgICAiIiIKICAgICBpZiBjZmlsZSBpcyBOb25lOgogICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgb3B0aW1pemF0aW9uID0gb3B0aW1pemUgaWYgb3B0aW1pemUgPj0gMSBlbHNlICcnCiAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPW9wdGltaXphdGlvbikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSkKICAgICBpZiBvcy5wYXRoLmlzbGluayhjZmlsZSk6CkBAIC0xMzYsMTAgKzEzNywxMCBAQAogICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBzb3VyY2Vfc3RhdHMgPSBsb2FkZXIucGF0aF9zdGF0cyhmaWxlKQotICAgIGJ5dGVjb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2NvZGVfdG9fYnl0ZWNvZGUoCisgICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY29kZV90b19ieXRlY29kZSgKICAgICAgICAgICAgIGNvZGUsIHNvdXJjZV9zdGF0c1snbXRpbWUnXSwgc291cmNlX3N0YXRzWydzaXplJ10pCi0gICAgbW9kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9jYWxjX21vZGUoZmlsZSkKLSAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fd3JpdGVfYXRvbWljKGNmaWxlLCBieXRlY29kZSwgbW9kZSkKKyAgICBtb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX2NhbGNfbW9kZShmaWxlKQorICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl93cml0ZV9hdG9taWMoY2ZpbGUsIGJ5dGVjb2RlLCBtb2RlKQogICAgIHJldHVybiBjZmlsZQogCiAKZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQppbmRleCAwYzdiNjBkLi5lZTU1OGJmIDEwMDc1NQotLS0gYS9MaWIvcHlkb2MucHkKKysrIGIvTGliL3B5ZG9jLnB5CkBAIC01Myw2ICs1Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBpbnNwZWN0CkBAIC0yMTMsNyArMjE0LDcgQEAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CiAgICAgIiIiR3Vlc3Mgd2hldGhlciBhIHBhdGggcmVmZXJzIHRvIGEgcGFja2FnZSBkaXJlY3RvcnkuIiIiCiAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgZm9yIGV4dCBpbiAoJy5weScsICcucHljJywgJy5weW8nKToKKyAgICAgICAgZm9yIGV4dCBpbiAoJy5weScsICcucHljJyk6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocGF0aCwgJ19faW5pdF9fJyArIGV4dCkpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNjQsOSArMjY1LDggQEAKICAgICAgICAgICAgICMgWFhYIFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8gcGFzcyBpbiB0aGUgbG9hZGVyIGhlcmUuCiAgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oJ19fdGVtcF9fJywgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyPWxvYWRlcikKLSAgICAgICAgICAgIF9zcGVjID0gaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gX3NwZWMubG9hZCgpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2xvYWQoc3BlYykKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCkBAIC0yOTMsMTQgKzI5MywxMyBAQAogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgaWYgaXNfYnl0ZWNvZGU6Ci0gICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLlNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLlNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCiAgICAgZWxzZToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCiAgICAgIyBYWFggV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBwYXNzIGluIHRoZSBsb2FkZXIgaGVyZS4KICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aCwgbG9hZGVyPWxvYWRlcikKLSAgICBfc3BlYyA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9zcGVjLmxvYWQoKQorICAgICAgICByZXR1cm4gaW1wb3J0bGliLl9ib290c3RyYXAuX2xvYWQoc3BlYykKICAgICBleGNlcHQ6CiAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHBhdGgsIHN5cy5leGNfaW5mbygpKQogCkBAIC0xNTkxLDcgKzE1OTAsMTAgQEAKICAgICBpZiBpc2luc3RhbmNlKHRoaW5nLCBzdHIpOgogICAgICAgICBvYmplY3QgPSBsb2NhdGUodGhpbmcsIGZvcmNlbG9hZCkKICAgICAgICAgaWYgb2JqZWN0IGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gUHl0aG9uIGRvY3VtZW50YXRpb24gZm91bmQgZm9yICVyJyAlIHRoaW5nKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJycnXAorTm8gUHl0aG9uIGRvY3VtZW50YXRpb24gZm91bmQgZm9yICVyLgorVXNlIGhlbHAoKSB0byBnZXQgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KK1VzZSBoZWxwKHN0cikgZm9yIGhlbHAgb24gdGhlIHN0ciBjbGFzcy4nJycgJSB0aGluZykKICAgICAgICAgcmV0dXJuIG9iamVjdCwgdGhpbmcKICAgICBlbHNlOgogICAgICAgICBuYW1lID0gZ2V0YXR0cih0aGluZywgJ19fbmFtZV9fJywgTm9uZSkKQEAgLTE2MzgsOSArMTY0MCw4IEBACiAgICAgdHJ5OgogICAgICAgICBvYmplY3QsIG5hbWUgPSByZXNvbHZlKHRoaW5nLCBmb3JjZWxvYWQpCiAgICAgICAgIHBhZ2UgPSBodG1sLnBhZ2UoZGVzY3JpYmUob2JqZWN0KSwgaHRtbC5kb2N1bWVudChvYmplY3QsIG5hbWUpKQotICAgICAgICBmaWxlID0gb3BlbihuYW1lICsgJy5odG1sJywgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKQotICAgICAgICBmaWxlLndyaXRlKHBhZ2UpCi0gICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICB3aXRoIG9wZW4obmFtZSArICcuaHRtbCcsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUocGFnZSkKICAgICAgICAgcHJpbnQoJ3dyb3RlJywgbmFtZSArICcuaHRtbCcpCiAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRXJyb3JEdXJpbmdJbXBvcnQpIGFzIHZhbHVlOgogICAgICAgICBwcmludCh2YWx1ZSkKQEAgLTE4MzUsNyArMTgzNiw4IEBACiAgICAgICAgIGlmIGluc3BlY3Quc3RhY2soKVsxXVszXSA9PSAnPyc6CiAgICAgICAgICAgICBzZWxmKCkKICAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICByZXR1cm4gJzxweWRvYy5IZWxwZXIgaW5zdGFuY2U+JworICAgICAgICByZXR1cm4gJzwlcy4lcyBpbnN0YW5jZT4nICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKQogCiAgICAgX0dvSW50ZXJhY3RpdmUgPSBvYmplY3QoKQogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCByZXF1ZXN0PV9Hb0ludGVyYWN0aXZlKToKQEAgLTE4NjEsNyArMTg2MywxMCBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICByZXF1ZXN0ID0gcmVwbGFjZShyZXF1ZXN0LCAnIicsICcnLCAiJyIsICcnKS5zdHJpcCgpCiAgICAgICAgICAgICBpZiByZXF1ZXN0Lmxvd2VyKCkgaW4gKCdxJywgJ3F1aXQnKTogYnJlYWsKLSAgICAgICAgICAgIHNlbGYuaGVscChyZXF1ZXN0KQorICAgICAgICAgICAgaWYgcmVxdWVzdCA9PSAnaGVscCc6CisgICAgICAgICAgICAgICAgc2VsZi5pbnRybygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuaGVscChyZXF1ZXN0KQogCiAgICAgZGVmIGdldGxpbmUoc2VsZiwgcHJvbXB0KToKICAgICAgICAgIiIiUmVhZCBvbmUgbGluZSwgdXNpbmcgaW5wdXQoKSB3aGVuIGFwcHJvcHJpYXRlLiIiIgpAQCAtMTg3NSw4ICsxODgwLDcgQEAKICAgICBkZWYgaGVscChzZWxmLCByZXF1ZXN0KToKICAgICAgICAgaWYgdHlwZShyZXF1ZXN0KSBpcyB0eXBlKCcnKToKICAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LnN0cmlwKCkKLSAgICAgICAgICAgIGlmIHJlcXVlc3QgPT0gJ2hlbHAnOiBzZWxmLmludHJvKCkKLSAgICAgICAgICAgIGVsaWYgcmVxdWVzdCA9PSAna2V5d29yZHMnOiBzZWxmLmxpc3RrZXl3b3JkcygpCisgICAgICAgICAgICBpZiByZXF1ZXN0ID09ICdrZXl3b3Jkcyc6IHNlbGYubGlzdGtleXdvcmRzKCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCA9PSAnc3ltYm9scyc6IHNlbGYubGlzdHN5bWJvbHMoKQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICd0b3BpY3MnOiBzZWxmLmxpc3R0b3BpY3MoKQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICdtb2R1bGVzJzogc2VsZi5saXN0bW9kdWxlcygpCkBAIC0xODg5LDYgKzE4OTMsNyBAQAogICAgICAgICAgICAgZWxpZiByZXF1ZXN0IGluIHNlbGYua2V5d29yZHM6IHNlbGYuc2hvd3RvcGljKHJlcXVlc3QpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgaW4gc2VsZi50b3BpY3M6IHNlbGYuc2hvd3RvcGljKHJlcXVlc3QpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3Q6IGRvYyhyZXF1ZXN0LCAnSGVscCBvbiAlczonLCBvdXRwdXQ9c2VsZi5fb3V0cHV0KQorICAgICAgICAgICAgZWxzZTogZG9jKHN0ciwgJ0hlbHAgb24gJXM6Jywgb3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHJlcXVlc3QsIEhlbHBlcik6IHNlbGYoKQogICAgICAgICBlbHNlOiBkb2MocmVxdWVzdCwgJ0hlbHAgb24gJXM6Jywgb3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJ1xuJykKQEAgLTIwODQsOSArMjA4OSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIF9zcGVjID0gaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IF9zcGVjLmxvYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2xvYWQoc3BlYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgb25lcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG1vZG5hbWUpCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggZTU0YjZkZC4uY2MwYzZhYiAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSwxMyArMSwxMyBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU3VuIEZlYiAyMiAyMzo1MjowNSAyMDE1CisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBNYXkgMzAgMTY6NTc6NTEgMjAxNQogdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICBpZiBub3QgZXhwcmVzc2lvbjogcmFpc2UgQXNzZXJ0aW9uRXJyb3JcblxuVGhlIGV4dGVuZGVkIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuXG5UaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgcmVmZXJcbnRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIChjb21tYW5kXG5saW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgTm90ZVxudGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGV4cHJlc3Npb25cbnRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZVxuc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgYnVpbHQtaW5cbnZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKLSAnYXNzaWdubWVudCc6IHUnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgdGFyZ2V0X2xpc3QgIl0iXG4gICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4gICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgICAgIHwgc2xpY2luZ1xuICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvclxuKmF0dHJpYnV0ZXJlZiosICpzdWJzY3JpcHRpb24qLCBhbmQgKnNsaWNpbmcqLilcblxuQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgKHJlbWVtYmVyIHRoYXRcbnRoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgdGhlIGxhdHRlclxueWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvIGVhY2ggb2ZcbnRoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cblxuQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiB0aGUgdGFyZ2V0XG4obGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiBhdHRyaWJ1dGVcbnJlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxudWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzIHZhbGlkaXR5LCBhbmRcbm1heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlIHJ1bGVzXG5vYnNlcnZlZCBieSB2YXJpb3VzIHR5cGVzIGFuZCB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGdpdmVuIHdpdGggdGhlXG5kZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZVxuaGllcmFyY2h5KikuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgdGFyZ2V0IGxpc3QsIG9wdGlvbmFsbHkgZW5jbG9zZWQgaW5cbnBhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cywgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhcyBmb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQ6IFRoZSBvYmplY3QgaXMgYXNzaWduZWQgdG9cbiAgdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0czogVGhlXG4gIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlXG4gIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb21cbiAgbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2VcbiAgICB3aXRoIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldFxuICAgIGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkLFxuICAgIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIHRhcmdldHMgYmVmb3JlIHRoZSBzdGFycmVkIHRhcmdldC4gIFRoZVxuICAgIGZpbmFsIGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQgdG8gdGhlIHRhcmdldHMgYWZ0ZXIgdGhlXG4gICAgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiB0aGUgc2VxdWVuY2UgaXNcbiAgICB0aGVuIGFzc2lnbmVkIHRvIHRoZSBzdGFycmVkIHRhcmdldCAodGhlIGxpc3QgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mXG4gICAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzXG5mb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gaWRlbnRpZmllciAobmFtZSk6XG5cbiAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIG9yICJub25sb2NhbCIgc3RhdGVtZW50XG4gICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGVcbiAgICBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsXG4gICAgbmFtZXNwYWNlIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSAibm9ubG9jYWwiLFxuICAgIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW5cbiAgc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXJcbiAgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiBpc1xuICByYWlzZWQuICBUaGF0IG9iamVjdCBpcyB0aGVuIGFza2VkIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvXG4gIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCBpdCByYWlzZXNcbiAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgIkF0dHJpYnV0ZUVycm9yIikuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgaXMgYWx3YXlzXG4gIHNldCBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4gIFRodXMsIHRoZVxuICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSBzYW1lXG4gIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSwgdGhlXG4gIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHN1YnNjcmlwdGlvbjogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlIHNlcXVlbmNlXG4gIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KS5cbiAgTmV4dCwgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgbGlzdCksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZVxuICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoLCBhbmQgdGhlIHNlcXVlbmNlIGlzIGFza2VkXG4gIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGl0cyBpdGVtIHdpdGggdGhhdCBpbmRleC4gIElmIHRoZVxuICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gYVxuICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZ1wncyBrZXkgdHlwZSxcbiAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgd2hpY2ggbWFwc1xuICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgcmVwbGFjZSBhblxuICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgbmV3XG4gIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cblxuICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzIGNhbGxlZCB3aXRoXG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0XG4gIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdFxuICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmVcbiAgZXZhbHVhdGVkLCBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGVcbiAgc2VxdWVuY2VcJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmXG4gIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZVxuICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGgsIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZVxuICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZlxuICB0aGUgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIHRhcmdldFxuICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHMgYmV0d2VlblxudGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NpbXVsdGFuZW5vdXNcJyAoZm9yXG5leGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICp3aXRoaW4qIHRoZVxuY29sbGVjdGlvbiBvZiBhc3NpZ25lZC10byB2YXJpYWJsZXMgb2NjdXIgbGVmdC10by1yaWdodCwgc29tZXRpbWVzXG5yZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzXG4iWzAsIDJdIjpcblxuICAgeCA9IFswLCAxXVxuICAgaSA9IDBcbiAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyB1cGRhdGVkXG4gICBwcmludCh4KVxuXG5TZWUgYWxzbzogKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAiKnRhcmdldCIgZmVhdHVyZS5cblxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAorICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiB0YXJnZXRfbGlzdCAiXSJcbiAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbiAgICAgICAgICAgICAgfCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgfCBzbGljaW5nXG4gICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yXG4qYXR0cmlidXRlcmVmKiwgKnN1YnNjcmlwdGlvbiosIGFuZCAqc2xpY2luZyouKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGVcbiAgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmVcbiAgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbVxuICBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhblxuICAgIGFzdGVyaXNrLCBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZVxuICAgIHdpdGggYXQgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0XG4gICAgbGlzdCwgbWludXMgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsXG4gICAgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlXG4gICAgZmluYWwgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGVcbiAgICBzdGFycmVkIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpc1xuICAgIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgImdsb2JhbCIgb3IgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbiAgICBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZVxuICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWxcbiAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICJub25sb2NhbCIsXG4gICAgcmVzcGVjdGl2ZWx5LlxuXG4gIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSB0aGVcbiAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgdG8gcmVhY2hcbiAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgZGVzdHJ1Y3RvciAoaWYgaXRcbiAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSB0YXJnZXQgbGlzdCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyBvciBpblxuICBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlclxuICBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgaXRlbXMgYXJlXG4gIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lbm91c1wnIChmb3JcbmV4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBvY2N1ciBsZWZ0LXRvLXJpZ2h0LCBzb21ldGltZXNcbnJlc3VsdGluZyBpbiBjb25mdXNpb24uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBwcmludHNcbiJbMCwgMl0iOlxuXG4gICB4ID0gWzAsIDFdXG4gICBpID0gMFxuICAgaSwgeFtpXSA9IDEsIDIgICAgICAgICAjIGkgaXMgdXBkYXRlZCwgdGhlbiB4W2ldIGlzIHVwZGF0ZWRcbiAgIHByaW50KHgpXG5cblNlZSBhbHNvOiAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICIqdGFyZ2V0IiBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAogICdhdG9tLWlkZW50aWZpZXJzJzogdSdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cblxuKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgdGV4dHVhbGx5IG9jY3VycyBpblxuYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBhbmRcbmRvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgY29uc2lkZXJlZCBhICpwcml2YXRlXG5uYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhIGxvbmdlciBmb3JtXG5iZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gaW5zZXJ0cyB0aGVcbmNsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhIHNpbmdsZSB1bmRlcnNjb3JlXG5pbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXIgIl9fc3BhbSJcbm9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gIl9IYW1fX3NwYW0iLlxuVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaFxudGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nXG4obG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5XG5oYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsIG5vXG50cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKICAnYXRvbS1saXRlcmFscyc6IHUiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCiAgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiB1J1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAogICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6IHUnXG5BdHRyaWJ1dGUgcmVmZXJlbmNlc1xuKioqKioqKioqKioqKioqKioqKipcblxuQW4gYXR0cmlidXRlIHJlZmVyZW5jZSBpcyBhIHByaW1hcnkgZm9sbG93ZWQgYnkgYSBwZXJpb2QgYW5kIGEgbmFtZTpcblxuICAgYXR0cmlidXRlcmVmIDo6PSBwcmltYXJ5ICIuIiBpZGVudGlmaWVyXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzXG5hdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyBvYmplY3QgaXMgdGhlblxuYXNrZWQgdG8gcHJvZHVjZSB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXMgdGhlIGlkZW50aWZpZXIuICBUaGlzXG5wcm9kdWN0aW9uIGNhbiBiZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlICJfX2dldGF0dHJfXygpIiBtZXRob2QuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICJBdHRyaWJ1dGVFcnJvciIgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCi0gJ2F1Z2Fzc2lnbic6IHUnXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0IGJlIGFuXG5pbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZVxubnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci5cbkluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgbmVnYXRpdmVcbnJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdhdWdhc3NpZ24nOiB1J1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6IHUnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiQCIgbV9leHByIHxcbiAgICAgICAgICAgICAgbV9leHByICIvLyIgdV9leHByfCBtX2V4cHIgIi8iIHVfZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0IGJlIGFuXG5pbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZVxubnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci5cbkluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgbmVnYXRpdmVcbnJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlICJAIiAoYXQpIG9wZXJhdG9yIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIG1hdHJpeFxubXVsdGlwbGljYXRpb24uICBObyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhpcyBvcGVyYXRvci5cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5UaGUgIi8iIChkaXZpc2lvbikgYW5kICIvLyIgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gRGl2aXNpb24gb2YgaW50ZWdlcnMgeWllbGRzIGEgZmxvYXQsIHdoaWxlXG5mbG9vciBkaXZpc2lvbiBvZiBpbnRlZ2VycyByZXN1bHRzIGluIGFuIGludGVnZXI7IHRoZSByZXN1bHQgaXMgdGhhdFxub2YgbWF0aGVtYXRpY2FsIGRpdmlzaW9uIHdpdGggdGhlIFwnZmxvb3JcJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxucmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLlxuXG5UaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbiJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAiNCowLjcgK1xuMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgc2lnblxuYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgaXNcbnN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIFsxXS5cblxuVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlIGZvbGxvd2luZ1xuaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgYWxzb1xuY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbih4Ly95LCB4JXkpIi4gWzJdLlxuXG5JbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAiJSJcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgImRpdm1vZCgpIlxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgImFicygpIiBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cblxuVGhlICIrIiAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBiZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbmNvbmNhdGVuYXRlZC5cblxuVGhlICItIiAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS5cbicsCiAgJ2JpdHdpc2UnOiB1J1xuQmluYXJ5IGJpdHdpc2Ugb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5FYWNoIG9mIHRoZSB0aHJlZSBiaXR3aXNlIG9wZXJhdGlvbnMgaGFzIGEgZGlmZmVyZW50IHByaW9yaXR5IGxldmVsOlxuXG4gICBhbmRfZXhwciA6Oj0gc2hpZnRfZXhwciB8IGFuZF9leHByICImIiBzaGlmdF9leHByXG4gICB4b3JfZXhwciA6Oj0gYW5kX2V4cHIgfCB4b3JfZXhwciAiXiIgYW5kX2V4cHJcbiAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG5cblRoZSAiJiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCBtdXN0XG5iZSBpbnRlZ2Vycy5cblxuVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgYXJndW1lbnRzLFxud2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicsCiAgJ2JsdGluLWNvZGUtb2JqZWN0cyc6IHUnXG5Db2RlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5Db2RlIG9iamVjdHMgYXJlIHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIHJlcHJlc2VudCAicHNldWRvLVxuY29tcGlsZWQiIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUgc3VjaCBhcyBhIGZ1bmN0aW9uIGJvZHkuIFRoZXkgZGlmZmVyXG5mcm9tIGZ1bmN0aW9uIG9iamVjdHMgYmVjYXVzZSB0aGV5IGRvblwndCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZWlyXG5nbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSByZXR1cm5lZCBieSB0aGUgYnVpbHQtXG5pbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAiY29kZSIgbW9kdWxlLlxuXG5BIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyBpdCAoaW5zdGVhZCBvZiBhXG5zb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKICAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogdSdcblRoZSBFbGxpcHNpcyBPYmplY3RcbioqKioqKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgKlNsaWNpbmdzKikuICBJdCBzdXBwb3J0c1xubm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuIkVsbGlwc2lzIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKEVsbGlwc2lzKSgpIiBwcm9kdWNlcyB0aGVcbiJFbGxpcHNpcyIgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJFbGxpcHNpcyIgb3IgIi4uLiIuXG4nLApAQCAtMTcsOSArMTcsOSBAQAogICdicmVhayc6IHUnXG5UaGUgImJyZWFrIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBicmVha19zdG10IDo6PSAiYnJlYWsiXG5cbiJicmVhayIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbmxvb3AuXG5cbkl0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAiZWxzZSJcbmNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhICJmb3IiIGxvb3AgaXMgdGVybWluYXRlZCBieSAiYnJlYWsiLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxua2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG5cbldoZW4gImJyZWFrIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxubG9vcC5cbicsCiAgJ2NhbGxhYmxlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAogICdjYWxscyc6IHUnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhICpmdW5jdGlvbiopIHdpdGggYSBwb3NzaWJseVxuZW1wdHkgc2VyaWVzIG9mICphcmd1bWVudHMqOlxuXG4gICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCBjb21wcmVoZW5zaW9uXSAiKSJcbiAgIGFyZ3VtZW50X2xpc3QgICAgICAgIDo6PSBwb3NpdGlvbmFsX2FyZ3VtZW50cyBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqIiBleHByZXNzaW9uXSBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZF9hcmd1bWVudHMgWyIsIiAiKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqIiBleHByZXNzaW9uIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGV4cHJlc3Npb25cbiAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBleHByZXNzaW9uICgiLCIgZXhwcmVzc2lvbikqXG4gICBrZXl3b3JkX2FyZ3VtZW50cyAgICA6Oj0ga2V5d29yZF9pdGVtICgiLCIga2V5d29yZF9pdGVtKSpcbiAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG5cbkFuIG9wdGlvbmFsIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZFxua2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4iX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICJUeXBlRXJyb3IiXG5leGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCBhc1xudGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvIHBhcnNlXG50aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgImV4cHJlc3Npb24iXG5tdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzIGl0ZXJhYmxlIGFyZSB0cmVhdGVkXG5hcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50czsgaWYgdGhlcmUgYXJlXG5wb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCAiZXhwcmVzc2lvbiIgZXZhbHVhdGVzIHRvIGFcbnNlcXVlbmNlICp5MSosIC4uLiwgKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rTlxucG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCAqeTEqLCAuLi4sICp5TSouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiB0aGVcbmtleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiBzeW50YXhcbnRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyBub3RcbmFyaXNlLlxuXG5JZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4iZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggImV4cHJlc3Npb24iIGFuZCBhcyBhbiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50LCBhXG4iVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciJcbmNhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxubmFtZXMuXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSAicmV0dXJuIlxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSAiX19jYWxsX18oKSIgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW4gdGhlXG4gICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAotICdjbGFzcyc6IHUnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggYXJlXG5udW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgdGhlICI9PSIgYW5kXG4iIT0iIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0byBiZVxudW5lcXVhbCwgd2hpbGUgdGhlICI8IiwgIj4iLCAiPj0iIGFuZCAiPD0iIG9wZXJhdG9ycyByYWlzZSBhXG4iVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0IGRvIG5vdFxuaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2YgdHlwZXMuICBZb3UgY2FuXG5jb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnlcbmRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkIGluIHNlY3Rpb25cbipCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgInggaXMgeCIgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgInggIT0geCIuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCBib3RoICIzIDxcbiAgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsIHJldHVybiAiRmFsc2UiLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXJcbiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4gIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iIGhhcyB0aGUgc2FtZVxuICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QsIHRoZVxuICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCBbMSwyLDNdIikuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgIihrZXksIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zICIoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJykiIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzICJ7MSwyfSIgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4gIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXRcbiAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyIG9mXG50aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3QgbnVtZXJpY1xudHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpc1xubm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgIk5vdEltcGxlbWVudGVkIi5cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuXG5UaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggaXMgeSIgaXNcbnRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxueWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCi0gJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4gICAgdGhlcmUgaXMgYSAiZmluYWxseSIgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlclxuICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mXG4gICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgb3JcbiAgICAiYnJlYWsiIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4gICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAorICdjbGFzcyc6IHUnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuJywKKyAnY29tcGFyaXNvbnMnOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gSWYgYm90aCBhcmVcbm51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLCB0aGUgIj09IiBhbmRcbiIhPSIgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRvIGJlXG51bmVxdWFsLCB3aGlsZSB0aGUgIjwiLCAiPiIsICI+PSIgYW5kICI8PSIgb3BlcmF0b3JzIHJhaXNlIGFcbiJUeXBlRXJyb3IiIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRoYXQgZG8gbm90XG5pbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZiB0eXBlcy4gIFlvdSBjYW5cbmNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pbiB0eXBlcyBieVxuZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSAiX19ndF9fKCkiLCBkZXNjcmliZWQgaW4gc2VjdGlvblxuKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgIkRlY2ltYWwoXCdOYU5cJykiIGFyZSBzcGVjaWFsLiBUaGV5XG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgInggaXMgeCIgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgInggIT0geCIuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCBib3RoICIzIDxcbiAgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsIHJldHVybiAiRmFsc2UiLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXJcbiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4gIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iIGhhcyB0aGUgc2FtZVxuICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QsIHRoZVxuICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCBbMSwyLDNdIikuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgIihrZXksIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zICIoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJykiIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzICJ7MSwyfSIgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4gIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXRcbiAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyIG9mXG50aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3QgbnVtZXJpY1xudHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpc1xubm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgIk5vdEltcGxlbWVudGVkIi5cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuXG5UaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggaXMgeSIgaXNcbnRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxueWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCisgJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZnVuY2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcblxuXG5Db3JvdXRpbmVzXG49PT09PT09PT09XG5cblxuQ29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluaXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgIGFzeW5jX2Z1bmNkZWYgOjo9ICJhc3luYyIgZnVuY2RlZlxuXG5FeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCBtYW55XG5wb2ludHMgKHNlZSAqY29yb3V0aW5lKi4pICAiYXdhaXQiIGV4cHJlc3Npb25zLCAiYXN5bmMgZm9yIiBhbmQgImFzeW5jXG53aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIHRoZWlyIGJvZGllcy5cblxuRnVuY3Rpb25zIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXggYXJlIGFsd2F5cyBjb3JvdXRpbmVcbmZ1bmN0aW9ucywgZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluICJhd2FpdCIgb3IgImFzeW5jIiBrZXl3b3Jkcy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAieWllbGQiIGV4cHJlc3Npb25zIGluIGNvcm91dGluZXMuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuXG5UaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG5cbkFuICphc3luY2hyb25vdXMgaXRlcmFibGUqIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiBpdHNcbippdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kICphc3luY2hyb25vdXMgaXRlcmF0b3IqIGNhbiBjYWxsXG5hc3luY2hyb25vdXMgY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudCBhbGxvd3MgY29udmVuaWVudCBpdGVyYXRpb24gb3ZlclxuYXN5bmNocm9ub3VzIGl0ZXJhdG9ycy5cblxuVGhlIGZvbGxvd2luZyBjb2RlOlxuXG4gICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4gICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cbklzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuXG4gICBpdGVyID0gKElURVIpXG4gICBpdGVyID0gYXdhaXQgdHlwZShpdGVyKS5fX2FpdGVyX18oaXRlcilcbiAgIHJ1bm5pbmcgPSBUcnVlXG4gICB3aGlsZSBydW5uaW5nOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbiAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOlxuICAgICAgICAgICBydW5uaW5nID0gRmFsc2VcbiAgICAgICBlbHNlOlxuICAgICAgICAgICBCTE9DS1xuICAgZWxzZTpcbiAgICAgICBCTE9DSzJcblxuU2VlIGFsc28gIl9fYWl0ZXJfXygpIiBhbmQgIl9fYW5leHRfXygpIiBmb3IgZGV0YWlscy5cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuJywKICAnY29udGludWUnOiB1J1xuVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuXG4iY29udGludWUiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxubG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIG9yICJmaW5hbGx5IlxuY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiB0aGVcbm5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gImNvbnRpbnVlIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhXG4iZmluYWxseSIgY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCiAgJ2NvbnZlcnNpb25zJzogdSdcbkFyaXRobWV0aWMgY29udmVyc2lvbnNcbioqKioqKioqKioqKioqKioqKioqKipcblxuV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgcGhyYXNlXG4idGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwiIHRoaXMgbWVhbnNcbnRoYXQgdGhlIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBidWlsdC1pbiB0eXBlcyB3b3JrcyBhcyBmb2xsb3dzOlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZVxuICBvdGhlciBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBhcyBhXG5sZWZ0IGFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCkBAIC0yNywxMCArMjcsMTAgQEAKICAnZGVidWdnZXInOiB1J1xuInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbioqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgcmVhZGluZ1xudGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgYW5kICJjbWQiLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbSB1bmRlclxuY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlICJyZWFkbGluZSIgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuXG4icGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3JcbmV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0IGV4ZWN1dGVzXG5jb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSAqRGVidWdnZXIgQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gIChTZWUgdGhlXG4gICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuICJydW5ldmFsKCkiIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgICJydW4oKSIuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yIGluc3RhbnRpYXRpbmdcbnRoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3Ugd2FudFxudG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCiAgJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCiAgJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvblxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxubmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4iZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlIHJlc3VsdGluZ1xua2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSBvcmRlclxudGhleSBhcmUgcHJvZHVjZWQuXG5cblJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCi0gJ2R5bmFtaWMtZmVhdHVyZXMnOiB1J1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdkeW5hbWljLWZlYXR1cmVzJzogdSdcbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdlbHNlJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCiAgJ2V4Y2VwdGlvbnMnOiB1J1xuRXhjZXB0aW9uc1xuKioqKioqKioqKlxuXG5FeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgY29udHJvbFxub2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbmNvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBlcnJvciBpc1xuZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgYnkgYW55XG5jb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrIHdoZXJlXG50aGUgZXJyb3Igb2NjdXJyZWQuXG5cblRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSBydW4tdGltZVxuZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG5leHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gRXhjZXB0aW9uXG5oYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICBUaGVcbiJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNsZWFudXBcbmNvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCB3aGV0aGVyIGFuXG5leGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cblxuUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuIG91dGVyXG5sZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgdGhlXG5mYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgY29kZVxuZnJvbSB0aGUgdG9wKS5cblxuV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgdGVybWluYXRlc1xuZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluIGxvb3AuICBJblxuZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlIGV4Y2VwdGlvbiBpc1xuIlN5c3RlbUV4aXQiLlxuXG5FeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiBjbGF1c2UgaXNcbnNlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0IHJlZmVyZW5jZSB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSBjYW4gYmVcbnJlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbmV4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cblxuTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gIFRoZWlyXG4gIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgd2l0aG91dFxuICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuIHVuZGVyXG4gIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cblxuU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHRyeVxuc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgYnlcbiAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSBpc1xuICAgIGNvbXBpbGVkLlxuJywKLSAnZXhlY21vZGVsJzogdSdcbkV4ZWN1dGlvbiBtb2RlbFxuKioqKioqKioqKioqKioqXG5cblxuTmFtaW5nIGFuZCBiaW5kaW5nXG49PT09PT09PT09PT09PT09PT1cblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvXG50aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uIGJsb2NrXG5jb250YWluaW5nIHRoZSB1c2UuXG5cbkEgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG51bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzXG5kZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHRcbmZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkXG5hcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEFcbnNjcmlwdCBjb21tYW5kIChhIGNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmVcbndpdGggdGhlIFwnKiotYyoqXCcgb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZFxudG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGFcbmNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlXG5jb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvclxuZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXNcbm1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyB3aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGUgbW9kdWxlXG5sZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlIGNvZGVcbmJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2tcbmJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbklmIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kLCBhblxuIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhXG5zdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lXG5uYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uLlxuVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeVxub2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlIGluXG5tZXRob2RzLlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cbklmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCisgJ2V4ZWNtb2RlbCc6IHUnXG5FeGVjdXRpb24gbW9kZWxcbioqKioqKioqKioqKioqKlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy4gRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0b1xudGhlICpiaW5kaW5nKiBvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgaW4gdGhlIGlubmVybW9zdCBmdW5jdGlvbiBibG9ja1xuY29udGFpbmluZyB0aGUgdXNlLlxuXG5BICpibG9jayogaXMgYSBwaWVjZSBvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYVxudW5pdC4gVGhlIGZvbGxvd2luZyBhcmUgYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzc1xuZGVmaW5pdGlvbi4gRWFjaCBjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0XG5maWxlIChhIGZpbGUgZ2l2ZW4gYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZFxuYXMgYSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBXG5zY3JpcHQgY29tbWFuZCAoYSBjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lXG53aXRoIHRoZSBcJyoqLWMqKlwnIG9wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWRcbnRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cblxuQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSBjb250YWluc1xuc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZGV0ZXJtaW5lc1xud2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrXCdzIGV4ZWN1dGlvbiBoYXNcbmNvbXBsZXRlZC5cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuICBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhXG5jbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZVxuY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLSB0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3JcbmV4cHJlc3Npb25zIHNpbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzXG5tZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgd2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5JZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0IGJsb2NrLFxudW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlIG1vZHVsZVxubGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZSBjb2RlXG5ibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrXG5idXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5JZiB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbCB2YXJpYWJsZSB0aGF0IGhhcyBub3QgYmVlbiBib3VuZCwgYW5cbiJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gICJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYVxuc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuICBJZlxudGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgVGhlXG4iZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uXG5pbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlIHZhcmlhYmxlXG5jb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSBnbG9iYWwuXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZVxubmFtZXMuIFRoZXNlIHJlZmVyZW5jZXMgZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbi5cblRoZSBuYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnlcbm9mIHRoZSBjbGFzcy4gIE5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlIGFyZSBub3QgdmlzaWJsZSBpblxubWV0aG9kcy5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCiAgJ2V4cHJsaXN0cyc6IHUnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKICAnZmxvYXRpbmcnOiB1J1xuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsXG5kZWZpbml0aW9uczpcblxuICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbiAgIHBvaW50ZmxvYXQgICAgOjo9IFtpbnRwYXJ0XSBmcmFjdGlvbiB8IGludHBhcnQgIi4iXG4gICBleHBvbmVudGZsb2F0IDo6PSAoaW50cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4gICBpbnRwYXJ0ICAgICAgIDo6PSBkaWdpdCtcbiAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdCtcbiAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0K1xuXG5Ob3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmdcbnJhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXJcbmFzICI3N2UxMCIuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAogICdmb3InOiB1J1xuVGhlICJmb3IiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKQEAgLTQyLDMxICs0MiwzMSBAQAogICdpZic6IHUnXG5UaGUgImlmIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAogICdpbWFnaW5hcnknOiB1J1xuSW1hZ2luYXJ5IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKipcblxuSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBpbnRwYXJ0KSAoImoiIHwgIkoiKVxuXG5BbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0IG9mIDAuMC5cbkNvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnNcbmFuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhIGNvbXBsZXhcbm51bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBpdCxcbmUuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG5cbiAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCiAgJ2ltcG9ydCc6IHUnXG5UaGUgImltcG9ydCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyAiZnJvbSIgY2xhdXNlKSBpcyBleGVjdXRlZCBpbiB0d29cbnN0ZXBzOlxuXG4xLiBmaW5kIGEgbW9kdWxlLCBsb2FkaW5nIGFuZCBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5XG5cbjIuIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlXG4gICB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cblxuV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpIHRoZVxudHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyB0aG91Z2hcbnRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBhcmVcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgZm9sbG93aW5nXG4gICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgcHVibGljXG5uYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZVxuc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0IG11c3RcbmJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0XG5tb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kXG5hcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljXG5uYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90XG5iZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyICgiXCdfXCciKS4gICJfX2FsbF9fIiBzaG91bGQgY29udGFpblxudGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nXG5pdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlXG5pbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG5cblRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIgLS0tIGlzIG9ubHlcbmFsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4gIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yXG5mdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgImZyb20iIHlvdVxuY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuImZyb20gLiBpbXBvcnQgbW9kIiBmcm9tIGEgbW9kdWxlIGluIHRoZSAicGtnIiBwYWNrYWdlIHRoZW4geW91IHdpbGxcbmVuZCB1cCBpbXBvcnRpbmcgInBrZy5tb2QiLiBJZiB5b3UgZXhlY3V0ZSAiZnJvbSAuLnN1YnBrZzIgaW1wb3J0IG1vZCJcbmZyb20gd2l0aGluICJwa2cuc3VicGtnMSIgeW91IHdpbGwgaW1wb3J0ICJwa2cuc3VicGtnMi5tb2QiLiBUaGVcbnNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXMgY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSBkeW5hbWljYWxseSB0aGUgbW9kdWxlcyB0byBiZSBsb2FkZWQuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbiB3aGVyZSB0aGUgZmVhdHVyZVxuYmVjb21lcyBzdGFuZGFyZC5cblxuVGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zXG5vZiBQeXRob24gdGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXRcbmFsbG93cyB1c2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZVxucmVsZWFzZSBpbiB3aGljaCB0aGUgZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgImFic29sdXRlX2ltcG9ydCIsXG4iZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsICJ1bmljb2RlX2xpdGVyYWxzIiwgInByaW50X2Z1bmN0aW9uIixcbiJuZXN0ZWRfc2NvcGVzIiBhbmQgIndpdGhfc3RhdGVtZW50Ii4gIFRoZXkgYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZVxudGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgd2lsbFxuYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4iY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlIHN0YXRlbWVudFxud2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkIHdpdGggdGhlXG5mdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbiJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgZGV0YWlscy5cblxuQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCB3aWxsXG50YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0IG5hbWVcbnRvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBpblxuZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuZXhlY3V0ZWQuXG5cblNlZSBhbHNvOiAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cblxuICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCi0gJ2luJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggYXJlXG5udW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgdGhlICI9PSIgYW5kXG4iIT0iIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0byBiZVxudW5lcXVhbCwgd2hpbGUgdGhlICI8IiwgIj4iLCAiPj0iIGFuZCAiPD0iIG9wZXJhdG9ycyByYWlzZSBhXG4iVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0IGRvIG5vdFxuaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2YgdHlwZXMuICBZb3UgY2FuXG5jb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnlcbmRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkIGluIHNlY3Rpb25cbipCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgInggaXMgeCIgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgInggIT0geCIuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCBib3RoICIzIDxcbiAgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsIHJldHVybiAiRmFsc2UiLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXJcbiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4gIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iIGhhcyB0aGUgc2FtZVxuICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QsIHRoZVxuICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCBbMSwyLDNdIikuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgIihrZXksIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zICIoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJykiIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzICJ7MSwyfSIgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4gIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXRcbiAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyIG9mXG50aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3QgbnVtZXJpY1xudHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpc1xubm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgIk5vdEltcGxlbWVudGVkIi5cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuXG5UaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggaXMgeSIgaXNcbnRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxueWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCi0gJ2ludGVnZXJzJzogdSdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweDEwMDAwMDAwMFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCisgJ2luJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggYXJlXG5udW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgdGhlICI9PSIgYW5kXG4iIT0iIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0byBiZVxudW5lcXVhbCwgd2hpbGUgdGhlICI8IiwgIj4iLCAiPj0iIGFuZCAiPD0iIG9wZXJhdG9ycyByYWlzZSBhXG4iVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0IGRvIG5vdFxuaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2YgdHlwZXMuICBZb3UgY2FuXG5jb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnlcbmRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkIGluIHNlY3Rpb25cbipCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgc3BlY2lhbC4gVGhleVxuICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsICJ4IGlzIHgiIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsICJ4ICE9IHgiLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8XG4gIGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbCByZXR1cm4gIkZhbHNlIi5cblxuKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgZXF1aXZhbGVudHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJvcmQoKSIpIG9mIHRoZWlyXG4gIGNoYXJhY3RlcnMuIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvblxuICBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCAiWzEsMix4XSA8PSBbMSwyLHldIiBoYXMgdGhlIHNhbWVcbiAgdmFsdWUgYXMgInggPD0geSIuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90IGV4aXN0LCB0aGVcbiAgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgIlsxLDJdIDwgWzEsMiwzXSIpLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lICIoa2V5LCB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAiKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpIiByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyAiezEsMn0iIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXlcbiAgYXJlIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZFxuICBzbWFsbGVyIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0XG4gIGNvbnNpc3RlbnRseSB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlciBvZlxudGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0IG51bWVyaWNcbnR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXNcbm5vdCBzdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zICJOb3RJbXBsZW1lbnRlZCIuXG5cblRoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbm5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgdGVzdHNcbndoZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbmxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSkiLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGlzXG5hIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbnNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbmluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG5pcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG5kdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cblxuVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiIGlzXG50cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyBub3QgeSJcbnlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAorICdpbnRlZ2Vycyc6IHUnXG5JbnRlZ2VyIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cbkludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgYmluaW50ZWdlclxuICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4gICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4gICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4gICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuICAgaGV4aW50ZWdlciAgICAgOjo9ICIwIiAoIngiIHwgIlgiKSBoZXhkaWdpdCtcbiAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4gICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4gICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcblxuVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXRcbmNhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cblxuTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuXG5UaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvblxudXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG5cblNvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4gICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJywKICAnbGFtYmRhJzogdSdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvIGNyZWF0ZVxuYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb24iXG55aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb25cbm9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4gICAgICAgcmV0dXJuIGV4cHJlc3Npb25cblxuU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAogICdsaXN0cyc6IHUnXG5MaXN0IGRpc3BsYXlzXG4qKioqKioqKioqKioqXG5cbkEgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkIGluXG5zcXVhcmUgYnJhY2tldHM6XG5cbiAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtleHByZXNzaW9uX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcblxuQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LCB0aGUgY29udGVudHMgYmVpbmcgc3BlY2lmaWVkXG5ieSBlaXRoZXIgYSBsaXN0IG9mIGV4cHJlc3Npb25zIG9yIGEgY29tcHJlaGVuc2lvbi4gIFdoZW4gYSBjb21tYS1cbnNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlIGV2YWx1YXRlZFxuZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBwbGFjZWQgaW50byB0aGUgbGlzdCBvYmplY3QgaW4gdGhhdCBvcmRlci5cbldoZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZVxuZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAotICduYW1pbmcnOiB1J1xuTmFtaW5nIGFuZCBiaW5kaW5nXG4qKioqKioqKioqKioqKioqKipcblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvXG50aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uIGJsb2NrXG5jb250YWluaW5nIHRoZSB1c2UuXG5cbkEgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG51bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzXG5kZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHRcbmZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkXG5hcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEFcbnNjcmlwdCBjb21tYW5kIChhIGNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmVcbndpdGggdGhlIFwnKiotYyoqXCcgb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZFxudG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGFcbmNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlXG5jb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvclxuZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXNcbm1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyB3aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGUgbW9kdWxlXG5sZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlIGNvZGVcbmJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2tcbmJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbklmIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kLCBhblxuIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhXG5zdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lXG5uYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uLlxuVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeVxub2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlIGluXG5tZXRob2RzLlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cbklmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy4gRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0b1xudGhlICpiaW5kaW5nKiBvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgaW4gdGhlIGlubmVybW9zdCBmdW5jdGlvbiBibG9ja1xuY29udGFpbmluZyB0aGUgdXNlLlxuXG5BICpibG9jayogaXMgYSBwaWVjZSBvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYVxudW5pdC4gVGhlIGZvbGxvd2luZyBhcmUgYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzc1xuZGVmaW5pdGlvbi4gRWFjaCBjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0XG5maWxlIChhIGZpbGUgZ2l2ZW4gYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZFxuYXMgYSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBXG5zY3JpcHQgY29tbWFuZCAoYSBjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lXG53aXRoIHRoZSBcJyoqLWMqKlwnIG9wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWRcbnRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cblxuQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSBjb250YWluc1xuc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZGV0ZXJtaW5lc1xud2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrXCdzIGV4ZWN1dGlvbiBoYXNcbmNvbXBsZXRlZC5cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuICBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhXG5jbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZVxuY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLSB0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3JcbmV4cHJlc3Npb25zIHNpbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzXG5tZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgd2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5JZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0IGJsb2NrLFxudW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlIG1vZHVsZVxubGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZSBjb2RlXG5ibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrXG5idXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5JZiB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbCB2YXJpYWJsZSB0aGF0IGhhcyBub3QgYmVlbiBib3VuZCwgYW5cbiJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gICJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYVxuc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuICBJZlxudGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzIHNlYXJjaGVkLiAgVGhlXG4iZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uXG5pbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlIHZhcmlhYmxlXG5jb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSBnbG9iYWwuXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZVxubmFtZXMuIFRoZXNlIHJlZmVyZW5jZXMgZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbi5cblRoZSBuYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnlcbm9mIHRoZSBjbGFzcy4gIE5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlIGFyZSBub3QgdmlzaWJsZSBpblxubWV0aG9kcy5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKICAnbm9ubG9jYWwnOiB1J1xuVGhlICJub25sb2NhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgbm9ubG9jYWxfc3RtdCA6Oj0gIm5vbmxvY2FsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGV4Y2x1ZGluZ1xuZ2xvYmFscy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYmluZGluZyBpc1xudG8gc2VhcmNoIHRoZSBsb2NhbCBuYW1lc3BhY2UgZmlyc3QuICBUaGUgc3RhdGVtZW50IGFsbG93c1xuZW5jYXBzdWxhdGVkIGNvZGUgdG8gcmViaW5kIHZhcmlhYmxlcyBvdXRzaWRlIG9mIHRoZSBsb2NhbCBzY29wZVxuYmVzaWRlcyB0aGUgZ2xvYmFsIChtb2R1bGUpIHNjb3BlLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiBhXG4iZ2xvYmFsIiBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgbXVzdCBub3QgY29sbGlkZSB3aXRoIHByZS1cbmV4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMDQqKiAtIEFjY2VzcyB0byBOYW1lcyBpbiBPdXRlciBTY29wZXNcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKICAnbnVtYmVycyc6IHUnXG5OdW1lcmljIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4oY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG5pbWFnaW5hcnkgbnVtYmVyKS5cblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAotICdudW1lcmljLXR5cGVzJzogdSdcbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGVcbiAgIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW5cbiAgICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLiAgVGhlICJfX2Rpdm1vZF9fKCkiXG4gICBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nICJfX2Zsb29yZGl2X18oKSIgYW5kXG4gICAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvICJfX3RydWVkaXZfXygpIi4gIE5vdGVcbiAgIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0IGFuIG9wdGlvbmFsIHRoaXJkXG4gICBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbiAicG93KCkiIGZ1bmN0aW9uIGlzXG4gICB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsXG4gICAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuXG4gICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3RcbiAgIHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLCAiPDw9IixcbiAgICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlXG4gICBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2hcbiAgIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbFxuICAgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhblxuICAgIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9IHguX19pYWRkX18oeSkiXG4gICAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmUgY29uc2lkZXJlZCwgYXNcbiAgIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpbiBzaXR1YXRpb25zLCBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9ycyAoc2VlICpXaHkgZG9lc1xuICAgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBhZGRpdGlvblxuICAgd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YSBtb2RlbC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICIrIixcbiAgICJhYnMoKSIgYW5kICJ+IikuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICJpbnQoKSIsXG4gICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGVcbiAgIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciBQeXRob24gbmVlZHNcbiAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciBvYmplY3QgKHN1Y2hcbiAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAib2N0KCkiXG4gICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbnVtZXJpY1xuICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG5cbiAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsIHdoZW5cbiAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlIGRlZmluZWQsIGFuZFxuICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAorICdudW1lcmljLXR5cGVzJzogdSdcbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzIGNhbGxlZC5cbiAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nXG4gICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvXG4gICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0XG4gICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pblxuICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKVxuICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lc1xuICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsXG4gICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0b1xuICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0XG4gICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpY1xuICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGVcbiAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzc1xuICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID1cbiAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluXG4gICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzXG4gICAoc2VlICpXaHkgZG9lcyBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlXG4gICBhZGRpdGlvbiB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhXG4gICBtb2RlbC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICIrIixcbiAgICJhYnMoKSIgYW5kICJ+IikuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICJpbnQoKSIsXG4gICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGVcbiAgIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciBQeXRob24gbmVlZHNcbiAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciBvYmplY3QgKHN1Y2hcbiAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAib2N0KCkiXG4gICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbnVtZXJpY1xuICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG5cbiAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsIHdoZW5cbiAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlIGRlZmluZWQsIGFuZFxuICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAogICdvYmplY3RzJzogdSdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG5yZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSBtZW1vcnlcbmFkZHJlc3Mgd2hlcmUgIngiIGlzIHN0b3JlZC5cblxuQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHNcbihlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlc1xuZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzXG50eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3RcJ3Ncbip0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG5cblRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbmNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlXG5vbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGVcbm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyIHRoZVxuY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoc29cbnlvdSBzaG91bGQgYWx3YXlzIGNsb3NlIGZpbGVzIGV4cGxpY2l0bHkpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSAiY2xvc2UoKSIgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IGFuZCB0aGUgXCcid2l0aCJcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAxIixcbiJhIiBhbmQgImIiIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZSB2YWx1ZVxub25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9IFtdIiwgImMiXG5hbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbmNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgImMgPSBkID0gW10iIGFzc2lnbnMgdGhlIHNhbWUgb2JqZWN0XG50byBib3RoICJjIiBhbmQgImQiLilcbicsCi0gJ29wZXJhdG9yLXN1bW1hcnknOiB1J1xuT3BlcmF0b3IgcHJlY2VkZW5jZVxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgaW4gUHl0aG9uLCBmcm9tXG5sb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBleHBvbmVudGlhdGlvbiwgd2hpY2hcbmdyb3VwcyBmcm9tIHJpZ2h0IHRvIGxlZnQpLlxuXG5Ob3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSB0ZXN0cywgYWxsIGhhdmVcbnRoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGhhdmUgYSBsZWZ0LXRvLXJpZ2h0IGNoYWluaW5nIGZlYXR1cmUgYXNcbmRlc2NyaWJlZCBpbiB0aGUgKkNvbXBhcmlzb25zKiBzZWN0aW9uLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJsYW1iZGEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpZiIgLS0gImVsc2UiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJvciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJub3QiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpbiIsICJub3QgaW4iLCAiaXMiLCAiaXMgbm90IiwgIjwiLCAiPD0iLCAiPiIsIHwgQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG58ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCByZW1haW5kZXIgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG58ICJ4KGFyZ3VtZW50cy4uLikiLCAieC5hdHRyaWJ1dGUiICAgICAgICAgICAgICAgIHwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIoZXhwcmVzc2lvbnMuLi4pIiwgIltleHByZXNzaW9ucy4uLl0iLCAie2tleTogIHwgQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG58IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzZXQgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzXG4gICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAxZTEwMCIsIHdoaWNoXG4gICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlIGZ1bmN0aW9uXG4gICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyB0aGUgc2lnbiBvZiB0aGVcbiAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gdGhpcyBjYXNlLlxuICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciAieC8veSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICIoeC14JXkpLy95IiBkdWUgdG9cbiAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgcmVzdWx0LCBpblxuICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiBiZSB2ZXJ5IGNsb3NlXG4gICAgdG8gIngiLlxuXG5bM10gV2hpbGUgY29tcGFyaXNvbnMgYmV0d2VlbiBzdHJpbmdzIG1ha2Ugc2Vuc2UgYXQgdGhlIGJ5dGVcbiAgICBsZXZlbCwgdGhleSBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gdXNlcnMuICBGb3IgZXhhbXBsZSwgdGhlXG4gICAgc3RyaW5ncyAiIlxcdTAwQzciIiBhbmQgIiJcXHUwMzI3XFx1MDA0MyIiIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cblxuWzRdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgdGhlXG4gICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlIHNlZW1pbmdseSB1bnVzdWFsXG4gICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSB0aG9zZVxuICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy5cbiAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG5cbls1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpY1xuICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAiMioqLTEiIGlzICIwLjUiLlxuJywKKyAnb3BlcmF0b3Itc3VtbWFyeSc6IHUnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSBpbiBQeXRob24sIGZyb21cbmxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGV4cG9uZW50aWF0aW9uLCB3aGljaFxuZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbk5vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5IHRlc3RzLCBhbGwgaGF2ZVxudGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgZmVhdHVyZSBhc1xuZGVzY3JpYmVkIGluIHRoZSAqQ29tcGFyaXNvbnMqIHNlY3Rpb24uXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgIj49IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiICAgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXZpc2lvbiwgcmVtYWluZGVyIFs1XSAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImF3YWl0IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBd2FpdCBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgdmFsdWUuLi59IiwgIntleHByZXNzaW9ucy4uLn0iICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksIGZvciBmbG9hdHNcbiAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yIGV4YW1wbGUsIGFuZFxuICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gSUVFRSA3NTQgZG91YmxlLVxuICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArIDFlMTAwIiwgd2hpY2hcbiAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgZnVuY3Rpb25cbiAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mIHRoZVxuICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiB0aGlzIGNhc2UuXG4gICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gIih4LXgleSkvL3kiIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiIGJlIHZlcnkgY2xvc2VcbiAgICB0byAieCIuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZVxuICAgIGxldmVsLCB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGVcbiAgICBzdHJpbmdzICIiXFx1MDBDNyIiIGFuZCAiIlxcdTAzMjdcXHUwMDQzIiIgY29tcGFyZSBkaWZmZXJlbnRseSwgZXZlblxuICAgIHRob3VnaCB0aGV5IGJvdGggcmVwcmVzZW50IHRoZSBzYW1lIHVuaWNvZGUgY2hhcmFjdGVyIChMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gIFRvIGNvbXBhcmUgc3RyaW5ncyBpbiBhIGh1bWFuXG4gICAgcmVjb2duaXphYmxlIHdheSwgY29tcGFyZSB1c2luZyAidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGVcbiAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWxcbiAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlIHRob3NlXG4gICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgY29uc3RhbnRzLlxuICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgdGhlIHNhbWVcbiAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG5cbls2XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljXG4gICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICIyKiotMSIgaXMgIjAuNSIuXG4nLAogICdwYXNzJzogdSdcblRoZSAicGFzcyIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG4gICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuXG4icGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCi0gJ3Bvd2VyJzogdSdcblRoZSBwb3dlciBvcGVyYXRvclxuKioqKioqKioqKioqKioqKioqXG5cblRoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG5sZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlXG5zeW50YXggaXM6XG5cbiAgIHBvd2VyIDo6PSBwcmltYXJ5IFsiKioiIHVfZXhwcl1cblxuVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZVxub3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpblxudGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0IGFyZ3VtZW50XG5yYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmVcbmZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCBhbmQgdGhlIHJlc3VsdCBpcyBvZiB0aGF0IHR5cGUuXG5cbkZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzIHVubGVzc1xudGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG5cblJhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgIlplcm9EaXZpc2lvbkVycm9yIi5cblJhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAiY29tcGxleCJcbm51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCisgJ3Bvd2VyJzogdSdcblRoZSBwb3dlciBvcGVyYXRvclxuKioqKioqKioqKioqKioqKioqXG5cblRoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG5sZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlXG5zeW50YXggaXM6XG5cbiAgIHBvd2VyIDo6PSBhd2FpdCBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAogICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCiAgJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCiAgJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAogICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCiAgJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCiAgJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyAiX19lcV9fKCkiLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICAiX19uZV9fKCkiIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZSB0aGVcbiAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uIGNyZWF0aW5nXG4gICAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvbiBvcGVyYXRpb25zIGFuZFxuICAgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgY2xhc3MgYm9keSBpc1xuZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZVxucmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbiJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlIGluc3RhbmNlc1xub2YgIk1ldGEiOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gInR5cGUoKSIgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG5pdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcyxcbioqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb21cbnRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuXG4gICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gImV4ZWMoKSIgaXMgdGhhdFxubGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm1cbm9mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb25cbmxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGVcbmN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlXG5tZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZVxuICAgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluICJwb3coKSIgZnVuY3Rpb24gaXNcbiAgIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdFxuICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuXG4gICAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID0geC5fX2lhZGRfXyh5KSJcbiAgIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhc1xuICAgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUgKldoeSBkb2VzXG4gICBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGFkZGl0aW9uXG4gICB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSxcbiAgICB1bmRlciBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2RcbiAgICBpZGVhIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmXG4gICAgaXQgaXMgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzICJfX2FkZF9fKCkiKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdFxuICAgIHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZSByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpTdHJpbmcgRm9ybWF0dGluZyopIGFuZCB0aGUgb3RoZXIgYmFzZWQgb25cbkMgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciByYW5nZSBvZiB0eXBlcyBhbmRcbmlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyIGZvciB0aGUgY2FzZXNcbml0IGNhbiBoYW5kbGUgKCpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqKS5cblxuVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzXG5hIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXNcbihpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlICJyZSIgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnXHhkZlwnIiBpcyBlcXVpdmFsZW50IHRvICIic3MiIi5cbiAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gbm90aGluZyB0byAiXCdceGRmXCciO1xuICAgImNhc2Vmb2xkKCkiIGNvbnZlcnRzIGl0IHRvICIic3MiIi5cblxuICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJIHNwYWNlKS4gVGhlXG4gICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICJsZW4ocykiLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgIlwndXRmLThcJyIuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICJcJ3N0cmljdFwnIixcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gT3RoZXIgcG9zc2libGVcbiAgIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLCAiXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbiAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgdmlhXG4gICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiAqRXJyb3IgSGFuZGxlcnMqLiBGb3IgYSBsaXN0XG4gICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZCBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3VmZml4ZXNcbiAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqIGNoYXJhY3RlcnNcbiAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kIHNvIG9uKS5cbiAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gYW5kIHRoZVxuICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgY2hhcmFjdGVyIGlzIGFcbiAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4gICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLiAoVGhlXG4gICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXG4gICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpc1xuICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCBhbmQgdGhlXG4gICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgdGhlXG4gICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoKVxuICAgXCcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNFwnXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoNClcbiAgIFwnMDEgIDAxMiAwMTIzICAgIDAxMjM0XCdcblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiBUaGlzIG1ldGhvZCB1c2VzIHRoZSAqdW5pdmVyc2FsIG5ld2xpbmVzKiBhcHByb2FjaCB0b1xuICAgc3BsaXR0aW5nIGxpbmVzLiBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKVxuICAgICAgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuICAgICAgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsIFwna2xcXHJcXG5cJ11cblxuICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG5cbiAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbiAgICAgIFtdXG4gICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ09uZSBsaW5lXCddXG5cbiAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuXG4gICAgICA+Pj4gXCdcJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnXCddXG4gICAgICA+Pj4gXCdUd28gbGluZXNcXG5cJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnVHdvIGxpbmVzXCcsIFwnXCddXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgIk5vbmUiLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byAiTm9uZSIgYXJlXG4gICBkZWxldGVkLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbVxuICAgICBjaGFyYWN0ZXIgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgImNvZGVjcyIgbW9kdWxlIChzZWVcbiAgICAgImVuY29kaW5ncy5jcDEyNTEiIGZvciBhbiBleGFtcGxlKS5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgIlwnMFwnIiBkaWdpdHMgdG9cbiAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeCAoIlwnK1wnIi8iXCctXCciXG4gICBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduIGNoYXJhY3RlclxuICAgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXNcbiAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAorICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyAiX19lcV9fKCkiLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICAiX19uZV9fKCkiIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZSB0aGVcbiAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uIGNyZWF0aW5nXG4gICAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvbiBvcGVyYXRpb25zIGFuZFxuICAgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgY2xhc3MgYm9keSBpc1xuZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZVxucmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbiJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlIGluc3RhbmNlc1xub2YgIk1ldGEiOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gInR5cGUoKSIgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG5pdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcyxcbioqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb21cbnRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuXG4gICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gImV4ZWMoKSIgaXMgdGhhdFxubGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm1cbm9mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb25cbmxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGVcbmN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlXG5tZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLlxuICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmdcbiAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG9cbiAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHRcbiAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpXG4gICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzXG4gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IixcbiAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvXG4gICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljXG4gICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZVxuICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG4gICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPVxuICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW5cbiAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnNcbiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVcbiAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGFcbiAgIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gcHJvdmlkZXNcbnNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIsIGF0XG50aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsIG1ldGhvZHMgKHRoZVxuc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZVxuY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cbicsCisgJ3N0cmluZy1tZXRob2RzJzogdSdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICJzdHIuZm9ybWF0KCkiLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mIHR5cGVzIGFuZFxuaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yIHRoZSBjYXNlc1xuaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCdceGRmXCciIGlzIGVxdWl2YWxlbnQgdG8gIiJzcyIiLlxuICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyBub3RoaW5nIHRvICJcJ1x4ZGZcJyI7XG4gICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgc3BhY2UpLiBUaGVcbiAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgImxlbihzKSIuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgIlwnc3RyaWN0XCciLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB2aWFcbiAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICpFcnJvciBIYW5kbGVycyouIEZvciBhIGxpc3RcbiAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdWZmaXhlc1xuICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogY2hhcmFjdGVyc1xuICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiBhbmQgc28gb24pLlxuICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyBhbmQgdGhlXG4gICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIGluIHRoZSByZXN1bHRcbiAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgcG9zaXRpb24uIChUaGVcbiAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcbiAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgY29sdW1uIGlzXG4gICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkIGFuZCB0aGVcbiAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbiAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG5cbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicygpXG4gICBcJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0XCdcbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicyg0KVxuICAgXCcwMSAgMDEyIDAxMjMgICAgMDEyMzRcJ1xuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvICJzdHIuZm9ybWF0KCoqbWFwcGluZykiLCBleGNlcHQgdGhhdCAibWFwcGluZyIgaXMgdXNlZFxuICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3IgZXhhbXBsZVxuICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXIgImMiXG4gICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAiVHJ1ZSI6XG4gICAiYy5pc2FscGhhKCkiLCAiYy5pc2RlY2ltYWwoKSIsICJjLmlzZGlnaXQoKSIsIG9yICJjLmlzbnVtZXJpYygpIi5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCBpZGVudGlmaWVycyBzdWNoIGFzXG4gICAiZGVmIiBhbmQgImNsYXNzIi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gInJlcHIoKSIgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzICAgXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgICJzdHIudHJhbnNsYXRlKCkiLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gInNbc3RhcnQ6ZW5kXSIuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yIHNwbGl0dGluZ1xuICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCBpc1xuICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgICAgIFwnICAgc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgICAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJywgbWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyLDNcJ11cbiAgICAgID4+PiBcJzEsMiwsMyxcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnXCcsIFwnM1wnLCBcJ1wnXVxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdChtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIgM1wnXVxuICAgICAgPj4+IFwnICAgMSAgIDIgICAzICAgXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gIEluXG4gICBwYXJ0aWN1bGFyLCB0aGUgYm91bmRhcmllcyBhcmUgYSBzdXBlcnNldCBvZiAqdW5pdmVyc2FsIG5ld2xpbmVzKi5cblxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXFxuIiAgICAgICAgICAgICAgICAgICAgfCBMaW5lIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWQiICAgICAgICAgICAgICAgICAgfCBHcm91cCBTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgQ29kZSkgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOCIgICAgICAgICAgICAgICAgfCBMaW5lIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggU2VwYXJhdG9yICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiXFx2IiBhbmQgIlxcZiIgYWRkZWQgdG8gbGlzdCBvZiBsaW5lXG4gICBib3VuZGFyaWVzLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSlcbiAgICAgIFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLCBcJ2tsXFxyXFxuXCddXG5cbiAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuXG4gICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4gICAgICBbXVxuICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4gICAgICBbXCdPbmUgbGluZVwnXVxuXG4gICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcblxuICAgICAgPj4+IFwnXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1wnXVxuICAgICAgPj4+IFwnVHdvIGxpbmVzXFxuXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1R3byBsaW5lc1wnLCBcJ1wnXVxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZSByZXR1cm5cbiAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9vayBmb3IuXG4gICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKlxuICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogYXJndW1lbnQgaXNcbiAgIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZVxuICAgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgICAgXCdzcGFjaW91c1wnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlXCdcblxuICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50IHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkIGZyb20gdGhlIHN0cmluZy4gQ2hhcmFjdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBsZWFkaW5nXG4gICBlbmQgdW50aWwgcmVhY2hpbmcgYSBzdHJpbmcgY2hhcmFjdGVyIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgcGxhY2Ugb24gdGhlXG4gICB0cmFpbGluZyBlbmQuIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSBcJyMuLi4uLi4uIFNlY3Rpb24gMy4yLjEgSXNzdWUgIzMyIC4uLi4uLi5cJ1xuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKFwnLiMhIFwnKVxuICAgICAgXCdTZWN0aW9uIDMuMi4xIElzc3VlICMzMlwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgdGhhdFxuICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ0hlbGxvIHdvcmxkXCcudGl0bGUoKVxuICAgICAgXCdIZWxsbyBXb3JsZFwnXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuICAgICAgLi4uXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKG1hcClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlICptYXAqIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IG9mIFVuaWNvZGUgb3JkaW5hbHNcbiAgIChpbnRlZ2VycykgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciAiTm9uZSIuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvICJOb25lIiBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBOb3RlOiBBbiBldmVuIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tXG4gICAgIGNoYXJhY3RlciBtYXBwaW5nIGNvZGVjIHVzaW5nIHRoZSAiY29kZWNzIiBtb2R1bGUgKHNlZVxuICAgICAiZW5jb2RpbmdzLmNwMTI1MSIgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4gICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduXG4gICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmXG4gICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAogICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhblxuICAgYmUgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCiAgJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKICAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKICAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuICAgICAgKCJtYXRoIiBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4gICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgZnVuY3Rpb25cJ3NcbiAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbiAgICAgICJfX21vZHVsZV9fIiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZFxuICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuXG4gICBCdWlsdC1pbiBtZXRob2RzXG4gICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0aGlzXG4gICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4gICAgICAiYWxpc3QuYXBwZW5kKCkiLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4gICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgIl9faW5pdF9fKCkiIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cblxuTW9kdWxlc1xuICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4gICBjcmVhdGVkIGJ5IHRoZSAqaW1wb3J0IHN5c3RlbSogYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4gICBzdGF0ZW1lbnQgKHNlZSAiaW1wb3J0IiksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBIG1vZHVsZVxuICAgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzXG4gICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuICAgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzIGVxdWl2YWxlbnRcbiAgIHRvICJtLl9fZGljdF9fWyJ4Il0iLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZVxuICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc25cJ3QgbmVlZGVkIG9uY2VcbiAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6ICJfX2RpY3RfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWU7XG4gICAiX19kb2NfXyIgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmXG4gICB1bmF2YWlsYWJsZTsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGVcbiAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQ1xuICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpc1xuICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCBhbGxvd1xuICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSBpc1xuICAgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzICJDIiwgc2F5KSB3b3VsZCB5aWVsZCBhXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuICAgb2JqZWN0IHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlcyBpcyAiQyIuICBXaGVuIGl0IHdvdWxkIHlpZWxkIGFcbiAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCBieVxuICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cblxuICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3NcJ3MgZGljdGlvbmFyeSwgbmV2ZXJcbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cblxuICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzIGluc3RhbmNlXG4gICAoc2VlIGJlbG93KS5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBjbGFzcyBuYW1lOyAiX19tb2R1bGVfXyIgaXNcbiAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgdGhlXG4gICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSB0dXBsZVxuICAgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZVxuICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLlxuICAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwncyBjbGFzcyBoYXMgYVxuICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCBpbnN0ZWFkXG4gICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgbWV0aG9kXG4gICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gbmFtZTtcbiAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuICAgICAgImNvX3Zhcm5hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbFxuICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgaXMgYVxuICAgICAgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlXG4gICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhIHN0cmluZ1xuICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICJjb19jb25zdHMiXG4gICAgICBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX2ZpbGVuYW1lIiBpcyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICAiY29fbG5vdGFiIiBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgImNvX3N0YWNrc2l6ZSIgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nIGFcbiAgICAgIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICIweDA0IlxuICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCBhblxuICAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0ICIweDA4IiBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCBhcmJpdHJhcnlcbiAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuICAgICAgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uIilcbiAgICAgIGFsc28gdXNlIGJpdHMgaW4gImNvX2ZsYWdzIiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgY29kZSBvYmplY3RcbiAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiBpc1xuICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gZW5hYmxlZDtcbiAgICAgIGJpdHMgIjB4MTAiIGFuZCAiMHgxMDAwIiB3ZXJlIHVzZWQgaW4gZWFybGllciB2ZXJzaW9ucyBvZlxuICAgICAgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluICJjb19mbGFncyIgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgImNvX2NvbnN0cyIgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyBzdGFja1xuICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSBib3R0b21cbiAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gdGhpc1xuICAgICAgZnJhbWU7ICJmX2xvY2FscyIgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwIGxvY2FsXG4gICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICJmX2xhc3RpIlxuICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbiAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciBvZlxuICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBqdW1wc1xuICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyXG4gICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSB3cml0aW5nXG4gICAgICB0byBmX2xpbmVuby5cblxuICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIGZyYW1lLmNsZWFyKClcblxuICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBoZWxkIGJ5XG4gICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsIHRoZVxuICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlIGN5Y2xlc1xuICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbiAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuXG4gICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuXG5cbiAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zIG5vXG4gICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5IGZvcm1hdHRlZClcbiAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyBpbnRlcmFjdGl2ZSxcbiAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgInN5cy5sYXN0X3RyYWNlYmFjayIuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiB0aGVcbiAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkKSwgb3JcbiAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbiAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlIGxpbmVcbiAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyB0aGVcbiAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW5cbiAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbiAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggbm9cbiAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICJfX2dldGl0ZW1fXygpIlxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICJzdG9wIlxuICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiIGlmXG4gICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKKyAndHlwZXMnOiB1J1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoIGFkZGl0aW9uc1xud2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cblxuU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG5cJ3NwZWNpYWwgYXR0cmlidXRlcy5cJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGVcbmltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyIGRlZmluaXRpb25cbm1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxuTm9uZVxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gSXRcbiAgIGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucywgZS5nLixcbiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4gICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yXG4gICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4gICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4gICBvcGVyYXRvci4pICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuICAgU2VlICpJbXBsZW1lbnRpbmcgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyogZm9yIG1vcmUgZGV0YWlscy5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCAiLi4uIiBvciB0aGVcbiAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG4ibnVtYmVycy5OdW1iZXIiXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgIm51bWJlcnMuSW50ZWdyYWwiXG4gICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiBpbnRlZ2Vyc1xuICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG5cbiAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG5cbiAgICAgIEludGVnZXJzICgiaW50IilcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSB0aGVcbiAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGVcbiAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCBhbmRcbiAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgIiJGYWxzZSIiIG9yXG4gICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgICJudW1iZXJzLkNvbXBsZXgiICgiY29tcGxleCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXNcbiAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4IHNldFxuICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICphKiBpc1xuICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuXG4gICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbiAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpbXBsaWVzXG4gICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuXG4gICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAic3RlcCJcbiAgIHBhcmFtZXRlcjogImFbaTpqOmtdIiBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCogd2hlcmVcbiAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVcbiAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtIFUrMTBGRkZGIlxuICAgICAgICAgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgUHl0aG9uIGRvZXNuXCd0IGhhdmUgYSAiY2hhciJcbiAgICAgICAgIHR5cGU7IGluc3RlYWQsIGV2ZXJ5IGNvZGUgcG9pbnQgaW4gdGhlIHN0cmluZyBpcyByZXByZXNlbnRlZFxuICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlbmd0aFxuICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYVxuICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4gICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICAiYnl0ZXMoKSIgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgImRlY29kZSgpIlxuICAgICAgICAgbWV0aG9kLlxuXG4gICBNdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgTXV0YWJsZSBzZXF1ZW5jZXMgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZC4gIFRoZVxuICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mXG4gICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgb2YgYVxuICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4gICAiMS4wIiksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzICJhZGQoKSIuXG5cbiAgIEZyb3plbiBzZXRzXG4gICAgICBUaGVzZSByZXByZXNlbnQgYW4gaW1tdXRhYmxlIHNldC4gIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlXG4gICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgaW1tdXRhYmxlXG4gICAgICBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZiBhbm90aGVyXG4gICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICJrIlxuICAgZnJvbSB0aGUgbWFwcGluZyAiYSI7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kIGFzIHRoZVxuICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuXG4gICBUaGVyZSBpcyBjdXJyZW50bHkgYSBzaW5nbGUgaW50cmluc2ljIG1hcHBpbmcgdHlwZTpcblxuICAgRGljdGlvbmFyaWVzXG4gICAgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IG5lYXJseVxuICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSBhc1xuICAgICAga2V5cyBhcmUgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9yIG90aGVyXG4gICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuICAgICAgaWRlbnRpdHksIHRoZSByZWFzb24gYmVpbmcgdGhhdCB0aGUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mXG4gICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXlcJ3MgaGFzaCB2YWx1ZSB0byByZW1haW4gY29uc3RhbnQuXG4gICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljXG4gICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICIxLjAiKVxuICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4gICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gKkRpY3Rpb25hcnkgZGlzcGxheXMqKS5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyJcbiAgICAgIG1vZHVsZS5cblxuQ2FsbGFibGUgdHlwZXNcbiAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbiAgIHNlY3Rpb24gKkNhbGxzKikgY2FuIGJlIGFwcGxpZWQ6XG5cbiAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbiAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbiAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyopLiAgSXQgc2hvdWxkIGJlXG4gICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zXG4gICAgICBhcyB0aGUgZnVuY3Rpb25cJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG5cbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbiAgICAgIHwgIl9fZG9jX18iICAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdWJjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkIG5hbWUqIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJOb25lIiBpZiB1bmF2YWlsYWJsZS4gICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlIHJldHVybiAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiX19zZWxmX18iIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzICJfX2Z1bmNfXy5fX2RvY19fIik7ICJfX25hbWVfXyJcbiAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgIl9fbW9kdWxlX18iXG4gICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICJOb25lIlxuICAgICAgaWYgdW5hdmFpbGFibGUuXG5cbiAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgYXJiaXRyYXJ5XG4gICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCBpZlxuICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSB1c2VyLVxuICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzIGluc3RhbmNlcyxcbiAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kIG9iamVjdFxuICAgICAgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAiX19mdW5jX18iXG4gICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3RcbiAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZVxuICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbiAoIl9fZnVuY19fIikgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsIHdoZW5cbiAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAiZigpIixcbiAgICAgIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgIkMiLCBjYWxsaW5nICJ4LmYoMSkiIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluICJfX3NlbGZfXyIgd2lsbCBhY3R1YWxseVxuICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAiQy5mKDEpIlxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4gICAgICBmdW5jdGlvbiB0byBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICJ5aWVsZCJcbiAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50IG9yXG4gICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyAiYXN5bmMgZGVmIiBpc1xuICAgICAgY2FsbGVkIGEgKmNvcm91dGluZSBmdW5jdGlvbiouICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLFxuICAgICAgcmV0dXJucyBhICpjb3JvdXRpbmUqIG9iamVjdC4gIEl0IG1heSBjb250YWluICJhd2FpdCJcbiAgICAgIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzICJhc3luYyB3aXRoIiBhbmQgImFzeW5jIGZvciIgc3RhdGVtZW50cy5cbiAgICAgIFNlZSBhbHNvICpDb3JvdXRpbmVzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAogICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKICAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCmRpZmYgLS1naXQgYS9MaWIvcXVldWUucHkgYi9MaWIvcXVldWUucHkKaW5kZXggM2NlZTM2Yi4uNTcyNDI1ZSAxMDA2NDQKLS0tIGEvTGliL3F1ZXVlLnB5CisrKyBiL0xpYi9xdWV1ZS5weQpAQCAtNiwxMCArNiw3IEBACiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGhlYXBxIGltcG9ydCBoZWFwcHVzaCwgaGVhcHBvcAotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAogX19hbGxfXyA9IFsnRW1wdHknLCAnRnVsbCcsICdRdWV1ZScsICdQcmlvcml0eVF1ZXVlJywgJ0xpZm9RdWV1ZSddCiAKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDQ2NDI5MjguLjFmNWJlNDUgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNjg3LDcgKzY4Nyw3IEBACiAgICAgcHJpbnQocm91bmQodDEtdDAsIDMpLCAnc2VjLCcsIGVuZD0nICcpCiAgICAgYXZnID0gdG90YWwvbgogICAgIHN0ZGRldiA9IF9zcXJ0KHNxc3VtL24gLSBhdmcqYXZnKQotICAgIHByaW50KCdhdmcgJWcsIHN0ZGRldiAlZywgbWluICVnLCBtYXggJWcnICUgXAorICAgIHByaW50KCdhdmcgJWcsIHN0ZGRldiAlZywgbWluICVnLCBtYXggJWdcbicgJSBcCiAgICAgICAgICAgICAgIChhdmcsIHN0ZGRldiwgc21hbGxlc3QsIGxhcmdlc3QpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCAxOTlhZmVlLi5kZGU4OTAxIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMjgsMTAgKzEyOCwxMyBAQAogICAgIF9sb2NhbGUgPSBOb25lCiAKICMgcHVibGljIHN5bWJvbHMKLV9fYWxsX18gPSBbICJtYXRjaCIsICJmdWxsbWF0Y2giLCAic2VhcmNoIiwgInN1YiIsICJzdWJuIiwgInNwbGl0IiwgImZpbmRhbGwiLAotICAgICJjb21waWxlIiwgInB1cmdlIiwgInRlbXBsYXRlIiwgImVzY2FwZSIsICJBIiwgIkkiLCAiTCIsICJNIiwgIlMiLCAiWCIsCi0gICAgIlUiLCAiQVNDSUkiLCAiSUdOT1JFQ0FTRSIsICJMT0NBTEUiLCAiTVVMVElMSU5FIiwgIkRPVEFMTCIsICJWRVJCT1NFIiwKLSAgICAiVU5JQ09ERSIsICJlcnJvciIgXQorX19hbGxfXyA9IFsKKyAgICAibWF0Y2giLCAiZnVsbG1hdGNoIiwgInNlYXJjaCIsICJzdWIiLCAic3VibiIsICJzcGxpdCIsCisgICAgImZpbmRhbGwiLCAiZmluZGl0ZXIiLCAiY29tcGlsZSIsICJwdXJnZSIsICJ0ZW1wbGF0ZSIsICJlc2NhcGUiLAorICAgICJlcnJvciIsICJBIiwgIkkiLCAiTCIsICJNIiwgIlMiLCAiWCIsICJVIiwKKyAgICAiQVNDSUkiLCAiSUdOT1JFQ0FTRSIsICJMT0NBTEUiLCAiTVVMVElMSU5FIiwgIkRPVEFMTCIsICJWRVJCT1NFIiwKKyAgICAiVU5JQ09ERSIsCitdCiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCkBAIC0yMDksMTQgKzIxMiwxMiBAQAogICAgIEVtcHR5IG1hdGNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuIiIiCiAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5maW5kYWxsKHN0cmluZykKIAotaWYgc3lzLmhleHZlcnNpb24gPj0gMHgwMjAyMDAwMDoKLSAgICBfX2FsbF9fLmFwcGVuZCgiZmluZGl0ZXIiKQotICAgIGRlZiBmaW5kaXRlcihwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApOgotICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgaW4gdGhlCi0gICAgICAgIHN0cmluZy4gIEZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4KK2RlZiBmaW5kaXRlcihwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApOgorICAgICIiIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBpbiB0aGUKKyAgICBzdHJpbmcuICBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuCiAKLSAgICAgICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKLSAgICAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5maW5kaXRlcihzdHJpbmcpCisgICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKKyAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpLmZpbmRpdGVyKHN0cmluZykKIAogZGVmIGNvbXBpbGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiwgcmV0dXJuaW5nIGEgcGF0dGVybiBvYmplY3QuIgpAQCAtMjc2LDIzICsyNzcsMjEgQEAKIF9NQVhDQUNIRSA9IDUxMgogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHBhdHRlcm4KLSAgICBieXBhc3NfY2FjaGUgPSBmbGFncyAmIERFQlVHCi0gICAgaWYgbm90IGJ5cGFzc19jYWNoZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcCwgbG9jID0gX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXQotICAgICAgICAgICAgaWYgbG9jIGlzIE5vbmUgb3IgbG9jID09IF9sb2NhbGUuc2V0bG9jYWxlKF9sb2NhbGUuTENfQ1RZUEUpOgotICAgICAgICAgICAgICAgIHJldHVybiBwCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIHAsIGxvYyA9IF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10KKyAgICAgICAgaWYgbG9jIGlzIE5vbmUgb3IgbG9jID09IF9sb2NhbGUuc2V0bG9jYWxlKF9sb2NhbGUuTENfQ1RZUEUpOgorICAgICAgICAgICAgcmV0dXJuIHAKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIF9wYXR0ZXJuX3R5cGUpOgogICAgICAgICBpZiBmbGFnczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgIkNhbm5vdCBwcm9jZXNzIGZsYWdzIGFyZ3VtZW50IHdpdGggYSBjb21waWxlZCBwYXR0ZXJuIikKKyAgICAgICAgICAgICAgICAiY2Fubm90IHByb2Nlc3MgZmxhZ3MgYXJndW1lbnQgd2l0aCBhIGNvbXBpbGVkIHBhdHRlcm4iKQogICAgICAgICByZXR1cm4gcGF0dGVybgogICAgIGlmIG5vdCBzcmVfY29tcGlsZS5pc3N0cmluZyhwYXR0ZXJuKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHN0cmluZyBvciBjb21waWxlZCBwYXR0ZXJuIikKICAgICBwID0gc3JlX2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuLCBmbGFncykKLSAgICBpZiBub3QgYnlwYXNzX2NhY2hlOgorICAgIGlmIG5vdCAoZmxhZ3MgJiBERUJVRyk6CiAgICAgICAgIGlmIGxlbihfY2FjaGUpID49IF9NQVhDQUNIRToKICAgICAgICAgICAgIF9jYWNoZS5jbGVhcigpCiAgICAgICAgIGlmIHAuZmxhZ3MgJiBMT0NBTEU6CkBAIC0zNTIsMTAgKzM1MSwxMSBAQAogICAgICAgICBzID0gc3JlX3BhcnNlLlBhdHRlcm4oKQogICAgICAgICBzLmZsYWdzID0gZmxhZ3MKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CisgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChsZW4ocCkrMSwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCisgICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAogICAgICAgICAgICAgICAgIF0pKQotICAgICAgICBzLmdyb3VwcyA9IGxlbihwKSsxCisgICAgICAgICAgICBzLmNsb3NlZ3JvdXAoZ2lkLCBwWy0xXSkKICAgICAgICAgcCA9IHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsoQlJBTkNILCAoTm9uZSwgcCkpXSkKICAgICAgICAgc2VsZi5zY2FubmVyID0gc3JlX2NvbXBpbGUuY29tcGlsZShwKQogICAgIGRlZiBzY2FuKHNlbGYsIHN0cmluZyk6CkBAIC0zNjMsNyArMzYzLDcgQEAKICAgICAgICAgYXBwZW5kID0gcmVzdWx0LmFwcGVuZAogICAgICAgICBtYXRjaCA9IHNlbGYuc2Nhbm5lci5zY2FubmVyKHN0cmluZykubWF0Y2gKICAgICAgICAgaSA9IDAKLSAgICAgICAgd2hpbGUgMToKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIG0gPSBtYXRjaCgpCiAgICAgICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgICAgICBicmVhawpkaWZmIC0tZ2l0IGEvTGliL3JlcHJsaWIucHkgYi9MaWIvcmVwcmxpYi5weQppbmRleCBmODAzMzYwLi5lY2JkMmNjIDEwMDY0NAotLS0gYS9MaWIvcmVwcmxpYi5weQorKysgYi9MaWIvcmVwcmxpYi5weQpAQCAtODMsMTYgKzgzLDIyIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnWycsICddJywgc2VsZi5tYXhsaXN0KQogCiAgICAgZGVmIHJlcHJfYXJyYXkoc2VsZiwgeCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgeDoKKyAgICAgICAgICAgIHJldHVybiAiYXJyYXkoJyVzJykiICUgeC50eXBlY29kZQogICAgICAgICBoZWFkZXIgPSAiYXJyYXkoJyVzJywgWyIgJSB4LnR5cGVjb2RlCiAgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCBoZWFkZXIsICddKScsIHNlbGYubWF4YXJyYXkpCiAKICAgICBkZWYgcmVwcl9zZXQoc2VsZiwgeCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgeDoKKyAgICAgICAgICAgIHJldHVybiAnc2V0KCknCiAgICAgICAgIHggPSBfcG9zc2libHlfc29ydGVkKHgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnc2V0KFsnLCAnXSknLCBzZWxmLm1heHNldCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICd7JywgJ30nLCBzZWxmLm1heHNldCkKIAogICAgIGRlZiByZXByX2Zyb3plbnNldChzZWxmLCB4LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCB4OgorICAgICAgICAgICAgcmV0dXJuICdmcm96ZW5zZXQoKScKICAgICAgICAgeCA9IF9wb3NzaWJseV9zb3J0ZWQoeCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICdmcm96ZW5zZXQoWycsICddKScsCisgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnZnJvemVuc2V0KHsnLCAnfSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1heGZyb3plbnNldCkKIAogICAgIGRlZiByZXByX2RlcXVlKHNlbGYsIHgsIGxldmVsKToKQEAgLTEzNiw3ICsxNDIsNyBAQAogICAgICAgICAgICAgIyBCdWdzIGluIHguX19yZXByX18oKSBjYW4gY2F1c2UgYXJiaXRyYXJ5CiAgICAgICAgICAgICAjIGV4Y2VwdGlvbnMgLS0gdGhlbiBtYWtlIHVwIHNvbWV0aGluZwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuICc8JXMgaW5zdGFuY2UgYXQgJXg+JyAlICh4Ll9fY2xhc3NfXy5fX25hbWVfXywgaWQoeCkpCisgICAgICAgICAgICByZXR1cm4gJzwlcyBpbnN0YW5jZSBhdCAlI3g+JyAlICh4Ll9fY2xhc3NfXy5fX25hbWVfXywgaWQoeCkpCiAgICAgICAgIGlmIGxlbihzKSA+IHNlbGYubWF4b3RoZXI6CiAgICAgICAgICAgICBpID0gbWF4KDAsIChzZWxmLm1heG90aGVyLTMpLy8yKQogICAgICAgICAgICAgaiA9IG1heCgwLCBzZWxmLm1heG90aGVyLTMtaSkKZGlmZiAtLWdpdCBhL0xpYi9ydW5weS5weSBiL0xpYi9ydW5weS5weQppbmRleCAwYmI1N2Q3Li4xYzU3MjlkIDEwMDY0NAotLS0gYS9MaWIvcnVucHkucHkKKysrIGIvTGliL3J1bnB5LnB5CkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIHNlbGYudmFsdWUgPSBzZWxmLl9zZW50aW5lbAogICAgICAgICBzeXMuYXJndlswXSA9IHNlbGYuX3NhdmVkX3ZhbHVlCiAKLSMgVE9ETzogUmVwbGFjZSB0aGVzZSBoZWxwZXJzIHdpdGggaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzCisjIFRPRE86IFJlcGxhY2UgdGhlc2UgaGVscGVycyB3aXRoIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsIGZ1bmN0aW9ucy4KIGRlZiBfcnVuX2NvZGUoY29kZSwgcnVuX2dsb2JhbHMsIGluaXRfZ2xvYmFscz1Ob25lLAogICAgICAgICAgICAgICBtb2RfbmFtZT1Ob25lLCBtb2Rfc3BlYz1Ob25lLAogICAgICAgICAgICAgICBwa2dfbmFtZT1Ob25lLCBzY3JpcHRfbmFtZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCAyZTZiMDBhLi5iNDc2NDhkIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0zNSwxNiArMzUsMTIgQEAKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAogY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKICAgICBkZWYgX19lcV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPT0gKG8udGltZSwgby5wcmlvcml0eSkKLSAgICBkZWYgX19uZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgIT0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19sdF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPCAgKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19sZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPD0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19ndF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPiAgKG8udGltZSwgby5wcmlvcml0eSkKZGlmZiAtLWdpdCBhL0xpYi9zZWxlY3RvcnMucHkgYi9MaWIvc2VsZWN0b3JzLnB5CmluZGV4IDdiNmRhMjkuLjZkNTY5YzMgMTAwNjQ0Ci0tLSBhL0xpYi9zZWxlY3RvcnMucHkKKysrIGIvTGliL3NlbGVjdG9ycy5weQpAQCAtMTc0LDkgKzE3NCw5IEBACiAgICAgICAgIFNlbGVjdG9yS2V5IGZvciB0aGlzIGZpbGUgb2JqZWN0CiAgICAgICAgICIiIgogICAgICAgICBtYXBwaW5nID0gc2VsZi5nZXRfbWFwKCkKKyAgICAgICAgaWYgbWFwcGluZyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdTZWxlY3RvciBpcyBjbG9zZWQnKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBtYXBwaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IKICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2ZpbGVvYmpdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCJ7IXJ9IGlzIG5vdCByZWdpc3RlcmVkIi5mb3JtYXQoZmlsZW9iaikpIGZyb20gTm9uZQpAQCAtNDQ1LDEwICs0NDUsNjYgQEAKICAgICAgICAgICAgIHJldHVybiByZWFkeQogCiAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2Vwb2xsLmNsb3NlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorCisKK2lmIGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpOgorCisgICAgY2xhc3MgRGV2cG9sbFNlbGVjdG9yKF9CYXNlU2VsZWN0b3JJbXBsKToKKyAgICAgICAgIiIiU29sYXJpcyAvZGV2L3BvbGwgc2VsZWN0b3IuIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgICAgICBzZWxmLl9kZXZwb2xsID0gc2VsZWN0LmRldnBvbGwoKQorCisgICAgICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGV2cG9sbC5maWxlbm8oKQorCisgICAgICAgIGRlZiByZWdpc3RlcihzZWxmLCBmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSk6CisgICAgICAgICAgICBrZXkgPSBzdXBlcigpLnJlZ2lzdGVyKGZpbGVvYmosIGV2ZW50cywgZGF0YSkKKyAgICAgICAgICAgIHBvbGxfZXZlbnRzID0gMAorICAgICAgICAgICAgaWYgZXZlbnRzICYgRVZFTlRfUkVBRDoKKyAgICAgICAgICAgICAgICBwb2xsX2V2ZW50cyB8PSBzZWxlY3QuUE9MTElOCisgICAgICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9XUklURToKKyAgICAgICAgICAgICAgICBwb2xsX2V2ZW50cyB8PSBzZWxlY3QuUE9MTE9VVAorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbC5yZWdpc3RlcihrZXkuZmQsIHBvbGxfZXZlbnRzKQorICAgICAgICAgICAgcmV0dXJuIGtleQorCisgICAgICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIGZpbGVvYmopOgorICAgICAgICAgICAga2V5ID0gc3VwZXIoKS51bnJlZ2lzdGVyKGZpbGVvYmopCisgICAgICAgICAgICBzZWxmLl9kZXZwb2xsLnVucmVnaXN0ZXIoa2V5LmZkKQorICAgICAgICAgICAgcmV0dXJuIGtleQorCisgICAgICAgIGRlZiBzZWxlY3Qoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBkZXZwb2xsKCkgaGFzIGEgcmVzb2x1dGlvbiBvZiAxIG1pbGxpc2Vjb25kLCByb3VuZCBhd2F5IGZyb20KKyAgICAgICAgICAgICAgICAjIHplcm8gdG8gd2FpdCAqYXQgbGVhc3QqIHRpbWVvdXQgc2Vjb25kcy4KKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbWF0aC5jZWlsKHRpbWVvdXQgKiAxZTMpCisgICAgICAgICAgICByZWFkeSA9IFtdCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXBvbGwuY2xvc2UoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmZF9ldmVudF9saXN0ID0gc2VsZi5fZGV2cG9sbC5wb2xsKHRpbWVvdXQpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVhZHkKKyAgICAgICAgICAgIGZvciBmZCwgZXZlbnQgaW4gZmRfZXZlbnRfbGlzdDoKKyAgICAgICAgICAgICAgICBldmVudHMgPSAwCisgICAgICAgICAgICAgICAgaWYgZXZlbnQgJiB+c2VsZWN0LlBPTExJTjoKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzIHw9IEVWRU5UX1dSSVRFCisgICAgICAgICAgICAgICAgaWYgZXZlbnQgJiB+c2VsZWN0LlBPTExPVVQ6CisgICAgICAgICAgICAgICAgICAgIGV2ZW50cyB8PSBFVkVOVF9SRUFECisKKyAgICAgICAgICAgICAgICBrZXkgPSBzZWxmLl9rZXlfZnJvbV9mZChmZCkKKyAgICAgICAgICAgICAgICBpZiBrZXk6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZCgoa2V5LCBldmVudHMgJiBrZXkuZXZlbnRzKSkKKyAgICAgICAgICAgIHJldHVybiByZWFkeQorCisgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2RldnBvbGwuY2xvc2UoKQorICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCiAKIAogaWYgaGFzYXR0cihzZWxlY3QsICdrcXVldWUnKToKQEAgLTUxOSwxOCArNTc1LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gcmVhZHkKIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fa3F1ZXVlLmNsb3NlKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9rcXVldWUuY2xvc2UoKQorICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCiAKIAotIyBDaG9vc2UgdGhlIGJlc3QgaW1wbGVtZW50YXRpb246IHJvdWdobHksIGVwb2xsfGtxdWV1ZSA+IHBvbGwgPiBzZWxlY3QuCisjIENob29zZSB0aGUgYmVzdCBpbXBsZW1lbnRhdGlvbiwgcm91Z2hseToKKyMgICAgZXBvbGx8a3F1ZXVlfGRldnBvbGwgPiBwb2xsID4gc2VsZWN0LgogIyBzZWxlY3QoKSBhbHNvIGNhbid0IGFjY2VwdCBhIEZEID4gRkRfU0VUU0laRSAodXN1YWxseSBhcm91bmQgMTAyNCkKIGlmICdLcXVldWVTZWxlY3RvcicgaW4gZ2xvYmFscygpOgogICAgIERlZmF1bHRTZWxlY3RvciA9IEtxdWV1ZVNlbGVjdG9yCiBlbGlmICdFcG9sbFNlbGVjdG9yJyBpbiBnbG9iYWxzKCk6CiAgICAgRGVmYXVsdFNlbGVjdG9yID0gRXBvbGxTZWxlY3RvcgorZWxpZiAnRGV2cG9sbFNlbGVjdG9yJyBpbiBnbG9iYWxzKCk6CisgICAgRGVmYXVsdFNlbGVjdG9yID0gRGV2cG9sbFNlbGVjdG9yCiBlbGlmICdQb2xsU2VsZWN0b3InIGluIGdsb2JhbHMoKToKICAgICBEZWZhdWx0U2VsZWN0b3IgPSBQb2xsU2VsZWN0b3IKIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggNDY3MjU1My4uZjA4MzkxOCAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNDksOSArNDksNiBAQAogICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICAgc2VsZi5maWxlc3RhY2sgPSBkZXF1ZSgpCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQotICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgcHJpbnQoJ3NobGV4OiByZWFkaW5nIGZyb20gJXMsIGxpbmUgJWQnIFwKLSAgICAgICAgICAgICAgICAgICUgKHNlbGYuaW5zdHJlYW0sIHNlbGYubGluZW5vKSkKIAogICAgIGRlZiBwdXNoX3Rva2VuKHNlbGYsIHRvayk6CiAgICAgICAgICJQdXNoIGEgdG9rZW4gb250byB0aGUgc3RhY2sgcG9wcGVkIGJ5IHRoZSBnZXRfdG9rZW4gbWV0aG9kIgpkaWZmIC0tZ2l0IGEvTGliL3NodXRpbC5weSBiL0xpYi9zaHV0aWwucHkKaW5kZXggYWMwNmFlNS4uNjFkYzgwNCAxMDA2NDQKLS0tIGEvTGliL3NodXRpbC5weQorKysgYi9MaWIvc2h1dGlsLnB5CkBAIC03LDcgKzcsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3RhdAotZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCiBpbXBvcnQgZm5tYXRjaAogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgZXJybm8KQEAgLTIxLDYgKzIwLDEzIEBACiAgICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQogCiB0cnk6CisgICAgaW1wb3J0IGx6bWEKKyAgICBkZWwgbHptYQorICAgIF9MWk1BX1NVUFBPUlRFRCA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfTFpNQV9TVVBQT1JURUQgPSBGYWxzZQorCit0cnk6CiAgICAgZnJvbSBwd2QgaW1wb3J0IGdldHB3bmFtCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZ2V0cHduYW0gPSBOb25lCkBAIC00ODcsNyArNDkzLDcgQEAKICAgICBzZXAgPSBvcy5wYXRoLnNlcCArIChvcy5wYXRoLmFsdHNlcCBvciAnJykKICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoLnJzdHJpcChzZXApKQogCi1kZWYgbW92ZShzcmMsIGRzdCk6CitkZWYgbW92ZShzcmMsIGRzdCwgY29weV9mdW5jdGlvbj1jb3B5Mik6CiAgICAgIiIiUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgaXMKICAgICBzaW1pbGFyIHRvIHRoZSBVbml4ICJtdiIgY29tbWFuZC4gUmV0dXJuIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSdzCiAgICAgZGVzdGluYXRpb24uCkBAIC01MDQsNiArNTEwLDExIEBACiAgICAgcmVjcmVhdGVkIHVuZGVyIHRoZSBuZXcgbmFtZSBpZiBvcy5yZW5hbWUoKSBmYWlscyBiZWNhdXNlIG9mIGNyb3NzCiAgICAgZmlsZXN5c3RlbSByZW5hbWVzLgogCisgICAgVGhlIG9wdGlvbmFsIGBjb3B5X2Z1bmN0aW9uYCBhcmd1bWVudCBpcyBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSB1c2VkCisgICAgdG8gY29weSB0aGUgc291cmNlIG9yIGl0IHdpbGwgYmUgZGVsZWdhdGVkIHRvIGBjb3B5dHJlZWAuCisgICAgQnkgZGVmYXVsdCwgY29weTIoKSBpcyB1c2VkLCBidXQgYW55IGZ1bmN0aW9uIHRoYXQgc3VwcG9ydHMgdGhlIHNhbWUKKyAgICBzaWduYXR1cmUgKGxpa2UgY29weSgpKSBjYW4gYmUgdXNlZC4KKwogICAgIEEgbG90IG1vcmUgY291bGQgYmUgZG9uZSBoZXJlLi4uICBBIGxvb2sgYXQgYSBtdi5jIHNob3dzIGEgbG90IG9mCiAgICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KIApAQCAtNTI4LDE3ICs1MzksMTkgQEAKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCiAgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihzcmMpOgogICAgICAgICAgICAgaWYgX2Rlc3RpbnNyYyhzcmMsIGRzdCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkNhbm5vdCBtb3ZlIGEgZGlyZWN0b3J5ICclcycgaW50byBpdHNlbGYgJyVzJy4iICUgKHNyYywgZHN0KSkKLSAgICAgICAgICAgIGNvcHl0cmVlKHNyYywgcmVhbF9kc3QsIHN5bWxpbmtzPVRydWUpCisgICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkNhbm5vdCBtb3ZlIGEgZGlyZWN0b3J5ICclcycgaW50byBpdHNlbGYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnJXMnLiIgJSAoc3JjLCBkc3QpKQorICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgY29weV9mdW5jdGlvbj1jb3B5X2Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9VHJ1ZSkKICAgICAgICAgICAgIHJtdHJlZShzcmMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb3B5MihzcmMsIHJlYWxfZHN0KQorICAgICAgICAgICAgY29weV9mdW5jdGlvbihzcmMsIHJlYWxfZHN0KQogICAgICAgICAgICAgb3MudW5saW5rKHNyYykKICAgICByZXR1cm4gcmVhbF9kc3QKIAogZGVmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgotICAgIHNyYyA9IGFic3BhdGgoc3JjKQotICAgIGRzdCA9IGFic3BhdGgoZHN0KQorICAgIHNyYyA9IG9zLnBhdGguYWJzcGF0aChzcmMpCisgICAgZHN0ID0gb3MucGF0aC5hYnNwYXRoKGRzdCkKICAgICBpZiBub3Qgc3JjLmVuZHN3aXRoKG9zLnBhdGguc2VwKToKICAgICAgICAgc3JjICs9IG9zLnBhdGguc2VwCiAgICAgaWYgbm90IGRzdC5lbmRzd2l0aChvcy5wYXRoLnNlcCk6CkBAIC01NzQsMTQgKzU4NywxNCBAQAogICAgICIiIkNyZWF0ZSBhIChwb3NzaWJseSBjb21wcmVzc2VkKSB0YXIgZmlsZSBmcm9tIGFsbCB0aGUgZmlsZXMgdW5kZXIKICAgICAnYmFzZV9kaXInLgogCi0gICAgJ2NvbXByZXNzJyBtdXN0IGJlICJnemlwIiAodGhlIGRlZmF1bHQpLCAiYnppcDIiLCBvciBOb25lLgorICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgInh6Iiwgb3IgTm9uZS4KIAogICAgICdvd25lcicgYW5kICdncm91cCcgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIG93bmVyIGFuZCBhIGdyb3VwIGZvciB0aGUKICAgICBhcmNoaXZlIHRoYXQgaXMgYmVpbmcgYnVpbHQuIElmIG5vdCBwcm92aWRlZCwgdGhlIGN1cnJlbnQgb3duZXIgYW5kIGdyb3VwCiAgICAgd2lsbCBiZSB1c2VkLgogCiAgICAgVGhlIG91dHB1dCB0YXIgZmlsZSB3aWxsIGJlIG5hbWVkICdiYXNlX25hbWUnICsgICIudGFyIiwgcG9zc2libHkgcGx1cwotICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCBvciAiLmJ6MiIpLgorICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCAiLmJ6MiIsIG9yICIueHoiKS4KIAogICAgIFJldHVybnMgdGhlIG91dHB1dCBmaWxlbmFtZS4KICAgICAiIiIKQEAgLTU5Miw2ICs2MDUsMTAgQEAKICAgICAgICAgdGFyX2NvbXByZXNzaW9uWydiemlwMiddID0gJ2J6MicKICAgICAgICAgY29tcHJlc3NfZXh0WydiemlwMiddID0gJy5iejInCiAKKyAgICBpZiBfTFpNQV9TVVBQT1JURUQ6CisgICAgICAgIHRhcl9jb21wcmVzc2lvblsneHonXSA9ICd4eicKKyAgICAgICAgY29tcHJlc3NfZXh0Wyd4eiddID0gJy54eicKKwogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKICAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnLCBvciBjb21wcmVzc2lvbiBmb3JtYXQgbm90ICIKQEAgLTYzMSwyMyArNjQ4LDYgQEAKIAogICAgIHJldHVybiBhcmNoaXZlX25hbWUKIAotZGVmIF9jYWxsX2V4dGVybmFsX3ppcChiYXNlX2RpciwgemlwX2ZpbGVuYW1lLCB2ZXJib3NlPUZhbHNlLCBkcnlfcnVuPUZhbHNlKToKLSAgICAjIFhYWCBzZWUgaWYgd2Ugd2FudCB0byBrZWVwIGFuIGV4dGVybmFsIGNhbGwgaGVyZQotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHppcG9wdGlvbnMgPSAiLXIiCi0gICAgZWxzZToKLSAgICAgICAgemlwb3B0aW9ucyA9ICItcnEiCi0gICAgZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKLSAgICBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KLSAgICB0cnk6Ci0gICAgICAgIHNwYXduKFsiemlwIiwgemlwb3B0aW9ucywgemlwX2ZpbGVuYW1lLCBiYXNlX2Rpcl0sIGRyeV9ydW49ZHJ5X3J1bikKLSAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yOgotICAgICAgICAjIFhYWCByZWFsbHkgc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gImNvdWxkbid0IGZpbmQKLSAgICAgICAgIyBleHRlcm5hbCAnemlwJyBjb21tYW5kIiBhbmQgInppcCBmYWlsZWQiLgotICAgICAgICByYWlzZSBFeGVjRXJyb3IoInVuYWJsZSB0byBjcmVhdGUgemlwIGZpbGUgJyVzJzogIgotICAgICAgICAgICAgImNvdWxkIG5laXRoZXIgaW1wb3J0IHRoZSAnemlwZmlsZScgbW9kdWxlIG5vciAiCi0gICAgICAgICAgICAiZmluZCBhIHN0YW5kYWxvbmUgemlwIHV0aWxpdHkiKSAlIHppcF9maWxlbmFtZQotCiBkZWYgX21ha2VfemlwZmlsZShiYXNlX25hbWUsIGJhc2VfZGlyLCB2ZXJib3NlPTAsIGRyeV9ydW49MCwgbG9nZ2VyPU5vbmUpOgogICAgICIiIkNyZWF0ZSBhIHppcCBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlciAnYmFzZV9kaXInLgogCkBAIC02NTcsNiArNjU3LDggQEAKICAgICBhdmFpbGFibGUsIHJhaXNlcyBFeGVjRXJyb3IuICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgemlwCiAgICAgZmlsZS4KICAgICAiIiIKKyAgICBpbXBvcnQgemlwZmlsZQorCiAgICAgemlwX2ZpbGVuYW1lID0gYmFzZV9uYW1lICsgIi56aXAiCiAgICAgYXJjaGl2ZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoYmFzZV9uYW1lKQogCkBAIC02NjYsMzAgKzY2OCwyMCBAQAogICAgICAgICBpZiBub3QgZHJ5X3J1bjoKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGFyY2hpdmVfZGlyKQogCi0gICAgIyBJZiB6aXBmaWxlIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlLCB0cnkgc3Bhd25pbmcgYW4gZXh0ZXJuYWwgJ3ppcCcKLSAgICAjIGNvbW1hbmQuCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgemlwZmlsZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgemlwZmlsZSA9IE5vbmUKKyAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyAnJXMnIGFuZCBhZGRpbmcgJyVzJyB0byBpdCIsCisgICAgICAgICAgICAgICAgICAgIHppcF9maWxlbmFtZSwgYmFzZV9kaXIpCiAKLSAgICBpZiB6aXBmaWxlIGlzIE5vbmU6Ci0gICAgICAgIF9jYWxsX2V4dGVybmFsX3ppcChiYXNlX2RpciwgemlwX2ZpbGVuYW1lLCB2ZXJib3NlLCBkcnlfcnVuKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyAnJXMnIGFuZCBhZGRpbmcgJyVzJyB0byBpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICB6aXBfZmlsZW5hbWUsIGJhc2VfZGlyKQotCi0gICAgICAgIGlmIG5vdCBkcnlfcnVuOgotICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoemlwX2ZpbGVuYW1lLCAidyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbj16aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemY6Ci0gICAgICAgICAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhiYXNlX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQorICAgIGlmIG5vdCBkcnlfcnVuOgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh6aXBfZmlsZW5hbWUsICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgorICAgICAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhiYXNlX2Rpcik6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQogCiAgICAgcmV0dXJuIHppcF9maWxlbmFtZQogCkBAIC03MDMsNiArNjk1LDEwIEBACiAgICAgX0FSQ0hJVkVfRk9STUFUU1snYnp0YXInXSA9IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdiemlwMicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ6aXAyJ2VkIHRhci1maWxlIikKIAoraWYgX0xaTUFfU1VQUE9SVEVEOgorICAgIF9BUkNISVZFX0ZPUk1BVFNbJ3h6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAneHonKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4eidlZCB0YXItZmlsZSIpCisKIGRlZiBnZXRfYXJjaGl2ZV9mb3JtYXRzKCk6CiAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZvcm1hdHMgZm9yIGFyY2hpdmluZyBhbmQgdW5hcmNoaXZpbmcuCiAKQEAgLTg5MSw3ICs4ODcsNyBAQAogICAgICAgICB6aXAuY2xvc2UoKQogCiBkZWYgX3VucGFja190YXJmaWxlKGZpbGVuYW1lLCBleHRyYWN0X2Rpcik6Ci0gICAgIiIiVW5wYWNrIHRhci90YXIuZ3ovdGFyLmJ6MiBgZmlsZW5hbWVgIHRvIGBleHRyYWN0X2RpcmAKKyAgICAiIiJVbnBhY2sgdGFyL3Rhci5nei90YXIuYnoyL3Rhci54eiBgZmlsZW5hbWVgIHRvIGBleHRyYWN0X2RpcmAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIHRhcm9iaiA9IHRhcmZpbGUub3BlbihmaWxlbmFtZSkKQEAgLTkxMCw5ICs5MDYsMTMgQEAKICAgICB9CiAKIGlmIF9CWjJfU1VQUE9SVEVEOgotICAgIF9VTlBBQ0tfRk9STUFUU1snYnp0YXInXSA9IChbJy5iejInXSwgX3VucGFja190YXJmaWxlLCBbXSwKKyAgICBfVU5QQUNLX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoWycudGFyLmJ6MicsICcudGJ6MiddLCBfdW5wYWNrX3RhcmZpbGUsIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnppcDInZWQgdGFyLWZpbGUiKQogCitpZiBfTFpNQV9TVVBQT1JURUQ6CisgICAgX1VOUEFDS19GT1JNQVRTWyd4enRhciddID0gKFsnLnRhci54eicsICcudHh6J10sIF91bnBhY2tfdGFyZmlsZSwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4eidlZCB0YXItZmlsZSIpCisKIGRlZiBfZmluZF91bnBhY2tfZm9ybWF0KGZpbGVuYW1lKToKICAgICBmb3IgbmFtZSwgaW5mbyBpbiBfVU5QQUNLX0ZPUk1BVFMuaXRlbXMoKToKICAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBpbmZvWzBdOgpkaWZmIC0tZ2l0IGEvTGliL3NpZ25hbC5weSBiL0xpYi9zaWduYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcxZDcxMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9zaWduYWwucHkKQEAgLTAsMCArMSw3OSBAQAoraW1wb3J0IF9zaWduYWwKK2Zyb20gX3NpZ25hbCBpbXBvcnQgKgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzIGFzIF93cmFwcworZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtIGFzIF9JbnRFbnVtCisKK19nbG9iYWxzID0gZ2xvYmFscygpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAnU2lnbmFscycsIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgbmFtZToKKyAgICAgICAgICAgIG5hbWUuaXN1cHBlcigpCisgICAgICAgICAgICBhbmQgKG5hbWUuc3RhcnRzd2l0aCgnU0lHJykgYW5kIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ1NJR18nKSkKKyAgICAgICAgICAgIG9yIG5hbWUuc3RhcnRzd2l0aCgnQ1RSTF8nKSkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICdIYW5kbGVycycsIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgbmFtZTogbmFtZSBpbiAoJ1NJR19ERkwnLCAnU0lHX0lHTicpKQorCitpZiAncHRocmVhZF9zaWdtYXNrJyBpbiBfZ2xvYmFsczoKKyAgICBfSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICdTaWdtYXNrcycsIF9fbmFtZV9fLAorICAgICAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUgaW4gKCdTSUdfQkxPQ0snLCAnU0lHX1VOQkxPQ0snLCAnU0lHX1NFVE1BU0snKSkKKworCitkZWYgX2ludF90b19lbnVtKHZhbHVlLCBlbnVtX2tsYXNzKToKKyAgICAiIiJDb252ZXJ0IGEgbnVtZXJpYyB2YWx1ZSB0byBhbiBJbnRFbnVtIG1lbWJlci4KKyAgICBJZiBpdCdzIG5vdCBhIGtub3duIG1lbWJlciwgcmV0dXJuIHRoZSBudW1lcmljIHZhbHVlIGl0c2VsZi4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBlbnVtX2tsYXNzKHZhbHVlKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByZXR1cm4gdmFsdWUKKworCitkZWYgX2VudW1fdG9faW50KHZhbHVlKToKKyAgICAiIiJDb252ZXJ0IGFuIEludEVudW0gbWVtYmVyIHRvIGEgbnVtZXJpYyB2YWx1ZS4KKyAgICBJZiBpdCdzIG5vdCBhIEludEVudW0gbWVtYmVyIHJldHVybiB0aGUgdmFsdWUgaXRzZWxmLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGludCh2YWx1ZSkKKyAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgIHJldHVybiB2YWx1ZQorCisKK0Bfd3JhcHMoX3NpZ25hbC5zaWduYWwpCitkZWYgc2lnbmFsKHNpZ25hbG51bSwgaGFuZGxlcik6CisgICAgaGFuZGxlciA9IF9zaWduYWwuc2lnbmFsKF9lbnVtX3RvX2ludChzaWduYWxudW0pLCBfZW51bV90b19pbnQoaGFuZGxlcikpCisgICAgcmV0dXJuIF9pbnRfdG9fZW51bShoYW5kbGVyLCBIYW5kbGVycykKKworCitAX3dyYXBzKF9zaWduYWwuZ2V0c2lnbmFsKQorZGVmIGdldHNpZ25hbChzaWduYWxudW0pOgorICAgIGhhbmRsZXIgPSBfc2lnbmFsLmdldHNpZ25hbChzaWduYWxudW0pCisgICAgcmV0dXJuIF9pbnRfdG9fZW51bShoYW5kbGVyLCBIYW5kbGVycykKKworCitpZiAncHRocmVhZF9zaWdtYXNrJyBpbiBfZ2xvYmFsczoKKyAgICBAX3dyYXBzKF9zaWduYWwucHRocmVhZF9zaWdtYXNrKQorICAgIGRlZiBwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKToKKyAgICAgICAgc2lnc19zZXQgPSBfc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCisgICAgICAgIHJldHVybiBzZXQoX2ludF90b19lbnVtKHgsIFNpZ25hbHMpIGZvciB4IGluIHNpZ3Nfc2V0KQorICAgIHB0aHJlYWRfc2lnbWFzay5fX2RvY19fID0gX3NpZ25hbC5wdGhyZWFkX3NpZ21hc2suX19kb2NfXworCisKK2lmICdzaWdwZW5kaW5nJyBpbiBfZ2xvYmFsczoKKyAgICBAX3dyYXBzKF9zaWduYWwuc2lncGVuZGluZykKKyAgICBkZWYgc2lncGVuZGluZygpOgorICAgICAgICBzaWdzID0gX3NpZ25hbC5zaWdwZW5kaW5nKCkKKyAgICAgICAgcmV0dXJuIHNldChfaW50X3RvX2VudW0oeCwgU2lnbmFscykgZm9yIHggaW4gc2lncykKKworCitpZiAnc2lnd2FpdCcgaW4gX2dsb2JhbHM6CisgICAgQF93cmFwcyhfc2lnbmFsLnNpZ3dhaXQpCisgICAgZGVmIHNpZ3dhaXQoc2lnc2V0KToKKyAgICAgICAgcmV0c2lnID0gX3NpZ25hbC5zaWd3YWl0KHNpZ3NldCkKKyAgICAgICAgcmV0dXJuIF9pbnRfdG9fZW51bShyZXRzaWcsIFNpZ25hbHMpCisgICAgc2lnd2FpdC5fX2RvY19fID0gX3NpZ25hbC5zaWd3YWl0CisKK2RlbCBfZ2xvYmFscywgX3dyYXBzCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IGFkNWQxMzYuLmI3ZDAzMzEgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC03LDcgKzcsNyBAQAogVGhpcyB3aWxsIGFwcGVuZCBzaXRlLXNwZWNpZmljIHBhdGhzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguICBPbgogVW5peCAoaW5jbHVkaW5nIE1hYyBPU1gpLCBpdCBzdGFydHMgd2l0aCBzeXMucHJlZml4IGFuZAogc3lzLmV4ZWNfcHJlZml4IChpZiBkaWZmZXJlbnQpIGFuZCBhcHBlbmRzCi1saWIvcHl0aG9uPHZlcnNpb24+L3NpdGUtcGFja2FnZXMgYXMgd2VsbCBhcyBsaWIvc2l0ZS1weXRob24uCitsaWIvcHl0aG9uPHZlcnNpb24+L3NpdGUtcGFja2FnZXMuCiBPbiBvdGhlciBwbGF0Zm9ybXMgKHN1Y2ggYXMgV2luZG93cyksIGl0IHRyaWVzIGVhY2ggb2YgdGhlCiBwcmVmaXhlcyBkaXJlY3RseSwgYXMgd2VsbCBhcyB3aXRoIGxpYi9zaXRlLXBhY2thZ2VzIGFwcGVuZGVkLiAgVGhlCiByZXN1bHRpbmcgZGlyZWN0b3JpZXMsIGlmIHRoZXkgZXhpc3QsIGFyZSBhcHBlbmRlZCB0byBzeXMucGF0aCwgYW5kCkBAIC0xNSw3ICsxNSw3IEBACiAKIElmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCiBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKLWl0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZAogc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCiBpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKIHRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKQEAgLTk4LDggKzk4LDggQEAKIGRlZiBhYnNfcGF0aHMoKToKICAgICAiIiJTZXQgYWxsIG1vZHVsZSBfX2ZpbGVfXyBhbmQgX19jYWNoZWRfXyBhdHRyaWJ1dGVzIHRvIGFuIGFic29sdXRlIHBhdGgiIiIKICAgICBmb3IgbSBpbiBzZXQoc3lzLm1vZHVsZXMudmFsdWVzKCkpOgotICAgICAgICBpZiAoZ2V0YXR0cihnZXRhdHRyKG0sICdfX2xvYWRlcl9fJywgTm9uZSksICdfX21vZHVsZV9fJywgTm9uZSkgIT0KLSAgICAgICAgICAgICAgICAnX2Zyb3plbl9pbXBvcnRsaWInKToKKyAgICAgICAgaWYgKGdldGF0dHIoZ2V0YXR0cihtLCAnX19sb2FkZXJfXycsIE5vbmUpLCAnX19tb2R1bGVfXycsIE5vbmUpIG5vdCBpbgorICAgICAgICAgICAgICAgICgnX2Zyb3plbl9pbXBvcnRsaWInLCAnX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnKSk6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgZG9uJ3QgbWVzcyB3aXRoIGEgUEVQIDMwMi1zdXBwbGllZCBfX2ZpbGVfXwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19maWxlX18pCkBAIC0yODUsOCArMjg1LDcgQEAKICAgICByZXR1cm4ga25vd25fcGF0aHMKIAogZGVmIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcz1Ob25lKToKLSAgICAiIiJSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcmllcwotICAgIChhbmQgcG9zc2libHkgc2l0ZS1weXRob24pLgorICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzLgogCiAgICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCiAgICAgdGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgaXRzIGBzaXRlLXBhY2thZ2VzYCBzdWJkaXJlY3RvcnkgZGVwZW5kaW5nIG9uIHRoZQpAQCAtMzA3LDcgKzMwNiw2IEBACiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcGFja2FnZXMiKSkKQEAgLTMyMywxNCArMzIxLDkgQEAKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgotICAgICIiIkFkZCBzaXRlLXBhY2thZ2VzIChhbmQgcG9zc2libHkgc2l0ZS1weXRob24pIHRvIHN5cy5wYXRoIiIiCisgICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgdG8gc3lzLnBhdGgiIiIKICAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXMpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpdGVkaXIpOgotICAgICAgICAgICAgaWYgInNpdGUtcHl0aG9uIiBpbiBzaXRlZGlyOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJyJzaXRlLXB5dGhvbiIgZGlyZWN0b3JpZXMgd2lsbCBub3QgYmUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBpbiAzLjUgYW55bW9yZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBhZGRzaXRlZGlyKHNpdGVkaXIsIGtub3duX3BhdGhzKQogCiAgICAgcmV0dXJuIGtub3duX3BhdGhzCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggZGI3Yzg2Ny4uZmY4NmU3ZCAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCi0iIiJBbiBSRkMgNTMyMSBzbXRwIHByb3h5LgorIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eSB3aXRoIG9wdGlvbmFsIFJGQyAxODcwIGFuZCBSRkMgNjUzMSBleHRlbnNpb25zLgogCiBVc2FnZTogJShwcm9ncmFtKXMgW29wdGlvbnNdIFtsb2NhbGhvc3Q6bG9jYWxwb3J0IFtyZW1vdGVob3N0OnJlbW90ZXBvcnRdXQogCkBAIC0yNSw2ICsyNSwxMCBAQAogICAgICAgICBSZXN0cmljdCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgaW5jb21pbmcgbWVzc2FnZSB0byAibGltaXQiIG51bWJlciBvZgogICAgICAgICBieXRlcyB2aWEgdGhlIFJGQyAxODcwIFNJWkUgZXh0ZW5zaW9uLiAgRGVmYXVsdHMgdG8gMzM1NTQ0MzIgYnl0ZXMuCiAKKyAgICAtLXNtdHB1dGY4CisgICAgLXUKKyAgICAgICAgRW5hYmxlIHRoZSBTTVRQVVRGOCBleHRlbnNpb24gYW5kIGJlaGF2ZSBhcyBhbiBSRkMgNjUzMSBzbXRwIHByb3h5LgorCiAgICAgLS1kZWJ1ZwogICAgIC1kCiAgICAgICAgIFR1cm4gb24gZGVidWdnaW5nIHByaW50cy4KQEAgLTk4LDcgKzEwMiw2IEBACiAKIERFQlVHU1RSRUFNID0gRGV2bnVsbCgpCiBORVdMSU5FID0gJ1xuJwotRU1QVFlTVFJJTkcgPSAnJwogQ09NTUFTUEFDRSA9ICcsICcKIERBVEFfU0laRV9ERUZBVUxUID0gMzM1NTQ0MzIKIApAQCAtMTE2LDI2ICsxMTksNDggQEAKIAogICAgIGNvbW1hbmRfc2l6ZV9saW1pdCA9IDUxMgogICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGEgeD1jb21tYW5kX3NpemVfbGltaXQ6IHgpCi0gICAgY29tbWFuZF9zaXplX2xpbWl0cy51cGRhdGUoewotICAgICAgICAnTUFJTCc6IGNvbW1hbmRfc2l6ZV9saW1pdCArIDI2LAotICAgICAgICB9KQotICAgIG1heF9jb21tYW5kX3NpemVfbGltaXQgPSBtYXgoY29tbWFuZF9zaXplX2xpbWl0cy52YWx1ZXMoKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXhfY29tbWFuZF9zaXplX2xpbWl0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gbWF4KHNlbGYuY29tbWFuZF9zaXplX2xpbWl0cy52YWx1ZXMoKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgbWFwPU5vbmUpOgorICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uLCBtYXA9bWFwKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KLSAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4CisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IGJlIHNldCB0byIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKKyAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKKyAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAorICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKKyAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHNlbGYuX2VtcHR5c3RyaW5nID0gJycKKyAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSAnXHJcbicKKyAgICAgICAgICAgIHNlbGYuX2RvdHNlcCA9ICcuJworICAgICAgICAgICAgc2VsZi5fbmV3bGluZSA9IE5FV0xJTkUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2VtcHR5c3RyaW5nID0gYicnCisgICAgICAgICAgICBzZWxmLl9saW5lc2VwID0gYidcclxuJworICAgICAgICAgICAgc2VsZi5fZG90c2VwID0gb3JkKGInLicpCisgICAgICAgICAgICBzZWxmLl9uZXdsaW5lID0gYidcbicKKyAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQogICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSAnJwotICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQotICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQotICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJworICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorICAgICAgICBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHMuY2xlYXIoKQogICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCi0gICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgpAQCAtMTQ3LDggKzE3MiwyMiBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCdQZWVyOicsIHJlcHIoc2VsZi5wZWVyKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5wdXNoKCcyMjAgJXMgJXMnICUgKHNlbGYuZnFkbiwgX192ZXJzaW9uX18pKQorCisgICAgZGVmIF9zZXRfcG9zdF9kYXRhX3N0YXRlKHNlbGYpOgorICAgICAgICAiIiJSZXNldCBzdGF0ZSB2YXJpYWJsZXMgdG8gdGhlaXIgcG9zdC1EQVRBIHN0YXRlLiIiIgorICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKKyAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KKyAgICAgICAgc2VsZi5yZXF1aXJlX1NNVFBVVEY4ID0gRmFsc2UKKyAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKLSAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKworICAgIGRlZiBfc2V0X3JzZXRfc3RhdGUoc2VsZik6CisgICAgICAgICIiIlJlc2V0IGFsbCBzdGF0ZSB2YXJpYWJsZXMgZXhjZXB0IHRoZSBncmVldGluZy4iIiIKKyAgICAgICAgc2VsZi5fc2V0X3Bvc3RfZGF0YV9zdGF0ZSgpCisgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQorCiAKICAgICAjIHByb3BlcnRpZXMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CiAgICAgQHByb3BlcnR5CkBAIC0yNzIsOSArMzExLDEwIEBACiAgICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmFkZHIgPSB2YWx1ZQogCi0gICAgIyBPdmVycmlkZXMgYmFzZSBjbGFzcyBmb3IgY29udmVuaWVuY2UKKyAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZS4KICAgICBkZWYgcHVzaChzZWxmLCBtc2cpOgotICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0LnB1c2goc2VsZiwgYnl0ZXMobXNnICsgJ1xyXG4nLCAnYXNjaWknKSkKKyAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5wdXNoKHNlbGYsIGJ5dGVzKAorICAgICAgICAgICAgbXNnICsgJ1xyXG4nLCAndXRmLTgnIGlmIHNlbGYucmVxdWlyZV9TTVRQVVRGOCBlbHNlICdhc2NpaScpKQogCiAgICAgIyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNlIGNsYXNzIGFic3RyYWN0IG1ldGhvZAogICAgIGRlZiBjb2xsZWN0X2luY29taW5nX2RhdGEoc2VsZiwgZGF0YSk6CkBAIC0yODcsMTEgKzMyNywxNCBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgbGltaXQ6CiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyArPSBsZW4oZGF0YSkKLSAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGYtOCIpKQorICAgICAgICBpZiBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAndXRmLTgnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKGRhdGEpCiAKICAgICAjIEltcGxlbWVudGF0aW9uIG9mIGJhc2UgY2xhc3MgYWJzdHJhY3QgbWV0aG9kCiAgICAgZGVmIGZvdW5kX3Rlcm1pbmF0b3Ioc2VsZik6Ci0gICAgICAgIGxpbmUgPSBFTVBUWVNUUklORy5qb2luKHNlbGYucmVjZWl2ZWRfbGluZXMpCisgICAgICAgIGxpbmUgPSBzZWxmLl9lbXB0eXN0cmluZy5qb2luKHNlbGYucmVjZWl2ZWRfbGluZXMpCiAgICAgICAgIHByaW50KCdEYXRhOicsIHJlcHIobGluZSksIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQogICAgICAgICBpZiBzZWxmLnNtdHBfc3RhdGUgPT0gc2VsZi5DT01NQU5EOgpAQCAtMjk5LDcgKzM0Miw4IEBACiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogYmFkIHN5bnRheCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBtZXRob2QgPSBOb25lCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAgbGluZSA9IHN0cihsaW5lLCAndXRmLTgnKQogICAgICAgICAgICAgaSA9IGxpbmUuZmluZCgnICcpCiAgICAgICAgICAgICBpZiBpIDwgMDoKICAgICAgICAgICAgICAgICBjb21tYW5kID0gbGluZS51cHBlcigpCkBAIC0zMzAsMjEgKzM3NCwyMSBAQAogICAgICAgICAgICAgIyBSZW1vdmUgZXh0cmFuZW91cyBjYXJyaWFnZSByZXR1cm5zIGFuZCBkZS10cmFuc3BhcmVuY3kgYWNjb3JkaW5nCiAgICAgICAgICAgICAjIHRvIFJGQyA1MzIxLCBTZWN0aW9uIDQuNS4yLgogICAgICAgICAgICAgZGF0YSA9IFtdCi0gICAgICAgICAgICBmb3IgdGV4dCBpbiBsaW5lLnNwbGl0KCdcclxuJyk6Ci0gICAgICAgICAgICAgICAgaWYgdGV4dCBhbmQgdGV4dFswXSA9PSAnLic6CisgICAgICAgICAgICBmb3IgdGV4dCBpbiBsaW5lLnNwbGl0KHNlbGYuX2xpbmVzZXApOgorICAgICAgICAgICAgICAgIGlmIHRleHQgYW5kIHRleHRbMF0gPT0gc2VsZi5fZG90c2VwOgogICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCh0ZXh0WzE6XSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCh0ZXh0KQotICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gTkVXTElORS5qb2luKGRhdGEpCi0gICAgICAgICAgICBzdGF0dXMgPSBzZWxmLnNtdHBfc2VydmVyLnByb2Nlc3NfbWVzc2FnZShzZWxmLnBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1haWxmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY3B0dG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhKQotICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KLSAgICAgICAgICAgIHNlbGYubWFpbGZyb20gPSBOb25lCi0gICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKLSAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAotICAgICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gc2VsZi5fbmV3bGluZS5qb2luKGRhdGEpCisgICAgICAgICAgICBhcmdzID0gKHNlbGYucGVlciwgc2VsZi5tYWlsZnJvbSwgc2VsZi5yY3B0dG9zLCBzZWxmLnJlY2VpdmVkX2RhdGEpCisgICAgICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgICAgIGt3YXJncyA9IHsKKyAgICAgICAgICAgICAgICAgICAgJ21haWxfb3B0aW9ucyc6IHNlbGYubWFpbF9vcHRpb25zLAorICAgICAgICAgICAgICAgICAgICAncmNwdF9vcHRpb25zJzogc2VsZi5yY3B0X29wdGlvbnMsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdHVzID0gc2VsZi5zbXRwX3NlcnZlci5wcm9jZXNzX21lc3NhZ2UoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fc2V0X3Bvc3RfZGF0YV9zdGF0ZSgpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKICAgICAgICAgICAgIGVsc2U6CkBAIC0zNTUsMjYgKzM5OSwzNSBAQAogICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBIRUxPIGhvc3RuYW1lJykKICAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjE3ODMgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGJlaGF2aW9yLgogICAgICAgICBpZiBzZWxmLnNlZW5fZ3JlZXRpbmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZwotICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCisgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICBzZWxmLnB1c2goJzI1MCAlcycgJSBzZWxmLmZxZG4pCiAKICAgICBkZWYgc210cF9FSExPKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWUnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgU2VlIGlzc3VlICMyMTc4MyBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgYmVoYXZpb3IuCiAgICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCi0gICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MC0lcycgJSBzZWxmLmZxZG4pCi0gICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TSVpFICVzJyAlIHNlbGYuZGF0YV9zaXplX2xpbWl0KQotICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgSEVMUCcpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQorICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gVHJ1ZQorICAgICAgICBzZWxmLnB1c2goJzI1MC0lcycgJSBzZWxmLmZxZG4pCisgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtU0laRSAlcycgJSBzZWxmLmRhdGFfc2l6ZV9saW1pdCkKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1snTUFJTCddICs9IDI2CisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLThCSVRNSU1FJykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TTVRQVVRGOCcpCisgICAgICAgICAgICBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHNbJ01BSUwnXSArPSAxMAorICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKIAogICAgIGRlZiBzbXRwX05PT1Aoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgpAQCAtNDA1LDExICs0NTgsMTUgQEAKICAgICAgICAgcmV0dXJuIGFkZHJlc3MuYWRkcl9zcGVjLCByZXN0CiAKICAgICBkZWYgX2dldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgotICAgICAgICAjIFJldHVybiBhbnkgcGFyYW1ldGVycyB0aGF0IGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZwotICAgICAgICAjIHRvIFJGQyAxODY5LCBpZ25vcmUgYWxsIG90aGVycy4gIChQb3N0ZWwgcnVsZTogYWNjZXB0IHdoYXQgd2UgY2FuLikKLSAgICAgICAgcGFyYW1zID0gW3BhcmFtLnNwbGl0KCc9JywgMSkgZm9yIHBhcmFtIGluIHBhcmFtcy5zcGxpdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc9JyBpbiBwYXJhbV0KLSAgICAgICAgcmV0dXJuIHtrOiB2IGZvciBrLCB2IGluIHBhcmFtcyBpZiBrLmlzYWxudW0oKX0KKyAgICAgICAgIyBSZXR1cm4gcGFyYW1zIGFzIGRpY3Rpb25hcnkuIFJldHVybiBOb25lIGlmIG5vdCBhbGwgcGFyYW1ldGVycworICAgICAgICAjIGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZyB0byBSRkMgMTg2OS4KKyAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtczoKKyAgICAgICAgICAgIHBhcmFtLCBlcSwgdmFsdWUgPSBwYXJhbS5wYXJ0aXRpb24oJz0nKQorICAgICAgICAgICAgaWYgbm90IHBhcmFtLmlzYWxudW0oKSBvciBlcSBhbmQgbm90IHZhbHVlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICByZXN1bHRbcGFyYW1dID0gdmFsdWUgaWYgZXEgZWxzZSBUcnVlCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBzbXRwX0hFTFAoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgpAQCAtNDU5LDcgKzUxNiw3IEBACiAKICAgICBkZWYgc210cF9NQUlMKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0JykKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnPT09PiBNQUlMJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCkBAIC00NzksMTAgKzUzNiwyMyBAQAogICAgICAgICBpZiBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKKyAgICAgICAgc2VsZi5tYWlsX29wdGlvbnMgPSBwYXJhbXMudXBwZXIoKS5zcGxpdCgpCisgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhzZWxmLm1haWxfb3B0aW9ucykKICAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgIGJvZHkgPSBwYXJhbXMucG9wKCdCT0RZJywgJzdCSVQnKQorICAgICAgICAgICAgaWYgYm9keSBub3QgaW4gWyc3QklUJywgJzhCSVRNSU1FJ106CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgRXJyb3I6IEJPRFkgY2FuIG9ubHkgYmUgb25lIG9mIDdCSVQsIDhCSVRNSU1FJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5lbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICBzbXRwdXRmOCA9IHBhcmFtcy5wb3AoJ1NNVFBVVEY4JywgRmFsc2UpCisgICAgICAgICAgICBpZiBzbXRwdXRmOCBpcyBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYucmVxdWlyZV9TTVRQVVRGOCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgc210cHV0ZjggaXMgbm90IEZhbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIEVycm9yOiBTTVRQVVRGOCB0YWtlcyBubyBhcmd1bWVudHMnKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzaXplID0gcGFyYW1zLnBvcCgnU0laRScsIE5vbmUpCiAgICAgICAgIGlmIHNpemU6CiAgICAgICAgICAgICBpZiBub3Qgc2l6ZS5pc2RpZ2l0KCk6CkBAIC01MTcsMTYgKzU4NywxNiBAQAogICAgICAgICBpZiBub3QgYWRkcmVzczoKICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgcGFyYW1zOgotICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgotICAgICAgICAgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKLSAgICAgICAgICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHBhcmFtcyBhbmQgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgaWYgbm90IHNlbGYuZXh0ZW5kZWRfc210cCBhbmQgcGFyYW1zOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnJjcHRfb3B0aW9ucyA9IHBhcmFtcy51cHBlcigpLnNwbGl0KCkKKyAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHNlbGYucmNwdF9vcHRpb25zKQorICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBYWFggY3VycmVudGx5IHRoZXJlIGFyZSBubyBvcHRpb25zIHdlIHJlY29nbml6ZS4KKyAgICAgICAgaWYgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYucmNwdHRvcy5hcHBlbmQoYWRkcmVzcykKQEAgLTUzNywxMSArNjA3LDcgQEAKICAgICAgICAgaWYgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBSU0VUJykKICAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIFJlc2V0cyB0aGUgc2VuZGVyLCByZWNpcGllbnRzLCBhbmQgZGF0YSwgYnV0IG5vdCB0aGUgZ3JlZXRpbmcKLSAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKLSAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KLSAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKLSAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisgICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfREFUQShzZWxmLCBhcmcpOgpAQCAtNTY4LDEzICs2MzQsMjkgQEAKICAgICBjaGFubmVsX2NsYXNzID0gU01UUENoYW5uZWwKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCi0gICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUpOgorICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsIG1hcD1Ob25lLAorICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKKyAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhcmFtZXRlcnMgY2Fubm90IGJlIHNldCB0byBUcnVlIGF0IHRoZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc2FtZSB0aW1lLiIpCisgICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCisgICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6CisgICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCisgICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKKyAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCisgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9bWFwKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIGdhaV9yZXN1bHRzID0gc29ja2V0LmdldGFkZHJpbmZvKCpsb2NhbGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChnYWlfcmVzdWx0c1swXVswXSwgZ2FpX3Jlc3VsdHNbMF1bMV0pCiAgICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQogICAgICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmJpbmQobG9jYWxhZGRyKQpAQCAtNTg5LDExICs2NzEsMTYgQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHByaW50KCdJbmNvbWluZyBjb25uZWN0aW9uIGZyb20gJXMnICUgcmVwcihhZGRyKSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyLCBzZWxmLmRhdGFfc2l6ZV9saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXApCisgICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhKQogCiAgICAgIyBBUEkgZm9yICJkb2luZyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIG1lc3NhZ2UiCi0gICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJPdmVycmlkZSB0aGlzIGFic3RyYWN0IG1ldGhvZCB0byBoYW5kbGUgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50LgogCiAgICAgICAgIHBlZXIgaXMgYSB0dXBsZSBjb250YWluaW5nIChpcGFkZHIsIHBvcnQpIG9mIHRoZSBjbGllbnQgdGhhdCBtYWRlIHRoZQpAQCAtNjExLDI5ICs2OTgsNTggQEAKICAgICAgICAgY29udGFpbmluZyBhIGAuJyBmb2xsb3dlZCBieSBvdGhlciB0ZXh0IGhhcyBoYWQgdGhlIGxlYWRpbmcgZG90CiAgICAgICAgIHJlbW92ZWQuCiAKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIE5vbmUsIGZvciBhIG5vcm1hbCBgMjUwIE9rJyByZXNwb25zZTsKLSAgICAgICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgdGhlIGRlc2lyZWQgcmVzcG9uc2Ugc3RyaW5nIGluIFJGQyA4MjEgZm9ybWF0LgorICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKKyAgICAgICAgdW5sZXNzIGRlY29kZV9kYXRhPUZhbHNlIG9yIGVuYWJsZV9TTVRQVVRGOD1UcnVlIHdhcyBnaXZlbiBhcyBpbml0CisgICAgICAgIHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSB1dCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgorICAgICAgICAgICAgJ21haWxfb3B0aW9ucyc6IGxpc3Qgb2YgcGFyYW1ldGVycyB0byB0aGUgbWFpbCBjb21tYW5kLiAgQWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgYXJlIHVwcGVyY2FzZSBzdHJpbmdzLiAgRXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXS4KKyAgICAgICAgICAgICdyY3B0X29wdGlvbnMnOiBzYW1lLCBmb3IgdGhlIHJjcHQgY29tbWFuZC4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gTm9uZSBmb3IgYSBub3JtYWwgYDI1MCBPaycgcmVzcG9uc2U7CisgICAgICAgIG90aGVyd2lzZSwgaXQgc2hvdWxkIHJldHVybiB0aGUgZGVzaXJlZCByZXNwb25zZSBzdHJpbmcgaW4gUkZDIDgyMQorICAgICAgICBmb3JtYXQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCiBjbGFzcyBEZWJ1Z2dpbmdTZXJ2ZXIoU01UUFNlcnZlcik6Ci0gICAgIyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgZ2F0aGVyZWQgbWVzc2FnZQotICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgorCisgICAgZGVmIF9wcmludF9tZXNzYWdlX2NvbnRlbnQoc2VsZiwgcGVlciwgZGF0YSk6CiAgICAgICAgIGluaGVhZGVycyA9IDEKLSAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCi0gICAgICAgIHByaW50KCctLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tJykKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0bGluZXMoKQogICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgICMgaGVhZGVycyBmaXJzdAogICAgICAgICAgICAgaWYgaW5oZWFkZXJzIGFuZCBub3QgbGluZToKLSAgICAgICAgICAgICAgICBwcmludCgnWC1QZWVyOicsIHBlZXJbMF0pCisgICAgICAgICAgICAgICAgcGVlcmhlYWRlciA9ICdYLVBlZXI6ICcgKyBwZWVyWzBdCisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgIyBkZWNvZGVkX2RhdGE9ZmFsc2U7IG1ha2UgaGVhZGVyIG1hdGNoIG90aGVyIGJpbmFyeSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgcGVlcmhlYWRlciA9IHJlcHIocGVlcmhlYWRlci5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgcHJpbnQocGVlcmhlYWRlcikKICAgICAgICAgICAgICAgICBpbmhlYWRlcnMgPSAwCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgorICAgICAgICAgICAgICAgICMgQXZvaWQgc3B1cmlvdXMgJ3N0ciBvbiBieXRlcyBpbnN0YW5jZScgd2FybmluZy4KKyAgICAgICAgICAgICAgICBsaW5lID0gcmVwcihsaW5lKQogICAgICAgICAgICAgcHJpbnQobGluZSkKKworICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKToKKyAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0nKQorICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdtYWlsX29wdGlvbnMnKToKKyAgICAgICAgICAgICAgICBwcmludCgnbWFpbCBvcHRpb25zOiAlcycgJSBrd2FyZ3NbJ21haWxfb3B0aW9ucyddKQorICAgICAgICAgICAgaWYga3dhcmdzLmdldCgncmNwdF9vcHRpb25zJyk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ3JjcHQgb3B0aW9uczogJXNcbicgJSBrd2FyZ3NbJ3JjcHRfb3B0aW9ucyddKQorICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlX2NvbnRlbnQocGVlciwgZGF0YSkKICAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0nKQogCiAKIGNsYXNzIFB1cmVQcm94eShTTVRQU2VydmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgJ2VuYWJsZV9TTVRQVVRGOCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2VuYWJsZV9TTVRQVVRGOCddOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHVyZVByb3h5IGRvZXMgbm90IHN1cHBvcnQgU01UUFVURjguIikKKyAgICAgICAgc3VwZXIoUHVyZVByb3h5LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCiAgICAgICAgICMgTG9vayBmb3IgdGhlIGxhc3QgaGVhZGVyCkBAIC02NzQsNiArNzkwLDExIEBACiAKIAogY2xhc3MgTWFpbG1hblByb3h5KFB1cmVQcm94eSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmICdlbmFibGVfU01UUFVURjgnIGluIGt3YXJncyBhbmQga3dhcmdzWydlbmFibGVfU01UUFVURjgnXToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1haWxtYW5Qcm94eSBkb2VzIG5vdCBzdXBwb3J0IFNNVFBVVEY4LiIpCisgICAgICAgIHN1cGVyKFB1cmVQcm94eSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAgICAgICAgIGZyb20gTWFpbG1hbiBpbXBvcnQgVXRpbHMKQEAgLTc1MiwxNyArODczLDE5IEBACiAKIAogY2xhc3MgT3B0aW9uczoKLSAgICBzZXR1aWQgPSAxCisgICAgc2V0dWlkID0gVHJ1ZQogICAgIGNsYXNzbmFtZSA9ICdQdXJlUHJveHknCiAgICAgc2l6ZV9saW1pdCA9IE5vbmUKKyAgICBlbmFibGVfU01UUFVURjggPSBGYWxzZQogCiAKIGRlZiBwYXJzZWFyZ3MoKToKICAgICBnbG9iYWwgREVCVUdTVFJFQU0KICAgICB0cnk6CiAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KAotICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAnblZoYzpzOmQnLAotICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ3NpemU9JywgJ2RlYnVnJ10pCisgICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOnM6ZHUnLAorICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ3NpemU9JywgJ2RlYnVnJywKKyAgICAgICAgICAgICAnc210cHV0ZjgnXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGU6CiAgICAgICAgIHVzYWdlKDEsIGUpCiAKQEAgLTc3NCwxMSArODk3LDEzIEBACiAgICAgICAgICAgICBwcmludChfX3ZlcnNpb25fXykKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAgICAgICAgIGVsaWYgb3B0IGluICgnLW4nLCAnLS1ub3NldHVpZCcpOgotICAgICAgICAgICAgb3B0aW9ucy5zZXR1aWQgPSAwCisgICAgICAgICAgICBvcHRpb25zLnNldHVpZCA9IEZhbHNlCiAgICAgICAgIGVsaWYgb3B0IGluICgnLWMnLCAnLS1jbGFzcycpOgogICAgICAgICAgICAgb3B0aW9ucy5jbGFzc25hbWUgPSBhcmcKICAgICAgICAgZWxpZiBvcHQgaW4gKCctZCcsICctLWRlYnVnJyk6CiAgICAgICAgICAgICBERUJVR1NUUkVBTSA9IHN5cy5zdGRlcnIKKyAgICAgICAgZWxpZiBvcHQgaW4gKCctdScsICctLXNtdHB1dGY4Jyk6CisgICAgICAgICAgICBvcHRpb25zLmVuYWJsZV9TTVRQVVRGOCA9IFRydWUKICAgICAgICAgZWxpZiBvcHQgaW4gKCctcycsICctLXNpemUnKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpbnRfc2l6ZSA9IGludChhcmcpCkBAIC04MzMsNyArOTU4LDcgQEAKICAgICBjbGFzc18gPSBnZXRhdHRyKG1vZCwgY2xhc3NuYW1lKQogICAgIHByb3h5ID0gY2xhc3NfKChvcHRpb25zLmxvY2FsaG9zdCwgb3B0aW9ucy5sb2NhbHBvcnQpLAogICAgICAgICAgICAgICAgICAgIChvcHRpb25zLnJlbW90ZWhvc3QsIG9wdGlvbnMucmVtb3RlcG9ydCksCi0gICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0KQorICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCwgZW5hYmxlX1NNVFBVVEY4PW9wdGlvbnMuZW5hYmxlX1NNVFBVVEY4KQogICAgIGlmIG9wdGlvbnMuc2V0dWlkOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgcHdkCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IGRiMjNmZjAuLjcxY2NkMmEgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC01MCw4ICs1MCw5IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgaG1hYwogaW1wb3J0IGNvcHkKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHN5cwogZnJvbSBlbWFpbC5iYXNlNjRtaW1lIGltcG9ydCBib2R5X2VuY29kZSBhcyBlbmNvZGVfYmFzZTY0Ci1mcm9tIHN5cyBpbXBvcnQgc3RkZXJyCiAKIF9fYWxsX18gPSBbIlNNVFBFeGNlcHRpb24iLCAiU01UUFNlcnZlckRpc2Nvbm5lY3RlZCIsICJTTVRQUmVzcG9uc2VFeGNlcHRpb24iLAogICAgICAgICAgICAiU01UUFNlbmRlclJlZnVzZWQiLCAiU01UUFJlY2lwaWVudHNSZWZ1c2VkIiwgIlNNVFBEYXRhRXJyb3IiLApAQCAtNzAsNiArNzEsMTMgQEAKIGNsYXNzIFNNVFBFeGNlcHRpb24oT1NFcnJvcik6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgYWxsIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoaXMgbW9kdWxlLiIiIgogCitjbGFzcyBTTVRQTm90U3VwcG9ydGVkRXJyb3IoU01UUEV4Y2VwdGlvbik6CisgICAgIiIiVGhlIGNvbW1hbmQgb3Igb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFNNVFAgc2VydmVyLgorCisgICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHJ1biBhIGNvbW1hbmQgb3IgYQorICAgIGNvbW1hbmQgd2l0aCBhbiBvcHRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLgorICAgICIiIgorCiBjbGFzcyBTTVRQU2VydmVyRGlzY29ubmVjdGVkKFNNVFBFeGNlcHRpb24pOgogICAgICIiIk5vdCBjb25uZWN0ZWQgdG8gYW55IFNNVFAgc2VydmVyLgogCkBAIC0yMzYsNiArMjQ0LDcgQEAKICAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxmLmVzbXRwX2ZlYXR1cmVzID0ge30KKyAgICAgICAgc2VsZi5jb21tYW5kX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKIAogICAgICAgICBpZiBob3N0OgpAQCAtMjgyLDEyICsyOTEsMTcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZGVidWdsZXZlbCA9IGRlYnVnbGV2ZWwKIAorICAgIGRlZiBfcHJpbnRfZGVidWcoc2VsZiwgKmFyZ3MpOgorICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAxOgorICAgICAgICAgICAgcHJpbnQoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkudGltZSgpLCAqYXJncywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQoKmFyZ3MsIGZpbGU9c3lzLnN0ZGVycikKKwogICAgIGRlZiBfZ2V0X3NvY2tldChzZWxmLCBob3N0LCBwb3J0LCB0aW1lb3V0KToKICAgICAgICAgIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgZm9yIFNNVFBfU1NMIHRvIHVzZSB0aGUgU01UUCBjb25uZWN0IGNvZGUKICAgICAgICAgIyBhbmQganVzdCBhbHRlciB0aGUgc29ja2V0IGNvbm5lY3Rpb24gYml0LgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6IHRvJywgKGhvc3QsIHBvcnQpLCBzZWxmLnNvdXJjZV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAKQEAgLTMxNywyMSArMzMxLDI0IEBACiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcG9ydCA9IHNlbGYuZGVmYXVsdF9wb3J0CiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgnY29ubmVjdDonLCAoaG9zdCwgcG9ydCksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpKQogICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9nZXRfc29ja2V0KGhvc3QsIHBvcnQsIHNlbGYudGltZW91dCkKICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoImNvbm5lY3Q6IiwgbXNnLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OicsIHJlcHIobXNnKSkKICAgICAgICAgcmV0dXJuIChjb2RlLCBtc2cpCiAKICAgICBkZWYgc2VuZChzZWxmLCBzKToKICAgICAgICAgIiIiU2VuZCBgcycgdG8gdGhlIHNlcnZlci4iIiIKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdzZW5kOicsIHJlcHIocyksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ3NlbmQ6JywgcmVwcihzKSkKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnc29jaycpIGFuZCBzZWxmLnNvY2s6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgICAgICAgICAgcyA9IHMuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgIyBzZW5kIGlzIHVzZWQgYnkgdGhlICdkYXRhJyBjb21tYW5kLCB3aGVyZSBjb21tYW5kX2VuY29kaW5nCisgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IGJlIHVzZWQsIGJ1dCAnZGF0YScgbmVlZHMgdG8gY29udmVydCB0aGUgc3RyaW5nIHRvCisgICAgICAgICAgICAgICAgIyBiaW5hcnkgaXRzZWxmIGFueXdheSwgc28gdGhhdCdzIG5vdCBhIHByb2JsZW0uCisgICAgICAgICAgICAgICAgcyA9IHMuZW5jb2RlKHNlbGYuY29tbWFuZF9lbmNvZGluZykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChzKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CkBAIC0zNzUsNyArMzkyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZSBTTVRQU2VydmVyRGlzY29ubmVjdGVkKCJDb25uZWN0aW9uIHVuZXhwZWN0ZWRseSBjbG9zZWQiKQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgncmVwbHk6JywgcmVwcihsaW5lKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ3JlcGx5OicsIHJlcHIobGluZSkpCiAgICAgICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZSBTTVRQUmVzcG9uc2VFeGNlcHRpb24oNTAwLCAiTGluZSB0b28gbG9uZy4iKQpAQCAtMzk0LDggKzQxMSw3IEBACiAKICAgICAgICAgZXJybXNnID0gYiJcbiIuam9pbihyZXNwKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJXMnICUgKGVycmNvZGUsIGVycm1zZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlYScgJSAoZXJyY29kZSwgZXJybXNnKSkKICAgICAgICAgcmV0dXJuIGVycmNvZGUsIGVycm1zZwogCiAgICAgZGVmIGRvY21kKHNlbGYsIGNtZCwgYXJncz0iIik6CkBAIC00NzcsNiArNDkzLDcgQEAKIAogICAgIGRlZiByc2V0KHNlbGYpOgogICAgICAgICAiIiJTTVRQICdyc2V0JyBjb21tYW5kIC0tIHJlc2V0cyBzZXNzaW9uLiIiIgorICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgIHJldHVybiBzZWxmLmRvY21kKCJyc2V0IikKIAogICAgIGRlZiBfcnNldChzZWxmKToKQEAgLTQ5Niw5ICs1MTMsMjIgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZG9jbWQoIm5vb3AiKQogCiAgICAgZGVmIG1haWwoc2VsZiwgc2VuZGVyLCBvcHRpb25zPVtdKToKLSAgICAgICAgIiIiU01UUCAnbWFpbCcgY29tbWFuZCAtLSBiZWdpbnMgbWFpbCB4ZmVyIHNlc3Npb24uIiIiCisgICAgICAgICIiIlNNVFAgJ21haWwnIGNvbW1hbmQgLS0gYmVnaW5zIG1haWwgeGZlciBzZXNzaW9uLgorCisgICAgICAgIFRoaXMgbWV0aG9kIG1heSByYWlzZSB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CisKKyAgICAgICAgIFNNVFBOb3RTdXBwb3J0ZWRFcnJvciAgVGhlIG9wdGlvbnMgcGFyYW1ldGVyIGluY2x1ZGVzICdTTVRQVVRGOCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRoZSBTTVRQVVRGOCBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyLgorICAgICAgICAiIiIKICAgICAgICAgb3B0aW9ubGlzdCA9ICcnCiAgICAgICAgIGlmIG9wdGlvbnMgYW5kIHNlbGYuZG9lc19lc210cDoKKyAgICAgICAgICAgIGlmIGFueSh4Lmxvd2VyKCk9PSdzbXRwdXRmOCcgZm9yIHggaW4gb3B0aW9ucyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5oYXNfZXh0bignc210cHV0ZjgnKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2VuY29kaW5nID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICdTTVRQVVRGOCBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcicpCiAgICAgICAgICAgICBvcHRpb25saXN0ID0gJyAnICsgJyAnLmpvaW4ob3B0aW9ucykKICAgICAgICAgc2VsZi5wdXRjbWQoIm1haWwiLCAiRlJPTTolcyVzIiAlIChxdW90ZWFkZHIoc2VuZGVyKSwgb3B0aW9ubGlzdCkpCiAgICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkKQEAgLTUyNCw3ICs1NTQsNyBAQAogICAgICAgICBzZWxmLnB1dGNtZCgiZGF0YSIpCiAgICAgICAgIChjb2RlLCByZXBsKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoImRhdGE6IiwgKGNvZGUsIHJlcGwpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdkYXRhOicsIChjb2RlLCByZXBsKSkKICAgICAgICAgaWYgY29kZSAhPSAzNTQ6CiAgICAgICAgICAgICByYWlzZSBTTVRQRGF0YUVycm9yKGNvZGUsIHJlcGwpCiAgICAgICAgIGVsc2U6CkBAIC01MzcsNyArNTY3LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2VuZChxKQogICAgICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgcHJpbnQoImRhdGE6IiwgKGNvZGUsIG1zZyksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdkYXRhOicsIChjb2RlLCBtc2cpKQogICAgICAgICAgICAgcmV0dXJuIChjb2RlLCBtc2cpCiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIGFkZHJlc3MpOgpAQCAtNTcxLDEyICs2MDEsNjAgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgKDIwMCA8PSBjb2RlIDw9IDI5OSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBIZWxvRXJyb3IoY29kZSwgcmVzcCkKIAorICAgIGRlZiBhdXRoKHNlbGYsIG1lY2hhbmlzbSwgYXV0aG9iamVjdCk6CisgICAgICAgICIiIkF1dGhlbnRpY2F0aW9uIGNvbW1hbmQgLSByZXF1aXJlcyByZXNwb25zZSBwcm9jZXNzaW5nLgorCisgICAgICAgICdtZWNoYW5pc20nIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgICAgICAgYmUgdXNlZCAtIHRoZSB2YWxpZCB2YWx1ZXMgYXJlIHRob3NlIGxpc3RlZCBpbiB0aGUgJ2F1dGgnCisgICAgICAgIGVsZW1lbnQgb2YgJ2VzbXRwX2ZlYXR1cmVzJy4KKworICAgICAgICAnYXV0aG9iamVjdCcgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQ6CisKKyAgICAgICAgICAgICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2UpCisKKyAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlIHJlc3BvbnNlOyB0aGUKKyAgICAgICAgY2hhbGxlbmdlIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYnl0ZXMuICBJdCBzaG91bGQgcmV0dXJuCisgICAgICAgIGJ5dGVzIGRhdGEgdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgICIiIgorCisgICAgICAgIG1lY2hhbmlzbSA9IG1lY2hhbmlzbS51cHBlcigpCisgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLCBtZWNoYW5pc20pCisgICAgICAgICMgU2VydmVyIHJlcGxpZXMgd2l0aCAzMzQgKGNoYWxsZW5nZSkgb3IgNTM1IChub3Qgc3VwcG9ydGVkKQorICAgICAgICBpZiBjb2RlID09IDMzNDoKKyAgICAgICAgICAgIGNoYWxsZW5nZSA9IGJhc2U2NC5kZWNvZGVieXRlcyhyZXNwKQorICAgICAgICAgICAgcmVzcG9uc2UgPSBlbmNvZGVfYmFzZTY0KAorICAgICAgICAgICAgICAgIGF1dGhvYmplY3QoY2hhbGxlbmdlKS5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKKyAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQocmVzcG9uc2UpCisgICAgICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQorICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorCisgICAgZGVmIGF1dGhfY3JhbV9tZDUoc2VsZiwgY2hhbGxlbmdlKToKKyAgICAgICAgIiIiIEF1dGhvYmplY3QgdG8gdXNlIHdpdGggQ1JBTS1NRDUgYXV0aGVudGljYXRpb24uIFJlcXVpcmVzIHNlbGYudXNlcgorICAgICAgICBhbmQgc2VsZi5wYXNzd29yZCB0byBiZSBzZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnVzZXIgKyAiICIgKyBobWFjLkhNQUMoCisgICAgICAgICAgICBzZWxmLnBhc3N3b3JkLmVuY29kZSgnYXNjaWknKSwgY2hhbGxlbmdlLCAnbWQ1JykuaGV4ZGlnZXN0KCkKKworICAgIGRlZiBhdXRoX3BsYWluKHNlbGYsIGNoYWxsZW5nZSk6CisgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIFBMQUlOIGF1dGhlbnRpY2F0aW9uLiBSZXF1aXJlcyBzZWxmLnVzZXIgYW5kCisgICAgICAgIHNlbGYucGFzc3dvcmQgdG8gYmUgc2V0LiIiIgorICAgICAgICByZXR1cm4gIlwwJXNcMCVzIiAlIChzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQpCisKKyAgICBkZWYgYXV0aF9sb2dpbihzZWxmLCBjaGFsbGVuZ2UpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBMT0dJTiBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyIGFuZAorICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgKKyAgICAgICAgICAgIGVuY29kZV9iYXNlNjQoc2VsZi51c2VyLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKSkKKyAgICAgICAgaWYgY29kZSA9PSAzMzQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXNzd29yZAorICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorCiAgICAgZGVmIGxvZ2luKHNlbGYsIHVzZXIsIHBhc3N3b3JkKToKICAgICAgICAgIiIiTG9nIGluIG9uIGFuIFNNVFAgc2VydmVyIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uCiAKICAgICAgICAgVGhlIGFyZ3VtZW50cyBhcmU6Ci0gICAgICAgICAgICAtIHVzZXI6ICAgICBUaGUgdXNlciBuYW1lIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLgotICAgICAgICAgICAgLSBwYXNzd29yZDogVGhlIHBhc3N3b3JkIGZvciB0aGUgYXV0aGVudGljYXRpb24uCisgICAgICAgICAgICAtIHVzZXI6ICAgICAgICAgVGhlIHVzZXIgbmFtZSB0byBhdXRoZW50aWNhdGUgd2l0aC4KKyAgICAgICAgICAgIC0gcGFzc3dvcmQ6ICAgICBUaGUgcGFzc3dvcmQgZm9yIHRoZSBhdXRoZW50aWNhdGlvbi4KIAogICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKICAgICAgICAgbWV0aG9kIHRyaWVzIEVTTVRQIEVITE8gZmlyc3QuCkBAIC01ODksNjcgKzY2Nyw0NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBoZWxvIGdyZWV0aW5nLgogICAgICAgICAgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgIFRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUgdXNlcm5hbWUvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQgY29tYmluYXRpb24uCisgICAgICAgICBTTVRQTm90U3VwcG9ydGVkRXJyb3IgICAgVGhlIEFVVEggY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci4KICAgICAgICAgIFNNVFBFeGNlcHRpb24gICAgICAgICAgICBObyBzdWl0YWJsZSBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2FzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuCiAgICAgICAgICIiIgogCi0gICAgICAgIGRlZiBlbmNvZGVfY3JhbV9tZDUoY2hhbGxlbmdlLCB1c2VyLCBwYXNzd29yZCk6Ci0gICAgICAgICAgICBjaGFsbGVuZ2UgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoY2hhbGxlbmdlKQotICAgICAgICAgICAgcmVzcG9uc2UgPSB1c2VyICsgIiAiICsgaG1hYy5ITUFDKHBhc3N3b3JkLmVuY29kZSgnYXNjaWknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZV9iYXNlNjQocmVzcG9uc2UuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpCi0KLSAgICAgICAgZGVmIGVuY29kZV9wbGFpbih1c2VyLCBwYXNzd29yZCk6Ci0gICAgICAgICAgICBzID0gIlwwJXNcMCVzIiAlICh1c2VyLCBwYXNzd29yZCkKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVfYmFzZTY0KHMuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpCi0KLSAgICAgICAgQVVUSF9QTEFJTiA9ICJQTEFJTiIKLSAgICAgICAgQVVUSF9DUkFNX01ENSA9ICJDUkFNLU1ENSIKLSAgICAgICAgQVVUSF9MT0dJTiA9ICJMT0dJTiIKLQogICAgICAgICBzZWxmLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKQotCiAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19leHRuKCJhdXRoIik6Ci0gICAgICAgICAgICByYWlzZSBTTVRQRXhjZXB0aW9uKCJTTVRQIEFVVEggZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyLiIpCisgICAgICAgICAgICByYWlzZSBTTVRQTm90U3VwcG9ydGVkRXJyb3IoCisgICAgICAgICAgICAgICAgIlNNVFAgQVVUSCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKIAogICAgICAgICAjIEF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgdGhlIHNlcnZlciBjbGFpbXMgdG8gc3VwcG9ydAogICAgICAgICBhZHZlcnRpc2VkX2F1dGhsaXN0ID0gc2VsZi5lc210cF9mZWF0dXJlc1siYXV0aCJdLnNwbGl0KCkKIAotICAgICAgICAjIExpc3Qgb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyB3ZSBzdXBwb3J0OiBmcm9tIHByZWZlcnJlZCB0bwotICAgICAgICAjIGxlc3MgcHJlZmVycmVkIG1ldGhvZHMuIEV4Y2VwdCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGVzdGluZyB0aGUgd2Vha2VyCi0gICAgICAgICMgb25lcywgd2UgcHJlZmVyIHN0cm9uZ2VyIG1ldGhvZHMgbGlrZSBDUkFNLU1ENToKLSAgICAgICAgcHJlZmVycmVkX2F1dGhzID0gW0FVVEhfQ1JBTV9NRDUsIEFVVEhfUExBSU4sIEFVVEhfTE9HSU5dCisgICAgICAgICMgQXV0aGVudGljYXRpb24gbWV0aG9kcyB3ZSBjYW4gaGFuZGxlIGluIG91ciBwcmVmZXJyZWQgb3JkZXI6CisgICAgICAgIHByZWZlcnJlZF9hdXRocyA9IFsnQ1JBTS1NRDUnLCAnUExBSU4nLCAnTE9HSU4nXQogCi0gICAgICAgICMgV2UgdHJ5IHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcywgYnV0IG9ubHkgdGhlCi0gICAgICAgICMgb25lcyAqd2UqIHN1cHBvcnQuIEFuZCBpbiBvdXIgcHJlZmVycmVkIG9yZGVyLgotICAgICAgICBhdXRobGlzdCA9IFthdXRoIGZvciBhdXRoIGluIHByZWZlcnJlZF9hdXRocyBpZiBhdXRoIGluIGFkdmVydGlzZWRfYXV0aGxpc3RdCisgICAgICAgICMgV2UgdHJ5IHRoZSBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb25zIGluIG91ciBwcmVmZXJyZWQgb3JkZXIsIGlmCisgICAgICAgICMgdGhlIHNlcnZlciBzdXBwb3J0cyB0aGVtLgorICAgICAgICBhdXRobGlzdCA9IFthdXRoIGZvciBhdXRoIGluIHByZWZlcnJlZF9hdXRocworICAgICAgICAgICAgICAgICAgICBpZiBhdXRoIGluIGFkdmVydGlzZWRfYXV0aGxpc3RdCiAgICAgICAgIGlmIG5vdCBhdXRobGlzdDoKICAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIk5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBmb3VuZC4iKQogCiAgICAgICAgICMgU29tZSBzZXJ2ZXJzIGFkdmVydGlzZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoZXkgZG9uJ3QgcmVhbGx5CiAgICAgICAgICMgc3VwcG9ydCwgc28gaWYgYXV0aGVudGljYXRpb24gZmFpbHMsIHdlIGNvbnRpbnVlIHVudGlsIHdlJ3ZlIHRyaWVkCiAgICAgICAgICMgYWxsIG1ldGhvZHMuCisgICAgICAgIHNlbGYudXNlciwgc2VsZi5wYXNzd29yZCA9IHVzZXIsIHBhc3N3b3JkCiAgICAgICAgIGZvciBhdXRobWV0aG9kIGluIGF1dGhsaXN0OgotICAgICAgICAgICAgaWYgYXV0aG1ldGhvZCA9PSBBVVRIX0NSQU1fTUQ1OgotICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLCBBVVRIX0NSQU1fTUQ1KQotICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gMzM0OgotICAgICAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKGVuY29kZV9jcmFtX21kNShyZXNwLCB1c2VyLCBwYXNzd29yZCkpCi0gICAgICAgICAgICBlbGlmIGF1dGhtZXRob2QgPT0gQVVUSF9QTEFJTjoKLSAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwKLSAgICAgICAgICAgICAgICAgICAgQVVUSF9QTEFJTiArICIgIiArIGVuY29kZV9wbGFpbih1c2VyLCBwYXNzd29yZCkpCi0gICAgICAgICAgICBlbGlmIGF1dGhtZXRob2QgPT0gQVVUSF9MT0dJTjoKLSAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwKLSAgICAgICAgICAgICAgICAgICAgIiVzICVzIiAlIChBVVRIX0xPR0lOLCBlbmNvZGVfYmFzZTY0KHVzZXIuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpKSkKLSAgICAgICAgICAgICAgICBpZiBjb2RlID09IDMzNDoKLSAgICAgICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZChlbmNvZGVfYmFzZTY0KHBhc3N3b3JkLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKSkKKyAgICAgICAgICAgIG1ldGhvZF9uYW1lID0gJ2F1dGhfJyArIGF1dGhtZXRob2QubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuYXV0aChhdXRobWV0aG9kLCBnZXRhdHRyKHNlbGYsIG1ldGhvZF9uYW1lKSkKKyAgICAgICAgICAgICAgICAjIDIzNSA9PSAnQXV0aGVudGljYXRpb24gc3VjY2Vzc2Z1bCcKKyAgICAgICAgICAgICAgICAjIDUwMyA9PSAnRXJyb3I6IGFscmVhZHkgYXV0aGVudGljYXRlZCcKKyAgICAgICAgICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoY29kZSwgcmVzcCkKKyAgICAgICAgICAgIGV4Y2VwdCBTTVRQQXV0aGVudGljYXRpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gZQogCi0gICAgICAgICAgICAjIDIzNSA9PSAnQXV0aGVudGljYXRpb24gc3VjY2Vzc2Z1bCcKLSAgICAgICAgICAgICMgNTAzID09ICdFcnJvcjogYWxyZWFkeSBhdXRoZW50aWNhdGVkJwotICAgICAgICAgICAgaWYgY29kZSBpbiAoMjM1LCA1MDMpOgotICAgICAgICAgICAgICAgIHJldHVybiAoY29kZSwgcmVzcCkKLQotICAgICAgICAjIFdlIGNvdWxkIG5vdCBsb2dpbiBzdWNlc3NmdWxseS4gUmV0dXJuIHJlc3VsdCBvZiBsYXN0IGF0dGVtcHQuCi0gICAgICAgIHJhaXNlIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yKGNvZGUsIHJlc3ApCisgICAgICAgICMgV2UgY291bGQgbm90IGxvZ2luIHN1Y2Nlc3NmdWxseS4gIFJldHVybiByZXN1bHQgb2YgbGFzdCBhdHRlbXB0LgorICAgICAgICByYWlzZSBsYXN0X2V4Y2VwdGlvbgogCiAgICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUHV0cyB0aGUgY29ubmVjdGlvbiB0byB0aGUgU01UUCBzZXJ2ZXIgaW50byBUTFMgbW9kZS4KQEAgLTY3MCw3ICs3MjgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5laGxvX29yX2hlbG9faWZfbmVlZGVkKCkKICAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oInN0YXJ0dGxzIik6Ci0gICAgICAgICAgICByYWlzZSBTTVRQRXhjZXB0aW9uKCJTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKKyAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAiU1RBUlRUTFMgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyLiIpCiAgICAgICAgIChyZXNwLCByZXBseSkgPSBzZWxmLmRvY21kKCJTVEFSVFRMUyIpCiAgICAgICAgIGlmIHJlc3AgPT0gMjIwOgogICAgICAgICAgICAgaWYgbm90IF9oYXZlX3NzbDoKQEAgLTczNSw2ICs3OTQsOSBAQAogICAgICAgICAgU01UUERhdGFFcnJvciAgICAgICAgICBUaGUgc2VydmVyIHJlcGxpZWQgd2l0aCBhbiB1bmV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGNvZGUgKG90aGVyIHRoYW4gYSByZWZ1c2FsIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBpZW50KS4KKyAgICAgICAgIFNNVFBOb3RTdXBwb3J0ZWRFcnJvciAgVGhlIG1haWxfb3B0aW9ucyBwYXJhbWV0ZXIgaW5jbHVkZXMgJ1NNVFBVVEY4JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2ZXIuCiAKICAgICAgICAgTm90ZTogdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBvcGVuIGV2ZW4gYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KIApAQCAtNzYzLDggKzgyNSw2IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2UobXNnLCBzdHIpOgogICAgICAgICAgICAgbXNnID0gX2ZpeF9lb2xzKG1zZykuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIGlmIHNlbGYuZG9lc19lc210cDoKLSAgICAgICAgICAgICMgSG1tbT8gd2hhdCdzIHRoaXM/IC1kZG0KLSAgICAgICAgICAgICMgc2VsZi5lc210cF9mZWF0dXJlc1snN2JpdCddPSIiCiAgICAgICAgICAgICBpZiBzZWxmLmhhc19leHRuKCdzaXplJyk6CiAgICAgICAgICAgICAgICAgZXNtdHBfb3B0cy5hcHBlbmQoInNpemU9JWQiICUgbGVuKG1zZykpCiAgICAgICAgICAgICBmb3Igb3B0aW9uIGluIG1haWxfb3B0aW9uczoKQEAgLTgxMiw3ICs4NzIsMTMgQEAKICAgICAgICAgdG9fYWRkciwgYW55IEJjYyBmaWVsZCAob3IgUmVzZW50LUJjYyBmaWVsZCwgd2hlbiB0aGUgTWVzc2FnZSBpcyBhCiAgICAgICAgIHJlc2VudCkgb2YgdGhlIE1lc3NhZ2Ugb2JqZWN0IHdvbid0IGJlIHRyYW5zbWl0dGVkLiAgVGhlIE1lc3NhZ2UKICAgICAgICAgb2JqZWN0IGlzIHRoZW4gc2VyaWFsaXplZCB1c2luZyBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IgYW5kCi0gICAgICAgIHNlbmRtYWlsIGlzIGNhbGxlZCB0byB0cmFuc21pdCB0aGUgbWVzc2FnZS4KKyAgICAgICAgc2VuZG1haWwgaXMgY2FsbGVkIHRvIHRyYW5zbWl0IHRoZSBtZXNzYWdlLiAgSWYgdGhlIHNlbmRlciBvciBhbnkgb2YKKyAgICAgICAgdGhlIHJlY2lwaWVudCBhZGRyZXNzZXMgY29udGFpbiBub24tQVNDSUkgYW5kIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUKKyAgICAgICAgU01UUFVURjggY2FwYWJpbGl0eSwgdGhlIHBvbGljeSBpcyBjbG9uZWQgd2l0aCB1dGY4IHNldCB0byBUcnVlIGZvciB0aGUKKyAgICAgICAgc2VyaWFsaXphdGlvbiwgYW5kIFNNVFBVVEY4IGFuZCBCT0RZPThCSVRNSU1FIGFyZSBhc3NlcnRlZCBvbiB0aGUgc2VuZC4KKyAgICAgICAgSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNNVFBVVEY4LCBhbiBTTVBUTm90U3VwcG9ydGVkIGVycm9yIGlzCisgICAgICAgIHJhaXNlZC4gIE90aGVyd2lzZSB0aGUgZ2VuZXJhdG9yIGlzIGNhbGxlZCB3aXRob3V0IG1vZGlmeWluZyB0aGUKKyAgICAgICAgcG9saWN5LgogCiAgICAgICAgICIiIgogICAgICAgICAjICdSZXNlbnQtRGF0ZScgaXMgYSBtYW5kYXRvcnkgZmllbGQgaWYgdGhlIE1lc3NhZ2UgaXMgcmVzZW50IChSRkMgMjgyMgpAQCAtODI1LDYgKzg5MSw3IEBACiAgICAgICAgICMgb3B0aW9uIGFsbG93aW5nIHRoZSB1c2VyIHRvIGVuYWJsZSB0aGUgaGV1cmlzdGljcy4gIChJdCBzaG91bGQgYmUKICAgICAgICAgIyBwb3NzaWJsZSB0byBndWVzcyBjb3JyZWN0bHkgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4pCiAKKyAgICAgICAgc2VsZi5laGxvX29yX2hlbG9faWZfbmVlZGVkKCkKICAgICAgICAgcmVzZW50ID0gbXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKICAgICAgICAgaWYgcmVzZW50IGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJfcHJlZml4ID0gJycKQEAgLTg0MCwxNCArOTA3LDMwIEBACiAgICAgICAgIGlmIHRvX2FkZHJzIGlzIE5vbmU6CiAgICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCArICdUbyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQmNjJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKSBpZiBmIGlzIG5vdCBOb25lXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQ2MnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYgaXMgbm90IE5vbmVdCiAgICAgICAgICAgICB0b19hZGRycyA9IFthWzFdIGZvciBhIGluIGVtYWlsLnV0aWxzLmdldGFkZHJlc3NlcyhhZGRyX2ZpZWxkcyldCiAgICAgICAgICMgTWFrZSBhIGxvY2FsIGNvcHkgc28gd2UgY2FuIGRlbGV0ZSB0aGUgYmNjIGhlYWRlcnMuCiAgICAgICAgIG1zZ19jb3B5ID0gY29weS5jb3B5KG1zZykKICAgICAgICAgZGVsIG1zZ19jb3B5WydCY2MnXQogICAgICAgICBkZWwgbXNnX2NvcHlbJ1Jlc2VudC1CY2MnXQorICAgICAgICBpbnRlcm5hdGlvbmFsID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgJycuam9pbihbZnJvbV9hZGRyLCAqdG9fYWRkcnNdKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19leHRuKCdzbXRwdXRmOCcpOgorICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIk9uZSBvciBtb3JlIHNvdXJjZSBvciBkZWxpdmVyeSBhZGRyZXNzZXMgcmVxdWlyZSIKKyAgICAgICAgICAgICAgICAgICAgIiBpbnRlcm5hdGlvbmFsaXplZCBlbWFpbCBzdXBwb3J0LCBidXQgdGhlIHNlcnZlciIKKyAgICAgICAgICAgICAgICAgICAgIiBkb2VzIG5vdCBhZHZlcnRpc2UgdGhlIHJlcXVpcmVkIFNNVFBVVEY4IGNhcGFiaWxpdHkiKQorICAgICAgICAgICAgaW50ZXJuYXRpb25hbCA9IFRydWUKICAgICAgICAgd2l0aCBpby5CeXRlc0lPKCkgYXMgYnl0ZXNtc2c6Ci0gICAgICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKGJ5dGVzbXNnKQorICAgICAgICAgICAgaWYgaW50ZXJuYXRpb25hbDoKKyAgICAgICAgICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBieXRlc21zZywgcG9saWN5PW1zZy5wb2xpY3kuY2xvbmUodXRmOD1UcnVlKSkKKyAgICAgICAgICAgICAgICBtYWlsX29wdGlvbnMgKz0gWydTTVRQVVRGOCcsICdCT0RZPThCSVRNSU1FJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihieXRlc21zZykKICAgICAgICAgICAgIGcuZmxhdHRlbihtc2dfY29weSwgbGluZXNlcD0nXHJcbicpCiAgICAgICAgICAgICBmbGF0bXNnID0gYnl0ZXNtc2cuZ2V0dmFsdWUoKQogICAgICAgICByZXR1cm4gc2VsZi5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBmbGF0bXNnLCBtYWlsX29wdGlvbnMsCkBAIC05MTUsNyArOTk4LDcgQEAKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KG5ld19zb2NrZXQsCkBAIC05NjMsMTQgKzEwNDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgnY29ubmVjdCBmYWlsOicsIGhvc3QsIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0IGZhaWw6JywgaG9zdCkKICAgICAgICAgICAgIGlmIHNlbGYuc29jazoKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIG1zZywgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCBtc2cpCiAgICAgICAgIHJldHVybiAoY29kZSwgbXNnKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IDI0MGU1MDcuLmU1OTAxZWMgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMzIsNiArMzIsMTEgQEAKIAogX19hbGxfXyA9IFsnd2hhdCcsICd3aGF0aGRyJ10KIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorCitTbmRIZWFkZXJzID0gbmFtZWR0dXBsZSgnU25kSGVhZGVycycsCisgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXR5cGUgZnJhbWVyYXRlIG5jaGFubmVscyBuZnJhbWVzIHNhbXB3aWR0aCcpCisKIGRlZiB3aGF0KGZpbGVuYW1lKToKICAgICAiIiJHdWVzcyB0aGUgdHlwZSBvZiBhIHNvdW5kIGZpbGUuIiIiCiAgICAgcmVzID0gd2hhdGhkcihmaWxlbmFtZSkKQEAgLTQ1LDcgKzUwLDcgQEAKICAgICAgICAgZm9yIHRmIGluIHRlc3RzOgogICAgICAgICAgICAgcmVzID0gdGYoaCwgZikKICAgICAgICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgICAgICAgICAgcmV0dXJuIFNuZEhlYWRlcnMoKnJlcykKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCAwMDQ1ODg2Li5kYjM0YWIzIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIGltcG9ydCBfc29ja2V0CiBmcm9tIF9zb2NrZXQgaW1wb3J0ICoKIAotaW1wb3J0IG9zLCBzeXMsIGlvCitpbXBvcnQgb3MsIHN5cywgaW8sIHNlbGVjdG9ycwogZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCiAKIHRyeToKQEAgLTY5LDYgKzY5LDcgQEAKICMgTm90ZSB0aGF0IF9zb2NrZXQgb25seSBrbm93cyBhYm91dCB0aGUgaW50ZWdlciB2YWx1ZXMuIFRoZSBwdWJsaWMgaW50ZXJmYWNlCiAjIGluIHRoaXMgbW9kdWxlIHVuZGVyc3RhbmRzIHRoZSBlbnVtcyBhbmQgdHJhbnNsYXRlcyB0aGVtIGJhY2sgZnJvbSBpbnRlZ2VycwogIyB3aGVyZSBuZWVkZWQgKGUuZy4gLmZhbWlseSBwcm9wZXJ0eSBvZiBhIHNvY2tldCBvYmplY3QpLgorCiBJbnRFbnVtLl9jb252ZXJ0KAogICAgICAgICAnQWRkcmVzc0ZhbWlseScsCiAgICAgICAgIF9fbmFtZV9fLApAQCAtNzksNiArODAsMTAgQEAKICAgICAgICAgX19uYW1lX18sCiAgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQogCitfTE9DQUxIT1NUICAgID0gJzEyNy4wLjAuMScKK19MT0NBTEhPU1RfVjYgPSAnOjoxJworCisKIGRlZiBfaW50ZW51bV9jb252ZXJ0ZXIodmFsdWUsIGVudW1fa2xhc3MpOgogICAgICIiIkNvbnZlcnQgYSBudW1lcmljIGZhbWlseSB2YWx1ZSB0byBhbiBJbnRFbnVtIG1lbWJlci4KIApAQCAtMTEyLDYgKzExNyw5IEBACiAgICAgX19hbGxfXy5hcHBlbmQoImVycm9yVGFiIikKIAogCitjbGFzcyBfR2l2ZXVwT25TZW5kZmlsZShFeGNlcHRpb24pOiBwYXNzCisKKwogY2xhc3Mgc29ja2V0KF9zb2NrZXQuc29ja2V0KToKIAogICAgICIiIkEgc3ViY2xhc3Mgb2YgX3NvY2tldC5zb2NrZXQgYWRkaW5nIHRoZSBtYWtlZmlsZSgpIG1ldGhvZC4iIiIKQEAgLTE0MSw3ICsxNDksNyBAQAogICAgICAgICBjbG9zZWQgPSBnZXRhdHRyKHNlbGYsICdfY2xvc2VkJywgRmFsc2UpCiAgICAgICAgIHMgPSAiPCVzLiVzJXMgZmQ9JWksIGZhbWlseT0lcywgdHlwZT0lcywgcHJvdG89JWkiIFwKICAgICAgICAgICAgICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCi0gICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICIgW2Nsb3NlZF0iIGlmIGNsb3NlZCBlbHNlICIiLAogICAgICAgICAgICAgICAgc2VsZi5maWxlbm8oKSwKICAgICAgICAgICAgICAgIHNlbGYuZmFtaWx5LApAQCAtMjM1LDYgKzI0MywxNDkgQEAKICAgICAgICAgdGV4dC5tb2RlID0gbW9kZQogICAgICAgICByZXR1cm4gdGV4dAogCisgICAgaWYgaGFzYXR0cihvcywgJ3NlbmRmaWxlJyk6CisKKyAgICAgICAgZGVmIF9zZW5kZmlsZV91c2Vfc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2VuZGZpbGVfcGFyYW1zKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgICAgICBzb2Nrbm8gPSBzZWxmLmZpbGVubygpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZW5vID0gZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24pIGFzIGVycjoKKyAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZzaXplID0gb3MuZnN0YXQoZmlsZW5vKS5zdF9zaXplCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQorICAgICAgICAgICAgaWYgbm90IGZzaXplOgorICAgICAgICAgICAgICAgIHJldHVybiAwICAjIGVtcHR5IGZpbGUKKyAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IGZzaXplIGlmIG5vdCBjb3VudCBlbHNlIGNvdW50CisKKyAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQorICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1ibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgICMgcG9sbC9zZWxlY3QgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55CisgICAgICAgICAgICAjIGV4dHJhIGZpbGUgZGVzY3JpcHRvciwgY29udHJhcmlseSB0byBlcG9sbC9rcXVldWUKKyAgICAgICAgICAgICMgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZSBzeXNjYWxsKS4KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IoKQorICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc29ja25vLCBzZWxlY3RvcnMuRVZFTlRfV1JJVEUpCisKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAorICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0ID0gc2VsZWN0b3Iuc2VsZWN0CisgICAgICAgICAgICBvc19zZW5kZmlsZSA9IG9zLnNlbmRmaWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBhbmQgbm90IHNlbGVjdG9yX3NlbGVjdCh0aW1lb3V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIF9zb2NrZXQudGltZW91dCgndGltZWQgb3V0JykKKyAgICAgICAgICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NpemUgPSBjb3VudCAtIHRvdGFsX3NlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJsb2Nrc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBvc19zZW5kZmlsZShzb2Nrbm8sIGZpbGVubywgb2Zmc2V0LCBibG9ja3NpemUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdGltZW91dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJsb2NrIHVudGlsIHRoZSBzb2NrZXQgaXMgcmVhZHkgdG8gc2VuZCBzb21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhOyBhdm9pZHMgaG9nZ2luZyBDUFUgcmVzb3VyY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yX3NlbGVjdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b3RhbF9zZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4gZ2V0IGhlcmUgZm9yIGRpZmZlcmVudCByZWFzb25zLCB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25lIGJlaW5nICdmaWxlJyBpcyBub3QgYSByZWd1bGFyIG1tYXAoMiktbGlrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBmYWxsIGJhY2sgb24gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBsYWluIHNlbmQoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnIgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgRU9GCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX3NlbnQKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCkKKyAgICBlbHNlOgorICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZSgKKyAgICAgICAgICAgICAgICAib3Muc2VuZGZpbGUoKSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKQorCisgICAgZGVmIF9zZW5kZmlsZV91c2Vfc2VuZChzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhmaWxlLCBvZmZzZXQsIGNvdW50KQorICAgICAgICBpZiBzZWxmLmdldHRpbWVvdXQoKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm9uLWJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBvZmZzZXQ6CisgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQorICAgICAgICBibG9ja3NpemUgPSBtaW4oY291bnQsIDgxOTIpIGlmIGNvdW50IGVsc2UgODE5MgorICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAorICAgICAgICBmaWxlX3JlYWQgPSBmaWxlLnJlYWQKKyAgICAgICAgc29ja19zZW5kID0gc2VsZi5zZW5kCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCAtIHRvdGFsX3NlbnQsIGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2tzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGZpbGVfcmVhZChibG9ja3NpemUpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZW50ID0gc29ja19zZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZW50IDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhW3NlbnQ6XQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIHRvdGFsX3NlbnQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPiAwIGFuZCBoYXNhdHRyKGZpbGUsICdzZWVrJyk6CisgICAgICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCArIHRvdGFsX3NlbnQpCisKKyAgICBkZWYgX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhzZWxmLCBmaWxlLCBvZmZzZXQsIGNvdW50KToKKyAgICAgICAgaWYgJ2InIG5vdCBpbiBnZXRhdHRyKGZpbGUsICdtb2RlJywgJ2InKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZpbGUgc2hvdWxkIGJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5vdCBzZWxmLnR5cGUgJiBTT0NLX1NUUkVBTToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9ubHkgU09DS19TVFJFQU0gdHlwZSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBjb3VudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvdW50LCBpbnQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCisgICAgICAgICAgICBpZiBjb3VudCA8PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciAoZ290IHshcn0pIi5mb3JtYXQoY291bnQpKQorCisgICAgZGVmIHNlbmRmaWxlKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgIiIic2VuZGZpbGUoZmlsZVssIG9mZnNldFssIGNvdW50XV0pIC0+IHNlbnQKKworICAgICAgICBTZW5kIGEgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlCisgICAgICAgIG9zLnNlbmRmaWxlKCkgYW5kIHJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoCisgICAgICAgIHdlcmUgc2VudC4KKyAgICAgICAgKmZpbGUqIG11c3QgYmUgYSByZWd1bGFyIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4KKyAgICAgICAgSWYgb3Muc2VuZGZpbGUoKSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yIGZpbGUgaXMKKyAgICAgICAgbm90IGEgcmVndWxhciBmaWxlIHNvY2tldC5zZW5kKCkgd2lsbCBiZSB1c2VkIGluc3RlYWQuCisgICAgICAgICpvZmZzZXQqIHRlbGxzIGZyb20gd2hlcmUgdG8gc3RhcnQgcmVhZGluZyB0aGUgZmlsZS4KKyAgICAgICAgSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNtaXQKKyAgICAgICAgYXMgb3Bwb3NlZCB0byBzZW5kaW5nIHRoZSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBGaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgb24gcmV0dXJuIG9yIGFsc28gaW4gY2FzZSBvZiBlcnJvciBpbgorICAgICAgICB3aGljaCBjYXNlIGZpbGUudGVsbCgpIGNhbiBiZSB1c2VkIHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZgorICAgICAgICBieXRlcyB3aGljaCB3ZXJlIHNlbnQuCisgICAgICAgIFRoZSBzb2NrZXQgbXVzdCBiZSBvZiBTT0NLX1NUUkVBTSB0eXBlLgorICAgICAgICBOb24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKyAgICAgICAgZXhjZXB0IF9HaXZldXBPblNlbmRmaWxlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRmaWxlX3VzZV9zZW5kKGZpbGUsIG9mZnNldCwgY291bnQpCisKICAgICBkZWYgX2RlY3JlZl9zb2NrZXRpb3Moc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2lvX3JlZnMgPiAwOgogICAgICAgICAgICAgc2VsZi5faW9fcmVmcyAtPSAxCkBAIC0zMjUsNiArNDc2LDUyIEBACiAgICAgICAgIGIgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgYi5kZXRhY2goKSkKICAgICAgICAgcmV0dXJuIGEsIGIKIAorZWxzZToKKworICAgICMgT3JpZ2luOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS80MzI1NzgzLCBieSBHZWVydCBKYW5zZW4uICBQdWJsaWMgZG9tYWluLgorICAgIGRlZiBzb2NrZXRwYWlyKGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wKToKKyAgICAgICAgaWYgZmFtaWx5ID09IEFGX0lORVQ6CisgICAgICAgICAgICBob3N0ID0gX0xPQ0FMSE9TVAorICAgICAgICBlbGlmIGZhbWlseSA9PSBBRl9JTkVUNjoKKyAgICAgICAgICAgIGhvc3QgPSBfTE9DQUxIT1NUX1Y2CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IEFGX0lORVQgYW5kIEFGX0lORVQ2IHNvY2tldCBhZGRyZXNzIGZhbWlsaWVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQiKQorICAgICAgICBpZiB0eXBlICE9IFNPQ0tfU1RSRUFNOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBTT0NLX1NUUkVBTSBzb2NrZXQgdHlwZSBpcyBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBwcm90byAhPSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBwcm90b2NvbCB6ZXJvIGlzIHN1cHBvcnRlZCIpCisKKyAgICAgICAgIyBXZSBjcmVhdGUgYSBjb25uZWN0ZWQgVENQIHNvY2tldC4gTm90ZSB0aGUgdHJpY2sgd2l0aAorICAgICAgICAjIHNldGJsb2NraW5nKEZhbHNlKSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvIGNyZWF0ZSBhIHRocmVhZC4KKyAgICAgICAgbHNvY2sgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbHNvY2suYmluZCgoaG9zdCwgMCkpCisgICAgICAgICAgICBsc29jay5saXN0ZW4oKQorICAgICAgICAgICAgIyBPbiBJUHY2LCBpZ25vcmUgZmxvd19pbmZvIGFuZCBzY29wZV9pZAorICAgICAgICAgICAgYWRkciwgcG9ydCA9IGxzb2NrLmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBjc29jayA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY3NvY2suY29ubmVjdCgoYWRkciwgcG9ydCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgY3NvY2suc2V0YmxvY2tpbmcoVHJ1ZSkKKyAgICAgICAgICAgICAgICBzc29jaywgXyA9IGxzb2NrLmFjY2VwdCgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgY3NvY2suY2xvc2UoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsc29jay5jbG9zZSgpCisgICAgICAgIHJldHVybiAoc3NvY2ssIGNzb2NrKQorCitzb2NrZXRwYWlyLl9fZG9jX18gPSAiIiJzb2NrZXRwYWlyKFtmYW1pbHlbLCB0eXBlWywgcHJvdG9dXV0pIC0+IChzb2NrZXQgb2JqZWN0LCBzb2NrZXQgb2JqZWN0KQorQ3JlYXRlIGEgcGFpciBvZiBzb2NrZXQgb2JqZWN0cyBmcm9tIHRoZSBzb2NrZXRzIHJldHVybmVkIGJ5IHRoZSBwbGF0Zm9ybQorc29ja2V0cGFpcigpIGZ1bmN0aW9uLgorVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHNvY2tldCgpIGV4Y2VwdCB0aGUgZGVmYXVsdCBmYW1pbHkgaXMgQUZfVU5JWAoraWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgQUZfSU5FVC4KKyIiIgogCiBfYmxvY2tpbmdfZXJybm9zID0geyBFQUdBSU4sIEVXT1VMREJMT0NLIH0KIApAQCAtMzc1LDggKzU3Miw2IEBACiAgICAgICAgICAgICBleGNlcHQgdGltZW91dDoKICAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0X29jY3VycmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIGluIF9ibG9ja2luZ19lcnJub3M6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA1Y2I4OWJlLi4wY2U4ZTgxIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTk0LDcgKzk0LDcgQEAKIEFub3RoZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3RzIGluIGFuCiBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzIG5laXRoZXIgdGhyZWFkcyBub3IgZm9yayAob3Igd2hlcmUgdGhlc2UgYXJlCiB0b28gZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbgotZXhwbGljaXQgdGFibGUgb2YgcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2Ugc2VsZWN0KCkgdG8KK2V4cGxpY2l0IHRhYmxlIG9mIHBhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIGEgc2VsZWN0b3IgdG8KIGRlY2lkZSB3aGljaCByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcKIGluY29taW5nIHJlcXVlc3QpLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBzdHJlYW0gc2VydmljZXMKIHdoZXJlIGVhY2ggY2xpZW50IGNhbiBwb3RlbnRpYWxseSBiZSBjb25uZWN0ZWQgZm9yIGEgbG9uZyB0aW1lIChpZgpAQCAtMTA0LDcgKzEwNCw2IEBACiAtIFN0YW5kYXJkIGNsYXNzZXMgZm9yIFN1biBSUEMgKHdoaWNoIHVzZXMgZWl0aGVyIFVEUCBvciBUQ1ApCiAtIFN0YW5kYXJkIG1peC1pbiBjbGFzc2VzIHRvIGltcGxlbWVudCB2YXJpb3VzIGF1dGhlbnRpY2F0aW9uCiAgIGFuZCBlbmNyeXB0aW9uIHNjaGVtZXMKLS0gU3RhbmRhcmQgZnJhbWV3b3JrIGZvciBzZWxlY3QtYmFzZWQgbXVsdGlwbGV4aW5nCiAKIFhYWCBPcGVuIHByb2JsZW1zOgogLSBXaGF0IHRvIGRvIHdpdGggb3V0LW9mLWJhbmQgZGF0YT8KQEAgLTEzMCwxMyArMTI5LDE0IEBACiAKIAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAogX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwgIkZvcmtpbmdVRFBTZXJ2ZXIiLAogICAgICAgICAgICAiRm9ya2luZ1RDUFNlcnZlciIsICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKQEAgLTE0NywxNCArMTQ3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICJUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlciJdKQogCi1kZWYgX2VpbnRyX3JldHJ5KGZ1bmMsICphcmdzKToKLSAgICAiIiJyZXN0YXJ0IGEgc3lzdGVtIGNhbGwgaW50ZXJydXB0ZWQgYnkgRUlOVFIiIiIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyMgcG9sbC9zZWxlY3QgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55IGV4dHJhIGZpbGUgZGVzY3JpcHRvciwKKyMgY29udHJhcmlseSB0byBlcG9sbC9rcXVldWUgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZSBzeXNjYWxsKS4KK2lmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CisgICAgX1NlcnZlclNlbGVjdG9yID0gc2VsZWN0b3JzLlBvbGxTZWxlY3RvcgorZWxzZToKKyAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IKKwogCiBjbGFzcyBCYXNlU2VydmVyOgogCkBAIC0xNjYsNyArMTY1LDcgQEAKICAgICAtIHNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbD0wLjUpCiAgICAgLSBzaHV0ZG93bigpCiAgICAgLSBoYW5kbGVfcmVxdWVzdCgpICAjIGlmIHlvdSBkbyBub3QgdXNlIHNlcnZlX2ZvcmV2ZXIoKQotICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0KCkKKyAgICAtIGZpbGVubygpIC0+IGludCAgICMgZm9yIHNlbGVjdG9yCiAKICAgICBNZXRob2RzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW46CiAKQEAgLTIyNywxNyArMjI2LDE5IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duLmNsZWFyKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0OgotICAgICAgICAgICAgICAgICMgWFhYOiBDb25zaWRlciB1c2luZyBhbm90aGVyIGZpbGUgZGVzY3JpcHRvciBvcgotICAgICAgICAgICAgICAgICMgY29ubmVjdGluZyB0byB0aGUgc29ja2V0IHRvIHdha2UgdGhpcyB1cCBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBwb2xsaW5nLiBQb2xsaW5nIHJlZHVjZXMgb3VyIHJlc3BvbnNpdmVuZXNzIHRvIGEKLSAgICAgICAgICAgICAgICAjIHNodXRkb3duIHJlcXVlc3QgYW5kIHdhc3RlcyBjcHUgYXQgYWxsIG90aGVyIHRpbWVzLgotICAgICAgICAgICAgICAgIHIsIHcsIGUgPSBfZWludHJfcmV0cnkoc2VsZWN0LnNlbGVjdCwgW3NlbGZdLCBbXSwgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsX2ludGVydmFsKQotICAgICAgICAgICAgICAgIGlmIHNlbGYgaW4gcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisgICAgICAgICAgICAjIFhYWDogQ29uc2lkZXIgdXNpbmcgYW5vdGhlciBmaWxlIGRlc2NyaXB0b3Igb3IgY29ubmVjdGluZyB0byB0aGUKKyAgICAgICAgICAgICMgc29ja2V0IHRvIHdha2UgdGhpcyB1cCBpbnN0ZWFkIG9mIHBvbGxpbmcuIFBvbGxpbmcgcmVkdWNlcyBvdXIKKyAgICAgICAgICAgICMgcmVzcG9uc2l2ZW5lc3MgdG8gYSBzaHV0ZG93biByZXF1ZXN0IGFuZCB3YXN0ZXMgY3B1IGF0IGFsbCBvdGhlcgorICAgICAgICAgICAgIyB0aW1lcy4KKyAgICAgICAgICAgIHdpdGggX1NlcnZlclNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZpY2VfYWN0aW9ucygpCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0OgorICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdChwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgICAgICAgICBpZiByZWFkeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKQEAgLTI2MCwxNiArMjYxLDE2IEBACiAgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZAotICAgICMgZmluaXNoaW5nIGEgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CisgICAgIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBoYW5kbGluZywgZ2V0dGluZywgcHJvY2Vzc2luZyBhbmQgZmluaXNoaW5nIGEKKyAgICAjIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKLSAgICAjIC0gaGFuZGxlX3JlcXVlc3QoKSBpcyB0aGUgdG9wLWxldmVsIGNhbGwuICBJdCBjYWxscwotICAgICMgICBzZWxlY3QsIGdldF9yZXF1ZXN0KCksIHZlcmlmeV9yZXF1ZXN0KCkgYW5kIHByb2Nlc3NfcmVxdWVzdCgpCisgICAgIyAtIGhhbmRsZV9yZXF1ZXN0KCkgaXMgdGhlIHRvcC1sZXZlbCBjYWxsLiAgSXQgY2FsbHMgc2VsZWN0b3Iuc2VsZWN0KCksCisgICAgIyAgIGdldF9yZXF1ZXN0KCksIHZlcmlmeV9yZXF1ZXN0KCkgYW5kIHByb2Nlc3NfcmVxdWVzdCgpCiAgICAgIyAtIGdldF9yZXF1ZXN0KCkgaXMgZGlmZmVyZW50IGZvciBzdHJlYW0gb3IgZGF0YWdyYW0gc29ja2V0cwotICAgICMgLSBwcm9jZXNzX3JlcXVlc3QoKSBpcyB0aGUgcGxhY2UgdGhhdCBtYXkgZm9yayBhIG5ldyBwcm9jZXNzCi0gICAgIyAgIG9yIGNyZWF0ZSBhIG5ldyB0aHJlYWQgdG8gZmluaXNoIHRoZSByZXF1ZXN0Ci0gICAgIyAtIGZpbmlzaF9yZXF1ZXN0KCkgaW5zdGFudGlhdGVzIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3M7Ci0gICAgIyAgIHRoaXMgY29uc3RydWN0b3Igd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYWxsIGJ5IGl0c2VsZgorICAgICMgLSBwcm9jZXNzX3JlcXVlc3QoKSBpcyB0aGUgcGxhY2UgdGhhdCBtYXkgZm9yayBhIG5ldyBwcm9jZXNzIG9yIGNyZWF0ZSBhCisgICAgIyAgIG5ldyB0aHJlYWQgdG8gZmluaXNoIHRoZSByZXF1ZXN0CisgICAgIyAtIGZpbmlzaF9yZXF1ZXN0KCkgaW5zdGFudGlhdGVzIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3M7IHRoaXMKKyAgICAjICAgY29uc3RydWN0b3Igd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYWxsIGJ5IGl0c2VsZgogCiAgICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYpOgogICAgICAgICAiIiJIYW5kbGUgb25lIHJlcXVlc3QsIHBvc3NpYmx5IGJsb2NraW5nLgpAQCAtMjgzLDE4ICsyODQsMzAgQEAKICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLnRpbWVvdXQKICAgICAgICAgZWxpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0aW1lb3V0ID0gbWluKHRpbWVvdXQsIHNlbGYudGltZW91dCkKLSAgICAgICAgZmRfc2V0cyA9IF9laW50cl9yZXRyeShzZWxlY3Quc2VsZWN0LCBbc2VsZl0sIFtdLCBbXSwgdGltZW91dCkKLSAgICAgICAgaWYgbm90IGZkX3NldHNbMF06Ci0gICAgICAgICAgICBzZWxmLmhhbmRsZV90aW1lb3V0KCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZSgpICsgdGltZW91dAorCisgICAgICAgICMgV2FpdCB1bnRpbCBhIHJlcXVlc3QgYXJyaXZlcyBvciB0aGUgdGltZW91dCBleHBpcmVzIC0gdGhlIGxvb3AgaXMKKyAgICAgICAgIyBuZWNlc3NhcnkgdG8gYWNjb21tb2RhdGUgZWFybHkgd2FrZXVwcyBkdWUgdG8gRUlOVFIuCisgICAgICAgIHdpdGggX1NlcnZlclNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CisgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihzZWxmLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKKworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdCh0aW1lb3V0KQorICAgICAgICAgICAgICAgIGlmIHJlYWR5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX3RpbWVvdXQoKQogCiAgICAgZGVmIF9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKHNlbGYpOgogICAgICAgICAiIiJIYW5kbGUgb25lIHJlcXVlc3QsIHdpdGhvdXQgYmxvY2tpbmcuCiAKLSAgICAgICAgSSBhc3N1bWUgdGhhdCBzZWxlY3Quc2VsZWN0IGhhcyByZXR1cm5lZCB0aGF0IHRoZSBzb2NrZXQgaXMKLSAgICAgICAgcmVhZGFibGUgYmVmb3JlIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgc28gdGhlcmUgc2hvdWxkIGJlCi0gICAgICAgIG5vIHJpc2sgb2YgYmxvY2tpbmcgaW4gZ2V0X3JlcXVlc3QoKS4KKyAgICAgICAgSSBhc3N1bWUgdGhhdCBzZWxlY3Rvci5zZWxlY3QoKSBoYXMgcmV0dXJuZWQgdGhhdCB0aGUgc29ja2V0IGlzCisgICAgICAgIHJlYWRhYmxlIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQsIHNvIHRoZXJlIHNob3VsZCBiZSBubyByaXNrIG9mCisgICAgICAgIGJsb2NraW5nIGluIGdldF9yZXF1ZXN0KCkuCiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuZ2V0X3JlcXVlc3QoKQpAQCAtMzc3LDcgKzM5MCw3IEBACiAgICAgLSBzZXJ2ZV9mb3JldmVyKHBvbGxfaW50ZXJ2YWw9MC41KQogICAgIC0gc2h1dGRvd24oKQogICAgIC0gaGFuZGxlX3JlcXVlc3QoKSAgIyBpZiB5b3UgZG9uJ3QgdXNlIHNlcnZlX2ZvcmV2ZXIoKQotICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0KCkKKyAgICAtIGZpbGVubygpIC0+IGludCAgICMgZm9yIHNlbGVjdG9yCiAKICAgICBNZXRob2RzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW46CiAKQEAgLTQ2Myw3ICs0NzYsNyBAQAogICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBzb2NrZXQgZmlsZSBudW1iZXIuCiAKLSAgICAgICAgSW50ZXJmYWNlIHJlcXVpcmVkIGJ5IHNlbGVjdCgpLgorICAgICAgICBJbnRlcmZhY2UgcmVxdWlyZWQgYnkgc2VsZWN0b3IuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5maWxlbm8oKQpAQCAtNTQwLDggKzU1Myw2IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCiAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CmluZGV4IGE4MzQ4YjQuLmY1ODc1OTYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKQEAgLTExMSw2ICsxMTEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKICAgICAgICAgICAgIHJvd1syKioxMDAwXQogCisgICAgZGVmIENoZWNrU3FsaXRlUm93U2xpY2Uoc2VsZik6CisgICAgICAgICMgQSBzcWxpdGUuUm93IGNhbiBiZSBzbGljZWQgbGlrZSBhIGxpc3QuCisgICAgICAgIHNlbGYuY29uLnJvd19mYWN0b3J5ID0gc3FsaXRlLlJvdworICAgICAgICByb3cgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgMSwgMiwgMywgNCIpLmZldGNob25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDowXSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzA6MV0sICgxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzE6M10sICgyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMzoxXSwgKCkpCisgICAgICAgICMgRXhwbGljaXQgYm91bmRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMTpdLCAoMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzozXSwgKDEsIDIsIDMpKQorICAgICAgICAjIFNsaWNlcyBjYW4gdXNlIG5lZ2F0aXZlIGluZGljZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93Wy0yOi0xXSwgKDMsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbLTI6XSwgKDMsIDQpKQorICAgICAgICAjIFNsaWNpbmcgc3VwcG9ydHMgc3RlcHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzA6NDoyXSwgKDEsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1szOjA6LTJdLCAoNCwgMikpCisKICAgICBkZWYgQ2hlY2tTcWxpdGVSb3dJdGVyKHNlbGYpOgogICAgICAgICAiIiJDaGVja3MgaWYgdGhlIHJvdyBvYmplY3QgaXMgaXRlcmFibGUiIiIKICAgICAgICAgc2VsZi5jb24ucm93X2ZhY3RvcnkgPSBzcWxpdGUuUm93CmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggNTUwZWExNS4uNTAyYjA2MSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtMTMsMTkgKzEzLDEzIEBACiBpbXBvcnQgX3NyZQogaW1wb3J0IHNyZV9wYXJzZQogZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqCi1mcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVAogCiBhc3NlcnQgX3NyZS5NQUdJQyA9PSBNQUdJQywgIlNSRSBtb2R1bGUgbWlzbWF0Y2giCiAKLWlmIF9zcmUuQ09ERVNJWkUgPT0gMjoKLSAgICBNQVhDT0RFID0gNjU1MzUKLWVsc2U6Ci0gICAgTUFYQ09ERSA9IDB4RkZGRkZGRkYKLQotX0xJVEVSQUxfQ09ERVMgPSBzZXQoW0xJVEVSQUwsIE5PVF9MSVRFUkFMXSkKLV9SRVBFQVRJTkdfQ09ERVMgPSBzZXQoW1JFUEVBVCwgTUlOX1JFUEVBVCwgTUFYX1JFUEVBVF0pCi1fU1VDQ0VTU19DT0RFUyA9IHNldChbU1VDQ0VTUywgRkFJTFVSRV0pCi1fQVNTRVJUX0NPREVTID0gc2V0KFtBU1NFUlQsIEFTU0VSVF9OT1RdKQorX0xJVEVSQUxfQ09ERVMgPSB7TElURVJBTCwgTk9UX0xJVEVSQUx9CitfUkVQRUFUSU5HX0NPREVTID0ge1JFUEVBVCwgTUlOX1JFUEVBVCwgTUFYX1JFUEVBVH0KK19TVUNDRVNTX0NPREVTID0ge1NVQ0NFU1MsIEZBSUxVUkV9CitfQVNTRVJUX0NPREVTID0ge0FTU0VSVCwgQVNTRVJUX05PVH0KIAogIyBTZXRzIG9mIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIHdoaWNoIGhhdmUgdGhlIHNhbWUgdXBwZXJjYXNlLgogX2VxdWl2YWxlbmNlcyA9ICgKQEAgLTg2LDc1ICs4MCw3NSBAQAogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgogICAgICAgICAgICAgICAgIGxvID0gX3NyZS5nZXRsb3dlcihhdiwgZmxhZ3MpCiAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGxvIGluIGZpeGVzOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSU5fSUdOT1JFXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChJTl9JR05PUkUpCiAgICAgICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgICAgIGlmIG9wIGlzIE5PVF9MSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW05FR0FURV0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE5FR0FURSkKICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gKGxvLCkgKyBmaXhlc1tsb106Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTElURVJBTF0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KExJVEVSQUwpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KGspCi0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tGQUlMVVJFXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChGQUlMVVJFKQogICAgICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoT1BfSUdOT1JFW29wXSkKICAgICAgICAgICAgICAgICAgICAgZW1pdChsbykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgSU46CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW09QX0lHTk9SRVtvcF1dKQorICAgICAgICAgICAgICAgIGVtaXQoT1BfSUdOT1JFW29wXSkKICAgICAgICAgICAgICAgICBkZWYgZml4dXAobGl0ZXJhbCwgZmxhZ3M9ZmxhZ3MpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NyZS5nZXRsb3dlcihsaXRlcmFsLCBmbGFncykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgICAgIGZpeHVwID0gTm9uZQogICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgIF9jb21waWxlX2NoYXJzZXQoYXYsIGZsYWdzLCBjb2RlLCBmaXh1cCwgZml4ZXMpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBBTlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RPVEFMTDoKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbQU5ZX0FMTF0pCisgICAgICAgICAgICAgICAgZW1pdChBTllfQUxMKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbQU5ZXSkKKyAgICAgICAgICAgICAgICBlbWl0KEFOWSkKICAgICAgICAgZWxpZiBvcCBpbiBSRVBFQVRJTkdfQ09ERVM6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1RFTVBMQVRFOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgdGVtcGxhdGUgb3BlcmF0b3IiKQorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgdGVtcGxhdGUgb3BlcmF0b3IgJXIiICUgKG9wLCkpCiAgICAgICAgICAgICBlbGlmIF9zaW1wbGUoYXYpIGFuZCBvcCBpcyBub3QgUkVQRUFUOgogICAgICAgICAgICAgICAgIGlmIG9wIGlzIE1BWF9SRVBFQVQ6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tSRVBFQVRfT05FXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChSRVBFQVRfT05FKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNSU5fUkVQRUFUX09ORV0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1JFUEVBVF9PTkUpCiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICAgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tSRVBFQVRdKQorICAgICAgICAgICAgICAgIGVtaXQoUkVQRUFUKQogICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgZW1pdChhdlswXSkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzFdKQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzJdLCBmbGFncykKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgICAgICBpZiBvcCBpcyBNQVhfUkVQRUFUOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFYX1VOVElMXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNQVhfVU5USUwpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01JTl9VTlRJTF0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1VOVElMKQogICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CiAgICAgICAgICAgICBpZiBhdlswXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFSS10pCisgICAgICAgICAgICAgICAgZW1pdChNQVJLKQogICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIpCiAgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgaWYgYXZbMF06Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01BUktdKQorICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKICAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKzEpCiAgICAgICAgIGVsaWYgb3AgaW4gU1VDQ0VTU19DT0RFUzoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICBlbGlmIG9wIGluIEFTU0VSVF9DT0RFUzoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgIGlmIGF2WzBdID49IDA6CiAgICAgICAgICAgICAgICAgZW1pdCgwKSAjIGxvb2sgYWhlYWQKQEAgLTE2NCw1NyArMTU4LDU3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJsb29rLWJlaGluZCByZXF1aXJlcyBmaXhlZC13aWR0aCBwYXR0ZXJuIikKICAgICAgICAgICAgICAgICBlbWl0KGxvKSAjIGxvb2sgYmVoaW5kCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbU1VDQ0VTU10pCisgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBDQUxMOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXYsIGZsYWdzKQotICAgICAgICAgICAgZW1pdChPUENPREVTW1NVQ0NFU1NdKQorICAgICAgICAgICAgZW1pdChTVUNDRVNTKQogICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgIGVsaWYgb3AgaXMgQVQ6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTVVMVElMSU5FOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTVVMVElMSU5FLmdldChhdiwgYXYpCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9VTklDT0RFLmdldChhdiwgYXYpCi0gICAgICAgICAgICBlbWl0KEFUQ09ERVNbYXZdKQorICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIHRhaWwgPSBbXQogICAgICAgICAgICAgdGFpbGFwcGVuZCA9IHRhaWwuYXBwZW5kCiAgICAgICAgICAgICBmb3IgYXYgaW4gYXZbMV06CiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXYsIGZsYWdzKQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2LCBmbGFncykKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSlVNUF0pCisgICAgICAgICAgICAgICAgZW1pdChKVU1QKQogICAgICAgICAgICAgICAgIHRhaWxhcHBlbmQoX2xlbihjb2RlKSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKLSAgICAgICAgICAgIGVtaXQoMCkgIyBlbmQgb2YgYnJhbmNoCisgICAgICAgICAgICBlbWl0KEZBSUxVUkUpICMgZW5kIG9mIGJyYW5jaAogICAgICAgICAgICAgZm9yIHRhaWwgaW4gdGFpbDoKICAgICAgICAgICAgICAgICBjb2RlW3RhaWxdID0gX2xlbihjb2RlKSAtIHRhaWwKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9MT0NBTEVbYXZdCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgICBhdiA9IENIX1VOSUNPREVbYXZdCi0gICAgICAgICAgICBlbWl0KENIQ09ERVNbYXZdKQorICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBlbWl0KGF2LTEpCiAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBlbWl0KGF2WzBdLTEpCiAgICAgICAgICAgICBza2lweWVzID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgaWYgYXZbMl06Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW0pVTVBdKQorICAgICAgICAgICAgICAgIGVtaXQoSlVNUCkKICAgICAgICAgICAgICAgICBza2lwbm8gPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgY29kZVtza2lweWVzXSA9IF9sZW4oY29kZSkgLSBza2lweWVzICsgMQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzJdLCBmbGFncykKQEAgLTIyMiwxOSArMjE2LDE4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcHllc10gPSBfbGVuKGNvZGUpIC0gc2tpcHllcyArIDEKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZSIsIG9wKQorICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUgJXIiICUgKG9wLCkpCiAKIGRlZiBfY29tcGlsZV9jaGFyc2V0KGNoYXJzZXQsIGZsYWdzLCBjb2RlLCBmaXh1cD1Ob25lLCBmaXhlcz1Ob25lKToKICAgICAjIGNvbXBpbGUgY2hhcnNldCBzdWJwcm9ncmFtCiAgICAgZW1pdCA9IGNvZGUuYXBwZW5kCi0gICAgZm9yIG9wLCBhdiBpbiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpOgotICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgIGZvciBvcCwgYXYgaW4gX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzKToKKyAgICAgICAgZW1pdChvcCkKICAgICAgICAgaWYgb3AgaXMgTkVHQVRFOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICBlbWl0KGF2KQotICAgICAgICBlbGlmIG9wIGlzIFJBTkdFOgorICAgICAgICBlbGlmIG9wIGlzIFJBTkdFIG9yIG9wIGlzIFJBTkdFX0lHTk9SRToKICAgICAgICAgICAgIGVtaXQoYXZbMF0pCiAgICAgICAgICAgICBlbWl0KGF2WzFdKQogICAgICAgICBlbGlmIG9wIGlzIENIQVJTRVQ6CkBAIC0yNDMsMTYgKzIzNiwxNiBAQAogICAgICAgICAgICAgY29kZS5leHRlbmQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbQ0hfTE9DQUxFW2F2XV0pCisgICAgICAgICAgICAgICAgZW1pdChDSF9MT0NBTEVbYXZdKQogICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6Ci0gICAgICAgICAgICAgICAgZW1pdChDSENPREVTW0NIX1VOSUNPREVbYXZdXSkKKyAgICAgICAgICAgICAgICBlbWl0KENIX1VOSUNPREVbYXZdKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbYXZdKQorICAgICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIHNldCBvcGVyYXRvciIpCi0gICAgZW1pdChPUENPREVTW0ZBSUxVUkVdKQorICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCBzZXQgb3BlcmF0b3IgJXIiICUgKG9wLCkpCisgICAgZW1pdChGQUlMVVJFKQogCi1kZWYgX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzLCBpc3VuaWNvZGUpOgorZGVmIF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQsIGZpeHVwLCBmaXhlcyk6CiAgICAgIyBpbnRlcm5hbDogb3B0aW1pemUgY2hhcmFjdGVyIHNldAogICAgIG91dCA9IFtdCiAgICAgdGFpbCA9IFtdCkBAIC0yNjIsMTAgKzI1NSwxMCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZpeHVwOgotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZpeHVwKGF2KQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtpXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpeGVzIGFuZCBpIGluIGZpeGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGZpeGVzW2ldOgorICAgICAgICAgICAgICAgICAgICAgICAgbG8gPSBmaXh1cChhdikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBbbG9dID0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGxvIGluIGZpeGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGZpeGVzW2xvXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtrXSA9IDEKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBbYXZdID0gMQpAQCAtMjkxLDIxICsyODQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1VQ1MxIGNoYXJhY3RlciBjb2RlcwogICAgICAgICAgICAgICAgICAgICBjaGFybWFwICs9IGInXDAnICogMHhmZjAwCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyIGNvZGVzCi0gICAgICAgICAgICAgICAgaWYgZml4dXAgYW5kIGlzdW5pY29kZSBhbmQgb3AgaXMgUkFOR0U6Ci0gICAgICAgICAgICAgICAgICAgIGxvLCBoaSA9IGF2Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlcyA9IFthdl0KLSAgICAgICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB0d28gcmFuZ2VzIG9mIGNhc2VkIGFzdHJhbCBjaGFyYWN0ZXJzOgotICAgICAgICAgICAgICAgICAgICAjIDEwNDAwLTEwNDRGIChEZXNlcmV0KSBhbmQgMTE4QTAtMTE4REYgKFdhcmFuZyBDaXRpKS4KLSAgICAgICAgICAgICAgICAgICAgX2ZpeHVwX3JhbmdlKG1heCgweDEwMDAwLCBsbyksIG1pbigweDExZmZmLCBoaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZXMsIGZpeHVwKQotICAgICAgICAgICAgICAgICAgICBmb3IgbG8sIGhpIGluIHJhbmdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvID09IGhpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChMSVRFUkFMLCBoaSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChvcCwgYXYpKQorICAgICAgICAgICAgICAgICMgQ2hhcmFjdGVyIHNldCBjb250YWlucyBub24tQk1QIGNoYXJhY3RlciBjb2Rlcy4KKyAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBvbmx5IHR3byByYW5nZXMgb2YgY2FzZWQgbm9uLUJNUCBjaGFyYWN0ZXJzOgorICAgICAgICAgICAgICAgICMgMTA0MDAtMTA0NEYgKERlc2VyZXQpIGFuZCAxMThBMC0xMThERiAoV2FyYW5nIENpdGkpLAorICAgICAgICAgICAgICAgICMgYW5kIGZvciBib3RoIHJhbmdlcyBSQU5HRV9JR05PUkUgd29ya3MuCisgICAgICAgICAgICAgICAgaWYgZml4dXAgYW5kIG9wIGlzIFJBTkdFOgorICAgICAgICAgICAgICAgICAgICBvcCA9IFJBTkdFX0lHTk9SRQorICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgYnJlYWsKIAogICAgICMgY29tcHJlc3MgY2hhcmFjdGVyIG1hcApAQCAtMzgzLDI1ICszNjgsOCBAQAogICAgIG91dCArPSB0YWlsCiAgICAgcmV0dXJuIG91dAogCi1kZWYgX2ZpeHVwX3JhbmdlKGxvLCBoaSwgcmFuZ2VzLCBmaXh1cCk6Ci0gICAgZm9yIGkgaW4gbWFwKGZpeHVwLCByYW5nZShsbywgaGkrMSkpOgotICAgICAgICBmb3IgaywgKGxvLCBoaSkgaW4gZW51bWVyYXRlKHJhbmdlcyk6Ci0gICAgICAgICAgICBpZiBpIDwgbG86Ci0gICAgICAgICAgICAgICAgaWYgbCA9PSBsbyAtIDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlc1trXSA9IChpLCBoaSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYW5nZXMuaW5zZXJ0KGssIChpLCBpKSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiBpID4gaGk6Ci0gICAgICAgICAgICAgICAgaWYgaSA9PSBoaSArIDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlc1trXSA9IChsbywgaSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQoKGksIGkpKQotCiBfQ09ERUJJVFMgPSBfc3JlLkNPREVTSVpFICogOAorTUFYQ09ERSA9ICgxIDw8IF9DT0RFQklUUykgLSAxCiBfQklUU19UUkFOUyA9IGInMCcgKyBiJzEnICogMjU1CiBkZWYgX21rX2JpdG1hcChiaXRzLCBfQ09ERUJJVFM9X0NPREVCSVRTLCBfaW50PWludCk6CiAgICAgcyA9IGJpdHMudHJhbnNsYXRlKF9CSVRTX1RSQU5TKVs6Oi0xXQpAQCAtNDQ2LDggKzQxNCwxMSBAQAogICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCiAgICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCiAgICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCisgICAgaWYgaGkgPiBNQVhDT0RFOgorICAgICAgICBoaSA9IE1BWENPREUKICAgICBpZiBsbyA9PSAwOgotICAgICAgICByZXR1cm4gIyBub3Qgd29ydGggaXQKKyAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCisgICAgICAgIHJldHVybgogICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCiAgICAgcHJlZml4YXBwZW5kID0gcHJlZml4LmFwcGVuZApAQCAtNTA1LDIxICs0NzYsMjEgQEAKICAgICAgICAgICAgIGVsaWYgb3AgaXMgSU46CiAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGF2CiAjIyAgICAgaWYgcHJlZml4OgotIyMgICAgICAgICBwcmludCAiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXAKKyMjICAgICAgICAgcHJpbnQoIioqKiBQUkVGSVgiLCBwcmVmaXgsIHByZWZpeF9za2lwKQogIyMgICAgIGlmIGNoYXJzZXQ6Ci0jIyAgICAgICAgIHByaW50ICIqKiogQ0hBUlNFVCIsIGNoYXJzZXQKKyMjICAgICAgICAgcHJpbnQoIioqKiBDSEFSU0VUIiwgY2hhcnNldCkKICAgICAjIGFkZCBhbiBpbmZvIGJsb2NrCiAgICAgZW1pdCA9IGNvZGUuYXBwZW5kCi0gICAgZW1pdChPUENPREVTW0lORk9dKQorICAgIGVtaXQoSU5GTykKICAgICBza2lwID0gbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgIyBsaXRlcmFsIGZsYWcKICAgICBtYXNrID0gMAogICAgIGlmIHByZWZpeDoKICAgICAgICAgbWFzayA9IFNSRV9JTkZPX1BSRUZJWAogICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcCA9PSBsZW4ocGF0dGVybi5kYXRhKToKLSAgICAgICAgICAgIG1hc2sgPSBtYXNrICsgU1JFX0lORk9fTElURVJBTAorICAgICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19MSVRFUkFMCiAgICAgZWxpZiBjaGFyc2V0OgotICAgICAgICBtYXNrID0gbWFzayArIFNSRV9JTkZPX0NIQVJTRVQKKyAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19DSEFSU0VUCiAgICAgZW1pdChtYXNrKQogICAgICMgcGF0dGVybiBsZW5ndGgKICAgICBpZiBsbyA8IE1BWENPREU6CkBAIC01MjcsMTAgKzQ5OCw3IEBACiAgICAgZWxzZToKICAgICAgICAgZW1pdChNQVhDT0RFKQogICAgICAgICBwcmVmaXggPSBwcmVmaXhbOk1BWENPREVdCi0gICAgaWYgaGkgPCBNQVhDT0RFOgotICAgICAgICBlbWl0KGhpKQotICAgIGVsc2U6Ci0gICAgICAgIGVtaXQoMCkKKyAgICBlbWl0KG1pbihoaSwgTUFYQ09ERSkpCiAgICAgIyBhZGQgbGl0ZXJhbCBwcmVmaXgKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCkBAIC01NTYsNyArNTI0LDcgQEAKICAgICAjIGNvbXBpbGUgdGhlIHBhdHRlcm4KICAgICBfY29tcGlsZShjb2RlLCBwLmRhdGEsIGZsYWdzKQogCi0gICAgY29kZS5hcHBlbmQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICBjb2RlLmFwcGVuZChTVUNDRVNTKQogCiAgICAgcmV0dXJuIGNvZGUKIApAQCAtNTcxLDEzICs1MzksNyBAQAogCiAgICAgY29kZSA9IF9jb2RlKHAsIGZsYWdzKQogCi0gICAgIyBwcmludCBjb2RlCi0KLSAgICAjIFhYWDogPGZsPiBnZXQgcmlkIG9mIHRoaXMgbGltaXRhdGlvbiEKLSAgICBpZiBwLnBhdHRlcm4uZ3JvdXBzID4gMTAwOgotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKLSAgICAgICAgICAgICJzb3JyeSwgYnV0IHRoaXMgdmVyc2lvbiBvbmx5IHN1cHBvcnRzIDEwMCBuYW1lZCBncm91cHMiCi0gICAgICAgICAgICApCisgICAgIyBwcmludChjb2RlKQogCiAgICAgIyBtYXAgaW4gZWl0aGVyIGRpcmVjdGlvbgogICAgIGdyb3VwaW5kZXggPSBwLnBhdHRlcm4uZ3JvdXBkaWN0CmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbnN0YW50cy5weSBiL0xpYi9zcmVfY29uc3RhbnRzLnB5CmluZGV4IDIzZTM1MTYuLmZjNjg0YWUgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29uc3RhbnRzLnB5CisrKyBiL0xpYi9zcmVfY29uc3RhbnRzLnB5CkBAIC0xMywxNTMgKzEzLDExNSBAQAogCiAjIHVwZGF0ZSB3aGVuIGNvbnN0YW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZAogCi1NQUdJQyA9IDIwMDMxMDE3CitNQUdJQyA9IDIwMTQwOTE3CiAKLWZyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFUCitmcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVCwgTUFYR1JPVVBTCiAKICMgU1JFIHN0YW5kYXJkIGV4Y2VwdGlvbiAoYWNjZXNzIGFzIHNyZS5lcnJvcikKICMgc2hvdWxkIHRoaXMgcmVhbGx5IGJlIGhlcmU/CiAKIGNsYXNzIGVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIHBhdHRlcm49Tm9uZSwgcG9zPU5vbmUpOgorICAgICAgICBzZWxmLm1zZyA9IG1zZworICAgICAgICBzZWxmLnBhdHRlcm4gPSBwYXR0ZXJuCisgICAgICAgIHNlbGYucG9zID0gcG9zCisgICAgICAgIGlmIHBhdHRlcm4gaXMgbm90IE5vbmUgYW5kIHBvcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1zZyA9ICclcyBhdCBwb3NpdGlvbiAlZCcgJSAobXNnLCBwb3MpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIHN0cik6CisgICAgICAgICAgICAgICAgbmV3bGluZSA9ICdcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3bGluZSA9IGInXG4nCisgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHBhdHRlcm4uY291bnQobmV3bGluZSwgMCwgcG9zKSArIDEKKyAgICAgICAgICAgIHNlbGYuY29sbm8gPSBwb3MgLSBwYXR0ZXJuLnJmaW5kKG5ld2xpbmUsIDAsIHBvcykKKyAgICAgICAgICAgIGlmIG5ld2xpbmUgaW4gcGF0dGVybjoKKyAgICAgICAgICAgICAgICBtc2cgPSAnJXMgKGxpbmUgJWQsIGNvbHVtbiAlZCknICUgKG1zZywgc2VsZi5saW5lbm8sIHNlbGYuY29sbm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYuY29sbm8gPSBOb25lCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obXNnKQorCisKK2NsYXNzIF9OYW1lZEludENvbnN0YW50KGludCk6CisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgbmFtZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcihfTmFtZWRJbnRDb25zdGFudCwgY2xzKS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKKyAgICBfX3JlcHJfXyA9IF9fc3RyX18KKworTUFYUkVQRUFUID0gX05hbWVkSW50Q29uc3RhbnQoTUFYUkVQRUFULCAnTUFYUkVQRUFUJykKKworZGVmIF9tYWtlY29kZXMobmFtZXMpOgorICAgIG5hbWVzID0gbmFtZXMuc3RyaXAoKS5zcGxpdCgpCisgICAgaXRlbXMgPSBbX05hbWVkSW50Q29uc3RhbnQoaSwgbmFtZSkgZm9yIGksIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKV0KKyAgICBnbG9iYWxzKCkudXBkYXRlKHtpdGVtLm5hbWU6IGl0ZW0gZm9yIGl0ZW0gaW4gaXRlbXN9KQorICAgIHJldHVybiBpdGVtcwogCiAjIG9wZXJhdG9ycworIyBmYWlsdXJlPTAgc3VjY2Vzcz0xIChqdXN0IGJlY2F1c2UgaXQgbG9va3MgYmV0dGVyIHRoYXQgd2F5IDotKQorT1BDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgRkFJTFVSRSBTVUNDRVNTCiAKLUZBSUxVUkUgPSAiZmFpbHVyZSIKLVNVQ0NFU1MgPSAic3VjY2VzcyIKKyAgICBBTlkgQU5ZX0FMTAorICAgIEFTU0VSVCBBU1NFUlRfTk9UCisgICAgQVQKKyAgICBCUkFOQ0gKKyAgICBDQUxMCisgICAgQ0FURUdPUlkKKyAgICBDSEFSU0VUIEJJR0NIQVJTRVQKKyAgICBHUk9VUFJFRiBHUk9VUFJFRl9FWElTVFMgR1JPVVBSRUZfSUdOT1JFCisgICAgSU4gSU5fSUdOT1JFCisgICAgSU5GTworICAgIEpVTVAKKyAgICBMSVRFUkFMIExJVEVSQUxfSUdOT1JFCisgICAgTUFSSworICAgIE1BWF9VTlRJTAorICAgIE1JTl9VTlRJTAorICAgIE5PVF9MSVRFUkFMIE5PVF9MSVRFUkFMX0lHTk9SRQorICAgIE5FR0FURQorICAgIFJBTkdFCisgICAgUkVQRUFUCisgICAgUkVQRUFUX09ORQorICAgIFNVQlBBVFRFUk4KKyAgICBNSU5fUkVQRUFUX09ORQorICAgIFJBTkdFX0lHTk9SRQogCi1BTlkgPSAiYW55IgotQU5ZX0FMTCA9ICJhbnlfYWxsIgotQVNTRVJUID0gImFzc2VydCIKLUFTU0VSVF9OT1QgPSAiYXNzZXJ0X25vdCIKLUFUID0gImF0IgotQklHQ0hBUlNFVCA9ICJiaWdjaGFyc2V0IgotQlJBTkNIID0gImJyYW5jaCIKLUNBTEwgPSAiY2FsbCIKLUNBVEVHT1JZID0gImNhdGVnb3J5IgotQ0hBUlNFVCA9ICJjaGFyc2V0IgotR1JPVVBSRUYgPSAiZ3JvdXByZWYiCi1HUk9VUFJFRl9JR05PUkUgPSAiZ3JvdXByZWZfaWdub3JlIgotR1JPVVBSRUZfRVhJU1RTID0gImdyb3VwcmVmX2V4aXN0cyIKLUlOID0gImluIgotSU5fSUdOT1JFID0gImluX2lnbm9yZSIKLUlORk8gPSAiaW5mbyIKLUpVTVAgPSAianVtcCIKLUxJVEVSQUwgPSAibGl0ZXJhbCIKLUxJVEVSQUxfSUdOT1JFID0gImxpdGVyYWxfaWdub3JlIgotTUFSSyA9ICJtYXJrIgotTUFYX1JFUEVBVCA9ICJtYXhfcmVwZWF0IgotTUFYX1VOVElMID0gIm1heF91bnRpbCIKLU1JTl9SRVBFQVQgPSAibWluX3JlcGVhdCIKLU1JTl9VTlRJTCA9ICJtaW5fdW50aWwiCi1ORUdBVEUgPSAibmVnYXRlIgotTk9UX0xJVEVSQUwgPSAibm90X2xpdGVyYWwiCi1OT1RfTElURVJBTF9JR05PUkUgPSAibm90X2xpdGVyYWxfaWdub3JlIgotUkFOR0UgPSAicmFuZ2UiCi1SRVBFQVQgPSAicmVwZWF0IgotUkVQRUFUX09ORSA9ICJyZXBlYXRfb25lIgotU1VCUEFUVEVSTiA9ICJzdWJwYXR0ZXJuIgotTUlOX1JFUEVBVF9PTkUgPSAibWluX3JlcGVhdF9vbmUiCisgICAgTUlOX1JFUEVBVCBNQVhfUkVQRUFUCisiIiIpCitkZWwgT1BDT0RFU1stMjpdICMgcmVtb3ZlIE1JTl9SRVBFQVQgYW5kIE1BWF9SRVBFQVQKIAogIyBwb3NpdGlvbnMKLUFUX0JFR0lOTklORyA9ICJhdF9iZWdpbm5pbmciCi1BVF9CRUdJTk5JTkdfTElORSA9ICJhdF9iZWdpbm5pbmdfbGluZSIKLUFUX0JFR0lOTklOR19TVFJJTkcgPSAiYXRfYmVnaW5uaW5nX3N0cmluZyIKLUFUX0JPVU5EQVJZID0gImF0X2JvdW5kYXJ5IgotQVRfTk9OX0JPVU5EQVJZID0gImF0X25vbl9ib3VuZGFyeSIKLUFUX0VORCA9ICJhdF9lbmQiCi1BVF9FTkRfTElORSA9ICJhdF9lbmRfbGluZSIKLUFUX0VORF9TVFJJTkcgPSAiYXRfZW5kX3N0cmluZyIKLUFUX0xPQ19CT1VOREFSWSA9ICJhdF9sb2NfYm91bmRhcnkiCi1BVF9MT0NfTk9OX0JPVU5EQVJZID0gImF0X2xvY19ub25fYm91bmRhcnkiCi1BVF9VTklfQk9VTkRBUlkgPSAiYXRfdW5pX2JvdW5kYXJ5IgotQVRfVU5JX05PTl9CT1VOREFSWSA9ICJhdF91bmlfbm9uX2JvdW5kYXJ5IgorQVRDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgQVRfQkVHSU5OSU5HIEFUX0JFR0lOTklOR19MSU5FIEFUX0JFR0lOTklOR19TVFJJTkcKKyAgICBBVF9CT1VOREFSWSBBVF9OT05fQk9VTkRBUlkKKyAgICBBVF9FTkQgQVRfRU5EX0xJTkUgQVRfRU5EX1NUUklORworICAgIEFUX0xPQ19CT1VOREFSWSBBVF9MT0NfTk9OX0JPVU5EQVJZCisgICAgQVRfVU5JX0JPVU5EQVJZIEFUX1VOSV9OT05fQk9VTkRBUlkKKyIiIikKIAogIyBjYXRlZ29yaWVzCi1DQVRFR09SWV9ESUdJVCA9ICJjYXRlZ29yeV9kaWdpdCIKLUNBVEVHT1JZX05PVF9ESUdJVCA9ICJjYXRlZ29yeV9ub3RfZGlnaXQiCi1DQVRFR09SWV9TUEFDRSA9ICJjYXRlZ29yeV9zcGFjZSIKLUNBVEVHT1JZX05PVF9TUEFDRSA9ICJjYXRlZ29yeV9ub3Rfc3BhY2UiCi1DQVRFR09SWV9XT1JEID0gImNhdGVnb3J5X3dvcmQiCi1DQVRFR09SWV9OT1RfV09SRCA9ICJjYXRlZ29yeV9ub3Rfd29yZCIKLUNBVEVHT1JZX0xJTkVCUkVBSyA9ICJjYXRlZ29yeV9saW5lYnJlYWsiCi1DQVRFR09SWV9OT1RfTElORUJSRUFLID0gImNhdGVnb3J5X25vdF9saW5lYnJlYWsiCi1DQVRFR09SWV9MT0NfV09SRCA9ICJjYXRlZ29yeV9sb2Nfd29yZCIKLUNBVEVHT1JZX0xPQ19OT1RfV09SRCA9ICJjYXRlZ29yeV9sb2Nfbm90X3dvcmQiCi1DQVRFR09SWV9VTklfRElHSVQgPSAiY2F0ZWdvcnlfdW5pX2RpZ2l0IgotQ0FURUdPUllfVU5JX05PVF9ESUdJVCA9ICJjYXRlZ29yeV91bmlfbm90X2RpZ2l0IgotQ0FURUdPUllfVU5JX1NQQUNFID0gImNhdGVnb3J5X3VuaV9zcGFjZSIKLUNBVEVHT1JZX1VOSV9OT1RfU1BBQ0UgPSAiY2F0ZWdvcnlfdW5pX25vdF9zcGFjZSIKLUNBVEVHT1JZX1VOSV9XT1JEID0gImNhdGVnb3J5X3VuaV93b3JkIgotQ0FURUdPUllfVU5JX05PVF9XT1JEID0gImNhdGVnb3J5X3VuaV9ub3Rfd29yZCIKLUNBVEVHT1JZX1VOSV9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfdW5pX2xpbmVicmVhayIKLUNBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLID0gImNhdGVnb3J5X3VuaV9ub3RfbGluZWJyZWFrIgorQ0hDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgQ0FURUdPUllfRElHSVQgQ0FURUdPUllfTk9UX0RJR0lUCisgICAgQ0FURUdPUllfU1BBQ0UgQ0FURUdPUllfTk9UX1NQQUNFCisgICAgQ0FURUdPUllfV09SRCBDQVRFR09SWV9OT1RfV09SRAorICAgIENBVEVHT1JZX0xJTkVCUkVBSyBDQVRFR09SWV9OT1RfTElORUJSRUFLCisgICAgQ0FURUdPUllfTE9DX1dPUkQgQ0FURUdPUllfTE9DX05PVF9XT1JECisgICAgQ0FURUdPUllfVU5JX0RJR0lUIENBVEVHT1JZX1VOSV9OT1RfRElHSVQKKyAgICBDQVRFR09SWV9VTklfU1BBQ0UgQ0FURUdPUllfVU5JX05PVF9TUEFDRQorICAgIENBVEVHT1JZX1VOSV9XT1JEIENBVEVHT1JZX1VOSV9OT1RfV09SRAorICAgIENBVEVHT1JZX1VOSV9MSU5FQlJFQUsgQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsKKyIiIikKIAotT1BDT0RFUyA9IFsKLQotICAgICMgZmFpbHVyZT0wIHN1Y2Nlc3M9MSAoanVzdCBiZWNhdXNlIGl0IGxvb2tzIGJldHRlciB0aGF0IHdheSA6LSkKLSAgICBGQUlMVVJFLCBTVUNDRVNTLAotCi0gICAgQU5ZLCBBTllfQUxMLAotICAgIEFTU0VSVCwgQVNTRVJUX05PVCwKLSAgICBBVCwKLSAgICBCUkFOQ0gsCi0gICAgQ0FMTCwKLSAgICBDQVRFR09SWSwKLSAgICBDSEFSU0VULCBCSUdDSEFSU0VULAotICAgIEdST1VQUkVGLCBHUk9VUFJFRl9FWElTVFMsIEdST1VQUkVGX0lHTk9SRSwKLSAgICBJTiwgSU5fSUdOT1JFLAotICAgIElORk8sCi0gICAgSlVNUCwKLSAgICBMSVRFUkFMLCBMSVRFUkFMX0lHTk9SRSwKLSAgICBNQVJLLAotICAgIE1BWF9VTlRJTCwKLSAgICBNSU5fVU5USUwsCi0gICAgTk9UX0xJVEVSQUwsIE5PVF9MSVRFUkFMX0lHTk9SRSwKLSAgICBORUdBVEUsCi0gICAgUkFOR0UsCi0gICAgUkVQRUFULAotICAgIFJFUEVBVF9PTkUsCi0gICAgU1VCUEFUVEVSTiwKLSAgICBNSU5fUkVQRUFUX09ORQotCi1dCi0KLUFUQ09ERVMgPSBbCi0gICAgQVRfQkVHSU5OSU5HLCBBVF9CRUdJTk5JTkdfTElORSwgQVRfQkVHSU5OSU5HX1NUUklORywgQVRfQk9VTkRBUlksCi0gICAgQVRfTk9OX0JPVU5EQVJZLCBBVF9FTkQsIEFUX0VORF9MSU5FLCBBVF9FTkRfU1RSSU5HLAotICAgIEFUX0xPQ19CT1VOREFSWSwgQVRfTE9DX05PTl9CT1VOREFSWSwgQVRfVU5JX0JPVU5EQVJZLAotICAgIEFUX1VOSV9OT05fQk9VTkRBUlkKLV0KLQotQ0hDT0RFUyA9IFsKLSAgICBDQVRFR09SWV9ESUdJVCwgQ0FURUdPUllfTk9UX0RJR0lULCBDQVRFR09SWV9TUEFDRSwKLSAgICBDQVRFR09SWV9OT1RfU1BBQ0UsIENBVEVHT1JZX1dPUkQsIENBVEVHT1JZX05PVF9XT1JELAotICAgIENBVEVHT1JZX0xJTkVCUkVBSywgQ0FURUdPUllfTk9UX0xJTkVCUkVBSywgQ0FURUdPUllfTE9DX1dPUkQsCi0gICAgQ0FURUdPUllfTE9DX05PVF9XT1JELCBDQVRFR09SWV9VTklfRElHSVQsIENBVEVHT1JZX1VOSV9OT1RfRElHSVQsCi0gICAgQ0FURUdPUllfVU5JX1NQQUNFLCBDQVRFR09SWV9VTklfTk9UX1NQQUNFLCBDQVRFR09SWV9VTklfV09SRCwKLSAgICBDQVRFR09SWV9VTklfTk9UX1dPUkQsIENBVEVHT1JZX1VOSV9MSU5FQlJFQUssCi0gICAgQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsKLV0KLQotZGVmIG1ha2VkaWN0KGxpc3QpOgotICAgIGQgPSB7fQotICAgIGkgPSAwCi0gICAgZm9yIGl0ZW0gaW4gbGlzdDoKLSAgICAgICAgZFtpdGVtXSA9IGkKLSAgICAgICAgaSA9IGkgKyAxCi0gICAgcmV0dXJuIGQKLQotT1BDT0RFUyA9IG1ha2VkaWN0KE9QQ09ERVMpCi1BVENPREVTID0gbWFrZWRpY3QoQVRDT0RFUykKLUNIQ09ERVMgPSBtYWtlZGljdChDSENPREVTKQogCiAjIHJlcGxhY2VtZW50IG9wZXJhdGlvbnMgZm9yICJpZ25vcmUgY2FzZSIgbW9kZQogT1BfSUdOT1JFID0gewogICAgIEdST1VQUkVGOiBHUk9VUFJFRl9JR05PUkUsCiAgICAgSU46IElOX0lHTk9SRSwKICAgICBMSVRFUkFMOiBMSVRFUkFMX0lHTk9SRSwKLSAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfSUdOT1JFCisgICAgTk9UX0xJVEVSQUw6IE5PVF9MSVRFUkFMX0lHTk9SRSwKKyAgICBSQU5HRTogUkFOR0VfSUdOT1JFLAogfQogCiBBVF9NVUxUSUxJTkUgPSB7CkBAIC0yMTcsMTEgKzE3OSwxMSBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGRlZiBkdW1wKGYsIGQsIHByZWZpeCk6Ci0gICAgICAgIGl0ZW1zID0gc29ydGVkKGQuaXRlbXMoKSwga2V5PWxhbWJkYSBhOiBhWzFdKQotICAgICAgICBmb3IgaywgdiBpbiBpdGVtczoKLSAgICAgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgJXNfJXMgJXNcbiIgJSAocHJlZml4LCBrLnVwcGVyKCksIHYpKQotICAgIGYgPSBvcGVuKCJzcmVfY29uc3RhbnRzLmgiLCAidyIpCi0gICAgZi53cml0ZSgiIiJcCisgICAgICAgIGl0ZW1zID0gc29ydGVkKGQpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAgICAgICAgZi53cml0ZSgiI2RlZmluZSAlc18lcyAlZFxuIiAlIChwcmVmaXgsIGl0ZW0sIGl0ZW0pKQorICAgIHdpdGggb3Blbigic3JlX2NvbnN0YW50cy5oIiwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKCIiIlwKIC8qCiAgKiBTZWNyZXQgTGFicycgUmVndWxhciBFeHByZXNzaW9uIEVuZ2luZQogICoKQEAgLTIzNywyNSArMTk5LDI0IEBACiAKICIiIikKIAotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX01BR0lDICVkXG4iICUgTUFHSUMpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX01BR0lDICVkXG4iICUgTUFHSUMpCiAKLSAgICBkdW1wKGYsIE9QQ09ERVMsICJTUkVfT1AiKQotICAgIGR1bXAoZiwgQVRDT0RFUywgIlNSRSIpCi0gICAgZHVtcChmLCBDSENPREVTLCAiU1JFIikKKyAgICAgICAgZHVtcChmLCBPUENPREVTLCAiU1JFX09QIikKKyAgICAgICAgZHVtcChmLCBBVENPREVTLCAiU1JFIikKKyAgICAgICAgZHVtcChmLCBDSENPREVTLCAiU1JFIikKIAotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVEVNUExBVEUgJWRcbiIgJSBTUkVfRkxBR19URU1QTEFURSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0lHTk9SRUNBU0UgJWRcbiIgJSBTUkVfRkxBR19JR05PUkVDQVNFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTE9DQUxFICVkXG4iICUgU1JFX0ZMQUdfTE9DQUxFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTVVMVElMSU5FICVkXG4iICUgU1JFX0ZMQUdfTVVMVElMSU5FKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfRE9UQUxMICVkXG4iICUgU1JFX0ZMQUdfRE9UQUxMKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVU5JQ09ERSAlZFxuIiAlIFNSRV9GTEFHX1VOSUNPREUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19WRVJCT1NFICVkXG4iICUgU1JFX0ZMQUdfVkVSQk9TRSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0RFQlVHICVkXG4iICUgU1JFX0ZMQUdfREVCVUcpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19BU0NJSSAlZFxuIiAlIFNSRV9GTEFHX0FTQ0lJKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX1RFTVBMQVRFICVkXG4iICUgU1JFX0ZMQUdfVEVNUExBVEUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSAlZFxuIiAlIFNSRV9GTEFHX0lHTk9SRUNBU0UpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTE9DQUxFICVkXG4iICUgU1JFX0ZMQUdfTE9DQUxFKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX01VTFRJTElORSAlZFxuIiAlIFNSRV9GTEFHX01VTFRJTElORSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ET1RBTEwgJWRcbiIgJSBTUkVfRkxBR19ET1RBTEwpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVU5JQ09ERSAlZFxuIiAlIFNSRV9GTEFHX1VOSUNPREUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVkVSQk9TRSAlZFxuIiAlIFNSRV9GTEFHX1ZFUkJPU0UpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfREVCVUcgJWRcbiIgJSBTUkVfRkxBR19ERUJVRykKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19BU0NJSSAlZFxuIiAlIFNSRV9GTEFHX0FTQ0lJKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19QUkVGSVggJWRcbiIgJSBTUkVfSU5GT19QUkVGSVgpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19MSVRFUkFMICVkXG4iICUgU1JFX0lORk9fTElURVJBTCkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0NIQVJTRVQgJWRcbiIgJSBTUkVfSU5GT19DSEFSU0VUKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX1BSRUZJWCAlZFxuIiAlIFNSRV9JTkZPX1BSRUZJWCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19MSVRFUkFMICVkXG4iICUgU1JFX0lORk9fTElURVJBTCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19DSEFSU0VUICVkXG4iICUgU1JFX0lORk9fQ0hBUlNFVCkKIAotICAgIGYuY2xvc2UoKQogICAgIHByaW50KCJkb25lIikKZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IGRmMWU2NDMuLmMwZjUzOWQgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtMTMsMTcgKzEzLDIwIEBACiAjIFhYWDogc2hvdyBzdHJpbmcgb2Zmc2V0IGFuZCBvZmZlbmRpbmcgY2hhcmFjdGVyIGZvciBhbGwgZXJyb3JzCiAKIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKgotZnJvbSBfc3JlIGltcG9ydCBNQVhSRVBFQVQKIAogU1BFQ0lBTF9DSEFSUyA9ICIuXFxbeygpKis/XiR8IgogUkVQRUFUX0NIQVJTID0gIiorP3siCiAKLURJR0lUUyA9IHNldCgiMDEyMzQ1Njc4OSIpCitESUdJVFMgPSBmcm96ZW5zZXQoIjAxMjM0NTY3ODkiKQogCi1PQ1RESUdJVFMgPSBzZXQoIjAxMjM0NTY3IikKLUhFWERJR0lUUyA9IHNldCgiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRiIpCitPQ1RESUdJVFMgPSBmcm96ZW5zZXQoIjAxMjM0NTY3IikKK0hFWERJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRiIpCitBU0NJSUxFVFRFUlMgPSBmcm96ZW5zZXQoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiKQogCi1XSElURVNQQUNFID0gc2V0KCIgXHRcblxyXHZcZiIpCitXSElURVNQQUNFID0gZnJvemVuc2V0KCIgXHRcblxyXHZcZiIpCisKK19SRVBFQVRDT0RFUyA9IGZyb3plbnNldCh7TUlOX1JFUEVBVCwgTUFYX1JFUEVBVH0pCitfVU5JVENPREVTID0gZnJvemVuc2V0KHtBTlksIFJBTkdFLCBJTiwgTElURVJBTCwgTk9UX0xJVEVSQUwsIENBVEVHT1JZfSkKIAogRVNDQVBFUyA9IHsKICAgICByIlxhIjogKExJVEVSQUwsIG9yZCgiXGEiKSksCkBAIC02NiwyNiArNjksMzYgQEAKICAgICAjIG1hc3RlciBwYXR0ZXJuIG9iamVjdC4gIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBhdHRyaWJ1dGVzCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmZsYWdzID0gMAotICAgICAgICBzZWxmLm9wZW4gPSBbXQotICAgICAgICBzZWxmLmdyb3VwcyA9IDEKICAgICAgICAgc2VsZi5ncm91cGRpY3QgPSB7fQotICAgICAgICBzZWxmLmxvb2tiZWhpbmQgPSAwCi0KKyAgICAgICAgc2VsZi5zdWJwYXR0ZXJucyA9IFtOb25lXSAgIyBncm91cCAwCisgICAgICAgIHNlbGYubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ3JvdXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuc3VicGF0dGVybnMpCiAgICAgZGVmIG9wZW5ncm91cChzZWxmLCBuYW1lPU5vbmUpOgogICAgICAgICBnaWQgPSBzZWxmLmdyb3VwcwotICAgICAgICBzZWxmLmdyb3VwcyA9IGdpZCArIDEKKyAgICAgICAgc2VsZi5zdWJwYXR0ZXJucy5hcHBlbmQoTm9uZSkKKyAgICAgICAgaWYgc2VsZi5ncm91cHMgPiBNQVhHUk9VUFM6CisgICAgICAgICAgICByYWlzZSBlcnJvcigidG9vIG1hbnkgZ3JvdXBzIikKICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG9naWQgPSBzZWxmLmdyb3VwZGljdC5nZXQobmFtZSwgTm9uZSkKICAgICAgICAgICAgIGlmIG9naWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICVzIGFzIGdyb3VwICVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAlZCIgJSAocmVwcihuYW1lKSwgZ2lkLCAgb2dpZCkpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICVyIGFzIGdyb3VwICVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAlZCIgJSAobmFtZSwgZ2lkLCAgb2dpZCkpCiAgICAgICAgICAgICBzZWxmLmdyb3VwZGljdFtuYW1lXSA9IGdpZAotICAgICAgICBzZWxmLm9wZW4uYXBwZW5kKGdpZCkKICAgICAgICAgcmV0dXJuIGdpZAotICAgIGRlZiBjbG9zZWdyb3VwKHNlbGYsIGdpZCk6Ci0gICAgICAgIHNlbGYub3Blbi5yZW1vdmUoZ2lkKQorICAgIGRlZiBjbG9zZWdyb3VwKHNlbGYsIGdpZCwgcCk6CisgICAgICAgIHNlbGYuc3VicGF0dGVybnNbZ2lkXSA9IHAKICAgICBkZWYgY2hlY2tncm91cChzZWxmLCBnaWQpOgotICAgICAgICByZXR1cm4gZ2lkIDwgc2VsZi5ncm91cHMgYW5kIGdpZCBub3QgaW4gc2VsZi5vcGVuCisgICAgICAgIHJldHVybiBnaWQgPCBzZWxmLmdyb3VwcyBhbmQgc2VsZi5zdWJwYXR0ZXJuc1tnaWRdIGlzIG5vdCBOb25lCisKKyAgICBkZWYgY2hlY2tsb29rYmVoaW5kZ3JvdXAoc2VsZiwgZ2lkLCBzb3VyY2UpOgorICAgICAgICBpZiBzZWxmLmxvb2tiZWhpbmRncm91cHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jaGVja2dyb3VwKGdpZCk6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCcpCisgICAgICAgICAgICBpZiBnaWQgPj0gc2VsZi5sb29rYmVoaW5kZ3JvdXBzOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignY2Fubm90IHJlZmVyIHRvIGdyb3VwIGRlZmluZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9va2JlaGluZCBzdWJwYXR0ZXJuJykKIAogY2xhc3MgU3ViUGF0dGVybjoKICAgICAjIGEgc3VicGF0dGVybiwgaW4gaW50ZXJtZWRpYXRlIGZvcm0KQEAgLTk5LDI0ICsxMTIsMjQgQEAKICAgICAgICAgbmwgPSBUcnVlCiAgICAgICAgIHNlcXR5cGVzID0gKHR1cGxlLCBsaXN0KQogICAgICAgICBmb3Igb3AsIGF2IGluIHNlbGYuZGF0YToKLSAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyBvcCwgZW5kPScnKQotICAgICAgICAgICAgaWYgb3AgPT0gSU46CisgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgc3RyKG9wKSwgZW5kPScnKQorICAgICAgICAgICAgaWYgb3AgaXMgSU46CiAgICAgICAgICAgICAgICAgIyBtZW1iZXIgc3VibGFuZ3VhZ2UKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgZm9yIG9wLCBhIGluIGF2OgotICAgICAgICAgICAgICAgICAgICBwcmludCgobGV2ZWwrMSkqIiAgIiArIG9wLCBhKQotICAgICAgICAgICAgZWxpZiBvcCA9PSBCUkFOQ0g6CisgICAgICAgICAgICAgICAgICAgIHByaW50KChsZXZlbCsxKSoiICAiICsgc3RyKG9wKSwgYSkKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgogICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICBmb3IgaSwgYSBpbiBlbnVtZXJhdGUoYXZbMV0pOgogICAgICAgICAgICAgICAgICAgICBpZiBpOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJvciIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgIk9SIikKICAgICAgICAgICAgICAgICAgICAgYS5kdW1wKGxldmVsKzEpCi0gICAgICAgICAgICBlbGlmIG9wID09IEdST1VQUkVGX0VYSVNUUzoKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgogICAgICAgICAgICAgICAgIGNvbmRncm91cCwgaXRlbV95ZXMsIGl0ZW1fbm8gPSBhdgogICAgICAgICAgICAgICAgIHByaW50KCcnLCBjb25kZ3JvdXApCiAgICAgICAgICAgICAgICAgaXRlbV95ZXMuZHVtcChsZXZlbCsxKQogICAgICAgICAgICAgICAgIGlmIGl0ZW1fbm86Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAiZWxzZSIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAiRUxTRSIpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW1fbm8uZHVtcChsZXZlbCsxKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGF2LCBzZXF0eXBlcyk6CiAgICAgICAgICAgICAgICAgbmwgPSBGYWxzZQpAQCAtMTUzLDExICsxNjYsOSBAQAogICAgICAgICBzZWxmLmRhdGEuYXBwZW5kKGNvZGUpCiAgICAgZGVmIGdldHdpZHRoKHNlbGYpOgogICAgICAgICAjIGRldGVybWluZSB0aGUgd2lkdGggKG1pbiwgbWF4KSBmb3IgdGhpcyBzdWJwYXR0ZXJuCi0gICAgICAgIGlmIHNlbGYud2lkdGg6CisgICAgICAgIGlmIHNlbGYud2lkdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi53aWR0aAogICAgICAgICBsbyA9IGhpID0gMAotICAgICAgICBVTklUQ09ERVMgPSAoQU5ZLCBSQU5HRSwgSU4sIExJVEVSQUwsIE5PVF9MSVRFUkFMLCBDQVRFR09SWSkKLSAgICAgICAgUkVQRUFUQ09ERVMgPSAoTUlOX1JFUEVBVCwgTUFYX1JFUEVBVCkKICAgICAgICAgZm9yIG9wLCBhdiBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgICBpZiBvcCBpcyBCUkFOQ0g6CiAgICAgICAgICAgICAgICAgaSA9IE1BWFJFUEVBVCAtIDEKQEAgLTE3NiwxNCArMTg3LDI4IEBACiAgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCi0gICAgICAgICAgICBlbGlmIG9wIGluIFJFUEVBVENPREVTOgorICAgICAgICAgICAgZWxpZiBvcCBpbiBfUkVQRUFUQ09ERVM6CiAgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzJdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaSAqIGF2WzBdCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGogKiBhdlsxXQotICAgICAgICAgICAgZWxpZiBvcCBpbiBVTklUQ09ERVM6CisgICAgICAgICAgICBlbGlmIG9wIGluIF9VTklUQ09ERVM6CiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIDEKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgMQotICAgICAgICAgICAgZWxpZiBvcCA9PSBTVUNDRVNTOgorICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKKyAgICAgICAgICAgICAgICBpLCBqID0gc2VsZi5wYXR0ZXJuLnN1YnBhdHRlcm5zW2F2XS5nZXR3aWR0aCgpCisgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKKyAgICAgICAgICAgICAgICBoaSA9IGhpICsgagorICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRl9FWElTVFM6CisgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBpZiBhdlsyXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbCwgaCA9IGF2WzJdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICAgICAgaSA9IG1pbihpLCBsKQorICAgICAgICAgICAgICAgICAgICBqID0gbWF4KGosIGgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaSA9IDAKKyAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQorICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCisgICAgICAgICAgICBlbGlmIG9wIGlzIFNVQ0NFU1M6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgc2VsZi53aWR0aCA9IG1pbihsbywgTUFYUkVQRUFUIC0gMSksIG1pbihoaSwgTUFYUkVQRUFUKQogICAgICAgICByZXR1cm4gc2VsZi53aWR0aApAQCAtMTkyLDMzICsyMTcsMzMgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgc2VsZi5pc3RleHQgPSBpc2luc3RhbmNlKHN0cmluZywgc3RyKQogICAgICAgICBzZWxmLnN0cmluZyA9IHN0cmluZworICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6CisgICAgICAgICAgICBzdHJpbmcgPSBzdHIoc3RyaW5nLCAnbGF0aW4xJykKKyAgICAgICAgc2VsZi5kZWNvZGVkX3N0cmluZyA9IHN0cmluZwogICAgICAgICBzZWxmLmluZGV4ID0gMAorICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICBkZWYgX19uZXh0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmluZGV4ID49IGxlbihzZWxmLnN0cmluZyk6CisgICAgICAgIGluZGV4ID0gc2VsZi5pbmRleAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaGFyID0gc2VsZi5kZWNvZGVkX3N0cmluZ1tpbmRleF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY2hhciA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXg6c2VsZi5pbmRleCsxXQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgdGhlIHN0cjgsIHNpbmNlIGluZGV4aW5nIHJldHVybnMgYSBpbnRlZ2VyCi0gICAgICAgICMgWFhYIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIHRlc3RfYnVnXzkyNjA3NSBpbiB0ZXN0X3JlLnB5Ci0gICAgICAgIGlmIGNoYXIgYW5kIG5vdCBzZWxmLmlzdGV4dDoKLSAgICAgICAgICAgIGNoYXIgPSBjaHIoY2hhclswXSkKICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgorICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGMgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4ICsgMV0KKyAgICAgICAgICAgICAgICBjaGFyICs9IHNlbGYuZGVjb2RlZF9zdHJpbmdbaW5kZXhdCiAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlIChlbmQgb2YgbGluZSkiKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuaXN0ZXh0OgotICAgICAgICAgICAgICAgIGMgPSBjaHIoYykKLSAgICAgICAgICAgIGNoYXIgPSBjaGFyICsgYwotICAgICAgICBzZWxmLmluZGV4ID0gc2VsZi5pbmRleCArIGxlbihjaGFyKQorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgZXNjYXBlIChlbmQgb2YgcGF0dGVybikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nLCBsZW4oc2VsZi5zdHJpbmcpIC0gMSkgZnJvbSBOb25lCisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleCArIDEKICAgICAgICAgc2VsZi5uZXh0ID0gY2hhcgotICAgIGRlZiBtYXRjaChzZWxmLCBjaGFyLCBza2lwPTEpOgorICAgIGRlZiBtYXRjaChzZWxmLCBjaGFyKToKICAgICAgICAgaWYgY2hhciA9PSBzZWxmLm5leHQ6Ci0gICAgICAgICAgICBpZiBza2lwOgotICAgICAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICB0aGlzID0gc2VsZi5uZXh0CiAgICAgICAgIHNlbGYuX19uZXh0KCkKQEAgLTIzMiwxMCArMjU3LDMwIEBACiAgICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgICAgICAgc2VsZi5fX25leHQoKQogICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZGVmIGdldHVudGlsKHNlbGYsIHRlcm1pbmF0b3IpOgorICAgICAgICByZXN1bHQgPSAnJworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYyA9IHNlbGYubmV4dAorICAgICAgICAgICAgc2VsZi5fX25leHQoKQorICAgICAgICAgICAgaWYgYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyAlcywgdW50ZXJtaW5hdGVkIG5hbWUiICUgdGVybWluYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihyZXN1bHQpKQorICAgICAgICAgICAgaWYgYyA9PSB0ZXJtaW5hdG9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIsIDEpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjCisgICAgICAgIHJldHVybiByZXN1bHQKICAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIHNlbGYubmV4dAorICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgotICAgICAgICBzZWxmLmluZGV4LCBzZWxmLm5leHQgPSBpbmRleAorICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5fX25leHQoKQorCisgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgorICAgICAgICByZXR1cm4gZXJyb3IobXNnLCBzZWxmLnN0cmluZywgc2VsZi50ZWxsKCkgLSBvZmZzZXQpCiAKICMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIG5vdCB1c2VkIGluIHRoaXMgbW9kdWxlIGFueW1vcmUsIGJ1dCB3ZSBrZWVwCiAjIHRoZW0gaGVyZSAod2l0aCBEZXByZWNhdGlvbldhcm5pbmdzKSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCkBAIC0yNzAsNyArMzE1LDcgQEAKICAgICBpZiBjb2RlOgogICAgICAgICByZXR1cm4gY29kZQogICAgIGNvZGUgPSBDQVRFR09SSUVTLmdldChlc2NhcGUpCi0gICAgaWYgY29kZSBhbmQgY29kZVswXSA9PSBJTjoKKyAgICBpZiBjb2RlIGFuZCBjb2RlWzBdIGlzIElOOgogICAgICAgICByZXR1cm4gY29kZQogICAgIHRyeToKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCkBAIC0yNzgsMzMgKzMyMyw0MSBAQAogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUgKGV4YWN0bHkgdHdvIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KSAmIDB4ZmYKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgZWxpZiBjID09ICJVIiBhbmQgc291cmNlLmlzdGV4dDoKICAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg4LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAxMDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjIGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCisgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsxOl0sIDgpCisgICAgICAgICAgICBpZiBjID4gMG8zNzc6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdvY3RhbCBlc2NhcGUgdmFsdWUgJXMgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgorICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCi0gICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpKQorICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCiBkZWYgX2VzY2FwZShzb3VyY2UsIGVzY2FwZSwgc3RhdGUpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluIGV4cHJlc3Npb24KQEAgLTMyMCw2OSArMzczLDcwIEBACiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICpvciogZGVjaW1hbCBncm91cCByZWZlcmVuY2UgKHNpZ2gpCiAgICAgICAgICAgICBpZiBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXQoKQogICAgICAgICAgICAgICAgIGlmIChlc2NhcGVbMV0gaW4gT0NURElHSVRTIGFuZCBlc2NhcGVbMl0gaW4gT0NURElHSVRTIGFuZAogICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMpOgogICAgICAgICAgICAgICAgICAgICAjIGdvdCB0aHJlZSBvY3RhbCBkaWdpdHM7IHRoaXMgaXMgYW4gb2N0YWwgZXNjYXBlCi0gICAgICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldCgpCisgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzE6XSwgOCkKKyAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdvY3RhbCBlc2NhcGUgdmFsdWUgJXMgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICAgICAgIyBub3QgYW4gb2N0YWwgZXNjYXBlLCBzbyB0aGlzIGlzIGEgZ3JvdXAgcmVmZXJlbmNlCiAgICAgICAgICAgICBncm91cCA9IGludChlc2NhcGVbMTpdKQogICAgICAgICAgICAgaWYgZ3JvdXAgPCBzdGF0ZS5ncm91cHM6CiAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXRlLmNoZWNrZ3JvdXAoZ3JvdXApOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiY2Fubm90IHJlZmVyIHRvIG9wZW4gZ3JvdXAiKQotICAgICAgICAgICAgICAgIGlmIHN0YXRlLmxvb2tiZWhpbmQ6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRpb25zIGFyZSBub3Qgc3VwcG9ydGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChncm91cCwgc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBHUk9VUFJFRiwgZ3JvdXAKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLCBsZW4oZXNjYXBlKSkKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKKyAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwotICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKSkKKyAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPTEpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCiAgICAgaXRlbXNhcHBlbmQgPSBpdGVtcy5hcHBlbmQKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAotICAgIHdoaWxlIDE6CisgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpCisgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUpKQotICAgICAgICBpZiBzb3VyY2VtYXRjaCgifCIpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbm90IG5lc3RlZDoKKyAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qgc291cmNlLm5leHQgb3Igc291cmNlbWF0Y2goIikiLCAwKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigicGF0dGVybiBub3QgcHJvcGVybHkgY2xvc2VkIikKIAogICAgIGlmIGxlbihpdGVtcykgPT0gMToKICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdCkBAIC0zOTEsNyArNDQ1LDcgQEAKICAgICBzdWJwYXR0ZXJuYXBwZW5kID0gc3VicGF0dGVybi5hcHBlbmQKIAogICAgICMgY2hlY2sgaWYgYWxsIGl0ZW1zIHNoYXJlIGEgY29tbW9uIHByZWZpeAotICAgIHdoaWxlIDE6CisgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgcHJlZml4ID0gTm9uZQogICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgIGlmIG5vdCBpdGVtOgpAQCAtNDExLDE2ICs0NjUsMTIgQEAKIAogICAgICMgY2hlY2sgaWYgdGhlIGJyYW5jaCBjYW4gYmUgcmVwbGFjZWQgYnkgYSBjaGFyYWN0ZXIgc2V0CiAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgIGlmIGxlbihpdGVtKSAhPSAxIG9yIGl0ZW1bMF1bMF0gIT0gTElURVJBTDoKKyAgICAgICAgaWYgbGVuKGl0ZW0pICE9IDEgb3IgaXRlbVswXVswXSBpcyBub3QgTElURVJBTDoKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKICAgICAgICAgIyB3ZSBjYW4gc3RvcmUgdGhpcyBhcyBhIGNoYXJhY3RlciBzZXQgaW5zdGVhZCBvZiBhCiAgICAgICAgICMgYnJhbmNoICh0aGUgY29tcGlsZXIgbWF5IG9wdGltaXplIHRoaXMgZXZlbiBtb3JlKQotICAgICAgICBzZXQgPSBbXQotICAgICAgICBzZXRhcHBlbmQgPSBzZXQuYXBwZW5kCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgc2V0YXBwZW5kKGl0ZW1bMF0pCi0gICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBzZXQpKQorICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChJTiwgW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gaXRlbXNdKSkKICAgICAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChCUkFOQ0gsIChOb25lLCBpdGVtcykpKQpAQCAtNDMwLDIxICs0ODAsMTQgQEAKICAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQogICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgogICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCi0gICAgICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKKyAgICAgICAgaWYgc291cmNlLm5leHQgPT0gInwiOgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjb25kaXRpb25hbCBiYWNrcmVmIHdpdGggbW9yZSB0aGFuIHR3byBicmFuY2hlcyIpCiAgICAgZWxzZToKICAgICAgICAgaXRlbV9ubyA9IE5vbmUKLSAgICBpZiBzb3VyY2UubmV4dCBhbmQgbm90IHNvdXJjZS5tYXRjaCgiKSIsIDApOgotICAgICAgICByYWlzZSBlcnJvcigicGF0dGVybiBub3QgcHJvcGVybHkgY2xvc2VkIikKICAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLV9QQVRURVJORU5ERVJTID0gc2V0KCJ8KSIpCi1fQVNTRVJUQ0hBUlMgPSBzZXQoIj0hPCIpCi1fTE9PS0JFSElOREFTU0VSVENIQVJTID0gc2V0KCI9ISIpCi1fUkVQRUFUQ09ERVMgPSBzZXQoW01JTl9SRVBFQVQsIE1BWF9SRVBFQVRdKQotCiBkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQpAQCAtNDU0LDM0ICs0OTcsMzggQEAKICAgICBzb3VyY2VnZXQgPSBzb3VyY2UuZ2V0CiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBfbGVuID0gbGVuCi0gICAgUEFUVEVSTkVOREVSUyA9IF9QQVRURVJORU5ERVJTCi0gICAgQVNTRVJUQ0hBUlMgPSBfQVNTRVJUQ0hBUlMKLSAgICBMT09LQkVISU5EQVNTRVJUQ0hBUlMgPSBfTE9PS0JFSElOREFTU0VSVENIQVJTCi0gICAgUkVQRUFUQ09ERVMgPSBfUkVQRUFUQ09ERVMKKyAgICBfb3JkID0gb3JkCisgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCi0gICAgd2hpbGUgMToKKyAgICB3aGlsZSBUcnVlOgogCi0gICAgICAgIGlmIHNvdXJjZS5uZXh0IGluIFBBVFRFUk5FTkRFUlM6Ci0gICAgICAgICAgICBicmVhayAjIGVuZCBvZiBzdWJwYXR0ZXJuCi0gICAgICAgIHRoaXMgPSBzb3VyY2VnZXQoKQorICAgICAgICB0aGlzID0gc291cmNlLm5leHQKICAgICAgICAgaWYgdGhpcyBpcyBOb25lOgogICAgICAgICAgICAgYnJlYWsgIyBlbmQgb2YgcGF0dGVybgorICAgICAgICBpZiB0aGlzIGluICJ8KSI6CisgICAgICAgICAgICBicmVhayAjIGVuZCBvZiBzdWJwYXR0ZXJuCisgICAgICAgIHNvdXJjZWdldCgpCiAKLSAgICAgICAgaWYgc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFOgorICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgIyBza2lwIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCiAgICAgICAgICAgICBpZiB0aGlzIGluIFdISVRFU1BBQ0U6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIHRoaXMgPT0gIiMiOgotICAgICAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgaW4gKE5vbmUsICJcbiIpOgorICAgICAgICAgICAgICAgICAgICBpZiB0aGlzIGlzIE5vbmUgb3IgdGhpcyA9PSAiXG4iOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGlmIHRoaXMgYW5kIHRoaXNbMF0gbm90IGluIFNQRUNJQUxfQ0hBUlM6Ci0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBvcmQodGhpcykpKQorICAgICAgICBpZiB0aGlzWzBdID09ICJcXCI6CisgICAgICAgICAgICBjb2RlID0gX2VzY2FwZShzb3VyY2UsIHRoaXMsIHN0YXRlKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZChjb2RlKQorCisgICAgICAgIGVsaWYgdGhpcyBub3QgaW4gU1BFQ0lBTF9DSEFSUzoKKyAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiWyI6CisgICAgICAgICAgICBoZXJlID0gc291cmNlLnRlbGwoKSAtIDEKICAgICAgICAgICAgICMgY2hhcmFjdGVyIHNldAogICAgICAgICAgICAgc2V0ID0gW10KICAgICAgICAgICAgIHNldGFwcGVuZCA9IHNldC5hcHBlbmQKQEAgLTQ5MSwzOSArNTM4LDQyIEBACiAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChORUdBVEUsIE5vbmUpKQogICAgICAgICAgICAgIyBjaGVjayByZW1haW5pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgc3RhcnQgPSBzZXRbOl0KLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHRoaXMgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgIGlmIHRoaXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKICAgICAgICAgICAgICAgICBpZiB0aGlzID09ICJdIiBhbmQgc2V0ICE9IHN0YXJ0OgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgdGhpcyBhbmQgdGhpc1swXSA9PSAiXFwiOgorICAgICAgICAgICAgICAgIGVsaWYgdGhpc1swXSA9PSAiXFwiOgogICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGlzKQotICAgICAgICAgICAgICAgIGVsaWYgdGhpczoKLSAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBMSVRFUkFMLCBvcmQodGhpcykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcmVndWxhciBleHByZXNzaW9uIikKKyAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBMSVRFUkFMLCBfb3JkKHRoaXMpCiAgICAgICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIi0iKToKICAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgcmFuZ2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgPT0gIl0iOgorICAgICAgICAgICAgICAgICAgICB0aGF0ID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHRoYXQgPT0gIl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gaXMgSU46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBjb2RlMVsxXVswXQogICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKGNvZGUxKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChMSVRFUkFMLCBvcmQoIi0iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKExJVEVSQUwsIF9vcmQoIi0iKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbGlmIHRoaXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGlzWzBdID09ICJcXCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBvcmQodGhpcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdICE9IExJVEVSQUwgb3IgY29kZTJbMF0gIT0gTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciByYW5nZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGNvZGUxWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBoaSA9IGNvZGUyWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBoaSA8IGxvOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIHJhbmdlIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoUkFOR0UsIChsbywgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdFswXSA9PSAiXFwiOgorICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhhdCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBfb3JkKHRoYXQpCisgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdICE9IExJVEVSQUwgb3IgY29kZTJbMF0gIT0gTElURVJBTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIHJhbmdlICVzLSVzIiAlICh0aGlzLCB0aGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKHRoaXMpICsgMSArIGxlbih0aGF0KSkKKyAgICAgICAgICAgICAgICAgICAgbG8gPSBjb2RlMVsxXQorICAgICAgICAgICAgICAgICAgICBoaSA9IGNvZGUyWzFdCisgICAgICAgICAgICAgICAgICAgIGlmIGhpIDwgbG86CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiYmFkIGNoYXJhY3RlciByYW5nZSAlcy0lcyIgJSAodGhpcywgdGhhdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbih0aGlzKSArIDEgKyBsZW4odGhhdCkpCisgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoUkFOR0UsIChsbywgaGkpKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBjb2RlMVswXSBpcyBJTjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gY29kZTFbMV1bMF0KQEAgLTUzOCw4ICs1ODgsOSBAQAogICAgICAgICAgICAgICAgICMgWFhYOiA8Zmw+IHNob3VsZCBhZGQgY2hhcm1hcCBvcHRpbWl6YXRpb24gaGVyZQogICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBzZXQpKQogCi0gICAgICAgIGVsaWYgdGhpcyBhbmQgdGhpc1swXSBpbiBSRVBFQVRfQ0hBUlM6CisgICAgICAgIGVsaWYgdGhpcyBpbiBSRVBFQVRfQ0hBUlM6CiAgICAgICAgICAgICAjIHJlcGVhdCBwcmV2aW91cyBpdGVtCisgICAgICAgICAgICBoZXJlID0gc291cmNlLnRlbGwoKQogICAgICAgICAgICAgaWYgdGhpcyA9PSAiPyI6CiAgICAgICAgICAgICAgICAgbWluLCBtYXggPSAwLCAxCiAgICAgICAgICAgICBlbGlmIHRoaXMgPT0gIioiOgpAQCAtNTQ5LDIwICs2MDAsMTkgQEAKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDEsIE1BWFJFUEVBVAogICAgICAgICAgICAgZWxpZiB0aGlzID09ICJ7IjoKICAgICAgICAgICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifSI6Ci0gICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpCiAgICAgICAgICAgICAgICAgbWluLCBtYXggPSAwLCBNQVhSRVBFQVQKICAgICAgICAgICAgICAgICBsbyA9IGhpID0gIiIKICAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgICAgIGxvID0gbG8gKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgbG8gKz0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiLCIpOgogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoaSA9IGhpICsgc291cmNlZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpICs9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaGkgPSBsbwogICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgifSIpOgotICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBvcmQodGhpcykpKQorICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBfb3JkKHRoaXMpKSkKICAgICAgICAgICAgICAgICAgICAgc291cmNlLnNlZWsoaGVyZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBsbzoKQEAgLTU3NCwxOCArNjI0LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIG1heCA+PSBNQVhSRVBFQVQ6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJ0aGUgcmVwZXRpdGlvbiBudW1iZXIgaXMgdG9vIGxhcmdlIikKICAgICAgICAgICAgICAgICAgICAgaWYgbWF4IDwgbWluOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCByZXBlYXQgaW50ZXJ2YWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBxdWFudGlmaWVyICVyIiAlIChjaGFyLCkpCiAgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggaXRlbSB0byByZXBlYXQKICAgICAgICAgICAgIGlmIHN1YnBhdHRlcm46CiAgICAgICAgICAgICAgICAgaXRlbSA9IHN1YnBhdHRlcm5bLTE6XQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpdGVtID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IGl0ZW0gb3IgKF9sZW4oaXRlbSkgPT0gMSBhbmQgaXRlbVswXVswXSA9PSBBVCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5vdGhpbmcgdG8gcmVwZWF0IikKLSAgICAgICAgICAgIGlmIGl0ZW1bMF1bMF0gaW4gUkVQRUFUQ09ERVM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm11bHRpcGxlIHJlcGVhdCIpCisgICAgICAgICAgICBpZiBub3QgaXRlbSBvciAoX2xlbihpdGVtKSA9PSAxIGFuZCBpdGVtWzBdWzBdIGlzIEFUKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm5vdGhpbmcgdG8gcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUgKyBsZW4odGhpcykpCisgICAgICAgICAgICBpZiBpdGVtWzBdWzBdIGluIF9SRVBFQVRDT0RFUzoKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm11bHRpcGxlIHJlcGVhdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlICsgbGVuKHRoaXMpKQogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuWy0xXSA9IChNSU5fUkVQRUFULCAobWluLCBtYXgsIGl0ZW0pKQogICAgICAgICAgICAgZWxzZToKQEAgLTU5NSwxNTAgKzY0OCwxMzcgQEAKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFOWSwgTm9uZSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICIoIjoKLSAgICAgICAgICAgIGdyb3VwID0gMQorICAgICAgICAgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpIC0gMQorICAgICAgICAgICAgZ3JvdXAgPSBUcnVlCiAgICAgICAgICAgICBuYW1lID0gTm9uZQogICAgICAgICAgICAgY29uZGdyb3VwID0gTm9uZQogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKLSAgICAgICAgICAgICAgICBncm91cCA9IDAKICAgICAgICAgICAgICAgICAjIG9wdGlvbnMKLSAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiUCIpOgorICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKKyAgICAgICAgICAgICAgICBpZiBjaGFyID09ICJQIjoKICAgICAgICAgICAgICAgICAgICAgIyBweXRob24gZXh0ZW5zaW9ucwogICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lZCBncm91cDogc2tpcCBmb3J3YXJkIHRvIGVuZCBvZiBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIj4iOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzb3VyY2UuZ2V0dW50aWwoIj4iKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgc291cmNlbWF0Y2goIj0iKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZWQgYmFja3JlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVudGVybWluYXRlZCBuYW1lIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSArIGNoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciBpbiBiYWNrcmVmIGdyb3VwIG5hbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnaWQgPSBzdGF0ZS5ncm91cGRpY3QuZ2V0KG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBnaWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUubG9va2JlaGluZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdpZCwgc291cmNlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoR1JPVVBSRUYsIGdpZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVua25vd24gc3BlY2lmaWVyOiA/UCVzIiAlIGNoYXIpCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybiIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID9QIiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMikKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIjoiOgogICAgICAgICAgICAgICAgICAgICAjIG5vbi1jYXB0dXJpbmcgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiIyIpOgorICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIiMiOgogICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGlzIE5vbmUgb3Igc291cmNlLm5leHQgPT0gIikiOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VnZXQoKSA9PSAiKSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgc291cmNlLm5leHQgaW4gQVNTRVJUQ0hBUlM6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluICI9ITwiOgogICAgICAgICAgICAgICAgICAgICAjIGxvb2thaGVhZCBhc3NlcnRpb25zCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgICAgICBkaXIgPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIjwiOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgbm90IGluIExPT0tCRUhJTkRBU1NFUlRDSEFSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigic3ludGF4IGVycm9yIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IC0xICMgbG9va2JlaGluZAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gIj0hIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID88IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDIpCisgICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSAtMSAjIGxvb2tiZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwogICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICBpZiBkaXIgPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZCAtPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCIpIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBU1NFUlQsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFTU0VSVF9OT1QsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIHNvdXJjZW1hdGNoKCIoIik6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICIoIjoKICAgICAgICAgICAgICAgICAgICAgIyBjb25kaXRpb25hbCBiYWNrcmVmZXJlbmNlIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgIGNvbmRuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgY29uZG5hbWUgPSBjb25kbmFtZSArIGNoYXIKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICBjb25kbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIpCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgICAgICBpZiBjb25kbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRncm91cCA9IHN0YXRlLmdyb3VwZGljdC5nZXQoY29uZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KGNvbmRuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lICVyIiAlIGNvbmRuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGdyb3VwID0gaW50KGNvbmRuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5sb29rYmVoaW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgogICAgICAgICAgICAgICAgICAgICAjIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubmV4dCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyA9IHN0YXRlLmZsYWdzIHwgRkxBR1Nbc291cmNlZ2V0KCldCi0gICAgICAgICAgICBpZiBncm91cDoKLSAgICAgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgIyBhbm9ueW1vdXMgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyB8PSBGTEFHU1tjaGFyXQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICkiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBmbGFnIiwgbGVuKGNoYXIpKQorICAgICAgICAgICAgICAgICAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAxKQorCisgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gc3RhdGUub3Blbmdyb3VwKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNsb3NlZ3JvdXAoZ3JvdXApCi0gICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQorICAgICAgICAgICAgaWYgY29uZGdyb3VwOgorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiIpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzQ2LDI1ICs3ODYsMzEgQEAKICAgICAgICAgZWxpZiB0aGlzID09ICIkIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm4uYXBwZW5kKChBVCwgQVRfRU5EKSkKIAotICAgICAgICBlbGlmIHRoaXMgYW5kIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCi0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKGNvZGUpCi0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJwYXJzZXIgZXJyb3IiKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuc3VwcG9ydGVkIHNwZWNpYWwgY2hhcmFjdGVyICVyIiAlIChjaGFyLCkpCiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCiBkZWYgZml4X2ZsYWdzKHNyYywgZmxhZ3MpOgogICAgICMgQ2hlY2sgYW5kIGZpeCBmbGFncyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgcGF0dGVybiAoc3RyIG9yIGJ5dGVzKQogICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCiAgICAgICAgIGlmIG5vdCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgogICAgICAgICAgICAgZmxhZ3MgfD0gU1JFX0ZMQUdfVU5JQ09ERQogICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBVTklDT0RFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIGVsc2U6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSBhbmQgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQVNDSUkgYW5kIExPQ0FMRSBmbGFncyBhcmUgaW5jb21wYXRpYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtNzgwLDExICs4MjYsOSBAQAogICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgMCkKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKLSAgICB0YWlsID0gc291cmNlLmdldCgpCi0gICAgaWYgdGFpbCA9PSAiKSI6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKLSAgICBlbGlmIHRhaWw6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBjaGFyYWN0ZXJzIGF0IGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgIGlmIHNvdXJjZS5uZXh0IGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQgc291cmNlLm5leHQgPT0gIikiCisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCiAKICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQpAQCAtODExLDYgKzg1NSw3IEBACiAgICAgICAgICAgICBkZWwgbGl0ZXJhbFs6XQogICAgICAgICBncm91cHMuYXBwZW5kKChsZW4obGl0ZXJhbHMpLCBpbmRleCkpCiAgICAgICAgIGxpdGVyYWxzLmFwcGVuZChOb25lKQorICAgIGdyb3VwaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXgKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0aGlzID0gc2dldCgpCiAgICAgICAgIGlmIHRoaXMgaXMgTm9uZToKQEAgLTgyMCwyOCArODY1LDI1IEBACiAgICAgICAgICAgICBjID0gdGhpc1sxXQogICAgICAgICAgICAgaWYgYyA9PSAiZyI6CiAgICAgICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgaWYgcy5tYXRjaCgiPCIpOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgZ3JvdXAgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICI+IjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSBjaGFyCi0gICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5lZ2F0aXZlIGdyb3VwIG51bWJlciIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgaWYgbm90IHMubWF0Y2goIjwiKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigibWlzc2luZyA8IikKKyAgICAgICAgICAgICAgICBuYW1lID0gcy5nZXR1bnRpbCgiPiIpCisgICAgICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXhbbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZ3JvdXBpbmRleFtuYW1lXQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4KQogICAgICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICAgICBpZiBzLm5leHQgaW4gT0NURElHSVRTOgpAQCAtODU3LDE0ICs4OTksMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMubmV4dCBpbiBPQ1RESUdJVFMpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzb2N0YWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihpbnQodGhpc1sxOl0sIDgpICYgMHhmZikpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHRoaXNbMTpdLCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIHRoaXMsIGxlbih0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBpc29jdGFsOgogICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBjaHIoRVNDQVBFU1t0aGlzXVsxXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCiAgICAgICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQpAQCAtODc4LDE0ICs5MjcsMTIgQEAKIAogZGVmIGV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpOgogICAgIGcgPSBtYXRjaC5ncm91cAotICAgIHNlcCA9IG1hdGNoLnN0cmluZ1s6MF0KKyAgICBlbXB0eSA9IG1hdGNoLnN0cmluZ1s6MF0KICAgICBncm91cHMsIGxpdGVyYWxzID0gdGVtcGxhdGUKICAgICBsaXRlcmFscyA9IGxpdGVyYWxzWzpdCiAgICAgdHJ5OgogICAgICAgICBmb3IgaW5kZXgsIGdyb3VwIGluIGdyb3VwczoKLSAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IHMgPSBnKGdyb3VwKQotICAgICAgICAgICAgaWYgcyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bm1hdGNoZWQgZ3JvdXAiKQorICAgICAgICAgICAgbGl0ZXJhbHNbaW5kZXhdID0gZyhncm91cCkgb3IgZW1wdHkKICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIikKLSAgICByZXR1cm4gc2VwLmpvaW4obGl0ZXJhbHMpCisgICAgcmV0dXJuIGVtcHR5LmpvaW4obGl0ZXJhbHMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlYzQyZTM4Li5hYjdhNDliIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTg3LDE3ICs4NywxOCBAQAogQUxFUlRfREVTQ1JJUFRJT05fVU5LTk9XTl9QU0tfSURFTlRJVFkKICIiIgogCitpbXBvcnQgaXBhZGRyZXNzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0Citmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAogICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCkBAIC0xMTksMzAgKzEyMCwyMyBAQAogX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQogX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQogX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnUFJPVE9DT0xfJykKIF9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKLWZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCiAKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpLAorICAgICAgICBzb3VyY2U9X3NzbCkKIAotX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBnbG9iYWxzKCkuaXRlbXMoKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpfQorX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CisKIHRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1NTTHYyCiAgICAgX1NTTHYyX0lGX0VYSVNUUyA9IFBST1RPQ09MX1NTTHYyCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgTmFtZUVycm9yOgogICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBOb25lCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9TU0x2Ml0gPSAiU1NMdjIiCi0KLXRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1RMU3YxXzEsIFBST1RPQ09MX1RMU3YxXzIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8xXSA9ICJUTFN2MS4xIgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8yXSA9ICJUTFN2MS4yIgogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTI0Niw2ICsyNDAsMTcgQEAKICAgICByZXR1cm4gcGF0Lm1hdGNoKGhvc3RuYW1lKQogCiAKK2RlZiBfaXBhZGRyZXNzX21hdGNoKGlwbmFtZSwgaG9zdF9pcCk6CisgICAgIiIiRXhhY3QgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorCisgICAgUkZDIDYxMjUgZXhwbGljaXRseSBkb2Vzbid0IGRlZmluZSBhbiBhbGdvcml0aG0gZm9yIHRoaXMKKyAgICAoc2VjdGlvbiAxLjcuMiAtICJPdXQgb2YgU2NvcGUiKS4KKyAgICAiIiIKKyAgICAjIE9wZW5TU0wgbWF5IGFkZCBhIHRyYWlsaW5nIG5ld2xpbmUgdG8gYSBzdWJqZWN0QWx0TmFtZSdzIElQIGFkZHJlc3MKKyAgICBpcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGlwbmFtZS5yc3RyaXAoKSkKKyAgICByZXR1cm4gaXAgPT0gaG9zdF9pcAorCisKIGRlZiBtYXRjaF9ob3N0bmFtZShjZXJ0LCBob3N0bmFtZSk6CiAgICAgIiIiVmVyaWZ5IHRoYXQgKmNlcnQqIChpbiBkZWNvZGVkIGZvcm1hdCBhcyByZXR1cm5lZCBieQogICAgIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpKSBtYXRjaGVzIHRoZSAqaG9zdG5hbWUqLiAgUkZDIDI4MTggYW5kIFJGQyA2MTI1CkBAIC0yNTgsMTEgKzI2MywyMCBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJlbXB0eSBvciBubyBjZXJ0aWZpY2F0ZSwgbWF0Y2hfaG9zdG5hbWUgbmVlZHMgYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTTCBzb2NrZXQgb3IgU1NMIGNvbnRleHQgd2l0aCBlaXRoZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJDRVJUX09QVElPTkFMIG9yIENFUlRfUkVRVUlSRUQiKQorICAgIHRyeToKKyAgICAgICAgaG9zdF9pcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGhvc3RuYW1lKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAjIE5vdCBhbiBJUCBhZGRyZXNzIChjb21tb24gY2FzZSkKKyAgICAgICAgaG9zdF9pcCA9IE5vbmUKICAgICBkbnNuYW1lcyA9IFtdCiAgICAgc2FuID0gY2VydC5nZXQoJ3N1YmplY3RBbHROYW1lJywgKCkpCiAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2FuOgogICAgICAgICBpZiBrZXkgPT0gJ0ROUyc6Ci0gICAgICAgICAgICBpZiBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgaWYgaG9zdF9pcCBpcyBOb25lIGFuZCBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZG5zbmFtZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICBlbGlmIGtleSA9PSAnSVAgQWRkcmVzcyc6CisgICAgICAgICAgICBpZiBob3N0X2lwIGlzIG5vdCBOb25lIGFuZCBfaXBhZGRyZXNzX21hdGNoKHZhbHVlLCBob3N0X2lwKToKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRuc25hbWVzLmFwcGVuZCh2YWx1ZSkKICAgICBpZiBub3QgZG5zbmFtZXM6CkBAIC0zNjEsNiArMzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQogCisgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBwcm90b2NvbCBpbiBucG5fcHJvdG9jb2xzOgpAQCAtMzcyLDYgKzM5MiwxNyBAQAogCiAgICAgICAgIHNlbGYuX3NldF9ucG5fcHJvdG9jb2xzKHByb3RvcykKIAorICAgIGRlZiBzZXRfYWxwbl9wcm90b2NvbHMoc2VsZiwgYWxwbl9wcm90b2NvbHMpOgorICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gYWxwbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ0FMUE4gcHJvdG9jb2xzIG11c3QgYmUgMSB0byAyNTUgaW4gbGVuZ3RoJykKKyAgICAgICAgICAgIHByb3Rvcy5hcHBlbmQobGVuKGIpKQorICAgICAgICAgICAgcHJvdG9zLmV4dGVuZChiKQorCisgICAgICAgIHNlbGYuX3NldF9hbHBuX3Byb3RvY29scyhwcm90b3MpCisKICAgICBkZWYgX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzZWxmLCBzdG9yZW5hbWUsIHB1cnBvc2UpOgogICAgICAgICBjZXJ0cyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBjZXJ0LCBlbmNvZGluZywgdHJ1c3QgaW4gZW51bV9jZXJ0aWZpY2F0ZXMoc3RvcmVuYW1lKToKQEAgLTQ4OCw2ICs1MTksMTQxIEBACiBfY3JlYXRlX3N0ZGxpYl9jb250ZXh0ID0gX2NyZWF0ZV91bnZlcmlmaWVkX2NvbnRleHQKIAogCitjbGFzcyBTU0xPYmplY3Q6CisgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBvbiB0b3Agb2YgYSBsb3ctbGV2ZWwgU1NMIG9iamVjdCBhcworICAgIGltcGxlbWVudGVkIGJ5IE9wZW5TU0wuIFRoaXMgb2JqZWN0IGNhcHR1cmVzIHRoZSBzdGF0ZSBvZiBhbiBTU0wgY29ubmVjdGlvbgorICAgIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueSBuZXR3b3JrIElPIGl0c2VsZi4gSU8gbmVlZHMgdG8gYmUgcGVyZm9ybWVkCisgICAgdGhyb3VnaCBzZXBhcmF0ZSAiQklPIiBvYmplY3RzIHdoaWNoIGFyZSBPcGVuU1NMJ3MgSU8gYWJzdHJhY3Rpb24gbGF5ZXIuCisKKyAgICBUaGlzIGNsYXNzIGRvZXMgbm90IGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3IuIEluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkKKyAgICBgYFNTTENvbnRleHQud3JhcF9iaW9gYC4gVGhpcyBjbGFzcyBpcyB0eXBpY2FsbHkgdXNlZCBieSBmcmFtZXdvcmsgYXV0aG9ycworICAgIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIElPIGZvciBTU0wgdGhyb3VnaCBtZW1vcnkgYnVmZmVycy4KKworICAgIFdoZW4gY29tcGFyZWQgdG8gYGBTU0xTb2NrZXRgYCwgdGhpcyBvYmplY3QgbGFja3MgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKworICAgICAqIEFueSBmb3JtIG9mIG5ldHdvcmsgSU8gaW5jbHVnaW5nIG1ldGhvZHMgc3VjaCBhcyBgYHJlY3ZgYCBhbmQgYGBzZW5kYGAuCisgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKKyAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKKyAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRleHQoc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xDb250ZXh0IHRoYXQgaXMgY3VycmVudGx5IGluIHVzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb250ZXh0CisKKyAgICBAY29udGV4dC5zZXR0ZXIKKyAgICBkZWYgY29udGV4dChzZWxmLCBjdHgpOgorICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgorICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2ZXJfaG9zdG5hbWUoc2VsZik6CisgICAgICAgICIiIlRoZSBjdXJyZW50bHkgc2V0IHNlcnZlciBob3N0bmFtZSAoZm9yIFNOSSksIG9yIGBgTm9uZWBgIGlmIG5vCisgICAgICAgIHNlcnZlciBob3N0YW1lIGlzIHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfaG9zdG5hbWUKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbj0wLCBidWZmZXI9Tm9uZSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gJ2xlbicgYnl0ZXMgZnJvbSB0aGUgU1NMIG9iamVjdCBhbmQgcmV0dXJuIHRoZW0uCisKKyAgICAgICAgSWYgJ2J1ZmZlcicgaXMgcHJvdmlkZWQsIHJlYWQgaW50byB0aGlzIGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4sIGJ1ZmZlcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKKyAgICAgICAgcmV0dXJuIHYKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgJ2RhdGEnIHRvIHRoZSBTU0wgb2JqZWN0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworICAgICAgICB3cml0dGVuLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgbXVzdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQorCisgICAgZGVmIGdldHBlZXJjZXJ0KHNlbGYsIGJpbmFyeV9mb3JtPUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhIGluIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZAorICAgICAgICBieSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBTU0wgY2hhbm5lbC4KKworICAgICAgICBSZXR1cm4gTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHt9IGlmIGEgY2VydGlmaWNhdGUgd2FzCisgICAgICAgIHByb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoucGVlcl9jZXJ0aWZpY2F0ZShiaW5hcnlfZm9ybSkKKworICAgIGRlZiBzZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIE5QTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBOUE4gaXMgbm90IHN1cHBvcnRlZCBieSBvbmUKKyAgICAgICAgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICBpZiBfc3NsLkhBU19OUE46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgQUxQTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBBTFBOIGlzIG5vdCBzdXBwb3J0ZWQgYnkgb25lCisgICAgICAgIG9mIHRoZSBwZWVycy4iIiIKKyAgICAgICAgaWYgX3NzbC5IQVNfQUxQTjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKKyAgICBkZWYgY2lwaGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIgYXMgYSAzLXR1cGxlIGBgKG5hbWUsCisgICAgICAgIHNzbF92ZXJzaW9uLCBzZWNyZXRfYml0cylgYC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQorCisgICAgZGVmIHNoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNpcGhlcnMgc2hhcmVkIGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2Ugb3IKKyAgICAgICAgTm9uZSBpZiB0aGlzIGlzIG5vdCBhIHZhbGlkIHNlcnZlciBjb25uZWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zaGFyZWRfY2lwaGVycygpCisKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBjb21wcmVzc2lvbiBhbGdvcml0aG0gaW4gdXNlLCBvciBgYE5vbmVgYCBpZgorICAgICAgICBjb21wcmVzc2lvbiB3YXMgbm90IG5lZ290aWF0ZWQgb3Igbm90IHN1cHBvcnRlZCBieSBvbmUgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKworICAgIGRlZiBwZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSByZWFkIGltbWVkaWF0ZWx5LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlbmRpbmcoKQorCisgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiU3RhcnQgdGhlIFNTTC9UTFMgaGFuZHNoYWtlLiIiIgorICAgICAgICBzZWxmLl9zc2xvYmouZG9faGFuZHNoYWtlKCkKKyAgICAgICAgaWYgc2VsZi5jb250ZXh0LmNoZWNrX2hvc3RuYW1lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIG5lZWRzIHNlcnZlcl9ob3N0bmFtZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQiKQorICAgICAgICAgICAgbWF0Y2hfaG9zdG5hbWUoc2VsZi5nZXRwZWVyY2VydCgpLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKKworICAgIGRlZiB1bndyYXAoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNodXRkb3duKCkKKworICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4iIiIKKyAgICAgICAgaWYgY2JfdHlwZSBub3QgaW4gQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUiKQorICAgICAgICBpZiBjYl90eXBlICE9ICJ0bHMtdW5pcXVlIjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSBjaGFubmVsIGJpbmRpbmcgdHlwZSBub3QgaW1wbGVtZW50ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChjYl90eXBlKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbC4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudmVyc2lvbigpCisKKwogY2xhc3MgU1NMU29ja2V0KHNvY2tldCk6CiAgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc3VidHlwZSBvZiBzb2NrZXQuc29ja2V0IHRoYXQgd3JhcHMKICAgICB0aGUgdW5kZXJseWluZyBPUyBzb2NrZXQgaW4gYW4gU1NMIGNvbnRleHQgd2hlbiBuZWNlc3NhcnksIGFuZApAQCAtNTcwLDggKzczNiw5IEBACiAgICAgICAgIGlmIGNvbm5lY3RlZDoKICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBTU0wgb2JqZWN0CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTYxNiwxMSArNzgzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlJlYWQgb24gY2xvc2VkIG9yIHVud3JhcHBlZCBTU0wgc29ja2V0LiIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKLSAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCiAgICAgICAgIGV4Y2VwdCBTU0xFcnJvciBhcyB4OgogICAgICAgICAgICAgaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9FT0YgYW5kIHNlbGYuc3VwcHJlc3NfcmFnZ2VkX2VvZnM6CiAgICAgICAgICAgICAgICAgaWYgYnVmZmVyIGlzIG5vdCBOb25lOgpAQCAtNjQ3LDcgKzgxMCw3IEBACiAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja19jb25uZWN0ZWQoKQotICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0cGVlcmNlcnQoYmluYXJ5X2Zvcm0pCiAKICAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCkBAIC02NTYsNiArODE5LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqIG9yIG5vdCBfc3NsLkhBU19BTFBOOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NjMsNiArODMzLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgc2hhcmVkX2NpcGhlcnMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2hhcmVkX2NpcGhlcnMoKQorCiAgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NzcsMTcgKzg1Myw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgIm5vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkIGluIGNhbGxzIHRvIHNlbmQoKSBvbiAlcyIgJQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLndyaXRlKGRhdGEpCi0gICAgICAgICAgICBleGNlcHQgU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICBpZiB4LmFyZ3NbMF0gPT0gU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kKHNlbGYsIGRhdGEsIGZsYWdzKQogCkBAIC03MjMsNiArODg5LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKKyAgICBkZWYgc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAiIiJTZW5kIGEgZmlsZSwgcG9zc2libHkgYnkgdXNpbmcgb3Muc2VuZGZpbGUoKSBpZiB0aGlzIGlzIGEKKyAgICAgICAgY2xlYXItdGV4dCBzb2NrZXQuICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAjIG9zLnNlbmRmaWxlKCkgd29ya3Mgd2l0aCBwbGFpbiBzb2NrZXRzIG9ubHkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnNlbmRmaWxlKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VuZGZpbGVfdXNlX3NlbmQoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKwogICAgIGRlZiByZWN2KHNlbGYsIGJ1Zmxlbj0xMDI0LCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC03ODcsNyArOTYzLDcgQEAKIAogICAgIGRlZiB1bndyYXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKLSAgICAgICAgICAgIHMgPSBzZWxmLl9zc2xvYmouc2h1dGRvd24oKQorICAgICAgICAgICAgcyA9IHNlbGYuX3NzbG9iai51bndyYXAoKQogICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgZWxzZToKQEAgLTgwOCwxMiArOTg0LDYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2V0dGltZW91dCh0aW1lb3V0KQogCi0gICAgICAgIGlmIHNlbGYuY29udGV4dC5jaGVja19ob3N0bmFtZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9ob3N0bmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSBuZWVkcyBzZXJ2ZXJfaG9zdG5hbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IikKLSAgICAgICAgICAgIG1hdGNoX2hvc3RuYW1lKHNlbGYuZ2V0cGVlcmNlcnQoKSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0KICAgICBkZWYgX3JlYWxfY29ubmVjdChzZWxmLCBhZGRyLCBjb25uZWN0X2V4KToKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfc2lkZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIpCkBAIC04MjEsNyArOTkxLDggQEAKICAgICAgICAgIyBjb25uZWN0ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGNhbGwuICBXZSBjb25uZWN0IGl0LCB0aGVuIHdyYXAgaXQuCiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgIHNzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgRmFsc2UsIHNlbGYuc2VydmVyX2hvc3RuYW1lKQorICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBjb25uZWN0X2V4OgogICAgICAgICAgICAgICAgIHJjID0gc29ja2V0LmNvbm5lY3RfZXgoc2VsZiwgYWRkcikKQEAgLTg2NCwxNSArMTAzNSwxOCBAQAogICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCiAgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCiAgICAgICAgICIiIgotICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCi0gICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlKQorCisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBlc3RhYmxpc2hlZCBjaGFubmVsLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnZlcnNpb24oKQogCiAKIGRlZiB3cmFwX3NvY2tldChzb2NrLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCkBAIC04OTIsMTIgKzEwNjYsMzQgQEAKICMgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucwogCiBkZWYgY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lKToKLSAgICAiIiJUYWtlcyBhIGRhdGUtdGltZSBzdHJpbmcgaW4gc3RhbmRhcmQgQVNOMV9wcmludCBmb3JtCi0gICAgKCJNT04gREFZIDI0SE9VUjpNSU5VVEU6U0VDIFlFQVIgVElNRVpPTkUiKSBhbmQgcmV0dXJuCi0gICAgYSBQeXRob24gdGltZSB2YWx1ZSBpbiBzZWNvbmRzIHBhc3QgdGhlIGVwb2NoLiIiIgorICAgICIiIlJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgZ2l2ZW4gdGhlIHRpbWVzdHJpbmcKKyAgICByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZSBmcm9tIGEgY2VydGlmaWNhdGUKKyAgICBpbiBgYCIlYiAlZCAlSDolTTolUyAlWSAlWiJgYCBzdHJwdGltZSBmb3JtYXQgKEMgbG9jYWxlKS4KIAotICAgIGltcG9ydCB0aW1lCi0gICAgcmV0dXJuIHRpbWUubWt0aW1lKHRpbWUuc3RycHRpbWUoY2VydF90aW1lLCAiJWIgJWQgJUg6JU06JVMgJVkgR01UIikpCisgICAgIm5vdEJlZm9yZSIgb3IgIm5vdEFmdGVyIiBkYXRlcyBtdXN0IHVzZSBVVEMgKFJGQyA1MjgwKS4KKworICAgIE1vbnRoIGlzIG9uZSBvZjogSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMKKyAgICBVVEMgc2hvdWxkIGJlIHNwZWNpZmllZCBhcyBHTVQgKHNlZSBBU04xX1RJTUVfcHJpbnQoKSkKKyAgICAiIiIKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHN0cnB0aW1lCisgICAgZnJvbSBjYWxlbmRhciBpbXBvcnQgdGltZWdtCisKKyAgICBtb250aHMgPSAoCisgICAgICAgICJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLAorICAgICAgICAiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIgorICAgICkKKyAgICB0aW1lX2Zvcm1hdCA9ICcgJWQgJUg6JU06JVMgJVkgR01UJyAjIE5PVEU6IG5vIG1vbnRoLCBmaXhlZCBHTVQKKyAgICB0cnk6CisgICAgICAgIG1vbnRoX251bWJlciA9IG1vbnRocy5pbmRleChjZXJ0X3RpbWVbOjNdLnRpdGxlKCkpICsgMQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0aW1lIGRhdGEgJXIgZG9lcyBub3QgbWF0Y2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQgIiUlYiVzIicgJSAoY2VydF90aW1lLCB0aW1lX2Zvcm1hdCkpCisgICAgZWxzZToKKyAgICAgICAgIyBmb3VuZCB2YWxpZCBtb250aAorICAgICAgICB0dCA9IHN0cnB0aW1lKGNlcnRfdGltZVszOl0sIHRpbWVfZm9ybWF0KQorICAgICAgICAjIHJldHVybiBhbiBpbnRlZ2VyLCB0aGUgcHJldmlvdXMgbWt0aW1lKCktYmFzZWQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyByZXR1cm5lZCBhIGZsb2F0IChmcmFjdGlvbmFsIHNlY29uZHMgYXJlIGFsd2F5cyB6ZXJvIGhlcmUpLgorICAgICAgICByZXR1cm4gdGltZWdtKCh0dFswXSwgbW9udGhfbnVtYmVyKSArIHR0WzI6Nl0pCiAKIFBFTV9IRUFERVIgPSAiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tIgogUEVNX0ZPT1RFUiA9ICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIgpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCAzZWVjYzNlLi40NjgzN2MwIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTQ4LDYgKzE0OCwyOSBAQAogICAgICAgICAgICAgcGVybS5hcHBlbmQoIi0iKQogICAgIHJldHVybiAiIi5qb2luKHBlcm0pCiAKKworIyBXaW5kb3dzIEZJTEVfQVRUUklCVVRFIGNvbnN0YW50cyBmb3IgaW50ZXJwcmV0aW5nIG9zLnN0YXQoKSdzCisjICJzdF9maWxlX2F0dHJpYnV0ZXMiIG1lbWJlcgorCitGSUxFX0FUVFJJQlVURV9BUkNISVZFID0gMzIKK0ZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQgPSAyMDQ4CitGSUxFX0FUVFJJQlVURV9ERVZJQ0UgPSA2NAorRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZID0gMTYKK0ZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRCA9IDE2Mzg0CitGSUxFX0FUVFJJQlVURV9ISURERU4gPSAyCitGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNID0gMzI3NjgKK0ZJTEVfQVRUUklCVVRFX05PUk1BTCA9IDEyOAorRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCA9IDgxOTIKK0ZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEgPSAxMzEwNzIKK0ZJTEVfQVRUUklCVVRFX09GRkxJTkUgPSA0MDk2CitGSUxFX0FUVFJJQlVURV9SRUFET05MWSA9IDEKK0ZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgPSAxMDI0CitGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRSA9IDUxMgorRklMRV9BVFRSSUJVVEVfU1lTVEVNID0gNAorRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZID0gMjU2CitGSUxFX0FUVFJJQlVURV9WSVJUVUFMID0gNjU1MzYKKworCiAjIElmIGF2YWlsYWJsZSwgdXNlIEMgaW1wbGVtZW50YXRpb24KIHRyeToKICAgICBmcm9tIF9zdGF0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDI1YTI2ZDQuLjM5NzJlZDIgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKICAgICAjIFdlIGZhaWwgYXMgc29vbiBhcyB3ZSByZWFjaCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIGludCBvciB0aGUgdHlwZSBvZgogICAgICMgdGhlIGZpcnN0IHZhbHVlIHdoaWNoIGlzIG5vdCBhbiBpbnQuIEUuZy4gX3N1bShbaW50LCBpbnQsIGZsb2F0LCBpbnRdKQogICAgICMgaXMgb2theSwgYnV0IHN1bShbaW50LCBpbnQsIGZsb2F0LCBGcmFjdGlvbl0pIGlzIG5vdC4KLSAgICBhbGxvd2VkX3R5cGVzID0gc2V0KFtpbnQsIHR5cGUoc3RhcnQpXSkKKyAgICBhbGxvd2VkX3R5cGVzID0ge2ludCwgdHlwZShzdGFydCl9CiAgICAgbiwgZCA9IF9leGFjdF9yYXRpbyhzdGFydCkKICAgICBwYXJ0aWFscyA9IHtkOiBufSAgIyBtYXAge2Rlbm9taW5hdG9yOiBzdW0gb2YgbnVtZXJhdG9yc30KICAgICAjIE1pY3JvLW9wdGltaXphdGlvbnMuCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgYXNzZXJ0IGFsbG93ZWRfdHlwZXMucG9wKCkgaXMgaW50CiAgICAgICAgIFQgPSBpbnQKICAgICBlbHNlOgotICAgICAgICBUID0gKGFsbG93ZWRfdHlwZXMgLSBzZXQoW2ludF0pKS5wb3AoKQorICAgICAgICBUID0gKGFsbG93ZWRfdHlwZXMgLSB7aW50fSkucG9wKCkKICAgICBpZiBOb25lIGluIHBhcnRpYWxzOgogICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhULCAoZmxvYXQsIERlY2ltYWwpKQogICAgICAgICBhc3NlcnQgbm90IG1hdGguaXNmaW5pdGUocGFydGlhbHNbTm9uZV0pCmRpZmYgLS1naXQgYS9MaWIvc3RyaW5nLnB5IGIvTGliL3N0cmluZy5weQppbmRleCBhNGM0OGIyLi5mMzM2NWM2IDEwMDY0NAotLS0gYS9MaWIvc3RyaW5nLnB5CisrKyBiL0xpYi9zdHJpbmcucHkKQEAgLTE3OCw2ICsxNzgsOSBAQAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIGlmICdmb3JtYXRfc3RyaW5nJyBpbiBrd2FyZ3M6CiAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IGt3YXJncy5wb3AoJ2Zvcm1hdF9zdHJpbmcnKQorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2Zvcm1hdF9zdHJpbmcnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmb3JtYXQoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudDogJ2Zvcm1hdF9zdHJpbmcnIikgZnJvbSBOb25lCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IGYxMWU1MzguLmI2YzQzNzQgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xMDQsMTcgKzEwNCwyMSBAQAogSWYgZW52IGlzIG5vdCBOb25lLCBpdCBkZWZpbmVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBuZXcKIHByb2Nlc3MuCiAKLUlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBmYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKIGFyZSBvcGVuZWQgYXMgYmluYXJ5IGZpbGVzLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgdHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKLW9wZW5lZCBhcyBhIHRleHQgZmlsZXMsIGJ1dCBsaW5lcyBtYXkgYmUgdGVybWluYXRlZCBieSBhbnkgb2YgJ1xuJywKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBUcnVlLCB0aGUgZmlsZSBvYmplY3RzIHN0ZG91dCBhbmQgc3RkZXJyIGFyZQorb3BlbmVkIGFzIGEgdGV4dCBmaWxlLCBidXQgbGluZXMgbWF5IGJlIHRlcm1pbmF0ZWQgYnkgYW55IG9mICdcbicsCiB0aGUgVW5peCBlbmQtb2YtbGluZSBjb252ZW50aW9uLCAnXHInLCB0aGUgb2xkIE1hY2ludG9zaCBjb252ZW50aW9uIG9yCiAnXHJcbicsIHRoZSBXaW5kb3dzIGNvbnZlbnRpb24uICBBbGwgb2YgdGhlc2UgZXh0ZXJuYWwgcmVwcmVzZW50YXRpb25zCiBhcmUgc2VlbiBhcyAnXG4nIGJ5IHRoZSBQeXRob24gcHJvZ3JhbS4gIEFsc28sIHRoZSBuZXdsaW5lcyBhdHRyaWJ1dGUKIG9mIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0LCBzdGRpbiBhbmQgc3RkZXJyIGFyZSBub3QgdXBkYXRlZCBieSB0aGUKIGNvbW11bmljYXRlKCkgbWV0aG9kLgogCitJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2Nlc3MgYmVpbmcgY29tbXVuaWNhdGVkIHdpdGggc2hvdWxkIHN0YXJ0IHVwCitleHBlY3RpbmcgdG8gcmVjZWl2ZSBieXRlcyBvbiBpdHMgc3RhbmRhcmQgaW5wdXQgYW5kIGRlY29kZSB0aGVtIHdpdGgKK3RoZSBzYW1lIGVuY29kaW5nIHRoZXkgYXJlIHNlbnQgaW4uCisKIFRoZSBzdGFydHVwaW5mbyBhbmQgY3JlYXRpb25mbGFncywgaWYgZ2l2ZW4sIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCiBhcHBlYXJhbmNlIG9mIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpb3JpdHkgZm9yIHRoZSBuZXcgcHJvY2Vzcy4KQEAgLTE4NCw2ICsxODgsOSBAQAogICAgIHBhc3MgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAogICAgIHlvdSBtYXkgbm90IGFsc28gdXNlIHRoZSBQb3BlbiBjb25zdHJ1Y3RvcidzICJzdGRpbiIgYXJndW1lbnQuCiAKKyAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgc2V0IHRvIFRydWUsIHRoZSAiaW5wdXQiIGFyZ3VtZW50IG11c3QKKyAgICBiZSBhIHN0cmluZyByYXRoZXIgdGhhbiBieXRlcywgYW5kIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhIHN0cmluZy4KKwogRXhjZXB0aW9ucwogLS0tLS0tLS0tLQogRXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGJlZm9yZSB0aGUgbmV3IHByb2dyYW0gaGFzCkBAIC0yMjUsOSArMjMyLDEzIEBACiBjb21tdW5pY2F0ZShpbnB1dD1Ob25lKQogICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0CiAgICAgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8KLSAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCisgICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlCiAgICAgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0bwotICAgIHRoZSBjaGlsZC4KKyAgICB0aGUgY2hpbGQuIElmIHRoZSBQb3BlbiBpbnN0YW5jZSB3YXMgY29uc3RydWN0ZWQgd2l0aCB1bml2ZXJzYWxfbmV3bGluZXMKKyAgICBzZXQgdG8gVHJ1ZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyBhbmQgd2lsbCBiZSBlbmNvZGVkCisgICAgdXNpbmcgdGhlIHByZWZlcnJlZCBzeXN0ZW0gZW5jb2RpbmcgKHNlZSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgYnl0ZSBzdHJpbmcuCiAKICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLgogCkBAIC0zNDUsNyArMzU2LDcgQEAKICIiIgogCiBpbXBvcnQgc3lzCi1tc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCitfbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQogCiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMzU0LDEwICszNjUsNyBAQAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlcnJubwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCiBjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMzY5LDI5ICszNzcsNTMgQEAKICAgICBUaGUgZXhpdCBzdGF0dXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlOwogICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXR1cm5jb2RlLCBjbWQsIG91dHB1dD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kLCBvdXRwdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICAiIiJBbGlhcyBmb3Igb3V0cHV0IGF0dHJpYnV0ZSwgdG8gbWF0Y2ggc3RkZXJyIiIiCisgICAgICAgIHJldHVybiBzZWxmLm91dHB1dAorCisgICAgQHN0ZG91dC5zZXR0ZXIKKyAgICBkZWYgc3Rkb3V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgIyBUaGVyZSdzIG5vIG9idmlvdXMgcmVhc29uIHRvIHNldCB0aGlzLCBidXQgYWxsb3cgaXQgYW55d2F5IHNvCisgICAgICAgICMgLnN0ZG91dCBpcyBhIHRyYW5zcGFyZW50IGFsaWFzIGZvciAub3V0cHV0CisgICAgICAgIHNlbGYub3V0cHV0ID0gdmFsdWUKKwogCiBjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQogICAgIGNoaWxkIHByb2Nlc3MuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIHRpbWVvdXQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKICAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQKIAotaWYgbXN3aW5kb3dzOgorICAgIEBzdGRvdXQuc2V0dGVyCisgICAgZGVmIHN0ZG91dChzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgVGhlcmUncyBubyBvYnZpb3VzIHJlYXNvbiB0byBzZXQgdGhpcywgYnV0IGFsbG93IGl0IGFueXdheSBzbworICAgICAgICAjIC5zdGRvdXQgaXMgYSB0cmFuc3BhcmVudCBhbGlhcyBmb3IgLm91dHB1dAorICAgICAgICBzZWxmLm91dHB1dCA9IHZhbHVlCisKKworaWYgX21zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAogICAgIGltcG9ydCBfd2luYXBpCkBAIC00MjUsOSArNDU3LDEyIEBACiAKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KKyAgICAgICAgICAgImdldG91dHB1dCIsICJjaGVja19vdXRwdXQiLCAicnVuIiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIiwKKyAgICAgICAgICAgIlN1YnByb2Nlc3NFcnJvciIsICJUaW1lb3V0RXhwaXJlZCIsICJDb21wbGV0ZWRQcm9jZXNzIl0KKyAgICAgICAgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGV4Y2x1ZGUgbGlzdDJjbWRsaW5lIGFzIGl0IGlzCisgICAgICAgICAgICMgY29uc2lkZXJlZCBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBpc3N1ZTEwODM4LgogCi1pZiBtc3dpbmRvd3M6CitpZiBfbXN3aW5kb3dzOgogICAgIGZyb20gX3dpbmFwaSBpbXBvcnQgKENSRUFURV9ORVdfQ09OU09MRSwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCkBAIC00NTMsMTUgKzQ4OCwxMSBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKyAgICAgICAgICAgIHJldHVybiAiJXMoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaW50KHNlbGYpKQogCiAgICAgICAgIF9fZGVsX18gPSBDbG9zZQogICAgICAgICBfX3N0cl9fID0gX19yZXByX18KIAotdHJ5OgotICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQotZXhjZXB0OgotICAgIE1BWEZEID0gMjU2CiAKICMgVGhpcyBsaXN0cyBob2xkcyBQb3BlbiBpbnN0YW5jZXMgZm9yIHdoaWNoIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3MgaGFkIG5vdAogIyBleGl0ZWQgYXQgdGhlIHRpbWUgaXRzIF9fZGVsX18gbWV0aG9kIGdvdCBjYWxsZWQ6IHRob3NlIHByb2Nlc3NlcyBhcmUgd2FpdCgpZWQKQEAgLTQ4NSwxNCArNTE2LDYgQEAKIERFVk5VTEwgPSAtMwogCiAKLWRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgY29udGludWUKLQotCiAjIFhYWCBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgYW5kIHRoZSB0ZXN0IHN1aXRlLAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KQEAgLTU5MSwzNCArNjE0LDEwMiBAQAogICAgIC4uLiAgICAgICAgICAgICAgaW5wdXQ9YiJ3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgZm9vbWFuIGV2ZW50c1xuIikKICAgICBiJ3doZW4gaW4gdGhlIGNvdXJzZSBvZiBiYXJtYW4gZXZlbnRzXG4nCiAKLSAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhCi0gICAgc3RyaW5nIHJhdGhlciB0aGFuIGJ5dGVzLgorICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSBzdHJpbmcgcmF0aGVyIHRoYW4gYnl0ZXMuCiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIGlmICdpbnB1dCcgaW4ga3dhcmdzOgorCisgICAgaWYgJ2lucHV0JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snaW5wdXQnXSBpcyBOb25lOgorICAgICAgICAjIEV4cGxpY2l0bHkgcGFzc2luZyBpbnB1dD1Ob25lIHdhcyBwcmV2aW91c2x5IGVxdWl2YWxlbnQgdG8gcGFzc2luZyBhbgorICAgICAgICAjIGVtcHR5IHN0cmluZy4gVGhhdCBpcyBtYWludGFpbmVkIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgICAgICBrd2FyZ3NbJ2lucHV0J10gPSAnJyBpZiBrd2FyZ3MuZ2V0KCd1bml2ZXJzYWxfbmV3bGluZXMnLCBGYWxzZSkgZWxzZSBiJycKKworICAgIHJldHVybiBydW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsIHRpbWVvdXQ9dGltZW91dCwgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAgICAgICoqa3dhcmdzKS5zdGRvdXQKKworCitjbGFzcyBDb21wbGV0ZWRQcm9jZXNzKG9iamVjdCk6CisgICAgIiIiQSBwcm9jZXNzIHRoYXQgaGFzIGZpbmlzaGVkIHJ1bm5pbmcuCisKKyAgICBUaGlzIGlzIHJldHVybmVkIGJ5IHJ1bigpLgorCisgICAgQXR0cmlidXRlczoKKyAgICAgIGFyZ3M6IFRoZSBsaXN0IG9yIHN0ciBhcmdzIHBhc3NlZCB0byBydW4oKS4KKyAgICAgIHJldHVybmNvZGU6IFRoZSBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MsIG5lZ2F0aXZlIGZvciBzaWduYWxzLgorICAgICAgc3Rkb3V0OiBUaGUgc3RhbmRhcmQgb3V0cHV0IChOb25lIGlmIG5vdCBjYXB0dXJlZCkuCisgICAgICBzdGRlcnI6IFRoZSBzdGFuZGFyZCBlcnJvciAoTm9uZSBpZiBub3QgY2FwdHVyZWQpLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBzdGRvdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFsnYXJncz17IXJ9Jy5mb3JtYXQoc2VsZi5hcmdzKSwKKyAgICAgICAgICAgICAgICAncmV0dXJuY29kZT17IXJ9Jy5mb3JtYXQoc2VsZi5yZXR1cm5jb2RlKV0KKyAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnc3Rkb3V0PXshcn0nLmZvcm1hdChzZWxmLnN0ZG91dCkpCisgICAgICAgIGlmIHNlbGYuc3RkZXJyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3N0ZGVycj17IXJ9Jy5mb3JtYXQoc2VsZi5zdGRlcnIpKQorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHR5cGUoc2VsZikuX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKworICAgIGRlZiBjaGVja19yZXR1cm5jb2RlKHNlbGYpOgorICAgICAgICAiIiJSYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IgaWYgdGhlIGV4aXQgY29kZSBpcyBub24temVyby4iIiIKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHNlbGYucmV0dXJuY29kZSwgc2VsZi5hcmdzLCBzZWxmLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycikKKworCitkZWYgcnVuKCpwb3BlbmFyZ3MsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsICoqa3dhcmdzKToKKyAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGEgQ29tcGxldGVkUHJvY2VzcyBpbnN0YW5jZS4KKworICAgIFRoZSByZXR1cm5lZCBpbnN0YW5jZSB3aWxsIGhhdmUgYXR0cmlidXRlcyBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQgYW5kCisgICAgc3RkZXJyLiBCeSBkZWZhdWx0LCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgbm90IGNhcHR1cmVkLCBhbmQgdGhvc2UgYXR0cmlidXRlcworICAgIHdpbGwgYmUgTm9uZS4gUGFzcyBzdGRvdXQ9UElQRSBhbmQvb3Igc3RkZXJyPVBJUEUgaW4gb3JkZXIgdG8gY2FwdHVyZSB0aGVtLgorCisgICAgSWYgY2hlY2sgaXMgVHJ1ZSBhbmQgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8sIGl0IHJhaXNlcyBhCisgICAgQ2FsbGVkUHJvY2Vzc0Vycm9yLiBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlCisgICAgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLCBhbmQgb3V0cHV0ICYgc3RkZXJyIGF0dHJpYnV0ZXMgaWYgdGhvc2Ugc3RyZWFtcworICAgIHdlcmUgY2FwdHVyZWQuCisKKyAgICBJZiB0aW1lb3V0IGlzIGdpdmVuLCBhbmQgdGhlIHByb2Nlc3MgdGFrZXMgdG9vIGxvbmcsIGEgVGltZW91dEV4cGlyZWQKKyAgICBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCisKKyAgICBUaGVyZSBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCAiaW5wdXQiLCBhbGxvd2luZyB5b3UgdG8KKyAgICBwYXNzIGEgc3RyaW5nIHRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB5b3UgdXNlIHRoaXMgYXJndW1lbnQKKyAgICB5b3UgbWF5IG5vdCBhbHNvIHVzZSB0aGUgUG9wZW4gY29uc3RydWN0b3IncyAic3RkaW4iIGFyZ3VtZW50LCBhcworICAgIGl0IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5LgorCisgICAgVGhlIG90aGVyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4KKworICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCBzdGRvdXQvc3RkZXJyIGluIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSBzdHJpbmdzIHJhdGhlciB0aGFuCisgICAgYnl0ZXMuCisgICAgIiIiCisgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmICdzdGRpbicgaW4ga3dhcmdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RkaW4gYW5kIGlucHV0IGFyZ3VtZW50cyBtYXkgbm90IGJvdGggYmUgdXNlZC4nKQotICAgICAgICBpbnB1dGRhdGEgPSBrd2FyZ3NbJ2lucHV0J10KLSAgICAgICAgZGVsIGt3YXJnc1snaW5wdXQnXQogICAgICAgICBrd2FyZ3NbJ3N0ZGluJ10gPSBQSVBFCi0gICAgZWxzZToKLSAgICAgICAgaW5wdXRkYXRhID0gTm9uZQotICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcHJvY2VzczoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dGRhdGEsIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dCwgdGltZW91dD10aW1lb3V0KQogICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CiAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9c3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCiAgICAgICAgICAgICByYWlzZQogICAgICAgICByZXRjb2RlID0gcHJvY2Vzcy5wb2xsKCkKLSAgICAgICAgaWYgcmV0Y29kZToKLSAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsIG91dHB1dD1vdXRwdXQpCi0gICAgcmV0dXJuIG91dHB1dAorICAgICAgICBpZiBjaGVjayBhbmQgcmV0Y29kZToKKyAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXN0ZG91dCwgc3RkZXJyPXN0ZGVycikKKyAgICByZXR1cm4gQ29tcGxldGVkUHJvY2Vzcyhwcm9jZXNzLmFyZ3MsIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyKQogCiAKIGRlZiBsaXN0MmNtZGxpbmUoc2VxKToKQEAgLTc2Niw3ICs4NTcsNyBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJidWZzaXplIG11c3QgYmUgYW4gaW50ZWdlciIpCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcHJlZXhlY19mbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcmVleGVjX2ZuIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKQEAgLTgyNiw3ICs5MTcsNyBAQAogICAgICAgICAjIHF1aWNrbHkgdGVybWluYXRpbmcgY2hpbGQgY291bGQgbWFrZSBvdXIgZmRzIHVud3JhcHBhYmxlCiAgICAgICAgICMgKHNlZSAjODQ1OCkuCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICAgICAgcDJjd3JpdGUgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUocDJjd3JpdGUuRGV0YWNoKCksIDApCiAgICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgpAQCAtOTE4LDE0ICsxMDA5LDM1IEBACiAgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCiAgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKKyAgICBkZWYgX3N0ZGluX3dyaXRlKHNlbGYsIGlucHV0KToKKyAgICAgICAgaWYgaW5wdXQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIG11c3QgaWdub3JlIGJyb2tlbiBwaXBlIGVycm9yCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlZBTCBhbmQgc2VsZi5wb2xsKCkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgSXNzdWUgIzE5NjEyOiBPbiBXaW5kb3dzLCBzdGRpbi53cml0ZSgpIGZhaWxzIHdpdGggRUlOVkFMCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIHByb2Nlc3MgYWxyZWFkeSBleGl0ZWQgYmVmb3JlIHRoZSB3cml0ZQorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisKICAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQotICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCi0gICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgICAgICAgcHJvY2VzcyB0byB0ZXJtaW5hdGUuCiAKLSAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKKyAgICAgICAgVGhlIG9wdGlvbmFsICJpbnB1dCIgYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKKyAgICAgICAgY2hpbGQgcHJvY2VzcyAoaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgaXMgVHJ1ZSwgdGhpcyBzaG91bGQKKyAgICAgICAgYmUgYSBzdHJpbmc7IGlmIGl0IGlzIEZhbHNlLCAiaW5wdXQiIHNob3VsZCBiZSBieXRlcyksIG9yCisgICAgICAgIE5vbmUsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLgorCisgICAgICAgIGNvbW11bmljYXRlKCkgcmV0dXJucyBhIHR1cGxlIChzdGRvdXQsIHN0ZGVycikuICBUaGVzZSB3aWxsIGJlCisgICAgICAgIGJ5dGVzIG9yLCBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyB3YXMgVHJ1ZSwgYSBzdHJpbmcuCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKQEAgLTkzOCwxOCArMTA1MCwxMiBAQAogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dDoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBJUEUgYW5kIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3Rkb3V0LnJlYWQpCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5zdGRvdXQucmVhZCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuc3RkZXJyLnJlYWQoKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgIGVsc2U6CkBAIC05ODgsNyArMTA5NCw3IEBACiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKIAogCi0gICAgaWYgbXN3aW5kb3dzOgorICAgIGlmIF9tc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKICAgICAgICAgIwpAQCAtMTE5MywyMSArMTI5OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHNob3VsZCBpZ25vcmUgcGlwZSBmdWxsIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAoZS5lcnJubyA9PSBlcnJuby5FSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLnBvbGwoKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk2MTI6IHN0ZGluLndyaXRlKCkgZmFpbHMgd2l0aCBFSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBwcm9jZXNzIGFscmVhZHkgZXhpdGVkIGJlZm9yZSB0aGUgd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAKICAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIHJlYWRlciB0aHJlYWRzLCBvciB0aW1lIG91dC4gIElmIHdlIHRpbWUgb3V0LCB0aGUKICAgICAgICAgICAgICMgdGhyZWFkcyByZW1haW4gcmVhZGluZyBhbmQgdGhlIGZkcyBsZWZ0IG9wZW4gaW4gY2FzZSB0aGUgdXNlcgpAQCAtMTMyMiwxNiArMTQxNCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKQogCiAKLSAgICAgICAgZGVmIF9jbG9zZV9mZHMoc2VsZiwgZmRzX3RvX2tlZXApOgotICAgICAgICAgICAgc3RhcnRfZmQgPSAzCi0gICAgICAgICAgICBmb3IgZmQgaW4gc29ydGVkKGZkc190b19rZWVwKToKLSAgICAgICAgICAgICAgICBpZiBmZCA+PSBzdGFydF9mZDoKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZShzdGFydF9mZCwgZmQpCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2ZkID0gZmQgKyAxCi0gICAgICAgICAgICBpZiBzdGFydF9mZCA8PSBNQVhGRDoKLSAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKHN0YXJ0X2ZkLCBNQVhGRCkKLQotCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC0xNDE3LDcgKzE0OTksNyBAQAogICAgICAgICAgICAgICAgICMgZXhjZXB0aW9uIChsaW1pdGVkIGluIHNpemUpCiAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhID0gYnl0ZWFycmF5KCkKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gX2VpbnRyX3JldHJ5X2NhbGwob3MucmVhZCwgZXJycGlwZV9yZWFkLCA1MDAwMCkKKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IG9zLnJlYWQoZXJycGlwZV9yZWFkLCA1MDAwMCkKICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhICs9IHBhcnQKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQgb3IgbGVuKGVycnBpcGVfZGF0YSkgPiA1MDAwMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xNDI3LDEwICsxNTA5LDkgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIDApCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNTEzLDEwICsxNTk0LDggQEAKICAgICAgICAgZGVmIF90cnlfd2FpdChzZWxmLCB3YWl0X2ZsYWdzKToKICAgICAgICAgICAgICIiIkFsbCBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gTVVTVCBob2xkIHNlbGYuX3dhaXRwaWRfbG9jay4iIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIHdhaXRfZmxhZ3MpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBvcy53YWl0cGlkKHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCiAgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KQEAgLTE2MjgsMTIgKzE3MDcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoa2V5LmZkLCBjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDVjZjRhNjUuLjc1NDE0OTcgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMTYsODIgKzE2LDg1IEBACiBkZWNvcmF0b3IgPSAyNTkKIGRlY29yYXRvcnMgPSAyNjAKIGRlY29yYXRlZCA9IDI2MQotZnVuY2RlZiA9IDI2MgotcGFyYW1ldGVycyA9IDI2MwotdHlwZWRhcmdzbGlzdCA9IDI2NAotdGZwZGVmID0gMjY1Ci12YXJhcmdzbGlzdCA9IDI2NgotdmZwZGVmID0gMjY3Ci1zdG10ID0gMjY4Ci1zaW1wbGVfc3RtdCA9IDI2OQotc21hbGxfc3RtdCA9IDI3MAotZXhwcl9zdG10ID0gMjcxCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzIKLWF1Z2Fzc2lnbiA9IDI3MwotZGVsX3N0bXQgPSAyNzQKLXBhc3Nfc3RtdCA9IDI3NQotZmxvd19zdG10ID0gMjc2Ci1icmVha19zdG10ID0gMjc3Ci1jb250aW51ZV9zdG10ID0gMjc4Ci1yZXR1cm5fc3RtdCA9IDI3OQoteWllbGRfc3RtdCA9IDI4MAotcmFpc2Vfc3RtdCA9IDI4MQotaW1wb3J0X3N0bXQgPSAyODIKLWltcG9ydF9uYW1lID0gMjgzCi1pbXBvcnRfZnJvbSA9IDI4NAotaW1wb3J0X2FzX25hbWUgPSAyODUKLWRvdHRlZF9hc19uYW1lID0gMjg2Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODcKLWRvdHRlZF9hc19uYW1lcyA9IDI4OAotZG90dGVkX25hbWUgPSAyODkKLWdsb2JhbF9zdG10ID0gMjkwCi1ub25sb2NhbF9zdG10ID0gMjkxCi1hc3NlcnRfc3RtdCA9IDI5MgotY29tcG91bmRfc3RtdCA9IDI5MwotaWZfc3RtdCA9IDI5NAotd2hpbGVfc3RtdCA9IDI5NQotZm9yX3N0bXQgPSAyOTYKLXRyeV9zdG10ID0gMjk3Ci13aXRoX3N0bXQgPSAyOTgKLXdpdGhfaXRlbSA9IDI5OQotZXhjZXB0X2NsYXVzZSA9IDMwMAotc3VpdGUgPSAzMDEKLXRlc3QgPSAzMDIKLXRlc3Rfbm9jb25kID0gMzAzCi1sYW1iZGVmID0gMzA0Ci1sYW1iZGVmX25vY29uZCA9IDMwNQotb3JfdGVzdCA9IDMwNgotYW5kX3Rlc3QgPSAzMDcKLW5vdF90ZXN0ID0gMzA4Ci1jb21wYXJpc29uID0gMzA5Ci1jb21wX29wID0gMzEwCi1zdGFyX2V4cHIgPSAzMTEKLWV4cHIgPSAzMTIKLXhvcl9leHByID0gMzEzCi1hbmRfZXhwciA9IDMxNAotc2hpZnRfZXhwciA9IDMxNQotYXJpdGhfZXhwciA9IDMxNgotdGVybSA9IDMxNwotZmFjdG9yID0gMzE4Ci1wb3dlciA9IDMxOQotYXRvbSA9IDMyMAotdGVzdGxpc3RfY29tcCA9IDMyMQotdHJhaWxlciA9IDMyMgotc3Vic2NyaXB0bGlzdCA9IDMyMwotc3Vic2NyaXB0ID0gMzI0Ci1zbGljZW9wID0gMzI1Ci1leHBybGlzdCA9IDMyNgotdGVzdGxpc3QgPSAzMjcKLWRpY3RvcnNldG1ha2VyID0gMzI4Ci1jbGFzc2RlZiA9IDMyOQotYXJnbGlzdCA9IDMzMAotYXJndW1lbnQgPSAzMzEKLWNvbXBfaXRlciA9IDMzMgotY29tcF9mb3IgPSAzMzMKLWNvbXBfaWYgPSAzMzQKLWVuY29kaW5nX2RlY2wgPSAzMzUKLXlpZWxkX2V4cHIgPSAzMzYKLXlpZWxkX2FyZyA9IDMzNworYXN5bmNfZnVuY2RlZiA9IDI2MgorZnVuY2RlZiA9IDI2MworcGFyYW1ldGVycyA9IDI2NAordHlwZWRhcmdzbGlzdCA9IDI2NQordGZwZGVmID0gMjY2Cit2YXJhcmdzbGlzdCA9IDI2NwordmZwZGVmID0gMjY4CitzdG10ID0gMjY5CitzaW1wbGVfc3RtdCA9IDI3MAorc21hbGxfc3RtdCA9IDI3MQorZXhwcl9zdG10ID0gMjcyCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKK2F1Z2Fzc2lnbiA9IDI3NAorZGVsX3N0bXQgPSAyNzUKK3Bhc3Nfc3RtdCA9IDI3NgorZmxvd19zdG10ID0gMjc3CiticmVha19zdG10ID0gMjc4Citjb250aW51ZV9zdG10ID0gMjc5CityZXR1cm5fc3RtdCA9IDI4MAoreWllbGRfc3RtdCA9IDI4MQorcmFpc2Vfc3RtdCA9IDI4MgoraW1wb3J0X3N0bXQgPSAyODMKK2ltcG9ydF9uYW1lID0gMjg0CitpbXBvcnRfZnJvbSA9IDI4NQoraW1wb3J0X2FzX25hbWUgPSAyODYKK2RvdHRlZF9hc19uYW1lID0gMjg3CitpbXBvcnRfYXNfbmFtZXMgPSAyODgKK2RvdHRlZF9hc19uYW1lcyA9IDI4OQorZG90dGVkX25hbWUgPSAyOTAKK2dsb2JhbF9zdG10ID0gMjkxCitub25sb2NhbF9zdG10ID0gMjkyCithc3NlcnRfc3RtdCA9IDI5MworY29tcG91bmRfc3RtdCA9IDI5NAorYXN5bmNfc3RtdCA9IDI5NQoraWZfc3RtdCA9IDI5Ngord2hpbGVfc3RtdCA9IDI5NworZm9yX3N0bXQgPSAyOTgKK3RyeV9zdG10ID0gMjk5Cit3aXRoX3N0bXQgPSAzMDAKK3dpdGhfaXRlbSA9IDMwMQorZXhjZXB0X2NsYXVzZSA9IDMwMgorc3VpdGUgPSAzMDMKK3Rlc3QgPSAzMDQKK3Rlc3Rfbm9jb25kID0gMzA1CitsYW1iZGVmID0gMzA2CitsYW1iZGVmX25vY29uZCA9IDMwNworb3JfdGVzdCA9IDMwOAorYW5kX3Rlc3QgPSAzMDkKK25vdF90ZXN0ID0gMzEwCitjb21wYXJpc29uID0gMzExCitjb21wX29wID0gMzEyCitzdGFyX2V4cHIgPSAzMTMKK2V4cHIgPSAzMTQKK3hvcl9leHByID0gMzE1CithbmRfZXhwciA9IDMxNgorc2hpZnRfZXhwciA9IDMxNworYXJpdGhfZXhwciA9IDMxOAordGVybSA9IDMxOQorZmFjdG9yID0gMzIwCitwb3dlciA9IDMyMQorYXRvbV9leHByID0gMzIyCithdG9tID0gMzIzCit0ZXN0bGlzdF9jb21wID0gMzI0Cit0cmFpbGVyID0gMzI1CitzdWJzY3JpcHRsaXN0ID0gMzI2CitzdWJzY3JpcHQgPSAzMjcKK3NsaWNlb3AgPSAzMjgKK2V4cHJsaXN0ID0gMzI5Cit0ZXN0bGlzdCA9IDMzMAorZGljdG9yc2V0bWFrZXIgPSAzMzEKK2NsYXNzZGVmID0gMzMyCithcmdsaXN0ID0gMzMzCithcmd1bWVudCA9IDMzNAorY29tcF9pdGVyID0gMzM1Citjb21wX2ZvciA9IDMzNgorY29tcF9pZiA9IDMzNworZW5jb2RpbmdfZGVjbCA9IDMzOAoreWllbGRfZXhwciA9IDMzOQoreWllbGRfYXJnID0gMzQwCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IGUyMzMxM2IuLjg0ZmVjNGEgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBPUFRfSU1QT1JUX1NUQVIsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTc0LDggKzc0LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLmxpbmVubwogCiAgICAgZGVmIGlzX29wdGltaXplZChzZWxmKToKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTgotICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3RhYmxlLm9wdGltaXplZCkKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTikKIAogICAgIGRlZiBpc19uZXN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX3RhYmxlLm5lc3RlZCkKQEAgLTg3LDEwICs4Niw2IEBACiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBzY29wZSB1c2VzIGV4ZWMuICBEZXByZWNhdGVkIG1ldGhvZC4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaGFzX2ltcG9ydF9zdGFyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgc2NvcGUgdXNlcyBpbXBvcnQgKiIiIgotICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS5vcHRpbWl6ZWQgJiBPUFRfSU1QT1JUX1NUQVIpCi0KICAgICBkZWYgZ2V0X2lkZW50aWZpZXJzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdGFibGUuc3ltYm9scy5rZXlzKCkKIApkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggZGJmNzc2Ny4uMTM3OTMyZSAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vSW5jbHVkZScsCi0gICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L1NjcmlwdHMnLAogICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfdXNlcic6IHsKQEAgLTEwOSwxMyArMTA5LDggQEAKICAgICAjIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtIG5hbWUKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZ2V0Y3dkKCkpCiAKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgInBjYnVpbGQiIGluIF9QUk9KRUNUX0JBU0VbLTg6XS5sb3dlcigpOgotICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyKSkKLSMgUEMvVlM3LjEKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNcXHYiIGluIF9QUk9KRUNUX0JBU0VbLTEwOl0ubG93ZXIoKToKLSAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKLSMgUEMvQU1ENjQKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNidWlsZFxcYW1kNjQiIGluIF9QUk9KRUNUX0JBU0VbLTE0Ol0ubG93ZXIoKToKK2lmIChvcy5uYW1lID09ICdudCcgYW5kCisgICAgX1BST0pFQ1RfQkFTRS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKIAogIyBzZXQgZm9yIGNyb3NzIGJ1aWxkcwpAQCAtMTI5LDExICsxMjQsOSBAQAogICAgIHJldHVybiBGYWxzZQogCiBfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKLWlmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCi0gICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgotICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCi0gICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0Ci0gICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitpZiAoX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdcXHBjYnVpbGRcXHdpbjMyJywgJ1xccGNidWlsZFxcYW1kNjQnKSkpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKSkKIGRlZiBpc19weXRob25fYnVpbGQoY2hlY2tfaG9tZT1GYWxzZSk6CiAgICAgaWYgY2hlY2tfaG9tZSBhbmQgX3N5c19ob21lOgogICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKZGlmZiAtLWdpdCBhL0xpYi90YXJmaWxlLnB5IGIvTGliL3RhcmZpbGUucHkKaW5kZXggZTNhMmJiMy4uYmYyMjM0ZiAxMDA3NTUKLS0tIGEvTGliL3RhcmZpbGUucHkKKysrIGIvTGliL3RhcmZpbGUucHkKQEAgLTE0MTAsOSArMTQxMCw5IEBACiAgICAgICAgICAgIGNhbiBiZSBkZXRlcm1pbmVkLCBgbW9kZScgaXMgb3ZlcnJpZGRlbiBieSBgZmlsZW9iaidzIG1vZGUuCiAgICAgICAgICAgIGBmaWxlb2JqJyBpcyBub3QgY2xvc2VkLCB3aGVuIFRhckZpbGUgaXMgY2xvc2VkLgogICAgICAgICAiIiIKLSAgICAgICAgbW9kZXMgPSB7InIiOiAicmIiLCAiYSI6ICJyK2IiLCAidyI6ICJ3YiJ9CisgICAgICAgIG1vZGVzID0geyJyIjogInJiIiwgImEiOiAicitiIiwgInciOiAid2IiLCAieCI6ICJ4YiJ9CiAgICAgICAgIGlmIG1vZGUgbm90IGluIG1vZGVzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAnYScsICd3JyBvciAneCciKQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2Rlc1ttb2RlXQogCkBAIC0xNDg0LDcgKzE0ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgSGVhZGVyRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihzdHIoZSkpCiAKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnBheF9oZWFkZXJzOgpAQCAtMTUyNSw2ICsxNTI1LDE1IEBACiAgICAgICAgICAgICd3OmJ6MicgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3c6eHonICAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAKKyAgICAgICAgICAgJ3gnIG9yICd4OicgIGNyZWF0ZSBhIHRhcmZpbGUgZXhjbHVzaXZlbHkgd2l0aG91dCBjb21wcmVzc2lvbiwgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6Z3onICAgICAgIGNyZWF0ZSBhbiBnemlwIGNvbXByZXNzZWQgdGFyZmlsZSwgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6YnoyJyAgICAgIGNyZWF0ZSBhbiBiemlwMiBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICd4Onh6JyAgICAgICBjcmVhdGUgYW4gbHptYSBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisKICAgICAgICAgICAgJ3J8KicgICAgICAgIG9wZW4gYSBzdHJlYW0gb2YgdGFyIGJsb2NrcyB3aXRoIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyfCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcyBmb3IgcmVhZGluZwogICAgICAgICAgICAncnxneicgICAgICAgb3BlbiBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwpAQCAtMTU4Myw3ICsxNTkyLDcgQEAKICAgICAgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHQKIAotICAgICAgICBlbGlmIG1vZGUgaW4gKCJhIiwgInciKToKKyAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgIHJldHVybiBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmRpc2Nlcm5pYmxlIG1vZGUiKQpAQCAtMTU5Miw4ICsxNjAxLDggQEAKICAgICBkZWYgdGFyb3BlbihjbHMsIG5hbWUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiT3BlbiB1bmNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgImEiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJhIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnLCAndycgb3IgJ3gnIikKICAgICAgICAgcmV0dXJuIGNscyhuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTYwMSw4ICsxNjEwLDggQEAKICAgICAgICAgIiIiT3BlbiBnemlwIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAgICBBcHBlbmRpbmcgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgICIiIgotICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJyBvciAndyciKQorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAndycgb3IgJ3gnIikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgZ3ppcApAQCAtMTYzNSw4ICsxNjQ0LDggQEAKICAgICAgICAgIiIiT3BlbiBiemlwMiBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnLiIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgIngiKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBiejIKQEAgLTE2NjQsOCArMTY3Myw4IEBACiAgICAgICAgICIiIk9wZW4gbHptYSBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnIikKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3cnIG9yICd4JyIpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGx6bWEKQEAgLTE3MDcsNyArMTcxNiw3IEBACiAKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoTlVMICogKEJMT0NLU0laRSAqIDIpKQogICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IChCTE9DS1NJWkUgKiAyKQogICAgICAgICAgICAgICAgICMgZmlsbCB1cCB0aGUgZW5kIHdpdGggemVyby1ibG9ja3MKQEAgLTE3NTMsNyArMTc2Miw3IEBACiAgICAgICAgICAgIGFkZGZpbGUoKS4gSWYgZ2l2ZW4sIGBhcmNuYW1lJyBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlCiAgICAgICAgICAgIGZpbGUgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICAjIFdoZW4gZmlsZW9iaiBpcyBnaXZlbiwgcmVwbGFjZSBuYW1lIGJ5CiAgICAgICAgICMgZmlsZW9iaidzIHJlYWwgbmFtZS4KQEAgLTE4NDQsMTQgKzE4NTMsMTcgQEAKICAgICAgICAgICAgICAgICB0YXJpbmZvLmRldm1pbm9yID0gb3MubWlub3Ioc3RhdHJlcy5zdF9yZGV2KQogICAgICAgICByZXR1cm4gdGFyaW5mbwogCi0gICAgZGVmIGxpc3Qoc2VsZiwgdmVyYm9zZT1UcnVlKToKKyAgICBkZWYgbGlzdChzZWxmLCB2ZXJib3NlPVRydWUsICosIG1lbWJlcnM9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgdGFibGUgb2YgY29udGVudHMgdG8gc3lzLnN0ZG91dC4gSWYgYHZlcmJvc2UnIGlzIEZhbHNlLCBvbmx5CiAgICAgICAgICAgIHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgVHJ1ZSwgYW4gYGxzIC1sJy1saWtlCi0gICAgICAgICAgIG91dHB1dCBpcyBwcm9kdWNlZC4KKyAgICAgICAgICAgb3V0cHV0IGlzIHByb2R1Y2VkLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCisgICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soKQogCi0gICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGY6CisgICAgICAgIGlmIG1lbWJlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIG1lbWJlcnMgPSBzZWxmCisgICAgICAgIGZvciB0YXJpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIF9zYWZlX3ByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSkKICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCkBAIC0xODg0LDcgKzE4OTYsNyBAQAogICAgICAgICAgICBUYXJJbmZvIG9iamVjdCwgaWYgaXQgcmV0dXJucyBOb25lIHRoZSBUYXJJbmZvIG9iamVjdCB3aWxsIGJlCiAgICAgICAgICAgIGV4Y2x1ZGVkIGZyb20gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBhcmNuYW1lID0gbmFtZQpAQCAtMTk0MSw3ICsxOTUzLDcgQEAKICAgICAgICAgICAgT24gV2luZG93cyBwbGF0Zm9ybXMsIGBmaWxlb2JqJyBzaG91bGQgYWx3YXlzIGJlIG9wZW5lZCB3aXRoIG1vZGUKICAgICAgICAgICAgJ3JiJyB0byBhdm9pZCBpcnJpdGF0aW9uIGFib3V0IHRoZSBmaWxlIHNpemUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICB0YXJpbmZvID0gY29weS5jb3B5KHRhcmluZm8pCiAKQEAgLTE5NjAsMTIgKzE5NzIsMTMgQEAKIAogICAgICAgICBzZWxmLm1lbWJlcnMuYXBwZW5kKHRhcmluZm8pCiAKLSAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lKToKKyAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKToKICAgICAgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBzZXQgb3duZXIsIG1vZGlmaWNhdGlvbiB0aW1lIGFuZCBwZXJtaXNzaW9ucyBvbgogICAgICAgICAgICBkaXJlY3RvcmllcyBhZnRlcndhcmRzLiBgcGF0aCcgc3BlY2lmaWVzIGEgZGlmZmVyZW50IGRpcmVjdG9yeQogICAgICAgICAgICB0byBleHRyYWN0IHRvLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCi0gICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgorICAgICAgICAgICBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4gSWYgYG51bWVyaWNfb3duZXJgIGlzIFRydWUsIG9ubHkKKyAgICAgICAgICAgdGhlIG51bWJlcnMgZm9yIHVzZXIvZ3JvdXAgbmFtZXMgYXJlIHVzZWQgYW5kIG5vdCB0aGUgbmFtZXMuCiAgICAgICAgICIiIgogICAgICAgICBkaXJlY3RvcmllcyA9IFtdCiAKQEAgLTE5NzksNyArMTk5Miw4IEBACiAgICAgICAgICAgICAgICAgdGFyaW5mbyA9IGNvcHkuY29weSh0YXJpbmZvKQogICAgICAgICAgICAgICAgIHRhcmluZm8ubW9kZSA9IDBvNzAwCiAgICAgICAgICAgICAjIERvIG5vdCBzZXRfYXR0cnMgZGlyZWN0b3JpZXMsIGFzIHdlIHdpbGwgZG8gdGhhdCBmdXJ0aGVyIGRvd24KLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSkKKyAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAKICAgICAgICAgIyBSZXZlcnNlIHNvcnQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGRpcmVjdG9yaWVzLnNvcnQoa2V5PWxhbWJkYSBhOiBhLm5hbWUpCkBAIC0xOTg5LDcgKzIwMDMsNyBAQAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBkaXJlY3RvcmllczoKICAgICAgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgdGFyaW5mby5uYW1lKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgZGlycGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIGRpcnBhdGgsIG51bWVyaWNfb3duZXI9bnVtZXJpY19vd25lcikKICAgICAgICAgICAgICAgICBzZWxmLnV0aW1lKHRhcmluZm8sIGRpcnBhdGgpCiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCBkaXJwYXRoKQogICAgICAgICAgICAgZXhjZXB0IEV4dHJhY3RFcnJvciBhcyBlOgpAQCAtMTk5OCwxMiArMjAxMiwxNCBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiZygxLCAidGFyZmlsZTogJXMiICUgZSkKIAotICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpOgorICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUsICosIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCiAgICAgICAgICAgIHVzaW5nIGl0cyBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5CiAgICAgICAgICAgIGFzIHBvc3NpYmxlLiBgbWVtYmVyJyBtYXkgYmUgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBZb3UgY2FuCiAgICAgICAgICAgIHNwZWNpZnkgYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHVzaW5nIGBwYXRoJy4gRmlsZSBhdHRyaWJ1dGVzIChvd25lciwKLSAgICAgICAgICAgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzIGBzZXRfYXR0cnMnIGlzIEZhbHNlLgorICAgICAgICAgICBtdGltZSwgbW9kZSkgYXJlIHNldCB1bmxlc3MgYHNldF9hdHRycycgaXMgRmFsc2UuIElmIGBudW1lcmljX293bmVyYAorICAgICAgICAgICBpcyBUcnVlLCBvbmx5IHRoZSBudW1iZXJzIGZvciB1c2VyL2dyb3VwIG5hbWVzIGFyZSB1c2VkIGFuZCBub3QKKyAgICAgICAgICAgdGhlIG5hbWVzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMDE4LDcgKzIwMzQsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4dHJhY3RfbWVtYmVyKHRhcmluZm8sIG9zLnBhdGguam9pbihwYXRoLCB0YXJpbmZvLm5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2F0dHJzPXNldF9hdHRycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdHRycz1zZXRfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBzZWxmLmVycm9ybGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0yMDY0LDcgKzIwODEsOCBAQAogICAgICAgICAgICAgIyBibGtkZXYsIGV0Yy4pLCByZXR1cm4gTm9uZSBpbnN0ZWFkIG9mIGEgZmlsZSBvYmplY3QuCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSk6CisgICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IHRoZSBUYXJJbmZvIG9iamVjdCB0YXJpbmZvIHRvIGEgcGh5c2ljYWwKICAgICAgICAgICAgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KICAgICAgICAgIiIiCkBAIC0yMTAyLDcgKzIxMjAsNyBAQAogICAgICAgICAgICAgc2VsZi5tYWtlZmlsZSh0YXJpbmZvLCB0YXJnZXRwYXRoKQogCiAgICAgICAgIGlmIHNldF9hdHRyczoKLSAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCkKKyAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcikKICAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCB0YXJnZXRwYXRoKQogICAgICAgICAgICAgICAgIHNlbGYudXRpbWUodGFyaW5mbywgdGFyZ2V0cGF0aCkKQEAgLTIxOTEsMTkgKzIyMDksMjQgQEAKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoInVuYWJsZSB0byByZXNvbHZlIGxpbmsgaW5zaWRlIGFyY2hpdmUiKQogCi0gICAgZGVmIGNob3duKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgotICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4KKyAgICBkZWYgY2hvd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcik6CisgICAgICAgICIiIlNldCBvd25lciBvZiB0YXJnZXRwYXRoIGFjY29yZGluZyB0byB0YXJpbmZvLiBJZiBudW1lcmljX293bmVyCisgICAgICAgICAgIGlzIFRydWUsIHVzZSAuZ2lkLy51aWQgaW5zdGVhZCBvZiAuZ25hbWUvLnVuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgaWYgcHdkIGFuZCBoYXNhdHRyKG9zLCAiZ2V0ZXVpZCIpIGFuZCBvcy5nZXRldWlkKCkgPT0gMDoKICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSByb290IHRvIGRvIHNvLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGlmIG51bWVyaWNfb3duZXI6CiAgICAgICAgICAgICAgICAgZyA9IHRhcmluZm8uZ2lkCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgdSA9IHRhcmluZm8udWlkCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxjaG93bih0YXJnZXRwYXRoLCB1LCBnKQpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNTE3MzhmMC4uNzJkYWJjNyAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC0zNiwxMCArMzYsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiBfX2FsbF9fID0gWyJUZWxuZXQiXQogCkBAIC0yNjUsOCArMjYyLDggQEAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uLiIiIgogICAgICAgICBzb2NrID0gc2VsZi5zb2NrCi0gICAgICAgIHNlbGYuc29jayA9IDAKLSAgICAgICAgc2VsZi5lb2YgPSAxCisgICAgICAgIHNlbGYuc29jayA9IE5vbmUKKyAgICAgICAgc2VsZi5lb2YgPSBUcnVlCiAgICAgICAgIHNlbGYuaWFjc2VxID0gYicnCiAgICAgICAgIHNlbGYuc2IgPSAwCiAgICAgICAgIGlmIHNvY2s6CmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggMDUzNzIyOC4uMmYxZjlmZCAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNiw2ICs2LDE0IEBACiBleGNlcHQgZm9yICdta3RlbXAnLiAgJ21rdGVtcCcgaXMgc3ViamVjdCB0byByYWNlIGNvbmRpdGlvbnMgYW5kCiBzaG91bGQgbm90IGJlIHVzZWQ7IGl0IGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkuCiAKK1RoZSBkZWZhdWx0IHBhdGggbmFtZXMgYXJlIHJldHVybmVkIGFzIHN0ci4gIElmIHlvdSBzdXBwbHkgYnl0ZXMgYXMKK2lucHV0LCBhbGwgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluIGJ5dGVzLiAgRXg6CisKKyAgICA+Pj4gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgKDQsICcvdG1wL3RtcHRwdTluaW44JykKKyAgICA+Pj4gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9YicnKQorICAgIGInL3RtcC90bXBwYmk4ZjBoeScKKwogVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyBzb21lIGRhdGEgaXRlbXMgdG8gdGhlIHVzZXI6CiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCkBAIC0yMSw3ICsyOSw4IEBACiAgICAgIm1rc3RlbXAiLCAibWtkdGVtcCIsICAgICAgICAgICAgICAgICAgIyBsb3cgbGV2ZWwgc2FmZSBpbnRlcmZhY2VzCiAgICAgIm1rdGVtcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkIHVuc2FmZSBpbnRlcmZhY2UKICAgICAiVE1QX01BWCIsICJnZXR0ZW1wcHJlZml4IiwgICAgICAgICAgICAjIGNvbnN0YW50cwotICAgICJ0ZW1wZGlyIiwgImdldHRlbXBkaXIiCisgICAgInRlbXBkaXIiLCAiZ2V0dGVtcGRpciIsCisgICAgImdldHRlbXBwcmVmaXhiIiwgImdldHRlbXBkaXJiIiwKICAgIF0KIAogCkBAIC01NSw4ICs2NCwxMCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAotIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcwotIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCisjIFRoaXMgdmFyaWFibGUgX3dhc18gdW51c2VkIGZvciBsZWdhY3kgcmVhc29ucywgc2VlIGlzc3VlIDEwMzU0LgorIyBCdXQgYXMgb2YgMy41IHdlIGFjdHVhbGx5IHVzZSBpdCBhdCBydW50aW1lIHNvIGNoYW5naW5nIGl0IHdvdWxkCisjIGhhdmUgYSBwb3NzaWJseSBkZXNpcmFibGUgc2lkZSBlZmZlY3QuLi4gIEJ1dCB3ZSBkbyBub3Qgd2FudCB0byBzdXBwb3J0CisjIHRoYXQgYXMgYW4gQVBJLiAgSXQgaXMgdW5kb2N1bWVudGVkIG9uIHB1cnBvc2UuICBEbyBub3QgZGVwZW5kIG9uIHRoaXMuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04Miw2ICs5Myw0NiBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBUcnVlCiAKKworZGVmIF9pbmZlcl9yZXR1cm5fdHlwZSgqYXJncyk6CisgICAgIiIiTG9vayBhdCB0aGUgdHlwZSBvZiBhbGwgYXJncyBhbmQgZGl2aW5lIHRoZWlyIGltcGxpZWQgcmV0dXJuIHR5cGUuIiIiCisgICAgcmV0dXJuX3R5cGUgPSBOb25lCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBieXRlcyk6CisgICAgICAgICAgICBpZiByZXR1cm5fdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggYnl0ZXMgYW5kIG5vbi1ieXRlcyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJldHVybl90eXBlID0gYnl0ZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJldHVybl90eXBlIGlzIGJ5dGVzOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IGJ5dGVzIGFuZCBub24tYnl0ZXMgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCBjb21wb25lbnRzLiIpCisgICAgICAgICAgICByZXR1cm5fdHlwZSA9IHN0cgorICAgIGlmIHJldHVybl90eXBlIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBzdHIgICMgdGVtcGZpbGUgQVBJcyByZXR1cm4gYSBzdHIgYnkgZGVmYXVsdC4KKyAgICByZXR1cm4gcmV0dXJuX3R5cGUKKworCitkZWYgX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKToKKyAgICAiIiJDb21tb24gcGFyYW1ldGVyIHByb2Nlc3NpbmcgZm9yIG1vc3QgQVBJcyBpbiB0aGlzIG1vZHVsZS4iIiIKKyAgICBvdXRwdXRfdHlwZSA9IF9pbmZlcl9yZXR1cm5fdHlwZShwcmVmaXgsIHN1ZmZpeCwgZGlyKQorICAgIGlmIHN1ZmZpeCBpcyBOb25lOgorICAgICAgICBzdWZmaXggPSBvdXRwdXRfdHlwZSgpCisgICAgaWYgcHJlZml4IGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIHByZWZpeCA9IHRlbXBsYXRlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSBfb3MuZnNlbmNvZGUodGVtcGxhdGUpCisgICAgaWYgZGlyIGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlyID0gZ2V0dGVtcGRpcmIoKQorICAgIHJldHVybiBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZQorCisKIGNsYXNzIF9SYW5kb21OYW1lU2VxdWVuY2U6CiAgICAgIiIiQW4gaW5zdGFuY2Ugb2YgX1JhbmRvbU5hbWVTZXF1ZW5jZSBnZW5lcmF0ZXMgYW4gZW5kbGVzcwogICAgIHNlcXVlbmNlIG9mIHVucHJlZGljdGFibGUgc3RyaW5ncyB3aGljaCBjYW4gc2FmZWx5IGJlIGluY29ycG9yYXRlZApAQCAtMTk1LDE3ICsyNDYsMTggQEAKICAgICByZXR1cm4gX25hbWVfc2VxdWVuY2UKIAogCi1kZWYgX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MpOgorZGVmIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzLCBvdXRwdXRfdHlwZSk6CiAgICAgIiIiQ29kZSBjb21tb24gdG8gbWtzdGVtcCwgVGVtcG9yYXJ5RmlsZSwgYW5kIE5hbWVkVGVtcG9yYXJ5RmlsZS4iIiIKIAogICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQorICAgIGlmIG91dHB1dF90eXBlIGlzIGJ5dGVzOgorICAgICAgICBuYW1lcyA9IG1hcChfb3MuZnNlbmNvZGUsIG5hbWVzKQogCiAgICAgZm9yIHNlcSBpbiByYW5nZShUTVBfTUFYKToKICAgICAgICAgbmFtZSA9IG5leHQobmFtZXMpCiAgICAgICAgIGZpbGUgPSBfb3MucGF0aC5qb2luKGRpciwgcHJlICsgbmFtZSArIHN1ZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihmaWxlLCBmbGFncywgMG82MDApCi0gICAgICAgICAgICByZXR1cm4gKGZkLCBfb3MucGF0aC5hYnNwYXRoKGZpbGUpKQogICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKQEAgLTIxNiw2ICsyNjgsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCiAKICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoX2Vycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIGZvdW5kIikKQEAgLTIyNCw5ICsyNzcsMTMgQEAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCiAKIGRlZiBnZXR0ZW1wcHJlZml4KCk6Ci0gICAgIiIiQWNjZXNzb3IgZm9yIHRlbXBkaXIudGVtcGxhdGUuIiIiCisgICAgIiIiVGhlIGRlZmF1bHQgcHJlZml4IGZvciB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuIiIiCiAgICAgcmV0dXJuIHRlbXBsYXRlCiAKK2RlZiBnZXR0ZW1wcHJlZml4YigpOgorICAgICIiIlRoZSBkZWZhdWx0IHByZWZpeCBmb3IgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFzIGJ5dGVzLiIiIgorICAgIHJldHVybiBfb3MuZnNlbmNvZGUoZ2V0dGVtcHByZWZpeCgpKQorCiB0ZW1wZGlyID0gTm9uZQogCiBkZWYgZ2V0dGVtcGRpcigpOgpAQCAtMjQxLDcgKzI5OCwxMSBAQAogICAgICAgICAgICAgX29uY2VfbG9jay5yZWxlYXNlKCkKICAgICByZXR1cm4gdGVtcGRpcgogCi1kZWYgbWtzdGVtcChzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUsIHRleHQ9RmFsc2UpOgorZGVmIGdldHRlbXBkaXJiKCk6CisgICAgIiIiQSBieXRlcyB2ZXJzaW9uIG9mIHRlbXBmaWxlLmdldHRlbXBkaXIoKS4iIiIKKyAgICByZXR1cm4gX29zLmZzZW5jb2RlKGdldHRlbXBkaXIoKSkKKworZGVmIG1rc3RlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSk6CiAgICAgIiIiVXNlci1jYWxsYWJsZSBmdW5jdGlvbiB0byBjcmVhdGUgYW5kIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkKICAgICBmaWxlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgKGZkLCBuYW1lKSB3aGVyZSBmZCBpcyB0aGUKICAgICBmaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgb3Mub3BlbiwgYW5kIG5hbWUgaXMgdGhlIGZpbGVuYW1lLgpAQCAtMjU5LDYgKzMyMCwxMCBAQAogICAgIG1vZGUuICBFbHNlICh0aGUgZGVmYXVsdCkgdGhlIGZpbGUgaXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlLiAgT24KICAgICBzb21lIG9wZXJhdGluZyBzeXN0ZW1zLCB0aGlzIG1ha2VzIG5vIGRpZmZlcmVuY2UuCiAKKyAgICBzdWZmaXgsIHByZWZpeCBhbmQgZGlyIG11c3QgYWxsIGNvbnRhaW4gdGhlIHNhbWUgdHlwZSBpZiBzcGVjaWZpZWQuCisgICAgSWYgdGhleSBhcmUgYnl0ZXMsIHRoZSByZXR1cm5lZCBuYW1lIHdpbGwgYmUgYnl0ZXM7IHN0ciBvdGhlcndpc2UuCisgICAgQSB2YWx1ZSBvZiBOb25lIHdpbGwgY2F1c2UgYW4gYXBwcm9wcmlhdGUgZGVmYXVsdCB0byBiZSB1c2VkLgorCiAgICAgVGhlIGZpbGUgaXMgcmVhZGFibGUgYW5kIHdyaXRhYmxlIG9ubHkgYnkgdGhlIGNyZWF0aW5nIHVzZXIgSUQuCiAgICAgSWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdXNlcyBwZXJtaXNzaW9uIGJpdHMgdG8gaW5kaWNhdGUgd2hldGhlciBhCiAgICAgZmlsZSBpcyBleGVjdXRhYmxlLCB0aGUgZmlsZSBpcyBleGVjdXRhYmxlIGJ5IG5vIG9uZS4gVGhlIGZpbGUKQEAgLTI2NywxOCArMzMyLDE3IEBACiAgICAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgZmlsZSB3aGVuIGRvbmUgd2l0aCBpdC4KICAgICAiIiIKIAotICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgIGlmIHRleHQ6CiAgICAgICAgIGZsYWdzID0gX3RleHRfb3BlbmZsYWdzCiAgICAgZWxzZToKICAgICAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncwogCi0gICAgcmV0dXJuIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgIHJldHVybiBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAKIAotZGVmIG1rZHRlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKK2RlZiBta2R0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpOgogICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5CiAgICAgZGlyZWN0b3J5LiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4KIApAQCAtMjkxLDE3ICszNTUsMTcgQEAKICAgICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBkaXJlY3Rvcnkgd2hlbiBkb25lIHdpdGggaXQuCiAgICAgIiIiCiAKLSAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgZGlyID0gZ2V0dGVtcGRpcigpCisgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCiAKICAgICBuYW1lcyA9IF9nZXRfY2FuZGlkYXRlX25hbWVzKCkKKyAgICBpZiBvdXRwdXRfdHlwZSBpcyBieXRlczoKKyAgICAgICAgbmFtZXMgPSBtYXAoX29zLmZzZW5jb2RlLCBuYW1lcykKIAogICAgIGZvciBzZXEgaW4gcmFuZ2UoVE1QX01BWCk6CiAgICAgICAgIG5hbWUgPSBuZXh0KG5hbWVzKQogICAgICAgICBmaWxlID0gX29zLnBhdGguam9pbihkaXIsIHByZWZpeCArIG5hbWUgKyBzdWZmaXgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9vcy5ta2RpcihmaWxlLCAwbzcwMCkKLSAgICAgICAgICAgIHJldHVybiBmaWxlCiAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgpAQCAtMzEyLDYgKzM3Niw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIGZpbGUKIAogICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihfZXJybm8uRUVYSVNULAogICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCkBAIC0zMjMsOCArMzg4LDggQEAKICAgICBBcmd1bWVudHMgYXJlIGFzIGZvciBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCiAgICAgbm90IGFjY2VwdGVkLgogCi0gICAgVGhpcyBmdW5jdGlvbiBpcyB1bnNhZmUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gIFRoZSBmaWxlIG5hbWUKLSAgICByZWZlcnMgdG8gYSBmaWxlIHRoYXQgZGlkIG5vdCBleGlzdCBhdCBzb21lIHBvaW50LCBidXQgYnkgdGhlIHRpbWUKKyAgICBUSElTIEZVTkNUSU9OIElTIFVOU0FGRSBBTkQgU0hPVUxEIE5PVCBCRSBVU0VELiAgVGhlIGZpbGUgbmFtZSBtYXkKKyAgICByZWZlciB0byBhIGZpbGUgdGhhdCBkaWQgbm90IGV4aXN0IGF0IHNvbWUgcG9pbnQsIGJ1dCBieSB0aGUgdGltZQogICAgIHlvdSBnZXQgYXJvdW5kIHRvIGNyZWF0aW5nIGl0LCBzb21lb25lIGVsc2UgbWF5IGhhdmUgYmVhdGVuIHlvdSB0bwogICAgIHRoZSBwdW5jaC4KICAgICAiIiIKQEAgLTQ1NCw3ICs1MTksNyBAQAogCiAKIGRlZiBOYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBhIHRlbXBvcmFyeSBmaWxlLgogICAgIEFyZ3VtZW50czoKQEAgLTQ3MSw4ICs1MzYsNyBAQAogICAgIHdoZW4gaXQgaXMgY2xvc2VkIHVubGVzcyB0aGUgJ2RlbGV0ZScgYXJndW1lbnQgaXMgc2V0IHRvIEZhbHNlLgogICAgICIiIgogCi0gICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQogCiAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncwogCkBAIC00ODEsNyArNTQ1LDcgQEAKICAgICBpZiBfb3MubmFtZSA9PSAnbnQnIGFuZCBkZWxldGU6CiAgICAgICAgIGZsYWdzIHw9IF9vcy5PX1RFTVBPUkFSWQogCi0gICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgIChmZCwgbmFtZSkgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAgICAgdHJ5OgogICAgICAgICBmaWxlID0gX2lvLm9wZW4oZmQsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPW5ld2xpbmUsIGVuY29kaW5nPWVuY29kaW5nKQpAQCAtNDk3LDggKzU2MSwxMyBAQAogICAgIFRlbXBvcmFyeUZpbGUgPSBOYW1lZFRlbXBvcmFyeUZpbGUKIAogZWxzZToKKyAgICAjIElzIHRoZSBPX1RNUEZJTEUgZmxhZyBhdmFpbGFibGUgYW5kIGRvZXMgaXQgd29yaz8KKyAgICAjIFRoZSBmbGFnIGlzIHNldCB0byBGYWxzZSBpZiBvcy5vcGVuKGRpciwgb3MuT19UTVBGSUxFKSByYWlzZXMgYW4KKyAgICAjIElzQURpcmVjdG9yeUVycm9yIGV4Y2VwdGlvbgorICAgIF9PX1RNUEZJTEVfV09SS1MgPSBoYXNhdHRyKF9vcywgJ09fVE1QRklMRScpCisKICAgICBkZWYgVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICBkaXI9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGEgdGVtcG9yYXJ5IGZpbGUuCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTUxMiwxMyArNTgxLDMzIEBACiAgICAgICAgIFJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBmaWxlLWxpa2UgaW50ZXJmYWNlLiAgVGhlIGZpbGUgaGFzIG5vCiAgICAgICAgIG5hbWUsIGFuZCB3aWxsIGNlYXNlIHRvIGV4aXN0IHdoZW4gaXQgaXMgY2xvc2VkLgogICAgICAgICAiIiIKKyAgICAgICAgZ2xvYmFsIF9PX1RNUEZJTEVfV09SS1MKIAotICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgICAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgICAgICBmbGFncyA9IF9iaW5fb3BlbmZsYWdzCisgICAgICAgIGlmIF9PX1RNUEZJTEVfV09SS1M6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmxhZ3MyID0gKGZsYWdzIHwgX29zLk9fVE1QRklMRSkgJiB+X29zLk9fQ1JFQVQKKyAgICAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGRpciwgZmxhZ3MyLCAwbzYwMCkKKyAgICAgICAgICAgIGV4Y2VwdCBJc0FEaXJlY3RvcnlFcnJvcjoKKyAgICAgICAgICAgICAgICAjIExpbnV4IGtlcm5lbCBvbGRlciB0aGFuIDMuMTEgaWdub3JlcyBPX1RNUEZJTEUgZmxhZy4KKyAgICAgICAgICAgICAgICAjIFNldCBmbGFnIHRvIEZhbHNlIHRvIG5vdCB0cnkgYWdhaW4uCisgICAgICAgICAgICAgICAgX09fVE1QRklMRV9XT1JLUyA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSBmaWxlc3lzdGVtIG9mIHRoZSBkaXJlY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBPX1RNUEZJTEUuCisgICAgICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgT1NFcnJvcig5NSwgJ09wZXJhdGlvbiBub3Qgc3VwcG9ydGVkJykuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfaW8ub3BlbihmZCwgbW9kZSwgYnVmZmVyaW5nPWJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9bmV3bGluZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICBfb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIF9ta3N0ZW1wX2lubmVyKCkuCiAKLSAgICAgICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgICAgICAoZmQsIG5hbWUpID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MsIG91dHB1dF90eXBlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MudW5saW5rKG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gX2lvLm9wZW4oZmQsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCkBAIC01MzYsNyArNjI1LDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfc2l6ZT0wLCBtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsCiAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIG5ld2xpbmU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKKyAgICAgICAgICAgICAgICAgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSk6CiAgICAgICAgIGlmICdiJyBpbiBtb2RlOgogICAgICAgICAgICAgc2VsZi5fZmlsZSA9IF9pby5CeXRlc0lPKCkKICAgICAgICAgZWxzZToKQEAgLTY4Nyw3ICs3NzYsNyBAQAogICAgIGluIGl0IGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpOgogICAgICAgICBzZWxmLm5hbWUgPSBta2R0ZW1wKHN1ZmZpeCwgcHJlZml4LCBkaXIpCiAgICAgICAgIHNlbGYuX2ZpbmFsaXplciA9IF93ZWFrcmVmLmZpbmFsaXplKAogICAgICAgICAgICAgc2VsZiwgc2VsZi5fY2xlYW51cCwgc2VsZi5uYW1lLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDIwNGQ4OTQuLmU5MTIwYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE5LDcgKzE5LDcgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHRlc3Quc3VwcG9ydAotaW1wb3J0IHRlc3Quc2NyaXB0X2hlbHBlcgoraW1wb3J0IHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyCiAKIAogIyBTa2lwIHRlc3RzIGlmIF9tdWx0aXByb2Nlc3Npbmcgd2Fzbid0IGJ1aWx0LgpAQCAtMjYyNCw3ICsyNjI0LDcgQEAKIAogICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIGwuYmluZCgodGVzdC5zdXBwb3J0LkhPU1QsIDApKQotICAgICAgICBsLmxpc3RlbigxKQorICAgICAgICBsLmxpc3RlbigpCiAgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCiAgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQogICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCkBAIC0zMjcxLDcgKzMyNzEsNyBAQAogICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CiAgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgbC5iaW5kKCh0ZXN0LnN1cHBvcnQuSE9TVCwgMCkpCi0gICAgICAgIGwubGlzdGVuKDQpCisgICAgICAgIGwubGlzdGVuKCkKICAgICAgICAgYWRkciA9IGwuZ2V0c29ja25hbWUoKQogICAgICAgICByZWFkZXJzID0gW10KICAgICAgICAgcHJvY3MgPSBbXQpAQCAtMzQ4MywxMSArMzQ4MywxMSBAQAogICAgICAgICBzbSA9IG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkKICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnbXBfZm9ya19ib21iLnB5JykKICAgICAgICAgaWYgc20gIT0gJ2ZvcmsnOgotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZShuYW1lLCBzbSkKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZShuYW1lLCBzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInUnVudGltZUVycm9yJywgZXJyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2sobmFtZSwgc20pCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKG5hbWUsIHNtKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQucnN0cmlwKCksIGInMTIzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MDQ0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CkBAIC0wLDAgKzEsMyBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjJhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CkBAIC0wLDAgKzEsMyBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIGRlZiBmb28oYTphd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZTFiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmRhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIGFzeW5jIGRlZiBmb28oKTogYXdhaXQgc29tZXRoaW5nKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMTlhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIGZvbygpOgorICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjBhMjNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICB5aWVsZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlNGJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgeWllbGQgZnJvbSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2MzZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM5LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDMzYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOS5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCA4ZTQ4YjlmLi5iYWJlYjQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtMyw2ICszLDcgQEAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgogCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQpAQCAtNTAsNiArNTEsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZS5NSU5ZRUFSLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLk1BWFlFQVIsIDk5OTkpCiAKKyAgICBkZWYgdGVzdF9uYW1lX2NsZWFudXAoc2VsZik6CisgICAgICAgIGlmICdfRmFzdCcgbm90IGluIHN0cihzZWxmKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkYXRldGltZSA9IGRhdGV0aW1lX21vZHVsZQorICAgICAgICBuYW1lcyA9IHNldChuYW1lIGZvciBuYW1lIGluIGRpcihkYXRldGltZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoJ19fJykpCisgICAgICAgIGFsbG93ZWQgPSBzZXQoWydNQVhZRUFSJywgJ01JTllFQVInLCAnZGF0ZScsICdkYXRldGltZScsCisgICAgICAgICAgICAgICAgICAgICAgICdkYXRldGltZV9DQVBJJywgJ3RpbWUnLCAndGltZWRlbHRhJywgJ3RpbWV6b25lJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ3R6aW5mbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVzIC0gYWxsb3dlZCwgc2V0KFtdKSkKKwogICAgIGRlZiB0ZXN0X2RpdmlkZV9hbmRfcm91bmQoc2VsZik6CiAgICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuCkBAIC02NTAsOCArNjYyLDEyIEBACiAgICAgICAgICMgU2luZ2xlLWZpZWxkIHJvdW5kaW5nLgogICAgICAgICBlcSh0ZChtaWxsaXNlY29uZHM9MC40LzEwMDApLCB0ZCgwKSkgICAgIyByb3VuZHMgdG8gMAogICAgICAgICBlcSh0ZChtaWxsaXNlY29uZHM9LTAuNC8xMDAwKSwgdGQoMCkpICAgICMgcm91bmRzIHRvIDAKKyAgICAgICAgZXEodGQobWlsbGlzZWNvbmRzPTAuNS8xMDAwKSwgdGQobWljcm9zZWNvbmRzPTApKQorICAgICAgICBlcSh0ZChtaWxsaXNlY29uZHM9LTAuNS8xMDAwKSwgdGQobWljcm9zZWNvbmRzPTApKQogICAgICAgICBlcSh0ZChtaWxsaXNlY29uZHM9MC42LzEwMDApLCB0ZChtaWNyb3NlY29uZHM9MSkpCiAgICAgICAgIGVxKHRkKG1pbGxpc2Vjb25kcz0tMC42LzEwMDApLCB0ZChtaWNyb3NlY29uZHM9LTEpKQorICAgICAgICBlcSh0ZChzZWNvbmRzPTAuNS8xMCoqNiksIHRkKG1pY3Jvc2Vjb25kcz0wKSkKKyAgICAgICAgZXEodGQoc2Vjb25kcz0tMC41LzEwKio2KSwgdGQobWljcm9zZWNvbmRzPTApKQogCiAgICAgICAgICMgUm91bmRpbmcgZHVlIHRvIGNvbnRyaWJ1dGlvbnMgZnJvbSBtb3JlIHRoYW4gb25lIGZpZWxkLgogICAgICAgICB1c19wZXJfaG91ciA9IDM2MDBlNgpAQCAtMTE2NSwxMSArMTE4MSwxMyBAQAogICAgICAgICAjY2hlY2sgdGhhdCB0aGlzIHN0YW5kYXJkIGV4dGVuc2lvbiB3b3JrcwogICAgICAgICB0LnN0cmZ0aW1lKCIlZiIpCiAKLQogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0Ll9fZm9ybWF0X18oJycpLCBzdHIoZHQpKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdebXVzdCBiZSBzdHIsIG5vdCBpbnQkJyk6CisgICAgICAgICAgICBkdC5fX2Zvcm1hdF9fKDEyMykKKwogICAgICAgICAjIGNoZWNrIHRoYXQgYSBkZXJpdmVkIGNsYXNzJ3MgX19zdHJfXygpIGdldHMgY2FsbGVkCiAgICAgICAgIGNsYXNzIEEoc2VsZi50aGVjbGFzcyk6CiAgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTEzMjEsOCArMTMzOSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIExhcmdlclRoYW5Bbnl0aGluZykKICAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCi0gICAgICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbm90IGlzaW5zdGFuY2Uob3RoZXIsIExhcmdlclRoYW5Bbnl0aGluZykKICAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShvdGhlciwgTGFyZ2VyVGhhbkFueXRoaW5nKQogICAgICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CkBAIC0xNDI1LDkgKzE0NDEsMTAgQEAKICAgICAgICAgZm9yIG1vbnRoX2J5dGUgaW4gYic5JywgYidcMCcsIGInXHInLCBiJ1x4ZmYnOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnRoZWNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlWzoyXSArIG1vbnRoX2J5dGUgKyBiYXNlWzM6XSkKLSAgICAgICAgIyBHb29kIGJ5dGVzLCBidXQgYmFkIHR6aW5mbzoKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnRoZWNsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyhbMV0gKiBsZW4oYmFzZSkpLCAnRVNUJykKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhzZWxmLnRoZWNsYXNzLCBkYXRldGltZSk6CisgICAgICAgICAgICAjIEdvb2QgYnl0ZXMsIGJ1dCBiYWQgdHppbmZvOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15iYWQgdHppbmZvIHN0YXRlIGFyZyQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzKGJ5dGVzKFsxXSAqIGxlbihiYXNlKSksICdFU1QnKQogCiAgICAgICAgIGZvciBvcmRfYnl0ZSBpbiByYW5nZSgxLCAxMyk6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb3cgdXAgYmVjYXVzZSBvZiB0aGUgbW9udGggYnl0ZSBhbG9uZS4gIElmCkBAIC0xNTAzLDYgKzE1MjAsOSBAQAogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAwNywgOSwgMTAsIDQsIDUsIDEsIDEyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5fX2Zvcm1hdF9fKCcnKSwgc3RyKGR0KSkKIAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXm11c3QgYmUgc3RyLCBub3QgaW50JCcpOgorICAgICAgICAgICAgZHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xODI0LDYgKzE4NDQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89dGltZXpvbmUodGltZWRlbHRhKGhvdXJzPS01KSwgJ0VTVCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCisKICAgICBkZWYgdGVzdF9taWNyb3NlY29uZF9yb3VuZGluZyhzZWxmKToKICAgICAgICAgZm9yIGZ0cyBpbiBbc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXBdOgpAQCAtMTg3NCw2ICsxODk1LDcgQEAKICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbmRvd3MgZG9lc24ndCBhY2NlcHQgbmVnYXRpdmUgdGltZXN0YW1wcyIpCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfZmxvYXRfZnJvbXRpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBUaGUgcmVzdWx0IGlzIHR6LWRlcGVuZGVudDsgYXQgbGVhc3QgdGVzdCB0aGF0IHRoaXMgZG9lc24ndApAQCAtMjI1Myw2ICsyMjc1LDkgQEAKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Ll9fZm9ybWF0X18oJycpLCBzdHIodCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0yMzE2LDEzICsyMzQxLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCiAKICAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHRpbWUgaXMgYWx3YXlzIFRydWUuCiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAwLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbHMoMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoKSkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTIzODEsNiArMjQwNyw5IEBACiAgICAgICAgIGZvciBob3VyX2J5dGUgaW4gJyAnLCAnOScsIGNocigyNCksICdceGZmJzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cl9ieXRlICsgYmFzZVsxOl0pCisgICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYmFkIHR6aW5mbyBzdGF0ZSBhcmckJyk6CisgICAgICAgICAgICBzZWxmLnRoZWNsYXNzKGJ5dGVzKFsxXSAqIGxlbihiYXNlKSksICdFU1QnKQogCiAjIEEgbWl4aW4gZm9yIGNsYXNzZXMgd2l0aCBhIHR6aW5mbz0gYXJndW1lbnQuICBTdWJjbGFzc2VzIG11c3QgZGVmaW5lCiAjIHRoZWNsYXNzIGFzIGEgY2xhc3MgYXRyaWJ1dGUsIGFuZCB0aGVjbGFzcygxLCAxLCAxLCB0emluZm89d2hhdGV2ZXIpCkBAIC0yNjQwLDcgKzI2NjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKICAgICAgICAgIyBJc3N1ZSAjNjY5NzoKLSAgICAgICAgaWYgJ19GYXN0JyBpbiBzdHIodHlwZShzZWxmKSk6CisgICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHNlbGYpOgogICAgICAgICAgICAgQmFkdHpuYW1lLnR6ID0gJ1x1ZDgwMCcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKQEAgLTI2NzUsNyArMjcwNCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcml2ZWQudHpuYW1lKCksICdjb29raWUnKQogCiAgICAgZGVmIHRlc3RfbW9yZV9ib29sKHNlbGYpOgotICAgICAgICAjIFRlc3QgY2FzZXMgd2l0aCBub24tTm9uZSB0emluZm8uCisgICAgICAgICMgdGltZSBpcyBhbHdheXMgVHJ1ZS4KICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogCiAgICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0zMDAsICIiKSkKQEAgLTI2ODUsMjIgKzI3MTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQpCiAKICAgICAgICAgdCA9IGNscyg1LCB0emluZm89Rml4ZWRPZmZzZXQoMzAwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodCkKLQotICAgICAgICB0ID0gY2xzKDIzLCA1OSwgdHppbmZvPUZpeGVkT2Zmc2V0KDIzKjYwICsgNTksICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0KQotCi0gICAgICAgICMgTW9zdGx5IGVuc3VyaW5nIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBpbnRlcm5hbGx5LgotICAgICAgICB0ID0gY2xzKDAsIHR6aW5mbz1GaXhlZE9mZnNldCgyMyo2MCArIDU5LCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0KQogCi0gICAgICAgICMgQnV0IHRoaXMgc2hvdWxkIHlpZWxkIGEgdmFsdWUgZXJyb3IgLS0gdGhlIHV0Y29mZnNldCBpcyBib2d1cy4KLSAgICAgICAgdCA9IGNscygwLCB0emluZm89Rml4ZWRPZmZzZXQoMjQqNjAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBib29sKHQpKQotCi0gICAgICAgICMgTGlrZXdpc2UuCi0gICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0yNCo2MCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IGJvb2wodCkpCisgICAgICAgIHQgPSBjbHMoMjMsIDU5LCB0emluZm89Rml4ZWRPZmZzZXQoMjMqNjAgKyA1OSwgIiIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodCkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTM4MTQsOCArMzgzMSw1OSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzX2RhdGV0aW1lLCBkYXRldGltZV9zYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZV9zYywgYXNfZGF0ZXRpbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBkZWYgdGVzdF9leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBbZGF0ZS50b2RheSgpLAorICAgICAgICAgICAgICAgICAgdGltZSgpLAorICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUudXRjbm93KCksCisgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoKSwKKyAgICAgICAgICAgICAgICAgIHR6aW5mbygpLAorICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKCkpXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHguYWJjID0gMQorCisgICAgZGVmIHRlc3RfY2hlY2tfYXJnX3R5cGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBOdW1iZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgICBmb3IgeHggaW4gW2RlY2ltYWwuRGVjaW1hbCgxMCksCisgICAgICAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCcxMC45JyksCisgICAgICAgICAgICAgICAgICAgTnVtYmVyKDEwKV06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAnMTAnKQorCisgICAgICAgIGYxMCA9IE51bWJlcigxMC45KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXl9faW50X18gcmV0dXJuZWQgbm9uLWludCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKHR5cGUgZmxvYXRcKSQnKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQorCisgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgczEwID0gRmxvYXQoMTAuOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15pbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3QgZmxvYXQkJyk6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIHMxMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMC4sIDEwLCAxMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLiwgMTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMC4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTU4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC0wLDAgKzEsMzc2IEBACisiIiIKK1RoaXMgdGVzdCBzdWl0ZSBleGVyY2lzZXMgc29tZSBzeXN0ZW0gY2FsbHMgc3ViamVjdCB0byBpbnRlcnJ1cHRpb24gd2l0aCBFSU5UUiwKK3RvIGNoZWNrIHRoYXQgaXQgaXMgYWN0dWFsbHkgaGFuZGxlZCB0cmFuc3BhcmVudGx5LgorSXQgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGJ5IHRoZSBtYWluIHRlc3Qgc3VpdGUgd2l0aGluIGEgY2hpbGQgcHJvY2VzcywgdG8KK2Vuc3VyZSB0aGVyZSBpcyBubyBiYWNrZ3JvdW5kIHRocmVhZCBydW5uaW5nIChzbyB0aGF0IHNpZ25hbHMgYXJlIGRlbGl2ZXJlZCB0bwordGhlIGNvcnJlY3QgdGhyZWFkKS4KK1NpZ25hbHMgYXJlIGdlbmVyYXRlZCBpbi1wcm9jZXNzIHVzaW5nIHNldGl0aW1lcihJVElNRVJfUkVBTCksIHdoaWNoIGFsbG93cworc3ViLXNlY29uZCBwZXJpb2RpY2l0eSAoY29udHJhcmlseSB0byBzaWduYWwoKSkuCisiIiIKKworaW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIEVJTlRSQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBCYXNlIGNsYXNzIGZvciBFSU5UUiB0ZXN0cy4gIiIiCisKKyAgICAjIGRlbGF5IGZvciBpbml0aWFsIHNpZ25hbCBkZWxpdmVyeQorICAgIHNpZ25hbF9kZWxheSA9IDAuMQorICAgICMgc2lnbmFsIGRlbGl2ZXJ5IHBlcmlvZGljaXR5CisgICAgc2lnbmFsX3BlcmlvZCA9IDAuMQorICAgICMgZGVmYXVsdCBzbGVlcCB0aW1lIGZvciB0ZXN0cyAtIHNob3VsZCBvYnZpb3VzbHkgaGF2ZToKKyAgICAjwqBzbGVlcF90aW1lID4gc2lnbmFsX3BlcmlvZAorICAgIHNsZWVwX3RpbWUgPSAwLjIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5vcmlnX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBsYW1iZGEgKmFyZ3M6IE5vbmUpCisgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCBjbHMuc2lnbmFsX2RlbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zaWduYWxfcGVyaW9kKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0b3BfYWxhcm0oY2xzKToKKyAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIDAsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMuc3RvcF9hbGFybSgpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NsZWVwKGNscyk6CisgICAgICAgICMgZGVmYXVsdCBzbGVlcCB0aW1lCisgICAgICAgIHRpbWUuc2xlZXAoY2xzLnNsZWVwX3RpbWUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIE9TRUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIG9zIG1vZHVsZS4gIiIiCisKKyAgICBkZWYgX3Rlc3Rfd2FpdF9tdWx0aXBsZShzZWxmLCB3YWl0X2Z1bmMpOgorICAgICAgICBudW0gPSAzCisgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3NsZWVwKCkKKyAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQorICAgICAgICBmb3IgXyBpbiByYW5nZShudW0pOgorICAgICAgICAgICAgd2FpdF9mdW5jKCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2FpdF9tdWx0aXBsZShvcy53YWl0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3dhaXQzJyksICdyZXF1aXJlcyB3YWl0MygpJykKKyAgICBkZWYgdGVzdF93YWl0MyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKGxhbWJkYTogb3Mud2FpdDMoMCkpCisKKyAgICBkZWYgX3Rlc3Rfd2FpdF9zaW5nbGUoc2VsZiwgd2FpdF9mdW5jKToKKyAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgc2VsZi5fc2xlZXAoKQorICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdhaXRfZnVuYyhwaWQpCisKKyAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXRwaWQocGlkLCAwKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICd3YWl0NCcpLCAncmVxdWlyZXMgd2FpdDQoKScpCisgICAgZGVmIHRlc3Rfd2FpdDQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2FpdF9zaW5nbGUobGFtYmRhIHBpZDogb3Mud2FpdDQocGlkLCAwKSkKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHJkKQorICAgICAgICAjIHdyIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgdGhlIHBheWxvYWQgYmVsb3cgYXJlIHNtYWxsZXIgdGhhbiBQSVBFX0JVRiwgaGVuY2UgdGhlIHdyaXRlcyB3aWxsIGJlCisgICAgICAgICMgYXRvbWljCisgICAgICAgIGRhdGFzID0gW2IiaGVsbG8iLCBiIndvcmxkIiwgYiJzcGFtIl0KKworICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5jbG9zZShyZCkKKyAgICAgICAgICAgIGZvciBkYXRhIGluIGRhdGFzOgorICAgICAgICAgICAgICAgICMgbGV0IHRoZSBwYXJlbnQgYmxvY2sgb24gcmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoKQorICAgICAgICAgICAgICAgIG9zLndyaXRlKHdyLCBkYXRhKQorICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy53YWl0cGlkLCBwaWQsIDApCisgICAgICAgICAgICBvcy5jbG9zZSh3cikKKyAgICAgICAgICAgIGZvciBkYXRhIGluIGRhdGFzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgb3MucmVhZChyZCwgbGVuKGRhdGEpKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICByZCwgd3IgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3cikKKyAgICAgICAgIyByZCBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHdlIG11c3Qgd3JpdGUgZW5vdWdoIGRhdGEgZm9yIHRoZSB3cml0ZSgpIHRvIGJsb2NrCisgICAgICAgIGRhdGEgPSBiInh5eiIgKiBzdXBwb3J0LlBJUEVfTUFYX1NJWkUKKworICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5jbG9zZSh3cikKKyAgICAgICAgICAgIHJlYWRfZGF0YSA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgIyBsZXQgdGhlIHBhcmVudCBibG9jayBvbiB3cml0ZSgpCisgICAgICAgICAgICBzZWxmLl9zbGVlcCgpCisgICAgICAgICAgICB3aGlsZSBsZW4ocmVhZF9kYXRhLmdldHZhbHVlKCkpIDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGNodW5rID0gb3MucmVhZChyZCwgMiAqIGxlbihkYXRhKSkKKyAgICAgICAgICAgICAgICByZWFkX2RhdGEud3JpdGUoY2h1bmspCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZGF0YS5nZXR2YWx1ZSgpLCBkYXRhKQorICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLmNsb3NlKHJkKQorICAgICAgICAgICAgd3JpdHRlbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIHdyaXR0ZW4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgd3JpdHRlbiArPSBvcy53cml0ZSh3ciwgbWVtb3J5dmlldyhkYXRhKVt3cml0dGVuOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIG9zLndhaXRwaWQocGlkLCAwKVsxXSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU29ja2V0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNvY2tldCBtb2R1bGUuICIiIgorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksICduZWVkcyBzb2NrZXRwYWlyKCknKQorICAgIGRlZiBfdGVzdF9yZWN2KHNlbGYsIHJlY3ZfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJkLmNsb3NlKQorICAgICAgICAjIHdyIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgc2luZ2xlLWJ5dGUgcGF5bG9hZCBndWFyZCB1cyBhZ2FpbnN0IHBhcnRpYWwgcmVjdgorICAgICAgICBkYXRhcyA9IFtiIngiLCBiInkiLCBiInoiXQorCisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgIHJkLmNsb3NlKCkKKyAgICAgICAgICAgIGZvciBkYXRhIGluIGRhdGFzOgorICAgICAgICAgICAgICAgICMgbGV0IHRoZSBwYXJlbnQgYmxvY2sgb24gcmVjdigpCisgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoKQorICAgICAgICAgICAgICAgIHdyLnNlbmRhbGwoZGF0YSkKKyAgICAgICAgICAgIG9zLl9leGl0KDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3Mud2FpdHBpZCwgcGlkLCAwKQorICAgICAgICAgICAgd3IuY2xvc2UoKQorICAgICAgICAgICAgZm9yIGRhdGEgaW4gZGF0YXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCByZWN2X2Z1bmMocmQsIGxlbihkYXRhKSkpCisKKyAgICBkZWYgdGVzdF9yZWN2KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3Yoc29ja2V0LnNvY2tldC5yZWN2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQuc29ja2V0LCAncmVjdm1zZycpLCAnbmVlZHMgcmVjdm1zZygpJykKKyAgICBkZWYgdGVzdF9yZWN2bXNnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3YobGFtYmRhIHNvY2ssIGRhdGE6IHNvY2sucmVjdm1zZyhkYXRhKVswXSkKKworICAgIGRlZiBfdGVzdF9zZW5kKHNlbGYsIHNlbmRfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHdyLmNsb3NlKQorICAgICAgICAjIHJkIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgd2UgbXVzdCBzZW5kIGVub3VnaCBkYXRhIGZvciB0aGUgc2VuZCgpIHRvIGJsb2NrCisgICAgICAgIGRhdGEgPSBiInh5eiIgKiAoc3VwcG9ydC5TT0NLX01BWF9TSVpFIC8vIDMpCisKKyAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgd3IuY2xvc2UoKQorICAgICAgICAgICAgIyBsZXQgdGhlIHBhcmVudCBibG9jayBvbiBzZW5kKCkKKyAgICAgICAgICAgIHNlbGYuX3NsZWVwKCkKKyAgICAgICAgICAgIHJlY2VpdmVkX2RhdGEgPSBieXRlYXJyYXkobGVuKGRhdGEpKQorICAgICAgICAgICAgbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIG4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgbiArPSByZC5yZWN2X2ludG8obWVtb3J5dmlldyhyZWNlaXZlZF9kYXRhKVtuOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkX2RhdGEsIGRhdGEpCisgICAgICAgICAgICBvcy5fZXhpdCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmQuY2xvc2UoKQorICAgICAgICAgICAgd3JpdHRlbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIHdyaXR0ZW4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgc2VudCA9IHNlbmRfZnVuYyh3ciwgbWVtb3J5dmlldyhkYXRhKVt3cml0dGVuOl0pCisgICAgICAgICAgICAgICAgIyBzZW5kYWxsKCkgcmV0dXJucyBOb25lCisgICAgICAgICAgICAgICAgd3JpdHRlbiArPSBsZW4oZGF0YSkgaWYgc2VudCBpcyBOb25lIGVsc2Ugc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBvcy53YWl0cGlkKHBpZCwgMClbMV0pCisKKyAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQoc29ja2V0LnNvY2tldC5zZW5kKQorCisgICAgZGVmIHRlc3Rfc2VuZGFsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9zZW5kKHNvY2tldC5zb2NrZXQuc2VuZGFsbCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LnNvY2tldCwgJ3NlbmRtc2cnKSwgJ25lZWRzIHNlbmRtc2coKScpCisgICAgZGVmIHRlc3Rfc2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9zZW5kKGxhbWJkYSBzb2NrLCBkYXRhOiBzb2NrLnNlbmRtc2coW2RhdGFdKSkKKworICAgIGRlZiB0ZXN0X2FjY2VwdChzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisKKyAgICAgICAgc29jay5iaW5kKChzdXBwb3J0LkhPU1QsIDApKQorICAgICAgICBfLCBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNvY2subGlzdGVuKCkKKworICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICAjIGxldCBwYXJlbnQgYmxvY2sgb24gYWNjZXB0KCkKKyAgICAgICAgICAgIHNlbGYuX3NsZWVwKCkKKyAgICAgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChzdXBwb3J0LkhPU1QsIHBvcnQpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zbGVlcCgpCisgICAgICAgICAgICBvcy5fZXhpdCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLndhaXRwaWQsIHBpZCwgMCkKKyAgICAgICAgICAgIGNsaWVudF9zb2NrLCBfID0gc29jay5hY2NlcHQoKQorICAgICAgICAgICAgY2xpZW50X3NvY2suY2xvc2UoKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ21rZmlmbycpLCAnbmVlZHMgbWtmaWZvKCknKQorICAgIGRlZiBfdGVzdF9vcGVuKHNlbGYsIGRvX29wZW5fY2xvc2VfcmVhZGVyLCBkb19vcGVuX2Nsb3NlX3dyaXRlcik6CisgICAgICAgICMgVXNlIGEgZmlmbzogdW50aWwgdGhlIGNoaWxkIG9wZW5zIGl0IGZvciByZWFkaW5nLCB0aGUgcGFyZW50IHdpbGwKKyAgICAgICAgIyBibG9jayB3aGVuIHRyeWluZyB0byBvcGVuIGl0IGZvciB3cml0aW5nLgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgb3MubWtmaWZvKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgICMgbGV0IHRoZSBwYXJlbnQgYmxvY2sKKyAgICAgICAgICAgIHNlbGYuX3NsZWVwKCkKKyAgICAgICAgICAgIGRvX29wZW5fY2xvc2VfcmVhZGVyKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy53YWl0cGlkLCBwaWQsIDApCisgICAgICAgICAgICBkb19vcGVuX2Nsb3NlX3dyaXRlcihzdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfb3BlbihsYW1iZGEgcGF0aDogb3BlbihwYXRoLCAncicpLmNsb3NlKCksCisgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcGF0aDogb3BlbihwYXRoLCAndycpLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9vc19vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X29wZW4obGFtYmRhIHBhdGg6IG9zLmNsb3NlKG9zLm9wZW4ocGF0aCwgb3MuT19SRE9OTFkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRoOiBvcy5jbG9zZShvcy5vcGVuKHBhdGgsIG9zLk9fV1JPTkxZKSkpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIFRpbWVFSU5UUlRlc3QoRUlOVFJCYXNlVGVzdCk6CisgICAgIiIiIEVJTlRSIHRlc3RzIGZvciB0aGUgdGltZSBtb2R1bGUuICIiIgorCisgICAgZGVmIHRlc3Rfc2xlZXAoc2VsZik6CisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc2xlZXBfdGltZSkKKyAgICAgICAgc2VsZi5zdG9wX2FsYXJtKCkKKyAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU2lnbmFsRUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNpZ25hbCBtb2R1bGUuICIiIgorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdChzZWxmKToKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ25hbC5TSUdVU1IxXSwgc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0aW5mbyhzZWxmKToKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKworICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbnVtLCBsYW1iZGEgKmFyZ3M6IE5vbmUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWdudW0sIG9sZF9oYW5kbGVyKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBjaGlsZF9waWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgY2hpbGRfcGlkID09IDA6CisgICAgICAgICAgICAjIGNoaWxkCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fc2xlZXAoKQorICAgICAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWdudW0pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHBhcmVudAorICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgICAgIG9zLndhaXRwaWQoY2hpbGRfcGlkLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIFNlbGVjdEVJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSBzZWxlY3QgbW9kdWxlLiAiIiIKKworICAgIGRlZiB0ZXN0X3NlbGVjdChzZWxmKToKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtdLCBbXSwgc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICduZWVkIHNlbGVjdC5wb2xsJykKKyAgICBkZWYgdGVzdF9wb2xsKHNlbGYpOgorICAgICAgICBwb2xsZXIgPSBzZWxlY3QucG9sbCgpCisKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHBvbGxlci5wb2xsKHNlbGYuc2xlZXBfdGltZSAqIDFlMykKKyAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgc2VsZi5zdG9wX2FsYXJtKCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAnZXBvbGwnKSwgJ25lZWQgc2VsZWN0LmVwb2xsJykKKyAgICBkZWYgdGVzdF9lcG9sbChzZWxmKToKKyAgICAgICAgcG9sbGVyID0gc2VsZWN0LmVwb2xsKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBvbGxlci5jbG9zZSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdrcXVldWUnKSwgJ25lZWQgc2VsZWN0LmtxdWV1ZScpCisgICAgZGVmIHRlc3Rfa3F1ZXVlKHNlbGYpOgorICAgICAgICBrcXVldWUgPSBzZWxlY3Qua3F1ZXVlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGtxdWV1ZS5jbG9zZSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAga3F1ZXVlLmNvbnRyb2woTm9uZSwgMSwgc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdkZXZwb2xsJyksICduZWVkIHNlbGVjdC5kZXZwb2xsJykKKyAgICBkZWYgdGVzdF9kZXZwb2xsKHNlbGYpOgorICAgICAgICBwb2xsZXIgPSBzZWxlY3QuZGV2cG9sbCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwb2xsZXIuY2xvc2UpCisKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHBvbGxlci5wb2xsKHNlbGYuc2xlZXBfdGltZSAqIDFlMykKKyAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgc2VsZi5zdG9wX2FsYXJtKCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIE9TRUlOVFJUZXN0LAorICAgICAgICBTb2NrZXRFSU5UUlRlc3QsCisgICAgICAgIFRpbWVFSU5UUlRlc3QsCisgICAgICAgIFNpZ25hbEVJTlRSVGVzdCwKKyAgICAgICAgU2VsZWN0RUlOVFJUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0IGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKaW5kZXggMWMxZjY5Zi4uNjYzMjgyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKKysrIGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKQEAgLTQsNiArNCw3IEBACiAgKy0tIEdlbmVyYXRvckV4aXQKICArLS0gRXhjZXB0aW9uCiAgICAgICArLS0gU3RvcEl0ZXJhdGlvbgorICAgICAgKy0tIFN0b3BBc3luY0l0ZXJhdGlvbgogICAgICAgKy0tIEFyaXRobWV0aWNFcnJvcgogICAgICAgfCAgICArLS0gRmxvYXRpbmdQb2ludEVycm9yCiAgICAgICB8ICAgICstLSBPdmVyZmxvd0Vycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKaW5kZXggMTliNTRlYy4uNzEzMDM5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZm9ya193YWl0LnB5CisrKyBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQpAQCAtNDgsNyArNDgsMTIgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNX1RIUkVBRFMpOgogICAgICAgICAgICAgX3RocmVhZC5zdGFydF9uZXcoc2VsZi5mLCAoaSwpKQogCi0gICAgICAgIHRpbWUuc2xlZXAoTE9OR1NMRUVQKQorICAgICAgICAjIGJ1c3ktbG9vcCB0byB3YWl0IGZvciB0aHJlYWRzCisgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDEwLjAKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWxpdmUpIDwgTlVNX1RIUkVBRFM6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgICAgIGlmIGRlYWRsaW5lIDwgdGltZS5tb25vdG9uaWMoKToKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgIGEgPSBzb3J0ZWQoc2VsZi5hbGl2ZS5rZXlzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgbGlzdChyYW5nZShOVU1fVEhSRUFEUykpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24uZXhyIGIvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24uZXhyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3M2M4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi5leHIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24ud2VicCBiL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLndlYnAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgyNGVjNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLndlYnAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQppbmRleCAwYzFkODEwLi42ZjBjYWQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQpAQCAtNDUsOSArNDUsMTYgQEAKICAgICAgICAgICAgIHNlbGYuZXggPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgc2VsZi50ciA9IGluc3BlY3QudHJhY2UoKQogCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgICdUaGUgYXV0b21hdGljIGdhaW5zYXlpbmcuJworICAgICAgICBwYXNzCisKICMgbGluZSA0OAogY2xhc3MgTWFsb2Rvcm91c1BlcnZlcnQoU3R1cGlkR2l0KToKLSAgICBwYXNzCisgICAgZGVmIGFidXNlKHNlbGYsIGEsIGIsIGMpOgorICAgICAgICBwYXNzCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgIHBhc3MKIAogVGl0ID0gTWFsb2Rvcm91c1BlcnZlcnQKIApAQCAtNTUsNCArNjIsNyBAQAogICAgIHBhc3MKIAogY2xhc3MgRmVzdGVyaW5nR29iKE1hbG9kb3JvdXNQZXJ2ZXJ0LCBQYXJyb3REcm9wcGluZ3MpOgotICAgIHBhc3MKKyAgICBkZWYgYWJ1c2Uoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgY29udHJhZGljdGlvbihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIyLnB5IGIvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIyLnB5CmluZGV4IGJkNzEwNmYuLmFiMWNkOWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2luc3BlY3RfZm9kZGVyMi5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkKQEAgLTEwOSwzICsxMDksMjQgQEAKICNsaW5lIDEwOQogZGVmIGtleXdvcmRfb25seV9hcmcoKiwgYXJnKToKICAgICBwYXNzCisKK0B3cmFwKGxhbWJkYTogTm9uZSkKK2RlZiBmdW5jMTE0KCk6CisgICAgcmV0dXJuIDExNQorCitjbGFzcyBDbGFzc1dpdGhNZXRob2Q6CisgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgICAgcGFzcworCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICBAd3JhcHMoZnVuYykKKyAgICBkZWYgZmFrZSgpOgorICAgICAgICByZXR1cm4gNDIKKyAgICByZXR1cm4gZmFrZQorCisjbGluZSAxMjkKK0BkZWNvcmF0b3IKK2RlZiByZWFsKCk6CisgICAgcmV0dXJuIDIwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5IGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQppbmRleCA0MmUxMThiLi45MDY5MzM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKQEAgLTMwLDYgKzMwLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYSksIGlkKGIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAibGlzdCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgorICAgICAgICAgICAgYSA9IFtdCisgICAgICAgICAgICBhWydhJ10gPSAicHl0aG9uIgorCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgbDAgPSBbXQogICAgICAgICBsMiA9IFswLCAxLCAyXQpAQCAtMTIwLDYgKzEyNiwxMCBAQAogICAgICAgICBhWy0xXSA9IDkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBzZWxmLnR5cGUydGVzdChbNSw2LDcsOCw5XSkpCiAKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGFbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzAsIDFdKQogICAgICAgICBkZWwgYVsxXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggNDJhN2Q4Mi4uYjMyNWJjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC04Niw3ICs4NiwxMyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQotICAgICAgICByZXByKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihsb2NrKSwgIjx1bmxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQorICAgICAgICBkZWwgbG9jaworCisgICAgZGVmIHRlc3RfbG9ja2VkX3JlcHIoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGxvY2spLCAiPGxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQogICAgICAgICBkZWwgbG9jawogCiAgICAgZGVmIHRlc3RfYWNxdWlyZV9kZXN0cm95KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCBlMzY3MjRmLi5iMjhjNDczIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMzUsOCArMzUsOSBAQAogY2xhc3MgTW9ja1NvY2tldDoKICAgICAiIiJNb2NrIHNvY2tldCBvYmplY3QgdXNlZCBieSBzbXRwZCBhbmQgc210cGxpYiB0ZXN0cy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseT1Ob25lKToKICAgICAgICAgZ2xvYmFsIF9yZXBseV9kYXRhCisgICAgICAgIHNlbGYuZmFtaWx5ID0gZmFtaWx5CiAgICAgICAgIHNlbGYub3V0cHV0ID0gW10KICAgICAgICAgc2VsZi5saW5lcyA9IFtdCiAgICAgICAgIGlmIF9yZXBseV9kYXRhOgpAQCAtMTAxLDE1ICsxMDIsMTQgQEAKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCiAgICAgZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3BlZXInCisgICAgICAgIHJldHVybiAoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKIAogZGVmIHNvY2tldChmYW1pbHk9Tm9uZSwgdHlwZT1Ob25lLCBwcm90bz1Ob25lKToKLSAgICByZXR1cm4gTW9ja1NvY2tldCgpCi0KKyAgICByZXR1cm4gTW9ja1NvY2tldChmYW1pbHkpCiAKIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC0xNDQsMTMgKzE0NCwxNiBAQAogZGVmIGdldGhvc3RieW5hbWUobmFtZSk6CiAgICAgcmV0dXJuICIiCiAKK2RlZiBnZXRhZGRyaW5mbygqYXJncywgKiprdyk6CisgICAgcmV0dXJuIHNvY2tldF9tb2R1bGUuZ2V0YWRkcmluZm8oKmFyZ3MsICoqa3cpCiAKIGdhaWVycm9yID0gc29ja2V0X21vZHVsZS5nYWllcnJvcgogZXJyb3IgPSBzb2NrZXRfbW9kdWxlLmVycm9yCiAKIAogIyBDb25zdGFudHMKLUFGX0lORVQgPSBOb25lCi1TT0NLX1NUUkVBTSA9IE5vbmUKK0FGX0lORVQgPSBzb2NrZXRfbW9kdWxlLkFGX0lORVQKK0FGX0lORVQ2ID0gc29ja2V0X21vZHVsZS5BRl9JTkVUNgorU09DS19TVFJFQU0gPSBzb2NrZXRfbW9kdWxlLlNPQ0tfU1RSRUFNCiBTT0xfU09DS0VUID0gTm9uZQogU09fUkVVU0VBRERSID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDJjNDk2ZDAuLmEwYzdhMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTExNTYsMTYgKzExNTYsNjIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW1fYWRkaXRlbXMsIDIpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfbmV3b2JqKHNlbGYpOgotICAgICAgICB4ID0gb2JqZWN0Ll9fbmV3X18oU2ltcGxlTmV3T2JqKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4ID0gU2ltcGxlTmV3T2JqLl9fbmV3X18oU2ltcGxlTmV3T2JqLCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBzID0gc2VsZi5kdW1wcyh4LCBwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKLCBzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90byA8IDQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvID49IDQpCi0gICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9pc19jb3B5KHgsIHkpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCisgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ01ceGNlXHhmYScsIHMpICAjIEJJTklOVDIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDw9IHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSkKKyAgICAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfaXNfY29weSh4LCB5KQorCisgICAgZGVmIHRlc3RfY29tcGxleF9uZXdvYmooc2VsZik6CisgICAgICAgIHggPSBDb21wbGV4TmV3T2JqLl9fbmV3X18oQ29tcGxleE5ld09iaiwgMHhmYWNlKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4LmFiYyA9IDY2NgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcykpCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmV3b2JqX2V4KHNlbGYpOgorICAgICAgICB4ID0gQ29tcGxleE5ld09iakV4Ll9fbmV3X18oQ29tcGxleE5ld09iakV4LCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCisgICAgICAgIHguYWJjID0gNjY2CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgPD0gcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKIAogICAgIGRlZiB0ZXN0X25ld29ial9saXN0X3Nsb3RzKHNlbGYpOgogICAgICAgICB4ID0gU2xvdExpc3QoWzEsIDIsIDNdKQpAQCAtMTU1NiwxMyArMTYwMiwyNCBAQAogICAgICAgICAgICAgICAgIGNsYXNzIEI6CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDQsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZm9yIG9iaiBpbiBbTmVzdGVkLkEsIE5lc3RlZC5BLkIsIE5lc3RlZC5BLkIuQ106CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG9iaj1vYmopOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMob2JqLCBwcm90bykpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqLCB1bnBpY2tsZWQpCiAKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfbmVzdGVkX25hbWVzKHNlbGYpOgorICAgICAgICBnbG9iYWwgUmVjdXJzaXZlCisgICAgICAgIGNsYXNzIFJlY3Vyc2l2ZToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgUmVjdXJzaXZlLm1vZCA9IHN5cy5tb2R1bGVzW1JlY3Vyc2l2ZS5fX21vZHVsZV9fXQorICAgICAgICBSZWN1cnNpdmUuX19xdWFsbmFtZV9fID0gJ1JlY3Vyc2l2ZS5tb2QuUmVjdXJzaXZlJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMoUmVjdXJzaXZlLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh1bnBpY2tsZWQsIFJlY3Vyc2l2ZSkKKyAgICAgICAgZGVsIFJlY3Vyc2l2ZS5tb2QgIyBicmVhayByZWZlcmVuY2UgbG9vcAorCiAgICAgZGVmIHRlc3RfcHlfbWV0aG9kcyhzZWxmKToKICAgICAgICAgZ2xvYmFsIFB5TWV0aG9kc1Rlc3QKICAgICAgICAgY2xhc3MgUHlNZXRob2RzVGVzdDoKQEAgLTE2MDEsNyArMTY1OCw3IEBACiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5iaXNjdWl0cywgUHlNZXRob2RzVGVzdCksCiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5OZXN0ZWQucGllLCBQeU1ldGhvZHNUZXN0Lk5lc3RlZCkKICAgICAgICAgKQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgbWV0aG9kIGluIHB5X21ldGhvZHM6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG1ldGhvZD1tZXRob2QpOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMobWV0aG9kLCBwcm90bykpCkBAIC0xNjQxLDcgKzE2OTgsNyBAQAogICAgICAgICAgICAgKFN1YmNsYXNzLk5lc3RlZCgic3dlZXQiKS5jb3VudCwgKCJlIiwpKSwKICAgICAgICAgICAgIChTdWJjbGFzcy5OZXN0ZWQuY291bnQsIChTdWJjbGFzcy5OZXN0ZWQoInN3ZWV0IiksICJlIikpLAogICAgICAgICApCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSg0LCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciBtZXRob2QsIGFyZ3MgaW4gY19tZXRob2RzOgogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvLCBtZXRob2Q9bWV0aG9kKToKICAgICAgICAgICAgICAgICAgICAgdW5waWNrbGVkID0gc2VsZi5sb2FkcyhzZWxmLmR1bXBzKG1ldGhvZCwgcHJvdG8pKQpAQCAtMTY5Miw2ICsxNzQ5LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUodW5waWNrbGVkKSwgY29sbGVjdGlvbnMuVXNlckRpY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVucGlja2xlZCwgY29sbGVjdGlvbnMuVXNlckRpY3QoezE6IDJ9KSkKIAorICAgIGRlZiB0ZXN0X2xvY2FsX2xvb2t1cF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hpY2htb2R1bGUoKSBlcnJvcnMgb3V0IGNsZWFubHkgd2hlbiBsb29raW5nIHVwCisgICAgICAgICMgYW4gYXNzdW1lZCBnbG9iYWxseS1yZWFjaGFibGUgb2JqZWN0IGZhaWxzLgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIFNpbmNlIHRoZSBmdW5jdGlvbiBpcyBsb2NhbCwgbG9va3VwIHdpbGwgZmFpbAorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoMCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBwaWNrbGUuUGlja2xpbmdFcnJvcikpOgorICAgICAgICAgICAgICAgIHBpY2tsZXRvb2xzLmRpcyhzZWxmLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgIyBTYW1lIHdpdGhvdXQgYSBfX21vZHVsZV9fIGF0dHJpYnV0ZSAoZXhlcmNpc2VzIGEgZGlmZmVyZW50IHBhdGgKKyAgICAgICAgIyBpbiBfcGlja2xlLmMpLgorICAgICAgICBkZWwgZi5fX21vZHVsZV9fCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoQXR0cmlidXRlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSk6CisgICAgICAgICAgICAgICAgcGlja2xldG9vbHMuZGlzKHNlbGYuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAjIFlldCBhIGRpZmZlcmVudCBwYXRoLgorICAgICAgICBmLl9fbmFtZV9fID0gZi5fX3F1YWxuYW1lX18KKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDAsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICBwaWNrbGV0b29scy5kaXMoc2VsZi5kdW1wcyhmLCBwcm90bykpCisKIAogY2xhc3MgQmlnbWVtUGlja2xlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xOTI2LDEyICsyMDA0LDIwIEBACiBjbGFzcyBTbG90TGlzdChNeUxpc3QpOgogICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KIAotY2xhc3MgU2ltcGxlTmV3T2JqKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIsIGMpOgorY2xhc3MgU2ltcGxlTmV3T2JqKGludCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICMgcmFpc2UgYW4gZXJyb3IsIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbid0IGNhbGxlZAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlNpbXBsZU5ld09iai5fX2luaXRfXygpIGRpZG4ndCBleHBlY3QgdG8gZ2V0IGNhbGxlZCIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCisgICAgICAgIHJldHVybiBpbnQoc2VsZikgPT0gaW50KG90aGVyKSBhbmQgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworCitjbGFzcyBDb21wbGV4TmV3T2JqKFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCAxNikKKworY2xhc3MgQ29tcGxleE5ld09iakV4KFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCksIHsnYmFzZSc6IDE2fQogCiBjbGFzcyBCYWRHZXRhdHRyOgogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBrZXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHlzdG9uZS5weSBiL0xpYi90ZXN0L3B5c3RvbmUucHkKaW5kZXggYTQxZjFlNS4uMWY2N2U2NiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcHlzdG9uZS5weQorKysgYi9MaWIvdGVzdC9weXN0b25lLnB5CkBAIC00MSw3ICs0MSw3IEBACiAKIExPT1BTID0gNTAwMDAKIAotZnJvbSB0aW1lIGltcG9ydCBjbG9jaworZnJvbSB0aW1lIGltcG9ydCB0aW1lCiAKIF9fdmVyc2lvbl9fID0gIjEuMiIKIApAQCAtOTMsMTAgKzkzLDEwIEBACiAgICAgZ2xvYmFsIFB0ckdsYgogICAgIGdsb2JhbCBQdHJHbGJOZXh0CiAKLSAgICBzdGFydHRpbWUgPSBjbG9jaygpCisgICAgc3RhcnR0aW1lID0gdGltZSgpCiAgICAgZm9yIGkgaW4gcmFuZ2UobG9vcHMpOgogICAgICAgICBwYXNzCi0gICAgbnVsbHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lCisgICAgbnVsbHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUKIAogICAgIFB0ckdsYk5leHQgPSBSZWNvcmQoKQogICAgIFB0ckdsYiA9IFJlY29yZCgpCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICBTdHJpbmcxTG9jID0gIkRIUllTVE9ORSBQUk9HUkFNLCAxJ1NUIFNUUklORyIKICAgICBBcnJheTJHbG9iWzhdWzddID0gMTAKIAotICAgIHN0YXJ0dGltZSA9IGNsb2NrKCkKKyAgICBzdGFydHRpbWUgPSB0aW1lKCkKIAogICAgIGZvciBpIGluIHJhbmdlKGxvb3BzKToKICAgICAgICAgUHJvYzUoKQpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgICAgIEludExvYzIgPSA3ICogKEludExvYzMgLSBJbnRMb2MyKSAtIEludExvYzEKICAgICAgICAgSW50TG9jMSA9IFByb2MyKEludExvYzEpCiAKLSAgICBiZW5jaHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lIC0gbnVsbHRpbWUKKyAgICBiZW5jaHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUgLSBudWxsdGltZQogICAgIGlmIGJlbmNodGltZSA9PSAwLjA6CiAgICAgICAgIGxvb3BzUGVyQmVuY2h0aW1lID0gMC4wCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggN2Y4MDc1ZS4uOGMxNThmOCAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAocidbXGFdW1xiXVtcZl1bXG5dW1xyXVtcdF1bXHZdJywgJ1xhXGJcZlxuXHJcdFx2JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1xhXGJcZlxuXHJcdFx2JyksCiAgICAgIyBOT1RFOiBub3QgYW4gZXJyb3IgdW5kZXIgUENSRS9QUkU6CiAgICAgKHInXHUnLCAnJywgU1lOVEFYX0VSUk9SKSwgICAgIyBBIFBlcmwgZXNjYXBlCi0gICAgKHInXGNcZVxnXGhcaVxqXGtcbVxvXHBccVx5XHonLCAnY2VnaGlqa21vcHF5eicsIFNVQ0NFRUQsICdmb3VuZCcsICdjZWdoaWprbW9wcXl6JyksCisgICAgIyAocidcY1xlXGdcaFxpXGpca1xtXG9ccFxxXHlceicsICdjZWdoaWprbW9wcXl6JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2NlZ2hpamttb3BxeXonKSwKICAgICAocidceGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCiAgICAgIyBuZXcgXHggc2VtYW50aWNzCiAgICAgKHInXHgwMGZmZmZmZmZmZmZmZmZmJywgJ1wzNzcnLCBGQUlMLCAnZm91bmQnLCBjaHIoMjU1KSksCkBAIC02MDcsOCArNjA3LDggQEAKICAgICAjIG5ldyBceCBzZW1hbnRpY3MKICAgICAocidceDAwZmYnLCAnXDM3NycsIEZBSUwpLAogICAgICMgKHInXHgwMGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCi0gICAgKHInXHRcblx2XHJcZlxhXGcnLCAnXHRcblx2XHJcZlxhZycsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGFnJyksCi0gICAgKCdcdFxuXHZcclxmXGFcZycsICdcdFxuXHZcclxmXGFnJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYWcnKSwKKyAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYScpLAorICAgICgnXHRcblx2XHJcZlxhJywgJ1x0XG5cdlxyXGZcYScsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGEnKSwKICAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpKSwKICAgICAocidbXHRdW1xuXVtcdl1bXHJdW1xmXVtcYl0nLCAnXHRcblx2XHJcZlxiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYicpLAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDM1MGU2ODQuLjViMWZjYzYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC03NjUsOCArNzY1LDYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgpAQCAtODIzLDggKzgyMSw2IEBACiAgICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgaWYgbnMuc2luZ2xlOgogICAgICAgICBpZiBuZXh0X3NpbmdsZV90ZXN0OgpAQCAtMTI3Miw2ICsxMjY4LDEwIEBACiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKICAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKICAgICAgICAgICAgIGlmIGh1bnRybGVha3M6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weSBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CmluZGV4IDc1OWIzZjQuLmY5ZDMwY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKIGRlZiBtYWtlX2h0dHBzX3NlcnZlcihjYXNlLCAqLCBjb250ZXh0PU5vbmUsIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9SE9TVCwgaGFuZGxlcl9jbGFzcz1Ob25lKToKICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgIyBXZSBhc3N1bWUgdGhlIGNlcnRmaWxlIGNvbnRhaW5zIGJvdGggcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUpCiAgICAgc2VydmVyID0gSFRUUFNTZXJ2ZXJUaHJlYWQoY29udGV4dCwgaG9zdCwgaGFuZGxlcl9jbGFzcykKQEAgLTE4Miw2ICsxODIsOCBAQAogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY3VydmUtbmFtZScsIGRlc3Q9J2N1cnZlX25hbWUnLCB0eXBlPXN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY3VydmUgbmFtZSBmb3IgRUMtYmFzZWQgRGlmZmllLUhlbGxtYW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2lwaGVycycsIGRlc3Q9J2NpcGhlcnMnLCB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FsbG93ZWQgY2lwaGVyIGxpc3QnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGgnLCBkZXN0PSdkaF9maWxlJywgdHlwZT1zdHIsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUEVNIGZpbGUgY29udGFpbmluZyBESCBwYXJhbWV0ZXJzJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQpAQCAtMTkyLDEyICsxOTQsMTQgQEAKICAgICBlbHNlOgogICAgICAgICBoYW5kbGVyX2NsYXNzID0gUm9vdGVkSFRUUFJlcXVlc3RIYW5kbGVyCiAgICAgICAgIGhhbmRsZXJfY2xhc3Mucm9vdCA9IG9zLmdldGN3ZCgpCi0gICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgaWYgYXJncy5jdXJ2ZV9uYW1lOgogICAgICAgICBjb250ZXh0LnNldF9lY2RoX2N1cnZlKGFyZ3MuY3VydmVfbmFtZSkKICAgICBpZiBhcmdzLmRoX2ZpbGU6CiAgICAgICAgIGNvbnRleHQubG9hZF9kaF9wYXJhbXMoYXJncy5kaF9maWxlKQorICAgIGlmIGFyZ3MuY2lwaGVyczoKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhhcmdzLmNpcGhlcnMpCiAKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlcigoIiIsIGFyZ3MucG9ydCksIGhhbmRsZXJfY2xhc3MsIGNvbnRleHQpCiAgICAgaWYgYXJncy52ZXJib3NlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CmluZGV4IDI0MmE5MzEuLmUwODY5OTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKQEAgLTk3Niw2ICs5NzYsOSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJ2hlbGxvd29ybGQnLCAnc3RhcnRzd2l0aCcsICdsb3dvJywgMykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsb3dvcmxkJywgJ3N0YXJ0c3dpdGgnLCAnbG93bycsIDMsIDcpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2hlbGxvd29ybGQnLCAnc3RhcnRzd2l0aCcsICdsb3dvJywgMywgNikKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnc3RhcnRzd2l0aCcsICcnLCAwLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJycsICdzdGFydHN3aXRoJywgJycsIDAsIDApCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJycsICdzdGFydHN3aXRoJywgJycsIDEsIDApCiAKICAgICAgICAgIyB0ZXN0IG5lZ2F0aXZlIGluZGljZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsbycsICdzdGFydHN3aXRoJywgJ2hlJywgMCwgLTEpCkBAIC0xMDIyLDYgKzEwMjUsOSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdoZWxsb3dvcmxkJywgJ2VuZHN3aXRoJywgJ2xvd28nLCAzLCA4KQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdhYicsICdlbmRzd2l0aCcsICdhYicsIDAsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2FiJywgJ2VuZHN3aXRoJywgJ2FiJywgMCwgMCkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnZW5kc3dpdGgnLCAnJywgMCwgMSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnZW5kc3dpdGgnLCAnJywgMCwgMCkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnJywgJ2VuZHN3aXRoJywgJycsIDEsIDApCiAKICAgICAgICAgIyB0ZXN0IG5lZ2F0aXZlIGluZGljZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsbycsICdlbmRzd2l0aCcsICdsbycsIC0yKQpAQCAtMTE3Niw4ICsxMTgyLDcgQEAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdhYmMnLCAnX19tb2RfXycpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJShmb28pcycsICdfX21vZF9fJywgNDIpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJXMlcycsICdfX21vZF9fJywgKDQyLCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclYycsICdfX21vZF9fJywgKE5vbmUsKSkKKyAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclYycsICdfX21vZF9fJywgKE5vbmUsKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJShmb28nLCAnX19tb2RfXycsIHt9KQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyUoZm9vKXMgJShiYXIpcycsICdfX21vZF9fJywgKCdmb28nLCA0MikpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJWQnLCAnX19tb2RfXycsICI0MiIpICMgbm90IG51bWVyaWMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CmluZGV4IDAxY2EyZjguLjhiMTgwYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpAQCAtODgsNyArODgsNyBAQAogICAgICJza2lwX3VubGVzc19zeW1saW5rIiwgInJlcXVpcmVzX2d6aXAiLCAicmVxdWlyZXNfYnoyIiwgInJlcXVpcmVzX2x6bWEiLAogICAgICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiY3B5dGhvbl9vbmx5IiwgImdldF9hdHRyaWJ1dGUiLAogICAgICJyZXF1aXJlc19JRUVFXzc1NCIsICJza2lwX3VubGVzc194YXR0ciIsICJyZXF1aXJlc196bGliIiwKLSAgICAiYW50aWNpcGF0ZV9mYWlsdXJlIiwgImxvYWRfcGFja2FnZV90ZXN0cyIsCisgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCiAgICAgIyBzeXMKICAgICAiaXNfanl0aG9uIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKICAgICAjIG5ldHdvcmsKQEAgLTM3NiwzNiArMzc2LDMyIEBACiAgICAgICAgIHBhc3MKIAogZGVmIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpOgotICAgICIiIk1vdmUgYSBQRVAgMzE0NyBweWMvcHlvIGZpbGUgdG8gaXRzIGxlZ2FjeSBweWMvcHlvIGxvY2F0aW9uLgotCi0gICAgVGhlIGNob2ljZSBvZiAucHljIG9yIC5weW8gZXh0ZW5zaW9uIGlzIGRvbmUgYmFzZWQgb24gdGhlIF9fZGVidWdfXyBmbGFnCi0gICAgdmFsdWUuCisgICAgIiIiTW92ZSBhIFBFUCAzMTQ3LzQ4OCBweWMgZmlsZSB0byBpdHMgbGVnYWN5IHB5YyBsb2NhdGlvbi4KIAogICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZS4gIFRoZSBzb3VyY2UgZmlsZQotICAgICAgICBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0LCBob3dldmVyIHRoZSBQRVAgMzE0NyBweWMgZmlsZSBtdXN0IGV4aXN0LgorICAgICAgICBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0LCBob3dldmVyIHRoZSBQRVAgMzE0Ny80ODggcHljIGZpbGUgbXVzdCBleGlzdC4KICAgICA6cmV0dXJuOiBUaGUgZmlsZSBzeXN0ZW0gcGF0aCB0byB0aGUgbGVnYWN5IHB5YyBmaWxlLgogICAgICIiIgogICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgIHVwX29uZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc291cmNlKSkKLSAgICBsZWdhY3lfcHljID0gb3MucGF0aC5qb2luKHVwX29uZSwgc291cmNlICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpKQorICAgIGxlZ2FjeV9weWMgPSBvcy5wYXRoLmpvaW4odXBfb25lLCBzb3VyY2UgKyAnYycpCiAgICAgb3MucmVuYW1lKHB5Y19maWxlLCBsZWdhY3lfcHljKQogICAgIHJldHVybiBsZWdhY3lfcHljCiAKIGRlZiBmb3JnZXQobW9kbmFtZSk6CiAgICAgIiIiJ0ZvcmdldCcgYSBtb2R1bGUgd2FzIGV2ZXIgaW1wb3J0ZWQuCiAKLSAgICBUaGlzIHJlbW92ZXMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIGFuZCBkZWxldGVzIGFueSBQRVAgMzE0NyBvcgotICAgIGxlZ2FjeSAucHljIGFuZCAucHlvIGZpbGVzLgorICAgIFRoaXMgcmVtb3ZlcyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIGRlbGV0ZXMgYW55IFBFUCAzMTQ3LzQ4OCBvcgorICAgIGxlZ2FjeSAucHljIGZpbGVzLgogICAgICIiIgogICAgIHVubG9hZChtb2RuYW1lKQogICAgIGZvciBkaXJuYW1lIGluIHN5cy5wYXRoOgogICAgICAgICBzb3VyY2UgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgbW9kbmFtZSArICcucHknKQogICAgICAgICAjIEl0IGRvZXNuJ3QgbWF0dGVyIGlmIHRoZXkgZXhpc3Qgb3Igbm90LCB1bmxpbmsgYWxsIHBvc3NpYmxlCi0gICAgICAgICMgY29tYmluYXRpb25zIG9mIFBFUCAzMTQ3IGFuZCBsZWdhY3kgcHljIGFuZCBweW8gZmlsZXMuCisgICAgICAgICMgY29tYmluYXRpb25zIG9mIFBFUCAzMTQ3LzQ4OCBhbmQgbGVnYWN5IHB5YyBmaWxlcy4KICAgICAgICAgdW5saW5rKHNvdXJjZSArICdjJykKLSAgICAgICAgdW5saW5rKHNvdXJjZSArICdvJykKLSAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCi0gICAgICAgIHVubGluayhpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgZm9yIG9wdCBpbiAoJycsIDEsIDIpOgorICAgICAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgb3B0aW1pemF0aW9uPW9wdCkpCiAKICMgQ2hlY2sgd2hldGhlciBhIGd1aSBpcyBhY3R1YWxseSBhdmFpbGFibGUKIGRlZiBfaXNfZ3VpX2F2YWlsYWJsZSgpOgpAQCAtMTA0Miw3ICsxMDM4LDggQEAKICAgICAjIFZlcmlmeSB0aGUgcmVxdWlyZW1lbnQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBmaWxlCiAgICAgcmVxdWlyZXMoJ3VybGZldGNoJykKIAotICAgIHByaW50KCdcdGZldGNoaW5nICVzIC4uLicgJSB1cmwsIGZpbGU9Z2V0X29yaWdpbmFsX3N0ZG91dCgpKQorICAgIGlmIHZlcmJvc2U6CisgICAgICAgIHByaW50KCdcdGZldGNoaW5nICVzIC4uLicgJSB1cmwsIGZpbGU9Z2V0X29yaWdpbmFsX3N0ZG91dCgpKQogICAgIG9wZW5lciA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcigpCiAgICAgaWYgZ3ppcDoKICAgICAgICAgb3BlbmVyLmFkZGhlYWRlcnMuYXBwZW5kKCgnQWNjZXB0LUVuY29kaW5nJywgJ2d6aXAnKSkKQEAgLTIxODcsNiArMjE4NCwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAorZGVmIGRldGVjdF9hcGlfbWlzbWF0Y2gocmVmX2FwaSwgb3RoZXJfYXBpLCAqLCBpZ25vcmU9KCkpOgorICAgICIiIlJldHVybnMgdGhlIHNldCBvZiBpdGVtcyBpbiByZWZfYXBpIG5vdCBpbiBvdGhlcl9hcGksIGV4Y2VwdCBmb3IgYQorICAgIGRlZmluZWQgbGlzdCBvZiBpdGVtcyB0byBiZSBpZ25vcmVkIGluIHRoaXMgY2hlY2suCisKKyAgICBCeSBkZWZhdWx0IHRoaXMgc2tpcHMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGJlZ2lubmluZyB3aXRoICdfJyBidXQKKyAgICBpbmNsdWRlcyBhbGwgbWFnaWMgbWV0aG9kcywgaS5lLiB0aG9zZSBzdGFydGluZyBhbmQgZW5kaW5nIGluICdfXycuCisgICAgIiIiCisgICAgbWlzc2luZ19pdGVtcyA9IHNldChkaXIocmVmX2FwaSkpIC0gc2V0KGRpcihvdGhlcl9hcGkpKQorICAgIGlmIGlnbm9yZToKKyAgICAgICAgbWlzc2luZ19pdGVtcyAtPSBzZXQoaWdub3JlKQorICAgIG1pc3NpbmdfaXRlbXMgPSBzZXQobSBmb3IgbSBpbiBtaXNzaW5nX2l0ZW1zCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbS5zdGFydHN3aXRoKCdfJykgb3IgbS5lbmRzd2l0aCgnX18nKSkKKyAgICByZXR1cm4gbWlzc2luZ19pdGVtcworCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCkBAIC0yMTk0LDYgKzIyMDYsNyBAQAogICAgIGRpc2FibGUgdGhlIGNyZWF0aW9uIG9mIGNvcmVkdW1wIGZpbGUuCiAgICAgIiIiCiAgICAgb2xkX3ZhbHVlID0gTm9uZQorICAgIG9sZF9tb2RlcyA9IE5vbmUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIk9uIFdpbmRvd3MsIGRpc2FibGUgV2luZG93cyBFcnJvciBSZXBvcnRpbmcgZGlhbG9ncyB1c2luZwpAQCAtMjIxMSw2ICsyMjI0LDI2IEBACiAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1ggPSAweDAyCiAgICAgICAgICAgICBzZWxmLm9sZF92YWx1ZSA9IHNlbGYuX2szMi5TZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YKQogICAgICAgICAgICAgc2VsZi5fazMyLlNldEVycm9yTW9kZShzZWxmLm9sZF92YWx1ZSB8IFNFTV9OT0dQRkFVTFRFUlJPUkJPWCkKKworICAgICAgICAgICAgIyBTdXBwcmVzcyBhc3NlcnQgZGlhbG9ncyBpbiBkZWJ1ZyBidWlsZHMKKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMzMTQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBtc3ZjcnQgb3IgYSByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9tb2RlcyA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlIGluIFttc3ZjcnQuQ1JUX1dBUk4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNSVF9BU1NFUlRdOgorICAgICAgICAgICAgICAgICAgICBvbGRfbW9kZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBvbGRfZmlsZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYub2xkX21vZGVzW3JlcG9ydF90eXBlXSA9IG9sZF9tb2RlLCBvbGRfZmlsZQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yMjQyLDYgKzIyNzUsMTIgQEAKIAogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBzZWxmLl9rMzIuU2V0RXJyb3JNb2RlKHNlbGYub2xkX3ZhbHVlKQorCisgICAgICAgICAgICBpZiBzZWxmLm9sZF9tb2RlczoKKyAgICAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlLCAob2xkX21vZGUsIG9sZF9maWxlKSBpbiBzZWxmLm9sZF9tb2Rlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShyZXBvcnRfdHlwZSwgb2xkX21vZGUpCisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLCBvbGRfZmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHJlc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zdXBwb3J0L3NjcmlwdF9oZWxwZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpyZW5hbWUgdG8gTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGIyOTM5MmYuLjU4NGIwZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CkBAIC0xNCwxMyArMTQsMTMgQEAKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljLCBzdHJpcF9weXRob25fc3RkZXJyLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5Yywgc3RyaXBfcHl0aG9uX3N0ZGVycgogCiAKICMgQ2FjaGVkIHJlc3VsdCBvZiB0aGUgZXhwZW5zaXZlIHRlc3QgcGVyZm9ybWVkIGluIHRoZSBmdW5jdGlvbiBiZWxvdy4KIF9fY2FjaGVkX2ludGVycF9yZXF1aXJlc19lbnZpcm9ubWVudCA9IE5vbmUKIAotZGVmIF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpOgorZGVmIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIG91ciBzeXMuZXhlY3V0YWJsZSBpbnRlcnByZXRlciByZXF1aXJlcyBlbnZpcm9ubWVudAogICAgIHZhcmlhYmxlcyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJ1biBhdCBhbGwuCkBAIC01Nyw3ICs1Nyw3IEBACiAKICMgRXhlY3V0aW5nIHRoZSBpbnRlcnByZXRlciBpbiBhIHN1YnByb2Nlc3MKIGRlZiBydW5fcHl0aG9uX3VudGlsX2VuZCgqYXJncywgKiplbnZfdmFycyk6Ci0gICAgZW52X3JlcXVpcmVkID0gX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKKyAgICBlbnZfcmVxdWlyZWQgPSBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCiAgICAgaWYgJ19faXNvbGF0ZWQnIGluIGVudl92YXJzOgogICAgICAgICBpc29sYXRlZCA9IGVudl92YXJzLnBvcCgnX19pc29sYXRlZCcpCiAgICAgZWxzZToKQEAgLTk1LDEwICs5NSwzMCBAQAogZGVmIF9hc3NlcnRfcHl0aG9uKGV4cGVjdGVkX3N1Y2Nlc3MsICphcmdzLCAqKmVudl92YXJzKToKICAgICByZXMsIGNtZF9saW5lID0gcnVuX3B5dGhvbl91bnRpbF9lbmQoKmFyZ3MsICoqZW52X3ZhcnMpCiAgICAgaWYgKHJlcy5yYyBhbmQgZXhwZWN0ZWRfc3VjY2Vzcykgb3IgKG5vdCByZXMucmMgYW5kIG5vdCBleHBlY3RlZF9zdWNjZXNzKToKLSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZCwgY29tbWFuZCBsaW5lIHdhczogJXIsICIKLSAgICAgICAgICAgICJzdGRlcnIgZm9sbG93czpcbiVzIiAlIChyZXMucmMsIGNtZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5lcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSkpCisgICAgICAgICMgTGltaXQgdG8gODAgbGluZXMgdG8gQVNDSUkgY2hhcmFjdGVycworICAgICAgICBtYXhsZW4gPSA4MCAqIDEwMAorICAgICAgICBvdXQsIGVyciA9IHJlcy5vdXQsIHJlcy5lcnIKKyAgICAgICAgaWYgbGVuKG91dCkgPiBtYXhsZW46CisgICAgICAgICAgICBvdXQgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZG91dCAuLi4pJyArIG91dFstbWF4bGVuOl0KKyAgICAgICAgaWYgbGVuKGVycikgPiBtYXhsZW46CisgICAgICAgICAgICBlcnIgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZGVyciAuLi4pJyArIGVyclstbWF4bGVuOl0KKyAgICAgICAgb3V0ID0gb3V0LmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpLnJzdHJpcCgpCisgICAgICAgIGVyciA9IGVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKS5yc3RyaXAoKQorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCBsaW5lOiAlclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGRvdXQ6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyZXMucmMsIGNtZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycikpCiAgICAgcmV0dXJuIHJlcwogCiBkZWYgYXNzZXJ0X3B5dGhvbl9vaygqYXJncywgKiplbnZfdmFycyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkKaW5kZXggNmY3M2M3Zi4uNTU5YTE4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2Z1dHVyZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19mdXR1cmVfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgX19mdXR1cmVfXwogCiBHT09EX1NFUklBTFMgPSAoImFscGhhIiwgImJldGEiLCAiY2FuZGlkYXRlIiwgImZpbmFsIikKQEAgLTU4LDggKzU3LDUgQEAKICAgICAgICAgICAgICAgICAgICAiLmNvbXBpbGVyX2ZsYWcgaXNuJ3QgaW50IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnV0dXJlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5CmluZGV4IDAxNTJlOWQuLjEwNzVkZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29wY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vcGNvZGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgZGlzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogaW1wb3J0IHVuaXR0ZXN0CiAKIF9vcGNvZGUgPSBpbXBvcnRfbW9kdWxlKCJfb3Bjb2RlIikKQEAgLTE2LDggKzE2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnQlVJTERfU0xJQ0UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnUE9QX1RPUCddLCAwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE9wY29kZVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CmluZGV4IDVkY2FkZjcuLmFjNjMyNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC0yNzMsOSArMjczLDUgQEAKICAgICAgICAgcmVzdWx0ID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goY29uZmlnX3ZhcnMsICcgJywgJyAnLCAnICcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdtYWNvc3gnLCAnMTAuNicsICdmYXQnKSwgcmVzdWx0KQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RfT1NYU3VwcG9ydCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggZWNjNTUwNy4uMjdiZmFkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC0yMCwxNSArMjAsNiBAQAogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgYXNzZXJ0RXF1YWwoc2VsZiwgb2JqMSwgb2JqMik6Ci0gICAgICAgIGlmIG9iajEgIT0gb2JqMjoKLSAgICAgICAgICAgIHByaW50KCcnKQotICAgICAgICAgICAgcHJpbnQocmVwcihvYmoxKSkKLSAgICAgICAgICAgIHByaW50KHJlcHIob2JqMikpCi0gICAgICAgICAgICBwcmludChvYmoxKQotICAgICAgICAgICAgcHJpbnQob2JqMikKLSAgICAgICAgc3VwZXIoVGVzdENhc2UsIHNlbGYpLmFzc2VydEVxdWFsKG9iajEsIG9iajIpCi0KICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgVGhlIHRlc3RzIGFzc3VtZSB0aGF0IGxpbmUgd3JhcHBpbmcgb2NjdXJzIGF0IDgwIGNvbHVtbnMsIGJ1dCB0aGlzCiAgICAgICAgICMgYmVoYXZpb3VyIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIENPTFVNTlMgZW52aXJvbm1lbnQKQEAgLTc4LDkgKzY5LDYgQEAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAKIGNsYXNzIEFyZ3VtZW50UGFyc2VyRXJyb3IoRXhjZXB0aW9uKToKIApAQCAtNzY1LDYgKzc1MywzOSBAQAogICAgIF0KIAogCitjbGFzcyBUZXN0T3B0aW9uYWxzQWxsb3dMb25nQWJicmV2aWF0aW9uKFBhcnNlclRlc3RDYXNlKToKKyAgICAiIiJBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseSIiIgorCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctLWZvbycpLAorICAgICAgICBTaWcoJy0tZm9vYmF6JyksCisgICAgICAgIFNpZygnLS1mb29ibGUnLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKKyAgICBdCisgICAgZmFpbHVyZXMgPSBbJy0tZm9vYiA1JywgJy0tZm9vYiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29iYXo9Tm9uZSwgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb28gNycsIE5TKGZvbz0nNycsIGZvb2Jhej1Ob25lLCBmb29ibGU9RmFsc2UpKSwKKyAgICAgICAgKCctLWZvb2JhIGEnLCBOUyhmb289Tm9uZSwgZm9vYmF6PSdhJywgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb29ibCAtLWZvbyBnJywgTlMoZm9vPSdnJywgZm9vYmF6PU5vbmUsIGZvb2JsZT1UcnVlKSksCisgICAgXQorCisKK2NsYXNzIFRlc3RPcHRpb25hbHNEaXNhbGxvd0xvbmdBYmJyZXZpYXRpb24oUGFyc2VyVGVzdENhc2UpOgorICAgICIiIkRvIG5vdCBhbGxvdyBhYmJyZXZpYXRpb25zIG9mIGxvbmcgb3B0aW9ucyBhdCBhbGwiIiIKKworICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYWxsb3dfYWJicmV2PUZhbHNlKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLS1mb28nKSwKKyAgICAgICAgU2lnKCctLWZvb2RsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAorICAgICAgICBTaWcoJy0tZm9vbmx5JyksCisgICAgXQorICAgIGZhaWx1cmVzID0gWyctZm9vbiAzJywgJy0tZm9vbiAzJywgJy0tZm9vZCcsICctLWZvb2QgLS1mb28gMiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29kbGU9RmFsc2UsIGZvb25seT1Ob25lKSksCisgICAgICAgICgnLS1mb28gMycsIE5TKGZvbz0nMycsIGZvb2RsZT1GYWxzZSwgZm9vbmx5PU5vbmUpKSwKKyAgICAgICAgKCctLWZvb25seSA3IC0tZm9vZGxlIC0tZm9vIDInLCBOUyhmb289JzInLCBmb29kbGU9VHJ1ZSwgZm9vbmx5PSc3JykpLAorICAgIF0KKwogIyA9PT09PT09PT09PT09PT09CiAjIFBvc2l0aW9uYWwgdGVzdHMKICMgPT09PT09PT09PT09PT09PQpAQCAtMTk5MywxNCArMjAxNCw5IEBACiAgICAgICAgICAgICAnJycpKQogCiAgICAgZGVmIF90ZXN0X3N1YnBhcnNlcl9oZWxwKHNlbGYsIGFyZ3Nfc3RyLCBleHBlY3RlZF9oZWxwKToKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQotICAgICAgICBleGNlcHQgQXJndW1lbnRQYXJzZXJFcnJvcjoKLSAgICAgICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBlcnIuc3Rkb3V0ICE9IGV4cGVjdGVkX2hlbHA6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF9oZWxwKSkKLSAgICAgICAgICAgICAgICBwcmludChyZXByKGVyci5zdGRvdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3Rkb3V0LCBleHBlY3RlZF9oZWxwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2hlbHAsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9zdWJwYXJzZXIxX2hlbHAoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc3VicGFyc2VyX2hlbHAoJzUuMCAxIC1oJywgdGV4dHdyYXAuZGVkZW50KCcnJ1wKQEAgLTI4NDYsMTUgKzI4NjIsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9kZWZhdWx0KHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiZm9vIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCiAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1iYXIiLCB0eXBlPWludCwgZGVmYXVsdD00MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZm9vPSJiYWRnZXIiKQpAQCAtMjg2OSwxOCArMjg4NSwxNiBAQAogCiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBpbiBucywgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgbm90IGluIG5zLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd4JywgbnMpCiAKICAgICBkZWYgdGVzdF9ub25fZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKHg9MSwgeT0yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneCcgbm90IGluIG5zLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneScgaW4gbnMsIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4eCcgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd6JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCd4JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3knLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneHgnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneicsIG5zKQogCiAjID09PT09PT09PT09PT09PT09PT09PQogIyBIZWxwIGZvcm1hdHRpbmcgdGVzdHMKQEAgLTI5MzYsMTMgKzI5NTAsNiBAQAogICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIHRlc3RlciwgcGFyc2VyX3RleHQpOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBnZXRhdHRyKHRlc3Rlciwgc2VsZi5mdW5jX3N1ZmZpeCkKICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gdGV4dHdyYXAuZGVkZW50KGV4cGVjdGVkX3RleHQpCi0gICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dCAhPSBwYXJzZXJfdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF90ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihwYXJzZXJfdGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIGZvciBjaGFyMSwgY2hhcjIgaW4gemlwKGV4cGVjdGVkX3RleHQsIHBhcnNlcl90ZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIxICE9IGNoYXIyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaXJzdCBkaWZmOiAlciAlcicgJSAoY2hhcjEsIGNoYXIyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRlc3Rlci5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCBwYXJzZXJfdGV4dCkKIAogICAgICAgICAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYsIHRlc3Rlcik6CkBAIC00MjIxLDI0ICs0MjI4LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VmFsdWVFcnJvcignZm9vJywgYWN0aW9uPSdiYXonKQogICAgICAgICBzZWxmLmFzc2VydFZhbHVlRXJyb3IoJy0tZm9vJywgYWN0aW9uPSgnc3RvcmUnLCAnYXBwZW5kJykpCiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1mb28iLCBhY3Rpb249InN0b3JlLXRydWUiKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAndW5rbm93biBhY3Rpb24nCi0gICAgICAgICAgICBtc2cgPSAnZXhwZWN0ZWQgJXIsIGZvdW5kICVyJyAlIChleHBlY3RlZCwgZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZCBpbiBzdHIoZSksIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndW5rbm93biBhY3Rpb24nLCBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX2Rlc3Qoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudChkZXN0PSdmb28nKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdiYXInLCBkZXN0PSdiYXonKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnZGVzdCBzdXBwbGllZCB0d2ljZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCcKLSAgICAgICAgICAgIG1zZyA9ICdleHBlY3RlZCAlciwgZm91bmQgJXInICUgKGV4cGVjdGVkLCBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkIGluIHN0cihlKSwgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkZXN0IHN1cHBsaWVkIHR3aWNlIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X25vX2FyZ3VtZW50X2FjdGlvbnMoc2VsZik6CiAgICAgICAgIGZvciBhY3Rpb24gaW4gWydzdG9yZV9jb25zdCcsICdzdG9yZV90cnVlJywgJ3N0b3JlX2ZhbHNlJywKQEAgLTQzOTUsMTggKzQzOTUsMTAgQEAKIGNsYXNzIFRlc3RPcHRpb25hbHNIZWxwVmVyc2lvbkFjdGlvbnMoVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGhlbHAgYW5kIHZlcnNpb24gYWN0aW9ucyIiIgogCi0gICAgZGVmIF9nZXRfZXJyb3Ioc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBBcmd1bWVudFBhcnNlckVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpCi0KICAgICBkZWYgYXNzZXJ0UHJpbnRIZWxwRXhpdChzZWxmLCBwYXJzZXIsIGFyZ3Nfc3RyKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBhcnNlci5mb3JtYXRfaGVscCgpLAotICAgICAgICAgICAgc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzX3N0ci5zcGxpdCgpKS5zdGRvdXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5mb3JtYXRfaGVscCgpLCBjbS5leGNlcHRpb24uc3Rkb3V0KQogCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQpAQCAtNDQyMSw4ICs0NDEzLDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKLSAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZG91dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJy12J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BQUCAzLjVcbicsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDQzNCw4ICs0NDI3LDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2FjdGlvbihzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nWFhYJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLVYnLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSclKHByb2cpcyAzLjcnKQotICAgICAgICBtc2cgPSBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIFsnLVYnXSkuc3Rkb3V0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hYWCAzLjdcbicsIG1zZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnLVYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFhYIDMuN1xuJywgY20uZXhjZXB0aW9uLnN0ZG91dCkKIAogICAgIGRlZiB0ZXN0X25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDYwNSwxNCArNDU5OSwxMCBAQAogCiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCBhZGRfaGVscD1GYWxzZSkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgneCcsIHR5cGU9c3BhbSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydYWFgnXSkKLSAgICAgICAgZXhjZXB0IEFyZ3VtZW50UGFyc2VyRXJyb3I6Ci0gICAgICAgICAgICBleHBlY3RlZCA9ICd1c2FnZTogUFJPRyB4XG5QUk9HOiBlcnJvcjogYXJndW1lbnQgeDogc3BhbSFcbicKLSAgICAgICAgICAgIG1zZyA9IHN5cy5leGNfaW5mbygpWzFdLnN0ZGVycgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgbXNnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndXNhZ2U6IFBST0cgeFxuUFJPRzogZXJyb3I6IGFyZ3VtZW50IHg6IHNwYW0hXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5zdGRlcnIpCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PQogIyBNZXNzYWdlQ29udGVudEVycm9yIHRlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCAwN2M5YmY5Li4xMGQ5OTQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTM5NCw3ICszOTQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF90b2Zyb21zdHJpbmcoc2VsZik6Ci0gICAgICAgIG5iX3dhcm5pbmdzID0gNAorICAgICAgICAjIFdhcm5pbmdzIG5vdCByYWlzZWQgd2hlbiBhcmd1bWVudHMgYXJlIGluY29ycmVjdCBhcyBBcmd1bWVudCBDbGluaWMKKyAgICAgICAgIyBoYW5kbGVzIHRoYXQgYmVmb3JlIHRoZSB3YXJuaW5nIGNhbiBiZSByYWlzZWQuCisgICAgICAgIG5iX3dhcm5pbmdzID0gMgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXIiKHRvfGZyb20pc3RyaW5nXChcKSBpcyBkZXByZWNhdGVkIiwKQEAgLTEwMzksNiArMTA0MSwxMSBAQAogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsICJmb28iKQogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGFycmF5LmFycmF5KCd1JywgJ2ZvbycpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb2Jzb2xldGVfd3JpdGVfbG9jayhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGJ1ZmZlcl93aXRoX251bGxfdmlldworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKIGNsYXNzIFN0cmluZ1Rlc3QoQmFzZVRlc3QpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzZGxfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTY0MjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpAQCAtMCwwICsxLDEyMiBAQAorIiIiVGVzdHMgZm9yIHRoZSBhc2RsIHBhcnNlciBpbiBQYXJzZXIvYXNkbC5weSIiIgorCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IG9zCitmcm9tIG9zLnBhdGggaW1wb3J0IGRpcm5hbWUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB1bml0dGVzdAorCisKKyMgVGhpcyB0ZXN0IGlzIG9ubHkgcmVsZXZhbnQgZm9yIGZyb20tc291cmNlIGJ1aWxkcyBvZiBQeXRob24uCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCd0ZXN0IGlycmVsZXZhbnQgZm9yIGFuIGluc3RhbGxlZCBQeXRob24nKQorCitzcmNfYmFzZSA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fZmlsZV9fKSkpCitwYXJzZXJfZGlyID0gb3MucGF0aC5qb2luKHNyY19iYXNlLCAnUGFyc2VyJykKKworCitjbGFzcyBUZXN0QXNkbFBhcnNlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIyBMb2FkcyB0aGUgYXNkbCBtb2R1bGUgZHluYW1pY2FsbHksIHNpbmNlIGl0J3Mgbm90IGluIGEgcmVhbCBpbXBvcnRhYmxlCisgICAgICAgICMgcGFja2FnZS4KKyAgICAgICAgIyBQYXJzZXMgUHl0aG9uLmFzZGwgaW50byBhIGFzdC5Nb2R1bGUgYW5kIHJ1biB0aGUgY2hlY2sgb24gaXQuCisgICAgICAgICMgVGhlcmUncyBubyBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggdGVzdCBtZXRob2QsIGhlbmNlIHNldFVwQ2xhc3MuCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBwYXJzZXJfZGlyKQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoCisgICAgICAgICAgICAgICAgJ2FzZGwnLCBvcy5wYXRoLmpvaW4ocGFyc2VyX2RpciwgJ2FzZGwucHknKSkKKyAgICAgICAgY2xzLmFzZGwgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBjbHMubW9kID0gY2xzLmFzZGwucGFyc2Uob3MucGF0aC5qb2luKHBhcnNlcl9kaXIsICdQeXRob24uYXNkbCcpKQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjbHMuYXNkbC5jaGVjayhjbHMubW9kKSwgJ01vZHVsZSB2YWxpZGF0aW9uIGZhaWxlZCcpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBhbGlhcyBzdHVmZiBmcm9tIHRoZSBjbGFzcywgZm9yIGNvbnZlbmllbmNlCisgICAgICAgIHNlbGYuYXNkbCA9IFRlc3RBc2RsUGFyc2VyLmFzZGwKKyAgICAgICAgc2VsZi5tb2QgPSBUZXN0QXNkbFBhcnNlci5tb2QKKyAgICAgICAgc2VsZi50eXBlcyA9IHNlbGYubW9kLnR5cGVzCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tb2QubmFtZSwgJ1B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N0bXQnLCBzZWxmLnR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdleHByJywgc2VsZi50eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbW9kJywgc2VsZi50eXBlcykKKworICAgIGRlZiB0ZXN0X2RlZmluaXRpb25zKHNlbGYpOgorICAgICAgICBkZWZzID0gc2VsZi5tb2QuZGZucworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmc1swXSwgc2VsZi5hc2RsLlR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZWZzWzBdLnZhbHVlLCBzZWxmLmFzZGwuU3VtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnR5cGVzWyd3aXRoaXRlbSddLCBzZWxmLmFzZGwuUHJvZHVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYudHlwZXNbJ2FsaWFzJ10sIHNlbGYuYXNkbC5Qcm9kdWN0KQorCisgICAgZGVmIHRlc3RfcHJvZHVjdChzZWxmKToKKyAgICAgICAgYWxpYXMgPSBzZWxmLnR5cGVzWydhbGlhcyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoYWxpYXMpLAorICAgICAgICAgICAgJ1Byb2R1Y3QoW0ZpZWxkKGlkZW50aWZpZXIsIG5hbWUpLCBGaWVsZChpZGVudGlmaWVyLCBhc25hbWUsIG9wdD1UcnVlKV0pJykKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHN0bXQgPSBzZWxmLnR5cGVzWydzdG10J10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RtdC5hdHRyaWJ1dGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RtdC5hdHRyaWJ1dGVzWzBdKSwgJ0ZpZWxkKGludCwgbGluZW5vKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0bXQuYXR0cmlidXRlc1sxXSksICdGaWVsZChpbnQsIGNvbF9vZmZzZXQpJykKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgZWhhbmRsZXIgPSBzZWxmLnR5cGVzWydleGNlcHRoYW5kbGVyJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWhhbmRsZXIudHlwZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlaGFuZGxlci5hdHRyaWJ1dGVzKSwgMikKKworICAgICAgICBjb25zID0gZWhhbmRsZXIudHlwZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvbnMsIHNlbGYuYXNkbC5Db25zdHJ1Y3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29ucy5maWVsZHMpLCAzKQorCisgICAgICAgIGYwID0gY29ucy5maWVsZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMC50eXBlLCAnZXhwcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjAubmFtZSwgJ3R5cGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZjAub3B0KQorCisgICAgICAgIGYxID0gY29ucy5maWVsZHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMS50eXBlLCAnaWRlbnRpZmllcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjEubmFtZSwgJ25hbWUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEub3B0KQorCisgICAgICAgIGYyID0gY29ucy5maWVsZHNbMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMi50eXBlLCAnc3RtdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIubmFtZSwgJ2JvZHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYyLm9wdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYyLnNlcSkKKworICAgIGRlZiB0ZXN0X3Zpc2l0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEN1c3RvbVZpc2l0b3Ioc2VsZi5hc2RsLlZpc2l0b3JCYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWVzX3dpdGhfc2VxID0gW10KKworICAgICAgICAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CisgICAgICAgICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52aXNpdChkZm4pCisKKyAgICAgICAgICAgIGRlZiB2aXNpdFR5cGUoc2VsZiwgdHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi52aXNpdCh0eXBlLnZhbHVlKQorCisgICAgICAgICAgICBkZWYgdmlzaXRTdW0oc2VsZiwgc3VtKToKKyAgICAgICAgICAgICAgICBmb3IgdCBpbiBzdW0udHlwZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmlzaXQodCkKKworICAgICAgICAgICAgZGVmIHZpc2l0Q29uc3RydWN0b3Ioc2VsZiwgY29ucyk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gY29ucy5maWVsZHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGYuc2VxOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc193aXRoX3NlcS5hcHBlbmQoY29ucy5uYW1lKQorCisgICAgICAgIHYgPSBDdXN0b21WaXNpdG9yKCkKKyAgICAgICAgdi52aXNpdChzZWxmLnR5cGVzWydtb2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm5hbWVzX3dpdGhfc2VxLCBbJ01vZHVsZScsICdJbnRlcmFjdGl2ZScsICdTdWl0ZSddKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IGE1MzNmODYuLmMyMjBhM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC0xMDYsNiArMTA2LDEyIEBACiAgICAgIntyIGZvciBsIGluIHggaWYgZ30iLAogICAgICMgc2V0Y29tcCB3aXRoIG5ha2VkIHR1cGxlCiAgICAgIntyIGZvciBsLG0gaW4geH0iLAorICAgICMgQXN5bmNGdW5jdGlvbkRlZgorICAgICJhc3luYyBkZWYgZigpOlxuIGF3YWl0IHNvbWV0aGluZygpIiwKKyAgICAjIEFzeW5jRm9yCisgICAgImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgZm9yIGUgaW4gaTogMVxuIGVsc2U6IDIiLAorICAgICMgQXN5bmNXaXRoCisgICAgImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgd2l0aCBhIGFzIGI6IDEiLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC00MjcsMTcgKzQzMywxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUpLAogICAgICAgICAgICAgIk1vZHVsZShib2R5PVtFeHByKHZhbHVlPUNhbGwoZnVuYz1OYW1lKGlkPSdzcGFtJywgY3R4PUxvYWQoKSksICIKICAgICAgICAgICAgICJhcmdzPVtOYW1lKGlkPSdlZ2dzJywgY3R4PUxvYWQoKSksIFN0cihzPSdhbmQgY2hlZXNlJyldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lKSldKSIKKyAgICAgICAgICAgICJrZXl3b3Jkcz1bXSkpXSkiCiAgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChub2RlLCBhbm5vdGF0ZV9maWVsZHM9RmFsc2UpLAogICAgICAgICAgICAgIk1vZHVsZShbRXhwcihDYWxsKE5hbWUoJ3NwYW0nLCBMb2FkKCkpLCBbTmFtZSgnZWdncycsIExvYWQoKSksICIKLSAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdLCBOb25lLCBOb25lKSldKSIKKyAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdKSldKSIKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUsIGluY2x1ZGVfYXR0cmlidXRlcz1UcnVlKSwKICAgICAgICAgICAgICJNb2R1bGUoYm9keT1bRXhwcih2YWx1ZT1DYWxsKGZ1bmM9TmFtZShpZD0nc3BhbScsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD0wKSwgYXJncz1bTmFtZShpZD0nZWdncycsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD01KSwgU3RyKHM9J2FuZCBjaGVlc2UnLCBsaW5lbm89MSwgIgotICAgICAgICAgICAgImNvbF9vZmZzZXQ9MTEpXSwga2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCAiCisgICAgICAgICAgICAiY29sX29mZnNldD0xMSldLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0pIgogICAgICAgICApCiAKQEAgLTQ1MywxNiArNDU5LDE2IEBACiAgICAgZGVmIHRlc3RfZml4X21pc3NpbmdfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBzcmMgPSBhc3QucGFyc2UoJ3dyaXRlKCJzcGFtIiknKQogICAgICAgICBzcmMuYm9keS5hcHBlbmQoYXN0LkV4cHIoYXN0LkNhbGwoYXN0Lk5hbWUoJ3NwYW0nLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3QuU3RyKCdlZ2dzJyldLCBbXSwgTm9uZSwgTm9uZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5TdHIoJ2VnZ3MnKV0sIFtdKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjLCBhc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKHNyYykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAoc3JjLCBpbmNsdWRlX2F0dHJpYnV0ZXM9VHJ1ZSksCiAgICAgICAgICAgICAiTW9kdWxlKGJvZHk9W0V4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3dyaXRlJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBhcmdzPVtTdHIocz0nc3BhbScsIGxpbmVubz0xLCAiCi0gICAgICAgICAgICAiY29sX29mZnNldD02KV0sIGtleXdvcmRzPVtdLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwgIgorICAgICAgICAgICAgImNvbF9vZmZzZXQ9NildLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKSwgIgogICAgICAgICAgICAgIkV4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3NwYW0nLCBjdHg9TG9hZCgpLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGFyZ3M9W1N0cihzPSdlZ2dzJywgbGluZW5vPTEsIGNvbF9vZmZzZXQ9MCldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCBsaW5lbm89MSwgIgorICAgICAgICAgICAgImtleXdvcmRzPVtdLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGxpbmVubz0xLCBjb2xfb2Zmc2V0PTApXSkiCiAgICAgICAgICkKIApAQCAtNDg3LDggKzQ5Myw3IEBACiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ2ZvbygpJywgbW9kZT0nZXZhbCcpCiAgICAgICAgIGQgPSBkaWN0KGFzdC5pdGVyX2ZpZWxkcyhub2RlLmJvZHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQucG9wKCdmdW5jJykuaWQsICdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2t3YXJncyc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJzogW10sICdzdGFyYXJncyc6IE5vbmV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2FyZ3MnOiBbXX0pCiAKICAgICBkZWYgdGVzdF9pdGVyX2NoaWxkX25vZGVzKHNlbGYpOgogICAgICAgICBub2RlID0gYXN0LnBhcnNlKCJzcGFtKDIzLCA0MiwgZWdncz0nbGVlaycpIiwgbW9kZT0nZXZhbCcpCkBAIC02MDQsOCArNjA5LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5zdG10KQogCiAgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6Ci0gICAgICAgIGRlZiBjbHMoYmFzZXM9Tm9uZSwga2V5d29yZHM9Tm9uZSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsCi0gICAgICAgICAgICAgICAgYm9keT1Ob25lLCBkZWNvcmF0b3JfbGlzdD1Ob25lKToKKyAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgogICAgICAgICAgICAgaWYgYmFzZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICBiYXNlcyA9IFtdCiAgICAgICAgICAgICBpZiBrZXl3b3JkcyBpcyBOb25lOgpAQCAtNjE0LDE2ICs2MTgsMTIgQEAKICAgICAgICAgICAgICAgICBib2R5ID0gW2FzdC5QYXNzKCldCiAgICAgICAgICAgICBpZiBkZWNvcmF0b3JfbGlzdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gW10KLSAgICAgICAgICAgIHJldHVybiBhc3QuQ2xhc3NEZWYoIm15Y2xhc3MiLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0KQorICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYmFzZXM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoa2V5d29yZHM9W2FzdC5rZXl3b3JkKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIHNlbGYuc3RtdChjbHMoc3RhcmFyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAotICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBzZWxmLnN0bXQoY2xzKGt3YXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCi0gICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bXSksICJlbXB0eSBib2R5IG9uIENsYXNzRGVmIikKICAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBzZWxmLnN0bXQoY2xzKGRlY29yYXRvcl9saXN0PVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLApAQCAtODU0LDIwICs4NTQsMTIgQEAKICAgICAgICAgZnVuYyA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKICAgICAgICAgYXJncyA9IFthc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpXQogICAgICAgICBrZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LkxvYWQoKSkpXQotICAgICAgICBzdGFyYXJnID0gYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKQotICAgICAgICBrd2FyZyA9IGFzdC5OYW1lKCJxIiwgYXN0LkxvYWQoKSkKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFyZ3MsIGtleXdvcmRzKQogICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBbTm9uZV0sIGtleXdvcmRzKQogICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIk5vbmUgZGlzYWxsb3dlZCIpCiAgICAgICAgIGJhZF9rZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpKV0KLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCi0gICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSksIGt3YXJnKQotICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgidyIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKIAogICAgIGRlZiB0ZXN0X251bShzZWxmKToKQEAgLTk1Nyw4ICs5NDksOCBAQAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCAoJ2FyZycsICgxLCA3KSwgJ2FyZ3MnLCBOb25lKSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sICgnYXJnJywgKDEsIDgpLCAna3dhcmdzJywgTm9uZSksIFtdKSwgWygnUGFzcycsICgxLCAxNykpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgKDEsIDYpLCAnYScsIE5vbmUpLCAoJ2FyZycsICgxLCA5KSwgJ2InLCBOb25lKSwgKCdhcmcnLCAoMSwgMTQpLCAnYycsIE5vbmUpLCAoJ2FyZycsICgxLCAyMiksICdkJywgTm9uZSksICgnYXJnJywgKDEsIDI4KSwgJ2UnLCBOb25lKV0sICgnYXJnJywgKDEsIDM1KSwgJ2FyZ3MnLCBOb25lKSwgWygnYXJnJywgKDEsIDQxKSwgJ2YnLCBOb25lKV0sIFsoJ051bScsICgxLCA0MyksIDQyKV0sICgnYXJnJywgKDEsIDQ5KSwgJ2t3YXJncycsIE5vbmUpLCBbKCdOdW0nLCAoMSwgMTEpLCAxKSwgKCdOYW1lQ29uc3RhbnQnLCAoMSwgMTYpLCBOb25lKSwgKCdMaXN0JywgKDEsIDI0KSwgW10sICgnTG9hZCcsKSksICgnRGljdCcsICgxLCAzMCksIFtdLCBbXSldKSwgWygnUGFzcycsICgxLCA1OCkpXSwgW10sIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFtdLCBbXSwgTm9uZSwgTm9uZSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnQ2xhc3NEZWYnLCAoMSwgMCksICdDJywgWygnTmFtZScsICgxLCA4KSwgJ29iamVjdCcsICgnTG9hZCcsKSldLCBbXSwgTm9uZSwgTm9uZSwgWygnUGFzcycsICgxLCAxNykpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFtdLCBbXSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnQ2xhc3NEZWYnLCAoMSwgMCksICdDJywgWygnTmFtZScsICgxLCA4KSwgJ29iamVjdCcsICgnTG9hZCcsKSldLCBbXSwgWygnUGFzcycsICgxLCAxNykpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdSZXR1cm4nLCAoMSwgOCksICgnTnVtJywgKDEsIDE1KSwgMSkpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0RlbGV0ZScsICgxLCAwKSwgWygnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ0RlbCcsKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NpZ24nLCAoMSwgMCksIFsoJ05hbWUnLCAoMSwgMCksICd2JywgKCdTdG9yZScsKSldLCAoJ051bScsICgxLCA0KSwgMSkpXSksCkBAIC05NjgsNyArOTYwLDcgQEAKICgnTW9kdWxlJywgWygnSWYnLCAoMSwgMCksICgnTmFtZScsICgxLCAzKSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDUpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMTMpKV0pXSksCiAoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpLCAoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDEzKSwgJ3onLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAncScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMjEpKV0pXSksCi0oJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdLCBOb25lLCBOb25lKSwgTm9uZSldKSwKKygnTW9kdWxlJywgWygnUmFpc2UnLCAoMSwgMCksICgnQ2FsbCcsICgxLCA2KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10pLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdLCBbXSldKSwKICgnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFtdLCBbXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NlcnQnLCAoMSwgMCksICgnTmFtZScsICgxLCA3KSwgJ3YnLCAoJ0xvYWQnLCkpLCBOb25lKV0pLApAQCAtOTg4LDYgKzk4MCw5IEBACiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnQXdhaXQnLCAoMiwgMSksICgnQ2FsbCcsICgyLCA3KSwgKCdOYW1lJywgKDIsIDcpLCAnc29tZXRoaW5nJywgKCdMb2FkJywpKSwgW10sIFtdKSkpXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jRm9yJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgMTEpLCAnZScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTYpLCAnaScsICgnTG9hZCcsKSksIFsoJ0V4cHInLCAoMiwgMTkpLCAoJ051bScsICgyLCAxOSksIDEpKV0sIFsoJ0V4cHInLCAoMywgNyksICgnTnVtJywgKDMsIDcpLCAyKSldKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY1dpdGgnLCAoMiwgNyksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDIsIDEyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMiwgMTcpLCAnYicsICgnU3RvcmUnLCkpKV0sIFsoJ0V4cHInLCAoMiwgMjApLCAoJ051bScsICgyLCAyMCksIDEpKV0pXSwgW10sIE5vbmUpXSksCiBdCiBzaW5nbGVfcmVzdWx0cyA9IFsKICgnSW50ZXJhY3RpdmUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksICgnQWRkJywpLCAoJ051bScsICgxLCAyKSwgMikpKV0pLApAQCAtOTk4LDE0ICs5OTMsMTQgQEAKICgnRXhwcmVzc2lvbicsICgnQmluT3AnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ0FkZCcsKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSkpKSwKICgnRXhwcmVzc2lvbicsICgnVW5hcnlPcCcsICgxLCAwKSwgKCdOb3QnLCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ0xvYWQnLCkpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0xhbWJkYScsICgxLCAwKSwgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksICgnTmFtZUNvbnN0YW50JywgKDEsIDcpLCBOb25lKSkpLAotKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbKCdOdW0nLCAoMSwgMiksIDEpXSwgWygnTnVtJywgKDEsIDQpLCAyKV0pKSwKKygnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAyKSwgWygnTnVtJywgKDEsIDIpLCAxKV0sIFsoJ051bScsICgxLCA0KSwgMildKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFtdLCBbXSkpLAotKCdFeHByZXNzaW9uJywgKCdTZXQnLCAoMSwgMCksIFsoJ05hbWVDb25zdGFudCcsICgxLCAxKSwgTm9uZSldKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFsoJ051bScsICgyLCA2KSwgMSldLCBbKCdOdW0nLCAoNCwgMTApLCAyKV0pKSwKKygnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDEpLCBbKCdOYW1lQ29uc3RhbnQnLCAoMSwgMSksIE5vbmUpXSkpLAorKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDIsIDYpLCBbKCdOdW0nLCAoMiwgNiksIDEpXSwgWygnTnVtJywgKDQsIDEwKSwgMildKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAogKCdFeHByZXNzaW9uJywgKCdDb21wYXJlJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksIFsoJ0x0JywpLCAoJ0x0JywpXSwgWygnTnVtJywgKDEsIDQpLCAyKSwgKCdOdW0nLCAoMSwgOCksIDMpXSkpLAotKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpXSwgWygna2V5d29yZCcsICdjJywgKCdOdW0nLCAoMSwgOCksIDMpKV0sICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE1KSwgJ2UnLCAoJ0xvYWQnLCkpKSksCisoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2YnLCAoJ0xvYWQnLCkpLCBbKCdOdW0nLCAoMSwgMiksIDEpLCAoJ051bScsICgxLCA0KSwgMiksICgnU3RhcnJlZCcsICgxLCAxMCksICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdMb2FkJywpKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSksICgna2V5d29yZCcsIE5vbmUsICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ051bScsICgxLCAwKSwgMTApKSwKICgnRXhwcmVzc2lvbicsICgnU3RyJywgKDEsIDApLCAnc3RyaW5nJykpLAogKCdFeHByZXNzaW9uJywgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSkpLApAQCAtMTAxNiw2ICsxMDExLDYgQEAKICgnRXhwcmVzc2lvbicsICgnVHVwbGUnLCAoMSwgMCksIFsoJ051bScsICgxLCAwKSwgMSksICgnTnVtJywgKDEsIDIpLCAyKSwgKCdOdW0nLCAoMSwgNCksIDMpXSwgKCdMb2FkJywpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1R1cGxlJywgKDEsIDEpLCBbKCdOdW0nLCAoMSwgMSksIDEpLCAoJ051bScsICgxLCAzKSwgMiksICgnTnVtJywgKDEsIDUpLCAzKV0sICgnTG9hZCcsKSkpLAogKCdFeHByZXNzaW9uJywgKCdUdXBsZScsICgxLCAwKSwgW10sICgnTG9hZCcsKSkpLAotKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAnYycsICgnTG9hZCcsKSksICdkJywgKCdMb2FkJywpKSwgWygnU3Vic2NyaXB0JywgKDEsIDgpLCAoJ0F0dHJpYnV0ZScsICgxLCA4KSwgKCdOYW1lJywgKDEsIDgpLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSwgKCdTbGljZScsICgnTnVtJywgKDEsIDEyKSwgMSksICgnTnVtJywgKDEsIDE0KSwgMiksIE5vbmUpLCAoJ0xvYWQnLCkpXSwgW10sIE5vbmUsIE5vbmUpKSwKKygnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSwgJ2MnLCAoJ0xvYWQnLCkpLCAnZCcsICgnTG9hZCcsKSksIFsoJ1N1YnNjcmlwdCcsICgxLCA4KSwgKCdBdHRyaWJ1dGUnLCAoMSwgOCksICgnTmFtZScsICgxLCA4KSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICgnU2xpY2UnLCAoJ051bScsICgxLCAxMiksIDEpLCAoJ051bScsICgxLCAxNCksIDIpLCBOb25lKSwgKCdMb2FkJywpKV0sIFtdKSksCiBdCiBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDJkYzlkMGMuLjNhMzNmYzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNiArMTIsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM4LDcgKzM5LDcgQEAKICAgICAgICAgICAgIHNlbGYuc3RhcnRfcmVzZW5kX2V2ZW50ID0gTm9uZQogCiAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnNvY2subGlzdGVuKDEpCisgICAgICAgICAgICBzZWxmLnNvY2subGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuZXZlbnQuc2V0KCkKICAgICAgICAgICAgIGNvbm4sIGNsaWVudCA9IHNlbGYuc29jay5hY2NlcHQoKQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKQEAgLTI5OCw3ICsyOTksMTAgQEAKIAogY2xhc3MgVGVzdEZpZm8odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCiAgICAgICAgIGYucHVzaCg3KQogICAgICAgICBmLnB1c2goYidhJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDIpCkBAIC0zMTMsNyArMzE3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDAsIE5vbmUpKQogCiAgICAgZGVmIHRlc3RfZ2l2ZW5fbGlzdChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oW2IneCcsIDE3LCAzXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206CisgICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbyhbYid4JywgMTcsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCBiJ3gnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgMTcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfcGVwNDkyLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfcGVwNDkyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMGUyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9wZXA0OTIucHkKQEAgLTAsMCArMSwxMzggQEAKKyIiIlRlc3RzIHN1cHBvcnQgZm9yIG5ldyBzeW50YXggaW50cm9kdWNlZCBieSBQRVAgNDkyLiIiIgorCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKK2ltcG9ydCBhc3luY2lvCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKKworCitjbGFzcyBCYXNlVGVzdCh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5CYXNlRXZlbnRMb29wKCkKKyAgICAgICAgc2VsZi5sb29wLl9wcm9jZXNzX2V2ZW50cyA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYubG9vcC5fc2VsZWN0b3IgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmxvb3AuX3NlbGVjdG9yLnNlbGVjdC5yZXR1cm5fdmFsdWUgPSAoKQorICAgICAgICBzZWxmLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKKworCitjbGFzcyBMb2NrVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2FzeW5jX3dpdGgoc2VsZik6CisgICAgICAgIHByaW1pdGl2ZXMgPSBbCisgICAgICAgICAgICBhc3luY2lvLkxvY2sobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Db25kaXRpb24obG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5TZW1hcGhvcmUobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Cb3VuZGVkU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgXQorCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KGxvY2spOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbG9jayBhcyBfbG9jazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKF9sb2NrLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisKKyAgICAgICAgZm9yIHByaW1pdGl2ZSBpbiBwcmltaXRpdmVzOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0ZXN0KHByaW1pdGl2ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByaW1pdGl2ZS5sb2NrZWQoKSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl93aXRoX2F3YWl0KHNlbGYpOgorICAgICAgICBwcmltaXRpdmVzID0gWworICAgICAgICAgICAgYXN5bmNpby5Mb2NrKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQ29uZGl0aW9uKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQm91bmRlZFNlbWFwaG9yZShsb29wPXNlbGYubG9vcCksCisgICAgICAgIF0KKworICAgICAgICBhc3luYyBkZWYgdGVzdChsb2NrKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICB3aXRoIGF3YWl0IGxvY2sgYXMgX2xvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhfbG9jaywgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmxvY2tlZCgpKQorCisgICAgICAgIGZvciBwcmltaXRpdmUgaW4gcHJpbWl0aXZlczoKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGVzdChwcmltaXRpdmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcmltaXRpdmUubG9ja2VkKCkpCisKKworY2xhc3MgU3RyZWFtUmVhZGVyVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIERBVEEgPSBiJ2xpbmUxXG5saW5lMlxubGluZTMnCisKKyAgICAgICAgc3RyZWFtID0gYXN5bmNpby5TdHJlYW1SZWFkZXIobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHN0cmVhbS5mZWVkX2RhdGEoREFUQSkKKyAgICAgICAgc3RyZWFtLmZlZWRfZW9mKCkKKworICAgICAgICBhc3luYyBkZWYgcmVhZGVyKCk6CisgICAgICAgICAgICBkYXRhID0gW10KKyAgICAgICAgICAgIGFzeW5jIGZvciBsaW5lIGluIHN0cmVhbToKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShyZWFkZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBbYidsaW5lMVxuJywgYidsaW5lMlxuJywgYidsaW5lMyddKQorCisKK2NsYXNzIENvcm91dGluZVRlc3RzKEJhc2VUZXN0KToKKworICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uaXNjb3JvdXRpbmUoZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmcKKworICAgICAgICAjIFRlc3QgdGhhdCBhc3luY2lvLmlzY29yb3V0aW5lKCkgdXNlcyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lCisgICAgICAgIGNsYXNzIEZha2VDb3JvOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogeWllbGQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZShGYWtlQ29ybygpKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX3JldHVybmluZ19hd2FpdGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgnc3BhbScsKQorCisgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgcmV0dXJuIEF3YWl0YWJsZSgpCisKKyAgICAgICAgY29ybyA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm8uc2VuZChOb25lKSwgJ3NwYW0nKQorICAgICAgICBjb3JvLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2RlZF9jb3JvdXRpbmVzKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBiYXIoKQorCisgICAgICAgICMgcHJvZHVjdGlvbiBtb2RlCisgICAgICAgIGRhdGEgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICdzcGFtJykKKworICAgICAgICAjIGRlYnVnIG1vZGUKKyAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAnc3BhbScpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCBkNDQ3MjZkLi4zODU3OTE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGVycm5vCiBpbXBvcnQgc3RydWN0Ci1pbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCkBAIC02NSw3ICs2NCw3IEBACiAjIHVzZWQgd2hlbiB0ZXN0aW5nIHNlbmRlcnM7IGp1c3QgY29sbGVjdHMgd2hhdCBpdCBnZXRzIHVudGlsIG5ld2xpbmUgaXMgc2VudAogZGVmIGNhcHR1cmVfc2VydmVyKGV2dCwgYnVmLCBzZXJ2KToKICAgICB0cnk6Ci0gICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgIHBhc3MKQEAgLTI5OCwyMyArMjk3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmc6IHVuaGFuZGxlZCBjb25uZWN0IGV2ZW50J10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgZXhwZWN0ZWQpCiAKLSAgICBkZWYgdGVzdF9pc3N1ZV84NTk0KHNlbGYpOgotICAgICAgICAjIFhYWCAtIHRoaXMgdGVzdCBpcyBzdXBwb3NlZCB0byBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgUHl0aG9uCi0gICAgICAgICMgdmVyc2lvbgotICAgICAgICBkID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KCkpCi0gICAgICAgICMgbWFrZSBzdXJlIHRoZSBlcnJvciBtZXNzYWdlIG5vIGxvbmdlciByZWZlcnMgdG8gdGhlIHNvY2tldAotICAgICAgICAjIG9iamVjdCBidXQgdGhlIGRpc3BhdGNoZXIgaW5zdGFuY2UgaW5zdGVhZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnZGlzcGF0Y2hlciBpbnN0YW5jZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0ciwgZCwgJ2ZvbycpCi0gICAgICAgICMgY2hlYXAgaW5oZXJpdGFuY2Ugd2l0aCB0aGUgdW5kZXJseWluZyBzb2NrZXQgaXMgc3VwcG9zZWQKLSAgICAgICAgIyB0byBzdGlsbCB3b3JrIGJ1dCBhIERlcHJlY2F0aW9uV2FybmluZyBpcyBleHBlY3RlZAotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQotICAgICAgICAgICAgZmFtaWx5ID0gZC5mYW1pbHkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKSkKLQogICAgIGRlZiB0ZXN0X3N0cmVycm9yKHNlbGYpOgogICAgICAgICAjIHJlZmVycyB0byBidWcgIzg1NzMKICAgICAgICAgZXJyID0gYXN5bmNvcmUuX3N0cmVycm9yKGVycm5vLkVQRVJNKQpAQCAtMzMxLDkgKzMxMyw4IEBACiAgICAgZGVmIGhhbmRsZV9jb25uZWN0KHNlbGYpOgogICAgICAgICBwYXNzCiAKLWNsYXNzIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB1c2Vwb2xsID0gRmFsc2UKIAorY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC0zODMsMTAgKzM2NCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJqb2luKCkgdGltZWQgb3V0IikKIAogCi0KLWNsYXNzIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzX1VzZVBvbGwoRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHMpOgotICAgIHVzZXBvbGwgPSBUcnVlCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoYXN5bmNvcmUsICdmaWxlX3dyYXBwZXInKSwKICAgICAgICAgICAgICAgICAgICAgICdhc3luY29yZS5maWxlX3dyYXBwZXIgcmVxdWlyZWQnKQogY2xhc3MgRmlsZVdyYXBwZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkKaW5kZXggNzBkMmYxYy4uMTcyYmQyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkKQEAgLTE3Nyw5ICsxNzcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXhpdC5fbmNhbGxiYWNrcygpLCBuKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CmluZGV4IDBlNzVjNmIuLjUwOTNlOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CkBAIC0xLDYgKzEsNSBAQAogIyBBdWdtZW50ZWQgYXNzaWdubWVudCB0ZXN0LgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogCkBAIC0xMzYsNiArMTM1LDE0IEBACiAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19pbXVsX18gY2FsbGVkIikKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCisgICAgICAgICAgICBkZWYgX19tYXRtdWxfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9fbWF0bXVsX18gY2FsbGVkIikKKyAgICAgICAgICAgIGRlZiBfX3JtYXRtdWxfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9fcm1hdG11bF9fIGNhbGxlZCIpCisgICAgICAgICAgICBkZWYgX19pbWF0bXVsX18oc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJfX2ltYXRtdWxfXyBjYWxsZWQiKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKICAgICAgICAgICAgIGRlZiBfX2Zsb29yZGl2X18oc2VsZiwgdmFsKToKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJfX2Zsb29yZGl2X18gY2FsbGVkIikKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgpAQCAtMjI1LDYgKzIzMiwxMCBAQAogICAgICAgICAxICogeAogICAgICAgICB4ICo9IDEKIAorICAgICAgICB4IEAgMQorICAgICAgICAxIEAgeAorICAgICAgICB4IEA9IDEKKwogICAgICAgICB4IC8gMQogICAgICAgICAxIC8geAogICAgICAgICB4IC89IDEKQEAgLTI3MSw2ICsyODIsOSBAQAogX19tdWxfXyBjYWxsZWQKIF9fcm11bF9fIGNhbGxlZAogX19pbXVsX18gY2FsbGVkCitfX21hdG11bF9fIGNhbGxlZAorX19ybWF0bXVsX18gY2FsbGVkCitfX2ltYXRtdWxfXyBjYWxsZWQKIF9fdHJ1ZWRpdl9fIGNhbGxlZAogX19ydHJ1ZWRpdl9fIGNhbGxlZAogX19pdHJ1ZWRpdl9fIGNhbGxlZApAQCAtMzAwLDggKzMxNCw1IEBACiBfX2lsc2hpZnRfXyBjYWxsZWQKICcnJy5zcGxpdGxpbmVzKCkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQXVnQXNzaWduVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggNTBhZDU2ZS4uNGU2Nzg4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGUgYmluYXNjaWkgQyBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBhcnJheQpAQCAtMjc0LDExICsyNzMsNSBAQAogICAgIHR5cGUydGVzdCA9IG1lbW9yeXZpZXcKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVhcnJheUJpbkFTQ0lJVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3QmluQVNDSUlUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCA5YzRjMThlLi4zMWRjNzg1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTM2OSw4ICszNjksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBDKSwgWydDLl9fZ2VfXycsICdCLl9fbGVfXyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBDLCBCKSwgWydDLl9fbGVfXycsICdCLl9fZ2VfXyddKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUmF0VGVzdENhc2UsIE9wZXJhdGlvbk9yZGVyVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKaW5kZXggYWExNTM3Ny4uNjgwMzE1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTExLDYgKzExLDcgQEAKICMgbWVtb3J5dmlldyB0ZXN0cyBpcyBub3cgaW4gdGhpcyBtb2R1bGUuCiAjCiAKK2ltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdApAQCAtMjE2LDcgKzIxNyw3IEBACiAgICAgZm9yIHQgaW4gaXRlcl9tb2RlKG5pdGVtcywgdGVzdG9iaik6CiAgICAgICAgIHlpZWxkIHQKICAgICBpZiB0ZXN0b2JqICE9ICduZGFycmF5JzoKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICByZXR1cm4KICAgICB5aWVsZCBzdHJ1Y3RfaXRlbXMobml0ZW1zLCB0ZXN0b2JqKQogCiAKQEAgLTEwMDcsNiArMTAwOCw3IEBACiAgICAgICAgICMgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAogICAgICAgICBzdHJ1Y3R1cmUgPSAoCiAgICAgICAgICAgICAoW10sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMSwzLDFdLCBbXSwgMCksCiAgICAgICAgICAgICAoWzEyXSwgW10sIDApLAogICAgICAgICAgICAgKFsxMl0sIFstMV0sIDExKSwKICAgICAgICAgICAgIChbNl0sIFsyXSwgMCksCkBAIC0xMDc4LDYgKzEwODAsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQU5ZX0NPTlRJR1VPVVMpCiAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKIAorICAgICAgICAjIElzc3VlICMyMjQ0NTogTmV3IHByZWNpc2UgY29udGlndWl0eSBkZWZpbml0aW9uLgorICAgICAgICBmb3Igc2hhcGUgaW4gWzEsMTIsMV0sIFs3LDAsN106CisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gMCwgTkRfRk9SVFJBTjoKKyAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1vcmRlcnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhleCwgJ0YnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhleCwgJ0MnKSkKKworICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9ZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19jb250aWd1b3VzKG5kLCAnRicpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhuZCwgJ0MnKSkKKwogICAgIGRlZiB0ZXN0X25kYXJyYXlfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQogICAgICAgICBuZG0gPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCkBAIC0yNDU0LDcgKzI0NjgsNyBAQAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2l6ZW9mKHNlbGYpOgogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAgICAgICAgIHZzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUKLSAgICAgICAgYmFzZV9zdHJ1Y3QgPSAnUG5pbiAyUDJuMmk1UCAzY1AnCisgICAgICAgIGJhc2Vfc3RydWN0ID0gJ1BuaW4gMlAybjJpNVAgUCcKICAgICAgICAgcGVyX2RpbSA9ICczbicKIAogICAgICAgICBpdGVtcyA9IGxpc3QocmFuZ2UoOCkpCkBAIC0yODEyLDYgKzI4MjYsMTMgQEAKICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjkuMCBpbiBtIiwgbG9jYWxzKCkpCiAKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihzZWxmLCBkaW0pOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyBvbiBkaW1lbnNpb24gJWQiICUgKGRpbSwpKQorCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19pbmRleChzZWxmKToKIAogICAgICAgICAjIG5kaW0gPSAwCkBAIC0yODM4LDEyICsyODU5LDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIC04KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCA4KQogCi0gICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsCiAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzAsIDBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMiwgMF0sIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyLCAzXSwgMTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMSwgLTFdLCAxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0zLCAtNF0sIDApCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIGZvciBpbmRleCBpbiAoMywgLTQpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0xKToKKyAgICAgICAgICAgICAgICBtW2luZGV4LCAwXQorICAgICAgICBmb3IgaW5kZXggaW4gKDQsIC01KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihkaW09Mik6CisgICAgICAgICAgICAgICAgbVswLCBpbmRleF0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgKDIqKjY0LCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgKDAsIDIqKjY0KSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sICgwLCAwLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMC4wLCAwLjApKQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKIAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfYXNzaWduKHNlbGYpOgpAQCAtMjkzMiwxMCArMjk3MiwyNyBAQAogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKIAotICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbAogICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCiAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWzAsMV0gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4WzBdWzFdLCA0MikKKyAgICAgICAgbVstMSwtMV0gPSA0MworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4WzJdWzNdLCA0MykKKyAgICAgICAgIyBlcnJvcnMKKyAgICAgICAgZm9yIGluZGV4IGluICgzLCAtNCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3IoZGltPTEpOgorICAgICAgICAgICAgICAgIG1baW5kZXgsIDBdID0gMAorICAgICAgICBmb3IgaW5kZXggaW4gKDQsIC01KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihkaW09Mik6CisgICAgICAgICAgICAgICAgbVswLCBpbmRleF0gPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sICgyKio2NCwgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sICgwLCAyKio2NCksIDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAoMCwgMCwgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgKDAuMCwgMC4wKSwgMCkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgWzIsIDNdKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zbGljZShzZWxmKToKQEAgLTI5NDgsOCArMzAwNSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMiwwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KFsxLDJdKSkKIAotICAgICAgICAjIGludmFsaWQgc2xpY2Uga2V5Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisgICAgICAgICMgMC1kaW0gc2xpY2luZyAoaWRlbnRpdHkgZnVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQogCiAgICAgICAgICMgbXVsdGlkaW1lbnNpb25hbCBzbGljZXMKICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggMTQzNjZjNi4uY2RiYjJjYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtMTYsNyArMTYsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBuZWcKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiB0cnk6CiAgICAgaW1wb3J0IHB0eSwgc2lnbmFsCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0zMTIsMTEgKzMxMiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBpbGUsICdwcmludCg0MilcbicsICc8c3RyaW5nPicsICdiYWRtb2RlJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgJ3ByaW50KDQyKVxuJywgJzxzdHJpbmc+JywgJ3NpbmdsZScsIDB4ZmYpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgY2hyKDApLCAnZicsICdleGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgY2hyKDApLCAnZicsICdleGVjJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCAncGFzcycsICc/JywgJ2V4ZWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPSdldmFsJywgc291cmNlPScwJywgZmlsZW5hbWU9J3RtcCcpCiAgICAgICAgIGNvbXBpbGUoJ3ByaW50KCJceGU1IilcbicsICcnLCAnZXhlYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgY2hyKDApLCAnZicsICdleGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgY2hyKDApLCAnZicsICdleGVjJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgc3RyKCdhID0gMScpLCAnZicsICdiYWQnKQogCiAgICAgICAgICMgdGVzdCB0aGUgb3B0aW1pemUgYXJndW1lbnQKQEAgLTEwOTQsNyArMTA5NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocG93KC0xLCAwLjUpLCAxaikKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChwb3coLTEsIDEvMyksIDAuNSArIDAuODY2MDI1NDAzNzg0NDM4NmopCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3csIC0xLCAtMiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG93LCAtMSwgLTIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvdywgMSwgMiwgMCkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvdykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IDZiNThlNzQuLjdmZjdmMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMzAxLDYgKzMwMSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnXHgwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICcxMiAgIFx4MDAgICAzNCcpCiAKKyAgICBkZWYgdGVzdF9oZXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIiIpLmhleCgpLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlYXJyYXkoWzB4MWEsIDB4MmIsIDB4MzBdKS5oZXgoKSwgJzFhMmIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYiJceDFhXHgyYlx4MzAiKS5oZXgoKSwgJzFhMmIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyhiIlx4MWFceDJiXHgzMCIpLmhleCgpLCAnMWEyYjMwJykKKwogICAgIGRlZiB0ZXN0X2pvaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYiIiKS5qb2luKFtdKSwgYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuam9pbihbYiIiXSksIGIiIikKQEAgLTQ2MSw2ICs0NjksMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpLCAzLCA5KSwgNykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIHcsIDEsIDMpCiAKKyAgICBkZWYgdGVzdF9tb2Qoc2VsZik6CisgICAgICAgIGIgPSBiJ2hlbGxvLCAlYiEnCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgPSBiICUgYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGInaGVsbG8sICViIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYiBpcyBvcmlnKQorICAgICAgICBiID0gYiclcyAvIDEwMCA9ICVkJSUnCisgICAgICAgIGEgPSBiICUgKGInc2V2ZW50eS1uaW5lJywgNzkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYidzZXZlbnR5LW5pbmUgLyAxMDAgPSA3OSUnKQorCisgICAgZGVmIHRlc3RfaW1vZChzZWxmKToKKyAgICAgICAgYiA9IGInaGVsbG8sICViIScKKyAgICAgICAgb3JpZyA9IGIKKyAgICAgICAgYiAlPSBiJ3dvcmxkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8sIHdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgYidoZWxsbywgJWIhJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBiJyVzIC8gMTAwID0gJWQlJScKKyAgICAgICAgYiAlPSAoYidzZXZlbnR5LW5pbmUnLCA3OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpCisKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZXBsYWNlKGInaScsIGInYScpLCBiJ21hc3Nhc3NhcHBhJykKQEAgLTcyMiw2ICs3NTIsMTEgQEAKIGNsYXNzIEJ5dGVzVGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKIAorICAgIGRlZiB0ZXN0X2dldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJieXRlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICBiJ3B5dGhvbidbJ2EnXQorCiAgICAgZGVmIHRlc3RfYnVmZmVyX2lzX3JlYWRvbmx5KHNlbGYpOgogICAgICAgICBmZCA9IG9zLm9wZW4oX19maWxlX18sIG9zLk9fUkRPTkxZKQogICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtNzc2LDYgKzgxMSwxNyBAQAogY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CiAKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICBieXRlYXJyYXkoYidweXRob24nKVsnYSddCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGIncHl0aG9uJykKKyAgICAgICAgICAgIGJbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9ub2hhc2goc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGFzaCwgYnl0ZWFycmF5KCkpCiAKQEAgLTk5MCw2ICsxMDM2LDI4IEBACiAgICAgICAgIGJbODpdID0gYgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJ5dGVhcnJheShsaXN0KHJhbmdlKDgpKSArIGxpc3QocmFuZ2UoMjU2KSkpKQogCisgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInaGVsbG8sICViIScpCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgPSBiICUgYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBieXRlYXJyYXkoYiclcyAvIDEwMCA9ICVkJSUnKQorICAgICAgICBhID0gYiAlIChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGJ5dGVhcnJheShiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpKQorCisgICAgZGVmIHRlc3RfaW1vZChzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKQorICAgICAgICBvcmlnID0gYgorICAgICAgICBiICU9IGInd29ybGQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbywgd29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBieXRlYXJyYXkoYidoZWxsbywgJWIhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYiBpcyBvcmlnKQorICAgICAgICBiID0gYnl0ZWFycmF5KGInJXMgLyAxMDAgPSAlZCUlJykKKyAgICAgICAgYiAlPSAoYidzZXZlbnR5LW5pbmUnLCA3OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBieXRlYXJyYXkoYidzZXZlbnR5LW5pbmUgLyAxMDAgPSA3OSUnKSkKKwogICAgIGRlZiB0ZXN0X2ljb25jYXQoc2VsZik6CiAgICAgICAgIGIgPSBieXRlYXJyYXkoYiJhYmMiKQogICAgICAgICBiMSA9IGIKQEAgLTExODAsNiArMTI0OCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZGVsc2xpY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgb3JpZykKIAorICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb2Jzb2xldGVfd3JpdGVfbG9jayhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGJ1ZmZlcl93aXRoX251bGxfdmlldworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBieXRlYXJyYXkoKSkKIAogY2xhc3MgQXNzb3J0ZWRCeXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMKQEAgLTEyOTAsMjAgKzEzNjIsMzUgQEAKICAgICAgICAgYiA9IGJ5dGVhcnJheSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYi5yZXBsYWNlKGInJywgYicnKSBpcyBiKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmZsYWdzLmJ5dGVzX3dhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkJ5dGVzV2FybmluZyBpcyBuZWVkZWQgZm9yIHRoaXMgdGVzdDogdXNlIC1iYiBvcHRpb24iKQogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5mbGFncy5ieXRlc193YXJuaW5nOgotICAgICAgICAgICAgZGVmIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSkKLSAgICAgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIGInJyA9PSAnJwotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYicnICE9ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBieXRlYXJyYXkoYicnKSA9PSAnJwotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgIT0gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkJ5dGVzV2FybmluZyBpcyBuZWVkZWQgZm9yIHRoaXMgdGVzdDogdXNlIC1iYiBvcHRpb24iKQorICAgICAgICBkZWYgYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgcmV0dXJuIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIEJ5dGVzV2FybmluZykpCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYicnID09ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgPT0gYicnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYicnICE9ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgIT0gYicnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgPT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyA9PSBieXRlYXJyYXkoYicnKQorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGJ5dGVhcnJheShiJycpICE9ICcnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgJycgIT0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJ1wwJyA9PSAwCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgMCA9PSBiJ1wwJworICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGInXDAnICE9IDAKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAwICE9IGInXDAnCiAKICAgICAjIE9wdGltaXphdGlvbnM6CiAgICAgIyBfX2l0ZXJfXz8gKG9wdGltaXphdGlvbikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggYmVlZjI3NS4uYTFlNGI4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTIsMTMgKzIsMTUgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfNEcKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlvIGltcG9ydCBCeXRlc0lPCitmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCBnbG9iCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluaworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtNTEsNiArNTMsMTkgQEAKICAgICBFTVBUWV9EQVRBID0gYidCWmg5XHgxN3JFOFBceDkwXHgwMFx4MDBceDAwXHgwMCcKICAgICBCQURfREFUQSA9IGIndGhpcyBpcyBub3QgYSB2YWxpZCBiemlwMiBmaWxlJwogCisgICAgIyBTb21lIHRlc3RzIG5lZWQgbW9yZSB0aGFuIG9uZSBibG9jayBvZiB1bmNvbXByZXNzZWQgZGF0YS4gU2luY2Ugb25lIGJsb2NrCisgICAgIyBpcyBhdCBsZWFzdCAxMDAga0IsIHdlIGdhdGhlciBzb21lIGRhdGEgZHluYW1pY2FsbHkgYW5kIGNvbXByZXNzIGl0LgorICAgICMgTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IGNvbXByZXNzaW9uIHdvcmtzIGNvcnJlY3RseSwgc28gd2UgY2Fubm90CisgICAgIyBzaW1wbHkgdXNlIHRoZSBiaWdnZXIgdGVzdCBkYXRhIGZvciBhbGwgdGVzdHMuCisgICAgdGVzdF9zaXplID0gMAorICAgIEJJR19URVhUID0gYnl0ZWFycmF5KDEyOCoxMDI0KQorICAgIGZvciBmbmFtZSBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcqLnB5JykpOgorICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyYicpIGFzIGZoOgorICAgICAgICAgICAgdGVzdF9zaXplICs9IGZoLnJlYWRpbnRvKG1lbW9yeXZpZXcoQklHX1RFWFQpW3Rlc3Rfc2l6ZTpdKQorICAgICAgICBpZiB0ZXN0X3NpemUgPiAxMjgqMTAyNDoKKyAgICAgICAgICAgIGJyZWFrCisgICAgQklHX0RBVEEgPSBiejIuY29tcHJlc3MoQklHX1RFWFQsIGNvbXByZXNzbGV2ZWw9MSkKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCiAKQEAgLTk2LDcgKzExMSw3IEBACiAgICAgZGVmIHRlc3RSZWFkKHNlbGYpOgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBmbG9hdCgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RSZWFkQmFkRmlsZShzZWxmKToKQEAgLTEwNywyMSArMTIyLDIxIEBACiAgICAgZGVmIHRlc3RSZWFkTXVsdGlTdHJlYW0oc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQogCiAgICAgZGVmIHRlc3RSZWFkTW9ua2V5TXVsdGlTdHJlYW0oc2VsZik6CiAgICAgICAgICMgVGVzdCBCWjJGaWxlLnJlYWQoKSBvbiBhIG11bHRpLXN0cmVhbSBhcmNoaXZlIHdoZXJlIGEgc3RyZWFtCiAgICAgICAgICMgYm91bmRhcnkgY29pbmNpZGVzIHdpdGggdGhlIGVuZCBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgotICAgICAgICBidWZmZXJfc2l6ZSA9IGJ6Mi5fQlVGRkVSX1NJWkUKLSAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGxlbihzZWxmLkRBVEEpCisgICAgICAgIGJ1ZmZlcl9zaXplID0gX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFCisgICAgICAgIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSA9IGxlbihzZWxmLkRBVEEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQogICAgICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogNSkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGJ6Mi5fQlVGRkVSX1NJWkUgPSBidWZmZXJfc2l6ZQorICAgICAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gYnVmZmVyX3NpemUKIAogICAgIGRlZiB0ZXN0UmVhZFRyYWlsaW5nSnVuayhzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdWZmaXg9c2VsZi5CQURfREFUQSkKQEAgLTEzNiw3ICsxNTEsNyBAQAogICAgIGRlZiB0ZXN0UmVhZDAoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgwKSwgYiIiKQogCiAgICAgZGVmIHRlc3RSZWFkQ2h1bmsxMChzZWxmKToKQEAgLTU0NSwxMyArNTYwLDI0IEBACiAgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCiAKKyAgICBkZWYgdGVzdERlY29tcHJlc3NMaW1pdGVkKHNlbGYpOgorICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKKyAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQorCisgICAgICAgIGRlY29tcCA9IEJaMkZpbGUoQnl0ZXNJTyhib21iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAorICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKKwogCiAgICAgIyBUZXN0cyBmb3IgYSBCWjJGaWxlIHdyYXBwaW5nIGFub3RoZXIgZmlsZSBvYmplY3Q6CiAKICAgICBkZWYgdGVzdFJlYWRCeXRlc0lPKHNlbGYpOgogICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CiAgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBmbG9hdCgpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmNsb3NlZCkKIApAQCAtNzA1LDYgKzczMSw5NSBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhCWjJEZWNvbXByZXNzb3IoKSwgcHJvdG8pCiAKKyAgICBkZWYgdGVzdERlY29tcHJlc3NvckNodW5rc01heHNpemUoc2VsZik6CisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG1heF9sZW5ndGggPSAxMDAKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIEZlZWQgc29tZSBpbnB1dAorICAgICAgICBsZW5fID0gbGVuKHNlbGYuQklHX0RBVEEpIC0gNjQKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkJJR19EQVRBWzpsZW5fXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2l0aG91dCBwcm92aWRpbmcgbW9yZSBpbnB1dAorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiemQubmVlZHNfaW5wdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgICMgUmV0cmlldmUgbW9yZSBkYXRhIHdoaWxlIHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5CSUdfREFUQVtsZW5fOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgICMgUmV0cmlldmUgcmVtYWluaW5nIHVuY29tcHJlc3NlZCBkYXRhCisgICAgICAgIHdoaWxlIG5vdCBiemQuZW9mOgorICAgICAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycsIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgb3V0ID0gYiIiLmpvaW4ob3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgc2VsZi5CSUdfVEVYVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiemQudW51c2VkX2RhdGEsIGIiIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8xKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgbW92aW5nIGV4aXN0aW5nCisgICAgICAgICMgY29udGVudHMgdG8gYmVnaW5uaW5nCisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgaW5wdXQgYnVmZmVyIGFuZCBmaWxsIGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKworICAgICAgICAjIFJldHJpZXZlIHNvbWUgcmVzdWx0cywgZnJlZWluZyBjYXBhY2l0eSBhdCBiZWdpbm5pbmcKKyAgICAgICAgIyBvZiBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycsIDIpKQorCisgICAgICAgICMgQWRkIG1vcmUgZGF0YSB0aGF0IGZpdHMgaW50byBpbnB1dCBidWZmZXIgYWZ0ZXIKKyAgICAgICAgIyBtb3ZpbmcgZXhpc3RpbmcgZGF0YSB0byBiZWdpbm5pbmcKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMTAwOjEwNV0sIDE1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzEwNTpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMihzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGJ5IGFwcGVuZGluZyBkYXRhIGF0IHRoZQorICAgICAgICAjIGVuZCByaWdodCBhd2F5CisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgaW5wdXQgYnVmZmVyIGFuZCBlbXB0eSBpdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVs6MjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTApLCBiJycpCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3MoYicnKSkKKworICAgICAgICAjIEZpbGwgYnVmZmVyIHdpdGggbmV3IGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMjAwOjI4MF0sIDIpKQorCisgICAgICAgICMgQXBwZW5kIHNvbWUgbW9yZSBkYXRhLCBub3QgZW5vdWdoIHRvIHJlcXVpcmUgcmVzaXplCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzI4MDozMDBdLCAyKSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGFmdGVyIGV4dGVuZGluZyBpdAorCisgICAgICAgIGJ6ZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgYWxtb3N0IGZ1bGwgaW5wdXQgYnVmZmVyCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoyMDBdLCA1KSkKKworICAgICAgICAjIEFkZCBldmVuIG1vcmUgZGF0YSB0byBpdCwgcmVxdWlyaW5nIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsyMDA6MzAwXSwgNSkpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVszMDA6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgc2VsZi5URVhUKQogCiBjbGFzcyBDb21wcmVzc0RlY29tcHJlc3NUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggOTE5Mzg1Ny4uODBlZDYzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC0yLDcgKzIsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBpbXBvcnQgdGltZQogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxsLnB5CmluZGV4IGMwMGNjYmEuLmUyYjhlMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGwucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIFRoZSB0ZXN0IGNhc2VzIGhlcmUgY292ZXIgc2V2ZXJhbCBwYXRocyB0aHJvdWdoIHRoZSBmdW5jdGlvbiBjYWxsaW5nCiAjIGNvZGUuICBUaGV5IGRlcGVuZCBvbiB0aGUgTUVUSF9YWFggZmxhZyB0aGF0IGlzIHVzZWQgdG8gZGVmaW5lIGEgQwpAQCAtMTIzLDkgKzEyMiw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgW10uY291bnQsIHg9MiwgeT0yKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDRnVuY3Rpb25DYWxscykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggMzZjNjIzNzYuLmVhZTNhZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKQEAgLTYsMTAgKzYsMTIgQEAKIGltcG9ydCByYW5kb20KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IE1JU1NJTkdfQ19ET0NTVFJJTkdTCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIHRyeToKICAgICBpbXBvcnQgX3Bvc2l4c3VicHJvY2VzcwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjEsNiArMjMsOSBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCiBfdGVzdGNhcGkgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCiAKKyMgV2VyZSB3ZSBjb21waWxlZCAtLXdpdGgtcHlkZWJ1ZyBvciB3aXRoICNkZWZpbmUgUHlfREVCVUc/CitQeV9ERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpCisKIAogZGVmIHRlc3RmdW5jdGlvbihzZWxmKToKICAgICAiIiJzb21lIGRvYyIiIgpAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLm5vX2RvY3N0cmluZy5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5ub19kb2NzdHJpbmcuX190ZXh0X3NpZ25hdHVyZV9fLCBOb25lKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ19lbXB0eS5fX2RvY19fLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ19lbXB0eS5fX3RleHRfc2lnbmF0dXJlX18sIE5vbmUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX25vX3NpZ25hdHVyZS5fX2RvY19fLApAQCAtMTQ1LDExICsxNTAsOTIgQEAKICAgICAgICAgICAgICJUaGlzIGRvY3N0cmluZyBoYXMgYSB2YWxpZCBzaWduYXR1cmUuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlLl9fdGV4dF9zaWduYXR1cmVfXywgIigkbW9kdWxlLCAvLCBzaWcpIikKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYy5fX2RvY19fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYy5fX3RleHRfc2lnbmF0dXJlX18sCisgICAgICAgICAgICAiKCRtb2R1bGUsIC8sIHNpZykiKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMuX19kb2NfXywKICAgICAgICAgICAgICJcblRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZSBhbmQgc29tZSBleHRyYSBuZXdsaW5lcy4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzLl9fdGV4dF9zaWduYXR1cmVfXywKICAgICAgICAgICAgICIoJG1vZHVsZSwgLywgcGFyYW1ldGVyKSIpCiAKKyAgICBkZWYgdGVzdF9jX3R5cGVfd2l0aF9tYXRyaXhfbXVsdGlwbGljYXRpb24oc2VsZik6CisgICAgICAgIE0gPSBfdGVzdGNhcGkubWF0bXVsVHlwZQorICAgICAgICBtMSA9IE0oKQorICAgICAgICBtMiA9IE0oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xIEAgbTIsICgibWF0bXVsIiwgbTEsIG0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSBAIDQyLCAoIm1hdG11bCIsIG0xLCA0MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDIgQCBtMSwgKCJtYXRtdWwiLCA0MiwgbTEpKQorICAgICAgICBvID0gbTEKKyAgICAgICAgbyBAPSBtMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sICgiaW1hdG11bCIsIG0xLCBtMikpCisgICAgICAgIG8gPSBtMQorICAgICAgICBvIEA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobywgKCJpbWF0bXVsIiwgbTEsIDQyKSkKKyAgICAgICAgbyA9IDQyCisgICAgICAgIG8gQD0gbTEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLCAoIm1hdG11bCIsIDQyLCBtMSkpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fbnVsbF93aXRob3V0X2Vycm9yKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMzU3MTogQSBmdW5jdGlvbiBtdXN0IG5vdCByZXR1cm4gTlVMTCB3aXRob3V0IHNldHRpbmcgYW4KKyAgICAgICAgIyBlcnJvcgorICAgICAgICBpZiBQeV9ERUJVRzoKKyAgICAgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnJldHVybl9udWxsX3dpdGhvdXRfZXJyb3IoKQorICAgICAgICAgICAgIiIiKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5yZXBsYWNlKGInXHInLCBiJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidGYXRhbCBQeXRob24gZXJyb3I6IGEgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3dpdGhvdXQgc2V0dGluZyBhbiBlcnJvclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidTeXN0ZW1FcnJvcjogPGJ1aWx0LWluIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3I+IHJldHVybmVkIE5VTEwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidDdXJyZW50IHRocmVhZC4qOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicicgIEZpbGUgLioiLCBsaW5lIDYgaW4gPG1vZHVsZT4nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnJldHVybl9udWxsX3dpdGhvdXRfZXJyb3IoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3IuKiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbiBlcnJvcicpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzNTcxOiBBIGZ1bmN0aW9uIG11c3Qgbm90IHJldHVybiBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldAorICAgICAgICBpZiBQeV9ERUJVRzoKKyAgICAgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnJldHVybl9yZXN1bHRfd2l0aF9lcnJvcigpCisgICAgICAgICAgICAiIiIpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLnJlcGxhY2UoYidccicsIGInJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0ZhdGFsIFB5dGhvbiBlcnJvcjogYSBmdW5jdGlvbiByZXR1cm5lZCBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnIncmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1ZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0R1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ2Fub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInU3lzdGVtRXJyb3I6IDxidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ2Z1bmN0aW9uIHJldHVybl9yZXN1bHRfd2l0aF9lcnJvcj4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInQ3VycmVudCB0aHJlYWQuKjpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInICBGaWxlIC4qLCBsaW5lIDYgaW4gPG1vZHVsZT4nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnJldHVybl9yZXN1bHRfd2l0aF9lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yLiogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQnKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUZXN0UGVuZGluZ0NhbGxzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI2NCw3ICszNTAsNyBAQAogICAgICAgICAgICAgZXhlbmFtZSArPSBleHQKICAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleGVwYXRoID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAiTW9kdWxlcyIpCisgICAgICAgICAgICBleGVwYXRoID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAiUHJvZ3JhbXMiKQogICAgICAgICBzZWxmLnRlc3RfZXhlID0gZXhlID0gb3MucGF0aC5qb2luKGV4ZXBhdGgsIGV4ZW5hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhleGUpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiJXIgZG9lc24ndCBleGlzdCIgJSBleGUpCkBAIC0yODMsMTIgKzM2OSwxMyBAQAogICAgICAgICBjbWQuZXh0ZW5kKGFyZ3MpCiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCByZXR1cm5jb2RlICVkLCBzdGRlcnIgaXMgJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAocC5yZXR1cm5jb2RlLCBlcnIpKQotICAgICAgICByZXR1cm4gb3V0LmRlY29kZSgibGF0aW4xIiksIGVyci5kZWNvZGUoImxhdGluMSIpCisgICAgICAgIHJldHVybiBvdXQsIGVycgogCiAgICAgZGVmIHRlc3Rfc3ViaW50ZXJwcyhzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIGp1c3QgYSAiZG9uJ3QgY3Jhc2giIHRlc3QKQEAgLTMxNSwzNCArNDAyLDM4IEBACiAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICBwcmludChvdXQpCiAgICAgICAgICAgICBwcmludChlcnIpCisgICAgICAgIGV4cGVjdGVkX2Vycm9ycyA9IHN5cy5fX3N0ZG91dF9fLmVycm9ycwogICAgICAgICBleHBlY3RlZF9zdGRpbl9lbmNvZGluZyA9IHN5cy5fX3N0ZGluX18uZW5jb2RpbmcKICAgICAgICAgZXhwZWN0ZWRfcGlwZV9lbmNvZGluZyA9IHNlbGYuX2dldF9kZWZhdWx0X3BpcGVfZW5jb2RpbmcoKQotICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBvcy5saW5lc2VwLmpvaW4oWworICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnXG4nLmpvaW4oWwogICAgICAgICAiLS0tIFVzZSBkZWZhdWx0cyAtLS0iLAogICAgICAgICAiRXhwZWN0ZWQgZW5jb2Rpbmc6IGRlZmF1bHQiLAogICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBkZWZhdWx0IiwKLSAgICAgICAgInN0ZGluOiB7MH06c3RyaWN0IiwKLSAgICAgICAgInN0ZG91dDogezF9OnN0cmljdCIsCi0gICAgICAgICJzdGRlcnI6IHsxfTpiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgInN0ZGluOiB7aW5fZW5jb2Rpbmd9OntlcnJvcnN9IiwKKyAgICAgICAgInN0ZG91dDoge291dF9lbmNvZGluZ306e2Vycm9yc30iLAorICAgICAgICAic3RkZXJyOiB7b3V0X2VuY29kaW5nfTpiYWNrc2xhc2hyZXBsYWNlIiwKICAgICAgICAgIi0tLSBTZXQgZXJyb3JzIG9ubHkgLS0tIiwKICAgICAgICAgIkV4cGVjdGVkIGVuY29kaW5nOiBkZWZhdWx0IiwKLSAgICAgICAgIkV4cGVjdGVkIGVycm9yczogc3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZGluOiB7MH06c3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZG91dDogezF9OnN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRlcnI6IHsxfTpiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgIkV4cGVjdGVkIGVycm9yczogaWdub3JlIiwKKyAgICAgICAgInN0ZGluOiB7aW5fZW5jb2Rpbmd9Omlnbm9yZSIsCisgICAgICAgICJzdGRvdXQ6IHtvdXRfZW5jb2Rpbmd9Omlnbm9yZSIsCisgICAgICAgICJzdGRlcnI6IHtvdXRfZW5jb2Rpbmd9OmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlbmNvZGluZyBvbmx5IC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogbGF0aW4tMSIsCiAgICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IGRlZmF1bHQiLAotICAgICAgICAic3RkaW46IGxhdGluLTE6c3RyaWN0IiwKLSAgICAgICAgInN0ZG91dDogbGF0aW4tMTpzdHJpY3QiLAorICAgICAgICAic3RkaW46IGxhdGluLTE6e2Vycm9yc30iLAorICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOntlcnJvcnN9IiwKICAgICAgICAgInN0ZGVycjogbGF0aW4tMTpiYWNrc2xhc2hyZXBsYWNlIiwKICAgICAgICAgIi0tLSBTZXQgZW5jb2RpbmcgYW5kIGVycm9ycyAtLS0iLAogICAgICAgICAiRXhwZWN0ZWQgZW5jb2Rpbmc6IGxhdGluLTEiLAotICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3RkaW46IGxhdGluLTE6c3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZG91dDogbGF0aW4tMTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3RkZXJyOiBsYXRpbi0xOmJhY2tzbGFzaHJlcGxhY2UiXSkuZm9ybWF0KGV4cGVjdGVkX3N0ZGluX2VuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BpcGVfZW5jb2RpbmcpCisgICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IHJlcGxhY2UiLAorICAgICAgICAic3RkaW46IGxhdGluLTE6cmVwbGFjZSIsCisgICAgICAgICJzdGRvdXQ6IGxhdGluLTE6cmVwbGFjZSIsCisgICAgICAgICJzdGRlcnI6IGxhdGluLTE6YmFja3NsYXNocmVwbGFjZSJdKQorICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBleHBlY3RlZF9vdXRwdXQuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9lbmNvZGluZz1leHBlY3RlZF9zdGRpbl9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X2VuY29kaW5nPWV4cGVjdGVkX3BpcGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1leHBlY3RlZF9lcnJvcnMpCiAgICAgICAgICMgVGhpcyBpcyB1c2VmdWwgaWYgd2UgZXZlciB0cmlwIG92ZXIgb2RkIHBsYXRmb3JtIGJlaGF2aW91cgogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkX291dHB1dCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggZDJjMzI2Yi4uYTdhOWQwMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgY2dpCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTMyNiw2ICszMjYsMTcgQEAKICAgICAgICAgICAgICAgICBnb3QgPSBnZXRhdHRyKGZpbGVzW3hdLCBrKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LCBleHApCiAKKyAgICBkZWYgdGVzdF9maWVsZHN0b3JhZ2VfYXNfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBmcCA9IEJ5dGVzSU8oYid4JyAqIDEwKQorICAgICAgICBlbnYgPSB7J1JFUVVFU1RfTUVUSE9EJzogJ1BVVCd9CisgICAgICAgIHdpdGggY2dpLkZpZWxkU3RvcmFnZShmcD1mcCwgZW52aXJvbj1lbnYpIGFzIGZzOgorICAgICAgICAgICAgY29udGVudCA9IGZzLmZpbGUucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZzLmZpbGUuY2xvc2VkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMuZmlsZS5jbG9zZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudCwgJ3gnICogMTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZScpOgorICAgICAgICAgICAgZnMuZmlsZS5yZWFkKCkKKwogICAgIF9xc19yZXN1bHQgPSB7CiAgICAgICAgICdrZXkxJzogJ3ZhbHVlMScsCiAgICAgICAgICdrZXkyJzogWyd2YWx1ZTJ4JywgJ3ZhbHVlMnknXSwKQEAgLTUwMCw5ICs1MTEsNSBAQAogLS1BYUIwM3gtLQogIiIiCiAKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChDZ2lUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weSBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKaW5kZXggMmUwNzJhOS4uYTg3YTQyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CkBAIC0xLDUgKzEsNSBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBjZ2l0YgpAQCAtNjMsOCArNjMsNSBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCc8L3A+Jywgb3V0KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdENnaXRiKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CmluZGV4IDYyMjY1ODcuLjQwNjRhZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CkBAIC00OSw4ICs0OSw1IEBACiAgICAgZGVmIHRlc3RfbWFwdG91bmRlZmluZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgc3RyLCBiJ2FiY1wwMDEnLCBjb2RlY25hbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENoYXJtYXBDb2RlY1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkgYi9MaWIvdGVzdC90ZXN0X2NsYXNzLnB5CmluZGV4IGUzODgzZDYuLjYwMzZlMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbGFzcy5weQpAQCAtMiw3ICsyLDYgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiB0ZXN0bWV0aHMgPSBbCiAKQEAgLTEzLDYgKzEyLDggQEAKICAgICAicnN1YiIsCiAgICAgIm11bCIsCiAgICAgInJtdWwiLAorICAgICJtYXRtdWwiLAorICAgICJybWF0bXVsIiwKICAgICAidHJ1ZWRpdiIsCiAgICAgInJ0cnVlZGl2IiwKICAgICAiZmxvb3JkaXYiLApAQCAtMTc3LDYgKzE3OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX3JtdWxfXyIsICh0ZXN0bWUsIDEpKV0pCiAKICAgICAgICAgY2FsbExzdFs6XSA9IFtdCisgICAgICAgIHRlc3RtZSBAIDEKKyAgICAgICAgc2VsZi5hc3NlcnRDYWxsU3RhY2soWygiX19tYXRtdWxfXyIsICh0ZXN0bWUsIDEpKV0pCisKKyAgICAgICAgY2FsbExzdFs6XSA9IFtdCisgICAgICAgIDEgQCB0ZXN0bWUKKyAgICAgICAgc2VsZi5hc3NlcnRDYWxsU3RhY2soWygiX19ybWF0bXVsX18iLCAodGVzdG1lLCAxKSldKQorCisgICAgICAgIGNhbGxMc3RbOl0gPSBbXQogICAgICAgICB0ZXN0bWUgLyAxCiAgICAgICAgIHNlbGYuYXNzZXJ0Q2FsbFN0YWNrKFsoIl9fdHJ1ZWRpdl9fIiwgKHRlc3RtZSwgMSkpXSkKIApAQCAtNTU5LDggKzU2OCw1IEBACiAgICAgICAgIGEgPSBBKGhhc2goQS5mKV4oLTEpKQogICAgICAgICBoYXNoKGEuZikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENsYXNzVGVzdHMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggNGRiNmIyYi4uMjVhYjdjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC0xLDUgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlc19JRUVFXzc1NAogZnJvbSB0ZXN0LnRlc3RfbWF0aCBpbXBvcnQgcGFyc2VfdGVzdGZpbGUsIHRlc3RfZmlsZQoraW1wb3J0IHRlc3QudGVzdF9tYXRoIGFzIHRlc3RfbWF0aAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY21hdGgsIG1hdGgKIGZyb20gY21hdGggaW1wb3J0IHBoYXNlLCBwb2xhciwgcmVjdCwgcGkKQEAgLTUyOSw4ICs1MzAsNDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGxleElkZW50aWNhbChjbWF0aC5hdGFuaCh6KSwgeikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KENNYXRoVGVzdHMpCitjbGFzcyBJc0Nsb3NlVGVzdHModGVzdF9tYXRoLklzQ2xvc2VUZXN0cyk6CisgICAgaXNjbG9zZSA9IGNtYXRoLmlzY2xvc2UKKworICAgIGRlZiB0ZXN0X3JlamVjdF9jb21wbGV4X3RvbGVyYW5jZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaXNjbG9zZSgxaiwgMWosIHJlbF90b2w9MWopCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pc2Nsb3NlKDFqLCAxaiwgYWJzX3RvbD0xaikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlzY2xvc2UoMWosIDFqLCByZWxfdG9sPTFqLCBhYnNfdG9sPTFqKQorCisgICAgZGVmIHRlc3RfY29tcGxleF92YWx1ZXMoc2VsZik6CisgICAgICAgICMgdGVzdCBjb21wbGV4IHZhbHVlcyB0aGF0IGFyZSBjbG9zZSB0byB3aXRoaW4gMTIgZGVjaW1hbCBwbGFjZXMKKyAgICAgICAgY29tcGxleF9leGFtcGxlcyA9IFsoMS4wKzEuMGosIDEuMDAwMDAwMDAwMDAxKzEuMGopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLjArMS4waiwgMS4wKzEuMDAwMDAwMDAwMDAxaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xLjArMS4waiwgLTEuMDAwMDAwMDAwMDAxKzEuMGopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLjAtMS4waiwgMS4wLTAuOTk5OTk5OTk5OTk5aiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoY29tcGxleF9leGFtcGxlcywgcmVsX3RvbD0xZS0xMikKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShjb21wbGV4X2V4YW1wbGVzLCByZWxfdG9sPTFlLTEzKQorCisgICAgZGVmIHRlc3RfY29tcGxleF9uZWFyX3plcm8oc2VsZik6CisgICAgICAgICMgdGVzdCB2YWx1ZXMgbmVhciB6ZXJvIHRoYXQgYXJlIG5lYXIgdG8gd2l0aGluIHRocmVlIGRlY2ltYWwgcGxhY2VzCisgICAgICAgIG5lYXJfemVyb19leGFtcGxlcyA9IFsoMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMSwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDErMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMC4wMDErMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMS0wLjAwMWosIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0wLjAwMS0wLjAwMWosIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCBhYnNfdG9sPTEuNWUtMDMpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCBhYnNfdG9sPTAuNWUtMDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKDAuMDAxLTAuMDAxaiwgMC4wMDErMC4wMDFqLCBhYnNfdG9sPTJlLTAzKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Q2xvc2UoMC4wMDEtMC4wMDFqLCAwLjAwMSswLjAwMWosIGFic190b2w9MWUtMDMpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggY2I5YmJkZC4uMGZlYjYzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC04LDggKzgsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCiAgICAgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKQogCiAKQEAgLTU5LDcgKzU5LDcgQEAKIAogICAgIGRlZiB0ZXN0X3hvcHRpb25zKHNlbGYpOgogICAgICAgICBkZWYgZ2V0X3hvcHRpb25zKCphcmdzKToKLSAgICAgICAgICAgICMgdXNlIHN1YnByb2Nlc3MgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgdGVzdC5zY3JpcHRfaGVscGVyIGFkZHMKKyAgICAgICAgICAgICMgdXNlIHN1YnByb2Nlc3MgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgYWRkcwogICAgICAgICAgICAgIyAiLVggZmF1bHRoYW5kbGVyIiB0byB0aGUgY29tbWFuZCBsaW5lCiAgICAgICAgICAgICBhcmdzID0gKHN5cy5leGVjdXRhYmxlLCAnLUUnKSArIGFyZ3MKICAgICAgICAgICAgIGFyZ3MgKz0gKCctYycsICdpbXBvcnQgc3lzOyBwcmludChzeXMuX3hvcHRpb25zKScpCkBAIC0zNDQsNyArMzQ0LDggQEAKICAgICAgICAgIyBJc3N1ZSAjNTMxOTogaWYgc3Rkb3V0LmZsdXNoKCkgZmFpbHMgYXQgc2h1dGRvd24sIGFuIGVycm9yIHNob3VsZAogICAgICAgICAjIGJlIHByaW50ZWQgb3V0LgogICAgICAgICBjb2RlID0gIiIiaWYgMToKLSAgICAgICAgICAgIGltcG9ydCBvcywgc3lzCisgICAgICAgICAgICBpbXBvcnQgb3MsIHN5cywgdGVzdC5zdXBwb3J0CisgICAgICAgICAgICB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpLl9fZW50ZXJfXygpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd4JykKICAgICAgICAgICAgIG9zLmNsb3NlKHN5cy5zdGRvdXQuZmlsZW5vKCkpIiIiCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKQEAgLTQ0NCw3ICs0NDUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5zcGxpdGxpbmVzKCkuY291bnQoYidVbmtub3duIG9wdGlvbjogLWEnKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIG91dCkKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSwKKyAgICBAdW5pdHRlc3Quc2tpcElmKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcnVuIC1JIHRlc3RzIHdoZW4gUFlUSE9OIGVudiB2YXJzIGFyZSByZXF1aXJlZC4nKQogICAgIGRlZiB0ZXN0X2lzb2xhdGVkbW9kZShzZWxmKToKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLUknKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCA3MzUwMTY0Li5mZGEzZTYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMTMsMTAgKzEzLDkgQEAKIAogaW1wb3J0IHRleHR3cmFwCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwKLSAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHRlbXBfZGlyLAotICAgIHNwYXduX3B5dGhvbiwga2lsbF9weXRob24pCisgICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQogCiB2ZXJib3NlID0gc3VwcG9ydC52ZXJib3NlCiAKQEAgLTIyMywxNCArMjIyLDE0IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcmVwbF9zdGRlcnJfZmx1c2goVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9zY3JpcHRfY29tcGlsZWQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMjQwLDE0ICsyMzksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfY29tcGlsZWQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUoc2NyaXB0X25hbWUpCkBAIC0yNTcsMTkgKzI1NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgbXNnID0gImNhbid0IGZpbmQgJ19fbWFpbl9fJyBtb2R1bGUgaW4gJXIiICUgc2NyaXB0X2RpcgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHNjcmlwdF9kaXIsIG1zZykKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGUoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIGNvbXBpbGVkX25hbWUgPSBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBjb21waWxlZF9uYW1lKQpAQCAtMjc3LDE0ICsyNzYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ25vdF9tYWluJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHppcF9uYW1lCiAgICAgICAgICAgICBzZWxmLl9jaGVja19pbXBvcnRfZXJyb3IoemlwX25hbWUsIG1zZykKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdzY3JpcHQnKQpAQCAtMjk0LDE0ICsyOTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZycsIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwKQEAgLTMwOSw3ICszMDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJykKQEAgLTMxOSw3ICszMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfY29tcGlsZWQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJykKQEAgLTMzMiw3ICszMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBtc2cgPSAoIid0ZXN0X3BrZycgaXMgYSBwYWNrYWdlIGFuZCBjYW5ub3QgIgpAQCAtMzQxLDcgKzM0MCw3IEBACiAgICAgICAgICAgICBzZWxmLl9jaGVja19pbXBvcnRfZXJyb3IobGF1bmNoX25hbWUsIG1zZykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfcmVjdXJzaW9uKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBtYWluX2RpciA9IG9zLnBhdGguam9pbihwa2dfZGlyLCAnX19tYWluX18nKQpAQCAtMzU1LDcgKzM1NCw3IEBACiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBwYWNrYWdlIF9faW5pdF9fIG1vZHVsZXMgc2VlICItbSIgaW4gc3lzLmFyZ3YwIHdoaWxlCiAgICAgICAgICMgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlIHRvIGV4ZWN1dGUKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hhbmdlX2N3ZChwYXRoPXNjcmlwdF9kaXIpOgogICAgICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyLCAiaW1wb3J0IHN5czsgcHJpbnQoJ2luaXRfYXJndjA9PSVyJyAlIHN5cy5hcmd2WzBdKSIpCkBAIC0zNzIsNyArMzcxLDcgQEAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9jX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLWMiIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgZG9lcyBub3QgYWx0ZXIgdGhlIHZhbHVlIG9mIHN5cy5wYXRoWzBdCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oIi1jIiwgInciKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJkYXRhIikKQEAgLTM4Nyw3ICszODYsNyBAQAogICAgIGRlZiB0ZXN0X2lzc3VlODIwMl9kYXNoX21fZmlsZV9pZ25vcmVkKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhICItbSIgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgICAgIyBkb2VzIG5vdCBhbHRlciB0aGUgdmFsdWUgb2Ygc3lzLnBhdGhbMF0KLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdvdGhlcicpCiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hhbmdlX2N3ZChwYXRoPXNjcmlwdF9kaXIpOgogICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLW0iLCAidyIpIGFzIGY6CkBAIC00MDIsNyArNDAxLDcgQEAKICAgICAgICAgIyBJZiBhIG1vZHVsZSBpcyBpbnZva2VkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBmbGFnCiAgICAgICAgICMgYW5kIHJlc3VsdHMgaW4gYW4gZXJyb3IgdGhhdCB0aGUgcmV0dXJuIGNvZGUgdG8gdGhlCiAgICAgICAgICMgc2hlbGwgaXMgJzEnCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKQEAgLTQyMiw3ICs0MjEsNyBAQAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvciBmcm9tIE5vbmUKICAgICAgICAgICAgICIiIikKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnLCBzY3JpcHQpCiAgICAgICAgICAgICBleGl0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICB0ZXh0ID0gc3RkZXJyLmRlY29kZSgnYXNjaWknKS5zcGxpdCgnXG4nKQpAQCAtNDY2LDcgKzQ2NSw3IEBACiAgICAgICAgICAgICBpZiBlcnJvcjoKICAgICAgICAgICAgICAgICBzeXMuZXhpdChlcnJvcikKICAgICAgICAgICAgICIiIikKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnLCBzY3JpcHQpCiAgICAgICAgICAgICBleGl0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICB0ZXh0ID0gc3RkZXJyLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKaW5kZXggN2E4MGE4MC4uMzM5NGIzOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CkBAIC0xLDYgKzEsNyBAQAogIlRlc3QgSW50ZXJhY3RpdmVDb25zb2xlIGFuZCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGZyb20gY29kZSBtb2R1bGUiCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNzgsOSArNzksNDAgQEAKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMSkKIAorICAgIGRlZiB0ZXN0X2NhdXNlX3RiKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykgZnJvbSBBdHRyaWJ1dGVFcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgb3V0cHV0ID0gJycuam9pbignJy5qb2luKGNhbGxbMV0pIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscykKKyAgICAgICAgZXhwZWN0ZWQgPSBkZWRlbnQoIiIiCisgICAgICAgIEF0dHJpYnV0ZUVycm9yCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SW50ZXJhY3RpdmVDb25zb2xlKQorICAgICAgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgorCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICBGaWxlICI8Y29uc29sZT4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgIFZhbHVlRXJyb3IKKyAgICAgICAgIiIiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X3RiKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsidHJ5OiBoYW1cbmV4Y2VwdDogZWdnc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBvdXRwdXQgPSAnJy5qb2luKCcnLmpvaW4oY2FsbFsxXSkgZm9yIGNhbGwgaW4gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKQorICAgICAgICBleHBlY3RlZCA9IGRlZGVudCgiIiIKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIEZpbGUgIjxjb25zb2xlPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgTmFtZUVycm9yOiBuYW1lICdoYW0nIGlzIG5vdCBkZWZpbmVkCisKKyAgICAgICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgorCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICBGaWxlICI8Y29uc29sZT4iLCBsaW5lIDIsIGluIDxtb2R1bGU+CisgICAgICAgIE5hbWVFcnJvcjogbmFtZSAnZWdncycgaXMgbm90IGRlZmluZWQKKyAgICAgICAgIiIiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXRwdXQpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CmluZGV4IDEzMjdmMTEuLmVlMWUyOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQpAQCAtMTUwLDYgKzE1MCwyMiBAQAogICAgICAgICBzb3V0ID0gYiJhXHhhY1xcdTEyMzRceGE0XFx1ODAwMFxcVTAwMTBmZmZmIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImlzby04ODU5LTE1IiwgImJhY2tzbGFzaHJlcGxhY2UiKSwgc291dCkKIAorICAgIGRlZiB0ZXN0X25hbWVlc2NhcGUoc2VsZik6CisgICAgICAgICMgRG9lcyB0aGUgc2FtZSBhcyBiYWNrc2xhc2hlc2NhcGUsIGJ1dCBwcmVmZXJzIGBgXE57Li4ufWBgIGVzY2FwZQorICAgICAgICAjIHNlcXVlbmNlcy4KKyAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwXFUwMDEwZmZmZiIKKyAgICAgICAgc291dCA9IChiJ2FcXE57Tk9UIFNJR059XFxOe0VUSElPUElDIFNZTExBQkxFIFNFRX1cXE57RVVSTyBTSUdOfScKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiYXNjaWkiLCAibmFtZXJlcGxhY2UiKSwgc291dCkKKworICAgICAgICBzb3V0ID0gKGInYVx4YWNcXE57RVRISU9QSUMgU1lMTEFCTEUgU0VFfVxcTntFVVJPIFNJR059JworICAgICAgICAgICAgICAgIGInXFxOe0NKSyBVTklGSUVEIElERU9HUkFQSC04MDAwfVxcVTAwMTBmZmZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJsYXRpbi0xIiwgIm5hbWVyZXBsYWNlIiksIHNvdXQpCisKKyAgICAgICAgc291dCA9IChiJ2FceGFjXFxOe0VUSElPUElDIFNZTExBQkxFIFNFRX1ceGE0JworICAgICAgICAgICAgICAgIGInXFxOe0NKSyBVTklGSUVEIElERU9HUkFQSC04MDAwfVxcVTAwMTBmZmZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJuYW1lcmVwbGFjZSIpLCBzb3V0KQorCiAgICAgZGVmIHRlc3RfZGVjb2RpbmdfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgYSB0ZXN0IGZvciBhIGRlY29kaW5nIGNhbGxiYWNrIGhhbmRsZXIKICAgICAgICAgIyB0aGF0IGFsbG93cyB0aGUgZGVjb2Rpbmcgb2YgdGhlIGludmFsaWQgc2VxdWVuY2UKQEAgLTIyMCw2ICsyMzYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKICAgICAgICAgICAgICAgICApCiAKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXFx4MDAiCisgICAgICAgICAgICAgICAgKQorCiAgICAgICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lmh1aSIsIGhhbmRsZXJfdW5pY29kZWludGVybmFsKQogCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTI4Nyw3ICszMDgsNyBAQAogICAgIGRlZiB0ZXN0X2xvbmdzdHJpbmdzKHNlbGYpOgogICAgICAgICAjIHRlc3QgbG9uZyBzdHJpbmdzIHRvIGNoZWNrIGZvciBtZW1vcnkgb3ZlcmZsb3cgcHJvYmxlbXMKICAgICAgICAgZXJyb3JzID0gWyAic3RyaWN0IiwgImlnbm9yZSIsICJyZXBsYWNlIiwgInhtbGNoYXJyZWZyZXBsYWNlIiwKLSAgICAgICAgICAgICAgICAgICAiYmFja3NsYXNocmVwbGFjZSJdCisgICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiLCAibmFtZXJlcGxhY2UiXQogICAgICAgICAjIHJlZ2lzdGVyIHRoZSBoYW5kbGVycyB1bmRlciBkaWZmZXJlbnQgbmFtZXMsCiAgICAgICAgICMgdG8gcHJldmVudCB0aGUgY29kZWMgZnJvbSByZWNvZ25pemluZyB0aGUgbmFtZQogICAgICAgICBmb3IgZXJyIGluIGVycm9yczoKQEAgLTU1MCwxNyArNTcxLDYgQEAKICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICBVbmljb2RlRXJyb3IoIm91Y2giKQogICAgICAgICApCi0gICAgICAgICMgImJhY2tzbGFzaHJlcGxhY2UiIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGVuY29kaW5nCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzLAotICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKCJhc2NpaSIsIGJ5dGVhcnJheShiIlx4ZmYiKSwgMCwgMSwgIm91Y2giKQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzLAotICAgICAgICAgICAgVW5pY29kZVRyYW5zbGF0ZUVycm9yKCJcdTMwNDIiLCAwLCAxLCAib3VjaCIpCi0gICAgICAgICkKICAgICAgICAgIyBVc2UgdGhlIGNvcnJlY3QgZXhjZXB0aW9uCiAgICAgICAgIHRlc3RzID0gWwogICAgICAgICAgICAgKCJcdTMwNDIiLCAiXFx1MzA0MiIpLApAQCAtNTg1LDYgKzU5NSw3MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAogICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVRyYW5zbGF0ZUVycm9yKCJhIiArIHMgKyAiYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSArIGxlbihzKSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgICAgIChyLCAxICsgbGVuKHMpKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoYiJhIiwgIlxceDYxIiksCisgICAgICAgICAgICAoYiJcbiIsICJcXHgwYSIpLAorICAgICAgICAgICAgKGIiXHgwMCIsICJcXHgwMCIpLAorICAgICAgICAgICAgKGIiXHhmZiIsICJcXHhmZiIpLAorICAgICAgICBdCisgICAgICAgIGZvciBiLCByIGluIHRlc3RzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYnl0ZXM9Yik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKCJhc2NpaSIsIGJ5dGVhcnJheShiImEiICsgYiArIGIiYiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMikKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYWRhbmRnb29kbmFtZXJlcGxhY2VleGNlcHRpb25zKHNlbGYpOgorICAgICAgICAjICJuYW1lcmVwbGFjZSIgY29tcGxhaW5zIGFib3V0IGEgbm9uLWV4Y2VwdGlvbiBwYXNzZWQgaW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgNDIKKyAgICAgICAgKQorICAgICAgICAjICJuYW1lcmVwbGFjZSIgY29tcGxhaW5zIGFib3V0IHRoZSB3cm9uZyBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgVW5pY29kZUVycm9yKCJvdWNoIikKKyAgICAgICAgKQorICAgICAgICAjICJuYW1lcmVwbGFjZSIgY2FuIG9ubHkgYmUgdXNlZCBmb3IgZW5jb2RpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzLAorICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKCJhc2NpaSIsIGJ5dGVhcnJheShiIlx4ZmYiKSwgMCwgMSwgIm91Y2giKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiXHUzMDQyIiwgMCwgMSwgIm91Y2giKQorICAgICAgICApCisgICAgICAgICMgVXNlIHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgorICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgICgiXHUzMDQyIiwgIlxcTntISVJBR0FOQSBMRVRURVIgQX0iKSwKKyAgICAgICAgICAgICgiXHgwMCIsICJcXHgwMCIpLAorICAgICAgICAgICAgKCJcdWZiZjkiLCAiXFxOe0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCAiCisgICAgICAgICAgICAgICAgICAgICAgICJIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNfSIpLAorICAgICAgICAgICAgKCJcVTAwMGUwMDdmIiwgIlxcTntDQU5DRUwgVEFHfSIpLAorICAgICAgICAgICAgKCJcVTAwMTBmZmZmIiwgIlxcVTAwMTBmZmZmIiksCisgICAgICAgICAgICAjIExvbmUgc3Vycm9nYXRlcworICAgICAgICAgICAgKCJcdWQ4MDAiLCAiXFx1ZDgwMCIpLAorICAgICAgICAgICAgKCJcdWRmZmYiLCAiXFx1ZGZmZiIpLAorICAgICAgICAgICAgKCJcdWQ4MDBcdWRmZmYiLCAiXFx1ZDgwMFxcdWRmZmYiKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgcywgciBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0cj1zKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJhIiArIHMgKyAiYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSArIGxlbihzKSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgICAgIChyLCAxICsgbGVuKHMpKQorICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2JhZGFuZGdvb2RzdXJyb2dhdGVlc2NhcGVleGNlcHRpb25zKHNlbGYpOgogICAgICAgICBzdXJyb2dhdGVlc2NhcGVfZXJyb3JzID0gY29kZWNzLmxvb2t1cF9lcnJvcignc3Vycm9nYXRlZXNjYXBlJykKQEAgLTY2MywyMCArNzM5LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZXBhc3NfZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IoZW5jLCAiYSIuZW5jb2RlKGVuYyksIDAsIDEsICJvdWNoIikKICAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBzIGluICgiXHVkODAwIiwgIlx1ZGZmZiIsICJcdWQ4MDBcdWRmZmYiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0cj1zKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycywKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsIHMsIDAsIGxlbihzKSwgIm91Y2giKQorICAgICAgICAgICAgICAgICkKICAgICAgICAgdGVzdHMgPSBbCi0gICAgICAgICAgICAoImFzY2lpIiwgIlx1ZDgwMCIsIGInXHhlZFx4YTBceDgwJywgMyksCiAgICAgICAgICAgICAoInV0Zi04IiwgIlx1ZDgwMCIsIGInXHhlZFx4YTBceDgwJywgMyksCiAgICAgICAgICAgICAoInV0Zi0xNmxlIiwgIlx1ZDgwMCIsIGInXHgwMFx4ZDgnLCAyKSwKICAgICAgICAgICAgICgidXRmLTE2YmUiLCAiXHVkODAwIiwgYidceGQ4XHgwMCcsIDIpLAogICAgICAgICAgICAgKCJ1dGYtMzJsZSIsICJcdWQ4MDAiLCBiJ1x4MDBceGQ4XHgwMFx4MDAnLCA0KSwKICAgICAgICAgICAgICgidXRmLTMyYmUiLCAiXHVkODAwIiwgYidceDAwXHgwMFx4ZDhceDAwJywgNCksCi0gICAgICAgICAgICAoImFzY2lpIiwgIlx1ZGZmZiIsIGInXHhlZFx4YmZceGJmJywgMyksCiAgICAgICAgICAgICAoInV0Zi04IiwgIlx1ZGZmZiIsIGInXHhlZFx4YmZceGJmJywgMyksCiAgICAgICAgICAgICAoInV0Zi0xNmxlIiwgIlx1ZGZmZiIsIGInXHhmZlx4ZGYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTE2YmUiLCAiXHVkZmZmIiwgYidceGRmXHhmZicsIDIpLAogICAgICAgICAgICAgKCJ1dGYtMzJsZSIsICJcdWRmZmYiLCBiJ1x4ZmZceGRmXHgwMFx4MDAnLCA0KSwKICAgICAgICAgICAgICgidXRmLTMyYmUiLCAiXHVkZmZmIiwgYidceDAwXHgwMFx4ZGZceGZmJywgNCksCi0gICAgICAgICAgICAoImFzY2lpIiwgIlx1ZDgwMFx1ZGZmZiIsIGInXHhlZFx4YTBceDgwXHhlZFx4YmZceGJmJywgMyksCiAgICAgICAgICAgICAoInV0Zi04IiwgIlx1ZDgwMFx1ZGZmZiIsIGInXHhlZFx4YTBceDgwXHhlZFx4YmZceGJmJywgMyksCiAgICAgICAgICAgICAoInV0Zi0xNmxlIiwgIlx1ZDgwMFx1ZGZmZiIsIGInXHgwMFx4ZDhceGZmXHhkZicsIDIpLAogICAgICAgICAgICAgKCJ1dGYtMTZiZSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZDhceDAwXHhkZlx4ZmYnLCAyKSwKQEAgLTY5NCw3ICs3NzQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZXBhc3NfZXJyb3JzKAogICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKGVuYywgYnl0ZWFycmF5KGIiYSIgKyBiWzpuXSArIGIiYiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG4sICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBuLCAib3VjaCIpKSwKICAgICAgICAgICAgICAgICAgICAgKHNbOjFdLCAxICsgbikKICAgICAgICAgICAgICAgICApCiAKQEAgLTczOCw2ICs4MTgsMTAgQEAKICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoImJhY2tzbGFzaHJlcGxhY2UiKQogICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzLAorICAgICAgICAgICAgY29kZWNzLmxvb2t1cF9lcnJvcigibmFtZXJlcGxhY2UiKQorICAgICAgICApCiAKICAgICBkZWYgdGVzdF91bmVuY29kYWJsZXJlcGxhY2VtZW50KHNlbGYpOgogICAgICAgICBkZWYgdW5lbmNyZXBsKGV4Yyk6CkBAIC04OTAsNyArOTc0LDggQEAKICAgICAgICAgY2xhc3MgRChkaWN0KToKICAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgZm9yIGVyciBpbiAoInN0cmljdCIsICJyZXBsYWNlIiwgInhtbGNoYXJyZWZyZXBsYWNlIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAidGVzdC5wb3NyZXR1cm4iKToKKyAgICAgICAgZm9yIGVyciBpbiAoInN0cmljdCIsICJyZXBsYWNlIiwgInhtbGNoYXJyZWZyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiLCAibmFtZXJlcGxhY2UiLCAidGVzdC5wb3NyZXR1cm4iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCAiXHhmZiIsIGVyciwgezB4ZmY6IE5vbmV9KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCAiXHhmZiIsIGVyciwgRCgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9lbmNvZGUsICJceGZmIiwgZXJyLCB7MHhmZjogMzAwfSkKQEAgLTkwNSw3ICs5OTAsNyBAQAogICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAjc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgIlx4ZmYiLnRyYW5zbGF0ZSwgRCgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIHsweGZmOiBzeXMubWF4dW5pY29kZSsxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgIlx4ZmYiLnRyYW5zbGF0ZSwgezB4ZmY6IHN5cy5tYXh1bmljb2RlKzF9KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIHsweGZmOiAoKX0pCiAKICAgICBkZWYgdGVzdF9idWc4Mjg3Mzcoc2VsZik6CkBAIC05NjcsNiArMTA1Miw3IEBACiAgICAgICAgICAgICBjb2RlY3MuaWdub3JlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5yZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MueG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICAgY29kZWNzLmxvb2t1cF9lcnJvcignc3Vycm9nYXRlZXNjYXBlJyksCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwX2Vycm9yKCdzdXJyb2dhdGVwYXNzJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQppbmRleCA2MGU2OWViLi5kMGUzYTE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKQEAgLTgzLDggKzgzLDUgQEAKICAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQppbmRleCAyNWMwNWI2Li5iYjliZTExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKQEAgLTE5LDggKzE5LDUgQEAKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKaW5kZXggODc3Njg2NC4uOGEzY2E3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQpAQCAtMzgsOCArMzgsNSBAQAogICAgIGRlZiB0ZXN0X2NodW5rY29kaW5nKHNlbGYpOgogICAgICAgICBwYXNzCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKaW5kZXggNDA5MTk0OC4uNDRiNjNhMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CkBAIC0xMjMsOCArMTIzLDUgQEAKICAgICAgICAgYiJceDg1RyZyZWFsO1x4ODVRID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKaW5kZXggY2Q3Njk2YS4uYjZhNzRmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CkBAIC02Niw4ICs2Niw1IEBACiAgICAgICAgIChiIlx4OENCeHkiLCAicmVwbGFjZSIsICAiXHVGRkZEQnh5IiksCiAgICAgKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IGVhNmUxYzEuLjkxNzQyOTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtMTksOCArMTksNSBAQAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4YjEwIiksCiAgICAgKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggNjYyOWNjZC4uZWFiMDdjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTM0OSw2ICszNDksOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsICJcdWQ4MDAiLmVuY29kZSwgc2VsZi5lbmNvZGluZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbXFx1ZGM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAibmFtZXJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1xcdWRjODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInhtbGNoYXJyZWZyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlsmIzU2NDQ4O10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAiaWdub3JlIiksCkBAIC0zNzYsNiArMzc4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSArIGFmdGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3NlcXVlbmNlLmRlY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBzZWxmLmlsbF9mb3JtZWRfc2VxdWVuY2VfcmVwbGFjZSArIGFmdGVyKQorICAgICAgICAgICAgYmFja3NsYXNocmVwbGFjZSA9ICcnLmpvaW4oJ1xceCUwMngnICUgYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gc2VsZi5pbGxfZm9ybWVkX3NlcXVlbmNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3NlcXVlbmNlLmRlY29kZShzZWxmLmVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBiYWNrc2xhc2hyZXBsYWNlICsgYWZ0ZXIpCiAKIGNsYXNzIFVURjMyVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMiIKQEAgLTgwOCw2ICs4MTQsNyBAQAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCiAgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAogICAgICAgICAgICAgKSkKICAgICAgICAgZWxzZToKQEAgLTg2OSw2ICs4NzYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIiXHhlZFx4YTBceDgwIi5kZWNvZGUsICJjcDY1MDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidbXFx1ZGM4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgIm5hbWVyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbXFx1ZGM4MF0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInhtbGNoYXJyZWZyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidbJiM1NjQ0ODtdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKQEAgLTg5MCwxMCArODk5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAKLSAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5za2lwVGVzdCgiaXNzdWUgIzIwNTcxOiBjb2RlIHBhZ2UgNjUwMDEgY29kZWMgZG9lcyBub3QgIgotICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHBhcnRpYWwgZGVjb2RlciB5ZXQiKQotCiAKIGNsYXNzIFVURjdUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTciCkBAIC0xMDgxLDYgKzEwODYsNyBAQAogY2xhc3MgRXNjYXBlRGVjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVzY2FwZV9kZWNvZGUoYiIiKSwgKGIiIiwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVzY2FwZV9kZWNvZGUoYnl0ZWFycmF5KCkpLCAoYiIiLCAwKSkKIAogICAgIGRlZiB0ZXN0X3JhdyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLmVzY2FwZV9kZWNvZGUKQEAgLTEyOTksMTQgKzEzMDUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCiAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgICAgICAgICBpbnZhbGlkID0gYiJceDAwXHgwMFx4MTFceDAwIgorICAgICAgICAgICAgaW52YWxpZF9iYWNrc2xhc2hyZXBsYWNlID0gciJceDAwXHgwMFx4MTFceDAwIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MTFceDAwXHgwMCIKKyAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSA9IHIiXHgwMFx4MTFceDAwXHgwMCIKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmRlY29kZSwgInVuaWNvZGVfaW50ZXJuYWwiKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW52YWxpZC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHVmZmZkJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9iYWNrc2xhc2hyZXBsYWNlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3JfYXR0cmlidXRlcyhzZWxmKToKQEAgLTE2MTIsNiArMTYyMywxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5kZWNvZGUoYidhYmMnKSwgJ2FiYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLmRlY29kZSwgYidceGZmJywgJ2FzY2lpJykKIAorICAgICAgICAjIHRlc3Qga2V5d29yZHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZGVjb2RlKG9iaj1iJ1x4ZTRceGY2XHhmYycsIGVuY29kaW5nPSdsYXRpbi0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZTRceGY2XHhmYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmRlY29kZShiJ1tceGZmXScsICdhc2NpaScsIGVycm9ycz0naWdub3JlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1tdJykKKwogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdceGU0XHhmNlx4ZmMnLCAnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlNFx4ZjZceGZjJykKQEAgLTE2MjAsNiArMTYzNywxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lbmNvZGUoJ2FiYycpLCBiJ2FiYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgY29kZWNzLmVuY29kZSwgJ1x4ZmZmZicsICdhc2NpaScpCiAKKyAgICAgICAgIyB0ZXN0IGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVuY29kZShvYmo9J1x4ZTRceGY2XHhmYycsIGVuY29kaW5nPSdsYXRpbi0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU0XHhmNlx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lbmNvZGUoJ1tceGZmXScsICdhc2NpaScsIGVycm9ycz0naWdub3JlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbXScpCisKICAgICBkZWYgdGVzdF9yZWdpc3RlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MucmVnaXN0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLnJlZ2lzdGVyLCA0MikKQEAgLTE2NjgsNiArMTY5MSw3IEBACiAgICAgICAgICAgICAicmVnaXN0ZXJfZXJyb3IiLCAibG9va3VwX2Vycm9yIiwKICAgICAgICAgICAgICJzdHJpY3RfZXJyb3JzIiwgInJlcGxhY2VfZXJyb3JzIiwgImlnbm9yZV9lcnJvcnMiLAogICAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsICJiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICAibmFtZXJlcGxhY2VfZXJyb3JzIiwKICAgICAgICAgICAgICJvcGVuIiwgIkVuY29kZWRGaWxlIiwKICAgICAgICAgICAgICJpdGVyZW5jb2RlIiwgIml0ZXJkZWNvZGUiLAogICAgICAgICAgICAgIkJPTSIsICJCT01fQkUiLCAiQk9NX0xFIiwKQEAgLTE3OTgsNyArMTgyMiw5IEBACiAgICAgImlzbzg4NTlfOSIsCiAgICAgImpvaGFiIiwKICAgICAia29pOF9yIiwKKyAgICAia29pOF90IiwKICAgICAia29pOF91IiwKKyAgICAia3oxMDQ4IiwKICAgICAibGF0aW5fMSIsCiAgICAgIm1hY19jeXJpbGxpYyIsCiAgICAgIm1hY19ncmVlayIsCkBAIC0yMDI5LDYgKzIwNTUsMTYgQEAKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsICJhYiIpLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsICJhYlx1ZmZmZSIpLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiaWdub3JlIiwgImFiIiksCiAgICAgICAgICAgICAoImFiIiwgMykKICAgICAgICAgKQpAQCAtMjEwNSw2ICsyMTQxLDI1IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAnYScsIDE6ICdiJ30pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6ICdhJywgMTogJ2InLCAyOiBOb25lfSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgIyBJc3N1ZSAjMTQ4NTAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYicsIDI6ICdcdWZmZmUnfSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJpZ25vcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAnYScsIDE6ICdiJ30pLAogICAgICAgICAgICAgKCJhYiIsIDMpCkBAIC0yMTgxLDYgKzIyMzYsMTggQEAKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IGEsIDE6IGJ9KSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBiLCAyOiAweEZGRkV9KSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImlnbm9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IGEsIDE6IGJ9KSwKICAgICAgICAgICAgICgiYWIiLCAzKQpAQCAtMjIzOSw5ICsyMzA2LDEzIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy51bmljb2RlX2VzY2FwZV9kZWNvZGUociJcVTAwMTEwMDAwIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAociJceDVjXHg1NVx4MzBceDMwXHgzMVx4MzFceDMwXHgzMFx4MzBceDMwIiwgMTApKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIGJyIlxVMDAxMTAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHIiXHg1Y1x4NTVceDMwXHgzMFx4MzFceDMxXHgzMFx4MzBceDMwXHgzMCIsIDEwKSkKIAogCiBjbGFzcyBVbmljb2RlRXNjYXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODE4LDE1ICsyODg5LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZUVuY29kZUVycm9yLCAnY3A5MzInLAogICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDkzMiwgJ1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVEZWNvZGVFcnJvciwgJ2NwOTMyJywKLSAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA5MzIsIGInXHg4MVx4MDAnKQorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDkzMiwgYidceDgxXHgwMCcsICdzdHJpY3QnLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVEZWNvZGVFcnJvciwgJ0NQX1VURjgnLAotICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIHNlbGYuQ1BfVVRGOCwgYidceGZmJykKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBzZWxmLkNQX1VURjgsIGInXHhmZicsICdzdHJpY3QnLCBUcnVlKQogCiAgICAgZGVmIGNoZWNrX2RlY29kZShzZWxmLCBjcCwgdGVzdHMpOgogICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzLCBUcnVlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSAiY3AlcyIgd2l0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBjcCwgZXJyb3JzLCBlcnIpKQpAQCAtMjgzOCw3ICsyOTA5LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvZGVkWzFdLCBsZW4ocmF3KSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAotICAgICAgICAgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgY3AsIHJhdywgZXJyb3JzLCBUcnVlKQogCiAgICAgZGVmIGNoZWNrX2VuY29kZShzZWxmLCBjcCwgdGVzdHMpOgogICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKQEAgLTI4NjYsNyArMjkzNywxMiBAQAogICAgICAgICAgICAgKCdbXHhmZl0nLCAncmVwbGFjZScsIGInW3ldJyksCiAgICAgICAgICAgICAoJ1tcdTIwYWNdJywgJ3JlcGxhY2UnLCBiJ1s/XScpLAogICAgICAgICAgICAgKCdbXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsIGInW1xceGZmXScpLAorICAgICAgICAgICAgKCdbXHhmZl0nLCAnbmFtZXJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xcTntMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJU31dJyksCiAgICAgICAgICAgICAoJ1tceGZmXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMjU1O10nKSwKKyAgICAgICAgICAgICgnXHVkY2ZmJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdbXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceGZmXScpLAorICAgICAgICAgICAgKCdbXHVkY2ZmXScsICdzdXJyb2dhdGVwYXNzJywgTm9uZSksCiAgICAgICAgICkpCiAgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKDkzMiwgKAogICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKQEAgLTI4NzUsMTAgKzI5NTEsMTMgQEAKICAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ZmZdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlcGFzcycsIE5vbmUpLAogICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnc3RyaWN0JywgTm9uZSksCiAgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdpZ25vcmUnLCAnXHgwMGFiYycpLAogICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAncmVwbGFjZScsICdcdWZmZmRceDAwYWJjJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1xceDgxXHgwMGFiYycpLAogICAgICAgICApKQogCiAgICAgZGVmIHRlc3RfY3AxMjUyKHNlbGYpOgpAQCAtMjg4Niw5ICsyOTY1LDEyIEBACiAgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAogICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4ZTlceDgwJyksCiAgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgYidceGZmJyksCisgICAgICAgICAgICAjIHRlc3QgZXJyb3IgaGFuZGxlcnMKICAgICAgICAgICAgICgnXHUwMTQxJywgJ3N0cmljdCcsIE5vbmUpLAogICAgICAgICAgICAgKCdcdTAxNDEnLCAnaWdub3JlJywgYicnKSwKICAgICAgICAgICAgICgnXHUwMTQxJywgJ3JlcGxhY2UnLCBiJ0wnKSwKKyAgICAgICAgICAgICgnXHVkYzk4JywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInXHg5OCcpLAorICAgICAgICAgICAgKCdcdWRjOTgnLCAnc3Vycm9nYXRlcGFzcycsIE5vbmUpLAogICAgICAgICApKQogICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSgxMjUyLCAoCiAgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQppbmRleCBiNjU0MjNiLi41MDliZjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQpAQCAtMyw3ICszLDcgQEAKICAgIE5pY2sgTWF0aGV3c29uCiAiIiIKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgaXNfanl0aG9uCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaXNfanl0aG9uCiAKIGZyb20gY29kZW9wIGltcG9ydCBjb21waWxlX2NvbW1hbmQsIFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQKIGltcG9ydCBpbwpAQCAtMjk2LDkgKzI5Niw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSgiYSA9IDFcbiIsICJkZWYiLCAnc2luZ2xlJykuY29fZmlsZW5hbWUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChDb2Rlb3BUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCBkZjFjNjNjLi5hYjJiNzMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTEsNyArMSw4IEBACiAiIiJVbml0IHRlc3RzIGZvciBjb2xsZWN0aW9ucy5weS4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0LCBvcGVyYXRvcgotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgZm9yZ2V0LCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGZvcmdldCwgdW5saW5rLCBpbXBvcnRfZnJlc2hfbW9kdWxlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGluc3BlY3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwpAQCAtMTEsOSArMTIsMTIgQEAKIGltcG9ydCBrZXl3b3JkCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0CitpbXBvcnQgdHlwZXMKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0LCBVc2VyU3RyaW5nLCBVc2VyTGlzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEF3YWl0YWJsZSwgQ29yb3V0aW5lLCBBc3luY0l0ZXJhdG9yLCBBc3luY0l0ZXJhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQsIE11dGFibGVTZXQKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldwpAQCAtMjEsNiArMjUsMjYgQEAKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBCeXRlU3RyaW5nCiAKIAorY2xhc3MgVGVzdFVzZXJPYmplY3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX3N1cGVyc2V0X3Rlc3Qoc2VsZiwgYSwgYik6CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKAorICAgICAgICAgICAgc2V0KGRpcihhKSksCisgICAgICAgICAgICBzZXQoZGlyKGIpKSwKKyAgICAgICAgICAgICd7YX0gc2hvdWxkIGhhdmUgYWxsIHRoZSBtZXRob2RzIG9mIHtifScuZm9ybWF0KAorICAgICAgICAgICAgICAgIGE9YS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBiPWIuX19uYW1lX18sCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgZGVmIHRlc3Rfc3RyX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJTdHJpbmcsIHN0cikKKworICAgIGRlZiB0ZXN0X2xpc3RfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3N1cGVyc2V0X3Rlc3QoVXNlckxpc3QsIGxpc3QpCisKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJEaWN0LCBkaWN0KQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ2hhaW5NYXAgKGhlbHBlciBjbGFzcyBmb3IgY29uZmlncGFyc2VyIGFuZCB0aGUgc3RyaW5nIG1vZHVsZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xOTYsNiArMjIwLDE0IEBACiAgICAgICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC5fX2RvY19fLCAnUG9pbnQoeCwgeSknKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfZG9jX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQueC5fX2RvY19fLCAnQWxpYXMgZm9yIGZpZWxkIG51bWJlciAwJykKKyAgICAgICAgUG9pbnQueC5fX2RvY19fID0gJ2RvY3N0cmluZyBmb3IgUG9pbnQueCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC54Ll9fZG9jX18sICdkb2NzdHJpbmcgZm9yIFBvaW50LngnKQorCiAgICAgZGVmIHRlc3RfbmFtZV9maXhlcihzZWxmKToKICAgICAgICAgZm9yIHNwZWMsIHJlbmFtZWQgaW4gWwogICAgICAgICAgICAgWygnZWZnJywgJ2claGknKSwgICgnZWZnJywgJ18xJyldLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmllbGQgd2l0aCBub24tYWxwaGEgY2hhcgpAQCAtNDQ1LDYgKzQ3NywxMTcgQEAKIAogY2xhc3MgVGVzdE9uZVRyaWNrUG9ueUFCQ3MoQUJDVGVzdENhc2UpOgogCisgICAgZGVmIHRlc3RfQXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgYXN5bmMgZGVmIG5ld19jb3JvKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmFyOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGNsYXNzIE1pbmltYWxDb3JvKENvcm91dGluZSk6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS50aHJvdyh0eXAsIHZhbCwgdGIpCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgaW50KCksIGdlbigpLCBvYmplY3QoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXdhaXRhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEF3YWl0YWJsZSksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgc2FtcGxlcyA9IFtCYXIoKSwgTWluaW1hbENvcm8oKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBBd2FpdGFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBBd2FpdGFibGUpKQorCisgICAgICAgIGMgPSBjb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEF3YWl0YWJsZSkKKyAgICAgICAgYy5jbG9zZSgpICMgYXdvaWQgUnVudGltZVdhcm5pbmcgdGhhdCBjb3JvKCkgd2FzIG5vdCBhd2FpdGVkCisKKyAgICAgICAgYyA9IG5ld19jb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEF3YWl0YWJsZSkKKyAgICAgICAgYy5jbG9zZSgpICMgYXdvaWQgUnVudGltZVdhcm5pbmcgdGhhdCBjb3JvKCkgd2FzIG5vdCBhd2FpdGVkCisKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6IHBhc3MKKyAgICAgICAgQ29yb3V0aW5lLnJlZ2lzdGVyKENvcm9MaWtlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShDb3JvTGlrZSgpLCBBd2FpdGFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQXdhaXRhYmxlKSkKKyAgICAgICAgQ29yb0xpa2UgPSBOb25lCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICMgS2lsbCBDb3JvTGlrZSB0byBjbGVhbi11cCBBQkNNZXRhIGNhY2hlCisKKyAgICBkZWYgdGVzdF9Db3JvdXRpbmUoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgY29ybygpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBhc3luYyBkZWYgbmV3X2Nvcm8oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCYXI6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgY2xhc3MgTWluaW1hbENvcm8oQ29yb3V0aW5lKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLnRocm93KHR5cCwgdmFsLCB0YikKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBpbnQoKSwgZ2VuKCksIG9iamVjdCgpLCBCYXIoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29yb3V0aW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvcm91dGluZSksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgc2FtcGxlcyA9IFtNaW5pbWFsQ29ybygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEF3YWl0YWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIEF3YWl0YWJsZSkpCisKKyAgICAgICAgYyA9IGNvcm8oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQ29yb3V0aW5lKQorICAgICAgICBjLmNsb3NlKCkgIyBhd29pZCBSdW50aW1lV2FybmluZyB0aGF0IGNvcm8oKSB3YXMgbm90IGF3YWl0ZWQKKworICAgICAgICBjID0gbmV3X2Nvcm8oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQ29yb3V0aW5lKQorICAgICAgICBjLmNsb3NlKCkgIyBhd29pZCBSdW50aW1lV2FybmluZyB0aGF0IGNvcm8oKSB3YXMgbm90IGF3YWl0ZWQKKworICAgICAgICBjbGFzcyBDb3JvTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShDb3JvTGlrZSgpLCBDb3JvdXRpbmUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQ29yb3V0aW5lKSkKKworICAgICAgICBjbGFzcyBDb3JvTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb3JvTGlrZSgpLCBDb3JvdXRpbmUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29yb0xpa2UsIENvcm91dGluZSkpCisKICAgICBkZWYgdGVzdF9IYXNoYWJsZShzZWxmKToKICAgICAgICAgIyBDaGVjayBzb21lIG5vbi1oYXNoYWJsZXMKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbYnl0ZWFycmF5KCksIGxpc3QoKSwgc2V0KCksIGRpY3QoKV0KQEAgLTQ3MSw2ICs2MTQsNDAgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEhhc2hhYmxlLCAnX19oYXNoX18nKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoSGFzaGFibGUsICdfX2hhc2hfXycpCiAKKyAgICBkZWYgdGVzdF9Bc3luY0l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBBSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoQUkoKSwgQXN5bmNJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEFJLCBBc3luY0l0ZXJhYmxlKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1pdGVyYWJsZXMKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgb2JqZWN0LCBbXV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXN5bmNJdGVyYWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBc3luY0l0ZXJhYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEFzeW5jSXRlcmFibGUsICdfX2FpdGVyX18nKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoQXN5bmNJdGVyYWJsZSwgJ19fYWl0ZXJfXycpCisKKyAgICBkZWYgdGVzdF9Bc3luY0l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBBSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEFJKCksIEFzeW5jSXRlcmF0b3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhBSSwgQXN5bmNJdGVyYXRvcikpCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIG9iamVjdCwgW11dCisgICAgICAgICMgQ2hlY2sgc29tZSBub24taXRlcmFibGVzCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEFzeW5jSXRlcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXN5bmNJdGVyYXRvciksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgU2ltaWxhcmx5IHRvIHJlZ3VsYXIgaXRlcmF0b3JzIChzZWUgaXNzdWUgMTA1NjUpCisgICAgICAgIGNsYXNzIEFuZXh0T25seToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShBbmV4dE9ubHkoKSwgQXN5bmNJdGVyYXRvcikKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEFzeW5jSXRlcmF0b3IsICdfX2FuZXh0X18nLCAnX19haXRlcl9fJykKKwogICAgIGRlZiB0ZXN0X0l0ZXJhYmxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWl0ZXJhYmxlcwogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWpdCkBAIC01MTgsOSArNjk1LDgwIEBACiAgICAgICAgIGNsYXNzIE5leHRPbmx5OgogICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHlpZWxkIDEKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShOZXh0T25seSgpLCBJdGVyYXRvcikKIAorICAgIGRlZiB0ZXN0X0dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgTm9uR2VuMToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgY2xhc3MgTm9uR2VuMjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKworICAgICAgICBjbGFzcyBOb25HZW4zOgorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbCisgICAgICAgICAgICBOb25lLCA0MiwgMy4xNCwgMWosIGIiIiwgIiIsICgpLCBbXSwge30sIHNldCgpLAorICAgICAgICAgICAgaXRlcigoKSksIGl0ZXIoW10pLCBOb25HZW4xKCksIE5vbkdlbjIoKSwgTm9uR2VuMygpXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBHZW5lcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgR2VuZXJhdG9yKSwgcmVwcih0eXBlKHgpKSkKKworICAgICAgICBjbGFzcyBHZW46CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBjbGFzcyBNaW5pbWFsR2VuKEdlbmVyYXRvcik6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS50aHJvdyh0eXAsIHZhbCwgdGIpCisKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorCisgICAgICAgIHNhbXBsZXMgPSBbZ2VuKCksIChsYW1iZGE6ICh5aWVsZCkpKCksIEdlbigpLCBNaW5pbWFsR2VuKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgSXRlcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgR2VuZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgR2VuZXJhdG9yKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEdlbmVyYXRvciwgJ3NlbmQnLCAndGhyb3cnKQorCisgICAgICAgICMgbWl4aW4gdGVzdHMKKyAgICAgICAgbWdlbiA9IE1pbmltYWxHZW4oKQorICAgICAgICBzZWxmLmFzc2VydElzKG1nZW4sIGl0ZXIobWdlbikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWdlbi5zZW5kKE5vbmUpLCBuZXh0KG1nZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIG1nZW4uc2VuZCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWdlbi5jbG9zZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZ2VuLnRocm93LCBWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJeaHVodSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nZW4udGhyb3csIFZhbHVlRXJyb3IsIFZhbHVlRXJyb3IoImh1aHUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbWdlbi50aHJvdywgU3RvcEl0ZXJhdGlvbigpKQorCisgICAgICAgIGNsYXNzIEZhaWxPbkNsb3NlKEdlbmVyYXRvcik6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsICphcmdzKTogcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIEZhaWxPbkNsb3NlKCkuY2xvc2UpCisKKyAgICAgICAgY2xhc3MgSWdub3JlR2VuZXJhdG9yRXhpdChHZW5lcmF0b3IpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCAqYXJncyk6IHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIElnbm9yZUdlbmVyYXRvckV4aXQoKS5jbG9zZSkKKwogICAgIGRlZiB0ZXN0X1NpemVkKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCiAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCkBAIC02NDcsNiArODk1LDU5IEBACiAgICAgICAgIGEsIGIgPSBPbmVUd29UaHJlZVNldCgpLCBPbmVUd29UaHJlZVNldCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNoKGEpID09IGhhc2goYikpCiAKKyAgICBkZWYgdGVzdF9pc2Rpc2pvaW50X1NldChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTZXQoU2V0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdHIpOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGVudHMgPSBpdHIKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggaW4gc2VsZi5jb250ZW50cworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuY29udGVudHMpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKFt4IGZvciB4IGluIHNlbGYuY29udGVudHNdKQorICAgICAgICBzMSA9IE15U2V0KCgxLCAyLCAzKSkKKyAgICAgICAgczIgPSBNeVNldCgoNCwgNSwgNikpCisgICAgICAgIHMzID0gTXlTZXQoKDEsIDUsIDYpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczEuaXNkaXNqb2ludChzMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczEuaXNkaXNqb2ludChzMykpCisKKyAgICBkZWYgdGVzdF9lcXVhbGl0eV9TZXQoc2VsZik6CisgICAgICAgIGNsYXNzIE15U2V0KFNldCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRyKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRlbnRzID0gaXRyCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4IGluIHNlbGYuY29udGVudHMKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmNvbnRlbnRzKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihbeCBmb3IgeCBpbiBzZWxmLmNvbnRlbnRzXSkKKyAgICAgICAgczEgPSBNeVNldCgoMSwpKQorICAgICAgICBzMiA9IE15U2V0KCgxLCAyKSkKKyAgICAgICAgczMgPSBNeVNldCgoMywgNCkpCisgICAgICAgIHM0ID0gTXlTZXQoKDMsIDQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczIgPiBzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMxIDwgczIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczIgPD0gczEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczIgPD0gczMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczEgPj0gczIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczMsIHM0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHMyLCBzMykKKworICAgIGRlZiB0ZXN0X2FyaXRobWV0aWNfU2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNeVNldChTZXQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0cik6CisgICAgICAgICAgICAgICAgc2VsZi5jb250ZW50cyA9IGl0cgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCBpbiBzZWxmLmNvbnRlbnRzCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oW3ggZm9yIHggaW4gc2VsZi5jb250ZW50c10pCisgICAgICAgIHMxID0gTXlTZXQoKDEsIDIsIDMpKQorICAgICAgICBzMiA9IE15U2V0KCgzLCA0LCA1KSkKKyAgICAgICAgczMgPSBzMSAmIHMyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczMsIE15U2V0KCgzLCkpKQorCiAgICAgZGVmIHRlc3RfTXV0YWJsZVNldChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNldCgpLCBNdXRhYmxlU2V0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzZXQsIE11dGFibGVTZXQpKQpAQCAtOTQ3LDYgKzEyNDgsNDEgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKFNlcXVlbmNlLCAnX19jb250YWluc19fJywgJ19faXRlcl9fJywgJ19fbGVuX18nLAogICAgICAgICAgICAgJ19fZ2V0aXRlbV9fJykKIAorICAgIGRlZiB0ZXN0X1NlcXVlbmNlX21peGlucyhzZWxmKToKKyAgICAgICAgY2xhc3MgU2VxdWVuY2VTdWJjbGFzcyhTZXF1ZW5jZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VxPSgpKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlcSA9IHNlcQorCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNlcVtpbmRleF0KKworICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnNlcSkKKworICAgICAgICAjIENvbXBhcmUgU2VxdWVuY2UuaW5kZXgoKSBiZWhhdmlvciB0byAobGlzdHxzdHIpLmluZGV4KCkgYmVoYXZpb3IKKyAgICAgICAgZGVmIGFzc2VydF9pbmRleF9zYW1lKHNlcTEsIHNlcTIsIGluZGV4X2FyZ3MpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VxMS5pbmRleCgqaW5kZXhfYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlcTIuaW5kZXgoKmluZGV4X2FyZ3MpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFjdHVhbCA9IHNlcTIuaW5kZXgoKmluZGV4X2FyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsLCBleHBlY3RlZCwgJyVyLmluZGV4JXMnICUgKHNlcTEsIGluZGV4X2FyZ3MpKQorCisgICAgICAgIGZvciB0eSBpbiBsaXN0LCBzdHI6CisgICAgICAgICAgICBuYXRpdmVzZXEgPSB0eSgnYWJyYWNhZGFicmEnKQorICAgICAgICAgICAgaW5kZXhlcyA9IFstMTAwMDAsIC05OTk5XSArIGxpc3QocmFuZ2UoLTMsIGxlbihuYXRpdmVzZXEpICsgMykpCisgICAgICAgICAgICBzZXFzZXEgPSBTZXF1ZW5jZVN1YmNsYXNzKG5hdGl2ZXNlcSkKKyAgICAgICAgICAgIGZvciBsZXR0ZXIgaW4gc2V0KG5hdGl2ZXNlcSkgfCB7J3onfToKKyAgICAgICAgICAgICAgICBhc3NlcnRfaW5kZXhfc2FtZShuYXRpdmVzZXEsIHNlcXNlcSwgKGxldHRlciwpKQorICAgICAgICAgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgtMywgbGVuKG5hdGl2ZXNlcSkgKyAzKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2luZGV4X3NhbWUobmF0aXZlc2VxLCBzZXFzZXEsIChsZXR0ZXIsIHN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHN0b3AgaW4gcmFuZ2UoLTMsIGxlbihuYXRpdmVzZXEpICsgMyk6CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfaW5kZXhfc2FtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVzZXEsIHNlcXNlcSwgKGxldHRlciwgc3RhcnQsIHN0b3ApKQorCiAgICAgZGVmIHRlc3RfQnl0ZVN0cmluZyhzZWxmKToKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbYnl0ZXMsIGJ5dGVhcnJheV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2FtcGxlKCksIEJ5dGVTdHJpbmcpCkBAIC05NjEsNyArMTI5Nyw3IEBACiAgICAgICAgIGZvciBzYW1wbGUgaW4gW3R1cGxlLCBzdHIsIGJ5dGVzXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShzYW1wbGUoKSwgTXV0YWJsZVNlcXVlbmNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNhbXBsZSwgTXV0YWJsZVNlcXVlbmNlKSkKLSAgICAgICAgZm9yIHNhbXBsZSBpbiBbbGlzdCwgYnl0ZWFycmF5XToKKyAgICAgICAgZm9yIHNhbXBsZSBpbiBbbGlzdCwgYnl0ZWFycmF5LCBkZXF1ZV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2FtcGxlKCksIE11dGFibGVTZXF1ZW5jZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNhbXBsZSwgTXV0YWJsZVNlcXVlbmNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHN0ciwgTXV0YWJsZVNlcXVlbmNlKSkKQEAgLTEyNzQsOSArMTYxMCwyNCBAQAogIyMjIE9yZGVyZWREaWN0CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1jbGFzcyBUZXN0T3JkZXJlZERpY3QodW5pdHRlc3QuVGVzdENhc2UpOgorcHlfY29sbCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2NvbGxlY3Rpb25zJywgYmxvY2tlZD1bJ19jb2xsZWN0aW9ucyddKQorY19jb2xsID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnY29sbGVjdGlvbnMnLCBmcmVzaD1bJ19jb2xsZWN0aW9ucyddKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgcmVwbGFjZWRfbW9kdWxlKG5hbWUsIHJlcGxhY2VtZW50KToKKyAgICBvcmlnaW5hbF9tb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQorICAgIHN5cy5tb2R1bGVzW25hbWVdID0gcmVwbGFjZW1lbnQKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBvcmlnaW5hbF9tb2R1bGUKKworCitjbGFzcyBPcmRlcmVkRGljdFRlc3RzOgogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQpAQCAtMTMwMCw2ICsxNjUxLDcgQEAKICAgICAgICAgICAgIFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpLCAoJ2cnLCA3KV0pCiAKICAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgT3JkZXJlZERpY3QoKS51cGRhdGUoWygnYScsIDEpLCAoJ2InLCAyKV0sIE5vbmUpICAgICAgICAgICAgICAgICAgICAgICAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHBhaXJzID0gWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KV0KQEAgLTEzNDAsMTEgKzE2OTIsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdCgpLnVwZGF0ZSwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0LnVwZGF0ZSkKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdCgpLnVwZGF0ZSwgKCksICgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0LnVwZGF0ZSkKKworICAgIGRlZiB0ZXN0X2Zyb21rZXlzKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCBOb25lKSBmb3IgYyBpbiAnYWJjJ10pCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycsIHZhbHVlPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCBOb25lKSBmb3IgYyBpbiAnYWJjJ10pCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycsIHZhbHVlPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhjLCAwKSBmb3IgYyBpbiAnYWJjJ10pCisKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKE9yZGVyZWREaWN0KCksIE11dGFibGVNYXBwaW5nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPcmRlcmVkRGljdCwgTXV0YWJsZU1hcHBpbmcpKQogCiAgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTEzNTMsNiArMTcyMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9kKSwgMCkKIAogICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKICAgICAgICAgZGVsIG9kWydhJ10KQEAgLTEzNjIsNiArMTczMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgcGFpcnNbOjJdICsgcGFpcnNbMzpdKQogCiAgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KFsoJ2QnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2EnLCA0KSwgKCdlJywgNSldKQogICAgICAgICBvZFsnYyddID0gMTAgICAgICAgICAgICMgZXhpc3RpbmcgZWxlbWVudAogICAgICAgICBvZFsnZiddID0gMjAgICAgICAgICAgICMgbmV3IGVsZW1lbnQKQEAgLTEzNjksNiArMTczOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZCcsIDEpLCAoJ2InLCAyKSwgKCdjJywgMTApLCAoJ2EnLCA0KSwgKCdlJywgNSksICgnZicsIDIwKV0pCiAKICAgICBkZWYgdGVzdF9pdGVyYXRvcnMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTEzNzgsOCArMTc0OCw1MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIHBhaXJzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2Qua2V5cygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW3RbMF0gZm9yIHQgaW4gcmV2ZXJzZWQocGFpcnMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLnZhbHVlcygpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW3RbMV0gZm9yIHQgaW4gcmV2ZXJzZWQocGFpcnMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLml0ZW1zKCkpKSwgbGlzdChyZXZlcnNlZChwYWlycykpKQorCisgICAgZGVmIHRlc3RfZGV0ZWN0X2RlbGV0aW9uX2R1cmluZ19pdGVyYXRpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKKyAgICAgICAgaXQgPSBpdGVyKG9kKQorICAgICAgICBrZXkgPSBuZXh0KGl0KQorICAgICAgICBkZWwgb2Rba2V5XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbik6CisgICAgICAgICAgICAjIE5vdGUsIHRoZSBleGFjdCBleGNlcHRpb24gcmFpc2VkIGlzIG5vdCBndWFyYW50ZWVkCisgICAgICAgICAgICAjIFRoZSBvbmx5IGd1YXJhbnRlZSB0aGF0IHRoZSBuZXh0KCkgd2lsbCBub3Qgc3VjY2VlZAorICAgICAgICAgICAgbmV4dChpdCkKKworICAgIGRlZiB0ZXN0X3NvcnRlZF9pdGVyYXRvcnMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnYScsIDEpLCAoJ2InLCAyKV0sIE5vbmUpCisgICAgICAgIHBhaXJzID0gWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KV0KKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2QpLCBbdFswXSBmb3IgdCBpbiBwYWlyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG9kLmtleXMoKSksIFt0WzBdIGZvciB0IGluIHBhaXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2QudmFsdWVzKCkpLCBbdFsxXSBmb3IgdCBpbiBwYWlyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG9kLml0ZW1zKCkpLCBwYWlycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQocmV2ZXJzZWQob2QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW3RbMF0gZm9yIHQgaW4gcmV2ZXJzZWQocGFpcnMpXSkpCisKKyAgICBkZWYgdGVzdF9pdGVyYXRvcnNfZW1wdHkoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGVtcHR5ID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5rZXlzKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLnZhbHVlcygpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLmtleXMoKSkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kLnZhbHVlcygpKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QuaXRlbXMoKSkpLCBlbXB0eSkKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTEzODksNyArMTgwMiwxOSBAQAogICAgICAgICAgICAgb2QucG9waXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9kKSwgMCkKIAorICAgIGRlZiB0ZXN0X3BvcGl0ZW1fbGFzdChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICBwYWlycyA9IFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMzApXQorCisgICAgICAgIG9iaiA9IE9yZGVyZWREaWN0KHBhaXJzKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToKKyAgICAgICAgICAgIG9iai5wb3BpdGVtKFRydWUpCisgICAgICAgIG9iai5wb3BpdGVtKFRydWUpCisgICAgICAgIG9iai5wb3BpdGVtKGxhc3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob2JqKSwgMjApCisKICAgICBkZWYgdGVzdF9wb3Aoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE0MTAsMTAgKzE4MzUsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnBvcCgnYicsIDUpLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdhJywgNiksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5wb3AoJ2EnLCA2KSwgNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnBvcCgnYScsIGRlZmF1bHQ9NiksIDYpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgogICAgICAgICAgICAgbS5wb3AoJ2EnKQogCiAgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QxID0gT3JkZXJlZERpY3QocGFpcnMpCkBAIC0xNDI5LDYgKzE4NTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9kMSwgT3JkZXJlZERpY3QocGFpcnNbOi0xXSkpCiAKICAgICBkZWYgdGVzdF9jb3B5aW5nKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgQ2hlY2sgdGhhdCBvcmRlcmVkIGRpY3RzIGFyZSBjb3B5YWJsZSwgZGVlcGNvcHlhYmxlLCBwaWNrbGFibGUsCiAgICAgICAgICMgYW5kIGhhdmUgYSByZXByL2V2YWwgcm91bmQtdHJpcAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQpAQCAtMTQzNywxMiArMTg2NSwxNyBAQAogICAgICAgICAgICAgbXNnID0gIlxuY29weTogJXNcbm9kOiAlcyIgJSAoZHVwLCBvZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCBvZCwgbXNnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdXAsIG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGR1cC5pdGVtcygpKSwgbGlzdChvZC5pdGVtcygpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGR1cCksIGxlbihvZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZHVwKSwgdHlwZShvZCkpCiAgICAgICAgIGNoZWNrKG9kLmNvcHkoKSkKICAgICAgICAgY2hlY2soY29weS5jb3B5KG9kKSkKICAgICAgICAgY2hlY2soY29weS5kZWVwY29weShvZCkpCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgotICAgICAgICAgICAgICAgIGNoZWNrKHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkpCisgICAgICAgICMgcGlja2xlIGRpcmVjdGx5IHB1bGxzIHRoZSBtb2R1bGUsIHNvIHdlIGhhdmUgdG8gZmFrZSBpdAorICAgICAgICB3aXRoIHJlcGxhY2VkX21vZHVsZSgnY29sbGVjdGlvbnMnLCBzZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkpCiAgICAgICAgIGNoZWNrKGV2YWwocmVwcihvZCkpKQogICAgICAgICB1cGRhdGVfdGVzdCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgdXBkYXRlX3Rlc3QudXBkYXRlKG9kKQpAQCAtMTQ1MCw2ICsxODgzLDcgQEAKICAgICAgICAgY2hlY2soT3JkZXJlZERpY3Qob2QpKQogCiAgICAgZGVmIHRlc3RfeWFtbF9saW5rYWdlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgX19yZWR1Y2VfXyBpcyBzZXR1cCBpbiBhIHdheSB0aGF0IHN1cHBvcnRzIFB5WUFNTCdzIGR1bXAoKSBmZWF0dXJlLgogICAgICAgICAjIEluIHlhbWwsIGxpc3RzIGFyZSBuYXRpdmUgYnV0IHR1cGxlcyBhcmUgbm90LgogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQpAQCAtMTQ1OSw2ICsxODkzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbCh0eXBlKHBhaXIpPT1saXN0IGZvciBwYWlyIGluIG9kLl9fcmVkdWNlX18oKVsxXSkpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2Vfbm90X3Rvb19mYXQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBkbyBub3Qgc2F2ZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGlmIG5vdCBuZWVkZWQKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE0NjcsMTUgKzE5MDIsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgb2RbMV0gPSBvZAotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoLTEsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICBkdXAgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCBwcm90bykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGR1cCwgb2QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHVwLmtleXMoKSksIFsxXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHVwWzFdLCBkdXApCisKKyAgICAgICAgIyBwaWNrbGUgZGlyZWN0bHkgcHVsbHMgdGhlIG1vZHVsZSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0CisgICAgICAgIHdpdGggcmVwbGFjZWRfbW9kdWxlKCdjb2xsZWN0aW9ucycsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgtMSwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBkdXAgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkdXAsIG9kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkdXAua2V5cygpKSwgWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHVwWzFdLCBkdXApCiAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIob2QpLAogICAgICAgICAgICAgIk9yZGVyZWREaWN0KFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXSkiKQpAQCAtMTQ4Myw2ICsxOTIzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9yZGVyZWREaWN0KCkpLCAiT3JkZXJlZERpY3QoKSIpCiAKICAgICBkZWYgdGVzdF9yZXByX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICAjIFNlZSBpc3N1ZSAjOTgyNgogICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQogICAgICAgICBvZFsneCddID0gb2QKQEAgLTE0OTAsNiArMTkzMSw3IEBACiAgICAgICAgICAgICAiT3JkZXJlZERpY3QoWygnYScsIE5vbmUpLCAoJ2InLCBOb25lKSwgKCdjJywgTm9uZSksICgneCcsIC4uLildKSIpCiAKICAgICBkZWYgdGVzdF9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIHNodWZmbGUocGFpcnMpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCkBAIC0xNTAwLDYgKzE5NDIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLnNldGRlZmF1bHQoJ3gnLCAxMCksIDEwKQogICAgICAgICAjIG1ha2Ugc3VyZSAneCcgaXMgYWRkZWQgdG8gdGhlIGVuZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSlbLTFdLCAoJ3gnLCAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Quc2V0ZGVmYXVsdCgnZycsIGRlZmF1bHQ9OSksIDkpCiAKICAgICAgICAgIyBtYWtlIHN1cmUgc2V0ZGVmYXVsdCBzdGlsbCB3b3JrcyB3aGVuIF9fbWlzc2luZ19fIGlzIGRlZmluZWQKICAgICAgICAgY2xhc3MgTWlzc2luZyhPcmRlcmVkRGljdCk6CkBAIC0xNTA4LDE2ICsxOTUxLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTWlzc2luZygpLnNldGRlZmF1bHQoNSwgOSksIDkpCiAKICAgICBkZWYgdGVzdF9yZWluc2VydChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICAjIEdpdmVuIGluc2VydCBhLCBpbnNlcnQgYiwgZGVsZXRlIGEsIHJlLWluc2VydCBhLAogICAgICAgICAjIHZlcmlmeSB0aGF0IGEgaXMgbm93IGxhdGVyIHRoYW4gYi4KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCiAgICAgICAgIG9kWydhJ10gPSAxCiAgICAgICAgIG9kWydiJ10gPSAyCiAgICAgICAgIGRlbCBvZFsnYSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWygnYicsIDIpXSkKICAgICAgICAgb2RbJ2EnXSA9IDEKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKCdiJywgMiksICgnYScsIDEpXSkKIAogICAgIGRlZiB0ZXN0X21vdmVfdG9fZW5kKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnYWJjZGUnKSkKICAgICAgICAgb2QubW92ZV90b19lbmQoJ2MnKQpAQCAtMTUyOCwxNiArMTk3NCwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdjYWJkZScpKQogICAgICAgICBvZC5tb3ZlX3RvX2VuZCgnZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2NhYmRlJykpCisgICAgICAgIG9kLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnYmNhZGUnKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CiAgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZCgneCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgb2QubW92ZV90b19lbmQoJ3gnLCAwKQogCiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgV2ltcHkgdGVzdDogSnVzdCB2ZXJpZnkgdGhlIHJlcG9ydGVkIHNpemUgaXMgbGFyZ2VyIHRoYW4gYSByZWd1bGFyIGRpY3QKICAgICAgICAgZCA9IGRpY3QoYT0xKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCoqZCkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2Yob2QpLCBzeXMuZ2V0c2l6ZW9mKGQpKQogCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfdXBkYXRlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdXBkYXRlKCkgd2l0aG91dCBicmVha2luZyBfX2luaXRfXygpCiAgICAgICAgIGNsYXNzIE15T0QoT3JkZXJlZERpY3QpOgogICAgICAgICAgICAgZGVmIHVwZGF0ZShzZWxmLCAqYXJncywgKiprd2RzKToKQEAgLTE1NDUsMTggKzE5OTcsMTQ4IEBACiAgICAgICAgIGl0ZW1zID0gWygnYScsIDEpLCAoJ2MnLCAzKSwgKCdiJywgMildCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChNeU9EKGl0ZW1zKS5pdGVtcygpKSwgaXRlbXMpCiAKLWNsYXNzIEdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgotICAgIHR5cGUydGVzdCA9IE9yZGVyZWREaWN0CisKK2NsYXNzIFB1cmVQeXRob25PcmRlcmVkRGljdFRlc3RzKE9yZGVyZWREaWN0VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1vZHVsZSA9IHB5X2NvbGwKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvbk9yZGVyZWREaWN0VGVzdHMoT3JkZXJlZERpY3RUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlID0gY19jb2xsCisKKyAgICBkZWYgdGVzdF9kZWxpdGVtX2hhc2hfY29sbGlzaW9uKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisKKyAgICAgICAgY2xhc3MgS2V5OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhc2gpOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoCisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHN0cihpZChzZWxmKSkKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFzaAorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgICBkZWYgYmxvY2tpbmdfaGFzaChoYXNoKToKKyAgICAgICAgICAgICMgU2VlIHRoZSBjb2xsaXNpb24taGFuZGxpbmcgaW4gbG9va2RpY3QgKGluIE9iamVjdHMvZGljdG9iamVjdC5jKS4KKyAgICAgICAgICAgIE1JTlNJWkUgPSA4CisgICAgICAgICAgICBpID0gKGhhc2ggJiBNSU5TSVpFLTEpCisgICAgICAgICAgICByZXR1cm4gKGkgPDwgMikgKyBpICsgaGFzaCArIDEKKworICAgICAgICBDT0xMSURJTkcgPSAxCisKKyAgICAgICAga2V5ID0gS2V5KENPTExJRElORykKKyAgICAgICAgY29sbGlkaW5nID0gS2V5KENPTExJRElORykKKyAgICAgICAgYmxvY2tpbmcgPSBLZXkoYmxvY2tpbmdfaGFzaChDT0xMSURJTkcpKQorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFtrZXldID0gLi4uCisgICAgICAgIG9kW2Jsb2NraW5nXSA9IC4uLgorICAgICAgICBvZFtjb2xsaWRpbmddID0gLi4uCisgICAgICAgIG9kWydhZnRlciddID0gLi4uCisKKyAgICAgICAgZGVsIG9kW2Jsb2NraW5nXQorICAgICAgICBkZWwgb2RbY29sbGlkaW5nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIFsoa2V5LCAuLi4pLCAoJ2FmdGVyJywgLi4uKV0pCisKKyAgICBkZWYgdGVzdF9rZXlfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2FiY2RlJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGZvciBpLCBrIGluIGVudW1lcmF0ZShvZCk6CisgICAgICAgICAgICAgICAgb2QubW92ZV90b19lbmQoaykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoaSwgNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgZm9yIGsgaW4gb2Q6CisgICAgICAgICAgICAgICAgb2RbJ2YnXSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgZm9yIGsgaW4gb2Q6CisgICAgICAgICAgICAgICAgZGVsIG9kWydjJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnYmRlYWYnKSkKKworICAgIGRlZiB0ZXN0X2lzc3VlMjQzNDcoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKworICAgICAgICBjbGFzcyBLZXk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmRyYW5nZSgxMDAwMDApCisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMCk6CisgICAgICAgICAgICBrZXkgPSBLZXkoKQorICAgICAgICAgICAgb2Rba2V5XSA9IGkKKworICAgICAgICAjIFRoZXNlIHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgcmVwcihvZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBvZC5jb3B5KCkKKworICAgIGRlZiB0ZXN0X2lzc3VlMjQzNDgoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKworICAgICAgICBjbGFzcyBLZXk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgb2RbS2V5KCldID0gMAorICAgICAgICAjIFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgb2QucG9waXRlbSgpCisKKworY2xhc3MgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IHB5X2NvbGwuT3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKIAotY2xhc3MgTXlPcmRlcmVkRGljdChPcmRlcmVkRGljdCk6Ci0gICAgcGFzcwogCi1jbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gTXlPcmRlcmVkRGljdAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKK2NsYXNzIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy50eXBlMnRlc3QgPSBjX2NvbGwuT3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitjbGFzcyBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xhc3MgTXlPcmRlcmVkRGljdChweV9jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvblN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNsYXNzIE15T3JkZXJlZERpY3QoY19jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKQEAgLTE1NzMsNyArMjE1NSwxMSBAQAogICAgIE5hbWVkVHVwbGVEb2NzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUobW9kdWxlPWNvbGxlY3Rpb25zKQogICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0TmFtZWRUdXBsZSwgTmFtZWRUdXBsZURvY3MsIFRlc3RPbmVUcmlja1BvbnlBQkNzLAogICAgICAgICAgICAgICAgICAgICBUZXN0Q29sbGVjdGlvbkFCQ3MsIFRlc3RDb3VudGVyLCBUZXN0Q2hhaW5NYXAsCi0gICAgICAgICAgICAgICAgICAgIFRlc3RPcmRlcmVkRGljdCwgR2VuZXJhbE1hcHBpbmdUZXN0cywgU3ViY2xhc3NNYXBwaW5nVGVzdHNdCisgICAgICAgICAgICAgICAgICAgIFB1cmVQeXRob25PcmRlcmVkRGljdFRlc3RzLCBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMsIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMsIENQeXRob25TdWJjbGFzc01hcHBpbmdUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgVGVzdFVzZXJPYmplY3RzLAorICAgICAgICAgICAgICAgICAgICBdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGNvbGxlY3Rpb25zLCB2ZXJib3NlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkKaW5kZXggYTY2MzgzMi4uNDcxYzhkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wYXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGFyZS5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEVtcHR5OgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTEyMSw4ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFueXRoaW5nKCksIHkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggY2ZmM2M5ZS4uZjVlNDU3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNSw3ICs1LDggQEAKIGltcG9ydCBfYXN0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MjcsNyArNDI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfYXN0KHNlbGYpOgogICAgICAgICBmbmFtZSA9IF9fZmlsZV9fCi0gICAgICAgIGlmIGZuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCdweWMnLCAncHlvJykpOgorICAgICAgICBpZiBmbmFtZS5sb3dlcigpLmVuZHN3aXRoKCdweWMnKToKICAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOi0xXQogICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGZjb250ZW50cyA9IGYucmVhZCgpCkBAIC00NjAsNiArNDYxLDE3IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBkZWYgdGVzdF9kaWN0X2V2YWx1YXRpb25fb3JkZXIoc2VsZik6CisgICAgICAgIGkgPSAwCisKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBkID0ge2YoKTogZigpLCBmKCk6IGYoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CiAgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKaW5kZXggMmE0MjIzOC4uOTQ3OTc3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQpAQCAtMTAsNyArMTAsMTUgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGlvCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaywgc2tpcFVubGVzcwordHJ5OgorICAgIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBQcm9jZXNzUG9vbEV4ZWN1dG9yCisgICAgX2hhdmVfbXVsdGlwcm9jZXNzaW5nID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX211bHRpcHJvY2Vzc2luZyA9IEZhbHNlCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogY2xhc3MgQ29tcGlsZWFsbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtOTQsMTggKzEwMiw0NSBAQAogICAgIGRlZiB0ZXN0X29wdGltaXplKHNlbGYpOgogICAgICAgICAjIG1ha2Ugc3VyZSBjb21waWxpbmcgd2l0aCBkaWZmZXJlbnQgb3B0aW1pemF0aW9uIHNldHRpbmdzIHRoYW4gdGhlCiAgICAgICAgICMgaW50ZXJwcmV0ZXIncyBjcmVhdGVzIHRoZSBjb3JyZWN0IGZpbGUgbmFtZXMKLSAgICAgICAgb3B0aW1pemUgPSAxIGlmIF9fZGVidWdfXyBlbHNlIDAKKyAgICAgICAgb3B0aW1pemUsIG9wdCA9ICgxLCAxKSBpZiBfX2RlYnVnX18gZWxzZSAoMCwgJycpCiAgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIG9wdGltaXplPW9wdGltaXplKQogICAgICAgICBjYWNoZWQgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQpKQogICAgICAgICBjYWNoZWQyID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMikpCiAgICAgICAgIGNhY2hlZDMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZV9wYXRoMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQzKSkKIAorICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQorICAgIGRlZiB0ZXN0X2NvbXBpbGVfcG9vbF9jYWxsZWQoc2VsZiwgcG9vbF9tb2NrKToKKyAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9vbF9tb2NrLmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfd29ya2Vyc19ub25fcG9zaXRpdmUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndvcmtlcnMgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIDAiKToKKyAgICAgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHdvcmtlcnM9LTEpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJykKKyAgICBkZWYgdGVzdF9jb21waWxlX3dvcmtlcnNfY3B1X2NvdW50KHNlbGYsIHBvb2xfbW9jayk6CisgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIHdvcmtlcnM9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb29sX21vY2suY2FsbF9hcmdzWzFdWydtYXhfd29ya2VycyddLCBOb25lKQorCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuY29tcGlsZV9maWxlJykKKyAgICBkZWYgdGVzdF9jb21waWxlX29uZV93b3JrZXIoc2VsZiwgY29tcGlsZV9maWxlX21vY2ssIHBvb2xfbW9jayk6CisgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9vbF9tb2NrLmNhbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVfZmlsZV9tb2NrLmNhbGxlZCkKKworICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InLCBuZXc9Tm9uZSkKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5jb21waWxlX2ZpbGUnKQorICAgIGRlZiB0ZXN0X2NvbXBpbGVfbWlzc2luZ19tdWx0aXByb2Nlc3Npbmcoc2VsZiwgY29tcGlsZV9maWxlX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2ZpbGVfbW9jay5jYWxsZWQpCiAKIGNsYXNzIEVuY29kaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiSXNzdWUgNjcxNjogY29tcGlsZWFsbCBzaG91bGQgZXNjYXBlIHNvdXJjZSBjb2RlIHdoZW4gcHJpbnRpbmcgZXJyb3JzCkBAIC0yMDMsMTEgKzIzOCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGInTGlzdGluZyAnLCBxdWlldCkKIAogICAgICMgRW5zdXJlIHRoYXQgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY29tcGlsZWFsbCdzIENMSSBpcyB0byBjcmVhdGUKLSAgICAjIFBFUCAzMTQ3IHB5Yy9weW8gZmlsZXMuCisgICAgIyBQRVAgMzE0Ny9QRVAgNDg4IHB5YyBmaWxlcy4KICAgICBmb3IgbmFtZSwgZXh0LCBzd2l0Y2ggaW4gWwogICAgICAgICAoJ25vcm1hbCcsICdweWMnLCBbXSksCi0gICAgICAgICgnb3B0aW1pemUnLCAncHlvJywgWyctTyddKSwKLSAgICAgICAgKCdkb3VibGVvcHRpbWl6ZScsICdweW8nLCBbJy1PTyddKSwKKyAgICAgICAgKCdvcHRpbWl6ZScsICdvcHQtMS5weWMnLCBbJy1PJ10pLAorICAgICAgICAoJ2RvdWJsZW9wdGltaXplJywgJ29wdC0yLnB5YycsIFsnLU9PJ10pLAogICAgIF06CiAgICAgICAgIGRlZiBmKHNlbGYsIGV4dD1leHQsIHN3aXRjaD1zd2l0Y2gpOgogICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKCooc3dpdGNoICsKQEAgLTIyNCwxMyArMjU5LDEyIEBACiAKICAgICBkZWYgdGVzdF9sZWdhY3lfcGF0aHMoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgd2l0aCB0aGUgcHJvcGVyIHN3aXRjaCwgY29tcGlsZWFsbCBsZWF2ZXMgbGVnYWN5Ci0gICAgICAgICMgcHljL3B5byBmaWxlcywgYW5kIG5vIF9fcHljYWNoZV9fIGRpcmVjdG9yeS4KKyAgICAgICAgIyBweWMgZmlsZXMsIGFuZCBubyBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkuCiAgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1iJywgJy1xJywgc2VsZi5wa2dkaXIpCiAgICAgICAgICMgVmVyaWZ5IHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgY29udGVudHMuCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5wa2dkaXJfY2FjaGVkaXIpKQotICAgICAgICBvcHQgPSAnYycgaWYgX19kZWJ1Z19fIGVsc2UgJ28nCi0gICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsnX19pbml0X18ucHknLCAnX19pbml0X18ucHknICsgb3B0LCAnYmFyLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXIucHknICsgb3B0XSkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoWydfX2luaXRfXy5weScsICdfX2luaXRfXy5weWMnLCAnYmFyLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXIucHljJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG9zLmxpc3RkaXIoc2VsZi5wa2dkaXIpKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9ydW5zKHNlbGYpOgpAQCAtMjczLDEyICszMDcsNTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCiAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCiAKKyAgICBkZWYgdGVzdF9yZWN1cnNpb25fbGltaXQoc2VsZik6CisgICAgICAgIHN1YnBhY2thZ2UgPSBvcy5wYXRoLmpvaW4oc2VsZi5wa2dkaXIsICdzcGFtJykKKyAgICAgICAgc3VicGFja2FnZTIgPSBvcy5wYXRoLmpvaW4oc3VicGFja2FnZSwgJ2hhbScpCisgICAgICAgIHN1YnBhY2thZ2UzID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UyLCAnZWdncycpCisgICAgICAgIGZvciBwa2cgaW4gKHN1YnBhY2thZ2UsIHN1YnBhY2thZ2UyLCBzdWJwYWNrYWdlMyk6CisgICAgICAgICAgICBzY3JpcHRfaGVscGVyLm1ha2VfcGtnKHBrZykKKworICAgICAgICBzdWJpbml0Zm4gPSBvcy5wYXRoLmpvaW4oc3VicGFja2FnZSwgJ19faW5pdF9fLnB5JykKKyAgICAgICAgaGFtZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHN1YnBhY2thZ2UsICdoYW0nLCAnJykKKyAgICAgICAgc3BhbWZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlMiwgJ3NwYW0nLCAnJykKKyAgICAgICAgZWdnZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHN1YnBhY2thZ2UzLCAnZWdnJywgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLXIgMCcsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydE5vdENvbXBpbGVkKHN1YmluaXRmbikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzdWJwYWNrYWdlLCAnX19weWNhY2hlX18nKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLXIgMScsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKHN1YmluaXRmbikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChoYW1mbikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDb21waWxlZChzcGFtZm4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLXIgMicsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKHN1YmluaXRmbikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChoYW1mbikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzcGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoZWdnZm4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLXIgNScsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKHN1YmluaXRmbikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChoYW1mbikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzcGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoZWdnZm4pCisKICAgICBkZWYgdGVzdF9xdWlldChzZWxmKToKICAgICAgICAgbm9pc3kgPSBzZWxmLmFzc2VydFJ1bk9LKHNlbGYucGtnZGlyKQogICAgICAgICBxdWlldCA9IHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgc2VsZi5wa2dkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYicnLCBub2lzeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHF1aWV0KQogCisgICAgZGVmIHRlc3Rfc2lsZW50KHNlbGYpOgorICAgICAgICBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHNlbGYucGtnZGlyLCAnY3J1bmNoeWZyb2cnLCAnYmFkKHN5bnRheCcpCisgICAgICAgIF8sIHF1aWV0LCBfID0gc2VsZi5hc3NlcnRSdW5Ob3RPSygnLXEnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgXywgc2lsZW50LCBfID0gc2VsZi5hc3NlcnRSdW5Ob3RPSygnLXFxJywgc2VsZi5wa2dkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYicnLCBxdWlldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNpbGVudCkKKwogICAgIGRlZiB0ZXN0X3JlZ2V4cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLXgnLCByJ2JhW15cXC9dKiQnLCBzZWxmLnBrZ2RpcikKICAgICAgICAgc2VsZi5hc3NlcnROb3RDb21waWxlZChzZWxmLmJhcmZuKQpAQCAtMzc5LDYgKzQ1NCwyOSBAQAogICAgICAgICBvdXQgPSBzZWxmLmFzc2VydFJ1bk9LKCdiYWRmaWxlbmFtZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCBiIkNhbid0IGxpc3QgJ2JhZGZpbGVuYW1lJyIpCiAKKyAgICBAc2tpcFVubGVzcyhfaGF2ZV9tdWx0aXByb2Nlc3NpbmcsICJyZXF1aXJlcyBtdWx0aXByb2Nlc3NpbmciKQorICAgIGRlZiB0ZXN0X3dvcmtlcnMoc2VsZik6CisgICAgICAgIGJhcjJmbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQoc2VsZi5kaXJlY3RvcnksICdiYXIyJywgJycpCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgZm9yIHN1ZmZpeCBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgJ2Zvb3t9Jy5mb3JtYXQoc3VmZml4KSkKKyAgICAgICAgICAgIG9zLm1rZGlyKHBrZ2RpcikKKyAgICAgICAgICAgIGZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChwa2dkaXIsICdfX2luaXRfXycsICcnKQorICAgICAgICAgICAgZmlsZXMuYXBwZW5kKHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQocGtnZGlyLCAnYmFyMicsICcnKSkKKworICAgICAgICBzZWxmLmFzc2VydFJ1bk9LKHNlbGYuZGlyZWN0b3J5LCAnLWonLCAnMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoYmFyMmZuKQorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoZmlsZSkKKworICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLmNvbXBpbGVfZGlyJykKKyAgICBkZWYgdGVzdF93b3JrZXJzX2F2YWlsYWJsZV9jb3JlcyhzZWxmLCBjb21waWxlX2Rpcik6CisgICAgICAgIHdpdGggbW9jay5wYXRjaCgic3lzLmFyZ3YiLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3PVtzeXMuZXhlY3V0YWJsZSwgc2VsZi5kaXJlY3RvcnksICItajAiXSk6CisgICAgICAgICAgICBjb21waWxlYWxsLm1haW4oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVfZGlyLmNhbGxlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZV9kaXIuY2FsbF9hcmdzWy0xXVsnd29ya2VycyddLCBOb25lKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IGM3NGIyY2EuLmI5OTc0MGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC05LDggKzksOSBAQAogIyB3aXRob3V0IHRocmVhZCBzdXBwb3J0LgogdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCiAKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKQEAgLTQyNSw2ICs0MjYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbGxlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJTdGFsZSByZWZlcmVuY2Ugbm90IGNvbGxlY3RlZCB3aXRoaW4gdGltZW91dC4iKQogCisgICAgZGVmIHRlc3RfbWF4X3dvcmtlcnNfbmVnYXRpdmUoc2VsZik6CisgICAgICAgIGZvciBudW1iZXIgaW4gKDAsIC0xKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhfd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGFuIDAiKToKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yX3R5cGUobWF4X3dvcmtlcnM9bnVtYmVyKQorCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvclRlc3QoVGhyZWFkUG9vbE1peGluLCBFeGVjdXRvclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9tYXBfc3VibWl0c193aXRob3V0X2l0ZXJhdGlvbihzZWxmKToKQEAgLTQzNyw2ICs0NDUsMTEgQEAKICAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bih3YWl0PVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaW5pc2hlZCwgcmFuZ2UoMTApKQogCisgICAgZGVmIHRlc3RfZGVmYXVsdF93b3JrZXJzKHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IHNlbGYuZXhlY3V0b3JfdHlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhlY3V0b3IuX21heF93b3JrZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgIChvcy5jcHVfY291bnQoKSBvciAxKSAqIDUpCisKIAogY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvclRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfa2lsbGVkX2NoaWxkKHNlbGYpOgpAQCAtNDUxLDYgKzQ2NCw0OCBAQAogICAgICAgICAjIFN1Ym1pdHRpbmcgb3RoZXIgam9icyBmYWlscyBhcyB3ZWxsLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCcm9rZW5Qcm9jZXNzUG9vbCwgc2VsZi5leGVjdXRvci5zdWJtaXQsIHBvdywgMiwgOCkKIAorICAgIGRlZiB0ZXN0X21hcF9jaHVua3NpemUoc2VsZik6CisgICAgICAgIGRlZiBiYWRfbWFwKCk6CisgICAgICAgICAgICBsaXN0KHNlbGYuZXhlY3V0b3IubWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCksIGNodW5rc2l6ZT0tMSkpCisKKyAgICAgICAgcmVmID0gbGlzdChtYXAocG93LCByYW5nZSg0MCksIHJhbmdlKDQwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHNlbGYuZXhlY3V0b3IubWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCksIGNodW5rc2l6ZT02KSksCisgICAgICAgICAgICByZWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHNlbGYuZXhlY3V0b3IubWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCksIGNodW5rc2l6ZT01MCkpLAorICAgICAgICAgICAgcmVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NDApKSwKKyAgICAgICAgICAgIHJlZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYmFkX21hcCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90cmFjZWJhY2soY2xzKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQKKworICAgIGRlZiB0ZXN0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgIyBXZSB3YW50IGVuc3VyZSB0aGF0IHRoZSB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBpcworICAgICAgICAjIGNvbnRhaW5lZCBpbiB0aGUgdHJhY2ViYWNrIHJhaXNlZCBpbiB0aGUgbWFpbiBwcm9jZXNzLgorICAgICAgICBmdXR1cmUgPSBzZWxmLmV4ZWN1dG9yLnN1Ym1pdChzZWxmLl90ZXN0X3RyYWNlYmFjaykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNtOgorICAgICAgICAgICAgZnV0dXJlLnJlc3VsdCgpCisKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMpLCBSdW50aW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLmFyZ3MsICgxMjMsKSkKKyAgICAgICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShjYXVzZSksIGZ1dHVyZXMucHJvY2Vzcy5fUmVtb3RlVHJhY2ViYWNrKQorICAgICAgICBzZWxmLmFzc2VydEluKCdyYWlzZSBSdW50aW1lRXJyb3IoMTIzKSAjIHNvbWUgY29tbWVudCcsIGNhdXNlLnRiKQorCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGYxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIGV4YworICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JhaXNlIFJ1bnRpbWVFcnJvcigxMjMpICMgc29tZSBjb21tZW50JywKKyAgICAgICAgICAgICAgICAgICAgICBmMS5nZXR2YWx1ZSgpKQorCiAKIGNsYXNzIEZ1dHVyZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kb25lX2NhbGxiYWNrX3dpdGhfcmVzdWx0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCAwOWMyMjlhLi40NzBkMmNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtNTc5LDcgKzU3OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24gdHlwZSAlcy4lcyIKLSAgICAgICAgICAgICAgICAgICAgICAlIChleGMuX19tb2R1bGVfXywgZXhjLl9fbmFtZV9fKSkKKyAgICAgICAgICAgICAgICAgICAgICAlIChleGMuX19tb2R1bGVfXywgZXhjLl9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9ib29sZWFuKHNlbGYpOgogICAgICAgICBjZiA9IHNlbGYuZnJvbXN0cmluZygKQEAgLTE1ODQsNiArMTU4NCwzNCBAQAogICAgICAgICAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihwYXJzZXJbJ3NlY3Rpb24nXSksICc8U2VjdGlvbjogc2VjdGlvbj4nKQogCisgICAgZGVmIHRlc3RfaW5jb25zaXN0ZW50X2NvbnZlcnRlcnNfc3RhdGUoc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQorICAgICAgICBpbXBvcnQgZGVjaW1hbAorICAgICAgICBwYXJzZXIuY29udmVydGVyc1snZGVjaW1hbCddID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgICAgIFtzMV0KKyAgICAgICAgICAgIG9uZSA9IDEKKyAgICAgICAgICAgIFtzMl0KKyAgICAgICAgICAgIHR3byA9IDIKKyAgICAgICAgIiIiKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkZWNpbWFsJywgcGFyc2VyLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmdldGRlY2ltYWwoJ3MxJywgJ29uZScpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5nZXRkZWNpbWFsKCdzMicsICd0d28nKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXJbJ3MxJ10uZ2V0ZGVjaW1hbCgnb25lJyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyWydzMiddLmdldGRlY2ltYWwoJ3R3bycpLCAyKQorICAgICAgICBkZWwgcGFyc2VyLmdldGRlY2ltYWwKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0ZGVjaW1hbCgnczEnLCAnb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICBkZWwgcGFyc2VyLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdkZWNpbWFsJywgcGFyc2VyLmNvbnZlcnRlcnMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldGRlY2ltYWwoJ3MxJywgJ29uZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyWydzMSddLmdldGRlY2ltYWwoJ29uZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyWydzMiddLmdldGRlY2ltYWwoJ3R3bycpCisKIAogY2xhc3MgRXhjZXB0aW9uUGlja2xpbmdUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIGlzc3VlICMxMzc2MDogQ29uZmlnUGFyc2VyIGV4Y2VwdGlvbnMgYXJlIG5vdCBwaWNrbGFibGUuIiIiCkBAIC0xNzc2LDUgKzE4MDQsMjUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazMnXSwgJ3YzOyMvL3N0aWxsIHYzIyBhbmQgc3RpbGwgdjMnKQogCiAKK2NsYXNzIEV4Y2VwdGlvbkNvbnRleHRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgdGhhdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGRvZXNuJ3QgbGVhaworICAgIHRocm91Z2ggcmFpc2luZyBleGNlcHRpb25zLiAiIiIKKworICAgIGRlZiB0ZXN0X2dldF9iYXNpY19pbnRlcnBvbGF0aW9uKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbUGF0aHNdCisgICAgICAgIGhvbWVfZGlyOiAvVXNlcnMKKyAgICAgICAgbXlfZGlyOiAlKGhvbWVfZGlyMSlzL2x1bWJlcmphY2sKKyAgICAgICAgbXlfcGljdHVyZXM6ICUobXlfZGlyKXMvUGljdHVyZXMKKyAgICAgICAgIiIiKQorICAgICAgICBjbSA9IHNlbGYuYXNzZXJ0UmFpc2VzKGNvbmZpZ3BhcnNlci5JbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKQorICAgICAgICB3aXRoIGNtOgorICAgICAgICAgICAgcGFyc2VyLmdldCgnUGF0aHMnLCAnbXlfZGlyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjbS5leGNlcHRpb24uX19zdXBwcmVzc19jb250ZXh0X18sIFRydWUpCisKKyAgICBkZWYgdGVzdF9nZXRfZXh0ZW5kZWRfaW50ZXJwb2xhdGlvbihzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigKKyAgICAgICAgICBpbnRlcnBvbGF0aW9uPWNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24oKSkKKyAgICAgICAgcGFyc2VyLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbUGF0aHNdCisgICAgICAgIGhvbWVfZGlyOiAvVXNlcnMKKyAgICAgICAgbXlfZGlyOiAke2hvbWVfZGlyMX0vbHVtYmVyamFjaworICAgICAgICBteV9waWN0dXJlczogJHtteV9kaXJ9L1BpY3R1cmVzCisgICAgICAgICIiIikKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcikKKyAgICAgICAgd2l0aCBjbToKKyAgICAgICAgICAgIHBhcnNlci5nZXQoJ1BhdGhzJywgJ215X2RpcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19vcHRpb25zKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbUGF0aHNdCisgICAgICAgIGhvbWVfZGlyOiAvVXNlcnMKKyAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvbmZpZ3BhcnNlci5Ob1NlY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIub3B0aW9ucygndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zZWN0aW9uKHNlbGYpOgorICAgICAgICBjb25maWcgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuTm9TZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY29uZmlnLnNldCgnU2VjdGlvbjEnLCAnYW5faW50JywgJzE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjbS5leGNlcHRpb24uX19zdXBwcmVzc19jb250ZXh0X18sIFRydWUpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfb3B0aW9uKHNlbGYpOgorICAgICAgICBjb25maWcgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuTm9TZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY29uZmlnLnJlbW92ZV9vcHRpb24oJ1NlY3Rpb24xJywgJ2FuX2ludCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisKK2NsYXNzIENvbnZlcnRlcnNUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiSW50cm9kdWNlZCBpbiAzLjUsIGlzc3VlICMxODE1OS4iIiIKKworICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIKKworICAgIGRlZiBuZXdjb25maWcoc2VsZiwgZGVmYXVsdHM9Tm9uZSk6CisgICAgICAgIGluc3RhbmNlID0gc3VwZXIoKS5uZXdjb25maWcoZGVmYXVsdHM9ZGVmYXVsdHMpCisgICAgICAgIGluc3RhbmNlLmNvbnZlcnRlcnNbJ2xpc3QnXSA9IGxhbWJkYSB2OiBbZS5zdHJpcCgpIGZvciBlIGluIHYuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuc3RyaXAoKV0KKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0ZXJzKHNlbGYpOgorICAgICAgICBjZmcgPSBzZWxmLm5ld2NvbmZpZygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jvb2xlYW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGlzdCcsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snaW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydmbG9hdCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snYm9vbGVhbiddKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjZmcuY29udmVydGVyc1snbGlzdCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjZmcuY29udmVydGVyc1snJ10gPSBsYW1iZGEgdjogdgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmNvbnZlcnRlcnNbTm9uZV0gPSBsYW1iZGEgdjogdgorICAgICAgICBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgICAgIFtzXQorICAgICAgICBzdHIgPSBzdHJpbmcKKyAgICAgICAgaW50ID0gMQorICAgICAgICBmbG9hdCA9IDAuNQorICAgICAgICBsaXN0ID0gYSBiIGMgZCBlIGYgZworICAgICAgICBib29sID0geWVzCisgICAgICAgICIiIikKKyAgICAgICAgcyA9IGNmZ1sncyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snc3RyJ10sICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2ludCddLCAnMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snZmxvYXQnXSwgJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snbGlzdCddLCAnYSBiIGMgZCBlIGYgZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snYm9vbCddLCAneWVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ3N0cicpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ2ludCcpLCAnMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdmbG9hdCcpLCAnMC41JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ2xpc3QnKSwgJ2EgYiBjIGQgZSBmIGcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXQoJ3MnLCAnYm9vbCcpLCAneWVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ3N0cicpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0aW50KCdzJywgJ2ludCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRmbG9hdCgncycsICdmbG9hdCcpLCAwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxpc3QoJ3MnLCAnbGlzdCcpLCBbJ2EnLCAnYicsICdjJywgJ2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlJywgJ2YnLCAnZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRib29sZWFuKCdzJywgJ2Jvb2wnKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldCgnc3RyJyksICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0aW50KCdpbnQnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldGZsb2F0KCdmbG9hdCcpLCAwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRsaXN0KCdsaXN0JyksIFsnYScsICdiJywgJ2MnLCAnZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZScsICdmJywgJ2cnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldGJvb2xlYW4oJ2Jvb2wnKSwgVHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBjZmcuZ2V0ZGVjaW1hbCgncycsICdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcy5nZXRkZWNpbWFsKCdmbG9hdCcpCisgICAgICAgIGltcG9ydCBkZWNpbWFsCisgICAgICAgIGNmZy5jb252ZXJ0ZXJzWydkZWNpbWFsJ10gPSBkZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVjaW1hbCcsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjZmcuY29udmVydGVyc1snZGVjaW1hbCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDUpCisgICAgICAgIGRlYzBfNSA9IGRlY2ltYWwuRGVjaW1hbCgnMC41JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0ZGVjaW1hbCgncycsICdmbG9hdCcpLCBkZWMwXzUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRkZWNpbWFsKCdmbG9hdCcpLCBkZWMwXzUpCisgICAgICAgIGRlbCBjZmcuY29udmVydGVyc1snZGVjaW1hbCddCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2RlY2ltYWwnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGNmZy5nZXRkZWNpbWFsKCdzJywgJ2Zsb2F0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzLmdldGRlY2ltYWwoJ2Zsb2F0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBjZmcuY29udmVydGVyc1snJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbTm9uZV0KKworCitjbGFzcyBCbGF0YW50T3ZlcnJpZGVDb252ZXJ0ZXJzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoYXQgaWYgc29tZWJvZHkgb3ZlcnJvZGUgYSBnZXRib29sZWFuKCk/IFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgaW4KKyAgICB0aGlzIGNhc2UgdGhlIGF1dG9tYXRpYyBjb252ZXJ0ZXJzIGRvIG5vdCBraWNrIGluLiIiIgorCisgICAgY29uZmlnID0gIiIiCisgICAgICAgIFtvbmVdCisgICAgICAgIG9uZSA9IGZhbHNlCisgICAgICAgIHR3byA9IGZhbHNlCisgICAgICAgIHRocmVlID0gbG9uZyBzdG9yeSBzaG9ydAorCisgICAgICAgIFt0d29dCisgICAgICAgIG9uZSA9IGZhbHNlCisgICAgICAgIHR3byA9IGZhbHNlCisgICAgICAgIHRocmVlID0gZm91cgorICAgICIiIgorCisgICAgZGVmIHRlc3RfY29udmVydGVyc19hdF9pbml0KHNlbGYpOgorICAgICAgICBjZmcgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKGNvbnZlcnRlcnM9eydsZW4nOiBsZW59KQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoc2VsZi5jb25maWcpCisgICAgICAgIHNlbGYuX3Rlc3RfbGVuKGNmZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2xlbiddKQorCisgICAgZGVmIHRlc3RfaW5oZXJpdGFuY2Uoc2VsZik6CisgICAgICAgIGNsYXNzIFN0cmFuZ2VDb25maWdQYXJzZXIoY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcik6CisgICAgICAgICAgICBnZXR0eXNidXJnID0gJ2EgaGlzdG9yaWMgYm9yb3VnaCBpbiBzb3V0aCBjZW50cmFsIFBlbm5zeWx2YW5pYScKKworICAgICAgICAgICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWNvbmZpZ3BhcnNlci5fVU5TRVQpOgorICAgICAgICAgICAgICAgIGlmIHNlY3Rpb24gPT0gb3B0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldGJvb2xlYW4oc2VjdGlvbiwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKKyAgICAgICAgICAgIGRlZiBnZXRsZW4oc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9Y29uZmlncGFyc2VyLl9VTlNFVCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jb252KHNlY3Rpb24sIG9wdGlvbiwgbGVuLCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQorCisgICAgICAgIGNmZyA9IFN0cmFuZ2VDb25maWdQYXJzZXIoKQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoc2VsZi5jb25maWcpCisgICAgICAgIHNlbGYuX3Rlc3RfbGVuKGNmZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2xlbiddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2ZnLmdldGJvb2xlYW4oJ29uZScsICdvbmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCd0d28nLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBjZmcuY29udmVydGVyc1snYm9vbGVhbiddID0gY2ZnLl9jb252ZXJ0X3RvX2Jvb2xlYW4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCd0d28nLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorCisgICAgZGVmIF90ZXN0X2xlbihzZWxmLCBjZmcpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jvb2xlYW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGVuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3R5c2J1cmcnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2ludCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snZmxvYXQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAnb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICd0aHJlZScpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAnb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICd0aHJlZScpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICdmb3VyJywgZmFsbGJhY2s9MCksIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vT3B0aW9uRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmdldGxlbigndHdvJywgJ2ZvdXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1snb25lJ10uZ2V0bGVuKCdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbigndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWydvbmUnXS5nZXRsZW4oJ3RocmVlJyksIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbigndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ3RocmVlJyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ2ZvdXInLCAwKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignZm91cicpLCBOb25lKQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfYXNzaWdubWVudChzZWxmKToKKyAgICAgICAgY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIGNmZy5nZXRib29sZWFuID0gbGFtYmRhIHNlY3Rpb24sIG9wdGlvbjogVHJ1ZQorICAgICAgICBjZmcuZ2V0bGVuID0gbGFtYmRhIHNlY3Rpb24sIG9wdGlvbjogbGVuKGNmZ1tzZWN0aW9uXVtvcHRpb25dKQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoc2VsZi5jb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNmZy5jb252ZXJ0ZXJzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYm9vbGVhbicsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsZW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2ludCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snZmxvYXQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCd0d28nLCAnb25lJykpCisgICAgICAgIGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10gPSBjZmcuX2NvbnZlcnRfdG9fYm9vbGVhbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCd0d28nLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndGhyZWUnKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndGhyZWUnKSwgNCkKKyAgICAgICAgIyBJZiBhIGdldHRlciBpbXBsIGlzIGFzc2lnbmVkIHN0cmFpZ2h0IHRvIHRoZSBpbnN0YW5jZSwgaXQgd29uJ3QKKyAgICAgICAgIyBiZSBhdmFpbGFibGUgb24gdGhlIHNlY3Rpb24gcHJveGllcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1snb25lJ10uZ2V0bGVuKCdvbmUnKSwgNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKaW5kZXggYTY2N2ExNi4uM2M2YmRlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTg2LDggKzg1LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29udGFpbmVyKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdENvbnRhaW5zKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggMzljYzc3Ni4uYWRhZmM5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtODMsNiArODMsNDIgQEAKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKDk5OSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0ZSwgWzEsIDQyLCA5OTldKQogCisgICAgZGVmIHRlc3RfY29udGV4dG1hbmFnZXJfZXhjZXB0X3N0b3BpdGVyKHNlbGYpOgorICAgICAgICBzdG9wX2V4YyA9IFN0b3BJdGVyYXRpb24oJ3NwYW0nKQorICAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICAgZGVmIHdvb2hvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICAgICAgd2l0aCB3b29ob28oKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3RvcF9leGMKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXgsIHN0b3BfZXhjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBzdXBwcmVzc2VkJykKKworICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX2V4Y2VwdF9wZXA0Nzkoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJcCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGdlbmVyYXRvcl9zdG9wCitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitAY29udGV4dG1hbmFnZXIKK2RlZiB3b29ob28oKToKKyAgICB5aWVsZAorIiIiCisgICAgICAgIGxvY2FscyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbG9jYWxzLCBsb2NhbHMpCisgICAgICAgIHdvb2hvbyA9IGxvY2Fsc1snd29vaG9vJ10KKworICAgICAgICBzdG9wX2V4YyA9IFN0b3BJdGVyYXRpb24oJ3NwYW0nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHdvb2hvbygpOgorICAgICAgICAgICAgICAgIHJhaXNlIHN0b3BfZXhjCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4LCBzdG9wX2V4YykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgc3VwcHJlc3NlZCcpCisKICAgICBkZWYgX2NyZWF0ZV9jb250ZXh0bWFuYWdlcl9hdHRyaWJzKHNlbGYpOgogICAgICAgICBkZWYgYXR0cmlicygqKmt3KToKICAgICAgICAgICAgIGRlZiBkZWNvcmF0ZShmdW5jKToKQEAgLTcxOCw2MCArNzU0LDc2IEBACiAgICAgICAgIHN0YWNrLnB1c2goY20pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgY20pCiAKLWNsYXNzIFRlc3RSZWRpcmVjdFN0ZG91dCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKK2NsYXNzIFRlc3RSZWRpcmVjdFN0cmVhbToKKworICAgIHJlZGlyZWN0X3N0cmVhbSA9IE5vbmUKKyAgICBvcmlnX3N0cmVhbSA9IE5vbmUKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX2RvY3N0cmluZ3MKICAgICBkZWYgdGVzdF9pbnN0YW5jZV9kb2NzKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE5MzMwOiBlbnN1cmUgY29udGV4dCBtYW5hZ2VyIGluc3RhbmNlcyBoYXZlIGdvb2QgZG9jc3RyaW5ncwotICAgICAgICBjbV9kb2NzdHJpbmcgPSByZWRpcmVjdF9zdGRvdXQuX19kb2NfXwotICAgICAgICBvYmogPSByZWRpcmVjdF9zdGRvdXQoTm9uZSkKKyAgICAgICAgY21fZG9jc3RyaW5nID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0uX19kb2NfXworICAgICAgICBvYmogPSBzZWxmLnJlZGlyZWN0X3N0cmVhbShOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5fX2RvY19fLCBjbV9kb2NzdHJpbmcpCiAKICAgICBkZWYgdGVzdF9ub19yZWRpcmVjdF9pbl9pbml0KHNlbGYpOgotICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICAgICAgcmVkaXJlY3Rfc3Rkb3V0KE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnN0ZG91dCwgb3JpZ19zdGRvdXQpCisgICAgICAgIG9yaWdfc3Rkb3V0ID0gZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pCisgICAgICAgIHNlbGYucmVkaXJlY3Rfc3RyZWFtKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pLCBvcmlnX3N0ZG91dCkKIAogICAgIGRlZiB0ZXN0X3JlZGlyZWN0X3RvX3N0cmluZ19pbyhzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKICAgICAgICAgbXNnID0gIkNvbnNpZGVyIGFuIEFQSSBsaWtlIGhlbHAoKSwgd2hpY2ggcHJpbnRzIGRpcmVjdGx5IHRvIHN0ZG91dCIKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgICAgIHdpdGggcmVkaXJlY3Rfc3Rkb3V0KGYpOgotICAgICAgICAgICAgcHJpbnQobXNnKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQorICAgICAgICB3aXRoIHNlbGYucmVkaXJlY3Rfc3RyZWFtKGYpOgorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPWdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSksIG9yaWdfc3Rkb3V0KQogICAgICAgICBzID0gZi5nZXR2YWx1ZSgpLnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBtc2cpCiAKICAgICBkZWYgdGVzdF9lbnRlcl9yZXN1bHRfaXNfdGFyZ2V0KHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChmKSBhcyBlbnRlcl9yZXN1bHQ6CisgICAgICAgIHdpdGggc2VsZi5yZWRpcmVjdF9zdHJlYW0oZikgYXMgZW50ZXJfcmVzdWx0OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlbnRlcl9yZXN1bHQsIGYpCiAKICAgICBkZWYgdGVzdF9jbV9pc19yZXVzYWJsZShzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgd3JpdGVfdG9fZiA9IHJlZGlyZWN0X3N0ZG91dChmKQotICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgd3JpdGVfdG9fZiA9IHNlbGYucmVkaXJlY3Rfc3RyZWFtKGYpCisgICAgICAgIG9yaWdfc3Rkb3V0ID0gZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pCiAgICAgICAgIHdpdGggd3JpdGVfdG9fZjoKLSAgICAgICAgICAgIHByaW50KCJIZWxsbyIsIGVuZD0iICIpCisgICAgICAgICAgICBwcmludCgiSGVsbG8iLCBlbmQ9IiAiLCBmaWxlPWdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSkKICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgcHJpbnQoIldvcmxkISIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnN0ZG91dCwgb3JpZ19zdGRvdXQpCisgICAgICAgICAgICBwcmludCgiV29ybGQhIiwgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pLCBvcmlnX3N0ZG91dCkKICAgICAgICAgcyA9IGYuZ2V0dmFsdWUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICJIZWxsbyBXb3JsZCFcbiIpCiAKICAgICBkZWYgdGVzdF9jbV9pc19yZWVudHJhbnQoc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlX3RvX2YgPSByZWRpcmVjdF9zdGRvdXQoZikKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgIHdyaXRlX3RvX2YgPSBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQogICAgICAgICB3aXRoIHdyaXRlX3RvX2Y6Ci0gICAgICAgICAgICBwcmludCgiSGVsbG8iLCBlbmQ9IiAiKQorICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIiwgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCiAgICAgICAgICAgICB3aXRoIHdyaXRlX3RvX2Y6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIldvcmxkISIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnN0ZG91dCwgb3JpZ19zdGRvdXQpCisgICAgICAgICAgICAgICAgcHJpbnQoIldvcmxkISIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAgICAgICAgIHMgPSBmLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiSGVsbG8gV29ybGQhXG4iKQogCiAKK2NsYXNzIFRlc3RSZWRpcmVjdFN0ZG91dChUZXN0UmVkaXJlY3RTdHJlYW0sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHJlZGlyZWN0X3N0cmVhbSA9IHJlZGlyZWN0X3N0ZG91dAorICAgIG9yaWdfc3RyZWFtID0gInN0ZG91dCIKKworCitjbGFzcyBUZXN0UmVkaXJlY3RTdGRlcnIoVGVzdFJlZGlyZWN0U3RyZWFtLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSByZWRpcmVjdF9zdGRlcnIKKyAgICBvcmlnX3N0cmVhbSA9ICJzdGRlcnIiCisKKwogY2xhc3MgVGVzdFN1cHByZXNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX2RvY3N0cmluZ3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCBlYjhkMThjLi40YzE5NzQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC03LDcgKzcsNiBAQAogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGUsIGx0LCBnZSwgZ3QsIGVxLCBuZQogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBvcmRlcl9jb21wYXJpc29ucyA9IGxlLCBsdCwgZ2UsIGd0CiBlcXVhbGl0eV9jb21wYXJpc29ucyA9IGVxLCBuZQpAQCAtMTQ2LDYgKzE0NSw0MCBAQAogICAgICAgICB4ID0gQyg0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5LmNvcHkoeCksIHgpCiAKKyAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0bmV3YXJncyhzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbywKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoNDIpCisgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHksIEMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuZm9vLCB4LmZvbykKKworICAgIGRlZiB0ZXN0X2NvcHlfaW5zdF9nZXRuZXdhcmdzX2V4KHNlbGYpOgorICAgICAgICBjbGFzcyBDKGludCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsICosIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IGludC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX2V4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpLCB7J2Zvbyc6IHNlbGYuZm9vfQorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vID09IG90aGVyLmZvbworICAgICAgICB4ID0gQyhmb289NDIpCisgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHksIEMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuZm9vLCB4LmZvbykKKwogICAgIGRlZiB0ZXN0X2NvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgpAQCAtNDA1LDYgKzQzOCw0MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBDKGludCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IGludC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vLAorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vID09IG90aGVyLmZvbworICAgICAgICB4ID0gQyhbNDJdKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeSwgQykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5mb28sIHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPVs0Ml0pCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgpAQCAtNzUyLDggKzgyMSw1IEBACiAKIGRlZiBnbG9iYWxfZm9vKHgsIHkpOiByZXR1cm4geCt5CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q29weSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5CmluZGV4IGFiZTA3NDguLjUyZTg4N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weXJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHlyZWcucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgRXh0ZW5zaW9uU2F2ZXIKIAogY2xhc3MgQzoKQEAgLTExMyw5ICsxMTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvcHlSZWdUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhMzMwNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtMCwwICsxLDEwNDkgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworY2xhc3MgQXN5bmNZaWVsZEZyb206CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYub2JqID0gb2JqCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHNlbGYub2JqCisKKworY2xhc3MgQXN5bmNZaWVsZDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgIHlpZWxkIHNlbGYudmFsdWUKKworCitkZWYgcnVuX2FzeW5jKGNvcm8pOgorICAgIGFzc2VydCBjb3JvLl9fY2xhc3NfXyBpcyB0eXBlcy5HZW5lcmF0b3JUeXBlCisKKyAgICBidWZmZXIgPSBbXQorICAgIHJlc3VsdCA9IE5vbmUKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNvcm8uc2VuZChOb25lKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICByZXN1bHQgPSBleC5hcmdzWzBdIGlmIGV4LmFyZ3MgZWxzZSBOb25lCisgICAgICAgICAgICBicmVhaworICAgIHJldHVybiBidWZmZXIsIHJlc3VsdAorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc2lsZW5jZV9jb3JvX2djKCk6CisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgIHlpZWxkCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKworY2xhc3MgQXN5bmNCYWRTeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMyCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzMKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF80KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM1CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgorCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM2CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQgZnJvbScgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6CisKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzcKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF84KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jOAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4Xzkoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM5CisKKworY2xhc3MgVG9rZW5pemVyUmVnclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1ZiA9ICdcbicuam9pbihidWYpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgNTAwIGNvbnNlcXVlbnQsIG9uZS1saW5lIGRlZnMgaXMgT0sKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGJ1ZiwgbnMsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydpNDk5J10oKSwgNDk5KQorCisgICAgICAgICMgVGVzdCB0aGF0IDUwMCBjb25zZXF1ZW50LCBvbmUtbGluZSBkZWZzICphbmQqCisgICAgICAgICMgb25lICdhc3luYyBkZWYnIGZvbGxvd2luZyB0aGVtIGlzIE9LCisgICAgICAgIGJ1ZiArPSAnXG5hc3luYyBkZWYgZm9vKCk6XG4gICAgcmV0dXJuJworICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoYnVmLCBucywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ2k0OTknXSgpLCA0OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24obnNbJ2ZvbyddKSkKKworCitjbGFzcyBDb3JvdXRpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dlbl8xKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihnZW4sICdfX2F3YWl0X18nKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIDEwCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLCB0eXBlcy5HZW5lcmF0b3JUeXBlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChmb28uX19jb2RlX18uY29fZmxhZ3MgJiAweDgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2woZm9vLl9fY29kZV9fLmNvX2ZsYWdzICYgMHgyMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKGYuZ2lfY29kZS5jb19mbGFncyAmIDB4ODApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChmLmdpX2NvZGUuY29fZmxhZ3MgJiAweDIwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZiksIChbXSwgMTApKQorCisgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYmFyLl9fY29kZV9fLmNvX2ZsYWdzICYgMHg4MCkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLCAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZm9vKCkpLCAnXjxjb3JvdXRpbmUgb2JqZWN0LiogYXQgMHguKj4kJykKKworICAgIGRlZiB0ZXN0X2Z1bmNfNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIGNoZWNrID0gbGFtYmRhOiBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiY29yb3V0aW5lLW9iamVjdHMgZG8gbm90IHN1cHBvcnQgaXRlcmF0aW9uIikKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICBsaXN0KGZvbygpKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIHR1cGxlKGZvbygpKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIHN1bShmb28oKSkKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICBpdGVyKGZvbygpKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIG5leHQoZm9vKCkpCisKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgY2hlY2soKToKKyAgICAgICAgICAgIGZvciBpIGluIGZvbygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBjaGVjaygpOgorICAgICAgICAgICAgW2kgZm9yIGkgaW4gZm9vKCldCisKKyAgICBkZWYgdGVzdF9mdW5jXzUoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgeWllbGQgMQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGJhcigpCisKKyAgICAgICAgY2hlY2sgPSBsYW1iZGE6IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJjb3JvdXRpbmUtb2JqZWN0cyBkbyBub3Qgc3VwcG9ydCBpdGVyYXRpb24iKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIGZvciBlbCBpbiBmb28oKTogcGFzcworCisgICAgICAgICMgdGhlIGZvbGxvd2luZyBzaG91bGQgcGFzcyB3aXRob3V0IGFuIGVycm9yCisgICAgICAgIGZvciBlbCBpbiBiYXIoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWwsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2VsIGZvciBlbCBpbiBiYXIoKV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYXIoKSksICgxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGJhcigpKSksIDEpCisKKyAgICBkZWYgdGVzdF9mdW5jXzYoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGJhcigpCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZW5kKE5vbmUpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VuZChOb25lKSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGYuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfZnVuY183KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gMTAKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGJhcigpCisKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgJ3lpZWxkIGZyb20nIGEgY29yb3V0aW5lIG9iamVjdCBmcm9tIGEgZ2VuZXJhdG9yIik6CisKKyAgICAgICAgICAgIGxpc3QoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzgoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICh5aWVsZCBmcm9tIGZvbygpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhiYXIoKSksIChbXSwgJ3NwYW0nKSApCisKKyAgICBkZWYgdGVzdF9mdW5jXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KAorICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsICJjb3JvdXRpbmUgJy4qdGVzdF9mdW5jXzkuKmZvbycgd2FzIG5ldmVyIGF3YWl0ZWQiKToKKworICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xKHNlbGYpOgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IDEKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm9iamVjdCBpbnQgY2FuLnQuKmF3YWl0Iik6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBbXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAib2JqZWN0IGxpc3QgY2FuLnQuKmF3YWl0Iik6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8zKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbMSwgMiwgM10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoWzEsIDIsIDNdLCBOb25lKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBiYXIoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFtdLCA0MikpCisKKyAgICBkZWYgdGVzdF9hd2FpdF81KHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fLipyZXR1cm5lZCBub24taXRlcmF0b3Igb2YgdHlwZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF82KHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKFs1Ml0pCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBBd2FpdGFibGUoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbNTJdLCBOb25lKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0Xzcoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgNDIKKyAgICAgICAgICAgICAgICByZXR1cm4gMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBBd2FpdGFibGUoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbNDJdLCAxMDApKQorCisgICAgZGVmIHRlc3RfYXdhaXRfOChzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAib2JqZWN0IEF3YWl0YWJsZSBjYW4ndCBiZSB1c2VkIGluICdhd2FpdCcgZXhwcmVzc2lvbiIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF85KHNlbGYpOgorICAgICAgICBkZWYgd3JhcCgpOgorICAgICAgICAgICAgcmV0dXJuIGJhcgorCisgICAgICAgIGFzeW5jIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGIgPSBiYXIoKQorCisgICAgICAgICAgICBkYiA9IHsnYic6ICBsYW1iZGE6IHdyYXB9CisKKyAgICAgICAgICAgIGNsYXNzIERCOgorICAgICAgICAgICAgICAgIGIgPSB3cmFwCisKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgYmFyKCkgKyBhd2FpdCB3cmFwKCkoKSArIGF3YWl0IGRiWydiJ10oKSgpKCkgKworICAgICAgICAgICAgICAgICAgICBhd2FpdCBiYXIoKSAqIDEwMDAgKyBhd2FpdCBEQi5iKCkoKSkKKworICAgICAgICBhc3luYyBkZWYgZm9vMigpOgorICAgICAgICAgICAgcmV0dXJuIC1hd2FpdCBiYXIoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFtdLCA0MjE2OCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbzIoKSksIChbXSwgLTQyKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmF6KCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gYmF6KCkKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKGF3YWl0IGJhcigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFtdLCA0MikpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMShzZWxmKToKKyAgICAgICAgZGVmIGlkZW50KHZhbCk6CisgICAgICAgICAgICByZXR1cm4gdmFsCisKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBpZGVudCh2YWw9YXdhaXQgYmFyKCkpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbzIoKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBiYXIoKSwgJ2hhbScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28yKCkpLCAoW10sICgnc3BhbScsICdoYW0nKSkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb3JvKCkKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0XzEzKHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IEF3YWl0YWJsZSgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fLipyZXR1cm5lZCBub24taXRlcmF0b3Igb2YgdHlwZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzEoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbJ2VudGVyLTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudGVyLTItJyArIHNlbGYubmFtZV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWydleGl0LTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXQtMi0nICsgc2VsZi5uYW1lXSkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYubmFtZSA9PSAnQic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoIkEiKSBhcyBhLCBNYW5hZ2VyKCJCIikgYXMgYjoKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbKCdtYW5hZ2VycycsIGEubmFtZSwgYi5uYW1lKV0pCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHJlc3VsdCwgXyA9IHJ1bl9hc3luYyhmKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXN1bHQsIFsnZW50ZXItMS1BJywgJ2VudGVyLTItQScsICdlbnRlci0xLUInLCAnZW50ZXItMi1CJywKKyAgICAgICAgICAgICAgICAgICAgICgnbWFuYWdlcnMnLCAnQScsICdCJyksCisgICAgICAgICAgICAgICAgICAgICAnZXhpdC0xLUInLCAnZXhpdC0yLUInLCAnZXhpdC0xLUEnLCAnZXhpdC0yLUEnXQorICAgICAgICApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCJBIikgYXMgYSwgTWFuYWdlcigiQyIpIGFzIGM6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWygnbWFuYWdlcnMnLCBhLm5hbWUsIGMubmFtZSldKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8yKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ19fYWV4aXRfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8zKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZW50ZXJfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF80KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZXhpdF9fJyk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzUoc2VsZik6CisgICAgICAgICMgV2hpbGUgdGhpcyB0ZXN0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBzZW5zZSwKKyAgICAgICAgIyBpdCdzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhbiBlYXJseSBidWcgd2l0aCBvcGNvZGVzCisgICAgICAgICMgZ2VuZXJhdGlvbgorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgKDEsICkgPT0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZ1bmMoKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfNihzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTIzCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NTYKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIm9iamVjdCBpbnQgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iKToKKyAgICAgICAgICAgICMgaXQncyBpbXBvcnRhbnQgdGhhdCBfX2FleGl0X18gd2Fzbid0IGNhbGxlZAorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF83KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NDQKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICAgICAgZXhjLmFyZ3NbMF0sICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgbm90IE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnaW52YWxpZCBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIGRpZCBub3QgZmFpbCcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfOChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQ1NgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIENOVCArPSAxCisKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworCisgICAgZGVmIHRlc3Rfd2l0aF85KHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ05ULCAxKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fY29udGV4dF9fIGlzIG5vdCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdleGNlcHRpb24gZnJvbSBfX2FleGl0X18gZGlkIG5vdCBwcm9wYWdhdGUnKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMShzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnZXhjZXB0aW9uIGZyb20gX19hZW50ZXJfXyBkaWQgbm90IHByb3BhZ2F0ZScpCisKKyAgICBkZWYgdGVzdF93aXRoXzEyKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uX19jbGFzc19fLCBDTSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzEzKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIENOVCArPSAxCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgQ05UICs9IDEwMDAKKyAgICAgICAgICAgIENOVCArPSAxMDAwMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworICAgIGRlZiB0ZXN0X2Zvcl8xKHNlbGYpOgorICAgICAgICBhaXRlcl9jYWxscyA9IDAKKworICAgICAgICBjbGFzcyBBc3luY0l0ZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIGFpdGVyX2NhbGxzCisgICAgICAgICAgICAgICAgYWl0ZXJfY2FsbHMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCAoc2VsZi5pICUgMTApOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkKHNlbGYuaSAqIDEwKQorCisgICAgICAgICAgICAgICAgaWYgc2VsZi5pID4gMTAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmksIHNlbGYuaQorCisKKyAgICAgICAgYnVmZmVyID0gW10KKyAgICAgICAgYXN5bmMgZGVmIHRlc3QxKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaTEsIGkyIGluIEFzeW5jSXRlcigpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaTEgKyBpMikKKworICAgICAgICB5aWVsZGVkLCBfID0gcnVuX2FzeW5jKHRlc3QxKCkpCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgX19haXRlcl9fIHdhcyBjYWxsZWQgb25seSBvbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWl0ZXJfY2FsbHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeWllbGRlZCwgW2kgKiAxMDAgZm9yIGkgaW4gcmFuZ2UoMSwgMTEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZmZXIsIFtpKjIgZm9yIGkgaW4gcmFuZ2UoMSwgMTAxKV0pCisKKworICAgICAgICBidWZmZXIgPSBbXQorICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgICAgIGlmIGlbMF0gPT0gMjA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ3doYXQ/JykKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ2VuZCcpCisKKyAgICAgICAgeWllbGRlZCwgXyA9IHJ1bl9hc3luYyh0ZXN0MigpKQorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IF9fYWl0ZXJfXyB3YXMgY2FsbGVkIG9ubHkgb25jZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpdGVyX2NhbGxzLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlpZWxkZWQsIFsxMDAsIDIwMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbaSBmb3IgaSBpbiByYW5nZSgxLCAyMSldICsgWydlbmQnXSkKKworCisgICAgICAgIGJ1ZmZlciA9IFtdCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0MygpOgorICAgICAgICAgICAgbm9ubG9jYWwgYnVmZmVyCisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBc3luY0l0ZXIoKToKKyAgICAgICAgICAgICAgICBpZiBpWzBdID4gMjA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCd3aGF0PycpCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdlbmQnKQorCisgICAgICAgIHlpZWxkZWQsIF8gPSBydW5fYXN5bmModGVzdDMoKSkKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBfX2FpdGVyX18gd2FzIGNhbGxlZCBvbmx5IG9uY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaXRlcl9jYWxscywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5aWVsZGVkLCBbaSAqIDEwMCBmb3IgaSBpbiByYW5nZSgxLCAxMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmZlciwgW2kgZm9yIGkgaW4gcmFuZ2UoMSwgMjEpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3doYXQ/JywgJ2VuZCddKQorCisgICAgZGVmIHRlc3RfZm9yXzIoc2VsZik6CisgICAgICAgIHR1cCA9ICgxLCAyLCAzKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudCh0dXApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gdHVwOgorICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICJhc3luYyBmb3InIHJlcXVpcmVzIGFuIG9iamVjdC4qX19haXRlcl9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQodHVwKSwgcmVmc19iZWZvcmUpCisKKyAgICBkZWYgdGVzdF9mb3JfMyhzZWxmKToKKyAgICAgICAgY2xhc3MgSToKKyAgICAgICAgICAgIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBhaXRlciA9IEkoKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudChhaXRlcikKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhaXRlcjoKKyAgICAgICAgICAgICAgICBwcmludCgnbmV2ZXIgZ29pbmcgdG8gaGFwcGVuJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChhaXRlciksIHJlZnNfYmVmb3JlKQorCisgICAgZGVmIHRlc3RfZm9yXzQoc2VsZik6CisgICAgICAgIGNsYXNzIEk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisKKyAgICAgICAgYWl0ZXIgPSBJKCkKKyAgICAgICAgcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQoYWl0ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYWl0ZXI6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dF9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYWl0ZXIpLCByZWZzX2JlZm9yZSkKKworICAgIGRlZiB0ZXN0X2Zvcl81KHNlbGYpOgorICAgICAgICBjbGFzcyBJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMjMKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dC4qaW50Iik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Zvcl82KHNlbGYpOgorICAgICAgICBJID0gMAorCisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMDAKKworICAgICAgICBjbGFzcyBJdGVyYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgPSAwCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmkgPiAxMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcigpCisgICAgICAgIGl0ZXJhYmxlID0gSXRlcmFibGUoKQorICAgICAgICBtcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQobWFuYWdlcikKKyAgICAgICAgaXJlZnNfYmVmb3JlID0gc3lzLmdldHJlZmNvdW50KGl0ZXJhYmxlKQorCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgICAgSSArPSAxCisgICAgICAgICAgICBJICs9IDEwMDAKKworICAgICAgICBydW5fYXN5bmMobWFpbigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEksIDExMTAxMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChtYW5hZ2VyKSwgbXJlZnNfYmVmb3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChpdGVyYWJsZSksIGlyZWZzX2JlZm9yZSkKKworICAgICAgICAjIyMjIyMjIyMjIyMjIworCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgcnVuX2FzeW5jKG1haW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChJLCAzMzMwMzMpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBhc3luYyBkZWYgbWFpbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgSQorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgIHJ1bl9hc3luYyhtYWluKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSSwgMjA1NTUyNTUpCisKKyAgICBkZWYgdGVzdF9mb3JfNyhzZWxmKToKKyAgICAgICAgQ05UID0gMAorICAgICAgICBjbGFzcyBBSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorICAgICAgICAgICAgQ05UICs9IDEwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMCkKKworCitjbGFzcyBDb3JvQXN5bmNJT0NvbXBhdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXN5bmNpb18xKHNlbGYpOgorICAgICAgICBpbXBvcnQgYXN5bmNpbworCisgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYnVmZmVyID0gW10KKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoMSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgyKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxKQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZXhjX3R5cGUuX19uYW1lX18pCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKSBhcyBjOgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgndW5yZWFjaGFibGUnKQorCisgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChsb29wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmKCkpCisgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvb3AuY2xvc2UoKQorICAgICAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbMSwgMiwgJ015RXhjZXB0aW9uJ10pCisKKworY2xhc3MgU3lzU2V0Q29yb1dyYXBwZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICBkZWYgd3JhcChnZW4pOgorICAgICAgICAgICAgbm9ubG9jYWwgd3JhcHBlZAorICAgICAgICAgICAgd3JhcHBlZCA9IGdlbgorICAgICAgICAgICAgcmV0dXJuIGdlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpLCB3cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cmFwcGVkKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmKSwgKFtdLCAnc3BhbScpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpOgorICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3cmFwcGVkKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiY2FsbGFibGUgZXhwZWN0ZWQsIGdvdCBpbnQiKToKKyAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIGRlZiB3cmFwcGVyKGNvcm8pOgorICAgICAgICAgICAgYXN5bmMgZGVmIHdyYXAoY29ybyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvcm8KKyAgICAgICAgICAgIHJldHVybiB3cmFwKGNvcm8pCisKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICAicmVjdXJzaXZlbHkgd3JhcCAuKiB3cmFwIC4qIik6CisKKyAgICAgICAgICAgICAgICBmb28oKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisKK2NsYXNzIENBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3RwX2F3YWl0XzEoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBhd2FpdFR5cGUgYXMgYXQKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBmdXR1cmUgPSBhdChpdGVyKFsxXSkpCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGZ1dHVyZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLnNlbmQoTm9uZSksIDEpCisKKyAgICBkZWYgdGVzdF90cF9hd2FpdF8yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHBfYXdhaXQgdG8gX19hd2FpdF9fIG1hcHBpbmcKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorICAgICAgICBmdXR1cmUgPSBhdChpdGVyKFsxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChmdXR1cmUuX19hd2FpdF9fKCkpLCAxKQorCisgICAgZGVmIHRlc3RfdHBfYXdhaXRfMyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGZ1dHVyZSA9IGF0KDEpCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGZ1dHVyZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fLipyZXR1cm5lZCBub24taXRlcmF0b3Igb2YgdHlwZSAnaW50JyIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKS5zZW5kKE5vbmUpLCAxKQorCisKK2lmIF9fbmFtZV9fPT0iX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKaW5kZXggY2U1ZDI3ZS4uZjE4OTgzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBjbGFzcyBDUHJvZmlsZVRlc3QoUHJvZmlsZVRlc3QpOgogICAgIHByb2ZpbGVyY2xhc3MgPSBjUHJvZmlsZS5Qcm9maWxlCiAgICAgcHJvZmlsZXJtb2R1bGUgPSBjUHJvZmlsZQotICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBtYXh9IgorICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBidWlsdGlucy5tYXh9IgogCiAgICAgZGVmIGdldF9leHBlY3RlZF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJldHVybiBfUHJvZmlsZU91dHB1dApAQCAtNzIsOSArNzIsOSBAQAogcHJvZmlsZWUucHk6ODgoaGVscGVyMikgICAgICAgICAgICAgICAgICAgICAgICAgICA8LSAgICAgICA2ICAgIDAuMjM0ICAgIDAuMzAwICBwcm9maWxlZS5weTo1NShoZWxwZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgICAgMC4wNzggICAgMC4xMDAgIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpCiBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDggICAgMC4wNjQgICAgMC4wODAgIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCi17YnVpbHQtaW4gbWV0aG9kIGV4Y19pbmZvfSAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCi17YnVpbHQtaW4gbWV0aG9kIGhhc2F0dHJ9ICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCit7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLmhhc2F0dHJ9ICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggICAgMC4wMDAgICAgMC4wMDggIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCit7YnVpbHQtaW4gbWV0aG9kIHN5cy5leGNfaW5mb30gICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiB7bWV0aG9kICdhcHBlbmQnIG9mICdsaXN0JyBvYmplY3RzfSAgICAgICAgICAgICAgIDwtICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpIiIiCiBfUHJvZmlsZU91dHB1dFsncHJpbnRfY2FsbGVlcyddID0gIiIiXAogPHN0cmluZz46MSg8bW9kdWxlPikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICAxICAgIDAuMjcwICAgIDEuMDAwICBwcm9maWxlZS5weToyNSh0ZXN0ZnVuYykKQEAgLTg3LDEyICs4NywxMiBAQAogcHJvZmlsZWUucHk6NTUoaGVscGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMTE2ICAgIDAuMTIwICBwcm9maWxlZS5weTo3MyhoZWxwZXIxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDAuMDAwICAgIDAuMTQwICBwcm9maWxlZS5weTo4NChoZWxwZXIyX2luZGlyZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ICAgIDAuMjM0ICAgIDAuMzAwICBwcm9maWxlZS5weTo4OChoZWxwZXIyKQotcHJvZmlsZWUucHk6NzMoaGVscGVyMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMDAwICAgIDAuMDAwICB7YnVpbHQtaW4gbWV0aG9kIGV4Y19pbmZvfQorcHJvZmlsZWUucHk6NzMoaGVscGVyMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA0ICAgIDAuMDAwICAgIDAuMDA0ICB7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLmhhc2F0dHJ9CiBwcm9maWxlZS5weTo4NChoZWxwZXIyX2luZGlyZWN0KSAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDIgICAgMC4wMDYgICAgMC4wNDAgIHByb2ZpbGVlLnB5OjM1KGZhY3RvcmlhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAwLjA3OCAgICAwLjEwMCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gICAgICAgOCAgICAwLjA2NCAgICAwLjA4MCAgcHJvZmlsZWUucHk6OTgoc3ViaGVscGVyKQogcHJvZmlsZWUucHk6OTgoc3ViaGVscGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgIDE2ICAgIDAuMDE2ICAgIDAuMDE2ICBwcm9maWxlZS5weToxMTAoX19nZXRhdHRyX18pCi17YnVpbHQtaW4gbWV0aG9kIGhhc2F0dHJ9ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgMTIgICAgMC4wMTIgICAgMC4wMTIgIHByb2ZpbGVlLnB5OjExMChfX2dldGF0dHJfXykiIiIKK3tidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0gICAgICAgICAgICAgICAgLT4gICAgICAxMiAgICAwLjAxMiAgICAwLjAxMiAgcHJvZmlsZWUucHk6MTEwKF9fZ2V0YXR0cl9fKSIiIgogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKaW5kZXggMzM2Y2NiZS4uNThkZmQwMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CkBAIC04LDcgKzgsNyBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdGVzdC5zdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAogQ1JBU0hFUl9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImNyYXNoZXJzIikKIENSQVNIRVJfRklMRVMgPSBvcy5wYXRoLmpvaW4oQ1JBU0hFUl9ESVIsICIqLnB5IikKQEAgLTMwLDkgKzMwLDggQEAKICAgICAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZShmbmFtZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDcmFzaGVyVGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA2NTQ0OWFlLi44ZTljMmI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMTg2LDYgKzE4NiwxNCBAQAogICAgICAgICBzZWxmLl93cml0ZV90ZXN0KFsnYScsMSwncCxxJ10sICdhLDEscFxcLHEnLAogICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWNoYXI9J1xcJywgcXVvdGluZyA9IGNzdi5RVU9URV9OT05FKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfaXRlcmFibGUoc2VsZik6CisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbJ2EnLCAxLCAncCxxJ10pLCAnYSwxLCJwLHEiJykKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFsnYScsIDEsIE5vbmVdKSwgJ2EsMSwnKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoW10pLCAnJykKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFtOb25lXSksICciIicpCisgICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yX3Rlc3QoY3N2LkVycm9yLCBpdGVyKFtOb25lXSksIHF1b3Rpbmc9Y3N2LlFVT1RFX05PTkUpCisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbTm9uZSwgTm9uZV0pLCAnLCcpCisKICAgICBkZWYgdGVzdF93cml0ZXJvd3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEJyb2tlbkZpbGU6CiAgICAgICAgICAgICBkZWYgd3JpdGUoc2VsZiwgYnVmKToKQEAgLTU3OCw2ICs1ODYsMTYgQEAKICAgICAgICAgICAgIGZpbGVvYmoucmVhZGxpbmUoKSAjIGhlYWRlcgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgIjEwLCxhYmNcclxuIikKIAorICAgIGRlZiB0ZXN0X3dyaXRlX211bHRpcGxlX2RpY3Rfcm93cyhzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgZmllbGRuYW1lcz1bImYxIiwgImYyIiwgImYzIl0pCisgICAgICAgIHdyaXRlci53cml0ZWhlYWRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5nZXR2YWx1ZSgpLCAiZjEsZjIsZjNcclxuIikKKyAgICAgICAgd3JpdGVyLndyaXRlcm93cyhbeyJmMSI6IDEsICJmMiI6ICJhYmMiLCAiZjMiOiAiZiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImYxIjogMiwgImYyIjogNSwgImYzIjogInh5eiJ9XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgImYxLGYyLGYzXHJcbjEsYWJjLGZcclxuMiw1LHh5elxyXG4iKQorCiAgICAgZGVmIHRlc3Rfd3JpdGVfbm9fZmllbGRzKHNlbGYpOgogICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5EaWN0V3JpdGVyLCBmaWxlb2JqKQpAQCAtNzc2LDcgKzc5NCw3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY3N2LkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG15ZGlhbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyJxdW90ZWNoYXIiIG11c3QgYmUgYW4gMS1jaGFyYWN0ZXIgc3RyaW5nJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnInF1b3RlY2hhciIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZycpCiAKICAgICAgICAgbXlkaWFsZWN0LnF1b3RlY2hhciA9IDQKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgpAQCAtNzk5LDEzICs4MTcsMTMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnImRlbGltaXRlciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QuZGVsaW1pdGVyID0gIiIKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnImRlbGltaXRlciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QuZGVsaW1pdGVyID0gYiIsIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CkBAIC0xMDY2LDExICsxMDg0LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBtb2QgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgKltnZXRhdHRyKG1vZCwgbmFtZSkgZm9yIG5hbWUgaW4gZGlyKG1vZCkgaWYgbmFtZS5zdGFydHN3aXRoKCdUZXN0JyldCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CmluZGV4IGJkN2Q0ZmMuLjI3NDcwNDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CkBAIC0zNzAsNiArMzcwLDEzIEBACiAgICAgICAgIG9mZnNldCA9IGh1bWFuX3JlYWRhYmxlX3NpZ25hdHVyZS5maW5kKCJbeSwgeCxdIikKICAgICAgICAgYXNzZXJ0IG9mZnNldCA+PSAwLCAiIgogCisgICAgZGVmIHRlc3RfdXBkYXRlX2xpbmVzX2NvbHMoc2VsZik6CisgICAgICAgICMgdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHRlc3QgdGhhdCBMSU5FUyBhbmQgQ09MUyBhcmUgdXBkYXRlZCwKKyAgICAgICAgIyBiZWNhdXNlIHdlIGNhbid0IGF1dG9tYXRlIGNoYW5naW5nIHRoZW0uIFNlZSBJc3N1ZSAjNDI1NCBmb3IKKyAgICAgICAgIyBhIG1hbnVhbCB0ZXN0IHNjcmlwdC4gV2UgY2FuIG9ubHkgdGVzdCB0aGF0IHRoZSBmdW5jdGlvbgorICAgICAgICAjIGNhbiBiZSBjYWxsZWQuCisgICAgICAgIGN1cnNlcy51cGRhdGVfbGluZXNfY29scygpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CmluZGV4IGQ5ZGRiMzIuLjJkNGViNTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQpAQCAtMSwyMCArMSwyMCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCisKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlLCBydW5fdW5pdHRlc3QKIAogVEVTVFMgPSAndGVzdC5kYXRldGltZXRlc3RlcicKIAotIyBYWFg6IGltcG9ydF9mcmVzaF9tb2R1bGUoKSBpcyBzdXBwb3NlZCB0byBsZWF2ZSBzeXMubW9kdWxlIGNhY2hlIHVudG91Y2hlZCwKLSMgWFhYOiBidXQgaXQgZG9lcyBub3QsIHNvIHdlIGhhdmUgdG8gc2F2ZSBhbmQgcmVzdG9yZSBpdCBvdXJzZWx2ZXMuCi1zYXZlX3N5c19tb2R1bGVzID0gc3lzLm1vZHVsZXMuY29weSgpCiB0cnk6CiAgICAgcHVyZV90ZXN0cyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoVEVTVFMsIGZyZXNoPVsnZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD1bJ19kYXRldGltZSddKQogICAgIGZhc3RfdGVzdHMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKFRFU1RTLCBmcmVzaD1bJ2RhdGV0aW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ10pCiBmaW5hbGx5OgotICAgIHN5cy5tb2R1bGVzLmNsZWFyKCkKLSAgICBzeXMubW9kdWxlcy51cGRhdGUoc2F2ZV9zeXNfbW9kdWxlcykKKyAgICAjIFhYWDogaW1wb3J0X2ZyZXNoX21vZHVsZSgpIGlzIHN1cHBvc2VkIHRvIGxlYXZlIHN5cy5tb2R1bGUgY2FjaGUgdW50b3VjaGVkLAorICAgICMgWFhYOiBidXQgaXQgZG9lcyBub3QsIHNvIHdlIGhhdmUgdG8gY2xlYW51cCBvdXJzZWx2ZXMuCisgICAgZm9yIG1vZG5hbWUgaW4gWydkYXRldGltZScsICdfZGF0ZXRpbWUnLCAnX3N0cnB0aW1lJ106CisgICAgICAgIHN5cy5tb2R1bGVzLnBvcChtb2RuYW1lLCBOb25lKQogdGVzdF9tb2R1bGVzID0gW3B1cmVfdGVzdHMsIGZhc3RfdGVzdHNdCiB0ZXN0X3N1ZmZpeGVzID0gWyJfUHVyZSIsICJfRmFzdCJdCiAjIFhYWChnYikgRmlyc3QgcnVuIGFsbCB0aGUgX1B1cmUgdGVzdHMsIHRoZW4gYWxsIHRoZSBfRmFzdCB0ZXN0cy4gIFlvdSBtaWdodApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKaW5kZXggZGM4OGNhNi4uZmY2M2M4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CkBAIC0yMTcsNiArMjE3LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREJNIG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZCIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbmV3KHNlbGYpOgorICAgICAgICB3aXRoIGR1bWJkYm0ub3BlbihfZm5hbWUsICduJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CisgICAgICAgICAgICAgICAgZltrXSA9IHNlbGYuX2RpY3Rba10KKworICAgICAgICB3aXRoIGR1bWJkYm0ub3BlbihfZm5hbWUsICduJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5rZXlzKCksIFtdKQorCiAgICAgZGVmIHRlc3RfZXZhbChzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKF9mbmFtZSArICcuZGlyJywgJ3cnKSBhcyBzdHJlYW06CiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoInN0cihwcmludCgnSGFja2VkIScpKSwgMFxuIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQppbmRleCBhMTc4ZjZmLi4xMzdhYWE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CkBAIC0zMywxMiArMzMsMTMgQEAKIGltcG9ydCBudW1iZXJzCiBpbXBvcnQgbG9jYWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcnVuX2RvY3Rlc3QsIGlzX3Jlc291cmNlX2VuYWJsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX0lFRUVfNzU0KQorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19JRUVFXzc1NCwgcmVxdWlyZXNfZG9jc3RyaW5ncykKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2hlY2tfd2FybmluZ3MsIGltcG9ydF9mcmVzaF9tb2R1bGUsIFRlc3RGYWlsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX2xvY2FsZSwgY3B5dGhvbl9vbmx5KQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHRpbWUKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IGluc3BlY3QKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC00MTc0LDkgKzQxNzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX192ZXJzaW9uX18sIFAuX192ZXJzaW9uX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2xpYm1wZGVjX3ZlcnNpb25fXywgUC5fX2xpYm1wZGVjX3ZlcnNpb25fXykKIAotICAgICAgICB4ID0gZGlyKEMpCi0gICAgICAgIHkgPSBbcyBmb3IgcyBpbiBkaXIoUCkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihDKSwgZGlyKFApKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9hdHRyaWJ1dGVzKHNlbGYpOgogCkBAIC00NDU1LDE4ICs0NDU0LDYgQEAKIGNsYXNzIFB5RnVuY3Rpb25hbGl0eSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiRXh0cmEgZnVuY3Rpb25hbGl0eSBpbiBkZWNpbWFsLnB5IiIiCiAKLSAgICBkZWYgdGVzdF9weV9xdWFudGl6ZV93YXRjaGV4cChzZWxmKToKLSAgICAgICAgIyB3YXRjaGV4cCBmdW5jdGlvbmFsaXR5Ci0gICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKLSAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKLQotICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6Ci0gICAgICAgICAgICBjLnByZWMgPSAxCi0gICAgICAgICAgICBjLkVtYXggPSAxCi0gICAgICAgICAgICBjLkVtaW4gPSAtMQotICAgICAgICAgICAgeCA9IERlY2ltYWwoOTk5OTkpLnF1YW50aXplKERlY2ltYWwoIjFlMyIpLCB3YXRjaGV4cD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMS4wMEUrNScpKQotCiAgICAgZGVmIHRlc3RfcHlfYWx0ZXJuYXRlX2Zvcm1hdHRpbmcoc2VsZik6CiAgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKICAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbApAQCAtNTQwOSw2ICs1Mzk2LDE0MyBAQAogICAgICAgICAgICAgeSA9IERlY2ltYWwoMTAqKig5KjI1KSkuX19zaXplb2ZfXygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgrNCkKIAorQHJlcXVpcmVzX2RvY3N0cmluZ3MKK0B1bml0dGVzdC5za2lwVW5sZXNzKEMsICJ0ZXN0IHJlcXVpcmVzIEMgdmVyc2lvbiIpCitjbGFzcyBTaWduYXR1cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJGdW5jdGlvbiBzaWduYXR1cmVzIiIiCisKKyAgICBkZWYgdGVzdF9pbnNwZWN0X21vZHVsZShzZWxmKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKFApOgorICAgICAgICAgICAgaWYgYXR0ci5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBfZnVuYyA9IGdldGF0dHIoUCwgYXR0cikKKyAgICAgICAgICAgIGNfZnVuYyA9IGdldGF0dHIoQywgYXR0cikKKyAgICAgICAgICAgIGlmIChhdHRyID09ICdEZWNpbWFsJyBvciBhdHRyID09ICdDb250ZXh0JyBvcgorICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmdW5jdGlvbihwX2Z1bmMpKToKKyAgICAgICAgICAgICAgICBwX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHBfZnVuYykKKyAgICAgICAgICAgICAgICBjX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGNfZnVuYykKKworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyIG5hbWVzOgorICAgICAgICAgICAgICAgIGNfbmFtZXMgPSBsaXN0KGNfc2lnLnBhcmFtZXRlcnMua2V5cygpKQorICAgICAgICAgICAgICAgIHBfbmFtZXMgPSBbeCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLmtleXMoKSBpZiBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHguc3RhcnRzd2l0aCgnXycpXQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjX25hbWVzLCBwX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIgbmFtZSBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICBjX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisgICAgICAgICAgICAgICAgcF9raW5kID0gW3hbMV0ua2luZCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLml0ZW1zKCkgaWYgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgIHhbMF0uc3RhcnRzd2l0aCgnXycpXQorCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGlmIGF0dHIgIT0gJ3NldGNvbnRleHQnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfa2luZCwgcF9raW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0icGFyYW1ldGVyIGtpbmQgbWlzbWF0Y2ggaW4gJXMiICUgcF9mdW5jKQorCisgICAgZGVmIHRlc3RfaW5zcGVjdF90eXBlcyhzZWxmKToKKworICAgICAgICBQT1MgPSBpbnNwZWN0Ll9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBQT1NfS1dEID0gaW5zcGVjdC5fUGFyYW1ldGVyS2luZC5QT1NJVElPTkFMX09SX0tFWVdPUkQKKworICAgICAgICAjIFR5cGUgaGV1cmlzdGljICh0eXBlIGFubm90YXRpb25zIHdvdWxkIGhlbHAhKToKKyAgICAgICAgcGRpY3QgPSB7QzogeydvdGhlcic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd0aGlyZCc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd4JzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3knOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAneic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdhJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2InOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYyc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdleHAnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbW9kdWxvJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ251bSc6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICdmJzogMS4wLAorICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJzogQy5ST1VORF9IQUxGX1VQLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQnOiBDLmdldGNvbnRleHQoKX0sCisgICAgICAgICAgICAgICAgIFA6IHsnb3RoZXInOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAndGhpcmQnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYSc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdiJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2MnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnZXhwJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ21vZHVsbyc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdudW0nOiAiMSIsCisgICAgICAgICAgICAgICAgICAgICAnZic6IDEuMCwKKyAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZyc6IFAuUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0JzogUC5nZXRjb250ZXh0KCl9fQorCisgICAgICAgIGRlZiBta2FyZ3MobW9kdWxlLCBzaWcpOgorICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICAgICAgZm9yIG5hbWUsIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnc2VsZic6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBQT1M6CisgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHBkaWN0W21vZHVsZV1bbmFtZV0pCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kID09IFBPU19LV0Q6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1tuYW1lXSA9IHBkaWN0W21vZHVsZV1bbmFtZV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJ1bmV4cGVjdGVkIHBhcmFtZXRlciBraW5kIikKKyAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKKworICAgICAgICBkZWYgdHIocyk6CisgICAgICAgICAgICAiIiJUaGUgQyBDb250ZXh0IGRvY3N0cmluZ3MgdXNlICd4JyBpbiBvcmRlciB0byBwcmV2ZW50IGNvbmZ1c2lvbgorICAgICAgICAgICAgICAgd2l0aCB0aGUgYXJ0aWNsZSAnYScgaW4gdGhlIGRlc2NyaXB0aW9ucy4iIiIKKyAgICAgICAgICAgIGlmIHMgPT0gJ3gnOiByZXR1cm4gJ2EnCisgICAgICAgICAgICBpZiBzID09ICd5JzogcmV0dXJuICdiJworICAgICAgICAgICAgaWYgcyA9PSAneic6IHJldHVybiAnYycKKyAgICAgICAgICAgIHJldHVybiBzCisKKyAgICAgICAgZGVmIGRvaXQodHkpOgorICAgICAgICAgICAgcF90eXBlID0gZ2V0YXR0cihQLCB0eSkKKyAgICAgICAgICAgIGNfdHlwZSA9IGdldGF0dHIoQywgdHkpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocF90eXBlKToKKyAgICAgICAgICAgICAgICBpZiBhdHRyLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwX2Z1bmMgPSBnZXRhdHRyKHBfdHlwZSwgYXR0cikKKyAgICAgICAgICAgICAgICBjX2Z1bmMgPSBnZXRhdHRyKGNfdHlwZSwgYXR0cikKKyAgICAgICAgICAgICAgICBpZiBpbnNwZWN0LmlzZnVuY3Rpb24ocF9mdW5jKToKKyAgICAgICAgICAgICAgICAgICAgcF9zaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShwX2Z1bmMpCisgICAgICAgICAgICAgICAgICAgIGNfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoY19mdW5jKQorCisgICAgICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyIG5hbWVzOgorICAgICAgICAgICAgICAgICAgICBwX25hbWVzID0gbGlzdChwX3NpZy5wYXJhbWV0ZXJzLmtleXMoKSkKKyAgICAgICAgICAgICAgICAgICAgY19uYW1lcyA9IFt0cih4KSBmb3IgeCBpbiBjX3NpZy5wYXJhbWV0ZXJzLmtleXMoKV0KKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfbmFtZXMsIHBfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIgbmFtZSBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgcF9raW5kID0gW3gua2luZCBmb3IgeCBpbiBwX3NpZy5wYXJhbWV0ZXJzLnZhbHVlcygpXQorICAgICAgICAgICAgICAgICAgICBjX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisKKyAgICAgICAgICAgICAgICAgICAgIyAnc2VsZicgcGFyYW1ldGVyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBfa2luZFswXSwgUE9TX0tXRCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjX2tpbmRbMF0sIFBPUykKKworICAgICAgICAgICAgICAgICAgICAjIHJlbWFpbmluZyBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAgICBpZiB0eSA9PSAnRGVjaW1hbCc6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfa2luZFsxOl0sIHBfa2luZFsxOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0icGFyYW1ldGVyIGtpbmQgbWlzbWF0Y2ggaW4gJXMiICUgcF9mdW5jKQorICAgICAgICAgICAgICAgICAgICBlbHNlOiAjIENvbnRleHQgbWV0aG9kcyBhcmUgcG9zaXRpb25hbCBvbmx5IGluIHRoZSBDIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjX2tpbmQpLCBsZW4ocF9raW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBSdW4gdGhlIGZ1bmN0aW9uOgorICAgICAgICAgICAgICAgICAgICBhcmdzLCBrd2RzID0gbWthcmdzKEMsIGNfc2lnKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGNfdHlwZSg5KSwgYXR0cikoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJpbnZhbGlkIHNpZ25hdHVyZSBmb3IgJXM6ICVzICVzIiAlIChjX2Z1bmMsIGFyZ3MsIGt3ZHMpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3ZHMgPSBta2FyZ3MoUCwgcF9zaWcpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIocF90eXBlKDkpLCBhdHRyKSgqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoImludmFsaWQgc2lnbmF0dXJlIGZvciAlczogJXMgJXMiICUgKHBfZnVuYywgYXJncywga3dkcykpCisKKyAgICAgICAgZG9pdCgnRGVjaW1hbCcpCisgICAgICAgIGRvaXQoJ0NvbnRleHQnKQorCisKIGFsbF90ZXN0cyA9IFsKICAgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCiAgIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LApAQCAtNTQzNCw2ICs1NTU4LDcgQEAKICAgICBhbGxfdGVzdHMgPSBhbGxfdGVzdHNbMTo6Ml0KIGVsc2U6CiAgICAgYWxsX3Rlc3RzLmluc2VydCgwLCBDaGVja0F0dHJpYnV0ZXMpCisgICAgYWxsX3Rlc3RzLmluc2VydCgxLCBTaWduYXR1cmVUZXN0KQogCiAKIGRlZiB0ZXN0X21haW4oYXJpdGg9Tm9uZSwgdmVyYm9zZT1Ob25lLCB0b2RvX3Rlc3RzPU5vbmUsIGRlYnVnPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5CmluZGV4IDUzYzk0NjkuLmQwYTJlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjb3JhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBkZWYgZnVuY2F0dHJzKCoqa3dkcyk6CiAgICAgZGVmIGRlY29yYXRlKGZ1bmMpOgpAQCAtMzAxLDkgKzMwMCw1IEBACiAgICAgICAgIGNsYXNzIEMob2JqZWN0KTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuZXh0cmEsICdzZWNvbmQnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdERlY29yYXRvcnMpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdENsYXNzRGVjb3JhdG9ycykKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZWZhdWx0ZGljdC5weQppbmRleCA1MzJkNTM1Li5hOTBiYzJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTE1Nyw4ICsxNTYsOSBAQAogICAgICAgICAgICAgZGVmIF9mYWN0b3J5KHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICBkID0gc3ViKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoZCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICJkZWZhdWx0ZGljdCg8Ym91bmQgbWV0aG9kIHN1Yi5fZmFjdG9yeSBvZiBkZWZhdWx0ZGljdCguLi4iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGQpLAorICAgICAgICAgICAgciJkZWZhdWx0ZGljdFwoPGJvdW5kIG1ldGhvZCAuKnN1YlwuX2ZhY3RvcnkgIgorICAgICAgICAgICAgciJvZiBkZWZhdWx0ZGljdFwoXC5cLlwuLCBce1x9XCk+LCBce1x9XCkiKQogCiAgICAgICAgICMgTk9URTogcHJpbnRpbmcgYSBzdWJjbGFzcyBvZiBhIGJ1aWx0aW4gdHlwZSBkb2VzIG5vdCBjYWxsIGl0cwogICAgICAgICAjIHRwX3ByaW50IHNsb3QuIFNvIHRoaXMgcGFydCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB0ZXN0IGFzIGFib3ZlLgpAQCAtMTgzLDggKzE4Myw1IEBACiAgICAgICAgICAgICBvID0gcGlja2xlLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG8pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0RGVmYXVsdERpY3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IDVlY2JjNzMuLmI4NTg1MDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtMTY0LDYgKzE2NCwyNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCA+ICB5LCBsaXN0KHgpID4gIGxpc3QoeSksICh4LHkpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCA+PSB5LCBsaXN0KHgpID49IGxpc3QoeSksICh4LHkpKQogCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIG4gPSAyMDAKKworICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGkgaW4gZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuKzEpIG5vdCBpbiBkKQorCisgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvbgorICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgIGRbbi8vMl0gPSBNdXRhdGVDbXAoZCwgRmFsc2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIG4gaW4gZAorCisgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgY29tcGFyaXNvbiBleGNlcHRpb25zCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZFtuLy8yXSA9IEJhZENtcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIG4gaW4gZAorCiAgICAgZGVmIHRlc3RfZXh0ZW5kKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ2EnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGQuZXh0ZW5kLCAxKQpAQCAtMTcyLDYgKzE5MiwyNiBAQAogICAgICAgICBkLmV4dGVuZChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoJ2FiY2RhYmNkJykpCiAKKyAgICBkZWYgdGVzdF9hZGQoc2VsZik6CisgICAgICAgIGQgPSBkZXF1ZSgpCisgICAgICAgIGUgPSBkZXF1ZSgnYWJjJykKKyAgICAgICAgZiA9IGRlcXVlKCdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKyBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUgKyBmLCBkZXF1ZSgnYWJjZGVmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSArIGUsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlICsgZCwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKyBlLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZCArIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZSArIGQsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICsgZSwgZGVxdWUoJ2FiYycpKQorCisgICAgICAgIGcgPSBkZXF1ZSgnYWJjZGVmJywgbWF4bGVuPTQpCisgICAgICAgIGggPSBkZXF1ZSgnZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcgKyBoLCBkZXF1ZSgnZWZnaCcpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRlcXVlKCdhYmMnKSArICdkZWYnCisKICAgICBkZWYgdGVzdF9pYWRkKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ2EnKQogICAgICAgICBkICs9ICdiY2QnCkBAIC0yMTEsNiArMjUxLDExMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBkLl9fZ2V0aXRlbV9fLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBkLl9fZ2V0aXRlbV9fLCAtMSkKIAorICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgorICAgICAgICBmb3IgbiBpbiAxLCAyLCAzMCwgNDAsIDIwMDoKKworICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmluZGV4KGkpLCBpKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGQuaW5kZXgobisxKQorCisgICAgICAgICAgICAjIFRlc3QgZGV0ZWN0aW9uIG9mIG11dGF0aW9uIGR1cmluZyBpdGVyYXRpb24KKyAgICAgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgICAgIGRbbi8vMl0gPSBNdXRhdGVDbXAoZCwgRmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKQorCisgICAgICAgICAgICAjIFRlc3QgZGV0ZWN0aW9uIG9mIGNvbXBhcmlzb24gZXhjZXB0aW9ucworICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZFtuLy8yXSA9IEJhZENtcCgpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKQorCisgICAgICAgICMgVGVzdCBzdGFydCBhbmQgc3RvcCBhcmd1bWVudHMgYmVoYXZpb3IgbWF0Y2hlcyBsaXN0LmluZGV4KCkKKyAgICAgICAgZWxlbWVudHMgPSAnQUJDREVGR0hJJworICAgICAgICBub25lbGVtZW50ID0gJ1onCisgICAgICAgIGQgPSBkZXF1ZShlbGVtZW50cyAqIDIpCisgICAgICAgIHMgPSBsaXN0KGVsZW1lbnRzICogMikKKyAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKC01IC0gbGVuKHMpKjIsIDUgKyBsZW4ocykgKiAyKToKKyAgICAgICAgICAgIGZvciBzdG9wIGluIHJhbmdlKC01IC0gbGVuKHMpKjIsIDUgKyBsZW4ocykgKiAyKToKKyAgICAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50cyArICdaJzoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gcy5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuaW5kZXgoZWxlbWVudCwgc3RhcnQsIHN0b3ApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaW5kZXgoZWxlbWVudCwgc3RhcnQsIHN0b3ApLCB0YXJnZXQpCisKKyAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CisgICAgICAgICMgVGVzdCB0byBtYWtlIHN1cmUgaW5zZXJ0IGJlaGF2ZXMgbGlrZSBsaXN0cworICAgICAgICBlbGVtZW50cyA9ICdBQkNERUZHSEknCisgICAgICAgIGZvciBpIGluIHJhbmdlKC01IC0gbGVuKGVsZW1lbnRzKSoyLCA1ICsgbGVuKGVsZW1lbnRzKSAqIDIpOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdBQkNERUZHSEknKQorICAgICAgICAgICAgcyA9IGxpc3QoJ0FCQ0RFRkdISScpCisgICAgICAgICAgICBkLmluc2VydChpLCAnWicpCisgICAgICAgICAgICBzLmluc2VydChpLCAnWicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIHMpCisKKyAgICBkZWYgdGVzdF9pbXVsKHNlbGYpOgorICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCkKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZC5tYXhsZW4pCisKKyAgICAgICAgZm9yIG4gaW4gKC0xMCwgLTEsIDAsIDEsIDIsIDEwLCAxMDAwKToKKyAgICAgICAgICAgIGQgPSBkZXF1ZSgnYScpCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2EnICogbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDQ5OSwgNTAwLCA1MDEsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhJywgNTAwKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCdhJyAqIG1pbihuLCA1MDApKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIDUwMCkKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhYmNkZWYnKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCdhYmNkZWYnICogbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDQ5OSwgNTAwLCA1MDEsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhYmNkZWYnLCA1MDApCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoKCdhYmNkZWYnICogbilbLTUwMDpdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIDUwMCkKKworICAgIGRlZiB0ZXN0X211bChzZWxmKToKKyAgICAgICAgZCA9IGRlcXVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAtNSwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMCwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMSwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAyLCBkZXF1ZSgnYWJjYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDMsIGRlcXVlKCdhYmNhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICogMSwgZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiAxLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcXVlKCkgKiA1LCBkZXF1ZSgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTUgKiBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgKiBkLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEgKiBkLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAqIGQsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzICogZCwgZGVxdWUoJ2FiY2FiY2FiYycpKQorCisgICAgICAgIGQgPSBkZXF1ZSgnYWJjJywgbWF4bGVuPTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIC01LCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAxLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDIsIGRlcXVlKCdiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAzMCwgZGVxdWUoJ2JjYWJjJykpCisKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgogICAgICAgICBuID0gMjAwCiAgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKQEAgLTUwNCwxMCArNjQ5LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICBkZWYgdGVzdF9jb3B5X21ldGhvZChzZWxmKToKKyAgICAgICAgbXV0ID0gWzEwXQorICAgICAgICBkID0gZGVxdWUoW211dF0pCisgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIG11dFswXSA9IDExCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisKICAgICBkZWYgdGVzdF9yZXZlcnNlZChzZWxmKToKICAgICAgICAgZm9yIHMgaW4gKCdhYmNkJywgcmFuZ2UoMjAwMCkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKGRlcXVlKHMpKSksIGxpc3QocmV2ZXJzZWQocykpKQogCisgICAgZGVmIHRlc3RfcmV2ZXJzZWRfbmV3KHNlbGYpOgorICAgICAgICBrbGFzcyA9IHR5cGUocmV2ZXJzZWQoZGVxdWUoKSkpCisgICAgICAgIGZvciBzIGluICgnYWJjZCcsIHJhbmdlKDIwMDApKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChrbGFzcyhkZXF1ZShzKSkpLCBsaXN0KHJldmVyc2VkKHMpKSkKKwogICAgIGRlZiB0ZXN0X2djX2RvZXNudF9ibG93dXAoc2VsZik6CiAgICAgICAgIGltcG9ydCBnYwogICAgICAgICAjIFRoaXMgdXNlZCB0byBhc3NlcnQtZmFpbCBpbiBkZXF1ZV90cmF2ZXJzZSgpIHVuZGVyIGEgZGVidWcKQEAgLTUzNyw3ICs2OTYsNyBAQAogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgotICAgICAgICBCTE9DS0xFTiA9IDYyCisgICAgICAgIEJMT0NLTEVOID0gNjQKICAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRubFAnKQogICAgICAgICBibG9ja3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJzJQJWRQJyAlIEJMT0NLTEVOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGRlcXVlKCkpLCBiYXNlc2l6ZSkKQEAgLTY4NCw2ICs4NDMsMjEgQEAKICAgICAgICAgIyBTRiBidWcgIzE0ODY2NjMgLS0gdGhpcyB1c2VkIHRvIGVycm9uZW91c2x5IHJhaXNlIGEgVHlwZUVycm9yCiAgICAgICAgIFN1YmNsYXNzV2l0aEt3YXJncyhuZXdhcmc9MSkKIAorY2xhc3MgVGVzdFNlcXVlbmNlKHNlcV90ZXN0cy5Db21tb25UZXN0KToKKyAgICB0eXBlMnRlc3QgPSBkZXF1ZQorCisgICAgZGVmIHRlc3RfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZ2V0c2xpY2Uoc2VsZik6CisgICAgICAgICMgRm9yIG5vdywgYnlwYXNzIHRlc3RzIHRoYXQgcmVxdWlyZSBzbGljaW5nCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIGxpYnJlZnRlc3QgPSAiIiIKQEAgLTc5OCw2ICs5NzIsNyBAQAogICAgICAgICBUZXN0VmFyaW91c0l0ZXJhdG9yQXJncywKICAgICAgICAgVGVzdFN1YmNsYXNzLAogICAgICAgICBUZXN0U3ViY2xhc3NXaXRoS3dhcmdzLAorICAgICAgICBUZXN0U2VxdWVuY2UsCiAgICAgKQogCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CmluZGV4IDlhNjBhMTIuLjgwYTUyNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQpAQCAtMjEsNiArMjEsNyBAQAogICAgICAgICAgICAgJ2FkZCc6ICcrJywKICAgICAgICAgICAgICdzdWInOiAnLScsCiAgICAgICAgICAgICAnbXVsJzogJyonLAorICAgICAgICAgICAgJ21hdG11bCc6ICdAJywKICAgICAgICAgICAgICd0cnVlZGl2JzogJy8nLAogICAgICAgICAgICAgJ2Zsb29yZGl2JzogJy8vJywKICAgICAgICAgICAgICdkaXZtb2QnOiAnZGl2bW9kJywKQEAgLTEwMTksNiArMTAyMCwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X18sIHsnZm9vJzogMX0pCiAKKyAgICBkZWYgdGVzdF9vYmplY3RfY2xhc3NfYXNzaWdubWVudF9iZXR3ZWVuX2hlYXB0eXBlc19hbmRfbm9uaGVhcHR5cGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWJUeXBlKHR5cGVzLk1vZHVsZVR5cGUpOgorICAgICAgICAgICAgYSA9IDEKKworICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgibSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLl9fY2xhc3NfXyBpcyB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobSwgImEiKSkKKworICAgICAgICBtLl9fY2xhc3NfXyA9IFN1YlR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIFN1YlR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJhIikpCisKKyAgICAgICAgbS5fX2NsYXNzX18gPSB0eXBlcy5Nb2R1bGVUeXBlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLl9fY2xhc3NfXyBpcyB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobSwgImEiKSkKKwogICAgIGRlZiB0ZXN0X3Nsb3RzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgX19zbG90c19fLi4uCiAgICAgICAgIGNsYXNzIEMwKG9iamVjdCk6CkBAIC0yMDA1LDcgKzIwMjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHJhdy5mc2V0LCBDLl9fZGljdF9fWydzZXR4J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmF3LmZkZWwsIEMuX19kaWN0X19bJ2RlbHgnXSkKIAotICAgICAgICBmb3IgYXR0ciBpbiAiX19kb2NfXyIsICJmZ2V0IiwgImZzZXQiLCAiZmRlbCI6CisgICAgICAgIGZvciBhdHRyIGluICJmZ2V0IiwgImZzZXQiLCAiZmRlbCI6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihyYXcsIGF0dHIsIDQyKQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIG1zZzoKQEAgLTIwMTYsNiArMjAzMyw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBBdHRyaWJ1dGVFcnJvciBmcm9tIHRyeWluZyB0byBzZXQgcmVhZG9ubHkgJXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ciBvbiBhIHByb3BlcnR5IiAlIGF0dHIpCiAKKyAgICAgICAgcmF3Ll9fZG9jX18gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhdy5fX2RvY19fLCA0MikKKwogICAgICAgICBjbGFzcyBEKG9iamVjdCk6CiAgICAgICAgICAgICBfX2dldGl0ZW1fXyA9IHByb3BlcnR5KGxhbWJkYSBzOiAxLzApCiAKQEAgLTMwMDMsOCArMzAyMyw2IEBACiAgICAgICAgIGNhbnQob2JqZWN0KCksIGxpc3QpCiAgICAgICAgIGNhbnQobGlzdCgpLCBvYmplY3QpCiAgICAgICAgIGNsYXNzIEludChpbnQpOiBfX3Nsb3RzX18gPSBbXQotICAgICAgICBjYW50KDIsIEludCkKLSAgICAgICAgY2FudChJbnQoKSwgaW50KQogICAgICAgICBjYW50KFRydWUsIGludCkKICAgICAgICAgY2FudCgyLCBib29sKQogICAgICAgICBvID0gb2JqZWN0KCkKQEAgLTQxNTMsNiArNDE3MSw3IEBACiAgICAgICAgICAgICAgICAgKCdfX2FkZF9fJywgICAgICAneCArIHknLCAgICAgICAgICAgICAgICAgICAneCArPSB5JyksCiAgICAgICAgICAgICAgICAgKCdfX3N1Yl9fJywgICAgICAneCAtIHknLCAgICAgICAgICAgICAgICAgICAneCAtPSB5JyksCiAgICAgICAgICAgICAgICAgKCdfX211bF9fJywgICAgICAneCAqIHknLCAgICAgICAgICAgICAgICAgICAneCAqPSB5JyksCisgICAgICAgICAgICAgICAgKCdfX21hdG11bF9fJywgICAneCBAIHknLCAgICAgICAgICAgICAgICAgICAneCBAPSB5JyksCiAgICAgICAgICAgICAgICAgKCdfX3RydWVkaXZfXycsICAneCAvIHknLCAgICAgICAgICAgICAgICAgICAneCAvPSB5JyksCiAgICAgICAgICAgICAgICAgKCdfX2Zsb29yZGl2X18nLCAneCAvLyB5JywgICAgICAgICAgICAgICAgICAneCAvLz0geScpLAogICAgICAgICAgICAgICAgICgnX19tb2RfXycsICAgICAgJ3ggJSB5JywgICAgICAgICAgICAgICAgICAgJ3ggJT0geScpLApAQCAtNDQxNCw2ICs0NDMzLDYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIl9fZGljdF9fIiwgQmFzZS5fX2RpY3RfXykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiX19kaWN0X18iLCBTdWIuX19kaWN0X18pCiAKKyAgICBkZWYgdGVzdF9ib3VuZF9tZXRob2RfcmVwcihzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihGb28oKS5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qRm9vXC5tZXRob2Qgb2YgPC4qRm9vIG9iamVjdCBhdCAuKj4+IikKKworCisgICAgICAgIGNsYXNzIEJhc2U6CisgICAgICAgICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgRGVyaXZlZDEoQmFzZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIERlcml2ZWQyKEJhc2UpOgorICAgICAgICAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGJhc2UgPSBCYXNlKCkKKyAgICAgICAgZGVyaXZlZDEgPSBEZXJpdmVkMSgpCisgICAgICAgIGRlcml2ZWQyID0gRGVyaXZlZDIoKQorICAgICAgICBzdXBlcl9kMiA9IHN1cGVyKERlcml2ZWQyLCBkZXJpdmVkMikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGJhc2UubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkJhc2VcLm1ldGhvZCBvZiA8LipCYXNlIG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGRlcml2ZWQxLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipCYXNlXC5tZXRob2Qgb2YgPC4qRGVyaXZlZDEgb2JqZWN0IGF0IC4qPj4iKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZGVyaXZlZDIubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkRlcml2ZWQyXC5tZXRob2Qgb2YgPC4qRGVyaXZlZDIgb2JqZWN0IGF0IC4qPj4iKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoc3VwZXJfZDIubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkJhc2VcLm1ldGhvZCBvZiA8LipEZXJpdmVkMiBvYmplY3QgYXQgLio+PiIpCisKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgbWV0aG9kKGNscyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZm9vLm1ldGhvZCksICMgYWNjZXNzIHZpYSBpbnN0YW5jZQorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qRm9vXC5tZXRob2Qgb2YgPGNsYXNzICcuKkZvbyc+PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihGb28ubWV0aG9kKSwgIyBhY2Nlc3MgdmlhIHRoZSBjbGFzcworICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qRm9vXC5tZXRob2Qgb2YgPGNsYXNzICcuKkZvbyc+PiIpCisKKworICAgICAgICBjbGFzcyBNeUNhbGxhYmxlOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGFyZyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmdW5jID0gTXlDYWxsYWJsZSgpICMgZnVuYyBoYXMgbm8gX19uYW1lX18gb3IgX19xdWFsbmFtZV9fIGF0dHJpYnV0ZXMKKyAgICAgICAgaW5zdGFuY2UgPSBvYmplY3QoKQorICAgICAgICBtZXRob2QgPSB0eXBlcy5NZXRob2RUeXBlKGZ1bmMsIGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIobWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCBcPyBvZiA8b2JqZWN0IG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgZnVuYy5fX25hbWVfXyA9ICJuYW1lIgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIobWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCBuYW1lIG9mIDxvYmplY3Qgb2JqZWN0IGF0IC4qPj4iKQorICAgICAgICBmdW5jLl9fcXVhbG5hbWVfXyA9ICJxdWFsbmFtZSIKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgcXVhbG5hbWUgb2YgPG9iamVjdCBvYmplY3QgYXQgLio+PiIpCisKIAogY2xhc3MgRGljdFByb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQ1MjgsMjYgKzQ2MDIsMTUgQEAKIAogICAgIGRlZiBfY2hlY2tfcmVkdWNlKHNlbGYsIHByb3RvLCBvYmosIGFyZ3M9KCksIGt3YXJncz17fSwgc3RhdGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICBsaXN0aXRlbXM9Tm9uZSwgZGljdGl0ZW1zPU5vbmUpOgotICAgICAgICBpZiBwcm90byA+PSA0OgorICAgICAgICBpZiBwcm90byA+PSAyOgogICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gb2JqLl9fcmVkdWNlX2V4X18ocHJvdG8pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVs6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5cmVnLl9fbmV3b2JqX2V4X18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShvYmopLCBhcmdzLCBrd2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUpKQotICAgICAgICAgICAgaWYgbGlzdGl0ZW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QocmVkdWNlX3ZhbHVlWzNdKSwgbGlzdGl0ZW1zKQorICAgICAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzBdLCBjb3B5cmVnLl9fbmV3b2JqX2V4X18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMV0sICh0eXBlKG9iaiksIGFyZ3MsIGt3YXJncykpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZHVjZV92YWx1ZVszXSkKLSAgICAgICAgICAgIGlmIGRpY3RpdGVtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChkaWN0KHJlZHVjZV92YWx1ZVs0XSksIGRpY3RpdGVtcykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVkdWNlX3ZhbHVlWzRdKQotICAgICAgICBlbGlmIHByb3RvID49IDI6Ci0gICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvcHlyZWcuX19uZXdvYmpfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKG9iaiksKSArIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMF0sIGNvcHlyZWcuX19uZXdvYmpfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVsxXSwgKHR5cGUob2JqKSwpICsgYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzJdLCBzdGF0ZSkKICAgICAgICAgICAgIGlmIGxpc3RpdGVtcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KHJlZHVjZV92YWx1ZVszXSksIGxpc3RpdGVtcykKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKaW5kZXggYzk2ZDAwMC4uOTU1M2M2NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQpAQCAtOTQ5LDEyICs5NDksNSBAQAogY2xhc3MgU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgogICAgIHR5cGUydGVzdCA9IERpY3QKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBEaWN0VGVzdCwKLSAgICAgICAgR2VuZXJhbE1hcHBpbmdUZXN0cywKLSAgICAgICAgU3ViY2xhc3NNYXBwaW5nVGVzdHMsCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CmluZGV4IDdiMDJlYTkuLjI4MDM1M2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgRGljdFNldFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xOTksOCArMTk4LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBkKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChEaWN0U2V0VGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IDBiYThmMGUuLmFiOWRlYmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEwNyw2ICsxMDcsMjAgQEAKICAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLgogIiIiCiAKK3BhdGNoOTE0NTc1X25vbmFzY2lpX2Zyb20xID0gIiIiCisgICAxLiBCZWF1dGlmdWwgaXMgYmVUVGVyIHRoYW4gdWdseS4KKyAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIMSxbXBsxLFjxLF0LgorICAgMy4gU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCisgICA0LiBDb21wbGV4IGlzIGJldHRlciB0aGFuIGNvbXBsaWNhdGVkLgorIiIiCisKK3BhdGNoOTE0NTc1X25vbmFzY2lpX3RvMSA9ICIiIgorICAgMS4gQmVhdXRpZnVsIGlzIGJldHRlciB0aGFuIMO8Z2x5LgorICAgMy4gICBTxLFtcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCisgICA0LiBDb21wbGljYXRlZCBpcyBiZXR0ZXIgdGhhbiBjw7ZtcGxleC4KKyAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLgorIiIiCisKIHBhdGNoOTE0NTc1X2Zyb20yID0gIiIiCiBcdFx0TGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQogICBcdFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQpAQCAtMjIzLDYgKzIzNywyNyBAQAogICAgICAgICBuZXcgPSBbKGklMiBhbmQgIks6JWQiIG9yICJWOkI6JWQiKSAlIGkgZm9yIGkgaW4gcmFuZ2UobGltaXQqMildCiAgICAgICAgIGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyKE5vbmUsIG9sZCwgbmV3KS5nZXRfb3Bjb2RlcygpCiAKKyAgICBkZWYgdGVzdF9tYWtlX2ZpbGVfZGVmYXVsdF9jaGFyc2V0KHNlbGYpOgorICAgICAgICBodG1sX2RpZmYgPSBkaWZmbGliLkh0bWxEaWZmKCkKKyAgICAgICAgb3V0cHV0ID0gaHRtbF9kaWZmLm1ha2VfZmlsZShwYXRjaDkxNDU3NV9mcm9tMS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2g5MTQ1NzVfdG8xLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IicsIG91dHB1dCkKKworICAgIGRlZiB0ZXN0X21ha2VfZmlsZV9pc284ODU5MV9jaGFyc2V0KHNlbGYpOgorICAgICAgICBodG1sX2RpZmYgPSBkaWZmbGliLkh0bWxEaWZmKCkKKyAgICAgICAgb3V0cHV0ID0gaHRtbF9kaWZmLm1ha2VfZmlsZShwYXRjaDkxNDU3NV9mcm9tMS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2g5MTQ1NzVfdG8xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PSdpc28tODg1OS0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiJywgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfbWFrZV9maWxlX3VzYXNjaWlfY2hhcnNldF93aXRoX25vbmFzY2lpX2lucHV0KHNlbGYpOgorICAgICAgICBodG1sX2RpZmYgPSBkaWZmbGliLkh0bWxEaWZmKCkKKyAgICAgICAgb3V0cHV0ID0gaHRtbF9kaWZmLm1ha2VfZmlsZShwYXRjaDkxNDU3NV9ub25hc2NpaV9mcm9tMS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2g5MTQ1NzVfbm9uYXNjaWlfdG8xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PSd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSInLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyYjMzA1O21wbCYjMzA1O2MmIzMwNTt0Jywgb3V0cHV0KQorCiAKIGNsYXNzIFRlc3RPdXRwdXRGb3JtYXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3RhYl9kZWxpbWl0ZXIoc2VsZik6CkBAIC0yODcsMTIgKzMyMiwxNTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQoMCwwKSwgJzAnKQogCiAKK2NsYXNzIFRlc3RCeXRlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB0aGUgY29udGVudCBvZiB0aGUgb3V0cHV0LCBqdXN0IHRoZSBmYWN0CisgICAgIyB0aGF0IGl0J3MgYnl0ZXMgYW5kIHdlIGRvbid0IGNyYXNoCisgICAgZGVmIGNoZWNrKHNlbGYsIGRpZmYpOgorICAgICAgICBkaWZmID0gbGlzdChkaWZmKSAgICMgdHJpZ2dlciBleGNlcHRpb25zIGZpcnN0CisgICAgICAgIGZvciBsaW5lIGluIGRpZmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoCisgICAgICAgICAgICAgICAgbGluZSwgYnl0ZXMsCisgICAgICAgICAgICAgICAgImFsbCBsaW5lcyBvZiBkaWZmIHNob3VsZCBiZSBieXRlcywgYnV0IGdvdDogJXIiICUgbGluZSkKKworICAgIGRlZiB0ZXN0X2J5dGVfY29udGVudChzZWxmKToKKyAgICAgICAgIyBpZiB3ZSByZWNlaXZlIGJ5dGUgc3RyaW5ncywgd2UgcmV0dXJuIGJ5dGUgc3RyaW5ncworICAgICAgICBhID0gW2InaGVsbG8nLCBiJ2FuZHJceGU5J10gICAgICMgaXNvLTg4NTktMSBieXRlcworICAgICAgICBiID0gW2InaGVsbG8nLCBiJ2FuZHJceGMzXHhhOSddICMgdXRmLTggYnl0ZXMKKworICAgICAgICB1bmlmaWVkID0gZGlmZmxpYi51bmlmaWVkX2RpZmYKKyAgICAgICAgY29udGV4dCA9IGRpZmZsaWIuY29udGV4dF9kaWZmCisKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBhKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIpKQorCisgICAgICAgICMgbm93IHdpdGggZmlsZW5hbWVzIChjb250ZW50IGFuZCBmaWxlbmFtZXMgYXJlIGFsbCBieXRlcyEpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBhLCBiJ2EnLCBiJ2EnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGInYScsIGInYicpKQorCisgICAgICAgICMgYW5kIHdpdGggZmlsZW5hbWVzIGFuZCBkYXRlcworICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYSwgYidhJywgYidhJywgYicyMDA1JywgYicyMDEzJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBiJ2EnLCBiJ2InLCBiJzIwMDUnLCBiJzIwMTMnKSkKKworICAgICAgICAjIHNhbWUgYWxsIG92ZXIgYWdhaW4sIHdpdGggY29udGV4dCBkaWZmCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBhKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYSwgYidhJywgYidhJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBiJ2EnLCBiJ2InKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGEsIGInYScsIGInYScsIGInMjAwNScsIGInMjAxMycpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYiwgYidhJywgYidiJywgYicyMDA1JywgYicyMDEzJykpCisKKyAgICBkZWYgdGVzdF9ieXRlX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgIyBzb21lYm9keSByZW5hbWVkIGEgZmlsZSBmcm9tIElTTy04ODU5LTIgdG8gVVRGLTgKKyAgICAgICAgZm5hID0gYidceGIzb2R6LnR4dCcgICAgIyAixYJvZHoudHh0IgorICAgICAgICBmbmIgPSBiJ1x4YzVceDgyb2R6LnR4dCcKKworICAgICAgICAjIHRoZXkgdHJhbnNjb2RlZCB0aGUgY29udGVudCBhdCB0aGUgc2FtZSB0aW1lCisgICAgICAgIGEgPSBbYidceGEzb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJ10KKyAgICAgICAgYiA9IFtiJ1x4YzVceDgxb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJ10KKworICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2sKKyAgICAgICAgdW5pZmllZCA9IGRpZmZsaWIudW5pZmllZF9kaWZmCisgICAgICAgIGNvbnRleHQgPSBkaWZmbGliLmNvbnRleHRfZGlmZgorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgZm5hLCBmbmIpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYiwgZm5hLCBmbmIpKQorCisgICAgICAgIGRlZiBhc3NlcnREaWZmKGV4cGVjdCwgYWN0dWFsKToKKyAgICAgICAgICAgICMgZG8gbm90IGNvbXBhcmUgZXhwZWN0IGFuZCBlcXVhbCBhcyBsaXN0cywgYmVjYXVzZSB1bml0dGVzdAorICAgICAgICAgICAgIyB1c2VzIGRpZmZsaWIgdG8gcmVwb3J0IGRpZmZlcmVuY2UgYmV0d2VlbiBsaXN0cworICAgICAgICAgICAgYWN0dWFsID0gbGlzdChhY3R1YWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3QpLCBsZW4oYWN0dWFsKSkKKyAgICAgICAgICAgIGZvciBlLCBhIGluIHppcChleHBlY3QsIGFjdHVhbCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBhKQorCisgICAgICAgIGV4cGVjdCA9IFsKKyAgICAgICAgICAgIGInLS0tIFx4YjNvZHoudHh0JywKKyAgICAgICAgICAgIGInKysrIFx4YzVceDgyb2R6LnR4dCcsCisgICAgICAgICAgICBiJ0BAIC0xICsxIEBAJywKKyAgICAgICAgICAgIGInLVx4YTNvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICAgICAgYicrXHhjNVx4ODFvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICBdCisgICAgICAgIGFjdHVhbCA9IGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYiwgbGluZXRlcm09YicnKQorICAgICAgICBhc3NlcnREaWZmKGV4cGVjdCwgYWN0dWFsKQorCisgICAgICAgICMgd2l0aCBkYXRlcyAocGxhaW4gQVNDSUkpCisgICAgICAgIGRhdGVhID0gYicyMDA1LTAzLTE4JworICAgICAgICBkYXRlYiA9IGInMjAwNS0wMy0xOScKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGZuYSwgZm5iLCBkYXRlYSwgZGF0ZWIpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYiwgZm5hLCBmbmIsIGRhdGVhLCBkYXRlYikpCisKKyAgICAgICAgZXhwZWN0ID0gWworICAgICAgICAgICAgIyBub3RlIHRoZSBtaXhlZCBlbmNvZGluZ3MgaGVyZTogdGhpcyBpcyBkZWVwbHkgd3JvbmcgYnkgZXZlcnkKKyAgICAgICAgICAgICMgdGVuZXQgb2YgVW5pY29kZSwgYnV0IGl0IGRvZXNuJ3QgY3Jhc2gsIGl0J3MgcGFyc2VhYmxlIGJ5CisgICAgICAgICAgICAjIHBhdGNoLCBhbmQgaXQncyBob3cgVU5JWCh0bSkgZGlmZiBiZWhhdmVzCisgICAgICAgICAgICBiJy0tLSBceGIzb2R6LnR4dFx0MjAwNS0wMy0xOCcsCisgICAgICAgICAgICBiJysrKyBceGM1XHg4Mm9kei50eHRcdDIwMDUtMDMtMTknLAorICAgICAgICAgICAgYidAQCAtMSArMSBAQCcsCisgICAgICAgICAgICBiJy1ceGEzb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJywKKyAgICAgICAgICAgIGInK1x4YzVceDgxb2R6IGlzIGEgY2l0eSBpbiBQb2xhbmQuJywKKyAgICAgICAgXQorICAgICAgICBhY3R1YWwgPSBkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgZm5hLCBmbmIsIGRhdGVhLCBkYXRlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmV0ZXJtPWInJykKKyAgICAgICAgYXNzZXJ0RGlmZihleHBlY3QsIGFjdHVhbCkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVzX2NvbnRlbnQoc2VsZik6CisgICAgICAgICMgdHlwZSBvZiBpbnB1dCBjb250ZW50IG11c3QgYmUgY29uc2lzdGVudDogYWxsIHN0ciBvciBhbGwgYnl0ZXMKKyAgICAgICAgYSA9IFtiJ2hlbGxvJ10KKyAgICAgICAgYiA9IFsnaGVsbG8nXQorCisgICAgICAgIHVuaWZpZWQgPSBkaWZmbGliLnVuaWZpZWRfZGlmZgorICAgICAgICBjb250ZXh0ID0gZGlmZmxpYi5jb250ZXh0X2RpZmYKKworICAgICAgICBleHBlY3QgPSAibGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90IGJ5dGVzIChiJ2hlbGxvJykiCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgdW5pZmllZCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCB1bmlmaWVkLCBiLCBhKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGNvbnRleHQsIGEsIGIpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgY29udGV4dCwgYiwgYSkKKworICAgICAgICBleHBlY3QgPSAiYWxsIGFyZ3VtZW50cyBtdXN0IGJlIGJ5dGVzLCBub3Qgc3RyICgnaGVsbG8nKSIKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBkaWZmbGliLmRpZmZfYnl0ZXMsIHVuaWZpZWQsIGEsIGIpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgZGlmZmxpYi5kaWZmX2J5dGVzLCB1bmlmaWVkLCBiLCBhKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgY29udGV4dCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBkaWZmbGliLmRpZmZfYnl0ZXMsIGNvbnRleHQsIGIsIGEpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlc19maWxlbmFtZXMoc2VsZik6CisgICAgICAgICMgY2Fubm90IHBhc3MgZmlsZW5hbWVzIGFzIGJ5dGVzIGlmIGNvbnRlbnQgaXMgc3RyICh0aGlzIG1heSBub3QgYmUKKyAgICAgICAgIyB0aGUgcmlnaHQgYmVoYXZpb3VyLCBidXQgYXQgbGVhc3QgdGhlIHRlc3QgZGVtb25zdHJhdGVzIGhvdworICAgICAgICAjIHRoaW5ncyB3b3JrKQorICAgICAgICBhID0gWydoZWxsb1xuJ10KKyAgICAgICAgYiA9IFsnb2hlbGxcbiddCisgICAgICAgIGZuYSA9IGInb2xceGU5LnR4dCcgICAgICMgZmlsZW5hbWUgdHJhbnNjb2RlZCBmcm9tIElTTy04ODU5LTEKKyAgICAgICAgZm5iID0gYidvbFx4YzNhOS50eHQnICAgIyB0byBVVEYtOAorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcigKKyAgICAgICAgICAgICJhbGwgYXJndW1lbnRzIG11c3QgYmUgc3RyLCBub3Q6IGInb2xcXHhlOS50eHQnIiwKKyAgICAgICAgICAgIGRpZmZsaWIudW5pZmllZF9kaWZmLCBhLCBiLCBmbmEsIGZuYikKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVzX2RhdGVzKHNlbGYpOgorICAgICAgICAjIHR5cGUgb2YgZGF0ZXMgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggdHlwZSBvZiBjb250ZW50cworICAgICAgICBhID0gW2InZm9vXG4nXQorICAgICAgICBiID0gW2InYmFyXG4nXQorICAgICAgICBkYXRlYSA9ICcxIGbDqXYnCisgICAgICAgIGRhdGViID0gJzMgZsOpdicKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoCisgICAgICAgICAgICAiYWxsIGFyZ3VtZW50cyBtdXN0IGJlIGJ5dGVzLCBub3Qgc3RyICgnMSBmw6l2JykiLAorICAgICAgICAgICAgZGlmZmxpYi5kaWZmX2J5dGVzLCBkaWZmbGliLnVuaWZpZWRfZGlmZiwKKyAgICAgICAgICAgIGEsIGIsIGInYScsIGInYicsIGRhdGVhLCBkYXRlYikKKworICAgICAgICAjIGlmIGlucHV0IGlzIHN0ciwgbm9uLUFTQ0lJIGRhdGVzIGFyZSBmaW5lCisgICAgICAgIGEgPSBbJ2Zvb1xuJ10KKyAgICAgICAgYiA9IFsnYmFyXG4nXQorICAgICAgICBsaXN0KGRpZmZsaWIudW5pZmllZF9kaWZmKGEsIGIsICdhJywgJ2InLCBkYXRlYSwgZGF0ZWIpKQorCisgICAgZGVmIF9hc3NlcnRfdHlwZV9lcnJvcihzZWxmLCBtc2csIGdlbmVyYXRvciwgKmFyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY3R4OgorICAgICAgICAgICAgbGlzdChnZW5lcmF0b3IoKmFyZ3MpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgc3RyKGN0eC5leGNlcHRpb24pKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBkaWZmbGliLkh0bWxEaWZmLl9kZWZhdWx0X3ByZWZpeCA9IDAKICAgICBEb2N0ZXN0cyA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKGRpZmZsaWIpCiAgICAgcnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0V2l0aEFzY2lpLCBUZXN0QXV0b2p1bmssIFRlc3RTRnBhdGNoZXMsIFRlc3RTRmJ1Z3MsCi0gICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIERvY3Rlc3RzKQorICAgICAgICBUZXN0T3V0cHV0Rm9ybWF0LCBUZXN0Qnl0ZXMsIERvY3Rlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKaW5kZXggNzFiNmQ3YS4uZWE3YTI0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbApAQCAtNiw3ICs2LDcgQEAKIAogPGhlYWQ+CiAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIgotICAgICAgICAgIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorICAgICAgICAgIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KICAgICA8dGl0bGU+PC90aXRsZT4KICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgICAgICB0YWJsZS5kaWZmIHtmb250LWZhbWlseTpDb3VyaWVyOyBib3JkZXI6bWVkaXVtO30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggYjhkYWZmNy4uNDIxYmJhZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTEsNiArMSw2IEBACiAjIE1pbmltYWwgdGVzdHMgZm9yIGRpcyBtb2R1bGUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY2FwdHVyZWRfc3Rkb3V0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0CiBmcm9tIHRlc3QuYnl0ZWNvZGVfaGVscGVyIGltcG9ydCBCeXRlY29kZVRlc3RDYXNlCiBpbXBvcnQgZGlmZmxpYgogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yMzAsNiArMjMwLDkgQEAKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDQsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyA1KQogCitkZWYgX2coeCk6CisgICAgeWllbGQgeAorCiBjbGFzcyBEaXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgZ2V0X2Rpc2Fzc2VtYmx5KHNlbGYsIGZ1bmMsIGxhc3RpPS0xLCB3cmFwcGVyPVRydWUpOgpAQCAtMzE1LDYgKzMxOCwxMSBAQAogICAgICAgICBtZXRob2RfYnl0ZWNvZGUgPSBfQygxKS5fX2luaXRfXy5fX2NvZGVfXy5jb19jb2RlCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChtZXRob2RfYnl0ZWNvZGUsIGRpc19jX2luc3RhbmNlX21ldGhvZF9ieXRlcykKIAorICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgZ2VuX2Z1bmNfZGlzYXMgPSBzZWxmLmdldF9kaXNhc3NlbWJseShfZykgICMgRGlzYXNzZW1ibGUgZ2VuZXJhdG9yIGZ1bmN0aW9uCisgICAgICAgIGdlbl9kaXNhcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KF9nKDEpKSAgIyBEaXNhc3NlbWJsZSBnZW5lcmF0b3IgaXRzZWxmCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuX2Rpc2FzLCBnZW5fZnVuY19kaXNhcykKKwogICAgIGRlZiB0ZXN0X2Rpc19ub25lKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCkBAIC00NzIsNiArNDgwLDI0IEBACiBOYW1lczoKICAgIDA6IHgiIiIKIAorCithc3luYyBkZWYgYXN5bmNfZGVmKCk6CisgICAgYXdhaXQgMQorICAgIGFzeW5jIGZvciBhIGluIGI6IHBhc3MKKyAgICBhc3luYyB3aXRoIGMgYXMgZDogcGFzcworCitjb2RlX2luZm9fYXN5bmNfZGVmID0gIiIiXAorTmFtZTogICAgICAgICAgICAgIGFzeW5jX2RlZgorRmlsZW5hbWU6ICAgICAgICAgICguKikKK0FyZ3VtZW50IGNvdW50OiAgICAwCitLdy1vbmx5IGFyZ3VtZW50czogMAorTnVtYmVyIG9mIGxvY2FsczogIDIKK1N0YWNrIHNpemU6ICAgICAgICAxNworRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBHRU5FUkFUT1IsIE5PRlJFRSwgQ09ST1VUSU5FCitDb25zdGFudHM6CisgICAwOiBOb25lCisgICAxOiAxIiIiCisKIGNsYXNzIENvZGVJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRlc3RfcGFpcnMgPSBbCiAgICAgICAoZGlzLmNvZGVfaW5mbywgY29kZV9pbmZvX2NvZGVfaW5mbyksCkBAIC00ODAsNiArNTA2LDcgQEAKICAgICAgIChleHByX3N0ciwgY29kZV9pbmZvX2V4cHJfc3RyKSwKICAgICAgIChzaW1wbGVfc3RtdF9zdHIsIGNvZGVfaW5mb19zaW1wbGVfc3RtdF9zdHIpLAogICAgICAgKGNvbXBvdW5kX3N0bXRfc3RyLCBjb2RlX2luZm9fY29tcG91bmRfc3RtdF9zdHIpLAorICAgICAgKGFzeW5jX2RlZiwgY29kZV9pbmZvX2FzeW5jX2RlZikKICAgICBdCiAKICAgICBkZWYgdGVzdF9jb2RlX2luZm8oc2VsZik6CkBAIC01NjEsMTAgKzU4OCwxMCBAQAogI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlciwgZmlyc3RfbGluZT1leHBlY3RlZF9vdXRlcl9saW5lKQogI3ByaW50KCdleHBlY3RlZF9vcGluZm9fb3V0ZXIgPSBbXG4gICcsCiAgICAgICAjJyxcbiAgJy5qb2luKG1hcChzdHIsIF9pbnN0cnVjdGlvbnMpKSwgJyxcbl0nLCBzZXA9JycpCi0jX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyKCksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfb3V0ZXJfbGluZSkKKyNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9mX2xpbmUpCiAjcHJpbnQoJ2V4cGVjdGVkX29waW5mb19mID0gW1xuICAnLAogICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQotI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpKCksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfb3V0ZXJfbGluZSkKKyNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIoKSgpLCBmaXJzdF9saW5lPWV4cGVjdGVkX2lubmVyX2xpbmUpCiAjcHJpbnQoJ2V4cGVjdGVkX29waW5mb19pbm5lciA9IFtcbiAgJywKICAgICAgICMnLFxuICAnLmpvaW4obWFwKHN0ciwgX2luc3RydWN0aW9ucykpLCAnLFxuXScsIHNlcD0nJykKICNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMoanVtcHksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfanVtcHlfbGluZSkKQEAgLTYzNSwxMiArNjYyLDEyIEBACiBdCiAKIGV4cGVjdGVkX29waW5mb19qdW1weSA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTc0LCBhcmd2YWw9NzcsIGFyZ3JlcHI9J3RvIDc3Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9NzEsIGFyZ3JlcHI9J3RvIDcxJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3JhbmdlJywgYXJncmVwcj0ncmFuZ2UnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTEwLCBhcmdyZXByPScxMCcsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz01MCwgYXJndmFsPTY2LCBhcmdyZXByPSd0byA2NicsIG9mZnNldD0xMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz00NCwgYXJndmFsPTYwLCBhcmdyZXByPSd0byA2MCcsIG9mZnNldD0xMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5LCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKQEAgLTY0OSw5MiArNjc2LDg5IEBACiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjksIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NDcsIGFyZ3ZhbD00NywgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NDQsIGFyZ3ZhbD00NCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NDEsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MCwgYXJndmFsPTQ3LCBhcmdyZXByPSd0byA0NycsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTksIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTYzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTY3LCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD03Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTc0LCBhcmd2YWw9MTU0LCBhcmdyZXByPSd0byAxNTQnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTQzLCBhcmd2YWw9MTQzLCBhcmdyZXByPScnLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEyNCwgYXJndmFsPTEyNCwgYXJncmVwcj0nJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MCwgYXJndmFsPTEyNCwgYXJncmVwcj0ndG8gMTI0Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEzMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzYsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNDQsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzIsIGFyZ3ZhbD0yMjksIGFyZ3JlcHI9J3RvIDIyOScsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNzIsIGFyZ3JlcHI9J3RvIDE3MicsIG9mZnNldD0xNTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE2Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTIwMCwgYXJncmVwcj0ndG8gMjAwJywgb2Zmc2V0PTE2OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE5OSwgYXJndmFsPTE5OSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MSwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTE0MiwgYXJncmVwcj0ndG8gMTQyJywgb2Zmc2V0PTcxLCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzMSwgYXJndmFsPTEzMSwgYXJncmVwcj0nJywgb2Zmc2V0PTc3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTkzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTE1LCBhcmd2YWw9MTE1LCBhcmdyZXByPScnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzMsIGFyZ3ZhbD0yMTgsIGFyZ3JlcHI9J3RvIDIxOCcsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNjAsIGFyZ3JlcHI9J3RvIDE2MCcsIG9mZnNldD0xNDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE1MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE4OCwgYXJncmVwcj0ndG8gMTg4Jywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE2MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE4NywgYXJndmFsPTE4NywgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNzMsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTg1LCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTkxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjYsIGFyZ3ZhbD0yMjUsIGFyZ3JlcHI9J3RvIDIyNScsIG9mZnNldD0xOTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTk5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMDAsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE3LCBhcmd2YWw9MjIzLCBhcmdyZXByPSd0byAyMjMnLCBvZmZzZXQ9MjAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MjA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIwOSwgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0yMTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIxNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjIzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIyOSwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTIzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI0Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNywgYXJndmFsPTIxNCwgYXJncmVwcj0ndG8gMjE0Jywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMTEsIGFyZ3JlcHI9J3RvIDIxMScsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xOTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTk3LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjA4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjE4LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKICMgT25lIGxhc3QgcGllY2Ugb2YgaW5zcGVjdCBmb2RkZXIgdG8gY2hlY2sgdGhlIGRlZmF1bHQgbGluZSBudW1iZXIgaGFuZGxpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCA5MjkyZDkyLi43M2I0NDUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC00LDYgKzQsNyBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBkb2N0ZXN0CitpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIApAQCAtNDM0LDcgKzQzNSw3IEBACiAgICAgPj4+IHRlc3RzID0gZmluZGVyLmZpbmQoc2FtcGxlX2Z1bmMpCiAKICAgICA+Pj4gcHJpbnQodGVzdHMpICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOCAoMSBleGFtcGxlKT5dCisgICAgWzxEb2NUZXN0IHNhbXBsZV9mdW5jIGZyb20gLi4uOjE5ICgxIGV4YW1wbGUpPl0KIAogVGhlIGV4YWN0IG5hbWUgZGVwZW5kcyBvbiBob3cgdGVzdF9kb2N0ZXN0IHdhcyBpbnZva2VkLCBzbyBhbGxvdyBmb3IKIGxlYWRpbmcgcGF0aCBjb21wb25lbnRzLgpAQCAtNjU4LDcgKzY1OSw3IEBACiAKICAgICA+Pj4gaW1wb3J0IGJ1aWx0aW5zCiAgICAgPj4+IHRlc3RzID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKCkuZmluZChidWlsdGlucykKLSAgICA+Pj4gNzkwIDwgbGVuKHRlc3RzKSA8IDgwMCAjIGFwcHJveGltYXRlIG51bWJlciBvZiBvYmplY3RzIHdpdGggZG9jc3RyaW5ncworICAgID4+PiA3OTAgPCBsZW4odGVzdHMpIDwgODEwICMgYXBwcm94aW1hdGUgbnVtYmVyIG9mIG9iamVjdHMgd2l0aCBkb2NzdHJpbmdzCiAgICAgVHJ1ZQogICAgID4+PiByZWFsX3Rlc3RzID0gW3QgZm9yIHQgaW4gdGVzdHMgaWYgbGVuKHQuZXhhbXBsZXMpID4gMF0KICAgICA+Pj4gbGVuKHJlYWxfdGVzdHMpICMgb2JqZWN0cyB0aGF0IGFjdHVhbGx5IGhhdmUgZG9jdGVzdHMKQEAgLTIwOTYsMjIgKzIwOTcsOSBAQAogICAgICAgICAgPj4+IHN1aXRlLnJ1bih1bml0dGVzdC5UZXN0UmVzdWx0KCkpCiAgICAgICAgICA8dW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQgcnVuPTAgZXJyb3JzPTAgZmFpbHVyZXM9MD4KIAotICAgICAgIEhvd2V2ZXIsIGlmIERvY1Rlc3RTdWl0ZSBmaW5kcyBubyBkb2NzdHJpbmdzLCBpdCByYWlzZXMgYW4gZXJyb3I6CisgICAgICAgVGhlIG1vZHVsZSBuZWVkIG5vdCBjb250YWluIGFueSBkb2NzdHJpbmdzIGVpdGhlcjoKIAotICAgICAgICAgPj4+IHRyeToKLSAgICAgICAgIC4uLiAgICAgZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3Rfbm9fZG9jc3RyaW5ncycpCi0gICAgICAgICAuLi4gZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgIC4uLiAgICAgZXJyb3IgPSBlCi0KLSAgICAgICAgID4+PiBwcmludChlcnJvci5hcmdzWzFdKQotICAgICAgICAgaGFzIG5vIGRvY3N0cmluZ3MKLQotICAgICAgIFlvdSBjYW4gcHJldmVudCB0aGlzIGVycm9yIGJ5IHBhc3NpbmcgYSBEb2NUZXN0RmluZGVyIGluc3RhbmNlIHdpdGgKLSAgICAgICB0aGUgYGV4Y2x1ZGVfZW1wdHlgIGtleXdvcmQgYXJndW1lbnQgc2V0IHRvIEZhbHNlOgotCi0gICAgICAgICA+Pj4gZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKGV4Y2x1ZGVfZW1wdHk9RmFsc2UpCi0gICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdF9ub19kb2NzdHJpbmdzJywKLSAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmluZGVyPWZpbmRlcikKKyAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnKQogICAgICAgICAgPj4+IHN1aXRlLnJ1bih1bml0dGVzdC5UZXN0UmVzdWx0KCkpCiAgICAgICAgICA8dW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQgcnVuPTAgZXJyb3JzPTAgZmFpbHVyZXM9MD4KIApAQCAtMjEyMSw2ICsyMTA5LDIyIEBACiAgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKICAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49OSBlcnJvcnM9MCBmYWlsdXJlcz00PgogCisgICAgICAgV2UgY2FuIGFsc28gcHJvdmlkZSBhIERvY1Rlc3RGaW5kZXI6CisKKyAgICAgICAgID4+PiBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKQorICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3QnLAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZpbmRlcj1maW5kZXIpCisgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKKyAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49OSBlcnJvcnM9MCBmYWlsdXJlcz00PgorCisgICAgICAgVGhlIERvY1Rlc3RGaW5kZXIgbmVlZCBub3QgcmV0dXJuIGFueSB0ZXN0czoKKworICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcigpCisgICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdF9ub19kb2NzdHJpbmdzJywKKyAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9maW5kZXI9ZmluZGVyKQorICAgICAgICAgPj4+IHN1aXRlLnJ1bih1bml0dGVzdC5UZXN0UmVzdWx0KCkpCisgICAgICAgICA8dW5pdHRlc3QucmVzdWx0LlRlc3RSZXN1bHQgcnVuPTAgZXJyb3JzPTAgZmFpbHVyZXM9MD4KKwogICAgICAgIFdlIGNhbiBzdXBwbHkgZ2xvYmFsIHZhcmlhYmxlcy4gIElmIHdlIHBhc3MgZ2xvYnMsIHRoZXkgd2lsbCBiZQogICAgICAgIHVzZWQgaW5zdGVhZCBvZiB0aGUgbW9kdWxlIGdsb2JhbHMuICBIZXJlIHdlJ2xsIHBhc3MgYW4gZW1wdHkKICAgICAgICBnbG9iYWxzLCB0cmlnZ2VyaW5nIGFuIGV4dHJhIGVycm9yOgpAQCAtMjE2OCw3ICsyMTcyLDcgQEAKICAgICAgICAgID4+PiB0ZXN0LnRlc3RfZG9jdGVzdC5zaWxseVNldHVwCiAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAuLi4KLSAgICAgICAgIEF0dHJpYnV0ZUVycm9yOiAnbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2lsbHlTZXR1cCcKKyAgICAgICAgIEF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ3Rlc3QudGVzdF9kb2N0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJwogCiAgICAgICAgVGhlIHNldFVwIGFuZCB0ZWFyRG93biBmdW5jdGlvbnMgYXJlIHBhc3NlZCB0ZXN0IG9iamVjdHMuIEhlcmUKICAgICAgICB3ZSdsbCB1c2UgdGhlIHNldFVwIGZ1bmN0aW9uIHRvIHN1cHBseSB0aGUgbWlzc2luZyB2YXJpYWJsZSB5OgpAQCAtMjMxNCw3ICsyMzE4LDcgQEAKICAgICAgICAgID4+PiB0ZXN0LnRlc3RfZG9jdGVzdC5zaWxseVNldHVwCiAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAuLi4KLSAgICAgICAgIEF0dHJpYnV0ZUVycm9yOiAnbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2lsbHlTZXR1cCcKKyAgICAgICAgIEF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ3Rlc3QudGVzdF9kb2N0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJwogCiAgICAgICAgVGhlIHNldFVwIGFuZCB0ZWFyRG93biBmdW5jdGlvbnMgYXJlIHBhc3NlZCB0ZXN0IG9iamVjdHMuCiAgICAgICAgSGVyZSwgd2UnbGwgdXNlIGEgc2V0VXAgZnVuY3Rpb24gdG8gc2V0IHRoZSBmYXZvcml0ZSBjb2xvciBpbgpAQCAtMjM2MSw2ICsyMzY1LDIyIEBACiAgICAgICBmb28gXG4KICAgICAiIiIKIAorY2xhc3MgV3JhcHBlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKKyAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHNlbGYsIGZ1bmMpCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5mdW5jKCphcmdzLCAqKmt3YXJncykKKworQFdyYXBwZXIKK2RlZiB0ZXN0X2xvb2tfaW5fdW53cmFwcGVkKCk6CisgICAgIiIiCisgICAgRG9jc3RyaW5ncyBpbiB3cmFwcGVkIGZ1bmN0aW9ucyBtdXN0IGJlIGRldGVjdGVkIGFzIHdlbGwuCisKKyAgICA+Pj4gJ29uZSBvdGhlciB0ZXN0JworICAgICdvbmUgb3RoZXIgdGVzdCcKKyAgICAiIiIKIAogZGVmIHRlc3RfdW5pdHRlc3RfcmVwb3J0ZmxhZ3MoKToKICAgICAiIiJEZWZhdWx0IHVuaXR0ZXN0IHJlcG9ydGluZyBmbGFncyBjYW4gYmUgc2V0IHRvIGNvbnRyb2wgcmVwb3J0aW5nCkBAIC0yNzA5LDggKzI3MjksOCBAQAogc2ltcGxlIHRlc3RzIGFuZCBubyBlcnJvcnMuICBXZSdsbCBydW4gYm90aCB0aGUgdW5hZG9ybmVkIGRvY3Rlc3QgY29tbWFuZCwgYW5kCiB0aGUgdmVyYm9zZSB2ZXJzaW9uLCBhbmQgdGhlbiBjaGVjayB0aGUgb3V0cHV0OgogCi0gICAgPj4+IGZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgotICAgID4+PiB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB0bXBkaXI6CisgICAgPj4+IGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyLCB0ZW1wX2RpcgorICAgID4+PiB3aXRoIHRlbXBfZGlyKCkgYXMgdG1wZGlyOgogICAgIC4uLiAgICAgZm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnbXlmaWxlLmRvYycpCiAgICAgLi4uICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnVGhpcyBpcyBhIHZlcnkgc2ltcGxlIHRlc3QgZmlsZS5cbicpCkBAIC0yNzYwLDggKzI3ODAsOCBAQAogZmlsZSBlbmRzIGluICcucHknLCBpdHMgaGFuZGxpbmcgb2YgcHl0aG9uIG1vZHVsZSBmaWxlcyAoYXMgb3Bwb3NlZCB0byBzdHJhaWdodAogdGV4dCBmaWxlcykuCiAKLSAgICA+Pj4gZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCi0gICAgPj4+IHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRtcGRpcjoKKyAgICA+Pj4gZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIHRlbXBfZGlyCisgICAgPj4+IHdpdGggdGVtcF9kaXIoKSBhcyB0bXBkaXI6CiAgICAgLi4uICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdteWZpbGUuZG9jJykKICAgICAuLi4gICAgIHdpdGggb3BlbihmbiwgJ3cnKSBhcyBmOgogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdUaGlzIGlzIGFub3RoZXIgc2ltcGxlIHRlc3QgZmlsZS5cbicpCkBAIC0yOTI3LDcgKzI5NDcsNyBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBpbiBkb2N0ZXN0IGl0c2VsZjoKLSAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGRvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQorICAgIHJldCA9IHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBkZWZpbmVkIGhlcmU6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2RvY3Rlc3QKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5CmluZGV4IDA2MTYxZjIuLmU2Y2E5NjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5CkBAIC04NywxMCArODcsMTEgQEAKICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VydmVyLCBhcmdzPShzZWxmLmV2dCwgMSkpLnN0YXJ0KCkKIAogICAgICAgICAjIHdhaXQgZm9yIHBvcnQgdG8gYmUgYXNzaWduZWQKLSAgICAgICAgbiA9IDEwMDAKLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIFBPUlQgaXMgTm9uZToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDEpCi0gICAgICAgICAgICBuIC09IDEKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSBQT1JUIGlzIE5vbmU6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEwKQorICAgICAgICAgICAgaWYgdGltZS5tb25vdG9uaWMoKSA+IGRlYWRsaW5lOgorICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgc2VsZi5jbGllbnQgPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbigibG9jYWxob3N0OiVkIiAlIFBPUlQpCiAKQEAgLTIxMiw4ICsyMTMsNSBAQAogICAgICAgICAgICAgcmVzcG9uc2UucmVhZCgpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChEb2NYTUxSUENIVFRQR0VUU2VydmVyKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5CmluZGV4IDZlYzVkYTMuLmEwYzI5NzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5CkBAIC01Niw5ICs1Niw1IEBACiAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgIHByaW50KCdhbGwgdGFza3MgZG9uZScpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChEdW1teVRocmVhZGluZ1Rlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQppbmRleCBiZWI3YjFjLi41MDgwZWM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBzd2FwX2l0ZW0sIHN3YXBfYXR0cgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHN3YXBfaXRlbSwgc3dhcF9hdHRyCiAKIAogY2xhc3MgUmViaW5kQnVpbHRpbnNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMzUsOSArMTM1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKSwgNykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFJlYmluZEJ1aWx0aW5zVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9keW5hbWljY2xhc3NhdHRyaWJ1dGUucHkgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weQppbmRleCBiYzZhMzliLi45ZjY5NGQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBhYmMKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogZnJvbSB0eXBlcyBpbXBvcnQgRHluYW1pY0NsYXNzQXR0cmlidXRlCiAKIGNsYXNzIFByb3BlcnR5QmFzZShFeGNlcHRpb24pOgpAQCAtMjk3LDggKzI5Niw1IEBACiAKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFByb3BlcnR5VGVzdHMsIFByb3BlcnR5U3ViY2xhc3NUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExZWFkMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIm9ubHkgc3VwcG9ydGVkIG9uIFVuaXgiKQorY2xhc3MgRUlOVFJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgorICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCisgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCA2MWUyM2ZjLi5kN2UzZGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC01OTAsNiArNTkwLDE3IEBACiAgICAgICAgIGVxKG1zZy52YWx1ZXMoKSwgWydPbmUgSHVuZHJlZCcsICdUd2VudHknLCAnVGhyZWUnLCAnRWxldmVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtc2cucmVwbGFjZV9oZWFkZXIsICdGb3VydGgnLCAnTWlzc2luZycpCiAKKyAgICBkZWYgdGVzdF9nZXRfY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gTWVzc2FnZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpKQorICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9J3JhbmRvbS5hdmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnYXR0YWNobWVudCcpCisgICAgICAgIG1zZy5yZXBsYWNlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdpbmxpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnaW5saW5lJykKKyAgICAgICAgbXNnLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0lubGluRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCksICdpbmxpbmUnKQorCiAgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwpAQCAtMTY0MCw2ICsxNjUxLDEwIEBACiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyB0aGVyZScsIF9jaGFyc2V0PSd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZy5nZXRfY2hhcnNldCgpLmlucHV0X2NoYXJzZXQsICd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZ1snY29udGVudC10eXBlJ10sICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKQorICAgICAgICAjIEFsc28gYWNjZXB0IGEgQ2hhcnNldCBpbnN0YW5jZQorICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gdGhlcmUnLCBfY2hhcnNldD1DaGFyc2V0KCd1dGYtOCcpKQorICAgICAgICBlcShtc2cuZ2V0X2NoYXJzZXQoKS5pbnB1dF9jaGFyc2V0LCAndXRmLTgnKQorICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHlwZSddLCAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJykKIAogICAgIGRlZiB0ZXN0XzdiaXRfaW5wdXQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggODkxNzQwOC4uYjFjYmNlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIEJ5dGVzR2VuZXJhdG9yCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKQEAgLTEzOSw2ICsxNDAsMjggQEAKICAgICAgICAgZy5mbGF0dGVuKG1zZywgbGluZXNlcD0nXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisKKyAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgdmFyaWFudHMgPSAoCisgICAgICAgICAgICAoTm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAocG9saWN5LmNvbXBhdDMyLCBUcnVlKSwKKyAgICAgICAgICAgIChwb2xpY3kuZGVmYXVsdCwgRmFsc2UpLAorICAgICAgICAgICAgKHBvbGljeS5kZWZhdWx0LmNsb25lKG1hbmdsZV9mcm9tXz1UcnVlKSwgVHJ1ZSksCisgICAgICAgICAgICApCisgICAgICAgIGZvciBwLCBtYW5nbGUgaW4gdmFyaWFudHM6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNvdXJjZS5yZXBsYWNlKCdGcm9tICcsICc+RnJvbSAnKSBpZiBtYW5nbGUgZWxzZSBzb3VyY2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wLCBtYW5nbGVfZnJvbV89bWFuZ2xlKToKKyAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgICAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgICAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXApCisgICAgICAgICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCiAKIGNsYXNzIFRlc3RHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgogCkBAIC0xOTQsNiArMjE3LDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3NtdHB1dGY4X3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgIG1zZy5zZXRfY29udGVudCgib2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8iKQorICAgICAgICBleHBlY3RlZCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBQw6FvbG8gPGbFkW9AYmFyLmNvbT4KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsgXHUxRjYwOQorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisKKyAgICAgICAgICAgIG9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgndXRmLTgnKS5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9cG9saWN5LlNNVFBVVEY4KQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKaW5kZXggNTBlMWE2My4uZDc4MDQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKQEAgLTcyMywyNCArNzIzLDE0IEBACiAgICAgZGVmIHRlc3RfaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgbSA9IHNlbGYuX21ha2VfbWVzc2FnZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG1bJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICdpbmxpbmUnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG0ucmVwbGFjZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogICAgICAgICBtLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0F0VGFjaE1lbnQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uaXNfYXR0YWNobWVudCkKICAgICAgICAgbS5zZXRfcGFyYW0oJ2ZpbGVuYW1lJywgJ2FiYy5wbmcnLCAnQ29udGVudC1EaXNwb3NpdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogCiAKIGNsYXNzIFRlc3RFbWFpbE1lc3NhZ2UoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKaW5kZXggZTc5N2YzNi4uOWJiMzJmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CkBAIC0yMiwxNSArMjIsMTggQEAKICAgICAgICAgJ2xpbmVzZXAnOiAgICAgICAgICAgICAgICAgICdcbicsCiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCiAgICAgICAgIH0KICAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCiAgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCiAgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCiAgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICd1dGY4JzogICAgICAgICAgICAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAogICAgICAgICAnaGVhZGVyX2ZhY3RvcnknOiAgICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5LAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNDIsNiArNDUsOSBAQAogICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsIHt9KSwKICAgICAgICAgZW1haWwucG9saWN5LlNNVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbid9KSwKKyAgICAgICAgZW1haWwucG9saWN5LlNNVFBVVEY4OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXRmOCc6IFRydWV9KSwKICAgICAgICAgZW1haWwucG9saWN5LkhUVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogTm9uZX0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCA2ZGM3NjRiLi5hNzhjYTE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtMzU3LDQgKzM1Nyw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDVkYjQwNDAuLjRiNWQwZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTY2LDE4ICs2NiwxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbjoKICAgICBwYXNzCiAKLWRlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKK2RlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lKToKICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgdGFyZ2V0ID0gc291cmNlCi0gICAgZm9yIHByb3RvY29sIGluIHJhbmdlKHN0YXJ0LCBzdG9wKzEpOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIGFzc2VydGlvbihsb2FkcyhkdW1wcyhzb3VyY2UsIHByb3RvY29sPXByb3RvY29sKSksIHRhcmdldCkKIAotZGVmIHRlc3RfcGlja2xlX2V4Y2VwdGlvbihhc3NlcnRpb24sIGV4Y2VwdGlvbiwgb2JqLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKLSAgICBmb3IgcHJvdG9jb2wgaW4gcmFuZ2Uoc3RhcnQsIHN0b3ArMSk6CitkZWYgdGVzdF9waWNrbGVfZXhjZXB0aW9uKGFzc2VydGlvbiwgZXhjZXB0aW9uLCBvYmopOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIHdpdGggYXNzZXJ0aW9uKGV4Y2VwdGlvbik6CiAgICAgICAgICAgICBkdW1wcyhvYmosIHByb3RvY29sPXByb3RvY29sKQogCkBAIC01NzUsMTEgKzU3MSw3IEBACiAKICAgICAgICAgc2VsZi5fX2NsYXNzX18uTmVzdGVkRW51bSA9IE5lc3RlZEVudW0KICAgICAgICAgc2VsZi5OZXN0ZWRFbnVtLl9fcXVhbG5hbWVfXyA9ICclcy5OZXN0ZWRFbnVtJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCi0gICAgICAgIHRlc3RfcGlja2xlX2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcywgUGlja2xpbmdFcnJvciwgc2VsZi5OZXN0ZWRFbnVtLnR3aWdzLAotICAgICAgICAgICAgICAgIHByb3RvY29sPSgwLCAzKSkKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIHNlbGYuTmVzdGVkRW51bS50d2lncywKLSAgICAgICAgICAgICAgICBwcm90b2NvbD0oNCwgSElHSEVTVF9QUk9UT0NPTCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBzZWxmLk5lc3RlZEVudW0udHdpZ3MpCiAKICAgICBkZWYgdGVzdF9waWNrbGVfYnlfbmFtZShzZWxmKToKICAgICAgICAgY2xhc3MgUmVwbGFjZUdsb2JhbEludChJbnRFbnVtKToKQEAgLTY1NCw2ICs2NDYsMjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHN0YXJ0PTEwKQorICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU3VtbWVyTW9udGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTdW1tZXJNb250aCksIDMsIFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtTdW1tZXJNb250aC5qdW5lLCBTdW1tZXJNb250aC5qdWx5LCBTdW1tZXJNb250aC5hdWd1c3RdLAorICAgICAgICAgICAgICAgIGxzdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBpLCBtb250aCBpbiBlbnVtZXJhdGUoJ2p1bmUganVseSBhdWd1c3QnLnNwbGl0KCksIDEwKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEVudW0oJ1N1bW1lck1vbnRoJywgWydqdW5lJywgJ2p1bHknLCAnYXVndXN0J10pCiAgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCkBAIC02NzEsNiArNjgwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKIAorICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0X3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCBbJ2p1bmUnLCAnanVseScsICdhdWd1c3QnXSwgc3RhcnQ9MjApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMjApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChlLnZhbHVlKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CiAgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgKICAgICAgICAgICAgICAgICAnU3VtbWVyTW9udGgnLApAQCAtNzI3LDYgKzc1MywyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHR5cGU9aW50LCBzdGFydD0zMCkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAzMCk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fdHlwZV9mcm9tX3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEludEVudW0oJ1N1bW1lck1vbnRoJywgJ2p1bmUganVseSBhdWd1c3QnKQogICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQpAQCAtNzQzLDYgKzc4NSwyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX2Zyb21fc3ViY2xhc3Nfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBJbnRFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0Jywgc3RhcnQ9NDApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgNDApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgogICAgICAgICBpZiBpc2luc3RhbmNlKE5hbWUsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByYWlzZSBOYW1lCkBAIC0xMDMwLDkgKzEwODgsOSBAQAogICAgICAgICBnbG9iYWxzKClbJ05FSSddID0gTkVJCiAgICAgICAgIE5JNSA9IE5hbWVkSW50KCd0ZXN0JywgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOSTUsIDUpCi0gICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydEVxdWFsLCBOSTUsIDUsIHByb3RvY29sPSg0LCA0KSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0RXF1YWwsIE5JNSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChORUkueS52YWx1ZSwgMikKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSS55LCBwcm90b2NvbD0oNCwgNCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBORUkueSkKICAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfd2l0aF9yZWR1Y2Uoc2VsZik6CkBAIC0xNDk4LDEwICsxNTU2LDEyIEBACiAgICAgICAgICAgICAgICAgdHVya2V5ID0gMwogCiAKLWV4cGVjdGVkX2hlbHBfb3V0cHV0ID0gIiIiCitleHBlY3RlZF9oZWxwX291dHB1dF93aXRoX2RvY3MgPSAiIiJcCiBIZWxwIG9uIGNsYXNzIENvbG9yIGluIG1vZHVsZSAlczoKIAogY2xhc3MgQ29sb3IoZW51bS5FbnVtKQorIHwgIEFuIGVudW1lcmF0aW9uLgorIHxceDIwXHgyMAogIHwgIE1ldGhvZCByZXNvbHV0aW9uIG9yZGVyOgogIHwgICAgICBDb2xvcgogIHwgICAgICBlbnVtLkVudW0KQEAgLTE1MzEsMTEgKzE1OTEsNDEgQEAKICB8ICAgICAgUmV0dXJucyBhIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUtPnZhbHVlLgogIHxceDIwXHgyMFx4MjBceDIwXHgyMFx4MjAKICB8ICAgICAgVGhpcyBtYXBwaW5nIGxpc3RzIGFsbCBlbnVtIG1lbWJlcnMsIGluY2x1ZGluZyBhbGlhc2VzLiBOb3RlIHRoYXQgdGhpcwotIHwgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLgotIiIiLnN0cmlwKCkKKyB8ICAgICAgaXMgYSByZWFkLW9ubHkgdmlldyBvZiB0aGUgaW50ZXJuYWwgbWFwcGluZy4iIiIKKworZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aG91dF9kb2NzID0gIiIiXAorSGVscCBvbiBjbGFzcyBDb2xvciBpbiBtb2R1bGUgJXM6CisKK2NsYXNzIENvbG9yKGVudW0uRW51bSkKKyB8ICBNZXRob2QgcmVzb2x1dGlvbiBvcmRlcjoKKyB8ICAgICAgQ29sb3IKKyB8ICAgICAgZW51bS5FbnVtCisgfCAgICAgIGJ1aWx0aW5zLm9iamVjdAorIHxceDIwXHgyMAorIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgorIHxceDIwXHgyMAorIHwgIGJsdWUgPSA8Q29sb3IuYmx1ZTogMz4KKyB8XHgyMFx4MjAKKyB8ICBncmVlbiA9IDxDb2xvci5ncmVlbjogMj4KKyB8XHgyMFx4MjAKKyB8ICByZWQgPSA8Q29sb3IucmVkOiAxPgorIHxceDIwXHgyMAorIHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB8ICBEYXRhIGRlc2NyaXB0b3JzIGluaGVyaXRlZCBmcm9tIGVudW0uRW51bToKKyB8XHgyMFx4MjAKKyB8ICBuYW1lCisgfFx4MjBceDIwCisgfCAgdmFsdWUKKyB8XHgyMFx4MjAKKyB8ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgfCAgRGF0YSBkZXNjcmlwdG9ycyBpbmhlcml0ZWQgZnJvbSBlbnVtLkVudW1NZXRhOgorIHxceDIwXHgyMAorIHwgIF9fbWVtYmVyc19fIiIiCiAKIGNsYXNzIFRlc3RTdGRMaWIodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgbWF4RGlmZiA9IE5vbmUKKwogICAgIGNsYXNzIENvbG9yKEVudW0pOgogICAgICAgICByZWQgPSAxCiAgICAgICAgIGdyZWVuID0gMgpAQCAtMTU0Myw3ICsxNjMzLDEwIEBACiAKICAgICBkZWYgdGVzdF9weWRvYyhzZWxmKToKICAgICAgICAgIyBpbmRpcmVjdGx5IHRlc3QgX19vYmpjbGFzc19fCi0gICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9oZWxwX291dHB1dCAlIF9fbmFtZV9fCisgICAgICAgIGlmIFN0ckVudW0uX19kb2NfXyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX2hlbHBfb3V0cHV0X3dpdGhvdXRfZG9jcyAlIF9fbmFtZV9fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aF9kb2NzICUgX19uYW1lX18KICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICBoZWxwZXIgPSBweWRvYy5IZWxwZXIob3V0cHV0PW91dHB1dCkKICAgICAgICAgaGVscGVyKHNlbGYuQ29sb3IpCkBAIC0xNTUzLDcgKzE2NDYsNyBAQAogICAgIGRlZiB0ZXN0X2luc3BlY3RfZ2V0bWVtYmVycyhzZWxmKToKICAgICAgICAgdmFsdWVzID0gZGljdCgoCiAgICAgICAgICAgICAgICAgKCdfX2NsYXNzX18nLCBFbnVtTWV0YSksCi0gICAgICAgICAgICAgICAgKCdfX2RvY19fJywgTm9uZSksCisgICAgICAgICAgICAgICAgKCdfX2RvY19fJywgJ0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgICgnX19tZW1iZXJzX18nLCBzZWxmLkNvbG9yLl9fbWVtYmVyc19fKSwKICAgICAgICAgICAgICAgICAoJ19fbW9kdWxlX18nLCBfX25hbWVfXyksCiAgICAgICAgICAgICAgICAgKCdibHVlJywgc2VsZi5Db2xvci5ibHVlKSwKQEAgLTE1ODEsNyArMTY3NCw3IEBACiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fY2xhc3NfXycsIGtpbmQ9J2RhdGEnLAogICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1vYmplY3QsIG9iamVjdD1FbnVtTWV0YSksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fZG9jX18nLCBraW5kPSdkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9c2VsZi5Db2xvciwgb2JqZWN0PU5vbmUpLAorICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1zZWxmLkNvbG9yLCBvYmplY3Q9J0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgIEF0dHJpYnV0ZShuYW1lPSdfX21lbWJlcnNfXycsIGtpbmQ9J3Byb3BlcnR5JywKICAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9RW51bU1ldGEsIG9iamVjdD1FbnVtTWV0YS5fX21lbWJlcnNfXyksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fbW9kdWxlX18nLCBraW5kPSdkYXRhJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggZTg1MjU0Yy4uMjYzMGNmMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTI1OCwxNiArMjU4LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgKHN5cy5tYXhzaXplKzMsJ2MnKV0KIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VvZi5weSBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CmluZGV4IDUyZTc5MzIuLjdiYWE3YWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CkBAIC0yNCw4ICsyNCw1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEVPRlRlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCBiMzdmMDMzLi5hNzM1OWU5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0ID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0LmJpbmQoKCcxMjcuMC4wLjEnLCAwKSkKLSAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2VydmVyU29ja2V0Lmxpc3RlbigpCiAgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBbc2VsZi5zZXJ2ZXJTb2NrZXRdCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0yNTIsOCArMjUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoZXBvbGwuZmlsZW5vKCkpLCBGYWxzZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEVQb2xsKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5IGIvTGliL3Rlc3QvdGVzdF9lcnJuby5weQppbmRleCAwNThkY2I5Li41YzQzN2U5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXJybm8ucHkKQEAgLTMsNyArMyw2IEBACiAiIiIKIAogaW1wb3J0IGVycm5vCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBzdGRfY19lcnJvcnMgPSBmcm96ZW5zZXQoWydFRE9NJywgJ0VSQU5HRSddKQpAQCAtMzIsOSArMzEsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vICVzIGF0dHIgaW4gZXJybm8uZXJyb3Jjb2RlJyAlIGF0dHJpYnV0ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRXJybm9BdHRyaWJ1dGVUZXN0cywgRXJyb3Jjb2RlVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX3ZhcmlhdGlvbnMucHkKaW5kZXggMTFmNWU1Yy4uZDg3NGIwZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl92YXJpYXRpb25zLnB5CkBAIC0xLDUgKzEsNCBAQAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgRXhjZXB0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTczLDggKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoaXRfZmluYWxseSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhpdF9leGNlcHQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCA2YjZjMTJkLi42NTQyNThlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC0zNCwxNyArMzQsMzcgQEAKICAgICAoMSwgMiwgMywgNCwgNSkge30KICAgICA+Pj4gZigxLCAyLCAzLCAqWzQsIDVdKQogICAgICgxLCAyLCAzLCA0LCA1KSB7fQorICAgID4+PiBmKCpbMSwgMiwgM10sIDQsIDUpCisgICAgKDEsIDIsIDMsIDQsIDUpIHt9CiAgICAgPj4+IGYoMSwgMiwgMywgKlVzZXJMaXN0KFs0LCA1XSkpCiAgICAgKDEsIDIsIDMsIDQsIDUpIHt9CisgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKls2LCA3XSkKKyAgICAoMSwgMiwgMywgNCwgNSwgNiwgNykge30KKyAgICA+Pj4gZigxLCAqWzIsIDNdLCA0LCAqWzUsIDZdLCA3KQorICAgICgxLCAyLCAzLCA0LCA1LCA2LCA3KSB7fQorICAgID4+PiBmKCpVc2VyTGlzdChbMSwgMl0pLCAqVXNlckxpc3QoWzMsIDRdKSwgNSwgKlVzZXJMaXN0KFs2LCA3XSkpCisgICAgKDEsIDIsIDMsIDQsIDUsIDYsIDcpIHt9CiAKIEhlcmUgd2UgYWRkIGtleXdvcmQgYXJndW1lbnRzCiAKICAgICA+Pj4gZigxLCAyLCAzLCAqKnsnYSc6NCwgJ2InOjV9KQogICAgICgxLCAyLCAzKSB7J2EnOiA0LCAnYic6IDV9CisgICAgPj4+IGYoMSwgMiwgKip7J2EnOiAtMSwgJ2InOiA1fSwgKip7J2EnOiA0LCAnYyc6IDZ9KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYScKKyAgICA+Pj4gZigxLCAyLCAqKnsnYSc6IC0xLCAnYic6IDV9LCBhPTQsIGM9NikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnCiAgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKip7J2EnOjYsICdiJzo3fSkKICAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3fQogICAgID4+PiBmKDEsIDIsIDMsIHg9NCwgeT01LCAqKDYsIDcpLCAqKnsnYSc6OCwgJ2InOiA5fSkKICAgICAoMSwgMiwgMywgNiwgNykgeydhJzogOCwgJ2InOiA5LCAneCc6IDQsICd5JzogNX0KKyAgICA+Pj4gZigxLCAyLCAzLCAqWzQsIDVdLCAqKnsnYyc6IDh9LCAqKnsnYSc6NiwgJ2InOjd9KQorICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA2LCAnYic6IDcsICdjJzogOH0KKyAgICA+Pj4gZigxLCAyLCAzLCAqKDQsIDUpLCB4PTYsIHk9NywgKip7J2EnOjgsICdiJzogOX0pCisgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA2LCAneSc6IDd9CiAKICAgICA+Pj4gZigxLCAyLCAzLCAqKlVzZXJEaWN0KGE9NCwgYj01KSkKICAgICAoMSwgMiwgMykgeydhJzogNCwgJ2InOiA1fQpAQCAtNTIsNiArNzIsOCBAQAogICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA2LCAnYic6IDd9CiAgICAgPj4+IGYoMSwgMiwgMywgeD00LCB5PTUsICooNiwgNyksICoqVXNlckRpY3QoYT04LCBiPTkpKQogICAgICgxLCAyLCAzLCA2LCA3KSB7J2EnOiA4LCAnYic6IDksICd4JzogNCwgJ3knOiA1fQorICAgID4+PiBmKDEsIDIsIDMsICooNCwgNSksIHg9NiwgeT03LCAqKlVzZXJEaWN0KGE9OCwgYj05KSkKKyAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogOCwgJ2InOiA5LCAneCc6IDYsICd5JzogN30KIAogRXhhbXBsZXMgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cyAoVHlwZUVycm9ycykuIFdlJ3JlIGFsc28gdGVzdGluZyB0aGUgZnVuY3Rpb24KIG5hbWVzIGluIHRoZSBleGNlcHRpb24gbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CmluZGV4IGU2OGEwOWUuLjBkODZjYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC02LDggKzYsOCBAQAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKQEAgLTE3LDYgKzE3LDEwIEBACiAgICAgSEFWRV9USFJFQURTID0gVHJ1ZQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIEhBVkVfVEhSRUFEUyA9IEZhbHNlCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogVElNRU9VVCA9IDAuNQogCkBAIC0zOCw3ICs0Miw3IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKGZpbGVuYW1lKQogCiBjbGFzcyBGYXVsdEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSdW4gdGhlIHNwZWNpZmllZCBjb2RlIGluIFB5dGhvbiAoaW4gYSBuZXcgY2hpbGQgcHJvY2VzcykgYW5kIHJlYWQgdGhlCiAgICAgICAgIG91dHB1dCBmcm9tIHRoZSBzdGFuZGFyZCBlcnJvciBvciBmcm9tIGEgZmlsZSAoaWYgZmlsZW5hbWUgaXMgc2V0KS4KQEAgLTQ5LDggKzUzLDExIEBACiAgICAgICAgIHRocmVhZCBYWFgiLgogICAgICAgICAiIiIKICAgICAgICAgY29kZSA9IGRlZGVudChjb2RlKS5zdHJpcCgpCisgICAgICAgIHBhc3NfZmRzID0gW10KKyAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXNzX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6Ci0gICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSkKKyAgICAgICAgICAgIHByb2Nlc3MgPSBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLWMnLCBjb2RlLCBwYXNzX2Zkcz1wYXNzX2ZkcykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKICAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQogICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3Rkb3V0KQpAQCAtNjAsMTMgKzY3LDIwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJycpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgb3MuU0VFS19TRVQsIDApCisgICAgICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGNsb3NlZmQ9RmFsc2UpIGFzIGZwOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCiAgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQogCiAgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayB0aGF0IHRoZSBmYXVsdCBoYW5kbGVyIGZvciBmYXRhbCBlcnJvcnMgaXMgZW5hYmxlZCBhbmQgY2hlY2sgdGhlCiAgICAgICAgIHRyYWNlYmFjayBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIG91dHB1dC4KQEAgLTg5LDcgKzEwMyw3IEBACiAgICAgICAgICAgICBoZWFkZXI9cmUuZXNjYXBlKGhlYWRlcikpKS5zdHJpcCgpCiAgICAgICAgIGlmIG90aGVyX3JlZ2V4OgogICAgICAgICAgICAgcmVnZXggKz0gJ3wnICsgb3RoZXJfcmVnZXgKLSAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZT1maWxlbmFtZSwgZmQ9ZmQpCiAgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKQEAgLTEzNSwyNiArMTQ5LDMyIEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdidXMnKSwKLSAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkiKQorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdCVVMnKSwgJ25lZWQgc2lnbmFsLlNJR0JVUycpCiAgICAgZGVmIHRlc3Rfc2lnYnVzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0JVUykKICAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgIDMsCisgICAgICAgICAgICA2LAogICAgICAgICAgICAgJ0J1cyBlcnJvcicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdpbGwnKSwKLSAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkiKQorICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdJTEwnKSwgJ25lZWQgc2lnbmFsLlNJR0lMTCcpCiAgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0lMTCkKICAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgIDMsCisgICAgICAgICAgICA2LAogICAgICAgICAgICAgJ0lsbGVnYWwgaW5zdHJ1Y3Rpb24nKQogCiAgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3Ioc2VsZik6CkBAIC0yMDEsNiArMjIxLDIxIEBACiAgICAgICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCiAgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2VuYWJsZV9mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIGZkID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCVzKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fc2lnc2VndigpCisgICAgICAgICAgICAgICAgIiIiICUgZmQsCisgICAgICAgICAgICAgICAgNCwKKyAgICAgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JywKKyAgICAgICAgICAgICAgICBmZD1mZCkKKwogICAgIGRlZiB0ZXN0X2VuYWJsZV9zaW5nbGVfdGhyZWFkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtMjg3LDcgKzMyMiw3IEBACiAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsIGVudj1lbnYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLCBiIlRydWUiKQogCi0gICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsIGZpbGVuYW1lKToKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2soc2VsZiwgKiwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBFeHBsaWNpdGx5IGNhbGwgZHVtcF90cmFjZWJhY2soKSBmdW5jdGlvbiBhbmQgY2hlY2sgaXRzIG91dHB1dC4KICAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCkBAIC0yOTUsMTAgKzMzMCwxNiBAQAogICAgICAgICBjb2RlID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCiAKKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KKwogICAgICAgICAgICAgZGVmIGZ1bmNCKCk6Ci0gICAgICAgICAgICAgICAgaWYge2hhc19maWxlbmFtZX06Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKICAgICAgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9RmFsc2UpCisgICAgICAgICAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQogCkBAIC0zMDgsMjkgKzM0OSwzNyBAQAogICAgICAgICAgICAgZnVuY0EoKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAotICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUsCisgICAgICAgICAgICBmZD1mZCwKICAgICAgICAgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgIGxpbmVubyA9IDYKKyAgICAgICAgICAgIGxpbmVubyA9IDkKKyAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxpbmVubyA9IDEyCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lbm8gPSA4CisgICAgICAgICAgICBsaW5lbm8gPSAxNAogICAgICAgICBleHBlY3RlZCA9IFsKICAgICAgICAgICAgICdTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6JywKICAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jQicgJSBsaW5lbm8sCi0gICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTEgaW4gZnVuY0EnLAotICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDEzIGluIDxtb2R1bGU+JworICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDE3IGluIGZ1bmNBJywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxOSBpbiA8bW9kdWxlPicKICAgICAgICAgXQotICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSwgZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIGV4cGVjdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2soc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soTm9uZSkKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjaygpCiAKICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19maWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgotICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmZD1mcC5maWxlbm8oKSkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgogICAgICAgICBtYXhsZW4gPSA1MDAKQEAgLTQyMyw3ICs0NzIsMTAgQEAKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhmaWxlbmFtZSkKIAotICAgIGRlZiBfY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCknKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmLCByZXBlYXQ9RmFsc2UsIGNhbmNlbD1GYWxzZSwgbG9vcHM9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAogICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKQEAgLTQzNSw2ICs0ODcsMTQgQEAKICAgICAgICAgY29kZSA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgogICAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgdGltZW91dCA9IHt0aW1lb3V0fQorICAgICAgICAgICAgcmVwZWF0ID0ge3JlcGVhdH0KKyAgICAgICAgICAgIGNhbmNlbCA9IHtjYW5jZWx9CisgICAgICAgICAgICBsb29wcyA9IHtsb29wc30KKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KIAogICAgICAgICAgICAgZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKICAgICAgICAgICAgICAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CkBAIC00NDQsMTYgKzUwNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHRpbWVvdXQgKiA1KQogICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAotICAgICAgICAgICAgdGltZW91dCA9IHt0aW1lb3V0fQotICAgICAgICAgICAgcmVwZWF0ID0ge3JlcGVhdH0KLSAgICAgICAgICAgIGNhbmNlbCA9IHtjYW5jZWx9Ci0gICAgICAgICAgICBsb29wcyA9IHtsb29wc30KLSAgICAgICAgICAgIGlmIHtoYXNfZmlsZW5hbWV9OgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCisgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlbmFtZSwgIndiIikKKyAgICAgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIuZmlsZW5vKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmlsZSA9IE5vbmUKICAgICAgICAgICAgIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKQotICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKQEAgLTQ2MSw4ICs1MTksOCBAQAogICAgICAgICAgICAgcmVwZWF0PXJlcGVhdCwKICAgICAgICAgICAgIGNhbmNlbD1jYW5jZWwsCiAgICAgICAgICAgICBsb29wcz1sb29wcywKLSAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUsCisgICAgICAgICAgICBmZD1mZCwKICAgICAgICAgKQogICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCiAgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQpAQCAtNDcyLDI3ICs1MzAsMTIgQEAKICAgICAgICAgICAgIGlmIHJlcGVhdDoKICAgICAgICAgICAgICAgICBjb3VudCAqPSAyCiAgICAgICAgICAgICBoZWFkZXIgPSByJ1RpbWVvdXQgXCglc1wpIVxuVGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJyAlIHRpbWVvdXRfc3RyCi0gICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg5LCAyMCwgaGVhZGVyLCBtaW5fY291bnQ9Y291bnQpCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNywgMjYsIGhlYWRlciwgbWluX2NvdW50PWNvdW50KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKIAotICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKLSAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpJykKLSAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0PUZhbHNlLCBjYW5jZWw9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPUZhbHNlLCB0d2ljZT1GYWxzZSk6Ci0gICAgICAgIGlmIHR3aWNlOgotICAgICAgICAgICAgbG9vcHMgPSAyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb29wcyA9IDEKLSAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0LCBjYW5jZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsb29wcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLCBOb25lLCBsb29wcykKLQogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIApAQCAtNTAzLDE1ICs1NDYsMjIgQEAKICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihjYW5jZWw9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoZmlsZT1UcnVlKQorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAic3VicHJvY2VzcyBkb2Vzbid0IHN1cHBvcnQgcGFzc19mZHMgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfZmQoc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgnd2IrJykgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZkPWZwLmZpbGVubygpKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfdHdpY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIodHdpY2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihsb29wcz0yKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICJyZWdpc3RlciIpLAogICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyIikKICAgICBkZWYgY2hlY2tfcmVnaXN0ZXIoc2VsZiwgZmlsZW5hbWU9RmFsc2UsIGFsbF90aHJlYWRzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyPUZhbHNlLCBjaGFpbj1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlLCBmZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCiAgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgpAQCAtNTI3LDYgKzU3NywxMyBAQAogICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICAgICAgaW1wb3J0IHN5cwogCisgICAgICAgICAgICBhbGxfdGhyZWFkcyA9IHthbGxfdGhyZWFkc30KKyAgICAgICAgICAgIHNpZ251bSA9IHtzaWdudW19CisgICAgICAgICAgICB1bnJlZ2lzdGVyID0ge3VucmVnaXN0ZXJ9CisgICAgICAgICAgICBjaGFpbiA9IHtjaGFpbn0KKyAgICAgICAgICAgIGZpbGVuYW1lID0ge2ZpbGVuYW1lIXJ9CisgICAgICAgICAgICBmZCA9IHtmZH0KKwogICAgICAgICAgICAgZGVmIGZ1bmMoc2lnbnVtKToKICAgICAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCiAKQEAgLTUzNCwxOSArNTkxLDE2IEBACiAgICAgICAgICAgICAgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCiAgICAgICAgICAgICBoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCiAKLSAgICAgICAgICAgIGV4aXRjb2RlID0gMAotICAgICAgICAgICAgc2lnbnVtID0ge3NpZ251bX0KLSAgICAgICAgICAgIHVucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KLSAgICAgICAgICAgIGNoYWluID0ge2NoYWlufQotCi0gICAgICAgICAgICBpZiB7aGFzX2ZpbGVuYW1lfToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCisgICAgICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyLmZpbGVubygpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBOb25lCiAgICAgICAgICAgICBpZiBjaGFpbjoKICAgICAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGZpbGU9ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGhyZWFkcz17YWxsX3RocmVhZHN9LCBjaGFpbj17Y2hhaW59KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbF90aHJlYWRzPWFsbF90aHJlYWRzLCBjaGFpbj17Y2hhaW59KQogICAgICAgICAgICAgaWYgdW5yZWdpc3RlcjoKICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIudW5yZWdpc3RlcihzaWdudW0pCiAgICAgICAgICAgICBmdW5jKHNpZ251bSkKQEAgLTU1NywxNyArNjExLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN5cy5zdGRlcnIKICAgICAgICAgICAgICAgICBwcmludCgiRXJyb3I6IHNpZ25hbCBoYW5kbGVyIG5vdCBjYWxsZWQhIiwgZmlsZT1vdXRwdXQpCiAgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAxCi0gICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IDAKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICAgc3lzLmV4aXQoZXhpdGNvZGUpCiAgICAgICAgICAgICAiIiIKICAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAotICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCi0gICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCiAgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKICAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCiAgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCiAgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKQEAgLTU3Niw3ICs2MzIsNyBAQAogICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVnZXggPSAnU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCi0gICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg3LCAyOCwgcmVnZXgpCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNCwgMzIsIHJlZ2V4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKQEAgLTU5NSw2ICs2NTEsMTIgQEAKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoZmlsZW5hbWU9ZmlsZW5hbWUpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmZD1mcC5maWxlbm8oKSkKKwogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5CmluZGV4IGI0ZTE4Y2UuLmYxZWZkMjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVfZWludHIucHkKQEAgLTEzLDE2ICsxMywxNiBAQAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAogIyBUZXN0IGltcG9ydCBhbGwgb2YgdGhlIHRoaW5ncyB3ZSdyZSBhYm91dCB0byB0cnkgdGVzdGluZyB1cCBmcm9udC4KLWZyb20gX2lvIGltcG9ydCBGaWxlSU8KK2ltcG9ydCBfaW8KK2ltcG9ydCBfcHlpbwogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3Rlc3RzIHJlcXVpcmVzIGEgcG9zaXggc3lzdGVtLicpCi1jbGFzcyBUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQ6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jZXNzID0gTm9uZQogCkBAIC0zOCw4ICszOCw5IEBACiAKICAgICAgICAgc3ViY2xhc3Nlc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIHRvIHRlc3QgZGlmZmVyZW50IElPIG9iamVjdHMuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKCdpbXBvcnQgX2lvIDsnCi0gICAgICAgICAgICAgICAgJ2luZmlsZSA9IF9pby5GaWxlSU8oc3lzLnN0ZGluLmZpbGVubygpLCAicmIiKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7JworICAgICAgICAgICAgICAgICdpbmZpbGUgPSBpby5GaWxlSU8oc3lzLnN0ZGluLmZpbGVubygpLCAicmIiKScgJQorICAgICAgICAgICAgICAgIHNlbGYubW9kbmFtZSkKIAogICAgIGRlZiBmYWlsX3dpdGhfcHJvY2Vzc19pbmZvKHNlbGYsIHdoeSwgc3Rkb3V0PWInJywgc3RkZXJyPWInJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pY2F0ZT1UcnVlKToKQEAgLTE3OSwxMSArMTgwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1iJ2hlbGxvXG53b3JsZCFcbicpKQogCiAKK2NsYXNzIENUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19pbycKKworY2xhc3MgUHlUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19weWlvJworCisKIGNsYXNzIFRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQpOgogICAgIGRlZiBfZ2VuZXJhdGVfaW5maWxlX3NldHVwX2NvZGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGluZmlsZSA9IC4uLiBsaW5lIG9mIGNvZGUgdG8gbWFrZSBhIEJ1ZmZlcmVkUmVhZGVyLiIiIgotICAgICAgICByZXR1cm4gKCdpbmZpbGUgPSBvcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIikgOycKLSAgICAgICAgICAgICAgICAnaW1wb3J0IF9pbyA7YXNzZXJ0IGlzaW5zdGFuY2UoaW5maWxlLCBfaW8uQnVmZmVyZWRSZWFkZXIpJykKKyAgICAgICAgcmV0dXJuICgnaW1wb3J0ICVzIGFzIGlvIDtpbmZpbGUgPSBpby5vcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIikgOycKKyAgICAgICAgICAgICAgICAnYXNzZXJ0IGlzaW5zdGFuY2UoaW5maWxlLCBpby5CdWZmZXJlZFJlYWRlciknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgdGVzdF9yZWFkYWxsKHNlbGYpOgogICAgICAgICAiIiJCdWZmZXJlZFJlYWRlci5yZWFkKCkgbXVzdCBoYW5kbGUgc2lnbmFscyBhbmQgbm90IGxvc2UgZGF0YS4iIiIKQEAgLTE5MywxMiArMjAyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX21ldGhvZF9uYW1lPSdyZWFkJywKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWInaGVsbG9cbndvcmxkIVxuJykpCiAKK2NsYXNzIENUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX2lvJworCitjbGFzcyBQeVRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0KFRlc3RCdWZmZXJlZElPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfcHlpbycKKwogCiBjbGFzcyBUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0KFRlc3RGaWxlSU9TaWduYWxJbnRlcnJ1cHQpOgogICAgIGRlZiBfZ2VuZXJhdGVfaW5maWxlX3NldHVwX2NvZGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGluZmlsZSA9IC4uLiBsaW5lIG9mIGNvZGUgdG8gbWFrZSBhIFRleHRJT1dyYXBwZXIuIiIiCi0gICAgICAgIHJldHVybiAoJ2luZmlsZSA9IG9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAicnQiLCBuZXdsaW5lPU5vbmUpIDsnCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBfaW8gO2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgX2lvLlRleHRJT1dyYXBwZXIpJykKKyAgICAgICAgcmV0dXJuICgnaW1wb3J0ICVzIGFzIGlvIDsnCisgICAgICAgICAgICAgICAgJ2luZmlsZSA9IGlvLm9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAicnQiLCBuZXdsaW5lPU5vbmUpIDsnCisgICAgICAgICAgICAgICAgJ2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgaW8uVGV4dElPV3JhcHBlciknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKICAgICAgICAgIiIicmVhZGxpbmUoKSBtdXN0IGhhbmRsZSBzaWduYWxzIGFuZCBub3QgbG9zZSBkYXRhLiIiIgpAQCAtMjI0LDEzICsyNDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbWV0aG9kX25hbWU9J3JlYWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ImhlbGxvXG53b3JsZCFcbiIpKQogCitjbGFzcyBDVGVzdFRleHRJT1NpZ25hbEludGVycnVwdChUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfaW8nCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0X2Nhc2VzID0gWwotICAgICAgICAgICAgdGMgZm9yIHRjIGluIGdsb2JhbHMoKS52YWx1ZXMoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0YywgdHlwZSkgYW5kIGlzc3ViY2xhc3ModGMsIHVuaXR0ZXN0LlRlc3RDYXNlKV0KLSAgICBydW5fdW5pdHRlc3QoKnRlc3RfY2FzZXMpCitjbGFzcyBQeVRlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQoVGVzdFRleHRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX3B5aW8nCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQppbmRleCBmZTVkYTY5Li4wZjgzMTBjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQpAQCAtMTIsMTMgKzEyLDE1IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgcnVuX3VuaXR0ZXN0LCBtYWtlX2JhZF9mZCwgY3B5dGhvbl9vbmx5CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCi1mcm9tIF9pbyBpbXBvcnQgRmlsZUlPIGFzIF9GaWxlSU8KK2ltcG9ydCBfaW8gICMgQyBpbXBsZW1lbnRhdGlvbiBvZiBpbworaW1wb3J0IF9weWlvICMgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGlvCiAKLWNsYXNzIEF1dG9GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBBdXRvRmlsZVRlc3RzOgogICAgICMgZmlsZSB0ZXN0cyBmb3Igd2hpY2ggYSB0ZXN0IGZpbGUgaXMgYXV0b21hdGljYWxseSBzZXQgdXAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICd3JykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAndycpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZjoKQEAgLTYwLDIwICs2Miw2OSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXR0ciwgZiwgYXR0ciwgJ29vcHMnKQogCi0gICAgZGVmIHRlc3RSZWFkaW50byhzZWxmKToKLSAgICAgICAgIyB2ZXJpZnkgcmVhZGludG8KLSAgICAgICAgc2VsZi5mLndyaXRlKGJ5dGVzKFsxLCAyXSkpCisgICAgZGVmIHRlc3RCbGtzaXplKHNlbGYpOgorICAgICAgICAjIHRlc3QgcHJpdmF0ZSBfYmxrc2l6ZSBhdHRyaWJ1dGUKKyAgICAgICAgYmxrc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgIyB0cnkgdG8gZ2V0IHByZWZlcnJlZCBibGtzaXplIGZyb20gc3RhdC5zdF9ibGtzaXplLCBpZiBhdmFpbGFibGUKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2ZzdGF0Jyk6CisgICAgICAgICAgICBmc3QgPSBvcy5mc3RhdChzZWxmLmYuZmlsZW5vKCkpCisgICAgICAgICAgICBibGtzaXplID0gZ2V0YXR0cihmc3QsICdzdF9ibGtzaXplJywgYmxrc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYuX2Jsa3NpemUsIGJsa3NpemUpCisKKyAgICAjIHZlcmlmeSByZWFkaW50bworICAgIGRlZiB0ZXN0UmVhZGludG9CeXRlQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCiAgICAgICAgIHNlbGYuZi5jbG9zZSgpCi0gICAgICAgIGEgPSBhcnJheSgnYicsIGIneCcqMTApCi0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAncicpCi0gICAgICAgIG4gPSBzZWxmLmYucmVhZGludG8oYSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcnJheSgnYicsIFsxLCAyXSksIGFbOm5dKQorCisgICAgICAgIGJhID0gYnl0ZWFycmF5KGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYmEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICBkZWYgX3Rlc3RSZWFkaW50b01lbW9yeXZpZXcoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCisgICAgICAgIHNlbGYuZi5jbG9zZSgpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KGInYWJjZGVmZ2gnKSkKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhieXRlYXJyYXkoYidhYmNkZWZnaCcpKS5jYXN0KCdIJywgc2hhcGU9WzIsIDJdKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8obSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhtKSwgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgIGRlZiBfdGVzdFJlYWRpbnRvQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMiwgMCwgMjU1XSkpCisgICAgICAgIHNlbGYuZi5jbG9zZSgpCisKKyAgICAgICAgYSA9IGFycmF5KCdCJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdCJywgWzEsIDIsIDAsIDI1NSwgMTAxLCAxMDIsIDEwMywgMTA0XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgNCkKKworICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ2FiY2RlZmdoJykKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYXJyYXkoJ2InLCBbMSwgMiwgMCwgLTEsIDEwMSwgMTAyLCAxMDMsIDEwNF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgYSA9IGFycmF5KCdJJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdJJywgYidceDAxXHgwMlx4MDBceGZmZWZnaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCiAKICAgICBkZWYgdGVzdFdyaXRlbGluZXNMaXN0KHNlbGYpOgogICAgICAgICBsID0gW2InMTIzJywgYic0NTYnXQogICAgICAgICBzZWxmLmYud3JpdGVsaW5lcyhsKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3JiJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncmInKQogICAgICAgICBidWYgPSBzZWxmLmYucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJzEyMzQ1NicpCiAKQEAgLTgxLDcgKzEzMiw3IEBACiAgICAgICAgIGwgPSBVc2VyTGlzdChbYicxMjMnLCBiJzQ1NiddKQogICAgICAgICBzZWxmLmYud3JpdGVsaW5lcyhsKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3JiJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncmInKQogICAgICAgICBidWYgPSBzZWxmLmYucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJzEyMzQ1NicpCiAKQEAgLTkzLDcgKzE0NCw3IEBACiAgICAgZGVmIHRlc3Rfbm9uZV9hcmdzKHNlbGYpOgogICAgICAgICBzZWxmLmYud3JpdGUoYiJoaVxuYnllXG5hYmMiKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQorICAgICAgICBzZWxmLmYgPSBzZWxmLkZpbGVJTyhURVNURk4sICdyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYucmVhZChOb25lKSwgYiJoaVxuYnllXG5hYmMiKQogICAgICAgICBzZWxmLmYuc2VlaygwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZi5yZWFkbGluZShOb25lKSwgYiJoaVxuIikKQEAgLTEwMywxMyArMTU0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mLndyaXRlLCAiSGVsbG8hIikKIAogICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuZiksICI8X2lvLkZpbGVJTyBuYW1lPSVyIG1vZGU9JXI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZi5uYW1lLCBzZWxmLmYubW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPVRydWU+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW9kdWxlbmFtZSwgc2VsZi5mLm5hbWUsIHNlbGYuZi5tb2RlKSkKICAgICAgICAgZGVsIHNlbGYuZi5uYW1lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLCAiPF9pby5GaWxlSU8gZmQ9JXIgbW9kZT0lcj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5mLmZpbGVubygpLCBzZWxmLmYubW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIGZkPSVyIG1vZGU9JXIgY2xvc2VmZD1UcnVlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vZHVsZW5hbWUsIHNlbGYuZi5maWxlbm8oKSwgc2VsZi5mLm1vZGUpKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwgIjxfaW8uRmlsZUlPIFtjbG9zZWRdPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIFtjbG9zZWRdPiIgJSAoc2VsZi5tb2R1bGVuYW1lLCkpCisKKyAgICBkZWYgdGVzdFJlcHJOb0Nsb3NlRkQoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihURVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKGZkLCAncicsIGNsb3NlZmQ9RmFsc2UpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwlcy5GaWxlSU8gbmFtZT0lciBtb2RlPSVyIGNsb3NlZmQ9RmFsc2U+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb2R1bGVuYW1lLCBmLm5hbWUsIGYubW9kZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKIAogICAgIGRlZiB0ZXN0RXJyb3JzKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5mCkBAIC0xMTksNyArMTgzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkLCAxMCkgIyBPcGVuIGZvciByZWFkaW5nCiAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCi0gICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkaW50bywgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZi5jbG9zZWQpCiAgICAgICAgIGYuY2xvc2UoKQpAQCAtMTM4LDExICsyMDIsMTEgQEAKICAgICAgICAgICAgICMgc2hvdWxkIHJhaXNlIG9uIGNsb3NlZCBmaWxlCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnJlYWRpbnRvKSAjIFhYWCBzaG91bGQgYmUgVHlwZUVycm9yPworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi5yZWFkaW50bykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnJlYWRpbnRvLCBieXRlYXJyYXkoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5zZWVrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi5zZWVrKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYuc2VlaywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLndyaXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLndyaXRlLCBiJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mLndyaXRlbGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZWxpbmVzLCBiJycpCkBAIC0xNTAsOSArMjE0LDkgQEAKICAgICBkZWYgdGVzdE9wZW5kaXIoc2VsZik6CiAgICAgICAgICMgSXNzdWUgMzcwMzogb3BlbmluZyBhIGRpcmVjdG9yeSBzaG91bGQgZmlsbCB0aGUgZXJybm8KICAgICAgICAgIyBXaW5kb3dzIGFsd2F5cyByZXR1cm5zICJbRXJybm8gMTNdOiBQZXJtaXNzaW9uIGRlbmllZAotICAgICAgICAjIFVuaXggY2FsbHMgZGlyY2hlY2soKSBhbmQgcmV0dXJucyAiW0Vycm5vIDIxXTogSXMgYSBkaXJlY3RvcnkiCisgICAgICAgICMgVW5peCB1c2VzIGZzdGF0IGFuZCByZXR1cm5zICJbRXJybm8gMjFdOiBJcyBhIGRpcmVjdG9yeSIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgX0ZpbGVJTygnLicsICdyJykKKyAgICAgICAgICAgIHNlbGYuRmlsZUlPKCcuJywgJ3InKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLmVycm5vLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiLiIpCkBAIC0xNjMsNyArMjI3LDcgQEAKICAgICBkZWYgdGVzdE9wZW5EaXJGRChzZWxmKToKICAgICAgICAgZmQgPSBvcy5vcGVuKCcuJywgb3MuT19SRE9OTFkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBfRmlsZUlPKGZkLCAncicpCisgICAgICAgICAgICBzZWxmLkZpbGVJTyhmZCwgJ3InKQogICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJU0RJUikKIApAQCAtMjQ4LDcgKzMxMiw3IEBACiAgICAgICAgICAgICBzZWxmLmYuY2xvc2UoKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIG9zLmNsb3NlKHNlbGYuZi5maWxlbm8oKSkKICAgICAgICAgcmV0dXJuIHNlbGYuZgogCkBAIC0yNjgsMjMgKzMzMiwzMiBAQAogICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ3gnKjEwKQogICAgICAgICBmLnJlYWRpbnRvKGEpCiAKLWNsYXNzIE90aGVyRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIENBdXRvRmlsZVRlc3RzKEF1dG9GaWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBGaWxlSU8gPSBfaW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfaW8nCisKK2NsYXNzIFB5QXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX3B5aW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfcHlpbycKKworCitjbGFzcyBPdGhlckZpbGVUZXN0czoKIAogICAgIGRlZiB0ZXN0QWJsZXMoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgInciKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgInciKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRhYmxlKCksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2Vla2FibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICJyIikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAiYSsiKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgImErIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRhYmxlKCksIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2Vla2FibGUoKSwgVHJ1ZSkKQEAgLTI5Myw3ICszNjYsNyBAQAogCiAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBfRmlsZUlPKCIvZGV2L3R0eSIsICJhIikKKyAgICAgICAgICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKCIvZGV2L3R0eSIsICJhIikKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgIyBXaGVuIHJ1biBpbiBhIGNyb24gam9iIHRoZXJlIGp1c3QgYXJlbid0IGFueQogICAgICAgICAgICAgICAgICAgICAjIHR0eXMsIHNvIHNraXAgdGhlIHRlc3QuICBUaGlzIGFsc28gaGFuZGxlcyBvdGhlcgpAQCAtMzE2LDcgKzM4OSw3IEBACiAgICAgICAgICMgY2hlY2sgaW52YWxpZCBtb2RlIHN0cmluZ3MKICAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIiwgInJ3IiwgInJ0Iik6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCBtb2RlKQorICAgICAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sIG1vZGUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzQwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYWIrJywgJ2FiKycpLCAoJ2ErYicsICdhYisnKSwgKCdyJywgJ3JiJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgncmInLCAncmInKSwgKCdyYisnLCAncmIrJyksICgncitiJywgJ3JiKycpXToKICAgICAgICAgICAgICAgICAjIHJlYWQgbW9kZXMgYXJlIGxhc3Qgc28gdGhhdCBURVNURk4gd2lsbCBleGlzdCBmaXJzdAotICAgICAgICAgICAgICAgIHdpdGggX0ZpbGVJTyhURVNURk4sIG1vZGVzWzBdKSBhcyBmOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCBtb2Rlc1swXSkgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1vZGUsIG1vZGVzWzFdKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKQEAgLTM0MCw3ICs0MTMsNyBAQAogCiAgICAgZGVmIHRlc3RVbmljb2RlT3BlbihzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgcmVwciB3b3JrcyBmb3IgdW5pY29kZSB0b28KLSAgICAgICAgZiA9IF9GaWxlSU8oc3RyKFRFU1RGTiksICJ3IikKKyAgICAgICAgZiA9IHNlbGYuRmlsZUlPKHN0cihURVNURk4pLCAidyIpCiAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBvcy51bmxpbmsoVEVTVEZOKQogCkBAIC0zNTAsNyArNDIzLDcgQEAKICAgICAgICAgICAgIGZuID0gVEVTVEZOLmVuY29kZSgiYXNjaWkiKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY291bGQgbm90IGVuY29kZSAlciB0byBhc2NpaScgJSBURVNURk4pCi0gICAgICAgIGYgPSBfRmlsZUlPKGZuLCAidyIpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhmbiwgInciKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmLndyaXRlKGIiYWJjIikKICAgICAgICAgICAgIGYuY2xvc2UoKQpAQCAtMzYxLDI4ICs0MzQsMjEgQEAKIAogICAgIGRlZiB0ZXN0Q29uc3RydWN0b3JIYW5kbGVzTlVMQ2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuRmlsZUlPLCBmbl93aXRoX05VTCwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCiAKICAgICBkZWYgdGVzdEludmFsaWRGZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX0ZpbGVJTywgLTEwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBfRmlsZUlPLCBtYWtlX2JhZF9mZCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgLTEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxmLkZpbGVJTywgbWFrZV9iYWRfZmQoKSkKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtc3ZjcnQuZ2V0X29zZmhhbmRsZSwgbWFrZV9iYWRfZmQoKSkKIAotICAgIEBjcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdEludmFsaWRGZF9vdmVyZmxvdyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAxNTk4OQotICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUlOIC0gMSkKLQogICAgIGRlZiB0ZXN0QmFkTW9kZUFyZ3VtZW50KHNlbGYpOgogICAgICAgICAjIHZlcmlmeSB0aGF0IHdlIGdldCBhIHNlbnNpYmxlIGVycm9yIG1lc3NhZ2UgZm9yIGJhZCBtb2RlIGFyZ3VtZW50CiAgICAgICAgIGJhZF9tb2RlID0gInF3ZXJ0eSIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCBiYWRfbW9kZSkKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sIGJhZF9tb2RlKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBpZiBtc2cuYXJnc1swXSAhPSAwOgogICAgICAgICAgICAgICAgIHMgPSBzdHIobXNnKQpAQCAtMzk1LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIGVycm9yIGZvciBpbnZhbGlkIG1vZGU6ICVzIiAlIGJhZF9tb2RlKQogCiAgICAgZGVmIHRlc3RUcnVuY2F0ZShzZWxmKToKLSAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAndycpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICd3JykKICAgICAgICAgZi53cml0ZShieXRlcyhieXRlYXJyYXkocmFuZ2UoMTApKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCkBAIC00MTAsMTEgKzQ3NiwxMSBAQAogICAgICAgICBkZWYgYnVnODAxNjMxKCk6CiAgICAgICAgICAgICAjIFNGIGJ1ZyA8aHR0cDovL3d3dy5weXRob24ub3JnL3NmLzgwMTYzMT4KICAgICAgICAgICAgICMgImZpbGUudHJ1bmNhdGUgZmF1bHQgb24gd2luZG93cyIKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3cnKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3cnKQogICAgICAgICAgICAgZi53cml0ZShieXRlcyhyYW5nZSgxMSkpKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwncisnKQorICAgICAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwncisnKQogICAgICAgICAgICAgZGF0YSA9IGYucmVhZCg1KQogICAgICAgICAgICAgaWYgZGF0YSAhPSBieXRlcyhyYW5nZSg1KSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSZWFkIG9uIGZpbGUgb3BlbmVkIGZvciB1cGRhdGUgZmFpbGVkICVyIiAlIGRhdGEpCkBAIC00NTQsMTkgKzUyMCwxOSBAQAogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0SW52YWxpZEluaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgIjEiLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCAiMSIsIDAsIDApCiAKICAgICBkZWYgdGVzdFdhcm5pbmdzKHNlbGYpOgogICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKHF1aWV0PVRydWUpIGFzIHc6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2FybmluZ3MsIFtdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5GaWxlSU8sIFtdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9GaWxlSU8sICIvc29tZS9pbnZhbGlkL25hbWUiLCAicnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sICIvc29tZS9pbnZhbGlkL25hbWUiLCAicnQiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKIAogICAgIGRlZiB0ZXN0VW5jbG9zZWRGRE9uRXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBjbGFzcyBNeUV4Y2VwdGlvbihFeGNlcHRpb24pOiBwYXNzCi0gICAgICAgIGNsYXNzIE15RmlsZUlPKF9GaWxlSU8pOgorICAgICAgICBjbGFzcyBNeUZpbGVJTyhzZWxmLkZpbGVJTyk6CiAgICAgICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gIm5hbWUiOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbigiYmxvY2tlZCBzZXR0aW5nIG5hbWUiKQpAQCAtNDc1LDEyICs1NDEsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTXlFeGNlcHRpb24sIE15RmlsZUlPLCBmZCkKICAgICAgICAgb3MuY2xvc2UoZmQpICAjIHNob3VsZCBub3QgcmFpc2UgT1NFcnJvcihFQkFERikKIAorY2xhc3MgQ090aGVyRmlsZVRlc3RzKE90aGVyRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX2lvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX2lvJworCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0SW52YWxpZEZkX292ZXJmbG93KHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1OTg5CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCBfdGVzdGNhcGkuSU5UX01JTiAtIDEpCisKK2NsYXNzIFB5T3RoZXJGaWxlVGVzdHMoT3RoZXJGaWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBGaWxlSU8gPSBfcHlpby5GaWxlSU8KKyAgICBtb2R1bGVuYW1lID0gJ19weWlvJworCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIEhpc3RvcmljYWxseSwgdGhlc2UgdGVzdHMgaGF2ZSBiZWVuIHNsb3BweSBhYm91dCByZW1vdmluZyBURVNURk4uCiAgICAgIyBTbyBnZXQgcmlkIG9mIGl0IG5vIG1hdHRlciB3aGF0LgogICAgIHRyeToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KEF1dG9GaWxlVGVzdHMsIE90aGVyRmlsZVRlc3RzKQorICAgICAgICBydW5fdW5pdHRlc3QoQ0F1dG9GaWxlVGVzdHMsIFB5QXV0b0ZpbGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIENPdGhlckZpbGVUZXN0cywgUHlPdGhlckZpbGVUZXN0cykKICAgICBmaW5hbGx5OgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKaW5kZXggMDNhYzFhYS4uMzVkNzkxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maW5hbGl6YXRpb24ucHkKQEAgLTUxNSw4ICs1MTUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5IGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQppbmRleCBlODdhYWIwLi40MjUxMDkwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKQEAgLTc3Myw2ICs3NzMsMTQgQEAKICAgICAgICAgICAgIHRlc3Qoc2ZtdCwgTkFOLCAnIG5hbicpCiAgICAgICAgICAgICB0ZXN0KHNmbXQsIC1OQU4sICcgbmFuJykKIAorICAgIGRlZiB0ZXN0X05vbmVfbmRpZ2l0cyhzZWxmKToKKyAgICAgICAgZm9yIHggaW4gcm91bmQoMS4yMyksIHJvdW5kKDEuMjMsIE5vbmUpLCByb3VuZCgxLjIzLCBuZGlnaXRzPU5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIGludCkKKyAgICAgICAgZm9yIHggaW4gcm91bmQoMS43OCksIHJvdW5kKDEuNzgsIE5vbmUpLCByb3VuZCgxLjc4LCBuZGlnaXRzPU5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIGludCkKKwogCiAjIEJlZ2lubmluZyB3aXRoIFB5dGhvbiAyLjYgZmxvYXQgaGFzIGNyb3NzIHBsYXRmb3JtIGNvbXBhdGlibGUKICMgd2F5cyB0byBjcmVhdGUgYW5kIHJlcHJlc2VudCBpbmYgYW5kIG5hbgpAQCAtMTI5OSwxOCArMTMwNyw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5pZGVudGljYWwoeCwgZnJvbUhleCh0b0hleCh4KSkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBHZW5lcmFsRmxvYXRDYXNlcywKLSAgICAgICAgRm9ybWF0RnVuY3Rpb25zVGVzdENhc2UsCi0gICAgICAgIFVua25vd25Gb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgSUVFRUZvcm1hdFRlc3RDYXNlLAotICAgICAgICBGb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgUmVwclRlc3RDYXNlLAotICAgICAgICBSb3VuZFRlc3RDYXNlLAotICAgICAgICBJbmZOYW5UZXN0LAotICAgICAgICBIZXhGbG9hdFRlc3RDYXNlLAotICAgICAgICApCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkgYi9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5CmluZGV4IDVhNzA5YmMuLjk4YjViZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbHVmbC5weQpAQCAtMTgsMTAgKzE4LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZMVUZMIHRlc3Q+JywgJ2V4ZWMnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEZMVUZMVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IDQ4MjgzNWQuLmZhMzdmOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IGNhc2VzIGZvciB0aGUgZm5tYXRjaCBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaCwgZm5tYXRjaGNhc2UsIHRyYW5zbGF0ZSwgZmlsdGVyCkBAIC03OSwxMSArNzgsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcihbJ2EnLCAnYiddLCAnYScpLCBbJ2EnXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm5tYXRjaFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZVRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkgYi9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5CmluZGV4IGUwNjI2ZGYuLmVlYmEzMDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JrMS5weQpAQCAtOCw3ICs4LDcgQEAKIGltcG9ydCB0aW1lCiAKIGZyb20gdGVzdC5mb3JrX3dhaXQgaW1wb3J0IEZvcmtXYWl0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZSwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0X21vZHVsZSwgdmVyYm9zZSkKIAogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE4LDEzICsxOCwxNCBAQAogCiBjbGFzcyBGb3JrVGVzdChGb3JrV2FpdCk6CiAgICAgZGVmIHdhaXRfaW1wbChzZWxmLCBjcGlkKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPD0gZGVhZGxpbmU6CiAgICAgICAgICAgICAjIHdhaXRwaWQoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzID0gb3Mud2FpdHBpZChjcGlkLCBvcy5XTk9IQU5HKQogICAgICAgICAgICAgaWYgc3BpZCA9PSBjcGlkOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQpAQCAtMTAzLDkgKzEwNCw4IEBACiAgICAgICAgICAgICBmb3JrX3dpdGhfaW1wb3J0X2xvY2sobGV2ZWwpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChGb3JrVGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IGZjNzFlNDguLjliMTM2MzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC05LDcgKzksNyBAQAogIyB0ZXN0IHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdG9yIChJIGFtIG5vdCBzdXJlIGlmIHRoaXMgaXMgYmVpbmcgdGVzdGVkCiAjIGVsc2V3aGVyZSBidXQsIHN1cmVseSwgc29tZSBvZiB0aGUgZ2l2ZW4gY2FzZXMgYXJlICpub3QqIHRlc3RlZCBiZWNhdXNlCiAjIHRoZXkgY3Jhc2ggcHl0aG9uKQotIyB0ZXN0IG9uIHVuaWNvZGUgc3RyaW5ncyBhcyB3ZWxsCisjIHRlc3Qgb24gYnl0ZXMgb2JqZWN0IGFzIHdlbGwKIAogZGVmIHRlc3Rmb3JtYXQoZm9ybWF0c3RyLCBhcmdzLCBvdXRwdXQ9Tm9uZSwgbGltaXQ9Tm9uZSwgb3ZlcmZsb3dvaz1GYWxzZSk6CiAgICAgaWYgdmVyYm9zZToKQEAgLTQ2LDE5MSArNDYsMjA5IEBACiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCd5ZXMnKQogCitkZWYgdGVzdGNvbW1vbihmb3JtYXRzdHIsIGFyZ3MsIG91dHB1dD1Ob25lLCBsaW1pdD1Ob25lLCBvdmVyZmxvd29rPUZhbHNlKToKKyAgICAjIGlmIGZvcm1hdHN0ciBpcyBhIHN0ciwgdGVzdCBzdHIsIGJ5dGVzLCBhbmQgYnl0ZWFycmF5OworICAgICMgb3RoZXJ3aXNlLCB0ZXN0IGJ5dGVzIGFuZCBieXRlYXJyeQorICAgIGlmIGlzaW5zdGFuY2UoZm9ybWF0c3RyLCBzdHIpOgorICAgICAgICB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncywgb3V0cHV0LCBsaW1pdCwgb3ZlcmZsb3dvaykKKyAgICAgICAgYl9mb3JtYXQgPSBmb3JtYXRzdHIuZW5jb2RlKCdhc2NpaScpCisgICAgZWxzZToKKyAgICAgICAgYl9mb3JtYXQgPSBmb3JtYXRzdHIKKyAgICBiYV9mb3JtYXQgPSBieXRlYXJyYXkoYl9mb3JtYXQpCisgICAgYl9hcmdzID0gW10KKyAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSk6CisgICAgICAgIGFyZ3MgPSAoYXJncywgKQorICAgIGJfYXJncyA9IHR1cGxlKGFyZ3MpCisgICAgaWYgb3V0cHV0IGlzIE5vbmU6CisgICAgICAgIGJfb3V0cHV0ID0gYmFfb3V0cHV0ID0gTm9uZQorICAgIGVsc2U6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBzdHIpOgorICAgICAgICAgICAgYl9vdXRwdXQgPSBvdXRwdXQuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiX291dHB1dCA9IG91dHB1dAorICAgICAgICBiYV9vdXRwdXQgPSBieXRlYXJyYXkoYl9vdXRwdXQpCisgICAgdGVzdGZvcm1hdChiX2Zvcm1hdCwgYl9hcmdzLCBiX291dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisgICAgdGVzdGZvcm1hdChiYV9mb3JtYXQsIGJfYXJncywgYmFfb3V0cHV0LCBsaW1pdCwgb3ZlcmZsb3dvaykKKwogCiBjbGFzcyBGb3JtYXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMWQiLCAoMSwpLCAiMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuKmQiLCAoc3lzLm1heHNpemUsMSksIG92ZXJmbG93b2s9VHJ1ZSkgICMgZXhwZWN0IG92ZXJmbG93Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMTAwZCIsICgxLCksICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKKworICAgIGRlZiB0ZXN0X2NvbW1vbl9mb3JtYXQoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IGlkZW50aWZpZXJzIHRoYXQgd29yayB0aGUgc2FtZSBhY3Jvc3MKKyAgICAgICAgIyBzdHIsIGJ5dGVzLCBhbmQgYnl0ZWFycmF5cyAoaW50ZWdlciwgZmxvYXQsIG9jdCwgaGV4KQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjFkIiwgKDEsKSwgIjEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLipkIiwgKHN5cy5tYXhzaXplLDEpLCBvdmVyZmxvd29rPVRydWUpICAjIGV4cGVjdCBvdmVyZmxvdworICAgICAgICB0ZXN0Y29tbW9uKCIlLjEwMGQiLCAoMSwpLCAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMScsIG92ZXJmbG93b2s9VHJ1ZSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMTE3eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJworICAgICAgICB0ZXN0Y29tbW9uKCIlIy4xMTd4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dvaz1UcnVlKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4xMTh4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCisgICAgICAgIHRlc3Rjb21tb24oIiUjLjExOHgiLCAoMSwpLCAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKICAgICAgICAgICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKICAgICAgICAgICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dvaz1UcnVlKQogCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVmIiwgKDEuMCwpLCAiMS4wMDAwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZiIsICgxLjAsKSwgIjEuMDAwMDAwIikKICAgICAgICAgIyB0aGVzZSBhcmUgdHJ5aW5nIHRvIHRlc3QgdGhlIGxpbWl0cyBvZiB0aGUgaW50ZXJuYWwgbWFnaWMtbnVtYmVyLWxlbmd0aAogICAgICAgICAjIGZvcm1hdHRpbmcgYnVmZmVyLCBpZiB0aGF0IG51bWJlciBjaGFuZ2VzIHRoZW4gdGhlc2UgdGVzdHMgYXJlIGxlc3MKICAgICAgICAgIyBlZmZlY3RpdmUKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTA5LCAtMS5lKzQ5LzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzQ5LzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDEwOSwgLTEuZSs0OS8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSs0OS8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQogICAgICAgICAjIHRlc3Qgc29tZSByaWRpY3Vsb3VzbHkgbGFyZ2UgcHJlY2lzaW9uLCBleHBlY3Qgb3ZlcmZsb3cKLSAgICAgICAgdGVzdGZvcm1hdCgnJTEyLipmJywgKDEyMzQ1NiwgMS4wKSkKKyAgICAgICAgdGVzdGNvbW1vbignJTEyLipmJywgKDEyMzQ1NiwgMS4wKSkKIAogICAgICAgICAjIGNoZWNrIGZvciBpbnRlcm5hbCBvdmVyZmxvdyB2YWxpZGF0aW9uIG9uIGxlbmd0aCBvZiBwcmVjaXNpb24KICAgICAgICAgIyB0aGVzZSB0ZXN0cyBzaG91bGQgbm8gbG9uZ2VyIGNhdXNlIG92ZXJmbG93IGluIFB5dGhvbgogICAgICAgICAjIDIuNy8zLjEgYW5kIGxhdGVyLgotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qZyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKkciLCAoMTEwLCAtMS5lKzEwMC8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipmIiwgKDExMCwgLTEuZSsxMDAvMy4pKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qRiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipHIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKkYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCiAgICAgICAgICMgRm9ybWF0dGluZyBvZiBpbnRlZ2Vycy4gT3ZlcmZsb3cgaXMgbm90IG9rCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMTAsICJhIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAxMDAwMDAwMDAwMDAsICIxNzQ4NzZlODAwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAxMCwgIjEyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAxMDAwMDAwMDAwMDAsICIxMzUxMDM1NTY0MDAwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAxMCwgIjEwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAxMDAwMDAwMDAwMDAsICIxMDAwMDAwMDAwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDEwLCAiYSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgMTAwMDAwMDAwMDAwLCAiMTc0ODc2ZTgwMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMTAsICIxMiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMTAwMDAwMDAwMDAwLCAiMTM1MTAzNTU2NDAwMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMTAsICIxMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMTAwMDAwMDAwMDAwLCAiMTAwMDAwMDAwMDAwIikKICAgICAgICAgYmlnID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1ZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMxZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMyZCIsIC1iaWcsICIgLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzMmQiLCAtYmlnLCAiLTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAzMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM0ZCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNGQiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMzRkIiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMzRkIiwgYmlnLCAiICAgKzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNGQiLCBiaWcsICIgICAgMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzBkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4zMWQiLCBiaWcsICIwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTMyLjMxZCIsIGJpZywgIiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTVkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzFkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzJkIiwgLWJpZywgIiAtMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0zMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDMyZCIsIC1iaWcsICItMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMDMyZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMzRkIiwgLWJpZywgIi0wMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0ZCIsIGJpZywgIjAwMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMCszNGQiLCBiaWcsICIrMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSszNGQiLCBiaWcsICIgICArMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTM0ZCIsIGJpZywgIiAgICAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjJkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zMGQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMxZCIsIGJpZywgIjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzIuMzFkIiwgYmlnLCAiIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX19fX19fX19fX18iLCA2KQogICAgICAgICBiaWcgPSAweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAgIyAyMSBoZXggZGlnaXRzCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1eCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIyeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIzeCIsIC1iaWcsICIgLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyM3giLCAtYmlnLCAiLTAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAyM3giLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDI1eCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyNXgiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMjV4IiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMjV4IiwgYmlnLCAiICAgKzEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyNXgiLCBiaWcsICIgICAgMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMjF4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTIzLjIyeCIsIGJpZywgIiAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0yMy4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVYIiwgYmlnLCAiMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgYmlnLCAiMFgxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCBiaWcsICIweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIC1iaWcsICItMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4yM3giLCAtYmlnLCAiLTB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMjN4IiwgYmlnLCAiKzB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyAuMjN4IiwgYmlnLCAiIDB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMjNYIiwgYmlnLCAiKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy0rLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzI2LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzI3LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1eCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIyeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIzeCIsIC1iaWcsICIgLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyM3giLCAtYmlnLCAiLTAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTAyM3giLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDI1eCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyNXgiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTArMjV4IiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMjV4IiwgYmlnLCAiICAgKzEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyNXgiLCBiaWcsICIgICAgMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMjF4IiwgYmlnLCAiMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJTIzLjIyeCIsIGJpZywgIiAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0yMy4yMngiLCBiaWcsICIwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiVYIiwgYmlnLCAiMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgYmlnLCAiMFgxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCBiaWcsICIweDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIC1iaWcsICItMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4yM3giLCAtYmlnLCAiLTB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMjN4IiwgYmlnLCAiKzB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIyAuMjN4IiwgYmlnLCAiIDB4MDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMjNYIiwgYmlnLCAiKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKzI2LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKzI3LjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCiAgICAgICAgICMgbmV4dCBvbmUgZ2V0cyB0d28gbGVhZGluZyB6ZXJvZXMgZnJvbSBwcmVjaXNpb24sIGFuZCBhbm90aGVyIGZyb20gdGhlCiAgICAgICAgICMgMCBmbGFnIGFuZCB0aGUgd2lkdGgKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMDI3LjIzWCIsIGJpZywgIiswWDAwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzAyNy4yM1giLCBiaWcsICIrMFgwMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICAjIHNhbWUsIGV4Y2VwdCBubyAwIGZsYWcKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMjcuMjNYIiwgYmlnLCAiICswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX18iLCA2KQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICBiaWcgPSAwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICAjIDMyIG9jdGFsIGRpZ2l0cwotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzM28iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM0byIsIC1iaWcsICIgLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0zNG8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzRvIiwgLWJpZywgIi0wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTAzNG8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzZvIiwgLWJpZywgIi0wMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzZvIiwgYmlnLCAiMDAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTArMzZvIiwgYmlnLCAiKzAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSszNm8iLCBiaWcsICIgICArMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzZvIiwgYmlnLCAiICAgIDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4ybyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS4zMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM0LjMzbyIsIGJpZywgIiAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTM0LjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgYmlnLCAiMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIC1iaWcsICItMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjM0byIsIC1iaWcsICItMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyAuMzRvIiwgYmlnLCAiIDBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKzM3LjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIyszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzNvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNG8iLCAtYmlnLCAiIC0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0byIsIC1iaWcsICItMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0wMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM2byIsIC1iaWcsICItMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM2byIsIGJpZywgIjAwMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwKzM2byIsIGJpZywgIiswMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMzZvIiwgYmlnLCAiICAgKzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTM2byIsIGJpZywgIiAgICAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNC4zM28iLCBiaWcsICIgMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0zNC4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAtYmlnLCAiLTBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zNG8iLCAtYmlnLCAiLTBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMgLjM0byIsIGJpZywgIiAwbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgbmV4dCBvbmUgZ2V0cyBvbmUgbGVhZGluZyB6ZXJvIGZyb20gcHJlY2lzaW9uCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIGJhc2UgbWFya2VyIHNob3VsZG4ndCBjaGFuZ2UgdGhhdCwgc2luY2UgIjAiIGlzIHJlZHVuZGFudAotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zM28iLCBiaWcsICIwbzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBidXQgcmVkdWNlIHByZWNpc2lvbiwgYW5kIGJhc2UgbWFya2VyIHNob3VsZCBhZGQgYSB6ZXJvCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjMybyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zMm8iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBvbmUgbGVhZGluZyB6ZXJvIGZyb20gcHJlY2lzaW9uLCBhbmQgYW5vdGhlciBmcm9tICIwIiBmbGFnICYgd2lkdGgKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNC4zM28iLCBiaWcsICIwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNC4zM28iLCBiaWcsICIwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBiYXNlIG1hcmtlciBzaG91bGRuJ3QgY2hhbmdlIHRoYXQKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAjMzQuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgZmxvYXQoYmlnKSwgIjEyMzQ1Nl9fX19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAjMzQuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIFNvbWUgc21hbGwgaW50cywgaW4gYm90aCBQeXRob24gaW50IGFuZCBmbGF2b3JzKS4KLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCA0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIC00MiwgIi00MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgNDIuMCwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMSwgIjB4MSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEsICIweDEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAxLCAiMFgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMSwgIjBYMSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMS4wLCAiMHgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMSwgIjBvMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDEsICIwbzEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAwLCAiMG8wIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMCwgIjBvMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAwLCAiMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAwLCAiMHgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMCwgIjB4MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIDAsICIwWDAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAwLCAiMFgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAweDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIC0weDQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAweDQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIC0weDQyLCAiLTQyIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGZsb2F0KDB4NDIpLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDBvNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLTBvNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDBvNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLTBvNDIsICItNDIiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgZmxvYXQoMG80MiksICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgLTQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCA0MiwgIjQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAtNDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDQyLjAsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIDEsICIweDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAxLCAiMHgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgMSwgIjBYMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDEsICIwWDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAxLCAiMG8xIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMSwgIjBvMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIDAsICIwbzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAwLCAiMG8wIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDAsICIwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjeCIsIDAsICIweDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAwLCAiMHgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNYIiwgMCwgIjBYMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDAsICIwWDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDB4NDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLTB4NDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDB4NDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLTB4NDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDBvNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLTBvNDIsICItNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDBvNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgLTBvNDIsICItNDIiKQorICAgICAgICAjIGFsdGVybmF0ZSBmbG9hdCBmb3JtYXR0aW5nCisgICAgICAgIHRlc3Rjb21tb24oJyVnJywgMS4xLCAnMS4xJykKKyAgICAgICAgdGVzdGNvbW1vbignJSNnJywgMS4xLCAnMS4xMDAwMCcpCisKKyAgICBkZWYgdGVzdF9zdHJfZm9ybWF0KHNlbGYpOgogICAgICAgICB0ZXN0Zm9ybWF0KCIlciIsICJcdTAzNzgiLCAiJ1xcdTAzNzgnIikgICMgbm9uIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlYSIsICJcdTAzNzgiLCAiJ1xcdTAzNzgnIikgICMgbm9uIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlciIsICJcdTAzNzQiLCAiJ1x1MDM3NCciKSAgICMgcHJpbnRhYmxlCiAgICAgICAgIHRlc3Rmb3JtYXQoIiVhIiwgIlx1MDM3NCIsICInXFx1MDM3NCciKSAgIyBwcmludGFibGUKIAotICAgICAgICAjIGFsdGVybmF0ZSBmbG9hdCBmb3JtYXR0aW5nCi0gICAgICAgIHRlc3Rmb3JtYXQoJyVnJywgMS4xLCAnMS4xJykKLSAgICAgICAgdGVzdGZvcm1hdCgnJSNnJywgMS4xLCAnMS4xMDAwMCcpCi0KLSAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAjIFRlc3QgZXhjZXB0aW9uIGZvciB1bmtub3duIGZvcm1hdCBjaGFyYWN0ZXJzLCBldGMuCiAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICBwcmludCgnVGVzdGluZyBleGNlcHRpb25zJykKICAgICAgICAgZGVmIHRlc3RfZXhjKGZvcm1hdHN0ciwgYXJncywgZXhjZXB0aW9uLCBleGNtc2cpOgpAQCAtMjU0LDExICsyNzIsMTA4IEBACiAgICAgICAgICN0ZXN0X2V4Yyh1bmljb2RlKCdhYmMgJVx1MzAwMCcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAxLCBWYWx1ZUVycm9yLAogICAgICAgICAjICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJz8nICgweDMwMDApIGF0IGluZGV4IDUiKQogICAgICAgICB0ZXN0X2V4YygnJWQnLCAnMScsIFR5cGVFcnJvciwgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YygnJXgnLCAnMScsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCisgICAgICAgIHRlc3RfZXhjKCcleCcsIDMuMTQsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKICAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIikKICAgICAgICAgdGVzdF9leGMoJ25vIGZvcm1hdCcsICcxJywgVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpCi0gICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCAtMSwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgc3lzLm1heHVuaWNvZGUrMSwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgI3Rlc3RfZXhjKCclYycsIDIqKjEyOCwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgMy4xNCwgVHlwZUVycm9yLCAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCAnYWInLCBUeXBlRXJyb3IsICIlYyByZXF1aXJlcyBpbnQgb3IgY2hhciIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIGIneCcsIFR5cGVFcnJvciwgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIikKKworICAgICAgICBpZiBtYXhzaXplID09IDIqKjMxLTE6CisgICAgICAgICAgICAjIGNyYXNoZXMgMi4yLjEgYW5kIGVhcmxpZXI6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIiUqZCIlKG1heHNpemUsIC0xMjcpCisgICAgICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCciJSpkIiUobWF4c2l6ZSwgLTEyNykgc2hvdWxkIGZhaWwnKQorCisgICAgZGVmIHRlc3RfYnl0ZXNfYW5kX2J5dGVhcnJheV9mb3JtYXQoc2VsZik6CisgICAgICAgICMgJWMgd2lsbCBpbnNlcnQgYSBzaW5nbGUgYnl0ZSwgZWl0aGVyIGZyb20gYW4gaW50IGluIHJhbmdlKDI1NiksIG9yCisgICAgICAgICMgZnJvbSBhIGJ5dGVzIGFyZ3VtZW50IG9mIGxlbmd0aCAxLCBub3QgZnJvbSBhIHN0ci4KKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgNywgYiJceDA3IikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYiJaIiwgYiJaIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYnl0ZWFycmF5KGIiWiIpLCBiIloiKQorICAgICAgICAjICViIHdpbGwgaW5zZXJ0IGEgc2VyaWVzIG9mIGJ5dGVzLCBlaXRoZXIgZnJvbSBhIHR5cGUgdGhhdCBzdXBwb3J0cworICAgICAgICAjIHRoZSBQeV9idWZmZXIgcHJvdG9jb2wsIG9yIHNvbWV0aGluZyB0aGF0IGhhcyBhIF9fYnl0ZXNfXyBtZXRob2QKKyAgICAgICAgY2xhc3MgRmFrZUJ5dGVzKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ieXRlc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJzEyMycKKyAgICAgICAgZmIgPSBGYWtlQnl0ZXMoKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWIiLCBiImFiYyIsIGIiYWJjIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgYnl0ZWFycmF5KGIiZGVmIiksIGIiZGVmIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgZmIsIGIiMTIzIikKKyAgICAgICAgIyAjICVzIGlzIGFuIGFsaWFzIGZvciAlYiAtLSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBQeTIvMyBjb2RlCisgICAgICAgIHRlc3Rjb21tb24oYiIlcyIsIGIiYWJjIiwgYiJhYmMiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBieXRlYXJyYXkoYiJkZWYiKSwgYiJkZWYiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBmYiwgYiIxMjMiKQorICAgICAgICAjICVhIHdpbGwgZ2l2ZSB0aGUgZXF1aXZhbGVudCBvZgorICAgICAgICAjIHJlcHIoc29tZV9vYmopLmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsIDMuMTQsIGIiMy4xNCIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsIGIiZ2hpIiwgYiJiJ2doaSciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAiamtsIiwgYiInamtsJyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYSIsICJcdTA1NDQiLCBiIidcXHUwNTQ0JyIpCisgICAgICAgICMgJXIgaXMgYW4gYWxpYXMgZm9yICVhCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsIDMuMTQsIGIiMy4xNCIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsIGIiZ2hpIiwgYiJiJ2doaSciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAiamtsIiwgYiInamtsJyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlciIsICJcdTA1NDQiLCBiIidcXHUwNTQ0JyIpCisKKyAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycywgZXRjLgorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgZXhjZXB0aW9ucycpCisgICAgICAgIGRlZiB0ZXN0X2V4Yyhmb3JtYXRzdHIsIGFyZ3MsIGV4Y2VwdGlvbiwgZXhjbXNnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBleGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgICAgIGlmIHN0cihleGMpID09IGV4Y21zZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJ5ZXMiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCdubycpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdVbmV4cGVjdGVkICcsIGV4Y2VwdGlvbiwgJzonLCByZXByKHN0cihleGMpKSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnbm8nKQorICAgICAgICAgICAgICAgIHByaW50KCdVbmV4cGVjdGVkIGV4Y2VwdGlvbicpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgnZGlkIG5vdCBnZXQgZXhwZWN0ZWQgZXhjZXB0aW9uOiAlcycgJSBleGNtc2cpCisgICAgICAgIHRlc3RfZXhjKGInJWQnLCAnMScsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWQgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCisgICAgICAgIHRlc3RfZXhjKGInJWQnLCBiJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBieXRlcyIpCisgICAgICAgIHRlc3RfZXhjKGInJXgnLCAzLjE0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKKyAgICAgICAgdGVzdF9leGMoYiclZycsICcxJywgVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YyhiJyVnJywgYicxJywgVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsIG5vdCBieXRlcyIpCisgICAgICAgIHRlc3RfZXhjKGInbm8gZm9ybWF0JywgNywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYidubyBmb3JtYXQnLCBiJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKQorICAgICAgICB0ZXN0X2V4YyhiJ25vIGZvcm1hdCcsIGJ5dGVhcnJheShiJzEnKSwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIC0xLCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgMjU2LCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgMioqMTI4LCBPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDI1NikiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgYiJaYSIsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKQorICAgICAgICB0ZXN0X2V4YyhiIiVjIiwgIlkiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDMuMTQsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKQorICAgICAgICB0ZXN0X2V4YyhiIiViIiwgIlhjIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJyIpCisgICAgICAgIHRlc3RfZXhjKGIiJXMiLCAiV2QiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiViIHJlcXVpcmVzIGJ5dGVzLCBvciBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIF9fYnl0ZXNfXywgbm90ICdzdHInIikKIAogICAgICAgICBpZiBtYXhzaXplID09IDIqKjMxLTE6CiAgICAgICAgICAgICAjIGNyYXNoZXMgMi4yLjEgYW5kIGVhcmxpZXI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDMzMzY1MzIuLjE2OTk4NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xLDEzICsxLDE0IEBACiAiIiJUZXN0cyBmb3IgTGliL2ZyYWN0aW9ucy5weS4iIiIKIAogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCByZXF1aXJlc19JRUVFXzc1NAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzX0lFRUVfNzU0CiBpbXBvcnQgbWF0aAogaW1wb3J0IG51bWJlcnMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGZyYWN0aW9ucwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHkKIGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKIEYgPSBmcmFjdGlvbnMuRnJhY3Rpb24KQEAgLTQ5LDcgKzUwLDcgQEAKICAgICAiIiJUZXN0IGNvbXBhcmlzb24gb2YgRnJhY3Rpb24gd2l0aCBhIG5haXZlIHJhdGlvbmFsIGltcGxlbWVudGF0aW9uLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bSwgZGVuKToKLSAgICAgICAgZyA9IGdjZChudW0sIGRlbikKKyAgICAgICAgZyA9IG1hdGguZ2NkKG51bSwgZGVuKQogICAgICAgICBzZWxmLm51bSA9IG51bSAvLyBnCiAgICAgICAgIHNlbGYuZGVuID0gZGVuIC8vIGcKIApAQCAtODMsMTYgKzg0LDI2IEBACiBjbGFzcyBHY2RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0TWlzYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnY2QoMCwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDEsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoLTEsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgwLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDAsIC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoNywgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIGdjZCg3LCAtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKC0yMywgMTUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyLCBnY2QoMTIwLCA4NCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyLCBnY2QoODQsIC0xMjApKQorICAgICAgICAjIGZyYWN0aW9ucy5nY2QoKSBpcyBkZXByZWNhdGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidmcmFjdGlvbnNcLmdjZCcpOgorICAgICAgICAgICAgZ2NkKDEsIDEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCByJ2ZyYWN0aW9uc1wuZ2NkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2NkKDAsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMSwgMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoLTEsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMCwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoMCwgLTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoNywgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoNywgLTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoLTIzLCAxNSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyLCBnY2QoMTIwLCA4NCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiwgZ2NkKDg0LCAtMTIwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDEyMC4wLCA4NCksIDEyLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjAsIDg0LjApLCAxMi4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoRigxMjApLCBGKDg0KSksIEYoMTIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoRigxMjAsIDc3KSwgRig4NCwgNTUpKSwgRigxMiwgMzg1KSkKIAogCiBkZWYgX2NvbXBvbmVudHMocik6CkBAIC0zMzAsNyArMzQxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscyhGKC0yLCAxMCksIHJvdW5kKEYoLTE1LCAxMDApLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscyhGKC0yLCAxMCksIHJvdW5kKEYoLTI1LCAxMDApLCAxKSkKIAotCiAgICAgZGVmIHRlc3RBcml0aG1ldGljKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYoMSwgMiksIEYoMSwgMTApICsgRigyLCA1KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKC0zLCAxMCksIEYoMSwgMTApIC0gRigyLCA1KSkKQEAgLTQwMiw2ICs0MTIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWxzKDIuMCAsIDQgKiogRigxLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscygwLjI1LCAyLjAgKiogRigtMiwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoMS4wICsgMGosICgxLjAgKyAwaikgKiogRigxLCAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBvcGVyYXRvci5wb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMCwgMSksIC0yKQogCiAgICAgZGVmIHRlc3RNaXhpbmdXaXRoRGVjaW1hbChzZWxmKToKICAgICAgICAgIyBEZWNpbWFsIHJlZnVzZXMgbWl4ZWQgYXJpdGhtZXRpYyAoYnV0IG5vdCBtaXhlZCBjb21wYXJpc29ucykKQEAgLTYwNSw4ICs2MTcsNSBAQAogICAgICAgICByID0gRigxMywgNykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHIsICdhJywgMTApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRnJhY3Rpb25UZXN0LCBHY2RUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQppbmRleCBjNDAyZWMzLi4xODlmY2E5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhbWUucHkKQEAgLTE2MSw4ICsxNjEsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlubmVyLmZfbG9jYWxzLCB7fSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggZDNiZTdkNi4uYWVmNjZkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgc3VwZXIoRHVtbXlEVFBIYW5kbGVyLCBzZWxmKS5wdXNoKHdoYXQuZW5jb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcmFpc2UKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKIAogY2xhc3MgRHVtbXlGVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBjb21tYW5kICIlcyIgbm90IHVuZGVyc3Rvb2QuJyAlY21kKQogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcmFpc2UKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKICAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5wdXNoKHNlbGYsIGRhdGEuZW5jb2RlKCdhc2NpaScpICsgYidcclxuJykKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIGRlZiBjbWRfcGFzdihzZWxmLCBhcmcpOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrOgogICAgICAgICAgICAgc29jay5iaW5kKChzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzBdLCAwKSkKLSAgICAgICAgICAgIHNvY2subGlzdGVuKDUpCisgICAgICAgICAgICBzb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQoVElNRU9VVCkKICAgICAgICAgICAgIGlwLCBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzoyXQogICAgICAgICAgICAgaXAgPSBpcC5yZXBsYWNlKCcuJywgJywnKTsgcDEgPSBwb3J0IC8gMjU2OyBwMiA9IHBvcnQgJSAyNTYKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgIGRlZiBjbWRfZXBzdihzZWxmLCBhcmcpOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQ2KSBhcyBzb2NrOgogICAgICAgICAgICAgc29jay5iaW5kKChzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzBdLCAwKSkKLSAgICAgICAgICAgIHNvY2subGlzdGVuKDUpCisgICAgICAgICAgICBzb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQoVElNRU9VVCkKICAgICAgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KICAgICAgICAgICAgIHNlbGYucHVzaCgnMjI5IGVudGVyaW5nIGV4dGVuZGVkIHBhc3NpdmUgbW9kZSAofHx8JWR8KScgJXBvcnQpCkBAIC0yOTYsNyArMjk2LDcgQEAKICAgICAgICAgcmV0dXJuIDAKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAKIGlmIHNzbCBpcyBub3QgTm9uZToKQEAgLTM5NCw3ICszOTQsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShzZWxmLnNvY2tldCwgc3NsLlNTTFNvY2tldCkgYW5kCkBAIC02NzAsNyArNjcwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgc2VsZi5jbGllbnQubWxzZCgpKQogICAgICAgICBzZXRfZGF0YSgnJykKICAgICAgICAgZm9yIHggaW4gc2VsZi5jbGllbnQubWxzZCgpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJ1bmV4cGVjdGVkIGRhdGEgJXMiICUgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIHgpCiAKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgICMgIDEpIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gYmUgYWNjZXB0ZWQuCiAgICAgICAgICMgIDIpIHdoZW4gaXQgaXMgc2FmZSBmb3IgdGhlIGNhbGxlciB0byBjbG9zZSB0aGUgY29ubmVjdGlvbgogICAgICAgICAjICAzKSB3aGVuIHdlIGhhdmUgY2xvc2VkIHRoZSBzb2NrZXQKLSAgICAgICAgc2VsZi5zb2NrLmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNvY2subGlzdGVuKCkKICAgICAgICAgIyAoMSkgU2lnbmFsIHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gYWNjZXB0IHRoZSBjb25uZWN0aW9uLgogICAgICAgICBzZWxmLmV2dC5zZXQoKQogICAgICAgICB0cnk6CkBAIC0xMDQ5LDE5ICsxMDQ5LDggQEAKICAgICAgICAgZnRwLmNsb3NlKCkKIAogCi1jbGFzcyBUZXN0TmV0cmNEZXByZWNhdGlvbihUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCksIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKLSAgICAgICAgICAgIGVudlsnSE9NRSddID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIG9wZW4oJy5uZXRyYycsICd3JykuY2xvc2UoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgZnRwbGliLk5ldHJjKCkKLQotCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywgVGVzdE5ldHJjRGVwcmVjYXRpb24sCisgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsCiAgICAgICAgICAgICAgVGVzdElQdjZFbnZpcm9ubWVudCwKICAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKaW5kZXggNTA5NGY3Yi4uOGY0ODFiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTM3NCwxMiArMzczLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2Zvbyc6ICdiYXInfS5wb3AuX19xdWFsbmFtZV9fLCAnZGljdC5wb3AnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdW5jdGlvblByb3BlcnRpZXNUZXN0LCBJbnN0YW5jZW1ldGhvZEF0dHJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJiaXRyYXJ5RnVuY3Rpb25BdHRyVGVzdCwgRnVuY3Rpb25EaWN0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRvY3N0cmluZ1Rlc3QsIENlbGxUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggMzZmMTU0YS4uYWMyMTFjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTcsNiArNywxMCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBpbXBvcnQgZnVuY3Rvb2xzCiAKQEAgLTEzMyw2ICsxMzcsMTYgQEAKICAgICAgICAgam9pbiA9IHNlbGYucGFydGlhbCgnJy5qb2luKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oZGF0YSksICcwMTIzNDU2Nzg5JykKIAorICAgIGRlZiB0ZXN0X25lc3RlZF9vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgIHBhcnRpYWwgPSBzZWxmLnBhcnRpYWwKKyAgICAgICAgIyBPbmx5ICJ0cnVlIiBwYXJ0aWFsIGlzIG9wdGltaXplZAorICAgICAgICBpZiBwYXJ0aWFsLl9fbmFtZV9fICE9ICdwYXJ0aWFsJzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpbm5lciA9IHBhcnRpYWwoc2lnbmF0dXJlLCAnYXNkZicpCisgICAgICAgIG5lc3RlZCA9IHBhcnRpYWwoaW5uZXIsIGJhcj1UcnVlKQorICAgICAgICBmbGF0ID0gcGFydGlhbChzaWduYXR1cmUsICdhc2RmJywgYmFyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKG5lc3RlZCksIHNpZ25hdHVyZShmbGF0KSkKKwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtODg0LDEyICs4OTgsMzAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgICAgICBhIDw9IGIKIAotY2xhc3MgVGVzdExSVSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluICdfX2x0X18nLCAnX19ndF9fJywgJ19fbGVfXycsICdfX2dlX18nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZD1uYW1lLCBwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoT3JkZXJhYmxlX0xULCBuYW1lKQorICAgICAgICAgICAgICAgICAgICBtZXRob2RfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobWV0aG9kLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0aG9kX2NvcHksIG1ldGhvZCkKKworQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZworY2xhc3MgT3JkZXJhYmxlX0xUOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8IG90aGVyLnZhbHVlCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisKKworY2xhc3MgVGVzdExSVToKIAogICAgIGRlZiB0ZXN0X2xydShzZWxmKToKICAgICAgICAgZGVmIG9yaWcoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4gMyAqIHggKyB5Ci0gICAgICAgIGYgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjApKG9yaWcpCisgICAgICAgIGYgPSBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0yMCkob3JpZykKICAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4c2l6ZSwgMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCkBAIC05MjcsNyArOTU5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMSkKIAogICAgICAgICAjIHRlc3Qgc2l6ZSB6ZXJvICh3aGljaCBtZWFucyAibmV2ZXItY2FjaGUiKQotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgwKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKDApCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBub25sb2NhbCBmX2NudAogICAgICAgICAgICAgZl9jbnQgKz0gMQpAQCAtOTQzLDcgKzk3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCiAKICAgICAgICAgIyB0ZXN0IHNpemUgb25lCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDEpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMSkKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGZfY250CiAgICAgICAgICAgICBmX2NudCArPSAxCkBAIC05NTksNyArOTkxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMSkKIAogICAgICAgICAjIHRlc3Qgc2l6ZSB0d28KLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUoMikKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZSgyKQogICAgICAgICBkZWYgZih4KToKICAgICAgICAgICAgIG5vbmxvY2FsIGZfY250CiAgICAgICAgICAgICBmX2NudCArPSAxCkBAIC05NzYsNyArMTAwOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDIpCiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF9tYXhzaXplX25vbmUoc2VsZik6Ci0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9Tm9uZSkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCiAgICAgICAgIGRlZiBmaWIobik6CiAgICAgICAgICAgICBpZiBuIDwgMjoKICAgICAgICAgICAgICAgICByZXR1cm4gbgpAQCAtOTg0LDE3ICsxMDE2LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2ZpYihuKSBmb3IgbiBpbiByYW5nZSgxNildLAogICAgICAgICAgICAgWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQsIDU1LCA4OSwgMTQ0LCAyMzMsIDM3NywgNjEwXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKICAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKworICAgIGRlZiB0ZXN0X2xydV93aXRoX21heHNpemVfbmVnYXRpdmUoc2VsZik6CisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0tMTApCisgICAgICAgIGRlZiBlcShuKToKKyAgICAgICAgICAgIHJldHVybiBuCisgICAgICAgIGZvciBpIGluICgwLCAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2VxKG4pIGZvciBuIGluIHJhbmdlKDE1MCldLCBsaXN0KHJhbmdlKDE1MCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVxLmNhY2hlX2luZm8oKSwKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MzAwLCBtYXhzaXplPS0xMCwgY3VycnNpemU9MSkpCiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF9leGNlcHRpb25zKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0IHVzZXJfZnVuY3Rpb24gZXhjZXB0aW9ucyBnZXQgcGFzc2VkIHRocm91Z2ggd2l0aG91dAogICAgICAgICAjIGNyZWF0aW5nIGEgaGFyZC10by1yZWFkIGNoYWluZWQgZXhjZXB0aW9uLgogICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzE3NwogICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTI4KToKLSAgICAgICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemUpCisgICAgICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemUpCiAgICAgICAgICAgICBkZWYgZnVuYyhpKToKICAgICAgICAgICAgICAgICByZXR1cm4gJ2FiYydbaV0KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygwKSwgJ2EnKQpAQCAtMTAwNyw3ICsxMDQ4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX3R5cGVzKHNlbGYpOgogICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTI4KToKLSAgICAgICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1tYXhzaXplLCB0eXBlZD1UcnVlKQogICAgICAgICAgICAgZGVmIHNxdWFyZSh4KToKICAgICAgICAgICAgICAgICByZXR1cm4geCAqIHgKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKDMpLCA5KQpAQCAtMTAyMiw3ICsxMDYzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlLmNhY2hlX2luZm8oKS5taXNzZXMsIDQpCiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF9rZXl3b3JkX2FyZ3Moc2VsZik6Ci0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZSgpCiAgICAgICAgIGRlZiBmaWIobik6CiAgICAgICAgICAgICBpZiBuIDwgMjoKICAgICAgICAgICAgICAgICByZXR1cm4gbgpAQCAtMTAzMiwxMyArMTA3MywxMyBAQAogICAgICAgICAgICAgWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQsIDU1LCA4OSwgMTQ0LCAyMzMsIDM3NywgNjEwXQogICAgICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTE2KSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPTEyOCwgY3VycnNpemU9MTYpKQogICAgICAgICBmaWIuY2FjaGVfY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPTEyOCwgY3VycnNpemU9MCkpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9MTI4LCBjdXJyc2l6ZT0wKSkKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX2tleXdvcmRfYXJnc19tYXhzaXplX25vbmUoc2VsZik6Ci0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9Tm9uZSkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCiAgICAgICAgIGRlZiBmaWIobik6CiAgICAgICAgICAgICBpZiBuIDwgMjoKICAgICAgICAgICAgICAgICByZXR1cm4gbgpAQCAtMTA0NiwxNSArMTA4NywxMDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZmliKG49bnVtYmVyKSBmb3IgbnVtYmVyIGluIHJhbmdlKDE2KV0sCiAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCwgNTUsIDg5LCAxNDQsIDIzMywgMzc3LCA2MTBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MTYpKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MTYpKQogICAgICAgICBmaWIuY2FjaGVfY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTApKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTApKQorCisgICAgZGVmIHRlc3RfbHJ1X2NhY2hlX2RlY29yYXRpb24oc2VsZik6CisgICAgICAgIGRlZiBmKHpvbWc6ICd6b21nX2Fubm90YXRpb24nKToKKyAgICAgICAgICAgICIiImYgZG9jIHN0cmluZyIiIgorICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgIGcgPSBzZWxmLm1vZHVsZS5scnVfY2FjaGUoKShmKQorICAgICAgICBmb3IgYXR0ciBpbiBzZWxmLm1vZHVsZS5XUkFQUEVSX0FTU0lHTk1FTlRTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGcsIGF0dHIpLCBnZXRhdHRyKGYsIGF0dHIpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhpcyB0ZXN0IHJlcXVpcmVzIHRocmVhZGluZy4nKQorICAgIGRlZiB0ZXN0X2xydV9jYWNoZV90aHJlYWRlZChzZWxmKToKKyAgICAgICAgbiwgbSA9IDUsIDExCisgICAgICAgIGRlZiBvcmlnKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIDMgKiB4ICsgeQorICAgICAgICBmID0gc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9biptKShvcmlnKQorICAgICAgICBoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplID0gZi5jYWNoZV9pbmZvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMCkKKworICAgICAgICBzdGFydCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIGRlZiBmdWxsKGspOgorICAgICAgICAgICAgc3RhcnQud2FpdCgxMCkKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKG0pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihrLCAwKSwgb3JpZyhrLCAwKSkKKworICAgICAgICBkZWYgY2xlYXIoKToKKyAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSgyKm0pOgorICAgICAgICAgICAgICAgIGYuY2FjaGVfY2xlYXIoKQorCisgICAgICAgIG9yaWdfc2kgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQorICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBjcmVhdGUgbiB0aHJlYWRzIGluIG9yZGVyIHRvIGZpbGwgY2FjaGUKKyAgICAgICAgICAgIHRocmVhZHMgPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZnVsbCwgYXJncz1ba10pCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKG4pXQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnN0YXJ0X3RocmVhZHModGhyZWFkcyk6CisgICAgICAgICAgICAgICAgc3RhcnQuc2V0KCkKKworICAgICAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCisgICAgICAgICAgICBpZiBzZWxmLm1vZHVsZSBpcyBweV9mdW5jdG9vbHM6CisgICAgICAgICAgICAgICAgIyBYWFg6IFdoeSBjYW4gYmUgbm90IGVxdWFsPworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG1pc3NlcywgbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChoaXRzLCBtKm4gLSBtaXNzZXMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzc2VzLCBuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGl0cywgbSpuIC0gbWlzc2VzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgbikKKworICAgICAgICAgICAgIyBjcmVhdGUgbiB0aHJlYWRzIGluIG9yZGVyIHRvIGZpbGwgY2FjaGUgYW5kIDEgdG8gY2xlYXIgaXQKKyAgICAgICAgICAgIHRocmVhZHMgPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9Y2xlYXIpXQorICAgICAgICAgICAgdGhyZWFkcyArPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZnVsbCwgYXJncz1ba10pCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShuKV0KKyAgICAgICAgICAgIHN0YXJ0LmNsZWFyKCkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5zdGFydF90aHJlYWRzKHRocmVhZHMpOgorICAgICAgICAgICAgICAgIHN0YXJ0LnNldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwob3JpZ19zaSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKKyAgICBkZWYgdGVzdF9scnVfY2FjaGVfdGhyZWFkZWQyKHNlbGYpOgorICAgICAgICAjIFNpbXVsdGFuZW91cyBjYWxsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzCisgICAgICAgIG4sIG0gPSA1LCA3CisgICAgICAgIHN0YXJ0ID0gdGhyZWFkaW5nLkJhcnJpZXIobisxKQorICAgICAgICBwYXVzZSA9IHRocmVhZGluZy5CYXJyaWVyKG4rMSkKKyAgICAgICAgc3RvcCA9IHRocmVhZGluZy5CYXJyaWVyKG4rMSkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPW0qbikKKyAgICAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICBwYXVzZS53YWl0KDEwKQorICAgICAgICAgICAgcmV0dXJuIDMgKiB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5jYWNoZV9pbmZvKCksICgwLCAwLCBtKm4sIDApKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobSk6CisgICAgICAgICAgICAgICAgc3RhcnQud2FpdCgxMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoaSksIDMgKiBpKQorICAgICAgICAgICAgICAgIHN0b3Aud2FpdCgxMCkKKyAgICAgICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10ZXN0KSBmb3IgayBpbiByYW5nZShuKV0KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN0YXJ0X3RocmVhZHModGhyZWFkcyk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShtKToKKyAgICAgICAgICAgICAgICBzdGFydC53YWl0KDEwKQorICAgICAgICAgICAgICAgIHN0b3AucmVzZXQoKQorICAgICAgICAgICAgICAgIHBhdXNlLndhaXQoMTApCisgICAgICAgICAgICAgICAgc3RhcnQucmVzZXQoKQorICAgICAgICAgICAgICAgIHN0b3Aud2FpdCgxMCkKKyAgICAgICAgICAgICAgICBwYXVzZS5yZXNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhY2hlX2luZm8oKSwgKDAsIChpKzEpKm4sIG0qbiwgaSsxKSkKIAogICAgIGRlZiB0ZXN0X25lZWRfZm9yX3Jsb2NrKHNlbGYpOgogICAgICAgICAjIFRoaXMgd2lsbCBkZWFkbG9jayBvbiBhbiBMUlUgY2FjaGUgdGhhdCB1c2VzIGEgcmVndWxhciBsb2NrCiAKLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0xMCkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPTEwKQogICAgICAgICBkZWYgdGVzdF9mdW5jKHgpOgogICAgICAgICAgICAgJ1VzZWQgdG8gZGVtb25zdHJhdGUgYSByZWVudHJhbnQgbHJ1X2NhY2hlIGNhbGwgd2l0aGluIGEgc2luZ2xlIHRocmVhZCcKICAgICAgICAgICAgIHJldHVybiB4CkBAIC0xMDgyLDYgKzEyMDgsNDMgQEAKICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHRlc3RfbHJ1X21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgWChpbnQpOgorICAgICAgICAgICAgZl9jbnQgPSAwCisgICAgICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKDIpCisgICAgICAgICAgICBkZWYgZihzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLmZfY250ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4geCoxMCtzZWxmCisgICAgICAgIGEgPSBYKDUpCisgICAgICAgIGIgPSBYKDUpCisgICAgICAgIGMgPSBYKDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5mLmNhY2hlX2luZm8oKSwgKDAsIDAsIDIsIDApKQorCisgICAgICAgIGZvciB4IGluIDEsIDIsIDIsIDMsIDEsIDEsIDEsIDIsIDMsIDM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZih4KSwgeCoxMCArIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGEuZl9jbnQsIGIuZl9jbnQsIGMuZl9jbnQpLCAoNiwgMCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5mLmNhY2hlX2luZm8oKSwgKDQsIDYsIDIsIDIpKQorCisgICAgICAgIGZvciB4IGluIDEsIDIsIDEsIDEsIDEsIDEsIDMsIDIsIDIsIDI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZih4KSwgeCoxMCArIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGEuZl9jbnQsIGIuZl9jbnQsIGMuZl9jbnQpLCAoNiwgNCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5mLmNhY2hlX2luZm8oKSwgKDEwLCAxMCwgMiwgMikpCisKKyAgICAgICAgZm9yIHggaW4gMiwgMSwgMSwgMSwgMSwgMiwgMSwgMywgMiwgMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mKHgpLCB4KjEwICsgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5mX2NudCwgYi5mX2NudCwgYy5mX2NudCksICg2LCA0LCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoMTUsIDE1LCAyLCAyKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZi5jYWNoZV9pbmZvKCksIFguZi5jYWNoZV9pbmZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mLmNhY2hlX2luZm8oKSwgWC5mLmNhY2hlX2luZm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmYuY2FjaGVfaW5mbygpLCBYLmYuY2FjaGVfaW5mbygpKQorCitjbGFzcyBUZXN0TFJVQyhUZXN0TFJVLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19mdW5jdG9vbHMKKworY2xhc3MgVGVzdExSVVB5KFRlc3RMUlUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBweV9mdW5jdG9vbHMKKwogCiBjbGFzcyBUZXN0U2luZ2xlRGlzcGF0Y2godW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NpbXBsZV9vdmVybG9hZHMoc2VsZik6CkBAIC0xNTU4LDMyICsxNzIxLDUgQEAKICAgICAgICAgZnVuY3Rvb2xzLldlYWtLZXlEaWN0aW9uYXJ5ID0gX29yaWdfd2tkCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHRlc3RfY2xhc3NlcyA9ICgKLSAgICAgICAgVGVzdFBhcnRpYWxDLAotICAgICAgICBUZXN0UGFydGlhbFB5LAotICAgICAgICBUZXN0UGFydGlhbENTdWJjbGFzcywKLSAgICAgICAgVGVzdFBhcnRpYWxNZXRob2QsCi0gICAgICAgIFRlc3RVcGRhdGVXcmFwcGVyLAotICAgICAgICBUZXN0VG90YWxPcmRlcmluZywKLSAgICAgICAgVGVzdENtcFRvS2V5QywKLSAgICAgICAgVGVzdENtcFRvS2V5UHksCi0gICAgICAgIFRlc3RXcmFwcywKLSAgICAgICAgVGVzdFJlZHVjZSwKLSAgICAgICAgVGVzdExSVSwKLSAgICAgICAgVGVzdFNpbmdsZURpc3BhdGNoLAotICAgICkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2djLnB5IGIvTGliL3Rlc3QvdGVzdF9nYy5weQppbmRleCAyYWMxZDRiLi4xZjA4NjdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2djLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKQEAgLTEsNyArMSw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAodmVyYm9zZSwgcmVmY291bnRfdGVzdCwgcnVuX3VuaXR0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwX3B5dGhvbl9zdGRlcnIsIGNweXRob25fb25seSwgc3RhcnRfdGhyZWFkcykKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBtYWtlX3NjcmlwdCwgdGVtcF9kaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyLCBjcHl0aG9uX29ubHksIHN0YXJ0X3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF9kaXIpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBtYWtlX3NjcmlwdAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQpAQCAtNTQ2LDExICs1NDcsMzEgQEAKIAogICAgICAgICBjbGFzcyBVc2VyQ2xhc3M6CiAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgVXNlckludChpbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgQmFzZSBjbGFzcyBpcyBvYmplY3Q7IG5vIGV4dHJhIGZpZWxkcy4KKyAgICAgICAgY2xhc3MgVXNlckNsYXNzU2xvdHM6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgICAgICMgQmFzZSBjbGFzcyBpcyBmaXhlZCBzaXplIGxhcmdlciB0aGFuIG9iamVjdDsgbm8gZXh0cmEgZmllbGRzLgorICAgICAgICBjbGFzcyBVc2VyRmxvYXRTbG90cyhmbG9hdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgICAgICMgQmFzZSBjbGFzcyBpcyB2YXJpYWJsZSBzaXplOyBubyBleHRyYSBmaWVsZHMuCisgICAgICAgIGNsYXNzIFVzZXJJbnRTbG90cyhpbnQpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChnYykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKFVzZXJDbGFzcykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKFVzZXJDbGFzcygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoVXNlckludCgpKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoW10pKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChzZXQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2MuaXNfdHJhY2tlZChVc2VyQ2xhc3NTbG90cygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYy5pc190cmFja2VkKFVzZXJGbG9hdFNsb3RzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdjLmlzX3RyYWNrZWQoVXNlckludFNsb3RzKCkpKQogCiAgICAgZGVmIHRlc3RfYnVnMTA1NTgyMGIoc2VsZik6CiAgICAgICAgICMgQ29ycmVzcG9uZHMgdG8gdGVtcDJiLnB5IGluIHRoZSBidWcgcmVwb3J0LgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCBjNTc4NzVjLi4wMzIyNjc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtODAyLDI1ICs4MDIsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKICAgICBkZWYgdGVzdF9weWNmdW5jdGlvbihzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGF0ICJweS1idCIgZGlzcGxheXMgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzJwotICAgICAgICBjbWQgPSAoJ2Zyb20gdGltZSBpbXBvcnQgc2xlZXBcbicKKyAgICAgICAgIyBUZXN0ZWQgZnVuY3Rpb24gbXVzdCBub3QgYmUgZGVmaW5lZCB3aXRoIE1FVEhfTk9BUkdTIG9yIE1FVEhfTywKKyAgICAgICAgIyBvdGhlcndpc2UgY2FsbF9mdW5jdGlvbigpIGRvZXNuJ3QgY2FsbCBQeUNGdW5jdGlvbl9DYWxsKCkKKyAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IGdtdGltZVxuJwogICAgICAgICAgICAgICAgJ2RlZiBmb28oKTpcbicKLSAgICAgICAgICAgICAgICcgICAgc2xlZXAoMSlcbicKKyAgICAgICAgICAgICAgICcgICAgZ210aW1lKDEpXG4nCiAgICAgICAgICAgICAgICAnZGVmIGJhcigpOlxuJwogICAgICAgICAgICAgICAgJyAgICBmb28oKVxuJwogICAgICAgICAgICAgICAgJ2JhcigpXG4nKQogICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CiAgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX3NsZWVwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfZ210aW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2J0JywgJ3B5LWJ0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJzxidWlsdC1pbiBtZXRob2Qgc2xlZXAnLCBnZGJfb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIGdtdGltZScsIGdkYl9vdXRwdXQpCiAKICAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CiAgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX3NsZWVwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfZ210aW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LWJ0LWZ1bGwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignIzAgPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyMwIDxidWlsdC1pbiBtZXRob2QgZ210aW1lJywgZ2RiX291dHB1dCkKIAogCiBjbGFzcyBQeVByaW50VGVzdHMoRGVidWdnZXJUZXN0cyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggNWM0NTVjZC4uZmU0YjEzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNzAsNiArNzEsNDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnZhbHVlLCAyKQogCiAKK2NsYXNzIEdlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKworICAgICAgICAjIGNoZWNrIGdlbmVyYXRvciBuYW1lcworICAgICAgICBnZW4gPSBmdW5jKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sICJmdW5jIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICJHZW5lcmF0b3JUZXN0LnRlc3RfbmFtZS48bG9jYWxzPi5mdW5jIikKKworICAgICAgICAjIG1vZGlmeSBnZW5lcmF0b3IgbmFtZXMKKyAgICAgICAgZ2VuLl9fbmFtZV9fID0gIm5hbWUiCisgICAgICAgIGdlbi5fX3F1YWxuYW1lX18gPSAicXVhbG5hbWUiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywgInF1YWxuYW1lIikKKworICAgICAgICAjIGdlbmVyYXRvciBuYW1lcyBtdXN0IGJlIGEgc3RyaW5nIGFuZCBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGdlbiwgJ19fbmFtZV9fJywgMTIzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGdlbiwgJ19fcXVhbG5hbWVfXycsIDEyMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkZWxhdHRyLCBnZW4sICdfX25hbWVfXycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGVsYXR0ciwgZ2VuLCAnX19xdWFsbmFtZV9fJykKKworICAgICAgICAjIG1vZGlmeSBuYW1lcyBvZiB0aGUgZnVuY3Rpb24gY3JlYXRpbmcgdGhlIGdlbmVyYXRvcgorICAgICAgICBmdW5jLl9fcXVhbG5hbWVfXyA9ICJmdW5jX3F1YWxuYW1lIgorICAgICAgICBmdW5jLl9fbmFtZV9fID0gImZ1bmNfbmFtZSIKKyAgICAgICAgZ2VuID0gZnVuYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAiZnVuY19uYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19xdWFsbmFtZV9fLCAiZnVuY19xdWFsbmFtZSIpCisKKyAgICAgICAgIyB1bm5hbWVkIGdlbmVyYXRvcgorICAgICAgICBnZW4gPSAoeCBmb3IgeCBpbiByYW5nZSgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICI8Z2VuZXhwcj4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIkdlbmVyYXRvclRlc3QudGVzdF9uYW1lLjxsb2NhbHM+LjxnZW5leHByPiIpCisKKwogY2xhc3MgRXhjZXB0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0cyBmb3IgdGhlIGlzc3VlICMyMzM1MzogY2hlY2sgdGhhdCB0aGUgY3VycmVudGx5IGhhbmRsZWQgZXhjZXB0aW9uCiAgICAgIyBpcyBjb3JyZWN0bHkgc2F2ZWQvcmVzdG9yZWQgaW4gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCkBAIC0xNzgsNiArMjE4LDQ2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgImRvbmUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5leGNfaW5mbygpLCAoTm9uZSwgTm9uZSwgTm9uZSkpCiAKKyAgICBkZWYgdGVzdF9zdG9waXRlcmF0aW9uX3dhcm5pbmcoc2VsZik6CisgICAgICAgICMgU2VlIGFsc28gUEVQIDQ3OS4KKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiksIFwKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKworICAgICAgICAgICAgbmV4dChnZW4oKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgLiogcmFpc2VkIFN0b3BJdGVyYXRpb24iKSwgXAorICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InKQorICAgICAgICAgICAgbmV4dChnZW4oKSkKKworCisgICAgZGVmIHRlc3RfdHV0b3JpYWxfc3RvcGl0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgIyBSYWlzZSBTdG9wSXRlcmF0aW9uIiBzdG9wcyB0aGUgZ2VuZXJhdG9yIHRvbzoKKworICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgeWllbGQgMiAjIG5ldmVyIHJlYWNoZWQKKworICAgICAgICBnID0gZigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBuZXh0KGcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgICMgVGhpcyB0aW1lIFN0b3BJdGVyYXRpb24gaXNuJ3QgcmFpc2VkIGZyb20gdGhlIGdlbmVyYXRvcidzIGJvZHksCisgICAgICAgICAgICAjIGhlbmNlIG5vIHdhcm5pbmcuCisgICAgICAgICAgICBuZXh0KGcpCisKIAogdHV0b3JpYWxfdGVzdHMgPSAiIiIKIExldCdzIHRyeSBhIHNpbXBsZSBnZW5lcmF0b3I6CkBAIC0yMjQsMjYgKzMwNCw3IEBACiAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgU3RvcEl0ZXJhdGlvbgogCi0icmFpc2UgU3RvcEl0ZXJhdGlvbiIgc3RvcHMgdGhlIGdlbmVyYXRvciB0b286Ci0KLSAgICA+Pj4gZGVmIGYoKToKLSAgICAuLi4gICAgIHlpZWxkIDEKLSAgICAuLi4gICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAuLi4gICAgIHlpZWxkIDIgIyBuZXZlciByZWFjaGVkCi0gICAgLi4uCi0gICAgPj4+IGcgPSBmKCkKLSAgICA+Pj4gbmV4dChnKQotICAgIDEKLSAgICA+Pj4gbmV4dChnKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgICBTdG9wSXRlcmF0aW9uCi0gICAgPj4+IG5leHQoZykKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/Ci0gICAgU3RvcEl0ZXJhdGlvbgotCi1Ib3dldmVyLCB0aGV5IGFyZSBub3QgZXhhY3RseSBlcXVpdmFsZW50OgorSG93ZXZlciwgInJldHVybiIgYW5kIFN0b3BJdGVyYXRpb24gYXJlIG5vdCBleGFjdGx5IGVxdWl2YWxlbnQ6CiAKICAgICA+Pj4gZGVmIGcxKCk6CiAgICAgLi4uICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQppbmRleCBlNTllZDRkLi42YmE1NWRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKQEAgLTQzNCw2ICs0MzQsNDQgQEAKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKICAgICAgICAgICAgICAgICBzZWxmLnRlc3RfYWJzcGF0aCgpCiAKKyAgICBkZWYgdGVzdF9qb2luX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBDaGVjayBqb2luKCkgcmFpc2VzIGZyaWVuZGx5IFR5cGVFcnJvcnMuCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIEJ5dGVzV2FybmluZyksIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgZXJybXNnID0gIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKGInYnl0ZXMnLCAnc3RyJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIGInYnl0ZXMnKQorICAgICAgICAgICAgIyByZWdyZXNzaW9uLCBzZWUgIzE1Mzc3CisgICAgICAgICAgICBlcnJtc2cgPSByJ2pvaW5cKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCA0MikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdsaXN0Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oW10pCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQorCisgICAgZGVmIHRlc3RfcmVscGF0aF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcmVscGF0aCgpIHJhaXNlcyBmcmllbmRseSBUeXBlRXJyb3JzLgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCAoQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgZXJybXNnID0gIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGInYnl0ZXMnLCAnc3RyJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIGInYnl0ZXMnKQorICAgICAgICAgICAgZXJybXNnID0gcidyZWxwYXRoXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKDQyLCAnc3RyJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgNDIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQorCiAKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKaW5kZXggMTg1M2EyZC4uNzE0NzJjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CkBAIC0zNCw4ICszNCw4IEBACiAjID4gKiogQ2hhbmdlZCBmcm9tIHByZXZpb3VzICJyYW5nZS1hbmQtYS1oYWxmIiB0byAibm9uZSI7IHRoZQogIyA+IHJhbmdlLWFuZC1hLWhhbGYgY2hlY2tpbmcgd2Fzbid0IHBhcnRpY3VsYXJseSB1c2VmdWwuCiAjCi0jIFBsdXMgYSBDIEFQSSBvciB0d28sIGUuZy4gUHlJbnRfQXNMb25nTWFzaygpIC0+Ci0jIHVuc2lnbmVkIGxvbmcgYW5kIFB5SW50X0FzTG9uZ0xvbmdNYXNrKCkgLT4gdW5zaWduZWQKKyMgUGx1cyBhIEMgQVBJIG9yIHR3bywgZS5nLiBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgLT4KKyMgdW5zaWduZWQgbG9uZyBhbmQgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soKSAtPiB1bnNpZ25lZAogIyBsb25nIGxvbmcgKGlmIHRoYXQgZXhpc3RzKS4KIAogTEFSR0UgPSAweDdGRkZGRkZGCkBAIC00ODIsNyArNDgyLDcgQEAKICAgICBkZWYgdGVzdF9zKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19zCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zKCdhYmNceGU5JyksIGInYWJjXHhjM1x4YTknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfcywgJ251bDpcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfcywgJ251bDpcMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCBiJ2J5dGVzJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3MsIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfcywgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKQEAgLTUwOSw3ICs1MDksNyBAQAogICAgIGRlZiB0ZXN0X3ooc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3oKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3ooJ2FiY1x4ZTknKSwgYidhYmNceGMzXHhhOScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc196LCAnbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc196LCAnbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osIGInYnl0ZXMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeiwgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc196LCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQpAQCAtNTM3LDcgKzUzNyw3IEBACiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3kKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksICdhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3koYidieXRlcycpLCBiJ2J5dGVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIGInbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc195LCBiJ251bDpcMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc195LCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc195LCBOb25lKQpAQCAtNTc3LDcgKzU3Nyw3IEBACiAgICAgZGVmIHRlc3RfdShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfdQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfdSgnYWJjXHhlOScpLCAnYWJjXHhlOScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191LCAnbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc191LCAnbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsIGInYnl0ZXMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfdSwgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191LCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQpAQCAtNTk1LDcgKzU5NSw3IEBACiAgICAgZGVmIHRlc3RfWihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfWgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfWignYWJjXHhlOScpLCAnYWJjXHhlOScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19aLCAnbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19aLCAnbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osIGInYnl0ZXMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfWiwgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19aLCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRvcHQucHkgYi9MaWIvdGVzdC90ZXN0X2dldG9wdC5weQppbmRleCBmYTU3MDFmLi45Mjc1ZGM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldG9wdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldG9wdC5weQpAQCAtMSw3ICsxLDcgQEAKICMgdGVzdF9nZXRvcHQucHkKICMgRGF2aWQgR29vZGdlciA8ZGdvb2RnZXJAYmlnZm9vdC5jb20+IDIwMDAtMDgtMTkKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl9kb2N0ZXN0LCBydW5fdW5pdHRlc3QsIEVudmlyb25tZW50VmFyR3VhcmQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fZG9jdGVzdCwgRW52aXJvbm1lbnRWYXJHdWFyZAogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBnZXRvcHQKQEAgLTE4MCw4ICsxODAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvbmdvcHRzLCBbKCctLWhlbHAnLCAneCcpXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZ2V0b3B0LkdldG9wdEVycm9yLCBnZXRvcHQuZ2V0b3B0LCBbJy0taGVscD0nXSwgJycsIFsnaGVscCddKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEdldG9wdFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKaW5kZXggMjczN2U4MS4uZGU2MTBjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQpAQCAtMzMsNiArMzMsNTUgQEAKIGNpQlVRVWdLZEhKblozSnJaeUI2Y21abWJuUnlJSEJ1WjI1NVluUWdlWFp2Wlc1bGJDNEFZbUZqYjI0QWQybHVheUIzYVc1ckFBPT0KICcnJwogCisjIFRoaXMgZGF0YSBjb250YWlucyBhbiBpbnZhbGlkIG1ham9yIHZlcnNpb24gbnVtYmVyICg1KQorIyBBbiB1bmV4cGVjdGVkIG1ham9yIHZlcnNpb24gbnVtYmVyIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFuIGVycm9yIHdoZW4KKyMgcGFyc2luZyBhIC5tbyBmaWxlCisKK0dOVV9NT19EQVRBX0JBRF9NQUpPUl9WRVJTSU9OID0gYicnJ1wKKzNoSUVsUUFBQlFBR0FBQUFIQUFBQUV3QUFBQUxBQUFBZkFBQUFBQUFBQUNvQUFBQUZRQUFBS2tBQUFBakFBQUF2d0FBQUtFQUFBRGoKK0FBQUFCd0FBQUlVQkFBQUxBQUFBalFFQUFFVUJBQUNaQVFBQUZnQUFBTjhDQUFBZUFBQUE5Z0lBQUtFQUFBQVZBd0FBQlFBQUFMY0QKK0FBQUpBQUFBdlFNQUFBRUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQlFBQUFBWUFBQUFDQUFBQUFGSmgKK2VXMXZibVFnVEhWNGRYSjVJRmxoWTJndGRBQlVhR1Z5WlNCcGN5QWxjeUJtYVd4bEFGUm9aWEpsSUdGeVpTQWxjeUJtYVd4bGN3QlUKK2FHbHpJRzF2WkhWc1pTQndjbTkyYVdSbGN5QnBiblJsY201aGRHbHZibUZzYVhwaGRHbHZiaUJoYm1RZ2JHOWpZV3hwZW1GMGFXOXUKK0NuTjFjSEJ2Y25RZ1ptOXlJSGx2ZFhJZ1VIbDBhRzl1SUhCeWIyZHlZVzF6SUdKNUlIQnliM1pwWkdsdVp5QmhiaUJwYm5SbGNtWmgKK1kyVWdkRzhnZEdobElFZE9WUXBuWlhSMFpYaDBJRzFsYzNOaFoyVWdZMkYwWVd4dlp5QnNhV0p5WVhKNUxnQnRkV3hzZFhOckFHNTEKK1pHZGxJRzUxWkdkbEFGQnliMnBsWTNRdFNXUXRWbVZ5YzJsdmJqb2dNaTR3Q2xCUExWSmxkbWx6YVc5dUxVUmhkR1U2SURJd01EQXQKK01EZ3RNamtnTVRJNk1Ua3RNRFE2TURBS1RHRnpkQzFVY21GdWMyeGhkRzl5T2lCS0xpQkVZWFpwWkNCSllzT2h3N0ZsZWlBOGFpMWsKK1lYWnBaRUJ1YjI5ekxtWnlQZ3BNWVc1bmRXRm5aUzFVWldGdE9pQllXQ0E4Y0hsMGFHOXVMV1JsZGtCd2VYUm9iMjR1YjNKblBncE4KK1NVMUZMVlpsY25OcGIyNDZJREV1TUFwRGIyNTBaVzUwTFZSNWNHVTZJSFJsZUhRdmNHeGhhVzQ3SUdOb1lYSnpaWFE5YVhOdkxUZzQKK05Ua3RNUXBEYjI1MFpXNTBMVlJ5WVc1elptVnlMVVZ1WTI5a2FXNW5PaUJ1YjI1bENrZGxibVZ5WVhSbFpDMUNlVG9nY0hsblpYUjAKK1pYaDBMbkI1SURFdU1RcFFiSFZ5WVd3dFJtOXliWE02SUc1d2JIVnlZV3h6UFRJN0lIQnNkWEpoYkQxdUlUMHhPd29BVkdoeWIyRjAKK2QyOWlZbXhsY2lCTllXNW5jbTkyWlFCSVlYa2dKWE1nWm1samFHVnlid0JJWVhrZ0pYTWdabWxqYUdWeWIzTUFSM1YyWmlCNlluRm8KK2VYSWdZMlZpYVhaeGNtWWdkbUZuY21WaGJtZDJZbUZ1ZVhadGJtZDJZbUVnYm1GeElIbGljRzU1ZG0xdVozWmlZUXBtYUdOalltVm4KK0lITmlaU0JzWW1obElFTnNaM1ZpWVNCalpXSjBaVzU2WmlCdmJDQmpaV0pwZG5GMllYUWdibUVnZG1GbmNtVnpibkJ5SUdkaUlHZDEKK2NpQlVRVWdLZEhKblozSnJaeUI2Y21abWJuUnlJSEJ1WjI1NVluUWdlWFp2Wlc1bGJDNEFZbUZqYjI0QWQybHVheUIzYVc1ckFBPT0KKycnJworCisjIFRoaXMgZGF0YSBjb250YWlucyBhbiBpbnZhbGlkIG1pbm9yIHZlcnNpb24gbnVtYmVyICg3KQorIyBBbiB1bmV4cGVjdGVkIG1pbm9yIHZlcnNpb24gbnVtYmVyIG9ubHkgaW5kaWNhdGVzIHRoYXQgc29tZSBvZiB0aGUgZmlsZSdzCisjIGNvbnRlbnRzIG1heSBub3QgYmUgYWJsZSB0byBiZSByZWFkLiBJdCBkb2VzIG5vdCBpbmRpY2F0ZSBhbiBlcnJvci4KKworR05VX01PX0RBVEFfQkFEX01JTk9SX1ZFUlNJT04gPSBiJycnXAorM2hJRWxRY0FBQUFHQUFBQUhBQUFBRXdBQUFBTEFBQUFmQUFBQUFBQUFBQ29BQUFBRlFBQUFLa0FBQUFqQUFBQXZ3QUFBS0VBQUFEagorQUFBQUJ3QUFBSVVCQUFBTEFBQUFqUUVBQUVVQkFBQ1pBUUFBRmdBQUFOOENBQUFlQUFBQTlnSUFBS0VBQUFBVkF3QUFCUUFBQUxjRAorQUFBSkFBQUF2UU1BQUFFQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFCUUFBQUFZQUFBQUNBQUFBQUZKaAorZVcxdmJtUWdUSFY0ZFhKNUlGbGhZMmd0ZEFCVWFHVnlaU0JwY3lBbGN5Qm1hV3hsQUZSb1pYSmxJR0Z5WlNBbGN5Qm1hV3hsY3dCVQorYUdseklHMXZaSFZzWlNCd2NtOTJhV1JsY3lCcGJuUmxjbTVoZEdsdmJtRnNhWHBoZEdsdmJpQmhibVFnYkc5allXeHBlbUYwYVc5dQorQ25OMWNIQnZjblFnWm05eUlIbHZkWElnVUhsMGFHOXVJSEJ5YjJkeVlXMXpJR0o1SUhCeWIzWnBaR2x1WnlCaGJpQnBiblJsY21aaAorWTJVZ2RHOGdkR2hsSUVkT1ZRcG5aWFIwWlhoMElHMWxjM05oWjJVZ1kyRjBZV3h2WnlCc2FXSnlZWEo1TGdCdGRXeHNkWE5yQUc1MQorWkdkbElHNTFaR2RsQUZCeWIycGxZM1F0U1dRdFZtVnljMmx2YmpvZ01pNHdDbEJQTFZKbGRtbHphVzl1TFVSaGRHVTZJREl3TURBdAorTURndE1qa2dNVEk2TVRrdE1EUTZNREFLVEdGemRDMVVjbUZ1YzJ4aGRHOXlPaUJLTGlCRVlYWnBaQ0JKWXNPaHc3RmxlaUE4YWkxaworWVhacFpFQnViMjl6TG1aeVBncE1ZVzVuZFdGblpTMVVaV0Z0T2lCWVdDQThjSGwwYUc5dUxXUmxka0J3ZVhSb2IyNHViM0puUGdwTgorU1UxRkxWWmxjbk5wYjI0NklERXVNQXBEYjI1MFpXNTBMVlI1Y0dVNklIUmxlSFF2Y0d4aGFXNDdJR05vWVhKelpYUTlhWE52TFRnNAorTlRrdE1RcERiMjUwWlc1MExWUnlZVzV6Wm1WeUxVVnVZMjlrYVc1bk9pQnViMjVsQ2tkbGJtVnlZWFJsWkMxQ2VUb2djSGxuWlhSMAorWlhoMExuQjVJREV1TVFwUWJIVnlZV3d0Um05eWJYTTZJRzV3YkhWeVlXeHpQVEk3SUhCc2RYSmhiRDF1SVQweE93b0FWR2h5YjJGMAorZDI5aVlteGxjaUJOWVc1bmNtOTJaUUJJWVhrZ0pYTWdabWxqYUdWeWJ3QklZWGtnSlhNZ1ptbGphR1Z5YjNNQVIzVjJaaUI2WW5GbworZVhJZ1kyVmlhWFp4Y21ZZ2RtRm5jbVZoYm1kMlltRnVlWFp0Ym1kMlltRWdibUZ4SUhsaWNHNTVkbTF1WjNaaVlRcG1hR05qWW1WbgorSUhOaVpTQnNZbWhsSUVOc1ozVmlZU0JqWldKMFpXNTZaaUJ2YkNCalpXSnBkbkYyWVhRZ2JtRWdkbUZuY21WemJuQnlJR2RpSUdkMQorY2lCVVFVZ0tkSEpuWjNKclp5QjZjbVptYm5SeUlIQnVaMjU1WW5RZ2VYWnZaVzVsYkM0QVltRmpiMjRBZDJsdWF5QjNhVzVyQUE9PQorJycnCisKKwogVU1PX0RBVEEgPSBiJycnXAogM2hJRWxRQUFBQUFDQUFBQUhBQUFBQ3dBQUFBRkFBQUFQQUFBQUFBQUFBQlFBQUFBQkFBQUFGRUFBQUFQQVFBQVZnQUFBQVFBQUFCbQogQVFBQUFRQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFZV0xEbmdCUWNtOXFaV04wTFVsa0xWWmxjbk5wYjI0NklESXVNQXBRVHkxUwpAQCAtNTYsNiArMTA1LDggQEAKIAogTE9DQUxFRElSID0gb3MucGF0aC5qb2luKCd4eCcsICdMQ19NRVNTQUdFUycpCiBNT0ZJTEUgPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAnZ2V0dGV4dC5tbycpCitNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04gPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAnZ2V0dGV4dF9iYWRfbWFqb3JfdmVyc2lvbi5tbycpCitNT0ZJTEVfQkFEX01JTk9SX1ZFUlNJT04gPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAnZ2V0dGV4dF9iYWRfbWlub3JfdmVyc2lvbi5tbycpCiBVTU9GSUxFID0gb3MucGF0aC5qb2luKExPQ0FMRURJUiwgJ3VnZXR0ZXh0Lm1vJykKIE1NT0ZJTEUgPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAnbWV0YWRhdGEubW8nKQogCkBAIC02Niw2ICsxMTcsMTAgQEAKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKExPQ0FMRURJUikKICAgICAgICAgd2l0aCBvcGVuKE1PRklMRSwgJ3diJykgYXMgZnA6CiAgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoR05VX01PX0RBVEEpKQorICAgICAgICB3aXRoIG9wZW4oTU9GSUxFX0JBRF9NQUpPUl9WRVJTSU9OLCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGJhc2U2NC5kZWNvZGVieXRlcyhHTlVfTU9fREFUQV9CQURfTUFKT1JfVkVSU0lPTikpCisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01JTk9SX1ZFUlNJT04sICd3YicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYmFzZTY0LmRlY29kZWJ5dGVzKEdOVV9NT19EQVRBX0JBRF9NSU5PUl9WRVJTSU9OKSkKICAgICAgICAgd2l0aCBvcGVuKFVNT0ZJTEUsICd3YicpIGFzIGZwOgogICAgICAgICAgICAgZnAud3JpdGUoYmFzZTY0LmRlY29kZWJ5dGVzKFVNT19EQVRBKSkKICAgICAgICAgd2l0aCBvcGVuKE1NT0ZJTEUsICd3YicpIGFzIGZwOgpAQCAtMTcyLDYgKzIyNywyMSBAQAogICAgIGRlZiB0ZXN0X3RleHRkb21haW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0dGV4dC50ZXh0ZG9tYWluKCksICdnZXR0ZXh0JykKIAorICAgIGRlZiB0ZXN0X2JhZF9tYWpvcl92ZXJzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oTU9GSUxFX0JBRF9NQUpPUl9WRVJTSU9OLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZ2V0dGV4dC5HTlVUcmFuc2xhdGlvbnMoZnApCisKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNlcHRpb24uZXJybm8sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y2VwdGlvbi5zdHJlcnJvciwgIkJhZCB2ZXJzaW9uIG51bWJlciA1IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9uLmZpbGVuYW1lLCBNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04pCisKKyAgICBkZWYgdGVzdF9iYWRfbWlub3JfdmVyc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKE1PRklMRV9CQURfTUlOT1JfVkVSU0lPTiwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgbm8gZXJyb3IgaXMgdGhyb3duIHdpdGggYSBiYWQgbWlub3IgdmVyc2lvbiBudW1iZXIKKyAgICAgICAgICAgIGdldHRleHQuR05VVHJhbnNsYXRpb25zKGZwKQorCiAgICAgZGVmIHRlc3Rfc29tZV90cmFuc2xhdGlvbnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICAjIHRlc3Qgc29tZSB0cmFuc2xhdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQppbmRleCBhNWFiOGQ2Li4yMWIwMTUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dsb2IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CkBAIC00LDggKzQsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBjcmVhdGVfZW1wdHlfZmlsZSkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoVEVTVEZOLCBza2lwX3VubGVzc19zeW1saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgY3JlYXRlX2VtcHR5X2ZpbGUsIGNoYW5nZV9jd2QpCiAKIAogY2xhc3MgR2xvYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzLDYgKzEzLDkgQEAKICAgICBkZWYgbm9ybShzZWxmLCAqcGFydHMpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAqcGFydHMpKQogCisgICAgZGVmIGpvaW5zKHNlbGYsICp0dXBsZXMpOgorICAgICAgICByZXR1cm4gW29zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICpwYXJ0cykgZm9yIHBhcnRzIGluIHR1cGxlc10KKwogICAgIGRlZiBta3RlbXAoc2VsZiwgKnBhcnRzKToKICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLm5vcm0oKnBhcnRzKQogICAgICAgICBiYXNlLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKQEAgLTM4LDE3ICs0MSwxNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRlbXBkaXIpCiAKLSAgICBkZWYgZ2xvYihzZWxmLCAqcGFydHMpOgorICAgIGRlZiBnbG9iKHNlbGYsICpwYXJ0cywgKiprd2FyZ3MpOgogICAgICAgICBpZiBsZW4ocGFydHMpID09IDE6CiAgICAgICAgICAgICBwYXR0ZXJuID0gcGFydHNbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhdHRlcm4gPSBvcy5wYXRoLmpvaW4oKnBhcnRzKQogICAgICAgICBwID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgcGF0dGVybikKLSAgICAgICAgcmVzID0gZ2xvYi5nbG9iKHApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKHApKSwgcmVzKQorICAgICAgICByZXMgPSBnbG9iLmdsb2IocCwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKHAsICoqa3dhcmdzKSksIHJlcykKICAgICAgICAgYnJlcyA9IFtvcy5mc2VuY29kZSh4KSBmb3IgeCBpbiByZXNdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYi5nbG9iKG9zLmZzZW5jb2RlKHApKSwgYnJlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGdsb2IuaWdsb2Iob3MuZnNlbmNvZGUocCkpKSwgYnJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iLmdsb2Iob3MuZnNlbmNvZGUocCksICoqa3dhcmdzKSwgYnJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGdsb2IuaWdsb2Iob3MuZnNlbmNvZGUocCksICoqa3dhcmdzKSksIGJyZXMpCiAgICAgICAgIHJldHVybiByZXMKIAogICAgIGRlZiBhc3NlcnRTZXF1ZW5jZXNFcXVhbF9ub29yZGVyKHNlbGYsIGwxLCBsMik6CkBAIC0xOTIsOSArMTk1LDExOCBAQAogICAgICAgICBjaGVjaygnLy8/L2M6Lz8nLCAnLy8/L2M6L1s/XScpCiAgICAgICAgIGNoZWNrKCcvLyovKi8qJywgJy8vKi8qL1sqXScpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoR2xvYlRlc3RzKQorICAgIGRlZiByZ2xvYihzZWxmLCAqcGFydHMsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2xvYigqcGFydHMsIHJlY3Vyc2l2ZT1UcnVlLCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9nbG9iKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0U2VxdWVuY2VzRXF1YWxfbm9vcmRlcgorICAgICAgICBmdWxsID0gWygnWlpaJywpLAorICAgICAgICAgICAgICAgICgnYScsKSwgKCdhJywgJ0QnKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCAnYmNkJyksCisgICAgICAgICAgICAgICAgKCdhJywgJ2JjZCcsICdFRicpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnLCAnZWZnJyksCisgICAgICAgICAgICAgICAgKCdhJywgJ2JjZCcsICdlZmcnLCAnaGEnKSwKKyAgICAgICAgICAgICAgICAoJ2FhYScsKSwgKCdhYWEnLCAnenp6RicpLAorICAgICAgICAgICAgICAgICgnYWFiJywpLCAoJ2FhYicsICdGJyksCisgICAgICAgICAgICAgICBdCisgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBmdWxsICs9IFsoJ3N5bTEnLCksICgnc3ltMicsKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsICdFRicpLAorICAgICAgICAgICAgICAgICAgICAgKCdzeW0zJywgJ2VmZycpLAorICAgICAgICAgICAgICAgICAgICAgKCdzeW0zJywgJ2VmZycsICdoYScpLAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJyksIHNlbGYuam9pbnMoKCcnLCksICpmdWxsKSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignLicsICcqKicpLCBzZWxmLmpvaW5zKCgnLicsJycpLAorICAgICAgICAgICAgKigoJy4nLCkgKyBpIGZvciBpIGluIGZ1bGwpKSkKKyAgICAgICAgZGlycyA9IFsoJ2EnLCAnJyksICgnYScsICdiY2QnLCAnJyksICgnYScsICdiY2QnLCAnZWZnJywgJycpLAorICAgICAgICAgICAgICAgICgnYWFhJywgJycpLCAoJ2FhYicsICcnKV0KKyAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIGRpcnMgKz0gWygnc3ltMycsICcnKSwgKCdzeW0zJywgJ2VmZycsICcnKV0KKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnJyksIHNlbGYuam9pbnMoKCcnLCksICpkaXJzKSkKKworICAgICAgICBlcShzZWxmLnJnbG9iKCdhJywgJyoqJyksIHNlbGYuam9pbnMoCisgICAgICAgICAgICAoJ2EnLCAnJyksICgnYScsICdEJyksICgnYScsICdiY2QnKSwgKCdhJywgJ2JjZCcsICdFRicpLAorICAgICAgICAgICAgKCdhJywgJ2JjZCcsICdlZmcnKSwgKCdhJywgJ2JjZCcsICdlZmcnLCAnaGEnKSkpCisgICAgICAgIGVxKHNlbGYucmdsb2IoJ2EqKicpLCBzZWxmLmpvaW5zKCgnYScsKSwgKCdhYWEnLCksICgnYWFiJywpKSkKKyAgICAgICAgZXhwZWN0ID0gWygnYScsICdiY2QnLCAnRUYnKV0KKyAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIGV4cGVjdCArPSBbKCdzeW0zJywgJ0VGJyldCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJ0VGJyksIHNlbGYuam9pbnMoKmV4cGVjdCkpCisgICAgICAgIGV4cGVjdCA9IFsoJ2EnLCAnYmNkJywgJ0VGJyksICgnYWFhJywgJ3p6ekYnKSwgKCdhYWInLCAnRicpXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZXhwZWN0ICs9IFsoJ3N5bTMnLCAnRUYnKV0KKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnKkYnKSwgc2VsZi5qb2lucygqZXhwZWN0KSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnKkYnLCAnJyksIFtdKQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICdiY2QnLCAnKicpLCBzZWxmLmpvaW5zKAorICAgICAgICAgICAgKCdhJywgJ2JjZCcsICdFRicpLCAoJ2EnLCAnYmNkJywgJ2VmZycpKSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignYScsICcqKicsICdiY2QnKSwgc2VsZi5qb2lucygoJ2EnLCAnYmNkJykpKQorCisgICAgICAgIHByZWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5jdXJkaXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKHNlbGYudGVtcGRpcikKKyAgICAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYignKionLCByZWN1cnNpdmU9VHJ1ZSksIFtqb2luKCppKSBmb3IgaSBpbiBmdWxsXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsICcnKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKCppKSBmb3IgaSBpbiBkaXJzXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsJ3p6KkYnKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKCdhYWEnLCAnenp6RicpXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYignKip6eipGJywgcmVjdXJzaXZlPVRydWUpLCBbXSkKKyAgICAgICAgICAgIGV4cGVjdCA9IFtqb2luKCdhJywgJ2JjZCcsICdFRicpXQorICAgICAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgICAgICBleHBlY3QgKz0gW2pvaW4oJ3N5bTMnLCAnRUYnKV0KKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsICdFRicpLCByZWN1cnNpdmU9VHJ1ZSksIGV4cGVjdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKHByZWRpcikKKworCitAc2tpcF91bmxlc3Nfc3ltbGluaworY2xhc3MgU3ltbGlua0xvb3BHbG9iVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2VsZmxpbmsoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSBURVNURk4gKyAiX2RpciIKKyAgICAgICAgb3MubWFrZWRpcnModGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHRlbXBkaXIpCisgICAgICAgIHdpdGggY2hhbmdlX2N3ZCh0ZW1wZGlyKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKCdkaXInKQorICAgICAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKCdkaXInLCAnZmlsZScpKQorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5jdXJkaXIsIG9zLnBhdGguam9pbignZGlyJywgJ2xpbmsnKSkKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYignKionLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBsZW4oc2V0KHJlc3VsdHMpKSkKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZXQocmVzdWx0cykKKyAgICAgICAgICAgIGRlcHRoID0gMAorICAgICAgICAgICAgd2hpbGUgcmVzdWx0czoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCooWydkaXInXSArIFsnbGluayddICogZGVwdGgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oJyoqJywgJ2ZpbGUnKSwgcmVjdXJzaXZlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgbGVuKHNldChyZXN1bHRzKSkpCisgICAgICAgICAgICByZXN1bHRzID0gc2V0KHJlc3VsdHMpCisgICAgICAgICAgICBkZXB0aCA9IDAKKyAgICAgICAgICAgIHdoaWxlIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqKFsnZGlyJ10gKyBbJ2xpbmsnXSAqIGRlcHRoICsgWydmaWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oJyoqJywgJycpLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBsZW4oc2V0KHJlc3VsdHMpKSkKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZXQocmVzdWx0cykKKyAgICAgICAgICAgIGRlcHRoID0gMAorICAgICAgICAgICAgd2hpbGUgcmVzdWx0czoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCooWydkaXInXSArIFsnbGluayddICogZGVwdGggKyBbJyddKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHJlc3VsdHMpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgICAgICBkZXB0aCArPSAxCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5IGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CmluZGV4IDcwZDg1YjEuLjJhZjczOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKQEAgLTEsNyArMSw4IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDEsIGdyYW1tYXIuCiAjIFRoaXMganVzdCB0ZXN0cyB3aGV0aGVyIHRoZSBwYXJzZXIgYWNjZXB0cyB0aGVtIGFsbC4KIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY2hlY2tfc3ludGF4X2Vycm9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yCitpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiAjIHRlc3RpbmcgaW1wb3J0ICoKQEAgLTIwNSw2ICsyMDYsNyBAQAogICAgICAgICBkMDEoMSkKICAgICAgICAgZDAxKCooMSwpKQogICAgICAgICBkMDEoKip7J2EnOjJ9KQorICAgICAgICBkMDEoKip7J2EnOjJ9IG9yIHt9KQogICAgICAgICBkZWYgZDExKGEsIGI9MSk6IHBhc3MKICAgICAgICAgZDExKDEpCiAgICAgICAgIGQxMSgxLCAyKQpAQCAtMjk2LDggKzI5OCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMSwgeD0yLCAqWzMsIDRdLCB5PTUpLCAoKDEsIDMsIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsneCc6MiwgJ3knOjV9KSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJmKDEsICooMiwzKSwgNCkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMSwgKigyLDMpLCA0KSwgKCgxLCAyLCAzLCA0KSwge30pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImYoMSwgeD0yLCAqKDMsNCksIHg9NSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoKip7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKSwgeydlZ2dzJzonc2NyYW1ibGVkJywgJ3NwYW0nOidmcmllZCd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKHNwYW09J2ZyaWVkJywgKip7J2VnZ3MnOidzY3JhbWJsZWQnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgpLCB7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pKQogCiAgICAgICAgICMgYXJndW1lbnQgYW5ub3RhdGlvbiB0ZXN0cwogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCkBAIC0xMDE2LDkgKzEwMjIsMTA2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKEZhbHNlIGlzIDIpIGlzIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRmFsc2UgaXMgMiBpcyAzKQogCisgICAgZGVmIHRlc3RfbWF0cml4X211bChzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBhIGNvbXByZWhlbnNpdmUgdGVzdCwgcmF0aGVyIGp1c3QgdG8gYmUgZmV3CisgICAgICAgICMgc2FtcGxlcyBvZiB0aGUgQCBvcGVyYXRvciBpbiB0ZXN0X2dyYW1tYXIucHkuCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19tYXRtdWxfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNAorICAgICAgICAgICAgZGVmIF9faW1hdG11bF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHNlbGYub3RoZXIgPSBvCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgbSA9IE0oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0gQCBtLCA0KQorICAgICAgICBtIEA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVG9rZW5UZXN0cywgR3JhbW1hclRlc3RzKQorICAgIGRlZiB0ZXN0X2FzeW5jX2F3YWl0KHNlbGYpOgorICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgYXdhaXQgPSAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmMsIDEpCisKKyAgICAgICAgZGVmIGFzeW5jKCk6CisgICAgICAgICAgICBub25sb2NhbCBhd2FpdAorICAgICAgICAgICAgYXdhaXQgPSAxMAorICAgICAgICBhc3luYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQsIDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChhc3luYy5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKworICAgICAgICBhc3luYyBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZGVmIHN1bSgpOgorICAgICAgICAgICAgICAgIGFzeW5jID0gMQorICAgICAgICAgICAgICAgIGF3YWl0ID0gNDEKKyAgICAgICAgICAgICAgICByZXR1cm4gYXN5bmMgKyBhd2FpdAorCisgICAgICAgICAgICBpZiAxOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWVvYmooKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5fX25hbWVfXywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbCh0ZXN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorCisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBzZXRhdHRyKGZ1bmMsICdfbWFya2VkJywgVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgQGRlY29yYXRvcgorICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKKyAgICAgICAgICAgIHJldHVybiAyMgorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdDIuX21hcmtlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Mi5fX25hbWVfXywgJ3Rlc3QyJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wodGVzdDIuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19mb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIERvbmUoRXhjZXB0aW9uKTogcGFzcworCisgICAgICAgIGNsYXNzIEFJdGVyOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSXRlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGZvciBpLCBqIGluIEFJdGVyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUl0ZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHJhaXNlIERvbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERvbmUpOgorICAgICAgICAgICAgZm9vKCkuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfYXN5bmNfd2l0aChzZWxmKToKKyAgICAgICAgY2xhc3MgRG9uZShFeGNlcHRpb24pOiBwYXNzCisKKyAgICAgICAgY2xhc3MgbWFuYWdlcjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoMSwgMikKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCkgYXMgeDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyAoeCwgeSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCksIG1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCkgYXMgeToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgRG9uZQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRG9uZSk6CisgICAgICAgICAgICBmb28oKS5zZW5kKE5vbmUpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncnAucHkgYi9MaWIvdGVzdC90ZXN0X2dycC5weQppbmRleCA3NDkwNDFjLi4yNzJiMDg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dycC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dycC5weQpAQCAtOTIsOCArOTIsNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHcm91cERhdGFiYXNlVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCBiNDE3MDQ0Li5kODQwOGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBhcnJheQogZ3ppcCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnZ3ppcCcpCiAKIGRhdGExID0gYiIiIiAgaW50IGxlbmd0aD1ERUZBVUxUQUxMT0MsIGVyciA9IFpfT0s7CkBAIC03NywxNSArNzgsMTggQEAKICAgICBkZWYgdGVzdF93cml0ZV9ieXRlYXJyYXkoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfYW5kX3JlYWRfYmFjayhieXRlYXJyYXkoZGF0YTEgKiA1MCkpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9hcnJheShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9hbmRfcmVhZF9iYWNrKGFycmF5LmFycmF5KCdJJywgZGF0YTEgKiA0MCkpCisKICAgICBkZWYgdGVzdF93cml0ZV9pbmNvbXBhdGlibGVfdHlwZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgbm9uLWJ5dGVzLWxpa2UgdHlwZXMgcmFpc2UgVHlwZUVycm9yLgogICAgICAgICAjIElzc3VlICMyMTU2MDogYXR0ZW1wdHMgdG8gd3JpdGUgaW5jb21wYXRpYmxlIHR5cGVzCiAgICAgICAgICMgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHN0YXRlIG9mIHRoZSBmaWxlb2JqZWN0CiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIGYud3JpdGUoJ2EnKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJycpCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgZi53cml0ZShbMV0pCisgICAgICAgICAgICAgICAgZi53cml0ZShbXSkKICAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZGF0YTEpCkBAIC0xMTksNyArMTIzLDEwIEBACiAgICAgICAgICMgV3JpdGUgdG8gYSBmaWxlLCBvcGVuIGl0IGZvciByZWFkaW5nLCB0aGVuIGNsb3NlIGl0LgogICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQogICAgICAgICBmID0gZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpCisgICAgICAgIGZpbGVvYmogPSBmLmZpbGVvYmoKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGYucmVhZCgxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpAQCAtMTI4LDcgKzEzNSwxMCBAQAogICAgICAgICAgICAgZi50ZWxsKCkKICAgICAgICAgIyBPcGVuIHRoZSBmaWxlIGZvciB3cml0aW5nLCB0aGVuIGNsb3NlIGl0LgogICAgICAgICBmID0gZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAndycpCisgICAgICAgIGZpbGVvYmogPSBmLmZpbGVvYmoKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlb2JqLmNsb3NlZCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGYud3JpdGUoYicnKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpAQCAtMjY3LDkgKzI3NywxMCBAQAogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3cnLCBtdGltZSA9IG10aW1lKSBhcyBmV3JpdGU6CiAgICAgICAgICAgICBmV3JpdGUud3JpdGUoZGF0YTEpCiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBmUmVhZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGZSZWFkLCAnbXRpbWUnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZSZWFkLm10aW1lKQogICAgICAgICAgICAgZGF0YVJlYWQgPSBmUmVhZC5yZWFkKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVJlYWQsIGRhdGExKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZlJlYWQsICdtdGltZScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmUmVhZC5tdGltZSwgbXRpbWUpCiAKICAgICBkZWYgdGVzdF9tZXRhZGF0YShzZWxmKToKQEAgLTQxMiw2ICs0MjMsMTggQEAKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExICogNTApCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CisgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgorICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKKworICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQorICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIG1heF9kZWNvbXAgPSAxICsgaW8uREVGQVVMVF9CVUZGRVJfU0laRQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAorICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKKwogICAgICMgVGVzdGluZyBjb21wcmVzcy9kZWNvbXByZXNzIHNob3J0Y3V0IGZ1bmN0aW9ucwogCiAgICAgZGVmIHRlc3RfY29tcHJlc3Moc2VsZik6CkBAIC00NTksNyArNDgyLDcgQEAKICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCiAgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmLmZpbGVvYmoucHJlcGVuZCgpCisgICAgICAgICAgICBmLl9idWZmZXIucmF3Ll9mcC5wcmVwZW5kKCkKIAogY2xhc3MgVGVzdE9wZW4oQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weSBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQppbmRleCBmNjQ3YzZmLi5hYTRlZmJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBIYXNoYWJsZQogCiBJU182NEJJVCA9IHN5cy5tYXhzaXplID4gMioqMzIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CmluZGV4IGI1YTJmZDguLmI3ZTgyNTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQpAQCAtNiwxNCArNiwxNSBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCitmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIHB5X2hlYXBxID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdoZWFwcScsIGJsb2NrZWQ9WydfaGVhcHEnXSkKIGNfaGVhcHEgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2hlYXBxJywgZnJlc2g9WydfaGVhcHEnXSkKIAogIyBfaGVhcHEubmxhcmdlc3QvbnNtYWxsZXN0IGFyZSBzYXZlZCBpbiBoZWFwcS5fbmxhcmdlc3QvX3NtYWxsZXN0IHdoZW4KICMgX2hlYXBxIGlzIGltcG9ydGVkLCBzbyBjaGVjayB0aGVtIHRoZXJlCi1mdW5jX25hbWVzID0gWydoZWFwaWZ5JywgJ2hlYXBwb3AnLCAnaGVhcHB1c2gnLCAnaGVhcHB1c2hwb3AnLAotICAgICAgICAgICAgICAnaGVhcHJlcGxhY2UnLCAnX25sYXJnZXN0JywgJ19uc21hbGxlc3QnXQorZnVuY19uYW1lcyA9IFsnaGVhcGlmeScsICdoZWFwcG9wJywgJ2hlYXBwdXNoJywgJ2hlYXBwdXNocG9wJywgJ2hlYXByZXBsYWNlJywKKyAgICAgICAgICAgICAgJ19oZWFwcG9wX21heCcsICdfaGVhcHJlcGxhY2VfbWF4JywgJ19oZWFwaWZ5X21heCddCiAKIGNsYXNzIFRlc3RNb2R1bGVzKFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9weV9mdW5jdGlvbnMoc2VsZik6CkBAIC02NCw3ICs2NSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYXBbcGFyZW50cG9zXSA8PSBpdGVtKQogCiAgICAgZGVmIHRlc3RfaGVhcGlmeShzZWxmKToKLSAgICAgICAgZm9yIHNpemUgaW4gcmFuZ2UoMzApOgorICAgICAgICBmb3Igc2l6ZSBpbiBsaXN0KHJhbmdlKDMwKSkgKyBbMjAwMDBdOgogICAgICAgICAgICAgaGVhcCA9IFtyYW5kb20ucmFuZG9tKCkgZm9yIGR1bW15IGluIHJhbmdlKHNpemUpXQogICAgICAgICAgICAgc2VsZi5tb2R1bGUuaGVhcGlmeShoZWFwKQogICAgICAgICAgICAgc2VsZi5jaGVja19pbnZhcmlhbnQoaGVhcCkKQEAgLTE1MiwxMSArMTUzLDIxIEBACiAKICAgICBkZWYgdGVzdF9tZXJnZShzZWxmKToKICAgICAgICAgaW5wdXRzID0gW10KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UocmFuZG9tLnJhbmRyYW5nZSg1KSk6Ci0gICAgICAgICAgICByb3cgPSBzb3J0ZWQocmFuZG9tLnJhbmRyYW5nZSgxMDAwKSBmb3IgaiBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDEwKSkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHJhbmRvbS5yYW5kcmFuZ2UoMjUpKToKKyAgICAgICAgICAgIHJvdyA9IFtdCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDEwMCkpOgorICAgICAgICAgICAgICAgIHR1cCA9IHJhbmRvbS5jaG9pY2UoJ0FCQycpLCByYW5kb20ucmFuZHJhbmdlKC01MDAsIDUwMCkKKyAgICAgICAgICAgICAgICByb3cuYXBwZW5kKHR1cCkKICAgICAgICAgICAgIGlucHV0cy5hcHBlbmQocm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjaGFpbigqaW5wdXRzKSksIGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKmlucHV0cykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKSksIFtdKQorCisgICAgICAgIGZvciBrZXkgaW4gW05vbmUsIGl0ZW1nZXR0ZXIoMCksIGl0ZW1nZXR0ZXIoMSksIGl0ZW1nZXR0ZXIoMSwgMCldOgorICAgICAgICAgICAgZm9yIHJldmVyc2UgaW4gW0ZhbHNlLCBUcnVlXToKKyAgICAgICAgICAgICAgICBzZXFzID0gW10KKyAgICAgICAgICAgICAgICBmb3Igc2VxIGluIGlucHV0czoKKyAgICAgICAgICAgICAgICAgICAgc2Vxcy5hcHBlbmQoc29ydGVkKHNlcSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChjaGFpbigqaW5wdXRzKSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKnNlcXMsIGtleT1rZXksIHJldmVyc2U9cmV2ZXJzZSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLm1vZHVsZS5tZXJnZSgpKSwgW10pCiAKICAgICBkZWYgdGVzdF9tZXJnZV9kb2VzX25vdF9zdXBwcmVzc19pbmRleF9lcnJvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxOTAxODogSGVhcHEubWVyZ2Ugc3VwcHJlc3NlcyBJbmRleEVycm9yIGZyb20gdXNlciBnZW5lcmF0b3IKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCBjZGU1NmZkLi45ODgyNmI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC00OTMsMTQgKzQ5Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFRlc3RWZWN0b3JzVGVzdENhc2UsCi0gICAgICAgIENvbnN0cnVjdG9yVGVzdENhc2UsCi0gICAgICAgIFNhbml0eVRlc3RDYXNlLAotICAgICAgICBDb3B5VGVzdENhc2UsCi0gICAgICAgIENvbXBhcmVEaWdlc3RUZXN0Q2FzZQotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1sLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1sLnB5CmluZGV4IGQ2ZjBhZTguLjgzOWUwYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWwucHkKQEAgLTQsNyArNCw2IEBACiAKIGltcG9ydCBodG1sCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogCiBjbGFzcyBIdG1sVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IDJkNzcxYTIuLmRlOGYzZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTg1LDcgKzg1LDcgQEAKIGNsYXNzIFRlc3RDYXNlQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3IoY29udmVydF9jaGFycmVmcz1GYWxzZSkKIAogICAgIGRlZiBfcnVuX2NoZWNrKHNlbGYsIHNvdXJjZSwgZXhwZWN0ZWRfZXZlbnRzLCBjb2xsZWN0b3I9Tm9uZSk6CiAgICAgICAgIGlmIGNvbGxlY3RvciBpcyBOb25lOgpAQCAtMTA1LDIxICsxMDUsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soc291cmNlLCBldmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudENvbGxlY3RvckV4dHJhKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpKQogCi0gICAgZGVmIF9wYXJzZV9lcnJvcihzZWxmLCBzb3VyY2UpOgotICAgICAgICBkZWYgcGFyc2Uoc291cmNlPXNvdXJjZSk6Ci0gICAgICAgICAgICBwYXJzZXIgPSBzZWxmLmdldF9jb2xsZWN0b3IoKQotICAgICAgICAgICAgcGFyc2VyLmZlZWQoc291cmNlKQotICAgICAgICAgICAgcGFyc2VyLmNsb3NlKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhodG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcik6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICBwYXJzZSgpCiAKLQotY2xhc3MgSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgotICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlLCBjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQorY2xhc3MgSFRNTFBhcnNlclRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgdGVzdF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX29ubHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPD9wcm9jZXNzaW5nIGluc3RydWN0aW9uPiIsIFsKQEAgLTIwMSw5ICsxODgsNiBAQAogICAgICAgICAgICAgKCJkYXRhIiwgInRoaXMgPCB0ZXh0ID4gY29udGFpbnMgPCBiYXJlPnBvaW50eTwgYnJhY2tldHMiKSwKICAgICAgICAgICAgIF0pCiAKLSAgICBkZWYgdGVzdF9pbGxlZ2FsX2RlY2xhcmF0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoJzwhc3BhY2VyIHR5cGU9ImJsb2NrIiBoZWlnaHQ9IjI1Ij4nKQotCiAgICAgZGVmIHRlc3Rfc3RhcnR0YWdfZW5kX2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIiIiPGEgYj0nPCc+IiIiLCBbKCJzdGFydHRhZyIsICJhIiwgWygiYiIsICI8IildKV0pCiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiIiI8YSBiPSc+Jz4iIiIsIFsoInN0YXJ0dGFnIiwgImEiLCBbKCJiIiwgIj4iKV0pXSkKQEAgLTIzOCwyNSArMjIyLDYgQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKFsiPCEtLWFiYy0tIiwgIj4iXSwgb3V0cHV0KQogICAgICAgICBzZWxmLl9ydW5fY2hlY2soWyI8IS0tYWJjLS0+IiwgIiJdLCBvdXRwdXQpCiAKLSAgICBkZWYgdGVzdF9zdGFydHRhZ19qdW5rX2NoYXJzKHNlbGYpOgotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC8+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvJD4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC8iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC9hIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhPGE+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvYTxhPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8ISIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289J2JhciciKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSdiYXIiKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSc+JyIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289Jz4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiLz4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkYiAgPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiICAvPiIpCi0KICAgICBkZWYgdGVzdF92YWxpZF9kb2N0eXBlcyhzZWxmKToKICAgICAgICAgIyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1FBLzIwMDIvMDQvdmFsaWQtZHRkLWxpc3QuaHRtbAogICAgICAgICBkdGRzID0gWydIVE1MJywgICMgSFRNTDUgZG9jdHlwZQpAQCAtMjgxLDkgKzI0Niw2IEBACiAgICAgICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjwhRE9DVFlQRSAlcz4iICUgZHRkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RlY2wnLCAnRE9DVFlQRSAnICsgZHRkKV0pCiAKLSAgICBkZWYgdGVzdF9kZWNsYXJhdGlvbl9qdW5rX2NoYXJzKHNlbGYpOgotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPCFET0NUWVBFIGZvbyAkID4iKQotCiAgICAgZGVmIHRlc3Rfc3RhcnRlbmR0YWcoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPHAvPiIsIFsKICAgICAgICAgICAgICgic3RhcnRlbmR0YWciLCAicCIsIFtdKSwKQEAgLTM4NCw3ICszNDYsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soaHRtbCwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9jb252ZXJ0X2NoYXJyZWZzKHNlbGYpOgotICAgICAgICBjb2xsZWN0b3IgPSBsYW1iZGE6IEV2ZW50Q29sbGVjdG9yQ2hhcnJlZnMoY29udmVydF9jaGFycmVmcz1UcnVlKQorICAgICAgICAjIGRlZmF1bHQgdmFsdWUgZm9yIGNvbnZlcnRfY2hhcnJlZnMgaXMgbm93IFRydWUKKyAgICAgICAgY29sbGVjdG9yID0gbGFtYmRhOiBFdmVudENvbGxlY3RvckNoYXJyZWZzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbGxlY3RvcigpLmNvbnZlcnRfY2hhcnJlZnMpCiAgICAgICAgIGNoYXJyZWZzID0gWycmcXVvdDsnLCAnJiMzNDsnLCAnJiN4MjI7JywgJyZxdW90JywgJyYjMzQnLCAnJiN4MjInXQogICAgICAgICAjIGNoZWNrIGNoYXJyZWZzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHRleHQvYXR0cmlidXRlcwpAQCAtNDIxLDIzICszODQsOCBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJ25vIGNoYXJyZWZzIGhlcmUnLCBbKCdkYXRhJywgJ25vIGNoYXJyZWZzIGhlcmUnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0b3I9Y29sbGVjdG9yKCkpCiAKLQotY2xhc3MgSFRNTFBhcnNlclRvbGVyYW50VGVzdENhc2UoSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3IoY29udmVydF9jaGFycmVmcz1GYWxzZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yKCkgICMgY29udmVydF9jaGFycmVmcyBub3QgcGFzc2VkIGV4cGxpY2l0bHkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBFdmVudENvbGxlY3RvcihzdHJpY3Q9RmFsc2UpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3IpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3IoKS5lcnJvcigndGVzdCcpCi0KKyAgICAjIHRoZSByZW1haW5pbmcgdGVzdHMgd2VyZSBmb3IgdGhlICJ0b2xlcmFudCIgcGFyc2VyICh3aGljaCBpcyBub3cKKyAgICAjIHRoZSBkZWZhdWx0KSwgYW5kIGNoZWNrIHZhcmlvdXMga2luZCBvZiBicm9rZW4gbWFya3VwCiAgICAgZGVmIHRlc3RfdG9sZXJhbnRfcGFyc2luZyhzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCc8aHRtbCA8aHRtbD50ZT4+eHQmYTw8YmM8L2E+PC9odG1sPlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3JjPSJVUkw+PC8vaW1nPjwvaHRtbDwvaHRtbD4nLCBbCkBAIC02ODYsMTEgKzYzNCw3IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjayhodG1sLCBleHBlY3RlZCkKIAogCi1jbGFzcyBBdHRyaWJ1dGVzU3RyaWN0VGVzdENhc2UoVGVzdENhc2VCYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6Ci0gICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUsIGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCitjbGFzcyBBdHRyaWJ1dGVzVGVzdENhc2UoVGVzdENhc2VCYXNlKToKIAogICAgIGRlZiB0ZXN0X2F0dHJfc3ludGF4KHNlbGYpOgogICAgICAgICBvdXRwdXQgPSBbCkBAIC03NDcsMTIgKzY5MSw2IEBACiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJodG1sIiwgWygiZm9vIiwgIlx1MjBBQyZhYSZ1bnN1cHBvcnRlZDsiKV0pXSkKIAogCi0KLWNsYXNzIEF0dHJpYnV0ZXNUb2xlcmFudFRlc3RDYXNlKEF0dHJpYnV0ZXNTdHJpY3RUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCi0KICAgICBkZWYgdGVzdF9hdHRyX2Z1bmt5X25hbWVzMihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKAogICAgICAgICAgICAgIjxhICQ+PGIgJD0lPjxjIFw9Lz4iLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQppbmRleCBjN2I2ODBiLi5kM2UwNmE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQpAQCAtMSw1ICsxLDYgQEAKICMgU2ltcGxlIHRlc3Qgc3VpdGUgZm9yIGh0dHAvY29va2llcy5weQogCitpbXBvcnQgY29weQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX2RvY3Rlc3QsIGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaHR0cCBpbXBvcnQgY29va2llcwpAQCAtMTU0LDEzICsxNTUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENbJ2VnZ3MnXVsnaHR0cG9ubHknXSwgJ2ZvbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ1snZWdncyddWydzZWN1cmUnXSwgJ2JhcicpCiAKLSAgICBkZWYgdGVzdF9iYWRfYXR0cnMoc2VsZik6Ci0gICAgICAgICMgaXNzdWUgMTY2MTE6IG1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgotICAgICAgICBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQotICAgICAgICBDLmxvYWQoJ2Nvb2tpZT13aXRoOyBpbnZhbGlkOyB2ZXJzaW9uOyBzZWNvbmQ9Y29va2llOycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5vdXRwdXQoKSwKLSAgICAgICAgICAgICdTZXQtQ29va2llOiBjb29raWU9d2l0aFxyXG5TZXQtQ29va2llOiBzZWNvbmQ9Y29va2llJykKLQogICAgIGRlZiB0ZXN0X2V4dHJhX3NwYWNlcyhzZWxmKToKICAgICAgICAgQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKICAgICAgICAgQy5sb2FkKCdlZ2dzICA9ICBzY3JhbWJsZWQgIDsgIHNlY3VyZSAgOyAgcGF0aCAgPSAgYmFyICAgOyBmb289Zm9vICAgJykKQEAgLTE5NSw3ICsxODksMTAgQEAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2Nvb2tpZXMoc2VsZik6CiAgICAgICAgICMgQWNjZXB0aW5nIHRoZXNlIGNvdWxkIGJlIGEgc2VjdXJpdHkgaXNzdWUKICAgICAgICAgQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKLSAgICAgICAgZm9yIHMgaW4gKCddZm9vPXgnLCAnW2Zvbz14JywgJ2JsYWhdZm9vPXgnLCAnYmxhaFtmb289eCcpOgorICAgICAgICBmb3IgcyBpbiAoJ11mb289eCcsICdbZm9vPXgnLCAnYmxhaF1mb289eCcsICdibGFoW2Zvbz14JywKKyAgICAgICAgICAgICAgICAgICdTZXQtQ29va2llOiBmb289YmFyJywgJ1NldC1Db29raWU6IGZvbycsCisgICAgICAgICAgICAgICAgICAnZm9vPWJhcjsgYmF6JywgJ2JhejsgZm9vPWJhcicsCisgICAgICAgICAgICAgICAgICAnc2VjdXJlO2Zvbz1iYXInLCAnVmVyc2lvbj0xO2Zvbz1iYXInKToKICAgICAgICAgICAgIEMubG9hZChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KEMpLCB7fSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5vdXRwdXQoKSwgJycpCkBAIC0yMTcsNiArMjE0LDE1IEBACiBjbGFzcyBNb3JzZWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIHRoZSBNb3JzZWwgb2JqZWN0LiIiIgogCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9yc2VsLmtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9yc2VsLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb3JzZWwuY29kZWRfdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsLmtleXMoKSwgY29va2llcy5Nb3JzZWwuX3Jlc2VydmVkLmtleXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsIGluIG1vcnNlbC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICcnLCBrZXkpCisKICAgICBkZWYgdGVzdF9yZXNlcnZlZF9rZXlzKHNlbGYpOgogICAgICAgICBNID0gY29va2llcy5Nb3JzZWwoKQogICAgICAgICAjIHRlc3RzIHZhbGlkIGFuZCBpbnZhbGlkIHJlc2VydmVkIGtleXMgZm9yIE1vcnNlbHMKQEAgLTI2MCw2ICsyNjYsMTk3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhjb29raWVzLkNvb2tpZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5zZXQsIGksICclc192YWx1ZScgJSBpLCAnJXNfdmFsdWUnICUgaSkKIAorICAgIGRlZiB0ZXN0X2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidcYmtleVxiJyk6CisgICAgICAgICAgICBtb3JzZWwua2V5ID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xidmFsdWVcYicpOgorICAgICAgICAgICAgbW9yc2VsLnZhbHVlID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xiY29kZWRfdmFsdWVcYicpOgorICAgICAgICAgICAgbW9yc2VsLmNvZGVkX3ZhbHVlID0gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xiTGVnYWxDaGFyc1xiJyk6CisgICAgICAgICAgICBtb3JzZWwuc2V0KCdrZXknLCAndmFsdWUnLCAnY29kZWRfdmFsdWUnLCBMZWdhbENoYXJzPScuKicpCisKKyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgYmFzZV9jYXNlID0gKCdrZXknLCAndmFsdWUnLCAnInZhbHVlIicpCisgICAgICAgIGF0dHJpYnMgPSB7CisgICAgICAgICAgICAncGF0aCc6ICcvJywKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgICAgICAnZG9tYWluJzogJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgfQorICAgICAgICBtb3JzZWxfYSA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2EudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIG1vcnNlbF9hLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBtb3JzZWxfYiA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2IudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIG1vcnNlbF9iLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsX2EgPT0gbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsX2EgIT0gbW9yc2VsX2IpCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgKCdrZXknLCAndmFsdWUnLCAnbWlzbWF0Y2gnKSwKKyAgICAgICAgICAgICgna2V5JywgJ21pc21hdGNoJywgJyJ2YWx1ZSInKSwKKyAgICAgICAgICAgICgnbWlzbWF0Y2gnLCAndmFsdWUnLCAnInZhbHVlIicpLAorICAgICAgICApCisgICAgICAgIGZvciBjYXNlX2IgaW4gY2FzZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjYXNlX2IpOgorICAgICAgICAgICAgICAgIG1vcnNlbF9iID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICAgICAgICAgIG1vcnNlbF9iLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICAgICAgICAgIG1vcnNlbF9iLnNldCgqY2FzZV9iKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsX2EgPT0gbW9yc2VsX2IpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vcnNlbF9hICE9IG1vcnNlbF9iKQorCisgICAgICAgIG1vcnNlbF9iID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYi51cGRhdGUoYXR0cmlicykKKyAgICAgICAgbW9yc2VsX2Iuc2V0KCpiYXNlX2Nhc2UpCisgICAgICAgIG1vcnNlbF9iWydjb21tZW50J10gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vcnNlbF9hID09IG1vcnNlbF9iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsX2EgIT0gbW9yc2VsX2IpCisKKyAgICAgICAgIyB0ZXN0IG1pc21hdGNoZWQgdHlwZXMKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb29raWVzLk1vcnNlbCgpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb29raWVzLk1vcnNlbCgpICE9IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29va2llcy5Nb3JzZWwoKSA9PSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvb2tpZXMuTW9yc2VsKCkgIT0gJycpCisgICAgICAgIGl0ZW1zID0gbGlzdChjb29raWVzLk1vcnNlbCgpLml0ZW1zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29va2llcy5Nb3JzZWwoKSA9PSBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvb2tpZXMuTW9yc2VsKCkgIT0gaXRlbXMpCisKKyAgICAgICAgIyBtb3JzZWwvZGljdAorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC5zZXQoKmJhc2VfY2FzZSkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsID09IGRpY3QobW9yc2VsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb3JzZWwgIT0gZGljdChtb3JzZWwpKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgbW9yc2VsX2EgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9hLnNldCgnZm9vJywgJ2JhcicsICdiYXonKQorICAgICAgICBtb3JzZWxfYS51cGRhdGUoeworICAgICAgICAgICAgJ3ZlcnNpb24nOiAyLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgfSkKKyAgICAgICAgbW9yc2VsX2IgPSBtb3JzZWxfYS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vcnNlbF9iLCBjb29raWVzLk1vcnNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb3JzZWxfYSwgbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsX2EsIG1vcnNlbF9iKQorCisgICAgICAgIG1vcnNlbF9iID0gY29weS5jb3B5KG1vcnNlbF9hKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9yc2VsX2IsIGNvb2tpZXMuTW9yc2VsKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vcnNlbF9hLCBtb3JzZWxfYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxfYSwgbW9yc2VsX2IpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbFsnZXhwaXJlcyddID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAwKQorICAgICAgICBtb3JzZWxbJ1ZlcnNpb24nXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgbW9yc2VsWydET01BSU4nXSA9ICdleGFtcGxlLmNvbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvcik6CisgICAgICAgICAgICBtb3JzZWxbJ2ludmFsaWQnXSA9ICd2YWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaW52YWxpZCcsIG1vcnNlbCkKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZSh7CisgICAgICAgICAgICAnZG9tYWluJzogJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgfSkKKyAgICAgICAgIyB0aGlzIHNob3VsZG4ndCBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5zZXRkZWZhdWx0KCdleHBpcmVzJywgJ3ZhbHVlJyksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWwuc2V0ZGVmYXVsdCgnVmVyc2lvbicsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5zZXRkZWZhdWx0KCdET01BSU4nLCAndmFsdWUnKSwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvcik6CisgICAgICAgICAgICBtb3JzZWwuc2V0ZGVmYXVsdCgnaW52YWxpZCcsICd2YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ludmFsaWQnLCBtb3JzZWwpCisKKyAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIGF0dHJpYnMgPSB7J2V4cGlyZXMnOiAxLCAnVmVyc2lvbic6IDIsICdET01BSU4nOiAnZXhhbXBsZS5jb20nfQorICAgICAgICAjIHRlc3QgZGljdCB1cGRhdGUKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgIyB0ZXN0IGl0ZXJhYmxlIHVwZGF0ZQorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC51cGRhdGUobGlzdChhdHRyaWJzLml0ZW1zKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisgICAgICAgICMgdGVzdCBpdGVyYXRvciB1cGRhdGUKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKChrLCB2KSBmb3IgaywgdiBpbiBhdHRyaWJzLml0ZW1zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvb2tpZXMuQ29va2llRXJyb3IpOgorICAgICAgICAgICAgbW9yc2VsLnVwZGF0ZSh7J2ludmFsaWQnOiAndmFsdWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaW52YWxpZCcsIG1vcnNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb3JzZWwudXBkYXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vcnNlbC51cGRhdGUsIDApCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIG1vcnNlbF9hID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYS5zZXQoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgbW9yc2VsX2EudXBkYXRlKHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgIH0pCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIG1vcnNlbF9iID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhtb3JzZWxfYSwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb3JzZWxfYiwgY29va2llcy5Nb3JzZWwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxfYiwgbW9yc2VsX2EpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsX2IpLCBzdHIobW9yc2VsX2EpKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwgJzxNb3JzZWw6IE5vbmU9Tm9uZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWwpLCAnU2V0LUNvb2tpZTogTm9uZT1Ob25lJykKKyAgICAgICAgbW9yc2VsLnNldCgna2V5JywgJ3ZhbCcsICdjb2RlZF92YWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwgJzxNb3JzZWw6IGtleT1jb2RlZF92YWw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwgJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWwnKQorICAgICAgICBtb3JzZWwudXBkYXRlKHsKKyAgICAgICAgICAgICdwYXRoJzogJy8nLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgICAgICdkb21haW4nOiAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ21heC1hZ2UnOiAwLAorICAgICAgICAgICAgJ3NlY3VyZSc6IDAsCisgICAgICAgICAgICAndmVyc2lvbic6IDEsCisgICAgICAgIH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb3JzZWwpLAorICAgICAgICAgICAgICAgICc8TW9yc2VsOiBrZXk9Y29kZWRfdmFsOyBDb21tZW50PWZvbzsgRG9tYWluPWV4YW1wbGUuY29tOyAnCisgICAgICAgICAgICAgICAgJ01heC1BZ2U9MDsgUGF0aD0vOyBWZXJzaW9uPTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnU2V0LUNvb2tpZToga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdNYXgtQWdlPTA7IFBhdGg9LzsgVmVyc2lvbj0xJykKKyAgICAgICAgbW9yc2VsWydzZWN1cmUnXSA9IFRydWUKKyAgICAgICAgbW9yc2VsWydodHRwb25seSddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnPE1vcnNlbDoga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdIdHRwT25seTsgTWF4LUFnZT0wOyBQYXRoPS87IFNlY3VyZTsgVmVyc2lvbj0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbCksCisgICAgICAgICAgICAgICAgJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWw7IENvbW1lbnQ9Zm9vOyBEb21haW49ZXhhbXBsZS5jb207ICcKKyAgICAgICAgICAgICAgICAnSHR0cE9ubHk7IE1heC1BZ2U9MDsgUGF0aD0vOyBTZWN1cmU7IFZlcnNpb249MScpCisKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwuc2V0KCdrZXknLCAndmFsJywgJ2NvZGVkX3ZhbCcpCisgICAgICAgIG1vcnNlbFsnZXhwaXJlcyddID0gMAorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICByJzxNb3JzZWw6IGtleT1jb2RlZF92YWw7ICcKKyAgICAgICAgICAgICAgICByJ2V4cGlyZXM9XHcrLCBcZCsgXHcrIFxkKyBcZCs6XGQrOlxkKyBcdys+JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICByJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWw7ICcKKyAgICAgICAgICAgICAgICByJ2V4cGlyZXM9XHcrLCBcZCsgXHcrIFxkKyBcZCs6XGQrOlxkKyBcdysnKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KENvb2tpZVRlc3RzLCBNb3JzZWxUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCBkZjlhOWUzLi5kODA5NDE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0xOSw2ICsxOSwyNiBAQAogIyBTZWxmLXNpZ25lZCBjZXJ0IGZpbGUgZm9yIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0CiBDRVJUX3NlbGZzaWduZWRfcHl0aG9udGVzdGRvdG5ldCA9IG9zLnBhdGguam9pbihoZXJlLCAnc2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0LnBlbScpCiAKKyMgY29uc3RhbnRzIGZvciB0ZXN0aW5nIGNodW5rZWQgZW5jb2RpbmcKK2NodW5rZWRfc3RhcnQgPSAoCisgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgJ2FcclxuJworICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAnM1xyXG4nCisgICAgJ2QhIFxyXG4nCisgICAgJzhcclxuJworICAgICdhbmQgbm93IFxyXG4nCisgICAgJzIyXHJcbicKKyAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCispCitjaHVua2VkX2V4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JworY2h1bmtfZXh0ZW5zaW9uID0gIjtmb289YmFyIgorbGFzdF9jaHVuayA9ICIwXHJcbiIKK2xhc3RfY2h1bmtfZXh0ZW5kZWQgPSAiMCIgKyBjaHVua19leHRlbnNpb24gKyAiXHJcbiIKK3RyYWlsZXJzID0gIlgtRHVtbXk6IGZvb1xyXG5YLUR1bW0yOiBiYXJcclxuIgorY2h1bmtlZF9lbmQgPSAiXHJcbiIKKwogSE9TVCA9IHN1cHBvcnQuSE9TVAogCiBjbGFzcyBGYWtlU29ja2V0OgpAQCAtNTEsNiArNzEsOSBAQAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcwogCisgICAgZGVmIHNldHNvY2tvcHQoc2VsZiwgbGV2ZWwsIG9wdG5hbWUsIHZhbHVlKToKKyAgICAgICAgcGFzcworCiBjbGFzcyBFUGlwZVNvY2tldChGYWtlU29ja2V0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBwaXBlX3RyaWdnZXIpOgpAQCAtODQsNiArMTA3LDIzIEBACiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignY2FsbGVyIHRyaWVkIHRvIHJlYWQgcGFzdCBFT0YnKQogICAgICAgICByZXR1cm4gZGF0YQogCitjbGFzcyBGYWtlU29ja2V0SFRUUENvbm5lY3Rpb24oY2xpZW50LkhUVFBDb25uZWN0aW9uKToKKyAgICAiIiJIVFRQQ29ubmVjdGlvbiBzdWJjbGFzcyB1c2luZyBGYWtlU29ja2V0OyBjb3VudHMgY29ubmVjdCgpIGNhbGxzIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25zID0gMAorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuZmFrZV9zb2NrZXRfYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBzZWxmLmNyZWF0ZV9jb25uZWN0aW9uCisKKyAgICBkZWYgY29ubmVjdChzZWxmKToKKyAgICAgICAgIiIiQ291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBjb25uZWN0KCkgaXMgaW52b2tlZCIiIgorICAgICAgICBzZWxmLmNvbm5lY3Rpb25zICs9IDEKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuY29ubmVjdCgpCisKKyAgICBkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHJldHVybiBGYWtlU29ja2V0KCpzZWxmLmZha2Vfc29ja2V0X2FyZ3MpCisKIGNsYXNzIEhlYWRlclRlc3RzKFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hdXRvX2hlYWRlcnMoc2VsZik6CiAgICAgICAgICMgU29tZSBoZWFkZXJzIGFyZSBhZGRlZCBhdXRvbWF0aWNhbGx5LCBidXQgc2hvdWxkIG5vdCBiZSBhZGRlZCBieQpAQCAtNTQ4LDIwICs1ODgsOCBAQAogICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJ3Rlc3QnLCBjb25uKQogCiAgICAgZGVmIHRlc3RfY2h1bmtlZChzZWxmKToKLSAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCi0gICAgICAgICAgICAnYVxyXG4nCi0gICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCi0gICAgICAgICAgICAnM1xyXG4nCi0gICAgICAgICAgICAnZCEgXHJcbicKLSAgICAgICAgICAgICc4XHJcbicKLSAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCi0gICAgICAgICAgICAnMjJcclxuJwotICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJwotICAgICAgICApCi0gICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JwotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQpAQCAtNTY5LDcgKzU5Nyw3IEBACiAKICAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgotICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZChuKSArIHJlc3AucmVhZChuKSArIHJlc3AucmVhZCgpLCBleHBlY3RlZCkKQEAgLTU5MiwyMyArNjIwLDEyIEBACiAgICAgICAgICAgICAgICAgcmVzcC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkKHNlbGYpOgotICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgICAgICdhXHJcbicKLSAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKLSAgICAgICAgICAgICczXHJcbicKLSAgICAgICAgICAgICdkISBcclxuJwotICAgICAgICAgICAgJzhcclxuJwotICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKLSAgICAgICAgICAgICcyMlxyXG4nCi0gICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCi0gICAgICAgICkKLSAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCisKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCiAgICAgICAgIG5leHBlY3RlZCA9IGxlbihleHBlY3RlZCkKICAgICAgICAgYiA9IGJ5dGVhcnJheSgxMjgpCiAKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCkBAIC02MTgsNyArNjM1LDcgQEAKIAogICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcwogICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6Ci0gICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCkBAIC02NTQsNyArNjcxLDcgQEAKICAgICAgICAgICAgICcxXHJcbicKICAgICAgICAgICAgICdkXHJcbicKICAgICAgICAgKQotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGInJykKQEAgLTY3NCw3ICs2OTEsNyBAQAogICAgICAgICAgICAgJzFcclxuJwogICAgICAgICAgICAgJ2RcclxuJwogICAgICAgICApCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQogICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQpAQCAtNzQ5LDYgKzc2Niw3IEBACiAgICAgICAgICAgICArICcwJyAqIDY1NTM2ICsgJ2FcclxuJwogICAgICAgICAgICAgJ2hlbGxvIHdvcmxkXHJcbicKICAgICAgICAgICAgICcwXHJcbicKKyAgICAgICAgICAgICdcclxuJwogICAgICAgICApCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKEZha2VTb2NrZXQoYm9keSkpCiAgICAgICAgIHJlc3AuYmVnaW4oKQpAQCAtNzY2LDI4ICs3ODQsNiBAQAogICAgICAgICByZXNwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuY2xvc2VkKQogCi0gICAgZGVmIHRlc3RfZGVsYXllZF9hY2tfb3B0KHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBOYWdsZS9kZWxheWVkX2FjayBvcHRpbWlzdGFpb24gd29ya3MgY29ycmVjdGx5LgotCi0gICAgICAgICMgRm9yIHNtYWxsIHBheWxvYWRzLCBpdCBzaG91bGQgY29hbGVzY2UgdGhlIGJvZHkgd2l0aAotICAgICAgICAjIGhlYWRlcnMsIHJlc3VsdGluZyBpbiBhIHNpbmdsZSBzZW5kYWxsKCkgY2FsbAotICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KE5vbmUpCi0gICAgICAgIGNvbm4uc29jayA9IHNvY2sKLSAgICAgICAgYm9keSA9IGIneCcgKiAoY29ubi5tc3MgLSAxKQotICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsIGJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5zZW5kYWxsX2NhbGxzLCAxKQotCi0gICAgICAgICMgRm9yIGxhcmdlIHBheWxvYWRzLCBpdCBzaG91bGQgc2VuZCB0aGUgaGVhZGVycyBhbmQKLSAgICAgICAgIyB0aGVuIHRoZSBib2R5LCByZXN1bHRpbmcgaW4gbW9yZSB0aGFuIG9uZSBzZW5kYWxsKCkKLSAgICAgICAgIyBjYWxsCi0gICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoTm9uZSkKLSAgICAgICAgY29ubi5zb2NrID0gc29jawotICAgICAgICBib2R5ID0gYid4JyAqIGNvbm4ubXNzCi0gICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgYm9keSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNvY2suc2VuZGFsbF9jYWxscywgMSkKLQogICAgIGRlZiB0ZXN0X2Vycm9yX2xlYWsoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBzb2NrZXQgaXMgbm90IGxlYWtlZCBpZiBnZXRyZXNwb25zZSgpIGZhaWxzCiAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTc5OCwxMiArNzk0LDI0NSBAQAogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZiAgIyBBdm9pZCBnYXJiYWdlIGNvbGxlY3RvciBjbG9zaW5nIHRoZSBzb2NrZXQKICAgICAgICAgICAgICAgICBjbGllbnQuSFRUUFJlc3BvbnNlLl9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpCiAgICAgICAgIGNvbm4ucmVzcG9uc2VfY2xhc3MgPSBSZXNwb25zZQotICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KCcnKSAgIyBFbXVsYXRlIHNlcnZlciBkcm9wcGluZyBjb25uZWN0aW9uCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoJ0ludmFsaWQgc3RhdHVzIGxpbmUnKQogICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoY2xpZW50LkJhZFN0YXR1c0xpbmUsIGNvbm4uZ2V0cmVzcG9uc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb25uLnNvY2suZmlsZV9jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9jaHVua2VkX2V4dGVuc2lvbihzZWxmKToKKyAgICAgICAgZXh0cmEgPSAnMztmb289YmFyXHJcbicgKyAnYWJjXHJcbicKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkICsgYidhYmMnCisKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGV4dHJhICsgbGFzdF9jaHVua19leHRlbmRlZCArIGNodW5rZWRfZW5kKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jaHVua2VkX21pc3NpbmdfZW5kKHNlbGYpOgorICAgICAgICAiIiJzb21lIHNlcnZlcnMgbWF5IHNlcnZlIHVwIGEgc2hvcnQgY2h1bmtlZCBlbmNvZGluZyBzdHJlYW0iIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rKSAgI25vIHRlcm1pbmF0aW5nIGNybGYKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2h1bmtlZF90cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiU2VlIHRoYXQgdHJhaWxlcnMgYXJlIHJlYWQgYW5kIGlnbm9yZWQiIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgdHJhaWxlcnMgKyBjaHVua2VkX2VuZCkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICMgd2Ugc2hvdWxkIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5maWxlLnJlYWQoMTAwKSwgYiIiKSAjd2UgcmVhZCB0byB0aGUgZW5kCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2h1bmtlZF9zeW5jKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGF0IHdlIGRvbid0IHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBjaHVua2VkLWVuY29kaW5nIHN0cmVhbSIiIgorICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKKyAgICAgICAgZXh0cmFkYXRhID0gImV4dHJhZGF0YSIKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyB0cmFpbGVycyArIGNodW5rZWRfZW5kICsgZXh0cmFkYXRhKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgIyB0aGUgZmlsZSBzaG91bGQgbm93IGhhdmUgb3VyIGV4dHJhZGF0YSByZWFkeSB0byBiZSByZWFkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5maWxlLnJlYWQoMTAwKSwgZXh0cmFkYXRhLmVuY29kZSgiYXNjaWkiKSkgI3dlIHJlYWQgdG8gdGhlIGVuZAorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NvbnRlbnRfbGVuZ3RoX3N5bmMoc2VsZik6CisgICAgICAgICIiIkNoZWNrIHRoYXQgd2UgZG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIENvbnRlbnQtTGVuZ3RoIHN0cmVhbSIiIgorICAgICAgICBleHRyYWRhdGEgPSAiZXh0cmFkYXRhIgorICAgICAgICBleHBlY3RlZCA9IGIiSGVsbG8xMjNcclxuIgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldCgnSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAxMFxyXG5cclxuSGVsbG8xMjNcclxuJyArIGV4dHJhZGF0YSkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICMgdGhlIGZpbGUgc2hvdWxkIG5vdyBoYXZlIG91ciBleHRyYWRhdGEgcmVhZHkgdG8gYmUgcmVhZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suZmlsZS5yZWFkKDEwMCksIGV4dHJhZGF0YS5lbmNvZGUoImFzY2lpIikpICN3ZSByZWFkIHRvIHRoZSBlbmQKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKK2NsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgcGVlaygpLCByZWFkMSgpLCByZWFkbGluZSgpCisgICAgIiIiCisgICAgbGluZXMgPSAoCisgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAnXHJcbicKKyAgICAgICAgJ2hlbGxvIHdvcmxkIVxuJworICAgICAgICAnYW5kIG5vdyBcbicKKyAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcbicKKyAgICAgICAgJ2ZvbycKKyAgICAgICAgKQorICAgIGxpbmVzX2V4cGVjdGVkID0gbGluZXNbbGluZXMuZmluZCgnaGVsbG8nKTpdLmVuY29kZSgiYXNjaWkiKQorICAgIGxpbmVzX2NodW5rZWQgPSAoCisgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgJ2FcclxuJworICAgICAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2QhXG5cclxuJworICAgICAgICAnOVxyXG4nCisgICAgICAgICdhbmQgbm93IFxuXHJcbicKKyAgICAgICAgJzIzXHJcbicKKyAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcblxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2Zvb1xyXG4nCisgICAgICAgICcwXHJcbicgIyB0ZXJtaW5hdGluZyBjaHVuaworICAgICAgICAnXHJcbicgICMgZW5kIG9mIHRyYWlsZXJzCisgICAgKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChzZWxmLmxpbmVzKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICByZXNwLmZwID0gaW8uQnVmZmVyZWRSZWFkZXIocmVzcC5mcCkKKyAgICAgICAgc2VsZi5yZXNwID0gcmVzcAorCisKKworICAgIGRlZiB0ZXN0X3BlZWsoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgIyBwYXRjaCB1cCB0aGUgYnVmZmVyZWQgcGVlayBzbyB0aGF0IGl0IHJldHVybnMgbm90IHRvbyBtdWNoIHN0dWZmCisgICAgICAgIG9sZHBlZWsgPSByZXNwLmZwLnBlZWsKKyAgICAgICAgZGVmIG15cGVlayhuPS0xKToKKyAgICAgICAgICAgIHAgPSBvbGRwZWVrKG4pCisgICAgICAgICAgICBpZiBuID49IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBbOm5dCisgICAgICAgICAgICByZXR1cm4gcFs6MTBdCisgICAgICAgIHJlc3AuZnAucGVlayA9IG15cGVlaworCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIHRyeSBhIHNob3J0IHBlZWsKKyAgICAgICAgICAgIHAgPSByZXNwLnBlZWsoMykKKyAgICAgICAgICAgIGlmIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwKSwgMCkKKyAgICAgICAgICAgICAgICAjIHRoZW4gdW5ib3VuZGVkIHBlZWsKKyAgICAgICAgICAgICAgICBwMiA9IHJlc3AucGVlaygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHAyKSwgbGVuKHApKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwMi5zdGFydHN3aXRoKHApKQorICAgICAgICAgICAgICAgIG5leHQgPSByZXNwLnJlYWQobGVuKHAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQsIHAyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXh0ID0gcmVzcC5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5leHQpCisgICAgICAgICAgICBhbGwuYXBwZW5kKG5leHQpCisgICAgICAgICAgICBpZiBub3QgbmV4dDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBzZWxmLl92ZXJpZnlfcmVhZGxpbmUoc2VsZi5yZXNwLnJlYWRsaW5lLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIF92ZXJpZnlfcmVhZGxpbmUoc2VsZiwgcmVhZGxpbmUsIGV4cGVjdGVkKToKKyAgICAgICAgYWxsID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgc2hvcnQgcmVhZGxpbmVzCisgICAgICAgICAgICBsaW5lID0gcmVhZGxpbmUoNSkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5kIGxpbmUgIT0gYiJmb28iOgorICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA8IDU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lLmVuZHN3aXRoKGIiXG4iKSkKKyAgICAgICAgICAgIGFsbC5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYWxsKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBkZWYgcigpOgorICAgICAgICAgICAgcmVzID0gcmVzcC5yZWFkMSg0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKHJlcyksIDQpCisgICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgIHJlYWRsaW5lciA9IFJlYWRsaW5lcihyKQorICAgICAgICBzZWxmLl92ZXJpZnlfcmVhZGxpbmUocmVhZGxpbmVyLnJlYWRsaW5lLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZDFfdW5ib3VuZGVkKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcmVzcC5yZWFkMSgpCisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYWxsLmFwcGVuZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9ib3VuZGVkKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcmVzcC5yZWFkMSgxMCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oZGF0YSksIDEwKQorICAgICAgICAgICAgYWxsLmFwcGVuZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8wKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVzcC5yZWFkMSgwKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcGVla18wKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5yZXNwLnBlZWsoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoMCwgbGVuKHApKQorCitjbGFzcyBFeHRlbmRlZFJlYWRUZXN0Q2h1bmtlZChFeHRlbmRlZFJlYWRUZXN0KToKKyAgICAiIiIKKyAgICBUZXN0IHBlZWsoKSwgcmVhZDEoKSwgcmVhZGxpbmUoKSBpbiBjaHVua2VkIG1vZGUKKyAgICAiIiIKKyAgICBsaW5lcyA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAnYVxyXG4nCisgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZCFcblxyXG4nCisgICAgICAgICc5XHJcbicKKyAgICAgICAgJ2FuZCBub3cgXG5cclxuJworICAgICAgICAnMjNcclxuJworICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxuXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZm9vXHJcbicKKyAgICAgICAgJzBcclxuJyAjIHRlcm1pbmF0aW5nIGNodW5rCisgICAgICAgICdcclxuJyAgIyBlbmQgb2YgdHJhaWxlcnMKKyAgICApCisKKworY2xhc3MgUmVhZGxpbmVyOgorICAgICIiIgorICAgIGEgc2ltcGxlIHJlYWRsaW5lIGNsYXNzIHRoYXQgdXNlcyBhbiBhcmJpdHJhcnkgcmVhZCBmdW5jdGlvbiBhbmQgYnVmZmVyaW5nCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRmdW5jKToKKyAgICAgICAgc2VsZi5yZWFkZnVuYyA9IHJlYWRmdW5jCisgICAgICAgIHNlbGYucmVtYWluZGVyID0gYiIiCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQpOgorICAgICAgICBkYXRhID0gW10KKyAgICAgICAgZGF0YWxlbiA9IDAKKyAgICAgICAgcmVhZCA9IHNlbGYucmVtYWluZGVyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgaWR4ID0gcmVhZC5maW5kKGInXG4nKQorICAgICAgICAgICAgICAgIGlmIGlkeCAhPSAtMToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBkYXRhbGVuICsgbGVuKHJlYWQpID49IGxpbWl0OgorICAgICAgICAgICAgICAgICAgICBpZHggPSBsaW1pdCAtIGRhdGFsZW4gLSAxCisgICAgICAgICAgICAgICAgIyByZWFkIG1vcmUgZGF0YQorICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHJlYWQpCisgICAgICAgICAgICAgICAgcmVhZCA9IHNlbGYucmVhZGZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZWFkOgorICAgICAgICAgICAgICAgICAgICBpZHggPSAwICNlb2YgY29uZGl0aW9uCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZHggKz0gMQorICAgICAgICAgICAgZGF0YS5hcHBlbmQocmVhZFs6aWR4XSkKKyAgICAgICAgICAgIHNlbGYucmVtYWluZGVyID0gcmVhZFtpZHg6XQorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGRhdGEpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYucmVtYWluZGVyID0gYiIiLmpvaW4oZGF0YSkKKyAgICAgICAgICAgIHJhaXNlCisKIAogY2xhc3MgT2ZmbGluZVRlc3QoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKQEAgLTgyMywxMyArMTA1Miw3NCBAQAogICAgIGRlZiB0ZXN0X3Jlc3BvbnNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQucmVzcG9uc2VzW2NsaWVudC5OT1RfRk9VTkRdLCAiTm90IEZvdW5kIikKIAorICAgIGRlZiB0ZXN0X2NsaWVudF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAzLjQKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnQ09OVElOVUUnLAorICAgICAgICAgICAgJ1NXSVRDSElOR19QUk9UT0NPTFMnLAorICAgICAgICAgICAgJ1BST0NFU1NJTkcnLAorICAgICAgICAgICAgJ09LJywKKyAgICAgICAgICAgICdDUkVBVEVEJywKKyAgICAgICAgICAgICdBQ0NFUFRFRCcsCisgICAgICAgICAgICAnTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04nLAorICAgICAgICAgICAgJ05PX0NPTlRFTlQnLAorICAgICAgICAgICAgJ1JFU0VUX0NPTlRFTlQnLAorICAgICAgICAgICAgJ1BBUlRJQUxfQ09OVEVOVCcsCisgICAgICAgICAgICAnTVVMVElfU1RBVFVTJywKKyAgICAgICAgICAgICdJTV9VU0VEJywKKyAgICAgICAgICAgICdNVUxUSVBMRV9DSE9JQ0VTJywKKyAgICAgICAgICAgICdNT1ZFRF9QRVJNQU5FTlRMWScsCisgICAgICAgICAgICAnRk9VTkQnLAorICAgICAgICAgICAgJ1NFRV9PVEhFUicsCisgICAgICAgICAgICAnTk9UX01PRElGSUVEJywKKyAgICAgICAgICAgICdVU0VfUFJPWFknLAorICAgICAgICAgICAgJ1RFTVBPUkFSWV9SRURJUkVDVCcsCisgICAgICAgICAgICAnQkFEX1JFUVVFU1QnLAorICAgICAgICAgICAgJ1VOQVVUSE9SSVpFRCcsCisgICAgICAgICAgICAnUEFZTUVOVF9SRVFVSVJFRCcsCisgICAgICAgICAgICAnRk9SQklEREVOJywKKyAgICAgICAgICAgICdOT1RfRk9VTkQnLAorICAgICAgICAgICAgJ01FVEhPRF9OT1RfQUxMT1dFRCcsCisgICAgICAgICAgICAnTk9UX0FDQ0VQVEFCTEUnLAorICAgICAgICAgICAgJ1BST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdSRVFVRVNUX1RJTUVPVVQnLAorICAgICAgICAgICAgJ0NPTkZMSUNUJywKKyAgICAgICAgICAgICdHT05FJywKKyAgICAgICAgICAgICdMRU5HVEhfUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1BSRUNPTkRJVElPTl9GQUlMRUQnLAorICAgICAgICAgICAgJ1JFUVVFU1RfRU5USVRZX1RPT19MQVJHRScsCisgICAgICAgICAgICAnUkVRVUVTVF9VUklfVE9PX0xPTkcnLAorICAgICAgICAgICAgJ1VOU1VQUE9SVEVEX01FRElBX1RZUEUnLAorICAgICAgICAgICAgJ1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUnLAorICAgICAgICAgICAgJ0VYUEVDVEFUSU9OX0ZBSUxFRCcsCisgICAgICAgICAgICAnVU5QUk9DRVNTQUJMRV9FTlRJVFknLAorICAgICAgICAgICAgJ0xPQ0tFRCcsCisgICAgICAgICAgICAnRkFJTEVEX0RFUEVOREVOQ1knLAorICAgICAgICAgICAgJ1VQR1JBREVfUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1BSRUNPTkRJVElPTl9SRVFVSVJFRCcsCisgICAgICAgICAgICAnVE9PX01BTllfUkVRVUVTVFMnLAorICAgICAgICAgICAgJ1JFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UnLAorICAgICAgICAgICAgJ0lOVEVSTkFMX1NFUlZFUl9FUlJPUicsCisgICAgICAgICAgICAnTk9UX0lNUExFTUVOVEVEJywKKyAgICAgICAgICAgICdCQURfR0FURVdBWScsCisgICAgICAgICAgICAnU0VSVklDRV9VTkFWQUlMQUJMRScsCisgICAgICAgICAgICAnR0FURVdBWV9USU1FT1VUJywKKyAgICAgICAgICAgICdIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCcsCisgICAgICAgICAgICAnSU5TVUZGSUNJRU5UX1NUT1JBR0UnLAorICAgICAgICAgICAgJ05PVF9FWFRFTkRFRCcsCisgICAgICAgICAgICAnTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCcsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNvbnN0IGluIGV4cGVjdGVkOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uc3RhbnQ9Y29uc3QpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGNsaWVudCwgY29uc3QpKQorCiAKIGNsYXNzIFNvdXJjZUFkZHJlc3NUZXN0KFRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQogICAgICAgICBzZWxmLnNvdXJjZV9wb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKICAgICAgICAgc2VsZi5jb25uID0gTm9uZQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtODYxLDcgKzExNTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBUaW1lb3V0VGVzdC5QT1JUID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQpAQCAtOTAxLDYgKzExOTEsNzggQEAKICAgICAgICAgaHR0cENvbm4uY2xvc2UoKQogCiAKK2NsYXNzIFBlcnNpc3RlbmNlVGVzdChUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9yZXVzZV9yZWNvbm5lY3Qoc2VsZik6CisgICAgICAgICMgU2hvdWxkIHJldXNlIG9yIHJlY29ubmVjdCBkZXBlbmRpbmcgb24gaGVhZGVyIGZyb20gc2VydmVyCisgICAgICAgIHRlc3RzID0gKAorICAgICAgICAgICAgKCcxLjAnLCAnJywgRmFsc2UpLAorICAgICAgICAgICAgKCcxLjAnLCAnQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxyXG4nLCBUcnVlKSwKKyAgICAgICAgICAgICgnMS4xJywgJycsIFRydWUpLAorICAgICAgICAgICAgKCcxLjEnLCAnQ29ubmVjdGlvbjogY2xvc2VcclxuJywgRmFsc2UpLAorICAgICAgICAgICAgKCcxLjAnLCAnQ29ubmVjdGlvbjoga2VlcC1BTElWRVxyXG4nLCBUcnVlKSwKKyAgICAgICAgICAgICgnMS4xJywgJ0Nvbm5lY3Rpb246IGNsb1NFXHJcbicsIEZhbHNlKSwKKyAgICAgICAgKQorICAgICAgICBmb3IgdmVyc2lvbiwgaGVhZGVyLCByZXVzZSBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZlcnNpb249dmVyc2lvbiwgaGVhZGVyPWhlYWRlcik6CisgICAgICAgICAgICAgICAgbXNnID0gKAorICAgICAgICAgICAgICAgICAgICAnSFRUUC97fSAyMDAgT0tcclxuJworICAgICAgICAgICAgICAgICAgICAne30nCisgICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTJcclxuJworICAgICAgICAgICAgICAgICAgICAnXHJcbicKKyAgICAgICAgICAgICAgICAgICAgJ0R1bW15IGJvZHlcclxuJworICAgICAgICAgICAgICAgICkuZm9ybWF0KHZlcnNpb24sIGhlYWRlcikKKyAgICAgICAgICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb25uLnNvY2spCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL29wZW4tY29ubmVjdGlvbicpCisgICAgICAgICAgICAgICAgd2l0aCBjb25uLmdldHJlc3BvbnNlKCkgYXMgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5zb2NrIGlzIE5vbmUsIG5vdCByZXVzZSkKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnNvY2sgaXMgTm9uZSwgbm90IHJldXNlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMSkKKyAgICAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvc3Vic2VxdWVudC1yZXF1ZXN0JykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uY29ubmVjdGlvbnMsIDEgaWYgcmV1c2UgZWxzZSAyKQorCisgICAgZGVmIHRlc3RfZGlzY29ubmVjdGVkKHNlbGYpOgorCisgICAgICAgIGRlZiBtYWtlX3Jlc2V0X3JlYWRlcih0ZXh0KToKKyAgICAgICAgICAgICIiIlJldHVybiBCdWZmZXJlZFJlYWRlciB0aGF0IHJhaXNlcyBFQ09OTlJFU0VUIGF0IEVPRiIiIgorICAgICAgICAgICAgc3RyZWFtID0gaW8uQnl0ZXNJTyh0ZXh0KQorICAgICAgICAgICAgZGVmIHJlYWRpbnRvKGJ1ZmZlcik6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkJ5dGVzSU8ucmVhZGludG8oc3RyZWFtLCBidWZmZXIpCisgICAgICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNpemUKKyAgICAgICAgICAgIHN0cmVhbS5yZWFkaW50byA9IHJlYWRpbnRvCisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRSZWFkZXIoc3RyZWFtKQorCisgICAgICAgIHRlc3RzID0gKAorICAgICAgICAgICAgKGlvLkJ5dGVzSU8sIGNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQpLAorICAgICAgICAgICAgKG1ha2VfcmVzZXRfcmVhZGVyLCBDb25uZWN0aW9uUmVzZXRFcnJvciksCisgICAgICAgICkKKyAgICAgICAgZm9yIHN0cmVhbV9mYWN0b3J5LCBleGNlcHRpb24gaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChleGNlcHRpb249ZXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKGInJywgc3RyZWFtX2ZhY3RvcnkpCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL2VvZi1yZXNwb25zZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjZXB0aW9uLCBjb25uLmdldHJlc3BvbnNlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbm4uc29jaykKKyAgICAgICAgICAgICAgICAjIEhUVFBDb25uZWN0aW9uLmNvbm5lY3QoKSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBpbnZva2VkCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL3JlY29ubmVjdCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLmNvbm5lY3Rpb25zLCAyKQorCisgICAgZGVmIHRlc3RfMTAwX2Nsb3NlKHNlbGYpOgorICAgICAgICBjb25uID0gRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDAgQ29udGludWVcclxuJworICAgICAgICAgICAgYidcclxuJworICAgICAgICAgICAgIyBNaXNzaW5nIGZpbmFsIHJlc3BvbnNlCisgICAgICAgICkKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnLycsIGhlYWRlcnM9eydFeHBlY3QnOiAnMTAwLWNvbnRpbnVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQsIGNvbm4uZ2V0cmVzcG9uc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbm4uc29jaykKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL3JlY29ubmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMikKKworCiBjbGFzcyBIVFRQU1Rlc3QoVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTE3MSwxNyArMTUzMywxOCBAQAogICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nICMgUmVwbHkgdG8gSEVBRAogICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiA0MlxyXG5cclxuJwogICAgICAgICApCi0KLSAgICAgICAgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFrZVNvY2tldChyZXNwb25zZV90ZXh0LCBob3N0PWFkZHJlc3NbMF0sIHBvcnQ9YWRkcmVzc1sxXSkKLQogICAgICAgICBzZWxmLmhvc3QgPSAncHJveHkuY29tJwogICAgICAgICBzZWxmLmNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oc2VsZi5ob3N0KQotICAgICAgICBzZWxmLmNvbm4uX2NyZWF0ZV9jb25uZWN0aW9uID0gY3JlYXRlX2Nvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5jb25uLl9jcmVhdGVfY29ubmVjdGlvbiA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKHJlc3BvbnNlX3RleHQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY29ubi5jbG9zZSgpCiAKKyAgICBkZWYgX2NyZWF0ZV9jb25uZWN0aW9uKHNlbGYsIHJlc3BvbnNlX3RleHQpOgorICAgICAgICBkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBGYWtlU29ja2V0KHJlc3BvbnNlX3RleHQsIGhvc3Q9YWRkcmVzc1swXSwgcG9ydD1hZGRyZXNzWzFdKQorICAgICAgICByZXR1cm4gY3JlYXRlX2Nvbm5lY3Rpb24KKwogICAgIGRlZiB0ZXN0X3NldF90dW5uZWxfaG9zdF9wb3J0X2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHR1bm5lbF9ob3N0ID0gJ2Rlc3RpbmF0aW9uLmNvbScKICAgICAgICAgdHVubmVsX3BvcnQgPSA4ODg4CkBAIC0xMjIyLDEzICsxNTg1LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidDT05ORUNUIGRlc3RpbmF0aW9uLmNvbScsIHNlbGYuY29ubi5zb2NrLmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidIb3N0OiBkZXN0aW5hdGlvbi5jb20nLCBzZWxmLmNvbm4uc29jay5kYXRhKQogCisgICAgZGVmIHRlc3RfdHVubmVsX2RlYnVnbG9nKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9oZWFkZXIgPSAnWC1EdW1teTogMScKKyAgICAgICAgcmVzcG9uc2VfdGV4dCA9ICdIVFRQLzEuMCAyMDAgT0tcclxue31cclxuXHJcbicuZm9ybWF0KGV4cGVjdGVkX2hlYWRlcikKKworICAgICAgICBzZWxmLmNvbm4uc2V0X2RlYnVnbGV2ZWwoMSkKKyAgICAgICAgc2VsZi5jb25uLl9jcmVhdGVfY29ubmVjdGlvbiA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKHJlc3BvbnNlX3RleHQpCisgICAgICAgIHNlbGYuY29ubi5zZXRfdHVubmVsKCdkZXN0aW5hdGlvbi5jb20nKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBzZWxmLmNvbm4ucmVxdWVzdCgnUFVUJywgJy8nLCAnJykKKyAgICAgICAgbGluZXMgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIFR1bm5lbFRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQppbmRleCA3NGUwNzE0Li5mY2RmZTUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKQEAgLTYsNyArNiw3IEBACiAKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIsIFwKICAgICAgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLCBDR0lIVFRQUmVxdWVzdEhhbmRsZXIKLWZyb20gaHR0cCBpbXBvcnQgc2VydmVyCitmcm9tIGh0dHAgaW1wb3J0IHNlcnZlciwgSFRUUFN0YXR1cwogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTc5LDEzICs3OSwxMyBAQAogICAgICAgICBkZWZhdWx0X3JlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKIAogICAgICAgICBkZWYgZG9fVEVTVChzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDQpCisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5OT19DT05URU5UKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogCiAgICAgICAgIGRlZiBkb19LRUVQKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwNCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk5PX0NPTlRFTlQpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpCiAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig5OTkpCiAKICAgICAgICAgZGVmIGRvX05PVEZPVU5EKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCkKIAogICAgICAgICBkZWYgZG9fRVhQTEFJTkVSUk9SKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDk5OSwgIlNob3J0IE1lc3NhZ2UiLApAQCAtMTIyLDM1ICsxMjIsMzUgQEAKICAgICBkZWYgdGVzdF9jb21tYW5kKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2xpbmVfdHJpbW1pbmcoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjFcbicKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnWFlaQk9HVVMnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ib2d1cyhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdGVUJBUicKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9kaWdpdHMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC85LjkuOScKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub25lX2dldChzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICcnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IGEgdmFsaWQgbWV0aG9kIGlzIHJlamVjdGVkIHdoZW4gbm90IEhUVFAvMS54CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnQ1VTVE9NJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9pbnZhbGlkKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c24gPSA5OQpAQCAtMTY2LDIxICsxNjYsMjEgQEAKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEKQogCiAgICAgZGVmIHRlc3Rfc2VuZF9ibGFuayhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICcnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJycsICcnKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLkJBRF9SRVFVRVNUKQogCiAgICAgZGVmIHRlc3RfaGVhZGVyX2Nsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLnB1dGhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfaGVhZF9rZWVwX2FsaXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0hUVFAvMS4xJwpAQCAtMTg4LDEyICsxODgsMTIgQEAKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ1RFU1QnLCAnLycpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAyMDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT19DT05URU5UKQogCiAgICAgZGVmIHRlc3RfcmV0dXJuX2hlYWRlcl9rZWVwX2FsaXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdLRUVQJywgJy8nKQpAQCAtMjMwLDExICsyMzAsNDggQEAKICAgICAgICAgIyBJc3N1ZSAjMTYwODg6IHN0YW5kYXJkIGVycm9yIHJlc3BvbnNlcyBzaG91bGQgaGF2ZSBhIGNvbnRlbnQtbGVuZ3RoCiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ05PVEZPVU5EJywgJy8nKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQorCiAgICAgICAgIGRhdGEgPSByZXMucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykpLCBsZW4oZGF0YSkpCiAKIAorY2xhc3MgUmVxdWVzdEhhbmRsZXJMb2dnaW5nVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICBjbGFzcyByZXF1ZXN0X2hhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CisgICAgICAgIHByb3RvY29sX3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIGRlZmF1bHRfcmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworCisgICAgICAgIGRlZiBkb19HRVQoc2VsZik6CisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKKyAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorCisgICAgICAgIGRlZiBkb19FUlJPUihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCwgJ0ZpbGUgbm90IGZvdW5kJykKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgc2VsZi5jb24gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihzZWxmLkhPU1QsIHNlbGYuUE9SVCkKKyAgICAgICAgc2VsZi5jb24uY29ubmVjdCgpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ0dFVCcsICcvJykKKyAgICAgICAgICAgIHNlbGYuY29uLmdldHJlc3BvbnNlKCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBlcnIuZ2V0dmFsdWUoKS5lbmRzd2l0aCgnIkdFVCAvIEhUVFAvMS4xIiAyMDAgLVxuJykpCisKKyAgICBkZWYgdGVzdF9lcnIoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oc2VsZi5IT1NULCBzZWxmLlBPUlQpCisgICAgICAgIHNlbGYuY29uLmNvbm5lY3QoKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdFUlJPUicsICcvJykKKyAgICAgICAgICAgIHNlbGYuY29uLmdldHJlc3BvbnNlKCkKKworICAgICAgICBsaW5lcyA9IGVyci5nZXR2YWx1ZSgpLnNwbGl0KCdcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5lbmRzd2l0aCgnY29kZSA0MDQsIG1lc3NhZ2UgRmlsZSBub3QgZm91bmQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzFdLmVuZHN3aXRoKCciRVJST1IgLyBIVFRQLzEuMSIgNDA0IC0nKSkKKworCiBjbGFzcyBTaW1wbGVIVFRQU2VydmVyVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKICAgICBjbGFzcyByZXF1ZXN0X2hhbmRsZXIoTm9Mb2dSZXF1ZXN0SGFuZGxlciwgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgcGFzcwpAQCAtMjg1LDUyICszMjIsNTIgQEAKICAgICAgICAgICAgICAgICBpZiBuYW1lICE9ICd0ZXN0JzogIyBJZ25vcmUgYSBmaWxlbmFtZSBjcmVhdGVkIGluIHNldFVwKCkuCiAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbmFtZQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBib2R5ID0gc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBib2R5ID0gc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgcXVvdGVkbmFtZSA9IHVybGxpYi5wYXJzZS5xdW90ZShmaWxlbmFtZSwgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2hyZWY9IiVzIicgJSBxdW90ZWRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvJyArIHF1b3RlZG5hbWUpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCwKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXN1cHBvcnQuVEVTVEZOX1VOREVDT0RBQkxFKQogCiAgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgogICAgICAgICAjY29uc3RydWN0cyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIEhUVFBTZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnL3Rlc3QnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDAsIGRhdGE9c2VsZi5kYXRhKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LLCBkYXRhPXNlbGYuZGF0YSkKICAgICAgICAgIyBjaGVjayBmb3IgdHJhaWxpbmcgIi8iIHdoaWNoIHNob3VsZCByZXR1cm4gNDA0LiBTZWUgSXNzdWUxNzMyNAogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvdGVzdC8nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMzAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvP2hpPTInKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJz9oaT0xJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMzAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcigiTG9jYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRlbXBkaXJfbmFtZSArICIvP2hpPTEiKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnL1RoaXNEb2VzTm90RXhpc3QnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycgKyAnVGhpc0RvZXNOb3RFeGlzdCcgKyAnLycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDQwNCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyX25hbWUsICdpbmRleC5odG1sJyksICd3JykgYXMgZjoKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJyArIHNlbGYudGVtcGRpcl9uYW1lICsgJy8nKQotICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgICAgICMgY2htb2QoKSBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgb24gV2luZG93cywgYW5kIGZpbGVzeXN0ZW0KICAgICAgICAgICAgICMgcGVybWlzc2lvbnMgYXJlIGlnbm9yZWQgYnkgcm9vdCBvbiBVbml4LgogICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy5nZXRldWlkKCkgIT0gMDoKICAgICAgICAgICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBkaXIsIDApCiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnLycpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNDA0KQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogICAgICAgICAgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcGRpciwgMG83NTUpCiAKICAgICBkZWYgdGVzdF9oZWFkKHNlbGYpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgKICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgJy90ZXN0JywgbWV0aG9kPSdIRUFEJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcignY29udGVudC1sZW5ndGgnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobGVuKHNlbGYuZGF0YSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcignY29udGVudC10eXBlJyksCkBAIC0zMzgsMTIgKzM3NSwxMiBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9yZXF1ZXN0cyhzZWxmKToKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nLCBtZXRob2Q9J0ZPTycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDUwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAgICAgICAgICMgcmVxdWVzdHMgbXVzdCBiZSBjYXNlIHNlbnNpdGl2ZSxzbyB0aGlzIHNob3VsZCBmYWlsIHRvbwogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycsIG1ldGhvZD0nY3VzdG9tJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNTAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nLCBtZXRob2Q9J0dFVHMnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA1MDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAKIGNnaV9maWxlMSA9ICIiIlwKQEAgLTQ5MCwxMiArNTI3LDEzIEBACiAKICAgICBkZWYgdGVzdF9oZWFkZXJzX2FuZF9jb250ZW50KHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cyksCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMTk0MzUoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnLy8vLy8vLy8vLy9ub2NnaS5weS8uLi9jZ2ktYmluL25vdGhlcmUuc2gnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKIAogICAgIGRlZiB0ZXN0X3Bvc3Qoc2VsZik6CiAgICAgICAgIHBhcmFtcyA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoCkBAIC01MDgsMzggKzU0Niw0MyBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWR1cmkoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vaW52YWxpZCcpCiAgICAgICAgIHJlcy5yZWFkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAKICAgICBkZWYgdGVzdF9hdXRob3JpemF0aW9uKHNlbGYpOgogICAgICAgICBoZWFkZXJzID0ge2InQXV0aG9yaXphdGlvbicgOiBiJ0Jhc2ljICcgKwogICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRlbmNvZGUoYid1c2VybmFtZTpwYXNzJyl9CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vZmlsZTEucHknLCAnR0VUJywgaGVhZGVycz1oZWFkZXJzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogICAgIGRlZiB0ZXN0X25vX2xlYWRpbmdfc2xhc2goc2VsZik6CiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyNTQKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCdjZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKICAgICBkZWYgdGVzdF9vc19lbnZpcm9uX2lzX25vdF9hbHRlcmVkKHNlbGYpOgogICAgICAgICBzaWduYXR1cmUgPSAiVGVzdCBDR0kgU2VydmVyIgogICAgICAgICBvcy5lbnZpcm9uWydTRVJWRVJfU09GVFdBUkUnXSA9IHNpZ25hdHVyZQogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZW52aXJvblsnU0VSVkVSX1NPRlRXQVJFJ10sIHNpZ25hdHVyZSkKIAogICAgIGRlZiB0ZXN0X3VybHF1b3RlX2RlY29kaW5nX2luX2NnaV9jaGVjayhzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbiUyZmZpbGUxLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKICAgICBkZWYgdGVzdF9uZXN0ZWRfY2dpX3BhdGhfaXNzdWUyMTMyMyhzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9jaGlsZC1kaXIvZmlsZTMucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogCiBjbGFzcyBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTU0OSw3ICs1OTIsNyBAQAogCiAgICAgZGVmIGRvX0dFVChzZWxmKToKICAgICAgICAgc2VsZi5nZXRfY2FsbGVkID0gVHJ1ZQotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICBzZWxmLndmaWxlLndyaXRlKGInPGh0bWw+PGJvZHk+RGF0YTwvYm9keT48L2h0bWw+XHJcbicpCkBAIC01NTksNyArNjAyLDcgQEAKIAogY2xhc3MgUmVqZWN0aW5nU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcik6CiAgICAgZGVmIGhhbmRsZV9leHBlY3RfMTAwKHNlbGYpOgotICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDE3KQorICAgICAgICBzZWxmLnNlbmRfZXJyb3IoSFRUUFN0YXR1cy5FWFBFQ1RBVElPTl9GQUlMRUQpCiAgICAgICAgIHJldHVybiBGYWxzZQogCiAKQEAgLTgxNiw2ICs4NTksNyBAQAogICAgIGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgICAgIFJlcXVlc3RIYW5kbGVyTG9nZ2luZ1Rlc3RDYXNlLAogICAgICAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlclRlc3RDYXNlLAogICAgICAgICAgICAgQmFzZUhUVFBTZXJ2ZXJUZXN0Q2FzZSwKICAgICAgICAgICAgIFNpbXBsZUhUVFBTZXJ2ZXJUZXN0Q2FzZSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCBiMzRlNjUyLi44MGUyN2YzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC0xMSw3ICsxMSw4IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGNhbGVuZGFyCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHosIHJ1bl93aXRoX2xvY2FsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChyZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3dpdGhfdHosIHJ1bl93aXRoX2xvY2FsZSkKIGltcG9ydCB1bml0dGVzdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lLCB0aW1lZGVsdGEKIHRyeToKQEAgLTE5LDggKzIwLDggQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBzc2wgPSBOb25lCiAKLUNFUlRGSUxFID0gTm9uZQotQ0FGSUxFID0gTm9uZQorQ0VSVEZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsICJrZXljZXJ0My5wZW0iKQorQ0FGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLCAicHljYWNlcnQucGVtIikKIAogCiBjbGFzcyBUZXN0SW1hcGxpYih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00MSwxNyArNDIsMTUgQEAKICAgICBkZWYgdGVzdF9JbnRlcm5hbGRhdGUydHVwbGVfaXNzdWUxMDk0MShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSgKICAgICAgICAgICAgIGInMjUgKElOVEVSTkFMREFURSAiMDItQXByLTIwMDAgMDI6MzA6MDAgKzAwMDAiKScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAotICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMzozMDowMCArMDAwMCIpJykpCi0KLQorICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCisgICAgICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMzozMDowMCArMDAwMCIpJykpCiAKICAgICBkZWYgdGltZXZhbHVlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIFsyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLjAsIHRpbWUubG9jYWx0aW1lKDIwMDAwMDAwMDApLAogICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIC0xKSwKICAgICAgICAgICAgICAgICAoMjAzMywgNSwgMTgsIDUsIDMzLCAyMCwgLTEsIC0xLCAxKSwKICAgICAgICAgICAgICAgICBkYXRldGltZS5mcm9tdGltZXN0YW1wKDIwMDAwMDAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZSh0aW1lZGVsdGEoMCwgMio2MCo2MCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyICogNjAgKiA2MCkpKSwKICAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCiAKICAgICBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnZGVfREUnLCAnZnJfRlInKQpAQCAtNzIsNyArNzEsNiBAQAogCiAKIGlmIHNzbDoKLQogICAgIGNsYXNzIFNlY3VyZVRDUFNlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKToKIAogICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CkBAIC05MywxMyArOTEsMTcgQEAKIAogCiBjbGFzcyBTaW1wbGVJTUFQSGFuZGxlcihzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgotCiAgICAgdGltZW91dCA9IDEKICAgICBjb250aW51YXRpb24gPSBOb25lCiAgICAgY2FwYWJpbGl0aWVzID0gJycKIAorICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXR1cCgpCisgICAgICAgIHNlbGYuc2VydmVyLmxvZ2dlZCA9IE5vbmUKKwogICAgIGRlZiBfc2VuZChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoIlNFTlQ6ICVyIiAlIG1lc3NhZ2Uuc3RyaXAoKSkKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJTRU5UOiAlciIgJSBtZXNzYWdlLnN0cmlwKCkpCiAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUobWVzc2FnZSkKIAogICAgIGRlZiBfc2VuZF9saW5lKHNlbGYsIG1lc3NhZ2UpOgpAQCAtMTMyLDcgKzEzNCw4IEBACiAgICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aChiJ1xyXG4nKToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoJ0dPVDogJXInICUgbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgnR09UOiAlcicgJSBsaW5lLnN0cmlwKCkpCiAgICAgICAgICAgICBpZiBzZWxmLmNvbnRpbnVhdGlvbjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGludWF0aW9uLnNlbmQobGluZSkKQEAgLTE0NCw4ICsxNDcsOCBAQAogICAgICAgICAgICAgY21kID0gc3BsaXRsaW5lWzFdCiAgICAgICAgICAgICBhcmdzID0gc3BsaXRsaW5lWzI6XQogCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdjbWRfJytjbWQpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiA9IGdldGF0dHIoc2VsZiwgJ2NtZF8nK2NtZCkodGFnLCBhcmdzKQorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnY21kXycgKyBjbWQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiA9IGdldGF0dHIoc2VsZiwgJ2NtZF8nICsgY21kKSh0YWcsIGFyZ3MpCiAgICAgICAgICAgICAgICAgaWYgY29udGludWF0aW9uOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRpbnVhdGlvbiA9IGNvbnRpbnVhdGlvbgogICAgICAgICAgICAgICAgICAgICBuZXh0KGNvbnRpbnVhdGlvbikKQEAgLTE1MywxNiArMTU2LDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnQkFEJywgY21kICsgJyB1bmtub3duJykKIAogICAgIGRlZiBjbWRfQ0FQQUJJTElUWShzZWxmLCB0YWcsIGFyZ3MpOgotICAgICAgICBjYXBzID0gJ0lNQVA0cmV2MSAnICsgc2VsZi5jYXBhYmlsaXRpZXMgaWYgc2VsZi5jYXBhYmlsaXRpZXMgZWxzZSAnSU1BUDRyZXYxJworICAgICAgICBjYXBzID0gKCdJTUFQNHJldjEgJyArIHNlbGYuY2FwYWJpbGl0aWVzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jYXBhYmlsaXRpZXMKKyAgICAgICAgICAgICAgICBlbHNlICdJTUFQNHJldjEnKQogICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcqIENBUEFCSUxJVFkgJyArIGNhcHMpCiAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0NBUEFCSUxJVFkgY29tcGxldGVkJykKIAogICAgIGRlZiBjbWRfTE9HT1VUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgIHNlbGYuc2VydmVyLmxvZ2dlZCA9IE5vbmUKICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKiBCWUUgSU1BUDRyZWYxIFNlcnZlciBsb2dnaW5nIG91dCcpCiAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0xPR09VVCBjb21wbGV0ZWQnKQogCisgICAgZGVmIGNtZF9MT0dJTihzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICBzZWxmLnNlcnZlci5sb2dnZWQgPSBhcmdzWzBdCisgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0xPR0lOIGNvbXBsZXRlZCcpCiAKLWNsYXNzIEJhc2VUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgVGhyZWFkZWROZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2VydmVyX2NsYXNzID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcgorICAgIGltYXBfY2xhc3MgPSBpbWFwbGliLklNQVA0CiAKICAgICBkZWYgbWFrZV9zZXJ2ZXIoc2VsZiwgYWRkciwgaGRscik6CiAKQEAgLTE3Miw3ICsxODQsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZQogCi0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJjcmVhdGluZyBzZXJ2ZXIiKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImNyZWF0aW5nIHNlcnZlciIpCiAgICAgICAgIHNlcnZlciA9IE15U2VydmVyKGFkZHIsIGhkbHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlcnZlcl9hZGRyZXNzLCBzZXJ2ZXIuc29ja2V0LmdldHNvY2tuYW1lKCkpCiAKQEAgLTE4OCwxOCArMjAxLDIxIEBACiAgICAgICAgICAgICAjIFNob3J0IHBvbGwgaW50ZXJ2YWwgdG8gbWFrZSB0aGUgdGVzdCBmaW5pc2ggcXVpY2tseS4KICAgICAgICAgICAgICMgVGltZSBiZXR3ZWVuIHJlcXVlc3RzIGlzIHNob3J0IGVub3VnaCB0aGF0IHdlIHdvbid0IHdha2UKICAgICAgICAgICAgICMgdXAgc3B1cmlvdXNseSB0b28gbWFueSB0aW1lcy4KLSAgICAgICAgICAgIGt3YXJncz17J3BvbGxfaW50ZXJ2YWwnOjAuMDF9KQorICAgICAgICAgICAga3dhcmdzPXsncG9sbF9pbnRlcnZhbCc6IDAuMDF9KQogICAgICAgICB0LmRhZW1vbiA9IFRydWUgICMgSW4gY2FzZSB0aGlzIGZ1bmN0aW9uIHJhaXNlcy4KICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJzZXJ2ZXIgcnVubmluZyIpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgic2VydmVyIHJ1bm5pbmciKQogICAgICAgICByZXR1cm4gc2VydmVyLCB0CiAKICAgICBkZWYgcmVhcF9zZXJ2ZXIoc2VsZiwgc2VydmVyLCB0aHJlYWQpOgotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgid2FpdGluZyBmb3Igc2VydmVyIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJ3YWl0aW5nIGZvciBzZXJ2ZXIiKQogICAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQogICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKICAgICAgICAgdGhyZWFkLmpvaW4oKQotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgiZG9uZSIpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiZG9uZSIpCiAKICAgICBAY29udGV4dG1hbmFnZXIKICAgICBkZWYgcmVhcGVkX3NlcnZlcihzZWxmLCBoZGxyKToKQEAgLTI0OSw2ICsyNjUsODQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuYWJvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmltYXBfY2xhc3MsICpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCiAKKyAgICBjbGFzcyBVVEY4U2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKToKKyAgICAgICAgY2FwYWJpbGl0aWVzID0gJ0FVVEggRU5BQkxFIFVURjg9QUNDRVBUJworCisgICAgICAgIGRlZiBjbWRfRU5BQkxFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdFTkFCTEUgc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJysnKQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVzcG9uc2UgPSB5aWVsZAorICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfZW5hYmxlX3JhaXNlc19lcnJvcl9pZl9ub3RfQVVUSChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKHNlbGYuVVRGOFNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50LnV0ZjhfZW5hYmxlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IsIGNsaWVudC5lbmFibGUsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQudXRmOF9lbmFibGVkKQorCisgICAgIyBYWFggQWxzbyBuZWVkIGEgdGVzdCB0aGF0IGVuYWJsZSBhZnRlciBTRUxFQ1QgcmFpc2VzIGFuIGVycm9yLgorCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9yYWlzZXNfZXJyb3JfaWZfbm9fY2FwYWJpbGl0eShzZWxmKToKKyAgICAgICAgY2xhc3MgTm9FbmFibGVTZXJ2ZXIoc2VsZi5VVEY4U2VydmVyKToKKyAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9ICdBVVRIJworICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoTm9FbmFibGVTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yLCBjbGllbnQuZW5hYmxlLCAnZm9vJykKKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9lbmFibGVfVVRGOF9yYWlzZXNfZXJyb3JfaWZfbm90X3N1cHBvcnRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgTm9uVVRGOFNlcnZlcihTaW1wbGVJTUFQSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoTm9uVVRGOFNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgICAgICB0eXAsIGRhdGEgPSBjbGllbnQubG9naW4oJ3VzZXInLCAncGFzcycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXAsICdPSycpCisgICAgICAgICAgICAgICAgY2xpZW50LmVuYWJsZSgnVVRGOD1BQ0NFUFQnKQorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9lbmFibGVfVVRGOF9UcnVlX2FwcGVuZChzZWxmKToKKworICAgICAgICBjbGFzcyBVVEY4QXBwZW5kU2VydmVyKHNlbGYuVVRGOFNlcnZlcik6CisgICAgICAgICAgICBkZWYgY21kX0FQUEVORChzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJysnKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlc3BvbnNlID0geWllbGQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdva2F5JykKKworICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoVVRGOEFwcGVuZFNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9lbmNvZGluZywgJ2FzY2lpJykKKyAgICAgICAgICAgIGNvZGUsIF8gPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogYidmYWtlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1ptRnJaUT09XHJcbicpICAjIGI2NCBlbmNvZGVkICdmYWtlJworICAgICAgICAgICAgY29kZSwgXyA9IGNsaWVudC5lbmFibGUoJ1VURjg9QUNDRVBUJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9lbmNvZGluZywgJ3V0Zi04JykKKyAgICAgICAgICAgIG1zZ19zdHJpbmcgPSAnU3ViamVjdDogw7zDscOtwqnDtsOww6knCisgICAgICAgICAgICB0eXAsIGRhdGEgPSBjbGllbnQuYXBwZW5kKAorICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUsIG1zZ19zdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXAsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcnZlci5yZXNwb25zZSwKKyAgICAgICAgICAgICAgICAoJ1VURjggKCVzKVxyXG4nICUgbXNnX3N0cmluZykuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICAgICApCisKKyAgICAjIFhYWCBhbHNvIG5lZWQgYSB0ZXN0IHRoYXQgbWFrZXMgc3VyZSB0aGF0IHRoZSBMaXRlcmFsIGFuZCBVbnRhZ2dlZF9zdGF0dXMKKyAgICAjIHJlZ2V4ZXMgdXNlcyB1bmljb2RlIGluIFVURjggbW9kZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IEFTQ0lJLgorCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X3NlYXJjaF9kaXNhbGxvd3NfY2hhcnNldF9pbl91dGY4X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihzZWxmLlVURjhTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICB0eXAsIF8gPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogYidmYWtlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwLCAnT0snKQorICAgICAgICAgICAgdHlwLCBfID0gY2xpZW50LmVuYWJsZSgnVVRGOD1BQ0NFUFQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXAsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50LnV0ZjhfZW5hYmxlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IsIGNsaWVudC5zZWFyY2gsICdmb28nLCAnYmFyJykKKwogICAgIEByZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9iYWRfYXV0aF9uYW1lKHNlbGYpOgogCkBAIC0yNTYsNyArMzUwLDcgQEAKIAogICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdOTycsICd1bnJlY29nbml6ZWQgYXV0aGVudGljYXRpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUge30nLmZvcm1hdChhcmdzWzBdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSB7fScuZm9ybWF0KGFyZ3NbMF0pKQogCiAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihNeVNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvcik6CkBAIC0yOTAsMTMgKzM4NCwxMyBAQAogICAgICAgICAgICAgY29kZSwgZGF0YSA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgI2I2NCBlbmNvZGVkICdmYWtlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1ptRnJaUT09XHJcbicpICAjIGI2NCBlbmNvZGVkICdmYWtlJwogCiAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihNeVNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKICAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogJ2Zha2UnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgI2I2NCBlbmNvZGVkICdmYWtlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1ptRnJaUT09XHJcbicpICAjIGI2NCBlbmNvZGVkICdmYWtlJwogCiAgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2xvZ2luX2NyYW1fbWQ1KHNlbGYpOgpAQCAtMzA3LDkgKzQwMSwxMCBAQAogCiAgICAgICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJysgUERFNE9UWXVOamszTVRjd09UVXlRSEJ2YzNSdlptWnBZMlV1Y20nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVnpkRzl1TG0xamFTNXVaWFE9JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWemRHOXVMbTFqYVM1dVpYUT0nKQogICAgICAgICAgICAgICAgIHIgPSB5aWVsZAotICAgICAgICAgICAgICAgIGlmIHIgPT0gIGInZEdsdElHWXhZMkUyWW1VME5qUmlPV1ZtWVRGalkyRTJabVprTm1ObU1tUTVaak15XHJcbic6CisgICAgICAgICAgICAgICAgaWYgKHIgPT0gYidkR2x0SUdZeFkyRTJZbVUwTmpSaU9XVm1ZVCcKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZqWTJFMlptWmtObU5tTW1RNVpqTXlcclxuJyk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0NSQU0tTUQ1IHN1Y2Nlc3NmdWwnKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ05PJywgJ05vIGFjY2VzcycpCkBAIC0zMjQsMjcgKzQxOSw0NSBAQAogICAgICAgICAgICAgcmV0LCBkYXRhID0gY2xpZW50LmxvZ2luX2NyYW1fbWQ1KCJ0aW0iLCBiInRhbnN0YWFmdGFuc3RhYWYiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsICJPSyIpCiAKLQogICAgIGRlZiB0ZXN0X2xpbmV0b29sb25nKHNlbGYpOgogICAgICAgICBjbGFzcyBUb29Mb25nSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CiAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgogICAgICAgICAgICAgICAgICMgU2VuZCBhIHZlcnkgbG9uZyByZXNwb25zZSBsaW5lCi0gICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiJyogT0sgJyArIGltYXBsaWIuX01BWExJTkUqYid4JyArIGInXHJcbicpCisgICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiJyogT0sgJyArIGltYXBsaWIuX01BWExJTkUgKiBiJ3gnICsgYidcclxuJykKIAogICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3NlcnZlcihUb29Mb25nSGFuZGxlcikgYXMgc2VydmVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW1hcF9jbGFzcywgKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKIAorICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9zaW1wbGVfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgICMgc2ltcGxlc3QgY2FsbAorICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3NlcnZlcihTaW1wbGVJTUFQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAgd2l0aCBzZWxmLmltYXBfY2xhc3MoKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgcGFzcwogCi1jbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKEJhc2VUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKToKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICB3aXRoIHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzKSBhcyBpbWFwOgorICAgICAgICAgICAgICAgIGltYXAubG9naW4oJ3VzZXInLCAncGFzcycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIubG9nZ2VkLCAndXNlcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubG9nZ2VkKQogCi0gICAgc2VydmVyX2NsYXNzID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcgotICAgIGltYXBfY2xhc3MgPSBpbWFwbGliLklNQVA0CisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2xvZ291dChzZWxmKToKKyAgICAgICAgIyB3aGF0IGhhcHBlbnMgaWYgYWxyZWFkeSBsb2dvdXQgaW4gdGhlIGJsb2NrPworICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3NlcnZlcihTaW1wbGVJTUFQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAgd2l0aCBzZWxmLmltYXBfY2xhc3MoKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcykgYXMgaW1hcDoKKyAgICAgICAgICAgICAgICBpbWFwLmxvZ2luKCd1c2VyJywgJ3Bhc3MnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmxvZ2dlZCwgJ3VzZXInKQorICAgICAgICAgICAgICAgIGltYXAubG9nb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubG9nZ2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLmxvZ2dlZCkKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJTU0wgbm90IGF2YWlsYWJsZSIpCi1jbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzU1NMKEJhc2VUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKToKLQorY2xhc3MgVGhyZWFkZWROZXR3b3JrZWRUZXN0c1NTTChUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKToKICAgICBzZXJ2ZXJfY2xhc3MgPSBTZWN1cmVUQ1BTZXJ2ZXIKICAgICBpbWFwX2NsYXNzID0gSU1BUDRfU1NMCiAKQEAgLTM1NSw4ICs0NjgsOSBAQAogICAgICAgICBzc2xfY29udGV4dC5jaGVja19ob3N0bmFtZSA9IFRydWUKICAgICAgICAgc3NsX2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENBRklMRSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLkNlcnRpZmljYXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgJzEyNy4wLjAuMScgZG9lc24ndCBtYXRjaCAnbG9jYWxob3N0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgc3NsLkNlcnRpZmljYXRlRXJyb3IsCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICcxMjcuMC4wLjEnIGRvZXNuJ3QgbWF0Y2ggJ2xvY2FsaG9zdCciKToKICAgICAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CiAgICAgICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5pbWFwX2NsYXNzKCpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb250ZXh0PXNzbF9jb250ZXh0KQpAQCAtMzY4LDYgKzQ4Miw4IEBACiAgICAgICAgICAgICBjbGllbnQuc2h1dGRvd24oKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKAorICAgIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLCAnbmV0d29yayByZXNvdXJjZSBkaXNhYmxlZCcpCiBjbGFzcyBSZW1vdGVJTUFQVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgaG9zdCA9ICdjeXJ1cy5hbmRyZXcuY211LmVkdScKICAgICBwb3J0ID0gMTQzCkBAIC00MDEsNiArNTE3LDggQEAKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJTU0wgbm90IGF2YWlsYWJsZSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKSwgJ25ldHdvcmsgcmVzb3VyY2UgZGlzYWJsZWQnKQogY2xhc3MgUmVtb3RlSU1BUF9TVEFSVFRMU1Rlc3QoUmVtb3RlSU1BUFRlc3QpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDU0LDcgKzU3Miw4IEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfc3NsX2NvbnRleHQoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcygKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCiAKICAgICBkZWYgdGVzdF9sb2dvdXQoc2VsZik6CkBAIC00NjUsMzUgKzU4NCwxNSBAQAogCiAgICAgZGVmIHRlc3Rfc3NsX2NvbnRleHRfY2VydGZpbGVfZXhjbHVzaXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKIAogICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2tleWZpbGVfZXhjbHVzaXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCi0KLQotZGVmIGxvYWRfdGVzdHMoKmFyZ3MpOgotICAgIHRlc3RzID0gW1Rlc3RJbWFwbGliXQotCi0gICAgaWYgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6Ci0gICAgICAgIGlmIHNzbDoKLSAgICAgICAgICAgIGdsb2JhbCBDRVJURklMRSwgQ0FGSUxFCi0gICAgICAgICAgICBDRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXljZXJ0My5wZW0iKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKENFUlRGSUxFKToKLSAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZXMhIikKLSAgICAgICAgICAgIENBRklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweWNhY2VydC5wZW0iKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKENBRklMRSk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIENBIGZpbGUhIikKLSAgICAgICAgdGVzdHMuZXh0ZW5kKFsKLSAgICAgICAgICAgIFRocmVhZGVkTmV0d29ya2VkVGVzdHMsIFRocmVhZGVkTmV0d29ya2VkVGVzdHNTU0wsCi0gICAgICAgICAgICBSZW1vdGVJTUFQVGVzdCwgUmVtb3RlSU1BUF9TU0xUZXN0LCBSZW1vdGVJTUFQX1NUQVJUVExTVGVzdCwKLSAgICAgICAgXSkKLQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoW3VuaXR0ZXN0Lm1ha2VTdWl0ZSh0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKaW5kZXggMGFkNDM0My4uYjU0ZGFmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKQEAgLTE2LDcgKzE2LDkgQEAKICAgICAoJ3B5dGhvbi5yYXMnLCAncmFzdCcpLAogICAgICgncHl0aG9uLnNnaScsICdyZ2InKSwKICAgICAoJ3B5dGhvbi50aWZmJywgJ3RpZmYnKSwKLSAgICAoJ3B5dGhvbi54Ym0nLCAneGJtJykKKyAgICAoJ3B5dGhvbi54Ym0nLCAneGJtJyksCisgICAgKCdweXRob24ud2VicCcsICd3ZWJwJyksCisgICAgKCdweXRob24uZXhyJywgJ2V4cicpLAogKQogCiBjbGFzcyBVbnNlZWthYmxlSU8oaW8uRmlsZUlPKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggODBiOWVjMy4uNDdiZjFkZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTExMSw3ICsxMTEsNiBAQAogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgJy5weScpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgJy5weWMnKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHlvJykKIAogICAgIGRlZiB0ZXN0X2lzc3VlNTYwNChzZWxmKToKICAgICAgICAgIyBUZXN0IGNhbm5vdCBjb3ZlciBpbXAubG9hZF9jb21waWxlZCBmdW5jdGlvbi4KQEAgLTE5NCw3ICsxOTMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrYWdlLmIsIDIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgICAgIGZvciBleHQgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CisgICAgICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgZXh0KQogICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGluaXRfZmlsZV9uYW1lICsgZXh0KQogICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUodGVzdF9wYWNrYWdlX25hbWUpCkBAIC0zNDYsNTYgKzM0NSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAotICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKLSAgICAgICAgIyBOb24gY2FjaGUgdGFnIG1lYW5zIE5vdEltcGxlbWVudGVkRXJyb3IuCi0gICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgotICAgICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnd2hhdGV2ZXIucHknKQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fZG90KHNlbGYpOgotICAgICAgICAjIERpcmVjdG9yeSB3aXRoIGEgZG90LCBmaWxlbmFtZSB3aXRob3V0IGRvdC4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdmaWxlJykKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxle30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgotICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKLSAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCi0gICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfY3dkKHNlbGYpOgotICAgICAgICBwYXRoID0gJ2Zvby5weScKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6Ci0gICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKLSAgICAgICAgIyB2YWx1ZS4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQotICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQotICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCi0gICAgICAgICMgcHJvcGFnYXRlcy4KLSAgICAgICAgY2xhc3MgQmVhcmlzaDoKLSAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKQEAgLTQwNyw2OCArMzU2LDYgQEAKICAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQogCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgotICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQotICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKLSAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgotICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKLSAgICAgICAgIyBpcyByYWlzZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnL2Zvby9iYXIvYmF6cXV4LnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19zbGFzaChzZWxmKToKLSAgICAgICAgIyBObyBzbGFzaGVzIGF0IGFsbCBpbiBwYXRoIC0+IFZhbHVlRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCBpbXAuc291cmNlX2Zyb21fY2FjaGUsICdmb28uY3B5dGhvbi0zMi5weWMnKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX2Zld19kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBmZXcgZG90cyBpbiBmaW5hbCBwYXRoIGNvbXBvbmVudCAtPiBWYWx1ZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnX19weWNhY2hlX18vZm9vLnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fbWFueV9kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBtYW55IGRvdHMgaW4gZmluYWwgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICdfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX19weWNhY2hlX18oc2VsZik6Ci0gICAgICAgICMgQW5vdGhlciBwcm9ibGVtIHdpdGggdGhlIHBhdGggLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgotICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgICAgICBpZiBzeXMucGF0aFswXSA9PSBvcy5jdXJkaXI6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5IGZpbGUuCi0gICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoJ3BlcDMxNDcvX19pbml0X18ucHknKQotICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQotICAgICAgICBleHBlY3RlZF9fX2ZpbGVfXyA9IG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCi0gICAgICAgICMgRW5zdXJlIHdlIGxvYWQgdGhlIHB5YyBmaWxlLgotICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKLQogCiBjbGFzcyBOdWxsSW1wb3J0ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggYjQ4NDJjNS4uNTg2NDc4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWZyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IF9nZXRfc291cmNlZmlsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgX2dldF9zb3VyY2VmaWxlCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTIxLDggKzIxLDkgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCiAgICAgRW52aXJvbm1lbnRWYXJHdWFyZCwgVEVTVEZOLCBjaGVja193YXJuaW5ncywgZm9yZ2V0LCBpc19qeXRob24sCiAgICAgbWFrZV9sZWdhY3lfcHljLCBybXRyZWUsIHJ1bl91bml0dGVzdCwgc3dhcF9hdHRyLCBzd2FwX2l0ZW0sIHRlbXBfdW1hc2ssCi0gICAgdW5saW5rLCB1bmxvYWQsIGNyZWF0ZV9lbXB0eV9maWxlLCBjcHl0aG9uX29ubHksIFRFU1RGTl9VTkVOQ09EQUJMRSkKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorICAgIHVubGluaywgdW5sb2FkLCBjcmVhdGVfZW1wdHlfZmlsZSwgY3B5dGhvbl9vbmx5LCBURVNURk5fVU5FTkNPREFCTEUsCisgICAgdGVtcF9kaXIpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKIHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZSA9IHVuaXR0ZXN0LnNraXBJZigKQEAgLTMyLDcgKzMzLDYgQEAKIGRlZiByZW1vdmVfZmlsZXMobmFtZSk6CiAgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKICAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKLSAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKICAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKICAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgIyB0ZW1wb3JhcmlseSBjbGVhcnMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIChpZiBhbnkpCiAgICAgIyByZXZlcnRzIG9yIHJlbW92ZXMgdGhlIG1vZHVsZSB3aGVuIGNsZWFuaW5nIHVwCiAgICAgbmFtZSA9IG5hbWUgb3IgInNwYW0iCi0gICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKKyAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKICAgICAgICAgcGF0aCA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQodGVtcGRpciwgbmFtZSwgc291cmNlKQogICAgICAgICBvbGRfbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKG5hbWUsIE5vbmUpCiAgICAgICAgIHRyeToKQEAgLTg0LDcgKzg0LDYgQEAKICAgICAgICAgZGVmIHRlc3Rfd2l0aF9leHRlbnNpb24oZXh0KToKICAgICAgICAgICAgICMgVGhlIGV4dGVuc2lvbiBpcyBub3JtYWxseSAiLnB5IiwgcGVyaGFwcyAiLnB5dyIuCiAgICAgICAgICAgICBzb3VyY2UgPSBURVNURk4gKyBleHQKLSAgICAgICAgICAgIHB5byA9IFRFU1RGTiArICIucHlvIgogICAgICAgICAgICAgaWYgaXNfanl0aG9uOgogICAgICAgICAgICAgICAgIHB5YyA9IFRFU1RGTiArICIkcHkuY2xhc3MiCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE1LDcgKzExNCw2IEBACiAgICAgICAgICAgICAgICAgZm9yZ2V0KFRFU1RGTikKICAgICAgICAgICAgICAgICB1bmxpbmsoc291cmNlKQogICAgICAgICAgICAgICAgIHVubGluayhweWMpCi0gICAgICAgICAgICAgICAgdW5saW5rKHB5bykKIAogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQogICAgICAgICB0cnk6CkBAIC0xMzgsNyArMTM2LDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoJ10nKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgQ29tcGlsZSAmIHJlbW92ZSAucHkgZmlsZTsgd2Ugb25seSBuZWVkIC5weWMgKG9yIC5weW8pLgorICAgICAgICAgICAgIyBDb21waWxlICYgcmVtb3ZlIC5weSBmaWxlOyB3ZSBvbmx5IG5lZWQgLnB5Yy4KICAgICAgICAgICAgICMgQnl0ZWNvZGUgbXVzdCBiZSByZWxvY2F0ZWQgZnJvbSB0aGUgUEVQIDMxNDcgYnl0ZWNvZGUtb25seSBsb2NhdGlvbi4KICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShmaWxlbmFtZSkKICAgICAgICAgZmluYWxseToKQEAgLTI1Miw3ICsyNTAsNyBAQAogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChtb2QuX19maWxlX18pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4dCwgKCcucHljJywgJy5weW8nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0LCAnLnB5YycpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KICAgICAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCkBAIC0yOTQsNyArMjkyLDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciIpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZXJybm8sICdFSU5WQUwnLCBOb25lKSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyICh7fSkiLmZvcm1hdChlKSkKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMzI4LDcgKzMyNyw3IEBACiAKIEBza2lwX2lmX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIGNsYXNzIEZpbGVQZXJtaXNzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgdGVzdHMgZm9yIGZpbGUgbW9kZSBvbiBjYWNoZWQgLnB5Yy8ucHlvIGZpbGVzCisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljIGZpbGVzCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQpAQCAtMzM5LDcgKzMzOCw3IEBACiAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cwpAQCAtMzU4LDcgKzM1Nyw3IEBACiAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QobW9kZSkpCkBAIC0zNzMsNyArMzcyLDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLnB5YyBmaWxlIikKICAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCiAKICAgICAgICAgZXhwZWN0ZWQgPSBtb2RlIHwgMG8yMDAgIyBBY2NvdW50IGZvciBmaXggZm9yIGlzc3VlICM2MDc0CkBAIC00MDQsMTAgKzQwMyw3IEBACiAgICAgICAgICAgICB1bmxpbmsocGF0aCkKICAgICAgICAgICAgIHVubG9hZChuYW1lKQogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJjIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJvIgorICAgICAgICAgICAgYnl0ZWNvZGVfb25seSA9IHBhdGggKyAiYyIKICAgICAgICAgICAgIG9zLnJlbmFtZShpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoKSwgYnl0ZWNvZGVfb25seSkKICAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCkBAIC01NjgsNyArNTY0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3JlbGltcG9ydF9zdGFyKHNlbGYpOgogICAgICAgICAjIFRoaXMgd2lsbCBpbXBvcnQgKiBmcm9tIC50ZXN0X2ltcG9ydC4KLSAgICAgICAgZnJvbSAuIGltcG9ydCByZWxpbXBvcnQKKyAgICAgICAgZnJvbSAuLiBpbXBvcnQgcmVsaW1wb3J0CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlbGltcG9ydCwgIlJlbGF0aXZlSW1wb3J0VGVzdHMiKSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMzIyMShzZWxmKToKQEAgLTYzMSw5ICs2MjcsNyBAQAogCiAKIGNsYXNzIFB5Y2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUZXN0IHRoZSB2YXJpb3VzIFBFUCAzMTQ3IHJlbGF0ZWQgYmVoYXZpb3JzLgotCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgICMgVGVzdCB0aGUgdmFyaW91cyBQRVAgMzE0Ny80ODgtcmVsYXRlZCBiZWhhdmlvcnMuCiAKICAgICBkZWYgX2NsZWFuKHNlbGYpOgogICAgICAgICBmb3JnZXQoVEVTVEZOKQpAQCAtNjU4LDkgKzY1MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQogICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5e30nLmZvcm1hdCgKLSAgICAgICAgICAgIFRFU1RGTiwgc2VsZi50YWcsICdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweWNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZWNvZGUgZmlsZSB7IXJ9IGZvciB7IXJ9IGRvZXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdCcuZm9ybWF0KHB5Y19wYXRoLCBURVNURk4pKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKQEAgLTY3Myw4ICs2NjgsMTAgQEAKICAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMjIyKToKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5YycuZm9ybWF0KFRFU1RGTiwgc2VsZi50YWcpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVjb2RlIGZpbGUgeyFyfSBmb3IgeyFyfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzJy5mb3JtYXQocHljX3BhdGgsIFRFU1RGTikpCiAKICAgICBAc2tpcF9pZl9kb250X3dyaXRlX2J5dGVjb2RlCiAgICAgZGVmIHRlc3RfbWlzc2luZ19zb3VyY2Uoc2VsZik6CkBAIC04NDksMTkgKzg0NiwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX3BhY2thZ2VfXywgJ2ltcG9ydGxpYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uZW5kc3dpdGgoJ19ib290c3RyYXAucHknKSwgbW9kLl9fZmlsZV9fKQogCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbF9pc19ib290c3RyYXBfZXh0ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCddCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kLCBfYm9vdHN0cmFwX2V4dGVybmFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19wYWNrYWdlX18sICdpbXBvcnRsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kLl9fZmlsZV9fLmVuZHN3aXRoKCdfYm9vdHN0cmFwX2V4dGVybmFsLnB5JyksIG1vZC5fX2ZpbGVfXykKKwogICAgIGRlZiB0ZXN0X3RoZXJlX2Nhbl9iZV9vbmx5X29uZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTUzODYgcmV2ZWFsZWQgYSB0cmlja3kgbG9vcGhvbGUgaW4gdGhlIGJvb3RzdHJhcHBpbmcKICAgICAgICAgIyBUaGlzIHRlc3QgaXMgdGVjaG5pY2FsbHkgcmVkdW5kYW50LCBzaW5jZSB0aGUgYnVnIGNhdXNlZCBpbXBvcnRpbmcKICAgICAgICAgIyB0aGlzIHRlc3QgbW9kdWxlIHRvIGNyYXNoIGNvbXBsZXRlbHksIGJ1dCBpdCBoZWxwcyBwcm92ZSB0aGUgcG9pbnQKICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQotICAgICAgICBzZWxmLmFzc2VydElzKG1hY2hpbmVyeS5GaWxlRmluZGVyLCBtb2QuRmlsZUZpbmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuTW9kdWxlU3BlYywgbW9kLk1vZHVsZVNwZWMpCiAKIAogQGNweXRob25fb25seQogY2xhc3MgR2V0U291cmNlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX2dldF9zb3VyY2VmaWxlKCkgYXMgdXNlZCBieSB0aGUgQyBBUEkuCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fZ2V0X3NvdXJjZWZpbGUoKSBhcyB1c2VkIGJ5IHRoZSBDIEFQSS4KIAogICAgIEJlY2F1c2Ugb2YgdGhlIHBlY3VsaWFyaXRpZXMgb2YgdGhlIG5lZWQgb2YgdGhpcyBmdW5jdGlvbiwgdGhlIHRlc3RzIGFyZQogICAgIGtub3dpbmdseSB3aGl0ZWJveCB0ZXN0cy4KQEAgLTg3MSw3ICs4NzYsNyBAQAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2VmaWxlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIGEgdmFsaWQgYnl0ZWNvZGUgcGF0aCwgcmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICMgc291cmNlIGZpbGUgaWYgaXQgZXhpc3RzLgotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwLl9wYXRoX2lzZmlsZScpIGFzIF9wYXRoX2lzZmlsZToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CiAgICAgICAgICAgICBfcGF0aF9pc2ZpbGUucmV0dXJuX3ZhbHVlID0gVHJ1ZTsKICAgICAgICAgICAgIHBhdGggPSBURVNURk4gKyAnLnB5YycKICAgICAgICAgICAgIGV4cGVjdCA9IFRFU1RGTiArICcucHknCkBAIC04ODAsNyArODg1LDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlZmlsZV9ub19zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gYSB2YWxpZCBieXRlY29kZSBwYXRoIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHNvdXJjZSBwYXRoLAogICAgICAgICAjIHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgcGF0aC4KLSAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CisgICAgICAgIHdpdGggbW9jay5wYXRjaCgnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3BhdGhfaXNmaWxlJykgYXMgX3BhdGhfaXNmaWxlOgogICAgICAgICAgICAgX3BhdGhfaXNmaWxlLnJldHVybl92YWx1ZSA9IEZhbHNlOwogICAgICAgICAgICAgcGF0aCA9IFRFU1RGTiArICcucHljJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3NvdXJjZWZpbGUocGF0aCksIHBhdGgpCkBAIC0xMDM1LDcgKzEwNDAsNyBAQAogICAgICAgICAjIFdlIHNpbXVsYXRlIGEgYnVnIGluIGltcG9ydGxpYiBhbmQgY2hlY2sgdGhhdCBpdCdzIG5vdCBzdHJpcHBlZAogICAgICAgICAjIGF3YXkgZnJvbSB0aGUgdHJhY2ViYWNrLgogICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIiKQotICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnXQogICAgICAgICBpZiAnbG9hZF9tb2R1bGUnIGluIHZhcnMoaW1wb3J0bGliLlNvdXJjZUxvYWRlcik6CiAgICAgICAgICAgICBvbGRfZXhlY19tb2R1bGUgPSBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmV4ZWNfbW9kdWxlCiAgICAgICAgIGVsc2U6CkBAIC0xMDY4LDYgKzEwNzMsNDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXNvbGF0ZWQ9RmFsc2UpCiAKIAorY2xhc3MgQ2lyY3VsYXJJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJTZWUgdGhlIGRvY3N0cmluZ3Mgb2YgdGhlIG1vZHVsZXMgYmVpbmcgaW1wb3J0ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZQorICAgIHRlc3QuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIk1ha2Ugc3VyZSBubyBtb2R1bGVzIHByZS1leGlzdCBpbiBzeXMubW9kdWxlcyB3aGljaCBhcmUgYmVpbmcgdXNlZCB0bworICAgICAgICB0ZXN0LiIiIgorICAgICAgICBmb3Iga2V5IGluIGxpc3Qoc3lzLm1vZHVsZXMua2V5cygpKToKKyAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKCd0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cycpOgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1trZXldCisKKyAgICBkZWYgdGVzdF9kaXJlY3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5iYXNpYworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB0aHJvdWdoIHJlbGF0aXZlIGltcG9ydHMgZmFpbGVkJykKKworICAgIGRlZiB0ZXN0X2luZGlyZWN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuaW5kaXJlY3QKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWxhdGl2ZSBpbXBvcnQgaW4gbW9kdWxlIGNvbnRyaWJ1dGluZyB0byBjaXJjdWxhciAnCisgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBmYWlsZWQnKQorCisgICAgZGVmIHRlc3Rfc3VicGFja2FnZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRlc3QudGVzdF9pbXBvcnQuZGF0YS5jaXJjdWxhcl9pbXBvcnRzLnN1YnBhY2thZ2UKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdjaXJjdWxhciBpbXBvcnQgaW52b2x2aW5nIGEgc3VicGFja2FnZSBmYWlsZWQnKQorCisgICAgZGVmIHRlc3RfcmViaW5kaW5nKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMucmViaW5kaW5nIGFzIHJlYmluZGluZworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB3aXRoIHJlYmluZGluZyBvZiBtb2R1bGUgYXR0cmlidXRlIGZhaWxlZCcpCisgICAgICAgIGZyb20gdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuc3VicGtnIGltcG9ydCB1dGlsCisgICAgICAgIHNlbGYuYXNzZXJ0SXModXRpbC51dGlsLCByZWJpbmRpbmcudXRpbCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgVGVzdCBuZWVkcyB0byBiZSBhIHBhY2thZ2UsIHNvIHdlIGNhbiBkbyByZWxhdGl2ZSBpbXBvcnRzLgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGYwMmExCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgdW5pdHRlc3QKKwordW5pdHRlc3QubWFpbigndGVzdC50ZXN0X2ltcG9ydCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MWUzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYy5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydHMgdGhyb3VnaCBkaXJlY3QsIHJlbGF0aXZlIGltcG9ydHMuIiIiCitmcm9tIC4gaW1wb3J0IGJhc2ljMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljMi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiZDJmMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MjU3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvaW5kaXJlY3QucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYywgYmFzaWMyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc3Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpAQCAtMCwwICsxLDMgQEAKKyIiIlRlc3QgdGhlIGJpbmRpbmcgb2YgbmFtZXMgd2hlbiBhIGNpcmN1bGFyIGltcG9ydCBzaGFyZXMgdGhlIHNhbWUgbmFtZSBhcyBhbgorYXR0cmlidXRlLiIiIgorZnJvbSAucmViaW5kaW5nMiBpbXBvcnQgdXRpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2E5ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIC5zdWJwa2cgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgcmViaW5kaW5nCit1dGlsID0gdXRpbC51dGlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwYWNrYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNDEyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydCBpbnZvbHZpbmcgYSBzdWItcGFja2FnZS4iIiIKK2Zyb20gLnN1YnBrZyBpbXBvcnQgc3VicGFja2FnZTIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvc3VicGFja2FnZTIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3Yjg5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5CkBAIC0wLDAgKzEsMiBAQAorI2Zyb20gLnV0aWwgaW1wb3J0IHV0aWwKK2Zyb20gLi4gaW1wb3J0IHN1YnBhY2thZ2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNiZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy91dGlsLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHV0aWwoKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2JkODQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB1dGlsKCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKaW5kZXggOTM0NTYyZi4uYTJlNmUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDIxICsxLDIxIEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBidWlsdGluX3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEZpbmRTcGVjVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9zcGVjKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfc3BlYyhidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZC5vcmlnaW4sICdidWlsdC1pbicpCiAKQEAgLTM5LDIzICszOSwyNiBAQAogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMoYnVpbHRpbl91dGlsLk5BTUUsCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNwZWMpCiAKLUZyb3plbl9GaW5kU3BlY1Rlc3RzLCBTb3VyY2VfRmluZFNwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9tb2R1bGUoKSBmb3IgYnVpbHQtaW4gbW9kdWxlcy4iIiIKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgIyBDb21tb24gY2FzZS4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZm91bmQsICdsb2FkX21vZHVsZScpKQogCkBAIC03MiwxMyArNzUsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9wYXRoKHNlbGYpOgogICAgICAgICAjIFRoZSB2YWx1ZSBmb3IgJ3BhdGgnIHNob3VsZCBhbHdheXMgdHJpZ2dlciBhIGZhaWxlZCBpbXBvcnQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKworKEZyb3plbl9GaW5kZXJUZXN0cywKKyBTb3VyY2VfRmluZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDFmODM1NzQuLmIxMzQ5ZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMSwxNCArMSwxMyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgYnVpbHRpbl91dGlsCiAKLWZyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAotCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CiAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCkBAIC0yOSw4ICsyOCw4IEBACiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUpCiAKICAgICAjIEJ1aWx0LWluIG1vZHVsZXMgY2Fubm90IGJlIGEgcGFja2FnZS4KQEAgLTQxLDkgKzQwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHNhbWUgbW9kdWxlIGlzIHVzZWQgaW4gYSByZWxvYWQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQorICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgpAQCAtNjYsNDAgKzY1LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG1vZHVsZV9uYW1lKQogCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0czoKIAogICAgICIiIlRlc3RzIGZvciBJbnNwZWN0TG9hZGVyIG1ldGhvZHMgZm9yIEJ1aWx0aW5JbXBvcnRlci4iIiIKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X2NvZGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKICAgICAgICAgIyBUaGVyZSBpcyBubyBzb3VyY2UuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfc291cmNlKGJ1aWx0aW5fdXRpbC5OQU1FKQorICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X3NvdXJjZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuaXNfcGFja2FnZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmlzX3BhY2thZ2UodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0KQogCisgICAgQHVuaXR0ZXN0LnNraXBJZih1dGlsLkJVSUxUSU5TLmJhZF9uYW1lIGlzIE5vbmUsICdhbGwgbW9kdWxlcyBhcmUgYnVpbHQgaW4nKQogICAgIGRlZiB0ZXN0X25vdF9idWlsdGluKHNlbGYpOgogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1ldGhfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBtZXRob2QoYnVpbHRpbl91dGlsLkJBRF9OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgICAgICBtZXRob2QodXRpbC5CVUlMVElOUy5iYWRfbmFtZSkKIAotRnJvemVuX0luc3BlY3RMb2FkZXJUZXN0cywgU291cmNlX0luc3BlY3RMb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBJbnNwZWN0TG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fSW5zcGVjdExvYWRlclRlc3RzLAorIFNvdXJjZV9JbnNwZWN0TG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDQ2OTkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbXBvcnQgc3lzCi0KLWFzc2VydCAnZXJybm8nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotTkFNRSA9ICdlcnJubycKLQotYXNzZXJ0ICdpbXBvcnRsaWInIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKLUJBRF9OQU1FID0gJ2ltcG9ydGxpYicKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IGJiMjUyOGUuLjcwNmMzZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwyNSArMSwyNCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKICMgWFhYIGZpbmRfc3BlYyB0ZXN0cwogCi1AdW5pdHRlc3Quc2tpcElmKGV4dF91dGlsLkZJTEVOQU1FIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdDoKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmKToKLSAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQorICAgICAgICBnb29kX25hbWUgPSB1dGlsLkVYVEVOU0lPTlMubmFtZQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAorICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuRVhURU5TSU9OUy5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSkKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShiYWRfbmFtZSkKQEAgLTI3LDcgKzI2LDcgQEAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwX2V4dGVybmFsLl9vcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmRfbW9kdWxlKCkKQEAgLTM2LDE1ICszNSwxNiBAQAogICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAotRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwgU291cmNlX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0LAotICAgICAgICBtYWNoaW5lcnk9W2Zyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnldKQorCisoRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwKKyBTb3VyY2VfRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5CisgKSA9IHV0aWwudGVzdF9ib3RoKEV4dGVuc2lvbk1vZHVsZUNhc2VTZW5zaXRpdml0eVRlc3QsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA5OTBmMjljLi43MWJmNjdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDggKzEsNyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC0xNCw3ICsxMyw3IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLlBBVEgsCisgICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLkVYVEVOU0lPTlMucGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC0yMiw3ICsyMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuTkFNRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKSkKIAogICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgdGVzdF9wYWNrYWdlID0gdGVzdF9wYWNrYWdlX2luX3BhY2thZ2UgPSBOb25lCkBAIC0zNiw4ICszNSwxMCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZF9tb2R1bGUoJ2FzZGZqa2w7JykpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKaW5kZXggZmQ5YWJmMi4uMTU0YTc5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKQEAgLTgsNiArNyw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgaW1wb3J0bGliCiAKIAogY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKQEAgLTE1LDggKzE2LDggQEAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF91dGlsLkZJTEVQQVRIKQorICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIodXRpbC5FWFRFTlNJT05TLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQpAQCAtMjksMjMgKzMwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdYWFgnKQogCiAgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6Ci0gICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisgICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcih1dGlsLkVYVEVOU0lPTlMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuRVhURU5TSU9OUy5maWxlX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIsIG90aGVyKQogCiAgICAgZGVmIHRlc3RfaW5lcXVhbGl0eShzZWxmKToKLSAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKKyAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIHV0aWwuRVhURU5TSU9OUy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5FWFRFTlNJT05TLmZpbGVfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmxvYWRlciwgb3RoZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuRVhURU5TSU9OUy5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5FWFRFTlNJT05TLm5hbWUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCB1dGlsLkVYVEVOU0lPTlMubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odXRpbC5FWFRFTlNJT05TLm5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCiAKQEAgLTU2LDkgKzU3LDkgQEAKICAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSh1dGlsLkVYVEVOU0lPTlMubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkVYVEVOU0lPTlMubmFtZSkKKyAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogCiAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgpAQCAtNzEsMTUgKzcyLDE5NiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKGV4dF91dGlsLk5BTUUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2UodXRpbC5FWFRFTlNJT05TLm5hbWUpKQogICAgICAgICBmb3Igc3VmZml4IGluIHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3NvbWUnLCAncGF0aCcsICdwa2cnLCAnX19pbml0X18nICsgc3VmZml4KQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorKEZyb3plbl9Mb2FkZXJUZXN0cywKKyBTb3VyY2VfTG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKK2NsYXNzIE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgorICAgICIiIlRlc3QgbG9hZGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIChQRVAgNDg5KQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm5hbWUgPSAnX3Rlc3RtdWx0aXBoYXNlJworICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKE5vbmUpCisgICAgICAgIHNlbGYuc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhzZWxmLm5hbWUpCisgICAgICAgIGFzc2VydCBzZWxmLnNwZWMKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKAorICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnNwZWMub3JpZ2luKQorCisgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X3BhY2thZ2UgPSBOb25lCisKKyAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQorCisgICAgIyBIYW5kbGluZyBmYWlsdXJlIG9uIHJlbG9hZCBpcyB0aGUgdXAgdG8gdGhlIG1vZHVsZS4KKyAgICB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUgPSBOb25lCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgbG9hZGluZyBhbiBleHRlbnNpb24gbW9kdWxlJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBbKCdfX25hbWVfXycsIHNlbGYubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBzZWxmLnNwZWMub3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5uYW1lXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25hbGl0eShzZWxmKToKKyAgICAgICAgJycnVGVzdCBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHN0dWZmIGRlZmluZWQgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZScnJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICAgICAgZXggPSBtb2R1bGUuRXhhbXBsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRlbW8oJ2FiY2QnKSwgJ2FiY2QnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5kZW1vKCksIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBleC5hYmMKKyAgICAgICAgICAgIGV4LmFiYyA9IDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYWJjLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuZm9vKDksIDkpLCAxOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuU3RyKCksIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLlN0cigxKSArICcyMycsICcxMjMnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhtb2R1bGUuZXJyb3IpOgorICAgICAgICAgICAgICAgIHJhaXNlIG1vZHVsZS5lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5pbnRfY29uc3QsIDE5NjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5zdHJfY29uc3QsICdzb21ldGhpbmcgZGlmZmVyZW50JykKKworICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IHJlbG9hZCBkaWRuJ3QgcmUtc2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGV4X2NsYXNzID0gbW9kdWxlLkV4YW1wbGUKKyAgICAgICAgICAgIGltcG9ydGxpYi5yZWxvYWQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleF9jbGFzcywgbW9kdWxlLkV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF90cnlfcmVnaXN0cmF0aW9uKHNlbGYpOgorICAgICAgICAnJydBc3NlcnQgdGhhdCB0aGUgUHlTdGF0ZV97RmluZCxBZGQsUmVtb3ZlfU1vZHVsZSBDIEFQSSBkb2Vzbid0IHdvcmsnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0ZpbmRNb2R1bGUnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMCksIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0FkZE1vZHVsZScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ1B5U3RhdGVfUmVtb3ZlTW9kdWxlJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYygyKQorCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYpOgorICAgICAgICAnJydMb2FkIHRoZSBtb2R1bGUgZnJvbSB0aGUgdGVzdCBleHRlbnNpb24nJycKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKKworICAgIGRlZiBsb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgJycnTG9hZCBhIG1vZHVsZSBmcm9tIHRoZSB0ZXN0IGV4dGVuc2lvbiBieSBuYW1lJycnCisgICAgICAgIG9yaWdpbiA9IHNlbGYuc3BlYy5vcmlnaW4KKyAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgb3JpZ2luKQorICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X2xvYWRfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgYSBzaW11bGF0ZWQgc3VibW9kdWxlJycnCisgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZSgncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLnN0cl9jb25zdCwgJ3NvbWV0aGluZyBkaWZmZXJlbnQnKQorCisgICAgZGVmIHRlc3RfbG9hZF9zaG9ydF9uYW1lKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgbW9kdWxlIHdpdGggYSBvbmUtY2hhcmFjdGVyIG5hbWUnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKCd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuc3RyX2NvbnN0LCAnc29tZXRoaW5nIGRpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3gnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X2xvYWRfdHdpY2Uoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgdGhhdCAyIGxvYWRzIHJlc3VsdCBpbiAyIG1vZHVsZSBvYmplY3RzJycnCisgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUoc2VsZi5uYW1lKQorICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCBub25leGlzdGVudCBtb2R1bGUnJycKKyAgICAgICAgbmFtZSA9ICdhc2RmamtsOycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X3VubG9hZGFibGVfbm9uYXNjaWkoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgYmVoYXZpb3Igd2l0aCBub25leGlzdGVudCBtb2R1bGUgd2l0aCBub24tQVNDSUkgbmFtZScnJworICAgICAgICBuYW1lID0gJ2ZvXHhmMycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X25vbm1vZHVsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCByZXR1cm5pbmcgYSBub24tbW9kdWxlIG9iamVjdCBmcm9tIGNyZWF0ZSB3b3JrcycnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19ub25tb2R1bGUnCisgICAgICAgIG1vZCA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR5cGUobW9kKSwgdHlwZSh1bml0dGVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRocmVlLCAzKQorCisgICAgZGVmIHRlc3RfbnVsbF9zbG90cyhzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IE5VTEwgc2xvdHMgYXJlbid0IGEgcHJvYmxlbScnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19udWxsX3Nsb3RzJworICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYWRfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgJycnVGVzdCBTeXN0ZW1FcnJvciBpcyByYWlzZWQgZm9yIG1pc2JlaGF2aW5nIGV4dGVuc2lvbnMnJycKKyAgICAgICAgZm9yIG5hbWVfYmFzZSBpbiBbCisgICAgICAgICAgICAgICAgJ2JhZF9zbG90X2xhcmdlJywKKyAgICAgICAgICAgICAgICAnYmFkX3Nsb3RfbmVnYXRpdmUnLAorICAgICAgICAgICAgICAgICdjcmVhdGVfaW50X3dpdGhfc3RhdGUnLAorICAgICAgICAgICAgICAgICduZWdhdGl2ZV9zaXplJywKKyAgICAgICAgICAgICAgICAnZXhwb3J0X251bGwnLAorICAgICAgICAgICAgICAgICdleHBvcnRfdW5pbml0aWFsaXplZCcsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF9yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF91bnJlcG9ydGVkX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgJ2NyZWF0ZV9udWxsJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3JhaXNlJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3VucmVwb3J0ZWRfZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAnbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cycsCisgICAgICAgICAgICAgICAgJ2V4ZWNfZXJyJywKKyAgICAgICAgICAgICAgICAnZXhlY19yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24nLAorICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lX2Jhc2UpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnXycgKyBuYW1lX2Jhc2UKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKG5hbWUpCisKKyAgICBkZWYgdGVzdF9ub25hc2NpaShzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IG1vZHVsZXMgd2l0aCBub24tQVNDSUkgbmFtZXMgY2FuIGJlIGxvYWRlZCcnJworICAgICAgICAjIHB1bnljb2RlIGJlaGF2ZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgaW4gc29tZS1BU0NJSSBhbmQgbm8tQVNDSUkKKyAgICAgICAgIyBjYXNlcywgc28gdGVzdCBib3RoCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKHNlbGYubmFtZSArICdfemtvdVx1MDE2MWthX25hXHUwMTBkdGVuXHhlZCcsICdDemVjaCcpLAorICAgICAgICAgICAgKCdcdWZmM2ZcdTMwYTRcdTMwZjNcdTMwZGRcdTMwZmNcdTMwYzhcdTMwYzZcdTMwYjlcdTMwYzgnLAorICAgICAgICAgICAgICdKYXBhbmVzZScpLAorICAgICAgICAgICAgXQorICAgICAgICBmb3IgbmFtZSwgbGFuZyBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWUpOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZG9jX18sICJNb2R1bGUgbmFtZWQgaW4gJXMiICUgbGFuZykKKworCisoRnJvemVuX011bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywKKyBTb3VyY2VfTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDQ5ZDY3MzQuLjhmNGI4YmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNyArMSw2IEBACi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHN5cwpAQCAtMjIsMTAgKzIxLDEyIEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBQYXRoIGhvb2sgc2hvdWxkIGhhbmRsZSBhIGRpcmVjdG9yeSB3aGVyZSBhIGtub3duIGV4dGVuc2lvbiBtb2R1bGUKICAgICAgICAgIyBleGlzdHMuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYuaG9vayh1dGlsLlBBVEgpLCAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5ob29rKHV0aWwuRVhURU5TSU9OUy5wYXRoKSwgJ2ZpbmRfbW9kdWxlJykpCiAKLUZyb3plbl9QYXRoSG9va3NUZXN0cywgU291cmNlX1BhdGhIb29rc1Rlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9QYXRoSG9va3NUZXN0cywKKyBTb3VyY2VfUGF0aEhvb2tzVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwODlmMC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1QQVRIID0gTm9uZQotRVhUID0gTm9uZQotRklMRU5BTUUgPSBOb25lCi1OQU1FID0gJ190ZXN0Y2FwaScKLXRyeToKLSAgICBmb3IgUEFUSCBpbiBzeXMucGF0aDoKLSAgICAgICAgZm9yIEVYVCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgRklMRU5BTUUgPSBOQU1FICsgRVhUCi0gICAgICAgICAgICBGSUxFUEFUSCA9IG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkpOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICBlbHNlOgotICAgICAgICBQQVRIID0gRVhUID0gRklMRU5BTUUgPSBGSUxFUEFUSCA9IE5vbmUKLWV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQppbmRleCBmOWY5N2YzLi41MTlhYTAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CkBAIC0zNyw4ICszNywxMCBAQAogICAgICAgICBzcGVjID0gc2VsZi5maW5kKCc8bm90IHJlYWw+JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAotRnJvemVuX0ZpbmRTcGVjVGVzdHMsIFNvdXJjZV9GaW5kU3BlY1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CkBAIC03Miw4ICs3NCwxMCBAQAogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKaW5kZXggN2MwMTQ2NC4uNjAzYzdkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtODUsOCArODUsMTAgQEAKICAgICAgICAgICAgIHNlbGYuZXhlY19tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fRXhlY01vZHVsZVRlc3RzLCBTb3VyY2VfRXhlY01vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRXhlY01vZHVsZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0V4ZWNNb2R1bGVUZXN0cywKKyBTb3VyY2VfRXhlY01vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEV4ZWNNb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBMb2FkZXJUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgpAQCAtMTc1LDggKzE3NywxMCBAQAogICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fTG9hZGVyVGVzdHMsIFNvdXJjZV9Mb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyVGVzdHM6CkBAIC0yMTQsOCArMjE4LDkgQEAKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAotRnJvemVuX0lMVGVzdHMsIFNvdXJjZV9JTFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fSUxUZXN0cywKKyBTb3VyY2VfSUxUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX2xvYWRlcl9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKaW5kZXggNmRmODAxMC4uNGIxODA5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIAogY2xhc3MgU3BlY0xvYWRlck1vY2s6CkBAIC0xMiw2ICsxMSw5IEBACiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBtYWNoaW5lcnkuTW9kdWxlU3BlYyhmdWxsbmFtZSwgc2VsZikKIAorICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgIHBhc3MKIApAQCAtMjQsOCArMjYsMTAgQEAKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnYmxhaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAotRnJvemVuX1NwZWNUZXN0cywgU291cmNlX1NwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjVGVzdHMsCisgU291cmNlX1NwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIExvYWRlck1vY2s6CkBAIC02Miw4ICs2Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAogCi1Gcm96ZW5fVGVzdHMsIFNvdXJjZV9UZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlckF0dHJpYnV0ZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisoRnJvemVuX1Rlc3RzLAorIFNvdXJjZV9UZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJBdHRyaWJ1dGVUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCAyZTE5NzI1Li5jN2QzYTJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC02LDcgKzYsNiBAQAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogCiAKIGNsYXNzIFVzaW5nX19wYWNrYWdlX186CkBAIC03MCwxNyArNjksMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAorCiBjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQogCi1jbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgorKEZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsCisgU291cmNlX1VzaW5nUGFja2FnZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChVc2luZ19fcGFja2FnZV9fUEVQMzAyLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKKworCitjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQNDUxKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19zcGVjCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVA0NTEsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1VzaW5nUGFja2FnZVBFUDQ1MSwKKyBTb3VyY2VfVXNpbmdQYWNrYWdlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKFVzaW5nX19wYWNrYWdlX19QRVA0NTEsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNldHRpbmdfX3BhY2thZ2VfXzoKQEAgLTk1LDcgKzEwMCw3IEBACiAKICAgICAiIiIKIAotICAgIF9faW1wb3J0X18gPSBpbXBvcnRfdXRpbC5fX2ltcG9ydF9fWzFdCisgICAgX19pbXBvcnRfXyA9IHV0aWwuX19pbXBvcnRfX1snU291cmNlJ10KIAogICAgICMgW3RvcC1sZXZlbF0KICAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA0MzljMTA1Li43MDY5ZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IHN5cwpAQCAtMTgsNiArMTcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzcGVjCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGV4ZWNfbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyA9PSBTVUJNT0RfTkFNRToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdJIGNhbm5vdCBiZSBsb2FkZWQhJykKQEAgLTc5LDE1ICs4MiwxOSBAQAogY2xhc3MgT2xkQVBJVGVzdHMoQVBJVGVzdCk6CiAgICAgYmFkX2ZpbmRlcl9sb2FkZXIgPSBCYWRMb2FkZXJGaW5kZXIKIAotRnJvemVuX09sZEFQSVRlc3RzLCBTb3VyY2VfT2xkQVBJVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgT2xkQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9PbGRBUElUZXN0cywKKyBTb3VyY2VfT2xkQVBJVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoT2xkQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNwZWNBUElUZXN0cyhBUElUZXN0KToKICAgICBiYWRfZmluZGVyX2xvYWRlciA9IEJhZFNwZWNGaW5kZXJMb2FkZXIKIAotRnJvemVuX1NwZWNBUElUZXN0cywgU291cmNlX1NwZWNBUElUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjQVBJVGVzdHMsCisgU291cmNlX1NwZWNBUElUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CmluZGV4IGMyOTJlZTQuLjgwNzlhZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGF0IHN5cy5tb2R1bGVzIGlzIHVzZWQgcHJvcGVybHkgYnkgaW1wb3J0LiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5LDE1ICszOCwxNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAotRnJvemVuX1VzZUNhY2hlLCBTb3VyY2VfVXNlQ2FjaGUgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNlQ2FjaGUsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Vc2VDYWNoZSwKKyBTb3VyY2VfVXNlQ2FjaGUKKyApID0gdXRpbC50ZXN0X2JvdGgoVXNlQ2FjaGUsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIEltcG9ydGxpYlVzZUNhY2hlKFVzZUNhY2hlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFBlcnRpbmVudCBvbmx5IHRvIFBFUCAzMDI7IGV4ZWNfbW9kdWxlKCkgZG9lc24ndCByZXR1cm4gYSBtb2R1bGUuCiAKLSAgICBfX2ltcG9ydF9fID0gaW1wb3J0X3V0aWwuX19pbXBvcnRfX1sxXQorICAgIF9faW1wb3J0X18gPSB1dGlsLl9faW1wb3J0X19bJ1NvdXJjZSddCiAKICAgICBkZWYgY3JlYXRlX21vY2soc2VsZiwgKm5hbWVzLCByZXR1cm5fPU5vbmUpOgogICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoKm5hbWVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGE3NTViNzUuLjgwNDU0NjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHRoYXQgdGhlIHNlbWFudGljcyByZWxhdGluZyB0byB0aGUgJ2Zyb21saXN0JyBhcmd1bWVudCBhcmUgY29ycmVjdC4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKIApAQCAtMjksOCArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9faW1wb3J0X18oJ3BrZy5tb2R1bGUnLCBmcm9tbGlzdD1bJ2F0dHInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi1Gcm96ZW5fUmV0dXJuVmFsdWUsIFNvdXJjZV9SZXR1cm5WYWx1ZSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1JldHVyblZhbHVlLAorIFNvdXJjZV9SZXR1cm5WYWx1ZQorICkgPSB1dGlsLnRlc3RfYm90aChSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgSGFuZGxpbmdGcm9tbGlzdDoKQEAgLTEyMSw4ICsxMjIsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUxLl9fbmFtZV9fLCAncGtnLm1vZHVsZTEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZTIuX19uYW1lX18sICdwa2cubW9kdWxlMicpCiAKLUZyb3plbl9Gcm9tTGlzdCwgU291cmNlX0Zyb21MaXN0ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEhhbmRsaW5nRnJvbWxpc3QsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Gcm9tTGlzdCwKKyBTb3VyY2VfRnJvbUxpc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoSGFuZGxpbmdGcm9tbGlzdCwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDVlZWIxNDUuLmM0NTJjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCkBAIC00Niw4ICs0NSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKIAotRnJvemVuX0NhbGxpbmdPcmRlciwgU291cmNlX0NhbGxpbmdPcmRlciA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsaW5nT3JkZXIsCisgU291cmNlX0NhbGxpbmdPcmRlcgorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIENhbGxTaWduYXR1cmU6CkBAIC0xMDAsMTkgKzEwMSwyNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCisKIGNsYXNzIENhbGxTaWduYXR1cmVQRVAzMDIoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX21vZHVsZScKIAotRnJvemVuX0NhbGxTaWduYXR1cmVQRVAzMDIsIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsU2lnbmF0dXJlUEVQMzAyLAorIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmVQRVA0NTEoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX3NwZWMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX3NwZWMnCiAKLUZyb3plbl9DYWxsU2lnbmF0dXJlUEVQNDUxLCBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fQ2FsbFNpZ25hdHVyZVBFUDQ1MSwKKyBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDU1YTVkMTQuLjM3NTViODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgpAQCAtMTAyLDggKzEwMSwxMCBAQAogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKHN1Ym5hbWUpCiAKLUZyb3plbl9QYXJlbnRUZXN0cywgU291cmNlX1BhcmVudFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fUGFyZW50VGVzdHMsCisgU291cmNlX1BhcmVudFRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQppbmRleCAxMjc0ZjhjLi40MzU5ZGQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpAQCAtMSwxMSArMSwxMiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKK2ltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIGZyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC01OCw3ICs1OSw3IEBACiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKLSAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQpAQCAtODMsNyArODQsNyBAQAogICAgICAgICBwYXRoID0gJycKICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5nZXRjd2QoKSwgaW1wb3J0ZXI9aW1wb3J0ZXIpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bcGF0aF0sIHBhdGhfaG9va3M9W2hvb2tdKToKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQpAQCAtOTgsNyArOTksNyBAQAogICAgICAgICBuZXdfcGF0aF9pbXBvcnRlcl9jYWNoZS5wb3AoTm9uZSwgTm9uZSkKICAgICAgICAgbmV3X3BhdGhfaG9va3MgPSBbemlwaW1wb3J0LnppcGltcG9ydGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwLl9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpKV0KICAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgIGVtYWlsID0gc3lzLm1vZHVsZXMucG9wKCdlbWFpbCcsIG1pc3NpbmcpCiAgICAgICAgIHRyeToKQEAgLTExMiw4ICsxMTMsNzQgQEAKICAgICAgICAgICAgIGlmIGVtYWlsIGlzIG5vdCBtaXNzaW5nOgogICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydlbWFpbCddID0gZW1haWwKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmluZF9tb2R1bGUoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRvX3JldHVybgorICAgICAgICBmYWlsaW5nX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBmYWlsaW5nX2ZpbmRlci50b19yZXR1cm4gPSBOb25lCisgICAgICAgIHBhdGggPSAndGVzdGluZyBwYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGZhaWxpbmdfZmluZGVyfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKSkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIudG9fcmV0dXJuID0gX19sb2FkZXJfXworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IHN1Y2Nlc3NfZmluZGVyfSk6CisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLCBfX2xvYWRlcl9fKQorCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmluZF9sb2FkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBsb2FkZXIgPSBOb25lCisgICAgICAgICAgICBwb3J0aW9ucyA9IFtdCisgICAgICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvYWRlciwgc2VsZi5wb3J0aW9ucworICAgICAgICBwYXRoID0gJ3Rlc3RpbmcgcGF0aCcKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBUZXN0RmluZGVyKCl9KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pKQorICAgICAgICBzdWNjZXNzX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBzdWNjZXNzX2ZpbmRlci5sb2FkZXIgPSBfX2xvYWRlcl9fCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogc3VjY2Vzc19maW5kZXJ9KToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5sb2FkZXIsIF9fbG9hZGVyX18pCisKKyAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9maW5kX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBzcGVjID0gTm9uZQorICAgICAgICAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNwZWMKKyAgICAgICAgcGF0aCA9ICd0ZXN0aW5nIHBhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogVGVzdEZpbmRlcigpfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKSkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIuc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3doYXRldmVyJywgX19sb2FkZXJfXykKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBzdWNjZXNzX2ZpbmRlcn0pOgorICAgICAgICAgICAgZ290ID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdCwgc3VjY2Vzc19maW5kZXIuc3BlYykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJjd2QgY2FuJ3Qgbm90IGV4aXN0IG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2RlbGV0ZWRfY3dkKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMjgzNAorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2hkaXIsIG9zLmdldGN3ZCgpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHBhdGg6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwbGF0Zm9ybSBkb2VzIG5vdCBhbGxvdyB0aGUgZGVsZXRpb24gb2YgdGhlIGN3ZCIpCisgICAgICAgICAgICByYWlzZQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycnXSk6CisgICAgICAgICAgICAjIERvIG5vdCB3YW50IEZpbGVOb3RGb3VuZEVycm9yIHJhaXNlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicpKQorCisKKworCisoRnJvemVuX0ZpbmRlclRlc3RzLAorIFNvdXJjZV9GaW5kZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKQEAgLTEzNiw4ICsyMDMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQogCi1Gcm96ZW5fUEVGVGVzdHMsIFNvdXJjZV9QRUZUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBQYXRoRW50cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9QRUZUZXN0cywKKyBTb3VyY2VfUEVGVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEVudHJ5RmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYjIxNmU5Yy4uMjhiYjZmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHJlbGF0aXZlIGltcG9ydHMgKFBFUCAzMjgpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMjA4LDggKzIwNywxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKIAotRnJvemVuX1JlbGF0aXZlSW1wb3J0cywgU291cmNlX1JlbGF0aXZlSW1wb3J0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBSZWxhdGl2ZUltcG9ydHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9SZWxhdGl2ZUltcG9ydHMsCisgU291cmNlX1JlbGF0aXZlSW1wb3J0cworICkgPSB1dGlsLnRlc3RfYm90aChSZWxhdGl2ZUltcG9ydHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYjQ5MGYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotCi1mcm96ZW5faW1wb3J0bGliLCBzb3VyY2VfaW1wb3J0bGliID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotCi1pbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCB1bml0dGVzdAotCi0KLV9faW1wb3J0X18gPSBzdGF0aWNtZXRob2QoYnVpbHRpbnMuX19pbXBvcnRfXyksIHN0YXRpY21ldGhvZChzb3VyY2VfaW1wb3J0bGliLl9faW1wb3J0X18pCi0KLQotZGVmIG1vY2tfcGF0aF9ob29rKCplbnRyaWVzLCBpbXBvcnRlcik6Ci0gICAgIiIiQSBtb2NrIHN5cy5wYXRoX2hvb2tzIGVudHJ5LiIiIgotICAgIGRlZiBob29rKGVudHJ5KToKLSAgICAgICAgaWYgZW50cnkgbm90IGluIGVudHJpZXM6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICByZXR1cm4gaW1wb3J0ZXIKLSAgICByZXR1cm4gaG9vawpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZWZkMzE0Ni4uYzI3NGIzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBjYXNlLXNlbnNpdGl2aXR5IChQRVAgMjM1KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBpbXBvcnRsaWIgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQpAQCAtMzIsNyArMzEsNyBAQAogICAgICAgICAiIiJMb29rIGZvciBhIG1vZHVsZSB3aXRoIG1hdGNoaW5nIGFuZCBub24tbWF0Y2hpbmcgc2Vuc2l0aXZpdHkuIiIiCiAgICAgICAgIHNlbnNpdGl2ZV9wa2cgPSAnc2Vuc2l0aXZlLnswfScuZm9ybWF0KHNlbGYubmFtZSkKICAgICAgICAgaW5zZW5zaXRpdmVfcGtnID0gJ2luc2Vuc2l0aXZlLnswfScuZm9ybWF0KHNlbGYubmFtZS5sb3dlcigpKQotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoaW5zZW5zaXRpdmVfcGtnLCBzZW5zaXRpdmVfcGtnKQorICAgICAgICBjb250ZXh0ID0gdXRpbC5jcmVhdGVfbW9kdWxlcyhpbnNlbnNpdGl2ZV9wa2csIHNlbnNpdGl2ZV9wa2cpCiAgICAgICAgIHdpdGggY29udGV4dCBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2Vuc2l0aXZlX3BhdGggPSBvcy5wYXRoLmpvaW4obWFwcGluZ1snLnJvb3QnXSwgJ3NlbnNpdGl2ZScpCiAgICAgICAgICAgICBpbnNlbnNpdGl2ZV9wYXRoID0gb3MucGF0aC5qb2luKG1hcHBpbmdbJy5yb290J10sICdpbnNlbnNpdGl2ZScpCkBAIC00Myw3ICs0Miw3IEBACiAgICAgZGVmIHRlc3Rfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQotICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgc2Vuc2l0aXZlLCBpbnNlbnNpdGl2ZSA9IHNlbGYuc2Vuc2l0aXZpdHlfdGVzdCgpCkBAIC01NCw3ICs1Myw3IEBACiAgICAgZGVmIHRlc3RfaW5zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQpAQCAtNjMsMjAgKzYyLDI4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShpbnNlbnNpdGl2ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBpbnNlbnNpdGl2ZS5nZXRfZmlsZW5hbWUoc2VsZi5uYW1lKSkKIAorCiBjbGFzcyBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyKENhc2VTZW5zaXRpdml0eVRlc3QpOgogICAgIGRlZiBmaW5kKHNlbGYsIGZpbmRlcik6CiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoc2VsZi5uYW1lKQogCi1Gcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIsCisgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxKENhc2VTZW5zaXRpdml0eVRlc3QpOgogICAgIGRlZiBmaW5kKHNlbGYsIGZpbmRlcik6CiAgICAgICAgIGZvdW5kID0gZmluZGVyLmZpbmRfc3BlYyhzZWxmLm5hbWUpCiAgICAgICAgIHJldHVybiBmb3VuZC5sb2FkZXIgaWYgZm91bmQgaXMgbm90IE5vbmUgZWxzZSBmb3VuZAogCi1Gcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEsCisgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCAyZDQxNWY5Li43M2Y0YzYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIGltcG9ydGxpYl9hYmMgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQpAQCAtNzEsNyArNzAsNyBAQAogCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQpAQCAtODMsNyArODIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5fX2luaXRfXyddKQogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgpAQCAtOTgsNyArOTcsNyBAQAogCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycsICdfcGtnLm1vZCcpYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJywgJ19wa2cubW9kJylhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC0xMTUsNyArMTE0LDcgQEAKICAgICAgICAgcmV0dXJuIGxhbWJkYSBuYW1lOiBmeG4obmFtZSkgKyAxCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCkBAIC0xMzksNyArMTM4LDcgQEAKICAgICAgICAgYXR0cmlidXRlcyA9ICgnX19maWxlX18nLCAnX19wYXRoX18nLCAnX19wYWNrYWdlX18nKQogICAgICAgICB2YWx1ZSA9ICc8dGVzdD4nCiAgICAgICAgIG5hbWUgPSAnX3RlbXAnCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBvcmlnX21vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGZvciBhdHRyIGluIGF0dHJpYnV0ZXM6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCkBAIC0xNTksNyArMTU4LDcgQEAKIAogICAgICMgW3N5bnRheCBlcnJvcl0KICAgICBkZWYgdGVzdF9iYWRfc3ludGF4KHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKQEAgLTE5MCwxMSArMTg5LDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhweWNhY2hlKToKICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHB5Y2FjaGUpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfdGltZXN0YW1wX292ZXJmbG93KHNlbGYpOgogICAgICAgICAjIFdoZW4gYSBtb2RpZmljYXRpb24gdGltZXN0YW1wIGlzIGxhcmdlciB0aGFuIDIqKjMyLCBpdCBzaG91bGQgYmUKICAgICAgICAgIyB0cnVuY2F0ZWQgcmF0aGVyIHRoYW4gcmFpc2UgYW4gT3ZlcmZsb3dFcnJvci4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNvdXJjZSA9IG1hcHBpbmdbJ190ZW1wJ10KICAgICAgICAgICAgIGNvbXBpbGVkID0gc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSkKICAgICAgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICd3JykgYXMgZjoKQEAgLTIzNiw5ICsyMzUsMTEgQEAKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ2JhZCBuYW1lJykKIAotRnJvemVuX1NpbXBsZVRlc3QsIFNvdXJjZV9TaW1wbGVUZXN0ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNpbXBsZVRlc3QsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAotICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NpbXBsZVRlc3QsCisgU291cmNlX1NpbXBsZVRlc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoU2ltcGxlVGVzdCwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwKKyAgICAgICAgICAgICAgICAgICAgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgpAQCAtMjc1LDQ1ICsyNzYsNDUgQEAKICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKIAogICAgIGRlZiBfdGVzdF9lbXB0eV9maWxlKHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIF90ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgICMgV2hlbiB0aGVpciBhcmUgbGVzcyB0aGFuIDQgYnl0ZXMgdG8gYSAucHljLCByZWdlbmVyYXRlIGl0IGlmCiAgICAgICAgICMgcG9zc2libGUsIGVsc2UgcmFpc2UgSW1wb3J0RXJyb3IuCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9tYWdpY19vbmx5KHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfcGFydGlhbF90aW1lc3RhbXAoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKICAgICBkZWYgX3Rlc3Rfbm9fbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTMyMiw3ICszMjMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCiAKICAgICBkZWYgX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCkBAIC0zMzMsNyArMzM0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMl0gKyBiJzx0ZXN0PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCkBAIC0zNDIsMTEgKzM0MywxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hZ2ljKHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiJ1x4MDBceDAwXHgwMFx4MDAnICsgYmNbNDpdKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCisKIGNsYXNzIEJhZEJ5dGVjb2RlVGVzdFBFUDQ1MShCYWRCeXRlY29kZVRlc3QpOgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgpAQCAtMzU1LDYgKzM1Nyw3IEBACiAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG1vZHVsZV9uYW1lLCBsb2FkZXIpCiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAKKwogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKEJhZEJ5dGVjb2RlVGVzdCk6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6CkBAIC0zNzEsNyArMzc0LDcgQEAKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMubG9hZGVyID0gY2xzLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgIyBXaGVuIGEgLnB5YyBpcyBlbXB0eSwgcmVnZW5lcmF0ZSBpdCBpZiBwb3NzaWJsZSwgZWxzZSByYWlzZQogICAgICAgICAjIEltcG9ydEVycm9yLgpAQCAtMzkwLDcgKzM5Myw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX21hZ2ljKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciwgcmVnZW5lcmF0ZSB0aGUgLnB5YyBpZiBwb3NzaWJsZSwKICAgICAgICAgIyBlbHNlIHJhaXNlIEVPRkVycm9yLgpAQCAtNDAxLDcgKzQwNCw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIG1hZ2ljIG51bWJlciBpcyBkaWZmZXJlbnQsIHRoZSBieXRlY29kZSBzaG91bGQgYmUKICAgICAgICAgIyByZWdlbmVyYXRlZC4KQEAgLTQxMyw3ICs0MTYsNyBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFkX21hZ2ljKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfcGFydGlhbF90aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgdGltZXN0YW1wIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKICAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KQEAgLTQyNCw3ICs0MjcsNyBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF90aW1lc3RhbXAodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgc2l6ZSBpcyBwYXJ0aWFsLCByZWdlbmVyYXRlIHRoZSAucHljLCBlbHNlCiAgICAgICAgICMgcmFpc2UgRU9GRXJyb3IuCkBAIC00MzUsMjkgKzQzOCwyOSBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9zaXplKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciBhbmQgdGltZXN0YW1wLCByYWlzZSBFT0ZFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbl9jb2RlX21hcnNoYWwoKQogICAgICAgICAjIFhYWCBJbXBvcnRFcnJvciB3aGVuIHNvdXJjZWxlc3MKIAogICAgICMgW2JhZCBtYXJzaGFsXQotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9iYWRfbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBCYWQgbWFyc2hhbCBkYXRhIHNob3VsZCByYWlzZSBhIFZhbHVlRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFkX21hcnNoYWwoKQogCiAgICAgIyBbYmFkIHRpbWVzdGFtcF0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfb2xkX3RpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSB0aW1lc3RhbXAgaXMgb2xkZXIgdGhhbiB0aGUgc291cmNlLCBieXRlY29kZSBzaG91bGQgYmUKICAgICAgICAgIyByZWdlbmVyYXRlZC4KICAgICAgICAgemVyb3MgPSBiJ1x4MDBceDAwXHgwMFx4MDAnCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncitiJykgYXMgYnl0ZWNvZGVfZmlsZToKQEAgLTQ3MSwxMCArNDc0LDEwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlY29kZV9maWxlLnJlYWQoNCksIHNvdXJjZV90aW1lc3RhbXApCiAKICAgICAjIFtieXRlY29kZSByZWFkLW9ubHldCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X3JlYWRfb25seV9ieXRlY29kZShzZWxmKToKICAgICAgICAgIyBXaGVuIGJ5dGVjb2RlIGlzIHJlYWQtb25seSBidXQgc2hvdWxkIGJlIHJld3JpdHRlbiwgZmFpbCBzaWxlbnRseS4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgICMgQ3JlYXRlIGJ5dGVjb2RlIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHJlLWNyZWF0ZWQuCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKQEAgLTQ5MSwyMSArNDk0LDI5IEBACiAgICAgICAgICAgICAgICAgIyBNYWtlIHdyaXRhYmxlIGZvciBldmVudHVhbCBjbGVhbi11cC4KICAgICAgICAgICAgICAgICBvcy5jaG1vZChieXRlY29kZV9wYXRoLCBzdGF0LlNfSVdVU1IpCiAKKwogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKAogICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3QsIEJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSk6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVA0NTEsIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxLAorIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQorCiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDMwMigKICAgICAgICAgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LCBCYWRCeXRlY29kZVRlc3RQRVAzMDIpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQMzAyLCBTb3VyY2VfU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAotICAgICAgICBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMiwKKyBTb3VyY2VfU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0OgpAQCAtNTY3LDIxICs1NzgsMjkgQEAKICAgICBkZWYgdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbl9jb2RlX21hcnNoYWwoZGVsX3NvdXJjZT1UcnVlKQogCisKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEoU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdCwKICAgICAgICAgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKToKICAgICBwYXNzCiAKLUZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEsIFNvdXJjZV9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKLSAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQNDUxLAorIFNvdXJjZV9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCisgICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKIAogY2xhc3MgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDMwMihTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LAogICAgICAgICBCYWRCeXRlY29kZVRlc3RQRVAzMDIpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiwgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAotICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVAzMDIsCisgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQ3MzI5N2IuLmYzNzJiODUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC02MCw3ICs1OSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBjcmVhdGUgaXMgTm9uZToKICAgICAgICAgICAgIGNyZWF0ZSA9IHt0ZXN0fQotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCpjcmVhdGUpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygqY3JlYXRlKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgaWYgY29tcGlsZV86CiAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gY29tcGlsZV86CiAgICAgICAgICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nW25hbWVdKQpAQCAtMTAwLDE0ICs5OSwxNCBAQAogCiAgICAgIyBbc3ViIG1vZHVsZV0KICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWInKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmRpcm5hbWUobWFwcGluZ1sncGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmltcG9ydF8ocGtnX2RpciwgJ3BrZy5zdWInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAogICAgICMgW3N1YiBwYWNrYWdlXQogICAgIGRlZiB0ZXN0X3BhY2thZ2VfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCisgICAgICAgIGNvbnRleHQgPSB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCiAgICAgICAgIHdpdGggY29udGV4dCBhcyBtYXBwaW5nOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguZGlybmFtZShtYXBwaW5nWydwa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCkBAIC0xMjAsNyArMTE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBub3RoaW5nID0gc2VsZi5pbXBvcnRfKG1hcHBpbmdbJy5yb290J10sICdzZGZzYWRzYWRmJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5vdGhpbmcpCiAKQEAgLTE0Nyw3ICsxNDYsNyBAQAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTQ4NDYKICAgICBkZWYgdGVzdF9kaXJfcmVtb3ZhbF9oYW5kbGluZyhzZWxmKToKICAgICAgICAgbW9kID0gJ21vZCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBmaW5kZXIgPSBzZWxmLmdldF9maW5kZXIobWFwcGluZ1snLnJvb3QnXSkKICAgICAgICAgICAgIGZvdW5kID0gc2VsZi5fZmluZChmaW5kZXIsICdtb2QnLCBsb2FkZXJfb25seT1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZm91bmQpCkBAIC0xOTYsOCArMTk1LDEwIEBACiAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKG5hbWUpCiAgICAgICAgIHJldHVybiBzcGVjLmxvYWRlciBpZiBzcGVjIGlzIG5vdCBOb25lIGVsc2Ugc3BlYwogCi1Gcm96ZW5fRmluZGVyVGVzdHNQRVA0NTEsIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0c1BFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9GaW5kZXJUZXN0c1BFUDQ1MSwKKyBTb3VyY2VfRmluZGVyVGVzdHNQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHNQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgRmluZGVyVGVzdHNQRVA0MjAoRmluZGVyVGVzdHMpOgpAQCAtMjEwLDggKzIxMSwxMCBAQAogICAgICAgICAgICAgbG9hZGVyX3BvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyX3BvcnRpb25zWzBdIGlmIGxvYWRlcl9vbmx5IGVsc2UgbG9hZGVyX3BvcnRpb25zCiAKLUZyb3plbl9GaW5kZXJUZXN0c1BFUDQyMCwgU291cmNlX0ZpbmRlclRlc3RzUEVQNDIwID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEZpbmRlclRlc3RzUEVQNDIwLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0ZpbmRlclRlc3RzUEVQNDIwLAorIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQyMAorICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0c1BFUDQyMCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBGaW5kZXJUZXN0c1BFUDMwMihGaW5kZXJUZXN0cyk6CkBAIC0yMjMsOSArMjI2LDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUobmFtZSkKIAotRnJvemVuX0ZpbmRlclRlc3RzUEVQMzAyLCBTb3VyY2VfRmluZGVyVGVzdHNQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHNQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKKyhGcm96ZW5fRmluZGVyVGVzdHNQRVAzMDIsCisgU291cmNlX0ZpbmRlclRlc3RzUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzUEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggOTJkYTc3Mi4uZTZhMjQxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC0xNSw3ICsxNCw3IEBACiAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQogCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIApAQCAtMjMsNyArMjIsMTAgQEAKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQogCi1Gcm96ZW5fUGF0aEhvb2tUZXN0LCBTb3VyY2VfUGF0aEhvb2t0ZXN0ID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0LCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX1BhdGhIb29rVGVzdCwKKyBTb3VyY2VfUGF0aEhvb2t0ZXN0CisgKSA9IHV0aWwudGVzdF9ib3RoKFBhdGhIb29rVGVzdCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CmluZGV4IGM2MmRmYTEuLmI2MDRhZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIApAQCAtMzcsNyArMzYsNyBAQAogICAgIG1vZHVsZV9uYW1lID0gJ190ZW1wJwogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKHNlbGYubW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKQEAgLTg5LDYgKzg4LDcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnJ1bl90ZXN0KHNvdXJjZSkKIAorCiBjbGFzcyBFbmNvZGluZ1Rlc3RQRVA0NTEoRW5jb2RpbmdUZXN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlcik6CkBAIC05Nyw4ICs5NywxMSBAQAogICAgICAgICBsb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKLUZyb3plbl9FbmNvZGluZ1Rlc3RQRVA0NTEsIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRW5jb2RpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0VuY29kaW5nVGVzdFBFUDQ1MSwKKyBTb3VyY2VfRW5jb2RpbmdUZXN0UEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKEVuY29kaW5nVGVzdFBFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBFbmNvZGluZ1Rlc3RQRVAzMDIoRW5jb2RpbmdUZXN0KToKIApAQCAtMTA3LDggKzExMCwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCiAKLUZyb3plbl9FbmNvZGluZ1Rlc3RQRVAzMDIsIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRW5jb2RpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0VuY29kaW5nVGVzdFBFUDMwMiwKKyBTb3VyY2VfRW5jb2RpbmdUZXN0UEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKEVuY29kaW5nVGVzdFBFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBMaW5lRW5kaW5nVGVzdDoKQEAgLTEyMCw3ICsxMjUsNyBAQAogICAgICAgICBtb2R1bGVfbmFtZSA9ICdfdGVtcCcKICAgICAgICAgc291cmNlX2xpbmVzID0gW2IiYSA9IDQyIiwgYiJiID0gLTEzIiwgYicnXQogICAgICAgICBzb3VyY2UgPSBsaW5lX2VuZGluZy5qb2luKHNvdXJjZV9saW5lcykKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbbW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKQEAgLTEzOSw2ICsxNDQsNyBAQAogICAgIGRlZiB0ZXN0X2xmKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KGInXG4nKQogCisKIGNsYXNzIExpbmVFbmRpbmdUZXN0UEVQNDUxKExpbmVFbmRpbmdUZXN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlciwgbW9kdWxlX25hbWUpOgpAQCAtMTQ3LDggKzE1MywxMSBAQAogICAgICAgICBsb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKLUZyb3plbl9MaW5lRW5kaW5nVGVzdFBFUDQ1MSwgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExpbmVFbmRpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQNDUxLAorIFNvdXJjZV9MaW5lRW5kaW5nVGVzdFBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChMaW5lRW5kaW5nVGVzdFBFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBMaW5lRW5kaW5nVGVzdFBFUDMwMihMaW5lRW5kaW5nVGVzdCk6CiAKQEAgLTE1Nyw4ICsxNjYsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKIAotRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQMzAyLCBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTGluZUVuZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVAzMDIsCisgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKExpbmVFbmRpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2NkMjVhLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBlcnJubwotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotCi1kZWYgd3JpdGVzX2J5dGVjb2RlX2ZpbGVzKGZ4bik6Ci0gICAgIiIiRGVjb3JhdG9yIHRvIHByb3RlY3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgZnJvbSBtdXRhdGlvbiBhbmQgdG8gc2tpcAotICAgIHRlc3RzIHRoYXQgcmVxdWlyZSBpdCB0byBiZSBzZXQgdG8gRmFsc2UuIiIiCi0gICAgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6Ci0gICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBOb25lCi0gICAgQGZ1bmN0b29scy53cmFwcyhmeG4pCi0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgb3JpZ2luYWwgPSBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRvX3JldHVybiA9IGZ4bigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9yaWdpbmFsCi0gICAgICAgIHJldHVybiB0b19yZXR1cm4KLSAgICByZXR1cm4gd3JhcHBlcgotCi0KLWRlZiBlbnN1cmVfYnl0ZWNvZGVfcGF0aChieXRlY29kZV9wYXRoKToKLSAgICAiIiJFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGZvciBQRVAgMzE0NyBweWMgZmlsZSBleGlzdHMuCi0KLSAgICA6cGFyYW0gYnl0ZWNvZGVfcGF0aDogRmlsZSBzeXN0ZW0gcGF0aCB0byBQRVAgMzE0NyBweWMgZmlsZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguZGlybmFtZShieXRlY29kZV9wYXRoKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgcmFpc2UKLQotCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIGNyZWF0ZV9tb2R1bGVzKCpuYW1lcyk6Ci0gICAgIiIiVGVtcG9yYXJpbHkgY3JlYXRlIGVhY2ggbmFtZWQgbW9kdWxlIHdpdGggYW4gYXR0cmlidXRlIChuYW1lZCAnYXR0cicpCi0gICAgdGhhdCBjb250YWlucyB0aGUgbmFtZSBwYXNzZWQgaW50byB0aGUgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2F1c2VkIHRoZQotICAgIGNyZWF0aW9uIG9mIHRoZSBtb2R1bGUuCi0KLSAgICBBbGwgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHJldHVybmVkIGJ5Ci0gICAgdGVtcGZpbGUubWtkdGVtcCgpLiBUaGlzIGRpcmVjdG9yeSBpcyBpbnNlcnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCi0gICAgc3lzLnBhdGguIFdoZW4gdGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyBhbGwgY3JlYXRlZCBmaWxlcyAoc291cmNlIGFuZAotICAgIGJ5dGVjb2RlKSBhcmUgZXhwbGljaXRseSBkZWxldGVkLgotCi0gICAgTm8gbWFnaWMgaXMgcGVyZm9ybWVkIHdoZW4gY3JlYXRpbmcgcGFja2FnZXMhIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgY3JlYXRlCi0gICAgYSBtb2R1bGUgd2l0aGluIGEgcGFja2FnZSB5b3UgbXVzdCBhbHNvIGNyZWF0ZSB0aGUgcGFja2FnZSdzIF9faW5pdF9fIGFzCi0gICAgd2VsbC4KLQotICAgICIiIgotICAgIHNvdXJjZSA9ICdhdHRyID0gezAhcn0nCi0gICAgY3JlYXRlZF9wYXRocyA9IFtdCi0gICAgbWFwcGluZyA9IHt9Ci0gICAgc3RhdGVfbWFuYWdlciA9IE5vbmUKLSAgICB1bmNhY2hlX21hbmFnZXIgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICB0ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBtYXBwaW5nWycucm9vdCddID0gdGVtcF9kaXIKLSAgICAgICAgaW1wb3J0X25hbWVzID0gc2V0KCkKLSAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnX19pbml0X18nKToKLSAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaW1wb3J0X25hbWUgPSBuYW1lWzotbGVuKCcuX19pbml0X18nKV0KLSAgICAgICAgICAgIGltcG9ydF9uYW1lcy5hZGQoaW1wb3J0X25hbWUpCi0gICAgICAgICAgICBpZiBpbXBvcnRfbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbaW1wb3J0X25hbWVdCi0gICAgICAgICAgICBuYW1lX3BhcnRzID0gbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICAgICBmaWxlX3BhdGggPSB0ZW1wX2RpcgotICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBuYW1lX3BhcnRzWzotMV06Ci0gICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgZGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBvcy5ta2RpcihmaWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfcGF0aHMuYXBwZW5kKGZpbGVfcGF0aCkKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihmaWxlX3BhdGgsIG5hbWVfcGFydHNbLTFdICsgJy5weScpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAndycpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UuZm9ybWF0KG5hbWUpKQotICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQotICAgICAgICAgICAgbWFwcGluZ1tuYW1lXSA9IGZpbGVfcGF0aAotICAgICAgICB1bmNhY2hlX21hbmFnZXIgPSB1dGlsLnVuY2FjaGUoKmltcG9ydF9uYW1lcykKLSAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZW50ZXJfXygpCi0gICAgICAgIHN0YXRlX21hbmFnZXIgPSB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVt0ZW1wX2Rpcl0pCi0gICAgICAgIHN0YXRlX21hbmFnZXIuX19lbnRlcl9fKCkKLSAgICAgICAgeWllbGQgbWFwcGluZwotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIHN0YXRlX21hbmFnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIGlmIHVuY2FjaGVfbWFuYWdlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHVuY2FjaGVfbWFuYWdlci5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQotICAgICAgICBzdXBwb3J0LnJtdHJlZSh0ZW1wX2RpcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggYTFmOGU3Ni4uZDRiZjkxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTEwLDEyICsxMCwxMyBAQAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogaW1wb3J0IHdhcm5pbmdzCiAKLWZyb20gLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAogCi1mcm96ZW5faW5pdCwgc291cmNlX2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fYWJjLCBzb3VyY2VfYWJjID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKLW1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCi1mcm96ZW5fdXRpbCwgc291cmNlX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK2FiYyA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQorCiAKICMjIyMjIEluaGVyaXRhbmNlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBjbGFzcyBJbmhlcml0YW5jZVRlc3RzOgpAQCAtMjYsOCArMjcsNyBAQAogICAgIHN1YmNsYXNzZXMgPSBbXQogICAgIHN1cGVyY2xhc3NlcyA9IFtdCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnN1cGVyY2xhc3NlcyA9IFtnZXRhdHRyKHNlbGYuYWJjLCBjbGFzc19uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLnN1cGVyY2xhc3NfbmFtZXNdCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3N1YmNsYXNzX25hbWVzJyk6CkBAIC0zNiwxMSArMzYsMTEgQEAKICAgICAgICAgICAgICMgY2hlY2tpbmcgYWNyb3NzIG1vZHVsZSBib3VuZGFyaWVzIChpLmUuIHRoZSBfYm9vdHN0cmFwIGluIGFiYyBpcwogICAgICAgICAgICAgIyBub3QgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBtYWNoaW5lcnkpLiBUaGF0IG1lYW5zIHN0ZWFsaW5nIG9uZSBvZgogICAgICAgICAgICAgIyB0aGUgbW9kdWxlcyBmcm9tIHRoZSBvdGhlciB0byBtYWtlIHN1cmUgdGhlIHNhbWUgaW5zdGFuY2UgaXMgdXNlZC4KLSAgICAgICAgICAgIHNlbGYuc3ViY2xhc3NlcyA9IFtnZXRhdHRyKHNlbGYuYWJjLm1hY2hpbmVyeSwgY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzX25hbWUgaW4gc2VsZi5zdWJjbGFzc19uYW1lc10KKyAgICAgICAgICAgIG1hY2hpbmVyeSA9IHNlbGYuYWJjLm1hY2hpbmVyeQorICAgICAgICAgICAgc2VsZi5zdWJjbGFzc2VzID0gW2dldGF0dHIobWFjaGluZXJ5LCBjbGFzc19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc19uYW1lIGluIHNlbGYuc3ViY2xhc3NfbmFtZXNdCiAgICAgICAgIGFzc2VydCBzZWxmLnN1YmNsYXNzZXMgb3Igc2VsZi5zdXBlcmNsYXNzZXMsIHNlbGYuX19jbGFzc19fCi0gICAgICAgIHRlc3RpbmcgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5wYXJ0aXRpb24oJ18nKVsyXQotICAgICAgICBzZWxmLl9fdGVzdCA9IGdldGF0dHIoc2VsZi5hYmMsIHRlc3RpbmcpCisgICAgICAgIHNlbGYuX190ZXN0ID0gZ2V0YXR0cihzZWxmLmFiYywgc2VsZi5fTkFNRSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBleHBlY3RlZCBzdWJjbGFzc2VzIGluaGVyaXQuCkBAIC01NCw5NCArNTQsOTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNlbGYuX190ZXN0LCBzdXBlcmNsYXNzKSwKICAgICAgICAgICAgICAgICJ7MH0gaXMgbm90IGEgc3VwZXJjbGFzcyBvZiB7MX0iLmZvcm1hdChzdXBlcmNsYXNzLCBzZWxmLl9fdGVzdCkpCiAKLWRlZiBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoYmFzZV9jbGFzcyk6Ci0gICAgZGVmIHNldF9mcm96ZW4obnMpOgotICAgICAgICBuc1snYWJjJ10gPSBmcm96ZW5fYWJjCi0gICAgZGVmIHNldF9zb3VyY2UobnMpOgotICAgICAgICBuc1snYWJjJ10gPSBzb3VyY2VfYWJjCi0KLSAgICBjbGFzc2VzID0gW10KLSAgICBmb3IgcHJlZml4LCBuc19zZXQgaW4gWygnRnJvemVuJywgc2V0X2Zyb3plbiksICgnU291cmNlJywgc2V0X3NvdXJjZSldOgotICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlcy5uZXdfY2xhc3MoJ18nLmpvaW4oW3ByZWZpeCwgYmFzZV9jbGFzcy5fX25hbWVfX10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2VfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfYm9keT1uc19zZXQpKQotICAgIHJldHVybiBjbGFzc2VzCi0KIAogY2xhc3MgTWV0YVBhdGhGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnRmluZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnQnVpbHRpbkltcG9ydGVyJywgJ0Zyb3plbkltcG9ydGVyJywgJ1BhdGhGaW5kZXInLAogICAgICAgICAgICAgICAgICAgICAgICdXaW5kb3dzUmVnaXN0cnlGaW5kZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhNZXRhUGF0aEZpbmRlcikKLUZyb3plbl9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfTWV0YVBhdGhGaW5kZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTWV0YVBhdGhGaW5kZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgUGF0aEVudHJ5RmluZGVyKEluaGVyaXRhbmNlVGVzdHMpOgogICAgIHN1cGVyY2xhc3NfbmFtZXMgPSBbJ0ZpbmRlciddCiAgICAgc3ViY2xhc3NfbmFtZXMgPSBbJ0ZpbGVGaW5kZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhQYXRoRW50cnlGaW5kZXIpCi1Gcm96ZW5fUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgUmVzb3VyY2VMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoUmVzb3VyY2VMb2FkZXIpCi1Gcm96ZW5fUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX1Jlc291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlc291cmNlTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnQnVpbHRpbkltcG9ydGVyJywgJ0Zyb3plbkltcG9ydGVyJywgJ0V4dGVuc2lvbkZpbGVMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhJbnNwZWN0TG9hZGVyKQotRnJvemVuX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9JbnNwZWN0TG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMpOgogICAgIHN1cGVyY2xhc3NfbmFtZXMgPSBbJ0luc3BlY3RMb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydFeHRlbnNpb25GaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoRXhlY3V0aW9uTG9hZGVyKQotRnJvemVuX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRXhlY3V0aW9uTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIEZpbGVMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnUmVzb3VyY2VMb2FkZXInLCAnRXhlY3V0aW9uTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnU291cmNlRmlsZUxvYWRlcicsICdTb3VyY2VsZXNzRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKEZpbGVMb2FkZXIpCi1Gcm96ZW5fRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0ZpbGVMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmlsZUxvYWRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnUmVzb3VyY2VMb2FkZXInLCAnRXhlY3V0aW9uTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnU291cmNlRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKFNvdXJjZUxvYWRlcikKLUZyb3plbl9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlciwgYWJjPWFiYykKKwogCiAjIyMjIyBEZWZhdWx0IHJldHVybiB2YWx1ZXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotZGVmIG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcyk6Ci0gICAgY2xhc3NlcyA9IFtdCi0gICAgZm9yIGtpbmQsIGFiYyBpbiBbKCdGcm96ZW4nLCBmcm96ZW5fYWJjKSwgKCdTb3VyY2UnLCBzb3VyY2VfYWJjKV06Ci0gICAgICAgIG5hbWUgPSAnXycuam9pbihba2luZCwgYmFzZV9jbGFzcy5fX25hbWVfX10pCi0gICAgICAgIGJhc2VfY2xhc3NlcyA9IGJhc2VfY2xhc3MsIGdldGF0dHIoYWJjLCBiYXNlX2NsYXNzLl9fbmFtZV9fKQotICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlcy5uZXdfY2xhc3MobmFtZSwgYmFzZV9jbGFzc2VzKSkKLSAgICByZXR1cm4gY2xhc3NlcwogCi1kZWYgbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoYmFzZV9jbGFzcywgdGVzdF9jbGFzcyk6Ci0gICAgZnJvemVuX2NsYXNzLCBzb3VyY2VfY2xhc3MgPSBtYWtlX2FiY19zdWJjbGFzc2VzKGJhc2VfY2xhc3MpCi0gICAgdGVzdHMgPSBbXQotICAgIGZvciBwcmVmaXgsIGNsYXNzX2luX3Rlc3QgaW4gWygnRnJvemVuJywgZnJvemVuX2NsYXNzKSwgKCdTb3VyY2UnLCBzb3VyY2VfY2xhc3MpXToKLSAgICAgICAgZGVmIHNldF9ucyhucyk6Ci0gICAgICAgICAgICBuc1snaW5zJ10gPSBjbGFzc19pbl90ZXN0KCkKLSAgICAgICAgdGVzdHMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcygnXycuam9pbihbcHJlZml4LCB0ZXN0X2NsYXNzLl9fbmFtZV9fXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JvZHk9c2V0X25zKSkKLSAgICByZXR1cm4gdGVzdHMKK2RlZiBtYWtlX2FiY19zdWJjbGFzc2VzKGJhc2VfY2xhc3MsIG5hbWU9Tm9uZSwgaW5zdD1GYWxzZSwgKiprd2FyZ3MpOgorICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgbmFtZSA9IGJhc2VfY2xhc3MuX19uYW1lX18KKyAgICBiYXNlID0ge2tpbmQ6IGdldGF0dHIoc3BsaXRhYmMsIG5hbWUpCisgICAgICAgICAgICBmb3Iga2luZCwgc3BsaXRhYmMgaW4gYWJjLml0ZW1zKCl9CisgICAgcmV0dXJuIHtjbHMuX0tJTkQ6IGNscygpIGlmIGluc3QgZWxzZSBjbHMKKyAgICAgICAgICAgIGZvciBjbHMgaW4gdGVzdF91dGlsLnNwbGl0X2Zyb3plbihiYXNlX2NsYXNzLCBiYXNlLCAqKmt3YXJncyl9CisKKworY2xhc3MgQUJDVGVzdEhhcm5lc3M6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW5zKHNlbGYpOgorICAgICAgICAjIExhemlseSBzZXQgaW5zIG9uIHRoZSBjbGFzcy4KKyAgICAgICAgY2xzID0gc2VsZi5TUExJVFtzZWxmLl9LSU5EXQorICAgICAgICBpbnMgPSBjbHMoKQorICAgICAgICBzZWxmLl9fY2xhc3NfXy5pbnMgPSBpbnMKKyAgICAgICAgcmV0dXJuIGlucwogCiAKIGNsYXNzIE1ldGFQYXRoRmluZGVyOgpAQCAtMTQ5LDEwICsxNTIsMTAgQEAKICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5maW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKIAotRnJvemVuX01QRiwgU291cmNlX01QRiA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoTWV0YVBhdGhGaW5kZXIpCiAKK2NsYXNzIE1ldGFQYXRoRmluZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLWNsYXNzIE1ldGFQYXRoRmluZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoTWV0YVBhdGhGaW5kZXIpCiAKICAgICBkZWYgdGVzdF9maW5kX21vZHVsZShzZWxmKToKICAgICAgICAgIyBEZWZhdWx0IHNob3VsZCByZXR1cm4gTm9uZS4KQEAgLTE2Myw4ICsxNjYsOSBAQAogICAgICAgICBzZWxmLmlucy5pbnZhbGlkYXRlX2NhY2hlcygpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhNZXRhUGF0aEZpbmRlciwgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX01QRkRlZmF1bHRUZXN0cywgU291cmNlX01QRkRlZmF1bHRUZXN0cyA9IHRlc3RzCisoRnJvemVuX01QRkRlZmF1bHRUZXN0cywKKyBTb3VyY2VfTVBGRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlcjoKQEAgLTE3MiwxMCArMTc2LDEwIEBACiAgICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKLUZyb3plbl9QRUYsIFNvdXJjZV9QRUYgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFBhdGhFbnRyeUZpbmRlcikKIAorY2xhc3MgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLWNsYXNzIFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHM6CisgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFBhdGhFbnRyeUZpbmRlcikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbG9hZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCBbXSksIHNlbGYuaW5zLmZpbmRfbG9hZGVyKCdzb21ldGhpbmcnKSkKQEAgLTE4OCw4ICsxOTIsOSBAQAogICAgICAgICBzZWxmLmlucy5pbnZhbGlkYXRlX2NhY2hlcygpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhQYXRoRW50cnlGaW5kZXIsIFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fUEVGRGVmYXVsdFRlc3RzLCBTb3VyY2VfUEVGRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fUEVGRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9QRUZEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIExvYWRlcjoKQEAgLTE5OCwxMCArMjAzLDkgQEAKICAgICAgICAgcmV0dXJuIHN1cGVyKCkubG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKIAotRnJvemVuX0wsIFNvdXJjZV9MID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCitjbGFzcyBMb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotCi1jbGFzcyBMb2FkZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9sb2FkX21vZHVsZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CkBAIC0yMTcsOCArMjIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobW9kKSkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKExvYWRlciwgTG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9MRGVmYXVsdFRlc3RzLCBTb3VyY2VMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fTERlZmF1bHRUZXN0cywKKyBTb3VyY2VMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgpAQCAtMjI3LDE4ICsyMzIsMTggQEAKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKIAogCi1Gcm96ZW5fUkwsIFNvdXJjZV9STCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUmVzb3VyY2VMb2FkZXIpCitjbGFzcyBSZXNvdXJjZUxvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgogCi0KLWNsYXNzIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUmVzb3VyY2VMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmdldF9kYXRhKCcvc29tZS9wYXRoJykKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKFJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fUkxEZWZhdWx0VGVzdHMsIFNvdXJjZV9STERlZmF1bHRUZXN0cyA9IHRlc3RzCisoRnJvemVuX1JMRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9STERlZmF1bHRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyKExvYWRlcik6CkBAIC0yNTAsMTAgKzI1NSwxMiBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfc291cmNlKGZ1bGxuYW1lKQogCiAKLUZyb3plbl9JTCwgU291cmNlX0lMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhJbnNwZWN0TG9hZGVyKQorU1BMSVRfSUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKEluc3BlY3RMb2FkZXIpCiAKIAotY2xhc3MgSW5zcGVjdExvYWRlckRlZmF1bHRzVGVzdHM6CitjbGFzcyBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CisKKyAgICBTUExJVCA9IFNQTElUX0lMCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKQEAgLTI2NCw4ICsyNzEsOSBAQAogICAgICAgICAgICAgc2VsZi5pbnMuZ2V0X3NvdXJjZSgnYmxhaCcpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhJbnNwZWN0TG9hZGVyLCBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9JTERlZmF1bHRUZXN0cywgU291cmNlX0lMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fSUxEZWZhdWx0VGVzdHMsCisgU291cmNlX0lMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluc3BlY3RMb2FkZXIpOgpAQCAtMjczLDIxICsyODEsMjUgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogCi1Gcm96ZW5fRUwsIFNvdXJjZV9FTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoRXhlY3V0aW9uTG9hZGVyKQorCitTUExJVF9FTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoRXhlY3V0aW9uTG9hZGVyKQogCiAKLWNsYXNzIEV4ZWN1dGlvbkxvYWRlckRlZmF1bHRzVGVzdHM6CitjbGFzcyBFeGVjdXRpb25Mb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKKworICAgIFNQTElUID0gU1BMSVRfRUwKIAogICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBzZWxmLmlucy5nZXRfZmlsZW5hbWUoJ2JsYWgnKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoRXhlY3V0aW9uTG9hZGVyLCBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9FTERlZmF1bHRUZXN0cywgU291cmNlX0VMRGVmYXVsdHNUZXN0cyA9IHRlc3RzCisoRnJvemVuX0VMRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9FTERlZmF1bHRzVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKKwogCiAjIyMjIyBNZXRhUGF0aEZpbmRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCiBjbGFzcyBNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0czoKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzE3LDEzICszMjksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgc3BlYy5sb2FkZXIpCiAKIAotRnJvemVuX01QRkZpbmRNb2R1bGVUZXN0cywgU291cmNlX01QRkZpbmRNb2R1bGVUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fTVBGRmluZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9NUEZGaW5kTW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0cywgYWJjPWFiYywgdXRpbD11dGlsKQorCiAKICMjIyMjIFBhdGhFbnRyeUZpbmRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KIGNsYXNzIFBhdGhFbnRyeUZpbmRlckZpbmRMb2FkZXJUZXN0czoKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzYxLDExICszNzIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRocywgZm91bmRbMV0pCiAKIAotRnJvemVuX1BFRkZpbmRMb2FkZXJUZXN0cywgU291cmNlX1BFRkZpbmRMb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBQYXRoRW50cnlGaW5kZXJGaW5kTG9hZGVyVGVzdHMsCi0gICAgICAgIGFiYz0oZnJvemVuX2FiYywgc291cmNlX2FiYyksCi0gICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIHV0aWw9KGZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCkpCisoRnJvemVuX1BFRkZpbmRMb2FkZXJUZXN0cywKKyBTb3VyY2VfUEVGRmluZExvYWRlclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUGF0aEVudHJ5RmluZGVyRmluZExvYWRlclRlc3RzLCBhYmM9YWJjLCB1dGlsPXV0aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiAjIyMjIyBMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzg2LDcgKzM5Niw3IEBACiAgICAgZGVmIHRlc3RfZnJlc2goc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHNlbGYubG9hZGVyKCkKICAgICAgICAgbmFtZSA9ICdibGFoJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmZvdW5kCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCkBAIC00MDQsNyArNDE0LDcgQEAKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzZWxmLnV0aWwuc3BlY19mcm9tX2xvYWRlcihuYW1lLCBsb2FkZXIpCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgZm91bmQgPSBsb2FkZXIuZm91bmQKQEAgLTQxMiwxMCArNDIyLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKIAogCi1Gcm96ZW5fTG9hZGVyTG9hZE1vZHVsZVRlc3RzLCBTb3VyY2VfTG9hZGVyTG9hZE1vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExvYWRlckxvYWRNb2R1bGVUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fTG9hZGVyTG9hZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIGFiYz1hYmMsIHV0aWw9dXRpbCkKIAogCiAjIyMjIyBJbnNwZWN0TG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDYxLDExICs0NzAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN0cmluZz4nKQogCiAKLWNsYXNzIEZyb3plbl9JTFNvdXJjZVRvQ29kZVRlc3RzKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcyA9IEZyb3plbl9JTAotCi1jbGFzcyBTb3VyY2VfSUxTb3VyY2VUb0NvZGVUZXN0cyhJbnNwZWN0TG9hZGVyU291cmNlVG9Db2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxTb3VyY2VUb0NvZGVUZXN0cywKKyBTb3VyY2VfSUxTb3VyY2VUb0NvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlckdldENvZGVUZXN0czoKQEAgLTQ5NSwxMSArNTAzLDEwIEBACiAgICAgICAgICAgICBsb2FkZXIuZ2V0X2NvZGUoJ2JsYWgnKQogCiAKLWNsYXNzIEZyb3plbl9JTEdldENvZGVUZXN0cyhJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTEdldENvZGVUZXN0cyhJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gU291cmNlX0lMCisoRnJvemVuX0lMR2V0Q29kZVRlc3RzLAorIFNvdXJjZV9JTEdldENvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHM6CkBAIC01NDMsMTEgKzU1MCwxMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxlX25hbWVdKQogCiAKLWNsYXNzIEZyb3plbl9JTExvYWRNb2R1bGVUZXN0cyhJbnNwZWN0TG9hZGVyTG9hZE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cyhJbnNwZWN0TG9hZGVyTG9hZE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gU291cmNlX0lMCisoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02MDgsMTUgKzYxNCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5hdHRyLCA0MikKIAogCi1jbGFzcyBGcm96ZW5fRUxHZXRDb2RlVGVzdHMoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fRUwKLQotY2xhc3MgU291cmNlX0VMR2V0Q29kZVRlc3RzKEV4ZWN1dGlvbkxvYWRlckdldENvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzID0gU291cmNlX0VMCisoRnJvemVuX0VMR2V0Q29kZVRlc3RzLAorIFNvdXJjZV9FTEdldENvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEV4ZWN1dGlvbkxvYWRlckdldENvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcz1TUExJVF9FTCkKIAogCiAjIyMjIyBTb3VyY2VMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotY2xhc3MgU291cmNlTG9hZGVyOgorY2xhc3MgU291cmNlT25seUxvYWRlcjoKIAogICAgICMgR2xvYmFscyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIGZvciBhbGwgbW9kdWxlcy4KICAgICBzb3VyY2UgPSAoYiJfID0gJzo6Jy5qb2luKFtfX25hbWVfXywgX19maWxlX18sIF9fY2FjaGVkX18sIF9fcGFja2FnZV9fLCAiCkBAIC02MzcsMTAgKzY0MiwxMCBAQAogICAgICAgICByZXR1cm4gJzxtb2R1bGU+JwogCiAKLUZyb3plbl9Tb3VyY2VPbmx5TCwgU291cmNlX1NvdXJjZU9ubHlMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIpCitTUExJVF9TT0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZU9ubHlMb2FkZXIsICdTb3VyY2VMb2FkZXInKQogCiAKLWNsYXNzIFNvdXJjZUxvYWRlcihTb3VyY2VMb2FkZXIpOgorY2xhc3MgU291cmNlTG9hZGVyKFNvdXJjZU9ubHlMb2FkZXIpOgogCiAgICAgc291cmNlX210aW1lID0gMQogCkBAIC02NzcsMTEgKzY4Miw3IEBACiAgICAgICAgIHJldHVybiBwYXRoID09IHNlbGYuYnl0ZWNvZGVfcGF0aAogCiAKLUZyb3plbl9TTCwgU291cmNlX1NMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIpCi1Gcm96ZW5fU0wudXRpbCA9IGZyb3plbl91dGlsCi1Tb3VyY2VfU0wudXRpbCA9IHNvdXJjZV91dGlsCi1Gcm96ZW5fU0wuaW5pdCA9IGZyb3plbl9pbml0Ci1Tb3VyY2VfU0wuaW5pdCA9IHNvdXJjZV9pbml0CitTUExJVF9TTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoU291cmNlTG9hZGVyLCB1dGlsPXV0aWwsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXJUZXN0SGFybmVzczoKQEAgLTc2NSw3ICs3NjYsNyBAQAogICAgICAgICAjIExvYWRpbmcgYSBtb2R1bGUgc2hvdWxkIHNldCBfX25hbWVfXywgX19sb2FkZXJfXywgX19wYWNrYWdlX18sCiAgICAgICAgICMgX19wYXRoX18gKGZvciBwYWNrYWdlcyksIF9fZmlsZV9fLCBhbmQgX19jYWNoZWRfXy4KICAgICAgICAgIyBUaGUgbW9kdWxlIHNob3VsZCBhbHNvIGJlIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQpAQCAtNzc4LDcgKzc3OSw3IEBACiAgICAgICAgICMgaXMgYSBwYWNrYWdlLgogICAgICAgICAjIFRlc3RpbmcgdGhlIHZhbHVlcyBmb3IgYSBwYWNrYWdlIGFyZSBjb3ZlcmVkIGJ5IHRlc3RfbG9hZF9tb2R1bGUuCiAgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1GYWxzZSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShzZWxmLm5hbWUpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKQEAgLTc5OCwxMyArNzk5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuZWRfc291cmNlLCBzb3VyY2UpCiAKIAotY2xhc3MgRnJvemVuX1NvdXJjZU9ubHlMVGVzdHMoU291cmNlT25seUxvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBGcm96ZW5fU291cmNlT25seUwKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX1NvdXJjZU9ubHlMVGVzdHMoU291cmNlT25seUxvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBTb3VyY2VfU291cmNlT25seUwKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fU291cmNlT25seUxvYWRlclRlc3RzLAorIFNvdXJjZV9Tb3VyY2VPbmx5TG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXJfbW9jaz1TUExJVF9TT0wpCiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMuZG9udF93cml0ZV9ieXRlY29kZSwgInN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUiKQpAQCAtODk2LDE1ICs4OTQsMTAgQEAKICAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKIAogCi1jbGFzcyBGcm96ZW5fU0xCeXRlY29kZVRlc3RzKFNvdXJjZUxvYWRlckJ5dGVjb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IEZyb3plbl9TTAotICAgIGluaXQgPSBmcm96ZW5faW5pdAotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi1jbGFzcyBTb3VyY2VTTEJ5dGVjb2RlVGVzdHMoU291cmNlTG9hZGVyQnl0ZWNvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGxvYWRlcl9tb2NrID0gU291cmNlX1NMCi0gICAgaW5pdCA9IHNvdXJjZV9pbml0Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX1NMQnl0ZWNvZGVUZXN0cywKKyBTb3VyY2VTTEJ5dGVjb2RlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCeXRlY29kZVRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXJfbW9jaz1TUExJVF9TTCkKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0czoKQEAgLTk0MCwxMSArOTMzLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKIAotY2xhc3MgRnJvemVuX1NvdXJjZU9ubHlMR2V0U291cmNlVGVzdHMoU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBTb3VyY2VPbmx5TG9hZGVyTW9jayA9IEZyb3plbl9Tb3VyY2VPbmx5TAotCi1jbGFzcyBTb3VyY2VfU291cmNlT25seUxHZXRTb3VyY2VUZXN0cyhTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIFNvdXJjZU9ubHlMb2FkZXJNb2NrID0gU291cmNlX1NvdXJjZU9ubHlMCisoRnJvemVuX1NvdXJjZU9ubHlMb2FkZXJHZXRTb3VyY2VUZXN0cywKKyBTb3VyY2VfU291cmNlT25seUxvYWRlckdldFNvdXJjZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlT25seUxvYWRlck1vY2s9U1BMSVRfU09MKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDJhMmQ0MmIuLjZiYzNjNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC0xLDggKzEsOCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCit1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKQEAgLTE4LDggKzE4LDggQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbXBvcnQoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSB0b3AtbGV2ZWwgbW9kdWxlLgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKIApAQCAtMjgsOCArMjgsOCBAQAogICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCiAgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCiAgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQogCkBAIC00MCwxNiArNDAsMTYgQEAKICAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwogICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCiAgICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CiAgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ2EnKQogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCdhLmInKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKQEAgLTYxLDggKzYxLDggQEAKICAgICAgICAgcGtnX25hbWUgPSAncGtnJwogICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQogICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUocGtnX25hbWUpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCkBAIC04NiwxNiArODYsMTUgQEAKICAgICAgICAgICAgIGJfbG9hZF9jb3VudCArPSAxCiAgICAgICAgIGNvZGUgPSB7J2EnOiBsb2FkX2EsICdhLmInOiBsb2FkX2J9CiAgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgnYS5iJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCiAKLWNsYXNzIEZyb3plbl9JbXBvcnRNb2R1bGVUZXN0cyhJbXBvcnRNb2R1bGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAogCi1jbGFzcyBTb3VyY2VfSW1wb3J0TW9kdWxlVGVzdHMoSW1wb3J0TW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fSW1wb3J0TW9kdWxlVGVzdHMsCisgU291cmNlX0ltcG9ydE1vZHVsZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW1wb3J0TW9kdWxlVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBGaW5kTG9hZGVyVGVzdHM6CkBAIC0xMDcsNyArMTA2LDcgQEAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgpAQCAtMTIwLDcgKzExOSw3IEBACiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfbG9hZGVyX2lzX05vbmUoc2VsZik6CiAgICAgICAgICMgSWYgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXyBpcyBOb25lLCByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKQEAgLTEzMyw3ICsxMzIsNyBAQAogICAgICAgICAjIFNob3VsZCByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICMgSXNzdWUgIzE3MDk5CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGRlbCBtb2R1bGUuX19sb2FkZXJfXwpAQCAtMTQ4LDggKzE0Nyw4IEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBSZXR1cm4gdGhlIGxvYWRlciBmb3VuZCBvbiBzeXMubWV0YV9wYXRoLgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgTm9uZSksIHNlbGYuaW5pdC5maW5kX2xvYWRlcihuYW1lKSkKQEAgLTE1OCw4ICsxNTcsOCBAQAogICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCiAgICAgICAgIHBhdGggPSAncGF0aCB0byBzb21lIHBsYWNlJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCksCkBAIC0xNzEsMTEgKzE3MCwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmluaXQuZmluZF9sb2FkZXIoJ25ldmVyZ29pbmd0b2ZpbmR0aGlzbW9kdWxlJykpCiAKLWNsYXNzIEZyb3plbl9GaW5kTG9hZGVyVGVzdHMoRmluZExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMoRmluZExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IHNvdXJjZV9pbml0CisoRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCiAKIAogY2xhc3MgUmVsb2FkVGVzdHM6CkBAIC0xOTUsMTAgKzE5MywxMCBAQAogICAgICAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKCd0b3BfbGV2ZWwnKQogICAgICAgICAgICAgbW9kdWxlLnNwYW0gPSAzCiAgICAgICAgICAgICBzeXMubW9kdWxlc1sndG9wX2xldmVsJ10gPSBtb2R1bGUKLSAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eyd0b3BfbGV2ZWwnOiBjb2RlfSkKKyAgICAgICAgbW9jayA9IHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsndG9wX2xldmVsJzogY29kZX0pCiAgICAgICAgIHdpdGggbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmluaXQucmVsb2FkKG1vZHVsZSkKICAgICAgICAgICAgICAgICBhY3R1YWwgPSBzeXMubW9kdWxlc1sndG9wX2xldmVsJ10KQEAgLTIzMCw3ICsyMjgsNyBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9sb2NhdGlvbl9jaGFuZ2VkKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChOb25lKSBhcyBjd2Q6Ci0gICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnc3BhbScpOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZSgnc3BhbScpOgogICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKGN3ZCk6CiAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgYXMgYSBwbGFpbiBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpCkBAIC0yODEsNyArMjc5LDcgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbmFtZXNwYWNlX2NoYW5nZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKLSAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdzcGFtJyk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKCdzcGFtJyk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoY3dkKToKICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBhcyBhIG5hbWVzcGFjZSBwYWNrYWdlLgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW52YWxpZGF0ZV9jYWNoZXMoKQpAQCAtMzM4LDIwICszMzYsMTYgQEAKICAgICAgICAgIyBTZWUgIzE5ODUxLgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBoYW0gPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShmdWxsbmFtZSkKICAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5pbml0LnJlbG9hZChoYW0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBoYW0pCiAKIAotY2xhc3MgRnJvemVuX1JlbG9hZFRlc3RzKFJlbG9hZFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZV9SZWxvYWRUZXN0cyhSZWxvYWRUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAorKEZyb3plbl9SZWxvYWRUZXN0cywKKyBTb3VyY2VfUmVsb2FkVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChSZWxvYWRUZXN0cywgaW5pdD1pbml0LCB1dGlsPXV0aWwpCiAKIAogY2xhc3MgSW52YWxpZGF0ZUNhY2hlVGVzdHM6CkBAIC0zODQsMTEgKzM3OCwxMCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQogICAgICAgICBzZWxmLmluaXQuaW52YWxpZGF0ZV9jYWNoZXMoKSAgIyBTaG91bGRuJ3QgdHJpZ2dlciBhbiBleGNlcHRpb24uCiAKLWNsYXNzIEZyb3plbl9JbnZhbGlkYXRlQ2FjaGVUZXN0cyhJbnZhbGlkYXRlQ2FjaGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAogCi1jbGFzcyBTb3VyY2VfSW52YWxpZGF0ZUNhY2hlVGVzdHMoSW52YWxpZGF0ZUNhY2hlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fSW52YWxpZGF0ZUNhY2hlVGVzdHMsCisgU291cmNlX0ludmFsaWRhdGVDYWNoZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW52YWxpZGF0ZUNhY2hlVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBGcm96ZW5JbXBvcnRsaWJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOTgsNiArMzkxLDcgQEAKICAgICAgICAgIyBDYW4ndCBkbyBhbiBpc2luc3RhbmNlKCkgY2hlY2sgc2luY2Ugc2VwYXJhdGUgY29waWVzIG9mIGltcG9ydGxpYgogICAgICAgICAjIG1heSBoYXZlIGJlZW4gdXNlZCBmb3IgaW1wb3J0LCBzbyBqdXN0IGNoZWNrIHRoZSBuYW1lIGlzIG5vdCBmb3IgdGhlCiAgICAgICAgICMgZnJvemVuIGxvYWRlci4KKyAgICAgICAgc291cmNlX2luaXQgPSBpbml0WydTb3VyY2UnXQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNvdXJjZV9pbml0Ll9fbG9hZGVyX18uX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGcm96ZW5JbXBvcnRlcicpCiAKQEAgLTQyNiwxMSArNDIwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuZmluZF9tb2R1bGUobmFtZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vZHVsZS5fX3NwZWNfXywgTm9uZSkKIAotY2xhc3MgRnJvemVuX1N0YXJ0dXBUZXN0cyhTdGFydHVwVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5CiAKLWNsYXNzIFNvdXJjZV9TdGFydHVwVGVzdHMoU3RhcnR1cFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQorKEZyb3plbl9TdGFydHVwVGVzdHMsCisgU291cmNlX1N0YXJ0dXBUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFN0YXJ0dXBUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMTkxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTAsMCArMSwxMzIgQEAKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBhYmMKK2Zyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAorCisKK2NsYXNzIENvbGxlY3RJbml0OgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gc2VsZgorCisKK2NsYXNzIExhenlMb2FkZXJGYWN0b3J5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IHV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KENvbGxlY3RJbml0KQorICAgICAgICAjIEUuZy4gd2hhdCBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgaW5zdGFudGlhdGVzIGxvYWRlcnMgd2l0aAorICAgICAgICAjIHBsdXMga2V5d29yZCBhcmd1bWVudHMuCisgICAgICAgIGxhenlfbG9hZGVyID0gZmFjdG9yeSgnbW9kdWxlIG5hbWUnLCAnbW9kdWxlIHBhdGgnLCBrdz0na3cnKQorICAgICAgICBsb2FkZXIgPSBsYXp5X2xvYWRlci5sb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ21vZHVsZSBuYW1lJywgJ21vZHVsZSBwYXRoJyksIGxvYWRlci5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsna3cnOiAna3cnfSwgbG9hZGVyLmt3YXJncykKKworICAgIGRlZiB0ZXN0X3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgICMgTm8gZXhlY19tb2R1bGUoKSwgbm8gbGF6eSBsb2FkaW5nLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIuZmFjdG9yeShvYmplY3QpCisKKworY2xhc3MgVGVzdGluZ0ltcG9ydGVyKGFiYy5NZXRhUGF0aEZpbmRlciwgYWJjLkxvYWRlcik6CisKKyAgICBtb2R1bGVfbmFtZSA9ICdsYXp5X2xvYWRlcl90ZXN0JworICAgIG11dGF0ZWRfbmFtZSA9ICdjaGFuZ2VkJworICAgIGxvYWRlZCA9IE5vbmUKKyAgICBzb3VyY2VfY29kZSA9ICdhdHRyID0gNDI7IF9fbmFtZV9fID0geyFyfScuZm9ybWF0KG11dGF0ZWRfbmFtZSkKKworICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgorICAgICAgICBpZiBuYW1lICE9IHNlbGYubW9kdWxlX25hbWU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gdXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIHV0aWwuTGF6eUxvYWRlcihzZWxmKSkKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICBleGVjKHNlbGYuc291cmNlX2NvZGUsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5sb2FkZWQgPSBtb2R1bGUKKworCitjbGFzcyBMYXp5TG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKG9iamVjdCkKKworICAgIGRlZiBuZXdfbW9kdWxlKHNlbGYsIHNvdXJjZV9jb2RlPU5vbmUpOgorICAgICAgICBsb2FkZXIgPSBUZXN0aW5nSW1wb3J0ZXIoKQorICAgICAgICBpZiBzb3VyY2VfY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvYWRlci5zb3VyY2VfY29kZSA9IHNvdXJjZV9jb2RlCisgICAgICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9sb2FkZXIoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuTGF6eUxvYWRlcihsb2FkZXIpKQorICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKKyAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzcGVjLmxvYWRlcgorICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAgICMgTW9kdWxlIGlzIG5vdyBsYXp5LgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIubG9hZGVkKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF9lMmUoc2VsZik6CisgICAgICAgICMgRW5kLXRvLWVuZCB0ZXN0IHRvIHZlcmlmeSB0aGUgbG9hZCBpcyBpbiBmYWN0IGxhenkuCisgICAgICAgIGltcG9ydGVyID0gVGVzdGluZ0ltcG9ydGVyKCkKKyAgICAgICAgYXNzZXJ0IGltcG9ydGVyLmxvYWRlZCBpcyBOb25lCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoaW1wb3J0ZXIubW9kdWxlX25hbWUpOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShpbXBvcnRlci5tb2R1bGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0ZXIubG9hZGVkKQorICAgICAgICAjIFRyaWdnZXIgbG9hZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19sb2FkZXJfXywgaW1wb3J0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGltcG9ydGVyLmxvYWRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIGltcG9ydGVyLmxvYWRlZCkKKworICAgIGRlZiB0ZXN0X2F0dHJfdW5jaGFuZ2VkKHNlbGYpOgorICAgICAgICAjIEFuIGF0dHJpYnV0ZSBvbmx5IG11dGF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiBpbXBvcnQgc2hvdWxkIG5vdCBiZQorICAgICAgICAjIGNoYW5nZWQgbmVlZGxlc3NseS4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0aW5nSW1wb3J0ZXIubXV0YXRlZF9uYW1lLCBtb2R1bGUuX19uYW1lX18pCisKKyAgICBkZWYgdGVzdF9uZXdfYXR0cihzZWxmKToKKyAgICAgICAgIyBBIG5ldyBhdHRyaWJ1dGUgc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5uZXdfYXR0ciA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDIsIG1vZHVsZS5uZXdfYXR0cikKKworICAgIGRlZiB0ZXN0X211dGF0ZWRfcHJlZXhpc3RpbmdfYXR0cihzZWxmKToKKyAgICAgICAgIyBDaGFuZ2luZyBhbiBhdHRyaWJ1dGUgdGhhdCBhbHJlYWR5IGV4aXN0ZWQgb24gdGhlIG1vZHVsZSAtLQorICAgICAgICAjIGUuZy4gX19uYW1lX18gLS0gc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5fX25hbWVfXyA9ICdib2d1cycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYm9ndXMnLCBtb2R1bGUuX19uYW1lX18pCisKKyAgICBkZWYgdGVzdF9tdXRhdGVkX2F0dHIoc2VsZik6CisgICAgICAgICMgQ2hhbmdpbmcgYW4gYXR0cmlidXRlIHRoYXQgY29tZXMgaW50byBleGlzdGVuY2UgYWZ0ZXIgYW4gaW1wb3J0CisgICAgICAgICMgc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5hdHRyID0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIG1vZHVsZS5hdHRyKQorCisgICAgZGVmIHRlc3RfZGVsZXRlX2V2ZW50dWFsX2F0dHIoc2VsZik6CisgICAgICAgICMgRGVsZXRpbmcgYW4gYXR0cmlidXRlIHNob3VsZCBzdGF5IGRlbGV0ZWQuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIGRlbCBtb2R1bGUuYXR0cgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnYXR0cicpKQorCisgICAgZGVmIHRlc3RfZGVsZXRlX3ByZWV4aXN0aW5nX2F0dHIoc2VsZik6CisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIGRlbCBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJykpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfc3Vic3RpdHV0aW9uX2Vycm9yKHNlbGYpOgorICAgICAgICBzb3VyY2VfY29kZSA9ICdpbXBvcnQgc3lzOyBzeXMubW9kdWxlc1tfX25hbWVfX10gPSA0MicKKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKHNvdXJjZV9jb2RlKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQppbmRleCBkYzk3YmExLi5kZjBhZjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKQEAgLTEsNyArMSw2IEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9ib290c3RyYXAgPSBmcm96ZW5faW5pdC5fYm9vdHN0cmFwCi1zb3VyY2VfYm9vdHN0cmFwID0gc291cmNlX2luaXQuX2Jvb3RzdHJhcAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAorCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCiAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCkBAIC0zMiwxNCArMzEsMjAgQEAKICAgICAgICAgdGVzdF90aW1lb3V0ID0gTm9uZQogICAgICAgICAjIF9yZWxlYXNlX3NhdmUoKSB1bnN1cHBvcnRlZAogICAgICAgICB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkID0gTm9uZQorICAgICAgICAjIGxvY2sgc3RhdHVzIGluIHJlcHIgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9yZXByID0gTm9uZQorICAgICAgICB0ZXN0X2xvY2tlZF9yZXByID0gTm9uZQogCi0gICAgY2xhc3MgRnJvemVuX01vZHVsZUxvY2tBc1JMb2NrVGVzdHMoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywgbG9ja190ZXN0cy5STG9ja1Rlc3RzKToKLSAgICAgICAgTG9ja1R5cGUgPSBmcm96ZW5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCisgICAgTE9DS19UWVBFUyA9IHtraW5kOiBzcGxpdGluaXQuX2Jvb3RzdHJhcC5fTW9kdWxlTG9jaworICAgICAgICAgICAgICAgICAgZm9yIGtpbmQsIHNwbGl0aW5pdCBpbiBpbml0Lml0ZW1zKCl9CiAKLSAgICBjbGFzcyBTb3VyY2VfTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyhNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMpOgotICAgICAgICBMb2NrVHlwZSA9IHNvdXJjZV9ib290c3RyYXAuX01vZHVsZUxvY2sKLQorICAgIChGcm96ZW5fTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywKKyAgICAgU291cmNlX01vZHVsZUxvY2tBc1JMb2NrVGVzdHMKKyAgICAgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywgbG9ja190ZXN0cy5STG9ja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrVHlwZT1MT0NLX1RZUEVTKQogZWxzZToKKyAgICBMT0NLX1RZUEVTID0ge30KKwogICAgIGNsYXNzIEZyb3plbl9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcGFzcwogCkBAIC00Nyw3OCArNTIsOTQgQEAKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIERlYWRsb2NrQXZvaWRhbmNlVGVzdHM6CitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0czoKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IE5vbmUKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwpCi0KLSAgICBkZWYgcnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KHNlbGYsIGNyZWF0ZV9kZWFkbG9jayk6Ci0gICAgICAgIE5MT0NLUyA9IDEwCi0gICAgICAgIGxvY2tzID0gW3NlbGYuTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQotICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCi0gICAgICAgIGlmIGNyZWF0ZV9kZWFkbG9jazoKLSAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKLSAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgotICAgICAgICAgICAgIiIiVHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkRlYWRsb2NrRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQorICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IE5vbmUKKworICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwpCisKKyAgICAgICAgZGVmIHJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChzZWxmLCBjcmVhdGVfZGVhZGxvY2spOgorICAgICAgICAgICAgTkxPQ0tTID0gMTAKKyAgICAgICAgICAgIGxvY2tzID0gW3NlbGYuTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICAgICAgcGFpcnMgPSBbKGxvY2tzW2ldLCBsb2Nrc1soaSsxKSVOTE9DS1NdKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgorICAgICAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICBhLCBiID0gcGFpcnMucG9wKCkKLSAgICAgICAgICAgIHJhID0gX2FjcXVpcmUoYSkKLSAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCi0gICAgICAgICAgICByYiA9IF9hY3F1aXJlKGIpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgocmEsIHJiKSkKLSAgICAgICAgICAgIGlmIHJiOgotICAgICAgICAgICAgICAgIGIucmVsZWFzZSgpCi0gICAgICAgICAgICBpZiByYToKLSAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKQotICAgICAgICBsb2NrX3Rlc3RzLkJ1bmNoKGYsIE5USFJFQURTKS53YWl0X2Zvcl9maW5pc2hlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBOVEhSRUFEUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKKyAgICAgICAgICAgIGJhcnJpZXIgPSB0aHJlYWRpbmcuQmFycmllcihOVEhSRUFEUykKKyAgICAgICAgICAgIHJlc3VsdHMgPSBbXQogCi0gICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQotICAgICAgICAjIEF0IGxlYXN0IG9uZSBvZiB0aGUgdGhyZWFkcyBkZXRlY3RlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBvbiBpdHMKLSAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQotICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgotICAgICAgICBuYl9kZWFkbG9ja3MgPSByZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKKyAgICAgICAgICAgIGRlZiBfYWNxdWlyZShsb2NrKToKKyAgICAgICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywKKyAgICAgICAgICAgICAgICBGYWxzZSBvbiBkZWFkbG9jay4iIiIKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgotICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgYSwgYiA9IHBhaXJzLnBvcCgpCisgICAgICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQorICAgICAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICAgICAgcmIgPSBfYWNxdWlyZShiKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQorICAgICAgICAgICAgICAgIGlmIHJiOgorICAgICAgICAgICAgICAgICAgICBiLnJlbGVhc2UoKQorICAgICAgICAgICAgICAgIGlmIHJhOgorICAgICAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKQorICAgICAgICAgICAgbG9ja190ZXN0cy5CdW5jaChmLCBOVEhSRUFEUykud2FpdF9mb3JfZmluaXNoZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAidGhyZWFkcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi1jbGFzcyBGcm96ZW5fRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyhEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgTG9ja1R5cGUgPSBmcm96ZW5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCi0gICAgRGVhZGxvY2tFcnJvciA9IGZyb3plbl9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6CisgICAgICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoVHJ1ZSkKKyAgICAgICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cworICAgICAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgIyBkZWFkbG9jayBhdm9pZGFuY2UgbWVjaGFuaXNtIGlzIGNvbnNlcnZhdGl2ZS4KKyAgICAgICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgVHJ1ZSkpLCBsZW4ocmVzdWx0cykgLSBuYl9kZWFkbG9ja3MpCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgInRocmVhZHMgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQotY2xhc3MgU291cmNlX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHMoRGVhZGxvY2tBdm9pZGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIExvY2tUeXBlID0gc291cmNlX2Jvb3RzdHJhcC5fTW9kdWxlTG9jawotICAgIERlYWRsb2NrRXJyb3IgPSBzb3VyY2VfYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisgICAgICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKworCisgICAgREVBRExPQ0tfRVJST1JTID0ge2tpbmQ6IHNwbGl0aW5pdC5fYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBraW5kLCBzcGxpdGluaXQgaW4gaW5pdC5pdGVtcygpfQorCisgICAgKEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cworICAgICApID0gdGVzdF91dGlsLnRlc3RfYm90aChEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrVHlwZT1MT0NLX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWFkbG9ja0Vycm9yPURFQURMT0NLX0VSUk9SUykKK2Vsc2U6CisgICAgREVBRExPQ0tfRVJST1JTID0ge30KKworICAgIGNsYXNzIEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgcGFzcworCisgICAgY2xhc3MgU291cmNlX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBwYXNzCiAKIAogY2xhc3MgTGlmZXRpbWVUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHRlc3RfbG9ja19saWZldGltZShzZWxmKToKICAgICAgICAgbmFtZSA9ICJ4eXp6eSIKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQpAQCAtMTM1LDExICsxNTYsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5ib290c3RyYXAuX21vZHVsZV9sb2NrcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib290c3RyYXAuX21vZHVsZV9sb2NrcykKIAotY2xhc3MgRnJvemVuX0xpZmV0aW1lVGVzdHMoTGlmZXRpbWVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IGZyb3plbl9ib290c3RyYXAKIAotY2xhc3MgU291cmNlX0xpZmV0aW1lVGVzdHMoTGlmZXRpbWVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKKyhGcm96ZW5fTGlmZXRpbWVUZXN0cywKKyBTb3VyY2VfTGlmZXRpbWVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKExpZmV0aW1lVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQppbmRleCA3MTU0MWY2Li44YjMzM2U4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CkBAIC0xLDEwICsxLDggQEAKLWZyb20gLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAogCi1mcm96ZW5faW5pdCwgc291cmNlX2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fYm9vdHN0cmFwID0gZnJvemVuX2luaXQuX2Jvb3RzdHJhcAotc291cmNlX2Jvb3RzdHJhcCA9IHNvdXJjZV9pbml0Ll9ib290c3RyYXAKLWZyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCittYWNoaW5lcnkgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCit1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zLnBhdGgKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydApAQCAtMzYsNiArMzQsOSBAQAogICAgIGRlZiBfaXNfcGFja2FnZShzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGFja2FnZQogCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKIAogY2xhc3MgTmV3TG9hZGVyKFRlc3RMb2FkZXIpOgogCkBAIC01Miw2ICs1Myw4IEBACiAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAorICAgICAgICBmcm96ZW5fdXRpbCA9IHV0aWxbJ0Zyb3plbiddCisKICAgICAgICAgQGZyb3plbl91dGlsLm1vZHVsZV9mb3JfbG9hZGVyCiAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAgICAgbW9kdWxlLmhhbSA9IHNlbGYuSEFNCkBAIC0yMjEsMTggKzIyNCwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9jX3NwZWMuY2FjaGVkLCAnc3BhbS5weWMnKQogCiAKLWNsYXNzIEZyb3plbl9Nb2R1bGVTcGVjVGVzdHMoTW9kdWxlU3BlY1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQotCi0KLWNsYXNzIFNvdXJjZV9Nb2R1bGVTcGVjVGVzdHMoTW9kdWxlU3BlY1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCi0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQorKEZyb3plbl9Nb2R1bGVTcGVjVGVzdHMsCisgU291cmNlX01vZHVsZVNwZWNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1vZHVsZVNwZWNUZXN0cywgdXRpbD11dGlsLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIE1vZHVsZVNwZWNNZXRob2RzVGVzdHM6CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbml0Ll9ib290c3RyYXAKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5uYW1lID0gJ3NwYW0nCiAgICAgICAgIHNlbGYucGF0aCA9ICdzcGFtLnB5JwpAQCAtMjQzLDE1MiArMjQ1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1zZWxmLnBhdGgpCiAgICAgICAgIHNlbGYubG9jX3NwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKIAotICAgICMgaW5pdF9tb2R1bGVfYXR0cnMKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19wYWNrYWdlKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gWydzcGFtJywgJ2hhbSddCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fcGF0aF9fLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2xvY2F0aW9uKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5sb2Nfc3BlYwotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIHNwZWMub3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzcGVjLm9yaWdpbikpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19kaWZmZXJlbnRfbmFtZShzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKCdlZ2dzJykKLSAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoc2VsZi5uYW1lLCBzZWxmLmxvYWRlcikKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfZGlmZmVyZW50X3NwZWMoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ2VnZ3MnLCBvYmplY3QoKSkKLSAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoc2VsZi5uYW1lLCBzZWxmLmxvYWRlcikKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBzcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIHNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2FscmVhZHlfc2V0KHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ2hhbS5lZ2dzJykKLSAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBvYmplY3QoKQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnaGFtJwotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJ2VnZ3MnXQotICAgICAgICBtb2R1bGUuX19maWxlX18gPSAnaGFtL2VnZ3MvX19pbml0X18ucHknCi0gICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKLSAgICAgICAgb3JpZ2luYWwgPSB2YXJzKG1vZHVsZSkuY29weSgpCi0gICAgICAgIHNwZWMgPSBzZWxmLmxvY19zcGVjCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbJyddCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgb3JpZ2luYWxbJ19fbG9hZGVyX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIG9yaWdpbmFsWydfX3BhY2thZ2VfXyddKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3BhdGhfXywgb3JpZ2luYWxbJ19fcGF0aF9fJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBvcmlnaW5hbFsnX19maWxlX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19jYWNoZWRfXywgb3JpZ2luYWxbJ19fY2FjaGVkX18nXSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2ltbXV0YWJsZShzZWxmKToKLSAgICAgICAgbW9kdWxlID0gb2JqZWN0KCkKLSAgICAgICAgc3BlYyA9IHNlbGYubG9jX3NwZWMKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFsnJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19uYW1lX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3NwZWNfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCi0KLSAgICAjIGNyZWF0ZSgpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGUoc2VsZik6Ci0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19wYWNrYWdlX18sIHNlbGYuc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX3NwZWNfXywgc2VsZi5zcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fcGF0aF9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2NhY2hlZF9fJykpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9sb2FkZXIoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzLmltcGxlbWVudGF0aW9uKSgpCi0gICAgICAgIGNsYXNzIENyZWF0aW5nTG9hZGVyKFRlc3RMb2FkZXIpOgotICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gQ3JlYXRpbmdMb2FkZXIoKQotICAgICAgICBjcmVhdGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuY3JlYXRlKCkKLQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQsIG1vZHVsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fc3BlY19fLCBzZWxmLnNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xvYWRlcl9ub3RfaGFuZGxlZChzZWxmKToKLSAgICAgICAgY2xhc3MgQ3JlYXRpbmdMb2FkZXIoVGVzdExvYWRlcik6Ci0gICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gQ3JlYXRpbmdMb2FkZXIoKQotICAgICAgICBjcmVhdGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuY3JlYXRlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19uYW1lX18sIHNlbGYuc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19zcGVjX18sIHNlbGYuc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19jYWNoZWRfXycpKQotCiAgICAgIyBleGVjKCkKIAogICAgIGRlZiB0ZXN0X2V4ZWMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQotICAgICAgICBtb2R1bGUgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzZWxmLnNwZWMpCiAgICAgICAgIHN5cy5tb2R1bGVzW3NlbGYubmFtZV0gPSBtb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ2VnZ3MnKSkKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhtb2R1bGUpCisgICAgICAgIHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbW9kdWxlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmVnZ3MsIDEpCiAKQEAgLTM5Nyw3ICsyNjEsNyBAQAogICAgIGRlZiB0ZXN0X2xvYWQoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuZWdncywgMSkKQEAgLTQxMCw3ICsyNzQsNyBAQAogICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX10gPSByZXBsYWNlbWVudAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gUmVwbGFjaW5nTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIGluc3RhbGxlZCA9IHN5cy5tb2R1bGVzW3NlbGYuc3BlYy5uYW1lXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLCByZXBsYWNlbWVudCkKQEAgLTQyMyw3ICsyODcsNyBAQAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gRmFpbGVkTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihzZWxmLnNwZWMubmFtZSwgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9sb2FkX2ZhaWxlZF9yZW1vdmVkKHNlbGYpOgpAQCAtNDM0LDIwICsyOTgsMjAgQEAKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IEZhaWxlZExvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oc2VsZi5zcGVjLm5hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIHRlc3RfbG9hZF9sZWdhY3koc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmhhbSwgLTEpCiAKICAgICBkZWYgdGVzdF9sb2FkX2xlZ2FjeV9hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTGVnYWN5TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKIAogICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKQEAgLTQ2MSw3ICszMjUsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IEltbXV0YWJsZUxvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdLCBtb2R1bGUpCiAKQEAgLTQ3MCw4ICszMzQsOCBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCi0gICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmV4ZWMobG9hZGVkKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQorICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKICAgICAgICAgICAgIGluc3RhbGxlZCA9IHN5cy5tb2R1bGVzW3NlbGYuc3BlYy5uYW1lXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmVnZ3MsIDEpCkBAIC00ODEsOSArMzQ1LDkgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbW9kaWZpZWQoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgbG9hZGVkLmVnZ3MgPSAyCi0gICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmV4ZWMobG9hZGVkKQorICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5lZ2dzLCAxKQogICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBsb2FkZWQpCkBAIC00OTEsOSArMzU1LDkgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfZXh0cmFfYXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuYXZhaWxhYmxlID0gRmFsc2UKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9hZGVkLmF2YWlsYWJsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWxvYWRlZCwgbG9hZGVkKQpAQCAtNTAxLDEyICszNjUsMTIgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfaW5pdF9tb2R1bGVfYXR0cnMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgbG9hZGVkLl9fbmFtZV9fID0gJ2hhbScKICAgICAgICAgICAgIGRlbCBsb2FkZWQuX19sb2FkZXJfXwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX3BhY2thZ2VfXwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX3NwZWNfXwotICAgICAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCkBAIC01MTksOCArMzgzLDggQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbGVnYWN5KHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTGVnYWN5TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuaGFtLCAtMSkKQEAgLTUyOCwyMCArMzkyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW5zdGFsbGVkLCBsb2FkZWQpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVNwZWNNZXRob2RzVGVzdHMoTW9kdWxlU3BlY01ldGhvZHNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IGZyb3plbl9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLQotY2xhc3MgU291cmNlX01vZHVsZVNwZWNNZXRob2RzVGVzdHMoTW9kdWxlU3BlY01ldGhvZHNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX01vZHVsZVNwZWNNZXRob2RzVGVzdHMsCisgU291cmNlX01vZHVsZVNwZWNNZXRob2RzVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIE1vZHVsZVJlcHJUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm1vZHVsZSA9IHR5cGUob3MpKCdzcGFtJykKICAgICAgICAgc2VsZi5zcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygnc3BhbScsIFRlc3RMb2FkZXIoKSkKQEAgLTYyNSwxNiArNDg3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kcmVwciwgJzxtb2R1bGUgeyFyfT4nLmZvcm1hdCgnc3BhbScpKQogCiAKLWNsYXNzIEZyb3plbl9Nb2R1bGVSZXByVGVzdHMoTW9kdWxlUmVwclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotCi1jbGFzcyBTb3VyY2VfTW9kdWxlUmVwclRlc3RzKE1vZHVsZVJlcHJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX01vZHVsZVJlcHJUZXN0cywKKyBTb3VyY2VfTW9kdWxlUmVwclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlUmVwclRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZhY3RvcnlUZXN0czoKQEAgLTc4NywxMyArNjQzLDE0IEBACiAgICAgIyBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbigpCiAKICAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9kZWZhdWx0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1hY2hpbmVyeSBpcyBzb3VyY2VfbWFjaGluZXJ5OgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ25vdCBzdXJlIHdoeSB0aGlzIGlzIGJyZWFraW5nLi4uJykKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUsIHNlbGYucGF0aCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubmFtZSwgc2VsZi5uYW1lKQorICAgICAgICAjIE5lZWQgdG8gdXNlIGEgY2lyY3VpdG91cyByb3V0ZSB0byBnZXQgYXQgaW1wb3J0bGliLm1hY2hpbmVyeSB0byBtYWtlCisgICAgICAgICMgc3VyZSB0aGUgc2FtZSBjbGFzcyBvYmplY3QgaXMgdXNlZCBpbiB0aGUgaXNpbnN0YW5jZSgpIGNoZWNrIGFzCisgICAgICAgICMgd291bGQgaGF2ZSBiZWVuIHVzZWQgdG8gY3JlYXRlIHRoZSBsb2FkZXIuCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzcGVjLmxvYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuYWJjLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLm5hbWUsIHNlbGYubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLmxvYWRlci5wYXRoLCBzZWxmLnBhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKQEAgLTk0NywxMSArODA0LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcGVjLmhhc19sb2NhdGlvbikKIAogCi1jbGFzcyBGcm96ZW5fRmFjdG9yeVRlc3RzKEZhY3RvcnlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKKyhGcm96ZW5fRmFjdG9yeVRlc3RzLAorIFNvdXJjZV9GYWN0b3J5VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGYWN0b3J5VGVzdHMsIHV0aWw9dXRpbCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCi1jbGFzcyBTb3VyY2VfRmFjdG9yeVRlc3RzKEZhY3RvcnlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKaW5kZXggYjI4MjNjNi4uNjk0NjZiMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtMSwxMCArMSwxMSBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCitmcm9tIC4gaW1wb3J0IHV0aWwKK2FiYyA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLmFiYycpCitpbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2ltcG9ydGxpYl91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCiAKIGltcG9ydCBvcworaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdHlwZXMKQEAgLTMyLDggKzMzLDk0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oW3NlbGYuc291cmNlLCBzZWxmLnNvdXJjZV0pKQogCi1Gcm96ZW5fRGVjb2RlU291cmNlQnl0ZXNUZXN0cywgU291cmNlX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBEZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMsCisgU291cmNlX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRGVjb2RlU291cmNlQnl0ZXNUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworCitjbGFzcyBNb2R1bGVGcm9tU3BlY1Rlc3RzOgorCisgICAgZGVmIHRlc3Rfbm9fY3JlYXRlX21vZHVsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTG9hZGVyOgorICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4odykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NyZWF0ZV9tb2R1bGUnLCBzdHIod1swXS5tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGVfcmV0dXJuc19Ob25lKHNlbGYpOgorICAgICAgICBjbGFzcyBMb2FkZXIoc2VsZi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FscmVhZHkgc2V0JworICAgICAgICBjbGFzcyBDdXN0b21Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gQ3VzdG9tTW9kdWxlKHNwZWMubmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBuYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCBDdXN0b21Nb2R1bGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3RfX19uYW1lX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCisKKyAgICBkZWYgdGVzdF9fX3NwZWNfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19zcGVjX18sIHNwZWMpCisKKyAgICBkZWYgdGVzdF9fX2xvYWRlcl9fKHNlbGYpOgorICAgICAgICBsb2FkZXIgPSBvYmplY3QoKQorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIGxvYWRlcikKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorCisgICAgZGVmIHRlc3RfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0LnBrZycsIG9iamVjdCgpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9fX3BhdGhfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSwgaXNfcGFja2FnZT1UcnVlKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhdGhfXywgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucykKKworICAgIGRlZiB0ZXN0X19fZmlsZV9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpLCBvcmlnaW49J3NvbWUvcGF0aCcpCisgICAgICAgIHNwZWMuaGFzX2xvY2F0aW9uID0gVHJ1ZQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgc3BlYy5vcmlnaW4pCisKKyAgICBkZWYgdGVzdF9fX2NhY2hlZF9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpKQorICAgICAgICBzcGVjLmNhY2hlZCA9ICdzb21lL3BhdGgnCisgICAgICAgIHNwZWMuaGFzX2xvY2F0aW9uID0gVHJ1ZQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLCBzcGVjLmNhY2hlZCkKKworKEZyb3plbl9Nb2R1bGVGcm9tU3BlY1Rlc3RzLAorIFNvdXJjZV9Nb2R1bGVGcm9tU3BlY1Rlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoTW9kdWxlRnJvbVNwZWNUZXN0cywgYWJjPWFiYywgbWFjaGluZXJ5PW1hY2hpbmVyeSwKKyAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIE1vZHVsZUZvckxvYWRlclRlc3RzOgpAQCAtNzAsNyArMTU3LDcgQEAKICAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcwogICAgICAgICAjIGNyZWF0ZWQuCiAgICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCkBAIC04OCw3ICsxNzUsNyBAQAogICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdhLmIuYycpCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gNDIKICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gNDIKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcigpCiAgICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKQEAgLTEwMCw3ICsxODcsNyBAQAogICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCiAgICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KICAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKIApAQCAtMTA4LDcgKzE5NSw3IEBACiAgICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCiAgICAgICAgIG5hbWUgPSAnYS5iLmMnCiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKQEAgLTEyNyw3ICsyMTQsNyBAQAogCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2R1bGUgPSBGYWxzZU1vZHVsZShuYW1lKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlKQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGdpdmVuID0gc2VsZi5yZXR1cm5fbW9kdWxlKG5hbWUpCkBAIC0xNDYsNyArMjMzLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAKICAgICAgICAgbmFtZSA9ICdwa2cubW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoRmFsc2UpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQpAQCAtMTU0LDE1ICsyNDEsMTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCAncGtnJykKIAogICAgICAgICBuYW1lID0gJ3BrZy5zdWInCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihUcnVlKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBuYW1lKQogCi1Gcm96ZW5fTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNvdXJjZV9Nb2R1bGVGb3JMb2FkZXJUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1vZHVsZUZvckxvYWRlclRlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX01vZHVsZUZvckxvYWRlclRlc3RzLAorIFNvdXJjZV9Nb2R1bGVGb3JMb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChNb2R1bGVGb3JMb2FkZXJUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTZXRQYWNrYWdlVGVzdHM6CkBAIC0yMjIsMTggKzMxMSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19uYW1lX18sIGZ4bi5fX25hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKIAotRnJvemVuX1NldFBhY2thZ2VUZXN0cywgU291cmNlX1NldFBhY2thZ2VUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNldFBhY2thZ2VUZXN0cywgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKworKEZyb3plbl9TZXRQYWNrYWdlVGVzdHMsCisgU291cmNlX1NldFBhY2thZ2VUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTZXRQYWNrYWdlVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgU2V0TG9hZGVyVGVzdHM6CiAKICAgICAiIiJUZXN0cyBpbXBvcnRsaWIudXRpbC5zZXRfbG9hZGVyKCkuIiIiCiAKLSAgICBjbGFzcyBEdW1teUxvYWRlcjoKLSAgICAgICAgQHV0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBEdW1teUxvYWRlcihzZWxmKToKKyAgICAgICAgIyBTZXQgRHVtbXlMb2FkZXIgb24gdGhlIGNsYXNzIGxhemlseS4KKyAgICAgICAgY2xhc3MgRHVtbXlMb2FkZXI6CisgICAgICAgICAgICBAc2VsZi51dGlsLnNldF9sb2FkZXIKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorICAgICAgICBzZWxmLl9fY2xhc3NfXy5EdW1teUxvYWRlciA9IER1bW15TG9hZGVyCisgICAgICAgIHJldHVybiBEdW1teUxvYWRlcgogCiAgICAgZGVmIHRlc3Rfbm9fYXR0cmlidXRlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLkR1bW15TG9hZGVyKCkKQEAgLTI2MiwxNyArMzU4LDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDIsIGxvYWRlci5sb2FkX21vZHVsZSgnYmxhaCcpLl9fbG9hZGVyX18pCiAKLWNsYXNzIEZyb3plbl9TZXRMb2FkZXJUZXN0cyhTZXRMb2FkZXJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAZnJvemVuX3V0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQogCi1jbGFzcyBTb3VyY2VfU2V0TG9hZGVyVGVzdHMoU2V0TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjbGFzcyBEdW1teUxvYWRlcjoKLSAgICAgICAgQHNvdXJjZV91dGlsLnNldF9sb2FkZXIKLSAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5tb2R1bGUKKyhGcm96ZW5fU2V0TG9hZGVyVGVzdHMsCisgU291cmNlX1NldExvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNldExvYWRlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFJlc29sdmVOYW1lVGVzdHM6CkBAIC0zMDcsOSArMzk2LDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0nKQogCi1Gcm96ZW5fUmVzb2x2ZU5hbWVUZXN0cywgU291cmNlX1Jlc29sdmVOYW1lVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBSZXNvbHZlTmFtZVRlc3RzLAotICAgICAgICB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX1Jlc29sdmVOYW1lVGVzdHMsCisgU291cmNlX1Jlc29sdmVOYW1lVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUmVzb2x2ZU5hbWVUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBGaW5kU3BlY1Rlc3RzOgpAQCAtMzIwLDcgKzQxMCw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJwogICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMobmFtZSwgbG9hZGVyKQpAQCAtMzMyLDcgKzQyMiw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc193aXRob3V0X19fbG9hZGVyX18oc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZGVsIG1vZHVsZS5fX2xvYWRlcl9fCiAgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJwpAQCAtMzQ0LDcgKzQzNCw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19zcGVjX2lzX05vbmUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gTm9uZQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKQEAgLTM1Myw3ICs0NDMsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfbG9hZGVyX2lzX05vbmUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMobmFtZSwgTm9uZSkKICAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKQEAgLTM2Myw3ICs0NTMsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfc3BlY19pc19ub3Rfc2V0KHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBkZWwgbW9kdWxlLl9fc3BlY19fCkBAIC0zNzUsMjAgKzQ2NSwxMSBAQAogCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIE5vbmUsIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhuYW1lKSkKIAotIyAgICBkZWYgdGVzdF9zdWNjZXNzX3BhdGgoc2VsZik6Ci0jICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCi0jICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotIyAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCi0jICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotIyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKLSMgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCwgTm9uZSksCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhuYW1lLCBwYXRoKSkKLQogICAgIGRlZiB0ZXN0X25vdGhpbmcoc2VsZik6CiAgICAgICAgICMgTm9uZSBpcyByZXR1cm5lZCB1cG9uIGZhaWx1cmUgdG8gZmluZCBhIGxvYWRlci4KICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi51dGlsLmZpbmRfc3BlYygnbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKQEAgLTM5Niw4ICs0NzcsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfc3VibW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi51dGlsLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc29ydGVkKHN5cy5tb2R1bGVzKSkKQEAgLTQwOSw5ICs0OTAsOSBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfc3VibW9kdWxlX3BhcmVudF9hbHJlYWR5X2ltcG9ydGVkKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgogICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5maW5kX3NwZWMoZnVsbG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHNvcnRlZChzeXMubW9kdWxlcykpCkBAIC00MjMsOCArNTA0LDggQEAKICAgICBkZWYgdGVzdF9maW5kX3JlbGF0aXZlX21vZHVsZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICBzdWJuYW1lID0gJ2hhbScKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgcmVsbmFtZSA9ICcuJyArIHN1Ym5hbWUKICAgICAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuZmluZF9zcGVjKHJlbG5hbWUsIG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCkBAIC00MzcsOCArNTE4LDggQEAKICAgICBkZWYgdGVzdF9maW5kX3JlbGF0aXZlX21vZHVsZV9taXNzaW5nX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIHJlbG5hbWUgPSAnLicgKyBzdWJuYW1lCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNlbGYudXRpbC5maW5kX3NwZWMocmVsbmFtZSkKQEAgLTQ0NiwxNSArNTI3LDEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGZ1bGxuYW1lLCBzb3J0ZWQoc3lzLm1vZHVsZXMpKQogCiAKLWNsYXNzIEZyb3plbl9GaW5kU3BlY1Rlc3RzKEZpbmRTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZV9GaW5kU3BlY1Rlc3RzKEZpbmRTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW5pdD1pbml0LCB1dGlsPWltcG9ydGxpYl91dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTWFnaWNOdW1iZXJUZXN0czoKQEAgLTQ2Nyw4ICs1NDMsMTAgQEAKICAgICAgICAgIyBUaGUgbWFnaWMgbnVtYmVyIHVzZXMgXHJcbiB0byBjb21lIG91dCB3cm9uZyB3aGVuIHNwbGl0dGluZyBvbiBsaW5lcy4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudXRpbC5NQUdJQ19OVU1CRVIuZW5kc3dpdGgoYidcclxuJykpCiAKLUZyb3plbl9NYWdpY051bWJlclRlc3RzLCBTb3VyY2VfTWFnaWNOdW1iZXJUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1hZ2ljTnVtYmVyVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fTWFnaWNOdW1iZXJUZXN0cywKKyBTb3VyY2VfTWFnaWNOdW1iZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChNYWdpY051bWJlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFBFUDMxNDdUZXN0czoKQEAgLTQ4NSw3ICs1NjMsOCBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKICAgICAgICAgIyBObyBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KQEAgLTQ5OCw0MyArNTc3LDEwMyBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgotICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKLSAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfZGVidWdfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0Ny9QRVAgNDg4CisgICAgICAgICMgZGVmaW5lZCAucHljIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQotICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksIGV4cGVjdCkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6CiAgICAgICAgIHBhdGggPSAnZm9vLnB5JwogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKICAgICAgICAgIyB2YWx1ZS4KICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQotICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQogICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCiAgICAgICAgICMgcHJvcGFnYXRlcy4KICAgICAgICAgY2xhc3MgQmVhcmlzaDoKICAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249MSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbMTddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJykpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgU2V0dGluZyAnb3B0aW1pemF0aW9uJyB0byAnJyBsZWFkcyB0byBubyBvcHRpbWl6YXRpb24gdGFnIChQRVAgNDg4KS4KKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6YXRpb25fTm9uZShzZWxmKToKKyAgICAgICAgIyBTZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvIE5vbmUgdXNlcyB0aGUgaW50ZXJwcmV0ZXIncyBvcHRpbWl6YXRpb24uCisgICAgICAgICMgKFBFUCA0ODgpCisgICAgICAgIHBhdGggPSAnZm9vLnB5JworICAgICAgICBvcHRpbWl6YXRpb25fbGV2ZWwgPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICAgICAgYWxtb3N0X2V4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBpZiBvcHRpbWl6YXRpb25fbGV2ZWwgPT0gMDoKKyAgICAgICAgICAgIGV4cGVjdCA9IGFsbW9zdF9leHBlY3QgKyAnLnB5YycKKyAgICAgICAgZWxpZiBvcHRpbWl6YXRpb25fbGV2ZWwgPD0gMjoKKyAgICAgICAgICAgIGV4cGVjdCA9IGFsbW9zdF9leHBlY3QgKyAnLm9wdC17fS5weWMnLmZvcm1hdChvcHRpbWl6YXRpb25fbGV2ZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAneyFyfSBpcyBhIG5vbi1zdGFuZGFyZCBvcHRpbWl6YXRpb24gbGV2ZWwnLmZvcm1hdChvcHRpbWl6YXRpb25fbGV2ZWwpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPU5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9zZXQoc2VsZik6CisgICAgICAgICMgVGhlICdvcHRpbWl6YXRpb24nIHBhcmFtZXRlciBhY2NlcHRzIGFueXRoaW5nIHRoYXQgaGFzIGEgc3RyaW5nIHJlcHIKKyAgICAgICAgIyB0aGF0IHBhc3NlcyBzdHIuYWxudW0oKS4KKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIHZhbGlkX2NoYXJhY3RlcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgICAgICAgYWxtb3N0X2V4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBnb3QgPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPXZhbGlkX2NoYXJhY3RlcnMpCisgICAgICAgICMgVGVzdCBhbGwgdmFsaWQgY2hhcmFjdGVycyBhcmUgYWNjZXB0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbW9zdF9leHBlY3QgKyAnLm9wdC17fS5weWMnLmZvcm1hdCh2YWxpZF9jaGFyYWN0ZXJzKSkKKyAgICAgICAgIyBzdHIoKSBzaG91bGQgYmUgY2FsbGVkIG9uIGFyZ3VtZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249NDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbW9zdF9leHBlY3QgKyAnLm9wdC00Mi5weWMnKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0ncGF0aC9pcy9iYWQnKQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfZGVidWdfb3ZlcnJpZGVfb3B0aW1pemF0aW9uX2JvdGhfc2V0KHNlbGYpOgorICAgICAgICAjIENhbiBvbmx5IHNldCBvbmUgb2YgdGhlIG9wdGltaXphdGlvbi1yZWxhdGVkIHBhcmFtZXRlcnMuCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIEZhbHNlLCBvcHRpbWl6YXRpb249JycpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zZXAgPT0gJ1xcJyBhbmQgb3MuYWx0c2VwID09ICcvJywKICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCiAgICAgZGVmIHRlc3Rfc2VwX2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgogICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgc2VwIGlzIHJpZ2h0IG9mIGFsdHNlcC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6L3F1eC5weScsIFRydWUpLAorICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5Jywgb3B0aW1pemF0aW9uPScnKSwKICAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKQEAgLTU3Miw3ICs3MTEsMTIgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwgJ19fcHljYWNoZV9fL2Zvby5weWMnKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX21hbnlfZG90cyhzZWxmKToKLSAgICAgICAgIyBUb28gbWFueSBkb3RzIGluIGZpbmFsIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSgKKyAgICAgICAgICAgICAgICAgICAgJ19fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTMyLm9wdC0xLmZvby5weWMnKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm90X29wdChzZWxmKToKKyAgICAgICAgIyBOb24tYG9wdC1gIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUsCiAgICAgICAgICAgICAnX19weWNhY2hlX18vZm9vLmNweXRob24tMzIuZm9vLnB5YycpCkBAIC01ODMsOSArNzI3LDIxIEBACiAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUsCiAgICAgICAgICAgICAnL2Zvby9iYXIvZm9vLmNweXRob24tMzIuZm9vLnB5YycpCiAKLUZyb3plbl9QRVAzMTQ3VGVzdHMsIFNvdXJjZV9QRVAzMTQ3VGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBQRVAzMTQ3VGVzdHMsCi0gICAgICAgIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfb3B0aW1pemVkX2J5dGVjb2RlKHNlbGYpOgorICAgICAgICAjIE9wdGltaXplZCBieXRlY29kZSBpcyBub3QgYW4gaXNzdWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5vcHQtMS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCAnZm9vLnB5JykKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX21pc3Npbmdfb3B0aW1pemF0aW9uKHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IG9wdGltaXphdGlvbiBsZXZlbCBpcyBhIG5vLW5vLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ub3B0LS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKKworCisoRnJvemVuX1BFUDMxNDdUZXN0cywKKyBTb3VyY2VfUEVQMzE0N1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFBFUDMxNDdUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CmluZGV4IDk2YjRhZGMuLmM4OTNiY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKQEAgLTEsMTQgKzEsNjQgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCittYWNoaW5lcnkgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIC51dGlsIGltcG9ydCB0ZW1wX21vZHVsZQorCitzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3dpbnJlZycsIHJlcXVpcmVkX29uPVsnd2luJ10pCitmcm9tIHdpbnJlZyBpbXBvcnQgKAorICAgIENyZWF0ZUtleSwgSEtFWV9DVVJSRU5UX1VTRVIsCisgICAgU2V0VmFsdWUsIFJFR19TWiwgS0VZX0FMTF9BQ0NFU1MsCisgICAgRW51bUtleSwgQ2xvc2VLZXksIERlbGV0ZUtleSwgT3BlbktleQorKQorCitkZWYgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUocm9vdCwgc3Via2V5KToKKyAgICB0cnk6CisgICAgICAgIGhrZXkgPSBPcGVuS2V5KHJvb3QsIHN1YmtleSwgYWNjZXNzPUtFWV9BTExfQUNDRVNTKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHN1YmtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICByZXR1cm4KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWJzdWJrZXkgPSBFbnVtS2V5KGhrZXksIDApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBubyBtb3JlIHN1YmtleXMKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGRlbGV0ZV9yZWdpc3RyeV90cmVlKGhrZXksIHN1YnN1YmtleSkKKyAgICBDbG9zZUtleShoa2V5KQorICAgIERlbGV0ZUtleShyb290LCBzdWJrZXkpCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHNldHVwX21vZHVsZShtYWNoaW5lcnksIG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgaWYgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRDoKKyAgICAgICAgcm9vdCA9IG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgZWxzZToKKyAgICAgICAgcm9vdCA9IG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuUkVHSVNUUllfS0VZCisgICAga2V5ID0gcm9vdC5mb3JtYXQoZnVsbG5hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgdHJ5OgorICAgICAgICB3aXRoIHRlbXBfbW9kdWxlKG5hbWUsICJhID0gMSIpIGFzIGxvY2F0aW9uOgorICAgICAgICAgICAgc3Via2V5ID0gQ3JlYXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCisgICAgICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGF0aCA9IGxvY2F0aW9uICsgIi5weSIKKyAgICAgICAgICAgIFNldFZhbHVlKHN1YmtleSwgIiIsIFJFR19TWiwgcGF0aCkKKyAgICAgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRDoKKyAgICAgICAgICAgIGtleSA9IG9zLnBhdGguZGlybmFtZShrZXkpCisgICAgICAgIGRlbGV0ZV9yZWdpc3RyeV90cmVlKEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLCAncmVxdWlyZXMgV2luZG93cycpCiBjbGFzcyBXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0czoKLQotICAgICMgWFhYIE5lZWQgYSB0ZXN0IHRoYXQgZmluZHMgdGhlIHNwZWMgdmlhIHRoZSByZWdpc3RyeS4KKyAgICAjIFRoZSBtb2R1bGUgbmFtZSBpcyBwcm9jZXNzLXNwZWNpZmljLCBhbGxvd2luZyBmb3IKKyAgICAjIHNpbXVsdGFuZW91cyBydW5zIG9mIHRoZSBzYW1lIHRlc3Qgb24gYSBzaW5nbGUgbWFjaGluZS4KKyAgICB0ZXN0X21vZHVsZSA9ICJzcGFtaGFte30iLmZvcm1hdChvcy5nZXRwaWQoKSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfc3BlY19taXNzaW5nKHNlbGYpOgogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYygnc3BhbScpCkBAIC0xOCwxMiArNjgsNDIgQEAKICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKCdzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfZm91bmQoc2VsZik6CisgICAgICAgIHdpdGggc2V0dXBfbW9kdWxlKHNlbGYubWFjaGluZXJ5LCBzZWxmLnRlc3RfbW9kdWxlKToKKyAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5maW5kX21vZHVsZShzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5maW5kX3NwZWMoc2VsZi50ZXN0X21vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobG9hZGVyLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzcGVjLCBOb25lKQogCi1jbGFzcyBGcm96ZW5fV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMoV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X2ZvdW5kKHNlbGYpOgorICAgICAgICB3aXRoIHNldHVwX21vZHVsZShzZWxmLm1hY2hpbmVyeSwgc2VsZi50ZXN0X21vZHVsZSwgcGF0aD0iLiIpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYyhzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAorKEZyb3plbl9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywKKyBTb3VyY2VfV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAotY2xhc3MgU291cmNlX1dpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzKFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICdyZXF1aXJlcyBXaW5kb3dzJykKK2NsYXNzIFdpbmRvd3NFeHRlbnNpb25TdWZmaXhUZXN0czoKKyAgICBkZWYgdGVzdF90YWdnZWRfc3VmZml4KHNlbGYpOgorICAgICAgICBzdWZmaXhlcyA9IHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUworICAgICAgICBleHBlY3RlZF90YWcgPSAiLmNwezAubWFqb3J9ezAubWlub3J9LXsxfS5weWQiLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLAorICAgICAgICAgICAgcmUuc3ViKCdbXmEtekEtWjAtOV0nLCAnXycsIGdldF9wbGF0Zm9ybSgpKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdW50YWdnZWRfaSA9IHN1ZmZpeGVzLmluZGV4KCIucHlkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICB1bnRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoIl9kLnB5ZCIpCisgICAgICAgICAgICBleHBlY3RlZF90YWcgPSAiX2QiICsgZXhwZWN0ZWRfdGFnCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF90YWcsIHN1ZmZpeGVzKQorCisgICAgICAgICMgRW5zdXJlIHRoZSB0YWdzIGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlcgorICAgICAgICB0YWdnZWRfaSA9IHN1ZmZpeGVzLmluZGV4KGV4cGVjdGVkX3RhZykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRhZ2dlZF9pLCB1bnRhZ2dlZF9pKQorCisoRnJvemVuX1dpbmRvd3NFeHRlbnNpb25TdWZmaXhUZXN0cywKKyBTb3VyY2VfV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKaW5kZXggODg1Y2VjMy4uY2UyMDM3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CkBAIC0xLDMxICsxLDg1IEBACi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbCwgaW52YWxpZGF0ZV9jYWNoZXMKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBlcnJubworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeSwgdXRpbCwgaW52YWxpZGF0ZV9jYWNoZXMKK2ltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwogCiAKK0JVSUxUSU5TID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKK0JVSUxUSU5TLmdvb2RfbmFtZSA9IE5vbmUKK0JVSUxUSU5TLmJhZF9uYW1lID0gTm9uZQoraWYgJ2Vycm5vJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CisgICAgQlVJTFRJTlMuZ29vZF9uYW1lID0gJ2Vycm5vJworaWYgJ2ltcG9ydGxpYicgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICBCVUlMVElOUy5iYWRfbmFtZSA9ICdpbXBvcnRsaWInCisKK0VYVEVOU0lPTlMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorRVhURU5TSU9OUy5wYXRoID0gTm9uZQorRVhURU5TSU9OUy5leHQgPSBOb25lCitFWFRFTlNJT05TLmZpbGVuYW1lID0gTm9uZQorRVhURU5TSU9OUy5maWxlX3BhdGggPSBOb25lCitFWFRFTlNJT05TLm5hbWUgPSAnX3Rlc3RjYXBpJworCitkZWYgX2V4dGVuc2lvbl9kZXRhaWxzKCk6CisgICAgZ2xvYmFsIEVYVEVOU0lPTlMKKyAgICBmb3IgcGF0aCBpbiBzeXMucGF0aDoKKyAgICAgICAgZm9yIGV4dCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBFWFRFTlNJT05TLm5hbWUgKyBleHQKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIEVYVEVOU0lPTlMuZXh0ID0gZXh0CisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgICAgICAgICByZXR1cm4KKworX2V4dGVuc2lvbl9kZXRhaWxzKCkKKworCiBkZWYgaW1wb3J0X2ltcG9ydGxpYihtb2R1bGVfbmFtZSk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlIGZyb20gaW1wb3J0bGliIGJvdGggdy8gYW5kIHcvbyBfZnJvemVuX2ltcG9ydGxpYi4iIiIKICAgICBmcmVzaCA9ICgnaW1wb3J0bGliJywpIGlmICcuJyBpbiBtb2R1bGVfbmFtZSBlbHNlICgpCiAgICAgZnJvemVuID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKG1vZHVsZV9uYW1lKQogICAgIHNvdXJjZSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZShtb2R1bGVfbmFtZSwgZnJlc2g9ZnJlc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQ9KCdfZnJvemVuX2ltcG9ydGxpYicsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD0oJ19mcm96ZW5faW1wb3J0bGliJywgJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJykpCisgICAgcmV0dXJuIHsnRnJvemVuJzogZnJvemVuLCAnU291cmNlJzogc291cmNlfQorCisKK2RlZiBzcGVjaWFsaXplX2NsYXNzKGNscywga2luZCwgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIyBYWFggU3VwcG9ydCBwYXNzaW5nIGluIHN1Ym1vZHVsZSBuYW1lcy0tbG9hZCAoYW5kIGNhY2hlKSB0aGVtPworICAgICMgVGhhdCB3b3VsZCBjbGVhbiB1cCB0aGUgdGVzdCBtb2R1bGVzIGEgYml0IG1vcmUuCisgICAgaWYgYmFzZSBpcyBOb25lOgorICAgICAgICBiYXNlID0gdW5pdHRlc3QuVGVzdENhc2UKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGJhc2UsIHR5cGUpOgorICAgICAgICBiYXNlID0gYmFzZVtraW5kXQorICAgIG5hbWUgPSAne31fe30nLmZvcm1hdChraW5kLCBjbHMuX19uYW1lX18pCisgICAgYmFzZXMgPSAoY2xzLCBiYXNlKQorICAgIHNwZWNpYWxpemVkID0gdHlwZXMubmV3X2NsYXNzKG5hbWUsIGJhc2VzKQorICAgIHNwZWNpYWxpemVkLl9fbW9kdWxlX18gPSBjbHMuX19tb2R1bGVfXworICAgIHNwZWNpYWxpemVkLl9OQU1FID0gY2xzLl9fbmFtZV9fCisgICAgc3BlY2lhbGl6ZWQuX0tJTkQgPSBraW5kCisgICAgZm9yIGF0dHIsIHZhbHVlcyBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgdmFsdWUgPSB2YWx1ZXNba2luZF0KKyAgICAgICAgc2V0YXR0cihzcGVjaWFsaXplZCwgYXR0ciwgdmFsdWUpCisgICAgcmV0dXJuIHNwZWNpYWxpemVkCisKKworZGVmIHNwbGl0X2Zyb3plbihjbHMsIGJhc2U9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGZyb3plbiA9IHNwZWNpYWxpemVfY2xhc3MoY2xzLCAnRnJvemVuJywgYmFzZSwgKiprd2FyZ3MpCisgICAgc291cmNlID0gc3BlY2lhbGl6ZV9jbGFzcyhjbHMsICdTb3VyY2UnLCBiYXNlLCAqKmt3YXJncykKICAgICByZXR1cm4gZnJvemVuLCBzb3VyY2UKIAogCi1kZWYgdGVzdF9ib3RoKHRlc3RfY2xhc3MsICoqa3dhcmdzKToKLSAgICBmcm96ZW5fdGVzdHMgPSB0eXBlcy5uZXdfY2xhc3MoJ0Zyb3plbl8nK3Rlc3RfY2xhc3MuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2NsYXNzLCB1bml0dGVzdC5UZXN0Q2FzZSkpCi0gICAgc291cmNlX3Rlc3RzID0gdHlwZXMubmV3X2NsYXNzKCdTb3VyY2VfJyt0ZXN0X2NsYXNzLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpKQotICAgIGZyb3plbl90ZXN0cy5fX21vZHVsZV9fID0gc291cmNlX3Rlc3RzLl9fbW9kdWxlX18gPSB0ZXN0X2NsYXNzLl9fbW9kdWxlX18KLSAgICBmb3IgYXR0ciwgKGZyb3plbl92YWx1ZSwgc291cmNlX3ZhbHVlKSBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgc2V0YXR0cihmcm96ZW5fdGVzdHMsIGF0dHIsIGZyb3plbl92YWx1ZSkKLSAgICAgICAgc2V0YXR0cihzb3VyY2VfdGVzdHMsIGF0dHIsIHNvdXJjZV92YWx1ZSkKLSAgICByZXR1cm4gZnJvemVuX3Rlc3RzLCBzb3VyY2VfdGVzdHMKK2RlZiB0ZXN0X2JvdGgodGVzdF9jbGFzcywgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgcmV0dXJuIHNwbGl0X2Zyb3plbih0ZXN0X2NsYXNzLCBiYXNlLCAqKmt3YXJncykKIAogCiBDQVNFX0lOU0VOU0lUSVZFX0ZTID0gVHJ1ZQpAQCAtMzgsNiArOTIsMTAgQEAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2hhbmdlZF9uYW1lKToKICAgICAgICAgQ0FTRV9JTlNFTlNJVElWRV9GUyA9IEZhbHNlCiAKK3NvdXJjZV9pbXBvcnRsaWIgPSBpbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKVsnU291cmNlJ10KK19faW1wb3J0X18gPSB7J0Zyb3plbic6IHN0YXRpY21ldGhvZChidWlsdGlucy5fX2ltcG9ydF9fKSwKKyAgICAgICAgICAgICAgJ1NvdXJjZSc6IHN0YXRpY21ldGhvZChzb3VyY2VfaW1wb3J0bGliLl9faW1wb3J0X18pfQorCiAKIGRlZiBjYXNlX2luc2Vuc2l0aXZlX3Rlc3RzKHRlc3QpOgogICAgICIiIkNsYXNzIGRlY29yYXRvciB0aGF0IG51bGxpZmllcyB0ZXN0cyByZXF1aXJpbmcgYSBjYXNlLWluc2Vuc2l0aXZlCkBAIC01Myw3ICsxMTEsNyBAQAogICAgIHJldHVybiAne30ue30nLmZvcm1hdChwYXJlbnQsIG5hbWUpLCBwYXRoCiAKIAotQGNvbnRleHRtYW5hZ2VyCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHVuY2FjaGUoKm5hbWVzKToKICAgICAiIiJVbmNhY2hlIGEgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMuCiAKQEAgLTc5LDcgKzEzNyw3IEBACiAgICAgICAgICAgICAgICAgcGFzcwogCiAKLUBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiB0ZW1wX21vZHVsZShuYW1lLCBjb250ZW50PScnLCAqLCBwa2c9RmFsc2UpOgogICAgIGNvbmZsaWN0cyA9IFtuIGZvciBuIGluIHN5cy5tb2R1bGVzIGlmIG4ucGFydGl0aW9uKCcuJylbMF0gPT0gbmFtZV0KICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoTm9uZSkgYXMgY3dkOgpAQCAtMTAzLDcgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgeWllbGQgbG9jYXRpb24KIAogCi1AY29udGV4dG1hbmFnZXIKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgaW1wb3J0X3N0YXRlKCoqa3dhcmdzKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gbWFuYWdlIHRoZSB2YXJpb3VzIGltcG9ydGVycyBhbmQgc3RvcmVkIHN0YXRlIGluIHRoZQogICAgIHN5cyBtb2R1bGUuCkBAIC0xOTgsNiArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAKKwogY2xhc3MgbW9ja19zcGVjKF9JbXBvcnRlck1vY2spOgogCiAgICAgIiIiSW1wb3J0ZXIgbW9jayB1c2luZyBQRVAgNDUxIEFQSXMuIiIiCkBAIC0yMjMsMyArMjgyLDk5IEBACiAgICAgICAgICAgICBzZWxmLm1vZHVsZV9jb2RlW21vZHVsZS5fX3NwZWNfXy5uYW1lXSgpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHBhc3MKKworCitkZWYgd3JpdGVzX2J5dGVjb2RlX2ZpbGVzKGZ4bik6CisgICAgIiIiRGVjb3JhdG9yIHRvIHByb3RlY3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgZnJvbSBtdXRhdGlvbiBhbmQgdG8gc2tpcAorICAgIHRlc3RzIHRoYXQgcmVxdWlyZSBpdCB0byBiZSBzZXQgdG8gRmFsc2UuIiIiCisgICAgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6CisgICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBOb25lCisgICAgQGZ1bmN0b29scy53cmFwcyhmeG4pCisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgb3JpZ2luYWwgPSBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRvX3JldHVybiA9IGZ4bigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9yaWdpbmFsCisgICAgICAgIHJldHVybiB0b19yZXR1cm4KKyAgICByZXR1cm4gd3JhcHBlcgorCisKK2RlZiBlbnN1cmVfYnl0ZWNvZGVfcGF0aChieXRlY29kZV9wYXRoKToKKyAgICAiIiJFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGZvciBQRVAgMzE0NyBweWMgZmlsZSBleGlzdHMuCisKKyAgICA6cGFyYW0gYnl0ZWNvZGVfcGF0aDogRmlsZSBzeXN0ZW0gcGF0aCB0byBQRVAgMzE0NyBweWMgZmlsZS4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguZGlybmFtZShieXRlY29kZV9wYXRoKSkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgcmFpc2UKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGNyZWF0ZV9tb2R1bGVzKCpuYW1lcyk6CisgICAgIiIiVGVtcG9yYXJpbHkgY3JlYXRlIGVhY2ggbmFtZWQgbW9kdWxlIHdpdGggYW4gYXR0cmlidXRlIChuYW1lZCAnYXR0cicpCisgICAgdGhhdCBjb250YWlucyB0aGUgbmFtZSBwYXNzZWQgaW50byB0aGUgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2F1c2VkIHRoZQorICAgIGNyZWF0aW9uIG9mIHRoZSBtb2R1bGUuCisKKyAgICBBbGwgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHJldHVybmVkIGJ5CisgICAgdGVtcGZpbGUubWtkdGVtcCgpLiBUaGlzIGRpcmVjdG9yeSBpcyBpbnNlcnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgc3lzLnBhdGguIFdoZW4gdGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyBhbGwgY3JlYXRlZCBmaWxlcyAoc291cmNlIGFuZAorICAgIGJ5dGVjb2RlKSBhcmUgZXhwbGljaXRseSBkZWxldGVkLgorCisgICAgTm8gbWFnaWMgaXMgcGVyZm9ybWVkIHdoZW4gY3JlYXRpbmcgcGFja2FnZXMhIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgY3JlYXRlCisgICAgYSBtb2R1bGUgd2l0aGluIGEgcGFja2FnZSB5b3UgbXVzdCBhbHNvIGNyZWF0ZSB0aGUgcGFja2FnZSdzIF9faW5pdF9fIGFzCisgICAgd2VsbC4KKworICAgICIiIgorICAgIHNvdXJjZSA9ICdhdHRyID0gezAhcn0nCisgICAgY3JlYXRlZF9wYXRocyA9IFtdCisgICAgbWFwcGluZyA9IHt9CisgICAgc3RhdGVfbWFuYWdlciA9IE5vbmUKKyAgICB1bmNhY2hlX21hbmFnZXIgPSBOb25lCisgICAgdHJ5OgorICAgICAgICB0ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBtYXBwaW5nWycucm9vdCddID0gdGVtcF9kaXIKKyAgICAgICAgaW1wb3J0X25hbWVzID0gc2V0KCkKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnX19pbml0X18nKToKKyAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW1wb3J0X25hbWUgPSBuYW1lWzotbGVuKCcuX19pbml0X18nKV0KKyAgICAgICAgICAgIGltcG9ydF9uYW1lcy5hZGQoaW1wb3J0X25hbWUpCisgICAgICAgICAgICBpZiBpbXBvcnRfbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbaW1wb3J0X25hbWVdCisgICAgICAgICAgICBuYW1lX3BhcnRzID0gbmFtZS5zcGxpdCgnLicpCisgICAgICAgICAgICBmaWxlX3BhdGggPSB0ZW1wX2RpcgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBuYW1lX3BhcnRzWzotMV06CisgICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBvcy5ta2RpcihmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfcGF0aHMuYXBwZW5kKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihmaWxlX3BhdGgsIG5hbWVfcGFydHNbLTFdICsgJy5weScpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQorICAgICAgICAgICAgbWFwcGluZ1tuYW1lXSA9IGZpbGVfcGF0aAorICAgICAgICB1bmNhY2hlX21hbmFnZXIgPSB1bmNhY2hlKCppbXBvcnRfbmFtZXMpCisgICAgICAgIHVuY2FjaGVfbWFuYWdlci5fX2VudGVyX18oKQorICAgICAgICBzdGF0ZV9tYW5hZ2VyID0gaW1wb3J0X3N0YXRlKHBhdGg9W3RlbXBfZGlyXSkKKyAgICAgICAgc3RhdGVfbWFuYWdlci5fX2VudGVyX18oKQorICAgICAgICB5aWVsZCBtYXBwaW5nCisgICAgZmluYWxseToKKyAgICAgICAgaWYgc3RhdGVfbWFuYWdlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN0YXRlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgaWYgdW5jYWNoZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgIHN1cHBvcnQucm10cmVlKHRlbXBfZGlyKQorCisKK2RlZiBtb2NrX3BhdGhfaG9vaygqZW50cmllcywgaW1wb3J0ZXIpOgorICAgICIiIkEgbW9jayBzeXMucGF0aF9ob29rcyBlbnRyeS4iIiIKKyAgICBkZWYgaG9vayhlbnRyeSk6CisgICAgICAgIGlmIGVudHJ5IG5vdCBpbiBlbnRyaWVzOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKyAgICAgICAgcmV0dXJuIGltcG9ydGVyCisgICAgcmV0dXJuIGhvb2sKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA1OGE2Y2QyLi40Njk1ZGE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGZ1bmN0b29scwpAQCAtOCw2ICs5LDcgQEAKIGltcG9ydCBvcwogZnJvbSBvcy5wYXRoIGltcG9ydCBub3JtY2FzZQogaW1wb3J0IF9waWNrbGUKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwpAQCAtMTYsNiArMTgsNyBAQAogaW1wb3J0IHVuaWNvZGVkYXRhCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdC5tb2NrCitpbXBvcnQgd2FybmluZ3MKIAogdHJ5OgogICAgIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBUaHJlYWRQb29sRXhlY3V0b3IKQEAgLTIzLDggKzI2LDggQEAKICAgICBUaHJlYWRQb29sRXhlY3V0b3IgPSBOb25lCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgRGlyc09uU3lzUGF0aCwgY3B5dGhvbl9vbmx5Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgTUlTU0lOR19DX0RPQ1NUUklOR1MKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBNSVNTSU5HX0NfRE9DU1RSSU5HUywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCiAKQEAgLTYwLDE0ICs2MywxNiBAQAogICAgIHByZWRpY2F0ZXMgPSBzZXQoW2luc3BlY3QuaXNidWlsdGluLCBpbnNwZWN0LmlzY2xhc3MsIGluc3BlY3QuaXNjb2RlLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uXSkKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZ2VuZXJhdG9yLCBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uXSkKIAogICAgIGRlZiBpc3Rlc3Qoc2VsZiwgcHJlZGljYXRlLCBleHApOgogICAgICAgICBvYmogPSBldmFsKGV4cCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByZWRpY2F0ZShvYmopLCAnJXMoJXMpJyAlIChwcmVkaWNhdGUuX19uYW1lX18sIGV4cCkpCiAKICAgICAgICAgZm9yIG90aGVyIGluIHNlbGYucHJlZGljYXRlcyAtIHNldChbcHJlZGljYXRlXSk6Ci0gICAgICAgICAgICBpZiBwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIGFuZFwKKyAgICAgICAgICAgIGlmIChwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIG9yIFwKKyAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3RoZXIob2JqKSwgJ25vdCAlcyglcyknICUgKG90aGVyLl9fbmFtZV9fLCBleHApKQpAQCAtNzYsMTIgKzgxLDIxIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIHJldHVybiAnc3BhbScKKworQHR5cGVzLmNvcm91dGluZQorZGVmIGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKKyAgICB5aWVsZAorICAgIHJldHVybiAnc3BhbScKKworCiBjbGFzcyBUZXN0UHJlZGljYXRlcyhJc1Rlc3RCYXNlKToKLSAgICBkZWYgdGVzdF9zaXh0ZWVuKHNlbGYpOgorICAgIGRlZiB0ZXN0X2VpZ2h0dGVlbihzZWxmKToKICAgICAgICAgY291bnQgPSBsZW4oW3ggZm9yIHggaW4gZGlyKGluc3BlY3QpIGlmIHguc3RhcnRzd2l0aCgnaXMnKV0pCiAgICAgICAgICMgVGhpcyB0ZXN0IGlzIGhlcmUgZm9yIHJlbWVtYmVyIHlvdSB0byB1cGRhdGUgRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKICAgICAgICAgIyB3aGljaCBjbGFpbXMgdGhlcmUgYXJlIDE2IHN1Y2ggZnVuY3Rpb25zCi0gICAgICAgIGV4cGVjdGVkID0gMTYKKyAgICAgICAgZXhwZWN0ZWQgPSAxOQogICAgICAgICBlcnJfbXNnID0gIlRoZXJlIGFyZSAlZCAobm90ICVkKSBpcyogZnVuY3Rpb25zIiAlIChjb3VudCwgZXhwZWN0ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnQsIGV4cGVjdGVkLCBlcnJfbXNnKQogCkBAIC0xMTIsMTEgKzEyNiw2NCBAQAogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3IsICdjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5kZWZhdWx0X2ZhY3RvcnknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yLCAnKHggZm9yIHggaW4gcmFuZ2UoMikpJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLCAnZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUnKQorCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNjb3JvdXRpbmUsICdjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKScpCisgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24sICdjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZScpCisKICAgICAgICAgaWYgaGFzYXR0cih0eXBlcywgJ01lbWJlckRlc2NyaXB0b3JUeXBlJyk6CiAgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbWVtYmVyZGVzY3JpcHRvciwgJ2RhdGV0aW1lLnRpbWVkZWx0YS5kYXlzJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IoZGF0ZXRpbWUudGltZWRlbHRhLmRheXMpKQogCisgICAgZGVmIHRlc3RfaXNjb3JvdXRpbmUoc2VsZik6CisgICAgICAgIGdlbl9jb3JvID0gZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisgICAgICAgIGNvcm8gPSBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihnZW5fY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZShnZW5fY29ybykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGdlbl9jb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZShjb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGNvcm8pKQorCisgICAgICAgIGNvcm8uY2xvc2UoKTsgZ2VuX2Nvcm8uY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZ3MKKworICAgIGRlZiB0ZXN0X2lzYXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShnZW4oKSkpCisKKyAgICAgICAgY29ybyA9IGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisgICAgICAgIGdlbl9jb3JvID0gZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2F3YWl0YWJsZShjb3JvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2F3YWl0YWJsZShnZW5fY29ybykpCisKKyAgICAgICAgY2xhc3MgRnV0dXJlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXygpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoRnV0dXJlKCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNhd2FpdGFibGUoRnV0dXJlKSkKKworICAgICAgICBjbGFzcyBOb3RGdXR1cmU6IHBhc3MKKyAgICAgICAgbm90X2Z1dCA9IE5vdEZ1dHVyZSgpCisgICAgICAgIG5vdF9mdXQuX19hd2FpdF9fID0gbGFtYmRhOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShub3RfZnV0KSkKKworICAgICAgICBjb3JvLmNsb3NlKCk7IGdlbl9jb3JvLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmdzCisKICAgICBkZWYgdGVzdF9pc3JvdXRpbmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0Lmlzcm91dGluZShtb2Quc3BhbSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0Lmlzcm91dGluZShbXS5jb3VudCkpCkBAIC0xODIsNiArMjQ5LDE0IEBACiAgICAgICAgICAgICAgKG1vZGZpbGUsIDQzLCAnYXJndWUnLCBbJyAgICAgICAgICAgIHNwYW0oYSwgYiwgYylcbiddLCAwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZpc2UoKm1vZC5zdFszXVsxOl0pLAogICAgICAgICAgICAgIChtb2RmaWxlLCAzOSwgJ2FidXNlJywgWycgICAgICAgIHNlbGYuYXJndWUoYSwgYiwgYylcbiddLCAwKSkKKyAgICAgICAgIyBUZXN0IG5hbWVkIHR1cGxlIGZpZWxkcworICAgICAgICByZWNvcmQgPSBtb2Quc3RbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWNvcmQuZnJhbWUsIG1vZC5mcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGluZW5vLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZmlsZW5hbWUsIG1vZC5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZnVuY3Rpb24sICdlZ2dzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW5zcGVjdC5zdGFjaygpJywgcmVjb3JkLmNvZGVfY29udGV4dFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuaW5kZXgsIDApCiAKICAgICBkZWYgdGVzdF90cmFjZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2l0LnRyKSwgMykKQEAgLTIxMyw5ICsyODgsNyBAQAogICAgICMgU3ViY2xhc3NlcyBtdXN0IG92ZXJyaWRlLgogICAgIGZvZGRlck1vZHVsZSA9IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0KKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihpbnNwZWN0LmdldHNvdXJjZWZpbGUoc2VsZi5mb2RkZXJNb2R1bGUpKSBhcyBmcDoKICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZnAucmVhZCgpCiAKQEAgLTI4MSw2ICszNTQsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhnaXQuYWJ1c2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfZ2V0ZG9jX2luaGVyaXRlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhtb2QuRmVzdGVyaW5nR29iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQSBsb25nZXIsXG5cbmluZGVudGVkXG5cbmRvY3N0cmluZy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IuYWJ1c2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IoKS5hYnVzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fub3RoZXJcblxuZG9jc3RyaW5nXG5cbmNvbnRhaW5pbmdcblxudGFicycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRkb2MobW9kLkZlc3RlcmluZ0dvYi5jb250cmFkaWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGF1dG9tYXRpYyBnYWluc2F5aW5nLicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKE1JU1NJTkdfQ19ET0NTVFJJTkdTLCAidGVzdCByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9maW5kZG9jKHNlbGYpOgorICAgICAgICBmaW5kZG9jID0gaW5zcGVjdC5fZmluZGRvYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50KSwgaW50Ll9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQudG9fYnl0ZXMpLCBpbnQudG9fYnl0ZXMuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kZG9jKGludCgpLnRvX2J5dGVzKSwgaW50LnRvX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQuZnJvbV9ieXRlcyksIGludC5mcm9tX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQucmVhbCksIGludC5yZWFsLl9fZG9jX18pCisKICAgICBkZWYgdGVzdF9jbGVhbmRvYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmNsZWFuZG9jKCdBblxuICAgIGluZGVudGVkXG4gICAgZG9jc3RyaW5nLicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBblxuaW5kZW50ZWRcbmRvY3N0cmluZy4nKQpAQCAtMzA1LDcgKzM5OSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRzb3VyY2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwoZ2l0LmFidXNlLCAyOSwgMzkpCi0gICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLlN0dXBpZEdpdCwgMjEsIDQ2KQorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZC5TdHVwaWRHaXQsIDIxLCA1MCkKIAogICAgIGRlZiB0ZXN0X2dldHNvdXJjZWZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG1vZC5zcGFtKSksIG1vZGZpbGUpCkBAIC0zNjAsNiArNDU0LDkgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IGdldGxpbmVzCiAKKyAgICBkZWYgdGVzdF9nZXRzb3VyY2Vfb25fY29kZV9vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLmVnZ3MuX19jb2RlX18sIDEyLCAxOCkKKwogY2xhc3MgVGVzdERlY29yYXRvcnMoR2V0U291cmNlQmFzZSk6CiAgICAgZm9kZGVyTW9kdWxlID0gbW9kMgogCkBAIC0zNjksNiArNDY2LDEyIEBACiAgICAgZGVmIHRlc3RfcmVwbGFjaW5nX2RlY29yYXRvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLmdvbmUsIDksIDEwKQogCisgICAgZGVmIHRlc3RfZ2V0c291cmNlX3Vud3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLnJlYWwsIDEzMCwgMTMyKQorCisgICAgZGVmIHRlc3RfZGVjb3JhdG9yX3dpdGhfbGFtYmRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIuZnVuYzExNCwgMTEzLCAxMTUpCisKIGNsYXNzIFRlc3RPbmVsaW5lcnMoR2V0U291cmNlQmFzZSk6CiAgICAgZm9kZGVyTW9kdWxlID0gbW9kMgogICAgIGRlZiB0ZXN0X29uZWxpbmVfbGFtYmRhKHNlbGYpOgpAQCAtNDYyLDggKzU2NSwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZ2V0c291cmNlLCBjbykKIAorICAgIGRlZiB0ZXN0X2dldHNvdXJjZV9vbl9tZXRob2Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5DbGFzc1dpdGhNZXRob2QubWV0aG9kLCAxMTgsIDExOSkKKwogY2xhc3MgVGVzdE5vRU9MKEdldFNvdXJjZUJhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi50ZW1wZGlyID0gVEVTVEZOICsgJ19kaXInCiAgICAgICAgIG9zLm1rZGlyKHNlbGYudGVtcGRpcikKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsCkBAIC00NzIsNyArNTc4LDcgQEAKICAgICAgICAgd2l0aCBEaXJzT25TeXNQYXRoKHNlbGYudGVtcGRpcik6CiAgICAgICAgICAgICBpbXBvcnQgaW5zcGVjdF9mb2RkZXIzIGFzIG1vZDMKICAgICAgICAgc2VsZi5mb2RkZXJNb2R1bGUgPSBtb2QzCi0gICAgICAgIEdldFNvdXJjZUJhc2UuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRlbXBkaXIpCkBAIC01MjUsNyArNjMxLDggQEAKIAogICAgIGRlZiBhc3NlcnRBcmdTcGVjRXF1YWxzKHNlbGYsIHJvdXRpbmUsIGFyZ3NfZSwgdmFyYXJnc19lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFya3dfZT1Ob25lLCBkZWZhdWx0c19lPU5vbmUsIGZvcm1hdHRlZD1Ob25lKToKLSAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgYXJnc19lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcmFyZ3MsIHZhcmFyZ3NfZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJrdywgdmFya3dfZSkKQEAgLTE2MzAsMTAgKzE3MzcsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCiAKIAorY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOgorICAgICMgVG9wLWxldmVsIHRvIG1ha2UgaXQgcGlja2xhYmxlOworICAgICMgdXNlZCBpbiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlCisgICAgcGFzcworCitjbGFzcyBNeVBhcmFtZXRlcihpbnNwZWN0LlBhcmFtZXRlcik6CisgICAgIyBUb3AtbGV2ZWwgdG8gbWFrZSBpdCBwaWNrbGFibGU7CisgICAgIyB1c2VkIGluIHRlc3Rfc2lnbmF0dXJlX29iamVjdF9waWNrbGUKKyAgICBwYXNzCisKKworCiBjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNpZ25hdHVyZShmdW5jKToKLSAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICBkZWYgc2lnbmF0dXJlKGZ1bmMsICoqa3cpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jLCAqKmt3KQogICAgICAgICByZXR1cm4gKHR1cGxlKChwYXJhbS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkgZWxzZSBwYXJhbS5kZWZhdWx0KSwKICAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5hbm5vdGF0aW9uIGlzIHBhcmFtLmVtcHR5CkBAIC0xNjg3LDYgKzE4MDYsMzcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQnKToKICAgICAgICAgICAgIFMoKHBrZCwgcGspKQogCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHNpZykuc3RhcnRzd2l0aCgnPFNpZ25hdHVyZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJyhwbywgcGsnIGluIHJlcHIoc2lnKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBmb29fcGFydGlhbCA9IGZ1bmN0b29scy5wYXJ0aWFsKGZvbywgYT0xKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvb19wYXJ0aWFsKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1GYWxzZSk6CisgICAgICAgICAgICAgICAgc2lnX3BpY2tsZWQgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHNpZywgdmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZywgc2lnX3BpY2tsZWQpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgYmFzaWMgc3ViLWNsYXNzaW5nIHdvcmtzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgbXlwYXJhbSA9IE15UGFyYW1ldGVyKG5hbWU9J3onLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgbXlwYXJhbXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChzaWcucGFyYW1ldGVycywgYT1teXBhcmFtKQorICAgICAgICBteXNpZyA9IE15U2lnbmF0dXJlKCkucmVwbGFjZShwYXJhbWV0ZXJzPW15cGFyYW1zLnZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1zaWcucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLCBNeVNpZ25hdHVyZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLnBhcmFtZXRlcnNbJ3onXSwgTXlQYXJhbWV0ZXIpKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1UcnVlKToKKyAgICAgICAgICAgICAgICBzaWdfcGlja2xlZCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobXlzaWcsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteXNpZywgc2lnX3BpY2tsZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2lnX3BpY2tsZWQsIE15U2lnbmF0dXJlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWdfcGlja2xlZC5wYXJhbWV0ZXJzWyd6J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXlQYXJhbWV0ZXIpKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2ltbXV0YWJpbGl0eShzZWxmKToKICAgICAgICAgZGVmIHRlc3QoYSk6CiAgICAgICAgICAgICBwYXNzCkBAIC0xODAxLDYgKzE5NTEsOCBAQAogICAgICAgICB0ZXN0X3VuYm91bmRfbWV0aG9kKGRpY3QuX19kZWxpdGVtX18pCiAgICAgICAgIHRlc3RfdW5ib3VuZF9tZXRob2QocHJvcGVydHkuX19kZWxldGVfXykKIAorICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgIzIwNTg2CisgICAgICAgIHRlc3RfY2FsbGFibGUoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jKQogCiAgICAgQGNweXRob25fb25seQogICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCkBAIC0xODIwLDIzICsxOTcyLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoZGVjb3JhdGVkX2Z1bmMpKQogCisgICAgICAgIGRlZiB3cmFwcGVyX2xpa2UoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShkZWNvcmF0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlZD1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUod3JhcHBlcl9saWtlKSkKKwogICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbnNfbm9fc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbicpOgogICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoX3Rlc3RjYXBpLmRvY3N0cmluZ19ub19zaWduYXR1cmUpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShzdHIpCisKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9uX2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Jyk6CiAgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSg0MikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJyk6Ci0gICAgICAgICAgICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKDQyKQotCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbl9lcnJvcnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gYnVpbHRpbicpOgotICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9idWlsdGluKDQyKQotCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb25saWtlX29iamVjdChzZWxmKToKICAgICAgICAgZGVmIGZ1bmMoYSxiLCAqYXJncywga3dvbmx5PVRydWUsIGt3b25seXJlcSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgcGFzcwpAQCAtMTg1Nyw5ICsyMDEyLDkgQEAKICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgICAgIHNpZ19mdW5jID0gaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbihmdW5jKQorICAgICAgICBzaWdfZnVuYyA9IGluc3BlY3QuU2lnbmF0dXJlLmZyb21fY2FsbGFibGUoZnVuYykKIAotICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKGZ1bmNsaWtlKGZ1bmMpKQorICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKGZ1bmNsaWtlKGZ1bmMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ19mdW5jbGlrZSwgc2lnX2Z1bmMpCiAKICAgICAgICAgc2lnX2Z1bmNsaWtlID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UoZnVuYykpCkBAIC0xOTA3LDkgKzIwNjIsNiBAQAogICAgICAgICAgICAgX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KICAgICAgICAgICAgIF9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nKToKLSAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oZnVuY2xpa2UpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UpKSwgJyhtYXJrZXIpJykKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CkBAIC0yMjYxLDYgKzI0MTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLmJhciwgZm9sbG93X3dyYXBwZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKSAjIGZ1bmN0b29scy53cmFwcyB3aWxsIGNvcHkgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJvbSAiZnVuYyIgdG8gIndyYXBwZXIiLCBoZW5jZSBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybl9hbm5vdGF0aW9uCisKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgaGFuZGxlIG1ldGhvZCB3cmFwcGVycyBjb3JyZWN0bHkKICAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKICAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKQEAgLTI0NjMsNDkgKzI2MjIsOTEgQEAKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGludDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludD00MikgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGMpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKICAgICAgICAgZGVmIHNwYW0oYjppbnQsIGEpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoc3BhbSksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKCosIGEsIGIsIGMpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKCosIGE9MSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhPTEpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKHBvcywgKiwgYSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKHBvcywgKmFyZ3MsIGE9NDIsIGIsIGMsICoqa3dhcmdzOmludCk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICphcmdzLCBjLCBiLCBhPTQyLCAqKmt3YXJnczppbnQpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKLSAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaGFzaGFibGUoc2VsZik6CisgICAgICAgIFMgPSBpbnNwZWN0LlNpZ25hdHVyZQorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKwogICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCi0gICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgZm9vX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKworICAgICAgICBtYW51YWxfc2lnID0gUyhwYXJhbWV0ZXJzPVtQKCdhJywgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQpXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZm9vX3NpZyksIGhhc2gobWFudWFsX3NpZykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb29fc2lnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKG1hbnVhbF9zaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0nc3BhbScpKSkKKworICAgICAgICBkZWYgYmFyKGEpIC0+IDE6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvb19zaWcpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQorCisgICAgICAgIGRlZiBmb28oYT17fSk6IHBhc3MKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgotICAgICAgICAgICAgaGFzaChzaWcpCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCisKKyAgICAgICAgZGVmIGZvbyhhKSAtPiB7fTogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfc3RyKHNlbGYpOgogICAgICAgICBkZWYgZm9vKGE6aW50PTEsICosIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgpAQCAtMjU3OSw2ICsyNzgwLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoU3BhbS5mb28pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKEhhbS5mb28pKQogCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGVfcHl0aG9uX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIGRlZiBmb28oYSwgKiwgYjoxKTogcGFzcworICAgICAgICBmb29fc2lnID0gTXlTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGZvb19zaWcsIE15U2lnbmF0dXJlKSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCisgICAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlIGluZm9ybWF0aW9uIGZvciBidWlsdGlucyByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZV9idWlsdGluX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIHNpZyA9IE15U2lnbmF0dXJlLmZyb21fY2FsbGFibGUoX3BpY2tsZS5QaWNrbGVyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWcsIE15U2lnbmF0dXJlKSkKKwogCiBjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgpAQCAtMjYyNCw2ICsyODM4LDE2IEBACiAgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnImE9NDIiJyBpbiByZXByKHApKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9oYXNoYWJsZShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIGZvbyA9IFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChmb28pLCBoYXNoKFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvbyksIGhhc2goUCgnZm9vJywga2luZD1QLlBPU0lUSU9OQUxfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTQyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goZm9vLnJlcGxhY2Uoa2luZD1QLlZBUl9QT1NJVElPTkFMKSkpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgogICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKQEAgLTI2MzUsMTMgKzI4NTksNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAoJ2ZvbycsIGRlZmF1bHQ9NDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkpCiAKLSAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3VuaGFzaGFibGUoc2VsZik6Ci0gICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKLSAgICAgICAgICAgIGhhc2gocCkKLQogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfcmVwbGFjZShzZWxmKToKICAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCkBAIC0yNzEwLDcgKzI5MjcsOSBAQAogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIHNwYW09MTApCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICdzcGFtJyIpOgorCiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0xKQogCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfdmFyKHNlbGYpOgpAQCAtMjczNSwxMCArMjk1NCwxMiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCA0KQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICInYicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDogJ2InIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2EnIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdhJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QpCiAKICAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0xMCk6CkBAIC0yODExLDcgKzMwMzIsNyBAQAogICAgICAgICBkZWYgdGVzdChhLCAqLCBmb289MSwgYmFyKToKICAgICAgICAgICAgIHJldHVybiBmb28KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdiYXInIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKIAogICAgICAgICBkZWYgdGVzdChmb28sICosIGJhcik6CkBAIC0yODE5LDggKzMwNDAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiksICgxLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xKSwgKDEsIDIpKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgImdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3NwYW0nIik6CisKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEsIHNwYW09MTApCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKQEAgLTI4MzEsMTIgKzMwNTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBiYXI9MikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICdzcGFtJyIpOgorCiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIHNwYW09J2hhbScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdiYXInIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKIAogICAgICAgICBkZWYgdGVzdChmb28sICosIGJhciwgKipiaW4pOgpAQCAtMjg0OCw3ICszMDcxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgZm9vPTEsIGJhcj0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydzcGFtJzogJ2hhbSd9KSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2ZvbycgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDogJ2ZvbyciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBiYXI9MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIGJpbj0xLCBzcGFtPTEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydiaW4nOiAxLCAnc3BhbSc6IDEwfSkpCkBAIC0yOTEzLDcgKzMxMzYsOSBAQAogICAgICAgICAgICAgcmV0dXJuIGEsIGFyZ3MKICAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAidG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnYXJncyciKToKKwogICAgICAgICAgICAgc2lnLmJpbmQoYT0wLCBhcmdzPTEpCiAKICAgICAgICAgZGVmIHRlc3QoKmFyZ3MsICoqa3dhcmdzKToKQEAgLTI5NTAsNiArMzE3NSw2MyBAQAogICAgICAgICBiYTQgPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpLmJpbmQoMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmE0KQogCisgICAgICAgIGRlZiBmb28oKiwgYSwgYik6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYTEgPSBzaWcuYmluZChhPTEsIGI9MikKKyAgICAgICAgYmEyID0gc2lnLmJpbmQoYj0yLCBhPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmExLCBiYTIpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCBiLCAqLCBjOjE9e30sICoqa3cpIC0+IHs0MjonaGFtJ306IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKDIwLCAzMCwgej17fSkKKworICAgICAgICBmb3IgdmVyIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwaWNrbGVfdmVyPXZlcik6CisgICAgICAgICAgICAgICAgYmFfcGlja2xlZCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYmEsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmFfcGlja2xlZCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfcmVwcihzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCBiLCAqLCBjOjE9e30sICoqa3cpIC0+IHs0MjonaGFtJ306IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKDIwLCAzMCwgej17fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGJhKSwgcic8Qm91bmRBcmd1bWVudHMgXChhPTIwLC4qXH1cfVwpPicpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX2FwcGx5X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGI9MSwgKmFyZ3MsIGM6MT17fSwgKiprdyk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjApCisgICAgICAgIGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgWygnYScsIDIwKSwgKCdiJywgMSksICgnYXJncycsICgpKSwgKCdjJywge30pLCAoJ2t3Jywge30pXSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIHByZXNlcnZlIHRoZSBvcmRlcjoKKyAgICAgICAgIyBpLmUuICdjJyBzaG91bGQgYmUgKmJlZm9yZSogJ2t3Jy4KKyAgICAgICAgYmEgPSBzaWcuYmluZCgxMCwgMjAsIDMwLCBkPTEpCisgICAgICAgIGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgWygnYScsIDEwKSwgKCdiJywgMjApLCAoJ2FyZ3MnLCAoMzAsKSksICgnYycsIHt9KSwgKCdrdycsIHsnZCc6MX0pXSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IEJvdW5kQXJndW1lbnRzIHByb2R1Y2VkIGJ5IGJpbmRfcGFydGlhbCgpCisgICAgICAgICMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgZGVmIGZvbyhhLCBiKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgyMCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMjApXSkKKworICAgICAgICAjIFRlc3Qgbm8gYXJncworICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLCBbXSkKKwogCiBjbGFzcyBUZXN0U2lnbmF0dXJlUHJpdmF0ZUhlbHBlcnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9nZXRfYm91bmRfcGFyYW0oc2VsZik6CkBAIC0zMDE0LDYgKzMyOTYsNjEgQEAKICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICBOb25lKQogCitjbGFzcyBUZXN0U2lnbmF0dXJlRGVmaW5pdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhpcyB0ZXN0IGNhc2UgcHJvdmlkZXMgYSBob21lIGZvciBjaGVja2luZyB0aGF0IHBhcnRpY3VsYXIgQVBJcworICAgICMgaGF2ZSBzaWduYXR1cmVzIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbgorCisgICAgQGNweXRob25fb25seQorICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCisgICAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlIGluZm9ybWF0aW9uIGZvciBidWlsdGlucyByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9idWlsdGluc19oYXZlX3NpZ25hdHVyZXMoc2VsZik6CisgICAgICAgICMgVGhpcyBjaGVja3MgYWxsIGJ1aWx0aW4gY2FsbGFibGVzIGluIENQeXRob24gaGF2ZSBzaWduYXR1cmVzCisgICAgICAgICMgQSBmZXcgaGF2ZSBzaWduYXR1cmVzIFNpZ25hdHVyZSBjYW4ndCB5ZXQgaGFuZGxlLCBzbyB3ZSBza2lwIHRob3NlCisgICAgICAgICMgc2luY2UgdGhleSB3aWxsIGhhdmUgdG8gd2FpdCB1bnRpbCBQRVAgNDU3IGFkZHMgdGhlIHJlcXVpcmVkCisgICAgICAgICMgaW50cm9zcGVjdGlvbiBzdXBwb3J0IHRvIHRoZSBpbnNwZWN0IG1vZHVsZQorICAgICAgICAjIFNvbWUgb3RoZXJzIGFsc28gaGF2ZW4ndCBiZWVuIGNvbnZlcnRlZCB5ZXQgZm9yIHZhcmlvdXMgb3RoZXIKKyAgICAgICAgIyByZWFzb25zLCBzbyB3ZSBhbHNvIHNraXAgdGhvc2UgZm9yIHRoZSB0aW1lIGJlaW5nLCBidXQgZGVzaWduCisgICAgICAgICMgdGhlIHRlc3QgdG8gZmFpbCBpbiBvcmRlciB0byBpbmRpY2F0ZSB3aGVuIGl0IG5lZWRzIHRvIGJlCisgICAgICAgICMgdXBkYXRlZC4KKyAgICAgICAgbm9fc2lnbmF0dXJlID0gc2V0KCkKKyAgICAgICAgIyBUaGVzZSBuZWVkIFBFUCA0NTcgZ3JvdXBzCisgICAgICAgIG5lZWRzX2dyb3VwcyA9IHsicmFuZ2UiLCAic2xpY2UiLCAiZGlyIiwgImdldGF0dHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5leHQiLCAiaXRlciIsICJ2YXJzIn0KKyAgICAgICAgbm9fc2lnbmF0dXJlIHw9IG5lZWRzX2dyb3VwcworICAgICAgICAjIFRoZXNlIG5lZWQgUEVQIDQ1NyBncm91cHMgb3IgYSBzaWduYXR1cmUgY2hhbmdlIHRvIGFjY2VwdCBOb25lCisgICAgICAgIG5lZWRzX3NlbWFudGljX3VwZGF0ZSA9IHsicm91bmQifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbmVlZHNfc2VtYW50aWNfdXBkYXRlCisgICAgICAgICMgVGhlc2UgbmVlZCAqYXJncyBzdXBwb3J0IGluIEFyZ3VtZW50IENsaW5pYworICAgICAgICBuZWVkc192YXJhcmdzID0geyJtaW4iLCAibWF4IiwgInByaW50IiwgIl9fYnVpbGRfY2xhc3NfXyJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBuZWVkc192YXJhcmdzCisgICAgICAgICMgVGhlc2Ugc2ltcGx5IHdlcmVuJ3QgY292ZXJlZCBpbiB0aGUgaW5pdGlhbCBBQyBjb252ZXJzaW9uCisgICAgICAgICMgZm9yIGJ1aWx0aW4gY2FsbGFibGVzCisgICAgICAgIG5vdF9jb252ZXJ0ZWRfeWV0ID0geyJvcGVuIiwgIl9faW1wb3J0X18ifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbm90X2NvbnZlcnRlZF95ZXQKKyAgICAgICAgIyBUaGVzZSBidWlsdGluIHR5cGVzIGFyZSBleHBlY3RlZCB0byBwcm92aWRlIGludHJvc3BlY3Rpb24gaW5mbworICAgICAgICB0eXBlc193aXRoX3NpZ25hdHVyZXMgPSBzZXQoKQorICAgICAgICAjIENoZWNrIHRoZSBzaWduYXR1cmVzIHdlIGV4cGVjdCB0byBiZSB0aGVyZQorICAgICAgICBucyA9IHZhcnMoYnVpbHRpbnMpCisgICAgICAgIGZvciBuYW1lLCBvYmogaW4gc29ydGVkKG5zLml0ZW1zKCkpOgorICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKG9iaik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgVGhlIGJ1aWx0aW4gdHlwZXMgaGF2ZW4ndCBiZWVuIGNvbnZlcnRlZCB0byBBQyB5ZXQKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgKG5hbWUgbm90IGluIHR5cGVzX3dpdGhfc2lnbmF0dXJlcyk6CisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhbHNvIHNraXBzIGFsbCB0aGUgZXhjZXB0aW9uIHR5cGVzCisgICAgICAgICAgICAgICAgbm9fc2lnbmF0dXJlLmFkZChuYW1lKQorICAgICAgICAgICAgaWYgKG5hbWUgaW4gbm9fc2lnbmF0dXJlKToKKyAgICAgICAgICAgICAgICAjIE5vdCB5ZXQgY29udmVydGVkCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ1aWx0aW49bmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaW5zcGVjdC5zaWduYXR1cmUob2JqKSkKKyAgICAgICAgIyBDaGVjayBjYWxsYWJsZXMgdGhhdCBoYXZlbid0IGJlZW4gY29udmVydGVkIGRvbid0IGNsYWltIGEgc2lnbmF0dXJlCisgICAgICAgICMgVGhpcyBlbnN1cmVzIHRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgYXMgbW9yZSBzaWduYXR1cmVzIGFyZQorICAgICAgICAjIGFkZGVkLCBzbyB0aGUgYWZmZWN0ZWQgaXRlbXMgY2FuIGJlIG1vdmVkIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICAjIHJlZ3Jlc3Npb24gdGVzdCBhYm92ZQorICAgICAgICBmb3IgbmFtZSBpbiBub19zaWduYXR1cmU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChidWlsdGluPW5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9iai5fX3RleHRfc2lnbmF0dXJlX18pCisKIAogY2xhc3MgVGVzdFVud3JhcCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTMxNTUsOCArMzQ5Miw5IEBACiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCiAgICAgICAgIFRlc3ROb0VPTCwgVGVzdFNpZ25hdHVyZU9iamVjdCwgVGVzdFNpZ25hdHVyZUJpbmQsIFRlc3RQYXJhbWV0ZXJPYmplY3QsCi0gICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLCBUZXN0R2V0Q2xvc3VyZVZhcnMsCi0gICAgICAgIFRlc3RVbndyYXAsIFRlc3RNYWluLCBUZXN0UmVsb2FkCisgICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLAorICAgICAgICBUZXN0U2lnbmF0dXJlRGVmaW5pdGlvbnMsCisgICAgICAgIFRlc3RHZXRDbG9zdXJlVmFycywgVGVzdFVud3JhcCwgVGVzdE1haW4sIFRlc3RSZWxvYWQKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGU5NDYwMmUuLmNiNTdmMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC00NTEsOCArNDUxLDUgQEAKICAgICAgICAgY2hlY2soJzEyM1x1ZDgwMCcpCiAgICAgICAgIGNoZWNrKCcxMjNcdWQ4MDAnLCAxMCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEludFRlc3RDYXNlcykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50X2xpdGVyYWwucHkKaW5kZXggMWQ1NzhhNy4uYmY3MjU3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5CkBAIC00LDcgKzQsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RIZXhPY3RCaW4odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNDAsOCArMTM5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMGIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLCAtOTIyMzM3MjAzNjg1NDc3NTgwOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMGIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SGV4T2N0QmluKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lvLnB5IGIvTGliL3Rlc3QvdGVzdF9pby5weQppbmRleCA0MTZjNTQ3Li5hZjdkYTAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKQEAgLTM1LDcgKzM1LDcgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBVc2VyTGlzdAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGN5Y2xlLCBjb3VudAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgcnVuX3B5dGhvbl91bnRpbF9lbmQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHJ1bl9weXRob25fdW50aWxfZW5kCiAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbyAgIyBDIGltcGxlbWVudGF0aW9uIG9mIGlvCkBAIC00NCwxMCArNDQsNiBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZmNudGwgPSBOb25lCiAKIGRlZiBfZGVmYXVsdF9jaHVua19zaXplKCk6CiAgICAgIiIiR2V0IHRoZSBkZWZhdWx0IFRleHRJT1dyYXBwZXIgY2h1bmsgc2l6ZSIiIgpAQCAtMzY3LDggKzM2Myw4IEBACiAKICAgICBkZWYgdGVzdF9vcGVuX2hhbmRsZXNfTlVMX2NoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5vcGVuLCBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJyksICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBmbl93aXRoX05VTCwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQogCiAgICAgZGVmIHRlc3RfcmF3X2ZpbGVfaW8oc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiLCBidWZmZXJpbmc9MCkgYXMgZjoKQEAgLTcyMyw2ICs3MTksMjEgQEAKICAgICBwYXNzCiAKIAorQHN1cHBvcnQuY3B5dGhvbl9vbmx5CitjbGFzcyBBUElNaXNtYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfUmF3SU9CYXNlX2lvX2luX3B5aW9fbWF0Y2goc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBweWlvIFJhd0lPQmFzZSBjbGFzcyBoYXMgYWxsIGMgUmF3SU9CYXNlIG1ldGhvZHMiIiIKKyAgICAgICAgbWlzbWF0Y2ggPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2gocHlpby5SYXdJT0Jhc2UsIGlvLlJhd0lPQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPSgnX193ZWFrcmVmX18nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzbWF0Y2gsIHNldCgpLCBtc2c9J1B5dGhvbiBSYXdJT0Jhc2UgZG9lcyBub3QgaGF2ZSBhbGwgQyBSYXdJT0Jhc2UgbWV0aG9kcycpCisKKyAgICBkZWYgdGVzdF9SYXdJT0Jhc2VfcHlpb19pbl9pb19tYXRjaChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGMgUmF3SU9CYXNlIGNsYXNzIGhhcyBhbGwgcHlpbyBSYXdJT0Jhc2UgbWV0aG9kcyIiIgorICAgICAgICBtaXNtYXRjaCA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChpby5SYXdJT0Jhc2UsIHB5aW8uUmF3SU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc21hdGNoLCBzZXQoKSwgbXNnPSdDIFJhd0lPQmFzZSBkb2VzIG5vdCBoYXZlIGFsbCBQeXRob24gUmF3SU9CYXNlIG1ldGhvZHMnKQorCisKIGNsYXNzIENvbW1vbkJ1ZmZlcmVkVGVzdHM6CiAgICAgIyBUZXN0cyBjb21tb24gdG8gQnVmZmVyZWRSZWFkZXIsIEJ1ZmZlcmVkV3JpdGVyIGFuZCBCdWZmZXJlZFJhbmRvbQogCkBAIC04MTEsNyArODIyLDcgQEAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICByYXcgPSBzZWxmLk1vY2tSYXdJTygpCiAgICAgICAgIGIgPSBzZWxmLnRwKHJhdykKLSAgICAgICAgY2xzbmFtZSA9ICIlcy4lcyIgJSAoc2VsZi50cC5fX21vZHVsZV9fLCBzZWxmLnRwLl9fbmFtZV9fKQorICAgICAgICBjbHNuYW1lID0gIiVzLiVzIiAlIChzZWxmLnRwLl9fbW9kdWxlX18sIHNlbGYudHAuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoYiksICI8JXM+IiAlIGNsc25hbWUpCiAgICAgICAgIHJhdy5uYW1lID0gImR1bW15IgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoYiksICI8JXMgbmFtZT0nZHVtbXknPiIgJSBjbHNuYW1lKQpAQCAtOTg1LDYgKzk5Niw3MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiY2IiKQogCisgICAgZGVmIHRlc3RfcmVhZGludG8xKHNlbGYpOgorICAgICAgICBidWZmZXJfc2l6ZSA9IDEwCisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGIiYWJjIiwgYiJkZSIsIGIiZmdoIiwgYiJqa2wiKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvLCBidWZmZXJfc2l6ZT1idWZmZXJfc2l6ZSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnBlZWsoMyksIGInYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiYWIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50bzEoYiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6MV0sIGIiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImRlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDIpCisgICAgICAgIGIgPSBieXRlYXJyYXkoMipidWZmZXJfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5wZWVrKDMpLCBiJ2ZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzo2XSwgYiJmZ2hqa2wiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgNCkKKworICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2FycmF5KHNlbGYpOgorICAgICAgICBidWZmZXJfc2l6ZSA9IDYwCisgICAgICAgIGRhdGEgPSBiImEiICogMjYKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoZGF0YSwpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8sIGJ1ZmZlcl9zaXplPWJ1ZmZlcl9zaXplKQorCisgICAgICAgICMgQ3JlYXRlIGFuIGFycmF5IHdpdGggZWxlbWVudCBzaXplID4gMSBieXRlCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnaScsIGIneCcgKiAzMikKKyAgICAgICAgYXNzZXJ0IGxlbihiKSAhPSAxNgorCisgICAgICAgICMgUmVhZCBpbnRvIGl0LiBXZSBzaG91bGQgZ2V0IGFzIG1hbnkgKmJ5dGVzKiBhcyB3ZSBjYW4gZml0IGludG8gYgorICAgICAgICAjICh3aGljaCBpcyBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cykKKyAgICAgICAgbiA9IGJ1ZmlvLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihuLCBsZW4oYikpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG9sZCBjb250ZW50cyBvZiBiIGFyZSBwcmVzZXJ2ZWQKKyAgICAgICAgYm0gPSBtZW1vcnl2aWV3KGIpLmNhc3QoJ0InKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobiwgbGVuKGJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibVs6bl0sIGRhdGFbOm5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtW246XSwgYid4JyAqIChsZW4oYm1bbjpdKSkpCisKKyAgICBkZWYgdGVzdF9yZWFkaW50bzFfYXJyYXkoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gNjAKKyAgICAgICAgZGF0YSA9IGIiYSIgKiAyNgorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChkYXRhLCkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmZmVyX3NpemUpCisKKyAgICAgICAgIyBDcmVhdGUgYW4gYXJyYXkgd2l0aCBlbGVtZW50IHNpemUgPiAxIGJ5dGUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdpJywgYid4JyAqIDMyKQorICAgICAgICBhc3NlcnQgbGVuKGIpICE9IDE2CisKKyAgICAgICAgIyBSZWFkIGludG8gaXQuIFdlIHNob3VsZCBnZXQgYXMgbWFueSAqYnl0ZXMqIGFzIHdlIGNhbiBmaXQgaW50byBiCisgICAgICAgICMgKHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzKQorICAgICAgICBuID0gYnVmaW8ucmVhZGludG8xKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihuLCBsZW4oYikpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG9sZCBjb250ZW50cyBvZiBiIGFyZSBwcmVzZXJ2ZWQKKyAgICAgICAgYm0gPSBtZW1vcnl2aWV3KGIpLmNhc3QoJ0InKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobiwgbGVuKGJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibVs6bl0sIGRhdGFbOm5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtW246XSwgYid4JyAqIChsZW4oYm1bbjpdKSkpCisKICAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CiAgICAgICAgIGRlZiBidWZpbygpOgogICAgICAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmNcbiIsIGIiZFxuIiwgYiJlZiIpKQpAQCAtMjkxMyw2ICsyOTg5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJvayIsIG91dC5kZWNvZGUoKS5zdHJpcCgpKQogCisgICAgZGVmIHRlc3RfcmVhZF9ieXRlc2xpa2Uoc2VsZik6CisgICAgICAgIHIgPSBNZW12aWV3Qnl0ZXNJTyhiJ0p1c3Qgc29tZSByYW5kb20gc3RyaW5nXG4nKQorICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKHIsICd1dGYtOCcpCisKKyAgICAgICAgIyBUZXh0SU93cmFwcGVyIHdpbGwgbm90IHJlYWQgdGhlIGZ1bGwgc3RyaW5nLCBiZWNhdXNlCisgICAgICAgICMgd2UgdHJ1bmNhdGUgaXQgdG8gYSBtdWx0aXBsZSBvZiB0aGUgbmF0aXZlIGludCBzaXplCisgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gY29uc3RydWN0IGEgbW9yZSBjb21wbGV4IG1lbW9yeXZpZXcuCisgICAgICAgIGJ5dGVzX3ZhbCA9ICBfdG9fbWVtb3J5dmlldyhyLmdldHZhbHVlKCkpLnRvYnl0ZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZWFkKDIwMCksIGJ5dGVzX3ZhbC5kZWNvZGUoJ3V0Zi04JykpCisKICAgICBkZWYgdGVzdF9pc3N1ZTIyODQ5KHNlbGYpOgogICAgICAgICBjbGFzcyBGKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgcmVhZGFibGUoc2VsZik6IHJldHVybiBUcnVlCkBAIC0yOTI5LDYgKzMwMTYsMjUgQEAKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihGKCksIGVuY29kaW5nPSd1dGYtOCcpCiAKIAorY2xhc3MgTWVtdmlld0J5dGVzSU8oaW8uQnl0ZXNJTyk6CisgICAgJycnQSBCeXRlc0lPIG9iamVjdCB3aG9zZSByZWFkIG1ldGhvZCByZXR1cm5zIG1lbW9yeXZpZXdzCisgICAgICAgcmF0aGVyIHRoYW4gYnl0ZXMnJycKKworICAgIGRlZiByZWFkMShzZWxmLCBsZW5fKToKKyAgICAgICAgcmV0dXJuIF90b19tZW1vcnl2aWV3KHN1cGVyKCkucmVhZDEobGVuXykpCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW5fKToKKyAgICAgICAgcmV0dXJuIF90b19tZW1vcnl2aWV3KHN1cGVyKCkucmVhZChsZW5fKSkKKworZGVmIF90b19tZW1vcnl2aWV3KGJ1Zik6CisgICAgJycnQ29udmVydCBieXRlcy1vYmplY3QgKmJ1ZiogdG8gYSBub24tdHJpdmlhbCBtZW1vcnl2aWV3JycnCisKKyAgICBhcnIgPSBhcnJheS5hcnJheSgnaScpCisgICAgaWR4ID0gbGVuKGJ1ZikgLSBsZW4oYnVmKSAlIGFyci5pdGVtc2l6ZQorICAgIGFyci5mcm9tYnl0ZXMoYnVmWzppZHhdKQorICAgIHJldHVybiBtZW1vcnl2aWV3KGFycikKKworCiBjbGFzcyBDVGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gaW8KICAgICBzaHV0ZG93bl9lcnJvciA9ICJSdW50aW1lRXJyb3I6IGNvdWxkIG5vdCBmaW5kIGlvIG1vZHVsZSBzdGF0ZSIKQEAgLTI5MzcsOCArMzA0Myw2IEBACiAgICAgICAgIHIgPSBzZWxmLkJ5dGVzSU8oYiJceGMzXHhhOVxuXG4iKQogICAgICAgICBiID0gc2VsZi5CdWZmZXJlZFJlYWRlcihyLCAxMDAwKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdC5fX2luaXRfXywgYiwgbmV3bGluZT00MikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5yZWFkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPSd4eXp6eScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQucmVhZCkKIApAQCAtMzE3NSw2ICszMjc5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRhbGwpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKGYsICJyZWFkaW50byIpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGludG8sIGJ5dGVhcnJheSgxMDI0KSkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgInJlYWRpbnRvMSIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGludG8xLCBieXRlYXJyYXkoMTAyNCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkbGluZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDApCkBAIC0zMjg4LDI2ICszMzk0LDIwIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICoqa3dhcmdzKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZiwgcHJvdG9jb2wpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmY250bCwgJ2ZjbnRsIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiB0ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGVfYmlnYnVmKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoMTYqMTAyNCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAnZmNudGwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZV9zbWFsbGJ1ZihzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub25ibG9ja19waXBlX3dyaXRlKDEwMjQpCiAKLSAgICBkZWYgX3NldF9ub25fYmxvY2tpbmcoc2VsZiwgZmQpOgotICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZMKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGZsYWdzLCAtMSkKLSAgICAgICAgcmVzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzIHwgb3MuT19OT05CTE9DSykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCi0KKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc2V0X2Jsb2NraW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29zLnNldF9ibG9ja2luZygpIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiBfdGVzdF9ub25ibG9ja19waXBlX3dyaXRlKHNlbGYsIGJ1ZnNpemUpOgogICAgICAgICBzZW50ID0gW10KICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICByLCB3ID0gb3MucGlwZSgpCi0gICAgICAgIHNlbGYuX3NldF9ub25fYmxvY2tpbmcocikKLSAgICAgICAgc2VsZi5fc2V0X25vbl9ibG9ja2luZyh3KQorICAgICAgICBvcy5zZXRfYmxvY2tpbmcociwgRmFsc2UpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3LCBGYWxzZSkKIAogICAgICAgICAjIFRvIGV4ZXJjaXNlIGFsbCBjb2RlIHBhdGhzIGluIHRoZSBDIGltcGxlbWVudGF0aW9uIHdlIG5lZWQKICAgICAgICAgIyB0byBwbGF5IHdpdGggYnVmZmVyIHNpemVzLiAgRm9yIGluc3RhbmNlLCBpZiB3ZSBjaG9vc2UgYQpAQCAtMzQ1Niw2ICszNTU2LDcgQEAKICAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKICAgICAgICAgZmRvcGVuX2t3YXJnc1siY2xvc2VmZCJdID0gRmFsc2UKKyAgICAgICAgbGFyZ2VfZGF0YSA9IGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpbyA9IHNlbGYuaW8ub3Blbih3LCAqKmZkb3Blbl9rd2FyZ3MpCiAgICAgICAgICAgICB0LnN0YXJ0KCkKQEAgLTM0NjcsOCArMzU2OCw3IEBACiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCiAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlKGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCB3aW8ud3JpdGUsIGxhcmdlX2RhdGEpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgwKQogICAgICAgICAgICAgICAgIHQuam9pbigpCkBAIC0zNTY5LDExICszNjY5LDEzIEBACiAgICAgICAgIHJldHVybmluZyBhIHBhcnRpYWwgcmVzdWx0IG9yIEVJTlRSKSwgcHJvcGVybHkgaW52b2tlcyB0aGUgc2lnbmFsCiAgICAgICAgIGhhbmRsZXIgYW5kIHJldHJpZXMgaWYgdGhlIGxhdHRlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuIiIiCiAgICAgICAgIHNlbGVjdCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic2VsZWN0IikKKwogICAgICAgICAjIEEgcXVhbnRpdHkgdGhhdCBleGNlZWRzIHRoZSBidWZmZXIgc2l6ZSBvZiBhbiBhbm9ueW1vdXMgcGlwZSdzCiAgICAgICAgICMgd3JpdGUgZW5kLgogICAgICAgICBOID0gc3VwcG9ydC5QSVBFX01BWF9TSVpFCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKICAgICAgICAgZmRvcGVuX2t3YXJnc1siY2xvc2VmZCJdID0gRmFsc2UKKwogICAgICAgICAjIFdlIG5lZWQgYSBzZXBhcmF0ZSB0aHJlYWQgdG8gcmVhZCBmcm9tIHRoZSBwaXBlIGFuZCBhbGxvdyB0aGUKICAgICAgICAgIyB3cml0ZSgpIHRvIGZpbmlzaC4gIFRoaXMgdGhyZWFkIGlzIHN0YXJ0ZWQgYWZ0ZXIgdGhlIFNJR0FMUk0gaXMKICAgICAgICAgIyByZWNlaXZlZCAoZm9yY2luZyBhIGZpcnN0IEVJTlRSIGluIHdyaXRlKCkpLgpAQCAtMzU5Niw2ICszNjk4LDggQEAKICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICBkZWYgYWxhcm0yKHNpZywgZnJhbWUpOgogICAgICAgICAgICAgdC5zdGFydCgpCisKKyAgICAgICAgbGFyZ2VfZGF0YSA9IGl0ZW0gKiBOCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGFsYXJtMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2lvID0gc2VsZi5pby5vcGVuKHcsICoqZmRvcGVuX2t3YXJncykKQEAgLTM2MDUsNyArMzcwOSw5IEBACiAgICAgICAgICAgICAjICAgYW5kIHRoZSBmaXJzdCBhbGFybSkKICAgICAgICAgICAgICMgLSBzZWNvbmQgcmF3IHdyaXRlKCkgcmV0dXJucyBFSU5UUiAoYmVjYXVzZSBvZiB0aGUgc2Vjb25kIGFsYXJtKQogICAgICAgICAgICAgIyAtIHN1YnNlcXVlbnQgd3JpdGUoKXMgYXJlIHN1Y2Nlc3NmdWwgKGVpdGhlciBwYXJ0aWFsIG9yIGNvbXBsZXRlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCB3aW8ud3JpdGUoaXRlbSAqIE4pKQorICAgICAgICAgICAgd3JpdHRlbiA9IHdpby53cml0ZShsYXJnZV9kYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCB3cml0dGVuKQorCiAgICAgICAgICAgICB3aW8uZmx1c2goKQogICAgICAgICAgICAgd3JpdGVfZmluaXNoZWQgPSBUcnVlCiAgICAgICAgICAgICB0LmpvaW4oKQpAQCAtMzY0NSw3ICszNzUxLDcgQEAKIAogCiBkZWYgbG9hZF90ZXN0cygqYXJncyk6Ci0gICAgdGVzdHMgPSAoQ0lPVGVzdCwgUHlJT1Rlc3QsCisgICAgdGVzdHMgPSAoQ0lPVGVzdCwgUHlJT1Rlc3QsIEFQSU1pc21hdGNoVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRSZWFkZXJUZXN0LCBQeUJ1ZmZlcmVkUmVhZGVyVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRXcml0ZXJUZXN0LCBQeUJ1ZmZlcmVkV3JpdGVyVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRSV1BhaXJUZXN0LCBQeUJ1ZmZlcmVkUldQYWlyVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkgYi9MaWIvdGVzdC90ZXN0X2lvY3RsLnB5CmluZGV4IGVmZTlmNTEuLmI4MmI2NTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pb2N0bC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCBhcnJheQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlLCBnZXRfYXR0cmlidXRlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZSwgZ2V0X2F0dHJpYnV0ZQogaW1wb3J0IG9zLCBzdHJ1Y3QKIGZjbnRsID0gaW1wb3J0X21vZHVsZSgnZmNudGwnKQogdGVybWlvcyA9IGltcG9ydF9tb2R1bGUoJ3Rlcm1pb3MnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQppbmRleCBiZmI1Njk5Li5jMjE3ZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtOSw3ICs5LDkgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCB3ZWFrcmVmCiAKIAogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgzLDYgKzg1LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGV4LCBzZWxmLmZhY3RvcnkoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIHNlbGYuZmFjdG9yeSgxKSkKIAorICAgIGRlZiBwaWNrbGVfdGVzdChzZWxmLCBhZGRyKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgeCA9IHNlbGYuZmFjdG9yeShhZGRyKQorICAgICAgICAgICAgICAgIHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHgsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisKIAogY2xhc3MgQ29tbW9uVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbik6CiAKQEAgLTI0OCw2ICsyNTcsMTIgQEAKICAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjI1Ny4wLjAuMCIsIDI1NykKICAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjE5Mi4xNjguMC45OTkiLCA5OTkpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMScpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICB3ZWFrcmVmLnJlZihzZWxmLmZhY3RvcnkoJzE5Mi4wLjIuMScpKQorCiAKIGNsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92Nik6CiAgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcwpAQCAtMzgwLDYgKzM5NSwxMiBAQAogICAgICAgICBhc3NlcnRCYWRQYXJ0KCIwMjAwMTpkYjg6OiIsICIwMjAwMSIpCiAgICAgICAgIGFzc2VydEJhZFBhcnQoJzIwMDE6ODg4ODg4OjoxJywgIjg4ODg4OCIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjonKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgd2Vha3JlZi5yZWYoc2VsZi5mYWN0b3J5KCcyMDAxOmRiODo6JykpCisKIAogY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW5fdjQpOgogICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCkBAIC00NDMsNiArNDY0LDExIEBACiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAicHVkZGluZyIpCiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiOjoiKQogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAvMjcnKQorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAvMzEnKSAgIyBJUFY0TEVOR1RIIC0gMQorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAnKSAgICAgIyBJUFY0TEVOR1RICisKIAogY2xhc3MgSW50ZXJmYWNlVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKICAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UKQEAgLTUwMSw2ICs1MjcsMTEgQEAKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgInB1ZGRpbmciKQogICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OiIsICI6OiIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwLzEyNycpICAjIElQVjZMRU5HVEggLSAxCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwJykgICAgICAjIElQVjZMRU5HVEgKKwogCiBjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgogICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZQpAQCAtNjcwLDYgKzcwMSwxMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEnKSkpCiAKKyAgICAjIGlzc3VlICMxNjUzMTogY29uc3RydWN0aW5nIElQdjROZXR3b3JrIGZyb20gYSAoYWRkcmVzcywgbWFzaykgdHVwbGUKKyAgICBkZWYgdGVzdElQdjRUdXBsZShzZWxmKToKKyAgICAgICAgIyAvMzIKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4xLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgMzIpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMzIpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMjU1JykpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMjU1JykpLCBuZXQpCisgICAgICAgICMgc3RyaWN0PVRydWUgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDI0KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsICcyNTUuMjU1LjI1NS4wJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsICcyNTUuMjU1LjI1NS4wJykpCisgICAgICAgICMgc3RyaWN0PUZhbHNlIGFuZCBob3N0IGJpdHMgc2V0CisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisKKyAgICAgICAgIyAvMjQKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMCcsIDI0KSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAyNCkpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg0LCAyNCkpLCBuZXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgoJzE5Mi4wLjIuMScsIDI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCgzMjIxMjI1OTg1LCAyNCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKSkKKworICAgICMgaXNzdWUgIzE2NTMxOiBjb25zdHJ1Y3RpbmcgSVB2Nk5ldHdvcmsgZnJvbSBhIChhZGRyZXNzLCBtYXNrKSB0dXBsZQorICAgIGRlZiB0ZXN0SVB2NlR1cGxlKHNlbGYpOgorICAgICAgICAjIC8xMjgKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorICAgICAgICBuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6JywgJzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCwgMTI4KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoaXAsICcxMjgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKCgnMjAwMTpkYjg6OicsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCwgOTYpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgJzk2JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKworICAgICAgICAjIHN0cmljdD1UcnVlIGFuZCBob3N0IGJpdHMgc2V0CisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6MScsIDk2KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoCisgICAgICAgICAgICAgICAgNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsIDk2KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoaXAsIDk2KSkKKyAgICAgICAgIyBzdHJpY3Q9RmFsc2UgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6MScsIDk2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsIDk2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgOTYpLCBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKworICAgICAgICAjIC85NgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCgnMjAwMTpkYjg6OjEnLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYxLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykpCisKICAgICAjIGlzc3VlNTcKICAgICBkZWYgdGVzdEFkZHJlc3NJbnRNYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpICsgMjU1LApAQCAtNjkwLDIwICs4MzQsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNkxFTkdUSCkKIAogICAgIGRlZiB0ZXN0SW50ZXJuYWxzKHNlbGYpOgotICAgICAgICBmaXJzdCwgbGFzdCA9IGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFsKLSAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKSwKLSAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTInKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlyc3QsIGxhc3QpCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjExJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbaXAxXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDEsIGlwM10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKGlwMSwgaXAxKSwgKGlwMywgaXAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbaXAxLCBpcDIsIGlwM10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKGlwMSwgaXAzKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTI4LCBpcGFkZHJlc3MuX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoMCwgMTI4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKSIsIHJlcHIoc2VsZi5pcHY0X25ldHdvcmspKQogCi0gICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc1ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VBZGRyZXNzKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qdmVyc2lvbiIpOgotICAgICAgICAgICAgYnJva2VuLnZlcnNpb24KLQogICAgIGRlZiB0ZXN0TWlzc2luZ05ldHdvcmtWZXJzaW9uKHNlbGYpOgogICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjM1LDYgKzE3NzcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMy5leHBsb2RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTkyLjE2OC4xNzguMScsIGFkZHI0LmV4cGxvZGVkKQogCisgICAgZGVmIHRlc3RSZXZlcnNlUG9pbnRlcihzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnLCBhZGRyMS5yZXZlcnNlX3BvaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjguJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2IuZC4wLjEuMC4wLjIuaXA2LmFycGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLnJldmVyc2VfcG9pbnRlcikKKwogICAgIGRlZiB0ZXN0SW50UmVwcmVzZW50YXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTY5MDkwNjAsIGludChzZWxmLmlwdjRfYWRkcmVzcykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkgYi9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkKaW5kZXggN2E2NzMwZS4uZTA4N2FjMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pc2luc3RhbmNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weQpAQCAtMyw3ICszLDYgQEAKICMgdGVzdGluZyBvZiBlcnJvciBjb25kaXRpb25zIHVuY292ZXJlZCB3aGVuIHVzaW5nIGV4dGVuc2lvbiB0eXBlcy4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzeXMKIAogCkBAIC0yNzcsMTMgKzI3Niw1IEBACiAgICAgICAgIGZ4bihhcmcsIHR1cGxlX2FyZykKIAogDAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBUZXN0SXNJbnN0YW5jZUV4Y2VwdGlvbnMsCi0gICAgICAgIFRlc3RJc1N1YmNsYXNzRXhjZXB0aW9ucywKLSAgICAgICAgVGVzdElzSW5zdGFuY2VJc1N1YmNsYXNzCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggM2FlZDc3OS4uZmNkODg2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTE4NjAsOCArMTg2MCw2IEBACiAgICAgICAgICAgICBoaXN0LmFwcGVuZCgzKQogICAgICAgICAgICAgeWllbGQgMgogICAgICAgICAgICAgaGlzdC5hcHBlbmQoNCkKLSAgICAgICAgICAgIGlmIHg6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogCiAgICAgICAgIGhpc3QgPSBbXQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbGlzdCwgY2hhaW4oZ2VuMSgpLCBnZW4yKEZhbHNlKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKaW5kZXggMmNmMTAzMi4uMDgwN2U2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQpAQCAtOSwxMiArOSwxNSBAQAogIyBpbXBvcnQganNvbiB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMKIGNqc29uID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdqc29uJywgZnJlc2g9WydfanNvbiddKQogcHlqc29uID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdqc29uJywgYmxvY2tlZD1bJ19qc29uJ10pCisjIEpTT05EZWNvZGVFcnJvciBpcyBjYWNoZWQgaW5zaWRlIHRoZSBfanNvbiBtb2R1bGUKK2Nqc29uLkpTT05EZWNvZGVFcnJvciA9IGNqc29uLmRlY29kZXIuSlNPTkRlY29kZUVycm9yID0ganNvbi5KU09ORGVjb2RlRXJyb3IKIAogIyBjcmVhdGUgdHdvIGJhc2UgY2xhc3NlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgb3RoZXIgdGVzdHMKIGNsYXNzIFB5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAganNvbiA9IHB5anNvbgogICAgIGxvYWRzID0gc3RhdGljbWV0aG9kKHB5anNvbi5sb2FkcykKICAgICBkdW1wcyA9IHN0YXRpY21ldGhvZChweWpzb24uZHVtcHMpCisgICAgSlNPTkRlY29kZUVycm9yID0gc3RhdGljbWV0aG9kKHB5anNvbi5KU09ORGVjb2RlRXJyb3IpCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNqc29uLCAncmVxdWlyZXMgX2pzb24nKQogY2xhc3MgQ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjIsNiArMjUsNyBAQAogICAgICAgICBqc29uID0gY2pzb24KICAgICAgICAgbG9hZHMgPSBzdGF0aWNtZXRob2QoY2pzb24ubG9hZHMpCiAgICAgICAgIGR1bXBzID0gc3RhdGljbWV0aG9kKGNqc29uLmR1bXBzKQorICAgICAgICBKU09ORGVjb2RlRXJyb3IgPSBzdGF0aWNtZXRob2QoY2pzb24uSlNPTkRlY29kZUVycm9yKQogCiAjIHRlc3QgUHlUZXN0IGFuZCBDVGVzdCBjaGVja2luZyBpZiB0aGUgZnVuY3Rpb25zIGNvbWUgZnJvbSB0aGUgcmlnaHQgbW9kdWxlCiBjbGFzcyBUZXN0UHlUZXN0KFB5VGVzdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggNTkxYjJlMi4uY2M4M2I0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNjMsMTIgKzYzLDEyIEBACiAgICAgZGVmIHRlc3RfZXh0cmFfZGF0YShzZWxmKToKICAgICAgICAgcyA9ICdbMSwgMiwgM101JwogICAgICAgICBtc2cgPSAnRXh0cmEgZGF0YScKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5KU09ORGVjb2RlRXJyb3IsIG1zZywgc2VsZi5sb2FkcywgcykKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfZXNjYXBlKHNlbGYpOgogICAgICAgICBzID0gJ1siYWJjXFx5Il0nCiAgICAgICAgIG1zZyA9ICdlc2NhcGUnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuSlNPTkRlY29kZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lucHV0X3R5cGUoc2VsZik6CiAgICAgICAgIG1zZyA9ICd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHInCkBAIC04MCwxMCArODAsMTAgQEAKICAgICBkZWYgdGVzdF9zdHJpbmdfd2l0aF91dGY4X2JvbShzZWxmKToKICAgICAgICAgIyBzZWUgIzE4OTU4CiAgICAgICAgIGJvbV9qc29uID0gIlsxLDIsM10iLmVuY29kZSgndXRmLTgtc2lnJykuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2Fkcyhib21fanNvbikKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk9NJywgc3RyKGNtLmV4Y2VwdGlvbikpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoU3RyaW5nSU8oYm9tX2pzb24pKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCT00nLCBzdHIoY20uZXhjZXB0aW9uKSkKICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgQk9NIGlzIG5vdCBkZXRlY3RlZCBpbiB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CmluZGV4IDIxMjJkYTEuLjRiYmM2YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CkBAIC0xMiw5ICsxMiw2IEBACiAgICAgKCcgcyBwIGEgYyBlIGQgJywgJyIgcyBwIGEgYyBlIGQgIicpLAogICAgICgnXFUwMDAxZDEyMCcsICciXFx1ZDgzNFxcdWRkMjAiJyksCiAgICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAotICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKLSAgICAoJ1x1MDNiMVx1MDNhOScsICciXFx1MDNiMVxcdTAzYTkiJyksCi0gICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAogICAgICgiYDF+IUAjJCVeJiooKV8rLT17JzpbLF19fDsuPC8+PyIsICciYDF+IUAjJCVeJiooKV8rLT17XCc6WyxdfXw7LjwvPj8iJyksCiAgICAgKCdceDA4XHgwY1xuXHJcdCcsICciXFxiXFxmXFxuXFxyXFx0IicpLAogICAgICgnXHUwMTIzXHU0NTY3XHU4OWFiXHVjZGVmXHVhYmNkXHVlZjRhJywgJyJcXHUwMTIzXFx1NDU2N1xcdTg5YWJcXHVjZGVmXFx1YWJjZFxcdWVmNGEiJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQppbmRleCA3Y2FhZmRiLi45NWZmNWI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZG9jKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5KU09ORGVjb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgZm9yIGZhaWx7MH0uanNvbjogezEhcn0iLmZvcm1hdChpZHgsIGRvYykpCkBAIC0xMjQsMTAgKzEyNCwxNiBAQAogICAgICAgICAgICAgKCcic3BhbScsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMCksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSBcKGNoYXIgezJ9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBtc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIGlkeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCBpZHggKyAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzOiBsaW5lIDEgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLCBpZHggKyAxLCBpZHgpKQogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9kYXRhKHNlbGYpOgogICAgICAgICB0ZXN0X2Nhc2VzID0gWwpAQCAtMTU0LDEwICsxNjAsMTYgQEAKICAgICAgICAgICAgICgneyJzcGFtIjo0Mix9JywgJ0V4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMnLCAxMSksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSBcKGNoYXIgezJ9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBtc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIGlkeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCBpZHggKyAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzOiBsaW5lIDEgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLCBpZHggKyAxLCBpZHgpKQogCiAgICAgZGVmIHRlc3RfZXh0cmFfZGF0YShzZWxmKToKICAgICAgICAgdGVzdF9jYXNlcyA9IFsKQEAgLTE3MSwxMSArMTgzLDE2IEBACiAgICAgICAgICAgICAoJyJzcGFtIiw0MicsICdFeHRyYSBkYXRhJywgNiksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSAtIGxpbmUgMSBjb2x1bW4gezJ9JwotICAgICAgICAgICAgICAgIHInIFwoY2hhciB7M30gLSB7NH1cKScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICByZS5lc2NhcGUobXNnKSwgaWR4ICsgMSwgbGVuKGRhdGEpICsgMSwgaWR4LCBsZW4oZGF0YSkpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X2xpbmVjb2woc2VsZik6CiAgICAgICAgIHRlc3RfY2FzZXMgPSBbCkBAIC0xODUsMTAgKzIwMiwxNiBAQAogICAgICAgICAgICAgKCdcbiAgXG5cbiAgICAgIScsIDQsIDYsIDEwKSwKICAgICAgICAgXQogICAgICAgICBmb3IgZGF0YSwgbGluZSwgY29sLCBpZHggaW4gdGVzdF9jYXNlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICByJ15FeHBlY3RpbmcgdmFsdWU6IGxpbmUgezB9IGNvbHVtbiB7MX0nCi0gICAgICAgICAgICAgICAgcicgXChjaGFyIHsyfVwpJCcuZm9ybWF0KGxpbmUsIGNvbCwgaWR4KSwKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRzLCBkYXRhKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLkpTT05EZWNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcyhkYXRhKQorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csICdFeHBlY3RpbmcgdmFsdWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgY29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGluZyB2YWx1ZTogbGluZSAlcyBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLCBjb2wsIGlkeCkpCiAKIGNsYXNzIFRlc3RQeUZhaWwoVGVzdEZhaWwsIFB5VGVzdCk6IHBhc3MKIGNsYXNzIFRlc3RDRmFpbChUZXN0RmFpbCwgQ1Rlc3QpOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9zY2Fuc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3Rfc2NhbnN0cmluZy5weQppbmRleCAwN2Y0MzU4Li4yZDNlZThhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9zY2Fuc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgICAgICAgICAgJyJcXHVkODM0XFx1MFgyMCInLAogICAgICAgICBdCiAgICAgICAgIGZvciBzIGluIGJhZF9lc2NhcGVzOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtc2c9cyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yLCBtc2c9cyk6CiAgICAgICAgICAgICAgICAgc2NhbnN0cmluZyhzLCAxLCBUcnVlKQogCiAgICAgZGVmIHRlc3Rfb3ZlcmZsb3coc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF90b29sLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdG9vbC5weQppbmRleCAwYzM5ZTU2Li4xNWYzNzM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF90b29sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkKQEAgLTQsNyArNCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCisKIAogY2xhc3MgVGVzdFRvb2wodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRhdGEgPSAiIiIKQEAgLTE1LDcgKzE2LDcgQEAKICAgICAgICAgICAgIDoieWVzIn0gIF0KICAgICAgICAgICAgIiIiCiAKLSAgICBleHBlY3QgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgIGV4cGVjdF93aXRob3V0X3NvcnRfa2V5cyA9IHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgWwogICAgICAgICBbCiAgICAgICAgICAgICAiYmxvcnBpZSIKQEAgLTM3LDYgKzM4LDI4IEBACiAgICAgXQogICAgICIiIikKIAorICAgIGV4cGVjdCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgWworICAgICAgICBbCisgICAgICAgICAgICAiYmxvcnBpZSIKKyAgICAgICAgXSwKKyAgICAgICAgWworICAgICAgICAgICAgIndob29wcyIKKyAgICAgICAgXSwKKyAgICAgICAgW10sCisgICAgICAgICJkLXNodGFlb3UiLAorICAgICAgICAiZC1udGhpb3VoIiwKKyAgICAgICAgImktdmhiamtobnRoIiwKKyAgICAgICAgeworICAgICAgICAgICAgIm5pZnR5IjogODcKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm1vcmVmaWVsZCI6IGZhbHNlLAorICAgICAgICAgICAgImZpZWxkIjogInllcyIKKyAgICAgICAgfQorICAgIF0KKyAgICAiIiIpCisKICAgICBkZWYgdGVzdF9zdGRpbl9zdGRvdXQoc2VsZik6CiAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbigKICAgICAgICAgICAgICAgICAoc3lzLmV4ZWN1dGFibGUsICctbScsICdqc29uLnRvb2wnKSwKQEAgLTU1LDYgKzc4LDcgQEAKICAgICBkZWYgdGVzdF9pbmZpbGVfc3Rkb3V0KHNlbGYpOgogICAgICAgICBpbmZpbGUgPSBzZWxmLl9jcmVhdGVfaW5maWxlKCkKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnanNvbi50b29sJywgaW5maWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zcGxpdGxpbmVzKCksIHNlbGYuZXhwZWN0LmVuY29kZSgpLnNwbGl0bGluZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIApAQCAtNjUsNSArODksMjAgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJlbW92ZSwgb3V0ZmlsZSkKICAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICJyIikgYXMgZnA6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLnJlYWQoKSwgc2VsZi5leHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCisKKyAgICBkZWYgdGVzdF9oZWxwX2ZsYWcoc2VsZik6CisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ2pzb24udG9vbCcsICctaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuc3RhcnRzd2l0aChiJ3VzYWdlOiAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKKworICAgIGRlZiB0ZXN0X3NvcnRfa2V5c19mbGFnKHNlbGYpOgorICAgICAgICBpbmZpbGUgPSBzZWxmLl9jcmVhdGVfaW5maWxlKCkKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnanNvbi50b29sJywgJy0tc29ydC1rZXlzJywgaW5maWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3Rfd2l0aG91dF9zb3J0X2tleXMuZW5jb2RlKCkuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weSBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKaW5kZXggN2YzMTVkNC4uZDgyZTMzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CkBAIC00LDcgKzQsNiBAQAogX19lbWFpbF9fID0gInNlb2ppd29uIGF0IGdtYWlsIGRvdCBjb20iCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBkZWYgcG9zb25seV9zdW0ocG9zX2FyZzEsICphcmcsICoqa3dhcmcpOgogICAgIHJldHVybiBwb3NfYXJnMSArIHN1bShhcmcpICsgc3VtKGt3YXJnLnZhbHVlcygpKQpAQCAtMTg2LDggKzE4NSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyci5leGNlcHRpb24pLCAibmFtZSAnYicgaXMgbm90IGRlZmluZWQiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoS2V5d29yZE9ubHlBcmdUZXN0Q2FzZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQppbmRleCBmNzliZDg5Li5mODIyMDI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQpAQCAtOSw3ICs5LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpZiBub3QgaGFzYXR0cihzZWxlY3QsICJrcXVldWUiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCB3b3JrcyBvbmx5IG9uIEJTRCIpCiAKQEAgLTExNCw3ICsxMTMsNyBAQAogICAgIGRlZiB0ZXN0X3F1ZXVlX2V2ZW50KHNlbGYpOgogICAgICAgICBzZXJ2ZXJTb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VydmVyU29ja2V0LmJpbmQoKCcxMjcuMC4wLjEnLCAwKSkKLSAgICAgICAgc2VydmVyU29ja2V0Lmxpc3RlbigxKQorICAgICAgICBzZXJ2ZXJTb2NrZXQubGlzdGVuKCkKICAgICAgICAgY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIGNsaWVudC5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICAgdHJ5OgpAQCAtMjM3LDggKzIzNiw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2luaGVyaXRhYmxlKGtxdWV1ZS5maWxlbm8oKSksIEZhbHNlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0S1F1ZXVlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weSBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CmluZGV4IDc5MTU3ZGUuLjIxZWY3MzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CkBAIC03LDYgKzcsNyBAQAogCiAKIEZJTEVOQU1FID0gbGluZWNhY2hlLl9fZmlsZV9fCitOT05FWElTVEVOVF9GSUxFTkFNRSA9IEZJTEVOQU1FICsgJy5taXNzaW5nJwogSU5WQUxJRF9OQU1FID0gJyFAJCkoIUAjXzEnCiBFTVBUWSA9ICcnCiBURVNUUyA9ICdpbnNwZWN0X2ZvZGRlciBpbnNwZWN0X2ZvZGRlcjIgbWFwcGluZ190ZXN0cycKQEAgLTEyNiw2ICsxMjcsNDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGdldGxpbmUoc291cmNlX25hbWUsIGluZGV4ICsgMSkpCiAgICAgICAgICAgICAgICAgc291cmNlX2xpc3QuYXBwZW5kKGxpbmUpCiAKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfbm9fZ2xvYmFscyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoRklMRU5BTUUpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgbGluZWNhY2hlLmxhenljYWNoZShGSUxFTkFNRSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGxpbmVjYWNoZS5nZXRsaW5lcyhGSUxFTkFNRSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfc21va2Uoc2VsZik6CisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFRydWUsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxpbmVjYWNoZS5jYWNoZVtOT05FWElTVEVOVF9GSUxFTkFNRV0pKQorICAgICAgICAjIE5vdGUgaGVyZSB0aGF0IHdlJ3JlIGxvb2tpbmcgdXAgYSBub24gZXhpc3RhbnQgZmlsZW5hbWUgd2l0aCBubworICAgICAgICAjIGdsb2JhbHM6IHRoaXMgd291bGQgZXJyb3IgaWYgdGhlIGxhenkgdmFsdWUgd2Fzbid0IHJlc29sdmVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUpKQorCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX3Byb3ZpZGVfYWZ0ZXJfZmFpbGVkX2xvb2t1cChzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSkKKyAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBsaW5lY2FjaGUudXBkYXRlY2FjaGUoTk9ORVhJU1RFTlRfRklMRU5BTUUpKQorCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX2NoZWNrKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoKQorCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX2JhZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBsaW5lY2FjaGUubGF6eWNhY2hlKCcnLCBnbG9iYWxzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBsaW5lY2FjaGUubGF6eWNhY2hlKCc8Zm9vPicsIGdsb2JhbHMoKSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfYWxyZWFkeV9jYWNoZWQoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4obGluZWNhY2hlLmNhY2hlW05PTkVYSVNURU5UX0ZJTEVOQU1FXSkpCisKICAgICBkZWYgdGVzdF9tZW1vcnllcnJvcihzZWxmKToKICAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoRklMRU5BTUUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQppbmRleCAzYjk0NzAwLi5hZTFiZTZlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CkBAIC0xMDgsMjAgKzEwOCw1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgICgzLCkgKyBMKFsxLDJdKQogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTGlzdFRlc3QpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpbXBvcnQgc3lzCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExpc3RUZXN0KQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CmluZGV4IDkzNjlhMjUuLmZhZTJjM2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CkBAIC01MjQsNSArNTI0LDU5IEBACiAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIChiJ25vdCcsIGIndmFsaWQnKSkKIAogCitjbGFzcyBCYXNlRGVsb2NhbGl6ZVRlc3QoQmFzZUxvY2FsaXplZFRlc3QpOgorCisgICAgZGVmIF90ZXN0X2RlbG9jYWxpemUoc2VsZiwgdmFsdWUsIG91dCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxlLmRlbG9jYWxpemUodmFsdWUpLCBvdXQpCisKKyAgICBkZWYgX3Rlc3RfYXRvZihzZWxmLCB2YWx1ZSwgb3V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbGUuYXRvZih2YWx1ZSksIG91dCkKKworICAgIGRlZiBfdGVzdF9hdG9pKHNlbGYsIHZhbHVlLCBvdXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsZS5hdG9pKHZhbHVlKSwgb3V0KQorCisKK2NsYXNzIFRlc3RFblVTRGVsb2NhbGl6ZShFblVTQ29va2VkVGVzdCwgQmFzZURlbG9jYWxpemVUZXN0KToKKworICAgIGRlZiB0ZXN0X2RlbG9jYWxpemUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAwMDAuMDAnLCAnNTAwMDAuMDAnKQorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwLDAwMC4wMCcsICc1MDAwMC4wMCcpCisKKyAgICBkZWYgdGVzdF9hdG9mKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwMDAwLjAwJywgNTAwMDAuKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwLDAwMC4wMCcsIDUwMDAwLikKKworICAgIGRlZiB0ZXN0X2F0b2koc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAwMDAnLCA1MDAwMCkKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MCwwMDAnLCA1MDAwMCkKKworCitjbGFzcyBUZXN0Q0RlbG9jYWxpemVUZXN0KENDb29rZWRUZXN0LCBCYXNlRGVsb2NhbGl6ZVRlc3QpOgorCisgICAgZGVmIHRlc3RfZGVsb2NhbGl6ZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MDAwMC4wMCcsICc1MDAwMC4wMCcpCisKKyAgICBkZWYgdGVzdF9hdG9mKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwMDAwLjAwJywgNTAwMDAuKQorCisgICAgZGVmIHRlc3RfYXRvaShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MDAwMCcsIDUwMDAwKQorCisKK2NsYXNzIFRlc3RmckZSRGVsb2NhbGl6ZVRlc3QoRnJGUkNvb2tlZFRlc3QsIEJhc2VEZWxvY2FsaXplVGVzdCk6CisKKyAgICBkZWYgdGVzdF9kZWxvY2FsaXplKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwMDAwLDAwJywgJzUwMDAwLjAwJykKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MCAwMDAsMDAnLCAnNTAwMDAuMDAnKQorCisgICAgZGVmIHRlc3RfYXRvZihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9mKCc1MDAwMCwwMCcsIDUwMDAwLikKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9mKCc1MCAwMDAsMDAnLCA1MDAwMC4pCisKKyAgICBkZWYgdGVzdF9hdG9pKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwMDAwJywgNTAwMDApCisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAgMDAwJywgNTAwMDApCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCA4NzcwZTFiLi4wN2FlYjgzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAwMS0yMDEzIGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAwMS0yMDE0IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLApAQCAtMTYsNyArMTYsNyBAQAogCiAiIiJUZXN0IGhhcm5lc3MgZm9yIHRoZSBsb2dnaW5nIG1vZHVsZS4gUnVuIGFsbCB0ZXN0cy4KIAotQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNCBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICIiIgogCiBpbXBvcnQgbG9nZ2luZwpAQCAtMzQsMTQgKzM0LDEyIEBACiBpbXBvcnQgcXVldWUKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQotaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIHJ1bl93aXRoX2xvY2FsZSwgcnVuX3VuaXR0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaCwgcmVxdWlyZXNfemxpYiwgVGVzdEhhbmRsZXIsIE1hdGNoZXIsIEhPU1QpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtNTEsMTYgKzQ5LDEyIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogICAgICMgVGhlIGZvbGxvd2luZyBpbXBvcnRzIGFyZSBuZWVkZWQgb25seSBmb3IgdGVzdHMgd2hpY2gKICAgICAjIHJlcXVpcmUgdGhyZWFkaW5nCi0gICAgaW1wb3J0IGFzeW5jaGF0CiAgICAgaW1wb3J0IGFzeW5jb3JlCi0gICAgaW1wb3J0IGVycm5vCiAgICAgZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgSFRUUFNlcnZlciwgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcgogICAgIGltcG9ydCBzbXRwZAogICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgcGFyc2VfcXMKICAgICBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgKFRocmVhZGluZ1VEUFNlcnZlciwgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVW5peERhdGFncmFtU2VydmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiB0cnk6CkBAIC02NDUsMjIgKzYzOSwyMyBAQAogICAgICAgICBoID0gVGVzdFN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCiAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCiAgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCi0gICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaC5oYW5kbGUocikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisKICAgICAgICAgICAgIGggPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuUnVudGltZUVycm9yOiBkZWxpYmVyYXRlIG1pc3Rha2VcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgIG1zZyA9ICdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIHN0ZGVyci5nZXR2YWx1ZSgpKQorCiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHN0ZGVyci5nZXR2YWx1ZSgpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2UKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvbGRfc3RkZXJyCiAKICMgLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvdWxkIGJlIG1vdmVkIGludG8gYSBzZXJ2ZXJfaGVscGVyLnB5IG1vZHVsZQogIyAtLSBpZiBpdCBwcm92ZXMgdG8gYmUgb2Ygd2lkZXIgdXRpbGl0eSB0aGFuIGp1c3QgdGVzdF9sb2dnaW5nCkBAIC02ODgsNyArNjgzLDggQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwsIHNvY2ttYXApOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCBOb25lLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgTm9uZSwgbWFwPXNvY2ttYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgogICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQpAQCAtOTMwLDEwICs5MjYsMTAgQEAKICAgICBUSU1FT1VUID0gOC4wCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNvY2ttYXAgPSB7fQotICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoSE9TVCwgMCksIHNlbGYucHJvY2Vzc19tZXNzYWdlLCAwLjAwMSwKKyAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIHNlbGYucHJvY2Vzc19tZXNzYWdlLCAwLjAwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja21hcCkKICAgICAgICAgc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgYWRkciA9IChzdXBwb3J0LkhPU1QsIHNlcnZlci5wb3J0KQogICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5USU1FT1VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKQEAgLTEyNDksNyArMTI0NSw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcwX29rKHNlbGYpOgogICAgICAgICAjIEEgc2ltcGxlIGNvbmZpZyBmaWxlIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzApCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICAjIFdvbid0IG91dHB1dCBhbnl0aGluZwpAQCAtMTI2NCw3ICsxMjYwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzBfdXNpbmdfY3Bfb2soc2VsZik6CiAgICAgICAgICMgQSBzaW1wbGUgY29uZmlnIGZpbGUgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNldHRpbmdzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTyh0ZXh0d3JhcC5kZWRlbnQoc2VsZi5jb25maWcwKSkKICAgICAgICAgICAgIGNwID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgICAgICAgICBjcC5yZWFkX2ZpbGUoZmlsZSkKQEAgLTEyODIsNyArMTI3OCw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcxX29rKHNlbGYsIGNvbmZpZz1jb25maWcxKToKICAgICAgICAgIyBBIGNvbmZpZyBmaWxlIGRlZmluaW5nIGEgc3ViLXBhcnNlciBhcyB3ZWxsLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKGNvbmZpZykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMTMwNSw3ICsxMzAxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRfb2soc2VsZik6CiAgICAgICAgICMgQSBjb25maWcgZmlsZSBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzQpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICB0cnk6CkBAIC0xMzI1LDcgKzEzMjEsNyBAQAogICAgICAgICBzZWxmLnRlc3RfY29uZmlnMV9vayhjb25maWc9c2VsZi5jb25maWc2KQogCiAgICAgZGVmIHRlc3RfY29uZmlnN19vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzFhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTE0MjQuIGNvbXBpbGVyLWh5cGhlbmF0ZWQgc29ydHMKQEAgLTEzNDUsNyArMTM0MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2dnZXIuZGlzYWJsZWQpCkBAIC0yNDkyLDcgKzI0ODgsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMF9vayhzZWxmKToKICAgICAgICAgIyBBIHNpbXBsZSBjb25maWcgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNldHRpbmdzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMCkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgICMgV29uJ3Qgb3V0cHV0IGFueXRoaW5nCkBAIC0yNTA3LDcgKzI1MDMsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMV9vayhzZWxmLCBjb25maWc9Y29uZmlnMSk6CiAgICAgICAgICMgQSBjb25maWcgZGVmaW5pbmcgYSBzdWItcGFyc2VyIGFzIHdlbGwuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoY29uZmlnKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNTM4LDcgKzI1MzQsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnNF9vayhzZWxmKToKICAgICAgICAgIyBBIGNvbmZpZyBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzQpCiAgICAgICAgICAgICAjbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMjU1Myw3ICsyNTQ5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRhX29rKHNlbGYpOgogICAgICAgICAjIEEgY29uZmlnIHNwZWNpZnlpbmcgYSBjdXN0b20gZm9ybWF0dGVyIGNsYXNzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNGEpCiAgICAgICAgICAgICAjbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMjU3Myw3ICsyNTY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBzZWxmLmFwcGx5X2NvbmZpZywgc2VsZi5jb25maWc2KQogCiAgICAgZGVmIHRlc3RfY29uZmlnN19vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI1ODUsNyArMjU4MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2MDIsNyArMjU5OCw3IEBACiAKICAgICAjU2FtZSBhcyB0ZXN0X2NvbmZpZ183X29rIGJ1dCBkb24ndCBkaXNhYmxlIG9sZCBsb2dnZXJzLgogICAgIGRlZiB0ZXN0X2NvbmZpZ184X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBBbGwgd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNjE0LDcgKzI2MTAsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzgpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjYzNSw3ICsyNjMxLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ184YV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzFhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTE0MjQuIGNvbXBpbGVyLWh5cGhlbmF0ZWQgc29ydHMKQEAgLTI2NTUsNyArMjY1MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnOGEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjY3OCw3ICsyNjc0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ185X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnOSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgI05vdGhpbmcgd2lsbCBiZSBvdXRwdXQgc2luY2UgYm90aCBoYW5kbGVyIGFuZCBsb2dnZXIgYXJlIHNldCB0byBXQVJOSU5HCkBAIC0yNjk2LDcgKzI2OTIsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ18xMF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEwKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjcyNCw3ICsyNzIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBzZWxmLmFwcGx5X2NvbmZpZywgc2VsZi5jb25maWcxMykKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzE0X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMTQpCiAgICAgICAgICAgICBoID0gbG9nZ2luZy5faGFuZGxlcnNbJ2hhbmQxJ10KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb28sICdiYXInKQpAQCAtMjc2Myw3ICsyNzU5LDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xMF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcihqc29uLmR1bXBzKHNlbGYuY29uZmlnMTApKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjc4Myw3ICsyNzc5LDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xX29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRleHR3cmFwLmRlZGVudChDb25maWdGaWxlVGVzdC5jb25maWcxKSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjgxMCw3ICsyODA2LDcgQEAKICAgICAgICAgIyBGaXJzdCwgc3BlY2lmeSBhIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiB0aGF0IHdpbGwgZmFpbC4KICAgICAgICAgIyBXZSBleHBlY3QgdG8gc2VlIG5vIG91dHB1dCwgc2luY2Ugb3VyIGNvbmZpZ3VyYXRpb24KICAgICAgICAgIyBuZXZlciB0b29rIGVmZmVjdC4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcih0b19zZW5kLCB2ZXJpZnlfZmFpbCkKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCkBAIC0yODI1LDcgKzI4MjEsNyBAQAogICAgICAgICAjIE5vdywgcGVyZm9ybSBubyB2ZXJpZmljYXRpb24uIE91ciBjb25maWd1cmF0aW9uCiAgICAgICAgICMgc2hvdWxkIHRha2UgZWZmZWN0LgogCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZCkgICAgIyBubyB2ZXJpZnkgY2FsbGFibGUgc3BlY2lmaWVkCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI4NDMsNyArMjgzOSw3IEBACiAKICAgICAgICAgIyBOb3csIHBlcmZvcm0gdmVyaWZpY2F0aW9uIHdoaWNoIHRyYW5zZm9ybXMgdGhlIGJ5dGVzLgogCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZFs6Oi0xXSwgdmVyaWZ5X3JldmVyc2UpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI5OTgsNyArMjk5NCw3IEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihsb2dnaW5nLmhhbmRsZXJzLCAnUXVldWVMaXN0ZW5lcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3RfcXVldWVfbGlzdGVuZXIoc2VsZik6Ci0gICAgICAgIGhhbmRsZXIgPSBUZXN0SGFuZGxlcihNYXRjaGVyKCkpCisgICAgICAgIGhhbmRsZXIgPSBzdXBwb3J0LlRlc3RIYW5kbGVyKHN1cHBvcnQuTWF0Y2hlcigpKQogICAgICAgICBsaXN0ZW5lciA9IGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lcihzZWxmLnF1ZXVlLCBoYW5kbGVyKQogICAgICAgICBsaXN0ZW5lci5zdGFydCgpCiAgICAgICAgIHRyeToKQEAgLTMwMTAsNiArMzAwNiwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5XQVJOSU5HLCBtZXNzYWdlPScxJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCisgICAgICAgIGhhbmRsZXIuY2xvc2UoKQorCisgICAgICAgICMgTm93IHRlc3Qgd2l0aCByZXNwZWN0X2hhbmRsZXJfbGV2ZWwgc2V0CisKKyAgICAgICAgaGFuZGxlciA9IHN1cHBvcnQuVGVzdEhhbmRsZXIoc3VwcG9ydC5NYXRjaGVyKCkpCisgICAgICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgbGlzdGVuZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIoc2VsZi5xdWV1ZSwgaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcGVjdF9oYW5kbGVyX2xldmVsPVRydWUpCisgICAgICAgIGxpc3RlbmVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5xdWVfbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci5lcnJvcihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICAgICAgc2VsZi5xdWVfbG9nZ2VyLmNyaXRpY2FsKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsaXN0ZW5lci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLldBUk5JTkcsIG1lc3NhZ2U9JzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPSc1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSc2JykpCisKIAogWkVSTyA9IGRhdGV0aW1lLnRpbWVkZWx0YSgwKQogCkBAIC0zMTY2LDMyICszMTgxLDM1IEBACiAgICAgICAgICMgVGVzdCB0aGUgbGFzdCByZXNvcnQgaGFuZGxlcgogICAgICAgICByb290ID0gc2VsZi5yb290X2xvZ2dlcgogICAgICAgICByb290LnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2hkbHIpCi0gICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCiAgICAgICAgIG9sZF9sYXN0cmVzb3J0ID0gbG9nZ2luZy5sYXN0UmVzb3J0CiAgICAgICAgIG9sZF9yYWlzZV9leGNlcHRpb25zID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC5kZWJ1ZygnVGhpcyBzaG91bGQgbm90IGFwcGVhcicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhXG4nKQotICAgICAgICAgICAgI05vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3QuZGVidWcoJ1RoaXMgc2hvdWxkIG5vdCBhcHBlYXInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ0ZpbmFsIGNoYW5jZSFcbicpCisKKyAgICAgICAgICAgICMgTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKICAgICAgICAgICAgIGxvZ2dpbmcubGFzdFJlc29ydCA9IE5vbmUKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICdObyBoYW5kbGVycyBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyICJyb290IlxuJykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdGaW5hbCBjaGFuY2UhJykKKyAgICAgICAgICAgICAgICBtc2cgPSAnTm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciAicm9vdCJcbicKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCBtc2cpCisKICAgICAgICAgICAgICMgJ05vIGhhbmRsZXJzJyBtZXNzYWdlIG9ubHkgcHJpbnRlZCBvbmNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdGaW5hbCBjaGFuY2UhJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKworICAgICAgICAgICAgIyBJZiByYWlzZUV4Y2VwdGlvbnMgaXMgRmFsc2UsIG5vIG1lc3NhZ2UgaXMgcHJpbnRlZAogICAgICAgICAgICAgcm9vdC5tYW5hZ2VyLmVtaXR0ZWROb0hhbmRsZXJXYXJuaW5nID0gRmFsc2UKLSAgICAgICAgICAgICNJZiByYWlzZUV4Y2VwdGlvbnMgaXMgRmFsc2UsIG5vIG1lc3NhZ2UgaXMgcHJpbnRlZAogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyID0gb2xkX3N0ZGVycgogICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKHNlbGYucm9vdF9oZGxyKQogICAgICAgICAgICAgbG9nZ2luZy5sYXN0UmVzb3J0ID0gb2xkX2xhc3RyZXNvcnQKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlX2V4Y2VwdGlvbnMKQEAgLTMzMjIsOCArMzM0MCw4IEBACiAKICAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CiAgICAgICAgIGNhbGxlZCA9IFtdCi0gICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsCi0gICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKIAogICAgICAgICByZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKICAgICAgICAgbG9nZ2luZy5yb290LmFkZEhhbmRsZXIocmVjb3JkaW5nKQpAQCAtMzQ5NCw3ICszNTEyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIHNlbGYub3JpZ2luYWxfbG9nZ2luZ19sZXZlbCkKIAogICAgIGRlZiB0ZXN0X3N0cmZvcm1hdHN0eWxlKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN5cy5zdGRvdXQsIHN0eWxlPSJ7IikKICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkxvZyBhbiBlcnJvciIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LnNlZWsoMCkKQEAgLTM1MDIsNyArMzUyMCw3IEBACiAgICAgICAgICAgICAgICAgIkVSUk9SOnJvb3Q6TG9nIGFuIGVycm9yIikKIAogICAgIGRlZiB0ZXN0X3N0cmluZ3RlbXBsYXRlc3R5bGUoc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhzdHJlYW09c3lzLnN0ZG91dCwgc3R5bGU9IiQiKQogICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiTG9nIGFuIGVycm9yIikKICAgICAgICAgICAgIHN5cy5zdGRvdXQuc2VlaygwKQpAQCAtMzYyMyw3ICszNjQxLDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnJvb3Quc2V0TGV2ZWwsIG9sZF9sZXZlbCkKICAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkKIAotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLCBteV9iYXNpY19jb25maWcpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQogCiAgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKICAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CkBAIC0zNjg5LDYgKzM3MDcsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2V4Y2luZm8oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorCisgICAgICAgIHNlbGYuYWRhcHRlci5leGNlcHRpb24oJ2V4Y19pbmZvIHRlc3QnLCBleGNfaW5mbz1leGMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCiAgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CiAgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKICAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCkBAIC0zNzYzLDggKzM3OTQsOCBAQAogCiAgICAgZGVmIHRlc3RfZmluZF9jYWxsZXJfd2l0aF9zdGFja19pbmZvKHNlbGYpOgogICAgICAgICBjYWxsZWQgPSBbXQotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKLSAgICAgICAgICAgICAgbGFtYmRhIGYsIGZpbGU6IGNhbGxlZC5hcHBlbmQoZmlsZS5nZXR2YWx1ZSgpKSkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKKyAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQogCkBAIC0zOTAxLDcgKzM5MzIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCiAgICAgICAgIHJoLmNsb3NlKCkKIAotICAgIEByZXF1aXJlc196bGliCisgICAgQHN1cHBvcnQucmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JvdGF0b3Ioc2VsZik6CiAgICAgICAgIGRlZiBuYW1lcihuYW1lKToKICAgICAgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKQEAgLTQxMzQsMjIgKzQxNjUsMjAgQEAKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCiAjIGZpcnN0IGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQuCi1AcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKK0BzdXBwb3J0LnJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgRGF0YWdyYW1IYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LAotICAgICAgICAgICAgICAgICBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCi0gICAgICAgICAgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwKLSAgICAgICAgICAgICAgICAgQmFzaWNDb25maWdUZXN0LCBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwgRXhjZXB0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwgTlRFdmVudExvZ0hhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCBVbml4U29ja2V0SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QKLSAgICAgICAgICAgICAgICApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LAorICAgICAgICBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwKKyAgICAgICAgRGF0YWdyYW1IYW5kbGVyVGVzdCwgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsCisgICAgICAgIENvbmZpZ0RpY3RUZXN0LCBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKKyAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCisgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwgQmFzaWNDb25maWdUZXN0LAorICAgICAgICBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsCisgICAgICAgIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsCisgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCisgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNWYxNDc5NS4uZTAyNTcxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNTk5LDggKzU5OSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wX18ob3RoZXIpID09IDAKLSAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXBfXyhvdGhlcikgIT0gMAogICAgICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcF9fKG90aGVyKSA+PSAwCiAgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKQEAgLTEyNDMsOCArMTI0MSw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHZhbHVlID4+IHNoaWZ0KSwgaW50KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMb25nVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5CmluZGV4IDFiNDBkMDIuLmY0YzQ2M2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZ2V4cC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmdleHAucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBMb25nRXhwVGV4dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbG9uZ2V4cChzZWxmKToKQEAgLTcsOCArNiw1IEBACiAgICAgICAgIGwgPSBldmFsKCJbIiArICIyLCIgKiBSRVBTICsgIl0iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgUkVQUykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExvbmdFeHBUZXh0KQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCAwN2ZhZGJkLi4yZDM5MDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDQgKzEsNSBAQAotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2ltcG9ydCBfY29tcHJlc3Npb24KK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KQEAgLTEzNSw2ICsxMzYsOTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzX21heHNpemUoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBtYXhfbGVuZ3RoID0gMTAwCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBGZWVkIGZpcnN0IGhhbGYgdGhlIGlucHV0CisgICAgICAgIGxlbl8gPSBsZW4oQ09NUFJFU1NFRF9YWikgLy8gMgorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbOmxlbl9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aXRob3V0IHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2hpbGUgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haW2xlbl86XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgd2hpbGUgbm90IGx6ZC5lb2Y6CisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICBvdXQgPSBiIiIuam9pbihvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBJTlBVVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuY2hlY2ssIGx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGFmdGVyIG1vdmluZyBleGlzdGluZworICAgICAgICAjIGNvbnRlbnRzIHRvIGJlZ2lubmluZworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzoxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKworICAgICAgICAjIFJldHJpZXZlIHNvbWUgcmVzdWx0cywgZnJlZWluZyBjYXBhY2l0eSBhdCBiZWdpbm5pbmcKKyAgICAgICAgIyBvZiBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhiJycsIDIpKQorCisgICAgICAgICMgQWRkIG1vcmUgZGF0YSB0aGF0IGZpdHMgaW50byBpbnB1dCBidWZmZXIgYWZ0ZXIKKyAgICAgICAgIyBtb3ZpbmcgZXhpc3RpbmcgZGF0YSB0byBiZWdpbm5pbmcKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzEwMDoxMDVdLCAxNSkpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMTA1Ol0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzIoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBieSBhcHBlbmRpbmcgZGF0YSBhdCB0aGUKKyAgICAgICAgIyBlbmQgcmlnaHQgYXdheQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGVtcHR5IGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTApLCBiJycpCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnKSkKKworICAgICAgICAjIEZpbGwgYnVmZmVyIHdpdGggbmV3IGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDoyODBdLCAyKSkKKworICAgICAgICAjIEFwcGVuZCBzb21lIG1vcmUgZGF0YSwgbm90IGVub3VnaCB0byByZXF1aXJlIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMjgwOjMwMF0sIDIpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgZXh0ZW5kaW5nIGl0CisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgYWxtb3N0IGZ1bGwgaW5wdXQgYnVmZmVyCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwgNSkpCisKKyAgICAgICAgIyBBZGQgZXZlbiBtb3JlIGRhdGEgdG8gaXQsIHJlcXVpcmluZyByZXNpemUKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDozMDBdLCA1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWlszMDA6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CiAgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQogICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgpAQCAtNjgxLDEzICs3NzMsMTMgQEAKICAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCiAgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KLSAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQotICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRQorICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBsZW4oQ09NUFJFU1NFRF9YWikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAgNSkpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiA1KQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbHptYS5fQlVGRkVSX1NJWkUgPSBzYXZlZF9idWZmZXJfc2l6ZQorICAgICAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gc2F2ZWRfYnVmZmVyX3NpemUKIAogICAgIGRlZiB0ZXN0X3JlYWRfdHJhaWxpbmdfanVuayhzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0JPR1VTKSkgYXMgZjoKQEAgLTczOCw3ICs4MzAsNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkLCBmbG9hdCgpKQogCiAgICAgZGVmIHRlc3RfcmVhZF9iYWRfZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQk9HVVMpKSBhcyBmOgpAQCAtODM0LDYgKzkyNiwxNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKKyAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKKworICAgICAgICBkZWNvbXAgPSBMWk1BRmlsZShCeXRlc0lPKGJvbWIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CkBAIC05OTksNyArMTEwMiw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDApCiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCwgMykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgOSwgKCkpCisgICAgICAgICAgICAjIGlvLkJ1ZmZlcmVkUmVhZGVyIHJhaXNlcyBUeXBlRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBWYWx1ZUVycm9yKSwgZi5zZWVrLCA5LCAoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCAyMmY4NDkxLi44MGJlYzdhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xNDIsNiArMTQyLDggQEAKIGNsYXNzIE1hY0NvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGF0aG1vZHVsZSA9IG1hY3BhdGgKIAorICAgIHRlc3RfcmVscGF0aF9lcnJvcnMgPSBOb25lCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQppbmRleCBhNGNkMDljLi4yMmIyZmNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0yMTMsOSArMjEzLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5maW5kbWF0Y2goKmNbMF0sICoqY1sxXSksIGNbMl0pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVscGVyRnVuY3Rpb25UZXN0LCBHZXRjYXBzVGVzdCwgRmluZG1hdGNoVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggOTAzZTEyYy4uYzdkZWY5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgICAgIGhlYWQgPSBsYXN0ID0gW10KICAgICAgICAgIyBUaGUgbWF4IHN0YWNrIGRlcHRoIHNob3VsZCBtYXRjaCB0aGUgdmFsdWUgaW4gUHl0aG9uL21hcnNoYWwuYy4KICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgICAgIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIID0gMTUwMAorICAgICAgICAgICAgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggPSAxMDAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCA9IDIwMDAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggLSAyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCA0OGY4NGJhLi42YzdiOTlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC0xNzUsNiArMTc1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgZmxhZ3MKICAgICAgICAgICAgICAgICAgICkKIAorIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KK2NsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6CkBAIC00MjIsOSArNDMwLDE3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZmFjdG9yaWFsKGkpLCBweV9mYWN0b3JpYWwoaSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xZTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIG1hdGgucGkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZmFjdG9yaWFsLCBzeXMubWF4c2l6ZSsxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTBlMTAwKQorCisgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IHBsYWNlIGRpZmZlcmVudCB1cHBlciBib3VuZHMuCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RGYWN0b3JpYWxIdWdlSW5wdXRzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSByYWlzZXMgVmFsdWVFcnJvciBmb3IgaW5wdXRzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgICAgICAjIHRvIGZpdCBpbnRvIGEgQyBsb25nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5mYWN0b3JpYWwsIDFlMTAwKQogCiAgICAgZGVmIHRlc3RGbG9vcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZsb29yKQpAQCAtNTg3LDYgKzYwMyw0OSBAQAogICAgICAgICAgICAgcyA9IG1zdW0odmFscykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXN1bSh2YWxzKSwgbWF0aC5mc3VtKHZhbHMpKQogCisgICAgZGVmIHRlc3RHY2Qoc2VsZik6CisgICAgICAgIGdjZCA9IG1hdGguZ2NkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDAsIDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxLCAwKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLTEsIDApLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgwLCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMCwgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg3LCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoNywgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtMjMsIDE1KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMTIwLCA4NCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg4NCwgLTEyMCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjE2MzQyNjgzNTU3NjAxNTM1NTA2MzExNzEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MzY1MjI2ODE4NDkxMTAxMjQ2MTY0NTg3ODQpLCAzMikKKyAgICAgICAgYyA9IDY1MjU2MAorICAgICAgICB4ID0gNDM0NjEwNDU2NTcwMzk5OTAyMzc4ODgwNjc5MjMzMDk4ODE5MDE5ODUzMjI5NDcwMjg2OTk0MzY3ODM2NjAwNTY2CisgICAgICAgIHkgPSAxMDY0NTAyMjQ1ODI1MTE1MzI3NzU0ODQ3MjQ0OTE0OTIxNTUzOTc3CisgICAgICAgIGEgPSB4ICogYworICAgICAgICBiID0geSAqIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIGEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIC1hKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgLWIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCAtYSksIGMpCisgICAgICAgIGMgPSA1NzY1NTkyMzA4NzE2NTQ5NTk4MTYxMzA1NTE4ODQ4NTY5MTIwMDMxNDE0NDY3ODE2NDY2MDI3OTAyMTY0MDY4NzQKKyAgICAgICAgYSA9IHggKiBjCisgICAgICAgIGIgPSB5ICogYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgLWEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCBhKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWEsIC1iKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWIsIC1hKSwgYykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLjAsIDg0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLCA4NC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChNeUluZGV4YWJsZSgxMjApLCBNeUluZGV4YWJsZSg4NCkpLCAxMikKKwogICAgIGRlZiB0ZXN0SHlwb3Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5oeXBvdCkKICAgICAgICAgc2VsZi5mdGVzdCgnaHlwb3QoMCwwKScsIG1hdGguaHlwb3QoMCwwKSwgMCkKQEAgLTk3NSw2ICsxMDM0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigxLikpCiAKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICBkZWYgdGVzdF9uYW5fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubmFuKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2luZl9jb25zdGFudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNpbmYobWF0aC5pbmYpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobWF0aC5pbmYsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmluZiwgZmxvYXQoImluZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC1tYXRoLmluZiwgZmxvYXQoIi1pbmYiKSkKKwogICAgICMgUkVEX0ZMQUcgMTYtT2N0LTIwMDAgVGltCiAgICAgIyBXaGlsZSAyLjAgaXMgbW9yZSBjb25zaXN0ZW50IGFib3V0IGV4Y2VwdGlvbnMgdGhhbiBwcmV2aW91cyByZWxlYXNlcywgaXQKICAgICAjIHN0aWxsIGZhaWxzIHRoaXMgcGFydCBvZiB0aGUgdGVzdCBvbiBzb21lIHBsYXRmb3Jtcy4gIEZvciBub3csIHdlIG9ubHkKQEAgLTEwOTYsMTAgKzExNjYsMTMxIEBACiAgICAgICAgICAgICAgICAgICAgICAgJ1xuICAnLmpvaW4oZmFpbHVyZXMpKQogCiAKK2NsYXNzIElzQ2xvc2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaXNjbG9zZSA9IG1hdGguaXNjbG9zZSAjIHN1YmxjYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMKKworICAgIGRlZiBhc3NlcnRJc0Nsb3NlKHNlbGYsIGEsIGIsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iJXMgYW5kICVzIHNob3VsZCBiZSBjbG9zZSEiICUgKGEsIGIpKQorCisgICAgZGVmIGFzc2VydElzTm90Q2xvc2Uoc2VsZiwgYSwgYiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IiVzIGFuZCAlcyBzaG91bGQgbm90IGJlIGNsb3NlISIgJSAoYSwgYikpCisKKyAgICBkZWYgYXNzZXJ0QWxsQ2xvc2Uoc2VsZiwgZXhhbXBsZXMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGZvciBhLCBiIGluIGV4YW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKGEsIGIsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhc3NlcnRBbGxOb3RDbG9zZShzZWxmLCBleGFtcGxlcywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZm9yIGEsIGIgaW4gZXhhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Q2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfdG9sZXJhbmNlcyhzZWxmKToKKyAgICAgICAgIyBWYWx1ZUVycm9yIHNob3VsZCBiZSByYWlzZWQgaWYgZWl0aGVyIHRvbGVyYW5jZSBpcyBsZXNzIHRoYW4gemVybworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKDEsIDEsIHJlbF90b2w9LTFlLTEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgxLCAxLCByZWxfdG9sPTFlLTEwMCwgYWJzX3RvbD0tMWUxMCkKKworICAgIGRlZiB0ZXN0X2lkZW50aWNhbChzZWxmKToKKyAgICAgICAgIyBpZGVudGljYWwgdmFsdWVzIG11c3QgdGVzdCBhcyBjbG9zZQorICAgICAgICBpZGVudGljYWxfZXhhbXBsZXMgPSBbKDIuMCwgMi4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjFlMjAwLCAwLjFlMjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLjEyM2UtMzAwLCAxLjEyM2UtMzAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NSwgMTIzNDUuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wLCAtMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzNDU2NzgsIDM0NTY3OCldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoaWRlbnRpY2FsX2V4YW1wbGVzLCByZWxfdG9sPTAuMCwgYWJzX3RvbD0wLjApCisKKyAgICBkZWYgdGVzdF9laWdodF9kZWNpbWFsX3BsYWNlcyhzZWxmKToKKyAgICAgICAgIyBleGFtcGxlcyB0aGF0IGFyZSBjbG9zZSB0byAxZS04LCBidXQgbm90IDFlLTkKKyAgICAgICAgZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMgPSBbKDFlOCwgMWU4ICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtOCwgLTEuMDAwMDAwMDA5ZS04KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMTIzNDU2NzgsIDEuMTIzNDU2NzkpXQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGVpZ2h0X2RlY2ltYWxfcGxhY2VzX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X25lYXJfemVybyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgY2xvc2UgdG8gemVybworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTE1MCwgMC4wKV0KKyAgICAgICAgIyB0aGVzZSBzaG91bGQgbm90IGJlIGNsb3NlIHRvIGFueSByZWxfdG9sCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCByZWxfdG9sPTAuOSkKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYmUgY2xvc2UgdG8gYWJzX3RvbD0xZS04CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCBhYnNfdG9sPTFlLTgpCisKKyAgICBkZWYgdGVzdF9pZGVudGljYWxfaW5maW5pdGUoc2VsZik6CisgICAgICAgICMgdGhlc2UgYXJlIGNsb3NlIHJlZ2FyZGxlc3Mgb2YgdG9sZXJhbmNlIC0tIGkuZS4gdGhleSBhcmUgZXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKElORiwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoSU5GLCBJTkYsIGFic190b2w9MC4wKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoTklORiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKE5JTkYsIE5JTkYsIGFic190b2w9MC4wKQorCisgICAgZGVmIHRlc3RfaW5mX25pbmZfbmFuKHNlbGYpOgorICAgICAgICAjIHRoZXNlIHNob3VsZCBuZXZlciBiZSBjbG9zZSAoZm9sbG93aW5nIElFRUUgNzU0IHJ1bGVzIGZvciBlcXVhbGl0eSkKKyAgICAgICAgbm90X2Nsb3NlX2V4YW1wbGVzID0gWyhOQU4sIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCAxZS0xMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFlLTEwMCwgTkFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCBJTkYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElORiwgTklORiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5GLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMCwgSU5GKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIDFlMzA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxZTMwOCwgSU5GKV0KKyAgICAgICAgIyB1c2UgbGFyZ2VzdCByZWFzb25hYmxlIHRvbGVyYW5jZQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5vdF9jbG9zZV9leGFtcGxlcywgYWJzX3RvbD0wLjk5OTk5OTk5OTk5OTk5OSkKKworICAgIGRlZiB0ZXN0X3plcm9fdG9sZXJhbmNlKHNlbGYpOgorICAgICAgICAjIHRlc3Qgd2l0aCB6ZXJvIHRvbGVyYW5jZQorICAgICAgICB6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcyA9IFsoMS4wLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuNCwgLTMuNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtMzAwLCAtMWUtMzAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZSh6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcywgcmVsX3RvbD0wLjApCisKKyAgICAgICAgemVyb190b2xlcmFuY2Vfbm90X2Nsb3NlX2V4YW1wbGVzID0gWygxLjAsIDEuMDAwMDAwMDAwMDAwMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjk5OTk5OTk5OTk5OTk5LCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMGUyMDAsIC45OTk5OTk5OTk5OTk5OTllMjAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZSh6ZXJvX3RvbGVyYW5jZV9ub3RfY2xvc2VfZXhhbXBsZXMsIHJlbF90b2w9MC4wKQorCisgICAgZGVmIHRlc3RfYXNzeW1ldHJ5KHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGFzc3ltZXRyeSBleGFtcGxlIGZyb20gUEVQIDQ4NQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKFsoOSwgMTApLCAoMTAsIDkpXSwgcmVsX3RvbD0wLjEpCisKKyAgICBkZWYgdGVzdF9pbnRlZ2VycyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgaW50ZWdlcl9leGFtcGxlcyA9IFsoMTAwMDAwMDAxLCAxMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NTY3ODksIDEyMzQ1Njc4OCldCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShpbnRlZ2VyX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoaW50ZWdlcl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQorCisgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6CisgICAgICAgICMgdGVzdCB3aXRoIERlY2ltYWwgdmFsdWVzCisgICAgICAgIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggRnJhY3Rpb24gdmFsdWVzCisgICAgICAgIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgorCisgICAgICAgICMgY291bGQgdXNlIHNvbWUgbW9yZSBleGFtcGxlcyBoZXJlIQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsoRnJhY3Rpb24oMSwgMTAwMDAwMDAwKSArIDEsIEZyYWN0aW9uKDEpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gZG9jdGVzdCBpbXBvcnQgRG9jRmlsZVN1aXRlCiAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKE1hdGhUZXN0cykpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoSXNDbG9zZVRlc3RzKSkKICAgICBzdWl0ZS5hZGRUZXN0KERvY0ZpbGVTdWl0ZSgiaWVlZTc1NC50eHQiKSkKICAgICBydW5fdW5pdHRlc3Qoc3VpdGUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IDlhMjQ2MWQuLjNmOTkyOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIGltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIAogY2xhc3MgTWVtb3J5U2Vla1Rlc3RNaXhpbjoKIApAQCAtNzE3LDEyICs3MTgsNTYgQEAKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZihzZWxmKToKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMm5OMlBuJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMm4yUG4nKQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oaW8uQnl0ZXNJTygpKSwgYmFzZXNpemUpCiAgICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oKSwgYmFzZXNpemUgKQotICAgICAgICBjaGVjayhpby5CeXRlc0lPKGInYScpLCBiYXNlc2l6ZSArIDEgKyAxICkKLSAgICAgICAgY2hlY2soaW8uQnl0ZXNJTyhiJ2EnICogMTAwMCksIGJhc2VzaXplICsgMTAwMCArIDEgKQorICAgICAgICBjaGVjayhpby5CeXRlc0lPKGInYScgKiAxMDAwKSwgYmFzZXNpemUgKyBzeXMuZ2V0c2l6ZW9mKGInYScgKiAxMDAwKSkKKworICAgICMgVmFyaW91cyB0ZXN0cyBvZiBjb3B5LW9uLXdyaXRlIGJlaGF2aW91ciBmb3IgQnl0ZXNJTy4KKworICAgIGRlZiBfdGVzdF9jb3dfbXV0YXRpb24oc2VsZiwgbXV0YXRpb24pOgorICAgICAgICAjIENvbW1vbiBjb2RlIGZvciBhbGwgQnl0ZXNJTyBjb3B5LW9uLXdyaXRlIG11dGF0aW9uIHRlc3RzLgorICAgICAgICBpbW0gPSBiJyAnICogMTAyNAorICAgICAgICBvbGRfcmMgPSBzeXMuZ2V0cmVmY291bnQoaW1tKQorICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcyhpbW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KGltbSksIG9sZF9yYyArIDEpCisgICAgICAgIG11dGF0aW9uKG1lbWlvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChpbW0pLCBvbGRfcmMpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgICMgRW5zdXJlIHRydW5jYXRlIGNhdXNlcyBhIGNvcHkuCisgICAgICAgIGRlZiBtdXRhdGlvbihtZW1pbyk6CisgICAgICAgICAgICBtZW1pby50cnVuY2F0ZSgxKQorICAgICAgICBzZWxmLl90ZXN0X2Nvd19tdXRhdGlvbihtdXRhdGlvbikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Nvd193cml0ZShzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgd3JpdGUgdGhhdCB3b3VsZCBub3QgY2F1c2UgYSByZXNpemUgc3RpbGwgcmVzdWx0cyBpbiBhIGNvcHkuCisgICAgICAgIGRlZiBtdXRhdGlvbihtZW1pbyk6CisgICAgICAgICAgICBtZW1pby5zZWVrKDApCisgICAgICAgICAgICBtZW1pby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuX3Rlc3RfY293X211dGF0aW9uKG11dGF0aW9uKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY293X3NldHN0YXRlKHNlbGYpOgorICAgICAgICAjIF9fc2V0c3RhdGVfXyBzaG91bGQgY2F1c2UgYnVmZmVyIHRvIGJlIHJlbGVhc2VkLgorICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcyhiJ2Zvb29vb28nKQorICAgICAgICBzdGF0ZSA9IG1lbWlvLl9fZ2V0c3RhdGVfXygpCisgICAgICAgIGRlZiBtdXRhdGlvbihtZW1pbyk6CisgICAgICAgICAgICBtZW1pby5fX3NldHN0YXRlX18oc3RhdGUpCisgICAgICAgIHNlbGYuX3Rlc3RfY293X211dGF0aW9uKG11dGF0aW9uKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY293X211dGFibGUoc2VsZik6CisgICAgICAgICMgQnl0ZXNJTyBzaG91bGQgYWNjZXB0IG9ubHkgQnl0ZXMgZm9yIGNvcHktb24td3JpdGUgc2hhcmluZywgc2luY2UKKyAgICAgICAgIyBhcmJpdHJhcnkgYnVmZmVyLWV4cG9ydGluZyBvYmplY3RzIGxpa2UgYnl0ZWFycmF5KCkgYXJlbid0IGd1YXJhbnRlZWQKKyAgICAgICAgIyB0byBiZSBpbW11dGFibGUuCisgICAgICAgIGJhID0gYnl0ZWFycmF5KDEwMjQpCisgICAgICAgIG9sZF9yYyA9IHN5cy5nZXRyZWZjb3VudChiYSkKKyAgICAgICAgbWVtaW8gPSBzZWxmLmlvY2xhc3MoYmEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KGJhKSwgb2xkX3JjKQogCiBjbGFzcyBDU3RyaW5nSU9UZXN0KFB5U3RyaW5nSU9UZXN0KToKICAgICBpb2NsYXNzID0gaW8uU3RyaW5nSU8KQEAgLTc4MSwxMCArODI2LDUgQEAKICAgICAgICAgICAgIHBhc3MKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdHMgPSBbUHlCeXRlc0lPVGVzdCwgUHlTdHJpbmdJT1Rlc3QsIENCeXRlc0lPVGVzdCwgQ1N0cmluZ0lPVGVzdCwKLSAgICAgICAgICAgICBQeVN0cmluZ0lPUGlja2xlVGVzdCwgQ1N0cmluZ0lPUGlja2xlVGVzdF0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQppbmRleCA0YmMzMTMzLi42ZmU2MWE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CkBAIC0zNjksMTIgKzM2OSwxMiBAQAogICAgICAgICBkID0gbWVtb3J5dmlldyhiKQogCiAgICAgICAgIGRlbCBiCi0gCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjWzBdLCAyNTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFswXSwgMjU2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm9ybWF0LCAiSCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5mb3JtYXQsICJIIikKLSAKKwogICAgICAgICBfID0gbS5jYXN0KCdJJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjWzBdLCAyNTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFswXSwgMjU2KQpAQCAtNDkyLDggKzQ5Miw1IEBACiAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDBiNTMwMzIuLjY4NTY1OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsMTEgKzEwMSw1IEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWltZVR5cGVzVGVzdENhc2UsCi0gICAgICAgIFdpbjMyTWltZVR5cGVzVGVzdENhc2UKLSAgICAgICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQppbmRleCAwNWRmNmU5Li5lOGNhNDk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CkBAIC0xLDcgKzEsNyBAQAogIyB0ZXN0IGZvciB4bWwuZG9tLm1pbmlkb20KIAogaW1wb3J0IHBpY2tsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KQEAgLTQ5LDYgKzQ5LDIxIEBACiAgICAgICAgIHQgPSBub2RlLndob2xlVGV4dAogICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXIsIGZvdW5kICVyIiAlIChzLCB0KSkKIAorICAgIGRlZiB0ZXN0RG9jdW1lbnRBc3luY0F0dHIoc2VsZik6CisgICAgICAgIGRvYyA9IERvY3VtZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkb2MuYXN5bmNfKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihkb2MsICdhc3luYycsIFRydWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNldGF0dHIoZG9jLCAnYXN5bmMnLCBUcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnZXRhdHRyKGRvYywgJ2FzeW5jJywgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9jLmFzeW5jXykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERvY3VtZW50LmFzeW5jXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoRG9jdW1lbnQsICdhc3luYycsIFRydWUpKQorCiAgICAgZGVmIHRlc3RQYXJzZUZyb21CaW5hcnlGaWxlKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4odHN0ZmlsZSwgJ3JiJykgYXMgZmlsZToKICAgICAgICAgICAgIGRvbSA9IHBhcnNlKGZpbGUpCkBAIC0xNTQ1LDggKzE1NjAsNSBAQAogICAgICAgICBwaSA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInkiLCAieiIpCiAgICAgICAgIHBpLm5vZGVWYWx1ZSA9ICJjcmFzaCIKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChNaW5pZG9tVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IDRkMjNmMTYuLjNkZTg0ZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTI4Miw2ICsyODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEsIC0xKSwgOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZpbmQoYidvbmUnLCAxLCAtMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChieXRlYXJyYXkoYidvbmUnKSksIDApCiAKIAogICAgIGRlZiB0ZXN0X3JmaW5kKHNlbGYpOgpAQCAtMzAwLDYgKzMwMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChiJ29uZScsIDAsIC0yKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJmaW5kKGInb25lJywgMSwgLTEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYidvbmUnLCAxLCAtMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYnl0ZWFycmF5KGInb25lJykpLCA4KQogCiAKICAgICBkZWYgdGVzdF9kb3VibGVfY2xvc2Uoc2VsZik6CkBAIC02MDEsOCArNjAzLDEwIEBACiAgICAgICAgIG0ud3JpdGUoYiJiYXIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udGVsbCgpLCA2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bOl0sIGIiMDEyYmFyNjc4OSIpCi0gICAgICAgIG0uc2Vlayg4KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLndyaXRlLCBiImJhciIpCisgICAgICAgIG0ud3JpdGUoYnl0ZWFycmF5KGIiYmF6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50ZWxsKCksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs6XSwgYiIwMTJiYXJiYXo5IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS53cml0ZSwgYiJiYSIpCiAKICAgICBkZWYgdGVzdF9ub25fYXNjaWlfYnl0ZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKDEyOSwgMjAwLCAyNTUpOiAjID4gMTI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CmluZGV4IDEyMzAyOTMuLjQ4YWIwYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CkBAIC0xLDggKzEsOCBAQAogIyBUZXN0IHRoZSBtb2R1bGUgdHlwZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZ2NfY29sbGVjdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBnY19jb2xsZWN0Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKIGltcG9ydCBzeXMKIE1vZHVsZVR5cGUgPSB0eXBlKHN5cykKQEAgLTMwLDYgKzMwLDIyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fZG9jX18sIE1vZHVsZVR5cGUuX19kb2NfXykKIAorICAgIGRlZiB0ZXN0X3VuaW50aWFsaXplZF9taXNzaW5nX2dldGF0dHIoc2VsZik6CisgICAgICAgICMgSXNzdWUgODI5NworICAgICAgICAjIHRlc3QgdGhlIHRleHQgaW4gdGhlIEF0dHJpYnV0ZUVycm9yIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbW9kdWxlCisgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUuX19uZXdfXyhNb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCAibW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgJ25vdF9oZXJlJyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgZm9vLCAibm90X2hlcmUiKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19nZXRhdHRyKHNlbGYpOgorICAgICAgICAjIElzc3VlIDgyOTcKKyAgICAgICAgIyB0ZXN0IHRoZSB0ZXh0IGluIHRoZSBBdHRyaWJ1dGVFcnJvcgorICAgICAgICBmb28gPSBNb2R1bGVUeXBlKCJmb28iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCAibW9kdWxlICdmb28nIGhhcyBubyBhdHRyaWJ1dGUgJ25vdF9oZXJlJyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgZm9vLCAibm90X2hlcmUiKQorCiAgICAgZGVmIHRlc3Rfbm9fZG9jc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJlZ3VsYXJseSBpbml0aWFsaXplZCBtb2R1bGUsIG5vIGRvY3N0cmluZwogICAgICAgICBmb28gPSBNb2R1bGVUeXBlKCJmb28iKQpAQCAtMjExLDEyICsyMjcsMTYgQEAKICAgICAgICAgICAgIGIibGVuID0gbGVuIiwKICAgICAgICAgICAgIGIic2h1dGlsLnJtdHJlZSA9IHJtdHJlZSJ9KQogCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcl9lcnJvcnNfcHJvcG9nYXRlKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcjoKKyAgICAgICAgICAgIGRlZiBfX2dldF9fKHNlbGYsIG8sIHQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBjbGFzcyBNKE1vZHVsZVR5cGUpOgorICAgICAgICAgICAgbWVsb24gPSBEZXNjcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZ2V0YXR0ciwgTSgibXltb2QiKSwgIm1lbG9uIikKKwogICAgICMgZnJvemVuIGFuZCBuYW1lc3BhY2UgbW9kdWxlIHJlcHJzIGFyZSB0ZXN0ZWQgaW4gaW1wb3J0bGliLgogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoTW9kdWxlVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQppbmRleCBjY2RhZWM3Li44ZWYzMzRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQpAQCAtMSw3ICsxLDcgQEAKICIiIiBUZXN0IHN1aXRlIGZvciB0aGUgY29kZSBpbiBtc2lsaWIgIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIG1zaWxpYiA9IGltcG9ydF9tb2R1bGUoJ21zaWxpYicpCiAKIGNsYXNzIFRlc3RfbWFrZV9pZCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOSw4ICszOSw1IEBACiAgICAgICAgICAgICBtc2lsaWIubWFrZV9pZCgiLnNceDgybz8qK3J0IiksICJfLnNfb19fX3J0IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCBkZTVmNzgyLi41MjI3M2VhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTEzLDEwICsxMyw5IEBACiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHB5X2NvbXBpbGUKIAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIsCi0gICAgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKKyAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHNwYXduX3B5dGhvbiwga2lsbF9weXRob24pCiAKICMgTG9vayB1cCB3aGljaCBzdGFydCBtZXRob2RzIGFyZSBhdmFpbGFibGUgdG8gdGVzdAogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpAQCAtMTU3LDEyICsxNTYsMTIgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LCBlcnIpCiAKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdF9ub19zdWZmaXgoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdF9zdWZmaXg9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKQEAgLTE3Myw3ICsxNzIsNyBAQAogICAgICAgICAjIGEgd29ya2Fyb3VuZCBmb3IgdGhhdCBjYXNlCiAgICAgICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pcHl0aG9uL2lweXRob24vaXNzdWVzLzQ2OTgKICAgICAgICAgc291cmNlID0gdGVzdF9zb3VyY2VfbWFpbl9za2lwcGVkX2luX2NoaWxkcmVuCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnaXB5dGhvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X25hbWUpCkBAIC0xODMsNyArMTgyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbm9fc3VmZml4KQogCiAgICAgZGVmIHRlc3Rfc2NyaXB0X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcpCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKQEAgLTE5MiwxNCArMTkxLDE0IEBACiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2RpcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9jb21waWxlZChzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQpAQCAtMjA5LDcgKzIwOCw3IEBACiAKICAgICBkZWYgdGVzdF96aXBmaWxlKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQpAQCAtMjE3LDcgKzIxNiw3IEBACiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgY29tcGlsZWRfbmFtZSA9IHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQpAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnY2hlY2tfc2libGluZycpCkBAIC0yMzQsMjAgKzIzMywyMCBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJywKQEAgLTI1Nyw3ICsyNTYsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9jb21waWxlZChzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25pcy5weSBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CmluZGV4IGEzYTNjMjYuLjM4N2E0ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CkBAIC0zNiw4ICszNiw1IEBACiAgICAgICAgICAgICBpZiBkb25lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChOaXNUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CmluZGV4IDVkYWM1ZGIuLjMwZmE2MTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBvcGVuX3VybHJlc291cmNlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgb3Blbl91cmxyZXNvdXJjZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KQEAgLTk3LDggKzk3LDUgQEAKICAgICAgICAgbm9ybWFsaXplKCdORkMnLCAnXHVkNTVjXHVhZTAwJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE5vcm1hbGl6YXRpb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IGRhY2RkZGUuLjU4MGYyMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC0zMzAsNiArMzMwLDc1IEBACiAgICAgICAgIHRlc3RlcignbnRwYXRoLnJlbHBhdGgoIi9hL2IiLCAiL2EvYiIpJywgJy4nKQogICAgICAgICB0ZXN0ZXIoJ250cGF0aC5yZWxwYXRoKCJjOi9mb28iLCAiQzovRk9PIiknLCAnLicpCiAKKyAgICBkZWYgdGVzdF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBkZWYgY2hlY2socGF0aHMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHRlc3RlcigoJ250cGF0aC5jb21tb25wYXRoKCVyKScgJSBwYXRocykucmVwbGFjZSgnXFxcXCcsICdcXCcpLAorICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBkZWYgY2hlY2tfZXJyb3IoZXhjLCBwYXRocyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIG50cGF0aC5jb21tb25wYXRoLCBwYXRocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3MuZnNlbmNvZGUocCkgZm9yIHAgaW4gcGF0aHNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLCBbXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydDOlxcUHJvZ3JhbSBGaWxlcycsICdQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnXFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXMnXSwgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlcyddLCAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2dyYW0gRmlsZXMnXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFwnXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcXFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxcXCddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFwuXFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFwuJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXCcsICdDOlxcYmluJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcYmluJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXEZvbycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2plY3RzJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcJywgJ0M6XFxQcm9qZWN0cyddLCAnQzpcXCcpCisKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ0M6L1Byb2dyYW0gRmlsZXMvQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXEZvbycsICdjOi9wcm9ncmFtIGZpbGVzL2JhciddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ2M6L3Byb2dyYW0gZmlsZXMvYmFyJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSwKKyAgICAgICAgICAgICAgJ2M6XFxwcm9ncmFtIGZpbGVzJykKKworICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0Q6XFxQcm9ncmFtIEZpbGVzJ10pCisKKyAgICAgICAgY2hlY2soWydzcGFtJ10sICdzcGFtJykKKyAgICAgICAgY2hlY2soWydzcGFtJywgJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kXFxcXGphbScsICdhbmRcXHNwYW1cXFxcJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZFxcLlxcamFtJywgJy5cXGFuZFxcc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nLCAnYW5kJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ0M6YW5kXFxqYW0nLCAnQzphbmRcXHNwYW0nXSwgJ0M6YW5kJykKKworICAgICAgICBjaGVjayhbJyddLCAnJykKKyAgICAgICAgY2hlY2soWycnLCAnc3BhbVxcYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWycnLCAnXFxzcGFtXFxhbG90J10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidDOlxcUHJvZ3JhbSBGaWxlcycsICdQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQzpcXFByb2dyYW0gRmlsZXMnLCBiJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydDOlxcUHJvZ3JhbSBGaWxlcycsIGInUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnUHJvZ3JhbSBGaWxlcycsIGInQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorCiAgICAgZGVmIHRlc3Rfc2FtZW9wZW5maWxlKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0ZjEsIFRlbXBvcmFyeUZpbGUoKSBhcyB0ZjI6CiAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2FtZSBmaWxlIGlzIHJlYWxseSB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CmluZGV4IDM0MjNkNGUuLmM1NGRlZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IHN5cwogaW1wb3J0IG9wZXJhdG9yCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbCBhcyBECiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24gYXMgRgpAQCAtMTk5LDggKzE5OCw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgdiwgeikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEhhc2hUZXN0LCBDb21wYXJpc29uVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CmluZGV4IGY1MTBiYWMuLjZlZjkzZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKQEAgLTEsNiArMSw1IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDIsIG9wY29kZXMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9wY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTA1LDggKzEwNCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlTdHJpbmcoKSAlIDMsIDQyKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoT3Bjb2RlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5CmluZGV4IDQ3ODUxMDcuLjNmNDZhNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkKQEAgLTEsNyArMSw2IEBACiAjIFRlc3QgdG8gc2VlIGlmIG9wZW5wdHkgd29ya3MuIChCdXQgZG9uJ3Qgd29ycnkgaWYgaXQgaXNuJ3QgYXZhaWxhYmxlLikKIAogaW1wb3J0IG9zLCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBpZiBub3QgaGFzYXR0cihvcywgIm9wZW5wdHkiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib3Mub3BlbnB0eSgpIG5vdCBhdmFpbGFibGUuIikKQEAgLTE4LDggKzE3LDUgQEAKICAgICAgICAgb3Mud3JpdGUoc2xhdmUsIGInUGluZyEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQobWFzdGVyLCAxMDI0KSwgYidQaW5nIScpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoT3BlbnB0eVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGFiNThhOTguLmRhOWM4ZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMSw0ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMjAzLDYgKzIwNSwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCwgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm11bCg1LCAyKSA9PSAxMCkKIAorICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1hdG11bCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tYXRtdWwsIDQyLCA0MikKKyAgICAgICAgY2xhc3MgTToKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgLSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTSgpIEAgNDIsIDQxKQorCiAgICAgZGVmIHRlc3RfbmVnKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubmVnKQpAQCAtMzg3LDYgKzM5OCw3IEBACiAgICAgZGVmIHRlc3RfbWV0aG9kY2FsbGVyKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWV0aG9kY2FsbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1ldGhvZGNhbGxlciwgMTIpCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdICsgYXJnc1sxXQpAQCAtNDE2LDYgKzQyOCw3IEBACiAgICAgICAgICAgICBkZWYgX19pbHNoaWZ0X18gIChzZWxmLCBvdGhlcik6IHJldHVybiAiaWxzaGlmdCIKICAgICAgICAgICAgIGRlZiBfX2ltb2RfXyAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbW9kIgogICAgICAgICAgICAgZGVmIF9faW11bF9fICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImltdWwiCisgICAgICAgICAgICBkZWYgX19pbWF0bXVsX18gIChzZWxmLCBvdGhlcik6IHJldHVybiAiaW1hdG11bCIKICAgICAgICAgICAgIGRlZiBfX2lvcl9fICAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpb3IiCiAgICAgICAgICAgICBkZWYgX19pcG93X18gICAgIChzZWxmLCBvdGhlcik6IHJldHVybiAiaXBvdyIKICAgICAgICAgICAgIGRlZiBfX2lyc2hpZnRfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpcnNoaWZ0IgpAQCAtNDMwLDYgKzQ0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaWxzaGlmdCAgKGMsIDUpLCAiaWxzaGlmdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW1vZCAgICAgKGMsIDUpLCAiaW1vZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW11bCAgICAgKGMsIDUpLCAiaW11bCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW1hdG11bCAgKGMsIDUpLCAiaW1hdG11bCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW9yICAgICAgKGMsIDUpLCAiaW9yIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pcG93ICAgICAoYywgNSksICJpcG93IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pcnNoaWZ0ICAoYywgNSksICJpcnNoaWZ0IikKQEAgLTQ4MCw1ICs0OTQsMTA3IEBACiBjbGFzcyBDT3BlcmF0b3JUZXN0Q2FzZShPcGVyYXRvclRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY19vcGVyYXRvcgogCisKK2NsYXNzIE9wZXJhdG9yUGlja2xlVGVzdENhc2U6CisgICAgZGVmIGNvcHkoc2VsZiwgb2JqLCBwcm90byk6CisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2l0ZW0oc3lzLm1vZHVsZXMsICdvcGVyYXRvcicsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHBpY2tsZWQgPSBwaWNrbGUuZHVtcHMob2JqLCBwcm90bykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShzeXMubW9kdWxlcywgJ29wZXJhdG9yJywgc2VsZi5tb2R1bGUyKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlZCkKKworICAgIGRlZiB0ZXN0X2F0dHJnZXR0ZXIoc2VsZik6CisgICAgICAgIGF0dHJnZXR0ZXIgPSBzZWxmLm1vZHVsZS5hdHRyZ2V0dGVyCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGEgPSBBKCkKKyAgICAgICAgYS54ID0gJ1gnCisgICAgICAgIGEueSA9ICdZJworICAgICAgICBhLnogPSAnWicKKyAgICAgICAgYS50ID0gQSgpCisgICAgICAgIGEudC51ID0gQSgpCisgICAgICAgIGEudC51LnYgPSAnVicKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgZiA9IGF0dHJnZXR0ZXIoJ3gnKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIG11bHRpcGxlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigneCcsICd5JywgJ3onKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIHJlY3Vyc2l2ZSBnZXRzCisgICAgICAgICAgICAgICAgZiA9IGF0dHJnZXR0ZXIoJ3QudS52JykKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZjIpLCByZXByKGYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIoYSksIGYoYSkpCisKKyAgICBkZWYgdGVzdF9pdGVtZ2V0dGVyKHNlbGYpOgorICAgICAgICBpdGVtZ2V0dGVyID0gc2VsZi5tb2R1bGUuaXRlbWdldHRlcgorICAgICAgICBhID0gJ0FCQ0RFJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gaXRlbWdldHRlcigyKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIG11bHRpcGxlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gaXRlbWdldHRlcigyLCAwLCA0KQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworICAgIGRlZiB0ZXN0X21ldGhvZGNhbGxlcihzZWxmKToKKyAgICAgICAgbWV0aG9kY2FsbGVyID0gc2VsZi5tb2R1bGUubWV0aG9kY2FsbGVyCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdICsgYXJnc1sxXQorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBmPTQyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgZGVmIGJheigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4ga3dkc1snbmFtZSddLCBrd2RzWydzZWxmJ10KKyAgICAgICAgYSA9IEEoKQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXInKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIHBvc2l0aW9uYWwgYXJncworICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2ZvbycsIDEsIDIpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMga2V5d29yZCBhcmdzCisgICAgICAgICAgICAgICAgZiA9IG1ldGhvZGNhbGxlcignYmFyJywgZj01KQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXonLCBzZWxmPSdlZ2dzJywgbmFtZT0nc3BhbScpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgIyBDYW4ndCB0ZXN0IHJlcHIgY29uc2lzdGVudGx5IHdpdGggbXVsdGlwbGUga2V5d29yZCBhcmdzCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworY2xhc3MgUHlQeU9wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IHB5X29wZXJhdG9yCisgICAgbW9kdWxlMiA9IHB5X29wZXJhdG9yCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfb3BlcmF0b3IsICdyZXF1aXJlcyBfb3BlcmF0b3InKQorY2xhc3MgUHlDT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gcHlfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gY19vcGVyYXRvcgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX29wZXJhdG9yLCAncmVxdWlyZXMgX29wZXJhdG9yJykKK2NsYXNzIENQeU9wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gcHlfb3BlcmF0b3IKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19vcGVyYXRvciwgJ3JlcXVpcmVzIF9vcGVyYXRvcicpCitjbGFzcyBDQ09wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gY19vcGVyYXRvcgorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zLnB5IGIvTGliL3Rlc3QvdGVzdF9vcy5weQppbmRleCAwZDQ5Yjk5Li42NTgxZTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVycm5vCiBpbXBvcnQgZnJhY3Rpb25zCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvY2FsZQogaW1wb3J0IG1tYXAKQEAgLTQwLDggKzQxLDM0IEBACiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF93aW5hcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfd2luYXBpID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBncnAKKyAgICBncm91cHMgPSBbZy5ncl9naWQgZm9yIGcgaW4gZ3JwLmdldGdyYWxsKCkgaWYgZ2V0cGFzcy5nZXR1c2VyKCkgaW4gZy5ncl9tZW1dCisgICAgaWYgaGFzYXR0cihvcywgJ2dldGdpZCcpOgorICAgICAgICBwcm9jZXNzX2dpZCA9IG9zLmdldGdpZCgpCisgICAgICAgIGlmIHByb2Nlc3NfZ2lkIG5vdCBpbiBncm91cHM6CisgICAgICAgICAgICBncm91cHMuYXBwZW5kKHByb2Nlc3NfZ2lkKQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdyb3VwcyA9IFtdCit0cnk6CisgICAgaW1wb3J0IHB3ZAorICAgIGFsbF91c2VycyA9IFt1LnB3X3VpZCBmb3IgdSBpbiBwd2QuZ2V0cHdhbGwoKV0KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBhbGxfdXNlcnMgPSBbXQordHJ5OgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBJTlRfTUFYLCBQWV9TU0laRV9UX01BWAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIElOVF9NQVggPSBQWV9TU0laRV9UX01BWCA9IHN5cy5tYXhzaXplCiAKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCisKK3Jvb3RfaW5fcG9zaXggPSBGYWxzZQoraWYgaGFzYXR0cihvcywgJ2dldGV1aWQnKToKKyAgICByb290X2luX3Bvc2l4ID0gKG9zLmdldGV1aWQoKSA9PSAwKQogCiAjIERldGVjdCB3aGV0aGVyIHdlJ3JlIG9uIGEgTGludXggc3lzdGVtIHRoYXQgdXNlcyB0aGUgKG5vdyBvdXRkYXRlZAogIyBhbmQgdW5tYWludGFpbmVkKSBsaW51eHRocmVhZHMgdGhyZWFkaW5nIGxpYnJhcnkuICBUaGVyZSdzIGFuIGlzc3VlCkBAIC0xMDYsNiArMTMzLDI2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUocyksIGJ5dGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBiInNwYW0iKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIDMyLWJpdCBwbGF0Zm9ybXM6IHRoZSBudW1iZXIgb2YgYnl0ZXMgbXVzdCBmaXQgaW4gYQorICAgICMgUHlfc3NpemVfdCB0eXBlCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcyBJTlRfTUFYIDwgUFlfU1NJWkVfVF9NQVgiKQorICAgIEBzdXBwb3J0LmJpZ21lbXRlc3Qoc2l6ZT1JTlRfTUFYICsgMTAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQorICAgIGRlZiB0ZXN0X2xhcmdlX3JlYWQoc2VsZiwgc2l6ZSk6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiJ3Rlc3QnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgICMgSXNzdWUgIzIxOTMyOiBNYWtlIHN1cmUgdGhhdCBvcy5yZWFkKCkgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yIGZvciBzaXplIGxhcmdlciB0aGFuIElOVF9NQVgKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKGZwLmZpbGVubygpLCBzaXplKQorCisgICAgICAgICMgVGhlIHRlc3QgZG9lcyBub3QgdHJ5IHRvIHJlYWQgbW9yZSB0aGFuIDIgR0IgYXQgb25jZSBiZWNhdXNlIHRoZQorICAgICAgICAjIG9wZXJhdGluZyBzeXN0ZW0gaXMgZnJlZSB0byByZXR1cm4gbGVzcyBieXRlcyB0aGFuIHJlcXVlc3RlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiJ3Rlc3QnKQorCiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgICMgb3Mud3JpdGUoKSBhY2NlcHRzIGJ5dGVzLSBhbmQgYnVmZmVyLWxpa2Ugb2JqZWN0cyBidXQgbm90IHN0cmluZ3MKICAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX0NSRUFUIHwgb3MuT19XUk9OTFkpCkBAIC0zNTAsNiArMzk3LDI4IEBACiAgICAgICAgICAgICBvcy5zdGF0KHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCiAKKyAgICBkZWYgY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlc3VsdCwgJ3N0X2ZpbGVfYXR0cmlidXRlcycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShyZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzLCBpbnQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSByZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzIDw9IDB4RkZGRkZGRkYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3RfZmlsZV9hdHRyaWJ1dGVzIGlzIFdpbjMyIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9maWxlX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgdGVzdCBmaWxlIHN0X2ZpbGVfYXR0cmlidXRlcyAoRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZIG5vdCBzZXQpCisgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc2VsZi5mbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19maWxlX2F0dHJpYnV0ZXMocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZLAorICAgICAgICAgICAgMCkKKworICAgICAgICAjIHRlc3QgZGlyZWN0b3J5IHN0X2ZpbGVfYXR0cmlidXRlcyAoRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZIHNldCkKKyAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5jaGVja19maWxlX2F0dHJpYnV0ZXMocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZLAorICAgICAgICAgICAgc3RhdC5GSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisKIAogY2xhc3MgVXRpbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtOTUyLDE3ICsxMDIxLDYgQEAKICAgICAgICAgb3MubWFrZWRpcnMocGF0aCwgbW9kZT1tb2RlLCBleGlzdF9vaz1UcnVlKQogICAgICAgICBvcy51bWFzayhvbGRfbWFzaykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAndGVzdCBuZWVkcyBvcy5jaG93bicpCi0gICAgZGVmIHRlc3RfY2hvd25fdWlkX2dpZF9hcmd1bWVudHNfbXVzdF9iZV9pbmRleChzZWxmKToKLSAgICAgICAgc3RhdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHVpZCA9IHN0YXQuc3RfdWlkCi0gICAgICAgIGdpZCA9IHN0YXQuc3RfZ2lkCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoLTEuMCwgLTFqLCBkZWNpbWFsLkRlY2ltYWwoLTEpLCBmcmFjdGlvbnMuRnJhY3Rpb24oLTIsIDIpKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MuY2hvd24sIHN1cHBvcnQuVEVTVEZOLCB2YWx1ZSwgZ2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHVpZCwgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWQsIGdpZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCAtMSwgLTEpKQotCiAgICAgZGVmIHRlc3RfZXhpc3Rfb2tfc19pc2dpZF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKICAgICAgICAgU19JU0dJRCA9IHN0YXQuU19JU0dJRApAQCAtMTAxMyw2ICsxMDcxLDU4IEBACiAgICAgICAgIG9zLnJlbW92ZWRpcnMocGF0aCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgIlRlc3QgbmVlZHMgY2hvd24iKQorY2xhc3MgQ2hvd25GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwQ2xhc3MoKToKKyAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgdGVzdF9jaG93bl91aWRfZ2lkX2FyZ3VtZW50c19tdXN0X2JlX2luZGV4KHNlbGYpOgorICAgICAgICBzdGF0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgdWlkID0gc3RhdC5zdF91aWQKKyAgICAgICAgZ2lkID0gc3RhdC5zdF9naWQKKyAgICAgICAgZm9yIHZhbHVlIGluICgtMS4wLCAtMWosIGRlY2ltYWwuRGVjaW1hbCgtMSksIGZyYWN0aW9ucy5GcmFjdGlvbigtMiwgMikpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHZhbHVlLCBnaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdWlkLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIC0xLCAtMSkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsZW4oZ3JvdXBzKSA+IDEsICJ0ZXN0IG5lZWRzIG1vcmUgdGhhbiBvbmUgZ3JvdXAiKQorICAgIGRlZiB0ZXN0X2Nob3duKHNlbGYpOgorICAgICAgICBnaWRfMSwgZ2lkXzIgPSBncm91cHNbOjJdCisgICAgICAgIHVpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X3VpZAorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkLCBnaWRfMSkKKyAgICAgICAgZ2lkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfZ2lkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBnaWRfMSkKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkXzIpCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpZCwgZ2lkXzIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhyb290X2luX3Bvc2l4IGFuZCBsZW4oYWxsX3VzZXJzKSA+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgcm9vdCBwcml2aWxlZ2UgYW5kIG1vcmUgdGhhbiBvbmUgdXNlciIpCisgICAgZGVmIHRlc3RfY2hvd25fd2l0aF9yb290KHNlbGYpOgorICAgICAgICB1aWRfMSwgdWlkXzIgPSBhbGxfdXNlcnNbOjJdCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzEsIGdpZCkKKyAgICAgICAgdWlkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfdWlkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodWlkLCB1aWRfMSkKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZF8yLCBnaWQpCisgICAgICAgIHVpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X3VpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVpZCwgdWlkXzIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhub3Qgcm9vdF9pbl9wb3NpeCBhbmQgbGVuKGFsbF91c2VycykgPiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIG5vbi1yb290IGFjY291bnQgYW5kIG1vcmUgdGhhbiBvbmUgdXNlciIpCisgICAgZGVmIHRlc3RfY2hvd25fd2l0aG91dF9wZXJtaXNzaW9uKHNlbGYpOgorICAgICAgICB1aWRfMSwgdWlkXzIgPSBhbGxfdXNlcnNbOjJdCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcik6CisgICAgICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzEsIGdpZCkKKyAgICAgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWRfMiwgZ2lkKQorCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoKToKKyAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCisKKwogY2xhc3MgUmVtb3ZlRGlyc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIG9zLm1ha2VkaXJzKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTA5Niw5ICsxMjA2LDEyIEBACiAKIAogSEFWRV9HRVRFTlRST1BZID0gKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRFTlRST1BZJykgPT0gMSkKK0hBVkVfR0VUUkFORE9NID0gKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCcpID09IDEpCiAKIEB1bml0dGVzdC5za2lwSWYoSEFWRV9HRVRFTlRST1BZLAogICAgICAgICAgICAgICAgICAiZ2V0ZW50cm9weSgpIGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvciIpCitAdW5pdHRlc3Quc2tpcElmKEhBVkVfR0VUUkFORE9NLAorICAgICAgICAgICAgICAgICAiZ2V0cmFuZG9tKCkgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIikKIGNsYXNzIFVSYW5kb21GRFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhyZXNvdXJjZSwgInRlc3QgcmVxdWlyZXMgdGhlIHJlc291cmNlIG1vZHVsZSIpCiAgICAgZGVmIHRlc3RfdXJhbmRvbV9mYWlsdXJlKHNlbGYpOgpAQCAtMTEyOSw4ICsxMjQyLDEwIEBACiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0CiAgICAgICAgICAgICBvcy51cmFuZG9tKDQpCi0gICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCiAgICAgICAgICAgICAiIiIKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVNjJywgY29kZSkKQEAgLTExNDQsMTYgKzEyNTksMTggQEAKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnN1cHBvcnQKICAgICAgICAgICAgIG9zLnVyYW5kb20oNCkKLSAgICAgICAgICAgIGZvciBmZCBpbiByYW5nZSgzLCAyNTYpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIEZvdW5kIHRoZSB1cmFuZG9tIGZkIChYWFggaG9wZWZ1bGx5KQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgICAgICAgICAgICAgZm9yIGZkIGluIHJhbmdlKDMsIDI1Nik6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRm91bmQgdGhlIHVyYW5kb20gZmQgKFhYWCBob3BlZnVsbHkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2UoMywgMjU2KQogICAgICAgICAgICAgd2l0aCBvcGVuKHtURVNURk4hcn0sICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICAgb3MuZHVwMihmLmZpbGVubygpLCBmZCkKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShvcy51cmFuZG9tKDQpKQpAQCAtMTM3OSw2ICsxNDk2LDE2IEBACiAgICAgZGVmIHRlc3Rfd3JpdGV2KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKG9zLndyaXRldiwgW2InYWJjJ10pCiAKKyAgICBkZWYgdGVzdF9pbmhlcml0YWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjayhvcy5nZXRfaW5oZXJpdGFibGUpCisgICAgICAgIHNlbGYuY2hlY2sob3Muc2V0X2luaGVyaXRhYmxlLCBUcnVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF9ibG9ja2luZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQorICAgIGRlZiB0ZXN0X2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKG9zLmdldF9ibG9ja2luZykKKyAgICAgICAgc2VsZi5jaGVjayhvcy5zZXRfYmxvY2tpbmcsIFRydWUpCisKIAogY2xhc3MgTGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xODI2LDYgKzE5NTMsMzcgQEAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobGV2ZWwxKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJKdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBqdW5jdGlvbiA9ICdqdW5jdGlvbnRlc3QnCisgICAganVuY3Rpb25fdGFyZ2V0ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uX3RhcmdldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKToKKyAgICAgICAgICAgICMgb3Mucm1kaXIgZGVsZWdhdGVzIHRvIFdpbmRvd3MnIFJlbW92ZURpcmVjdG9yeVcsCisgICAgICAgICAgICAjIHdoaWNoIHJlbW92ZXMganVuY3Rpb24gcG9pbnRzIHNhZmVseS4KKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuanVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfanVuY3Rpb24oc2VsZik6CisgICAgICAgIF93aW5hcGkuQ3JlYXRlSnVuY3Rpb24oc2VsZi5qdW5jdGlvbl90YXJnZXQsIHNlbGYuanVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc2VsZi5qdW5jdGlvbikpCisKKyAgICAgICAgIyBKdW5jdGlvbnMgYXJlIG5vdCByZWNvZ25pemVkIGFzIGxpbmtzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKHNlbGYuanVuY3Rpb24pKQorCisgICAgZGVmIHRlc3RfdW5saW5rX3JlbW92ZXNfanVuY3Rpb24oc2VsZik6CisgICAgICAgIF93aW5hcGkuQ3JlYXRlSnVuY3Rpb24oc2VsZi5qdW5jdGlvbl90YXJnZXQsIHNlbGYuanVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKworICAgICAgICBvcy51bmxpbmsoc2VsZi5qdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKworCiBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiBjbGFzcyBOb25Mb2NhbFN5bWxpbmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwMzIsMTEgKzIxOTAsMTMgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnRocmVhZGluZ19jbGVhbnVwKCpjbHMua2V5KQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTI1NjMsNDMgKzI3MjMsMjUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2luaGVyaXRhYmxlKHNsYXZlX2ZkKSwgRmFsc2UpCiAKIAotQHN1cHBvcnQucmVhcF90aHJlYWRzCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIEZpbGVUZXN0cywKLSAgICAgICAgU3RhdEF0dHJpYnV0ZVRlc3RzLAotICAgICAgICBVdGltZVRlc3RzLAotICAgICAgICBFbnZpcm9uVGVzdHMsCi0gICAgICAgIFdhbGtUZXN0cywKLSAgICAgICAgRndhbGtUZXN0cywKLSAgICAgICAgTWFrZWRpclRlc3RzLAotICAgICAgICBEZXZOdWxsVGVzdHMsCi0gICAgICAgIFVSYW5kb21UZXN0cywKLSAgICAgICAgVVJhbmRvbUZEVGVzdHMsCi0gICAgICAgIEV4ZWNUZXN0cywKLSAgICAgICAgV2luMzJFcnJvclRlc3RzLAotICAgICAgICBUZXN0SW52YWxpZEZELAotICAgICAgICBQb3NpeFVpZEdpZFRlc3RzLAotICAgICAgICBQZXAzODNUZXN0cywKLSAgICAgICAgV2luMzJLaWxsVGVzdHMsCi0gICAgICAgIFdpbjMyTGlzdGRpclRlc3RzLAotICAgICAgICBXaW4zMlN5bWxpbmtUZXN0cywKLSAgICAgICAgTm9uTG9jYWxTeW1saW5rVGVzdHMsCi0gICAgICAgIEZTRW5jb2RpbmdUZXN0cywKLSAgICAgICAgRGV2aWNlRW5jb2RpbmdUZXN0cywKLSAgICAgICAgUGlkVGVzdHMsCi0gICAgICAgIExvZ2luVGVzdHMsCi0gICAgICAgIExpbmtUZXN0cywKLSAgICAgICAgVGVzdFNlbmRmaWxlLAotICAgICAgICBQcm9ncmFtUHJpb3JpdHlUZXN0cywKLSAgICAgICAgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cywKLSAgICAgICAgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEksCi0gICAgICAgIFRlcm1zaXplVGVzdHMsCi0gICAgICAgIE9TRXJyb3JUZXN0cywKLSAgICAgICAgUmVtb3ZlRGlyc1Rlc3RzLAotICAgICAgICBDUFVDb3VudFRlc3RzLAotICAgICAgICBGREluaGVyaXRhbmNlVGVzdHMsCi0gICAgKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF9ibG9ja2luZycpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWRzIG9zLmdldF9ibG9ja2luZygpIGFuZCBvcy5zZXRfYmxvY2tpbmcoKScpCitjbGFzcyBCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfYmxvY2tpbmcoZmQpLCBUcnVlKQorCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhmZCwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2Jsb2NraW5nKGZkKSwgRmFsc2UpCisKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9ibG9ja2luZyhmZCksIFRydWUpCisKKworCitjbGFzcyBFeHBvcnRzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X29zX2FsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbignb3BlbicsIG9zLl9fYWxsX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dhbGsnLCBvcy5fX2FsbF9fKQorCisKK2NsYXNzIFRlc3RTY2FuZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5wYXRoKQorICAgICAgICBvcy5ta2RpcihzZWxmLnBhdGgpCisKKyAgICBkZWYgY3JlYXRlX2ZpbGUoc2VsZiwgbmFtZT0iZmlsZS50eHQiKToKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYidweXRob24nKQorICAgICAgICByZXR1cm4gZmlsZW5hbWUKKworICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CisgICAgICAgIGVudHJpZXMgPSBkaWN0KChlbnRyeS5uYW1lLCBlbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZW50cmllcy5rZXlzKCkpLCBuYW1lcykKKyAgICAgICAgcmV0dXJuIGVudHJpZXMKKworICAgIGRlZiBhc3NlcnRfc3RhdF9lcXVhbChzZWxmLCBzdGF0MSwgc3RhdDIsIHNraXBfZmllbGRzKToKKyAgICAgICAgaWYgc2tpcF9maWVsZHM6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIoc3RhdDEpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgoInN0XyIpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGF0dHIgaW4gKCJzdF9kZXYiLCAic3RfaW5vIiwgInN0X25saW5rIik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHN0YXQxLCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc3RhdDIsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXQxLCBzdGF0MiwgYXR0cikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQxLCBzdGF0MikKKworICAgIGRlZiBjaGVja19lbnRyeShzZWxmLCBlbnRyeSwgbmFtZSwgaXNfZGlyLCBpc19maWxlLCBpc19zeW1saW5rKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LnBhdGgsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lmlub2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChlbnRyeS5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lubykKKworICAgICAgICBlbnRyeV9zdGF0ID0gb3Muc3RhdChlbnRyeS5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU0RJUihlbnRyeV9zdGF0LnN0X21vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2ZpbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNSRUcoZW50cnlfc3RhdC5zdF9tb2RlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19zeW1saW5rKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5pc2xpbmsoZW50cnkucGF0aCkpCisKKyAgICAgICAgZW50cnlfbHN0YXQgPSBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19kaXIoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNESVIoZW50cnlfbHN0YXQuc3RfbW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfZmlsZShmb2xsb3dfc3ltbGlua3M9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU1JFRyhlbnRyeV9sc3RhdC5zdF9tb2RlKSkKKworICAgICAgICBzZWxmLmFzc2VydF9zdGF0X2VxdWFsKGVudHJ5LnN0YXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeV9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLm5hbWUgPT0gJ250JyBhbmQgbm90IGlzX3N5bWxpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0X3N0YXRfZXF1YWwoZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5X2xzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLm5hbWUgPT0gJ250JykKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGxpbmsgPSBoYXNhdHRyKG9zLCAnbGluaycpCisgICAgICAgIHN5bWxpbmsgPSBzdXBwb3J0LmNhbl9zeW1saW5rKCkKKworICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgImRpciIpCisgICAgICAgIG9zLm1rZGlyKGRpcm5hbWUpCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBpZiBsaW5rOgorICAgICAgICAgICAgb3MubGluayhmaWxlbmFtZSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgImxpbmtfZmlsZS50eHQiKSkKKyAgICAgICAgaWYgc3ltbGluazoKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoZGlybmFtZSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgInN5bWxpbmtfZGlyIiksCisgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoZmlsZW5hbWUsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJzeW1saW5rX2ZpbGUudHh0IikpCisKKyAgICAgICAgbmFtZXMgPSBbJ2RpcicsICdmaWxlLnR4dCddCisgICAgICAgIGlmIGxpbms6CisgICAgICAgICAgICBuYW1lcy5hcHBlbmQoJ2xpbmtfZmlsZS50eHQnKQorICAgICAgICBpZiBzeW1saW5rOgorICAgICAgICAgICAgbmFtZXMuZXh0ZW5kKCgnc3ltbGlua19kaXInLCAnc3ltbGlua19maWxlLnR4dCcpKQorICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfZW50cmllcyhuYW1lcykKKworICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ2RpciddCisgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdkaXInLCBUcnVlLCBGYWxzZSwgRmFsc2UpCisKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWydmaWxlLnR4dCddCisgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdmaWxlLnR4dCcsIEZhbHNlLCBUcnVlLCBGYWxzZSkKKworICAgICAgICBpZiBsaW5rOgorICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzWydsaW5rX2ZpbGUudHh0J10KKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdsaW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIEZhbHNlKQorCisgICAgICAgIGlmIHN5bWxpbms6CisgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ3N5bWxpbmtfZGlyJ10KKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2RpcicsIFRydWUsIEZhbHNlLCBUcnVlKQorCisgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ3N5bWxpbmtfZmlsZS50eHQnXQorICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKKworICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6CisgICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEpCisKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5CisKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9lbnRyeShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKKworICAgIGRlZiB0ZXN0X2N1cnJlbnRfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoKQorICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoc2VsZi5wYXRoKQorCisgICAgICAgICAgICAjIGNhbGwgc2NhbmRpcigpIHdpdGhvdXQgcGFyYW1ldGVyOiBpdCBtdXN0IGxpc3QgdGhlIGNvbnRlbnQKKyAgICAgICAgICAgICMgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICAgICAgICAgICBlbnRyaWVzID0gZGljdCgoZW50cnkubmFtZSwgZW50cnkpIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChlbnRyaWVzLmtleXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVkX2RpcihzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdkaXInKQorCisgICAgICAgIG9zLm1rZGlyKHBhdGgpCisgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfZW50cnkoJ2RpcicpCisgICAgICAgIG9zLnJtZGlyKHBhdGgpCisKKyAgICAgICAgIyBPbiBQT1NJWCwgaXNfZGlyKCkgcmVzdWx0IGRlcGVuZHMgaWYgc2NhbmRpcigpIGZpbGxlZCBkX3R5cGUgb3Igbm90CisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfc3ltbGluaygpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuaW5vZGUpCisgICAgICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoKQorICAgICAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3JlbW92ZWRfZmlsZShzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKKyAgICAgICAgb3MudW5saW5rKGVudHJ5LnBhdGgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgIyBPbiBQT1NJWCwgaXNfZGlyKCkgcmVzdWx0IGRlcGVuZHMgaWYgc2NhbmRpcigpIGZpbGxlZCBkX3R5cGUgb3Igbm90CisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfc3ltbGluaygpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuaW5vZGUpCisgICAgICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoKQorICAgICAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9zeW1saW5rKHNlbGYpOgorICAgICAgICBpZiBub3Qgc3VwcG9ydC5jYW5fc3ltbGluaygpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2tpcFRlc3QoJ2Nhbm5vdCBjcmVhdGUgc3ltYm9saWMgbGluaycpCisKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIG9zLnN5bWxpbmsoZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgInN5bWxpbmsudHh0IikpCisgICAgICAgIGVudHJpZXMgPSBzZWxmLmdldF9lbnRyaWVzKFsnZmlsZS50eHQnLCAnc3ltbGluay50eHQnXSkKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWydzeW1saW5rLnR4dCddCisgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKCkpICAjIGJyb2tlbiBzeW1saW5rIHJldHVybnMgRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKGZvbGxvd19zeW1saW5rcz1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19zeW1saW5rKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9ieXRlcyhzZWxmKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgIyBPbiBXaW5kb3dzLCBvcy5zY2FuZGlyKGJ5dGVzKSBtdXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zY2FuZGlyLCBiJy4nKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorCisgICAgICAgIHBhdGhfYnl0ZXMgPSBvcy5mc2VuY29kZShzZWxmLnBhdGgpCisgICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIocGF0aF9ieXRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMpLCAxLCBlbnRyaWVzKQorICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIGInZmlsZS50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZnNlbmNvZGUob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnNjYW5kaXIsICcnKQorCisgICAgZGVmIHRlc3RfY29uc3VtZV9pdGVyYXRvcl90d2ljZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorCisgICAgICAgIGVudHJpZXMgPSBsaXN0KGl0ZXJhdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSwgZW50cmllcykKKworICAgICAgICAjIGNoZWNrIHRoYW4gY29uc3VtaW5nIHRoZSBpdGVyYXRvciB0d2ljZSBkb2Vzbid0IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICBlbnRyaWVzMiA9IGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMyKSwgMCwgZW50cmllczIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGF0aF90eXBlKHNlbGYpOgorICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQppbmRleCBkOGViOTgxLi44YTNiYzVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CkBAIC0yLDcgKzIsNyBAQAogVGVzdCBzdWl0ZSBmb3IgT1MgWCBpbnRlcnByZXRlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAiIiIKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGU3OTY4Y2MuLjcwODIyNzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogCiAjCiAjICBGaXJzdCwgd2UgdGVzdCB0aGF0IHdlIGNhbiBnZW5lcmF0ZSB0cmVlcyBmcm9tIHZhbGlkIHNvdXJjZSBmcmFnbWVudHMsCkBAIC02Myw2ICs2MywyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKHlpZWxkKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICB5aWVsZCB4XG4iKQogCisgICAgZGVmIHRlc3RfYXdhaXRfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGF3YWl0IHNtdGgoKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gZm9vID0gYXdhaXQgc210aCgpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBmb28sIGJhciA9IGF3YWl0IHNtdGgoKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gKGF3YWl0IHNtdGgoKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGZvbygoYXdhaXQgc210aCgpKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGF3YWl0IGZvbygpOyByZXR1cm4gNDIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgd2l0aCAxOiBwYXNzIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyB3aXRoIGEgYXMgYiwgYyBhcyBkOiBwYXNzIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX2Zvcl9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgZm9yIGkgaW4gKCk6IHBhc3MiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGFzeW5jIGZvciBpLCBiIGluICgpOiBwYXNzIikKKwogICAgIGRlZiB0ZXN0X25vbmxvY2FsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHggPSAwXG4iCkBAIC0zMTMsNyArMzI5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdCBFeGNlcHRpb24gYXMgZTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJhaXNlIFZhbHVlRXJyb3IgZnJvbSBlXG4iKQogCisgICAgZGVmIHRlc3RfbGlzdF9kaXNwbGF5cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdbXScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignWyp7Mn0sIDMsICpbNF1dJykKKwogICAgIGRlZiB0ZXN0X3NldF9kaXNwbGF5cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19leHByKCd7KnsyfSwgMywgKls0XX0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3syfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcignezIsfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcignezIsIDN9JykKQEAgLTMyNSw2ICszNDYsMTMgQEAKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7YTpiLH0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3thOmIsIGM6ZH0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3thOmIsIGM6ZCx9JykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCd7Kip7fX0nKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3sqKnt9LCAzOjQsICoqezU6NiwgNzo4fX0nKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRfdW5wYWNraW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ2YoYSwgKmIsICpjLCAqZCknKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ2YoKiphLCAqKmIpJykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdmKDIsICphLCAqYiwgKipiLCAqKmMsICoqZCknKQogCiAgICAgZGVmIHRlc3Rfc2V0X2NvbXByZWhlbnNpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3t4IGZvciB4IGluIHNlcX0nKQpAQCAtNzMwLDE2ICs3NTgsNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBwYXJzZXIuZXhwcigiYSIsICJiIikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBSb3VuZHRyaXBMZWdhbFN5bnRheFRlc3RDYXNlLAotICAgICAgICBJbGxlZ2FsU3ludGF4VGVzdENhc2UsCi0gICAgICAgIENvbXBpbGVUZXN0Q2FzZSwKLSAgICAgICAgUGFyc2VyU3RhY2tMaW1pdFRlc3RDYXNlLAotICAgICAgICBTVE9iamVjdFRlc3RDYXNlLAotICAgICAgICBPdGhlclBhcnNlckNhc2UsCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQppbmRleCAxMTQyMGUyLi4xYzUzYWI3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CkBAIC00LDEzICs0LDEwIEBACiBpbXBvcnQgZXJybm8KIGltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RhdAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBURVNURk4gPSBzdXBwb3J0LlRFU1RGTgpAQCAtNzQ3LDcgKzc0NCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9Tb21lL1NIQVJFL2EvQicpLCBQKCcvL3NvbUUvc2hhcmUvQS9iJykpCiAKICAgICBkZWYgdGVzdF9hc191cmkoc2VsZik6Ci0gICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5dGVzCiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgUCgnL2EvYicpLmFzX3VyaSgpCkBAIC0xMjY5LDExICsxMjY1LDU1IEBACiAgICAgICAgIHAgPSBzZWxmLmNscy5jd2QoKQogICAgICAgICBzZWxmLl90ZXN0X2N3ZChwKQogCisgICAgZGVmIF90ZXN0X2hvbWUoc2VsZiwgcCk6CisgICAgICAgIHEgPSBzZWxmLmNscyhvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgc3RyKHEpKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocCksIHR5cGUocSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2Fic29sdXRlKCkpCisKKyAgICBkZWYgdGVzdF9ob21lKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMuaG9tZSgpCisgICAgICAgIHNlbGYuX3Rlc3RfaG9tZShwKQorCisgICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIGZpbGVBX3BhdGggPSBvcy5wYXRoLmpvaW4oQkFTRSwgJ2ZpbGVBJykKKyAgICAgICAgZmlsZUJfcGF0aCA9IG9zLnBhdGguam9pbihCQVNFLCAnZGlyQicsICdmaWxlQicpCisgICAgICAgIHAgPSBzZWxmLmNscyhmaWxlQV9wYXRoKQorICAgICAgICBwcCA9IHNlbGYuY2xzKGZpbGVBX3BhdGgpCisgICAgICAgIHEgPSBzZWxmLmNscyhmaWxlQl9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5zYW1lZmlsZShmaWxlQV9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuc2FtZWZpbGUocHApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuc2FtZWZpbGUoZmlsZUJfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5zYW1lZmlsZShxKSkKKyAgICAgICAgIyBUZXN0IHRoZSBub24tZXhpc3RlbnQgZmlsZSBjYXNlCisgICAgICAgIG5vbl9leGlzdGVudCA9IG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykKKyAgICAgICAgciA9IHNlbGYuY2xzKG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHAuc2FtZWZpbGUsIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBwLnNhbWVmaWxlLCBub25fZXhpc3RlbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnNhbWVmaWxlLCBwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgbm9uX2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIuc2FtZWZpbGUsIG5vbl9leGlzdGVudCkKKwogICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIGVtcHR5IHBhdGggcG9pbnRzIHRvICcuJwogICAgICAgICBwID0gc2VsZi5jbHMoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCksIG9zLnN0YXQoJy4nKSkKIAorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXJfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ34nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBQKG9zLnBhdGguZXhwYW5kdXNlcignficpKSkKKyAgICAgICAgcCA9IFAoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcvficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcuLi9+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9IFAoUCgnJykuYWJzb2x1dGUoKS5hbmNob3IpIC8gJ34nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisKICAgICBkZWYgdGVzdF9leGlzdHMoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFKQpAQCAtMTMwMSw2ICsxMzQxLDIzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZiwgaW8uUmF3SU9CYXNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKS5zdHJpcCgpLCBiInRoaXMgaXMgZmlsZSBBIikKIAorICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICAocCAvICdmaWxlQScpLndyaXRlX2J5dGVzKGInYWJjZGVmZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX2J5dGVzKCksIGInYWJjZGVmZycpCisgICAgICAgICMgY2hlY2sgdGhhdCB0cnlpbmcgdG8gd3JpdGUgc3RyIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgKHAgLyAnZmlsZUEnKS53cml0ZV9ieXRlcywgJ3NvbWVzdHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF9ieXRlcygpLCBiJ2FiY2RlZmcnKQorCisgICAgZGVmIHRlc3RfcmVhZF93cml0ZV90ZXh0KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgKHAgLyAnZmlsZUEnKS53cml0ZV90ZXh0KCfDpGJjZGVmZycsIGVuY29kaW5nPSdsYXRpbi0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfdGV4dCgKKyAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0naWdub3JlJyksICdiY2RlZmcnKQorICAgICAgICAjIGNoZWNrIHRoYXQgdHJ5aW5nIHRvIHdyaXRlIGJ5dGVzIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgKHAgLyAnZmlsZUEnKS53cml0ZV90ZXh0LCBiJ3NvbWVieXRlcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX3RleHQoZW5jb2Rpbmc9J2xhdGluLTEnKSwgJ8OkYmNkZWZnJykKKwogICAgIGRlZiB0ZXN0X2l0ZXJkaXIoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFKQpAQCAtMTYwNCw2ICsxNjYxLDU5IEBACiAgICAgICAgICMgdGhlIHBhcmVudCdzIHBlcm1pc3Npb25zIGZvbGxvdyB0aGUgZGVmYXVsdCBwcm9jZXNzIHNldHRpbmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHAucGFyZW50LnN0YXQoKS5zdF9tb2RlKSwgbW9kZSkKIAorICAgIGRlZiB0ZXN0X21rZGlyX2V4aXN0X29rKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckInKQorICAgICAgICBzdF9jdGltZV9maXJzdCA9IHAuc3RhdCgpLnN0X2N0aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5pc19kaXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHAubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCkuc3RfY3RpbWUsIHN0X2N0aW1lX2ZpcnN0KQorCisgICAgZGVmIHRlc3RfbWtkaXJfZXhpc3Rfb2tfd2l0aF9wYXJlbnQoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgcCA9IHAgLyAnbmV3ZGlyQycKKyAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIHN0X2N0aW1lX2ZpcnN0ID0gcC5zdGF0KCkuc3RfY3RpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCkuc3RfY3RpbWUsIHN0X2N0aW1lX2ZpcnN0KQorCisgICAgZGVmIHRlc3RfbWtkaXJfd2l0aF9jaGlsZF9maWxlKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckInLCAnZmlsZUInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgIyBBbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgYW4gZXhpc3RpbmcKKyAgICAgICAgIyByZWd1bGFyIGZpbGUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBleGlzdF9vayBpcyB0cnVlIG9yIG5vdC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCisgICAgZGVmIHRlc3RfbWtkaXJfbm9fcGFyZW50c19maWxlKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2ZpbGVBJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgICMgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgcmVndWxhciBmaWxlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZXhpc3Rfb2sgaXMgdHJ1ZSBvciBub3QuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3N5bWxpbmtfdG8oc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQpAQCAtMTg0Niw3ICsxOTU2LDYgQEAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfbG9vcChzZWxmKToKICAgICAgICAgIyBMb29wIGRldGVjdGlvbiBmb3IgYnJva2VuIHN5bWxpbmtzIHVuZGVyIFBPU0lYCi0gICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICAjIExvb3BzIHdpdGggcmVsYXRpdmUgc3ltbGlua3MKICAgICAgICAgb3Muc3ltbGluaygnbGlua1gvaW5zaWRlJywgam9pbignbGlua1gnKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWCcpCkBAIC0xODc4LDYgKzE5ODcsNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaXZlbiwgZXhwZWN0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLnJnbG9iKCJGSUxFZCoiKSksIHNldCgpKQogCisgICAgZGVmIHRlc3RfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgncHdkJykKKyAgICAgICAgaW1wb3J0IHB3ZAorICAgICAgICBwd2RlbnQgPSBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpCisgICAgICAgIHVzZXJuYW1lID0gcHdkZW50LnB3X25hbWUKKyAgICAgICAgdXNlcmhvbWUgPSBwd2RlbnQucHdfZGlyLnJzdHJpcCgnLycpCisgICAgICAgICMgZmluZCBhcmJpdHJhcnkgZGlmZmVyZW50IHVzZXIgKGlmIGV4aXN0cykKKyAgICAgICAgZm9yIHB3ZGVudCBpbiBwd2QuZ2V0cHdhbGwoKToKKyAgICAgICAgICAgIG90aGVybmFtZSA9IHB3ZGVudC5wd19uYW1lCisgICAgICAgICAgICBvdGhlcmhvbWUgPSBwd2RlbnQucHdfZGlyLnJzdHJpcCgnLycpCisgICAgICAgICAgICBpZiBvdGhlcm5hbWUgIT0gdXNlcm5hbWUgYW5kIG90aGVyaG9tZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHAxID0gUCgnfi9Eb2N1bWVudHMnKQorICAgICAgICBwMiA9IFAoJ34nICsgdXNlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHAzID0gUCgnficgKyBvdGhlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHA0ID0gUCgnLi4vficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDUgPSBQKCcvficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDYgPSBQKCcnKQorICAgICAgICBwNyA9IFAoJ35mYWtldXNlci9Eb2N1bWVudHMnKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52LnBvcCgnSE9NRScsIE5vbmUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLCBQKHVzZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAzLmV4cGFuZHVzZXIoKSwgUChvdGhlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHA3LmV4cGFuZHVzZXIpCisKKyAgICAgICAgICAgIGVudlsnSE9NRSddID0gJy90bXAnCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwgUCgnL3RtcC9Eb2N1bWVudHMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLCBQKHVzZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBhbmR1c2VyKCksIFAob3RoZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwNy5leHBhbmR1c2VyKQorCiAKIEBvbmx5X250CiBjbGFzcyBXaW5kb3dzUGF0aFRlc3QoX0Jhc2VQYXRoVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTg5Myw2ICsyMDQ0LDYxIEBACiAgICAgICAgIHAgPSBQKEJBU0UsICJkaXJDIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5yZ2xvYigiRklMRWQiKSksIHsgUChCQVNFLCAiZGlyQy9kaXJEL2ZpbGVEIikgfSkKIAorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnVVNFUlBST0ZJTEUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRVBBVEgnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRURSSVZFJywgTm9uZSkKKyAgICAgICAgICAgIGVudlsnVVNFUk5BTUUnXSA9ICdhbGljZScKKworICAgICAgICAgICAgIyB0ZXN0IHRoYXQgdGhlIHBhdGggcmV0dXJucyB1bmNoYW5nZWQKKyAgICAgICAgICAgIHAxID0gUCgnfi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDIgPSBQKCd+YWxpY2UvTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHAzID0gUCgnfmJvYi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDQgPSBQKCcvfi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDUgPSBQKCdkOn4vTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHA2ID0gUCgnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDEuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDIuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDMuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKworICAgICAgICAgICAgZGVmIGNoZWNrKCk6CisgICAgICAgICAgICAgICAgZW52LnBvcCgnVVNFUk5BTUUnLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYWxpY2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHAyLmV4cGFuZHVzZXIpCisgICAgICAgICAgICAgICAgZW52WydVU0VSTkFNRSddID0gJ2FsaWNlJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYWxpY2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBhbmR1c2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQKCdDOi9Vc2Vycy9ib2IvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZmlyc3QgbG9va3VwIGtleSBpbiB0aGUgZW52IHZhcnMKKyAgICAgICAgICAgIGVudlsnSE9NRSddID0gJ0M6XFxVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGF0IEhPTUVQQVRIIGlzIGF2YWlsYWJsZSBpbnN0ZWFkCisgICAgICAgICAgICBlbnYucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgICAgIGVudlsnSE9NRVBBVEgnXSA9ICdDOlxcVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCisgICAgICAgICAgICBlbnZbJ0hPTUVEUklWRSddID0gJ0M6XFwnCisgICAgICAgICAgICBlbnZbJ0hPTUVQQVRIJ10gPSAnVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCisgICAgICAgICAgICBlbnYucG9wKCdIT01FRFJJVkUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRVBBVEgnLCBOb25lKQorICAgICAgICAgICAgZW52WydVU0VSUFJPRklMRSddID0gJ0M6XFxVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKaW5kZXggNTAyNTc5Mi4uNDFlNTA5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKQEAgLTMxOSwyMSArMzE5LDUgQEAKICAgICAgICAgICAgIGYoKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBpbXBvcnQgc3lzCi0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgdGVzdF9jbGFzc2VzID0gKFRlc3RUcmFuZm9ybXMsIFRlc3RCdWdsZXRzKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKaW5kZXggYjg1YTI2YS4uYWI1ZjQxODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IGhtYWMKIGltcG9ydCB1bml0dGVzdAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUsIHNoYTEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMgotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFBlcDI0N1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Myw4ICs2Miw1IEBACiAgICAgZGVmIHRlc3RfaG1hYyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19tb2R1bGUoaG1hYywga2V5PWInYWJjJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBlcDI0N1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKaW5kZXggZmQ1MjU2Yy4uMWU1ZTIyNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKQEAgLTI0NCwxMSArMjQ0LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAndGltIGxpa2VzIHRvIGVhdCBhIGJhZyBvZiBoYW0gd29ydGggJDEwMCcpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0VGVtcGxhdGUsXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CmluZGV4IDViNjM5OTguLjk3ZGNlZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKQEAgLTEsNyArMSw2IEBACiAjIFRoaXMgZmlsZSBpcyBtYXJrZWQgYXMgYmluYXJ5IGluIHRoZSBDVlMsIHRvIHByZXZlbnQgTWFjQ1ZTIGZyb20gcmVjb2RpbmcgaXQuCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFBFUDMxMjBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDAsOCArMzksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDhycsIG5zWyd1J10pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBFUDMxMjBUZXN0LCBCdWlsdGluQ29tcGlsZVRlc3RzKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQppbmRleCAyZTZiOTBhLi4wNjc5ODQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgUEVQMzEzMVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yOCw4ICsyNyw1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiBkaWRuJ3Qgb2NjdXIiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUEVQMzEzMVRlc3QpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CmluZGV4IDdkNGE1ZDguLjhkNTYwY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgZXJybm8KIGZyb20gZXJybm8gaW1wb3J0IEVFWElTVAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgU3ViT1NFcnJvcihPU0Vycm9yKToKICAgICBwYXNzCkBAIC0yMDIsOCArMjAxLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICcnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CmluZGV4IDY5MTk0ZGYuLjIzZmZiZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CkBAIC0xMDEzLDExICsxMDEzLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAoMSwgMiwgMywgNCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0UEVQMzgwT3BlcmF0aW9uXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzIzNWNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkKQEAgLTAsMCArMSwzNCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0UEVQNDc5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zdG9waXRlcmF0aW9uX3dyYXBwaW5nKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICBuZXh0KGcoKSkKKworICAgIGRlZiB0ZXN0X3N0b3BpdGVyYXRpb25fd3JhcHBpbmdfY29udGV4dChzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGYoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoZygpKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMuX19jYXVzZV9fKSwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMuX19jb250ZXh0X18pLCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnX19jYXVzZV9fLCBfX2NvbnRleHRfXywgb3IgX19zdXBwcmVzc19jb250ZXh0X18gJworICAgICAgICAgICAgICAgICAgICAgICd3ZXJlIG5vdCBwcm9wZXJseSBzZXQnKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IGY1YWRkMjcuLmE5ODUzYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0zNTEsNyArMzUxLDkgQEAKIAogICAgICAgICBmb3IgbmFtZSwgZXhjIGluIGdldF9leGNlcHRpb25zKGJ1aWx0aW5zKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWUpOgotICAgICAgICAgICAgICAgIGlmIGV4YyBpbiAoQmxvY2tpbmdJT0Vycm9yLCBSZXNvdXJjZVdhcm5pbmcpOgorICAgICAgICAgICAgICAgIGlmIGV4YyBpbiAoQmxvY2tpbmdJT0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcEFzeW5jSXRlcmF0aW9uKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBleGMgaXMgbm90IE9TRXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZy5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CmluZGV4IDk4ODMwMDAuLjUzMmU4ZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CkBAIC0yOTEsOSArMjkxLDUgQEAKICAgICAgICAgaW1wb3J0IHQ4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDguX19kb2NfXywgImRvYyBmb3IgdDgiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQppbmRleCAzNzBiMmFhLi41ZDlhNDUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjcmVhdGVfZW1wdHlfZmlsZQogCiBjbGFzcyBUZXN0SW1wb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNzYsOSArNzYsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCB2YXIpLCAxKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEltcG9ydCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKaW5kZXggZTBjODYzNWRlLi41N2ViZjFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC0xMDQsNiArMTA0LDkgQEAKIGNsYXNzIFBrZ3V0aWxQRVAzMDJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBjbGFzcyBNeVRlc3RMb2FkZXIob2JqZWN0KToKKyAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2QpOgogICAgICAgICAgICAgIyBDb3VudCBob3cgbWFueSB0aW1lcyB0aGUgbW9kdWxlIGlzIHJlbG9hZGVkCiAgICAgICAgICAgICBtb2QuX19kaWN0X19bJ2xvYWRzJ10gPSBtb2QuX19kaWN0X18uZ2V0KCdsb2FkcycsIDApICsgMQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weSBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKaW5kZXggYjNkZTQzYi4uM2VhNzFmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CkBAIC0yMzYsNyArMjM2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cywgMCkKIAogICAgIGRlZiB0ZXN0X2Rpc3Qoc2VsZik6Ci0gICAgICAgIHJlcyA9IHBsYXRmb3JtLmRpc3QoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKKyAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAorICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXMgPSBwbGF0Zm9ybS5kaXN0KCkKIAogICAgIGRlZiB0ZXN0X2xpYmNfdmVyKHNlbGYpOgogICAgICAgICBpbXBvcnQgb3MKQEAgLTMwNSwxNiArMzEyLDM3IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnRmVkb3JhIHJlbGVhc2UgMTkgKFNjaHJceGY2ZGluZ2VyXHUyMDE5cyBDYXQpXG4nKQogCiAgICAgICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3BsYXRmb3JtLl9VTklYQ09ORkRJUicsIHRlbXBkaXIpOgotICAgICAgICAgICAgICAgIGRpc3RuYW1lLCB2ZXJzaW9uLCBkaXN0aWQgPSBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZGlzdG5hbWUsIHZlcnNpb24sIGRpc3RpZCA9IHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdG5hbWUsICdGZWRvcmEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdG5hbWUsICdGZWRvcmEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uLCAnMTknKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXN0aWQsICdTY2hyXHhmNmRpbmdlclx1MjAxOXMgQ2F0JykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBQbGF0Zm9ybVRlc3QKLSAgICApCisKK2NsYXNzIERlcHJlY2F0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kaXN0X2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykgYXMgY206CisgICAgICAgICAgICBwbGF0Zm9ybS5kaXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIDMuNycpCisKKyAgICBkZWYgdGVzdF9saW51eF9kaXN0cmlidXRpb25fZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGluIFB5dGhvbiAzLjUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjcnKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3Blbi5weQppbmRleCAyMjVlNDFmLi44OTU4ZGIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wZW4ucHkKQEAgLTU3LDggKzU3LDUgQEAKICAgICAgICAgd2l0aCBvcy5wb3BlbigiZWNobyBoZWxsbyIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZiksIFsiaGVsbG9cbiJdKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9wZW5UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IDhhM2M5ZjQuLmJjZWViOTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC00NCw2ICs0NCw3IEBACiBjbGFzcyBEdW1teVBPUDNIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogCiAgICAgQ0FQQVMgPSB7J1VJREwnOiBbXSwgJ0lNUExFTUVOVEFUSU9OJzogWydweXRob24tdGVzdGxpYi1wb3Atc2VydmVyJ119CisgICAgZW5hYmxlX1VURjggPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCkBAIC0xNDIsNiArMTQzLDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcgJy5qb2luKF9sbikpCiAgICAgICAgIHNlbGYucHVzaCgnLicpCiAKKyAgICBkZWYgY21kX3V0Zjgoc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCcrT0sgSSBrbm93IFJGQzY4NTYnCisgICAgICAgICAgICAgICAgICBpZiBzZWxmLmVuYWJsZV9VVEY4CisgICAgICAgICAgICAgICAgICBlbHNlICctRVJSIFdoYXQgaXMgVVRGOD8hJykKKwogICAgIGlmIFNVUFBPUlRTX1NTTDoKIAogICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKQEAgLTMwOSw2ICszMTUsMTYgQEAKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgpCiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoJ2ZvbycpCiAKKyAgICBkZWYgdGVzdF91dGY4X3JhaXNlc19pZl91bnN1cHBvcnRlZChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlci5lbmFibGVfVVRGOCA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBvcGxpYi5lcnJvcl9wcm90bywgc2VsZi5jbGllbnQudXRmOCkKKworICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZXIuZW5hYmxlX1VURjggPSBUcnVlCisgICAgICAgIGV4cGVjdGVkID0gYicrT0sgSSBrbm93IFJGQzY4NTYnCisgICAgICAgIHJlc3VsdCA9IHNlbGYuY2xpZW50LnV0ZjgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9jYXBhKHNlbGYpOgogICAgICAgICBjYXBhID0gc2VsZi5jbGllbnQuY2FwYSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnSU1QTEVNRU5UQVRJT04nIGluIGNhcGEua2V5cygpKQpAQCAtMzQ1LDIzICszNjEsMTggQEAKIAogCiBpZiBTVVBQT1JUU19TU0w6CisgICAgZnJvbSB0ZXN0LnRlc3RfZnRwbGliIGltcG9ydCBTU0xDb25uZWN0aW9uCiAKLSAgICBjbGFzcyBEdW1teVBPUDNfU1NMSGFuZGxlcihEdW1teVBPUDNIYW5kbGVyKToKKyAgICBjbGFzcyBEdW1teVBPUDNfU1NMSGFuZGxlcihTU0xDb25uZWN0aW9uLCBEdW1teVBPUDNIYW5kbGVyKToKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCi0gICAgICAgICAgICBzc2xfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQotICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNzbF9zb2NrZXQpCi0gICAgICAgICAgICAjIE11c3QgdHJ5IGhhbmRzaGFrZSBiZWZvcmUgY2FsbGluZyBwdXNoKCkKLSAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYudGxzX3N0YXJ0aW5nID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fZG9fdGxzX2hhbmRzaGFrZSgpCisgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYiJcclxuIikKICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYucHVzaCgnK09LIGR1bW15IHBvcDMgc2VydmVyIHJlYWR5LiA8dGltZXN0YW1wPicpCisgICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnRsc19zdGFydGluZyA9IEZhbHNlCiAKIAogQHJlcXVpcmVzX3NzbApAQCAtNDUyLDcgKzQ2Myw3IEBACiAgICAgICAgIGRlbCBzZWxmLnRocmVhZCAgIyBDbGVhciBvdXQgYW55IGRhbmdsaW5nIFRocmVhZCBvYmplY3RzLgogCiAgICAgZGVmIHNlcnZlcihzZWxmLCBldnQsIHNlcnYpOgotICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgIGV2dC5zZXQoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggYWViODkyNC4uNzdlNWIwYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC05LDcgKzksNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcwotaW1wb3J0IGZjbnRsCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKIGltcG9ydCBzaHV0aWwKQEAgLTM1NSw3ICszNTQsNyBAQAogICAgIGRlZiB0ZXN0X29zY2xvZXhlYyhzZWxmKToKICAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWXxvcy5PX0NMT0VYRUMpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9pbmhlcml0YWJsZShmZCkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnT19FWExPQ0snKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBwb3NpeC5PX0VYTE9DSycpCkBAIC02MzUsOCArNjM0LDggQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9pbmhlcml0YWJsZShyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfaW5oZXJpdGFibGUodykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChyLCBmY250bC5GX0dFVEZMKSAmIG9zLk9fTk9OQkxPQ0spCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bCh3LCBmY250bC5GX0dFVEZMKSAmIG9zLk9fTk9OQkxPQ0spCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2Jsb2NraW5nKHIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9ibG9ja2luZyh3KSkKICAgICAgICAgIyB0cnkgcmVhZGluZyBmcm9tIGFuIGVtcHR5IHBpcGU6IHRoaXMgc2hvdWxkIGZhaWwsIG5vdCBibG9jawogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5yZWFkLCByLCAxKQogICAgICAgICAjIHRyeSBhIHdyaXRlIGJpZyBlbm91Z2ggdG8gZmlsbC11cCB0aGUgcGlwZTogdGhpcyBzaG91bGQgZWl0aGVyCkBAIC0xMTc2LDE2ICsxMTc1LDE2IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQogICAgICAgICBmZCA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oZm5fd2l0aF9OVUwsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkgIyByYWlzZXMKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZuKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5ta2RpciwgZm5fd2l0aF9OVUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLm1rZGlyLCBmbl93aXRoX05VTCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmbikpCiAgICAgICAgIG9wZW4oZm4sICd3YicpLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zdGF0LCBmbl93aXRoX05VTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3RhdCwgZm5fd2l0aF9OVUwpCiAKICAgICBkZWYgdGVzdF9wYXRoX3dpdGhfbnVsbF9ieXRlKHNlbGYpOgogICAgICAgICBmbiA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCBlYzJmYmFlLi5lY2UzNTU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtNTcsMTggKzU3LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguam9pbihiIi9mb28vIiwgYiJiYXIvIiwgYiJiYXovIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYiIvZm9vL2Jhci9iYXovIikKIAotICAgIGRlZiB0ZXN0X2pvaW5fZXJyb3JzKHNlbGYpOgotICAgICAgICAjIENoZWNrIHBvc2l4cGF0aC5qb2luIHJhaXNlcyBmcmllbmRseSBUeXBlRXJyb3JzLgotICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKGInYnl0ZXMnLCAnc3RyJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKCdzdHInLCBiJ2J5dGVzJykKLSAgICAgICAgIyByZWdyZXNzaW9uLCBzZWUgIzE1Mzc3Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKE5vbmUsICdzdHInKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzWzBdLCBlcnJtc2cpCi0KICAgICBkZWYgdGVzdF9zcGxpdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguc3BsaXQoIi9mb28vYmFyIiksICgiL2ZvbyIsICJiYXIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguc3BsaXQoIi8iKSwgKCIvIiwgIiIpKQpAQCAtNTM0LDYgKzUyMiw2MCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuZ2V0Y3dkYiA9IHJlYWxfZ2V0Y3dkYgogCisgICAgZGVmIHRlc3RfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgZGVmIGNoZWNrKHBhdGhzLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5jb21tb25wYXRoKHBhdGhzKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5jb21tb25wYXRoKFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mc2VuY29kZShleHBlY3RlZCkpCisgICAgICAgIGRlZiBjaGVja19lcnJvcihleGMsIHBhdGhzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgcG9zaXhwYXRoLmNvbW1vbnBhdGgsIHBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsIFtdKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJy91c3InLCAndXNyJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsndXNyJywgJy91c3InXSkKKworICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwnLCAnL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbC8nLCAnL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbC8nLCAnL3Vzci9sb2NhbC8nXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvL2xvY2FsJywgJy8vdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyLy4vbG9jYWwnLCAnLy4vdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvJywgJy9kZXYnXSwgJy8nKQorICAgICAgICBjaGVjayhbJy91c3InLCAnL2RldiddLCAnLycpCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWIvJywgJy91c3IvbGliL3B5dGhvbjMnXSwgJy91c3IvbGliJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xpYi8nLCAnL3Vzci9saWI2NC8nXSwgJy91c3InKQorCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWInLCAnL3Vzci9saWI2NCddLCAnL3VzcicpCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWIvJywgJy91c3IvbGliNjQnXSwgJy91c3InKQorCisgICAgICAgIGNoZWNrKFsnc3BhbSddLCAnc3BhbScpCisgICAgICAgIGNoZWNrKFsnc3BhbScsICdzcGFtJ10sICdzcGFtJykKKyAgICAgICAgY2hlY2soWydzcGFtJywgJ2Fsb3QnXSwgJycpCisgICAgICAgIGNoZWNrKFsnYW5kL2phbScsICdhbmQvc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmQvL2phbScsICdhbmQvc3BhbS8vJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZC8uL2phbScsICcuL2FuZC9zcGFtJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZC9qYW0nLCAnYW5kL3NwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmQvamFtJywgJ2FuZC9zcGFtJywgJ2FuZCddLCAnYW5kJykKKworICAgICAgICBjaGVjayhbJyddLCAnJykKKyAgICAgICAgY2hlY2soWycnLCAnc3BhbS9hbG90J10sICcnKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJycsICcvc3BhbS9hbG90J10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InL3Vzci9saWIvJywgJy91c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InL3Vzci9saWIvJywgJ3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYid1c3IvbGliLycsICcvdXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvJywgYicvdXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvJywgYid1c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd1c3IvbGliLycsIGInL3Vzci9saWIvcHl0aG9uMyddKQorCiAKIGNsYXNzIFBvc2l4Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXRobW9kdWxlID0gcG9zaXhwYXRoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvdy5weSBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CmluZGV4IDIwYjEwNjYuLjZmZWFjNDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CkBAIC0xMjIsOCArMTIyLDUgQEAKICAgICAgICAgICAgIGVxKHBvdyhhLCAtZml2ZXRvKSwgZXhwZWN0ZWQpCiAgICAgICAgIGVxKGV4cGVjdGVkLCAxLjApICAgIyBlbHNlIHdlIGRpZG4ndCBwdXNoIGZpdmV0byB0byBldmVubmVzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChQb3dUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weSBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CmluZGV4IDE4MGRkYjAuLjM1N2M1Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CkBAIC0xLDEyICsxLDE0IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogCi1pbXBvcnQgcHByaW50Ci1pbXBvcnQgdGVzdC5zdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZXN0LnRlc3Rfc2V0Ci1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHBwcmludAoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHRlc3QudGVzdF9zZXQKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CiAKICMgbGlzdCwgdHVwbGUgYW5kIGRpY3Qgc3ViY2xhc3NlcyB0aGF0IGRvIG9yIGRvbid0IG92ZXJ3cml0ZSBfX3JlcHJfXwogY2xhc3MgbGlzdDIobGlzdCk6CkBAIC00OCw2ICs1MCwyNSBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN0cihpZChzZWxmKSkKIAorIyBDbGFzcyBPcmRlcmFibGUgaXMgb3JkZXJhYmxlIHdpdGggYW55IHR5cGUKK2NsYXNzIE9yZGVyYWJsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaGFzaCk6CisgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiAhPSBvdGhlcgorICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiA9PSBvdGhlcgorICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiBpcyBub3Qgb3RoZXIKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCisKIGNsYXNzIFF1ZXJ5VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNTUsNiArNzYsMTggQEAKICAgICAgICAgc2VsZi5iID0gbGlzdChyYW5nZSgyMDApKQogICAgICAgICBzZWxmLmFbLTEyXSA9IHNlbGYuYgogCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcigpCisgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoaW5kZW50PTQsIHdpZHRoPTQwLCBkZXB0aD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1pby5TdHJpbmdJTygpLCBjb21wYWN0PVRydWUpCisgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoNCwgNDAsIDUsIGlvLlN0cmluZ0lPKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoNCwgNDAsIDUsIGlvLlN0cmluZ0lPKCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCBpbmRlbnQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCBkZXB0aD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwcHJpbnQuUHJldHR5UHJpbnRlciwgZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCB3aWR0aD0wKQorCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IC5pc3JlY3Vyc2l2ZSgpIGFuZCAuaXNyZWFkYWJsZSgpIHcvbyByZWN1cnNpb24KICAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcigpCkBAIC0xOTUsMTAgKzIyOCw1MiBAQAogICAgICAgICBvID0gW28xLCBvMl0KICAgICAgICAgZXhwZWN0ZWQgPSAiIiJcCiBbICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLAorICAgIHsnZmlyc3QnOiAxLCAnc2Vjb25kJzogMiwgJ3RoaXJkJzogM31dIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgaW5kZW50PTQsIHdpZHRoPTQyKSwgZXhwZWN0ZWQpCisgICAgICAgIGV4cGVjdGVkID0gIiIiXAorWyAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSwKICAgICB7ICAgJ2ZpcnN0JzogMSwKICAgICAgICAgJ3NlY29uZCc6IDIsCiAgICAgICAgICd0aGlyZCc6IDN9XSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIGluZGVudD00LCB3aWR0aD00MiksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIGluZGVudD00LCB3aWR0aD00MSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd2lkdGgoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gIiIiXAorW1tbW1tbMSwgMiwgM10sCisgICAgICcxIDInXV1dXSwKKyB7MTogWzEsIDIsIDNdLAorICAyOiBbMTIsIDM0XX0sCisgJ2FiYyBkZWYgZ2hpJywKKyAoJ2FiIGNkIGVmJywpLAorIHNldDIoezEsIDIzfSksCisgW1tbW1sxLCAyLCAzXSwKKyAgICAgJzEgMiddXV1dXSIiIgorICAgICAgICBvID0gZXZhbChleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0xNSksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTE2KSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9MjUpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0xNCksICIiIlwKK1tbW1tbWzEsCisgICAgICAyLAorICAgICAgM10sCisgICAgICcxICcKKyAgICAgJzInXV1dXSwKKyB7MTogWzEsCisgICAgICAyLAorICAgICAgM10sCisgIDI6IFsxMiwKKyAgICAgIDM0XX0sCisgJ2FiYyBkZWYgJworICdnaGknLAorICgnYWIgY2QgJworICAnZWYnLCksCisgc2V0Mih7MSwKKyAgICAgICAyM30pLAorIFtbW1tbMSwKKyAgICAgIDIsCisgICAgICAzXSwKKyAgICAgJzEgJworICAgICAnMiddXV1dXSIiIikKIAogICAgIGRlZiB0ZXN0X3NvcnRlZF9kaWN0KHNlbGYpOgogICAgICAgICAjIFN0YXJ0aW5nIGluIFB5dGhvbiAyLjUsIHBwcmludCBzb3J0cyBkaWN0IGRpc3BsYXlzIGJ5IGtleSByZWdhcmRsZXNzCkBAIC0yMTksMTkgKzI5NCw1MSBAQAogICAgICAgICAgICAgciJ7NTogW1tdXSwgJ3h5XHRhYlxuJzogKDMsKSwgKCk6IHt9fSIpCiAKICAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICdPcmRlcmVkRGljdCgpJykKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAnT3JkZXJlZERpY3QoKScpCiAgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQogICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCiAiIiJcCi17J3RoZSc6IDAsCi0gJ3F1aWNrJzogMSwKLSAnYnJvd24nOiAyLAotICdmb3gnOiAzLAotICdqdW1wZWQnOiA0LAotICdvdmVyJzogNSwKLSAnYSc6IDYsCi0gJ2xhenknOiA3LAotICdkb2cnOiA4fSIiIikKK09yZGVyZWREaWN0KFsoJ3RoZScsIDApLAorICAgICAgICAgICAgICgncXVpY2snLCAxKSwKKyAgICAgICAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICAgICAgICgnYScsIDYpLAorICAgICAgICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICAgICAgICgnZG9nJywgOCldKSIiIikKKworICAgIGRlZiB0ZXN0X21hcHBpbmdfcHJveHkoc2VsZik6CisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gZGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgbSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChtKSwgIiIiXAorbWFwcGluZ3Byb3h5KHsnYSc6IDYsCisgICAgICAgICAgICAgICdicm93bic6IDIsCisgICAgICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAgICAgJ2p1bXBlZCc6IDQsCisgICAgICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICAgICAncXVpY2snOiAxLAorICAgICAgICAgICAgICAndGhlJzogMH0pIiIiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIG0gPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobSksICIiIlwKK21hcHBpbmdwcm94eShPcmRlcmVkRGljdChbKCd0aGUnLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm94JywgMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9nJywgOCldKSkiIiIpCisKICAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKICAgICAgICAgbyA9IHsnbmFtZXMgd2l0aCBzcGFjZXMnOiAnc2hvdWxkIGJlIHByZXNlbnRlZCB1c2luZyByZXByKCknLAogICAgICAgICAgICAgICdvdGhlcnMuc2hvdWxkLm5vdC5iZSc6ICdsaWtlLnRoaXMnfQpAQCAtNTM1LDE2ICs2NDIsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkaWN0LmZyb21rZXlzKGtleXMsIDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiAwLCAlcjogMH0nICUgdHVwbGUoc29ydGVkKGtleXMsIGtleT1pZCkpKQogCisgICAgZGVmIHRlc3Rfc29ydF9vcmRlcmFibGVfYW5kX3Vub3JkZXJhYmxlX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAyMjcyMTogIHNvcnRlZCBwcHJpbnRzIGlzIG5vdCBzdGFibGUKKyAgICAgICAgYSA9IFVub3JkZXJhYmxlKCkKKyAgICAgICAgYiA9IE9yZGVyYWJsZShoYXNoKGEpKSAgIyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlCisgICAgICAgICMgc2VsZi10ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhhLCBiKQorICAgICAgICBzZWxmLmFzc2VydExlc3Moc3RyKHR5cGUoYikpLCBzdHIodHlwZShhKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFtiLCBhXSksIFthLCBiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW2EsIGJdKSwgW2EsIGJdKQorICAgICAgICAjIHNldAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNldChbYiwgYV0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyLFxuICVyfScgJSAoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KFthLCBiXSksIHdpZHRoPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd7JXIsXG4gJXJ9JyAlIChhLCBiKSkKKyAgICAgICAgIyBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZGljdC5mcm9ta2V5cyhbYiwgYV0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiBOb25lLFxuICVyOiBOb25lfScgJSAoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZGljdC5mcm9ta2V5cyhbYSwgYl0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiBOb25lLFxuICVyOiBOb25lfScgJSAoYSwgYikpCisKICAgICBkZWYgdGVzdF9zdHJfd3JhcChzZWxmKToKICAgICAgICAgIyBwcHJpbnQgdHJpZXMgdG8gd3JhcCBzdHJpbmdzIGludGVsbGlnZW50bHkKICAgICAgICAgZm94ID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmb3gsIHdpZHRoPTIwKSwgIiIiXAotKCd0aGUgcXVpY2sgJwotICdicm93biBmb3ggJwotICdqdW1wZWQgb3ZlciBhICcKLSAnbGF6eSBkb2cnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmb3gsIHdpZHRoPTE5KSwgIiIiXAorKCd0aGUgcXVpY2sgYnJvd24gJworICdmb3gganVtcGVkIG92ZXIgJworICdhIGxhenkgZG9nJykiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBmb3gsICdjJzogMn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjYpLCAiIiJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjUpLCAiIiJcCiB7J2EnOiAxLAogICdiJzogJ3RoZSBxdWljayBicm93biAnCiAgICAgICAnZm94IGp1bXBlZCBvdmVyICcKQEAgLTU1NiwxMiArNjgyLDM0IEBACiAgICAgICAgICMgLSBub24tQVNDSUkgaXMgYWxsb3dlZAogICAgICAgICAjIC0gYW4gYXBvc3Ryb3BoZSBkb2Vzbid0IGRpc3J1cHQgdGhlIHBwcmludAogICAgICAgICBzcGVjaWFsID0gIlBvcnRvbnMgZGl4IGJvbnMgXCJ3aGlza3lzXCJcbsOgIGwnYXZvY2F0IGdvdWphdFx0IHF1aSBmdW1haXQgYXUgem9vIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTIxKSwgIiIiXAotKCdQb3J0b25zIGRpeCAnCi0gJ2JvbnMgIndoaXNreXMiXFxuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTY4KSwgcmVwcihzcGVjaWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0zMSksICIiIlwKKygnUG9ydG9ucyBkaXggYm9ucyAid2hpc2t5cyJcXG4nCisgIsOgIGwnYXZvY2F0IGdvdWphdFxcdCBxdWkgIgorICdmdW1haXQgYXUgem9vJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MjApLCAiIiJcCisoJ1BvcnRvbnMgZGl4IGJvbnMgJworICcid2hpc2t5cyJcXG4nCiAgIsOgIGwnYXZvY2F0ICIKICAnZ291amF0XFx0IHF1aSAnCiAgJ2Z1bWFpdCBhdSB6b28nKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MzUpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCBib25zICJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0IGdvdWphdFxcdCBxdWkgIgorICAgICAnZnVtYWl0IGF1IHpvbyddXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MjUpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCBib25zICcKKyAgICAgJyJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0ICIKKyAgICAgJ2dvdWphdFxcdCBxdWkgJworICAgICAnZnVtYWl0IGF1IHpvbyddXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MjMpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCAnCisgICAgICdib25zICJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0ICIKKyAgICAgJ2dvdWphdFxcdCBxdWkgJworICAgICAnZnVtYWl0IGF1ICcKKyAgICAgJ3pvbyddXV1dXSIiIikKICAgICAgICAgIyBBbiB1bndyYXBwYWJsZSBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGl0cyByZXByCiAgICAgICAgIHVud3JhcHBhYmxlID0gIngiICogMTAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQodW53cmFwcGFibGUsIHdpZHRoPTgwKSwgcmVwcih1bndyYXBwYWJsZSkpCkBAIC01ODQsNyArNzMyLDI2NyBAQAogICAxNCwgMTVdLAogIFtdLCBbMF0sIFswLCAxXSwgWzAsIDEsIDJdLCBbMCwgMSwgMiwgM10sCiAgWzAsIDEsIDIsIDMsIDRdXSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTQ4LCBjb21wYWN0PVRydWUpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD00NywgY29tcGFjdD1UcnVlKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9jb21wYWN0X3dpZHRoKHNlbGYpOgorICAgICAgICBsZXZlbHMgPSAyMAorICAgICAgICBudW1iZXIgPSAxMAorICAgICAgICBvID0gWzBdICogbnVtYmVyCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxldmVscyAtIDEpOgorICAgICAgICAgICAgbyA9IFtvXQorICAgICAgICBmb3IgdyBpbiByYW5nZShsZXZlbHMgKiAyICsgMSwgbGV2ZWxzICsgMyAqIG51bWJlciAtIDEpOgorICAgICAgICAgICAgbGluZXMgPSBwcHJpbnQucGZvcm1hdChvLCB3aWR0aD13LCBjb21wYWN0PVRydWUpLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgbWF4d2lkdGggPSBtYXgobWFwKGxlbiwgbGluZXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobWF4d2lkdGgsIHcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobWF4d2lkdGgsIHcgLSAzKQorCisgICAgZGVmIHRlc3RfYnl0ZXNfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChiJycsIHdpZHRoPTEpLCAiYicnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChiJ2FiY2QnLCB3aWR0aD0xKSwgImInYWJjZCciKQorICAgICAgICBsZXR0ZXJzID0gYidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yOSksIHJlcHIobGV0dGVycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MTkpLCAiIiJcCisoYidhYmNkZWZnaGlqa2wnCisgYidtbm9wcXJzdHV2d3h5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTE4KSwgIiIiXAorKGInYWJjZGVmZ2hpamtsJworIGInbW5vcHFyc3R1dnd4JworIGIneXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0xNiksICIiIlwKKyhiJ2FiY2RlZmdoaWprbCcKKyBiJ21ub3BxcnN0dXZ3eCcKKyBiJ3l6JykiIiIpCisgICAgICAgIHNwZWNpYWwgPSBieXRlcyhyYW5nZSgxNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NjEpLCByZXByKHNwZWNpYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTQ4KSwgIiIiXAorKGInXFx4MDBcXHgwMVxceDAyXFx4MDNcXHgwNFxceDA1XFx4MDZcXHgwN1xceDA4XFx0XFxuXFx4MGInCisgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0zMiksICIiIlwKKyhiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworIGInXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MSksICIiIlwKKyhiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworIGInXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgYidcXHgwOFxcdFxcblxceDBiJworIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBsZXR0ZXJzLCAnYyc6IDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTIxKSwgIiIiXAoreydhJzogMSwKKyAnYic6IGInYWJjZGVmZ2hpamtsJworICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICBiJ3l6JywKKyAnYyc6IDJ9IiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogbGV0dGVycywgJ2MnOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0yMCksICIiIlwKK3snYSc6IDEsCisgJ2InOiBiJ2FiY2RlZmdoJworICAgICAgYidpamtsbW5vcCcKKyAgICAgIGIncXJzdHV2d3h5eicsCisgJ2MnOiAyfSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW1tsZXR0ZXJzXV1dXV1dLCB3aWR0aD0yNSksICIiIlwKK1tbW1tbW2InYWJjZGVmZ2hpamtsbW5vcCcKKyAgICAgIGIncXJzdHV2d3h5eiddXV1dXV0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tbc3BlY2lhbF1dXV1dXSwgd2lkdGg9NDEpLCAiIiJcCitbW1tbW1tiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgICAgICBiJ1xceDA4XFx0XFxuXFx4MGJcXHgwY1xcclxceDBlXFx4MGYnXV1dXV1dIiIiKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHBwcmludCBpcyBhIHVzYWJsZSByZXByCisgICAgICAgIGZvciB3aWR0aCBpbiByYW5nZSgxLCA2NCk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD13aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChmb3JtYXR0ZWQpLCBzcGVjaWFsKQorICAgICAgICAgICAgZm9ybWF0dGVkID0gcHByaW50LnBmb3JtYXQoW3NwZWNpYWxdICogMiwgd2lkdGg9d2lkdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoZm9ybWF0dGVkKSwgW3NwZWNpYWxdICogMikKKworICAgIGRlZiB0ZXN0X2J5dGVhcnJheV93cmFwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGJ5dGVhcnJheSgpLCB3aWR0aD0xKSwgImJ5dGVhcnJheShiJycpIikKKyAgICAgICAgbGV0dGVycyA9IGJ5dGVhcnJheShiJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD00MCksIHJlcHIobGV0dGVycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MjgpLCAiIiJcCitieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgYidtbm9wcXJzdHV2d3h5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTI3KSwgIiIiXAorYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsJworICAgICAgICAgIGInbW5vcHFyc3R1dnd4JworICAgICAgICAgIGIneXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yNSksICIiIlwKK2J5dGVhcnJheShiJ2FiY2RlZmdoaWprbCcKKyAgICAgICAgICBiJ21ub3BxcnN0dXZ3eCcKKyAgICAgICAgICBiJ3l6JykiIiIpCisgICAgICAgIHNwZWNpYWwgPSBieXRlYXJyYXkocmFuZ2UoMTYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTcyKSwgcmVwcihzcGVjaWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD01NyksICIiIlwKK2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworICAgICAgICAgIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NDEpLCAiIiJcCitieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyAgICAgICAgICBiJ1xceDA0XFx4MDVcXHgwNlxceDA3XFx4MDhcXHRcXG5cXHgwYicKKyAgICAgICAgICBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTEpLCAiIiJcCitieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyAgICAgICAgICBiJ1xceDA0XFx4MDVcXHgwNlxceDA3JworICAgICAgICAgIGInXFx4MDhcXHRcXG5cXHgwYicKKyAgICAgICAgICBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogbGV0dGVycywgJ2MnOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0zMSksICIiIlwKK3snYSc6IDEsCisgJ2InOiBieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICAgICAgICAgICAgYid5eicpLAorICdjJzogMn0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tsZXR0ZXJzXV1dXV0sIHdpZHRoPTM3KSwgIiIiXAorW1tbW1tieXRlYXJyYXkoYidhYmNkZWZnaGlqa2xtbm9wJworICAgICAgICAgICAgICAgYidxcnN0dXZ3eHl6JyldXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9NTApLCAiIiJcCitbW1tbW2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgICAgICAgICAgICAgICBiJ1xceDA4XFx0XFxuXFx4MGJcXHgwY1xcclxceDBlXFx4MGYnKV1dXV1dIiIiKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QoaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVmYXVsdGRpY3QoPGNsYXNzICdpbnQnPiwge30pIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChpbnQsIHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorZGVmYXVsdGRpY3QoPGNsYXNzICdpbnQnPiwKKyAgICAgICAgICAgIHsnYSc6IDYsCisgICAgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgICAgJ3RoZSc6IDB9KSIiIikKKworICAgIGRlZiB0ZXN0X2NvdW50ZXIoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgIkNvdW50ZXIoKSIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Db3VudGVyKCdzZW5zZWxlc3NuZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD00MCksCisiIiJcCitDb3VudGVyKHsncyc6IDYsCisgICAgICAgICAnZSc6IDQsCisgICAgICAgICAnbic6IDIsCisgICAgICAgICAnbCc6IDF9KSIiIikKKworICAgIGRlZiB0ZXN0X2NoYWlubWFwKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiQ2hhaW5NYXAoe30pIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGl0ZW1zID0gbGlzdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKGRpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorQ2hhaW5NYXAoeydhJzogNiwKKyAgICAgICAgICAnYnJvd24nOiAyLAorICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICdmb3gnOiAzLAorICAgICAgICAgICdqdW1wZWQnOiA0LAorICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAnb3Zlcic6IDUsCisgICAgICAgICAgJ3F1aWNrJzogMSwKKyAgICAgICAgICAndGhlJzogMH0pIiIiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZGljdChpdGVtcyksIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK0NoYWluTWFwKHsnYSc6IDYsCisgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgJ3RoZSc6IDB9LAorICAgICAgICAgT3JkZXJlZERpY3QoWygndGhlJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICgnYnJvd24nLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgICAgICAgICAgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgICAgICAgICAgICAgICAgKCdhJywgNiksCisgICAgICAgICAgICAgICAgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgICAgICAgICAgICAgICAgKCdkb2cnLCA4KV0pKSIiIikKKworICAgIGRlZiB0ZXN0X2RlcXVlKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVxdWUoW10pIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlcXVlKG1heGxlbj03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVxdWUoW10sIG1heGxlbj03KSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitkZXF1ZShbKCd0aGUnLCAwKSwKKyAgICAgICAoJ3F1aWNrJywgMSksCisgICAgICAgKCdicm93bicsIDIpLAorICAgICAgICgnZm94JywgMyksCisgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAoJ2RvZycsIDgpXSkiIiIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZXF1ZSh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSwgbWF4bGVuPTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitkZXF1ZShbKCdicm93bicsIDIpLAorICAgICAgICgnZm94JywgMyksCisgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAoJ2RvZycsIDgpXSwKKyAgICAgIG1heGxlbj03KSIiIikKKworICAgIGRlZiB0ZXN0X3VzZXJfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJEaWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgInt9IikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyRGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK3snYSc6IDYsCisgJ2Jyb3duJzogMiwKKyAnZG9nJzogOCwKKyAnZm94JzogMywKKyAnanVtcGVkJzogNCwKKyAnbGF6eSc6IDcsCisgJ292ZXInOiA1LAorICdxdWljayc6IDEsCisgJ3RoZSc6IDB9IiIiKQorCisgICAgZGVmIHRlc3RfdXNlcl9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlckxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiW10iKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJMaXN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorWygndGhlJywgMCksCisgKCdxdWljaycsIDEpLAorICgnYnJvd24nLCAyKSwKKyAoJ2ZveCcsIDMpLAorICgnanVtcGVkJywgNCksCisgKCdvdmVyJywgNSksCisgKCdhJywgNiksCisgKCdsYXp5JywgNyksCisgKCdkb2cnLCA4KV0iIiIpCisKKyAgICBkZWYgdGVzdF91c2VyX3N0cmluZyhzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJTdHJpbmcoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICInJyIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nKCd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTIwKSwKKyIiIlwKKygndGhlIHF1aWNrIGJyb3duICcKKyAnZm94IGp1bXBlZCBvdmVyICcKKyAnYSBsYXp5IGRvZycpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsxOiBkfSwgd2lkdGg9MjApLAorIiIiXAorezE6ICd0aGUgcXVpY2sgJworICAgICdicm93biBmb3ggJworICAgICdqdW1wZWQgb3ZlciBhICcKKyAgICAnbGF6eSBkb2cnfSIiIikKIAogCiBjbGFzcyBEb3R0ZWRQcmV0dHlQcmludGVyKHBwcmludC5QcmV0dHlQcmludGVyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CmluZGV4IGNlZTcyMDMuLjVhZGRkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQpAQCAtMyw3ICszLDYgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGNsYXNzIFByb3BlcnR5QmFzZShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTc3LDYgKzc2LDEzIEBACiAgICAgICAgICIiIm5ldyBkb2NzdHJpbmciIiIKICAgICAgICAgcmV0dXJuIDgKIAorY2xhc3MgUHJvcGVydHlXcml0YWJsZURvYyhvYmplY3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNwYW0oc2VsZik6CisgICAgICAgICIiIkVnZ3MiIiIKKyAgICAgICAgcmV0dXJuICJlZ2dzIgorCiBjbGFzcyBQcm9wZXJ0eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wcm9wZXJ0eV9kZWNvcmF0b3JfYmFzZWNsYXNzKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTYyMApAQCAtMTUxLDYgKzE1NywyMSBAQAogICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGZvbykKICAgICAgICAgICAgIEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAorICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eV9idWlsdGluX2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgcCA9IHByb3BlcnR5KGRvYz0nYmFzaWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19kb2NfXywgJ2Jhc2ljJykKKyAgICAgICAgcC5fX2RvY19fID0gJ2V4dGVuZGVkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19kb2NfXywgJ2V4dGVuZGVkJykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X2RlY29yYXRvcl9kb2Nfd3JpdGFibGUoc2VsZik6CisgICAgICAgIHN1YiA9IFByb3BlcnR5V3JpdGFibGVEb2MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Yi5fX2NsYXNzX18uc3BhbS5fX2RvY19fLCAnRWdncycpCisgICAgICAgIHN1Yi5fX2NsYXNzX18uc3BhbS5fX2RvY19fID0gJ1NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICdTcGFtJykKIAogIyBJc3N1ZSA1ODkwOiBzdWJjbGFzc2VzIG9mIHByb3BlcnR5IGRvIG5vdCBwcmVzZXJ2ZSBtZXRob2QgX19kb2NfXyBzdHJpbmdzCiBjbGFzcyBQcm9wZXJ0eVN1Yihwcm9wZXJ0eSk6CkBAIC0yNDcsOCArMjY4LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHJvcGVydHlUZXN0cywgUHJvcGVydHlTdWJjbGFzc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BzdGF0cy5weSBiL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CmluZGV4IDllYmVlYmIuLjU2NmIzZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CkBAIC0zNCwxMiArMzQsNSBAQAogICAgICAgICBzdGF0cy5hZGQoc2VsZi5zdGF0cywgc2VsZi5zdGF0cykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIEFkZENhbGxlcnNUZXN0Q2FzZSwKLSAgICAgICAgU3RhdHNUZXN0Q2FzZSwKLSAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCA4OTE2ODYxLi5lZjVlOTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMSw3ICsxLDYgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fdW5pdHRlc3QsIGltcG9ydF9tb2R1bGUsIHJlYXBfY2hpbGRyZW4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlLCByZWFwX2NoaWxkcmVuCiAKLSNTa2lwIHRoZXNlIHRlc3RzIGlmIGVpdGhlciBmY250bCBvciB0ZXJtaW9zIGlzIG5vdCBhdmFpbGFibGUKLWZjbnRsID0gaW1wb3J0X21vZHVsZSgnZmNudGwnKQorIyBTa2lwIHRoZXNlIHRlc3RzIGlmIHRlcm1pb3MgaXMgbm90IGF2YWlsYWJsZQogaW1wb3J0X21vZHVsZSgndGVybWlvcycpCiAKIGltcG9ydCBlcnJubwpAQCAtODQsMTYgKzgzLDE4IEBACiAgICAgICAgICMgaW4gbWFzdGVyX29wZW4oKSwgd2UgbmVlZCB0byByZWFkIHRoZSBFT0YuCiAKICAgICAgICAgIyBFbnN1cmUgdGhlIGZkIGlzIG5vbi1ibG9ja2luZyBpbiBjYXNlIHRoZXJlJ3Mgbm90aGluZyB0byByZWFkLgotICAgICAgICBvcmlnX2ZsYWdzID0gZmNudGwuZmNudGwobWFzdGVyX2ZkLCBmY250bC5GX0dFVEZMKQotICAgICAgICBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfU0VURkwsIG9yaWdfZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQorICAgICAgICBibG9ja2luZyA9IG9zLmdldF9ibG9ja2luZyhtYXN0ZXJfZmQpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHMxID0gb3MucmVhZChtYXN0ZXJfZmQsIDEwMjQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgczEpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVBR0FJTjoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAjIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGZsYWdzLgotICAgICAgICBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfU0VURkwsIG9yaWdfZmxhZ3MpCisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcobWFzdGVyX2ZkLCBGYWxzZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzMSA9IG9zLnJlYWQobWFzdGVyX2ZkLCAxMDI0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzMSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQUdBSU46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGZsYWdzLgorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKG1hc3Rlcl9mZCwgYmxvY2tpbmcpCiAKICAgICAgICAgZGVidWcoIldyaXRpbmcgdG8gc2xhdmVfZmQiKQogICAgICAgICBvcy53cml0ZShzbGF2ZV9mZCwgVEVTVF9TVFJJTkdfMSkKQEAgLTI5MiwxMSArMjkzLDggQEAKICAgICAgICAgICAgIHB0eS5fY29weShtYXN0ZXJzWzBdKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIHJ1bl91bml0dGVzdChTbWFsbFB0eVRlc3RzLCBQdHlUZXN0KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHJlYXBfY2hpbGRyZW4oKQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQppbmRleCBiODFhNTk1Li4xOTMyYzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC02LDcgKzYsNyBAQAogZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCiAKIAogdHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQpAQCAtMzM5LDkgKzMzOSw1IEBACiAgICAgICAgIGRvYy51bmxpbmsoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHVsbERPTVRlc3RDYXNlLCBUaG9yb3VnaFRlc3RDYXNlLCBTQVgyRE9NVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wd2QucHkgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQppbmRleCAzN2ExYmNiLi5iN2IxYTRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B3ZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQpAQCAtMTA3LDggKzEwNyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIDIqKjEyOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgLTIqKjEyOCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFB3ZFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQppbmRleCAxYWJlYTI3Li4wM2NjYTVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygKICAgICAgICAgICAgIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGJhZF9jb2RpbmcpKSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID4gMCwgJ3Rlc3QgZG9lcyBub3Qgd29yayB3aXRoIC1PJykKICAgICBkZWYgdGVzdF9kb3VibGVfZG90X25vX2Nsb2JiZXIoc2VsZik6CiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTY2CiAgICAgICAgICMgcHlfY29tcGlsZSBmb28uYmFyLnB5IC0+IF9fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTM0LnB5YwpAQCAtMTE5LDYgKzEyMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoY2FjaGVfcGF0aCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpKQogCisgICAgZGVmIHRlc3Rfb3B0aW1pemF0aW9uX3BhdGgoc2VsZik6CisgICAgICAgICMgU3BlY2lmeWluZyBvcHRpbWl6ZWQgYnl0ZWNvZGUgc2hvdWxkIGxlYWQgdG8gYSBwYXRoIHJlZmxlY3RpbmcgdGhhdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJbignb3B0LTInLCBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5zb3VyY2VfcGF0aCwgb3B0aW1pemU9MikpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggMzllYjY1Zi4uY2FiNDMwYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTIsNyArMiw2IEBACiAgICBUZXN0IGNhc2VzIGZvciBweWNsYnIucHkKICAgIE5pY2sgTWF0aGV3c29uCiAnJycKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IEZ1bmN0aW9uVHlwZSwgTWV0aG9kVHlwZSwgQnVpbHRpbkZ1bmN0aW9uVHlwZQogaW1wb3J0IHB5Y2xicgpAQCAtMTczLDkgKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBweWNsYnIucmVhZG1vZHVsZV9leCwgJ2FzeW5jb3JlLmZvbycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQeWNsYnJUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IDBlOTkwYjYuLmVjNWMzMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBkaWZmbGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcHlkb2MKQEAgLTIyLDcgKzIxLDcgQEAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAogICAgIFRFU1RGTiwgcm10cmVlLAogICAgIHJlYXBfY2hpbGRyZW4sIHJlYXBfdGhyZWFkcywgY2FwdHVyZWRfb3V0cHV0LCBjYXB0dXJlZF9zdGRvdXQsCkBAIC0yNTcsNyArMjU2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGV4cGVjdGVkX2RhdGFfZG9jc3RyaW5ncykKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbWlzc2luZyBtb2R1bGUKLW1pc3NpbmdfcGF0dGVybiA9ICJubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJyVzJyIKK21pc3NpbmdfcGF0dGVybiA9ICcnJ1wKK05vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlci4KK1VzZSBoZWxwKCkgdG8gZ2V0IHRoZSBpbnRlcmFjdGl2ZSBoZWxwIHV0aWxpdHkuCitVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKIGJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgpAQCAtMzY0LDE1ICszNjYsNiBAQAogICAgIG91dHB1dCA9IHBhdHQuc3ViKCcnLCBvdXRwdXQpCiAgICAgcmV0dXJuIG91dHB1dC5zdHJpcCgpLCBsb2MKIAotZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6Ci0gICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCi0gICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCi0gICAgZGlmZnMgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihsaW5lczEsIGxpbmVzMiwgbj0wLCBmcm9tZmlsZT0nZXhwZWN0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlPSdnb3QnKQotICAgIHByaW50KCdcbicgKyAnJy5qb2luKGRpZmZzKSkKLQogZGVmIGdldF9odG1sX3RpdGxlKHRleHQpOgogICAgICMgQml0IG9mIGhhY2ssIGJ1dCBnb29kIGVub3VnaCBmb3IgdGVzdCBwdXJwb3NlcwogICAgIGhlYWRlciwgXywgXyA9IHRleHQucGFydGl0aW9uKCI8L2hlYWQ+IikKQEAgLTQxOCw5ICs0MTEsNyBAQAogICAgICAgICBleHBlY3RlZF9odG1sID0gZXhwZWN0ZWRfaHRtbF9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgKG1vZF91cmwsIG1vZF9maWxlLCBkb2NfbG9jKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9odG1sX2RhdGFfZG9jc3RyaW5ncykKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX2h0bWw6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF9odG1sLCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRfaHRtbCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtNDMzLDkgKzQyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jX2xvYywpICsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHRfZGF0YV9kb2NzdHJpbmdzICsKICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKSwpKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3RfdGV4dF9lbnVtX21lbWJlcl93aXRoX3ZhbHVlX3plcm8oc2VsZik6CiAgICAgICAgICMgVGVzdCBpc3N1ZSAjMjA2NTQgdG8gZW5zdXJlIGVudW0gbWVtYmVyIHdpdGggdmFsdWUgMCBjYW4gYmUKQEAgLTkzMSw5ICs5MjAsNyBAQAogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgIChfX25hbWVfXywpICsgZXhwZWN0ZWRfdGV4dF9kYXRhX2RvY3N0cmluZ3NbOjJdKQogICAgICAgICByZXN1bHQgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF90ZXh0OgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCByZXN1bHQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKQEAgLTk1NCw5ICs5NDEsNyBAQAogICAgICAgICBoZWxwZXIoQ2xhc3MpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4xICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0ID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCkBAIC05OTYsMTkgKzk4MSwxMyBAQAogICAgICAgICBoZWxwZXIoQ2xhc3MxKQogICAgICAgICBleHBlY3RlZF90ZXh0MSA9IGV4cGVjdGVkX3ZpcnR1YWxhdHRyaWJ1dGVfcGF0dGVybjIgJSBfX25hbWVfXwogICAgICAgICByZXN1bHQxID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQxICE9IGV4cGVjdGVkX3RleHQxOgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dDEsIHJlc3VsdDEpCi0gICAgICAgICAgICBmYWlsMSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0MSwgcmVzdWx0MSkKICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICBoZWxwZXIgPSBweWRvYy5IZWxwZXIob3V0cHV0PW91dHB1dCkKICAgICAgICAgaGVscGVyKENsYXNzMikKICAgICAgICAgZXhwZWN0ZWRfdGV4dDIgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4zICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0MiA9IG91dHB1dC5nZXR2YWx1ZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcmVzdWx0MiAhPSBleHBlY3RlZF90ZXh0MjoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQyLCByZXN1bHQyKQotICAgICAgICAgICAgZmFpbDIgPSBUcnVlCi0gICAgICAgIGlmIGZhaWwxIG9yIGZhaWwyOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0MiwgcmVzdWx0MikKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtMTAyNSw5ICsxMDA0LDcgQEAKICAgICAgICAgaGVscGVyKEMpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9taXNzaW5nYXR0cmlidXRlX3BhdHRlcm4gJSBfX25hbWVfXwogICAgICAgICByZXN1bHQgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF90ZXh0OgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCByZXN1bHQpCiAKICAgICBkZWYgdGVzdF9yZXNvbHZlX2ZhbHNlKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMzAwODogcHlkb2MgZW51bS57LEludH1FbnVtIGZhaWxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5CmluZGV4IGMyMzNiYzEuLjA4ZTk1YzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiBmcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBlcnJvcnMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNvcnRkaWN0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzb3J0ZGljdAogCiAKIGNsYXNzIFNldEF0dHJpYnV0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzA4LDE5ICs3MDgsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXJfY2FsbF9hcmdzLCBbKCJiYXIiLCAiYmF6IildKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoU2V0QXR0cmlidXRlVGVzdCwKLSAgICAgICAgICAgICAgICAgUGFyc2VUZXN0LAotICAgICAgICAgICAgICAgICBOYW1lc3BhY2VTZXBhcmF0b3JUZXN0LAotICAgICAgICAgICAgICAgICBJbnRlcm5pbmdUZXN0LAotICAgICAgICAgICAgICAgICBCdWZmZXJUZXh0VGVzdCwKLSAgICAgICAgICAgICAgICAgSGFuZGxlckV4Y2VwdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgIFBvc2l0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgc2YxMjk2NDMzVGVzdCwKLSAgICAgICAgICAgICAgICAgQ2hhcmRhdGFCdWZmZXJUZXN0LAotICAgICAgICAgICAgICAgICBNYWxmb3JtZWRJbnB1dFRlc3QsCi0gICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZVRlc3QsCi0gICAgICAgICAgICAgICAgIEZvcmVpZ25EVERUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfcXVldWUucHkKaW5kZXggMmNkZmVlNC4uNGNjYWEzOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1ZXVlLnB5CkBAIC0zNTQsMTAgKzM1NCw1IEBACiAgICAgICAgIHNlbGYuZmFpbGluZ19xdWV1ZV90ZXN0KHEpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFF1ZXVlVGVzdCwgTGlmb1F1ZXVlVGVzdCwgUHJpb3JpdHlRdWV1ZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWlsaW5nUXVldWVUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggOTI1MTFmYS4uN2NhYzAxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgc3lzLCBvcywgaW8sIHN1YnByb2Nlc3MKQEAgLTIwNyw5ICsyMDYsNSBAQAogICAgICAgICBwID0gcC5kZWNvZGUoJ2xhdGluLTEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdXQuc3BsaXRsaW5lcygpLCBwLnNwbGl0bGluZXMoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFF1b3ByaVRlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CmluZGV4IGJlNWMxYzYuLmE0MWIzNTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQpAQCAtNDE1LDggKzQxNSw1IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGV4Y2VwdGlvbiByYWlzZWQiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IDJkYmNlYmMuLjEwNmM3MzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtNjQ3LDggKzY0Nyw1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0ZXAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoUmFuZ2VUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCA3MzQ4YWYzLi41YjcxNjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTM4LDYgKzM4LDI0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGFjdHVhbCksIHR5cGUoZXhwZWN0KSwgbXNnKQogICAgICAgICByZWN1cnNlKGFjdHVhbCwgZXhwZWN0KQogCisgICAgZGVmIGNoZWNrUGF0dGVybkVycm9yKHNlbGYsIHBhdHRlcm4sIGVycm1zZywgcG9zPU5vbmUpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0dGVybikKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGF0dGVybj1wYXR0ZXJuKToKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBlcnJtc2cpCisgICAgICAgICAgICBpZiBwb3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBwb3MpCisKKyAgICBkZWYgY2hlY2tUZW1wbGF0ZUVycm9yKHNlbGYsIHBhdHRlcm4sIHJlcGwsIHN0cmluZywgZXJybXNnLCBwb3M9Tm9uZSk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuc3ViKHBhdHRlcm4sIHJlcGwsIHN0cmluZykKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGF0dGVybj1wYXR0ZXJuLCByZXBsPXJlcGwpOgorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csIGVycm1zZykKKyAgICAgICAgICAgIGlmIHBvcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIHBvcykKKwogICAgIGRlZiB0ZXN0X2tlZXBfYnVmZmVyKHNlbGYpOgogICAgICAgICAjIFNlZSBidWcgMTQyMTIKICAgICAgICAgYiA9IGJ5dGVhcnJheShiJ3gnKQpAQCAtODQsNyArMTAyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAneCB4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocidcZCsnLCBzZWxmLmJ1bXBfbnVtLCAnMDguMiAtMiAyM3g5OXknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnOS4zIC0zIDI0eDEwMHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ1xkKycsIHNlbGYuYnVtcF9udW0sICcwOC4yIC0yIDIzeDk5eScsIDMpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ1xkKycsIHNlbGYuYnVtcF9udW0sICcwOC4yIC0yIDIzeDk5eScsIGNvdW50PTMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc5LjMgLTMgMjN4OTl5JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignLicsIGxhbWJkYSBtOiByIlxuIiwgJ3gnKSwgJ1xcbicpCkBAIC0xMDAsMTEgKzExOCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJyxyJ1x0XG5cdlxyXGZcYVxiXEJcWlxhXEFcd1xXXHNcU1xkXEQnLCdhJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x0XG5cdlxyXGZcYVxiXFxCXFxaXGFcXEFcXHdcXFdcXHNcXFNcXGRcXEQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGEnLCAnYScpLCAnXHRcblx2XHJcZlxhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhJywgJ2EnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNocig5KStjaHIoMTApK2NocigxMSkrY2hyKDEzKStjaHIoMTIpK2Nocig3KStjaHIoOCkpKQorICAgICAgICBmb3IgYyBpbiAnY2RlaGlqa2xtb3Bxc3V3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1xcJyArIGMsICdhJyksICdcXCcgKyBjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdeXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQogCkBAIC0xNDUsNiArMTY2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wwMDknLCAneCcpLCAnXDAnICsgJzknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDExMScsICd4JyksICdcMTExJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wxMTcnLCAneCcpLCAnXDExNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMzc3JywgJ3gnKSwgJ1wzNzcnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTExMScsICd4JyksICdcMTExMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTExMScsICd4JyksICdcMTExJyArICcxJykKQEAgLTE1NSwyMSArMTc3LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMDknLCAneCcpLCAnXDAnICsgJzknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDBhJywgJ3gnKSwgJ1wwJyArICdhJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDQwMCcsICd4JyksICdcMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcNzc3JywgJ3gnKSwgJ1wzNzcnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDQwMCcsICd4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDQwMCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w3NzcnLCAneCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw3Nzcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDgnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcOScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxMScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxOCcsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxYScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w5MCcsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w5OScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxMTgnLCAneCcpICMgcidcMTEnICsgJzgnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTFhJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDE4MScsICd4JykgIyByJ1wxOCcgKyAnMScKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w4MDAnLCAneCcpICMgcidcODAnICsgJzAnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDExJyArICc4JworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxODEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTgnICsgJzEnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcODAwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDgwJyArICcwJwogCiAgICAgICAgICMgaW4gcHl0aG9uMi4zIChldGMpLCB0aGVzZSBsb29wIGVuZGxlc3NseSBpbiBzcmVfcGFyc2VyLnB5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoKCgoKCgoKCgoKHgpKSkpKSkpKSkpKScsIHInXDExJywgJ3gnKSwgJ3gnKQpAQCAtMTgwLDcgKzIwNiw3IEBACiAKICAgICBkZWYgdGVzdF9xdWFsaWZpZWRfcmVfc3ViKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdiJywgJ2FhYWFhJyksICdiYmJiYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ2InLCAnYWFhYWEnLCAxKSwgJ2JhYWFhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnYicsICdhYWFhYScsIGNvdW50PTEpLCAnYmFhYWEnKQogCiAgICAgZGVmIHRlc3RfYnVnXzExNDY2MChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoXFMpXHMrKFxTKScsIHInXDEgXDInLCAnaGVsbG8gIHRoZXJlJyksCkBAIC0xOTQsNzUgKzIyMCwxMDMgQEAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19ncm91cHMoc2VsZik6CiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPGE+KSg/UDxhPiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UHgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPTEpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9YSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD1hMSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD1hLiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDwpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8PiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDwxPiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDxhLj4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPygpKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD8oYSkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPygxYSkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPyhhLikpJykKKyAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpXDEoPygxKXkpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UDxhPiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAnYScgYXMgZ3JvdXAgMjsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZ3JvdXAgMSIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwxPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YS4+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygnLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCkpJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyhhKSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygtMSkpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnLTEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KDFhKSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oYS4pKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPMK1PngpKD9QPcK1KSg/KMK1KXkpJykKICAgICAgICAgcmUuY29tcGlsZSgnKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCkoP1A98J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoikoPyjwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiKXkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8wqk+eCknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8wqk+eCknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICfCqSciLCA0KQorICAgICAgICAjIFN1cHBvcnQgPiAxMDAgZ3JvdXBzLgorICAgICAgICBwYXQgPSAnfCcuam9pbigneCg/UDxhJWQ+JXgpeScgJSAoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMSwgMjAwICsgMSkpCisgICAgICAgIHBhdCA9ICcoPzolcykoPygyMDApenx0KScgJSBwYXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfcmVmcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnJywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8PicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzwxYTE+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpfCg/UDxiPnkpJywgJ1xnPGI+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpfCg/UDxiPnkpJywgJ1xcMicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YScsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPCcsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhIGEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYTEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwyPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6CisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXGc8Yj4nLCAneHgnKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXDInLCAneHgnKSwgJycpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsIHInXGc8wqk+JywgJ3h4JykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPMKpPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCisgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCisgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKIAogICAgIGRlZiB0ZXN0X3JlX3N1Ym4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCB4JywgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYisiLCAieCIsICJiYmJiIEJCQkIiKSwgKCd4IEJCQkInLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKyIsICJ4IiwgInh5eiIpLCAoJ3h5eicsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIqIiwgIngiLCAieHl6IiksICgneHh4eXh6eCcsIDQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIqIiwgIngiLCAieHl6IiwgMiksICgneHh4eXonLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKiIsICJ4IiwgInh5eiIsIGNvdW50PTIpLCAoJ3h4eHl6JywgMikpCiAKICAgICBkZWYgdGVzdF9yZV9zcGxpdChzZWxmKToKICAgICAgICAgZm9yIHN0cmluZyBpbiAiOmE6Yjo6YyIsIFMoIjphOmI6OmMiKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiOiIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnYScsICdiJywgJycsICdjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIjoqIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiOisiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJ2EnLCAnYicsICdjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIig6KikiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCIoOispIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzo6JywgJ2MnXSkKICAgICAgICAgZm9yIHN0cmluZyBpbiAoYiI6YTpiOjpjIiwgQihiIjphOmI6OmMiKSwgYnl0ZWFycmF5KGIiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KGIiOmE6Yjo6YyIpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIjoiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJycsIGInYScsIGInYicsIGInJywgYidjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiI6KiIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiI6KyIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2InJywgYidhJywgYidiJywgYidjJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiIoOiopIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIig6KykiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJycsIGInOicsIGInYScsIGInOicsIGInYicsIGInOjonLCBiJ2MnXSkKICAgICAgICAgZm9yIGEsIGIsIGMgaW4gKCJceGUwXHhkZlx4ZTciLCAiXHUwNDMwXHUwNDMxXHUwNDMyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDFkNDljXFUwMDAxZDQ5ZVxVMDAwMWQ0YjUiKToKICAgICAgICAgICAgIHN0cmluZyA9ICI6JXM6JXM6OiVzIiAlIChhLCBiLCBjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOiIsIHN0cmluZyksIFsnJywgYSwgYiwgJycsIGNdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOioiLCBzdHJpbmcpLCBbJycsIGEsIGIsIGNdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6KyIsIHN0cmluZyksIFsnJywgYSwgYiwgY10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOispIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsIGEsICc6JywgYiwgJzo6JywgY10pCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKD86OiopIiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJ2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopKiIsICI6YTpiOjpjIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OjorKSIsICI6YTpiOjpjIiksIFsnJywgJ2EnLCAnYicsICdjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSsiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOicsICdjJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIihbYjpdKykiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6Yjo6JywgJ2MnXSkKQEAgLTI3MiwxMyArMzI2LDM0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OmIpfCg/OjorKSIsICI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnYScsICcnLCAnJywgJ2MnXSkKIAorICAgICAgICBmb3Igc2VwLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJzoqJywgWycnLCAnYScsICdiJywgJ2MnXSksCisgICAgICAgICAgICAoJyg/OjoqKScsIFsnJywgJ2EnLCAnYicsICdjJ10pLAorICAgICAgICAgICAgKCcoOiopJywgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6OicsICdjJ10pLAorICAgICAgICAgICAgKCcoOikqJywgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6JywgJ2MnXSksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZXA9c2VwKSwgc2VsZi5hc3NlcnRXYXJucyhGdXR1cmVXYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoc2VwLCAnOmE6Yjo6YycpLCBleHBlY3RlZCkKKworICAgICAgICBmb3Igc2VwLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJycsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgICAgIChyJ1xiJywgWyc6YTpiOjpjJ10pLAorICAgICAgICAgICAgKHInKD89OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgICAgICAocicoPzw9OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZXA9c2VwKSwgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KHNlcCwgJzphOmI6OmMnKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9xdWFsaWZpZWRfcmVfc3BsaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoiLCAiOmE6Yjo6YyIsIDIpLCBbJycsICdhJywgJ2I6OmMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgnOicsICdhOmI6YzpkJywgMiksIFsnYScsICdiJywgJ2M6ZCddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikiLCAiOmE6Yjo6YyIsIDIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6IiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwgWycnLCAnYScsICdiOjpjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoJzonLCAnYTpiOmM6ZCcsIG1heHNwbGl0PTIpLCBbJ2EnLCAnYicsICdjOmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopIiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KikiLCAiOmE6Yjo6YyIsIDIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOispIiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhGdXR1cmVXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KikiLCAiOmE6Yjo6YyIsIG1heHNwbGl0PTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiOjpjJ10pCiAKICAgICBkZWYgdGVzdF9yZV9maW5kYWxsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwoIjorIiwgImFiYyIpLCBbXSkKQEAgLTQwNSw2ICs0ODAsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocC5tYXRjaCgnYWJkJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHAubWF0Y2goJ2FjJykpCiAKKyAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KKyAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQorICAgICAgICBwYXQgPSAnKD86JXMpKD8oMjAwKXopJyAlIHBhdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHBhdCwgJ3hjOHl6Jykuc3BhbigpLCAoMCwgNSkpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPygwKSknLCAnYmFkIGdyb3VwIG51bWJlcicsIDEwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCkoPygxKWF8YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAyKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCkoPygxKWF8YnxjKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0d28gYnJhbmNoZXMnLCAxMCkKKworICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX292ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCAnXGc8JXM+JyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXHwpPyhbXigpXSspXDEkJywgJ3xhfCcpLmdyb3VwcygpLApAQCAtNDE4LDYgKzUxMCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKFwxKT8kJywgJ2MnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCiAKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyhhYmNcMSknLCAnY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAnLCA0KQorCiAgICAgZGVmIHRlc3RfZ3JvdXBkaWN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCcoP1A8Zmlyc3Q+Zmlyc3QpICg/UDxzZWNvbmQ+c2Vjb25kKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNlY29uZCcpLmdyb3VwZGljdCgpLApAQCAtNDI4LDYgKzUyMiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCBzZWNvbmQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5leHBhbmQociJcMiBcMSBcZzxzZWNvbmQ+IFxnPGZpcnN0PiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZWNvbmQgZmlyc3Qgc2Vjb25kIGZpcnN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGZpcnN0PmZpcnN0KXwoP1A8c2Vjb25kPnNlY29uZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGFuZChyIlwyIFxnPHNlY29uZD4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICIpCiAKICAgICBkZWYgdGVzdF9yZXBlYXRfbWlubWF4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MX0kIiwgImFiYyIpKQpAQCAtNDUxLDYgKzU0OSw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCkBAIC00NjEsNiArNTYwLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54e30kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54e30kIiwgInh7fSIpKQogCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4ezIsMX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0JywgMikKKwogICAgIGRlZiB0ZXN0X2dldGF0dHIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuY29tcGlsZSgiKD9pKShhKShiKSIpLnBhdHRlcm4sICIoP2kpKGEpKGIpIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5jb21waWxlKCIoP2kpKGEpKGIpIikuZmxhZ3MsIHJlLkkgfCByZS5VKQpAQCAtNDc1LDYgKzU3NywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSkiLCAiYSIpLnJlZ3MsICgoMCwgMSksICgwLCAxKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiKGEpIiwgImEiKS5yZSkKIAorICAgICAgICAjIElzc3VlIDE0MjYwLiBncm91cGluZGV4IHNob3VsZCBiZSBub24tbW9kaWZpYWJsZSBtYXBwaW5nLgorICAgICAgICBwID0gcmUuY29tcGlsZShyJyg/aSkoP1A8Zmlyc3Q+YSkoP1A8b3RoZXI+YiknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChwLmdyb3VwaW5kZXgpLCBbJ2ZpcnN0JywgJ290aGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5ncm91cGluZGV4WydvdGhlciddLCAyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwLmdyb3VwaW5kZXhbJ290aGVyJ10gPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5ncm91cGluZGV4WydvdGhlciddLCAyKQorCiAgICAgZGVmIHRlc3Rfc3BlY2lhbF9lc2NhcGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxiKGIuKVxiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2QgYWJjIGJjZCBieCIpLmdyb3VwKDEpLCAiYngiKQpAQCAtNDg0LDEwICs1OTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjZCBhYmMgYmNkIGJ4IiwgcmUuQVNDSUkpLmdyb3VwKDEpLCAiYngiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxCKGIuKVxCIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyBiY2QgYmMgYWJ4ZCIsIHJlLkFTQ0lJKS5ncm91cCgxKSwgImJ4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihiLilcYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNkIGFiYyBiY2QgYngiLCByZS5MT0NBTEUpLmdyb3VwKDEpLCAiYngiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxCKGIuKVxCIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyBiY2QgYmMgYWJ4ZCIsIHJlLkxPQ0FMRSkuZ3JvdXAoMSksICJieCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXmFiYyQiLCAiXG5hYmNcbiIsIHJlLk0pLmdyb3VwKDApLCAiYWJjIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJeXEFhYmNcWiQiLCAiYWJjIiwgcmUuTSkuZ3JvdXAoMCksICJhYmMiKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5zZWFyY2gociJeXEFhYmNcWiQiLCAiXG5hYmNcbiIsIHJlLk0pKQpAQCAtNTA4LDExICs2MTQsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiIxYWEhIGEiKS5ncm91cCgwKSwgYiIxYWEhIGEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxkXERcd1xXXHNcUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxYWEhIGEiLCByZS5BU0NJSSkuZ3JvdXAoMCksICIxYWEhIGEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxkXERcd1xXXHNcUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxYWEhIGEiLCByZS5MT0NBTEUpLmdyb3VwKDApLCAiMWFhISBhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goYnIiXGRcRFx3XFdcc1xTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiIxYWEhIGEiLCByZS5MT0NBTEUpLmdyb3VwKDApLCBiIjFhYSEgYSIpCiAKKyAgICBkZWYgdGVzdF9vdGhlcl9lc2NhcGVzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCJcXCIsICdiYWQgZXNjYXBlIChlbmQgb2YgcGF0dGVybiknLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXCgiLCAnKCcpLmdyb3VwKCksICcoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJcKCIsICcpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJcXCIsICdcXCcpLmdyb3VwKCksICdcXCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbXF1dIiwgJ10nKS5ncm91cCgpLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiW1xdXSIsICdbJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbYVwtY10iLCAnLScpLmdyb3VwKCksICctJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbYVwtY10iLCAnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiW1xeYV0rIiwgJ2FeJykuZ3JvdXAoKSwgJ2FeJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbXF5hXSsiLCAnYicpKQorICAgICAgICByZS5wdXJnZSgpICAjIGZvciB3YXJuaW5ncworICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpDRUZHSElKS0xNTk9QUVJUVlhZJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnXFwlYycgJSBjLCBjKS5ncm91cCgpLCBjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXFwlYycgJSBjLCAnYScpKQorICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxeXpBQkNFRkdISUpLTE1OT1BRUlRWWFlaJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaCgnW1xcJWNdJyAlIGMsIGMpLmdyb3VwKCksIGMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdbXFwlY10nICUgYywgJ2EnKSkKKwogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihhYmMpXGIiLCAiYWJjIikuZ3JvdXAoMSksCkBAIC01NzQsOSArNzAxLDYgQEAKICAgICAgICAgIyBHcm91cCByZWZlcmVuY2UuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyhhKWIoPz1cMSlhJywgJ2FiYScpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPz1cMSljJywgJ2FiYWMnKSkKLSAgICAgICAgIyBOYW1lZCBncm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/UDxnPmEpYig/PSg/UD1nKSlhJywgJ2FiYScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/UDxnPmEpYig/PSg/UD1nKSljJywgJ2FiYWMnKSkKICAgICAgICAgIyBDb25kaXRpb25hbCBncm91cCByZWZlcmVuY2UuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PSg/KDIpeHxjKSljJywgJ2FiYycpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PSg/KDIpY3x4KSljJywgJ2FiYycpKQpAQCAtNTk0LDEzICs3MTgsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocidhYig/PCFiKWMnLCAnYWJjJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJ2FiKD88IWMpYycsICdhYmMnKSkKICAgICAgICAgIyBHcm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKGEpYSg/PD1cMSljJykKLSAgICAgICAgIyBOYW1lZCBncm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKD9QPGc+YSlhKD88PSg/UD1nKSljJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYSg/PD1cMSljJywgJ2FhYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPzw9XDEpYScsICdhYmFhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpYSg/PCFcMSljJywgJ2FhYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoYSliKD88IVwxKWEnLCAnYWJhYScpKQogICAgICAgICAjIENvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDEpYnx4KSljJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMil4fGMpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDIpYnx4KSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMil4fGIpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDEpY3x4KSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMSlifHgpKWMnLCAnYWJjJykpCiAgICAgICAgICMgR3JvdXAgdXNlZCBiZWZvcmUgZGVmaW5lZC4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWIoPzw9KD8oMSljfHgpKShjKScsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYig/PD0oPygxKWJ8eCkpKGMpJywgJ2FiYycpKQorICAgICAgICAjIEdyb3VwIGRlZmluZWQgaW4gdGhlIHNhbWUgbG9va2JlaGluZCBwYXR0ZXJuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KC4pXDIpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oP1A8YT4uKSg/UD1hKSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PShhKSg/KDIpYnx4KSkoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSguKSg/PD1cMikpKGMpJykKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9jYXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSSkuZ3JvdXAoMCksICJBQkMiKQpAQCAtNjkyLDkgKzgyOCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zcmUuZ2V0bG93ZXIob3JkKCdBJyksIDApLCBvcmQoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCByZS5MT0NBTEUpLCBvcmQoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCByZS5VTklDT0RFKSwgb3JkKCdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3NyZS5nZXRsb3dlcihvcmQoJ0EnKSwgcmUuQVNDSUkpLCBvcmQoJ2EnKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSSkuZ3JvdXAoMCksICJBQkMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKGIiYWJjIiwgYiJBQkMiLCByZS5JKS5ncm91cCgwKSwgYiJBQkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJhYmMiLCAiQUJDIiwgcmUuSXxyZS5BKS5ncm91cCgwKSwgIkFCQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goYiJhYmMiLCBiIkFCQyIsIHJlLkl8cmUuTCkuZ3JvdXAoMCksIGIiQUJDIikKIAogICAgIGRlZiB0ZXN0X25vdF9saXRlcmFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQpAQCAtNzc5LDggKzkxOCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLlgsIHJlLlZFUkJPU0UpCiAKICAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKLSAgICAgICAgZm9yIGZsYWcgaW4gW3JlLkksIHJlLk0sIHJlLlgsIHJlLlMsIHJlLkxdOgorICAgICAgICBmb3IgZmxhZyBpbiBbcmUuSSwgcmUuTSwgcmUuWCwgcmUuUywgcmUuQSwgcmUuVV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuY29tcGlsZSgnXnBhdHRlcm4kJywgZmxhZykpCisgICAgICAgIGZvciBmbGFnIGluIFtyZS5JLCByZS5NLCByZS5YLCByZS5TLCByZS5BLCByZS5MXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5jb21waWxlKGInXnBhdHRlcm4kJywgZmxhZykpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKQEAgLTgwMiwxNSArOTQzLDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlwwOCIsICJcMDAwOCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcMDEiLCAiXDAwMSIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcMDE4IiwgIlwwMDE4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlw1NjciLCBjaHIoMG8xNjcpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlw5MTEiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxeiIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjMiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzeiIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzR6IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMTEwMDAwIiwgIiIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcNTY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcdTEyMyIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHUxMjN6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcdTEyMycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcVTAwMDEyMzQiLCByJ2luY29tcGxldGUgZXNjYXBlIFxVMDAwMTIzNCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcVTAwMDEyMzR6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcVTAwMDEyMzQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXFUwMDExMDAwMCIsIHInYmFkIGVzY2FwZSBcVTAwMTEwMDAwJywgMCkKIAogICAgIGRlZiB0ZXN0X3NyZV9jaGFyYWN0ZXJfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1LCAyNTYsIDB4RkZGRiwgMHgxMDAwMCwgMHgxMEZGRkZdOgpAQCAtODMwLDEyICs5NzMsMTUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIltcVSUwOHhdIiAlIGksIGNocihpKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUlMDh4MF0iICUgaSwgY2hyKGkpKyIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUlMDh4el0iICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXDU2N10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcOTExXSIsIHInYmFkIGVzY2FwZSBcOScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXHgxel0iLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXHUxMjN6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1xVMDAwMTIzNHpdIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcVTAwMDEyMzQnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1xVMDAxMTAwMDBdIiwgcidiYWQgZXNjYXBlIFxVMDAxMTAwMDAnLCAxKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUwMDAxZDQ5Yy1cVTAwMDFkNGI1XSIsICJcVTAwMDFkNDllIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXDkxMV0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltceDF6XSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x1MTIzel0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMDEyMzR6XSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAxMTAwMDBdIiwgIiIpCiAKICAgICBkZWYgdGVzdF9zcmVfYnl0ZV9saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgpAQCAtODQ1LDE2ICs5OTEsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlx1IiwgYid1JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVSIsIGInVScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcdTEyMzQiLCBiJ3UxMjM0JykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlxVMDAwMTIzNDUiLCBiJ1UwMDAxMjM0NScpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAxOCIsIGIiXDAwMTgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlw1NjciLCBieXRlcyhbMG8xNjddKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXDkxMSIsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDEiLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxeiIsIGIiIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcNTY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAKICAgICBkZWYgdGVzdF9zcmVfYnl0ZV9jbGFzc19saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgpAQCAtODY2LDEwICsxMDE2LDI2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdV0iLCBiJ3UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVV0iLCBiJ1UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXDkxMV0iLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1x4MXpdIiwgYiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXHUxMjM0XSIsIGIndScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXFUwMDAxMjM0NV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDU2N10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDkxMV0iLCByJ2JhZCBlc2NhcGUgXDknLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltceDF6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMSkKKworICAgIGRlZiB0ZXN0X2NoYXJhY3Rlcl9zZXRfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInWycsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocidbXicsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocidbYScsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgICMgYnVnIDU0NTg1NSAtLSBUaGlzIHBhdHRlcm4gZmFpbGVkIHRvIGNhdXNlIGEgY29tcGlsZSBlcnJvciBhcyBpdAorICAgICAgICAjIHNob3VsZCwgaW5zdGVhZCBwcm92b2tpbmcgYSBUeXBlRXJyb3IuCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbYS0iLCAndW50ZXJtaW5hdGVkIGNoYXJhY3RlciBzZXQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1x3LWJdIiwgcidiYWQgY2hhcmFjdGVyIHJhbmdlIFx3LWInLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW2EtXHddIiwgcidiYWQgY2hhcmFjdGVyIHJhbmdlIGEtXHcnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW2ItYV0iLCAnYmFkIGNoYXJhY3RlciByYW5nZSBiLWEnLCAxKQogCiAgICAgZGVmIHRlc3RfYnVnXzExMzI1NChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKXwoYiknLCAnYicpLnN0YXJ0KDEpLCAtMSkKQEAgLTg4NCwxMSArMTA1MCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCiAKLSAgICBkZWYgdGVzdF9idWdfNTQ1ODU1KHNlbGYpOgotICAgICAgICAjIGJ1ZyA1NDU4NTUgLS0gVGhpcyBwYXR0ZXJuIGZhaWxlZCB0byBjYXVzZSBhIGNvbXBpbGUgZXJyb3IgYXMgaXQKLSAgICAgICAgIyBzaG91bGQsIGluc3RlYWQgcHJvdm9raW5nIGEgVHlwZUVycm9yLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ2Zvb1thLScpCi0KICAgICBkZWYgdGVzdF9idWdfNDE4NjI2KHNlbGYpOgogICAgICAgICAjIGJ1Z3MgNDE4NjI2IGF0IGFsLiAtLSBUZXN0aW5nIEdyZWcgQ2hhcG1hbidzIGFkZGl0aW9uIG9mIG9wIGNvZGUKICAgICAgICAgIyBTUkVfT1BfTUlOX1JFUEVBVF9PTkUgZm9yIGVsaW1pbmF0aW5nIHJlY3Vyc2lvbiBvbiBzaW1wbGUgdXNlcyBvZgpAQCAtOTEyLDYgKzEwNzMsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnKHgpKnknLCA1MDAwMConeCcrJ3knKS5ncm91cCgxKSwgJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCcoeCkqP3knLCA1MDAwMConeCcrJ3knKS5ncm91cCgxKSwgJ3gnKQogCisgICAgZGVmIHRlc3Rfbm90aGluZ190b19yZXBlYXQoc2VsZik6CisgICAgICAgIGZvciByZXBzIGluICcqJywgJysnLCAnPycsICd7MSwyfSc6CisgICAgICAgICAgICBmb3IgbW9kIGluICcnLCAnPyc6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignJXMlcycgJSAocmVwcywgbW9kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvIHJlcGVhdCcsIDApCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD86JXMlcyknICUgKHJlcHMsIG1vZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aGluZyB0byByZXBlYXQnLCAzKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVwZWF0KHNlbGYpOgorICAgICAgICBmb3Igb3V0ZXJfcmVwcyBpbiAnKicsICcrJywgJ3sxLDJ9JzoKKyAgICAgICAgICAgIGZvciBvdXRlcl9tb2QgaW4gJycsICc/JzoKKyAgICAgICAgICAgICAgICBvdXRlcl9vcCA9IG91dGVyX3JlcHMgKyBvdXRlcl9tb2QKKyAgICAgICAgICAgICAgICBmb3IgaW5uZXJfcmVwcyBpbiAnKicsICcrJywgJz8nLCAnezEsMn0nOgorICAgICAgICAgICAgICAgICAgICBmb3IgaW5uZXJfbW9kIGluICcnLCAnPyc6CisgICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9vcCA9IGlubmVyX3JlcHMgKyBpbm5lcl9tb2QKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4JXMlcycgJSAoaW5uZXJfb3AsIG91dGVyX29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlIHJlcGVhdCcsIDEgKyBsZW4oaW5uZXJfb3ApKQorCiAgICAgZGVmIHRlc3RfdW5saW1pdGVkX3plcm9fd2lkdGhfcmVwZWF0KHNlbGYpOgogICAgICAgICAjIElzc3VlICM5NjY5CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86YT8pKnknLCAneicpKQpAQCAtMTA2Miw4ICsxMjQxLDggQEAKIAogICAgIGRlZiB0ZXN0X2lubGluZV9mbGFncyhzZWxmKToKICAgICAgICAgIyBCdWcgIzE3MDAKLSAgICAgICAgdXBwZXJfY2hhciA9IGNocigweDFlYTApICMgTGF0aW4gQ2FwaXRhbCBMZXR0ZXIgQSB3aXRoIERvdCBCZWxsb3cKLSAgICAgICAgbG93ZXJfY2hhciA9IGNocigweDFlYTEpICMgTGF0aW4gU21hbGwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsbG93CisgICAgICAgIHVwcGVyX2NoYXIgPSAnXHUxZWEwJyAjIExhdGluIENhcGl0YWwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsb3cKKyAgICAgICAgbG93ZXJfY2hhciA9ICdcdTFlYTEnICMgTGF0aW4gU21hbGwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsb3cKIAogICAgICAgICBwID0gcmUuY29tcGlsZSh1cHBlcl9jaGFyLCByZS5JIHwgcmUuVSkKICAgICAgICAgcSA9IHAubWF0Y2gobG93ZXJfY2hhcikKQEAgLTExNDMsNiArMTMyMiw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hKVx3JywgcmUuVU5JQ09ERSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YXUpXHcnKQogCisgICAgZGVmIHRlc3RfbG9jYWxlX2ZsYWcoc2VsZik6CisgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgXywgZW5jID0gbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpCisgICAgICAgICMgU2VhcmNoIG5vbi1BU0NJSSBsZXR0ZXIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTI4LCAyNTYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGMgPSBieXRlcyhbaV0pLmRlY29kZShlbmMpCisgICAgICAgICAgICAgICAgc2xldHRlciA9IGMubG93ZXIoKQorICAgICAgICAgICAgICAgIGlmIHNsZXR0ZXIgPT0gYzogY29udGludWUKKyAgICAgICAgICAgICAgICBibGV0dGVyID0gc2xldHRlci5lbmNvZGUoZW5jKQorICAgICAgICAgICAgICAgIGlmIGxlbihibGV0dGVyKSAhPSAxOiBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGJsZXR0ZXIuZGVjb2RlKGVuYykgIT0gc2xldHRlcjogY29udGludWUKKyAgICAgICAgICAgICAgICBicGF0ID0gcmUuZXNjYXBlKGJ5dGVzKFtpXSkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCAoVW5pY29kZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJsZXR0ZXIgPSBOb25lCisgICAgICAgICAgICBicGF0ID0gYidBJworICAgICAgICAjIEJ5dGVzIHBhdHRlcm5zCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuTE9DQUxFIHwgcmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpJyArIGJwYXQsIHJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJwYXQsIHJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIHJlLkxPQ0FMRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpXHcnKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JykKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcworICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcoP0wpJykKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorCiAgICAgZGVmIHRlc3RfYnVnXzY1MDkoc2VsZik6CiAgICAgICAgICMgUmVwbGFjZW1lbnQgc3RyaW5ncyBvZiBib3RoIHR5cGVzIG11c3QgcGFyc2UgcHJvcGVybHkuCiAgICAgICAgICMgYWxsIHN0cmluZ3MKQEAgLTExNzAsOCArMTM5NSwxMCBAQAogICAgICAgICAjIGEgUnVudGltZUVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCiAgICAgICAgIGxvbmdfb3ZlcmZsb3cgPSAyKioxMjgKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZS5maW5kaXRlciwgImEiLCB7fSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgX3NyZS5jb21waWxlLCAiYWJjIiwgMCwgW2xvbmdfb3ZlcmZsb3ddKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zcmUuY29tcGlsZSwge30sIDAsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgX3NyZS5jb21waWxlKCJhYmMiLCAwLCBbbG9uZ19vdmVyZmxvd10sIDAsIFtdLCBbXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgX3NyZS5jb21waWxlKHt9LCAwLCBbXSwgMCwgW10sIFtdKQogCiAgICAgZGVmIHRlc3Rfc2VhcmNoX2RvdF91bmljb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzYWJjLScpKQpAQCAtMTE5Myw4ICsxNDIwLDkgQEAKICAgICBkZWYgdGVzdF9idWdfMTM4OTkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzODk5OiByZSBwYXR0ZXJuIHIiW1xBXSIgc2hvdWxkIHdvcmsgbGlrZSAiQSIgYnV0IG1hdGNoZXMKICAgICAgICAgIyBub3RoaW5nLiBEaXR0byBCIGFuZCBaLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CkBAIC0xMjUzLDEzICsxNDgxLDEzIEBACiAKICAgICBkZWYgdGVzdF9iYWNrcmVmX2dyb3VwX25hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE3MzQxOiBQb29yIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb21waWxpbmcgaW52YWxpZCByZWdleAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3JlX2NvbnN0YW50cy5lcnJvciwgJzxmb28+Jyk6Ci0gICAgICAgICAgICByZS5jb21waWxlKCcoP1A9PGZvbz4pJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPTxmb28+KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnPGZvbz4nIiwgNCkKIAogICAgIGRlZiB0ZXN0X2dyb3VwX25hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE3MzQxOiBQb29yIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb21waWxpbmcgaW52YWxpZCByZWdleAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3JlX2NvbnN0YW50cy5lcnJvciwgJ1w/Zm9vJyk6Ci0gICAgICAgICAgICByZS5jb21waWxlKCcoP1A8P2Zvbz4pJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD9mb28+KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnP2ZvbyciLCA0KQogCiAgICAgZGVmIHRlc3RfaXNzdWUxNzk5OChzZWxmKToKICAgICAgICAgZm9yIHJlcHMgaW4gJyonLCAnKycsICc/JywgJ3sxfSc6CkBAIC0xMzA5LDIyICsxNTM3LDIyIEBACiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0OgogICAgICAgICAgICAgcmUuY29tcGlsZShwYXQsIHJlLkRFQlVHKQogICAgICAgICBkdW1wID0gJycnXAotc3VicGF0dGVybiAxCi0gIGxpdGVyYWwgNDYKLXN1YnBhdHRlcm4gTm9uZQotICBicmFuY2gKLSAgICBpbgotICAgICAgbGl0ZXJhbCA5OQotICAgICAgbGl0ZXJhbCAxMDQKLSAgb3IKLSAgICBsaXRlcmFsIDExMgotICAgIGxpdGVyYWwgMTIxCi1zdWJwYXR0ZXJuIE5vbmUKLSAgZ3JvdXByZWZfZXhpc3RzIDEKLSAgICBhdCBhdF9lbmQKLSAgZWxzZQotICAgIGxpdGVyYWwgNTgKLSAgICBsaXRlcmFsIDMyCitTVUJQQVRURVJOIDEKKyAgTElURVJBTCA0NgorU1VCUEFUVEVSTiBOb25lCisgIEJSQU5DSAorICAgIElOCisgICAgICBMSVRFUkFMIDk5CisgICAgICBMSVRFUkFMIDEwNAorICBPUgorICAgIExJVEVSQUwgMTEyCisgICAgTElURVJBTCAxMjEKK1NVQlBBVFRFUk4gTm9uZQorICBHUk9VUFJFRl9FWElTVFMgMQorICAgIEFUIEFUX0VORAorICBFTFNFCisgICAgTElURVJBTCA1OAorICAgIExJVEVSQUwgMzIKICcnJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5nZXR2YWx1ZSgpLCBkdW1wKQogICAgICAgICAjIERlYnVnIG91dHB1dCBpcyBvdXRwdXQgYWdhaW4gZXZlbiBhIHNlY29uZCB0aW1lIChieXBhc3NpbmcKQEAgLTEzOTIsNiArMTYyMCw1NSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChiJyg/TGkpXHhjNScsIGInXHhlNScpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChiJyg/TGkpXHhlNScsIGInXHhjNScpKQogCisgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuY29tcGlsZSgnKFx1MjBhYykpJykKKyAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlcnIucGF0dGVybiwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wYXR0ZXJuLCAnKFx1MjBhYykpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCA0KQorICAgICAgICBzZWxmLmFzc2VydEluKGVyci5tc2csIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCcgYXQgcG9zaXRpb24gMycsIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcgYXQgcG9zaXRpb24gMycsIGVyci5tc2cpCisgICAgICAgICMgQnl0ZXMgcGF0dGVybgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoYicoXHhhNCkpJykKKyAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlcnIucGF0dGVybiwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBhdHRlcm4sIGInKFx4YTQpKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgMykKKyAgICAgICAgIyBNdWx0aWxpbmUgcGF0dGVybgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoIiIiCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICBhYmMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAiIiIsIHJlLlZFUkJPU0UpCisgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIDc3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCAxNykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIubXNnLCBzdHIoZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIGF0IHBvc2l0aW9uIDc3Jywgc3RyKGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyhsaW5lIDUsIGNvbHVtbiAxNyknLCBzdHIoZXJyKSkKKworICAgIGRlZiB0ZXN0X21pc2NfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKCcsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJygoYXxiKScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyhhfGIpKScsICd1bmJhbGFuY2VkIHBhcmVudGhlc2lzJywgNSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/eiknLCAndW5rbm93biBleHRlbnNpb24gP3onLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peiknLCAndW5rbm93biBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAyKQorCiAKIGNsYXNzIFBhdHRlcm5SZXByVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjaGVjayhzZWxmLCBwYXR0ZXJuLCBleHBlY3RlZCk6CkBAIC0xNDM2LDYgKzE3MTMsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19mbGFncyhiJ2J5dGVzIHBhdHRlcm4nLCByZS5BLAogICAgICAgICAgICAgICAgICAgICAgICAgICJyZS5jb21waWxlKGInYnl0ZXMgcGF0dGVybicsIHJlLkFTQ0lJKSIpCiAKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmxhZ3MoYidieXRlcyBwYXR0ZXJuJywgcmUuTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmUuY29tcGlsZShiJ2J5dGVzIHBhdHRlcm4nLCByZS5MT0NBTEUpIikKKwogICAgIGRlZiB0ZXN0X3F1b3RlcyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygncmFuZG9tICJkb3VibGUgcXVvdGVkIiBwYXR0ZXJuJywKICAgICAgICAgICAgICcnJ3JlLmNvbXBpbGUoJ3JhbmRvbSAiZG91YmxlIHF1b3RlZCIgcGF0dGVybicpJycnKQpAQCAtMTU0OSw4ICsxODMwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnYnl0ZXMgcGF0dGVybiBtYXRjaCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgYnBhdCA9IHJlLmNvbXBpbGUoYnBhdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShicGF0LnNlYXJjaChicykpCisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKGJwYXQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChicykpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggTE9DQUxFIGVuYWJsZWQsIGFuZCBjaGVjayB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgICMgc3RpbGwgc3VjY2VlZHMuCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdsb2NhbGUtc2Vuc2l0aXZlIG1hdGNoJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKGJwYXQsIHJlLkxPQ0FMRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9iai5zZWFyY2goYnMpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnPT09IEZhaWxzIG9uIGxvY2FsZS1zZW5zaXRpdmUgbWF0Y2gnLCB0KQogCiAgICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggdGhlIHNlYXJjaCBhcmVhIGxpbWl0ZWQgdG8gdGhlIGV4dGVudAogICAgICAgICAgICAgICAgICMgb2YgdGhlIG1hdGNoIGFuZCBzZWUgaWYgaXQgc3RpbGwgc3VjY2VlZHMuICBcQiB3aWxsCkBAIC0xNTY4LDEzICsxODU3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChzKSkKIAotICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIExPQ0FMRSBlbmFibGVkLCBhbmQgY2hlY2sgdGhhdCBpdAotICAgICAgICAgICAgICAgICMgc3RpbGwgc3VjY2VlZHMuCi0gICAgICAgICAgICAgICAgaWYgJyg/dSknIG5vdCBpbiBwYXR0ZXJuOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnbG9jYWxlLXNlbnNpdGl2ZSBtYXRjaCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5MT0NBTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob2JqLnNlYXJjaChzKSkKLQogICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIFVOSUNPREUgbG9jYWxlIGVuYWJsZWQsIGFuZCBjaGVjawogICAgICAgICAgICAgICAgICMgdGhhdCBpdCBzdGlsbCBzdWNjZWVkcy4KICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgndW5pY29kZS1zZW5zaXRpdmUgbWF0Y2gnKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CmluZGV4IDBiMmIwYTUuLjM1MzMwYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQpAQCAtMiw5ICsyLDEwIEBACiBWZXJ5IG1pbmltYWwgdW5pdHRlc3RzIGZvciBwYXJ0cyBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgogIiIiCiBpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUsIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiAjIFNraXAgdGVzdHMgaWYgdGhlcmUgaXMgbm8gcmVhZGxpbmUgbW9kdWxlCiByZWFkbGluZSA9IGltcG9ydF9tb2R1bGUoJ3JlYWRsaW5lJykKQEAgLTQyLDYgKzQzLDQ1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAxKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihyZWFkbGluZSwgImFwcGVuZF9oaXN0b3J5X2ZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwZW5kX2hpc3Rvcnkgbm90IGF2YWlsYWJsZSIpCisgICAgZGVmIHRlc3Rfd3JpdGVfcmVhZF9hcHBlbmQoc2VsZik6CisgICAgICAgIGhmaWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgaGZpbGUuY2xvc2UoKQorICAgICAgICBoZmlsZW5hbWUgPSBoZmlsZS5uYW1lCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIGhmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3Qgd3JpdGUtY2xlYXItcmVhZCA9PSBub3AKKyAgICAgICAgcmVhZGxpbmUuY2xlYXJfaGlzdG9yeSgpCisgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJmaXJzdCBsaW5lIikKKyAgICAgICAgcmVhZGxpbmUuYWRkX2hpc3RvcnkoInNlY29uZCBsaW5lIikKKyAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKworICAgICAgICByZWFkbGluZS5jbGVhcl9oaXN0b3J5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAwKQorCisgICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMSksICJmaXJzdCBsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDIpLCAic2Vjb25kIGxpbmUiKQorCisgICAgICAgICMgdGVzdCBhcHBlbmQKKyAgICAgICAgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZSgxLCBoZmlsZW5hbWUpCisgICAgICAgIHJlYWRsaW5lLmNsZWFyX2hpc3RvcnkoKQorICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDEpLCAiZmlyc3QgbGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgyKSwgInNlY29uZCBsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDMpLCAic2Vjb25kIGxpbmUiKQorCisgICAgICAgICMgdGVzdCAnbm8gc3VjaCBmaWxlJyBiZWhhdmlvdXIKKyAgICAgICAgb3MudW5saW5rKGhmaWxlbmFtZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICByZWFkbGluZS5hcHBlbmRfaGlzdG9yeV9maWxlKDEsIGhmaWxlbmFtZSkKKworICAgICAgICAjIHdyaXRlX2hpc3RvcnlfZmlsZSBjYW4gY3JlYXRlIHRoZSB0YXJnZXQKKyAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKwogCiBjbGFzcyBUZXN0UmVhZGxpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01Nyw4ICs5Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0SGlzdG9yeU1hbmlwdWxhdGlvbiwgVGVzdFJlYWRsaW5lKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKaW5kZXggYWU2N2YwNi4uYTUxYzRkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUsIHZlcmJvc2UKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTcwLDE4ICs3MCwxOCBAQAogICAgICAgICBlcShyKFsxLCAyLCAzLCA0LCA1LCA2LCA3XSksICJbMSwgMiwgMywgNCwgNSwgNiwgLi4uXSIpCiAKICAgICAgICAgIyBTZXRzIGdpdmUgdXAgYWZ0ZXIgNiBhcyB3ZWxsCi0gICAgICAgIGVxKHIoc2V0KFtdKSksICJzZXQoW10pIikKLSAgICAgICAgZXEocihzZXQoWzFdKSksICJzZXQoWzFdKSIpCi0gICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzXSkpLCAic2V0KFsxLCAyLCAzXSkiKQotICAgICAgICBlcShyKHNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgInNldChbMSwgMiwgMywgNCwgNSwgNl0pIikKLSAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0pIikKKyAgICAgICAgZXEocihzZXQoW10pKSwgInNldCgpIikKKyAgICAgICAgZXEocihzZXQoWzFdKSksICJ7MX0iKQorICAgICAgICBlcShyKHNldChbMSwgMiwgM10pKSwgInsxLCAyLCAzfSIpCisgICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkpLCAiezEsIDIsIDMsIDQsIDUsIDZ9IikKKyAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJ7MSwgMiwgMywgNCwgNSwgNiwgLi4ufSIpCiAKICAgICAgICAgIyBGcm96ZW5zZXRzIGdpdmUgdXAgYWZ0ZXIgNiBhcyB3ZWxsCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFtdKSksICJmcm96ZW5zZXQoW10pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzFdKSksICJmcm96ZW5zZXQoWzFdKSIpCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzXSkpLCAiZnJvemVuc2V0KFsxLCAyLCAzXSkiKQotICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgImZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoW10pKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzFdKSksICJmcm96ZW5zZXQoezF9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzXSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0pIikKIAogICAgICAgICAjIGNvbGxlY3Rpb25zLmRlcXVlIGFmdGVyIDYKICAgICAgICAgZXEocihkZXF1ZShbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgImRlcXVlKFsxLCAyLCAzLCA0LCA1LCA2LCAuLi5dKSIpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgIGVxKHIoZCksICJ7J2FsaWNlJzogMSwgJ2FydGh1cic6IDEsICdib2InOiAyLCAnY2hhcmxlcyc6IDMsIC4uLn0iKQogCiAgICAgICAgICMgYXJyYXkuYXJyYXkgYWZ0ZXIgNS4KLSAgICAgICAgZXEocihhcnJheSgnaScpKSwgImFycmF5KCdpJywgW10pIikKKyAgICAgICAgZXEocihhcnJheSgnaScpKSwgImFycmF5KCdpJykiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzFdKSksICJhcnJheSgnaScsIFsxXSkiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDJdKSksICJhcnJheSgnaScsIFsxLCAyXSkiKQogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDIsIDNdKSksICJhcnJheSgnaScsIFsxLCAyLCAzXSkiKQpAQCAtMTAzLDYgKzEwMywyMCBAQAogICAgICAgICBlcShyKGFycmF5KCdpJywgWzEsIDIsIDMsIDQsIDUsIDZdKSksCiAgICAgICAgICAgICAgICAgICAgImFycmF5KCdpJywgWzEsIDIsIDMsIDQsIDUsIC4uLl0pIikKIAorICAgIGRlZiB0ZXN0X3NldF9saXRlcmFsKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEocih7MX0pLCAiezF9IikKKyAgICAgICAgZXEocih7MSwgMiwgM30pLCAiezEsIDIsIDN9IikKKyAgICAgICAgZXEocih7MSwgMiwgMywgNCwgNSwgNn0pLCAiezEsIDIsIDMsIDQsIDUsIDZ9IikKKyAgICAgICAgZXEocih7MSwgMiwgMywgNCwgNSwgNiwgN30pLCAiezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0iKQorCisgICAgZGVmIHRlc3RfZnJvemVuc2V0KHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezF9KSksICJmcm96ZW5zZXQoezF9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KHsxLCAyLCAzfSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNn0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIDd9KSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0pIikKKwogICAgIGRlZiB0ZXN0X251bWJlcnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBlcShyKDEyMyksIHJlcHIoMTIzKSkKQEAgLTEyMyw3ICsxMzcsNyBAQAogICAgICAgICBlcShyKGkyKSwgZXhwZWN0ZWQpCiAKICAgICAgICAgaTMgPSBDbGFzc1dpdGhGYWlsaW5nUmVwcigpCi0gICAgICAgIGVxKHIoaTMpLCAoIjxDbGFzc1dpdGhGYWlsaW5nUmVwciBpbnN0YW5jZSBhdCAleD4iJWlkKGkzKSkpCisgICAgICAgIGVxKHIoaTMpLCAoIjxDbGFzc1dpdGhGYWlsaW5nUmVwciBpbnN0YW5jZSBhdCAlI3g+IiVpZChpMykpKQogCiAgICAgICAgIHMgPSByKENsYXNzV2l0aEZhaWxpbmdSZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCI8Y2xhc3MgIikpCkBAIC0zNzMsMTEgKzM4Nyw1IEBACiAgICAgICAgIG0uYXBwZW5kKG0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgJzxhLCBiLCBjLCBkLCBlLCArKyssIHgsICsrKz4nKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFJlcHJUZXN0cykKLSAgICBydW5fdW5pdHRlc3QoTG9uZ1JlcHJUZXN0KQotICAgIHJ1bl91bml0dGVzdChUZXN0UmVjdXJzaXZlUmVwcikKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKaW5kZXggMGI2MjlkYy4uOTQxODVhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQpAQCAtMzI2LDggKzMyNiw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9wKHgsIHkpLCBUcnVlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChWZWN0b3JUZXN0LCBOdW1iZXJUZXN0LCBNaXNjVGVzdCwgRGljdFRlc3QsIExpc3RUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQppbmRleCAxMWE3YmQyLi45ZDRkMGJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgcmxjb21wbGV0ZXIKQEAgLTY1LDkgKzY0LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Umxjb21wbGV0ZXIpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weSBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKaW5kZXggNzg2YjgxMy4uNWE3OTliZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CkBAIC04LDEwICs4LDEwIEBACiBpbXBvcnQgaW1wb3J0bGliLCBpbXBvcnRsaWIubWFjaGluZXJ5LCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHB5X2NvbXBpbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCi0gICAgZm9yZ2V0LCBtYWtlX2xlZ2FjeV9weWMsIHJ1bl91bml0dGVzdCwgdW5sb2FkLCB2ZXJib3NlLCBub190cmFjaW5nLAotICAgIGNyZWF0ZV9lbXB0eV9maWxlKQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKLSAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LCB0ZW1wX2RpcikKKyAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgdW5sb2FkLCB2ZXJib3NlLCBub190cmFjaW5nLAorICAgIGNyZWF0ZV9lbXB0eV9maWxlLCB0ZW1wX2RpcikKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKKyAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0KQogCiAKIGltcG9ydCBydW5weQpAQCAtMjY5LDcgKzI2OSw3IEBACiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoZXgpICMgUGVyc2lzdCB3aXRoIGNsZWFuaW5nIHVwCiAKICAgICBkZWYgX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhzZWxmLCBucywgYWx0ZXJfc3lzKToKLSAgICAgICAgY2hhcl90b19hZGQgPSAiYyIgaWYgX19kZWJ1Z19fIGVsc2UgIm8iCisgICAgICAgIGNoYXJfdG9fYWRkID0gImMiCiAgICAgICAgIG5zWyJfX2ZpbGVfXyJdICs9IGNoYXJfdG9fYWRkCiAgICAgICAgIG5zWyJfX2NhY2hlZF9fIl0gPSBuc1siX19maWxlX18iXQogICAgICAgICBzcGVjID0gbnNbIl9fc3BlY19fIl0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5IGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKaW5kZXggOTBmMzAxNi4uMjQxMTg5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zYXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKQEAgLTIwMCw2ICsyMDAsMTMgQEAKICAgICAgICAgcGFyc2VTdHJpbmcocywgWE1MR2VuZXJhdG9yKHJlc3VsdCwgJ3V0Zi04JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmdldHZhbHVlKCksIHhtbF9zdHIoc2VsZi5kYXRhLCAndXRmLTgnKSkKIAorICAgIGRlZiB0ZXN0X3BhcnNlU3RyaW5nX3RleHQoc2VsZik6CisgICAgICAgIGVuY29kaW5ncyA9ICgndXMtYXNjaWknLCAnaXNvLTg4NTktMScsICd1dGYtOCcsCisgICAgICAgICAgICAgICAgICAgICAndXRmLTE2JywgJ3V0Zi0xNmxlJywgJ3V0Zi0xNmJlJykKKyAgICAgICAgZm9yIGVuY29kaW5nIGluIGVuY29kaW5nczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGFyc2VTdHJpbmcoeG1sX3N0cihzZWxmLmRhdGEsIGVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5jaGVja19wYXJzZVN0cmluZyhzZWxmLmRhdGEpCisKICAgICBkZWYgdGVzdF9wYXJzZVN0cmluZ19ieXRlcyhzZWxmKToKICAgICAgICAgIyBVVEYtOCBpcyBkZWZhdWx0IGVuY29kaW5nLCBVUy1BU0NJSSBpcyBjb21wYXRpYmxlIHdpdGggVVRGLTgsCiAgICAgICAgICMgVVRGLTE2IGlzIGF1dG9kZXRlY3RlZApAQCAtMzA2LDEyICszMTMsMjQgQEAKICAgICBkZWYgbWFrZV9ieXRlX3N0cmVhbShzZWxmKToKICAgICAgICAgcmV0dXJuIEJ5dGVzSU8oYiJUaGlzIGlzIGEgYnl0ZSBzdHJlYW0uIikKIAorICAgIGRlZiBtYWtlX2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgIHJldHVybiBTdHJpbmdJTygiVGhpcyBpcyBhIGNoYXJhY3RlciBzdHJlYW0uIikKKwogICAgIGRlZiBjaGVja0NvbnRlbnQoc2VsZiwgc3RyZWFtLCBjb250ZW50KToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3RyZWFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5yZWFkKCksIGNvbnRlbnQpCiAgICAgICAgIHN0cmVhbS5jbG9zZSgpCiAKIAorICAgIGRlZiB0ZXN0X2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgICMgSWYgdGhlIHNvdXJjZSBpcyBhbiBJbnB1dFNvdXJjZSB3aXRoIGEgY2hhcmFjdGVyIHN0cmVhbSwgdXNlIGl0LgorICAgICAgICBzcmMgPSBJbnB1dFNvdXJjZShzZWxmLmZpbGUpCisgICAgICAgIHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oc2VsZi5tYWtlX2NoYXJhY3Rlcl9zdHJlYW0oKSkKKyAgICAgICAgcHJlcCA9IHByZXBhcmVfaW5wdXRfc291cmNlKHNyYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJlcC5nZXRCeXRlU3RyZWFtKCkpCisgICAgICAgIHNlbGYuY2hlY2tDb250ZW50KHByZXAuZ2V0Q2hhcmFjdGVyU3RyZWFtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgY2hhcmFjdGVyIHN0cmVhbS4iKQorCiAgICAgZGVmIHRlc3RfYnl0ZV9zdHJlYW0oc2VsZik6CiAgICAgICAgICMgSWYgdGhlIHNvdXJjZSBpcyBhbiBJbnB1dFNvdXJjZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjaGFyYWN0ZXIKICAgICAgICAgIyBzdHJlYW0gYnV0IGRvZXMgaGF2ZSBhIGJ5dGUgc3RyZWFtLCB1c2UgdGhlIGJ5dGUgc3RyZWFtLgpAQCAtMzQ2LDYgKzM2NSwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrQ29udGVudChwcmVwLmdldEJ5dGVTdHJlYW0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJUaGlzIGlzIGEgYnl0ZSBzdHJlYW0uIikKIAorICAgIGRlZiB0ZXN0X3RleHRfZmlsZShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGEgdGV4dCBmaWxlLWxpa2Ugb2JqZWN0LCB1c2UgaXQgYXMgYSBjaGFyYWN0ZXIKKyAgICAgICAgIyBzdHJlYW0uCisgICAgICAgIHByZXAgPSBwcmVwYXJlX2lucHV0X3NvdXJjZShzZWxmLm1ha2VfY2hhcmFjdGVyX3N0cmVhbSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcmVwLmdldEJ5dGVTdHJlYW0oKSkKKyAgICAgICAgc2VsZi5jaGVja0NvbnRlbnQocHJlcC5nZXRDaGFyYWN0ZXJTdHJlYW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtLiIpCisKIAogIyA9PT09PSBYTUxHZW5lcmF0b3IKIApAQCAtMTAyNSw2ICsxMDUyLDE5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3Rlc3Rfb3V0KQogCisgICAgZGVmIHRlc3RfZXhwYXRfaW5wc291cmNlX2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNyZWF0ZV9wYXJzZXIoKQorICAgICAgICByZXN1bHQgPSBCeXRlc0lPKCkKKyAgICAgICAgeG1sZ2VuID0gWE1MR2VuZXJhdG9yKHJlc3VsdCkKKworICAgICAgICBwYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoeG1sZ2VuKQorICAgICAgICBpbnBzcmMgPSBJbnB1dFNvdXJjZSgpCisgICAgICAgIHdpdGggb3BlbihURVNUX1hNTEZJTEUsICdydCcsIGVuY29kaW5nPSdpc28tODg1OS0xJykgYXMgZjoKKyAgICAgICAgICAgIGlucHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oZikKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZShpbnBzcmMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3Rlc3Rfb3V0KQorCiAgICAgIyA9PT09PSBJbmNyZW1lbnRhbFBhcnNlciBzdXBwb3J0CiAKICAgICBkZWYgdGVzdF9leHBhdF9pbmNyZW1lbnRhbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CmluZGV4IGIzMjU1NDUuLjQyMzliMjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY29wZS5weQpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgY3B5dGhvbl9vbmx5LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIGNweXRob25fb25seQogCiAKIGNsYXNzIFNjb3BlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzU3LDggKzc1Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoU2NvcGVUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMzcyZDZhNy4uYTc2ODBmOAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5CkBAIC0xLDggKzEsOCBAQAotIiIiVW5pdHRlc3RzIGZvciB0ZXN0LnNjcmlwdF9oZWxwZXIuICBXaG8gdGVzdHMgdGhlIHRlc3QgaGVscGVyPyIiIgorIiIiVW5pdHRlc3RzIGZvciB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlci4gIFdobyB0ZXN0cyB0aGUgdGVzdCBoZWxwZXI/IiIiCiAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIApAQCAtMjMsMjEgKzIzLDIxIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGVycm9yX2NvbnRleHQ6CiAgICAgICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soJy1jJywgJ3N5cy5leGl0KDApJykKICAgICAgICAgZXJyb3JfbXNnID0gc3RyKGVycm9yX2NvbnRleHQuZXhjZXB0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjb21tYW5kIGxpbmUgd2FzOicsIGVycm9yX21zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29tbWFuZCBsaW5lOicsIGVycm9yX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3lzLmV4aXQoMCknLCBlcnJvcl9tc2csIG1zZz0ndW5leHBlY3RlZCBjb21tYW5kIGxpbmUnKQogCiAgICAgZGVmIHRlc3RfYXNzZXJ0X3B5dGhvbl9mYWlsdXJlX3JhaXNlcyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcikgYXMgZXJyb3JfY29udGV4dDoKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsICdpbXBvcnQgc3lzOyBzeXMuZXhpdCgwKScpCiAgICAgICAgIGVycm9yX21zZyA9IHN0cihlcnJvcl9jb250ZXh0LmV4Y2VwdGlvbikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignUHJvY2VzcyByZXR1cm4gY29kZSBpcyAwLCcsIGVycm9yX21zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignUHJvY2VzcyByZXR1cm4gY29kZSBpcyAwXG4nLCBlcnJvcl9tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDApJywgZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgIG1zZz0ndW5leHBlY3RlZCBjb21tYW5kIGxpbmUuJykKIAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLlBvcGVuJykKICAgICBkZWYgdGVzdF9hc3NlcnRfcHl0aG9uX2lzb2xhdGVkX3doZW5fZW52X25vdF9yZXF1aXJlZChzZWxmLCBtb2NrX3BvcGVuKToKICAgICAgICAgd2l0aCBtb2NrLnBhdGNoLm9iamVjdChzY3JpcHRfaGVscGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPUZhbHNlKSBhcyBtb2NrX2lyZV9mdW5jOgogICAgICAgICAgICAgbW9ja19wb3Blbi5zaWRlX2VmZmVjdCA9IFJ1bnRpbWVFcnJvcignYmFpbCBvdXQgb2YgdW5pdHRlc3QnKQogICAgICAgICAgICAgdHJ5OgpAQCAtNTYsNyArNTYsNyBAQAogICAgIGRlZiB0ZXN0X2Fzc2VydF9weXRob25fbm90X2lzb2xhdGVkX3doZW5fZW52X2lzX3JlcXVpcmVkKHNlbGYsIG1vY2tfcG9wZW4pOgogICAgICAgICAiIiJFbnN1cmUgdGhhdCAtSSBpcyBub3QgcGFzc2VkIHdoZW4gdGhlIGVudmlyb25tZW50IGlzIHJlcXVpcmVkLiIiIgogICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNjcmlwdF9oZWxwZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZSkgYXMgbW9ja19pcmVfZnVuYzoKICAgICAgICAgICAgIG1vY2tfcG9wZW4uc2lkZV9lZmZlY3QgPSBSdW50aW1lRXJyb3IoJ2JhaWwgb3V0IG9mIHVuaXR0ZXN0JykKICAgICAgICAgICAgIHRyeToKQEAgLTY5LDcgKzY5LDcgQEAKIAogCiBjbGFzcyBUZXN0U2NyaXB0SGVscGVyRW52aXJvbm1lbnQodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkNvZGUgY292ZXJhZ2UgZm9yIF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpLiIiIgorICAgICIiIkNvZGUgY292ZXJhZ2UgZm9yIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKQEAgLTg0LDIyICs4NCwyMiBAQAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnKQogICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50X3RydWUoc2VsZiwgbW9ja19jaGVja19jYWxsKToKICAgICAgICAgbW9ja19jaGVja19jYWxsLnNpZGVfZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoJycsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbW9ja19jaGVja19jYWxsLmNhbGxfY291bnQpCiAKICAgICBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19jYWxsJykKICAgICBkZWYgdGVzdF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudF9mYWxzZShzZWxmLCBtb2NrX2NoZWNrX2NhbGwpOgogICAgICAgICAjIFRoZSBtb2NrZWQgc3VicHJvY2Vzcy5jaGVja19jYWxsIGZha2VzIGEgbm8tZXJyb3IgcHJvY2Vzcy4KLSAgICAgICAgc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBtb2NrX2NoZWNrX2NhbGwuY2FsbF9jb3VudCkKIAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnKQogICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50X2RldGFpbHMoc2VsZiwgbW9ja19jaGVja19jYWxsKToKLSAgICAgICAgc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBtb2NrX2NoZWNrX2NhbGwuY2FsbF9jb3VudCkKICAgICAgICAgY2hlY2tfY2FsbF9jb21tYW5kID0gbW9ja19jaGVja19jYWxsLmNhbGxfYXJnc1swXVswXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5leGVjdXRhYmxlLCBjaGVja19jYWxsX2NvbW1hbmRbMF0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CmluZGV4IDhmOWExYzkuLmE5NzNmM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CkBAIC03NSw5ICs3NSw4IEBACiAgICAgICAgIGFbOl0gPSBbRigpXSAqIDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0LnNlbGVjdChbXSwgYSwgW10pLCAoW10sIGFbOjVdLCBbXSkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTZWxlY3RUZXN0Q2FzZSkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKaW5kZXggOTUyZmRhNi4uNDU0YzE3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKQEAgLTksMTAgKzksNyBAQAogZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QubW9jawotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogdHJ5OgogICAgIGltcG9ydCByZXNvdXJjZQogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjUsNyArMjIsNyBAQAogICAgIGRlZiBzb2NrZXRwYWlyKGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0sIHByb3RvPTApOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykgYXMgbDoKICAgICAgICAgICAgIGwuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKLSAgICAgICAgICAgIGwubGlzdGVuKDMpCisgICAgICAgICAgICBsLmxpc3RlbigpCiAgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMuY29ubmVjdChsLmdldHNvY2tuYW1lKCkpCkBAIC0xODgsOCArMTg1LDggQEAKICAgICAgICAgcy5yZWdpc3Rlcih3ciwgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQogCiAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcy5nZXRfa2V5LCByZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgd3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCByZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzLmdldF9rZXksIHdyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbWFwcGluZy5fX2dldGl0ZW1fXywgcmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtYXBwaW5nLl9fZ2V0aXRlbV9fLCB3cikKIApAQCAtMjU4LDggKzI1NSw4IEBACiAgICAgICAgICAgICBzZWwucmVnaXN0ZXIocmQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICAgc2VsLnJlZ2lzdGVyKHdyLCBzZWxlY3RvcnMuRVZFTlRfV1JJVEUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgcmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzLmdldF9rZXksIHdyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHMuZ2V0X2tleSwgcmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCB3cikKIAogICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKICAgICAgICAgcyA9IHNlbGYuU0VMRUNUT1IoKQpAQCAtMzYwLDcgKzM1NywzNSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwuYWxhcm0oKSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IikKLSAgICBkZWYgdGVzdF9zZWxlY3RfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3NlbGVjdF9pbnRlcnJ1cHRfZXhjKHNlbGYpOgorICAgICAgICBzID0gc2VsZi5TRUxFQ1RPUigpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorCisgICAgICAgIHJkLCB3ciA9IHNlbGYubWFrZV9zb2NrZXRwYWlyKCkKKworICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgaGFuZGxlcigqYXJncyk6CisgICAgICAgICAgICByYWlzZSBJbnRlcnJ1cHRTZWxlY3QKKworICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuYWxhcm0sIDApCisKKyAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisKKyAgICAgICAgcy5yZWdpc3RlcihyZCwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCisgICAgICAgIHQgPSB0aW1lKCkKKyAgICAgICAgIyBzZWxlY3QoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCB3aGljaCByYWlzZXMgYW4gZXhjZXB0aW9uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW50ZXJydXB0U2VsZWN0KToKKyAgICAgICAgICAgIHMuc2VsZWN0KDMwKQorICAgICAgICAjIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhlIHRpbWVvdXQgb2YgMzAgc2Vjb25kcworICAgICAgICBzZWxmLmFzc2VydExlc3ModGltZSgpIC0gdCwgNS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwuYWxhcm0oKSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICBkZWYgdGVzdF9zZWxlY3RfaW50ZXJydXB0X25vcmFpc2Uoc2VsZik6CiAgICAgICAgIHMgPSBzZWxmLlNFTEVDVE9SKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCiAKQEAgLTM3NCw4ICszOTksMTEgQEAKIAogICAgICAgICBzLnJlZ2lzdGVyKHJkLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKICAgICAgICAgdCA9IHRpbWUoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VsZWN0KDIpKQotICAgICAgICBzZWxmLmFzc2VydExlc3ModGltZSgpIC0gdCwgMi41KQorICAgICAgICAjIHNlbGVjdCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBidXQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXNuJ3QKKyAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24sIHNvIHNlbGVjdCgpIHNob3VsZCBieSByZXRyaWVzIHdpdGggYSByZWNvbXB1dGVkCisgICAgICAgICMgdGltZW91dAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VsZWN0KDEuNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHRpbWUoKSAtIHQsIDEuMCkKIAogCiBjbGFzcyBTY2FsYWJsZVNlbGVjdG9yTWl4SW46CkBAIC00NTUsMTAgKzQ4MywxOCBAQAogICAgIFNFTEVDVE9SID0gZ2V0YXR0cihzZWxlY3RvcnMsICdLcXVldWVTZWxlY3RvcicsIE5vbmUpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3RvcnMsICdEZXZwb2xsU2VsZWN0b3InKSwKKyAgICAgICAgICAgICAgICAgICAgICJUZXN0IG5lZWRzIHNlbGVjdG9ycy5EZXZwb2xsU2VsZWN0b3IiKQorY2xhc3MgRGV2cG9sbFNlbGVjdG9yVGVzdENhc2UoQmFzZVNlbGVjdG9yVGVzdENhc2UsIFNjYWxhYmxlU2VsZWN0b3JNaXhJbik6CisKKyAgICBTRUxFQ1RPUiA9IGdldGF0dHIoc2VsZWN0b3JzLCAnRGV2cG9sbFNlbGVjdG9yJywgTm9uZSkKKworCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtEZWZhdWx0U2VsZWN0b3JUZXN0Q2FzZSwgU2VsZWN0U2VsZWN0b3JUZXN0Q2FzZSwKICAgICAgICAgICAgICBQb2xsU2VsZWN0b3JUZXN0Q2FzZSwgRXBvbGxTZWxlY3RvclRlc3RDYXNlLAotICAgICAgICAgICAgIEtxdWV1ZVNlbGVjdG9yVGVzdENhc2VdCisgICAgICAgICAgICAgS3F1ZXVlU2VsZWN0b3JUZXN0Q2FzZSwgRGV2cG9sbFNlbGVjdG9yVGVzdENhc2VdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNjVlNDI0My4uYzI1Mzg2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTkzMSw3ICs5MzEsNyBAQAogCiBjbGFzcyBUZXN0QmFzaWNPcHNCeXRlcyhUZXN0QmFzaWNPcHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuY2FzZSAgID0gInN0cmluZyBzZXQiCisgICAgICAgIHNlbGYuY2FzZSAgID0gImJ5dGVzIHNldCIKICAgICAgICAgc2VsZi52YWx1ZXMgPSBbYiJhIiwgYiJiIiwgYiJjIl0KICAgICAgICAgc2VsZi5zZXQgICAgPSBzZXQoc2VsZi52YWx1ZXMpCiAgICAgICAgIHNlbGYuZHVwICAgID0gc2V0KHNlbGYudmFsdWVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggZDI4MDlhZS4uNGZhZmRkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKICMgVGhlIG9yaWdpbmFsIHRlc3QgZGF0YSBzZXQgd2FzIGZyb20gc2hlbGx3b3JkcywgYnkgSGFydG11dCBHb2ViZWwuCkBAIC0xOTUsOCArMTk0LDUgQEAKICAgICAgICAgaWYgbWV0aG5hbWUuc3RhcnRzd2l0aCgidGVzdCIpIGFuZCBtZXRobmFtZSAhPSAidGVzdENvbXBhdCI6CiAgICAgICAgICAgICBkZWxhdHRyKFNobGV4VGVzdCwgbWV0aG5hbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTaGxleFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKaW5kZXggOTMyNWJjNy4uYzU1NDViYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKQEAgLTM0LDYgKzM0LDEyIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgQloyX1NVUFBPUlRFRCA9IEZhbHNlCiAKK3RyeToKKyAgICBpbXBvcnQgbHptYQorICAgIExaTUFfU1VQUE9SVEVEID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIExaTUFfU1VQUE9SVEVEID0gRmFsc2UKKwogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCiB0cnk6CkBAIC0xMTg5LDYgKzExOTUsOCBAQAogICAgICAgICBmb3JtYXRzID0gWyd0YXInLCAnZ3p0YXInLCAnemlwJ10KICAgICAgICAgaWYgQloyX1NVUFBPUlRFRDoKICAgICAgICAgICAgIGZvcm1hdHMuYXBwZW5kKCdienRhcicpCisgICAgICAgIGlmIExaTUFfU1VQUE9SVEVEOgorICAgICAgICAgICAgZm9ybWF0cy5hcHBlbmQoJ3h6dGFyJykKIAogICAgICAgICBmb3IgZm9ybWF0IGluIGZvcm1hdHM6CiAgICAgICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQpAQCAtMTYyNSw2ICsxNjMzLDI0IEBACiAgICAgICAgIHJ2ID0gc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCiAKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2ZpbGVfc3BlY2lhbF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgbW92ZWQgPSBbXQorICAgICAgICBkZWYgX2NvcHkoc3JjLCBkc3QpOgorICAgICAgICAgICAgbW92ZWQuYXBwZW5kKChzcmMsIGRzdCkpCisgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2RpciwgY29weV9mdW5jdGlvbj1fY29weSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW92ZWQpLCAxKQorCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kaXJfc3BlY2lhbF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgbW92ZWQgPSBbXQorICAgICAgICBkZWYgX2NvcHkoc3JjLCBkc3QpOgorICAgICAgICAgICAgbW92ZWQuYXBwZW5kKChzcmMsIGRzdCkpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2NoaWxkJykpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2NoaWxkMScpKQorICAgICAgICBzaHV0aWwubW92ZShzZWxmLnNyY19kaXIsIHNlbGYuZHN0X2RpciwgY29weV9mdW5jdGlvbj1fY29weSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW92ZWQpLCAzKQorCiAKIGNsYXNzIFRlc3RDb3B5RmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggNzRmNzRhZi4uMWI4MGZmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTEsMTkgKzEsMjUgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKK2ltcG9ydCBlbnVtCiBpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaWduYWwKK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgc3lzLCBvcywgdGltZSwgZXJybm8KLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHNwYXduX3B5dGhvbgogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCiBjbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgpAQCAtMzksNiArNDUsMjMgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCitjbGFzcyBHZW5lcmljVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCisgICAgZGVmIHRlc3RfZW51bXMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIGRpcihzaWduYWwpOgorICAgICAgICAgICAgc2lnID0gZ2V0YXR0cihzaWduYWwsIG5hbWUpCisgICAgICAgICAgICBpZiBuYW1lIGluIHsnU0lHX0RGTCcsICdTSUdfSUdOJ306CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLkhhbmRsZXJzKQorICAgICAgICAgICAgZWxpZiBuYW1lIGluIHsnU0lHX0JMT0NLJywgJ1NJR19VTkJMT0NLJywgJ1NJR19TRVRNQVNLJ306CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ21hc2tzKQorICAgICAgICAgICAgZWxpZiBuYW1lLnN0YXJ0c3dpdGgoJ1NJRycpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdTSUdfJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpCisgICAgICAgICAgICBlbGlmIG5hbWUuc3RhcnRzd2l0aCgnQ1RSTF8nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbmFscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5wbGF0Zm9ybSwgIndpbjMyIikKKworCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIE1BWF9EVVJBVElPTiA9IDIwICAgIyBFbnRpcmUgdGVzdCBzaG91bGQgbGFzdCBhdCBtb3N0IDIwIHNlYy4KQEAgLTE5NSw2ICsyMTgsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0c2lnbmFsKHNlbGYpOgogICAgICAgICBodXAgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYudHJpdmlhbF9zaWduYWxfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGh1cCwgc2lnbmFsLkhhbmRsZXJzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0hVUCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50cml2aWFsX3NpZ25hbF9oYW5kbGVyKQogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKQEAgLTIyOSwxNSArMjUzLDc3IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2ZkKHNlbGYpOgogICAgICAgICBmZCA9IHN1cHBvcnQubWFrZV9iYWRfZmQoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2V0X3dha2V1cF9mZCwgZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPU0Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQsIGZkKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zb2NrZXQoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgZmQgPSBzb2NrLmZpbGVubygpCisgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT1NFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkLCBmZCkKKworICAgIGRlZiB0ZXN0X3NldF93YWtldXBfZmRfcmVzdWx0KHNlbGYpOgorICAgICAgICByMSwgdzEgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3MSkKKyAgICAgICAgcjIsIHcyID0gb3MucGlwZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcjIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgdzIpCisKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldF9ibG9ja2luZycpOgorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHcxLCBGYWxzZSkKKyAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyh3MiwgRmFsc2UpCisKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQodzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQodzIpLCB3MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCgtMSksIHcyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgLTEpCisKKyAgICBkZWYgdGVzdF9zZXRfd2FrZXVwX2ZkX3NvY2tldF9yZXN1bHQoc2VsZik6CisgICAgICAgIHNvY2sxID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrMS5jbG9zZSkKKyAgICAgICAgc29jazEuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIGZkMSA9IHNvY2sxLmZpbGVubygpCisKKyAgICAgICAgc29jazIgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2syLmNsb3NlKQorICAgICAgICBzb2NrMi5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgZmQyID0gc29jazIuZmlsZW5vKCkKKworICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZChmZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoZmQyKSwgZmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgZmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgLTEpCisKKyAgICAjIE9uIFdpbmRvd3MsIGZpbGVzIGFyZSBhbHdheXMgYmxvY2tpbmcgYW5kIFdpbmRvd3MgZG9lcyBub3QgcHJvdmlkZSBhCisgICAgIyBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgc29ja2V0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJ0ZXN0cyBzcGVjaWZpYyB0byBQT1NJWCIpCisgICAgZGVmIHRlc3Rfc2V0X3dha2V1cF9mZF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgcmZkLCB3ZmQgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByZmQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgd2ZkKQorCisgICAgICAgICMgZmQgbXVzdCBiZSBub24tYmxvY2tpbmcKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHdmZCwgVHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGZkICVzIG11c3QgYmUgaW4gbm9uLWJsb2NraW5nIG1vZGUiICUgd2ZkKQorCisgICAgICAgICMgbm9uLWJsb2NraW5nIGlzIG9rCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3ZmQsIEZhbHNlKQorICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3ZmQpCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKQogCiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBXYWtldXBTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSwgKnNpZ25hbHMsIG9yZGVyZWQ9VHJ1ZSk6CiAgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZAogICAgICAgICBjb2RlID0gIiIiaWYgMToKLSAgICAgICAgaW1wb3J0IGZjbnRsCisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgaW1wb3J0IHN0cnVjdApAQCAtMjYwLDEwICszNDYsNyBAQAogCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgIHJlYWQsIHdyaXRlID0gb3MucGlwZSgpCi0gICAgICAgIGZvciBmZCBpbiAocmVhZCwgd3JpdGUpOgotICAgICAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCi0gICAgICAgICAgICBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3cml0ZSwgRmFsc2UpCiAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlKQogCiAgICAgICAgIHRlc3QoKQpAQCAtMjcxLDIxICszNTQsMjEgQEAKIAogICAgICAgICBvcy5jbG9zZShyZWFkKQogICAgICAgICBvcy5jbG9zZSh3cml0ZSkKLSAgICAgICAgIiIiLmZvcm1hdChzaWduYWxzLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCisgICAgICAgICIiIi5mb3JtYXQodHVwbGUobWFwKGludCwgc2lnbmFscykpLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCiAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBkZWYgdGVzdF93YWtldXBfd3JpdGVfZXJyb3Ioc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE2MTA1OiB3cml0ZSgpIGVycm9ycyBpbiB0aGUgQyBzaWduYWwgaGFuZGxlciBzaG91bGQgbm90CiAgICAgICAgICMgcGFzcyBzaWxlbnRseS4KICAgICAgICAgIyBVc2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkLgogICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICBpbXBvcnQgZXJybm8KLSAgICAgICAgaW1wb3J0IGZjbnRsCiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpbXBvcnQgc2lnbmFsCiAgICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgaW1wb3J0IHRpbWUKICAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgpAQCAtMjkzLDE1ICszNzYsMTMgQEAKIAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICByLCB3ID0gb3MucGlwZSgpCi0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgZmNudGwuZmNudGwociwgZmNudGwuRl9TRVRGTCwgZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQorICAgICAgICBvcy5zZXRfYmxvY2tpbmcociwgRmFsc2UpCiAKICAgICAgICAgIyBTZXQgd2FrZXVwX2ZkIGEgcmVhZC1vbmx5IGZpbGUgZGVzY3JpcHRvciB0byB0cmlnZ2VyIHRoZSBlcnJvcgogICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZChyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUuMCkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdBTFJNKQogICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CiAgICAgICAgICAgICAjIEFuIGlnbm9yZWQgZXhjZXB0aW9uIHNob3VsZCBoYXZlIGJlZW4gcHJpbnRlZCBvdXQgb24gc3RkZXJyCiAgICAgICAgICAgICBlcnIgPSBlcnIuZ2V0dmFsdWUoKQpAQCAtMzEyLDYgKzM5Myw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXJyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgICIiIgogICAgICAgICByLCB3ID0gb3MucGlwZSgpCiAgICAgICAgIHRyeToKQEAgLTMzNCwxOCArNDE4LDI4IEBACiAgICAgICAgICAgICBUSU1FT1VUX0ZVTEwgPSAxMAogICAgICAgICAgICAgVElNRU9VVF9IQUxGID0gNQogCisgICAgICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEludGVycnVwdFNlbGVjdAorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKwogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzbGVlcCwKICAgICAgICAgICAgICMgYmVmb3JlIHNlbGVjdCBpcyBjYWxsZWQKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoVElNRU9VVF9GVUxMKQotICAgICAgICAgICAgbWlkX3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgZHQgPSBtaWRfdGltZSAtIGJlZm9yZV90aW1lCi0gICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW10sIFtdLCBUSU1FT1VUX0ZVTEwpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0U2VsZWN0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJzZWxlY3QoKSB3YXMgbm90IGludGVycnVwdGVkIikKKworICAgICAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtyZWFkXSwgW10sIFtdLCBUSU1FT1VUX0ZVTEwpCi0gICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIG1pZF90aW1lCisgICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKICAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKQEAgLTM1OCwxNiArNDUyLDIzIEBACiAgICAgICAgICAgICBUSU1FT1VUX0ZVTEwgPSAxMAogICAgICAgICAgICAgVElNRU9VVF9IQUxGID0gNQogCisgICAgICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEludGVycnVwdFNlbGVjdAorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKwogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzZWxlY3QgY2FsbAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3JlYWRdLCBbXSwgW10sIFRJTUVPVVRfRlVMTCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdFNlbGVjdDoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT1NFcnJvciBub3QgcmFpc2VkIikKLSAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigic2VsZWN0KCkgd2FzIG5vdCBpbnRlcnJ1cHRlZCIpCisgICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKQEAgLTM3NSw5ICs0NzYsMTAgQEAKIAogICAgIGRlZiB0ZXN0X3NpZ251bShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCi0gICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHVVNSMSkKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdBTFJNKQorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0FMUk0pCiAgICAgICAgICIiIiwgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdBTFJNKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKQEAgLTM5MSwxMyArNDkzLDk3IEBACiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTIsIGhhbmRsZXIpCiAKICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQotICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMSkKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTIpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bTEpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bTIpCiAgICAgICAgICAgICAjIFVuYmxvY2tpbmcgdGhlIDIgc2lnbmFscyBjYWxscyB0aGUgQyBzaWduYWwgaGFuZGxlciB0d2ljZQogICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKICAgICAgICAgIiIiLCAgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdVU1IyLCBvcmRlcmVkPUZhbHNlKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc29ja2V0cGFpcicpLCAnbmVlZCBzb2NrZXQuc29ja2V0cGFpcicpCitjbGFzcyBXYWtldXBTb2NrZXRTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIGRlZiB0ZXN0X3NvY2tldChzZWxmKToKKyAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkCisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzb2NrZXQKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0lOVAorICAgICAgICBzaWduYWxzID0gKHNpZ251bSwpCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgcmVhZCwgd3JpdGUgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHJlYWQuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHdyaXRlLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZS5maWxlbm8oKSkKKworICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bSkKKworICAgICAgICBkYXRhID0gcmVhZC5yZWN2KDEpCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJubyBzaWdudW0gd3JpdHRlbiIpCisgICAgICAgIHJhaXNlZCA9IHN0cnVjdC51bnBhY2soJ0InLCBkYXRhKQorICAgICAgICBpZiByYWlzZWQgIT0gc2lnbmFsczoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXIgIT0gJXIiICUgKHJhaXNlZCwgc2lnbmFscykpCisKKyAgICAgICAgcmVhZC5jbG9zZSgpCisgICAgICAgIHdyaXRlLmNsb3NlKCkKKyAgICAgICAgIiIiCisKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKKyAgICBkZWYgdGVzdF9zZW5kX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQuCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGFjdGlvbiA9ICdzZW5kJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWN0aW9uID0gJ3dyaXRlJworICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHNvY2tldAorICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIGltcG9ydCB0aW1lCisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgorCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdJTlQKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICByZWFkLCB3cml0ZSA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgcmVhZC5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgd3JpdGUuc2V0YmxvY2tpbmcoRmFsc2UpCisKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUuZmlsZW5vKCkpCisKKyAgICAgICAgIyBDbG9zZSBzb2NrZXRzOiBzZW5kKCkgd2lsbCBmYWlsCisgICAgICAgIHJlYWQuY2xvc2UoKQorICAgICAgICB3cml0ZS5jbG9zZSgpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6CisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bSkKKworICAgICAgICBlcnIgPSBlcnIuZ2V0dmFsdWUoKQorICAgICAgICBpZiAoJ0V4Y2VwdGlvbiBpZ25vcmVkIHdoZW4gdHJ5aW5nIHRvIHthY3Rpb259IHRvIHRoZSBzaWduYWwgd2FrZXVwIGZkJworICAgICAgICAgICAgbm90IGluIGVycik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihlcnIpCisgICAgICAgICIiIi5mb3JtYXQoYWN0aW9uPWFjdGlvbikKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBTaWdpbnRlcnJ1cHRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDE4LDcgKzYwNCw3IEBACiAgICAgICAgICAgICByLCB3ID0gb3MucGlwZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAxIC8gMAogCiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICAgICAgaWYgaW50ZXJydXB0IGlzIG5vdCBOb25lOgpAQCAtNDI4LDE4ICs2MTQsMjEgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiAgICAgICAgICAgICAjIHJ1biB0aGUgdGVzdCB0d2ljZQotICAgICAgICAgICAgZm9yIGxvb3AgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICAgICAgIyBzZW5kIGEgU0lHQUxSTSBpbiBhIHNlY29uZCAoZHVyaW5nIHRoZSByZWFkKQotICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBibG9ja2luZyBjYWxsOiByZWFkIGZyb20gYSBwaXBlIHdpdGhvdXQgZGF0YQotICAgICAgICAgICAgICAgICAgICBvcy5yZWFkKHIsIDEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgICAgICBzeXMuZXhpdCgzKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBsb29wIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgICAgICAjIHNlbmQgYSBTSUdBTFJNIGluIGEgc2Vjb25kIChkdXJpbmcgdGhlIHJlYWQpCisgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJsb2NraW5nIGNhbGw6IHJlYWQgZnJvbSBhIHBpcGUgd2l0aG91dCBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZWFkKHIsIDEpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICAiIiIgJSAoaW50ZXJydXB0LCkKICAgICAgICAgd2l0aCBzcGF3bl9weXRob24oJy1jJywgY29kZSkgYXMgcHJvY2VzczoKICAgICAgICAgICAgIHRyeToKQEAgLTUzNyw4ICs3MjYsOCBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdWVEFMUk0sIHNlbGYuc2lnX3Z0YWxybSkKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMC4zLCAwLjIpCiAKLSAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHdoaWxlIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSA8IDYwLjA6CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKICAgICAgICAgICAgICMgdXNlIHVwIHNvbWUgdmlydHVhbCB0aW1lIGJ5IGRvaW5nIHJlYWwgd29yawogICAgICAgICAgICAgXyA9IHBvdygxMjM0NSwgNjc4OTAsIDEwMDAwMDE5KQogICAgICAgICAgICAgaWYgc2lnbmFsLmdldGl0aW1lcihzZWxmLml0aW1lcikgPT0gKDAuMCwgMC4wKToKQEAgLTU2MCw4ICs3NDksOCBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdQUk9GLCBzZWxmLnNpZ19wcm9mKQogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNlbGYuaXRpbWVyLCAwLjIsIDAuMikKIAotICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUgPCA2MC4wOgogICAgICAgICAgICAgIyBkbyBzb21lIHdvcmsKICAgICAgICAgICAgIF8gPSBwb3coMTIzNDUsIDY3ODkwLCAxMDAwMDAxOSkKICAgICAgICAgICAgIGlmIHNpZ25hbC5nZXRpdGltZXIoc2VsZi5pdGltZXIpID09ICgwLjAsIDAuMCk6CkBAIC02MDQsNiArNzkzLDggQEAKICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCiAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCiAgICAgICAgICAgICBwZW5kaW5nID0gc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICAgICAgZm9yIHNpZyBpbiBwZW5kaW5nOgorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpLCByZXByKHBlbmRpbmcpCiAgICAgICAgICAgICBpZiBwZW5kaW5nICE9IHtzaWdudW19OgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgIT0geyVzfScgJSAocGVuZGluZywgc2lnbnVtKSkKICAgICAgICAgICAgIHRyeToKQEAgLTY2MCw2ICs4NTEsNyBAQAogICAgICAgICBjb2RlID0gJycnaWYgMToKICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIGZyb20gc2lnbmFsIGltcG9ydCBTaWduYWxzCiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgICAgICAxLzAKQEAgLTcwMiw2ICs4OTQsNyBAQAogICAgICAgICBkZWYgdGVzdChzaWdudW0pOgogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCiAgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVjZWl2ZWQsIHNpZ25hbC5TaWduYWxzKSwgcmVjZWl2ZWQKICAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3JlY2VpdmVkICVzLCBub3QgJXMnICUgKHJlY2VpdmVkLCBzaWdudW0pKQogICAgICAgICAnJycpCkBAIC03NTcsMzUgKzk1MCw2IEBACiAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zaWd0aW1lZHdhaXQsIFtzaWdudW1dLCAtMS4wKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKLSAgICAjIElzc3VlICMxODIzODogc2lnd2FpdGluZm8oKSBjYW4gYmUgaW50ZXJydXB0ZWQgb24gTGludXggKHJhaXNlcwotICAgICMgSW50ZXJydXB0ZWRFcnJvciksIGJ1dCBub3Qgb24gQUlYCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiYWl4IiksCi0gICAgICAgICAgICAgICAgICAgICAnc2lnbmFsLnNpZ3dhaXRpbmZvKCkgY2Fubm90IGJlIGludGVycnVwdGVkIG9uIEFJWCcpCi0gICAgZGVmIHRlc3Rfc2lnd2FpdGluZm9faW50ZXJydXB0ZWQoc2VsZik6Ci0gICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR1VTUjEsICcnJwotICAgICAgICBkZWYgdGVzdChzaWdudW0pOgotICAgICAgICAgICAgaW1wb3J0IGVycm5vCi0KLSAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gVHJ1ZQotICAgICAgICAgICAgZGVmIGFsYXJtX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBhbGFybV9oYW5kbGVyKQotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWduYWwuU0lHVVNSMV0pCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBobmRsX2NhbGxlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiU0lHQUxSTSBoYW5kbGVyIG5vdCBjYWxsZWQiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQotICAgICAgICAnJycpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLApAQCAtODQyLDggKzEwMDYsMTQgQEAKICAgICAgICAgZGVmIGtpbGwoc2lnbnVtKToKICAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKIAorICAgICAgICBkZWYgY2hlY2tfbWFzayhtYXNrKToKKyAgICAgICAgICAgIGZvciBzaWcgaW4gbWFzazoKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaWcsIHNpZ25hbC5TaWduYWxzKSwgcmVwcihzaWcpCisKICAgICAgICAgZGVmIHJlYWRfc2lnbWFzaygpOgotICAgICAgICAgICAgcmV0dXJuIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW10pCisgICAgICAgICAgICBzaWdtYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSkKKyAgICAgICAgICAgIGNoZWNrX21hc2soc2lnbWFzaykKKyAgICAgICAgICAgIHJldHVybiBzaWdtYXNrCiAKICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKIApAQCAtODUyLDYgKzEwMjIsNyBAQAogCiAgICAgICAgICMgVW5ibG9jayBTSUdVU1IxIChhbmQgY29weSB0aGUgb2xkIG1hc2spIHRvIHRlc3Qgb3VyIHNpZ25hbCBoYW5kbGVyCiAgICAgICAgIG9sZF9tYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBjaGVja19tYXNrKG9sZF9tYXNrKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBraWxsKHNpZ251bSkKICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgpAQCAtODYxLDExICsxMDMyLDEzIEBACiAKICAgICAgICAgIyBCbG9jayBhbmQgdGhlbiByYWlzZSBTSUdVU1IxLiBUaGUgc2lnbmFsIGlzIGJsb2NrZWQ6IHRoZSBzaWduYWwKICAgICAgICAgIyBoYW5kbGVyIGlzIG5vdCBjYWxsZWQsIGFuZCB0aGUgc2lnbmFsIGlzIG5vdyBwZW5kaW5nCi0gICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgIG1hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBjaGVja19tYXNrKG1hc2spCiAgICAgICAgIGtpbGwoc2lnbnVtKQogCiAgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCiAgICAgICAgIGJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBjaGVja19tYXNrKGJsb2NrZWQpCiAgICAgICAgIGlmIHNpZ251bSBub3QgaW4gYmxvY2tlZDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgbm90IGluICVzIiAlIChzaWdudW0sIGJsb2NrZWQpKQogICAgICAgICBpZiBvbGRfbWFzayBeIGJsb2NrZWQgIT0ge3NpZ251bX06CkBAIC05MjYsMTUgKzEwOTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhpdGNvZGUsIHN0ZG91dCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdha2V1cEZEVGVzdHMsIFdha2V1cFNpZ25hbFRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWdpbnRlcnJ1cHRUZXN0LCBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdTaWduYWxzVGVzdHMpCi0gICAgZmluYWxseToKLSAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKLQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGY3MWNmNzMuLjY2MTUwODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgICAgICAgICAgcmUuZXNjYXBlKG9zLnBhdGguam9pbihwdGhfZGlyLCBwdGhfZm4pKSkKICAgICAgICAgIyBYWFg6IGRpdHRvIHByZXZpb3VzIFhYWCBjb21tZW50LgogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ1RyYWNlYmFjaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVHlwZUVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdWYWx1ZUVycm9yJykKIAogICAgIGRlZiB0ZXN0X2FkZHNpdGVkaXIoc2VsZik6CiAgICAgICAgICMgU2FtZSB0ZXN0cyBmb3IgdGVzdF9hZGRwYWNrYWdlIHNpbmNlIGFkZHNpdGVkaXIoKSBlc3NlbnRpYWxseSBqdXN0CkBAIC0yMzUsMjAgKzIzNSwxOCBAQAogICAgICAgICAgICAgIyBPUyBYIGZyYW1ld29yayBidWlsZHMKICAgICAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBbJ1B5dGhvbi5mcmFtZXdvcmsnXQogICAgICAgICAgICAgZGlycyA9IHNpdGUuZ2V0c2l0ZXBhY2thZ2VzKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMl0sIHdhbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQogICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICAjIE9TIFggbm9uLWZyYW13ZXdvcmsgYnVpbGRzLCBMaW51eCwgRnJlZUJTRCwgZXRjCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQogICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdzaXRlLXB5dGhvbicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKQEAgLTM1Nyw4ICszNTUsMTIgQEAKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLnJldHVybmNvZGUsIDApCiAgICAgICAgIG9zX19maWxlX18sIG9zX19jYWNoZWRfXyA9IHN0ZG91dC5zcGxpdGxpbmVzKClbOjJdCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKG9zX19maWxlX18pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fY2FjaGVkX18pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBhYnNvbHV0ZSBwYXRoLCBnb3Qge30iCisgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG9zX19maWxlX18uZGVjb2RlKCdhc2NpaScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMob3NfX2NhY2hlZF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBhYnNvbHV0ZSBwYXRoLCBnb3Qge30iCisgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG9zX19jYWNoZWRfXy5kZWNvZGUoJ2FzY2lpJykpKQogCiAgICAgZGVmIHRlc3Rfbm9fZHVwbGljYXRlX3BhdGhzKHNlbGYpOgogICAgICAgICAjIE5vIGR1cGxpY2F0ZSBwYXRocyBzaG91bGQgZXhpc3QgaW4gc3lzLnBhdGgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkgYi9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5CmluZGV4IDFlZDcxZjkuLjhjNGU2NzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbGljZS5weQpAQCAtMSw3ICsxLDYgQEAKICMgdGVzdHMgZm9yIHNsaWNlIG9iamVjdHM7IGluIHBhcnRpY3VsYXIgdGhlIGluZGljZXMgbWV0aG9kLgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwogCiBpbXBvcnQgaXRlcnRvb2xzCkBAIC0yNDEsOCArMjQwLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5pbmRpY2VzKDE1KSwgdC5pbmRpY2VzKDE1KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQocyksIGlkKHQpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU2xpY2VUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA5M2YxNGM0Li4xYWE1NWQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCkBAIC03LDE0ICs4LDIwIEBACiAKIAogY2xhc3MgRHVtbXlTZXJ2ZXIoc210cGQuU01UUFNlcnZlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcik6Ci0gICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5yZXR1cm5fc3RhdHVzID0gJ3JldHVybiBzdGF0dXMnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJldHVybl9zdGF0dXMgPSBiJ3JldHVybiBzdGF0dXMnCiAKLSAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3KToKICAgICAgICAgc2VsZi5tZXNzYWdlcy5hcHBlbmQoKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKSkKLSAgICAgICAgaWYgZGF0YSA9PSAncmV0dXJuIHN0YXR1cyc6CisgICAgICAgIGlmIGRhdGEgPT0gc2VsZi5yZXR1cm5fc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuICcyNTAgT2tpc2gnCisgICAgICAgIGlmICdtYWlsX29wdGlvbnMnIGluIGt3IGFuZCAnU01UUFVURjgnIGluIGt3WydtYWlsX29wdGlvbnMnXToKKyAgICAgICAgICAgIHJldHVybiAnMjUwIFNNVFBVVEY4IG1lc3NhZ2Ugb2tpc2gnCiAKIAogY2xhc3MgRHVtbXlEaXNwYXRjaGVyQnJva2VuKEV4Y2VwdGlvbik6CkBAIC0zMSw5ICszOCwxMCBAQAogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3VuaW1wbGVtZW50ZWQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgICAgICBkZWYgd3JpdGVfbGluZShsaW5lKToKICAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKQEAgLTQ1LDE5ICs1MywyNTEgQEAKICAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB3cml0ZV9saW5lLCBiJ3NwYW1cclxuLlxyXG4nKQogCisgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJucyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKKworICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2FuZF9lbmFibGVfU01UUFVURjhfcmFpc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyLAorICAgICAgICAgICAgKHN1cHBvcnQuSE9TVCwgMCksCisgICAgICAgICAgICAoJ2InLCAwKSwKKyAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlLAorICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKICAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CiAKIAorY2xhc3MgRGVidWdnaW5nU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWwsIGRhdGEsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSk6CisgICAgICAgIGRlZiB3cml0ZV9saW5lKGxpbmUpOgorICAgICAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisgICAgICAgIHdyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICB3cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZSBCT0RZPThCSVRNSU1FIFNNVFBVVEY4JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgd3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICB3cml0ZV9saW5lKGRhdGEpCisgICAgICAgIHdyaXRlX2xpbmUoYicuJykKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2RlY29kZV9kYXRhX3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhlbGxvXG4nKQorICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLQorICAgICAgICAgICAgIEZyb206IHRlc3QKKyAgICAgICAgICAgICBYLVBlZXI6IHBlZXItYWRkcmVzcworCisgICAgICAgICAgICAgaGVsbG8KKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhceGMzXHhhOWxsb1x4ZmZcbicpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgYidGcm9tOiB0ZXN0JworICAgICAgICAgICAgIGInWC1QZWVyOiBwZWVyLWFkZHJlc3MnCisgICAgICAgICAgICAgYicnCisgICAgICAgICAgICAgYidoXFx4YzNcXHhhOWxsb1xceGZmJworICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZW5hYmxlX1NNVFBVVEY4X3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJykKKyAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgIC0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICBiJ0Zyb206IHRlc3QnCisgICAgICAgICAgICAgYidYLVBlZXI6IHBlZXItYWRkcmVzcycKKyAgICAgICAgICAgICBiJycKKyAgICAgICAgICAgICBiJ2hcXHhjM1xceGE5bGxvXFx4ZmYnCisgICAgICAgICAgICAgLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX1NNVFBVVEY4X21lc3NhZ2Vfd2l0aF9lbmFibGVfU01UUFVURjhfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgbWFpbCBvcHRpb25zOiBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXQorICAgICAgICAgICAgIGInRnJvbTogdGVzdCcKKyAgICAgICAgICAgICBiJ1gtUGVlcjogcGVlci1hZGRyZXNzJworICAgICAgICAgICAgIGInJworICAgICAgICAgICAgIGInaFxceGMzXFx4YTlsbG9cXHhmZicKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisKKworY2xhc3MgVGVzdEZhbWlseURldGVjdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCisgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NUdjYsIDApLCAoc3VwcG9ydC5IT1NULCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQ2KQorCisgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NChzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKHN1cHBvcnQuSE9TVHY2LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCisKKworY2xhc3MgVGVzdFJjcHRPcHRpb25QYXJzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlcnJvcl9yZXNwb25zZSA9IChiJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICBiJ2ltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgY2hhbm5lbCwgbGluZSk6CisgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCisKKyAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworCitjbGFzcyBUZXN0TWFpbE9wdGlvblBhcnNpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGVycm9yX3Jlc3BvbnNlID0gKGInNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCAnCisgICAgICAgICAgICAgICAgICAgICAgYidpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGNoYW5uZWwsIGxpbmUpOgorICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZm9yIGxpbmUgaW4gWworICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjgnLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjggQk9EWT04QklUTUlNRScsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBCT0RZPVVOS05PV04nLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgYm9keT04Yml0bWltZScsCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgbGluZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZm9yIGxpbmUgaW4gWworICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjgnLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjggQk9EWT04QklUTUlNRScsCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgbGluZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgY2hhbm5lbCwKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4IEJPRFk9VU5LTk9XTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgRXJyb3I6IEJPRFkgY2FuIG9ubHkgYmUgb25lIG9mIDdCSVQsIDhCSVRNSU1FXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgIGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIGJvZHk9OGJpdG1pbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF93aXRoX2VuYWJsZV9zbXRwdXRmOF90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBjaGFubmVsLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgYm9keT04Yml0bWltZSBzbXRwdXRmOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworCiBjbGFzcyBTTVRQRENoYW5uZWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKCdhJywgJ2InKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtNjksNyArMzA5LDkgQEAKICAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9jb25uZWN0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEdW1teURpc3BhdGNoZXJCcm9rZW4sIEJyb2tlbkR1bW15U2VydmVyLCAnYScsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBEdW1teURpc3BhdGNoZXJCcm9rZW4sIEJyb2tlbkR1bW15U2VydmVyLAorICAgICAgICAgICAgKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgZGVmIHRlc3Rfc2VydmVyX2FjY2VwdChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlX2FjY2VwdCgpCkBAIC0yMTQsNiArNDU2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCiAKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfcmVqZWN0c19TTVRQVVRGOF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPG5haXZlQGV4YW1wbGUuY29tPiBCT0RZPThCSVRNSU1FIFNNVFBVVEY4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDoxXSwgYic1JykKKwogICAgIGRlZiB0ZXN0X2RhdGFfbG9uZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CiAgICAgICAgICMgSGFjayB0aGUgZGVmYXVsdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHNvIG11Y2ggZGF0YS4KICAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKQEAgLTM4Nyw3ICs2MzUsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9EQVRBX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKQEAgLTQxNyw3ICs2NjgsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJywnaGFtQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnLCdoYW1AZXhhbXBsZSddLAorICAgICAgICAgICAgICAnZGF0YScpXSkKIAogICAgIGRlZiB0ZXN0X21hbnVhbF9zdGF0dXMoc2VsZik6CiAgICAgICAgICMgY2hlY2tzIHRoYXQgdGhlIENoYW5uZWwgaXMgYWJsZSB0byByZXR1cm4gYSBjdXN0b20gc3RhdHVzIG1lc3NhZ2UKQEAgLTQzOSw3ICs2OTMsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2Zvb0BleGFtcGxlJywgWydlZ2dzQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAgJ2Zvb0BleGFtcGxlJywKKyAgICAgICAgICAgICAgIFsnZWdnc0BleGFtcGxlJ10sCisgICAgICAgICAgICAgICAnZGF0YScpXSkKIAogICAgIGRlZiB0ZXN0X0hFTE9fUlNFVChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKQEAgLTUwMiw2ICs3NTksMjQgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCitjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogY2xhc3MgU01UUERDaGFubmVsV2l0aERhdGFTaXplTGltaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTA5LDEwICs3ODQsMTIgQEAKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKICAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQogICAgICAgICAjIFNldCBEQVRBIHNpemUgbGltaXQgdG8gMzIgYnl0ZXMgZm9yIGVhc3kgdGVzdGluZwotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKQEAgLTUzNiw3ICs4MTMsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZ190b29fbXVjaF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQpAQCAtNTUzLDUgKzgzMywxODEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhXHJcbicpCiAKIAorY2xhc3MgU01UUERDaGFubmVsV2l0aERlY29kZURhdGFGYWxzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgICMgU2V0IGRlY29kZV9kYXRhIHRvIEZhbHNlCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfYXNjaWlfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3BsYWluIGFzY2lpIHRleHQnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwgYidwbGFpbiBhc2NpaSB0ZXh0JykKKworICAgIGRlZiB0ZXN0X3V0ZjhfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLAorICAgICAgICAgICAgYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4N1xuJworICAgICAgICAgICAgICAgIGInYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorCisKK2NsYXNzIFNNVFBEQ2hhbm5lbFdpdGhEZWNvZGVEYXRhVHJ1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgIyBTZXQgZGVjb2RlX2RhdGEgdG8gVHJ1ZQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfYXNjaWlfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3BsYWluIGFzY2lpIHRleHQnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwgJ3BsYWluIGFzY2lpIHRleHQnKQorCisgICAgZGVmIHRlc3RfdXRmOF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidhbmQgc29tZSBwbGFpbiBhc2NpaScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsCisgICAgICAgICAgICAndXRmOCBlbnJpY2hlZCB0ZXh0OiDFvMW6xIdcbmFuZCBzb21lIHBsYWluIGFzY2lpJykKKworCitjbGFzcyBTTVRQRENoYW5uZWxUZXN0V2l0aEVuYWJsZVNNVFBVVEY4VHJ1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfYWNjZXB0c19TTVRQVVRGOF93aGVuX2Fubm91bmNlZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgJ01BSUwgZnJvbTogPG5hacyIdmVAZXhhbXBsZS5jb20+IEJPRFk9OEJJVE1JTUUgU01UUFVURjgnLmVuY29kZSgKKyAgICAgICAgICAgICAgICAndXRmLTgnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19zbXRwdXRmOF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmb3IgbWFpbF9wYXJhbWV0ZXJzIGluIFtiJycsIGInQk9EWT04QklUTUlNRSBTTVRQVVRGOCddOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8YUBleGFtcGxlPiAnICsgbWFpbF9wYXJhbWV0ZXJzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIncmNwdCB0bzo8YkBleGFtcGxlLmNvbT4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzM1NCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidjXHJcbi4nKQorICAgICAgICAgICAgaWYgbWFpbF9wYXJhbWV0ZXJzID09IGInJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBTTVRQVVRGOCBtZXNzYWdlIG9raXNoXHJcbicpCisKKyAgICBkZWYgdGVzdF91dGY4X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgICdNQUlMIEZyb206IG5hacyIdmVAZXhhbXBsw6kgQk9EWT04QklUTUlNRSBTTVRQVVRGOCcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgnUkNQVCBUbzpzcMOkbUBleGFtcGzDqScuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzM1NCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwKKyAgICAgICAgICAgIGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorCisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2xpbWl0X2V4dGVuZGVkX3dpdGhfU0laRV9hbmRfU01UUFVURjgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2VobG8gZXhhbXBsZScpCisgICAgICAgIGZpbGxfbGVuID0gKDUxMiArIDI2ICsgMTApIC0gbGVuKCdtYWlsIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogKGZpbGxfbGVuICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIGZpbGxfbGVuICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9lbWFpbHNfd2l0aF9leHRlbmRlZF9jb21tYW5kX2xlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZWhsbyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSAoNTEyICsgMjYgKyAxMCkgLSBsZW4oJ21haWwgZnJvbTo8QGV4YW1wbGU+JykKKyAgICAgICAgZm9yIGNoYXIgaW4gW2InYScsIGInYicsIGInYyddOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsgY2hhciAqIGZpbGxfbGVuICsgYidhQGV4YW1wbGU+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInNTAwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArIGNoYXIgKiBmaWxsX2xlbiArIGInQGV4YW1wbGU+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3JjcHQgdG86PGhhbnNAZXhhbXBsZS5jb20+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYiczNTQnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQppbmRleCA5NWE5ZGJlLi5lNjZhZTliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGFzeW5jb3JlCiBpbXBvcnQgZW1haWwubWltZS50ZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogaW1wb3J0IGVtYWlsLnV0aWxzCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc210cGQKQEAgLTEwLDYgKzExLDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgZXJybm8KK2ltcG9ydCB0ZXh0d3JhcAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKQEAgLTMwLDcgKzMyLDcgQEAKIAogCiBkZWYgc2VydmVyKGV2dCwgYnVmLCBzZXJ2KToKLSAgICBzZXJ2Lmxpc3Rlbig1KQorICAgIHNlcnYubGlzdGVuKCkKICAgICBldnQuc2V0KCkKICAgICB0cnk6CiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCkBAIC0xMjMsNiArMTI1LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZGVidWdsZXZlbChzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDEpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXmNvbm5lY3Q6IiwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2RlYnVnbGV2ZWxfMihzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXlxkezJ9OlxkezJ9OlxkezJ9XC5cZHs2fSBjb25uZWN0OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKwogCiAjIFRlc3Qgc2VydmVyIHRocmVhZCB1c2luZyB0aGUgc3BlY2lmaWVkIFNNVFAgc2VydmVyIGNsYXNzCiBkZWYgZGVidWdnaW5nX3NlcnZlcihzZXJ2LCBzZXJ2X2V2dCwgY2xpZW50X2V2dCk6CkBAIC0xODQsNyArMjA3LDggQEAKICAgICAgICAgc2VsZi5vbGRfREVCVUdTVFJFQU0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKICAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCi0gICAgICAgIHNlbGYuc2VydiA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSkKKyAgICAgICAgc2VsZi5zZXJ2ID0gc210cGQuRGVidWdnaW5nU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCiAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCkBAIC02MDQsNyArNjI4LDggQEAKICAgICAnY3JhbS1tZDUnOiAoJ1RYSVVRVUJaQjIxTEQySExDTVVVWTI5VElERzRPV1EwTUonCiAgICAgICAgICAgICAgICAgICdLV1pHUTRPRE5NTkRBNE5UR1hNRFJMWldNWVpKRE1PREcxJyksCiAgICAgfQotc2ltX2F1dGhfbG9naW5fcGFzc3dvcmQgPSAnQzI5VFpYQkhDM04zQjNKSycKK3NpbV9hdXRoX2xvZ2luX3VzZXIgPSAnVFhJVVFVQlpCMjFMRDJITENNVVVZMjlUJworc2ltX2F1dGhfcGxhaW4gPSAnQUUxWUxLRkFDMjlUWlhET1pYSkxMTU5WQlFCWkIyMUxDR0ZaQzNEVkNNUT0nCiAKIHNpbV9saXN0cyA9IHsnbGlzdC0xJzpbJ01yLkFAc29tZXdoZXJlLmNvbScsJ01ycy5DQHNvbWV3aGVyZWVzbGUuY29tJ10sCiAgICAgICAgICAgICAgJ2xpc3QtMic6WydNcy5CQHhuLS1mby1ma2EuY29tJyxdLApAQCAtNjU4LDE4ICs2ODMsMTYgQEAKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKICAgICBkZWYgc210cF9BVVRIKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmIGFyZy5zdHJpcCgpLmxvd2VyKCk9PSdjcmFtLW1kNSc6CisgICAgICAgIG1lY2ggPSBhcmcuc3RyaXAoKS5sb3dlcigpCisgICAgICAgIGlmIG1lY2g9PSdjcmFtLW1kNSc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzMzNCB7fScuZm9ybWF0KHNpbV9jcmFtX21kNV9jaGFsbGVuZ2UpKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG1lY2gsIGF1dGggPSBhcmcuc3BsaXQoKQotICAgICAgICBtZWNoID0gbWVjaC5sb3dlcigpCi0gICAgICAgIGlmIG1lY2ggbm90IGluIHNpbV9hdXRoX2NyZWRlbnRpYWxzOgorICAgICAgICBlbGlmIG1lY2ggbm90IGluIHNpbV9hdXRoX2NyZWRlbnRpYWxzOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDQgYXV0aCB0eXBlIHVuaW1wbGVtZW50ZWQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG1lY2ggPT0gJ3BsYWluJyBhbmQgYXV0aD09c2ltX2F1dGhfY3JlZGVudGlhbHNbJ3BsYWluJ106Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzIzNSBwbGFpbiBhdXRoIG9rJykKLSAgICAgICAgZWxpZiBtZWNoPT0nbG9naW4nIGFuZCBhdXRoPT1zaW1fYXV0aF9jcmVkZW50aWFsc1snbG9naW4nXToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0IFBhc3N3b3JkOicpCisgICAgICAgIGVsaWYgbWVjaD09J3BsYWluJzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0ICcpCisgICAgICAgIGVsaWYgbWVjaD09J2xvZ2luJzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0ICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQogCkBAIC03MTksNyArNzQyLDggQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKAotICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkciwKKyAgICAgICAgICAgIGRlY29kZV9kYXRhPXNlbGYuX2RlY29kZV9kYXRhKQogCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIHBhc3MKQEAgLTc0Miw3ICs3NjYsNyBAQAogICAgICAgICBzZWxmLnNlcnZfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5jbGllbnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCi0gICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSkpCisgICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSksIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgICMgS2VlcCBhIG5vdGUgb2Ygd2hhdCBwb3J0IHdhcyBhc3NpZ25lZAogICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KICAgICAgICAgc2Vydl9hcmdzID0gKHNlbGYuc2Vydiwgc2VsZi5zZXJ2X2V2dCwgc2VsZi5jbGllbnRfZXZ0KQpAQCAtODE2LDI4ICs4NDAsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmV4cG4odSksIGV4cGVjdGVkX3Vua25vd24pCiAgICAgICAgIHNtdHAucXVpdCgpCiAKLSAgICBkZWYgdGVzdEFVVEhfUExBSU4oc2VsZik6Ci0gICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBQTEFJTiIpCi0gICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKLQotICAgICAgICBleHBlY3RlZF9hdXRoX29rID0gKDIzNSwgYidwbGFpbiBhdXRoIG9rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSksIGV4cGVjdGVkX2F1dGhfb2spCi0gICAgICAgIHNtdHAuY2xvc2UoKQotCi0gICAgIyBTaW1TTVRQQ2hhbm5lbCBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgTE9HSU4gb3IgQ1JBTS1NRDUgYXV0aCBiZWNhdXNlIHRoZXkKLSAgICAjIHJlcXVpcmUgYSBzeW5jaHJvbm91cyByZWFkIHRvIG9idGFpbiB0aGUgY3JlZGVudGlhbHMuLi5zbyBpbnN0ZWFkIHNtdHBkCisgICAgIyBTaW1TTVRQQ2hhbm5lbCBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgQVVUSCBiZWNhdXNlIGl0IHJlcXVpcmVzIGEKKyAgICAjIHN5bmNocm9ub3VzIHJlYWQgdG8gb2J0YWluIHRoZSBjcmVkZW50aWFscy4uLnNvIGluc3RlYWQgc210cGQKICAgICAjIHNlZXMgdGhlIGNyZWRlbnRpYWwgc2VudCBieSBzbXRwbGliJ3MgbG9naW4gbWV0aG9kIGFzIGFuIHVua25vd24gY29tbWFuZCwKICAgICAjIHdoaWNoIHJlc3VsdHMgaW4gc210cGxpYiByYWlzaW5nIGFuIGF1dGggZXJyb3IuICBGb3J0dW5hdGVseSB0aGUgZXJyb3IKICAgICAjIG1lc3NhZ2UgY29udGFpbnMgdGhlIGVuY29kZWQgY3JlZGVudGlhbCwgc28gd2UgY2FuIHBhcnRpYWxseSBjaGVjayB0aGF0IGl0CiAgICAgIyB3YXMgZ2VuZXJhdGVkIGNvcnJlY3RseSAocGFydGlhbGx5LCBiZWNhdXNlIHRoZSAnd29yZCcgaXMgdXBwZXJjYXNlZCBpbgogICAgICMgdGhlIGVycm9yIG1lc3NhZ2UpLgogCisgICAgZGVmIHRlc3RBVVRIX1BMQUlOKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEggUExBSU4iKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgIHRyeTogc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCisgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfcGxhaW4sIHN0cihlcnIpKQorICAgICAgICBzbXRwLmNsb3NlKCkKKwogICAgIGRlZiB0ZXN0QVVUSF9MT0dJTihzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCJBVVRIIExPR0lOIikKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQogICAgICAgICB0cnk6IHNtdHAubG9naW4oc2ltX2F1dGhbMF0sIHNpbV9hdXRoWzFdKQogICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQQXV0aGVudGljYXRpb25FcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2xvZ2luX3Bhc3N3b3JkLCBzdHIoZXJyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfbG9naW5fdXNlciwgc3RyKGVycikpCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RBVVRIX0NSQU1fTUQ1KHNlbGYpOgpAQCAtODU1LDcgKzg3OSwyMyBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCiAgICAgICAgIHRyeTogc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCiAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfbG9naW5fcGFzc3dvcmQsIHN0cihlcnIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9sb2dpbl91c2VyLCBzdHIoZXJyKSkKKyAgICAgICAgc210cC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9hdXRoX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKKyAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCJBVVRIIENSQU0tTUQ1IikKKyAgICAgICAgc210cC51c2VyLCBzbXRwLnBhc3N3b3JkID0gc2ltX2F1dGhbMF0sIHNpbV9hdXRoWzFdCisgICAgICAgIHN1cHBvcnRlZCA9IHsnQ1JBTS1NRDUnOiBzbXRwLmF1dGhfY3JhbV9tZDUsCisgICAgICAgICAgICAgICAgICAgICAnUExBSU4nOiBzbXRwLmF1dGhfcGxhaW4sCisgICAgICAgICAgICAgICAgICAgICAnTE9HSU4nOiBzbXRwLmF1dGhfbG9naW4sCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIG1lY2hhbmlzbSwgbWV0aG9kIGluIHN1cHBvcnRlZC5pdGVtcygpOgorICAgICAgICAgICAgdHJ5OiBzbXRwLmF1dGgobWVjaGFuaXNtLCBtZXRob2QpCisgICAgICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQQXV0aGVudGljYXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9jcmVkZW50aWFsc1ttZWNoYW5pc20ubG93ZXIoKV0udXBwZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlcnIpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3F1aXRfcmVzZXRzX2dyZWV0aW5nKHNlbGYpOgpAQCAtOTM4LDYgKzk3OCwxNjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc210cC5zb2NrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5fU01UUGNoYW5uZWwucmNwdF9jb3VudCwgMCkKIAorICAgIGRlZiB0ZXN0X3NtdHB1dGY4X05vdFN1cHBvcnRlZEVycm9yX2lmX25vX3NlcnZlcl9zdXBwb3J0KHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuZG9lc19lc210cCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzbXRwLmhhc19leHRuKCdzbXRwdXRmOCcpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIHNtdHBsaWIuU01UUE5vdFN1cHBvcnRlZEVycm9yLAorICAgICAgICAgICAgc210cC5zZW5kbWFpbCwKKyAgICAgICAgICAgICdKb2huJywgJ1NhbGx5JywgJycsIG1haWxfb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBzbXRwbGliLlNNVFBOb3RTdXBwb3J0ZWRFcnJvciwKKyAgICAgICAgICAgIHNtdHAubWFpbCwgJ0pvaG4nLCBvcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorCisgICAgZGVmIHRlc3Rfc2VuZF91bmljb2RlX3dpdGhvdXRfU01UUFVURjgoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNtdHAuc2VuZG1haWwsICdBbGljZScsICdCw7ZiJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc210cC5tYWlsLCAnw4RsaWNlJykKKworCitjbGFzcyBTaW1TTVRQVVRGOFNlcnZlcihTaW1TTVRQU2VydmVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICMgVGhlIGJhc2UgU01UUCBzZXJ2ZXIgdHVybnMgdGhlc2Ugb24gYXV0b21hdGljYWxseSwgYnV0IG91ciB0ZXN0CisgICAgICAgICMgc2VydmVyIGlzIHNldCB1cCB0byBtdW5nZSB0aGUgRUhMTyByZXNwb25zZSwgc28gd2UgbmVlZCB0byBwcm92aWRlCisgICAgICAgICMgdGhlbSBhcyB3ZWxsLiAgQW5kIHllcywgdGhlIGNhbGwgaXMgdG8gU01UUFNlcnZlciBub3QgU2ltU01UUFNlcnZlci4KKyAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMgPSBbJ1NNVFBVVEY4JywgJzhCSVRNSU1FJ10KKyAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKKworICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKAorICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICBkZWNvZGVfZGF0YT1zZWxmLl9kZWNvZGVfZGF0YSwKKyAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1zZWxmLmVuYWJsZV9TTVRQVVRGOCwKKyAgICAgICAgKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgbWFpbF9vcHRpb25zPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNwdF9vcHRpb25zPU5vbmUpOgorICAgICAgICBzZWxmLmxhc3RfcGVlciA9IHBlZXIKKyAgICAgICAgc2VsZi5sYXN0X21haWxmcm9tID0gbWFpbGZyb20KKyAgICAgICAgc2VsZi5sYXN0X3JjcHR0b3MgPSByY3B0dG9zCisgICAgICAgIHNlbGYubGFzdF9tZXNzYWdlID0gZGF0YQorICAgICAgICBzZWxmLmxhc3RfbWFpbF9vcHRpb25zID0gbWFpbF9vcHRpb25zCisgICAgICAgIHNlbGYubGFzdF9yY3B0X29wdGlvbnMgPSByY3B0X29wdGlvbnMKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU01UUFVURjhTaW1UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtYXhEaWZmID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlYWxfZ2V0ZnFkbiA9IHNvY2tldC5nZXRmcWRuCisgICAgICAgIHNvY2tldC5nZXRmcWRuID0gbW9ja19zb2NrZXQuZ2V0ZnFkbgorICAgICAgICBzZWxmLnNlcnZfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5jbGllbnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCisgICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBVVEY4U2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgICMgS2VlcCBhIG5vdGUgb2Ygd2hhdCBwb3J0IHdhcyBhc3NpZ25lZAorICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgc2Vydl9hcmdzID0gKHNlbGYuc2Vydiwgc2VsZi5zZXJ2X2V2dCwgc2VsZi5jbGllbnRfZXZ0KQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWRlYnVnZ2luZ19zZXJ2ZXIsIGFyZ3M9c2Vydl9hcmdzKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisKKyAgICAgICAgIyB3YWl0IHVudGlsIHNlcnZlciB0aHJlYWQgaGFzIGFzc2lnbmVkIGEgcG9ydCBudW1iZXIKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC53YWl0KCkKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC5jbGVhcigpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNvY2tldC5nZXRmcWRuID0gc2VsZi5yZWFsX2dldGZxZG4KKyAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IHRoZSBjbGllbnQgaXMgZmluaXNoZWQKKyAgICAgICAgc2VsZi5jbGllbnRfZXZ0LnNldCgpCisgICAgICAgICMgd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQgdG8gdGVybWluYXRlCisgICAgICAgIHNlbGYuc2Vydl9ldnQud2FpdCgpCisgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorCisgICAgZGVmIHRlc3RfdGVzdF9zZXJ2ZXJfc3VwcG9ydHNfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNtdHAuZWhsbygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbXRwLmRvZXNfZXNtdHApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbXRwLmhhc19leHRuKCdzbXRwdXRmOCcpKQorCisgICAgZGVmIHRlc3Rfc2VuZF91bmljb2RlX3dpdGhfU01UUFVURjhfdmlhX3NlbmRtYWlsKHNlbGYpOgorICAgICAgICBtID0gJ8KhYSB0ZXN0IG1lc3NhZ2UgY29udGFpbmluZyB1bmljb2RlIScuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLnNlbmRtYWlsKCdKxZFobicsICdTw6FsbHknLCBtLAorICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tYWlsZnJvbSwgJ0rFkWhuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0dG9zLCBbJ1PDoWxseSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPRFk9OEJJVE1JTUUnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NNVFBVVEY4Jywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHRfb3B0aW9ucywgW10pCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aF9TTVRQVVRGOF92aWFfbG93X2xldmVsX0FQSShzZWxmKToKKyAgICAgICAgbSA9ICfCoWEgdGVzdCBtZXNzYWdlIGNvbnRhaW5pbmcgdW5pY29kZSEnLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtdHAubWFpbCgnSsWRJywgb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSksCisgICAgICAgICAgICAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5yY3B0KCdKw6Fub3MnKSwgKDI1MCwgYidPSycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZGF0YShtKSwgKDI1MCwgYidPSycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21haWxmcm9tLCAnSsWRJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0dG9zLCBbJ0rDoW5vcyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPRFk9OEJJVE1JTUUnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NNVFBVVEY4Jywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHRfb3B0aW9ucywgW10pCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdXNlc19zbXRwdXRmOF9pZl9hZGRyc19ub25fYXNjaWkoc2VsZik6CisgICAgICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgICAgIG1zZ1snRnJvbSddID0gIlDDoW9sbyA8ZsWRb0BiYXIuY29tPiIKKyAgICAgICAgbXNnWydUbyddID0gJ0RpbnNkYWxlJworICAgICAgICBtc2dbJ1N1YmplY3QnXSA9ICdOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5JworICAgICAgICAjIFhYWCBJIGRvbid0IGtub3cgd2h5IEkgbmVlZCB0d28gXG4ncyBoZXJlLCBidXQgdGhpcyBpcyBhbiBleGlzdGluZworICAgICAgICAjIGJ1ZyAoaWYgaXQgaXMgb25lKSBhbmQgbm90IGEgcHJvYmxlbSB3aXRoIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgbXNnLnNldF9jb250ZW50KCJvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuP1xuXG4iKQorICAgICAgICAjIFhYWCBzbXRwZCBjb252ZXJ0cyByZWNlaXZlZCAvci9uIHRvIC9uLCBzbyB3ZSBjYW4ndCBlYXNpbHkgdGVzdCB0aGF0CisgICAgICAgICMgd2UgYXJlIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIC9yL24gOiguCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IFDDoW9sbyA8ZsWRb0BiYXIuY29tPgorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5CisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKworICAgICAgICAgICAgb2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zZW5kX21lc3NhZ2UobXNnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWFpbGZyb20sICdmxZFvQGJhci5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnRGluc2RhbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tZXNzYWdlLmRlY29kZSgpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9lcnJvcl9vbl9ub25fYXNjaWlfYWRkcnNfaWZfbm9fc210cHV0Zjgoc2VsZik6CisgICAgICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgICAgIG1zZ1snRnJvbSddID0gIlDDoW9sbyA8ZsWRb0BiYXIuY29tPiIKKyAgICAgICAgbXNnWydUbyddID0gJ0RpbnNkYWxlJworICAgICAgICBtc2dbJ1N1YmplY3QnXSA9ICdOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5JworICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQTm90U3VwcG9ydGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAuc2VuZF9tZXNzYWdlKG1zZykpCisKIAogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKaW5kZXggMTU2NTRmMi4uY2M5YmFiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQpAQCAtNzksOCArNzksNSBAQAogICAgICAgICAgICAgc2VydmVyLnF1aXQoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwVGVzdCwgU210cFNTTFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9zbmRoZHIucHkKaW5kZXggNWUwYWJlMC4uNDI2NDE3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbmRoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbmRoZHIucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgc25kaGRyCitpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZQogCkBAIC0xOCw2ICsxOSwxOSBAQAogICAgICAgICAgICAgd2hhdCA9IHNuZGhkci53aGF0KGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3aGF0LCBOb25lLCBmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbCh3aGF0LCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5maWxldHlwZSwgZXhwZWN0ZWRbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQuZnJhbWVyYXRlLCBleHBlY3RlZFsxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5uY2hhbm5lbHMsIGV4cGVjdGVkWzJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0Lm5mcmFtZXMsIGV4cGVjdGVkWzNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0LnNhbXB3aWR0aCwgZXhwZWN0ZWRbNF0pCisKKyAgICBkZWYgdGVzdF9waWNrbGVhYmxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IGZpbmRmaWxlKCdzbmRoZHIuYWlmYycsIHN1YmRpcj0ic25kaGRyZGF0YSIpCisgICAgICAgIHdoYXQgPSBzbmRoZHIud2hhdChmaWxlbmFtZSkKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKHdoYXQsIHByb3RvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaWNrbGUubG9hZHMoZHVtcCksIHdoYXQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKaW5kZXggYzhhMzYyMy4uOGY0OTQwNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKQEAgLTIwLDYgKzIwLDggQEAKIGltcG9ydCBtYXRoCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCiB0cnk6CiAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNzYsNyArNzgsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCi0gICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCkBAIC00NDUsNyArNDQ3LDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCi0gICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigpCiAKIAogY2xhc3MgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4oVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwgU29ja2V0VGVzdEJhc2UsCkBAIC03MTYsMTEgKzcxOCwxMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0bygnXHUyNjIwJywgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidzdHInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJ3N0ciciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byg1aiwgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidjb21wbGV4JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdjb21wbGV4JyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKGInZm9vJywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IE5vbmVUeXBlJyxzdHIoY20uZXhjZXB0aW9uKSkKQEAgLTcyOCwxMSArNzMwLDExIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKCdcdTI2MjAnLCAwLCBzb2NrbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJ3N0cicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnc3RyJyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKDVqLCAwLCBzb2NrbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJ2NvbXBsZXgnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJ2NvbXBsZXgnIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oYidmb28nLCAwLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgTm9uZVR5cGUnLCBzdHIoY20uZXhjZXB0aW9uKSkKQEAgLTEwNzIsNiArMTA3NCw3IEBACiAgICAgICAgIGFzc2VydEludmFsaWQoZiwgYidceDAwJyAqIDMpCiAgICAgICAgIGFzc2VydEludmFsaWQoZiwgYidceDAwJyAqIDUpCiAgICAgICAgIGFzc2VydEludmFsaWQoZiwgYidceDAwJyAqIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzAuODUuMTcwLjg1JywgZihieXRlYXJyYXkoYidceGFhXHg1NVx4YWFceDU1JykpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4xLjAnLCBnKGInXHgwMVx4MDBceDAxXHgwMCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzAuODUuMTcwLjg1JywgZyhiJ1x4YWFceDU1XHhhYVx4NTUnKSkKQEAgLTEwNzksNiArMTA4Miw3IEBACiAgICAgICAgIGFzc2VydEludmFsaWQoZywgYidceDAwJyAqIDMpCiAgICAgICAgIGFzc2VydEludmFsaWQoZywgYidceDAwJyAqIDUpCiAgICAgICAgIGFzc2VydEludmFsaWQoZywgYidceDAwJyAqIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzAuODUuMTcwLjg1JywgZyhieXRlYXJyYXkoYidceGFhXHg1NVx4YWFceDU1JykpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpbmV0X250b3AnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBzb2NrZXQuaW5ldF9udG9wKCknKQpAQCAtMTEwOCw2ICsxMTEyLDcgQEAKICAgICAgICAgICAgICdhZWY6YjAxOjUwNjoxMDAxOmZmZmY6OTk5Nzo1NToxNzAnLAogICAgICAgICAgICAgZihiJ1x4MGFceGVmXHgwYlx4MDFceDA1XHgwNlx4MTBceDAxXHhmZlx4ZmZceDk5XHg5N1x4MDBceDU1XHgwMVx4NzAnKQogICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzo6MScsIGYoYnl0ZWFycmF5KGInXHgwMCcgKiAxNSArIGInXHgwMScpKSkKIAogICAgICAgICBhc3NlcnRJbnZhbGlkKGInXHgxMicgKiAxNSkKICAgICAgICAgYXNzZXJ0SW52YWxpZChiJ1x4MTInICogMTcpCkBAIC0xMzgzLDEwICsxMzg4LDEzIEBACiAKICAgICBkZWYgdGVzdF9saXN0ZW5fYmFja2xvZyhzZWxmKToKICAgICAgICAgZm9yIGJhY2tsb2cgaW4gMCwgLTE6Ci0gICAgICAgICAgICBzcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc3J2OgorICAgICAgICAgICAgICAgIHNydi5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgICAgICAgICBzcnYubGlzdGVuKGJhY2tsb2cpCisKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNydjoKICAgICAgICAgICAgIHNydi5iaW5kKChIT1NULCAwKSkKLSAgICAgICAgICAgIHNydi5saXN0ZW4oYmFja2xvZykKLSAgICAgICAgICAgIHNydi5jbG9zZSgpCisgICAgICAgICAgICBzcnYubGlzdGVuKCkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nX292ZXJmbG93KHNlbGYpOgpAQCAtMTQ5Miw2ICsxNTAwLDcgQEAKICAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgY2FuX2ZpbHRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FuX2ZpbHRlciwKICAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfRklMVEVSLCA4KSkKKyAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgYnl0ZWFycmF5KGNhbl9maWx0ZXIpKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX0NBTiwgJ1NvY2tldENhbiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCkBAIC0zNTkwLDcgKzM1OTksNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCiAgICAgICAgIG9yaWdfYWxybV9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzaWdudW0sIGZyYW1lOiBOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNpZ251bSwgZnJhbWU6IDEgLyAwKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR0FMUk0sIG9yaWdfYWxybV9oYW5kbGVyKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXRBbGFybSwgMCkKIApAQCAtMzYyNywxMyArMzYzNiwxMSBAQAogICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCiAKICAgICBkZWYgY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSByYWlzZXMgT1NFcnJvciB3aXRoIGFuCisgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncykgcmFpc2VzCiAgICAgICAgICMgZXJybm8gb2YgRUlOVFIgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCiAKICAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdlRpbWVvdXQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3YsIDEwMjQpCkBAIC0zNjg5LDEyICszNjk2LDEwIEBACiAgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncyksIHJ1biBpbiBhIGxvb3AsIHJhaXNlcwogICAgICAgICAjIE9TRXJyb3Igd2l0aCBhbiBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEKICAgICAgICAgIyBzaWduYWwuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKICAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKIAogICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3RzIGhhdmUgcHJvYmxlbXMgb24gT1MgWCBwcmlvciB0byAxMC43CiAgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNykKQEAgLTM3MzYsOCArMzc0MSw2IEBACiAgICAgICAgIHNlbGYuY2xpLmNvbm5lY3QoKEhPU1QsIHNlbGYucG9ydCkpCiAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ3NvY2tldHBhaXInKSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG5lZWRzIHNvY2tldC5zb2NrZXRwYWlyKCknKQogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJhc2ljU29ja2V0UGFpclRlc3QoU29ja2V0UGFpclRlc3QpOgogCkBAIC0zODE4LDcgKzM4MjEsNyBAQAogICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0gfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09DS19OT05CTE9DSykKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogICAgICAgICAjIGFjdHVhbCB0ZXN0aW5nCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgdHJ5OgpAQCAtNDA2NCwxMTcgKzQwNjcsNiBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgRmlsZU9iamVjdEludGVycnVwdGVkVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3QgdGhhdCB0aGUgZmlsZSBvYmplY3QgY29ycmVjdGx5IGhhbmRsZXMgRUlOVFIgaW50ZXJuYWxseS4iIiIKLQotICAgIGNsYXNzIE1vY2tTb2NrZXQob2JqZWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlY3ZfZnVuY3M9KCkpOgotICAgICAgICAgICAgIyBBIGdlbmVyYXRvciB0aGF0IHJldHVybnMgY2FsbGFibGVzIHRoYXQgd2UnbGwgY2FsbCBmb3IgZWFjaAotICAgICAgICAgICAgIyBjYWxsIHRvIHJlY3YoKS4KLSAgICAgICAgICAgIHNlbGYuX3JlY3Zfc3RlcCA9IGl0ZXIocmVjdl9mdW5jcykKLQotICAgICAgICBkZWYgcmVjdl9pbnRvKHNlbGYsIGJ1ZmZlcik6Ci0gICAgICAgICAgICBkYXRhID0gbmV4dChzZWxmLl9yZWN2X3N0ZXApKCkKLSAgICAgICAgICAgIGFzc2VydCBsZW4oYnVmZmVyKSA+PSBsZW4oZGF0YSkKLSAgICAgICAgICAgIGJ1ZmZlcls6bGVuKGRhdGEpXSA9IGRhdGEKLSAgICAgICAgICAgIHJldHVybiBsZW4oZGF0YSkKLQotICAgICAgICBkZWYgX2RlY3JlZl9zb2NrZXRpb3Moc2VsZik6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZGVmIF90ZXh0aW93cmFwX2Zvcl90ZXN0KHNlbGYsIGJ1ZmZlcmluZz0tMSk6Ci0gICAgICAgICAgICByYXcgPSBzb2NrZXQuU29ja2V0SU8oc2VsZiwgInIiKQotICAgICAgICAgICAgaWYgYnVmZmVyaW5nIDwgMDoKLSAgICAgICAgICAgICAgICBidWZmZXJpbmcgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCi0gICAgICAgICAgICBpZiBidWZmZXJpbmcgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmF3Ci0gICAgICAgICAgICBidWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKLSAgICAgICAgICAgIHRleHQgPSBpby5UZXh0SU9XcmFwcGVyKGJ1ZmZlciwgTm9uZSwgTm9uZSkKLSAgICAgICAgICAgIHRleHQubW9kZSA9ICJyYiIKLSAgICAgICAgICAgIHJldHVybiB0ZXh0Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9yYWlzZV9laW50cigpOgotICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCAiaW50ZXJydXB0ZWQiKQotCi0gICAgZGVmIF90ZXh0aW93cmFwX21vY2tfc29ja2V0KHNlbGYsIG1vY2ssIGJ1ZmZlcmluZz0tMSk6Ci0gICAgICAgIHJhdyA9IHNvY2tldC5Tb2NrZXRJTyhtb2NrLCAiciIpCi0gICAgICAgIGlmIGJ1ZmZlcmluZyA8IDA6Ci0gICAgICAgICAgICBidWZmZXJpbmcgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCi0gICAgICAgIGlmIGJ1ZmZlcmluZyA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHJhdwotICAgICAgICBidWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKLSAgICAgICAgdGV4dCA9IGlvLlRleHRJT1dyYXBwZXIoYnVmZmVyLCBOb25lLCBOb25lKQotICAgICAgICB0ZXh0Lm1vZGUgPSAicmIiCi0gICAgICAgIHJldHVybiB0ZXh0Ci0KLSAgICBkZWYgX3Rlc3RfcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSwgYnVmZmVyaW5nPS0xKToKLSAgICAgICAgbW9ja19zb2NrID0gc2VsZi5Nb2NrU29ja2V0KHJlY3ZfZnVuY3M9WwotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiVGhpcyBpcyB0aGUgZmlyc3QgbGluZVxuQW5kIHRoZSBzZWMiLAotICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlX2VpbnRyLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIib25kIGxpbmUgaXMgaGVyZVxuIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLCAgIyBYWFgoZ3BzKTogaW8gbGlicmFyeSBkb2VzIGFuIGV4dHJhIEVPRiByZWFkCi0gICAgICAgICAgICBdKQotICAgICAgICBmbyA9IG1vY2tfc29jay5fdGV4dGlvd3JhcF9mb3JfdGVzdChidWZmZXJpbmc9YnVmZmVyaW5nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvLnJlYWRsaW5lKHNpemUpLCAiVGhpcyBpcyB0aGUgZmlyc3QgbGluZVxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgIkFuZCB0aGUgc2Vjb25kIGxpbmUgaXMgaGVyZVxuIikKLQotICAgIGRlZiBfdGVzdF9yZWFkKHNlbGYsIHNpemU9LTEsIGJ1ZmZlcmluZz0tMSk6Ci0gICAgICAgIG1vY2tfc29jayA9IHNlbGYuTW9ja1NvY2tldChyZWN2X2Z1bmNzPVsKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbkFuZCB0aGUgc2VjIiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9laW50ciwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIm9uZCBsaW5lIGlzIGhlcmVcbiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwgICMgWFhYKGdwcyk6IGlvIGxpYnJhcnkgZG9lcyBhbiBleHRyYSBFT0YgcmVhZAotICAgICAgICAgICAgXSkKLSAgICAgICAgZXhwZWN0aW5nID0gKGIiVGhpcyBpcyB0aGUgZmlyc3QgbGluZVxuIgotICAgICAgICAgICAgICAgICAgICAgYiJBbmQgdGhlIHNlY29uZCBsaW5lIGlzIGhlcmVcbiIpCi0gICAgICAgIGZvID0gbW9ja19zb2NrLl90ZXh0aW93cmFwX2Zvcl90ZXN0KGJ1ZmZlcmluZz1idWZmZXJpbmcpCi0gICAgICAgIGlmIGJ1ZmZlcmluZyA9PSAwOgotICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgICAgICBleHBlY3RpbmcgPSBleHBlY3RpbmcuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHdoaWxlIGxlbihkYXRhKSAhPSBsZW4oZXhwZWN0aW5nKToKLSAgICAgICAgICAgIHBhcnQgPSBmby5yZWFkKHNpemUpCi0gICAgICAgICAgICBpZiBub3QgcGFydDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZGF0YSArPSBwYXJ0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0aW5nKQotCi0gICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZSgpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmUoc2l6ZT0xMDApCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZCgpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChzaXplPTEwMCkKLQotICAgIGRlZiB0ZXN0X3dpdGhfMWtfYnVmZmVyKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lKGJ1ZmZlcmluZz0xMDI0KQotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lKHNpemU9MTAwLCBidWZmZXJpbmc9MTAyNCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKGJ1ZmZlcmluZz0xMDI0KQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoc2l6ZT0xMDAsIGJ1ZmZlcmluZz0xMDI0KQotCi0gICAgZGVmIF90ZXN0X3JlYWRsaW5lX25vX2J1ZmZlcihzZWxmLCBzaXplPS0xKToKLSAgICAgICAgbW9ja19zb2NrID0gc2VsZi5Nb2NrU29ja2V0KHJlY3ZfZnVuY3M9WwotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiYSIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJcbiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJCIiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9laW50ciwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiImIiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGZvID0gbW9ja19zb2NrLl90ZXh0aW93cmFwX2Zvcl90ZXN0KGJ1ZmZlcmluZz0wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvLnJlYWRsaW5lKHNpemUpLCBiImFcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm8ucmVhZGxpbmUoc2l6ZSksIGIiQmIiKQotCi0gICAgZGVmIHRlc3Rfbm9fYnVmZmVyKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lX25vX2J1ZmZlcigpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmVfbm9fYnVmZmVyKHNpemU9NCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKGJ1ZmZlcmluZz0wKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoc2l6ZT0xMDAsIGJ1ZmZlcmluZz0wKQotCi0KIGNsYXNzIFVuYnVmZmVyZWRGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZShGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSk6CiAKICAgICAiIiJSZXBlYXQgdGhlIHRlc3RzIGZyb20gRmlsZU9iamVjdENsYXNzVGVzdENhc2Ugd2l0aCBidWZzaXplPT0wLgpAQCAtNDU5Myw3ICs0NDg1LDcgQEAKICAgICAgICAgYWRkcmVzcyA9IGIiXHgwMHB5dGhvbi10ZXN0LWhlbGxvXHgwMFx4ZmYiCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzMToKICAgICAgICAgICAgIHMxLmJpbmQoYWRkcmVzcykKLSAgICAgICAgICAgIHMxLmxpc3RlbigxKQorICAgICAgICAgICAgczEubGlzdGVuKCkKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzMjoKICAgICAgICAgICAgICAgICBzMi5jb25uZWN0KHMxLmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICAgICAgd2l0aCBzMS5hY2NlcHQoKVswXSBhcyBzMzoKQEAgLTQ2MjAsNiArNDUxMiwxMiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcy5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdEJ5dGVhcnJheU5hbWUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBhbiBhYnN0cmFjdCBuYW1lIGNhbiBiZSBwYXNzZWQgYXMgYSBieXRlYXJyYXkuCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKGJ5dGVhcnJheShiIlx4MDBweXRob25ceDAwdGVzdFx4MDAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRzb2NrbmFtZSgpLCBiIlx4MDBweXRob25ceDAwdGVzdFx4MDAiKQorCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKSwgJ3Rlc3QgbmVlZHMgc29ja2V0LkFGX1VOSVgnKQogY2xhc3MgVGVzdFVuaXhEb21haW4odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00ODI1LDcgKzQ3MjMsNyBAQAogICAgICAgICBzcnZhZGRyID0gKHNvY2tldC5USVBDX0FERFJfTkFNRVNFUSwgVElQQ19TVFlQRSwKICAgICAgICAgICAgICAgICBUSVBDX0xPV0VSLCBUSVBDX1VQUEVSKQogICAgICAgICBzZWxmLnNydi5iaW5kKHNydmFkZHIpCi0gICAgICAgIHNlbGYuc3J2Lmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNydi5saXN0ZW4oKQogICAgICAgICBzZWxmLnNlcnZlckV4cGxpY2l0UmVhZHkoKQogICAgICAgICBzZWxmLmNvbm4sIHNlbGYuY29ubmFkZHIgPSBzZWxmLnNydi5hY2NlcHQoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5jb25uLmNsb3NlKQpAQCAtNTExNCw2ICs1MDEyLDI3NSBAQAogICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kZmlsZVVzaW5nU2VuZFRlc3QoVGhyZWFkZWRUQ1BTb2NrZXRUZXN0KToKKyAgICAiIiIKKyAgICBUZXN0IHRoZSBzZW5kKCkgaW1wbGVtZW50YXRpb24gb2Ygc29ja2V0LnNlbmRmaWxlKCkuCisgICAgIiIiCisKKyAgICBGSUxFU0laRSA9ICgxMCAqIDEwMjQgKiAxMDI0KSAgIyAxME1CCisgICAgQlVGU0laRSA9IDgxOTIKKyAgICBGSUxFREFUQSA9IGIiIgorICAgIFRJTUVPVVQgPSAyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBkZWYgY2h1bmtzKHRvdGFsLCBzdGVwKToKKyAgICAgICAgICAgIGFzc2VydCB0b3RhbCA+PSBzdGVwCisgICAgICAgICAgICB3aGlsZSB0b3RhbCA+IHN0ZXA6CisgICAgICAgICAgICAgICAgeWllbGQgc3RlcAorICAgICAgICAgICAgICAgIHRvdGFsIC09IHN0ZXAKKyAgICAgICAgICAgIGlmIHRvdGFsOgorICAgICAgICAgICAgICAgIHlpZWxkIHRvdGFsCisKKyAgICAgICAgY2h1bmsgPSBiIiIuam9pbihbcmFuZG9tLmNob2ljZShzdHJpbmcuYXNjaWlfbGV0dGVycykuZW5jb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY2xzLkJVRlNJWkUpXSkKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZm9yIGNzaXplIGluIGNodW5rcyhjbHMuRklMRVNJWkUsIGNscy5CVUZTSVpFKToKKyAgICAgICAgICAgICAgICBmLndyaXRlKGNodW5rKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBjbHMuRklMRURBVEEgPSBmLnJlYWQoKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihjbHMuRklMRURBVEEpID09IGNscy5GSUxFU0laRQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgYWNjZXB0X2Nvbm4oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5zZXR0aW1lb3V0KHNlbGYuVElNRU9VVCkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBjb25uLnNldHRpbWVvdXQoc2VsZi5USU1FT1VUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoY29ubi5jbG9zZSkKKyAgICAgICAgcmV0dXJuIGNvbm4KKworICAgIGRlZiByZWN2X2RhdGEoc2VsZiwgY29ubik6CisgICAgICAgIHJlY2VpdmVkID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNodW5rID0gY29ubi5yZWN2KHNlbGYuQlVGU0laRSkKKyAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGNodW5rKQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWQpCisKKyAgICBkZWYgbWV0aF9mcm9tX3NvY2soc2VsZiwgc29jayk6CisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBtaXhpbiBjbGFzcyBiZWluZyBydW4gcmV0dXJuIGVpdGhlciBzZW5kKCkKKyAgICAgICAgIyBvciBzZW5kZmlsZSgpIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc29jaywgIl9zZW5kZmlsZV91c2Vfc2VuZCIpCisKKyAgICAjIHJlZ3VsYXIgZmlsZQorCisgICAgZGVmIF90ZXN0UmVndWxhckZpbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIHNlbGYuRklMRVNJWkUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBzZWxmLkZJTEVTSVpFKQorCisgICAgZGVmIHRlc3RSZWd1bGFyRmlsZShzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNlbGYuRklMRVNJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQSkKKworICAgICMgbm9uIHJlZ3VsYXIgZmlsZQorCisgICAgZGVmIF90ZXN0Tm9uUmVndWxhckZpbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gaW8uQnl0ZXNJTyhzZWxmLkZJTEVEQVRBKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBzZW50ID0gc29jay5zZW5kZmlsZShmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5fR2l2ZXVwT25TZW5kZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSwgZmlsZSkKKworICAgIGRlZiB0ZXN0Tm9uUmVndWxhckZpbGUoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEEpCisKKyAgICAjIGVtcHR5IGZpbGUKKworICAgIGRlZiBfdGVzdEVtcHR5RmlsZVNlbmQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJyk6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBmaWxlID0gb3BlbihmaWxlbmFtZSwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RFbXB0eUZpbGVTZW5kKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiIikKKworICAgICMgb2Zmc2V0CisKKyAgICBkZWYgX3Rlc3RPZmZzZXQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUsIG9mZnNldD01MDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFIC0gNTAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIHNlbGYuRklMRVNJWkUpCisKKyAgICBkZWYgdGVzdE9mZnNldChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNlbGYuRklMRVNJWkUgLSA1MDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbNTAwMDpdKQorCisgICAgIyBjb3VudAorCisgICAgZGVmIF90ZXN0Q291bnQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBjb3VudCA9IDUwMDAwMDcKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBjb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgY291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBjb3VudCkKKworICAgIGRlZiB0ZXN0Q291bnQoc2VsZik6CisgICAgICAgIGNvdW50ID0gNTAwMDAwNworICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQVs6Y291bnRdKQorCisgICAgIyBjb3VudCBzbWFsbAorCisgICAgZGVmIF90ZXN0Q291bnRTbWFsbChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTIpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIGNvdW50ID0gMQorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUsIGNvdW50PWNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBjb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIGNvdW50KQorCisgICAgZGVmIHRlc3RDb3VudFNtYWxsKHNlbGYpOgorICAgICAgICBjb3VudCA9IDEKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGNvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbOmNvdW50XSkKKworICAgICMgY291bnQgKyBvZmZzZXQKKworICAgIGRlZiBfdGVzdENvdW50V2l0aE9mZnNldChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTIpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIGNvdW50ID0gMTAwMDA3CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSwgb2Zmc2V0PTIwMDcsIGNvdW50PWNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBjb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIGNvdW50ICsgMjAwNykKKworICAgIGRlZiB0ZXN0Q291bnRXaXRoT2Zmc2V0KHNlbGYpOgorICAgICAgICBjb3VudCA9IDEwMDAwNworICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQVsyMDA3OmNvdW50KzIwMDddKQorCisgICAgIyBub24gYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvc2VkIHRvIHdvcmsKKworICAgIGRlZiBfdGVzdE5vbkJsb2NraW5nKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aCwgZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNvY2suc2VuZGZpbGUsIGZpbGUpCisKKyAgICBkZWYgdGVzdE5vbkJsb2NraW5nKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGlmIGNvbm4ucmVjdig4MTkyKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnd2FzIG5vdCBzdXBwb3NlZCB0byByZWNlaXZlIGFueSBkYXRhJykKKworICAgICMgdGltZW91dCAobm9uLXRyaWdnZXJlZCkKKworICAgIGRlZiBfdGVzdFdpdGhUaW1lb3V0KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MikgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIHNlbGYuRklMRVNJWkUpCisKKyAgICBkZWYgdGVzdFdpdGhUaW1lb3V0KHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBKQorCisgICAgIyB0aW1lb3V0ICh0cmlnZ2VyZWQpCisKKyAgICBkZWYgX3Rlc3RXaXRoVGltZW91dFRyaWdnZXJlZFNlbmQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0wLjAxKSBhcyBzb2NrLCBcCisgICAgICAgICAgICAgICAgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0LCBtZXRoLCBmaWxlKQorCisgICAgZGVmIHRlc3RXaXRoVGltZW91dFRyaWdnZXJlZFNlbmQoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgY29ubi5yZWN2KDg4MTkyKQorCisgICAgIyBlcnJvcnMKKworICAgIGRlZiBfdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHR5cGU9c29ja2V0LlNPQ0tfREdSQU0pIGFzIHM6CisgICAgICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2socykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCAiU09DS19TVFJFQU0iLCBtZXRoLCBmaWxlKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdydCcpIGFzIGZpbGU6CisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzOgorICAgICAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgImJpbmFyeSBtb2RlIiwgbWV0aCwgZmlsZSkKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKKyAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0nMicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJwb3NpdGl2ZSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgsIGZpbGUsIGNvdW50PTAuMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJwb3NpdGl2ZSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgsIGZpbGUsIGNvdW50PTApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0tMSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInNlbmRmaWxlIiksCisgICAgICAgICAgICAgICAgICAgICAnb3Muc2VuZGZpbGUoKSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kZmlsZVVzaW5nU2VuZGZpbGVUZXN0KFNlbmRmaWxlVXNpbmdTZW5kVGVzdCk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgc2VuZGZpbGUoKSBpbXBsZW1lbnRhdGlvbiBvZiBzb2NrZXQuc2VuZGZpbGUoKS4KKyAgICAiIiIKKyAgICBkZWYgbWV0aF9mcm9tX3NvY2soc2VsZiwgc29jayk6CisgICAgICAgIHJldHVybiBnZXRhdHRyKHNvY2ssICJfc2VuZGZpbGVfdXNlX3NlbmRmaWxlIikKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbR2VuZXJhbE1vZHVsZVRlc3RzLCBCYXNpY1RDUFRlc3QsIFRDUENsb3NlclRlc3QsIFRDUFRpbWVvdXRUZXN0LAogICAgICAgICAgICAgIFRlc3RFeGNlcHRpb25zLCBCdWZmZXJJT1Rlc3QsIEJhc2ljVENQVGVzdDIsIEJhc2ljVURQVGVzdCwgVURQVGltZW91dFRlc3QgXQpAQCAtNTEyMSw3ICs1Mjg4LDYgQEAKICAgICB0ZXN0cy5leHRlbmQoWwogICAgICAgICBOb25CbG9ja2luZ1RDUFRlc3RzLAogICAgICAgICBGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSwKLSAgICAgICAgRmlsZU9iamVjdEludGVycnVwdGVkVGVzdENhc2UsCiAgICAgICAgIFVuYnVmZmVyZWRGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSwKICAgICAgICAgTGluZUJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCiAgICAgICAgIFNtYWxsQnVmZmVyZWRGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSwKQEAgLTUxNjYsNiArNTMzMiw4IEBACiAgICAgICAgIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0LAogICAgICAgICBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdCwKICAgICAgICAgVGVzdFNvY2tldFNoYXJpbmcsCisgICAgICAgIFNlbmRmaWxlVXNpbmdTZW5kVGVzdCwKKyAgICAgICAgU2VuZGZpbGVVc2luZ1NlbmRmaWxlVGVzdCwKICAgICBdKQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CmluZGV4IDkyNGI5YzQuLjMxYWIzYjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CkBAIC0yMjEsMzggKzIyMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLkRhdGFncmFtUmVxdWVzdEhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZ3JhbV9leGFtaW5lKQogCi0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgbW9ja2VkX3NlbGVjdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgICIiIk1vY2tzIHRoZSBzZWxlY3Quc2VsZWN0KCkgY2FsbCB0byByYWlzZSBFSU5UUiBmb3IgZmlyc3QgY2FsbCIiIgotICAgICAgICBvbGRfc2VsZWN0ID0gc2VsZWN0LnNlbGVjdAotCi0gICAgICAgIGNsYXNzIE1vY2tTZWxlY3Q6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSAwCi0KLSAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgKz0gMQotICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FsbGVkID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICMgcmFpc2UgdGhlIGV4Y2VwdGlvbiBvbiBmaXJzdCBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUlOVFIsIG9zLnN0cmVycm9yKGVycm5vLkVJTlRSKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFJldHVybiByZWFsIHNlbGVjdCB2YWx1ZSBmb3IgY29uc2VjdXRpdmUgY2FsbHMKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9sZF9zZWxlY3QoKmFyZ3MpCi0KLSAgICAgICAgc2VsZWN0LnNlbGVjdCA9IE1vY2tTZWxlY3QoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZCBzZWxlY3Quc2VsZWN0Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxlY3Quc2VsZWN0ID0gb2xkX3NlbGVjdAotCi0gICAgZGVmIHRlc3RfSW50ZXJydXB0U2VydmVyU2VsZWN0Q2FsbChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLm1vY2tlZF9zZWxlY3RfbW9kdWxlKCkgYXMgbW9ja19zZWxlY3Q6Ci0gICAgICAgICAgICBwaWQgPSBzZWxmLnJ1bl9zZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW1fZXhhbWluZSkKLSAgICAgICAgICAgICMgTWFrZSBzdXJlIHNlbGVjdCB3YXMgY2FsbGVkIGFnYWluOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG1vY2tfc2VsZWN0LmNhbGxlZCwgMSkKLQogICAgICMgQWxhcywgb24gTGludXggKGF0IGxlYXN0KSByZWN2ZnJvbSgpIGRvZXNuJ3QgcmV0dXJuIGEgbWVhbmluZ2Z1bAogICAgICMgY2xpZW50IGFkZHJlc3Mgc28gdGhpcyBjYW5ub3Qgd29yazoKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CmluZGV4IDhmNmFmNjQuLmE1ZDBlYmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKQEAgLTI2MiwyNCArMjYyLDUgQEAKIAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgdGVzdF9jbGFzc2VzID0gKAotICAgICAgICBUZXN0QmFzZSwKLSAgICAgICAgVGVzdERlY29yYXRlU29ydFVuZGVjb3JhdGUsCi0gICAgICAgIFRlc3RCdWdzLAotICAgICkKLQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggY2RmM2FlZC4uZjMxNGZmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTg1LDYgKzg1LDEyIEBACiAgICAgIyAwLjkuOCBvciBoaWdoZXIKICAgICByZXR1cm4gc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgwLCA5LCA4LCAwLCAxNSkKIAorZGVmIHV0Y19vZmZzZXQoKTogI05PVEU6IGlnbm9yZSBpc3N1ZXMgbGlrZSAjMTY0NzY1NAorICAgICMgbG9jYWwgdGltZSA9IHV0YyB0aW1lICsgdXRjIG9mZnNldAorICAgIGlmIHRpbWUuZGF5bGlnaHQgYW5kIHRpbWUubG9jYWx0aW1lKCkudG1faXNkc3QgPiAwOgorICAgICAgICByZXR1cm4gLXRpbWUuYWx0em9uZSAgIyBzZWNvbmRzCisgICAgcmV0dXJuIC10aW1lLnRpbWV6b25lCisKIGRlZiBhc24xdGltZShjZXJ0X3RpbWUpOgogICAgICMgU29tZSB2ZXJzaW9ucyBvZiBPcGVuU1NMIGlnbm9yZSBzZWNvbmRzLCBzZWUgIzE4MjA3CiAgICAgIyAwLjkuOC5pCkBAIC0xMzMsNiArMTM5LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQogCisgICAgZGVmIHRlc3Rfc3RyX2Zvcl9lbnVtcyhzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgUFJPVE9DT0xfKiBjb25zdGFudHMgaGF2ZSBlbnVtLWxpa2Ugc3RyaW5nCisgICAgICAgICMgcmVwcnMuCisgICAgICAgIHByb3RvID0gc3NsLlBST1RPQ09MX1NTTHYyMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwcm90byksICdfU1NMTWV0aG9kLlBST1RPQ09MX1NTTHYyMycpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHByb3RvKQorICAgICAgICBzZWxmLmFzc2VydElzKGN0eC5wcm90b2NvbCwgcHJvdG8pCisKICAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CiAgICAgICAgIHYgPSBzc2wuUkFORF9zdGF0dXMoKQogICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0xNTcsNiArMTcxLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsICdmb28nLCAxKQogICAgICAgICBzc2wuUkFORF9hZGQoInRoaXMgaXMgYSByYW5kb20gc3RyaW5nIiwgNzUuMCkKKyAgICAgICAgc3NsLlJBTkRfYWRkKGIidGhpcyBpcyBhIHJhbmRvbSBieXRlcyBvYmplY3QiLCA3NS4wKQorICAgICAgICBzc2wuUkFORF9hZGQoYnl0ZWFycmF5KGIidGhpcyBpcyBhIHJhbmRvbSBieXRlYXJyYXkgb2JqZWN0IiksIDc1LjApCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICdyZXF1aXJlcyBwb3NpeCcpCiAgICAgZGVmIHRlc3RfcmFuZG9tX2Zvcmsoc2VsZik6CkBAIC0yOTcsMTAgKzMxMywxMCBAQAogICAgICAgICAjIFZlcnNpb24gc3RyaW5nIGFzIHJldHVybmVkIGJ5IHtPcGVuLExpYnJlfVNTTCwgdGhlIGZvcm1hdCBtaWdodCBjaGFuZ2UKICAgICAgICAgaWYgIkxpYnJlU1NMIiBpbiBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiTGlicmVTU0wgezpkfS57OmR9Ii5mb3JtYXQobWFqb3IsIG1pbm9yKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMsIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0LCBoZXgobikpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiT3BlblNTTCB7OmR9Lns6ZH0uezpkfSIuZm9ybWF0KG1ham9yLCBtaW5vciwgZml4KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMsIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0LCBoZXgobikpKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfcmVmY3ljbGUoc2VsZik6CkBAIC0zNjgsNiArMzg0LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lLCBjZXJ0LCBob3N0bmFtZSkKIAorICAgICAgICAjIC0tIEhvc3RuYW1lIG1hdGNoaW5nIC0tCisKICAgICAgICAgY2VydCA9IHsnc3ViamVjdCc6ICgoKCdjb21tb25OYW1lJywgJ2V4YW1wbGUuY29tJyksKSwpfQogICAgICAgICBvayhjZXJ0LCAnZXhhbXBsZS5jb20nKQogICAgICAgICBvayhjZXJ0LCAnRXhBbXBsZS5jT20nKQpAQCAtNDUzLDYgKzQ3MSwyOCBAQAogICAgICAgICAjIE9ubHkgY29tbW9uTmFtZSBpcyBjb25zaWRlcmVkCiAgICAgICAgIGZhaWwoY2VydCwgJ0NhbGlmb3JuaWEnKQogCisgICAgICAgICMgLS0gSVB2NCBtYXRjaGluZyAtLQorICAgICAgICBjZXJ0ID0geydzdWJqZWN0JzogKCgoJ2NvbW1vbk5hbWUnLCAnZXhhbXBsZS5jb20nKSwpLCksCisgICAgICAgICAgICAgICAgJ3N1YmplY3RBbHROYW1lJzogKCgnRE5TJywgJ2V4YW1wbGUuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSVAgQWRkcmVzcycsICcxMC4xMS4xMi4xMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMTQuMTUuMTYuMTcnKSl9CisgICAgICAgIG9rKGNlcnQsICcxMC4xMS4xMi4xMycpCisgICAgICAgIG9rKGNlcnQsICcxNC4xNS4xNi4xNycpCisgICAgICAgIGZhaWwoY2VydCwgJzE0LjE1LjE2LjE4JykKKyAgICAgICAgZmFpbChjZXJ0LCAnZXhhbXBsZS5uZXQnKQorCisgICAgICAgICMgLS0gSVB2NiBtYXRjaGluZyAtLQorICAgICAgICBjZXJ0ID0geydzdWJqZWN0JzogKCgoJ2NvbW1vbk5hbWUnLCAnZXhhbXBsZS5jb20nKSwpLCksCisgICAgICAgICAgICAgICAgJ3N1YmplY3RBbHROYW1lJzogKCgnRE5TJywgJ2V4YW1wbGUuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSVAgQWRkcmVzcycsICcyMDAxOjA6MDowOjA6MDowOkNBRkVcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMjAwMzowOjA6MDowOjA6MDpCQUJBXG4nKSl9CisgICAgICAgIG9rKGNlcnQsICcyMDAxOjpjYWZlJykKKyAgICAgICAgb2soY2VydCwgJzIwMDM6OmJhYmEnKQorICAgICAgICBmYWlsKGNlcnQsICcyMDAzOjpiZWJlJykKKyAgICAgICAgZmFpbChjZXJ0LCAnZXhhbXBsZS5uZXQnKQorCisgICAgICAgICMgLS0gTWlzY2VsbGFuZW91cyAtLQorCiAgICAgICAgICMgTmVpdGhlciBjb21tb25OYW1lIG5vciBzdWJqZWN0QWx0TmFtZQogICAgICAgICBjZXJ0ID0geydub3RBZnRlcic6ICdEZWMgMTggMjM6NTk6NTkgMjAxMSBHTVQnLAogICAgICAgICAgICAgICAgICdzdWJqZWN0JzogKCgoJ2NvdW50cnlOYW1lJywgJ1VTJyksKSwKQEAgLTUwNCw5ICs1NDQsMTQgQEAKICAgICBkZWYgdGVzdF91bmtub3duX2NoYW5uZWxfYmluZGluZyhzZWxmKToKICAgICAgICAgIyBzaG91bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgdW5rbm93biB0eXBlCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgcy5iaW5kKCgnMTI3LjAuMC4xJywgMCkpCisgICAgICAgIHMubGlzdGVuKCkKKyAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCisgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKKyAgICAgICAgcy5jbG9zZSgpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBub3QgYXZhaWxhYmxlIikKQEAgLTY0Nyw2ICs2OTIsNzEgQEAKICAgICAgICAgICAgIGN0eC53cmFwX3NvY2tldChzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjeC5leGNlcHRpb24pLCAib25seSBzdHJlYW0gc29ja2V0cyBhcmUgc3VwcG9ydGVkIikKIAorICAgIGRlZiBjZXJ0X3RpbWVfb2soc2VsZiwgdGltZXN0cmluZywgdGltZXN0YW1wKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzc2wuY2VydF90aW1lX3RvX3NlY29uZHModGltZXN0cmluZyksIHRpbWVzdGFtcCkKKworICAgIGRlZiBjZXJ0X3RpbWVfZmFpbChzZWxmLCB0aW1lc3RyaW5nKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcyh0aW1lc3RyaW5nKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModXRjX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhbCB0aW1lIG5lZWRzIHRvIGJlIGRpZmZlcmVudCBmcm9tIFVUQycpCisgICAgZGVmIHRlc3RfY2VydF90aW1lX3RvX3NlY29uZHNfdGltZXpvbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5OTQwOiBzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoKSByZXR1cm5zIHdyb25nCisgICAgICAgICMgICAgICAgICAgICAgICByZXN1bHRzIGlmIGxvY2FsIHRpbWV6b25lIGlzIG5vdCBVVEMKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIk1heSAgOSAwMDowMDowMCAyMDA3IEdNVCIsIDExNzg2Njg4MDAuMCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIsIDE1MTUxNDQ4ODMuMCkKKworICAgIGRlZiB0ZXN0X2NlcnRfdGltZV90b19zZWNvbmRzKHNlbGYpOgorICAgICAgICB0aW1lc3RyaW5nID0gIkphbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIKKyAgICAgICAgdHMgPSAxNTE1MTQ0ODgzLjAKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2sodGltZXN0cmluZywgdHMpCisgICAgICAgICMgYWNjZXB0IGtleXdvcmQgcGFyYW1ldGVyLCBhc3NlcnQgaXRzIG5hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lPXRpbWVzdHJpbmcpLCB0cykKKyAgICAgICAgIyBhY2NlcHQgYm90aCAlZSBhbmQgJWQgKHNwYWNlIG9yIHplcm8gZ2VuZXJhdGVkIGJ5IHN0cmZ0aW1lKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuIDA1IDA5OjM0OjQzIDIwMTggR01UIiwgdHMpCisgICAgICAgICMgY2FzZS1pbnNlbnNpdGl2ZQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFOICA1IDA5OjM0OjQzIDIwMTggR21UIiwgdHMpCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNCAyMDE4IEdNVCIpICAgICAjIG5vIHNlY29uZHMKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDA5OjM0OjQzIDIwMTgiKSAgICAgICMgbm8gR01UCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNDo0MyAyMDE4IFVUQyIpICAjIG5vdCBHTVQgdGltZXpvbmUKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuIDM1IDA5OjM0OjQzIDIwMTggR01UIikgICMgaW52YWxpZCBkYXkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSm9uICA1IDA5OjM0OjQzIDIwMTggR01UIikgICMgaW52YWxpZCBtb250aAorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMjQ6MDA6MDAgMjAxOCBHTVQiKSAgIyBpbnZhbGlkIGhvdXIKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDA5OjYwOjQzIDIwMTggR01UIikgICMgaW52YWxpZCBtaW51dGUKKworICAgICAgICBuZXd5ZWFyX3RzID0gMTIzMDc2ODAwMC4wCisgICAgICAgICMgbGVhcCBzZWNvbmRzCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJEZWMgMzEgMjM6NTk6NjAgMjAwOCBHTVQiLCBuZXd5ZWFyX3RzKQorICAgICAgICAjIHNhbWUgdGltZXN0YW1wCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDEgMDA6MDA6MDAgMjAwOSBHTVQiLCBuZXd5ZWFyX3RzKQorCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NTkgMjAxOCBHTVQiLCAxNTE1MTQ0ODk5KQorICAgICAgICAjICBhbGxvdyA2MHRoIHNlY29uZCAoZXZlbiBpZiBpdCBpcyBub3QgYSBsZWFwIHNlY29uZCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgNSAwOTozNDo2MCAyMDE4IEdNVCIsIDE1MTUxNDQ5MDApCisgICAgICAgICMgIGFsbG93IDJuZCBsZWFwIHNlY29uZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRpbWUuc3RycHRpbWUoKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICA1IDA5OjM0OjYxIDIwMTggR01UIiwgMTUxNTE0NDkwMSkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDA5OjM0OjYyIDIwMTggR01UIikgICMgaW52YWxpZCBzZWNvbmRzCisKKyAgICAgICAgIyBubyBzcGVjaWFsIHRyZWF0ZW1lbnQgZm9yIHRoZSBzcGVjaWFsIHZhbHVlOgorICAgICAgICAjICAgOTk5OTEyMzEyMzU5NTlaIChyZmMgNTI4MCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkRlYyAzMSAyMzo1OTo1OSA5OTk5IEdNVCIsIDI1MzQwMjMwMDc5OS4wKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKKyAgICBkZWYgdGVzdF9jZXJ0X3RpbWVfdG9fc2Vjb25kc19sb2NhbGUoc2VsZik6CisgICAgICAgICMgYGNlcnRfdGltZV90b19zZWNvbmRzKClgIHNob3VsZCBiZSBsb2NhbGUgaW5kZXBlbmRlbnQKKworICAgICAgICBkZWYgbG9jYWxfZmVicnVhcnlfbmFtZSgpOgorICAgICAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyViJywgKDEsIDIsIDMsIDQsIDUsIDYsIDAsIDAsIDApKQorCisgICAgICAgIGlmIGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKS5sb3dlcigpID09ICdmZWInOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibG9jYWxlLXNwZWNpZmljIG1vbnRoIG5hbWUgbmVlZHMgdG8gYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IGZyb20gQyBsb2NhbGUiKQorCisgICAgICAgICMgbG9jYWxlLWluZGVwZW5kZW50CisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJGZWIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiLCAxMTcwOTc5MjAwLjApCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwobG9jYWxfZmVicnVhcnlfbmFtZSgpICsgIiAgOSAwMDowMDowMCAyMDA3IEdNVCIpCisKIAogY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTE1Niw3ICsxMjY2LDcgQEAKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzOgogICAgICAgICAgICAgcy5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCi0gICAgICAgICAgICBzLmxpc3Rlbig1KQorICAgICAgICAgICAgcy5saXN0ZW4oKQogICAgICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgIGMuc2V0YmxvY2tpbmcoRmFsc2UpCkBAIC0xMTY5LDYgKzEyNzksNjkgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQpCiAKIAorY2xhc3MgTWVtb3J5QklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcmVhZF93cml0ZShzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInJykKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgYmlvLndyaXRlKGInYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2Zvb2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYicnKQorICAgICAgICBiaW8ud3JpdGUoYidiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDIpLCBiJ2JhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgxKSwgYid6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgxKSwgYicnKQorCisgICAgZGVmIHRlc3RfZW9mKHNlbGYpOgorICAgICAgICBiaW8gPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5lb2YpCisgICAgICAgIGJpby53cml0ZV9lb2YoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMiksIGInZm8nKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMSksIGInbycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJpby5lb2YpCisKKyAgICBkZWYgdGVzdF9wZW5kaW5nKHNlbGYpOgorICAgICAgICBiaW8gPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgMCkKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgMykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBiaW8ucmVhZCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgMy1pLTEpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgYmlvLndyaXRlKGIneCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5wZW5kaW5nLCBpKzEpCisgICAgICAgIGJpby5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgMCkKKworICAgIGRlZiB0ZXN0X2J1ZmZlcl90eXBlcyhzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidmb28nKQorICAgICAgICBiaW8ud3JpdGUoYnl0ZWFycmF5KGInYmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidiYXInKQorICAgICAgICBiaW8ud3JpdGUobWVtb3J5dmlldyhiJ2JheicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInYmF6JykKKworICAgIGRlZiB0ZXN0X2Vycm9yX3R5cGVzKHNlbGYpOgorICAgICAgICBiaW8gPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQorCisKIGNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6CkBAIC0xMzk2LDE0ICsxNTY5LDEyIEBACiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKICAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlBST1RPQ09MX1NTTHYyMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKQEAgLTE0MTMsNyArMTU4NCw2IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQogCiAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5QUk9UT0NPTF9TU0x2MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKICAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQpAQCAtMTQ5OSw2ICsxNjY5LDkzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCisKK2NsYXNzIE5ldHdvcmtlZEJJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzc2xfaW9fbG9vcChzZWxmLCBzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgQSBzaW1wbGUgSU8gbG9vcC4gQ2FsbCBmdW5jKCphcmdzKSBkZXBlbmRpbmcgb24gdGhlIGVycm9yIHdlIGdldAorICAgICAgICAjIChXQU5UX1JFQUQgb3IgV0FOVF9XUklURSkgbW92ZSBkYXRhIGJldHdlZW4gdGhlIHNvY2tldCBhbmQgdGhlIEJJT3MuCisgICAgICAgIHRpbWVvdXQgPSBrd2FyZ3MuZ2V0KCd0aW1lb3V0JywgMTApCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZXJybm8gPSBOb25lCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0ID0gZnVuYygqYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBnZXQgYSBzcHVyaW91cyAtMS9TU0xfRVJST1JfU1lTQ0FMTCBmb3IKKyAgICAgICAgICAgICAgICAjIG5vbi1ibG9ja2luZyBJTy4gVGhlIFNTTF9zaHV0ZG93biBtYW5wYWdlIGhpbnRzIGF0IHRoaXMuCisgICAgICAgICAgICAgICAgIyBJdCAqc2hvdWxkKiBiZSBzYWZlIHRvIGp1c3QgaWdub3JlIFNZU19FUlJPUl9TWVNDQUxMIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAjIHdpdGggYSBNZW1vcnkgQklPIHRoZXJlJ3Mgbm8gc3lzY2FsbHMgKGZvciBJTyBhdCBsZWFzdCkuCisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfU1lTQ0FMTCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXJybm8gPSBlLmVycm5vCisgICAgICAgICAgICAjIEdldCBhbnkgZGF0YSBmcm9tIHRoZSBvdXRnb2luZyBCSU8gaXJyZXNwZWN0aXZlIG9mIGFueSBlcnJvciwgYW5kCisgICAgICAgICAgICAjIHNlbmQgaXQgdG8gdGhlIHNvY2tldC4KKyAgICAgICAgICAgIGJ1ZiA9IG91dGdvaW5nLnJlYWQoKQorICAgICAgICAgICAgc29jay5zZW5kYWxsKGJ1ZikKKyAgICAgICAgICAgICMgSWYgdGhlcmUncyBubyBlcnJvciwgd2UncmUgZG9uZS4gRm9yIFdBTlRfUkVBRCwgd2UgbmVlZCB0byBnZXQKKyAgICAgICAgICAgICMgZGF0YSBmcm9tIHRoZSBzb2NrZXQgYW5kIHB1dCBpdCBpbiB0aGUgaW5jb21pbmcgQklPLgorICAgICAgICAgICAgaWYgZXJybm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBlcnJubyA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKKyAgICAgICAgICAgICAgICBidWYgPSBzb2NrLnJlY3YoMzI3NjgpCisgICAgICAgICAgICAgICAgaWYgYnVmOgorICAgICAgICAgICAgICAgICAgICBpbmNvbWluZy53cml0ZShidWYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcud3JpdGVfZW9mKCkKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiTmVlZGVkICVkIGNhbGxzIHRvIGNvbXBsZXRlICVzKCkuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvdW50LCBmdW5jLl9fbmFtZV9fKSkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzdm4ucHl0aG9uLm9yZyIpOgorICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgICAgICBzb2NrLmNvbm5lY3QoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykpCisgICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCisgICAgICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSwgJ3N2bi5weXRob24ub3JnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3Nsb2JqLl9zc2xvYmoub3duZXIsIHNzbG9iaikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5jaXBoZXIoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3Nsb2JqLmdldHBlZXJjZXJ0KQorICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5jaXBoZXIoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfZGF0YShzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic3ZuLnB5dGhvbi5vcmciKToKKyAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICAgICAgc29jay5jb25uZWN0KCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQorICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xNTMwLDcgKzE3ODcsOCBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX25wbl9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IChzc2wuU1NMRXJyb3IsIENvbm5lY3Rpb25SZXNldEVycm9yKSBhcyBlOgogICAgICAgICAgICAgICAgICAgICAjIFdlIHRyZWF0IENvbm5lY3Rpb25SZXNldEVycm9yIGFzIHRob3VnaCBpdCB3ZXJlIGFuCiAgICAgICAgICAgICAgICAgICAgICMgU1NMRXJyb3IgLSBPcGVuU1NMIG9uIFVidW50dSBhYnJ1cHRseSBjbG9zZXMgdGhlCkBAIC0xNTQ3LDYgKzE4MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2hhcmVkX2NpcGhlcnMuYXBwZW5kKHNlbGYuc3NsY29ubi5zaGFyZWRfY2lwaGVycygpKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci5jb250ZXh0LnZlcmlmeV9tb2RlID09IHNzbC5DRVJUX1JFUVVJUkVEOgogICAgICAgICAgICAgICAgICAgICAgICAgY2VydCA9IHNlbGYuc3NsY29ubi5nZXRwZWVyY2VydCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNoYXR0eToKQEAgLTE2MzcsNyArMTg5Niw4IEBACiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjZXJ0aWZpY2F0ZT1Ob25lLCBzc2xfdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9Tm9uZSwgY2FjZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHN0YXJ0dGxzX3NlcnZlcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgbnBuX3Byb3RvY29scz1Ob25lLCBhbHBuX3Byb3RvY29scz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAgICAgaWYgY29udGV4dDoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBlbHNlOgpAQCAtMTY1Miw2ICsxOTEyLDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0aWZpY2F0ZSkKICAgICAgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBpZiBhbHBuX3Byb3RvY29sczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhhbHBuX3Byb3RvY29scykKICAgICAgICAgICAgICAgICBpZiBjaXBoZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYuY2hhdHR5ID0gY2hhdHR5CkBAIC0xNjYxLDcgKzE5MjMsOSBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zb2NrKQogICAgICAgICAgICAgc2VsZi5mbGFnID0gTm9uZQogICAgICAgICAgICAgc2VsZi5hY3RpdmUgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9wcm90b2NvbHMgPSBbXQorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9ucG5fcHJvdG9jb2xzID0gW10KKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMgPSBbXQorICAgICAgICAgICAgc2VsZi5zaGFyZWRfY2lwaGVycyA9IFtdCiAgICAgICAgICAgICBzZWxmLmNvbm5fZXJyb3JzID0gW10KICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgIHNlbGYuZGFlbW9uID0gVHJ1ZQpAQCAtMTY4MSw3ICsxOTQ1LDcgQEAKIAogICAgICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5zb2NrLnNldHRpbWVvdXQoMC4wNSkKLSAgICAgICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlbGYuc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5hY3RpdmUgPSBUcnVlCiAgICAgICAgICAgICBpZiBzZWxmLmZsYWc6CiAgICAgICAgICAgICAgICAgIyBzaWduYWwgYW4gZXZlbnQKQEAgLTE4ODcsMTQgKzIxNTEsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzaW9uJzogcy5jb21wcmVzc2lvbigpLAogICAgICAgICAgICAgICAgICAgICAnY2lwaGVyJzogcy5jaXBoZXIoKSwKICAgICAgICAgICAgICAgICAgICAgJ3BlZXJjZXJ0Jzogcy5nZXRwZWVyY2VydCgpLAotICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKyAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9hbHBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCksCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSwKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiBzLnZlcnNpb24oKSwKICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX25wbl9wcm90b2NvbHMKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfc2hhcmVkX2NpcGhlcnMnXSA9IHNlcnZlci5zaGFyZWRfY2lwaGVycwogICAgICAgICByZXR1cm4gc3RhdHMKIAogICAgIGRlZiB0cnlfcHJvdG9jb2xfY29tYm8oc2VydmVyX3Byb3RvY29sLCBjbGllbnRfcHJvdG9jb2wsIGV4cGVjdF9zdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHNyZXFzPU5vbmUsIHNlcnZlcl9vcHRpb25zPTAsIGNsaWVudF9vcHRpb25zPTApOgorICAgICAgICAiIiIKKyAgICAgICAgVHJ5IHRvIFNTTC1jb25uZWN0IHVzaW5nICpjbGllbnRfcHJvdG9jb2wqIHRvICpzZXJ2ZXJfcHJvdG9jb2wqLgorICAgICAgICBJZiAqZXhwZWN0X3N1Y2Nlc3MqIGlzIHRydWUsIGFzc2VydCB0aGF0IHRoZSBjb25uZWN0aW9uIHN1Y2NlZWRzLAorICAgICAgICBpZiBpdCdzIGZhbHNlLCBhc3NlcnQgdGhhdCB0aGUgY29ubmVjdGlvbiBmYWlscy4KKyAgICAgICAgQWxzbywgaWYgKmV4cGVjdF9zdWNjZXNzKiBpcyBhIHN0cmluZywgYXNzZXJ0IHRoYXQgaXQgaXMgdGhlIHByb3RvY29sCisgICAgICAgIHZlcnNpb24gYWN0dWFsbHkgdXNlZCBieSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIGNlcnRzcmVxcyBpcyBOb25lOgogICAgICAgICAgICAgY2VydHNyZXFzID0gc3NsLkNFUlRfTk9ORQogICAgICAgICBjZXJ0dHlwZSA9IHsKQEAgLTE5MjQsOCArMjE5OSw4IEBACiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQogICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICMgUHJvdG9jb2wgbWlzbWF0Y2ggY2FuIHJlc3VsdCBpbiBlaXRoZXIgYW4gU1NMRXJyb3IsIG9yIGEKICAgICAgICAgIyAiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIiBlcnJvci4KICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKQEAgLTE5NDAsNiArMjIxNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAiQ2xpZW50IHByb3RvY29sICVzIHN1Y2NlZWRlZCB3aXRoIHNlcnZlciBwcm90b2NvbCAlcyEiCiAgICAgICAgICAgICAgICAgICAgICUgKHNzbC5nZXRfcHJvdG9jb2xfbmFtZShjbGllbnRfcHJvdG9jb2wpLAogICAgICAgICAgICAgICAgICAgICAgICBzc2wuZ2V0X3Byb3RvY29sX25hbWUoc2VydmVyX3Byb3RvY29sKSkpCisgICAgICAgICAgICBlbGlmIChleHBlY3Rfc3VjY2VzcyBpcyBub3QgVHJ1ZQorICAgICAgICAgICAgICAgICAgYW5kIGV4cGVjdF9zdWNjZXNzICE9IHN0YXRzWyd2ZXJzaW9uJ10pOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ2ZXJzaW9uIG1pc21hdGNoOiBleHBlY3RlZCAlciwgZ290ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGV4cGVjdF9zdWNjZXNzLCBzdGF0c1sndmVyc2lvbiddKSkKIAogCiAgICAgY2xhc3MgVGhyZWFkZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMTA3LDcgKzIzODYsNyBAQAogICAgICAgICAgICAgIyBhbmQgc2V0cyBFdmVudCBgbGlzdGVuZXJfZ29uZWAgdG8gbGV0IHRoZSBtYWluIHRocmVhZCBrbm93CiAgICAgICAgICAgICAjIHRoZSBzb2NrZXQgaXMgZ29uZS4KICAgICAgICAgICAgIGRlZiBsaXN0ZW5lcigpOgotICAgICAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICAgICAgcy5saXN0ZW4oKQogICAgICAgICAgICAgICAgIGxpc3RlbmVyX3JlYWR5LnNldCgpCiAgICAgICAgICAgICAgICAgbmV3c29jaywgYWRkciA9IHMuYWNjZXB0KCkKICAgICAgICAgICAgICAgICBuZXdzb2NrLmNsb3NlKCkKQEAgLTIxNzIsMTkgKzI0NTEsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFNTTDIgY2xpZW50IHRvIFNTTDIzIHNlcnZlciB0ZXN0IHVuZXhwZWN0ZWRseSBmYWlsZWQ6XG4gJXNcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHN0cih4KSkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKLSAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlKQorICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYyMywgVHJ1ZSkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnKQogCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6Ci0gICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCisgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJywgc3NsLkNFUlRfT1BUSU9OQUwpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYyMywgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX09QVElPTkFMKQogCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6Ci0gICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJywgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYyMywgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX1JFUVVJUkVEKQogCiAgICAgICAgICAgICAjIFNlcnZlciB3aXRoIHNwZWNpZmljIFNTTCBvcHRpb25zCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6CkBAIC0yMjA0LDkgKzI0ODMsOSBAQAogICAgICAgICAgICAgIiIiQ29ubmVjdGluZyB0byBhbiBTU0x2MyBzZXJ2ZXIgd2l0aCB2YXJpb3VzIGNsaWVudCBvcHRpb25zIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycsIHNzbC5DRVJUX09QVElPTkFMKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjIsIEZhbHNlKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYyMywgRmFsc2UsCkBAIC0yMjE0LDcgKzI0OTMsNyBAQAogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1RMU3YxLCBGYWxzZSkKICAgICAgICAgICAgIGlmIG5vX3NzbHYyX2ltcGxpZXNfc3NsdjNfaGVsbG8oKToKICAgICAgICAgICAgICAgICAjIE5vIFNTTHYyID0+IGNsaWVudCB3aWxsIHVzZSBhbiBTU0x2MyBoZWxsbyBvbiByZWNlbnQgT3BlblNTTHMKLSAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBUcnVlLAorICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsICdTU0x2MycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19TU0x2MikKIAogICAgICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbApAQCAtMjIyMiw5ICsyNTAxLDkgQEAKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYSBUTFN2MSBzZXJ2ZXIgd2l0aCB2YXJpb3VzIGNsaWVudCBvcHRpb25zIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX09QVElPTkFMKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfU1NMdjIsIEZhbHNlKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgpAQCAtMjI0MCw3ICsyNTE5LDcgQEAKICAgICAgICAgICAgICAgIFRlc3RpbmcgYWdhaW5zdCBvbGRlciBUTFMgdmVyc2lvbnMuIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1RMU3YxXzEsICdUTFN2MS4xJykKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKICAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MiwgRmFsc2UpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6CkBAIC0yMjQ4LDcgKzI1MjcsNyBAQAogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fVExTdjFfMSkKIAotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCAnVExTdjEuMScpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgRmFsc2UpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgRmFsc2UpCiAKQEAgLTIyNjEsNyArMjU0MCw3IEBACiAgICAgICAgICAgICAgICBUZXN0aW5nIGFnYWluc3Qgb2xkZXIgVExTIHZlcnNpb25zLiIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxXzIsIFRydWUsCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCAnVExTdjEuMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9c3NsLk9QX05PX1NTTHYzfHNzbC5PUF9OT19TU0x2MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fU1NMdjN8c3NsLk9QX05PX1NTTHYyLCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKQEAgLTIyNzEsNyArMjU1MCw3IEBACiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19UTFN2MV8yKQogCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzIsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzIsICdUTFN2MS4yJykKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxXzEsIEZhbHNlKQpAQCAtMjUwNyw2ICsyNzg2LDM2IEBACiAgICAgICAgICAgICAgICAgcy53cml0ZShiIm92ZXJcbiIpCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKKyAgICAgICAgZGVmIHRlc3Rfbm9uYmxvY2tpbmdfc2VuZChzZWxmKToKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGtlZXAgc2VuZGluZyBkYXRhLCBhdCBzb21lIHBvaW50IHRoZSBidWZmZXJzCisgICAgICAgICAgICAgICAgIyB3aWxsIGJlIGZ1bGwgYW5kIHRoZSBjYWxsIHdpbGwgYmxvY2sKKyAgICAgICAgICAgICAgICBidWYgPSBieXRlYXJyYXkoODE5MikKKyAgICAgICAgICAgICAgICBkZWYgZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZChidWYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKHNzbC5TU0xXYW50V3JpdGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlNTTFdhbnRSZWFkRXJyb3IpLCBmaWxsX2J1ZmZlcikKKworICAgICAgICAgICAgICAgICMgTm93IHJlYWQgYWxsIHRoZSBvdXRwdXQgYW5kIGRpc2NhcmQgaXQKKyAgICAgICAgICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKICAgICAgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3RpbWVvdXQoc2VsZik6CiAgICAgICAgICAgICAjIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIG11c3QgcmVzcGVjdCB0aGUgc29ja2V0IHRpbWVvdXQKICAgICAgICAgICAgIHNlcnZlciA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCkBAIC0yNTE2LDcgKzI4MjUsNyBAQAogICAgICAgICAgICAgZmluaXNoID0gRmFsc2UKIAogICAgICAgICAgICAgZGVmIHNlcnZlKCk6Ci0gICAgICAgICAgICAgICAgc2VydmVyLmxpc3Rlbig1KQorICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oKQogICAgICAgICAgICAgICAgIHN0YXJ0ZWQuc2V0KCkKICAgICAgICAgICAgICAgICBjb25ucyA9IFtdCiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IGZpbmlzaDoKQEAgLTI1NzMsNyArMjg4Miw3IEBACiAgICAgICAgICAgICBwZWVyID0gTm9uZQogICAgICAgICAgICAgZGVmIHNlcnZlKCk6CiAgICAgICAgICAgICAgICAgbm9ubG9jYWwgcmVtb3RlLCBwZWVyCi0gICAgICAgICAgICAgICAgc2VydmVyLmxpc3Rlbig1KQorICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oKQogICAgICAgICAgICAgICAgICMgQmxvY2sgb24gdGhlIGFjY2VwdCBhbmQgd2FpdCBvbiB0aGUgY29ubmVjdGlvbiB0byBjbG9zZS4KICAgICAgICAgICAgICAgICBldnQuc2V0KCkKICAgICAgICAgICAgICAgICByZW1vdGUsIHBlZXIgPSBzZXJ2ZXIuYWNjZXB0KCkKQEAgLTI2MjMsNiArMjkzMiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCiAKKyAgICAgICAgZGVmIHRlc3RfdmVyc2lvbl9iYXNpYyhzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQmFzaWMgdGVzdHMgZm9yIFNTTFNvY2tldC52ZXJzaW9uKCkuCisgICAgICAgICAgICBNb3JlIHRlc3RzIGFyZSBkb25lIGluIHRoZSB0ZXN0X3Byb3RvY29sXyooKSBtZXRob2RzLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHMudmVyc2lvbigpLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnZlcnNpb24oKSwgIlRMU3YxIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHMudmVyc2lvbigpLCBOb25lKQorCiAgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgInRlc3QgcmVxdWlyZXMgRUNESC1lbmFibGVkIE9wZW5TU0wiKQogICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUoc2VsZik6CiAgICAgICAgICAgICAjIElzc3VlICMyMTAxNTogZWxsaXB0aWMgY3VydmUtYmFzZWQgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlCkBAIC0yNzMyLDYgKzMwNTYsNTUgQEAKICAgICAgICAgICAgIGlmICJBREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkVESCIgbm90IGluIHBhcnRzIGFuZCAiREhFIiBub3QgaW4gcGFydHM6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb24tREggY2lwaGVyOiAiICsgY2lwaGVyWzBdKQogCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICAgICAjIHNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSBpcyBOb25lIHVubGVzcyBBTFBOIGlzIHVzZWQuCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10sIE5vbmUpCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19BTFBOLCAiQUxQTiBzdXBwb3J0IHJlcXVpcmVkIikKKyAgICAgICAgZGVmIHRlc3Rfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbF9pZl9zZXJ2ZXJfdXNlc19hbHBuKHNlbGYpOgorICAgICAgICAgICAgIyBzZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgQUxQTiBpcyB1c2VkIGJ5IHRoZSBjbGllbnQuCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKFsnZm9vJywgJ2JhciddKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10sIE5vbmUpCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19BTFBOLCAiQUxQTiBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfYWxwbl9wcm90b2NvbHMoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gWydmb28nLCAnYmFyJywgJ21pbGtzaGFrZSddCisgICAgICAgICAgICBwcm90b2NvbF90ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICAoWydmb28nLCAnYmFyJ10sICdmb28nKSwKKyAgICAgICAgICAgICAgICAoWydiYXInLCAnZm9vJ10sICdmb28nKSwKKyAgICAgICAgICAgICAgICAoWydtaWxrc2hha2UnXSwgJ21pbGtzaGFrZScpLAorICAgICAgICAgICAgICAgIChbJ2h0dHAvMy4wJywgJ2h0dHAvNC4wJ10sIE5vbmUpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmb3IgY2xpZW50X3Byb3RvY29scywgZXhwZWN0ZWQgaW4gcHJvdG9jb2xfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhzZXJ2ZXJfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoY2xpZW50X3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKworICAgICAgICAgICAgICAgIG1zZyA9ICJmYWlsZWQgdHJ5aW5nICVzIChzKSBhbmQgJXMgKGMpLlxuIiBcCisgICAgICAgICAgICAgICAgICAgICAgIndhcyBleHBlY3RpbmcgJXMsIGJ1dCBnb3QgJSVzIGZyb20gdGhlICUlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzdHIoc2VydmVyX3Byb3RvY29scyksIHN0cihjbGllbnRfcHJvdG9jb2xzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVzdWx0ID0gc3RhdHNbJ2NsaWVudF9hbHBuX3Byb3RvY29sJ10KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoY2xpZW50X3Jlc3VsdCwgImNsaWVudCIpKQorICAgICAgICAgICAgICAgIHNlcnZlcl9yZXN1bHQgPSBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ11bLTFdIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHN0YXRzWydzZXJ2ZXJfYWxwbl9wcm90b2NvbHMnXSkgZWxzZSAnbm90aGluZycKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoc2VydmVyX3Jlc3VsdCwgInNlcnZlciIpKQorCiAgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKICAgICAgICAgICAgICMgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgTlBOIGlzIHVzZWQKICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0yODcyLDYgKzMyNDUsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbiwgJ1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlR5cGVFcnJvciIsIHN0ZGVyci5nZXR2YWx1ZSgpKQogCisgICAgICAgIGRlZiB0ZXN0X3NoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJSQzQiKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzpSQzQiKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0KQorICAgICAgICAgICAgY2lwaGVycyA9IHN0YXRzWydzZXJ2ZXJfc2hhcmVkX2NpcGhlcnMnXVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihjaXBoZXJzKSwgMCkKKyAgICAgICAgICAgIGZvciBuYW1lLCB0bHNfdmVyc2lvbiwgYml0cyBpbiBjaXBoZXJzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlJDNCIsIG5hbWUuc3BsaXQoIi0iKSkKKwogICAgICAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2FmdGVyX2Nsb3NlX3JhaXNlc192YWx1ZXJyb3Ioc2VsZik6CiAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRApAQCAtMjg4NywyMSArMzI3NCw0NiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMucmVhZCwgMTAyNCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLndyaXRlLCBiJ2hlbGxvJykKIAorICAgICAgICBkZWYgdGVzdF9zZW5kZmlsZShzZWxmKToKKyAgICAgICAgICAgIFRFU1RfREFUQSA9IGIieCIgKiA1MTIKKyAgICAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKFRFU1RfREFUQSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQsIGNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgcGxhdHMgPSB7CiAgICAgICAgICAgICAnTGludXgnOiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24sCiAgICAgICAgICAgICAnTWFjJzogcGxhdGZvcm0ubWFjX3ZlciwKICAgICAgICAgICAgICdXaW5kb3dzJzogcGxhdGZvcm0ud2luMzJfdmVyLAogICAgICAgICB9Ci0gICAgICAgIGZvciBuYW1lLCBmdW5jIGluIHBsYXRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBwbGF0ID0gZnVuYygpCi0gICAgICAgICAgICBpZiBwbGF0IGFuZCBwbGF0WzBdOgotICAgICAgICAgICAgICAgIHBsYXQgPSAnJXMgJXInICUgKG5hbWUsIHBsYXQpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBsYXQgPSByZXByKHBsYXRmb3JtLnBsYXRmb3JtKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBuYW1lLCBmdW5jIGluIHBsYXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgcGxhdCA9IGZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIHBsYXQgYW5kIHBsYXRbMF06CisgICAgICAgICAgICAgICAgICAgIHBsYXQgPSAnJXMgJXInICUgKG5hbWUsIHBsYXQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBsYXQgPSByZXByKHBsYXRmb3JtLnBsYXRmb3JtKCkpCiAgICAgICAgIHByaW50KCJ0ZXN0X3NzbDogdGVzdGluZyB3aXRoICVyICVyIiAlCiAgICAgICAgICAgICAoc3NsLk9QRU5TU0xfVkVSU0lPTiwgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPKSkKICAgICAgICAgcHJpbnQoIiAgICAgICAgICB1bmRlciAlcyIgJSBwbGF0KQpAQCAtMjkyMCwxMCArMzMzMiwxMSBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGUgJXIiICUgZmlsZW5hbWUpCiAKLSAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHMsIFNTTEVycm9yVGVzdHNdCisgICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCisgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQppbmRleCA0M2FiZjliLi5mNTkyNTJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weQpAQCAtMzAsOCArMzAsNSBAQAogICAgICAgICAgICAgc3RhcnRmaWxlKGVtcHR5KQogICAgICAgICAgICAgc3RhcnRmaWxlKGVtcHR5LCAib3BlbiIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q2FzZSkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0YXQucHkgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKaW5kZXggYWY2Y2VkNC4uZjFhNTkzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBpbXBvcnRfZnJlc2hfbW9kdWxlCiAKIGNfc3RhdCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3N0YXQnLCBmcmVzaD1bJ19zdGF0J10pCkBAIC01Miw2ICs1MywyNiBAQAogICAgICAgICAnU19JV09USCc6IDBvMDAyLAogICAgICAgICAnU19JWE9USCc6IDBvMDAxfQogCisgICAgIyBkZWZpbmVkIGJ5IHRoZSBXaW5kb3dzIEFQSSBkb2N1bWVudGF0aW9uCisgICAgZmlsZV9hdHRyaWJ1dGVzID0geworICAgICAgICAnRklMRV9BVFRSSUJVVEVfQVJDSElWRSc6IDMyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfQ09NUFJFU1NFRCc6IDIwNDgsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9ERVZJQ0UnOiA2NCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSc6IDE2LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfRU5DUllQVEVEJzogMTYzODQsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9ISURERU4nOiAyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSc6IDMyNzY4LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfTk9STUFMJzogMTI4LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCc6IDgxOTIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBJzogMTMxMDcyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfT0ZGTElORSc6IDQwOTYsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9SRUFET05MWSc6IDEsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UJzogMTAyNCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1NQQVJTRV9GSUxFJzogNTEyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfU1lTVEVNJzogNCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWSc6IDI1NiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1ZJUlRVQUwnOiA2NTUzNn0KKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKQEAgLTE4NSw2ICsyMDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsYWJsZShmdW5jKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygwKSwgMCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGSUxFX0FUVFJJQlVURV8qIGNvbnN0YW50cyBhcmUgV2luMzIgc3BlY2lmaWMiKQorICAgIGRlZiB0ZXN0X2ZpbGVfYXR0cmlidXRlX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc29ydGVkKHNlbGYuZmlsZV9hdHRyaWJ1dGVzLml0ZW1zKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5zdGF0bW9kLCBrZXkpLCBrZXkpCisgICAgICAgICAgICBtb2R2YWx1ZSA9IGdldGF0dHIoc2VsZi5zdGF0bW9kLCBrZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBtb2R2YWx1ZSwga2V5KQorCiAKIGNsYXNzIFRlc3RGaWxlbW9kZUNTdGF0KFRlc3RGaWxlbW9kZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHN0YXRtb2QgPSBjX3N0YXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggMzBmZTQyYS4uNWQzN2UxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGltcG9ydCB1bml0dGVzdCwgc3RyaW5nCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2F0dHJzKHNlbGYpOgotICAgICAgICBzdHJpbmcud2hpdGVzcGFjZQotICAgICAgICBzdHJpbmcuYXNjaWlfbG93ZXJjYXNlCi0gICAgICAgIHN0cmluZy5hc2NpaV91cHBlcmNhc2UKLSAgICAgICAgc3RyaW5nLmFzY2lpX2xldHRlcnMKLSAgICAgICAgc3RyaW5nLmRpZ2l0cwotICAgICAgICBzdHJpbmcuaGV4ZGlnaXRzCi0gICAgICAgIHN0cmluZy5vY3RkaWdpdHMKLSAgICAgICAgc3RyaW5nLnB1bmN0dWF0aW9uCi0gICAgICAgIHN0cmluZy5wcmludGFibGUKKyAgICAgICAgIyBXaGlsZSB0aGUgZXhhY3Qgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZXNlIGF0dHJpYnV0ZXMgaXMgbm90CisgICAgICAgICMgdGVjaG5pY2FsbHkgcGFydCBvZiB0aGUgImxhbmd1YWdlIHNwZWMiLCBpbiBwcmFjdGljZSB0aGVyZSBpcyBhbG1vc3QKKyAgICAgICAgIyBjZXJ0YWlubHkgdXNlciBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgb3JkZXIsIHNvIGRlLWZhY3RvIGl0ICppcyoKKyAgICAgICAgIyBwYXJ0IG9mIHRoZSBzcGVjLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy53aGl0ZXNwYWNlLCAnIFx0XG5cclx4MGJceDBjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuYXNjaWlfbG93ZXJjYXNlLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5hc2NpaV91cHBlcmNhc2UsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmFzY2lpX2xldHRlcnMsIHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuYXNjaWlfdXBwZXJjYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5kaWdpdHMsICcwMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuaGV4ZGlnaXRzLCBzdHJpbmcuZGlnaXRzICsgJ2FiY2RlZkFCQ0RFRicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLm9jdGRpZ2l0cywgJzAxMjM0NTY3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcucHVuY3R1YXRpb24sICchIiMkJSZcJygpKissLS4vOjs8PT4/QFtcXF1eX2B7fH1+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcucHJpbnRhYmxlLCBzdHJpbmcuZGlnaXRzICsgc3RyaW5nLmFzY2lpX2xvd2VyY2FzZSArIHN0cmluZy5hc2NpaV91cHBlcmNhc2UgKyBzdHJpbmcucHVuY3R1YXRpb24gKyBzdHJpbmcud2hpdGVzcGFjZSkKIAogICAgIGRlZiB0ZXN0X2NhcHdvcmRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnYWJjIGRlZiBnaGknKSwgJ0FiYyBEZWYgR2hpJykKQEAgLTQzLDggKzQ2LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCIte2Zvcm1hdF9zdHJpbmd9LSIsIGZvcm1hdF9zdHJpbmc9J3Rlc3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnLXRlc3QtJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGZtdC5mb3JtYXQsICIte2Zvcm1hdF9zdHJpbmd9LSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdChhcmc9J3Rlc3QnLCBmb3JtYXRfc3RyaW5nPSIte2FyZ30tIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy10ZXN0LScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImZvcm1hdF9zdHJpbmciKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdChhcmc9J3Rlc3QnLCBmb3JtYXRfc3RyaW5nPSIte2FyZ30tIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctdGVzdC0nKQogCiAgICAgZGVmIHRlc3RfYXV0b19udW1iZXJpbmcoc2VsZik6CiAgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQpAQCAtMTgxLDggKzE4NSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInJlY3Vyc2lvbiIsIHN0cihlcnIuZXhjZXB0aW9uKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5CmluZGV4IGU3NjM2MzUuLmQ0YjRhMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5ncHJlcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ3ByZXAucHkKQEAgLTIsNyArMiw2IEBACiAjIFNpbmNlIHdlIGRvbid0IGhhdmUgdGhlbSwgdGhpcyB0ZXN0IGNoZWNrcyBvbmx5IGEgZmV3IGNvZGUgcG9pbnRzLgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBmcm9tIHN0cmluZ3ByZXAgaW1wb3J0ICoKIApAQCAtODksOCArODgsNSBAQAogICAgICAgICAjICAgICBoLnVwZGF0ZShkYXRhKQogICAgICAgICAjICAgICBwcmludCBwLCBoLmhleGRpZ2VzdCgpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTdHJpbmdwcmVwVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggZDAxMzIyZi4uODdjZmZlOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTMyLDcgKzMyLDYgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVzdC5zdXBwb3J0CiAKIAogVEVNUExBVEUgPSByIiIiIyBjb2Rpbmc6ICVzCkBAIC0xOTksOCArMTk4LDUgQEAKICAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygibGF0aW45IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKaW5kZXggMmE2ZjNmOC4uMzQ2ZTJjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CkBAIC01NzgsMTggKzU3OCw1IEBACiAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19USU1FLCBsb2NhbGVfaW5mbykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIGdldGxhbmdfVGVzdHMsCi0gICAgICAgIExvY2FsZVRpbWVfVGVzdHMsCi0gICAgICAgIFRpbWVSRVRlc3RzLAotICAgICAgICBTdHJwdGltZVRlc3RzLAotICAgICAgICBTdHJwdGltZTEyQU1QTVRlc3RzLAotICAgICAgICBKdWxpYW5UZXN0cywKLSAgICAgICAgQ2FsY3VsYXRpb25UZXN0cywKLSAgICAgICAgQ2FjaGVUZXN0cwotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnRvZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5CmluZGV4IDQxYjZlNWYuLjI3Mjc1MTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5CkBAIC00MjksOCArNDI5LDUgQEAKICAgICAgICAgZm9yIHMgaW4gdGVzdF9zdHJpbmdzOgogICAgICAgICAgICAgc2VsZi5jaGVja19zdHJ0b2QocykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3RydG9kVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKaW5kZXggMDEwN2VlYi4uZWZiZGJmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKQEAgLTY2MCw4ICs2NjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0bWVtYmVycy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0bWVtYmVycy5weQppbmRleCAxYzkzMWFlLi41N2VjNDVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdG1lbWJlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5CkBAIC0xNDAsOCArMTQwLDUgQEAKICAgICAgICAgICAgIHRzLlRfVVNIT1JUID0gVVNIUlRfTUFYKzEKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKaW5kZXggMzUzZDBlYS4uM2VjYjI3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIFN0cnVjdFNlcVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTIzLDggKzEyMiw1IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0W3N0YXJ0OnN0b3A6c3RlcF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExbc3RhcnQ6c3RvcDpzdGVwXSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFN0cnVjdFNlcVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQppbmRleCAzNTkxYjVlLi45YzAyMjlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCkBAIC0zOTQsNyArMzk0LDcgQEAKICAgICAgICAgcHl0aG9uX2RpciwgcHl0aG9uX2Jhc2UgPSBzZWxmLl9zcGxpdF9weXRob25fcGF0aCgpCiAgICAgICAgIGFic19weXRob24gPSBvcy5wYXRoLmpvaW4ocHl0aG9uX2RpciwgcHl0aG9uX2Jhc2UpCiAgICAgICAgIHJlbF9weXRob24gPSBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBweXRob25fYmFzZSkKLSAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgd3JvbmdfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggYW4gYWJzb2x1dGUgcGF0aCwgY29uZmlybSB0aGF0IHVzaW5nIGEKICAgICAgICAgICAgICMgcmVsYXRpdmUgcGF0aCBmYWlscy4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLlBvcGVuLApAQCAtMTIzMiw2ICsxMjMyLDEwMiBAQAogICAgICAgICBmZHNfYWZ0ZXJfZXhjZXB0aW9uID0gb3MubGlzdGRpcihmZF9kaXJlY3RvcnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmRzX2JlZm9yZV9wb3BlbiwgZmRzX2FmdGVyX2V4Y2VwdGlvbikKIAorCitjbGFzcyBSdW5GdW5jVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICBkZWYgcnVuX3B5dGhvbihzZWxmLCBjb2RlLCAqKmt3YXJncyk6CisgICAgICAgICIiIlJ1biBQeXRob24gY29kZSBpbiBhIHN1YnByb2Nlc3MgdXNpbmcgc3VicHJvY2Vzcy5ydW4iIiIKKyAgICAgICAgYXJndiA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgY29kZV0KKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MucnVuKGFyZ3YsICoqa3dhcmdzKQorCisgICAgZGVmIHRlc3RfcmV0dXJuY29kZShzZWxmKToKKyAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzZXF1ZW5jZSBhcmd1bWVudAorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigiaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcC5yZXR1cm5jb2RlLCA0NykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgICAgICAgICBjcC5jaGVja19yZXR1cm5jb2RlKCkKKworICAgIGRlZiB0ZXN0X2NoZWNrKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKSBhcyBjOgorICAgICAgICAgICAgc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiLCBjaGVjaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhjZXB0aW9uLnJldHVybmNvZGUsIDQ3KQorCisgICAgZGVmIHRlc3RfY2hlY2tfemVybyhzZWxmKToKKyAgICAgICAgIyBjaGVja19yZXR1cm5jb2RlIHNob3VsZG4ndCByYWlzZSB3aGVuIHJldHVybmNvZGUgaXMgemVybworICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigiaW1wb3J0IHN5czsgc3lzLmV4aXQoMCkiLCBjaGVjaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwLnJldHVybmNvZGUsIDApCisKKyAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgorICAgICAgICAjIHJ1bigpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmd1bWVudDsgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNoaWxkCisgICAgICAgICMgcHJvY2VzcyBnZXRzIGtpbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuICBJZiB0aGUgY2hpbGQgaXNuJ3QKKyAgICAgICAgIyBraWxsZWQsIHRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIHNpbmNlIHN1YnByb2Nlc3MucnVuIHdhaXRzIGZvciB0aGUKKyAgICAgICAgIyBjaGlsZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKToKKyAgICAgICAgICAgIHNlbGYucnVuX3B5dGhvbigid2hpbGUgVHJ1ZTogcGFzcyIsIHRpbWVvdXQ9MC4wMDAxKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZV9zdGRvdXQoc2VsZik6CisgICAgICAgICMgY2FwdHVyZSBzdGRvdXQgd2l0aCB6ZXJvIHJldHVybiBjb2RlCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJwcmludCgnQkRGTCcpIiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0JERkwnLCBjcC5zdGRvdXQpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlX3N0ZGVycihzZWxmKToKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oImltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoJ0JERkwnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidCREZMJywgY3Auc3RkZXJyKQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3N0ZGluX2FyZyhzZWxmKToKKyAgICAgICAgIyBydW4oKSBjYW4gYmUgY2FsbGVkIHdpdGggc3RkaW4gc2V0IHRvIGEgZmlsZQorICAgICAgICB0ZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGYuY2xvc2UpCisgICAgICAgIHRmLndyaXRlKGIncGVhcicpCisgICAgICAgIHRmLnNlZWsoMCkKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oCisgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkudXBwZXIoKSkiLAorICAgICAgICAgICAgICAgIHN0ZGluPXRmLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEluKGInUEVBUicsIGNwLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF9pbnB1dF9hcmcoc2VsZik6CisgICAgICAgICMgY2hlY2tfb3V0cHV0KCkgY2FuIGJlIGNhbGxlZCB3aXRoIGlucHV0IHNldCB0byBhIHN0cmluZworICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigKKyAgICAgICAgICAgICAgICAiaW1wb3J0IHN5czsgc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpLnVwcGVyKCkpIiwKKyAgICAgICAgICAgICAgICBpbnB1dD1iJ3BlYXInLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEluKGInUEVBUicsIGNwLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF9zdGRpbl93aXRoX2lucHV0X2FyZyhzZWxmKToKKyAgICAgICAgIyBydW4oKSByZWZ1c2VzIHRvIGFjY2VwdCAnc3RkaW4nIHdpdGggJ2lucHV0JworICAgICAgICB0ZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGYuY2xvc2UpCisgICAgICAgIHRmLndyaXRlKGIncGVhcicpCisgICAgICAgIHRmLnNlZWsoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICBtc2c9IkV4cGVjdGVkIFZhbHVlRXJyb3Igd2hlbiBzdGRpbiBhbmQgaW5wdXQgYXJncyBzdXBwbGllZC4iKSBhcyBjOgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fcHl0aG9uKCJwcmludCgnd2lsbCBub3QgYmUgcnVuJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXRmLCBpbnB1dD1iJ2hhcmUnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzdGRpbicsIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lucHV0JywgYy5leGNlcHRpb24uYXJnc1swXSkKKworICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF90aW1lb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpIGFzIGM6CisgICAgICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigoCisgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IHN5cywgdGltZVxuIgorICAgICAgICAgICAgICAgICAgICAgInN5cy5zdGRvdXQud3JpdGUoJ0JERkwnKVxuIgorICAgICAgICAgICAgICAgICAgICAgInN5cy5zdGRvdXQuZmx1c2goKVxuIgorICAgICAgICAgICAgICAgICAgICAgInRpbWUuc2xlZXAoMzYwMCkiKSwKKyAgICAgICAgICAgICAgICAgICAgIyBTb21lIGhlYXZpbHkgbG9hZGVkIGJ1aWxkYm90cyAoc3BhcmMgRGViaWFuIDMueCkgcmVxdWlyZQorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbXVjaCB0aW1lIHRvIHN0YXJ0IGFuZCBwcmludC4KKyAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhjZXB0aW9uLm91dHB1dCwgYidCREZMJykKKyAgICAgICAgIyBvdXRwdXQgaXMgYWxpYXNlZCB0byBzdGRvdXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5zdGRvdXQsIGInQkRGTCcpCisKKyAgICBkZWYgdGVzdF9ydW5fa3dhcmdzKHNlbGYpOgorICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAiYmFuYW5hIgorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigoJ2ltcG9ydCBzeXMsIG9zOycKKyAgICAgICAgICAgICAgICAgICAgICAnc3lzLmV4aXQoMzMgaWYgb3MuZ2V0ZW52KCJGUlVJVCIpPT0iYmFuYW5hIiBlbHNlIDMxKScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwLnJldHVybmNvZGUsIDMzKQorCisKIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiUE9TSVggc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgUE9TSVhQcm9jZXNzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKIApAQCAtMjQyMCwyNCArMjUxNiwyMCBAQAogICAgICAgICBzdWJwcm9jZXNzLl9Qb3BlblNlbGVjdG9yID0gc2VsZi5vcmlnX3NlbGVjdG9yCiAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZS50ZWFyRG93bihzZWxmKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCBfX2FsbF9fIGlzIHBvcHVsYXRlZCBwcm9wZXJseS4iIiIKKyAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHNldCgoImxpc3QyY21kbGluZSIsKSkKKyAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQorICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKKyAgICAgICAgaW1wb3J0IHR5cGVzCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzdWJwcm9jZXNzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKHR5cGVzLk1vZHVsZVR5cGUsKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMuYWRkKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwb3J0ZWQsIHBvc3NpYmxlX2V4cG9ydHMgLSBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkKQogCi1jbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImVycm5vIGFuZCBFSU5UUiBtYWtlIG5vIHNlbnNlIG9uIHdpbmRvd3MiKQotICAgIGRlZiB0ZXN0X2VpbnRyX3JldHJ5X2NhbGwoc2VsZik6Ci0gICAgICAgIHJlY29yZF9jYWxscyA9IFtdCi0gICAgICAgIGRlZiBmYWtlX29zX2Z1bmMoKmFyZ3MpOgotICAgICAgICAgICAgcmVjb3JkX2NhbGxzLmFwcGVuZChhcmdzKQotICAgICAgICAgICAgaWYgbGVuKHJlY29yZF9jYWxscykgPT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCAiZmFrZSBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCIpCi0gICAgICAgICAgICByZXR1cm4gdHVwbGUocmV2ZXJzZWQoYXJncykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoOTk5LCAyNTYpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuX2VpbnRyX3JldHJ5X2NhbGwoZmFrZV9vc19mdW5jLCAyNTYsIDk5OSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygyNTYsIDk5OSldLCByZWNvcmRfY2FsbHMpCi0gICAgICAgICMgVGhpcyB0aW1lIHRoZXJlIHdpbGwgYmUgYW4gRUlOVFIgc28gaXQgd2lsbCBsb29wIG9uY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDY2NiwpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuX2VpbnRyX3JldHJ5X2NhbGwoZmFrZV9vc19mdW5jLCA2NjYpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoMjU2LCA5OTkpLCAoNjY2LCksICg2NjYsKV0sIHJlY29yZF9jYWxscykKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhtc3dpbmRvd3MsICJXaW5kb3dzLXNwZWNpZmljIHRlc3RzIikKQEAgLTI1NDQsOSArMjYzNiw5IEBACiAgICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIENvbW1hbmRUZXN0cywKICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKLSAgICAgICAgICAgICAgICAgIEhlbHBlckZ1bmN0aW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgICBDb21tYW5kc1dpdGhTcGFjZXMsCiAgICAgICAgICAgICAgICAgICBDb250ZXh0TWFuYWdlclRlc3RzLAorICAgICAgICAgICAgICAgICAgUnVuRnVuY1Rlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgKQogCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnVuaXRfdGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CmluZGV4IGU5OWNhOWUuLjFmYjk5NjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CkBAIC0yMiw4ICsyMiw2IEBACiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmNjb21waWxlcgogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuZmlsZWxpc3QKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLm1zdmNjb21waWxlcgogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy50ZXh0X2ZpbGUKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMudW5peGNjb21waWxlcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCAzN2ZjMmQ5Li5kYzNhMTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgQToKQEAgLTE3Myw5ICsxNzIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFgubWV0aCwgYykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKaW5kZXggMDNjZTlkMS4uMmMwMDQxNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpAQCAtODUsNyArODUsNyBAQAogICAgIGRlZiB0ZXN0X2JpbmRfcG9ydChzZWxmKToKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzKQotICAgICAgICBzLmxpc3RlbigxKQorICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgIHMuY2xvc2UoKQogCiAgICAgIyBUZXN0cyBmb3IgdGVtcF9kaXIoKQpAQCAtMjgwLDYgKzI4MCwzOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCAxKQogCisgICAgY2xhc3MgUmVmQ2xhc3M6CisgICAgICAgIGF0dHJpYnV0ZTEgPSBOb25lCisgICAgICAgIGF0dHJpYnV0ZTIgPSBOb25lCisgICAgICAgIF9oaWRkZW5fYXR0cmlidXRlMSA9IE5vbmUKKyAgICAgICAgX19tYWdpY18xX18gPSBOb25lCisKKyAgICBjbGFzcyBPdGhlckNsYXNzOgorICAgICAgICBhdHRyaWJ1dGUyID0gTm9uZQorICAgICAgICBhdHRyaWJ1dGUzID0gTm9uZQorICAgICAgICBfX21hZ2ljXzFfXyA9IE5vbmUKKyAgICAgICAgX19tYWdpY18yX18gPSBOb25lCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfYXBpX21pc21hdGNoKHNlbGYpOgorICAgICAgICBtaXNzaW5nX2l0ZW1zID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKHNlbGYuUmVmQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5PdGhlckNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnYXR0cmlidXRlMSd9LCBtaXNzaW5nX2l0ZW1zKQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goc2VsZi5PdGhlckNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuUmVmQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydhdHRyaWJ1dGUzJywgJ19fbWFnaWNfMl9fJ30sIG1pc3NpbmdfaXRlbXMpCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfYXBpX21pc21hdGNoX19pZ25vcmUoc2VsZik6CisgICAgICAgIGlnbm9yZSA9IFsnYXR0cmlidXRlMScsICdhdHRyaWJ1dGUzJywgJ19fbWFnaWNfMl9fJywgJ25vdF9pbl9laXRoZXInXQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goCisgICAgICAgICAgICAgICAgc2VsZi5SZWZDbGFzcywgc2VsZi5PdGhlckNsYXNzLCBpZ25vcmU9aWdub3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBtaXNzaW5nX2l0ZW1zKQorCisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goCisgICAgICAgICAgICAgICAgc2VsZi5PdGhlckNsYXNzLCBzZWxmLlJlZkNsYXNzLCBpZ25vcmU9aWdub3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBtaXNzaW5nX2l0ZW1zKQorCiAgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQogICAgICMgbWFrZV9sZWdhY3lfcHljCiAgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCAzMzViNGRjLi5lNWU3YjgzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgc3ltdGFibGUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBURVNUX0NPREUgPSAiIiIKQEAgLTE2OSw4ICsxNjgsNSBAQAogICAgICAgICBzeW1ib2xzID0gc3ltdGFibGUuc3ltdGFibGUoImRlZiBmKHgpOiByZXR1cm4geCIsICI/IiwgImV4ZWMiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTeW10YWJsZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggYTlkMzYyOC4uYTIyY2ViYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogPj4+IGYoeCBmb3IgeCBpbiBMLCAxKQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IEdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCBpZiBub3Qgc29sZSBhcmd1bWVudAorPj4+IGYoeCBmb3IgeCBpbiBMLCB5IGZvciB5IGluIEwpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CitTeW50YXhFcnJvcjogR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIGlmIG5vdCBzb2xlIGFyZ3VtZW50CiA+Pj4gZigoeCBmb3IgeCBpbiBMKSwgMSkKIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQogCkBAIC01ODIsNyArNTg1LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmNsYXNzPUluZGVudGF0aW9uRXJyb3IpCiAKICAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdChzZWxmKToKLSAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImludChiYXNlPTEwLCAnMicpIiwgIm5vbi1rZXl3b3JkIGFyZyIpCisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoYmFzZT0xMCwgJzInKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50IGZvbGxvd3Mga2V5d29yZCBhcmd1bWVudCIpCisKKyAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdDIoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoKip7YmFzZTogMTB9LCAnMicpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyIpCisKKyAgICBkZWYgdGVzdF9rd2FyZ3NfbGFzdDMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoKip7YmFzZTogMTB9LCAqWycyJ10pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIikKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5bnRheFRlc3RDYXNlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCBhNmQ5MjZmLi40OTRhNTNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdCwgdGVzdC5zdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCBzeXMsIGlvLCBvcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTYzNiw2ICs2MzYsNTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQogCisgICAgZGVmIGNfbG9jYWxlX2dldF9lcnJvcl9oYW5kbGVyKHNlbGYsIGlzb2xhdGVkPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgIyBGb3JjZSB0aGUgUE9TSVggbG9jYWxlCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsiTENfQUxMIl0gPSAiQyIKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IHN5cycsCisgICAgICAgICAgICAnZGVmIGR1bXAobmFtZSk6JywKKyAgICAgICAgICAgICcgICAgc3RkID0gZ2V0YXR0cihzeXMsIG5hbWUpJywKKyAgICAgICAgICAgICcgICAgcHJpbnQoIiVzOiAlcyIgJSAobmFtZSwgc3RkLmVycm9ycykpJywKKyAgICAgICAgICAgICdkdW1wKCJzdGRpbiIpJywKKyAgICAgICAgICAgICdkdW1wKCJzdGRvdXQiKScsCisgICAgICAgICAgICAnZHVtcCgic3RkZXJyIiknLAorICAgICAgICApKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjb2RlXQorICAgICAgICBpZiBpc29sYXRlZDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItSSIpCisgICAgICAgIGVsaWYgZW5jb2Rpbmc6CisgICAgICAgICAgICBlbnZbJ1BZVEhPTklPRU5DT0RJTkcnXSA9IGVuY29kaW5nCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gc3Rkb3V0CisKKyAgICBkZWYgdGVzdF9jX2xvY2FsZV9zdXJyb2dhdGVlc2NhcGUoc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoaXNvbGF0ZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluOiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0OiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkZXJyOiBiYWNrc2xhc2hyZXBsYWNlXG4nKQorCisgICAgICAgICMgcmVwbGFjZSB0aGUgZGVmYXVsdCBlcnJvciBoYW5kbGVyCisgICAgICAgIG91dCA9IHNlbGYuY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoZW5jb2Rpbmc9JzpzdHJpY3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkaW46IHN0cmljdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXQ6IHN0cmljdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRlcnI6IGJhY2tzbGFzaHJlcGxhY2VcbicpCisKKyAgICAgICAgIyBmb3JjZSB0aGUgZW5jb2RpbmcKKyAgICAgICAgb3V0ID0gc2VsZi5jX2xvY2FsZV9nZXRfZXJyb3JfaGFuZGxlcihlbmNvZGluZz0naXNvODg1OS0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluOiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0OiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkZXJyOiBiYWNrc2xhc2hyZXBsYWNlXG4nKQorCiAgICAgZGVmIHRlc3RfaW1wbGVtZW50YXRpb24oc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGFwcGxpZXMgdG8gYWxsIGltcGxlbWVudGF0aW9ucyBlcXVhbGx5LgogCkBAIC02NjEsNyArNzA4LDcgQEAKICAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X2RlYnVnbWFsbG9jc3RhdHMoc2VsZik6CiAgICAgICAgICMgVGVzdCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKQotICAgICAgICBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworICAgICAgICBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAgICAgICAgIGFyZ3MgPSBbJy1jJywgJ2ltcG9ydCBzeXM7IHN5cy5fZGVidWdtYWxsb2NzdGF0cygpJ10KICAgICAgICAgcmV0LCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmcmVlIFB5RGljdE9iamVjdHMiLCBlcnIpCkBAIC02OTgsNiArNzQ1LDI3IEBACiAgICAgICAgIGMgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihjLCByYW5nZShiIC0gNTAsIGIgKyA1MCkpCiAKKyAgICBkZWYgdGVzdF9pc19maW5hbGl6aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5pc19maW5hbGl6aW5nKCksIEZhbHNlKQorICAgICAgICAjIERvbid0IHVzZSB0aGUgYXRleGl0IG1vZHVsZSBiZWNhdXNlIF9QeV9GaW5hbGl6aW5nIGlzIG9ubHkgc2V0CisgICAgICAgICMgYWZ0ZXIgY2FsbGluZyBhdGV4aXQgY2FsbGJhY2tzCisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBjbGFzcyBBdEV4aXQ6CisgICAgICAgICAgICAgICAgaXNfZmluYWxpemluZyA9IHN5cy5pc19maW5hbGl6aW5nCisgICAgICAgICAgICAgICAgcHJpbnQgPSBwcmludAorCisgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnQoc2VsZi5pc19maW5hbGl6aW5nKCksIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSBpbiB0aGUgX19tYWluX18gbW9kdWxlIG5hbWVzcGFjZSwgc28gdGhlCisgICAgICAgICAgICAjIEF0RXhpdCBkZXN0cnVjdG9yIHdpbGwgYmUgY2FsbGVkIGF0IFB5dGhvbiBleGl0CisgICAgICAgICAgICByZWYgPSBBdEV4aXQoKQorICAgICAgICAiIiIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5yc3RyaXAoKSwgYidUcnVlJykKKwogCiBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQogY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03NzAsNyArODM4LDcgQEAKICAgICAgICAgIyBidWZmZXIKICAgICAgICAgIyBYWFgKICAgICAgICAgIyBidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZAotICAgICAgICBjaGVjayhsZW4sIHNpemUoJzNQJykpICMgWFhYIGNoZWNrIGxheW91dAorICAgICAgICBjaGVjayhsZW4sIHNpemUoJzRQJykpICMgWFhYIGNoZWNrIGxheW91dAogICAgICAgICAjIGJ5dGVhcnJheQogICAgICAgICBzYW1wbGVzID0gW2InJywgYid1JyoxMDAwMDBdCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKQEAgLTg3NCw3ICs5NDIsNyBAQAogICAgICAgICAgICAgY2hlY2soYmFyLCBzaXplKCdQUCcpKQogICAgICAgICAjIGdlbmVyYXRvcgogICAgICAgICBkZWYgZ2V0X2dlbigpOiB5aWVsZCAxCi0gICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUCcpKQorICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BiMlBQUCcpKQogICAgICAgICAjIGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoJ2FiYycpLCBzaXplKCdsUCcpKQogICAgICAgICAjIGNhbGxhYmxlLWl0ZXJhdG9yCkBAIC05MjgsNyArOTk2LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCisgICAgICAgIHMgPSBzaXplKCczblAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJzJuUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC05NTcsOSArMTAyNSw5IEBACiAgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAogICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpCiAgICAgICAgIGNoZWNrKGludCwgcykKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCisgICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5QXN5bmNNZXRob2RzICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCiAgICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQotICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpICsgc3RydWN0LmNhbGNzaXplKCczNFAgM1AgMTBQIDJQIDRQJykKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xN1BsNFBuOVBuMTFQSVAnKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDNQIDEwUCAyUCA0UCcpCiAgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKICAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0cHJvZmlsZS5weQppbmRleCA5ODE2ZTNlLi5iYjcxYWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHByb2ZpbGUucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RHZXRQcm9maWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0yNjAsNyArMjU5LDYgQEAKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICAgICAgICAgIHlpZWxkIGkKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgZGVmIGcocCk6CiAgICAgICAgICAgICBmb3IgaSBpbiBmKCk6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMzc0LDEzICszNzIsNSBAQAogICAgIHBwcmludC5wcHJpbnQoY2FwdHVyZV9ldmVudHMoY2FsbGFibGUpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVGVzdEdldFByb2ZpbGUsCi0gICAgICAgIFByb2ZpbGVIb29rVGVzdENhc2UsCi0gICAgICAgIFByb2ZpbGVTaW11bGF0b3JUZXN0Q2FzZQotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IDgwNGM0NDYuLmMwZjI3YTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zODksNiArMzg5LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHZhcnNbJ1NPJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyc1snU08nXSwgdmFyc1snRVhUX1NVRkZJWCddKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcsICdMaW51eC1zcGVjaWZpYyB0ZXN0JykKKyAgICBkZWYgdGVzdF90cmlwbGV0X2luX2V4dF9zdWZmaXgoc2VsZik6CisgICAgICAgIGltcG9ydCBjdHlwZXMsIHBsYXRmb3JtLCByZQorICAgICAgICBtYWNoaW5lID0gcGxhdGZvcm0ubWFjaGluZSgpCisgICAgICAgIHN1ZmZpeCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCisgICAgICAgIGlmIHJlLm1hdGNoKCcoYWFyY2g2NHxhcm18bWlwc3xwcGN8cG93ZXJwY3xzMzkwfHNwYXJjKScsIG1hY2hpbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsaW51eCcgaW4gc3VmZml4LCBzdWZmaXgpCisgICAgICAgIGlmIHJlLm1hdGNoKCcoaVszLTZdODZ8eDg2XzY0KSQnLCBtYWNoaW5lKToKKyAgICAgICAgICAgIGlmIGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfY2hhcl9wKCkpID09IDQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgnaTM4Ni1saW51eC1nbnUuc28nKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgpCisgICAgICAgICAgICBlbHNlOiAjIDggYnl0ZSBwb2ludGVyIHNpemUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251LnNvJyksIHN1ZmZpeCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ09TIFgtc3BlY2lmaWMgdGVzdCcpCisgICAgZGVmIHRlc3Rfb3N4X2V4dF9zdWZmaXgoc2VsZik6CisgICAgICAgIHN1ZmZpeCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJy1kYXJ3aW4uc28nKSwgc3VmZml4KQogCiBjbGFzcyBNYWtlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNsb2cucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQppbmRleCBiN2ZkMmJkLi42ZjkwMmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQpAQCAtMzYsOCArMzYsNSBAQAogICAgICAgICBzeXNsb2cub3BlbmxvZygpCiAgICAgICAgIHN5c2xvZy5zeXNsb2coJ3Rlc3QgbWVzc2FnZSBmcm9tIHB5dGhvbiB0ZXN0X3N5c2xvZycpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGMxMzUzMDQuLjY2YTBhNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIsMTEgKzIsMTQgQEAKIGltcG9ydCBvcwogaW1wb3J0IGlvCiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrCiBpbXBvcnQgdGFyZmlsZQogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogIyBDaGVjayBmb3Igb3VyIGNvbXByZXNzaW9uIG1vZHVsZXMuCiB0cnk6CkBAIC0yODUsNiArMjg4LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidwYXgnICsgKGInLzEyMycgKiAxMjUpICsgYicvbG9uZ2xpbmsgbGluayB0byBwYXgnICsKICAgICAgICAgICAgICAgICAgICAgICAoYicvMTIzJyAqIDEyNSkgKyBiJy9sb25nbmFtZScsIG91dCkKIAorICAgIGRlZiB0ZXN0X2xpc3RfbWVtYmVycyhzZWxmKToKKyAgICAgICAgdGlvID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksICdhc2NpaScsIG5ld2xpbmU9J1xuJykKKyAgICAgICAgZGVmIG1lbWJlcnModGFyKToKKyAgICAgICAgICAgIGZvciB0YXJpbmZvIGluIHRhci5nZXRtZW1iZXJzKCk6CisgICAgICAgICAgICAgICAgaWYgJ3JlZycgaW4gdGFyaW5mby5uYW1lOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAnc3Rkb3V0JywgdGlvKToKKyAgICAgICAgICAgIHNlbGYudGFyLmxpc3QodmVyYm9zZT1GYWxzZSwgbWVtYmVycz1tZW1iZXJzKHNlbGYudGFyKSkKKyAgICAgICAgb3V0ID0gdGlvLmRldGFjaCgpLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzdGFyL3JlZ3R5cGUnLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYid1c3Rhci9jb250dHlwZScsIG91dCkKKwogCiBjbGFzcyBHemlwTGlzdFRlc3QoR3ppcFRlc3QsIExpc3RUZXN0KToKICAgICBwYXNzCkBAIC05NjcsNiArOTgyLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm9iai5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZm9iai5nZXR2YWx1ZSgpKQogCisgICAgZGVmIHRlc3RfZW9mX21hcmtlcihzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgYW4gZW5kIG9mIGFyY2hpdmUgbWFya2VyIGlzIHdyaXR0ZW4gKHR3byB6ZXJvIGJsb2NrcykuCisgICAgICAgICMgdGFyZmlsZSBpbnNpc3RzIG9uIGFsaWduaW5nIGFyY2hpdmVzIHRvIGEgMjAgKiA1MTIgYnl0ZSByZWNvcmRzaXplLgorICAgICAgICAjIFNvLCB3ZSBjcmVhdGUgYW4gYXJjaGl2ZSB0aGF0IGhhcyBleGFjdGx5IDEwMjQwIGJ5dGVzIHdpdGhvdXQgdGhlCisgICAgICAgICMgbWFya2VyLCBhbmQgaGFzIDIwNDgwIGJ5dGVzIG9uY2UgdGhlIG1hcmtlciBpcyB3cml0dGVuLgorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpIGFzIHRhcjoKKyAgICAgICAgICAgIHQgPSB0YXJmaWxlLlRhckluZm8oImZvbyIpCisgICAgICAgICAgICB0LnNpemUgPSB0YXJmaWxlLlJFQ09SRFNJWkUgLSB0YXJmaWxlLkJMT0NLU0laRQorICAgICAgICAgICAgdGFyLmFkZGZpbGUodCwgaW8uQnl0ZXNJTyhiImEiICogdC5zaXplKSkKKworICAgICAgICB3aXRoIHNlbGYub3Blbih0bXBuYW1lLCAicmIiKSBhcyBmb2JqOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9iai5yZWFkKCkpLCB0YXJmaWxlLlJFQ09SRFNJWkUgKiAyKQorCiAKIGNsYXNzIFdyaXRlVGVzdChXcml0ZVRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE0MTYsNiArMTQ0NCw4OCBAQAogICAgICAgICAgICAgICAgICAgICgibG9uZ2xuay8iICogMTI3KSArICJsb25nbGlua18iKQogCiAKK2NsYXNzIENyZWF0ZVRlc3QoV3JpdGVUZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcHJlZml4ID0gIng6IgorCisgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJzcGFtZWdnczQyIikKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsodG1wbmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHdpdGggb3BlbihjbHMuZmlsZV9wYXRoLCAid2IiKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9iai53cml0ZShiImFhYSIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnVubGluayhjbHMuZmlsZV9wYXRoKQorCisgICAgZGVmIHRlc3RfY3JlYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtZWdnczQyJywgbmFtZXNbMF0pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRtcG5hbWUsIHNlbGYubW9kZSkgYXMgdG9iajoKKyAgICAgICAgICAgIHRvYmouYWRkKHNlbGYuZmlsZV9wYXRoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgIHRvYmogPSB0YXJmaWxlLm9wZW4odG1wbmFtZSwgc2VsZi5tb2RlKQorCisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUpIGFzIHRvYmo6CisgICAgICAgICAgICBuYW1lcyA9IHRvYmouZ2V0bmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW1lZ2dzNDInLCBuYW1lc1swXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV90YXJvcGVuKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lLCAieCIpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtZWdnczQyJywgbmFtZXNbMF0pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZXhpc3RpbmdfdGFyb3BlbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSwgIngiKSBhcyB0b2JqOgorICAgICAgICAgICAgdG9iai5hZGQoc2VsZi5maWxlX3BhdGgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSwgIngiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSkgYXMgdG9iajoKKyAgICAgICAgICAgIG5hbWVzID0gdG9iai5nZXRuYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic3BhbWVnZ3M0MiIsIG5hbWVzWzBdKQorCisKK2NsYXNzIEd6aXBDcmVhdGVUZXN0KEd6aXBUZXN0LCBDcmVhdGVUZXN0KToKKyAgICBwYXNzCisKKworY2xhc3MgQnoyQ3JlYXRlVGVzdChCejJUZXN0LCBDcmVhdGVUZXN0KToKKyAgICBwYXNzCisKKworY2xhc3MgTHptYUNyZWF0ZVRlc3QoTHptYVRlc3QsIENyZWF0ZVRlc3QpOgorICAgIHBhc3MKKworCitjbGFzcyBDcmVhdGVXaXRoWE1vZGVUZXN0KENyZWF0ZVRlc3QpOgorCisgICAgcHJlZml4ID0gIngiCisKKyAgICB0ZXN0X2NyZWF0ZV90YXJvcGVuID0gTm9uZQorICAgIHRlc3RfY3JlYXRlX2V4aXN0aW5nX3Rhcm9wZW4gPSBOb25lCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgImxpbmsiKSwgIk1pc3NpbmcgaGFyZGxpbmsgaW1wbGVtZW50YXRpb24iKQogY2xhc3MgSGFyZGxpbmtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRlc3QgdGhlIGNyZWF0aW9uIG9mIExOS1RZUEUgKGhhcmRsaW5rKSBtZW1iZXJzIGluIGFuIGFyY2hpdmUuCkBAIC0yMTcwLDYgKzIyODAsMTM4IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9pbnB1dCgicjpiejIiKQogCiAKK2RlZiByb290X2lzX3VpZF9naWRfMCgpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHB3ZCwgZ3JwCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBwd2QuZ2V0cHd1aWQoMClbMF0gIT0gJ3Jvb3QnOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBncnAuZ2V0Z3JnaWQoMClbMF0gIT0gJ3Jvb3QnOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAibWlzc2luZyBvcy5jaG93biIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpLCAibWlzc2luZyBvcy5nZXRldWlkIikKK2NsYXNzIE51bWVyaWNPd25lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgbW9jayB0aGUgZm9sbG93aW5nOgorICAgICMgIG9zLmNob3duOiBzbyB3ZSBjYW4gdGVzdCB3aGF0J3MgYmVpbmcgY2FsbGVkCisgICAgIyAgb3MuY2htb2Q6IHNvIHRoZSBtb2RlcyBhcmUgbm90IGFjdHVhbGx5IGNoYW5nZWQuIGlmIHRoZXkgYXJlLCB3ZSBjYW4ndAorICAgICMgICAgICAgICAgICAgZGVsZXRlIHRoZSBmaWxlcy9kaXJlY3RvcmllcworICAgICMgIG9zLmdldGV1aWQ6IHNvIHdlIGNhbiBsaWUgYW5kIHNheSB3ZSdyZSByb290ICh1aWQgPSAwKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbWFrZV90ZXN0X2FyY2hpdmUoZmlsZW5hbWVfMSwgZGlybmFtZV8xLCBmaWxlbmFtZV8yKToKKyAgICAgICAgIyB0aGUgZmlsZSBjb250ZW50cyB0byB3cml0ZQorICAgICAgICBmb2JqID0gaW8uQnl0ZXNJTyhiImNvbnRlbnQiKQorCisgICAgICAgICMgY3JlYXRlIGEgdGFyIGZpbGUgd2l0aCBhIGZpbGUsIGEgZGlyZWN0b3J5LCBhbmQgYSBmaWxlIHdpdGhpbiB0aGF0CisgICAgICAgICMgIGRpcmVjdG9yeS4gQXNzaWduIHZhcmlvdXMgLnVpZC8uZ2lkIHZhbHVlcyB0byB0aGVtCisgICAgICAgIGl0ZW1zID0gWyhmaWxlbmFtZV8xLCA5OSwgOTgsIHRhcmZpbGUuUkVHVFlQRSwgZm9iaiksCisgICAgICAgICAgICAgICAgIChkaXJuYW1lXzEsICA3NywgNzYsIHRhcmZpbGUuRElSVFlQRSwgTm9uZSksCisgICAgICAgICAgICAgICAgIChmaWxlbmFtZV8yLCA4OCwgODcsIHRhcmZpbGUuUkVHVFlQRSwgZm9iaiksCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odG1wbmFtZSwgJ3cnKSBhcyB0YXJmbDoKKyAgICAgICAgICAgIGZvciBuYW1lLCB1aWQsIGdpZCwgdHlwLCBjb250ZW50cyBpbiBpdGVtczoKKyAgICAgICAgICAgICAgICB0ID0gdGFyZmlsZS5UYXJJbmZvKG5hbWUpCisgICAgICAgICAgICAgICAgdC51aWQgPSB1aWQKKyAgICAgICAgICAgICAgICB0LmdpZCA9IGdpZAorICAgICAgICAgICAgICAgIHQudW5hbWUgPSAncm9vdCcKKyAgICAgICAgICAgICAgICB0LmduYW1lID0gJ3Jvb3QnCisgICAgICAgICAgICAgICAgdC50eXBlID0gdHlwCisgICAgICAgICAgICAgICAgdGFyZmwuYWRkZmlsZSh0LCBjb250ZW50cykKKworICAgICAgICAjIHJldHVybiB0aGUgZnVsbCBwYXRobmFtZSB0byB0aGUgdGFyIGZpbGUKKyAgICAgICAgcmV0dXJuIHRtcG5hbWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBAY29udGV4dG1hbmFnZXIKKyAgICBkZWYgX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKToKKyAgICAgICAgbW9ja19nZXRldWlkLnJldHVybl92YWx1ZSA9IDAgICMgbGllIGFuZCBzYXkgd2UncmUgcm9vdAorICAgICAgICBmbmFtZSA9ICdudW1lcmljLW93bmVyLXRlc3RmaWxlJworICAgICAgICBkaXJuYW1lID0gJ2RpcicKKworICAgICAgICAjIHRoZSBuYW1lcyB3ZSB3YW50IHN0b3JlZCBpbiB0aGUgdGFyZmlsZQorICAgICAgICBmaWxlbmFtZV8xID0gZm5hbWUKKyAgICAgICAgZGlybmFtZV8xID0gZGlybmFtZQorICAgICAgICBmaWxlbmFtZV8yID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGZuYW1lKQorCisgICAgICAgICMgY3JlYXRlIHRoZSB0YXJmaWxlIHdpdGggdGhlIGNvbnRlbnRzIHdlJ3JlIGFmdGVyCisgICAgICAgIHRhcl9maWxlbmFtZSA9IE51bWVyaWNPd25lclRlc3QuX21ha2VfdGVzdF9hcmNoaXZlKGZpbGVuYW1lXzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcm5hbWVfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMikKKworICAgICAgICAjIG9wZW4gdGhlIHRhcmZpbGUgZm9yIHJlYWRpbmcuIHlpZWxkIGl0IGFuZCB0aGUgbmFtZXMgb2YgdGhlIGl0ZW1zCisgICAgICAgICMgIHdlIHN0b3JlZCBpbnRvIHRoZSBmaWxlCisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcl9maWxlbmFtZSkgYXMgdGFyZmw6CisgICAgICAgICAgICB5aWVsZCB0YXJmbCwgZmlsZW5hbWVfMSwgZGlybmFtZV8xLCBmaWxlbmFtZV8yCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2hvd24nKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG1vZCcpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2V4dHJhY3Rfd2l0aF9udW1lcmljX293bmVyKHNlbGYsIG1vY2tfZ2V0ZXVpZCwgbW9ja19jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Nob3duKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMik6CisgICAgICAgICAgICB0YXJmbC5leHRyYWN0KGZpbGVuYW1lXzEsIFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QoZmlsZW5hbWVfMiAsIFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKyAgICAgICAgZl9maWxlbmFtZV8yID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzIpCisKKyAgICAgICAgbW9ja19jaG93bi5hc3NlcnRfaGFzX2NhbGxzKFt1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8xLCA5OSwgOTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suY2FsbChmX2ZpbGVuYW1lXzIsIDg4LCA4NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueV9vcmRlcj1UcnVlKQorCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNob3duJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2htb2QnKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5nZXRldWlkJykKKyAgICBkZWYgdGVzdF9leHRyYWN0YWxsX3dpdGhfbnVtZXJpY19vd25lcihzZWxmLCBtb2NrX2dldGV1aWQsIG1vY2tfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19jaG93bik6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgZGlybmFtZV8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfMik6CisgICAgICAgICAgICB0YXJmbC5leHRyYWN0YWxsKFRFTVBESVIsIG51bWVyaWNfb3duZXI9VHJ1ZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKyAgICAgICAgZl9kaXJuYW1lXzEgID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGRpcm5hbWVfMSkKKyAgICAgICAgZl9maWxlbmFtZV8yID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzIpCisKKyAgICAgICAgbW9ja19jaG93bi5hc3NlcnRfaGFzX2NhbGxzKFt1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8xLCA5OSwgOTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suY2FsbChmX2Rpcm5hbWVfMSwgNzcsIDc2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8yLCA4OCwgODcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICMgdGhpcyB0ZXN0IHJlcXVpcmVzIHRoYXQgdWlkPTAgYW5kIGdpZD0wIHJlYWxseSBiZSBuYW1lZCAncm9vdCcuIHRoYXQncworICAgICMgIGJlY2F1c2UgdGhlIHVuYW1lIGFuZCBnbmFtZSBpbiB0aGUgdGVzdCBmaWxlIGFyZSAncm9vdCcsIGFuZCBleHRyYWN0KCkKKyAgICAjICB3aWxsIGxvb2sgdGhlbSB1cCB1c2luZyBwd2QgYW5kIGdycCB0byBmaW5kIHRoZWlyIHVpZCBhbmQgZ2lkLCB3aGljaCB3ZQorICAgICMgIHRlc3QgaGVyZSB0byBiZSAwLgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHJvb3RfaXNfdWlkX2dpZF8wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VpZD0wLGdpZD0wIG11c3QgYmUgbmFtZWQgInJvb3QiJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2hvd24nKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG1vZCcpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2V4dHJhY3Rfd2l0aG91dF9udW1lcmljX293bmVyKHNlbGYsIG1vY2tfZ2V0ZXVpZCwgbW9ja19jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Nob3duKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBfLCBfKToKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QoZmlsZW5hbWVfMSwgVEVNUERJUiwgbnVtZXJpY19vd25lcj1GYWxzZSkKKworICAgICAgICAjIGNvbnZlcnQgdG8gZmlsZXN5c3RlbSBwYXRocworICAgICAgICBmX2ZpbGVuYW1lXzEgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMSkKKworICAgICAgICBtb2NrX2Nob3duLmFzc2VydF9jYWxsZWRfd2l0aChmX2ZpbGVuYW1lXzEsIDAsIDApCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuZ2V0ZXVpZCcpCisgICAgZGVmIHRlc3Rfa2V5d29yZF9vbmx5KHNlbGYsIG1vY2tfZ2V0ZXVpZCk6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgXywgXyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJmbC5leHRyYWN0LCBmaWxlbmFtZV8xLCBURU1QRElSLCBGYWxzZSwgVHJ1ZSkKKworCiBkZWYgc2V0VXBNb2R1bGUoKToKICAgICBzdXBwb3J0LnVubGluayhURU1QRElSKQogICAgIG9zLm1ha2VkaXJzKFRFTVBESVIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RjbC5weSBiL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CmluZGV4IDY2ZTlkNDkuLjViZTY0NWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGNsLnB5CkBAIC03LDkgKzcsNyBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3RraW50ZXIgbW9kdWxlIHdhc24ndCBidWlsdC4KIF90a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXRraW50ZXIgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXInKQotCitpbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCBUY2wKIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKQEAgLTEzMCw5ICsxMjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcix0Y2wudW5zZXR2YXIsJ2EnKQogCiAgICAgZGVmIGdldF9pbnRlZ2VycyhzZWxmKToKLSAgICAgICAgaW50ZWdlcnMgPSAoMCwgMSwgLTEsIDIqKjMxLTEsIC0yKiozMSkKLSAgICAgICAgaWYgdGNsX3ZlcnNpb24gPj0gKDgsIDQpOiAgIyB3aWRlSW50IHdhcyBhZGRlZCBpbiBUY2wgOC40Ci0gICAgICAgICAgICBpbnRlZ2VycyArPSAoMioqMzEsIC0yKiozMS0xLCAyKio2My0xLCAtMioqNjMpCisgICAgICAgIGludGVnZXJzID0gKDAsIDEsIC0xLCAyKiozMS0xLCAtMioqMzEsIDIqKjMxLCAtMioqMzEtMSwgMioqNjMtMSwgLTIqKjYzKQogICAgICAgICAjIGJpZ251bSB3YXMgYWRkZWQgaW4gVGNsIDguNSwgYnV0IGl0cyBzdXBwb3J0IGlzIGFibGUgb25seSBzaW5jZSA4LjUuOAogICAgICAgICBpZiAoZ2V0X3RrX3BhdGNobGV2ZWwoKSA+PSAoOCwgNiwgMCwgJ2ZpbmFsJykgb3IKICAgICAgICAgICAgICg4LCA1LCA4KSA8PSBnZXRfdGtfcGF0Y2hsZXZlbCgpIDwgKDgsIDYpKToKQEAgLTE2NSwxMCArMTYxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSgnIDQyICcpLCA0Mi4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoJyA0Mi41ICcpLCA0Mi41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoNDIuNSksIDQyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSg0MiksIDQyLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlLCAnNDIuNScsICcxMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSwgYic0Mi41JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHRjbC5nZXRkb3VibGUsICdhJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgVGNsRXJyb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2wuZ2V0ZG91YmxlLCAnNDIuNVwwJykKQEAgLTQ2NCw2ICs0NjAsOCBAQAogICAgICAgICAgICAgIyBYWFggTmFOIHJlcHJlc2VudGF0aW9uIGNhbiBiZSBub3QgcGFyc2FibGUgYnkgZmxvYXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhc3NWYWx1ZSgoMSwgJzInLCAoMy40LCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZSAnMSAyIDMuNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFzc1ZhbHVlKFsnYScsIFsnYicsICdjJ11dKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAoJ2InLCAnYycpKSBpZiBzZWxmLndhbnRvYmplY3RzIGVsc2UgJ2Ege2IgY30nKQogCiAgICAgZGVmIHRlc3RfdXNlcl9jb21tYW5kKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBOb25lCkBAIC01MTcsNiArNTE1LDcgQEAKICAgICAgICAgIyBYWFggTmFOIHJlcHJlc2VudGF0aW9uIGNhbiBiZSBub3QgcGFyc2FibGUgYnkgZmxvYXQoKQogICAgICAgICBjaGVjaygoKSwgJycpCiAgICAgICAgIGNoZWNrKCgxLCAoMiwpLCAoMywgNCksICc1IDYnLCAoKSksICcxIDIgezMgNH0gezUgNn0ge30nKQorICAgICAgICBjaGVjayhbMSwgWzIsXSwgWzMsIDRdLCAnNSA2JywgW11dLCAnMSAyIHszIDR9IHs1IDZ9IHt9JykKIAogICAgIGRlZiB0ZXN0X3NwbGl0bGlzdChzZWxmKToKICAgICAgICAgc3BsaXRsaXN0ID0gc2VsZi5pbnRlcnAudGsuc3BsaXRsaXN0CkBAIC01NDIsMTIgKzU0MSwxNSBAQAogICAgICAgICAgICAgKCdhIDMuNCcsICgnYScsICczLjQnKSksCiAgICAgICAgICAgICAoKCdhJywgMy40KSwgKCdhJywgMy40KSksCiAgICAgICAgICAgICAoKCksICgpKSwKKyAgICAgICAgICAgIChbXSwgKCkpLAorICAgICAgICAgICAgKFsnYScsIFsnYicsICdjJ11dLCAoJ2EnLCBbJ2InLCAnYyddKSksCiAgICAgICAgICAgICAoY2FsbCgnbGlzdCcsIDEsICcyJywgKDMuNCwpKSwKICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZQogICAgICAgICAgICAgICAgICgnMScsICcyJywgJzMuNCcpKSwKICAgICAgICAgXQorICAgICAgICB0a19wYXRjaGxldmVsID0gZ2V0X3RrX3BhdGNobGV2ZWwoKQogICAgICAgICBpZiB0Y2xfdmVyc2lvbiA+PSAoOCwgNSk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi53YW50b2JqZWN0cyBvciBnZXRfdGtfcGF0Y2hsZXZlbCgpIDwgKDgsIDUsIDUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYud2FudG9iamVjdHMgb3IgdGtfcGF0Y2hsZXZlbCA8ICg4LCA1LCA1KToKICAgICAgICAgICAgICAgICAjIEJlZm9yZSA4LjUuNSBkaWN0cyB3ZXJlIGNvbnZlcnRlZCB0byBsaXN0cyB0aHJvdWdoIHN0cmluZwogICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gKCcxMicsICdcdTIwYWMnLCAnXHhlMlx4ODJceGFjJywgJzMuNCcpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTU2LDggKzU1OCwxMSBAQAogICAgICAgICAgICAgICAgIChjYWxsKCdkaWN0JywgJ2NyZWF0ZScsIDEyLCAnXHUyMGFjJywgYidceGUyXHg4Mlx4YWMnLCAoMy40LCkpLAogICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCksCiAgICAgICAgICAgICBdCisgICAgICAgIGRiZ19pbmZvID0gKCd3YW50IG9iamVjdHM/ICVzLCBUY2wgdmVyc2lvbjogJXMsIFRrIHBhdGNobGV2ZWw6ICVzJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLndhbnRvYmplY3RzLCB0Y2xfdmVyc2lvbiwgdGtfcGF0Y2hsZXZlbCkpCiAgICAgICAgIGZvciBhcmcsIHJlcyBpbiB0ZXN0Y2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0bGlzdChhcmcpLCByZXMsIG1zZz1hcmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0bGlzdChhcmcpLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmc9JWEsICVzJyAlIChhcmcsIGRiZ19pbmZvKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNwbGl0bGlzdCwgJ3snKQogCiAgICAgZGVmIHRlc3Rfc3BsaXQoc2VsZik6CkBAIC01ODksNiArNTk0LDkgQEAKICAgICAgICAgICAgICgoJ2EnLCAzLjQpLCAoJ2EnLCAzLjQpKSwKICAgICAgICAgICAgICgoJ2EnLCAoMiwgMy40KSksICgnYScsICgyLCAzLjQpKSksCiAgICAgICAgICAgICAoKCksICgpKSwKKyAgICAgICAgICAgIChbXSwgKCkpLAorICAgICAgICAgICAgKFsnYScsICdiIGMnXSwgKCdhJywgKCdiJywgJ2MnKSkpLAorICAgICAgICAgICAgKFsnYScsIFsnYicsICdjJ11dLCAoJ2EnLCAoJ2InLCAnYycpKSksCiAgICAgICAgICAgICAoY2FsbCgnbGlzdCcsIDEsICcyJywgKDMuNCwpKSwKICAgICAgICAgICAgICAgICAoMSwgJzInLCAoMy40LCkpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZQogICAgICAgICAgICAgICAgICgnMScsICcyJywgJzMuNCcpKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggZWUxYzM1Ny4uNTI0YmJhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTExLDcgKzExLDcgQEAKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIAogZGVmIHNlcnZlcihldnQsIHNlcnYpOgotICAgIHNlcnYubGlzdGVuKDUpCisgICAgc2Vydi5saXN0ZW4oKQogICAgIGV2dC5zZXQoKQogICAgIHRyeToKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKQEAgLTM5Myw5ICszOTMsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGInJy5qb2luKHdhbnRbOi0xXSkpCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEdlbmVyYWxUZXN0cywgUmVhZFRlc3RzLCBXcml0ZVRlc3RzLCBPcHRpb25UZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3RUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKaW5kZXggNjY0MTI5OC4uNGEwNzdjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CkBAIC0xMiw3ICsxMiw4IEBACiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAogaWYgaGFzYXR0cihvcywgJ3N0YXQnKToKQEAgLTM1LDEwICszNiwzOCBAQAogIyBpbiBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlIGluIHRoZSBmaWxlLiAgVGVzdGluZyB3aGljaCByZXF1aXJlcwogIyB0aHJlYWRzIGlzIG5vdCBkb25lIGhlcmUuCiAKK2NsYXNzIFRlc3RMb3dMZXZlbEludGVybmFscyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW5mZXJfcmV0dXJuX3R5cGVfc2luZ2xlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnl0ZXMsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShiJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKE5vbmUpKQorCisgICAgZGVmIHRlc3RfaW5mZXJfcmV0dXJuX3R5cGVfbXVsdGlwbGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnLCAnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnl0ZXMsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShiJycsIGInJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJywgYicnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnLCAnJykKKworICAgIGRlZiB0ZXN0X2luZmVyX3JldHVybl90eXBlX211bHRpcGxlc19hbmRfbm9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lLCAnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhieXRlcywgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKE5vbmUsIGInJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJywgTm9uZSwgYicnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnLCBOb25lLCAnJykKKworCiAjIENvbW1vbiBmdW5jdGlvbmFsaXR5LgorCiBjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgc3RyX2NoZWNrID0gcmUuY29tcGlsZShyIl5bYS16MC05Xy1dezh9JCIpCisgICAgYl9jaGVjayA9IHJlLmNvbXBpbGUoYnIiXlthLXowLTlfLV17OH0kIikKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5fd2FybmluZ3NfbWFuYWdlciA9IHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKQpAQCAtNTUsMTggKzg0LDMxIEBACiAgICAgICAgIG5wcmUgID0gbmJhc2VbOmxlbihwcmUpXQogICAgICAgICBuc3VmICA9IG5iYXNlW2xlbihuYmFzZSktbGVuKHN1Zik6XQogCisgICAgICAgIGlmIGRpciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuYW1lKSwgc3RyIGlmIHR5cGUoZGlyKSBpcyBzdHIgZWxzZSBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcmV0dXJuIHR5cGUiKQorICAgICAgICBpZiBwcmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmFtZSksIHN0ciBpZiB0eXBlKHByZSkgaXMgc3RyIGVsc2UgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJldHVybiB0eXBlIikKKyAgICAgICAgaWYgc3VmIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIgaWYgdHlwZShzdWYpIGlzIHN0ciBlbHNlIGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCByZXR1cm4gdHlwZSIpCisgICAgICAgIGlmIChkaXIsIHByZSwgc3VmKSA9PSAoTm9uZSwgTm9uZSwgTm9uZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmFtZSksIHN0ciwgImRlZmF1bHQgcmV0dXJuIHR5cGUgbXVzdCBiZSBzdHIiKQorCiAgICAgICAgICMgY2hlY2sgZm9yIGVxdWFsaXR5IG9mIHRoZSBhYnNvbHV0ZSBwYXRocyEKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgobmRpciksIG9zLnBhdGguYWJzcGF0aChkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICclcycgbm90IGluIGRpcmVjdG9yeSAnJXMnIiAlIChuYW1lLCBkaXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICVyIG5vdCBpbiBkaXJlY3RvcnkgJXIiICUgKG5hbWUsIGRpcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnByZSwgcHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICclcycgZG9lcyBub3QgYmVnaW4gd2l0aCAnJXMnIiAlIChuYmFzZSwgcHJlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAlciBkb2VzIG5vdCBiZWdpbiB3aXRoICVyIiAlIChuYmFzZSwgcHJlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc3VmLCBzdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJyVzJyBkb2VzIG5vdCBlbmQgd2l0aCAnJXMnIiAlIChuYmFzZSwgc3VmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAlciBkb2VzIG5vdCBlbmQgd2l0aCAlciIgJSAobmJhc2UsIHN1ZikpCiAKICAgICAgICAgbmJhc2UgPSBuYmFzZVtsZW4ocHJlKTpsZW4obmJhc2UpLWxlbihzdWYpXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5zdHJfY2hlY2subWF0Y2gobmJhc2UpLAotICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSBzdHJpbmcgJyVzJyBkb2VzIG5vdCBtYXRjaCBeW2EtejAtOV8tXXs4fSQiCi0gICAgICAgICAgICAgICAgICAgICAlIG5iYXNlKQorICAgICAgICBjaGVjayA9IHNlbGYuc3RyX2NoZWNrIGlmIGlzaW5zdGFuY2UobmJhc2UsIHN0cikgZWxzZSBzZWxmLmJfY2hlY2sKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNoZWNrLm1hdGNoKG5iYXNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyYW5kb20gY2hhcmFjdGVycyAlciBkbyBub3QgbWF0Y2ggJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChuYmFzZSwgY2hlY2sucGF0dGVybikpCiAKIAogY2xhc3MgVGVzdEV4cG9ydHMoQmFzZVRlc3RDYXNlKToKQEAgLTgyLDcgKzEyNCw5IEBACiAgICAgICAgICAgICAibWt0ZW1wIiA6IDEsCiAgICAgICAgICAgICAiVE1QX01BWCIgOiAxLAogICAgICAgICAgICAgImdldHRlbXBwcmVmaXgiIDogMSwKKyAgICAgICAgICAgICJnZXR0ZW1wcHJlZml4YiIgOiAxLAogICAgICAgICAgICAgImdldHRlbXBkaXIiIDogMSwKKyAgICAgICAgICAgICJnZXR0ZW1wZGlyYiIgOiAxLAogICAgICAgICAgICAgInRlbXBkaXIiIDogMSwKICAgICAgICAgICAgICJ0ZW1wbGF0ZSIgOiAxLAogICAgICAgICAgICAgIlNwb29sZWRUZW1wb3JhcnlGaWxlIiA6IDEsCkBAIC0zMTksNyArMzYzLDggQEAKICAgICAgICAgICAgIGlmIGJpbjogZmxhZ3MgPSBzZWxmLl9iZmxhZ3MKICAgICAgICAgICAgIGVsc2U6ICAgZmxhZ3MgPSBzZWxmLl90ZmxhZ3MKIAotICAgICAgICAgICAgKHNlbGYuZmQsIHNlbGYubmFtZSkgPSB0ZW1wZmlsZS5fbWtzdGVtcF9pbm5lcihkaXIsIHByZSwgc3VmLCBmbGFncykKKyAgICAgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCisgICAgICAgICAgICAoc2VsZi5mZCwgc2VsZi5uYW1lKSA9IHRlbXBmaWxlLl9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzLCBvdXRwdXRfdHlwZSkKIAogICAgICAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKICAgICAgICAgICAgIG9zLndyaXRlKHNlbGYuZmQsIHN0cikKQEAgLTMyOCw5ICszNzMsMTcgQEAKICAgICAgICAgICAgIHNlbGYuX2Nsb3NlKHNlbGYuZmQpCiAgICAgICAgICAgICBzZWxmLl91bmxpbmsoc2VsZi5uYW1lKQogCi0gICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGJpbj0xKToKKyAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9Tm9uZSwgc3VmPU5vbmUsIGJpbj0xKToKKyAgICAgICAgb3V0cHV0X3R5cGUgPSB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoZGlyLCBwcmUsIHN1ZikKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBpZiBwcmUgaXMgTm9uZToKKyAgICAgICAgICAgIHByZSA9IG91dHB1dF90eXBlKCkKKyAgICAgICAgaWYgc3VmIGlzIE5vbmU6CisgICAgICAgICAgICBzdWYgPSBvdXRwdXRfdHlwZSgpCiAgICAgICAgIGZpbGUgPSBzZWxmLm1rc3RlbXBlZChkaXIsIHByZSwgc3VmLCBiaW4pCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtMzQ0LDYgKzM5NywyMyBAQAogICAgICAgICBzZWxmLmRvX2NyZWF0ZShwcmU9ImEiLCBzdWY9ImIiKS53cml0ZShiImJsYXQiKQogICAgICAgICBzZWxmLmRvX2NyZWF0ZShwcmU9ImFhIiwgc3VmPSIudHh0Iikud3JpdGUoYiJibGF0IikKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX3dpdGhfYnl0ZXNfbmFtZXMoc2VsZik6CisgICAgICAgICMgX21rc3RlbXBfaW5uZXIgY2FuIGNyZWF0ZSBmaWxlcyB3aGVuIGdpdmVuIG5hbWUgcGFydHMgYWxsCisgICAgICAgICMgc3BlY2lmaWVkIGFzIGJ5dGVzLgorICAgICAgICBkaXJfYiA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBzdWY9YiIiKS53cml0ZShiImJsYXQiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT1iImEiKS53cml0ZShiImJsYXQiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHN1Zj1iImIiKS53cml0ZShiImJsYXQiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT1iImEiLCBzdWY9YiJiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKS53cml0ZShiImJsYXQiKQorICAgICAgICAjIENhbid0IG1peCBzdHIgJiBiaW5hcnkgdHlwZXMgaW4gdGhlIGFyZ3MuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj0iIiwgc3VmPWIiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9IiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPWIiIiwgc3VmPSIiKS53cml0ZShiImJsYXQiKQorCiAgICAgZGVmIHRlc3RfYmFzaWNfbWFueShzZWxmKToKICAgICAgICAgIyBfbWtzdGVtcF9pbm5lciBjYW4gY3JlYXRlIG1hbnkgZmlsZXMgKHN0b2NoYXN0aWMpCiAgICAgICAgIGV4dGFudCA9IGxpc3QocmFuZ2UoVEVTVF9GSUxFUykpCkBAIC00MjMsOSArNDkzLDEwIEBACiAKICAgICBkZWYgbWFrZV90ZW1wKHNlbGYpOgogICAgICAgICByZXR1cm4gdGVtcGZpbGUuX21rc3RlbXBfaW5uZXIodGVtcGZpbGUuZ2V0dGVtcGRpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUudGVtcGxhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5nZXR0ZW1wcHJlZml4KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLl9iaW5fb3BlbmZsYWdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuX2Jpbl9vcGVuZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpCiAKICAgICBkZWYgdGVzdF9jb2xsaXNpb25fd2l0aF9leGlzdGluZ19maWxlKHNlbGYpOgogICAgICAgICAjIF9ta3N0ZW1wX2lubmVyIHRyaWVzIGFub3RoZXIgbmFtZSB3aGVuIGEgZmlsZSB3aXRoCkBAIC00NjEsNyArNTMyLDEyIEBACiAgICAgICAgIHAgPSB0ZW1wZmlsZS5nZXR0ZW1wcHJlZml4KCkKIAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgc3RyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHApID4gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwKSwgMCkKKworICAgICAgICBwYiA9IHRlbXBmaWxlLmdldHRlbXBwcmVmaXhiKCkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocGIsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHBiKSwgMCkKIAogICAgIGRlZiB0ZXN0X3VzYWJsZV90ZW1wbGF0ZShzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wcHJlZml4IHJldHVybnMgYSB1c2FibGUgcHJlZml4IHN0cmluZwpAQCAtNDg2LDExICs1NjIsMTEgQEAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXhpc3RzKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBkaXIgcmV0dXJucyBhIGRpcmVjdG9yeSB3aGljaCBleGlzdHMKIAotICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoZGlyKSBvciBkaXIgPT0gb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIiAlIGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3QgYSBkaXJlY3RvcnkiICUgZGlyKQorICAgICAgICBmb3IgZCBpbiAodGVtcGZpbGUuZ2V0dGVtcGRpcigpLCB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKGQpIG9yIGQgPT0gb3MuY3VyZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlciBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgJSBkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyIGlzIG5vdCBhIGRpcmVjdG9yeSIgJSBkKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X3dyaXRhYmxlKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBkaXIgcmV0dXJucyBhIGRpcmVjdG9yeSB3cml0YWJsZSBieSB0aGUgdXNlcgpAQCAtNTA2LDggKzU4MiwxMSBAQAogICAgICAgICAjIGdldHRlbXBkaXIgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0CiAgICAgICAgIGEgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKICAgICAgICAgYiA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICBjID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodHlwZShhKSwgdHlwZShjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBvcy5mc2RlY29kZShjKSkKIAogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBkaXIgc2hvdWxkIG5vdCBmbGF0dGVuIGl0cyBjYXNlCkBAIC01MjcsOSArNjA2LDE3IEBACiBjbGFzcyBUZXN0TWtzdGVtcChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgbWtzdGVtcCgpLiIiIgogCi0gICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgorICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT1Ob25lLCBzdWY9Tm9uZSk6CisgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCiAgICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgaWYgcHJlIGlzIE5vbmU6CisgICAgICAgICAgICBwcmUgPSBvdXRwdXRfdHlwZSgpCisgICAgICAgIGlmIHN1ZiBpcyBOb25lOgorICAgICAgICAgICAgc3VmID0gb3V0cHV0X3R5cGUoKQogICAgICAgICAoZmQsIG5hbWUpID0gdGVtcGZpbGUubWtzdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogICAgICAgICAobmRpciwgbmJhc2UpID0gb3MucGF0aC5zcGxpdChuYW1lKQogICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKQEAgLTU1MSw2ICs2MzgsMjQgQEAKICAgICAgICAgc2VsZi5kb19jcmVhdGUocHJlPSJhYSIsIHN1Zj0iLnR4dCIpCiAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj0iLiIpCiAKKyAgICBkZWYgdGVzdF9iYXNpY193aXRoX2J5dGVzX25hbWVzKHNlbGYpOgorICAgICAgICAjIG1rc3RlbXAgY2FuIGNyZWF0ZSBmaWxlcyB3aGVuIGdpdmVuIG5hbWUgcGFydHMgYWxsCisgICAgICAgICMgc3BlY2lmaWVkIGFzIGJ5dGVzLgorICAgICAgICBkID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgc3VmPWIiIikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImEiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgc3VmPWIiYiIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIiwgc3VmPWIiYiIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9YiIuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPSIuIiwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWIiLiIsIHByZT0iYWEiLCBzdWY9YiIudHh0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWIiLiIsIHByZT1iImFhIiwgc3VmPSIudHh0IikKKworCiAgICAgZGVmIHRlc3RfY2hvb3NlX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgIyBta3N0ZW1wIGNhbiBjcmVhdGUgZGlyZWN0b3JpZXMgaW4gYSB1c2VyLXNlbGVjdGVkIGRpcmVjdG9yeQogICAgICAgICBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKQEAgLTU2Niw5ICs2NzEsMTcgQEAKICAgICBkZWYgbWFrZV90ZW1wKHNlbGYpOgogICAgICAgICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcCgpCiAKLSAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CisgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPU5vbmUsIHN1Zj1Ob25lKToKKyAgICAgICAgb3V0cHV0X3R5cGUgPSB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoZGlyLCBwcmUsIHN1ZikKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBpZiBwcmUgaXMgTm9uZToKKyAgICAgICAgICAgIHByZSA9IG91dHB1dF90eXBlKCkKKyAgICAgICAgaWYgc3VmIGlzIE5vbmU6CisgICAgICAgICAgICBzdWYgPSBvdXRwdXRfdHlwZSgpCiAgICAgICAgIG5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCiAKICAgICAgICAgdHJ5OgpAQCAtNTg2LDYgKzY5OSwyMSBAQAogICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShwcmU9ImEiLCBzdWY9ImIiKSkKICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUocHJlPSJhYSIsIHN1Zj0iLnR4dCIpKQogCisgICAgZGVmIHRlc3RfYmFzaWNfd2l0aF9ieXRlc19uYW1lcyhzZWxmKToKKyAgICAgICAgIyBta2R0ZW1wIGNhbiBjcmVhdGUgZGlyZWN0b3JpZXMgd2hlbiBnaXZlbiBhbGwgYmluYXJ5IHBhcnRzCisgICAgICAgIGQgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kKSkKKyAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImEiKSkKKyAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHN1Zj1iImIiKSkKKyAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImEiLCBzdWY9YiJiIikpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT0iYWEiLCBzdWY9YiIudHh0IikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhYSIsIHN1Zj0iLnR4dCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9IiIsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpKQorCiAgICAgZGVmIHRlc3RfYmFzaWNfbWFueShzZWxmKToKICAgICAgICAgIyBta2R0ZW1wIGNhbiBjcmVhdGUgbWFueSBkaXJlY3RvcmllcyAoc3RvY2hhc3RpYykKICAgICAgICAgZXh0YW50ID0gbGlzdChyYW5nZShURVNUX0ZJTEVTKSkKQEAgLTEzMTMsOCArMTQ0MSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZSkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5IGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQppbmRleCAxYmJhNzdlLi43MDdhYWFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKQEAgLTE4NCw2ICsxODQsMTYgQEAKICAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDQyLAogICAgICAgICAgICAgICAgICAgICAgICAgWyJ0aGlzLWlzLWEtdXNlZnVsLWZlYXR1cmUtZm9yLXJlZm9ybWF0dGluZy0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwb3N0cy1mcm9tLXRpbS1wZXRlcnMnbHkiXSkKKyAgICAgICAgIyBUaGUgdGVzdCB0ZXN0cyBjdXJyZW50IGJlaGF2aW9yIGJ1dCBpcyBub3QgdGVzdGluZyBwYXJ0cyBvZiB0aGUgQVBJLgorICAgICAgICBleHBlY3QgPSAoInRoaXMtfGlzLXxhLXx1c2VmdWwtfGZlYXR1cmUtfGZvci18IgorICAgICAgICAgICAgICAgICAgInJlZm9ybWF0dGluZy18cG9zdHMtfGZyb20tfHRpbS18cGV0ZXJzJ2x5Iikuc3BsaXQoJ3wnKQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMSwgZXhwZWN0LCBicmVha19sb25nX3dvcmRzPUZhbHNlKQorICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KHRleHQsIGV4cGVjdCkKKworICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCdlLW1haWwnLCBbJ2UtbWFpbCddKQorICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCdKZWxseS1PJywgWydKZWxseS1PJ10pCisgICAgICAgICMgVGhlIHRlc3QgdGVzdHMgY3VycmVudCBiZWhhdmlvciBidXQgaXMgbm90IHRlc3RpbmcgcGFydHMgb2YgdGhlIEFQSS4KKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgnaGFsZi1hLWNyb3duJywgJ2hhbGYtfGEtfGNyb3duJy5zcGxpdCgnfCcpKQogCiAgICAgZGVmIHRlc3RfaHlwaGVuYXRlZF9udW1iZXJzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBoeXBoZW5hdGVkIG51bWJlcnMgKGVnLiBkYXRlcykgYXJlIG5vdCBicm9rZW4gbGlrZSB3b3Jkcy4KQEAgLTE5NSw2ICsyMDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsZWFzZWQgb24gMTk5NC0wMi0xNS4nXSkKICAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDQwLCBbJ1B5dGhvbiAxLjAuMCB3YXMgcmVsZWFzZWQgb24gMTk5NC0wMS0yNi4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIDEuMC4xIHdhcyByZWxlYXNlZCBvbiAxOTk0LTAyLTE1LiddKQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMSwgdGV4dC5zcGxpdCgpLCBicmVha19sb25nX3dvcmRzPUZhbHNlKQogCiAgICAgICAgIHRleHQgPSAiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQgNy0xMS4iCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAyNSwgWyJJIGRvIGFsbCBteSBzaG9wcGluZyBhdCIsCkBAIC0yMDIsNiArMjEzLDcgQEAKICAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDI3LCBbIkkgZG8gYWxsIG15IHNob3BwaW5nIGF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjctMTEuIl0pCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAyOSwgWyJJIGRvIGFsbCBteSBzaG9wcGluZyBhdCA3LTExLiJdKQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMSwgdGV4dC5zcGxpdCgpLCBicmVha19sb25nX3dvcmRzPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfZW1fZGFzaChzZWxmKToKICAgICAgICAgIyBUZXN0IHRleHQgd2l0aCBlbS1kYXNoZXMKQEAgLTMyNiw2ICszMzgsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19zcGxpdCgidGhlIFsnd2liYmxlLXdvYmJsZSddIHdpZGdldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0aGUnLCAnICcsICJbJ3dpYmJsZS0iLCAid29iYmxlJ10iLCAnICcsICd3aWRnZXQnXSkKIAorICAgICAgICAjIFRoZSB0ZXN0IHRlc3RzIGN1cnJlbnQgYmVoYXZpb3IgYnV0IGlzIG5vdCB0ZXN0aW5nIHBhcnRzIG9mIHRoZSBBUEkuCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoIndoYXQtZCd5b3UtY2FsbC1pdC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGF0LWQneW91LXxjYWxsLXxpdC4iLnNwbGl0KCd8JykpCisKICAgICBkZWYgdGVzdF9mdW5reV9wYXJlbnMgKHNlbGYpOgogICAgICAgICAjIFNlY29uZCBwYXJ0IG9mIFNGIGJ1ZyAjNTk2NDM0OiBsb25nIG9wdGlvbiBzdHJpbmdzIGluc2lkZQogICAgICAgICAjIHBhcmVudGhlc2VzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZC5weQppbmRleCA2MTQ0OTAxLi5lZjMwNTliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZC5weQpAQCAtMjUyLDkgKzI1Miw1IEBACiAgICAgICAgICAgICBwYXNzCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRocmVhZFJ1bm5pbmdUZXN0cywgQmFycmllclRlc3QsIExvY2tUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0Rm9ya0luVGhyZWFkKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CmluZGV4IDRiZTYxNWEuLjliMmQ5YTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CkBAIC0xMTUsMTIgKzExNSwxOCBAQAogICAgICAgICAgICAgZXJyb3JzID0gW10KICAgICAgICAgICAgIGRvbmVfdGFza3MgPSBbXQogICAgICAgICAgICAgZG9uZS5jbGVhcigpCisgICAgICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgIHdpdGggc3RhcnRfdGhyZWFkcyh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oTiwgZG9uZSwgZG9uZV90YXNrcywgZXJyb3JzLCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTikpOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkb25lLndhaXQoNjApKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnJvcnMpCisgICAgICAgICAgICBjb21wbGV0ZWQgPSBkb25lLndhaXQoMTAgKiA2MCkKKyAgICAgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCIlLjFmIG1zIiAlIChkdCoxZTMpLCBmbHVzaD1UcnVlLCBlbmQ9IiAiKQorICAgICAgICAgICAgZGJnX2luZm8gPSAnZG9uZTogJXMvJXMnICUgKGxlbihkb25lX3Rhc2tzKSwgTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzLCBkYmdfaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21wbGV0ZWQsIGRiZ19pbmZvKQogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgiT0suIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQppbmRleCA0Yjc1ZWE2Li5kZGFmYmEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQpAQCAtNCw3ICs0LDcgQEAKIAogaW1wb3J0IHRlc3Quc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHN0cmlwX3B5dGhvbl9zdGRlcnIsIGltcG9ydF9tb2R1bGUsIGNweXRob25fb25seQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CmluZGV4IGJlN2RkY2MuLjA4OTE4MzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKQEAgLTEsMjEgKzEsMzcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IGVudW0KK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHN5cwotaW1wb3J0IHBsYXRmb3JtCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX3Rlc3RjYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3Rlc3RjYXBpID0gTm9uZQorCiAKICMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgogU0laRU9GX0lOVCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKIFRJTUVfTUFYWUVBUiA9ICgxIDw8IDggKiBTSVpFT0ZfSU5UIC0gMSkgLSAxCiBUSU1FX01JTllFQVIgPSAtVElNRV9NQVhZRUFSIC0gMQotX1B5VGltZV9ST1VORF9ET1dOID0gMAotX1B5VGltZV9ST1VORF9VUCA9IDEKKworVVNfVE9fTlMgPSAxMCAqKiAzCitNU19UT19OUyA9IDEwICoqIDYKK1NFQ19UT19OUyA9IDEwICoqIDkKKworY2xhc3MgX1B5VGltZShlbnVtLkludEVudW0pOgorICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICBST1VORF9GTE9PUiA9IDAKKyAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCisgICAgUk9VTkRfQ0VJTElORyA9IDEKKworQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQogCiAKIGNsYXNzIFRpbWVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OTUsMTEyICs2MTEsNjUgQEAKICAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAogICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgemVybwotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAjIFJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMSwgLTEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS45LCAtMiwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoMS4wLCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQorICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjksIDIsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCiAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiwgcm5kKSwgdGltZV90KQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKLSAgICAgICAgZm9yIG9iaiwgdGltZXZhbCwgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyB6ZXJvCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtNiwgKDAsIDEpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDFlLTcsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtNiwgKC0xLCA5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS03LCAoLTEsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDAuOTk5OTk5OSwgKDAsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTYwLCAoMSwgMTIzNDU2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTYpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMC4wMDAwMDQxLCAoLTEsIDk5OTk5NSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICMgUm91bmQgYXdheSBmcm9tIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxZS02LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTcsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTcsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTksICgxLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2OSwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTAuMDAwMDA0MSwgKC0xLCA5OTk5OTUpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTYwLCAoLTIsIDg3NjU0NCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWV2YWw9dGltZXZhbCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwob2JqLCBybmQpLCB0aW1ldmFsKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgotICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgaW52YWxpZCwgcm5kKQotCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCiAgICAgICAgIGZvciBvYmosIHRpbWVzcGVjLCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgwLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgIyBSb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTksICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTEwLCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKICAgICAgICAgKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCwgcm5kKQpAQCAtNzU5LDUgKzcyOCwyNjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKF90ZXN0Y2FwaSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIFRlc3RQeVRpbWVfdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfRnJvbVNlY29uZHMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfRnJvbVNlY29uZHMKKyAgICAgICAgZm9yIHNlY29uZHMgaW4gKDAsIDMsIC00NTYsIF90ZXN0Y2FwaS5JTlRfTUFYLCBfdGVzdGNhcGkuSU5UX01JTik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzKHNlY29uZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyAqIFNFQ19UT19OUykKKworICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CisKKyAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCisgICAgICAgICAgICAgICAgIyBpbnRlZ2VycworICAgICAgICAgICAgICAgICgwLCAwKSwKKyAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKKyAgICAgICAgICAgICAgICAoMC4wLCAwKSwKKyAgICAgICAgICAgICAgICAoMWUtOSwgMSksCisgICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAorICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCisgICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKKworICAgICAgICAgICAgICAgICMgc3RhcnQgbG9vc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjIzICsgMWUtOSwgIDgzODg2MDgwMDAwMDAwMDIpLAorCisgICAgICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMioqMjQgLSAxZS05LCAxNjc3NzIxNTk5OTk5OTk5OCksCisgICAgICAgICAgICAgICAgKDIqKjI0LCAgICAgICAgMTY3NzcyMTYwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNCArIDFlLTksIDE2Nzc3MjE2MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjUgLSAxZS05LCAzMzU1NDQzMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjI1ICAgICAgICwgMzM1NTQ0MzIwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNSArIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKKworICAgICAgICAgICAgICAgICMgY2xvc2UgdG8gMl42MyBuYW5vc2Vjb25kcyAoX1B5VGltZV90IGxpbWl0KQorICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoOTIyMzM3MjAzNi4wLCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYsIC05MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYuMCwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcsIHJuZCkKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcuMCwgcm5kKQorICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcsIHJuZCkKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KC05MjIzMzcyMDM3LjAsIHJuZCkKKworICAgICAgICAjIENvbnZlcnNpb24gZ2l2aW5nIGRpZmZlcmVudCByZXN1bHRzIGRlcGVuZGluZyBvbiB0aGUgcm91bmRpbmcgbWV0aG9kCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBvYmosIHRzLCBybmQgaW4gKAorICAgICAgICAgICAgIyBjbG9zZSB0byB6ZXJvCisgICAgICAgICAgICAoIDFlLTEwLCAgMCwgRkxPT1IpLAorICAgICAgICAgICAgKCAxZS0xMCwgIDEsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xZS0xMCwgLTEsIEZMT09SKSwKKyAgICAgICAgICAgICgtMWUtMTAsICAwLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyB0ZXN0IHJvdW5kaW5nIG9mIHRoZSBsYXN0IG5hbm9zZWNvbmQKKyAgICAgICAgICAgICggMS4xMjM0NTY3ODk5LCAgMTEyMzQ1Njc4OSwgRkxPT1IpLAorICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2NzkwLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODk5LCAtMTEyMzQ1Njc5MCwgRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2Nzg5LCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBjbG9zZSB0byAxIHNlY29uZAorICAgICAgICAgICAgKCAwLjk5OTk5OTk5OTksICAgOTk5OTk5OTk5LCBGTE9PUiksCisgICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgIDEwMDAwMDAwMDAsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0wLjk5OTk5OTk5OTksIC0xMDAwMDAwMDAwLCBGTE9PUiksCisgICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgIC05OTk5OTk5OTksIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3RhbXA9dHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCisKKyAgICBkZWYgdGVzdF9Bc1NlY29uZHNEb3VibGUoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNTZWNvbmRzRG91YmxlCisKKyAgICAgICAgZm9yIG5hbm9zZWNvbmRzLCBzZWNvbmRzIGluICgKKyAgICAgICAgICAgICMgbmVhciAxIG5hbm9zZWNvbmQKKyAgICAgICAgICAgICggMCwgIDAuMCksCisgICAgICAgICAgICAoIDEsICAxZS05KSwKKyAgICAgICAgICAgICgtMSwgLTFlLTkpLAorCisgICAgICAgICAgICAjIG5lYXIgMSBzZWNvbmQKKyAgICAgICAgICAgIChTRUNfVE9fTlMgKyAxLCAxLjAgKyAxZS05KSwKKyAgICAgICAgICAgIChTRUNfVE9fTlMsICAgICAxLjApLAorICAgICAgICAgICAgKFNFQ19UT19OUyAtIDEsIDEuMCAtIDFlLTkpLAorCisgICAgICAgICAgICAjIGEgZmV3IHNlY29uZHMKKyAgICAgICAgICAgICgxMjMgKiBTRUNfVE9fTlMsIDEyMy4wKSwKKyAgICAgICAgICAgICgtNTY3ICogU0VDX1RPX05TLCAtNTY3LjApLAorCisgICAgICAgICAgICAjIG5hbm9zZWNvbmQgYXJlIGtlcHQgZm9yIHZhbHVlIDw9IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgKDQxOTQzMDM5OTk5OTk5OTksIDIqKjIyIC0gMWUtOSksCisgICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMCwgMioqMjIpLAorICAgICAgICAgICAgKDQxOTQzMDQwMDAwMDAwMDEsIDIqKjIyICsgMWUtOSksCisKKyAgICAgICAgICAgICMgc3RhcnQgbG9vc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAoODM4ODYwODAwMDAwMDAwMiwgMioqMjMgKyAxZS05KSwKKworICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OCwgMioqMjQgLSAxZS05KSwKKyAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OSwgMioqMjQgLSAxZS05KSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMCwgMioqMjQgICAgICAgKSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMSwgMioqMjQgICAgICAgKSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMiwgMioqMjQgKyAyZS05KSwKKworICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAwLCAyKioyNSAgICAgICApLAorICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAyLCAyKioyNSAgICAgICApLAorICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDA0LCAyKioyNSArIDRlLTkpLAorCisgICAgICAgICAgICAjIGNsb3NlIHRvIDJeNjMgbmFub3NlY29uZHMgKF9QeVRpbWVfdCBsaW1pdCkKKyAgICAgICAgICAgICg5MjIzMzcyMDM2ICogU0VDX1RPX05TLCA5MjIzMzcyMDM2LjApLAorICAgICAgICAgICAgKC05MjIzMzcyMDM2ICogU0VDX1RPX05TLCAtOTIyMzM3MjAzNi4wKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5hbm9zZWNvbmRzLCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShuYW5vc2Vjb25kcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzKQorCisgICAgZGVmIHRlc3RfdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1RpbWV2YWwKKyAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKKyAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAorICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAgICAgKDEwMDAsICgwLCAxKSksCisgICAgICAgICAgICAgICAgKC0xMDAwLCAoLTEsIDk5OTk5OSkpLAorCisgICAgICAgICAgICAgICAgIyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKKyAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKKyAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY3KSwgRkxPT1IpLAorICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjgpLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzIpLCBGTE9PUiksCisgICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMzKSwgQ0VJTElORyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihfdGVzdGNhcGksICdQeVRpbWVfQXNUaW1lc3BlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIF90ZXN0Y2FwaS5QeVRpbWVfQXNUaW1lc3BlYycpCisgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1lc3BlYworICAgICAgICBmb3IgbnMsIHRzIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKDEsICgwLCAxKSksCisgICAgICAgICAgICAoLTEsICgtMSwgOTk5OTk5OTk5KSksCisKKyAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCisgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQ1Njc4OTAsICgxLCAyMzQ1Njc4OTApKSwKKyAgICAgICAgICAgICgtMTIzNDU2Nzg5MCwgKC0yLCA3NjU0MzIxMTApKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1lc3BlYz10cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1lc3BlYyhucyksIHRzKQorCisgICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAorICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCisKKyAgICAgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIDAsIEZMT09SKSwKKyAgICAgICAgICAgICgtMSwgLTEsIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIEZMT09SKSwKKyAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCisKKyAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKKyAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKKyAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAorICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCisgICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKKworICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCisgICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKworICAgICAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKKworICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKKyAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORworICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAorICAgICAgICAgICAgIyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKKyAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMSwgMCwgRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAtMSwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAorICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgRkxPT1IpLAorICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgQ0VJTElORyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQppbmRleCA5MThhMjk0Li41ZTlkNDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCB0aW1lCiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgogCkBAIC05OCw5ICs5NywxMCBAQAogICAgIGRlZiBmYWtlX2NhbGxhYmxlX3N0bXQoc2VsZik6CiAgICAgICAgIHNlbGYuZmFrZV90aW1lci5pbmMoKQogCi0gICAgZGVmIHRpbWVpdChzZWxmLCBzdG10LCBzZXR1cCwgbnVtYmVyPU5vbmUpOgorICAgIGRlZiB0aW1laXQoc2VsZiwgc3RtdCwgc2V0dXAsIG51bWJlcj1Ob25lLCBnbG9iYWxzPU5vbmUpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIgPSBGYWtlVGltZXIoKQotICAgICAgICB0ID0gdGltZWl0LlRpbWVyKHN0bXQ9c3RtdCwgc2V0dXA9c2V0dXAsIHRpbWVyPXNlbGYuZmFrZV90aW1lcikKKyAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIsCisgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKQogICAgICAgICBrd2FyZ3MgPSB7fQogICAgICAgICBpZiBudW1iZXIgaXMgTm9uZToKICAgICAgICAgICAgIG51bWJlciA9IERFRkFVTFRfTlVNQkVSCkBAIC0xNDIsNiArMTQyLDE3IEBACiAgICAgICAgICAgICAgICAgdGltZXI9RmFrZVRpbWVyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsdGFfdGltZSwgMCkKIAorICAgIGRlZiB0ZXN0X3RpbWVpdF9nbG9iYWxzX2FyZ3Moc2VsZik6CisgICAgICAgIGdsb2JhbCBfZ2xvYmFsX3RpbWVyCisgICAgICAgIF9nbG9iYWxfdGltZXIgPSBGYWtlVGltZXIoKQorICAgICAgICB0ID0gdGltZWl0LlRpbWVyKHN0bXQ9J19nbG9iYWxfdGltZXIuaW5jKCknLCB0aW1lcj1fZ2xvYmFsX3RpbWVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIHQudGltZWl0LCBudW1iZXI9MykKKyAgICAgICAgdGltZWl0LnRpbWVpdChzdG10PSdfZ2xvYmFsX3RpbWVyLmluYygpJywgdGltZXI9X2dsb2JhbF90aW1lciwKKyAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbnVtYmVyPTMpCisgICAgICAgIGxvY2FsX3RpbWVyID0gRmFrZVRpbWVyKCkKKyAgICAgICAgdGltZWl0LnRpbWVpdChzdG10PSdsb2NhbF90aW1lci5pbmMoKScsIHRpbWVyPWxvY2FsX3RpbWVyLAorICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9bG9jYWxzKCksIG51bWJlcj0zKQorCiAgICAgZGVmIHJlcGVhdChzZWxmLCBzdG10LCBzZXR1cCwgcmVwZWF0PU5vbmUsIG51bWJlcj1Ob25lKToKICAgICAgICAgc2VsZi5mYWtlX3RpbWVyID0gRmFrZVRpbWVyKCkKICAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIpCkBAIC0zMDcsNiArMzE4LDI2IEBACiAgICAgICAgICAgICAgICAgMTAwMDAgbG9vcHMsIGJlc3Qgb2YgMzogNTAgdXNlYyBwZXIgbG9vcAogICAgICAgICAgICAgIiIiKSkKIAorICAgIGRlZiB0ZXN0X21haW5fd2l0aF90aW1lX3VuaXQoc2VsZik6CisgICAgICAgIHVuaXRfc2VjID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICdzZWMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bml0X3NlYywKKyAgICAgICAgICAgICAgICAiMTAwMCBsb29wcywgYmVzdCBvZiAzOiAwLjAwMiBzZWMgcGVyIGxvb3BcbiIpCisgICAgICAgIHVuaXRfbXNlYyA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTAuMDAyLAorICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLXUnLCAnbXNlYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaXRfbXNlYywKKyAgICAgICAgICAgICAgICAiMTAwMCBsb29wcywgYmVzdCBvZiAzOiAyIG1zZWMgcGVyIGxvb3BcbiIpCisgICAgICAgIHVuaXRfdXNlYyA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTAuMDAyLAorICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLXUnLCAndXNlYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaXRfdXNlYywKKyAgICAgICAgICAgICAgICAiMTAwMCBsb29wcywgYmVzdCBvZiAzOiAyZSswMyB1c2VjIHBlciBsb29wXG4iKQorICAgICAgICAjIFRlc3QgaW52YWxpZCB1bml0IGlucHV0CisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyb3Jfc3RyaW5naW86CisgICAgICAgICAgICBpbnZhbGlkID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLXUnLCAncGFyc2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3Jfc3RyaW5naW8uZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCB1bml0LiBQbGVhc2Ugc2VsZWN0IHVzZWMsIG1zZWMsIG9yIHNlYy5cbiIpCisKICAgICBkZWYgdGVzdF9tYWluX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnJvcl9zdHJpbmdpbzoKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnMS8wJ10pCkBAIC0zMTgsOCArMzQ5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRfZXhjX3N0cmluZyhlcnJvcl9zdHJpbmdpby5nZXR2YWx1ZSgpLCAnWmVyb0RpdmlzaW9uRXJyb3InKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdFRpbWVpdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5CmluZGV4IDcwM2M0M2EuLjNjNzVkY2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkKQEAgLTI0MywxNCArMjQzLDE0IEBACiAgICAgZGVmIHRlc3RBY2NlcHRUaW1lb3V0KHNlbGYpOgogICAgICAgICAjIFRlc3QgYWNjZXB0KCkgdGltZW91dAogICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2ssIHNlbGYubG9jYWxob3N0KQotICAgICAgICBzZWxmLnNvY2subGlzdGVuKDUpCisgICAgICAgIHNlbGYuc29jay5saXN0ZW4oKQogICAgICAgICBzZWxmLl9zb2NrX29wZXJhdGlvbigxLCAxLjUsICdhY2NlcHQnKQogCiAgICAgZGVmIHRlc3RTZW5kKHNlbGYpOgogICAgICAgICAjIFRlc3Qgc2VuZCgpIHRpbWVvdXQKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNlcnY6CiAgICAgICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2LCBzZWxmLmxvY2FsaG9zdCkKLSAgICAgICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICAjIFNlbmQgYSBsb3Qgb2YgZGF0YSBpbiBvcmRlciB0byBieXBhc3MgYnVmZmVyaW5nIGluIHRoZSBUQ1Agc3RhY2suCiAgICAgICAgICAgICBzZWxmLl9zb2NrX29wZXJhdGlvbigxMDAsIDEuNSwgJ3NlbmQnLCBiIlgiICogMjAwMDAwKQpAQCAtMjU5LDcgKzI1OSw3IEBACiAgICAgICAgICMgVGVzdCBzZW5kdG8oKSB0aW1lb3V0CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzZXJ2OgogICAgICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc2Vydiwgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3Qoc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgIyBUaGUgYWRkcmVzcyBhcmd1bWVudCBpcyBpZ25vcmVkIHNpbmNlIHdlIGFscmVhZHkgY29ubmVjdGVkLgogICAgICAgICAgICAgc2VsZi5fc29ja19vcGVyYXRpb24oMTAwLCAxLjUsICdzZW5kdG8nLCBiIlgiICogMjAwMDAwLApAQCAtMjY5LDcgKzI2OSw3IEBACiAgICAgICAgICMgVGVzdCBzZW5kYWxsKCkgdGltZW91dAogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc2VydjoKICAgICAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlcnYsIHNlbGYubG9jYWxob3N0KQotICAgICAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KHNlcnYuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgICMgU2VuZCBhIGxvdCBvZiBkYXRhIGluIG9yZGVyIHRvIGJ5cGFzcyBidWZmZXJpbmcgaW4gdGhlIFRDUCBzdGFjay4KICAgICAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEwMCwgMS41LCAnc2VuZGFsbCcsIGIiWCIgKiAyMDAwMDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpeC5weSBiL0xpYi90ZXN0L3Rlc3RfdGl4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZWEzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3RpeC5weQpAQCAtMCwwICsxLDMyIEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHN5cworCisjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGtpbnRlciBtb2R1bGUgd2Fzbid0IGJ1aWx0LgorX3RraW50ZXIgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190a2ludGVyJykKKworIyBTa2lwIHRlc3QgaWYgdGsgY2Fubm90IGJlIGluaXRpYWxpemVkLgorc3VwcG9ydC5yZXF1aXJlcygnZ3VpJykKKworZnJvbSB0a2ludGVyIGltcG9ydCB0aXgsIFRjbEVycm9yCisKKworY2xhc3MgVGVzdFRpeCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucm9vdCA9IHRpeC5UaygpCisgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1RpeCBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSBvbiBXaW5kb3dzJykKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RpeCBub3QgYXZhaWxhYmxlJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJvb3QuZGVzdHJveSkKKworICAgIGRlZiB0ZXN0X3RpeF9hdmFpbGFibGUoc2VsZik6CisgICAgICAgICMgdGhpcyB0ZXN0IGlzIGp1c3QgaGVyZSB0byBtYWtlIHNldFVwIHJ1bgorICAgICAgICBwYXNzCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGsucHkgYi9MaWIvdGVzdC90ZXN0X3RrLnB5CmluZGV4IDYyNzI5ZjAuLjQ4Y2VmZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ay5weQpAQCAtMiw5ICsyLDYgQEAKICMgU2tpcCB0ZXN0IGlmIF90a2ludGVyIHdhc24ndCBidWlsdC4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQogCi0jIE1ha2Ugc3VyZSB0a2ludGVyLl9maXggcnVucyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Ci1zdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXInKQotCiAjIFNraXAgdGVzdCBpZiB0ayBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQuCiBzdXBwb3J0LnJlcXVpcmVzKCdndWknKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5IGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQppbmRleCA5ODQyMjA3Li5iNGUxMTRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKQEAgLTQ2NCw3ICs0NjQsNyBAQAogCiBNdWx0aXBsaWNhdGl2ZQogCi0gICAgPj4+IGR1bXBfdG9rZW5zKCJ4ID0gMS8vMSoxLzUqMTIlMHgxMiIpCisgICAgPj4+IGR1bXBfdG9rZW5zKCJ4ID0gMS8vMSoxLzUqMTIlMHgxMkA0MiIpCiAgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKICAgICBOQU1FICAgICAgICd4JyAgICAgICAgICAgKDEsIDApICgxLCAxKQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMikgKDEsIDMpCkBAIC00NzksNiArNDc5LDggQEAKICAgICBOVU1CRVIgICAgICcxMicgICAgICAgICAgKDEsIDEzKSAoMSwgMTUpCiAgICAgT1AgICAgICAgICAnJScgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQogICAgIE5VTUJFUiAgICAgJzB4MTInICAgICAgICAoMSwgMTYpICgxLCAyMCkKKyAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDIwKSAoMSwgMjEpCisgICAgTlVNQkVSICAgICAnNDInICAgICAgICAgICgxLCAyMSkgKDEsIDIzKQogCiBVbmFyeQogCkBAIC02MzksNiArNjQxLDE5MiBAQAogICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCiAgICAgU1RSSU5HICAgICAiVSdncmVlbiciICAgICgyLCA3KSAoMiwgMTUpCisKK0FzeW5jL2F3YWl0IGV4dGVuc2lvbjoKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMgPSAxIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhID0gKGFzeW5jID0gMSkiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYScgICAgICAgICAgICgxLCAwKSAoMSwgMSkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgNCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA1KSAoMSwgMTApCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE0KSAoMSwgMTUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jKCkiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgNikgKDEsIDcpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImNsYXNzIGFzeW5jKEJhcik6cGFzcyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdjbGFzcycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNikgKDEsIDExKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBOQU1FICAgICAgICdCYXInICAgICAgICAgKDEsIDEyKSAoMSwgMTUpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE3KSAoMSwgMjEpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImNsYXNzIGFzeW5jOnBhc3MiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnY2xhc3MnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDYpICgxLCAxMSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxMikgKDEsIDE2KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhd2FpdCA9IDEiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImZvby5hc3luYyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDApICgxLCAzKQorICAgIE9QICAgICAgICAgJy4nICAgICAgICAgICAoMSwgMykgKDEsIDQpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA0KSAoMSwgOSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2ZvcicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnYScgICAgICAgICAgICgxLCAxMCkgKDEsIDExKQorICAgIE5BTUUgICAgICAgJ2luJyAgICAgICAgICAoMSwgMTIpICgxLCAxNCkKKyAgICBOQU1FICAgICAgICdiJyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTgpICgxLCAyMikKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMgd2l0aCBhIGFzIGI6IHBhc3MiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICd3aXRoJyAgICAgICAgKDEsIDYpICgxLCAxMCkKKyAgICBOQU1FICAgICAgICdhJyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgTkFNRSAgICAgICAnYXMnICAgICAgICAgICgxLCAxMykgKDEsIDE1KQorICAgIE5BTUUgICAgICAgJ2InICAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE3KSAoMSwgMTgpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxOSkgKDEsIDIzKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYy5mb28iKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBPUCAgICAgICAgICcuJyAgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgNikgKDEsIDkpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jXFxuI2NvbW1lbnRcXG5hd2FpdCIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIENPTU1FTlQgICAgJyNjb21tZW50JyAgICAoMiwgMCkgKDIsIDgpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoMiwgOCkgKDIsIDkpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgzLCAwKSAoMywgNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmNcXG4uLi5cXG5hd2FpdCIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIE9QICAgICAgICAgJy4uLicgICAgICAgICAoMiwgMCkgKDIsIDMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMiwgMykgKDIsIDQpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgzLCAwKSAoMywgNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmNcXG5hd2FpdCIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDUpICgxLCA2KQorICAgIE5BTUUgICAgICAgJ2F3YWl0JyAgICAgICAoMiwgMCkgKDIsIDUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImZvby5hc3luYyArIDEiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAwKSAoMSwgMykKKyAgICBPUCAgICAgICAgICcuJyAgICAgICAgICAgKDEsIDMpICgxLCA0KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNCkgKDEsIDkpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxMCkgKDEsIDExKQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMSwgMTIpICgxLCAxMykKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMgZGVmIGZvbygpOiBwYXNzIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDEwKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTQpICgxLCAxNSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxNykgKDEsIDIxKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAuLi4gICBkZWYgZm9vKGF3YWl0KToKKyAgICAuLi4gICAgIGF3YWl0ID0gMQorICAgIC4uLiAgIGlmIDE6CisgICAgLi4uICAgICBhd2FpdAorICAgIC4uLiBhc3luYyArPSAxCisgICAgLi4uICcnJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDEwKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTQpICgxLCAxNSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBJTkRFTlQgICAgICcgICcgICAgICAgICAgKDIsIDApICgyLCAyKQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMikgKDIsIDUpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA2KSAoMiwgOSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDIsIDkpICgyLCAxMCkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDIsIDEwKSAoMiwgMTUpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgyLCAxNSkgKDIsIDE2KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMiwgMTYpICgyLCAxNykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgyLCAxNykgKDIsIDE4KQorICAgIElOREVOVCAgICAgJyAgICAnICAgICAgICAoMywgMCkgKDMsIDQpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgzLCA0KSAoMywgOSkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDMsIDEwKSAoMywgMTEpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgzLCAxMikgKDMsIDEzKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDMsIDEzKSAoMywgMTQpCisgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg0LCAyKSAoNCwgMikKKyAgICBOQU1FICAgICAgICdpZicgICAgICAgICAgKDQsIDIpICg0LCA0KQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoNCwgNSkgKDQsIDYpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICg0LCA2KSAoNCwgNykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICg0LCA3KSAoNCwgOCkKKyAgICBJTkRFTlQgICAgICcgICAgJyAgICAgICAgKDUsIDApICg1LCA0KQorICAgIEFXQUlUICAgICAgJ2F3YWl0JyAgICAgICAoNSwgNCkgKDUsIDkpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNSwgOSkgKDUsIDEwKQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNiwgMCkgKDYsIDApCisgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg2LCAwKSAoNiwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDYsIDApICg2LCA1KQorICAgIE9QICAgICAgICAgJys9JyAgICAgICAgICAoNiwgNikgKDYsIDgpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICg2LCA5KSAoNiwgMTApCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNiwgMTApICg2LCAxMSkKKworICAgID4+PiBkdW1wX3Rva2VucygnJydhc3luYyBkZWYgZm9vKCk6CisgICAgLi4uICAgYXN5bmMgZm9yIGkgaW4gMTogcGFzcycnJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDEwKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTQpICgxLCAxNSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBJTkRFTlQgICAgICcgICcgICAgICAgICAgKDIsIDApICgyLCAyKQorICAgIEFTWU5DICAgICAgJ2FzeW5jJyAgICAgICAoMiwgMikgKDIsIDcpCisgICAgTkFNRSAgICAgICAnZm9yJyAgICAgICAgICgyLCA4KSAoMiwgMTEpCisgICAgTkFNRSAgICAgICAnaScgICAgICAgICAgICgyLCAxMikgKDIsIDEzKQorICAgIE5BTUUgICAgICAgJ2luJyAgICAgICAgICAoMiwgMTQpICgyLCAxNikKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDIsIDE3KSAoMiwgMTgpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgyLCAxOCkgKDIsIDE5KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMiwgMjApICgyLCAyNCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDMsIDApICgzLCAwKQogIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTEwOSw2ICsxMjk3LDE3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1Zi5hcHBlbmQoJ09LJykKKyAgICAgICAgYnVmID0gJ1xuJy5qb2luKGJ1ZikKKworICAgICAgICAjIFRlc3QgdGhhdCA1MDAgY29uc2VxdWVudCwgb25lLWxpbmUgZGVmcyBpcyBPSworICAgICAgICB0b2tzID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKGJ1Zi5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tzWy0yXS5zdHJpbmcsICdPSycpICMgWy0xXSBpcyBhbHdheXMgRU5ETUFSS0VSCisKICAgICBkZWYgYXNzZXJ0RXhhY3RUeXBlRXF1YWwoc2VsZiwgb3BzdHIsICpvcHR5cGVzKToKICAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKG9wc3RyLmVuY29kZSgndXRmLTgnKSkucmVhZGxpbmUpKQogICAgICAgICBudW1fb3B0eXBlcyA9IGxlbihvcHR5cGVzKQpAQCAtMTE2Myw2ICsxMzYyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdAPScsIHRva2VuLkFURVFVQUwpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnYSoqMitiKioyPT1jKioyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9pMThuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYWE4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weQpAQCAtMCwwICsxLDY4IEBACisiIiJUZXN0cyB0byBjb3ZlciB0aGUgVG9vbHMvaTE4biBwYWNrYWdlIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCB0b29sc2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfY3dkCisKK2NsYXNzIFRlc3RfcHlnZXR0ZXh0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgdGhlIHB5Z2V0dGV4dC5weSB0b29sIiIiCisKKyAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4odG9vbHNkaXIsJ2kxOG4nLCAncHlnZXR0ZXh0LnB5JykKKworICAgIGRlZiBnZXRfaGVhZGVyKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiIgdXRpbGl0eTogcmV0dXJuIHRoZSBoZWFkZXIgb2YgYSAucG8gZmlsZSBhcyBhIGRpY3Rpb25hcnkgIiIiCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCgnIycsICdtc2dpZCcsJ21zZ3N0cicpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJyInKQorICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywxKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIGhlYWRlcnMKKworICAgIGRlZiB0ZXN0X2hlYWRlcihzZWxmKToKKyAgICAgICAgIiIiTWFrZSBzdXJlIHRoZSByZXF1aXJlZCBmaWVsZHMgYXJlIGluIHRoZSBoZWFkZXIsIGFjY29yZGluZyB0bzoKKyAgICAgICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvbWFudWFsL2dldHRleHQuaHRtbCNIZWFkZXItRW50cnkKKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggdGVtcF9jd2QoTm9uZSkgYXMgY3dkOgorICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzZWxmLnNjcmlwdCkKKyAgICAgICAgICAgIHdpdGggb3BlbignbWVzc2FnZXMucG90JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgaGVhZGVyID0gc2VsZi5nZXRfaGVhZGVyKGRhdGEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlByb2plY3QtSWQtVmVyc2lvbiIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlBPVC1DcmVhdGlvbi1EYXRlIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUE8tUmV2aXNpb24tRGF0ZSIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhc3QtVHJhbnNsYXRvciIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhbmd1YWdlLVRlYW0iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJNSU1FLVZlcnNpb24iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVR5cGUiLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiR2VuZXJhdGVkLUJ5IiwgaGVhZGVyKQorCisgICAgICAgICAgICAjIG5vdCBjbGVhciBpZiB0aGVzZSBzaG91bGQgYmUgcmVxdWlyZWQgaW4gUE9UICh0ZW1wbGF0ZSkgZmlsZXMKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJSZXBvcnQtTXNnaWQtQnVncy1UbyIsIGhlYWRlcikKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJMYW5ndWFnZSIsIGhlYWRlcikKKworICAgICAgICAgICAgIyJQbHVyYWwtRm9ybXMiIGlzIG9wdGlvbmFsCisKKworICAgIGRlZiB0ZXN0X1BPVF9DcmVhdGlvbl9EYXRlKHNlbGYpOgorICAgICAgICAiIiIgTWF0Y2ggdGhlIGRhdGUgZm9ybWF0IGZyb20geGdldHRleHQgZm9yIFBPVC1DcmVhdGlvbi1EYXRlICIiIgorICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgICB3aXRoIHRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fb2soc2VsZi5zY3JpcHQpCisgICAgICAgICAgICB3aXRoIG9wZW4oJ21lc3NhZ2VzLnBvdCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIGhlYWRlciA9IHNlbGYuZ2V0X2hlYWRlcihkYXRhKQorICAgICAgICAgICAgY3JlYXRpb25EYXRlID0gaGVhZGVyWydQT1QtQ3JlYXRpb24tRGF0ZSddCisKKyAgICAgICAgICAgICMgcGVlbCBvZmYgdGhlIGVzY2FwZWQgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHN0cmluZworICAgICAgICAgICAgaWYgY3JlYXRpb25EYXRlLmVuZHN3aXRoKCdcXG4nKToKKyAgICAgICAgICAgICAgICBjcmVhdGlvbkRhdGUgPSBjcmVhdGlvbkRhdGVbOi1sZW4oJ1xcbicpXQorCisgICAgICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBpZiB0aGUgZGF0ZSBmb3JtYXQgZG9lcyBub3QgZXhhY3RseSBtYXRjaC4KKyAgICAgICAgICAgIGRhdGV0aW1lLnN0cnB0aW1lKGNyZWF0aW9uRGF0ZSwgJyVZLSVtLSVkICVIOiVNJXonKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKaW5kZXggNTllYTE0OS4uMTMwNTI5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CmluZGV4IDE0YTBhYTIuLmUyOTNiYzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weQppbmRleCA0NWNlYmY3Li5kN2MyMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcmVpbmRlbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3JlaW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCBlZTMzOTg2Li4wM2RmZjg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTksMTIgKzksMTEgQEAKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIAotCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiAKIGRlZiBmaXhfZXh0X3B5KGZpbGVuYW1lKToKLSAgICAiIiJHaXZlbiBhIC5weWMvLnB5byBmaWxlbmFtZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUgLnB5IiIiCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcucHljJywgJy5weW8nKSk6CisgICAgIiIiR2l2ZW4gYSAucHljIGZpbGVuYW1lIGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSAucHkiIiIKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICByZXR1cm4gZmlsZW5hbWUKIApAQCAtMjIzLDYgKzIyMiwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQorICAgICAgICBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgPSBzeXMuZ2V0dHJhY2UoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5fc2F2ZWRfdHJhY2VmdW5jKQogCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2NhbGxlcihzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19zaW1wbGVfY2FsbGVyLCAxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCBjMjk1NTYzLi5lOGM0ZDc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMSwxNSArMSwyNCBAQAogIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcmUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQsIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitpbXBvcnQgdGV4dHdyYXAKIAogaW1wb3J0IHRyYWNlYmFjawogCiAKK3Rlc3RfY29kZSA9IG5hbWVkdHVwbGUoJ2NvZGUnLCBbJ2NvX2ZpbGVuYW1lJywgJ2NvX25hbWUnXSkKK3Rlc3RfZnJhbWUgPSBuYW1lZHR1cGxlKCdmcmFtZScsIFsnZl9jb2RlJywgJ2ZfZ2xvYmFscycsICdmX2xvY2FscyddKQordGVzdF90YiA9IG5hbWVkdHVwbGUoJ3RiJywgWyd0Yl9mcmFtZScsICd0Yl9saW5lbm8nLCAndGJfbmV4dCddKQorCisKIGNsYXNzIFN5bnRheFRyYWNlYmFja0Nhc2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIEZvciBub3csIGEgdmVyeSBtaW5pbWFsIHNldCBvZiB0ZXN0cy4gIEkgd2FudCB0byBiZSBzdXJlIHRoYXQKICAgICAjIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIHdvcmtzIGJhc2VkIG9uIGNoYW5nZXMgZm9yIDIuMS4KQEAgLTkyLDkgKzEwMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVyciksIDEpCiAgICAgICAgIHN0cl92YWx1ZSA9ICc8dW5wcmludGFibGUgJXMgb2JqZWN0PicgJSBYLl9fbmFtZV9fCiAgICAgICAgIGlmIFguX19tb2R1bGVfXyBpbiAoJ19fbWFpbl9fJywgJ2J1aWx0aW5zJyk6Ci0gICAgICAgICAgICBzdHJfbmFtZSA9IFguX19uYW1lX18KKyAgICAgICAgICAgIHN0cl9uYW1lID0gWC5fX3F1YWxuYW1lX18KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cl9uYW1lID0gJy4nLmpvaW4oW1guX19tb2R1bGVfXywgWC5fX25hbWVfX10pCisgICAgICAgICAgICBzdHJfbmFtZSA9ICcuJy5qb2luKFtYLl9fbW9kdWxlX18sIFguX19xdWFsbmFtZV9fXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJbMF0sICIlczogJXNcbiIgJSAoc3RyX25hbWUsIHN0cl92YWx1ZSkpCiAKICAgICBkZWYgdGVzdF93aXRob3V0X2V4Y2VwdGlvbihzZWxmKToKQEAgLTE2OSw2ICsxNzgsMzcgQEAKICAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXMgbm8gZWZmZWN0CiAgICAgICAgIGRvX3Rlc3QoIjBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKKyAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjI1OTk6IEVuc3VyZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgdHJhY2ViYWNrIG1vZHVsZQorICAgICAgICAjIHRvIGRpc3BsYXkgYW4gZXhjZXB0aW9uIGF0IFB5dGhvbiBleGl0CisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICAgICAgICAgIGNsYXNzIFByaW50RXhjZXB0aW9uQXRFeGl0KG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMSAvIDAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWxmLmV4Y19pbmZvWzFdICh0cmFjZWJhY2spIGNvbnRhaW5zIGZyYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGljaXRseSBjbGVhciB0aGUgcmVmZXJlbmNlIHRvIHNlbGYgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbigqc2VsZi5leGNfaW5mbykKKworICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlIHRvIGNhbGwgdGhlIGRlc3RydWN0b3IKKyAgICAgICAgICAgICMgd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkCisgICAgICAgICAgICBvYmogPSBQcmludEV4Y2VwdGlvbkF0RXhpdCgpCisgICAgICAgICIiIikKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICBleHBlY3RlZCA9IFtiJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLAorICAgICAgICAgICAgICAgICAgICBiJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDgsIGluIF9faW5pdF9fJywKKyAgICAgICAgICAgICAgICAgICAgYidaZXJvRGl2aXNpb25FcnJvcjogZGl2aXNpb24gYnkgemVybyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWQpCisKIAogY2xhc3MgVHJhY2ViYWNrRm9ybWF0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MTQsNiArNDU0LDEyNiBAQAogICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCiAKIAorY2xhc3MgTGltaXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAnJycgVGVzdHMgZm9yIGxpbWl0IGFyZ3VtZW50LgorICAgICAgICBJdCdzIGVub3VnaCB0byB0ZXN0IGV4dGFjdF90YiwgZXh0cmFjdF9zdGFjayBhbmQgZm9ybWF0X2V4Y2VwdGlvbiAnJycKKworICAgIGRlZiBsYXN0X3JhaXNlczEoc2VsZik6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTGFzdCByYWlzZWQnKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMihzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczEoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMyhzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczIoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNChzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczMoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNShzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczQoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTEoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUxKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUyKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUzKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU1KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU0KCkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2soc2VsZik6CisgICAgICAgIGZyYW1lID0gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU1KCkKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKGZyYW1lLCAqKmt3YXJncykKKyAgICAgICAgZGVmIGFzc2VydEVxdWFsRXhjZXB0KGFjdHVhbCwgZXhwZWN0ZWQsIGlnbm9yZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFs6aWdub3JlXSwgZXhwZWN0ZWRbOmlnbm9yZV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFtpZ25vcmUrMTpdLCBleHBlY3RlZFtpZ25vcmUrMTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsKSwgbGVuKGV4cGVjdGVkKSkKKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihub2xpbSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KGxpbWl0PTEwMCksIG5vbGltWy0xMDA6XSwgLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIGFzc2VydEVxdWFsRXhjZXB0KGV4dHJhY3QobGltaXQ9LTEwMCksIG5vbGltWzoxMDBdLCBsZW4obm9saW0pLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KCksIG5vbGltLCAtNS0xKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF90YihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBkZWYgZXh0cmFjdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3RfdGIodGIsICoqa3dhcmdzKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCAxMDAwKToKKyAgICAgICAgICAgIG5vbGltID0gZXh0cmFjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihub2xpbSksIDUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0yKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTEwKSwgbm9saW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTIpLCBub2xpbVstMjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTApLCBbXSkKKyAgICAgICAgICAgIGRlbCBzeXMudHJhY2ViYWNrbGltaXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbVs6Ml0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWzozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAjIFsxOi0xXSB0byBleGNsdWRlICJUcmFjZWJhY2sgKC4uLikiIGhlYWRlciBhbmQKKyAgICAgICAgIyBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsdWUsIHRiLCAqKmt3YXJncylbMTotMV0KKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obm9saW0pLCA1KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0yKSwgbm9saW1bLTI6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMTApLCBub2xpbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVstMzpdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gLTEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBbXSkKKworCiBjbGFzcyBNaXNjVHJhY2ViYWNrQ2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMKICAgICAjIENoZWNrIG5vbi1wcmludGluZyBmdW5jdGlvbnMgaW4gdHJhY2ViYWNrIG1vZHVsZQpAQCAtNDQ0LDggKzYwNCwyNjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaW5uZXJfZnJhbWUuZl9sb2NhbHMpLCAwKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoX19uYW1lX18pCitjbGFzcyBUZXN0RnJhbWUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoImYiLCBnbG9iYWxzKCkpCisgICAgICAgIGYgPSB0cmFjZWJhY2suRnJhbWVTdW1tYXJ5KCJmIiwgMSwgImR1bW15IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICgiZiIsIDEsICJkdW1teSIsICciIiJUZXN0IGNhc2VzIGZvciB0cmFjZWJhY2sgbW9kdWxlIiIiJyksCisgICAgICAgICAgICB0dXBsZShmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBmLmxvY2FscykKKworICAgIGRlZiB0ZXN0X2xhenlfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgZiA9IHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiLCBsb29rdXBfbGluZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBmLl9saW5lKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKCJmIiwgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJyIiIlRlc3QgY2FzZXMgZm9yIHRyYWNlYmFjayBtb2R1bGUiIiInLAorICAgICAgICAgICAgZi5saW5lKQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfbGluZShzZWxmKToKKyAgICAgICAgZiA9IHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiLCBsaW5lPSJsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgibGluZSIsIGYubGluZSkKKworCitjbGFzcyBUZXN0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2Fsa19zdGFjayhzZWxmKToKKyAgICAgICAgcyA9IGxpc3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocyksIDEwKQorCisgICAgZGVmIHRlc3Rfd2Fsa190YihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBfLCBfLCB0YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIHMgPSBsaXN0KHRyYWNlYmFjay53YWxrX3RiKHRiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDEpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KHRyYWNlYmFjay53YWxrX3N0YWNrKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocywgdHJhY2ViYWNrLlN0YWNrU3VtbWFyeSkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2tfbGltaXQoc2VsZik6CisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSksIGxpbWl0PTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCA1KQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF9zdGFja19sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIE5vbmUsIE5vbmUpCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoaXRlcihbKGYsIDYpXSksIGxvb2t1cF9saW5lcz1UcnVlKQorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXS5saW5lLCAiaW1wb3J0IHN5cyIpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrdXBfZGVmZXJyZWRfbG9va3VwX2xpbmVzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgbG9va3VwX2xpbmVzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBsaW5lY2FjaGUuY2FjaGUpCisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAxLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfZnJvbV9saXN0X2VkaXRlZF9zdGFjayhzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNbMF0gPSAoJ2Zvby5weScsIDIsICdmcmVkJywgJ2xpbmUnKQorICAgICAgICBzMiA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAyLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzMi5mb3JtYXQoKSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF9zbW9rZShzZWxmKToKKyAgICAgICAgIyBGb3IgZGV0YWlsZWQgdGVzdHMgc2VlIHRoZSBmb3JtYXRfbGlzdCB0ZXN0cywgd2hpY2ggY29uc3VtZSB0aGUgc2FtZQorICAgICAgICAjIGNvZGUuCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmZyb21fbGlzdChbKCdmb28ucHknLCAxLCAnZnJlZCcsICdsaW5lJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWycgIEZpbGUgImZvby5weSIsIGxpbmUgMSwgaW4gZnJlZFxuICAgIGxpbmVcbiddLAorICAgICAgICAgICAgcy5mb3JtYXQoKSkKKworICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIGdsb2JhbHMoKSwgeydzb21ldGhpbmcnOiAxfSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxvY2Fscywgeydzb21ldGhpbmcnOiAnMSd9KQorCisgICAgZGVmIHRlc3Rfbm9fbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDF9KQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubG9jYWxzLCBOb25lKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2xvY2FscyhzZWxmKToKKyAgICAgICAgZGVmIHNvbWVfaW5uZXIoaywgdik6CisgICAgICAgICAgICBhID0gMQorICAgICAgICAgICAgYiA9IDIKKyAgICAgICAgICAgIHJldHVybiB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSksIGNhcHR1cmVfbG9jYWxzPVRydWUsIGxpbWl0PTEpCisgICAgICAgIHMgPSBzb21lX2lubmVyKDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiJXMiLCBsaW5lICVkLCBpbiBzb21lX2lubmVyXG4nCisgICAgICAgICAgICAgJyAgICB0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSwgbGltaXQ9MSlcbicKKyAgICAgICAgICAgICAnICAgIGEgPSAxXG4nCisgICAgICAgICAgICAgJyAgICBiID0gMlxuJworICAgICAgICAgICAgICcgICAgayA9IDNcbicKKyAgICAgICAgICAgICAnICAgIHYgPSA0XG4nICUgKF9fZmlsZV9fLCBzb21lX2lubmVyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgNCkKKyAgICAgICAgICAgIF0sIHMuZm9ybWF0KCkpCisKK2NsYXNzIFRlc3RUcmFjZWJhY2tFeGNlcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc21va2Uoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEvMAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8pCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9mcm9tX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIyBDaGVjayBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGFjY2VwdGVkLgorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSksIGxpbWl0PTEsIGxvb2t1cF9saW5lcz1GYWxzZSwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICAgICAgc2VsZi5leGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uLmZyb21fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIGUsIGxpbWl0PTEsIGxvb2t1cF9saW5lcz1GYWxzZSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSBzZWxmLmV4cGVjdGVkX3N0YWNrCisgICAgICAgIGV4YyA9IHNlbGYuZXhjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9jYXVzZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBleGNfaW5mb19jb250ZXh0ID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvX2NvbnRleHQpCisgICAgICAgICAgICAgICAgY2F1c2UgPSBFeGNlcHRpb24oImNhdXNlIikKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInVoIG9oIikgZnJvbSBjYXVzZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8pCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSkpCisgICAgICAgIGV4Y19jYXVzZSA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBjYXVzZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfY2F1c2UsIGV4Yy5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2NvbnRleHQsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBleGMuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhY2ssIGV4Yy5zdGFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfaW5mb1swXSwgZXhjLmV4Y190eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleGNfaW5mb1sxXSksIHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBleGNfaW5mb19jb250ZXh0ID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvX2NvbnRleHQpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19jb250ZXh0LCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9saW1pdChzZWxmKToKKyAgICAgICAgZGVmIHJlY3Vyc2Uobik6CisgICAgICAgICAgICBpZiBuOgorICAgICAgICAgICAgICAgIHJlY3Vyc2Uobi0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVjdXJzZSgxMCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvLCBsaW1pdD01KQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfdGIoZXhjX2luZm9bMl0pLCBsaW1pdD01KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisKKyAgICBkZWYgdGVzdF9sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgZSA9IEV4Y2VwdGlvbigidWggb2giKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIE5vbmUsIE5vbmUpCisgICAgICAgIHRiID0gdGVzdF90YihmLCA2LCBOb25lKQorICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKEV4Y2VwdGlvbiwgZSwgdGIsIGxvb2t1cF9saW5lcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgbGluZWNhY2hlLmNhY2hlKQorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnN0YWNrWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBlID0gRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDEsICdvdGhlcic6ICdzdHJpbmcnfSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICBFeGNlcHRpb24sIGUsIHRiLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXhjLnN0YWNrWzBdLmxvY2Fscywgeydzb21ldGhpbmcnOiAnMScsICdvdGhlcic6ICInc3RyaW5nJyJ9KQorCisgICAgZGVmIHRlc3Rfbm9fbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGUgPSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMX0pCisgICAgICAgIHRiID0gdGVzdF90YihmLCA2LCBOb25lKQorICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKEV4Y2VwdGlvbiwgZSwgdGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnN0YWNrWzBdLmxvY2FscywgTm9uZSkKKworCitjbGFzcyBNaXNjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gc2V0KCkKKyAgICAgICAgYmxhY2tsaXN0ID0geydwcmludF9saXN0J30KKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyKHRyYWNlYmFjayk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBvciBuYW1lIGluIGJsYWNrbGlzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbW9kdWxlX29iamVjdCA9IGdldGF0dHIodHJhY2ViYWNrLCBuYW1lKQorICAgICAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGVfb2JqZWN0LCAnX19tb2R1bGVfXycsIE5vbmUpID09ICd0cmFjZWJhY2snOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkLmFkZChuYW1lKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwodHJhY2ViYWNrLl9fYWxsX18sIGV4cGVjdGVkKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CmluZGV4IDQ4Y2NhYjIuLmY2NWUzNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQpAQCAtNCw4ICs0LDkgQEAKIGltcG9ydCB0cmFjZW1hbGxvYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCi1mcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQpCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC02NjAsMTEgKzY2MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYWJjZGQnLCAnYSpjKmUnKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhYmNiZGVmZWYnLCAnYSpiZCplZycpKQogCi0gICAgICAgICMgcmVwbGFjZSAucHljIGFuZCAucHlvIHN1ZmZpeCB3aXRoIC5weQorICAgICAgICAjIHJlcGxhY2UgLnB5YyBzdWZmaXggd2l0aCAucHkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHljJywgJ2EucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHlvJywgJ2EucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHknLCAnYS5weWMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHknLCAnYS5weW8nKSkKIAogICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICAjIGNhc2UgaW5zZW5zaXRpdmUKQEAgLTY3MiwxOCArNjcxLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYUJjRGUnLCAnQWIqZEUnKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHljJywgJ2EuUFknKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLlBZTycsICdhLnB5JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weScsICdhLlBZQycpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EuUFknLCAnYS5weW8nKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgY2FzZSBzZW5zaXRpdmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYUJDJywgJ0FCYycpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhQmNEZScsICdBYipkRScpKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EucHljJywgJ2EuUFknKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5QWU8nLCAnYS5weScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLnB5JywgJ2EuUFlDJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EuUFknLCAnYS5weW8nKSkKIAogICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICAjIG5vcm1hbGl6ZSBhbHRlcm5hdGUgc2VwYXJhdG9yICIvIiB0byB0aGUgc3RhbmRhcmQgc2VwYXJhdG9yICJcIgpAQCAtNjk4LDYgKzY5Myw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2gocidhL2JcYycsIHInYVxiL2MnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaChyJ2EvYi9jJywgcidhXGJcYycpKQogCisgICAgICAgICMgYXMgb2YgMy41LCAucHlvIGlzIG5vIGxvbmdlciBtdW5nZWQgdG8gLnB5CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5weW8nLCAnYS5weScpKQorCiAgICAgZGVmIHRlc3RfZmlsdGVyX21hdGNoX3RyYWNlKHNlbGYpOgogICAgICAgICB0MSA9ICgoImEucHkiLCAyKSwgKCJiLnB5IiwgMykpCiAgICAgICAgIHQyID0gKCgiYi5weSIsIDQpLCAoImIucHkiLCA1KSkKQEAgLTc1NSw3ICs3NTMsNyBAQAogICAgICAgICBzdGRvdXQgPSBzdGRvdXQucnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGInRmFsc2UnKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpLAorICAgIEB1bml0dGVzdC5za2lwSWYoaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcnVuIC1FIHRlc3RzIHdoZW4gUFlUSE9OIGVudiB2YXJzIGFyZSByZXF1aXJlZC4nKQogICAgIGRlZiB0ZXN0X2Vudl92YXJfaWdub3JlZF93aXRoX0Uoc2VsZik6CiAgICAgICAgICIiIlBZVEhPTiogZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgaWdub3JlZCB3aGVuIC1FIGlzIHByZXNlbnQuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCBmY2RlZGFjLi40OTBlNzIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTUsMTIgKzUsMTAgQEAKICMgU2tpcCB0aGlzIHRlc3QgaWYgX3RraW50ZXIgd2Fzbid0IGJ1aWx0Lgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXRraW50ZXIgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXInKQotCiAjIFNraXAgdGVzdCBpZiB0ayBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQuCiBzdXBwb3J0LnJlcXVpcmVzKCdndWknKQogCitpbXBvcnQgdGtpbnRlcgogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiBmcm9tIHRraW50ZXIudGVzdCBpbXBvcnQgcnVudGt0ZXN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkgYi9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQppbmRleCAxY2ZlYjE1Li41NjZmYzlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQpAQCAtNCw5ICs0LDYgQEAKICMgU2tpcCB0aGlzIHRlc3QgaWYgX3RraW50ZXIgZG9lcyBub3QgZXhpc3QuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190a2ludGVyJykKIAotIyBNYWtlIHN1cmUgdGtpbnRlci5fZml4IHJ1bnMgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudAotc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCd0a2ludGVyJykKLQogZnJvbSB0a2ludGVyLnRlc3QgaW1wb3J0IHJ1bnRrdGVzdHMKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dXBsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKaW5kZXggNTE4NzVhMS4uZmIxMTNhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dXBsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CkBAIC02LDYgKzYsMTEgQEAKIGNsYXNzIFR1cGxlVGVzdChzZXFfdGVzdHMuQ29tbW9uVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gdHVwbGUKIAorICAgIGRlZiB0ZXN0X2dldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJ0dXBsZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgorICAgICAgICAgICAgKClbJ2EnXQorCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgogICAgICAgICBzdXBlcigpLnRlc3RfY29uc3RydWN0b3JzKCkKICAgICAgICAgIyBjYWxsaW5nIGJ1aWx0LWluIHR5cGVzIHdpdGhvdXQgYXJndW1lbnQgbXVzdCByZXR1cm4gZW1wdHkKQEAgLTIwMyw4ICsyMDgsMTMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgWzMsXSArIFQoKDEsMikpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUdXBsZVRlc3QpCisgICAgZGVmIHRlc3RfbGV4aWNvZ3JhcGhpY19vcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAyMTEwMAorICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzEsIDJdKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIDBdKQorICAgICAgICBjID0gc2VsZi50eXBlMnRlc3QoWzEsIDNdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGIsIGMpCiAKLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5CmluZGV4IDE3Y2Q1ZDMuLmEwZTYxN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZWNoZWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVjaGVja3MucHkKQEAgLTEsNyArMSw2IEBACiAiIiJVbml0IHRlc3RzIGZvciBfX2luc3RhbmNlY2hlY2tfXyBhbmQgX19zdWJjbGFzc2NoZWNrX18uIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgQUJDKHR5cGUpOgpAQCAtNjgsOSArNjcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlzaW5zdGFuY2UoNDIsIChTdWJJbnQsKSksIEZhbHNlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUeXBlQ2hlY2tzVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggODQ5Y2JhOS4uMTdlYzY0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC0xLDcgKzEsOCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCA2LCBidWlsdC1pbiB0eXBlcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fd2l0aF9sb2NhbGUKLWltcG9ydCBjb2xsZWN0aW9ucworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl93aXRoX2xvY2FsZQoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IGluc3BlY3QKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKQEAgLTM0Myw2ICszNDQsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCAzIC5fX2Zvcm1hdF9fLCAiLG4iKQogICAgICAgICAjIGNhbid0IGhhdmUgJywnIHdpdGggJ2MnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIDMgLl9fZm9ybWF0X18sICIsYyIpCisgICAgICAgICMgY2FuJ3QgaGF2ZSAnIycgd2l0aCAnYycKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgMyAuX19mb3JtYXRfXywgIiNjIikKIAogICAgICAgICAjIGVuc3VyZSB0aGF0IG9ubHkgaW50IGFuZCBmbG9hdCB0eXBlIHNwZWNpZmllcnMgd29yawogICAgICAgICBmb3IgZm9ybWF0X3NwZWMgaW4gKFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdhJyksIG9yZCgneicpKzEpXSArCkBAIC0xMTg2LDkgKzExODksODggQEAKICAgICAgICAgICAgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpID49IEZha2VTaW1wbGVOYW1lc3BhY2UoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cywgTWFwcGluZ1Byb3h5VGVzdHMsIENsYXNzQ3JlYXRpb25UZXN0cywKLSAgICAgICAgICAgICAgICAgU2ltcGxlTmFtZXNwYWNlVGVzdHMpCitjbGFzcyBDb3JvdXRpbmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfd3JvbmdfYXJncyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIGJhcigpOiBwYXNzCisKKyAgICAgICAgc2FtcGxlcyA9IFtOb25lLCAxLCBvYmplY3QoKV0KKyAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZXMuY29yb3V0aW5lLipleHBlY3RzIGEgY2FsbGFibGUnKToKKyAgICAgICAgICAgICAgICB0eXBlcy5jb3JvdXRpbmUoc2FtcGxlKQorCisgICAgZGVmIHRlc3Rfd3JvbmdfZnVuYyhzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbGFibGUgd3JhcHBlZCAuKiBub24tY29yb3V0aW5lJyk6CisgICAgICAgICAgICBmb28oKQorCisgICAgZGVmIHRlc3RfZHVja19jb3JvKHNlbGYpOgorICAgICAgICBjbGFzcyBDb3JvTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogcmV0dXJuIHNlbGYKKworICAgICAgICBjb3JvID0gQ29yb0xpa2UoKQorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCkuX19hd2FpdF9fKCksIGNvcm8pCisKKyAgICBkZWYgdGVzdF9kdWNrX2dlbihzZWxmKToKKyAgICAgICAgY2xhc3MgR2VuTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiBwYXNzCisKKyAgICAgICAgZ2VuID0gR2VuTGlrZSgpCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGdlbgorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLl9fYXdhaXRfXygpLCBnZW4pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBmb28oKS5naV9jb2RlCisKKyAgICBkZWYgdGVzdF9nZW4oc2VsZik6CisgICAgICAgIGRlZiBnZW4oKTogeWllbGQKKyAgICAgICAgZ2VuID0gZ2VuKCkKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6IHJldHVybiBnZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKS5fX2F3YWl0X18oKSwgZ2VuKQorCisgICAgICAgIGZvciBuYW1lIGluICgnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ2dpX2NvZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ2dpX3J1bm5pbmcnLCAnZ2lfZnJhbWUnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihmb28oKSwgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZ2VuLCBuYW1lKSkKKworICAgIGRlZiB0ZXN0X2dlbmZ1bmMoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGdlbigpLCBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGdlbigpLCBjb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlKSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGVzLmNvcm91dGluZShnZW4pLCBnZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdlbi5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fSVRFUkFCTEVfQ09ST1VUSU5FKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdlbi5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKQorCisgICAgICAgIGcgPSBnZW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZy5naV9jb2RlLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19JVEVSQUJMRV9DT1JPVVRJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5naV9jb2RlLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGcsIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShnLCBjb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlKSkKKyAgICAgICAgZy5jbG9zZSgpICMgc2lsZW5jZSB3YXJuaW5nCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzdlMTEzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBpbmcucHkKQEAgLTAsMCArMSwxMzczIEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBtYWluCit0cnk6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBtb2NrICAjIDNyZCBwYXJ0eSBpbnN0YWxsLCBmb3IgUFkzLjIuCisKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnkKK2Zyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyLCBBbnlTdHIKK2Zyb20gdHlwaW5nIGltcG9ydCBULCBLVCwgVlQgICMgTm90IGluIF9fYWxsX18uCitmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24sIE9wdGlvbmFsCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorZnJvbSB0eXBpbmcgaW1wb3J0IEdlbmVyaWMKK2Zyb20gdHlwaW5nIGltcG9ydCBjYXN0Citmcm9tIHR5cGluZyBpbXBvcnQgZ2V0X3R5cGVfaGludHMKK2Zyb20gdHlwaW5nIGltcG9ydCBub190eXBlX2NoZWNrLCBub190eXBlX2NoZWNrX2RlY29yYXRvcgorZnJvbSB0eXBpbmcgaW1wb3J0IE5hbWVkVHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBJTywgVGV4dElPLCBCaW5hcnlJTworZnJvbSB0eXBpbmcgaW1wb3J0IFBhdHRlcm4sIE1hdGNoCitpbXBvcnQgdHlwaW5nCisKKworY2xhc3MgRW1wbG95ZWU6CisgICAgcGFzcworCisKK2NsYXNzIE1hbmFnZXIoRW1wbG95ZWUpOgorICAgIHBhc3MKKworCitjbGFzcyBGb3VuZGVyKEVtcGxveWVlKToKKyAgICBwYXNzCisKKworY2xhc3MgTWFuYWdpbmdGb3VuZGVyKE1hbmFnZXIsIEZvdW5kZXIpOgorICAgIHBhc3MKKworCitjbGFzcyBBbnlUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbnlfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFbXBsb3llZSgpLCBBbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSg0MiwgQW55KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoTm9uZSwgQW55KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uob2JqZWN0KCksIEFueSkKKworICAgIGRlZiB0ZXN0X2FueV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRW1wbG95ZWUsIEFueSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGludCwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShOb25lKSwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mob2JqZWN0LCBBbnkpKQorCisgICAgZGVmIHRlc3Rfb3RoZXJzX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEFueSwgRW1wbG95ZWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCBpbnQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCB0eXBlKE5vbmUpKSkKKyAgICAgICAgIyBIb3dldmVyLCBBbnkgaXMgYSBzdWJjbGFzcyBvZiBvYmplY3QgKHRoaXMgY2FuJ3QgYmUgaGVscGVkKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQW55LCBvYmplY3QpKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFueSksICd0eXBpbmcuQW55JykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNzdWJjbGFzcyg0MiwgQW55KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnlbaW50XSAgIyBBbnkgaXMgbm90IGEgZ2VuZXJpYyB0eXBlLgorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBKEFueSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnkoKQorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQW55W2ludF0KKworICAgIGRlZiB0ZXN0X2FueV9pc19zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBBbnkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBzdWJjbGFzcyBvZiBldmVyeXRoaW5nLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEFueSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdFtpbnRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5MaXN0W1RdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nW3N0ciwgaW50XSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWFwcGluZ1tLVCwgVlRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEdlbmVyaWMpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgR2VuZXJpY1tUXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBHZW5lcmljW0tULCBWVF0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgQW55U3RyKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uW2ludCwgc3RyXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLk1hdGNoW3N0cl0pCisgICAgICAgICMgVGhlc2UgZXhwcmVzc2lvbnMgbXVzdCBzaW1wbHkgbm90IGZhaWwuCisgICAgICAgIHR5cGluZy5NYXRjaFtBbnldCisgICAgICAgIHR5cGluZy5QYXR0ZXJuW0FueV0KKyAgICAgICAgdHlwaW5nLklPW0FueV0KKworCitjbGFzcyBUeXBlVmFyVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNfcGxhaW4oc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgIyBOb3RoaW5nIGlzIGFuIGluc3RhbmNlIGlmIFQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoJycsIFQpCisgICAgICAgICMgRXZlcnkgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiBULgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIFQpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHN0ciwgVCkKKyAgICAgICAgIyBUIGVxdWFscyBpdHNlbGYuCisgICAgICAgIGFzc2VydCBUID09IFQKKyAgICAgICAgIyBUIGlzIGEgc3ViY2xhc3Mgb2YgaXRzZWxmLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhULCBUKQorCisgICAgZGVmIHRlc3RfYmFzaWNfY29uc3RyYWluZWQoc2VsZik6CisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykKKyAgICAgICAgIyBOb3RoaW5nIGlzIGFuIGluc3RhbmNlIG9mIEEuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoJycsIEEpCisgICAgICAgICMgT25seSBzdHIgYW5kIGJ5dGVzIGFyZSBzdWJjbGFzc2VzIG9mIEEuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHN0ciwgQSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoYnl0ZXMsIEEpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIEEpCisgICAgICAgICMgQSBlcXVhbHMgaXRzZWxmLgorICAgICAgICBhc3NlcnQgQSA9PSBBCisgICAgICAgICMgQSBpcyBhIHN1YmNsYXNzIG9mIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQSwgQSkKKworICAgIGRlZiB0ZXN0X2NvbnN0cmFpbmVkX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gVHlwZVZhcignWCcsIGludCkKKworICAgIGRlZiB0ZXN0X3VuaW9uX3VuaXF1ZShzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnKQorICAgICAgICBZID0gVHlwZVZhcignWScpCisgICAgICAgIGFzc2VydCBYICE9IFkKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdID09IFgKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdICE9IFVuaW9uW1gsIFldCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBYXSA9PSBYCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW1hdCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW2ludF0KKyAgICAgICAgYXNzZXJ0IFVuaW9uW1gsIGludF0uX191bmlvbl9wYXJhbXNfXyA9PSAoWCwgaW50KQorICAgICAgICBhc3NlcnQgVW5pb25bWCwgaW50XS5fX3VuaW9uX3NldF9wYXJhbXNfXyA9PSB7WCwgaW50fQorCisgICAgZGVmIHRlc3RfdW5pb25fY29uc3RyYWluZWQoc2VsZik6CisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykKKyAgICAgICAgYXNzZXJ0IFVuaW9uW0EsIHN0cl0gIT0gVW5pb25bQV0KKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUKSwgJ35UJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEtUKSwgJ35LVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihWVCksICd+VlQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQW55U3RyKSwgJ35BbnlTdHInKQorICAgICAgICBUX2NvID0gVHlwZVZhcignVF9jbycsIGNvdmFyaWFudD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVF9jbyksICcrVF9jbycpCisgICAgICAgIFRfY29udHJhID0gVHlwZVZhcignVF9jb250cmEnLCBjb250cmF2YXJpYW50PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUX2NvbnRyYSksICctVF9jb250cmEnKQorCisgICAgZGVmIHRlc3Rfbm9fcmVkZWZpbml0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnKSwgVHlwZVZhcignVCcpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnLCBpbnQsIHN0ciksIFR5cGVWYXIoJ1QnLCBpbnQsIHN0cikpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hc191bmlvbnMoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGVzZSBhcmUgdHJ1ZSAtLSBlYWNoIHR5cGUgdmFyIGlzIGl0cyBvd24gd29ybGQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIGludCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlVmFyKCdUJywgaW50LCBmbG9hdCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIHN0ciwgaW50KSkpCisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgaW50LCBzdHIpCisgICAgICAgIEIgPSBUeXBlVmFyKCdCJywgaW50LCBzdHIsIGZsb2F0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhCLCBBKSkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzc192YXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBWKFR5cGVWYXIoJ1QnKSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzX3Zhcl9pdHNlbGYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFYoVHlwZVZhcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlX3ZhcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ0EnKSgpCisKKyAgICBkZWYgdGVzdF9ib3VuZChzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnLCBib3VuZD1FbXBsb3llZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoRW1wbG95ZWUsIFgpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKE1hbmFnZXIsIFgpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIFgpCisKKyAgICBkZWYgdGVzdF9ib3VuZF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ1gnLCBib3VuZD00MikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHlwZVZhcignWCcsIHN0ciwgZmxvYXQsIGJvdW5kPUVtcGxveWVlKQorCisKK2NsYXNzIFVuaW9uVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh1LCBVbmlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKDQyLCB1KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoMy4xNCwgdSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoaW50LCB1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZmxvYXQsIHUpKQorCisgICAgZGVmIHRlc3RfdW5pb25fYW55KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW0FueSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX29iamVjdChzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW29iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIG9iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltvYmplY3QsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisKKyAgICBkZWYgdGVzdF91bmlvbl9hbnlfb2JqZWN0KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bb2JqZWN0LCBBbnldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorICAgICAgICB1ID0gVW5pb25bQW55LCBvYmplY3RdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorCisgICAgZGVmIHRlc3RfdW5vcmRlcmVkKHNlbGYpOgorICAgICAgICB1MSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHUyID0gVW5pb25bZmxvYXQsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1MSwgdTIpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShNYW5hZ2VyKCksIHUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hbmFnZXIsIHUpKQorCisgICAgZGVmIHRlc3Rfc2VsZl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5pb25bS1QsIFZUXSwgVW5pb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVW5pb24sIFVuaW9uW0tULCBWVF0pKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoTWFuYWdpbmdGb3VuZGVyKCksIHUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hbmFnaW5nRm91bmRlciwgdSkpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfY2xhc3NfZGlzYXBwZWFycyhzZWxmKToKKyAgICAgICAgdCA9IFVuaW9uW0VtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydElzKHQsIEVtcGxveWVlKQorCisgICAgZGVmIHRlc3RfYmFzZV9jbGFzc19kaXNhcHBlYXJzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIE1hbmFnZXIsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBVbmlvbltpbnQsIEVtcGxveWVlXSkKKyAgICAgICAgdSA9IFVuaW9uW01hbmFnZXIsIGludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgVW5pb25baW50LCBFbXBsb3llZV0pCisgICAgICAgIHUgPSBVbmlvbltFbXBsb3llZSwgTWFuYWdlcl0KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh1LCBFbXBsb3llZSkKKworICAgIGRlZiB0ZXN0X3dlaXJkX3N1YmNsYXNzZXMoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltFbXBsb3llZSwgaW50LCBmbG9hdF0KKyAgICAgICAgdiA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHYsIHUpKQorICAgICAgICB3ID0gVW5pb25baW50LCBNYW5hZ2VyXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3LCB1KSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX3VuaW9uKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgdiA9IFVuaW9uW3UsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIFVuaW9uW2ludCwgZmxvYXQsIEVtcGxveWVlXSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihVbmlvbiksICd0eXBpbmcuVW5pb24nKQorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHUpLCAndHlwaW5nLlVuaW9uWyVzLkVtcGxveWVlLCBpbnRdJyAlIF9fbmFtZV9fKQorICAgICAgICB1ID0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHUpLCAndHlwaW5nLlVuaW9uW2ludCwgJXMuRW1wbG95ZWVdJyAlIF9fbmFtZV9fKQorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDKFVuaW9uKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMoVW5pb25baW50LCBzdHJdKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jYW5ub3RfaW5zdGFudGlhdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFVuaW9uKCkKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHUoKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWwoc2VsZik6CisgICAgICAgIG8gPSBPcHRpb25hbFtpbnRdCisgICAgICAgIHUgPSBVbmlvbltpbnQsIE5vbmVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobywgdSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKDQyLCBvKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoTm9uZSwgbykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKDMuMTQsIG8pCisKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVW5pb25bKCldCisKKyAgICBkZWYgdGVzdF9pc3N1YmNsYXNzX3VuaW9uKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0cl0sIFVuaW9uKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCBVbmlvbikKKworICAgIGRlZiB0ZXN0X2lzaW5zdGFuY2VfdW5pb24oc2VsZik6CisgICAgICAgICMgTm90aGluZyBpcyBhbiBpbnN0YW5jZSBvZiBiYXJlIFVuaW9uLgorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIFVuaW9uKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoaW50LCBVbmlvbikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKFVuaW9uW2ludCwgc3RyXSwgVW5pb24pCisKKworY2xhc3MgVHlwZVZhclVuaW9uVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2ltcGxlcihzZWxmKToKKyAgICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBpbnQsIHN0ciwgZmxvYXQpCisgICAgICAgIEIgPSBUeXBlVmFyKCdCJywgaW50LCBzdHIpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEEsIEEpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEIsIEIpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhCLCBBKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBLCBVbmlvbltpbnQsIHN0ciwgZmxvYXRdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVW5pb25baW50LCBzdHIsIGZsb2F0XSwgQSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFVuaW9uW2ludCwgc3RyXSwgQikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQiwgVW5pb25baW50LCBzdHJdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoQSwgQikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFVuaW9uW2ludCwgc3RyLCBmbG9hdF0sIEIpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhBLCBVbmlvbltpbnQsIHN0cl0pCisKKyAgICBkZWYgdGVzdF92YXJfdW5pb25fc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFQsIFVuaW9uW2ludCwgVF0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhLVCwgVW5pb25bS1QsIFZUXSkpCisKKyAgICBkZWYgdGVzdF92YXJfdW5pb24oc2VsZik6CisgICAgICAgIFRVID0gVHlwZVZhcignVFUnLCBVbmlvbltpbnQsIGZsb2F0XSwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCBUVSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIFRVKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKDQyLCBUVSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSgnJywgVFUpCisKKworY2xhc3MgVHVwbGVUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSgoNDIsIDMuMTQsICcnKSwgVHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSgoNDIsIDMuMTQsICcnKSwgVHVwbGVbaW50LCBmbG9hdCwgc3RyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKCg0MiwpLCBUdXBsZVtpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoKDMuMTQsKSwgVHVwbGVbaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKCg0MiwgMy4xNCksIFR1cGxlW2ludCwgZmxvYXQsIHN0cl0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSgoNDIsIDMuMTQsIDEwMCksIFR1cGxlW2ludCwgZmxvYXQsIHN0cl0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSgoNDIsIDMuMTQsIDEwMCksIFR1cGxlW2ludCwgZmxvYXRdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhUdXBsZVtpbnQsIHN0cl0sIFR1cGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHJdLCBUdXBsZVtpbnQsIHN0cl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoaW50LCBUdXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZVtmbG9hdCwgc3RyXSwgVHVwbGVbaW50LCBzdHJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFR1cGxlW2ludCwgc3RyLCBpbnRdLCBUdXBsZVtpbnQsIHN0cl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHJdLCBUdXBsZVtpbnQsIHN0ciwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR1cGxlLCBUdXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZSwgdHVwbGUpKSAgIyBDYW4ndCBoYXZlIGl0IGJvdGggd2F5cy4KKworICAgIGRlZiB0ZXN0X3R1cGxlX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVR1cGxlKHR1cGxlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXlUdXBsZSwgVHVwbGUpKQorCisgICAgZGVmIHRlc3RfdHVwbGVfZWxsaXBzaXMoc2VsZik6CisgICAgICAgIHQgPSBUdXBsZVtpbnQsIC4uLl0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoKCksIHQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCgxLCksIHQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCgxLCAyKSwgdCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoKDEsIDIsIDMpLCB0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoKDMuMTQsKSwgdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKCgxLCAyLCAzLjE0LCksIHQpCisKKyAgICBkZWYgdGVzdF90dXBsZV9lbGxpcHNpc19zdWJjbGFzcyhzZWxmKToKKworICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEMoQik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0JdLCBUdXBsZVtCLCAuLi5dKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtDLCAuLi5dLCBUdXBsZVtCLCAuLi5dKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVHVwbGVbQywgLi4uXSwgVHVwbGVbQl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtDXSwgVHVwbGVbQiwgLi4uXSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZSksICd0eXBpbmcuVHVwbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVHVwbGVbKCldKSwgJ3R5cGluZy5UdXBsZVtdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFR1cGxlW2ludCwgZmxvYXRdKSwgJ3R5cGluZy5UdXBsZVtpbnQsIGZsb2F0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZVtpbnQsIC4uLl0pLCAndHlwaW5nLlR1cGxlW2ludCwgLi4uXScpCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzc3ViY2xhc3MoNDIsIFR1cGxlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc3N1YmNsYXNzKDQyLCBUdXBsZVtpbnRdKQorCisKK2NsYXNzIENhbGxhYmxlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBjID0gQ2FsbGFibGVbW2ludCwgZmxvYXRdLCBzdHJdCisKKyAgICAgICAgZGVmIGZsdWIoYTogaW50LCBiOiBmbG9hdCkgLT4gc3RyOgorICAgICAgICAgICAgcmV0dXJuIHN0cihhICogYikKKworICAgICAgICBkZWYgZmxvYihhOiBpbnQsIGI6IGludCkgLT4gc3RyOgorICAgICAgICAgICAgcmV0dXJuIHN0cihhICogYikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmx1YiwgYykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGZsb2IsIGMpCisKKyAgICBkZWYgdGVzdF9zZWxmX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGUsIENhbGxhYmxlW1tpbnRdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnRdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tFbXBsb3llZV0sIGludF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYWJsZVtbTWFuYWdlcl0sIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW01hbmFnZXJdLCBpbnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW0VtcGxveWVlXSwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW2ludF0sIE1hbmFnZXJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tpbnRdLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tpbnRdLCBFbXBsb3llZV0pKQorCisgICAgZGVmIHRlc3RfZXFfaGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIGludF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHtDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIGludF19KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIHN0cl0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tzdHJdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50LCBpbnRdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbXSwgaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGUpCisKKyAgICBkZWYgdGVzdF93aXRoX25vbmUoc2VsZik6CisgICAgICAgIGMgPSBDYWxsYWJsZVtbTm9uZV0sIE5vbmVdCisKKyAgICAgICAgZGVmIGZsdWIoc2VsZjogTm9uZSkgLT4gTm9uZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgZmxhYihzZWxmOiBBbnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGZsb2Ioc2VsZjogTm9uZSkgLT4gQW55OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmbHViLCBjKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmxhYiwgYykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGZsb2IsIGMpICAjIFRlc3QgY29udHJhdmFyaWFuY2UuCisKKyAgICBkZWYgdGVzdF93aXRoX3N1YmNsYXNzZXMoc2VsZik6CisgICAgICAgIGMgPSBDYWxsYWJsZVtbRW1wbG95ZWUsIE1hbmFnZXJdLCBFbXBsb3llZV0KKworICAgICAgICBkZWYgZmx1YihhOiBFbXBsb3llZSwgYjogRW1wbG95ZWUpIC0+IE1hbmFnZXI6CisgICAgICAgICAgICByZXR1cm4gTWFuYWdlcigpCisKKyAgICAgICAgZGVmIGZsb2IoYTogTWFuYWdlciwgYjogTWFuYWdlcikgLT4gRW1wbG95ZWU6CisgICAgICAgICAgICByZXR1cm4gRW1wbG95ZWUoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmbHViLCBjKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoZmxvYiwgYykKKworICAgIGRlZiB0ZXN0X3dpdGhfZGVmYXVsdF9hcmdzKHNlbGYpOgorICAgICAgICBjID0gQ2FsbGFibGVbW2ludF0sIGludF0KKworICAgICAgICBkZWYgZmx1YihhOiBpbnQsIGI6IGZsb2F0ID0gMy4xNCkgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIGEKKworICAgICAgICBkZWYgZmxhYihhOiBpbnQsICosIGI6IGZsb2F0ID0gMy4xNCkgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIGEKKworICAgICAgICBkZWYgZmxvYihhOiBpbnQgPSA0MikgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIGEKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmx1YiwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZsYWIsIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmbG9iLCBjKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YXJhcmdzKHNlbGYpOgorICAgICAgICBjID0gQ2FsbGFibGVbW2ludF0sIGludF0KKworICAgICAgICBkZWYgZmx1YigqYXJncykgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgZGVmIGZsYWIoKmFyZ3M6IGludCkgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgZGVmIGZsb2IoKmFyZ3M6IGZsb2F0KSAtPiBpbnQ6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmx1YiwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZsYWIsIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShmbG9iLCBjKQorCisgICAgZGVmIHRlc3Rfd2l0aF9tZXRob2Qoc2VsZik6CisKKyAgICAgICAgY2xhc3MgQzoKKworICAgICAgICAgICAgZGVmIGltZXRob2Qoc2VsZiwgYXJnOiBpbnQpIC0+IGludDoKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RfYXJnID0gYXJnCisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZyArIDEKKworICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgY21ldGhvZChjbHMsIGFyZzogaW50KSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgY2xzLmxhc3RfY2xzX2FyZyA9IGFyZworICAgICAgICAgICAgICAgIHJldHVybiBhcmcgKyAxCisKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBzbWV0aG9kKGFyZzogaW50KSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZyArIDEKKworICAgICAgICBjdCA9IENhbGxhYmxlW1tpbnRdLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDKCkuaW1ldGhvZCwgY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDKCkuY21ldGhvZCwgY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLmNtZXRob2QsIGN0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQygpLnNtZXRob2QsIGN0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQy5zbWV0aG9kLCBjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEMuaW1ldGhvZCwgQ2FsbGFibGVbW0FueSwgaW50XSwgaW50XSkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorCisgICAgICAgICAgICBjbGFzcyBDKENhbGxhYmxlKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorCisgICAgICAgICAgICBjbGFzcyBDKENhbGxhYmxlW1tpbnRdLCBpbnRdKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jYW5ub3RfaW5zdGFudGlhdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIENhbGxhYmxlKCkKKyAgICAgICAgYyA9IENhbGxhYmxlW1tpbnRdLCBzdHJdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMoKQorCisgICAgZGVmIHRlc3RfdmFyYXJncyhzZWxmKToKKyAgICAgICAgY3QgPSBDYWxsYWJsZVsuLi4sIGludF0KKworICAgICAgICBkZWYgZm9vKGEsIGIpIC0+IGludDoKKyAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIGRlZiBiYXIoYT00MikgLT4gaW50OgorICAgICAgICAgICAgcmV0dXJuIGEKKworICAgICAgICBkZWYgYmF6KCosIHgsIHksIHopIC0+IGludDoKKyAgICAgICAgICAgIHJldHVybiAxMDAKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZm9vLCBjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJhciwgY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiYXosIGN0KQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgY3QwID0gQ2FsbGFibGVbW10sIGJvb2xdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjdDApLCAndHlwaW5nLkNhbGxhYmxlW1tdLCBib29sXScpCisgICAgICAgIGN0MiA9IENhbGxhYmxlW1tzdHIsIGZsb2F0XSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY3QyKSwgJ3R5cGluZy5DYWxsYWJsZVtbc3RyLCBmbG9hdF0sIGludF0nKQorICAgICAgICBjdHYgPSBDYWxsYWJsZVsuLi4sIHN0cl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGN0diksICd0eXBpbmcuQ2FsbGFibGVbLi4uLCBzdHJdJykKKworCitYSyA9IFR5cGVWYXIoJ1hLJywgc3RyLCBieXRlcykKK1hWID0gVHlwZVZhcignWFYnKQorCisKK2NsYXNzIFNpbXBsZU1hcHBpbmcoR2VuZXJpY1tYSywgWFZdKToKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IFhLKSAtPiBYVjoKKyAgICAgICAgLi4uCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBYSywgdmFsdWU6IFhWKToKKyAgICAgICAgLi4uCisKKyAgICBkZWYgZ2V0KHNlbGYsIGtleTogWEssIGRlZmF1bHQ6IFhWID0gTm9uZSkgLT4gWFY6CisgICAgICAgIC4uLgorCisKK2NsYXNzIE15U2ltcGxlTWFwcGluZyhTaW1wbGVNYXBwaW5nKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zdG9yZSA9IHt9CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBzdHIpOgorICAgICAgICByZXR1cm4gc2VsZi5zdG9yZVtrZXldCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBzdHIsIHZhbHVlKToKKyAgICAgICAgc2VsZi5zdG9yZVtrZXldID0gdmFsdWUKKworICAgIGRlZiBnZXQoc2VsZiwga2V5OiBzdHIsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN0b3JlW2tleV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKworCitjbGFzcyBQcm90b2NvbFRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2ludChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuU3VwcG9ydHNJbnQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0ludCkKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2Zsb2F0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgdHlwaW5nLlN1cHBvcnRzRmxvYXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0Zsb2F0KQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfY29tcGxleChzZWxmKToKKworICAgICAgICAjIE5vdGU6IGNvbXBsZXggaXRzZWxmIGRvZXNuJ3QgaGF2ZSBfX2NvbXBsZXhfXy4KKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMGoKKworICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhDLCB0eXBpbmcuU3VwcG9ydHNDb21wbGV4KQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNDb21wbGV4KQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfYnl0ZXMoc2VsZik6CisKKyAgICAgICAgIyBOb3RlOiBieXRlcyBpdHNlbGYgZG9lc24ndCBoYXZlIF9fYnl0ZXNfXy4KKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIGRlZiBfX2J5dGVzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEIsIHR5cGluZy5TdXBwb3J0c0J5dGVzKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNCeXRlcykKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2FicyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIHR5cGluZy5TdXBwb3J0c0FicykKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuU3VwcG9ydHNBYnMpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0FicykKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX3JvdW5kKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgdHlwaW5nLlN1cHBvcnRzUm91bmQpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgdHlwaW5nLlN1cHBvcnRzUm91bmQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c1JvdW5kKQorCisgICAgZGVmIHRlc3RfcmV2ZXJzaWJsZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLlJldmVyc2libGUpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIHR5cGluZy5SZXZlcnNpYmxlKQorCisKK2NsYXNzIEdlbmVyaWNUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIFggPSBTaW1wbGVNYXBwaW5nW3N0ciwgQW55XQorICAgICAgICBZID0gU2ltcGxlTWFwcGluZ1tYSywgc3RyXQorICAgICAgICBYW3N0ciwgc3RyXQorICAgICAgICBZW3N0ciwgc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYW2ludCwgc3RyXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBZW3N0ciwgYnl0ZXNdCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoU2ltcGxlTWFwcGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgX19uYW1lX18gKyAnLicgKyAnU2ltcGxlTWFwcGluZ1t+WEssIH5YVl0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoTXlTaW1wbGVNYXBwaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBfX25hbWVfXyArICcuJyArICdNeVNpbXBsZU1hcHBpbmdbflhLLCB+WFZdJykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQiA9IFNpbXBsZU1hcHBpbmdbWEssIEFueV0KKworICAgICAgICAgICAgY2xhc3MgQyhHZW5lcmljW0JdKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9yZXByXzIoc2VsZik6CisgICAgICAgIFBZMzIgPSBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAzKQorCisgICAgICAgIGNsYXNzIEMoR2VuZXJpY1tUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IEMuX19tb2R1bGVfXyA9PSBfX25hbWVfXworICAgICAgICBpZiBub3QgUFkzMjoKKyAgICAgICAgICAgIGFzc2VydCBDLl9fcXVhbG5hbWVfXyA9PSAnR2VuZXJpY1Rlc3RzLnRlc3RfcmVwcl8yLjxsb2NhbHM+LkMnCisgICAgICAgIGFzc2VydCByZXByKEMpLnNwbGl0KCcuJylbLTFdID09ICdDW35UXScKKyAgICAgICAgWCA9IENbaW50XQorICAgICAgICBhc3NlcnQgWC5fX21vZHVsZV9fID09IF9fbmFtZV9fCisgICAgICAgIGlmIG5vdCBQWTMyOgorICAgICAgICAgICAgYXNzZXJ0IFguX19xdWFsbmFtZV9fID09ICdDJworICAgICAgICBhc3NlcnQgcmVwcihYKS5zcGxpdCgnLicpWy0xXSA9PSAnQ1tpbnRdJworCisgICAgICAgIGNsYXNzIFkoQ1tpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgWS5fX21vZHVsZV9fID09IF9fbmFtZV9fCisgICAgICAgIGlmIG5vdCBQWTMyOgorICAgICAgICAgICAgYXNzZXJ0IFkuX19xdWFsbmFtZV9fID09ICdHZW5lcmljVGVzdHMudGVzdF9yZXByXzIuPGxvY2Fscz4uWScKKyAgICAgICAgYXNzZXJ0IHJlcHIoWSkuc3BsaXQoJy4nKVstMV0gPT0gJ1lbaW50XScKKworICAgIGRlZiB0ZXN0X2VxXzEoc2VsZik6CisgICAgICAgIGFzc2VydCBHZW5lcmljID09IEdlbmVyaWMKKyAgICAgICAgYXNzZXJ0IEdlbmVyaWNbVF0gPT0gR2VuZXJpY1tUXQorICAgICAgICBhc3NlcnQgR2VuZXJpY1tLVF0gIT0gR2VuZXJpY1tWVF0KKworICAgIGRlZiB0ZXN0X2VxXzIoc2VsZik6CisKKyAgICAgICAgY2xhc3MgQShHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBBID09IEEKKyAgICAgICAgYXNzZXJ0IEEgIT0gQgorICAgICAgICBhc3NlcnQgQVtUXSA9PSBBW1RdCisgICAgICAgIGFzc2VydCBBW1RdICE9IEJbVF0KKworICAgIGRlZiB0ZXN0X211bHRpcGxlX2luaGVyaXRhbmNlKHNlbGYpOgorCisgICAgICAgIGNsYXNzIEEoR2VuZXJpY1tULCBWVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEIoR2VuZXJpY1tLVCwgVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEMoQSwgR2VuZXJpY1tLVCwgVlRdLCBCKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgQy5fX3BhcmFtZXRlcnNfXyA9PSAoVCwgVlQsIEtUKQorCisgICAgZGVmIHRlc3RfbmVzdGVkKHNlbGYpOgorCisgICAgICAgIGNsYXNzIEcoR2VuZXJpYyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgVmlzaXRvcihHW1RdKToKKworICAgICAgICAgICAgYSA9IE5vbmUKKworICAgICAgICAgICAgZGVmIHNldChzZWxmLCBhOiBUKToKKyAgICAgICAgICAgICAgICBzZWxmLmEgPSBhCisKKyAgICAgICAgICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYQorCisgICAgICAgICAgICBkZWYgdmlzaXQoc2VsZikgLT4gVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hCisKKyAgICAgICAgViA9IFZpc2l0b3JbdHlwaW5nLkxpc3RbaW50XV0KKworICAgICAgICBjbGFzcyBJbnRMaXN0VmlzaXRvcihWKToKKworICAgICAgICAgICAgZGVmIGFwcGVuZChzZWxmLCB4OiBpbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYS5hcHBlbmQoeCkKKworICAgICAgICBhID0gSW50TGlzdFZpc2l0b3IoKQorICAgICAgICBhLnNldChbXSkKKyAgICAgICAgYS5hcHBlbmQoMSkKKyAgICAgICAgYS5hcHBlbmQoNDIpCisgICAgICAgIGFzc2VydCBhLmdldCgpID09IFsxLCA0Ml0KKworICAgIGRlZiB0ZXN0X3R5cGVfZXJhc3VyZShzZWxmKToKKyAgICAgICAgVCA9IFR5cGVWYXIoJ1QnKQorCisgICAgICAgIGNsYXNzIE5vZGUoR2VuZXJpY1tUXSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbGFiZWw6IFQsIGxlZnQ6ICdOb2RlW1RdJyA9IE5vbmUsIHJpZ2h0OiAnTm9kZVtUXScgPSBOb25lKToKKyAgICAgICAgICAgICAgICBzZWxmLmxhYmVsID0gbGFiZWwgICMgdHlwZTogVAorICAgICAgICAgICAgICAgIHNlbGYubGVmdCA9IGxlZnQgICMgdHlwZTogT3B0aW9uYWxbTm9kZVtUXV0KKyAgICAgICAgICAgICAgICBzZWxmLnJpZ2h0ID0gcmlnaHQgICMgdHlwZTogT3B0aW9uYWxbTm9kZVtUXV0KKworICAgICAgICBkZWYgZm9vKHg6IFQpOgorICAgICAgICAgICAgYSA9IE5vZGUoeCkKKyAgICAgICAgICAgIGIgPSBOb2RlW1RdKHgpCisgICAgICAgICAgICBjID0gTm9kZVtBbnldKHgpCisgICAgICAgICAgICBhc3NlcnQgdHlwZShhKSBpcyBOb2RlCisgICAgICAgICAgICBhc3NlcnQgdHlwZShiKSBpcyBOb2RlCisgICAgICAgICAgICBhc3NlcnQgdHlwZShjKSBpcyBOb2RlCisKKyAgICAgICAgZm9vKDQyKQorCisKK2NsYXNzIFZhcmlhbmNlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW52YXJpYW5jZShzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIG9mIGludmFyaWFuY2UsIExpc3Rbc3ViY2xhc3Mgb2YgWF0gaXMgbm90IGEgc3ViY2xhc3MKKyAgICAgICAgIyBvZiBMaXN0W1hdLCBhbmQgZGl0dG8gZm9yIE11dGFibGVTZXF1ZW5jZS4KKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5MaXN0W01hbmFnZXJdLCB0eXBpbmcuTGlzdFtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW01hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk11dGFibGVTZXF1ZW5jZVtFbXBsb3llZV0pCisgICAgICAgICMgSXQncyBzdGlsbCByZWZsZXhpdmUuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5MaXN0W0VtcGxveWVlXSwgdHlwaW5nLkxpc3RbRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk11dGFibGVTZXF1ZW5jZVtFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9jb3ZhcmlhbmNlX3R1cGxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIGNvdmFyaWFjZSBmb3IgVHVwbGUgKHdoaWNoIGFyZSByZWFsbHkgc3BlY2lhbCBjYXNlcykuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFR1cGxlW01hbmFnZXJdLCBUdXBsZVtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZV0sIFR1cGxlW01hbmFnZXJdKQorICAgICAgICAjIEFuZCBwYWlyd2lzZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlciwgTWFuYWdlcl0sIFR1cGxlW0VtcGxveWVlLCBFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZSwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHVwbGVbTWFuYWdlciwgRW1wbG95ZWVdKQorICAgICAgICAjIEFuZCB1c2luZyBlbGxpcHNpcy4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlciwgLi4uXSwgVHVwbGVbRW1wbG95ZWUsIC4uLl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZSwgLi4uXSwgVHVwbGVbTWFuYWdlciwgLi4uXSkKKworICAgIGRlZiB0ZXN0X2NvdmFyaWFuY2Vfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgY292YXJpYW5jZSBmb3IgU2VxdWVuY2UgKHdoaWNoIGlzIGp1c3QgYSBnZW5lcmljIGNsYXNzCisgICAgICAgICMgZm9yIHRoaXMgcHVycG9zZSwgYnV0IHVzaW5nIGEgY292YXJpYW50IHR5cGUgdmFyaWFibGUpLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuU2VxdWVuY2VbTWFuYWdlcl0sIHR5cGluZy5TZXF1ZW5jZVtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuU2VxdWVuY2VbRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLlNlcXVlbmNlW01hbmFnZXJdKQorCisgICAgZGVmIHRlc3RfY292YXJpYW5jZV9tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIERpdHRvIGZvciBNYXBwaW5nIChhIGdlbmVyaWMgY2xhc3Mgd2l0aCB0d28gcGFyYW1ldGVycykuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW0VtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTWFwcGluZ1tFbXBsb3llZSwgRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgTWFuYWdlcl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuTWFwcGluZ1tNYW5hZ2VyLCBFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTWFwcGluZ1tNYW5hZ2VyLCBNYW5hZ2VyXSkKKworCitjbGFzcyBDYXN0VGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBhc3NlcnQgY2FzdChpbnQsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChmbG9hdCwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCB0eXBlKGNhc3QoZmxvYXQsIDQyKSkgaXMgaW50CisgICAgICAgIGFzc2VydCBjYXN0KEFueSwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCBjYXN0KGxpc3QsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChVbmlvbltzdHIsIGZsb2F0XSwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCBjYXN0KEFueVN0ciwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCBjYXN0KE5vbmUsIDQyKSA9PSA0MgorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIEJvZ3VzIGNhbGxzIGFyZSBub3QgZXhwZWN0ZWQgdG8gZmFpbC4KKyAgICAgICAgY2FzdCg0MiwgNDIpCisgICAgICAgIGNhc3QoJ2hlbGxvJywgNDIpCisKKworY2xhc3MgRm9yd2FyZFJlZlRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKworICAgICAgICBjbGFzcyBOb2RlKEdlbmVyaWNbVF0pOgorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbGFiZWw6IFQpOgorICAgICAgICAgICAgICAgIHNlbGYubGFiZWwgPSBsYWJlbAorICAgICAgICAgICAgICAgIHNlbGYubGVmdCA9IHNlbGYucmlnaHQgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBhZGRfYm90aChzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICdPcHRpb25hbFtOb2RlW1RdXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICdOb2RlW1RdJyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3R1ZmY6IGludCA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmxhaD1Ob25lKToKKyAgICAgICAgICAgICAgICBzZWxmLmxlZnQgPSBsZWZ0CisgICAgICAgICAgICAgICAgc2VsZi5yaWdodCA9IHJpZ2h0CisKKyAgICAgICAgICAgIGRlZiBhZGRfbGVmdChzZWxmLCBub2RlOiBPcHRpb25hbFsnTm9kZVtUXSddKToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9ib3RoKG5vZGUsIE5vbmUpCisKKyAgICAgICAgICAgIGRlZiBhZGRfcmlnaHQoc2VsZiwgbm9kZTogJ05vZGVbVF0nID0gTm9uZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRfYm90aChOb25lLCBub2RlKQorCisgICAgICAgIHQgPSBOb2RlW2ludF0KKyAgICAgICAgYm90aF9oaW50cyA9IGdldF90eXBlX2hpbnRzKHQuYWRkX2JvdGgsIGdsb2JhbHMoKSwgbG9jYWxzKCkpCisgICAgICAgIGFzc2VydCBib3RoX2hpbnRzWydsZWZ0J10gPT0gYm90aF9oaW50c1sncmlnaHQnXSA9PSBPcHRpb25hbFtOb2RlW1RdXQorICAgICAgICBhc3NlcnQgYm90aF9oaW50c1snc3R1ZmYnXSA9PSBPcHRpb25hbFtpbnRdCisgICAgICAgIGFzc2VydCAnYmxhaCcgbm90IGluIGJvdGhfaGludHMKKworICAgICAgICBsZWZ0X2hpbnRzID0gZ2V0X3R5cGVfaGludHModC5hZGRfbGVmdCwgZ2xvYmFscygpLCBsb2NhbHMoKSkKKyAgICAgICAgYXNzZXJ0IGxlZnRfaGludHNbJ25vZGUnXSA9PSBPcHRpb25hbFtOb2RlW1RdXQorCisgICAgICAgIHJpZ2h0X2hpbnRzID0gZ2V0X3R5cGVfaGludHModC5hZGRfcmlnaHQsIGdsb2JhbHMoKSwgbG9jYWxzKCkpCisgICAgICAgIGFzc2VydCByaWdodF9oaW50c1snbm9kZSddID09IE9wdGlvbmFsW05vZGVbVF1dCisKKyAgICBkZWYgdGVzdF91bmlvbl9mb3J3YXJkKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogVW5pb25bJ1QnXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IFVuaW9uW1RdfSkKKworICAgIGRlZiB0ZXN0X3R1cGxlX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBUdXBsZVsnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogVHVwbGVbVF19KQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfZm9yd2FyZChzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IENhbGxhYmxlW1snVCddLCAnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogQ2FsbGFibGVbW1RdLCBUXX0pCisKKyAgICBkZWYgdGVzdF9zeW50YXhfZXJyb3Ioc2VsZik6CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBHZW5lcmljWycvVCddCisKKyAgICBkZWYgdGVzdF9kZWxheWVkX3N5bnRheF9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6ICdOb2RlW1QnKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGdldF90eXBlX2hpbnRzKGZvbykKKworICAgIGRlZiB0ZXN0X3R5cGVfZXJyb3Ioc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBUdXBsZVsnNDInXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vKQorCisgICAgZGVmIHRlc3RfbmFtZV9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6ICdOb29kZVtUXScpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGdldF90eXBlX2hpbnRzKGZvbywgbG9jYWxzKCkpCisKKyAgICBkZWYgdGVzdF9ub190eXBlX2NoZWNrKHNlbGYpOgorCisgICAgICAgIEBub190eXBlX2NoZWNrCisgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRoID0gZ2V0X3R5cGVfaGludHMoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoLCB7fSkKKworICAgIGRlZiB0ZXN0X25vX3R5cGVfY2hlY2tfY2xhc3Moc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2sKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjdGggPSBnZXRfdHlwZV9oaW50cyhDLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdGgsIHt9KQorICAgICAgICBpdGggPSBnZXRfdHlwZV9oaW50cyhDKCkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0aCwge30pCisKKyAgICBkZWYgdGVzdF9tZXRhX25vX3R5cGVfY2hlY2soc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2tfZGVjb3JhdG9yCisgICAgICAgIGRlZiBtYWdpY19kZWNvcmF0b3IoZGVjbyk6CisgICAgICAgICAgICByZXR1cm4gZGVjbworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWNfZGVjb3JhdG9yLl9fbmFtZV9fLCAnbWFnaWNfZGVjb3JhdG9yJykKKworICAgICAgICBAbWFnaWNfZGVjb3JhdG9yCisgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBtYWdpY19kZWNvcmF0b3IKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX25hbWVfXywgJ2ZvbycpCisgICAgICAgIHRoID0gZ2V0X3R5cGVfaGludHMoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoLCB7fSkKKyAgICAgICAgY3RoID0gZ2V0X3R5cGVfaGludHMoQy5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3RoLCB7fSkKKyAgICAgICAgaXRoID0gZ2V0X3R5cGVfaGludHMoQygpLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGgsIHt9KQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9nbG9iYWxzKHNlbGYpOgorICAgICAgICBjb2RlID0gKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICIgICAgZGVmIGZvbyhzZWxmLCBhOiAnQycpIC0+ICdEJzogcGFzc1xuIgorICAgICAgICAgICAgICAgICJjbGFzcyBEOlxuIgorICAgICAgICAgICAgICAgICIgICAgZGVmIGJhcihzZWxmLCBiOiAnRCcpIC0+IEM6IHBhc3NcbiIKKyAgICAgICAgICAgICAgICApCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgaGludHMgPSBnZXRfdHlwZV9oaW50cyhuc1snQyddLmZvbykKKyAgICAgICAgYXNzZXJ0IGhpbnRzID09IHsnYSc6IG5zWydDJ10sICdyZXR1cm4nOiBuc1snRCddfQorCisKK2NsYXNzIE92ZXJsb2FkVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3ZlcmxvYWRfZXhpc3RzKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgb3ZlcmxvYWQKKworICAgIGRlZiB0ZXN0X292ZXJsb2FkX2ZhaWxzKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgb3ZlcmxvYWQKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBAb3ZlcmxvYWQKKyAgICAgICAgICAgIGRlZiBibGFoKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisKK2NsYXNzIENvbGxlY3Rpb25zQWJjVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaGFzaGFibGUoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuSGFzaGFibGUpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkhhc2hhYmxlKQorCisgICAgZGVmIHRlc3RfaXRlcmFibGUoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGVbaW50XSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuSXRlcmFibGUpCisKKyAgICBkZWYgdGVzdF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgaXQgPSBpdGVyKFtdKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgdHlwaW5nLkl0ZXJhdG9yKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgdHlwaW5nLkl0ZXJhdG9yW2ludF0pCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkl0ZXJhdG9yKQorCisgICAgZGVmIHRlc3Rfc2l6ZWQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuU2l6ZWQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLlNpemVkKQorCisgICAgZGVmIHRlc3RfY29udGFpbmVyKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkNvbnRhaW5lcikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuQ29udGFpbmVyKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RzZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNldCgpLCB0eXBpbmcuQWJzdHJhY3RTZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkFic3RyYWN0U2V0KQorCisgICAgZGVmIHRlc3RfbXV0YWJsZXNldChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2V0KCksIHR5cGluZy5NdXRhYmxlU2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoZnJvemVuc2V0KCksIHR5cGluZy5NdXRhYmxlU2V0KQorCisgICAgZGVmIHRlc3RfbWFwcGluZyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoe30sIHR5cGluZy5NYXBwaW5nKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5NYXBwaW5nKQorCisgICAgZGVmIHRlc3RfbXV0YWJsZW1hcHBpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCB0eXBpbmcuTXV0YWJsZU1hcHBpbmcpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLk11dGFibGVNYXBwaW5nKQorCisgICAgZGVmIHRlc3Rfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuU2VxdWVuY2UpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLlNlcXVlbmNlKQorCisgICAgZGVmIHRlc3RfbXV0YWJsZXNlcXVlbmNlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLk11dGFibGVTZXF1ZW5jZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKCgpLCB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlKQorCisgICAgZGVmIHRlc3RfYnl0ZXN0cmluZyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYicnLCB0eXBpbmcuQnl0ZVN0cmluZykKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYnl0ZWFycmF5KGInJyksIHR5cGluZy5CeXRlU3RyaW5nKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLkxpc3QpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuTGlzdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKCgpLCB0eXBpbmcuTGlzdCkKKyAgICAgICAgdCA9IHR5cGluZy5MaXN0W2ludF0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFs0Ml0sIHQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShbJyddLCB0KQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhzZXQsIHR5cGluZy5TZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhmcm96ZW5zZXQsIHR5cGluZy5TZXQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNldCgpLCB0eXBpbmcuU2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoe30sIHR5cGluZy5TZXQpCisgICAgICAgIHQgPSB0eXBpbmcuU2V0W2ludF0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2V0KCksIHQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHs0Mn0sIHQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSh7Jyd9LCB0KQorCisgICAgZGVmIHRlc3RfZnJvemVuc2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmcm96ZW5zZXQsIHR5cGluZy5Gcm96ZW5TZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzZXQsIHR5cGluZy5Gcm96ZW5TZXQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZyb3plbnNldCgpLCB0eXBpbmcuRnJvemVuU2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoe30sIHR5cGluZy5Gcm96ZW5TZXQpCisgICAgICAgIHQgPSB0eXBpbmcuRnJvemVuU2V0W2ludF0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZnJvemVuc2V0KCksIHQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZyb3plbnNldCh7NDJ9KSwgdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGZyb3plbnNldCh7Jyd9KSwgdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKHs0Mn0sIHQpCisKKyAgICBkZWYgdGVzdF9tYXBwaW5nX3ZpZXdzKHNlbGYpOgorICAgICAgICAjIFRPRE86IFRoZXNlIHRlc3RzIGFyZSBraW5kIG9mIGxhbWUuCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LmtleXMoKSwgdHlwaW5nLktleXNWaWV3KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh7fS5pdGVtcygpLCB0eXBpbmcuSXRlbXNWaWV3KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh7fS52YWx1ZXMoKSwgdHlwaW5nLlZhbHVlc1ZpZXcpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhkaWN0LCB0eXBpbmcuRGljdCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoe30sIHR5cGluZy5EaWN0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoW10sIHR5cGluZy5EaWN0KQorICAgICAgICB0ID0gdHlwaW5nLkRpY3RbaW50LCBzdHJdCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCB0KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh7NDI6ICcnfSwgdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKHs0MjogNDJ9LCB0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoeycnOiA0Mn0sIHQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSh7Jyc6ICcnfSwgdCkKKworICAgIGRlZiB0ZXN0X25vX2xpc3RfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkxpc3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuTGlzdFtUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5MaXN0W2ludF0oKQorCisgICAgZGVmIHRlc3RfbGlzdF9zdWJjbGFzc19pbnN0YW50aWF0aW9uKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE15TGlzdCh0eXBpbmcuTGlzdFtpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhID0gTXlMaXN0KCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgTXlMaXN0KQorCisgICAgZGVmIHRlc3Rfbm9fZGljdF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRGljdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5EaWN0W0tULCBWVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRGljdFtzdHIsIGludF0oKQorCisgICAgZGVmIHRlc3RfZGljdF9zdWJjbGFzc19pbnN0YW50aWF0aW9uKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE15RGljdCh0eXBpbmcuRGljdFtzdHIsIGludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQgPSBNeURpY3QoKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkLCBNeURpY3QpCisKKyAgICBkZWYgdGVzdF9ub19zZXRfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLlNldCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5TZXRbVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuU2V0W2ludF0oKQorCisgICAgZGVmIHRlc3Rfc2V0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlTZXQodHlwaW5nLlNldFtpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkID0gTXlTZXQoKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkLCBNeVNldCkKKworICAgIGRlZiB0ZXN0X25vX2Zyb3plbnNldF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRnJvemVuU2V0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkZyb3plblNldFtUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5Gcm96ZW5TZXRbaW50XSgpCisKKyAgICBkZWYgdGVzdF9mcm96ZW5zZXRfc3ViY2xhc3NfaW5zdGFudGlhdGlvbihzZWxmKToKKworICAgICAgICBjbGFzcyBNeUZyb3plblNldCh0eXBpbmcuRnJvemVuU2V0W2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQgPSBNeUZyb3plblNldCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIE15RnJvemVuU2V0KQorCisgICAgZGVmIHRlc3Rfbm9fdHVwbGVfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHVwbGUoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUdXBsZVtUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR1cGxlW2ludF0oKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCA0MgorICAgICAgICBnID0gZm9vKCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShnKSwgdHlwaW5nLkdlbmVyYXRvcikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZywgdHlwaW5nLkdlbmVyYXRvcikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGZvbywgdHlwaW5nLkdlbmVyYXRvcikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLkdlbmVyYXRvcltNYW5hZ2VyLCBFbXBsb3llZSwgTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbRW1wbG95ZWUsIE1hbmFnZXIsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5HZW5lcmF0b3JbTWFuYWdlciwgTWFuYWdlciwgTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yW0VtcGxveWVlLCBFbXBsb3llZSwgRW1wbG95ZWVdKQorCisgICAgZGVmIHRlc3Rfbm9fZ2VuZXJhdG9yX2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3IoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yW1QsIFQsIFRdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcltpbnQsIGludCwgaW50XSgpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKworICAgICAgICBjbGFzcyBNTUEodHlwaW5nLk11dGFibGVNYXBwaW5nKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6ICAjIEl0J3MgYWJzdHJhY3QKKyAgICAgICAgICAgIE1NQSgpCisKKyAgICAgICAgY2xhc3MgTU1DKE1NQSk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGFzc2VydCBsZW4oTU1DKCkpID09IDAKKworICAgICAgICBjbGFzcyBNTUIodHlwaW5nLk11dGFibGVNYXBwaW5nW0tULCBWVF0pOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBhc3NlcnQgbGVuKE1NQigpKSA9PSAwCisgICAgICAgIGFzc2VydCBsZW4oTU1CW3N0ciwgc3RyXSgpKSA9PSAwCisgICAgICAgIGFzc2VydCBsZW4oTU1CW0tULCBWVF0oKSkgPT0gMAorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX2RpY3Qoc2VsZik6CisgICAgICAgIEQgPSB0eXBpbmcuRGljdFtpbnQsICdEJ10gICMgVXNlcyBhIF9Gb3J3YXJkUmVmCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCBEKSAgIyBFYXN5CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHswOiB7fX0sIEQpICAjIFRvdWNoZXMgX0ZvcndhcmRSZWYKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoezA6IHswOiB7fX19LCBEKSAgIyBFdGMuLi4KKworCitjbGFzcyBOYW1lZFR1cGxlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBFbXAgPSBOYW1lZFR1cGxlKCdFbXAnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhFbXAsIHR1cGxlKQorICAgICAgICBqb2UgPSBFbXAoJ0pvZScsIDQyKQorICAgICAgICBqaW0gPSBFbXAobmFtZT0nSmltJywgaWQ9MSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoam9lLCBFbXApCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGpvZSwgdHVwbGUpCisgICAgICAgIGFzc2VydCBqb2UubmFtZSA9PSAnSm9lJworICAgICAgICBhc3NlcnQgam9lLmlkID09IDQyCisgICAgICAgIGFzc2VydCBqaW0ubmFtZSA9PSAnSmltJworICAgICAgICBhc3NlcnQgamltLmlkID09IDEKKyAgICAgICAgYXNzZXJ0IEVtcC5fX25hbWVfXyA9PSAnRW1wJworICAgICAgICBhc3NlcnQgRW1wLl9maWVsZHMgPT0gKCduYW1lJywgJ2lkJykKKyAgICAgICAgYXNzZXJ0IEVtcC5fZmllbGRfdHlwZXMgPT0gZGljdChuYW1lPXN0ciwgaWQ9aW50KQorCisKK2NsYXNzIElPVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW8oc2VsZik6CisKKyAgICAgICAgZGVmIHN0dWZmKGE6IElPKSAtPiBBbnlTdHI6CisgICAgICAgICAgICByZXR1cm4gYS5yZWFkbGluZSgpCisKKyAgICAgICAgYSA9IHN0dWZmLl9fYW5ub3RhdGlvbnNfX1snYSddCisgICAgICAgIGFzc2VydCBhLl9fcGFyYW1ldGVyc19fID09IChBbnlTdHIsKQorCisgICAgZGVmIHRlc3RfdGV4dGlvKHNlbGYpOgorCisgICAgICAgIGRlZiBzdHVmZihhOiBUZXh0SU8pIC0+IHN0cjoKKyAgICAgICAgICAgIHJldHVybiBhLnJlYWRsaW5lKCkKKworICAgICAgICBhID0gc3R1ZmYuX19hbm5vdGF0aW9uc19fWydhJ10KKyAgICAgICAgYXNzZXJ0IGEuX19wYXJhbWV0ZXJzX18gPT0gKHN0ciwpCisKKyAgICBkZWYgdGVzdF9iaW5hcnlpbyhzZWxmKToKKworICAgICAgICBkZWYgc3R1ZmYoYTogQmluYXJ5SU8pIC0+IGJ5dGVzOgorICAgICAgICAgICAgcmV0dXJuIGEucmVhZGxpbmUoKQorCisgICAgICAgIGEgPSBzdHVmZi5fX2Fubm90YXRpb25zX19bJ2EnXQorICAgICAgICBhc3NlcnQgYS5fX3BhcmFtZXRlcnNfXyA9PSAoYnl0ZXMsKQorCisgICAgZGVmIHRlc3RfaW9fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZy5pbyBpbXBvcnQgSU8sIFRleHRJTywgQmluYXJ5SU8sIF9fYWxsX18sIF9fbmFtZV9fCisgICAgICAgIGFzc2VydCBJTyBpcyB0eXBpbmcuSU8KKyAgICAgICAgYXNzZXJ0IFRleHRJTyBpcyB0eXBpbmcuVGV4dElPCisgICAgICAgIGFzc2VydCBCaW5hcnlJTyBpcyB0eXBpbmcuQmluYXJ5SU8KKyAgICAgICAgYXNzZXJ0IHNldChfX2FsbF9fKSA9PSBzZXQoWydJTycsICdUZXh0SU8nLCAnQmluYXJ5SU8nXSkKKyAgICAgICAgYXNzZXJ0IF9fbmFtZV9fID09ICd0eXBpbmcuaW8nCisKKworY2xhc3MgUkVUZXN0cyhUZXN0Q2FzZSk6CisgICAgIyBNdWNoIG9mIHRoaXMgaXMgcmVhbGx5IHRlc3RpbmcgX1R5cGVBbGlhcy4KKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnW2Etel0rJywgcmUuSSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MocGF0Ll9fY2xhc3NfXywgUGF0dGVybikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGF0LCBQYXR0ZXJuW3N0cl0pCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShwYXQsIFBhdHRlcm5bYnl0ZXNdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKHBhdCksIFBhdHRlcm4pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUocGF0KSwgUGF0dGVybltzdHJdKQorCisgICAgICAgIG1hdCA9IHBhdC5zZWFyY2goJzEyMzQ1YWJjZGUuLi4uLicpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKG1hdC5fX2NsYXNzX18sIE1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhtYXQuX19jbGFzc19fLCBNYXRjaFtzdHJdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhtYXQuX19jbGFzc19fLCBNYXRjaFtieXRlc10pICAjIFNhZCBidXQgdHJ1ZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShtYXQpLCBNYXRjaCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShtYXQpLCBNYXRjaFtzdHJdKQorCisgICAgICAgIHAgPSBQYXR0ZXJuW1VuaW9uW3N0ciwgYnl0ZXNdXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXQsIHApCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFBhdHRlcm5bc3RyXSwgUGF0dGVybikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoUGF0dGVybltzdHJdLCBwKQorCisgICAgICAgIG0gPSBNYXRjaFtVbmlvbltieXRlcywgc3RyXV0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWF0LCBtKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhNYXRjaFtieXRlc10sIE1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhNYXRjaFtieXRlc10sIG0pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgRG9lc24ndCBmaXQgQW55U3RyLgorICAgICAgICAgICAgUGF0dGVybltpbnRdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgQ2FuJ3QgY2hhbmdlIHR5cGUgdmFycz8KKyAgICAgICAgICAgIE1hdGNoW1RdCisgICAgICAgIG0gPSBNYXRjaFtVbmlvbltzdHIsIGJ5dGVzXV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBUb28gY29tcGxpY2F0ZWQ/CisgICAgICAgICAgICBtW3N0cl0KKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGFzc2VydCByZXByKFBhdHRlcm4pID09ICdQYXR0ZXJuW35BbnlTdHJdJworICAgICAgICBhc3NlcnQgcmVwcihQYXR0ZXJuW3N0cl0pID09ICdQYXR0ZXJuW3N0cl0nCisgICAgICAgIGFzc2VydCByZXByKFBhdHRlcm5bYnl0ZXNdKSA9PSAnUGF0dGVybltieXRlc10nCisgICAgICAgIGFzc2VydCByZXByKE1hdGNoKSA9PSAnTWF0Y2hbfkFueVN0cl0nCisgICAgICAgIGFzc2VydCByZXByKE1hdGNoW3N0cl0pID09ICdNYXRjaFtzdHJdJworICAgICAgICBhc3NlcnQgcmVwcihNYXRjaFtieXRlc10pID09ICdNYXRjaFtieXRlc10nCisKKyAgICBkZWYgdGVzdF9yZV9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nLnJlIGltcG9ydCBNYXRjaCwgUGF0dGVybiwgX19hbGxfXywgX19uYW1lX18KKyAgICAgICAgYXNzZXJ0IE1hdGNoIGlzIHR5cGluZy5NYXRjaAorICAgICAgICBhc3NlcnQgUGF0dGVybiBpcyB0eXBpbmcuUGF0dGVybgorICAgICAgICBhc3NlcnQgc2V0KF9fYWxsX18pID09IHNldChbJ01hdGNoJywgJ1BhdHRlcm4nXSkKKyAgICAgICAgYXNzZXJ0IF9fbmFtZV9fID09ICd0eXBpbmcucmUnCisKKyAgICBkZWYgdGVzdF9jYW5ub3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBleDoKKworICAgICAgICAgICAgY2xhc3MgQSh0eXBpbmcuTWF0Y2gpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgc3RyKGV4LmV4Y2VwdGlvbikgPT0gIkEgdHlwZSBhbGlhcyBjYW5ub3QgYmUgc3ViY2xhc3NlZCIKKworCitjbGFzcyBBbGxUZXN0cyhUZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIF9fYWxsX18uIiIiCisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBfX2FsbF9fIGFzIGEKKyAgICAgICAgIyBKdXN0IHNwb3QtY2hlY2sgdGhlIGZpcnN0IGFuZCBsYXN0IG9mIGV2ZXJ5IGNhdGVnb3J5LgorICAgICAgICBhc3NlcnQgJ0Fic3RyYWN0U2V0JyBpbiBhCisgICAgICAgIGFzc2VydCAnVmFsdWVzVmlldycgaW4gYQorICAgICAgICBhc3NlcnQgJ2Nhc3QnIGluIGEKKyAgICAgICAgYXNzZXJ0ICdvdmVybG9hZCcgaW4gYQorICAgICAgICBhc3NlcnQgJ2lvJyBpbiBhCisgICAgICAgIGFzc2VydCAncmUnIGluIGEKKyAgICAgICAgIyBTcG90LWNoZWNrIHRoYXQgc3RkbGliIG1vZHVsZXMgYXJlbid0IGV4cG9ydGVkLgorICAgICAgICBhc3NlcnQgJ29zJyBub3QgaW4gYQorICAgICAgICBhc3NlcnQgJ3N5cycgbm90IGluIGEKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91Y24ucHkgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQppbmRleCAxZTA3ZjY2Li44ZmViZjBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Vjbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQpAQCAtMjMzLDggKzIzMyw1IEBACiAgICAgICAgICkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVW5pY29kZU5hbWVzVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmFyeS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5hcnkucHkKaW5kZXggYjgzNTU2NC4uYzNjMTdjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmFyeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuYXJ5LnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdCBjb21waWxlciBjaGFuZ2VzIGZvciB1bmFyeSBvcHMgKCssIC0sIH4pIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuMiIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogY2xhc3MgVW5hcnlPcFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTAsOSArNDksNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICJ+Mi4wIikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFVuYXJ5T3BUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggNWVmYmUzZS4uM2ZjYjU5MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBfc3RyaW5nCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApAQCAtMzE1LDYgKzMxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcmQoJ2EnKTogTm9uZSwgb3JkKCdiJyk6ICcnfSkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoJ3h5eXgnLCAneHp4JywgJ3RyYW5zbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcmQoJ3onKTogJ3l5J30pCisKICAgICAgICAgIyB0aGlzIG5lZWRzIG1ha2V0cmFucygpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCdhYmFiYWJjJywgJ2FiYWJhYmMnLCAndHJhbnNsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydiJzogJzxpPid9KQpAQCAtMzI0LDYgKzMyNiwzMyBAQAogICAgICAgICB0YmwgPSBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMoJ2FiYycsICd4eXonLCAnZCcpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCd4eXp6eScsICdhYmRjZGNiZGRkZCcsICd0cmFuc2xhdGUnLCB0YmwpCiAKKyAgICAgICAgIyB2YXJpb3VzIHRlc3RzIHN3aXRjaGluZyBmcm9tIEFTQ0lJIHRvIGxhdGluMSBvciB0aGUgb3Bwb3NpdGU7CisgICAgICAgICMgc2FtZSBsZW5ndGgsIHJlbW92ZSBhIGxldHRlciwgb3IgcmVwbGFjZSB3aXRoIGEgbG9uZ2VyIHN0cmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnYScsICdYJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbWF0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6ICdYJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1hdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiBOb25lfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJ1hYWCd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltYWFhdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiAnXHhlOSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltceGU5XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJzxceGU5Pid9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIls8XHhlOT5dIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x4ZTldIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J1x4ZTknOiAnYSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlthXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltceGU5XSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydceGU5JzogTm9uZX0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iKQorCisgICAgICAgICMgaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlcnMKKyAgICAgICAgaW52YWxpZF9jaGFyID0gMHgxMGZmZmYrMQorICAgICAgICBmb3IgYmVmb3JlIGluICJhXHhlOVx1MjBhY1xVMDAxMGZmZmYiOgorICAgICAgICAgICAgbWFwcGluZyA9IHN0ci5tYWtldHJhbnMoe2JlZm9yZTogaW52YWxpZF9jaGFyfSkKKyAgICAgICAgICAgIHRleHQgPSAiWyVzXSIgJSBiZWZvcmUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRleHQudHJhbnNsYXRlLCBtYXBwaW5nKQorCisgICAgICAgICMgZXJyb3JzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMsICdhYmMnLCAnZGVmZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zLCAyLCAnZGVmJykKQEAgLTEzMDYsMjAgKzEzMzUsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4ycycgJSAiYVx4ZTlcdTIwYWMiLCAnYVx4ZTknKQogCiAgICAgICAgICNpc3N1ZSAxOTk5NQotICAgICAgICBjbGFzcyBQc3VlZG9JbnQ6CisgICAgICAgIGNsYXNzIFBzZXVkb0ludDoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGludCh2YWx1ZSkKICAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCiAgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCi0gICAgICAgIGNsYXNzIFBzdWVkb0Zsb2F0OgorICAgICAgICBjbGFzcyBQc2V1ZG9GbG9hdDoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGZsb2F0KHZhbHVlKQogICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmLnZhbHVlKQotICAgICAgICBwaSA9IFBzdWVkb0Zsb2F0KDMuMTQxNSkKLSAgICAgICAgbGV0dGVyX20gPSBQc3VlZG9JbnQoMTA5KQorICAgICAgICBwaSA9IFBzZXVkb0Zsb2F0KDMuMTQxNSkKKyAgICAgICAgbGV0dGVyX20gPSBQc2V1ZG9JbnQoMTA5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcleCcgJSA0MiwgJzJhJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJVgnICUgMTUsICdGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJW8nICUgOSwgJzExJykKQEAgLTEzMjgsMTEgKzEzNTcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJVgnICUgbGV0dGVyX20sICc2RCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVvJyAlIGxldHRlcl9tLCAnMTU1JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJWMnICUgbGV0dGVyX20sICdtJykKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICcleCcuX19tb2RfXywgcGkpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyV4Jy5fX21vZF9fLCAzLjE0KSwKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICclWCcuX19tb2RfXywgMi4xMSksCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJW8nLl9fbW9kX18sIDEuNzkpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyVjJy5fX21vZF9fLCBwaSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQnLCBvcGVyYXRvci5tb2QsICcleCcsIDMuMTQpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJyVYIGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0Jywgb3BlcmF0b3IubW9kLCAnJVgnLCAyLjExKSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICclbyBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCcsIG9wZXJhdG9yLm1vZCwgJyVvJywgMS43OSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgUHNldWRvRmxvYXQnLCBvcGVyYXRvci5tb2QsICcleCcsIHBpKSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsICclYycsIHBpKSwKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdHRpbmdfd2l0aF9lbnVtKHNlbGYpOgogICAgICAgICAjIGlzc3VlMTg3ODAKQEAgLTIwNTIsNyArMjA4MSw4IEBACiAgICAgICAgICAgICAnY3A4NjMnLCAnY3A4NjUnLCAnY3A4NjYnLCAnY3AxMTI1JywKICAgICAgICAgICAgICdpc284ODU5XzEwJywgJ2lzbzg4NTlfMTMnLCAnaXNvODg1OV8xNCcsICdpc284ODU5XzE1JywKICAgICAgICAgICAgICdpc284ODU5XzInLCAnaXNvODg1OV8zJywgJ2lzbzg4NTlfNCcsICdpc284ODU5XzUnLCAnaXNvODg1OV82JywKLSAgICAgICAgICAgICdpc284ODU5XzcnLCAnaXNvODg1OV85JywgJ2tvaThfcicsICdsYXRpbl8xJywKKyAgICAgICAgICAgICdpc284ODU5XzcnLCAnaXNvODg1OV85JywKKyAgICAgICAgICAgICdrb2k4X3InLCAna29pOF90JywgJ2tvaThfdScsICdrejEwNDgnLCAnbGF0aW5fMScsCiAgICAgICAgICAgICAnbWFjX2N5cmlsbGljJywgJ21hY19sYXRpbjInLAogCiAgICAgICAgICAgICAnY3AxMjUwJywgJ2NwMTI1MScsICdjcDEyNTInLCAnY3AxMjUzJywgJ2NwMTI1NCcsICdjcDEyNTUnLApAQCAtMjA4MCwxNCArMjExMCwxNCBAQAogICAgICAgICAgICAgJ2NwODYzJywgJ2NwODY1JywgJ2NwODY2JywgJ2NwMTEyNScsCiAgICAgICAgICAgICAnaXNvODg1OV8xMCcsICdpc284ODU5XzEzJywgJ2lzbzg4NTlfMTQnLCAnaXNvODg1OV8xNScsCiAgICAgICAgICAgICAnaXNvODg1OV8yJywgJ2lzbzg4NTlfNCcsICdpc284ODU5XzUnLAotICAgICAgICAgICAgJ2lzbzg4NTlfOScsICdrb2k4X3InLCAnbGF0aW5fMScsCisgICAgICAgICAgICAnaXNvODg1OV85JywgJ2tvaThfcicsICdrb2k4X3UnLCAnbGF0aW5fMScsCiAgICAgICAgICAgICAnbWFjX2N5cmlsbGljJywgJ21hY19sYXRpbjInLAogCiAgICAgICAgICAgICAjIyMgVGhlc2UgaGF2ZSB1bmRlZmluZWQgbWFwcGluZ3M6CiAgICAgICAgICAgICAjJ2NwMTI1MCcsICdjcDEyNTEnLCAnY3AxMjUyJywgJ2NwMTI1MycsICdjcDEyNTQnLCAnY3AxMjU1JywKICAgICAgICAgICAgICMnY3AxMjU2JywgJ2NwMTI1NycsICdjcDEyNTgnLAogICAgICAgICAgICAgIydjcDQyNCcsICdjcDg1NicsICdjcDg1NycsICdjcDg2NCcsICdjcDg2OScsICdjcDg3NCcsCi0gICAgICAgICAgICAjJ2lzbzg4NTlfMycsICdpc284ODU5XzYnLCAnaXNvODg1OV83JywKKyAgICAgICAgICAgICMnaXNvODg1OV8zJywgJ2lzbzg4NTlfNicsICdpc284ODU5XzcnLCAna29pOF90JywgJ2t6MTA0OCcsCiAgICAgICAgICAgICAjJ21hY19ncmVlaycsICdtYWNfaWNlbGFuZCcsJ21hY19yb21hbicsICdtYWNfdHVya2lzaCcsCiAKICAgICAgICAgICAgICMjIyBUaGVzZSBmYWlsIHRoZSByb3VuZC10cmlwOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNzA3YjMwZS4uNzA5NTc2NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2U3NGU4NzhkZTcxYjZlNzgwZmZhYzI3MTc4NWMzY2I1OGY2MjUxZjMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc2MThlMmMxYTIyZWU3OWQyMjM1MzE5NzA5ZjE2YzUwZjk4N2VlMjFmJwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTc5LDggKzc5LDkgQEAKIAogY2xhc3MgVW5pY29kZUZ1bmN0aW9uc1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKLSAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjBiNzRkMjY3NzYzMzFjYzdiZGMzYTQ2OThmMDM3ZDczZjJjZWUyYicKKyAgICAjIFVwZGF0ZSB0aGlzIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzLiBNYWtlIHN1cmUgdG8gZG8gYSBmdWxsIHJlYnVpbGQKKyAgICAjIChlLmcuICdtYWtlIGRpc3RjbGVhbiAmJiBtYWtlJykgdG8gZ2V0IHRoZSBjb3JyZWN0IGNoZWNrc3VtLgorICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNTg1MzAyODk1ZGVlYWQwYzFjODQ3OGM1MWRhOTI0MWQ0ZWZlZGNhOScKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMzEyLDEyICszMTMsNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHUlLjR4IHNob3VsZCBub3QgYmUgYSBsaW5lYnJlYWsiICUgaSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFVuaWNvZGVNaXNjVGVzdCwKLSAgICAgICAgVW5pY29kZU1ldGhvZHNUZXN0LAotICAgICAgICBVbmljb2RlRnVuY3Rpb25zVGVzdAotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQppbmRleCBiMWM0ODNkLi5kMWNjYjM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQpAQCAtNzYsNyArNzYsNyBAQAogICAgID4+PiBhLCBiLCBjLCBkID0gU2VxKCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBWYWx1ZUVycm9yOiBuZWVkIG1vcmUgdGhhbiAzIHZhbHVlcyB0byB1bnBhY2sKKyAgICBWYWx1ZUVycm9yOiBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDQsIGdvdCAzKQogCiBVbnBhY2tpbmcgc2VxdWVuY2UgdG9vIGxvbmcKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQppbmRleCBhZTJkY2JkLi4wMWY1N2I5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQpAQCAtNzEsOCArNzEsMTg1IEBACiAgICAgPj4+IGEgPT0gMCBhbmQgYiA9PSBbMSwgMiwgM10gYW5kIGMgPT0gNCBhbmQgZCA9PSBbMCwgMSwgMiwgM10gYW5kIGUgPT0gNAogICAgIFRydWUKIAorQXNzaWdubWVudCB1bnBhY2tpbmcKKworICAgID4+PiBhLCBiLCAqYyA9IHJhbmdlKDUpCisgICAgPj4+IGEsIGIsIGMKKyAgICAoMCwgMSwgWzIsIDMsIDRdKQorICAgID4+PiAqYSwgYiwgYyA9IGEsIGIsICpjCisgICAgPj4+IGEsIGIsIGMKKyAgICAoWzAsIDEsIDJdLCAzLCA0KQorCitTZXQgZGlzcGxheSBlbGVtZW50IHVucGFja2luZworCisgICAgPj4+IGEgPSBbMSwgMiwgM10KKyAgICA+Pj4gc29ydGVkKHsxLCAqYSwgMCwgNH0pCisgICAgWzAsIDEsIDIsIDMsIDRdCisKKyAgICA+Pj4gezEsICoxLCAwLCA0fQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ2ludCcgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQorCitEaWN0IGRpc3BsYXkgZWxlbWVudCB1bnBhY2tpbmcKKworICAgID4+PiBrd2RzID0geyd6JzogMCwgJ3cnOiAxMn0KKyAgICA+Pj4gc29ydGVkKHsneCc6IDEsICd5JzogMiwgKiprd2RzfS5pdGVtcygpKQorICAgIFsoJ3cnLCAxMiksICgneCcsIDEpLCAoJ3knLCAyKSwgKCd6JywgMCldCisKKyAgICA+Pj4gc29ydGVkKHsqKnsneCc6IDF9LCAneSc6IDIsICoqeyd6JzogM319Lml0ZW1zKCkpCisgICAgWygneCcsIDEpLCAoJ3knLCAyKSwgKCd6JywgMyldCisKKyAgICA+Pj4gc29ydGVkKHsqKnsneCc6IDF9LCAneSc6IDIsICoqeyd4JzogM319Lml0ZW1zKCkpCisgICAgWygneCcsIDMpLCAoJ3knLCAyKV0KKworICAgID4+PiBzb3J0ZWQoeyoqeyd4JzogMX0sICoqeyd4JzogM30sICd4JzogNH0uaXRlbXMoKSkKKyAgICBbKCd4JywgNCldCisKKyAgICA+Pj4geyoqe319CisgICAge30KKworICAgID4+PiBhID0ge30KKyAgICA+Pj4geyoqYX1bMF0gPSAxCisgICAgPj4+IGEKKyAgICB7fQorCisgICAgPj4+IHsqKjF9CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ2ludCcgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmcKKworICAgID4+PiB7KipbXX0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiAnbGlzdCcgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmcKKworICAgID4+PiBsZW4oZXZhbCgieyIgKyAiLCAiLmpvaW4oIioqe3t7fToge319fSIuZm9ybWF0KGksIGkpCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKSkgKyAifSIpKQorICAgIDEwMDAKKworTGlzdCBjb21wcmVoZW5zaW9uIGVsZW1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4gYSwgYiwgYyA9IFswLCAxLCAyXSwgMywgNAorICAgID4+PiBbKmEsIGIsIGNdCisgICAgWzAsIDEsIDIsIDMsIDRdCisKKyAgICA+Pj4gbCA9IFthLCAoMywgNCksIHs1fSwgezY6IE5vbmV9LCAoaSBmb3IgaSBpbiByYW5nZSg3LCAxMCkpXQorICAgID4+PiBbKml0ZW0gZm9yIGl0ZW0gaW4gbF0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgU3ludGF4RXJyb3I6IGl0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uCisKKyAgICA+Pj4gWypbMCwgMV0gZm9yIGkgaW4gcmFuZ2UoMTApXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBTeW50YXhFcnJvcjogaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24KKworICAgID4+PiBbKidhJyBmb3IgaSBpbiByYW5nZSgxMCldCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCisgICAgPj4+IFsqW10gZm9yIGkgaW4gcmFuZ2UoMTApXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBTeW50YXhFcnJvcjogaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24KKworR2VuZXJhdG9yIGV4cHJlc3Npb24gaW4gZnVuY3Rpb24gYXJndW1lbnRzCisKKyAgICA+Pj4gbGlzdCgqeCBmb3IgeCBpbiAocmFuZ2UoNSkgZm9yIGkgaW4gcmFuZ2UoMykpKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICAgICAgbGlzdCgqeCBmb3IgeCBpbiAocmFuZ2UoNSkgZm9yIGkgaW4gcmFuZ2UoMykpKQorICAgICAgICAgICAgICAgICAgXgorICAgIFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheAorCisgICAgPj4+IGRpY3QoKip4IGZvciB4IGluIFt7MToyfV0pCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgICAgICBkaWN0KCoqeCBmb3IgeCBpbiBbezE6Mn1dKQorICAgICAgICAgICAgICAgICAgIF4KKyAgICBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgKKworSXRlcmFibGUgYXJndW1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4gcHJpbnQoKlsxXSwgKlsyXSwgMykKKyAgICAxIDIgMworCitNYWtlIHN1cmUgdGhhdCB0aGV5IGRvbid0IGNvcnJ1cHQgdGhlIHBhc3NlZC1pbiBkaWN0cy4KKworICAgID4+PiBkZWYgZih4LCB5KToKKyAgICAuLi4gICAgIHByaW50KHgsIHkpCisgICAgLi4uCisgICAgPj4+IG9yaWdpbmFsX2RpY3QgPSB7J3gnOiAxfQorICAgID4+PiBmKCoqb3JpZ2luYWxfZGljdCwgeT0yKQorICAgIDEgMgorICAgID4+PiBvcmlnaW5hbF9kaWN0CisgICAgeyd4JzogMX0KKwogTm93IGZvciBzb21lIGZhaWx1cmVzCiAKK01ha2Ugc3VyZSB0aGUgcmFpc2VkIGVycm9ycyBhcmUgcmlnaHQgZm9yIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5ncworCisgICAgPj4+IGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZworICAgID4+PiBjbGFzcyBDcmF6eURpY3QoTXV0YWJsZU1hcHBpbmcpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuZCA9IHt9CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgLi4uICAgICAgICAgZm9yIHggaW4gc2VsZi5kLl9faXRlcl9fKCk6CisgICAgLi4uICAgICAgICAgICAgIGlmIHggPT0gJ2MnOgorICAgIC4uLiAgICAgICAgICAgICAgICAgc2VsZi5kWyd6J10gPSAxMAorICAgIC4uLiAgICAgICAgICAgICB5aWVsZCB4CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgayk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYuZFtrXQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmQpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgdik6CisgICAgLi4uICAgICAgICAgc2VsZi5kW2tdID0gdgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGspOgorICAgIC4uLiAgICAgICAgIGRlbCBzZWxmLmRba10KKyAgICAuLi4KKyAgICA+Pj4gZCA9IENyYXp5RGljdCgpCisgICAgPj4+IGQuZCA9IHtjaHIob3JkKCdhJykgKyB4KTogeCBmb3IgeCBpbiByYW5nZSg1KX0KKyAgICA+Pj4gZSA9IHsqKmR9CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFJ1bnRpbWVFcnJvcjogZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgorCisgICAgPj4+IGQuZCA9IHtjaHIob3JkKCdhJykgKyB4KTogeCBmb3IgeCBpbiByYW5nZSg1KX0KKyAgICA+Pj4gZGVmIGYoKiprd2FyZ3MpOiBwcmludChrd2FyZ3MpCisgICAgPj4+IGYoKipkKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBSdW50aW1lRXJyb3I6IGRpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24KKworT3ZlcnJpZGRlbiBwYXJhbWV0ZXJzCisKKyAgICA+Pj4gZih4PTUsICoqeyd4JzogM30sIHk9MikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworCisgICAgPj4+IGYoKip7J3gnOiAzfSwgeD01LCB5PTIpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAneCcKKworICAgID4+PiBmKCoqeyd4JzogM30sICoqeyd4JzogNX0sIHk9MikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworCisgICAgPj4+IGYoKip7MTogM30sICoqezE6IDV9KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncworCiBVbnBhY2tpbmcgbm9uLXNlcXVlbmNlCiAKICAgICA+Pj4gYSwgKmIgPSA3CkBAIC04NSw3ICsyNjIsMTQgQEAKICAgICA+Pj4gYSwgKmIsIGMsIGQsIGUgPSBTZXEoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFZhbHVlRXJyb3I6IG5lZWQgbW9yZSB0aGFuIDMgdmFsdWVzIHRvIHVucGFjaworICAgIFZhbHVlRXJyb3I6IG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgYXQgbGVhc3QgNCwgZ290IDMpCisKK1VucGFja2luZyBzZXF1ZW5jZSB0b28gc2hvcnQgYW5kIHRhcmdldCBhcHBlYXJzIGxhc3QKKworICAgID4+PiBhLCBiLCBjLCBkLCAqZSA9IFNlcSgpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogbm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCBhdCBsZWFzdCA0LCBnb3QgMykKIAogVW5wYWNraW5nIGEgc2VxdWVuY2Ugd2hlcmUgdGhlIHRlc3QgZm9yIHRvbyBsb25nIHJhaXNlcyBhIGRpZmZlcmVudCBraW5kIG9mCiBlcnJvcgpAQCAtMTMxLDE3ICszMTUsMTcgQEAKICAgICA+Pj4gKmEgIyBkb2N0ZXN0OitFTExJUFNJUwogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFN5bnRheEVycm9yOiBjYW4gdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBvbmx5IGFzIGFzc2lnbm1lbnQgdGFyZ2V0CisgICAgU3ludGF4RXJyb3I6IGNhbid0IHVzZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQogCiAgICAgPj4+ICoxICMgZG9jdGVzdDorRUxMSVBTSVMKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBTeW50YXhFcnJvcjogY2FuIHVzZSBzdGFycmVkIGV4cHJlc3Npb24gb25seSBhcyBhc3NpZ25tZW50IHRhcmdldAorICAgIFN5bnRheEVycm9yOiBjYW4ndCB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIGhlcmUKIAogICAgID4+PiB4ID0gKmEgIyBkb2N0ZXN0OitFTExJUFNJUwogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFN5bnRheEVycm9yOiBjYW4gdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBvbmx5IGFzIGFzc2lnbm1lbnQgdGFyZ2V0CisgICAgU3ludGF4RXJyb3I6IGNhbid0IHVzZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQogCiBTb21lIHNpemUgY29uc3RyYWludHMgKGFsbCBmYWlsLikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCAxNjIzNmVmLi41OGNhMmE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtMTAsNyArMTAsMTAgQEAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IG9zCi1pbXBvcnQgc3NsCit0cnk6CisgICAgaW1wb3J0IHNzbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHNzbCA9IE5vbmUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSBudHVybDJwYXRoIGltcG9ydCB1cmwycGF0aG5hbWUsIHBhdGhuYW1lMnVybApAQCAtMzgwLDYgKzM4Myw3IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAic3NsIG1vZHVsZSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfY2FmaWxlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpAQCAtMTMzMSw3ICsxMzM1LDcgQEAKICMgICAgIHNlcnYuc2V0dGltZW91dCgzKQogIyAgICAgc2Vydi5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogIyAgICAgc2Vydi5iaW5kKCgiIiwgOTA5MykpCi0jICAgICBzZXJ2Lmxpc3Rlbig1KQorIyAgICAgc2Vydi5saXN0ZW4oKQogIyAgICAgdHJ5OgogIyAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCiAjICAgICAgICAgY29ubi5zZW5kKCIxIEhvbGEgbXVuZG9cbiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKaW5kZXggN2Q0MWVhMS4uYTUyODFkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQpAQCAtMTEsNyArMTEsOSBAQAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCiAjIHByb3h5IGNvbmZpZyBkYXRhIHN0cnVjdHVyZSBidXQgaXMgdGVzdGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KLWZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IFJlcXVlc3QsIE9wZW5lckRpcmVjdG9yLCBfcGFyc2VfcHJveHksIF9wcm94eV9ieXBhc3NfbWFjb3N4X3N5c2NvbmYKK2Zyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IChSZXF1ZXN0LCBPcGVuZXJEaXJlY3RvciwgSFRUUEJhc2ljQXV0aEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCwgX3BhcnNlX3Byb3h5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wcm94eV9ieXBhc3NfbWFjb3N4X3N5c2NvbmYpCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKIGltcG9ydCB1cmxsaWIuZXJyb3IKIGltcG9ydCBodHRwLmNsaWVudApAQCAtMjEsNiArMjMsNyBAQAogIyBDYWNoZUZUUEhhbmRsZXIgKGhhcmQgdG8gd3JpdGUpCiAjIHBhcnNlX2tlcXZfbGlzdCwgcGFyc2VfaHR0cF9saXN0LCBIVFRQRGlnZXN0QXV0aEhhbmRsZXIKIAorCiBjbGFzcyBUcml2aWFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfX19hbGxfXyhzZWxmKToKQEAgLTcxLDYgKzc0LDcgQEAKICAgICAgICAgZXJyID0gdXJsbGliLmVycm9yLlVSTEVycm9yKCdyZWFzb24nKQogICAgICAgICBzZWxmLmFzc2VydEluKGVyci5yZWFzb24sIHN0cihlcnIpKQogCisKIGNsYXNzIFJlcXVlc3RIZHJzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2RpY3Qoc2VsZik6CkBAIC0xMzAsNyArMTM0LDYgQEAKICAgICAgICAgcmVxLnJlbW92ZV9oZWFkZXIoIlVucmVkaXJlY3RlZC1zcGFtIikKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaGFzX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iKSkKIAotCiAgICAgZGVmIHRlc3RfcGFzc3dvcmRfbWFuYWdlcihzZWxmKToKICAgICAgICAgbWdyID0gdXJsbGliLnJlcXVlc3QuSFRUUFBhc3N3b3JkTWdyKCkKICAgICAgICAgYWRkID0gbWdyLmFkZF9wYXNzd29yZApAQCAtMjM0LDQzICsyMzcsNjAgQEAKIAogY2xhc3MgTW9ja09wZW5lcjoKICAgICBhZGRoZWFkZXJzID0gW10KKwogICAgIGRlZiBvcGVuKHNlbGYsIHJlcSwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgIHNlbGYucmVxLCBzZWxmLmRhdGEsIHNlbGYudGltZW91dCA9IHJlcSwgZGF0YSwgdGltZW91dAorCiAgICAgZGVmIGVycm9yKHNlbGYsIHByb3RvLCAqYXJncyk6CiAgICAgICAgIHNlbGYucHJvdG8sIHNlbGYuYXJncyA9IHByb3RvLCBhcmdzCiAKKwogY2xhc3MgTW9ja0ZpbGU6Ci0gICAgZGVmIHJlYWQoc2VsZiwgY291bnQ9Tm9uZSk6IHBhc3MKLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgY291bnQ9Tm9uZSk6IHBhc3MKLSAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICBkZWYgcmVhZChzZWxmLCBjb3VudD1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGNvdW50PU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHBhc3MKKwogCiBjbGFzcyBNb2NrSGVhZGVycyhkaWN0KToKICAgICBkZWYgZ2V0aGVhZGVycyhzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi52YWx1ZXMoKSkKIAorCiBjbGFzcyBNb2NrUmVzcG9uc2UoaW8uU3RyaW5nSU8pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlLCBtc2csIGhlYWRlcnMsIGRhdGEsIHVybD1Ob25lKToKICAgICAgICAgaW8uU3RyaW5nSU8uX19pbml0X18oc2VsZiwgZGF0YSkKICAgICAgICAgc2VsZi5jb2RlLCBzZWxmLm1zZywgc2VsZi5oZWFkZXJzLCBzZWxmLnVybCA9IGNvZGUsIG1zZywgaGVhZGVycywgdXJsCisKICAgICBkZWYgaW5mbyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVycworCiAgICAgZGVmIGdldHVybChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudXJsCiAKKwogY2xhc3MgTW9ja0Nvb2tpZUphcjoKICAgICBkZWYgYWRkX2Nvb2tpZV9oZWFkZXIoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIHNlbGYuYWNoX3JlcSA9IHJlcXVlc3QKKwogICAgIGRlZiBleHRyYWN0X2Nvb2tpZXMoc2VsZiwgcmVzcG9uc2UsIHJlcXVlc3QpOgogICAgICAgICBzZWxmLmVjX3JlcSwgc2VsZi5lY19yID0gcmVxdWVzdCwgcmVzcG9uc2UKIAorCiBjbGFzcyBGYWtlTWV0aG9kOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRoX25hbWUsIGFjdGlvbiwgaGFuZGxlKToKICAgICAgICAgc2VsZi5tZXRoX25hbWUgPSBtZXRoX25hbWUKICAgICAgICAgc2VsZi5oYW5kbGUgPSBoYW5kbGUKICAgICAgICAgc2VsZi5hY3Rpb24gPSBhY3Rpb24KKwogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZShzZWxmLm1ldGhfbmFtZSwgc2VsZi5hY3Rpb24sICphcmdzKQogCisKIGNsYXNzIE1vY2tIVFRQUmVzcG9uc2UoaW8uSU9CYXNlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnAsIG1zZywgc3RhdHVzLCByZWFzb24pOgogICAgICAgICBzZWxmLmZwID0gZnAKQEAgLTMyNCwyNCArMzQ0LDMxIEBACiAgICAgICAgICAgICBzZWxmLmRhdGEgPSBib2R5CiAgICAgICAgIGlmIHNlbGYucmFpc2Vfb25fZW5kaGVhZGVyczoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQorCiAgICAgZGVmIGdldHJlc3BvbnNlKHNlbGYpOgogICAgICAgICByZXR1cm4gTW9ja0hUVFBSZXNwb25zZShNb2NrRmlsZSgpLCB7fSwgMjAwLCAiT0siKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKKwogY2xhc3MgTW9ja0hhbmRsZXI6CiAgICAgIyB1c2VmdWwgZm9yIHRlc3RpbmcgaGFuZGxlciBtYWNoaW5lcnkKICAgICAjIHNlZSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKCkgZG9jc3RyaW5nCiAgICAgaGFuZGxlcl9vcmRlciA9IDUwMAorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZHMpOgogICAgICAgICBzZWxmLl9kZWZpbmVfbWV0aG9kcyhtZXRob2RzKQorCiAgICAgZGVmIF9kZWZpbmVfbWV0aG9kcyhzZWxmLCBtZXRob2RzKToKICAgICAgICAgZm9yIHNwZWMgaW4gbWV0aG9kczoKLSAgICAgICAgICAgIGlmIGxlbihzcGVjKSA9PSAyOiBuYW1lLCBhY3Rpb24gPSBzcGVjCi0gICAgICAgICAgICBlbHNlOiBuYW1lLCBhY3Rpb24gPSBzcGVjLCBOb25lCisgICAgICAgICAgICBpZiBsZW4oc3BlYykgPT0gMjoKKyAgICAgICAgICAgICAgICBuYW1lLCBhY3Rpb24gPSBzcGVjCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUsIGFjdGlvbiA9IHNwZWMsIE5vbmUKICAgICAgICAgICAgIG1ldGggPSBGYWtlTWV0aG9kKG5hbWUsIGFjdGlvbiwgc2VsZi5oYW5kbGUpCiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuX19jbGFzc19fLCBuYW1lLCBtZXRoKQorCiAgICAgZGVmIGhhbmRsZShzZWxmLCBmbl9uYW1lLCBhY3Rpb24sICphcmdzLCAqKmt3ZHMpOgogICAgICAgICBzZWxmLnBhcmVudC5jYWxscy5hcHBlbmQoKHNlbGYsIGZuX25hbWUsIGFyZ3MsIGt3ZHMpKQogICAgICAgICBpZiBhY3Rpb24gaXMgTm9uZToKQEAgLTM2NCwxNiArMzkxLDIxIEBACiAgICAgICAgIGVsaWYgYWN0aW9uID09ICJyYWlzZSI6CiAgICAgICAgICAgICByYWlzZSB1cmxsaWIuZXJyb3IuVVJMRXJyb3IoImJsYWgiKQogICAgICAgICBhc3NlcnQgRmFsc2UKLSAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCiAgICAgZGVmIGFkZF9wYXJlbnQoc2VsZiwgcGFyZW50KToKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi5wYXJlbnQuY2FsbHMgPSBbXQorCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG90aGVyLCAiaGFuZGxlcl9vcmRlciIpOgogICAgICAgICAgICAgIyBObyBoYW5kbGVyX29yZGVyLCBsZWF2ZSBpbiBvcmlnaW5hbCBvcmRlci4gIFl1Y2suCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVyX29yZGVyIDwgb3RoZXIuaGFuZGxlcl9vcmRlcgogCisKIGRlZiBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG9wZW5lciwgbWV0aF9zcGVjKToKICAgICAiIiJDcmVhdGUgTW9ja0hhbmRsZXJzIGFuZCBhZGQgdGhlbSB0byBhbiBPcGVuZXJEaXJlY3Rvci4KIApAQCAtMzk2LDcgKzQyOCw5IEBACiAgICAgaGFuZGxlcnMgPSBbXQogICAgIGNvdW50ID0gMAogICAgIGZvciBtZXRocyBpbiBtZXRoX3NwZWM6Ci0gICAgICAgIGNsYXNzIE1vY2tIYW5kbGVyU3ViY2xhc3MoTW9ja0hhbmRsZXIpOiBwYXNzCisgICAgICAgIGNsYXNzIE1vY2tIYW5kbGVyU3ViY2xhc3MoTW9ja0hhbmRsZXIpOgorICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGggPSBNb2NrSGFuZGxlclN1YmNsYXNzKG1ldGhzKQogICAgICAgICBoLmhhbmRsZXJfb3JkZXIgKz0gY291bnQKICAgICAgICAgaC5hZGRfcGFyZW50KG9wZW5lcikKQEAgLTQwNSwxMiArNDM5LDE0IEBACiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihoKQogICAgIHJldHVybiBoYW5kbGVycwogCisKIGRlZiBidWlsZF90ZXN0X29wZW5lcigqaGFuZGxlcl9pbnN0YW5jZXMpOgogICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKICAgICBmb3IgaCBpbiBoYW5kbGVyX2luc3RhbmNlczoKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGgpCiAgICAgcmV0dXJuIG9wZW5lcgogCisKIGNsYXNzIE1vY2tIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6CiAgICAgIyB1c2VmdWwgZm9yIHRlc3RpbmcgcmVkaXJlY3Rpb25zIGFuZCBhdXRoCiAgICAgIyBzZW5kcyBzdXBwbGllZCBoZWFkZXJzIGFuZCBjb2RlIGFzIGZpcnN0IHJlc3BvbnNlCkBAIC00MTksOSArNDU1LDExIEBACiAgICAgICAgIHNlbGYuY29kZSA9IGNvZGUKICAgICAgICAgc2VsZi5oZWFkZXJzID0gaGVhZGVycwogICAgICAgICBzZWxmLnJlc2V0KCkKKwogICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICAgc2VsZi5fY291bnQgPSAwCiAgICAgICAgIHNlbGYucmVxdWVzdHMgPSBbXQorCiAgICAgZGVmIGh0dHBfb3BlbihzZWxmLCByZXEpOgogICAgICAgICBpbXBvcnQgZW1haWwsIGh0dHAuY2xpZW50LCBjb3B5CiAgICAgICAgIHNlbGYucmVxdWVzdHMuYXBwZW5kKGNvcHkuZGVlcGNvcHkocmVxKSkKQEAgLTQzNiw2ICs0NzQsNyBAQAogICAgICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiXHJcblxyXG4iKQogICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXNwb25zZSgyMDAsICJPSyIsIG1zZywgIiIsIHJlcS5nZXRfZnVsbF91cmwoKSkKIAorCiBjbGFzcyBNb2NrSFRUUFNIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIpOgogICAgICMgVXNlZnVsIGZvciB0ZXN0aW5nIHRoZSBQcm94eS1BdXRob3JpemF0aW9uIHJlcXVlc3QgYnkgdmVyaWZ5aW5nIHRoZQogICAgICMgcHJvcGVydGllcyBvZiBodHRwY29uCkBAIC00NDcsMTIgKzQ4NiwzMyBAQAogICAgIGRlZiBodHRwc19vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRvX29wZW4oc2VsZi5odHRwY29ubiwgcmVxKQogCisKK2NsYXNzIE1vY2tIVFRQSGFuZGxlckNoZWNrQXV0aCh1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6CisgICAgIyB1c2VmdWwgZm9yIHRlc3RpbmcgYXV0aAorICAgICMgc2VuZHMgc3VwcGxpZWQgY29kZSByZXNwb25zZQorICAgICMgY2hlY2tzIGlmIGF1dGggaGVhZGVyIGlzIHNwZWNpZmllZCBpbiByZXF1ZXN0CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUpOgorICAgICAgICBzZWxmLmNvZGUgPSBjb2RlCisgICAgICAgIHNlbGYuaGFzX2F1dGhfaGVhZGVyID0gRmFsc2UKKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5oYXNfYXV0aF9oZWFkZXIgPSBGYWxzZQorCisgICAgZGVmIGh0dHBfb3BlbihzZWxmLCByZXEpOgorICAgICAgICBpZiByZXEuaGFzX2hlYWRlcignQXV0aG9yaXphdGlvbicpOgorICAgICAgICAgICAgc2VsZi5oYXNfYXV0aF9oZWFkZXIgPSBUcnVlCisgICAgICAgIG5hbWUgPSBodHRwLmNsaWVudC5yZXNwb25zZXNbc2VsZi5jb2RlXQorICAgICAgICByZXR1cm4gTW9ja1Jlc3BvbnNlKHNlbGYuY29kZSwgbmFtZSwgTW9ja0ZpbGUoKSwgIiIsIHJlcS5nZXRfZnVsbF91cmwoKSkKKworCisKIGNsYXNzIE1vY2tQYXNzd29yZE1hbmFnZXI6CiAgICAgZGVmIGFkZF9wYXNzd29yZChzZWxmLCByZWFsbSwgdXJpLCB1c2VyLCBwYXNzd29yZCk6CiAgICAgICAgIHNlbGYucmVhbG0gPSByZWFsbQogICAgICAgICBzZWxmLnVybCA9IHVyaQogICAgICAgICBzZWxmLnVzZXIgPSB1c2VyCiAgICAgICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZAorCiAgICAgZGVmIGZpbmRfdXNlcl9wYXNzd29yZChzZWxmLCByZWFsbSwgYXV0aHVyaSk6CiAgICAgICAgIHNlbGYudGFyZ2V0X3JlYWxtID0gcmVhbG0KICAgICAgICAgc2VsZi50YXJnZXRfdXJsID0gYXV0aHVyaQpAQCAtNTE3LDExICs1NzcsMTEgQEAKICAgICBkZWYgdGVzdF9oYW5kbGVyX29yZGVyKHNlbGYpOgogICAgICAgICBvID0gT3BlbmVyRGlyZWN0b3IoKQogICAgICAgICBoYW5kbGVycyA9IFtdCi0gICAgICAgIGZvciBtZXRocywgaGFuZGxlcl9vcmRlciBpbiBbCi0gICAgICAgICAgICAoWygiaHR0cF9vcGVuIiwgInJldHVybiBzZWxmIildLCA1MDApLAotICAgICAgICAgICAgKFsiaHR0cF9vcGVuIl0sIDApLAotICAgICAgICAgICAgXToKLSAgICAgICAgICAgIGNsYXNzIE1vY2tIYW5kbGVyU3ViY2xhc3MoTW9ja0hhbmRsZXIpOiBwYXNzCisgICAgICAgIGZvciBtZXRocywgaGFuZGxlcl9vcmRlciBpbiBbKFsoImh0dHBfb3BlbiIsICJyZXR1cm4gc2VsZiIpXSwgNTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyJodHRwX29wZW4iXSwgMCldOgorICAgICAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgICAgICBoID0gTW9ja0hhbmRsZXJTdWJjbGFzcyhtZXRocykKICAgICAgICAgICAgIGguaGFuZGxlcl9vcmRlciA9IGhhbmRsZXJfb3JkZXIKICAgICAgICAgICAgIGhhbmRsZXJzLmFwcGVuZChoKQpAQCAtNTU5LDcgKzYxOSw4IEBACiAgICAgICAgIGhhbmRsZXJzID0gYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvLCBtZXRoX3NwZWMpCiAKICAgICAgICAgY2xhc3MgVW5rbm93bjoKLSAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOiByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIikKICAgICAgICAgby5vcGVuKHJlcSkKQEAgLTU3Miw3ICs2MzMsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaGFuZGxlciwgbWV0aG9kX25hbWUpLCBnb3RbOjJdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBnb3RbMl0pCiAKLQogICAgIGRlZiB0ZXN0X3Byb2Nlc3NvcnMoc2VsZik6CiAgICAgICAgICMgKl9yZXF1ZXN0IC8gKl9yZXNwb25zZSBtZXRob2RzIGdldCBjYWxsZWQgYXBwcm9wcmlhdGVseQogICAgICAgICBvID0gT3BlbmVyRGlyZWN0b3IoKQpAQCAtNjA4LDYgKzY2OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgYXJnc1sxXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFyZ3NbMV0sIE1vY2tSZXNwb25zZSkKIAorCiBkZWYgc2FuZXBhdGhuYW1lMnVybChwYXRoKToKICAgICB0cnk6CiAgICAgICAgIHBhdGguZW5jb2RlKCJ1dGYtOCIpCkBAIC02MTksMTggKzY4MCwyNSBAQAogICAgICMgWFhYIGRvbid0IGFzayBtZSBhYm91dCB0aGUgbWFjLi4uCiAgICAgcmV0dXJuIHVybHBhdGgKIAorCiBjbGFzcyBIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZnRwKHNlbGYpOgogICAgICAgICBjbGFzcyBNb2NrRlRQV3JhcHBlcjoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKTogc2VsZi5kYXRhID0gZGF0YQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKwogICAgICAgICAgICAgZGVmIHJldHJmaWxlKHNlbGYsIGZpbGVuYW1lLCBmaWxldHlwZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSwgc2VsZi5maWxldHlwZSA9IGZpbGVuYW1lLCBmaWxldHlwZQogICAgICAgICAgICAgICAgIHJldHVybiBpby5TdHJpbmdJTyhzZWxmLmRhdGEpLCBsZW4oc2VsZi5kYXRhKQotICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgY2xhc3MgTnVsbEZUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuRlRQSGFuZGxlcik6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6IHNlbGYuZGF0YSA9IGRhdGEKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisKICAgICAgICAgICAgIGRlZiBjb25uZWN0X2Z0cChzZWxmLCB1c2VyLCBwYXNzd2QsIGhvc3QsIHBvcnQsIGRpcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgogICAgICAgICAgICAgICAgIHNlbGYudXNlciwgc2VsZi5wYXNzd2QgPSB1c2VyLCBwYXNzd2QKQEAgLTg2OCw3ICs5MzYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLDMwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCiAKICAgICAgICAgZmlsZV9vYmouY2xvc2UoKQogCkBAIC05MDEsMTIgKzk2OSwxMiBAQAogCiAgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgaG9zdCBpcyBkZXRlcm1pbmVkIGNvcnJlY3RseSBpZiB0aGVyZSBpcyBubyBwcm94eQogICAgICAgICAgICAgbnBfZHNfcmVxID0gaC5kb19yZXF1ZXN0Xyhkc19yZXEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5wX2RzX3JlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCJleGFtcGxlLmNvbSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5wX2RzX3JlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiZXhhbXBsZS5jb20iKQogCiAgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgaG9zdCBpcyBkZXRlcm1pbmVkIGNvcnJlY3RseSBpZiB0aGVyZSBpcyBhIHByb3h5Ci0gICAgICAgICAgICBkc19yZXEuc2V0X3Byb3h5KCJzb21lcHJveHk6MzEyOCIsTm9uZSkKKyAgICAgICAgICAgIGRzX3JlcS5zZXRfcHJveHkoInNvbWVwcm94eTozMTI4IiwgTm9uZSkKICAgICAgICAgICAgIHBfZHNfcmVxID0gaC5kb19yZXF1ZXN0Xyhkc19yZXEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sImV4YW1wbGUuY29tIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocF9kc19yZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwgImV4YW1wbGUuY29tIikKIAogICAgIGRlZiB0ZXN0X2Z1bGxfdXJsX3NldHRlcihzZWxmKToKICAgICAgICAgIyBDaGVja3MgdG8gZW5zdXJlIHRoYXQgY29tcG9uZW50cyBhcmUgc2V0IGNvcnJlY3RseSBhZnRlciBzZXR0aW5nIHRoZQpAQCAtOTQ4LDE1ICsxMDE2LDE0IEBACiAgICAgICAgIHdlaXJkX3VybCA9ICdodHRwOi8vd3d3LnB5dGhvbi5vcmc/Z2V0c3BhbScKICAgICAgICAgcmVxID0gUmVxdWVzdCh3ZWlyZF91cmwpCiAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5ob3N0LCd3d3cucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLnNlbGVjdG9yLCcvP2dldHNwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5ob3N0LCAnd3d3LnB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwgJy8/Z2V0c3BhbScpCiAKICAgICAgICAgdXJsX3dpdGhvdXRfcGF0aCA9ICdodHRwOi8vd3d3LnB5dGhvbi5vcmcnCiAgICAgICAgIHJlcSA9IFJlcXVlc3QodXJsX3dpdGhvdXRfcGF0aCkKICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsJ3d3dy5weXRob24ub3JnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuc2VsZWN0b3IsJycpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuaG9zdCwgJ3d3dy5weXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuc2VsZWN0b3IsICcnKQogCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuSFRUUEVycm9yUHJvY2Vzc29yKCkKQEAgLTEwNDMsNiArMTExMCw3IEBACiAgICAgICAgICMgbG9vcCBkZXRlY3Rpb24KICAgICAgICAgcmVxID0gUmVxdWVzdChmcm9tX3VybCkKICAgICAgICAgcmVxLnRpbWVvdXQgPSBzb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQKKwogICAgICAgICBkZWYgcmVkaXJlY3QoaCwgcmVxLCB1cmw9dG9fdXJsKToKICAgICAgICAgICAgIGguaHR0cF9lcnJvcl8zMDIocmVxLCBNb2NrRmlsZSgpLCAzMDIsICJCbGFoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9ja0hlYWRlcnMoeyJsb2NhdGlvbiI6IHVybH0pKQpAQCAtMTA3Myw3ICsxMTQxLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LkhUVFBSZWRpcmVjdEhhbmRsZXIubWF4X3JlZGlyZWN0aW9ucykKIAotCiAgICAgZGVmIHRlc3RfaW52YWxpZF9yZWRpcmVjdChzZWxmKToKICAgICAgICAgZnJvbV91cmwgPSAiaHR0cDovL2V4YW1wbGUuY29tL2EuaHRtbCIKICAgICAgICAgdmFsaWRfc2NoZW1lcyA9IFsnaHR0cCcsJ2h0dHBzJywnZnRwJ10KQEAgLTExNzYsNyArMTI0Myw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydub19wcm94eSddCiAKLQogICAgIGRlZiB0ZXN0X3Byb3h5X2h0dHBzKHNlbGYpOgogICAgICAgICBvID0gT3BlbmVyRGlyZWN0b3IoKQogICAgICAgICBwaCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcihkaWN0KGh0dHBzPSJwcm94eS5leGFtcGxlLmNvbTozMTI4IikpCkBAIC0xMjAwLDIxICsxMjY2LDIxIEBACiAgICAgICAgIGh0dHBzX2hhbmRsZXIgPSBNb2NrSFRUUFNIYW5kbGVyKCkKICAgICAgICAgby5hZGRfaGFuZGxlcihodHRwc19oYW5kbGVyKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKQotICAgICAgICByZXEuYWRkX2hlYWRlcigiUHJveHktQXV0aG9yaXphdGlvbiIsIkZvb0JhciIpCi0gICAgICAgIHJlcS5hZGRfaGVhZGVyKCJVc2VyLUFnZW50IiwiR3JhaWwiKQorICAgICAgICByZXEuYWRkX2hlYWRlcigiUHJveHktQXV0aG9yaXphdGlvbiIsICJGb29CYXIiKQorICAgICAgICByZXEuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsICJHcmFpbCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cuZXhhbXBsZS5jb20iKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXEuX3R1bm5lbF9ob3N0KQogICAgICAgICBvLm9wZW4ocmVxKQogICAgICAgICAjIFZlcmlmeSBQcm94eS1BdXRob3JpemF0aW9uIGdldHMgdHVubmVsZWQgdG8gcmVxdWVzdC4KICAgICAgICAgIyBodHRwc2Nvbm4gcmVxX2hlYWRlcnMgZG8gbm90IGhhdmUgdGhlIFByb3h5LUF1dGhvcml6YXRpb24gaGVhZGVyIGJ1dAogICAgICAgICAjIHRoZSByZXEgd2lsbCBoYXZlLgotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCgiUHJveHktQXV0aG9yaXphdGlvbiIsIkZvb0JhciIpLAorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCgiUHJveHktQXV0aG9yaXphdGlvbiIsICJGb29CYXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwc19oYW5kbGVyLmh0dHBjb25uLnJlcV9oZWFkZXJzKQotICAgICAgICBzZWxmLmFzc2VydEluKCgiVXNlci1BZ2VudCIsIkdyYWlsIiksCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCJVc2VyLUFnZW50IiwgIkdyYWlsIiksCiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHNfaGFuZGxlci5odHRwY29ubi5yZXFfaGVhZGVycykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVxLl90dW5uZWxfaG9zdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJQcm94eS1hdXRob3JpemF0aW9uIiksIkZvb0JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlByb3h5LWF1dGhvcml6YXRpb24iKSwgIkZvb0JhciIpCiAKICAgICAjIFRPRE86IFRoaXMgc2hvdWxkIGJlIG9ubHkgZm9yIE9TWAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgIm9ubHkgcmVsZXZhbnQgZm9yIE9TWCIpCkBAIC0xMjQ2LDcgKzEzMTIsNyBAQAogICAgICAgICByZWFsbSA9ICJBQ01FIFdpZGdldCBTdG9yZSIKICAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAogICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09JXMlcyVzXHJcblxyXG4nICUKLSAgICAgICAgICAgIChxdW90ZV9jaGFyLCByZWFsbSwgcXVvdGVfY2hhcikgKQorICAgICAgICAgICAgKHF1b3RlX2NoYXIsIHJlYWxtLCBxdW90ZV9jaGFyKSkKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfaGFuZGxlcikKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKICAgICAgICAgc2VsZi5fdGVzdF9iYXNpY19hdXRoKG9wZW5lciwgYXV0aF9oYW5kbGVyLCAiQXV0aG9yaXphdGlvbiIsCkBAIC0xMzA0LDEzICsxMzcwLDE2IEBACiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgT3BlbmVyRGlyZWN0b3IuX19pbml0X18oc2VsZikKICAgICAgICAgICAgICAgICBzZWxmLnJlY29yZGVkID0gW10KKwogICAgICAgICAgICAgZGVmIHJlY29yZChzZWxmLCBpbmZvKToKICAgICAgICAgICAgICAgICBzZWxmLnJlY29yZGVkLmFwcGVuZChpbmZvKQorCiAgICAgICAgIGNsYXNzIFRlc3REaWdlc3RBdXRoSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQRGlnZXN0QXV0aEhhbmRsZXIpOgogICAgICAgICAgICAgZGVmIGh0dHBfZXJyb3JfNDAxKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHNlbGYucGFyZW50LnJlY29yZCgiZGlnZXN0IikKICAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5IVFRQRGlnZXN0QXV0aEhhbmRsZXIuaHR0cF9lcnJvcl80MDEoc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2RzKQorCiAgICAgICAgIGNsYXNzIFRlc3RCYXNpY0F1dGhIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKToKICAgICAgICAgICAgIGRlZiBodHRwX2Vycm9yXzQwMShzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICAgICAgICAgICBzZWxmLnBhcmVudC5yZWNvcmQoImJhc2ljIikKQEAgLTEzNDYsNyArMTQxNSw3IEBACiAgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBLZXJiZXJvc1xyXG5cclxuJykKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGRpZ2VzdF9hdXRoX2hhbmRsZXIpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVuZXIub3BlbiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQogCiAgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfYXV0aF9iYXNpY19oYW5kbGVyKHNlbGYpOgogICAgICAgICAjIFdoaWxlIHVzaW5nIEJhc2ljQXV0aEhhbmRsZXIKQEAgLTEzNTYsNyArMTQyNSw3IEBACiAgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBOVExNXHJcblxyXG4nKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYmFzaWNfYXV0aF9oYW5kbGVyKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlbmVyLm9wZW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKIAogICAgIGRlZiBfdGVzdF9iYXNpY19hdXRoKHNlbGYsIG9wZW5lciwgYXV0aF9oYW5kbGVyLCBhdXRoX2hlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLApAQCAtMTM5NSw2ICsxNDY0LDcyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGh0dHBfaGFuZGxlci5yZXF1ZXN0cyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHR0cF9oYW5kbGVyLnJlcXVlc3RzWzBdLmhhc19oZWFkZXIoYXV0aF9oZWFkZXIpKQogCisgICAgZGVmIHRlc3RfYmFzaWNfcHJpb3JfYXV0aF9hdXRvX3NlbmQoc2VsZik6CisgICAgICAgICMgQXNzdW1lIGFscmVhZHkgYXV0aGVudGljYXRlZCBpZiBpc19hdXRoZW50aWNhdGVkPVRydWUKKyAgICAgICAgIyBmb3IgQVBJcyBsaWtlIEdpdGh1YiB0aGF0IGRvbid0IHJldHVybiA0MDEKKworICAgICAgICB1c2VyLCBwYXNzd29yZCA9ICJ3aWxlIiwgImNveW90ZSIKKyAgICAgICAgcmVxdWVzdF91cmwgPSAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIgorCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlckNoZWNrQXV0aCgyMDApCisKKyAgICAgICAgcHdkX21hbmFnZXIgPSBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKCkKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyID0gSFRUUEJhc2ljQXV0aEhhbmRsZXIocHdkX21hbmFnZXIpCisgICAgICAgIGF1dGhfcHJpb3JfaGFuZGxlci5hZGRfcGFzc3dvcmQoCisgICAgICAgICAgICBOb25lLCByZXF1ZXN0X3VybCwgdXNlciwgcGFzc3dvcmQsIGlzX2F1dGhlbnRpY2F0ZWQ9VHJ1ZSkKKworICAgICAgICBpc19hdXRoID0gcHdkX21hbmFnZXIuaXNfYXV0aGVudGljYXRlZChyZXF1ZXN0X3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2F1dGgpCisKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9wcmlvcl9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorCisgICAgICAgIG9wZW5lci5vcGVuKHJlcXVlc3RfdXJsKQorCisgICAgICAgICMgZXhwZWN0IHJlcXVlc3QgdG8gYmUgc2VudCB3aXRoIGF1dGggaGVhZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodHRwX2hhbmRsZXIuaGFzX2F1dGhfaGVhZGVyKQorCisgICAgZGVmIHRlc3RfYmFzaWNfcHJpb3JfYXV0aF9zZW5kX2FmdGVyX2ZpcnN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgICMgQXV0byBzZW5kIGF1dGggaGVhZGVyIGFmdGVyIGF1dGhlbnRpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwgb25jZQorCisgICAgICAgIHVzZXIsIHBhc3N3b3JkID0gJ3dpbGUnLCAnY295b3RlJworICAgICAgICByZXF1ZXN0X3VybCA9ICdodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQnCisgICAgICAgIHJlYWxtID0gJ0FDTUUnCisKKyAgICAgICAgcHdkX21hbmFnZXIgPSBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKCkKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyID0gSFRUUEJhc2ljQXV0aEhhbmRsZXIocHdkX21hbmFnZXIpCisgICAgICAgIGF1dGhfcHJpb3JfaGFuZGxlci5hZGRfcGFzc3dvcmQocmVhbG0sIHJlcXVlc3RfdXJsLCB1c2VyLCBwYXNzd29yZCkKKworICAgICAgICBpc19hdXRoID0gcHdkX21hbmFnZXIuaXNfYXV0aGVudGljYXRlZChyZXF1ZXN0X3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hdXRoKQorCisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfcHJpb3JfaGFuZGxlcikKKworICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCisgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0iJXMiXHJcblxyXG4nICUgTm9uZSkKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKworICAgICAgICBvcGVuZXIub3BlbihyZXF1ZXN0X3VybCkKKworICAgICAgICBpc19hdXRoID0gcHdkX21hbmFnZXIuaXNfYXV0aGVudGljYXRlZChyZXF1ZXN0X3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2F1dGgpCisKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyQ2hlY2tBdXRoKDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodHRwX2hhbmRsZXIuaGFzX2F1dGhfaGVhZGVyKQorCisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfcHJpb3JfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKworICAgICAgICAjIEFmdGVyIGdldHRpbmcgMjAwIGZyb20gTW9ja0hUVFBIYW5kbGVyCisgICAgICAgICMgTmV4dCByZXF1ZXN0IHNlbmRzIGhlYWRlciBpbiB0aGUgZmlyc3QgcmVxdWVzdAorICAgICAgICBvcGVuZXIub3BlbihyZXF1ZXN0X3VybCkKKworICAgICAgICAjIGV4cGVjdCByZXF1ZXN0IHRvIGJlIHNlbnQgd2l0aCBhdXRoIGhlYWRlcgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaHR0cF9oYW5kbGVyLmhhc19hdXRoX2hlYWRlcikKKwogICAgIGRlZiB0ZXN0X2h0dHBfY2xvc2VkKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoZSBjb25uZWN0aW9uIGlzIGNsZWFuZWQgdXAgd2hlbiB0aGUgcmVzcG9uc2UgaXMgY2xvc2VkIiIiCiAgICAgICAgIGZvciAodHJhbnNmZXIsIGRhdGEpIGluICgKQEAgLTE0MjMsNiArMTU1OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb25uLmZha2Vzb2NrLmNsb3NlZCwgIkNvbm5lY3Rpb24gbm90IGNsb3NlZCIpCiAKIAorCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIG9wZW5lcl9oYXNfaGFuZGxlcihzZWxmLCBvcGVuZXIsIGhhbmRsZXJfY2xhc3MpOgpAQCAtMTQzMCwxMSArMTU2NiwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBoIGluIG9wZW5lci5oYW5kbGVycykpCiAKICAgICBkZWYgdGVzdF9idWlsZF9vcGVuZXIoc2VsZik6Ci0gICAgICAgIGNsYXNzIE15SFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpOiBwYXNzCisgICAgICAgIGNsYXNzIE15SFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpOgorICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGNsYXNzIEZvb0hhbmRsZXIodXJsbGliLnJlcXVlc3QuQmFzZUhhbmRsZXIpOgotICAgICAgICAgICAgZGVmIGZvb19vcGVuKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgZm9vX29wZW4oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGNsYXNzIEJhckhhbmRsZXIodXJsbGliLnJlcXVlc3QuQmFzZUhhbmRsZXIpOgotICAgICAgICAgICAgZGVmIGJhcl9vcGVuKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgYmFyX29wZW4oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGJ1aWxkX29wZW5lciA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcgogCkBAIC0xNDYxLDcgKzE2MDIsOSBAQAogICAgICAgICBzZWxmLm9wZW5lcl9oYXNfaGFuZGxlcihvLCB1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcikKIAogICAgICAgICAjIElzc3VlMjY3MDogbXVsdGlwbGUgaGFuZGxlcnMgc2hhcmluZyB0aGUgc2FtZSBiYXNlIGNsYXNzCi0gICAgICAgIGNsYXNzIE15T3RoZXJIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6IHBhc3MKKyAgICAgICAgY2xhc3MgTXlPdGhlckhUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKToKKyAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBvID0gYnVpbGRfb3BlbmVyKE15SFRUUEhhbmRsZXIsIE15T3RoZXJIVFRQSGFuZGxlcikKICAgICAgICAgc2VsZi5vcGVuZXJfaGFzX2hhbmRsZXIobywgTXlIVFRQSGFuZGxlcikKICAgICAgICAgc2VsZi5vcGVuZXJfaGFzX2hhbmRsZXIobywgTXlPdGhlckhUVFBIYW5kbGVyKQpAQCAtMTQ5Nyw2ICsxNjQwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuaGVhZGVycywgJ0NvbnRlbnQtTGVuZ3RoOiA0MicpCiAgICAgICAgIGV4cGVjdGVkX2Vycm1zZyA9ICdIVFRQIEVycm9yICVzOiAlcycgJSAoZXJyLmNvZGUsIGVyci5tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksIGV4cGVjdGVkX2Vycm1zZykKKyAgICAgICAgZXhwZWN0ZWRfZXJybXNnID0gJzxIVFRQRXJyb3IgJXM6ICVyPicgJSAoZXJyLmNvZGUsIGVyci5tc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlcnIpLCBleHBlY3RlZF9lcnJtc2cpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9wcm94eShzZWxmKToKICAgICAgICAgcGFyc2VfcHJveHlfdGVzdF9jYXNlcyA9IFsKQEAgLTE1MzUsOSArMTY4MCwxMCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9wYXJzZV9wcm94eSwgJ2ZpbGU6L2Z0cC5leGFtcGxlLmNvbScpLAogCisKIGNsYXNzIFJlcXVlc3RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY2xhc3MgUHV0UmVxdWVzdChSZXF1ZXN0KToKLSAgICAgICAgbWV0aG9kPSdQVVQnCisgICAgICAgIG1ldGhvZCA9ICdQVVQnCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZ2V0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnL35qZXJlbXkvIikKQEAgLTE2MjYsNyArMTc3Miw3IEBACiAgICAgZGVmIHRlc3RfdXJsX2Z1bGx1cmxfZ2V0X2Z1bGxfdXJsKHNlbGYpOgogICAgICAgICB1cmxzID0gWydodHRwOi8vZG9jcy5weXRob24ub3JnJywKICAgICAgICAgICAgICAgICAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3VybGxpYjIuaHRtbCNPSycsCi0gICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZScgXQorICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvP3FzPXF1ZXJ5I2ZyYWdtZW50PXRydWUnXQogICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KHVybCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9mdWxsX3VybCgpLCByZXEuZnVsbF91cmwpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKaW5kZXggMTdmOWQxYi4uY2FkODNmZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQpAQCAtMjAsOCArMjAsNiBAQAogICAgICAgICBleGNlcHQgZXhjIGFzIGU6CiAgICAgICAgICAgICBsYXN0X2V4YyA9IGUKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJhaXNlCiAgICAgcmFpc2UgbGFzdF9leGMKIAogZGVmIF93cmFwX3dpdGhfcmV0cnlfdGhyaWNlKGZ1bmMsIGV4Yyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQppbmRleCBhZDk4MjBiLi40ZmEzZGM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKQEAgLTIxMCwxMCArMjEwLDYgQEAKIAogICAgICAgICAjICJhYm5vcm1hbCIgY2FzZXMgZnJvbSBSRkMgMTgwODoKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnJywgJ2h0dHA6Ly9hL2IvYy9kO3A/cSNmJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLi4vLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi8uLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLy4vZycsICdodHRwOi8vYS8uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnZy4nLCAnaHR0cDovL2EvYi9jL2cuJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLmcnLCAnaHR0cDovL2EvYi9jLy5nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnZy4uJywgJ2h0dHA6Ly9hL2IvYy9nLi4nKQpAQCAtMjI4LDYgKzIyNCwxMyBAQAogICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnaHR0cDpnJywgJ2h0dHA6ZycpCiAgICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdodHRwOicsICdodHRwOicpCiAKKyAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG5vIGxvbmdlciBjb21wYXRpYmxlIHdpdGggUkZDMzk4NgorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLi4vLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCisKKwogICAgIGRlZiB0ZXN0X1JGQzIzNjgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTE0Njc6IHBhdGggdGhhdCBzdGFydHMgd2l0aCBhIG51bWJlciBpcyBub3QgcGFyc2VkIGNvcnJlY3RseQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVybGxpYi5wYXJzZS51cmxwYXJzZSgnbWFpbHRvOjEzMzdAZXhhbXBsZS5vcmcnKSwKQEAgLTI1OCwxMCArMjYxLDYgQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vJywgJ2h0dHA6Ly9hLycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uL2cnLCAnaHR0cDovL2EvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJycsIFJGQzIzOTZfQkFTRSkKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi8uLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLy4vZycsICdodHRwOi8vYS8uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnZy4nLCAnaHR0cDovL2EvYi9jL2cuJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLmcnLCAnaHR0cDovL2EvYi9jLy5nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnZy4uJywgJ2h0dHA6Ly9hL2IvYy9nLi4nKQpAQCAtMjc3LDEwICsyNzYsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnZyNzLy4veCcsICdodHRwOi8vYS9iL2MvZyNzLy4veCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJ2cjcy8uLi94JywgJ2h0dHA6Ly9hL2IvYy9nI3MvLi4veCcpCiAKKyAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG5vIGxvbmdlciBjb21wYXRpYmxlIHdpdGggUkZDMzk4NgorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCisKKwogICAgIGRlZiB0ZXN0X1JGQzM5ODYoc2VsZik6CiAgICAgICAgICMgVGVzdCBjYXNlcyBmcm9tIFJGQzM5ODYKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnP3knLCdodHRwOi8vYS9iL2MvZDtwP3knKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICc7eCcsICdodHRwOi8vYS9iL2MvO3gnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICc7eCcsICdodHRwOi8vYS9iL2MvO3gnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICdnOmgnLCdnOmgnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICdnJywnaHR0cDovL2EvYi9jL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuL2cnLCdodHRwOi8vYS9iL2MvZycpCkBAIC0zMDQsMTcgKzMxMCwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLicsJ2h0dHA6Ly9hLycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLycsJ2h0dHA6Ly9hLycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uL2cnLCdodHRwOi8vYS9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS9nJykKIAogICAgICAgICAjQWJub3JtYWwgRXhhbXBsZXMKIAogICAgICAgICAjIFRoZSAnYWJub3JtYWwgc2NlbmFyaW9zJyBhcmUgaW5jb21wYXRpYmxlIHdpdGggUkZDMjk4NiBwYXJzaW5nCiAgICAgICAgICMgVGVzdHMgYXJlIGhlcmUgZm9yIHJlZmVyZW5jZS4KIAotICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQotICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQotICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLy4vZycsJ2h0dHA6Ly9hL2cnKQotICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLy4uL2cnLCdodHRwOi8vYS9nJykKLQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCdodHRwOi8vYS9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLy4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi4vZycsJ2h0dHA6Ly9hL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICdnLicsJ2h0dHA6Ly9hL2IvYy9nLicpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy5nJywnaHR0cDovL2EvYi9jLy5nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnZy4uJywnaHR0cDovL2EvYi9jL2cuLicpCkBAIC0zNTQsMTAgKzM2MCw4IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vZycsJ2h0dHA6Ly9hL2IvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vLi4nLCdodHRwOi8vYS8nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uL2cnLCdodHRwOi8vYS9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi8uLi8uLi9nJywnaHR0cDovL2EvLi4vZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi8uLi9nJywnaHR0cDovL2EvYi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuL2cvLicsJ2h0dHA6Ly9hL2IvYy9nLycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLy4vZycsJ2h0dHA6Ly9hLy4vZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnZy8uL2gnLCdodHRwOi8vYS9iL2MvZy9oJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICdnLy4uL2gnLCdodHRwOi8vYS9iL2MvaCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnaHR0cDpnJywnaHR0cDovL2EvYi9jL2cnKQpAQCAtMzcxLDYgKzM3NSwyNSBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbignc3ZuOi8vcGF0aHRvcmVwby9kaXIxJywgJ2RpcjInLCAnc3ZuOi8vcGF0aHRvcmVwby9kaXIyJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oJ3N2bitzc2g6Ly9wYXRodG9yZXBvL2RpcjEnLCAnZGlyMicsICdzdm4rc3NoOi8vcGF0aHRvcmVwby9kaXIyJykKIAorICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm8gbG9uZ2VyIGNvbXBhdGlibGUgd2l0aCBSRkMzOTg2CisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi8uLi8uLi9nJywnaHR0cDovL2EvLi4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcvLi9nJywnaHR0cDovL2EvLi9nJykKKworICAgICAgICAjIHRlc3QgZm9yIGlzc3VlMjIxMTggZHVwbGljYXRlIHNsYXNoZXMKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UgKyAnLycsICdmb28nLCBTSU1QTEVfQkFTRSArICcvZm9vJykKKworICAgICAgICAjIE5vbi1SRkMtZGVmaW5lZCB0ZXN0cywgY292ZXJpbmcgdmFyaWF0aW9ucyBvZiBiYXNlIGFuZCB0cmFpbGluZworICAgICAgICAjIHNsYXNoZXMKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UvJywgJy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvYi9jL2YvZy8nKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZScsICcuLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2IvZi9nLycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lLycsICcvLi4vLi4vZi9nLycsICdodHRwOi8vYS9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UnLCAnLy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvZi9nLycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lLycsICcuLi8uLi9mL2cnLCAnaHR0cDovL2EvYi9jL2YvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iLycsICcuLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2YvZy8nKQorCisgICAgICAgICMgaXNzdWUgMjM3MDM6IGRvbid0IGR1cGxpY2F0ZSBmaWxlbmFtZQorICAgICAgICBzZWxmLmNoZWNrSm9pbignYScsICdiJywgJ2InKQorCiAgICAgZGVmIHRlc3RfUkZDMjczMihzZWxmKToKICAgICAgICAgc3RyX2Nhc2VzID0gWwogICAgICAgICAgICAgKCdodHRwOi8vVGVzdC5weXRob24ub3JnOjU0MzIvZm9vLycsICd0ZXN0LnB5dGhvbi5vcmcnLCA1NDMyKSwKQEAgLTc2Miw2ICs3ODUsMTYgQEAKICAgICAgICAgcmVzdWx0ID0gdXJsbGliLnBhcnNlLnVybGVuY29kZSh7J2EnOiBUcml2aWFsKCl9LCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgJ2E9dHJpdmlhbCcpCiAKKyAgICBkZWYgdGVzdF91cmxlbmNvZGVfcXVvdGVfdmlhKHNlbGYpOgorICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6ICdzb21lIHZhbHVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAiYT1zb21lK3ZhbHVlIikKKyAgICAgICAgcmVzdWx0ID0gdXJsbGliLnBhcnNlLnVybGVuY29kZSh7J2EnOiAnc29tZSB2YWx1ZS9hbm90aGVyJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfdmlhPXVybGxpYi5wYXJzZS5xdW90ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICJhPXNvbWUlMjB2YWx1ZSUyRmFub3RoZXIiKQorICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6ICdzb21lIHZhbHVlL2Fub3RoZXInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlPScvJywgcXVvdGVfdmlhPXVybGxpYi5wYXJzZS5xdW90ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICJhPXNvbWUlMjB2YWx1ZS9hbm90aGVyIikKKwogICAgIGRlZiB0ZXN0X3F1b3RlX2Zyb21fYnl0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdXJsbGliLnBhcnNlLnF1b3RlX2Zyb21fYnl0ZXMsICdmb28nKQogICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UucXVvdGVfZnJvbV9ieXRlcyhiJ2FyY2hhZW9sb2dpY2FsIGFyY2FuYScpCkBAIC04MjAsNiArODUzLDIyIEBACiAgICAgICAgIHF1b3RlciA9IHVybGxpYi5wYXJzZS5RdW90ZXIodXJsbGliLnBhcnNlLl9BTFdBWVNfU0FGRSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignUXVvdGVyJywgcmVwcihxdW90ZXIpKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IFtdCisgICAgICAgIHVuZG9jdW1lbnRlZCA9IHsKKyAgICAgICAgICAgICdzcGxpdGF0dHInLCAnc3BsaXRob3N0JywgJ3NwbGl0bnBvcnQnLCAnc3BsaXRwYXNzd2QnLAorICAgICAgICAgICAgJ3NwbGl0cG9ydCcsICdzcGxpdHF1ZXJ5JywgJ3NwbGl0dGFnJywgJ3NwbGl0dHlwZScsICdzcGxpdHVzZXInLAorICAgICAgICAgICAgJ3NwbGl0dmFsdWUnLAorICAgICAgICAgICAgJ1F1b3RlcicsICdSZXN1bHRCYXNlJywgJ2NsZWFyX2NhY2hlJywgJ3RvX2J5dGVzJywgJ3Vud3JhcCcsCisgICAgICAgIH0KKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyKHVybGxpYi5wYXJzZSk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBvciBuYW1lIGluIHVuZG9jdW1lbnRlZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb2JqZWN0ID0gZ2V0YXR0cih1cmxsaWIucGFyc2UsIG5hbWUpCisgICAgICAgICAgICBpZiBnZXRhdHRyKG9iamVjdCwgJ19fbW9kdWxlX18nLCBOb25lKSA9PSAndXJsbGliLnBhcnNlJzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKHVybGxpYi5wYXJzZS5fX2FsbF9fLCBleHBlY3RlZCkKKwogCiBjbGFzcyBVdGlsaXR5X1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0Y2FzZSB0byB0ZXN0IHRoZSB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIGluIHRoZSB1cmxsaWIuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQppbmRleCAyY2E5OTI5Li5jODNjYzU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKQEAgLTE5MCwxMCArMTkwLDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVXNlckRpY3RUZXN0LAotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggNjM4MTA3MC4uNGEzMDRkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC01OCw4ICs1OCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHUpLCB0eXBlKHYpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVXNlckxpc3RUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKaW5kZXggMWU4Y2JhMy4uZmNiODQ1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQpAQCAtMSw5ICsxLDEwIEBACi1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdXVpZAogCiBkZWYgaW1wb3J0YWJsZShuYW1lKToKQEAgLTQxMiwyOCArNDEzLDI3IEBACiBjbGFzcyBUZXN0SW50ZXJuYWxzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICdyZXF1aXJlcyBQb3NpeCcpCiAgICAgZGVmIHRlc3RfZmluZF9tYWMoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnJydcCi0KKyAgICAgICAgZGF0YSA9ICcnJwogZmFrZSBod2FkZHIKIGNzY290dW4wICBMaW5rIGVuY2FwOlVOU1BFQyAgSFdhZGRyIDAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwCiBldGgwICAgICAgTGluayBlbmNhcDpFdGhlcm5ldCAgSFdhZGRyIDEyOjM0OjU2Ojc4OjkwOmFiCiAnJycKLSAgICAgICAgZGVmIG1vY2tfcG9wZW4oY21kKToKLSAgICAgICAgICAgIHJldHVybiBpby5TdHJpbmdJTyhkYXRhKQogCi0gICAgICAgIGlmIHNodXRpbC53aGljaCgnaWZjb25maWcnKSBpcyBOb25lOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGhzZXAuam9pbigoJy9zYmluJywgJy91c3Ivc2JpbicpKQotICAgICAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdpZmNvbmZpZycsIHBhdGg9cGF0aCkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdyZXF1aXJlcyBpZmNvbmZpZycpCisgICAgICAgIHBvcGVuID0gdW5pdHRlc3QubW9jay5NYWdpY01vY2soKQorICAgICAgICBwb3Blbi5zdGRvdXQgPSBpby5CeXRlc0lPKGRhdGEuZW5jb2RlKCkpCiAKLSAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihvcywgJ3BvcGVuJywgbW9ja19wb3Blbik6Ci0gICAgICAgICAgICBtYWMgPSB1dWlkLl9maW5kX21hYygKLSAgICAgICAgICAgICAgICBjb21tYW5kPSdpZmNvbmZpZycsCi0gICAgICAgICAgICAgICAgYXJncz0nJywKLSAgICAgICAgICAgICAgICBod19pZGVudGlmaWVycz1bJ2h3YWRkciddLAotICAgICAgICAgICAgICAgIGdldF9pbmRleD1sYW1iZGEgeDogeCArIDEsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hYywgMHgxMjM0NTY3ODkwYWIpCisgICAgICAgIHdpdGggdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3Qoc2h1dGlsLCAnd2hpY2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT0nL3NiaW4vaWZjb25maWcnKToKKyAgICAgICAgICAgIHdpdGggdW5pdHRlc3QubW9jay5wYXRjaC5vYmplY3Qoc3VicHJvY2VzcywgJ1BvcGVuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPXBvcGVuKToKKyAgICAgICAgICAgICAgICBtYWMgPSB1dWlkLl9maW5kX21hYygKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0naWZjb25maWcnLAorICAgICAgICAgICAgICAgICAgICBhcmdzPScnLAorICAgICAgICAgICAgICAgICAgICBod19pZGVudGlmaWVycz1bYidod2FkZHInXSwKKyAgICAgICAgICAgICAgICAgICAgZ2V0X2luZGV4PWxhbWJkYSB4OiB4ICsgMSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWMsIDB4MTIzNDU2Nzg5MGFiKQogCiAgICAgZGVmIGNoZWNrX25vZGUoc2VsZiwgbm9kZSwgcmVxdWlyZXM9Tm9uZSwgbmV0d29yaz1GYWxzZSk6CiAgICAgICAgIGlmIHJlcXVpcmVzIGFuZCBub2RlIGlzIE5vbmU6CkBAIC00NTQsNiArNDU0LDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnaWZjb25maWcnLCBUcnVlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQorICAgIGRlZiB0ZXN0X2lwX2dldG5vZGUoc2VsZik6CisgICAgICAgIG5vZGUgPSB1dWlkLl9pcF9nZXRub2RlKCkKKyAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdpcCcsIFRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICdyZXF1aXJlcyBQb3NpeCcpCiAgICAgZGVmIHRlc3RfYXJwX2dldG5vZGUoc2VsZik6CiAgICAgICAgIG5vZGUgPSB1dWlkLl9hcnBfZ2V0bm9kZSgpCiAgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnYXJwJywgVHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQppbmRleCBiNDYyNTg4Li45MjA3YTY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0xMiw3ICsxMiw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLCBydW5fdW5pdHRlc3QsCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgRW52aXJvbm1lbnRWYXJHdWFyZCwgcm10cmVlKQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5OCw4ICszOTgsNSBAQAogICAgICAgICBzZWxmLmFzc2VydF9waXBfbm90X2luc3RhbGxlZCgpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChCYXNpY1Rlc3QsIEVuc3VyZVBpcFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CmluZGV4IGY2YTA2NWQuLmViNTFiMmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQpAQCAtNSw3ICs1LDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5mb3JrX3dhaXQgaW1wb3J0IEZvcmtXYWl0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCByZWFwX2NoaWxkcmVuCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF9jaGlsZHJlbgogCiBpZiBub3QgaGFzYXR0cihvcywgJ2ZvcmsnKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib3MuZm9yayBub3QgZGVmaW5lZCIpCkBAIC0xOCw3ICsxOCw4IEBACiAgICAgICAgICMgVGhpcyBtYW55IGl0ZXJhdGlvbnMgY2FuIGJlIHJlcXVpcmVkLCBzaW5jZSBzb21lIHByZXZpb3VzbHkgcnVuCiAgICAgICAgICMgdGVzdHMgKGUuZy4gdGVzdF9jdHlwZXMpIGNvdWxkIGhhdmUgc3Bhd25lZCBhIGxvdCBvZiBjaGlsZHJlbgogICAgICAgICAjIHZlcnkgcXVpY2tseS4KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPD0gZGVhZGxpbmU6CiAgICAgICAgICAgICAjIHdhaXQzKCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cywgcnVzYWdlID0gb3Mud2FpdDMob3MuV05PSEFORykKQEAgLTMwLDkgKzMxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocnVzYWdlKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFdhaXQzVGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhaXQ0LnB5IGIvTGliL3Rlc3QvdGVzdF93YWl0NC5weQppbmRleCAzNTJjMTFhLi40Mzg2OWJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhaXQ0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkKQEAgLTUsNyArNSw3IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHN5cwogZnJvbSB0ZXN0LmZvcmtfd2FpdCBpbXBvcnQgRm9ya1dhaXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX2NoaWxkcmVuLCBnZXRfYXR0cmlidXRlCiAKICMgSWYgZWl0aGVyIG9mIHRoZXNlIGRvIG5vdCBleGlzdCwgc2tpcCB0aGlzIHRlc3QuCiBnZXRfYXR0cmlidXRlKG9zLCAnZm9yaycpCkBAIC0xOSwyMCArMTksMjAgQEAKICAgICAgICAgICAgICMgSXNzdWUgIzExMTg1OiB3YWl0NCBpcyBicm9rZW4gb24gQUlYIGFuZCB3aWxsIGFsd2F5cyByZXR1cm4gMAogICAgICAgICAgICAgIyB3aXRoIFdOT0hBTkcuCiAgICAgICAgICAgICBvcHRpb24gPSAwCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDw9IGRlYWRsaW5lOgogICAgICAgICAgICAgIyB3YWl0NCgpIHNob3VsZG4ndCBoYW5nLCBidXQgc29tZSBvZiB0aGUgYnVpbGRib3RzIHNlZW0gdG8gaGFuZwogICAgICAgICAgICAgIyBpbiB0aGUgZm9ya2luZyB0ZXN0cy4gIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzcGlkLCBzdGF0dXMsIHJ1c2FnZSA9IG9zLndhaXQ0KGNwaWQsIG9wdGlvbikKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGlkLCBjcGlkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydXNhZ2UpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoV2FpdDRUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CmluZGV4IGRkY2VhOGUuLmM3ZDJlNWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQpAQCAtNSw3ICs1LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGZyb20gdGVzdCBpbXBvcnQgd2FybmluZ190ZXN0cwogCkBAIC00NDQsNiArNDQ0LDQ0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKEJhZFN0cldhcm5pbmcoKSkKIAorICAgIGRlZiB0ZXN0X3dhcm5pbmdfY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlXYXJuaW5nQ2xhc3MoV2FybmluZyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTm9uV2FybmluZ1N1YmNsYXNzOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgcGFzc2luZyBhIG5vbi1zdWJjbGFzcyBvZiBXYXJuaW5nIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdiYWQgd2FybmluZyBjYXRlZ29yeScsICcnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICcsCisgICAgICAgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignYmFkIHdhcm5pbmcgY2F0ZWdvcnknLCBOb25XYXJuaW5nU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2FybmluZyBpbnN0YW5jZXMgYWxzbyByYWlzZSBhIFR5cGVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdiYWQgd2FybmluZyBjYXRlZ29yeScsIE15V2FybmluZ0NsYXNzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5yZXNldHdhcm5pbmdzKCkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCdkZWZhdWx0JykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhNeVdhcm5pbmdDbGFzcykgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignZ29vZCB3YXJuaW5nIGNhdGVnb3J5JywgTXlXYXJuaW5nQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBzdHIoY20ud2FybmluZykpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZykgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignZ29vZCB3YXJuaW5nIGNhdGVnb3J5JywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIHN0cihjbS53YXJuaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKE15V2FybmluZ0NsYXNzKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBNeVdhcm5pbmdDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbS53YXJuaW5nLCBXYXJuaW5nKQogCiBjbGFzcyBDV2FyblRlc3RzKFdhcm5UZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfd2FybmluZ3MKQEAgLTgzMyw3ICs4NzEsMTkgQEAKICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN0cihzeXMud2Fybm9wdGlvbnMpKSIsCiAgICAgICAgICAgICBQWVRIT05XQVJOSU5HUz0iaWdub3JlOjpEZXByZWNhdGlvbldhcm5pbmciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKLSAgICAgICAgICAgIGIiWydpZ25vcmU6OlVuaWNvZGVXYXJuaW5nJywgJ2lnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nJ10iKQorICAgICAgICAgICAgYiJbJ2lnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nJywgJ2lnbm9yZTo6VW5pY29kZVdhcm5pbmcnXSIpCisKKyAgICBkZWYgdGVzdF9jb25mbGljdGluZ19lbnZ2YXJfYW5kX2NvbW1hbmRfbGluZShzZWxmKToKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCItV2Vycm9yOjpEZXByZWNhdGlvbldhcm5pbmciLCAiLWMiLAorICAgICAgICAgICAgImltcG9ydCBzeXMsIHdhcm5pbmdzOyBzeXMuc3Rkb3V0LndyaXRlKHN0cihzeXMud2Fybm9wdGlvbnMpKTsgIgorICAgICAgICAgICAgIndhcm5pbmdzLndhcm4oJ01lc3NhZ2UnLCBEZXByZWNhdGlvbldhcm5pbmcpIiwKKyAgICAgICAgICAgIFBZVEhPTldBUk5JTkdTPSJkZWZhdWx0OjpEZXByZWNhdGlvbldhcm5pbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKKyAgICAgICAgICAgIGIiWydkZWZhdWx0OjpEZXByZWNhdGlvbldhcm5pbmcnLCAnZXJyb3I6OkRlcHJlY2F0aW9uV2FybmluZyddIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgW2IiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOiIsCisgICAgICAgICAgICAgYiIgIEZpbGUgXCI8c3RyaW5nPlwiLCBsaW5lIDEsIGluIDxtb2R1bGU+IiwKKyAgICAgICAgICAgICBiIkRlcHJlY2F0aW9uV2FybmluZzogTWVzc2FnZSJdKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICdhc2NpaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIG5vbi1hc2NpaSBmaWxlc3lzdGVtZW5jb2RpbmcnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDNlNzM0N2MuLmFmZDBiNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTcsNyArNyw4IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGNvcHkKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKICMgVXNlZCBpbiBSZWZlcmVuY2VzVGVzdENhc2UudGVzdF9yZWZfY3JlYXRlZF9kdXJpbmdfZGVsKCkgLgogcmVmX2Zyb21fZGVsID0gTm9uZQpAQCAtOTIsNiArOTMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja19iYXNpY19jYWxsYmFjayhjcmVhdGVfZnVuY3Rpb24pCiAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfY2FsbGJhY2soY3JlYXRlX2JvdW5kX21ldGhvZCkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NmdW5jdGlvbihzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBjcmVhdGVfY2Z1bmN0aW9uID0gX3Rlc3RjYXBpLmNyZWF0ZV9jZnVuY3Rpb24KKyAgICAgICAgZiA9IGNyZWF0ZV9jZnVuY3Rpb24oKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgZikKKyAgICAgICAgZGVsIGYKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3IoKSkKKyAgICAgICAgc2VsZi5jaGVja19iYXNpY19yZWYoY3JlYXRlX2NmdW5jdGlvbikKKyAgICAgICAgc2VsZi5jaGVja19iYXNpY19jYWxsYmFjayhjcmVhdGVfY2Z1bmN0aW9uKQorCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICBvID0gQygpCiAgICAgICAgIHJlZjEgPSB3ZWFrcmVmLnJlZihvLCBzZWxmLmNhbGxiYWNrKQpAQCAtMTU3NCw2ICsxNTg3LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAyKQogCisgICAgZGVmIHRlc3RfbWFrZV93ZWFrX3ZhbHVlZF9kaWN0X3JlcHIoc2VsZik6CisgICAgICAgIGRpY3QgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZGljdCksICc8V2Vha1ZhbHVlRGljdGlvbmFyeSBhdCAweC4qPicpCisKKyAgICBkZWYgdGVzdF9tYWtlX3dlYWtfa2V5ZWRfZGljdF9yZXByKHNlbGYpOgorICAgICAgICBkaWN0ID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkaWN0KSwgJzxXZWFrS2V5RGljdGlvbmFyeSBhdCAweC4qPicpCisKIGZyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogCiBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5VGVzdENhc2UobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CmluZGV4IGZiMjI4NzkuLjljZTY3MmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eSwgcmVmLCBXZWFrU2V0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBjb3B5CkBAIC00NDMsOCArNDQyLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG4yLCBuMSkKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFdlYWtTZXQpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDgzNjE4YjYuLjdhZmIyNGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtMjQ2LDggKzI0Niw1IEBACiAgICAgcmV0dXJuIF9faGF2ZV9zb3VuZGNhcmRfY2FjaGUKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmVlcFRlc3QsIE1lc3NhZ2VCZWVwVGVzdCwgUGxheVNvdW5kVGVzdCkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggNzA2OGE4MC4uNWRiZDFlNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyLCBjb250ZXh0bWFuYWdlcgotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiAKIGNsYXNzIE1vY2tDb250ZXh0TWFuYWdlcihfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIpOgpAQCAtNDU1LDcgKzQ1NCw4IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigiZnJvbSB3aXRoIikKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKICAgICAgICAgIyBGcm9tIGJ1ZyAxNDYyNDg1CkBAIC00ODIsNyArNDgyLDggQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBuZXh0KGl0ZXIoW10pKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgogICAgICAgICAjIEZyb20gYnVnIDE0NjI0ODUKQEAgLTczNywxNCArNzM4LDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIGIxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMCwgYjIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRmFpbHVyZVRlc3RDYXNlLCBOb25leGNlcHRpb25hbFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBOZXN0ZWROb25leGNlcHRpb25hbFRlc3RDYXNlLCBFeGNlcHRpb25hbFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBOb25Mb2NhbEZsb3dDb250cm9sVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIEFzc2lnbm1lbnRUYXJnZXRUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgRXhpdFN3YWxsb3dzRXhjZXB0aW9uVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIE5lc3RlZFdpdGgpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDU3MDRmYzcuLjExMmExYjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTM2OCw2ICszNjgsNyBAQAogCiAgICAgZGVmIHRlc3RNYXBwaW5nSW50ZXJmYWNlKHNlbGYpOgogICAgICAgICB0ZXN0ID0gWygneCcsJ3knKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oSGVhZGVycygpKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oSGVhZGVycyhbXSkpLDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEhlYWRlcnModGVzdFs6XSkpLDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSGVhZGVycyh0ZXN0WzpdKS5rZXlzKCksIFsneCddKQpAQCAtMzc1LDcgKzM3Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSGVhZGVycyh0ZXN0WzpdKS5pdGVtcygpLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KEhlYWRlcnModGVzdCkuaXRlbXMoKSwgdGVzdCkgICMgbXVzdCBiZSBjb3B5IQogCi0gICAgICAgIGg9SGVhZGVycyhbXSkKKyAgICAgICAgaCA9IEhlYWRlcnMoKQogICAgICAgICBkZWwgaFsnZm9vJ10gICAjIHNob3VsZCBub3QgcmFpc2UgYW4gZXJyb3IKIAogICAgICAgICBoWydGb28nXSA9ICdiYXInCkBAIC00MDAsOSArNDAxLDggQEAKICAgICBkZWYgdGVzdFJlcXVpcmVMaXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEhlYWRlcnMsICJmb28iKQogCi0KICAgICBkZWYgdGVzdEV4dHJhcyhzZWxmKToKLSAgICAgICAgaCA9IEhlYWRlcnMoW10pCisgICAgICAgIGggPSBIZWFkZXJzKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksJ1xyXG4nKQogCiAgICAgICAgIGguYWRkX2hlYWRlcignZm9vJywnYmFyJyxiYXo9InNwYW0iKQpAQCAtNjU4LDggKzY1OCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lkZV9lZmZlY3RzWydjbG9zZV9jYWxsZWQnXSwgVHJ1ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeGRybGliLnB5IGIvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKaW5kZXggNzA0OTZkNi4uM2RmNWYyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgeGRybGliCkBAIC03NCw5ICs3Myw1IEBACiAgICAgZGVmIHRlc3RfdWh5cGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc0NvbnZlcnNpb24oc2VsZi5wYWNrZXIucGFja191aHlwZXIsICdzdHJpbmcnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoWERSVGVzdCkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDb252ZXJzaW9uRXJyb3JUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CmluZGV4IGQ0YzdjNmUuLmM3M2U0YmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CkBAIC03MDQsNyArNzA0LDcgQEAKICAgICAgICAgICAgICdtYWMtcm9tYW4nLCAnbWFjLXR1cmtpc2gnLAogICAgICAgICAgICAgJ2lzbzIwMjItanAnLCAnaXNvMjAyMi1qcC0xJywgJ2lzbzIwMjItanAtMicsICdpc28yMDIyLWpwLTIwMDQnLAogICAgICAgICAgICAgJ2lzbzIwMjItanAtMycsICdpc28yMDIyLWpwLWV4dCcsCi0gICAgICAgICAgICAna29pOC1yJywgJ2tvaTgtdScsCisgICAgICAgICAgICAna29pOC1yJywgJ2tvaTgtdCcsICdrb2k4LXUnLCAna3oxMDQ4JywKICAgICAgICAgICAgICdoeicsICdwdGNwMTU0JywKICAgICAgICAgXQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gc3VwcG9ydGVkX2VuY29kaW5nczoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDgxNmFhODYuLmQwZGYzOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtNTUsNyArNTUsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbGVtZW50c2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKICAgICAgICAgIyBleHRyYQotICAgICAgICBzZWxmLmV4dHJhID0gc3RydWN0LmNhbGNzaXplKCdQaWlQNFAnKQorICAgICAgICBzZWxmLmV4dHJhID0gc3RydWN0LmNhbGNzaXplKCdQbm5QNFAnKQogCiAgICAgY2hlY2tfc2l6ZW9mID0gc3VwcG9ydC5jaGVja19zaXplb2YKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQppbmRleCA3YWUwZGNlLi45ODgwZjRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQpAQCAtMjg3LDcgKzI4Nyw3IEBACiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDcsMSwyLDMsNCw1KQogICAgICAgICB0ID0geG1scnBjbGliLkRhdGVUaW1lKGQpCi0gICAgICAgIHZhbCA9IjxEYXRlVGltZSAnMjAwNzAxMDJUMDM6MDQ6MDUnIGF0ICV4PiIgJSBpZCh0KQorICAgICAgICB2YWwgPSI8RGF0ZVRpbWUgJzIwMDcwMTAyVDAzOjA0OjA1JyBhdCAlI3g+IiAlIGlkKHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih0KSwgdmFsKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgpAQCAtNzEzLDYgKzcxMywyMyBAQAogICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnL1JQQzIgSFRUUC8xLjBcclxuQ29udGVudC1MZW5ndGg6IDEwMFxyXG5cclxuYnllJykKICAgICAgICAgY29ubi5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggeG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkgYXMgc2VydmVyOgorICAgICAgICAgICAgc2VydmVyLmFkZCgyLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZXJ2ZXIoJ3RyYW5zcG9ydCcpLl9jb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyKCd0cmFuc3BvcnQnKS5fY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfbWV0aG9kX2Vycm9yKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShVUkwpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuYWRkKDIsICJhIikKKyAgICAgICAgZXhjZXB0IHhtbHJwY2xpYi5GYXVsdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIoJ3RyYW5zcG9ydCcpLl9jb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSkKKwogCiBjbGFzcyBNdWx0aVBhdGhTZXJ2ZXJUZXN0Q2FzZShCYXNlU2VydmVyVGVzdENhc2UpOgogICAgIHRocmVhZEZ1bmMgPSBzdGF0aWNtZXRob2QoaHR0cF9tdWx0aV9zZXJ2ZXIpCkBAIC05MTksNiArOTM2LDcgQEAKICAgICAgICAgcCA9IHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShzZWxmLnVybCwgdHJhbnNwb3J0PXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCgndHJhbnNwb3J0JyksIHQpCiAKKwogIyBUaGlzIGlzIGEgY29udHJpdmVkIHdheSB0byBtYWtlIGEgZmFpbHVyZSBvY2N1ciBvbiB0aGUgc2VydmVyIHNpZGUKICMgaW4gb3JkZXIgdG8gdGVzdCB0aGUgX3NlbmRfdHJhY2ViYWNrX2hlYWRlciBmbGFnIG9uIHRoZSBzZXJ2ZXIKIGNsYXNzIEZhaWxpbmdNZXNzYWdlQ2xhc3MoaHR0cC5jbGllbnQuSFRUUE1lc3NhZ2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBhcHAucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGFwcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzM0MzgwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBhcHAucHkKQEAgLTAsMCArMSwzNDkgQEAKKyIiIlRlc3QgaGFybmVzcyBmb3IgdGhlIHppcGFwcCBtb2R1bGUuIiIiCisKK2ltcG9ydCBpbworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHppcGFwcAoraW1wb3J0IHppcGZpbGUKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitjbGFzcyBaaXBBcHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgemlwYXBwIG1vZHVsZSBmdW5jdGlvbmFsaXR5LiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodG1wZGlyLmNsZWFudXApCisgICAgICAgIHNlbGYudG1wZGlyID0gcGF0aGxpYi5QYXRoKHRtcGRpci5uYW1lKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmUoc2VsZik6CisgICAgICAgICMgVGVzdCBwYWNraW5nIGEgZGlyZWN0b3J5LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmVfd2l0aF9wYXRobGliKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeSB1c2luZyBQYXRoIG9iamVjdHMgZm9yIHNvdXJjZSBhbmQgdGFyZ2V0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXJjaGl2ZV93aXRoX3N1YmRpcnMoc2VsZik6CisgICAgICAgICMgVGVzdCBwYWNraW5nIGEgZGlyZWN0b3J5IGluY2x1ZGVzIGVudHJpZXMgZm9yIHN1YmRpcmVjdG9yaWVzLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIChzb3VyY2UgLyAnZm9vJykubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ2JhcicpLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdmb28nIC8gJ19faW5pdF9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0YXJnZXQpCisgICAgICAgIHRhcmdldC5zZWVrKDApCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHRhcmdldCwgJ3InKSBhcyB6OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZm9vLycsIHoubmFtZWxpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jhci8nLCB6Lm5hbWVsaXN0KCkpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXJjaGl2ZV9kZWZhdWx0X3RhcmdldChzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhY2tpbmcgYSBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgbmFtZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSkpCisgICAgICAgIGV4cGVjdGVkX3RhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZF90YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3Rfbm9fbWFpbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcGFja2luZyBhIGRpcmVjdG9yeSB3aXRoIG5vIF9fbWFpbl9fLnB5IGZhaWxzLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnZm9vLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGFwcC5aaXBBcHBFcnJvcik6CisgICAgICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpKQorCisgICAgZGVmIHRlc3RfbWFpbl9hbmRfbWFpbl9weShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc3VwcGx5aW5nIGEgbWFpbiBhcmd1bWVudCB3aXRoIF9fbWFpbl9fLnB5IGZhaWxzLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemlwYXBwLlppcEFwcEVycm9yKToKKyAgICAgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIG1haW49J3BrZy5tb2Q6Zm4nKQorCisgICAgZGVmIHRlc3RfbWFpbl93cml0dGVuKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgX19tYWluX18ucHkgaXMgd3JpdHRlbiBjb3JyZWN0bHkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdmb28ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIG1haW49J3BrZy5tb2Q6Zm4nKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShzdHIodGFyZ2V0KSwgJ3InKSBhcyB6OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX19tYWluX18ucHknLCB6Lm5hbWVsaXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIncGtnLm1vZC5mbigpJywgei5yZWFkKCdfX21haW5fXy5weScpKQorCisgICAgZGVmIHRlc3RfbWFpbl9vbmx5X3dyaXR0ZW5fb25jZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgZG9uJ3Qgd3JpdGUgbXVsdGlwbGUgX19tYWluX18ucHkgZmlsZXMuCisgICAgICAgICMgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gaGFkIHRoaXMgYnVnOyB6aXAgZmlsZXMgYWxsb3cKKyAgICAgICAgIyBtdWx0aXBsZSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgbmFtZQorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgICMgV3JpdGUgMiBmaWxlcywgYXMgdGhlIG9yaWdpbmFsIGJ1ZyB3cm90ZSBfX21haW5fXy5weQorICAgICAgICAjIG9uY2UgZm9yIGVhY2ggZmlsZSB3cml0dGVuIDotKAorICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL3Jldmlldy8yMzQ5MS9kaWZmLzEzOTgyL0xpYi96aXBhcHAucHkjbmV3Y29kZTY3TGliL3ppcGFwcC5weTo2NworICAgICAgICAjIChsaW5lIDY3KQorICAgICAgICAoc291cmNlIC8gJ2Zvby5weScpLnRvdWNoKCkKKyAgICAgICAgKHNvdXJjZSAvICdiYXIucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIG1haW49J3BrZy5tb2Q6Zm4nKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShzdHIodGFyZ2V0KSwgJ3InKSBhcyB6OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCB6Lm5hbWVsaXN0KCkuY291bnQoJ19fbWFpbl9fLnB5JykpCisKKyAgICBkZWYgdGVzdF9tYWluX3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGludmFsaWQgdmFsdWVzIGZvciBtYWluIGFyZSByZWplY3RlZC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICBwcm9ibGVtcyA9IFsKKyAgICAgICAgICAgICcnLCAnZm9vJywgJ2ZvbzonLCAnOmJhcicsICcxMjpiYXInLCAnYS5iLmMuOmQnLAorICAgICAgICAgICAgJy5hOmInLCAnYTpiLicsICdhOi5iJywgJ2E6c2lsbHkgbmFtZScKKyAgICAgICAgXQorICAgICAgICBmb3IgbWFpbiBpbiBwcm9ibGVtczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1haW49bWFpbik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh6aXBhcHAuWmlwQXBwRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPW1haW4pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X25vX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5vIHNoZWJhbmcgbGluZSBpcyB3cml0dGVuIHRvIHRoZSB0YXJnZXQgYnkgZGVmYXVsdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpKQorICAgICAgICB3aXRoIHRhcmdldC5vcGVuKCdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGYucmVhZCgyKSwgYicjIScpCisKKyAgICBkZWYgdGVzdF9jdXN0b21faW50ZXJwcmV0ZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgc2hlYmFuZyBsaW5lIHdpdGggYSBjdXN0b20gaW50ZXJwcmV0ZXIgaXMgd3JpdHRlbgorICAgICAgICAjIGNvcnJlY3RseS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgd2l0aCB0YXJnZXQub3BlbigncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMiksIGInIyEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3B5dGhvblxuJywgZi5yZWFkbGluZSgpKQorCisgICAgZGVmIHRlc3RfcGFja190b19maWxlb2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gcGFjayB0byBhIGZpbGUgb2JqZWN0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHRhcmdldCwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKGInIyFweXRob25cbicpKQorCisgICAgZGVmIHRlc3RfcmVhZF9zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gcmVhZCB0aGUgc2hlYmFuZyBsaW5lIGNvcnJlY3RseS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHN0cih0YXJnZXQpKSwgJ3B5dGhvbicpCisKKyAgICBkZWYgdGVzdF9yZWFkX21pc3Npbmdfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcmVhZGluZyB0aGUgc2hlYmFuZyBsaW5lIG9mIGEgZmlsZSB3aXRob3V0IG9uZSByZXR1cm5zIE5vbmUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHN0cih0YXJnZXQpKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X21vZGlmeV9zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY2hhbmdlIHRoZSBzaGViYW5nIG9mIGEgZmlsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IHNlbGYudG1wZGlyIC8gJ2NoYW5nZWQucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHRhcmdldCksIHN0cihuZXdfdGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbjIuNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIobmV3X3RhcmdldCkpLCAncHl0aG9uMi43JykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3NoZWJhbmdfdG9fZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIGNoYW5nZSB0aGUgc2hlYmFuZyBvZiBhIGZpbGUsIHdyaXRpbmcgdGhlIHJlc3VsdCB0byBhCisgICAgICAgICMgZmlsZSBvYmplY3QuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cih0YXJnZXQpLCBuZXdfdGFyZ2V0LCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld190YXJnZXQuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKGInIyFweXRob24yLjdcbicpKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3BhdGhvYmooc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBjb3B5IGFuIGFyY2hpdmUgdXNpbmcgYW4gcGF0aGxpYi5QYXRoIG9iamVjdAorICAgICAgICAjIGZvciB0aGUgc291cmNlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldDEgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQxLnB5eicKKyAgICAgICAgdGFyZ2V0MiA9IHNlbGYudG1wZGlyIC8gJ3RhcmdldDIucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQxLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHRhcmdldDEsIHRhcmdldDIsIGludGVycHJldGVyPSdweXRob24yLjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIodGFyZ2V0MiksICdweXRob24yLjcnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBjb3B5IGFuIGFyY2hpdmUgdXNpbmcgYW4gb3BlbiBmaWxlIG9iamVjdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB0ZW1wX2FyY2hpdmUgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0ZW1wX2FyY2hpdmUsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHRlbXBfYXJjaGl2ZS5zZWVrKDApCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZSh0ZW1wX2FyY2hpdmUsIG5ld190YXJnZXQsIGludGVycHJldGVyPSdweXRob24yLjcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3X3RhcmdldC5nZXR2YWx1ZSgpLnN0YXJ0c3dpdGgoYicjIXB5dGhvbjIuN1xuJykpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgc2hlYmFuZyBmcm9tIGEgZmlsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IHNlbGYudG1wZGlyIC8gJ2NoYW5nZWQucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHRhcmdldCksIHN0cihuZXdfdGFyZ2V0KSwgaW50ZXJwcmV0ZXI9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHN0cihuZXdfdGFyZ2V0KSksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9jb250ZW50X29mX2NvcGllZF9hcmNoaXZlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBjb3B5aW5nIGFuIGFyY2hpdmUgZG9lc24ndCBjb3JydXB0IGl0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHRhcmdldCwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgdGFyZ2V0LnNlZWsoMCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHRhcmdldCwgbmV3X3RhcmdldCwgaW50ZXJwcmV0ZXI9Tm9uZSkKKyAgICAgICAgbmV3X3RhcmdldC5zZWVrKDApCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKG5ld190YXJnZXQsICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHoubmFtZWxpc3QoKSksIHsnX19tYWluX18ucHknfSkKKworICAgICMgKFVuaXggb25seSkgdGVzdHMgdGhhdCBhcmNoaXZlcyB3aXRoIHNoZWJhbmcgbGluZXMgYXJlIG1hZGUgZXhlY3V0YWJsZQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IGFuIGV4ZWN1dGFibGUgYml0JykKKyAgICBkZWYgdGVzdF9zaGViYW5nX2lzX2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFuIGFyY2hpdmUgd2l0aCBhIHNoZWJhbmcgbGluZSBpcyBtYWRlIGV4ZWN1dGFibGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuc3RhdCgpLnN0X21vZGUgJiBzdGF0LlNfSUVYRUMpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ1dpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCBhbiBleGVjdXRhYmxlIGJpdCcpCisgICAgZGVmIHRlc3Rfbm9fc2hlYmFuZ19pc19ub3RfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYW4gYXJjaGl2ZSB3aXRoIG5vIHNoZWJhbmcgbGluZSBpcyBub3QgbWFkZSBleGVjdXRhYmxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGFyZ2V0LnN0YXQoKS5zdF9tb2RlICYgc3RhdC5TX0lFWEVDKQorCisKK2NsYXNzIFppcEFwcENtZGxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgemlwYXBwIG1vZHVsZSBjb21tYW5kIGxpbmUgQVBJLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodG1wZGlyLmNsZWFudXApCisgICAgICAgIHNlbGYudG1wZGlyID0gcGF0aGxpYi5QYXRoKHRtcGRpci5uYW1lKQorCisgICAgZGVmIG1ha2VfYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYW4gYXJjaGl2ZSB3aXRoIG5vIHNoZWJhbmcgbGluZSBpcyBub3QgbWFkZSBleGVjdXRhYmxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldCkKKyAgICAgICAgcmV0dXJuIHRhcmdldAorCisgICAgZGVmIHRlc3RfY21kbGluZV9jcmVhdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgYmFzaWMgY29tbWFuZCBsaW5lIEFQSS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICBhcmdzID0gW3N0cihzb3VyY2UpXQorICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICB0YXJnZXQgPSBzb3VyY2Uud2l0aF9zdWZmaXgoJy5weXonKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY29weShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvcHlpbmcgYW4gYXJjaGl2ZS4KKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLm1ha2VfYXJjaGl2ZSgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3RhcmdldC5weXonCisgICAgICAgIGFyZ3MgPSBbc3RyKG9yaWdpbmFsKSwgJy1vJywgc3RyKHRhcmdldCldCisgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3RfY21kbGluZV9jb3B5X2lucGxhY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBjb3B5aW5nIGFuIGFyY2hpdmUgaW4gcGxhY2UgZmFpbHMuCisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQucHl6JworICAgICAgICBhcmdzID0gW3N0cihvcmlnaW5hbCksICctbycsIHN0cihvcmlnaW5hbCldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIG5vbi16ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY20uZXhjZXB0aW9uLmNvZGUpCisKKyAgICBkZWYgdGVzdF9jbWRsaW5lX2NvcHlfY2hhbmdlX21haW4oc2VsZik6CisgICAgICAgICMgVGVzdCBjb3B5aW5nIGFuIGFyY2hpdmUgZG9lc24ndCBhbGxvdyBjaGFuZ2luZyBfX21haW5fXy5weS4KKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLm1ha2VfYXJjaGl2ZSgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3RhcmdldC5weXonCisgICAgICAgIGFyZ3MgPSBbc3RyKG9yaWdpbmFsKSwgJy1vJywgc3RyKHRhcmdldCksICctbScsICdmb286YmFyJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBjbToKKyAgICAgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgICMgUHJvZ3JhbSBzaG91bGQgZXhpdCB3aXRoIGEgbm9uLXplcm8gcmV0dXJtIGNvZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbS5leGNlcHRpb24uY29kZSkKKworICAgIEBwYXRjaCgnc3lzLnN0ZG91dCcsIG5ld19jYWxsYWJsZT1pby5TdHJpbmdJTykKKyAgICBkZWYgdGVzdF9pbmZvX2NvbW1hbmQoc2VsZiwgbW9ja19zdGRvdXQpOgorICAgICAgICAjIFRlc3QgdGhlIG91dHB1dCBvZiB0aGUgaW5mbyBjb21tYW5kLgorICAgICAgICB0YXJnZXQgPSBzZWxmLm1ha2VfYXJjaGl2ZSgpCisgICAgICAgIGFyZ3MgPSBbc3RyKHRhcmdldCksICctLWluZm8nXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGNtOgorICAgICAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgIyBQcm9ncmFtIHNob3VsZCBleGl0IHdpdGggYSB6ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5jb2RlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tfc3Rkb3V0LmdldHZhbHVlKCksICJJbnRlcnByZXRlcjogPG5vbmU+XG4iKQorCisgICAgZGVmIHRlc3RfaW5mb19lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBpbmZvIGNvbW1hbmQgZmFpbHMgd2hlbiB0aGUgYXJjaGl2ZSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnZHVtbXkucHl6JworICAgICAgICBhcmdzID0gW3N0cih0YXJnZXQpLCAnLS1pbmZvJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBjbToKKyAgICAgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgICMgUHJvZ3JhbSBzaG91bGQgZXhpdCB3aXRoIGEgbm9uLXplcm8gcmV0dXJtIGNvZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbS5leGNlcHRpb24uY29kZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CmluZGV4IDBjNGM1NzkuLjY3ZTg1NzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKQEAgLTMzMCw2ICszMzAsMzcgQEAKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgemlwb3Blbi5yZWFkMSgxMDApOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgZm5hbWUgPSAnZmlsZS5uYW1lJworICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAndycsIHNlbGYuY29tcHJlc3Npb24pIGFzIHppcGZwOgorICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgZm5hbWUpCisgICAgICAgICAgICAgICAgciA9IHJlcHIoemlwZnApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kZT0ndyciLCByKQorCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGZwOgorICAgICAgICAgICAgICAgIHIgPSByZXByKHppcGZwKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZW5hbWU9JXInICUgZiwgcikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlPSVyJyAlIGYsIHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kZT0nciciLCByKQorICAgICAgICAgICAgICAgIHIgPSByZXByKHppcGZwLmdldGluZm8oZm5hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVuYW1lPSVyJyAlIGZuYW1lLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVtb2RlPScsIHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZV9zaXplPScsIHIpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21wcmVzc2lvbiAhPSB6aXBmaWxlLlpJUF9TVE9SRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbXByZXNzX3R5cGU9JywgcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY29tcHJlc3Nfc2l6ZT0nLCByKQorICAgICAgICAgICAgICAgIHdpdGggemlwZnAub3BlbihmbmFtZSkgYXMgemlwb3BlbjoKKyAgICAgICAgICAgICAgICAgICAgciA9IHJlcHIoemlwb3BlbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbmFtZT0lcicgJSBmbmFtZSwgcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kZT0nciciLCByKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXByZXNzaW9uICE9IHppcGZpbGUuWklQX1NUT1JFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbXByZXNzX3R5cGU9JywgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdbY2xvc2VkXScsIHJlcHIoemlwb3BlbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdbY2xvc2VkXScsIHJlcHIoemlwZnApKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxpbmsoVEVTVEZOKQogICAgICAgICB1bmxpbmsoVEVTVEZOMikKQEAgLTY1OCw3ICs2ODksNyBAQAogICAgICAgICBzZWxmLnJlcXVpcmVzV3JpdGVBY2Nlc3Mob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCkgYXMgdCwgemlwZmlsZS5QeVppcEZpbGUodCwgInciKSBhcyB6aXBmcDoKICAgICAgICAgICAgIGZuID0gX19maWxlX18KLSAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcucHljJykgb3IgZm4uZW5kc3dpdGgoJy5weW8nKToKKyAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcucHljJyk6CiAgICAgICAgICAgICAgICAgcGF0aF9zcGxpdCA9IGZuLnNwbGl0KG9zLnNlcCkKICAgICAgICAgICAgICAgICBpZiBvcy5hbHRzZXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHBhdGhfc3BsaXQuZXh0ZW5kKGZuLnNwbGl0KG9zLmFsdHNlcCkpCkBAIC02NzUsNyArNzA2LDcgQEAKIAogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0LCB6aXBmaWxlLlB5WmlwRmlsZSh0LCAidyIpIGFzIHppcGZwOgogICAgICAgICAgICAgZm4gPSBfX2ZpbGVfXwotICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoKCcucHljJywgJy5weW8nKSk6CisgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICAgICAgICAgIGZuID0gZm5bOi0xXQogCiAgICAgICAgICAgICB6aXBmcC53cml0ZXB5KGZuLCAidGVzdHBhY2thZ2UiKQpAQCAtNzMyLDEwICs3NjMsOCBAQAogICAgICAgICBpbXBvcnQgZW1haWwKICAgICAgICAgcGFja2FnZWRpciA9IG9zLnBhdGguZGlybmFtZShlbWFpbC5fX2ZpbGVfXykKICAgICAgICAgc2VsZi5yZXF1aXJlc1dyaXRlQWNjZXNzKHBhY2thZ2VkaXIpCi0gICAgICAgICMgdXNlIC5weWMgaWYgcnVubmluZyB0ZXN0IGluIG9wdGltaXphdGlvbiBtb2RlLAotICAgICAgICAjIHVzZSAucHlvIGlmIHJ1bm5pbmcgdGVzdCBpbiBkZWJ1ZyBtb2RlCiAgICAgICAgIG9wdGxldmVsID0gMSBpZiBfX2RlYnVnX18gZWxzZSAwCi0gICAgICAgIGV4dCA9ICcucHlvJyBpZiBvcHRsZXZlbCA9PSAxIGVsc2UgJy5weWMnCisgICAgICAgIGV4dCA9ICcucHljJwogCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHQsIFwKICAgICAgICAgICAgICB6aXBmaWxlLlB5WmlwRmlsZSh0LCAidyIsIG9wdGltaXplPW9wdGxldmVsKSBhcyB6aXBmcDoKQEAgLTgwOSwxMSArODM4LDEwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiU3ludGF4RXJyb3IiLCBzLmdldHZhbHVlKCkpCiAKICAgICAgICAgICAgICAgICAjIGFzIGl0IHdpbGwgbm90IGhhdmUgY29tcGlsZWQgdGhlIHB5dGhvbiBmaWxlLCBpdCB3aWxsCi0gICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSAucHkgZmlsZSBub3QgLnB5YyBvciAucHlvCisgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSAucHkgZmlsZSBub3QgLnB5YwogICAgICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21vZDEucHknLCBuYW1lcykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtb2QxLnB5YycsIG5hbWVzKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21vZDEucHlvJywgbmFtZXMpCiAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJtdHJlZShURVNURk4yKQpAQCAtMTA3NCw2ICsxMTAyLDE5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpmLmZpbGVsaXN0WzBdLmZpbGVuYW1lLCAiZm9vLnR4dCIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpmLmZpbGVsaXN0WzFdLmZpbGVuYW1lLCAiXHhmNi50eHQiKQogCisgICAgZGVmIHRlc3RfZXhjbHVzaXZlX2NyZWF0ZV96aXBfZmlsZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBleGNsdXNpdmUgY3JlYXRpbmcgYSBuZXcgemlwZmlsZS4iIiIKKyAgICAgICAgdW5saW5rKFRFU1RGTjIpCisgICAgICAgIGZpbGVuYW1lID0gJ3Rlc3RmaWxlLnR4dCcKKyAgICAgICAgY29udGVudCA9IGInaGVsbG8sIHdvcmxkLiB0aGlzIGlzIHNvbWUgY29udGVudC4nCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ4IiwgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKGZpbGVuYW1lLCBjb250ZW50KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICAgICB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgIngiLCB6aXBmaWxlLlpJUF9TVE9SRUQpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJyIikgYXMgemlwZnA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGZwLm5hbWVsaXN0KCksIFtmaWxlbmFtZV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGZwLnJlYWQoZmlsZW5hbWUpLCBjb250ZW50KQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX25vbl9leGlzdGVudF9maWxlX2Zvcl9hcHBlbmQoc2VsZik6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CiAgICAgICAgICAgICBvcy51bmxpbmsoVEVTVEZOKQpAQCAtMTY0OCw2ICsxNjg5LDcyIEBACiAgICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9MWk1BCiAKIAorIyBQcml2aWRlIHRoZSB0ZWxsKCkgbWV0aG9kIGJ1dCBub3Qgc2VlaygpCitjbGFzcyBUZWxsYWJsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnApOgorICAgICAgICBzZWxmLmZwID0gZnAKKyAgICAgICAgc2VsZi5vZmZzZXQgPSAwCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIG4gPSBzZWxmLmZwLndyaXRlKGRhdGEpCisgICAgICAgIHNlbGYub2Zmc2V0ICs9IG4KKyAgICAgICAgcmV0dXJuIG4KKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKKworICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisKK2NsYXNzIFVuc2Vla2FibGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc2VsZi5mcCA9IGZwCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLmZwLndyaXRlKGRhdGEpCisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuZnAuZmx1c2goKQorCitjbGFzcyBVbnNlZWthYmxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dyaXRlc3RyKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgorICAgICAgICAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cignb25lcycsIGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3R3b3MnLCBiJzIyMicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKClbOjVdLCBiJ2FiY1BLJykKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCBtb2RlPSdyJykgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicyMjInKQorCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgIGZvciB3cmFwcGVyIGluIChsYW1iZGEgZjogZiksIFRlbGxhYmxlLCBVbnNlZWthYmxlOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qod3JhcHBlcj13cmFwcGVyKToKKyAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgZi53cml0ZShiJ2FiYycpCisgICAgICAgICAgICAgICAgYmYgPSBpby5CdWZmZXJlZFdyaXRlcihmKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHdyYXBwZXIoYmYpLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjI6CisgICAgICAgICAgICAgICAgICAgICAgICBmMi53cml0ZShiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgJ29uZXMnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYyLndyaXRlKGInMjIyJykKKyAgICAgICAgICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCAndHdvcycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKClbOjVdLCBiJ2FiY1BLJykKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCBtb2RlPSdyJykgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicyMjInKQorCisKIEByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAY2xhc3NtZXRob2QKQEAgLTE2NjQsMzUgKzE3NzEsNTIgQEAKICAgICBkZWYgdGVzdF9zYW1lX2ZpbGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgKHdoZW4gdGhlIFppcEZpbGUgaXMgaW4gY29udHJvbCBvZiBjcmVhdGluZyBmaWxlIG9iamVjdHMpCiAgICAgICAgICMgbXVsdGlwbGUgb3BlbigpIGNhbGxzIGNhbiBiZSBtYWRlIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyLgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMjoKLSAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCi0gICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgZGF0YTIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYpCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCBtb2RlPSJyIikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4yOgorICAgICAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIGRhdGEyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCiAKICAgICBkZWYgdGVzdF9kaWZmZXJlbnRfZmlsZShzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCAod2hlbiB0aGUgWmlwRmlsZSBpcyBpbiBjb250cm9sIG9mIGNyZWF0aW5nIGZpbGUgb2JqZWN0cykKICAgICAgICAgIyBtdWx0aXBsZSBvcGVuKCkgY2FsbHMgY2FuIGJlIG1hZGUgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIGVhY2ggb3RoZXIuCi0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoVEVTVEZOMikKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW4yOgotICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQotICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQotICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKLSAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0iciIpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCiAKICAgICBkZWYgdGVzdF9pbnRlcmxlYXZlZChzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCAod2hlbiB0aGUgWmlwRmlsZSBpcyBpbiBjb250cm9sIG9mIGNyZWF0aW5nIGZpbGUgb2JqZWN0cykKICAgICAgICAgIyBtdWx0aXBsZSBvcGVuKCkgY2FsbHMgY2FuIGJlIG1hZGUgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIGVhY2ggb3RoZXIuCi0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoVEVTVEZOMikKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW4yOgorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYpCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCBtb2RlPSJyIikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW4yOgorICAgICAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKKworICAgIGRlZiB0ZXN0X3JlYWRfYWZ0ZXJfY2xvc2Uoc2VsZik6CisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZikKKyAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHpvcGVuMSA9IHN0YWNrLmVudGVyX2NvbnRleHQoemlwZi5vcGVuKCdvbmVzJykpCisgICAgICAgICAgICAgICAgICAgIHpvcGVuMiA9IHN0YWNrLmVudGVyX2NvbnRleHQoemlwZi5vcGVuKCd0d29zJykpCiAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCiAgICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCiAgICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQpAQCAtMTcwMCw0MyArMTgyNCwzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCiAKLSAgICBkZWYgdGVzdF9yZWFkX2FmdGVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKLSAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKLSAgICAgICAgICAgICAgICB6b3BlbjEgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3Blbignb25lcycpKQotICAgICAgICAgICAgICAgIHpvcGVuMiA9IHN0YWNrLmVudGVyX2NvbnRleHQoemlwZi5vcGVuKCd0d29zJykpCi0gICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQotICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQotICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQotCiAgICAgZGVmIHRlc3RfcmVhZF9hZnRlcl93cml0ZShzZWxmKToKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3cnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKLSAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQotICAgICAgICAgICAgemlwZi53cml0ZXN0cigndHdvcycsIHNlbGYuZGF0YTIpCi0gICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMToKLSAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMVs6NTAwXSkKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgotICAgICAgICAgICAgZGF0YTEgPSB6aXBmLnJlYWQoJ29uZXMnKQotICAgICAgICAgICAgZGF0YTIgPSB6aXBmLnJlYWQoJ3R3b3MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAndycsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgorICAgICAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTFbOjUwMF0pCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgZGF0YTEgPSB6aXBmLnJlYWQoJ29uZXMnKQorICAgICAgICAgICAgICAgIGRhdGEyID0gemlwZi5yZWFkKCd0d29zJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCiAgICAgZGVmIHRlc3Rfd3JpdGVfYWZ0ZXJfcmVhZChzZWxmKToKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKLSAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjE6Ci0gICAgICAgICAgICAgICAgem9wZW4xLnJlYWQoNTAwKQotICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAncicpIGFzIHppcGY6Ci0gICAgICAgICAgICBkYXRhMSA9IHppcGYucmVhZCgnb25lcycpCi0gICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJ3IiwgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjE6CisgICAgICAgICAgICAgICAgICAgIHpvcGVuMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cigndHdvcycsIHNlbGYuZGF0YTIpCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgZGF0YTEgPSB6aXBmLnJlYWQoJ29uZXMnKQorICAgICAgICAgICAgICAgIGRhdGEyID0gemlwZi5yZWFkKCd0d29zJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCiAgICAgZGVmIHRlc3RfbWFueV9vcGVucyhzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCByZWFkKCkgYW5kIG9wZW4oKSBwcm9tcHRseSBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQppbmRleCAxZTM1MWM4Li5hOTdhNzc4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQpAQCAtNTEsNyArNTEsNyBAQAogVEVNUF9aSVAgPSBvcy5wYXRoLmFic3BhdGgoImp1bms5NTE0Mi56aXAiKQogCiBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKFRFU1RNT0QgKyAnLnB5JykKLXB5Y19leHQgPSAoJy5weWMnIGlmIF9fZGVidWdfXyBlbHNlICcucHlvJykKK3B5Y19leHQgPSAnLnB5YycKIAogCiBjbGFzcyBJbXBvcnRIb29rc0Jhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00NTAsNyArNDUwLDkgQEAKICAgICAgICAgZmQgPSBvcy5vcGVuKFRFU1RNT0QsIG9zLk9fQ1JFQVQsIDAwMCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFppcEZhaWx1cmUoVEVTVE1PRCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh6aXBpbXBvcnQuWmlwSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihURVNUTU9EKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgIyBJZiB3ZSBsZWF2ZSAidGhlIHJlYWQtb25seSBiaXQiIHNldCBvbiBXaW5kb3dzLCBub3RoaW5nIGNhbgogICAgICAgICAgICAgIyBkZWxldGUgVEVTVE1PRCwgYW5kIGxhdGVyIHRlc3RzIHN1ZmZlciBib2d1cyBmYWlsdXJlcy4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDY2YzM1NTcuLjU5MTM2MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTQsOCArMTQsOCBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHBkYgogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBfZGlyLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfc2NyaXB0KQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3NjcmlwdCkKIAogdmVyYm9zZSA9IHRlc3Quc3VwcG9ydC52ZXJib3NlCiAKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAjIFVzZSB0aGUgb2JqZWN0J3MgZnVsbHkgcXVhbGlmaWVkIG5hbWUgaWYgaXQgaGFzIG9uZQogICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIG1vZHVsZSdzIG5hbWUKICAgICB0cnk6Ci0gICAgICAgIG5hbWUgPSAiJXMuJXMiICUgKG9iai5fX21vZHVsZV9fLCBvYmouX19uYW1lX18pCisgICAgICAgIG5hbWUgPSAiJXMuJXMiICUgKG9iai5fX21vZHVsZV9fLCBvYmouX19xdWFsbmFtZV9fKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXwogICAgIGZvciBleGFtcGxlIGluIGZpbmRlci5maW5kKG9iaiwgbmFtZSwgbW9kdWxlKToKQEAgLTc4LDcgKzc4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2luc3BlY3RfZ2V0c291cmNlX2lzc3VlNDIyMyhzZWxmKToKICAgICAgICAgdGVzdF9zcmMgPSAiZGVmIGZvbygpOiBwYXNzXG4iCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBpbml0X25hbWUgPSBtYWtlX3NjcmlwdChkLCAnX19pbml0X18nLCB0ZXN0X3NyYykKICAgICAgICAgICAgIG5hbWVfaW5femlwID0gb3MucGF0aC5qb2luKCd6aXBfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoaW5pdF9uYW1lKSkKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2RfbmFtZS5yZXBsYWNlKCJzYW1wbGVfIiwgInNhbXBsZV96aXBwZWRfIikKICAgICAgICAgICAgIHNhbXBsZV9zb3VyY2VzW21vZF9uYW1lXSA9IHNyYwogCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICd0ZXN0X3ppcHBlZF9kb2N0ZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcmMpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoZCwgJ3Rlc3RfemlwJywKQEAgLTE5NSw3ICsxOTUsNyBAQAogICAgICAgICAgICAgICAgICAgICBkb2N0ZXN0LnRlc3Rtb2QoKQogICAgICAgICAgICAgICAgICAgICAiIiIpCiAgICAgICAgIHBhdHRlcm4gPSAnRmlsZSAiJXMiLCBsaW5lIDIsIGluICVzJwotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgZDoKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBtYWtlX3NjcmlwdChkLCAnc2NyaXB0JywgdGVzdF9zcmMpCiAgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBwYXR0ZXJuICUgKHNjcmlwdF9uYW1lLCAiX19tYWluX18uVGVzdCIpCkBAIC0yMjIsNyArMjIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHBkYgogICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnJ1bmNhbGwoZikKICAgICAgICAgICAgICAgICAgICAgIiIiKQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgZDoKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBtYWtlX3NjcmlwdChkLCAnc2NyaXB0JywgdGVzdF9zcmMpCiAgICAgICAgICAgICBwID0gc3Bhd25fcHl0aG9uKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcC5zdGRpbi53cml0ZShiJ2xcbicpCkBAIC0yMzgsOSArMjM4LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5ub3JtY2FzZShydW5fbmFtZS5lbmNvZGUoJ3V0Zi04JykpLCBkYXRhKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFppcFN1cHBvcnRUZXN0cykKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96bGliLnB5IGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CmluZGV4IDFkYWE4ZjguLmJkOTM1ZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKQEAgLTcxMCwxNiArNzEwLDUgQEAKICIiIgogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVmVyc2lvblRlc3RDYXNlLAotICAgICAgICBDaGVja3N1bVRlc3RDYXNlLAotICAgICAgICBDaGVja3N1bUJpZ0J1ZmZlclRlc3RDYXNlLAotICAgICAgICBFeGNlcHRpb25UZXN0Q2FzZSwKLSAgICAgICAgQ29tcHJlc3NUZXN0Q2FzZSwKLSAgICAgICAgQ29tcHJlc3NPYmplY3RUZXN0Q2FzZQotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB1bml0dGVzdC5tYWluKCkgIyBYWFgKLSAgICAjIyN0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weSBiL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkKaW5kZXggYWZlNTBkMi4uMTM4ZjI1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weQorKysgYi9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5CkBAIC00LDIyICs0LDI0IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFN1cHByZXNzQ3Jhc2hSZXBvcnQKIAotdmVyYm9zZSA9IChzeXMuYXJndlsxXSA9PSAndicpCi10cnk6Ci0gICAgZmQgPSBpbnQoc3lzLmFyZ3ZbMl0pCi0KK3dpdGggU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgIHZlcmJvc2UgPSAoc3lzLmFyZ3ZbMV0gPT0gJ3YnKQogICAgIHRyeToKLSAgICAgICAgb3Mud3JpdGUoZmQsIGIiYmxhdCIpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICMgU3VjY2VzcyAtLSBjb3VsZCBub3Qgd3JpdGUgdG8gZmQuCi0gICAgICAgIHN5cy5leGl0KDApCi0gICAgZWxzZToKLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImZkICVkIGlzIG9wZW4gaW4gY2hpbGQiICUgZmQpCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGZkID0gaW50KHN5cy5hcmd2WzJdKQogCi1leGNlcHQgRXhjZXB0aW9uOgotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHJhaXNlCi0gICAgc3lzLmV4aXQoMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIiYmxhdCIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBTdWNjZXNzIC0tIGNvdWxkIG5vdCB3cml0ZSB0byBmZC4KKyAgICAgICAgICAgIHN5cy5leGl0KDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImZkICVkIGlzIG9wZW4gaW4gY2hpbGQiICUgZmQpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9MaWIvdGV4dHdyYXAucHkgYi9MaWIvdGV4dHdyYXAucHkKaW5kZXggNTg4NjdmOS4uM2FkM2UxOCAxMDA2NDQKLS0tIGEvTGliL3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXh0d3JhcC5weQpAQCAtNzksMTAgKzc5LDI1IEBACiAgICAgIyBzcGxpdHMgaW50bwogICAgICMgICBIZWxsby8gL3RoZXJlLyAvLS0vIC95b3UvIC9nb29mLS9iYWxsLC8gL3VzZS8gL3RoZS8gLy1iLyAvb3B0aW9uIQogICAgICMgKGFmdGVyIHN0cmlwcGluZyBvdXQgZW1wdHkgc3RyaW5ncykuCi0gICAgd29yZHNlcF9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgIHInKFxzK3wnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW55IHdoaXRlc3BhY2UKLSAgICAgICAgcidbXlxzXHddKlx3K1teMC05XFddLSg/PVx3K1teMC05XFddKXwnICAgIyBoeXBoZW5hdGVkIHdvcmRzCi0gICAgICAgIHInKD88PVtcd1whXCJcJ1wmXC5cLFw/XSktezIsfSg/PVx3KSknKSAgICMgZW0tZGFzaAorICAgIHdvcmRfcHVuY3QgPSByJ1tcdyEiXCcmLiw/XScKKyAgICBsZXR0ZXIgPSByJ1teXGRcV10nCisgICAgd29yZHNlcF9yZSA9IHJlLmNvbXBpbGUocicnJworICAgICAgICAoICMgYW55IHdoaXRlc3BhY2UKKyAgICAgICAgICBccysKKyAgICAgICAgfCAjIGVtLWRhc2ggYmV0d2VlbiB3b3JkcworICAgICAgICAgICg/PD0lKHdwKXMpIC17Mix9ICg/PVx3KQorICAgICAgICB8ICMgd29yZCwgcG9zc2libHkgaHlwaGVuYXRlZAorICAgICAgICAgIFxTKz8gKD86CisgICAgICAgICAgICAjIGh5cGhlbmF0ZWQgd29yZAorICAgICAgICAgICAgICAtKD86ICg/PD0lKGx0KXN7Mn0tKSB8ICg/PD0lKGx0KXMtJShsdClzLSkpCisgICAgICAgICAgICAgICg/PSAlKGx0KXMgLT8gJShsdClzKQorICAgICAgICAgICAgfCAjIGVuZCBvZiB3b3JkCisgICAgICAgICAgICAgICg/PVxzfFxaKQorICAgICAgICAgICAgfCAjIGVtLWRhc2gKKyAgICAgICAgICAgICAgKD88PSUod3ApcykgKD89LXsyLH1cdykKKyAgICAgICAgICAgICkKKyAgICAgICAgKScnJyAlIHsnd3AnOiB3b3JkX3B1bmN0LCAnbHQnOiBsZXR0ZXJ9LCByZS5WRVJCT1NFKQorICAgIGRlbCB3b3JkX3B1bmN0LCBsZXR0ZXIKIAogICAgICMgVGhpcyBsZXNzIGZ1bmt5IGxpdHRsZSByZWdleCBqdXN0IHNwbGl0IG9uIHJlY29nbml6ZWQgc3BhY2VzLiBFLmcuCiAgICAgIyAgICJIZWxsbyB0aGVyZSAtLSB5b3UgZ29vZi1iYWxsLCB1c2UgdGhlIC1iIG9wdGlvbiEiCmRpZmYgLS1naXQgYS9MaWIvdGhyZWFkaW5nLnB5IGIvTGliL3RocmVhZGluZy5weQppbmRleCAzN2FhM2I4Li4yNGNjOTExIDEwMDY0NAotLS0gYS9MaWIvdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90aHJlYWRpbmcucHkKQEAgLTMsMTAgKzMsNyBAQAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgX3RocmVhZAogCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YyBhcyBfZm9ybWF0X2V4YwogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZSBhcyBfaXNsaWNlLCBjb3VudCBhcyBfY291bnQKQEAgLTEwNiw4ICsxMDMsMTQgQEAKICAgICAgICAgICAgIG93bmVyID0gX2FjdGl2ZVtvd25lcl0ubmFtZQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiAiPCVzIG93bmVyPSVyIGNvdW50PSVkPiIgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG93bmVyLCBzZWxmLl9jb3VudCkKKyAgICAgICAgcmV0dXJuICI8JXMgJXMuJXMgb2JqZWN0IG93bmVyPSVyIGNvdW50PSVkIGF0ICVzPiIgJSAoCisgICAgICAgICAgICAibG9ja2VkIiBpZiBzZWxmLl9ibG9jay5sb2NrZWQoKSBlbHNlICJ1bmxvY2tlZCIsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgb3duZXIsCisgICAgICAgICAgICBzZWxmLl9jb3VudCwKKyAgICAgICAgICAgIGhleChpZChzZWxmKSkKKyAgICAgICAgKQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSk6CiAgICAgICAgICIiIkFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCmRpZmYgLS1naXQgYS9MaWIvdGltZWl0LnB5IGIvTGliL3RpbWVpdC5weQppbmRleCAwYjFjNjAxLi5kOWY5NTYzIDEwMDc1NQotLS0gYS9MaWIvdGltZWl0LnB5CisrKyBiL0xpYi90aW1laXQucHkKQEAgLTIwLDYgKzIwLDcgQEAKICAgLXQvLS10aW1lOiB1c2UgdGltZS50aW1lKCkgKGRlcHJlY2F0ZWQpCiAgIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlcHJlY2F0ZWQpCiAgIC12Ly0tdmVyYm9zZTogcHJpbnQgcmF3IHRpbWluZyByZXN1bHRzOyByZXBlYXQgZm9yIG1vcmUgZGlnaXRzIHByZWNpc2lvbgorICAtdS8tLXVuaXQ6IHNldCB0aGUgb3V0cHV0IHRpbWUgdW5pdCAodXNlYywgbXNlYywgb3Igc2VjKQogICAtaC8tLWhlbHA6IHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdAogICAtLTogc2VwYXJhdGUgb3B0aW9ucyBmcm9tIHN0YXRlbWVudCwgdXNlIHdoZW4gc3RhdGVtZW50IHN0YXJ0cyB3aXRoIC0KICAgc3RhdGVtZW50OiBzdGF0ZW1lbnQgdG8gYmUgdGltZWQgKGRlZmF1bHQgJ3Bhc3MnKQpAQCAtNjEsNiArNjIsOCBAQAogZGVmYXVsdF9yZXBlYXQgPSAzCiBkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKIAorX2dsb2JhbHMgPSBnbG9iYWxzCisKICMgRG9uJ3QgY2hhbmdlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgdGVtcGxhdGU7IHRoZSByZWluZGVudCgpIGNhbGxzCiAjIGluIFRpbWVyLl9faW5pdF9fKCkgZGVwZW5kIG9uIHNldHVwIGJlaW5nIGluZGVudGVkIDQgc3BhY2VzIGFuZCBzdG10CiAjIGJlaW5nIGluZGVudGVkIDggc3BhY2VzLgpAQCAtNzgsMjQgKzgxLDE1IEBACiAgICAgIiIiSGVscGVyIHRvIHJlaW5kZW50IGEgbXVsdGktbGluZSBzdGF0ZW1lbnQuIiIiCiAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKCJcbiIsICJcbiIgKyAiICIqaW5kZW50KQogCi1kZWYgX3RlbXBsYXRlX2Z1bmMoc2V0dXAsIGZ1bmMpOgotICAgICIiIkNyZWF0ZSBhIHRpbWVyIGZ1bmN0aW9uLiBVc2VkIGlmIHRoZSAic3RhdGVtZW50IiBpcyBhIGNhbGxhYmxlLiIiIgotICAgIGRlZiBpbm5lcihfaXQsIF90aW1lciwgX2Z1bmM9ZnVuYyk6Ci0gICAgICAgIHNldHVwKCkKLSAgICAgICAgX3QwID0gX3RpbWVyKCkKLSAgICAgICAgZm9yIF9pIGluIF9pdDoKLSAgICAgICAgICAgIF9mdW5jKCkKLSAgICAgICAgX3QxID0gX3RpbWVyKCkKLSAgICAgICAgcmV0dXJuIF90MSAtIF90MAotICAgIHJldHVybiBpbm5lcgotCiBjbGFzcyBUaW1lcjoKICAgICAiIiJDbGFzcyBmb3IgdGltaW5nIGV4ZWN1dGlvbiBzcGVlZCBvZiBzbWFsbCBjb2RlIHNuaXBwZXRzLgogCiAgICAgVGhlIGNvbnN0cnVjdG9yIHRha2VzIGEgc3RhdGVtZW50IHRvIGJlIHRpbWVkLCBhbiBhZGRpdGlvbmFsCiAgICAgc3RhdGVtZW50IHVzZWQgZm9yIHNldHVwLCBhbmQgYSB0aW1lciBmdW5jdGlvbi4gIEJvdGggc3RhdGVtZW50cwogICAgIGRlZmF1bHQgdG8gJ3Bhc3MnOyB0aGUgdGltZXIgZnVuY3Rpb24gaXMgcGxhdGZvcm0tZGVwZW5kZW50IChzZWUKLSAgICBtb2R1bGUgZG9jIHN0cmluZykuCisgICAgbW9kdWxlIGRvYyBzdHJpbmcpLiAgSWYgJ2dsb2JhbHMnIGlzIHNwZWNpZmllZCwgdGhlIGNvZGUgd2lsbCBiZQorICAgIGV4ZWN1dGVkIHdpdGhpbiB0aGF0IG5hbWVzcGFjZSAoYXMgb3Bwb3NlZCB0byBpbnNpZGUgdGltZWl0J3MKKyAgICBuYW1lc3BhY2UpLgogCiAgICAgVG8gbWVhc3VyZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHN0YXRlbWVudCwgdXNlIHRoZQogICAgIHRpbWVpdCgpIG1ldGhvZC4gIFRoZSByZXBlYXQoKSBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsCkBAIC0xMDUsNDIgKzk5LDQxIEBACiAgICAgbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJhbHMuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIsCisgICAgICAgICAgICAgICAgIGdsb2JhbHM9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLiAgU2VlIGNsYXNzIGRvYyBzdHJpbmcuIiIiCiAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgotICAgICAgICBucyA9IHt9CisgICAgICAgIGxvY2FsX25zID0ge30KKyAgICAgICAgZ2xvYmFsX25zID0gX2dsb2JhbHMoKSBpZiBnbG9iYWxzIGlzIE5vbmUgZWxzZSBnbG9iYWxzCisgICAgICAgIGluaXQgPSAnJworICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb2RlIGNhbiBiZSBjb21waWxlZCBvdXRzaWRlIGEgZnVuY3Rpb24KKyAgICAgICAgICAgIGNvbXBpbGUoc2V0dXAsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCisgICAgICAgICAgICBzZXR1cCA9IHJlaW5kZW50KHNldHVwLCA0KQorICAgICAgICBlbGlmIGNhbGxhYmxlKHNldHVwKToKKyAgICAgICAgICAgIGxvY2FsX25zWydfc2V0dXAnXSA9IHNldHVwCisgICAgICAgICAgICBpbml0ICs9ICcsIF9zZXR1cD1fc2V0dXAnCisgICAgICAgICAgICBzZXR1cCA9ICdfc2V0dXAoKScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdG10LCBzdHIpOgogICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb2RlIGNhbiBiZSBjb21waWxlZCBvdXRzaWRlIGEgZnVuY3Rpb24KICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6Ci0gICAgICAgICAgICAgICAgY29tcGlsZShzZXR1cCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKICAgICAgICAgICAgICAgICBjb21waWxlKHNldHVwICsgJ1xuJyArIHN0bXQsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvbXBpbGUoc3RtdCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKICAgICAgICAgICAgIHN0bXQgPSByZWluZGVudChzdG10LCA4KQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZXR1cCwgc3RyKToKLSAgICAgICAgICAgICAgICBzZXR1cCA9IHJlaW5kZW50KHNldHVwLCA0KQotICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwLCBpbml0PScnKQotICAgICAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUuZm9ybWF0KHN0bXQ9c3RtdCwgc2V0dXA9J19zZXR1cCgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdD0nLCBfc2V0dXA9X3NldHVwJykKLSAgICAgICAgICAgICAgICBuc1snX3NldHVwJ10gPSBzZXR1cAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXR1cCBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBjYWxsYWJsZSIpCi0gICAgICAgICAgICBzZWxmLnNyYyA9IHNyYyAjIFNhdmUgZm9yIHRyYWNlYmFjayBkaXNwbGF5Ci0gICAgICAgICAgICBjb2RlID0gY29tcGlsZShzcmMsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICBleGVjKGNvZGUsIGdsb2JhbHMoKSwgbnMpCi0gICAgICAgICAgICBzZWxmLmlubmVyID0gbnNbImlubmVyIl0KICAgICAgICAgZWxpZiBjYWxsYWJsZShzdG10KToKLSAgICAgICAgICAgIHNlbGYuc3JjID0gTm9uZQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZXR1cCwgc3RyKToKLSAgICAgICAgICAgICAgICBfc2V0dXAgPSBzZXR1cAotICAgICAgICAgICAgICAgIGRlZiBzZXR1cCgpOgotICAgICAgICAgICAgICAgICAgICBleGVjKF9zZXR1cCwgZ2xvYmFscygpLCBucykKLSAgICAgICAgICAgIGVsaWYgbm90IGNhbGxhYmxlKHNldHVwKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXR1cCBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBjYWxsYWJsZSIpCi0gICAgICAgICAgICBzZWxmLmlubmVyID0gX3RlbXBsYXRlX2Z1bmMoc2V0dXAsIHN0bXQpCisgICAgICAgICAgICBsb2NhbF9uc1snX3N0bXQnXSA9IHN0bXQKKyAgICAgICAgICAgIGluaXQgKz0gJywgX3N0bXQ9X3N0bXQnCisgICAgICAgICAgICBzdG10ID0gJ19zdG10KCknCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzdG10IGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKKyAgICAgICAgc3JjID0gdGVtcGxhdGUuZm9ybWF0KHN0bXQ9c3RtdCwgc2V0dXA9c2V0dXAsIGluaXQ9aW5pdCkKKyAgICAgICAgc2VsZi5zcmMgPSBzcmMgICMgU2F2ZSBmb3IgdHJhY2ViYWNrIGRpc3BsYXkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoc3JjLCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQorICAgICAgICBleGVjKGNvZGUsIGdsb2JhbF9ucywgbG9jYWxfbnMpCisgICAgICAgIHNlbGYuaW5uZXIgPSBsb2NhbF9uc1siaW5uZXIiXQogCiAgICAgZGVmIHByaW50X2V4YyhzZWxmLCBmaWxlPU5vbmUpOgogICAgICAgICAiIiJIZWxwZXIgdG8gcHJpbnQgYSB0cmFjZWJhY2sgZnJvbSB0aGUgdGltZWQgY29kZS4KQEAgLTIxNiwxNCArMjA5LDE0IEBACiAgICAgICAgIHJldHVybiByCiAKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKLSAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyKToKKyAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKLSAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyKS50aW1laXQobnVtYmVyKQorICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIsIGdsb2JhbHMpLnRpbWVpdChudW1iZXIpCiAKIGRlZiByZXBlYXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKLSAgICAgICAgICAgcmVwZWF0PWRlZmF1bHRfcmVwZWF0LCBudW1iZXI9ZGVmYXVsdF9udW1iZXIpOgorICAgICAgICAgICByZXBlYXQ9ZGVmYXVsdF9yZXBlYXQsIG51bWJlcj1kZWZhdWx0X251bWJlciwgZ2xvYmFscz1Ob25lKToKICAgICAiIiJDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgVGltZXIgb2JqZWN0IGFuZCBjYWxsIHJlcGVhdCBtZXRob2QuIiIiCi0gICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikucmVwZWF0KHJlcGVhdCwgbnVtYmVyKQorICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIsIGdsb2JhbHMpLnJlcGVhdChyZXBlYXQsIG51bWJlcikKIAogZGVmIG1haW4oYXJncz1Ob25lLCAqLCBfd3JhcF90aW1lcj1Ob25lKToKICAgICAiIiJNYWluIHByb2dyYW0sIHVzZWQgd2hlbiBydW4gYXMgYSBzY3JpcHQuCkBAIC0yNDYsMTAgKzIzOSwxMCBAQAogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICAgaW1wb3J0IGdldG9wdAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjcHZoIiwKKyAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46dTpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bWJlcj0iLCAic2V0dXA9IiwgInJlcGVhdD0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAicHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJ1bml0PSIsICJoZWxwIl0pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlcnI6CiAgICAgICAgIHByaW50KGVycikKICAgICAgICAgcHJpbnQoInVzZSAtaC8tLWhlbHAgZm9yIGNvbW1hbmQgbGluZSBoZWxwIikKQEAgLTI2MCwxMiArMjUzLDIxIEBACiAgICAgc2V0dXAgPSBbXQogICAgIHJlcGVhdCA9IGRlZmF1bHRfcmVwZWF0CiAgICAgdmVyYm9zZSA9IDAKKyAgICB0aW1lX3VuaXQgPSBOb25lCisgICAgdW5pdHMgPSB7InVzZWMiOiAxLCAibXNlYyI6IDFlMywgInNlYyI6IDFlNn0KICAgICBwcmVjaXNpb24gPSAzCiAgICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICAgaWYgbyBpbiAoIi1uIiwgIi0tbnVtYmVyIik6CiAgICAgICAgICAgICBudW1iZXIgPSBpbnQoYSkKICAgICAgICAgaWYgbyBpbiAoIi1zIiwgIi0tc2V0dXAiKToKICAgICAgICAgICAgIHNldHVwLmFwcGVuZChhKQorICAgICAgICBpZiBvIGluICgiLXUiLCAiLS11bml0Iik6CisgICAgICAgICAgICBpZiBhIGluIHVuaXRzOgorICAgICAgICAgICAgICAgIHRpbWVfdW5pdCA9IGEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIlVucmVjb2duaXplZCB1bml0LiBQbGVhc2Ugc2VsZWN0IHVzZWMsIG1zZWMsIG9yIHNlYy4iLAorICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgaWYgbyBpbiAoIi1yIiwgIi0tcmVwZWF0Iik6CiAgICAgICAgICAgICByZXBlYXQgPSBpbnQoYSkKICAgICAgICAgICAgIGlmIHJlcGVhdCA8PSAwOgpAQCAtMzE1LDE1ICszMTcsMjEgQEAKICAgICAgICAgcHJpbnQoInJhdyB0aW1lczoiLCAiICIuam9pbihbIiUuKmciICUgKHByZWNpc2lvbiwgeCkgZm9yIHggaW4gcl0pKQogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCi0gICAgaWYgdXNlYyA8IDEwMDA6Ci0gICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHVzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCB1c2VjKSkKKyAgICBpZiB0aW1lX3VuaXQgaXMgbm90IE5vbmU6CisgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWMvdW5pdHNbdGltZV91bml0XSwgdGltZV91bml0KSkKICAgICBlbHNlOgotICAgICAgICBtc2VjID0gdXNlYyAvIDEwMDAKLSAgICAgICAgaWYgbXNlYyA8IDEwMDA6Ci0gICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgbXNlYykpCisgICAgICAgIGlmIHVzZWMgPCAxMDAwOgorICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHNlYykpCisgICAgICAgICAgICBtc2VjID0gdXNlYyAvIDEwMDAKKyAgICAgICAgICAgIGlmIG1zZWMgPCAxMDAwOgorICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIG1zZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIG1zZWMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWMgPSBtc2VjIC8gMTAwMAorICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBzZWMpKQogICAgIHJldHVybiBOb25lCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weSBiL0xpYi90a2ludGVyL19faW5pdF9fLnB5CmluZGV4IDIxYTU2MGIuLmVhNzQ3YWMgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5CisrKyBiL0xpYi90a2ludGVyL19faW5pdF9fLnB5CkBAIC0zMSw5ICszMSw2IEBACiAiIiIKIAogaW1wb3J0IHN5cwotaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKIFRjbEVycm9yID0gX3RraW50ZXIuVGNsRXJyb3IKQEAgLTM1NSw3ICszNTIsNyBAQAogCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCisgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRpbnQoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQogCiBjbGFzcyBEb3VibGVWYXIoVmFyaWFibGUpOgogICAgICIiIlZhbHVlIGhvbGRlciBmb3IgZmxvYXQgdmFyaWFibGVzLiIiIgpAQCAtMzc0LDcgKzM3MSw3IEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGZsb2F0LiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGRvdWJsZShzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCiAKIGNsYXNzIEJvb2xlYW5WYXIoVmFyaWFibGUpOgogICAgICIiIlZhbHVlIGhvbGRlciBmb3IgYm9vbGVhbiB2YXJpYWJsZXMuIiIiCkBAIC01MDUsMTQgKzUwMiwyNiBAQAogICAgIGRlZiBnZXR2YXIoc2VsZiwgbmFtZT0nUFlfVkFSJyk6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiBUY2wgdmFyaWFibGUgTkFNRS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0dmFyKG5hbWUpCi0gICAgZ2V0aW50ID0gaW50Ci0gICAgZ2V0ZG91YmxlID0gZmxvYXQKKworICAgIGRlZiBnZXRpbnQoc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzKQorICAgICAgICBleGNlcHQgVGNsRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoZXhjKSkKKworICAgIGRlZiBnZXRkb3VibGUoc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzKQorICAgICAgICBleGNlcHQgVGNsRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoZXhjKSkKKwogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKKwogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtNzc1LDEzICs3ODQsMTAgQEAKICAgICAgICAgIiIiUmFpc2UgdGhpcyB3aWRnZXQgaW4gdGhlIHN0YWNraW5nIG9yZGVyLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoJ3JhaXNlJywgc2VsZi5fdywgYWJvdmVUaGlzKQogICAgIGxpZnQgPSB0a3JhaXNlCi0gICAgZGVmIGNvbG9ybW9kZWwoc2VsZiwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgICIiIlVzZWxlc3MuIE5vdCBpbXBsZW1lbnRlZCBpbiBUay4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgndGsnLCAnY29sb3Jtb2RlbCcsIHNlbGYuX3csIHZhbHVlKQogICAgIGRlZiB3aW5mb19hdG9tKHNlbGYsIG5hbWUsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIGludGVnZXIgd2hpY2ggcmVwcmVzZW50cyBhdG9tIE5BTUUuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2F0b20nKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpICsgKG5hbWUsKQotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChhcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbChhcmdzKSkKICAgICBkZWYgd2luZm9fYXRvbW5hbWUoc2VsZiwgaWQsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIG5hbWUgb2YgYXRvbSB3aXRoIGlkZW50aWZpZXIgSUQuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2F0b21uYW1lJykgXApAQCAtNzg5LDcgKzc5NSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoYXJncykKICAgICBkZWYgd2luZm9fY2VsbHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBudW1iZXIgb2YgY2VsbHMgaW4gdGhlIGNvbG9ybWFwIGZvciB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdjZWxscycsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19jaGlsZHJlbihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgd2lkZ2V0cyB3aGljaCBhcmUgY2hpbGRyZW4gb2YgdGhpcyB3aWRnZXQuIiIiCkBAIC04MjAsMjIgKzgyNiwyMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZXRvd2lkZ2V0KG5hbWUpCiAgICAgZGVmIHdpbmZvX2RlcHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2RlcHRoJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2RlcHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2V4aXN0cyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhpcyB3aWRnZXQgZXhpc3RzLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2V4aXN0cycsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19mcGl4ZWxzKHNlbGYsIG51bWJlcik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBmb3IgdGhlIGdpdmVuIGRpc3RhbmNlIE5VTUJFUgogICAgICAgICAoZS5nLiAiM2MiKSBhcyBmbG9hdC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICAnd2luZm8nLCAnZnBpeGVscycsIHNlbGYuX3csIG51bWJlcikpCiAgICAgZGVmIHdpbmZvX2dlb21ldHJ5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gZ2VvbWV0cnkgc3RyaW5nIGZvciB0aGlzIHdpZGdldCBpbiB0aGUgZm9ybSAid2lkdGh4aGVpZ2h0K1grWSIuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2dlb21ldHJ5Jywgc2VsZi5fdykKICAgICBkZWYgd2luZm9faGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaGVpZ2h0IG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgpAQCAtODQ3LDcgKzg1Myw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoYXJncykpCiAgICAgZGVmIHdpbmZvX2lzbWFwcGVkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGlzIHdpZGdldCBpcyBtYXBwZWQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaXNtYXBwZWQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fbWFuYWdlcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aW5kb3cgbWFuYW5nZXIgbmFtZSBmb3IgdGhpcyB3aWRnZXQuIiIiCkBAIC04NjUsMTEgKzg3MSwxMSBAQAogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKGFyZ3MpCiAgICAgZGVmIHdpbmZvX3BpeGVscyhzZWxmLCBudW1iZXIpOgogICAgICAgICAiIiJSb3VuZGVkIGludGVnZXIgdmFsdWUgb2Ygd2luZm9fZnBpeGVscy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwaXhlbHMnLCBzZWxmLl93LCBudW1iZXIpKQogICAgIGRlZiB3aW5mb19wb2ludGVyeChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHBvaW50ZXIgb24gdGhlIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3BvaW50ZXJ4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3BvaW50ZXJ4eShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgdHVwbGUgb2YgeCBhbmQgeSBjb29yZGluYXRlcyBvZiB0aGUgcG9pbnRlciBvbiB0aGUgcm9vdCB3aW5kb3cuIiIiCkBAIC04NzcsMTUgKzg4MywxNSBAQAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwb2ludGVyeHknLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcG9pbnRlcnkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBwb2ludGVyIG9uIHRoZSByb290IHdpbmRvdy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwb2ludGVyeScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZXFoZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiByZXF1ZXN0ZWQgaGVpZ2h0IG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3JlcWhlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZXF3aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHJlcXVlc3RlZCB3aWR0aCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdyZXF3aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yZ2Ioc2VsZiwgY29sb3IpOgogICAgICAgICAiIiJSZXR1cm4gdHVwbGUgb2YgZGVjaW1hbCB2YWx1ZXMgZm9yIHJlZCwgZ3JlZW4sIGJsdWUgZm9yCkBAIC04OTUsMTIgKzkwMSwxMiBAQAogICAgIGRlZiB3aW5mb19yb290eChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHggY29vcmRpbmF0ZSBvZiB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldCBvbiB0aGUKICAgICAgICAgcm9vdCB3aW5kb3cuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncm9vdHgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcm9vdHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB5IGNvb3JkaW5hdGUgb2YgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQgb24gdGhlCiAgICAgICAgIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Jvb3R5Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBzY3JlZW4gbmFtZSBvZiB0aGlzIHdpZGdldC4iIiIKQEAgLTkwOCwyNyArOTE0LDI3IEBACiAgICAgZGVmIHdpbmZvX3NjcmVlbmNlbGxzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgY2VsbHMgaW4gdGhlIGNvbG9ybWFwIG9mIHRoZSBzY3JlZW4KICAgICAgICAgb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVuY2VsbHMnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVuZGVwdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIG9mIHRoZSByb290IHdpbmRvdyBvZiB0aGUKICAgICAgICAgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbmRlcHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbmhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSBoZWlnaHQgb2YgdGhlIHNjcmVlbiBvZiB0aGlzIHdpZGdldAogICAgICAgICBpbiBwaXhlbC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5oZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVubW1oZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4gb2YKICAgICAgICAgdGhpcyB3aWRnZXQgaW4gbW0uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVubW1oZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVubW13aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIG9mCiAgICAgICAgIHRoaXMgd2lkZ2V0IGluIG1tLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbm1td2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVudmlzdWFsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gb25lIG9mIHRoZSBzdHJpbmdzIGRpcmVjdGNvbG9yLCBncmF5c2NhbGUsIHBzZXVkb2NvbG9yLApAQCAtOTM4LDcgKzk0NCw3IEBACiAgICAgZGVmIHdpbmZvX3NjcmVlbndpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gb2YKICAgICAgICAgdGhpcyB3aWRnZXQgaW4gcGl4ZWwuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVud2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2VydmVyKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaW5mb3JtYXRpb24gb2YgdGhlIFgtU2VydmVyIG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQgaW4KQEAgLTk1MCw3ICs5NTYsNyBAQAogICAgICAgICAgICAgJ3dpbmZvJywgJ3RvcGxldmVsJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3ZpZXdhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgd2lkZ2V0IGFuZCBhbGwgaXRzIGhpZ2hlciBhbmNlc3RvcnMgYXJlIG1hcHBlZC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aWV3YWJsZScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192aXN1YWwoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBvbmUgb2YgdGhlIHN0cmluZ3MgZGlyZWN0Y29sb3IsIGdyYXlzY2FsZSwgcHNldWRvY29sb3IsCkBAIC05ODIsMzcgKzk4OCwzNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgdmlydHVhbCByb290IHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICB3aWRnZXQgaW4gcGl4ZWxzLiBJZiB0aGVyZSBpcyBubyB2aXJ0dWFsIHJvb3Qgd2luZG93IHJldHVybiB0aGUKICAgICAgICAgaGVpZ2h0IG9mIHRoZSBzY3JlZW4uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3RoZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdnJvb3R3aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCByb290IHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICB3aWRnZXQgaW4gcGl4ZWwuIElmIHRoZXJlIGlzIG5vIHZpcnR1YWwgcm9vdCB3aW5kb3cgcmV0dXJuIHRoZQogICAgICAgICB3aWR0aCBvZiB0aGUgc2NyZWVuLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290d2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdnJvb3R4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHggb2Zmc2V0IG9mIHRoZSB2aXJ0dWFsIHJvb3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QKICAgICAgICAgd2luZG93IG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3R4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Zyb290eShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5IG9mZnNldCBvZiB0aGUgdmlydHVhbCByb290IHJlbGF0aXZlIHRvIHRoZSByb290CiAgICAgICAgIHdpbmRvdyBvZiB0aGUgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290eScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb193aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd3aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb194KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQKICAgICAgICAgaW4gdGhlIHBhcmVudC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3koc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldAogICAgICAgICBpbiB0aGUgcGFyZW50LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3knLCBzZWxmLl93KSkKICAgICBkZWYgdXBkYXRlKHNlbGYpOgogICAgICAgICAiIiJFbnRlciBldmVudCBsb29wIHVudGlsIGFsbCBwZW5kaW5nIGV2ZW50cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIGJ5IFRjbC4iIiIKQEAgLTExMjksMTEgKzExMzUsMTEgQEAKICAgICBkZWYgX2dldGludHMoc2VsZiwgc3RyaW5nKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCiAgICAgICAgIGlmIHN0cmluZzoKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoZ2V0aW50LCBzZWxmLnRrLnNwbGl0bGlzdChzdHJpbmcpKSkKKyAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoc2VsZi50ay5nZXRpbnQsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQogICAgIGRlZiBfZ2V0ZG91YmxlcyhzZWxmLCBzdHJpbmcpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgaWYgc3RyaW5nOgotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChnZXRkb3VibGUsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQorICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChzZWxmLnRrLmdldGRvdWJsZSwgc2VsZi50ay5zcGxpdGxpc3Qoc3RyaW5nKSkpCiAgICAgZGVmIF9nZXRib29sZWFuKHNlbGYsIHN0cmluZyk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICBpZiBzdHJpbmc6CkBAIC0xMjMyLDEyICsxMjM4LDEyIEBACiAgICAgICAgIGlmIGxlbihhcmdzKSAhPSBsZW4oc2VsZi5fc3Vic3RfZm9ybWF0KTogcmV0dXJuIGFyZ3MKICAgICAgICAgZ2V0Ym9vbGVhbiA9IHNlbGYudGsuZ2V0Ym9vbGVhbgogCi0gICAgICAgIGdldGludCA9IGludAorICAgICAgICBnZXRpbnQgPSBzZWxmLnRrLmdldGludAogICAgICAgICBkZWYgZ2V0aW50X2V2ZW50KHMpOgogICAgICAgICAgICAgIiIiVGsgY2hhbmdlZCBiZWhhdmlvciBpbiA4LjQuMiwgcmV0dXJuaW5nICI/PyIgcmF0aGVyIG1vcmUgb2Z0ZW4uIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldGludChzKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgICAgICBuc2lnbiwgYiwgZiwgaCwgaywgcywgdCwgdywgeCwgeSwgQSwgRSwgSywgTiwgVywgVCwgWCwgWSwgRCA9IGFyZ3MKQEAgLTEyODEsNyArMTI4Nyw3IEBACiAgICAgICAgIGUueV9yb290ID0gZ2V0aW50X2V2ZW50KFkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGUuZGVsdGEgPSBnZXRpbnQoRCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVGNsRXJyb3IpOgogICAgICAgICAgICAgZS5kZWx0YSA9IDAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CkBAIC0xMzM2LDYgKzEzNDIsMTEgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aW5kb3cgcGF0aCBuYW1lIG9mIHRoaXMgd2lkZ2V0LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzwlcy4lcyBvYmplY3QgJXM+JyAlICgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywgc2VsZi5fdykKKwogICAgICMgUGFjayBtZXRob2RzIHRoYXQgYXBwbHkgdG8gdGhlIG1hc3RlcgogICAgIF9ub2FyZ18gPSBbJ19ub2FyZ18nXQogICAgIGRlZiBwYWNrX3Byb3BhZ2F0ZShzZWxmLCBmbGFnPV9ub2FyZ18pOgpAQCAtMTQwMSwxMCArMTQxMiwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBzdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgZWxpZiAnLicgaW4gc3ZhbHVlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHN2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHN2YWx1ZSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0aW50KHN2YWx1ZSkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc3ZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gdmFsdWUKIApAQCAtMTg1MCw3ICsxODYxLDcgQEAKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQogICAgICAgICAgICAgYmFzZU5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZU5hbWUpCi0gICAgICAgICAgICBpZiBleHQgbm90IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiAoJy5weScsICcucHljJyk6CiAgICAgICAgICAgICAgICAgYmFzZU5hbWUgPSBiYXNlTmFtZSArIGV4dAogICAgICAgICBpbnRlcmFjdGl2ZSA9IDAKICAgICAgICAgc2VsZi50ayA9IF90a2ludGVyLmNyZWF0ZShzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHVzZVRrLCBzeW5jLCB1c2UpCkBAIC0yMTk2LDIxICsyMjA3LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICdidXR0b24nLCBjbmYsIGt3KQogCi0gICAgZGVmIHRrQnV0dG9uRW50ZXIoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkVudGVyJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvbkxlYXZlKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25MZWF2ZScsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25Eb3duKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25Eb3duJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvblVwKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25VcCcsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25JbnZva2Uoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkludm9rZScsIHNlbGYuX3cpCi0KICAgICBkZWYgZmxhc2goc2VsZik6CiAgICAgICAgICIiIkZsYXNoIHRoZSBidXR0b24uCiAKQEAgLTIyOTcsMTcgKzIyOTMsMTcgQEAKICAgICBkZWYgY2FudmFzeChzZWxmLCBzY3JlZW54LCBncmlkc3BhY2luZz1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjYW52YXMgeCBjb29yZGluYXRlIG9mIHBpeGVsIHBvc2l0aW9uIFNDUkVFTlggcm91bmRlZAogICAgICAgICB0byBuZWFyZXN0IG11bHRpcGxlIG9mIEdSSURTUEFDSU5HIHVuaXRzLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdjYW52YXN4Jywgc2NyZWVueCwgZ3JpZHNwYWNpbmcpKQogICAgIGRlZiBjYW52YXN5KHNlbGYsIHNjcmVlbnksIGdyaWRzcGFjaW5nPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNhbnZhcyB5IGNvb3JkaW5hdGUgb2YgcGl4ZWwgcG9zaXRpb24gU0NSRUVOWSByb3VuZGVkCiAgICAgICAgIHRvIG5lYXJlc3QgbXVsdGlwbGUgb2YgR1JJRFNQQUNJTkcgdW5pdHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NhbnZhc3knLCBzY3JlZW55LCBncmlkc3BhY2luZykpCiAgICAgZGVmIGNvb3JkcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29vcmRpbmF0ZXMgZm9yIHRoZSBpdGVtIGdpdmVuIGluIEFSR1MuIiIiCiAgICAgICAgICMgWFhYIFNob3VsZCB1c2UgX2ZsYXR0ZW4gb24gYXJncwotICAgICAgICByZXR1cm4gW2dldGRvdWJsZSh4KSBmb3IgeCBpbgorICAgICAgICByZXR1cm4gW3NlbGYudGsuZ2V0ZG91YmxlKHgpIGZvciB4IGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRrLnNwbGl0bGlzdCgKICAgICAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdjb29yZHMnKSArIGFyZ3MpKV0KICAgICBkZWYgX2NyZWF0ZShzZWxmLCBpdGVtVHlwZSwgYXJncywga3cpOiAjIEFyZ3M6ICh2YWwsIHZhbCwgLi4uLCBjbmY9e30pCkBAIC0yMzE4LDcgKzIzMTQsNyBAQAogICAgICAgICAgICAgYXJncyA9IGFyZ3NbOi0xXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY25mID0ge30KLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnY3JlYXRlJywgaXRlbVR5cGUsCiAgICAgICAgICAgICAqKGFyZ3MgKyBzZWxmLl9vcHRpb25zKGNuZiwga3cpKSkpCiAgICAgZGVmIGNyZWF0ZV9hcmMoc2VsZiwgKmFyZ3MsICoqa3cpOgpAQCAtMjQwMiw3ICsyMzk4LDcgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnaWN1cnNvcicpICsgYXJncykKICAgICBkZWYgaW5kZXgoc2VsZiwgKmFyZ3MpOgogICAgICAgICAiIiJSZXR1cm4gcG9zaXRpb24gb2YgY3Vyc29yIGFzIGludGVnZXIgaW4gaXRlbSBzcGVjaWZpZWQgaW4gQVJHUy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpbmRleCcpICsgYXJncykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpbmRleCcpICsgYXJncykpCiAgICAgZGVmIGluc2VydChzZWxmLCAqYXJncyk6CiAgICAgICAgICIiIkluc2VydCBURVhUIGluIGl0ZW0gVEFHT1JJRCBhdCBwb3NpdGlvbiBQT1MuIEFSR1MgbXVzdAogICAgICAgICBiZSBUQUdPUklEIFBPUyBURVhULiIiIgpAQCAtMjUyOCw3ICsyNTI0LDcgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdpY3Vyc29yJywgaW5kZXgpCiAgICAgZGVmIGluZGV4KHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiUmV0dXJuIHBvc2l0aW9uIG9mIGN1cnNvci4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnaW5kZXgnLCBpbmRleCkpCiAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgc3RyaW5nKToKICAgICAgICAgIiIiSW5zZXJ0IFNUUklORyBhdCBJTkRFWC4iIiIKQEAgLTI2NDMsMTMgKzI2MzksMTMgQEAKICAgICAgICAgIiIiUmV0dXJuIGluZGV4IG9mIGl0ZW0gaWRlbnRpZmllZCB3aXRoIElOREVYLiIiIgogICAgICAgICBpID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdpbmRleCcsIGluZGV4KQogICAgICAgICBpZiBpID09ICdub25lJzogcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGdldGludChpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoaSkKICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCAqZWxlbWVudHMpOgogICAgICAgICAiIiJJbnNlcnQgRUxFTUVOVFMgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2luc2VydCcsIGluZGV4KSArIGVsZW1lbnRzKQogICAgIGRlZiBuZWFyZXN0KHNlbGYsIHkpOgogICAgICAgICAiIiJHZXQgaW5kZXggb2YgaXRlbSB3aGljaCBpcyBuZWFyZXN0IHRvIHkgY29vcmRpbmF0ZSBZLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICduZWFyZXN0JywgeSkpCiAgICAgZGVmIHNjYW5fbWFyayhzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmVtZW1iZXIgdGhlIGN1cnJlbnQgWCwgWSBjb29yZGluYXRlcy4iIiIKQEAgLTI2ODMsNyArMjY3OSw3IEBACiAgICAgc2VsZWN0X3NldCA9IHNlbGVjdGlvbl9zZXQKICAgICBkZWYgc2l6ZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGxpc3Rib3guIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdzaXplJykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnKSkKICAgICBkZWYgaXRlbWNnZXQoc2VsZiwgaW5kZXgsIG9wdGlvbik6CiAgICAgICAgICIiIlJldHVybiB0aGUgcmVzb3VyY2UgdmFsdWUgZm9yIGFuIElURU0gYW5kIGFuIE9QVElPTi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgKQEAgLTI3MDksMzUgKzI3MDUsMTUgQEAKICAgICAgICAgZGlzYWJsZWRmb3JlZ3JvdW5kLCBmZywgZm9udCwgZm9yZWdyb3VuZCwgcG9zdGNvbW1hbmQsIHJlbGllZiwKICAgICAgICAgc2VsZWN0Y29sb3IsIHRha2Vmb2N1cywgdGVhcm9mZiwgdGVhcm9mZmNvbW1hbmQsIHRpdGxlLCB0eXBlLiIiIgogICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAnbWVudScsIGNuZiwga3cpCisgICAgZGVmIHRrX3BvcHVwKHNlbGYsIHgsIHksIGVudHJ5PSIiKToKKyAgICAgICAgIiIiUG9zdCB0aGUgbWVudSBhdCBwb3NpdGlvbiBYLFkgd2l0aCBlbnRyeSBFTlRSWS4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCd0a19wb3B1cCcsIHNlbGYuX3csIHgsIHksIGVudHJ5KQogICAgIGRlZiB0a19iaW5kRm9yVHJhdmVyc2FsKHNlbGYpOgogICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAogICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgd2FybmluZ3Mud2FybigndGtfYmluZEZvclRyYXZlcnNhbCgpIGRvZXMgbm90aGluZyBhbmQgJwogICAgICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIHJlbW92ZWQgaW4gMy42JywKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICBkZWYgdGtfbWJQb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX21iUG9zdCcsIHNlbGYuX3cpCi0gICAgZGVmIHRrX21iVW5wb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX21iVW5wb3N0JykKLSAgICBkZWYgdGtfdHJhdmVyc2VUb01lbnUoc2VsZiwgY2hhcik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdHJhdmVyc2VUb01lbnUnLCBzZWxmLl93LCBjaGFyKQotICAgIGRlZiB0a190cmF2ZXJzZVdpdGhpbk1lbnUoc2VsZiwgY2hhcik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdHJhdmVyc2VXaXRoaW5NZW51Jywgc2VsZi5fdywgY2hhcikKLSAgICBkZWYgdGtfZ2V0TWVudUJ1dHRvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3RrX2dldE1lbnVCdXR0b25zJywgc2VsZi5fdykKLSAgICBkZWYgdGtfbmV4dE1lbnUoc2VsZiwgY291bnQpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX25leHRNZW51JywgY291bnQpCi0gICAgZGVmIHRrX25leHRNZW51RW50cnkoc2VsZiwgY291bnQpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX25leHRNZW51RW50cnknLCBjb3VudCkKLSAgICBkZWYgdGtfaW52b2tlTWVudShzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19pbnZva2VNZW51Jywgc2VsZi5fdykKLSAgICBkZWYgdGtfZmlyc3RNZW51KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX2ZpcnN0TWVudScsIHNlbGYuX3cpCi0gICAgZGVmIHRrX21iQnV0dG9uRG93bihzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19tYkJ1dHRvbkRvd24nLCBzZWxmLl93KQotICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6Ci0gICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCi0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKICAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJBY3RpdmF0ZSBlbnRyeSBhdCBJTkRFWC4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KQpAQCAtMjgwNSw3ICsyNzgxLDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBpbmRleCBvZiBhIG1lbnUgaXRlbSBpZGVudGlmaWVkIGJ5IElOREVYLiIiIgogICAgICAgICBpID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdpbmRleCcsIGluZGV4KQogICAgICAgICBpZiBpID09ICdub25lJzogcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGdldGludChpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoaSkKICAgICBkZWYgaW52b2tlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiSW52b2tlIGEgbWVudSBpdGVtIGlkZW50aWZpZWQgYnkgSU5ERVggYW5kIGV4ZWN1dGUKICAgICAgICAgdGhlIGFzc29jaWF0ZWQgY29tbWFuZC4iIiIKQEAgLTI4MjIsMTAgKzI3OTgsMTAgQEAKICAgICBkZWYgeHBvc2l0aW9uKHNlbGYsIGluZGV4KTogIyBuZXcgaW4gVGsgOC41CiAgICAgICAgICIiIlJldHVybiB0aGUgeC1wb3NpdGlvbiBvZiB0aGUgbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbQogICAgICAgICBhdCBJTkRFWC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3hwb3NpdGlvbicsIGluZGV4KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAneXBvc2l0aW9uJywgaW5kZXgpKQogCiBjbGFzcyBNZW51YnV0dG9uKFdpZGdldCk6CkBAIC0yODgxLDkgKzI4NTcsOSBAQAogICAgICAgICAiIiJHZXQgdGhlIGN1cnJlbnQgdmFsdWUgYXMgaW50ZWdlciBvciBmbG9hdC4iIiIKICAgICAgICAgdmFsdWUgPSBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldCcpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBnZXRpbnQodmFsdWUpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIGdldGRvdWJsZSh2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUodmFsdWUpCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFsdWUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2V0JywgdmFsdWUpCkBAIC0yOTEwLDE5ICsyODg2LDIzIEBACiAgICAgICAgIHJlbGllZiwgcmVwZWF0ZGVsYXksIHJlcGVhdGludGVydmFsLCB0YWtlZm9jdXMsCiAgICAgICAgIHRyb3VnaGNvbG9yLCB3aWR0aC4iIiIKICAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3Njcm9sbGJhcicsIGNuZiwga3cpCi0gICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKLSAgICAgICAgIiIiRGlzcGxheSB0aGUgZWxlbWVudCBhdCBJTkRFWCB3aXRoIGFjdGl2ZWJhY2tncm91bmQgYW5kIGFjdGl2ZXJlbGllZi4KLSAgICAgICAgSU5ERVggY2FuIGJlICJhcnJvdzEiLCJzbGlkZXIiIG9yICJhcnJvdzIiLiIiIgotICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2FjdGl2YXRlJywgaW5kZXgpCisgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4PU5vbmUpOgorICAgICAgICAiIiJNYXJrcyB0aGUgZWxlbWVudCBpbmRpY2F0ZWQgYnkgaW5kZXggYXMgYWN0aXZlLgorICAgICAgICBUaGUgb25seSBpbmRleCB2YWx1ZXMgdW5kZXJzdG9vZCBieSB0aGlzIG1ldGhvZCBhcmUgImFycm93MSIsCisgICAgICAgICJzbGlkZXIiLCBvciAiYXJyb3cyIi4gIElmIGFueSBvdGhlciB2YWx1ZSBpcyBzcGVjaWZpZWQgdGhlbiBubworICAgICAgICBlbGVtZW50IG9mIHRoZSBzY3JvbGxiYXIgd2lsbCBiZSBhY3RpdmUuICBJZiBpbmRleCBpcyBub3Qgc3BlY2lmaWVkLAorICAgICAgICB0aGUgbWV0aG9kIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlLAorICAgICAgICBvciBOb25lIGlmIG5vIGVsZW1lbnQgaXMgYWN0aXZlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KSBvciBOb25lCiAgICAgZGVmIGRlbHRhKHNlbGYsIGRlbHRheCwgZGVsdGF5KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFjdGlvbmFsIGNoYW5nZSBvZiB0aGUgc2Nyb2xsYmFyIHNldHRpbmcgaWYgaXQKICAgICAgICAgd291bGQgYmUgbW92ZWQgYnkgREVMVEFYIG9yIERFTFRBWSBwaXhlbHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZSgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnZGVsdGEnLCBkZWx0YXgsIGRlbHRheSkpCiAgICAgZGVmIGZyYWN0aW9uKHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGZyYWN0aW9uYWwgdmFsdWUgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSBzbGlkZXIKICAgICAgICAgcG9zaXRpb24gb2YgWCxZLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZnJhY3Rpb24nLCB4LCB5KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZnJhY3Rpb24nLCB4LCB5KSkKICAgICBkZWYgaWRlbnRpZnkoc2VsZiwgeCwgeSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZWxlbWVudCB1bmRlciBwb3NpdGlvbiBYLFkgYXMgb25lIG9mCiAgICAgICAgICJhcnJvdzEiLCJzbGlkZXIiLCJhcnJvdzIiIG9yICIiLiIiIgpAQCAtMjkzMSwxMCArMjkxMSwxMCBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZnJhY3Rpb25hbCB2YWx1ZXMgKHVwcGVyIGFuZCBsb3dlciBlbmQpCiAgICAgICAgIG9mIHRoZSBzbGlkZXIgcG9zaXRpb24uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRkb3VibGVzKHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0JykpCi0gICAgZGVmIHNldChzZWxmLCAqYXJncyk6CisgICAgZGVmIHNldChzZWxmLCBmaXJzdCwgbGFzdCk6CiAgICAgICAgICIiIlNldCB0aGUgZnJhY3Rpb25hbCB2YWx1ZXMgb2YgdGhlIHNsaWRlciBwb3NpdGlvbiAodXBwZXIgYW5kCiAgICAgICAgIGxvd2VyIGVuZHMgYXMgdmFsdWUgYmV0d2VlbiAwIGFuZCAxKS4iIiIKLSAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnc2V0JykgKyBhcmdzKQorICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NldCcsIGZpcnN0LCBsYXN0KQogCiAKIApAQCAtMjk2OSwxNCArMjk0OSw2IEBACiAgICAgICAgIGJveCBvZiB0aGUgdmlzaWJsZSBwYXJ0IG9mIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIGluZGV4LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0aW50cygKICAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2Jib3gnLCBpbmRleCkpIG9yIE5vbmUKLSAgICBkZWYgdGtfdGV4dFNlbGVjdFRvKHNlbGYsIGluZGV4KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0U2VsZWN0VG8nLCBzZWxmLl93LCBpbmRleCkKLSAgICBkZWYgdGtfdGV4dEJhY2tzcGFjZShzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0QmFja3NwYWNlJywgc2VsZi5fdykKLSAgICBkZWYgdGtfdGV4dEluZGV4Q2xvc2VyKHNlbGYsIGEsIGIsIGMpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RleHRJbmRleENsb3NlcicsIHNlbGYuX3csIGEsIGIsIGMpCi0gICAgZGVmIHRrX3RleHRSZXNldEFuY2hvcihzZWxmLCBpbmRleCk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdGV4dFJlc2V0QW5jaG9yJywgc2VsZi5fdywgaW5kZXgpCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgaW5kZXgxLCBvcCwgaW5kZXgyKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgYmV0d2VlbiBpbmRleCBJTkRFWDEgYW5kIGluZGV4IElOREVYMiB0aGUKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCkBAIC0zNDAxLDE0ICszMzczLDE0IEBACiAgICAgY29uZmlnID0gY29uZmlndXJlCiAgICAgZGVmIGhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ2hlaWdodCcsIHNlbGYubmFtZSkpCiAgICAgZGVmIHR5cGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdHlwZSBvZiB0aGUgaW1nYWdlLCBlLmcuICJwaG90byIgb3IgImJpdG1hcCIuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ3R5cGUnLCBzZWxmLm5hbWUpCiAgICAgZGVmIHdpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCdpbWFnZScsICd3aWR0aCcsIHNlbGYubmFtZSkpCiAKIGNsYXNzIFBob3RvSW1hZ2UoSW1hZ2UpOgpAQCAtMzg1NCwzNSArMzgyNiwxMiBAQAogICAgICAgICAiIiJSZXR1cm5zIGFuIG9yZGVyZWQgbGlzdCBvZiB0aGUgY2hpbGQgcGFuZXMuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhbmVzJykpCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRXh0ZW5zaW9uczoKLQotY2xhc3MgU3R1ZGJ1dHRvbihCdXR0b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3N0dWRidXR0b24nLCBjbmYsIGt3KQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktRW50ZXI+JywgICAgICAgc2VsZi50a0J1dHRvbkVudGVyKQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktTGVhdmU+JywgICAgICAgc2VsZi50a0J1dHRvbkxlYXZlKQotICAgICAgICBzZWxmLmJpbmQoJzwxPicsICAgICAgICAgICAgICAgc2VsZi50a0J1dHRvbkRvd24pCi0gICAgICAgIHNlbGYuYmluZCgnPEJ1dHRvblJlbGVhc2UtMT4nLCBzZWxmLnRrQnV0dG9uVXApCi0KLWNsYXNzIFRyaWJ1dHRvbihCdXR0b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ3RyaWJ1dHRvbicsIGNuZiwga3cpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1FbnRlcj4nLCAgICAgICBzZWxmLnRrQnV0dG9uRW50ZXIpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1MZWF2ZT4nLCAgICAgICBzZWxmLnRrQnV0dG9uTGVhdmUpCi0gICAgICAgIHNlbGYuYmluZCgnPDE+JywgICAgICAgICAgICAgICBzZWxmLnRrQnV0dG9uRG93bikKLSAgICAgICAgc2VsZi5iaW5kKCc8QnV0dG9uUmVsZWFzZS0xPicsIHNlbGYudGtCdXR0b25VcCkKLSAgICAgICAgc2VsZlsnZmcnXSAgICAgICAgICAgICAgID0gc2VsZlsnYmcnXQotICAgICAgICBzZWxmWydhY3RpdmViYWNrZ3JvdW5kJ10gPSBzZWxmWydiZyddCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdDoKIAogZGVmIF90ZXN0KCk6CiAgICAgcm9vdCA9IFRrKCkKICAgICB0ZXh0ID0gIlRoaXMgaXMgVGNsL1RrIHZlcnNpb24gJXMiICUgVGNsVmVyc2lvbgotICAgIGlmIFRjbFZlcnNpb24gPj0gOC4xOgotICAgICAgICB0ZXh0ICs9ICJcblRoaXMgc2hvdWxkIGJlIGEgY2VkaWxsYTogXHhlNyIKKyAgICB0ZXh0ICs9ICJcblRoaXMgc2hvdWxkIGJlIGEgY2VkaWxsYTogXHhlNyIKICAgICBsYWJlbCA9IExhYmVsKHJvb3QsIHRleHQ9dGV4dCkKICAgICBsYWJlbC5wYWNrKCkKICAgICB0ZXN0ID0gQnV0dG9uKHJvb3QsIHRleHQ9IkNsaWNrIG1lISIsCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fZml4LnB5IGIvTGliL3RraW50ZXIvX2ZpeC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ODczNC4uMDAwMDAwMAotLS0gYS9MaWIvdGtpbnRlci9fZml4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotaW1wb3J0IHN5cywgb3MKLQotIyBEZWxheSBpbXBvcnQgX3RraW50ZXIgdW50aWwgd2UgaGF2ZSBzZXQgVENMX0xJQlJBUlksCi0jIHNvIHRoYXQgVGNsX0ZpbmRFeGVjdXRhYmxlIGhhcyBhIGNoYW5jZSB0byBsb2NhdGUgaXRzCi0jIGVuY29kaW5nIGRpcmVjdG9yeS4KLQotIyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3Qga25vdyB0aGUgVENMX0xJQlJBUlkgZGlyZWN0b3J5Ci0jIGlmIHdlIGRvbid0IGtub3cgdGhlIHRjbCB2ZXJzaW9uLCB3aGljaCB3ZSBjYW5ub3QgZmluZCBvdXQKLSMgd2l0aG91dCBpbXBvcnQgVGNsLiBGb3J0dW5hdGVseSwgVGNsIHdpbGwgaXRzZWxmIGxvb2sgaW4KLSMgPFRDTF9MSUJSQVJZPlwuLlx0Y2w8VENMX1ZFUlNJT04+LCBzbyBhbnl0aGluZyBjbG9zZSB0bwotIyB0aGUgcmVhbCBUY2wgbGlicmFyeSB3aWxsIGRvLgotCi0jIEV4cGFuZCBzeW1ib2xpYyBsaW5rcyBvbiBWaXN0YQotdHJ5OgotICAgIGltcG9ydCBjdHlwZXMKLSAgICBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICBkZWYgY29udmVydF9wYXRoKHMpOgotICAgICAgICByZXR1cm4gcwotZWxzZToKLSAgICBkZWYgY29udmVydF9wYXRoKHMpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZSgibWJjcyIpCi0gICAgICAgIGhkaXIgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLlwKLSAgICAgICAgICAgIENyZWF0ZUZpbGVXKHMsIDB4ODAsICAgICMgRklMRV9SRUFEX0FUVFJJQlVURVMKLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICMgRklMRV9TSEFSRV9SRUFECi0gICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAzLCAgICAjIE9QRU5fRVhJU1RJTkcKLSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAsICMgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCi0gICAgICAgIGlmIGhkaXIgPT0gLTE6Ci0gICAgICAgICAgICAjIENhbm5vdCBvcGVuIGRpcmVjdG9yeSwgZ2l2ZSB1cAotICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAgYnVmID0gY3R5cGVzLmNyZWF0ZV91bmljb2RlX2J1ZmZlcigiIiwgMzI3NjgpCi0gICAgICAgIHJlcyA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuXAotICAgICAgICAgICAgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGlyLCBidWYsIGxlbihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSAjIFZPTFVNRV9OQU1FX0RPUwotICAgICAgICBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkNsb3NlSGFuZGxlKGhkaXIpCi0gICAgICAgIGlmIHJlcyA9PSAwOgotICAgICAgICAgICAgIyBDb252ZXJzaW9uIGZhaWxlZCAoZS5nLiBuZXR3b3JrIGxvY2F0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAgcyA9IGJ1Zls6cmVzXQotICAgICAgICAjIElnbm9yZSBsZWFkaW5nIFxcP1wKLSAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJcXFxcP1xcIik6Ci0gICAgICAgICAgICBzID0gc1s0Ol0KLSAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJVTkMiKToKLSAgICAgICAgICAgIHMgPSAiXFwiICsgc1szOl0KLSAgICAgICAgcmV0dXJuIHMKLQotcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwidGNsIikKLWlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgotICAgICMgZGV2ZGlyL2V4dGVybmFscy90Y2x0ay9saWIKLSAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAiZXh0ZXJuYWxzIiwgInRjbHRrIiwgImxpYiIpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKHByZWZpeCkKLSMgaWYgdGhpcyBkb2VzIG5vdCBleGlzdCwgbm8gZnVydGhlciBzZWFyY2ggaXMgbmVlZGVkCi1pZiBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgotICAgIHByZWZpeCA9IGNvbnZlcnRfcGF0aChwcmVmaXgpCi0gICAgaWYgIlRDTF9MSUJSQVJZIiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihwcmVmaXgpOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJ0Y2wiKToKLSAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih0Y2xkaXIpOgotICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJUQ0xfTElCUkFSWSJdID0gdGNsZGlyCi0gICAgIyBDb21wdXRlIFRLX0xJQlJBUlksIGtub3dpbmcgdGhhdCBpdCBoYXMgdGhlIHNhbWUgdmVyc2lvbgotICAgICMgYXMgVGNsCi0gICAgaW1wb3J0IF90a2ludGVyCi0gICAgdmVyID0gc3RyKF90a2ludGVyLlRDTF9WRVJTSU9OKQotICAgIGlmICJUS19MSUJSQVJZIiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgdiA9IG9zLnBhdGguam9pbihwcmVmaXgsICd0aycrdmVyKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odiwgInRjbEluZGV4IikpOgotICAgICAgICAgICAgb3MuZW52aXJvblsnVEtfTElCUkFSWSddID0gdgotICAgICMgV2UgZG9uJ3Qga25vdyB0aGUgVGl4IHZlcnNpb24sIHNvIHdlIG11c3Qgc2VhcmNoIHRoZSBlbnRpcmUKLSAgICAjIGRpcmVjdG9yeQotICAgIGlmICJUSVhfTElCUkFSWSIgbm90IGluIG9zLmVudmlyb246Ci0gICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIocHJlZml4KToKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgidGl4Iik6Ci0gICAgICAgICAgICAgICAgdGl4ZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCxuYW1lKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodGl4ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiVElYX0xJQlJBUlkiXSA9IHRpeGRpcgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZm9udC5weSBiL0xpYi90a2ludGVyL2ZvbnQucHkKaW5kZXggYjk2NjczMi4uMTM2NDI1NyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZm9udC5weQorKysgYi9MaWIvdGtpbnRlci9mb250LnB5CkBAIC0xMTIsOCArMTEyLDYgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5kZWxldGVfZm9udDoKICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgImRlbGV0ZSIsIHNlbGYubmFtZSkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6Ci0gICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgcGFzcwogCkBAIC0xNTMsNyArMTUxLDcgQEAKICAgICAgICAgYXJncyA9ICh0ZXh0LCkKICAgICAgICAgaWYgZGlzcGxheW9mOgogICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZiwgdGV4dCkKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKIAogICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zLCAqKmt3KToKICAgICAgICAgIiIiUmV0dXJuIGZvbnQgbWV0cmljcy4KQEAgLTE2NiwxMyArMTY0LDEzIEBACiAgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb25zOgogICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyBzZWxmLl9nZXQob3B0aW9ucykKLSAgICAgICAgICAgIHJldHVybiBpbnQoCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0aW50KAogICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCAqYXJncykpCiAgICAgICAgICAgICBvcHRpb25zID0ge30KICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihyZXMpLCAyKToKLSAgICAgICAgICAgICAgICBvcHRpb25zW3Jlc1tpXVsxOl1dID0gaW50KHJlc1tpKzFdKQorICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBzZWxmLl90ay5nZXRpbnQocmVzW2krMV0pCiAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucwogCiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weSBiL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weQppbmRleCA0NTMwMmI0Li5hOTVmNTUxIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9zaW1wbGVkaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvc2ltcGxlZGlhbG9nLnB5CkBAIC0zMjUsNyArMzI1LDcgQEAKIGNsYXNzIF9RdWVyeUludGVnZXIoX1F1ZXJ5RGlhbG9nKToKICAgICBlcnJvcm1lc3NhZ2UgPSAiTm90IGFuIGludGVnZXIuIgogICAgIGRlZiBnZXRyZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBpbnQoc2VsZi5lbnRyeS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0aW50KHNlbGYuZW50cnkuZ2V0KCkpCiAKIGRlZiBhc2tpbnRlZ2VyKHRpdGxlLCBwcm9tcHQsICoqa3cpOgogICAgICcnJ2dldCBhbiBpbnRlZ2VyIGZyb20gdGhlIHVzZXIKQEAgLTM0NCw3ICszNDQsNyBAQAogY2xhc3MgX1F1ZXJ5RmxvYXQoX1F1ZXJ5RGlhbG9nKToKICAgICBlcnJvcm1lc3NhZ2UgPSAiTm90IGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIgogICAgIGRlZiBnZXRyZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBmbG9hdChzZWxmLmVudHJ5LmdldCgpKQorICAgICAgICByZXR1cm4gc2VsZi5nZXRkb3VibGUoc2VsZi5lbnRyeS5nZXQoKSkKIAogZGVmIGFza2Zsb2F0KHRpdGxlLCBwcm9tcHQsICoqa3cpOgogICAgICcnJ2dldCBhIGZsb2F0IGZyb20gdGhlIHVzZXIKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQppbmRleCBjY2IzNzU1Li5kYmU1ZTg4IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CkBAIC0xNiw3ICsxNiw3IEBACiAKIGRlZiBpc19wYWNrYWdlKHBhdGgpOgogICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIocGF0aCk6Ci0gICAgICAgIGlmIG5hbWUgaW4gKCdfX2luaXRfXy5weScsICdfX2luaXRfXy5weWMnLCAnX19pbml0LnB5bycpOgorICAgICAgICBpZiBuYW1lIGluICgnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJyk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKaW5kZXggZDhkZTk0OS4uODVlZTJjNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQpAQCAtNyw2ICs3LDExIEBACiAKIGNsYXNzIE1pc2NUZXN0KEFic3RyYWN0VGtUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICB0ID0gdGtpbnRlci5Ub3BsZXZlbChzZWxmLnJvb3QsIG5hbWU9J3RvcCcpCisgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKKwogICAgIGRlZiB0ZXN0X3RrX3NldFBhbGV0dGUoc2VsZik6CiAgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKICAgICAgICAgcm9vdC50a19zZXRQYWxldHRlKCdibGFjaycpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CmluZGV4IDRiNzI5NDMuLmFiZGNlOTYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC0xMjIsMTAgKzEyMiwxMCBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CiAgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKICAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIFRjbEVycm9yKSk6CiAgICAgICAgICAgICB2LmdldCgpCiAgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1LjAiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBUY2xFcnJvcikpOgogICAgICAgICAgICAgdi5nZXQoKQogCiAKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CiAgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKICAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIFRjbEVycm9yKSk6CiAgICAgICAgICAgICB2LmdldCgpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IDhiZTAzNzEuLjcxNzE2NjcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkyMCw4ICs5MjAsOSBAQAogICAgICAgICBzYiA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgZm9yIGUgaW4gKCdhcnJvdzEnLCAnc2xpZGVyJywgJ2Fycm93MicpOgogICAgICAgICAgICAgc2IuYWN0aXZhdGUoZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2IuYWN0aXZhdGUoKSwgZSkKICAgICAgICAgc2IuYWN0aXZhdGUoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2IuYWN0aXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNiLmFjdGl2YXRlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2IuYWN0aXZhdGUsICdhcnJvdzEnLCAnYXJyb3cyJykKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKQEAgLTkzMSw4ICs5MzIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAnYWJjJywgJ2RlZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNiwgJ2RlZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNiwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgMC42KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAwLjYsIDAuNywgMC44KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLnNldCwgMC42KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLnNldCwgMC42LCAwLjcsIDAuOCkKIAogCiBAYWRkX3N0YW5kYXJkX29wdGlvbnMoU3RhbmRhcmRPcHRpb25zVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CmluZGV4IGMzYWYwNmMuLmYzMzk0NWMgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CkBAIC03MCwxNyArNzAsMTUgQEAKICAgICAgICAgIyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbi9wYXNzaW5nCiAgICAgICAgIHBhc3NlZF9leHBlY3RlZCA9ICgoJzAnLCAwKSwgKDAsIDApLCAoMTAsIDEwKSwKICAgICAgICAgICAgICgtMSwgLTEpLCAoc3lzLm1heHNpemUgKyAxLCBzeXMubWF4c2l6ZSArIDEpKQotICAgICAgICBpZiBzZWxmLndhbnRvYmplY3RzOgotICAgICAgICAgICAgcGFzc2VkX2V4cGVjdGVkICs9ICgoMi41LCAyKSwpCiAgICAgICAgIGZvciBwYWlyIGluIHBhc3NlZF9leHBlY3RlZDoKICAgICAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89cGFpclswXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC52YWx1ZSwgcGFpclsxXSkKICAgICAgICAgICAgIHguZGVzdHJveSgpCiAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89JzIuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHguX3ZhcmlhYmxlLmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIHRraW50ZXIuVGNsRXJyb3IpLCB4Ll92YXJpYWJsZS5nZXQpCiAgICAgICAgIHguZGVzdHJveSgpCiAgICAgICAgIHggPSB0dGsuTGFiZWxlZFNjYWxlKHNlbGYucm9vdCwgZnJvbV89Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC5fdmFyaWFibGUuZ2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgdGtpbnRlci5UY2xFcnJvciksIHguX3ZhcmlhYmxlLmdldCkKICAgICAgICAgeC5kZXN0cm95KCkKICAgICAgICAgIyB2YXJpYWJsZSBzaG91bGQgaGF2ZSBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlIGZyb21fIHZhbHVlCiAgICAgICAgIG15dmFyID0gdGtpbnRlci5Eb3VibGVWYXIoc2VsZi5yb290LCB2YWx1ZT0yMCkKZGlmZiAtLWdpdCBhL0xpYi90b2tlbi5weSBiL0xpYi90b2tlbi5weQppbmRleCA3NDcwYzhjLi41ZmRiMjIyIDEwMDY0NAotLS0gYS9MaWIvdG9rZW4ucHkKKysrIGIvTGliL3Rva2VuLnB5CkBAIC02MCwxMSArNjAsMTQgQEAKIERPVUJMRVNMQVNIID0gNDcKIERPVUJMRVNMQVNIRVFVQUwgPSA0OAogQVQgPSA0OQotUkFSUk9XID0gNTAKLUVMTElQU0lTID0gNTEKLU9QID0gNTIKLUVSUk9SVE9LRU4gPSA1MwotTl9UT0tFTlMgPSA1NAorQVRFUVVBTCA9IDUwCitSQVJST1cgPSA1MQorRUxMSVBTSVMgPSA1MgorT1AgPSA1MworQVdBSVQgPSA1NAorQVNZTkMgPSA1NQorRVJST1JUT0tFTiA9IDU2CitOX1RPS0VOUyA9IDU3CiBOVF9PRkZTRVQgPSAyNTYKICMtLWVuZCBjb25zdGFudHMtLQogCkBAIC05Niw4ICs5OSw4IEBACiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJJL08gZXJyb3I6ICVzXG4iICUgc3RyKGVycikpCiAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgbGluZXMgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKLSAgICBmcC5jbG9zZSgpCisgICAgd2l0aCBmcDoKKyAgICAgICAgbGluZXMgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKICAgICBwcm9nID0gcmUuY29tcGlsZSgKICAgICAgICAgIiNkZWZpbmVbIFx0XVsgXHRdKihbQS1aMC05XVtBLVowLTlfXSopWyBcdF1bIFx0XSooWzAtOV1bMC05XSopIiwKICAgICAgICAgcmUuSUdOT1JFQ0FTRSkKQEAgLTExNSw4ICsxMTgsOCBAQAogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCgyKQotICAgIGZvcm1hdCA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQotICAgIGZwLmNsb3NlKCkKKyAgICB3aXRoIGZwOgorICAgICAgICBmb3JtYXQgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0ID0gZm9ybWF0LmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLSIpICsgMQogICAgICAgICBlbmQgPSBmb3JtYXQuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLSIpCkBAIC0xMzIsOCArMTM1LDggQEAKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkkvTyBlcnJvcjogJXNcbiIgJSBzdHIoZXJyKSkKICAgICAgICAgc3lzLmV4aXQoNCkKLSAgICBmcC53cml0ZSgiXG4iLmpvaW4oZm9ybWF0KSkKLSAgICBmcC5jbG9zZSgpCisgICAgd2l0aCBmcDoKKyAgICAgICAgZnAud3JpdGUoIlxuIi5qb2luKGZvcm1hdCkpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBjZjE4YmY5Li5mNThjMjg2IDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC05MSw3ICs5MSw4IEBACiAgICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKICAgICAnLy8nOiAgRE9VQkxFU0xBU0gsCiAgICAgJy8vPSc6IERPVUJMRVNMQVNIRVFVQUwsCi0gICAgJ0AnOiAgIEFUCisgICAgJ0AnOiAgIEFULAorICAgICdAPSc6ICBBVEVRVUFMLAogfQogCiBjbGFzcyBUb2tlbkluZm8oY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnVG9rZW5JbmZvJywgJ3R5cGUgc3RyaW5nIHN0YXJ0IGVuZCBsaW5lJykpOgpAQCAtMTUwLDcgKzE1MSw3IEBACiAjIHJlY29nbml6ZWQgYXMgdHdvIGluc3RhbmNlcyBvZiA9KS4KIE9wZXJhdG9yID0gZ3JvdXAociJcKlwqPT8iLCByIj4+PT8iLCByIjw8PT8iLCByIiE9IiwKICAgICAgICAgICAgICAgICAgciIvLz0/IiwgciItPiIsCi0gICAgICAgICAgICAgICAgIHIiWytcLSovJSZ8Xj08Pl09PyIsCisgICAgICAgICAgICAgICAgIHIiWytcLSovJSZAfF49PD5dPT8iLAogICAgICAgICAgICAgICAgICByIn4iKQogCiBCcmFja2V0ID0gJ1tdWygpe31dJwpAQCAtMTg2LDcgKzE4Nyw2IEBACiAgICAgICAgICAgICJyQicnJyI6IFNpbmdsZTMsICdyQiIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICJSQicnJyI6IFNpbmdsZTMsICdSQiIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICJ1JycnIjogU2luZ2xlMywgJ3UiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKICAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKICAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9CkBAIC0yNzQsNyArMjc0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gdG9rdmFsCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgdG9rbnVtIGluIChOQU1FLCBOVU1CRVIpOgorICAgICAgICAgICAgaWYgdG9rbnVtIGluIChOQU1FLCBOVU1CRVIsIEFTWU5DLCBBV0FJVCk6CiAgICAgICAgICAgICAgICAgdG9rdmFsICs9ICcgJwogCiAgICAgICAgICAgICAjIEluc2VydCBhIHNwYWNlIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIHN0cmluZ3MKQEAgLTQ4MSw2ICs0ODEsMTAgQEAKICAgICBjb250bGluZSA9IE5vbmUKICAgICBpbmRlbnRzID0gWzBdCiAKKyAgICAjICdzdGFzaGVkJyBhbmQgJ2N0eCcgYXJlIHVzZWQgZm9yIGFzeW5jL2F3YWl0IHBhcnNpbmcKKyAgICBzdGFzaGVkID0gTm9uZQorICAgIGN0eCA9IFsoJ3N5bmMnLCAwKV0KKwogICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBlbmNvZGluZyA9PSAidXRmLTgtc2lnIjoKICAgICAgICAgICAgICMgQk9NIHdpbGwgYWxyZWFkeSBoYXZlIGJlZW4gc3RyaXBwZWQuCkBAIC01NTYsNiArNTYwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pbmRlbnQgZG9lcyBub3QgbWF0Y2ggYW55IG91dGVyIGluZGVudGF0aW9uIGxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICgiPHRva2VuaXplPiIsIGxudW0sIHBvcywgbGluZSkpCiAgICAgICAgICAgICAgICAgaW5kZW50cyA9IGluZGVudHNbOi0xXQorCisgICAgICAgICAgICAgICAgY3VyX2luZGVudCA9IGluZGVudHNbLTFdCisgICAgICAgICAgICAgICAgd2hpbGUgbGVuKGN0eCkgPiAxIGFuZCBjdHhbLTFdWzFdID49IGN1cl9pbmRlbnQ6CisgICAgICAgICAgICAgICAgICAgIGN0eC5wb3AoKQorCiAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKERFREVOVCwgJycsIChsbnVtLCBwb3MpLCAobG51bSwgcG9zKSwgbGluZSkKIAogICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdGF0ZW1lbnQKQEAgLTU3NiwxMCArNTg1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsID09ICcuJyBhbmQgdG9rZW4gIT0gJy4nIGFuZCB0b2tlbiAhPSAnLi4uJykpOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTlVNQkVSLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gJ1xyXG4nOgorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5MIGlmIHBhcmVubGV2ID4gMCBlbHNlIE5FV0xJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCkBAIC02MDcsNyArNjIyLDM3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oU1RSSU5HLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwuaXNpZGVudGlmaWVyKCk6ICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCdhc3luYycsICdhd2FpdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4Wy0xXVswXSA9PSAnYXN5bmMnIGFuZCBjdHhbLTFdWzFdIDwgaW5kZW50c1stMV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gVG9rZW5JbmZvKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZC50eXBlID09IE5BTUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXNoZWQuc3RyaW5nID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmFwcGVuZCgoJ2FzeW5jJywgaW5kZW50c1stMV0pKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEFTWU5DLCBzdGFzaGVkLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZC5zdGFydCwgc3Rhc2hlZC5lbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQubGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguYXBwZW5kKCgnc3luYycsIGluZGVudHNbLTFdKSkKKworICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICB5aWVsZCB0b2sKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJ1xcJzogICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RtdAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZWQgPSAxCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTYxNSwxMiArNjYwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbmxldiArPSAxCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnKV19JzoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVubGV2IC09IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhPUCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhFUlJPUlRPS0VOLCBsaW5lW3Bvc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG51bSwgcG9zKSwgKGxudW0sIHBvcysxKSwgbGluZSkKICAgICAgICAgICAgICAgICBwb3MgKz0gMQogCisgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgZm9yIGluZGVudCBpbiBpbmRlbnRzWzE6XTogICAgICAgICAgICAgICAgICMgcG9wIHJlbWFpbmluZyBpbmRlbnQgbGV2ZWxzCiAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhERURFTlQsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCiAgICAgeWllbGQgVG9rZW5JbmZvKEVORE1BUktFUiwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCAwOWZlOWVlLi5mMTA4MjY2IDEwMDc1NQotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC01OSwxMCArNTksNyBAQAogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMjM1LDggKzIzMiw4IEBACiAgICAgICAgIGlmIHNlbGYuaW5maWxlOgogICAgICAgICAgICAgIyBUcnkgdG8gbWVyZ2UgZXhpc3RpbmcgY291bnRzIGZpbGUuCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycyA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkKG9wZW4oc2VsZi5pbmZpbGUsICdyYicpKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmluZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycyA9IHBpY2tsZS5sb2FkKGYpCiAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGUoc2VsZi5fX2NsYXNzX18oY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycykpCiAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yLCBWYWx1ZUVycm9yKSBhcyBlcnI6CiAgICAgICAgICAgICAgICAgcHJpbnQoKCJTa2lwcGluZyBjb3VudHMgZmlsZSAlcjogJXMiCkBAIC0zMDgsNyArMzA1LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYuaXNfaWdub3JlZF9maWxlbmFtZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6CisgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnB5YyIpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogCiAgICAgICAgICAgICBpZiBjb3ZlcmRpciBpcyBOb25lOgpAQCAtMzI2LDE2ICszMjMsMTcgQEAKICAgICAgICAgICAgICAgICBsbm90YWIgPSBfZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxub3RhYiA9IHt9CisgICAgICAgICAgICBpZiBsbm90YWI6CisgICAgICAgICAgICAgICAgc291cmNlID0gbGluZWNhY2hlLmdldGxpbmVzKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIGNvdmVycGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG1vZHVsZW5hbWUgKyAiLmNvdmVyIikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgXyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhmcC5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICBuX2hpdHMsIG5fbGluZXMgPSBzZWxmLndyaXRlX3Jlc3VsdHNfZmlsZShjb3ZlcnBhdGgsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbm90YWIsIGNvdW50LCBlbmNvZGluZykKKyAgICAgICAgICAgICAgICBpZiBzdW1tYXJ5IGFuZCBuX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBwZXJjZW50ID0gaW50KDEwMCAqIG5faGl0cyAvIG5fbGluZXMpCisgICAgICAgICAgICAgICAgICAgIHN1bXNbbW9kdWxlbmFtZV0gPSBuX2xpbmVzLCBwZXJjZW50LCBtb2R1bGVuYW1lLCBmaWxlbmFtZQogCi0gICAgICAgICAgICBzb3VyY2UgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUpCi0gICAgICAgICAgICBjb3ZlcnBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBtb2R1bGVuYW1lICsgIi5jb3ZlciIpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIGVuY29kaW5nLCBfID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZwLnJlYWRsaW5lKQotICAgICAgICAgICAgbl9oaXRzLCBuX2xpbmVzID0gc2VsZi53cml0ZV9yZXN1bHRzX2ZpbGUoY292ZXJwYXRoLCBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbm90YWIsIGNvdW50LCBlbmNvZGluZykKLSAgICAgICAgICAgIGlmIHN1bW1hcnkgYW5kIG5fbGluZXM6Ci0gICAgICAgICAgICAgICAgcGVyY2VudCA9IGludCgxMDAgKiBuX2hpdHMgLyBuX2xpbmVzKQotICAgICAgICAgICAgICAgIHN1bXNbbW9kdWxlbmFtZV0gPSBuX2xpbmVzLCBwZXJjZW50LCBtb2R1bGVuYW1lLCBmaWxlbmFtZQogCiAgICAgICAgIGlmIHN1bW1hcnkgYW5kIHN1bXM6CiAgICAgICAgICAgICBwcmludCgibGluZXMgICBjb3YlICAgbW9kdWxlICAgKHBhdGgpIikKQEAgLTM2MywyNiArMzYxLDI2IEBACiAKICAgICAgICAgbl9saW5lcyA9IDAKICAgICAgICAgbl9oaXRzID0gMAotICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcywgMSk6Ci0gICAgICAgICAgICAjIGRvIHRoZSBibGFuay9jb21tZW50IG1hdGNoIHRvIHRyeSB0byBtYXJrIG1vcmUgbGluZXMKLSAgICAgICAgICAgICMgKGhlbHAgdGhlIHJlYWRlciBmaW5kIHN0dWZmIHRoYXQgaGFzbid0IGJlZW4gY292ZXJlZCkKLSAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsaW5lc19oaXQ6Ci0gICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJTVkOiAiICUgbGluZXNfaGl0W2xpbmVub10pCi0gICAgICAgICAgICAgICAgbl9oaXRzICs9IDEKLSAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKLSAgICAgICAgICAgIGVsaWYgcnhfYmxhbmsubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiICAgICAgICIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgbGluZXMgcHJlY2VkZWQgYnkgbm8gbWFya3Mgd2VyZW4ndCBoaXQKLSAgICAgICAgICAgICAgICAjIEhpZ2hsaWdodCB0aGVtIGlmIHNvIGluZGljYXRlZCwgdW5sZXNzIHRoZSBsaW5lIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgIyAjcHJhZ21hOiBOTyBDT1ZFUgotICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsbm90YWIgYW5kIG5vdCBQUkFHTUFfTk9DT1ZFUiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCI+Pj4+Pj4gIikKKyAgICAgICAgd2l0aCBvdXRmaWxlOgorICAgICAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZXMsIDEpOgorICAgICAgICAgICAgICAgICMgZG8gdGhlIGJsYW5rL2NvbW1lbnQgbWF0Y2ggdG8gdHJ5IHRvIG1hcmsgbW9yZSBsaW5lcworICAgICAgICAgICAgICAgICMgKGhlbHAgdGhlIHJlYWRlciBmaW5kIHN0dWZmIHRoYXQgaGFzbid0IGJlZW4gY292ZXJlZCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaW4gbGluZXNfaGl0OgorICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIlNWQ6ICIgJSBsaW5lc19oaXRbbGluZW5vXSkKKyAgICAgICAgICAgICAgICAgICAgbl9oaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbGlmIHJ4X2JsYW5rLm1hdGNoKGxpbmUpOgogICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKLSAgICAgICAgICAgIG91dGZpbGUud3JpdGUobGluZS5leHBhbmR0YWJzKDgpKQotICAgICAgICBvdXRmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGxpbmVzIHByZWNlZGVkIGJ5IG5vIG1hcmtzIHdlcmVuJ3QgaGl0CisgICAgICAgICAgICAgICAgICAgICMgSGlnaGxpZ2h0IHRoZW0gaWYgc28gaW5kaWNhdGVkLCB1bmxlc3MgdGhlIGxpbmUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgIyAjcHJhZ21hOiBOTyBDT1ZFUgorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaW4gbG5vdGFiIGFuZCBub3QgUFJBR01BX05PQ09WRVIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIj4+Pj4+PiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKKyAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKGxpbmUuZXhwYW5kdGFicyg4KSkKIAogICAgICAgICByZXR1cm4gbl9oaXRzLCBuX2xpbmVzCiAKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IGZhZjU5M2EuLjYxYzlmYjUgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMSwzMiArMSwyNyBAQAogIiIiRXh0cmFjdCwgZm9ybWF0IGFuZCBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBQeXRob24gc3RhY2sgdHJhY2VzLiIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBzeXMKLWltcG9ydCBvcGVyYXRvcgogCiBfX2FsbF9fID0gWydleHRyYWN0X3N0YWNrJywgJ2V4dHJhY3RfdGInLCAnZm9ybWF0X2V4Y2VwdGlvbicsCiAgICAgICAgICAgICdmb3JtYXRfZXhjZXB0aW9uX29ubHknLCAnZm9ybWF0X2xpc3QnLCAnZm9ybWF0X3N0YWNrJywKICAgICAgICAgICAgJ2Zvcm1hdF90YicsICdwcmludF9leGMnLCAnZm9ybWF0X2V4YycsICdwcmludF9leGNlcHRpb24nLAotICAgICAgICAgICAncHJpbnRfbGFzdCcsICdwcmludF9zdGFjaycsICdwcmludF90YicsCi0gICAgICAgICAgICdjbGVhcl9mcmFtZXMnXQorICAgICAgICAgICAncHJpbnRfbGFzdCcsICdwcmludF9zdGFjaycsICdwcmludF90YicsICdjbGVhcl9mcmFtZXMnLAorICAgICAgICAgICAnRnJhbWVTdW1tYXJ5JywgJ1N0YWNrU3VtbWFyeScsICdUcmFjZWJhY2tFeGNlcHRpb24nLAorICAgICAgICAgICAnd2Fsa19zdGFjaycsICd3YWxrX3RiJ10KIAogIwogIyBGb3JtYXR0aW5nIGFuZCBwcmludGluZyBsaXN0cyBvZiB0cmFjZWJhY2sgbGluZXMuCiAjCiAKLWRlZiBfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCk6Ci0gICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgIGl0ZW0gPSAnICBGaWxlICJ7fSIsIGxpbmUge30sIGluIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgaXRlbSA9IGl0ZW0gKyAnICAgIHt9XG4nLmZvcm1hdChsaW5lLnN0cmlwKCkpCi0gICAgICAgIHlpZWxkIGl0ZW0KLQogZGVmIHByaW50X2xpc3QoZXh0cmFjdGVkX2xpc3QsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgdGhlIGxpc3Qgb2YgdHVwbGVzIGFzIHJldHVybmVkIGJ5IGV4dHJhY3RfdGIoKSBvcgogICAgIGV4dHJhY3Rfc3RhY2soKSBhcyBhIGZvcm1hdHRlZCBzdGFjayB0cmFjZSB0byB0aGUgZ2l2ZW4gZmlsZS4iIiIKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgZm9yIGl0ZW0gaW4gX2Zvcm1hdF9saXN0X2l0ZXIoZXh0cmFjdGVkX2xpc3QpOgorICAgIGZvciBpdGVtIGluIFN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoZXh0cmFjdGVkX2xpc3QpLmZvcm1hdCgpOgogICAgICAgICBwcmludChpdGVtLCBmaWxlPWZpbGUsIGVuZD0iIikKIAogZGVmIGZvcm1hdF9saXN0KGV4dHJhY3RlZF9saXN0KToKQEAgLTM5LDQ1ICszNCwxMiBAQAogICAgIHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcwogICAgIHdob3NlIHNvdXJjZSB0ZXh0IGxpbmUgaXMgbm90IE5vbmUuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoX2Zvcm1hdF9saXN0X2l0ZXIoZXh0cmFjdGVkX2xpc3QpKQorICAgIHJldHVybiBTdGFja1N1bW1hcnkuZnJvbV9saXN0KGV4dHJhY3RlZF9saXN0KS5mb3JtYXQoKQogCiAjCiAjIFByaW50aW5nIGFuZCBFeHRyYWN0aW5nIFRyYWNlYmFja3MuCiAjCiAKLSMgZXh0cmFjdG9yIHRha2VzIGN1cnIgYW5kIG5lZWRzIHRvIHJldHVybiBhIHR1cGxlIG9mOgotIyAtIEZyYW1lIG9iamVjdAotIyAtIExpbmUgbnVtYmVyCi0jIC0gTmV4dCBpdGVtIChzYW1lIHR5cGUgYXMgY3VycikKLSMgSW4gcHJhY3RpY2UsIGN1cnIgaXMgZWl0aGVyIGEgdHJhY2ViYWNrIG9yIGEgZnJhbWUuCi1kZWYgX2V4dHJhY3RfdGJfb3Jfc3RhY2tfaXRlcihjdXJyLCBsaW1pdCwgZXh0cmFjdG9yKToKLSAgICBpZiBsaW1pdCBpcyBOb25lOgotICAgICAgICBsaW1pdCA9IGdldGF0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCBOb25lKQotCi0gICAgbiA9IDAKLSAgICB3aGlsZSBjdXJyIGlzIG5vdCBOb25lIGFuZCAobGltaXQgaXMgTm9uZSBvciBuIDwgbGltaXQpOgotICAgICAgICBmLCBsaW5lbm8sIG5leHRfaXRlbSA9IGV4dHJhY3RvcihjdXJyKQotICAgICAgICBjbyA9IGYuZl9jb2RlCi0gICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKLQotICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIGYuZl9nbG9iYWxzKQotCi0gICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gTm9uZQotCi0gICAgICAgIHlpZWxkIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKQotICAgICAgICBjdXJyID0gbmV4dF9pdGVtCi0gICAgICAgIG4gKz0gMQotCi1kZWYgX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQpOgotICAgIHJldHVybiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKAotICAgICAgICAgICAgICAgIHRiLCBsaW1pdCwKLSAgICAgICAgICAgICAgICBvcGVyYXRvci5hdHRyZ2V0dGVyKCJ0Yl9mcmFtZSIsICJ0Yl9saW5lbm8iLCAidGJfbmV4dCIpKQotCiBkZWYgcHJpbnRfdGIodGIsIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgdXAgdG8gJ2xpbWl0JyBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gdGhlIHRyYWNlYmFjayAndGInLgogCkBAIC05MCw3ICs1Miw3IEBACiAKIGRlZiBmb3JtYXRfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgICIiIkEgc2hvcnRoYW5kIGZvciAnZm9ybWF0X2xpc3QoZXh0cmFjdF90Yih0YiwgbGltaXQpKScuIiIiCi0gICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0PWxpbWl0KSkKKyAgICByZXR1cm4gZXh0cmFjdF90Yih0YiwgbGltaXQ9bGltaXQpLmZvcm1hdCgpCiAKIGRlZiBleHRyYWN0X3RiKHRiLCBsaW1pdD1Ob25lKToKICAgICAiIiJSZXR1cm4gbGlzdCBvZiB1cCB0byBsaW1pdCBwcmUtcHJvY2Vzc2VkIGVudHJpZXMgZnJvbSB0cmFjZWJhY2suCkBAIC0xMDMsNyArNjUsNyBAQAogICAgIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugc3RyaXBwZWQ7IGlmIHRoZSBzb3VyY2UgaXMgbm90CiAgICAgYXZhaWxhYmxlIGl0IGlzIE5vbmUuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQ9bGltaXQpKQorICAgIHJldHVybiBTdGFja1N1bW1hcnkuZXh0cmFjdCh3YWxrX3RiKHRiKSwgbGltaXQ9bGltaXQpCiAKICMKICMgRXhjZXB0aW9uIGZvcm1hdHRpbmcgYW5kIG91dHB1dC4KQEAgLTExMSw0NyArNzMsMTIgQEAKIAogX2NhdXNlX21lc3NhZ2UgPSAoCiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCi0gICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuIikKKyAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiIpCiAKIF9jb250ZXh0X21lc3NhZ2UgPSAoCiAgICAgIlxuRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICIKLSAgICAiYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4iKQorICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIikKIAotZGVmIF9pdGVyX2NoYWluKGV4YywgY3VzdG9tX3RiPU5vbmUsIHNlZW49Tm9uZSk6Ci0gICAgaWYgc2VlbiBpcyBOb25lOgotICAgICAgICBzZWVuID0gc2V0KCkKLSAgICBzZWVuLmFkZChleGMpCi0gICAgaXRzID0gW10KLSAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCi0gICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCi0gICAgaWYgY2F1c2UgaXMgbm90IE5vbmUgYW5kIGNhdXNlIG5vdCBpbiBzZWVuOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBGYWxzZSwgc2VlbikpCi0gICAgICAgIGl0cy5hcHBlbmQoWyhfY2F1c2VfbWVzc2FnZSwgTm9uZSldKQotICAgIGVsaWYgKGNvbnRleHQgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgbm90IGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyBhbmQKLSAgICAgICAgICBjb250ZXh0IG5vdCBpbiBzZWVuKToKLSAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjb250ZXh0LCBOb25lLCBzZWVuKSkKLSAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKLSAgICBpdHMuYXBwZW5kKFsoZXhjLCBjdXN0b21fdGIgb3IgZXhjLl9fdHJhY2ViYWNrX18pXSkKLSAgICAjIGl0ZXJ0b29scy5jaGFpbiBpcyBpbiBhbiBleHRlbnNpb24gbW9kdWxlIGFuZCBtYXkgYmUgdW5hdmFpbGFibGUKLSAgICBmb3IgaXQgaW4gaXRzOgotICAgICAgICB5aWVsZCBmcm9tIGl0Ci0KLWRlZiBfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbik6Ci0gICAgaWYgY2hhaW46Ci0gICAgICAgIHZhbHVlcyA9IF9pdGVyX2NoYWluKHZhbHVlLCB0YikKLSAgICBlbHNlOgotICAgICAgICB2YWx1ZXMgPSBbKHZhbHVlLCB0YildCi0KLSAgICBmb3IgdmFsdWUsIHRiIGluIHZhbHVlczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhdXNlL2NvbnRleHQgbWVzc2FnZSBsaW5lCi0gICAgICAgICAgICB5aWVsZCB2YWx1ZSArICdcbicKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHRiOgotICAgICAgICAgICAgeWllbGQgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKLSAgICAgICAgICAgIHlpZWxkIGZyb20gX2Zvcm1hdF9saXN0X2l0ZXIoX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQ9bGltaXQpKQotICAgICAgICB5aWVsZCBmcm9tIF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcih0eXBlKHZhbHVlKSwgdmFsdWUpCiAKIGRlZiBwcmludF9leGNlcHRpb24oZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJQcmludCBleGNlcHRpb24gdXAgdG8gJ2xpbWl0JyBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gJ3RiJyB0byAnZmlsZScuCkBAIC0xNjQsMTEgKzkxLDE2IEBACiAgICAgb2NjdXJyZWQgd2l0aCBhIGNhcmV0IG9uIHRoZSBuZXh0IGxpbmUgaW5kaWNhdGluZyB0aGUgYXBwcm94aW1hdGUKICAgICBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCiAgICAgIiIiCisgICAgIyBmb3JtYXRfZXhjZXB0aW9uIGhhcyBpZ25vcmVkIGV0eXBlIGZvciBzb21lIHRpbWUsIGFuZCBjb2RlIHN1Y2ggYXMgY2dpdGIKKyAgICAjIHBhc3NlcyBpbiBib2d1cyB2YWx1ZXMgYXMgYSByZXN1bHQuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggc3VjaCBjb2RlIHdlCisgICAgIyBpZ25vcmUgaXQgaGVyZSAocmF0aGVyIHRoYW4gaW4gdGhlIG5ldyBUcmFjZWJhY2tFeGNlcHRpb24gQVBJKS4KICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgZm9yIGxpbmUgaW4gX2Zvcm1hdF9leGNlcHRpb25faXRlcihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdCwgY2hhaW4pOgorICAgIGZvciBsaW5lIGluIFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0KS5mb3JtYXQoY2hhaW49Y2hhaW4pOgogICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0iIikKIAorCiBkZWYgZm9ybWF0X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJGb3JtYXQgYSBzdGFjayB0cmFjZSBhbmQgdGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbi4KIApAQCAtMTc4LDcgKzExMCwxMiBAQAogICAgIHRoZXNlIGxpbmVzIGFyZSBjb25jYXRlbmF0ZWQgYW5kIHByaW50ZWQsIGV4YWN0bHkgdGhlIHNhbWUgdGV4dCBpcwogICAgIHByaW50ZWQgYXMgZG9lcyBwcmludF9leGNlcHRpb24oKS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbikpCisgICAgIyBmb3JtYXRfZXhjZXB0aW9uIGhhcyBpZ25vcmVkIGV0eXBlIGZvciBzb21lIHRpbWUsIGFuZCBjb2RlIHN1Y2ggYXMgY2dpdGIKKyAgICAjIHBhc3NlcyBpbiBib2d1cyB2YWx1ZXMgYXMgYSByZXN1bHQuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggc3VjaCBjb2RlIHdlCisgICAgIyBpZ25vcmUgaXQgaGVyZSAocmF0aGVyIHRoYW4gaW4gdGhlIG5ldyBUcmFjZWJhY2tFeGNlcHRpb24gQVBJKS4KKyAgICByZXR1cm4gbGlzdChUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgIHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0KS5mb3JtYXQoY2hhaW49Y2hhaW4pKQorCiAKIGRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoZXR5cGUsIHZhbHVlKToKICAgICAiIiJGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIGEgdHJhY2ViYWNrLgpAQCAtMTk2LDQ2ICsxMzMsMTQgQEAKICAgICBzdHJpbmcgaW4gdGhlIGxpc3QuCiAKICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2V4Y2VwdGlvbl9vbmx5X2l0ZXIoZXR5cGUsIHZhbHVlKSkKKyAgICByZXR1cm4gbGlzdChUcmFjZWJhY2tFeGNlcHRpb24oZXR5cGUsIHZhbHVlLCBOb25lKS5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKSkKIAotZGVmIF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcihldHlwZSwgdmFsdWUpOgotICAgICMgR3JhY2VmdWxseSBoYW5kbGUgKHRoZSB3YXkgUHl0aG9uIDIuNCBhbmQgZWFybGllciBkaWQpIHRoZSBjYXNlIG9mCi0gICAgIyBiZWluZyBjYWxsZWQgd2l0aCAoTm9uZSwgTm9uZSkuCi0gICAgaWYgZXR5cGUgaXMgTm9uZToKLSAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpCi0gICAgICAgIHJldHVybgogCi0gICAgc3R5cGUgPSBldHlwZS5fX25hbWVfXwotICAgIHNtb2QgPSBldHlwZS5fX21vZHVsZV9fCi0gICAgaWYgc21vZCBub3QgaW4gKCJfX21haW5fXyIsICJidWlsdGlucyIpOgotICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQotCi0gICAgaWYgbm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRheEVycm9yKToKLSAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShzdHlwZSwgdmFsdWUpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBJdCB3YXMgYSBzeW50YXggZXJyb3I7IHNob3cgZXhhY3RseSB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQuCi0gICAgZmlsZW5hbWUgPSB2YWx1ZS5maWxlbmFtZSBvciAiPHN0cmluZz4iCi0gICAgbGluZW5vID0gc3RyKHZhbHVlLmxpbmVubykgb3IgJz8nCi0gICAgeWllbGQgJyAgRmlsZSAie30iLCBsaW5lIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vKQotCi0gICAgYmFkbGluZSA9IHZhbHVlLnRleHQKLSAgICBvZmZzZXQgPSB2YWx1ZS5vZmZzZXQKLSAgICBpZiBiYWRsaW5lIGlzIG5vdCBOb25lOgotICAgICAgICB5aWVsZCAnICAgIHt9XG4nLmZvcm1hdChiYWRsaW5lLnN0cmlwKCkpCi0gICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBiYWRsaW5lLnJzdHJpcCgnXG4nKQotICAgICAgICAgICAgb2Zmc2V0ID0gbWluKGxlbihjYXJldHNwYWNlKSwgb2Zmc2V0KSAtIDEKLSAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBjYXJldHNwYWNlWzpvZmZzZXRdLmxzdHJpcCgpCi0gICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAotICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgoYy5pc3NwYWNlKCkgYW5kIGMgb3IgJyAnKSBmb3IgYyBpbiBjYXJldHNwYWNlKQotICAgICAgICAgICAgeWllbGQgJyAgICB7fV5cbicuZm9ybWF0KCcnLmpvaW4oY2FyZXRzcGFjZSkpCi0gICAgbXNnID0gdmFsdWUubXNnIG9yICI8bm8gZGV0YWlsIGF2YWlsYWJsZT4iCi0gICAgeWllbGQgInt9OiB7fVxuIi5mb3JtYXQoc3R5cGUsIG1zZykKKyMgLS0gbm90IG9mZmljYWwgQVBJIGJ1dCBmb2xrIHByb2JhYmx5IHVzZSB0aGVzZSB0d28gZnVuY3Rpb25zLgogCiBkZWYgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpOgogICAgIHZhbHVlc3RyID0gX3NvbWVfc3RyKHZhbHVlKQotICAgIGlmIHZhbHVlIGlzIE5vbmUgb3Igbm90IHZhbHVlc3RyOgorICAgIGlmIHZhbHVlID09ICdOb25lJyBvciB2YWx1ZSBpcyBOb25lIG9yIG5vdCB2YWx1ZXN0cjoKICAgICAgICAgbGluZSA9ICIlc1xuIiAlIGV0eXBlCiAgICAgZWxzZToKICAgICAgICAgbGluZSA9ICIlczogJXNcbiIgJSAoZXR5cGUsIHZhbHVlc3RyKQpAQCAtMjQ3LDYgKzE1Miw4IEBACiAgICAgZXhjZXB0OgogICAgICAgICByZXR1cm4gJzx1bnByaW50YWJsZSAlcyBvYmplY3Q+JyAlIHR5cGUodmFsdWUpLl9fbmFtZV9fCiAKKyMgLS0KKwogZGVmIHByaW50X2V4YyhsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIlNob3J0aGFuZCBmb3IgJ3ByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0LCBmaWxlKScuIiIiCiAgICAgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQ9bGltaXQsIGZpbGU9ZmlsZSwgY2hhaW49Y2hhaW4pCkBAIC0yNjcsMTUgKzE3NCw2IEBACiAjIFByaW50aW5nIGFuZCBFeHRyYWN0aW5nIFN0YWNrcy4KICMKIAotZGVmIF9leHRyYWN0X3N0YWNrX2l0ZXIoZiwgbGltaXQ9Tm9uZSk6Ci0gICAgcmV0dXJuIF9leHRyYWN0X3RiX29yX3N0YWNrX2l0ZXIoCi0gICAgICAgICAgICAgICAgZiwgbGltaXQsIGxhbWJkYSBmOiAoZiwgZi5mX2xpbmVubywgZi5mX2JhY2spKQotCi1kZWYgX2dldF9zdGFjayhmKToKLSAgICBpZiBmIGlzIE5vbmU6Ci0gICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrLmZfYmFjawotICAgIHJldHVybiBmCi0KIGRlZiBwcmludF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgYSBzdGFjayB0cmFjZSBmcm9tIGl0cyBpbnZvY2F0aW9uIHBvaW50LgogCkBAIC0yODMsMTEgKzE4MSwxMyBAQAogICAgIHN0YWNrIGZyYW1lIGF0IHdoaWNoIHRvIHN0YXJ0LiBUaGUgb3B0aW9uYWwgJ2xpbWl0JyBhbmQgJ2ZpbGUnCiAgICAgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgcHJpbnRfZXhjZXB0aW9uKCkuCiAgICAgIiIiCi0gICAgcHJpbnRfbGlzdChleHRyYWN0X3N0YWNrKF9nZXRfc3RhY2soZiksIGxpbWl0PWxpbWl0KSwgZmlsZT1maWxlKQorICAgIHByaW50X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKKwogCiBkZWYgZm9ybWF0X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiU2hvcnRoYW5kIGZvciAnZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdCkpJy4iIiIKLSAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhfZ2V0X3N0YWNrKGYpLCBsaW1pdD1saW1pdCkpCisgICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQ9bGltaXQpKQorCiAKIGRlZiBleHRyYWN0X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiRXh0cmFjdCB0aGUgcmF3IHRyYWNlYmFjayBmcm9tIHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lLgpAQCAtMjk4LDEwICsxOTgsMTEgQEAKICAgICBsaW5lIG51bWJlciwgZnVuY3Rpb24gbmFtZSwgdGV4dCksIGFuZCB0aGUgZW50cmllcyBhcmUgaW4gb3JkZXIKICAgICBmcm9tIG9sZGVzdCB0byBuZXdlc3Qgc3RhY2sgZnJhbWUuCiAgICAgIiIiCi0gICAgc3RhY2sgPSBsaXN0KF9leHRyYWN0X3N0YWNrX2l0ZXIoX2dldF9zdGFjayhmKSwgbGltaXQ9bGltaXQpKQorICAgIHN0YWNrID0gU3RhY2tTdW1tYXJ5LmV4dHJhY3Qod2Fsa19zdGFjayhmKSwgbGltaXQ9bGltaXQpCiAgICAgc3RhY2sucmV2ZXJzZSgpCiAgICAgcmV0dXJuIHN0YWNrCiAKKwogZGVmIGNsZWFyX2ZyYW1lcyh0Yik6CiAgICAgIkNsZWFyIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgZnJhbWVzIG9mIGEgdHJhY2ViYWNrLiIKICAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKQEAgLTMxMSwzICsyMTIsMzU1IEBACiAgICAgICAgICAgICAjIElnbm9yZSB0aGUgZXhjZXB0aW9uIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgc3RpbGwgZXhlY3V0aW5nLgogICAgICAgICAgICAgcGFzcwogICAgICAgICB0YiA9IHRiLnRiX25leHQKKworCitjbGFzcyBGcmFtZVN1bW1hcnk6CisgICAgIiIiQSBzaW5nbGUgZnJhbWUgZnJvbSBhIHRyYWNlYmFjay4KKworICAgIC0gOmF0dHI6YGZpbGVuYW1lYCBUaGUgZmlsZW5hbWUgZm9yIHRoZSBmcmFtZS4KKyAgICAtIDphdHRyOmBsaW5lbm9gIFRoZSBsaW5lIHdpdGhpbiBmaWxlbmFtZSBmb3IgdGhlIGZyYW1lIHRoYXQgd2FzCisgICAgICBhY3RpdmUgd2hlbiB0aGUgZnJhbWUgd2FzIGNhcHR1cmVkLgorICAgIC0gOmF0dHI6YG5hbWVgIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBvciBtZXRob2QgdGhhdCB3YXMgZXhlY3V0aW5nCisgICAgICB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbGluZWAgVGhlIHRleHQgZnJvbSB0aGUgbGluZWNhY2hlIG1vZHVsZSBmb3IgdGhlCisgICAgICBvZiBjb2RlIHRoYXQgd2FzIHJ1bm5pbmcgd2hlbiB0aGUgZnJhbWUgd2FzIGNhcHR1cmVkLgorICAgIC0gOmF0dHI6YGxvY2Fsc2AgRWl0aGVyIE5vbmUgaWYgbG9jYWxzIHdlcmUgbm90IHN1cHBsaWVkLCBvciBhIGRpY3QKKyAgICAgIG1hcHBpbmcgdGhlIG5hbWUgdG8gdGhlIHJlcHIoKSBvZiB0aGUgdmFyaWFibGUuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoJ2ZpbGVuYW1lJywgJ2xpbmVubycsICduYW1lJywgJ19saW5lJywgJ2xvY2FscycpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgKiwgbG9va3VwX2xpbmU9VHJ1ZSwKKyAgICAgICAgICAgIGxvY2Fscz1Ob25lLCBsaW5lPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBGcmFtZVN1bW1hcnkuCisKKyAgICAgICAgOnBhcmFtIGxvb2t1cF9saW5lOiBJZiBUcnVlLCBgbGluZWNhY2hlYCBpcyBjb25zdWx0ZWQgZm9yIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIGNvZGUgbGluZS4gT3RoZXJ3aXNlLCB0aGUgbGluZSB3aWxsIGJlIGxvb2tlZCB1cCB3aGVuIGZpcnN0IG5lZWRlZC4KKyAgICAgICAgOnBhcmFtIGxvY2FsczogSWYgc3VwcGxpZWQgdGhlIGZyYW1lIGxvY2Fscywgd2hpY2ggd2lsbCBiZSBjYXB0dXJlZCBhcworICAgICAgICAgICAgb2JqZWN0IHJlcHJlc2VudGF0aW9ucy4KKyAgICAgICAgOnBhcmFtIGxpbmU6IElmIHByb3ZpZGVkLCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGxvb2tpbmcgdXAgdGhlIGxpbmUgaW4KKyAgICAgICAgICAgIHRoZSBsaW5lY2FjaGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9saW5lID0gbGluZQorICAgICAgICBpZiBsb29rdXBfbGluZToKKyAgICAgICAgICAgIHNlbGYubGluZQorICAgICAgICBzZWxmLmxvY2FscyA9IFwKKyAgICAgICAgICAgIGRpY3QoKGssIHJlcHIodikpIGZvciBrLCB2IGluIGxvY2Fscy5pdGVtcygpKSBpZiBsb2NhbHMgZWxzZSBOb25lCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lID09IG90aGVyLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID09IG90aGVyLmxpbmVubyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPT0gb3RoZXIubmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmxvY2FscyA9PSBvdGhlci5sb2NhbHMpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcG9zKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubywgc2VsZi5uYW1lLCBzZWxmLmxpbmUpW3Bvc10KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoW3NlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm5hbWUsIHNlbGYubGluZV0pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiPEZyYW1lU3VtbWFyeSBmaWxlIHtmaWxlbmFtZX0sIGxpbmUge2xpbmVub30gaW4ge25hbWV9PiIuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9c2VsZi5maWxlbmFtZSwgbGluZW5vPXNlbGYubGluZW5vLCBuYW1lPXNlbGYubmFtZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsaW5lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9saW5lIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saW5lID0gbGluZWNhY2hlLmdldGxpbmUoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8pLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xpbmUKKworCitkZWYgd2Fsa19zdGFjayhmKToKKyAgICAiIiJXYWxrIGEgc3RhY2sgeWllbGRpbmcgdGhlIGZyYW1lIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4KKworICAgIFRoaXMgd2lsbCBmb2xsb3cgZi5mX2JhY2sgZnJvbSB0aGUgZ2l2ZW4gZnJhbWUuIElmIG5vIGZyYW1lIGlzIGdpdmVuLCB0aGUKKyAgICBjdXJyZW50IHN0YWNrIGlzIHVzZWQuIFVzdWFsbHkgdXNlZCB3aXRoIFN0YWNrU3VtbWFyeS5leHRyYWN0LgorICAgICIiIgorICAgIGlmIGYgaXMgTm9uZToKKyAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2suZl9iYWNrCisgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKKyAgICAgICAgeWllbGQgZiwgZi5mX2xpbmVubworICAgICAgICBmID0gZi5mX2JhY2sKKworCitkZWYgd2Fsa190Yih0Yik6CisgICAgIiIiV2FsayBhIHRyYWNlYmFjayB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyIGZvciBlYWNoIGZyYW1lLgorCisgICAgVGhpcyB3aWxsIGZvbGxvdyB0Yi50Yl9uZXh0IChhbmQgdGh1cyBpcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdG8KKyAgICB3YWxrX3N0YWNrKS4gVXN1YWxseSB1c2VkIHdpdGggU3RhY2tTdW1tYXJ5LmV4dHJhY3QuCisgICAgIiIiCisgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6CisgICAgICAgIHlpZWxkIHRiLnRiX2ZyYW1lLCB0Yi50Yl9saW5lbm8KKyAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CisKKworY2xhc3MgU3RhY2tTdW1tYXJ5KGxpc3QpOgorICAgICIiIkEgc3RhY2sgb2YgZnJhbWVzLiIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGV4dHJhY3Qoa2xhc3MsIGZyYW1lX2dlbiwgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsCisgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIFN0YWNrU3VtbWFyeSBmcm9tIGEgdHJhY2ViYWNrIG9yIHN0YWNrIG9iamVjdC4KKworICAgICAgICA6cGFyYW0gZnJhbWVfZ2VuOiBBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyAoZnJhbWUsIGxpbmVubykgdHVwbGVzIHRvCisgICAgICAgICAgICBpbmNsdWRlIGluIHRoZSBzdGFjay4KKyAgICAgICAgOnBhcmFtIGxpbWl0OiBOb25lIHRvIGluY2x1ZGUgYWxsIGZyYW1lcyBvciB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0bworICAgICAgICAgICAgaW5jbHVkZS4KKyAgICAgICAgOnBhcmFtIGxvb2t1cF9saW5lczogSWYgVHJ1ZSwgbG9va3VwIGxpbmVzIGZvciBlYWNoIGZyYW1lIGltbWVkaWF0ZWx5LAorICAgICAgICAgICAgb3RoZXJ3aXNlIGxvb2t1cCBpcyBkZWZlcnJlZCB1bnRpbCB0aGUgZnJhbWUgaXMgcmVuZGVyZWQuCisgICAgICAgIDpwYXJhbSBjYXB0dXJlX2xvY2FsczogSWYgVHJ1ZSwgdGhlIGxvY2FsIHZhcmlhYmxlcyBmcm9tIGVhY2ggZnJhbWUgd2lsbAorICAgICAgICAgICAgYmUgY2FwdHVyZWQgYXMgb2JqZWN0IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBGcmFtZVN1bW1hcnkuCisgICAgICAgICIiIgorICAgICAgICBpZiBsaW1pdCBpcyBOb25lOgorICAgICAgICAgICAgbGltaXQgPSBnZXRhdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgTm9uZSkKKyAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lIGFuZCBsaW1pdCA8IDA6CisgICAgICAgICAgICAgICAgbGltaXQgPSAwCisgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKKyAgICAgICAgICAgICAgICBmcmFtZV9nZW4gPSBpdGVydG9vbHMuaXNsaWNlKGZyYW1lX2dlbiwgbGltaXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGNvbGxlY3Rpb25zLmRlcXVlKGZyYW1lX2dlbiwgbWF4bGVuPS1saW1pdCkKKworICAgICAgICByZXN1bHQgPSBrbGFzcygpCisgICAgICAgIGZuYW1lcyA9IHNldCgpCisgICAgICAgIGZvciBmLCBsaW5lbm8gaW4gZnJhbWVfZ2VuOgorICAgICAgICAgICAgY28gPSBmLmZfY29kZQorICAgICAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQorICAgICAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKKworICAgICAgICAgICAgZm5hbWVzLmFkZChmaWxlbmFtZSkKKyAgICAgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoZmlsZW5hbWUsIGYuZl9nbG9iYWxzKQorICAgICAgICAgICAgIyBNdXN0IGRlZmVyIGxpbmUgbG9va3VwcyB1bnRpbCB3ZSBoYXZlIGNhbGxlZCBjaGVja2NhY2hlLgorICAgICAgICAgICAgaWYgY2FwdHVyZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgZl9sb2NhbHMgPSBmLmZfbG9jYWxzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZfbG9jYWxzID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGcmFtZVN1bW1hcnkoCisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbG9va3VwX2xpbmU9RmFsc2UsIGxvY2Fscz1mX2xvY2FscykpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmbmFtZXM6CisgICAgICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKKyAgICAgICAgIyBJZiBpbW1lZGlhdGUgbG9va3VwIHdhcyBkZXNpcmVkLCB0cmlnZ2VyIGxvb2t1cHMgbm93LgorICAgICAgICBpZiBsb29rdXBfbGluZXM6CisgICAgICAgICAgICBmb3IgZiBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZi5saW5lCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2xpc3Qoa2xhc3MsIGFfbGlzdCk6CisgICAgICAgICIiIkNyZWF0ZSBhIFN0YWNrU3VtbWFyeSBmcm9tIGEgc2ltcGxlIGxpc3Qgb2YgdHVwbGVzLgorCisgICAgICAgIFRoaXMgbWV0aG9kIHN1cHBvcnRzIHRoZSBvbGRlciBQeXRob24gQVBJLiBFYWNoIHR1cGxlIHNob3VsZCBiZSBhCisgICAgICAgIDQtdHVwbGUgd2l0aCAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkgZWxlbWVudHMuCisgICAgICAgICIiIgorICAgICAgICAjIFdoaWxlIGRvaW5nIGEgZmFzdC1wYXRoIGNoZWNrIGZvciBpc2luc3RhbmNlKGFfbGlzdCwgU3RhY2tTdW1tYXJ5KSBpcworICAgICAgICAjIGFwcGVhbGluZywgaWRsZWxpYi5ydW4uY2xlYW51cF90cmFjZWJhY2sgYW5kIG90aGVyIHNpbWlsYXIgY29kZSBtYXkKKyAgICAgICAgIyBicmVhayB0aGlzIGJ5IG1ha2luZyBhcmJpdHJhcnkgZnJhbWVzIHBsYWluIHR1cGxlcywgc28gd2UgbmVlZCB0bworICAgICAgICAjIGNoZWNrIG9uIGEgZnJhbWUgYnkgZnJhbWUgYmFzaXMuCisgICAgICAgIHJlc3VsdCA9IFN0YWNrU3VtbWFyeSgpCisgICAgICAgIGZvciBmcmFtZSBpbiBhX2xpc3Q6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZyYW1lLCBGcmFtZVN1bW1hcnkpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZnJhbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgPSBmcmFtZQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRnJhbWVTdW1tYXJ5KGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmU9bGluZSkpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBmb3JtYXQoc2VsZik6CisgICAgICAgICIiIkZvcm1hdCB0aGUgc3RhY2sgcmVhZHkgZm9yIHByaW50aW5nLgorCisgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCisgICAgICAgIHJlc3VsdGluZyBsaXN0IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZyYW1lIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIHJvdyA9IFtdCisgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAorICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQorICAgICAgICAgICAgaWYgZnJhbWUubGluZToKKyAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCcgICAge31cbicuZm9ybWF0KGZyYW1lLmxpbmUuc3RyaXAoKSkpCisgICAgICAgICAgICBpZiBmcmFtZS5sb2NhbHM6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworY2xhc3MgVHJhY2ViYWNrRXhjZXB0aW9uOgorICAgICIiIkFuIGV4Y2VwdGlvbiByZWFkeSBmb3IgcmVuZGVyaW5nLgorCisgICAgVGhlIHRyYWNlYmFjayBtb2R1bGUgY2FwdHVyZXMgZW5vdWdoIGF0dHJpYnV0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uCisgICAgdG8gdGhpcyBpbnRlcm1lZGlhcnkgZm9ybSB0byBlbnN1cmUgdGhhdCBubyByZWZlcmVuY2VzIGFyZSBoZWxkLCB3aGlsZQorICAgIHN0aWxsIGJlaW5nIGFibGUgdG8gZnVsbHkgcHJpbnQgb3IgZm9ybWF0IGl0LgorCisgICAgVXNlIGBmcm9tX2V4Y2VwdGlvbmAgdG8gY3JlYXRlIFRyYWNlYmFja0V4Y2VwdGlvbiBpbnN0YW5jZXMgZnJvbSBleGNlcHRpb24KKyAgICBvYmplY3RzLCBvciB0aGUgY29uc3RydWN0b3IgdG8gY3JlYXRlIFRyYWNlYmFja0V4Y2VwdGlvbiBpbnN0YW5jZXMgZnJvbQorICAgIGluZGl2aWR1YWwgY29tcG9uZW50cy4KKworICAgIC0gOmF0dHI6YF9fY2F1c2VfX2AgQSBUcmFjZWJhY2tFeGNlcHRpb24gb2YgdGhlIG9yaWdpbmFsICpfX2NhdXNlX18qLgorICAgIC0gOmF0dHI6YF9fY29udGV4dF9fYCBBIFRyYWNlYmFja0V4Y2VwdGlvbiBvZiB0aGUgb3JpZ2luYWwgKl9fY29udGV4dF9fKi4KKyAgICAtIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgVGhlICpfX3N1cHByZXNzX2NvbnRleHRfXyogdmFsdWUgZnJvbSB0aGUKKyAgICAgIG9yaWdpbmFsIGV4Y2VwdGlvbi4KKyAgICAtIDphdHRyOmBzdGFja2AgQSBgU3RhY2tTdW1tYXJ5YCByZXByZXNlbnRpbmcgdGhlIHRyYWNlYmFjay4KKyAgICAtIDphdHRyOmBleGNfdHlwZWAgVGhlIGNsYXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2suCisgICAgLSA6YXR0cjpgZmlsZW5hbWVgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGZpbGVuYW1lIHdoZXJlIHRoZSBlcnJvcgorICAgICAgb2NjdXJlZC4KKyAgICAtIDphdHRyOmBsaW5lbm9gIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGxpbmVudW1iZXIgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YHRleHRgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIHRleHQgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YG9mZnNldGAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQgd2hlcmUgdGhlCisgICAgICBlcnJvciBvY2N1cmVkLgorICAgIC0gOmF0dHI6YG1zZ2AgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrLCAqLCBsaW1pdD1Ob25lLAorICAgICAgICAgICAgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlLCBfc2Vlbj1Ob25lKToKKyAgICAgICAgIyBOQjogd2UgbmVlZCB0byBhY2NlcHQgZXhjX3RyYWNlYmFjaywgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrIHRvCisgICAgICAgICMgcGVybWl0IGJhY2t3YXJkcyBjb21wYXQgd2l0aCB0aGUgZXhpc3RpbmcgQVBJLCBvdGhlcndpc2Ugd2UKKyAgICAgICAgIyBuZWVkIHN0dWIgdGh1bmsgb2JqZWN0cyBqdXN0IHRvIGdsdWUgaXQgdG9nZXRoZXIuCisgICAgICAgICMgSGFuZGxlIGxvb3BzIGluIF9fY2F1c2VfXyBvciBfX2NvbnRleHRfXy4KKyAgICAgICAgaWYgX3NlZW4gaXMgTm9uZToKKyAgICAgICAgICAgIF9zZWVuID0gc2V0KCkKKyAgICAgICAgX3NlZW4uYWRkKGV4Y192YWx1ZSkKKyAgICAgICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSAodGhlIHdheSBQeXRob24gMi40IGFuZCBlYXJsaWVyIGRpZCkgdGhlIGNhc2Ugb2YKKyAgICAgICAgIyBiZWluZyBjYWxsZWQgd2l0aCBubyB0eXBlIG9yIHZhbHVlIChOb25lLCBOb25lLCBOb25lKS4KKyAgICAgICAgaWYgKGV4Y192YWx1ZSBhbmQgZXhjX3ZhbHVlLl9fY2F1c2VfXyBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGV4Y192YWx1ZS5fX2NhdXNlX18gbm90IGluIF9zZWVuKToKKyAgICAgICAgICAgIGNhdXNlID0gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIHR5cGUoZXhjX3ZhbHVlLl9fY2F1c2VfXyksCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY2F1c2VfXywKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jYXVzZV9fLl9fdHJhY2ViYWNrX18sCisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzLAorICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2F1c2UgPSBOb25lCisgICAgICAgIGlmIChleGNfdmFsdWUgYW5kIGV4Y192YWx1ZS5fX2NvbnRleHRfXyBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGV4Y192YWx1ZS5fX2NvbnRleHRfXyBub3QgaW4gX3NlZW4pOgorICAgICAgICAgICAgY29udGV4dCA9IFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICB0eXBlKGV4Y192YWx1ZS5fX2NvbnRleHRfXyksCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY29udGV4dF9fLAorICAgICAgICAgICAgICAgIGV4Y192YWx1ZS5fX2NvbnRleHRfXy5fX3RyYWNlYmFja19fLAorICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgIGxvb2t1cF9saW5lcz1GYWxzZSwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1jYXB0dXJlX2xvY2FscywKKyAgICAgICAgICAgICAgICBfc2Vlbj1fc2VlbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBOb25lCisgICAgICAgIHNlbGYuX19jYXVzZV9fID0gY2F1c2UKKyAgICAgICAgc2VsZi5fX2NvbnRleHRfXyA9IGNvbnRleHQKKyAgICAgICAgc2VsZi5fX3N1cHByZXNzX2NvbnRleHRfXyA9IFwKKyAgICAgICAgICAgIGV4Y192YWx1ZS5fX3N1cHByZXNzX2NvbnRleHRfXyBpZiBleGNfdmFsdWUgZWxzZSBGYWxzZQorICAgICAgICAjIFRPRE86IGxvY2Fscy4KKyAgICAgICAgc2VsZi5zdGFjayA9IFN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgd2Fsa190YihleGNfdHJhY2ViYWNrKSwgbGltaXQ9bGltaXQsIGxvb2t1cF9saW5lcz1sb29rdXBfbGluZXMsCisgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1jYXB0dXJlX2xvY2FscykKKyAgICAgICAgc2VsZi5leGNfdHlwZSA9IGV4Y190eXBlCisgICAgICAgICMgQ2FwdHVyZSBub3cgdG8gcGVybWl0IGZyZWVpbmcgcmVzb3VyY2VzOiBvbmx5IGNvbXBsaWNhdGlvbiBpcyBpbiB0aGUKKyAgICAgICAgIyB1bm9mZmljaWFsIEFQSSBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lCisgICAgICAgIHNlbGYuX3N0ciA9IF9zb21lX3N0cihleGNfdmFsdWUpCisgICAgICAgIGlmIGV4Y190eXBlIGFuZCBpc3N1YmNsYXNzKGV4Y190eXBlLCBTeW50YXhFcnJvcik6CisgICAgICAgICAgICAjIEhhbmRsZSBTeW50YXhFcnJvcidzIHNwZWNpYWxseQorICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGV4Y192YWx1ZS5maWxlbmFtZQorICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzdHIoZXhjX3ZhbHVlLmxpbmVubykKKyAgICAgICAgICAgIHNlbGYudGV4dCA9IGV4Y192YWx1ZS50ZXh0CisgICAgICAgICAgICBzZWxmLm9mZnNldCA9IGV4Y192YWx1ZS5vZmZzZXQKKyAgICAgICAgICAgIHNlbGYubXNnID0gZXhjX3ZhbHVlLm1zZworICAgICAgICBpZiBsb29rdXBfbGluZXM6CisgICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihzZWxmLCBleGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIkNyZWF0ZSBhIFRyYWNlYmFja0V4Y2VwdGlvbiBmcm9tIGFuIGV4Y2VwdGlvbi4iIiIKKyAgICAgICAgcmV0dXJuIFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIF9sb2FkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJQcml2YXRlIEFQSS4gZm9yY2UgYWxsIGxpbmVzIGluIHRoZSBzdGFjayB0byBiZSBsb2FkZWQuIiIiCisgICAgICAgIGZvciBmcmFtZSBpbiBzZWxmLnN0YWNrOgorICAgICAgICAgICAgZnJhbWUubGluZQorICAgICAgICBpZiBzZWxmLl9fY29udGV4dF9fOgorICAgICAgICAgICAgc2VsZi5fX2NvbnRleHRfXy5fbG9hZF9saW5lcygpCisgICAgICAgIGlmIHNlbGYuX19jYXVzZV9fOgorICAgICAgICAgICAgc2VsZi5fX2NhdXNlX18uX2xvYWRfbGluZXMoKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cgorCisgICAgZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShzZWxmKToKKyAgICAgICAgIiIiRm9ybWF0IHRoZSBleGNlcHRpb24gcGFydCBvZiB0aGUgdHJhY2ViYWNrLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lLgorCisgICAgICAgIE5vcm1hbGx5LCB0aGUgZ2VuZXJhdG9yIGVtaXRzIGEgc2luZ2xlIHN0cmluZzsgaG93ZXZlciwgZm9yCisgICAgICAgIFN5bnRheEVycm9yIGV4Y2VwdGlvbnMsIGl0IGVtaXRlcyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KKyAgICAgICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUgc3ludGF4CisgICAgICAgIGVycm9yIG9jY3VycmVkLgorCisgICAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgICBzdHJpbmcgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuZXhjX3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgIHlpZWxkIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoTm9uZSwgc2VsZi5fc3RyKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc3R5cGUgPSBzZWxmLmV4Y190eXBlLl9fcXVhbG5hbWVfXworICAgICAgICBzbW9kID0gc2VsZi5leGNfdHlwZS5fX21vZHVsZV9fCisgICAgICAgIGlmIHNtb2Qgbm90IGluICgiX19tYWluX18iLCAiYnVpbHRpbnMiKToKKyAgICAgICAgICAgIHN0eXBlID0gc21vZCArICcuJyArIHN0eXBlCisKKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3Moc2VsZi5leGNfdHlwZSwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShzdHlwZSwgc2VsZi5fc3RyKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBJdCB3YXMgYSBzeW50YXggZXJyb3I7IHNob3cgZXhhY3RseSB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQuCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5maWxlbmFtZSBvciAiPHN0cmluZz4iCisgICAgICAgIGxpbmVubyA9IHN0cihzZWxmLmxpbmVubykgb3IgJz8nCisgICAgICAgIHlpZWxkICcgIEZpbGUgInt9IiwgbGluZSB7fVxuJy5mb3JtYXQoZmlsZW5hbWUsIGxpbmVubykKKworICAgICAgICBiYWRsaW5lID0gc2VsZi50ZXh0CisgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0CisgICAgICAgIGlmIGJhZGxpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB5aWVsZCAnICAgIHt9XG4nLmZvcm1hdChiYWRsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBpZiBvZmZzZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJhZGxpbmUucnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbWluKGxlbihjYXJldHNwYWNlKSwgb2Zmc2V0KSAtIDEKKyAgICAgICAgICAgICAgICBjYXJldHNwYWNlID0gY2FyZXRzcGFjZVs6b2Zmc2V0XS5sc3RyaXAoKQorICAgICAgICAgICAgICAgICMgbm9uLXNwYWNlIHdoaXRlc3BhY2UgKGxpa2VzIHRhYnMpIG11c3QgYmUga2VwdCBmb3IgYWxpZ25tZW50CisgICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgoYy5pc3NwYWNlKCkgYW5kIGMgb3IgJyAnKSBmb3IgYyBpbiBjYXJldHNwYWNlKQorICAgICAgICAgICAgICAgIHlpZWxkICcgICAge31eXG4nLmZvcm1hdCgnJy5qb2luKGNhcmV0c3BhY2UpKQorICAgICAgICBtc2cgPSBzZWxmLm1zZyBvciAiPG5vIGRldGFpbCBhdmFpbGFibGU+IgorICAgICAgICB5aWVsZCAie306IHt9XG4iLmZvcm1hdChzdHlwZSwgbXNnKQorCisgICAgZGVmIGZvcm1hdChzZWxmLCAqLCBjaGFpbj1UcnVlKToKKyAgICAgICAgIiIiRm9ybWF0IHRoZSBleGNlcHRpb24uCisKKyAgICAgICAgSWYgY2hhaW4gaXMgbm90ICpUcnVlKiwgKl9fY2F1c2VfXyogYW5kICpfX2NvbnRleHRfXyogd2lsbCBub3QgYmUgZm9ybWF0dGVkLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lIGFuZAorICAgICAgICBzb21lIGNvbnRhaW5pbmcgaW50ZXJuYWwgbmV3bGluZXMuIGBwcmludF9leGNlcHRpb25gIGlzIGEgd3JhcHBlciBhcm91bmQKKyAgICAgICAgdGhpcyBtZXRob2Qgd2hpY2gganVzdCBwcmludHMgdGhlIGxpbmVzIHRvIGEgZmlsZS4KKworICAgICAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKKyAgICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBjaGFpbjoKKyAgICAgICAgICAgIGlmIHNlbGYuX19jYXVzZV9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fX2NhdXNlX18uZm9ybWF0KGNoYWluPWNoYWluKQorICAgICAgICAgICAgICAgIHlpZWxkIF9jYXVzZV9tZXNzYWdlCisgICAgICAgICAgICBlbGlmIChzZWxmLl9fY29udGV4dF9fIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9fc3VwcHJlc3NfY29udGV4dF9fKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX19jb250ZXh0X18uZm9ybWF0KGNoYWluPWNoYWluKQorICAgICAgICAgICAgICAgIHlpZWxkIF9jb250ZXh0X21lc3NhZ2UKKyAgICAgICAgeWllbGQgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLnN0YWNrLmZvcm1hdCgpCisgICAgICAgIHlpZWxkIGZyb20gc2VsZi5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlbWFsbG9jLnB5IGIvTGliL3RyYWNlbWFsbG9jLnB5CmluZGV4IGFkZWRmYzUuLjYyODhkYTggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdHJhY2VtYWxsb2MucHkKQEAgLTI5Nyw3ICsyOTcsNyBAQAogCiBkZWYgX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZSk6CiAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKGZpbGVuYW1lKQotICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCgnLnB5YycsICcucHlvJykpOgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcucHljJyk6CiAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgIHJldHVybiBmaWxlbmFtZQogCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weSBiL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL3NvcnRpbmdfYW5pbWF0ZS5weSBiL0xpYi90dXJ0bGVkZW1vL3NvcnRpbmdfYW5pbWF0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjVhMGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3R1cnRsZWRlbW8vc29ydGluZ19hbmltYXRlLnB5CkBAIC0wLDAgKzEsMjA0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisiIiIKKworICAgICAgICAgc29ydGluZ19hbmltYXRpb24ucHkKKworQSBtaW5pbWFsIHNvcnRpbmcgYWxnb3JpdGhtIGFuaW1hdGlvbjoKK1NvcnRzIGEgc2hlbGYgb2YgMTAgYmxvY2tzIHVzaW5nIGluc2VydGlvbgorc29ydCwgc2VsZWN0aW9uIHNvcnQgYW5kIHF1aWNrc29ydC4KKworU2hlbGZzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBidWlsdGluIGxpc3RzLgorCitCbG9ja3MgYXJlIHR1cnRsZXMgd2l0aCBzaGFwZSAic3F1YXJlIiwgYnV0CitzdHJldGNoZWQgdG8gcmVjdGFuZ2xlcyBieSBzaGFwZXNpemUoKQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIFRvIGV4aXQgcHJlc3Mgc3BhY2UgYnV0dG9uCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIiIKK2Zyb20gdHVydGxlIGltcG9ydCAqCitpbXBvcnQgcmFuZG9tCisKKworY2xhc3MgQmxvY2soVHVydGxlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5zaXplID0gc2l6ZQorICAgICAgICBUdXJ0bGUuX19pbml0X18oc2VsZiwgc2hhcGU9InNxdWFyZSIsIHZpc2libGU9RmFsc2UpCisgICAgICAgIHNlbGYucHUoKQorICAgICAgICBzZWxmLnNoYXBlc2l6ZShzaXplICogMS41LCAxLjUsIDIpICMgc3F1YXJlLS0+cmVjdGFuZ2xlCisgICAgICAgIHNlbGYuZmlsbGNvbG9yKCJibGFjayIpCisgICAgICAgIHNlbGYuc3QoKQorCisgICAgZGVmIGdsb3coc2VsZik6CisgICAgICAgIHNlbGYuZmlsbGNvbG9yKCJyZWQiKQorCisgICAgZGVmIHVuZ2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi5maWxsY29sb3IoImJsYWNrIikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJCbG9jayBzaXplOiB7MH0iLmZvcm1hdChzZWxmLnNpemUpCisKKworY2xhc3MgU2hlbGYobGlzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeSk6CisgICAgICAgICJjcmVhdGUgYSBzaGVsZi4geSBpcyB5LXBvc2l0aW9uIG9mIGZpcnN0IGJsb2NrIgorICAgICAgICBzZWxmLnkgPSB5CisgICAgICAgIHNlbGYueCA9IC0xNTAKKworICAgIGRlZiBwdXNoKHNlbGYsIGQpOgorICAgICAgICB3aWR0aCwgXywgXyA9IGQuc2hhcGVzaXplKCkKKyAgICAgICAgIyBhbGlnbiBibG9ja3MgYnkgdGhlIGJvdHRvbSBlZGdlCisgICAgICAgIHlfb2Zmc2V0ID0gd2lkdGggLyAyICogMjAKKyAgICAgICAgZC5zZXR5KHNlbGYueSArIHlfb2Zmc2V0KQorICAgICAgICBkLnNldHgoc2VsZi54ICsgMzQgKiBsZW4oc2VsZikpCisgICAgICAgIHNlbGYuYXBwZW5kKGQpCisKKyAgICBkZWYgX2Nsb3NlX2dhcF9mcm9tX2koc2VsZiwgaSk6CisgICAgICAgIGZvciBiIGluIHNlbGZbaTpdOgorICAgICAgICAgICAgeHBvcywgXyA9IGIucG9zKCkKKyAgICAgICAgICAgIGIuc2V0eCh4cG9zIC0gMzQpCisKKyAgICBkZWYgX29wZW5fZ2FwX2Zyb21faShzZWxmLCBpKToKKyAgICAgICAgZm9yIGIgaW4gc2VsZltpOl06CisgICAgICAgICAgICB4cG9zLCBfID0gYi5wb3MoKQorICAgICAgICAgICAgYi5zZXR4KHhwb3MgKyAzNCkKKworICAgIGRlZiBwb3Aoc2VsZiwga2V5KToKKyAgICAgICAgYiA9IGxpc3QucG9wKHNlbGYsIGtleSkKKyAgICAgICAgYi5nbG93KCkKKyAgICAgICAgYi5zZXR5KDIwMCkKKyAgICAgICAgc2VsZi5fY2xvc2VfZ2FwX2Zyb21faShrZXkpCisgICAgICAgIHJldHVybiBiCisKKyAgICBkZWYgaW5zZXJ0KHNlbGYsIGtleSwgYik6CisgICAgICAgIHNlbGYuX29wZW5fZ2FwX2Zyb21faShrZXkpCisgICAgICAgIGxpc3QuaW5zZXJ0KHNlbGYsIGtleSwgYikKKyAgICAgICAgYi5zZXR4KHNlbGYueCArIDM0ICoga2V5KQorICAgICAgICB3aWR0aCwgXywgXyA9IGIuc2hhcGVzaXplKCkKKyAgICAgICAgIyBhbGlnbiBibG9ja3MgYnkgdGhlIGJvdHRvbSBlZGdlCisgICAgICAgIHlfb2Zmc2V0ID0gd2lkdGggLyAyICogMjAKKyAgICAgICAgYi5zZXR5KHNlbGYueSArIHlfb2Zmc2V0KQorICAgICAgICBiLnVuZ2xvdygpCisKK2RlZiBpc29ydChzaGVsZik6CisgICAgbGVuZ3RoID0gbGVuKHNoZWxmKQorICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbmd0aCk6CisgICAgICAgIGhvbGUgPSBpCisgICAgICAgIHdoaWxlIGhvbGUgPiAwIGFuZCBzaGVsZltpXS5zaXplIDwgc2hlbGZbaG9sZSAtIDFdLnNpemU6CisgICAgICAgICAgICBob2xlID0gaG9sZSAtIDEKKyAgICAgICAgc2hlbGYuaW5zZXJ0KGhvbGUsIHNoZWxmLnBvcChpKSkKKyAgICByZXR1cm4KKworZGVmIHNzb3J0KHNoZWxmKToKKyAgICBsZW5ndGggPSBsZW4oc2hlbGYpCisgICAgZm9yIGogaW4gcmFuZ2UoMCwgbGVuZ3RoIC0gMSk6CisgICAgICAgIGltaW4gPSBqCisgICAgICAgIGZvciBpIGluIHJhbmdlKGogKyAxLCBsZW5ndGgpOgorICAgICAgICAgICAgaWYgc2hlbGZbaV0uc2l6ZSA8IHNoZWxmW2ltaW5dLnNpemU6CisgICAgICAgICAgICAgICAgaW1pbiA9IGkKKyAgICAgICAgaWYgaW1pbiAhPSBqOgorICAgICAgICAgICAgc2hlbGYuaW5zZXJ0KGosIHNoZWxmLnBvcChpbWluKSkKKworZGVmIHBhcnRpdGlvbihzaGVsZiwgbGVmdCwgcmlnaHQsIHBpdm90X2luZGV4KToKKyAgICBwaXZvdCA9IHNoZWxmW3Bpdm90X2luZGV4XQorICAgIHNoZWxmLmluc2VydChyaWdodCwgc2hlbGYucG9wKHBpdm90X2luZGV4KSkKKyAgICBzdG9yZV9pbmRleCA9IGxlZnQKKyAgICBmb3IgaSBpbiByYW5nZShsZWZ0LCByaWdodCk6ICMgcmFuZ2UgaXMgbm9uLWluY2x1c2l2ZSBvZiBlbmRpbmcgdmFsdWUKKyAgICAgICAgaWYgc2hlbGZbaV0uc2l6ZSA8IHBpdm90LnNpemU6CisgICAgICAgICAgICBzaGVsZi5pbnNlcnQoc3RvcmVfaW5kZXgsIHNoZWxmLnBvcChpKSkKKyAgICAgICAgICAgIHN0b3JlX2luZGV4ID0gc3RvcmVfaW5kZXggKyAxCisgICAgc2hlbGYuaW5zZXJ0KHN0b3JlX2luZGV4LCBzaGVsZi5wb3AocmlnaHQpKSAjIG1vdmUgcGl2b3QgdG8gY29ycmVjdCBwb3NpdGlvbgorICAgIHJldHVybiBzdG9yZV9pbmRleAorCitkZWYgcXNvcnQoc2hlbGYsIGxlZnQsIHJpZ2h0KToKKyAgICBpZiBsZWZ0IDwgcmlnaHQ6CisgICAgICAgIHBpdm90X2luZGV4ID0gbGVmdAorICAgICAgICBwaXZvdF9uZXdfaW5kZXggPSBwYXJ0aXRpb24oc2hlbGYsIGxlZnQsIHJpZ2h0LCBwaXZvdF9pbmRleCkKKyAgICAgICAgcXNvcnQoc2hlbGYsIGxlZnQsIHBpdm90X25ld19pbmRleCAtIDEpCisgICAgICAgIHFzb3J0KHNoZWxmLCBwaXZvdF9uZXdfaW5kZXggKyAxLCByaWdodCkKKworZGVmIHJhbmRvbWl6ZSgpOgorICAgIGRpc2FibGVfa2V5cygpCisgICAgY2xlYXIoKQorICAgIHRhcmdldCA9IGxpc3QocmFuZ2UoMTApKQorICAgIHJhbmRvbS5zaHVmZmxlKHRhcmdldCkKKyAgICBmb3IgaSwgdCBpbiBlbnVtZXJhdGUodGFyZ2V0KToKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSwgbGVuKHMpKToKKyAgICAgICAgICAgIGlmIHNbal0uc2l6ZSA9PSB0ICsgMToKKyAgICAgICAgICAgICAgICBzLmluc2VydChpLCBzLnBvcChqKSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIHNob3dfdGV4dCh0ZXh0LCBsaW5lPTApOgorICAgIGxpbmUgPSAyMCAqIGxpbmUKKyAgICBnb3RvKDAsLTI1MCAtIGxpbmUpCisgICAgd3JpdGUodGV4dCwgYWxpZ249ImNlbnRlciIsIGZvbnQ9KCJDb3VyaWVyIiwgMTYsICJib2xkIikpCisKK2RlZiBzdGFydF9zc29ydCgpOgorICAgIGRpc2FibGVfa2V5cygpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dCgiU2VsZWN0aW9uIFNvcnQiKQorICAgIHNzb3J0KHMpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMxKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMyLCBsaW5lPTEpCisgICAgZW5hYmxlX2tleXMoKQorCitkZWYgc3RhcnRfaXNvcnQoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoIkluc2VydGlvbiBTb3J0IikKKyAgICBpc29ydChzKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIHN0YXJ0X3Fzb3J0KCk6CisgICAgZGlzYWJsZV9rZXlzKCkKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KCJRdWlja3NvcnQiKQorICAgIHFzb3J0KHMsIDAsIGxlbihzKSAtIDEpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMxKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMyLCBsaW5lPTEpCisgICAgZW5hYmxlX2tleXMoKQorCitkZWYgaW5pdF9zaGVsZigpOgorICAgIGdsb2JhbCBzCisgICAgcyA9IFNoZWxmKC0yMDApCisgICAgdmFscyA9ICg0LCAyLCA4LCA5LCAxLCA1LCAxMCwgMywgNywgNikKKyAgICBmb3IgaSBpbiB2YWxzOgorICAgICAgICBzLnB1c2goQmxvY2soaSkpCisKK2RlZiBkaXNhYmxlX2tleXMoKToKKyAgICBvbmtleShOb25lLCAicyIpCisgICAgb25rZXkoTm9uZSwgImkiKQorICAgIG9ua2V5KE5vbmUsICJxIikKKyAgICBvbmtleShOb25lLCAiciIpCisKK2RlZiBlbmFibGVfa2V5cygpOgorICAgIG9ua2V5KHN0YXJ0X2lzb3J0LCAiaSIpCisgICAgb25rZXkoc3RhcnRfc3NvcnQsICJzIikKKyAgICBvbmtleShzdGFydF9xc29ydCwgInEiKQorICAgIG9ua2V5KHJhbmRvbWl6ZSwgInIiKQorICAgIG9ua2V5KGJ5ZSwgInNwYWNlIikKKworZGVmIG1haW4oKToKKyAgICBnZXRzY3JlZW4oKS5jbGVhcnNjcmVlbigpCisgICAgaHQoKTsgcGVudXAoKQorICAgIGluaXRfc2hlbGYoKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMxKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMyLCBsaW5lPTEpCisgICAgZW5hYmxlX2tleXMoKQorICAgIGxpc3RlbigpCisgICAgcmV0dXJuICJFVkVOVExPT1AiCisKK2luc3RydWN0aW9uczEgPSAicHJlc3MgaSBmb3IgaW5zZXJ0aW9uIHNvcnQsIHMgZm9yIHNlbGVjdGlvbiBzb3J0LCBxIGZvciBxdWlja3NvcnQiCitpbnN0cnVjdGlvbnMyID0gInNwYWNlYmFyIHRvIHF1aXQsIHIgdG8gcmFuZG9taXplIgorCitpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKKyAgICBtc2cgPSBtYWluKCkKKyAgICBtYWlubG9vcCgpCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggNGZiMmRlZi4uMGE4N2MyZiAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMTU4LDQgKzE1OCw3OCBAQAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAoraW1wb3J0IGZ1bmN0b29scyBhcyBfZnVuY3Rvb2xzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjIGFzIF9jb2xsZWN0aW9uc19hYmMKKworZGVmIGNvcm91dGluZShmdW5jKToKKyAgICAiIiJDb252ZXJ0IHJlZ3VsYXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGEgY29yb3V0aW5lLiIiIgorCisgICAgIyBXZSBkb24ndCB3YW50IHRvIGltcG9ydCAnZGlzJyBvciAnaW5zcGVjdCcganVzdCBmb3IKKyAgICAjIHRoZXNlIGNvbnN0YW50cy4KKyAgICBDT19HRU5FUkFUT1IgPSAweDIwCisgICAgQ09fSVRFUkFCTEVfQ09ST1VUSU5FID0gMHgxMDAKKworICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0eXBlcy5jb3JvdXRpbmUoKSBleHBlY3RzIGEgY2FsbGFibGUnKQorCisgICAgaWYgKGlzaW5zdGFuY2UoZnVuYywgRnVuY3Rpb25UeXBlKSBhbmQKKyAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGZ1bmMsICdfX2NvZGVfXycsIE5vbmUpLCBDb2RlVHlwZSkgYW5kCisgICAgICAgIChmdW5jLl9fY29kZV9fLmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSk6CisKKyAgICAgICAgIyBUT0RPOiBJbXBsZW1lbnQgdGhpcyBpbiBDLgorICAgICAgICBjbyA9IGZ1bmMuX19jb2RlX18KKyAgICAgICAgZnVuYy5fX2NvZGVfXyA9IENvZGVUeXBlKAorICAgICAgICAgICAgY28uY29fYXJnY291bnQsIGNvLmNvX2t3b25seWFyZ2NvdW50LCBjby5jb19ubG9jYWxzLAorICAgICAgICAgICAgY28uY29fc3RhY2tzaXplLAorICAgICAgICAgICAgY28uY29fZmxhZ3MgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUsCisgICAgICAgICAgICBjby5jb19jb2RlLAorICAgICAgICAgICAgY28uY29fY29uc3RzLCBjby5jb19uYW1lcywgY28uY29fdmFybmFtZXMsIGNvLmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgY28uY29fbmFtZSwgY28uY29fZmlyc3RsaW5lbm8sIGNvLmNvX2xub3RhYiwgY28uY29fZnJlZXZhcnMsCisgICAgICAgICAgICBjby5jb19jZWxsdmFycykKKyAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIHByaW1hcmlseSB0byBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0CisgICAgIyByZXR1cm4gZ2VuZXJhdG9yLWxpa2Ugb2JqZWN0cyAoZm9yIGluc3RhbmNlIGdlbmVyYXRvcnMKKyAgICAjIGNvbXBpbGVkIHdpdGggQ3l0aG9uKS4KKworICAgIGNsYXNzIEdlbmVyYXRvcldyYXBwZXI6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnZW4pOgorICAgICAgICAgICAgc2VsZi5fX3dyYXBwZWRfXyA9IGdlbgorICAgICAgICAgICAgc2VsZi5zZW5kID0gZ2VuLnNlbmQKKyAgICAgICAgICAgIHNlbGYudGhyb3cgPSBnZW4udGhyb3cKKyAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBnZW4uY2xvc2UKKyAgICAgICAgICAgIHNlbGYuX19uYW1lX18gPSBnZXRhdHRyKGdlbiwgJ19fbmFtZV9fJywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuX19xdWFsbmFtZV9fID0gZ2V0YXR0cihnZW4sICdfX3F1YWxuYW1lX18nLCBOb25lKQorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGdpX2NvZGUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWRfXy5naV9jb2RlCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgZ2lfZnJhbWUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWRfXy5naV9mcmFtZQorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGdpX3J1bm5pbmcoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWRfXy5naV9ydW5uaW5nCisgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYuX193cmFwcGVkX18pCisgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZF9fCisgICAgICAgIF9fYXdhaXRfXyA9IF9faXRlcl9fCisKKyAgICBAX2Z1bmN0b29scy53cmFwcyhmdW5jKQorICAgIGRlZiB3cmFwcGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGNvcm8gPSBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgaWYgY29yby5fX2NsYXNzX18gaXMgR2VuZXJhdG9yVHlwZToKKyAgICAgICAgICAgIHJldHVybiBHZW5lcmF0b3JXcmFwcGVyKGNvcm8pCisgICAgICAgICMgc2xvdyBjaGVja3MKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29ybywgX2NvbGxlY3Rpb25zX2FiYy5Db3JvdXRpbmUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb3JvLCBfY29sbGVjdGlvbnNfYWJjLkdlbmVyYXRvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRvcldyYXBwZXIoY29ybykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAnY2FsbGFibGUgd3JhcHBlZCB3aXRoIHR5cGVzLmNvcm91dGluZSgpIHJldHVybmVkICcKKyAgICAgICAgICAgICAgICAnbm9uLWNvcm91dGluZTogeyFyfScuZm9ybWF0KGNvcm8pKQorICAgICAgICByZXR1cm4gY29ybworCisgICAgcmV0dXJuIHdyYXBwZWQKKworCiBfX2FsbF9fID0gW24gZm9yIG4gaW4gZ2xvYmFscygpIGlmIG5bOjFdICE9ICdfJ10KZGlmZiAtLWdpdCBhL0xpYi90eXBpbmcucHkgYi9MaWIvdHlwaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZTA3YWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdHlwaW5nLnB5CkBAIC0wLDAgKzEsMTcxNCBAQAorIyBUT0RPOgorIyAtIEdlbmVyaWNbVCwgVF0gaXMgaW52YWxpZAorIyAtIExvb2sgZm9yIFRPRE8gYmVsb3cKKworIyBUT0RPIG5pdHM6CisjIEdldCByaWQgb2YgYXNzZXJ0cyB0aGF0IGFyZSB0aGUgY2FsbGVyJ3MgZmF1bHQuCisjIERvY3N0cmluZ3MgKGUuZy4gQUJDcykuCisKK2ltcG9ydCBhYmMKK2Zyb20gYWJjIGltcG9ydCBhYnN0cmFjdG1ldGhvZCwgYWJzdHJhY3Rwcm9wZXJ0eQoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgcmUgYXMgc3RkbGliX3JlICAjIEF2b2lkIGNvbmZ1c2lvbiB3aXRoIHRoZSByZSB3ZSBleHBvcnQuCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK3RyeToKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjIGFzIGNvbGxlY3Rpb25zX2FiYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBjb2xsZWN0aW9ucyBhcyBjb2xsZWN0aW9uc19hYmMgICMgRmFsbGJhY2sgZm9yIFBZMy4yLgorCisKKyMgUGxlYXNlIGtlZXAgX19hbGxfXyBhbHBoYWJldGl6ZWQgd2l0aGluIGVhY2ggY2F0ZWdvcnkuCitfX2FsbF9fID0gWworICAgICMgU3VwZXItc3BlY2lhbCB0eXBpbmcgcHJpbWl0aXZlcy4KKyAgICAnQW55JywKKyAgICAnQ2FsbGFibGUnLAorICAgICdHZW5lcmljJywKKyAgICAnT3B0aW9uYWwnLAorICAgICdUeXBlVmFyJywKKyAgICAnVW5pb24nLAorICAgICdUdXBsZScsCisKKyAgICAjIEFCQ3MgKGZyb20gY29sbGVjdGlvbnMuYWJjKS4KKyAgICAnQWJzdHJhY3RTZXQnLCAgIyBjb2xsZWN0aW9ucy5hYmMuU2V0LgorICAgICdCeXRlU3RyaW5nJywKKyAgICAnQ29udGFpbmVyJywKKyAgICAnSGFzaGFibGUnLAorICAgICdJdGVtc1ZpZXcnLAorICAgICdJdGVyYWJsZScsCisgICAgJ0l0ZXJhdG9yJywKKyAgICAnS2V5c1ZpZXcnLAorICAgICdNYXBwaW5nJywKKyAgICAnTWFwcGluZ1ZpZXcnLAorICAgICdNdXRhYmxlTWFwcGluZycsCisgICAgJ011dGFibGVTZXF1ZW5jZScsCisgICAgJ011dGFibGVTZXQnLAorICAgICdTZXF1ZW5jZScsCisgICAgJ1NpemVkJywKKyAgICAnVmFsdWVzVmlldycsCisKKyAgICAjIFN0cnVjdHVyYWwgY2hlY2tzLCBhLmsuYS4gcHJvdG9jb2xzLgorICAgICdSZXZlcnNpYmxlJywKKyAgICAnU3VwcG9ydHNBYnMnLAorICAgICdTdXBwb3J0c0Zsb2F0JywKKyAgICAnU3VwcG9ydHNJbnQnLAorICAgICdTdXBwb3J0c1JvdW5kJywKKworICAgICMgQ29uY3JldGUgY29sbGVjdGlvbiB0eXBlcy4KKyAgICAnRGljdCcsCisgICAgJ0xpc3QnLAorICAgICdTZXQnLAorICAgICdOYW1lZFR1cGxlJywgICMgTm90IHJlYWxseSBhIHR5cGUuCisgICAgJ0dlbmVyYXRvcicsCisKKyAgICAjIE9uZS1vZmYgdGhpbmdzLgorICAgICdBbnlTdHInLAorICAgICdjYXN0JywKKyAgICAnZ2V0X3R5cGVfaGludHMnLAorICAgICdub190eXBlX2NoZWNrJywKKyAgICAnbm9fdHlwZV9jaGVja19kZWNvcmF0b3InLAorICAgICdvdmVybG9hZCcsCisKKyAgICAjIFN1Ym1vZHVsZXMuCisgICAgJ2lvJywKKyAgICAncmUnLAorXQorCisKK2RlZiBfcXVhbG5hbWUoeCk6CisgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDMpOgorICAgICAgICByZXR1cm4geC5fX3F1YWxuYW1lX18KKyAgICBlbHNlOgorICAgICAgICAjIEZhbGwgYmFjayB0byBqdXN0IG5hbWUuCisgICAgICAgIHJldHVybiB4Ll9fbmFtZV9fCisKKworY2xhc3MgVHlwaW5nTWV0YSh0eXBlKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIGV2ZXJ5IHR5cGUgZGVmaW5lZCBiZWxvdy4KKworICAgIFRoaXMgb3ZlcnJpZGVzIF9fbmV3X18oKSB0byByZXF1aXJlIGFuIGV4dHJhIGtleXdvcmQgcGFyYW1ldGVyCisgICAgJ19yb290Jywgd2hpY2ggc2VydmVzIGFzIGEgZ3VhcmQgYWdhaW5zdCBuYWl2ZSBzdWJjbGFzc2luZyBvZiB0aGUKKyAgICB0eXBpbmcgY2xhc3Nlcy4gIEFueSBsZWdpdGltYXRlIGNsYXNzIGRlZmluZWQgdXNpbmcgYSBtZXRhY2xhc3MKKyAgICBkZXJpdmVkIGZyb20gVHlwaW5nTWV0YSAoaW5jbHVkaW5nIGludGVybmFsIHN1YmNsYXNzZXMgY3JlYXRlZCBieQorICAgIGUuZy4gIFVuaW9uW1gsIFldKSBtdXN0IHBhc3MgX3Jvb3Q9VHJ1ZS4KKworICAgIFRoaXMgYWxzbyBkZWZpbmVzIGEgZHVtbXkgY29uc3RydWN0b3IgKGFsbCB0aGUgd29yayBpcyBkb25lIGluCisgICAgX19uZXdfXykgYW5kIGEgbmljZXIgcmVwcigpLgorICAgICIiIgorCisgICAgX2lzX3Byb3RvY29sID0gRmFsc2UKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICBpZiBub3QgX3Jvb3Q6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBzdWJjbGFzcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCAnLmpvaW4obWFwKF90eXBlX3JlcHIsIGJhc2VzKSkgb3IgJygpJykpCisgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0byBpbnRlcnByZXQgZm9yd2FyZCByZWZlcmVuY2VzLgorCisgICAgICAgIEZvciBleGFtcGxlLCBVbmlvblsnQyddIGlzIGludGVybmFsbHkgc3RvcmVkIGFzCisgICAgICAgIFVuaW9uW19Gb3J3YXJkUmVmKCdDJyldLCB3aGljaCBzaG91bGQgZXZhbHVhdGUgdG8gX1VuaW9uW0NdLAorICAgICAgICB3aGVyZSBDIGlzIGFuIG9iamVjdCBmb3VuZCBpbiBnbG9iYWxucyBvciBsb2NhbG5zIChzZWFyY2hpbmcKKyAgICAgICAgbG9jYWxucyBmaXJzdCwgb2YgY291cnNlKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMuJXMnICUgKHNlbGYuX19tb2R1bGVfXywgX3F1YWxuYW1lKHNlbGYpKQorCisKK2NsYXNzIEZpbmFsOgorICAgICIiIk1peC1pbiBjbGFzcyB0byBwcmV2ZW50IGluc3RhbnRpYXRpb24uIiIiCisKKyAgICBkZWYgX19uZXdfXyhzZWxmLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgaW5zdGFudGlhdGUgJXIiICUgc2VsZi5fX2NsYXNzX18pCisKKworY2xhc3MgX0ZvcndhcmRSZWYoVHlwaW5nTWV0YSk6CisgICAgIiIiV3JhcHBlciB0byBob2xkIGEgZm9yd2FyZCByZWZlcmVuY2UuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIGFyZyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBtdXN0IGJlIGEgc3RyaW5nIC0tIGdvdCAlcicgJSAoYXJnLCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGFyZywgJzxzdHJpbmc+JywgJ2V2YWwnKQorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcignRm9yd2FyZFJlZiBtdXN0IGJlIGFuIGV4cHJlc3Npb24gLS0gZ290ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnLCkpCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBhcmcsICgpLCB7fSwgX3Jvb3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfYXJnX18gPSBhcmcKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfY29kZV9fID0gY29kZQorICAgICAgICBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXyA9IEZhbHNlCisgICAgICAgIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18gPSBOb25lCisgICAgICAgIHR5cGluZ19nbG9iYWxzID0gZ2xvYmFscygpCisgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQorICAgICAgICB3aGlsZSBmcmFtZSBpcyBub3QgTm9uZSBhbmQgZnJhbWUuZl9nbG9iYWxzIGlzIHR5cGluZ19nbG9iYWxzOgorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKKyAgICAgICAgYXNzZXJ0IGZyYW1lIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYuX19mb3J3YXJkX2ZyYW1lX18gPSBmcmFtZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9ldmFsX3R5cGUoc2VsZiwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsb2NhbG5zLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBsb2NhbG5zIG11c3QgYmUgYSBkaWN0IC0tIGdvdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhbG5zLCkpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGdsb2JhbG5zLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBnbG9iYWxucyBtdXN0IGJlIGEgZGljdCAtLSBnb3QgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2xvYmFsbnMsKSkKKyAgICAgICAgaWYgbm90IHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fOgorICAgICAgICAgICAgaWYgZ2xvYmFsbnMgaXMgTm9uZSBhbmQgbG9jYWxucyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gbG9jYWxucyA9IHt9CisgICAgICAgICAgICBlbGlmIGdsb2JhbG5zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZ2xvYmFsbnMgPSBsb2NhbG5zCisgICAgICAgICAgICBlbGlmIGxvY2FsbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBsb2NhbG5zID0gZ2xvYmFsbnMKKyAgICAgICAgICAgIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18gPSBfdHlwZV9jaGVjaygKKyAgICAgICAgICAgICAgICBldmFsKHNlbGYuX19mb3J3YXJkX2NvZGVfXywgZ2xvYmFsbnMsIGxvY2FsbnMpLAorICAgICAgICAgICAgICAgICJGb3J3YXJkIHJlZmVyZW5jZXMgbXVzdCBldmFsdWF0ZSB0byB0eXBlcy4iKQorICAgICAgICAgICAgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX18gPSBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgbm90IHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fOgorICAgICAgICAgICAgZ2xvYmFsbnMgPSBzZWxmLl9fZm9yd2FyZF9mcmFtZV9fLmZfZ2xvYmFscworICAgICAgICAgICAgbG9jYWxucyA9IHNlbGYuX19mb3J3YXJkX2ZyYW1lX18uZl9sb2NhbHMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9ldmFsX3R5cGUoZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyBUb28gZWFybHkuCisgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2ZvcndhcmRfdmFsdWVfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICBpZiBub3Qgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX186CisgICAgICAgICAgICBnbG9iYWxucyA9IHNlbGYuX19mb3J3YXJkX2ZyYW1lX18uZl9nbG9iYWxzCisgICAgICAgICAgICBsb2NhbG5zID0gc2VsZi5fX2ZvcndhcmRfZnJhbWVfXy5mX2xvY2FscworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2V2YWxfdHlwZShnbG9iYWxucywgbG9jYWxucykKKyAgICAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAjIFRvbyBlYXJseS4KKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqLCBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ19Gb3J3YXJkUmVmKCVyKScgJSAoc2VsZi5fX2ZvcndhcmRfYXJnX18sKQorCisKK2NsYXNzIF9UeXBlQWxpYXM6CisgICAgIiIiSW50ZXJuYWwgaGVscGVyIGNsYXNzIGZvciBkZWZpbmluZyBnZW5lcmljIHZhcmlhbnRzIG9mIGNvbmNyZXRlIHR5cGVzLgorCisgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IGEgdHlwZTsgbGV0J3MgY2FsbCBpdCBhIHBzZXVkby10eXBlLiAgSXQgY2FuCisgICAgYmUgdXNlZCBpbiBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzLCBlLmcuIGlzaW5zdGFuY2UobSwgTWF0Y2gpCisgICAgb3IgaXNzdWJjbGFzcyh0eXBlKG0pLCBNYXRjaCkuICBIb3dldmVyLCBpdCBjYW5ub3QgYmUgaXRzZWxmIHRoZQorICAgIHRhcmdldCBvZiBhbiBpc3N1YmNsYXNzKCkgY2FsbDsgZS5nLiBpc3N1YmNsYXNzKE1hdGNoLCBDKSAoZm9yCisgICAgc29tZSBhcmJpdHJhcnkgY2xhc3MgQykgcmFpc2VzIFR5cGVFcnJvciByYXRoZXIgdGhhbiByZXR1cm5pbmcKKyAgICBGYWxzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgICAgIFRoaXMgb25seSBleGlzdHMgdG8gZ2l2ZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIGluIGNhc2UKKyAgICAgICAgc29tZW9uZSB0cmllcyB0byBzdWJjbGFzcyBhIHR5cGUgYWxpYXMgKG5vdCBhIGdvb2QgaWRlYSkuCisgICAgICAgICIiIgorICAgICAgICBpZiAobGVuKGFyZ3MpID09IDMgYW5kCisgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cikgYW5kCisgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMV0sIHR1cGxlKSk6CisgICAgICAgICAgICAjIENsb3NlIGVub3VnaC4KKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQSB0eXBlIGFsaWFzIGNhbm5vdCBiZSBzdWJjbGFzc2VkIikKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB0eXBlX3ZhciwgaW1wbF90eXBlLCB0eXBlX2NoZWNrZXIpOgorICAgICAgICAiIiJJbml0aWFsaXplci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmFtZTogVGhlIG5hbWUsIGUuZy4gJ1BhdHRlcm4nLgorICAgICAgICAgICAgdHlwZV92YXI6IFRoZSB0eXBlIHBhcmFtZXRlciwgZS5nLiBBbnlTdHIsIG9yIHRoZQorICAgICAgICAgICAgICAgIHNwZWNpZmljIHR5cGUsIGUuZy4gc3RyLgorICAgICAgICAgICAgaW1wbF90eXBlOiBUaGUgaW1wbGVtZW50YXRpb24gdHlwZS4KKyAgICAgICAgICAgIHR5cGVfY2hlY2tlcjogRnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbXBsX3R5cGUgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgYW5kIHJldHVybnMgYSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBhIHR5cGVfdmFyIGluc3RhbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobmFtZSwgc3RyKSwgcmVwcihuYW1lKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0eXBlX3ZhciwgdHlwZSksIHJlcHIodHlwZV92YXIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGltcGxfdHlwZSwgdHlwZSksIHJlcHIoaW1wbF90eXBlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoaW1wbF90eXBlLCBUeXBpbmdNZXRhKSwgcmVwcihpbXBsX3R5cGUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi50eXBlX3ZhciA9IHR5cGVfdmFyCisgICAgICAgIHNlbGYuaW1wbF90eXBlID0gaW1wbF90eXBlCisgICAgICAgIHNlbGYudHlwZV9jaGVja2VyID0gdHlwZV9jaGVja2VyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXNbJXNdIiAlIChzZWxmLm5hbWUsIF90eXBlX3JlcHIoc2VsZi50eXBlX3ZhcikpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVyKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyLCB0eXBlKSwgcmVwcihwYXJhbWV0ZXIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYudHlwZV92YXIsIFR5cGVWYXIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBjYW5ub3QgYmUgZnVydGhlciBwYXJhbWV0ZXJpemVkLiIgJSBzZWxmKQorICAgICAgICBpZiBzZWxmLnR5cGVfdmFyLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBhcmFtZXRlciwgVW5pb25bc2VsZi50eXBlX3Zhci5fX2NvbnN0cmFpbnRzX19dKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHN1YnN0aXR1dGlvbiBmb3IgJXMuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbWV0ZXIsIHNlbGYudHlwZV92YXIpKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5uYW1lLCBwYXJhbWV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmltcGxfdHlwZSwgc2VsZi50eXBlX2NoZWNrZXIpCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmV0dXJuIChpc2luc3RhbmNlKG9iaiwgc2VsZi5pbXBsX3R5cGUpIGFuZAorICAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uoc2VsZi50eXBlX2NoZWNrZXIob2JqKSwgc2VsZi50eXBlX3ZhcikpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY2xzLCBfVHlwZUFsaWFzKToKKyAgICAgICAgICAgICMgQ292YXJpYW5jZS4gIEZvciBub3csIHdlIGNvbXBhcmUgYnkgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiAoY2xzLm5hbWUgPT0gc2VsZi5uYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKGNscy50eXBlX3Zhciwgc2VsZi50eXBlX3ZhcikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGlzIHRvbyBsZW5pZW50LCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiB0eXBlIGRvZXNuJ3QgY2FycnkgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICMgd2hldGhlciBpdCBpcyBhYm91dCBieXRlcyBvciBzdHIgKGZvciBleGFtcGxlKS4KKyAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5pbXBsX3R5cGUpCisKKworZGVmIF9oYXNfdHlwZV92YXIodCk6CisgICAgcmV0dXJuIHQgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UodCwgVHlwaW5nTWV0YSkgYW5kIHQuX2hhc190eXBlX3ZhcigpCisKKworZGVmIF9ldmFsX3R5cGUodCwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgIGlmIGlzaW5zdGFuY2UodCwgVHlwaW5nTWV0YSk6CisgICAgICAgIHJldHVybiB0Ll9ldmFsX3R5cGUoZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHQKKworCitkZWYgX3R5cGVfY2hlY2soYXJnLCBtc2cpOgorICAgICIiIkNoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGEgdHlwZSwgYW5kIHJldHVybiBpdC4KKworICAgIEFzIGEgc3BlY2lhbCBjYXNlLCBhY2NlcHQgTm9uZSBhbmQgcmV0dXJuIHR5cGUoTm9uZSkgaW5zdGVhZC4KKyAgICBBbHNvLCBfVHlwZUFsaWFzIGluc3RhbmNlcyAoZS5nLiBNYXRjaCwgUGF0dGVybikgYXJlIGFjY2VwdGFibGUuCisKKyAgICBUaGUgbXNnIGFyZ3VtZW50IGlzIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZSwgZS5nLgorCisgICAgICAgICJVbmlvblthcmcsIC4uLl06IGFyZyBzaG91bGQgYmUgYSB0eXBlLiIKKworICAgIFdlIGFwcGVuZCB0aGUgcmVwcigpIG9mIHRoZSBhY3R1YWwgdmFsdWUgKHRydW5jYXRlZCB0byAxMDAgY2hhcnMpLgorICAgICIiIgorICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICByZXR1cm4gdHlwZShOb25lKQorICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzdHIpOgorICAgICAgICBhcmcgPSBfRm9yd2FyZFJlZihhcmcpCisgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCAodHlwZSwgX1R5cGVBbGlhcykpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICsgIiBHb3QgJS4xMDByLiIgJSAoYXJnLCkpCisgICAgcmV0dXJuIGFyZworCisKK2RlZiBfdHlwZV9yZXByKG9iaik6CisgICAgIiIiUmV0dXJuIHRoZSByZXByKCkgb2YgYW4gb2JqZWN0LCBzcGVjaWFsLWNhc2luZyB0eXBlcy4KKworICAgIElmIG9iaiBpcyBhIHR5cGUsIHdlIHJldHVybiBhIHNob3J0ZXIgdmVyc2lvbiB0aGFuIHRoZSBkZWZhdWx0CisgICAgdHlwZS5fX3JlcHJfXywgYmFzZWQgb24gdGhlIG1vZHVsZSBhbmQgcXVhbGlmaWVkIG5hbWUsIHdoaWNoIGlzCisgICAgdHlwaWNhbGx5IGVub3VnaCB0byB1bmlxdWVseSBpZGVudGlmeSBhIHR5cGUuICBGb3IgZXZlcnl0aGluZworICAgIGVsc2UsIHdlIGZhbGwgYmFjayBvbiByZXByKG9iaikuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCBub3QgaXNpbnN0YW5jZShvYmosIFR5cGluZ01ldGEpOgorICAgICAgICBpZiBvYmouX19tb2R1bGVfXyA9PSAnYnVpbHRpbnMnOgorICAgICAgICAgICAgcmV0dXJuIF9xdWFsbmFtZShvYmopCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVzJyAlIChvYmouX19tb2R1bGVfXywgX3F1YWxuYW1lKG9iaikpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHJlcHIob2JqKQorCisKK2NsYXNzIEFueU1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBBbnkuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PUZhbHNlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKSAgIyBUbyBUeXBlRXJyb3IuCisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3MgQW55KEZpbmFsLCBtZXRhY2xhc3M9QW55TWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiU3BlY2lhbCB0eXBlIGluZGljYXRpbmcgYW4gdW5jb25zdHJhaW5lZCB0eXBlLgorCisgICAgLSBBbnkgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIEFueS4KKyAgICAtIEFueSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIEFueS4KKyAgICAtIEFzIGEgc3BlY2lhbCBjYXNlLCBBbnkgYW5kIG9iamVjdCBhcmUgc3ViY2xhc3NlcyBvZiBlYWNoIG90aGVyLgorICAgICIiIgorCisKK2NsYXNzIFR5cGVWYXIoVHlwaW5nTWV0YSwgbWV0YWNsYXNzPVR5cGluZ01ldGEsIF9yb290PVRydWUpOgorICAgICIiIlR5cGUgdmFyaWFibGUuCisKKyAgICBVc2FnZTo6CisKKyAgICAgIFQgPSBUeXBlVmFyKCdUJykgICMgQ2FuIGJlIGFueXRoaW5nCisgICAgICBBID0gVHlwZVZhcignQScsIHN0ciwgYnl0ZXMpICAjIE11c3QgYmUgc3RyIG9yIGJ5dGVzCisKKyAgICBUeXBlIHZhcmlhYmxlcyBleGlzdCBwcmltYXJpbHkgZm9yIHRoZSBiZW5lZml0IG9mIHN0YXRpYyB0eXBlCisgICAgY2hlY2tlcnMuICBUaGV5IHNlcnZlIGFzIHRoZSBwYXJhbWV0ZXJzIGZvciBnZW5lcmljIHR5cGVzIGFzIHdlbGwKKyAgICBhcyBmb3IgZ2VuZXJpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFNlZSBjbGFzcyBHZW5lcmljIGZvciBtb3JlCisgICAgaW5mb3JtYXRpb24gb24gZ2VuZXJpYyB0eXBlcy4gIEdlbmVyaWMgZnVuY3Rpb25zIHdvcmsgYXMgZm9sbG93czoKKworICAgICAgZGVmIHJlcGVhdCh4OiBULCBuOiBpbnQpIC0+IFNlcXVlbmNlW1RdOgorICAgICAgICAgICcnJ1JldHVybiBhIGxpc3QgY29udGFpbmluZyBuIHJlZmVyZW5jZXMgdG8geC4nJycKKyAgICAgICAgICByZXR1cm4gW3hdKm4KKworICAgICAgZGVmIGxvbmdlc3QoeDogQSwgeTogQSkgLT4gQToKKyAgICAgICAgICAnJydSZXR1cm4gdGhlIGxvbmdlc3Qgb2YgdHdvIHN0cmluZ3MuJycnCisgICAgICAgICAgcmV0dXJuIHggaWYgbGVuKHgpID49IGxlbih5KSBlbHNlIHkKKworICAgIFRoZSBsYXR0ZXIgZXhhbXBsZSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSB0aGUgb3ZlcmxvYWRpbmcKKyAgICBvZiAoc3RyLCBzdHIpIC0+IHN0ciBhbmQgKGJ5dGVzLCBieXRlcykgLT4gYnl0ZXMuICBBbHNvIG5vdGUKKyAgICB0aGF0IGlmIHRoZSBhcmd1bWVudHMgYXJlIGluc3RhbmNlcyBvZiBzb21lIHN1YmNsYXNzIG9mIHN0ciwKKyAgICB0aGUgcmV0dXJuIHR5cGUgaXMgc3RpbGwgcGxhaW4gc3RyLgorCisgICAgQXQgcnVudGltZSwgaXNpbnN0YW5jZSh4LCBUKSB3aWxsIHJhaXNlIFR5cGVFcnJvci4gIEhvd2V2ZXIsCisgICAgaXNzdWJjbGFzcyhDLCBUKSBpcyB0cnVlIGZvciBhbnkgY2xhc3MgQywgYW5kIGlzc3ViY2xhc3Moc3RyLCBBKQorICAgIGFuZCBpc3N1YmNsYXNzKGJ5dGVzLCBBKSBhcmUgdHJ1ZSwgYW5kIGlzc3ViY2xhc3MoaW50LCBBKSBpcworICAgIGZhbHNlLgorCisgICAgVHlwZSB2YXJpYWJsZXMgbWF5IGJlIG1hcmtlZCBjb3ZhcmlhbnQgb3IgY29udHJhdmFyaWFudCBieSBwYXNzaW5nCisgICAgY292YXJpYW50PVRydWUgb3IgY29udHJhdmFyaWFudD1UcnVlLiAgU2VlIFBFUCA0ODQgZm9yIG1vcmUKKyAgICBkZXRhaWxzLiAgQnkgZGVmYXVsdCB0eXBlIHZhcmlhYmxlcyBhcmUgaW52YXJpYW50LgorCisgICAgVHlwZSB2YXJpYWJsZXMgY2FuIGJlIGludHJvc3BlY3RlZC4gZS5nLjoKKworICAgICAgVC5fX25hbWVfXyA9PSAnVCcKKyAgICAgIFQuX19jb25zdHJhaW50c19fID09ICgpCisgICAgICBULl9fY292YXJpYW50X18gPT0gRmFsc2UKKyAgICAgIFQuX19jb250cmF2YXJpYW50X18gPSBGYWxzZQorICAgICAgQS5fX2NvbnN0cmFpbnRzX18gPT0gKHN0ciwgYnl0ZXMpCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsICpjb25zdHJhaW50cywgYm91bmQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBjb3ZhcmlhbnQ9RmFsc2UsIGNvbnRyYXZhcmlhbnQ9RmFsc2UpOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgKEZpbmFsLCksIHt9LCBfcm9vdD1UcnVlKQorICAgICAgICBpZiBjb3ZhcmlhbnQgYW5kIGNvbnRyYXZhcmlhbnQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCaXZhcmlhbnQgdHlwZSB2YXJpYWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIikKKyAgICAgICAgc2VsZi5fX2NvdmFyaWFudF9fID0gYm9vbChjb3ZhcmlhbnQpCisgICAgICAgIHNlbGYuX19jb250cmF2YXJpYW50X18gPSBib29sKGNvbnRyYXZhcmlhbnQpCisgICAgICAgIGlmIGNvbnN0cmFpbnRzIGFuZCBib3VuZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ29uc3RyYWludHMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggYm91bmQ9Li4uIikKKyAgICAgICAgaWYgY29uc3RyYWludHMgYW5kIGxlbihjb25zdHJhaW50cykgPT0gMToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQSBzaW5nbGUgY29uc3RyYWludCBpcyBub3QgYWxsb3dlZCIpCisgICAgICAgIG1zZyA9ICJUeXBlVmFyKG5hbWUsIGNvbnN0cmFpbnQsIC4uLik6IGNvbnN0cmFpbnRzIG11c3QgYmUgdHlwZXMuIgorICAgICAgICBzZWxmLl9fY29uc3RyYWludHNfXyA9IHR1cGxlKF90eXBlX2NoZWNrKHQsIG1zZykgZm9yIHQgaW4gY29uc3RyYWludHMpCisgICAgICAgIGlmIGJvdW5kOgorICAgICAgICAgICAgc2VsZi5fX2JvdW5kX18gPSBfdHlwZV9jaGVjayhib3VuZCwgIkJvdW5kIG11c3QgYmUgYSB0eXBlLiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9fYm91bmRfXyA9IE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fY292YXJpYW50X186CisgICAgICAgICAgICBwcmVmaXggPSAnKycKKyAgICAgICAgZWxpZiBzZWxmLl9fY29udHJhdmFyaWFudF9fOgorICAgICAgICAgICAgcHJlZml4ID0gJy0nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSAnficKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlbGYuX19uYW1lX18KKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSB2YXJpYWJsZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICAjIFRPRE86IE1ha2UgdGhpcyByYWlzZSBUeXBlRXJyb3IgdG9vPworICAgICAgICBpZiBjbHMgaXMgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLl9fYm91bmRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2JvdW5kX18pCisgICAgICAgIGlmIHNlbGYuX19jb25zdHJhaW50c19fOgorICAgICAgICAgICAgcmV0dXJuIGFueShpc3N1YmNsYXNzKGNscywgYykgZm9yIGMgaW4gc2VsZi5fX2NvbnN0cmFpbnRzX18pCisgICAgICAgIHJldHVybiBUcnVlCisKKworIyBTb21lIHVuY29uc3RyYWluZWQgdHlwZSB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udGFpbmVyIHR5cGVzLgorVCA9IFR5cGVWYXIoJ1QnKSAgIyBBbnkgdHlwZS4KK0tUID0gVHlwZVZhcignS1QnKSAgIyBLZXkgdHlwZS4KK1ZUID0gVHlwZVZhcignVlQnKSAgIyBWYWx1ZSB0eXBlLgorVF9jbyA9IFR5cGVWYXIoJ1RfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgQW55IHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitWX2NvID0gVHlwZVZhcignVl9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBBbnkgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KK0tUX2NvID0gVHlwZVZhcignS1RfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgS2V5IHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitWVF9jbyA9IFR5cGVWYXIoJ1ZUX2NvJywgY292YXJpYW50PVRydWUpICAjIFZhbHVlIHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitUX2NvbnRyYSA9IFR5cGVWYXIoJ1RfY29udHJhJywgY29udHJhdmFyaWFudD1UcnVlKSAgIyBEaXR0byBjb250cmF2YXJpYW50LgorCisjIEEgdXNlZnVsIHR5cGUgdmFyaWFibGUgd2l0aCBjb25zdHJhaW50cy4gIFRoaXMgcmVwcmVzZW50cyBzdHJpbmcgdHlwZXMuCisjIFRPRE86IFdoYXQgYWJvdXQgYnl0ZWFycmF5LCBtZW1vcnl2aWV3PworQW55U3RyID0gVHlwZVZhcignQW55U3RyJywgYnl0ZXMsIHN0cikKKworCitjbGFzcyBVbmlvbk1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBVbmlvbi4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgcGFyYW1ldGVycz1Ob25lLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJFeHBlY3RlZCBwYXJhbWV0ZXJzPTx0dXBsZT4iKQorICAgICAgICAjIEZsYXR0ZW4gb3V0IFVuaW9uW1VuaW9uWy4uLl0sIC4uLl0gYW5kIHR5cGUtY2hlY2sgbm9uLVVuaW9uIGFyZ3MuCisgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgIG1zZyA9ICJVbmlvblthcmcsIC4uLl06IGVhY2ggYXJnIG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgVW5pb25NZXRhKToKKyAgICAgICAgICAgICAgICBwYXJhbXMuZXh0ZW5kKHAuX191bmlvbl9wYXJhbXNfXykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChfdHlwZV9jaGVjayhwLCBtc2cpKQorICAgICAgICAjIFdlZWQgb3V0IHN0cmljdCBkdXBsaWNhdGVzLCBwcmVzZXJ2aW5nIHRoZSBmaXJzdCBvZiBlYWNoIG9jY3VycmVuY2UuCisgICAgICAgIGFsbF9wYXJhbXMgPSBzZXQocGFyYW1zKQorICAgICAgICBpZiBsZW4oYWxsX3BhcmFtcykgPCBsZW4ocGFyYW1zKToKKyAgICAgICAgICAgIG5ld19wYXJhbXMgPSBbXQorICAgICAgICAgICAgZm9yIHQgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIGlmIHQgaW4gYWxsX3BhcmFtczoKKyAgICAgICAgICAgICAgICAgICAgbmV3X3BhcmFtcy5hcHBlbmQodCkKKyAgICAgICAgICAgICAgICAgICAgYWxsX3BhcmFtcy5yZW1vdmUodCkKKyAgICAgICAgICAgIHBhcmFtcyA9IG5ld19wYXJhbXMKKyAgICAgICAgICAgIGFzc2VydCBub3QgYWxsX3BhcmFtcywgYWxsX3BhcmFtcworICAgICAgICAjIFdlZWQgb3V0IHN1YmNsYXNzZXMuCisgICAgICAgICMgRS5nLiBVbmlvbltpbnQsIEVtcGxveWVlLCBNYW5hZ2VyXSA9PSBVbmlvbltpbnQsIEVtcGxveWVlXS4KKyAgICAgICAgIyBJZiBBbnkgb3Igb2JqZWN0IGlzIHByZXNlbnQgaXQgd2lsbCBiZSB0aGUgc29sZSBzdXJ2aXZvci4KKyAgICAgICAgIyBJZiBib3RoIEFueSBhbmQgb2JqZWN0IGFyZSBwcmVzZW50LCBBbnkgd2lucy4KKyAgICAgICAgIyBOZXZlciBkaXNjYXJkIHR5cGUgdmFyaWFibGVzLCBleGNlcHQgYWdhaW5zdCBBbnkuCisgICAgICAgICMgKEluIHBhcnRpY3VsYXIsIFVuaW9uW3N0ciwgQW55U3RyXSAhPSBBbnlTdHIuKQorICAgICAgICBhbGxfcGFyYW1zID0gc2V0KHBhcmFtcykKKyAgICAgICAgZm9yIHQxIGluIHBhcmFtczoKKyAgICAgICAgICAgIGlmIHQxIGlzIEFueToKKyAgICAgICAgICAgICAgICByZXR1cm4gQW55CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHQxLCBUeXBlVmFyKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgYW55KGlzc3ViY2xhc3ModDEsIHQyKQorICAgICAgICAgICAgICAgICAgIGZvciB0MiBpbiBhbGxfcGFyYW1zIC0ge3QxfSBpZiBub3QgaXNpbnN0YW5jZSh0MiwgVHlwZVZhcikpOgorICAgICAgICAgICAgICAgIGFsbF9wYXJhbXMucmVtb3ZlKHQxKQorICAgICAgICAjIEl0J3Mgbm90IGEgdW5pb24gaWYgdGhlcmUncyBvbmx5IG9uZSB0eXBlIGxlZnQuCisgICAgICAgIGlmIGxlbihhbGxfcGFyYW1zKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGFsbF9wYXJhbXMucG9wKCkKKyAgICAgICAgIyBDcmVhdGUgYSBuZXcgY2xhc3Mgd2l0aCB0aGVzZSBwYXJhbXMuCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywge30sIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX191bmlvbl9wYXJhbXNfXyA9IHR1cGxlKHQgZm9yIHQgaW4gcGFyYW1zIGlmIHQgaW4gYWxsX3BhcmFtcykKKyAgICAgICAgc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXyA9IGZyb3plbnNldChzZWxmLl9fdW5pb25fcGFyYW1zX18pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIHAgPSB0dXBsZShfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKQorICAgICAgICBpZiBwID09IHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIF9yb290PVRydWUpCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgICAgIGlmIF9oYXNfdHlwZV92YXIodCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByID0gc3VwZXIoKS5fX3JlcHJfXygpCisgICAgICAgIGlmIHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgIHIgKz0gJ1slc10nICUgKCcsICcuam9pbihfdHlwZV9yZXByKHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKSkKKyAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXJzKToKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW5ub3Qgc3Vic2NyaXB0IGFuIGV4aXN0aW5nIFVuaW9uLiBVc2UgVW5pb25bdSwgdF0gaW5zdGVhZC4iKQorICAgICAgICBpZiBwYXJhbWV0ZXJzID09ICgpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgdGFrZSBhIFVuaW9uIG9mIG5vIHR5cGVzLiIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSAocGFyYW1ldGVycywpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksIHBhcmFtZXRlcnMsIF9yb290PVRydWUpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFVuaW9uTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX191bmlvbl9zZXRfcGFyYW1zX18gPT0gb3RoZXIuX191bmlvbl9zZXRfcGFyYW1zX18KKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoaXNpbnN0YW5jZShpbnN0YW5jZSwgdCkgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKSkKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShjbHMsIFVuaW9uTWV0YSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNscywgVW5pb25NZXRhKToKKyAgICAgICAgICAgIGlmIGNscy5fX3VuaW9uX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gYWxsKGlzc3ViY2xhc3MoYywgc2VsZikgZm9yIGMgaW4gKGNscy5fX3VuaW9uX3BhcmFtc19fKSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNscywgVHlwZVZhcik6CisgICAgICAgICAgICBpZiBjbHMgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiBjbHMuX19jb25zdHJhaW50c19fOgorICAgICAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKFVuaW9uW2Nscy5fX2NvbnN0cmFpbnRzX19dLCBzZWxmKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gYW55KGlzc3ViY2xhc3MoY2xzLCB0KSBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX18pCisKKworY2xhc3MgVW5pb24oRmluYWwsIG1ldGFjbGFzcz1Vbmlvbk1ldGEsIF9yb290PVRydWUpOgorICAgICIiIlVuaW9uIHR5cGU7IFVuaW9uW1gsIFldIG1lYW5zIGVpdGhlciBYIG9yIFkuCisKKyAgICBUbyBkZWZpbmUgYSB1bmlvbiwgdXNlIGUuZy4gVW5pb25baW50LCBzdHJdLiAgRGV0YWlsczoKKworICAgIC0gVGhlIGFyZ3VtZW50cyBtdXN0IGJlIHR5cGVzIGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZS4KKworICAgIC0gTm9uZSBhcyBhbiBhcmd1bWVudCBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgaXMgcmVwbGFjZWQgYnkKKyAgICAgIHR5cGUoTm9uZSkuCisKKyAgICAtIFVuaW9ucyBvZiB1bmlvbnMgYXJlIGZsYXR0ZW5lZCwgZS5nLjo6CisKKyAgICAgICAgVW5pb25bVW5pb25baW50LCBzdHJdLCBmbG9hdF0gPT0gVW5pb25baW50LCBzdHIsIGZsb2F0XQorCisgICAgLSBVbmlvbnMgb2YgYSBzaW5nbGUgYXJndW1lbnQgdmFuaXNoLCBlLmcuOjoKKworICAgICAgICBVbmlvbltpbnRdID09IGludCAgIyBUaGUgY29uc3RydWN0b3IgYWN0dWFsbHkgcmV0dXJucyBpbnQKKworICAgIC0gUmVkdW5kYW50IGFyZ3VtZW50cyBhcmUgc2tpcHBlZCwgZS5nLjo6CisKKyAgICAgICAgVW5pb25baW50LCBzdHIsIGludF0gPT0gVW5pb25baW50LCBzdHJdCisKKyAgICAtIFdoZW4gY29tcGFyaW5nIHVuaW9ucywgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIGlnbm9yZWQsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludCwgc3RyXSA9PSBVbmlvbltzdHIsIGludF0KKworICAgIC0gV2hlbiB0d28gYXJndW1lbnRzIGhhdmUgYSBzdWJjbGFzcyByZWxhdGlvbnNoaXAsIHRoZSBsZWFzdAorICAgICAgZGVyaXZlZCBhcmd1bWVudCBpcyBrZXB0LCBlLmcuOjoKKworICAgICAgICBjbGFzcyBFbXBsb3llZTogcGFzcworICAgICAgICBjbGFzcyBNYW5hZ2VyKEVtcGxveWVlKTogcGFzcworICAgICAgICBVbmlvbltpbnQsIEVtcGxveWVlLCBNYW5hZ2VyXSA9PSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBVbmlvbltNYW5hZ2VyLCBpbnQsIEVtcGxveWVlXSA9PSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBVbmlvbltFbXBsb3llZSwgTWFuYWdlcl0gPT0gRW1wbG95ZWUKKworICAgIC0gQ29yb2xsYXJ5OiBpZiBBbnkgaXMgcHJlc2VudCBpdCBpcyB0aGUgc29sZSBzdXJ2aXZvciwgZS5nLjo6CisKKyAgICAgICAgVW5pb25baW50LCBBbnldID09IEFueQorCisgICAgLSBTaW1pbGFyIGZvciBvYmplY3Q6OgorCisgICAgICAgIFVuaW9uW2ludCwgb2JqZWN0XSA9PSBvYmplY3QKKworICAgIC0gVG8gY3V0IGEgdGllOiBVbmlvbltvYmplY3QsIEFueV0gPT0gVW5pb25bQW55LCBvYmplY3RdID09IEFueS4KKworICAgIC0gWW91IGNhbm5vdCBzdWJjbGFzcyBvciBpbnN0YW50aWF0ZSBhIHVuaW9uLgorCisgICAgLSBZb3UgY2Fubm90IHdyaXRlIFVuaW9uW1hdW1ldICh3aGF0IHdvdWxkIGl0IG1lYW4/KS4KKworICAgIC0gWW91IGNhbiB1c2UgT3B0aW9uYWxbWF0gYXMgYSBzaG9ydGhhbmQgZm9yIFVuaW9uW1gsIE5vbmVdLgorICAgICIiIgorCisgICAgIyBVbnN1YnNjcmlwdGVkIFVuaW9uIHR5cGUgaGFzIHBhcmFtcyBzZXQgdG8gTm9uZS4KKyAgICBfX3VuaW9uX3BhcmFtc19fID0gTm9uZQorICAgIF9fdW5pb25fc2V0X3BhcmFtc19fID0gTm9uZQorCisKK2NsYXNzIE9wdGlvbmFsTWV0YShUeXBpbmdNZXRhKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIE9wdGlvbmFsLiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBhcmcpOgorICAgICAgICBhcmcgPSBfdHlwZV9jaGVjayhhcmcsICJPcHRpb25hbFt0XSByZXF1aXJlcyBhIHNpbmdsZSB0eXBlLiIpCisgICAgICAgIHJldHVybiBVbmlvblthcmcsIHR5cGUoTm9uZSldCisKKworY2xhc3MgT3B0aW9uYWwoRmluYWwsIG1ldGFjbGFzcz1PcHRpb25hbE1ldGEsIF9yb290PVRydWUpOgorICAgICIiIk9wdGlvbmFsIHR5cGUuCisKKyAgICBPcHRpb25hbFtYXSBpcyBlcXVpdmFsZW50IHRvIFVuaW9uW1gsIHR5cGUoTm9uZSldLgorICAgICIiIgorCisKK2NsYXNzIFR1cGxlTWV0YShUeXBpbmdNZXRhKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIFR1cGxlLiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBwYXJhbWV0ZXJzPU5vbmUsCisgICAgICAgICAgICAgICAgdXNlX2VsbGlwc2lzPUZhbHNlLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgc2VsZi5fX3R1cGxlX3BhcmFtc19fID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX18gPSB1c2VfZWxsaXBzaXMKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIHRwID0gc2VsZi5fX3R1cGxlX3BhcmFtc19fCisgICAgICAgIGlmIHRwIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBwID0gdHVwbGUoX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucykgZm9yIHQgaW4gdHApCisgICAgICAgIGlmIHAgPT0gc2VsZi5fX3R1cGxlX3BhcmFtc19fOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJhbXMgPSBbX3R5cGVfcmVwcihwKSBmb3IgcCBpbiBzZWxmLl9fdHVwbGVfcGFyYW1zX19dCisgICAgICAgICAgICBpZiBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX186CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnLi4uJykKKyAgICAgICAgICAgIHIgKz0gJ1slc10nICUgKAorICAgICAgICAgICAgICAgICcsICcuam9pbihwYXJhbXMpKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcnMpOgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCByZS1wYXJhbWV0ZXJpemUgJXIiICUgKHNlbGYsKSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IChwYXJhbWV0ZXJzLCkKKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnMpID09IDIgYW5kIHBhcmFtZXRlcnNbMV0gPT0gRWxsaXBzaXM6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc1s6MV0KKyAgICAgICAgICAgIHVzZV9lbGxpcHNpcyA9IFRydWUKKyAgICAgICAgICAgIG1zZyA9ICJUdXBsZVt0LCAuLi5dOiB0IG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVzZV9lbGxpcHNpcyA9IEZhbHNlCisgICAgICAgICAgICBtc2cgPSAiVHVwbGVbdDAsIHQxLCAuLi5dOiBlYWNoIHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICBwYXJhbWV0ZXJzID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbWV0ZXJzKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHNlbGYuX19kaWN0X18pLCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2VsbGlwc2lzPXVzZV9lbGxpcHNpcywgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVHVwbGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX3R1cGxlX3BhcmFtc19fID09IG90aGVyLl9fdHVwbGVfcGFyYW1zX18KKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX3R1cGxlX3BhcmFtc19fKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIHQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0LCB0dXBsZSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5fX3R1cGxlX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX186CisgICAgICAgICAgICBwID0gc2VsZi5fX3R1cGxlX3BhcmFtc19fWzBdCisgICAgICAgICAgICByZXR1cm4gYWxsKGlzaW5zdGFuY2UoeCwgcCkgZm9yIHggaW4gdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAobGVuKHQpID09IGxlbihzZWxmLl9fdHVwbGVfcGFyYW1zX18pIGFuZAorICAgICAgICAgICAgICAgICAgICBhbGwoaXNpbnN0YW5jZSh4LCBwKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHgsIHAgaW4gemlwKHQsIHNlbGYuX190dXBsZV9wYXJhbXNfXykpKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKSAgIyBUbyBUeXBlRXJyb3IuCisgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCB0dXBsZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZSAgIyBTcGVjaWFsIGNhc2UuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgVHVwbGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykgICMgRmFsc2UuCisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgY2xzLl9fdHVwbGVfcGFyYW1zX18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyA/Pz8KKyAgICAgICAgaWYgY2xzLl9fdHVwbGVfdXNlX2VsbGlwc2lzX18gIT0gc2VsZi5fX3R1cGxlX3VzZV9lbGxpcHNpc19fOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgQ292YXJpYW5jZS4KKyAgICAgICAgcmV0dXJuIChsZW4oc2VsZi5fX3R1cGxlX3BhcmFtc19fKSA9PSBsZW4oY2xzLl9fdHVwbGVfcGFyYW1zX18pIGFuZAorICAgICAgICAgICAgICAgIGFsbChpc3N1YmNsYXNzKHgsIHApCisgICAgICAgICAgICAgICAgICAgIGZvciB4LCBwIGluIHppcChjbHMuX190dXBsZV9wYXJhbXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX190dXBsZV9wYXJhbXNfXykpKQorCisKK2NsYXNzIFR1cGxlKEZpbmFsLCBtZXRhY2xhc3M9VHVwbGVNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJUdXBsZSB0eXBlOyBUdXBsZVtYLCBZXSBpcyB0aGUgY3Jvc3MtcHJvZHVjdCB0eXBlIG9mIFggYW5kIFkuCisKKyAgICBFeGFtcGxlOiBUdXBsZVtUMSwgVDJdIGlzIGEgdHVwbGUgb2YgdHdvIGVsZW1lbnRzIGNvcnJlc3BvbmRpbmcKKyAgICB0byB0eXBlIHZhcmlhYmxlcyBUMSBhbmQgVDIuICBUdXBsZVtpbnQsIGZsb2F0LCBzdHJdIGlzIGEgdHVwbGUKKyAgICBvZiBhbiBpbnQsIGEgZmxvYXQgYW5kIGEgc3RyaW5nLgorCisgICAgVG8gc3BlY2lmeSBhIHZhcmlhYmxlLWxlbmd0aCB0dXBsZSBvZiBob21vZ2VuZW91cyB0eXBlLCB1c2UgU2VxdWVuY2VbVF0uCisgICAgIiIiCisKKworY2xhc3MgQ2FsbGFibGVNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgQ2FsbGFibGUuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PUZhbHNlLAorICAgICAgICAgICAgICAgIGFyZ3M9Tm9uZSwgcmVzdWx0PU5vbmUpOgorICAgICAgICBpZiBhcmdzIGlzIE5vbmUgYW5kIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgcGFzcyAgIyBNdXN0IGJlICdjbGFzcyBDYWxsYWJsZScuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBhcmdzIGlzIG5vdCBFbGxpcHNpczoKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYWxsYWJsZVthcmdzLCByZXN1bHRdOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncyBtdXN0IGJlIGEgbGlzdC4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIEdvdCAlLjEwMHIuIiAlIChhcmdzLCkpCisgICAgICAgICAgICAgICAgbXNnID0gIkNhbGxhYmxlW1thcmcsIC4uLl0sIHJlc3VsdF06IGVhY2ggYXJnIG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgICAgICAgICBhcmdzID0gdHVwbGUoX3R5cGVfY2hlY2soYXJnLCBtc2cpIGZvciBhcmcgaW4gYXJncykKKyAgICAgICAgICAgIG1zZyA9ICJDYWxsYWJsZVthcmdzLCByZXN1bHRdOiByZXN1bHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICAgICAgcmVzdWx0ID0gX3R5cGVfY2hlY2socmVzdWx0LCBtc2cpCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgc2VsZi5fX2FyZ3NfXyA9IGFyZ3MKKyAgICAgICAgc2VsZi5fX3Jlc3VsdF9fID0gcmVzdWx0CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXzoKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX19hcmdzX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIF9oYXNfdHlwZV92YXIoc2VsZi5fX3Jlc3VsdF9fKQorCisgICAgZGVmIF9ldmFsX3R5cGUoc2VsZiwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgYXJncyA9IFtfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKSBmb3IgdCBpbiBzZWxmLl9fYXJnc19fXQorICAgICAgICByZXN1bHQgPSBfZXZhbF90eXBlKHNlbGYuX19yZXN1bHRfXywgZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgICAgIGlmIGFyZ3MgPT0gc2VsZi5fX2FyZ3NfXyBhbmQgcmVzdWx0ID09IHNlbGYuX19yZXN1bHRfXzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncywgcmVzdWx0PXJlc3VsdCwgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIG5vdCBOb25lIG9yIHNlbGYuX19yZXN1bHRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgRWxsaXBzaXM6CisgICAgICAgICAgICAgICAgYXJnc19yID0gJy4uLicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJnc19yID0gJ1slc10nICUgJywgJy5qb2luKF90eXBlX3JlcHIodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX2FyZ3NfXykKKyAgICAgICAgICAgIHIgKz0gJ1slcywgJXNdJyAlIChhcmdzX3IsIF90eXBlX3JlcHIoc2VsZi5fX3Jlc3VsdF9fKSkKKyAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXJzKToKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBub3QgTm9uZSBvciBzZWxmLl9fcmVzdWx0X18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlRoaXMgQ2FsbGFibGUgdHlwZSBpcyBhbHJlYWR5IHBhcmFtZXRlcml6ZWQuIikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpIG9yIGxlbihwYXJhbWV0ZXJzKSAhPSAyOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICJDYWxsYWJsZSBtdXN0IGJlIHVzZWQgYXMgQ2FsbGFibGVbW2FyZywgLi4uXSwgcmVzdWx0XS4iKQorICAgICAgICBhcmdzLCByZXN1bHQgPSBwYXJhbWV0ZXJzCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksIF9yb290PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MsIHJlc3VsdD1yZXN1bHQpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIENhbGxhYmxlTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fYXJnc19fID09IG90aGVyLl9fYXJnc19fIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX19yZXN1bHRfXyA9PSBvdGhlci5fX3Jlc3VsdF9fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9fYXJnc19fKSBeIGhhc2goc2VsZi5fX3Jlc3VsdF9fKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKToKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKGluc3RhbmNlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgYXNzZXJ0IHNlbGYuX19hcmdzX18gaXMgbm90IE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYuX19yZXN1bHRfXyBpcyBub3QgTm9uZQorICAgICAgICBteV9hcmdzLCBteV9yZXN1bHQgPSBzZWxmLl9fYXJnc19fLCBzZWxmLl9fcmVzdWx0X18KKyAgICAgICAgaW1wb3J0IGluc3BlY3QgICMgVE9ETzogQXZvaWQgdGhpcyBpbXBvcnQuCisgICAgICAgICMgV291bGQgaXQgYmUgYmV0dGVyIHRvIHVzZSBTaWduYXR1cmUgb2JqZWN0cz8KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsCisgICAgICAgICAgICAgYW5ub3RhdGlvbnMpID0gaW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhpbnN0YW5jZSkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyBXZSBjYW4ndCBmaW5kIHRoZSBzaWduYXR1cmUuICBHaXZlIHVwLgorICAgICAgICBtc2cgPSAoIldoZW4gdGVzdGluZyBpc2luc3RhbmNlKDxjYWxsYWJsZT4sIENhbGxhYmxlWy4uLl0sICIKKyAgICAgICAgICAgICAgICI8Y2FsbGVibGU+J3MgYW5ub3RhdGlvbnMgbXVzdCBiZSB0eXBlcy4iKQorICAgICAgICBpZiBteV9hcmdzIGlzIG5vdCBFbGxpcHNpczoKKyAgICAgICAgICAgIGlmIGt3b25seWFyZ3MgYW5kIChub3Qga3dvbmx5ZGVmYXVsdHMgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oa3dvbmx5ZGVmYXVsdHMpIDwgbGVuKGt3b25seWFyZ3MpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5zdGFuY2UsIHR5cGVzLk1ldGhvZFR5cGUpOgorICAgICAgICAgICAgICAgICMgRm9yIG1ldGhvZHMsIGdldGZ1bGxhcmdzcGVjKCkgaW5jbHVkZXMgc2VsZi9jbHMsCisgICAgICAgICAgICAgICAgIyBidXQgaXQncyBub3QgcGFydCBvZiB0aGUgY2FsbCBzaWduYXR1cmUsIHNvIGRyb3AgaXQuCisgICAgICAgICAgICAgICAgZGVsIGFyZ3NbMF0KKyAgICAgICAgICAgIG1pbl9jYWxsX2FyZ3MgPSBsZW4oYXJncykKKyAgICAgICAgICAgIGlmIGRlZmF1bHRzOgorICAgICAgICAgICAgICAgIG1pbl9jYWxsX2FyZ3MgLT0gbGVuKGRlZmF1bHRzKQorICAgICAgICAgICAgaWYgdmFyYXJnczoKKyAgICAgICAgICAgICAgICBtYXhfY2FsbF9hcmdzID0gOTk5OTk5OTk5CisgICAgICAgICAgICAgICAgaWYgbGVuKGFyZ3MpIDwgbGVuKG15X2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICBhcmdzICs9IFt2YXJhcmdzXSAqIChsZW4obXlfYXJncykgLSBsZW4oYXJncykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1heF9jYWxsX2FyZ3MgPSBsZW4oYXJncykKKyAgICAgICAgICAgIGlmIG5vdCBtaW5fY2FsbF9hcmdzIDw9IGxlbihteV9hcmdzKSA8PSBtYXhfY2FsbF9hcmdzOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZm9yIG15X2FyZ190eXBlLCBuYW1lIGluIHppcChteV9hcmdzLCBhcmdzKToKKyAgICAgICAgICAgICAgICBpZiBuYW1lIGluIGFubm90YXRpb25zOgorICAgICAgICAgICAgICAgICAgICBhbm5vdF90eXBlID0gX3R5cGVfY2hlY2soYW5ub3RhdGlvbnNbbmFtZV0sIG1zZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhbm5vdF90eXBlID0gQW55CisgICAgICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MobXlfYXJnX3R5cGUsIGFubm90X3R5cGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAjIFRPRE86IElmIG11dGFibGUgdHlwZSwgY2hlY2sgaW52YXJpYW5jZT8KKyAgICAgICAgaWYgJ3JldHVybicgaW4gYW5ub3RhdGlvbnM6CisgICAgICAgICAgICBhbm5vdF9yZXR1cm5fdHlwZSA9IF90eXBlX2NoZWNrKGFubm90YXRpb25zWydyZXR1cm4nXSwgbXNnKQorICAgICAgICAgICAgIyBOb3RlIGNvbnRyYXZhcmlhbmNlIGhlcmUhCisgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhhbm5vdF9yZXR1cm5fdHlwZSwgbXlfcmVzdWx0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBDYW4ndCBmaW5kIGFueXRoaW5nIHdyb25nLi4uCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgQ2FsbGFibGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBOb25lIGFuZCBzZWxmLl9fcmVzdWx0X18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgV2UncmUgbm90IGRvaW5nIGNvdmFyaWFuY2Ugb3IgY29udHJhdmFyaWFuY2UgLS0gdGhpcyBpcyAqaW52YXJpYW5jZSouCisgICAgICAgIHJldHVybiBzZWxmID09IGNscworCisKK2NsYXNzIENhbGxhYmxlKEZpbmFsLCBtZXRhY2xhc3M9Q2FsbGFibGVNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJDYWxsYWJsZSB0eXBlOyBDYWxsYWJsZVtbaW50XSwgc3RyXSBpcyBhIGZ1bmN0aW9uIG9mIChpbnQpIC0+IHN0ci4KKworICAgIFRoZSBzdWJzY3JpcHRpb24gc3ludGF4IG11c3QgYWx3YXlzIGJlIHVzZWQgd2l0aCBleGFjdGx5IHR3bworICAgIHZhbHVlczogdGhlIGFyZ3VtZW50IGxpc3QgYW5kIHRoZSByZXR1cm4gdHlwZS4gIFRoZSBhcmd1bWVudCBsaXN0CisgICAgbXVzdCBiZSBhIGxpc3Qgb2YgdHlwZXM7IHRoZSByZXR1cm4gdHlwZSBtdXN0IGJlIGEgc2luZ2xlIHR5cGUuCisKKyAgICBUaGVyZSBpcyBubyBzeW50YXggdG8gaW5kaWNhdGUgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMsCisgICAgc3VjaCBmdW5jdGlvbiB0eXBlcyBhcmUgcmFyZWx5IHVzZWQgYXMgY2FsbGJhY2sgdHlwZXMuCisgICAgIiIiCisKKworZGVmIF9nb3JnKGEpOgorICAgICIiIlJldHVybiB0aGUgZmFydGhlc3Qgb3JpZ2luIG9mIGEgZ2VuZXJpYyBjbGFzcy4iIiIKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBHZW5lcmljTWV0YSkKKyAgICB3aGlsZSBhLl9fb3JpZ2luX18gaXMgbm90IE5vbmU6CisgICAgICAgIGEgPSBhLl9fb3JpZ2luX18KKyAgICByZXR1cm4gYQorCisKK2RlZiBfZ2VxdihhLCBiKToKKyAgICAiIiJSZXR1cm4gd2hldGhlciB0d28gZ2VuZXJpYyBjbGFzc2VzIGFyZSBlcXVpdmFsZW50LgorCisgICAgVGhlIGludGVudGlvbiBpcyB0byBjb25zaWRlciBnZW5lcmljIGNsYXNzIFggYW5kIGFueSBvZiBpdHMKKyAgICBwYXJhbWV0ZXJpemVkIGZvcm1zIChYW1RdLCBYW2ludF0sIGV0Yy4pICBhcyBlcXVpdmFsZW50LgorCisgICAgSG93ZXZlciwgWCBpcyBub3QgZXF1aXZhbGVudCB0byBhIHN1YmNsYXNzIG9mIFguCisKKyAgICBUaGUgcmVsYXRpb24gaXMgcmVmbGV4aXZlLCBzeW1tZXRyaWMgYW5kIHRyYW5zaXRpdmUuCisgICAgIiIiCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgR2VuZXJpY01ldGEpIGFuZCBpc2luc3RhbmNlKGIsIEdlbmVyaWNNZXRhKQorICAgICMgUmVkdWNlIGVhY2ggdG8gaXRzIG9yaWdpbi4KKyAgICByZXR1cm4gX2dvcmcoYSkgaXMgX2dvcmcoYikKKworCitjbGFzcyBHZW5lcmljTWV0YShUeXBpbmdNZXRhLCBhYmMuQUJDTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBnZW5lcmljIHR5cGVzLiIiIgorCisgICAgIyBUT0RPOiBDb25zdHJhaW4gbW9yZSBob3cgR2VuZXJpYyBpcyB1c2VkOyBvbmx5IGEgZmV3CisgICAgIyBzdGFuZGFyZCBwYXR0ZXJucyBzaG91bGQgYmUgYWxsb3dlZC4KKworICAgICMgVE9ETzogVXNlIGEgbW9yZSBwcmVjaXNlIHJ1bGUgdGhhbiBtYXRjaGluZyBfX25hbWVfXyB0byBkZWNpZGUKKyAgICAjIHdoZXRoZXIgdHdvIGNsYXNzZXMgYXJlIHRoZSBzYW1lLiAgQWxzbywgc2F2ZSB0aGUgZm9ybWFsCisgICAgIyBwYXJhbWV0ZXJzLiAgKFRoZXNlIHRoaW5ncyBhcmUgcmVsYXRlZCEgIEEgc29sdXRpb24gbGllcyBpbgorICAgICMgdXNpbmcgb3JpZ2luLikKKworICAgIF9fZXh0cmFfXyA9IE5vbmUKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPU5vbmUsIG9yaWdpbj1Ob25lLCBleHRyYT1Ob25lKToKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgIyBFeHRyYWN0IHBhcmFtZXRlcnMgZnJvbSBkaXJlY3QgYmFzZSBjbGFzc2VzLiAgT25seQorICAgICAgICAgICAgIyBkaXJlY3QgYmFzZXMgYXJlIGNvbnNpZGVyZWQgYW5kIG9ubHkgdGhvc2UgdGhhdCBhcmUKKyAgICAgICAgICAgICMgdGhlbXNlbHZlcyBnZW5lcmljLCBhbmQgcGFyYW1ldGVyaXplZCB3aXRoIHR5cGUKKyAgICAgICAgICAgICMgdmFyaWFibGVzLiAgRG9uJ3QgdXNlIGJhc2VzIGxpa2UgQW55LCBVbmlvbiwgVHVwbGUsCisgICAgICAgICAgICAjIENhbGxhYmxlIG9yIHR5cGUgdmFyaWFibGVzLgorICAgICAgICAgICAgcGFyYW1zID0gTm9uZQorICAgICAgICAgICAgZm9yIGJhc2UgaW4gYmFzZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShiYXNlLCBUeXBpbmdNZXRhKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYmFzZSwgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2Fubm90IGluaGVyaXQgZnJvbSBtYWdpYyBjbGFzcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoYmFzZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIGJhc2UuX19wYXJhbWV0ZXJzX18gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIFRoZSBiYXNlIGlzIHVucGFyYW1ldGVyaXplZC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGJwIGluIGJhc2UuX19wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKGJwKSBhbmQgbm90IGlzaW5zdGFuY2UoYnAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBpbmhlcml0IGZyb20gYSBnZW5lcmljIGNsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdHlwZS12YXJpYWJsZSAlcyIgJSBicCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBicCBub3QgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoYnApCisgICAgICAgICAgICBpZiBwYXJhbXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHR1cGxlKHBhcmFtcykKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX19wYXJhbWV0ZXJzX18gPSBwYXJhbWV0ZXJzCisgICAgICAgIGlmIGV4dHJhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2V4dHJhX18gPSBleHRyYQorICAgICAgICAjIEVsc2UgX19leHRyYV9fIGlzIGluaGVyaXRlZCwgZXZlbnR1YWxseSBmcm9tIHRoZQorICAgICAgICAjIChtZXRhLSljbGFzcyBkZWZhdWx0IGFib3ZlLgorICAgICAgICBzZWxmLl9fb3JpZ2luX18gPSBvcmlnaW4KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKF90eXBlX3JlcHIocCkgZm9yIHAgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKF9nZXF2KHNlbGYsIG90aGVyKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fcGFyYW1ldGVyc19fID09IG90aGVyLl9fcGFyYW1ldGVyc19fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX25hbWVfXywgc2VsZi5fX3BhcmFtZXRlcnNfXykpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1zKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1zLCB0dXBsZSk6CisgICAgICAgICAgICBwYXJhbXMgPSAocGFyYW1zLCkKKyAgICAgICAgaWYgbm90IHBhcmFtczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGhhdmUgZW1wdHkgcGFyYW1ldGVyIGxpc3QiKQorICAgICAgICBtc2cgPSAiUGFyYW1ldGVycyB0byBnZW5lcmljIHR5cGVzIG11c3QgYmUgdHlwZXMuIgorICAgICAgICBwYXJhbXMgPSB0dXBsZShfdHlwZV9jaGVjayhwLCBtc2cpIGZvciBwIGluIHBhcmFtcykKKyAgICAgICAgaWYgc2VsZi5fX3BhcmFtZXRlcnNfXyBpcyBOb25lOgorICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkluaXRpYWwgcGFyYW1ldGVycyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIHZhcmlhYmxlczsgZ290ICVzIiAlIHApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBsZW4ocGFyYW1zKSAhPSBsZW4oc2VsZi5fX3BhcmFtZXRlcnNfXyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY2hhbmdlIHBhcmFtZXRlciBjb3VudCBmcm9tICVkIHRvICVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fX3BhcmFtZXRlcnNfXyksIGxlbihwYXJhbXMpKSkKKyAgICAgICAgICAgIGZvciBuZXcsIG9sZCBpbiB6aXAocGFyYW1zLCBzZWxmLl9fcGFyYW1ldGVyc19fKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9sZCwgVHlwZVZhcik6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvbGQuX19jb25zdHJhaW50c19fOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTdWJzdGl0dXRpbmcgZm9yIGFuIHVuY29uc3RyYWluZWQgVHlwZVZhciBpcyBPSy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MobmV3LCBVbmlvbltvbGQuX19jb25zdHJhaW50c19fXSk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNwZWNpYWxpemluZyBhIGNvbnN0cmFpbmVkIHR5cGUgdmFyaWFibGUgaXMgT0suCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKG5ldywgb2xkKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzdWJzdGl0dXRlICVzIGZvciAlcyBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKF90eXBlX3JlcHIobmV3KSwgX3R5cGVfcmVwcihvbGQpLCBzZWxmKSkKKworICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHNlbGYuX19kaWN0X18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW49c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPXNlbGYuX19leHRyYV9fKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKGNscywgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgIyBGb3IgYSBjbGFzcyBDKEdlbmVyaWNbVF0pIHdoZXJlIFQgaXMgY28tdmFyaWFudCwKKyAgICAgICAgICAgICMgQ1tYXSBpcyBhIHN1YmNsYXNzIG9mIENbWV0gaWZmIFggaXMgYSBzdWJjbGFzcyBvZiBZLgorICAgICAgICAgICAgb3JpZ2luID0gc2VsZi5fX29yaWdpbl9fCisgICAgICAgICAgICBpZiBvcmlnaW4gaXMgbm90IE5vbmUgYW5kIG9yaWdpbiBpcyBjbHMuX19vcmlnaW5fXzoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pID09IGxlbihvcmlnaW4uX19wYXJhbWV0ZXJzX18pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihjbHMuX19wYXJhbWV0ZXJzX18pID09IGxlbihvcmlnaW4uX19wYXJhbWV0ZXJzX18pCisgICAgICAgICAgICAgICAgZm9yIHBfc2VsZiwgcF9jbHMsIHBfb3JpZ2luIGluIHppcChzZWxmLl9fcGFyYW1ldGVyc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLl9fcGFyYW1ldGVyc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLl9fcGFyYW1ldGVyc19fKToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwX29yaWdpbiwgVHlwZVZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwX29yaWdpbi5fX2NvdmFyaWFudF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ292YXJpYW50IC0tIHBfY2xzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBwX3NlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MocF9jbHMsIHBfc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBfb3JpZ2luLl9fY29udHJhdmFyaWFudF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ29udHJhdmFyaWFudC4gIEkgdGhpbmsgaXQncyB0aGUgb3Bwb3NpdGUuIDotKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBfc2VsZiwgcF9jbHMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEludmFyaWFudCAtLSBwX2NscyBhbmQgcF9zZWxmIG11c3QgZXF1YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9zZWxmICE9IHBfY2xzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGUgb3JpZ2luJ3MgcGFyYW1ldGVyIGlzIG5vdCBhIHR5cGV2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluc2lzdCBvbiBpbnZhcmlhbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9zZWxmICE9IHBfY2xzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICAjIElmIHdlIGJyZWFrIG91dCBvZiB0aGUgbG9vcCwgdGhlIHN1cGVyY2xhc3MgZ2V0cyBhIGNoYW5jZS4KKyAgICAgICAgaWYgc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fX2V4dHJhX18gaXMgTm9uZSBvciBpc2luc3RhbmNlKGNscywgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2V4dHJhX18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgaWYgc3VwZXIoKS5fX2luc3RhbmNlY2hlY2tfXyhvYmopOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fX2V4dHJhX18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIHNlbGYuX19leHRyYV9fKQorCisKK2NsYXNzIEdlbmVyaWMobWV0YWNsYXNzPUdlbmVyaWNNZXRhKToKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBnZW5lcmljIHR5cGVzLgorCisgICAgQSBnZW5lcmljIHR5cGUgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGJ5IGluaGVyaXRpbmcgZnJvbSBhbgorICAgIGluc3RhbnRpYXRpb24gb2YgdGhpcyBjbGFzcyB3aXRoIG9uZSBvciBtb3JlIHR5cGUgdmFyaWFibGVzLgorICAgIEZvciBleGFtcGxlLCBhIGdlbmVyaWMgbWFwcGluZyB0eXBlIG1pZ2h0IGJlIGRlZmluZWQgYXM6OgorCisgICAgICBjbGFzcyBNYXBwaW5nKEdlbmVyaWNbS1QsIFZUXSk6CisgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogS1QpIC0+IFZUOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAjIEV0Yy4KKworICAgIFRoaXMgY2xhc3MgY2FuIHRoZW4gYmUgdXNlZCBhcyBmb2xsb3dzOjoKKworICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmcsIGtleTogS1QsIGRlZmF1bHQ6IFZUKSAtPiBWVDoKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2tleV0KKyAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBGb3IgY2xhcml0eSB0aGUgdHlwZSB2YXJpYWJsZXMgbWF5IGJlIHJlZGVmaW5lZCwgZS5nLjo6CisKKyAgICAgIFggPSBUeXBlVmFyKCdYJykKKyAgICAgIFkgPSBUeXBlVmFyKCdZJykKKyAgICAgIGRlZiBsb29rdXBfbmFtZShtYXBwaW5nOiBNYXBwaW5nW1gsIFldLCBrZXk6IFgsIGRlZmF1bHQ6IFkpIC0+IFk6CisgICAgICAgICAgIyBTYW1lIGJvZHkgYXMgYWJvdmUuCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBuZXh0X2luX21ybyA9IG9iamVjdAorICAgICAgICAjIExvb2sgZm9yIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgR2VuZXJpYyBvciBHZW5lcmljWy4uLl0uCisgICAgICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShjbHMuX19tcm9fX1s6LTFdKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgR2VuZXJpY01ldGEpIGFuZCBfZ29yZyhjKSBpcyBHZW5lcmljOgorICAgICAgICAgICAgICAgIG5leHRfaW5fbXJvID0gY2xzLl9fbXJvX19baSsxXQorICAgICAgICByZXR1cm4gbmV4dF9pbl9tcm8uX19uZXdfXyhfZ29yZyhjbHMpKQorCisKK2RlZiBjYXN0KHR5cCwgdmFsKToKKyAgICAiIiJDYXN0IGEgdmFsdWUgdG8gYSB0eXBlLgorCisgICAgVGhpcyByZXR1cm5zIHRoZSB2YWx1ZSB1bmNoYW5nZWQuICBUbyB0aGUgdHlwZSBjaGVja2VyIHRoaXMKKyAgICBzaWduYWxzIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBoYXMgdGhlIGRlc2lnbmF0ZWQgdHlwZSwgYnV0IGF0CisgICAgcnVudGltZSB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IGNoZWNrIGFueXRoaW5nICh3ZSB3YW50IHRoaXMKKyAgICB0byBiZSBhcyBmYXN0IGFzIHBvc3NpYmxlKS4KKyAgICAiIiIKKyAgICByZXR1cm4gdmFsCisKKworZGVmIF9nZXRfZGVmYXVsdHMoZnVuYyk6CisgICAgIiIiSW50ZXJuYWwgaGVscGVyIHRvIGV4dHJhY3QgdGhlIGRlZmF1bHQgYXJndW1lbnRzLCBieSBuYW1lLiIiIgorICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgcG9zX2NvdW50ID0gY29kZS5jb19hcmdjb3VudAorICAgIGt3X2NvdW50ID0gY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgIGFyZ19uYW1lcyA9IGNvZGUuY29fdmFybmFtZXMKKyAgICBrd2FyZ19uYW1lcyA9IGFyZ19uYW1lc1twb3NfY291bnQ6cG9zX2NvdW50ICsga3dfY291bnRdCisgICAgYXJnX25hbWVzID0gYXJnX25hbWVzWzpwb3NfY291bnRdCisgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXyBvciAoKQorICAgIGt3ZGVmYXVsdHMgPSBmdW5jLl9fa3dkZWZhdWx0c19fCisgICAgcmVzID0gZGljdChrd2RlZmF1bHRzKSBpZiBrd2RlZmF1bHRzIGVsc2Uge30KKyAgICBwb3Nfb2Zmc2V0ID0gcG9zX2NvdW50IC0gbGVuKGRlZmF1bHRzKQorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoYXJnX25hbWVzW3Bvc19vZmZzZXQ6XSwgZGVmYXVsdHMpOgorICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gcmVzCisgICAgICAgIHJlc1tuYW1lXSA9IHZhbHVlCisgICAgcmV0dXJuIHJlcworCisKK2RlZiBnZXRfdHlwZV9oaW50cyhvYmosIGdsb2JhbG5zPU5vbmUsIGxvY2FsbnM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKworICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgb2JqLl9fYW5ub3RhdGlvbnNfXywgYnV0IGl0IGhhbmRsZXMKKyAgICBmb3J3YXJkIHJlZmVyZW5jZXMgZW5jb2RlZCBhcyBzdHJpbmcgbGl0ZXJhbHMsIGFuZCBpZiBuZWNlc3NhcnkKKyAgICBhZGRzIE9wdGlvbmFsW3RdIGlmIGEgZGVmYXVsdCB2YWx1ZSBlcXVhbCB0byBOb25lIGlzIHNldC4KKworICAgIEJFV0FSRSAtLSB0aGUgYmVoYXZpb3Igb2YgZ2xvYmFsbnMgYW5kIGxvY2FsbnMgaXMgY291bnRlcmludHVpdGl2ZQorICAgICh1bmxlc3MgeW91IGFyZSBmYW1pbGlhciB3aXRoIGhvdyBldmFsKCkgYW5kIGV4ZWMoKSB3b3JrKS4gIFRoZQorICAgIHNlYXJjaCBvcmRlciBpcyBsb2NhbHMgZmlyc3QsIHRoZW4gZ2xvYmFscy4KKworICAgIC0gSWYgbm8gZGljdCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSB0aGUKKyAgICAgIGdsb2JhbHMgZnJvbSBvYmosIGFuZCB0aGVzZSBhcmUgYWxzbyB1c2VkIGFzIHRoZSBsb2NhbHMuICBJZiB0aGUKKyAgICAgIG9iamVjdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBnbG9iYWxzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgLSBJZiBvbmUgZGljdCBhcmd1bWVudCBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGggZ2xvYmFscyBhbmQKKyAgICAgIGxvY2Fscy4KKworICAgIC0gSWYgdHdvIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgc3BlY2lmeSBnbG9iYWxzIGFuZAorICAgICAgbG9jYWxzLCByZXNwZWN0aXZlbHkuCisgICAgIiIiCisgICAgaWYgZ2V0YXR0cihvYmosICdfX25vX3R5cGVfY2hlY2tfXycsIE5vbmUpOgorICAgICAgICByZXR1cm4ge30KKyAgICBpZiBnbG9iYWxucyBpcyBOb25lOgorICAgICAgICBnbG9iYWxucyA9IGdldGF0dHIob2JqLCAnX19nbG9iYWxzX18nLCB7fSkKKyAgICAgICAgaWYgbG9jYWxucyBpcyBOb25lOgorICAgICAgICAgICAgbG9jYWxucyA9IGdsb2JhbG5zCisgICAgZWxpZiBsb2NhbG5zIGlzIE5vbmU6CisgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucworICAgIGRlZmF1bHRzID0gX2dldF9kZWZhdWx0cyhvYmopCisgICAgaGludHMgPSBkaWN0KG9iai5fX2Fubm90YXRpb25zX18pCisgICAgZm9yIG5hbWUsIHZhbHVlIGluIGhpbnRzLml0ZW1zKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICB2YWx1ZSA9IF9Gb3J3YXJkUmVmKHZhbHVlKQorICAgICAgICB2YWx1ZSA9IF9ldmFsX3R5cGUodmFsdWUsIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICBpZiBuYW1lIGluIGRlZmF1bHRzIGFuZCBkZWZhdWx0c1tuYW1lXSBpcyBOb25lOgorICAgICAgICAgICAgdmFsdWUgPSBPcHRpb25hbFt2YWx1ZV0KKyAgICAgICAgaGludHNbbmFtZV0gPSB2YWx1ZQorICAgIHJldHVybiBoaW50cworCisKKyMgVE9ETzogQWxzbyBzdXBwb3J0IHRoaXMgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCitkZWYgbm9fdHlwZV9jaGVjayhhcmcpOgorICAgICIiIkRlY29yYXRvciB0byBpbmRpY2F0ZSB0aGF0IGFubm90YXRpb25zIGFyZSBub3QgdHlwZSBoaW50cy4KKworICAgIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgY2xhc3Mgb3IgZnVuY3Rpb247IGlmIGl0IGlzIGEgY2xhc3MsIGl0CisgICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgKGJ1dCBub3QKKyAgICB0byBtZXRob2RzIGRlZmluZWQgaW4gaXRzIHN1cGVyY2xhc3NlcyBvciBzdWJjbGFzc2VzKS4KKworICAgIFRoaXMgbXV0YXRlcyB0aGUgZnVuY3Rpb24ocykgaW4gcGxhY2UuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShhcmcsIHR5cGUpOgorICAgICAgICBmb3Igb2JqIGluIGFyZy5fX2RpY3RfXy52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgICAgIG9iai5fX25vX3R5cGVfY2hlY2tfXyA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBhcmcuX19ub190eXBlX2NoZWNrX18gPSBUcnVlCisgICAgcmV0dXJuIGFyZworCisKK2RlZiBub190eXBlX2NoZWNrX2RlY29yYXRvcihkZWNvcmF0b3IpOgorICAgICIiIkRlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSBAbm9fdHlwZV9jaGVjayBlZmZlY3QuCisKKyAgICBUaGlzIHdyYXBzIHRoZSBkZWNvcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdCB3cmFwcyB0aGUgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gaW4gQG5vX3R5cGVfY2hlY2suCisgICAgIiIiCisKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGRlY29yYXRvcikKKyAgICBkZWYgd3JhcHBlZF9kZWNvcmF0b3IoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGZ1bmMgPSBkZWNvcmF0b3IoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgZnVuYyA9IG5vX3R5cGVfY2hlY2soZnVuYykKKyAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgIHJldHVybiB3cmFwcGVkX2RlY29yYXRvcgorCisKK2RlZiBvdmVybG9hZChmdW5jKToKKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIk92ZXJsb2FkaW5nIGlzIG9ubHkgc3VwcG9ydGVkIGluIGxpYnJhcnkgc3R1YnMiKQorCisKK2NsYXNzIF9Qcm90b2NvbE1ldGEoR2VuZXJpY01ldGEpOgorICAgICIiIkludGVybmFsIG1ldGFjbGFzcyBmb3IgX1Byb3RvY29sLgorCisgICAgVGhpcyBleGlzdHMgc28gX1Byb3RvY29sIGNsYXNzZXMgY2FuIGJlIGdlbmVyaWMgd2l0aG91dCBkZXJpdmluZworICAgIGZyb20gR2VuZXJpYy4KKyAgICAiIiIKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5faXNfcHJvdG9jb2w6CisgICAgICAgICAgICAjIE5vIHN0cnVjdHVyYWwgY2hlY2tzIHNpbmNlIHRoaXMgaXNuJ3QgYSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIGlmIHNlbGYgaXMgX1Byb3RvY29sOgorICAgICAgICAgICAgIyBFdmVyeSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIHRoZSBlbXB0eSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIyBGaW5kIGFsbCBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIHByb3RvY29sLgorICAgICAgICBhdHRycyA9IHNlbGYuX2dldF9wcm90b2NvbF9hdHRycygpCisKKyAgICAgICAgZm9yIGF0dHIgaW4gYXR0cnM6CisgICAgICAgICAgICBpZiBub3QgYW55KGF0dHIgaW4gZC5fX2RpY3RfXyBmb3IgZCBpbiBjbHMuX19tcm9fXyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2dldF9wcm90b2NvbF9hdHRycyhzZWxmKToKKyAgICAgICAgIyBHZXQgYWxsIFByb3RvY29sIGJhc2UgY2xhc3Nlcy4KKyAgICAgICAgcHJvdG9jb2xfYmFzZXMgPSBbXQorICAgICAgICBmb3IgYyBpbiBzZWxmLl9fbXJvX186CisgICAgICAgICAgICBpZiBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkgYW5kIGMuX19uYW1lX18gIT0gJ19Qcm90b2NvbCc6CisgICAgICAgICAgICAgICAgcHJvdG9jb2xfYmFzZXMuYXBwZW5kKGMpCisKKyAgICAgICAgIyBHZXQgYXR0cmlidXRlcyBpbmNsdWRlZCBpbiBwcm90b2NvbC4KKyAgICAgICAgYXR0cnMgPSBzZXQoKQorICAgICAgICBmb3IgYmFzZSBpbiBwcm90b2NvbF9iYXNlczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGJhc2UuX19kaWN0X18ua2V5cygpOgorICAgICAgICAgICAgICAgICMgSW5jbHVkZSBhdHRyaWJ1dGVzIG5vdCBkZWZpbmVkIGluIGFueSBub24tcHJvdG9jb2wgYmFzZXMuCisgICAgICAgICAgICAgICAgZm9yIGMgaW4gc2VsZi5fX21yb19fOgorICAgICAgICAgICAgICAgICAgICBpZiAoYyBpcyBub3QgYmFzZSBhbmQgYXR0ciBpbiBjLl9fZGljdF9fIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAobm90IGF0dHIuc3RhcnRzd2l0aCgnX2FiY18nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fYWJzdHJhY3RtZXRob2RzX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX2lzX3Byb3RvY29sJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fZGljdF9fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19nZXRfcHJvdG9jb2xfYXR0cnMnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19wYXJhbWV0ZXJzX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19vcmlnaW5fXycgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICE9ICdfX21vZHVsZV9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5hZGQoYXR0cikKKworICAgICAgICByZXR1cm4gYXR0cnMKKworCitjbGFzcyBfUHJvdG9jb2wobWV0YWNsYXNzPV9Qcm90b2NvbE1ldGEpOgorICAgICIiIkludGVybmFsIGJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGNsYXNzZXMuCisKKyAgICBUaGlzIGltcGxlbWVudHMgYSBzaW1wbGUtbWluZGVkIHN0cnVjdHVyYWwgaXNpbnN0YW5jZSBjaGVjaworICAgIChzaW1pbGFyIGJ1dCBtb3JlIGdlbmVyYWwgdGhhbiB0aGUgb25lLW9mZnMgaW4gY29sbGVjdGlvbnMuYWJjCisgICAgc3VjaCBhcyBIYXNoYWJsZSkuCisgICAgIiIiCisKKyAgICBfaXNfcHJvdG9jb2wgPSBUcnVlCisKKworIyBWYXJpb3VzIEFCQ3MgbWltaWNraW5nIHRob3NlIGluIGNvbGxlY3Rpb25zLmFiYy4KKyMgQSBmZXcgYXJlIHNpbXBseSByZS1leHBvcnRlZCBmb3IgY29tcGxldGVuZXNzLgorCitIYXNoYWJsZSA9IGNvbGxlY3Rpb25zX2FiYy5IYXNoYWJsZSAgIyBOb3QgZ2VuZXJpYy4KKworCitjbGFzcyBJdGVyYWJsZShHZW5lcmljW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuSXRlcmFibGUpOgorICAgIHBhc3MKKworCitjbGFzcyBJdGVyYXRvcihJdGVyYWJsZVtUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkl0ZXJhdG9yKToKKyAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNJbnQoX1Byb3RvY29sKToKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2ludF9fKHNlbGYpIC0+IGludDoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzRmxvYXQoX1Byb3RvY29sKToKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2Zsb2F0X18oc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c0NvbXBsZXgoX1Byb3RvY29sKToKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKSAtPiBjb21wbGV4OgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNCeXRlcyhfUHJvdG9jb2wpOgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKSAtPiBieXRlczoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzQWJzKF9Qcm90b2NvbFtUXSk6CisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19hYnNfXyhzZWxmKSAtPiBUOgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNSb3VuZChfUHJvdG9jb2xbVF0pOgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcm91bmRfXyhzZWxmLCBuZGlnaXRzOiBpbnQgPSAwKSAtPiBUOgorICAgICAgICBwYXNzCisKKworY2xhc3MgUmV2ZXJzaWJsZShfUHJvdG9jb2xbVF0pOgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKSAtPiAnSXRlcmF0b3JbVF0nOgorICAgICAgICBwYXNzCisKKworU2l6ZWQgPSBjb2xsZWN0aW9uc19hYmMuU2l6ZWQgICMgTm90IGdlbmVyaWMuCisKKworY2xhc3MgQ29udGFpbmVyKEdlbmVyaWNbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5Db250YWluZXIpOgorICAgIHBhc3MKKworCisjIENhbGxhYmxlIHdhcyBkZWZpbmVkIGVhcmxpZXIuCisKKworY2xhc3MgQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10sCisgICAgICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuU2V0KToKKyAgICBwYXNzCisKKworY2xhc3MgTXV0YWJsZVNldChBYnN0cmFjdFNldFtUXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk11dGFibGVTZXQpOgorICAgIHBhc3MKKworCitjbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF9jb10sIENvbnRhaW5lcltLVF9jb10sIEdlbmVyaWNbS1RfY28sIFZUX2NvXSwKKyAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk1hcHBpbmcpOgorICAgIHBhc3MKKworCitjbGFzcyBNdXRhYmxlTWFwcGluZyhNYXBwaW5nW0tULCBWVF0sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NdXRhYmxlTWFwcGluZyk6CisgICAgcGFzcworCisKK2NsYXNzIFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dLAorICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLlNlcXVlbmNlKToKKyAgICBwYXNzCisKKworY2xhc3MgTXV0YWJsZVNlcXVlbmNlKFNlcXVlbmNlW1RdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuTXV0YWJsZVNlcXVlbmNlKToKKyAgICBwYXNzCisKKworY2xhc3MgQnl0ZVN0cmluZyhTZXF1ZW5jZVtpbnRdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuQnl0ZVN0cmluZyk6CisgICAgcGFzcworCisKK0J5dGVTdHJpbmcucmVnaXN0ZXIodHlwZShtZW1vcnl2aWV3KGInJykpKQorCisKK2NsYXNzIF9MaXN0TWV0YShHZW5lcmljTWV0YSk6CisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgaWYgbm90IHN1cGVyKCkuX19pbnN0YW5jZWNoZWNrX18ob2JqKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpdGVtdHlwZSA9IHNlbGYuX19wYXJhbWV0ZXJzX19bMF0KKyAgICAgICAgZm9yIHggaW4gb2JqOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoeCwgaXRlbXR5cGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2NsYXNzIExpc3QobGlzdCwgTXV0YWJsZVNlcXVlbmNlW1RdLCBtZXRhY2xhc3M9X0xpc3RNZXRhKToKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgTGlzdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgTGlzdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBsaXN0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBsaXN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKK2NsYXNzIF9TZXRNZXRhKEdlbmVyaWNNZXRhKToKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICBpZiBub3Qgc3VwZXIoKS5fX2luc3RhbmNlY2hlY2tfXyhvYmopOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGl0ZW10eXBlID0gc2VsZi5fX3BhcmFtZXRlcnNfX1swXQorICAgICAgICBmb3IgeCBpbiBvYmo6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh4LCBpdGVtdHlwZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3MgU2V0KHNldCwgTXV0YWJsZVNldFtUXSwgbWV0YWNsYXNzPV9TZXRNZXRhKToKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgU2V0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBTZXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc2V0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBzZXQuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworY2xhc3MgX0Zyb3plblNldE1ldGEoX1NldE1ldGEpOgorICAgICIiIlRoaXMgbWV0YWNsYXNzIGVuc3VyZXMgc2V0IGlzIG5vdCBhIHN1YmNsYXNzIG9mIEZyb3plblNldC4KKworICAgIFdpdGhvdXQgdGhpcyBtZXRhY2xhc3MsIHNldCB3b3VsZCBiZSBjb25zaWRlcmVkIGEgc3ViY2xhc3Mgb2YKKyAgICBGcm96ZW5TZXQsIGJlY2F1c2UgRnJvemVuU2V0Ll9fZXh0cmFfXyBpcyBjb2xsZWN0aW9ucy5hYmMuU2V0LCBhbmQKKyAgICBzZXQgaXMgYSBzdWJjbGFzcyBvZiB0aGF0LgorICAgICIiIgorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBTZXQpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICBpZiBpc3N1YmNsYXNzKG9iai5fX2NsYXNzX18sIFNldCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19pbnN0YW5jZWNoZWNrX18ob2JqKQorCisKK2NsYXNzIEZyb3plblNldChmcm96ZW5zZXQsIEFic3RyYWN0U2V0W1RfY29dLCBtZXRhY2xhc3M9X0Zyb3plblNldE1ldGEpOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBGcm96ZW5TZXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIEZyb3plblNldCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBmcm96ZW5zZXQoKSBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIGZyb3plbnNldC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitjbGFzcyBNYXBwaW5nVmlldyhTaXplZCwgSXRlcmFibGVbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NYXBwaW5nVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIEtleXNWaWV3KE1hcHBpbmdWaWV3W0tUX2NvXSwgQWJzdHJhY3RTZXRbS1RfY29dLAorICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLktleXNWaWV3KToKKyAgICBwYXNzCisKKworIyBUT0RPOiBFbmFibGUgU2V0W1R1cGxlW0tUX2NvLCBWVF9jb11dIGluc3RlYWQgb2YgR2VuZXJpY1tLVF9jbywgVlRfY29dLgorY2xhc3MgSXRlbXNWaWV3KE1hcHBpbmdWaWV3LCBHZW5lcmljW0tUX2NvLCBWVF9jb10sCisgICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkl0ZW1zVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIFZhbHVlc1ZpZXcoTWFwcGluZ1ZpZXdbVlRfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuVmFsdWVzVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIF9EaWN0TWV0YShHZW5lcmljTWV0YSk6CisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgaWYgbm90IHN1cGVyKCkuX19pbnN0YW5jZWNoZWNrX18ob2JqKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBrZXl0eXBlLCB2YWx1ZXR5cGUgPSBzZWxmLl9fcGFyYW1ldGVyc19fCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG9iai5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGtleSwga2V5dHlwZSkgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UodmFsdWUsIHZhbHVldHlwZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2NsYXNzIERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSwgbWV0YWNsYXNzPV9EaWN0TWV0YSk6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIERpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIERpY3QgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZGljdCgpIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gZGljdC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCisjIERldGVybWluZSB3aGF0IGJhc2UgY2xhc3MgdG8gdXNlIGZvciBHZW5lcmF0b3IuCitpZiBoYXNhdHRyKGNvbGxlY3Rpb25zX2FiYywgJ0dlbmVyYXRvcicpOgorICAgICMgU3VmZmljaWVudGx5IHJlY2VudCB2ZXJzaW9ucyBvZiAzLjUgaGF2ZSBhIEdlbmVyYXRvciBBQkMuCisgICAgX0dfYmFzZSA9IGNvbGxlY3Rpb25zX2FiYy5HZW5lcmF0b3IKK2Vsc2U6CisgICAgIyBGYWxsIGJhY2sgb24gdGhlIGV4YWN0IHR5cGUuCisgICAgX0dfYmFzZSA9IHR5cGVzLkdlbmVyYXRvclR5cGUKKworCitjbGFzcyBHZW5lcmF0b3IoSXRlcmF0b3JbVF9jb10sIEdlbmVyaWNbVF9jbywgVF9jb250cmEsIFZfY29dLAorICAgICAgICAgICAgICAgIGV4dHJhPV9HX2Jhc2UpOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBHZW5lcmF0b3IpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIEdlbmVyYXRvciBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyZWF0ZSBhIHN1YmNsYXNzIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitkZWYgTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKToKKyAgICAiIiJUeXBlZCB2ZXJzaW9uIG9mIG5hbWVkdHVwbGUuCisKKyAgICBVc2FnZTo6CisKKyAgICAgICAgRW1wbG95ZWUgPSB0eXBpbmcuTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgJ2lkJywgaW50KV0pCisKKyAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgorCisgICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKKworICAgIFRoZSByZXN1bHRpbmcgY2xhc3MgaGFzIG9uZSBleHRyYSBhdHRyaWJ1dGU6IF9maWVsZF90eXBlcywKKyAgICBnaXZpbmcgYSBkaWN0IG1hcHBpbmcgZmllbGQgbmFtZXMgdG8gdHlwZXMuICAoVGhlIGZpZWxkIG5hbWVzCisgICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgIEFQSS4pCisgICAgIiIiCisgICAgZmllbGRzID0gWyhuLCB0KSBmb3IgbiwgdCBpbiBmaWVsZHNdCisgICAgY2xzID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSh0eXBlbmFtZSwgW24gZm9yIG4sIHQgaW4gZmllbGRzXSkKKyAgICBjbHMuX2ZpZWxkX3R5cGVzID0gZGljdChmaWVsZHMpCisgICAgcmV0dXJuIGNscworCisKK2NsYXNzIElPKEdlbmVyaWNbQW55U3RyXSk6CisgICAgIiIiR2VuZXJpYyBiYXNlIGNsYXNzIGZvciBUZXh0SU8gYW5kIEJpbmFyeUlPLgorCisgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCwgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSByZXR1cm4gb2Ygb3BlbigpLgorCisgICAgTk9URTogVGhpcyBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcG9zc2libGUKKyAgICBjbGFzc2VzICh0ZXh0IHZzLiBiaW5hcnksIHJlYWQgdnMuIHdyaXRlIHZzLiByZWFkL3dyaXRlLAorICAgIGFwcGVuZC1vbmx5LCB1bmJ1ZmZlcmVkKS4gIFRoZSBUZXh0SU8gYW5kIEJpbmFyeUlPIHN1YmNsYXNzZXMKKyAgICBiZWxvdyBjYXB0dXJlIHRoZSBkaXN0aW5jdGlvbnMgYmV0d2VlbiB0ZXh0IHZzLiBiaW5hcnksIHdoaWNoIGlzCisgICAgcGVydmFzaXZlIGluIHRoZSBpbnRlcmZhY2U7IGhvd2V2ZXIgd2UgY3VycmVudGx5IGRvIG5vdCBvZmZlciBhCisgICAgd2F5IHRvIHRyYWNrIHRoZSBvdGhlciBkaXN0aW5jdGlvbnMgaW4gdGhlIHR5cGUgc3lzdGVtLgorICAgICIiIgorCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbW9kZShzZWxmKSAtPiBzdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZikgLT4gc3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgY2xvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGNsb3NlZChzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmlsZW5vKHNlbGYpIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZsdXNoKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBpc2F0dHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWQoc2VsZiwgbjogaW50ID0gLTEpIC0+IEFueVN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdDogaW50ID0gLTEpIC0+IEFueVN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBoaW50OiBpbnQgPSAtMSkgLT4gTGlzdFtBbnlTdHJdOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQ6IGludCwgd2hlbmNlOiBpbnQgPSAwKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBzZWVrYWJsZShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGVsbChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplOiBpbnQgPSBOb25lKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0YWJsZShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgd3JpdGUoc2VsZiwgczogQW55U3RyKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIGxpbmVzOiBMaXN0W0FueVN0cl0pIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2VudGVyX18oc2VsZikgLT4gJ0lPW0FueVN0cl0nOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjaykgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEJpbmFyeUlPKElPW2J5dGVzXSk6CisgICAgIiIiVHlwZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKSBpbiBiaW5hcnkgbW9kZS4iIiIKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0ZShzZWxmLCBzOiBVbmlvbltieXRlcywgYnl0ZWFycmF5XSkgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdCaW5hcnlJTyc6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBUZXh0SU8oSU9bc3RyXSk6CisgICAgIiIiVHlwZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKSBpbiB0ZXh0IG1vZGUuIiIiCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBidWZmZXIoc2VsZikgLT4gQmluYXJ5SU86CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGVuY29kaW5nKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgZXJyb3JzKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbGluZV9idWZmZXJpbmcoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbmV3bGluZXMoc2VsZikgLT4gQW55OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdUZXh0SU8nOgorICAgICAgICBwYXNzCisKKworY2xhc3MgaW86CisgICAgIiIiV3JhcHBlciBuYW1lc3BhY2UgZm9yIElPIGdlbmVyaWMgY2xhc3Nlcy4iIiIKKworICAgIF9fYWxsX18gPSBbJ0lPJywgJ1RleHRJTycsICdCaW5hcnlJTyddCisgICAgSU8gPSBJTworICAgIFRleHRJTyA9IFRleHRJTworICAgIEJpbmFyeUlPID0gQmluYXJ5SU8KKworaW8uX19uYW1lX18gPSBfX25hbWVfXyArICcuaW8nCitzeXMubW9kdWxlc1tpby5fX25hbWVfX10gPSBpbworCisKK1BhdHRlcm4gPSBfVHlwZUFsaWFzKCdQYXR0ZXJuJywgQW55U3RyLCB0eXBlKHN0ZGxpYl9yZS5jb21waWxlKCcnKSksCisgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgcDogcC5wYXR0ZXJuKQorTWF0Y2ggPSBfVHlwZUFsaWFzKCdNYXRjaCcsIEFueVN0ciwgdHlwZShzdGRsaWJfcmUubWF0Y2goJycsICcnKSksCisgICAgICAgICAgICAgICAgICAgbGFtYmRhIG06IG0ucmUucGF0dGVybikKKworCitjbGFzcyByZToKKyAgICAiIiJXcmFwcGVyIG5hbWVzcGFjZSBmb3IgcmUgdHlwZSBhbGlhc2VzLiIiIgorCisgICAgX19hbGxfXyA9IFsnUGF0dGVybicsICdNYXRjaCddCisgICAgUGF0dGVybiA9IFBhdHRlcm4KKyAgICBNYXRjaCA9IE1hdGNoCisKK3JlLl9fbmFtZV9fID0gX19uYW1lX18gKyAnLnJlJworc3lzLm1vZHVsZXNbcmUuX19uYW1lX19dID0gcmUKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9fX2luaXRfXy5weSBiL0xpYi91bml0dGVzdC9fX2luaXRfXy5weQppbmRleCBhNWQ1MGFmLi5mNmQ3YWUyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvX19pbml0X18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L19faW5pdF9fLnB5CkBAIC02NywzICs2NywxMiBAQAogCiAjIGRlcHJlY2F0ZWQKIF9UZXh0VGVzdFJlc3VsdCA9IFRleHRUZXN0UmVzdWx0CisKKyMgVGhlcmUgYXJlIG5vIHRlc3RzIGhlcmUsIHNvIGRvbid0IHRyeSB0byBydW4gYW55dGhpbmcgZGlzY292ZXJlZCBmcm9tCisjIGludHJvc3BlY3RpbmcgdGhlIHN5bWJvbHMgKGUuZy4gRnVuY3Rpb25UZXN0Q2FzZSkuIEluc3RlYWQsIGFsbCBvdXIKKyMgdGVzdHMgY29tZSBmcm9tIHdpdGhpbiB1bml0dGVzdC50ZXN0LgorZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgaW1wb3J0IG9zLnBhdGgKKyAgICAjIHRvcCBsZXZlbCBkaXJlY3RvcnkgY2FjaGVkIG9uIGxvYWRlciBpbnN0YW5jZQorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHJldHVybiBsb2FkZXIuZGlzY292ZXIoc3RhcnRfZGlyPXRoaXNfZGlyLCBwYXR0ZXJuPXBhdHRlcm4pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvY2FzZS5weSBiL0xpYi91bml0dGVzdC9jYXNlLnB5CmluZGV4IDY5ODg4YTUuLjc3MDFhZDMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC9jYXNlLnB5CkBAIC0xMTksNiArMTE5LDEwIEBACiAgICAgdGVzdF9pdGVtLl9fdW5pdHRlc3RfZXhwZWN0aW5nX2ZhaWx1cmVfXyA9IFRydWUKICAgICByZXR1cm4gdGVzdF9pdGVtCiAKK2RlZiBfaXNfc3VidHlwZShleHBlY3RlZCwgYmFzZXR5cGUpOgorICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHR1cGxlKToKKyAgICAgICAgcmV0dXJuIGFsbChfaXNfc3VidHlwZShlLCBiYXNldHlwZSkgZm9yIGUgaW4gZXhwZWN0ZWQpCisgICAgcmV0dXJuIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKGV4cGVjdGVkLCBiYXNldHlwZSkKIAogY2xhc3MgX0Jhc2VUZXN0Q2FzZUNvbnRleHQ6CiAKQEAgLTEyOSwzNSArMTMzLDQ1IEBACiAgICAgICAgIG1zZyA9IHNlbGYudGVzdF9jYXNlLl9mb3JtYXRNZXNzYWdlKHNlbGYubXNnLCBzdGFuZGFyZE1zZykKICAgICAgICAgcmFpc2Ugc2VsZi50ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCiAKLQogY2xhc3MgX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KF9CYXNlVGVzdENhc2VDb250ZXh0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgdGVzdF9jYXNlLCBjYWxsYWJsZV9vYmo9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgogICAgICAgICBfQmFzZVRlc3RDYXNlQ29udGV4dC5fX2luaXRfXyhzZWxmLCB0ZXN0X2Nhc2UpCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAogICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXwotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBzdHIoY2FsbGFibGVfb2JqKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IE5vbmUKICAgICAgICAgaWYgZXhwZWN0ZWRfcmVnZXggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCA9IHJlLmNvbXBpbGUoZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcmVnZXggPSBleHBlY3RlZF9yZWdleAorICAgICAgICBzZWxmLm9ial9uYW1lID0gTm9uZQogICAgICAgICBzZWxmLm1zZyA9IE5vbmUKIAotICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpOgorICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgYXJncywga3dhcmdzKToKICAgICAgICAgIiIiCi0gICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBOb25lLCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCisgICAgICAgIElmIGFyZ3MgaXMgZW1wdHksIGFzc2VydFJhaXNlcy9XYXJucyBpcyBiZWluZyB1c2VkIGFzIGEKICAgICAgICAgY29udGV4dCBtYW5hZ2VyLCBzbyBjaGVjayBmb3IgYSAnbXNnJyBrd2FyZyBhbmQgcmV0dXJuIHNlbGYuCi0gICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBub3QgTm9uZSwgY2FsbCBpdCBwYXNzaW5nIGFyZ3MgYW5kIGt3YXJncy4KKyAgICAgICAgSWYgYXJncyBpcyBub3QgZW1wdHksIGNhbGwgYSBjYWxsYWJsZSBwYXNzaW5nIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKKyAgICAgICAgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6CisgICAgICAgIGlmIG5vdCBfaXNfc3VidHlwZShzZWxmLmV4cGVjdGVkLCBzZWxmLl9iYXNlX3R5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIGFyZyAxIG11c3QgYmUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgc2VsZi5fYmFzZV90eXBlX3N0cikpCisgICAgICAgIGlmIGFyZ3MgYW5kIGFyZ3NbMF0gaXMgTm9uZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImNhbGxhYmxlIGlzIE5vbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgICAgICBhcmdzID0gKCkKKyAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICBzZWxmLm1zZyA9IGt3YXJncy5wb3AoJ21zZycsIE5vbmUpCisgICAgICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBmdW5jdGlvbicgJSBuZXh0KGl0ZXIoa3dhcmdzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCiAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNhbGxhYmxlX29iaiwgKmFyZ3MgPSBhcmdzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IHN0cihjYWxsYWJsZV9vYmopCiAgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCiAKQEAgLTE2NSw2ICsxNzksOSBAQAogY2xhc3MgX0Fzc2VydFJhaXNlc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKICAgICAiIiJBIGNvbnRleHQgbWFuYWdlciB1c2VkIHRvIGltcGxlbWVudCBUZXN0Q2FzZS5hc3NlcnRSYWlzZXMqIG1ldGhvZHMuIiIiCiAKKyAgICBfYmFzZV90eXBlID0gQmFzZUV4Y2VwdGlvbgorICAgIF9iYXNlX3R5cGVfc3RyID0gJ2FuIGV4Y2VwdGlvbiB0eXBlIG9yIHR1cGxlIG9mIGV4Y2VwdGlvbiB0eXBlcycKKwogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTE5OSw2ICsyMTYsOSBAQAogY2xhc3MgX0Fzc2VydFdhcm5zQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgogICAgICIiIkEgY29udGV4dCBtYW5hZ2VyIHVzZWQgdG8gaW1wbGVtZW50IFRlc3RDYXNlLmFzc2VydFdhcm5zKiBtZXRob2RzLiIiIgogCisgICAgX2Jhc2VfdHlwZSA9IFdhcm5pbmcKKyAgICBfYmFzZV90eXBlX3N0ciA9ICdhIHdhcm5pbmcgdHlwZSBvciB0dXBsZSBvZiB3YXJuaW5nIHR5cGVzJworCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgIyBUaGUgX193YXJuaW5ncmVnaXN0cnlfXydzIG5lZWQgdG8gYmUgaW4gYSBwcmlzdGluZSBzdGF0ZSBmb3IgdGVzdHMKICAgICAgICAgIyB0byB3b3JrIHByb3Blcmx5LgpAQCAtNjc0LDE1ICs2OTQsMTUgQEAKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAgJyVzIDogJXMnICUgKHNhZmVfcmVwcihzdGFuZGFyZE1zZyksIHNhZmVfcmVwcihtc2cpKQogCi0gICAgZGVmIGFzc2VydFJhaXNlcyhzZWxmLCBleGNDbGFzcywgY2FsbGFibGVPYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIiIiRmFpbCB1bmxlc3MgYW4gZXhjZXB0aW9uIG9mIGNsYXNzIGV4Y0NsYXNzIGlzIHJhaXNlZAotICAgICAgICAgICBieSBjYWxsYWJsZU9iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAotICAgICAgICAgICBhcmd1bWVudHMga3dhcmdzLiBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIGV4Y2VwdGlvbiBpcworICAgIGRlZiBhc3NlcnRSYWlzZXMoc2VsZiwgZXhwZWN0ZWRfZXhjZXB0aW9uLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhwZWN0ZWRfZXhjZXB0aW9uIGlzIHJhaXNlZAorICAgICAgICAgICBieSB0aGUgY2FsbGFibGUgd2hlbiBpbnZva2VkIHdpdGggc3BlY2lmaWVkIHBvc2l0aW9uYWwgYW5kCisgICAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLiBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIGV4Y2VwdGlvbiBpcwogICAgICAgICAgICByYWlzZWQsIGl0IHdpbGwgbm90IGJlIGNhdWdodCwgYW5kIHRoZSB0ZXN0IGNhc2Ugd2lsbCBiZQogICAgICAgICAgICBkZWVtZWQgdG8gaGF2ZSBzdWZmZXJlZCBhbiBlcnJvciwgZXhhY3RseSBhcyBmb3IgYW4KICAgICAgICAgICAgdW5leHBlY3RlZCBleGNlcHRpb24uCiAKLSAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVPYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCisgICAgICAgICAgIElmIGNhbGxlZCB3aXRoIHRoZSBjYWxsYWJsZSBhbmQgYXJndW1lbnRzIG9taXR0ZWQsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKQEAgLTcwMCwxOCArNzIwLDE4IEBACiAgICAgICAgICAgICAgICB0aGVfZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9leGNlcHRpb24uZXJyb3JfY29kZSwgMykKICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleGNDbGFzcywgc2VsZiwgY2FsbGFibGVPYmopCi0gICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgY2FsbGFibGVPYmosIGFyZ3MsIGt3YXJncykKKyAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZikKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXMnLCBhcmdzLCBrd2FyZ3MpCiAKLSAgICBkZWYgYXNzZXJ0V2FybnMoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGFzc2VydFdhcm5zKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGEgd2FybmluZyBvZiBjbGFzcyB3YXJuQ2xhc3MgaXMgdHJpZ2dlcmVkCi0gICAgICAgICAgIGJ5IGNhbGxhYmxlX29iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAotICAgICAgICAgICBhcmd1bWVudHMga3dhcmdzLiAgSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiB3YXJuaW5nIGlzCisgICAgICAgICAgIGJ5IHRoZSBjYWxsYWJsZSB3aGVuIGludm9rZWQgd2l0aCBzcGVjaWZpZWQgcG9zaXRpb25hbCBhbmQKKyAgICAgICAgICAga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKICAgICAgICAgICAgdHJpZ2dlcmVkLCBpdCB3aWxsIG5vdCBiZSBoYW5kbGVkOiBkZXBlbmRpbmcgb24gdGhlIG90aGVyCiAgICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICAgb3V0LCBvciByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlX29iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKKyAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggdGhlIGNhbGxhYmxlIGFuZCBhcmd1bWVudHMgb21pdHRlZCwgd2lsbCByZXR1cm4gYQogICAgICAgICAgICBjb250ZXh0IG9iamVjdCB1c2VkIGxpa2UgdGhpczo6CiAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoU29tZVdhcm5pbmcpOgpAQCAtNzMxLDggKzc1MSw4IEBACiAgICAgICAgICAgICAgICB0aGVfd2FybmluZyA9IGNtLndhcm5pbmcKICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX3dhcm5pbmcuc29tZV9hdHRyaWJ1dGUsIDE0NykKICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaikKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zJywgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydExvZ3Moc2VsZiwgbG9nZ2VyPU5vbmUsIGxldmVsPU5vbmUpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhIGxvZyBtZXNzYWdlIG9mIGxldmVsICpsZXZlbCogb3IgaGlnaGVyIGlzIGVtaXR0ZWQKQEAgLTEyMTksMjYgKzEyMzksMjMgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQogCiAgICAgZGVmIGFzc2VydFJhaXNlc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZXhwZWN0ZWRfcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIG1lc3NhZ2UgaW4gYSByYWlzZWQgZXhjZXB0aW9uIG1hdGNoZXMgYSByZWdleC4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgZXhwZWN0ZWRfZXhjZXB0aW9uOiBFeGNlcHRpb24gY2xhc3MgZXhwZWN0ZWQgdG8gYmUgcmFpc2VkLgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIGFyZ3M6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhbmQgZXh0cmEgcG9zaXRpb25hbCBhcmdzLgorICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgotICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KLSAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgY2FsbGFibGVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0KLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmLCBleHBlY3RlZF9yZWdleCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXNSZWdleCcsIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJuc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGV4cGVjdGVkX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkFzc2VydHMgdGhhdCB0aGUgbWVzc2FnZSBpbiBhIHRyaWdnZXJlZCB3YXJuaW5nIG1hdGNoZXMgYSByZWdleHAuCiAgICAgICAgIEJhc2ljIGZ1bmN0aW9uaW5nIGlzIHNpbWlsYXIgdG8gYXNzZXJ0V2FybnMoKSB3aXRoIHRoZSBhZGRpdGlvbgogICAgICAgICB0aGF0IG9ubHkgd2FybmluZ3Mgd2hvc2UgbWVzc2FnZXMgYWxzbyBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMjQ4LDE1ICsxMjY1LDEzIEBACiAgICAgICAgICAgICBleHBlY3RlZF93YXJuaW5nOiBXYXJuaW5nIGNsYXNzIGV4cGVjdGVkIHRvIGJlIHRyaWdnZXJlZC4KICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgotICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBhcmdzOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYW5kIGV4dHJhIHBvc2l0aW9uYWwgYXJncy4KKyAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIHdoZW4gYXNzZXJ0V2FybnNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgotICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KLSAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGV4cGVjdGVkX3JlZ2V4KQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zUmVnZXgnLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0UmVnZXgoc2VsZiwgdGV4dCwgZXhwZWN0ZWRfcmVnZXgsIG1zZz1Ob25lKToKICAgICAgICAgIiIiRmFpbCB0aGUgdGVzdCB1bmxlc3MgdGhlIHRleHQgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weSBiL0xpYi91bml0dGVzdC9sb2FkZXIucHkKaW5kZXggYWYzOTIxNi4uYzc3NmYxNiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHR5cGVzCiBpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgd2FybmluZ3MKIAogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTEzLDkgKzE0LDkgQEAKIAogX191bml0dGVzdCA9IFRydWUKIAotIyB3aGF0IGFib3V0IC5weWMgb3IgLnB5byAoZXRjKQorIyB3aGF0IGFib3V0IC5weWMgKGV0YykKICMgd2Ugd291bGQgbmVlZCB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHRlc3RzIG11bHRpcGxlIHRpbWVzCi0jIGZyb20gJy5weScsICcucHljJyAqYW5kKiAnLnB5bycKKyMgZnJvbSAnLnB5JywgKmFuZCogJy5weWMnCiBWQUxJRF9NT0RVTEVfTkFNRSA9IHJlLmNvbXBpbGUocidbX2Etel1cdypcLnB5JCcsIHJlLklHTk9SRUNBU0UpCiAKIApAQCAtMzUsMTUgKzM2LDE4IEBACiAKIAogZGVmIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzdWl0ZUNsYXNzKToKLSAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6ICVzXG4lcycgJSAobmFtZSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICByZXR1cm4gX21ha2VfZmFpbGVkX3Rlc3QobmFtZSwgSW1wb3J0RXJyb3IobWVzc2FnZSksIHN1aXRlQ2xhc3MpCisgICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiAlc1xuJXMnICUgKAorICAgICAgICBuYW1lLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdChuYW1lLCBJbXBvcnRFcnJvcihtZXNzYWdlKSwgc3VpdGVDbGFzcywgbWVzc2FnZSkKIAogZGVmIF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6Ci0gICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcykKKyAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBjYWxsIGxvYWRfdGVzdHM6XG4lcycgJSAodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwpCisgICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KAorICAgICAgICBuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MsIG1lc3NhZ2UpCiAKLWRlZiBfbWFrZV9mYWlsZWRfdGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgorZGVmIF9tYWtlX2ZhaWxlZF90ZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcywgbWVzc2FnZSk6CiAgICAgdGVzdCA9IF9GYWlsZWRUZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbikKLSAgICByZXR1cm4gc3VpdGVDbGFzcygodGVzdCwpKQorICAgIHJldHVybiBzdWl0ZUNsYXNzKCh0ZXN0LCkpLCBtZXNzYWdlCiAKIGRlZiBfbWFrZV9za2lwcGVkX3Rlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKICAgICBAY2FzZS5za2lwKHN0cihleGNlcHRpb24pKQpAQCAtNjksNiArNzMsMTMgQEAKICAgICBzdWl0ZUNsYXNzID0gc3VpdGUuVGVzdFN1aXRlCiAgICAgX3RvcF9sZXZlbF9kaXIgPSBOb25lCiAKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RMb2FkZXIsIHNlbGYpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBbXQorICAgICAgICAjIFRyYWNrcyBwYWNrYWdlcyB3aGljaCB3ZSBoYXZlIGNhbGxlZCBpbnRvIHZpYSBsb2FkX3Rlc3RzLCB0bworICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlLWVudHJhbmN5LgorICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzID0gc2V0KCkKKwogICAgIGRlZiBsb2FkVGVzdHNGcm9tVGVzdENhc2Uoc2VsZiwgdGVzdENhc2VDbGFzcyk6CiAgICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGVzdENhc2VDbGFzcyIiIgogICAgICAgICBpZiBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHN1aXRlLlRlc3RTdWl0ZSk6CkBAIC04MSw4ICs5MiwzMCBAQAogICAgICAgICBsb2FkZWRfc3VpdGUgPSBzZWxmLnN1aXRlQ2xhc3MobWFwKHRlc3RDYXNlQ2xhc3MsIHRlc3RDYXNlTmFtZXMpKQogICAgICAgICByZXR1cm4gbG9hZGVkX3N1aXRlCiAKLSAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShzZWxmLCBtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzPVRydWUpOgorICAgICMgWFhYIEFmdGVyIFB5dGhvbiAzLjUsIHJlbW92ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhhY2tzIGZvcgorICAgICMgdXNlX2xvYWRfdGVzdHMgZGVwcmVjYXRpb24gdmlhICphcmdzIGFuZCAqKmt3cy4gIFNlZSBpc3N1ZSAxNjY2Mi4KKyAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShzZWxmLCBtb2R1bGUsICphcmdzLCBwYXR0ZXJuPU5vbmUsICoqa3dzKToKICAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4gbW9kdWxlIiIiCisgICAgICAgICMgVGhpcyBtZXRob2QgdXNlZCB0byB0YWtlIGFuIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbAorICAgICAgICAjIHVzZV9sb2FkX3Rlc3RzIGFyZ3VtZW50LiAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlIHN0aWxsCisgICAgICAgICMgYWNjZXB0IHRoZSBhcmd1bWVudCAod2hpY2ggY2FuIGFsc28gYmUgdGhlIGZpcnN0IHBvc2l0aW9uKSBidXQgd2UKKyAgICAgICAgIyBpZ25vcmUgaXQgYW5kIGlzc3VlIGEgZGVwcmVjYXRpb24gd2FybmluZyBpZiBpdCdzIHByZXNlbnQuCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDAgb3IgJ3VzZV9sb2FkX3Rlc3RzJyBpbiBrd3M6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1c2VfbG9hZF90ZXN0cyBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAga3dzLnBvcCgndXNlX2xvYWRfdGVzdHMnLCBOb25lKQorICAgICAgICBpZiBsZW4oYXJncykgPiAxOgorICAgICAgICAgICAgIyBDb21wbGFpbiBhYm91dCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgYnV0IGRvbid0IGZvcmdldCB0aGUKKyAgICAgICAgICAgICMgcmVxdWlyZWQgYG1vZHVsZWAgYXJndW1lbnQuCisgICAgICAgICAgICBjb21wbGFpbnQgPSBsZW4oYXJncykgKyAxCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRUZXN0c0Zyb21Nb2R1bGUoKSB0YWtlcyAxIHBvc2l0aW9uYWwgYXJndW1lbnQgYnV0IHt9IHdlcmUgZ2l2ZW4nLmZvcm1hdChjb21wbGFpbnQpKQorICAgICAgICBpZiBsZW4oa3dzKSAhPSAwOgorICAgICAgICAgICAgIyBTaW5jZSB0aGUga2V5d29yZCBhcmd1bWVudHMgYXJlIHVuc29ydGVkIChzZWUgUEVQIDQ2OCksIGp1c3QKKyAgICAgICAgICAgICMgcGljayB0aGUgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGZpcnN0IGFyZ3VtZW50IHRvIGNvbXBsYWluIGFib3V0LAorICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSB3ZXJlIGdpdmVuLiAgQXQgbGVhc3QgdGhlIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZQorICAgICAgICAgICAgIyBwcmVkaWN0YWJsZS4KKyAgICAgICAgICAgIGNvbXBsYWludCA9IHNvcnRlZChrd3MpWzBdCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd7fSciLmZvcm1hdChjb21wbGFpbnQpKQogICAgICAgICB0ZXN0cyA9IFtdCiAgICAgICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGUpOgogICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihtb2R1bGUsIG5hbWUpCkBAIC05MSwxMiArMTI0LDE0IEBACiAKICAgICAgICAgbG9hZF90ZXN0cyA9IGdldGF0dHIobW9kdWxlLCAnbG9hZF90ZXN0cycsIE5vbmUpCiAgICAgICAgIHRlc3RzID0gc2VsZi5zdWl0ZUNsYXNzKHRlc3RzKQotICAgICAgICBpZiB1c2VfbG9hZF90ZXN0cyBhbmQgbG9hZF90ZXN0cyBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbG9hZF90ZXN0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF90ZXN0cyhzZWxmLCB0ZXN0cywgTm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF90ZXN0cyhzZWxmLCB0ZXN0cywgcGF0dGVybikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMobW9kdWxlLl9fbmFtZV9fLCBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKAorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18sIGUsIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZQogICAgICAgICByZXR1cm4gdGVzdHMKIAogICAgIGRlZiBsb2FkVGVzdHNGcm9tTmFtZShzZWxmLCBuYW1lLCBtb2R1bGU9Tm9uZSk6CkBAIC0xMDksMjAgKzE0NCw0NyBAQAogICAgICAgICBUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgdGhlIG5hbWVzIHJlbGF0aXZlIHRvIGEgZ2l2ZW4gbW9kdWxlLgogICAgICAgICAiIiIKICAgICAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKKyAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IE5vbmUsIE5vbmUKICAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJ0c19jb3B5ID0gcGFydHNbOl0KICAgICAgICAgICAgIHdoaWxlIHBhcnRzX2NvcHk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCcuJy5qb2luKHBhcnRzX2NvcHkpKQorICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9ICcuJy5qb2luKHBhcnRzX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxlX25hbWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgICAgICBkZWwgcGFydHNfY29weVstMV0KKyAgICAgICAgICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBwYXJ0c19jb3B5LnBvcCgpCisgICAgICAgICAgICAgICAgICAgICMgTGFzdCBlcnJvciBzbyB3ZSBjYW4gZ2l2ZSBpdCB0byB0aGUgdXNlciBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcGFydHNfY29weToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIEV2ZW4gdGhlIHRvcCBsZXZlbCBpbXBvcnQgZmFpbGVkOiByZXBvcnQgdGhhdCBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKICAgICAgICAgICAgIHBhcnRzID0gcGFydHNbMTpdCiAgICAgICAgIG9iaiA9IG1vZHVsZQogICAgICAgICBmb3IgcGFydCBpbiBwYXJ0czoKLSAgICAgICAgICAgIHBhcmVudCwgb2JqID0gb2JqLCBnZXRhdHRyKG9iaiwgcGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXJlbnQsIG9iaiA9IG9iaiwgZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIFdlIGNhbid0IHRyYXZlcnNlIHNvbWUgcGFydCBvZiB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICBpZiAoZ2V0YXR0cihvYmosICdfX3BhdGhfXycsIE5vbmUpIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgICAgIGFuZCBlcnJvcl9jYXNlIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgcGFja2FnZSAobm8gX19wYXRoX18gcGVyIGltcG9ydGxpYiBkb2NzKSwgYW5kIHdlCisgICAgICAgICAgICAgICAgICAgICMgZW5jb3VudGVyZWQgYW4gZXJyb3IgaW1wb3J0aW5nIHNvbWV0aGluZy4gV2UgY2Fubm90IHRlbGwKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBhY2thZ2UuV3JvbmdOYW1lVGVzdENsYXNzIGFuZAorICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2Uud3JvbmdfbW9kdWxlX25hbWUgc28gd2UganVzdCByZXBvcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgLSBpdCBpcyBtb3JlIGluZm9ybWF0aXZlLgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgd2Ugc2lnbmFsIHRoYXQgYW4gQXR0cmlidXRlRXJyb3IgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX3Rlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LCBlLCBzZWxmLnN1aXRlQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGFjY2VzcyBhdHRyaWJ1dGU6XG4lcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSwpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKIAogICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTW9kdWxlVHlwZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG9iaikKQEAgLTE4MSw5ICsyNDMsMTMgQEAKIAogICAgICAgICBJZiBhIHRlc3QgcGFja2FnZSBuYW1lIChkaXJlY3Rvcnkgd2l0aCAnX19pbml0X18ucHknKSBtYXRjaGVzIHRoZQogICAgICAgICBwYXR0ZXJuIHRoZW4gdGhlIHBhY2thZ2Ugd2lsbCBiZSBjaGVja2VkIGZvciBhICdsb2FkX3Rlc3RzJyBmdW5jdGlvbi4gSWYKLSAgICAgICAgdGhpcyBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGxvYWRlciwgdGVzdHMsIHBhdHRlcm4uCisgICAgICAgIHRoaXMgZXhpc3RzIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCAobG9hZGVyLCB0ZXN0cywgcGF0dGVybikgdW5sZXNzCisgICAgICAgIHRoZSBwYWNrYWdlIGhhcyBhbHJlYWR5IGhhZCBsb2FkX3Rlc3RzIGNhbGxlZCBmcm9tIHRoZSBzYW1lIGRpc2NvdmVyeQorICAgICAgICBpbnZvY2F0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSBwYWNrYWdlIG1vZHVsZSBvYmplY3QgaXMgbm90IHNjYW5uZWQgZm9yCisgICAgICAgIHRlc3RzIC0gdGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBhIHBhY2thZ2UgdXNlcyBkaXNjb3ZlciB0byBmdXJ0aGVyCisgICAgICAgIGRpc2NvdmVyIGNoaWxkIHRlc3RzIHRoYXQgaW5maW5pdGUgcmVjdXJzaW9uIGRvZXMgbm90IGhhcHBlbi4KIAotICAgICAgICBJZiBsb2FkX3Rlc3RzIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICAqbm90KiByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UsCisgICAgICAgIElmIGxvYWRfdGVzdHMgZXhpc3RzIHRoZW4gZGlzY292ZXJ5IGRvZXMgKm5vdCogcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlLAogICAgICAgICBsb2FkX3Rlc3RzIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUgcGFja2FnZS4KIAogICAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdApAQCAtMjg4LDYgKzM1NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKIAogICAgIGRlZiBfZ2V0X25hbWVfZnJvbV9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoID09IHNlbGYuX3RvcF9sZXZlbF9kaXI6CisgICAgICAgICAgICByZXR1cm4gJy4nCiAgICAgICAgIHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGgubm9ybXBhdGgocGF0aCkpCiAKICAgICAgICAgX3JlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgc2VsZi5fdG9wX2xldmVsX2RpcikKQEAgLTMwNyw2MyArMzc1LDExMSBAQAogCiAgICAgZGVmIF9maW5kX3Rlc3RzKHNlbGYsIHN0YXJ0X2RpciwgcGF0dGVybiwgbmFtZXNwYWNlPUZhbHNlKToKICAgICAgICAgIiIiVXNlZCBieSBkaXNjb3ZlcnkuIFlpZWxkcyB0ZXN0IHN1aXRlcyBpdCBsb2Fkcy4iIiIKKyAgICAgICAgIyBIYW5kbGUgdGhlIF9faW5pdF9fIGluIHRoaXMgcGFja2FnZQorICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKHN0YXJ0X2RpcikKKyAgICAgICAgIyBuYW1lIGlzICcuJyB3aGVuIHN0YXJ0X2RpciA9PSB0b3BfbGV2ZWxfZGlyIChhbmQgdG9wX2xldmVsX2RpciBpcyBieQorICAgICAgICAjIGRlZmluaXRpb24gbm90IGEgcGFja2FnZSkuCisgICAgICAgIGlmIG5hbWUgIT0gJy4nIGFuZCBuYW1lIG5vdCBpbiBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzOgorICAgICAgICAgICAgIyBuYW1lIGlzIGluIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMgd2hpbGUgd2UgaGF2ZSBjYWxsZWQgaW50bworICAgICAgICAgICAgIyBsb2FkVGVzdHNGcm9tTW9kdWxlIHdpdGggbmFtZS4KKyAgICAgICAgICAgIHRlc3RzLCBzaG91bGRfcmVjdXJzZSA9IHNlbGYuX2ZpbmRfdGVzdF9wYXRoKAorICAgICAgICAgICAgICAgIHN0YXJ0X2RpciwgcGF0dGVybiwgbmFtZXNwYWNlKQorICAgICAgICAgICAgaWYgdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgeWllbGQgdGVzdHMKKyAgICAgICAgICAgIGlmIG5vdCBzaG91bGRfcmVjdXJzZToKKyAgICAgICAgICAgICAgICAjIEVpdGhlciBhbiBlcnJvciBvY2N1cmVkLCBvciBsb2FkX3Rlc3RzIHdhcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBIYW5kbGUgdGhlIGNvbnRlbnRzLgogICAgICAgICBwYXRocyA9IHNvcnRlZChvcy5saXN0ZGlyKHN0YXJ0X2RpcikpCi0KICAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLmpvaW4oc3RhcnRfZGlyLCBwYXRoKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICBpZiBub3QgVkFMSURfTU9EVUxFX05BTUUubWF0Y2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICMgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hfcGF0aChwYXRoLCBmdWxsX3BhdGgsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMgaWYgdGhlIHRlc3QgZmlsZSBtYXRjaGVzLCBsb2FkIGl0CisgICAgICAgICAgICB0ZXN0cywgc2hvdWxkX3JlY3Vyc2UgPSBzZWxmLl9maW5kX3Rlc3RfcGF0aCgKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGgsIHBhdHRlcm4sIG5hbWVzcGFjZSkKKyAgICAgICAgICAgIGlmIHRlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCisgICAgICAgICAgICBpZiBzaG91bGRfcmVjdXJzZToKKyAgICAgICAgICAgICAgICAjIHdlIGZvdW5kIGEgcGFja2FnZSB0aGF0IGRpZG4ndCB1c2UgbG9hZF90ZXN0cy4KICAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmFkZChuYW1lKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHNlbGYuc3VpdGVDbGFzcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtb2RfZmlsZSA9IG9zLnBhdGguYWJzcGF0aChnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgZnVsbF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVhbHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGgucmVhbHBhdGgobW9kX2ZpbGUpKQotICAgICAgICAgICAgICAgICAgICBmdWxscGF0aF9ub2V4dCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5yZWFscGF0aChmdWxsX3BhdGgpKQotICAgICAgICAgICAgICAgICAgICBpZiByZWFscGF0aC5sb3dlcigpICE9IGZ1bGxwYXRoX25vZXh0Lmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlYWxwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kX25hbWUgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2RpciA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAoIiVyIG1vZHVsZSBpbmNvcnJlY3RseSBpbXBvcnRlZCBmcm9tICVyLiBFeHBlY3RlZCAlci4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJcyB0aGlzIG1vZHVsZSBnbG9iYWxseSBpbnN0YWxsZWQ/IikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZyAlIChtb2RfbmFtZSwgbW9kdWxlX2RpciwgZXhwZWN0ZWRfZGlyKSkKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgIGlmIChub3QgbmFtZXNwYWNlIGFuZAotICAgICAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZ1bGxfcGF0aCwgJ19faW5pdF9fLnB5JykpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9maW5kX3Rlc3RzKGZ1bGxfcGF0aCwgcGF0dGVybiwgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuZGlzY2FyZChuYW1lKQogCi0gICAgICAgICAgICAgICAgbG9hZF90ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgICAgICB0ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBmbm1hdGNoKHBhdGgsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgICAgICAjIG9ubHkgY2hlY2sgbG9hZF90ZXN0cyBpZiB0aGUgcGFja2FnZSBkaXJlY3RvcnkgaXRzZWxmIG1hdGNoZXMgdGhlIGZpbHRlcgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKHBhY2thZ2UsICdsb2FkX3Rlc3RzJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCisgICAgZGVmIF9maW5kX3Rlc3RfcGF0aChzZWxmLCBmdWxsX3BhdGgsIHBhdHRlcm4sIG5hbWVzcGFjZT1GYWxzZSk6CisgICAgICAgICIiIlVzZWQgYnkgZGlzY292ZXJ5LgogCi0gICAgICAgICAgICAgICAgaWYgbG9hZF90ZXN0cyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdHMgbG9hZGVkIGZyb20gcGFja2FnZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0cwotICAgICAgICAgICAgICAgICAgICAjIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2ZpbmRfdGVzdHMoZnVsbF9wYXRoLCBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlPW5hbWVzcGFjZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBsb2FkX3Rlc3RzKHNlbGYsIHRlc3RzLCBwYXR0ZXJuKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cyhwYWNrYWdlLl9fbmFtZV9fLCBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICBMb2FkcyB0ZXN0cyBmcm9tIGEgc2luZ2xlIGZpbGUsIG9yIGEgZGlyZWN0b3JpZXMnIF9faW5pdF9fLnB5IHdoZW4KKyAgICAgICAgcGFzc2VkIHRoZSBkaXJlY3RvcnkuCisKKyAgICAgICAgUmV0dXJucyBhIHR1cGxlIChOb25lX29yX3Rlc3RzX2Zyb21fZmlsZSwgc2hvdWxkX3JlY3Vyc2UpLgorICAgICAgICAiIiIKKyAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxfcGF0aCkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgIGlmIG5vdCBWQUxJRF9NT0RVTEVfTkFNRS5tYXRjaChiYXNlbmFtZSk6CisgICAgICAgICAgICAgICAgIyB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMgb25seQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX21hdGNoX3BhdGgoYmFzZW5hbWUsIGZ1bGxfcGF0aCwgcGF0dGVybik6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIEZhbHNlCisgICAgICAgICAgICAjIGlmIHRoZSB0ZXN0IGZpbGUgbWF0Y2hlcywgbG9hZCBpdAorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBjYXNlLlNraXBUZXN0IGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9tYWtlX3NraXBwZWRfdGVzdChuYW1lLCBlLCBzZWxmLnN1aXRlQ2xhc3MpLCBGYWxzZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBcCisgICAgICAgICAgICAgICAgICAgIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UsIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZF9maWxlID0gb3MucGF0aC5hYnNwYXRoKAorICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgZnVsbF9wYXRoKSkKKyAgICAgICAgICAgICAgICByZWFscGF0aCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgobW9kX2ZpbGUpKQorICAgICAgICAgICAgICAgIGZ1bGxwYXRoX25vZXh0ID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5yZWFscGF0aChmdWxsX3BhdGgpKQorICAgICAgICAgICAgICAgIGlmIHJlYWxwYXRoLmxvd2VyKCkgIT0gZnVsbHBhdGhfbm9leHQubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguZGlybmFtZShyZWFscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgbW9kX25hbWUgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgICAgICBtc2cgPSAoIiVyIG1vZHVsZSBpbmNvcnJlY3RseSBpbXBvcnRlZCBmcm9tICVyLiBFeHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIuIElzIHRoaXMgbW9kdWxlIGdsb2JhbGx5IGluc3RhbGxlZD8iKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyAlIChtb2RfbmFtZSwgbW9kdWxlX2RpciwgZXhwZWN0ZWRfZGlyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKSwgRmFsc2UKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICBpZiAobm90IG5hbWVzcGFjZSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZ1bGxfcGF0aCwgJ19faW5pdF9fLnB5JykpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgRmFsc2UKKworICAgICAgICAgICAgbG9hZF90ZXN0cyA9IE5vbmUKKyAgICAgICAgICAgIHRlc3RzID0gTm9uZQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFja2FnZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgorICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKSwgRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gXAorICAgICAgICAgICAgICAgICAgICBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlLCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2FkX3Rlc3RzID0gZ2V0YXR0cihwYWNrYWdlLCAnbG9hZF90ZXN0cycsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBNYXJrIHRoaXMgcGFja2FnZSBhcyBiZWluZyBpbiBsb2FkX3Rlc3RzIChwb3NzaWJseSA7KSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmFkZChuYW1lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgICAgICAgICBpZiBsb2FkX3Rlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBsb2FkVGVzdHNGcm9tTW9kdWxlKHBhY2thZ2UpIGhhcyBsb2FkZWQgdGVzdHMgZm9yIHVzLgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RzLCBGYWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdHMsIFRydWUKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmRpc2NhcmQobmFtZSkKKwogCiBkZWZhdWx0VGVzdExvYWRlciA9IFRlc3RMb2FkZXIoKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbWFpbi5weSBiL0xpYi91bml0dGVzdC9tYWluLnB5CmluZGV4IDE4MGRmODYuLmIyMDlhM2EgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tYWluLnB5CisrKyBiL0xpYi91bml0dGVzdC9tYWluLnB5CkBAIC01OCw3ICs1OCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZT0nX19tYWluX18nLCBkZWZhdWx0VGVzdD1Ob25lLCBhcmd2PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXI9Tm9uZSwgdGVzdExvYWRlcj1sb2FkZXIuZGVmYXVsdFRlc3RMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgIGV4aXQ9VHJ1ZSwgdmVyYm9zaXR5PTEsIGZhaWxmYXN0PU5vbmUsIGNhdGNoYnJlYWs9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyPU5vbmUsIHdhcm5pbmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBidWZmZXI9Tm9uZSwgd2FybmluZ3M9Tm9uZSwgKiwgdGJfbG9jYWxzPUZhbHNlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIHN0cik6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxlKQogICAgICAgICAgICAgZm9yIHBhcnQgaW4gbW9kdWxlLnNwbGl0KCcuJylbMTpdOgpAQCAtNzMsOCArNzMsOSBAQAogICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBjYXRjaGJyZWFrCiAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CiAgICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gdGJfbG9jYWxzCiAgICAgICAgIGlmIHdhcm5pbmdzIGlzIE5vbmUgYW5kIG5vdCBzeXMud2Fybm9wdGlvbnM6Ci0gICAgICAgICAgICAjIGV2ZW4gaWYgRHJlcHJlY2F0aW9uV2FybmluZ3MgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdAorICAgICAgICAgICAgIyBldmVuIGlmIERlcHJlY2F0aW9uV2FybmluZ3MgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdAogICAgICAgICAgICAgIyBwcmludCB0aGVtIGFueXdheSB1bmxlc3Mgb3RoZXIgd2FybmluZ3Mgc2V0dGluZ3MgYXJlCiAgICAgICAgICAgICAjIHNwZWNpZmllZCBieSB0aGUgd2FybmluZ3MgYXJnIG9yIHRoZSAtVyBweXRob24gZmxhZwogICAgICAgICAgICAgc2VsZi53YXJuaW5ncyA9ICdkZWZhdWx0JwpAQCAtMTU5LDcgKzE2MCw5IEBACiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBkZXN0PSd2ZXJib3NpdHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1F1aWV0IG91dHB1dCcpCi0KKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1sb2NhbHMnLCBkZXN0PSd0Yl9sb2NhbHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4gdHJhY2ViYWNrcycpCiAgICAgICAgIGlmIHNlbGYuZmFpbGZhc3QgaXMgTm9uZToKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmFpbGZhc3QnLCBkZXN0PSdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCkBAIC0yMzEsMTAgKzIzNCwxOCBAQAogICAgICAgICAgICAgc2VsZi50ZXN0UnVubmVyID0gcnVubmVyLlRleHRUZXN0UnVubmVyCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi50ZXN0UnVubmVyLCB0eXBlKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKHZlcmJvc2l0eT1zZWxmLnZlcmJvc2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PXNlbGYuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncz1zZWxmLndhcm5pbmdzKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yl9sb2NhbHM9c2VsZi50Yl9sb2NhbHMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgYWNjZXB0IHRoZSB0Yl9sb2NhbHMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncykKICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgYWNjZXB0IHRoZSB2ZXJib3NpdHksIGJ1ZmZlciBvciBmYWlsZmFzdCBhcmd1bWVudHMKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tb2NrLnB5IGIvTGliL3VuaXR0ZXN0L21vY2sucHkKaW5kZXggMWIxYzlmNC4uYzNhYjRlOCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L21vY2sucHkKQEAgLTI3LDkgKzI3LDEzIEBACiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHBwcmludAogaW1wb3J0IHN5cworaW1wb3J0IGJ1aWx0aW5zCitmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMsIHBhcnRpYWwKIAogCitfYnVpbHRpbnMgPSB7bmFtZSBmb3IgbmFtZSBpbiBkaXIoYnVpbHRpbnMpIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKX0KKwogQmFzZUV4Y2VwdGlvbnMgPSAoQmFzZUV4Y2VwdGlvbiwpCiBpZiAnamF2YScgaW4gc3lzLnBsYXRmb3JtOgogICAgICMganl0aG9uCkBAIC0yNzEsMTMgKzI3NSwxMSBAQAogICAgIHJldHVybiB2YWx1ZQogCiAKLV9hbGxvd2VkX25hbWVzID0gc2V0KAotICAgIFsKLSAgICAgICAgJ3JldHVybl92YWx1ZScsICdfbW9ja19yZXR1cm5fdmFsdWUnLCAnc2lkZV9lZmZlY3QnLAotICAgICAgICAnX21vY2tfc2lkZV9lZmZlY3QnLCAnX21vY2tfcGFyZW50JywgJ19tb2NrX25ld19wYXJlbnQnLAotICAgICAgICAnX21vY2tfbmFtZScsICdfbW9ja19uZXdfbmFtZScKLSAgICBdCi0pCitfYWxsb3dlZF9uYW1lcyA9IHsKKyAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCisgICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKKyAgICAnX21vY2tfbmFtZScsICdfbW9ja19uZXdfbmFtZScKK30KIAogCiBkZWYgX2RlbGVnYXRpbmdfcHJvcGVydHkobmFtZSk6CkBAIC0zNzUsNyArMzc3LDcgQEAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAgICAgICBzZWxmLCBzcGVjPU5vbmUsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwKICAgICAgICAgICAgIHBhcmVudD1Ob25lLCBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsCi0gICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsICoqa3dhcmdzCisgICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MKICAgICAgICAgKToKICAgICAgICAgaWYgX25ld19wYXJlbnQgaXMgTm9uZToKICAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gcGFyZW50CkBAIC00MDUsNiArNDA3LDcgQEAKICAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCiAKICAgICAgICAgX19kaWN0X19bJ21ldGhvZF9jYWxscyddID0gX0NhbGxMaXN0KCkKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3Vuc2FmZSddID0gdW5zYWZlCiAKICAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbW9jaygqKmt3YXJncykKQEAgLTU2MSwxMyArNTY0LDE2IEBACiAKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFtZSA9PSAnX21vY2tfbWV0aG9kcyc6CisgICAgICAgIGlmIG5hbWUgaW4geydfbW9ja19tZXRob2RzJywgJ19tb2NrX3Vuc2FmZSd9OgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgb3IgbmFtZSBpbiBfYWxsX21hZ2ljczoKICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSBuYW1lKQogICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGlmIG5vdCBzZWxmLl9tb2NrX3Vuc2FmZToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgoJ2Fzc2VydCcsICdhc3NyZXQnKSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKIAogICAgICAgICByZXN1bHQgPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lKQogICAgICAgICBpZiByZXN1bHQgaXMgX2RlbGV0ZWQ6CkBAIC03NTAsNiArNzU2LDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gX2NhbGwKIAorICAgIGRlZiBhc3NlcnRfbm90X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIG5ldmVyIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9jb3VudCAhPSAwOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIG5vdCBoYXZlIGJlZW4gY2FsbGVkLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KQEAgLTExNjYsNiArMTE4MCw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsb2NhbCA9IFRydWUKIAorICAgICAgICBpZiBuYW1lIGluIF9idWlsdGlucyBhbmQgaXNpbnN0YW5jZSh0YXJnZXQsIE1vZHVsZVR5cGUpOgorICAgICAgICAgICAgc2VsZi5jcmVhdGUgPSBUcnVlCisKICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBvcmlnaW5hbCBpcyBERUZBVUxUOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQpAQCAtMTY1Myw3ICsxNjcwLDcgQEAKICkKIAogbnVtZXJpY3MgPSAoCi0gICAgImFkZCBzdWIgbXVsIGRpdiBmbG9vcmRpdiBtb2QgbHNoaWZ0IHJzaGlmdCBhbmQgeG9yIG9yIHBvdyB0cnVlZGl2IgorICAgICJhZGQgc3ViIG11bCBtYXRtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93IHRydWVkaXYiCiApCiBpbnBsYWNlID0gJyAnLmpvaW4oJ2klcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCiByaWdodCA9ICcgJy5qb2luKCdyJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQpAQCAtMTY2MiwxMSArMTY3OSwxMiBAQAogIyAoYXMgdGhleSBhcmUgbWV0YWNsYXNzIG1ldGhvZHMpCiAjIF9fZGVsX18gaXMgbm90IHN1cHBvcnRlZCBhdCBhbGwgYXMgaXQgY2F1c2VzIHByb2JsZW1zIGlmIGl0IGV4aXN0cwogCi1fbm9uX2RlZmF1bHRzID0gc2V0KCdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4gWwotICAgICdnZXQnLCAnc2V0JywgJ2RlbGV0ZScsICdyZXZlcnNlZCcsICdtaXNzaW5nJywgJ3JlZHVjZScsICdyZWR1Y2VfZXgnLAotICAgICdnZXRpbml0YXJncycsICdnZXRuZXdhcmdzJywgJ2dldHN0YXRlJywgJ3NldHN0YXRlJywgJ2dldGZvcm1hdCcsCi0gICAgJ3NldGZvcm1hdCcsICdyZXByJywgJ2RpcicsICdzdWJjbGFzc2VzJywgJ2Zvcm1hdCcsCi1dKQorX25vbl9kZWZhdWx0cyA9IHsKKyAgICAnX19nZXRfXycsICdfX3NldF9fJywgJ19fZGVsZXRlX18nLCAnX19yZXZlcnNlZF9fJywgJ19fbWlzc2luZ19fJywKKyAgICAnX19yZWR1Y2VfXycsICdfX3JlZHVjZV9leF9fJywgJ19fZ2V0aW5pdGFyZ3NfXycsICdfX2dldG5ld2FyZ3NfXycsCisgICAgJ19fZ2V0c3RhdGVfXycsICdfX3NldHN0YXRlX18nLCAnX19nZXRmb3JtYXRfXycsICdfX3NldGZvcm1hdF9fJywKKyAgICAnX19yZXByX18nLCAnX19kaXJfXycsICdfX3N1YmNsYXNzZXNfXycsICdfX2Zvcm1hdF9fJywKK30KIAogCiBkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CkBAIC0xNjc3LDE5ICsxNjk1LDE5IEBACiAgICAgcmV0dXJuIG1ldGhvZAogCiAKLV9tYWdpY3MgPSBzZXQoCitfbWFnaWNzID0gewogICAgICdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4KICAgICAnICcuam9pbihbbWFnaWNfbWV0aG9kcywgbnVtZXJpY3MsIGlucGxhY2UsIHJpZ2h0XSkuc3BsaXQoKQotKQorfQogCiBfYWxsX21hZ2ljcyA9IF9tYWdpY3MgfCBfbm9uX2RlZmF1bHRzCiAKLV91bnN1cHBvcnRlZF9tYWdpY3MgPSBzZXQoWworX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHsKICAgICAnX19nZXRhdHRyX18nLCAnX19zZXRhdHRyX18nLAogICAgICdfX2luaXRfXycsICdfX25ld19fJywgJ19fcHJlcGFyZV9fJwogICAgICdfX2luc3RhbmNlY2hlY2tfXycsICdfX3N1YmNsYXNzY2hlY2tfXycsCiAgICAgJ19fZGVsX18nCi1dKQorfQogCiBfY2FsY3VsYXRlX3JldHVybl92YWx1ZSA9IHsKICAgICAnX19oYXNoX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9faGFzaF9fKHNlbGYpLApAQCAtMTg3OCw3ICsxODk2LDcgQEAKICAgICBmb3JtYXR0ZWRfYXJncyA9ICcnCiAgICAgYXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oW3JlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3NdKQogICAgIGt3YXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oWwotICAgICAgICAnJXM9JXInICUgKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpCisgICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gc29ydGVkKGt3YXJncy5pdGVtcygpKQogICAgIF0pCiAgICAgaWYgYXJnc19zdHJpbmc6CiAgICAgICAgIGZvcm1hdHRlZF9hcmdzID0gYXJnc19zdHJpbmcKQEAgLTIwMDAsMTAgKzIwMTgsNiBAQAogICAgICAgICByZXR1cm4gKG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncykgPT0gKHNlbGZfYXJncywgc2VsZl9rd2FyZ3MpCiAKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQotCi0KICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPScoKScpCkBAIC0yMDE5LDYgKzIwMzMsMTIgQEAKICAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9bmFtZSwgcGFyZW50PXNlbGYsIGZyb21fa2FsbD1GYWxzZSkKIAogCisgICAgZGVmIGNvdW50KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0YXR0cl9fKCdjb3VudCcpKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBpbmRleChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2dldGF0dHJfXygnaW5kZXgnKSgqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZyb21fa2FsbDoKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgb3IgJ2NhbGwnCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5IGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQppbmRleCA4ZTBhNjQzLi5hMThmMTFiIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICAgICAgc2VsZi51bmV4cGVjdGVkU3VjY2Vzc2VzID0gW10KICAgICAgICAgc2VsZi5zaG91bGRTdG9wID0gRmFsc2UKICAgICAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQorICAgICAgICBzZWxmLnRiX2xvY2FscyA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dCA9IHN5cy5zdGRvdXQKQEAgLTE3OSw5ICsxODAsMTEgQEAKICAgICAgICAgaWYgZXhjdHlwZSBpcyB0ZXN0LmZhaWx1cmVFeGNlcHRpb246CiAgICAgICAgICAgICAjIFNraXAgYXNzZXJ0KigpIHRyYWNlYmFjayBsZXZlbHMKICAgICAgICAgICAgIGxlbmd0aCA9IHNlbGYuX2NvdW50X3JlbGV2YW50X3RiX2xldmVscyh0YikKLSAgICAgICAgICAgIG1zZ0xpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZXhjdHlwZSwgdmFsdWUsIHRiLCBsZW5ndGgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2dMaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV4Y3R5cGUsIHZhbHVlLCB0YikKKyAgICAgICAgICAgIGxlbmd0aCA9IE5vbmUKKyAgICAgICAgdGJfZSA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICBleGN0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0PWxlbmd0aCwgY2FwdHVyZV9sb2NhbHM9c2VsZi50Yl9sb2NhbHMpCisgICAgICAgIG1zZ0xpbmVzID0gbGlzdCh0Yl9lLmZvcm1hdCgpKQogCiAgICAgICAgIGlmIHNlbGYuYnVmZmVyOgogICAgICAgICAgICAgb3V0cHV0ID0gc3lzLnN0ZG91dC5nZXR2YWx1ZSgpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5IGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQppbmRleCAyOGI4ODY1Li4yMTEyMjYyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKQEAgLTEyNiw3ICsxMjYsMTMgQEAKICAgICByZXN1bHRjbGFzcyA9IFRleHRUZXN0UmVzdWx0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtPU5vbmUsIGRlc2NyaXB0aW9ucz1UcnVlLCB2ZXJib3NpdHk9MSwKLSAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9RmFsc2UsIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGZhaWxmYXN0PUZhbHNlLCBidWZmZXI9RmFsc2UsIHJlc3VsdGNsYXNzPU5vbmUsIHdhcm5pbmdzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHRiX2xvY2Fscz1GYWxzZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhIFRleHRUZXN0UnVubmVyLgorCisgICAgICAgIFN1YmNsYXNzZXMgc2hvdWxkIGFjY2VwdCAqKmt3YXJncyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSBhcyB0aGUKKyAgICAgICAgaW50ZXJmYWNlIGNoYW5nZXMuCisgICAgICAgICIiIgogICAgICAgICBpZiBzdHJlYW0gaXMgTm9uZToKICAgICAgICAgICAgIHN0cmVhbSA9IHN5cy5zdGRlcnIKICAgICAgICAgc2VsZi5zdHJlYW0gPSBfV3JpdGVsbkRlY29yYXRvcihzdHJlYW0pCkBAIC0xMzQsNiArMTQwLDcgQEAKICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgc2VsZi5mYWlsZmFzdCA9IGZhaWxmYXN0CiAgICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gdGJfbG9jYWxzCiAgICAgICAgIHNlbGYud2FybmluZ3MgPSB3YXJuaW5ncwogICAgICAgICBpZiByZXN1bHRjbGFzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVzdWx0Y2xhc3MgPSByZXN1bHRjbGFzcwpAQCAtMTQ3LDYgKzE1NCw3IEBACiAgICAgICAgIHJlZ2lzdGVyUmVzdWx0KHJlc3VsdCkKICAgICAgICAgcmVzdWx0LmZhaWxmYXN0ID0gc2VsZi5mYWlsZmFzdAogICAgICAgICByZXN1bHQuYnVmZmVyID0gc2VsZi5idWZmZXIKKyAgICAgICAgcmVzdWx0LnRiX2xvY2FscyA9IHNlbGYudGJfbG9jYWxzCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGlmIHNlbGYud2FybmluZ3M6CiAgICAgICAgICAgICAgICAgIyBpZiBzZWxmLndhcm5pbmdzIGlzIHNldCwgdXNlIGl0IHRvIGZpbHRlciBhbGwgdGhlIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3Qvc3VwcG9ydC5weQppbmRleCAwMmU4ZjNhLi41MjkyNjUzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkKQEAgLTI1LDggKzI1LDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBub3QgaGFzaChvYmpfMSkgPT0gaGFzaChvYmpfMik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXIgYW5kICVyIGRvIG5vdCBoYXNoIGVxdWFsIiAlIChvYmpfMSwgb2JqXzIpKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJQcm9ibGVtIGhhc2hpbmcgJXIgYW5kICVyOiAlcyIgJSAob2JqXzEsIG9ial8yLCBlKSkKIApAQCAtMzUsOCArMzMsNiBAQAogICAgICAgICAgICAgICAgIGlmIGhhc2gob2JqXzEpID09IGhhc2gob2JqXzIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGFuZCAlcyBoYXNoIGVxdWFsLCBidXQgc2hvdWxkbid0IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqXzEsIG9ial8yKSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUHJvYmxlbSBoYXNoaW5nICVzIGFuZCAlczogJXMiICUgKG9ial8xLCBvYmpfMiwgZSkpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2JyZWFrLnB5CmluZGV4IDBiZjFhMjIuLjJjNzUwMTkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9icmVhay5weQpAQCAtMjExLDYgKzIxMSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gZmFpbGZhc3QKICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBjYXRjaGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSBGYWxzZQogICAgICAgICAgICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IEZha2VSdW5uZXIKICAgICAgICAgICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCkBAIC0yMjEsNiArMjIyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLmluaXRBcmdzLCBbKCgpLCB7J2J1ZmZlcic6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NpdHknOiB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IGZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5ydW5BcmdzLCBbdGVzdF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXN1bHQsIHJlc3VsdCkKQEAgLTIzNSw2ICsyMzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIFsoKCksIHsnYnVmZmVyJzogTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWxmYXN0JzogZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0Yl9sb2NhbHMnOiBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzJzogTm9uZX0pXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnJ1bkFyZ3MsIFt0ZXN0XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlc3VsdCwgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IDMyMWQ2N2EuLmFkYTczM2IgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTExMDMsMTIgKzExMDMsOSBAQAogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAjIG5lZWQgdG8gcmVtb3ZlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICBlcnJvciA9IHN0cihlKS5zcGxpdCgnXG4nLCAxKVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYW1wbGVfdGV4dF9lcnJvciwgZXJyb3IpCiAKLSAgICAgICAgICAgICMgbm8gZmFpciB0ZXN0aW5nIG91cnNlbGYgd2l0aCBvdXJzZWxmLCBhbmQgYXNzZXJ0RXF1YWwgaXMgdXNlZCBmb3Igc3RyaW5ncwotICAgICAgICAgICAgIyBzbyBjYW4ndCB1c2UgYXNzZXJ0RXF1YWwgZWl0aGVyLiBKdXN0IHVzZSBhc3NlcnRUcnVlLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNhbXBsZV90ZXh0X2Vycm9yID09IGVycm9yKQotCi0gICAgZGVmIHRlc3RBc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKKyAgICBkZWYgdGVzdEFzc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKICAgICAgICAgc2FtcGxlX3RleHQgPSAibGFkZW4gc3dhbGxvd3MgZmx5IHNsb3dseSIKICAgICAgICAgcmV2aXNlZF9zYW1wbGVfdGV4dCA9ICJ1bmxhZGVuIHN3YWxsb3dzIGZseSBxdWlja2x5IgogICAgICAgICBzYW1wbGVfdGV4dF9lcnJvciA9ICIiIlwKQEAgLTExMjAsOCArMTExNyw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlX3RleHQsIHJldmlzZWRfc2FtcGxlX3RleHQpCiAgICAgICAgIGV4Y2VwdCBzZWxmLmZhaWx1cmVFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICMgbmVlZCB0byByZW1vdmUgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgIGVycm9yID0gc3RyKGUpLnNwbGl0KCdcbicsIDEpWzFdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2FtcGxlX3RleHRfZXJyb3IgPT0gZXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZV90ZXh0X2Vycm9yLCBlcnJvcikKIAogICAgIGRlZiB0ZXN0QXNzZXJ0SXNOb25lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShOb25lKQpAQCAtMTE0Nyw2ICsxMTQ1LDkgQEAKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gbm8gZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrLCBsYW1iZGE6IDApCisgICAgICAgICMgRmFpbHVyZSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciBleGNlcHRpb24gaXMgcmFpc2VkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jayk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBTdHViKQpAQCAtMTE3MSwxMCArMTE3MiwzMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2ssIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgU3R1YikKIAorICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzTm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9iamVjdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIDEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgb2JqZWN0KSkKKwogICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzUmVnZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEV4Y2VwdGlvbk1vY2soRXhjZXB0aW9uKToKICAgICAgICAgICAgIHBhc3MKQEAgLTExODQsNiArMTIwNiw4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb25Nb2NrLCByZS5jb21waWxlKCdleHBlY3QkJyksIFN0dWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBTdHViKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBOb25lKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RSYWlzZXNSZWdleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKQEAgLTExOTQsNiArMTIxOCwxNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ15FeGNlcHRpb24gbm90IHJhaXNlZCBieSA8bGFtYmRhPiQnLAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgsIEV4Y2VwdGlvbiwgJ3gnLAogICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSkKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAnZXhwZWN0JywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2V4cGVjdCcsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleEludmFsaWRSZWdleChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAyMDE0NS4KQEAgLTEyMzcsNiArMTI3MCwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgRXhjZXB0aW9uTW9jaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIHYpCiAKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4Tm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KG9iamVjdCwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoKFZhbHVlRXJyb3IsIDEpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgoVmFsdWVFcnJvciwgb2JqZWN0KSwgJ2V4cGVjdCcpCisKICAgICBkZWYgdGVzdEFzc2VydFdhcm5zQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJmb28iLCBSdW50aW1lV2FybmluZykKQEAgLTEyNTEsNiArMTI5OCw5IEBACiAgICAgICAgICMgRmFpbHVyZSB3aGVuIG5vIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5mYWlsdXJlRXhjZXB0aW9uKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIGxhbWJkYTogMCkKKyAgICAgICAgIyBGYWlsdXJlIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCBOb25lKQogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEyODksNiArMTMzOSwxNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgd2FybmluZyBpcyB0cmlnZ2VyZWQKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgIyBGb3JjZSBkZWZhdWx0IGZpbHRlciAoaW4gY2FzZSB0ZXN0cyBhcmUgcnVuIHdpdGggLVdlKQpAQCAtMTMwMyw2ICsxMzYyLDIwIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIF9ydW50aW1lX3dhcm4oKQogCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc05vRXhjZXB0aW9uVHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhvYmplY3QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCAxKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygoVXNlcldhcm5pbmcsIG9iamVjdCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCBFeGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4Q2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKG1zZyk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgUnVudGltZVdhcm5pbmcpCkBAIC0xMzEyLDYgKzEzODUsOSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiAwKQorICAgICAgICAjIEZhaWx1cmUgd2hlbiB0aGUgZnVuY3Rpb24gaXMgTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgIm8rIiwgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAjIEZvcmNlIGRlZmF1bHQgZmlsdGVyIChpbiBjYXNlIHRlc3RzIGFyZSBydW4gd2l0aCAtV2UpCkBAIC0xMzQ4LDYgKzE0MjQsMTUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgJ28rJywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICdvKycsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEzNjksNiArMTQ1NCwyMiBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAibysiKToKICAgICAgICAgICAgICAgICAgICAgX3J1bnRpbWVfd2FybigiYmFyeiIpCiAKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zUmVnZXhOb0V4Y2VwdGlvblR5cGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChVc2VyV2FybmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgob2JqZWN0LCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgMSksICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoKFVzZXJXYXJuaW5nLCBvYmplY3QpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgRXhjZXB0aW9uKSwgJ2V4cGVjdCcpCisKICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogICAgIGRlZiBhc3NlcnROb1N0ZGVycihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBidWY6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CmluZGV4IGYxMmU4OTguLjg5OTFmMzggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CkBAIC0xLDQgKzEsNSBAQAotaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtNjksNyArNzAsMTMgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfaXNmaWxlKQogCiAgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBsYW1iZGEgcGF0aDogcGF0aCArICcgbW9kdWxlJwotICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxhbWJkYSBtb2R1bGU6IG1vZHVsZSArICcgdGVzdHMnCisgICAgICAgIG9yaWdfbG9hZF90ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1Ob25lKToKKyAgICAgICAgICAgICMgVGhpcyBpcyB3aGVyZSBsb2FkX3Rlc3RzIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIGJhc2UgPSBvcmlnX2xvYWRfdGVzdHMobW9kdWxlLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm4gYmFzZSArIFttb2R1bGUgKyAnIHRlc3RzJ10KKyAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgPSBsb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZwogCiAgICAgICAgIHRvcF9sZXZlbCA9IG9zLnBhdGguYWJzcGF0aCgnL2ZvbycpCiAgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9IHRvcF9sZXZlbApAQCAtNzcsOSArODQsOSBAQAogCiAgICAgICAgICMgVGhlIHRlc3Qgc3VpdGVzIGZvdW5kIHNob3VsZCBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgZm9yIHJlbGlhYmxlCiAgICAgICAgICMgZXhlY3V0aW9uIG9yZGVyLgotICAgICAgICBleHBlY3RlZCA9IFtuYW1lICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCi0gICAgICAgICAgICAgICAgICAgICgndGVzdDEnLCAndGVzdDInKV0KLSAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsoJ3Rlc3RfZGlyLiVzJyAlIG5hbWUpICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCisgICAgICAgIGV4cGVjdGVkID0gW1tuYW1lICsgJyBtb2R1bGUgdGVzdHMnXSBmb3IgbmFtZSBpbgorICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QxJywgJ3Rlc3QyJywgJ3Rlc3RfZGlyJyldCisgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbWygndGVzdF9kaXIuJXMnICUgbmFtZSkgKyAnIG1vZHVsZSB0ZXN0cyddIGZvciBuYW1lIGluCiAgICAgICAgICAgICAgICAgICAgICgndGVzdDMnLCAndGVzdDQnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsIGV4cGVjdGVkKQogCkBAIC0xMTcsMzQgKzEyNCwyMDQgQEAKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CiAgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbG9hZF90ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cwogCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKIAogICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQotICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzKToKLSAgICAgICAgICAgIGlmIHVzZV9sb2FkX3Rlc3RzOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigndXNlX2xvYWRfdGVzdHMgc2hvdWxkIGJlIEZhbHNlIGZvciBwYWNrYWdlcycpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cycKKyAgICAgICAgb3JpZ19sb2FkX3Rlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpOgorICAgICAgICAgICAgIyBUaGlzIGlzIHdoZXJlIGxvYWRfdGVzdHMgaXMgY2FsbGVkLgorICAgICAgICAgICAgYmFzZSA9IG9yaWdfbG9hZF90ZXN0cyhtb2R1bGUsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgIHJldHVybiBiYXNlICsgW21vZHVsZS5wYXRoICsgJyBtb2R1bGUgdGVzdHMnXQogICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCiAKICAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gJy9mb28nCiAgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCiAgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKICAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cygnL2ZvbycsICd0ZXN0KicpKQogCi0gICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UgYnkgY2FsbGluZyBsb2FkX3Rlc3RzCi0gICAgICAgICMgYW5kIGRpcmVjdGx5IGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5MiBwYWNrYWdlCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIGFfZGlyZWN0b3J5IGFuZCB0ZXN0X2RpcmVjdG9yeTIKKyAgICAgICAgIyBkaXJlY3RseSBhbmQgdmlhIGxvYWRfdGVzdHMgZm9yIHRoZSB0ZXN0X2RpcmVjdG9yeSBwYWNrYWdlLCB3aGljaAorICAgICAgICAjIHN0aWxsIGNhbGxzIHRoZSBiYXNlbGluZSBtb2R1bGUgbG9hZGVyLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9hZF90ZXN0cycsICd0ZXN0X2RpcmVjdG9yeTInICsgJyBtb2R1bGUgdGVzdHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbWydhX2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeSBsb2FkX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeTIgbW9kdWxlIHRlc3RzJ11dKQorCisKICAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLCBbJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorCisgICAgICAgICMgbG9hZF90ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICAjIChidXQgdGhlcmUgYXJlIG5vIHRlc3RzIGluIG91ciBzdHViIG1vZHVsZSBpdHNlbGYsIHNvIHRoYXRzIFtdIGF0IHRoZQorICAgICAgICAjIHRpbWUgb2YgY2FsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCBbXSwgJ3Rlc3QqJyldKQorCisgICAgZGVmIHRlc3RfZmluZF90ZXN0c19kZWZhdWx0X2NhbGxzX3BhY2thZ2VfbG9hZF90ZXN0cyhzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBvcmlnaW5hbF9pc2RpciA9IG9zLnBhdGguaXNkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNkaXIoKToKKyAgICAgICAgICAgIG9zLnBhdGguaXNkaXIgPSBvcmlnaW5hbF9pc2RpcgorCisgICAgICAgIGRpcmVjdG9yaWVzID0gWydhX2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeTInXQorICAgICAgICBwYXRoX2xpc3RzID0gW2RpcmVjdG9yaWVzLCBbXSwgW10sIFtdXQorICAgICAgICBvcy5saXN0ZGlyID0gbGFtYmRhIHBhdGg6IHBhdGhfbGlzdHMucG9wKDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2xpc3RkaXIpCisKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBUcnVlCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IG9zLnBhdGguYmFzZW5hbWUocGF0aCkgbm90IGluIGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZmlsZSkKKworICAgICAgICBjbGFzcyBNb2R1bGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhdGhzID0gW10KKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRocy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQorICAgICAgICBvcmlnX2xvYWRfdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSk6CisgICAgICAgICAgICAjIFRoaXMgaXMgd2hlcmUgbG9hZF90ZXN0cyBpcyBjYWxsZWQuCisgICAgICAgICAgICBiYXNlID0gb3JpZ19sb2FkX3Rlc3RzKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuIGJhc2UgKyBbbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cyddCisgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlID0gbG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBsb2FkZXIuc3VpdGVDbGFzcyA9IGxhbWJkYSB0aGluZzogdGhpbmcKKworICAgICAgICBsb2FkZXIuX3RvcF9sZXZlbF9kaXIgPSAnL2ZvbycKKyAgICAgICAgIyB0aGlzIHRpbWUgbm8gJy5weScgb24gdGhlIHBhdHRlcm4gc28gdGhhdCBpdCBjYW4gbWF0Y2gKKyAgICAgICAgIyBhIHRlc3QgcGFja2FnZQorICAgICAgICBzdWl0ZSA9IGxpc3QobG9hZGVyLl9maW5kX3Rlc3RzKCcvZm9vJywgJ3Rlc3QqLnB5JykpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgYV9kaXJlY3RvcnkgYW5kIHRlc3RfZGlyZWN0b3J5MgorICAgICAgICAjIGRpcmVjdGx5IGFuZCB2aWEgbG9hZF90ZXN0cyBmb3IgdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UsIHdoaWNoCisgICAgICAgICMgc3RpbGwgY2FsbHMgdGhlIGJhc2VsaW5lIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snYV9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkgbG9hZF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkyIG1vZHVsZSB0ZXN0cyddXSkKKyAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnYV9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnkyJ10pCisKIAogICAgICAgICAjIGxvYWRfdGVzdHMgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSB3aXRoIGxvYWRlciwgdGVzdHMgYW5kIHBhdHRlcm4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCAndGVzdF9kaXJlY3RvcnknICsgJyBtb2R1bGUgdGVzdHMnLCAndGVzdConKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKV0pCisKKyAgICBkZWYgdGVzdF9maW5kX3Rlc3RzX2N1c3RvbWlzZV92aWFfcGFja2FnZV9wYXR0ZXJuKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCB1c2VzIHRoZSBleGFtcGxlICdkby1ub3RoaW5nJyBsb2FkX3Rlc3RzIGZyb20KKyAgICAgICAgIyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5pdHRlc3QuaHRtbCNsb2FkLXRlc3RzLXByb3RvY29sCisgICAgICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhhdCBhY3R1YWxseSB3b3Jrcy4KKyAgICAgICAgIyBIb3VzZWtlZXBpbmcKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfbGlzdGRpcikKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2ZpbGUpCisgICAgICAgIG9yaWdpbmFsX2lzZGlyID0gb3MucGF0aC5pc2RpcgorICAgICAgICBkZWYgcmVzdG9yZV9pc2RpcigpOgorICAgICAgICAgICAgb3MucGF0aC5pc2RpciA9IG9yaWdpbmFsX2lzZGlyCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGgucmVtb3ZlLCBhYnNwYXRoKCcvZm9vJykpCisKKyAgICAgICAgIyBUZXN0IGRhdGE6IHdlIGV4cGVjdCB0aGUgZm9sbG93aW5nOgorICAgICAgICAjIGEgbGlzdGRpciB0byBmaW5kIG91ciBwYWNrYWdlLCBhbmQgYSBpc2ZpbGUgYW5kIGlzZGlyIGNoZWNrIG9uIGl0LgorICAgICAgICAjIGEgbW9kdWxlLWZyb20tbmFtZSBjYWxsIHRvIHR1cm4gdGhhdCBpbnRvIGEgbW9kdWxlCisgICAgICAgICMgZm9sbG93ZWQgYnkgbG9hZF90ZXN0cy4KKyAgICAgICAgIyB0aGVuIG91ciBsb2FkX3Rlc3RzIHdpbGwgY2FsbCBkaXNjb3ZlcigpIHdoaWNoIGlzIG1lc3N5CisgICAgICAgICMgYnV0IHRoYXQgZmluYWxseSBjaGFpbnMgaW50byBmaW5kX3Rlc3RzIGFnYWluIGZvciB0aGUgY2hpbGQgZGlyIC0KKyAgICAgICAgIyB3aGljaCBpcyB3aHkgd2UgZG9uJ3QgaGF2ZSBhIGluZmluaXRlIGxvb3AuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZToKKyAgICAgICAgIyB0aGUgbW9kdWxlIGxvYWQgdGVzdHMgZm9yIGJvdGggcGFja2FnZSBhbmQgcGxhaW4gbW9kdWxlIGNhbGxlZCwKKyAgICAgICAgIyBhbmQgdGhlIHBsYWluIG1vZHVsZSByZXN1bHQgbmVzdGVkIGJ5IHRoZSBwYWNrYWdlIG1vZHVsZSBsb2FkX3Rlc3RzCisgICAgICAgICMgaW5kaWNhdGluZyB0aGF0IGl0IHdhcyBwcm9jZXNzZWQgYW5kIGNvdWxkIGhhdmUgYmVlbiBtdXRhdGVkLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL2ZvbycpOiBbJ215X3BhY2thZ2UnXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy9mb28vbXlfcGFja2FnZScpOiBbJ19faW5pdF9fLnB5JywgJ3Rlc3RfbW9kdWxlLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgb3MubGlzdGRpciA9IGxpc3RfZGlyCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogbm90IHBhdGguZW5kc3dpdGgoJy5weScpCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IHBhdGguZW5kc3dpdGgoJy5weScpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYucGF0aHMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgndGVzdF9tb2R1bGUnKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRfdGVzdHNfYXJncy5hcHBlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnBhdGggKyAnIGxvYWRfdGVzdHMnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdG9wIGxldmVsIGRpcmVjdG9yeSBjYWNoZWQgb24gbG9hZGVyIGluc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICBfX2ZpbGVfXyA9ICcvZm9vL215X3BhY2thZ2UvX19pbml0X18ucHknCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ190ZXN0cyA9IGxvYWRlci5kaXNjb3ZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kaXI9dGhpc19kaXIsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJywgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsgcGtnX3Rlc3RzCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gYWJzcGF0aCgnL2ZvbycpCisgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCisgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cyhhYnNwYXRoKCcvZm9vJyksICd0ZXN0Ki5weScpKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gYm90aCBteV9wYWNrYWdlIGFuZAorICAgICAgICAjIG15X3BhY2FrZ2UudGVzdF9tb2R1bGUsIGFuZCBhbHNvIHJ1biB0aGUgbG9hZF90ZXN0cyBob29rIGluIGJvdGguCisgICAgICAgICMgKG5vcm1hbGx5IHRoaXMgd291bGQgYmUgbmVzdGVkIFRlc3RTdWl0ZXMuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtbJ215X3BhY2thZ2UgbG9hZF90ZXN0cycsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ215X3BhY2thZ2UudGVzdF9tb2R1bGUgbG9hZF90ZXN0cyddXV0pCisgICAgICAgICMgUGFyZW50cyBiZWZvcmUgY2hpbGRyZW4uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnbXlfcGFja2FnZScsICdteV9wYWNrYWdlLnRlc3RfbW9kdWxlJ10pCisKKyAgICAgICAgIyBsb2FkX3Rlc3RzIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5sb2FkX3Rlc3RzX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRlciwgW10sICd0ZXN0Ki5weScpXSkKIAogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKQEAgLTE5Miw2ICszNjksNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZmluZF90ZXN0c19hcmdzLCBbKHN0YXJ0X2RpciwgJ3BhdHRlcm4nKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odG9wX2xldmVsX2Rpciwgc3lzLnBhdGgpCiAKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcl9zdGFydF9kaXJfaXNfcGFja2FnZV9jYWxsc19wYWNrYWdlX2xvYWRfdGVzdHMoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHBhY2thZ2UgbG9hZF90ZXN0cyBpbiBhIHBhY2thZ2UgaXMgaW5kZWVkCisgICAgICAgICMgaW52b2tlZCB3aGVuIHRoZSBzdGFydF9kaXIgaXMgYSBwYWNrYWdlIChhbmQgbm90IHRoZSB0b3AgbGV2ZWwpLgorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjQ1NworCisgICAgICAgICMgVGVzdCBkYXRhOiB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgIyBhbiBpc2ZpbGUgdG8gdmVyaWZ5IHRoZSBwYWNrYWdlLCB0aGVuIGltcG9ydGluZyBhbmQgc2Nhbm5pbmcKKyAgICAgICAgIyBhcyBwZXIgX2ZpbmRfdGVzdHMnIG5vcm1hbCBiZWhhdmlvdXIuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZSBvdXIgbG9hZF90ZXN0cyBob29rIGNhbGxlZCBvbmNlLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL3RvcGxldmVsJyk6IFsnc3RhcnRkaXInXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy90b3BsZXZlbC9zdGFydGRpcicpOiBbJ19faW5pdF9fLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIG9zLmxpc3RkaXIgPSBsaXN0X2RpcgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZmlsZScsIG9zLnBhdGguaXNmaWxlKQorICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IGxhbWJkYSBwYXRoOiBwYXRoLmVuZHN3aXRoKCcucHknKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZGlyJywgb3MucGF0aC5pc2RpcikKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgYWJzcGF0aCgnL3RvcGxldmVsJykpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhzZWxmLCBsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWydsb2FkX3Rlc3RzIGNhbGxlZCAnICsgc2VsZi5wYXRoXQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy90b3BsZXZlbC9zdGFydGRpcicsIHRvcF9sZXZlbF9kaXI9Jy90b3BsZXZlbCcpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgcGFja2FnZSBfX2luaXRfXy4KKyAgICAgICAgIyAobm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBuZXN0ZWQgVGVzdFN1aXRlcy4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snbG9hZF90ZXN0cyBjYWxsZWQgc3RhcnRkaXInXV0pCisKICAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3Rlc3RzKHNlbGYsIGZha2VmaWxlKToKICAgICAgICAgbGlzdGRpciA9IG9zLmxpc3RkaXIKICAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBfOiBbZmFrZWZpbGVdCkBAIC0yMDQsNiArNDI2LDE3IEBACiAgICAgICAgICAgICBzeXMucGF0aFs6XSA9IG9yaWdfc3lzX3BhdGgKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmUpCiAKKyAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3BhY2thZ2VfdGVzdHMoc2VsZiwgdmZzKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNmaWxlJywgb3MucGF0aC5pc2ZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNkaXInLCBvcy5wYXRoLmlzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGguX19zZXRpdGVtX18sIHNsaWNlKE5vbmUpLCBsaXN0KHN5cy5wYXRoKSkKKyAgICAgICAgZGVmIGxpc3RfZGlyKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QodmZzW3BhdGhdKQorICAgICAgICBvcy5saXN0ZGlyID0gbGlzdF9kaXIKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBsYW1iZGEgcGF0aDogcGF0aC5lbmRzd2l0aCgnLnB5JykKKwogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfbW9kdWxlc190aGF0X2ZhaWxfdG9faW1wb3J0KHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIApAQCAtMjEyLDExICs0NDUsNDQgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy4nKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLmdldGN3ZCgpLCBzeXMucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogdGVzdF90aGlzX2RvZXNfbm90X2V4aXN0JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3QobGlzdChzdWl0ZSlbMF0pWzBdICMgZXh0cmFjdCB0ZXN0IGZyb20gc3VpdGUKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHRlc3QudGVzdF90aGlzX2RvZXNfbm90X2V4aXN0KCkKIAorICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfaW5pdF9tb2R1bGVzX3RoYXRfZmFpbF90b19pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiQ2Fubm90IGltcG9ydCBOYW1lIikKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogbXlfcGFja2FnZScgaW4gZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHRlc3QgPSBsaXN0KGxpc3Qoc3VpdGUpWzBdKVswXSAjIGV4dHJhY3QgdGVzdCBmcm9tIHN1aXRlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgdGVzdC5teV9wYWNrYWdlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCiAgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh0ZXN0LCBwcm90bykpCkBAIC0yNDEsNiArNTA3LDMwIEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQogCisgICAgZGVmIHRlc3RfZGlzY292ZXJfd2l0aF9pbml0X21vZHVsZV90aGF0X3JhaXNlc19Ta2lwVGVzdF9vbl9pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnc2tpcHBlcm9vJykKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgc3VpdGUucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LnNraXBwZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0c1J1biwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCisgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQorCiAgICAgZGVmIHRlc3RfY29tbWFuZF9saW5lX2hhbmRsaW5nX3BhcnNlQXJncyhzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IFRlc3RhYmxlVGVzdFByb2dyYW0oKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IGI2MmExYjUuLjY4ZjEwMzYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDEyICsxLDM2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKLQoraW1wb3J0IHdhcm5pbmdzCiAKIGltcG9ydCB1bml0dGVzdAogCisjIERlY29yYXRvciB1c2VkIGluIHRoZSBkZXByZWNhdGlvbiB0ZXN0cyB0byByZXNldCB0aGUgd2FybmluZyByZWdpc3RyeSBmb3IKKyMgdGVzdCBpc29sYXRpb24gYW5kIHJlcHJvZHVjaWJpbGl0eS4KK2RlZiB3YXJuaW5ncmVnaXN0cnkoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dzKToKKyAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCisgICAgICAgIHNhdmVkID0gZ2V0YXR0cih3YXJuaW5ncywgJ19fd2FybmluZ3JlZ2lzdHJ5X18nLCBtaXNzaW5nKS5jb3B5KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZWQgaXMgbWlzc2luZzoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRlbCB3YXJuaW5ncy5fX3dhcm5pbmdyZWdpc3RyeV9fCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLl9fd2FybmluZ3JlZ2lzdHJ5X18gPSBzYXZlZAorCiAKIGNsYXNzIFRlc3RfVGVzdExvYWRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICAjIyMgQmFzaWMgb2JqZWN0IHRlc3RzCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisgICAgZGVmIHRlc3RfX19pbml0X18oc2VsZik6CisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsb2FkZXIuZXJyb3JzKQorCiAgICAgIyMjIFRlc3RzIGZvciBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMTUwLDYgKzE3NCw3IEBACiAKICAgICAjIENoZWNrIHRoYXQgbG9hZFRlc3RzRnJvbU1vZHVsZSBob25vcnMgKG9yIG5vdCkgYSBtb2R1bGUKICAgICAjIHdpdGggYSBsb2FkX3Rlc3RzIGZ1bmN0aW9uLgorICAgIEB3YXJuaW5ncmVnaXN0cnkKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX19sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCiAgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTY4LDEwICsxOTMsMTQ0IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2l0aCBQeXRob24gMy41LCB0aGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsIHVzZV9sb2FkX3Rlc3RzIGlzCisgICAgICAgICMgaWdub3JlZCAoYW5kIGRlcHJlY2F0ZWQpLgorICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1GYWxzZSk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ25ldmVyJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfcG9zaXRpb25hbChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQogCiAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCi0gICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbXSkKKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgIyBUaGUgbWV0aG9kIHN0aWxsIHdvcmtzLgorICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgIyB1c2VfbG9hZF90ZXN0cz1UcnVlIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgICMgbG9hZF90ZXN0cyB3YXMgc3RpbGwgY2FsbGVkIGJlY2F1c2UgdXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZAorICAgICAgICAgICAgIyBhbmQgaWdub3JlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2UgZ290IGEgd2FybmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3Wy0xXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfa2V5d29yZChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgICMgVGhlIG1ldGhvZCBzdGlsbCB3b3Jrcy4KKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICAjIGxvYWRfdGVzdHMgd2FzIHN0aWxsIGNhbGxlZCBiZWNhdXNlIHVzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICMgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorICAgICAgICAgICAgIyBXZSBnb3QgYSB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisKKyAgICBAd2FybmluZ3JlZ2lzdHJ5CisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fdG9vX21hbnlfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbSwgXAorICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmcocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtLCBGYWxzZSwgJ3Rlc3RtZS4qJykKKyAgICAgICAgICAgICMgV2Ugc3RpbGwgZ290IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisgICAgICAgICAgICAjIFdlIGFsc28gZ290IGEgVHlwZUVycm9yIGZvciB0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICdsb2FkVGVzdHNGcm9tTW9kdWxlKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCAzIHdlcmUgZ2l2ZW4nKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX290aGVyX2JhZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignbmV2ZXInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKAorICAgICAgICAgICAgICAgICAgICBtLCB1c2VfbG9hZF90ZXN0cz1GYWxzZSwgdmVyeV9iYWQ9VHJ1ZSwgd29yc2U9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICMgVGhlIGVycm9yIG1lc3NhZ2UgbmFtZXMgdGhlIGZpcnN0IGJhZCBhcmd1bWVudCBhbHBoYWJldGljYWxseSwKKyAgICAgICAgIyBob3dldmVyIHVzZV9sb2FkX3Rlc3RzICh3aGljaCBzb3J0cyBmaXJzdCkgaXMgaWdub3JlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd2ZXJ5X2JhZCciKQorCisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fcGF0dGVybihzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgcGF0dGVybj0ndGVzdG1lLionKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkX3Rlc3RzX2FyZ3MsIFtsb2FkZXIsIHN1aXRlLCAndGVzdG1lLionXSkKIAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX2ZhdWx0eV9sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCkBAIC0xODQsNiArMzQzLDEzIEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJ0ZhaWxlZCB0byBjYWxsIGxvYWRfdGVzdHM6JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3Qoc3VpdGUpWzBdCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJzb21lIGZhaWx1cmUiLCB0ZXN0Lm0pCkBAIC0yMTksMTUgKzM4NSwxNSBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX19tYWxmb3JtZWRfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgVmFsdWVFcnJvciBvciBJbXBvcnRFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgSW1wb3J0RXJyb3IsIGV4cGVjdGVkX3JlZ2V4LCBnZXRhdHRyKHRlc3QsICdhYmMgKCkgLy8nKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIC4uLiB0byBhCiAgICAgIyBtb2R1bGUiCkBAIC0yMzYsMjggKzQwMiw0NyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQorICAgICAgICBleHBlY3RlZCA9ICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKICAgICAjIHdpdGhpbiBhIHRlc3QgY2FzZSBjbGFzcywgb3IgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhCiAgICAgIyBUZXN0Q2FzZSBvciBUZXN0U3VpdGUgaW5zdGFuY2UuIgogICAgICMKLSAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGNhbid0PwotICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZShzZWxmKToKKyAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGlzbid0PworICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZV9vbl9tb2R1bGUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJykKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QubG9hZGVyLnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQorCisgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCisgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCisgICAgIyB3aXRoaW4gYSB0ZXN0IGNhc2UgY2xhc3MsIG9yIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoIHJldHVybnMgYQorICAgICMgVGVzdENhc2Ugb3IgVGVzdFN1aXRlIGluc3RhbmNlLiIKKyAgICAjCisgICAgIyBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGZvdW5kLCBidXQgdGhlIGF0dHJpYnV0ZSBpc24ndD8KKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9hdHRyX25hbWVfb25fcGFja2FnZShzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIk5vIG1vZHVsZSBuYW1lZCAndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW1wb3J0RXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjY5LDEyICs0NTQsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfdW5rbm93bl9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicsIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiJ21vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnLCB1bml0dGVzdCkKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjkwLDEyICs0NzYsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfZW1wdHlfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gImhhcyBubyBhdHRyaWJ1dGUgJyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCBnZXRhdHRyKHRlc3QsICcnKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMzEwLDE0ICs0OTcsMTUgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgQXR0cmlidXRlRXJyb3Igb3IgVmFsdWVFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTQyMywxMiArNjExLDEzIEBACiAgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKIAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd0ZXN0Y2FzZV8xLnRlc3Rmb28nLCBtKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiRmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3Rlc3RjYXNlXzEudGVzdGZvbycsIG0pCisgICAgICAgIGV4cGVjdGVkID0gInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnRlc3Rmb28pCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSAuLi4gdG8KICAgICAjIC4uLiBhIGNhbGxhYmxlIG9iamVjdCB3aGljaCByZXR1cm5zIGEgLi4uIFRlc3RTdWl0ZSBpbnN0YW5jZSIKQEAgLTU0Niw2ICs3MzUsMjMgQEAKICAgICAjIyMgVGVzdHMgZm9yIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKCkKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKKyAgICBkZWYgY2hlY2tfZGVmZXJyZWRfZXJyb3Ioc2VsZiwgbG9hZGVyLCBzdWl0ZSk6CisgICAgICAgICIiIkhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgdGhhdCBlcnJvcnMgaW4gbG9hZGluZyBhcmUgcmVwb3J0ZWQuCisKKyAgICAgICAgOnBhcmFtIGxvYWRlcjogQSBsb2FkZXIgd2l0aCBzb21lIGVycm9ycy4KKyAgICAgICAgOnBhcmFtIHN1aXRlOiBBIHN1aXRlIHRoYXQgc2hvdWxkIGhhdmUgYSBsYXRlIGJvdW5kIGVycm9yLgorICAgICAgICA6cmV0dXJuOiBUaGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBsb2FkZXIgYW5kIHRoZSB0ZXN0IG9iamVjdAorICAgICAgICAgICAgZnJvbSB0aGUgc3VpdGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICB0ZXN0ID0gbGlzdChzdWl0ZSlbMF0KKyAgICAgICAgcmV0dXJuIGVycm9yLCB0ZXN0CisKICAgICAjICJTaW1pbGFyIHRvIGxvYWRUZXN0c0Zyb21OYW1lKCksIGJ1dCB0YWtlcyBhIHNlcXVlbmNlIG9mIG5hbWVzIHJhdGhlcgogICAgICMgdGhhbiBhIHNpbmdsZSBuYW1lLiIKICAgICAjCkBAIC01OTgsMTQgKzgwNCwxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBWYWx1ZUVycm9yIG9yIEltcG9ydEVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsICBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEltcG9ydEVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTYxNiwxMiArODIzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10pCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IHNkYXNmYXNmYXNkZiIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbXBvcnRFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02MzIsMTIgKzg0MCwxNCBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9hdHRyX25hbWUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd1bml0dGVzdC5zZGFzZmFzZmFzZGYnLCAndW5pdHRlc3QnXSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICAgICAgWyd1bml0dGVzdC5sb2FkZXIuc2Rhc2Zhc2Zhc2RmJywgJ3VuaXR0ZXN0LnRlc3QuZHVtbXknXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY1MSwxMiArODYxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY3MCwxMiArODgxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMihzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ1Rlc3RDYXNlJywgJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydUZXN0Q2FzZScsICdzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzFdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY5MSwxMiArOTAzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX19yZWxhdGl2ZV9lbXB0eV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiaGFzIG5vIGF0dHJpYnV0ZSAnJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIGdldGF0dHIodGVzdCwgJycpKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC03MTAsMTQgKzkyMywxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBBdHRyaWJ1dGVFcnJvciBvciBWYWx1ZUVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTgzNSwxMiArMTA0OSwxMyBAQAogICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCiAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd0ZXN0Y2FzZV8xLnRlc3Rmb28nXSwgbSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3Rlc3RjYXNlXzEudGVzdGZvbyddLCBtKQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC50ZXN0Zm9vKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgLi4uIHRvCiAgICAgIyAuLi4gYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhIC4uLiBUZXN0U3VpdGUgaW5zdGFuY2UiCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKaW5kZXggNzI1ZDY3Zi4uMWNmYzE3OSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgcmVzdWx0ID0gTm9uZQogICAgIHZlcmJvc2l0eSA9IDEKICAgICBkZWZhdWx0VGVzdCA9IE5vbmUKKyAgICB0Yl9sb2NhbHMgPSBGYWxzZQogICAgIHRlc3RSdW5uZXIgPSBOb25lCiAgICAgdGVzdExvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCiAgICAgbW9kdWxlID0gJ19fbWFpbl9fJwpAQCAtMTQ3LDE4ICsxNDgsMTkgQEAKIGNsYXNzIEZha2VSdW5uZXIob2JqZWN0KToKICAgICBpbml0QXJncyA9IE5vbmUKICAgICB0ZXN0ID0gTm9uZQotICAgIHJhaXNlRXJyb3IgPSBGYWxzZQorICAgIHJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBGYWtlUnVubmVyLmluaXRBcmdzID0ga3dhcmdzCiAgICAgICAgIGlmIEZha2VSdW5uZXIucmFpc2VFcnJvcjoKLSAgICAgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IEZhbHNlCisgICAgICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgLT0gMQogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCiAKICAgICBkZWYgcnVuKHNlbGYsIHRlc3QpOgogICAgICAgICBGYWtlUnVubmVyLnRlc3QgPSB0ZXN0CiAgICAgICAgIHJldHVybiBSRVNVTFQKIAorCiBjbGFzcyBUZXN0Q29tbWFuZExpbmVBcmdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2Niw3ICsxNjgsNyBAQAogICAgICAgICBzZWxmLnByb2dyYW0uY3JlYXRlVGVzdHMgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5pbml0QXJncyA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci50ZXN0ID0gTm9uZQotICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSBGYWxzZQorICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgdGVzdFZlcmJvc2l0eShzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQpAQCAtMjU2LDYgKzI1OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5pbml0QXJncywgeyd2ZXJib3NpdHknOiAndmVyYm9zaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6ICdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVyJzogJ2J1ZmZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MnOiAnd2FybmluZ3MnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQpAQCAtMjc0LDEwICsyNzcsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCisKKyAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgorICAgICAgICBwcm9ncmFtLnBhcnNlQXJncyhbTm9uZSwgJy0tbG9jYWxzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcHJvZ3JhbS50Yl9sb2NhbHMpCisgICAgICAgIHByb2dyYW0ucnVuVGVzdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIHsnYnVmZmVyJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KQorCiAgICAgZGVmIHRlc3RSdW5UZXN0c09sZFJ1bm5lckNsYXNzKHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKLSAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gVHJ1ZQorICAgICAgICAjIFR3byBUeXBlRXJyb3JzIGFyZSBuZWVkZWQgdG8gZmFsbCBhbGwgdGhlIHdheSBiYWNrIHRvIG9sZC1zdHlsZQorICAgICAgICAjIHJ1bm5lcnMgLSBvbmUgdG8gZmFpbCB0Yl9sb2NhbHMsIG9uZSB0byBmYWlsIGJ1ZmZlciBldGMuCisgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IDIKICAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgogICAgICAgICBwcm9ncmFtLnZlcmJvc2l0eSA9ICd2ZXJib3NpdHknCiAgICAgICAgIHByb2dyYW0uZmFpbGZhc3QgPSAnZmFpbGZhc3QnCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CmluZGV4IDQ4OWZlMTcuLmUzOWUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CkBAIC04LDYgKzgsMjAgQEAKIGltcG9ydCB1bml0dGVzdAogCiAKK2NsYXNzIE1vY2tUcmFjZWJhY2sob2JqZWN0KToKKyAgICBjbGFzcyBUcmFjZWJhY2tFeGNlcHRpb246CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYXB0dXJlX2xvY2FscyA9IGt3YXJncy5nZXQoJ2NhcHR1cmVfbG9jYWxzJywgRmFsc2UpCisgICAgICAgIGRlZiBmb3JtYXQoc2VsZik6CisgICAgICAgICAgICByZXN1bHQgPSBbJ0EgdHJhY2ViYWNrJ10KKyAgICAgICAgICAgIGlmIHNlbGYuY2FwdHVyZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbG9jYWxzJykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworZGVmIHJlc3RvcmVfdHJhY2ViYWNrKCk6CisgICAgdW5pdHRlc3QucmVzdWx0LnRyYWNlYmFjayA9IHRyYWNlYmFjaworCisKIGNsYXNzIFRlc3RfVGVzdFJlc3VsdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBOb3RlOiB0aGVyZSBhcmUgbm90IHNlcGFyYXRlIHRlc3RzIGZvciBUZXN0UmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSwKICAgICAjIFRlc3RSZXN1bHQuZXJyb3JzLCBUZXN0UmVzdWx0LmZhaWx1cmVzLCBUZXN0UmVzdWx0LnRlc3RzUnVuIG9yCkBAIC0yMjcsNiArMjQxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jYXNlLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZm9ybWF0dGVkX2V4Yywgc3RyKQogCisgICAgZGVmIHRlc3RfYWRkRXJyb3JfbG9jYWxzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICB0ZXN0ID0gRm9vKCd0ZXN0XzEnKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0LnRiX2xvY2FscyA9IFRydWUKKworICAgICAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gTW9ja1RyYWNlYmFjaworICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV90cmFjZWJhY2spCisgICAgICAgIHJlc3VsdC5zdGFydFRlc3RSdW4oKQorICAgICAgICB0ZXN0LnJ1bihyZXN1bHQpCisgICAgICAgIHJlc3VsdC5zdG9wVGVzdFJ1bigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCisgICAgICAgIHRlc3RfY2FzZSwgZm9ybWF0dGVkX2V4YyA9IHJlc3VsdC5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQSB0cmFjZWJhY2tsb2NhbHMnLCBmb3JtYXR0ZWRfZXhjKQorCiAgICAgZGVmIHRlc3RfYWRkU3ViVGVzdChzZWxmKToKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoc2VsZik6CkBAIC0zOTgsNiArNDMxLDcgQEAKICAgICBzZWxmLnRlc3RzUnVuID0gMAogICAgIHNlbGYuc2hvdWxkU3RvcCA9IEZhbHNlCiAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQorICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKIAogY2xhc3NEaWN0WydfX2luaXRfXyddID0gX19pbml0X18KIE9sZFJlc3VsdCA9IHR5cGUoJ09sZFJlc3VsdCcsIChvYmplY3QsKSwgY2xhc3NEaWN0KQpAQCAtNDU0LDE1ICs0ODgsNiBAQAogICAgICAgICBydW5uZXIucnVuKFRlc3QoJ3Rlc3RGb28nKSkKIAogCi1jbGFzcyBNb2NrVHJhY2ViYWNrKG9iamVjdCk6Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBmb3JtYXRfZXhjZXB0aW9uKCpfKToKLSAgICAgICAgcmV0dXJuIFsnQSB0cmFjZWJhY2snXQotCi1kZWYgcmVzdG9yZV90cmFjZWJhY2soKToKLSAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gdHJhY2ViYWNrCi0KLQogY2xhc3MgVGVzdE91dHB1dEJ1ZmZlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CmluZGV4IDdjMGJkNTEuLjljYmMyNjAgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIud2FybmluZ3MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5uZXIuZGVzY3JpcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5yZXN1bHRjbGFzcywgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShydW5uZXIudGJfbG9jYWxzKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEFSZXN1bHQodW5pdHRlc3QuVGVzdFJlc3VsdCk6CkBAIC0xNzIsMTQgKzE3MiwxMyBAQAogICAgICAgICAjIG9uIGFyZ3VtZW50cyBpbiBpdHMgX19pbml0X18gc3VwZXIgY2FsbAogICAgICAgICBBVGV4dFJlc3VsdChOb25lLCBOb25lLCAxKQogCi0KICAgICBkZWYgdGVzdEJ1ZmZlckFuZEZhaWxmYXN0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCiAgICAgICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHN0cmVhbT1pby5TdHJpbmdJTygpLCBmYWlsZmFzdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9VHJ1ZSkKICAgICAgICAgIyBVc2Ugb3VyIHJlc3VsdCBvYmplY3QKICAgICAgICAgcnVubmVyLl9tYWtlUmVzdWx0ID0gbGFtYmRhOiByZXN1bHQKICAgICAgICAgcnVubmVyLnJ1bihUZXN0KCd0ZXN0Rm9vJykpCkBAIC0xODcsNiArMTg2LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuZmFpbGZhc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuYnVmZmVyKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihzdHJlYW09aW8uU3RyaW5nSU8oKSwgdGJfbG9jYWxzPVRydWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4odW5pdHRlc3QuVGVzdFN1aXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcmVzdWx0LnRiX2xvY2FscykKKwogICAgIGRlZiB0ZXN0UnVubmVyUmVnaXN0ZXJzUmVzdWx0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQppbmRleCAzOTJmOTVlLi4yZGY3MDNlIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAxKQogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuQnJva2VuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICdzZXRVcENsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBCcm9rZW5UZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9lcnJvcl9pbl90ZWFyZG93bl9jbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAndGVhckRvd25DbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICd0ZWFyRG93bkNsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBUZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9jbGFzc19ub3RfdG9ybmRvd25fd2hlbl9zZXR1cF9mYWlscyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00MTQsNyArNDE0LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMSkKICAgICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkWzBdWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLCAnc2V0VXBDbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLAorICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuJXMpJyAlIChfX25hbWVfXywgVGVzdC5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3Rfc2tpcHRlc3RfaW5fc2V0dXBtb2R1bGUoc2VsZik6CiAgICAgICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggZTA1YzZlMC4uYmI5Yjk1NiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC00MjQsNiArNDI0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgW10pCiAKIAorICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtIEAgMSwgTWFnaWNNb2NrKQorICAgICAgICBtLl9fbWF0bXVsX18ucmV0dXJuX3ZhbHVlID0gNDIKKyAgICAgICAgbS5fX3JtYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSA2NjYKKyAgICAgICAgbS5fX2ltYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0gQCAxLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIEAgbSwgNjY2KQorICAgICAgICBtIEA9IDI0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgMjQpCisKICAgICBkZWYgdGVzdF9kaXZtb2RfYW5kX3JkaXZtb2Qoc2VsZik6CiAgICAgICAgIG0gPSBNYWdpY01vY2soKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGl2bW9kKDUsIG0pLCBNYWdpY01vY2spCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CmluZGV4IDIzNjc1YjkuLjNhMTA0Y2IgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0xMTg3LDYgKzExODcsNDIgQEAKICAgICAgICAgbSA9IG1vY2suY3JlYXRlX2F1dG9zcGVjKG9iamVjdCgpLCBuYW1lPSdzd2VldF9mdW5jJykKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3dlZXRfZnVuYycsIHJlcHIobSkpCiAKKyAgICAjSXNzdWUyMTIzOAorICAgIGRlZiB0ZXN0X21vY2tfdW5zYWZlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbS5hc3NlcnRfZm9vX2NhbGwoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG0uYXNzcmV0X2Zvb19jYWxsKCkKKyAgICAgICAgbSA9IE1vY2sodW5zYWZlPVRydWUpCisgICAgICAgIG0uYXNzZXJ0X2Zvb19jYWxsKCkKKyAgICAgICAgbS5hc3NyZXRfZm9vX2NhbGwoKQorCisgICAgI0lzc3VlMjEyNjIKKyAgICBkZWYgdGVzdF9hc3NlcnRfbm90X2NhbGxlZChzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9ub3RfY2FsbGVkKCkKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisKKyAgICAjSXNzdWUyMTI1NiBwcmludG91dCBvZiBrZXl3b3JkIGFyZ3Mgc2hvdWxkIGJlIGluIGRldGVybWluaXN0aWMgb3JkZXIKKyAgICBkZWYgdGVzdF9zb3J0ZWRfY2FsbF9zaWduYXR1cmUoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgbS5oZWxsbyhuYW1lPSdoZWxsbycsIGRhZGR5PSdoZXJvJykKKyAgICAgICAgdGV4dCA9ICJjYWxsKGRhZGR5PSdoZXJvJywgbmFtZT0naGVsbG8nKSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0uaGVsbG8uY2FsbF9hcmdzKSwgdGV4dCkKKworICAgICNJc3N1ZTIxMjcwIG92ZXJyaWRlcyB0dXBsZSBtZXRob2RzIGZvciBtb2NrLmNhbGwgb2JqZWN0cworICAgIGRlZiB0ZXN0X292ZXJyaWRlX3R1cGxlX21ldGhvZHMoc2VsZik6CisgICAgICAgIGMgPSBjYWxsLmNvdW50KCkKKyAgICAgICAgaSA9IGNhbGwuaW5kZXgoMTMyLCdoZWxsbycpCisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgbS5jb3VudCgpCisgICAgICAgIG0uaW5kZXgoMTMyLCJoZWxsbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMF0sIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMV0sIGkpCisKICAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgogICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CiAgICAgICAgICAgICBvbmUgPSAxCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKaW5kZXggYjUxNmY0Mi4uMjhmZTg2YiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpAQCAtMzc3LDcgKzM3Nyw3IEBACiAKICAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2Zyb29ibGUnLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdvcmQnLCBzZW50aW5lbC5Gcm9vYmxlKQogICAgICAgICAgICAgZGVmIHRlc3QoKToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKIApAQCAtMzg2LDcgKzM4NiwyNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihTb21lQ2xhc3MsICdmcm9vYmxlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihTb21lQ2xhc3MsICdvcmQnKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfYnVpbHRpbnNfd2l0aG91dF9jcmVhdGUoc2VsZik6CisgICAgICAgIEBwYXRjaChfX25hbWVfXysnLm9yZCcpCisgICAgICAgIGRlZiB0ZXN0X29yZChtb2NrX29yZCk6CisgICAgICAgICAgICBtb2NrX29yZC5yZXR1cm5fdmFsdWUgPSAxMDEKKyAgICAgICAgICAgIHJldHVybiBvcmQoJ2MnKQorCisgICAgICAgIEBwYXRjaChfX25hbWVfXysnLm9wZW4nKQorICAgICAgICBkZWYgdGVzdF9vcGVuKG1vY2tfb3Blbik6CisgICAgICAgICAgICBtID0gbW9ja19vcGVuLnJldHVybl92YWx1ZQorICAgICAgICAgICAgbS5yZWFkLnJldHVybl92YWx1ZSA9ICdhYmNkJworCisgICAgICAgICAgICBmb2JqID0gb3BlbignZG9lc25vdGV4aXN0cy50eHQnKQorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCisgICAgICAgICAgICBmb2JqLmNsb3NlKCkKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X29yZCgpLCAxMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9vcGVuKCksICdhYmNkJykKIAogCiAgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zdGF0aWNfbWV0aG9kcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC91dGlsLnB5IGIvTGliL3VuaXR0ZXN0L3V0aWwucHkKaW5kZXggYWVlNDk4Zi4uNDU0ODVkYyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3V0aWwucHkKKysrIGIvTGliL3VuaXR0ZXN0L3V0aWwucHkKQEAgLTUyLDcgKzUyLDcgQEAKICAgICByZXR1cm4gcmVzdWx0WzpfTUFYX0xFTkdUSF0gKyAnIFt0cnVuY2F0ZWRdLi4uJwogCiBkZWYgc3RyY2xhc3MoY2xzKToKLSAgICByZXR1cm4gIiVzLiVzIiAlIChjbHMuX19tb2R1bGVfXywgY2xzLl9fbmFtZV9fKQorICAgIHJldHVybiAiJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19xdWFsbmFtZV9fKQogCiBkZWYgc29ydGVkX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwgYWN0dWFsKToKICAgICAiIiJGaW5kcyBlbGVtZW50cyBpbiBvbmx5IG9uZSBvciB0aGUgb3RoZXIgb2YgdHdvLCBzb3J0ZWQgaW5wdXQgbGlzdHMuCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL2Vycm9yLnB5IGIvTGliL3VybGxpYi9lcnJvci5weQppbmRleCA0NWI3MTY5Li5jNWI2NzVkIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL2Vycm9yLnB5CisrKyBiL0xpYi91cmxsaWIvZXJyb3IucHkKQEAgLTM1LDYgKzM1LDcgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICc8dXJsb3BlbiBlcnJvciAlcz4nICUgc2VsZi5yZWFzb24KIAorCiBjbGFzcyBIVFRQRXJyb3IoVVJMRXJyb3IsIHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsKToKICAgICAiIiJSYWlzZWQgd2hlbiBIVFRQIGVycm9yIG9jY3VycywgYnV0IGFsc28gYWN0cyBsaWtlIG5vbi1lcnJvciByZXR1cm4iIiIKICAgICBfX3N1cGVyX2luaXQgPSB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybC5fX2luaXRfXwpAQCAtNTUsNiArNTYsOSBAQAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gJ0hUVFAgRXJyb3IgJXM6ICVzJyAlIChzZWxmLmNvZGUsIHNlbGYubXNnKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxIVFRQRXJyb3IgJXM6ICVyPicgJSAoc2VsZi5jb2RlLCBzZWxmLm1zZykKKwogICAgICMgc2luY2UgVVJMRXJyb3Igc3BlY2lmaWVzIGEgLnJlYXNvbiBhdHRyaWJ1dGUsIEhUVFBFcnJvciBzaG91bGQgYWxzbwogICAgICMgIHByb3ZpZGUgdGhpcyBhdHRyaWJ1dGUuIFNlZSBpc3N1ZTEzMjExIGZvciBkaXNjdXNzaW9uLgogICAgIEBwcm9wZXJ0eQpAQCAtNjksOCArNzMsOSBAQAogICAgIGRlZiBoZWFkZXJzKHNlbGYsIGhlYWRlcnMpOgogICAgICAgICBzZWxmLmhkcnMgPSBoZWFkZXJzCiAKLSMgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGRvd25sb2FkZWQgc2l6ZSBkb2VzIG5vdCBtYXRjaCBjb250ZW50LWxlbmd0aAorCiBjbGFzcyBDb250ZW50VG9vU2hvcnRFcnJvcihVUkxFcnJvcik6CisgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGRvd25sb2FkZWQgc2l6ZSBkb2VzIG5vdCBtYXRjaCBjb250ZW50LWxlbmd0aC4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgY29udGVudCk6CiAgICAgICAgIFVSTEVycm9yLl9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCiAgICAgICAgIHNlbGYuY29udGVudCA9IGNvbnRlbnQKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcGFyc2UucHkgYi9MaWIvdXJsbGliL3BhcnNlLnB5CmluZGV4IGQzNjgzMzEuLjAxYzllNTggMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcGFyc2UucHkKKysrIGIvTGliL3VybGxpYi9wYXJzZS5weQpAQCAtMzQsNyArMzQsOSBAQAogX19hbGxfXyA9IFsidXJscGFyc2UiLCAidXJsdW5wYXJzZSIsICJ1cmxqb2luIiwgInVybGRlZnJhZyIsCiAgICAgICAgICAgICJ1cmxzcGxpdCIsICJ1cmx1bnNwbGl0IiwgInVybGVuY29kZSIsICJwYXJzZV9xcyIsCiAgICAgICAgICAgICJwYXJzZV9xc2wiLCAicXVvdGUiLCAicXVvdGVfcGx1cyIsICJxdW90ZV9mcm9tX2J5dGVzIiwKLSAgICAgICAgICAgInVucXVvdGUiLCAidW5xdW90ZV9wbHVzIiwgInVucXVvdGVfdG9fYnl0ZXMiXQorICAgICAgICAgICAidW5xdW90ZSIsICJ1bnF1b3RlX3BsdXMiLCAidW5xdW90ZV90b19ieXRlcyIsCisgICAgICAgICAgICJEZWZyYWdSZXN1bHQiLCAiUGFyc2VSZXN1bHQiLCAiU3BsaXRSZXN1bHQiLAorICAgICAgICAgICAiRGVmcmFnUmVzdWx0Qnl0ZXMiLCAiUGFyc2VSZXN1bHRCeXRlcyIsICJTcGxpdFJlc3VsdEJ5dGVzIl0KIAogIyBBIGNsYXNzaWZpY2F0aW9uIG9mIHNjaGVtZXMgKCcnIG1lYW5zIGFwcGx5IGJ5IGRlZmF1bHQpCiB1c2VzX3JlbGF0aXZlID0gWydmdHAnLCAnaHR0cCcsICdnb3BoZXInLCAnbm50cCcsICdpbWFwJywKQEAgLTQwOSwxMSArNDExLDEzIEBACiAgICAgICAgIHJldHVybiB1cmwKICAgICBpZiBub3QgdXJsOgogICAgICAgICByZXR1cm4gYmFzZQorCiAgICAgYmFzZSwgdXJsLCBfY29lcmNlX3Jlc3VsdCA9IF9jb2VyY2VfYXJncyhiYXNlLCB1cmwpCiAgICAgYnNjaGVtZSwgYm5ldGxvYywgYnBhdGgsIGJwYXJhbXMsIGJxdWVyeSwgYmZyYWdtZW50ID0gXAogICAgICAgICAgICAgdXJscGFyc2UoYmFzZSwgJycsIGFsbG93X2ZyYWdtZW50cykKICAgICBzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQgPSBcCiAgICAgICAgICAgICB1cmxwYXJzZSh1cmwsIGJzY2hlbWUsIGFsbG93X2ZyYWdtZW50cykKKwogICAgIGlmIHNjaGVtZSAhPSBic2NoZW1lIG9yIHNjaGVtZSBub3QgaW4gdXNlc19yZWxhdGl2ZToKICAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybCkKICAgICBpZiBzY2hlbWUgaW4gdXNlc19uZXRsb2M6CkBAIC00MjEsOSArNDI1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQogICAgICAgICBuZXRsb2MgPSBibmV0bG9jCi0gICAgaWYgcGF0aFs6MV0gPT0gJy8nOgotICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQorCiAgICAgaWYgbm90IHBhdGggYW5kIG5vdCBwYXJhbXM6CiAgICAgICAgIHBhdGggPSBicGF0aAogICAgICAgICBwYXJhbXMgPSBicGFyYW1zCkBAIC00MzEsMjkgKzQzMyw0NSBAQAogICAgICAgICAgICAgcXVlcnkgPSBicXVlcnkKICAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKLSAgICBzZWdtZW50cyA9IGJwYXRoLnNwbGl0KCcvJylbOi0xXSArIHBhdGguc3BsaXQoJy8nKQotICAgICMgWFhYIFRoZSBzdHVmZiBiZWxvdyBpcyBib2d1cyBpbiB2YXJpb3VzIHdheXMuLi4KLSAgICBpZiBzZWdtZW50c1stMV0gPT0gJy4nOgotICAgICAgICBzZWdtZW50c1stMV0gPSAnJwotICAgIHdoaWxlICcuJyBpbiBzZWdtZW50czoKLSAgICAgICAgc2VnbWVudHMucmVtb3ZlKCcuJykKLSAgICB3aGlsZSAxOgotICAgICAgICBpID0gMQotICAgICAgICBuID0gbGVuKHNlZ21lbnRzKSAtIDEKLSAgICAgICAgd2hpbGUgaSA8IG46Ci0gICAgICAgICAgICBpZiAoc2VnbWVudHNbaV0gPT0gJy4uJwotICAgICAgICAgICAgICAgIGFuZCBzZWdtZW50c1tpLTFdIG5vdCBpbiAoJycsICcuLicpKToKLSAgICAgICAgICAgICAgICBkZWwgc2VnbWVudHNbaS0xOmkrMV0KLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaSA9IGkrMQorCisgICAgYmFzZV9wYXJ0cyA9IGJwYXRoLnNwbGl0KCcvJykKKyAgICBpZiBiYXNlX3BhcnRzWy0xXSAhPSAnJzoKKyAgICAgICAgIyB0aGUgbGFzdCBpdGVtIGlzIG5vdCBhIGRpcmVjdG9yeSwgc28gd2lsbCBub3QgYmUgdGFrZW4gaW50byBhY2NvdW50CisgICAgICAgICMgaW4gcmVzb2x2aW5nIHRoZSByZWxhdGl2ZSBwYXRoCisgICAgICAgIGRlbCBiYXNlX3BhcnRzWy0xXQorCisgICAgIyBmb3IgcmZjMzk4NiwgaWdub3JlIGFsbCBiYXNlIHBhdGggc2hvdWxkIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYmUgcm9vdC4KKyAgICBpZiBwYXRoWzoxXSA9PSAnLyc6CisgICAgICAgIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpCisgICAgZWxzZToKKyAgICAgICAgc2VnbWVudHMgPSBiYXNlX3BhcnRzICsgcGF0aC5zcGxpdCgnLycpCisgICAgICAgICMgZmlsdGVyIG91dCBlbGVtZW50cyB0aGF0IHdvdWxkIGNhdXNlIHJlZHVuZGFudCBzbGFzaGVzIG9uIHJlLWpvaW5pbmcKKyAgICAgICAgIyB0aGUgcmVzb2x2ZWRfcGF0aAorICAgICAgICBzZWdtZW50c1sxOi0xXSA9IGZpbHRlcihOb25lLCBzZWdtZW50c1sxOi0xXSkKKworICAgIHJlc29sdmVkX3BhdGggPSBbXQorCisgICAgZm9yIHNlZyBpbiBzZWdtZW50czoKKyAgICAgICAgaWYgc2VnID09ICcuLic6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aC5wb3AoKQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgYW55IC4uIHNlZ21lbnRzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGNhdXNlIGFuIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICAjIHdoZW4gcG9wcGVkIGZyb20gcmVzb2x2ZWRfcGF0aCBpZiByZXNvbHZpbmcgZm9yIHJmYzM5ODYKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgc2VnID09ICcuJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBicmVhawotICAgIGlmIHNlZ21lbnRzID09IFsnJywgJy4uJ106Ci0gICAgICAgIHNlZ21lbnRzWy0xXSA9ICcnCi0gICAgZWxpZiBsZW4oc2VnbWVudHMpID49IDIgYW5kIHNlZ21lbnRzWy0xXSA9PSAnLi4nOgotICAgICAgICBzZWdtZW50c1stMjpdID0gWycnXQotICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgJy8nLmpvaW4oc2VnbWVudHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQorICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aC5hcHBlbmQoc2VnKQorCisgICAgaWYgc2VnbWVudHNbLTFdIGluICgnLicsICcuLicpOgorICAgICAgICAjIGRvIHNvbWUgcG9zdC1wcm9jZXNzaW5nIGhlcmUuIGlmIHRoZSBsYXN0IHNlZ21lbnQgd2FzIGEgcmVsYXRpdmUgZGlyLAorICAgICAgICAjIHRoZW4gd2UgbmVlZCB0byBhcHBlbmQgdGhlIHRyYWlsaW5nICcvJworICAgICAgICByZXNvbHZlZF9wYXRoLmFwcGVuZCgnJykKKworICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgJy8nLmpvaW4oCisgICAgICAgIHJlc29sdmVkX3BhdGgpIG9yICcvJywgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKKwogCiBkZWYgdXJsZGVmcmFnKHVybCk6CiAgICAgIiIiUmVtb3ZlcyBhbnkgZXhpc3RpbmcgZnJhZ21lbnQgZnJvbSBVUkwuCkBAIC02NDEsNyArNjU5LDcgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIyBXaXRob3V0IHRoaXMsIHdpbGwganVzdCBkaXNwbGF5IGFzIGEgZGVmYXVsdGRpY3QKLSAgICAgICAgcmV0dXJuICI8UXVvdGVyICVyPiIgJSBkaWN0KHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzICVyPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGRpY3Qoc2VsZikpCiAKICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwgYik6CiAgICAgICAgICMgSGFuZGxlIGEgY2FjaGUgbWlzcy4gU3RvcmUgcXVvdGVkIHN0cmluZyBpbiBjYWNoZSBhbmQgcmV0dXJuLgpAQCAtNzMyLDcgKzc1MCw4IEBACiAgICAgICAgIF9zYWZlX3F1b3RlcnNbc2FmZV0gPSBxdW90ZXIgPSBRdW90ZXIoc2FmZSkuX19nZXRpdGVtX18KICAgICByZXR1cm4gJycuam9pbihbcXVvdGVyKGNoYXIpIGZvciBjaGFyIGluIGJzXSkKIAotZGVmIHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKK2RlZiB1cmxlbmNvZGUocXVlcnksIGRvc2VxPUZhbHNlLCBzYWZlPScnLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwKKyAgICAgICAgICAgICAgcXVvdGVfdmlhPXF1b3RlX3BsdXMpOgogICAgICIiIkVuY29kZSBhIGRpY3Qgb3Igc2VxdWVuY2Ugb2YgdHdvLWVsZW1lbnQgdHVwbGVzIGludG8gYSBVUkwgcXVlcnkgc3RyaW5nLgogCiAgICAgSWYgYW55IHZhbHVlcyBpbiB0aGUgcXVlcnkgYXJnIGFyZSBzZXF1ZW5jZXMgYW5kIGRvc2VxIGlzIHRydWUsIGVhY2gKQEAgLTc0NCw4ICs3NjMsOCBAQAogCiAgICAgVGhlIGNvbXBvbmVudHMgb2YgYSBxdWVyeSBhcmcgbWF5IGVhY2ggYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgYnl0ZXMgdHlwZS4KIAotICAgIFRoZSBzYWZlLCBlbmNvZGluZywgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0byBxdW90ZV9wbHVzKCkKLSAgICAoZW5jb2RpbmcgYW5kIGVycm9ycyBvbmx5IGlmIGEgY29tcG9uZW50IGlzIGEgc3RyKS4KKyAgICBUaGUgc2FmZSwgZW5jb2RpbmcsIGFuZCBlcnJvcnMgcGFyYW1ldGVycyBhcmUgcGFzc2VkIGRvd24gdG8gdGhlIGZ1bmN0aW9uCisgICAgc3BlY2lmaWVkIGJ5IHF1b3RlX3ZpYSAoZW5jb2RpbmcgYW5kIGVycm9ycyBvbmx5IGlmIGEgY29tcG9uZW50IGlzIGEgc3RyKS4KICAgICAiIiIKIAogICAgIGlmIGhhc2F0dHIocXVlcnksICJpdGVtcyIpOgpAQCAtNzcxLDI3ICs3OTAsMjcgQEAKICAgICBpZiBub3QgZG9zZXE6CiAgICAgICAgIGZvciBrLCB2IGluIHF1ZXJ5OgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoaywgc2FmZSkKKyAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKGssIHNhZmUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGsgPSBxdW90ZV9wbHVzKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXModiwgc2FmZSkKKyAgICAgICAgICAgICAgICB2ID0gcXVvdGVfdmlhKHYsIHNhZmUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHN0cih2KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICB2ID0gcXVvdGVfdmlhKHN0cih2KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgIGVsc2U6CiAgICAgICAgIGZvciBrLCB2IGluIHF1ZXJ5OgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoaywgc2FmZSkKKyAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKGssIHNhZmUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGsgPSBxdW90ZV9wbHVzKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXModiwgc2FmZSkKKyAgICAgICAgICAgICAgICB2ID0gcXVvdGVfdmlhKHYsIHNhZmUpCiAgICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uodiwgc3RyKToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyh2LCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEodiwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtNzk5LDE1ICs4MTgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgeCA9IGxlbih2KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICMgbm90IGEgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXMoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICB2ID0gcXVvdGVfdmlhKHN0cih2KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBsb29wIG92ZXIgdGhlIHNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAgIGZvciBlbHQgaW4gdjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZWx0LCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gcXVvdGVfcGx1cyhlbHQsIHNhZmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gcXVvdGVfdmlhKGVsdCwgc2FmZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gcXVvdGVfcGx1cyhzdHIoZWx0KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV92aWEoc3RyKGVsdCksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgZWx0KQogICAgIHJldHVybiAnJicuam9pbihsKQogCkBAIC04NTIsMTIgKzg3MSwxMiBAQAogICAgICIiInNwbGl0dHlwZSgndHlwZTpvcGFxdWVzdHJpbmcnKSAtLT4gJ3R5cGUnLCAnb3BhcXVlc3RyaW5nJy4iIiIKICAgICBnbG9iYWwgX3R5cGVwcm9nCiAgICAgaWYgX3R5cGVwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF90eXBlcHJvZyA9IHJlLmNvbXBpbGUoJ14oW14vOl0rKTonKQorICAgICAgICBfdHlwZXByb2cgPSByZS5jb21waWxlKCcoW14vOl0rKTooLiopJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfdHlwZXByb2cubWF0Y2godXJsKQogICAgIGlmIG1hdGNoOgotICAgICAgICBzY2hlbWUgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICByZXR1cm4gc2NoZW1lLmxvd2VyKCksIHVybFtsZW4oc2NoZW1lKSArIDE6XQorICAgICAgICBzY2hlbWUsIGRhdGEgPSBtYXRjaC5ncm91cHMoKQorICAgICAgICByZXR1cm4gc2NoZW1lLmxvd2VyKCksIGRhdGEKICAgICByZXR1cm4gTm9uZSwgdXJsCiAKIF9ob3N0cHJvZyA9IE5vbmUKQEAgLTg2NSwzOCArODg0LDI1IEBACiAgICAgIiIic3BsaXRob3N0KCcvL2hvc3RbOnBvcnRdL3BhdGgnKSAtLT4gJ2hvc3RbOnBvcnRdJywgJy9wYXRoJy4iIiIKICAgICBnbG9iYWwgX2hvc3Rwcm9nCiAgICAgaWYgX2hvc3Rwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9ob3N0cHJvZyA9IHJlLmNvbXBpbGUoJ14vLyhbXi8/XSopKC4qKSQnKQorICAgICAgICBfaG9zdHByb2cgPSByZS5jb21waWxlKCcvLyhbXi8/XSopKC4qKScsIHJlLkRPVEFMTCkKIAogICAgIG1hdGNoID0gX2hvc3Rwcm9nLm1hdGNoKHVybCkKICAgICBpZiBtYXRjaDoKLSAgICAgICAgaG9zdF9wb3J0ID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgcGF0aCA9IG1hdGNoLmdyb3VwKDIpCi0gICAgICAgIGlmIHBhdGggYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgaG9zdF9wb3J0LCBwYXRoID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgaWYgcGF0aCBhbmQgcGF0aFswXSAhPSAnLyc6CiAgICAgICAgICAgICBwYXRoID0gJy8nICsgcGF0aAogICAgICAgICByZXR1cm4gaG9zdF9wb3J0LCBwYXRoCiAgICAgcmV0dXJuIE5vbmUsIHVybAogCi1fdXNlcnByb2cgPSBOb25lCiBkZWYgc3BsaXR1c2VyKGhvc3QpOgogICAgICIiInNwbGl0dXNlcigndXNlcls6cGFzc3dkXUBob3N0Wzpwb3J0XScpIC0tPiAndXNlcls6cGFzc3dkXScsICdob3N0Wzpwb3J0XScuIiIiCi0gICAgZ2xvYmFsIF91c2VycHJvZwotICAgIGlmIF91c2VycHJvZyBpcyBOb25lOgotICAgICAgICBfdXNlcnByb2cgPSByZS5jb21waWxlKCdeKC4qKUAoLiopJCcpCisgICAgdXNlciwgZGVsaW0sIGhvc3QgPSBob3N0LnJwYXJ0aXRpb24oJ0AnKQorICAgIHJldHVybiAodXNlciBpZiBkZWxpbSBlbHNlIE5vbmUpLCBob3N0CiAKLSAgICBtYXRjaCA9IF91c2VycHJvZy5tYXRjaChob3N0KQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKLSAgICByZXR1cm4gTm9uZSwgaG9zdAotCi1fcGFzc3dkcHJvZyA9IE5vbmUKIGRlZiBzcGxpdHBhc3N3ZCh1c2VyKToKICAgICAiIiJzcGxpdHBhc3N3ZCgndXNlcjpwYXNzd2QnKSAtPiAndXNlcicsICdwYXNzd2QnLiIiIgotICAgIGdsb2JhbCBfcGFzc3dkcHJvZwotICAgIGlmIF9wYXNzd2Rwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9wYXNzd2Rwcm9nID0gcmUuY29tcGlsZSgnXihbXjpdKik6KC4qKSQnLHJlLlMpCi0KLSAgICBtYXRjaCA9IF9wYXNzd2Rwcm9nLm1hdGNoKHVzZXIpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQotICAgIHJldHVybiB1c2VyLCBOb25lCisgICAgdXNlciwgZGVsaW0sIHBhc3N3ZCA9IHVzZXIucGFydGl0aW9uKCc6JykKKyAgICByZXR1cm4gdXNlciwgKHBhc3N3ZCBpZiBkZWxpbSBlbHNlIE5vbmUpCiAKICMgc3BsaXR0YWcoJy9wYXRoI3RhZycpIC0tPiAnL3BhdGgnLCAndGFnJwogX3BvcnRwcm9nID0gTm9uZQpAQCAtOTA0LDcgKzkxMCw3IEBACiAgICAgIiIic3BsaXRwb3J0KCdob3N0OnBvcnQnKSAtLT4gJ2hvc3QnLCAncG9ydCcuIiIiCiAgICAgZ2xvYmFsIF9wb3J0cHJvZwogICAgIGlmIF9wb3J0cHJvZyBpcyBOb25lOgotICAgICAgICBfcG9ydHByb2cgPSByZS5jb21waWxlKCdeKC4qKTooWzAtOV0qKSQnKQorICAgICAgICBfcG9ydHByb2cgPSByZS5jb21waWxlKCcoLiopOihbMC05XSopJCcsIHJlLkRPVEFMTCkKIAogICAgIG1hdGNoID0gX3BvcnRwcm9nLm1hdGNoKGhvc3QpCiAgICAgaWYgbWF0Y2g6CkBAIC05MTMsNDcgKzkxOSwzNCBAQAogICAgICAgICAgICAgcmV0dXJuIGhvc3QsIHBvcnQKICAgICByZXR1cm4gaG9zdCwgTm9uZQogCi1fbnBvcnRwcm9nID0gTm9uZQogZGVmIHNwbGl0bnBvcnQoaG9zdCwgZGVmcG9ydD0tMSk6CiAgICAgIiIiU3BsaXQgaG9zdCBhbmQgcG9ydCwgcmV0dXJuaW5nIG51bWVyaWMgcG9ydC4KICAgICBSZXR1cm4gZ2l2ZW4gZGVmYXVsdCBwb3J0IGlmIG5vICc6JyBmb3VuZDsgZGVmYXVsdHMgdG8gLTEuCiAgICAgUmV0dXJuIG51bWVyaWNhbCBwb3J0IGlmIGEgdmFsaWQgbnVtYmVyIGFyZSBmb3VuZCBhZnRlciAnOicuCiAgICAgUmV0dXJuIE5vbmUgaWYgJzonIGJ1dCBub3QgYSB2YWxpZCBudW1iZXIuIiIiCi0gICAgZ2xvYmFsIF9ucG9ydHByb2cKLSAgICBpZiBfbnBvcnRwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9ucG9ydHByb2cgPSByZS5jb21waWxlKCdeKC4qKTooLiopJCcpCi0KLSAgICBtYXRjaCA9IF9ucG9ydHByb2cubWF0Y2goaG9zdCkKLSAgICBpZiBtYXRjaDoKLSAgICAgICAgaG9zdCwgcG9ydCA9IG1hdGNoLmdyb3VwKDEsIDIpCi0gICAgICAgIGlmIHBvcnQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnBvcnQgPSBpbnQocG9ydCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIG5wb3J0ID0gTm9uZQotICAgICAgICAgICAgcmV0dXJuIGhvc3QsIG5wb3J0CisgICAgaG9zdCwgZGVsaW0sIHBvcnQgPSBob3N0LnJwYXJ0aXRpb24oJzonKQorICAgIGlmIG5vdCBkZWxpbToKKyAgICAgICAgaG9zdCA9IHBvcnQKKyAgICBlbGlmIHBvcnQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5wb3J0ID0gaW50KHBvcnQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgbnBvcnQgPSBOb25lCisgICAgICAgIHJldHVybiBob3N0LCBucG9ydAogICAgIHJldHVybiBob3N0LCBkZWZwb3J0CiAKLV9xdWVyeXByb2cgPSBOb25lCiBkZWYgc3BsaXRxdWVyeSh1cmwpOgogICAgICIiInNwbGl0cXVlcnkoJy9wYXRoP3F1ZXJ5JykgLS0+ICcvcGF0aCcsICdxdWVyeScuIiIiCi0gICAgZ2xvYmFsIF9xdWVyeXByb2cKLSAgICBpZiBfcXVlcnlwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9xdWVyeXByb2cgPSByZS5jb21waWxlKCdeKC4qKVw/KFteP10qKSQnKQotCi0gICAgbWF0Y2ggPSBfcXVlcnlwcm9nLm1hdGNoKHVybCkKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCisgICAgcGF0aCwgZGVsaW0sIHF1ZXJ5ID0gdXJsLnJwYXJ0aXRpb24oJz8nKQorICAgIGlmIGRlbGltOgorICAgICAgICByZXR1cm4gcGF0aCwgcXVlcnkKICAgICByZXR1cm4gdXJsLCBOb25lCiAKLV90YWdwcm9nID0gTm9uZQogZGVmIHNwbGl0dGFnKHVybCk6CiAgICAgIiIic3BsaXR0YWcoJy9wYXRoI3RhZycpIC0tPiAnL3BhdGgnLCAndGFnJy4iIiIKLSAgICBnbG9iYWwgX3RhZ3Byb2cKLSAgICBpZiBfdGFncHJvZyBpcyBOb25lOgotICAgICAgICBfdGFncHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopIyhbXiNdKikkJykKLQotICAgIG1hdGNoID0gX3RhZ3Byb2cubWF0Y2godXJsKQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKKyAgICBwYXRoLCBkZWxpbSwgdGFnID0gdXJsLnJwYXJ0aXRpb24oJyMnKQorICAgIGlmIGRlbGltOgorICAgICAgICByZXR1cm4gcGF0aCwgdGFnCiAgICAgcmV0dXJuIHVybCwgTm9uZQogCiBkZWYgc3BsaXRhdHRyKHVybCk6CkBAIC05NjIsMTMgKzk1NSw3IEBACiAgICAgd29yZHMgPSB1cmwuc3BsaXQoJzsnKQogICAgIHJldHVybiB3b3Jkc1swXSwgd29yZHNbMTpdCiAKLV92YWx1ZXByb2cgPSBOb25lCiBkZWYgc3BsaXR2YWx1ZShhdHRyKToKICAgICAiIiJzcGxpdHZhbHVlKCdhdHRyPXZhbHVlJykgLS0+ICdhdHRyJywgJ3ZhbHVlJy4iIiIKLSAgICBnbG9iYWwgX3ZhbHVlcHJvZwotICAgIGlmIF92YWx1ZXByb2cgaXMgTm9uZToKLSAgICAgICAgX3ZhbHVlcHJvZyA9IHJlLmNvbXBpbGUoJ14oW149XSopPSguKikkJykKLQotICAgIG1hdGNoID0gX3ZhbHVlcHJvZy5tYXRjaChhdHRyKQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKLSAgICByZXR1cm4gYXR0ciwgTm9uZQorICAgIGF0dHIsIGRlbGltLCB2YWx1ZSA9IGF0dHIucGFydGl0aW9uKCc9JykKKyAgICByZXR1cm4gYXR0ciwgKHZhbHVlIGlmIGRlbGltIGVsc2UgTm9uZSkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCA1Y2YwY2YyLi5lYWRhMGE5IDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC0xMjAsOSArMTIwLDEwIEBACiAgICAgJ1JlcXVlc3QnLCAnT3BlbmVyRGlyZWN0b3InLCAnQmFzZUhhbmRsZXInLCAnSFRUUERlZmF1bHRFcnJvckhhbmRsZXInLAogICAgICdIVFRQUmVkaXJlY3RIYW5kbGVyJywgJ0hUVFBDb29raWVQcm9jZXNzb3InLCAnUHJveHlIYW5kbGVyJywKICAgICAnSFRUUFBhc3N3b3JkTWdyJywgJ0hUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0nLAotICAgICdBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLCAnSFRUUEJhc2ljQXV0aEhhbmRsZXInLCAnUHJveHlCYXNpY0F1dGhIYW5kbGVyJywKLSAgICAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsICdIVFRQRGlnZXN0QXV0aEhhbmRsZXInLCAnUHJveHlEaWdlc3RBdXRoSGFuZGxlcicsCi0gICAgJ0hUVFBIYW5kbGVyJywgJ0ZpbGVIYW5kbGVyJywgJ0ZUUEhhbmRsZXInLCAnQ2FjaGVGVFBIYW5kbGVyJywgJ0RhdGFIYW5kbGVyJywKKyAgICAnSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCcsICdBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLAorICAgICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLCAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsCisgICAgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBIYW5kbGVyJywKKyAgICAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLCAnRGF0YUhhbmRsZXInLAogICAgICdVbmtub3duSGFuZGxlcicsICdIVFRQRXJyb3JQcm9jZXNzb3InLAogICAgICMgRnVuY3Rpb25zCiAgICAgJ3VybG9wZW4nLCAnaW5zdGFsbF9vcGVuZXInLCAnYnVpbGRfb3BlbmVyJywKQEAgLTgzNSw2ICs4MzYsMzcgQEAKICAgICAgICAgcmV0dXJuIEhUVFBQYXNzd29yZE1nci5maW5kX3VzZXJfcGFzc3dvcmQoc2VsZiwgTm9uZSwgYXV0aHVyaSkKIAogCitjbGFzcyBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0pOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IHt9CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGFkZF9wYXNzd29yZChzZWxmLCByZWFsbSwgdXJpLCB1c2VyLCBwYXNzd2QsIGlzX2F1dGhlbnRpY2F0ZWQ9RmFsc2UpOgorICAgICAgICBzZWxmLnVwZGF0ZV9hdXRoZW50aWNhdGVkKHVyaSwgaXNfYXV0aGVudGljYXRlZCkKKyAgICAgICAgIyBBZGQgYSBkZWZhdWx0IGZvciBwcmlvciBhdXRoIHJlcXVlc3RzCisgICAgICAgIGlmIHJlYWxtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3VwZXIoKS5hZGRfcGFzc3dvcmQoTm9uZSwgdXJpLCB1c2VyLCBwYXNzd2QpCisgICAgICAgIHN1cGVyKCkuYWRkX3Bhc3N3b3JkKHJlYWxtLCB1cmksIHVzZXIsIHBhc3N3ZCkKKworICAgIGRlZiB1cGRhdGVfYXV0aGVudGljYXRlZChzZWxmLCB1cmksIGlzX2F1dGhlbnRpY2F0ZWQ9RmFsc2UpOgorICAgICAgICAjIHVyaSBjb3VsZCBiZSBhIHNpbmdsZSBVUkkgb3IgYSBzZXF1ZW5jZQorICAgICAgICBpZiBpc2luc3RhbmNlKHVyaSwgc3RyKToKKyAgICAgICAgICAgIHVyaSA9IFt1cmldCisKKyAgICAgICAgZm9yIGRlZmF1bHRfcG9ydCBpbiBUcnVlLCBGYWxzZToKKyAgICAgICAgICAgIGZvciB1IGluIHVyaToKKyAgICAgICAgICAgICAgICByZWR1Y2VkX3VyaSA9IHNlbGYucmVkdWNlX3VyaSh1LCBkZWZhdWx0X3BvcnQpCisgICAgICAgICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkW3JlZHVjZWRfdXJpXSA9IGlzX2F1dGhlbnRpY2F0ZWQKKworICAgIGRlZiBpc19hdXRoZW50aWNhdGVkKHNlbGYsIGF1dGh1cmkpOgorICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgorICAgICAgICAgICAgcmVkdWNlZF9hdXRodXJpID0gc2VsZi5yZWR1Y2VfdXJpKGF1dGh1cmksIGRlZmF1bHRfcG9ydCkKKyAgICAgICAgICAgIGZvciB1cmkgaW4gc2VsZi5hdXRoZW50aWNhdGVkOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfc3VidXJpKHVyaSwgcmVkdWNlZF9hdXRodXJpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXV0aGVudGljYXRlZFt1cmldCisKKwogY2xhc3MgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyOgogCiAgICAgIyBYWFggdGhpcyBhbGxvd3MgZm9yIG11bHRpcGxlIGF1dGgtc2NoZW1lcywgYnV0IHdpbGwgc3R1cGlkbHkgcGljawpAQCAtODg5LDYgKzkyMSwzMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAorICAgIGRlZiBodHRwX3JlcXVlc3Qoc2VsZiwgcmVxKToKKyAgICAgICAgaWYgKG5vdCBoYXNhdHRyKHNlbGYucGFzc3dkLCAnaXNfYXV0aGVudGljYXRlZCcpIG9yCisgICAgICAgICAgIG5vdCBzZWxmLnBhc3N3ZC5pc19hdXRoZW50aWNhdGVkKHJlcS5mdWxsX3VybCkpOgorICAgICAgICAgICAgcmV0dXJuIHJlcQorCisgICAgICAgIGlmIG5vdCByZXEuaGFzX2hlYWRlcignQXV0aG9yaXphdGlvbicpOgorICAgICAgICAgICAgdXNlciwgcGFzc3dkID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKE5vbmUsIHJlcS5mdWxsX3VybCkKKyAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gJ3swfTp7MX0nLmZvcm1hdCh1c2VyLCBwYXNzd2QpLmVuY29kZSgpCisgICAgICAgICAgICBhdXRoX3N0ciA9IGJhc2U2NC5zdGFuZGFyZF9iNjRlbmNvZGUoY3JlZGVudGlhbHMpLmRlY29kZSgpCisgICAgICAgICAgICByZXEuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoJ0F1dGhvcml6YXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYXNpYyB7fScuZm9ybWF0KGF1dGhfc3RyLnN0cmlwKCkpKQorICAgICAgICByZXR1cm4gcmVxCisKKyAgICBkZWYgaHR0cF9yZXNwb25zZShzZWxmLCByZXEsIHJlc3BvbnNlKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLnBhc3N3ZCwgJ2lzX2F1dGhlbnRpY2F0ZWQnKToKKyAgICAgICAgICAgIGlmIDIwMCA8PSByZXNwb25zZS5jb2RlIDwgMzAwOgorICAgICAgICAgICAgICAgIHNlbGYucGFzc3dkLnVwZGF0ZV9hdXRoZW50aWNhdGVkKHJlcS5mdWxsX3VybCwgVHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wYXNzd2QudXBkYXRlX2F1dGhlbnRpY2F0ZWQocmVxLmZ1bGxfdXJsLCBGYWxzZSkKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCisKKyAgICBodHRwc19yZXF1ZXN0ID0gaHR0cF9yZXF1ZXN0CisgICAgaHR0cHNfcmVzcG9uc2UgPSBodHRwX3Jlc3BvbnNlCisKKwogCiBjbGFzcyBIVFRQQmFzaWNBdXRoSGFuZGxlcihBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIsIEJhc2VIYW5kbGVyKToKIApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weSBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKaW5kZXggMWQ3Yjc1MS4uNGZiYjBjYiAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aCA9PSAiKiIgb3IgZmlsZW5hbWUuc3RhcnRzd2l0aChzZWxmLnBhdGgpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLmFsbG93YW5jZSBhbmQgIkFsbG93IiBvciAiRGlzYWxsb3ciKSArICI6ICIgKyBzZWxmLnBhdGgKKyAgICAgICAgcmV0dXJuICgiQWxsb3ciIGlmIHNlbGYuYWxsb3dhbmNlIGVsc2UgIkRpc2FsbG93IikgKyAiOiAiICsgc2VsZi5wYXRoCiAKIAogY2xhc3MgRW50cnk6CmRpZmYgLS1naXQgYS9MaWIvdXVpZC5weSBiL0xpYi91dWlkLnB5CmluZGV4IDEwNjFiZmYuLjVjNzMxZWMgMTAwNjQ0Ci0tLSBhL0xpYi91dWlkLnB5CisrKyBiL0xpYi91dWlkLnB5CkBAIC0xMzksMTAgKzEzOSw4IEBACiAgICAgICAgIGlmIGJ5dGVzX2xlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbGVuKGJ5dGVzX2xlKSAhPSAxNjoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdieXRlc19sZSBpcyBub3QgYSAxNi1jaGFyIHN0cmluZycpCi0gICAgICAgICAgICBieXRlcyA9IChieXRlc18ocmV2ZXJzZWQoYnl0ZXNfbGVbMDo0XSkpICsKLSAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc19sZVs0OjZdKSkgKwotICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfKHJldmVyc2VkKGJ5dGVzX2xlWzY6OF0pKSArCi0gICAgICAgICAgICAgICAgICAgICBieXRlc19sZVs4Ol0pCisgICAgICAgICAgICBieXRlcyA9IChieXRlc19sZVs0LTE6Oi0xXSArIGJ5dGVzX2xlWzYtMTo0LTE6LTFdICsKKyAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2xlWzgtMTo2LTE6LTFdICsgYnl0ZXNfbGVbODpdKQogICAgICAgICBpZiBieXRlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGxlbihieXRlcykgIT0gMTY6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYnl0ZXMgaXMgbm90IGEgMTYtY2hhciBzdHJpbmcnKQpAQCAtMTg3LDExICsxODUsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW50ID09IG90aGVyLmludAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVVUlEKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmludCAhPSBvdGhlci5pbnQKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KICAgICAjIFEuIFdoYXQncyB0aGUgdmFsdWUgb2YgYmVpbmcgYWJsZSB0byBzb3J0IFVVSURzPwogICAgICMgQS4gVXNlIHRoZW0gYXMga2V5cyBpbiBhIEItVHJlZSBvciBzaW1pbGFyIG1hcHBpbmcuCiAKQEAgLTIyMiw3ICsyMTUsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5pbnQKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdVVUlEKCVyKScgJSBzdHIoc2VsZikKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCiAKICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1VVSUQgb2JqZWN0cyBhcmUgaW1tdXRhYmxlJykKQEAgLTIzNCwxNyArMjI3LDEyIEBACiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnl0ZXMoc2VsZik6Ci0gICAgICAgIGJ5dGVzID0gYnl0ZWFycmF5KCkKLSAgICAgICAgZm9yIHNoaWZ0IGluIHJhbmdlKDAsIDEyOCwgOCk6Ci0gICAgICAgICAgICBieXRlcy5pbnNlcnQoMCwgKHNlbGYuaW50ID4+IHNoaWZ0KSAmIDB4ZmYpCi0gICAgICAgIHJldHVybiBieXRlc18oYnl0ZXMpCisgICAgICAgIHJldHVybiBzZWxmLmludC50b19ieXRlcygxNiwgJ2JpZycpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnl0ZXNfbGUoc2VsZik6CiAgICAgICAgIGJ5dGVzID0gc2VsZi5ieXRlcwotICAgICAgICByZXR1cm4gKGJ5dGVzXyhyZXZlcnNlZChieXRlc1swOjRdKSkgKwotICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc1s0OjZdKSkgKwotICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc1s2OjhdKSkgKworICAgICAgICByZXR1cm4gKGJ5dGVzWzQtMTo6LTFdICsgYnl0ZXNbNi0xOjQtMTotMV0gKyBieXRlc1s4LTE6Ni0xOi0xXSArCiAgICAgICAgICAgICAgICAgYnl0ZXNbODpdKQogCiAgICAgQHByb3BlcnR5CkBAIC0zMTEsMzMgKzI5OSwzOCBAQAogICAgICAgICBpZiBzZWxmLnZhcmlhbnQgPT0gUkZDXzQxMjI6CiAgICAgICAgICAgICByZXR1cm4gaW50KChzZWxmLmludCA+PiA3NikgJiAweGYpCiAKLWRlZiBfcG9wZW4oY29tbWFuZCwgYXJncyk6Ci0gICAgaW1wb3J0IG9zLCBzaHV0aWwKK2RlZiBfcG9wZW4oY29tbWFuZCwgKmFyZ3MpOgorICAgIGltcG9ydCBvcywgc2h1dGlsLCBzdWJwcm9jZXNzCiAgICAgZXhlY3V0YWJsZSA9IHNodXRpbC53aGljaChjb21tYW5kKQogICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgcGF0aCA9IG9zLnBhdGhzZXAuam9pbigoJy9zYmluJywgJy91c3Ivc2JpbicpKQogICAgICAgICBleGVjdXRhYmxlID0gc2h1dGlsLndoaWNoKGNvbW1hbmQsIHBhdGg9cGF0aCkKICAgICAgICAgaWYgZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAjIExDX0FMTCB0byBlbnN1cmUgRW5nbGlzaCBvdXRwdXQsIDI+L2Rldi9udWxsIHRvIHByZXZlbnQgb3V0cHV0IG9uCi0gICAgIyBzdGRlcnIgKE5vdGU6IHdlIGRvbid0IGhhdmUgYW4gZXhhbXBsZSB3aGVyZSB0aGUgd29yZHMgd2Ugc2VhcmNoIGZvcgotICAgICMgYXJlIGFjdHVhbGx5IGxvY2FsaXplZCwgYnV0IGluIHRoZW9yeSBzb21lIHN5c3RlbSBjb3VsZCBkbyBzby4pCi0gICAgY21kID0gJ0xDX0FMTD1DICVzICVzIDI+L2Rldi9udWxsJyAlIChleGVjdXRhYmxlLCBhcmdzKQotICAgIHJldHVybiBvcy5wb3BlbihjbWQpCisgICAgIyBMQ19BTEw9QyB0byBlbnN1cmUgRW5nbGlzaCBvdXRwdXQsIHN0ZGVycj1ERVZOVUxMIHRvIHByZXZlbnQgb3V0cHV0CisgICAgIyBvbiBzdGRlcnIgKE5vdGU6IHdlIGRvbid0IGhhdmUgYW4gZXhhbXBsZSB3aGVyZSB0aGUgd29yZHMgd2Ugc2VhcmNoCisgICAgIyBmb3IgYXJlIGFjdHVhbGx5IGxvY2FsaXplZCwgYnV0IGluIHRoZW9yeSBzb21lIHN5c3RlbSBjb3VsZCBkbyBzby4pCisgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgIGVudlsnTENfQUxMJ10gPSAnQycKKyAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigoZXhlY3V0YWJsZSwpICsgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICByZXR1cm4gcHJvYwogCiBkZWYgX2ZpbmRfbWFjKGNvbW1hbmQsIGFyZ3MsIGh3X2lkZW50aWZpZXJzLCBnZXRfaW5kZXgpOgogICAgIHRyeToKLSAgICAgICAgcGlwZSA9IF9wb3Blbihjb21tYW5kLCBhcmdzKQotICAgICAgICBpZiBub3QgcGlwZToKKyAgICAgICAgcHJvYyA9IF9wb3Blbihjb21tYW5kLCAqYXJncy5zcGxpdCgpKQorICAgICAgICBpZiBub3QgcHJvYzoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICB3aXRoIHBpcGU6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBwcm9jLnN0ZG91dDoKICAgICAgICAgICAgICAgICB3b3JkcyA9IGxpbmUubG93ZXIoKS5yc3RyaXAoKS5zcGxpdCgpCiAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHdvcmRzKSk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHdvcmRzW2ldIGluIGh3X2lkZW50aWZpZXJzOgogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tnZXRfaW5kZXgoaSldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZSgnOicsICcnKSwgMTYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZShiJzonLCBiJycpLCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWMKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6CkBAIC0zNTQsMTAgKzM0NywxNyBAQAogICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgaWZjb25maWcuIiIiCiAgICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4ICgnJyBvciAnLWEnKSwgVHJ1NjQgKCctYXYnKSwgYnV0IG5vdCBhbGwgVW5peGVzLgogICAgIGZvciBhcmdzIGluICgnJywgJy1hJywgJy1hdicpOgotICAgICAgICBtYWMgPSBfZmluZF9tYWMoJ2lmY29uZmlnJywgYXJncywgWydod2FkZHInLCAnZXRoZXInXSwgbGFtYmRhIGk6IGkrMSkKKyAgICAgICAgbWFjID0gX2ZpbmRfbWFjKCdpZmNvbmZpZycsIGFyZ3MsIFtiJ2h3YWRkcicsIGInZXRoZXInXSwgbGFtYmRhIGk6IGkrMSkKICAgICAgICAgaWYgbWFjOgogICAgICAgICAgICAgcmV0dXJuIG1hYwogCitkZWYgX2lwX2dldG5vZGUoKToKKyAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlwLiIiIgorICAgICMgVGhpcyB3b3JrcyBvbiBMaW51eCB3aXRoIGlwcm91dGUyLgorICAgIG1hYyA9IF9maW5kX21hYygnaXAnLCAnbGluayBsaXN0JywgW2InbGluay9ldGhlciddLCBsYW1iZGEgaTogaSsxKQorICAgIGlmIG1hYzoKKyAgICAgICAgcmV0dXJuIG1hYworCiBkZWYgX2FycF9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBhcnAuIiIiCiAgICAgaW1wb3J0IG9zLCBzb2NrZXQKQEAgLTM2NywzMiArMzY3LDMyIEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFRyeSBnZXR0aW5nIHRoZSBNQUMgYWRkciBmcm9tIGFycCBiYXNlZCBvbiBvdXIgSVAgYWRkcmVzcyAoU29sYXJpcykuCi0gICAgcmV0dXJuIF9maW5kX21hYygnYXJwJywgJy1hbicsIFtpcF9hZGRyXSwgbGFtYmRhIGk6IC0xKQorICAgIHJldHVybiBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbb3MuZnNlbmNvZGUoaXBfYWRkcildLCBsYW1iZGEgaTogLTEpCiAKIGRlZiBfbGFuc2Nhbl9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBsYW5zY2FuLiIiIgogICAgICMgVGhpcyBtaWdodCB3b3JrIG9uIEhQLVVYLgotICAgIHJldHVybiBfZmluZF9tYWMoJ2xhbnNjYW4nLCAnLWFpJywgWydsYW4wJ10sIGxhbWJkYSBpOiAwKQorICAgIHJldHVybiBfZmluZF9tYWMoJ2xhbnNjYW4nLCAnLWFpJywgW2InbGFuMCddLCBsYW1iZGEgaTogMCkKIAogZGVmIF9uZXRzdGF0X2dldG5vZGUoKToKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIG5ldHN0YXQuIiIiCiAgICAgIyBUaGlzIG1pZ2h0IHdvcmsgb24gQUlYLCBUcnU2NCBVTklYIGFuZCBwcmVzdW1hYmx5IG9uIElSSVguCiAgICAgdHJ5OgotICAgICAgICBwaXBlID0gX3BvcGVuKCduZXRzdGF0JywgJy1pYScpCi0gICAgICAgIGlmIG5vdCBwaXBlOgorICAgICAgICBwcm9jID0gX3BvcGVuKCduZXRzdGF0JywgJy1pYScpCisgICAgICAgIGlmIG5vdCBwcm9jOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdpdGggcGlwZToKLSAgICAgICAgICAgIHdvcmRzID0gcGlwZS5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KCkKKyAgICAgICAgd2l0aCBwcm9jOgorICAgICAgICAgICAgd29yZHMgPSBwcm9jLnN0ZG91dC5yZWFkbGluZSgpLnJzdHJpcCgpLnNwbGl0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpID0gd29yZHMuaW5kZXgoJ0FkZHJlc3MnKQorICAgICAgICAgICAgICAgIGkgPSB3b3Jkcy5pbmRleChiJ0FkZHJlc3MnKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcHJvYy5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB3b3JkcyA9IGxpbmUucnN0cmlwKCkuc3BsaXQoKQogICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZHNbaV0KLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHdvcmQpID09IDE3IGFuZCB3b3JkLmNvdW50KCc6JykgPT0gNToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoJzonLCAnJyksIDE2KQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4od29yZCkgPT0gMTcgYW5kIHdvcmQuY291bnQoYic6JykgPT0gNToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoYic6JywgYicnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hYwogICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6CkBAIC00NDcsOSArNDQ3LDEwIEBACiAgICAgICAgIGlmIHdpbjMyd25ldC5OZXRiaW9zKG5jYikgIT0gMDoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHN0YXR1cy5fdW5wYWNrKCkKLSAgICAgICAgYnl0ZXMgPSBzdGF0dXMuYWRhcHRlcl9hZGRyZXNzCi0gICAgICAgIHJldHVybiAoKGJ5dGVzWzBdPDw0MCkgKyAoYnl0ZXNbMV08PDMyKSArIChieXRlc1syXTw8MjQpICsKLSAgICAgICAgICAgICAgICAoYnl0ZXNbM108PDE2KSArIChieXRlc1s0XTw8OCkgKyBieXRlc1s1XSkKKyAgICAgICAgYnl0ZXMgPSBzdGF0dXMuYWRhcHRlcl9hZGRyZXNzWzo2XQorICAgICAgICBpZiBsZW4oYnl0ZXMpICE9IDY6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoYnl0ZXMsICdiaWcnKQogCiAjIFRoYW5rcyB0byBUaG9tYXMgSGVsbGVyIGZvciBjdHlwZXMgYW5kIGZvciBoaXMgaGVscCB3aXRoIGl0cyB1c2UgaGVyZS4KIApAQCAtNDY0LDcgKzQ2NSw3IEBACiAgICAgZm9yIGxpYm5hbWUgaW4gWyd1dWlkJywgJ2MnXToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGliID0gY3R5cGVzLkNETEwoY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KGxpYm5hbWUpKQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiBoYXNhdHRyKGxpYiwgJ3V1aWRfZ2VuZXJhdGVfcmFuZG9tJyk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBsaWIudXVpZF9nZW5lcmF0ZV9yYW5kb20KQEAgLTUxOCw3ICs1MTksNyBAQAogZGVmIF9yYW5kb21fZ2V0bm9kZSgpOgogICAgICIiIkdldCBhIHJhbmRvbSBub2RlIElELCB3aXRoIGVpZ2h0aCBiaXQgc2V0IGFzIHN1Z2dlc3RlZCBieSBSRkMgNDEyMi4iIiIKICAgICBpbXBvcnQgcmFuZG9tCi0gICAgcmV0dXJuIHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTw8NDgpIHwgMHgwMTAwMDAwMDAwMDAKKyAgICByZXR1cm4gcmFuZG9tLmdldHJhbmRiaXRzKDQ4KSB8IDB4MDEwMDAwMDAwMDAwCiAKIF9ub2RlID0gTm9uZQogCkBAIC01MzksOCArNTQwLDggQEAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgZ2V0dGVycyA9IFtfd2luZGxsX2dldG5vZGUsIF9uZXRiaW9zX2dldG5vZGUsIF9pcGNvbmZpZ19nZXRub2RlXQogICAgIGVsc2U6Ci0gICAgICAgIGdldHRlcnMgPSBbX3VuaXhkbGxfZ2V0bm9kZSwgX2lmY29uZmlnX2dldG5vZGUsIF9hcnBfZ2V0bm9kZSwKLSAgICAgICAgICAgICAgICAgICBfbGFuc2Nhbl9nZXRub2RlLCBfbmV0c3RhdF9nZXRub2RlXQorICAgICAgICBnZXR0ZXJzID0gW191bml4ZGxsX2dldG5vZGUsIF9pZmNvbmZpZ19nZXRub2RlLCBfaXBfZ2V0bm9kZSwKKyAgICAgICAgICAgICAgICAgICBfYXJwX2dldG5vZGUsIF9sYW5zY2FuX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCiAKICAgICBmb3IgZ2V0dGVyIGluIGdldHRlcnMgKyBbX3JhbmRvbV9nZXRub2RlXToKICAgICAgICAgdHJ5OgpAQCAtNTc2LDcgKzU3Nyw3IEBACiAgICAgX2xhc3RfdGltZXN0YW1wID0gdGltZXN0YW1wCiAgICAgaWYgY2xvY2tfc2VxIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCByYW5kb20KLSAgICAgICAgY2xvY2tfc2VxID0gcmFuZG9tLnJhbmRyYW5nZSgxPDwxNCkgIyBpbnN0ZWFkIG9mIHN0YWJsZSBzdG9yYWdlCisgICAgICAgIGNsb2NrX3NlcSA9IHJhbmRvbS5nZXRyYW5kYml0cygxNCkgIyBpbnN0ZWFkIG9mIHN0YWJsZSBzdG9yYWdlCiAgICAgdGltZV9sb3cgPSB0aW1lc3RhbXAgJiAweGZmZmZmZmZmCiAgICAgdGltZV9taWQgPSAodGltZXN0YW1wID4+IDMyKSAmIDB4ZmZmZgogICAgIHRpbWVfaGlfdmVyc2lvbiA9ICh0aW1lc3RhbXAgPj4gNDgpICYgMHgwZmZmCkBAIC02MDYsMTAgKzYwNyw5IEBACiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgcmV0dXJuIFVVSUQoYnl0ZXM9b3MudXJhbmRvbSgxNiksIHZlcnNpb249NCkKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgaW1wb3J0IHJhbmRvbQotICAgICAgICBieXRlcyA9IGJ5dGVzXyhyYW5kb20ucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMTYpKQotICAgICAgICByZXR1cm4gVVVJRChieXRlcz1ieXRlcywgdmVyc2lvbj00KQorICAgICAgICByZXR1cm4gVVVJRChpbnQ9cmFuZG9tLmdldHJhbmRiaXRzKDEyOCksIHZlcnNpb249NCkKIAogZGVmIHV1aWQ1KG5hbWVzcGFjZSwgbmFtZSk6CiAgICAgIiIiR2VuZXJhdGUgYSBVVUlEIGZyb20gdGhlIFNIQS0xIGhhc2ggb2YgYSBuYW1lc3BhY2UgVVVJRCBhbmQgYSBuYW1lLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3dhcm5pbmdzLnB5IGIvTGliL3dhcm5pbmdzLnB5CmluZGV4IDcwZDA4N2UuLjE2MjQ2YjQgMTAwNjQ0Ci0tLSBhL0xpYi93YXJuaW5ncy5weQorKysgYi9MaWIvd2FybmluZ3MucHkKQEAgLTE2OSw3ICsxNjksOSBAQAogICAgICMgQ2hlY2sgY2F0ZWdvcnkgYXJndW1lbnQKICAgICBpZiBjYXRlZ29yeSBpcyBOb25lOgogICAgICAgICBjYXRlZ29yeSA9IFVzZXJXYXJuaW5nCi0gICAgYXNzZXJ0IGlzc3ViY2xhc3MoY2F0ZWdvcnksIFdhcm5pbmcpCisgICAgaWYgbm90IChpc2luc3RhbmNlKGNhdGVnb3J5LCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjYXRlZ29yeSwgV2FybmluZykpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90ICd7OnN9JyIuZm9ybWF0KHR5cGUoY2F0ZWdvcnkpLl9fbmFtZV9fKSkKICAgICAjIEdldCBjb250ZXh0IGluZm9ybWF0aW9uCiAgICAgdHJ5OgogICAgICAgICBjYWxsZXIgPSBzeXMuX2dldGZyYW1lKHN0YWNrbGV2ZWwpCkBAIC0xODYsNyArMTg4LDcgQEAKICAgICBmaWxlbmFtZSA9IGdsb2JhbHMuZ2V0KCdfX2ZpbGVfXycpCiAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgIGZubCA9IGZpbGVuYW1lLmxvd2VyKCkKLSAgICAgICAgaWYgZm5sLmVuZHN3aXRoKCgiLnB5YyIsICIucHlvIikpOgorICAgICAgICBpZiBmbmwuZW5kc3dpdGgoIi5weWMiKToKICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgIGVsc2U6CiAgICAgICAgIGlmIG1vZHVsZSA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3dlYWtyZWYucHkgYi9MaWIvd2Vha3JlZi5weQppbmRleCAxMmJmOTc1Li5hNGVjYWRjIDEwMDY0NAotLS0gYS9MaWIvd2Vha3JlZi5weQorKysgYi9MaWIvd2Vha3JlZi5weQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAgICAgICAgIHJldHVybiBvIGlzIG5vdCBOb25lCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFdlYWtWYWx1ZURpY3Rpb25hcnkgYXQgJXM+IiAlIGlkKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKQEAgLTM1OSw3ICszNTksNyBAQAogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkgLSBsZW4oc2VsZi5fcGVuZGluZ19yZW1vdmFscykKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8V2Vha0tleURpY3Rpb25hcnkgYXQgJXM+IiAlIGlkKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgc2VsZi5kYXRhW3JlZihrZXksIHNlbGYuX3JlbW92ZSldID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi93ZWJicm93c2VyLnB5IGIvTGliL3dlYmJyb3dzZXIucHkKaW5kZXggODQ1ZjFkMC4uNmRlZWQ5MiAxMDA3NTUKLS0tIGEvTGliL3dlYmJyb3dzZXIucHkKKysrIGIvTGliL3dlYmJyb3dzZXIucHkKQEAgLTQ5NSwxMCArNDk1LDIzIEBACiAjCiAKIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gIndpbiI6CisKICAgICBjbGFzcyBXaW5kb3dzRGVmYXVsdChCYXNlQnJvd3Nlcik6CisgICAgICAgICMgV2luZG93cyBEZWZhdWx0IG9wZW5pbmcgYXJndW1lbnRzLgorCisgICAgICAgIGNtZCA9ICJzdGFydCIKKyAgICAgICAgbmV3d2luZG93ID0gIiIKKyAgICAgICAgbmV3dGFiID0gIiIKKwogICAgICAgICBkZWYgb3BlbihzZWxmLCB1cmwsIG5ldz0wLCBhdXRvcmFpc2U9VHJ1ZSk6CisgICAgICAgICAgICAjIEZvcm1hdCB0aGUgY29tbWFuZCBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGFuZCBhZGQgdGhlIHVybC4KKyAgICAgICAgICAgIGlmIG5ldyA9PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuY21kICs9ICIgIiArIHNlbGYubmV3d2luZG93CisgICAgICAgICAgICBlbGlmIG5ldyA9PSAyOgorICAgICAgICAgICAgICAgIHNlbGYuY21kICs9ICIgIiArIHNlbGYubmV3dGFiCisgICAgICAgICAgICBzZWxmLmNtZCArPSAiICIgKyB1cmwKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5zdGFydGZpbGUodXJsKQorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChzZWxmLmNtZCwgc2hlbGw9VHJ1ZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICMgW0Vycm9yIDIyXSBObyBhcHBsaWNhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgICAgICMgZmlsZSBmb3IgdGhpcyBvcGVyYXRpb246ICc8VVJMPicKQEAgLTUwNiwxOSArNTE5LDEwOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCisKKyAgICAjIFdpbmRvd3MgU3ViLUNsYXNzZXMgZm9yIGNvbW1vbmx5IHVzZWQgYnJvd3NlcnMuCisKKyAgICBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyKFdpbmRvd3NEZWZhdWx0KToKKyAgICAgICAgIiIiTGF1bmNoZXIgY2xhc3MgZm9yIEludGVybmV0IEV4cGxvcmVyIGJyb3dzZXIiIiIKKworICAgICAgICBjbWQgPSAic3RhcnQgaWV4cGxvcmUuZXhlIgorICAgICAgICBuZXd3aW5kb3cgPSAiIgorICAgICAgICBuZXd0YWIgPSAiIgorCisKKyAgICBjbGFzcyBXaW5DaHJvbWUoV2luZG93c0RlZmF1bHQpOgorICAgICAgICAiIiJMYXVuY2hlciBjbGFzcyBmb3Igd2luZG93cyBzcGVjaWZpYyBHb29nbGUgQ2hyb21lIGJyb3dzZXIiIiIKKworICAgICAgICBjbWQgPSAic3RhcnQgY2hyb21lLmV4ZSIKKyAgICAgICAgbmV3d2luZG93ID0gIi1uZXctd2luZG93IgorICAgICAgICBuZXd0YWIgPSAiLW5ldy10YWIiCisKKworICAgIGNsYXNzIFdpbkZpcmVmb3goV2luZG93c0RlZmF1bHQpOgorICAgICAgICAiIiJMYXVuY2hlciBjbGFzcyBmb3Igd2luZG93cyBzcGVjaWZpYyBGaXJlZm94IGJyb3dzZXIiIiIKKworICAgICAgICBjbWQgPSAic3RhcnQgZmlyZWZveC5leGUiCisgICAgICAgIG5ld3dpbmRvdyA9ICItbmV3LXdpbmRvdyIKKyAgICAgICAgbmV3dGFiID0gIi1uZXctdGFiIgorCisKKyAgICBjbGFzcyBXaW5PcGVyYShXaW5kb3dzRGVmYXVsdCk6CisgICAgICAgICIiIkxhdW5jaGVyIGNsYXNzIGZvciB3aW5kb3dzIHNwZWNpZmljIE9wZXJhIGJyb3dzZXIiIiIKKworICAgICAgICBjbWQgPSAic3RhcnQgb3BlcmEiCisgICAgICAgIG5ld3dpbmRvdyA9ICIiCisgICAgICAgIG5ld3RhYiA9ICIiCisKKworICAgIGNsYXNzIFdpblNlYU1vbmtleShXaW5kb3dzRGVmYXVsdCk6CisgICAgICAgICIiIkxhdW5jaGVyIGNsYXNzIGZvciB3aW5kb3dzIHNwZWNpZmljIFNlYU1vbmtleSBicm93c2VyIiIiCisKKyAgICAgICAgY21kID0gInN0YXJ0IHNlYW1vbmtleSIKKyAgICAgICAgbmV3d2lub3cgPSAiIgorICAgICAgICBuZXd0YWIgPSAiIgorCisKICAgICBfdHJ5b3JkZXIgPSBbXQogICAgIF9icm93c2VycyA9IHt9CiAKLSAgICAjIEZpcnN0IHRyeSB0byB1c2UgdGhlIGRlZmF1bHQgV2luZG93cyBicm93c2VyCisgICAgIyBGaXJzdCB0cnkgdG8gdXNlIHRoZSBkZWZhdWx0IFdpbmRvd3MgYnJvd3Nlci4KICAgICByZWdpc3Rlcigid2luZG93cy1kZWZhdWx0IiwgV2luZG93c0RlZmF1bHQpCiAKLSAgICAjIERldGVjdCBzb21lIGNvbW1vbiBXaW5kb3dzIGJyb3dzZXJzLCBmYWxsYmFjayB0byBJRQotICAgIGlleHBsb3JlID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCJQUk9HUkFNRklMRVMiLCAiQzpcXFByb2dyYW0gRmlsZXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJuZXQgRXhwbG9yZXJcXElFWFBMT1JFLkVYRSIpCi0gICAgZm9yIGJyb3dzZXIgaW4gKCJmaXJlZm94IiwgImZpcmViaXJkIiwgInNlYW1vbmtleSIsICJtb3ppbGxhIiwKLSAgICAgICAgICAgICAgICAgICAgIm5ldHNjYXBlIiwgIm9wZXJhIiwgaWV4cGxvcmUpOgotICAgICAgICBpZiBzaHV0aWwud2hpY2goYnJvd3Nlcik6Ci0gICAgICAgICAgICByZWdpc3Rlcihicm93c2VyLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3Nlcihicm93c2VyKSkKKyAgICBkZWYgZmluZF93aW5kb3dzX2Jyb3dzZXJzKCk6CisgICAgICAgICIiIiBBY2Nlc3MgdGhlIHdpbmRvd3MgcmVnaXN0cnkgdG8gZGV0ZXJtaW5lCisgICAgICAgIHdoYXQgYnJvd3NlcnMgYXJlIG9uIHRoZSBzeXN0ZW0uCisgICAgICAgICIiIgorCisgICAgICAgIGltcG9ydCB3aW5yZWcKKyAgICAgICAgSEtMTSA9IHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUKKyAgICAgICAgc3Via2V5ID0gcidTb2Z0d2FyZVxDbGllbnRzXFN0YXJ0TWVudUludGVybmV0JworICAgICAgICByZWFkMzIgPSB3aW5yZWcuS0VZX1JFQUQgfCB3aW5yZWcuS0VZX1dPVzY0XzMyS0VZCisgICAgICAgIHJlYWQ2NCA9IHdpbnJlZy5LRVlfUkVBRCB8IHdpbnJlZy5LRVlfV09XNjRfNjRLRVkKKyAgICAgICAga2V5MzIgPSB3aW5yZWcuT3BlbktleShIS0xNLCBzdWJrZXksIGFjY2Vzcz1yZWFkMzIpCisgICAgICAgIGtleTY0ID0gd2lucmVnLk9wZW5LZXkoSEtMTSwgc3Via2V5LCBhY2Nlc3M9cmVhZDY0KQorCisgICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBicm93c2VycyBmb3VuZCBpbiB0aGUgcmVnaXN0cnkKKyAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IGRpZmZlcmVudCBicm93c2VycyBpbiB0aGUKKyAgICAgICAgIyAzMiBiaXQgbG9jYXRpb24gaW5zdGVhZCBvZiB0aGUgNjQgYml0IGxvY2F0aW9uLgorICAgICAgICBicm93c2VycyA9IFtdCisgICAgICAgIGkgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYnJvd3NlcnMuYXBwZW5kKHdpbnJlZy5FbnVtS2V5KGtleTMyLCBpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpICs9IDEKKworICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJyb3dzZXJzLmFwcGVuZCh3aW5yZWcuRW51bUtleShrZXk2NCwgaSkpCisgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCisKKyAgICAgICAgd2lucmVnLkNsb3NlS2V5KGtleTMyKQorICAgICAgICB3aW5yZWcuQ2xvc2VLZXkoa2V5NjQpCisKKyAgICAgICAgcmV0dXJuIGJyb3dzZXJzCisKKyAgICAjIERldGVjdCBzb21lIGNvbW1vbiB3aW5kb3dzIGJyb3dzZXJzCisgICAgZm9yIGJyb3dzZXIgaW4gZmluZF93aW5kb3dzX2Jyb3dzZXJzKCk6CisgICAgICAgIGJyb3dzZXIgPSBicm93c2VyLmxvd2VyKCkKKyAgICAgICAgaWYgImlleHBsb3JlIiBpbiBicm93c2VyOgorICAgICAgICAgICAgcmVnaXN0ZXIoImlleHBsb3JlIiwgTm9uZSwgSW50ZXJuZXRFeHBsb3JlcigiaWV4cGxvcmUiKSkKKyAgICAgICAgZWxpZiAiY2hyb21lIiBpbiBicm93c2VyOgorICAgICAgICAgICAgcmVnaXN0ZXIoImNocm9tZSIsIE5vbmUsIFdpbkNocm9tZSgiY2hyb21lIikpCisgICAgICAgIGVsaWYgImZpcmVmb3giIGluIGJyb3dzZXI6CisgICAgICAgICAgICByZWdpc3RlcigiZmlyZWZveCIsIE5vbmUsIFdpbkZpcmVmb3goImZpcmVmb3giKSkKKyAgICAgICAgZWxpZiAib3BlcmEiIGluIGJyb3dzZXI6CisgICAgICAgICAgICByZWdpc3Rlcigib3BlcmEiLCBOb25lLCBXaW5PcGVyYSgib3BlcmEiKSkKKyAgICAgICAgZWxpZiAic2VhbW9ua2V5IiBpbiBicm93c2VyOgorICAgICAgICAgICAgcmVnaXN0ZXIoInNlYW1vbmtleSIsIE5vbmUsIFdpblNlYU1vbmtleSgic2VhbW9ua2V5IikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3Rlcihicm93c2VyLCBOb25lLCBXaW5kb3dzRGVmYXVsdChicm93c2VyKSkKIAogIwogIyBQbGF0Zm9ybSBzdXBwb3J0IGZvciBNYWNPUwpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvaGVhZGVycy5weSBiL0xpYi93c2dpcmVmL2hlYWRlcnMucHkKaW5kZXggZDkzOTYyOC4uN2U2NzBiMyAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvaGVhZGVycy5weQorKysgYi9MaWIvd3NnaXJlZi9oZWFkZXJzLnB5CkBAIC0yNiwxMCArMjYsMTAgQEAKIAogCiBjbGFzcyBIZWFkZXJzOgotCiAgICAgIiIiTWFuYWdlIGEgY29sbGVjdGlvbiBvZiBIVFRQIHJlc3BvbnNlIGhlYWRlcnMiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLGhlYWRlcnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzPU5vbmUpOgorICAgICAgICBoZWFkZXJzID0gaGVhZGVycyBpZiBoZWFkZXJzIGlzIG5vdCBOb25lIGVsc2UgW10KICAgICAgICAgaWYgdHlwZShoZWFkZXJzKSBpcyBub3QgbGlzdDoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSGVhZGVycyBtdXN0IGJlIGEgbGlzdCBvZiBuYW1lL3ZhbHVlIHR1cGxlcyIpCiAgICAgICAgIHNlbGYuX2hlYWRlcnMgPSBoZWFkZXJzCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2hlYWRlcnNbOl0KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJIZWFkZXJzKCVyKSIgJSBzZWxmLl9oZWFkZXJzCisgICAgICAgIHJldHVybiAiJXMoJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5faGVhZGVycykKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJzdHIoKSByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgaGVhZGVycywgY29tcGxldGUgd2l0aCBlbmQgbGluZSwKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CmluZGV4IGMzNzlhMzMuLmE1ZDgxM2YgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkKKysrIGIvTGliL3htbC9kb20vbWluaWRvbS5weQpAQCAtNTQ1LDkgKzU0NSw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDwgMAogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLQogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBhdHRuYW1lX29yX3R1cGxlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShhdHRuYW1lX29yX3R1cGxlLCB0dXBsZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOU1thdHRuYW1lX29yX3R1cGxlXQpAQCAtNjQ4LDkgKzY0NSwxMCBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZToKLSAgICAgICAgICAgIHJldHVybiAiPFR5cGVJbmZvICVyIChmcm9tICVyKT4iICUgKHNlbGYubmFtZSwgc2VsZi5uYW1lc3BhY2UpCisgICAgICAgICAgICByZXR1cm4gIjwlcyAlciAoZnJvbSAlcik+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc3BhY2UpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIjxUeXBlSW5mbyAlcj4iICUgc2VsZi5uYW1lCisgICAgICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCiAKICAgICBkZWYgX2dldF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5IGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQppbmRleCBkNzk4NjI0Li40NDRmMGIyIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKQEAgLTEsNiArMSw3IEBACiAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRE9NIExldmVsIDMgJ0xTLUxvYWQnIGZlYXR1cmUuIiIiCiAKIGltcG9ydCBjb3B5CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB4bWwuZG9tCiAKIGZyb20geG1sLmRvbS5Ob2RlRmlsdGVyIGltcG9ydCBOb2RlRmlsdGVyCkBAIC0zMzEsMTMgKzMzMiwzMyBAQAogZGVsIE5vZGVGaWx0ZXIKIAogCitjbGFzcyBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHk6CisgICAgZGVmIHdhcm4oc2VsZiwgY2xzKToKKyAgICAgICAgY2xzbmFtZSA9IGNscy5fX25hbWVfXworICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgIntjbHN9LmFzeW5jIGlzIGRlcHJlY2F0ZWQ7IHVzZSB7Y2xzfS5hc3luY18iLmZvcm1hdChjbHM9Y2xzbmFtZSksCisgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgY2xzKToKKyAgICAgICAgc2VsZi53YXJuKGNscykKKyAgICAgICAgaWYgaW5zdGFuY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuYXN5bmNfCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKToKKyAgICAgICAgc2VsZi53YXJuKHR5cGUoaW5zdGFuY2UpKQorICAgICAgICBzZXRhdHRyKGluc3RhbmNlLCAnYXN5bmNfJywgdmFsdWUpCisKKwogY2xhc3MgRG9jdW1lbnRMUzoKICAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCiAKLSAgICBhc3luYyA9IEZhbHNlCisgICAgYXN5bmMgPSBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHkoKQorICAgIGFzeW5jXyA9IEZhbHNlCiAKICAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBhc3luYyk6CiAgICAgICAgIGlmIGFzeW5jOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoCkBAIC0zNjMsNiArMzg0LDkgQEAKICAgICAgICAgcmV0dXJuIHNub2RlLnRveG1sKCkKIAogCitkZWwgX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5CisKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25MUzoKICAgICBNT0RFX1NZTkNIUk9OT1VTID0gMQogICAgIE1PREVfQVNZTkNIUk9OT1VTID0gMgpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggZDkxNGRkYi4uNWRlNDIzMiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC0xMTQsNyArMTE0LDEwIEBACiAgICAgcmV0dXJuIHNlbGVjdAogCiBkZWYgcHJlcGFyZV9kZXNjZW5kYW50KG5leHQsIHRva2VuKToKLSAgICB0b2tlbiA9IG5leHQoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuCiAgICAgaWYgdG9rZW5bMF0gPT0gIioiOgogICAgICAgICB0YWcgPSAiKiIKICAgICBlbGlmIG5vdCB0b2tlblswXToKQEAgLTE0OCw3ICsxNTEsMTAgQEAKICAgICBzaWduYXR1cmUgPSBbXQogICAgIHByZWRpY2F0ZSA9IFtdCiAgICAgd2hpbGUgMToKLSAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgdG9rZW5bMF0gPT0gIl0iOgogICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgdG9rZW5bMF0gYW5kIHRva2VuWzBdWzoxXSBpbiAiJ1wiIjoKQEAgLTI2MSw3ICsyNjcsMTAgQEAKICAgICAgICAgaWYgcGF0aFs6MV0gPT0gIi8iOgogICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50IikKICAgICAgICAgbmV4dCA9IGl0ZXIoeHBhdGhfdG9rZW5pemVyKHBhdGgsIG5hbWVzcGFjZXMpKS5fX25leHRfXwotICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxlY3RvciA9IFtdCiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICB0cnk6CkBAIC0yODYsMTAgKzI5NSw3IEBACiAjIEZpbmQgZmlyc3QgbWF0Y2hpbmcgb2JqZWN0LgogCiBkZWYgZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG5leHQoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcykpCi0gICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIG5leHQoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcyksIE5vbmUpCiAKICMjCiAjIEZpbmQgYWxsIG1hdGNoaW5nIG9iamVjdHMuCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQppbmRleCBhODU4NWI2Li40YzEwOWEyIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICBzZWxmLl9jaGlsZHJlbiA9IFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEVsZW1lbnQgJXMgYXQgMHgleD4iICUgKHJlcHIoc2VsZi50YWcpLCBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICI8JXMgJXIgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudGFnLCBpZChzZWxmKSkKIAogICAgIGRlZiBtYWtlZWxlbWVudChzZWxmLCB0YWcsIGF0dHJpYik6CiAgICAgICAgICIiIkNyZWF0ZSBhIG5ldyBlbGVtZW50IHdpdGggdGhlIHNhbWUgdHlwZS4KQEAgLTUwOSw3ICs1MDksNyBAQAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50ZXh0CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzxRTmFtZSAlcj4nICUgKHNlbGYudGV4dCwpCisgICAgICAgIHJldHVybiAnPCVzICVyPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudGV4dCkKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNoKHNlbGYudGV4dCkKICAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKQEAgLTUzMiwxMCArNTMyLDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgUU5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA9PSBvdGhlci50ZXh0CiAgICAgICAgIHJldHVybiBzZWxmLnRleHQgPT0gb3RoZXIKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgUU5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCAhPSBvdGhlci50ZXh0Ci0gICAgICAgIHJldHVybiBzZWxmLnRleHQgIT0gb3RoZXIKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC9fX2luaXRfXy5weSBiL0xpYi94bWwvc2F4L19faW5pdF9fLnB5CmluZGV4IGIxNjFiMWYuLmVmNjdhZTYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L19faW5pdF9fLnB5CisrKyBiL0xpYi94bWwvc2F4L19faW5pdF9fLnB5CkBAIC0zMyw4ICszMyw3IEBACiAgICAgcGFyc2VyLnBhcnNlKHNvdXJjZSkKIAogZGVmIHBhcnNlU3RyaW5nKHN0cmluZywgaGFuZGxlciwgZXJyb3JIYW5kbGVyPUVycm9ySGFuZGxlcigpKToKLSAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi0KKyAgICBpbXBvcnQgaW8KICAgICBpZiBlcnJvckhhbmRsZXIgaXMgTm9uZToKICAgICAgICAgZXJyb3JIYW5kbGVyID0gRXJyb3JIYW5kbGVyKCkKICAgICBwYXJzZXIgPSBtYWtlX3BhcnNlcigpCkBAIC00Miw3ICs0MSwxMCBAQAogICAgIHBhcnNlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKQogCiAgICAgaW5wc3JjID0gSW5wdXRTb3VyY2UoKQotICAgIGlucHNyYy5zZXRCeXRlU3RyZWFtKEJ5dGVzSU8oc3RyaW5nKSkKKyAgICBpZiBpc2luc3RhbmNlKHN0cmluZywgc3RyKToKKyAgICAgICAgaW5wc3JjLnNldENoYXJhY3RlclN0cmVhbShpby5TdHJpbmdJTyhzdHJpbmcpKQorICAgIGVsc2U6CisgICAgICAgIGlucHNyYy5zZXRCeXRlU3RyZWFtKGlvLkJ5dGVzSU8oc3RyaW5nKSkKICAgICBwYXJzZXIucGFyc2UoaW5wc3JjKQogCiAjIHRoaXMgaXMgdGhlIHBhcnNlciBsaXN0IHVzZWQgYnkgdGhlIG1ha2VfcGFyc2VyIGZ1bmN0aW9uIGlmIG5vCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weSBiL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CmluZGV4IDNiNjM3MzcuLjk4YjVjYTkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CisrKyBiL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CkBAIC0yMzIsOSArMjMyLDE0IEBACiAgICAgICAgICAgICAgICAgcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyID0gc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICAgcGFyc2VyLkVycm9yTGluZU51bWJlciA9IHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIKICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKLSAgICAgICAgICAgIGJzID0gc2VsZi5fc291cmNlLmdldEJ5dGVTdHJlYW0oKQotICAgICAgICAgICAgaWYgYnMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgYnMuY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpbGUgPSBzZWxmLl9zb3VyY2UuZ2V0Q2hhcmFjdGVyU3RyZWFtKCkKKyAgICAgICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZmlsZSA9IHNlbGYuX3NvdXJjZS5nZXRCeXRlU3RyZWFtKCkKKyAgICAgICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKIAogICAgIGRlZiBfcmVzZXRfY29udF9oYW5kbGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9wYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IFwKZGlmZiAtLWdpdCBhL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5IGIvTGliL3htbC9zYXgvc2F4dXRpbHMucHkKaW5kZXggMWQzZDBlYy4uYTY5YzdmNyAxMDA2NDQKLS0tIGEvTGliL3htbC9zYXgvc2F4dXRpbHMucHkKKysrIGIvTGliL3htbC9zYXgvc2F4dXRpbHMucHkKQEAgLTM0NSwxMSArMzQ1LDE0IEBACiAgICAgZWxpZiBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICAgZiA9IHNvdXJjZQogICAgICAgICBzb3VyY2UgPSB4bWxyZWFkZXIuSW5wdXRTb3VyY2UoKQotICAgICAgICBzb3VyY2Uuc2V0Qnl0ZVN0cmVhbShmKQorICAgICAgICBpZiBpc2luc3RhbmNlKGYucmVhZCgwKSwgc3RyKToKKyAgICAgICAgICAgIHNvdXJjZS5zZXRDaGFyYWN0ZXJTdHJlYW0oZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvdXJjZS5zZXRCeXRlU3RyZWFtKGYpCiAgICAgICAgIGlmIGhhc2F0dHIoZiwgIm5hbWUiKSBhbmQgaXNpbnN0YW5jZShmLm5hbWUsIHN0cik6CiAgICAgICAgICAgICBzb3VyY2Uuc2V0U3lzdGVtSWQoZi5uYW1lKQogCi0gICAgaWYgc291cmNlLmdldEJ5dGVTdHJlYW0oKSBpcyBOb25lOgorICAgIGlmIHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKSBpcyBOb25lIGFuZCBzb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpIGlzIE5vbmU6CiAgICAgICAgIHN5c2lkID0gc291cmNlLmdldFN5c3RlbUlkKCkKICAgICAgICAgYmFzZWhlYWQgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5ub3JtcGF0aChiYXNlKSkKICAgICAgICAgc3lzaWRmaWxlbmFtZSA9IG9zLnBhdGguam9pbihiYXNlaGVhZCwgc3lzaWQpCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC94bWxyZWFkZXIucHkgYi9MaWIveG1sL3NheC94bWxyZWFkZXIucHkKaW5kZXggN2VmNDk3Zi4uNzE2ZjIyOCAxMDA2NDQKLS0tIGEvTGliL3htbC9zYXgveG1scmVhZGVyLnB5CisrKyBiL0xpYi94bWwvc2F4L3htbHJlYWRlci5weQpAQCAtMTE3LDcgKzExNyw5IEBACiAgICAgICAgIHNvdXJjZSA9IHNheHV0aWxzLnByZXBhcmVfaW5wdXRfc291cmNlKHNvdXJjZSkKIAogICAgICAgICBzZWxmLnByZXBhcmVQYXJzZXIoc291cmNlKQotICAgICAgICBmaWxlID0gc291cmNlLmdldEJ5dGVTdHJlYW0oKQorICAgICAgICBmaWxlID0gc291cmNlLmdldENoYXJhY3RlclN0cmVhbSgpCisgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgIGZpbGUgPSBzb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCiAgICAgICAgIGJ1ZmZlciA9IGZpbGUucmVhZChzZWxmLl9idWZzaXplKQogICAgICAgICB3aGlsZSBidWZmZXI6CiAgICAgICAgICAgICBzZWxmLmZlZWQoYnVmZmVyKQpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCA0NTIxMzI1Li5hY2I4MTQyIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMjA4LDggKzIwOCw4IEBACiAgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAiPFByb3RvY29sRXJyb3IgZm9yICVzOiAlcyAlcz4iICUKLSAgICAgICAgICAgIChzZWxmLnVybCwgc2VsZi5lcnJjb2RlLCBzZWxmLmVycm1zZykKKyAgICAgICAgICAgICI8JXMgZm9yICVzOiAlcyAlcz4iICUKKyAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi51cmwsIHNlbGYuZXJyY29kZSwgc2VsZi5lcnJtc2cpCiAgICAgICAgICAgICApCiAKICMjCkBAIC0yMzcsNyArMjM3LDggQEAKICAgICAgICAgc2VsZi5mYXVsdENvZGUgPSBmYXVsdENvZGUKICAgICAgICAgc2VsZi5mYXVsdFN0cmluZyA9IGZhdWx0U3RyaW5nCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxGYXVsdCAlczogJXI+IiAlIChzZWxmLmZhdWx0Q29kZSwgc2VsZi5mYXVsdFN0cmluZykKKyAgICAgICAgcmV0dXJuICI8JXMgJXM6ICVyPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmF1bHRDb2RlLCBzZWxmLmZhdWx0U3RyaW5nKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFNwZWNpYWwgdmFsdWVzCkBAIC0zMzksMTAgKzM0MCw2IEBACiAgICAgICAgIHMsIG8gPSBzZWxmLm1ha2VfY29tcGFyYWJsZShvdGhlcikKICAgICAgICAgcmV0dXJuIHMgPT0gbwogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHMsIG8gPSBzZWxmLm1ha2VfY29tcGFyYWJsZShvdGhlcikKLSAgICAgICAgcmV0dXJuIHMgIT0gbwotCiAgICAgZGVmIHRpbWV0dXBsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHRpbWUuc3RycHRpbWUoc2VsZi52YWx1ZSwgIiVZJW0lZFQlSDolTTolUyIpCiAKQEAgLTM1NSw3ICszNTIsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxEYXRlVGltZSAlciBhdCAleD4iICUgKHNlbGYudmFsdWUsIGlkKHNlbGYpKQorICAgICAgICByZXR1cm4gIjwlcyAlciBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi52YWx1ZSwgaWQoc2VsZikpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLnZhbHVlID0gc3RyKGRhdGEpLnN0cmlwKCkKQEAgLTQwNiwxMSArNDAzLDYgQEAKICAgICAgICAgICAgIG90aGVyID0gb3RoZXIuZGF0YQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IG90aGVyCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgQmluYXJ5KToKLSAgICAgICAgICAgIG90aGVyID0gb3RoZXIuZGF0YQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhICE9IG90aGVyCi0KICAgICBkZWYgZGVjb2RlKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YSkKIApAQCAtODUyLDcgKzg0NCw3IEBACiAgICAgICAgIHNlbGYuX19jYWxsX2xpc3QgPSBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxNdWx0aUNhbGwgYXQgJXg+IiAlIGlkKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKIAogICAgIF9fc3RyX18gPSBfX3JlcHJfXwogCkBAIC0xMDIzLDEyICsxMDE1LDkgQEAKICAgICBpZiBub3QgZ3ppcDoKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogICAgIGYgPSBCeXRlc0lPKCkKLSAgICBnemYgPSBnemlwLkd6aXBGaWxlKG1vZGU9IndiIiwgZmlsZW9iaj1mLCBjb21wcmVzc2xldmVsPTEpCi0gICAgZ3pmLndyaXRlKGRhdGEpCi0gICAgZ3pmLmNsb3NlKCkKLSAgICBlbmNvZGVkID0gZi5nZXR2YWx1ZSgpCi0gICAgZi5jbG9zZSgpCi0gICAgcmV0dXJuIGVuY29kZWQKKyAgICB3aXRoIGd6aXAuR3ppcEZpbGUobW9kZT0id2IiLCBmaWxlb2JqPWYsIGNvbXByZXNzbGV2ZWw9MSkgYXMgZ3pmOgorICAgICAgICBnemYud3JpdGUoZGF0YSkKKyAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCiAKICMjCiAjIERlY29kZSBhIHN0cmluZyB1c2luZyB0aGUgZ3ppcCBjb250ZW50IGVuY29kaW5nIHN1Y2ggYXMgc3BlY2lmaWVkIGJ5IHRoZQpAQCAtMTA0OSwxNyArMTAzOCwxNCBAQAogICAgICIiIgogICAgIGlmIG5vdCBnemlwOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0gICAgZiA9IEJ5dGVzSU8oZGF0YSkKLSAgICBnemYgPSBnemlwLkd6aXBGaWxlKG1vZGU9InJiIiwgZmlsZW9iaj1mKQotICAgIHRyeToKLSAgICAgICAgaWYgbWF4X2RlY29kZSA8IDA6ICMgbm8gbGltaXQKLSAgICAgICAgICAgIGRlY29kZWQgPSBnemYucmVhZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQobWF4X2RlY29kZSArIDEpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZGF0YSIpCi0gICAgZi5jbG9zZSgpCi0gICAgZ3pmLmNsb3NlKCkKKyAgICB3aXRoIGd6aXAuR3ppcEZpbGUobW9kZT0icmIiLCBmaWxlb2JqPUJ5dGVzSU8oZGF0YSkpIGFzIGd6ZjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbWF4X2RlY29kZSA8IDA6ICMgbm8gbGltaXQKKyAgICAgICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQobWF4X2RlY29kZSArIDEpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBkYXRhIikKICAgICBpZiBtYXhfZGVjb2RlID49IDAgYW5kIGxlbihkZWNvZGVkKSA+IG1heF9kZWNvZGU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heCBnemlwcGVkIHBheWxvYWQgbGVuZ3RoIGV4Y2VlZGVkIikKICAgICByZXR1cm4gZGVjb2RlZApAQCAtMTE0OSw3ICsxMTM1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBpIG9yIGUuZXJybm8gbm90IGluIChlcnJuby5FQ09OTlJFU0VULCBlcnJuby5FQ09OTkFCT1JURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8uRVBJUEUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkJhZFN0YXR1c0xpbmU6ICNjbG9zZSBhZnRlciB3ZSBzZW50IHJlcXVlc3QKKyAgICAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQ6CiAgICAgICAgICAgICAgICAgaWYgaToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIApAQCAtMTQ1Miw4ICsxNDM4LDggQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICI8U2VydmVyUHJveHkgZm9yICVzJXM+IiAlCi0gICAgICAgICAgICAoc2VsZi5fX2hvc3QsIHNlbGYuX19oYW5kbGVyKQorICAgICAgICAgICAgIjwlcyBmb3IgJXMlcz4iICUKKyAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fX2hvc3QsIHNlbGYuX19oYW5kbGVyKQogICAgICAgICAgICAgKQogCiAgICAgX19zdHJfXyA9IF9fcmVwcl9fCkBAIC0xNDc1LDYgKzE0NjEsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fdHJhbnNwb3J0CiAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJBdHRyaWJ1dGUgJXIgbm90IGZvdW5kIiAlIChhdHRyLCkpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5fX2Nsb3NlKCkKKwogIyBjb21wYXRpYmlsaXR5CiAKIFNlcnZlciA9IFNlcnZlclByb3h5CmRpZmYgLS1naXQgYS9MaWIvemlwYXBwLnB5IGIvTGliL3ppcGFwcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODM4MGJmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ppcGFwcC5weQpAQCAtMCwwICsxLDIwMCBAQAoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitfX2FsbF9fID0gWydaaXBBcHBFcnJvcicsICdjcmVhdGVfYXJjaGl2ZScsICdnZXRfaW50ZXJwcmV0ZXInXQorCisKKyMgVGhlIF9fbWFpbl9fLnB5IHVzZWQgaWYgdGhlIHVzZXJzIHNwZWNpZmllcyAiLW0gbW9kdWxlOmZuIi4KKyMgTm90ZSB0aGF0IHRoaXMgd2lsbCBhbHdheXMgYmUgd3JpdHRlbiBhcyBVVEYtOCAobW9kdWxlIGFuZAorIyBmdW5jdGlvbiBuYW1lcyBjYW4gYmUgbm9uLUFTQ0lJIGluIFB5dGhvbiAzKS4KKyMgV2UgYWRkIGEgY29kaW5nIGNvb2tpZSBldmVuIHRob3VnaCBVVEYtOCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMworIyBiZWNhdXNlIHRoZSByZXN1bHRpbmcgYXJjaGl2ZSBtYXkgYmUgaW50ZW5kZWQgdG8gYmUgcnVuIHVuZGVyIFB5dGhvbiAyLgorTUFJTl9URU1QTEFURSA9ICIiIlwKKyMgLSotIGNvZGluZzogdXRmLTggLSotCitpbXBvcnQge21vZHVsZX0KK3ttb2R1bGV9Lntmbn0oKQorIiIiCisKKworIyBUaGUgV2luZG93cyBsYXVuY2hlciBkZWZhdWx0cyB0byBVVEYtOCB3aGVuIHBhcnNpbmcgc2hlYmFuZyBsaW5lcyBpZiB0aGUKKyMgZmlsZSBoYXMgbm8gQk9NLiBTbyB1c2UgVVRGLTggb24gV2luZG93cy4KKyMgT24gVW5peCwgdXNlIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgoraWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgIHNoZWJhbmdfZW5jb2RpbmcgPSAndXRmLTgnCitlbHNlOgorICAgIHNoZWJhbmdfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKworCitjbGFzcyBaaXBBcHBFcnJvcihWYWx1ZUVycm9yKToKKyAgICBwYXNzCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfbWF5YmVfb3BlbihhcmNoaXZlLCBtb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGFyY2hpdmUsIHBhdGhsaWIuUGF0aCk6CisgICAgICAgIGFyY2hpdmUgPSBzdHIoYXJjaGl2ZSkKKyAgICBpZiBpc2luc3RhbmNlKGFyY2hpdmUsIHN0cik6CisgICAgICAgIHdpdGggb3BlbihhcmNoaXZlLCBtb2RlKSBhcyBmOgorICAgICAgICAgICAgeWllbGQgZgorICAgIGVsc2U6CisgICAgICAgIHlpZWxkIGFyY2hpdmUKKworCitkZWYgX3dyaXRlX2ZpbGVfcHJlZml4KGYsIGludGVycHJldGVyKToKKyAgICAiIiJXcml0ZSBhIHNoZWJhbmcgbGluZS4iIiIKKyAgICBpZiBpbnRlcnByZXRlcjoKKyAgICAgICAgc2hlYmFuZyA9IGInIyEnICsgaW50ZXJwcmV0ZXIuZW5jb2RlKHNoZWJhbmdfZW5jb2RpbmcpICsgYidcbicKKyAgICAgICAgZi53cml0ZShzaGViYW5nKQorCisKK2RlZiBfY29weV9hcmNoaXZlKGFyY2hpdmUsIG5ld19hcmNoaXZlLCBpbnRlcnByZXRlcj1Ob25lKToKKyAgICAiIiJDb3B5IGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUsIG1vZGlmeWluZyB0aGUgc2hlYmFuZyBsaW5lLiIiIgorICAgIHdpdGggX21heWJlX29wZW4oYXJjaGl2ZSwgJ3JiJykgYXMgc3JjOgorICAgICAgICAjIFNraXAgdGhlIHNoZWJhbmcgbGluZSBmcm9tIHRoZSBzb3VyY2UuCisgICAgICAgICMgUmVhZCAyIGJ5dGVzIG9mIHRoZSBzb3VyY2UgYW5kIGNoZWNrIGlmIHRoZXkgYXJlICMhLgorICAgICAgICBmaXJzdF8yID0gc3JjLnJlYWQoMikKKyAgICAgICAgaWYgZmlyc3RfMiA9PSBiJyMhJzoKKyAgICAgICAgICAgICMgRGlzY2FyZCB0aGUgaW5pdGlhbCAyIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgc2hlYmFuZyBsaW5lLgorICAgICAgICAgICAgZmlyc3RfMiA9IGInJworICAgICAgICAgICAgc3JjLnJlYWRsaW5lKCkKKworICAgICAgICB3aXRoIF9tYXliZV9vcGVuKG5ld19hcmNoaXZlLCAnd2InKSBhcyBkc3Q6CisgICAgICAgICAgICBfd3JpdGVfZmlsZV9wcmVmaXgoZHN0LCBpbnRlcnByZXRlcikKKyAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIG5vIHNoZWJhbmcsICJmaXJzdF8yIiBjb250YWlucyB0aGUgZmlyc3QgMiBieXRlcworICAgICAgICAgICAgIyBvZiB0aGUgc291cmNlIGZpbGUsIHNvIHdyaXRlIHRoZW0gYmVmb3JlIGNvcHlpbmcgdGhlIHJlc3QKKyAgICAgICAgICAgICMgb2YgdGhlIGZpbGUuCisgICAgICAgICAgICBkc3Qud3JpdGUoZmlyc3RfMikKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRzdCkKKworICAgIGlmIGludGVycHJldGVyIGFuZCBpc2luc3RhbmNlKG5ld19hcmNoaXZlLCBzdHIpOgorICAgICAgICBvcy5jaG1vZChuZXdfYXJjaGl2ZSwgb3Muc3RhdChuZXdfYXJjaGl2ZSkuc3RfbW9kZSB8IHN0YXQuU19JRVhFQykKKworCitkZWYgY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQ9Tm9uZSwgaW50ZXJwcmV0ZXI9Tm9uZSwgbWFpbj1Ob25lKToKKyAgICAiIiJDcmVhdGUgYW4gYXBwbGljYXRpb24gYXJjaGl2ZSBmcm9tIFNPVVJDRS4KKworICAgIFRoZSBTT1VSQ0UgY2FuIGJlIHRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5LCBvciBhIGZpbGVuYW1lIG9yIGEgZmlsZS1saWtlCisgICAgb2JqZWN0IHJlZmVycmluZyB0byBhbiBleGlzdGluZyBhcmNoaXZlLgorCisgICAgVGhlIGNvbnRlbnQgb2YgU09VUkNFIGlzIHBhY2tlZCBpbnRvIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUgaW4gVEFSR0VULAorICAgIHdoaWNoIGNhbiBiZSBhIGZpbGVuYW1lIG9yIGEgZmlsZS1saWtlIG9iamVjdC4gIElmIFNPVVJDRSBpcyBhIGRpcmVjdG9yeSwKKyAgICBUQVJHRVQgY2FuIGJlIG9taXR0ZWQgYW5kIHdpbGwgZGVmYXVsdCB0byB0aGUgbmFtZSBvZiBTT1VSQ0Ugd2l0aCAucHl6CisgICAgYXBwZW5kZWQuCisKKyAgICBUaGUgY3JlYXRlZCBhcHBsaWNhdGlvbiBhcmNoaXZlIHdpbGwgaGF2ZSBhIHNoZWJhbmcgbGluZSBzcGVjaWZ5aW5nCisgICAgdGhhdCBpdCBzaG91bGQgcnVuIHdpdGggSU5URVJQUkVURVIgKHRoZXJlIHdpbGwgYmUgbm8gc2hlYmFuZyBsaW5lIGlmCisgICAgSU5URVJQUkVURVIgaXMgTm9uZSksIGFuZCBhIF9fbWFpbl9fLnB5IHdoaWNoIHJ1bnMgTUFJTiAoaWYgTUFJTiBpcworICAgIG5vdCBzcGVjaWZpZWQsIGFuIGV4aXN0aW5nIF9fbWFpbl9fLnB5IHdpbGwgYmUgdXNlZCkuIEl0IGlzIGFuIHRvIHNwZWNpZnkKKyAgICBNQUlOIGZvciBhbnl0aGluZyBvdGhlciB0aGFuIGEgZGlyZWN0b3J5IHNvdXJjZSB3aXRoIG5vIF9fbWFpbl9fLnB5LCBhbmQgaXQKKyAgICBpcyBhbiBlcnJvciB0byBvbWl0IE1BSU4gaWYgdGhlIGRpcmVjdG9yeSBoYXMgbm8gX19tYWluX18ucHkuCisgICAgIiIiCisgICAgIyBBcmUgd2UgY29weWluZyBhbiBleGlzdGluZyBhcmNoaXZlPworICAgIHNvdXJjZV9pc19maWxlID0gRmFsc2UKKyAgICBpZiBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKSBhbmQgaGFzYXR0cihzb3VyY2UsICdyZWFkbGluZScpOgorICAgICAgICBzb3VyY2VfaXNfZmlsZSA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBzb3VyY2UgPSBwYXRobGliLlBhdGgoc291cmNlKQorICAgICAgICBpZiBzb3VyY2UuaXNfZmlsZSgpOgorICAgICAgICAgICAgc291cmNlX2lzX2ZpbGUgPSBUcnVlCisKKyAgICBpZiBzb3VyY2VfaXNfZmlsZToKKyAgICAgICAgX2NvcHlfYXJjaGl2ZShzb3VyY2UsIHRhcmdldCwgaW50ZXJwcmV0ZXIpCisgICAgICAgIHJldHVybgorCisgICAgIyBXZSBhcmUgY3JlYXRpbmcgYSBuZXcgYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5LgorICAgIGlmIG5vdCBzb3VyY2UuZXhpc3RzKCk6CisgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJTb3VyY2UgZG9lcyBub3QgZXhpc3QiKQorICAgIGhhc19tYWluID0gKHNvdXJjZSAvICdfX21haW5fXy5weScpLmlzX2ZpbGUoKQorICAgIGlmIG1haW4gYW5kIGhhc19tYWluOgorICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigKKyAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSBlbnRyeSBwb2ludCBpZiB0aGUgc291cmNlIGhhcyBfX21haW5fXy5weSIpCisgICAgaWYgbm90IChtYWluIG9yIGhhc19tYWluKToKKyAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoIkFyY2hpdmUgaGFzIG5vIGVudHJ5IHBvaW50IikKKworICAgIG1haW5fcHkgPSBOb25lCisgICAgaWYgbWFpbjoKKyAgICAgICAgIyBDaGVjayB0aGF0IG1haW4gaGFzIHRoZSByaWdodCBmb3JtYXQuCisgICAgICAgIG1vZCwgc2VwLCBmbiA9IG1haW4ucGFydGl0aW9uKCc6JykKKyAgICAgICAgbW9kX29rID0gYWxsKHBhcnQuaXNpZGVudGlmaWVyKCkgZm9yIHBhcnQgaW4gbW9kLnNwbGl0KCcuJykpCisgICAgICAgIGZuX29rID0gYWxsKHBhcnQuaXNpZGVudGlmaWVyKCkgZm9yIHBhcnQgaW4gZm4uc3BsaXQoJy4nKSkKKyAgICAgICAgaWYgbm90IChzZXAgPT0gJzonIGFuZCBtb2Rfb2sgYW5kIGZuX29rKToKKyAgICAgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJJbnZhbGlkIGVudHJ5IHBvaW50OiAiICsgbWFpbikKKyAgICAgICAgbWFpbl9weSA9IE1BSU5fVEVNUExBVEUuZm9ybWF0KG1vZHVsZT1tb2QsIGZuPWZuKQorCisgICAgaWYgdGFyZ2V0IGlzIE5vbmU6CisgICAgICAgIHRhcmdldCA9IHNvdXJjZS53aXRoX3N1ZmZpeCgnLnB5eicpCisgICAgZWxpZiBub3QgaGFzYXR0cih0YXJnZXQsICd3cml0ZScpOgorICAgICAgICB0YXJnZXQgPSBwYXRobGliLlBhdGgodGFyZ2V0KQorCisgICAgd2l0aCBfbWF5YmVfb3Blbih0YXJnZXQsICd3YicpIGFzIGZkOgorICAgICAgICBfd3JpdGVfZmlsZV9wcmVmaXgoZmQsIGludGVycHJldGVyKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmZCwgJ3cnKSBhcyB6OgorICAgICAgICAgICAgcm9vdCA9IHBhdGhsaWIuUGF0aChzb3VyY2UpCisgICAgICAgICAgICBmb3IgY2hpbGQgaW4gcm9vdC5yZ2xvYignKicpOgorICAgICAgICAgICAgICAgIGFyY25hbWUgPSBzdHIoY2hpbGQucmVsYXRpdmVfdG8ocm9vdCkpCisgICAgICAgICAgICAgICAgei53cml0ZShzdHIoY2hpbGQpLCBhcmNuYW1lKQorICAgICAgICAgICAgaWYgbWFpbl9weToKKyAgICAgICAgICAgICAgICB6LndyaXRlc3RyKCdfX21haW5fXy5weScsIG1haW5fcHkuZW5jb2RlKCd1dGYtOCcpKQorCisgICAgaWYgaW50ZXJwcmV0ZXIgYW5kIG5vdCBoYXNhdHRyKHRhcmdldCwgJ3dyaXRlJyk6CisgICAgICAgIHRhcmdldC5jaG1vZCh0YXJnZXQuc3RhdCgpLnN0X21vZGUgfCBzdGF0LlNfSUVYRUMpCisKKworZGVmIGdldF9pbnRlcnByZXRlcihhcmNoaXZlKToKKyAgICB3aXRoIF9tYXliZV9vcGVuKGFyY2hpdmUsICdyYicpIGFzIGY6CisgICAgICAgIGlmIGYucmVhZCgyKSA9PSBiJyMhJzoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWRsaW5lKCkuc3RyaXAoKS5kZWNvZGUoc2hlYmFuZ19lbmNvZGluZykKKworCitkZWYgbWFpbihhcmdzPU5vbmUpOgorICAgICIiIlJ1biB0aGUgemlwYXBwIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCisKKyAgICBUaGUgQVJHUyBwYXJhbWV0ZXIgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgYXJndW1lbnQgbGlzdCBkaXJlY3RseS4KKyAgICBPbWl0dGluZyBBUkdTIChvciBzZXR0aW5nIGl0IHRvIE5vbmUpIHdvcmtzIGFzIGZvciBhcmdwYXJzZSwgdXNpbmcKKyAgICBzeXMuYXJndlsxOl0gYXMgdGhlIGFyZ3VtZW50IGxpc3QuCisgICAgIiIiCisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQnLCAnLW8nLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICBoZWxwPSJUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IGFyY2hpdmUuICIKKyAgICAgICAgICAgICAgICAgIlJlcXVpcmVkIGlmIFNPVVJDRSBpcyBhbiBhcmNoaXZlLiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1weXRob24nLCAnLXAnLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICBoZWxwPSJUaGUgbmFtZSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIHVzZSAiCisgICAgICAgICAgICAgICAgICIoZGVmYXVsdDogbm8gc2hlYmFuZyBsaW5lKS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbWFpbicsICctbScsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgIGhlbHA9IlRoZSBtYWluIGZ1bmN0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiAiCisgICAgICAgICAgICAgICAgICIoZGVmYXVsdDogdXNlIGFuIGV4aXN0aW5nIF9fbWFpbl9fLnB5KS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5mbycsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSJEaXNwbGF5IHRoZSBpbnRlcnByZXRlciBmcm9tIHRoZSBhcmNoaXZlLiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnc291cmNlJywKKyAgICAgICAgICAgIGhlbHA9IlNvdXJjZSBkaXJlY3RvcnkgKG9yIGV4aXN0aW5nIGFyY2hpdmUpLiIpCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKworICAgICMgSGFuZGxlIGBweXRob24gLW0gemlwYXBwIGFyY2hpdmUucHl6IC0taW5mb2AuCisgICAgaWYgYXJncy5pbmZvOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoYXJncy5zb3VyY2UpOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiQ2FuIG9ubHkgZ2V0IGluZm8gZm9yIGFuIGFyY2hpdmUgZmlsZSIpCisgICAgICAgIGludGVycHJldGVyID0gZ2V0X2ludGVycHJldGVyKGFyZ3Muc291cmNlKQorICAgICAgICBwcmludCgiSW50ZXJwcmV0ZXI6IHt9Ii5mb3JtYXQoaW50ZXJwcmV0ZXIgb3IgIjxub25lPiIpKQorICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoYXJncy5zb3VyY2UpOgorICAgICAgICBpZiBhcmdzLm91dHB1dCBpcyBOb25lIG9yIChvcy5wYXRoLmV4aXN0cyhhcmdzLm91dHB1dCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguc2FtZWZpbGUoYXJncy5zb3VyY2UsIGFyZ3Mub3V0cHV0KSk6CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJJbi1wbGFjZSBlZGl0aW5nIG9mIGFyY2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBhcmdzLm1haW46CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJDYW5ub3QgY2hhbmdlIHRoZSBtYWluIGZ1bmN0aW9uIHdoZW4gY29weWluZyIpCisKKyAgICBjcmVhdGVfYXJjaGl2ZShhcmdzLnNvdXJjZSwgYXJncy5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXI9YXJncy5weXRob24sIG1haW49YXJncy5tYWluKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IGJkYTYxMzQuLjg1YmRhYTkgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0xMyw2ICsxMyw3IEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0aHJlYWRpbmcKIAogCiB0cnk6CkBAIC0zNTUsNiArMzU2LDI4IEBACiAgICAgICAgICMgY29tcHJlc3Nfc2l6ZSAgICAgICAgIFNpemUgb2YgdGhlIGNvbXByZXNzZWQgZmlsZQogICAgICAgICAjIGZpbGVfc2l6ZSAgICAgICAgICAgICBTaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZmlsZQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbJzwlcyBmaWxlbmFtZT0lcicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuZmlsZW5hbWUpXQorICAgICAgICBpZiBzZWxmLmNvbXByZXNzX3R5cGUgIT0gWklQX1NUT1JFRDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBjb21wcmVzc190eXBlPSVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzb3JfbmFtZXMuZ2V0KHNlbGYuY29tcHJlc3NfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21wcmVzc190eXBlKSkKKyAgICAgICAgaGkgPSBzZWxmLmV4dGVybmFsX2F0dHIgPj4gMTYKKyAgICAgICAgbG8gPSBzZWxmLmV4dGVybmFsX2F0dHIgJiAweEZGRkYKKyAgICAgICAgaWYgaGk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZW1vZGU9JXInICUgc3RhdC5maWxlbW9kZShoaSkpCisgICAgICAgIGlmIGxvOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGV4dGVybmFsX2F0dHI9JSN4JyAlIGxvKQorICAgICAgICBpc2RpciA9IHNlbGYuZmlsZW5hbWVbLTE6XSA9PSAnLycKKyAgICAgICAgaWYgbm90IGlzZGlyIG9yIHNlbGYuZmlsZV9zaXplOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVfc2l6ZT0lcicgJSBzZWxmLmZpbGVfc2l6ZSkKKyAgICAgICAgaWYgKChub3QgaXNkaXIgb3Igc2VsZi5jb21wcmVzc19zaXplKSBhbmQKKyAgICAgICAgICAgIChzZWxmLmNvbXByZXNzX3R5cGUgIT0gWklQX1NUT1JFRCBvcgorICAgICAgICAgICAgIHNlbGYuZmlsZV9zaXplICE9IHNlbGYuY29tcHJlc3Nfc2l6ZSkpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGNvbXByZXNzX3NpemU9JXInICUgc2VsZi5jb21wcmVzc19zaXplKQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+JykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCiAgICAgZGVmIEZpbGVIZWFkZXIoc2VsZiwgemlwNjQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgcGVyLWZpbGUgaGVhZGVyIGFzIGEgc3RyaW5nLiIiIgogICAgICAgICBkdCA9IHNlbGYuZGF0ZV90aW1lCkBAIC02MjQsNiArNjQ3LDQ3IEBACiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJjb21wcmVzc2lvbiB0eXBlICVkIiAlIChjb21wcmVzc190eXBlLCkpCiAKIAorY2xhc3MgX1NoYXJlZEZpbGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2spOgorICAgICAgICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICBzZWxmLl9wb3MgPSBwb3MKKyAgICAgICAgc2VsZi5fY2xvc2UgPSBjbG9zZQorICAgICAgICBzZWxmLl9sb2NrID0gbG9jaworCisgICAgZGVmIHJlYWQoc2VsZiwgbj0tMSk6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUuc2VlayhzZWxmLl9wb3MpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKG4pCisgICAgICAgICAgICBzZWxmLl9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpbGVvYmogPSBzZWxmLl9maWxlCisgICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fY2xvc2UoZmlsZW9iaikKKworIyBQcm92aWRlIHRoZSB0ZWxsIG1ldGhvZCBmb3IgdW5zZWVrYWJsZSBzdHJlYW0KK2NsYXNzIF9UZWxsYWJsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnApOgorICAgICAgICBzZWxmLmZwID0gZnAKKyAgICAgICAgc2VsZi5vZmZzZXQgPSAwCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIG4gPSBzZWxmLmZwLndyaXRlKGRhdGEpCisgICAgICAgIHNlbGYub2Zmc2V0ICs9IG4KKyAgICAgICAgcmV0dXJuIG4KKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKKworICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuZnAuY2xvc2UoKQorCisKIGNsYXNzIFppcEV4dEZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgogICAgICIiIkZpbGUtbGlrZSBvYmplY3QgZm9yIHJlYWRpbmcgYW4gYXJjaGl2ZSBtZW1iZXIuCiAgICAgICAgSXMgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkuCkBAIC02NzEsNiArNzM1LDIwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9jcmMgPSBOb25lCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFsnPCVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKV0KKyAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIG5hbWU9JXIgbW9kZT0lcicgJSAoc2VsZi5uYW1lLCBzZWxmLm1vZGUpKQorICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBjb21wcmVzc190eXBlPSVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLl9jb21wcmVzc190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+JykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGxpbWl0PS0xKToKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0uCiAKQEAgLTg4NCw3ICs5NjIsOCBAQAogCiAgICAgZmlsZTogRWl0aGVyIHRoZSBwYXRoIHRvIHRoZSBmaWxlLCBvciBhIGZpbGUtbGlrZSBvYmplY3QuCiAgICAgICAgICAgSWYgaXQgaXMgYSBwYXRoLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBhbmQgY2xvc2VkIGJ5IFppcEZpbGUuCi0gICAgbW9kZTogVGhlIG1vZGUgY2FuIGJlIGVpdGhlciByZWFkICJyIiwgd3JpdGUgInciIG9yIGFwcGVuZCAiYSIuCisgICAgbW9kZTogVGhlIG1vZGUgY2FuIGJlIGVpdGhlciByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKKyAgICAgICAgICBvciBhcHBlbmQgJ2EnLgogICAgIGNvbXByZXNzaW9uOiBaSVBfU1RPUkVEIChubyBjb21wcmVzc2lvbiksIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYiksCiAgICAgICAgICAgICAgICAgIFpJUF9CWklQMiAocmVxdWlyZXMgYnoyKSBvciBaSVBfTFpNQSAocmVxdWlyZXMgbHptYSkuCiAgICAgYWxsb3daaXA2NDogaWYgVHJ1ZSBaaXBGaWxlIHdpbGwgY3JlYXRlIGZpbGVzIHdpdGggWklQNjQgZXh0ZW5zaW9ucyB3aGVuCkBAIC04OTcsOSArOTc2LDEwIEBACiAgICAgX3dpbmRvd3NfaWxsZWdhbF9uYW1lX3RyYW5zX3RhYmxlID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGU9InIiLCBjb21wcmVzc2lvbj1aSVBfU1RPUkVELCBhbGxvd1ppcDY0PVRydWUpOgotICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAiciIsIHdyaXRlICJ3IiBvciBhcHBlbmQgImEiLiIiIgotICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJhIik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1ppcEZpbGUoKSByZXF1aXJlcyBtb2RlICJyIiwgInciLCBvciAiYSInKQorICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAncicsIHdyaXRlICd3JywgZXhjbHVzaXZlIGNyZWF0ZSAneCcsCisgICAgICAgIG9yIGFwcGVuZCAnYScuIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluICgncicsICd3JywgJ3gnLCAnYScpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKIAogICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pCiAKQEAgLTkwOSw3ICs5ODksNyBAQAogICAgICAgICBzZWxmLk5hbWVUb0luZm8gPSB7fSAgICAjIEZpbmQgZmlsZSBpbmZvIGdpdmVuIG5hbWUKICAgICAgICAgc2VsZi5maWxlbGlzdCA9IFtdICAgICAgIyBMaXN0IG9mIFppcEluZm8gaW5zdGFuY2VzIGZvciBhcmNoaXZlCiAgICAgICAgIHNlbGYuY29tcHJlc3Npb24gPSBjb21wcmVzc2lvbiAgIyBNZXRob2Qgb2YgY29tcHJlc3Npb24KLSAgICAgICAgc2VsZi5tb2RlID0ga2V5ID0gbW9kZS5yZXBsYWNlKCdiJywgJycpWzBdCisgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5wd2QgPSBOb25lCiAgICAgICAgIHNlbGYuX2NvbW1lbnQgPSBiJycKIApAQCAtOTE4LDMzICs5OTgsNTEgQEAKICAgICAgICAgICAgICMgTm8sIGl0J3MgYSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fZmlsZVBhc3NlZCA9IDAKICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlCi0gICAgICAgICAgICBtb2RlRGljdCA9IHsncicgOiAncmInLCAndyc6ICd3YicsICdhJyA6ICdyK2InfQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZnAgPSBpby5vcGVuKGZpbGUsIG1vZGVEaWN0W21vZGVdKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAnYSc6Ci0gICAgICAgICAgICAgICAgICAgIG1vZGUgPSBrZXkgPSAndycKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgbW9kZURpY3RbbW9kZV0pCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZGVEaWN0ID0geydyJyA6ICdyYicsICd3JzogJ3crYicsICd4JzogJ3grYicsICdhJyA6ICdyK2InLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3IrYic6ICd3K2InLCAndytiJzogJ3diJywgJ3grYic6ICd4Yid9CisgICAgICAgICAgICBmaWxlbW9kZSA9IG1vZGVEaWN0W21vZGVdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgZmlsZW1vZGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVtb2RlIGluIG1vZGVEaWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW1vZGUgPSBtb2RlRGljdFtmaWxlbW9kZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX2ZpbGVQYXNzZWQgPSAxCiAgICAgICAgICAgICBzZWxmLmZwID0gZmlsZQogICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGdldGF0dHIoZmlsZSwgJ25hbWUnLCBOb25lKQorICAgICAgICBzZWxmLl9maWxlUmVmQ250ID0gMQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKKyAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYga2V5ID09ICdyJzoKKyAgICAgICAgICAgIGlmIG1vZGUgPT0gJ3InOgogICAgICAgICAgICAgICAgIHNlbGYuX1JlYWxHZXRDb250ZW50cygpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAndyc6CisgICAgICAgICAgICBlbGlmIG1vZGUgaW4gKCd3JywgJ3gnKToKICAgICAgICAgICAgICAgICAjIHNldCB0aGUgbW9kaWZpZWQgZmxhZyBzbyBjZW50cmFsIGRpcmVjdG9yeSBnZXRzIHdyaXR0ZW4KICAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgbm8gZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBhcmNoaXZlCiAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2EnOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwID0gX1RlbGxhYmxlKHNlbGYuZnApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gMAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBTb21lIGZpbGUtbGlrZSBvYmplY3RzIGNhbiBwcm92aWRlIHRlbGwoKSBidXQgbm90IHNlZWsoKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBtb2RlID09ICdhJzoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGZpbGUgaXMgYSB6aXAgZmlsZQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9SZWFsR2V0Q29udGVudHMoKQogICAgICAgICAgICAgICAgICAgICAjIHNlZWsgdG8gc3RhcnQgb2YgZGlyZWN0b3J5IGFuZCBvdmVyd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEJhZFppcEZpbGU6CiAgICAgICAgICAgICAgICAgICAgICMgZmlsZSBpcyBub3QgYSB6aXAgZmlsZSwganVzdCBhcHBlbmQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKDAsIDIpCkBAIC05NTIsMTMgKzEwNTAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdGhlIG1vZGlmaWVkIGZsYWcgc28gY2VudHJhbCBkaXJlY3RvcnkgZ2V0cyB3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICMgZXZlbiBpZiBubyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGFyY2hpdmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTW9kZSBtdXN0IGJlICJyIiwgInciIG9yICJhIicpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJNb2RlIG11c3QgYmUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgICBzZWxmLmZwID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fZnBjbG9zZShmcCkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtOTY3LDYgKzEwNjUsMjAgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgIHNlbGYuY2xvc2UoKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbJzwlcy4lcycgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXyldCisgICAgICAgIGlmIHNlbGYuZnAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLl9maWxlUGFzc2VkOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlPSVyJyAlIHNlbGYuZnApCisgICAgICAgICAgICBlbGlmIHNlbGYuZmlsZW5hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVuYW1lPSVyJyAlIHNlbGYuZmlsZW5hbWUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgbW9kZT0lcicgJSBzZWxmLm1vZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCc+JykKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCiAgICAgZGVmIF9SZWFsR2V0Q29udGVudHMoc2VsZik6CiAgICAgICAgICIiIlJlYWQgaW4gdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGZvciB0aGUgWklQIGZpbGUuIiIiCiAgICAgICAgIGZwID0gc2VsZi5mcApAQCAtMTEzMSwyMyArMTI0MywxNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHJlYWQgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCi0gICAgICAgICMgT25seSBvcGVuIGEgbmV3IGZpbGUgZm9yIGluc3RhbmNlcyB3aGVyZSB3ZSB3ZXJlIG5vdAotICAgICAgICAjIGdpdmVuIGEgZmlsZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yCi0gICAgICAgIGlmIHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICB6ZWZfZmlsZSA9IHNlbGYuZnAKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBpbmZvIG9iamVjdAorICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIFppcEluZm8pOgorICAgICAgICAgICAgIyAnbmFtZScgaXMgYWxyZWFkeSBhbiBpbmZvIG9iamVjdAorICAgICAgICAgICAgemluZm8gPSBuYW1lCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6ZWZfZmlsZSA9IGlvLm9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykKKyAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCisgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQogCisgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQorICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2spCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6Ci0gICAgICAgICAgICAgICAgIyAnbmFtZScgaXMgYWxyZWFkeSBhbiBpbmZvIG9iamVjdAotICAgICAgICAgICAgICAgIHppbmZvID0gbmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEdldCBpbmZvIG9iamVjdCBmb3IgbmFtZQotICAgICAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCi0gICAgICAgICAgICB6ZWZfZmlsZS5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQsIDApCi0KICAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgICBmaGVhZGVyID0gemVmX2ZpbGUucmVhZChzaXplRmlsZUhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbihmaGVhZGVyKSAhPSBzaXplRmlsZUhlYWRlcjoKQEAgLTEyMDYsMTEgKzEzMTIsOSBAQAogICAgICAgICAgICAgICAgIGlmIGhbMTFdICE9IGNoZWNrX2J5dGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlIiwgbmFtZSkKIAotICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2ZpbGVvYmo9bm90IHNlbGYuX2ZpbGVQYXNzZWQpCisgICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLCBUcnVlKQogICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKLSAgICAgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKToKQEAgLTEyOTgsOCArMTQwMiw4IEBACiAgICAgICAgIGlmIHppbmZvLmZpbGVuYW1lIGluIHNlbGYuTmFtZVRvSW5mbzoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCi0gICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCJ3IiwgImEiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignd3JpdGUoKSByZXF1aXJlcyBtb2RlICJ3IiBvciAiYSInKQorICAgICAgICBpZiBzZWxmLm1vZGUgbm90IGluICgndycsICd4JywgJ2EnKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigid3JpdGUoKSByZXF1aXJlcyBtb2RlICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCkBAIC0xMzQ0LDY2ICsxNDQ4LDc5IEBACiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQogICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCi0gICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcwotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKLSAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKIAotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICB6aW5mby5DUkMgPSAwCi0gICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCisgICAgICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSAwCisgICAgICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCisgICAgICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQorICAgICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAorICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpICYgMHhmZmZmZmZmZgorICAgICAgICAgICAgICAgICAgICBpZiBjbXByOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQorICAgICAgICAgICAgaWYgY21wcjoKKyAgICAgICAgICAgICAgICBidWYgPSBjbXByLmZsdXNoKCkKKyAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQorICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDCisgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSBmaWxlX3NpemUKKyAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJworICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgbm90IHppcDY0IGFuZCBzZWxmLl9hbGxvd1ppcDY0OgorICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKKyAgICAgICAgICAgICAgICAgICAgaWYgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUnKQorICAgICAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCisgICAgICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwotICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKEZhbHNlKSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGNtcHIgPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKLSAgICAgICAgICAgICMgTXVzdCBvdmVyd3JpdGUgQ1JDIGFuZCBzaXplcyB3aXRoIGNvcnJlY3QgZGF0YSBsYXRlcgotICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAotICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVAotICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKLSAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpICYgMHhmZmZmZmZmZgotICAgICAgICAgICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICBidWYgPSBjbXByLmZsdXNoKCkKLSAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgemluZm8uQ1JDID0gQ1JDCi0gICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZpbGUgc2l6ZSBoYXMgaW5jcmVhc2VkIGR1cmluZyBjb21wcmVzc2luZycpCi0gICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUnKQotICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQotICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQotICAgICAgICBwb3NpdGlvbiA9IHNlbGYuZnAudGVsbCgpICAgICAgICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCi0gICAgICAgIHNlbGYuZnAuc2Vlayh6aW5mby5oZWFkZXJfb2Zmc2V0LCAwKQotICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICBzZWxmLmZwLnNlZWsocG9zaXRpb24sIDApCi0gICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KIAogICAgIGRlZiB3cml0ZXN0cihzZWxmLCB6aW5mb19vcl9hcmNuYW1lLCBkYXRhLCBjb21wcmVzc190eXBlPU5vbmUpOgogICAgICAgICAiIiJXcml0ZSBhIGZpbGUgaW50byB0aGUgYXJjaGl2ZS4gIFRoZSBjb250ZW50cyBpcyAnZGF0YScsIHdoaWNoCkBAIC0xNDMwLDE1NCArMTU0NywxNzEgQEAKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gbGVuKGRhdGEpICAgICAgICAgICAgIyBVbmNvbXByZXNzZWQgc2l6ZQotICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQotICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKLSAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKKyAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCi0gICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCi0gICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKLSAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgIGlmIGNvOgotICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICB6aXA2NCA9IHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIFwKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVAotICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCi0gICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKLSAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKLSAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplKSkKLSAgICAgICAgc2VsZi5mcC5mbHVzaCgpCi0gICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KKyAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCisgICAgICAgICAgICB6aW5mby5DUkMgPSBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmYgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KKyAgICAgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgICAgICBpZiBjbzoKKyAgICAgICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCisgICAgICAgICAgICB6aXA2NCA9IHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIFwKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQKKyAgICAgICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQorICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKKyAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKKyAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQorICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgIiIiQ2FsbCB0aGUgImNsb3NlKCkiIG1ldGhvZCBpbiBjYXNlIHRoZSB1c2VyIGZvcmdvdC4iIiIKICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLCBhbmQgZm9yIG1vZGUgInciIGFuZCAiYSIgd3JpdGUgdGhlIGVuZGluZworICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZSwgYW5kIGZvciBtb2RlICd3JywgJ3gnIGFuZCAnYScgd3JpdGUgdGhlIGVuZGluZwogICAgICAgICByZWNvcmRzLiIiIgogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gKCJ3IiwgImEiKSBhbmQgc2VsZi5fZGlkTW9kaWZ5OiAjIHdyaXRlIGVuZGluZyByZWNvcmRzCi0gICAgICAgICAgICAgICAgcG9zMSA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICAgICAgZm9yIHppbmZvIGluIHNlbGYuZmlsZWxpc3Q6ICAgICAgICAgIyB3cml0ZSBjZW50cmFsIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICBkdCA9IHppbmZvLmRhdGVfdGltZQotICAgICAgICAgICAgICAgICAgICBkb3NkYXRlID0gKGR0WzBdIC0gMTk4MCkgPDwgOSB8IGR0WzFdIDw8IDUgfCBkdFsyXQotICAgICAgICAgICAgICAgICAgICBkb3N0aW1lID0gZHRbM10gPDwgMTEgfCBkdFs0XSA8PCA1IHwgKGR0WzVdIC8vIDIpCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhID0gW10KLSAgICAgICAgICAgICAgICAgICAgaWYgemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgXAotICAgICAgICAgICAgICAgICAgICAgICBvciB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uZmlsZV9zaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmNvbXByZXNzX3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gemluZm8uY29tcHJlc3Nfc2l6ZQotCi0gICAgICAgICAgICAgICAgICAgIGlmIHppbmZvLmhlYWRlcl9vZmZzZXQgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5oZWFkZXJfb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0Ci0KLSAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCi0gICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gMAotICAgICAgICAgICAgICAgICAgICBpZiBleHRyYToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSBzdHJ1Y3QucGFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEhIJyArICdRJypsZW4oZXh0cmEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDgqbGVuKGV4dHJhKSwgKmV4dHJhKSArIGV4dHJhX2RhdGEKLQotICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChCWklQMl9WRVJTSU9OLCBtaW5fdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKLQotICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gemluZm8uX2VuY29kZUZpbGVuYW1lRmxhZ3MoKQotICAgICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uY3JlYXRlX3N5c3RlbSwgZXh0cmFjdF92ZXJzaW9uLCB6aW5mby5yZXNlcnZlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX2JpdHMsIHppbmZvLmNvbXByZXNzX3R5cGUsIGRvc3RpbWUsIGRvc2RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGZpbGVuYW1lKSwgbGVuKGV4dHJhX2RhdGEpLCBsZW4oemluZm8uY29tbWVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgemluZm8uaW50ZXJuYWxfYXR0ciwgemluZm8uZXh0ZXJuYWxfYXR0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgRGVwcmVjYXRpb25XYXJuaW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoKHN0cnVjdENlbnRyYWxEaXIsIHN0cmluZ0NlbnRyYWxEaXIsIGNyZWF0ZV92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLkNSQywgY29tcHJlc3Nfc2l6ZSwgZmlsZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbih6aW5mby5maWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCksIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoY2VudGRpcikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShleHRyYV9kYXRhKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLmNvbW1lbnQpCi0KLSAgICAgICAgICAgICAgICBwb3MyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgICAgICAjIFdyaXRlIGVuZC1vZi16aXAtYXJjaGl2ZSByZWNvcmQKLSAgICAgICAgICAgICAgICBjZW50RGlyQ291bnQgPSBsZW4oc2VsZi5maWxlbGlzdCkKLSAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSA9IHBvczIgLSBwb3MxCi0gICAgICAgICAgICAgICAgY2VudERpck9mZnNldCA9IHBvczEKLSAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBjZW50RGlyQ291bnQgPiBaSVBfRklMRUNPVU5UX0xJTUlUOgotICAgICAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJGaWxlcyBjb3VudCIKLSAgICAgICAgICAgICAgICBlbGlmIGNlbnREaXJPZmZzZXQgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiQ2VudHJhbCBkaXJlY3Rvcnkgb2Zmc2V0IgotICAgICAgICAgICAgICAgIGVsaWYgY2VudERpclNpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiQ2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSIKLSAgICAgICAgICAgICAgICBpZiByZXF1aXJlc196aXA2NDoKLSAgICAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIHdyaXRlIHRoZSBaSVA2NCBlbmQtb2YtYXJjaGl2ZSByZWNvcmRzCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKHJlcXVpcmVzX3ppcDY0ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCi0gICAgICAgICAgICAgICAgICAgIHppcDY0ZW5kcmVjID0gc3RydWN0LnBhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjQsIHN0cmluZ0VuZEFyY2hpdmU2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCA0NSwgNDUsIDAsIDAsIGNlbnREaXJDb3VudCwgY2VudERpckNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemlwNjRlbmRyZWMpCi0KLSAgICAgICAgICAgICAgICAgICAgemlwNjRsb2NyZWMgPSBzdHJ1Y3QucGFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NExvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdFbmRBcmNoaXZlNjRMb2NhdG9yLCAwLCBwb3MyLCAxKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0bG9jcmVjKQotICAgICAgICAgICAgICAgICAgICBjZW50RGlyQ291bnQgPSBtaW4oY2VudERpckNvdW50LCAweEZGRkYpCi0gICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplID0gbWluKGNlbnREaXJTaXplLCAweEZGRkZGRkZGKQotICAgICAgICAgICAgICAgICAgICBjZW50RGlyT2Zmc2V0ID0gbWluKGNlbnREaXJPZmZzZXQsIDB4RkZGRkZGRkYpCi0KLSAgICAgICAgICAgICAgICBlbmRyZWMgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RFbmRBcmNoaXZlLCBzdHJpbmdFbmRBcmNoaXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGNlbnREaXJDb3VudCwgY2VudERpckNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0LCBsZW4oc2VsZi5fY29tbWVudCkpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShlbmRyZWMpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzZWxmLl9jb21tZW50KQotICAgICAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgndycsICd4JywgJ2EnKSBhbmQgc2VsZi5fZGlkTW9kaWZ5OiAjIHdyaXRlIGVuZGluZyByZWNvcmRzCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfZW5kX3JlY29yZCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKLSAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9mcGNsb3NlKGZwKQorCisgICAgZGVmIF93cml0ZV9lbmRfcmVjb3JkKHNlbGYpOgorICAgICAgICBmb3IgemluZm8gaW4gc2VsZi5maWxlbGlzdDogICAgICAgICAjIHdyaXRlIGNlbnRyYWwgZGlyZWN0b3J5CisgICAgICAgICAgICBkdCA9IHppbmZvLmRhdGVfdGltZQorICAgICAgICAgICAgZG9zZGF0ZSA9IChkdFswXSAtIDE5ODApIDw8IDkgfCBkdFsxXSA8PCA1IHwgZHRbMl0KKyAgICAgICAgICAgIGRvc3RpbWUgPSBkdFszXSA8PCAxMSB8IGR0WzRdIDw8IDUgfCAoZHRbNV0gLy8gMikKKyAgICAgICAgICAgIGV4dHJhID0gW10KKyAgICAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIFwKKyAgICAgICAgICAgICAgIG9yIHppbmZvLmNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uZmlsZV9zaXplKQorICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5jb21wcmVzc19zaXplKQorICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDB4ZmZmZmZmZmYKKyAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gMHhmZmZmZmZmZgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSB6aW5mby5maWxlX3NpemUKKyAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gemluZm8uY29tcHJlc3Nfc2l6ZQorCisgICAgICAgICAgICBpZiB6aW5mby5oZWFkZXJfb2Zmc2V0ID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IDB4ZmZmZmZmZmYKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IHppbmZvLmhlYWRlcl9vZmZzZXQKKworICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IDAKKyAgICAgICAgICAgIGlmIGV4dHJhOgorICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKKyAgICAgICAgICAgICAgICBleHRyYV9kYXRhID0gc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCisgICAgICAgICAgICAgICAgICAgIDEsIDgqbGVuKGV4dHJhKSwgKmV4dHJhKSArIGV4dHJhX2RhdGEKKworICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gWklQNjRfVkVSU0lPTgorCisgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChCWklQMl9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKyAgICAgICAgICAgIGVsaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorCisgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKKyAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5jcmVhdGVfdmVyc2lvbikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gemluZm8uX2VuY29kZUZpbGVuYW1lRmxhZ3MoKQorICAgICAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RDZW50cmFsRGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdDZW50cmFsRGlyLCBjcmVhdGVfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uY3JlYXRlX3N5c3RlbSwgZXh0cmFjdF92ZXJzaW9uLCB6aW5mby5yZXNlcnZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5DUkMsIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGZpbGVuYW1lKSwgbGVuKGV4dHJhX2RhdGEpLCBsZW4oemluZm8uY29tbWVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICBleGNlcHQgRGVwcmVjYXRpb25XYXJuaW5nOgorICAgICAgICAgICAgICAgIHByaW50KChzdHJ1Y3RDZW50cmFsRGlyLCBzdHJpbmdDZW50cmFsRGlyLCBjcmVhdGVfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgemluZm8uY3JlYXRlX3N5c3RlbSwgZXh0cmFjdF92ZXJzaW9uLCB6aW5mby5yZXNlcnZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5DUkMsIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGVuKHppbmZvLmZpbGVuYW1lKSwgbGVuKGV4dHJhX2RhdGEpLCBsZW4oemluZm8uY29tbWVudCksCisgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoY2VudGRpcikKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGV4dHJhX2RhdGEpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLmNvbW1lbnQpCisKKyAgICAgICAgcG9zMiA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICMgV3JpdGUgZW5kLW9mLXppcC1hcmNoaXZlIHJlY29yZAorICAgICAgICBjZW50RGlyQ291bnQgPSBsZW4oc2VsZi5maWxlbGlzdCkKKyAgICAgICAgY2VudERpclNpemUgPSBwb3MyIC0gc2VsZi5zdGFydF9kaXIKKyAgICAgICAgY2VudERpck9mZnNldCA9IHNlbGYuc3RhcnRfZGlyCisgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gTm9uZQorICAgICAgICBpZiBjZW50RGlyQ291bnQgPiBaSVBfRklMRUNPVU5UX0xJTUlUOgorICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiRmlsZXMgY291bnQiCisgICAgICAgIGVsaWYgY2VudERpck9mZnNldCA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiQ2VudHJhbCBkaXJlY3Rvcnkgb2Zmc2V0IgorICAgICAgICBlbGlmIGNlbnREaXJTaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBzaXplIgorICAgICAgICBpZiByZXF1aXJlc196aXA2NDoKKyAgICAgICAgICAgICMgTmVlZCB0byB3cml0ZSB0aGUgWklQNjQgZW5kLW9mLWFyY2hpdmUgcmVjb3JkcworICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKHJlcXVpcmVzX3ppcDY0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQorICAgICAgICAgICAgemlwNjRlbmRyZWMgPSBzdHJ1Y3QucGFjaygKKyAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjQsIHN0cmluZ0VuZEFyY2hpdmU2NCwKKyAgICAgICAgICAgICAgICA0NCwgNDUsIDQ1LCAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKKyAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemlwNjRlbmRyZWMpCisKKyAgICAgICAgICAgIHppcDY0bG9jcmVjID0gc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0TG9jYXRvciwKKyAgICAgICAgICAgICAgICBzdHJpbmdFbmRBcmNoaXZlNjRMb2NhdG9yLCAwLCBwb3MyLCAxKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGxvY3JlYykKKyAgICAgICAgICAgIGNlbnREaXJDb3VudCA9IG1pbihjZW50RGlyQ291bnQsIDB4RkZGRikKKyAgICAgICAgICAgIGNlbnREaXJTaXplID0gbWluKGNlbnREaXJTaXplLCAweEZGRkZGRkZGKQorICAgICAgICAgICAgY2VudERpck9mZnNldCA9IG1pbihjZW50RGlyT2Zmc2V0LCAweEZGRkZGRkZGKQorCisgICAgICAgIGVuZHJlYyA9IHN0cnVjdC5wYWNrKHN0cnVjdEVuZEFyY2hpdmUsIHN0cmluZ0VuZEFyY2hpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGNlbnREaXJDb3VudCwgY2VudERpckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCwgbGVuKHNlbGYuX2NvbW1lbnQpKQorICAgICAgICBzZWxmLmZwLndyaXRlKGVuZHJlYykKKyAgICAgICAgc2VsZi5mcC53cml0ZShzZWxmLl9jb21tZW50KQorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworICAgIGRlZiBfZnBjbG9zZShzZWxmLCBmcCk6CisgICAgICAgIGFzc2VydCBzZWxmLl9maWxlUmVmQ250ID4gMAorICAgICAgICBzZWxmLl9maWxlUmVmQ250IC09IDEKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVSZWZDbnQgYW5kIG5vdCBzZWxmLl9maWxlUGFzc2VkOgorICAgICAgICAgICAgZnAuY2xvc2UoKQogCiAKIGNsYXNzIFB5WmlwRmlsZShaaXBGaWxlKToKQEAgLTE1OTcsNyArMTczMSw3IEBACiAgICAgICAgIHRoZSBtb2R1bGVzIGludG8gdGhlIGFyY2hpdmUuICBJZiBwYXRobmFtZSBpcyBhIHBsYWluCiAgICAgICAgIGRpcmVjdG9yeSwgbGlzdGRpciAqLnB5IGFuZCBlbnRlciBhbGwgbW9kdWxlcy4gIEVsc2UsIHBhdGhuYW1lCiAgICAgICAgIG11c3QgYmUgYSBQeXRob24gKi5weSBmaWxlIGFuZCB0aGUgbW9kdWxlIHdpbGwgYmUgcHV0IGludG8gdGhlCi0gICAgICAgIGFyY2hpdmUuICBBZGRlZCBtb2R1bGVzIGFyZSBhbHdheXMgbW9kdWxlLnB5byBvciBtb2R1bGUucHljLgorICAgICAgICBhcmNoaXZlLiAgQWRkZWQgbW9kdWxlcyBhcmUgYWx3YXlzIG1vZHVsZS5weWMuCiAgICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgY29tcGlsZSB0aGUgbW9kdWxlLnB5IGludG8gbW9kdWxlLnB5YyBpZgogICAgICAgICBuZWNlc3NhcnkuCiAgICAgICAgIElmIGZpbHRlcmZ1bmMocGF0aG5hbWUpIGlzIGdpdmVuLCBpdCBpcyBjYWxsZWQgd2l0aCBldmVyeSBhcmd1bWVudC4KQEAgLTE2OTAsNDYgKzE4MjQsNTkgQEAKIAogICAgICAgICBmaWxlX3B5ICA9IHBhdGhuYW1lICsgIi5weSIKICAgICAgICAgZmlsZV9weWMgPSBwYXRobmFtZSArICIucHljIgotICAgICAgICBmaWxlX3B5byA9IHBhdGhuYW1lICsgIi5weW8iCi0gICAgICAgIHB5Y2FjaGVfcHljID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgVHJ1ZSkKLSAgICAgICAgcHljYWNoZV9weW8gPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBGYWxzZSkKKyAgICAgICAgcHljYWNoZV9vcHQwID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgb3B0aW1pemF0aW9uPScnKQorICAgICAgICBweWNhY2hlX29wdDEgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBvcHRpbWl6YXRpb249MSkKKyAgICAgICAgcHljYWNoZV9vcHQyID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgb3B0aW1pemF0aW9uPTIpCiAgICAgICAgIGlmIHNlbGYuX29wdGltaXplID09IC0xOgogICAgICAgICAgICAgIyBsZWdhY3kgbW9kZTogdXNlIHdoYXRldmVyIGZpbGUgaXMgcHJlc2VudAotICAgICAgICAgICAgaWYgKG9zLnBhdGguaXNmaWxlKGZpbGVfcHlvKSBhbmQKLSAgICAgICAgICAgICAgICBvcy5zdGF0KGZpbGVfcHlvKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKLSAgICAgICAgICAgICAgICAjIFVzZSAucHlvIGZpbGUuCi0gICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZuYW1lID0gZmlsZV9weW8KLSAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKGZpbGVfcHljKSBhbmQKKyAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5YykgYW5kCiAgICAgICAgICAgICAgICAgICBvcy5zdGF0KGZpbGVfcHljKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKICAgICAgICAgICAgICAgICAjIFVzZSAucHljIGZpbGUuCiAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZuYW1lID0gZmlsZV9weWMKLSAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfcHljKSBhbmQKLSAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9weWMpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgorICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9vcHQwKSBhbmQKKyAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9vcHQwKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weWMgZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHljCiAgICAgICAgICAgICAgICAgIyBmaWxlIG5hbWUgaW4gdGhlIGFyY2hpdmUuCi0gICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX3B5YworICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQwCiAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCi0gICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX3B5bykgYW5kCi0gICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfcHlvKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKLSAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weW8gZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHlvCisgICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX29wdDEpIGFuZAorICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX29wdDEpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgorICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5YyBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweWMKICAgICAgICAgICAgICAgICAjIGZpbGUgbmFtZSBpbiB0aGUgYXJjaGl2ZS4KLSAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfcHlvCi0gICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHlvCisgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDEKKyAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKKyAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfb3B0MikgYW5kCisgICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfb3B0Mikuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CisgICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHljIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5YworICAgICAgICAgICAgICAgICMgZmlsZSBuYW1lIGluIHRoZSBhcmNoaXZlLgorICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQyCisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgQ29tcGlsZSBweSBpbnRvIFBFUCAzMTQ3IHB5YyBmaWxlLgogICAgICAgICAgICAgICAgIGlmIF9jb21waWxlKGZpbGVfcHkpOgotICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IChweWNhY2hlX3B5YyBpZiBfX2RlYnVnX18gZWxzZSBweWNhY2hlX3B5bykKLSAgICAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IChmaWxlX3B5YyBpZiBfX2RlYnVnX18gZWxzZSBmaWxlX3B5bykKKyAgICAgICAgICAgICAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAorICAgICAgICAgICAgICAgICAgICBlbGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDEKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQyCisgICAgICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gYXJjbmFtZSA9IGZpbGVfcHkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgbmV3IG1vZGU6IHVzZSBnaXZlbiBvcHRpbWl6YXRpb24gbGV2ZWwKICAgICAgICAgICAgIGlmIHNlbGYuX29wdGltaXplID09IDA6Ci0gICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX3B5YworICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQwCiAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weW8KLSAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weW8KKyAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fb3B0aW1pemUgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiaW52YWxpZCB2YWx1ZSBmb3IgJ29wdGltaXplJzogeyFyfSIuZm9ybWF0KHNlbGYuX29wdGltaXplKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKICAgICAgICAgICAgIGlmIG5vdCAob3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZAogICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KGZuYW1lKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKICAgICAgICAgICAgICAgICBpZiBub3QgX2NvbXBpbGUoZmlsZV9weSwgb3B0aW1pemU9c2VsZi5fb3B0aW1pemUpOgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAppbmRleCA4ZWI1MzljLi40NjgzMGFkIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAorKysgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dApAQCAtMSwyNSArMSwxNSBAQAogQnVpbGRpbmcgYSBQeXRob24gTWFjIE9TIFggZGlzdHJpYnV0aW9uCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGBgYnVpbGQtaW5zdGFsbGVyLnB5YGAgc2NyaXB0IGNyZWF0ZXMgUHl0aG9uIGRpc3RyaWJ1dGlvbnMsIGluY2x1ZGluZwotY2VydGFpbiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgYXMgbmVjZXNzYXJ5LiAgSXQgYnVpbGRzIGEgY29tcGxldGUgCi1mcmFtZXdvcmstYmFzZWQgUHl0aG9uIG91dC1vZi10cmVlLCBpbnN0YWxscyBpdCBpbiBhIGZ1bm55IHBsYWNlIHdpdGggCi0kREVTVFJPT1QsIG1hc3NhZ2VzIHRoYXQgaW5zdGFsbGF0aW9uIHRvIHJlbW92ZSAucHljIGZpbGVzIGFuZCBzdWNoLCBjcmVhdGVzIAotYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYCAKK1RoZSBgYGJ1aWxkLWluc3RhbGwucHlgYCBzY3JpcHQgY3JlYXRlcyBQeXRob24gZGlzdHJpYnV0aW9ucywgaW5jbHVkaW5nCitjZXJ0YWluIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBhcyBuZWNlc3NhcnkuICBJdCBidWlsZHMgYSBjb21wbGV0ZQorZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvdXQtb2YtdHJlZSwgaW5zdGFsbHMgaXQgaW4gYSBmdW5ueSBwbGFjZSB3aXRoCiskREVTVFJPT1QsIG1hc3NhZ2VzIHRoYXQgaW5zdGFsbGF0aW9uIHRvIHJlbW92ZSAucHljIGZpbGVzIGFuZCBzdWNoLCBjcmVhdGVzCithbiBJbnN0YWxsZXIgcGFja2FnZSBmcm9tIHRoZSBpbnN0YWxsYXRpb24gcGx1cyBvdGhlciBmaWxlcyBpbiBgYHJlc291cmNlc2BgCiBhbmQgYGBzY3JpcHRzYGAgYW5kIHBsYWNlZCB0aGF0IG9uIGEgYGAuZG1nYGAgZGlzayBpbWFnZS4KIAotVGhpcyBpbnN0YWxsZXJzIGJ1aWx0IGJ5IHRoaXMgc2NyaXB0IGFyZSBsZWdhY3kgYnVuZGxlIGluc3RhbGxlcnMgdGhhdCBoYXZlCi1iZWVuIHN1cHBvcnRlZCBmcm9tIHRoZSBlYXJseSBkYXlzIG9mIE9TIFguICBJbiBwYXJ0aWN1bGFyLCB0aGV5IGFyZSBzdXBwb3J0ZWQKLW9uIE9TIFggMTAuMy45LCB0aGUgZWFybGllc3Qgc3VwcG9ydGVkIHJlbGVhc2UgZm9yIGJ1aWxkcyBmcm9tIHRoaXMgc2NyaXB0LgotCi1CZWdpbm5pbmcgd2l0aCBQeXRob24gMy40LjIsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCi11c2luZyB0aGUgbmV3ZXIgZmxhdCBwYWNrYWdlIGZvcm1hdCwgc3VwcG9ydGVkIG9uIDEwLjUrLCBhbmQgc2lnbmVkIHdpdGggdGhlCi1idWlsZGVyJ3MgQXBwbGUgZGV2ZWxvcGVyIGtleSwgYWxsb3dpbmcgZG93bmxvYWRlZCBwYWNrYWdlcyB0byBzYXRpc2Z5IEFwcGxlJ3MKLWRlZmF1bHQgR2F0ZWtlZXBlciBwb2xpY3kgKGUuZy4gc3RhcnRpbmcgd2l0aCAxMC44LCBBcHBsZSBzdG9yZSBkb3dubG9hZHMgYW5kCi1BcHBsZSBkZXZlbG9wZXIgSUQgc2lnbmVkIGFwcHMgYW5kIGluc3RhbGxlciBwYWNrYWdlcykuICBUaGUgcHJvY2VzcyBmb3IKLXRyYW5zZm9ybWluZyB0aGUgb3V0cHV0IGJ1aWxkIGFydGlmYWN0cyBpbnRvIHNpZ25lZCBmbGF0IHBhY2thZ2VzIGlzIG5vdAoteWV0IGludGVncmF0ZWQgaW50byBgYGJ1aWxkLWluc3RhbGxlci5weWBgLiAgVGhlIHN0ZXBzIHByaW9yIHRvIHRoZSBmbGF0Ci1wYWNrYWdlIGNyZWF0aW9uIGFyZSB0aGUgc2FtZSBhcyBmb3IgMy40LjEgYmVsb3cuCitGb3IgUHl0aG9uIDMuNC4wLCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cworZm9yIGVhY2ggcmVsZWFzZS4KIAogMS4gIDMyLWJpdC1vbmx5LCBpMzg2IGFuZCBQUEMgdW5pdmVyc2FsLCBjYXBhYmxlIG9uIHJ1bm5pbmcgb24gYWxsIG1hY2hpbmVzCiAgICAgc3VwcG9ydGVkIGJ5IE1hYyBPUyBYIDEwLjUgdGhyb3VnaCAoYXQgbGVhc3QpIDEwLjk6OgpAQCAtMzEsNyArMjEsNiBAQAogCiAgICAgLSBidWlsZHMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKIAotICAgICAgICAqIGxpYmNyeXB0byBhbmQgbGlic3NsIGZyb20gT3BlblNTTCAxLjAuMSAobmV3LCBhcyBvZiAzLjQuMykKICAgICAgICAgKiBOQ3Vyc2VzIDUuOSAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1MDM3KQogICAgICAgICAqIFNRTGl0ZSAzLjguMy4xCiAgICAgICAgICogWFogNS4wLjUKQEAgLTczLDcgKzYyLDYgQEAKIAogICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKLSAgICAgICAgKiBsaWJjcnlwdG8gYW5kIGxpYnNzbCBmcm9tIEFwcGxlIE9wZW5TU0wgMC45LjgKICAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCiAKICAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuMTUuMSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKQEAgLTEwMiw2ICs5MCw0NyBAQAogICAgICAgICAgIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgogCiAKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCisgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAorICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMKKworICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiBCemlwMgorICAgICAgICAqIE5DdXJzZXMKKyAgICAgICAgKiBHTlUgUmVhZGxpbmUgKEdQTCkKKyAgICAgICAgKiBTUUxpdGUgMworICAgICAgICAqIFhaCisgICAgICAgICogWmxpYiAxLjIuMworICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjIwKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAorICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKKyAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQorICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAorICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCisgICAgICAgICogc3lzdGVtIFB5dGhvbiAyLjUgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKworICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjYuOCB3aXRoIFhjb2RlIDMuMi42CisgICAgICAgICAgICAtIG5lZWQgdG8gY2hhbmdlIGBgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mve1RjbCxUa30uZnJhbWV3b3JrL1ZlcnNpb24vQ3VycmVudGBgIHRvIGBgOC40YGAKKworCisKIEdlbmVyYWwgUHJlcmVxdWlzaXRlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE0NSw3ICsxNzQsNyBAQAogQnVpbGRpbmcgb3RoZXIgdW5pdmVyc2FsIGluc3RhbGxlcnMKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbiAKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbgogT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCiAgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXApAQCAtMTc5LDcgKzIwOCw3IEBACiAKICAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQogICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAotICAgIAorCiBDZXJ0YWluIHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBhbmQgc29tZSBjYXVzZSB0aGUgaW50ZXJwcmV0ZXIgdG8gZmFpbAogd2hpY2ggd2lsbCBsaWtlbHkgZ2VuZXJhdGUgYGBQeXRob24gcXVpdCB1bmV4cGVjdGVkbHlgYCBhbGVydCBtZXNzYWdlcwogdG8gYmUgZ2VuZXJhdGVkIGF0IHNldmVyYWwgcG9pbnRzIGR1cmluZyBhIHRlc3QgcnVuLiAgVGhlc2UgYXJlIG5vcm1hbApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggODcyODI4OS4uNDdjYmUzZCAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC01NzIsNyArNTcyLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGNvbmZpZ2ZpbGUsICJyIikKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGZhdGFsKCJGcmFtZXdvcmsgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZDogJXMiICUgY29uZmlnZmlsZSkKIAogICAgIGZvciBsIGluIGY6CkBAIC04MTQsNyArODE0LDcgQEAKICAgICBleGNlcHQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogZGVmIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuYW1lKToKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA1MmQ4YjgwLi5kMjdjNmExIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0zNiwxMTkgKzM2LDYgQEAKIFxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKIAogXGIgXHVsIFwKLUluc3RhbGxpbmcgb24gT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSBvciBsYXRlciBzeXN0ZW1zXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAzLjQuMl0KLVxiMCBcCi1cCi1BcyBvZiBQeXRob24gMy40LjIsIGluc3RhbGxlciBwYWNrYWdlcyBmcm9tIHB5dGhvbi5vcmcgYXJlIG5vdyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZSBpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gICBEb3dubG9hZGVkIHBhY2thZ2VzIGNhbiBub3cgYmUgZGlyZWN0bHkgaW5zdGFsbGVkIGJ5IGRvdWJsZS1jbGlja2luZyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBzZWN1cml0eSBzZXR0aW5ncy4gIFB5dGhvbi5vcmcgaW5zdGFsbGVyIHBhY2thZ2VzIGZvciBPUyBYIGFyZSBzaWduZWQgd2l0aCB0aGUgRGV2ZWxvcGVyIElEIG9mIHRoZSBidWlsZGVyLCBhcyBpZGVudGlmaWVkIG9uIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCB0aGUgZG93bmxvYWQgcGFnZX19IGZvciB0aGlzIHJlbGVhc2UuICBUbyBpbnNwZWN0IHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBvZiB0aGUgcGFja2FnZSwgY2xpY2sgb24gdGhlIGxvY2sgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSAKLVxpIEluc3RhbGwgUHl0aG9uCi1caTAgIGluc3RhbGxlciB3aW5kb3cuICBSZWZlciB0byBBcHBsZVwnOTJzIHN1cHBvcnQgcGFnZXMgZm9yIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9odDUyOTAifX17XGZsZHJzbHQgbW9yZSBpbmZvcm1hdGlvbiBvbiBHYXRla2VlcGVyfX0uXAotXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi0KLVxiIFxjZjAgXHVsIFNpbXBsaWZpZWQgd2ViLWJhc2VkIGluc3RhbGxzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4yXQotXGIwIFwKLVwKLVdpdGggdGhlIGNoYW5nZSB0byB0aGUgbmV3ZXIgZmxhdCBmb3JtYXQgaW5zdGFsbGVyIHBhY2thZ2UsIHRoZSBkb3dubG9hZCBmaWxlIG5vdyBoYXMgYSAKLVxmMSAucGtnCi1cZjAgIGV4dGVuc2lvbiBhcyBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGVtYmVkIHRoZSBpbnN0YWxsZXIgd2l0aGluIGEgZGlzayBpbWFnZSAoCi1cZjEgLmRtZwotXGYwICkgY29udGFpbmVyLiAgIElmIHlvdSBkb3dubG9hZCB0aGUgUHl0aG9uIGluc3RhbGxlciB0aHJvdWdoIGEgd2ViIGJyb3dzZXIsIHRoZSBPUyBYIGluc3RhbGxlciBhcHBsaWNhdGlvbiBtYXkgb3BlbiBhdXRvbWF0aWNhbGx5IHRvIGFsbG93IHlvdSB0byBwZXJmb3JtIHRoZSBpbnN0YWxsLiAgSWYgeW91ciBicm93c2VyIHNldHRpbmdzIGRvIG5vdCBhbGxvdyBhdXRvbWF0aWMgb3BlbiwgZG91YmxlIGNsaWNrIG9uIHRoZSBkb3dubG9hZGVkIGluc3RhbGxlciBmaWxlLlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBOZXcgSW5zdGFsbGF0aW9uIE9wdGlvbnMgYW5kIERlZmF1bHRzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4wXQotXGIwIFwKLVwKLVRoZSBQeXRob24gaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbiBvcHRpb24gdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG9yIHVwZ3JhZGUgCi1cZjEgcGlwCi1cZjAgLCBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcy4gIFRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgbm8gSW50ZXJuZXQgYWNjZXNzIGlzIHJlcXVpcmVkLiAgSWYgeW91IGRvIG5vdCB3YW50IHRoZSBpbnN0YWxsZXIgdG8gZG8gdGhpcywgc2VsZWN0IHRoZSAKLVxpIEN1c3RvbWl6ZQotXGkwICBvcHRpb24gYXQgdGhlIAotXGkgSW5zdGFsbGF0aW9uIFR5cGUKLVxpMCAgc3RlcCBhbmQgdW5jaGVjayB0aGUgCi1caSBJbnN0YWxsIG9yIHVncHJhZGUgcGlwCi1caTAgIG9wdGlvbi5cCi1cCi1UbyBtYWtlIGl0IGVhc2llciB0byB1c2Ugc2NyaXB0cyBpbnN0YWxsZWQgYnkgdGhpcmQtcGFydHkgUHl0aG9uIHBhY2thZ2VzLCB3aXRoIAotXGYxIHBpcAotXGYwICBvciBieSBvdGhlciBtZWFucywgdGhlIAotXGkgU2hlbGwgcHJvZmlsZSB1cGRhdGVyCi1caTAgIG9wdGlvbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCBhcyBoYXMgYmVlbiB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLjcueCBpbnN0YWxsZXJzLiBZb3UgY2FuIGFsc28gdHVybiB0aGlzIG9wdGlvbiBvZmYgYnkgc2VsZWN0aW5nIAotXGkgQ3VzdG9taXplCi1caTAgIGFuZCB1bmNoZWNraW5nIHRoZSAKLVxpIFNoZWxsIHByb2ZpbGUgdXBkYXRlcgotXGkwICBvcHRpb24uIFlvdSBjYW4gYWxzbyB1cGRhdGUgeW91ciBzaGVsbCBwcm9maWxlIGxhdGVyIGJ5IGxhdW5jaGluZyB0aGUgCi1caSBVcGRhdGUgU2hlbGwgUHJvZmlsZQotXGkwICBjb21tYW5kIGZvdW5kIGluIHRoZSAKLVxmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAkVkVSU0lPTiAKLVxmMCBmb2xkZXIuICBZb3UgbWF5IG5lZWQgdG8gc3RhcnQgYSBuZXcgdGVybWluYWwgd2luZG93IGZvciB0aGUgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cCi1cCi1Gb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgUmVsZWFzZSBOb3RlcyBsaW5rIGZvciB0aGlzIHJlbGVhc2UgYXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL319LlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKLVxjZjAgXHVsbm9uZSBbQ0hBTkdFRCBmb3IgUHl0aG9uIDMuNC4zXQotXGIwIFwKLVwKLVB5dGhvbiAzLjQuMyBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgaW5jbHVzaW9uIGluIFB5dGhvbiAzLjQgbWFpbnRlbmFuY2UgcmVsZWFzZXMuICB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc2LyJ9fXtcZmxkcnNsdCBQRVAgNDc2fX0gY2hhbmdlcyBzZXZlcmFsIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcywgbGlrZSAKLVxpIGh0dHBsaWIKLVxpMCAsIAotXGkgdXJsbGliCi1caTAgLCBhbmQgCi1caSB4bWxycGNsaWIKLVxpMCAsIHRvIGJ5IGRlZmF1bHQgdmVyaWZ5IGNlcnRpZmljYXRlcyBwcmVzZW50ZWQgYnkgc2VydmVycyBvdmVyIHNlY3VyZSAoVExTKSBjb25uZWN0aW9ucy4gIFRoZSB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcmllcyB0aGF0IFB5dGhvbiBpcyBsaW5rZWQgdG8uICBQcmlvciB0byAzLjQuMywgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBzaGlwcGVkIHdpdGggT1MgWC4gIE9TIFggcHJvdmlkZXMgYSBtdWx0aXBsZSBsZXZlbCBzZWN1cml0eSBmcmFtZXdvcmsgdGhhdCBzdG9yZXMgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCi1caSBLZXljaGFpbiBBY2Nlc3MgCi1caTAgYXBwbGljYXRpb24gYW5kIHRoZSAKLVxpIHNlY3VyaXR5Ci1caTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5LlwKLVwKLUZvciBPUyBYIDEwLjUsIEFwcGxlIHByb3ZpZGVzIAotXGkgT3BlblNTTCAwLjkuNwotXGkwICBsaWJyYXJpZXMuICBUaGlzIHZlcnNpb24gb2YgQXBwbGUncyBPcGVuU1NMIAotXGIgZG9lcyBub3QKLVxiMCAgdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yaywgZXZlbiB3aGVuIHVzZWQgb24gbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4gIEluc3RlYWQgaXQgY29uc3VsdHMgYSB0cmFkaXRpb25hbCBPcGVuU1NMIGNvbmNhdGVuYXRlZCBjZXJ0aWZpY2F0ZSBmaWxlICgKLVxpIGNhZmlsZQotXGkwICkgb3IgY2VydGlmaWNhdGUgZGlyZWN0b3J5ICgKLVxpIGNhcGF0aAotXGkwICksIGxvY2F0ZWQgaW4gCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICBUaGVzZSBkaXJlY3RvcmllcyBhcmUgdHlwaWNhbGx5IGVtcHR5IGFuZCBub3QgbWFuYWdlZCBieSBPUyBYOyB5b3UgbXVzdCBtYW5hZ2UgdGhlbSB5b3Vyc2VsZiBvciBzdXBwbHkgeW91ciBvd24gU1NMIGNvbnRleHRzLiAgT3BlblNTTCAwLjkuNyBpcyBvYnNvbGV0ZSBieSBjdXJyZW50IHNlY3VyaXR5IHN0YW5kYXJkcywgbGFja2luZyBhIG51bWJlciBvZiBpbXBvcnRhbnQgZmVhdHVyZXMgZm91bmQgaW4gbGF0ZXIgdmVyc2lvbnMuICBBbW9uZyB0aGUgcHJvYmxlbXMgdGhpcyBjYXVzZXMgaXMgdGhlIGluYWJpbGl0eSB0byB2ZXJpZnkgaGlnaGVyLXNlY3VyaXR5IGNlcnRpZmljYXRlcyBub3cgdXNlZCBieSBweXRob24ub3JnIHNlcnZpY2VzLCBpbmNsdWRpbmcgCi1caSB0e1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaSJ9fXtcZmxkcnNsdCBoZSBQeXRob24gUGFja2FnZSBJbmRleCwgUHlQSX19Ci1caTAgLiAgVG8gc29sdmUgdGhpcyBwcm9ibGVtLCBhcyBvZiAzLjQuMyB0aGUgCi1caSAxMC41KyAzMi1iaXQtb25seSBweXRob24ub3JnIHZhcmlhbnQKLVxpMCAgaXMgbGlua2VkIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgCi1caSBPcGVuU1NMIDEuMAotXGkwIDsgaXQgY29uc3VsdHMgdGhlIHNhbWUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnksIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLiAgIEFzIGJlZm9yZSwgaXQgaXMgc3RpbGwgbmVjZXNzYXJ5IHRvIG1hbmFnZSBjZXJ0aWZpY2F0ZXMgeW91cnNlbGYgd2hlbiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgYW5kLCB3aXRoIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCB5b3UgbWF5IG5vdyBuZWVkIHRvIHRha2UgYWRkaXRpb25hbCBzdGVwcyB0byBlbnN1cmUgeW91ciBQeXRob24gcHJvZ3JhbXMgaGF2ZSBhY2Nlc3MgdG8gQ0EgY2VydGlmaWNhdGVzIHlvdSB0cnVzdC4gIElmIHlvdSB1c2UgdGhpcyBQeXRob24gdmFyaWFudCB0byBidWlsZCBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucyB3aXRoIHRoaXJkLXBhcnR5IHRvb2xzIGxpa2Uge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weTJhcHAvIn19e1xmbGRyc2x0IAotXGYxIHB5MmFwcH19LCB5b3UgbWF5IG5vdyBuZWVkIHRvIGJ1bmRsZSBDQSBjZXJ0aWZpY2F0ZXMgaW4gdGhlbSBvciBvdGhlcndpc2Ugc3VwcGx5IG5vbi1kZWZhdWx0IFNTTCBjb250ZXh0cy5cCi1cCi1Gb3IgT1MgWCAxMC42KywgQXBwbGUgYWxzbyBwcm92aWRlcyAKLVxpIE9wZW5TU0wKLVxpMCAgCi1caSAwLjkuOCBsaWJyYXJpZXMKLVxpMCAuICBBcHBsZSdzIDAuOS44IHZlcnNpb24gaW5jbHVkZXMgYW4gaW1wb3J0YW50IGFkZGl0aW9uYWwgZmVhdHVyZTogaWYgYSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgdmVyaWZpZWQgdXNpbmcgdGhlIG1hbnVhbGx5IGFkbWluaXN0ZXJlZCBjZXJ0aWZpY2F0ZXMgaW4gCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAsIHRoZSBjZXJ0aWZpY2F0ZXMgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yayBJbiB0aGUgdXNlciBhbmQgc3lzdGVtIGtleWNoYWlucyBhcmUgYWxzbyBjb25zdWx0ZWQgKHVzaW5nIEFwcGxlIHByaXZhdGUgQVBJcykuICBGb3IgdGhpcyByZWFzb24sIGZvciAzLjQuMyB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggMy40LjMgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBcCiBQeXRob24gMyBhbmQgUHl0aG9uIDIgQ28tZXhpc3RlbmNlXAogCiBcYjAgXHVsbm9uZSBcCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgppbmRleCAyNTI3Nzg3Li5kZmI3NWQ4IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKQEAgLTEsNSArMSw1IEBACiB7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDNcY29jb2FzdWJydGYxNjAKLVxjb2NvYXNjcmVlbmZvbnRzMXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQorXGNvY29hc2NyZWVuZm9udHMxe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKQEAgLTE3LDEyICsxNyw2IEBACiBcYjAgLlwKIFwKIAotXGIgTkVXIGZvciBQeXRob24gMy40LjM6IAotXGIwICAzLjQuMyBpbmNsdWRlcyBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBQeXRob24gYXBwbGljYXRpb25zLiAgU2VlIHRoZSAKLVxmMSBSZWFkTWUKLVxmMCAgZmlsZSBhbmQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy93aGF0c25ldy8zLjQuaHRtbCNjaGFuZ2VkLWluLTMtNC0zIn19e1xmbGRyc2x0IHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbn19IGZvciBtb3JlIGluZm9ybWF0aW9uLlwKLVwKLQogXGIgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKZGlmZiAtLWdpdCBhL01hYy9NYWtlZmlsZS5pbiBiL01hYy9NYWtlZmlsZS5pbgppbmRleCAwM2VjNzM4Li4xMjU1YjEzIDEwMDY0NAotLS0gYS9NYWMvTWFrZWZpbGUuaW4KKysrIGIvTWFjL01ha2VmaWxlLmluCkBAIC0xLDUgKzEsNSBAQAotIyBUaGlzIGZpbGUgY2FuIGJlIGludm9rZWQgZnJvbSB0aGUgdmFyaW91cyBmcmFtZXdvcmtpbnN0YWxsLi4uIHRhcmdldHMgaW4gdGhlIAotIyBtYWluIE1ha2VmaWxlLiBUaGUgbmV4dCBjb3VwbGUgb2YgdmFyaWFibGVzIGFyZSBvdmVycmlkZGVuIG9uIHRoZSAKKyMgVGhpcyBmaWxlIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIHZhcmlvdXMgZnJhbWV3b3JraW5zdGFsbC4uLiB0YXJnZXRzIGluIHRoZQorIyBtYWluIE1ha2VmaWxlLiBUaGUgbmV4dCBjb3VwbGUgb2YgdmFyaWFibGVzIGFyZSBvdmVycmlkZGVuIG9uIHRoZQogIyBjb21tYW5kbGluZSBpbiB0aGF0IGNhc2UuCiAKIFZFUlNJT049QFZFUlNJT05ACkBAIC01Myw3ICs1Myw3IEBACiBpbnN0YWxsYXBwczogaW5zdGFsbF9QeXRob24gaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUKIAogIwotIyBJbnN0YWxsIHVuaXggdG9vbHMgaW4gL3Vzci9sb2NhbC9iaW4uIFRoZXNlIGFyZSBqdXN0IGFsaWFzZXMgZm9yIHRoZSAKKyMgSW5zdGFsbCB1bml4IHRvb2xzIGluIC91c3IvbG9jYWwvYmluLiBUaGVzZSBhcmUganVzdCBhbGlhc2VzIGZvciB0aGUKICMgYWN0dWFsIGluc3RhbGxhdGlvbiBpbnNpZGUgdGhlIGZyYW1ld29yay4KICMKIGluc3RhbGx1bml4dG9vbHM6CmRpZmYgLS1naXQgYS9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbiBiL01hYy9QeXRob25MYXVuY2hlci9JbmZvLnBsaXN0LmluCmluZGV4IDQyODQ2ZWEuLmI0YWRlMWQgMTAwNjQ0Ci0tLSBhL01hYy9QeXRob25MYXVuY2hlci9JbmZvLnBsaXN0LmluCisrKyBiL01hYy9QeXRob25MYXVuY2hlci9JbmZvLnBsaXN0LmluCkBAIC0xLDUgKzEsNSBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlIENvbXB1dGVyLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgogCTxrZXk+Q0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgpAQCAtMzgsNyArMzgsNyBAQAogCQk8L2RpY3Q+CiAJPC9hcnJheT4KIAk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgotCTxzdHJpbmc+UHl0aG9uTGF1bmNoZXI8L3N0cmluZz4KKwk8c3RyaW5nPlB5dGhvbiBMYXVuY2hlcjwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+CiAJPHN0cmluZz4lVkVSU0lPTiUsIMKpIDIwMDEtMjAxNSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVJY29uRmlsZTwva2V5PgpkaWZmIC0tZ2l0IGEvTWFjL1B5dGhvbkxhdW5jaGVyL01ha2VmaWxlLmluIGIvTWFjL1B5dGhvbkxhdW5jaGVyL01ha2VmaWxlLmluCmluZGV4IGYwNWVmZGYuLjRjMDVmMjYgMTAwNjQ0Ci0tLSBhL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbgorKysgYi9NYWMvUHl0aG9uTGF1bmNoZXIvTWFrZWZpbGUuaW4KQEAgLTE1LDEyICsxNSwxMCBAQAogUFlUSE9ORlJBTUVXT1JLPUBQWVRIT05GUkFNRVdPUktACiAKICMgRGVwbG95bWVudCB0YXJnZXQgc2VsZWN0ZWQgZHVyaW5nIGNvbmZpZ3VyZSwgdG8gYmUgY2hlY2tlZAotIyBieSBkaXN0dXRpbHMgIAorIyBieSBkaXN0dXRpbHMKIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD1AQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVEAKIEBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUQGV4cG9ydCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKIAotQlVORExFQlVMREVSPSQoc3JjZGlyKS8uLi9Ub29scy9idW5kbGVidWlsZGVyLnB5Ci0KIFBZVEhPTkFQUFNESVI9QEZSQU1FV09SS0lOU1RBTExBUFBTUFJFRklYQC8kKFBZVEhPTkZSQU1FV09SSykgJChWRVJTSU9OKQogT0JKRUNUUz1GaWxlU2V0dGluZ3MubyBNeUFwcERlbGVnYXRlLm8gTXlEb2N1bWVudC5vIFByZWZlcmVuY2VzV2luZG93Q29udHJvbGxlci5vIGRvc2NyaXB0Lm8gbWFpbi5vCiAKQEAgLTMwLDEwICsyOCwxMCBAQAogCS9iaW4vY3AgLXIgIlB5dGhvbiBMYXVuY2hlci5hcHAiICIkKERFU1RESVIpJChQWVRIT05BUFBTRElSKSIKIAl0b3VjaCAiJChERVNURElSKSQoUFlUSE9OQVBQU0RJUikvUHl0aG9uIExhdW5jaGVyLmFwcCIKIAotCiBjbGVhbjoKIAlybSAtZiAqLm8gIlB5dGhvbiBMYXVuY2hlciIKIAlybSAtcmYgIlB5dGhvbiBMYXVuY2hlci5hcHAiCisJcm0gLWYgSW5mby5wbGlzdAogCiBQeXRob25cIExhdW5jaGVyLmFwcDogIEluZm8ucGxpc3QgXAogCQlQeXRob25cIExhdW5jaGVyICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25MYXVuY2hlci5pY25zIFwKQEAgLTQxLDE4ICszOSwxNyBAQAogCQkkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uQ29tcGlsZWQuaWNucyBcCiAJCSQoc3JjZGlyKS9mYWN0b3J5U2V0dGluZ3MucGxpc3QKIAlybSAtZnIgIlB5dGhvbiBMYXVuY2hlci5hcHAiCi0JJChSVU5TSEFSRUQpICQoQlVJTERQWVRIT04pICQoQlVORExFQlVMREVSKSBcCi0JCS0tYnVpbGRkaXI9LiBcCi0JCS0tbmFtZT0iUHl0aG9uIExhdW5jaGVyIiBcCi0JCS0tZXhlY3V0YWJsZT0iUHl0aG9uIExhdW5jaGVyIiBcCi0JCS0taWNvbmZpbGU9JChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkxhdW5jaGVyLmljbnMgXAotCQktLWJ1bmRsZS1pZD1vcmcucHl0aG9uLlB5dGhvbkxhdW5jaGVyIFwKLQkJLS1yZXNvdXJjZT0kKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uU291cmNlLmljbnMgXAotCQktLXJlc291cmNlPSQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Db21waWxlZC5pY25zIFwKLQkJLS1yZXNvdXJjZT0kKHNyY2RpcikvRW5nbGlzaC5scHJvaiBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpL2ZhY3RvcnlTZXR0aW5ncy5wbGlzdCBcCi0JCS0tcGxpc3QgSW5mby5wbGlzdCBcCi0JCWJ1aWxkCisJbWtkaXIgIlB5dGhvbiBMYXVuY2hlci5hcHAiCisJbWtkaXIgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMiCisJbWtkaXIgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvTWFjT1MiCisJbWtkaXIgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICJQeXRob24gTGF1bmNoZXIiICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL01hY09TIgorCWNwIEluZm8ucGxpc3QgICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzIgorCWNwICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25MYXVuY2hlci5pY25zICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvblNvdXJjZS5pY25zICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkNvbXBpbGVkLmljbnMgICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAkKHNyY2RpcikvZmFjdG9yeVNldHRpbmdzLnBsaXN0ICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgLVIgJChzcmNkaXIpL0VuZ2xpc2gubHByb2ogIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgogCiBGaWxlU2V0dGluZ3MubzogJChzcmNkaXIpL0ZpbGVTZXR0aW5ncy5tCiAJJChDQykgJChDRkxBR1MpIC1vICRAIC1jICQoc3JjZGlyKS9GaWxlU2V0dGluZ3MubQpkaWZmIC0tZ2l0IGEvTWFjL1JFQURNRSBiL01hYy9SRUFETUUKaW5kZXggMGEzMTNkMS4uZDk2MjJhNiAxMDA2NDQKLS0tIGEvTWFjL1JFQURNRQorKysgYi9NYWMvUkVBRE1FCkBAIC0xOSw3ICsxOSw3IEBACiAKICAgSWYgdGhpcyBhcmd1bWVudCBpcyBzcGVjaWZpZWQgdGhlIGJ1aWxkIHdpbGwgY3JlYXRlIGEgUHl0aG9uLmZyYW1ld29yayByYXRoZXIKICAgdGhhbiBhIHRyYWRpdGlvbmFsIFVuaXggaW5zdGFsbC4gU2VlIHRoZSBzZWN0aW9uCi0gIF9gQnVpbGRpbmcgYW5kIHVzaW5nIGEgZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvbiBNYWMgT1MgWGAgZm9yIG1vcmUgCisgIF9gQnVpbGRpbmcgYW5kIHVzaW5nIGEgZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvbiBNYWMgT1MgWGAgZm9yIG1vcmUKICAgaW5mb3JtYXRpb24gb24gZnJhbWV3b3Jrcy4KIAogICBJZiB0aGUgb3B0aW9uYWwgZGlyZWN0b3J5IGFyZ3VtZW50IGlzIHNwZWNpZmllZCB0aGUgZnJhbWV3b3JrIGlzIGluc3RhbGxlZApAQCAtNTMsNyArNTMsNyBAQAogCiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAotICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCisgIFNwZWNpZnkgdGhlIGtpbmQgb2YgdW5pdmVyc2FsIGJpbmFyeSB0aGF0IHNob3VsZCBiZSBjcmVhdGVkLiBUaGlzIG9wdGlvbiBpcwogICBvbmx5IHZhbGlkIHdoZW4gYGAtLWVuYWJsZS11bml2ZXJzYWxzZGtgYCBpcyBzcGVjaWZpZWQuICBUaGUgZGVmYXVsdCBpcwogICBgYDMyLWJpdGBgIGlmIGEgYnVpbGRpbmcgd2l0aCBhIFNESyB0aGF0IHN1cHBvcnRzIFBQQywgb3RoZXJ3aXNlIGRlZmF1bHRzCiAgIHRvIGBgaW50ZWxgYC4KQEAgLTE3NCwxNCArMTc0LDE0IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgbWFpbiByZWFzb24gaXMgYmVjYXVzZSB5b3Ugd2FudCB0byBjcmVhdGUgR1VJIHByb2dyYW1zIGluIFB5dGhvbi4gV2l0aCB0aGUKLWV4Y2VwdGlvbiBvZiBYMTEvWERhcndpbi1iYXNlZCBHVUkgdG9vbGtpdHMgYWxsIEdVSSBwcm9ncmFtcyBuZWVkIHRvIGJlIHJ1biAKK2V4Y2VwdGlvbiBvZiBYMTEvWERhcndpbi1iYXNlZCBHVUkgdG9vbGtpdHMgYWxsIEdVSSBwcm9ncmFtcyBuZWVkIHRvIGJlIHJ1bgogZnJvbSBhIE1hYyBPUyBYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCi1vbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAorb25seSB0d28gcGxhY2VzOiAiL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmsiIGFuZAogIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMy40IiwKICIyLjciLCBldGMuICBUaGlzIHNpbXBsaWZpZXMgbWF0dGVycyBmb3IgdXNlcnMgaW5zdGFsbGluZwogUHl0aG9uIGZyb20gYSBiaW5hcnkgZGlzdHJpYnV0aW9uIGlmIHRoZXkgd2FudCB0byBnZXQgcmlkIG9mIGl0IGFnYWluLiBNb3Jlb3ZlciwKQEAgLTIyOCwxMSArMjI4LDExIEBACiAgMS4gLi9jb25maWd1cmUgLS1lbmFibGUtZnJhbWV3b3JrCiAKICAyLiBtYWtlCi0gCisKICAzLiBtYWtlIGluc3RhbGwKIAogVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKLXRoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCit0aGUgYXBwbGljYXRpb25zIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+YGAgYW5kIHRoZSB1bml4IHRvb2xzIGluCiBgYC91c3IvbG9jYWwvYmluYGAuCiAKIEluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlIGBgJEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzYGAgaWYgeW91CkBAIC0zMDAsNyArMzAwLDcgQEAKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCiAKIEJlY2F1c2Ugb2YgdGhlIHdheSB0aGUgc2NyaXB0IGxvY2F0ZXMgdGhlIGZpbGVzIGl0IG5lZWRzIHlvdSBoYXZlIHRvIHJ1biBpdAotZnJvbSB3aXRoaW4gdGhlIEJ1aWxkU2NyaXB0IGRpcmVjdG9yeS4gVGhlIHNjcmlwdCBhY2NlcHRzIGEgbnVtYmVyIG9mIAorZnJvbSB3aXRoaW4gdGhlIEJ1aWxkU2NyaXB0IGRpcmVjdG9yeS4gVGhlIHNjcmlwdCBhY2NlcHRzIGEgbnVtYmVyIG9mCiBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBydW4gaXQgd2l0aCAtLWhlbHAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIENvbmZpZ3VyZSB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvTWFjL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkgYi9NYWMvVG9vbHMvYnVuZGxlYnVpbGRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjU2NzlkMy4uMDAwMDAwMAotLS0gYS9NYWMvVG9vbHMvYnVuZGxlYnVpbGRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDkzNCArMCwwIEBACi0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSIiIlwKLWJ1bmRsZWJ1aWxkZXIucHkgLS0gVG9vbHMgdG8gYXNzZW1ibGUgTWFjT1MgWCAoYXBwbGljYXRpb24pIGJ1bmRsZXMuCi0KLVRoaXMgbW9kdWxlIGNvbnRhaW5zIHR3byBjbGFzc2VzIHRvIGJ1aWxkIHNvIGNhbGxlZCAiYnVuZGxlcyIgZm9yCi1NYWNPUyBYLiBCdW5kbGVCdWlsZGVyIGlzIGEgZ2VuZXJhbCB0b29sLCBBcHBCdWlsZGVyIGlzIGEgc3ViY2xhc3MKLXNwZWNpYWxpemVkIGluIGJ1aWxkaW5nIGFwcGxpY2F0aW9uIGJ1bmRsZXMuCi0KLVtCdW5kbGV8QXBwXUJ1aWxkZXIgb2JqZWN0cyBhcmUgaW5zdGFudGlhdGVkIHdpdGggYSBidW5jaCBvZiBrZXl3b3JkCi1hcmd1bWVudHMsIGFuZCBoYXZlIGEgYnVpbGQoKSBtZXRob2QgdGhhdCB3aWxsIGRvIGFsbCB0aGUgd29yay4gU2VlCi10aGUgY2xhc3MgZG9jIHN0cmluZ3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KLQotVGhlIG1vZHVsZSBjb250YWlucyBhIG1haW4gcHJvZ3JhbSB0aGF0IGNhbiBiZSB1c2VkIGluIHR3byB3YXlzOgotCi0gICUgcHl0aG9uIGJ1bmRsZWJ1aWxkZXIucHkgW29wdGlvbnNdIGJ1aWxkCi0gICUgcHl0aG9uIGJ1aWxkYXBwLnB5IFtvcHRpb25zXSBidWlsZAotCi1XaGVyZSAiYnVpbGRhcHAucHkiIGlzIGEgdXNlci1zdXBwbGllZCBzZXR1cC5weS1saWtlIHNjcmlwdCBmb2xsb3dpbmcKLXRoaXMgbW9kZWw6Ci0KLSAgZnJvbSBidW5kbGVidWlsZGVyIGltcG9ydCBidWlsZGFwcAotICBidWlsZGFwcCg8bG90cy1vZi1rZXl3b3JkLWFyZ3M+KQotCi0iIiIKLQotCi1fX2FsbF9fID0gWyJCdW5kbGVCdWlsZGVyIiwgIkJ1bmRsZUJ1aWxkZXJFcnJvciIsICJBcHBCdWlsZGVyIiwgImJ1aWxkYXBwIl0KLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MsIGVycm5vLCBzaHV0aWwKLWltcG9ydCBpbXAsIG1hcnNoYWwKLWltcG9ydCByZQotZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQotaW1wb3J0IGdldG9wdAotZnJvbSBwbGlzdGxpYiBpbXBvcnQgUGxpc3QKLWZyb20gdHlwZXMgaW1wb3J0IEZ1bmN0aW9uVHlwZSBhcyBmdW5jdGlvbgotCi1jbGFzcyBCdW5kbGVCdWlsZGVyRXJyb3IoRXhjZXB0aW9uKTogcGFzcwotCi0KLWNsYXNzIERlZmF1bHRzOgotCi0gICAgIiIiQ2xhc3MgYXR0cmlidXRlcyB0aGF0IGRvbid0IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZSBhbmQgYXJlCi0gICAgbm90IGZ1bmN0aW9ucyBvciBjbGFzc21ldGhvZHMgYXJlIChkZWVwKWNvcGllZCB0byBzZWxmLl9fZGljdF9fLgotICAgIFRoaXMgYWxsb3dzIGZvciBtdXRhYmxlIGRlZmF1bHQgdmFsdWVzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgZGVmYXVsdHMgPSBzZWxmLl9nZXREZWZhdWx0cygpCi0gICAgICAgIGRlZmF1bHRzLnVwZGF0ZShrd2FyZ3MpCi0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGRlZmF1bHRzKQotCi0gICAgZGVmIF9nZXREZWZhdWx0cyhjbHMpOgotICAgICAgICBkZWZhdWx0cyA9IHt9Ci0gICAgICAgIGZvciBiYXNlIGluIGNscy5fX2Jhc2VzX186Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKGJhc2UsICJfZ2V0RGVmYXVsdHMiKToKLSAgICAgICAgICAgICAgICBkZWZhdWx0cy51cGRhdGUoYmFzZS5fZ2V0RGVmYXVsdHMoKSkKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGxpc3QoY2xzLl9fZGljdF9fLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgbmFtZVswXSAhPSAiXyIgYW5kIG5vdCBpc2luc3RhbmNlKHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24sIGNsYXNzbWV0aG9kKSk6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBkZWVwY29weSh2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRzCi0gICAgX2dldERlZmF1bHRzID0gY2xhc3NtZXRob2QoX2dldERlZmF1bHRzKQotCi0KLWNsYXNzIEJ1bmRsZUJ1aWxkZXIoRGVmYXVsdHMpOgotCi0gICAgIiIiQnVuZGxlQnVpbGRlciBpcyBhIGJhcmVib25lcyBjbGFzcyBmb3IgYXNzZW1ibGluZyBidW5kbGVzLiBJdAotICAgIGtub3dzIG5vdGhpbmcgYWJvdXQgZXhlY3V0YWJsZXMgb3IgaWNvbnMsIGl0IG9ubHkgY29waWVzIGZpbGVzCi0gICAgYW5kIGNyZWF0ZXMgdGhlIFBrZ0luZm8gYW5kIEluZm8ucGxpc3QgZmlsZXMuCi0gICAgIiIiCi0KLSAgICAjIChOb3RlIHRoYXQgRGVmYXVsdHMuX19pbml0X18gKGRlZXApY29waWVzIHRoZXNlIHZhbHVlcyB0bwotICAgICMgaW5zdGFuY2UgdmFyaWFibGVzLiBNdXRhYmxlIGRlZmF1bHRzIGFyZSB0aGVyZWZvcmUgc2FmZS4pCi0KLSAgICAjIE5hbWUgb2YgdGhlIGJ1bmRsZSwgd2l0aCBvciB3aXRob3V0IGV4dGVuc2lvbi4KLSAgICBuYW1lID0gTm9uZQotCi0gICAgIyBUaGUgcHJvcGVydHkgbGlzdCAoInBsaXN0IikKLSAgICBwbGlzdCA9IFBsaXN0KENGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb24gPSAiRW5nbGlzaCIsCi0gICAgICAgICAgICAgICAgICBDRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbiA9ICI2LjAiKQotCi0gICAgIyBUaGUgdHlwZSBvZiB0aGUgYnVuZGxlLgotICAgIHR5cGUgPSAiQk5ETCIKLSAgICAjIFRoZSBjcmVhdG9yIGNvZGUgb2YgdGhlIGJ1bmRsZS4KLSAgICBjcmVhdG9yID0gTm9uZQotCi0gICAgIyB0aGUgQ0ZCdW5kbGVJZGVudGlmaWVyICh0aGlzIGlzIHVzZWQgZm9yIHRoZSBwcmVmZXJlbmNlcyBmaWxlIG5hbWUpCi0gICAgYnVuZGxlX2lkID0gTm9uZQotCi0gICAgIyBMaXN0IG9mIGZpbGVzIHRoYXQgaGF2ZSB0byBiZSBjb3BpZWQgdG8gPGJ1bmRsZT4vQ29udGVudHMvUmVzb3VyY2VzLgotICAgIHJlc291cmNlcyA9IFtdCi0KLSAgICAjIExpc3Qgb2YgKHNyYywgZGVzdCkgdHVwbGVzOyBkZXN0IHNob3VsZCBiZSBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGJ1bmRsZQotICAgICMgKGVnLiAiQ29udGVudHMvUmVzb3VyY2VzL015U3R1ZmYvU29tZUZpbGUuZXh0KS4KLSAgICBmaWxlcyA9IFtdCi0KLSAgICAjIExpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyAoZHlsaWJzLCBGcmFtZXdvcmtzKSB0byBidW5kbGUgd2l0aCB0aGUgYXBwCi0gICAgIyB3aWxsIGJlIHBsYWNlZCBpbiBDb250ZW50cy9GcmFtZXdvcmtzCi0gICAgbGlicyA9IFtdCi0KLSAgICAjIERpcmVjdG9yeSB3aGVyZSB0aGUgYnVuZGxlIHdpbGwgYmUgYXNzZW1ibGVkLgotICAgIGJ1aWxkZGlyID0gImJ1aWxkIgotCi0gICAgIyBNYWtlIHN5bWxpbmtzIGluc3RlYWQgY29weWluZyBmaWxlcy4gVGhpcyBpcyBoYW5keSBkdXJpbmcgZGVidWdnaW5nLCBidXQKLSAgICAjIG1ha2VzIHRoZSBidW5kbGUgbm9uLWRpc3RyaWJ1dGFibGUuCi0gICAgc3ltbGluayA9IDAKLQotICAgICMgVmVyYm9zaXR5IGxldmVsLgotICAgIHZlcmJvc2l0eSA9IDEKLQotICAgICMgRGVzdGluYXRpb24gcm9vdCBkaXJlY3RvcnkKLSAgICBkZXN0cm9vdCA9ICIiCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgICMgWFhYIHJldGhpbmsgc2VsZi5uYW1lIG11bmdpbmcsIHRoaXMgaXMgYnJpdHRsZS4KLSAgICAgICAgc2VsZi5uYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYubmFtZSkKLSAgICAgICAgaWYgbm90IGV4dDoKLSAgICAgICAgICAgIGV4dCA9ICIuYnVuZGxlIgotICAgICAgICBidW5kbGVleHRlbnNpb24gPSBleHQKLSAgICAgICAgIyBtaXNjIChkZXJpdmVkKSBhdHRyaWJ1dGVzCi0gICAgICAgIHNlbGYuYnVuZGxlcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVpbGRkaXIsIHNlbGYubmFtZSArIGJ1bmRsZWV4dGVuc2lvbikKLQotICAgICAgICBwbGlzdCA9IHNlbGYucGxpc3QKLSAgICAgICAgcGxpc3QuQ0ZCdW5kbGVOYW1lID0gc2VsZi5uYW1lCi0gICAgICAgIHBsaXN0LkNGQnVuZGxlUGFja2FnZVR5cGUgPSBzZWxmLnR5cGUKLSAgICAgICAgaWYgc2VsZi5jcmVhdG9yIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHBsaXN0LCAiQ0ZCdW5kbGVTaWduYXR1cmUiKToKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0b3IgPSBwbGlzdC5DRkJ1bmRsZVNpZ25hdHVyZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0b3IgPSAiPz8/PyIKLSAgICAgICAgcGxpc3QuQ0ZCdW5kbGVTaWduYXR1cmUgPSBzZWxmLmNyZWF0b3IKLSAgICAgICAgaWYgc2VsZi5idW5kbGVfaWQ6Ci0gICAgICAgICAgICBwbGlzdC5DRkJ1bmRsZUlkZW50aWZpZXIgPSBzZWxmLmJ1bmRsZV9pZAotICAgICAgICBlbGlmIG5vdCBoYXNhdHRyKHBsaXN0LCAiQ0ZCdW5kbGVJZGVudGlmaWVyIik6Ci0gICAgICAgICAgICBwbGlzdC5DRkJ1bmRsZUlkZW50aWZpZXIgPSBzZWxmLm5hbWUKLQotICAgIGRlZiBidWlsZChzZWxmKToKLSAgICAgICAgIiIiQnVpbGQgdGhlIGJ1bmRsZS4iIiIKLSAgICAgICAgYnVpbGRkaXIgPSBzZWxmLmJ1aWxkZGlyCi0gICAgICAgIGlmIGJ1aWxkZGlyIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoYnVpbGRkaXIpOgotICAgICAgICAgICAgb3MubWtkaXIoYnVpbGRkaXIpCi0gICAgICAgIHNlbGYubWVzc2FnZSgiQnVpbGRpbmcgJXMiICUgcmVwcihzZWxmLmJ1bmRsZXBhdGgpLCAxKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1bmRsZXBhdGgpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1bmRsZXBhdGgpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuYnVuZGxlcGF0aCArICd+Jyk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuYnVuZGxlcGF0aCArICd+JykKLSAgICAgICAgYnAgPSBzZWxmLmJ1bmRsZXBhdGgKLQotICAgICAgICAjIENyZWF0ZSB0aGUgYXBwIGJ1bmRsZSBpbiBhIHRlbXBvcmFyeSBsb2NhdGlvbiBhbmQgdGhlbgotICAgICAgICAjIHJlbmFtZSB0aGUgY29tcGxldGVkIGJ1bmRsZS4gVGhpcyB3YXkgdGhlIEZpbmRlciB3aWxsCi0gICAgICAgICMgbmV2ZXIgc2VlIGFuIGluY29tcGxldGUgYnVuZGxlICh3aGVyZSBpdCBtaWdodCBwaWNrIHVwCi0gICAgICAgICMgYW5kIGNhY2hlIHRoZSB3cm9uZyBtZXRhIGRhdGEpCi0gICAgICAgIHNlbGYuYnVuZGxlcGF0aCA9IGJwICsgJ34nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuYnVuZGxlcGF0aCkKLSAgICAgICAgICAgIHNlbGYucHJlUHJvY2VzcygpCi0gICAgICAgICAgICBzZWxmLl9jb3B5RmlsZXMoKQotICAgICAgICAgICAgc2VsZi5fYWRkTWV0YUZpbGVzKCkKLSAgICAgICAgICAgIHNlbGYucG9zdFByb2Nlc3MoKQotICAgICAgICAgICAgb3MucmVuYW1lKHNlbGYuYnVuZGxlcGF0aCwgYnApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmJ1bmRsZXBhdGggPSBicAotICAgICAgICBzZWxmLm1lc3NhZ2UoIkRvbmUuIiwgMSkKLQotICAgIGRlZiBwcmVQcm9jZXNzKHNlbGYpOgotICAgICAgICAiIiJIb29rIGZvciBzdWJjbGFzc2VzLiIiIgotICAgICAgICBwYXNzCi0gICAgZGVmIHBvc3RQcm9jZXNzKHNlbGYpOgotICAgICAgICAiIiJIb29rIGZvciBzdWJjbGFzc2VzLiIiIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX2FkZE1ldGFGaWxlcyhzZWxmKToKLSAgICAgICAgY29udGVudHMgPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsICJDb250ZW50cyIpCi0gICAgICAgIG1ha2VkaXJzKGNvbnRlbnRzKQotICAgICAgICAjCi0gICAgICAgICMgV3JpdGUgQ29udGVudHMvUGtnSW5mbwotICAgICAgICBhc3NlcnQgbGVuKHNlbGYudHlwZSkgPT0gbGVuKHNlbGYuY3JlYXRvcikgPT0gNCwgXAotICAgICAgICAgICAgICAgICJ0eXBlIGFuZCBjcmVhdG9yIG11c3QgYmUgNC1ieXRlIHN0cmluZ3MuIgotICAgICAgICBwa2dpbmZvID0gcGF0aGpvaW4oY29udGVudHMsICJQa2dJbmZvIikKLSAgICAgICAgZiA9IG9wZW4ocGtnaW5mbywgIndiIikKLSAgICAgICAgZi53cml0ZSgoc2VsZi50eXBlICsgc2VsZi5jcmVhdG9yKS5lbmNvZGUoJ2xhdGluMScpKQotICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgIwotICAgICAgICAjIFdyaXRlIENvbnRlbnRzL0luZm8ucGxpc3QKLSAgICAgICAgaW5mb3BsaXN0ID0gcGF0aGpvaW4oY29udGVudHMsICJJbmZvLnBsaXN0IikKLSAgICAgICAgc2VsZi5wbGlzdC53cml0ZShpbmZvcGxpc3QpCi0KLSAgICBkZWYgX2NvcHlGaWxlcyhzZWxmKToKLSAgICAgICAgZmlsZXMgPSBzZWxmLmZpbGVzWzpdCi0gICAgICAgIGZvciBwYXRoIGluIHNlbGYucmVzb3VyY2VzOgotICAgICAgICAgICAgZmlsZXMuYXBwZW5kKChwYXRoLCBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKSkpCi0gICAgICAgIGZvciBwYXRoIGluIHNlbGYubGliczoKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZCgocGF0aCwgcGF0aGpvaW4oIkNvbnRlbnRzIiwgIkZyYW1ld29ya3MiLAotICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCkpKSkKLSAgICAgICAgaWYgc2VsZi5zeW1saW5rOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJNYWtpbmcgc3ltYm9saWMgbGlua3MiLCAxKQotICAgICAgICAgICAgbXNnID0gIk1ha2luZyBzeW1saW5rIGZyb20iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkNvcHlpbmcgZmlsZXMiLCAxKQotICAgICAgICAgICAgbXNnID0gIkNvcHlpbmciCi0gICAgICAgIGZpbGVzLnNvcnQoKQotICAgICAgICBmb3Igc3JjLCBkc3QgaW4gZmlsZXM6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIlcyAlcy8gdG8gJXMvIiAlIChtc2csIHNyYywgZHN0KSwgMikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIlcyAlcyB0byAlcyIgJSAobXNnLCBzcmMsIGRzdCksIDIpCi0gICAgICAgICAgICBkc3QgPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIGRzdCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3ltbGluazoKLSAgICAgICAgICAgICAgICBzeW1saW5rKHNyYywgZHN0LCBta2RpcnM9MSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29weShzcmMsIGRzdCwgbWtkaXJzPTEpCi0KLSAgICBkZWYgbWVzc2FnZShzZWxmLCBtc2csIGxldmVsPTApOgotICAgICAgICBpZiBsZXZlbCA8PSBzZWxmLnZlcmJvc2l0eToKLSAgICAgICAgICAgIGluZGVudCA9ICIiCi0gICAgICAgICAgICBpZiBsZXZlbCA+IDE6Ci0gICAgICAgICAgICAgICAgaW5kZW50ID0gKGxldmVsIC0gMSkgKiAiICAiCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGluZGVudCArIG1zZyArICJcbiIpCi0KLSAgICBkZWYgcmVwb3J0KHNlbGYpOgotICAgICAgICAjIFhYWCBzb21ldGhpbmcgZGVjZW50Ci0gICAgICAgIHBhc3MKLQotCi1pZiBfX2RlYnVnX186Ci0gICAgUFlDX0VYVCA9ICIucHljIgotZWxzZToKLSAgICBQWUNfRVhUID0gIi5weW8iCi0KLU1BR0lDID0gaW1wLmdldF9tYWdpYygpCi1VU0VfWklQSU1QT1JUID0gInppcGltcG9ydCIgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi0KLSMgRm9yIHN0YW5kYWxvbmUgYXBwcywgd2UgaGF2ZSBvdXIgb3duIG1pbmltYWwgc2l0ZS5weS4gV2UgZG9uJ3QgbmVlZAotIyBhbGwgdGhlIGNydWZ0IG9mIHRoZSByZWFsIHNpdGUucHkuCi1TSVRFX1BZID0gIiIiXAotaW1wb3J0IHN5cwotaWYgbm90ICUoc2VtaV9zdGFuZGFsb25lKXM6Ci0gICAgZGVsIHN5cy5wYXRoWzE6XSAgIyBzeXMucGF0aFswXSBpcyBDb250ZW50cy9SZXNvdXJjZXMvCi0iIiIKLQotaWYgVVNFX1pJUElNUE9SVDoKLSAgICBaSVBfQVJDSElWRSA9ICJNb2R1bGVzLnppcCIKLSAgICBTSVRFX1BZICs9ICJzeXMucGF0aC5hcHBlbmQoc3lzLnBhdGhbMF0gKyAnLyVzJylcbiIgJSBaSVBfQVJDSElWRQotICAgIGRlZiBnZXRQeWNEYXRhKGZ1bGxuYW1lLCBjb2RlLCBpc3BrZyk6Ci0gICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgZnVsbG5hbWUgKz0gIi5fX2luaXRfXyIKLSAgICAgICAgcGF0aCA9IGZ1bGxuYW1lLnJlcGxhY2UoIi4iLCBvcy5zZXApICsgUFlDX0VYVAotICAgICAgICByZXR1cm4gcGF0aCwgTUFHSUMgKyAnXDBcMFwwXDAnICsgbWFyc2hhbC5kdW1wcyhjb2RlKQotCi0jCi0jIEV4dGVuc2lvbiBtb2R1bGVzIGNhbid0IGJlIGluIHRoZSBtb2R1bGVzIHppcCBhcmNoaXZlLCBzbyBhIHBsYWNlaG9sZGVyCi0jIGlzIGFkZGVkIGluc3RlYWQsIHRoYXQgbG9hZHMgdGhlIGV4dGVuc2lvbiBmcm9tIGEgc3BlY2lmaWVkIGxvY2F0aW9uLgotIwotRVhUX0xPQURFUiA9ICIiIlwKLWRlZiBfX2xvYWQoKToKLSAgICBpbXBvcnQgaW1wLCBzeXMsIG9zCi0gICAgZm9yIHAgaW4gc3lzLnBhdGg6Ci0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocCwgIiUoZmlsZW5hbWUpcyIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBhc3NlcnQgMCwgImZpbGUgbm90IGZvdW5kOiAlKGZpbGVuYW1lKXMiCi0gICAgbW9kID0gaW1wLmxvYWRfZHluYW1pYygiJShuYW1lKXMiLCBwYXRoKQotCi1fX2xvYWQoKQotZGVsIF9fbG9hZAotIiIiCi0KLU1BWU1JU1NfTU9EVUxFUyA9IFsnbWFjJywgJ250JywgJ250cGF0aCcsICdkb3MnLCAnZG9zcGF0aCcsCi0gICAgJ3dpbjMyYXBpJywgJ2NlJywgJ193aW5yZWcnLCAnbnR1cmwycGF0aCcsICdzaXRlY3VzdG9taXplJywKLSAgICAnb3JnLnB5dGhvbi5jb3JlJywgJ3Jpc2NvcycsICdyaXNjb3NlbnZpcm9uJywgJ3Jpc2Nvc3BhdGgnCi1dCi0KLVNUUklQX0VYRUMgPSAiL3Vzci9iaW4vc3RyaXAiCi0KLSMKLSMgV2UncmUgdXNpbmcgYSBzdG9jayBpbnRlcnByZXRlciB0byBydW4gdGhlIGFwcCwgeWV0IHdlIG5lZWQKLSMgYSB3YXkgdG8gcGFzcyB0aGUgUHl0aG9uIG1haW4gcHJvZ3JhbSB0byB0aGUgaW50ZXJwcmV0ZXIuIFRoZQotIyBib290c3RyYXBwaW5nIHNjcmlwdCBmaXJlcyB1cCB0aGUgaW50ZXJwcmV0ZXIgd2l0aCB0aGUgcmlnaHQKLSMgYXJndW1lbnRzLiBvcy5leGVjdmUoKSBpcyB1c2VkIGFzIE9TWCBkb2Vzbid0IGxpa2UgdXMgdG8KLSMgc3RhcnQgYSByZWFsIG5ldyBwcm9jZXNzLiBBbHNvLCB0aGUgZXhlY3V0YWJsZSBuYW1lIG11c3QgbWF0Y2gKLSMgdGhlIENGQnVuZGxlRXhlY3V0YWJsZSB2YWx1ZSBpbiB0aGUgSW5mby5wbGlzdCwgc28gd2UgbGllCi0jIGRlbGliZXJhdGVseSB3aXRoIGFyZ3ZbMF0uIFRoZSBhY3R1YWwgUHl0aG9uIGV4ZWN1dGFibGUgaXMKLSMgcGFzc2VkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIHdlIGNhbiAicmVwYWlyIgotIyBzeXMuZXhlY3V0YWJsZSBsYXRlci4KLSMKLUJPT1RTVFJBUF9TQ1JJUFQgPSAiIiJcCi0jISUoaGFzaGJhbmcpcwotCi1pbXBvcnQgc3lzLCBvcwotZXhlY2RpciA9IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkKLWV4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oZXhlY2RpciwgIiUoZXhlY3V0YWJsZSlzIikKLXJlc2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZXhlY2RpciksICJSZXNvdXJjZXMiKQotbGliZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjZGlyKSwgIkZyYW1ld29ya3MiKQotbWFpbnByb2dyYW0gPSBvcy5wYXRoLmpvaW4ocmVzZGlyLCAiJShtYWlucHJvZ3JhbSlzIikKLQotc3lzLmFyZ3YuaW5zZXJ0KDEsIG1haW5wcm9ncmFtKQotaWYgJShzdGFuZGFsb25lKXMgb3IgJShzZW1pX3N0YW5kYWxvbmUpczoKLSAgICBvcy5lbnZpcm9uWyJQWVRIT05QQVRIIl0gPSByZXNkaXIKLSAgICBpZiAlKHN0YW5kYWxvbmUpczoKLSAgICAgICAgb3MuZW52aXJvblsiUFlUSE9OSE9NRSJdID0gcmVzZGlyCi1lbHNlOgotICAgIHB5cGF0aCA9IG9zLmdldGVudigiUFlUSE9OUEFUSCIsICIiKQotICAgIGlmIHB5cGF0aDoKLSAgICAgICAgcHlwYXRoID0gIjoiICsgcHlwYXRoCi0gICAgb3MuZW52aXJvblsiUFlUSE9OUEFUSCJdID0gcmVzZGlyICsgcHlwYXRoCi1vcy5lbnZpcm9uWyJQWVRIT05FWEVDVVRBQkxFIl0gPSBleGVjdXRhYmxlCi1vcy5lbnZpcm9uWyJEWUxEX0xJQlJBUllfUEFUSCJdID0gbGliZGlyCi1vcy5lbnZpcm9uWyJEWUxEX0ZSQU1FV09SS19QQVRIIl0gPSBsaWJkaXIKLW9zLmV4ZWN2ZShleGVjdXRhYmxlLCBzeXMuYXJndiwgb3MuZW52aXJvbikKLSIiIgotCi0KLSMKLSMgT3B0aW9uYWwgd3JhcHBlciB0aGF0IGNvbnZlcnRzICJkcm9wcGVkIGZpbGVzIiBpbnRvIHN5cy5hcmd2IHZhbHVlcy4KLSMKLUFSR1ZfRU1VTEFUT1IgPSAiIiJcCi1pbXBvcnQgYXJndmVtdWxhdG9yLCBvcwotCi1hcmd2ZW11bGF0b3IuQXJndkNvbGxlY3RvcigpLm1haW5sb29wKCkKLWV4ZWNmaWxlKG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgIiUocmVhbG1haW5wcm9ncmFtKXMiKSkKLSIiIgotCi0jCi0jIFdoZW4gYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcCB3aXRoIFB5dGhvbi5mcmFtZXdvcmssIHdlIG5lZWQgdG8gY29weQotIyBhIHN1YnNldCBmcm9tIFB5dGhvbi5mcmFtZXdvcmsgdG8gdGhlIGJ1bmRsZS4gVGhlIGZvbGxvd2luZyBsaXN0Ci0jIHNwZWNpZmllcyBleGFjdGx5IHdoYXQgaXRlbXMgd2UnbGwgY29weS4KLSMKLVBZVEhPTkZSQU1FV09SS0dPT0RJRVMgPSBbCi0gICAgIlB5dGhvbiIsICAjIHRoZSBQeXRob24gY29yZSBsaWJyYXJ5Ci0gICAgIlJlc291cmNlcy9FbmdsaXNoLmxwcm9qIiwKLSAgICAiUmVzb3VyY2VzL0luZm8ucGxpc3QiLAotICAgICJSZXNvdXJjZXMvdmVyc2lvbi5wbGlzdCIsCi1dCi0KLWRlZiBpc0ZyYW1ld29yaygpOgotICAgIHJldHVybiBzeXMuZXhlY19wcmVmaXguZmluZCgiUHl0aG9uLmZyYW1ld29yayIpID4gMAotCi0KLUxJQiA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pCi1TSVRFX1BBQ0tBR0VTID0gb3MucGF0aC5qb2luKExJQiwgInNpdGUtcGFja2FnZXMiKQotCi0KLWNsYXNzIEFwcEJ1aWxkZXIoQnVuZGxlQnVpbGRlcik6Ci0KLSAgICAjIE92ZXJyaWRlIHR5cGUgb2YgdGhlIGJ1bmRsZS4KLSAgICB0eXBlID0gIkFQUEwiCi0KLSAgICAjIHBsYXRmb3JtLCBuYW1lIG9mIHRoZSBzdWJmb2xkZXIgb2YgQ29udGVudHMgdGhhdCBjb250YWlucyB0aGUgZXhlY3V0YWJsZS4KLSAgICBwbGF0Zm9ybSA9ICJNYWNPUyIKLQotICAgICMgQSBQeXRob24gbWFpbiBwcm9ncmFtLiBJZiB0aGlzIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgbWFpbgotICAgICMgZXhlY3V0YWJsZSBpbiB0aGUgYnVuZGxlIHdpbGwgYmUgYSBzbWFsbCB3cmFwcGVyIHRoYXQgaW52b2tlcwotICAgICMgdGhlIG1haW4gcHJvZ3JhbS4gKFhYWCBEaXNjdXNzIHdoeS4pCi0gICAgbWFpbnByb2dyYW0gPSBOb25lCi0KLSAgICAjIFRoZSBtYWluIGV4ZWN1dGFibGUuIElmIGEgUHl0aG9uIG1haW4gcHJvZ3JhbSBpcyBzcGVjaWZpZWQKLSAgICAjIHRoZSBleGVjdXRhYmxlIHdpbGwgYmUgY29waWVkIHRvIFJlc291cmNlcyBhbmQgYmUgaW52b2tlZAotICAgICMgYnkgdGhlIHdyYXBwZXIgcHJvZ3JhbSBtZW50aW9uZWQgYWJvdmUuIE90aGVyd2lzZSBpdCB3aWxsCi0gICAgIyBzaW1wbHkgYmUgdXNlZCBhcyB0aGUgbWFpbiBleGVjdXRhYmxlLgotICAgIGV4ZWN1dGFibGUgPSBOb25lCi0KLSAgICAjIFRoZSBuYW1lIG9mIHRoZSBtYWluIG5pYiwgZm9yIENvY29hIGFwcHMuICpNdXN0KiBiZSBzcGVjaWZpZWQKLSAgICAjIHdoZW4gYnVpbGRpbmcgYSBDb2NvYSBhcHAuCi0gICAgbmlibmFtZSA9IE5vbmUKLQotICAgICMgVGhlIG5hbWUgb2YgdGhlIGljb24gZmlsZSB0byBiZSBjb3BpZWQgdG8gUmVzb3VyY2VzIGFuZCB1c2VkIGZvcgotICAgICMgdGhlIEZpbmRlciBpY29uLgotICAgIGljb25maWxlID0gTm9uZQotCi0gICAgIyBTeW1saW5rIHRoZSBleGVjdXRhYmxlIGluc3RlYWQgb2YgY29weWluZyBpdC4KLSAgICBzeW1saW5rX2V4ZWMgPSAwCi0KLSAgICAjIElmIFRydWUsIGJ1aWxkIHN0YW5kYWxvbmUgYXBwLgotICAgIHN0YW5kYWxvbmUgPSAwCi0KLSAgICAjIElmIFRydWUsIGJ1aWxkIHNlbWktc3RhbmRhbG9uZSBhcHAgKG9ubHkgaW5jbHVkZXMgdGhpcmQtcGFydHkgbW9kdWxlcykuCi0gICAgc2VtaV9zdGFuZGFsb25lID0gMAotCi0gICAgIyBJZiBzZXQsIHVzZSB0aGlzIGZvciAjISBsaW5lcyBpbiBzdGVhZCBvZiBzeXMuZXhlY3V0YWJsZQotICAgIHB5dGhvbiA9IE5vbmUKLQotICAgICMgSWYgVHJ1ZSwgYWRkIGEgcmVhbCBtYWluIHByb2dyYW0gdGhhdCBlbXVsYXRlcyBzeXMuYXJndiBiZWZvcmUgY2FsbGluZwotICAgICMgbWFpbnByb2dyYW0KLSAgICBhcmd2X2VtdWxhdGlvbiA9IDAKLQotICAgICMgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBvbmx5IHVzZWQgd2hlbiBidWlsZGluZyBhIHN0YW5kYWxvbmUgYXBwLgotCi0gICAgIyBFeGNsdWRlIHRoZXNlIG1vZHVsZXMuCi0gICAgZXhjbHVkZU1vZHVsZXMgPSBbXQotCi0gICAgIyBJbmNsdWRlIHRoZXNlIG1vZHVsZXMuCi0gICAgaW5jbHVkZU1vZHVsZXMgPSBbXQotCi0gICAgIyBJbmNsdWRlIHRoZXNlIHBhY2thZ2VzLgotICAgIGluY2x1ZGVQYWNrYWdlcyA9IFtdCi0KLSAgICAjIFN0cmlwIGJpbmFyaWVzIGZyb20gZGVidWcgaW5mby4KLSAgICBzdHJpcCA9IDAKLQotICAgICMgRm91bmQgUHl0aG9uIG1vZHVsZXM6IFsobmFtZSwgY29kZW9iamVjdCwgaXNwa2cpLCAuLi5dCi0gICAgcHltb2R1bGVzID0gW10KLQotICAgICMgTW9kdWxlcyB0aGF0IG1vZHVsZWZpbmRlciBjb3VsZG4ndCBmaW5kOgotICAgIG1pc3NpbmdNb2R1bGVzID0gW10KLSAgICBtYXliZU1pc3NpbmdNb2R1bGVzID0gW10KLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgaWYgKChzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmUpCi0gICAgICAgICAgICBhbmQgc2VsZi5tYWlucHJvZ3JhbSBpcyBOb25lKToKLSAgICAgICAgICAgIHJhaXNlIEJ1bmRsZUJ1aWxkZXJFcnJvcigibXVzdCBzcGVjaWZ5ICdtYWlucHJvZ3JhbScgd2hlbiAiCi0gICAgICAgICAgICAgICAgICAgICJidWlsZGluZyBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24uIikKLSAgICAgICAgaWYgc2VsZi5tYWlucHJvZ3JhbSBpcyBOb25lIGFuZCBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEJ1bmRsZUJ1aWxkZXJFcnJvcigibXVzdCBzcGVjaWZ5IGVpdGhlciBvciBib3RoIG9mICIKLSAgICAgICAgICAgICAgICAgICAgIidleGVjdXRhYmxlJyBhbmQgJ21haW5wcm9ncmFtJyIpCi0KLSAgICAgICAgc2VsZi5leGVjZGlyID0gcGF0aGpvaW4oIkNvbnRlbnRzIiwgc2VsZi5wbGF0Zm9ybSkKLQotICAgICAgICBpZiBzZWxmLm5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgc2VsZi5tYWlucHJvZ3JhbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzZWxmLm1haW5wcm9ncmFtKSlbMF0KLSAgICAgICAgZWxpZiBleGVjdXRhYmxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5uYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZXhlY3V0YWJsZSkpWzBdCi0gICAgICAgIGlmIHNlbGYubmFtZVstNDpdICE9ICIuYXBwIjoKLSAgICAgICAgICAgIHNlbGYubmFtZSArPSAiLmFwcCIKLQotICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnN0YW5kYWxvbmUgYW5kIG5vdCBpc0ZyYW1ld29yaygpOgotICAgICAgICAgICAgICAgIHNlbGYuc3ltbGlua19leGVjID0gMQotICAgICAgICAgICAgaWYgc2VsZi5weXRob246Ci0gICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gc2VsZi5weXRob24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKLQotICAgICAgICBpZiBzZWxmLm5pYm5hbWU6Ci0gICAgICAgICAgICBzZWxmLnBsaXN0Lk5TTWFpbk5pYkZpbGUgPSBzZWxmLm5pYm5hbWUKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYucGxpc3QsICJOU1ByaW5jaXBhbENsYXNzIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5wbGlzdC5OU1ByaW5jaXBhbENsYXNzID0gIk5TQXBwbGljYXRpb24iCi0KLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIGFuZCBpc0ZyYW1ld29yaygpOgotICAgICAgICAgICAgc2VsZi5hZGRQeXRob25GcmFtZXdvcmsoKQotCi0gICAgICAgIEJ1bmRsZUJ1aWxkZXIuc2V0dXAoc2VsZikKLQotICAgICAgICBzZWxmLnBsaXN0LkNGQnVuZGxlRXhlY3V0YWJsZSA9IHNlbGYubmFtZQotCi0gICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgIHNlbGYuZmluZERlcGVuZGVuY2llcygpCi0KLSAgICBkZWYgcHJlUHJvY2VzcyhzZWxmKToKLSAgICAgICAgcmVzZGlyID0gIkNvbnRlbnRzL1Jlc291cmNlcyIKLSAgICAgICAgaWYgc2VsZi5leGVjdXRhYmxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi5tYWlucHJvZ3JhbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGV4ZWNuYW1lID0gc2VsZi5uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4ZWNuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmV4ZWN1dGFibGUpCi0gICAgICAgICAgICBleGVjcGF0aCA9IHBhdGhqb2luKHNlbGYuZXhlY2RpciwgZXhlY25hbWUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zeW1saW5rX2V4ZWM6Ci0gICAgICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHNlbGYuZGVzdHJvb3QgKyBzZWxmLmV4ZWN1dGFibGUsIGV4ZWNwYXRoKSkKLSAgICAgICAgICAgIHNlbGYuZXhlY3BhdGggPSBleGVjcGF0aAotCi0gICAgICAgIGlmIHNlbGYubWFpbnByb2dyYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtYWlucHJvZ3JhbSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5tYWlucHJvZ3JhbSkKLSAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChzZWxmLm1haW5wcm9ncmFtLCBwYXRoam9pbihyZXNkaXIsIG1haW5wcm9ncmFtKSkpCi0gICAgICAgICAgICBpZiBzZWxmLmFyZ3ZfZW11bGF0aW9uOgotICAgICAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBtYWluIHByb2dyYW0sIGFuZCBjcmVhdGUgdGhlIGhlbHBlciBtYWluIHByb2dyYW0gKHdoaWNoCi0gICAgICAgICAgICAgICAgIyBkb2VzIGFyZ3YgY29sbGVjdGlvbiBhbmQgdGhlbiBjYWxscyB0aGUgcmVhbCBtYWluKS4KLSAgICAgICAgICAgICAgICAjIEFsc28gdXBkYXRlIHRoZSBpbmNsdWRlZCBtb2R1bGVzIChpZiB3ZSdyZSBjcmVhdGluZyBhIHN0YW5kYWxvbmUKLSAgICAgICAgICAgICAgICAjIHByb2dyYW0pIGFuZCB0aGUgcGxpc3QKLSAgICAgICAgICAgICAgICByZWFsbWFpbnByb2dyYW0gPSBtYWlucHJvZ3JhbQotICAgICAgICAgICAgICAgIG1haW5wcm9ncmFtID0gJ19fYXJndmVtdWxhdG9yXycgKyBtYWlucHJvZ3JhbQotICAgICAgICAgICAgICAgIHJlc2RpcnBhdGggPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIHJlc2RpcikKLSAgICAgICAgICAgICAgICBtYWlucHJvZ3JhbXBhdGggPSBwYXRoam9pbihyZXNkaXJwYXRoLCBtYWlucHJvZ3JhbSkKLSAgICAgICAgICAgICAgICBtYWtlZGlycyhyZXNkaXJwYXRoKQotICAgICAgICAgICAgICAgIG9wZW4obWFpbnByb2dyYW1wYXRoLCAidyIpLndyaXRlKEFSR1ZfRU1VTEFUT1IgJSBsb2NhbHMoKSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZU1vZHVsZXMuYXBwZW5kKCJhcmd2ZW11bGF0b3IiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVNb2R1bGVzLmFwcGVuZCgib3MiKQotICAgICAgICAgICAgICAgIGlmICJDRkJ1bmRsZURvY3VtZW50VHlwZXMiIG5vdCBpbiBzZWxmLnBsaXN0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnBsaXN0WyJDRkJ1bmRsZURvY3VtZW50VHlwZXMiXSA9IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgIkNGQnVuZGxlVHlwZU9TVHlwZXMiIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqKioqIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpc2siXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkNGQnVuZGxlVHlwZVJvbGUiOiAiVmlld2VyIn1dCi0gICAgICAgICAgICAjIFdyaXRlIGJvb3RzdHJhcCBzY3JpcHQKLSAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZXhlY3V0YWJsZSkKLSAgICAgICAgICAgIGV4ZWNkaXIgPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIHNlbGYuZXhlY2RpcikKLSAgICAgICAgICAgIGJvb3RzdHJhcHBhdGggPSBwYXRoam9pbihleGVjZGlyLCBzZWxmLm5hbWUpCi0gICAgICAgICAgICBtYWtlZGlycyhleGVjZGlyKQotICAgICAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgICAgICMgWFhYIHdlJ3JlIHNjcmV3ZWQgd2hlbiB0aGUgZW5kIHVzZXIgaGFzIGRlbGV0ZWQKLSAgICAgICAgICAgICAgICAjIC91c3IvYmluL3B5dGhvbgotICAgICAgICAgICAgICAgIGhhc2hiYW5nID0gIi91c3IvYmluL3B5dGhvbiIKLSAgICAgICAgICAgIGVsaWYgc2VsZi5weXRob246Ci0gICAgICAgICAgICAgICAgaGFzaGJhbmcgPSBzZWxmLnB5dGhvbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoYXNoYmFuZyA9IG9zLnBhdGgucmVhbHBhdGgoc3lzLmV4ZWN1dGFibGUpCi0gICAgICAgICAgICBzdGFuZGFsb25lID0gc2VsZi5zdGFuZGFsb25lCi0gICAgICAgICAgICBzZW1pX3N0YW5kYWxvbmUgPSBzZWxmLnNlbWlfc3RhbmRhbG9uZQotICAgICAgICAgICAgb3Blbihib290c3RyYXBwYXRoLCAidyIpLndyaXRlKEJPT1RTVFJBUF9TQ1JJUFQgJSBsb2NhbHMoKSkKLSAgICAgICAgICAgIG9zLmNobW9kKGJvb3RzdHJhcHBhdGgsIDBvNzc1KQotCi0gICAgICAgIGlmIHNlbGYuaWNvbmZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpY29uYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5pY29uZmlsZSkKLSAgICAgICAgICAgIHNlbGYucGxpc3QuQ0ZCdW5kbGVJY29uRmlsZSA9IGljb25iYXNlCi0gICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc2VsZi5pY29uZmlsZSwgcGF0aGpvaW4ocmVzZGlyLCBpY29uYmFzZSkpKQotCi0gICAgZGVmIHBvc3RQcm9jZXNzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICBzZWxmLmFkZFB5dGhvbk1vZHVsZXMoKQotICAgICAgICBpZiBzZWxmLnN0cmlwIGFuZCBub3Qgc2VsZi5zeW1saW5rOgotICAgICAgICAgICAgc2VsZi5zdHJpcEJpbmFyaWVzKCkKLQotICAgICAgICBpZiBzZWxmLnN5bWxpbmtfZXhlYyBhbmQgc2VsZi5leGVjdXRhYmxlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJTeW1saW5raW5nIGV4ZWN1dGFibGUgJXMgdG8gJXMiICUgKHNlbGYuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leGVjcGF0aCksIDIpCi0gICAgICAgICAgICBkc3QgPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIHNlbGYuZXhlY3BhdGgpCi0gICAgICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKLSAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5hYnNwYXRoKHNlbGYuZXhlY3V0YWJsZSksIGRzdCkKLQotICAgICAgICBpZiBzZWxmLm1pc3NpbmdNb2R1bGVzIG9yIHNlbGYubWF5YmVNaXNzaW5nTW9kdWxlczoKLSAgICAgICAgICAgIHNlbGYucmVwb3J0TWlzc2luZygpCi0KLSAgICBkZWYgYWRkUHl0aG9uRnJhbWV3b3JrKHNlbGYpOgotICAgICAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSBhcHAgd2l0aCBQeXRob24uZnJhbWV3b3JrLAotICAgICAgICAjIGluY2x1ZGUgYSBtaW5pbWFsIHN1YnNldCBvZiBQeXRob24uZnJhbWV3b3JrLCAqdW5sZXNzKgotICAgICAgICAjIFB5dGhvbi5mcmFtZXdvcmsgd2FzIHNwZWNpZmllZCBtYW51YWxseSBpbiBzZWxmLmxpYnMuCi0gICAgICAgIGZvciBsaWIgaW4gc2VsZi5saWJzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShsaWIpID09ICJQeXRob24uZnJhbWV3b3JrIjoKLSAgICAgICAgICAgICAgICAjIGEgUHl0aG9uLmZyYW1ld29yayB3YXMgc3BlY2lmaWVkIGFzIGEgbGlicmFyeQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZyYW1ld29ya3BhdGggPSBzeXMuZXhlY19wcmVmaXhbOnN5cy5leGVjX3ByZWZpeC5maW5kKAotICAgICAgICAgICAgIlB5dGhvbi5mcmFtZXdvcmsiKSArIGxlbigiUHl0aG9uLmZyYW1ld29yayIpXQotCi0gICAgICAgIHZlcnNpb24gPSBzeXMudmVyc2lvbls6M10KLSAgICAgICAgZnJhbWV3b3JrcGF0aCA9IHBhdGhqb2luKGZyYW1ld29ya3BhdGgsICJWZXJzaW9ucyIsIHZlcnNpb24pCi0gICAgICAgIGRlc3RiYXNlID0gcGF0aGpvaW4oIkNvbnRlbnRzIiwgIkZyYW1ld29ya3MiLCAiUHl0aG9uLmZyYW1ld29yayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZlcnNpb25zIiwgdmVyc2lvbikKLSAgICAgICAgZm9yIGl0ZW0gaW4gUFlUSE9ORlJBTUVXT1JLR09PRElFUzoKLSAgICAgICAgICAgIHNyYyA9IHBhdGhqb2luKGZyYW1ld29ya3BhdGgsIGl0ZW0pCi0gICAgICAgICAgICBkc3QgPSBwYXRoam9pbihkZXN0YmFzZSwgaXRlbSkKLSAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChzcmMsIGRzdCkpCi0KLSAgICBkZWYgX2dldFNpdGVDb2RlKHNlbGYpOgotICAgICAgICByZXR1cm4gY29tcGlsZShTSVRFX1BZICUgeyJzZW1pX3N0YW5kYWxvbmUiOiBzZWxmLnNlbWlfc3RhbmRhbG9uZX0sCi0gICAgICAgICAgICAgICAgICAgICAiPC1idW5kbGVidWlsZGVyLnB5LT4iLCAiZXhlYyIpCi0KLSAgICBkZWYgYWRkUHl0aG9uTW9kdWxlcyhzZWxmKToKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIG1vZHVsZXMiLCAxKQotCi0gICAgICAgIGlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgICAgICAgICAjIENyZWF0ZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgYWxsIG1vZHVsZXMgYXMgcHljLgotICAgICAgICAgICAgaW1wb3J0IHppcGZpbGUKLSAgICAgICAgICAgIHJlbHBhdGggPSBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgWklQX0FSQ0hJVkUpCi0gICAgICAgICAgICBhYnNwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCByZWxwYXRoKQotICAgICAgICAgICAgemYgPSB6aXBmaWxlLlppcEZpbGUoYWJzcGF0aCwgInciLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKLSAgICAgICAgICAgIGZvciBuYW1lLCBjb2RlLCBpc3BrZyBpbiBzZWxmLnB5bW9kdWxlczoKLSAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkFkZGluZyBQeXRob24gbW9kdWxlICVzIiAlIG5hbWUsIDIpCi0gICAgICAgICAgICAgICAgcGF0aCwgcHljID0gZ2V0UHljRGF0YShuYW1lLCBjb2RlLCBpc3BrZykKLSAgICAgICAgICAgICAgICB6Zi53cml0ZXN0cihwYXRoLCBweWMpCi0gICAgICAgICAgICB6Zi5jbG9zZSgpCi0gICAgICAgICAgICAjIGFkZCBzaXRlLnB5YwotICAgICAgICAgICAgc2l0ZXBhdGggPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsICJDb250ZW50cyIsICJSZXNvdXJjZXMiLAotICAgICAgICAgICAgICAgICAgICAic2l0ZSIgKyBQWUNfRVhUKQotICAgICAgICAgICAgd3JpdGVQeWMoc2VsZi5fZ2V0U2l0ZUNvZGUoKSwgc2l0ZXBhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENyZWF0ZSBpbmRpdmlkdWFsIC5weWMgZmlsZXMuCi0gICAgICAgICAgICBmb3IgbmFtZSwgY29kZSwgaXNwa2cgaW4gc2VsZi5weW1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgaWYgaXNwa2c6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gIi5fX2luaXRfXyIKLSAgICAgICAgICAgICAgICBwYXRoID0gbmFtZS5zcGxpdCgiLiIpCi0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhqb2luKCJDb250ZW50cyIsICJSZXNvdXJjZXMiLCAqcGF0aCkgKyBQWUNfRVhUCi0KLSAgICAgICAgICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIHBhY2thZ2UgJXMiICUgcGF0aCwgMikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkFkZGluZyBQeXRob24gbW9kdWxlICVzIiAlIHBhdGgsIDIpCi0KLSAgICAgICAgICAgICAgICBhYnNwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgIG1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShhYnNwYXRoKSkKLSAgICAgICAgICAgICAgICB3cml0ZVB5Yyhjb2RlLCBhYnNwYXRoKQotCi0gICAgZGVmIHN0cmlwQmluYXJpZXMoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhTVFJJUF9FWEVDKToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiRXJyb3I6IGNhbid0IHN0cmlwIGJpbmFyaWVzOiBubyBzdHJpcCBwcm9ncmFtIGF0ICIKLSAgICAgICAgICAgICAgICAiJXMiICUgU1RSSVBfRVhFQywgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGltcG9ydCBzdGF0Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIlN0cmlwcGluZyBiaW5hcmllcyIsIDEpCi0gICAgICAgICAgICBkZWYgd2Fsayh0b3ApOgotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIodG9wKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhqb2luKHRvcCwgbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgd2FsayhwYXRoKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kID0gb3Muc3RhdChwYXRoKVtzdGF0LlNUX01PREVdCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKG1vZCAmIDBvMTAwKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVscGF0aCA9IHBhdGhbbGVuKHNlbGYuYnVuZGxlcGF0aCk6XQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJTdHJpcHBpbmcgJXMiICUgcmVscGF0aCwgMikKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZiwgb3V0ZiA9IG9zLnBvcGVuNCgiJXMgLVMgXCIlc1wiIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNUUklQX0VYRUMsIHBhdGgpKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0Zi5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3V0cHV0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXN1YWxseSBub3QgYSByZWFsIHByb2JsZW0sIGxpa2Ugd2hlbiB3ZSdyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJ5aW5nIHRvIHN0cmlwIGEgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJQcm9ibGVtIHN0cmlwcGluZyAlczoiICUgcmVscGF0aCwgMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2Uob3V0cHV0LCAzKQotICAgICAgICAgICAgd2FsayhzZWxmLmJ1bmRsZXBhdGgpCi0KLSAgICBkZWYgZmluZERlcGVuZGVuY2llcyhzZWxmKToKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJGaW5kaW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMiLCAxKQotICAgICAgICBpbXBvcnQgbW9kdWxlZmluZGVyCi0gICAgICAgIG1mID0gbW9kdWxlZmluZGVyLk1vZHVsZUZpbmRlcihleGNsdWRlcz1zZWxmLmV4Y2x1ZGVNb2R1bGVzKQotICAgICAgICBpZiBVU0VfWklQSU1QT1JUOgotICAgICAgICAgICAgIyB6aXBpbXBvcnQgaW1wb3J0cyB6bGliLCBtdXN0IGFkZCBpdCBtYW51YWxseQotICAgICAgICAgICAgbWYuaW1wb3J0X2hvb2soInpsaWIiKQotICAgICAgICAjIG1hbnVhbGx5IGFkZCBvdXIgb3duIHNpdGUucHkKLSAgICAgICAgc2l0ZSA9IG1mLmFkZF9tb2R1bGUoInNpdGUiKQotICAgICAgICBzaXRlLl9fY29kZV9fID0gc2VsZi5fZ2V0U2l0ZUNvZGUoKQotICAgICAgICBtZi5zY2FuX2NvZGUoc2l0ZS5fX2NvZGVfXywgc2l0ZSkKLQotICAgICAgICAjIHdhcm5pbmdzLnB5IGdldHMgaW1wb3J0ZWQgaW1wbGljaXRseSBmcm9tIEMKLSAgICAgICAgbWYuaW1wb3J0X2hvb2soIndhcm5pbmdzIikKLQotICAgICAgICBpbmNsdWRlTW9kdWxlcyA9IHNlbGYuaW5jbHVkZU1vZHVsZXNbOl0KLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5pbmNsdWRlUGFja2FnZXM6Ci0gICAgICAgICAgICBpbmNsdWRlTW9kdWxlcy5leHRlbmQobGlzdChmaW5kUGFja2FnZUNvbnRlbnRzKG5hbWUpLmtleXMoKSkpCi0gICAgICAgIGZvciBuYW1lIGluIGluY2x1ZGVNb2R1bGVzOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1mLmltcG9ydF9ob29rKG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5taXNzaW5nTW9kdWxlcy5hcHBlbmQobmFtZSkKLQotICAgICAgICBtZi5ydW5fc2NyaXB0KHNlbGYubWFpbnByb2dyYW0pCi0gICAgICAgIG1vZHVsZXMgPSBsaXN0KG1mLm1vZHVsZXMuaXRlbXMoKSkKLSAgICAgICAgbW9kdWxlcy5zb3J0KCkKLSAgICAgICAgZm9yIG5hbWUsIG1vZCBpbiBtb2R1bGVzOgotICAgICAgICAgICAgcGF0aCA9IG1vZC5fX2ZpbGVfXwotICAgICAgICAgICAgaWYgcGF0aCBhbmQgc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICAgICAgIyBza2lwIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKExJQikgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoU0lURV9QQUNLQUdFUyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBtb2QuX19jb2RlX18gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIEMgZXh0ZW5zaW9uCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0gICAgICAgICAgICAgICAgcGF0aGl0ZW1zID0gbmFtZS5zcGxpdCgiLiIpWzotMV0gKyBbZmlsZW5hbWVdCi0gICAgICAgICAgICAgICAgZHN0cGF0aCA9IHBhdGhqb2luKCpwYXRoaXRlbXMpCi0gICAgICAgICAgICAgICAgaWYgVVNFX1pJUElNUE9SVDoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSAiemxpYiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIG5lYXRseSBwYWNrIGFsbCBleHRlbnNpb24gbW9kdWxlcyBpbiBhIHN1YmRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXhjZXB0IHpsaWIsIHNpbmNlIGl0J3MgbmVjZXNzYXJ5IGZvciBib290c3RyYXBwaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgZHN0cGF0aCA9IHBhdGhqb2luKCJFeHRlbnNpb25Nb2R1bGVzIiwgZHN0cGF0aCkKLSAgICAgICAgICAgICAgICAgICAgIyBQeXRob24gbW9kdWxlcyBhcmUgc3RvcmVkIGluIGEgWmlwIGFyY2hpdmUsIGJ1dCBwdXQKLSAgICAgICAgICAgICAgICAgICAgIyBleHRlbnNpb25zIGluIENvbnRlbnRzL1Jlc291cmNlcy8uIEFkZCBhIHRpbnkgImxvYWRlciIKLSAgICAgICAgICAgICAgICAgICAgIyBwcm9ncmFtIGluIHRoZSBaaXAgYXJjaGl2ZS4gRHVlIHRvIFRob21hcyBIZWxsZXIuCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IEVYVF9MT0FERVIgJSB7Im5hbWUiOiBuYW1lLCAiZmlsZW5hbWUiOiBkc3RwYXRofQotICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZShzb3VyY2UsICI8ZHlubG9hZGVyIGZvciAlcz4iICUgbmFtZSwgImV4ZWMiKQotICAgICAgICAgICAgICAgICAgICBtb2QuX19jb2RlX18gPSBjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHBhdGgsIHBhdGhqb2luKCJDb250ZW50cyIsICJSZXNvdXJjZXMiLCBkc3RwYXRoKSkpCi0gICAgICAgICAgICBpZiBtb2QuX19jb2RlX18gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaXNwa2cgPSBtb2QuX19wYXRoX18gaXMgbm90IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBub3QgVVNFX1pJUElNUE9SVCBvciBuYW1lICE9ICJzaXRlIjoKLSAgICAgICAgICAgICAgICAgICAgIyBPdXIgc2l0ZS5weSBpcyBkb2luZyB0aGUgYm9vdHN0cmFwcGluZywgc28gd2UgbXVzdAotICAgICAgICAgICAgICAgICAgICAjIGluY2x1ZGUgYSByZWFsIC5weWMgZmlsZSBpZiBVU0VfWklQSU1QT1JUIGlzIFRydWUuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucHltb2R1bGVzLmFwcGVuZCgobmFtZSwgbW9kLl9fY29kZV9fLCBpc3BrZykpCi0KLSAgICAgICAgaWYgaGFzYXR0cihtZiwgImFueV9taXNzaW5nX21heWJlIik6Ci0gICAgICAgICAgICBtaXNzaW5nLCBtYXliZSA9IG1mLmFueV9taXNzaW5nX21heWJlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1pc3NpbmcgPSBtZi5hbnlfbWlzc2luZygpCi0gICAgICAgICAgICBtYXliZSA9IFtdCi0gICAgICAgIHNlbGYubWlzc2luZ01vZHVsZXMuZXh0ZW5kKG1pc3NpbmcpCi0gICAgICAgIHNlbGYubWF5YmVNaXNzaW5nTW9kdWxlcy5leHRlbmQobWF5YmUpCi0KLSAgICBkZWYgcmVwb3J0TWlzc2luZyhzZWxmKToKLSAgICAgICAgbWlzc2luZyA9IFtuYW1lIGZvciBuYW1lIGluIHNlbGYubWlzc2luZ01vZHVsZXMKLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBNQVlNSVNTX01PRFVMRVNdCi0gICAgICAgIGlmIHNlbGYubWF5YmVNaXNzaW5nTW9kdWxlczoKLSAgICAgICAgICAgIG1heWJlID0gc2VsZi5tYXliZU1pc3NpbmdNb2R1bGVzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXliZSA9IFtuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcgaWYgIi4iIGluIG5hbWVdCi0gICAgICAgICAgICBtaXNzaW5nID0gW25hbWUgZm9yIG5hbWUgaW4gbWlzc2luZyBpZiAiLiIgbm90IGluIG5hbWVdCi0gICAgICAgIG1pc3Npbmcuc29ydCgpCi0gICAgICAgIG1heWJlLnNvcnQoKQotICAgICAgICBpZiBtYXliZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiV2FybmluZzogY291bGRuJ3QgZmluZCB0aGUgZm9sbG93aW5nIHN1Ym1vZHVsZXM6IiwgMSkKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICAgIChOb3RlIHRoYXQgdGhlc2UgY291bGQgYmUgZmFsc2UgYWxhcm1zIC0tICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaXQncyBub3QgYWx3YXlzIiwgMSkKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICAgIHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gXCJmcm9tIHBhY2thZ2UgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3VibW9kdWxlXCIgIiwgMSkKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICAgIGFuZCBcImZyb20gcGFja2FnZSBpbXBvcnQgbmFtZVwiKSIsIDEpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBtYXliZToKLSAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgPyAiICsgbmFtZSwgMSkKLSAgICAgICAgaWYgbWlzc2luZzoKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiV2FybmluZzogY291bGRuJ3QgZmluZCB0aGUgZm9sbG93aW5nIG1vZHVsZXM6IiwgMSkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIG1pc3Npbmc6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgID8gIiArIG5hbWUsIDEpCi0KLSAgICBkZWYgcmVwb3J0KHNlbGYpOgotICAgICAgICAjIFhYWCBzb21ldGhpbmcgZGVjZW50Ci0gICAgICAgIGltcG9ydCBwcHJpbnQKLSAgICAgICAgcHByaW50LnBwcmludChzZWxmLl9fZGljdF9fKQotICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICBzZWxmLnJlcG9ydE1pc3NpbmcoKQotCi0jCi0jIFV0aWxpdGllcy4KLSMKLQotU1VGRklYRVMgPSBbX3N1ZiBmb3IgX3N1ZiwgX21vZGUsIF90cCBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCi1pZGVudGlmaWVyUkUgPSByZS5jb21waWxlKHIiW19hLXpBLXpdW19hLXpBLVowLTldKiQiKQotCi1kZWYgZmluZFBhY2thZ2VDb250ZW50cyhuYW1lLCBzZWFyY2hwYXRoPU5vbmUpOgotICAgIGhlYWQgPSBuYW1lLnNwbGl0KCIuIilbLTFdCi0gICAgaWYgaWRlbnRpZmllclJFLm1hdGNoKGhlYWQpIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiB7fQotICAgIHRyeToKLSAgICAgICAgZnAsIHBhdGgsIChleHQsIG1vZGUsIHRwKSA9IGltcC5maW5kX21vZHVsZShoZWFkLCBzZWFyY2hwYXRoKQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIHt9Ci0gICAgbW9kdWxlcyA9IHtuYW1lOiBOb25lfQotICAgIGlmIHRwID09IGltcC5QS0dfRElSRUNUT1JZIGFuZCBwYXRoOgotICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIocGF0aCkKLSAgICAgICAgZm9yIHN1YiBpbiBmaWxlczoKLSAgICAgICAgICAgIHN1YiwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzdWIpCi0gICAgICAgICAgICBmdWxsbmFtZSA9IG5hbWUgKyAiLiIgKyBzdWIKLSAgICAgICAgICAgIGlmIHN1YiAhPSAiX19pbml0X18iIGFuZCBmdWxsbmFtZSBub3QgaW4gbW9kdWxlczoKLSAgICAgICAgICAgICAgICBtb2R1bGVzLnVwZGF0ZShmaW5kUGFja2FnZUNvbnRlbnRzKGZ1bGxuYW1lLCBbcGF0aF0pKQotICAgIHJldHVybiBtb2R1bGVzCi0KLWRlZiB3cml0ZVB5Yyhjb2RlLCBwYXRoKToKLSAgICBmID0gb3BlbihwYXRoLCAid2IiKQotICAgIGYud3JpdGUoTUFHSUMpCi0gICAgZi53cml0ZSgiXDAiICogNCkgICMgZG9uJ3QgYm90aGVyIGFib3V0IGEgdGltZSBzdGFtcAotICAgIG1hcnNoYWwuZHVtcChjb2RlLCBmKQotICAgIGYuY2xvc2UoKQotCi1kZWYgY29weShzcmMsIGRzdCwgbWtkaXJzPTApOgotICAgICIiIkNvcHkgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LiIiIgotICAgIGlmIG1rZGlyczoKLSAgICAgICAgbWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGRzdCkpCi0gICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgotICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPTEpCi0gICAgZWxzZToKLSAgICAgICAgc2h1dGlsLmNvcHkyKHNyYywgZHN0KQotCi1kZWYgY29weXRvZGlyKHNyYywgZHN0ZGlyKToKLSAgICAiIiJDb3B5IGEgZmlsZSBvciBhIGRpcmVjdG9yeSB0byBhbiBleGlzdGluZyBkaXJlY3RvcnkuIiIiCi0gICAgZHN0ID0gcGF0aGpvaW4oZHN0ZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCi0gICAgY29weShzcmMsIGRzdCkKLQotZGVmIG1ha2VkaXJzKGRpcik6Ci0gICAgIiIiTWFrZSBhbGwgZGlyZWN0b3JpZXMgbGVhZGluZyB1cCB0byAnZGlyJyBpbmNsdWRpbmcgdGhlIGxlYWYKLSAgICBkaXJlY3RvcnkuIERvbid0IG1vYW4gaWYgYW55IHBhdGggZWxlbWVudCBhbHJlYWR5IGV4aXN0cy4iIiIKLSAgICB0cnk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKGRpcikKLSAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6Ci0gICAgICAgIGlmIHdoeS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICByYWlzZQotCi1kZWYgc3ltbGluayhzcmMsIGRzdCwgbWtkaXJzPTApOgotICAgICIiIkNvcHkgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LiIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmMpOgotICAgICAgICByYWlzZSBJT0Vycm9yKCJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnJXMnIiAlIHNyYykKLSAgICBpZiBta2RpcnM6Ci0gICAgICAgIG1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShkc3QpKQotICAgIG9zLnN5bWxpbmsob3MucGF0aC5hYnNwYXRoKHNyYyksIGRzdCkKLQotZGVmIHBhdGhqb2luKCphcmdzKToKLSAgICAiIiJTYWZlIHdyYXBwZXIgZm9yIG9zLnBhdGguam9pbjogYXNzZXJ0cyB0aGF0IGFsbCBidXQgdGhlIGZpcnN0Ci0gICAgYXJndW1lbnQgYXJlIHJlbGF0aXZlIHBhdGhzLiIiIgotICAgIGZvciBzZWcgaW4gYXJnc1sxOl06Ci0gICAgICAgIGFzc2VydCBzZWdbMF0gIT0gIi8iCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqYXJncykKLQotCi1jbWRsaW5lX2RvYyA9ICIiIlwKLVVzYWdlOgotICBweXRob24gYnVuZGxlYnVpbGRlci5weSBbb3B0aW9uc10gY29tbWFuZAotICBweXRob24gbXlidWlsZHNjcmlwdC5weSBbb3B0aW9uc10gY29tbWFuZAotCi1Db21tYW5kczoKLSAgYnVpbGQgICAgICBidWlsZCB0aGUgYXBwbGljYXRpb24KLSAgcmVwb3J0ICAgICBwcmludCBhIHJlcG9ydAotCi1PcHRpb25zOgotICAtYiwgLS1idWlsZGRpcj1ESVIgICAgIHRoZSBidWlsZCBkaXJlY3Rvcnk7IGRlZmF1bHRzIHRvICJidWlsZCIKLSAgLW4sIC0tbmFtZT1OQU1FICAgICAgICBhcHBsaWNhdGlvbiBuYW1lCi0gIC1yLCAtLXJlc291cmNlPUZJTEUgICAgZXh0cmEgZmlsZSBvciBmb2xkZXIgdG8gYmUgY29waWVkIHRvIFJlc291cmNlcwotICAtZiwgLS1maWxlPVNSQzpEU1QgICAgIGV4dHJhIGZpbGUgb3IgZm9sZGVyIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBidW5kbGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgRFNUIG11c3QgYmUgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBidW5kbGUgcm9vdAotICAtZSwgLS1leGVjdXRhYmxlPUZJTEUgIHRoZSBleGVjdXRhYmxlIHRvIGJlIHVzZWQKLSAgLW0sIC0tbWFpbnByb2dyYW09RklMRSB0aGUgUHl0aG9uIG1haW4gcHJvZ3JhbQotICAtYSwgLS1hcmd2ICAgICAgICAgICAgIGFkZCBhIHdyYXBwZXIgbWFpbiBwcm9ncmFtIHRvIGNyZWF0ZSBzeXMuYXJndgotICAtcCwgLS1wbGlzdD1GSUxFICAgICAgIC5wbGlzdCBmaWxlIChkZWZhdWx0OiBnZW5lcmF0ZSBvbmUpCi0gICAgICAtLW5pYj1OQU1FICAgICAgICAgbWFpbiBuaWIgbmFtZQotICAtYywgLS1jcmVhdG9yPUNDQ0MgICAgIDQtY2hhciBjcmVhdG9yIGNvZGUgKGRlZmF1bHQ6ICc/Pz8/JykKLSAgICAgIC0taWNvbmZpbGU9RklMRSAgICBmaWxlbmFtZSBvZiB0aGUgaWNvbiAoYW4gLmljbnMgZmlsZSkgdG8gYmUgdXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBGaW5kZXIgaWNvbgotICAgICAgLS1idW5kbGUtaWQ9SUQgICAgIHRoZSBDRkJ1bmRsZUlkZW50aWZpZXIsIGluIHJldmVyc2UtZG5zIGZvcm1hdAotICAgICAgICAgICAgICAgICAgICAgICAgIChlZy4gb3JnLnB5dGhvbi5CdWlsZEFwcGxldDsgdGhpcyBpcyB1c2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcmVmZXJlbmNlcyBmaWxlIG5hbWUpCi0gIC1sLCAtLWxpbmsgICAgICAgICAgICAgc3ltbGluayBmaWxlcy9mb2xkZXIgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZW0KLSAgICAgIC0tbGluay1leGVjICAgICAgICBzeW1saW5rIHRoZSBleGVjdXRhYmxlIGluc3RlYWQgb2YgY29weWluZyBpdAotICAgICAgLS1zdGFuZGFsb25lICAgICAgIGJ1aWxkIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiwgd2hpY2ggaXMgZnVsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlcGVuZGVudCBvZiBhIFB5dGhvbiBpbnN0YWxsYXRpb24KLSAgICAgIC0tc2VtaS1zdGFuZGFsb25lICBidWlsZCBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24sIHdoaWNoIGRlcGVuZHMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YWxsZWQgUHl0aG9uLCB5ZXQgaW5jbHVkZXMgYWxsIHRoaXJkLXBhcnR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy4KLSAgICAgIC0tcHl0aG9uPUZJTEUgICAgICBQeXRob24gdG8gdXNlIGluICMhIGxpbmUgaW4gc3RlYWQgb2YgY3VycmVudCBQeXRob24KLSAgICAgIC0tbGliPUZJTEUgICAgICAgICBzaGFyZWQgbGlicmFyeSBvciBmcmFtZXdvcmsgdG8gYmUgY29waWVkIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVuZGxlCi0gIC14LCAtLWV4Y2x1ZGU9TU9EVUxFICAgZXhjbHVkZSBtb2R1bGUgKHdpdGggLS0oc2VtaS0pc3RhbmRhbG9uZSkKLSAgLWksIC0taW5jbHVkZT1NT0RVTEUgICBpbmNsdWRlIG1vZHVsZSAod2l0aCAtLShzZW1pLSlzdGFuZGFsb25lKQotICAgICAgLS1wYWNrYWdlPVBBQ0tBR0UgIGluY2x1ZGUgYSB3aG9sZSBwYWNrYWdlICh3aXRoIC0tKHNlbWktKXN0YW5kYWxvbmUpCi0gICAgICAtLXN0cmlwICAgICAgICAgICAgc3RyaXAgYmluYXJpZXMgKHJlbW92ZSBkZWJ1ZyBpbmZvKQotICAtdiwgLS12ZXJib3NlICAgICAgICAgIGluY3JlYXNlIHZlcmJvc2l0eSBsZXZlbAotICAtcSwgLS1xdWlldCAgICAgICAgICAgIGRlY3JlYXNlIHZlcmJvc2l0eSBsZXZlbAotICAtaCwgLS1oZWxwICAgICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZQotIiIiCi0KLWRlZiB1c2FnZShtc2c9Tm9uZSk6Ci0gICAgaWYgbXNnOgotICAgICAgICBwcmludChtc2cpCi0gICAgcHJpbnQoY21kbGluZV9kb2MpCi0gICAgc3lzLmV4aXQoMSkKLQotZGVmIG1haW4oYnVpbGRlcj1Ob25lKToKLSAgICBpZiBidWlsZGVyIGlzIE5vbmU6Ci0gICAgICAgIGJ1aWxkZXIgPSBBcHBCdWlsZGVyKHZlcmJvc2l0eT0xKQotCi0gICAgc2hvcnRvcHRzID0gImI6bjpyOmY6ZTptOmM6cDpseDppOmh2cWEiCi0gICAgbG9uZ29wdHMgPSAoImJ1aWxkZGlyPSIsICJuYW1lPSIsICJyZXNvdXJjZT0iLCAiZmlsZT0iLCAiZXhlY3V0YWJsZT0iLAotICAgICAgICAibWFpbnByb2dyYW09IiwgImNyZWF0b3I9IiwgIm5pYj0iLCAicGxpc3Q9IiwgImxpbmsiLAotICAgICAgICAibGluay1leGVjIiwgImhlbHAiLCAidmVyYm9zZSIsICJxdWlldCIsICJhcmd2IiwgInN0YW5kYWxvbmUiLAotICAgICAgICAiZXhjbHVkZT0iLCAiaW5jbHVkZT0iLCAicGFja2FnZT0iLCAic3RyaXAiLCAiaWNvbmZpbGU9IiwKLSAgICAgICAgImxpYj0iLCAicHl0aG9uPSIsICJzZW1pLXN0YW5kYWxvbmUiLCAiYnVuZGxlLWlkPSIsICJkZXN0cm9vdD0iKQotCi0gICAgdHJ5OgotICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sIHNob3J0b3B0cywgbG9uZ29wdHMpCi0gICAgZXhjZXB0IGdldG9wdC5lcnJvcjoKLSAgICAgICAgdXNhZ2UoKQotCi0gICAgZm9yIG9wdCwgYXJnIGluIG9wdGlvbnM6Ci0gICAgICAgIGlmIG9wdCBpbiAoJy1iJywgJy0tYnVpbGRkaXInKToKLSAgICAgICAgICAgIGJ1aWxkZXIuYnVpbGRkaXIgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctbicsICctLW5hbWUnKToKLSAgICAgICAgICAgIGJ1aWxkZXIubmFtZSA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1yJywgJy0tcmVzb3VyY2UnKToKLSAgICAgICAgICAgIGJ1aWxkZXIucmVzb3VyY2VzLmFwcGVuZChvcy5wYXRoLm5vcm1wYXRoKGFyZykpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWYnLCAnLS1maWxlJyk6Ci0gICAgICAgICAgICBzcmNkc3QgPSBhcmcuc3BsaXQoJzonKQotICAgICAgICAgICAgaWYgbGVuKHNyY2RzdCkgIT0gMjoKLSAgICAgICAgICAgICAgICB1c2FnZSgiLWYgb3IgLS1maWxlIGFyZ3VtZW50IG11c3QgYmUgdHdvIHBhdGhzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRlZCBieSBhIGNvbG9uIikKLSAgICAgICAgICAgIGJ1aWxkZXIuZmlsZXMuYXBwZW5kKHNyY2RzdCkKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctZScsICctLWV4ZWN1dGFibGUnKToKLSAgICAgICAgICAgIGJ1aWxkZXIuZXhlY3V0YWJsZSA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1tJywgJy0tbWFpbnByb2dyYW0nKToKLSAgICAgICAgICAgIGJ1aWxkZXIubWFpbnByb2dyYW0gPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctYScsICctLWFyZ3YnKToKLSAgICAgICAgICAgIGJ1aWxkZXIuYXJndl9lbXVsYXRpb24gPSAxCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWMnLCAnLS1jcmVhdG9yJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmNyZWF0b3IgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tYnVuZGxlLWlkJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYnVuZGxlX2lkID0gYXJnCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWljb25maWxlJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuaWNvbmZpbGUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgPT0gIi0tbGliIjoKLSAgICAgICAgICAgIGJ1aWxkZXIubGlicy5hcHBlbmQob3MucGF0aC5ub3JtcGF0aChhcmcpKQotICAgICAgICBlbGlmIG9wdCA9PSAiLS1uaWIiOgotICAgICAgICAgICAgYnVpbGRlci5uaWJuYW1lID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLXAnLCAnLS1wbGlzdCcpOgotICAgICAgICAgICAgYnVpbGRlci5wbGlzdCA9IFBsaXN0LmZyb21GaWxlKGFyZykKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctbCcsICctLWxpbmsnKToKLSAgICAgICAgICAgIGJ1aWxkZXIuc3ltbGluayA9IDEKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tbGluay1leGVjJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuc3ltbGlua19leGVjID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1oJywgJy0taGVscCcpOgotICAgICAgICAgICAgdXNhZ2UoKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy12JywgJy0tdmVyYm9zZScpOgotICAgICAgICAgICAgYnVpbGRlci52ZXJib3NpdHkgKz0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1xJywgJy0tcXVpZXQnKToKLSAgICAgICAgICAgIGJ1aWxkZXIudmVyYm9zaXR5IC09IDEKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tc3RhbmRhbG9uZSc6Ci0gICAgICAgICAgICBidWlsZGVyLnN0YW5kYWxvbmUgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXNlbWktc3RhbmRhbG9uZSc6Ci0gICAgICAgICAgICBidWlsZGVyLnNlbWlfc3RhbmRhbG9uZSA9IDEKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tcHl0aG9uJzoKLSAgICAgICAgICAgIGJ1aWxkZXIucHl0aG9uID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLXgnLCAnLS1leGNsdWRlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmV4Y2x1ZGVNb2R1bGVzLmFwcGVuZChhcmcpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWknLCAnLS1pbmNsdWRlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmluY2x1ZGVNb2R1bGVzLmFwcGVuZChhcmcpCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXBhY2thZ2UnOgotICAgICAgICAgICAgYnVpbGRlci5pbmNsdWRlUGFja2FnZXMuYXBwZW5kKGFyZykKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tc3RyaXAnOgotICAgICAgICAgICAgYnVpbGRlci5zdHJpcCA9IDEKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tZGVzdHJvb3QnOgotICAgICAgICAgICAgYnVpbGRlci5kZXN0cm9vdCA9IGFyZwotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIHVzYWdlKCJNdXN0IHNwZWNpZnkgb25lIGNvbW1hbmQgKCdidWlsZCcsICdyZXBvcnQnIG9yICdoZWxwJykiKQotICAgIGNvbW1hbmQgPSBhcmdzWzBdCi0KLSAgICBpZiBjb21tYW5kID09ICJidWlsZCI6Ci0gICAgICAgIGJ1aWxkZXIuc2V0dXAoKQotICAgICAgICBidWlsZGVyLmJ1aWxkKCkKLSAgICBlbGlmIGNvbW1hbmQgPT0gInJlcG9ydCI6Ci0gICAgICAgIGJ1aWxkZXIuc2V0dXAoKQotICAgICAgICBidWlsZGVyLnJlcG9ydCgpCi0gICAgZWxpZiBjb21tYW5kID09ICJoZWxwIjoKLSAgICAgICAgdXNhZ2UoKQotICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlKCJVbmtub3duIGNvbW1hbmQgJyVzJyIgJSBjb21tYW5kKQotCi0KLWRlZiBidWlsZGFwcCgqKmt3YXJncyk6Ci0gICAgYnVpbGRlciA9IEFwcEJ1aWxkZXIoKiprd2FyZ3MpCi0gICAgbWFpbihidWlsZGVyKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KaW5kZXggZTE5ZmMwMC4uY2UyYzBhYTIgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTMyOCw2ICszMjgsMTMgQEAKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgb3Bjb2RlLmggZ2VuZXJhdGlvbgorT1BDT0RFX0hfRElSPSAJJChzcmNkaXIpL0luY2x1ZGUKK09QQ09ERV9IX1NDUklQVD0gJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKK09QQ09ERV9IPQkkKE9QQ09ERV9IX0RJUikvb3Bjb2RlLmgKK09QQ09ERV9IX0dFTj0JQE9QQ09ERUhHRU5AICAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEFTVAogQVNUX0hfRElSPQlJbmNsdWRlCiBBU1RfSD0JCSQoQVNUX0hfRElSKS9QeXRob24tYXN0LmgKQEAgLTM4Miw2ICszODksNyBAQAogCQlQeXRob24vcHljdHlwZS5vIFwKIAkJUHl0aG9uL3B5ZnBlLm8gXAogCQlQeXRob24vcHloYXNoLm8gXAorCQlQeXRob24vcHlsaWZlY3ljbGUubyBcCiAJCVB5dGhvbi9weW1hdGgubyBcCiAJCVB5dGhvbi9weXN0YXRlLm8gXAogCQlQeXRob24vcHl0aG9ucnVuLm8gXApAQCAtMzk0LDYgKzQwMiw3IEBACiAJCVB5dGhvbi9nZXRvcHQubyBcCiAJCVB5dGhvbi9weXN0cmNtcC5vIFwKIAkJUHl0aG9uL3B5c3RydG9kLm8gXAorCQlQeXRob24vcHlzdHJoZXgubyBcCiAJCVB5dGhvbi9kdG9hLm8gXAogCQlQeXRob24vZm9ybWF0dGVyX3VuaWNvZGUubyBcCiAJCVB5dGhvbi9maWxldXRpbHMubyBcCkBAIC00MjgsNiArNDM3LDcgQEAKIAkJT2JqZWN0cy9saXN0b2JqZWN0Lm8gXAogCQlPYmplY3RzL2xvbmdvYmplY3QubyBcCiAJCU9iamVjdHMvZGljdG9iamVjdC5vIFwKKwkJT2JqZWN0cy9vZGljdG9iamVjdC5vIFwKIAkJT2JqZWN0cy9tZW1vcnlvYmplY3QubyBcCiAJCU9iamVjdHMvbWV0aG9kb2JqZWN0Lm8gXAogCQlPYmplY3RzL21vZHVsZW9iamVjdC5vIFwKQEAgLTQ2NSw3ICs0NzUsNyBAQAogCiAjIERlZmF1bHQgdGFyZ2V0CiBhbGw6CQlidWlsZF9hbGwKLWJ1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzIE1vZHVsZXMvX3Rlc3RlbWJlZCBweXRob24tY29uZmlnCitidWlsZF9hbGw6CSQoQlVJTERQWVRIT04pIG9sZHNoYXJlZG1vZHMgc2hhcmVkbW9kcyBnZGJob29rcyBQcm9ncmFtcy9fdGVzdGVtYmVkIHB5dGhvbi1jb25maWcKIAogIyBDb21waWxlIGEgYmluYXJ5IHdpdGggZ2NjIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbi4KIHByb2ZpbGUtb3B0OgpAQCAtNTI0LDYgKzUzNCw3IEBACiAJOiAjIGZvcmNlIHJlYnVpbGRpbmcgb2YgcGFyc2VyIGFuZCBpbXBvcnRsaWIKIAlAdG91Y2ggJChHUkFNTUFSX0lOUFVUKQogCUB0b3VjaCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisJQHRvdWNoICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKIAk6ICMgYnVpbGQgd2l0aCBjb3ZlcmFnZSBpbmZvCiAJJChNQUtFKSBjb3ZlcmFnZQogCTogIyBydW4gdGVzdHMsIGlnbm9yZSBmYWlsdXJlcwpAQCAtNTM4LDggKzU0OSw4IEBACiAJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLi9Ub29scy9jbGluaWMvY2xpbmljLnB5IC0tbWFrZQogCiAjIEJ1aWxkIHRoZSBpbnRlcnByZXRlcgotJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQotCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorJChCVUlMRFBZVEhPTik6CVByb2dyYW1zL3B5dGhvbi5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIFByb2dyYW1zL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCkBAIC02NzQsMTggKzY4NSwyMyBAQAogCQllY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7IFwKIAlmaQogCi1Nb2R1bGVzL190ZXN0ZW1iZWQ6IE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKLQkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCitQcm9ncmFtcy9fdGVzdGVtYmVkOiBQcm9ncmFtcy9fdGVzdGVtYmVkLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgSW1wb3J0bGliCiAKLU1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKLQkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubzogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBNYWtlZmlsZQogCi1QeXRob24vaW1wb3J0bGliLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCi0JJChNQUtFKSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCi0JLi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliIFwKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKKwkJJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKKworUHl0aG9uL2ltcG9ydGxpYi5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCisJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJCSQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKIApAQCAtNzEzLDExICs3MjksMTEgQEAKIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXAogCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKIAotTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKLQkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKK1Byb2dyYW1zL3B5dGhvbi5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL1Byb2dyYW1zL3B5dGhvbi5jCiAKLU1vZHVsZXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKLQkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCitQcm9ncmFtcy9fdGVzdGVtYmVkLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwogCiBNb2R1bGVzL19zcmUubzogJChzcmNkaXIpL01vZHVsZXMvX3NyZS5jICQoc3JjZGlyKS9Nb2R1bGVzL3NyZS5oICQoc3JjZGlyKS9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaCAkKHNyY2RpcikvTW9kdWxlcy9zcmVfbGliLmgKIApAQCAtNzQ2LDE1ICs3NjIsMTMgQEAKIAogJChJT19PQkpTKTogJChJT19IKQogCi0kKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKyQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU4pCiAJCUAkKE1LRElSX1ApIEluY2x1ZGUKLQkJJChNQUtFKSAkKFBHRU4pCiAJCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0kKEdSQU1NQVJfQyk6ICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCi0JCSQoTUFLRSkgJChHUkFNTUFSX0gpCiskKEdSQU1NQVJfQyk6ICQoR1JBTU1BUl9IKQogCQl0b3VjaCAkKEdSQU1NQVJfQykKIAotJChQR0VOKToJJChQR0VOT0JKUykKKyQoUEdFTik6ICQoUEdFTk9CSlMpCiAJCSQoQ0MpICQoT1BUKSAkKFBZX0xERkxBR1MpICQoUEdFTk9CSlMpICQoTElCUykgLW8gJChQR0VOKQogCiBQYXJzZXIvZ3JhbW1hci5vOgkkKHNyY2RpcikvUGFyc2VyL2dyYW1tYXIuYyBcCkBAIC03NzYsNiArNzkwLDkgQEAKIAkkKE1LRElSX1ApICQoQVNUX0NfRElSKQogCSQoQVNETEdFTikgLWMgJChBU1RfQ19ESVIpICQoQVNUX0FTREwpCiAKKyQoT1BDT0RFX0gpOiAkKHNyY2RpcikvTGliL29wY29kZS5weSAkKE9QQ09ERV9IX1NDUklQVCkKKwkkKE9QQ09ERV9IX0dFTikKKwogUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQogCiBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC04MzAsNyArODQ3LDcgQEAKIAogUHl0aG9uL2NldmFsLm86ICQoT1BDT0RFVEFSR0VUU19IKSAkKHNyY2RpcikvUHl0aG9uL2NldmFsX2dpbC5oCiAKLVB5dGhvbi9mcm96ZW4ubzogUHl0aG9uL2ltcG9ydGxpYi5oCitQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaCBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwogT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTg4Nyw3ICs5MDQsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9ub2RlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vYmplY3QuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCi0JCSQoc3JjZGlyKS9JbmNsdWRlL29wY29kZS5oIFwKKwkJJChPUENPREVfSCkgXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW4uaCBcCkBAIC05MDAsNiArOTE3LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hdGguaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Z2V0b3B0LmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hY3JvLmggXApAQCAtOTA4LDYgKzkyNiw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RhdGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RyY21wLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cnRvZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJoZXguaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhvbnJ1bi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aHJlYWQuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGltZS5oIFwKQEAgLTkyOCw3ICs5NDcsNyBAQAogCQkkKFBBUlNFUl9IRUFERVJTKSBcCiAJCSQoQVNUX0gpCiAKLSQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIE1vZHVsZXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCiskKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMTMxLDkgKzExNTAsMTQgQEAKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSB0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0IFwKKwkJdGVzdC90ZXN0X2ltcG9ydC9kYXRhIFwKKwkJdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL25hbWVzcGFjZV9wa2dzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydGxpYi9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zIFwKIAkJdGVzdC90ZXN0X2ltcG9ydGxpYi9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2ZvbyBcCkBAIC0xMjQ2LDcgKzEyNzAsMTIgQEAKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQotCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAorCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJLWQgJChMSUJERVNUKSAtZiBcCisJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorCQkkKERFU1RESVIpJChMSUJERVNUKQorCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwpAQCAtMTI1NSw2ICsxMjg0LDEwIEBACiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU9PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcworCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKQEAgLTEzMzcsNyArMTM3MCw3IEBACiAJCWZpOyBcCiAJZmkKIAkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9jb25maWcuYyAkKERFU1RESVIpJChMSUJQTCkvY29uZmlnLmMKLQkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9weXRob24ubyAkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLm8KKwkkKElOU1RBTExfREFUQSkgUHJvZ3JhbXMvcHl0aG9uLm8gJChERVNURElSKSQoTElCUEwpL3B5dGhvbi5vCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL2NvbmZpZy5jLmluICQoREVTVERJUikkKExJQlBMKS9jb25maWcuYy5pbgogCSQoSU5TVEFMTF9EQVRBKSBNYWtlZmlsZSAkKERFU1RESVIpJChMSUJQTCkvTWFrZWZpbGUKIAkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9TZXR1cCAkKERFU1RESVIpJChMSUJQTCkvU2V0dXAKQEAgLTEzNDgsMTAgKzEzODEsMTAgQEAKIAkkKElOU1RBTExfU0NSSVBUKSAkKHNyY2RpcikvaW5zdGFsbC1zaCAkKERFU1RESVIpJChMSUJQTCkvaW5zdGFsbC1zaAogCSQoSU5TVEFMTF9TQ1JJUFQpIHB5dGhvbi1jb25maWcucHkgJChERVNURElSKSQoTElCUEwpL3B5dGhvbi1jb25maWcucHkKIAkkKElOU1RBTExfU0NSSVBUKSBweXRob24tY29uZmlnICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChMRFZFUlNJT04pLWNvbmZpZwotCUBpZiBbIC1zIE1vZHVsZXMvcHl0aG9uLmV4cCAtYSBcCisJQGlmIFsgLXMgUHJvZ3JhbXMvcHl0aG9uLmV4cCAtYSBcCiAJCSJgZWNobyAkKE1BQ0hERVApIHwgc2VkICdzL15cKC4uLlwpLiovXDEvJ2AiID0gImFpeCIgXTsgdGhlbiBcCiAJCWVjaG87IGVjaG8gIkluc3RhbGxpbmcgc3VwcG9ydCBmaWxlcyBmb3IgYnVpbGRpbmcgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzIG9uIEFJWDoiOyBcCi0JCSQoSU5TVEFMTF9EQVRBKSBNb2R1bGVzL3B5dGhvbi5leHAJCVwKKwkJJChJTlNUQUxMX0RBVEEpIFByb2dyYW1zL3B5dGhvbi5leHAJCVwKIAkJCQkkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLmV4cDsJCVwKIAkJZWNobzsgZWNobyAiJChMSUJQTCkvcHl0aG9uLmV4cCI7CQlcCiAJCSQoSU5TVEFMTF9TQ1JJUFQpICQoc3JjZGlyKS9Nb2R1bGVzL21ha2V4cF9haXgJXApAQCAtMTUzNCw3ICsxNTY3LDcgQEAKIAlmaW5kIGJ1aWxkIC1uYW1lICcqLnB5W2NvXScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKIAktcm0gLWYgcHlidWlsZGRpci50eHQKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgorCS1ybSAtZiBQcm9ncmFtcy9fdGVzdGVtYmVkIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCkBAIC0xNTU4LDcgKzE1OTEsNyBAQAogCWRvbmUKIAktcm0gLWYgY29yZSBNYWtlZmlsZSBNYWtlZmlsZS5wcmUgY29uZmlnLnN0YXR1cyBcCiAJCU1vZHVsZXMvU2V0dXAgTW9kdWxlcy9TZXR1cC5sb2NhbCBNb2R1bGVzL1NldHVwLmNvbmZpZyBcCi0JCU1vZHVsZXMvbGRfc29fYWl4IE1vZHVsZXMvcHl0aG9uLmV4cCBNaXNjL3B5dGhvbi5wYworCQlNb2R1bGVzL2xkX3NvX2FpeCBQcm9ncmFtcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCiAJLXJtIC1mIHB5dGhvbiotZ2RiLnB5CiAJZmluZCAkKHNyY2RpcikvW2EtekEtWl0qICcoJyAtbmFtZSAnKi5mZGMnIC1vIC1uYW1lICcqficgXAogCQkJCSAgICAgLW8gLW5hbWUgJ1tALCNdKicgLW8gLW5hbWUgJyoub2xkJyBcCkBAIC0xNjA1LDcgKzE2MzgsNyBAQAogCQktbyAtcHJpbnQKIAogIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi1wYXRjaGNoZWNrOgorcGF0Y2hjaGVjazogYWxsCiAJJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQogCiAjIERlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCmluZGV4IGIzNzcwNTAuLjhhMDA3ZWEgMTAwNjQ0Ci0tLSBhL01pc2MvQUNLUworKysgYi9NaXNjL0FDS1MKQEAgLTQ2LDYgKzQ2LDcgQEAKIEVyaWsgQW5kZXJzw6luCiBPbGl2ZXIgQW5kcmljaAogUm9zcyBBbmRydXMKK0ZhYnJpY2UgQW5lY2hlCiBKdWFuY2FybG8gQcOxZXoKIENocmlzIEFuZ2VsaWNvCiBKw6lyw6lteSBBbmdlcgpAQCAtNzEsNiArNzIsNyBAQAogU3RpZyBCYWtrZW4KIEdyZWcgQmFsbAogTHVpZ2kgQmFsbGFiaW8KK1Rob21hcyBCYWxsaW5nZXIKIEplZmYgQmFsb2doCiBNYW51ZWwgQmFsc2VyYQogTWF0dCBCYW5keQpAQCAtODksNiArOTEsNyBAQAogQ2VzYXIgRWR1YXJkbyBCYXJyb3MKIERlcyBCYXJyeQogVWxmIEJhcnRlbHQKK0NhbXBiZWxsIEJhcnRvbgogRG9uIEJhc2hmb3JkCiBQaW9yIEJhc3RpZGEKIE5pY2sgQmFzdGluCkBAIC0xMDAsNiArMTAzLDcgQEAKIFNhbXVlbCBMLiBCYXllcgogRG9uYWxkIEJlYXVkcnkKIERhdmlkIEJlYXpsZXkKK0luZ29sZiBCZWNrZXIKIE5lYWwgQmVja2VyCiBSb2JpbiBCZWNrZXIKIFRvcnN0ZW4gQmVja2VyCkBAIC0xNTEsNiArMTU1LDcgQEAKIEdhd2FpbiBCb2x0b24KIEZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKK03DqWTDqXJpYyBCb3F1aWVuCiBNYXRpYXMgQm9yZGVzZQogSm9uYXMgQm9yZ3N0csO2bQogSnVyamVuIEJvcwpAQCAtMjMwLDEwICsyMzUsMTIgQEAKIEpvaG4gQ2hhbmRsZXIKIEh5ZS1TaGlrIENoYW5nCiBKZWZmcmV5IENoYW5nCitHYXZpbiBDaGFwcGVsbAogR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KIEdyZWcgQ2hhcG1hbgogTWl0Y2ggQ2hhcG1hbgorTWF0dCBDaGFwdXQKIFlvZ2VzaCBDaGF1ZGhhcmkKIERhdmlkIENoYXVtCiBOaWNvbGFzIENoYXV2YXQKQEAgLTQ3Myw2ICs0ODAsNyBAQAogWGF2aWVyIGRlIEdheWUKIEhhcnJ5IEhlbnJ5IEdlYmVsCiBNYXJpdXMgR2VkbWluYXMKK0phbi1QaGlsaXAgR2VocmNrZQogVGhvbWFzIEdlbGxla3VtCiBHYWJyaWVsIEdlbmVsbGluYQogQ2hyaXN0b3MgR2Vvcmdpb3UKQEAgLTQ4NSw2ICs0OTMsNyBAQAogTWljaGFlbCBHaWxmaXgKIEp1bGlhbiBHaW5kaQogWWFubmljayBHaW5ncmFzCitOZWlsIEdpcmRoYXIKIE1hdHQgR2l1Y2EKIFdpbSBHbGVubgogTWljaGFlbCBHb2RlcmJhdWVyCkBAIC00OTksNiArNTA4LDcgQEAKIERhdmlkIEdvb2RnZXIKIEhhbnMgZGUgR3JhYWZmCiBUaW0gR3JhaGFtCitLaW0gR3LDpHNtYW4KIE5hdGhhbmllbCBHcmF5CiBFZGR5IERlIEdyZWVmCiBHcmFudCBHcmlmZmluCkBAIC01NzIsNiArNTgyLDcgQEAKIFdvdXRlciB2YW4gSGV5c3QKIEtlbHNleSBIaWdodG93ZXIKIEphc29uIEhpbGRlYnJhbmQKK0Fhcm9uIEhpbGwKIFJpY2hpZSBIaW5kbGUKIEtvbnJhZCBIaW5zZW4KIERhdmlkIEhvYmxleQpAQCAtNjA2LDYgKzYxNyw3IEBACiBLZW4gSG93YXJkCiBCcmFkIEhvd2VzCiBNaWtlIEhveQorQmVuIEhveXQKIENoaWgtSGFvIEh1YW5nCiBDaHJpc3RpYW4gSHVkb24KIExhd3JlbmNlIEh1ZHNvbgpAQCAtNjI1LDYgKzYzNyw3IEBACiBBYXJvbiBJbGVzCiBMYXJzIEltbWlzY2gKIEJvYmJ5IEltcG9sbG9uaWEKK05hb2tpIEluYWRhCiBNZWFkb3IgSW5nZQogUGV0ZXIgSW5nZWJyZXRzb24KIFRvbnkgSW5ncmFsZGkKQEAgLTY0NywxMyArNjYwLDE2IEBACiBUaG9tYXMgSmFyb3NjaAogSnVoYW5hIEphdWhpYWluZW4KIFJhamFnb3BhbGFzYXJtYSBKYXlha3Jpc2huYW4KK0RldmluIEplYW5waWVycmUKIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsKIEp1bGllbiBKZWhhbm5ldAorTXVoYW1tYWQgSmVoYW56ZWIKIERyZXcgSmVua2lucwogRmxlbW1pbmcgS2rDpnIgSmVuc2VuCiBQaGlsaXAgSC4gSmVuc2VuCiBQaGlsaXAgSmVudmV5CiBNdW5TaWMgSmVvbmcKK0pvZSBKZXZuaWsKIENocmlzIEplcmRvbmVrCiBKaW0gSmV3ZXR0CiBQZWRybyBEaWF6IEppbWVuZXoKQEAgLTY2OCw2ICs2ODQsNyBAQAogTmljb2xhcyBKb2x5CiBCcmlhbiBLLiBKb25lcwogRXZhbiBKb25lcworR2xlbm4gSm9uZXMKIEplcmVteSBKb25lcwogUmljaGFyZCBKb25lcwogSXJtZW4gZGUgSm9uZwpAQCAtNjkwLDEyICs3MDcsMTUgQEAKIEphbiBLYW5pcwogUmFmZSBLYXBsYW4KIEphY29iIEthcGxhbi1Nb3NzCitBbGxpc29uIEthcHR1cgogSmFubmUgS2FyaWxhCiBQZXIgw5h5dmluZCBLYXJsc2VuCiBBbnRvbiBLYXN5YW5vdgogTG91IEthdGVzCiBNYWtvdG8gS2F0bwogSGlyb2FraSBLYXdhaQorRG1pdHJ5IEthemFrb3YKK0JyaWFuIEtlYXJucwogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCkBAIC03MDYsMTEgKzcyNiwxMyBAQAogTGF3cmVuY2UgS2VzdGVsb290CiBWaXZlayBLaGVyYQogRGhpcnUgS2hvbGlhCitBa3NoaXQgS2h1cmFuYQogTWFkcyBLaWlsZXJpY2gKIEphc29uIEtpbGxlbgogSmFuIEtpbQogVGFlayBKb28gS2ltCiBTYW0gS2ltYnJlbAorSmFtZXMgS2luZwogVy4gVHJldm9yIEtpbmcKIFBhdWwgS2lwcGVzCiBTdGV2ZSBLaXJzY2gKQEAgLTc4MSw2ICs4MDMsNyBAQAogU2ltb24gTGF3CiBKdWxpYSBMYXdhbGwKIENocmlzIExhd3JlbmNlCitNYXJrIExhd3JlbmNlCiBCcmlhbiBMZWFpcgogTWF0aGlldSBMZWR1Yy1IYW1lbAogQW1hbmRpbmUgTGVlCkBAIC04MTgsNiArODQxLDcgQEAKIFNoYXduIExpZ29ja2kKIE1hcnRpbiBMaWdyCiBHZWRpbWluYXMgTGlrdGFyYXMKK1ZpdG9yIGRlIExpbWEKIEdyYW50IExpbWJlcmcKIENocmlzdG9waGVyIExpbmRibGFkCiBVbGYgQS4gTGluZGdyZW4KQEAgLTgzNCw2ICs4NTgsNyBAQAogVG9tIExvcmVkbwogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQorQ2hhbG1lciBMb3dlCiBKYXNvbiBMb3dlCiBUb255IExvd25kcwogUmF5IExveXphZ2EKQEAgLTg4Nyw5ICs5MTIsMTEgQEAKIEx1Y2FzIE1heXN0cmUKIEFybmF1ZCBNYXppbgogTWF0dCBNY0NsdXJlCitKYWNrIE1jQ3JhY2tlbgogUmViZWNjYSBNY0NyZWFyeQogS2lyayBNY0RvbmFsZAogQ2hyaXMgTWNEb25vdWdoCitNaWNoYWVsIE1jRmFkZGVuCiBHcmVnIE1jRmFybGFuZQogQWxhbiBNY0ludHlyZQogSmVzc2ljYSBNY0tlbGxhcgpAQCAtOTkzLDYgKzEwMjAsNyBAQAogSm9obiBPJ0Nvbm5vcgogS2V2aW4gTydDb25ub3IKIFRpbSBPJ01hbGxleQorRGFuIE8nUmVpbGx5CiBab29rbyBPJ1doaWVsYWNyb254CiBBYXJvbiBPYWtsZXkKIEphbWVzIE9ha2xleQpAQCAtMTAzMiw2ICsxMDYwLDcgQEAKIEFsZXhhbmRyZSBQYXJlbnRlYXUKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCitDbGF1ZGUgUGFyb3oKIEhlaWtraSBQYXJ0YW5lbgogSGFycmkgUGFzYW5lbgogR2HDq2wgUGFzZ3JpbWF1ZApAQCAtMTEwNiw2ICsxMTM1LDggQEAKIFJhbSBSYWNodW0KIErDqXLDtG1lIFJhZGl4CiBCdXJ0b24gUmFkb25zCitBYmhpbGFzaCBSYWoKK1Nob3J5YSBSYWoKIEplZmYgUmFtbmFuaQogQnJvZGllIFJhbwogU2Vua28gUmFzaWMKQEAgLTExNDcsNiArMTE3OCw3IEBACiBEYXZpZGUgUml6em8KIEFudGhvbnkgUm9hY2gKIENhcmwgUm9iYmVuCitCZW4gUm9iZXJ0cwogTWFyayBSb2JlcnRzCiBBbmR5IFJvYmluc29uCiBKaW0gUm9iaW5zb24KQEAgLTExNjIsNiArMTE5NCw3IEBACiBDYXNlIFJvb2xlCiBUaW1vdGh5IFJvc2NvZQogRXJpayBSb3NlCitKb3NoIFJvc2VuYmVyZwogSmltIFJvc2tpbmQKIEJyaWFuIFJvc25lcgogR3VpZG8gdmFuIFJvc3N1bQpAQCAtMTE4MCw2ICsxMjEzLDcgQEAKIEF1ZHVuIFMuIFJ1bmRlCiBFcmFuIFJ1bmRzdGVpbgogUmF1bGkgUnVvaG9uZW4KK0xhdXJhIFJ1cHByZWNodAogSmVmZiBSdXNoCiBTYW0gUnVzaGluZwogTWFyayBSdXNzZWxsCkBAIC0xMTkzLDYgKzEyMjcsNyBAQAogU3VtYW4gU2FoYQogSGFqaW1lIFNhaXRvdQogR2VvcmdlIFNha2tpcworVmljdG9yIFNhbGdhZG8KIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KQEAgLTEyOTMsNiArMTMyOCw3IEBACiBFdmdlbnkgU29sb2d1Ym92CiBDb2R5IFNvbWVydmlsbGUKIEVkb2FyZG8gU3BhZG9saW5pCitHZW9mZnJleSBTcGVhcgogQ2xheSBTcGVuY2UKIFN0ZWZhbiBTcGVybGluZwogTmljaG9sYXMgU3BpZXMKQEAgLTEzMzgsNiArMTM3NCw3IEBACiBQw6l0ZXIgU3phYsOzCiBKb2huIFN6YWttZWlzdGVyCiBBbWlyIFN6ZWtlbHkKK01hY2llaiBTenVsaWsKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogSW5kcmEgVGFsaXAKQEAgLTEzNTAsNiArMTM4Nyw3IEBACiBBbXkgVGF5bG9yCiBNb250eSBUYXlsb3IKIEFuYXRvbHkgVGVjaHRvbmlrCitHdXN0YXZvIFRlbXBsZQogTWlraGFpbCBUZXJla2hvdgogVmljdG9yIFRlcnLDs24KIFJpY2hhcmQgTS4gVGV3CkBAIC0xMzgyLDYgKzE0MjAsNyBAQAogTmF0aGFuIFRyYXB1enphbm8KIExhdXJlbmNlIFRyYXR0CiBBbGJlcnRvIFRyZXZpbm8KK01heWFuayBUcmlwYXRoaQogTWF0dGhpYXMgVHJvZmZhZXMKIFRvbSBUcm9tZXkKIEpvaG4gVHJvbXAKQEAgLTE0MDMsNiArMTQ0Miw3IEBACiBEYW5pZWwgVXJiYW4KIE1pY2hhZWwgVXJtYW4KIEhlY3RvciBVcnR1YmlhCitMdWthcyBWYWNlawogVmlsbGUgVmFpbmlvCiBBbmRpIFZhamRhCiBDYXNlIFZhbiBIb3JzZW4KQEAgLTE0MTgsNiArMTQ1OCw3IEBACiBKYWFwIFZlcm1ldWxlbgogTmlraXRhIFZldG9zaGtpbgogQWwgVmV6emEKK1BldHIgVmljdG9yaW4KIEphY3F1ZXMgQS4gVmlkcmluZQogSm9obiBWaWVnYQogRGlubyBWaWVobGFuZApAQCAtMTQyNywxMCArMTQ2OCwxMyBAQAogUGF1bGkgVmlydGFuZW4KIEZyYW5rIFZpc3NlcgogSm9oYW5uZXMgVm9nZWwKK01pY2hhZWwgVm9ndAorUmFkdSBWb2ljaWxhcwogQWxleCBWb2xrb3YKIE1hcnRpam4gVnJpZXMKIFNqb2VyZCBkZSBWcmllcwogR3VpZG8gVnJhbmtlbgorRGFuaWVsIFdhZ25lci1IYWxsCiBOaWtpIFcuIFdhaWJlbAogV29qdGVrIFdhbGN6YWsKIENoYXJsZXMgV2FsZG1hbgpAQCAtMTQ0OSw2ICsxNDkzLDcgQEAKIERhdmlkIFdhdHNvbgogQWFyb24gV2F0dGVycwogSGVucmlrIFdlYmVyCitMZW9uIFdlYmVyCiBDb3JyYW4gV2Vic3RlcgogR2x5biBXZWJzdGVyCiBQaGlsIFdlYnN0ZXIKQEAgLTE0NzcsNiArMTUyMiw3IEBACiBDYXJvbCBXaWxsaW5nCiBTdGV2ZW4gV2lsbGlzCiBGcmFuayBXaWxsaXNvbgorRGF2aWQgV2lsc29uCiBHZW9mZiBXaWxzb24KIEdyZWcgVi4gV2lsc29uCiBKIERlcmVrIFdpbHNvbgpAQCAtMTUwMiwxMSArMTU0OCwxMyBAQAogRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBEYW5pZWwgV296bmlhaworV2VpIFd1CiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CiBSb2JlcnQgWGlhbwogRmxvcmVudCBYaWNsdW5hCiBIaXJva2F6dSBZYW1hbW90bworQXJub24gWWFhcmkKIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KIEV1bmdKdW4gWWkKZGlmZiAtLWdpdCBhL01pc2MvSElTVE9SWSBiL01pc2MvSElTVE9SWQppbmRleCBmNDgzNzU5Li4wNDYyZjRlIDEwMDY0NAotLS0gYS9NaXNjL0hJU1RPUlkKKysrIGIvTWlzYy9ISVNUT1JZCkBAIC0xOCwxMyArMTgsMTMgQEAKIAogLSBJc3N1ZSAjMTYwNDY6IEZpeCBsb2FkaW5nIHNvdXJjZWxlc3MgbGVnYWN5IC5weW8gZmlsZXMuCiAKLS0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gX190cnVuY19fIHJldHVybnMgYW4gb2JqZWN0Ci0gIHdob3NlIF9faW50X18gZ2l2ZXMgYSBub24taW50ZWdlci4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxNjA2MDogRml4IHJlZmNvdW50aW5nIGJ1ZyB3aGVuIGBfX3RydW5jX18oKWAgcmV0dXJucyBhbiBvYmplY3Qgd2hvc2UKKyAgYF9faW50X18oKWAgZ2l2ZXMgYSBub24taW50ZWdlci4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNjAxMjogRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgVXNlRm9yZWlnbkRURCgpCistIElzc3VlICMxNjAxMjogRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgYFVzZUZvcmVpZ25EVEQoKWAKICAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KIAogCkBAIC0zNiwyNiArMzYsMjYgQEAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTkwMDogRml4IHJlZmVyZW5jZSBsZWFrIGluIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKCkuCistIElzc3VlICMxNTkwMDogRml4IHJlZmVyZW5jZSBsZWFrIGluIGBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCgpYC4KIAogLSBJc3N1ZSAjMTU5MjY6IEZpeCBjcmFzaCBhZnRlciBtdWx0aXBsZSByZWluaXRpYWxpemF0aW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuCiAKIC0gSXNzdWUgIzE1ODk1OiBGaXggRklMRSBwb2ludGVyIGxlYWsgaW4gb25lIGVycm9yIGJyYW5jaCBvZgotICBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncygpIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0Ci0gIGlzIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KKyAgYFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKClgIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0IGlzCisgIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KIAogLSBGaXhlcyBmb3IgYSBmZXcgY3Jhc2ggYW5kIG1lbW9yeSBsZWFrIHJlZ3Jlc3Npb25zIGZvdW5kIGJ5IENvdmVyaXR5LgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgX2RlY2ltYWwgdG8gYWNjZXB0IGFueSBjb2VmZmljaWVudCB0dXBsZSB3aGVuCi0gIGNvbnN0cnVjdGluZyBpbmZpbml0aWVzLiBUaGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Ci0gIHdpdGggZGVjaW1hbC5weTogSW5maW5pdHkgY29lZmZpY2llbnRzIGFyZSB1bmRlZmluZWQgaW4gX2RlY2ltYWwKLSAgKGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWNhdGlvbikuCistIElzc3VlICMxNTg4MjogQ2hhbmdlIGBfZGVjaW1hbGAgdG8gYWNjZXB0IGFueSBjb2VmZmljaWVudCB0dXBsZSB3aGVuCisgIGNvbnN0cnVjdGluZyBpbmZpbml0aWVzLiBUaGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAgZGVjaW1hbC5weTogSW5maW5pdHkgY29lZmZpY2llbnRzIGFyZSB1bmRlZmluZWQgaW4gX2RlY2ltYWwgKGluIGFjY29yZGFuY2UKKyAgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbikuCiAKLS0gSXNzdWUgIzE1OTI1OiBGaXggYSByZWdyZXNzaW9uIGluIGVtYWlsLnV0aWwgd2hlcmUgdGhlIHBhcnNlZGF0ZSgpIGFuZAotICBwYXJzZWRhdGVfdHooKSBmdW5jdGlvbnMgZGlkIG5vdCByZXR1cm4gTm9uZSBhbnltb3JlIHdoZW4gdGhlIGFyZ3VtZW50IGNvdWxkCistIElzc3VlICMxNTkyNTogRml4IGEgcmVncmVzc2lvbiBpbiBgZW1haWwudXRpbGAgd2hlcmUgdGhlIGBwYXJzZWRhdGUoKWAgYW5kCisgIGBwYXJzZWRhdGVfdHooKWAgZnVuY3Rpb25zIGRpZCBub3QgcmV0dXJuIE5vbmUgYW55bW9yZSB3aGVuIHRoZSBhcmd1bWVudCBjb3VsZAogICBub3QgYmUgcGFyc2VkLgogCiBFeHRlbnNpb24gTW9kdWxlcwpAQCAtNjcsNyArNjcsNyBAQAogLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgogICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KIAotLSBJc3N1ZSAjMTU5Njk6IGZhdWx0aGFuZGxlciBtb2R1bGU6IHJlbmFtZSBkdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCiAgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bwogICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KIApAQCAtODMsMzUgKzgzLDM3IEBACiAtLS0tLS0tLS0tLS0tLS0tLQogCiAtIElzc3VlICMxMzk5MjogVGhlIHRyYXNoY2FuIG1lY2hhbmlzbSBpcyBub3cgdGhyZWFkLXNhZmUuICBUaGlzIGVsaW1pbmF0ZXMKLSAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IKLSAgY2hhaW5zIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyCi0gIHR5cGVzLgorICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvciBjaGFpbnMKKyAgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIgdHlwZXMuCiAKLS0gSXNzdWUgIzE1Nzg0OiBNb2RpZnkgT1NFcnJvci5fX3N0cl9fKCkgdG8gYmV0dGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4KLSAgZXJybm8gZXJyb3IgbnVtYmVycyBhbmQgV2luZG93cyBlcnJvciBudW1iZXJzLgorLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCisgIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KIAogLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMKLSAgYXMgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KKy0gSXNzdWUgIzE3MTU4OiBBZGQgJ3N5bWJvbHMnIHRvIGhlbHAoKSB3ZWxjb21lIG1lc3NhZ2U7IGNsYXJpZnkKKyAgJ21vZHVsZXMgc3BhbScgbWVzc2FnZXMuCiAKLS0gSXNzdWUgIzE1ODI4OiBSZXN0b3JlIHN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucyBpbiBpbXAubG9hZF9tb2R1bGUoKS4KKy0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKKyAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KIAotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90Ci0gIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KKy0gSXNzdWUgIzE1ODI4OiBSZXN0b3JlIHN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucyBpbiBgaW1wLmxvYWRfbW9kdWxlKClgLgogCi0tIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIERlY2ltYWwucXVhbnRpemUoKQorLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiBgYC9kZXYvdXJhbmRvbWBgIGNhbm5vdCBiZQorICBvcGVuZWQuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24gcGF0Y2guCisKKy0gSXNzdWUgIzEwNjUwOiBEZXByZWNhdGUgdGhlIHdhdGNoZXhwIHBhcmFtZXRlciBvZiB0aGUgYERlY2ltYWwucXVhbnRpemUoKWAKICAgbWV0aG9kLgogCi0tIElzc3VlICMxNTc4NTogTW9kaWZ5IHdpbmRvdy5nZXRfd2NoKCkgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4KLSAgYSBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZgotICBhbHdheXMgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsCi0gIGtleXMgbGlrZSBrZXlwYWQga2V5cy4KKy0gSXNzdWUgIzE1Nzg1OiBNb2RpZnkgYHdpbmRvdy5nZXRfd2NoKClgIEFQSSBvZiB0aGUgY3Vyc2VzIG1vZHVsZTogcmV0dXJuIGEKKyAgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIGFuZCBhbiBpbnRlZ2VyIGZvciBzcGVjaWFsIGtleXMsIGluc3RlYWQgb2YgYWx3YXlzCisgIHJldHVybmluZyBhbiBpbnRlZ2VyLiBTbyBpdCBpcyBub3cgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbCBrZXlzIGxpa2UKKyAga2V5cGFkIGtleXMuCiAKLS0gSXNzdWUgIzE0MjIzOiBGaXggd2luZG93LmFkZGNoKCkgb2YgdGhlIGN1cnNlcyBtb2R1bGUgZm9yIHNwZWNpYWwgY2hhcmFjdGVycworLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKICAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKICAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKICAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCkBAIC0xMjcsMTAgKzEyOSwxMCBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTgxNDogVGhlIG1lbW9yeXZpZXcgZW5oYW5jZW1lbnRzIGluIDMuMy4wIGFjY2lkZW50YWxseSBwZXJtaXR0ZWQKLSAgdGhlIGhhc2hpbmcgb2YgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J2aWV3cyBhbmQgbWVtb3J5dmlld3Mgd2l0aCBtdWx0aS1ieXRlCi0gIGl0ZW0gZm9ybWF0cy4gVGhlIGludGVuZGVkIHJlc3RyaWN0aW9ucyBoYXZlIG5vdyBiZWVuIGRvY3VtZW50ZWQgLSB0aGV5Ci0gIHdpbGwgYmUgY29ycmVjdGx5IGVuZm9yY2VkIGluIDMuMy4xCistIElzc3VlICMxNTgxNDogVGhlIG1lbW9yeXZpZXcgZW5oYW5jZW1lbnRzIGluIDMuMy4wIGFjY2lkZW50YWxseSBwZXJtaXR0ZWQgdGhlCisgIGhhc2hpbmcgb2YgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J2aWV3cyBhbmQgbWVtb3J5dmlld3Mgd2l0aCBtdWx0aS1ieXRlIGl0ZW0KKyAgZm9ybWF0cy4gVGhlIGludGVuZGVkIHJlc3RyaWN0aW9ucyBoYXZlIG5vdyBiZWVuIGRvY3VtZW50ZWQgLSB0aGV5IHdpbGwgYmUKKyAgY29ycmVjdGx5IGVuZm9yY2VkIGluIDMuMy4xLgogCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDE/CkBAIC0xNDQsMTMxICsxNDYsMTIzIEBACiAtIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKICAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCiAKLS0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBfX2ltcG9ydF9fIGRvZXNuJ3QgZXhpc3QsCistIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgYF9faW1wb3J0X18oKWAgZG9lc24ndCBleGlzdCwKICAgZG9uJ3QgcmFpc2UgYW4gZXJyb3IsIGJ1dCBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFzIHBhcnQgb2YgYW4gaW1wb3J0IGRvCiAgIGxldCB0aGF0IHByb3BhZ2F0ZS4KIAotLSBJc3N1ZSAjMTU3Nzg6IGVuc3VyZSB0aGF0IHN0cihJbXBvcnRFcnJvcihtc2cpKSByZXR1cm5zIGEgc3RyCi0gIGV2ZW4gd2hlbiBtc2cgaXNuJ3QgYSBzdHIuCistIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgorICBtc2cgaXNuJ3QgYSBzdHIuCiAKLS0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkKLSAgY29waWVkIHRvIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliCi0gIHJlaW50cm9kdWNlZCB0aGlzIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QKLSAgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZiB0aGlzIHBhdGNoKQorLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseSBjb3BpZWQgdG8KKyAgdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIgcmVpbnRyb2R1Y2VkIHRoaXMKKyAgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdCBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mCisgIHRoaXMgcGF0Y2gpCiAKLS0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KKy0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBgYFBZVEhPTkVYRUNVVEFCTEVgYCBpcyBzZXQgb24gTWFjIE9TIFguCiAKLS0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKy0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuICBQYXRjaCBieQorICBSb2JpbiBTY2hyZWliZXIuCiAKLS0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQorLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIGBQeU9iamVjdF9Jc1RydWUoKWAgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKICAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE0ODQ2OiBpbXBvcnRsaWIuRmlsZUZpbmRlciBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUKLSAgZGlyZWN0b3J5IGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdAorLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQorICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcwotICBjb21waWxlZCB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIKKy0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMgY29tcGlsZWQKKyAgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyLgogCi0tIElzc3VlICMxMzA3MjogVGhlIGFycmF5IG1vZHVsZSdzICd1JyBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQKLSAgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiA0LjAuCistIElzc3VlICMxMzA3MjogVGhlIGFycmF5IG1vZHVsZSdzICd1JyBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorICByZW1vdmVkIGluIFB5dGhvbiA0LjAuCiAKIC0gSXNzdWUgIzE1NTQ0OiBGaXggRGVjaW1hbC5fX2Zsb2F0X18gdG8gd29yayB3aXRoIHBheWxvYWQtY2FycnlpbmcgTmFOcy4KIAotLSBJc3N1ZSAjMTUyNDk6IEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcyBGcm9tIGxpbmVzICh3aGVuCistIElzc3VlICMxNTc3NjogQWxsb3cgcHl2ZW52IHRvIHdvcmsgaW4gZXhpc3RpbmcgZGlyZWN0b3J5IHdpdGggLS1jbGVhbi4KKworLSBJc3N1ZSAjMTUyNDk6IGVtYWlsJ3MgQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KICAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgogCiAtIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgogCi0tIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgZW1haWwudXRpbHMubG9jYWx0aW1lIHRvIHVzZSBkYXRldGltZS5hc3RpbWV6b25lIGFuZAorLSBJc3N1ZSAjIzY2NTE5NDogVXBkYXRlIGBlbWFpbC51dGlscy5sb2NhbHRpbWVgIHRvIHVzZSBkYXRldGltZS5hc3RpbWV6b25lIGFuZAogICBjb3JyZWN0bHkgaGFuZGxlIGhpc3RvcmljIGNoYW5nZXMgaW4gVVRDIG9mZnNldHMuCiAKIC0gSXNzdWUgIzE1MTk5OiBGaXggSmF2YVNjcmlwdCdzIGRlZmF1bHQgTUlNRSB0eXBlIHRvIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQuCiAgIFBhdGNoIGJ5IEJvaHVzbGF2IEthYnJkYS4KIAotLSBJc3N1ZSAjMTI2NDM6IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlIG5vdyByZXNwZWN0cyBzeXMuZXhjZXB0aG9vayB3aGVuCi0gIGRpc3BsYXlpbmcgZXhjZXB0aW9ucyAoUGF0Y2ggYnkgQWFyb24gSWxlcykKKy0gSXNzdWUgIzEyNjQzOiBgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIG5vdyByZXNwZWN0cyBgc3lzLmV4Y2VwdGhvb2tgIHdoZW4KKyAgZGlzcGxheWluZyBleGNlcHRpb25zLiAgUGF0Y2ggYnkgQWFyb24gSWxlcy4KIAotLSBJc3N1ZSAjMTM1Nzk6IHN0cmluZy5Gb3JtYXR0ZXIgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCistIElzc3VlICMxMzU3OTogYHN0cmluZy5Gb3JtYXR0ZXJgIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgogCi0tIElzc3VlICMxNTc5MzogU3RhY2sgY29ycnVwdGlvbiBpbiBzc2wuUkFORF9lZ2QoKS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU1OTU6IEZpeCBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQotICBmb3IgY2VydGFpbiBsb2NhbGVzICh1dGYtMTYgYW5kIHV0Zi0zMiBmYW1pbHkpLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKy0gSXNzdWUgIzE1NTk1OiBGaXggYGBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKWBgIGZvciBjZXJ0YWluCisgIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgogCiAtIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQogICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgogCi0tIElzc3VlICMxNTcxNTogaW1wb3J0bGliLl9faW1wb3J0X18oKSB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUgdXNlCi0gIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKy0gSXNzdWUgIzE1NzE1OiBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAgd2lsbCBzaWxlbmNlIGFuIEltcG9ydEVycm9yIHdoZW4gdGhlCisgIHVzZSBvZiBmcm9tbGlzdCBsZWFkcyB0byBhIGZhaWxlZCBpbXBvcnQuCiAKLS0gSXNzdWUgIzE0NjY5OiBGaXggcGlja2xpbmcgb2YgY29ubmVjdGlvbnMgYW5kIHNvY2tldHMgb24gTWFjT1NYCi0gIGJ5IHNlbmRpbmcvcmVjZWl2aW5nIGFuIGFja25vd2xlZGdtZW50IGFmdGVyIGZpbGUgZGVzY3JpcHRvciB0cmFuc2Zlci4KLSAgVGVzdFBpY2tsaW5nQ29ubmVjdGlvbiBoYXMgYmVlbiByZWVuYWJsZWQgZm9yIE1hY09TWC4KKy0gSXNzdWUgIzE0NjY5OiBGaXggcGlja2xpbmcgb2YgY29ubmVjdGlvbnMgYW5kIHNvY2tldHMgb24gTWFjIE9TIFggYnkKKyAgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgorICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjIE9TIFguCiAKIC0gSXNzdWUgIzExMDYyOiBGaXggYWRkaW5nIGEgbWVzc2FnZSBmcm9tIGZpbGUgdG8gQmFieWwgbWFpbGJveC4KIAotLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nCi0gIG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIgotICBpZGlvbS4KKy0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZyBgbXVsdGlwcm9jZXNzaW5nYAorICBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIGBgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJ2BgIGlkaW9tLgogCi0tIElzc3VlICMxNTY3ODogRml4IElETEUgbWVudXMgd2hlbiBzdGFydGVkIGZyb20gT1MgWCBjb21tYW5kIGxpbmUKLSAgKDMuMy4wYjIgcmVncmVzc2lvbikuCitJRExFCistLS0tCiAKLUMgQVBJCi0tLS0tLQotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCistIElzc3VlICMxNTY3ODogRml4IElETEUgbWVudXMgd2hlbiBzdGFydGVkIGZyb20gT1MgWCBjb21tYW5kIGxpbmUgKDMuMy4wYjIKKyAgcmVncmVzc2lvbikuCiAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGpzb24gbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KKy0gVG91Y2hlZCB1cCB0aGUgUHl0aG9uIDIgdG8gMyBwb3J0aW5nIGd1aWRlLgorCistIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUgYGpzb25gIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCiAgIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KIAogLSBDcmVhdGUgYSAnQ29uY3VycmVudCBFeGVjdXRpb24nIHNlY3Rpb24gaW4gdGhlIGRvY3MsIGFuZCBzcGxpdCB1cCB0aGUKICAgJ09wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMnIHNlY3Rpb24gdG8gdXNlIGEgbW9yZSB1c2VyLWNlbnRyaWMKLSAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kCi0gIHRleHQgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdG9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGgKLSAgdGhlIFNwaGlueCBgYDpwbGF0Zm9ybTpgYCB0YWcsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBwYXJ0IG9mIHRoZSBUYWJsZSBvZgotICBDb250ZW50cy4KKyAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kIHRleHQKKyAgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdGlvbnMgY2FuIGJlIHJlZmxlY3RlZCB3aXRoIHRoZSBTcGhpbngKKyAgYGA6cGxhdGZvcm06YGAgdGFnLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYXMgcGFydCBvZiB0aGUgVGFibGUgb2YgQ29udGVudHMuCiAKLS0gSXNzdWUgIzQ5NjY6IEJyaW5nIHRoZSBzZXF1ZW5jZSBkb2NzIHVwIHRvIGRhdGUgZm9yIHRoZSBQeTNrIHRyYW5zaXRpb24KLSAgYW5kIHRoZSBtYW55IGxhbmd1YWdlIGVuaGFuY2VtZW50cyBzaW5jZSB0aGV5IHdlcmUgb3JpZ2luYWwgd3JpdHRlbgorLSBJc3N1ZSAjNDk2NjogQnJpbmcgdGhlIHNlcXVlbmNlIGRvY3MgdXAgdG8gZGF0ZSBmb3IgdGhlIFB5M2sgdHJhbnNpdGlvbiBhbmQKKyAgdGhlIG1hbnkgbGFuZ3VhZ2UgZW5oYW5jZW1lbnRzIHNpbmNlIHRoZXkgd2VyZSBvcmlnaW5hbCB3cml0dGVuLgogCiAtIFRoZSAicGF0aCBpbXBvcnRlciIgbWlzbm9tZXIgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBFcmljIFNub3cncwotICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4KLSAgdGhlIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MKKyAgbW9yZS1hd2t3YXJkLWJ1dC1hdC1sZWFzdC1ub3Qtd3Jvbmcgc3VnZ2VzdGlvbiBvZiAicGF0aCBiYXNlZCBmaW5kZXIiIGluIHRoZQorICBpbXBvcnQgc3lzdGVtIHJlZmVyZW5jZSBkb2NzLgogCi0tIElzc3VlICMxNTY0MDogRG9jdW1lbnQgaW1wb3J0bGliLmFiYy5GaW5kZXIgYXMgZGVwcmVjYXRlZC4KKy0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFzIGRlcHJlY2F0ZWQuCiAKLS0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gUGF0Y2ggYnkKKy0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gIFBhdGNoIGJ5CiAgIERhbmllbCBFbGxpcy4KIAogVGVzdHMKIC0tLS0tCiAKIC0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKLSAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgorICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQgdGVzdHMgaW4KKyAgdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgogCi0tIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKLSAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKLSAgb2YgdGVzdC4KKy0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KKyAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgogCi0tIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiB1cmxsaWIgdGVzdHMuIFBhdGNoIGJ5CistIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKICAgSmVmZiBLbnVwcC4KIAotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkCi0gIGlucHV0IGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgorLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKKyAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCiAKIEJ1aWxkCiAtLS0tLQpAQCAtMjc3LDExICsyNzEsMTEgQEAKIAogLSBQaWNrIHVwIDMyLWJpdCBsYXVuY2hlciBmcm9tIFBHTyBkaXJlY3Rvcnkgb24gNjQtYml0IFBHTyBidWlsZC4KIAotLSBEcm9wIFBDXHB5dGhvbl9udC5oIGFzIGl0J3Mgbm90IHVzZWQuIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQorLSBEcm9wIGBgUENccHl0aG9uX250LmhgYCBhcyBpdCdzIG5vdCB1c2VkLiAgQWRkIGlucHV0IGRlcGVuZGVuY3kgb24gY3VzdG9tCiAgIGJ1aWxkIHN0ZXAuCiAKLS0gSXNzdWUgIzE1NTExOiBEcm9wIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gcHl0aG9ueHkubGliIGZyb20gX2RlY2ltYWwKLSAgYW1kNjQgY29uZmlndXJhdGlvbi4KKy0gSXNzdWUgIzE1NTExOiBEcm9wIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gcHl0aG9ueHkubGliIGZyb20gX2RlY2ltYWwgYW1kNjQKKyAgY29uZmlndXJhdGlvbi4KIAogLSBBZGQgbWlzc2luZyBQR0kvUEdPIGNvbmZpZ3VyYXRpb25zIGZvciBweXdsYXVuY2hlci4KIApAQCAtMjk2LDE1ICsyOTAsMTUgQEAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTU2ODogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgInlpZWxkIGZyb20iIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcworLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcwogICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCiAKLS0gSXNzdWUgIzEzMTE5OiBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIGFyZSBub3cgdXNpbmcgIlxyXG4iIG5ld2xpbmUgb24KKy0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCiAgIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgogCiAtIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KIAotLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBfX2ltcG9ydF9fIHRvIGhhdmUgdGhlIHByb3BlciBkZWZhdWx0CistIElzc3VlICMxNTUwODogRml4IHRoZSBkb2NzdHJpbmcgZm9yIGBfX2ltcG9ydF9fKClgIHRvIGhhdmUgdGhlIHByb3BlciBkZWZhdWx0CiAgIHZhbHVlIG9mIDAgZm9yICdsZXZlbCcgYW5kIHRvIG5vdCBtZW50aW9uIG5lZ2F0aXZlIGxldmVscyBzaW5jZSB0aGV5IGFyZSBub3QKICAgc3VwcG9ydGVkLgogCkBAIC0zMTcsMTcgKzMxMSwxNyBAQAogICBieXRlIGNvZGUgZmlsZXMpIGVxdWFsIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgc3lzdGVtcy4KIAogLSBJc3N1ZSAjMTY5MjMzNTogTW92ZSBpbml0aWFsIGV4Y2VwdGlvbiBhcmdzIGFzc2lnbm1lbnQgdG8KLSAgIkJhc2VFeGNlcHRpb24uX19uZXdfXyIgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgorICBgQmFzZUV4Y2VwdGlvbi5fX25ld19fKClgIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KIAotLSBJc3N1ZSAjMTI4MzQ6IEZpeCBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorLSBJc3N1ZSAjMTI4MzQ6IEZpeCBgUHlCdWZmZXJfVG9Db250aWd1b3VzKClgIGZvciBub24tY29udGlndW91cyBhcnJheXMuCiAKLS0gSXNzdWUgIzE1NDU2OiBGaXggY29kZSBfX3NpemVvZl9fIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKKy0gSXNzdWUgIzE1NDU2OiBGaXggY29kZSBgX19zaXplb2ZfXygpYCBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5CiAgIFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KIAotLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlIGxlYWtlZAotICBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIGBQeU1vZHVsZV9DcmVhdGUoKWAgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0byBiZQorICBsZWFrZWQgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KIAogLSBJc3N1ZSAjMTUzNjg6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIGJ5dGVjb2RlIGdlbmVyYXRpb24gdG8gYmUgbm9uLWRldGVybWluaXN0aWMKICAgaGFzIGJlZW4gZml4ZWQuCkBAIC0zMzUsNyArMzI5LDcgQEAKIC0gSXNzdWUgIzE1MjAyOiBDb25zaXN0ZW50bHkgdXNlIHRoZSBuYW1lICJmb2xsb3dfc3ltbGlua3MiIGZvciBuZXcgcGFyYW1ldGVycwogICBpbiBvcyBhbmQgc2h1dGlsIGZ1bmN0aW9ucy4KIAotLSBJc3N1ZSAjMTUzMTQ6IF9fbWFpbl9fLl9fbG9hZGVyX18gaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCistIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCiAgIHN0YXJ0dXAuCiAKIC0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCkBAIC0zNTAsNTcgKzM0NCw2MiBAQAogLSBJc3N1ZSAjMTUxMTA6IEZpeCB0aGUgdHJhY2ViYWNrcyBnZW5lcmF0ZWQgYnkgImltcG9ydCB4eHgiIHRvIG5vdCBzaG93IHRoZQogICBpbXBvcnRsaWIgc3RhY2sgZnJhbWVzLgogCistIElzc3VlICMxNjM2OTogR2xvYmFsIFB5VHlwZU9iamVjdHMgbm90IGluaXRpYWxpemVkIHdpdGggUHlUeXBlX1JlYWR5KC4uLikuCisKIC0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdwogICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgogCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGgsCistIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KKyAgUGF0Y2ggYnkgRmVsaXBlIENydXouCisKKy0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0Y2gsCiAgIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KIAotLSBJc3N1ZSAjMTUyMjk6IEFuIE9TRXJyb3Igc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKKy0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKICAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgogICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCiAKLS0gSXNzdWUgMTUzMDc6IFZpcnR1YWwgZW52aXJvbm1lbnRzIG5vdyB1c2Ugc3ltbGlua3Mgd2l0aCBmcmFtZXdvcmsgYnVpbGRzIG9uCistIElzc3VlICMxNTMwNzogVmlydHVhbCBlbnZpcm9ubWVudHMgbm93IHVzZSBzeW1saW5rcyB3aXRoIGZyYW1ld29yayBidWlsZHMgb24KICAgTWFjIE9TIFgsIGxpa2Ugb3RoZXIgUE9TSVggYnVpbGRzLgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkKKy0gSXNzdWUgIzE0NTkwOiBjb25maWdwYXJzZXIgbm93IGNvcnJlY3RseSBzdHJpcHMgaW5saW5lIGNvbW1lbnRzIHdoZW4gZGVsaW1pdGVyCisgIG9jY3VycyBlYXJsaWVyIHdpdGhvdXQgcHJlY2VkaW5nIHNwYWNlLgorCistIElzc3VlICMxNTQyNDogQWRkIGEgYF9fc2l6ZW9mX18oKWAgaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQogICBMdWR3aWcgSMOkaG5lLgogCiAtIElzc3VlICMxNTU3NjogQWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gYWN0IGFzIGEgcGFja2FnZSdzIF9faW5pdF9fIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTU1MDI6IEhhdmUgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgd29yayBvbiBzeXMubWV0YV9wYXRoIGluc3RlYWQKLSAgb2Ygc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCistIElzc3VlICMxNTUwMjogSGF2ZSBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIHdvcmsgb24gYHN5cy5tZXRhX3BhdGhgCisgIGluc3RlYWQgb2YgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KIAogLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCiAKIC0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKLSAgaW1wb3J0bGliLl9faW1wb3J0X18oKS4KKyAgYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgLgogCiAtIElzc3VlICMxNTU1OTogVG8gYXZvaWQgYSBwcm9ibGVtYXRpYyBmYWlsdXJlIG1vZGUgd2hlbiBwYXNzZWQgdG8gdGhlIGJ5dGVzCi0gIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgX19pbmRleF9fCi0gICh0aGV5IHN0aWxsIGltcGxlbWVudCBfX2ludF9fIGFzIGFwcHJvcHJpYXRlKQorICBjb25zdHJ1Y3Rvciwgb2JqZWN0cyBpbiB0aGUgaXBhZGRyZXNzIG1vZHVsZSBubyBsb25nZXIgaW1wbGVtZW50IGBfX2luZGV4X18oKWAKKyAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IGBfX2ludF9fKClgIGFzIGFwcHJvcHJpYXRlKS4KIAogLSBJc3N1ZSAjMTU1NDY6IEZpeCBoYW5kbGluZyBvZiBwYXRob2xvZ2ljYWwgaW5wdXQgZGF0YSBpbiB0aGUgcGVlaygpIGFuZAogICByZWFkMSgpIG1ldGhvZHMgb2YgdGhlIEJaMkZpbGUsIEd6aXBGaWxlIGFuZCBMWk1BRmlsZSBjbGFzc2VzLgogCi0tIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKLSAgZW5kZWQgd2l0aCAnXCcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIGBvcy5zY2hlZF9nZXRhZmZpbml0eSgpYCBhbmQKKyAgYG9zLnNjaGVkX3NldGFmZmluaXR5KClgIG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUKKyAgQ1BVcyBhIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KIAotLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIG9zLnNjaGVkX2dldGFmZmluaXR5IGFuZAotICBvcy5zY2hlZF9zZXRhZmZpbml0eSBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlIENQVXMgYQotICBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCi0KLS0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGdldG5hbWVpbmZvKCkgLyBnZXRhZGRyaW5mbygpIGVtdWxhdGlvbgotICBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKy0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGBzb2NrZXQuZ2V0bmFtZWluZm8oKWAgLworICBgc29ja2V0LmdldGFkZHJpbmZvKClgIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KIAogLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQotICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KIAogLSBJc3N1ZSAjMTU1MDI6IEJyaW5nIHRoZSBpbXBvcnRsaWIgQUJDcyBpbnRvIGxpbmUgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKLSAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisgIGltcG9ydCBwcm90b2NvbHMgZ2l2ZW4gUEVQIDQyMC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KIAogLSBJc3N1ZSAjMTU0OTk6IExhdW5jaGluZyBhIHdlYmJyb3dzZXIgaW4gVW5peCB1c2VkIHRvIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzLgogICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbiBCYXJrb3Zza3kuCkBAIC00MDgsMzcgKzQwNywzNiBAQAogLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAogICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KIAotLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0CistIElzc3VlICM2MDU2OiBNYWtlIGBtdWx0aXByb2Nlc3NpbmdgIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAogICB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCiAKIC0gSXNzdWUgIzE1MzY0OiBGaXggc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgogCi0tIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxNTQxMzogYG9zLnRpbWVzKClgIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgogCi0tIElzc3VlICMxNTQxMzogb3MudGltZXMoKSBoYWQgZGlzYXBwZWFyZWQgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIHN5cy5nZXRzaXplb2YgdG8KKy0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBgc3lzLmdldHNpemVvZigpYCB0bwogICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLiAgSW5pdGlhbAogICBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCi0gIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZ3VlLgorLSBJc3N1ZSAjMTUyMzI6IFdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgYGVtYWlsLkdlbmVyYXRvcmAgbm93IGNvcnJlY3RseQorICBtYW5nbGVzIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yCisgIGVwaWxvZ3VlLgogCiAtIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5CiAgIFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTM5MjI6IGFyZ3BhcnNlIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKKy0gSXNzdWUgIzEzOTIyOiBgYXJncGFyc2VgIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKICAgdGhlIGZpcnN0IG9uZS4KIAotLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKy0gSXNzdWUgIzEyMzUzOiBgYXJncGFyc2VgIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KIAogLSBJc3N1ZSAjMTAwMTcsIGlzc3VlICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKICAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KIAotLSBJc3N1ZSAjMTUzOTc6IGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhIGEKLSAgbmV3IGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCkgQVBJLgorLSBJc3N1ZSAjMTUzOTc6IGBpbnNwZWN0LmdldG1vZHVsZW5hbWUoKWAgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEKKyAgYSBuZXcgYGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKClgIEFQSS4KIAotLSBJc3N1ZSAjMTQ2MzU6IHRlbG5ldGxpYiB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZSB0bworLSBJc3N1ZSAjMTQ2MzU6IGB0ZWxuZXRsaWJgIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCiAgIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCiAKIC0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcy4KQEAgLTQ1NSw3ICs0NTMsNyBAQAogLSBJc3N1ZSAjMTUyMzM6IFB5dGhvbiBub3cgZ3VhcmFudGVlcyB0aGF0IGNhbGxhYmxlcyByZWdpc3RlcmVkIHdpdGggdGhlIGF0ZXhpdAogICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgogCi0tIElzc3VlICMxNTIzODogc2h1dGlsLmNvcHlzdGF0IG5vdyBjb3BpZXMgTGludXggImV4dGVuZGVkIGF0dHJpYnV0ZXMiLgorLSBJc3N1ZSAjMTUyMzg6IGBzaHV0aWwuY29weXN0YXQoKWAgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCiAKIC0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCiAgIHRoZSBkb2N1bWVudGF0aW9uLgpAQCAtNDY1LDQyICs0NjMsNDIgQEAKIC0gSXNzdWUgIzE1Mjk0OiBGaXggYSByZWdyZXNzaW9uIGluIHBrZ3V0aWwuZXh0ZW5kX3BhdGgoKSdzIGhhbmRsaW5nIG9mIG5lc3RlZAogICBuYW1lc3BhY2UgcGFja2FnZXMuCiAKLS0gSXNzdWUgIzE1MDU2OiBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKSBhbmQgc291cmNlX2Zyb21fY2FjaGUoKSByYWlzZQotICBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBzZXQgdG8gTm9uZS4KKy0gSXNzdWUgIzE1MDU2OiBgaW1wLmNhY2hlX2Zyb21fc291cmNlKClgIGFuZCBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHJhaXNlCisgIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgc2V0IHRvIE5vbmUuCiAKLS0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgaW1wLmZpbmRfbW9kdWxlKCkuCistIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGBpbXAuZmluZF9tb2R1bGUoKWAuCiAKLS0gSXNzdWUgIzU5MzE6IHdzZ2lyZWYgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCistIElzc3VlICM1OTMxOiBgd3NnaXJlZmAgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCiAgIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZSBDUHl0aG9uLCBKeXRob24gaW5zdGVhZCBvZiBnZW5lcmljICJQeXRob24iLgogCiAtIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJtYXhfYnVmZmVyX3NpemUiIG9mIEJ1ZmZlcmVkV3JpdGVyIGFuZAogICBCdWZmZXJlZFJXUGFpciwgZnJvbSB0aGUgaW8gbW9kdWxlLgogCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci4KKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcmAuCiAKIC0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKICAgaXBhZGRyZXNzIG9iamVjdHMuCiAKLS0gSXNzdWUgIzE0ODE0OiBpcGFkZHJlc3MgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgorLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5ldHdvcmsgb2JqZWN0cyBjb3JyZWN0bHkgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4KICAgY29tcGFyZWQgdG8gYXJiaXRyYXJ5IG9iamVjdHMgaW5zdGVhZCBvZiByYWlzaW5nIFR5cGVFcnJvci4KIAogLSBJc3N1ZSAjMTQ5OTA6IENvcnJlY3RseSBmYWlsIHdpdGggU3ludGF4RXJyb3Igb24gaW52YWxpZCBlbmNvZGluZyBkZWNsYXJhdGlvbi4KIAotLSBJc3N1ZSAjMTQ4MTQ6IGlwYWRkcmVzcyBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCistIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2Agbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgogICBjb25zdHJ1Y3RpbmcgaW5zdGFuY2VzIGRpcmVjdGx5IChjaGFuZ2VzIHBlcm1pdHRlZCBkdXJpbmcgYmV0YSBkdWUgdG8KICAgcHJvdmlzaW9uYWwgQVBJIHN0YXR1cykuCiAKLS0gSXNzdWUgIzE1MjQ3OiBGaWxlSU8gbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nCi0gIHRvIGEgZGlyZWN0b3J5LgorLSBJc3N1ZSAjMTUyNDc6IGBpby5GaWxlSU9gIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgorICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KIAogLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgogCi0tIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGltcC5nZXRfdGFnKCkgdXNpbmcgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZy4KKy0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgYGltcC5nZXRfdGFnKClgIHVzaW5nIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYC4KIAotLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gaW1wb3J0bGliLl9faW5pdF9fIGNhbid0IGZpbmQKKy0gSXNzdWUgIzE1MjEwOiBDYXRjaCBLZXlFcnJvciB3aGVuIGBpbXBvcnRsaWIuX19pbml0X18oKWAgY2FuJ3QgZmluZAogICBfZnJvemVuX2ltcG9ydGxpYiBpbiBzeXMubW9kdWxlcywgbm90IEltcG9ydEVycm9yLgogCi0tIElzc3VlICMxNTAzMDogaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlciBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQorLSBJc3N1ZSAjMTUwMzA6IGBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyYCBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQogICBoZWFkZXIgZmllbGQgaW4gLnB5YyBmaWxlcy4KIAogLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveCBmaWxlcyBvbgpAQCAtNTEzLDcgKzUxMSw3IEBACiAgIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsCiAgIG1haWxib3guCiAKLS0gSXNzdWUgMTA5MjQ6IEZpeGVkIGNyeXB0Lm1rc2FsdCgpIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgorLSBJc3N1ZSAjMTA5MjQ6IEZpeGVkIGBjcnlwdC5ta3NhbHQoKWAgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCiAgIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KIAogLSBJc3N1ZSAjMTUxODQ6IEVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdHMgb2YgT1MgWCBjb25maWd1cmF0aW9uIHRhaWxvcmluZyBmb3IKQEAgLTUyNCwxMCArNTIyLDEwIEBACiBDIEFQSQogLS0tLS0KIAotLSBJc3N1ZSAjMTU2MTA6IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KCkgbm93IHVzZXMgYSAnbGV2ZWwnIG9mIDAgaW5zdGVhZCBvZiAtMS4KKy0gSXNzdWUgIzE1NjEwOiBgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKWAgbm93IHVzZXMgYSAnbGV2ZWwnIG9mIDAgaW5zdGVhZCBvZiAtMS4KIAotLSBJc3N1ZXMgIzE1MTY5LCAjMTQ1OTk6IFN0cmlwIG91dCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZgotICBpbXAuc291cmNlX2Zyb21fY2FjaGUoKSB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAorLSBJc3N1ZSAjMTUxNjksIGlzc3VlICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCisgIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgdXNlZCBieSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBhbmQKICAgdXNlZCB0aGUgUHl0aG9uIGNvZGUgaW5zdGVhZC4gTGVhZHMgdG8gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKSB0byBub3QKICAgdHJ5IHRvIGluZmVyIHRoZSBzb3VyY2UgcGF0aCBmcm9tIHRoZSBieXRlY29kZSBwYXRoIGFzCiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGRvZXMuCkBAIC01MzUsMTQgKzUzMywxNyBAQAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1Njc2OiBOb3cgIm1tYXAiIGNoZWNrIGZvciBlbXB0eSBmaWxlcyBiZWZvcmUgZG9pbmcgdGhlCi0gIG9mZnNldCBjaGVjay4gIFBhdGNoIGJ5IFN0ZXZlbiBXaWxsaXMuCi0KLS0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMKLSAgb2YgdHlwZSBjdHlwZXMuY191aW50MzIgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KKy0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMgb2YKKyAgdHlwZSBgY3R5cGVzLmNfdWludDMyYCBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgogCiAtIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCiAKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCisgIGVuZGVkIHdpdGggYGBcYGAuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTU2Miw4ICs1NjMsMTAgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1NDQ0OiBVc2UgcHJvcGVyIHNwZWxsaW5nIGZvciBub24tQVNDSUkgY29udHJpYnV0b3IgbmFtZXMuICBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNTI5NTogUmVvcmdhbml6ZSBhbmQgcmV3cml0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgaW1wb3J0IHN5c3RlbS4KIApAQCAtNTc4LDI1ICs1ODEsMjkgQEAKICAgImNoYW5nZWQiIHNpbmNlIHRoZXkgd2lsbCBubyBsb25nZXIgd29yayB3aXRoIG1vZHVsZXMgZGlyZWN0bHkgaW1wb3J0ZWQgYnkKICAgaW1wb3J0IGl0c2VsZi4KIAotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgotICBleGVjZmlsZSgpLgorLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gYGV4ZWMoKWAgb3IKKyAgYGV4ZWNmaWxlKClgLgogCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCistIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBgZmlsZWNtcC5kaXJjbXAoKWAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAogICBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KIAorLSBJc3N1ZSAjMTU0NDI6IEV4cG9zZSB0aGUgZGVmYXVsdCBsaXN0IG9mIGRpcmVjdG9yaWVzIGlnbm9yZWQgYnkKKyAgYGZpbGVjbXAuZGlyY21wKClgIGFzIGEgbW9kdWxlIGF0dHJpYnV0ZSwgYW5kIGV4cGFuZCB0aGUgbGlzdCB0byBtb3JlIG1vZGVybgorICB2YWx1ZXMuCisKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBfX3NpemVvZl9fIHRlc3RzIGludG8gdGVzdF9zdXBwb3J0LiAgUGF0Y2ggYnkKLSAgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIGBfX3NpemVvZl9fKClgIHRlc3RzIGludG8gdGVzdF9zdXBwb3J0LiAgUGF0Y2gKKyAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZyB0ZXN0cwogICBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCiAKLS0gSXNzdWUgIzE1MTY4OiBNb3ZlIGltcG9ydGxpYi50ZXN0IHRvIHRlc3QudGVzdF9pbXBvcnRsaWIuCistIElzc3VlICMxNTE2ODogTW92ZSBgaW1wb3J0bGliLnRlc3RgIHRvIGB0ZXN0LnRlc3RfaW1wb3J0bGliYC4KIAogLSBJc3N1ZSAjMTUwOTE6IFJlYWN0aXZhdGUgYSB0ZXN0IG9uIFVOSVggd2hpY2ggd2FzIGZhaWxpbmcgdGhhbmtzIHRvIGEKLSAgZm9yZ290dGVuIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGNhbGwuCisgIGZvcmdvdHRlbiBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIGNhbGwuCiAKIC0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KIApAQCAtNjI5LDYgKzYzNiw4IEBACiAKIC0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgogCistIElzc3VlICMxNjI1NjogT1MgWCBpbnN0YWxsZXIgbm93IHNldHMgY29ycmVjdCBwZXJtaXNzaW9ucyBmb3IgZG9jIGRpcmVjdG9yeS4KKwogLSBJc3N1ZSAjMTU0MzE6IEFkZCBfZnJlZXplX2ltcG9ydGxpYiBwcm9qZWN0IHRvIHJlZ2VuZXJhdGUgaW1wb3J0bGliLmggb24KICAgV2luZG93cy4gUGF0Y2ggYnkgS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uLgogCkBAIC02NjQsMTQgKzY3Myw5IEBACiAKIC0gSXNzdWUgIzExNjI2OiBBZGQgX1NpemVUIGZ1bmN0aW9ucyB0byBzdGFibGUgQUJJLgogCi0tIElzc3VlICMxNTE0NjogQWRkIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCiAtIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwogICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgogCi0tIElzc3VlICMxNTA0MjogQWRkIFB5U3RhdGVfQWRkTW9kdWxlIGFuZCBQeVN0YXRlX1JlbW92ZU1vZHVsZS4gQWRkIHZlcnNpb24KLSAgZ3VhcmQgZm9yIFB5X0xJTUlURURfQVBJIGFkZGl0aW9ucy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCiAtIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCiAgIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgogCkBAIC02OTksOSArNzAzLDYgQEAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgotICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTIyODg6IENvbnNpZGVyICcwJyBhbmQgJzAuMCcgYXMgdmFsaWQgaW5pdGlhbHZhbHVlCiAgIGZvciB0a2ludGVyIFNpbXBsZURpYWxvZy4KIApAQCAtNzIwLDE0ICs3MjEsOCBAQAogLSBJc3N1ZSAjMTU1MTQ6IENvcnJlY3QgX19zaXplb2ZfXyBzdXBwb3J0IGZvciBjcHVfc2V0LgogICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTE4NzogQnVnZml4OiByZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRlc3Rfc2h1dGlsIHdhcyBsZWF2aW5nCi0gIGJlaGluZC4KLQogLSBJc3N1ZSAjMTUxNzc6IEFkZGVkIGRpcl9mZCBwYXJhbWV0ZXIgdG8gb3MuZndhbGsoKS4KIAotLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCi0gIG9mIG9zLmxpc3RkaXIoKS4KLQogLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgogICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKICAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KQEAgLTgyNywxMCArODIyLDYgQEAKIC0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCiAgIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KIAotLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKLSAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKLSAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCi0KIC0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCiAgIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCiAgIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KQEAgLTg5OCw5ICs4ODksNiBAQAogCiAtIElzc3VlICMxNDk2OTogQmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbiBjaGFpbmluZyBpbiBjb250ZXh0bGliLkV4aXRTdGFjawogCi0tIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKLSAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxNDk2MzogQ29udmVydCBjb250ZXh0bGliLkV4aXRTdGFjay5fX2V4aXRfXyB0byB1c2UgYW4gaXRlcmF0aXZlCiAgIGFsZ29yaXRobSAoUGF0Y2ggYnkgQWxvbiBIb3JldikKIApAQCAtOTEzLDYgKzkwMSwxMSBAQAogQy1BUEkKIC0tLS0tCiAKKy0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgorICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKIC0gSXNzdWUgIzEzNzgzOiBJbmFkdmVydGVudCBhZGRpdGlvbnMgdG8gdGhlIHB1YmxpYyBDIEFQSSBpbiB0aGUgUEVQIDM4MAogICBpbXBsZW1lbnRhdGlvbiBoYXZlIGVpdGhlciBiZWVuIHJlbW92ZWQgb3IgbWFya2VkIGFzIHByaXZhdGUgaW50ZXJmYWNlcy4KIApAQCAtOTIxLDkgKzkxNCwyNSBAQAogCiAtIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCiAKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgorICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCisgIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KKyAgb2Ygb3MubGlzdGRpcigpLgorCistIElzc3VlICMxNDk4MjogRG9jdW1lbnQgdGhhdCBwa2d1dGlsJ3MgaXRlcmF0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIHRoZQorICBub24tc3RhbmRhcmQgaXRlcl9tb2R1bGVzKCkgbWV0aG9kIHRvIGJlIGRlZmluZWQgYnkgYW4gaW1wb3J0ZXIgKHNvbWV0aGluZworICB0aGUgaW1wb3J0bGliIGltcG9ydGVycyBkbyBub3QgZGVmaW5lKS4KKwogLSBJc3N1ZSAjMTUwODE6IERvY3VtZW50IFB5U3RhdGVfRmluZE1vZHVsZS4KICAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgogCkBAIC05MzIsNiArOTQxLDkgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxNTE4NzogQnVnZml4OiByZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRlc3Rfc2h1dGlsIHdhcyBsZWF2aW5nCisgIGJlaGluZC4KKwogLSBJc3N1ZSAjMTQ3Njk6IHRlc3RfY2FwaSBub3cgaGFzIFNraXBpdGVtVGVzdCwgd2hpY2ggY2xldmVybHkgY2hlY2tzCiAgIGZvciAicGFyaXR5IiBiZXR3ZWVuIFB5QXJnX1BhcnNlVHVwbGUoKSBhbmQgdGhlIFB5dGhvbi9nZXRhcmdzLmMgc3RhdGljCiAgIGZ1bmN0aW9uIHNraXBpdGVtKCkgZm9yIGFsbCBwb3NzaWJsZSAiZm9ybWF0IHVuaXRzIi4KQEAgLTEwMjAsMzQgKzEwMzIsMTggQEAKIC0gSXNzdWUgIzE0NzAwOiBGaXggdHdvIGJyb2tlbiBhbmQgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKICAgaW4gb2xkLXN0eWxlIHN0cmluZyBmb3JtYXR0aW5nLgogCi0tIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAotICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KLSAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KLQogTGlicmFyeQogLS0tLS0tLQogCiAtIElzc3VlICMxNDY5MDogVXNlIG1vbm90b25pYyBjbG9jayBpbnN0ZWFkIG9mIHN5c3RlbSBjbG9jayBpbiB0aGUgc2NoZWQsCiAgIHN1YnByb2Nlc3MgYW5kIHRyYWNlIG1vZHVsZXMuCiAKLS0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAotICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgotCi0tIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KLQogLSBJc3N1ZSAjMTQ0NDM6IFRlbGwgcnBtYnVpbGQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgUHl0aG9uIGluCiAgIGJkaXN0X3JwbS4gSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KIAotLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSWRsZSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCi0gIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTI1MTU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3QgaWYgaXQgZ2V0cyB0byBFT0Ygd2hpbGUgcGFyc2luZwogICBhIE1JTUUgcGFydCB3aXRob3V0IHNlZWluZyB0aGUgY2xvc2luZyBNSU1FIGJvdW5kYXJ5LgogCi0tIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KLSAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKLSAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAogICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cwogICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCkBAIC0xMDgxLDkgKzEwNzcsNiBAQAogLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQogICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KIAotLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQotICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KLQogLSBJc3N1ZSAjMTQwMzY6IEFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIHZhbGlkYXRlIHRoYXQgcG9ydCBpbiB1cmxwYXJzZSBkb2VzCiAgIG5vdCBnbyBpbiBpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCiAKQEAgLTEyMTAsNiArMTIwMywyMSBAQAogLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCiAgIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCiAKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCisgIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCisKKy0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgorCistIElzc3VlICMxNDkyOTogU3RvcCBJRExFIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KKyAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSURMRS4KKyAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKKyAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCkBAIC0xMjI4LDkgKzEyMzYsMTkgQEAKIAogLSBJc3N1ZSAjMTMyMTA6IFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgVlMyMDEwLCBwb3J0ZWQgZnJvbSBWUzIwMDguCiAKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAorICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KKyAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCisgIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgorCiAtIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCiAgIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgogCkBAIC0xMjc5LDkgKzEyOTcsNiBAQAogLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5CiAgIFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCi0gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCi0KIC0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KICAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCiAgIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKQEAgLTE0MzEsMTIgKzE0NDYsNiBAQAogCiAtIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCiAKLS0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCi0KLS0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgotICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KIC0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCiAKIC0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCkBAIC0xNDcyLDYgKzE0ODEsMTUgQEAKIC0gSXNzdWUgIzE0MzU1OiBSZWdydGVzdCBub3cgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IHRlc3QgbG9hZGluZywgYW5kCiAgIHdpbGwgdXNlIGl0IGlmIGEgdGVzdCBmaWxlIGNvbnRhaW5zIG5vIGB0ZXN0X21haW5gIG1ldGhvZC4KIAorSURMRQorLS0tLQorCistIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgorICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgorCistIElzc3VlICMxNDQ5NjogRml4IHdyb25nIG5hbWUgaW4gaWRsZWxpYi90YWJiZWRwYWdlcy5weS4KKyAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgorCiBUb29scyAvIERlbW9zCiAtLS0tLS0tLS0tLS0tCiAKQEAgLTE0ODEsNiArMTQ5OSwxMiBAQAogLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KICAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCiAKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxNDA5ODogTmV3IGZ1bmN0aW9ucyBQeUVycl9HZXRFeGNJbmZvIGFuZCBQeUVycl9TZXRFeGNJbmZvLgorICBQYXRjaCBieSBTdGVmYW4gQmVobmVsLgorCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTUzMiwxNiArMTU1Niw5IEBACiAKIC0gSXNzdWUgIzUxMzY6IGRlcHJlY2F0ZSBvbGQsIHVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyLgogCi0tIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdwotICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCi0gIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgotICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgotCiAtIElzc3VlICMxNDQxNjogc3lzbG9nIG5vdyBkZWZpbmVzIHRoZSBMT0dfT0RFTEFZIGFuZCBMT0dfQVVUSFBSSVYgY29uc3RhbnRzCiAgIGlmIHRoZXkgYXJlIGRlZmluZWQgaW4gPHN5c2xvZy5oPi4KIAotLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgotCiAtIElzc3VlICMxNDI5NTogQWRkIHVuaXR0ZXN0Lm1vY2sKIAogLSBJc3N1ZSAjNzY1MjogQWRkIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgb3B0aW9uIHRvIGNvbmZpZ3VyZSBmb3IgbGlua2luZwpAQCAtMTU2Nyw5ICsxNTg0LDYgQEAKICAgdXAgdGhlIGRlY2ltYWwgbW9kdWxlLiBQZXJmb3JtYW5jZSBnYWlucyBvZiB0aGUgbmV3IEMgaW1wbGVtZW50YXRpb24gYXJlCiAgIGJldHdlZW4gMTB4IGFuZCAxMDB4LCBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uLgogCi0tIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCi0gIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKLQogLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAogICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KIApAQCAtMTYwMSw4ICsxNjE1LDYgQEAKICAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCiAgIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCiAKLS0gSXNzdWUgIzE0MjAwOiBJZGxlIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCi0KIC0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KICAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCiAKQEAgLTE2MTgsOCArMTYzMCw2IEBACiAKIC0gSXNzdWUgIzk4OTcxMjogU3VwcG9ydCB1c2luZyBUayB3aXRob3V0IGEgbWFpbmxvb3AuCiAKLS0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCi0KIC0gSXNzdWUgIzM4MzU6IFJlZnVzZSB0byB1c2UgdW50aHJlYWRlZCBUY2wgaW4gdGhyZWFkZWQgUHl0aG9uLgogCiAtIElzc3VlICMyODQzOiBBZGQgbmV3IFRrIEFQSSB0byBUa2ludGVyLgpAQCAtMTg0OCwxMCArMTg1OCw2IEBACiAgIG9uIFBPU0lYIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5IG1hcHBpbmdzLiAgUGF0Y2ggYnkKICAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgogCi0tIElzc3VlICMxMzQ1MjogUHlVbmljb2RlX0VuY29kZURlY2ltYWwoKSBkb2Vzbid0IHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMKLSAgZGlmZmVyZW50IHRoYW4gInN0cmljdCIgYW55bW9yZS4gVGhlIGNhbGxlciB3YXMgdW5hYmxlIHRvIGNvbXB1dGUgdGhlCi0gIHNpemUgb2YgdGhlIG91dHB1dCBidWZmZXI6IGl0IGRlcGVuZHMgb24gdGhlIGVycm9yIGhhbmRsZXIuCi0KIC0gUEVQIDMxNTUgLyBpc3N1ZSAjMTM0NDg6IFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCiAKIC0gSXNzdWUgIzEzNDM2OiBGaXggYSBib2d1cyBlcnJvciBtZXNzYWdlIHdoZW4gYW4gQVNUIG9iamVjdCB3YXMgcGFzc2VkCkBAIC0xOTQyLDEwICsxOTQ4LDYgQEAKIAogLSBQRVAgMzE1MSAvIGlzc3VlICMxMjU1NTogcmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeS4KIAotLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKLSAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bwotICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCi0KIC0gQWRkIGludGVybmFsIEFQSSBmb3Igc3RhdGljIHN0cmluZ3MgKF9QeV9pZGVudGlmaWVyIGV0IGFsLikuCiAKIC0gSXNzdWUgIzEzMDYzOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9OT19EQVRBIChudW1iZXJlZCAyMzIgYW5kIGRlc2NyaWJlZApAQCAtMjAyOCw3ICsyMDMwLDcgQEAKICAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKICAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgogCi0tIElzc3VlICM5NjExLCAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCistIElzc3VlICM5NjExLCBJc3N1ZSAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCiAKIC0gSXNzdWUgIzk2NDI6IFVuaWZvcm1pemUgdGhlIHRlc3RzIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIG1iY3MgY29kZWMsIGFkZAogICBhIG5ldyBIQVZFX01CQ1MgZGVmaW5lLgpAQCAtMjE5MSwxNyArMjE5MywxMSBAQAogICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgYW5kIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwgInV0Zi04IiwKICAgTlVMTCkuCiAKLS0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCi0KIC0gSXNzdWUgIzEwODI5OiBSZWZhY3RvciBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpLCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdG8gcGFyc2UKICAgdGhlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIDMgc3RlcHMsIGZpeCBjcmFzaHMgb24gaW52YWxpZCBmb3JtYXQgc3RyaW5ncy4KIAogLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgogCi0tIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQotICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgotICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KLQogLSBJc3N1ZSAjMTEyODY6IFJhaXNlIGEgVmFsdWVFcnJvciBmcm9tIGNhbGxpbmcgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIgd2l0aAogICBhIGJ1ZmZlciBzdHJ1Y3QgaGF2aW5nIGEgTlVMTCBkYXRhIHBvaW50ZXIuCiAKQEAgLTIyMTEsOSArMjIwNyw2IEBACiAtIElzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggbm93IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LgogICBQYXRjaCBieSBUb3JzdGVuIEJlY2tlci4KIAotLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgotICBuYXJyb3cgYnVpbGQuCi0KIC0gSXNzdWUgIzExMTY4OiBSZW1vdmUgZmlsZW5hbWUgZGVidWcgdmFyaWFibGUgZnJvbSBQeUV2YWxfRXZhbEZyYW1lRXgoKS4KICAgSXQgZW5jb2RlZCB0aGUgVW5pY29kZSBmaWxlbmFtZSB0byBVVEYtOCwgYnV0IHRoZSBlbmNvZGluZyBmYWlscyBvbgogICB1bmRlY29kYWJsZSBmaWxlbmFtZSAob24gc3Vycm9nYXRlIGNoYXJhY3RlcnMpIHdoaWNoIHJhaXNlcyBhbiB1bmV4cGVjdGVkCkBAIC0yMjU1LDE1ICsyMjQ4LDkgQEAKICAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCiAgIE8obikuCiAKLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KIC0gSXNzdWUgIzExODQxOiBGaXggY29tcGFyaXNvbiBidWcgd2l0aCAncmMnIHZlcnNpb25zIGluIHBhY2thZ2luZy52ZXJzaW9uLgogICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgogCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCiAtIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKICAgb24gV2luZG93cy4gIEFsc28gZml4ZWQgaW4gcGFja2FnaW5nLgogCkBAIC0yMzE5LDkgKzIzMDYsNiBAQAogICBhdXRoZW50aWNhdGluZyAoc2luY2UgdGhlIHJlc3VsdCBtYXkgY2hhbmdlLCBhY2NvcmRpbmcgdG8gUkZDIDQ2NDMpLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzEzOTg5OiBEb2N1bWVudCB0aGF0IEd6aXBGaWxlIGRvZXMgbm90IHN1cHBvcnQgdGV4dCBtb2RlLCBhbmQgZ2l2ZSBhCi0gIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIHdoZW4gb3BlbmVkIHdpdGggYW4gaW52YWxpZCBtb2RlIHN0cmluZy4KLQogLSBJc3N1ZSAjMTM1OTA6IE9uIE9TIFggMTAuNyBhbmQgMTAuNiB3aXRoIFhjb2RlIDQuMiwgYnVpbGRpbmcKICAgRGlzdHV0aWxzLWJhc2VkIHBhY2thZ2VzIHdpdGggQyBleHRlbnNpb24gbW9kdWxlcyBtYXkgZmFpbCBiZWNhdXNlCiAgIEFwcGxlIGhhcyByZW1vdmVkIGdjYy00LjIsIHRoZSB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgcHl0aG9uLm9yZwpAQCAtMjMzOCwxMCArMjMyMiw2IEBACiAtIElzc3VlICMxMzk2MDogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzIHdoZW4KICAgc3RyaWN0PUZhbHNlLgogCi0tIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAotICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKLSAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KIC0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAogICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KIApAQCAtMjM2MywxMSArMjM0Myw2IEBACiAtIElzc3VlICMxMDgxMTogRml4IHJlY3Vyc2l2ZSB1c2FnZSBvZiBjdXJzb3JzLiBJbnN0ZWFkIG9mIGNyYXNoaW5nLAogICByYWlzZSBhIFByb2dyYW1taW5nRXJyb3Igbm93LgogCi0tIElzc3VlICMxMDg4MTogRml4IHRlc3Rfc2l0ZSBmYWlsdXJlIHdpdGggT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgotCi0tIElzc3VlICM5NjQ0Mzc6IE1ha2UgSURMRSBoZWxwIHdpbmRvdyBub24tbW9kYWwuCi0gIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvIGFuZCBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTM3MzQ6IEFkZCBvcy5md2FsaygpLCBhIGRpcmVjdG9yeSB3YWxraW5nIGZ1bmN0aW9uIHlpZWxkaW5nIGZpbGUKICAgZGVzY3JpcHRvcnMuCiAKQEAgLTIzNzcsMTYgKzIzNTIsOCBAQAogCiAtIElzc3VlICMxMTgwNTogcGFja2FnZV9kYXRhIGluIHNldHVwLmNmZyBzaG91bGQgYWxsb3cgbW9yZSB0aGFuIG9uZSB2YWx1ZS4KIAotLSBJc3N1ZSAjMTM5MzM6IElETEUgYXV0by1jb21wbGV0ZSBkaWQgbm90IHdvcmsgd2l0aCBzb21lIGltcG9ydGVkCi0gIG1vZHVsZSwgbGlrZSBoYXNobGliLiAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCi0tIElzc3VlICMxMzkwMTogUHJldmVudCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlcyBvbiBPUyBYIHdpdGggLS1lbmFibGUtc2hhcmVkLgotCiAtIElzc3VlICMxMzY3NjogSGFuZGxlIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCB6ZXJvcyBjb3JyZWN0bHkgaW4gc3FsaXRlMy4KIAotLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KLSAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjODgyODogQWRkIG5ldyBmdW5jdGlvbiBvcy5yZXBsYWNlKCksIGZvciBjcm9zcy1wbGF0Zm9ybSByZW5hbWluZwogICB3aXRoIG92ZXJ3cml0aW5nLgogCkBAIC0yNDA3LDEyICsyMzc0LDYgQEAKICAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQogICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAogCi0tIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQotICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCi0KLS0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKLSAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCi0KIC0gSXNzdWUgIzEzNzcyOiBJbiBvcy5zeW1saW5rKCkgdW5kZXIgV2luZG93cywgZG8gbm90IHRyeSB0byBndWVzcyB0aGUgbGluawogICB0YXJnZXQncyB0eXBlIChmaWxlIG9yIGRpcmVjdG9yeSkuICBUaGUgZGV0ZWN0aW9uIHdhcyBidWdneSBhbmQgbWFkZSB0aGUKICAgY2FsbCBub24tYXRvbWljICh0aGVyZWZvcmUgcHJvbmUgdG8gcmFjZSBjb25kaXRpb25zKS4KQEAgLTI0MzksOSArMjQwMCw2IEBACiAtIElzc3VlICMxMzY0MjogVW5xdW90ZSBiZWZvcmUgYjY0ZW5jb2RpbmcgdXNlcjpwYXNzd29yZCBkdXJpbmcgQmFzaWMKICAgQXV0aGVudGljYXRpb24uIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEpvb25hcyBLdW9yaWxlaHRvLgogCi0tIElzc3VlICMxMzcyNjogRml4IHRoZSBhbWJpZ3VvdXMgLVMgZmxhZyBpbiByZWdydGVzdC4gSXQgaXMgLW8vLS1zbG93IGZvciBzbG93Ci0gIHRlc3RzLgotCiAtIElzc3VlICMxMjM2NDogRml4IGEgaGFuZyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KICAgVGhlIGhhbmcgd291bGQgb2NjdXIgd2hlbiByZXRyaWV2aW5nIHRoZSByZXN1bHQgb2YgYSBzY2hlZHVsZWQgZnV0dXJlIGFmdGVyCiAgIHRoZSBleGVjdXRvciBoYWQgYmVlbiBzaHV0IGRvd24uCkBAIC0yNTI0LDEwICsyNDgyLDYgQEAKIC0gSXNzdWUgIzEzNTkxOiBBIGJ1ZyBpbiBpbXBvcnRsaWIgaGFzIGJlZW4gZml4ZWQgdGhhdCBjYXVzZWQgaW1wb3J0X21vZHVsZQogICB0byBsb2FkIGEgbW9kdWxlIHR3aWNlLgogCi0tIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludCBmaWxlcywKLSAgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzEzNDQ5IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBtZXRob2QgaGFzIGEgbmV3ICJibG9ja2luZyIgcGFyYW1ldGVyIHdoaWNoCiAgIHdoZW4gc2V0IHRvIEZhbHNlIG1ha2VzIHJ1bigpIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQogICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybi4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbMOgLgpAQCAtMjU0NCwxMiArMjQ5OCw5IEBACiAgICdpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyJywgJ25udHBsaWIuTk5UUC54Z3RpdGxlJywgJ25udHBsaWIuTk5UUC54cGF0aCcsCiAgIGFuZCBwcml2YXRlIGF0dHJpYnV0ZXMgb2YgJ3NtdHBkLlNNVFBDaGFubmVsJy4KIAotLSBJc3N1ZSAjNTkwNSwgIzEzNTYwOiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZQorLSBJc3N1ZSAjNTkwNSwgSXNzdWUgIzEzNTYwOiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZQogICBlbmNvZGluZywgaW5zdGVhZCBvZiBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KIAotLSBJc3N1ZSAjODY0MTogVXBkYXRlIElETEUgMyBzeW50YXggY29sb3JpbmcgdG8gcmVjb2duaXplIGIiLi4iIGFuZCBub3QgdSIuLiIuCi0gIFBhdGNoIGJ5IFRhbCBFaW5hdC4KLQogLSBJc3N1ZSAjMTM0NjQ6IEFkZCBhIHJlYWRpbnRvKCkgbWV0aG9kIHRvIGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZS4gIFBhdGNoCiAgIGJ5IEpvbiBLdWhuLgogCkBAIC0yNjYxLDkgKzI2MTIsNiBAQAogLSBJc3N1ZSAjMTA4MTc6IEZpeCB1cmxyZXRyaWV2ZSBmdW5jdGlvbiB0byByYWlzZSBDb250ZW50VG9vU2hvcnRFcnJvciBldmVuCiAgIHdoZW4gcmVwb3J0aG9vayBpcyBOb25lLiBQYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgogCi0tIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCi0gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQogLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KICAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KIApAQCAtMjc2NiwxMCArMjcxNCw2IEBACiAtIElzc3VlICMxMzAzNDogV2hlbiBkZWNvZGluZyBzb21lIFNTTCBjZXJ0aWZpY2F0ZXMsIHRoZSBzdWJqZWN0QWx0TmFtZQogICBleHRlbnNpb24gY291bGQgYmUgdW5yZXBvcnRlZC4KIAotLSBJc3N1ZSAjOTg3MTogUHJldmVudCBJRExFIDMgY3Jhc2ggd2hlbiBnaXZlbiBieXRlIHN0aW5ncwotICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgotICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKLQogLSBJc3N1ZSAjMTIzMDY6IEV4cG9zZSB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSB6bGliIEMgbGlicmFyeSBhcyBhIGNvbnN0YW50LAogICBaTElCX1JVTlRJTUVfVkVSU0lPTiwgaW4gdGhlIHpsaWIgbW9kdWxlLiBQYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCiAKQEAgLTI3OTgsOCArMjc0Miw2IEBACiAKIC0gSXNzdWUgIzEyODc4OiBFeHBvc2UgYSBfX2RpY3RfXyBhdHRyaWJ1dGUgb24gaW8uSU9CYXNlIGFuZCBpdHMgc3ViY2xhc3Nlcy4KIAotLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgotCiAtIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKICAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKICAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KQEAgLTI4NjksOSArMjgxMSw2IEBACiAKIC0gSXNzdWUgIzEwMDg3OiBGaXggdGhlIGh0bWwgb3V0cHV0IGZvcm1hdCBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgogCi0tIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwotICBpbiBvcy5raWxsKCkuCi0KIC0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgogCiAtIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgpAQCAtMjkwMyw3ICsyODQyLDcgQEAKICAgQ29uZGl0aW9uLCBldGMuKSB1c2VkIHRvIGJlIGZhY3RvcnkgZnVuY3Rpb25zIHJldHVybmluZyBpbnN0YW5jZXMgb2YgaGlkZGVuCiAgIGNsYXNzZXMgKF9FdmVudCwgX0NvbmRpdGlvbiwgZXRjLiksIGJlY2F1c2UgKGlmIEd1aWRvIHJlY2FsbHMgY29ycmVjdGx5KSB0aGlzCiAgIGNvZGUgcHJlLWRhdGVzIHRoZSBhYmlsaXR5IHRvIHN1YmNsYXNzIGV4dGVuc2lvbiB0eXBlcy4gIEl0IGlzIG5vdyBwb3NzaWJsZQotICB0byBpbmhlcml0IGZyb20gdGhlc2UgY2xhc3NlcyB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlIHByaXZhdGUKKyAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMsIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQogICB1bmRlcnNjb3JlZCBuYW1lcyBsaWtlIG11bHRpcHJvY2Vzc2luZyBkaWQuCiAKIC0gSXNzdWUgIzk3MjM6IEFkZCBzaGxleC5xdW90ZSBmdW5jdGlvbnMsIHRvIGVzY2FwZSBmaWxlbmFtZXMgYW5kIGNvbW1hbmQKQEAgLTI5MTcsMTQgKzI4NTYsOCBAQAogLSBJc3N1ZSAjMTI2MDc6IEluIHN1YnByb2Nlc3MsIGZpeCBpc3N1ZSB3aGVyZSBpZiBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVyciBpcwogICBnaXZlbiBhcyBhIGxvdyBmZCwgaXQgZ2V0cyBvdmVyd3JpdHRlbi4KIAotLSBJc3N1ZSAjMTI1OTA6IElETEUgZWRpdG9yIHdpbmRvdyBub3cgYWx3YXlzIGRpc3BsYXlzIHRoZSBmaXJzdCBsaW5lCi0gIHdoZW4gb3BlbmluZyBhIGxvbmcgZmlsZS4gIFdpdGggVGsgOC41LCB0aGUgZmlyc3QgbGluZSB3YXMgaGlkZGVuLgotCiAtIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCi0gIENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyLgotCi0tIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKLSAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorICBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyLgogCiAtIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KIApAQCAtMzE3OSw3ICszMTEyLDcgQEAKIC0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgogICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCiAKLS0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhJbgorLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peGluCiAgIGNsYXNzIGZvciBjbGVhbnVwLiBJbml0aWFsIFBhdGNoIGJ5IEp1c3RpbiBXYXJrZW50aW4uCiAKIC0gSXNzdWUgIzEyMDQ1OiBBdm9pZCBkdXBsaWNhdGUgZXhlY3V0aW9uIG9mIGNvbW1hbmQgaW4KQEAgLTMyMjQsOSArMzE1Nyw2IEBACiAgIHBhc3NpbmcgYSBgYGNvbnRleHRgYCBhcmd1bWVudCBwb2ludGluZyB0byBhbiBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZS4KICAgUGF0Y2ggYnkgS2FzdW4gSGVyYXRoLgogCi0tIElzc3VlICMxMTA4ODogZG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBGNSB0byBydW4gYSBzY3JpcHQgaW4gSURMRSBvbiBNYWNPU1gKLSAgd2l0aCBUayA4LjUuCi0KIC0gSXNzdWUgIzk1MTY6IElzc3VlICM5NTE2OiBhdm9pZCBlcnJvcnMgaW4gc3lzY29uZmlnIHdoZW4gTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiAgIGlzIHNldCBpbiBzaGVsbC4KIApAQCAtMzI0NiwxMCArMzE3Niw2IEBACiAtIElzc3VlICM5OTcxOiBXcml0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRSZWFkZXIucmVhZGludG8oKS4KICAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KIAotLSBJc3N1ZSAjMTAyODogVGsgcmV0dXJucyBpbnZhbGlkIFVuaWNvZGUgbnVsbCBpbiAlQTogVW5pY29kZURlY29kZUVycm9yLgotICBXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkCi0gIElETEUgdG8gZXhpdC4gIENvbnZlcnRlZCB0byB2YWxpZCBVbmljb2RlIG51bGwgaW4gUHl0aG9uQ21kKCkuCi0KIC0gSXNzdWUgIzExNzk5OiB1cmxsaWIucmVxdWVzdCBBdXRoZW50aWNhdGlvbiBIYW5kbGVycyB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvcgogICB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4gUGF0Y2ggY29udHJpYnV0ZWQKICAgYnkgWXV2YWwgR3JlZW5maWVsZC4KQEAgLTM0ODYsMTIgKzM0MTIsMTIgQEAKIAogLSBJc3N1ZSAjNzYzOTogRml4IHNob3J0IGZpbGUgbmFtZSBnZW5lcmF0aW9uIGluIGJkaXN0X21zaQogCi0tIElzc3VlICMxMTY1OTogRml4IFJlc291cmNlV2FybmluZyBpbiB0ZXN0X3N1YnByb2Nlc3MgaW50cm9kdWNlZCBieSAjMTE0NTkuCi0gIFBhdGNoIGJ5IEJlbiBIYXlkZW4uCi0KIC0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5CiAgIGNvbmN1cnJlbnQuZnV0dXJlcy4KIAorLSBJc3N1ZSAjNTg0NTogQXV0b21hdGljYWxseSByZWFkIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGNvbXBsZXRpb24KKyAgaW4gaW50ZXJhY3RpdmUgbW9kZS4KKwogLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCiAgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQogICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCkBAIC0zNTI2LDcgKzM0NTIsNyBAQAogCiAtIElzc3VlICMxMTEyNzogUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gcGlja2xlIGEgc29ja2V0IG9iamVjdC4KIAotLSBJc3N1ZSAjMTE1NjM6IENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCistIElzc3VlICMxMTU2MzogYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgogICBjbGFzcyB3aGljaCBoZWxwcyBpbiBjbG9zaW5nIG9mIHNvY2tldHMgYWZ0ZXIgY29ubmVjdGlvbiBpcyBvdmVyLiBQYXRjaAogICBjb250cmlidXRpb25zIGJ5IEplZmYgTWNOZWlsIGFuZCBOYWRlZW0gVmF3ZGEuCiAKQEAgLTM1NDEsOCArMzQ2Nyw2IEBACiAtIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCiAgIHNldHVwIGFuZCB0ZWFyZG93bi4KIAotLSBJc3N1ZSAjMTE1Nzc6IGZpeCBSZXNvdXJjZVdhcm5pbmcgdHJpZ2dlcmVkIGJ5IGltcHJvdmVkIGJpbmhleCB0ZXN0IGNvdmVyYWdlCi0KIC0gSXNzdWUgIzExMjQzOiBmaXggdGhlIHBhcmFtZXRlciBxdWVyeWluZyBtZXRob2RzIG9mIE1lc3NhZ2UgdG8gd29yayBpZgogICB0aGUgaGVhZGVycyBjb250YWluIHVuLWVuY29kZWQgbm9uLUFTQ0lJIGRhdGEuCiAKQEAgLTM1NzUsOSArMzQ5OSw2IEBACiAtIElzc3VlICMxMTU1NDogRml4ZWQgc3VwcG9ydCBmb3IgSmFwYW5lc2UgY29kZWNzOyBwcmV2aW91c2x5IHRoZSBib2R5IG91dHB1dAogICBlbmNvZGluZyB3YXMgbm90IGRvbmUgaWYgZXVjLWpwIG9yIHNoaWZ0LWppcyB3YXMgc3BlY2lmaWVkIGFzIHRoZSBjaGFyc2V0LgogCi0tIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KLSAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgotCiAtIElzc3VlICMxMTQwNzogYFRlc3RDYXNlLnJ1bmAgcmV0dXJucyB0aGUgcmVzdWx0IG9iamVjdCB1c2VkIG9yIGNyZWF0ZWQuCiAgIENvbnRyaWJ1dGVkIGJ5IEphbmF0aGFuIEhhcnRsZXkuCiAKQEAgLTM3MDAsMTEgKzM2MjEsNiBAQAogCiAtIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KIAotLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCi0KLS0gSXNzdWUgIzkzNDM6IERvY3VtZW50IHRoYXQgYXJncGFyc2UgcGFyZW50IHBhcnNlcnMgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZQotICB0aGVpciBjaGlsZHJlbi4KLQogLSBJc3N1ZSAjOTAyNjogRml4IG9yZGVyIG9mIGFyZ3BhcnNlIHN1Yi1jb21tYW5kcyBpbiBoZWxwIG1lc3NhZ2VzLgogCiAtIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgpAQCAtMzc1NywxMCArMzY3Myw2MSBAQAogCiAtIElzc3VlICMxMTQ5NTogT1NGIHN1cHBvcnQgaXMgZWxpbWluYXRlZC4gSXQgd2FzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMi4KIAotCiBJRExFCiAtLS0tCiAKKy0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93CisgIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKKyAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCisgIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCisKKy0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgcHl0aG9uIC1tIGlkbGVsaWIKKworLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncworICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCisKKy0gSXNzdWUgIzE0MjAwOiBJRExFIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCisKKy0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCisKKy0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KKyAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKKyAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCisKKy0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCisgIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAorICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQorICBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjODY0MTogVXBkYXRlIElETEUgMyBzeW50YXggY29sb3JpbmcgdG8gcmVjb2duaXplIGIiLi4iIGFuZCBub3QgdSIuLiIuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMTMyOTY6IEZpeCBJRExFIHRvIGNsZWFyIGNvbXBpbGUgX19mdXR1cmVfXyBmbGFncyBvbiBzaGVsbCByZXN0YXJ0LgorICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCisKKy0gSXNzdWUgIzk4NzE6IFByZXZlbnQgSURMRSAzIGNyYXNoIHdoZW4gZ2l2ZW4gYnl0ZSBzdGluZ3MKKyAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCisKKy0gSXNzdWUgIzEyNjM2OiBJRExFIHJlYWRzIHRoZSBjb2RpbmcgY29va2llIHdoZW4gZXhlY3V0aW5nIGEgUHl0aG9uIHNjcmlwdC4KKworLSBJc3N1ZSAjMTI1NDA6IFByZXZlbnQgem9tYmllIElETEUgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgZHVlIHRvIGNoYW5nZXMKKyAgaW4gb3Mua2lsbCgpLgorCistIElzc3VlICMxMjU5MDogSURMRSBlZGl0b3Igd2luZG93IG5vdyBhbHdheXMgZGlzcGxheXMgdGhlIGZpcnN0IGxpbmUKKyAgd2hlbiBvcGVuaW5nIGEgbG9uZyBmaWxlLiAgV2l0aCBUayA4LjUsIHRoZSBmaXJzdCBsaW5lIHdhcyBoaWRkZW4uCisKKy0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAorICB3aXRoIFRrIDguNS4KKworLSBJc3N1ZSAjMTAyODogVGsgcmV0dXJucyBpbnZhbGlkIFVuaWNvZGUgbnVsbCBpbiAlQTogVW5pY29kZURlY29kZUVycm9yLgorICBXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkCisgIElETEUgdG8gZXhpdC4gIENvbnZlcnRlZCB0byB2YWxpZCBVbmljb2RlIG51bGwgaW4gUHl0aG9uQ21kKCkuCisKIC0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5CiAgIGZpbGUgaW4gYSBwYWNrYWdlLgogCkBAIC0zNzkwLDYgKzM3NTcsMTAgQEAKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNjg0NzogRml4ZWQgaW1wcm9wZXIgdXNlIG9mIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgpIGluCisgIG5vbi1weWRlYnVnIGJ1aWxkcy4gU2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBub3cgY29tcGlsZSBjbGVhbmx5IHdoZW4KKyAgYXNzZXJ0KClzIGFyZSBlbmFibGVkIGluIHN0YW5kYXJkIGJ1aWxkcyAoLURERUJVRyBmbGFnKS4KKwogLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgogICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCiAKQEAgLTM4NTIsNiArMzgyMywzMyBAQAogVGVzdHMKIC0tLS0tCiAKKy0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgorICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCisKKy0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQorICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzEwODgxOiBGaXggdGVzdF9zaXRlIGZhaWx1cmUgd2l0aCBPUyBYIGZyYW1ld29yayBidWlsZHMuCisKKy0gSXNzdWUgIzEzOTAxOiBQcmV2ZW50IHRlc3RfZGlzdHV0aWxzIGZhaWx1cmVzIG9uIE9TIFggd2l0aCAtLWVuYWJsZS1zaGFyZWQuCisKKy0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCisgIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KKworLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cworICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KKworLSBJc3N1ZSAjMTM3MjY6IEZpeCB0aGUgYW1iaWd1b3VzIC1TIGZsYWcgaW4gcmVncnRlc3QuIEl0IGlzIC1vLy0tc2xvdyBmb3Igc2xvdworICB0ZXN0cy4KKworLSBJc3N1ZSAjMTE2NTk6IEZpeCBSZXNvdXJjZVdhcm5pbmcgaW4gdGVzdF9zdWJwcm9jZXNzIGludHJvZHVjZWQgYnkgIzExNDU5LgorICBQYXRjaCBieSBCZW4gSGF5ZGVuLgorCistIElzc3VlICMxMTU3NzogZml4IFJlc291cmNlV2FybmluZyB0cmlnZ2VyZWQgYnkgaW1wcm92ZWQgYmluaGV4IHRlc3QgY292ZXJhZ2UKKworLSBJc3N1ZSAjMTE1MDk6IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBmaWxlaW5wdXQuCisgIFBhdGNoIGJ5IERlbnZlciBDb25leWJlYXJlIGF0IFB5Q29uIDIwMTEgU3ByaW50cy4KKwogLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0CiAKIC0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCkBAIC00MDMwLDcgKzQwMjgsNyBAQAogLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKICAgQXJsZW4KIAotLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCistIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzLnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKICAgZmFsc2UgcG9zaXRpdmUgaWYgdGhlIGxhc3QgZGlyZWN0b3J5IGluIHRoZSBwYXRoIGlzIGluYWNjZXNzaWJsZS4KIAogLSBJc3N1ZSAjMTEyMjM6IEZpeCB0ZXN0X3RocmVhZHNpZ25hbHMgdG8gZmFpbCwgbm90IGhhbmcsIHdoZW4gdGhlCkBAIC00MDU0LDYgKzQwNTIsMjMgQEAKIEMtQVBJCiAtLS0tLQogCistIElzc3VlICMxMzQ1MjogUHlVbmljb2RlX0VuY29kZURlY2ltYWwoKSBkb2Vzbid0IHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMKKyAgZGlmZmVyZW50IHRoYW4gInN0cmljdCIgYW55bW9yZS4gVGhlIGNhbGxlciB3YXMgdW5hYmxlIHRvIGNvbXB1dGUgdGhlCisgIHNpemUgb2YgdGhlIG91dHB1dCBidWZmZXI6IGl0IGRlcGVuZHMgb24gdGhlIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCisgIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KKyAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgorCistIElzc3VlICMxMDgzMTogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBzdXBwb3J0cyAlbGksICVsbGkgYW5kICV6aSBmb3JtYXRzLgorCistIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQorICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgorICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KKworLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgorICBuYXJyb3cgYnVpbGQuCisKIC0gQWRkIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0IGFuZCBQeU9iamVjdF9HZW5lcmlTZXREaWN0LiBUaGV5IGFyZSBnZW5lcmljCiAgIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3Igb2YgQwogICB0eXBlcy4KQEAgLTQwNzksNiArNDA5NCwyNCBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxMzk4OTogRG9jdW1lbnQgdGhhdCBHemlwRmlsZSBkb2VzIG5vdCBzdXBwb3J0IHRleHQgbW9kZSwgYW5kIGdpdmUgYQorICBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSB3aGVuIG9wZW5lZCB3aXRoIGFuIGludmFsaWQgbW9kZSBzdHJpbmcuCisKKy0gSXNzdWUgIzEzOTIxOiBVbmRvY3VtZW50IGFuZCBjbGVhbiB1cCBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGUsCisgIHdoaWNoIGlzIG9ic29sZXRlIGluIFB5dGhvbiAzLnguIEl0J3Mgbm93IGFsaWFzZWQgdG8gc3RyIGZvcgorICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCisgIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KKworLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCisKKy0gSXNzdWUgIzkzNDM6IERvY3VtZW50IHRoYXQgYXJncGFyc2UgcGFyZW50IHBhcnNlcnMgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZQorICB0aGVpciBjaGlsZHJlbi4KKworLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKKyAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KKwogLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCiAgIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KIApAQCAtOTY1Miw3ICs5Njg1LDcgQEAKIAogLSBJc3N1ZSAjMTIxMDogRml4ZWQgaW1hcGxpYiBhbmQgaXRzIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAgCistIElzc3VlICM0MjMzOiBDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgCiAgIG1ldGhvZCBvbiBmaWxlIG9iamVjdHMgd2l0aCBjbG9zZWZkPUZhbHNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHN0aWxsCiAgIGtlcHQgb3BlbiBidXQgdGhlIGZpbGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGNsb3NlZCBmaWxlLiBUaGUgYGBGaWxlSU9gYAogICBvYmplY3QgYWxzbyBnb3QgYSBuZXcgcmVhZG9ubHkgYXR0cmlidXRlIGBgY2xvc2VmZGBgLgpAQCAtOTc5NiwxMyArOTgyOSwxMyBAQAogICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0aW9uLgogCiAtIElzc3VlICMzNjY4OiBGaXggYSBtZW1vcnkgbGVhayB3aXRoIHRoZSAicyoiIGFyZ3VtZW50IHBhcnNlciBpbgotICBQeUFyZ19QYXJzZVR1cGxlIGFuZCBmcmllbmRzLCB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBhcmd1bWVudCBmb3IgInMqIiAKKyAgUHlBcmdfUGFyc2VUdXBsZSBhbmQgZnJpZW5kcywgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgYXJndW1lbnQgZm9yICJzKiIKICAgd2FzIGNvcnJlY3RseSBwYXJzZWQgYnV0IHBhcnNpbmcgb2Ygc3Vic2VxdWVudCBhcmd1bWVudHMgZmFpbGVkLgogCiAtIElzc3VlICMzNjExOiBBbiBleGNlcHRpb24gX19jb250ZXh0X18gY291bGQgYmUgY2xlYXJlZCBpbiBhIGNvbXBsZXggcGF0dGVybgogICBpbnZvbHZpbmcgYSBfX2RlbF9fIG1ldGhvZCByZS1yYWlzaW5nIGFuIGV4Y2VwdGlvbi4KIAotLSBJc3N1ZSAjMjUzNDogc3BlZWQgdXAgaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCkgYnkgNTAtNzAlLCBzbyBhcyB0byAKKy0gSXNzdWUgIzI1MzQ6IHNwZWVkIHVwIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpIGJ5IDUwLTcwJSwgc28gYXMgdG8KICAgbWF0Y2ggUHl0aG9uIDIuNSBzcGVlZCBkZXNwaXRlIHRoZSBfX2luc3RhbmNlY2hlY2tfXyAvIF9fc3ViY2xhc3NjaGVja19fCiAgIG1lY2hhbmlzbS4gSW4gdGhlIHByb2Nlc3MsIGZpeCBhIGJ1ZyB3aGVyZSBpc2luc3RhbmNlKCkgYW5kIGlzc3ViY2xhc3MoKSwKICAgd2hlbiBnaXZlbiBhIHR1cGxlIG9mIGNsYXNzZXMgYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZXJlIGxvb2tpbmcgdXAKQEAgLTk4ODAsNyArOTkxMyw3IEBACiAKIC0gVGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvciB0aGUgY2FtZWxDYXNlIHRocmVhZGluZyBBUEkgbmFtZXMgd2VyZSByZW1vdmVkLgogCi0tIElzc3VlICMzMTEwOiBtdWx0aXByb2Nlc3NpbmcgZmFpbHMgdG8gY29tcGllbCBvbiBzb2xhcmlzIDEwIGR1ZSB0byBtaXNzaW5nIAorLSBJc3N1ZSAjMzExMDogbXVsdGlwcm9jZXNzaW5nIGZhaWxzIHRvIGNvbXBpZWwgb24gc29sYXJpcyAxMCBkdWUgdG8gbWlzc2luZwogICBTRU1fVkFMVUVfTUFYLgogCiBFeHRlbnNpb24gTW9kdWxlcwpAQCAtMjE1MTIsNyArMjE1NDUsNyBAQAogCUJvdyB0byBmb250LWxvY2sgYXQgdGhlIGVuZCBvZiB0aGUgZG9jc3RyaW5nLCBzaW5jZSBpdCB0aHJvd3Mgc3R1ZmYKIAlvZmYuCiAKLQlNYWtlIHN1cmUgdGhlIHBhdGggcGFyYW1ldGVyIHRvIHJlYWRtb2R1bGUoKSBpcyBhIGxpc3QgYmVmb3JlIGFkZGluZyBpdAorCU1ha2Ugc3VyZSB0aGUgcGF0aCBwYXJhbXRlciB0byByZWFkbW9kdWxlKCkgaXMgYSBsaXN0IGJlZm9yZSBhZGRpbmcgaXQKIAl3aXRoIHN5cy5wYXRoLCBvciB0aGUgYWRkaXRpb24gY291bGQgZmFpbC4KIAogCkBAIC0yMTU5Myw3ICsyMTYyNiw3IEBACiAKIC0gSW1wcm92ZWQgQmVPUyBzdXBwb3J0LgogCi0tIFN1cHBvcnQgZHluYW1pYyBsb2FkaW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMgb24gTmV0QlNEIHBsYXRmb3JtcyB0aGF0IAorLSBTdXBwb3J0IGR5bmFtaWMgbG9hZGluZyBvZiBzaGFyZWQgbGlicmFyaWVzIG9uIE5ldEJTRCBwbGF0Zm9ybXMgdGhhdAogdXNlIEVMRiAoaS5lLiwgTUlQUyBhbmQgQWxwaGEgc3lzdGVtcykuCiAKIENvbmZpZ3VyYXRpb24vYnVpbGQgY2hhbmdlcwpAQCAtMjE4MTAsNyArMjE4NDMsNyBAQAogaGlnaGVyLWxldmVsIGNsYXNzZXMgaW4gY29kZS5weS4KIAogLSB0dXJ0bGUucHkgaXMgYSBuZXcgbW9kdWxlIGZvciBzaW1wbGUgdHVydGxlIGdyYXBoaWNzLiAgSSdtIHN0aWxsCi13b3JraW5nIG9uIGl0OyBsZXQgbWUga25vdyBpZiB5b3UgdXNlIHRoaXMgdG8gdGVhY2ggUHl0aG9uIHRvIGNoaWxkcmVuIAord29ya2luZyBvbiBpdDsgbGV0IG1lIGtub3cgaWYgeW91IHVzZSB0aGlzIHRvIHRlYWNoIFB5dGhvbiB0byBjaGlsZHJlbgogb3Igb3RoZXIgbm92aWNlcyB3aXRob3V0IHByaW9yIHByb2dyYW1taW5nIGV4cGVyaWVuY2UuCiAKIE9ic29sZXRlZCBsaWJyYXJ5IG1vZHVsZXMKQEAgLTIxOTQyLDcgKzIxOTc1LDcgQEAKIENoYW5nZXMgdG8gdG9vbHMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLSBOZXcsIGltcHJvdmVkIHZlcnNpb24gb2YgQmFycnkgV2Fyc2F3J3MgTWlzYy9weXRob24tbW9kZS5lbCAoZWRpdGluZyAKKy0gTmV3LCBpbXByb3ZlZCB2ZXJzaW9uIG9mIEJhcnJ5IFdhcnNhdydzIE1pc2MvcHl0aG9uLW1vZGUuZWwgKGVkaXRpbmcKIHN1cHBvcnQgZm9yIEVtYWNzKS4KIAogLSB0YWJuYW5ueS5weTogYWRkZWQgYSAtcSAoJ3F1aWV0Jykgb3B0aW9uIHRvIHRhYm5hbm55LCB3aGljaCBjYXVzZXMKQEAgLTIyMjE3LDcgKzIyMjUwLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tCiAKIC0gSW5zdGFsbCB6bGliLmRsbCBpbiB0aGUgRExMcyBkaXJlY3RvcnkgaW5zdGVhZCBvZiBpbiB0aGUgd2luMzIKLXN5c3RlbSBkaXJlY3RvcnksIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgCitzeXN0ZW0gZGlyZWN0b3J5LCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlCiB0aGVpciBvd24gemxpYi5kbGwuCiAKIFRlc3QgU3VpdGUKQEAgLTIyMjk3LDcgKzIyMzMwLDcgQEAKIHNvIHRoYXQgYSBzeW1saW5rIHRvIGEgc3ltbGluayBjYW4gd29yay4KIAogLSBBZGRlZCBhIGhhY2sgc28gdGhhdCB3aGVuIHlvdSB0eXBlICdxdWl0JyBvciAnZXhpdCcgYXQgdGhlCi1pbnRlcnByZXRlciwgeW91IGdldCBhIGZyaWVuZGx5IGV4cGxhbmF0aW9uIG9mIGhvdyB0byBwcmVzcyBDdHJsLUQgKG9yIAoraW50ZXJwcmV0ZXIsIHlvdSBnZXQgYSBmcmllbmRseSBleHBsYW5hdGlvbiBvZiBob3cgdG8gcHJlc3MgQ3RybC1EIChvcgogQ3RybC1aKSB0byBleGl0LgogCiAtIE5ldyBhbmQgaW1wcm92ZWQgTWlzYy9weXRob24tbW9kZS5lbCAoUHl0aG9uIG1vZGUgZm9yIEVtYWNzKS4KQEAgLTIyNDcwLDEzICsyMjUwMywxMyBAQAogcmFuZ2UuICBBbHNvLCByYW5kaW50KGEsIGIpIGlzIG5vdyByZWRlZmluZWQgYXMgcmFuZHJhbmdlKGEsIGIrMSksCiBhZGRpbmcgZXh0cmEgcmFuZ2UgYW5kIHR5cGUgY2hlY2tpbmcgdG8gaXRzIGFyZ3VtZW50cyEKIAotLSBBZGQgc29tZSBzZW1pLXRocmVhZC1zYWZldHkgdG8gcmFuZG9tLmdhdXNzKCkgKGl0IHVzZWQgdG8gYmUgYWJsZSB0byAKKy0gQWRkIHNvbWUgc2VtaS10aHJlYWQtc2FmZXR5IHRvIHJhbmRvbS5nYXVzcygpIChpdCB1c2VkIHRvIGJlIGFibGUgdG8KIGNyYXNoIHdoZW4gaW52b2tlZCBmcm9tIHNlcGFyYXRlIHRocmVhZHM7IG5vdyB0aGUgd29yc3QgaXQgY2FuIGRvIGlzCiBnaXZlIGEgZHVwbGljYXRlIHJlc3VsdCBvY2Nhc2lvbmFsbHkpLgogCiAtIFNvbWUgcmVzdHJ1Y3R1cmluZyBhbmQgZ2VuZXJhbGl6YXRpb24gZG9uZSB0byBjbWQucHkuCiAKLS0gTWFqb3IgdXBncmFkZSB0byBDb25maWdQYXJzZXIucHk7IGNvbnZlcnRlZCB0byB1c2luZyAncmUnLCBhZGRlZCBuZXcgCistIE1ham9yIHVwZ3JhZGUgdG8gQ29uZmlnUGFyc2VyLnB5OyBjb252ZXJ0ZWQgdG8gdXNpbmcgJ3JlJywgYWRkZWQgbmV3CiBleGNlcHRpb25zLCBzdXBwb3J0IHVuZGVyc2NvcmUgaW4gc2VjdGlvbiBoZWFkZXIgYW5kIG9wdGlvbiBuYW1lLiAgTm8KIGxvbmdlciBhZGQgJ25hbWUnIG9wdGlvbiB0byBldmVyeSBzZWN0aW9uOyBpbnN0ZWFkLCBhZGQgJ19fbmFtZV9fJy4KIApAQCAtMjI2NzMsNyArMjI3MDYsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogLSBUaGUgcmVnaXN0cnkga2V5IHVzZWQgaXMgbm93ICIxLjUiIGluc3RlYWQgb2YgIjEuNS54IiAtLSBzbyBmdXR1cmUKLXZlcnNpb25zIG9mIDEuNSBhbmQgTWFyayBIYW1tb25kJ3Mgd2luMzJhbGwgaW5zdGFsbGVyIGRvbid0IG5lZWQgdG8gYmUgCit2ZXJzaW9ucyBvZiAxLjUgYW5kIE1hcmsgSGFtbW9uZCdzIHdpbjMyYWxsIGluc3RhbGxlciBkb24ndCBuZWVkIHRvIGJlCiByZXN5bmNocm9uaXplZC4KIAogV2luZG93cyBUb29scwpAQCAtMjI3NDAsNyArMjI3NzMsNyBAQAogZHluYW1pY2FsbHkgYWRkIG9uZSBvciBtYW55IGVudHJpZXMgdG8gdGhlIHRhYmxlIG9mIGJ1aWx0LWluIG1vZHVsZXMuCiAKIC0gTmV3IG1hY3JvIFB5X0luaXRNb2R1bGUzKG5hbWUsIG1ldGhvZHMsIGRvYykgd2hpY2ggY2FsbHMKLVB5X0luaXRNb2R1bGU0KCkgd2l0aCBhcHByb3ByaWF0ZSBhcmd1bWVudHMuICAoVGhlIC00IHZhcmlhbnQgcmVxdWlyZXMgCitQeV9Jbml0TW9kdWxlNCgpIHdpdGggYXBwcm9wcmlhdGUgYXJndW1lbnRzLiAgKFRoZSAtNCB2YXJpYW50IHJlcXVpcmVzCiB5b3UgdG8gcGFzcyBhbiBvYnNjdXJlIHZlcnNpb24gbnVtYmVyIGNvbnN0YW50IHdoaWNoIGlzIGFsd2F5cyB0aGUgc2FtZS4pCiAKIC0gTmV3IEFQSXMgUHlTeXNfV3JpdGVTdGRvdXQoKSBhbmQgUHlTeXNfV3JpdGVTdGRlcnIoKSB0byB3cml0ZSB0bwpAQCAtMjI4MTIsNyArMjI4NDUsNyBAQAogU3ludGF4IGNoYW5nZQogLS0tLS0tLS0tLS0tLQogCi0tIFRoZSByYWlzZSBzdGF0ZW1lbnQgY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnRzLCB0byByZS1yYWlzZSAKKy0gVGhlIHJhaXNlIHN0YXRlbWVudCBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudHMsIHRvIHJlLXJhaXNlCiBhIHByZXZpb3VzbHkgc2V0IGV4Y2VwdGlvbi4gIFRoaXMgc2hvdWxkIGJlIHVzZWQgYWZ0ZXIgY2F0Y2hpbmcgYW4KIGV4Y2VwdGlvbiB3aXRoIGFuIGV4Y2VwdCBjbGF1c2Ugb25seSwgZWl0aGVyIGluIHRoZSBleGNlcHQgY2xhdXNlIG9yCiBsYXRlciBpbiB0aGUgc2FtZSBmdW5jdGlvbi4KQEAgLTIyODcxLDcgKzIyOTA0LDcgQEAKIAogCURlbW8vdGtpbnRlci9ndWlkby9wYWludC5weSAtLSBEYXZlIE1pdGNoZWxsCiAJRGVtby9zb2NrZXRzL3VuaXhzZXJ2ZXIucHkgLS0gUGlldCB2YW4gT29zdHJ1bQotCQorCiAKIC0gTXVjaCBiZXR0ZXIgZnJlZXplIHN1cHBvcnQuICBUaGUgZnJlZXplIHNjcmlwdCBjYW4gbm93IGZyZWV6ZQogaGllcmFyY2hpY2FsIG1vZHVsZSBuYW1lcyAod2l0aCBhIGNvcnJlc3BvbmRpbmcgY2hhbmdlIHRvIGltcG9ydC5jKSwKQEAgLTIzMDEwLDcgKzIzMDQzLDcgQEAKIC0gTmV3IGNvbW1hbmQgc3VwcG9ydGVkIGJ5IHRoZSBmdHBsaWIgbW9kdWxlOiBybWQoKTsgYWxzbyBmaXhlZCBzb21lCiBtaW5vciBidWdzLgogCi0tIFRoZSBwcm9maWxlIG1vZHVsZSBub3cgdXNlcyBhIGRpZmZlcmVudCB0aW1lciBmdW5jdGlvbiBieSBkZWZhdWx0IC0tIAorLSBUaGUgcHJvZmlsZSBtb2R1bGUgbm93IHVzZXMgYSBkaWZmZXJlbnQgdGltZXIgZnVuY3Rpb24gYnkgZGVmYXVsdCAtLQogdGltZS5jbG9jaygpIGlzIGdlbmVyYWxseSBiZXR0ZXIgdGhhbiBvcy50aW1lcygpLiAgVGhpcyBtYWtlcyBpdCB3b3JrCiBiZXR0ZXIgb24gV2luZG93cyBOVCwgdG9vLgogCkBAIC0yMzA0OSwxNCArMjMwODIsMTQgQEAKIC0gSW4gdGhlIG11bHRpZmlsZSBtb2R1bGUsIHN1cHBvcnQgdGhlIG9wdGlvbmFsIHNlY29uZCBwYXJhbWV0ZXIgdG8KIHNlZWsoKSB3aGVuIHBvc3NpYmxlLgogCi0tIFNldmVyYWwgZml4ZXMgdG8gdGhlIGdvcGhlcmxpYiBtb2R1bGUgYnkgTGFycyBNYXJpdXMgR2Fyc2hvbC4gIEFsc28sIAorLSBTZXZlcmFsIGZpeGVzIHRvIHRoZSBnb3BoZXJsaWIgbW9kdWxlIGJ5IExhcnMgTWFyaXVzIEdhcnNob2wuICBBbHNvLAogdXJscGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIEdvcGhlciBVUkxzIHdpdGggcXVlcnkgc3RyaW5ncy4KIAogLSBGaXhlZCBhIHRpbnkgYnVnIGluIGZvcm1hdF9leGNlcHRpb24oKSBpbiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4KIEFsc28gcmV3cml0ZSB0Yl9saW5lbm8oKSB0byBiZSBjb21wYXRpYmxlIHdpdGggSlB5dGhvbiAoYW5kIG5vdAogZGlzdHVyYiB0aGUgY3VycmVudCBleGNlcHRpb24hKTsgYnkgSmltIEh1Z3VuaW4uCiAKLS0gVGhlIGh0dHBsaWIgbW9kdWxlIGlzIG1vcmUgcm9idXN0IHdoZW4gc2VydmVycyBzZW5kIGEgc2hvcnQgcmVzcG9uc2UgCistIFRoZSBodHRwbGliIG1vZHVsZSBpcyBtb3JlIHJvYnVzdCB3aGVuIHNlcnZlcnMgc2VuZCBhIHNob3J0IHJlc3BvbnNlCiAtLSBjb3VydGVzeSBUaW0gTydNYWxsZXkuCiAKIFRraW50ZXIgYW5kIGZyaWVuZHMKQEAgLTIzMDcxLDcgKzIzMTA0LDcgQEAKIG5vIGxvbmdlciB1c2UgdGhlIGRlZmF1bHQgcm9vdC4KIAogLSBUaGUgaW50ZXJmYWNlcyBmb3IgdGhlIGJpbmQqKCkgYW5kIHVuYmluZCgpIHdpZGdldCBtZXRob2RzIGhhdmUgYmVlbgotcmVkZXNpZ25lZDsgdGhlIGJpbmQqKCkgbWV0aG9kcyBub3cgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBUY2wgY29tbWFuZCAKK3JlZGVzaWduZWQ7IHRoZSBiaW5kKigpIG1ldGhvZHMgbm93IHJldHVybiB0aGUgbmFtZSBvZiB0aGUgVGNsIGNvbW1hbmQKIGNyZWF0ZWQgZm9yIHRoZSBjYWxsYmFjaywgYW5kIHRoaXMgY2FuIGJlIHBhc3NlZCBhcyBhIG9wdGlvbmFsCiBhcmd1bWVudCB0byB1bmJpbmQoKSBpbiBvcmRlciB0byBkZWxldGUgdGhlIGNvbW1hbmQgKG5vcm1hbGx5LCBzdWNoCiBjb21tYW5kcyBhcmUgYXV0b21hdGljYWxseSB1bmJvdW5kIHdoZW4gdGhlIHdpZGdldCBpcyBkZXN0cm95ZWQsIGJ1dApAQCAtMjMxMDcsNyArMjMxNDAsNyBAQAogZGljdGlvbmFyeSB0byBhbGxvdyByZWN1cnNpdmUgY29udGFpbmVyIHR5cGVzIHRvIGRldGVjdCByZWN1cnNpb24gaW4KIHRoZWlyIHJlcHIoKSwgc3RyKCkgYW5kIHByaW50IGltcGxlbWVudGF0aW9ucy4KIAotLSBOZXcgZnVuY3Rpb24gUHlPYmplY3RfTm90KHgpIGNhbGN1bGF0ZXMgKG5vdCB4KSBhY2NvcmRpbmcgdG8gUHl0aG9uJ3MgCistIE5ldyBmdW5jdGlvbiBQeU9iamVjdF9Ob3QoeCkgY2FsY3VsYXRlcyAobm90IHgpIGFjY29yZGluZyB0byBQeXRob24ncwogc3RhbmRhcmQgcnVsZXMgKGJhc2ljYWxseSwgaXQgbmVnYXRlcyB0aGUgb3V0Y29tZSBQeU9iamVjdF9Jc1RydWUoeCkuCiAKIC0gTmV3IGZ1bmN0aW9uIF9QeU1vZHVsZV9DbGVhcigpLCB3aGljaCBjbGVhcnMgYSBtb2R1bGUncyBkaWN0aW9uYXJ5CkBAIC0yMzI2OCw3ICsyMzMwMSw3IEBACiBpbnN0YW5jZXMgd2l0aCBjb3B5LnB5LiAgVGhlIGNQaWNrbGUuYyBjaGFuZ2VzIGFuZCBzb21lIHBpY2tsZS5weQogY2hhbmdlcyBhcmUgY291cnRlc3kgSmltIEZ1bHRvbi4KIAotLSBMb2NhbGUgc3VwcG9ydCBpbiBoZSAicmUiIChQZXJsIHJlZ3VsYXIgZXhwcmVzc2lvbnMpIG1vZHVsZS4gIFVzZSAKKy0gTG9jYWxlIHN1cHBvcnQgaW4gaGUgInJlIiAoUGVybCByZWd1bGFyIGV4cHJlc3Npb25zKSBtb2R1bGUuICBVc2UKIHRoZSBmbGFnIHJlLkwgKG9yIHJlLkxPQ0FMRSkgdG8gZW5hYmxlIGxvY2FsZS1zcGVjaWZpYyBtYXRjaGluZwogcnVsZXMgZm9yIFx3IGFuZCBcYi4gIFRoZSBpbi1saW5lIHN5bnRheCBmb3IgdGhpcyBmbGFnIGlzICg/TCkuCiAKQEAgLTIzMzM0LDcgKzIzMzY3LDcgQEAKIAogLSBTb21lIGltcHJvdmVtZW50cyB0byB0aGUgX3RraW50ZXIgYnVpbGQgbGluZSBzdWdnZXN0ZWQgYnkgQ2FzZSBSb29sZS4KIAotLSBBIGZ1bGwgc3VpdGUgb2YgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMgZm9yIE5ldEJTRCAxLngsIHN1Ym1pdHRlZCBieSAKKy0gQSBmdWxsIHN1aXRlIG9mIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzIGZvciBOZXRCU0QgMS54LCBzdWJtaXR0ZWQgYnkKIEFuZGVycyBBbmRlcnNlbi4KIAogLSBOZXcgU29sYXJpcyBzcGVjaWZpYyBoZWFkZXIgU1RST1BUUy5weS4KQEAgLTIzNDA0LDcgKzIzNDM3LDcgQEAKIGlmIHRoZXJlIGFyZSBsb3RzIG9mIGR1cGxpY2F0ZXMsIGFuZCBvdGhlcndpc2UgYXQgbGVhc3QgYXMgZ29vZC4KIAogLSBBZGRlZCAidXVlIiBhcyBhbiBhbGlhcyBmb3IgInV1ZW5jb2RlIiB0byBtaW1ldG9vbHMucHkuICAoSG0sIHRoZQotdXVkZWNvZGUgYnVnIHdoZXJlIGl0IGNvbXBsYWludHMgYWJvdXQgdHJhaWxpbmcgZ2FyYmFnZSBpcyBzdGlsbCB0aGVyZSAKK3V1ZGVjb2RlIGJ1ZyB3aGVyZSBpdCBjb21wbGFpbnRzIGFib3V0IHRyYWlsaW5nIGdhcmJhZ2UgaXMgc3RpbGwgdGhlcmUKIDotKCApLgogCiAtIHBpY2tsZS5weSByZXF1aXJlcyBpbnRlZ2VycyBpbiB0ZXh0IG1vZGUgdG8gYmUgaW4gZGVjaW1hbCBub3RhdGlvbgpAQCAtMjM1NjQsNyArMjM1OTcsNyBAQAogLSBUaGUgd2FybmluZyBhYm91dCBhIHRocmVhZCBzdGlsbCBoYXZpbmcgYSBmcmFtZSBub3cgb25seSBoYXBwZW5zIGluCiB2ZXJib3NlIG1vZGUuCiAKLS0gQ2hhbmdlIHRoZSBzaWduYWwgZmluYWxpemF0aW9uIHNvIHRoYXQgaXQgYWxzbyByZXNldHMgdGhlIHNpZ25hbAorLSBDaGFuZ2UgdGhlIHNpZ25hbCBmaW5pYWxpemF0aW9uIHNvIHRoYXQgaXQgYWxzbyByZXNldHMgdGhlIHNpZ25hbAogaGFuZGxlcnMuICBBZnRlciB0aGlzIGhhcyBiZWVuIGNhbGxlZCwgb3VyIHNpZ25hbCBoYW5kbGVycyBhcmUgbm8KIGxvbmdlciBhY3RpdmUhCiAKQEAgLTI0MTgwLDcgKzI0MjEzLDcgQEAKIFRoZSBQeXRob24vQyBBUEkgZm9yIGZyYW1lcyBpcyBjaGFuZ2VkICh5b3Ugc2hvdWxkbid0IGJlIHVzaW5nIHRoaXMKIGFueXdheSkuCiAKLS0gU2lnbmlmaWNhbnQgc3BlZWR1cCBieSBpbmxpbmluZyBzb21lIGNvbW1vbiBvcGNvZGVzIGZvciBjb21tb24gb3BlcmFuZCAKKy0gU2lnbmlmaWNhbnQgc3BlZWR1cCBieSBpbmxpbmluZyBzb21lIGNvbW1vbiBvcGNvZGVzIGZvciBjb21tb24gb3BlcmFuZAogdHlwZXMgKGUuZy4gIGkraSwgaS1pLCBhbmQgbGlzdFtpXSkuICBGcmVkcmlrIEx1bmRoLgogCiAtIFNtYWxsIHNwZWVkdXAgYnkgcmVvcmRlcmluZyB0aGUgbWV0aG9kIHRhYmxlcyBvZiBzb21lIGNvbW1vbgpAQCAtMjQyMDYsMzQgKzI0MjM5LDM0IEBACiBwcmludGluZyB0aGUgZG9jdW1lbnRhdGlvbiBub3cga2lsbHMgZmV3ZXIgdHJlZXMgLS0gdGhlIG1hcmdpbnMgaGF2ZQogYmVlbiByZWR1Y2VkLgogCi0tIEkgaGF2ZSBzdGFydGVkIGRvY3VtZW50aW5nIHRoZSBQeXRob24vQyBBUEkuIFVuZm9ydHVuYXRlbHkgdGhpcyBwcm9qZWN0IAotaGFzbid0IGJlZW4gY29tcGxldGVkIHlldC4gIEl0IHdpbGwgYmUgY29tcGxldGUgYmVmb3JlIHRoZSBmaW5hbCByZWxlYXNlIG9mIAotUHl0aG9uIDEuNSwgdGhvdWdoLiAgQXQgdGhlIG1vbWVudCwgaXQncyBiZXR0ZXIgdG8gcmVhZCB0aGUgTGFUZVggc291cmNlIAorLSBJIGhhdmUgc3RhcnRlZCBkb2N1bWVudGluZyB0aGUgUHl0aG9uL0MgQVBJLiBVbmZvcnR1bmF0ZWx5IHRoaXMgcHJvamVjdAoraGFzbid0IGJlZW4gY29tcGxldGVkIHlldC4gIEl0IHdpbGwgYmUgY29tcGxldGUgYmVmb3JlIHRoZSBmaW5hbCByZWxlYXNlIG9mCitQeXRob24gMS41LCB0aG91Z2guICBBdCB0aGUgbW9tZW50LCBpdCdzIGJldHRlciB0byByZWFkIHRoZSBMYVRlWCBzb3VyY2UKIHRoYW4gdG8gYXR0ZW1wdCB0byBydW4gaXQgdGhyb3VnaCBMYVRlWCBhbmQgcHJpbnQgdGhlIHJlc3VsdGluZyBkdmkgZmlsZS4KIAotLSBUaGUgcG9zaXggbW9kdWxlIChhbmQgaGVuY2Ugb3MucHkpIG5vdyBoYXMgZG9jIHN0cmluZ3MhICBUaGFua3MgdG8gTmVpbCAKLVNjaGVtZW5hdWVyLiAgSSByZWNlaXZlZCBhIGZldyBvdGhlciBjb250cmlidXRpb25zIG9mIGRvYyBzdHJpbmdzLiAgSW4gbW9zdCAKKy0gVGhlIHBvc2l4IG1vZHVsZSAoYW5kIGhlbmNlIG9zLnB5KSBub3cgaGFzIGRvYyBzdHJpbmdzISAgVGhhbmtzIHRvIE5laWwKK1NjaGVtZW5hdWVyLiAgSSByZWNlaXZlZCBhIGZldyBvdGhlciBjb250cmlidXRpb25zIG9mIGRvYyBzdHJpbmdzLiAgSW4gbW9zdAogb3RoZXIgcGxhY2VzLCBkb2Mgc3RyaW5ncyBhcmUgc3RpbGwgd2lzaGZ1bCB0aGlua2luZy4uLgogCiAKIExhbmd1YWdlIGNoYW5nZXMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLSBQcml2YXRlIHZhcmlhYmxlcyB3aXRoIGxlYWRpbmcgZG91YmxlIHVuZGVyc2NvcmUgYXJlIG5vdyBhIHBlcm1hbmVudCAKLWZlYXR1cmUgb2YgdGhlIGxhbmd1YWdlLiAgKFRoZXNlIHdlcmUgZXhwZXJpbWVudGFsIGluIHJlbGVhc2UgMS40LiAgSSBoYXZlIAotZmF2b3JhYmxlIGV4cGVyaWVuY2UgdXNpbmcgdGhlbTsgSSBjYW4ndCBsYWJlbCB0aGVtICJleHBlcmltZW50YWwiIAorLSBQcml2YXRlIHZhcmlhYmxlcyB3aXRoIGxlYWRpbmcgZG91YmxlIHVuZGVyc2NvcmUgYXJlIG5vdyBhIHBlcm1hbmVudAorZmVhdHVyZSBvZiB0aGUgbGFuZ3VhZ2UuICAoVGhlc2Ugd2VyZSBleHBlcmltZW50YWwgaW4gcmVsZWFzZSAxLjQuICBJIGhhdmUKK2Zhdm9yYWJsZSBleHBlcmllbmNlIHVzaW5nIHRoZW07IEkgY2FuJ3QgbGFiZWwgdGhlbSAiZXhwZXJpbWVudGFsIgogZm9yZXZlci4pCiAKLS0gVGhlcmUncyBuZXcgc3RyaW5nIGxpdGVyYWwgc3ludGF4IGZvciAicmF3IHN0cmluZ3MiLiAgUHJlZml4aW5nIGEgc3RyaW5nIAotbGl0ZXJhbCB3aXRoIHRoZSBsZXR0ZXIgciAob3IgUikgZGlzYWJsZXMgYWxsIGVzY2FwZSBwcm9jZXNzaW5nIGluIHRoZSAKLXN0cmluZzsgZm9yIGV4YW1wbGUsIHInXG4nIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgY29uc2lzdGluZyBvZiBhIAotYmFja3NsYXNoIGZvbGxvd2VkIGJ5IHRoZSBsZXR0ZXIgbi4gIFRoaXMgY29tYmluZXMgd2l0aCBhbGwgZm9ybXMgb2Ygc3RyaW5nIAotcXVvdGVzOyBpdCBpcyBhY3R1YWxseSB1c2VmdWwgZm9yIHRyaXBsZSBxdW90ZWQgZG9jIHN0cmluZ3Mgd2hpY2ggbWlnaHQgCi1jb250YWluIHJlZmVyZW5jZXMgdG8gXG4gb3IgXHQuICBBbiBlbWJlZGRlZCBxdW90ZSBwcmVmaXhlZCB3aXRoIGEgCi1iYWNrc2xhc2ggZG9lcyBub3QgdGVybWluYXRlIHRoZSBzdHJpbmcsIGJ1dCB0aGUgYmFja3NsYXNoIGlzIHN0aWxsIAotaW5jbHVkZWQgaW4gdGhlIHN0cmluZzsgZm9yIGV4YW1wbGUsIHInXCcnIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgCi1jb25zaXN0aW5nIG9mIGEgYmFja3NsYXNoIGFuZCBhIHF1b3RlLiAgKFJhdyBzdHJpbmdzIGFyZSBhbHNvIAotYWZmZWN0aW9uYXRlbHkga25vd24gYXMgUm9iaW4gc3RyaW5ncywgYWZ0ZXIgdGhlaXIgaW52ZW50b3IsIFJvYmluIAorLSBUaGVyZSdzIG5ldyBzdHJpbmcgbGl0ZXJhbCBzeW50YXggZm9yICJyYXcgc3RyaW5ncyIuICBQcmVmaXhpbmcgYSBzdHJpbmcKK2xpdGVyYWwgd2l0aCB0aGUgbGV0dGVyIHIgKG9yIFIpIGRpc2FibGVzIGFsbCBlc2NhcGUgcHJvY2Vzc2luZyBpbiB0aGUKK3N0cmluZzsgZm9yIGV4YW1wbGUsIHInXG4nIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcgY29uc2lzdGluZyBvZiBhCitiYWNrc2xhc2ggZm9sbG93ZWQgYnkgdGhlIGxldHRlciBuLiAgVGhpcyBjb21iaW5lcyB3aXRoIGFsbCBmb3JtcyBvZiBzdHJpbmcKK3F1b3RlczsgaXQgaXMgYWN0dWFsbHkgdXNlZnVsIGZvciB0cmlwbGUgcXVvdGVkIGRvYyBzdHJpbmdzIHdoaWNoIG1pZ2h0Citjb250YWluIHJlZmVyZW5jZXMgdG8gXG4gb3IgXHQuICBBbiBlbWJlZGRlZCBxdW90ZSBwcmVmaXhlZCB3aXRoIGEKK2JhY2tzbGFzaCBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIHN0cmluZywgYnV0IHRoZSBiYWNrc2xhc2ggaXMgc3RpbGwKK2luY2x1ZGVkIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCByJ1wnJyBpcyBhIHR3by1jaGFyYWN0ZXIgc3RyaW5nCitjb25zaXN0aW5nIG9mIGEgYmFja3NsYXNoIGFuZCBhIHF1b3RlLiAgKFJhdyBzdHJpbmdzIGFyZSBhbHNvCithZmZlY3Rpb25hdGVseSBrbm93biBhcyBSb2JpbiBzdHJpbmdzLCBhZnRlciB0aGVpciBpbnZlbnRvciwgUm9iaW4KIEZyaWVkcmljaC4pCiAKIC0gVGhlcmUncyBhIHNpbXBsZSBhc3NlcnQgc3RhdGVtZW50LCBhbmQgYSBuZXcgZXhjZXB0aW9uCkBAIC0yNDI2MiwxMCArMjQyOTUsMTAgQEAKIC0gVGhlIG9ic29sZXRlIGV4Y2VwdGlvbiBDb25mbGljdEVycm9yIChwcmVzdW1hYmx5IHVzZWQgYnkgdGhlIGxvbmcKIG9ic29sZXRlIGFjY2VzcyBzdGF0ZW1lbnQpIGhhcyBiZWVuIGRlbGV0ZWQuCiAKLS0gVGhlcmUncyBhIG5ldyBmdW5jdGlvbiBzeXMuZXhjX2luZm8oKSB3aGljaCByZXR1cm5zIHRoZSB0dXBsZSAKKy0gVGhlcmUncyBhIG5ldyBmdW5jdGlvbiBzeXMuZXhjX2luZm8oKSB3aGljaCByZXR1cm5zIHRoZSB0dXBsZQogKHN5cy5leGNfdHlwZSwgc3lzLmV4Y192YWx1ZSwgc3lzLmV4Y190cmFjZWJhY2spIGluIGEgdGhyZWFkLXNhZmUgd2F5LgogCi0tIFRoZXJlJ3MgYSBuZXcgdmFyaWFibGUgc3lzLmV4ZWN1dGFibGUsIHBvaW50aW5nIHRvIHRoZSBleGVjdXRhYmxlIGZpbGUgCistIFRoZXJlJ3MgYSBuZXcgdmFyaWFibGUgc3lzLmV4ZWN1dGFibGUsIHBvaW50aW5nIHRvIHRoZSBleGVjdXRhYmxlIGZpbGUKIGZvciB0aGUgUHl0aG9uIGludGVycHJldGVyLgogCiAtIFRoZSBzb3J0KCkgbWV0aG9kcyBmb3IgbGlzdHMgbm8gbG9uZ2VyIHVzZXMgdGhlIEMgbGlicmFyeSBxc29ydCgpOyBJCkBAIC0yNDI5MSwxMSArMjQzMjQsMTEgQEAKIHJldHVybmluZyBmcm9tIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uLgogCiAtIFRoZXJlJ3MgYSBuZXcgImJ1ZmZlciIgaW50ZXJmYWNlLiAgQ2VydGFpbiBvYmplY3RzIChlLmcuIHN0cmluZ3MgYW5kCi1hcnJheXMpIG5vdyBzdXBwb3J0IHRoZSAiYnVmZmVyIiBwcm90b2NvbC4gIEJ1ZmZlciBvYmplY3RzIGFyZSBhY2NlcHRhYmxlIAotd2hlbmV2ZXIgZm9ybWVybHkgYSBzdHJpbmcgd2FzIHJlcXVpcmVkIGZvciBhIHdyaXRlIG9wZXJhdGlvbjsgbXV0YWJsZSAKK2FycmF5cykgbm93IHN1cHBvcnQgdGhlICJidWZmZXIiIHByb3RvY29sLiAgQnVmZmVyIG9iamVjdHMgYXJlIGFjY2VwdGFibGUKK3doZW5ldmVyIGZvcm1lcmx5IGEgc3RyaW5nIHdhcyByZXF1aXJlZCBmb3IgYSB3cml0ZSBvcGVyYXRpb247IG11dGFibGUKIGJ1ZmZlciBvYmplY3RzIGNhbiBiZSB0aGUgdGFyZ2V0IG9mIGEgcmVhZCBvcGVyYXRpb24gdXNpbmcgdGhlIGNhbGwKLWYucmVhZGludG8oYnVmZmVyKS4gIEEgY29vbCBmZWF0dXJlIGlzIHRoYXQgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIG5vdyAKLWFsc28gd29yayBvbiBhcnJheSBvYmplY3RzLiAgQ29udHJpYnV0aW9uIGJ5IEphY2sgSmFuc2VuLiAgKE5lZWRzIAorZi5yZWFkaW50byhidWZmZXIpLiAgQSBjb29sIGZlYXR1cmUgaXMgdGhhdCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgbm93CithbHNvIHdvcmsgb24gYXJyYXkgb2JqZWN0cy4gIENvbnRyaWJ1dGlvbiBieSBKYWNrIEphbnNlbi4gIChOZWVkcwogZG9jdW1lbnRhdGlvbi4pCiAKIC0gU3RyaW5nIGludGVybmluZzogZGljdGlvbmFyeSBsb29rdXBzIGFyZSBmYXN0ZXIgd2hlbiB0aGUgbG9va3VwCkBAIC0yNDU4Nyw3ICsyNDYyMCw3IEBACiBvZiBtZXNzYWdlIHNlcXVlbmNlIHNwZWNpZmllcnMgd2l0aG91dCBpbnZva2luZyBhIHN1YnByb2Nlc3MuICBBbHNvCiBhZGRlZCBhIGNyZWF0ZW1lc3NhZ2UoKSBtZXRob2QgYnkgTGFycyBXaXJ6ZW5pdXMuCiAKLS0gVGhlIFN0cmluZ0lPLlN0cmluZ0lPIGNsYXNzIG5vdyBzdXBwb3J0cyByZWFkbGluZShuYnl0ZXMpLiAgKExhcnMgCistIFRoZSBTdHJpbmdJTy5TdHJpbmdJTyBjbGFzcyBub3cgc3VwcG9ydHMgcmVhZGxpbmUobmJ5dGVzKS4gIChMYXJzCiBXaXJ6ZW5pdXMuKSAgKE9mIGNvdXJzZSwgeW91IHNob3VsZCBiZSB1c2luZyBjU3RyaW5nSU8gZm9yIHBlcmZvcm1hbmNlLikKIAogLSBVc2VyRGljdC5weSBzdXBwb3J0cyB0aGUgbmV3IGRpY3Rpb25hcnkgbWV0aG9kcyBhcyB3ZWxsLgpAQCAtMjQ2MzUsOCArMjQ2NjgsOCBAQAogLSBWYXJpb3VzIHNtYWxsIGZpeGVzIHRvIHRoZSBubnRwbGliLnB5IG1vZHVsZSB0aGF0IEkgY2FuJ3QgYm90aGVyIHRvCiBkb2N1bWVudCBpbiBkZXRhaWwuCiAKLS0gU2pvZXJkIE11bGxlbmRlcidzIG1pbWlmeS5weSBtb2R1bGUgbm93IHN1cHBvcnRzIGJhc2U2NCBlbmNvZGluZyBhbmQgCi1pbmNsdWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBmdW5ueSBlbmNvZGluZyB5b3Ugc29tZXRpbWVzIHNlZSBpbiBtYWlsIAorLSBTam9lcmQgTXVsbGVuZGVyJ3MgbWltaWZ5LnB5IG1vZHVsZSBub3cgc3VwcG9ydHMgYmFzZTY0IGVuY29kaW5nIGFuZAoraW5jbHVkZXMgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgZnVubnkgZW5jb2RpbmcgeW91IHNvbWV0aW1lcyBzZWUgaW4gbWFpbAogaGVhZGVycy4gIEl0IGlzIG5vdyBkb2N1bWVudGVkLgogCiAtIG1haWxib3gucHk6IEFkZGVkIEJhYnlsTWFpbGJveC4gIEltcHJvdmVkIHRoZSB3YXkgdGhlIG1haWxib3ggaXMKQEAgLTI0OTg3LDIzICsyNTAyMCwyMyBAQAogTlQgKHRoZSBvbGQgVkMrKyA0LjIgTWFrZWZpbGUgaXMgYWxzbyBzdGlsbCBzdXBwb3J0ZWQsIGJ1dCB3aWxsCiBldmVudHVhbGx5IGJlIHdpdGhkcmF3biBkdWUgdG8gaXRzIGJ1bGtpbmVzcykuCiAKLS0gU2VlIHRoZSBub3RlIG9uIHRoZSBuZXcgbW9kdWxlIHNlYXJjaCBwYXRoIGluIHRoZSAiTWlzY2VsbGFuZW91cyIgc2VjdGlvbiAKKy0gU2VlIHRoZSBub3RlIG9uIHRoZSBuZXcgbW9kdWxlIHNlYXJjaCBwYXRoIGluIHRoZSAiTWlzY2VsbGFuZW91cyIgc2VjdGlvbgogYWJvdmUuCiAKIC0gU3VwcG9ydCBmb3IgV2luMzJzICh0aGUgMzItYml0IFdpbmRvd3MgQVBJIHVuZGVyIFdpbmRvd3MgMy4xKSBpcwogYmFzaWNhbGx5IHdpdGhkcmF3bi4gIElmIGl0IHN0aWxsIHdvcmtzIGZvciB5b3UsIHlvdSdyZSBsdWNreS4KIAotLSBUaGVyZSdzIGEgbmV3IGV4dGVuc2lvbiBtb2R1bGUsIG1zdmNydC5jLCB3aGljaCBwcm92aWRlcyB2YXJpb3VzIAotbG93LWxldmVsIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiB0aGUgTWljcm9zb2Z0IFZpc3VhbCBDKysgUnVudGltZSBMaWJyYXJ5LiAgCi1UaGVzZSBpbmNsdWRlIGxvY2tpbmcoKSwgc2V0bW9kZSgpLCBnZXRfb3NmaGFuZGxlKCksIHNldF9vc2ZoYW5kbGUoKSwgYW5kIAorLSBUaGVyZSdzIGEgbmV3IGV4dGVuc2lvbiBtb2R1bGUsIG1zdmNydC5jLCB3aGljaCBwcm92aWRlcyB2YXJpb3VzCitsb3ctbGV2ZWwgb3BlcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyBSdW50aW1lIExpYnJhcnkuCitUaGVzZSBpbmNsdWRlIGxvY2tpbmcoKSwgc2V0bW9kZSgpLCBnZXRfb3NmaGFuZGxlKCksIHNldF9vc2ZoYW5kbGUoKSwgYW5kCiBjb25zb2xlIEkvTyBmdW5jdGlvbnMgbGlrZSBrYmhpdCgpLCBnZXRjaCgpIGFuZCBwdXRjaCgpLgogCiAtIFRoZSAtdSBvcHRpb24gbm90IG9ubHkgc2V0cyB0aGUgc3RhbmRhcmQgSS9PIHN0cmVhbXMgdG8gdW5idWZmZXJlZAogc3RhdHVzLCBidXQgYWxzbyBzZXRzIHRoZW0gaW4gYmluYXJ5IG1vZGUuICAoVGhpcyBjYW4gYWxzbyBiZSBkb25lCiB1c2luZyBtc3ZjcnQuc2V0bW9kZSgpLCBieSB0aGUgd2F5LikKIAotLSBUaGUsIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlIGRpcmVjdG9yeSAKLXdoZXJlIFB5dGhvbiBpcyBpbnN0YWxsZWQsIG9yIHRvIHRoZSB0b3Agb2YgdGhlIHNvdXJjZSB0cmVlLCBpZiBpdCB3YXMgcnVuIAorLSBUaGUsIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlIGRpcmVjdG9yeQord2hlcmUgUHl0aG9uIGlzIGluc3RhbGxlZCwgb3IgdG8gdGhlIHRvcCBvZiB0aGUgc291cmNlIHRyZWUsIGlmIGl0IHdhcyBydW4KIGZyb20gdGhlcmUuCiAKIC0gVGhlIHZhcmlvdXMgb3MucGF0aCBtb2R1bGVzIChwb3NpeHBhdGgsIG50cGF0aCwgbWFjcGF0aCkgbm93IHN1cHBvcnQKQEAgLTI1MDExLDcgKzI1MDQ0LDcgQEAKIG9zLnBhdGguam9pbihhLCBiLCBjKSBpcyB0aGUgc2FtZSBhcyBvcy5wYXRoLmpvaW4oYSwgb3MucGF0aC5qb2luKGIsCiBjKSkuCiAKLS0gVGhlIG50cGF0aCBtb2R1bGUgKG5vcm1hbGx5IHVzZWQgYXMgb3MucGF0aCkgc3VwcG9ydHMgfiB0byAkSE9NRSAKKy0gVGhlIG50cGF0aCBtb2R1bGUgKG5vcm1hbGx5IHVzZWQgYXMgb3MucGF0aCkgc3VwcG9ydHMgfiB0byAkSE9NRQogZXhwYW5zaW9uIGluIGV4cGFuZHVzZXIoKS4KIAogLSBUaGUgZnJlZXplIHRvb2wgbm93IHdvcmtzIG9uIFdpbmRvd3MuCkBAIC0yNTMwOSw0NyArMjUzNDIsNDcgQEAKIAogLSBOZXcgbW9kdWxlIHdoaWNoZGIgcmVjb2duaXplcyBkYm0sIGdkYm0gYW5kIGJzZGRiL2RiaGFzaCBmaWxlcy4KIAotLSBUaGUgRG9jL01ha2VmaWxlIHRhcmdldHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkIHNvbWV3aGF0IHRvIHJlbW92ZSB0aGUgCistIFRoZSBEb2MvTWFrZWZpbGUgdGFyZ2V0cyBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgc29tZXdoYXQgdG8gcmVtb3ZlIHRoZQogaW5zaXN0ZW5jZSBvbiBhbHdheXMgZ2VuZXJhdGluZyBQb3N0U2NyaXB0LgogCiAtIFRoZSB0ZXhpbmZvIHRvIGh0bWwgZmlsdGVyIChEb2MvdGV4aTJodG1sLnB5KSBoYXMgYmVlbiBpbXByb3ZlZCBzb21ld2hhdC4KIAotLSAiZXJyb3JzLmgiIGhhcyBiZWVuIHJlbmFtZWQgdG8gInB5ZXJyb3JzLmgiIHRvIHJlc29sdmUgYSBsb25nLXN0YW5kaW5nIAorLSAiZXJyb3JzLmgiIGhhcyBiZWVuIHJlbmFtZWQgdG8gInB5ZXJyb3JzLmgiIHRvIHJlc29sdmUgYSBsb25nLXN0YW5kaW5nCiBuYW1lIGNvbmZsaWN0IG9uIHRoZSBNYWMuCiAKLS0gTGlua2luZyBhIG1vZHVsZSBjb21waWxlZCB3aXRoIGEgZGlmZmVyZW50IHNldHRpbmcgZm9yIFB5X1RSQUNFX1JFRlMgbm93IAorLSBMaW5raW5nIGEgbW9kdWxlIGNvbXBpbGVkIHdpdGggYSBkaWZmZXJlbnQgc2V0dGluZyBmb3IgUHlfVFJBQ0VfUkVGUyBub3cKIGdlbmVyYXRlcyBhIGxpbmtlciBlcnJvciByYXRoZXIgdGhhbiBhIGNvcmUgZHVtcC4KIAotLSBUaGUgY2dpIG1vZHVsZSBoYXMgYSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gcHJpbnRfZXhjZXB0aW9uKCksIHdoaWNoIAotZm9ybWF0cyBhIHB5dGhvbiBleGNlcHRpb24gdXNpbmcgSFRNTC4gIEl0IGFsc28gZml4ZXMgYSBidWcgaW4gdGhlIAotY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBhZGRzIGEgZHViaW91cyBmZWF0dXJlIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIAorLSBUaGUgY2dpIG1vZHVsZSBoYXMgYSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24gcHJpbnRfZXhjZXB0aW9uKCksIHdoaWNoCitmb3JtYXRzIGEgcHl0aG9uIGV4Y2VwdGlvbiB1c2luZyBIVE1MLiAgSXQgYWxzbyBmaXhlcyBhIGJ1ZyBpbiB0aGUKK2NvbXBhdGliaWxpdHkgY29kZSBhbmQgYWRkcyBhIGR1YmlvdXMgZmVhdHVyZSB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0bwogaGF2ZSB0d28gcXVlcnkgc3RyaW5ncywgb25lIGluIHRoZSBVUkwgYW5kIG9uZSBpbiB0aGUgUE9TVCBkYXRhLgogCi0tIEEgc3VidGxlIGNoYW5nZSBpbiB0aGUgdW5waWNrbGluZyBvZiBjbGFzcyBpbnN0YW5jZXMgbWFrZXMgaXQgcG9zc2libGUgCi10byB1bnBpY2tsZSBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlLCB3aGVyZSB0aGUgX19kaWN0X18gYXR0cmlidXRlIGlzIAorLSBBIHN1YnRsZSBjaGFuZ2UgaW4gdGhlIHVucGlja2xpbmcgb2YgY2xhc3MgaW5zdGFuY2VzIG1ha2VzIGl0IHBvc3NpYmxlCit0byB1bnBpY2tsZSBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlLCB3aGVyZSB0aGUgX19kaWN0X18gYXR0cmlidXRlIGlzCiBub3QgYXZhaWxhYmxlIChidXQgc2V0YXR0cigpIGlzKS4KIAotLSBEb2N1bWVudGF0aW9uIGZvciBvcy5wYXRoLnNwbGl0ZXh0KCkgKD09IHBvc2l4cGF0aC5zcGxpdGV4dCgpKSBoYXMgYmVlbiAKKy0gRG9jdW1lbnRhdGlvbiBmb3Igb3MucGF0aC5zcGxpdGV4dCgpICg9PSBwb3NpeHBhdGguc3BsaXRleHQoKSkgaGFzIGJlZW4KIGNsZWFyZWQgdXAuICBJdCBzcGxpdHMgYXQgdGhlICpsYXN0KiBkb3QuCiAKIC0gcG9zaXhmaWxlIGxvY2tpbmcgaXMgbm93IGFsc28gY29ycmVjdGx5IHN1cHBvcnRlZCBvbiBBSVguCiAKLS0gVGhlIHRlbXBmaWxlIG1vZHVsZSBvbmNlIGFnYWluIGhvbm9ycyBhbiBpbml0aWFsIHNldHRpbmcgb2YgdG1wZGlyLiAgSXQgCistIFRoZSB0ZW1wZmlsZSBtb2R1bGUgb25jZSBhZ2FpbiBob25vcnMgYW4gaW5pdGlhbCBzZXR0aW5nIG9mIHRtcGRpci4gIEl0CiBub3cgd29ya3Mgb24gV2luZG93cywgdG9vLgogCi0tIFRoZSB0cmFjZWJhY2sgbW9kdWxlIGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgdG8gZXh0cmFjdCwgZm9ybWF0IGFuZCBwcmludCAKKy0gVGhlIHRyYWNlYmFjayBtb2R1bGUgaGFzIHNvbWUgbmV3IGZ1bmN0aW9ucyB0byBleHRyYWN0LCBmb3JtYXQgYW5kIHByaW50CiB0aGUgYWN0aXZlIHN0YWNrLgogCi0tIFNvbWUgdHJhbnNsYXRpb24gZnVuY3Rpb25zIGluIHRoZSB1cmxsaWIgbW9kdWxlIGhhdmUgYmVlbiBtYWRlIGEgbGl0dGxlIAorLSBTb21lIHRyYW5zbGF0aW9uIGZ1bmN0aW9ucyBpbiB0aGUgdXJsbGliIG1vZHVsZSBoYXZlIGJlZW4gbWFkZSBhIGxpdHRsZQogbGVzcyBzbHVnZ2lzaC4KIAotLSBUaGUgYWRkdGFnXyogbWV0aG9kcyBmb3IgQ2FudmFzIHdpZGdldHMgaW4gVGtpbnRlciBhcyB3ZWxsIGFzIGluIHRoZSAKLXNlcGFyYXRlIENhbnZhcyBjbGFzcyBoYXZlIGJlZW4gZml4ZWQgc28gdGhleSBhY3R1YWxseSBkbyBzb21ldGhpbmcgCistIFRoZSBhZGR0YWdfKiBtZXRob2RzIGZvciBDYW52YXMgd2lkZ2V0cyBpbiBUa2ludGVyIGFzIHdlbGwgYXMgaW4gdGhlCitzZXBhcmF0ZSBDYW52YXMgY2xhc3MgaGF2ZSBiZWVuIGZpeGVkIHNvIHRoZXkgYWN0dWFsbHkgZG8gc29tZXRoaW5nCiBtZWFuaW5nZnVsLgogCiAtIEEgdGlueSBfdGVzdCgpIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIFRraW50ZXIucHkuCiAKLS0gQSBnZW5lcmljIE1ha2VmaWxlIGZvciBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBpcyBwcm92aWRlZCBpbiB0aGUgTWlzYyAKKy0gQSBnZW5lcmljIE1ha2VmaWxlIGZvciBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBpcyBwcm92aWRlZCBpbiB0aGUgTWlzYwogc3ViZGlyZWN0b3J5IChNaXNjL2dNYWtlZmlsZSkuCiAKIC0gQSBuZXcgdmVyc2lvbiBvZiBweXRob24tbW9kZS5lbCBmb3IgRW1hY3MgaXMgcHJvdmlkZWQuICBTZWUKQEAgLTI1MzU3LDI1ICsyNTM5MCwyNSBAQAogc2VwYXJhdGUgZmlsZSBweWltZW51LmVsIGlzIG5vIGxvbmdlciBuZWVkZWQsIGltZW51IHN1cHBvcnQgaXMgZm9sZGVkCiBpbnRvIHB5dGhvbi1tb2RlLmVsLgogCi0tIFRoZSBjb25maWd1cmUgc2NyaXB0IGNhbiBmaW5hbGx5IGNvcnJlY3RseSBmaW5kIHRoZSByZWFkbGluZSBsaWJyYXJ5IGluIGEgCi1ub24tc3RhbmRhcmQgbG9jYXRpb24uICBUaGUgTERGTEFHUyB2YXJpYWJsZSBpcyBwYXNzZWQgb24gdGhlIE1ha2VmaWxlcyAKKy0gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2FuIGZpbmFsbHkgY29ycmVjdGx5IGZpbmQgdGhlIHJlYWRsaW5lIGxpYnJhcnkgaW4gYQorbm9uLXN0YW5kYXJkIGxvY2F0aW9uLiAgVGhlIExERkxBR1MgdmFyaWFibGUgaXMgcGFzc2VkIG9uIHRoZSBNYWtlZmlsZXMKIGZyb20gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCiAKLS0gU2hhcmVkIGxpYnJhcmllcyBhcmUgbm93IGluc3RhbGxlZCBhcyBwcm9ncmFtcyAoaS5lLiB3aXRoIGV4ZWN1dGFibGUgCistIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdyBpbnN0YWxsZWQgYXMgcHJvZ3JhbXMgKGkuZS4gd2l0aCBleGVjdXRhYmxlCiBwZXJtaXNzaW9uKS4gIFRoaXMgaXMgcmVxdWlyZWQgb24gSFAtVVggYW5kIHdvbid0IGh1cnQgb24gb3RoZXIgc3lzdGVtcy4KIAotLSBUaGUgb2JqYy5jIG1vZHVsZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZGlzdHJpYnV0aW9uLiAgT2JqZWN0aXZlLUMgCistIFRoZSBvYmpjLmMgbW9kdWxlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24uICBPYmplY3RpdmUtQwogc3VwcG9ydCBtYXkgYmVjb21lIGF2YWlsYWJsZSBhcyBjb250cmlidXRlZCBzb2Z0d2FyZSBvbiB0aGUgZnRwIHNpdGUuCiAKIC0gVGhlIHN5YmFzZSBtb2R1bGUgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gIEEgbXVjaAogaW1wcm92ZWQgc3liYXNlIG1vZHVsZSBpcyBhdmFpbGFibGUgYXMgY29udHJpYnV0ZWQgc29mdHdhcmUgZnJvbSB0aGUKIGZ0cCBzaXRlLgogCi0tIF90a2ludGVyIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggVGNsIDcuNSAvIFRrIDQuMSBwYXRjaDEgb24gV2luZG93cyBhbmQgCi1NYWMgKGRvbid0IHVzZSB1bnBhdGNoZWQgVGNsL1RrISkuICBUaGUgZGVmYXVsdCBsaW5lIGluIHRoZSBTZXR1cC5pbiBmaWxlIAorLSBfdGtpbnRlciBpcyBub3cgY29tcGF0aWJsZSB3aXRoIFRjbCA3LjUgLyBUayA0LjEgcGF0Y2gxIG9uIFdpbmRvd3MgYW5kCitNYWMgKGRvbid0IHVzZSB1bnBhdGNoZWQgVGNsL1RrISkuICBUaGUgZGVmYXVsdCBsaW5lIGluIHRoZSBTZXR1cC5pbiBmaWxlCiBub3cgbGlua3Mgd2l0aCBUY2wgNy41IC8gVGsgNC4xIHJhdGhlciB0aGFuIDcuNC80LjAuCiAKLS0gSW4gU2V0dXAsIHlvdSBjYW4gbm93IHdyaXRlICIqc2hhcmVkKiIgaW5zdGVhZCBvZiAiKm5vY29uZmlnKiIsIGFuZCB5b3UgCistIEluIFNldHVwLCB5b3UgY2FuIG5vdyB3cml0ZSAiKnNoYXJlZCoiIGluc3RlYWQgb2YgIipub2NvbmZpZyoiLCBhbmQgeW91CiBjYW4gdXNlICouc28gYW5kICouc2wgYXMgc2hhcmVkIGxpYnJhcmllcy4KIAogLSBTb21lIG1vcmUgZmlkZ2V0aW5nIGZvciBBSVggc2hhcmVkIGxpYnJhcmllcy4KQEAgLTI1Mzg0LDgxICsyNTQxNyw4MSBAQAogKE5vdGUgLS0gYSBjb21wbGV0ZSByZXBsYWNlbWVudCBieSBOaWVscyBNbyJsbGVyLCBjYWxsZWQgZ3Btb2R1bGUsIGlzCiBhdmFpbGFibGUgZnJvbSB0aGUgY29udHJpYiBkaXJlY3Rvcnkgb24gdGhlIGZ0cCBzaXRlLikKIAotLSBBIHdhcm5pbmcgaXMgd3JpdHRlbiB0byBzeXMuc3RkZXJyIHdoZW4gYSBfX2RlbF9fIG1ldGhvZCByYWlzZXMgYW4gCistIEEgd2FybmluZyBpcyB3cml0dGVuIHRvIHN5cy5zdGRlcnIgd2hlbiBhIF9fZGVsX18gbWV0aG9kIHJhaXNlcyBhbgogZXhjZXB0aW9uIChmb3JtZXJseSwgc3VjaCBleGNlcHRpb25zIHdlcmUgY29tcGxldGVseSBpZ25vcmVkKS4KIAotLSBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgZGVmaW5lcyBIQVZFX09MRF9DUFAgaWYgdGhlIEMgcHJlcHJvY2Vzc29yIGlzIAorLSBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgZGVmaW5lcyBIQVZFX09MRF9DUFAgaWYgdGhlIEMgcHJlcHJvY2Vzc29yIGlzCiBpbmNhcGFibGUgb2YgQU5TSSBzdHlsZSB0b2tlbiBjb25jYXRlbmF0aW9uIGFuZCBzdHJpbmdpZmljYXRpb24uCiAKLS0gQWxsIHNvdXJjZSBmaWxlcyAoZXhjZXB0IGEgZmV3IHBsYXRmb3JtIHNwZWNpZmljIG1vZHVsZXMpIGFyZSBvbmNlIGFnYWluIAorLSBBbGwgc291cmNlIGZpbGVzIChleGNlcHQgYSBmZXcgcGxhdGZvcm0gc3BlY2lmaWMgbW9kdWxlcykgYXJlIG9uY2UgYWdhaW4KIGNvbXBhdGlibGUgd2l0aCBLJlIgQyBjb21waWxlcnMgYXMgd2VsbCBhcyBBTlNJIGNvbXBpbGVycy4gIEluIHBhcnRpY3VsYXIsCi1BTlNJLWlzbXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgbWFkZSBjb25kaXRpb25hbCBpbiBjb21wbGV4b2JqZWN0LmMsIAorQU5TSS1pc21zIGhhdmUgYmVlbiByZW1vdmVkIG9yIG1hZGUgY29uZGl0aW9uYWwgaW4gY29tcGxleG9iamVjdC5jLAogZ2V0YXJncy5jIGFuZCBvcGVyYXRvci5jLgogCi0tIFRoZSBhYnN0cmFjdCBvYmplY3QgQVBJIGhhcyB0aHJlZSBuZXcgZnVuY3Rpb25zLCBQeU9iamVjdF9EZWxJdGVtLCAKKy0gVGhlIGFic3RyYWN0IG9iamVjdCBBUEkgaGFzIHRocmVlIG5ldyBmdW5jdGlvbnMsIFB5T2JqZWN0X0RlbEl0ZW0sCiBQeVNlcXVlbmNlX0RlbEl0ZW0sIGFuZCBQeVNlcXVlbmNlX0RlbFNsaWNlLgogCi0tIFRoZSBvcGVyYXRvciBtb2R1bGUgaGFzIG5ldyBmdW5jdGlvbnMgZGVsaXRlbSBhbmQgZGVsc2xpY2UsIGFuZCB0aGUgCi1mdW5jdGlvbnMgIm9yIiBhbmQgImFuZCIgYXJlIHJlbmFtZWQgdG8gIm9yXyIgYW5kICJhbmRfIiAoc2luY2UgIm9yIiBhbmQgCistIFRoZSBvcGVyYXRvciBtb2R1bGUgaGFzIG5ldyBmdW5jdGlvbnMgZGVsaXRlbSBhbmQgZGVsc2xpY2UsIGFuZCB0aGUKK2Z1bmN0aW9ucyAib3IiIGFuZCAiYW5kIiBhcmUgcmVuYW1lZCB0byAib3JfIiBhbmQgImFuZF8iIChzaW5jZSAib3IiIGFuZAogImFuZCIgYXJlIHJlc2VydmVkIHdvcmRzKS4gICgiX19vcl9fIiBhbmQgIl9fYW5kX18iIGFyZSB1bmNoYW5nZWQuKQogCi0tIFRoZSBlbnZpcm9ubWVudCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgcHV0ZW52KCkgaXMgbm93IGEgZnVuY3Rpb24gCistIFRoZSBlbnZpcm9ubWVudCBtb2R1bGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgcHV0ZW52KCkgaXMgbm93IGEgZnVuY3Rpb24KIGluIHBvc2l4bW9kdWxlIChhbHNvIHVuZGVyIE5UKS4KIAogLSBFcnJvciBpbiBmaWx0ZXIoPGZ1bmN0aW9uPiwgIiIpIGhhcyBiZWVuIGZpeGVkLgogCiAtIFVucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50cyByYWlzZSBUeXBlRXJyb3IsIG5vdCBLZXlFcnJvci4KIAotLSBCZXR0ZXIgcG9ydGFiaWxpdHksIGZld2VyIGJ1Z3MgYW5kIG1lbW9yeSBsZWFrcywgZmV3ZXIgY29tcGlsZXIgd2FybmluZ3MsIAorLSBCZXR0ZXIgcG9ydGFiaWxpdHksIGZld2VyIGJ1Z3MgYW5kIG1lbW9yeSBsZWFrcywgZmV3ZXIgY29tcGlsZXIgd2FybmluZ3MsCiBzb21lIG1vcmUgZG9jdW1lbnRhdGlvbi4KIAotLSBCdWcgaW4gZmxvYXQgcG93ZXIgYm91bmRhcnkgY2FzZSAoMC4wIHRvIHRoZSBuZWdhdGl2ZSBpbnRlZ2VyIHBvd2VyKSAKKy0gQnVnIGluIGZsb2F0IHBvd2VyIGJvdW5kYXJ5IGNhc2UgKDAuMCB0byB0aGUgbmVnYXRpdmUgaW50ZWdlciBwb3dlcikKIGZpeGVkLgogCi0tIFRoZSB0ZXN0IG9mIG5lZ2F0aXZlIG51bWJlciB0byB0aGUgZmxvYXQgcG93ZXIgaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgCistIFRoZSB0ZXN0IG9mIG5lZ2F0aXZlIG51bWJlciB0byB0aGUgZmxvYXQgcG93ZXIgaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUKIGJ1aWx0LWluIHBvdygpIGZ1bmN0aW9uIHRvIGZsb2F0b2JqZWN0LmMgKHNvIGNvbXBsZXggbnVtYmVycyBjYW4geWllbGQgdGhlCiBjb3JyZWN0IHJlc3VsdCkuCiAKLS0gVGhlIGJ1ZyBpbnRyb2R1Y2VkIGluIGJldGEyIHdoZXJlIHNoYXJlZCBsaWJyYXJpZXMgbG9hZGVkICh1c2luZyAKKy0gVGhlIGJ1ZyBpbnRyb2R1Y2VkIGluIGJldGEyIHdoZXJlIHNoYXJlZCBsaWJyYXJpZXMgbG9hZGVkICh1c2luZwogZGxvcGVuKCkpIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdvdWxkIGZhaWwsIGhhcyBiZWVuIGZpeGVkLgogCi0tIE1vZHVsZXMgaW1wb3J0ZWQgYXMgc2hhcmVkIGxpYnJhcmllcyBub3cgYWxzbyBoYXZlIGEgX19maWxlX18gYXR0cmlidXRlLCAKLWdpdmluZyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGV5IHdlcmUgbG9hZGVkLiAgVGhlIG9ubHkgbW9kdWxlcyB3aXRob3V0IAorLSBNb2R1bGVzIGltcG9ydGVkIGFzIHNoYXJlZCBsaWJyYXJpZXMgbm93IGFsc28gaGF2ZSBhIF9fZmlsZV9fIGF0dHJpYnV0ZSwKK2dpdmluZyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGV5IHdlcmUgbG9hZGVkLiAgVGhlIG9ubHkgbW9kdWxlcyB3aXRob3V0CiBhIF9fZmlsZV9fIGF0dHJpYnV0ZSBub3cgYXJlIGJ1aWx0LWluIG1vZHVsZXMuCiAKLS0gT24gdGhlIE1hYywgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgY2FuIGVuZCBpbiBlaXRoZXIgIi5zbGIiIG9yIAotIi48cGxhdGZvcm0+LnNsYiIgd2hlcmUgPHBsYXRmb3JtPiBpcyBlaXRoZXIgIkNGTTY4SyIgb3IgInBwYyIuICBUaGUgIi5zbGIiIAorLSBPbiB0aGUgTWFjLCBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBjYW4gZW5kIGluIGVpdGhlciAiLnNsYiIgb3IKKyIuPHBsYXRmb3JtPi5zbGIiIHdoZXJlIDxwbGF0Zm9ybT4gaXMgZWl0aGVyICJDRk02OEsiIG9yICJwcGMiLiAgVGhlICIuc2xiIgogZXh0ZW5zaW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yICJmYXQiIGJpbmFyaWVzLgogCi0tIEMgQVBJIGFkZGl0aW9uOiBtYXJzaGFsLmMgbm93IHN1cHBvcnRzIAorLSBDIEFQSSBhZGRpdGlvbjogbWFyc2hhbC5jIG5vdyBzdXBwb3J0cwogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcob2JqZWN0KS4KIAogLSBDIEFQSSBhZGRpdGlvbjogZ2V0YXJncy5jIG5vdyBzdXBwb3J0cwogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgZm9ybWF0LCBrd25hbWVzLCAuLi4pCiB0byBwYXJzZSBrZXl3b3JkIGFyZ3VtZW50cy4KIAotLSBUaGUgUEMgdmVyc2lvbmluZyBzY2hlbWUgKHN5cy53aW52ZXIpIGhhcyBjaGFuZ2VkIG9uY2UgYWdhaW4uICB0aGUgCi12ZXJzaW9uIG51bWJlciBpcyBub3cgIjxkaWdpdD4uPGRpZ2l0Pi48ZGlnaXQ+LjxhcGl2ZXJzaW9uPiIsIHdoZXJlIHRoZSAKLWZpcnN0IHRocmVlIDxkaWdpdD5zIGFyZSB0aGUgUHl0aG9uIHZlcnNpb24gKGUuZy4gIjEuNC4wIiBmb3IgUHl0aG9uIDEuNCwgCi0iMS40LjEiIGZvciBQeXRob24gMS40LjEgLS0gdGhlIGJldGEgbGV2ZWwgaXMgbm90IGluY2x1ZGVkKSBhbmQgCistIFRoZSBQQyB2ZXJzaW9uaW5nIHNjaGVtZSAoc3lzLndpbnZlcikgaGFzIGNoYW5nZWQgb25jZSBhZ2Fpbi4gIHRoZQordmVyc2lvbiBudW1iZXIgaXMgbm93ICI8ZGlnaXQ+LjxkaWdpdD4uPGRpZ2l0Pi48YXBpdmVyc2lvbj4iLCB3aGVyZSB0aGUKK2ZpcnN0IHRocmVlIDxkaWdpdD5zIGFyZSB0aGUgUHl0aG9uIHZlcnNpb24gKGUuZy4gIjEuNC4wIiBmb3IgUHl0aG9uIDEuNCwKKyIxLjQuMSIgZm9yIFB5dGhvbiAxLjQuMSAtLSB0aGUgYmV0YSBsZXZlbCBpcyBub3QgaW5jbHVkZWQpIGFuZAogPGFwaXZlcnNpb24+IGlzIHRoZSBmb3VyLWRpZ2l0IFBZVEhPTl9BUElfVkVSU0lPTiAoY3VycmVudGx5IDEwMDUpLgogCiAtIGgycHkucHkgYWNjZXB0cyB3aGl0ZXNwYWNlIGJlZm9yZSB0aGUgIyBpbiBDUFAgZGlyZWN0aXZlcwogCi0tIE9uIFNvbGFyaXMgMi41LCBpdCBzaG91bGQgbm93IGJlIHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgUG9zaXggdGhyZWFkcyBvciAKLVNvbGFyaXMgdGhyZWFkcyAoWFhYOiBob3cgZG8geW91IHNlbGVjdCB3aGljaCBpcyB1c2VkPz8/KS4gIChOb3RlOiB0aGUgCi1QeXRob24gcHRocmVhZHMgaW50ZXJmYWNlIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBzZW1hcGhvcmVzIHlldCAtLSBhbnlvbmUgCistIE9uIFNvbGFyaXMgMi41LCBpdCBzaG91bGQgbm93IGJlIHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgUG9zaXggdGhyZWFkcyBvcgorU29sYXJpcyB0aHJlYWRzIChYWFg6IGhvdyBkbyB5b3Ugc2VsZWN0IHdoaWNoIGlzIHVzZWQ/Pz8pLiAgKE5vdGU6IHRoZQorUHl0aG9uIHB0aHJlYWRzIGludGVyZmFjZSBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgc2VtYXBob3JlcyB5ZXQgLS0gYW55b25lCiBjYXJlIHRvIGZpeCB0aGlzPykKIAotLSBUaHJlYWQgc3VwcG9ydCBzaG91bGQgbm93IHdvcmsgb24gQUlYLCB1c2luZyBlaXRoZXIgRENFIHRocmVhZHMgb3IgCistIFRocmVhZCBzdXBwb3J0IHNob3VsZCBub3cgd29yayBvbiBBSVgsIHVzaW5nIGVpdGhlciBEQ0UgdGhyZWFkcyBvcgogcHRocmVhZHMuCiAKIC0gTmV3IGZpbGUgRGVtby9zb2NrZXRzL3VuaWNhc3QucHkKIAotLSBXb3JraW5nIE1hYyBwb3J0LCB3aXRoIENGTTY4SyBzdXBwb3J0LCB3aXRoIFRrIDQuMSBzdXBwb3J0ICh0aG91Z2ggbm90IAorLSBXb3JraW5nIE1hYyBwb3J0LCB3aXRoIENGTTY4SyBzdXBwb3J0LCB3aXRoIFRrIDQuMSBzdXBwb3J0ICh0aG91Z2ggbm90CiBib3RoKSAoWFhYKQogCi0tIE5ldyBwcm9qZWN0IHNldHVwIGZvciBQQyBwb3J0LCBub3cgY29tcGF0aWJsZSB3aXRoIFB5dGhvbldpbiwgd2l0aCAKKy0gTmV3IHByb2plY3Qgc2V0dXAgZm9yIFBDIHBvcnQsIG5vdyBjb21wYXRpYmxlIHdpdGggUHl0aG9uV2luLCB3aXRoCiBfdGtpbnRlciBhbmQgTnVtUHkgc3VwcG9ydCAoWFhYKQogCiAtIE5ldyBtb2R1bGUgc2l0ZS5weSAoWFhYKQpAQCAtMjU0NzUsNyArMjU1MDgsNyBAQAogCiAtIHN0cmluZy5hdG9pIGMucy4gbm93IHJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgYW4gZW1wdHkgaW5wdXQgc3RyaW5nLgogCi0tIEF0IGxhc3QsIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gZGVmaW5lIEhBVkVfQ09ORklHX0ggaW4gb3JkZXIgdG8gCistIEF0IGxhc3QsIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gZGVmaW5lIEhBVkVfQ09ORklHX0ggaW4gb3JkZXIgdG8KIGhhdmUgY29uZmlnLmggaW5jbHVkZWQgYXQgdmFyaW91cyBwbGFjZXMuCiAKIC0gVW5yZWNvZ25pemVkIGtleXdvcmQgYXJndW1lbnRzIG5vdyByYWlzZSBUeXBlRXJyb3IgcmF0aGVyIHRoYW4gS2V5RXJyb3IuCkBAIC0yNTQ4MywyNSArMjU1MTYsMjUgQEAKIC0gVGhlIG1ha2VzZXR1cCBzY3JpcHQgcmVjb2duaXplcyBmaWxlcyB3aXRoIGV4dGVuc2lvbiAuc28gb3IgLnNsIGFzCiAoc2hhcmVkKSBsaWJyYXJpZXMuCiAKLS0gJ2FjY2VzcycgaXMgbm8gbG9uZ2VyIGEgcmVzZXJ2ZWQgd29yZCwgYW5kIGFsbCBjb2RlIHJlbGF0ZWQgdG8gaXRzIAotaW1wbGVtZW50YXRpb24gaXMgZ29uZSAob3IgYXQgbGVhc3QgI2lmZGVmJ2VkIG91dCkuICBUaGlzIHNob3VsZCBtYWtlIAorLSAnYWNjZXNzJyBpcyBubyBsb25nZXIgYSByZXNlcnZlZCB3b3JkLCBhbmQgYWxsIGNvZGUgcmVsYXRlZCB0byBpdHMKK2ltcGxlbWVudGF0aW9uIGlzIGdvbmUgKG9yIGF0IGxlYXN0ICNpZmRlZidlZCBvdXQpLiAgVGhpcyBzaG91bGQgbWFrZQogUHl0aG9uIGEgbGl0dGxlIHNwZWVkaWVyIHRvbyEKIAotLSBQZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgc3VnZ2VzdGVkIGJ5IFNqb2VyZCBNdWxsZW5kZXIuICBUaGlzIGluY2x1ZGVzIAotdGhlIGludHJvZHVjdGlvbiBvZiB0d28gbmV3IG9wdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHR5cGUgb2JqZWN0LCAKLWdldGF0dHJvIGFuZCBzZXRhdHRybywgd2hpY2ggYXJlIGxpa2UgZ2V0YXR0ciBhbmQgc2V0YXR0ciBidXQgdGFrZSBhIAorLSBQZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgc3VnZ2VzdGVkIGJ5IFNqb2VyZCBNdWxsZW5kZXIuICBUaGlzIGluY2x1ZGVzCit0aGUgaW50cm9kdWN0aW9uIG9mIHR3byBuZXcgb3B0aW9uYWwgZnVuY3Rpb24gcG9pbnRlcnMgaW4gdHlwZSBvYmplY3QsCitnZXRhdHRybyBhbmQgc2V0YXR0cm8sIHdoaWNoIGFyZSBsaWtlIGdldGF0dHIgYW5kIHNldGF0dHIgYnV0IHRha2UgYQogc3RyaW5nIG9iamVjdCBpbnN0ZWFkIG9mIGEgQyBzdHJpbmcgcG9pbnRlci4KIAotLSBOZXcgb3BlcmF0aW9ucyBpbiBzdHJpbmcgbW9kdWxlOiBsc3RyaXAocykgYW5kIHJzdHJpcChzKSBzdHJpcCB3aGl0ZXNwYWNlIAotb25seSBvbiB0aGUgbGVmdCBvciBvbmx5IG9uIHRoZSByaWdodCwgQSBuZXcgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgdG8gCi1zcGxpdCgpIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VwYXJhdG9ycyBob25vcmVkIChzbyAKLXNwbGl0ZmllbGRzKHMsIHNlcCwgbikgcmV0dXJucyBhIGxpc3Qgb2YgYXQgbW9zdCBuKzEgZWxlbWVudHMpLiAgKFNpbmNlIAorLSBOZXcgb3BlcmF0aW9ucyBpbiBzdHJpbmcgbW9kdWxlOiBsc3RyaXAocykgYW5kIHJzdHJpcChzKSBzdHJpcCB3aGl0ZXNwYWNlCitvbmx5IG9uIHRoZSBsZWZ0IG9yIG9ubHkgb24gdGhlIHJpZ2h0LCBBIG5ldyBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCB0bworc3BsaXQoKSBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlcGFyYXRvcnMgaG9ub3JlZCAoc28KK3NwbGl0ZmllbGRzKHMsIHNlcCwgbikgcmV0dXJucyBhIGxpc3Qgb2YgYXQgbW9zdCBuKzEgZWxlbWVudHMpLiAgKFNpbmNlCiAxLjMsIHNwbGl0ZmllbGRzKHMsIE5vbmUpIGlzIHRvdGFsbHkgZXF1aXZhbGVudCB0byBzcGxpdChzKS4pCi1zdHJpbmcuY2Fwd29yZHMoKSBoYXMgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZnlpbmcgdGhlIAorc3RyaW5nLmNhcHdvcmRzKCkgaGFzIGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZQogc2VwYXJhdG9yICh3aGljaCBpcyBwYXNzZWQgdG8gc3BsaXQoKSkuCiAKLS0gcmVnc3ViLnNwbGl0KCkgaGFzIHRoZSBzYW1lIGFkZGl0aW9uIGFzIHN0cmluZy5zcGxpdCgpLiAgcmVnc3ViLnNwbGl0eChzLCAKLXNlcCwgbWF4c2VwKSBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgd2FzIHJlZ3N1Yi5zcGxpdChzLCAxKSBpbiAKKy0gcmVnc3ViLnNwbGl0KCkgaGFzIHRoZSBzYW1lIGFkZGl0aW9uIGFzIHN0cmluZy5zcGxpdCgpLiAgcmVnc3ViLnNwbGl0eChzLAorc2VwLCBtYXhzZXApIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCB3YXMgcmVnc3ViLnNwbGl0KHMsIDEpIGluCiAxLjRiZXRhMiAocmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBkZWxpbWl0ZXJzIGFzIHdlbGwgYXMgdGhlIHdvcmRzKS4KIAogLSBGaW5hbCB0b3VjaCBmb3IgQUlYIGxvYWRpbmcsIHJld3JpdHRlbiBNaXNjL0FJWC1OT1RFUy4KQEAgLTI1NTQ1LDExICsyNTU3OCwxMSBAQAogbWVhbmluZ2Z1bCB2YWx1ZSAoYSBmZXcgdGhpbmdzIHdlcmUgYm90Y2hlZCBpbiBiZXRhIDEpLiAgTGliL2Rvc184eDMKIGlzIG5vdyBhIHN0YW5kYXJkIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbiAoYWxhcykuCiAKLS0gTW9yZSBpbXByb3ZlbWVudHMgdG8gdGhlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUuICBUeXBpbmcgIm1ha2UgaW5zdGFsbCIgCi1ub3cgaW5zZXJ0cyB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdGhlIHBhdGhuYW1lcyBvZiBhbG1vc3QgZXZlcnl0aGluZyAKLWluc3RhbGxlZCwgYW5kIGNyZWF0ZXMgdGhlIG1hY2hpbmUgZGVwZW5kZW50IG1vZHVsZXMgKEZDTlRMLnB5IGV0Yy4pIGlmIG5vdCAKLXN1cHBsaWVkIGJ5IHRoZSBkaXN0cmlidXRpb24uICAoWFhYIFRoZXJlJ3Mgc3RpbGwgYSBwcm9ibGVtIHdpdGggdGhlIGxhdHRlciAKLWJlY2F1c2UgdGhlICJyZWdlbiIgc2NyaXB0IHJlcXVpcmVzIHRoYXQgUHl0aG9uIGlzIGluc3RhbGxlZC4gIFNvbWUgbWFudWFsIAorLSBNb3JlIGltcHJvdmVtZW50cyB0byB0aGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZS4gIFR5cGluZyAibWFrZSBpbnN0YWxsIgorbm93IGluc2VydHMgdGhlIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwYXRobmFtZXMgb2YgYWxtb3N0IGV2ZXJ5dGhpbmcKK2luc3RhbGxlZCwgYW5kIGNyZWF0ZXMgdGhlIG1hY2hpbmUgZGVwZW5kZW50IG1vZHVsZXMgKEZDTlRMLnB5IGV0Yy4pIGlmIG5vdAorc3VwcGxpZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbi4gIChYWFggVGhlcmUncyBzdGlsbCBhIHByb2JsZW0gd2l0aCB0aGUgbGF0dGVyCitiZWNhdXNlIHRoZSAicmVnZW4iIHNjcmlwdCByZXF1aXJlcyB0aGF0IFB5dGhvbiBpcyBpbnN0YWxsZWQuICBTb21lIG1hbnVhbAogaW50ZXJ2ZW50aW9uIG1heSBzdGlsbCBiZSByZXF1aXJlZC4pIChUaGlzIGhhcyBiZWVuIGZpeGVkIGluIDEuNGJldGEzLikKIAogLSBOZXcgbW9kdWxlczogZXJybm8sIG9wZXJhdG9yIChYWFgpLgpAQCAtMjU2MTIsOCArMjU2NDUsOCBAQAogCiAtIEFkZGVkIHN5cy5wbGF0Zm9ybSBhbmQgc3lzLmV4ZWNfcGxhdGZvcm0gZm9yIEJpbGwgSmFuc3Nlbi4KIAotLSBJbnN0YWxsYXRpb24gaGFzIGJlZW4gY29tcGxldGVseSBvdmVyaGF1bGVkLiAgIm1ha2UgaW5zdGFsbCIgbm93IGluc3RhbGxzIAotZXZlcnl0aGluZywgbm90IGp1c3QgdGhlIHB5dGhvbiBiaW5hcnkuICBJbnN0YWxsYXRpb24gdXNlcyB0aGUgaW5zdGFsbC1zaCAKKy0gSW5zdGFsbGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlbHkgb3ZlcmhhdWxlZC4gICJtYWtlIGluc3RhbGwiIG5vdyBpbnN0YWxscworZXZlcnl0aGluZywgbm90IGp1c3QgdGhlIHB5dGhvbiBiaW5hcnkuICBJbnN0YWxsYXRpb24gdXNlcyB0aGUgaW5zdGFsbC1zaAogc2NyaXB0IChib3Jyb3dlZCBmcm9tIFgxMSkgdG8gaW5zdGFsbCBlYWNoIGZpbGUuCiAKIC0gTmV3IGZ1bmN0aW9ucyBpbiB0aGUgcG9zaXggbW9kdWxlOiBta2ZpZm8sIHBsb2NrLCByZW1vdmUgKD09IHVubGluayksCkBAIC0yNTYyMyw1OSArMjU2NTYsNTkgQEAKIAogLSBTaGFyZWQgbGlicmFyeSBzdXBwb3J0IGZvciBGcmVlQlNELgogCi0tIFRoZSAtLXdpdGgtcmVhZGxpbmUgb3B0aW9uIGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGEgRElSRUNUT1JZIGFyZ3VtZW50LCAKLWZvciBzeXN0ZW1zIHdoZXJlIGxpYnJlYWRsaW5lLiogaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBwbGFjZXMuICBJdCBpcyAKKy0gVGhlIC0td2l0aC1yZWFkbGluZSBvcHRpb24gY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYSBESVJFQ1RPUlkgYXJndW1lbnQsCitmb3Igc3lzdGVtcyB3aGVyZSBsaWJyZWFkbGluZS4qIGlzIGluIG9uZSBvZiB0aGUgc3RhbmRhcmQgcGxhY2VzLiAgSXQgaXMKIGFsc28gcG9zc2libGUgZm9yIGl0IHRvIGJlIGEgc2hhcmVkIGxpYnJhcnkuCiAKLS0gVGhlIGV4dGVuc2lvbiB0a2ludGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gX3RraW50ZXIsIHRvIGF2b2lkIGNvbmZ1c2lvbiAKLXdpdGggVGtpbnRlci5weSBvbmNhc2UgaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLiAgSXQgbm93IHN1cHBvcnRzIFRrIDQuMSBhcyAKKy0gVGhlIGV4dGVuc2lvbiB0a2ludGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gX3RraW50ZXIsIHRvIGF2b2lkIGNvbmZ1c2lvbgord2l0aCBUa2ludGVyLnB5IG9uY2FzZSBpbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuICBJdCBub3cgc3VwcG9ydHMgVGsgNC4xIGFzCiB3ZWxsIGFzIDQuMC4KIAotLSBBdXRob3IncyBjaGFuZ2Ugb2YgYWRkcmVzcyBmcm9tIENXSSBpbiBBbXN0ZXJkYW0sIFRoZSBOZXRoZXJsYW5kcywgdG8gCistIEF1dGhvcidzIGNoYW5nZSBvZiBhZGRyZXNzIGZyb20gQ1dJIGluIEFtc3RlcmRhbSwgVGhlIE5ldGhlcmxhbmRzLCB0bwogQ05SSSBpbiBSZXN0b24sIFZBLCBVU0EuCiAKLS0gVGhlIG1hdGguaHlwb3QoKSBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZSAoaWYgaXQgaXNuJ3QgZm91bmQgaW4gCistIFRoZSBtYXRoLmh5cG90KCkgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUgKGlmIGl0IGlzbid0IGZvdW5kIGluCiB0aGUgQyBtYXRoIGxpYnJhcnksIFB5dGhvbiBwcm92aWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uKS4KIAotLSBUaGUgbGF0ZXggZG9jdW1lbnRhdGlvbiBpcyBub3cgY29tcGF0aWJsZSB3aXRoIGxhdGV4MmUsIHRoYW5rcyB0byBEYXZpZCAKKy0gVGhlIGxhdGV4IGRvY3VtZW50YXRpb24gaXMgbm93IGNvbXBhdGlibGUgd2l0aCBsYXRleDJlLCB0aGFua3MgdG8gRGF2aWQKIEFzY2hlci4KIAogLSBUaGUgZXhwcmVzc2lvbiB4Kip5IGlzIG5vdyBlcXVpdmFsZW50IHRvIHBvdyh4LCB5KS4KIAogLSBUaGUgaW5kZXhpbmcgZXhwcmVzc2lvbiB4W2EsIGIsIGNdIGlzIG5vdyBlcXVpdmFsZW50IHRvIHhbKGEsIGIsIGMpXS4KIAotLSBDb21wbGV4IG51bWJlcnMgYXJlIG5vdyBzdXBwb3J0ZWQuICBJbWFnaW5hcnkgY29uc3RhbnRzIGFyZSB3cml0dGVuIHdpdGggCi1hICdqJyBvciAnSicgcHJlZml4LCBnZW5lcmFsIGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgCi1wYXJ0IHRvIGFuIGltYWdpbmFyeSBwYXJ0LCBsaWtlIDMrNGouICBDb21wbGV4IG51bWJlcnMgYXJlIGFsd2F5cyBzdG9yZWQgaW4gCi1mbG9hdGluZyBwb2ludCBmb3JtLCBzbyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gMy4wKzQuMGouICBJdCBpcyBhbHNvIAotcG9zc2libGUgdG8gY3JlYXRlIGNvbXBsZXggbnVtYmVycyB3aXRoIHRoZSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gCi1jb21wbGV4KHJlLCBbaW1dKS4gIEZvciB0aGUgZm9vdHByaW50LWNvbnNjaW91cywgY29tcGxleCBudW1iZXIgc3VwcG9ydCBjYW4gCistIENvbXBsZXggbnVtYmVycyBhcmUgbm93IHN1cHBvcnRlZC4gIEltYWdpbmFyeSBjb25zdGFudHMgYXJlIHdyaXR0ZW4gd2l0aAorYSAnaicgb3IgJ0onIHByZWZpeCwgZ2VuZXJhbCBjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsCitwYXJ0IHRvIGFuIGltYWdpbmFyeSBwYXJ0LCBsaWtlIDMrNGouICBDb21wbGV4IG51bWJlcnMgYXJlIGFsd2F5cyBzdG9yZWQgaW4KK2Zsb2F0aW5nIHBvaW50IGZvcm0sIHNvIHRoaXMgaXMgZXF1aXZhbGVudCB0byAzLjArNC4wai4gIEl0IGlzIGFsc28KK3Bvc3NpYmxlIHRvIGNyZWF0ZSBjb21wbGV4IG51bWJlcnMgd2l0aCB0aGUgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uCitjb21wbGV4KHJlLCBbaW1dKS4gIEZvciB0aGUgZm9vdHByaW50LWNvbnNjaW91cywgY29tcGxleCBudW1iZXIgc3VwcG9ydCBjYW4KIGJlIGRpc2FibGVkIGJ5IGRlZmluaW5nIHRoZSBzeW1ib2wgV0lUSE9VVF9DT01QTEVYLgogCiAtIE5ldyBidWlsdC1pbiBmdW5jdGlvbiBsaXN0KCkgaXMgdGhlIGxvbmctYXdhaXRlZCBjb3VudGVycGFydCBvZiB0dXBsZSgpLgogCi0tIFRoZXJlJ3MgYSBuZXcgImNtYXRoIiBtb2R1bGUgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSAKLSJtYXRoIiBsaWJyYXJ5IGJ1dCB3aXRoIGNvbXBsZXggYXJndW1lbnRzIGFuZCByZXN1bHRzLiAgKFRoZXJlIGFyZSB2ZXJ5IAotZ29vZCByZWFzb25zIHdoeSBtYXRoLnNxcnQoLTEpIHN0aWxsIHJhaXNlcyBhbiBleGNlcHRpb24gLS0geW91IGhhdmUgdG8gdXNlIAorLSBUaGVyZSdzIGEgbmV3ICJjbWF0aCIgbW9kdWxlIHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUKKyJtYXRoIiBsaWJyYXJ5IGJ1dCB3aXRoIGNvbXBsZXggYXJndW1lbnRzIGFuZCByZXN1bHRzLiAgKFRoZXJlIGFyZSB2ZXJ5Citnb29kIHJlYXNvbnMgd2h5IG1hdGguc3FydCgtMSkgc3RpbGwgcmFpc2VzIGFuIGV4Y2VwdGlvbiAtLSB5b3UgaGF2ZSB0byB1c2UKIGNtYXRoLnNxcnQoLTEpIHRvIGdldCAxaiBmb3IgYW4gYW5zd2VyLikKIAotLSBUaGUgUHl0aG9uLmggaGVhZGVyIGZpbGUgKHdoaWNoIGlzIHJlYWxseSB0aGUgc2FtZSBhcyBhbGxvYmplY3RzLmggZXhjZXB0IAotaXQgZGlzYWJsZXMgc3VwcG9ydCBmb3Igb2xkIHN0eWxlIG5hbWVzKSBub3cgaW5jbHVkZXMgc2V2ZXJhbCBtb3JlIGZpbGVzLCAKKy0gVGhlIFB5dGhvbi5oIGhlYWRlciBmaWxlICh3aGljaCBpcyByZWFsbHkgdGhlIHNhbWUgYXMgYWxsb2JqZWN0cy5oIGV4Y2VwdAoraXQgZGlzYWJsZXMgc3VwcG9ydCBmb3Igb2xkIHN0eWxlIG5hbWVzKSBub3cgaW5jbHVkZXMgc2V2ZXJhbCBtb3JlIGZpbGVzLAogc28geW91IGhhdmUgdG8gaGF2ZSBmZXdlciAjaW5jbHVkZSBzdGF0ZW1lbnRzIGluIHRoZSBhdmVyYWdlIGV4dGVuc2lvbi4KIAotLSBUaGUgTkRFQlVHIHN5bWJvbCBpcyBubyBsb25nZXIgdXNlZC4gIENvZGUgdGhhdCB1c2VkIHRvIGJlIGRlcGVuZGVudCBvbiAKLXRoZSBwcmVzZW5jZSBvZiBOREVCVUcgaXMgbm93IHByZXNlbnQgb24gdGhlIGFic2VuY2Ugb2YgREVCVUcuICBUUkFDRV9SRUZTIAotYW5kIFJFRl9ERUJVRyBoYXZlIGJlZW4gcmVuYW1lZCB0byBQeV9UUkFDRV9SRUZTIGFuZCBQeV9SRUZfREVCVUcsIAotcmVzcGVjdGl2ZWx5LiAgQXQgbG9uZyBsYXN0LCB0aGUgc291cmNlIGFjdHVhbGx5IGNvbXBpbGVzIGFuZCBsaW5rcyB3aXRob3V0IAorLSBUaGUgTkRFQlVHIHN5bWJvbCBpcyBubyBsb25nZXIgdXNlZC4gIENvZGUgdGhhdCB1c2VkIHRvIGJlIGRlcGVuZGVudCBvbgordGhlIHByZXNlbmNlIG9mIE5ERUJVRyBpcyBub3cgcHJlc2VudCBvbiB0aGUgYWJzZW5jZSBvZiBERUJVRy4gIFRSQUNFX1JFRlMKK2FuZCBSRUZfREVCVUcgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gUHlfVFJBQ0VfUkVGUyBhbmQgUHlfUkVGX0RFQlVHLAorcmVzcGVjdGl2ZWx5LiAgQXQgbG9uZyBsYXN0LCB0aGUgc291cmNlIGFjdHVhbGx5IGNvbXBpbGVzIGFuZCBsaW5rcyB3aXRob3V0CiBlcnJvcnMgd2hlbiB0aGlzIHN5bWJvbCBpcyBkZWZpbmVkLgogCi0tIFNldmVyYWwgc3ltYm9scyB0aGF0IGRpZG4ndCBmb2xsb3cgdGhlIG5ldyBuYW1pbmcgc2NoZW1lIGhhdmUgYmVlbiAKLXJlbmFtZWQgKHVzdWFsbHkgYnkgYWRkaW5nIHRvIHJlbmFtZTIuaCkgdG8gdXNlIGEgUHkgb3IgX1B5IHByZWZpeC4gIFRoZXJlIAotYXJlIG5vIGV4dGVybmFsIHN5bWJvbHMgbGVmdCB3aXRob3V0IGEgUHkgb3IgX1B5IHByZWZpeCwgbm90IGV2ZW4gdGhvc2UgCi1kZWZpbmVkIGJ5IHNvdXJjZXMgdGhhdCB3ZXJlIGluY29ycG9yYXRlZCBmcm9tIGVsc2V3aGVyZSAocmVnZXhwci5jLCAKKy0gU2V2ZXJhbCBzeW1ib2xzIHRoYXQgZGlkbid0IGZvbGxvdyB0aGUgbmV3IG5hbWluZyBzY2hlbWUgaGF2ZSBiZWVuCityZW5hbWVkICh1c3VhbGx5IGJ5IGFkZGluZyB0byByZW5hbWUyLmgpIHRvIHVzZSBhIFB5IG9yIF9QeSBwcmVmaXguICBUaGVyZQorYXJlIG5vIGV4dGVybmFsIHN5bWJvbHMgbGVmdCB3aXRob3V0IGEgUHkgb3IgX1B5IHByZWZpeCwgbm90IGV2ZW4gdGhvc2UKK2RlZmluZWQgYnkgc291cmNlcyB0aGF0IHdlcmUgaW5jb3Jwb3JhdGVkIGZyb20gZWxzZXdoZXJlIChyZWdleHByLmMsCiBtZDVjLmMpLiAgKE1hY3JvcyBhcmUgYSBkaWZmZXJlbnQgc3RvcnkuLi4pCiAKLS0gVGhlcmUgYXJlIG5vdyB0eXBlZGVmcyBmb3IgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiBjb25maWcuYyBhbmQgCistIFRoZXJlIGFyZSBub3cgdHlwZWRlZnMgZm9yIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gY29uZmlnLmMgYW5kCiBmcm96ZW4uYy4KIAogLSBOZXcgUFlUSE9OX0FQSV9WRVJTSU9OIHZhbHVlIGFuZCAucHljIGZpbGUgbWFnaWMgbnVtYmVyLgpAQCAtMjU2ODksMTI1ICsyNTcyMiwxMjUgQEAKIC0gVGhlIGJpbmhleCBhbmQgYmluYXNjaWkgbW9kdWxlcyBub3cgYWN0dWFsbHkgd29yay4KIAogLSBUaGUgY2dpIG1vZHVsZSBoYXMgYmVlbiBhbG1vc3QgdG90YWxseSByZXdyaXR0ZW4gYW5kIGRvY3VtZW50ZWQuCi1JdCBub3cgc3VwcG9ydHMgZmlsZSB1cGxvYWQgYW5kIGEgbmV3IGRhdGEgdHlwZSB0byBoYW5kbGUgZm9ybXMgbW9yZSAKK0l0IG5vdyBzdXBwb3J0cyBmaWxlIHVwbG9hZCBhbmQgYSBuZXcgZGF0YSB0eXBlIHRvIGhhbmRsZSBmb3JtcyBtb3JlCiBmbGV4aWJseS4KIAogLSBUaGUgZm9ybWF0dGVyIG1vZHVsZSAoZm9yIHVzZSB3aXRoIGh0bWxsaWIpIGhhcyBiZWVuIG92ZXJoYXVsZWQgKGFnYWluKS4KIAogLSBUaGUgZnRwbGliIG1vZHVsZSBub3cgc3VwcG9ydHMgcGFzc2l2ZSBtb2RlIGFuZCBoYXMgZG9jIHN0cmluZ3MuCiAKLS0gSW4gKGlkZWFsbHkpIGFsbCBwbGFjZXMgd2hlcmUgYmluYXJ5IGZpbGVzIGFyZSByZWFkIG9yIHdyaXR0ZW4sIHRoZSBmaWxlIAotaXMgbm93IGNvcnJlY3RseSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUgKCdyYicgb3IgJ3diJykgc28gdGhlIGNvZGUgd2lsbCB3b3JrIAorLSBJbiAoaWRlYWxseSkgYWxsIHBsYWNlcyB3aGVyZSBiaW5hcnkgZmlsZXMgYXJlIHJlYWQgb3Igd3JpdHRlbiwgdGhlIGZpbGUKK2lzIG5vdyBjb3JyZWN0bHkgb3BlbmVkIGluIGJpbmFyeSBtb2RlICgncmInIG9yICd3YicpIHNvIHRoZSBjb2RlIHdpbGwgd29yawogb24gTWFjIG9yIFBDLgogCi0tIER1bW15IHZlcnNpb25zIG9mIG9zLnBhdGguZXhwYW5kdmFycygpIGFuZCBleHBhbmR1c2VyKCkgYXJlIG5vdyBwcm92aWRlZCAKKy0gRHVtbXkgdmVyc2lvbnMgb2Ygb3MucGF0aC5leHBhbmR2YXJzKCkgYW5kIGV4cGFuZHVzZXIoKSBhcmUgbm93IHByb3ZpZGVkCiBvbiBub24tVW5peCBwbGF0Zm9ybXMuCiAKLS0gTW9kdWxlIHVybGxpYiBub3cgaGFzIHR3byBuZXcgZnVuY3Rpb25zIHVybDJwYXRobmFtZSBhbmQgcGF0aG5hbWUydXJsIAotd2hpY2ggdHVybiBsb2NhbCBmaWxlbmFtZXMgaW50byAiZmlsZTouLi4iIFVSTHMgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgCi1OZXRzY2FwZSAod2h5IGJlIGRpZmZlcmVudCkuICBpdCBhbHNvIHN1cHBvcnRzIHVybHJldHJpZXZlKCkgd2l0aCBhIAotcGF0aG5hbWUgcGFyYW1ldGVyLCBhbmQgaG9ub3JzIHRoZSBwcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGh0dHBfcHJveHkgCistIE1vZHVsZSB1cmxsaWIgbm93IGhhcyB0d28gbmV3IGZ1bmN0aW9ucyB1cmwycGF0aG5hbWUgYW5kIHBhdGhuYW1lMnVybAord2hpY2ggdHVybiBsb2NhbCBmaWxlbmFtZXMgaW50byAiZmlsZTouLi4iIFVSTHMgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMKK05ldHNjYXBlICh3aHkgYmUgZGlmZmVyZW50KS4gIGl0IGFsc28gc3VwcG9ydHMgdXJscmV0cmlldmUoKSB3aXRoIGEKK3BhdGhuYW1lIHBhcmFtZXRlciwgYW5kIGhvbm9ycyB0aGUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIChodHRwX3Byb3h5CiBldGMuKS4gIFRoZSBVUkwgcGFyc2luZyBoYXMgYmVlbiBpbXByb3ZlZCBzb21ld2hhdCwgdG9vLgogCi0tIE1pY3JvIGltcHJvdmVtZW50cyB0byB1cmxwYXJzZS4gIEFkZGVkIHVybHBhcnNlLnVybGRlZnJhZygpIHdoaWNoIAorLSBNaWNybyBpbXByb3ZlbWVudHMgdG8gdXJscGFyc2UuICBBZGRlZCB1cmxwYXJzZS51cmxkZWZyYWcoKSB3aGljaAogcmVtb3ZlcyBhIHRyYWlsaW5nIGBgI2ZyYWdtZW50JycgaWYgYW55LgogCiAtIFRoZSBtYWlsYm94IG1vZHVsZSBub3cgc3VwcG9ydHMgTUggc3R5bGUgbWVzc2FnZSBkZWxpbWl0ZXJzIGFzIHdlbGwuCiAKLS0gVGhlIG1obGliIG1vZHVsZSBjb250YWlucyBzb21lIG5ldyBmdW5jdGlvbmFsaXR5OiBzZXRjb250ZXh0KCkgdG8gc2V0IHRoZSAKLWN1cnJlbnQgZm9sZGVyIGFuZCBwYXJzZXNlcXVlbmNlKCkgdG8gcGFyc2UgYSBzZXF1ZW5jZSBhcyBjb21tb25seSBwYXNzZWQgCistIFRoZSBtaGxpYiBtb2R1bGUgY29udGFpbnMgc29tZSBuZXcgZnVuY3Rpb25hbGl0eTogc2V0Y29udGV4dCgpIHRvIHNldCB0aGUKK2N1cnJlbnQgZm9sZGVyIGFuZCBwYXJzZXNlcXVlbmNlKCkgdG8gcGFyc2UgYSBzZXF1ZW5jZSBhcyBjb21tb25seSBwYXNzZWQKIHRvIE1IIGNvbW1hbmRzIChlLmcuIDEtMTAgb3IgbGFzdDo1KS4KIAotLSBOZXcgbW9kdWxlIG1pbWlmeSBmb3IgY29udmVyc2lvbiB0byBhbmQgZnJvbSBNSU1FIGZvcm1hdCBvZiBlbWFpbCAKKy0gTmV3IG1vZHVsZSBtaW1pZnkgZm9yIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gTUlNRSBmb3JtYXQgb2YgZW1haWwKIG1lc3NhZ2VzLgogCi0tIE1vZHVsZSBuaSBub3cgYXV0b21hdGljYWxseSBpbnN0YWxscyBpdHNlbGYgd2hlbiBmaXJzdCBpbXBvcnRlZCAtLSB0aGlzIAotaXMgYWdhaW5zdCB0aGUgbm9ybWFsIHJ1bGUgdGhhdCBtb2R1bGVzIHNob3VsZCBkZWZpbmUgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIAotYnV0IG5vdCBpbnZva2UgdGhlbSwgYnV0IGFwcGVhcnMgbW9yZSB1c2VmdWwgaW4gdGhlIGNhc2UgdGhhdCB0d28gCistIE1vZHVsZSBuaSBub3cgYXV0b21hdGljYWxseSBpbnN0YWxscyBpdHNlbGYgd2hlbiBmaXJzdCBpbXBvcnRlZCAtLSB0aGlzCitpcyBhZ2FpbnN0IHRoZSBub3JtYWwgcnVsZSB0aGF0IG1vZHVsZXMgc2hvdWxkIGRlZmluZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKK2J1dCBub3QgaW52b2tlIHRoZW0sIGJ1dCBhcHBlYXJzIG1vcmUgdXNlZnVsIGluIHRoZSBjYXNlIHRoYXQgdHdvCiBkaWZmZXJlbnQsIGluZGVwZW5kZW50IG1vZHVsZXMgd2FudCB0byB1c2UgbmkncyBmZWF0dXJlcy4KIAogLSBTb21lIHNtYWxsIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBpbiBtb2R1bGUgcGlja2xlLgogCi0tIFNtYWxsIGludGVyZmFjZSBjaGFuZ2UgdG8gdGhlIHByb2ZpbGUucnVuKigpIGZhbWlseSBvZiBmdW5jdGlvbnMgLS0gbW9yZSAKKy0gU21hbGwgaW50ZXJmYWNlIGNoYW5nZSB0byB0aGUgcHJvZmlsZS5ydW4qKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyAtLSBtb3JlCiBzZW5zaWJsZSBoYW5kbGluZyBvZiByZXR1cm4gdmFsdWVzLgogCi0tIFRoZSBvZmZpY2lhbGx5IHJlZ2lzdGVyZWQgTWFjIGNyZWF0b3IgZm9yIFB5dGhvbiBmaWxlcyBpcyAnUHl0aCcuICBUaGlzIAorLSBUaGUgb2ZmaWNpYWxseSByZWdpc3RlcmVkIE1hYyBjcmVhdG9yIGZvciBQeXRob24gZmlsZXMgaXMgJ1B5dGgnLiAgVGhpcwogcmVwbGFjZXMgJ1BZVEgnIHdoaWNoIHdhcyB1c2VkIGJlZm9yZSBidXQgbmV2ZXIgcmVnaXN0ZXJlZC4KIAogLSBBZGRlZCByZWdzdWIuY2Fwd29yZHMoKS4gIChYWFgpCiAKLS0gQWRkZWQgc3RyaW5nLmNhcHdvcmRzKCksIHN0cmluZy5jYXBpdGFsaXplKCkgYW5kIHN0cmluZy50cmFuc2xhdGUoKS4gIAorLSBBZGRlZCBzdHJpbmcuY2Fwd29yZHMoKSwgc3RyaW5nLmNhcGl0YWxpemUoKSBhbmQgc3RyaW5nLnRyYW5zbGF0ZSgpLgogKFhYWCkKIAotLSBGaXhlZCBhbiBpbnRlcmZhY2UgYnVnIGluIHRoZSByZXhlYyBtb2R1bGU6IGl0IHdhcyBpbXBvc3NpYmxlIHRvIHBhc3MgYSAKLWhvb2tzIGluc3RhbmNlIHRvIHRoZSBSRXhlYyBjbGFzcy4gIHJleGVjIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBkeW5hbWljIAotbG9hZGluZyBvZiBtb2R1bGVzIGZyb20gc2hhcmVkIGxpYnJhcmllcy4gIFNvbWUgb3RoZXIgaW50ZXJmYWNlcyBoYXZlIGJlZW4gCistIEZpeGVkIGFuIGludGVyZmFjZSBidWcgaW4gdGhlIHJleGVjIG1vZHVsZTogaXQgd2FzIGltcG9zc2libGUgdG8gcGFzcyBhCitob29rcyBpbnN0YW5jZSB0byB0aGUgUkV4ZWMgY2xhc3MuICByZXhlYyBub3cgYWxzbyBzdXBwb3J0cyB0aGUgZHluYW1pYworbG9hZGluZyBvZiBtb2R1bGVzIGZyb20gc2hhcmVkIGxpYnJhcmllcy4gIFNvbWUgb3RoZXIgaW50ZXJmYWNlcyBoYXZlIGJlZW4KIGFkZGVkIHRvby4KIAotLSBNb2R1bGUgcmZjODIyIG5vdyBjYWNoZXMgdGhlIGhlYWRlcnMgaW4gYSBkaWN0aW9uYXJ5IGZvciBtb3JlIGVmZmljaWVudCAKKy0gTW9kdWxlIHJmYzgyMiBub3cgY2FjaGVzIHRoZSBoZWFkZXJzIGluIGEgZGljdGlvbmFyeSBmb3IgbW9yZSBlZmZpY2llbnQKIGxvb2t1cC4KIAotLSBUaGUgc2dtbGxpYiBtb2R1bGUgbm93IHVuZGVyc3RhbmRzIGEgbGltaXRlZCBudW1iZXIgb2YgU0dNTCAic2hvcnRoYW5kcyIgCistIFRoZSBzZ21sbGliIG1vZHVsZSBub3cgdW5kZXJzdGFuZHMgYSBsaW1pdGVkIG51bWJlciBvZiBTR01MICJzaG9ydGhhbmRzIgogbGlrZSA8QS8uLi4vIGZvciA8QT4uLi48L0E+LiAgKEl0J3Mgbm90IGNsZWFyIHRoYXQgdGhpcyB3YXMgYSBnb29kIGlkZWEuLi4pCiAKLS0gVGhlIHRlbXBmaWxlIG1vZHVsZSBhY3R1YWxseSB0cmllcyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcGxhY2VzIHRvIGZpbmQgYSAKLXVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAgKFRoaXMgd2FzIHByb21wdGVkIGJ5IGNlcnRhaW4gTGludXggCi1pbnN0YWxsYXRpb25zIHRoYXQgYXBwZWFyIHRvIGJlIG1pc3NpbmcgYSAvdXNyL3RtcCBkaXJlY3RvcnkuKSBbQSBidWcgaW4gCi10aGUgaW1wbGVtZW50YXRpb24gdGhhdCB3b3VsZCBpZ25vcmUgYSBwcmUtZXhpc3RpbmcgdG1wZGlyIGdsb2JhbCBoYXMgYmVlbiAKKy0gVGhlIHRlbXBmaWxlIG1vZHVsZSBhY3R1YWxseSB0cmllcyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcGxhY2VzIHRvIGZpbmQgYQordXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkuICAoVGhpcyB3YXMgcHJvbXB0ZWQgYnkgY2VydGFpbiBMaW51eAoraW5zdGFsbGF0aW9ucyB0aGF0IGFwcGVhciB0byBiZSBtaXNzaW5nIGEgL3Vzci90bXAgZGlyZWN0b3J5LikgW0EgYnVnIGluCit0aGUgaW1wbGVtZW50YXRpb24gdGhhdCB3b3VsZCBpZ25vcmUgYSBwcmUtZXhpc3RpbmcgdG1wZGlyIGdsb2JhbCBoYXMgYmVlbgogZml4ZWQgaW4gYmV0YTMuXQogCiAtIE11Y2ggaW1wcm92ZWQgYW5kIGVuaGFudmVkIEZpbGVEaWFsb2cgbW9kdWxlIGZvciBUa2ludGVyLgogCi0tIE1hbnkgc21hbGwgY2hhbmdlcyB0byBUa2ludGVyLCB0byBicmluZyBpdCBtb3JlIGluIGxpbmUgd2l0aCBUayA0LjAgKGFzIAorLSBNYW55IHNtYWxsIGNoYW5nZXMgdG8gVGtpbnRlciwgdG8gYnJpbmcgaXQgbW9yZSBpbiBsaW5lIHdpdGggVGsgNC4wIChhcwogd2VsbCBhcyBUayA0LjEpLgogCi0tIE5ldyBzb2NrZXQgaW50ZXJmYWNlcyBpbmNsdWRlIG50b2hzKCksIG50b2hsKCksIGh0b25zKCksIGh0b25sKCksIGFuZCAKLXMuZHVwKCkuICBTb2NrZXRzIG5vdyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLiAgT24gV2luZG93cywgdGhlIGJ1aWx0LWluIAotZXh0ZW5zaW9uIGlzIGNhbGxlZCBfc29ja2V0IGFuZCBhIHdyYXBwZXIgbW9kdWxlIHdpbi9zb2NrZXQucHkgcHJvdmlkZXMgCi0ibWFrZWZpbGUoKSIgYW5kICJkdXAoKSIgZnVuY3Rpb25hbGl0eS4gIE9uIFdpbmRvd3MsIHRoZSBzZWxlY3QgbW9kdWxlIAorLSBOZXcgc29ja2V0IGludGVyZmFjZXMgaW5jbHVkZSBudG9ocygpLCBudG9obCgpLCBodG9ucygpLCBodG9ubCgpLCBhbmQKK3MuZHVwKCkuICBTb2NrZXRzIG5vdyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLiAgT24gV2luZG93cywgdGhlIGJ1aWx0LWluCitleHRlbnNpb24gaXMgY2FsbGVkIF9zb2NrZXQgYW5kIGEgd3JhcHBlciBtb2R1bGUgd2luL3NvY2tldC5weSBwcm92aWRlcworIm1ha2VmaWxlKCkiIGFuZCAiZHVwKCkiIGZ1bmN0aW9uYWxpdHkuICBPbiBXaW5kb3dzLCB0aGUgc2VsZWN0IG1vZHVsZQogd29ya3Mgb25seSB3aXRoIHNvY2tldCBvYmplY3RzLgogCiAtIEJ1Z3MgaW4gYnNkZGIgbW9kdWxlIGZpeGVkIChlLmcuIG1pc3NpbmcgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMpLgogCiAtIFRoZSBjdXJzZXMgZXh0ZW5zaW9uIG5vdyBpbmNsdWRlcyA8bmN1cnNlcy5oPiB3aGVuIGF2YWlsYWJsZS4KIAotLSBUaGUgZ2RibSBtb2R1bGUgbm93IHN1cHBvcnRzIG9wZW5pbmcgZGF0YWJhc2VzIGluICJmYXN0IiBtb2RlIGJ5IAorLSBUaGUgZ2RibSBtb2R1bGUgbm93IHN1cHBvcnRzIG9wZW5pbmcgZGF0YWJhc2VzIGluICJmYXN0IiBtb2RlIGJ5CiBzcGVjaWZ5aW5nICdmJyBhcyB0aGUgc2Vjb25kIGNoYXJhY3RlciBvciB0aGUgbW9kZSBzdHJpbmcuCiAKLS0gbmV3IHZhcmlhYmxlcyBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggcGFzcyBjb3JyZXNwb25kaW5nIAorLSBuZXcgdmFyaWFibGVzIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBwYXNzIGNvcnJlc3BvbmRpbmcKIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAvIE1ha2VmaWxlIHZhcmlhYmxlcyB0byB0aGUgUHl0aG9uIHByb2dyYW1tZXIuCiAKLS0gVGhlIGBgbmV3JycgbW9kdWxlIG5vdyBzdXBwb3J0cyBjcmVhdGluZyBuZXcgdXNlci1kZWZpbmVkIGNsYXNzZXMgYXMgd2VsbCAKKy0gVGhlIGBgbmV3JycgbW9kdWxlIG5vdyBzdXBwb3J0cyBjcmVhdGluZyBuZXcgdXNlci1kZWZpbmVkIGNsYXNzZXMgYXMgd2VsbAogYXMgaW5zdGFuY2VzIHRoZXJlb2YuCiAKLS0gVGhlIHNvdW5kZXggbW9kdWxlIG5vdyBzcG9ydHMgZ2V0X3NvdW5kZXgoKSB0byBnZXQgdGhlIHNvdW5kZXggdmFsdWUgZm9yIGFuIAotYXJiaXRyYXJ5IHN0cmluZyAoZm9ybWVybHkgaXQgd291bGQgb25seSBkbyBzb3VuZGV4LWJhc2VkIHN0cmluZyAKKy0gVGhlIHNvdW5kZXggbW9kdWxlIG5vdyBzcG9ydHMgZ2V0X3NvdW5kZXgoKSB0byBnZXQgdGhlIHNvdW5kZXggdmFsdWUgZm9yIGFuCithcmJpdHJhcnkgc3RyaW5nIChmb3JtZXJseSBpdCB3b3VsZCBvbmx5IGRvIHNvdW5kZXgtYmFzZWQgc3RyaW5nCiBjb21wYXJpc29uKSBhcyB3ZWxsIGFzIGRvYyBzdHJpbmdzLgogCi0tIE5ldyBvYmplY3QgdHlwZSAiY29iamVjdCIgdG8gc2FmZWx5IHdyYXAgdm9pZCBwb2ludGVycyBmb3IgcGFzc2luZyB0aGVtIAorLSBOZXcgb2JqZWN0IHR5cGUgImNvYmplY3QiIHRvIHNhZmVseSB3cmFwIHZvaWQgcG9pbnRlcnMgZm9yIHBhc3NpbmcgdGhlbQogYmV0d2VlbiB2YXJpb3VzIGV4dGVuc2lvbiBtb2R1bGVzLgogCiAtIE1vcmUgZWZmaWNpZW50IGNvbXB1dGF0aW9uIG9mIGZsb2F0KipzbWFsbGludC4KIAotLSBUaGUgbXlzdGVyaW91cyBidWcgd2hlcmVieSAieC54IiAodHdvIG9jY3VycmVuY2VzIG9mIHRoZSBzYW1lIAotb25lLWNoYXJhY3RlciBuYW1lKSB0eXBlZCBmcm9tIHRoZSBjb21tYW5kbGluZSB3b3VsZCBzb21ldGltZXMgZmFpbCAKKy0gVGhlIG15c3RlcmlvdXMgYnVnIHdoZXJlYnkgIngueCIgKHR3byBvY2N1cnJlbmNlcyBvZiB0aGUgc2FtZQorb25lLWNoYXJhY3RlciBuYW1lKSB0eXBlZCBmcm9tIHRoZSBjb21tYW5kbGluZSB3b3VsZCBzb21ldGltZXMgZmFpbAogbXlzdGVyaW91c2x5LgogCi0tIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmVhZGxpbmUgZnVuY3Rpb24gY2FuIG5vdyBiZSBpbnZva2VkIGJ5IGEgQyAKKy0gVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSByZWFkbGluZSBmdW5jdGlvbiBjYW4gbm93IGJlIGludm9rZWQgYnkgYSBDCiBleHRlbnNpb24gdGhyb3VnaCBQeU9TX1JlYWRsaW5lSW5pdCgpLgogCi0tIFRoZXJlJ3Mgbm93IGFuIGV4dGVybmFsbHkgdmlzaWJsZSBwb2ludGVyIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgd2hpY2ggCistIFRoZXJlJ3Mgbm93IGFuIGV4dGVybmFsbHkgdmlzaWJsZSBwb2ludGVyIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgd2hpY2gKIGNhbiBiZSBjaGFuZ2VkIGJ5IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbi4KIAotLSBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgbm93IHN1cHBvcnQgYSBuZXcgZm9ybWF0IGNoYXJhY3RlciAnRCcgdG8gCistIFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIG5ldyBmb3JtYXQgY2hhcmFjdGVyICdEJyB0bwogc3BlY2lmeSBjb21wbGV4IG51bWJlcnMuCiAKIC0gVmFyaW91cyBtZW1vcnkgbGVha3MgcGx1Z2dlZCBhbmQgYnVncyBmaXhlZC4KIAotLSBJbXByb3ZlZCBzdXBwb3J0IGZvciBwb3NpeCB0aHJlYWRzIChub3cgdGhhdCByZWFsIGltcGxlbWVudGF0aW9ucyBhcmUgCistIEltcHJvdmVkIHN1cHBvcnQgZm9yIHBvc2l4IHRocmVhZHMgKG5vdyB0aGF0IHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZQogYmVnaW5uaW5nIHRvIGFwZXBhcikuICBTdGlsbCBubyBmdWxseSBmdW5jdGlvbmluZyBzZW1hcGhvcmVzLgogCi0tIFNvbWUgdmFyaW91cyBhbmQgc3VuZHJ5IGltcHJvdmVtZW50cyBhbmQgbmV3IGVudHJpZXMgaW4gdGhlIFRvb2xzIAorLSBTb21lIHZhcmlvdXMgYW5kIHN1bmRyeSBpbXByb3ZlbWVudHMgYW5kIG5ldyBlbnRyaWVzIGluIHRoZSBUb29scwogZGlyZWN0b3J5LgogCiAKQEAgLTI3NDE3LDcgKzI3NDUwLDcgQEAKIFRoZSBsaW1pdCBvbiB0aGUgc2l6ZSBvZiB0aGUgKnJ1bi10aW1lKiBzdGFjayBoYXMgY29tcGxldGVseSBiZWVuCiByZW1vdmVkIC0tIHRoaXMgbWVhbnMgdGhhdCB0dXBsZSBvciBsaXN0IGRpc3BsYXlzIGNhbiBjb250YWluIGFueQogbnVtYmVyIG9mIGVsZW1lbnRzIChmb3JtZXJseSBtb3JlIHRoYW4gNTAgd291bGQgY3Jhc2ggdGhlCi1pbnRlcnByZXRlcikuIAoraW50ZXJwcmV0ZXIpLgogCiAKIENoYW5nZXMgdG8gZXhpc3RpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggYjJmNDk2MC4uMmIwMmYxZCAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxOCArMiwxMTIgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuNHJjMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IHRiYQorUmVsZWFzZSBkYXRlOiAyMDE1LTA3LTA1CiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyNDM0NTogQWRkIFB5X3RwX2ZpbmFsaXplIHNsb3QgZm9yIHRoZSBzdGFibGUgQUJJLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI0NDA4OiBGaXhlZCBBdHRyaWJ1dGVFcnJvciBpbiBtZWFzdXJlKCkgYW5kIG1ldHJpY3MoKSBtZXRob2RzIG9mCisgIHRraW50ZXIuRm9udC4KKworLSBJc3N1ZSAjMTQzNzM6IEMgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBjYW4gYmUgdXNlZCB3aXRoCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzgyMzI6IHdlYmJyb3dzZXIgc3VwcG9ydCBpbmNvbXBsZXRlIG9uIFdpbmRvd3MuIFBhdGNoIGJ5IEJyYW5kb24KKyAgTWlsYW0KKworLSBJc3N1ZSAjMjQzNDc6IFNldCBLZXlFcnJvciBpZiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvciByZXR1cm5zIE5VTEwuCisKKy0gSXNzdWUgIzI0MzQ4OiBEcm9wIHN1cGVyZmx1b3VzIGluY3JlZi9kZWNyZWYuCisKKy0gSXNzdWUgIzI0MzU5OiBDaGVjayBmb3IgY2hhbmdlZCBPcmRlcmVkRGljdCBzaXplIGR1cmluZyBpdGVyYXRpb24uCisKKy0gSXNzdWUgIzI0MzY4OiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIGluIE9yZGVyZWREaWN0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzI0MzYyOiBTaW1wbGlmeSB0aGUgQyBPcmRlcmVkRGljdCBmYXN0IG5vZGVzIHJlc2l6ZSBsb2dpYy4KKworLSBJc3N1ZSAjMjQzNzc6IEZpeCBhIHJlZiBsZWFrIGluIE9yZGVyZWREaWN0Ll9fcmVwcl9fLgorCistIElzc3VlICMyNDM2OTogRGVmZW5kIGFnYWluc3Qga2V5LWNoYW5nZXMgZHVyaW5nIGl0ZXJhdGlvbi4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI0MzczOiBfdGVzdG11bHRpcGhhc2UgYW5kIHh4bGltaXRlZCBub3cgdXNlIHRwX3RyYXZlcnNlIGFuZAorICB0cF9maW5hbGl6ZSB0byBhdm9pZCByZWZlcmVuY2UgbGVha3MgZW5jb3VudGVyZWQgd2hlbiBjb21iaW5pbmcgdHBfZGVhbGxvYworICB3aXRoIFB5VHlwZV9Gcm9tU3BlYyAoc2VlIGlzc3VlICMxNjY5MCBmb3IgZGV0YWlscykKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDM1MTogQ2xhcmlmeSB3aGF0IGlzIG1lYW50IGJ5ICJpZGVudGlmaWVyIiBpbiB0aGUgY29udGV4dCBvZgorICBzdHJpbmcuVGVtcGxhdGUgaW5zdGFuY2VzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA1LTMxCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDI4NDogVGhlIHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG1ldGhvZHMgb2YgdGhlIHN0ciBjbGFzcyBubyBsb25nZXIKKyAgcmV0dXJuIFRydWUgd2hlbiBmaW5kaW5nIHRoZSBlbXB0eSBzdHJpbmcgYW5kIHRoZSBpbmRleGVzIGFyZSBjb21wbGV0ZWx5IG91dAorICBvZiByYW5nZS4KKwogLSBJc3N1ZSAjMjQxMTU6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpLCBQeU9iamVjdF9Ob3QoKSwKICAgUHlPYmplY3RfSXNJbnN0YW5jZSgpLCBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woKSBhbmQgX1B5RGljdF9Db250YWlucygpCiAgIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzI0MzI4OiBGaXggaW1wb3J0aW5nIG9uZSBjaGFyYWN0ZXIgZXh0ZW5zaW9uIG1vZHVsZXMuCisKKy0gSXNzdWUgIzExMjA1OiBJbiBkaWN0aW9uYXJ5IGRpc3BsYXlzLCBldmFsdWF0ZSB0aGUga2V5IGJlZm9yZSB0aGUgdmFsdWUuCisKKy0gSXNzdWUgIzI0Mjg1OiBGaXhlZCByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGltcG9ydGluZyBleHRlbnNpb24gbW9kdWxlcworICBmcm9tIGluc2lkZSBwYWNrYWdlcy4gUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNDI3MDogQWRkIG1hdGguaXNjbG9zZSgpIGFuZCBjbWF0aC5pc2Nsb3NlKCkgZnVuY3Rpb25zIGFzIHBlciBQRVAgNDg1LgorICBDb250cmlidXRlZCBieSBDaHJpcyBCYXJrZXIgYW5kIFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjNTYzMzogRml4ZWQgdGltZWl0IHdoZW4gdGhlIHN0YXRlbWVudCBpcyBhIHN0cmluZyBhbmQgdGhlIHNldHVwIGlzIG5vdC4KKworLSBJc3N1ZSAjMjQzMjY6IEZpeGVkIGF1ZGlvb3AucmF0ZWN2KCkgd2l0aCBub24tZGVmYXVsdCB3ZWlnaHRCIGFyZ3VtZW50LgorICBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZCBNb29yZS4KKworLSBJc3N1ZSAjMTY5OTE6IEFkZCBhIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIzOTM0OiBGaXggaW5zcGVjdC5zaWduYXR1cmUgdG8gZmFpbCBjb3JyZWN0bHkgZm9yIGJ1aWx0aW4gdHlwZXMKKyAgbGFja2luZyBzaWduYXR1cmUgaW5mb3JtYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIFBvd2VsbC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNS0yNAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQyNzY6IEZpeGVkIG9wdGltaXphdGlvbiBvZiBwcm9wZXJ0eSBkZXNjcmlwdG9yIGdldHRlci4KKworLSBJc3N1ZSAjMjQyNjg6IFBFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKKyAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzeXN0ZW0gZXJyb3IgaW4gdGhlIGNvbXBhcmlzb24gb2YgZmFrZWQKICAgdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgogCkBAIC0yNSw4ICsxMTksMTIgQEAKIAogLSBJc3N1ZSAjMjQxMDI6IEZpeGVkIGV4Y2VwdGlvbiB0eXBlIGNoZWNraW5nIGluIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJzLgogCi0tIElzc3VlICMyMzc1NzogIFB5U2VxdWVuY2VfVHVwbGUoKSBpbmNvcnJlY3RseSBjYWxsZWQgdGhlIGNvbmNyZXRlIGxpc3QgQVBJCi0gIHdoZW4gdGhlIGRhdGEgd2FzIGEgbGlzdCBzdWJjbGFzcy4KKy0gSXNzdWUgIzE1MDI3OiBUaGUgVVRGLTMyIGVuY29kZXIgaXMgbm93IDN4IHRvIDd4IGZhc3Rlci4KKworLSBJc3N1ZSAjMjMyOTA6ICBPcHRpbWl6ZSBzZXRfbWVyZ2UoKSBmb3IgY2FzZXMgd2hlcmUgdGhlIHRhcmdldCBpcyBlbXB0eS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EuKQorCistIElzc3VlICMyMjkyOiBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMuCiAKIC0gSXNzdWUgIzI0MDk2OiBNYWtlIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgbW9yZSByb2J1c3QgYWdhaW5zdCBtdXRhdGlvbiBvZiB0aGUKICAgd2FybmluZ3MuZmlsdGVycyBsaXN0LgpAQCAtMzQsNDggKzEzMiw2OCBAQAogLSBJc3N1ZSAjMjM5OTY6IEF2b2lkIGEgY3Jhc2ggd2hlbiBhIGRlbGVnYXRlZCBnZW5lcmF0b3IgcmFpc2VzIGFuCiAgIHVubm9ybWFsaXplZCBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCiAKKy0gSXNzdWUgIzIzOTEwOiBPcHRpbWl6ZSBwcm9wZXJ0eSgpIGdldHRlciBjYWxscy4gIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzIzOTExOiBNb3ZlIHBhdGgtYmFzZWQgaW1wb3J0bGliIGJvb3RzdHJhcCBjb2RlIHRvIGEgc2VwYXJhdGUKKyAgZnJvemVuIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQxOTI6IEZpeCBuYW1lc3BhY2UgcGFja2FnZSBpbXBvcnRzLgorCiAtIElzc3VlICMyNDAyMjogRml4IHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUuCiAKLS0gSXNzdWUgIzIzMzA5OiBBdm9pZCBhIGRlYWRsb2NrIGF0IHNodXRkb3duIGlmIGEgZGFlbW9uIHRocmVhZCBpcyBhYm9ydGVkCi0gIHdoaWxlIGl0IGlzIGhvbGRpbmcgYSBsb2NrIHRvIGEgYnVmZmVyZWQgSS9PIG9iamVjdCwgYW5kIHRoZSBtYWluIHRocmVhZAotICB0cmllcyB0byB1c2UgdGhlIHNhbWUgSS9PIG9iamVjdCAodHlwaWNhbGx5IHN0ZG91dCBvciBzdGRlcnIpLiAgQSBmYXRhbAotICBlcnJvciBpcyBlbWl0dGVkIGluc3RlYWQuCistIElzc3VlICM5OTUxOiBBZGRlZCBhIGhleCgpIG1ldGhvZCB0byBieXRlcywgYnl0ZWFycmF5LCBhbmQgbWVtb3J5dmlldy4KIAotLSBJc3N1ZSAjMjI5Nzc6IEZpeGVkIGZvcm1hdHRpbmcgV2luZG93cyBlcnJvciBtZXNzYWdlcyBvbiBXaW5lLgotICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorLSBJc3N1ZSAjMjI5MDY6IFBFUCA0Nzk6IENoYW5nZSBTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzLgogCi0tIElzc3VlICMyMzgwMzogRml4ZWQgc3RyLnBhcnRpdGlvbigpIGFuZCBzdHIucnBhcnRpdGlvbigpIHdoZW4gYSBzZXBhcmF0b3IKLSAgaXMgd2lkZXIgdGhlbiBwYXJ0aXRpb25lZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzIzMTkyOiBGaXhlZCBnZW5lcmF0b3IgbGFtYmRhcy4gIFBhdGNoIGJ5IEJydW5vIENhdWV0LgotCi0tIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCi0gIG9iamVjdHMuCi0KLS0gSXNzdWUgIzI0MDQ0OiBGaXggcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxpc3Quc29ydCBpbiBvdXQgb2YKLSAgbWVtb3J5IGNvbmRpdGlvbnMuCi0KLS0gSXNzdWUgIzIxMzU0OiBQeUNGdW5jdGlvbl9OZXcgZnVuY3Rpb24gaXMgZXhwb3NlZCBieSBweXRob24gRExMIGFnYWluLgorLSBJc3N1ZSAjMjQwMTc6IFBFUCA0OTI6IENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4LgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzU2MzM6IEZpeGVkIHRpbWVpdCB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgYSBzdHJpbmcgYW5kIHRoZSBzZXR1cCBpcyBub3QuCistIElzc3VlICMxNDM3MzogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlKCkuICBCYXNlZCBvbgorICBwYXRjaGVzIGJ5IE1hdHQgSm9pbmVyIGFuZCBBbGV4ZXkgS2FjaGF5ZXYuCiAKLS0gSXNzdWUgIzI0MzI2OiBGaXhlZCBhdWRpb29wLnJhdGVjdigpIHdpdGggbm9uLWRlZmF1bHQgd2VpZ2h0QiBhcmd1bWVudC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQgTW9vcmUuCistIElzc3VlIDI0MjMwOiBUaGUgdGVtcGZpbGUgbW9kdWxlIG5vdyBhY2NlcHRzIGJ5dGVzIGZvciBwcmVmaXgsIHN1ZmZpeCBhbmQgZGlyCisgIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYnl0ZXMgaW4gc3VjaCBzaXR1YXRpb25zIChtYXRjaGluZyB0aGUgb3MgbW9kdWxlIEFQSXMpLgogCi0tIElzc3VlICMyMzg0MDogdG9rZW5pemUub3BlbigpIG5vdyBjbG9zZXMgdGhlIHRlbXBvcmFyeSBiaW5hcnkgZmlsZSBvbiBlcnJvcgotICB0byBmaXggYSByZXNvdXJjZSB3YXJuaW5nLgorLSBJc3N1ZSAjMjIxODk6IGNvbGxlY3Rpb25zLlVzZXJTdHJpbmcgbm93IHN1cHBvcnRzIF9fZ2V0bmV3YXJnc19fKCksCisgIF9fcm1vZF9fKCksIGNhc2Vmb2xkKCksIGZvcm1hdF9tYXAoKSwgaXNwcmludGFibGUoKSwgYW5kIG1ha2V0cmFucygpLgorICBQYXRjaCBieSBKb2UgSmV2bmlrLgorCistIElzc3VlIDI0MjQ0OiBQcmV2ZW50cyB0ZXJtaW5hdGlvbiB3aGVuIGFuIGludmFsaWQgZm9ybWF0IHN0cmluZyBpcworICBlbmNvdW50ZXJlZCBvbiBXaW5kb3dzIGluIHN0cmZ0aW1lLgorCistIElzc3VlICMyMzk3MzogUEVQIDQ4NDogQWRkIHRoZSB0eXBpbmcgbW9kdWxlLgorCistIElzc3VlICMyMzA4NjogVGhlIGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSgpIGFic3RyYWN0IGJhc2UgY2xhc3MgYWRkZWQKKyAgKnN0YXJ0KiBhbmQgKnN0b3AqIHBhcmFtZXRlcnMgdG8gdGhlIGluZGV4KCkgbWl4aW4uCisgIFBhdGNoIGJ5IERldmluIEplYW5waWVycmUuCisKKy0gSXNzdWUgIzIwMDM1OiBSZXBsYWNlZCB0aGUgYGB0a2ludGVyLl9maXhgYCBtb2R1bGUgdXNlZCBmb3Igc2V0dGluZyB1cCB0aGUKKyAgVGNsL1RrIGVudmlyb25tZW50IG9uIFdpbmRvd3Mgd2l0aCBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIGBgX3RraW50ZXJgYAorICBtb2R1bGUgdGhhdCBtYWtlcyBubyBwZXJtYW5lbnQgY2hhbmdlcyB0byB0aGUgZW52aXJvbm1lbnQuCiAKIC0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgaW4gc3FsaXRlMy5Sb3cgY29uc3RydWN0b3Igd2l0aCBmYWtlZAogICBjdXJzb3IgdHlwZS4KIAorLSBJc3N1ZSAjMTU4MzY6IGFzc2VydFJhaXNlcygpLCBhc3NlcnRSYWlzZXNSZWdleCgpLCBhc3NlcnRXYXJucygpIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4KCkgYXNzZXJ0bWVudHMgbm93IGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudAorICB0byBwcmV2ZW50IHBvc3NpYmxlIHVzZXIgZXJyb3IuICBCYXNlZCBvbiBwYXRjaCBieSBEYW5pZWwgV2FnbmVyLUhhbGwuCisKKy0gSXNzdWUgIzk4NTg6IEFkZCBtaXNzaW5nIG1ldGhvZCBzdHVicyB0byBfaW8uUmF3SU9CYXNlLiAgUGF0Y2ggYnkgTGF1cmEKKyAgUnVwcHJlY2h0LgorCistIElzc3VlICMyMjk1NTogYXR0cmdldHRlciwgaXRlbWdldHRlciBhbmQgbWV0aG9kY2FsbGVyIG9iamVjdHMgaW4gdGhlIG9wZXJhdG9yCisgIG1vZHVsZSBub3cgc3VwcG9ydCBwaWNrbGluZy4gIEFkZGVkIHJlYWRhYmxlIGFuZCBldmFsdWFibGUgcmVwciBmb3IgdGhlc2UKKyAgb2JqZWN0cy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCiAtIElzc3VlICMyMjEwNzogdGVtcGZpbGUuZ2V0dGVtcGRpcigpIGFuZCB0ZW1wZmlsZS5ta2R0ZW1wKCkgbm93IHRyeSBhZ2FpbgogICB3aGVuIGEgZGlyZWN0b3J5IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzIG9uIFdpbmRvd3MgYXMgd2VsbCBhcwogICBvbiBVbml4LiAgdGVtcGZpbGUubWtzdGVtcCgpIG5vdyBmYWlscyBlYXJseSBpZiBwYXJlbnQgZGlyZWN0b3J5IGlzIG5vdAogICB2YWxpZCAobm90IGV4aXN0cyBvciBpcyBhIGZpbGUpIG9uIFdpbmRvd3MuCiAKKy0gSXNzdWUgIzIzNzgwOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIGluIG9zLnBhdGguam9pbigpIHdpdGggc2luZ2xlIGFyZ3VtZW50LgorCiAtIElzc3VlICM2NTk4OiBJbmNyZWFzZWQgdGltZSBwcmVjaXNpb24gYW5kIHJhbmRvbSBudW1iZXIgcmFuZ2UgaW4KICAgZW1haWwudXRpbHMubWFrZV9tc2dpZCgpIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgSUQuCiAKQEAgLTg2LDM2ICsyMDQsODUgQEAKICAgYXJndW1lbnQgaW5zdGVhZCBvZiBhIFZhbHVlRXJyb3Igd2l0aCBhIGJvZ3VzIEZDSSBlcnJvciBudW1iZXIuCiAgIFBhdGNoIGJ5IEplZmZyZXkgQXJtc3Ryb25nLgogCistIElzc3VlICMxMzg2NjogKnF1b3RlX3ZpYSogYXJndW1lbnQgYWRkZWQgdG8gdXJsbGliLnBhcnNlLnVybGVuY29kZS4KKworLSBJc3N1ZSAjMjAwOTg6IE5ldyBtYW5nbGVfZnJvbSBwb2xpY3kgb3B0aW9uIGZvciBlbWFpbCwgZGVmYXVsdCBUcnVlCisgIGZvciBjb21wYXQzMiwgYnV0IEZhbHNlIGZvciBhbGwgb3RoZXIgcG9saWNpZXMuCisKKy0gSXNzdWUgIzI0MjExOiBUaGUgZW1haWwgbGlicmFyeSBub3cgc3VwcG9ydHMgUkZDIDY1MzI6IGl0IGNhbiBnZW5lcmF0ZQorICBoZWFkZXJzIHVzaW5nIHV0Zi04IGluc3RlYWQgb2YgZW5jb2RlZCB3b3Jkcy4KKworLSBJc3N1ZSAjMTYzMTQ6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBMWk1BIGNvbXByZXNzaW9uIGluIGRpc3R1dGlscy4KKworLSBJc3N1ZSAjMjE4MDQ6IHBvcGxpYiBub3cgc3VwcG9ydHMgUkZDIDY4NTYgKFVURjgpLgorCistIElzc3VlICMxODY4MjogT3B0aW1pemVkIHBwcmludCBmdW5jdGlvbnMgZm9yIGJ1aWx0aW4gc2NhbGFyIHR5cGVzLgorCistIElzc3VlICMyMjAyNzogc210cGxpYiBub3cgc3VwcG9ydHMgUkZDIDY1MzEgKFNNVFBVVEY4KS4KKworLSBJc3N1ZSAjMjM0ODg6IFJhbmRvbSBnZW5lcmF0b3Igb2JqZWN0cyBub3cgY29uc3VtZSAyeCBsZXNzIG1lbW9yeSBvbiA2NC1iaXQuCisKKy0gSXNzdWUgIzEzMjI6IHBsYXRmb3JtLmRpc3QoKSBhbmQgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZQorICBub3cgZGVwcmVjYXRlZC4gIEluaXRpYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uIG5vdyBpcworICBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0MDY0OiBQcm9wZXJ0eSgpIGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0ZWFibGUuCisgIChQYXRjaCBieSBCZXJrZXIgUGVrc2FnLikKKworLSBJc3N1ZSAjMjI2ODE6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBrb2k4X3QgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzIyNjgyOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUga3oxMDQ4IGVuY29kaW5nLgorCiAtIElzc3VlICMyMzc5NjogcGVlayBhbmQgcmVhZDEgbWV0aG9kcyBvZiBCdWZmZXJlZFJlYWRlciBub3cgcmFpc2UgVmFsdWVFcnJvcgogICBpZiB0aGV5IGNhbGxlZCBvbiBhIGNsb3NlZCBvYmplY3QuIFBhdGNoIGJ5IEpvaG4gSGVyZ2Vucm9lZGVyLgogCi0tIElzc3VlICMyMjkzMTogQWxsb3cgJ1snIGFuZCAnXScgaW4gY29va2llIHZhbHVlcy4KKy0gSXNzdWUgIzIxNzk1OiBzbXRwZCBub3cgc3VwcG9ydHMgdGhlIDhCSVRNSU1FIGV4dGVuc2lvbiB3aGVuZXZlcgorICB0aGUgbmV3ICpkZWNvZGVfZGF0YSogY29uc3RydWN0b3IgYXJndW1lbnQgaXMgc2V0IHRvIEZhbHNlLgorCistIElzc3VlICMyNDE1NTogb3B0aW1pemUgaGVhcHEuaGVhcGlmeSgpIGZvciBiZXR0ZXIgY2FjaGUgcGVyZm9ybWFuY2UKKyAgd2hlbiBoZWFwaWZ5aW5nIGxhcmdlIGxpc3RzLgorCistIElzc3VlICMyMTgwMDogaW1hcGxpYiBub3cgc3VwcG9ydHMgUkZDIDUxNjEgKGVuYWJsZSksIFJGQyA2ODU1CisgICh1dGY4L2ludGVybmF0aW9uYWxpemVkIGVtYWlsKSBhbmQgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSQorICB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBVVEY4LgorCistIElzc3VlICMyMDI3NDogV2hlbiBjYWxsaW5nIGEgX3NxbGl0ZS5Db25uZWN0aW9uLCBpdCBub3cgY29tcGxhaW5zIGlmIHBhc3NlZAorICBhbnkga2V5d29yZCBhcmd1bWVudHMuICBQcmV2aW91c2x5IGl0IHNpbGVudGx5IGlnbm9yZWQgdGhlbS4KIAogLSBJc3N1ZSAjMjAyNzQ6IFJlbW92ZSBpZ25vcmVkIGFuZCBlcnJvbmVvdXMgImt3YXJncyIgcGFyYW1ldGVycyBmcm9tIHRocmVlCiAgIE1FVEhfVkFSQVJHUyBtZXRob2RzIG9uIF9zcWxpdGUuQ29ubmVjdGlvbi4KIAorLSBJc3N1ZSAjMjQxMzQ6IGFzc2VydFJhaXNlcygpLCBhc3NlcnRSYWlzZXNSZWdleCgpLCBhc3NlcnRXYXJucygpIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4KCkgY2hlY2tzIG5vdyBlbWl0cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2hlbiBjYWxsYWJsZSBpcworICBOb25lIG9yIGtleXdvcmQgYXJndW1lbnRzIGV4Y2VwdCBtc2cgaXMgcGFzc2VkIGluIHRoZSBjb250ZXh0IG1hbmFnZXIgbW9kZS4KKworLSBJc3N1ZSAjMjQwMTg6IEFkZCBhIGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3IgYWJzdHJhY3QgYmFzZSBjbGFzcy4KKyAgQ29udHJpYnV0ZWQgYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMjM4ODA6IFRraW50ZXIncyBnZXRpbnQoKSBhbmQgZ2V0ZG91YmxlKCkgbm93IHN1cHBvcnQgVGNsX09iai4KKyAgVGtpbnRlcidzIGdldGRvdWJsZSgpIG5vdyBzdXBwb3J0cyBhbnkgbnVtYmVycyAoaW4gcGFydGljdWxhciBpbnQpLgorCistIElzc3VlICMyMjYxOTogQWRkZWQgbmVnYXRpdmUgbGltaXQgc3VwcG9ydCBpbiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgRG1pdHJ5IEthemFrb3YuCisKIC0gSXNzdWUgIzI0MDk0OiBGaXggcG9zc2libGUgY3Jhc2ggaW4ganNvbi5lbmNvZGUgd2l0aCBwb29ybHkgYmVoYXZlZCBkaWN0CiAgIHN1YmNsYXNzZXMuCiAKLS0gQXN5bmNpbyBpc3N1ZSAyMjIgLyBQUiAyMzEgKFZpY3RvciBTdGlubmVyKSAtLSBmaXggQGNvcm91dGluZQotICBmdW5jdGlvbnMgd2l0aG91dCBfX25hbWVfXy4KLQogLSBJc3N1ZSAjOTI0NjogT24gUE9TSVgsIG9zLmdldGN3ZCgpIG5vdyBzdXBwb3J0cyBwYXRocyBsb25nZXIgdGhhbiAxMDI1IGJ5dGVzLgogICBQYXRjaCB3cml0dGVuIGJ5IFdpbGxpYW0gT3JyLgogCi0tIFRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCistIElzc3VlICMxNzQ0NTogYWRkIGRpZmZsaWIuZGlmZl9ieXRlcygpIHRvIHN1cHBvcnQgY29tcGFyaXNvbiBvZgorICBieXRlIHN0cmluZ3MgKGZpeGVzIGEgcmVncmVzc2lvbiBmcm9tIFB5dGhvbiAyKS4KIAotLSBJc3N1ZXMgIzI0MDk5LCAjMjQxMDAsIGFuZCAjMjQxMDE6IEZpeCBmcmVlLWFmdGVyLXVzZSBidWcgaW4gaGVhcHEncyBzaWZ0dXAKLSAgYW5kIHNpZnRkb3duIGZ1bmN0aW9ucy4KLQotLSBCYWNrcG9ydCBjb2xsZWN0aW9ucy5kZXF1ZSBmaXhlcyBmcm9tIFB5dGhvbiAzLjUuICBQcmV2ZW50cyByZWVudHJhbnQgYmFkbmVzcwotICBkdXJpbmcgZGVsZXRpb24gYnkgZGVmZXJyaW5nIHRoZSBkZWNyZWYgdW50aWwgdGhlIGNvbnRhaW5lciBoYXMgYmVlbiByZXN0b3JlZAotICB0byBhIGNvbnNpc3RlbnQgc3RhdGUuCistIElzc3VlICMyMzkxNzogRmFsbCBiYWNrIHRvIHNlcXVlbnRpYWwgY29tcGlsYXRpb24gd2hlbiBQcm9jZXNzUG9vbEV4ZWN1dG9yCisgIGRvZXNuJ3QgZXhpc3QuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCiAKIC0gSXNzdWUgIzIzMDA4OiBGaXhlZCByZXNvbHZpbmcgYXR0cmlidXRlcyB3aXRoIGJvb2xlYW4gdmFsdWUgaXMgRmFsc2UgaW4gcHlkb2MuCiAKIC0gRml4IGFzeW5jaW8gaXNzdWUgMjM1OiBMaWZvUXVldWUgYW5kIFByaW9yaXR5UXVldWUncyBwdXQgZGlkbid0Ci0gIGluY3JlbWVudCB1bmZpbmlzaGVkIHRhc2tzICh0aGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiAzLjQuMyB3aGVuCisgIGluY3JlbWVudCB1bmZpbmlzaGVkIHRhc2tzICh0aGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCB3aGVuCiAgIEpvaW5hYmxlUXVldWUgd2FzIG1lcmdlZCB3aXRoIFF1ZXVlKS4KIAogLSBJc3N1ZSAjMjM5MDg6IG9zIGZ1bmN0aW9ucyBub3cgcmVqZWN0IHBhdGhzIHdpdGggZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIKQEAgLTEyNCwxNjIgKzI5MSwzNSBAQAogLSBJc3N1ZSAjMjM3Mjg6IGJpbmFzY2lpLmNyY19ocXgoKSBjb3VsZCByZXR1cm4gYW4gaW50ZWdlciBvdXRzaWRlIG9mIHRoZSByYW5nZQogICAwLTB4ZmZmZiBmb3IgZW1wdHkgZGF0YS4KIAotLSBJc3N1ZSAjMjM4MTE6IEFkZCBtaXNzaW5nIG5ld2xpbmUgdG8gdGhlIFB5Q29tcGlsZUVycm9yIGVycm9yIG1lc3NhZ2UuCi0gIFBhdGNoIGJ5IEFsZXggU2hrb3AuCi0KLS0gSXNzdWUgIzE3ODk4OiBGaXggZXhjZXB0aW9uIGluIGdldHRleHQucHkgd2hlbiBwYXJzaW5nIGNlcnRhaW4gcGx1cmFsIGZvcm1zLgotCi0tIElzc3VlICMyMjk4MjogSW1wcm92ZSBCT00gaGFuZGxpbmcgd2hlbiBzZWVraW5nIHRvIG11bHRpcGxlIHBvc2l0aW9ucyBvZgotICBhIHdyaXRhYmxlIHRleHQgZmlsZS4KLQotLSBJc3N1ZSAjMjM4NjU6IGNsb3NlKCkgbWV0aG9kcyBpbiBtdWx0aXBsZSBtb2R1bGVzIG5vdyBhcmUgaWRlbXBvdGVudCBhbmQgbW9yZQotICByb2J1c3QgYXQgc2h1dGRvd24uIElmIHRoZXkgbmVlZCB0byByZWxlYXNlIG11bHRpcGxlIHJlc291cmNlcywgYWxsIGFyZQotICByZWxlYXNlZCBldmVuIGlmIGVycm9ycyBvY2N1ci4KLQotLSBJc3N1ZSAjMjM4ODE6IHVybGxpYi5yZXF1ZXN0LmZ0cHdyYXBwZXIgY29uc3RydWN0b3Igbm93IGNsb3NlcyB0aGUgc29ja2V0IGlmCi0gIHRoZSBGVFAgY29ubmVjdGlvbiBmYWlsZWQgdG8gZml4IGEgUmVzb3VyY2VXYXJuaW5nLgotCi0tIElzc3VlICMyMzQwMDogUmFpc2Ugc2FtZSBleGNlcHRpb24gb24gYm90aCBQeXRob24gMiBhbmQgMyBpZiBzZW1fb3BlbiBpcyBub3QKLSAgYXZhaWxhYmxlLiAgUGF0Y2ggYnkgRGF2aW4gUG90dHMuCi0KLS0gSXNzdWUgIzE1MTMzOiBfdGtpbnRlci50a2FwcC5nZXRib29sZWFuKCkgbm93IHN1cHBvcnRzIFRjbF9PYmogYW5kIGFsd2F5cwotICByZXR1cm5zIGJvb2wuICB0a2ludGVyLkJvb2xlYW5WYXIgbm93IHZhbGlkYXRlcyBpbnB1dCB2YWx1ZXMgKGFjY2VwdGVkIGJvb2wsCi0gIGludCwgc3RyLCBhbmQgVGNsX09iaikuICB0a2ludGVyLkJvb2xlYW5WYXIuZ2V0KCkgbm93IGFsd2F5cyByZXR1cm5zIGJvb2wuCi0KLS0gSXNzdWUgIzIzMzM4OiBGaXhlZCBmb3JtYXR0aW5nIGN0eXBlcyBlcnJvciBtZXNzYWdlcyBvbiBDeWd3aW4uCi0gIFBhdGNoIGJ5IE1ha290byBLYXRvLgotCi0tIElzc3VlICMxNjg0MDogVGtpbnRlciBub3cgc3VwcG9ydHMgNjQtYml0IGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjQgYW5kCi0gIGFyYml0cmFyeSBwcmVjaXNpb24gaW50ZWdlcnMgYWRkZWQgaW4gVGNsIDguNS4KLQotLSBJc3N1ZSAjMjM4MzQ6IEZpeCBzb2NrZXQuc2VuZHRvKCksIHVzZSB0aGUgQyBQeV9zc2l6ZV90IHR5cGUgdG8gc3RvcmUgdGhlCi0gIHJlc3VsdCBvZiBzZW5kdG8oKSBpbnN0ZWFkIG9mIHRoZSBDIGludCB0eXBlLgotCi0tIElzc3VlICMyMTUyNjogVGtpbnRlciBub3cgc3VwcG9ydHMgbmV3IGJvb2xlYW4gdHlwZSBpbiBUY2wgOC41LgotCi0tIElzc3VlICMyMzgzODogbGluZWNhY2hlIG5vdyBjbGVhcnMgdGhlIGNhY2hlIGFuZCByZXR1cm5zIGFuIGVtcHR5IHJlc3VsdCBvbgotICBNZW1vcnlFcnJvci4KLQotLSBJc3N1ZSAjMTg0NzM6IEZpeGVkIDJ0bzMgYW5kIDN0bzIgY29tcGF0aWJsZSBwaWNrbGUgbWFwcGluZ3MuICBGaXhlZAotICBhbWJpZ2lvdXMgcmV2ZXJzZSBtYXBwaW5ncy4gIEFkZGVkIG1hbnkgbmV3IG1hcHBpbmdzLiAgSW1wb3J0IG1hcHBpbmcgaXMgbm8KLSAgbG9uZ2VyIGFwcGxpZWQgdG8gbW9kdWxlcyBhbHJlYWR5IG1hcHBlZCB3aXRoIGZ1bGwgbmFtZSBtYXBwaW5nLgotCi0tIElzc3VlICMyMzc0NTogVGhlIG5ldyBlbWFpbCBoZWFkZXIgcGFyc2VyIG5vdyBoYW5kbGVzIGR1cGxpY2F0ZSBNSU1FCi0gIHBhcmFtZXRlciBuYW1lcyB3aXRob3V0IGVycm9yLCBzaW1pbGFyIHRvIGhvdyBnZXRfcGFyYW0gYmVoYXZlcy4KLQotLSBJc3N1ZSAjMjM3OTI6IElnbm9yZSBLZXlib2FyZEludGVycnVwdCB3aGVuIHRoZSBweWRvYyBwYWdlciBpcyBhY3RpdmUuCi0gIFRoaXMgbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGUgc3RhbmRhcmQgdW5peCBwYWdlcnMsIGFuZCBwcmV2ZW50cwotICBwaXBlcGFnZXIgZnJvbSBzaHV0dGluZyBkb3duIHdoaWxlIHRoZSBwYWdlciBpdHNlbGYgaXMgc3RpbGwgcnVubmluZy4KLQotLSBJc3N1ZSAjMjM3NDI6IG50cGF0aC5leHBhbmR2YXJzKCkgbm8gbG9uZ2VyIGxvc2VzIHVuYmFsYW5jZWQgc2luZ2xlIHF1b3Rlcy4KLQotLSBJc3N1ZSAjMjE4MDI6IFRoZSByZWFkZXIgaW4gQnVmZmVyZWRSV1BhaXIgbm93IGlzIGNsb3NlZCBldmVuIHdoZW4gY2xvc2luZwotICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCi0KLS0gSXNzdWUgIzIzNjcxOiBzdHJpbmcuVGVtcGxhdGUgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgcGFyYW1ldGVyIGFzCi0gIGtleXdvcmQgYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgInNlbGYiIGFuZAotICB0aGUgImZvcm1hdF9zdHJpbmciIHBhcmFtZXRlcnMgYXMga2V5d29yZCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzIxNTYwOiBBbiBhdHRlbXB0IHRvIHdyaXRlIGEgZGF0YSBvZiB3cm9uZyB0eXBlIG5vIGxvbmdlciBjYXVzZQotICBHemlwRmlsZSBjb3JydXB0aW9uLiAgT3JpZ2luYWwgcGF0Y2ggYnkgV29sZmdhbmcgTWFpZXIuCi0KLS0gSXNzdWUgIzIzNjQ3OiBJbmNyZWFzZSBpbXBhbGliJ3MgTUFYTElORSB0byBhY2NvbW1vZGF0ZSBtb2Rlcm4gbWFpbGJveCBzaXplcy4KLQotLSBJc3N1ZSAjMjM1Mzk6IElmIGJvZHkgaXMgTm9uZSwgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ucmVxdWVzdCBub3cgc2V0cwotICBDb250ZW50LUxlbmd0aCB0byAwIGZvciBQVVQsIFBPU1QsIGFuZCBQQVRDSCBoZWFkZXJzIHRvIGF2b2lkIDQxMSBlcnJvcnMgZnJvbQotICBzb21lIHdlYiBzZXJ2ZXJzLgotCi0tIElzc3VlICMyMjM1MTogVGhlIG5udHBsaWIuTk5UUCBjb25zdHJ1Y3RvciBubyBsb25nZXIgbGVhdmVzIHRoZSBjb25uZWN0aW9uCi0gIGFuZCBzb2NrZXQgb3BlbiB1bnRpbCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYW5zIHRoZW0gdXAuICBQYXRjaCBieQotICBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyMzEzNjogX3N0cnB0aW1lIG5vdyB1bmlmb3JtbHkgaGFuZGxlcyBhbGwgZGF5cyBpbiB3ZWVrIDAsIGluY2x1ZGluZwotICBEZWMgMzAgb2YgcHJldmlvdXMgeWVhci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEppbSBDYXJyb2xsLgotCi0tIElzc3VlICMyMzcwMDogSXRlcmF0b3Igb2YgTmFtZWRUZW1wb3JhcnlGaWxlIG5vdyBrZWVwcyBhIHJlZmVyZW5jZSB0bwotICBOYW1lZFRlbXBvcmFyeUZpbGUgaW5zdGFuY2UuICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCi0KLS0gSXNzdWUgIzIyOTAzOiBUaGUgZmFrZSB0ZXN0IGNhc2UgY3JlYXRlZCBieSB1bml0dGVzdC5sb2FkZXIgd2hlbiBpdCBmYWlscwotICBpbXBvcnRpbmcgYSB0ZXN0IG1vZHVsZSBpcyBub3cgcGlja2xhYmxlLgotCi0tIElzc3VlICMyMzU2ODogQWRkIHJkaXZtb2Qgc3VwcG9ydCB0byBNYWdpY01vY2soKSBvYmplY3RzLgotICBQYXRjaCBieSBIw6VrYW4gTMO2dmRhaGwuCi0KLS0gSXNzdWUgIzIzMTM4OiBGaXhlZCBwYXJzaW5nIGNvb2tpZXMgd2l0aCBhYnNlbnQga2V5cyBvciB2YWx1ZXMgaW4gY29va2llamFyLgotICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgotCi0tIElzc3VlICMyMzA1MTogbXVsdGlwcm9jZXNzaW5nLlBvb2wgbWV0aG9kcyBpbWFwKCkgYW5kIGltYXBfdW5vcmRlcmVkKCkgbm93Ci0gIGhhbmRsZSBleGNlcHRpb25zIHJhaXNlZCBieSBhbiBpdGVyYXRvci4gIFBhdGNoIGJ5IEFsb24gRGlhbWFudCBhbmQgRGF2aW4KLSAgUG90dHMuCi0KLS0gSXNzdWUgIzIyOTI4OiBEaXNhYmxlZCBIVFRQIGhlYWRlciBpbmplY3Rpb25zIGluIGh0dHAuY2xpZW50LgotICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgotCi0tIElzc3VlICMyMzYxNTogTW9kdWxlcyBiejIsIHRhcmZpbGUgYW5kIHRva2VuaXplIG5vdyBjYW4gYmUgcmVsb2FkZWQgd2l0aAotICBpbXAucmVsb2FkKCkuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KLQotLSBJc3N1ZSAjMjM0NzY6IEluIHRoZSBzc2wgbW9kdWxlLCBlbmFibGUgT3BlblNTTCdzIFg1MDlfVl9GTEFHX1RSVVNURURfRklSU1QKLSAgZmxhZyBvbiBjZXJ0aWZpY2F0ZSBzdG9yZXMgd2hlbiBpdCBpcyBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzIzNTc2OiBBdm9pZCBzdGFsbGluZyBpbiBTU0wgcmVhZHMgd2hlbiBFT0YgaGFzIGJlZW4gcmVhY2hlZCBpbiB0aGUKLSAgU1NMIGxheWVyIGJ1dCB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uIGhhc24ndCBiZWVuIGNsb3NlZC4KLQotLSBJc3N1ZSAjMjM1MDQ6IEFkZGVkIGFuIF9fYWxsX18gdG8gdGhlIHR5cGVzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjAyMDQ6IEFkZGVkIHRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSB0byBfdGtpbnRlciBjbGFzc2VzLgotCi0tIElzc3VlICMyMzUyMTogQ29ycmVjdGVkIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRpbWVkZWx0YSBkaXZpc2lvbi4KLQotICogRWxpbWluYXRlZCBPdmVyZmxvd0Vycm9yIGZyb20gdGltZWRlbHRhICogZmxvYXQgZm9yIHNvbWUgZmxvYXRzOwotICogQ29ycmVjdGVkIHJvdW5kaW5nIGluIHRpbWVkbHRhIHRydWUgZGl2aXNpb24uCi0KLS0gSXNzdWUgIzIxNjE5OiBQb3BlbiBvYmplY3RzIG5vIGxvbmdlciBsZWF2ZSBhIHpvbWJpZSBhZnRlciBleGl0IGluIHRoZSB3aXRoCi0gIHN0YXRlbWVudCBpZiB0aGUgcGlwZSB3YXMgYnJva2VuLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjNjYzOTogTW9kdWxlLWxldmVsIHR1cnRsZSBmdW5jdGlvbnMgbm8gbG9uZ2VyIHJhaXNlIFRjbEVycm9yIGFmdGVyCi0gIGNsb3NpbmcgdGhlIHdpbmRvdy4KLQotLSBJc3N1ZXMgIzgxNDI1MywgIzkxNzk6IFdhcm5pbmdzIG5vdyBhcmUgcmFpc2VkIHdoZW4gZ3JvdXAgcmVmZXJlbmNlcyBhbmQKLSAgY29uZGl0aW9uYWwgZ3JvdXAgcmVmZXJlbmNlcyBhcmUgdXNlZCBpbiBsb29rYmVoaW5kIGFzc2VydGlvbnMgaW4gcmVndWxhcgotICBleHByZXNzaW9ucy4KLQotLSBJc3N1ZSAjMjMyMTU6IE11bHRpYnl0ZSBjb2RlY3Mgd2l0aCBjdXN0b20gZXJyb3IgaGFuZGxlcnMgdGhhdCBpZ25vcmVzIGVycm9ycwotICBjb25zdW1lZCB0b28gbXVjaCBtZW1vcnkgYW5kIHJhaXNlZCBTeXN0ZW1FcnJvciBvciBNZW1vcnlFcnJvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgQWxla3NpIFRvcmhhbW8uCi0KLS0gSXNzdWUgIzU3MDA6IGlvLkZpbGVJTygpIGNhbGxlZCBmbHVzaCgpIGFmdGVyIGNsb3NpbmcgdGhlIGZpbGUuCi0gIGZsdXNoKCkgd2FzIG5vdCBjYWxsZWQgaW4gY2xvc2UoKSBpZiBjbG9zZWZkPUZhbHNlLgotCi0tIElzc3VlICMyMzM3NDogRml4ZWQgcHlkb2MgZmFpbHVyZSB3aXRoIG5vbi1BU0NJSSBmaWxlcyB3aGVuIHN0ZG91dCBlbmNvZGluZwotICBkaWZmZXJzIGZyb20gZmlsZSBzeXN0ZW0gZW5jb2RpbmcgKGUuZy4gb24gTWFjIE9TKS4KLQotLSBJc3N1ZSAjMjM0ODE6IFJlbW92ZSBSQzQgZnJvbSB0aGUgU1NMIG1vZHVsZSdzIGRlZmF1bHQgY2lwaGVyIGxpc3QuCi0KLS0gSXNzdWUgIzIxNTQ4OiBGaXggcHlkb2Muc3lub3BzaXMoKSBhbmQgcHlkb2MuYXByb3BvcygpIG9uIG1vZHVsZXMgd2l0aCBlbXB0eQotICBkb2NzdHJpbmdzLgotCi0tIElzc3VlICMyMjg4NTogRml4ZWQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGRibS5kdW1iCi0gIG1vZHVsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMjMxNDY6IEZpeCBtaXNoYW5kbGluZyBvZiBhYnNvbHV0ZSBXaW5kb3dzIHBhdGhzIHdpdGggZm9yd2FyZAotICBzbGFzaGVzIGluIHBhdGhsaWIuCi0KLS0gSXNzdWUgIzIzNDIxOiBGaXhlZCBjb21wcmVzc2lvbiBpbiB0YXJmaWxlIENMSS4gIFBhdGNoIGJ5IHdkdjQ3NThoLgotCi0tIElzc3VlICMyMzM2NzogRml4IHBvc3NpYmxlIG92ZXJmbG93cyBpbiB0aGUgdW5pY29kZWRhdGEgbW9kdWxlLgotCi0tIElzc3VlICMyMzM2MTogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIFdpbmRvd3Mgc3VicHJvY2VzcyBjcmVhdGlvbiBjb2RlLgotCi0tIElzc3VlICMyMzgwMTogRml4IGlzc3VlIHdoZXJlIGNnaS5GaWVsZFN0b3JhZ2UgZGlkIG5vdCBhbHdheXMgaWdub3JlIHRoZQotICBlbnRpcmUgcHJlYW1ibGUgdG8gYSBtdWx0aXBhcnQgYm9keS4KLQotLSBJc3N1ZSAjMjMzMTA6IEZpeCBNYWdpY01vY2sncyBpbml0aWFsaXplciB0byB3b3JrIHdpdGggX19tZXRob2RzX18sIGp1c3QKLSAgbGlrZSBjb25maWd1cmVfbW9jaygpLiAgUGF0Y2ggYnkgS2FzaWEgSmFjaGltLgorLSBJc3N1ZSAjMjM4ODc6IHVybGxpYi5lcnJvci5IVFRQRXJyb3Igbm93IGhhcyBhIHByb3BlciByZXByKCkgcmVwcmVzZW50YXRpb24uCisgIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKIC0gYXN5bmNpbzogTmV3IGV2ZW50IGxvb3AgQVBJczogc2V0X3Rhc2tfZmFjdG9yeSgpIGFuZCBnZXRfdGFza19mYWN0b3J5KCkuCiAKIC0gYXN5bmNpbzogYXN5bmMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBlbnN1cmVfZnV0dXJlKCkuCiAKKy0gSXNzdWUgMjQxNzg6IGFzeW5jaW8uTG9jaywgQ29uZGl0aW9uLCBTZW1hcGhvcmUsIGFuZCBCb3VuZGVkU2VtYXBob3JlCisgIHN1cHBvcnQgbmV3ICdhc3luYyB3aXRoJyBzeW50YXguICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAyNDE3OTogU3VwcG9ydCAnYXN5bmMgZm9yJyBmb3IgYXN5bmNpby5TdHJlYW1SZWFkZXIuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlIDI0MTg0OiBBZGQgQXN5bmNJdGVyYXRvciBhbmQgQXN5bmNJdGVyYWJsZSBBQkNzIHRvCisgIGNvbGxlY3Rpb25zLmFiYy4gIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlIDIyNTQ3OiBJbXBsZW1lbnQgaW5mb3JtYXRpdmUgX19yZXByX18gZm9yIGluc3BlY3QuQm91bmRBcmd1bWVudHMuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlIDI0MTkwOiBJbXBsZW1lbnQgaW5zcGVjdC5Cb3VuZEFyZ3VtZW50LmFwcGx5X2RlZmF1bHRzKCkgbWV0aG9kLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAyMDY5MTogQWRkICdmb2xsb3dfd3JhcHBlZCcgYXJndW1lbnQgdG8KKyAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIGFuZCBpbnNwZWN0LnNpZ25hdHVyZSgpLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAyNDI0ODogRGVwcmVjYXRlIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oKSBhbmQKKyAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9idWlsdGluKCkuCisKIC0gSXNzdWUgIzIzODk4OiBGaXggaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRycygpIHRvIHN1cHBvcnQgYXR0cmlidXRlcwogICB3aXRoIG92ZXJsb2FkZWQgX19lcV9fIGFuZCBfX2Jvb2xfXy4gIFBhdGNoIGJ5IE1pa2UgQmF5ZXIuCiAKQEAgLTI5OCw1NyArMzM4LDU5OSBAQAogLSBJc3N1ZSAjMjE1MjA6IHRlc3RfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgdGhlIHdvcmQgJ2JhZCcgYXBwZWFycwogICBhbnl3aGVyZSBpbiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAKKy0gSXNzdWUgIzk1MTc6IE1vdmUgc2NyaXB0X2hlbHBlciBpbnRvIHRoZSBzdXBwb3J0IHBhY2thZ2UuCisgIFBhdGNoIGJ5IENocmlzdGllIFdpbHNvbi4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMjE1NTogQWRkIEZpbGUgSGFuZGxlcnMgc3Vic2VjdGlvbiB3aXRoIGNyZWF0ZWZpbGVoYW5kbGVyIHRvIHRraW50ZXIKKyAgZG9jLiAgUmVtb3ZlIG9ic29sZXRlIGV4YW1wbGUgZnJvbSBGQVEuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyNDAyOTogRG9jdW1lbnQgdGhlIG5hbWUgYmluZGluZyBiZWhhdmlvciBmb3Igc3VibW9kdWxlIGltcG9ydHMuCisKKy0gSXNzdWUgIzI0MDc3OiBGaXggdHlwbyBpbiBtYW4gcGFnZSBmb3IgLUkgY29tbWFuZCBvcHRpb246IC1zLCBub3QgLVMKKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0MDAwOiBJbXByb3ZlZCBBcmd1bWVudCBDbGluaWMncyBtYXBwaW5nIG9mIGNvbnZlcnRlcnMgdG8gbGVnYWN5CisgICJmb3JtYXQgdW5pdHMiLiAgVXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiB0byBtYXRjaC4KKworLSBJc3N1ZSAjMjQwMDE6IEFyZ3VtZW50IENsaW5pYyBjb252ZXJ0ZXJzIG5vdyB1c2UgYWNjZXB0PXt0eXBlfQorICBpbnN0ZWFkIG9mIHR5cGVzPXsndHlwZSd9IHRvIHNwZWNpZnkgdGhlIHR5cGVzIHRoZSBjb252ZXJ0ZXIgYWNjZXB0cy4KKworLSBJc3N1ZSAjMjMzMzA6IGgycHkgbm93IHN1cHBvcnRzIGFyYml0cmFyeSBmaWxlbmFtZXMgaW4gI2luY2x1ZGUuCisKKy0gSXNzdWUgIzI0MDMxOiBtYWtlIHBhdGNoY2hlY2sgbm93IHN1cHBvcnRzIGdpdCBjaGVja291dHMsIHRvby4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBhbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA0LTE5CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMjk4MDogVW5kZXIgTGludXgsIEdOVS9LRnJlZUJTRCBhbmQgdGhlIEh1cmQsIEMgZXh0ZW5zaW9ucyBub3cgaW5jbHVkZQorICB0aGUgYXJjaGl0ZWN0dXJlIHRyaXBsZXQgaW4gdGhlIGV4dGVuc2lvbiBuYW1lLCB0byBtYWtlIGl0IGVhc3kgdG8gdGVzdCBidWlsZHMKKyAgZm9yIGRpZmZlcmVudCBBQklzIGluIHRoZSBzYW1lIHdvcmtpbmcgdHJlZS4gIFVuZGVyIE9TIFgsIHRoZSBleHRlbnNpb24gbmFtZQorICBub3cgaW5jbHVkZXMgUEVQIDMxNDktc3R5bGUgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzIyNjMxOiBBZGRlZCBMaW51eC1zcGVjaWZpYyBzb2NrZXQgY29uc3RhbnQgQ0FOX1JBV19GRF9GUkFNRVMuCisgIFBhdGNoIGNvdXJ0ZXN5IG9mIEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzIzNzMxOiBJbXBsZW1lbnQgUEVQIDQ4ODogcmVtb3ZhbCBvZiAucHlvIGZpbGVzLgorCistIElzc3VlICMyMzcyNjogRG9uJ3QgZW5hYmxlIEdDIGZvciB1c2VyIHN1YmNsYXNzZXMgb2Ygbm9uLUdDIHR5cGVzIHRoYXQKKyAgZG9uJ3QgYWRkIGFueSBuZXcgZmllbGRzLiAgUGF0Y2ggYnkgRXVnZW5lIFRvZGVyLgorCistIElzc3VlICMyMzMwOTogQXZvaWQgYSBkZWFkbG9jayBhdCBzaHV0ZG93biBpZiBhIGRhZW1vbiB0aHJlYWQgaXMgYWJvcnRlZAorICB3aGlsZSBpdCBpcyBob2xkaW5nIGEgbG9jayB0byBhIGJ1ZmZlcmVkIEkvTyBvYmplY3QsIGFuZCB0aGUgbWFpbiB0aHJlYWQKKyAgdHJpZXMgdG8gdXNlIHRoZSBzYW1lIEkvTyBvYmplY3QgKHR5cGljYWxseSBzdGRvdXQgb3Igc3RkZXJyKS4gIEEgZmF0YWwKKyAgZXJyb3IgaXMgZW1pdHRlZCBpbnN0ZWFkLgorCistIElzc3VlICMyMjk3NzogRml4ZWQgZm9ybWF0dGluZyBXaW5kb3dzIGVycm9yIG1lc3NhZ2VzIG9uIFdpbmUuCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIzNDY2OiAlYywgJW8sICV4LCBhbmQgJVggaW4gYnl0ZXMgZm9ybWF0dGluZyBub3cgcmFpc2UgVHlwZUVycm9yIG9uCisgIG5vbi1pbnRlZ2VyIGlucHV0LgorCistIElzc3VlICMyNDA0NDogRml4IHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBsaXN0LnNvcnQgaW4gb3V0IG9mCisgIG1lbW9yeSBjb25kaXRpb25zLgorCistIElzc3VlICMyMTM1NDogUHlDRnVuY3Rpb25fTmV3IGZ1bmN0aW9uIGlzIGV4cG9zZWQgYnkgcHl0aG9uIERMTCBhZ2Fpbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMzg0MDogdG9rZW5pemUub3BlbigpIG5vdyBjbG9zZXMgdGhlIHRlbXBvcmFyeSBiaW5hcnkgZmlsZSBvbiBlcnJvcgorICB0byBmaXggYSByZXNvdXJjZSB3YXJuaW5nLgorCistIElzc3VlICMxNjkxNDogbmV3IGRlYnVnbGV2ZWwgMiBpbiBzbXRwbGliIGFkZHMgdGltZXN0YW1wcyB0byBkZWJ1ZyBvdXRwdXQuCisKKy0gSXNzdWUgIzcxNTk6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBzZW5kaW5nIGF1dGggY3JlZGVudGlhbHMKKyAgYXV0b21hdGljYWxseSBhZnRlciB0aGUgZmlyc3QgNDAxLiAgVGhpcyBlbmhhbmNlbWVudCBpcyBhIHN1cGVyc2V0IG9mIHRoZQorICBlbmhhbmNlbWVudCBmcm9tIGlzc3VlICMxOTQ5NCBhbmQgc3VwZXJzZWRlcyB0aGF0IGNoYW5nZS4KKworLSBJc3N1ZSAjMjM3MDM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gdXJsam9pbigpIGludHJvZHVjZWQgaW4gOTAxZTRlNTJiMjBhLgorICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICM0MjU0OiBBZGRzIF9jdXJzZXMudXBkYXRlX2xpbmVzX2NvbHMoKSBQYXRjaCBieSBBcm5vbiBZYWFyaQorCistIElzc3VlIDE5OTMzOiBQcm92aWRlIGRlZmF1bHQgYXJndW1lbnQgZm9yIG5kaWdpdHMgaW4gcm91bmQuIFBhdGNoIGJ5CisgIFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjMxOTM6IEFkZCBhIG51bWVyaWNfb3duZXIgcGFyYW1ldGVyIHRvCisgIHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0IGFuZCB0YXJmaWxlLlRhckZpbGUuZXh0cmFjdGFsbC4gUGF0Y2ggYnkKKyAgTWljaGFlbCBWb2d0IGFuZCBFcmljIFNtaXRoLgorCistIElzc3VlICMyMzM0MjogQWRkIGEgc3VicHJvY2Vzcy5ydW4oKSBmdW5jdGlvbiB0aGFuIHJldHVybnMgYSBDYWxsZWRQcm9jZXNzCisgIGluc3RhbmNlIGZvciBhIG1vcmUgY29uc2lzdGVudCBBUEkgdGhhbiB0aGUgZXhpc3RpbmcgY2FsbCogZnVuY3Rpb25zLgorCistIElzc3VlICMyMTIxNzogaW5zcGVjdC5nZXRzb3VyY2VsaW5lcygpIG5vdyB0cmllcyB0byBjb21wdXRlIHRoZSBzdGFydCBhbmQgZW5kCisgIGxpbmVzIGZyb20gdGhlIGNvZGUgb2JqZWN0LCBmaXhpbmcgYW4gaXNzdWUgd2hlbiBhIGxhbWJkYSBmdW5jdGlvbiBpcyB1c2VkIGFzCisgIGRlY29yYXRvciBhcmd1bWVudC4gUGF0Y2ggYnkgVGhvbWFzIEJhbGxpbmdlciBhbmQgQWxsaXNvbiBLYXB0dXIuCisKKy0gSXNzdWUgIzIyOTMxOiBBbGxvdyAnWycgYW5kICddJyBpbiBjb29raWUgdmFsdWVzLgorCistIFRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCisKKy0gSXNzdWUgIzIzODExOiBBZGQgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBQeUNvbXBpbGVFcnJvciBlcnJvciBtZXNzYWdlLgorICBQYXRjaCBieSBBbGV4IFNoa29wLgorCistIElzc3VlICMyMTExNjogQXZvaWQgYmxvd2luZyBtZW1vcnkgd2hlbiBhbGxvY2F0aW5nIGEgbXVsdGlwcm9jZXNzaW5nIHNoYXJlZAorICBhcnJheSB0aGF0J3MgbGFyZ2VyIHRoYW4gNTAlIG9mIHRoZSBhdmFpbGFibGUgUkFNLiAgUGF0Y2ggYnkgTcOpZMOpcmljIEJvcXVpZW4uCisKKy0gSXNzdWUgIzIyOTgyOiBJbXByb3ZlIEJPTSBoYW5kbGluZyB3aGVuIHNlZWtpbmcgdG8gbXVsdGlwbGUgcG9zaXRpb25zIG9mCisgIGEgd3JpdGFibGUgdGV4dCBmaWxlLgorCistIElzc3VlICMyMzQ2NDogUmVtb3ZlZCBkZXByZWNhdGVkIGFzeW5jaW8gSm9pbmFibGVRdWV1ZS4KKworLSBJc3N1ZSAjMjM1Mjk6IExpbWl0IHRoZSBzaXplIG9mIGRlY29tcHJlc3NlZCBkYXRhIHdoZW4gcmVhZGluZyBmcm9tCisgIEd6aXBGaWxlLCBCWjJGaWxlIG9yIExaTUFGaWxlLiAgVGhpcyBkZWZlYXRzIGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MKKyAgdXNpbmcgY29tcHJlc3NlZCBib21icyAoaS5lLiBjb21wcmVzc2VkIHBheWxvYWRzIHdoaWNoIGRlY29tcHJlc3MgdG8gYSBodWdlCisgIHNpemUpLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlciBhbmQgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMjE4NTk6IEFkZGVkIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpby5GaWxlSU8uCisKKy0gSXNzdWUgIzIzODY1OiBjbG9zZSgpIG1ldGhvZHMgaW4gbXVsdGlwbGUgbW9kdWxlcyBub3cgYXJlIGlkZW1wb3RlbnQgYW5kIG1vcmUKKyAgcm9idXN0IGF0IHNodXRkb3duLiBJZiB0aGV5IG5lZWQgdG8gcmVsZWFzZSBtdWx0aXBsZSByZXNvdXJjZXMsIGFsbCBhcmUKKyAgcmVsZWFzZWQgZXZlbiBpZiBlcnJvcnMgb2NjdXIuCisKKy0gSXNzdWUgIzIzNDAwOiBSYWlzZSBzYW1lIGV4Y2VwdGlvbiBvbiBib3RoIFB5dGhvbiAyIGFuZCAzIGlmIHNlbV9vcGVuIGlzIG5vdAorICBhdmFpbGFibGUuICBQYXRjaCBieSBEYXZpbiBQb3R0cy4KKworLSBJc3N1ZSAjMTA4Mzg6IFRoZSBzdWJwcm9jZXNzIG5vdyBtb2R1bGUgaW5jbHVkZXMgU3VicHJvY2Vzc0Vycm9yIGFuZAorICBUaW1lb3V0RXJyb3IgaW4gaXRzIGxpc3Qgb2YgZXhwb3J0ZWQgbmFtZXMgZm9yIHRoZSB1c2VycyB3aWxkIGVub3VnaAorICB0byB1c2UgYGBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICpgYC4KKworLSBJc3N1ZSAjMjM0MTE6IEFkZGVkIERlZnJhZ1Jlc3VsdCwgUGFyc2VSZXN1bHQsIFNwbGl0UmVzdWx0LCBEZWZyYWdSZXN1bHRCeXRlcywKKyAgUGFyc2VSZXN1bHRCeXRlcywgYW5kIFNwbGl0UmVzdWx0Qnl0ZXMgdG8gdXJsbGliLnBhcnNlLl9fYWxsX18uCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIzODgxOiB1cmxsaWIucmVxdWVzdC5mdHB3cmFwcGVyIGNvbnN0cnVjdG9yIG5vdyBjbG9zZXMgdGhlIHNvY2tldCBpZgorICB0aGUgRlRQIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGZpeCBhIFJlc291cmNlV2FybmluZy4KKworLSBJc3N1ZSAjMjM4NTM6IDptZXRoOmBzb2NrZXQuc29ja2V0LnNlbmRhbGxgIGRvZXMgbm8gbW9yZSByZXNldCB0aGUgc29ja2V0CisgIHRpbWVvdXQgZWFjaCB0aW1lIGRhdGEgaXMgc2VudCBzdWNjZXNzZnVseS4gVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUKKyAgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byBzZW5kIGFsbCBkYXRhLgorCistIElzc3VlICMyMjcyMTogQW4gb3JkZXIgb2YgbXVsdGlsaW5lIHBwcmludCBvdXRwdXQgb2Ygc2V0IG9yIGRpY3QgY29udGFpbmluZworICBvcmRlcmFibGUgYW5kIG5vbi1vcmRlcmFibGUgZWxlbWVudHMgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXRlcmF0aW9uIG9yZGVyIG9mCisgIHNldCBvciBkaWN0LgorCistIElzc3VlICMxNTEzMzogX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbigpIG5vdyBzdXBwb3J0cyBUY2xfT2JqIGFuZCBhbHdheXMKKyAgcmV0dXJucyBib29sLiAgdGtpbnRlci5Cb29sZWFuVmFyIG5vdyB2YWxpZGF0ZXMgaW5wdXQgdmFsdWVzIChhY2NlcHRlZCBib29sLAorICBpbnQsIHN0ciwgYW5kIFRjbF9PYmopLiAgdGtpbnRlci5Cb29sZWFuVmFyLmdldCgpIG5vdyBhbHdheXMgcmV0dXJucyBib29sLgorCistIElzc3VlICMxMDU5MDogeG1sLnNheC5wYXJzZVN0cmluZygpIG5vdyBzdXBwb3J0cyBzdHJpbmcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzIzMzM4OiBGaXhlZCBmb3JtYXR0aW5nIGN0eXBlcyBlcnJvciBtZXNzYWdlcyBvbiBDeWd3aW4uCisgIFBhdGNoIGJ5IE1ha290byBLYXRvLgorCistIElzc3VlICMxNTU4MjogaW5zcGVjdC5nZXRkb2MoKSBub3cgZm9sbG93cyBpbmhlcml0YW5jZSBjaGFpbnMuCisKKy0gSXNzdWUgIzIxNzU6IFNBWCBwYXJzZXJzIG5vdyBzdXBwb3J0IGEgY2hhcmFjdGVyIHN0cmVhbSBvZiBJbnB1dFNvdXJjZSBvYmplY3QuCisKKy0gSXNzdWUgIzE2ODQwOiBUa2ludGVyIG5vdyBzdXBwb3J0cyA2NC1iaXQgaW50ZWdlcnMgYWRkZWQgaW4gVGNsIDguNCBhbmQKKyAgYXJiaXRyYXJ5IHByZWNpc2lvbiBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC41LgorCistIElzc3VlICMyMzgzNDogRml4IHNvY2tldC5zZW5kdG8oKSwgdXNlIHRoZSBDIFB5X3NzaXplX3QgdHlwZSB0byBzdG9yZSB0aGUKKyAgcmVzdWx0IG9mIHNlbmR0bygpIGluc3RlYWQgb2YgdGhlIEMgaW50IHR5cGUuCisKKy0gSXNzdWUgIzIzNjE4OiA6bWV0aDpgc29ja2V0LnNvY2tldC5jb25uZWN0YCBub3cgd2FpdHMgdW50aWwgdGhlIGNvbm5lY3Rpb24KKyAgY29tcGxldGVzIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpZiB0aGUgY29ubmVjdGlvbiBpcworICBpbnRlcnJ1cHRlZCBieSBzaWduYWxzLCBzaWduYWwgaGFuZGxlcnMgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCB0aGUKKyAgc29ja2V0IGlzIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQuIDptZXRoOmBzb2NrZXQuc29ja2V0LmNvbm5lY3RgIHN0aWxsCisgIHJhaXNlIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGZvciBub24tYmxvY2tpbmcgc29ja2V0cy4KKworLSBJc3N1ZSAjMjE1MjY6IFRraW50ZXIgbm93IHN1cHBvcnRzIG5ldyBib29sZWFuIHR5cGUgaW4gVGNsIDguNS4KKworLSBJc3N1ZSAjMjM4MzY6IEZpeCB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0byBoYW5kbGUgcmVlbnRyYW50IGNhbGxzIHRvCisgIGl0cyBzaWduYWwgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzIzODM4OiBsaW5lY2FjaGUgbm93IGNsZWFycyB0aGUgY2FjaGUgYW5kIHJldHVybnMgYW4gZW1wdHkgcmVzdWx0IG9uCisgIE1lbW9yeUVycm9yLgorCistIElzc3VlICMxMDM5NTogQWRkZWQgb3MucGF0aC5jb21tb25wYXRoKCkuIEltcGxlbWVudGVkIGluIHBvc2l4cGF0aCBhbmQgbnRwYXRoLgorICBCYXNlZCBvbiBwYXRjaCBieSBSYWZpayBEcmFvdWkuCisKKy0gSXNzdWUgIzIzNjExOiBTZXJpYWxpemluZyBtb3JlICJsb29rdXBhYmxlIiBvYmplY3RzIChzdWNoIGFzIHVuYm91bmQgbWV0aG9kcworICBvciBuZXN0ZWQgY2xhc3Nlcykgbm93IGFyZSBzdXBwb3J0ZWQgd2l0aCBwaWNrbGUgcHJvdG9jb2xzIDwgNC4KKworLSBJc3N1ZSAjMTM1ODM6IHNxbGl0ZTMuUm93IG5vdyBzdXBwb3J0cyBzbGljZSBpbmRleGluZy4KKworLSBJc3N1ZSAjMTg0NzM6IEZpeGVkIDJ0bzMgYW5kIDN0bzIgY29tcGF0aWJsZSBwaWNrbGUgbWFwcGluZ3MuICBGaXhlZAorICBhbWJpZ2lvdXMgcmV2ZXJzZSBtYXBwaW5ncy4gIEFkZGVkIG1hbnkgbmV3IG1hcHBpbmdzLiAgSW1wb3J0IG1hcHBpbmcgaXMgbm8KKyAgbG9uZ2VyIGFwcGxpZWQgdG8gbW9kdWxlcyBhbHJlYWR5IG1hcHBlZCB3aXRoIGZ1bGwgbmFtZSBtYXBwaW5nLgorCistIElzc3VlICMyMzQ4NTogc2VsZWN0LnNlbGVjdCgpIGlzIG5vdyByZXRyaWVkIGF1dG9tYXRpY2FsbHkgd2l0aCB0aGUKKyAgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIKKyAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgUEVQIDQ3NS4KKworLSBJc3N1ZSAjMjM3NTI6IFdoZW4gYnVpbHQgZnJvbSBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IsIGlvLkZpbGVJTygpIG5vdworICBvbmx5IGNhbGxzIGZzdGF0KCkgb25jZS4gQmVmb3JlIGZzdGF0KCkgd2FzIGNhbGxlZCB0d2ljZSwgd2hpY2ggd2FzIG5vdAorICBuZWNlc3NhcnkuCisKKy0gSXNzdWUgIzIzNzA0OiBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IHN1cHBvcnQgX19hZGRfXywgX19tdWxfXywgYW5kCisgIF9faW11bF9fKCkuCisKKy0gSXNzdWUgIzIzMTcxOiBjc3YuV3JpdGVyLndyaXRlcm93KCkgbm93IHN1cHBvcnRzIGFyYml0cmFyeSBpdGVyYWJsZXMuCisKKy0gSXNzdWUgIzIzNzQ1OiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgbm93IGhhbmRsZXMgZHVwbGljYXRlIE1JTUUKKyAgcGFyYW1ldGVyIG5hbWVzIHdpdGhvdXQgZXJyb3IsIHNpbWlsYXIgdG8gaG93IGdldF9wYXJhbSBiZWhhdmVzLgorCistIElzc3VlICMyMjExNzogRml4IG9zLnV0aW1lKCksIGl0IG5vdyByb3VuZHMgdGhlIHRpbWVzdGFtcCB0b3dhcmRzIG1pbnVzCisgIGluZmluaXR5ICgtaW5mKSBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvd2FyZHMgemVyby4KKworLSBJc3N1ZSAjMjMzMTA6IEZpeCBNYWdpY01vY2sncyBpbml0aWFsaXplciB0byB3b3JrIHdpdGggX19tZXRob2RzX18sIGp1c3QKKyAgbGlrZSBjb25maWd1cmVfbW9jaygpLiAgUGF0Y2ggYnkgS2FzaWEgSmFjaGltLgorCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyMzgxNzogRnJlZUJTRCBub3cgdXNlcyAiMS4wIiB0aGUgdGhlIFNPVkVSU0lPTiBhcyBvdGhlciBvcGVyYXRpbmcKKyAgc3lzdGVtcywgaW5zdGVhZCBvZiBqdXN0ICIxIi4KKworLSBJc3N1ZSAjMjM1MDE6IEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIGNvZGUgaW50byBzZXBhcmF0ZSBmaWxlcyBieSBkZWZhdWx0LgorCitUZXN0cworLS0tLS0KKwogLSBJc3N1ZSAjMjM3OTk6IEFkZGVkIHRlc3Quc3VwcG9ydC5zdGFydF90aHJlYWRzKCkgZm9yIHJ1bm5pbmcgYW5kCiAgIGNsZWFuaW5nIHVwIG11bHRpcGxlIHRocmVhZHMuCiAKIC0gSXNzdWUgIzIyMzkwOiB0ZXN0LnJlZ3J0ZXN0IG5vdyBlbWl0cyBhIHdhcm5pbmcgaWYgdGVtcG9yYXJ5IGZpbGVzIG9yCiAgIGRpcmVjdG9yaWVzIGFyZSBsZWZ0IGFmdGVyIHJ1bm5pbmcgYSB0ZXN0LgogCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTgxMjg6IHB5Z2V0dGV4dCBub3cgdXNlcyBzdGFuZGFyZCArTk5OTiBmb3JtYXQgaW4gdGhlCisgIFBPVC1DcmVhdGlvbi1EYXRlIGhlYWRlci4KKworLSBJc3N1ZSAjMjM5MzU6IEFyZ3VtZW50IENsaW5pYydzIHVuZGVyc3RhbmRpbmcgb2YgZm9ybWF0IHVuaXRzCisgIGFjY2VwdGluZyBieXRlcywgYnl0ZWFycmF5cywgYW5kIGJ1ZmZlcnMgaXMgbm93IGNvbnNpc3RlbnQgd2l0aAorICBib3RoIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzIzOTQ0OiBBcmd1bWVudCBDbGluaWMgbm93IHdyYXBzIGxvbmcgaW1wbCBwcm90b3R5cGVzIGF0IGNvbHVtbiA3OC4KKworLSBJc3N1ZSAjMjA1ODY6IEFyZ3VtZW50IENsaW5pYyBub3cgZW5zdXJlcyB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IGRvY3N0cmluZ3MKKyAgaGF2ZSBzaWduYXR1cmVzLgorCistIElzc3VlICMyMzQ5MjogQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgYXJndW1lbnQgcGFyc2luZyBjb2RlIHdpdGgKKyAgUHlBcmdfUGFyc2UgaW5zdGVhZCBvZiBQeUFyZ19QYXJzZVR1cGxlIGlmIHBvc3NpYmxlLgorCistIElzc3VlICMyMzUwMDogQXJndW1lbnQgQ2xpbmljIGlzIG5vdyBzbWFydGVyIGFib3V0IGdlbmVyYXRpbmcgdGhlICIjaWZuZGVmIgorICAoZW1wdHkpIGRlZmluaXRpb24gb2YgdGhlIG1ldGhvZGRlZiBtYWNybzogaXQncyBvbmx5IGdlbmVyYXRlZCBvbmNlLCBldmVuCisgIGlmIEFyZ3VtZW50IENsaW5pYyBwcm9jZXNzZXMgdGhlIHNhbWUgc3ltYm9sIG11bHRpcGxlIHRpbWVzLCBhbmQgaXQncyBlbWl0dGVkCisgIGF0IHRoZSBlbmQgb2YgYWxsIHByb2Nlc3NpbmcgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0IHVzZS4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzIzOTk4OiBQeUltcG9ydF9SZUluaXRMb2NrKCkgbm93IGNoZWNrcyBmb3IgbG9jayBhbGxvY2F0aW9uIGVycm9yCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0yOAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzM6IEluY3JlYXNlZCBwZXJmb3JtYW5jZSBvZiBzdHJpbmcgc2VhcmNoIG9wZXJhdGlvbnMgKHN0ci5maW5kLAorICBzdHIuaW5kZXgsIHN0ci5jb3VudCwgdGhlIGluIG9wZXJhdG9yLCBzdHIuc3BsaXQsIHN0ci5wYXJ0aXRpb24pIHdpdGgKKyAgYXJndW1lbnRzIG9mIGRpZmZlcmVudCBraW5kcyAoVUNTMSwgVUNTMiwgVUNTNCkuCisKKy0gSXNzdWUgIzIzNzUzOiBQeXRob24gZG9lc24ndCBzdXBwb3J0IGFueW1vcmUgcGxhdGZvcm1zIHdpdGhvdXQgc3RhdCgpIG9yCisgIGZzdGF0KCksIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHJlcXVpcmVkLgorCistIElzc3VlICMyMzY4MTogVGhlIC1iIG9wdGlvbiBub3cgYWZmZWN0cyBjb21wYXJpc29ucyBvZiBieXRlcyB3aXRoIGludC4KKworLSBJc3N1ZSAjMjM2MzI6IE1lbW9yeXZpZXdzIG5vdyBhbGxvdyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIGZvcgorICBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cykuCisKKy0gSXNzdWUgIzIzMTkyOiBGaXhlZCBnZW5lcmF0b3IgbGFtYmRhcy4gIFBhdGNoIGJ5IEJydW5vIENhdWV0LgorCistIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCisgIG9iamVjdHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQyNjA6IFRoZSBncm91cGluZGV4IGF0dHJpYnV0ZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBvYmplY3QKKyAgbm93IGlzIG5vbi1tb2RpZmlhYmxlIG1hcHBpbmcuCisKKy0gSXNzdWUgIzIzNzkyOiBJZ25vcmUgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiB0aGUgcHlkb2MgcGFnZXIgaXMgYWN0aXZlLgorICBUaGlzIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN0YW5kYXJkIHVuaXggcGFnZXJzLCBhbmQgcHJldmVudHMKKyAgcGlwZXBhZ2VyIGZyb20gc2h1dHRpbmcgZG93biB3aGlsZSB0aGUgcGFnZXIgaXRzZWxmIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzIzNzc1OiBwcHJpbnQoKSBvZiBPcmRlcmVkRGljdCBub3cgb3V0cHV0cyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbgorICBhcyByZXByKCkuCisKKy0gSXNzdWUgIzIzNzY1OiBSZW1vdmVkIElzQmFkU3RyaW5nUHRyIGNhbGxzIGluIGN0eXBlcworCistIElzc3VlICMyMjM2NDogSW1wcm92ZWQgc29tZSByZSBlcnJvciBtZXNzYWdlcyB1c2luZyByZWdleCBmb3IgaGludHMuCisKKy0gSXNzdWUgIzIzNzQyOiBudHBhdGguZXhwYW5kdmFycygpIG5vIGxvbmdlciBsb3NlcyB1bmJhbGFuY2VkIHNpbmdsZSBxdW90ZXMuCisKKy0gSXNzdWUgIzIxNzE3OiBUaGUgemlwZmlsZS5aaXBGaWxlLm9wZW4gZnVuY3Rpb24gbm93IHN1cHBvcnRzICd4JyAoZXhjbHVzaXZlCisgIGNyZWF0aW9uKSBtb2RlLgorCistIElzc3VlICMyMTgwMjogVGhlIHJlYWRlciBpbiBCdWZmZXJlZFJXUGFpciBub3cgaXMgY2xvc2VkIGV2ZW4gd2hlbiBjbG9zaW5nCisgIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KKworLSBJc3N1ZSAjMjM2MjI6IFVua25vd24gZXNjYXBlcyBpbiByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgY29uc2lzdCBvZiBgYCdcJ2BgCisgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4KKyAgUHl0aG9uIDMuNi4KKworLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHRvIHNwZWNpZnkgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKKyAga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgYW5kCisgIHRoZSAiZm9ybWF0X3N0cmluZyIgcGFyYW1ldGVycyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjM1MDI6IFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBzdXBwb3J0cyBtYXBwaW5nIHByb3hpZXMuCisKKy0gSXNzdWUgIzE3NTMwOiBwcHJpbnQgbm93IHdyYXBzIGxvbmcgYnl0ZXMgb2JqZWN0cyBhbmQgYnl0ZWFycmF5cy4KKworLSBJc3N1ZSAjMjI2ODc6IEZpeGVkIHNvbWUgY29ybmVyIGNhc2VzIGluIGJyZWFraW5nIHdvcmRzIGluIHRldHh0d3JhcC4KKyAgR290IHJpZCBvZiBxdWFkcmF0aWMgY29tcGxleGl0eSBpbiBicmVha2luZyBsb25nIHdvcmRzLgorCistIElzc3VlICM0NzI3OiBUaGUgY29weSBtb2R1bGUgbm93IHVzZXMgcGlja2xlIHByb3RvY29sIDQgKFBFUCAzMTU0KSBhbmQKKyAgc3VwcG9ydHMgY29weWluZyBvZiBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aG9zZSBfX25ld19fIG1ldGhvZCB0YWtlcworICBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLgorCistIElzc3VlICMyMzQ5MTogQWRkZWQgYSB6aXBhcHAgbW9kdWxlIHRvIHN1cHBvcnQgY3JlYXRpbmcgZXhlY3V0YWJsZSB6aXAKKyAgZmlsZSBhcmNoaXZlcyBvZiBQeXRob24gY29kZS4gUmVnaXN0ZXJlZCAiLnB5eiIgYW5kICIucHl6dyIgZXh0ZW5zaW9ucworICBvbiBXaW5kb3dzIGZvciB0aGVzZSBhcmNoaXZlcyAoUEVQIDQ0MSkuCisKKy0gSXNzdWUgIzIzNjU3OiBBdm9pZCBleHBsaWNpdCBjaGVja3MgZm9yIHN0ciBpbiB6aXBhcHAsIGFkZGluZyBzdXBwb3J0CisgIGZvciBwYXRobGliLlBhdGggb2JqZWN0cyBhcyBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzIzNjg4OiBBZGRlZCBzdXBwb3J0IG9mIGFyYml0cmFyeSBieXRlcy1saWtlIG9iamVjdHMgYW5kIGF2b2lkZWQKKyAgdW5uZWNlc3NhcnkgY29weWluZyBvZiBtZW1vcnl2aWV3IGluIGd6aXAuR3ppcEZpbGUud3JpdGUoKS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgV29sZmdhbmcgTWFpZXIuCisKKy0gSXNzdWUgIzIzMjUyOiAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBaSVAgZmlsZXMgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorCistIElzc3VlICMyMzY0NzogSW5jcmVhc2UgaW1wYWxpYidzIE1BWExJTkUgdG8gYWNjb21tb2RhdGUgbW9kZXJuIG1haWxib3ggc2l6ZXMuCisKKy0gSXNzdWUgIzIzNTM5OiBJZiBib2R5IGlzIE5vbmUsIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3Qgbm93IHNldHMKKyAgQ29udGVudC1MZW5ndGggdG8gMCBmb3IgUFVULCBQT1NULCBhbmQgUEFUQ0ggaGVhZGVycyB0byBhdm9pZCA0MTEgZXJyb3JzIGZyb20KKyAgc29tZSB3ZWIgc2VydmVycy4KKworLSBJc3N1ZSAjMjIzNTE6IFRoZSBubnRwbGliLk5OVFAgY29uc3RydWN0b3Igbm8gbG9uZ2VyIGxlYXZlcyB0aGUgY29ubmVjdGlvbgorICBhbmQgc29ja2V0IG9wZW4gdW50aWwgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGNsZWFucyB0aGVtIHVwLiAgUGF0Y2ggYnkKKyAgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM3MDQ6IGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgc3VwcG9ydCBtZXRob2RzIGZvciBpbmRleCgpLAorICBpbnNlcnQoKSwgYW5kIGNvcHkoKS4gIFRoaXMgYWxsb3dzIGRlcXVlcyB0byBiZSByZWdpc3RlcmVkIGFzIGEKKyAgTXV0YWJsZVNlcXVlbmNlIGFuZCBpdCBpbXByb3ZlcyB0aGVpciBzdWJzdGl0dXRhYmxpdHkgZm9yIGxpc3RzLgorCistIElzc3VlICMyMzcxNTogOmZ1bmM6YHNpZ25hbC5zaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWduYWwuc2lndGltZWR3YWl0YCBhcmUKKyAgbm93IHJldHJpZWQgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBub3QgaW4gdGhlICpzaWdzZXQqIHBhcmFtZXRlciwgaWYKKyAgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbi4gc2lnbmFsLnNpZ3RpbWVkd2FpdCgpCisgIHJlY29tcHV0ZXMgdGhlIHRpbWVvdXQgd2l0aCBhIG1vbm90b25pYyBjbG9jayB3aGVuIGl0IGlzIHJldHJpZWQuCisKKy0gSXNzdWUgIzIzMDAxOiBGZXcgZnVuY3Rpb25zIGluIG1vZHVsZXMgbW1hcCwgb3NzYXVkaW9kZXYsIHNvY2tldCwgc3NsLCBhbmQKKyAgY29kZWNzLCB0aGF0IGFjY2VwdGVkIG9ubHkgcmVhZC1vbmx5IGJ5dGVzLWxpa2Ugb2JqZWN0IG5vdyBhY2NlcHQgd3JpdGFibGUKKyAgYnl0ZXMtbGlrZSBvYmplY3QgdG9vLgorCistIElzc3VlICMyMzY0NjogSWYgdGltZS5zbGVlcCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgc2xlZXAgaXMgbm93CisgIHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCBkZWxheSwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4KKyAgZXhjZXB0aW9uIChQRVAgNDc1KS4KKworLSBJc3N1ZSAjMjMxMzY6IF9zdHJwdGltZSBub3cgdW5pZm9ybWx5IGhhbmRsZXMgYWxsIGRheXMgaW4gd2VlayAwLCBpbmNsdWRpbmcKKyAgRGVjIDMwIG9mIHByZXZpb3VzIHllYXIuICBCYXNlZCBvbiBwYXRjaCBieSBKaW0gQ2Fycm9sbC4KKworLSBJc3N1ZSAjMjM3MDA6IEl0ZXJhdG9yIG9mIE5hbWVkVGVtcG9yYXJ5RmlsZSBub3cga2VlcHMgYSByZWZlcmVuY2UgdG8KKyAgTmFtZWRUZW1wb3JhcnlGaWxlIGluc3RhbmNlLiAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgorCistIElzc3VlICMyMjkwMzogVGhlIGZha2UgdGVzdCBjYXNlIGNyZWF0ZWQgYnkgdW5pdHRlc3QubG9hZGVyIHdoZW4gaXQgZmFpbHMKKyAgaW1wb3J0aW5nIGEgdGVzdCBtb2R1bGUgaXMgbm93IHBpY2tsYWJsZS4KKworLSBJc3N1ZSAjMjIxODE6IE9uIExpbnV4LCBvcy51cmFuZG9tKCkgbm93IHVzZXMgdGhlIG5ldyBnZXRyYW5kb20oKSBzeXNjYWxsIGlmCisgIGF2YWlsYWJsZSwgc3lzY2FsbCBpbnRyb2R1Y2VkIGluIHRoZSBMaW51eCBrZXJuZWwgMy4xNy4gSXQgaXMgbW9yZSByZWxpYWJsZQorICBhbmQgbW9yZSBzZWN1cmUsIGJlY2F1c2UgaXQgYXZvaWRzIHRoZSBuZWVkIG9mIGEgZmlsZSBkZXNjcmlwdG9yIGFuZCB3YWl0cworICB1bnRpbCB0aGUga2VybmVsIGhhcyBlbm91Z2ggZW50cm9weS4KKworLSBJc3N1ZSAjMjIxMTogVXBkYXRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGh0dHAuY29va2llcy5Nb3JzZWwgY2xhc3MuCisgIFNldHRpbmcgYXR0cmlidXRlcyBrZXksIHZhbHVlIGFuZCBjb2RlZF92YWx1ZSBkaXJlY3RseSBub3cgaXMgZGVwcmVjYXRlZC4KKyAgdXBkYXRlKCkgYW5kIHNldGRlZmF1bHQoKSBub3cgdHJhbnNmb3JtIGFuZCBjaGVjayBrZXlzLiAgQ29tcGFyaW5nIGZvcgorICBlcXVhbGl0eSBub3cgdGFrZXMgaW50byBhY2NvdW50IGF0dHJpYnV0ZXMga2V5LCB2YWx1ZSBhbmQgY29kZWRfdmFsdWUuCisgIGNvcHkoKSBub3cgcmV0dXJucyBhIE1vcnNlbCwgbm90IGEgZGljdC4gIHJlcHIoKSBub3cgY29udGFpbnMgYWxsIGF0dHJpYnV0ZXMuCisgIE9wdGltaXplZCBjaGVja2luZyBrZXlzIGFuZCBxdW90aW5nIHZhbHVlcy4gIEFkZGVkIG5ldyB0ZXN0cy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTg5ODM6IEFsbG93IHNlbGVjdGlvbiBvZiBvdXRwdXQgdW5pdHMgaW4gdGltZWl0LgorICBQYXRjaCBieSBKdWxpYW4gR2luZGkuCisKKy0gSXNzdWUgIzIzNjMxOiBGaXggdHJhY2ViYWNrLmZvcm1hdF9saXN0IHdoZW4gYSB0cmFjZWJhY2sgaGFzIGJlZW4gbXV0YXRlZC4KKworLSBJc3N1ZSAjMjM1Njg6IEFkZCByZGl2bW9kIHN1cHBvcnQgdG8gTWFnaWNNb2NrKCkgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgSMOla2FuIEzDtnZkYWhsLgorCistIElzc3VlICMyMDUyOiBBZGQgY2hhcnNldCBwYXJhbWV0ZXIgdG8gSHRtbERpZmYubWFrZV9maWxlKCkuCisKKy0gSXNzdWUgIzIzNjY4OiBTdXBwb3J0IG9zLnRydW5jYXRlIGFuZCBvcy5mdHJ1bmNhdGUgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjMxMzg6IEZpeGVkIHBhcnNpbmcgY29va2llcyB3aXRoIGFic2VudCBrZXlzIG9yIHZhbHVlcyBpbiBjb29raWVqYXIuCisgIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIzMDUxOiBtdWx0aXByb2Nlc3NpbmcuUG9vbCBtZXRob2RzIGltYXAoKSBhbmQgaW1hcF91bm9yZGVyZWQoKSBub3cKKyAgaGFuZGxlIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IGFuIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgQWxvbiBEaWFtYW50IGFuZCBEYXZpbgorICBQb3R0cy4KKworLSBJc3N1ZSAjMjM1ODE6IEFkZCBtYXRtdWwgc3VwcG9ydCB0byBNYWdpY01vY2suIFBhdGNoIGJ5IEjDpWthbiBMw7Z2ZGFobC4KKworLSBJc3N1ZSAjMjM1NjY6IGVuYWJsZSgpLCByZWdpc3RlcigpLCBkdW1wX3RyYWNlYmFjaygpIGFuZAorICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGZ1bmN0aW9ucyBvZiBmYXVsdGhhbmRsZXIgbm93IGFjY2VwdCBmaWxlCisgIGRlc2NyaXB0b3JzLiBQYXRjaCBieSBXZWkgV3UuCisKKy0gSXNzdWUgIzIyOTI4OiBEaXNhYmxlZCBIVFRQIGhlYWRlciBpbmplY3Rpb25zIGluIGh0dHAuY2xpZW50LgorICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMyMzYxNTogTW9kdWxlcyBiejIsIHRhcmZpbGUgYW5kIHRva2VuaXplIG5vdyBjYW4gYmUgcmVsb2FkZWQgd2l0aAorICBpbXAucmVsb2FkKCkuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMjM2MDU6IG9zLndhbGsoKSBub3cgY2FsbHMgb3Muc2NhbmRpcigpIGluc3RlYWQgb2Ygb3MubGlzdGRpcigpLgorICBUaGUgdXNhZ2Ugb2Ygb3Muc2NhbmRpcigpIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBvcy5zdGF0KCkuCisgIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBCZW4gSG95dC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzIzNTg1OiBtYWtlIHBhdGNoY2hlY2sgd2lsbCBlbnN1cmUgdGhlIGludGVycHJldGVyIGlzIGJ1aWx0LgorCitUZXN0cworLS0tLS0KKwogLSBJc3N1ZSAjMjM1ODM6IEFkZGVkIHRlc3RzIGZvciBzdGFuZGFyZCBJTyBzdHJlYW1zIGluIElETEUuCiAKKy0gSXNzdWUgIzIyMjg5OiBQcmV2ZW50IHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyBkdWUgdG8gZnRwIGNvbm5lY3Rpb24gdGltZW91dC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIyODI2OiBUaGUgcmVzdWx0IG9mIG9wZW4oKSBpbiBUb29scy9mcmVlemUvYmtmaWxlLnB5IGlzIG5vdyBiZXR0ZXIKKyAgY29tcGF0aWJsZSB3aXRoIHJlZ3VsYXIgZmlsZXMgKGluIHBhcnRpY3VsYXIgaXQgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0CisgIG1hbmFnZW1lbnQgcHJvdG9jb2wpLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNSBhbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0wOQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzE6IFB5T2JqZWN0X0NhbGwoKSBhbmQgUHlDRnVuY3Rpb25fQ2FsbCgpIG5vdyByYWlzZSBhIFN5c3RlbUVycm9yCisgIGlmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHJlc3VsdCBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhlIFN5c3RlbUVycm9yIGlzCisgIGNoYWluZWQgdG8gdGhlIHByZXZpb3VzIGV4Y2VwdGlvbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMjUyNDogTmV3IG9zLnNjYW5kaXIoKSBmdW5jdGlvbiwgcGFydCBvZiB0aGUgUEVQIDQ3MTogIm9zLnNjYW5kaXIoKQorICBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvciIuIFBhdGNoIHdyaXR0ZW4gYnkgQmVuCisgIEhveXQuCisKKy0gSXNzdWUgIzIzMTAzOiBSZWR1Y2VkIHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2YgSVB2NEFkZHJlc3MgYW5kIElQdjZBZGRyZXNzLgorCistIElzc3VlICMyMTc5MzogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciBhZ2FpbiBsb2dzIHJlc3BvbnNlIGNvZGUgYXMgbnVtZXJpYywKKyAgbm90IGFzIHN0cmluZ2lmaWVkIGVudW0uICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMyMzQ3NjogSW4gdGhlIHNzbCBtb2R1bGUsIGVuYWJsZSBPcGVuU1NMJ3MgWDUwOV9WX0ZMQUdfVFJVU1RFRF9GSVJTVAorICBmbGFnIG9uIGNlcnRpZmljYXRlIHN0b3JlcyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMjM1NzY6IEF2b2lkIHN0YWxsaW5nIGluIFNTTCByZWFkcyB3aGVuIEVPRiBoYXMgYmVlbiByZWFjaGVkIGluIHRoZQorICBTU0wgbGF5ZXIgYnV0IHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gaGFzbid0IGJlZW4gY2xvc2VkLgorCistIElzc3VlICMyMzUwNDogQWRkZWQgYW4gX19hbGxfXyB0byB0aGUgdHlwZXMgbW9kdWxlLgorCistIElzc3VlICMyMzU2MzogT3B0aW1pemVkIHV0aWxpdHkgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZS4KKworLSBJc3N1ZSAjNzgzMDogRmxhdHRlbiBuZXN0ZWQgZnVuY3Rvb2xzLnBhcnRpYWwuCisKKy0gSXNzdWUgIzIwMjA0OiBBZGRlZCB0aGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUgdG8gX3RraW50ZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTk5ODA6IEltcHJvdmVkIGhlbHAoKSBmb3Igbm9uLXJlY29nbml6ZWQgc3RyaW5ncy4gIGhlbHAoJycpIG5vdworICBzaG93cyB0aGUgaGVscCBvbiBzdHIuICBoZWxwKCdoZWxwJykgbm93IHNob3dzIHRoZSBoZWxwIG9uIGhlbHAoKS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMjM1MjE6IENvcnJlY3RlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lZGVsdGEgZGl2aXNpb24uCisKKyAqIEVsaW1pbmF0ZWQgT3ZlcmZsb3dFcnJvciBmcm9tIHRpbWVkZWx0YSAqIGZsb2F0IGZvciBzb21lIGZsb2F0czsKKyAqIENvcnJlY3RlZCByb3VuZGluZyBpbiB0aW1lZGx0YSB0cnVlIGRpdmlzaW9uLgorCistIElzc3VlICMyMTYxOTogUG9wZW4gb2JqZWN0cyBubyBsb25nZXIgbGVhdmUgYSB6b21iaWUgYWZ0ZXIgZXhpdCBpbiB0aGUgd2l0aAorICBzdGF0ZW1lbnQgaWYgdGhlIHBpcGUgd2FzIGJyb2tlbi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIyOTM2OiBNYWtlIGl0IHBvc3NpYmxlIHRvIHNob3cgbG9jYWwgdmFyaWFibGVzIGluIHRyYWNlYmFja3MgZm9yCisgIGJvdGggdGhlIHRyYWNlYmFjayBtb2R1bGUgYW5kIHVuaXR0ZXN0LgorCistIElzc3VlICMxNTk1NTogQWRkIGFuIG9wdGlvbiB0byBsaW1pdCB0aGUgb3V0cHV0IHNpemUgaW4gYnoyLmRlY29tcHJlc3MoKS4KKyAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjNjYzOTogTW9kdWxlLWxldmVsIHR1cnRsZSBmdW5jdGlvbnMgbm8gbG9uZ2VyIHJhaXNlIFRjbEVycm9yIGFmdGVyCisgIGNsb3NpbmcgdGhlIHdpbmRvdy4KKworLSBJc3N1ZXMgIzgxNDI1MywgIzkxNzk6IEdyb3VwIHJlZmVyZW5jZXMgYW5kIGNvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZXMgbm93CisgIHdvcmsgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzIzMjE1OiBNdWx0aWJ5dGUgY29kZWNzIHdpdGggY3VzdG9tIGVycm9yIGhhbmRsZXJzIHRoYXQgaWdub3JlcyBlcnJvcnMKKyAgY29uc3VtZWQgdG9vIG11Y2ggbWVtb3J5IGFuZCByYWlzZWQgU3lzdGVtRXJyb3Igb3IgTWVtb3J5RXJyb3IuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWtzaSBUb3JoYW1vLgorCistIElzc3VlICM1NzAwOiBpby5GaWxlSU8oKSBjYWxsZWQgZmx1c2goKSBhZnRlciBjbG9zaW5nIHRoZSBmaWxlLgorICBmbHVzaCgpIHdhcyBub3QgY2FsbGVkIGluIGNsb3NlKCkgaWYgY2xvc2VmZD1GYWxzZS4KKworLSBJc3N1ZSAjMjMzNzQ6IEZpeGVkIHB5ZG9jIGZhaWx1cmUgd2l0aCBub24tQVNDSUkgZmlsZXMgd2hlbiBzdGRvdXQgZW5jb2RpbmcKKyAgZGlmZmVycyBmcm9tIGZpbGUgc3lzdGVtIGVuY29kaW5nIChlLmcuIG9uIE1hYyBPUykuCisKKy0gSXNzdWUgIzIzNDgxOiBSZW1vdmUgUkM0IGZyb20gdGhlIFNTTCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0LgorCistIElzc3VlICMyMTU0ODogRml4IHB5ZG9jLnN5bm9wc2lzKCkgYW5kIHB5ZG9jLmFwcm9wb3MoKSBvbiBtb2R1bGVzIHdpdGggZW1wdHkKKyAgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjMjI4ODU6IEZpeGVkIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXR5IGluIHRoZSBkYm0uZHVtYgorICBtb2R1bGUuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIzMjM5OiBzc2wubWF0Y2hfaG9zdG5hbWUoKSBub3cgc3VwcG9ydHMgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorCistIElzc3VlICMyMzE0NjogRml4IG1pc2hhbmRsaW5nIG9mIGFic29sdXRlIFdpbmRvd3MgcGF0aHMgd2l0aCBmb3J3YXJkCisgIHNsYXNoZXMgaW4gcGF0aGxpYi4KKworLSBJc3N1ZSAjMjMwOTY6IFBpY2tsZSByZXByZXNlbnRhdGlvbiBvZiBmbG9hdHMgd2l0aCBwcm90b2NvbCAwIG5vdyBpcyB0aGUgc2FtZQorICBmb3IgYm90aCBQeXRob24gYW5kIEMgaW1wbGVtZW50YXRpb25zLgorCistIElzc3VlICMxOTEwNTogcHByaW50IG5vdyBtb3JlIGVmZmljaWVudGx5IHVzZXMgZnJlZSBzcGFjZSBhdCB0aGUgcmlnaHQuCisKKy0gSXNzdWUgIzE0OTEwOiBBZGQgYWxsb3dfYWJicmV2IHBhcmFtZXRlciB0byBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci4gUGF0Y2ggYnkKKyAgSm9uYXRoYW4gUGF1Z2gsIFN0ZXZlbiBCZXRoYXJkLCBwYXVsIGozIGFuZCBEYW5pZWwgRXJpa3Nzb24uCisKKy0gSXNzdWUgIzIxNzE3OiB0YXJmaWxlLm9wZW4oKSBub3cgc3VwcG9ydHMgJ3gnIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUuCisKKy0gSXNzdWUgIzIzMzQ0OiBtYXJzaGFsLmR1bXBzKCkgaXMgbm93IDIwLTI1JSBmYXN0ZXIgb24gYXZlcmFnZS4KKworLSBJc3N1ZSAjMjA0MTY6IG1hcnNoYWwuZHVtcHMoKSB3aXRoIHByb3RvY29scyAzIGFuZCA0IGlzIG5vdyA0MC01MCUgZmFzdGVyIG9uCisgIGF2ZXJhZ2UuCisKKy0gSXNzdWUgIzIzNDIxOiBGaXhlZCBjb21wcmVzc2lvbiBpbiB0YXJmaWxlIENMSS4gIFBhdGNoIGJ5IHdkdjQ3NThoLgorCistIElzc3VlICMyMzM2NzogRml4IHBvc3NpYmxlIG92ZXJmbG93cyBpbiB0aGUgdW5pY29kZWRhdGEgbW9kdWxlLgorCistIElzc3VlICMyMzM2MTogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIFdpbmRvd3Mgc3VicHJvY2VzcyBjcmVhdGlvbiBjb2RlLgorCistIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lciBub3cgdGFrZXMgYSByZXNwZWN0X2hhbmRsZXJfbGV2ZWwga2V5d29yZAorICBhcmd1bWVudCB3aGljaCwgaWYgc2V0IHRvIFRydWUsIHdpbGwgcGFzcyBtZXNzYWdlcyB0byBoYW5kbGVycyB0YWtpbmcgaGFuZGxlcgorICBsZXZlbHMgaW50byBhY2NvdW50LgorCistIElzc3VlICMxOTcwNTogdHVydGxlZGVtbyBub3cgaGFzIGEgdmlzdWFsIHNvcnRpbmcgYWxnb3JpdGhtIGRlbW8uICBPcmlnaW5hbAorICBwYXRjaCBmcm9tIEphc29uIFllby4KKworLSBJc3N1ZSAjMjM4MDE6IEZpeCBpc3N1ZSB3aGVyZSBjZ2kuRmllbGRTdG9yYWdlIGRpZCBub3QgYWx3YXlzIGlnbm9yZSB0aGUKKyAgZW50aXJlIHByZWFtYmxlIHRvIGEgbXVsdGlwYXJ0IGJvZHkuCisKIEJ1aWxkCiAtLS0tLQogCiAtIElzc3VlICMyMzQ0NTogcHlkZWJ1ZyBidWlsZHMgbm93IHVzZSAiZ2NjIC1PZyIgd2hlcmUgcG9zc2libGUsIHRvIG1ha2UKICAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIGZhc3Rlci4KIAotLSBJc3N1ZSAjMjM2ODY6IFVwZGF0ZSBPUyBYIDEwLjUgaW5zdGFsbGVyIGFuZCBXaW5kb3dzIGJ1aWxkcyB0byB1c2UKLSAgT3BlblNTTCAxLjAuMmEuCistIElzc3VlICMyMzY4NjogVXBkYXRlIE9TIFggMTAuNSBpbnN0YWxsZXIgYnVpbGQgdG8gdXNlIE9wZW5TU0wgMS4wLjJhLgogCiBDIEFQSQogLS0tLS0KIAotLSBJc3N1ZSAjMjM5OTg6IFB5SW1wb3J0X1JlSW5pdExvY2soKSBub3cgY2hlY2tzIGZvciBsb2NrIGFsbG9jYXRpb24gZXJyb3IKKy0gSXNzdWUgIzIwMjA0OiBEZXByZWNhdGlvbiB3YXJuaW5nIGlzIG5vdyByYWlzZWQgZm9yIGJ1aWx0aW4gdHlwZSB3aXRob3V0IHRoZQorICBfX21vZHVsZV9fIGF0dHJpYnV0ZS4KIAotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQorV2luZG93cworLS0tLS0tLQogCi0tIElzc3VlICMyNDM1MTogQ2xhcmlmeSB3aGF0IGlzIG1lYW50IGJ5ICJpZGVudGlmaWVyIiBpbiB0aGUgY29udGV4dCBvZgotICBzdHJpbmcuVGVtcGxhdGUgaW5zdGFuY2VzLgorLSBJc3N1ZSAjMjM0NjU6IEltcGxlbWVudCBQRVAgNDg2IC0gTWFrZSB0aGUgUHl0aG9uIExhdW5jaGVyIGF3YXJlIG9mIHZpcnR1YWwKKyAgZW52aXJvbm1lbnRzLiBQYXRjaCBieSBQYXVsIE1vb3JlLgogCi0tIElzc3VlICMyMjE1NTogQWRkIEZpbGUgSGFuZGxlcnMgc3Vic2VjdGlvbiB3aXRoIGNyZWF0ZWZpbGVoYW5kbGVyIHRvIHRraW50ZXIKLSAgZG9jLiAgUmVtb3ZlIG9ic29sZXRlIGV4YW1wbGUgZnJvbSBGQVEuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyNDAyOTogRG9jdW1lbnQgdGhlIG5hbWUgYmluZGluZyBiZWhhdmlvciBmb3Igc3VibW9kdWxlIGltcG9ydHMuCi0KLS0gSXNzdWUgIzI0MDc3OiBGaXggdHlwbyBpbiBtYW4gcGFnZSBmb3IgLUkgY29tbWFuZCBvcHRpb246IC1zLCBub3QgLVMuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMzMzMDogaDJweSBub3cgc3VwcG9ydHMgYXJiaXRyYXJ5IGZpbGVuYW1lcyBpbiAjaW5jbHVkZS4KLQotLSBJc3N1ZSAjMjQwMzE6IG1ha2UgcGF0Y2hjaGVjayBub3cgc3VwcG9ydHMgZ2l0IGNoZWNrb3V0cywgdG9vLgorLSBJc3N1ZSAjMjM0Mzc6IE1ha2UgdXNlciBzY3JpcHRzIGRpcmVjdG9yeSB2ZXJzaW9uZWQgb24gV2luZG93cy4gUGF0Y2ggYnkgUGF1bAorICBNb29yZS4KIAogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy41IGFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiAyMDE1LTAyLTIzCitSZWxlYXNlIGRhdGU6IDIwMTUtMDItMDgKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzIzMjg1OiBQRVAgNDc1IC0gRUlOVFIgaGFuZGxpbmcuCisKIC0gSXNzdWUgIzIyNzM1OiBGaXggbWFueSBlZGdlIGNhc2VzIChpbmNsdWRpbmcgY3Jhc2hlcykgaW52b2x2aW5nIGN1c3RvbSBtcm8oKQogICBpbXBsZW1lbnRhdGlvbnMuCiAKQEAgLTM1OCwxNyArOTQwLDQ2IEBACiAtIElzc3VlICMyMTI5NTogUmV2ZXJ0IHNvbWUgY2hhbmdlcyAoaXNzdWUgIzE2Nzk1KSB0byBBU1QgbGluZSBudW1iZXJzIGFuZAogICBjb2x1bW4gb2Zmc2V0cyB0aGF0IGNvbnN0aXR1dGVkIGEgcmVncmVzc2lvbi4KIAorLSBJc3N1ZSAjMjI5ODY6IEFsbG93IGNoYW5naW5nIGFuIG9iamVjdCdzIF9fY2xhc3NfXyBiZXR3ZWVuIGEgZHluYW1pYyB0eXBlIGFuZAorICBzdGF0aWMgdHlwZSBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMxNTg1OTogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLCBQeVVuaWNvZGVfRW5jb2RlTUJDUygpIGFuZAorICBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoKSBub3cgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBvYmplY3QgaXMgbm90IGFuCisgIFVuaWNvZGUgb2JqZWN0LiBGb3IgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLCBpdCB3YXMgYWxyZWFkeSB0aGUgY2FzZSBvbgorICBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBXaW5kb3dzLiBQYXRjaCB3cml0dGVuIGJ5IENhbXBiZWxsIEJhcnRvbi4KKwogLSBJc3N1ZSAjMjE0MDg6IFRoZSBkZWZhdWx0IF9fbmVfXygpIG5vdyByZXR1cm5zIE5vdEltcGxlbWVudGVkIGlmIF9fZXFfXygpCiAgIHJldHVybmVkIE5vdEltcGxlbWVudGVkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAogLSBJc3N1ZSAjMjMzMjE6IEZpeGVkIGEgY3Jhc2ggaW4gc3RyLmRlY29kZSgpIHdoZW4gZXJyb3IgaGFuZGxlciByZXR1cm5lZAogICByZXBsYWNtZW50IHN0cmluZyBsb25nZXIgdGhhbiBtYWlsZm9ybWVkIGlucHV0IGRhdGEuCiAKKy0gSXNzdWUgIzIyMjg2OiBUaGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXJzIG5vdyB3b3JrcyB3aXRoCisgIGRlY29kaW5nIGFuZCB0cmFuc2xhdGluZy4KKworLSBJc3N1ZSAjMjMyNTM6IERlbGF5LWxvYWQgU2hlbGxFeGVjdXRlW0FXXSBpbiBvcy5zdGFydGZpbGUgZm9yIHJlZHVjZWQKKyAgc3RhcnR1cCBvdmVyaGVhZCBvbiBXaW5kb3dzLgorCistIElzc3VlICMyMjAzODogcHlhdG9taWMuaCBub3cgdXNlcyBzdGRhdG9taWMuaCBvciBHQ0MgYnVpbHQtaW4gZnVuY3Rpb25zIGZvcgorICBhdG9taWMgbWVtb3J5IGFjY2VzcyBpZiBhdmFpbGFibGUuIFBhdGNoIHdyaXR0ZW4gYnkgVml0b3IgZGUgTGltYSBhbmQgR3VzdGF2bworICBUZW1wbGUuCisKKy0gSXNzdWUgIzIwMjg0OiAlLWludGVycG9sYXRpb24gKGFrYSBwcmludGYpIGZvcm1hdHRpbmcgYWRkZWQgZm9yIGJ5dGVzIGFuZAorICBieXRlYXJyYXkuCisKIC0gSXNzdWUgIzIzMDQ4OiBGaXgganVtcGluZyBvdXQgb2YgYW4gaW5maW5pdGUgd2hpbGUgbG9vcCBpbiB0aGUgcGRiLgogCiAtIElzc3VlICMyMDMzNTogYnl0ZXMgY29uc3RydWN0b3Igbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBlbmNvZGluZyBvciBlcnJvcnMKICAgaXMgc3BlY2lmaWVkIHdpdGggbm9uLXN0cmluZyBhcmd1bWVudC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFJlbmF1ZCBCbGFuY2guCiAKKy0gSXNzdWUgIzIyODM0OiBJZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBlbmRzIHVwIGJlaW5nIHNldCB0byBhCisgIG5vbi1leGlzdGVudCBkaXJlY3RvcnkgdGhlbiBpbXBvcnQgd2lsbCBubyBsb25nZXIgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IuCisKKy0gSXNzdWUgIzIyODY5OiBNb3ZlIHRoZSBpbnRlcnByZXRlciBzdGFydHVwICYgc2h1dGRvd24gY29kZSB0byBhIG5ldworICBkZWRpY2F0ZWQgcHlsaWZlY3ljbGUuYyBtb2R1bGUKKworLSBJc3N1ZSAjMjI4NDc6IEltcHJvdmUgbWV0aG9kIGNhY2hlIGVmZmljaWVuY3kuCisKIC0gSXNzdWUgIzIyMzM1OiBGaXggY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZW5sYXJnZSBhIGJ5dGVhcnJheSB0byAweDdmZmZmZmZmCiAgIGJ5dGVzIG9uIGEgMzItYml0IHBsYXRmb3JtLgogCkBAIC0zNzgsMTIgKzk4OSwyOCBAQAogLSBJc3N1ZSAjMjI2NDM6IEZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIFVuaWNvZGUgY2FzZSBvcGVyYXRpb25zICh1cHBlciwgbG93ZXIsCiAgIHRpdGxlLCBzd2FwY2FzZSwgY2FzZWZvbGQpLgogCistIElzc3VlICMxNzYzNjogQ2lyY3VsYXIgaW1wb3J0cyBpbnZvbHZpbmcgcmVsYXRpdmUgaW1wb3J0cyBhcmUgbm93CisgIHN1cHBvcnRlZC4KKwogLSBJc3N1ZSAjMjI2MDQ6IEZpeCBhc3NlcnRpb24gZXJyb3IgaW4gZGVidWcgbW9kZSB3aGVuIGRpdmlkaW5nIGEgY29tcGxleAogICBudW1iZXIgYnkgKG5hbiswaikuCiAKKy0gSXNzdWUgIzIxMDUyOiBEbyBub3QgcmFpc2UgSW1wb3J0V2FybmluZyB3aGVuIHN5cy5wYXRoX2hvb2tzIG9yIHN5cy5tZXRhX3BhdGgKKyAgYXJlIHNldCB0byBOb25lLgorCistIElzc3VlICMxNjUxODogVXNlICdieXRlcy1saWtlIG9iamVjdCByZXF1aXJlZCcgaW4gZXJyb3IgbWVzc2FnZXMgdGhhdAorICBwcmV2aW91c2x5IHVzZWQgdGhlIGZhciBtb3JlIGNyeXB0aWMgIid4JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIKKyAgcHJvdG9jb2wuCisKIC0gSXNzdWUgIzIyNDcwOiBGaXhlZCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiAiYmFja3NsYXNocmVwbGFjZSIsCiAgICJ4bWxjaGFycmVmcmVwbGFjZSIsIGFuZCAic3Vycm9nYXRlcGFzcyIgZXJyb3IgaGFuZGxlcnMuCiAKKy0gSXNzdWUgIzIyNTQwOiBzcGVlZCB1cCBgUHlPYmplY3RfSXNJbnN0YW5jZWAgYW5kIGBQeU9iamVjdF9Jc1N1YmNsYXNzYCBpbiB0aGUKKyAgY29tbW9uIGNhc2UgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcyBtZXRhY2xhc3MgYHR5cGVgLgorCistIElzc3VlICMxODcxMTogQWRkIGEgbmV3IGBQeUVycl9Gb3JtYXRWYCBmdW5jdGlvbiwgc2ltaWxhciB0byBgUHlFcnJfRm9ybWF0YAorICBidXQgYWNjZXB0aW5nIGEgYHZhX2xpc3RgIGFyZ3VtZW50LgorCiAtIElzc3VlICMyMjUyMDogRml4IG92ZXJmbG93IGNoZWNraW5nIHdoZW4gZ2VuZXJhdGluZyB0aGUgcmVwciBvZiBhIHVuaWNvZGUKICAgb2JqZWN0LgogCkBAIC0zOTEsNiArMTAxOCwxMzggQEAKIAogLSBJc3N1ZSAjMjI1MTg6IEZpeCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBsYXRpbi0xIGVuY29kaW5nLgogCistIElzc3VlICMxNjMyNDogX2NoYXJzZXQgcGFyYW1ldGVyIG9mIE1JTUVUZXh0IG5vdyBhbHNvIGFjY2VwdHMKKyAgZW1haWwuY2hhcnNldC5DaGFyc2V0IGluc3RhbmNlcy4gSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGUgUGFyb3ouCisKKy0gSXNzdWUgIzE3NjQyODY6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIHRvIHN1cHBvcnQgZGVjb3JhdGVkIGZ1bmN0aW9ucy4KKyAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxODU1NDogb3MuX19hbGxfXyBpbmNsdWRlcyBwb3NpeCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIxMzkxOiBVc2Ugb3MucGF0aC5hYnNwYXRoIGluIHRoZSBzaHV0aWwgbW9kdWxlLgorCistIElzc3VlICMxMTQ3MTogYXZvaWQgZ2VuZXJhdGluZyBhIEpVTVBfRk9SV0FSRCBpbnN0cnVjdGlvbiBhdCB0aGUgZW5kIG9mCisgIGFuIGlmLWJsb2NrIGlmIHRoZXJlIGlzIG5vIGVsc2UtY2xhdXNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXVnZW5lIFRvZGVyLgorCistIElzc3VlICMyMjIxNTogTm93IFZhbHVlRXJyb3IgaXMgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIHdoZW4gc3RyIG9yIGJ5dGVzCisgIGFyZ3VtZW50IGNvbnRhaW5zIG5vdCBwZXJtaXR0ZWQgbnVsbCBjaGFyYWN0ZXIgb3IgYnl0ZS4KKworLSBJc3N1ZSAjMjIyNTg6IEZpeCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gc2V0X2luaGVyaXRhYmxlKCkgb24gSWxsdW1vcy4KKyAgVGhpcyBwbGF0Zm9ybSBleHBvc2VzIHRoZSBmdW5jdGlvbiBgYGlvY3RsKEZJT0NMRVgpYGAsIGJ1dCBjYWxsaW5nIGl0IGZhaWxzCisgIHdpdGggZXJybm8gaXMgRU5PVFRZOiAiSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlIi4gc2V0X2luaGVyaXRhYmxlKCkKKyAgbm93IGZhbGxzIGJhY2sgdG8gdGhlIHNsb3dlciBgYGZjbnRsKClgYCAoYGBGX0dFVEZEYGAgYW5kIHRoZW4gYGBGX1NFVEZEYGApLgorCistIElzc3VlICMyMTM4OTogRGlzcGxheWluZyB0aGUgX19xdWFsbmFtZV9fIG9mIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGluIHRoZQorICByZXByIG9mIGEgYm91bmQgbWV0aG9kLgorCistIElzc3VlICMyMjIwNjogVXNpbmcgcHRocmVhZCwgUHlUaHJlYWRfY3JlYXRlX2tleSgpIG5vdyBzZXRzIGVycm5vIHRvIEVOT01FTQorICBhbmQgcmV0dXJucyAtMSAoZXJyb3IpIG9uIGludGVnZXIgb3ZlcmZsb3cuCisKKy0gSXNzdWUgIzIwMTg0OiBBcmd1bWVudCBDbGluaWMgYmFzZWQgc2lnbmF0dXJlIGludHJvc3BlY3Rpb24gYWRkZWQgZm9yCisgIDMwIG9mIHRoZSBidWlsdGluIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjIxMTY6IEMgZnVuY3Rpb25zIGFuZCBtZXRob2RzIChvZiB0aGUgJ2J1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kJworICB0eXBlKSBjYW4gbm93IGJlIHdlYWtyZWYnZWQuICBQYXRjaCBieSBXZWkgV3UuCisKKy0gSXNzdWUgIzIyMDc3OiBJbXByb3ZlIGluZGV4IGVycm9yIG1lc3NhZ2VzIGZvciBieXRlYXJyYXlzLCBieXRlcywgbGlzdHMsCisgIGFuZCB0dXBsZXMgYnkgYWRkaW5nICdvciBzbGljZXMnLiBBZGRlZCAnLCBub3QgPHR5cGVuYW1lJyBmb3IgYnl0ZWFycmF5cy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMyMDE3OTogQXBwbHkgQXJndW1lbnQgQ2xpbmljIHRvIGJ5dGVzIGFuZCBieXRlYXJyYXkuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMjIwODI6IENsZWFyIGludGVybmVkIHN0cmluZ3MgaW4gc2xvdGRlZnMuCisKKy0gVXBncmFkZSBVbmljb2RlIGRhdGFiYXNlIHRvIFVuaWNvZGUgNy4wLjAuCisKKy0gSXNzdWUgIzIxODk3OiBGaXggYSBjcmFzaCB3aXRoIHRoZSBmX2xvY2FscyBhdHRyaWJ1dGUgd2l0aCBjbG9zdXJlCisgIHZhcmlhYmxlcyB3aGVuIGZyYW1lLmNsZWFyKCkgaGFzIGJlZW4gY2FsbGVkLgorCistIElzc3VlICMyMTIwNTogQWRkIGEgbmV3IGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlIHRvIGdlbmVyYXRvciwgdGhlCisgIHF1YWxpZmllZCBuYW1lLCBhbmQgdXNlIGl0IGluIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIGdlbmVyYXRvcgorICAoYGByZXByKGdlbilgYCkuIFRoZSBkZWZhdWx0IG5hbWUgb2YgdGhlIGdlbmVyYXRvciAoYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSkKKyAgaXMgbm93IGdldCBmcm9tIHRoZSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBjb2RlLiBVc2UgYGBnZW4uZ2lfY29kZS5jb19uYW1lYGAKKyAgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBjb2RlLgorCistIElzc3VlICMyMTY2OTogV2l0aCB0aGUgYWlkIG9mIGhldXJpc3RpY3MgaW4gU3ludGF4RXJyb3IuX19pbml0X18sIHRoZQorICBwYXJzZXIgbm93IGF0dGVtcHRzIHRvIGdlbmVyYXRlIG1vcmUgbWVhbmluZ2Z1bCAob3IgYXQgbGVhc3QgbW9yZSBzZWFyY2gKKyAgZW5naW5lIGZyaWVuZGx5KSBlcnJvciBtZXNzYWdlcyB3aGVuICJleGVjIiBhbmQgInByaW50IiBhcmUgdXNlZCBhcworICBzdGF0ZW1lbnRzLgorCistIElzc3VlICMyMTY0MjogSWYgdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuCisgIHdpdGggbm8gc3BhY2UgYmV0d2VlbiBpdHNlbGYgYW5kIHRoZSBgYGVsc2VgYCBrZXl3b3JkIChlLmcuIGBgVHJ1ZSBpZiA0MmVsc2UKKyAgRmFsc2VgYCkgdG8gYmUgdmFsaWQgc3ludGF4LgorCistIElzc3VlICMyMTUyMzogRml4IG92ZXItcGVzc2ltaXN0aWMgY29tcHV0YXRpb24gb2YgdGhlIHN0YWNrIGVmZmVjdCBvZgorICBzb21lIG9wY29kZXMgaW4gdGhlIGNvbXBpbGVyLiAgVGhpcyBhbHNvIGZpeGVzIGEgcXVhZHJhdGljIGNvbXBpbGF0aW9uCisgIHRpbWUgaXNzdWUgbm90aWNlYWJsZSB3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIKKyAgYW5kICJvciIgb3BlcmF0b3JzLgorCistIElzc3VlICMyMTQxODogRml4IGEgY3Jhc2ggaW4gdGhlIGJ1aWx0aW4gZnVuY3Rpb24gc3VwZXIoKSB3aGVuIGNhbGxlZCB3aXRob3V0CisgIGFyZ3VtZW50IGFuZCB3aXRob3V0IGN1cnJlbnQgZnJhbWUgKGV4OiBlbWJlZGRlZCBQeXRob24pLgorCistIElzc3VlICMyMTQyNTogRml4IGZsdXNoaW5nIG9mIHN0YW5kYXJkIHN0cmVhbXMgaW4gdGhlIGludGVyYWN0aXZlCisgIGludGVycHJldGVyLgorCistIElzc3VlICMyMTQzNTogSW4gcmFyZSBjYXNlcywgd2hlbiBydW5uaW5nIGZpbmFsaXplcnMgb24gb2JqZWN0cyBpbiBjeWNsaWMKKyAgdHJhc2ggYSBiYWQgcG9pbnRlciBkZXJlZmVyZW5jZSBjb3VsZCBvY2N1ciBkdWUgdG8gYSBzdWJ0bGUgZmxhdyBpbgorICBpbnRlcm5hbCBpdGVyYXRpb24gbG9naWMuCisKKy0gSXNzdWUgIzIxMzc3OiBQeUJ5dGVzX0NvbmNhdCgpIG5vdyB0cmllcyB0byBjb25jYXRlbmF0ZSBpbi1wbGFjZSB3aGVuIHRoZQorICBmaXJzdCBhcmd1bWVudCBoYXMgYSByZWZlcmVuY2UgY291bnQgb2YgMS4gIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCisKKy0gSXNzdWUgIzIwMzU1OiAtVyBjb21tYW5kIGxpbmUgb3B0aW9ucyBub3cgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aGUKKyAgUFlUSE9OV0FSTklOR1MgZW52aXJvbm1lbnQgdmFyaWFibGUuICBQYXRjaCBieSBBcmZyZXZlci4KKworLSBJc3N1ZSAjMjEyNzQ6IERlZmluZSBQQVRIX01BWCBmb3IgR05VL0h1cmQgaW4gUHl0aG9uL3B5dGhvbnJ1bi5jLgorCistIElzc3VlICMyMDkwNDogU3VwcG9ydCBzZXR0aW5nIEZQVSBwcmVjaXNpb24gb24gbTY4ay4KKworLSBJc3N1ZSAjMjEyMDk6IEZpeCBzZW5kaW5nIHR1cGxlcyB0byBjdXN0b20gZ2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGUgeWllbGQKKyAgZnJvbSBzeW50YXguCisKKy0gSXNzdWUgIzIxMTkzOiBwb3coYSwgYiwgYykgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGIKKyAgaXMgbmVnYXRpdmUuICBQYXRjaCBieSBKb3NoIFJvc2VuYmVyZy4KKworLSBQRVAgNDY1IGFuZCBJc3N1ZSAjMjExNzY6IEFkZCB0aGUgJ0AnIG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24uCisKKy0gSXNzdWUgIzIxMTM0OiBGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQKKyAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIG9yIFVuaWNvZGVUcmFuc2xhdGVFcnJvciBvYmplY3QuCisKKy0gSXNzdWUgIzE5NTM3OiBGaXggUHlVbmljb2RlX0RBVEEoKSBhbGlnbm1lbnQgdW5kZXIgbTY4ay4gIFBhdGNoIGJ5CisgIEFuZHJlYXMgU2Nod2FiLgorCistIElzc3VlICMyMDkyOTogQWRkIGEgdHlwZSBjYXN0IHRvIGF2b2lkIHNoaWZ0aW5nIGEgbmVnYXRpdmUgbnVtYmVyLgorCistIElzc3VlICMyMDczMTogUHJvcGVybHkgcG9zaXRpb24gaW4gc291cmNlIGNvZGUgZmlsZXMgZXZlbiBpZiB0aGV5CisgIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyMDYzNzogS2V5LXNoYXJpbmcgbm93IGFsc28gd29ya3MgZm9yIGluc3RhbmNlIGRpY3Rpb25hcmllcyBvZgorICBzdWJjbGFzc2VzLiAgUGF0Y2ggYnkgUGV0ZXIgSW5nZWJyZXRzb24uCisKKy0gSXNzdWUgIzgyOTc6IEF0dHJpYnV0ZXMgbWlzc2luZyBmcm9tIG1vZHVsZXMgbm93IGluY2x1ZGUgdGhlIG1vZHVsZSBuYW1lCisgIGluIHRoZSBlcnJvciB0ZXh0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgeXNqLnJheS4KKworLSBJc3N1ZSAjMTk5OTU6ICVjLCAlbywgJXgsIGFuZCAlWCBub3cgcmFpc2UgVHlwZUVycm9yIG9uIG5vbi1pbnRlZ2VyIGlucHV0LgorCistIElzc3VlICMxOTY1NTogVGhlIEFTREwgcGFyc2VyIC0gdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyB0byBnZW5lcmF0ZSBjb2RlIGZvcgorICBtYW5hZ2luZyB0aGUgUHl0aG9uIEFTVCBpbiBDIC0gd2FzIHJld3JpdHRlbi4gVGhlIG5ldyBwYXJzZXIgaXMgc2VsZiBjb250YWluZWQKKyAgYW5kIGRvZXMgbm90IHJlcXVpcmUgdG8gY2FycnkgbG9uZyB0aGUgc3BhcmsucHkgcGFyc2VyLWdlbmVyYXRvciBsaWJyYXJ5OworICBzcGFyay5weSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2UgYmFzZS4KKworLSBJc3N1ZSAjMTI1NDY6IEFsbG93IFx4MDAgdG8gYmUgdXNlZCBhcyBhIGZpbGwgY2hhcmFjdGVyIHdoZW4gdXNpbmcgc3RyLCBpbnQsCisgIGZsb2F0LCBhbmQgY29tcGxleCBfX2Zvcm1hdF9fIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwNDgwOiBBZGQgaXBhZGRyZXNzLnJldmVyc2VfcG9pbnRlci4gUGF0Y2ggYnkgTGVvbiBXZWJlci4KKworLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKKyAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCisgIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KKworLSBJc3N1ZSAjODkzMTogTWFrZSBhbHRlcm5hdGUgZm9ybWF0dGluZyAoJyMnKSBmb3IgdHlwZSAnYycgcmFpc2UgYW4KKyAgZXhjZXB0aW9uLiBJbiB2ZXJzaW9ucyBwcmlvciB0byAzLjUsICcjJyB3aXRoICdjJyBoYWQgbm8gZWZmZWN0LiBOb3cKKyAgc3BlY2lmeWluZyBpdCBpcyBhbiBlcnJvci4gIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMjMxNjU6IFBlcmZvcm0gb3ZlcmZsb3cgY2hlY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSBpbiB0aGUKICAgX1B5X2NoYXIyd2NoYXIgZnVuY3Rpb24uCiAKQEAgLTM5OSw5ICsxMTU4LDI0IEBACiAKIC0gSXNzdWUgIzIzMzk5OiBweXZlbnYgY3JlYXRlcyByZWxhdGl2ZSBzeW1saW5rcyB3aGVyZSBwb3NzaWJsZS4KIAorLSBJc3N1ZSAjMjAyODk6IGNnaS5GaWVsZFN0b3JhZ2UoKSBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudAorICBwcm90b2NvbC4KKworLSBJc3N1ZSAjMTMxMjg6IFByaW50IHJlc3BvbnNlIGhlYWRlcnMgZm9yIENPTk5FQ1QgcmVxdWVzdHMgd2hlbiBkZWJ1Z2xldmVsCisgID4gMC4gUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBpby5CeXRlc0lPIHRvIG1ha2UgbGVzcyBhbGxvY2F0aW9ucyBhbmQgY29weWluZ3MuCisKKy0gSXNzdWUgIzIyODE4OiBTcGxpdHRpbmcgb24gYSBwYXR0ZXJuIHRoYXQgY291bGQgbWF0Y2ggYW4gZW1wdHkgc3RyaW5nIG5vdworICByYWlzZXMgYSB3YXJuaW5nLiAgUGF0dGVybnMgdGhhdCBjYW4gb25seSBtYXRjaCBlbXB0eSBzdHJpbmdzIGFyZSBub3cKKyAgcmVqZWN0ZWQuCisKIC0gSXNzdWUgIzIzMDk5OiBDbG9zaW5nIGlvLkJ5dGVzSU8gd2l0aCBleHBvcnRlZCBidWZmZXIgaXMgcmVqZWN0ZWQgbm93IHRvCiAgIHByZXZlbnQgY29ycnVwdGluZyBleHBvcnRlZCBidWZmZXIuCiAKKy0gSXNzdWUgIzIzMzI2OiBSZW1vdmVkIF9fbmVfXyBpbXBsZW1lbnRhdGlvbnMuICBTaW5jZSBmaXhpbmcgZGVmYXVsdCBfX25lX18KKyAgaW1wbGVtZW50YXRpb24gaW4gaXNzdWUgIzIxNDA4IHRoZXkgYXJlIHJlZHVuZGFudC4KKwogLSBJc3N1ZSAjMjMzNjM6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiBpdGVydG9vbHMucGVybXV0YXRpb25zLgogCiAtIElzc3VlICMyMzM2NDogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wcm9kdWN0LgpAQCAtNDE3LDYgKzExOTEsMTQgQEAKICAgaXMgbm93IGFsd2F5cyByZXN0b3JlZCBvciBzd2FwcGVkLCBub3Qgb25seSBpZiB3aHkgaXMgV0hZX1lJRUxEIG9yCiAgIFdIWV9SRVRVUk4uIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBBbnRvaW5lIFBpdHJvdS4KIAorLSBJc3N1ZSAjMTQwOTk6IFJlc3RvcmVkIHN1cHBvcnQgb2Ygd3JpdGluZyBaSVAgZmlsZXMgdG8gdGVsbGFibGUgYnV0CisgIG5vbi1zZWVrYWJsZSBzdHJlYW1zLgorCistIElzc3VlICMxNDA5OTogV3JpdGluZyB0byBaaXBGaWxlIGFuZCByZWFkaW5nIG11bHRpcGxlIFppcEV4dEZpbGVzIGlzCisgIHRocmVhZHNhZmUgbm93LgorCistIElzc3VlICMxOTM2MTogSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgSlNPTkRlY29kZUVycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvci4KKwogLSBJc3N1ZSAjMTg1MTg6IHRpbWVpdCBub3cgcmVqZWN0cyBzdGF0ZW1lbnRzIHdoaWNoIGNhbid0IGJlIGNvbXBpbGVkIG91dHNpZGUKICAgYSBmdW5jdGlvbiBvciBhIGxvb3AgKGUuZy4gInJldHVybiIgb3IgImJyZWFrIikuCiAKQEAgLTQzMSw0NyArMTIxMyw4NSBAQAogLSBJc3N1ZSAjMTk5OTY6IDpjbGFzczpgZW1haWwuZmVlZHBhcnNlci5GZWVkUGFyc2VyYCBub3cgaGFuZGxlcyAobWFsZm9ybWVkKQogICBoZWFkZXJzIHdpdGggbm8ga2V5IHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoZSBib2R5IGhhcyBzdGFydGVkLgogCistIElzc3VlICMyMDE4ODogU3VwcG9ydCBBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiAoQUxQTikgaW4gdGhlIHNzbAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzIzMTMzOiBQaWNrbGluZyBvZiBpcGFkZHJlc3Mgb2JqZWN0cyBub3cgcHJvZHVjZXMgbW9yZSBjb21wYWN0IGFuZAorICBwb3J0YWJsZSByZXByZXNlbnRhdGlvbi4KKwogLSBJc3N1ZSAjMjMyNDg6IFVwZGF0ZSBzc2wgZXJyb3IgY29kZXMgZnJvbSBsYXRlc3QgT3BlblNTTCBnaXQgbWFzdGVyLgogCistIElzc3VlICMyMzI2NjogTXVjaCBmYXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygpCisgIHdoZW4gdGhlcmUgYXJlIG1hbnkgbm9uLWNvbnNlY3V0aXZlIGFkZHJlc3Nlcy4KKwogLSBJc3N1ZSAjMjMwOTg6IDY0LWJpdCBkZXZfdCBpcyBub3cgc3VwcG9ydGVkIGluIHRoZSBvcyBtb2R1bGUuCiAKKy0gSXNzdWUgIzIxODE3OiBXaGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gYSB0YXNrIHN1Ym1pdHRlZCB0byBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IsIHRoZSByZW1vdGUgdHJhY2ViYWNrIGlzIG5vdyBkaXNwbGF5ZWQgaW4gdGhlCisgIHBhcmVudCBwcm9jZXNzLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxNTk1NTogQWRkIGFuIG9wdGlvbiB0byBsaW1pdCBvdXRwdXQgc2l6ZSB3aGVuIGRlY29tcHJlc3NpbmcgTFpNQQorICBkYXRhLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aCBhbmQgTWFydGluIFBhbnRlci4KKwogLSBJc3N1ZSAjMjMyNTA6IEluIHRoZSBodHRwLmNvb2tpZXMgbW9kdWxlLCBjYXBpdGFsaXplICJIdHRwT25seSIgYW5kICJTZWN1cmUiCiAgIGFzIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkLgogCiAtIElzc3VlICMyMzA2MzogSW4gdGhlIGRpc3V0aWxzJyBjaGVjayBjb21tYW5kLCBmaXggcGFyc2luZyBvZiByZVNUIHdpdGggY29kZSBvcgogICBjb2RlLWJsb2NrIGRpcmVjdGl2ZXMuCiAKLS0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKSBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbAotICByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2gKLSAgd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KKy0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuZ2V0X2tleSgpIG5vdyByYWlzZXMgYQorICBSdW50aW1lRXJyb3IgaWYgdGhlIHNlbGVjdG9yIGlzIGNsb3NlZC4gQW5kIHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKQorICBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYQorICByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KIAotLSBJc3N1ZSAjMjEzNTY6IE1ha2Ugc3NsLlJBTkRfZWdkKCkgb3B0aW9uYWwgdG8gc3VwcG9ydCBMaWJyZVNTTC4gVGhlCi0gIGF2YWlsYWJpbGl0eSBvZiB0aGUgZnVuY3Rpb24gaXMgY2hlY2tlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLiBQYXRjaCB3cml0dGVuCi0gIGJ5IEJlcm5hcmQgU3BpbC4KKy0gSXNzdWUgIzE3OTExOiBQcm92aWRlIGEgd2F5IHRvIHNlZWQgdGhlIGxpbmVjYWNoZSBmb3IgYSBQRVAtMzAyIG1vZHVsZQorICB3aXRob3V0IGFjdHVhbGx5IGxvYWRpbmcgdGhlIGNvZGUuCiAKLS0gSXNzdWUgIzIwODk2LCAjMjI5MzU6IFRoZSA6ZnVuYzpgc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGVgIGZ1bmN0aW9uIG5vdwotICB1c2VzIHRoZSA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2MjNgIHByb3RvY29sIGJ5IGRlZmF1bHQsIG5vdAotICA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2M2AsIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgYW5kIHN1cHBvcnQgcGxhdGZvcm1zCi0gIHdoZXJlIDpkYXRhOmB+c3NsLlBST1RPQ09MX1NTTHYzYCBzdXBwb3J0IGlzIGRpc2FibGVkLgorLSBJc3N1ZSAjMTc5MTE6IFByb3ZpZGUgYSBuZXcgb2JqZWN0IEFQSSBmb3IgdHJhY2ViYWNrLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkKKyAgdG8gbm90IGxvb2t1cCBsaW5lcyBhdCBhbGwgdW50aWwgdGhlIHRyYWNlYmFjayBpcyBhY3R1YWxseSByZW5kZXJlZCwgd2l0aG91dAorICBhbnkgdHJhY2Ugb2YgdGhlIG9yaWdpbmFsIG9iamVjdHMgYmVpbmcga2VwdCBhbGl2ZS4KIAotLSBJc3N1ZSAjMjMxMTE6IEluIHRoZSBmdHBsaWIsIG1ha2Ugc3NsLlBST1RPQ09MX1NTTHYyMyB0aGUgZGVmYXVsdCBwcm90b2NvbAotICB2ZXJzaW9uLgorLSBJc3N1ZSAjMTk3Nzc6IFByb3ZpZGUgYSBob21lKCkgY2xhc3NtZXRob2Qgb24gUGF0aCBvYmplY3RzLiAgQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFNhbGdhZG8gYW5kIE1heWFuayBUcmlwYXRoaS4KIAotLSBJc3N1ZSAjMjMxMzI6IE1pdGlnYXRlIHJlZ3Jlc3Npb24gaW4gc3BlZWQgYW5kIGNsYXJpdHkgaW4gZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nLgorLSBJc3N1ZSAjMjMyMDY6IE1ha2UgYGBqc29uLmR1bXBzKC4uLiwgZW5zdXJlX2FzY2lpPUZhbHNlKWBgIGFzIGZhc3QgYXMgdGhlCisgIGRlZmF1bHQgY2FzZSBvZiBgYGVuc3VyZV9hc2NpaT1UcnVlYGAuICBQYXRjaCBieSBOYW9raSBJbmFkYS4KIAotLSBJc3N1ZSAjMjI1ODU6IE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyBjYWxscyBnZXRlbnRyb3B5KCksCi0gIGluc3RlYWQgb2YgcmVhZGluZyAvZGV2L3VyYW5kb20sIHRvIGdldCBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorLSBJc3N1ZSAjMjMxODU6IEFkZCBtYXRoLmluZiBhbmQgbWF0aC5uYW4gY29uc3RhbnRzLgorCistIElzc3VlICMyMzE4NjogQWRkIHNzbC5TU0xPYmplY3Quc2hhcmVkX2NpcGhlcnMoKSBhbmQKKyAgc3NsLlNTTFNvY2tldC5zaGFyZWRfY2lwaGVycygpIHRvIGZldGNoIHRoZSBjbGllbnQncyBsaXN0IGNpcGhlcnMgc2VudCBhdAorICBoYW5kc2hha2UuCisKKy0gSXNzdWUgIzIzMTQzOiBSZW1vdmUgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0xzIG9sZGVyIHRoYW4gMC45LjguCisKKy0gSXNzdWUgIzIzMTMyOiBJbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCBpbnRyb3NwZWN0aW9uIHN1cHBvcnQgb2YgY29tcGFyaXNvbgorICBtZXRob2RzIGNyZWF0ZWQgYnkgZnVuY3Rvb2wudG90YWxfb3JkZXJpbmcuCisKKy0gSXNzdWUgIzE5Nzc2OiBBZGQgYSBleHBhbmR1c2VyKCkgbWV0aG9kIG9uIFBhdGggb2JqZWN0cy4KIAogLSBJc3N1ZSAjMjMxMTI6IEZpeCBTaW1wbGVIVFRQU2VydmVyIHRvIGNvcnJlY3RseSBjYXJyeSB0aGUgcXVlcnkgc3RyaW5nIGFuZAogICBmcmFnbWVudCB3aGVuIGl0IHJlZGlyZWN0cyB0byBhZGQgYSB0cmFpbGluZyBzbGFzaC4KIAorLSBJc3N1ZSAjMjE3OTM6IEFkZGVkIGh0dHAuSFRUUFN0YXR1cyBlbnVtcyAoaS5lLiBIVFRQU3RhdHVzLk9LLAorICBIVFRQU3RhdHVzLk5PVF9GT1VORCkuICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCiAtIElzc3VlICMyMzA5MzogSW4gdGhlIGlvLCBtb2R1bGUgYWxsb3cgbW9yZSBvcGVyYXRpb25zIHRvIHdvcmsgb24gZGV0YWNoZWQKICAgc3RyZWFtcy4KIAorLSBJc3N1ZSAjMjMxMTE6IEluIHRoZSBmdHBsaWIsIG1ha2Ugc3NsLlBST1RPQ09MX1NTTHYyMyB0aGUgZGVmYXVsdCBwcm90b2NvbAorICB2ZXJzaW9uLgorCistIElzc3VlICMyMjU4NTogT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCBvcy51cmFuZG9tKCkgbm93IGNhbGxzIGdldGVudHJvcHkoKSwKKyAgaW5zdGVhZCBvZiByZWFkaW5nIC9kZXYvdXJhbmRvbSwgdG8gZ2V0IHBzZXVkby1yYW5kb20gYnl0ZXMuCisKIC0gSXNzdWUgIzE5MTA0OiBwcHJpbnQgbm93IHByb2R1Y2VzIGV2YWx1YWJsZSBvdXRwdXQgZm9yIHdyYXBwZWQgc3RyaW5ncy4KIAogLSBJc3N1ZSAjMjMwNzE6IEFkZGVkIG1pc3NpbmcgbmFtZXMgdG8gY29kZWNzLl9fYWxsX18uICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMjc4MzogUGlja2xpbmcgbm93IHVzZXMgdGhlIE5FV09CSiBvcGNvZGUgaW5zdGVhZCBvZiB0aGUgTkVXT0JKX0VYCisgIG9wY29kZSBpZiBwb3NzaWJsZS4KKwogLSBJc3N1ZSAjMTU1MTM6IEFkZGVkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgcGlja2xlIGNsYXNzZXMuCiAKIC0gSXNzdWUgIzE5ODU4OiBwaWNrbGV0b29scy5vcHRpbWl6ZSgpIG5vdyBhd2FyZSBvZiB0aGUgTUVNT0laRSBvcGNvZGUsIGNhbgpAQCAtNDkzLDEyICsxMzEzLDI1IEBACiAtIElzc3VlICMxMjE4MjM0OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSB0byBsb2FkIHVwZGF0ZWQgc291cmNlIG9mCiAgIHJlbG9hZGVkIG1vZHVsZS4gSW5pdGlhbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgogCistIElzc3VlICMyMTc0MDogU3VwcG9ydCB3cmFwcGVkIGNhbGxhYmxlcyBpbiBkb2N0ZXN0LiBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIzMDA5OiBNYWtlIHN1cmUgc2VsZWN0b3JzLkVwb2xsU2VsZWNydG9yLnNlbGVjdCgpIHdvcmtzIHdoZW4gbm8KKyAgRkQgaXMgcmVnaXN0ZXJlZC4KKwogLSBJc3N1ZSAjMjI5NTk6IEluIHRoZSBjb25zdHJ1Y3RvciBvZiBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24sIHByZWZlciB0aGUKICAgY29udGV4dCdzIGNoZWNrX2hvc3RuYW1lIGF0dHJpYnV0ZSBvdmVyIHRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlci4KIAorLSBJc3N1ZSAjMjI2OTY6IEFkZCBmdW5jdGlvbiA6ZnVuYzpgc3lzLmlzX2ZpbmFsaXppbmdgIHRvIGtub3cgYWJvdXQKKyAgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCisKIC0gSXNzdWUgIzE2MDQzOiBBZGQgYSBkZWZhdWx0IGxpbWl0IGZvciB0aGUgYW1vdW50IG9mIGRhdGEgeG1scnBjbGliLmd6aXBfZGVjb2RlCiAgIHdpbGwgcmV0dXJuLiBUaGlzIHJlc29sdmVzIENWRS0yMDEzLTE3NTMuCiAKKy0gSXNzdWUgIzE0MDk5OiBaaXBGaWxlLm9wZW4oKSBubyBsb25nZXIgcmVvcGVuIHRoZSB1bmRlcmx5aW5nIGZpbGUuICBPYmplY3RzCisgIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpIGNhbiBub3cgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZSBaaXBGaWxlIGV2ZW4KKyAgaWYgdGhlIFppcEZpbGUgd2FzIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhIGZpbGUtbGlrZSBvYmplY3QgYXMgdGhlIGZpcnN0CisgIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3Rvci4KKwogLSBJc3N1ZSAjMjI5NjY6IEZpeCBfX3B5Y2FjaGVfXyBweWMgZmlsZSBuYW1lIGNsb2JiZXIgd2hlbiBweWNfY29tcGlsZSBpcwogICBhc2tlZCB0byBjb21waWxlIGEgc291cmNlIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBkb3RzIGluIHRoZSBzb3VyY2UgZmlsZQogICBuYW1lLgpAQCAtNTA4LDE0ICsxMzQxLDMwIEBACiAtIElzc3VlICMyMTAzMi4gRml4ZWQgc29ja2V0IGxlYWsgaWYgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSBmYWlscy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjI0MDc6IERlcHJlY2F0ZWQgdGhlIHVzZSBvZiByZS5MT0NBTEUgZmxhZyB3aXRoIHN0ciBwYXR0ZXJucyBvcgorICByZS5BU0NJSS4gSXQgd2FzIG5ld2VyIHdvcmtlZC4KKworLSBJc3N1ZSAjMjI5MDI6IFRoZSAiaXAiIGNvbW1hbmQgaXMgbm93IHVzZWQgb24gTGludXggdG8gZGV0ZXJtaW5lIE1BQyBhZGRyZXNzCisgIGluIHV1aWQuZ2V0bm9kZSgpLiAgUGFjaCBieSBCcnVubyBDYXVldC4KKwogLSBJc3N1ZSAjMjI5NjA6IEFkZCBhIGNvbnRleHQgYXJndW1lbnQgdG8geG1scnBjbGliLlNlcnZlclByb3h5IGNvbnN0cnVjdG9yLgogCistIElzc3VlICMyMjM4OTogQWRkIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKCkuCisKKy0gSXNzdWUgIzIxMzU2OiBNYWtlIHNzbC5SQU5EX2VnZCgpIG9wdGlvbmFsIHRvIHN1cHBvcnQgTGlicmVTU0wuIFRoZQorICBhdmFpbGFiaWxpdHkgb2YgdGhlIGZ1bmN0aW9uIGlzIGNoZWNrZWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbi4gUGF0Y2ggd3JpdHRlbgorICBieSBCZXJuYXJkIFNwaWwuCisKIC0gSXNzdWUgIzIyOTE1OiBTQVggcGFyc2VyIG5vdyBzdXBwb3J0cyBmaWxlcyBvcGVuZWQgd2l0aCBmaWxlIGRlc2NyaXB0b3Igb3IKICAgYnl0ZXMgcGF0aC4KIAogLSBJc3N1ZSAjMjI2MDk6IENvbnN0cnVjdG9ycyBhbmQgdXBkYXRlIG1ldGhvZHMgb2YgbWFwcGluZyBjbGFzc2VzIGluIHRoZQogICBjb2xsZWN0aW9ucyBtb2R1bGUgbm93IGFjY2VwdCB0aGUgc2VsZiBrZXl3b3JkIGFyZ3VtZW50LgogCistIElzc3VlICMyMjk0MDogQWRkIHJlYWRsaW5lLmFwcGVuZF9oaXN0b3J5X2ZpbGUuCisKKy0gSXNzdWUgIzE5Njc2OiBBZGRlZCB0aGUgIm5hbWVyZXBsYWNlIiBlcnJvciBoYW5kbGVyLgorCiAtIElzc3VlICMyMjc4ODogQWRkICpjb250ZXh0KiBwYXJhbWV0ZXIgdG8gbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlci4KIAogLSBJc3N1ZSAjMjI5MjE6IEFsbG93IFNTTENvbnRleHQgdG8gdGFrZSB0aGUgKmhvc3RuYW1lKiBwYXJhbWV0ZXIgZXZlbiBpZgpAQCAtNTI0LDE0ICsxMzczLDE5IEBACiAtIElzc3VlICMyMjg5NDogVGVzdENhc2Uuc3ViVGVzdCgpIHdvdWxkIGNhdXNlIHRoZSB0ZXN0IHN1aXRlIHRvIGJlIHN0b3BwZWQKICAgd2hlbiBpbiBmYWlsZmFzdCBtb2RlLCBldmVuIGluIHRoZSBhYnNlbmNlIG9mIGZhaWx1cmVzLgogCi0tIElzc3VlICMyMjYzODogU1NMdjMgaXMgbm93IGRpc2FibGVkIHRocm91Z2hvdXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0gIEl0IGNhbiBzdGlsbCBiZSBlbmFibGVkIGJ5IGluc3RhbnRpYXRpbmcgYSBTU0xDb250ZXh0IG1hbnVhbGx5LgorLSBJc3N1ZSAjMjI3OTY6IEhUVFAgY29va2llIHBhcnNpbmcgaXMgbm93IHN0cmljdGVyLCBpbiBvcmRlciB0byBwcm90ZWN0CisgIGFnYWluc3QgcG90ZW50aWFsIGluamVjdGlvbiBhdHRhY2tzLgogCiAtIElzc3VlICMyMjM3MDogV2luZG93cyBkZXRlY3Rpb24gaW4gcGF0aGxpYiBpcyBub3cgbW9yZSByb2J1c3QuCiAKIC0gSXNzdWUgIzIyODQxOiBSZWplY3QgY29yb3V0aW5lcyBpbiBhc3luY2lvIGFkZF9zaWduYWxfaGFuZGxlcigpLgogICBQYXRjaCBieSBMdWRvdmljLkdhc2MuCiAKKy0gSXNzdWUgIzE5NDk0OiBBZGRlZCB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNQcmlvckF1dGhIYW5kbGVyLiBQYXRjaCBieQorICBNYXRlaiBDZXBsLgorCistIElzc3VlICMyMjU3ODogQWRkZWQgYXR0cmlidXRlcyB0byB0aGUgcmUuZXJyb3IgY2xhc3MuCisKIC0gSXNzdWUgIzIyODQ5OiBGaXggcG9zc2libGUgZG91YmxlIGZyZWUgaW4gdGhlIGlvLlRleHRJT1dyYXBwZXIgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzEyNzI4OiBEaWZmZXJlbnQgVW5pY29kZSBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgc2FtZSB1cHBlcmNhc2UgYnV0CkBAIC01NDAsNiArMTM5NCwxNCBAQAogLSBJc3N1ZSAjMjI4MjE6IEZpeGVkIGZjbnRsKCkgd2l0aCBpbnRlZ2VyIGFyZ3VtZW50IG9uIDY0LWJpdCBiaWctZW5kaWFuCiAgIHBsYXRmb3Jtcy4KIAorLSBJc3N1ZSAjMjE2NTA6IEFkZCBhbiBgLS1zb3J0LWtleXNgIG9wdGlvbiB0byBqc29uLnRvb2wgQ0xJLgorCistIElzc3VlICMyMjgyNDogIFVwZGF0ZWQgcmVwcmxpYiBvdXRwdXQgZm9ybWF0IGZvciBzZXRzIHRvIHVzZSBzZXQgbGl0ZXJhbHMuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gSXNzdWUgIzIyODI0OiAgVXBkYXRlZCByZXBybGliIG91dHB1dCBmb3JtYXQgZm9yIGFycmF5cyB0byBkaXNwbGF5IGVtcHR5CisgIGFycmF5cyB3aXRob3V0IGFuIHVubmVjZXNzYXJ5IGVtcHR5IGxpc3QuICBTdWdnZXN0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMjI0MDY6IEZpeGVkIHRoZSB1dV9jb2RlYyBjb2RlYyBpbmNvcnJlY3RseSBwb3J0ZWQgdG8gMy54LgogICBCYXNlZCBvbiBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCkBAIC01NTMsMTYgKzE0MTUsMTUgQEAKIC0gSXNzdWUgIzIyNzc1OiBGaXhlZCB1bnBpY2tsaW5nIG9mIGh0dHAuY29va2llcy5TaW1wbGVDb29raWUgd2l0aCBwcm90b2NvbCAyCiAgIGFuZCBhYm92ZS4gIFBhdGNoIGJ5IFRpbSBHcmFoYW0uCiAKLS0gSXNzdWUgIzIyMzY2OiB1cmxsaWIucmVxdWVzdC51cmxvcGVuIHdpbGwgYWNjZXB0IGEgY29udGV4dCBvYmplY3QKLSAgKFNTTENvbnRleHQpIGFzIGFuIGFyZ3VtZW50IHdoaWNoIHdpbGwgdGhlbiB1c2VkIGJlIGZvciBIVFRQUyBjb25uZWN0aW9uLgotICBQYXRjaCBieSBBbGV4IEdheW5vci4KLQogLSBJc3N1ZSAjMjI3NzY6IEJyb3VnaHQgZXhjbHVkZWQgY29kZSBpbnRvIHRoZSBzY29wZSBvZiBhIHRyeSBibG9jayBpbgogICBTeXNMb2dIYW5kbGVyLmVtaXQoKS4KIAogLSBJc3N1ZSAjMjI2NjU6IEFkZCBtaXNzaW5nIGdldF90ZXJtaW5hbF9zaXplIGFuZCBTYW1lRmlsZUVycm9yIHRvCiAgIHNodXRpbC5fX2FsbF9fLgogCistIElzc3VlICM2NjIzOiBSZW1vdmUgZGVwcmVjYXRlZCBOZXRyYyBjbGFzcyBpbiB0aGUgZnRwbGliIG1vZHVsZS4gUGF0Y2ggYnkKKyAgTWF0dCBDaGFwdXQuCisKIC0gSXNzdWUgIzE3MzgxOiBGaXhlZCBoYW5kbGluZyBvZiBjYXNlLWluc2Vuc2l0aXZlIHJhbmdlcyBpbiByZWd1bGFyCiAgIGV4cHJlc3Npb25zLgogCkBAIC01NzYsMTggKzE0MzcsNTMgQEAKICAgZG9lc24ndCB3b3JrLiAgVGhpcyBhbGxvd3MgdXNlIHdpdGggc3BlY2lhbCBmaWxlc3lzdGVtcyBzdWNoIGFzIFZpcnR1YWxCb3gKICAgc2hhcmVkIGZvbGRlcnMuCiAKKy0gSXNzdWUgIzIyMjE3OiBJbXBsZW1lbnRlZCByZXBycyBvZiBjbGFzc2VzIGluIHRoZSB6aXBmaWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjMjI0NTc6IEhvbm91ciBsb2FkX3Rlc3RzIGluIHRoZSBzdGFydF9kaXIgb2YgZGlzY292ZXJ5LgorCistIElzc3VlICMxODIxNjogZ2V0dGV4dCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gYSAubW8gZmlsZSBoYXMgYW4KKyAgdW5zdXBwb3J0ZWQgbWFqb3IgdmVyc2lvbiBudW1iZXIuICBQYXRjaCBieSBBYXJvbiBIaWxsLgorCistIElzc3VlICMxMzkxODogUHJvdmlkZSBhIGxvY2FsZS5kZWxvY2FsaXplKCkgZnVuY3Rpb24gd2hpY2ggY2FuIHJlbW92ZQorICBsb2NhbGUtc3BlY2lmaWMgbnVtYmVyIGZvcm1hdHRpbmcgZnJvbSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBudW1iZXIsCisgIHdpdGhvdXQgdGhlbiBjb252ZXJ0aW5nIGl0IHRvIGEgc3BlY2lmaWMgdHlwZS4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCisKKy0gSXNzdWUgIzIyNjc2OiBNYWtlIHRoZSBwaWNrbGluZyBvZiBnbG9iYWwgb2JqZWN0cyB3aGljaCBkb24ndCBoYXZlIGEKKyAgX19tb2R1bGVfXyBhdHRyaWJ1dGUgbGVzcyBzbG93LgorCiAtIElzc3VlICMxODg1MzogRml4ZWQgUmVzb3VyY2VXYXJuaW5nIGluIHNobGV4Ll9fbmFpbl9fLgogCiAtIElzc3VlICM5MzUxOiBEZWZhdWx0cyBzZXQgd2l0aCBzZXRfZGVmYXVsdHMgb24gYW4gYXJncGFyc2Ugc3VicGFyc2VyCiAgIGFyZSBubyBsb25nZXIgaWdub3JlZCB3aGVuIGFsc28gc2V0IG9uIHRoZSBwYXJlbnQgcGFyc2VyLgogCistIElzc3VlICM3NTU5OiB1bml0dGVzdCB0ZXN0IGxvYWRpbmcgSW1wb3J0RXJyb3JzIGFyZSByZXBvcnRlZCBhcyBpbXBvcnQgZXJyb3JzCisgIHdpdGggdGhlaXIgaW1wb3J0IGV4Y2VwdGlvbiByYXRoZXIgdGhhbiBhcyBhdHRyaWJ1dGUgZXJyb3JzIGFmdGVyIHRoZSBpbXBvcnQKKyAgaGFzIGFscmVhZHkgZmFpbGVkLgorCistIElzc3VlICMxOTc0NjogTWFrZSBpdCBwb3NzaWJsZSB0byBleGFtaW5lIHRoZSBlcnJvcnMgZnJvbSB1bml0dGVzdAorICBkaXNjb3Zlcnkgd2l0aG91dCBleGVjdXRpbmcgdGhlIHRlc3Qgc3VpdGUuIFRoZSBuZXcgYGVycm9yc2AgYXR0cmlidXRlCisgIG9uIFRlc3RMb2FkZXIgZXhwb3NlcyB0aGVzZSBub24tZmF0YWwgZXJyb3JzIGVuY291bnRlcmVkIGR1cmluZyBkaXNjb3ZlcnkuCisKIC0gSXNzdWUgIzIxOTkxOiBNYWtlIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5J3MgaGVhZGVyICdwYXJhbXMnIGF0dHJpYnV0ZXMKICAgYmUgcmVhZC1vbmx5IChNYXBwaW5nUHJveHlUeXBlKS4gIFByZXZpb3VzbHkgdGhlIGRpY3Rpb25hcnkgd2FzIG1vZGlmaWFibGUKICAgYnV0IGEgbmV3IG9uZSB3YXMgY3JlYXRlZCBvbiBlYWNoIGFjY2VzcyBvZiB0aGUgYXR0cmlidXRlLgogCistIElzc3VlICMyMjYzODogU1NMdjMgaXMgbm93IGRpc2FibGVkIHRocm91Z2hvdXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIEl0IGNhbiBzdGlsbCBiZSBlbmFibGVkIGJ5IGluc3RhbnRpYXRpbmcgYSBTU0xDb250ZXh0IG1hbnVhbGx5LgorCiAtIElzc3VlICMyMjY0MTogSW4gYXN5bmNpbywgdGhlIGRlZmF1bHQgU1NMIGNvbnRleHQgZm9yIGNsaWVudCBjb25uZWN0aW9ucwogICBpcyBub3cgY3JlYXRlZCB1c2luZyBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLCBmb3Igc3Ryb25nZXIgc2VjdXJpdHkuCiAKKy0gSXNzdWUgIzE3NDAxOiBJbmNsdWRlIGNsb3NlZmQgaW4gaW8uRmlsZUlPIHJlcHIuCisKKy0gSXNzdWUgIzIxMzM4OiBBZGQgc2lsZW50IG1vZGUgZm9yIGNvbXBpbGVhbGwuIHF1aWV0IHBhcmFtZXRlcnMgb2YKKyAgY29tcGlsZV97ZGlyLCBmaWxlLCBwYXRofSBmdW5jdGlvbnMgbm93IGhhdmUgYSBtdWx0aWxldmVsIHZhbHVlLiBBbHNvLAorICAtcSBvcHRpb24gb2YgdGhlIENMSSBub3cgaGF2ZSBhIG11bHRpbGV2ZWwgdmFsdWUuIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCistIElzc3VlICMyMDE1MjogQ29udmVydCB0aGUgYXJyYXkgYW5kIGNtYXRoIG1vZHVsZXMgdG8gQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMxODY0MzogQWRkIHNvY2tldC5zb2NrZXRwYWlyKCkgb24gV2luZG93cy4KKwogLSBJc3N1ZSAjMjI0MzU6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gU29ja2V0U2VydmVyIGJpbmQgZmFpbHMuCiAKIC0gSXNzdWUgIzEzMDk2OiBGaXhlZCBzZWdmYXVsdCBpbiBDVHlwZXMgUE9JTlRFUiBoYW5kbGluZyBvZiBsYXJnZQpAQCAtNTk2LDkgKzE0OTIsMTkgQEAKIC0gSXNzdWUgIzExNjk0OiBSYWlzZSBDb252ZXJzaW9uRXJyb3IgaW4geGRybGliIGFzIGRvY3VtZW50ZWQuICBQYXRjaAogICBieSBGaWxpcCBHcnVzemN6ecWEc2tpIGFuZCBDbGF1ZGl1IFBvcGEuCiAKKy0gSXNzdWUgIzE5MzgwOiBPcHRpbWl6ZWQgcGFyc2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zLgorCistIElzc3VlICMxNTE5NjM4OiBOb3cgdW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBlbXB0eSBzdHJpbmdzIGluIHJlLnN1YigpCisgIGFuZCByZS5zdWJuKCkuCisKKy0gSXNzdWUgIzE4NjE1OiBzbmRoZHIud2hhdC93aGF0aGRyIG5vdyByZXR1cm4gYSBuYW1lZHR1cGxlLgorCiAtIElzc3VlICMyMjQ2MjogRml4IHB5ZXhwYXQncyBjcmVhdGlvbiBvZiBhIGR1bW15IGZyYW1lIHRvIG1ha2UgaXQKICAgYXBwZWFyIGluIGV4Y2VwdGlvbiB0cmFjZWJhY2tzLgogCistIElzc3VlICMyMTk2NTogQWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBTU0wgdG8gdGhlIHNzbCBtb2R1bGUuICBQYXRjaAorICBieSBHZWVydCBKYW5zZW4uCisKIC0gSXNzdWUgIzIxMTczOiBGaXggbGVuKCkgb24gYSBXZWFrS2V5RGljdGlvbmFyeSB3aGVuIC5jbGVhcigpIHdhcyBjYWxsZWQKICAgd2l0aCBhbiBpdGVyYXRvciBhbGl2ZS4KIApAQCAtNjA4LDE2NyArMTUxNCw2NSBAQAogLSBJc3N1ZSAjMjE5MDU6IEF2b2lkIFJ1bnRpbWVFcnJvciBpbiBwaWNrbGUud2hpY2htb2R1bGUoKSB3aGVuIHN5cy5tb2R1bGVzCiAgIGlzIG11dGF0ZWQgd2hpbGUgaXRlcmF0aW5nLiAgUGF0Y2ggYnkgT2xpdmllciBHcmlzZWwuCiAKKy0gSXNzdWUgIzExMjcxOiBjb25jdXJyZW50LmZ1dHVyZXMuRXhlY3V0b3IubWFwKCkgbm93IHRha2VzIGEgKmNodW5rc2l6ZSoKKyAgYXJndW1lbnQgdG8gYWxsb3cgYmF0Y2hpbmcgb2YgdGFza3MgaW4gY2hpbGQgcHJvY2Vzc2VzIGFuZCBpbXByb3ZlCisgIHBlcmZvcm1hbmNlIG9mIFByb2Nlc3NQb29sRXhlY3V0b3IuICBQYXRjaCBieSBEYW4gTydSZWlsbHkuCisKKy0gSXNzdWUgIzIxODgzOiBvcy5wYXRoLmpvaW4oKSBhbmQgb3MucGF0aC5yZWxwYXRoKCkgbm93IHJhaXNlIGEgVHlwZUVycm9yIHdpdGgKKyAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgZm9yIHVuc3VwcG9ydGVkIG9yIG1pc21hdGNoZWQgdHlwZXMgb2YgYXJndW1lbnRzLgorCiAtIElzc3VlICMyMjIxOTogVGhlIHppcGZpbGUgbW9kdWxlIENMSSBub3cgYWRkcyBlbnRyaWVzIGZvciBkaXJlY3RvcmllcwogICAoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KIAogLSBJc3N1ZSAjMjI0NDk6IEluIHRoZSBzc2wuU1NMQ29udGV4dC5sb2FkX2RlZmF1bHRfY2VydHMsIGNvbnN1bHQgdGhlCiAgIGVudmlyb25tZW50YWwgdmFyaWFibGVzIFNTTF9DRVJUX0RJUiBhbmQgU1NMX0NFUlRfRklMRSBvbiBXaW5kb3dzLgogCistIElzc3VlICMyMjUwODogVGhlIGVtYWlsLl9fdmVyc2lvbl9fIHZhcmlhYmxlIGhhcyBiZWVuIHJlbW92ZWQ7IHRoZSBlbWFpbAorICBjb2RlIGlzIG5vIGxvbmdlciBzaGlwcGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgc3RkbGliLCBhbmQgX192ZXJzaW9uX18KKyAgaGFzbid0IGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIHJlbGVhc2VzLgorCiAtIElzc3VlICMyMDA3NjogQWRkZWQgbm9uIGRlcml2ZWQgVVRGLTggYWxpYXNlcyB0byBsb2NhbGUgYWxpYXNlcyB0YWJsZS4KIAogLSBJc3N1ZSAjMjAwNzk6IEFkZGVkIGxvY2FsZXMgc3VwcG9ydGVkIGluIGdsaWJjIDIuMTggdG8gbG9jYWxlIGFsaWFzIHRhYmxlLgogCi0tIElzc3VlICMyMjM5NjogT24gMzItYml0IEFJWCBwbGF0Zm9ybSwgZG9uJ3QgZXhwb3NlIG9zLnBvc2l4X2ZhZHZpc2UoKSBub3IKLSAgb3MucG9zaXhfZmFsbG9jYXRlKCkgYmVjYXVzZSB0aGVpciBwcm90b3R5cGVzIGluIHN5c3RlbSBoZWFkZXJzIGFyZSB3cm9uZy4KKy0gSXNzdWUgIzIwMjE4OiBBZGRlZCBjb252ZW5pZW5jZSBtZXRob2RzIHJlYWRfdGV4dC93cml0ZV90ZXh0IGFuZCByZWFkX2J5dGVzLworICB3cml0ZV9ieXRlcyB0byBwYXRobGliLlBhdGggb2JqZWN0cy4KIAotLSBJc3N1ZSAjMjI1MTc6IFdoZW4gYSBpby5CdWZmZXJlZFJXUGFpciBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIGNsZWFyIGl0cwotICB3ZWFrcmVmcy4KKy0gSXNzdWUgIzIyNDM3OiBOdW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgbm8gbG9uZ2VyCisgIGxpbWl0ZWQgYnkgMTAwLgogCi0tIElzc3VlICMyMjQ0ODogSW1wcm92ZSBjYW5jZWxlZCB0aW1lciBoYW5kbGVzIGNsZWFudXAgdG8gcHJldmVudAotICB1bmJvdW5kIG1lbW9yeSB1c2FnZS4gUGF0Y2ggYnkgSm9zaHVhIE1vb3JlLU9saXZhLgotCi0tIElzc3VlICMyMzAwOTogTWFrZSBzdXJlIHNlbGVjdG9ycy5FcG9sbFNlbGVjcnRvci5zZWxlY3QoKSB3b3JrcyB3aGVuIG5vCi0gIEZEIGlzIHJlZ2lzdGVyZWQuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAotICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCi0gIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCi0gIFBhdGNoIGJ5IFRhbCBFaW5hdC4KLQotLSBJc3N1ZSAjMTY4OTM6IFVwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldwotICBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjMzA2ODogQWRkIElkbGUgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gZGlhbG9nIHRvIE9wdGlvbnMgbWVudS4KLSAgQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLgotICBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCi0KLS0gSXNzdWUgIzE2MjMzOiBBIG1vZHVsZSBicm93c2VyIChGaWxlIDogQ2xhc3MgQnJvd3NlciwgQWx0K0MpIHJlcXVpcmVzIGEKLSAgZWRpdG9yIHdpbmRvdyB3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwKLSAgZnJvbSBhIHNoZWxsLCBvdXRwdXQgd2luZG93LCBvciAnVW50aXRsZWQnIGVkaXRvciwgSWRsZSBubyBsb25nZXIgZGlzcGxheXMKLSAgYW4gZXJyb3IgYm94LiAgSXQgbm93IHBvcHMgdXAgYW4gIE9wZW4gTW9kdWxlIGJveCAoQWx0K00pLiBJZiBhIHZhbGlkIG5hbWUKLSAgaXMgZW50ZXJlZCBhbmQgYSBtb2R1bGUgaXMgb3BlbmVkLCBhIGNvcnJlc3BvbmRpbmcgYnJvd3NlciBpcyBhbHNvIG9wZW5lZC4KLQotLSBJc3N1ZSAjNDgzMjogU2F2ZSBBcyB0byB0eXBlIFB5dGhvbiBmaWxlcyBhdXRvbWF0aWNhbGx5IGFkZHMgLnB5IHRvIHRoZQotICBuYW1lIHlvdSBlbnRlciAoZXZlbiBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBkaXNwbGF5IGl0KS4gIFNvbWUgc3lzdGVtcwotICBhdXRvbWF0aWNhbGx5IGFkZCAudHh0IHdoZW4gdHlwZSBpcyBUZXh0IGZpbGVzLgotCi0tIElzc3VlICMyMTk4NjogQ29kZSBvYmplY3RzIGFyZSBub3Qgbm9ybWFsbHkgcGlja2xlZCBieSB0aGUgcGlja2xlIG1vZHVsZS4KLSAgVG8gbWF0Y2ggdGhpcywgdGhleSBhcmUgbm8gbG9uZ2VyIHBpY2tsZWQgd2hlbiBydW5uaW5nIHVuZGVyIElkbGUuCi0KLS0gSXNzdWUgIzIzMTgwOiBSZW5hbWUgSURMRSAiV2luZG93cyIgbWVudSBpdGVtIHRvICJXaW5kb3ciLgotICBQYXRjaCBieSBBbCBTd2VpZ2FydC4KLQotVGVzdHMKLS0tLS0tCistIElzc3VlICMxNzQ0MjogSW50ZXJhY3RpdmVJbnRlcnByZXRlciBub3cgZGlzcGxheXMgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2sKKyAgaW4gaXRzIHNob3d0cmFjZWJhY2sgbWV0aG9kLCB0byBtYXRjaCB0aGUgYnVpbHQgaW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCiAKIC0gSXNzdWUgIzIzMzkyOiBBZGRlZCB0ZXN0cyBmb3IgbWFyc2hhbCBDIEFQSSB0aGF0IHdvcmtzIHdpdGggRklMRSouCiAKLS0gSXNzdWUgIzE4OTgyOiBBZGQgdGVzdHMgZm9yIENMSSBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgotCi0tIElzc3VlICMxOTU0ODogQWRkZWQgc29tZSBhZGRpdGlvbmFsIGNoZWNrcyB0byB0ZXN0X2NvZGVjcyB0byBlbnN1cmUgdGhhdAotICBzdGF0ZW1lbnRzIGluIHRoZSB1cGRhdGVkIGRvY3VtZW50YXRpb24gcmVtYWluIGFjY3VyYXRlLiBQYXRjaCBieSBNYXJ0aW4KLSAgUGFudGVyLgotCi0tIElzc3VlICMyMjgzODogQWxsIHRlc3RfcmUgdGVzdHMgbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLQotLSBJc3N1ZSAjMjIxNzM6IFVwZGF0ZSBsaWIydG8zIHRlc3RzIHRvIHVzZSB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLQotLSBJc3N1ZSAjMTYwMDA6IENvbnZlcnQgdGVzdF9jdXJzZXMgdG8gdXNlIHVuaXR0ZXN0LgotCi0tIElzc3VlICMyMTQ1NjogU2tpcCB0d28gdGVzdHMgaW4gdGVzdF91cmxsaWIybmV0LnB5IGlmIF9zc2wgbW9kdWxlIG5vdAotICBwcmVzZW50LiBQYXRjaCBieSBSZW1pIFBvaW50ZWwuCi0KLS0gSXNzdWUgIzIyNzcwOiBQcmV2ZW50IHNvbWUgVGsgc2VnZmF1bHRzIG9uIE9TIFggd2hlbiBydW5uaW5nIGd1aSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjMyMTE6IFdvcmthcm91bmQgdGVzdF9sb2dnaW5nIGZhaWx1cmUgb24gc29tZSBPUyBYIDEwLjYgc3lzdGVtcy4KLQotLSBJc3N1ZSAjMjMzNDU6IFByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsCi0gIHZhbHVlcyAobGlrZSAwLjkuOHpjKS4KLQotLSBJc3N1ZSAjMjIyODk6IFByZXZlbnQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIGR1ZSB0byBmdHAgY29ubmVjdGlvbiB0aW1lb3V0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU1MDY6IFVzZSBzdGFuZGFyZCBQS0dfUFJPR19QS0dfQ09ORklHIGF1dG9jb25mIG1hY3JvIGluIHRoZSBjb25maWd1cmUKLSAgc2NyaXB0LgotCi0tIElzc3VlICMyMjkzNTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgY29tcGlsZWQgaWYgb3BlbnNzbCBkb2Vzbid0IHN1cHBvcnQKLSAgU1NMIDMuCi0KLS0gSXNzdWUgIzE2NTM3OiBDaGVjayB3aGV0aGVyIHNlbGYuZXh0ZW5zaW9ucyBpcyBlbXB0eSBpbiBzZXR1cC5weS4gUGF0Y2ggYnkKLSAgSm9uYXRoYW4gSG9zbWVyLgotCi0tIElzc3VlICMxODA5NjogRml4IGxpYnJhcnkgb3JkZXIgcmV0dXJuZWQgYnkgcHl0aG9uLWNvbmZpZy4KLQotLSBJc3N1ZSAjMTcyMTk6IEFkZCBsaWJyYXJ5IGJ1aWxkIGRpciBmb3IgUHl0aG9uIGV4dGVuc2lvbiBjcm9zcy1idWlsZHMuCi0KLS0gSXNzdWUgIzE3MTI4OiBVc2UgcHJpdmF0ZSB2ZXJzaW9uIG9mIE9wZW5TU0wgZm9yIDMuNC4zIE9TIFggMTAuNSsgaW5zdGFsbGVyLgotCi1DIEFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMjIwNzk6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCBzdGF0aWNhbGx5IGFsbG9jYXRlZCB0eXBlIGhhcwotICBubyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYmFzZXMuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTk1NDg6IFVwZGF0ZSB0aGUgY29kZWNzIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGJldHRlciBjb3ZlciB0aGUKLSAgZGlzdGluY3Rpb24gYmV0d2VlbiB0ZXh0IGVuY29kaW5ncyBhbmQgb3RoZXIgY29kZWNzLCB0b2dldGhlciB3aXRoIG90aGVyCi0gIGNsYXJpZmljYXRpb25zLiBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyMjkxNDogVXBkYXRlIHRoZSBQeXRob24gMi8zIHBvcnRpbmcgSE9XVE8gdG8gZGVzY3JpYmUgYSBtb3JlIGF1dG9tYXRlZAotICBhcHByb2FjaC4KLQotLSBJc3N1ZSAjMjE1MTQ6IFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBqc29uIG1vZHVsZSBub3cgcmVmZXJzIHRvIG5ldyBKU09OIFJGQwotICA3MTU5IGluc3RlYWQgb2Ygb2Jzb2xldGVkIFJGQyA0NjI3LgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIzMTQ6IHB5ZG9jIG5vdyB3b3JrcyB3aGVuIHRoZSBMSU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTc4OTY6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IGV4cGVjdCBleHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMKLSAgdG8gYmUgaW4gYGBQQ2J1aWxkXC4uXGV4dGVybmFsc2BgIHJhdGhlciB0aGFuIGBgUENidWlsZFwuLlwuLmBgLgotCi0tIElzc3VlICMxNzcxNzogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tCi0gIHN2bi5weXRob24ub3JnIHRvIGJ1aWxkIE9wZW5TU0wuCi0KLS0gSXNzdWUgIzIyNjQ0OiBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIE9wZW5TU0wgaGFzIGJlZW4gdXBkYXRlZCB0byAxLjAuMWouCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0xMC0wNgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotTGlicmFyeQotLS0tLS0tLQotCiAtIElzc3VlICMxMDUxMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGFuZCB1cGxvYWQgbWV0aG9kcyBub3cgdXNlIEhUTUwgc3RhbmRhcmRzCiAgIGNvbXBsaWFudCBDUkxGIGxpbmUgZW5kaW5ncy4KIAogLSBJc3N1ZSAjOTg1MDogRml4ZWQgbWFjcGF0aC5qb2luKCkgZm9yIGVtcHR5IGZpcnN0IGNvbXBvbmVudC4gIFBhdGNoIGJ5CiAgIE9sZWcgT3NobXlhbi4KIAorLSBJc3N1ZSAjNTMwOTogZGlzdHV0aWxzJyBidWlsZCBhbmQgYnVpbGRfZXh0IGNvbW1hbmRzIG5vdyBhY2NlcHQgYSBgYC1qYGAKKyAgb3B0aW9uIHRvIGVuYWJsZSBwYXJhbGxlbCBidWlsZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjI0NDg6IEltcHJvdmUgY2FuY2VsZWQgdGltZXIgaGFuZGxlcyBjbGVhbnVwIHRvIHByZXZlbnQKKyAgdW5ib3VuZCBtZW1vcnkgdXNhZ2UuIFBhdGNoIGJ5IEpvc2h1YSBNb29yZS1PbGl2YS4KKwogLSBJc3N1ZSAjMjI0Mjc6IFRlbXBvcmFyeURpcmVjdG9yeSBubyBsb25nZXIgYXR0ZW1wdHMgdG8gY2xlYW4gdXAgdHdpY2Ugd2hlbgogICB1c2VkIGluIHRoZSB3aXRoIHN0YXRlbWVudCBpbiBnZW5lcmF0b3IuCiAKKy0gSXNzdWUgIzIyMzYyOiBGb3JiaWRkZW4gYW1iaWd1b3VzIG9jdGFsIGVzY2FwZXMgb3V0IG9mIHJhbmdlIDAtMG8zNzcgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjA5MTI6IE5vdyBkaXJlY3RvcmllcyBhZGRlZCB0byBaSVAgZmlsZSBoYXZlIGNvcnJlY3QgVW5peCBhbmQgTVMtRE9TCiAgIGRpcmVjdG9yeSBhdHRyaWJ1dGVzLgogCiAtIElzc3VlICMyMTg2NjogWmlwRmlsZS5jbG9zZSgpIG5vIGxvbmdlciB3cml0ZXMgWklQNjQgY2VudHJhbCBkaXJlY3RvcnkKICAgcmVjb3JkcyBpZiBhbGxvd1ppcDY0IGlzIGZhbHNlLgogCistIElzc3VlICMyMjI3ODogRml4IHVybGpvaW4gcHJvYmxlbSB3aXRoIHJlbGF0aXZlIHVybHMsIGEgcmVncmVzc2lvbiBvYnNlcnZlZAorICBhZnRlciBjaGFuZ2VzIHRvIGlzc3VlMjIxMTggd2VyZSBzdWJtaXR0ZWQuCisKIC0gSXNzdWUgIzIyNDE1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IG9mIHRoZSBHUk9VUFJFRl9FWElTVFMgb3Bjb2RlIGluIHRoZSByZQogICBtb2R1bGUuICBSZW1vdmVkIHRyYWlsaW5nIHNwYWNlcyBpbiBkZWJ1Z2dpbmcgb3V0cHV0LgogCkBAIC03NzgsNDcgKzE1ODIsMTggQEAKIC0gSXNzdWUgIzIxMzMyOiBFbnN1cmUgdGhhdCBgYGJ1ZnNpemU9MWBgIGluIHN1YnByb2Nlc3MuUG9wZW4oKSBzZWxlY3RzCiAgIGxpbmUgYnVmZmVyaW5nLCByYXRoZXIgdGhhbiBibG9jayBidWZmZXJpbmcuICBQYXRjaCBieSBBa2lyYSBMaS4KIAotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMnJjMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDktMjIKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMjU4OiBGaXggdGhlIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBzZXRfaW5oZXJpdGFibGUoKSBvbiBJbGx1bW9zLgotICBUaGlzIHBsYXRmb3JtIGV4cG9zZXMgdGhlIGZ1bmN0aW9uIGBgaW9jdGwoRklPQ0xFWClgYCwgYnV0IGNhbGxpbmcgaXQgZmFpbHMKLSAgd2l0aCBlcnJubyBpcyBFTk9UVFk6ICJJbmFwcHJvcHJpYXRlIGlvY3RsIGZvciBkZXZpY2UiLiBzZXRfaW5oZXJpdGFibGUoKQotICBub3cgZmFsbHMgYmFjayB0byB0aGUgc2xvd2VyIGBgZmNudGwoKWBgIChgYEZfR0VURkRgYCBhbmQgdGhlbiBgYEZfU0VURkRgYCkuCi0KLS0gSXNzdWUgIzIxNjY5OiBXaXRoIHRoZSBhaWQgb2YgaGV1cmlzdGljcyBpbiBTeW50YXhFcnJvci5fX2luaXRfXywgdGhlCi0gIHBhcnNlciBub3cgYXR0ZW1wdHMgdG8gZ2VuZXJhdGUgbW9yZSBtZWFuaW5nZnVsIChvciBhdCBsZWFzdCBtb3JlIHNlYXJjaAotICBlbmdpbmUgZnJpZW5kbHkpIGVycm9yIG1lc3NhZ2VzIHdoZW4gImV4ZWMiIGFuZCAicHJpbnQiIGFyZSB1c2VkIGFzCi0gIHN0YXRlbWVudHMuCi0KLS0gSXNzdWUgIzIxNjQyOiBJZiB0aGUgY29uZGl0aW9uYWwgaWYtZWxzZSBleHByZXNzaW9uLCBhbGxvdyBhbiBpbnRlZ2VyIHdyaXR0ZW4KLSAgd2l0aCBubyBzcGFjZSBiZXR3ZWVuIGl0c2VsZiBhbmQgdGhlIGBgZWxzZWBgIGtleXdvcmQgKGUuZy4gYGBUcnVlIGlmIDQyZWxzZQotICBGYWxzZWBgKSB0byBiZSB2YWxpZCBzeW50YXguCi0KLS0gSXNzdWUgIzIxNTIzOiBGaXggb3Zlci1wZXNzaW1pc3RpYyBjb21wdXRhdGlvbiBvZiB0aGUgc3RhY2sgZWZmZWN0IG9mCi0gIHNvbWUgb3Bjb2RlcyBpbiB0aGUgY29tcGlsZXIuICBUaGlzIGFsc28gZml4ZXMgYSBxdWFkcmF0aWMgY29tcGlsYXRpb24KLSAgdGltZSBpc3N1ZSBub3RpY2VhYmxlIHdoZW4gY29tcGlsaW5nIGNvZGUgd2l0aCBhIGxhcmdlIG51bWJlciBvZiAiYW5kIgotICBhbmQgIm9yIiBvcGVyYXRvcnMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQogLSBJc3N1ZSAjMjEwOTE6IEZpeCBBUEkgYnVnOiBlbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19hdHRhY2htZW50IGlzIG5vdwotICBhIG1ldGhvZC4gIFNpbmNlIEVtYWlsTWVzc2FnZSBpcyBwcm92aXNpb25hbCwgd2UgY2FuIGNoYW5nZSB0aGUgQVBJIGluIGEKLSAgbWFpbnRlbmFuY2UgcmVsZWFzZSwgYnV0IHdlIHVzZSBhIHRyaWNrIHRvIHJlbWFpbiBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGgKLSAgMy40LjAvMS4KKyAgYSBtZXRob2QuCiAKIC0gSXNzdWUgIzIxMDc5OiBGaXggZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfYXR0YWNobWVudCB0byByZXR1cm4gdGhlCiAgIGNvcnJlY3QgcmVzdWx0IHdoZW4gdGhlIGhlYWRlciBoYXMgcGFyYW1ldGVycyBhcyB3ZWxsIGFzIGEgdmFsdWUuCiAKIC0gSXNzdWUgIzIyMjQ3OiBBZGQgTk5UUEVycm9yIHRvIG5udHBsaWIuX19hbGxfXy4KIAorLSBJc3N1ZSAjMjIzNjY6IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4gd2lsbCBhY2NlcHQgYSBjb250ZXh0IG9iamVjdAorICAoU1NMQ29udGV4dCkgYXMgYW4gYXJndW1lbnQgd2hpY2ggd2lsbCB0aGVuIHVzZWQgYmUgZm9yIEhUVFBTIGNvbm5lY3Rpb24uCisgIFBhdGNoIGJ5IEFsZXggR2F5bm9yLgorCiAtIElzc3VlICM0MTgwOiBUaGUgd2FybmluZ3MgcmVnaXN0cmllcyBhcmUgbm93IHJlc2V0IHdoZW4gdGhlIGZpbHRlcnMKICAgYXJlIG1vZGlmaWVkLgogCkBAIC04MzAsNiArMTYwNSw5IEBACiAgIHdpdGggbm9uLXN0YW5kYXJkIGNvb2tpZSBoYW5kbGluZyBpbiBzb21lIFdlYiBicm93c2Vycy4gIFJlcG9ydGVkIGJ5CiAgIFNlcmdleSBCb2Jyb3YuCiAKKy0gSXNzdWUgIzIwNTM3OiBsb2dnaW5nIG1ldGhvZHMgbm93IGFjY2VwdCBhbiBleGNlcHRpb24gaW5zdGFuY2UgYXMgd2VsbCBhcyBhCisgIEJvb2xlYW4gdmFsdWUgb3IgZXhjZXB0aW9uIHR1cGxlLiBUaGFua3MgdG8gWXVyeSBTZWxpdmFub3YgZm9yIHRoZSBwYXRjaC4KKwogLSBJc3N1ZSAjMjIzODQ6IEFuIGV4Y2VwdGlvbiBpbiBUa2ludGVyIGNhbGxiYWNrIG5vIGxvbmdlciBjcmFzaGVzIHRoZSBwcm9ncmFtCiAgIHdoZW4gaXQgaXMgcnVuIHdpdGggcHl0aG9udy5leGUuCiAKQEAgLTgzOCw2ICsxNjE2LDkgQEAKIC0gSXNzdWUgIzIxMTQ3OiBzcWxpdGUzIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgbnVsbAogICBjaGFyYWN0ZXIgaW5zdGVhZCBvZiB0cnVuY2F0ZSBpdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgogCistIElzc3VlICMxMzk2ODogVGhlIGdsb2IgbW9kdWxlIG5vdyBzdXBwb3J0cyByZWN1cnNpdmUgc2VhcmNoIGluCisgIHN1YmRpcmVjdG9yaWVzIHVzaW5nIHRoZSAiKioiIHBhdHRlcm4uCisKIC0gSXNzdWUgIzIxOTUxOiBGaXhlZCBhIGNyYXNoIGluIFRraW50ZXIgb24gQUlYIHdoZW4gY2FsbGVkIFRjbCBjb21tYW5kIHdpdGgKICAgZW1wdHkgc3RyaW5nIG9yIHR1cGxlIGFyZ3VtZW50LgogCkBAIC04NDYsMTIgKzE2MjcsMzEgQEAKIAogLSBJc3N1ZSAjMjIzMzg6IEZpeCBhIGNyYXNoIGluIHRoZSBqc29uIG1vZHVsZSBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLgogCistIElzc3VlICMxMjQxMDogaW1hcGxpYi5JTUFQNCBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgVGFyZWsgWmlhZMOpLgorCistIElzc3VlICMyMTI3MDogV2Ugbm93IG92ZXJyaWRlIHR1cGxlIG1ldGhvZHMgaW4gbW9jay5jYWxsIG9iamVjdHMgc28gdGhhdAorICB0aGV5IGNhbiBiZSB1c2VkIGFzIG5vcm1hbCBjYWxsIGF0dHJpYnV0ZXMuCisKKy0gSXNzdWUgIzE2NjYyOiBsb2FkX3Rlc3RzKCkgaXMgbm93IHVuY29uZGl0aW9uYWxseSBydW4gd2hlbiBpdCBpcyBwcmVzZW50IGluCisgIGEgcGFja2FnZSdzIF9faW5pdF9fLnB5LiAgVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKCkgc3RpbGwgYWNjZXB0cworICB1c2VfbG9hZF90ZXN0cywgYnV0IGl0IGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuICBBIG5ldyBrZXl3b3JkLW9ubHkKKyAgYXR0cmlidXRlIGBwYXR0ZXJuYCBpcyBhZGRlZCBhbmQgZG9jdW1lbnRlZC4gIFBhdGNoIGdpdmVuIGJ5IFJvYmVydCBDb2xsaW5zLAorICB0d2Vha2VkIGJ5IEJhcnJ5IFdhcnNhdy4KKwogLSBJc3N1ZSAjMjIyMjY6IEZpcnN0IGxldHRlciBubyBsb25nZXIgaXMgc3RyaXBwZWQgZnJvbSB0aGUgInN0YXR1cyIga2V5IGluCiAgIHRoZSByZXN1bHQgb2YgVHJlZXZpZXcuaGVhZGluZygpLgogCiAtIElzc3VlICMxOTUyNDogRml4ZWQgcmVzb3VyY2UgbGVhayBpbiB0aGUgSFRUUCBjb25uZWN0aW9uIHdoZW4gYW4gaW52YWxpZAogICByZXNwb25zZSBpcyByZWNlaXZlZC4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKKy0gSXNzdWUgIzIwNDIxOiBBZGQgYSAudmVyc2lvbigpIG1ldGhvZCB0byBTU0wgc29ja2V0cyBleHBvc2luZyB0aGUgYWN0dWFsCisgIHByb3RvY29sIHZlcnNpb24gaW4gdXNlLgorCistIElzc3VlICMxOTU0NjogY29uZmlncGFyc2VyIGV4Y2VwdGlvbnMgbm8gbG9uZ2VyIGV4cG9zZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICBDaGFpbmVkIEtleUVycm9ycyBhcmUgcmVtb3ZlZCwgd2hpY2ggbGVhZHMgdG8gY2xlYW5lciB0cmFjZWJhY2tzLiAgUGF0Y2ggYnkKKyAgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMjA1MTogdHVydGxlZGVtbyBubyBsb25nZXIgcmVsb2FkcyBleGFtcGxlcyB0byByZS1ydW4gdGhlbS4KICAgSW5pdGlhbGl6YXRpb24gb2YgdmFyaWFibGVzIGFuZCBndWkgc2V0dXAgc2hvdWxkIGJlIGRvbmUgaW4gbWFpbigpLAogICB3aGljaCBpcyBjYWxsZWQgZWFjaCB0aW1lIGEgZGVtbyBpcyBydW4sIGJ1dCBub3Qgb24gaW1wb3J0LgpAQCAtODY4LDIzICsxNjY4LDU3IEBACiAtIElzc3VlICMxODEzMjogVHVydGxlZGVtbyBidXR0b25zIG5vIGxvbmdlciBkaXNhcHBlYXIgd2hlbiB0aGUgd2luZG93IGlzCiAgIHNocnVuay4gIE9yaWdpbmFsIHBhdGNoZXMgYnkgSmFuIEthbmlzIGFuZCBMaXRhIENoby4KIAorLSBJc3N1ZSAjMjIwNDM6IHRpbWUubW9ub3RvbmljKCkgaXMgbm93IGFsd2F5cyBhdmFpbGFibGUuCisgIGBgdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpYGAsIGBgdGhyZWFkaW5nLlJMb2NrLmFjcXVpcmUoKWBgIGFuZCBzb2NrZXQKKyAgb3BlcmF0aW9ucyBub3cgdXNlIGEgbW9ub3RvbmljIGNsb2NrLCBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gY2xvY2ssIHdoZW4gYQorICB0aW1lb3V0IGlzIHVzZWQuCisKKy0gSXNzdWUgIzIxNTI3OiBBZGQgYSBkZWZhdWx0IG51bWJlciBvZiB3b3JrZXJzIHRvIFRocmVhZFBvb2xFeGVjdXRvciBlcXVhbAorICB0byA1IHRpbWVzIHRoZSBudW1iZXIgb2YgQ1BVcy4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIyMTY6IHNtdHBsaWIgbm93IHJlc2V0cyBpdHMgc3RhdGUgbW9yZSBjb21wbGV0ZWx5IGFmdGVyIGEgcXVpdC4gIFRoZQogICBtb3N0IG9idmlvdXMgY29uc2VxdWVuY2Ugb2YgdGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyBhIFNUQVJUVExTIGZhaWx1cmUKICAgZHVyaW5nIGEgY29ubmVjdC9zdGFydHRscy9xdWl0L2Nvbm5lY3Qvc3RhcnR0bHMgc2VxdWVuY2UuCiAKKy0gSXNzdWUgIzIyMDk4OiBjdHlwZXMnIEJpZ0VuZGlhblN0cnVjdHVyZSBhbmQgTGl0dGxlRW5kaWFuU3RydWN0dXJlIG5vdworICBkZWZpbmUgYW4gZW1wdHkgX19zbG90c19fIHNvIHRoYXQgc3ViY2xhc3NlcyBkb24ndCBhbHdheXMgZ2V0IGFuIGluc3RhbmNlCisgIGRpY3QuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKIC0gSXNzdWUgIzIyMTg1OiBGaXggYW4gb2NjYXNpb25hbCBSdW50aW1lRXJyb3IgaW4gdGhyZWFkaW5nLkNvbmRpdGlvbi53YWl0KCkKICAgY2F1c2VkIGJ5IG11dGF0aW9uIG9mIHRoZSB3YWl0ZXJzIHF1ZXVlIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4gIFBhdGNoCiAgIGJ5IERvdWcgWm9uZ2tlci4KIAorLSBJc3N1ZSAjMjIyODc6IE9uIFVOSVgsIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgbm93IHVzZXMKKyAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgaWYgYXZhaWxhYmxlLiBBcyBhIHNpZGUgZWZmZWN0LCBQeXRob24gbm93CisgIGRlcGVuZHMgb24gdGhlIGxpYnJ0IGxpYnJhcnkgb24gU29sYXJpcyBhbmQgb24gTGludXggKG9ubHkgd2l0aCBnbGliYyBvbGRlcgorICB0aGFuIDIuMTcpLgorCiAtIElzc3VlICMyMjE4MjogVXNlIGUuYXJncyB0byB1bnBhY2sgZXhjZXB0aW9ucyBjb3JyZWN0bHkgaW4KICAgZGlzdHV0aWxzLmZpbGVfdXRpbC5tb3ZlX2ZpbGUuIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KIAogLSBUaGUgd2ViYnJvd3NlciBtb2R1bGUgbm93IHVzZXMgc3VicHJvY2VzcydzIHN0YXJ0X25ld19zZXNzaW9uPVRydWUgcmF0aGVyCiAgIHRoYW4gYSBwb3RlbnRpYWxseSByaXNreSBwcmVleGVjX2ZuPW9zLnNldHNpZCBjYWxsLgogCistIElzc3VlICMyMjA0Mjogc2lnbmFsLnNldF93YWtldXBfZmQoZmQpIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBmaWxlCisgIGRlc2NyaXB0b3IgaXMgaW4gYmxvY2tpbmcgbW9kZS4KKworLSBJc3N1ZSAjMTY4MDg6IGluc3BlY3Quc3RhY2soKSBub3cgcmV0dXJucyBhIG5hbWVkIHR1cGxlIGluc3RlYWQgb2YgYSB0dXBsZS4KKyAgUGF0Y2ggYnkgRGFuaWVsIFNoYWhhZi4KKwogLSBJc3N1ZSAjMjIyMzY6IEZpeGVkIFRraW50ZXIgaW1hZ2VzIGNvcHlpbmcgb3BlcmF0aW9ucyBpbiBOb0RlZmF1bHRSb290IG1vZGUuCiAKLS0gSXNzdWUgIzIyMTkxOiBGaXggd2FybmluZ3MuX19hbGxfXy4KKy0gSXNzdWUgIzI1Mjc6IEFkZCBhICpnbG9iYWxzKiBhcmd1bWVudCB0byB0aW1laXQgZnVuY3Rpb25zLCBpbiBvcmRlciB0bworICBvdmVycmlkZSB0aGUgZ2xvYmFscyBuYW1lc3BhY2UgaW4gd2hpY2ggdGhlIHRpbWVkIGNvZGUgaXMgZXhlY3V0ZWQuCisgIFBhdGNoIGJ5IEJlbiBSb2JlcnRzLgorCistIElzc3VlICMyMjExODogU3dpdGNoIHVybGxpYi5wYXJzZSB0byB1c2UgUkZDIDM5ODYgc2VtYW50aWNzIGZvciB0aGUKKyAgcmVzb2x1dGlvbiBvZiByZWxhdGl2ZSBVUkxzLCByYXRoZXIgdGhhbiBSRkNzIDE4MDggYW5kIDIzOTYuCisgIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIxNTQ5OiBBZGRlZCB0aGUgIm1lbWJlcnMiIHBhcmFtZXRlciB0byBUYXJGaWxlLmxpc3QoKS4KKworLSBJc3N1ZSAjMTk2Mjg6IEFsbG93IGNvbXBpbGVhbGwgcmVjdXJzaW9uIGRlcHRoIHRvIGJlIHNwZWNpZmllZCB3aXRoIGEgLXIKKyAgb3B0aW9uLgogCiAtIElzc3VlICMxNTY5NjogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgbW1hcCBvYmplY3RzIG9uIFdpbmRvd3MuCiAKQEAgLTg5Miw2ICsxNzI2LDggQEAKIAogLSBJc3N1ZSAjMjIxNjU6IFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciBub3cgc3VwcG9ydHMgdW5kZWNvZGFibGUgZmlsZSBuYW1lcy4KIAorLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBsaW5lIHJlYWRpbmcgaW4gaW8uQnl0ZXNJTy4KKwogLSBJc3N1ZSAjODc5NzogUmFpc2UgSFRUUEVycm9yIG9uIGZhaWxlZCBCYXNpYyBBdXRoZW50aWNhdGlvbiBpbW1lZGlhdGVseS4KICAgSW5pdGlhbCBwYXRjaCBieSBTYW0gQnVsbC4KIApAQCAtOTA3LDYgKzE3NDMsMTQgQEAKIC0gSXNzdWUgIzE3OTIzOiBnbG9iKCkgcGF0dGVybnMgZW5kaW5nIHdpdGggYSBzbGFzaCBubyBsb25nZXIgbWF0Y2ggbm9uLWRpcnMgb24KICAgQUlYLiAgQmFzZWQgb24gcGF0Y2ggYnkgRGVsaGFsbHQuCiAKKy0gSXNzdWUgIzIxNzI1OiBBZGRlZCBzdXBwb3J0IGZvciBSRkMgNjUzMSAoU01UUFVURjgpIGluIHNtdHBkLgorCistIElzc3VlICMyMjE3NjogVXBkYXRlIHRoZSBjdHlwZXMgbW9kdWxlJ3MgbGliZmZpIHRvIHYzLjEuICBUaGlzIHJlbGVhc2UKKyAgYWRkcyBzdXBwb3J0IGZvciB0aGUgTGludXggQUFyY2g2NCBhbmQgUE9XRVJQQyBFTEYgQUJJdjIgbGl0dGxlIGVuZGlhbgorICBhcmNoaXRlY3R1cmVzLgorCistIElzc3VlICM1NDExOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgInh6dGFyIiBmb3JtYXQgaW4gdGhlIHNodXRpbCBtb2R1bGUuCisKIC0gSXNzdWUgIzIxMTIxOiBEb24ndCBmb3JjZSAzcmQgcGFydHkgQyBleHRlbnNpb25zIHRvIGJlIGJ1aWx0IHdpdGgKICAgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQuCiAKQEAgLTkxNCwxOCArMTc1OCw1NyBAQAogICB3aGVuIHVucGlja2xpbmcgcGlja2xlZCBzcWxpdGUzLlJvdykuICBzcWxpdGUzLlJvdyBpcyBub3cgaW5pdGlhbGl6ZWQgaW4gdGhlCiAgIF9fbmV3X18oKSBtZXRob2QuCiAKKy0gSXNzdWUgIzIwMTcwOiBDb252ZXJ0IHBvc2l4bW9kdWxlIHRvIHVzZSBBcmd1bWVudCBDbGluaWMuCisKKy0gSXNzdWUgIzIxNTM5OiBBZGQgYSAqZXhpc3RzX29rKiBhcmd1bWVudCB0byBgUGF0aGxpYi5ta2RpcigpYCB0byBtaW1pYworICBgbWtkaXIgLXBgIGFuZCBgb3MubWFrZWRpcnMoKWAgZnVuY3Rpb25hbGl0eS4gIFdoZW4gdHJ1ZSwgaWdub3JlCisgIEZpbGVFeGlzdHNFcnJvcnMuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMyMjEyNzogQnlwYXNzIElETkEgZm9yIHB1cmUtQVNDSUkgaG9zdCBuYW1lcyBpbiB0aGUgc29ja2V0IG1vZHVsZQorICAoaW4gcGFydGljdWxhciBmb3IgbnVtZXJpYyBJUHMpLgorCistIElzc3VlICMyMTA0Nzogc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmNvbnZlcnRfY2hhcnJlZnMqIGFyZ3VtZW50CisgIG9mIEhUTUxQYXJzZXIgdG8gVHJ1ZS4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gQWRkIGFuIF9fYWxsX18gdG8gaHRtbC5lbnRpdGllcy4KKworLSBJc3N1ZSAjMTUxMTQ6IHRoZSBzdHJpY3QgbW9kZSBhbmQgYXJndW1lbnQgb2YgSFRNTFBhcnNlciwgSFRNTFBhcnNlci5lcnJvciwKKyAgYW5kIHRoZSBIVE1MUGFyc2VyRXJyb3IgZXhjZXB0aW9uIGhhdmUgYmVlbiByZW1vdmVkLgorCistIElzc3VlICMyMjA4NTogRHJvcHBlZCBzdXBwb3J0IG9mIFRrIDguMyBpbiBUa2ludGVyLgorCiAtIElzc3VlICMyMTU4MDogTm93IFRraW50ZXIgY29ycmVjdGx5IGhhbmRsZXMgYnl0ZXMgYXJndW1lbnRzIHBhc3NlZCB0byBUay4KICAgSW4gcGFydGljdWxhciB0aGlzIGFsbG93cyB0byBpbml0aWFsaXplIGltYWdlcyBmcm9tIGJpbmFyeSBkYXRhLgogCistIElzc3VlICMyMjAwMzogV2hlbiBpbml0aWFsaXplZCBmcm9tIGEgYnl0ZXMgb2JqZWN0LCBpby5CeXRlc0lPKCkgbm93CisgIGRlZmVycyBtYWtpbmcgYSBjb3B5IHVudGlsIGl0IGlzIG11dGF0ZWQsIGltcHJvdmluZyBwZXJmb3JtYW5jZSBhbmQKKyAgbWVtb3J5IHVzZSBvbiBzb21lIHVzZSBjYXNlcy4gIFBhdGNoIGJ5IERhdmlkIFdpbHNvbi4KKworLSBJc3N1ZSAjMjIwMTg6IE9uIFdpbmRvd3MsIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKCkgbm93IGFsc28gc3VwcG9ydHMgc29ja2V0cy4KKyAgQSBzaWRlIGVmZmVjdCBpcyB0aGF0IFB5dGhvbiBkZXBlbmRzIHRvIHRoZSBXaW5Tb2NrIGxpYnJhcnkuCisKKy0gSXNzdWUgIzIyMDU0OiBBZGQgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpIGZ1bmN0aW9ucyB0byBnZXQKKyAgYW5kIHNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiBhIGZpbGUgZGVzY3JpcHRvciAoRmFsc2UgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZworICBpcyBzZXQsIFRydWUgb3RoZXJ3aXNlKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzE3MTcyOiBNYWtlIHR1cnRsZWRlbW8gc3RhcnQgYXMgYWN0aXZlIG9uIE9TIFggZXZlbiB3aGVuIHJ1biB3aXRoCiAgIHN1YnByb2Nlc3MuICBQYXRjaCBieSBMaXRhIENoby4KIAogLSBJc3N1ZSAjMjE3MDQ6IEZpeCBidWlsZCBlcnJvciBmb3IgX211bHRpcHJvY2Vzc2luZyB3aGVuIHNlbWFwaG9yZXMKICAgYXJlIG5vdCBhdmFpbGFibGUuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KIAorLSBJc3N1ZSAjMjAxNzM6IENvbnZlcnQgc2hhMSwgc2hhMjU2LCBzaGE1MTIgYW5kIG1kNSB0byBBcmd1bWVudENsaW5pYy4KKyAgUGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCiAtIEZpeCByZXByKF9zb2NrZXQuc29ja2V0KSBvbiBXaW5kb3dzIDY0LWJpdDogZG9uJ3QgZmFpbCB3aXRoIE92ZXJmbG93RXJyb3IKICAgb24gY2xvc2VkIHNvY2tldC4gcmVwcihzb2NrZXQuc29ja2V0KSBhbHJlYWR5IHdvcmtzIGZpbmUuCiAKKy0gSXNzdWUgIzIyMDMzOiBSZXBycyBvZiBtb3N0IFB5dGhvbiBpbXBsZW1lbmVkIGNsYXNzZXMgbm93IGNvbnRhaW4gYWN0dWFsCisgIGNsYXNzIG5hbWUgaW5zdGVhZCBvZiBoYXJkY29kZWQgb25lLgorCistIElzc3VlICMyMTk0NzogVGhlIGRpcyBtb2R1bGUgY2FuIG5vdyBkaXNhc3NlbWJsZSBnZW5lcmF0b3ItaXRlcmF0b3IKKyAgb2JqZWN0cyBiYXNlZCBvbiB0aGVpciBnaV9jb2RlIGF0dHJpYnV0ZS4gUGF0Y2ggYnkgQ2xlbWVudCBSb3VhdWx0LgorCiAtIElzc3VlICMxNjEzMzogVGhlIGFzeW5jaGF0LmFzeW5jX2NoYXQuaGFuZGxlX3JlYWQoKSBtZXRob2Qgbm93IGlnbm9yZXMKICAgQmxvY2tpbmdJT0Vycm9yIGV4Y2VwdGlvbnMuCiAKQEAgLTkzNywxNiArMTgyMCw0MiBAQAogICBzZXF1ZW5jZSBpcyB1c2VkIG9uIHNvbWUgdGVybWluYWwgKGV4OiBURVJNPXh0ZXJtLTI1NmNvbG9yIikgdG8gZW5hYmxlCiAgIHN1cHBvcnQgb2YgOCBiaXQgY2hhcmFjdGVycy4KIAorLSBJc3N1ZSAjNDM1MDogUmVtb3ZlZCBhIG51bWJlciBvZiBvdXQtb2YtZGF0ZWQgYW5kIG5vbi13b3JraW5nIGZvciBhIGxvbmcgdGltZQorICBUa2ludGVyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzYxNjc6IFNjcm9sbGJhci5hY3RpdmF0ZSgpIG5vdyByZXR1cm5zIHRoZSBuYW1lIG9mIGFjdGl2ZSBlbGVtZW50IGlmCisgIHRoZSBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkLiAgU2Nyb2xsYmFyLnNldCgpIG5vdyBhbHdheXMgYWNjZXB0cyBvbmx5IDIKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMxNTI3NTogQ2xlYW4gdXAgYW5kIHNwZWVkIHVwIHRoZSBudHBhdGggbW9kdWxlLgorCiAtIElzc3VlICMyMTg4ODogcGxpc3RsaWIncyBsb2FkKCkgYW5kIGxvYWRzKCkgbm93IHdvcmsgaWYgdGhlIGZtdCBwYXJhbWV0ZXIgaXMKICAgc3BlY2lmaWVkLgogCistIElzc3VlICMyMjAzMjogX19xdWFsbmFtZV9fIGluc3RlYWQgb2YgX19uYW1lX18gaXMgbm93IGFsd2F5cyB1c2VkIHRvIGZvcm1hdAorICBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZXMgb2YgUHl0aG9uIGltcGxlbWVudGVkIGNsYXNzZXMuCisKKy0gSXNzdWUgIzIyMDMxOiBSZXBycyBub3cgYWx3YXlzIHVzZSBoZXhhZGVjaW1hbCBmb3JtYXQgd2l0aCB0aGUgIjB4IiBwcmVmaXgKKyAgd2hlbiBjb250YWluIGFuIGlkIGluIGZvcm0gIiBhdCAweC4uLiIuCisKKy0gSXNzdWUgIzIyMDE4OiBzaWduYWwuc2V0X3dha2V1cF9mZCgpIG5vdyByYWlzZXMgYW4gT1NFcnJvciBpbnN0ZWFkIG9mIGEKKyAgVmFsdWVFcnJvciBvbiBgYGZzdGF0KClgYCBmYWlsdXJlLgorCiAtIElzc3VlICMyMTA0NDogdGFyZmlsZS5vcGVuKCkgbm93IGhhbmRsZXMgZmlsZW9iaiB3aXRoIGFuIGludGVnZXIgJ25hbWUnCiAgIGF0dHJpYnV0ZS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFudG9pbmUgUGlldHJpLgogCi0tIElzc3VlICMyMTg2NzogIFByZXZlbnQgdHVydGxlIGNyYXNoIGR1ZSB0byBpbnZhbGlkIHVuZG8gYnVmZmVyIHNpemUuCistIElzc3VlICMyMTk2NjogUmVzcGVjdCAtcSBjb21tYW5kLWxpbmUgb3B0aW9uIHdoZW4gY29kZSBtb2R1bGUgaXMgcmFuLgogCiAtIElzc3VlICMxOTA3NjogRG9uJ3QgcGFzcyB0aGUgcmVkdW5kYW50ICdmaWxlJyBhcmd1bWVudCB0byBzZWxmLmVycm9yKCkuCiAKKy0gSXNzdWUgIzE2MzgyOiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIHdhcm5pbmdzLndhcm4oKSBmb3IgYmFkCisgIGNhdGVnb3J5LiBJbml0aWFsIHBhdGNoIGJ5IFBoaWwgRWxzb24uCisKKy0gSXNzdWUgIzIxOTMyOiBvcy5yZWFkKCkgbm93IHVzZXMgYSA6YzpmdW5jOmBQeV9zc2l6ZV90YCB0eXBlIGluc3RlYWQgb2YKKyAgOmM6dHlwZTpgaW50YCBmb3IgdGhlIHNpemUgdG8gc3VwcG9ydCByZWFkaW5nIG1vcmUgdGhhbiAyIEdCIGF0IG9uY2UuIE9uCisgIFdpbmRvd3MsIHRoZSBzaXplIGlzIHRydW5jdGVkIHRvIElOVF9NQVguIEFzIGFueSBjYWxsIHRvIG9zLnJlYWQoKSwgdGhlIE9TCisgIG1heSByZWFkIGxlc3MgYnl0ZXMgdGhhbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RlZCBieXRlcy4KKwogLSBJc3N1ZSAjMjE5NDI6IEZpeGVkIHNvdXJjZSBmaWxlIHZpZXdpbmcgaW4gcHlkb2MncyBzZXJ2ZXIgbW9kZSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMxMTI1OTogYXN5bmNoYXQuYXN5bmNfY2hhdCgpLnNldF90ZXJtaW5hdG9yKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IKQEAgLTk2NCw4ICsxODczLDggQEAKIC0gSXNzdWUgIzIxNzE0OiBEaXNhbGxvdyB0aGUgY29uc3RydWN0aW9uIG9mIGludmFsaWQgcGF0aHMgdXNpbmcKICAgUGF0aC53aXRoX25hbWUoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9ueSBMZWUuCiAKLS0gSXNzdWUgIzIxODk3OiBGaXggYSBjcmFzaCB3aXRoIHRoZSBmX2xvY2FscyBhdHRyaWJ1dGUgd2l0aCBjbG9zdXJlCi0gIHZhcmlhYmxlcyB3aGVuIGZyYW1lLmNsZWFyKCkgaGFzIGJlZW4gY2FsbGVkLgorLSBJc3N1ZSAjMTUwMTQ6IEFkZGVkICdhdXRoJyBtZXRob2QgdG8gc210cGxpYiB0byBtYWtlIGltcGxlbWVudGluZyBhdXRoCisgIG1lY2hhbmlzbXMgc2ltcGxlciwgYW5kIHVzZWQgaXQgaW50ZXJuYWxseSBpbiB0aGUgbG9naW4gbWV0aG9kLgogCiAtIElzc3VlICMyMTE1MTogRml4ZWQgYSBzZWdmYXVsdCBpbiB0aGUgd2lucmVnIG1vZHVsZSB3aGVuIGBgTm9uZWBgIGlzIHBhc3NlZAogICBhcyBhIGBgUkVHX0JJTkFSWWBgIHZhbHVlIHRvIFNldFZhbHVlRXguICBQYXRjaCBieSBKb2huIEVocmVzbWFuLgpAQCAtOTczLDggKzE4ODIsMTcgQEAKIC0gSXNzdWUgIzIxMDkwOiBpby5GaWxlSU8ucmVhZGFsbCgpIGRvZXMgbm90IGlnbm9yZSBJL08gZXJyb3JzIGFueW1vcmUuIEJlZm9yZSwKICAgaXQgaWdub3JlZCBJL08gZXJyb3JzIGlmIGF0IGxlYXN0IHRoZSBmaXJzdCBDIGNhbGwgcmVhZCgpIHN1Y2NlZWQuCiAKKy0gSXNzdWUgIzU4MDA6IGhlYWRlcnMgcGFyYW1ldGVyIG9mIHdzZ2lyZWYuaGVhZGVycy5IZWFkZXJzIGlzIG5vdyBvcHRpb25hbC4KKyAgSW5pdGlhbCBwYXRjaCBieSBQYWJsbyBUb3JyZXMgTmF2YXJyZXRlIGFuZCBTaWxlbnRHaG9zdC4KKwogLSBJc3N1ZSAjMjE3ODE6IHNzbC5SQU5EX2FkZCgpIG5vdyBzdXBwb3J0cyBzdHJpbmdzIGxvbmdlciB0aGFuIDIgR0IuCiAKKy0gSXNzdWUgIzIxNjc5OiBQcmV2ZW50IGV4dHJhbmVvdXMgZnN0YXQoKSBjYWxscyBkdXJpbmcgb3BlbigpLiAgUGF0Y2ggYnkKKyAgQm9odXNsYXYgS2FicmRhLgorCistIElzc3VlICMyMTg2MzogY1Byb2ZpbGUgbm93IGRpc3BsYXlzIHRoZSBtb2R1bGUgbmFtZSBvZiBDIGV4dGVuc2lvbiBmdW5jdGlvbnMsCisgIGluIGFkZGl0aW9uIHRvIHRoZWlyIG93biBuYW1lLgorCiAtIElzc3VlICMxMTQ1MzogYXN5bmNvcmU6IGVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgd2hlbiBhbiB1bmNsb3NlZCBmaWxlX3dyYXBwZXIKICAgb2JqZWN0IGlzIGRlc3Ryb3llZC4gVGhlIGRlc3RydWN0b3Igbm93IGNsb3NlcyB0aGUgZmlsZSBpZiBuZWVkZWQuIFRoZQogICBjbG9zZSgpIG1ldGhvZCBjYW4gbm93IGJlIGNhbGxlZCB0d2ljZTogdGhlIHNlY29uZCBjYWxsIGRvZXMgbm90aGluZy4KQEAgLTk4NCw0OCArMTkwMiw1MyBAQAogLSBJc3N1ZSAjMjE0NzY6IE1ha2Ugc3VyZSB0aGUgZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyIFRleHRJT1dyYXBwZXIgaXMKICAgZGlzY2FyZGVkIGFmdGVyIHBhcnNpbmcsIHNvIHRoZSBpbnB1dCBmaWxlIGlzbid0IHVuZXhwZWN0ZWRseSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMjk1OiBpbWdoZHIgbm93IHJlY29nbml6ZXMgT3BlbkVYUiBmb3JtYXQgaW1hZ2VzLgorCiAtIElzc3VlICMyMTcyOTogVXNlZCB0aGUgIndpdGgiIHN0YXRlbWVudCBpbiB0aGUgZGJtLmR1bWIgbW9kdWxlIHRvIGVuc3VyZQogICBmaWxlcyBjbG9zaW5nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCiAtIElzc3VlICMyMTQ5MTogc29ja2V0c2VydmVyOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBjaGlsZCBwcm9jZXNzZXMgcmVhcGluZy4KIAorLSBJc3N1ZSAjMjE3MTk6IEFkZGVkIHRoZSBgYHN0X2ZpbGVfYXR0cmlidXRlc2BgIGZpZWxkIHRvIG9zLnN0YXRfcmVzdWx0IG9uCisgIFdpbmRvd3MuCisKIC0gSXNzdWUgIzIxODMyOiAgUmVxdWlyZSBuYW1lZCB0dXBsZSBpbnB1dHMgdG8gYmUgZXhhY3Qgc3RyaW5ncy4KIAotLSBJc3N1ZSAjMTkxNDU6ICBUaGUgdGltZXMgYXJndW1lbnQgZm9yIGl0ZXJ0b29scy5yZXBlYXQgbm93IGhhbmRsZXMKLSAgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBmb3Iga2V5d29yZCBhcmd1bWVudHMgYXMgaXQgZG9lcyBmb3IKLSAgcG9zaXRpb25hbCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzIxODEyOiB0dXJ0bGUuc2hhcGV0cmFuc2Zvcm0gZGlkIG5vdCB0cmFuZm9ybSB0aGUgdHVydGxlIG9uIHRoZQotICBmaXJzdCBjYWxsLiAgKElzc3VlIGlkZW50aWZpZWQgYW5kIGZpeGVkIGJ5IExpdGEgQ2hvLikKLQotLSBJc3N1ZSAjMjE2MzU6ICBUaGUgZGlmZmxpYiBTZXF1ZW5jZU1hdGNoZXIuZ2V0X21hdGNoaW5nX2Jsb2NrcygpIG1ldGhvZAotICBjYWNoZSBkaWRuJ3QgbWF0Y2ggdGhlIGFjdHVhbCByZXN1bHQuICBUaGUgZm9ybWVyIHdhcyBhIGxpc3Qgb2YgdHVwbGVzCi0gIGFuZCB0aGUgbGF0dGVyIHdhcyBhIGxpc3Qgb2YgbmFtZWQgdHVwbGVzLgotCiAtIElzc3VlICMyMTcyMjogVGhlIGRpc3R1dGlscyAidXBsb2FkIiBjb21tYW5kIG5vdyBleGl0cyB3aXRoIGEgbm9uLXplcm8KICAgcmV0dXJuIGNvZGUgd2hlbiB1cGxvYWRpbmcgZmFpbHMuICBQYXRjaCBieSBNYXJ0aW4gRGVuZ2xlci4KIAogLSBJc3N1ZSAjMjE3MjM6IGFzeW5jaW8uUXVldWU6IHN1cHBvcnQgYW55IHR5cGUgb2YgbnVtYmVyIChleDogZmxvYXQpIGZvciB0aGUKICAgbWF4aW11bSBzaXplLiBQYXRjaCB3cml0dGVuIGJ5IFZhanJhc2t5IEtvay4KIAorLSBJc3N1ZSAjMjE3MTE6IHN1cHBvcnQgZm9yICJzaXRlLXB5dGhvbiIgZGlyZWN0b3JpZXMgaGFzIG5vdyBiZWVuIHJlbW92ZWQKKyAgZnJvbSB0aGUgc2l0ZSBtb2R1bGUgKGl0IHdhcyBkZXByZWNhdGVkIGluIDMuNCkuCisKKy0gSXNzdWUgIzE3NTUyOiBuZXcgc29ja2V0LnNlbmRmaWxlKCkgbWV0aG9kIGFsbG93aW5nIHRvIHNlbmQgYSBmaWxlIG92ZXIgYQorICBzb2NrZXQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZSBvcy5zZW5kZmlsZSgpIG9uIFVOSVguCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMxODAzOTogZGJtLmR1bXAub3BlbigpIG5vdyBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZQorICBmbGFnIGhhcyB0aGUgdmFsdWUgJ24nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMTMyNjogQWRkIGEgbmV3IGlzX2Nsb3NlZCgpIG1ldGhvZCB0byBhc3luY2lvLkJhc2VFdmVudExvb3AuCiAgIHJ1bl9mb3JldmVyKCkgYW5kIHJ1bl91bnRpbF9jb21wbGV0ZSgpIG1ldGhvZHMgb2YgYXN5bmNpby5CYXNlRXZlbnRMb29wIG5vdwogICByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGV2ZW50IGxvb3Agd2FzIGNsb3NlZC4KIAotLSBJc3N1ZSAjMjE3NzQ6IEZpeGVkIE5hbWVFcnJvciBmb3IgYW4gaW5jb3JyZWN0IHZhcmlhYmxlIHJlZmVyZW5jZSBpbiB0aGUKLSAgWE1MIE1pbmlkb20gY29kZSBmb3IgY3JlYXRpbmcgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCi0gIChGb3VuZCBhbmQgZml4ZWQgYnkgQ2xhdWRpdSBQb3BhLikKLQogLSBJc3N1ZSAjMjE3NjY6IFByZXZlbnQgYSBzZWN1cml0eSBob2xlIGluIENHSUhUVFBTZXJ2ZXIgYnkgVVJMIHVucXVvdGluZyBwYXRocwogICBiZWZvcmUgY2hlY2tpbmcgZm9yIGEgQ0dJIHNjcmlwdCBhdCB0aGF0IHBhdGguCiAKIC0gSXNzdWUgIzIxMzEwOiBGaXhlZCBwb3NzaWJsZSByZXNvdXJjZSBsZWFrIGluIGZhaWxlZCBvcGVuKCkuCiAKKy0gSXNzdWUgIzIxMjU2OiBQcmludG91dCBvZiBrZXl3b3JkIGFyZ3Mgc2hvdWxkIGJlIGluIGRldGVybWluaXN0aWMgb3JkZXIgaW4KKyAgYSBtb2NrIGZ1bmN0aW9uIGNhbGwuIFRoaXMgd2lsbCBoZWxwIHRvIHdyaXRlIGJldHRlciBkb2N0ZXN0cy4KKwogLSBJc3N1ZSAjMjE2Nzc6IEZpeGVkIGNoYWluaW5nIG5vbm5vcm1hbGl6ZWQgZXhjZXB0aW9ucyBpbiBpbyBjbG9zZSgpIG1ldGhvZHMuCiAKIC0gSXNzdWUgIzExNzA5OiBGaXggdGhlIHB5ZG9jLmhlbHAgZnVuY3Rpb24gdG8gbm90IGZhaWwgd2hlbiBzeXMuc3RkaW4gaXMgbm90IGEKICAgdmFsaWQgZmlsZS4KIAorLSBJc3N1ZSAjMjE1MTU6IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgbm93IHVzZXMgb3MuT19UTVBGSUxFIGZsYWcgaXMgYXZhaWxhYmxlLgorCiAtIElzc3VlICMxMzIyMzogRml4IHB5ZG9jLndyaXRlZG9jIHNvIHRoYXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgbWV0aG9kcwogICB0aGF0IHVzZSAnc2VsZicgaW4gdGhlIGV4YW1wbGUgY29kZSBpcyBnZW5lcmF0ZWQgY29ycmVjdGx5LgogCkBAIC0xMDM2LDYgKzE5NTksOSBAQAogICBsaW1pdHMgd291bGQgb3RoZXJ3aXNlIGFsbG93LiAgT24gc3lzdGVtcyB3aXRoIGEgZnVuY3Rpb25pbmcgL3Byb2Mvc2VsZi9mZAogICBvciAvZGV2L2ZkIGludGVyZmFjZSB0aGUgbWF4IGlzIG5vdyBpZ25vcmVkIGFuZCBhbGwgZmRzIGFyZSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMzgzOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYygpIGFzIHRoZSBwcmVmZXJyZWQgd2F5CisgIHRvIGNyZWF0ZSBhIG5ldyBtb2R1bGUuCisKIC0gSXNzdWUgIzIxNTUyOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IG9mIHRvbyBsb25nIHN0cmluZyBsZW5ndGhzIGluCiAgIHRoZSB0a2ludGVyIG1vZHVsZSBvbiA2NC1iaXQgcGxhdGZvcm1zLgogCkBAIC0xMDQ0LDggKzE5NzAsMTQgQEAKICAgZXJyb3IgYnViYmxlIHVwIGFzIHRoaXMgImJhZCBkYXRhIiBhcHBlYXJzIGluIG1hbnkgcmVhbCB3b3JsZCB6aXAgZmlsZXMgaW4KICAgdGhlIHdpbGQgYW5kIGlzIGlnbm9yZWQgYnkgb3RoZXIgemlwIHRvb2xzLgogCistIElzc3VlICMxMzc0MjogIEFkZGVkICJrZXkiIGFuZCAicmV2ZXJzZSIgcGFyYW1ldGVycyB0byBoZWFwcS5tZXJnZSgpLgorICAoRmlyc3QgZHJhZnQgb2YgcGF0Y2ggY29udHJpYnV0ZWQgYnkgU2ltb24gU2FwaW4uKQorCiAtIElzc3VlICMyMTQwMjogdGtpbnRlci50dGsgbm93IHdvcmtzIHdoZW4gZGVmYXVsdCByb290IHdpbmRvdyBpcyBub3Qgc2V0LgogCistIElzc3VlICMzMDE1OiBfdGtpbnRlci5jcmVhdGUoKSBub3cgY3JlYXRlcyB0a2FwcCBvYmplY3Qgd2l0aCB3YW50b2JqZWN0PTEgYnkKKyAgZGVmYXVsdC4KKwogLSBJc3N1ZSAjMTAyMDM6IHNxbGl0ZTMuUm93IG5vdyB0cnVseSBzdXBwb3J0cyBzZXF1ZW5jZSBwcm90b2NvbC4gIEluIHBhcnRpY3VscgogICBpdCBzdXBwb3J0cyByZXZlcnNlKCkgYW5kIG5lZ2F0aXZlIGluZGljZXMuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCiAKQEAgLTEwNTMsOTcgKzE5ODUsMjEgQEAKICAgaW50ZXJwcmV0ZXIgYWxpYXNlcyAocHl0aG9uLCBweXRob24zKSBhcmUgbm93IGNyZWF0ZWQgYnkgY29weWluZyByYXRoZXIgdGhhbgogICBzeW1saW5raW5nLgogCi0tIElzc3VlICMxNDcxMDogcGtndXRpbC5nZXRfbG9hZGVyKCkgbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBOb25lIGlzCi0gIGZvdW5kIGluIHN5cy5tb2R1bGVzLgorLSBJc3N1ZSAjMjAxOTc6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBXZWJQIGltYWdlIHR5cGUgaW4gdGhlIGltZ2hkciBtb2R1bGUuCisgIFBhdGNoIGJ5IEZhYnJpY2UgQW5lY2hlIGFuZCBDbGF1ZGl1IFBvcGEuCiAKLS0gSXNzdWUgIzE0NzEwOiBwa2d1dGlsLmZpbmRfbG9hZGVyKCkgbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBhCi0gIG1vZHVsZSBkb2Vzbid0IGV4aXN0LgorLSBJc3N1ZSAjMjE1MTM6IFNwZWVkdXAgc29tZSBwcm9wZXJ0aWVzIG9mIElQIGFkZHJlc3NlcyAoSVB2NEFkZHJlc3MsCisgIElQdjZBZGRyZXNzKSBzdWNoIGFzIC5pc19wcml2YXRlIG9yIC5pc19tdWx0aWNhc3QuCiAKLS0gSXNzdWUgIzIxNDgxOiAgQXJncGFyc2UgZXF1YWxpdHkgYW5kIGluZXF1YWxpdHkgdGVzdHMgbm93IHJldHVybgotICBOb3RJbXBsZW1lbnRlZCB3aGVuIGNvbXBhcmluZyB0byBhbiB1bmtub3duIHR5cGUuCi0KLS0gSXNzdWUgIzg3NDM6IEZpeCBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gc2V0IG9iamVjdHMgYW5kIHRoZQotICBjb2xsZWN0aW9ucy5TZXQoKSBhYnN0cmFjdCBiYXNlIGNsYXNzLgotCi0tIElzc3VlICMxMzM1NTogcmFuZG9tLnRyaWFuZ3VsYXIoKSBubyBsb25nZXIgZmFpbHMgd2l0aCBhIFplcm9EaXZpc2lvbkVycm9yCi0gIHdoZW4gbG93IGVxdWFscyBoaWdoLgorLSBJc3N1ZSAjMjExMzc6IEltcHJvdmUgdGhlIHJlcHIgZm9yIHRocmVhZGluZy5Mb2NrKCkgYW5kIGl0cyB2YXJpYW50cworICBieSBzaG93aW5nIHRoZSAibG9ja2VkIiBvciAidW5sb2NrZWQiIHN0YXR1cy4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKIC0gSXNzdWUgIzIxNTM4OiBUaGUgcGxpc3RsaWIgbW9kdWxlIG5vdyBzdXBwb3J0cyBsb2FkaW5nIG9mIGJpbmFyeSBwbGlzdCBmaWxlcwogICB3aGVuIHJlZmVyZW5jZSBvciBvZmZzZXQgc2l6ZSBpcyBub3QgYSBwb3dlciBvZiB0d28uCiAKLS0gSXNzdWUgIzIxODAxOiBWYWxpZGF0ZSB0aGF0IF9fc2lnbmF0dXJlX18gaXMgTm9uZSBvciBhbiBpbnN0YW5jZSBvZiBTaWduYXR1cmUuCistIElzc3VlICMyMTQ1NTogQWRkIGEgZGVmYXVsdCBiYWNrbG9nIHRvIHNvY2tldC5saXN0ZW4oKS4KIAotLSBJc3N1ZSAjMjE5MjM6IFByZXZlbnQgQXR0cmlidXRlRXJyb3IgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIKLSAgZHVlIHRvIHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQgX2NvbmZpZ192YXJzLgotCi0tIElzc3VlICMyMTMyMzogRml4IGh0dHAuc2VydmVyIHRvIGFnYWluIGhhbmRsZSBzY3JpcHRzIGluIENHSSBzdWJkaXJlY3RvcmllcywKLSAgYnJva2VuIGJ5IHRoZSBmaXggZm9yIHNlY3VyaXR5IGlzc3VlICMxOTQzNS4gIFBhdGNoIGJ5IFphY2ggQnlybmUuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjE3NjogVXBkYXRlIHRoZSBjdHlwZXMgbW9kdWxlJ3MgbGliZmZpIHRvIHYzLjEuICBUaGlzIHJlbGVhc2UKLSAgYWRkcyBzdXBwb3J0IGZvciB0aGUgTGludXggQUFyY2g2NCBhbmQgUE9XRVJQQyBFTEYgQUJJdjIgbGl0dGxlIGVuZGlhbgotICBhcmNoaXRlY3R1cmVzLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU2NjE6IHB5dGhvbi5vcmcgT1MgWCBpbnN0YWxsZXJzIGFyZSBub3cgZGlzdHJpYnV0ZWQgYXMgc2lnbmVkCi0gIGluc3RhbGxlciBwYWNrYWdlcyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZS4KLQotLSBJc3N1ZSAjMjE5NTg6IERlZmluZSBIQVZFX1JPVU5EIHdoZW4gYnVpbGRpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTMgYW5kCi0gIGFib3ZlLiAgUGF0Y2ggYnkgWmFjaGFyeSBUdXJuZXIuCi0KLS0gSXNzdWUgIzE1NzU5OiAibWFrZSBzdXNwaWNpb3VzIiwgIm1ha2UgbGlua2NoZWNrIiBhbmQgIm1ha2UgZG9jdGVzdCIgaW4gRG9jLwotICBub3cgZGlzcGxheSBzcGVjaWFsIG1lc3NhZ2Ugd2hlbiBhbmQgb25seSB3aGVuIHRoZXJlIGFyZSBmYWlsdXJlcy4KLQotLSBJc3N1ZSAjMTcwOTU6IEZpeCBNb2R1bGVzL1NldHVwICpzaGFyZWQqIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzIxODExOiBBbnRpY2lwYXRlZCBmaXhlcyB0byBzdXBwb3J0IE9TIFggdmVyc2lvbnMgPiAxMC45LgotCi0tIElzc3VlICMyMTE2NjogUHJldmVudCBwb3NzaWJsZSBzZWdmYXVsdHMgYW5kIG90aGVyIHJhbmRvbSBmYWlsdXJlcyBvZgotICBweXRob24gLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHB5YnVpbGRkaXIudHh0IGJ1aWxkIHRhcmdldC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNzM5MDogQWRqdXN0IEVkaXRvciB3aW5kb3cgdGl0bGU7IHJlbW92ZSAnUHl0aG9uJywKLSAgbW92ZSB2ZXJzaW9uIHRvIGVuZC4KLQotLSBJc3N1ZSAjMTQxMDU6IElkbGUgZGVidWdnZXIgYnJlYWtwb2ludHMgbm8gbG9uZ2VyIGRpc2FwcGVhcgotICB3aGVuIGluc2V0aW5nIG9yIGRlbGV0aW5nIGxpbmVzLgotCi0tIElzc3VlICMxNzE3MjogVHVydGxlZGVtbyBjYW4gbm93IGJlIHJ1biBmcm9tIElkbGUuCi0gIEN1cnJlbnRseSwgdGhlIGVudHJ5IGlzIG9uIHRoZSBIZWxwIG1lbnUsIGJ1dCBpdCBtYXkgbW92ZSB0byBSdW4uCi0gIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0IGFuZCBMaXRhIENoby4KLQotLSBJc3N1ZSAjMjE3NjU6IEFkZCBzdXBwb3J0IGZvciBub24tYXNjaWkgaWRlbnRpZmllcnMgdG8gSHlwZXJQYXJzZXIuCi0KLS0gSXNzdWUgIzIxOTQwOiBBZGQgdW5pdHRlc3QgZm9yIFdpZGdldFJlZGlyZWN0b3IuIEluaXRpYWwgcGF0Y2ggYnkgU2FpbWFkaGF2Ci0gIEhlYmxpa2FyLgotCi0tIElzc3VlICMxODU5MjogQWRkIHVuaXR0ZXN0IGZvciBTZWFyY2hEaWFsb2dCYXNlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzIxNjk0OiBBZGQgdW5pdHRlc3QgZm9yIFBhcmVuTWF0Y2guIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMjE2ODY6IGFkZCB1bml0dGVzdCBmb3IgSHlwZXJQYXJzZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdgotICBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTIzODc6IEFkZCBtaXNzaW5nIHVwcGVyKGxvd2VyKWNhc2UgdmVyc2lvbnMgb2YgZGVmYXVsdCBXaW5kb3dzIGtleQotICBiaW5kaW5ncyBmb3IgSWRsZSBzbyBDYXBzIExvY2sgZG9lcyBub3QgZGlzYWJsZSB0aGVtLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMjE2OTU6IENsb3NpbmcgYSBGaW5kLWluLWZpbGVzIG91dHB1dCB3aW5kb3cgd2hpbGUgdGhlIHNlYXJjaCBpcwotICBzdGlsbCBpbiBwcm9ncmVzcyBubyBsb25nZXIgY2xvc2VzIElkbGUuCi0KLS0gSXNzdWUgIzE4OTEwOiBBZGQgdW5pdHRlc3QgZm9yIHRleHRWaWV3LiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzE4MjkyOiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9FeHBhbmQuIFBhdGNoIGJ5IFNhaWhhZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg0MDk6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0NvbXBsZXRlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMjE1MjU6IE1vc3QgVGtpbnRlciBtZXRob2RzIHdoaWNoIGFjY2VwdGVkIHR1cGxlcyBub3cgYWNjZXB0IGxpc3RzIHRvby4KIAogLSBJc3N1ZSAjMjIxNjY6ICB3aXRoIHRoZSBhc3Npc3RhbmNlIG9mIGEgbmV3IGludGVybmFsIF9jb2RlY3MuX2ZvcmdldF9jb2RlYwogICBoZWxwaW5nIGZ1bmN0aW9uLCB0ZXN0X2NvZGVjcyBub3cgY2xlYXJzIHRoZSBlbmNvZGluZyBjYWNoZXMgdG8gYXZvaWQgdGhlCkBAIC0xMTUyLDE4MSArMjAwOCw5MyBAQAogLSBJc3N1ZSAjMjIyMzY6IFRraW50ZXIgdGVzdHMgbm93IGRvbid0IHJldXNlIGRlZmF1bHQgcm9vdCB3aW5kb3cuICBOZXcgcm9vdAogICB3aW5kb3cgaXMgY3JlYXRlZCBmb3IgZXZlcnkgdGVzdCBjbGFzcy4KIAotLSBJc3N1ZSAjMjA3NDY6IEZpeCB0ZXN0X3BkYiB0byBydW4gaW4gcmVmbGVhayBtb2RlICgtUikuICBQYXRjaCBieSBYYXZpZXIKLSAgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMjIwNjA6IHRlc3RfY3R5cGVzIGhhcyBiZWVuIHNvbWV3aGF0IGNsZWFuZWQgdXAgYW5kIHNpbXBsaWZpZWQ7IGl0Ci0gIG5vdyB1c2VzIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHRvIGZpbmQgaXRzIHRlc3RzLgotCi0tIElzc3VlICMyMjEwNDogcmVncnRlc3QucHkgbm8gbG9uZ2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBzdWl0ZSBvZiB0ZXN0cwotICBsb2FkZWQgZnJvbSB0ZXN0IG1vZHVsZXMgdGhhdCBkb24ndCBkZWZpbmUgdGVzdF9tYWluKCkuCi0KLS0gSXNzdWUgIzIyMDAyOiBBZGRlZCBgYGxvYWRfcGFja2FnZV90ZXN0c2BgIGZ1bmN0aW9uIHRvIHRlc3Quc3VwcG9ydCBhbmQgdXNlZAotICBpdCB0byBpbXBsZW1lbnQvYXVnbWVudCB0ZXN0IGRpc2NvdmVyeSBpbiB0ZXN0X2FzeW5jaW8sIHRlc3RfZW1haWwsCi0gIHRlc3RfaW1wb3J0bGliLCB0ZXN0X2pzb24sIGFuZCB0ZXN0X3Rvb2xzLgotCi0tIElzc3VlICMyMTk3NjogRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MKLSAgdG8gV2lsbGlhbSBPcnIuCi0KLS0gSXNzdWUgIzIxOTE4OiBDb252ZXJ0ZWQgdGVzdF90b29scyBmcm9tIGEgbW9kdWxlIHRvIGEgcGFja2FnZSBjb250YWluaW5nCi0gIHNlcGFyYXRlIHRlc3QgZmlsZXMgZm9yIGVhY2ggdGVzdGVkIHNjcmlwdC4KLQotLSBJc3N1ZSAjMjAxNTU6IENoYW5nZWQgSFRUUCBtZXRob2QgbmFtZXMgaW4gZmFpbGluZyB0ZXN0cyBpbiB0ZXN0X2h0dHBzZXJ2ZXJzCi0gIHNvIHRoYXQgcGFja2V0IGZpbHRlcmluZyBzb2Z0d2FyZSAoc3BlY2lmaWNhbGx5IFdpbmRvd3MgQmFzZSBGaWx0ZXJpbmcgRW5naW5lKQotICBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgdHJhbnNhY3Rpb24gc2VtYW50aWNzIGV4cGVjdGVkIGJ5IHRoZSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTk0OTM6IFJlZmFjdG9yZWQgdGhlIGN0eXBlcyB0ZXN0IHBhY2thZ2UgdG8gc2tpcCB0ZXN0cyBleHBsaWNpdGx5Ci0gIHJhdGhlciB0aGFuIHNpbGVudGx5LgotCi0tIElzc3VlICMxODQ5MjogQWxsIHJlc291cmNlcyBhcmUgbm93IGFsbG93ZWQgd2hlbiB0ZXN0cyBhcmUgbm90IHJ1biBieQotICByZWdydGVzdC5weS4KLQotLSBJc3N1ZSAjMjE2MzQ6IEZpeCBweXN0b25lIG1pY3JvLWJlbmNobWFyazogdXNlIGZsb29yIGRpdmlzaW9uIGluc3RlYWQgb2YgdHJ1ZQotICBkaXZpc2lvbiB0byBiZW5jaG1hcmsgaW50ZWdlcnMgaW5zdGVhZCBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBTZXQgcHlzdG9uZQotICB2ZXJzaW9uIHRvIDEuMi4gUGF0Y2ggd3JpdHRlbiBieSBMZW5uYXJ0IFJlZ2Vicm8uCi0KLS0gSXNzdWUgIzIxNjA1OiBBZGRlZCB0ZXN0cyBmb3IgVGtpbnRlciBpbWFnZXMuCi0KLS0gSXNzdWUgIzIxNDkzOiBBZGRlZCB0ZXN0IGZvciBudHBhdGguZXhwYW5kdXNlcigpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMxOTkyNTogQWRkZWQgdGVzdHMgZm9yIHRoZSBzcHdkIG1vZHVsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgotCi0tIElzc3VlICMyMTUyMjogQWRkZWQgVGtpbnRlciB0ZXN0cyBmb3IgTGlzdGJveC5pdGVtY29uZmlndXJlKCksCi0gIFBhbmVkV2luZG93LnBhbmVjb25maWd1cmUoKSwgYW5kIE1lbnUuZW50cnljb25maWd1cmUoKS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTc3NzogVGhlIGJpbmFyeSBzZXF1ZW5jZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgYXJlIG5vdwotICBkb2N1bWVudGVkIGV4cGxpY2l0bHksIHJhdGhlciB0aGFuIGFzc3VtaW5nIHVzZXJzIHdpbGwgYmUgYWJsZSB0byBkZXJpdmUKLSAgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBmcm9tIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc3RyIG1ldGhvZHMuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjE2NzEsICMyMjE2MCwgQ1ZFLTIwMTQtMDIyNDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuCi0gIHVwZGF0ZWQgdG8gMS4wLjFpLgotCi0tIElzc3VlICMxMDc0NzogVXNlIHZlcnNpb25lZCBsYWJlbHMgaW4gdGhlIFdpbmRvd3Mgc3RhcnQgbWVudS4KLSAgUGF0Y2ggYnkgT2xpdmUgS2lsYnVybi4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMjAxOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSB6aXBmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5Ci0gIGV4dHJhY3RzIFpJUCBmaWxlcyB3aXRoIGRpcmVjdG9yeSBlbnRyaWVzLiAgUGF0Y2ggYnkgUnlhbiBXaWxzb24uCi0KLS0gSXNzdWUgIzIxOTA2OiBNYWtlIFRvb2xzL3NjcmlwdHMvbWQ1c3VtLnB5IHdvcmsgaW4gUHl0aG9uIDMuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMjE2Mjk6IEZpeCBBcmd1bWVudCBDbGluaWMncyAiLS1jb252ZXJ0ZXJzIiBmZWF0dXJlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0wNS0xOAotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjE0MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBidWlsdGluIGZ1bmN0aW9uIHN1cGVyKCkgd2hlbiBjYWxsZWQgd2l0aG91dAotICBhcmd1bWVudCBhbmQgd2l0aG91dCBjdXJyZW50IGZyYW1lIChleDogZW1iZWRkZWQgUHl0aG9uKS4KLQotLSBJc3N1ZSAjMjE0MjU6IEZpeCBmbHVzaGluZyBvZiBzdGFuZGFyZCBzdHJlYW1zIGluIHRoZSBpbnRlcmFjdGl2ZQotICBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMjE0MzU6IEluIHJhcmUgY2FzZXMsIHdoZW4gcnVubmluZyBmaW5hbGl6ZXJzIG9uIG9iamVjdHMgaW4gY3ljbGljCi0gIHRyYXNoIGEgYmFkIHBvaW50ZXIgZGVyZWZlcmVuY2UgY291bGQgb2NjdXIgZHVlIHRvIGEgc3VidGxlIGZsYXcgaW4KLSAgaW50ZXJuYWwgaXRlcmF0aW9uIGxvZ2ljLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KIC0gSXNzdWUgIzEwNzQ0OiBGaXggUEVQIDMxMTggZm9ybWF0IHN0cmluZ3Mgb24gY3R5cGVzIG9iamVjdHMgd2l0aCBhIG5vbnRyaXZpYWwKICAgc2hhcGUuCiAKKy0gSXNzdWUgIzIwODI2OiBPcHRpbWl6ZSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKCkuCisKKy0gSXNzdWUgIzIxNDg3OiBPcHRpbWl6ZSBpcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoKSBhbmQKKyAgaXBhZGRyZXNzLntJUHY0TmV0d29yayxJUHY2TmV0d29ya30uc3VibmV0cygpLgorCistIElzc3VlICMyMTQ4NjogT3B0aW1pemUgcGFyc2luZyBvZiBuZXRtYXNrcyBpbiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsgYW5kCisgIGlwYWRkcmVzcy5JUHY2TmV0d29yay4KKworLSBJc3N1ZSAjMTM5MTY6IERpc2FsbG93ZWQgdGhlIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciBmb3Igbm9uIFVURi0qCisgIGVuY29kaW5ncy4KKwogLSBJc3N1ZSAjMjA5OTg6IEZpeGVkIHJlLmZ1bGxtYXRjaCgpIG9mIHJlcGVhdGVkIHNpbmdsZSBjaGFyYWN0ZXIgcGF0dGVybgogICB3aXRoIGlnbm9yZSBjYXNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgogCiAtIElzc3VlICMyMTA3NTogZmlsZWlucHV0LkZpbGVJbnB1dCBub3cgcmVhZHMgYnl0ZXMgZnJvbSBzdGFuZGFyZCBzdHJlYW0gaWYKICAgYmluYXJ5IG1vZGUgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgU2FtIEtpbWJyZWwuCiAKLS0gSXNzdWUgIzIxMzk2OiBGaXggVGV4dElPV3JhcHBlciguLi4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkgdG8gbm90IGZvcmNlIGEKLSAgZmx1c2goKSBvbiB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtLiAgUGF0Y2ggYnkgYWtpcmEuCistIElzc3VlICMxOTc3NTogQWRkIGEgc2FtZWZpbGUoKSBtZXRob2QgdG8gcGF0aGxpYiBQYXRoIG9iamVjdHMuICBJbml0aWFsCisgIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjE0NzA6IERvIGEgYmV0dGVyIGpvYiBzZWVkaW5nIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBieQotICB1c2luZyBlbm91Z2ggYnl0ZXMgdG8gc3BhbiB0aGUgZnVsbCBzdGF0ZSBzcGFjZSBvZiB0aGUgTWVyc2VubmUgVHdpc3Rlci4KKy0gSXNzdWUgIzIxMjI2OiBTZXQgdXAgbW9kdWxlcyBwcm9wZXJseSBpbiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdAorICAoYW5kIGZyaWVuZHMpLgogCiAtIElzc3VlICMyMTM5ODogRml4IGFuIHVuaWNvZGUgZXJyb3IgaW4gdGhlIHB5ZG9jIHBhZ2VyIHdoZW4gdGhlIGRvY3VtZW50YXRpb24KICAgY29udGFpbnMgY2hhcmFjdGVycyBub3QgZW5jb2RhYmxlIHRvIHRoZSBzdGRvdXQgZW5jb2RpbmcuCiAKLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMTY1MzE6IGlwYWRkcmVzcy5JUHY0TmV0d29yayBhbmQgaXBhZGRyZXNzLklQdjZOZXR3b3JrIG5vdyBhY2NlcHQKKyAgYW4gKGFkZHJlc3MsIG5ldG1hc2spIHR1cGxlIGFyZ3VtZW50LCBzbyBhcyB0byBlYXNpbHkgY29uc3RydWN0IG5ldHdvcmsKKyAgb2JqZWN0cyBmcm9tIGV4aXN0aW5nIGFkZHJlc3Nlcy4KIAotLSBJc3N1ZSAjMTc3NTY6IEZpeCB0ZXN0X2NvZGUgdGVzdCB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCistIElzc3VlICMyMTE1NjogaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLnNvdXJjZV90b19jb2RlKCkgaXMgbm93IGEKKyAgc3RhdGljbWV0aG9kLgogCi0tIElzc3VlICMxNzc1MjogRml4IGRpc3R1dGlscyB0ZXN0cyB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCistIElzc3VlICMyMTQyNDogU2ltcGxpZmllZCBhbmQgb3B0aW1pemVkIGhlYXFwLm5sYXJnZXN0KCkgYW5kIG5tc21hbGxlc3QoKQorICB0byBtYWtlIGZld2VyIHR1cGxlIGNvbXBhcmlzb25zLgogCi1JRExFCi0tLS0tCistIElzc3VlICMyMTM5NjogRml4IFRleHRJT1dyYXBwZXIoLi4uLCB3cml0ZV90aHJvdWdoPVRydWUpIHRvIG5vdCBmb3JjZSBhCisgIGZsdXNoKCkgb24gdGhlIHVuZGVybHlpbmcgYmluYXJ5IHN0cmVhbS4gIFBhdGNoIGJ5IGFraXJhLgogCi0tIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCi0gIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCi0gIGFzIG5lZWRlZCB0byB3b3JrIHdpdGggaHRlc3QuICBSdW5uaW5nIHRoZSBtb2R1bGUgYXMgX19tYWluX18gcnVucyBhbGwgdGVzdHMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjFyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTA1LTA1Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTI3NDogRGVmaW5lIFBBVEhfTUFYIGZvciBHTlUvSHVyZCBpbiBQeXRob24vcHl0aG9ucnVuLmMuCi0KLS0gSXNzdWUgIzIxMjA5OiBGaXggc2VuZGluZyB0dXBsZXMgdG8gY3VzdG9tIGdlbmVyYXRvciBvYmplY3RzIHdpdGggdGhlIHlpZWxkCi0gIGZyb20gc3ludGF4LgotCi0tIElzc3VlICMyMTEzNDogRml4IHNlZ2ZhdWx0IHdoZW4gc3RyIGlzIGNhbGxlZCBvbiBhbiB1bmluaXRpYWxpemVkCi0gIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBvciBVbmljb2RlVHJhbnNsYXRlRXJyb3Igb2JqZWN0LgotCi0tIElzc3VlICMxOTUzNzogRml4IFB5VW5pY29kZV9EQVRBKCkgYWxpZ25tZW50IHVuZGVyIG02OGsuICBQYXRjaCBieQotICBBbmRyZWFzIFNjaHdhYi4KLQotLSBJc3N1ZSAjMjA5Mjk6IEFkZCBhIHR5cGUgY2FzdCB0byBhdm9pZCBzaGlmdGluZyBhIG5lZ2F0aXZlIG51bWJlci4KLQotLSBJc3N1ZSAjMjA3MzE6IFByb3Blcmx5IHBvc2l0aW9uIGluIHNvdXJjZSBjb2RlIGZpbGVzIGV2ZW4gaWYgdGhleQotICBhcmUgb3BlbmVkIGluIHRleHQgbW9kZS4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMjA2Mzc6IEtleS1zaGFyaW5nIG5vdyBhbHNvIHdvcmtzIGZvciBpbnN0YW5jZSBkaWN0aW9uYXJpZXMgb2YKLSAgc3ViY2xhc3Nlcy4gIFBhdGNoIGJ5IFBldGVyIEluZ2VicmV0c29uLgotCi0tIElzc3VlICMxMjU0NjogQWxsb3cgXHgwMCB0byBiZSB1c2VkIGFzIGEgZmlsbCBjaGFyYWN0ZXIgd2hlbiB1c2luZyBzdHIsIGludCwKLSAgZmxvYXQsIGFuZCBjb21wbGV4IF9fZm9ybWF0X18gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKLSAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCi0gIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTgzMTQ6IFVubGluayBub3cgcmVtb3ZlcyBqdW5jdGlvbnMgb24gV2luZG93cy4gUGF0Y2ggYnkgS2ltIEdyw6RzbWFuCiAKIC0gSXNzdWUgIzIxMDg4OiBCdWdmaXggZm9yIGN1cnNlcy53aW5kb3cuYWRkY2goKSByZWdyZXNzaW9uIGluIDMuNC4wLgogICBJbiBwb3J0aW5nIHRvIEFyZ3VtZW50IENsaW5pYywgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgd2VyZSByZXZlcnNlZC4KIAorLSBJc3N1ZSAjMjE0MDc6IF9kZWNpbWFsOiBUaGUgbW9kdWxlIG5vdyBzdXBwb3J0cyBmdW5jdGlvbiBzaWduYXR1cmVzLgorCistIElzc3VlICMxMDY1MDogUmVtb3ZlIHRoZSBub24tc3RhbmRhcmQgJ3dhdGNoZXhwJyBwYXJhbWV0ZXIgZnJvbSB0aGUKKyAgRGVjaW1hbC5xdWFudGl6ZSgpIG1ldGhvZCBpbiB0aGUgUHl0aG9uIHZlcnNpb24uICBJdCBoYWQgbmV2ZXIgYmVlbgorICBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uCisKIC0gSXNzdWUgIzIxNDY5OiAgUmVkdWNlZCB0aGUgcmlzayBvZiBmYWxzZSBwb3NpdGl2ZXMgaW4gcm9ib3RwYXJzZXIgYnkKICAgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIHRoYXQgcm9ib3RzLnR4dCBoYXMgYmVlbiByZWFkIG9yIGRvZXMgbm90IGV4aXN0CiAgIHByaW9yIHRvIHJldHVybmluZyBUcnVlIGluIGNhbl9mZXRjaCgpLgogCistIElzc3VlICMxOTQxNDogSGF2ZSB0aGUgT3JkZXJlZERpY3QgbWFyayBkZWxldGVkIGxpbmtzIGFzIHVudXNhYmxlLgorICBUaGlzIGdpdmVzIGFuIGVhcmx5IGZhaWx1cmUgaWYgdGhlIGxpbmsgaXMgZGVsZXRlZCBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICMyMTQyMTogQWRkIF9fc2xvdHNfXyB0byB0aGUgTWFwcGluZ1ZpZXdzIEFCQy4KKyAgUGF0Y2ggYnkgSm9zaCBSb3NlbmJlcmcuCisKKy0gSXNzdWUgIzIxMTAxOiBFbGltaW5hdGUgZG91YmxlIGhhc2hpbmcgaW4gdGhlIEMgc3BlZWQtdXAgY29kZSBmb3IKKyAgY29sbGVjdGlvbnMuQ291bnRlcigpLgorCiAtIElzc3VlICMyMTMyMTogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyByZWxlYXNlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzb3VyY2UKICAgaXRlcmF0b3Igd2hlbiB0aGUgc2xpY2UgaXMgZXhoYXVzdGVkLiAgUGF0Y2ggYnkgQW50b24gQWZhbmFzeWV2LgogCistIElzc3VlICMyMTA1NzogVGV4dElPV3JhcHBlciBub3cgYWxsb3dzIHRoZSB1bmRlcmx5aW5nIGJpbmFyeSBzdHJlYW0ncworICByZWFkKCkgb3IgcmVhZDEoKSBtZXRob2QgdG8gcmV0dXJuIGFuIGFyYml0cmFyeSBieXRlcy1saWtlIG9iamVjdAorICAoc3VjaCBhcyBhIG1lbW9yeXZpZXcpLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMjA5NTE6IFNTTFNvY2tldC5zZW5kKCkgbm93IHJhaXNlcyBlaXRoZXIgU1NMV2FudFJlYWRFcnJvciBvcgorICBTU0xXYW50V3JpdGVFcnJvciBvbiBhIG5vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbiB3b3VsZCBibG9jay4KKyAgUHJldmlvdXNseSwgaXQgd291bGQgcmV0dXJuIDAuICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMxMzI0ODogcmVtb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgYXN5bmNvcmUuZGlzcGF0Y2hlciBfX2dldGF0dHJfXworICBjaGVhcCBpbmhlcml0YW5jZSBoYWNrLgorCiAtIElzc3VlICM5ODE1OiBhc3NlcnRSYWlzZXMgbm93IHRyaWVzIHRvIGNsZWFyIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzCiAgIGluIHRoZSBleGNlcHRpb24ncyB0cmFjZWJhY2suCiAKKy0gSXNzdWUgIzE5OTQwOiBzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoKSBub3cgaW50ZXJwcmV0cyB0aGUgZ2l2ZW4gdGltZQorICBzdHJpbmcgaW4gdGhlIFVUQyB0aW1lem9uZSAoYXMgc3BlY2lmaWVkIGluIFJGQyA1MjgwKSwgbm90IHRoZSBsb2NhbAorICB0aW1lem9uZS4KKwogLSBJc3N1ZSAjMTMyMDQ6IENhbGxpbmcgc3lzLmZsYWdzLl9fbmV3X18gd291bGQgY3Jhc2ggdGhlIGludGVycHJldGVyLAogICBub3cgaXQgcmFpc2VzIGEgVHlwZUVycm9yLgogCkBAIC0xMzUwLDkgKzIxMTgsMjUgQEAKIC0gSXNzdWUgIzEyMjIwOiBtaW5kb20gbm93IHJhaXNlcyBhIGN1c3RvbSBWYWx1ZUVycm9yIGluZGljYXRpbmcgaXQgZG9lc24ndAogICBzdXBwb3J0IHNwYWNlcyBpbiBVUklzIGluc3RlYWQgb2YgbGV0dGluZyBhICdzcGxpdCcgVmFsdWVFcnJvciBidWJibGUgdXAuCiAKKy0gSXNzdWUgIzIxMDY4OiBUaGUgc3NsLlBST1RPQ09MKiBjb25zdGFudHMgYXJlIG5vdyBlbnVtIG1lbWJlcnMuCisKKy0gSXNzdWUgIzIxMjc2OiBwb3NpeG1vZHVsZTogRG9uJ3QgZGVmaW5lIFVTRV9YQVRUUlMgb24gS0ZyZWVCU0QgYW5kIHRoZSBIdXJkLgorCistIElzc3VlICMyMTI2MjogTmV3IG1ldGhvZCBhc3NlcnRfbm90X2NhbGxlZCBmb3IgTW9jay4KKyAgSXQgcmFpc2VzIEFzc2VydGlvbkVycm9yIGlmIHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZC4KKworLSBJc3N1ZSAjMjEyMzg6IE5ldyBrZXl3b3JkIGFyZ3VtZW50IGB1bnNhZmVgIHRvIE1vY2suIEl0IHJhaXNlcworICBgQXR0cmlidXRlRXJyb3JgIGluY2FzZSBvZiBhbiBhdHRyaWJ1dGUgc3RhcnRzd2l0aCBhc3NlcnQgb3IgYXNzcmV0LgorCistIElzc3VlICMyMDg5Njogc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKSBub3cgdXNlcyBQUk9UT0NPTF9TU0x2MjMsIG5vdAorICBQUk9UT0NPTF9TU0x2MywgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eS4KKwogLSBJc3N1ZSAjMjEyMzk6IHBhdGNoLnN0b3BhbGwoKSBkaWRuJ3Qgd29yayBkZXRlcm1pbmlzdGljYWxseSB3aGVuIHRoZSBzYW1lCiAgIG5hbWUgd2FzIHBhdGNoZWQgbW9yZSB0aGFuIG9uY2UuCiAKKy0gSXNzdWUgIzIxMjAzOiBVcGRhdGVkIGZpbGVDb25maWcgYW5kIGRpY3RDb25maWcgdG8gcmVtb3ZlIGluY29uc2lzdGVuY2llcy4KKyAgVGhhbmtzIHRvIEp1cmUgS29yZW4gZm9yIHRoZSBwYXRjaC4KKwogLSBJc3N1ZSAjMjEyMjI6IFBhc3NpbmcgbmFtZSBrZXl3b3JkIGFyZ3VtZW50IHRvIG1vY2suY3JlYXRlX2F1dG9zcGVjIG5vdwogICB3b3Jrcy4KIApAQCAtMTM4MiwxNyArMjE2NiwzMSBAQAogLSBJc3N1ZSAjMjExNzE6IEZpeGVkIHVuZG9jdW1lbnRlZCBmaWx0ZXIgQVBJIG9mIHRoZSByb3QxMyBjb2RlYy4KICAgUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KIAorLSBJc3N1ZSAjMjA1Mzk6IEltcHJvdmVkIG1hdGguZmFjdG9yaWFsIGVycm9yIG1lc3NhZ2UgZm9yIGxhcmdlIHBvc2l0aXZlIGlucHV0cworICBhbmQgY2hhbmdlZCBleGNlcHRpb24gdHlwZSAoT3ZlcmZsb3dFcnJvciAtPiBWYWx1ZUVycm9yKSBmb3IgbGFyZ2UgbmVnYXRpdmUKKyAgaW5wdXRzLgorCiAtIElzc3VlICMyMTE3MjogaXNpbnN0YW5jZSBjaGVjayByZWxheGVkIGZyb20gZGljdCB0byBjb2xsZWN0aW9ucy5NYXBwaW5nLgogCiAtIElzc3VlICMyMTE1NTogYXN5bmNpby5FdmVudExvb3AuY3JlYXRlX3VuaXhfc2VydmVyKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IKICAgaWYgcGF0aCBhbmQgc29jayBhcmUgc3BlY2lmaWVkIGF0IHRoZSBzYW1lIHRpbWUuCiAKKy0gSXNzdWUgIzIxMTM2OiBBdm9pZCB1bm5lY2Vzc2FyeSBub3JtYWxpemF0aW9uIG9mIEZyYWN0aW9ucyByZXN1bHRpbmcgZnJvbQorICBwb3dlciBhbmQgb3RoZXIgb3BlcmF0aW9ucy4gIFBhdGNoIGJ5IFJheW1vbmQgSGV0dGluZ2VyLgorCistIElzc3VlICMxNzYyMTogSW50cm9kdWNlIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuCisKKy0gSXNzdWUgIzIxMDc2OiBzaWduYWwgbW9kdWxlIGNvbnN0YW50cyB3ZXJlIHR1cm5lZCBpbnRvIGVudW1zLgorICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLSBJc3N1ZSAjMjA2MzY6IEltcHJvdmVkIHRoZSByZXByIG9mIFRraW50ZXIgd2lkZ2V0cy4KKworLSBJc3N1ZSAjMTk1MDU6IFRoZSBpdGVtcywga2V5cywgYW5kIHZhbHVlcyB2aWV3cyBvZiBPcmRlcmVkRGljdCBub3cgc3VwcG9ydAorICByZXZlcnNlIGl0ZXJhdGlvbiB1c2luZyByZXZlcnNlZCgpLgorCiAtIElzc3VlICMyMTE0OTogSW1wcm92ZWQgdGhyZWFkLXNhZmV0eSBpbiBsb2dnaW5nIGNsZWFudXAgZHVyaW5nIGludGVycHJldGVyCiAgIHNodXRkb3duLiBUaGFua3MgdG8gRGV2aW4gSmVhbnBpZXJyZSBmb3IgdGhlIHBhdGNoLgogCi0tIElzc3VlICMyMDE0NTogYGFzc2VydFJhaXNlc1JlZ2V4YCBhbmQgYGFzc2VydFdhcm5zUmVnZXhgIG5vdyByYWlzZSBhCi0gIFR5cGVFcnJvciBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhIHN0cmluZyBvciBjb21waWxlZCByZWdleC4KLQogLSBJc3N1ZSAjMjEwNTg6IEZpeCBhIGxlYWsgb2YgZmlsZSBkZXNjcmlwdG9yIGluCiAgIDpmdW5jOmB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGVgLCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlmCiAgIDpmdW5jOmBpby5vcGVuYCBmYWlscwpAQCAtMTQwMiw2ICsyMjAwLDkgQEAKIC0gSXNzdWUgIzIxMDEzOiBFbmhhbmNlIHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkgd2hlbiB1c2VkIGZvciBzZXJ2ZXIgc2lkZQogICBzb2NrZXRzIHRvIHByb3ZpZGUgYmV0dGVyIHNlY3VyaXR5IGJ5IGRlZmF1bHQuCiAKKy0gSXNzdWUgIzIwMTQ1OiBgYXNzZXJ0UmFpc2VzUmVnZXhgIGFuZCBgYXNzZXJ0V2FybnNSZWdleGAgbm93IHJhaXNlIGEKKyAgVHlwZUVycm9yIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEgc3RyaW5nIG9yIGNvbXBpbGVkIHJlZ2V4LgorCiAtIElzc3VlICMyMDYzMzogUmVwbGFjZSByZWxhdGl2ZSBpbXBvcnQgYnkgYWJzb2x1dGUgaW1wb3J0LgogCiAtIElzc3VlICMyMDk4MDogU3RvcCB3cmFwcGluZyBleGNlcHRpb24gd2hlbiB1c2luZyBUaHJlYWRQb29sLgpAQCAtMTQxNSw2ICsyMjE2LDggQEAKICAgY3VydmUgZm9yIEVDREgga2V5IGV4Y2hhbmdlIG9uIE9wZW5TU0wgMS4wLjIgYW5kIGxhdGVyLCBhbmQgb3RoZXJ3aXNlCiAgIGRlZmF1bHQgdG8gInByaW1lMjU2djEiLgogCistIElzc3VlICMyMTAwMDogSW1wcm92ZSB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZSBvZiBqc29uLnRvb2wuCisKIC0gSXNzdWUgIzIwOTk1OiBFbmhhbmNlIGRlZmF1bHQgY2lwaGVycyB1c2VkIGJ5IHRoZSBzc2wgbW9kdWxlIHRvIGVuYWJsZQogICBiZXR0ZXIgc2VjdXJpdHkgYW4gcHJpb3JpdGl6ZSBwZXJmZWN0IGZvcndhcmQgc2VjcmVjeS4KIApAQCAtMTQyMiw2ICsyMjI1LDI0IEBACiAKIC0gSXNzdWUgIzIxNDk5OiBJZ25vcmUgX19idWlsdGluc19fIGluIHNldmVyYWwgdGVzdF9pbXBvcnRsaWIudGVzdF9hcGkgdGVzdHMuCiAKKy0gSXNzdWUgIzIwNjI3OiB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5IGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlci4KKworLSBJc3N1ZSAjMTkxNjU6IFRoZSBmb3JtYXR0ZXIgbW9kdWxlIG5vdyByYWlzZXMgRGVwcmVjYXRpb25XYXJuaW5nIGluc3RlYWQgb2YKKyAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMTM5MzY6IFJlbW92ZSB0aGUgYWJpbGl0eSBvZiBkYXRldGltZS50aW1lIGluc3RhbmNlcyB0byBiZSBjb25zaWRlcmVkCisgIGZhbHNlIGluIGJvb2xlYW4gY29udGV4dHMuCisKKy0gSXNzdWUgMTg5MzE6IHNlbGVjdG9ycyBtb2R1bGUgbm93IHN1cHBvcnRzIC9kZXYvcG9sbCBvbiBTb2xhcmlzLgorICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLSBJc3N1ZSAjMTk5Nzc6IFdoZW4gdGhlIGBgTENfVFlQRWBgIGxvY2FsZSBpcyB0aGUgUE9TSVggbG9jYWxlIChgYENgYCBsb2NhbGUpLAorICA6cHk6ZGF0YTpgc3lzLnN0ZGluYCBhbmQgOnB5OmRhdGE6YHN5cy5zdGRvdXRgIGFyZSBub3cgdXNpbmcgdGhlCisgIGBgc3Vycm9nYXRlZXNjYXBlYGAgZXJyb3IgaGFuZGxlciwgaW5zdGVhZCBvZiB0aGUgYGBzdHJpY3RgYCBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICMyMDU3NDogSW1wbGVtZW50IGluY3JlbWVudGFsIGRlY29kZXIgZm9yIGNwNjUwMDEgY29kZSAoV2luZG93cyBjb2RlCisgIHBhZ2UgNjUwMDEsIE1pY3Jvc29mdCBVVEYtOCkuCisKIC0gSXNzdWUgIzIwODc5OiBEZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRhYmxlcyBmb3IKICAgYmFzZTMyLCBhc2NpaTg1IGFuZCBiYXNlODUgY29kZWNzIGluIHRoZSBiYXNlNjQgbW9kdWxlLCBhbmQgZGVsYXkgdGhlCiAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSB1bnF1b3RlX3RvX2J5dGVzKCkgdGFibGUgb2YgdGhlIHVybGxpYi5wYXJzZSBtb2R1bGUsIHRvCkBAIC0xNDU2LDYgKzIyNzcsMTQgQEAKIC0gSXNzdWUgIzE5NzQ4OiBPbiBBSVgsIHRpbWUubWt0aW1lKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yIGZvciB5ZWFyCiAgIG91dHNpemUgcmFuZ2UgWzE5MDI7IDIwMzddLgogCistIElzc3VlICMxOTU3MzogaW5zcGVjdC5zaWduYXR1cmU6IFVzZSBlbnVtIGZvciBwYXJhbWV0ZXIga2luZCBjb25zdGFudHMuCisKKy0gSXNzdWUgIzIwNzI2OiBpbnNwZWN0LnNpZ25hdHVyZTogTWFrZSBTaWduYXR1cmUgYW5kIFBhcmFtZXRlciBwaWNrbGFibGUuCisKKy0gSXNzdWUgIzE3MzczOiBBZGQgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZSBtZXRob2QuCisKKy0gSXNzdWUgIzIwMzc4OiBJbXByb3ZlIHJlcHIgb2YgaW5zcGVjdC5TaWduYXR1cmUgYW5kIGluc3BlY3QuUGFyYW1ldGVyLgorCiAtIElzc3VlICMyMDgxNjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3MoKSB0byByYWlzZSBjb3JyZWN0IFR5cGVFcnJvciBmb3IKICAgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLiBQYXRjaCBieSBKZXJlbWlhaCBMb3dpbi4KIApAQCAtMTQ3Miw2ICsyMzAxLDEyIEBACiAgIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzIGJlY29tZQogICBrZXl3b3JkLW9ubHkuCiAKKy0gSXNzdWUgIzIwMzM0OiBpbnNwZWN0LlNpZ25hdHVyZSBhbmQgaW5zcGVjdC5QYXJhbWV0ZXIgYXJlIG5vdyBoYXNoYWJsZS4KKyAgVGhhbmtzIHRvIEFudG9ueSBMZWUgZm9yIGJ1ZyByZXBvcnRzIGFuZCBzdWdnZXN0aW9ucy4KKworLSBJc3N1ZSAjMTU5MTY6IGRvY3Rlc3QuRG9jVGVzdFN1aXRlIHJldHVybnMgYW4gZW1wdHkgdW5pdHRlc3QuVGVzdFN1aXRlIGluc3RlYWQKKyAgb2YgcmFpc2luZyBWYWx1ZUVycm9yIGlmIGl0IGZpbmRzIG5vIHRlc3RzCisKIC0gSXNzdWUgIzIxMjA5OiBGaXggYXN5bmNpby50YXNrcy5Db3JvV3JhcHBlciB0byB3b3JrYXJvdW5kIGEgYnVnCiAgIGluIHlpZWxkLWZyb20gaW1wbGVtZW50YXRpb24gaW4gQ1B5dGhvbnMgcHJpb3IgdG8gMy40LjEuCiAKQEAgLTE0ODQsMTYgKzIzMTksOTAgQEAKIC0gSXNzdWUgIzExNTcxOiBFbnN1cmUgdGhhdCB0aGUgdHVydGxlIHdpbmRvdyBiZWNvbWVzIHRoZSB0b3Btb3N0IHdpbmRvdwogICB3aGVuIGxhdW5jaGVkIG9uIE9TIFguCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMjE4MDE6IFZhbGlkYXRlIHRoYXQgX19zaWduYXR1cmVfXyBpcyBOb25lIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZS4KIAotLSBJc3N1ZSAjMjEyNzY6IHBvc2l4bW9kdWxlOiBEb24ndCBkZWZpbmUgVVNFX1hBVFRSUyBvbiBLRnJlZUJTRCBhbmQgdGhlIEh1cmQuCi0tIElzc3VlICMyMTIyNjogU2V0IHVwIG1vZHVsZXMgcHJvcGVybHkgaW4gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QKLSAgKGFuZCBmcmllbmRzKS4KKy0gSXNzdWUgIzIxOTIzOiBQcmV2ZW50IEF0dHJpYnV0ZUVycm9yIGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyCisgIGR1ZSB0byBwb3NzaWJsZSB1bmluaXRpYWxpemVkIF9jb25maWdfdmFycy4KKworLSBJc3N1ZSAjMjEzMjM6IEZpeCBodHRwLnNlcnZlciB0byBhZ2FpbiBoYW5kbGUgc2NyaXB0cyBpbiBDR0kgc3ViZGlyZWN0b3JpZXMsCisgIGJyb2tlbiBieSB0aGUgZml4IGZvciBzZWN1cml0eSBpc3N1ZSAjMTk0MzUuICBQYXRjaCBieSBaYWNoIEJ5cm5lLgorCistIElzc3VlICMyMjczMzogRml4IGZmaV9wcmVwX2FyZ3Mgbm90IHplcm8tZXh0ZW5kaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3JyZWN0bHkKKyAgb24gNjQtYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzIzMzAyOiBEZWZhdWx0IHRvIFRDUF9OT0RFTEFZPTEgdXBvbiBlc3RhYmxpc2hpbmcgYW4gSFRUUENvbm5lY3Rpb24uCisgIFJlbW92ZWQgdXNlIG9mIGhhcmQtY29kZWQgTVNTIGFzIGl0J3MgYW4gb3B0aW1pemF0aW9uIHRoYXQncyBubyBsb25nZXIgbmVlZGVkCisgIHdpdGggTmFnbGUgZGlzYWJsZWQuCiAKIElETEUKIC0tLS0KIAorLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAorICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCisgIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMTY4OTM6IFVwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldworICBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzA2ODogQWRkIElkbGUgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gZGlhbG9nIHRvIE9wdGlvbnMgbWVudS4KKyAgQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLgorICBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCisKKy0gSXNzdWUgIzE2MjMzOiBBIG1vZHVsZSBicm93c2VyIChGaWxlIDogQ2xhc3MgQnJvd3NlciwgQWx0K0MpIHJlcXVpcmVzIGEKKyAgZWRpdG9yIHdpbmRvdyB3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwKKyAgZnJvbSBhIHNoZWxsLCBvdXRwdXQgd2luZG93LCBvciAnVW50aXRsZWQnIGVkaXRvciwgSWRsZSBubyBsb25nZXIgZGlzcGxheXMKKyAgYW4gZXJyb3IgYm94LiAgSXQgbm93IHBvcHMgdXAgYW4gIE9wZW4gTW9kdWxlIGJveCAoQWx0K00pLiBJZiBhIHZhbGlkIG5hbWUKKyAgaXMgZW50ZXJlZCBhbmQgYSBtb2R1bGUgaXMgb3BlbmVkLCBhIGNvcnJlc3BvbmRpbmcgYnJvd3NlciBpcyBhbHNvIG9wZW5lZC4KKworLSBJc3N1ZSAjNDgzMjogU2F2ZSBBcyB0byB0eXBlIFB5dGhvbiBmaWxlcyBhdXRvbWF0aWNhbGx5IGFkZHMgLnB5IHRvIHRoZQorICBuYW1lIHlvdSBlbnRlciAoZXZlbiBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBkaXNwbGF5IGl0KS4gIFNvbWUgc3lzdGVtcworICBhdXRvbWF0aWNhbGx5IGFkZCAudHh0IHdoZW4gdHlwZSBpcyBUZXh0IGZpbGVzLgorCistIElzc3VlICMyMTk4NjogQ29kZSBvYmplY3RzIGFyZSBub3Qgbm9ybWFsbHkgcGlja2xlZCBieSB0aGUgcGlja2xlIG1vZHVsZS4KKyAgVG8gbWF0Y2ggdGhpcywgdGhleSBhcmUgbm8gbG9uZ2VyIHBpY2tsZWQgd2hlbiBydW5uaW5nIHVuZGVyIElkbGUuCisKKy0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAorICBtb3ZlIHZlcnNpb24gdG8gZW5kLgorCistIElzc3VlICMxNDEwNTogSWRsZSBkZWJ1Z2dlciBicmVha3BvaW50cyBubyBsb25nZXIgZGlzYXBwZWFyCisgIHdoZW4gaW5zZXRpbmcgb3IgZGVsZXRpbmcgbGluZXMuCisKKy0gSXNzdWUgIzE3MTcyOiBUdXJ0bGVkZW1vIGNhbiBub3cgYmUgcnVuIGZyb20gSWRsZS4KKyAgQ3VycmVudGx5LCB0aGUgZW50cnkgaXMgb24gdGhlIEhlbHAgbWVudSwgYnV0IGl0IG1heSBtb3ZlIHRvIFJ1bi4KKyAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHQgYW5kIExpdGEgQ2hvLgorCistIElzc3VlICMyMTc2NTogQWRkIHN1cHBvcnQgZm9yIG5vbi1hc2NpaSBpZGVudGlmaWVycyB0byBIeXBlclBhcnNlci4KKworLSBJc3N1ZSAjMjE5NDA6IEFkZCB1bml0dGVzdCBmb3IgV2lkZ2V0UmVkaXJlY3Rvci4gSW5pdGlhbCBwYXRjaCBieSBTYWltYWRoYXYKKyAgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NTkyOiBBZGQgdW5pdHRlc3QgZm9yIFNlYXJjaERpYWxvZ0Jhc2UuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMjE2OTQ6IEFkZCB1bml0dGVzdCBmb3IgUGFyZW5NYXRjaC4gUGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMyMTY4NjogYWRkIHVuaXR0ZXN0IGZvciBIeXBlclBhcnNlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2CisgIEhlYmxpa2FyLgorCistIElzc3VlICMxMjM4NzogQWRkIG1pc3NpbmcgdXBwZXIobG93ZXIpY2FzZSB2ZXJzaW9ucyBvZiBkZWZhdWx0IFdpbmRvd3Mga2V5CisgIGJpbmRpbmdzIGZvciBJZGxlIHNvIENhcHMgTG9jayBkb2VzIG5vdCBkaXNhYmxlIHRoZW0uIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMyMTY5NTogQ2xvc2luZyBhIEZpbmQtaW4tZmlsZXMgb3V0cHV0IHdpbmRvdyB3aGlsZSB0aGUgc2VhcmNoIGlzCisgIHN0aWxsIGluIHByb2dyZXNzIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KKworLSBJc3N1ZSAjMTg5MTA6IEFkZCB1bml0dGVzdCBmb3IgdGV4dFZpZXcuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMTgyOTI6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0V4cGFuZC4gUGF0Y2ggYnkgU2FpaGFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMxODQwOTogQWRkIHVuaXR0ZXN0IGZvciBBdXRvQ29tcGxldGUuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLSBJc3N1ZSAjMjE0Nzc6IGh0ZXN0LnB5IC0gSW1wcm92ZSBmcmFtZXdvcmssIGNvbXBsZXRlIHNldCBvZiB0ZXN0cy4KKyAgUGF0Y2hlcyBieSBTYWltYWRoYXYgSGVibGlrYXIKKworLSBJc3N1ZSAjMTgxMDQ6IEFkZCBpZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSB3aXRoIGEgZmV3IHNhbXBsZSB0ZXN0cyB0byBiZWdpbgorICBjb25zb2xpZGF0aW5nIGFuZCBpbXByb3ZpbmcgaHVtYW4tdmFsaWRhdGVkIHRlc3RzIG9mIElkbGUuIENoYW5nZSBvdGhlciBmaWxlcworICBhcyBuZWVkZWQgdG8gd29yayB3aXRoIGh0ZXN0LiAgUnVubmluZyB0aGUgbW9kdWxlIGFzIF9fbWFpbl9fIHJ1bnMgYWxsIHRlc3RzLgorCiAtIElzc3VlICMyMTEzOTogQ2hhbmdlIGRlZmF1bHQgcGFyYWdyYXBoIHdpZHRoIHRvIDcyLCB0aGUgUEVQIDggcmVjb21tZW5kYXRpb24uCiAKIC0gSXNzdWUgIzIxMjg0OiBQYXJhZ3JhcGggcmVmb3JtYXQgdGVzdCBwYXNzZXMgYWZ0ZXIgdXNlciBjaGFuZ2VzIHJlZm9ybWF0IHdpZHRoLgpAQCAtMTUwMSwxMCArMjQxMCw1MiBAQAogLSBJc3N1ZSAjMTc2NTQ6IEVuc3VyZSBJRExFIG1lbnVzIGFyZSBjdXN0b21pemVkIHByb3Blcmx5IG9uIE9TIFggZm9yCiAgIG5vbi1mcmFtZXdvcmsgYnVpbGRzIGFuZCBmb3IgYWxsIHZhcmlhbnRzIG9mIFRrLgogCistIElzc3VlICMyMzE4MDogUmVuYW1lIElETEUgIldpbmRvd3MiIG1lbnUgaXRlbSB0byAiV2luZG93Ii4KKyAgUGF0Y2ggYnkgQWwgU3dlaWdhcnQuCisKIEJ1aWxkCiAtLS0tLQogCi0tIFRoZSBXaW5kb3dzIGJ1aWxkIG5vdyBpbmNsdWRlcyBPcGVuU1NMIDEuMC4xZworLSBJc3N1ZSAjMTU1MDY6IFVzZSBzdGFuZGFyZCBQS0dfUFJPR19QS0dfQ09ORklHIGF1dG9jb25mIG1hY3JvIGluIHRoZSBjb25maWd1cmUKKyAgc2NyaXB0LgorCistIElzc3VlICMyMjkzNTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgY29tcGlsZWQgaWYgb3BlbnNzbCBkb2Vzbid0IHN1cHBvcnQKKyAgU1NMIDMuCisKKy0gSXNzdWUgIzIyNTkyOiBEcm9wIHN1cHBvcnQgb2YgdGhlIEJvcmxhbmQgQyBjb21waWxlciB0byBidWlsZCBQeXRob24uIFRoZQorICBkaXN0dXRpbHMgbW9kdWxlIHN0aWxsIHN1cHBvcnRzIGl0IHRvIGJ1aWxkIGV4dGVuc2lvbnMuCisKKy0gSXNzdWUgIzIyNTkxOiBEcm9wIHN1cHBvcnQgb2YgTVMtRE9TLCBlc3BlY2lhbGx5IG9mIHRoZSBESkdQUCBjb21waWxlcgorICAoTVMtRE9TIHBvcnQgb2YgR0NDKS4KKworLSBJc3N1ZSAjMTY1Mzc6IENoZWNrIHdoZXRoZXIgc2VsZi5leHRlbnNpb25zIGlzIGVtcHR5IGluIHNldHVwLnB5LiBQYXRjaCBieQorICBKb25hdGhhbiBIb3NtZXIuCisKKy0gSXNzdWUgIzIyMzU5OiBSZW1vdmUgaW5jb3JyZWN0IHVzZXMgb2YgcmVjdXJzaXZlIG1ha2UuICBQYXRjaCBieSBKb25hcworICBXYWduZXIuCisKKy0gSXNzdWUgIzIxOTU4OiBEZWZpbmUgSEFWRV9ST1VORCB3aGVuIGJ1aWxkaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEzIGFuZAorICBhYm92ZS4gIFBhdGNoIGJ5IFphY2hhcnkgVHVybmVyLgorCistIElzc3VlICMxODA5MzogdGhlIHByb2dyYW1zIHRoYXQgZW1iZWQgdGhlIENQeXRob24gcnVudGltZSBhcmUgbm93IGluIGEKKyAgc2VwYXJhdGUgIlByb2dyYW1zIiBkaXJlY3RvcnksIHJhdGhlciB0aGFuIGJlaW5nIGtlcHQgaW4gdGhlIE1vZHVsZXMKKyAgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTc1OTogIm1ha2Ugc3VzcGljaW91cyIsICJtYWtlIGxpbmtjaGVjayIgYW5kICJtYWtlIGRvY3Rlc3QiIGluIERvYy8KKyAgbm93IGRpc3BsYXkgc3BlY2lhbCBtZXNzYWdlIHdoZW4gYW5kIG9ubHkgd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCisKKy0gSXNzdWUgIzIxMTQxOiBUaGUgV2luZG93cyBidWlsZCBwcm9jZXNzIG5vIGxvbmdlciBhdHRlbXB0cyB0byBmaW5kIFBlcmwsCisgIGluc3RlYWQgcmVseWluZyBvbiBPcGVuU1NMIHNvdXJjZSBiZWluZyBjb25maWd1cmVkIGFuZCByZWFkeSB0byBidWlsZC4gIFRoZQorICBgYFBDYnVpbGRcYnVpbGRfc3NsLnB5YGAgc2NyaXB0IGhhcyBiZWVuIHJlLXdyaXR0ZW4gYW5kIHJlLW5hbWVkIHRvCisgIGBgUENidWlsZFxwcmVwYXJlX3NzbC5weWBgLCBhbmQgdGFrZXMgY2FyZSBvZiBjb25maWd1cmluZyBPcGVuU1NMIHNvdXJjZQorICBmb3IgYm90aCAzMiBhbmQgNjQgYml0IHBsYXRmb3Jtcy4gIE9wZW5TU0wgc291cmNlcyBvYnRhaW5lZCBmcm9tCisgIHN2bi5weXRob24ub3JnIHdpbGwgYWx3YXlzIGJlIHByZS1jb25maWd1cmVkIGFuZCByZWFkeSB0byBidWlsZC4KKworLSBJc3N1ZSAjMjEwMzc6IEFkZCBhIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgQWRkcmVzc1Nhbml0aXplciBzdXBwb3J0LgorCistIElzc3VlICMxOTk2MjogVGhlIFdpbmRvd3MgYnVpbGQgcHJvY2VzcyBub3cgY3JlYXRlcyAicHl0aG9uLmJhdCIgaW4gdGhlCisgIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlLCB3aGljaCBwYXNzZXMgYWxsIGFyZ3VtZW50cyB0aHJvdWdoIHRvIHRoZSBtb3N0CisgIHJlY2VudGx5IGJ1aWx0IGludGVycHJldGVyLgogCiAtIElzc3VlICMyMTI4NTogUmVmYWN0b3IgYW5kIGZpeCBjdXJzZXMgY29uZmlndXJlIGNoZWNrIHRvIGFsd2F5cyBzZWFyY2gKICAgaW4gYSBuY3Vyc2VzdyBkaXJlY3RvcnkuCkBAIC0xNTEzLDEyICsyNDY0LDYwIEBACiAgIGluY2x1ZGUgZGlyZWN0b3JpZXMgaWYgdGhleSBhcmVuJ3QgYWxyZWFkeSBiZWluZyBzZWFyY2hlZC4gVGhpcyBhdm9pZHMKICAgYW4gZXhwbGljaXQgcnVudGltZSBsaWJyYXJ5IGRlcGVuZGVuY3kuCiAKKy0gSXNzdWUgIzE3ODYxOiBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGF1dG9tYXRpY2FsbHkgcmVnZW5lcmF0ZXMKKyAgSW5jbHVkZS9vcGNvZGUuaCBmcm9tIExpYi9vcGNvZGUucHkgaWYgdGhlIGxhdGVyIGdldHMgYW55IGNoYW5nZS4KKwogLSBJc3N1ZSAjMjA2NDQ6IE9TIFggaW5zdGFsbGVyIGJ1aWxkIHN1cHBvcnQgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgY2hhbmdlcwogICBpbiAzLjQuMTogYXNzdW1lIGV4dGVybmFsbHkgc3VwcGxpZWQgc3BoaW54LWJ1aWxkIGlzIGF2YWlsYWJsZSBpbiAvdXNyL2Jpbi4KIAorLSBJc3N1ZSAjMjAwMjI6IEVsaW1pbmF0ZSB1c2Ugb2YgZGVwcmVjYXRlZCBidW5kbGVidWlsZGVyIGluIE9TIFggYnVpbGRzLgorCistIElzc3VlICMxNTk2ODogSW5jb3Jwb3JhdGVkIFRjbCwgVGssIGFuZCBUaXggYnVpbGRzIGludG8gdGhlIFdpbmRvd3MgYnVpbGQKKyAgc29sdXRpb24uCisKKy0gSXNzdWUgIzE3MDk1OiBGaXggTW9kdWxlcy9TZXR1cCAqc2hhcmVkKiBzdXBwb3J0LgorCistIElzc3VlICMyMTgxMTogQW50aWNpcGF0ZWQgZml4ZXMgdG8gc3VwcG9ydCBPUyBYIHZlcnNpb25zID4gMTAuOS4KKworLSBJc3N1ZSAjMjExNjY6IFByZXZlbnQgcG9zc2libGUgc2VnZmF1bHRzIGFuZCBvdGhlciByYW5kb20gZmFpbHVyZXMgb2YKKyAgcHl0aG9uIC0tZ2VuZXJhdGUtcG9zaXgtdmFycyBpbiBweWJ1aWxkZGlyLnR4dCBidWlsZCB0YXJnZXQuCisKKy0gSXNzdWUgIzE4MDk2OiBGaXggbGlicmFyeSBvcmRlciByZXR1cm5lZCBieSBweXRob24tY29uZmlnLgorCistIElzc3VlICMxNzIxOTogQWRkIGxpYnJhcnkgYnVpbGQgZGlyIGZvciBQeXRob24gZXh0ZW5zaW9uIGNyb3NzLWJ1aWxkcy4KKworLSBJc3N1ZSAjMjI5MTk6IFdpbmRvd3MgYnVpbGQgdXBkYXRlZCB0byBzdXBwb3J0IFZDIDE0LjAgKFZpc3VhbCBTdHVkaW8gMjAxNSksCisgIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgdGhlIG9mZmljaWFsIHJlbGVhc2UuCisKKy0gSXNzdWUgIzIxMjM2OiBCdWlsZCBfbXNpLnB5ZCB3aXRoIGNhYmluZXQubGliIGluc3RlYWQgb2YgZmNpLmxpYgorCistIElzc3VlICMxNzEyODogVXNlIHByaXZhdGUgdmVyc2lvbiBvZiBPcGVuU1NMIGZvciBPUyBYIDEwLjUrIGluc3RhbGxlci4KKwogQyBBUEkKIC0tLS0tCiAKKy0gSXNzdWUgIzE0MjAzOiBSZW1vdmUgb2Jzb2xldGUgc3VwcG9ydCBmb3Igdmlldz09TlVMTCBpbiBQeUJ1ZmZlcl9GaWxsSW5mbygpLAorICBieXRlYXJyYXlfZ2V0YnVmZmVyKCksIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKCkgYW5kIGFycmF5X2J1ZmZlcl9nZXRidWYoKS4KKyAgQWxsIGZ1bmN0aW9ucyBub3cgcmFpc2UgQnVmZmVyRXJyb3IgaW4gdGhhdCBjYXNlLgorCistIElzc3VlICMyMjQ0NTogUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgbm93IGltcGxlbWVudHMgcHJlY2lzZSBjb250aWd1aXR5CisgIHRlc3RzLCBjb21wYXRpYmxlIHdpdGggTnVtUHkncyBOUFlfUkVMQVhFRF9TVFJJREVTX0NIRUNLSU5HIGNvbXBpbGF0aW9uCisgIGZsYWcuICBQcmV2aW91c2x5IHRoZSBmdW5jdGlvbiByZXBvcnRlZCBmYWxzZSBuZWdhdGl2ZXMgZm9yIGNvcm5lciBjYXNlcy4KKworLSBJc3N1ZSAjMjIwNzk6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCBzdGF0aWNhbGx5IGFsbG9jYXRlZCB0eXBlIGhhcworICBubyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYmFzZXMuCisKKy0gSXNzdWUgIzIyNDUzOiBSZW1vdmVkIG5vbi1kb2N1bWVudGVkIG1hY3JvIFB5T2JqZWN0X1JFUFIoKS4KKworLSBJc3N1ZSAjMTgzOTU6IFJlbmFtZSBgYF9QeV9jaGFyMndjaGFyKClgYCB0byA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgLAorICByZW5hbWUgYGBfUHlfd2NoYXIyY2hhcigpYGAgdG8gOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCwgYW5kIGRvY3VtZW50CisgIHRoZXNlIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjEyMzM6IEFkZCBuZXcgQyBmdW5jdGlvbnM6IFB5TWVtX1Jhd0NhbGxvYygpLCBQeU1lbV9DYWxsb2MoKSwKKyAgUHlPYmplY3RfQ2FsbG9jKCksIF9QeU9iamVjdF9HQ19DYWxsb2MoKS4gYnl0ZXMoaW50KSBpcyBub3cgdXNpbmcKKyAgYGBjYWxsb2MoKWBgIGluc3RlYWQgb2YgYGBtYWxsb2MoKWBgIGZvciBsYXJnZSBvYmplY3RzIHdoaWNoIGlzIGZhc3RlciBhbmQKKyAgdXNlIGxlc3MgbWVtb3J5LgorCiAtIElzc3VlICMyMDk0MjogUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KCkgbm8gbG9uZ2VyIHNldHMgX19maWxlX18gdG8KICAgbWF0Y2ggd2hhdCBpbXBvcnRsaWIgZG9lczsgdGhpcyBhZmZlY3RzIF9mcm96ZW5faW1wb3J0bGliIGFzIHdlbGwgYXMgYW55CiAgIG1vZHVsZSBsb2FkZWQgdXNpbmcgaW1wLmluaXRfZnJvemVuKCkuCkBAIC0xNTI2LDkgKzI1MjUsMjkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTk1NDg6IFVwZGF0ZSB0aGUgY29kZWNzIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGJldHRlciBjb3ZlciB0aGUKKyAgZGlzdGluY3Rpb24gYmV0d2VlbiB0ZXh0IGVuY29kaW5ncyBhbmQgb3RoZXIgY29kZWNzLCB0b2dldGhlciB3aXRoIG90aGVyCisgIGNsYXJpZmljYXRpb25zLiBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMjM5NDogRG9jL01ha2VmaWxlIG5vdyBzdXBwb3J0cyBgYG1ha2UgdmVudiBQWVRIT049Li4vcHl0aG9uYGAgdG8KKyAgY3JlYXRlIGEgdmVudiBmb3IgZ2VuZXJhdGluZyB0aGUgZG9jdW1lbnRhdGlvbiwgZS5nLiwKKyAgYGBtYWtlIGh0bWwgUFlUSE9OPXZlbnYvYmluL3B5dGhvbjNgYC4KKworLSBJc3N1ZSAjMjE1MTQ6IFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBqc29uIG1vZHVsZSBub3cgcmVmZXJzIHRvIG5ldyBKU09OIFJGQworICA3MTU5IGluc3RlYWQgb2Ygb2Jzb2xldGVkIFJGQyA0NjI3LgorCistIElzc3VlICMyMTc3NzogVGhlIGJpbmFyeSBzZXF1ZW5jZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgYXJlIG5vdworICBkb2N1bWVudGVkIGV4cGxpY2l0bHksIHJhdGhlciB0aGFuIGFzc3VtaW5nIHVzZXJzIHdpbGwgYmUgYWJsZSB0byBkZXJpdmUKKyAgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBmcm9tIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc3RyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzY5MTY6IHVuZG9jdW1lbnQgZGVwcmVjYXRlZCBhc3luY2hhdC5maWZvIGNsYXNzLgorCiAtIElzc3VlICMxNzM4NjogRXhwYW5kZWQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYGBEb2MvbWFrZS5iYXRgYCBzY3JpcHQgdG8gbWFrZQogICBpdCBtdWNoIG1vcmUgY29tcGFyYWJsZSB0byBgYERvYy9NYWtlZmlsZWBgLgogCistIElzc3VlICMyMTMxMjogVXBkYXRlIHRoZSB0aHJlYWRfZm9vYmFyLmggdGVtcGxhdGUgZmlsZSB0byBpbmNsdWRlIG5ld2VyCisgIHRocmVhZGluZyBBUElzLiAgUGF0Y2ggYnkgSmFjayBNY0NyYWNrZW4uCisKIC0gSXNzdWUgIzIxMDQzOiBSZW1vdmUgdGhlIHJlY29tbWVuZGF0aW9uIGZvciBzcGVjaWZpYyBDQSBvcmdhbml6YXRpb25zIGFuZCB0bwogICBtZW50aW9uIHRoZSBhYmlsaXR5IHRvIGxvYWQgdGhlIE9TIGNlcnRpZmljYXRlcy4KIApAQCAtMTU0Niw2ICsyNTY1LDczIEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTg5ODI6IEFkZCB0ZXN0cyBmb3IgQ0xJIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCisKKy0gSXNzdWUgIzE5NTQ4OiBBZGRlZCBzb21lIGFkZGl0aW9uYWwgY2hlY2tzIHRvIHRlc3RfY29kZWNzIHRvIGVuc3VyZSB0aGF0CisgIHN0YXRlbWVudHMgaW4gdGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiByZW1haW4gYWNjdXJhdGUuIFBhdGNoIGJ5IE1hcnRpbgorICBQYW50ZXIuCisKKy0gSXNzdWUgIzIyODM4OiBBbGwgdGVzdF9yZSB0ZXN0cyBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorCistIElzc3VlICMyMjE3MzogVXBkYXRlIGxpYjJ0bzMgdGVzdHMgdG8gdXNlIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorCistIElzc3VlICMxNjAwMDogQ29udmVydCB0ZXN0X2N1cnNlcyB0byB1c2UgdW5pdHRlc3QuCisKKy0gSXNzdWUgIzIxNDU2OiBTa2lwIHR3byB0ZXN0cyBpbiB0ZXN0X3VybGxpYjJuZXQucHkgaWYgX3NzbCBtb2R1bGUgbm90CisgIHByZXNlbnQuIFBhdGNoIGJ5IFJlbWkgUG9pbnRlbC4KKworLSBJc3N1ZSAjMjA3NDY6IEZpeCB0ZXN0X3BkYiB0byBydW4gaW4gcmVmbGVhayBtb2RlICgtUikuICBQYXRjaCBieSBYYXZpZXIKKyAgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjIwNjA6IHRlc3RfY3R5cGVzIGhhcyBiZWVuIHNvbWV3aGF0IGNsZWFuZWQgdXAgYW5kIHNpbXBsaWZpZWQ7IGl0CisgIG5vdyB1c2VzIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHRvIGZpbmQgaXRzIHRlc3RzLgorCistIElzc3VlICMyMjEwNDogcmVncnRlc3QucHkgbm8gbG9uZ2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBzdWl0ZSBvZiB0ZXN0cworICBsb2FkZWQgZnJvbSB0ZXN0IG1vZHVsZXMgdGhhdCBkb24ndCBkZWZpbmUgdGVzdF9tYWluKCkuCisKKy0gSXNzdWUgIzIyMTExOiBBc3NvcnRlZCBjbGVhbnVwcyBpbiB0ZXN0X2ltYXBsaWIuICBQYXRjaCBieSBNaWxhbiBPYmVya2lyY2guCisKKy0gSXNzdWUgIzIyMDAyOiBBZGRlZCBgYGxvYWRfcGFja2FnZV90ZXN0c2BgIGZ1bmN0aW9uIHRvIHRlc3Quc3VwcG9ydCBhbmQgdXNlZAorICBpdCB0byBpbXBsZW1lbnQvYXVnbWVudCB0ZXN0IGRpc2NvdmVyeSBpbiB0ZXN0X2FzeW5jaW8sIHRlc3RfZW1haWwsCisgIHRlc3RfaW1wb3J0bGliLCB0ZXN0X2pzb24sIGFuZCB0ZXN0X3Rvb2xzLgorCistIElzc3VlICMyMTk3NjogRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MKKyAgdG8gV2lsbGlhbSBPcnIuCisKKy0gSXNzdWUgIzIxOTE4OiBDb252ZXJ0ZWQgdGVzdF90b29scyBmcm9tIGEgbW9kdWxlIHRvIGEgcGFja2FnZSBjb250YWluaW5nCisgIHNlcGFyYXRlIHRlc3QgZmlsZXMgZm9yIGVhY2ggdGVzdGVkIHNjcmlwdC4KKworLSBJc3N1ZSAjOTU1NDogVXNlIG1vZGVybiB1bml0dGVzdCBmZWF0dXJlcyBpbiB0ZXN0X2FyZ3BhcnNlLiBJbml0aWFsIHBhdGNoIGJ5CisgIERlbnZlciBDb25leWJlYXJlIGFuZCBSYWR1IFZvaWNpbGFzLgorCistIElzc3VlICMyMDE1NTogQ2hhbmdlZCBIVFRQIG1ldGhvZCBuYW1lcyBpbiBmYWlsaW5nIHRlc3RzIGluIHRlc3RfaHR0cHNlcnZlcnMKKyAgc28gdGhhdCBwYWNrZXQgZmlsdGVyaW5nIHNvZnR3YXJlIChzcGVjaWZpY2FsbHkgV2luZG93cyBCYXNlIEZpbHRlcmluZyBFbmdpbmUpCisgIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3MgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCistIElzc3VlICMxOTQ5MzogUmVmYWN0b3JlZCB0aGUgY3R5cGVzIHRlc3QgcGFja2FnZSB0byBza2lwIHRlc3RzIGV4cGxpY2l0bHkKKyAgcmF0aGVyIHRoYW4gc2lsZW50bHkuCisKKy0gSXNzdWUgIzE4NDkyOiBBbGwgcmVzb3VyY2VzIGFyZSBub3cgYWxsb3dlZCB3aGVuIHRlc3RzIGFyZSBub3QgcnVuIGJ5CisgIHJlZ3J0ZXN0LnB5LgorCistIElzc3VlICMyMTYzNDogRml4IHB5c3RvbmUgbWljcm8tYmVuY2htYXJrOiB1c2UgZmxvb3IgZGl2aXNpb24gaW5zdGVhZCBvZiB0cnVlCisgIGRpdmlzaW9uIHRvIGJlbmNobWFyayBpbnRlZ2VycyBpbnN0ZWFkIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFNldCBweXN0b25lCisgIHZlcnNpb24gdG8gMS4yLiBQYXRjaCB3cml0dGVuIGJ5IExlbm5hcnQgUmVnZWJyby4KKworLSBJc3N1ZSAjMjE2MDU6IEFkZGVkIHRlc3RzIGZvciBUa2ludGVyIGltYWdlcy4KKworLSBJc3N1ZSAjMjE0OTM6IEFkZGVkIHRlc3QgZm9yIG50cGF0aC5leHBhbmR1c2VyKCkuICBPcmlnaW5hbCBwYXRjaCBieQorICBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE5OTI1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHNwd2QgbW9kdWxlLiBPcmlnaW5hbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzIxNTIyOiBBZGRlZCBUa2ludGVyIHRlc3RzIGZvciBMaXN0Ym94Lml0ZW1jb25maWd1cmUoKSwKKyAgUGFuZWRXaW5kb3cucGFuZWNvbmZpZ3VyZSgpLCBhbmQgTWVudS5lbnRyeWNvbmZpZ3VyZSgpLgorCistIElzc3VlICMxNzc1NjogRml4IHRlc3RfY29kZSB0ZXN0IHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKworLSBJc3N1ZSAjMTc3NTI6IEZpeCBkaXN0dXRpbHMgdGVzdHMgd2hlbiBydW4gZnJvbSB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uLgorCiAtIElzc3VlICMxODYwNDogQ29uc29saWRhdGVkIGNoZWNrcyBmb3IgR1VJIGF2YWlsYWJpbGl0eS4gIEFsbCBwbGF0Zm9ybXMgbm93CiAgIGF0IGxlYXN0IGNoZWNrIHdoZXRoZXIgVGsgY2FuIGJlIGluc3RhbnRpYXRlZCB3aGVuIHRoZSBHVUkgcmVzb3VyY2UgaXMKICAgcmVxdWVzdGVkLgpAQCAtMTU2Myw2ICsyNjQ5LDggQEAKIAogLSBJc3N1ZSAjMjEwOTc6IE1vdmUgdGVzdF9uYW1lc3BhY2VfcGtncyBpbnRvIHRlc3RfaW1wb3J0bGliLgogCistIElzc3VlICMyMTUwMzogVXNlIHRlc3RfYm90aCgpIGNvbnNpc3RlbnRseSBpbiB0ZXN0X2ltcG9ydGxpYi4KKwogLSBJc3N1ZSAjMjA5Mzk6IEF2b2lkIHZhcmlvdXMgbmV0d29yayB0ZXN0IGZhaWx1cmVzIGR1ZSB0byBuZXcKICAgcmVkaXJlY3Qgb2YgaHR0cDovL3d3dy5weXRob24ub3JnLyB0byBodHRwczovL3d3dy5weXRob24ub3JnOgogICB1c2UgaHR0cDovL3d3dy5leGFtcGxlLmNvbSBpbnN0ZWFkLgpAQCAtMTU3Myw5ICsyNjYxLDQxIEBACiAtIElzc3VlICMyMTA5MzogUHJldmVudCBmYWlsdXJlcyBvZiBjdHlwZXMgdGVzdF9tYWNob2xpYiBvbiBPUyBYIGlmIGEKICAgY29weSBvZiBsaWJ6IGV4aXN0cyBpbiAkSE9NRS9saWIgb3IgL3Vzci9sb2NhbC9saWIuCiAKKy0gSXNzdWUgIzIyNzcwOiBQcmV2ZW50IHNvbWUgVGsgc2VnZmF1bHRzIG9uIE9TIFggd2hlbiBydW5uaW5nIGd1aSB0ZXN0cy4KKworLSBJc3N1ZSAjMjMyMTE6IFdvcmthcm91bmQgdGVzdF9sb2dnaW5nIGZhaWx1cmUgb24gc29tZSBPUyBYIDEwLjYgc3lzdGVtcy4KKworLSBJc3N1ZSAjMjMzNDU6IFByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsCisgIHZhbHVlcyAobGlrZSAwLjkuOHpjKS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzIyMzE0OiBweWRvYyBub3cgd29ya3Mgd2hlbiB0aGUgTElORVMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LgorCistIElzc3VlICMyMjYxNTogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyB0aGUgInR5cGUiIGFyZ3VtZW50IGZvciB0aGUKKyAgaW50IGNvbnZlcnRlci4gIFRoaXMgcGVybWl0cyB1c2luZyB0aGUgaW50IGNvbnZlcnRlciB3aXRoIGVudW1zIGFuZAorICB0eXBlZGVmcy4KKworLSBJc3N1ZSAjMjAwNzY6IFRoZSBtYWtlbG9jYWxlYWxpYXMucHkgc2NyaXB0IG5vIGxvbmdlciBpZ25vcmVzIFVURi04IG1hcHBpbmcuCisKKy0gSXNzdWUgIzIwMDc5OiBUaGUgbWFrZWxvY2FsZWFsaWFzLnB5IHNjcmlwdCBub3cgY2FuIHBhcnNlIHRoZSBTVVBQT1JURUQgZmlsZQorICBmcm9tIGdsaWJjIHNvdXJjZXMgYW5kIHN1cHBvcnRzIGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciBzb3VyY2UgcGF0aHMuCisKKy0gSXNzdWUgIzIyMjAxOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSB6aXBmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5CisgIGV4dHJhY3RzIFpJUCBmaWxlcyB3aXRoIGRpcmVjdG9yeSBlbnRyaWVzLiAgUGF0Y2ggYnkgUnlhbiBXaWxzb24uCisKKy0gSXNzdWUgIzIyMTIwOiBGb3IgZnVuY3Rpb25zIHVzaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgcmV0dXJuIGNvbnZlcnRlciwKKyAgQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgYSBjYXN0IHRvIHRoYXQgdHlwZSBmb3IgdGhlIGNvbXBhcmlzb24KKyAgdG8gLTEgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLiAgKFRoaXMgc3VwcmVzc2VzIGEgY29tcGlsYXRpb24gd2FybmluZy4pCisKKy0gSXNzdWUgIzE4OTc0OiBUb29scy9zY3JpcHRzL2RpZmYucHkgbm93IHVzZXMgYXJncGFyc2UgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjE5MDY6IE1ha2UgVG9vbHMvc2NyaXB0cy9tZDVzdW0ucHkgd29yayBpbiBQeXRob24gMy4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMyMTYyOTogRml4IEFyZ3VtZW50IENsaW5pYydzICItLWNvbnZlcnRlcnMiIGZlYXR1cmUuCisKIC0gQWRkIHN1cHBvcnQgZm9yIGBgeWllbGQgZnJvbWBgIHRvIDJ0bzMuCiAKIC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBQRVAgNDY1IG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvciB0byAydG8zLgpAQCAtMTU4OCw2ICsyNzA4LDMxIEBACiAtIElzc3VlICMyMDUzNTogUFlUSE9OV0FSTklORyBubyBsb25nZXIgYWZmZWN0cyB0aGUgcnVuX3Rlc3RzLnB5IHNjcmlwdC4KICAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCiAKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjMyNjA6IFVwZGF0ZSBXaW5kb3dzIGluc3RhbGxlcgorCistIFRoZSBidW5kbGVkIHZlcnNpb24gb2YgVGNsL1RrIGhhcyBiZWVuIHVwZGF0ZWQgdG8gOC42LjMuICBUaGUgbW9zdCB2aXNpYmxlCisgIHJlc3VsdCBvZiB0aGlzIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgbmV3IG5hdGl2ZSBmaWxlIGRpYWxvZ3Mgd2hlbgorICBydW5uaW5nIG9uIFdpbmRvd3MgVmlzdGEgb3IgbmV3ZXIuICBTZWUgVGNsL1RrJ3MgVElQIDQzMiBmb3IgbW9yZQorICBpbmZvcm1hdGlvbi4gIEFsc28sIHRoaXMgdmVyc2lvbiBvZiBUY2wvVGsgaW5jbHVkZXMgc3VwcG9ydCBmb3IgV2luZG93cyAxMC4KKworLSBJc3N1ZSAjMTc4OTY6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IGV4cGVjdCBleHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMKKyAgdG8gYmUgaW4gYGBQQ2J1aWxkXC4uXGV4dGVybmFsc2BgIHJhdGhlciB0aGFuIGBgUENidWlsZFwuLlwuLmBgLgorCistIElzc3VlICMxNzcxNzogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tCisgIHN2bi5weXRob24ub3JnIHRvIGJ1aWxkIE9wZW5TU0wuCisKKy0gSXNzdWUgIzIxOTA3OiBJbXByb3ZlZCB0aGUgYmF0Y2ggc2NyaXB0cyBwcm92aWRlZCBmb3IgYnVpbGRpbmcgUHl0aG9uLgorCistIElzc3VlICMyMjY0NDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuIHVwZGF0ZWQgdG8gMS4wLjFqLgorCistIElzc3VlICMxMDc0NzogVXNlIHZlcnNpb25lZCBsYWJlbHMgaW4gdGhlIFdpbmRvd3Mgc3RhcnQgbWVudS4KKyAgUGF0Y2ggYnkgT2xpdmUgS2lsYnVybi4KKworLSBJc3N1ZSAjMjI5ODA6IC5weWQgZmlsZXMgd2l0aCBhIHZlcnNpb24gYW5kIHBsYXRmb3JtIHRhZyAoZm9yIGV4YW1wbGUsCisgICIuY3AzNS13aW4zMi5weWQiKSB3aWxsIG5vdyBiZSBsb2FkZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSB3aXRob3V0IHRhZ3MuCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NzAxLDYgKzY4NDYsMTAgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjMwMDY6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gYW5kIGluZGV4aW5nIG9mIGRpY3QuX19taXNzaW5nX18uCisgIEFkZCBhbiBlbnRyeSBpbiB0aGUgbGFuZ3VhZ2UgZGF0YW1vZGVsIHNwZWNpYWwgbWV0aG9kcyBzZWN0aW9uLgorICBSZXZpc2UgYW5kIGluZGV4IGl0cyBkaXNjdXNzaW9uIGluIHRoZSBzdGR0eXBlcyBtYXBwaW5nL2RpY3Qgc2VjdGlvbi4KKwogLSBJc3N1ZSAjMTc3MDE6IEltcHJvdmluZyBzdHJmdGltZSBkb2N1bWVudGF0aW9uLgogCiAtIElzc3VlICMxODQ0MDogQ2xhcmlmeSB0aGF0IGBoYXNoKClgIGNhbiB0cnVuY2F0ZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbgpAQCAtNTg2Myw0MTQxICs3MDEyLDQgQEAKIC0gSXNzdWUgIzE4NTY5OiBUaGUgaW5zdGFsbGVyIG5vdyBhZGRzIC5weSB0byB0aGUgUEFUSEVYVCB2YXJpYWJsZSB3aGVuIGV4dGVuc2lvbnMKICAgYXJlIHJlZ2lzdGVyZWQuIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCiAKLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjktU2VwLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KLQotLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBgX190cnVuY19fKClgIHJldHVybnMgYW4gb2JqZWN0IHdob3NlCi0gIGBfX2ludF9fKClgIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIGBVc2VGb3JlaWduRFREKClgCi0gIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIzLVNlcC0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKWAuCi0KLS0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgotCi0tIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKLSAgYFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKClgIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0IGlzCi0gIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KLQotLSBGaXhlcyBmb3IgYSBmZXcgY3Jhc2ggYW5kIG1lbW9yeSBsZWFrIHJlZ3Jlc3Npb25zIGZvdW5kIGJ5IENvdmVyaXR5LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KLSAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAotICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQotICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KLQotLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAotICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKLSAgbm90IGJlIHBhcnNlZC4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKLSAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgotICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KLQotLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCi0gIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bwotICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KLQotLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCi0gIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucwotICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KLQotLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCi0gIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KLQotLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3MTU4OiBBZGQgJ3N5bWJvbHMnIHRvIGhlbHAoKSB3ZWxjb21lIG1lc3NhZ2U7IGNsYXJpZnkKLSAgJ21vZHVsZXMgc3BhbScgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKLSAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCi0KLS0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKLSAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgotCi0tIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCi0gIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQotICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKLSAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQotICBrZXlwYWQga2V5cy4KLQotLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKLSAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKLSAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKLSAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCi0gIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZF93Y2goKS9tdndhZGRfd2NoKCkgaWYgdGhlIFB5dGhvbiBjdXJzZXMgaXMgbGlua2VkCi0gIHRvIGxpYm5jdXJzZXN3LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU4MjI6IFJlYWxseSBlbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZAotICAocmVwbGFjZXMgZml4ZXMgZm9yIElzc3VlICMxNTY0NSkuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQotICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCi0gIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCi0gIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKLSAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCi0KLS0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAotICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KLSAgbGV0IHRoYXQgcHJvcGFnYXRlLgotCi0tIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgotICBtc2cgaXNuJ3QgYSBzdHIuCi0KLS0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCi0gIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCi0gIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgotICB0aGlzIHBhdGNoKQotCi0tIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKLSAgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQotICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQotICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAotICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCi0gIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KLQotLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgotCi0tIElzc3VlICMxNTc3NjogQWxsb3cgcHl2ZW52IHRvIHdvcmsgaW4gZXhpc3RpbmcgZGlyZWN0b3J5IHdpdGggLS1jbGVhbi4KLQotLSBJc3N1ZSAjMTUyNDk6IGVtYWlsJ3MgQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KLSAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgotCi0tIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgotCi0tIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCi0gIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KLQotLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KLSAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgotCi0tIElzc3VlICMxMjY0MzogYGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBub3cgcmVzcGVjdHMgYHN5cy5leGNlcHRob29rYCB3aGVuCi0gIGRpc3BsYXlpbmcgZXhjZXB0aW9ucy4gIFBhdGNoIGJ5IEFhcm9uIElsZXMuCi0KLS0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCi0KLS0gSXNzdWUgIzE1NTk1OiBGaXggYGBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKWBgIGZvciBjZXJ0YWluCi0gIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQotICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgotCi0tIElzc3VlICMxNTcxNTogYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZQotICB1c2Ugb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgotCi0tIElzc3VlICMxNDY2OTogRml4IHBpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIG9uIE1hYyBPUyBYIGJ5Ci0gIHNlbmRpbmcvcmVjZWl2aW5nIGFuIGFja25vd2xlZGdtZW50IGFmdGVyIGZpbGUgZGVzY3JpcHRvciB0cmFuc2Zlci4KLSAgVGVzdFBpY2tsaW5nQ29ubmVjdGlvbiBoYXMgYmVlbiByZWVuYWJsZWQgZm9yIE1hYyBPUyBYLgotCi0tIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCi0KLS0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZyBgbXVsdGlwcm9jZXNzaW5nYAotICBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIGBgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJ2BgIGlkaW9tLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZSAoMy4zLjBiMgotICByZWdyZXNzaW9uKS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIFRvdWNoZWQgdXAgdGhlIFB5dGhvbiAyIHRvIDMgcG9ydGluZyBndWlkZS4KLQotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGBqc29uYCBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgotICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCi0KLS0gQ3JlYXRlIGEgJ0NvbmN1cnJlbnQgRXhlY3V0aW9uJyBzZWN0aW9uIGluIHRoZSBkb2NzLCBhbmQgc3BsaXQgdXAgdGhlCi0gICdPcHRpb25hbCBPcGVyYXRpbmcgU3lzdGVtIFNlcnZpY2VzJyBzZWN0aW9uIHRvIHVzZSBhIG1vcmUgdXNlci1jZW50cmljCi0gIGNsYXNzaWZpY2F0aW9uIHNjaGVtZSAoc3BsaXR0aW5nIHRoZW0gYWNyb3NzIHRoZSBuZXcgQ0Ugc2VjdGlvbiwgSVBDIGFuZCB0ZXh0Ci0gIHByb2Nlc3NpbmcpLiBPcGVyYXRpbmcgc3lzdGVtIGxpbWl0YXRpb25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54Ci0gIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgotCi0tIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAotICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCi0KLS0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCi0gIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKLSAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KLQotLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKLSAgRGFuaWVsIEVsbGlzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgotICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCi0KLS0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KLSAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgotCi0tIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKLSAgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKLSAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCi0KLS0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCi0KLS0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQotICBidWlsZCBzdGVwLgotCi0tIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0Ci0gIGNvbmZpZ3VyYXRpb24uCi0KLS0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCi0KLS0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcwotICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCi0KLS0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCi0gIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgotCi0tIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAotICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90Ci0gIHN1cHBvcnRlZC4KLQotLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZwotICBpbXBvcnRsaWIuCi0KLS0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKLSAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCi0KLS0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCi0gIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgotCi0tIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KLQotLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKLSAgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgotCi0tIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCi0gIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgotCi0tIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYwotICBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCi0gIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCi0gIHN0YXJ0dXAuCi0KLS0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCi0gIGluc2lkZSBpdHNlbGYsIGRvbid0IG1hc2sgdGhhdCBmYWN0IGJlaGluZCBhIGdlbmVyaWMgSW1wb3J0RXJyb3IgZm9yIHRoZQotICBtb2R1bGUgaXRzZWxmLgotCi0tIElzc3VlICMxNTI5MzogQWRkIEdDIHN1cHBvcnQgdG8gdGhlIEFTVCBiYXNlIG5vZGUgdHlwZS4KLQotLSBJc3N1ZSAjMTUyOTE6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZXJlIEFTVCBub2RlcyB3aGVyZSBub3QgcHJvcGVybHkKLSAgZGVhbGxvY2F0ZWQuCi0KLS0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKLSAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KLQotLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgotCi0tIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKLSAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KLQotLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCi0gIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgotCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAotICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCi0KLS0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKLSAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgotICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCi0KLS0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgotICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKLSAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCi0KLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5Ci0gIEx1ZHdpZyBIw6RobmUuCi0KLS0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgotCi0tIElzc3VlICMxNTUwMjogSGF2ZSBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIHdvcmsgb24gYHN5cy5tZXRhX3BhdGhgCi0gIGluc3RlYWQgb2YgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KLQotLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCi0KLS0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKLSAgYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgLgotCi0tIElzc3VlICMxNTU1OTogVG8gYXZvaWQgYSBwcm9ibGVtYXRpYyBmYWlsdXJlIG1vZGUgd2hlbiBwYXNzZWQgdG8gdGhlIGJ5dGVzCi0gIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAotICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgotCi0tIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCi0gIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBgb3Muc2NoZWRfZ2V0YWZmaW5pdHkoKWAgYW5kCi0gIGBvcy5zY2hlZF9zZXRhZmZpbml0eSgpYCBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlCi0gIENQVXMgYSBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCi0KLS0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGBzb2NrZXQuZ2V0bmFtZWluZm8oKWAgLwotICBgc29ja2V0LmdldGFkZHJpbmZvKClgIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KLQotLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQotICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KLQotLSBJc3N1ZSAjMTU1MDI6IEJyaW5nIHRoZSBpbXBvcnRsaWIgQUJDcyBpbnRvIGxpbmUgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKLSAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgotCi0tIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KLQotLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAotICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KLQotLSBJc3N1ZSAjNjA1NjogTWFrZSBgbXVsdGlwcm9jZXNzaW5nYCB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKLSAgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgotCi0tIElzc3VlICMxNTM2NDogRml4IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KLQotLSBJc3N1ZSAjMTU0MTM6IGBvcy50aW1lcygpYCBoYWQgZGlzYXBwZWFyZWQgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIGBzeXMuZ2V0c2l6ZW9mKClgIHRvCi0gIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCi0gIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGBlbWFpbC5HZW5lcmF0b3JgIG5vdyBjb3JyZWN0bHkKLSAgbWFuZ2xlcyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvcgotICBlcGlsb2d1ZS4KLQotLSBJc3N1ZSAjMTUwOTQ6IEluY29ycmVjdGx5IHBsYWNlZCAjZW5kaWYgaW4gX3RraW50ZXIuYy4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEzOTIyOiBgYXJncGFyc2VgIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKLSAgdGhlIGZpcnN0IG9uZS4KLQotLSBJc3N1ZSAjMTIzNTM6IGBhcmdwYXJzZWAgbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgotCi0tIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAotICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgotCi0tIElzc3VlICMxNTM5NzogYGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpYCBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYQotICBhIG5ldyBgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKWAgQVBJLgotCi0tIElzc3VlICMxNDYzNTogYHRlbG5ldGxpYmAgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KLSAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KLQotLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgotCi0tIElzc3VlICMxNTM0MzogcGtndXRpbCBub3cgaW5jbHVkZXMgYW4gaXRlcl9pbXBvcnRlcl9tb2R1bGVzIGltcGxlbWVudGF0aW9uIGZvcgotICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgKHNpbWlsYXIgdG8gdGhlIHdheSBpdCBhbHJlYWR5IGhhbmRsZWQKLSAgemlwaW1wb3J0LnppcGltcG9ydGVyKS4KLQotLSBJc3N1ZSAjMTUzMTQ6IHJ1bnB5IG5vdyBzZXRzIF9fbWFpbl9fLl9fbG9hZGVyX18gY29ycmVjdGx5LgotCi0tIElzc3VlICMxNTM1NzogVGhlIGltcG9ydCBlbXVsYXRpb24gaW4gcGtndXRpbCBpcyBub3cgZGVwcmVjYXRlZC4gcGtndXRpbCB1c2VzCi0gIGltcG9ydGxpYiBpbnRlcm5hbGx5IHJhdGhlciB0aGFuIHRoZSBlbXVsYXRpb24uCi0KLS0gSXNzdWUgIzE1MjMzOiBQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQKLSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4KLQotLSBJc3N1ZSAjMTUyMzg6IGBzaHV0aWwuY29weXN0YXQoKWAgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCi0KLS0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCi0gIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNTMxNTogU3VwcG9ydCBWUyAyMDEwIGluIGRpc3R1dGlscyBjeWd3aW5jb21waWxlci4KLQotLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCi0gIG5hbWVzcGFjZSBwYWNrYWdlcy4KLQotLSBJc3N1ZSAjMTUwNTY6IGBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKWAgYW5kIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgcmFpc2UKLSAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBzZXQgdG8gTm9uZS4KLQotLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBgaW1wLmZpbmRfbW9kdWxlKClgLgotCi0tIElzc3VlICM1OTMxOiBgd3NnaXJlZmAgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCi0gIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZSBDUHl0aG9uLCBKeXRob24gaW5zdGVhZCBvZiBnZW5lcmljICJQeXRob24iLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJtYXhfYnVmZmVyX3NpemUiIG9mIEJ1ZmZlcmVkV3JpdGVyIGFuZAotICBCdWZmZXJlZFJXUGFpciwgZnJvbSB0aGUgaW8gbW9kdWxlLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBgYXJncGFyc2UuQXJndW1lbnRQYXJzZXJgLgotCi0tIElzc3VlICMxNDgxNDogSW1wbGVtZW50IG1vcmUgY29uc2lzdGVudCBvcmRlcmluZyBhbmQgc29ydGluZyBiZWhhdmlvdXIgZm9yCi0gIGlwYWRkcmVzcyBvYmplY3RzLgotCi0tIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2AgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgotICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgotCi0tIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgotCi0tIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2Agbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgotICBjb25zdHJ1Y3RpbmcgaW5zdGFuY2VzIGRpcmVjdGx5IChjaGFuZ2VzIHBlcm1pdHRlZCBkdXJpbmcgYmV0YSBkdWUgdG8KLSAgcHJvdmlzaW9uYWwgQVBJIHN0YXR1cykuCi0KLS0gSXNzdWUgIzE1MjQ3OiBgaW8uRmlsZUlPYCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKLSAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE1MjYxOiBTdG9wIG9zLnN0YXQoZmQpIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBmZCBub3Qgb3Blbi4KLQotLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBgaW1wLmdldF90YWcoKWAgdXNpbmcgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgLgotCi0tIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBgaW1wb3J0bGliLl9faW5pdF9fKClgIGNhbid0IGZpbmQKLSAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KLQotLSBJc3N1ZSAjMTUwMzA6IGBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyYCBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQotICBoZWFkZXIgZmllbGQgaW4gLnB5YyBmaWxlcy4KLQotLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveCBmaWxlcyBvbgotICBmbHVzaCgpLgotCi0tIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4gIFBhdGNoIGJ5Ci0gIEpha3ViIFdpbGsuCi0KLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIgY3JlYXRlZCBhbmQKLSAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKLSAgbWFpbGJveC4KLQotLSBJc3N1ZSAjMTA5MjQ6IEZpeGVkIGBjcnlwdC5ta3NhbHQoKWAgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCi0gIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KLQotLSBJc3N1ZSAjMTUxODQ6IEVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdHMgb2YgT1MgWCBjb25maWd1cmF0aW9uIHRhaWxvcmluZyBmb3IKLSAgdW5pdmVyc2FsIGJ1aWxkcyBieSBmYWN0b3Jpbmcgb3V0IGNvbW1vbiBPUyBYLXNwZWNpZmljIGN1c3RvbWl6YXRpb25zIGZyb20KLSAgc3lzY29uZmlnLCBkaXN0dXRpbHMuc3lzY29uZmlnLCBkaXN0dXRpbHMudXRpbCwgYW5kIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyCi0gIGludG8gYSBuZXcgbW9kdWxlIF9vc3hfc3VwcG9ydC4KLQotQyBBUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NjEwOiBgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKWAgbm93IHVzZXMgYSAnbGV2ZWwnIG9mIDAgaW5zdGVhZCBvZiAtMS4KLQotLSBJc3N1ZSAjMTUxNjksIGlzc3VlICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCi0gIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgdXNlZCBieSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBhbmQKLSAgdXNlZCB0aGUgUHl0aG9uIGNvZGUgaW5zdGVhZC4gTGVhZHMgdG8gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKSB0byBub3QKLSAgdHJ5IHRvIGluZmVyIHRoZSBzb3VyY2UgcGF0aCBmcm9tIHRoZSBieXRlY29kZSBwYXRoIGFzCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGRvZXMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2NDkzOiBBbiBpc3N1ZSBpbiBjdHlwZXMgb24gV2luZG93cyB0aGF0IGNhdXNlZCBzdHJ1Y3R1cmUgYml0ZmllbGRzIG9mCi0gIHR5cGUgYGN0eXBlcy5jX3VpbnQzMmAgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUxOTQ6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC4xMSByZWxlYXNlLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZwotICBlbmRlZCB3aXRoIGBgXGBgLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCi0gIHZhbHVlLgotCi0tIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgotCi0tIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgotICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCi0gICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKLQotICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAotICAqIEMgZnJhbWVzIHRoYXQgYXJlIGdhcmJhZ2UtY29sbGVjdGluZwotICAqIEMgZnJhbWVzIHRoYXQgYXJlIGR1ZSB0byB0aGUgaW52b2NhdGlvbiBvZiBhIFB5Q0Z1bmN0aW9uCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2ggYnkKLSAgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCi0KLS0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weSBtb2R1bGUgYW5kCi0gIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjMTUwNTM6IENvcHkgUHl0aG9uIDMuMyBpbXBvcnQgbG9jayBjaGFuZ2Ugbm90aWNlIHRvIGFsbCByZWxldmFudAotICBmdW5jdGlvbnMgaW4gaW1wIGluc3RlYWQgb2YganVzdCBhdCB0aGUgdG9wIG9mIHRoZSByZWxldmFudCBzZWN0aW9uLgotCi0tIElzc3VlICMxNTI4ODogTGluayB0byB0aGUgdGVybSAibG9hZGVyIiBpbiBub3RlcyBpbiBwa2d1dGlsIGFib3V0IGhvdyB0aGluZ3MKLSAgd29uJ3Qgd29yayBhcyBleHBlY3RlZCBpbiBQeXRob24gMy4zIGFuZCBtYXJrIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25zIGFzCi0gICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5Ci0gIGltcG9ydCBpdHNlbGYuCi0KLS0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGBleGVjKClgIG9yCi0gIGBleGVjZmlsZSgpYC4KLQotLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgYGZpbGVjbXAuZGlyY21wKClgIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKLSAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1NDQyOiBFeHBvc2UgdGhlIGRlZmF1bHQgbGlzdCBvZiBkaXJlY3RvcmllcyBpZ25vcmVkIGJ5Ci0gIGBmaWxlY21wLmRpcmNtcCgpYCBhcyBhIG1vZHVsZSBhdHRyaWJ1dGUsIGFuZCBleHBhbmQgdGhlIGxpc3QgdG8gbW9yZSBtb2Rlcm4KLSAgdmFsdWVzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCi0gIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTUxNjg6IE1vdmUgYGltcG9ydGxpYi50ZXN0YCB0byBgdGVzdC50ZXN0X2ltcG9ydGxpYmAuCi0KLS0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCi0gIGZvcmdvdHRlbiBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIGNhbGwuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKLSAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KLSAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1Mjg0OiBTa2lwIHtzZW5kLHJlY3Z9bXNnIHRlc3RzIGluIHRlc3Rfc29ja2V0IHdoZW4gSVB2NiBpcyBub3QKLSAgZW5hYmxlZC4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxNTI3NzogRml4IGEgcmVzb3VyY2UgbGVhayBpbiBzdXBwb3J0LnB5IHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4gIFBhdGNoCi0gIGJ5IEJyaWFuIEJyYXppbC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQgdG9vbHMKLSAgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1MDM3OiBCdWlsZCBPUyBYIGluc3RhbGxlcnMgd2l0aCBsb2NhbCBjb3B5IG9mIG5jdXJzZXMgNS45IGxpYnJhcmllcwotICB0byBhdm9pZCBjdXJzZXMudW5nZXRfd2NoIGJ1ZyBwcmVzZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMgc3VjaCBhcwotICB0aG9zZSBzaGlwcGVkIHdpdGggT1MgWC4KLQotLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4gIEFsc28sIGZvcgotICBPUyBYIGluc3RhbGxlcnMsIGVuc3VyZSBjb25zaXN0ZW50IHNxbGl0ZTMgYmVoYXZpb3IgYW5kIGZlYXR1cmUgYXZhaWxhYmlsaXR5Ci0gIGJ5IGJ1aWxkaW5nIGEgbG9jYWwgY29weSBvZiBsaWJzcWxpdGUzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGUgd2lkZSByYW5nZQotICBvZiB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIHZhcmlvdXMgT1MgWCByZWxlYXNlcy4KLQotLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi0tIElzc3VlICMxNjI1NjogT1MgWCBpbnN0YWxsZXIgbm93IHNldHMgY29ycmVjdCBwZXJtaXNzaW9ucyBmb3IgZG9jIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTU0MzE6IEFkZCBfZnJlZXplX2ltcG9ydGxpYiBwcm9qZWN0IHRvIHJlZ2VuZXJhdGUgaW1wb3J0bGliLmggb24KLSAgV2luZG93cy4gUGF0Y2ggYnkgS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uLgotCi0tIElzc3VlICMxNDE5NzogRm9yIE9TIFggZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlIGxpbmtzIHRvIHRoZSBzaGFyZWQgbGlicmFyeQotICBhcmUgY3JlYXRlZCB3aXRoIHRoZSBwcm9wZXIgQUJJIHN1ZmZpeC4KLQotLSBJc3N1ZSAjMTQzMzA6IEZvciBjcm9zcyBidWlsZHMsIGRvbid0IHVzZSBob3N0IHB5dGhvbiwgdXNlIGhvc3Qgc2VhcmNoIHBhdGhzCi0gIGZvciBob3N0IGNvbXBpbGVyLgotCi0tIElzc3VlICMxNTIzNTogQWxsb3cgQmVya2xleSBEQiB2ZXJzaW9ucyB1cCB0byA1LjMgdG8gYnVpbGQgdGhlIGRibSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE1MjY4OiBTZWFyY2ggY3Vyc2VzLmggaW4gL3Vzci9pbmNsdWRlL25jdXJzZXN3LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjctSnVuLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeCBhIChtb3N0IGxpa2VseSkgdmVyeSByYXJlIG1lbW9yeSBsZWFrIHdoZW4gY2FsbGluZyBtYWluKCkgYW5kIG5vdCBiZWluZwotICBhYmxlIHRvIGRlY29kZSBhIGNvbW1hbmQtbGluZSBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTQ4MTU6IFVzZSBQeV9zc2l6ZV90IGluc3RlYWQgb2YgbG9uZyBmb3IgdGhlIG9iamVjdCBoYXNoLCB0bwotICBwcmVzZXJ2ZSBhbGwgNjQgYml0cyBvZiBoYXNoIG9uIFdpbjY0LgotCi0tIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgb3IgcmVhZGFsbCgpIG1ldGhvZHMKLSAgbm8gbG9uZ2VyIGxvc2UgZGF0YSB3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4KLSAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSCi0gIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzExNjI2OiBBZGQgX1NpemVUIGZ1bmN0aW9ucyB0byBzdGFibGUgQUJJLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNTA5NjogUmVtb3ZlZCBzdXBwb3J0IGZvciB1cicnIGFzIHRoZSByYXcgbm90YXRpb24gaXNuJ3QKLSAgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLngncyByYXcgdW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxMzc4MzogR2VuZXJhdG9yIG9iamVjdHMgbm93IHVzZSB0aGUgaWRlbnRpZmllciBBUElzIGludGVybmFsbHkKLQotLSBJc3N1ZSAjMTQ4NzQ6IFJlc3RvcmUgY2hhcm1hcCBkZWNvZGluZyBzcGVlZCB0byBwcmUtUEVQIDM5MyBsZXZlbHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MDI2OiB1dGYtMTYgZW5jb2RpbmcgaXMgbm93IHNpZ25pZmljYW50bHkgZmFzdGVyICh1cCB0byAxMHgpLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMTAyMjogb3BlbigpIGFuZCBpby5UZXh0SU9XcmFwcGVyIGFyZSBub3cgY2FsbGluZwotICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGluc3RlYWQgb2YgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKLSAgaW4gdGV4dCBtb2RlIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQotICBsb2NhbGUgZW5jb2RpbmcgdXNpbmcgbG9jYWxlLnNldGxvY2FsZSgpLCB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nCi0gIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgotCi0tIElzc3VlICMxNDY3MzogQWRkIEVyaWMgU25vdydzIHN5cy5pbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTUwMzg6IE9wdGltaXplIHB5dGhvbiBMb2NrcyBvbiBXaW5kb3dzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMjg4OiBDb25zaWRlciAnMCcgYW5kICcwLjAnIGFzIHZhbGlkIGluaXRpYWx2YWx1ZQotICBmb3IgdGtpbnRlciBTaW1wbGVEaWFsb2cuCi0KLS0gSXNzdWUgIzE1NTEyOiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBwYXJzZXIuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDY5OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBkZXF1ZSBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQ4OTogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgQnl0ZXNJTyBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQ4NzogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYnVmZmVyZWQgSS9PIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUxNzc6IEFkZGVkIGRpcl9mZCBwYXJhbWV0ZXIgdG8gb3MuZndhbGsoKS4KLQotLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgotICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKLSAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KLQotLSBJc3N1ZSAjMTUxNjQ6IENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcGxhdGZvcm0udW5hbWUoKSBmcm9tIGEKLSAgcGxhaW4gdHVwbGUgdG8gYSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlLgotCi0tIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCi0KLS0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTUxMTg6IENoYW5nZSByZXR1cm4gdmFsdWUgb2Ygb3MudW5hbWUoKSBhbmQgb3MudGltZXMoKSBmcm9tCi0gIHBsYWluIHR1cGxlcyB0byBpbW11dGFibGUgaXRlcmFibGUgb2JqZWN0cyB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMKLSAgKHN0cnVjdHNlcSBvYmplY3RzKS4KLQotLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAotICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCi0gIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCi0KLS0gUmVtb3ZlIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCB3aGljaCBpcyBub3QgcmVhZHkgZm9yIHByaW1lIHRpbWUuCi0KLS0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgotICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCi0KLS0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCi0gIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCi0gIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgotCi0tIElzc3VlICMxNTE1NjogSFRNTFBhcnNlciBub3cgdXNlcyB0aGUgbmV3ICJodG1sLmVudGl0aWVzLmh0bWw1IiBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxMTExMzogYWRkIGEgbmV3ICJodG1sNSIgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lZCBjaGFyYWN0ZXIKLSAgcmVmZXJlbmNlcyBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZCBhbmQgdGhlIGVxdWl2YWxlbnQgVW5pY29kZQotICBjaGFyYWN0ZXIocykgdG8gdGhlIGh0bWwuZW50aXRpZXMgbW9kdWxlLgotCi0tIElzc3VlICMxNTExNDogdGhlIHN0cmljdCBtb2RlIG9mIEhUTUxQYXJzZXIgYW5kIHRoZSBIVE1MUGFyc2VFcnJvciBleGNlcHRpb24KLSAgYXJlIGRlcHJlY2F0ZWQgbm93IHRoYXQgdGhlIHBhcnNlciBpcyBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgotCi0tIElzc3VlICMzNjY1OiBcdSBhbmQgXFUgZXNjYXBlcyBhcmUgbm93IHN1cHBvcnRlZCBpbiB1bmljb2RlIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTE1MzogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMgdG8gc2ltcGxpZnkgd2hpdGUgYm94Ci0gIHRlc3Rpbmcgb2YgZ2VuZXJhdG9yIHN0YXRlIHVwZGF0ZXMKLQotLSBJc3N1ZSAjMTMwNjI6IEFkZGVkIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMgdG8gc2ltcGxpZnkgdGVzdGluZyBzdGF0ZWZ1bAotICBjbG9zdXJlcwotCi0tIElzc3VlICMxMTAyNDogRml4ZXMgYW5kIGFkZGl0aW9uYWwgdGVzdHMgZm9yIFRpbWUySW50ZXJuYWxkYXRlLgotCi0tIElzc3VlICMxNDYyNjogTGFyZ2UgcmVmYWN0b3Jpbmcgb2YgZnVuY3Rpb25zIC8gcGFyYW1ldGVycyBpbiB0aGUgb3MgbW9kdWxlLgotICBNYW55IGZ1bmN0aW9ucyBub3cgc3VwcG9ydCAiZGlyX2ZkIiBhbmQgImZvbGxvd19zeW1saW5rcyIgcGFyYW1ldGVyczsKLSAgc29tZSBhbHNvIHN1cHBvcnQgYWNjZXB0aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGluIHBsYWNlIG9mIGEgcGF0aAotICBzdHJpbmcuICBBZGRlZCBvcy5zdXBwb3J0XyogY29sbGVjdGlvbnMgYXMgTEJZTCBoZWxwZXJzLiAgUmVtb3ZlZCBtYW55Ci0gIGZ1bmN0aW9ucyBvbmx5IHByZXZpb3VzbHkgc2VlbiBpbiAzLjMgYWxwaGEgcmVsZWFzZXMgKG9mdGVuIHN0YXJ0aW5nIHdpdGgKLSAgImYiIG9yICJsIiwgb3IgZW5kaW5nIHdpdGggImF0IikuICBPcmlnaW5hbGx5IHN1Z2dlc3RlZCBieSBTZXJoaXkgU3RvcmNoYWthOwotICBpbXBsZW1lbnRlZCBieSBMYXJyeSBIYXN0aW5ncy4KLQotLSBJc3N1ZSAjMTUwMDg6IEltcGxlbWVudCBQRVAgMzYyICJTaWduYXR1cmUgT2JqZWN0cyIuCi0gIFBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgotCi0tIElzc3VlOiAjMTUxMzg6IGJhc2U2NC51cmxzYWZlX3tlbixkZX1jb2RlKCkgYXJlIG5vdyAzLTR4IGZhc3Rlci4KLQotLSBJc3N1ZSAjNDQ0NTgyOiBBZGQgc2h1dGlsLndoaWNoLCBmb3IgZmluZGluZyBwcm9ncmFtcyBvbiB0aGUgc3lzdGVtIHBhdGguCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgRGVtYWluZSwgd2l0aCBsYXRlciBpdGVyYXRpb25zIGJ5IEphbiBLaWxsaWFuCi0gIGFuZCBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzE0ODM3OiBTU0wgZXJyb3JzIG5vdyBoYXZlIGBgbGlicmFyeWBgIGFuZCBgYHJlYXNvbmBgIGF0dHJpYnV0ZXMKLSAgZGVzY3JpYmluZyBwcmVjaXNlbHkgd2hhdCBoYXBwZW5lZCBhbmQgaW4gd2hpY2ggT3BlblNTTCBzdWJtb2R1bGUuICBUaGUKLSAgc3RyKCkgb2YgYSBTU0xFcnJvciBpcyBhbHNvIGVuaGFuY2VkIGFjY29yZGluZ2x5LgotCi0tIElzc3VlICM5NTI3OiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kIHdpbGwgbm93IHN1cHBseSBhIGNsYXNzCi0gIHRpbWV6b25lIGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5c3RlbSBsb2NhbCB0aW1lem9uZSB3aGVuCi0gIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTQ2NTM6IGVtYWlsLnV0aWxzLm1rdGltZV90eigpIG5vIGxvbmdlciByZWxpZXMgb24gc3lzdGVtCi0gIG1rdGltZSgpIHdoZW4gdGltZXpvbmUgb2ZmZXN0IGlzIHN1cHBsaWVkLgotCi0tIElzc3VlICMxNDY4NDogemxpYi5jb21wcmVzc29iaigpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKSBub3cgc3VwcG9ydCB0aGUgdXNlCi0gIG9mIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyaWVzLiBPcmlnaW5hbCBwYXRjaCBieSBTYW0gUnVzaGluZy4KLQotLSBGaXggR3ppcEZpbGUncyBoYW5kbGluZyBvZiBmaWxlbmFtZXMgZ2l2ZW4gYXMgYnl0ZXMgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ3NzI6IFJldHVybiBkZXN0aW5hdGlvbiB2YWx1ZXMgZnJvbSBzb21lIHNodXRpbCBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE1MDY0OiBJbXBsZW1lbnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIGZvciBtdWx0aXByb2Nlc3NpbmcgdHlwZXMKLQotLSBJc3N1ZSAjMTUxMDE6IE1ha2UgcG9vbCBmaW5hbGl6ZXIgYXZvaWQgam9pbmluZyBjdXJyZW50IHRocmVhZC4KLQotLSBJc3N1ZSAjMTQ2NTc6IFRoZSBmcm96ZW4gaW5zdGFuY2Ugb2YgaW1wb3J0bGliIHVzZWQgZm9yIGJvb3RzdHJhcCBpcyBub3cKLSAgYWxzbyB0aGUgbW9kdWxlIGltcG9ydGVkIGFzIGltcG9ydGxpYi5fYm9vdHN0cmFwLgotCi0tIElzc3VlICMxNDA1NTogQWRkIF9fc2l6ZW9mX18gc3VwcG9ydCB0byBfZWxlbWVudHRyZWUuCi0KLS0gSXNzdWUgIzE1MDU0OiBBIGJ1ZyBpbiB0b2tlbml6ZS50b2tlbml6ZSB0aGF0IGNhdXNlZCBzdHJpbmcgbGl0ZXJhbHMKLSAgd2l0aCAnYicgcHJlZml4ZXMgdG8gYmUgaW5jb3JyZWN0bHkgdG9rZW5pemVkIGhhcyBiZWVuIGZpeGVkLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTAwNjogQWxsb3cgZXF1YWxpdHkgY29tcGFyaXNvbiBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZQotICB0aW1lIG9yIGRhdGV0aW1lIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCi0gIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCi0gIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KLQotLSBJc3N1ZSAjMTQwNTk6IEltcGxlbWVudCBtdWx0aXByb2Nlc3NpbmcuQmFycmllci4KLQotLSBJc3N1ZSAjMTUwNjE6IFRoZSBpbmFwcHJvcHJpYXRlbHkgbmFtZWQgaG1hYy5zZWN1cmVfY29tcGFyZSBoYXMgYmVlbgotICByZW5hbWVkIHRvIGhtYWMuY29tcGFyZV9kaWdlc3QsIHJlc3RyaWN0ZWQgdG8gb3BlcmF0aW5nIG9uIGJ5dGVzIGlucHV0cwotICBvbmx5IGFuZCBoYWQgaXRzIGRvY3VtZW50YXRpb24gdXBkYXRlZCB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBib3RoIGl0cwotICBpbnRlbnQgYW5kIGl0cyBsaW1pdGF0aW9ucwotCi0tIElzc3VlICMxMzg0MTogTWFrZSBjaGlsZCBwcm9jZXNzZXMgZXhpdCB1c2luZyBzeXMuZXhpdCgpIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE0OTM2OiBjdXJzZXNfcGFuZWwgd2FzIGNvbnZlcnRlZCB0byBQRVAgMzEyMSBhbmQgUEVQIDM4NCBBUEkuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTY2NzU0NjogT24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdG1fem9uZSBhbmQgdG1fZ210b2ZmIGZpZWxkcwotICBpbiBzdHJ1Y3QgdG0sIHRpbWUuc3RydWN0X3RpbWUgb2JqZWN0cyByZXR1cm5lZCBieSB0aW1lLmdtdGltZSgpLAotICB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLnN0cnB0aW1lKCkgZnVuY3Rpb25zIG5vdyBoYXZlIHRtX3pvbmUgYW5kCi0gIHRtX2dtdG9mZiBhdHRyaWJ1dGVzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUGF1bCBCb2RkaWUuCi0KLS0gUmVuYW1lIGFkanVzdGVkIGF0dHJpYnV0ZSB0byBhZGp1c3RhYmxlIGluIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSByZXN1bHQuCi0KLS0gSXNzdWUgIzM1MTg6IFJlbW92ZSByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGVudCBCYXNlTWFuYWdlci5mcm9tX2FkZHJlc3MoKQotICBtZXRob2QuCi0KLS0gSXNzdWUgIzEzODU3OiBBZGRlZCB0ZXh0d3JhcC5pbmRlbnQoKSBmdW5jdGlvbiAoaW5pdGlhbCBwYXRjaCBieSBFenJhCi0gIEJlcmNoKQotCi0tIElzc3VlICMyNzM2OiBBZGRlZCBkYXRldGltZS50aW1lc3RhbXAoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzEzODU0OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIKLSAgbm9uLXN0cmluZyBhcmd1bWVudCB0byBTeXN0ZW1FeGl0LgotCi0tIElzc3VlICMxMjE1NzogTWFrZSBwb29sLm1hcCgpIGVtcHR5IGl0ZXJhYmxlcyBjb3JyZWN0bHkuICBJbml0aWFsCi0gIHBhdGNoIGJ5IG1vdWFkLgotCi0tIElzc3VlICMxMTgyMzogZGlzYXNzZW1ibHkgbm93IHNob3dzIGFyZ3VtZW50IGNvdW50cyBvbiBjYWxscyB3aXRoIGtleXdvcmQgYXJncy4KLQotLSBJc3N1ZSAjMTQ3MTE6IG9zLnN0YXRfZmxvYXRfdGltZXMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgotCi0tIExaTUFGaWxlIG5vdyBhY2NlcHRzIHRoZSBtb2RlcyAicmIiLyJ3YiIvImFiIiBhcyBzeW5vbnltcyBvZiAiciIvInciLyJhIi4KLQotLSBUaGUgYnoyIGFuZCBsem1hIG1vZHVsZXMgbm93IGVhY2ggY29udGFpbiBhbiBvcGVuKCkgZnVuY3Rpb24sIGFsbG93aW5nCi0gIGNvbXByZXNzZWQgZmlsZXMgdG8gcmVhZGlseSBiZSBvcGVuZWQgaW4gdGV4dCBtb2RlIGFzIHdlbGwgYXMgYmluYXJ5IG1vZGUuCi0KLS0gQloyRmlsZS5fX2luaXRfXygpIGFuZCBMWk1BRmlsZS5fX2luaXRfXygpIG5vdyBhY2NlcHQgYSBmaWxlIG9iamVjdCBhcyB0aGVpcgotICBmaXJzdCBhcmd1bWVudCwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgc2VwYXJhdGUgImZpbGVvYmoiIGFyZ3VtZW50LgotCi0tIGd6aXAub3BlbigpIG5vdyBhY2NlcHRzIGZpbGUgb2JqZWN0cyBhcyB3ZWxsIGFzIGZpbGVuYW1lcy4KLQotLSBJc3N1ZSAjMTQ5OTI6IG9zLm1ha2VkaXJzKHBhdGgsIGV4aXN0X29rPVRydWUpIHdvdWxkIHJhaXNlIGFuIE9TRXJyb3IKLSAgd2hlbiB0aGUgcGF0aCBleGlzdGVkIGFuZCBoYWQgdGhlIFNfSVNHSUQgbW9kZSBiaXQgc2V0IHdoZW4gaXQgd2FzCi0gIG5vdCBleHBsaWNpdGx5IGFza2VkIGZvci4gIFRoaXMgaXMgbm8gbG9uZ2VyIGFuIGV4Y2VwdGlvbiBhcyBta2RpcgotICBjYW5ub3QgY29udHJvbCBpZiB0aGUgT1Mgc2V0cyB0aGF0IGJpdCBmb3IgaXQgb3Igbm90LgotCi0tIElzc3VlICMxNDk4OTogTWFrZSB0aGUgQ0dJIGVuYWJsZSBvcHRpb24gdG8gaHR0cC5zZXJ2ZXIgYXZhaWxhYmxlIHZpYSBjb21tYW5kCi0gIGxpbmUuCi0KLS0gSXNzdWUgIzE0OTg3OiBBZGQgYSBtaXNzaW5nIGltcG9ydCBzdGF0ZW1lbnQgdG8gaW5zcGVjdC4KLQotLSBJc3N1ZSAjMTA3OTogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm93IGNvcnJlY3RseSBwYXJzZXMgYWxsIHRoZSBleGFtcGxlcwotICBpbiBSRkMyMDQ3LiAgVGhlcmUgaXMgYSBuZWNlc3NhcnkgdmlzaWJsZSBiZWhhdmlvciBjaGFuZ2U6IHRoZSBsZWFkaW5nIGFuZC9vcgotICB0cmFpbGluZyB3aGl0ZXNwYWNlIG9uIEFTQ0lJIHBhcnRzIGlzIG5vdyBwcmVzZXJ2ZWQuCi0KLS0gSXNzdWUgIzE0OTY5OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIGNoYWluaW5nIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrCi0KLS0gSXNzdWUgIzE0OTYzOiBDb252ZXJ0IGNvbnRleHRsaWIuRXhpdFN0YWNrLl9fZXhpdF9fIHRvIHVzZSBhbiBpdGVyYXRpdmUKLSAgYWxnb3JpdGhtIChQYXRjaCBieSBBbG9uIEhvcmV2KQotCi0tIElzc3VlICMxNDc4NTogQWRkIHN5cy5fZGVidWdtYWxsb2NzdGF0cygpIHRvIGhlbHAgZGVidWcgbG93LWxldmVsIG1lbW9yeQotICBhbGxvY2F0aW9uIGlzc3VlcwotCi0tIElzc3VlICMxNDQ0MzogRW5zdXJlIHRoYXQgLnB5IGZpbGVzIGFyZSBieXRlLWNvbXBpbGVkIHdpdGggdGhlIGNvcnJlY3QgUHl0aG9uCi0gIGV4ZWN1dGFibGUgd2l0aGluIGJkaXN0X3JwbSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIFJQTQotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCi0gIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTM3ODM6IEluYWR2ZXJ0ZW50IGFkZGl0aW9ucyB0byB0aGUgcHVibGljIEMgQVBJIGluIHRoZSBQRVAgMzgwCi0gIGltcGxlbWVudGF0aW9uIGhhdmUgZWl0aGVyIGJlZW4gcmVtb3ZlZCBvciBtYXJrZWQgYXMgcHJpdmF0ZSBpbnRlcmZhY2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCi0gIG9mIG9zLmxpc3RkaXIoKS4KLQotLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKLSAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKLSAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCi0KLS0gSXNzdWUgIzE1MDgxOiBEb2N1bWVudCBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIGZpcnN0IGRyYWZ0IG9mIGlwYWRkcmVzcyBtb2R1bGUgQVBJIHJlZmVyZW5jZQotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZwotICBiZWhpbmQuCi0KLS0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcwotICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYwotICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCi0KLS0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKLSAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCi0KLS0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKLSAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCi0KLS0gSXNzdWUgIzE0OTYzOiBBZGQgdGVzdCBjYXNlcyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIGJlaGF2aW91cgotICBpbiBjb250ZXh0bGliLkV4aXRTdGFjayAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTM1OTA6IEltcHJvdmUgc3VwcG9ydCBmb3IgT1MgWCBYY29kZSA0OgotICAgICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIFB5dGhvbiBvciBleHRlbnNpb24gbW9kdWxlcyB3aXRoIHByb2JsZW1hdGljCi0gICAgICBsbHZtLWdjYyBjb21waWxlci4KLSAgICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93Ci0gICAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHBwYyBhbmQKLSAgICAgIHBwYzY0IGFyY2hzIHdoZW4gbm90IGF2YWlsYWJsZS4KLSAgICAqIFNpbmNlIFhjb2RlIDQgbm8gbG9uZ2VyIGluc3RhbGwgU0RLcyBpbiBkZWZhdWx0IGxvY2F0aW9ucywKLSAgICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgaW5zdGFsbGVkIGhlYWRlcnMKLSAgICAgIGFuZCBsaWJzIGlmIHRoZSBTREsgdXNlZCB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90Ci0gICAgICBhdmFpbGFibGUuCi0gICAgKiBVcGRhdGUgLi9jb25maWd1cmUgdG8gdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgdW5pdmVyc2FsIGJ1aWxkczsKLSAgICAgIGluIHBhcnRpY3VsYXIsIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz15ZXMgdXNlcyB0aGUgWGNvZGUgZGVmYXVsdAotICAgICAgU0RLIGFuZCAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIG5vdyBkZWZhdWx0cyB0byAiaW50ZWwiIGlmIHBwYwotICAgICAgbm90IGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTQyMjU6IEZpeCBVbmljb2RlIHN1cHBvcnQgZm9yIGN1cnNlcyAoIzEyNTY3KSBvbiBPUyBYCi0KLS0gSXNzdWUgIzE0OTI4OiBGaXggaW1wb3J0bGliIGJvb3RzdHJhcCBpc3N1ZXMgYnkgdXNpbmcgYSBjdXN0b20gZXhlY3V0YWJsZQotICAoTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYikgdG8gYnVpbGQgUHl0aG9uL2ltcG9ydGxpYi5oLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDQ/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAzMS1NYXktMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0ODM1OiBNYWtlIHBsaXN0bGliIG91dHB1dCBlbXB0eSBhcnJheXMgJiBkaWN0cyBsaWtlIE9TIFguCi0gIFBhdGNoIGJ5IFNpZG5leSBTYW4gTWFydMOtbi4KLQotLSBJc3N1ZSAjMTQ3NDQ6IFVzZSB0aGUgbmV3IF9QeVVuaWNvZGVXcml0ZXIgaW50ZXJuYWwgQVBJIHRvIHNwZWVkIHVwCi0gIHN0ciVhcmdzIGFuZCBzdHIuZm9ybWF0KGFyZ3MpLgotCi0tIElzc3VlICMxNDkzMDogTWFrZSBtZW1vcnl2aWV3IG9iamVjdHMgd2Vha3JlZmFibGUuCi0KLS0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCi0gIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgotCi0tIElzc3VlICMxNDg1NzogZml4IHJlZ3Jlc3Npb24gaW4gcmVmZXJlbmNlcyB0byBQRVAgMzEzNSBpbXBsaWNpdCBfX2NsYXNzX18KLSAgY2xvc3VyZSB2YXJpYWJsZSAoUmVvcGVucyBpc3N1ZSAjMTIzNzApCi0KLS0gSXNzdWUgIzE0NzEyIChQRVAgNDA1KTogVmlydHVhbCBlbnZpcm9ubWVudHMuIEltcGxlbWVudGVkIGJ5IFZpbmF5IFNhamlwLgotCi0tIElzc3VlICMxNDY2MCAoUEVQIDQyMCk6IE5hbWVzcGFjZSBwYWNrYWdlcy4gSW1wbGVtZW50ZWQgYnkgRXJpYyBTbWl0aC4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzkyNjA6IEEgZmluZXItZ3JhaW5lZCBpbXBvcnQgbG9jay4gIE1vc3Qgb2YgdGhlIGltcG9ydCBzZXF1ZW5jZQotICBub3cgdXNlcyBwZXItbW9kdWxlIGxvY2tzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGVsaW1pbmF0aW5nCi0gIHdlbGwta25vd24gaXNzdWVzIHdpdGggdGhyZWFkcyBhbmQgaW1wb3J0cy4KLQotLSBJc3N1ZSAjMTQ2MjQ6IFVURi0xNiBkZWNvZGluZyBpcyBub3cgM3ggdG8gNHggZmFzdGVyIG9uIHZhcmlvdXMgaW5wdXRzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIGFzZGxfc2VxIGFuZCBhc2RsX2ludF9zZXEgYXJlIG5vdyBQeV9zc2l6ZV90IHNpemVkLgotCi0tIElzc3VlICMxNDEzMyAoUEVQIDQxNSk6IEltcGxlbWVudCBzdXBwcmVzc2lvbiBvZiBfX2NvbnRleHRfXyBkaXNwbGF5IHdpdGggYW4KLSAgYXR0cmlidXRlIG9uIEJhc2VFeGNlcHRpb24uIFRoaXMgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG1lY2hhbmlzbSBvZiBQRVAgNDA5LgotCi0tIElzc3VlICMxNDQxNzogTXV0YXRpbmcgYSBkaWN0IGR1cmluZyBsb29rdXAgbm93IHJlc3RhcnRzIHRoZSBsb29rdXAgaW5zdGVhZAotICBvZiByYWlzaW5nIGEgUnVudGltZUVycm9yICh1bmRvZXMgaXNzdWUgIzE0MjA1KS4KLQotLSBJc3N1ZSAjMTQ3Mzg6IFNwZWVkLXVwIFVURi04IGRlY29kaW5nIG9uIG5vbi1BU0NJSSBkYXRhLiAgUGF0Y2ggYnkgU2VyaGl5Ci0gIFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcwotICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ2OTA6IFVzZSBtb25vdG9uaWMgY2xvY2sgaW5zdGVhZCBvZiBzeXN0ZW0gY2xvY2sgaW4gdGhlIHNjaGVkLAotICBzdWJwcm9jZXNzIGFuZCB0cmFjZSBtb2R1bGVzLgotCi0tIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KLSAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxMjUxNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCBpZiBpdCBnZXRzIHRvIEVPRiB3aGlsZSBwYXJzaW5nCi0gIGEgTUlNRSBwYXJ0IHdpdGhvdXQgc2VlaW5nIHRoZSBjbG9zaW5nIE1JTUUgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAotICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cwotICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCi0KLS0gSXNzdWUgIzE0OTI1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IHdoZW4gdGhlIHBhcnNlciBkZWNpZGVzIHRoYXQgdGhlcmUKLSAgaXMgYSBtaXNzaW5nIGhlYWRlci9ib2R5IHNlcGFyYXRvciBsaW5lLiAgTWFsZm9ybWVkSGVhZGVyRGVmZWN0LCB3aGljaCB0aGUKLSAgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBhY3R1YWxseSBnZW5lcmF0ZSwgaXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCi0gIHRoZSBwYXJlbnQgd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGRpYWxvZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzg3Mzk6IFVwZGF0ZWQgc210cGQgdG8gc3VwcG9ydCBSRkMgNTMyMSwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRoZQotICBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4KLQotLSBJc3N1ZSAjNjY1MTk0OiBBZGRlZCBhIGxvY2FsdGltZSBmdW5jdGlvbiB0byBlbWFpbC51dGlscyB0byBwcm92aWRlIGFuCi0gIGF3YXJlIGxvY2FsIGRhdGV0aW1lIGZvciB1c2UgaW4gc2V0dGluZyBEYXRlIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzEyNTg2OiBBZGRlZCBuZXcgcHJvdmlzaW9uYWwgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgY29udmVuaWVudAotICB1bmljb2RlIHN1cHBvcnQgZm9yIGVtYWlsIGhlYWRlcnMuICBTZWUgV2hhdCdzIE5ldyBmb3IgZGV0YWlscy4KLQotLSBJc3N1ZSAjMTQ3MzE6IFJlZmFjdG9yZWQgZW1haWwgUG9saWN5IGZyYW1ld29yayB0byBzdXBwb3J0IGZ1bGwgYmFja3dhcmQKLSAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIgYnkgZGVmYXVsdCB5ZXQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YKLSAgbmV3IGZlYXR1cmVzIHRocm91Z2ggbmV3IHBvbGljaWVzLiAgTm90ZSB0aGF0IFBvbGljeS5tdXN0X2JlXzdiaXQgaXMgcmVuYW1lZAotICB0byBjdGVfdHlwZS4KLQotLSBJc3N1ZSAjMTQ4NzY6IFVzZSB1c2VyLXNlbGVjdGVkIGZvbnQgZm9yIGhpZ2hsaWdodCBjb25maWd1cmF0aW9uLgotCi0tIElzc3VlICMxNDkyMDogRml4IHRoZSBoZWxwKHVybGxpYi5wYXJzZSkgZmFpbHVyZSBvbiBsb2NhbGUgQyBvbiB0ZXJtaW5hbHMuCi0gIEhhdmUgYXNjaWkgY2hhcmFjdGVycyBpbiBoZWxwLgotCi0tIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCi0gIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgotCi0tIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKLSAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KLQotLSBJc3N1ZSAjMTQ4NjI6IEFkZCBtaXNzaW5nIG5hbWVzIHRvIG9zLl9fYWxsX18KLQotLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTM1ODU6IEFkZGVkIGNvbnRleHRsaWIuRXhpdFN0YWNrCi0KLS0gUEVQIDMxNDQsIElzc3VlICMxNDgxNDogQWRkZWQgdGhlIGlwYWRkcmVzcyBtb2R1bGUKLQotLSBJc3N1ZSAjMTQ0MjY6IENvcnJlY3QgdGhlIERhdGUgZm9ybWF0IGluIEV4cGlyZXMgYXR0cmlidXRlIG9mIFNldC1Db29raWUKLSAgSGVhZGVyIGluIENvb2tpZS5weS4KLQotLSBJc3N1ZSAjMTQ1ODg6IFRoZSB0eXBlcyBtb2R1bGUgbm93IHByb3ZpZGUgbmV3X2NsYXNzKCkgYW5kIHByZXBhcmVfY2xhc3MoKQotICBmdW5jdGlvbnMgdG8gc3VwcG9ydCBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkKLSAgRGFuaWVsIFVyYmFuIGFuZCBOaWNrIENvZ2hsYW4uCi0KLS0gSXNzdWUgIzEzMTUyOiBBbGxvdyB0byBzcGVjaWZ5IGEgY3VzdG9tIHRhYnNpemUgZm9yIGV4cGFuZGluZyB0YWJzIGluCi0gIHRleHR3cmFwLiBQYXRjaCBieSBKb2huIEZldWVyc3RlaW4uCi0KLS0gSXNzdWUgIzE0NzIxOiBTZW5kIHRoZSBjb3JyZWN0ICdDb250ZW50LWxlbmd0aDogMCcgaGVhZGVyIHdoZW4gdGhlIGJvZHkgaXMgYW4KLSAgZW1wdHkgc3RyaW5nICcnLiBJbml0aWFsIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEFydmUgS251ZHNlbi4KLQotLSBJc3N1ZSAjMTQwNzI6IEZpeCBwYXJzaW5nIG9mICd0ZWwnIFVSSXMgaW4gdXJscGFyc2UgYnkgbWFraW5nIHRoZSBjaGVjayBmb3IKLSAgcG9ydHMgc3RyaWN0ZXIuCi0KLS0gSXNzdWUgIzkzNzQ6IEdlbmVyaWMgcGFyc2luZyBvZiBxdWVyeSBhbmQgZnJhZ21lbnQgcG9ydGlvbnMgb2YgdXJsIGZvciBhbnkKLSAgc2NoZW1lLiBTdXBwb3J0ZWQgYm90aCBieSBSRkMzOTg2IGFuZCBSRkMyMzk2LgotCi0tIElzc3VlICMxNDc5ODogRml4IHRoZSBmdW5jdGlvbnMgaW4gcHljbGJyIHRvIHJhaXNlIGFuIEltcG9ydEVycm9yCi0gIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYSBkb3R0ZWQgbmFtZSBpcyBub3QgYSBwYWNrYWdlLiBQYXRjaCBieQotICBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCi0gIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQotICBTZXJnZXkgTWV6ZW50c2V2LgotCi0tIElzc3VlICMxMzAzMTogU21hbGwgc3BlZWQtdXAgZm9yIHRhcmZpbGUgd2hlbiB1bnppcHBpbmcgdGFyZmlsZXMuCi0gIFBhdGNoIGJ5IEp1c3RpbiBQZWVsLgotCi0tIElzc3VlICMxNDc4MDogdXJsbGliLnJlcXVlc3QudXJsb3BlbigpIG5vdyBoYXMgYSBgYGNhZGVmYXVsdGBgIGFyZ3VtZW50Ci0gIHRvIHVzZSB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZS4gIEluaXRpYWwgcGF0Y2ggYnkgSmFtZXMgT2FrbGV5LgotCi0tIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBhbmQgcmFuZ2UoKSBpbmRleGluZyB3aXRoIGxhcmdlIGluZGljZXMKLSAgKD49IDIgKiogMzIpIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxNDczMjogVGhlIF9jc3YgbW9kdWxlIG5vdyB1c2VzIFBFUCAzMTIxIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNDgwOTogQWRkIEhUVFAgc3RhdHVzIGNvZGVzIGludHJvZHVjZWQgYnkgUkZDIDY1ODUgdG8gaHR0cC5zZXJ2ZXIKLSAgYW5kIGh0dHAuY2xpZW50LiBQYXRjaCBieSBFdW5nSnVuIFlpLgotCi0tIElzc3VlICMxNDc3NzogdGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuCi0gIGFjY2Vzc2luZyB0aGUgVGsgY2xpcGJvYXJkLiAgTW9kaWZ5IGNsaXBib2FkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQotICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKLSAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMxNDc3MzogRml4IG9zLmZ3YWxrKCkgZmFpbGluZyBvbiBkYW5nbGluZyBzeW1saW5rcy4KLQotLSBJc3N1ZSAjMTI1NDE6IEJlIGxlbmllbnQgd2l0aCBxdW90ZXMgYXJvdW5kIFJlYWxtIGZpZWxkIG9mIEhUVFAgQmFzaWMKLSAgQXV0aGVudGF0aW9uIGluIHVybGxpYjIuCi0KLS0gSXNzdWUgIzE0ODA3OiBtb3ZlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlKCkgdG8gc3RhdC5maWxlbW9kZSgpIGFuZCBhZGQKLSAgZG9jIGVudHJ5LiBBZGQgdGFyZmlsZS5maWxlbW9kZSBhbGlhcyB3aXRoIGRlcHJlY2F0aW9uIHdhcm5pbmcuCi0KLS0gSXNzdWUgIzEzODE1OiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgbm93IHJldHVybnMgaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ1MzI6IEFkZCBhIHNlY3VyZV9jb21wYXJlKCkgaGVscGVyIHRvIHRoZSBobWFjIG1vZHVsZSwgdG8gbWl0aWdhdGUKLSAgdGltaW5nIGF0dGFja3MuIFBhdGNoIGJ5IEpvbiBPYmVyaGVpZGUuCi0KLS0gQWRkIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLgotCi0tIElzc3VlICMxNDM2NjogU3VwcG9ydCBsem1hIGNvbXByZXNzaW9uIGluIHppcCBmaWxlcy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTM5NTk6IEludHJvZHVjZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBhbmQgZG9jdW1lbnQKLSAgaW1wLmZpbmRfbW9kdWxlL2xvYWRfbW9kdWxlIGFzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzE0MDgyOiBzaHV0aWwuY29weTIoKSBub3cgY29waWVzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGlmIHBvc3NpYmxlLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpL2dldF9maWxlbmFtZSgpIGFuZAotICBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKSBoYXZlIHRoZWlyIHNpbmdsZQotICBhcmd1bWVudCBiZSBvcHRpb25hbC4gQWxsb3dzIGZvciB0aGUgcmVwbGFjZW1lbnQgKGFuZCB0aHVzIGRlcHJlY2F0aW9uKSBvZgotICBpbXAubG9hZF9zb3VyY2UoKS9sb2FkX3BhY2thZ2UoKS9sb2FkX2NvbXBpbGVkKCkuCi0KLS0gSXNzdWUgIzEzOTU5OiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdGhlIG5ldwotICBhdHRyaWJ1dGVzIG9uIGltcG9ydGxpYi5tYWNoaW5lcnk6IFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCi0gIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsIGFuZCBFWFRFTlNJT05fU1VGRklYRVMuIFRoaXMKLSAgbGVkIHRvIGFuIGluZGlyZWN0IGRlcHJlY2F0aW9uIG9mIGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpLgotCi0tIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90Ci0gIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTQ3NTM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nJ3MgaGFuZGxpbmcgb2YgbmVnYXRpdmUgdGltZW91dHMKLSAgdGhlIHNhbWUgYXMgaXQgd2FzIGluIFB5dGhvbiAzLjIuCi0KLS0gSXNzdWUgIzE0NTgzOiBGaXggaW1wb3J0bGliIGJ1ZyB3aGVuIGEgcGFja2FnZSdzIF9faW5pdF9fLnB5IHdvdWxkIGZpcnN0Ci0gIGltcG9ydCBvbmUgb2YgaXRzIG1vZHVsZXMgdGhlbiByYWlzZSBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTQ3NDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIEVsbGlwc2lzICgnLi4uJykgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQ2OTc6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIHNldCBkaXNwbGF5cyBhbmQgc2V0IGNvbXByZWhlbnNpb25zIGluCi0gIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0NzAxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciAncmFpc2UgLi4uIGZyb20nIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gQWRkIHN1cHBvcnQgZm9yIHRpbWVvdXRzIHRvIHRoZSBhY3F1aXJlKCkgbWV0aG9kcyBvZgotICBtdWx0aXByb2Nlc3NpbmcncyBsb2NrL3NlbWFwaG9yZS9jb25kaXRpb24gcHJveGllcy4KLQotLSBJc3N1ZSAjMTM5ODk6IEFkZCBzdXBwb3J0IGZvciB0ZXh0IG1vZGUgdG8gZ3ppcC5vcGVuKCkuCi0KLS0gSXNzdWUgIzE0MTI3OiBUaGUgb3Muc3RhdCgpIHJlc3VsdCBvYmplY3Qgbm93IHByb3ZpZGVzIHRocmVlIGFkZGl0aW9uYWwKLSAgZmllbGRzOiBzdF9jdGltZV9ucywgc3RfbXRpbWVfbnMsIGFuZCBzdF9hdGltZV9ucywgcHJvdmlkaW5nIHRob3NlIHRpbWVzIGFzIGFuCi0gIGludGVnZXIgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uICBUaGUgZnVuY3Rpb25zIG9zLnV0aW1lKCksIG9zLmx1dGltZXMoKSwKLSAgYW5kIG9zLmZ1dGltZXMoKSBub3cgYWNjZXB0IGEgbmV3IHBhcmFtZXRlciwgbnMsIHdoaWNoIGFjY2VwdHMgbXRpbWUgYW5kIGF0aW1lCi0gIGFzIGludGVnZXJzIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLgotCi0tIElzc3VlICMxNDEyNyBhbmQgIzEwMTQ4OiBzaHV0aWwuY29weXN0YXQgbm93IHByZXNlcnZlcyBleGFjdCBtdGltZSBhbmQgYXRpbWUKLSAgb24gZmlsZXN5c3RlbXMgcHJvdmlkaW5nIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKLSAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KLQotLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCi0KLS0gSXNzdWUgIzE0OTI5OiBTdG9wIElETEUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgotICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJRExFLgotICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cwotICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0Njk1OiBCcmluZyBUb29scy9wYXJzZXIvdW5wYXJzZS5weSBzdXBwb3J0IHVwIHRvIGRhdGUgd2l0aAotICB0aGUgUHl0aG9uIDMuMyBHcmFtbWFyLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ0NzI6IFVwZGF0ZSAuZ2l0aWdub3JlLiBQYXRjaCBieSBNYXRlaiBDZXBsLgotCi0tIFVwZ3JhZGUgV2luZG93cyBsaWJyYXJ5IHZlcnNpb25zOiBiemlwIDEuMC42LCBPcGVuU1NMIDEuMC4xYy4KLQotLSBJc3N1ZSAjMTQ2OTM6IFVuZGVyIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgaGFzaGxpYidzIGZhbGxiYWNrIG1vZHVsZXMgYXJlCi0gIGFsd2F5cyBjb21waWxlZCwgZXZlbiBpZiBPcGVuU1NMIGlzIHByZXNlbnQgYXQgYnVpbGQgdGltZS4KLQotLSBJc3N1ZSAjMTMyMTA6IFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgVlMyMDEwLCBwb3J0ZWQgZnJvbSBWUzIwMDguCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAotICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KLSAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCi0gIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgotCi0tIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCi0gIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgotCi0tIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5Ci0gIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAxLU1heS0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4gaXMgY2xvc2VkLgotCi0tIElzc3VlICMxNDUyMTogTWFrZSByZXN1bHQgb2YgZmxvYXQoJ25hbicpIGFuZCBmbG9hdCgnLW5hbicpIG1vcmUgY29uc2lzdGVudAotICBhY3Jvc3MgcGxhdGZvcm1zLgotCi0tIElzc3VlICMxNDY0NjogX19pbXBvcnRfXygpIHNldHMgX19sb2FkZXJfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCi0KLS0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5tZXRhX3BhdGguIElmCi0gIHN5cy5tZXRhX3BhdGggaXMgZm91bmQgdG8gYmUgZW1wdHksIHJhaXNlIEltcG9ydFdhcm5pbmcuCi0KLS0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5wYXRoX2hvb2tzLiBJZgotICBzeXMucGF0aF9ob29rcyBpcyBmb3VuZCB0byBiZSBlbXB0eSwgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkLiBOb25lIGlzIG5vdwotICBpbnNlcnRlZCBpbnRvIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlmIG5vIGZpbmRlciB3YXMgZGlzY292ZXJlZC4gVGhpcyBhbHNvCi0gIG1lYW5zIGltcC5OdWxsSW1wb3J0ZXIgaXMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgdXNlZC4KLQotLSBJc3N1ZSAjMTM5MDM6IEltcGxlbWVudCBQRVAgNDEyLiBJbmRpdmlkdWFsIGRpY3Rpb25hcnkgaW5zdGFuY2VzIGNhbiBub3cgc2hhcmUKLSAgdGhlaXIga2V5cyB3aXRoIG90aGVyIGRpY3Rpb25hcmllcy4gQ2xhc3NlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHRvIHNoYXJlCi0gIHRoZWlyIGluc3RhbmNlIGRpY3Rpb25hcnkga2V5cyBmb3IgaW1wcm92ZWQgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZS4KLQotLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKLSAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgotCi0tIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQotICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCi0KLS0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50Ci0gIHdpdGggdmFsdWUgMC4KLQotLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KLSAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCi0gIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKLSAgZm91bmQgaW4gX19idWlsdGluc19fLgotCi0tIElzc3VlICMxMjU5OTogQmUgbW9yZSBzdHJpY3QgaW4gYWNjZXB0aW5nIE5vbmUgY29tcGFyZWQgdG8gYSBmYWxzZS1saWtlCi0gIG9iamVjdCBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIgYW5kCi0gIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci4KLQotLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgotCi0tIElzc3VlICMxNDU5MjogQXR0ZW1wdGluZyBhIHJlbGF0aXZlIGltcG9ydCB3L28gX19wYWNrYWdlX18gb3IgX19uYW1lX18gc2V0IGluCi0gIGdsb2JhbHMgcmFpc2VzIGEgS2V5RXJyb3IuCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMDg1NDogVGhlIEltcG9ydEVycm9yIHJhaXNlZCB3aGVuIGFuIGV4dGVuc2lvbiBtb2R1bGUgb24gV2luZG93cwotICBmYWlscyB0byBpbXBvcnQgbm93IHVzZXMgdGhlIG5ldyBwYXRoIGFuZCBuYW1lIGF0dHJpYnV0ZXMgZnJvbQotICBJc3N1ZSAjMTU1OTU0OS4KLQotLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZwotICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgotICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgotCi0tIF9faW1wb3J0X18oKSBub3cgbWF0Y2hlcyBQRVAgMzI4IGFuZCBkb2N1bWVudGF0aW9uIGJ5IGRlZmF1bHRpbmcgJ2luZGV4JyB0byAwCi0gIGluc3RlYWQgb2YgLTEgYW5kIHJlbW92aW5nIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIHZhbHVlcy4KLQotLSBJc3N1ZSAjMjM3NzogTWFrZSBpbXBvcnRsaWIgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9faW1wb3J0X18oKS4KLQotLSBJc3N1ZSAjMTU1OTU0OTogSW1wb3J0RXJyb3Igbm93IGhhcyAnbmFtZScgYW5kICdwYXRoJyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNldAotICB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cyB0byBpdHMgY29uc3RydWN0b3IuIFRoZXkgYXJlIGN1cnJlbnRseSBub3Qgc2V0IGJ5Ci0gIGltcG9ydCBhcyB0aGV5IGFyZSBtZWFudCBmb3IgdXNlIGJ5IGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKLSAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCi0gIGJ5IFN1bWFuIFNhaGEuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KLQotLSBJc3N1ZSAjMTQzNzE6IFN1cHBvcnQgYnppcDIgaW4gemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKLSAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxNDY5NjogRml4IHBhcnNlciBtb2R1bGUgdG8gdW5kZXJzdGFuZCAnbm9ubG9jYWwnIGRlY2xhcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTA5NDE6IEZpeCBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0IG5lYXIKLSAgdGhlIERTVCB0cmFuc2l0aW9uLiAgUGF0Y2ggYnkgSm9lIFBldGVyc29uLgotCi0tIElzc3VlICM5MTU0OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kIGZ1bmN0aW9uIGFubm90YXRpb25zLgotCi0tIElzc3VlICM2MDg1OiBJbiBodHRwLnNlcnZlci5weSBTaW1wbGVIVFRQU2VydmVyLmFkZHJlc3Nfc3RyaW5nIHJldHVybnMgdGhlCi0gIGNsaWVudCBpcCBhZGRyZXNzIGluc3RlYWQgY2xpZW50IGhvc3RuYW1lLiBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzE0MzA5OiBEZXByZWNhdGUgdGltZS5jbG9jaygpLCB1c2UgdGltZS5wZXJmX2NvdW50ZXIoKSBvcgotICB0aW1lLnByb2Nlc3NfdGltZSgpIGluc3RlYWQuCi0KLS0gSXNzdWUgIzE0NDI4OiBJbXBsZW1lbnQgdGhlIFBFUCA0MTguIEFkZCB0aW1lLmdldF9jbG9ja19pbmZvKCksCi0gIHRpbWUucGVyZl9jb3VudGVyKCkgYW5kIHRpbWUucHJvY2Vzc190aW1lKCkgZnVuY3Rpb25zLCBhbmQgcmVuYW1lCi0gIHRpbWUuc3RlYWR5KCkgdG8gdGltZS5tb25vdG9uaWMoKS4KLQotLSBJc3N1ZSAjMTQ2NDY6IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgbm93IHNldHMgX19sb2FkZXJfXyBhbmQKLSAgX19wYWNrYWdlX18gKHdoZW4gcG9zc2libGUpLgotCi0tIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKLSAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgotCi0tIElzc3VlICM0ODkyOiBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCi0gIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucy4gIFBhdGNoIGJ5IFJpY2hhcmQgT3Vka2VyayAoc2J0KS4KLQotLSBJc3N1ZSAjMTQxNjA6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuCi0gIHRoZSBsaW5rcyB3ZXJlIG5vdCBsb2NhdGVkIGluIGFuIGFyY2hpdmUgc3ViZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNDYzODogcHlkb2Mgbm93IHRyZWF0cyBub24tc3RyaW5nIF9fbmFtZV9fIHZhbHVlcyBhcyBpZiB0aGV5Ci0gIHdlcmUgbWlzc2luZywgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCi0gIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KLQotLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCi0gIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KLQotLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdwotICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCi0gIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAotICBqb2luaW5nLgotCi0tIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKLSAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCi0KLS0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQotICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgotCi0tIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwotICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KLQotLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKLSAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCi0gIGEgYmFyZSAnLycuCi0KLS0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgotCi0tIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQotICB0aGUgcmVsb2FkLgotCi0tIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCi0gIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgotCi0tIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKLSAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCi0KLS0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKLSAgYXR0cmlidXRlcy4KLQotLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCi0gIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCi0gIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgcmFpc2VkIGF0IHRoZSB0aW1lCi0gIHRoZSBjb21tZW50IGlzIHNldCByYXRoZXIgdGhhbiBhdCB0aGUgdGltZSB0aGUgemlwZmlsZSBpcyB3cml0dGVuLgotCi0tIHRyYWNlLkNvdmVyYWdlUmVzdWx0cy5pc19pZ25vcmVkX2ZpbGVuYW1lKCkgbm93IGlnbm9yZXMgYW55IG5hbWUgdGhhdCBzdGFydHMKLSAgd2l0aCAiPCIgYW5kIGVuZHMgd2l0aCAiPiIgaW5zdGVhZCBvZiBzcGVjaWFsLWNhc2luZyAiPHN0cmluZz4iIGFuZAotICAiPGRvY3Rlc3QgIi4KLQotLSBJc3N1ZSAjMTI1Mzc6IFRoZSBtYWlsYm94IG1vZHVsZSBubyBsb25nZXIgZGVwZW5kcyBvbiBrbm93bGVkZ2Ugb2YgaW50ZXJuYWwKLSAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgZW1haWwgcGFja2FnZSBNZXNzYWdlIG9iamVjdC4KLQotLSBJc3N1ZSAjNzk3ODogc29ja2V0c2VydmVyIG5vdyByZXN0YXJ0cyB0aGUgc2VsZWN0KCkgY2FsbCB3aGVuIEVJTlRSIGlzCi0gIHJldHVybmVkLiAgVGhpcyBhdm9pZHMgY3Jhc2hpbmcgdGhlIHNlcnZlciBsb29wIHdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQuCi0gIFBhdGNoIGJ5IEplcnp5IEtvemVyYS4KLQotLSBJc3N1ZSAjMTQ1MjI6IEF2b2lkIGR1cGxpY2F0aW5nIHNvY2tldCBoYW5kbGVzIGluIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLgotICBQYXRjaCBieSBzYnQuCi0KLS0gRG9uJ3QgUHlfREVDUkVGIE5VTEwgdmFyaWFibGUgaW4gaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci4KLQotLSBJc3N1ZSAjMzAzMzogQWRkIGRpc3BsYXlvZiBwYXJhbWV0ZXIgdG8gdGtpbnRlciBmb250LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KLQotLSBJc3N1ZSAjMTQ0ODI6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKLSAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfVU5JWCB0eXBlIGFkZHJlc3MgdW5kZXIKLSAgV2luZG93cy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQotLSBJc3N1ZSAjODAyMzEwOiBHZW5lcmF0ZSBhbHdheXMgdW5pcXVlIHRraW50ZXIgZm9udCBuYW1lcyBpZiBub3QgZGlyZWN0bHkgcGFzc2VkLgotCi0tIElzc3VlICMxNDE1MTogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQotICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9QSVBFIHR5cGUgYWRkcmVzcyB1bmRlcgotICBub24tV2luZG93cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLS0gSXNzdWUgIzE0NDkzOiBVc2UgZ3Zmcy1vcGVuIG9yIHhkZy1vcGVuIGluIHdlYmJyb3dzZXIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKLSAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNDAyNjogSW4gdGVzdF9jbWRfbGluZV9zY3JpcHQsIGNoZWNrIHRoYXQgc3lzLmFyZ3YgaXMgcG9wdWxhdGVkCi0gIGNvcnJlY3RseSBmb3IgdGhlIHZhcmlvdXMgaW52b2NhdGlvbiBhcHByb2FjaGVzIChQYXRjaCBieSBKYXNvbiBZZW8pCi0KLS0gSXNzdWUgIzE0MDMyOiBGaXggaW5jb3JyZWN0IHZhcmlhYmxlIG5hbWUgaW4gdGVzdF9jbWRfbGluZV9zY3JpcHQgZGVidWdnaW5nCi0gIG1lc3NhZ2UgKFBhdGNoIGJ5IEphc29uIFllbykKLQotLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZwotICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKLSAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCi0KLS0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgotICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLVRvb2xzIC8gRGVtb3MKLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzU2MTogVGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBoYXMgYW4gb3B0aW9uLCBvZmYgYnkgZGVmYXVsdCwgZm9yCi0gIHBsYWNpbmcgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaW50byB0aGUgc3lzdGVtICJQYXRoIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KLSAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNDA5ODogTmV3IGZ1bmN0aW9ucyBQeUVycl9HZXRFeGNJbmZvIGFuZCBQeUVycl9TZXRFeGNJbmZvLgotICBQYXRjaCBieSBTdGVmYW4gQmVobmVsLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMS1BcHItMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2ODMzNjg6IG9iamVjdC5fX25ld19fIGFuZCBvYmplY3QuX19pbml0X18gcmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhleQotICBhcmUgcGFzc2VkIGFyZ3VtZW50cyBhbmQgdGhlaXIgY29tcGxlbWVudGFyeSBtZXRob2QgaXMgbm90IG92ZXJyaWRkZW4uCi0KLS0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCi0gIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCi0KLS0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKLSAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCi0KLS0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAotICBwYXNzZWQgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQotICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KLQotLSBJc3N1ZSAjMTQyMDU6IGRpY3QgbG9va3VwIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUgZGljdCBpcyBtb2RpZmllZAotICBkdXJpbmcgYSBsb29rdXAuCi0KLS0gSXNzdWUgIzE0MjIwOiBXaGVuIGEgZ2VuZXJhdG9yIGlzIGRlbGVnYXRpbmcgdG8gYW5vdGhlciBpdGVyYXRvciB3aXRoIHRoZQotICB5aWVsZCBmcm9tIHN5bnRheCwgaXQgbmVlZHMgdG8gaGF2ZSBpdHMgYGBnaV9ydW5uaW5nYGAgZmxhZyBzZXQgdG8gVHJ1ZS4KLQotLSBJc3N1ZSAjMTQ0MzU6IFJlbW92ZSBkZWRpY2F0ZWQgYmxvY2sgYWxsb2NhdG9yIGZyb20gZmxvYXRvYmplY3QuYyBhbmQgcmVseQotICBvbiB0aGUgUHlPYmplY3RfTWFsbG9jKCkgYXBpIGxpa2UgYWxsIG90aGVyIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQyODg6IEFsbG93IHRoZSBzZXJpYWxpemF0aW9uIG9mIGJ1aWx0aW4gaXRlcmF0b3JzCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQzMDA6IFVuZGVyIFdpbmRvd3MsIHNvY2tldHMgY3JlYXRlZCB1c2luZyBzb2NrZXQuZHVwKCkgbm93IGFsbG93Ci0gIG92ZXJsYXBwZWQgSS9PLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCi0KLS0gSXNzdWUgIzE0NDA2OiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIGBgY29uY3VycmVudC5mdXR1cmVzLndhaXQoCi0gIHJldHVybl93aGVuPUFMTF9DT01QTEVURUQpYGAuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KLQotLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCi0KLS0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKLSAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgotCi0tIElzc3VlICMxNDI5NTogQWRkIHVuaXR0ZXN0Lm1vY2sKLQotLSBJc3N1ZSAjNzY1MjogQWRkIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgb3B0aW9uIHRvIGNvbmZpZ3VyZSBmb3IgbGlua2luZwotICB0aGUgX2RlY2ltYWwgbW9kdWxlIGFnYWluc3QgYW4gaW5zdGFsbGVkIGxpYm1wZGVjLgotCi0tIElzc3VlICMxNDM4MDogTUlNRVRleHQgbm93IGRlZmF1bHRzIHRvIHV0Zi04IHdoZW4gcGFzc2VkIG5vbi1BU0NJSSB1bmljb2RlCi0gIHdpdGggbm8gY2hhcnNldCBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgotICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKLSAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgotCi0tIElzc3VlICMxNDIwNDogVGhlIHNzbCBtb2R1bGUgbm93IGhhcyBzdXBwb3J0IGZvciB0aGUgTmV4dCBQcm90b2NvbAotICBOZWdvdGlhdGlvbiBleHRlbnNpb24sIGlmIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkuCi0gIFBhdGNoIGJ5IENvbGluIE1hcmMuCi0KLS0gSXNzdWUgIzMwMzU6IFVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyIGFyZSBtYXJrZWQgYXMgcGVuZGluZyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KLSAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzc2NTI6IEludGVncmF0ZSB0aGUgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaWJtcGRlYyBsaWJyYXJ5IHRvIHNwZWVkCi0gIHVwIHRoZSBkZWNpbWFsIG1vZHVsZS4gUGVyZm9ybWFuY2UgZ2FpbnMgb2YgdGhlIG5ldyBDIGltcGxlbWVudGF0aW9uIGFyZQotICBiZXR3ZWVuIDEweCBhbmQgMTAweCwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4KLQotLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAotICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KLQotLSBJc3N1ZSAjMTM2OTQ6IGFzeW5jaHJvbm91cyBjb25uZWN0IGluIGFzeW5jb3JlLmRpc3BhdGNoZXIgZG9lcyBub3Qgc2V0IGFkZHIKLSAgYXR0cmlidXRlLgotCi0tIElzc3VlICMxNDM0NDogZml4ZWQgdGhlIHJlcHIgb2YgZW1haWwucG9saWN5IG9iamVjdHMuCi0KLS0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCi0gIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KLQotLSBJc3N1ZSAjMTQzMzU6IG11bHRpcHJvY2Vzc2luZydzIGN1c3RvbSBQaWNrbGVyIHN1YmNsYXNzIG5vdyBpbmhlcml0cyBmcm9tCi0gIHRoZSBDLWFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSW1wcm92ZSB0aGUgbWVtb3J5IHV0aWxpemF0aW9uIGFuZCBzcGVlZCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlLgotCi0tIElzc3VlICMxNDIyMjogVXNlIHRoZSBuZXcgdGltZS5zdGVhZHkoKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRpbWUudGltZSgpIGZvcgotICB0aW1lb3V0IGluIHF1ZXVlIGFuZCB0aHJlYWRpbmcgbW9kdWxlcyB0byBub3QgYmUgYWZmZWN0ZWQgb2Ygc3lzdGVtIHRpbWUKLSAgdXBkYXRlLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIGxpYjJ0bzMucHl0cmVlLkJhc2UuZ2V0X3ByZWZpeC9zZXRfcHJlZml4LgotCi0tIElzc3VlICMxNDIzNDogQ1ZFLTIwMTItMDg3NjogUmFuZG9taXplIGhhc2hlcyBvZiB4bWwgYXR0cmlidXRlcyBpbiB0aGUgaGFzaAotICB0YWJsZSBpbnRlcm5hbCB0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEKLSAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCi0gIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCi0KLS0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KLSAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCi0KLS0gSXNzdWUgIzE0MDYyOiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IGZvbGRzIEhlYWRlciBvYmplY3RzLAotICBpbmNsdWRpbmcgdXNpbmcgbGluZXNlcCB3aGVuIGZvbGRpbmcuCi0KLS0gSXNzdWUgIzEzODM5OiBXaGVuIGludm9rZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIHBzdGF0cyBtb2R1bGUgbm93Ci0gIGFjY2VwdHMgc2V2ZXJhbCBmaWxlbmFtZXMgb2YgcHJvZmlsZSBzdGF0IGZpbGVzIGFuZCBtZXJnZXMgdGhlbSBhbGwuCi0gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KLQotLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCi0KLS0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCi0KLS0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgotCi0tIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksCi0gIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpCi0gIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciBpZiBsb2NhbHRpbWUoKSBvciBnbXRpbWUoKSBmYWlsZWQuCi0KLS0gSXNzdWUgIzE0MTgwOiB0aW1lLmN0aW1lKCksIGdtdGltZSgpLCB0aW1lLmxvY2FsdGltZSgpLAotICBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAotICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yLCBpbnN0ZWFkIG9mCi0gIGEgVmFsdWVFcnJvciwgaWYgdGhlIHRpbWVzdGFtcCBkb2VzIG5vdCBmaXQgaW4gdGltZV90LgotCi0tIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAotICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0b3dhcmRzIHplcm8KLSAgaW5zdGVhZCBvZiByb3VuZGluZyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KLQotLSBJc3N1ZSAjMTA1NDM6IEZpeCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB3aXRoIEp5dGhvbiBieXRlY29kZSBmaWxlcy4KLQotLSBJc3N1ZSAjMTE3ODg2MzogU2VwYXJhdGUgaW5pdGlhbGlzYXRpb24gZnJvbSBzZXR0aW5nIHdoZW4gaW5pdGlhbGl6aW5nCi0gIFRraW50ZXIuVmFyaWFibGVzOyBoYXJtb25pemUgZXhjZXB0aW9ucyB0byBWYWx1ZUVycm9yOyBvbmx5IGRlbGV0ZSB2YXJpYWJsZXMKLSAgdGhhdCBoYXZlIG5vdCBiZWVuIGRlbGV0ZWQ7IGFzc2VydCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFyZSBzdHJpbmdzLgotCi0tIElzc3VlICMxNDEwNDogSW1wbGVtZW50IHRpbWUubW9ub3RvbmljKCkgb24gTWFjIE9TIFgsIHBhdGNoIHdyaXR0ZW4gYnkKLSAgTmljaG9sYXMgUmlsZXkuCi0KLS0gSXNzdWUgIzEzMzk0OiB0aGUgYWlmYyBtb2R1bGUgbm93IHVzZXMgd2FybmluZ3Mud2FybigpIHRvIHNpZ25hbCB3YXJuaW5ncy4KLQotLSBJc3N1ZSAjMTQyNTI6IEZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlcgotICBXaW5kb3dzIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLgotCi0tIElzc3VlICMxNDIyMzogY3Vyc2VzLmFkZGNoKCkgaXMgbm8gbW9yZSBsaW1pdGVkIHRvIHRoZSByYW5nZSAwLTI1NSB3aGVuIHRoZQotICBQeXRob24gY3Vyc2VzIGlzIG5vdCBsaW5rZWQgdG8gbGlibmN1cnNlc3cuIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZAotICBpbiBQeXRob24gMy4zYTEuCi0KLS0gSXNzdWUgIzE0MTY4OiBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgRWxlbWVudC5fYXR0cnMgaW4gbWluaWRvbSBiZWZvcmUKLSAgYWNjZXNzaW5nIGl0LgotCi0tIElzc3VlICMxMjMyODogRml4IG11bHRpcHJvY2Vzc2luZydzIHVzZSBvZiBvdmVybGFwcGVkIEkvTyBvbiBXaW5kb3dzLgotICBBbHNvLCBhZGQgYSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KHJsaXN0LCB0aW1lb3V0PU5vbmUpIGZ1bmN0aW9uCi0gIGZvciBwb2xsaW5nIG11bHRpcGxlIG9iamVjdHMgYXQgb25jZS4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQwMDc6IEFjY2VwdCBpbmNvbXBsZXRlIFRyZWVCdWlsZGVyIG9iamVjdHMgKG1pc3Npbmcgc3RhcnQsIGVuZCwKLSAgZGF0YSBvciBjbG9zZSBtZXRob2QpIGZvciB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGFzIHdlbGwuCi0gIERyb3AgdGhlIG5vLW9wIFRyZWVCdWlsZGVyKCkueG1sKCkgbWV0aG9kIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE0MjEwOiBwZGIgbm93IGhhcyB0YWItY29tcGxldGlvbiBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0Ci0gIGFsc28gZm9yIHRoZWlyIGFyZ3VtZW50cywgd2hlcmV2ZXIgcG9zc2libGUuCi0KLS0gSXNzdWUgIzE0MzEwOiBTb2NrZXRzIGNhbiBub3cgYmUgd2l0aCBvdGhlciBwcm9jZXNzZXMgb24gV2luZG93cyB1c2luZwotICB0aGUgYXBpIHNvY2tldC5zb2NrZXQuc2hhcmUoKSBhbmQgc29ja2V0LmZyb21zaGFyZSgpLgotCi0tIElzc3VlICMxMDU3NjogVGhlIGdjIG1vZHVsZSBub3cgaGFzIGEgJ2NhbGxiYWNrcycgbWVtYmVyIHRoYXQgd2lsbCBnZXQKLSAgY2FsbGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHRha2VzIHBsYWNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgotCi0tIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCi0KLS0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KLSAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgotCi0tIElzc3VlICMxNDMyMTogRG8gbm90IHJ1biBwZ2VuIGR1cmluZyB0aGUgYnVpbGQgaWYgZmlsZXMgYXJlIHVwIHRvIGRhdGUuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTQzMjQ6IEZpeCBjb25maWd1cmUgdGVzdHMgZm9yIGNyb3NzIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQzMjc6IENhbGwgQUNfQ0FOT05JQ0FMX0hPU1QgaW4gY29uZmlndXJlLmFjIGFuZCBjaGVjayBpbgotICBjb25maWcue2d1ZXNzLHN1Yn0uIERvbid0IHVzZSB1bmFtZSBjYWxscyBmb3IgY3Jvc3MgYnVpbGRzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTA0MTogQW4gaXNzdWUgaW4gY3R5cGVzLmNfbG9uZ2RvdWJsZSwgY3R5cGVzLmNfZG91YmxlLCBhbmQKLSAgY3R5cGVzLmNfZmxvYXQgdGhhdCBjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUKLSAgY2FzZSBvZiBvdmVyZmxvdyBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTQyMTI6IFRoZSByZSBtb2R1bGUgZGlkbid0IHJldGFpbiBhIHJlZmVyZW5jZSB0byBidWZmZXJzIGl0IHdhcwotICBzY2FubmluZywgcmVzdWx0aW5nIGluIHNlZ2ZhdWx0cy4KLQotLSBJc3N1ZSAjMTQyNTk6IFRoZSBmaW5kaXRlcigpIG1ldGhvZCBvZiByZSBvYmplY3RzIGRpZCBub3QgdGFrZSBhbnkKLSAga2V5d29yZCBhcmd1bWVudHMsIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMDE0MjogU3VwcG9ydCBmb3IgU0VFS19IT0xFL1NFRUtfREFUQSAoZm9yIGV4YW1wbGUsIHVuZGVyIFpGUykuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNDQ0MjogQWRkIG1pc3NpbmcgZXJybm8gaW1wb3J0IGluIHRlc3Rfc210cGxpYi4KLQotLSBJc3N1ZSAjODMxNTogKHBhcnRpYWwgZml4KSBweXRob24gLW0gdW5pdHRlc3QgdGVzdC50ZXN0X2VtYWlsIG5vdyB3b3Jrcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtTWFyLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKLSAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgotCi0tIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAotICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgotCi0tIFBFUCA0MDksIElzc3VlICM2MjEwOiAicmFpc2UgWCBmcm9tIE5vbmUiIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBtZWFucyBvZgotICBzdXBwcmVzc2luZyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZCBleGNlcHRpb24gY29udGV4dC4gVGhlIGNoYWluZWQKLSAgY29udGV4dCBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSBhcyB0aGUgX19jb250ZXh0X18gYXR0cmlidXRlLgotCi0tIElzc3VlICMxMDE4MTogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgbXVsdGlwbGUgb3duZXJzaGlwCi0gIGFuZCBsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFB5X2J1ZmZlciBtZW1iZXJzICgjOTk5MCkKLSAgYXMgd2VsbCBhcyBjcmFzaGVzICgjODMwNSwgIzc0MzMpLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQKLSAgKFNlZSB3aGF0c25ldy8zLjMpLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCBleHRlbnNpdmVseS4KLSAgVGhlIG5kYXJyYXkgdGVzdCBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGltcGxlbWVudHMgYWxsIGFzcGVjdHMgb2YKLSAgUEVQLTMxMTgsIHNvIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdG93YXJkcyB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24KLSAgb2YgdGhlIFBFUCBjYW4gcHJvY2VlZCBpbiBhIHRlc3QtZHJpdmVuIG1hbm5lci4KLQotICBUaGFua3MgdG8gTmljayBDb2dobGFuLCBBbnRvaW5lIFBpdHJvdSBhbmQgUGF1bGkgVmlydGFuZW4gZm9yIHJldmlldwotICBhbmQgbWFueSBpZGVhcy4KLQotLSBJc3N1ZSAjMTI4MzQ6IEZpeCBpbmNvcnJlY3QgcmVzdWx0cyBvZiBtZW1vcnl2aWV3LnRvYnl0ZXMoKSBmb3IKLSAgbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgotCi0tIElzc3VlICM1MjMxOiBJbnRyb2R1Y2UgbWVtb3J5dmlldy5jYXN0KCkgbWV0aG9kIHRoYXQgYWxsb3dzIGNoYW5naW5nCi0gIGZvcm1hdCBhbmQgc2hhcGUgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KLQotLSBJc3N1ZSAjMTQwODQ6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIHdpdGggYQotICBiYWQgZW5jb2RpbmcuCi0KLS0gVXBncmFkZSBVbmljb2RlIGRhdGEgdG8gVW5pY29kZSA2LjEuCi0KLS0gSXNzdWUgIzE0MDQwOiBSZW1vdmUgcmFyZWx5IHVzZWQgZmlsZSBuYW1lIHN1ZmZpeGVzIGZvciBDIGV4dGVuc2lvbnMKLSAgKHVuZGVyIFBPU0lYIG1haW5seSkuCi0KLS0gSXNzdWUgIzE0MDUxOiBBbGxvdyBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBiZSBzZXQgb2YgY2xhc3NtZXRob2QgYW5kCi0gIHN0YXRpY21ldGhvZC4KLQotLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBSYW5kb21pemUgaGFzaGVzIG9mIHN0ciBhbmQgYnl0ZXMgdG8gcHJvdGVjdAotICBhZ2FpbnN0IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kCi0gIHNldCB0eXBlcy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzEzMDIwOiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QKLSAgZmFpbHMuICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzkwODogUmVhZHkgdHlwZXMgcmV0dXJuZWQgZnJvbSBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQotICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCi0KLS0gSXNzdWUgIzEyNzA1OiBBIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpcyBub3cgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0bwotICBjb21waWxlIG11bHRpcGxlIHN0YXRlbWVudHMgYXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50LgotCi0tIEZpeCB0aGUgYnVpbHRpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSB0byBzdG9yZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IKLSAgZnV0dXJlIHJlaW5pdGlhbGl6YXRpb24uCi0KLS0gSXNzdWUgIzgwNTI6IFRoZSBwb3NpeCBzdWJwcm9jZXNzIG1vZHVsZSB3b3VsZCB0YWtlIGEgbG9uZyB0aW1lIGNsb3NpbmcKLSAgYWxsIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgcmF0aGVyIHRoYW4ganVzdCBvcGVuCi0gIGZpbGUgZGVzY3JpcHRvcnMuICBJdCBub3cgY2xvc2VzIG9ubHkgdGhlIG9wZW4gZmRzIGlmIHBvc3NpYmxlIGZvciB0aGUKLSAgZGVmYXVsdCBjbG9zZV9mZHM9VHJ1ZSBiZWhhdmlvci4KLQotLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKLSAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KLQotLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KLQotLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKLSAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCi0KLS0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCi0gIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKLSAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCi0KLS0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bwotICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5Ci0gIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKLQotLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAotICBhcyB3ZWxsIGFzIGBgYnJgYC4KLQotLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KLQotLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgotCi0tIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KLQotLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0Ci0gIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgotCi0tIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCi0gIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KLQotLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKLSAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCi0gIG5vdGljaW5nLgotCi0tIElzc3VlICMxMzUwNTogUGlja2xlIGJ5dGVzIG9iamVjdHMgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGgKLSAgUHl0aG9uIDIgd2hlbiB1c2luZyBwcm90b2NvbHMgPD0gMi4KLQotLSBJc3N1ZSAjMTExNDc6IEZpeCBhbiB1bnVzZWQgYXJndW1lbnQgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUi4gIChGaXgKLSAgZ2l2ZW4gYnkgQ2FtcGJlbGwgQmFydG9uKS4KLQotLSBJc3N1ZSAjMTM1MDM6IFVzZSBhIG1vcmUgZWZmaWNpZW50IHJlZHVjdGlvbiBmb3JtYXQgZm9yIGJ5dGVhcnJheXMgd2l0aAotICBwaWNrbGUgcHJvdG9jb2wgPj0gMy4gIFRoZSBvbGQgcmVkdWN0aW9uIGZvcm1hdCBpcyBrZXB0IHdpdGggb2xkZXIgcHJvdG9jb2xzCi0gIGluIG9yZGVyIHRvIGFsbG93IHVucGlja2xpbmcgdW5kZXIgUHl0aG9uIDIuICBQYXRjaCBieSBJcm1lbiBkZSBKb25nLgotCi0tIElzc3VlICM3MTExOiBQeXRob24gY2FuIG5vdyBiZSBydW4gd2l0aG91dCBhIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyCi0gIHN0cmVhbS4gIEl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggUHl0aG9uIDIuICBIb3dldmVyLCB0aGUgY29ycmVzcG9uZGluZwotICBzeXMgbW9kdWxlIGVudHJpZXMgYXJlIG5vdyBzZXQgdG8gTm9uZSAoaW5zdGVhZCBvZiBhbiB1bnVzYWJsZSBmaWxlIG9iamVjdCkuCi0KLS0gSXNzdWUgIzExODQ5OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZAotICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5Ci0gIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKLSAgYW4gaW52YWxpZCBpbnRlZ2VyIHZhbHVlLgotCi0tIElzc3VlICMxMzQxMTogbWVtb3J5dmlldyBvYmplY3RzIGFyZSBub3cgaGFzaGFibGUgd2hlbiB0aGUgdW5kZXJseWluZwotICBvYmplY3QgaXMgaGFzaGFibGUuCi0KLS0gSXNzdWUgIzEzMzM4OiBIYW5kbGUgYWxsIGVudW1lcmF0aW9ucyBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSCi0gIHRvIGFsbG93IGNvbXBpbGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIC1Xc3dpdGNoLWVudW0gb24gZ2NjLgotICBJbml0aWFsIHBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICMxMDIyNzogQWRkIGFuIGFsbG9jYXRpb24gY2FjaGUgZm9yIGEgc2luZ2xlIHNsaWNlIG9iamVjdC4gIFBhdGNoIGJ5Ci0gIFN0ZWZhbiBCZWhuZWwuCi0KLS0gSXNzdWUgIzEzMzkzOiBCdWZmZXJlZFJlYWRlci5yZWFkMSgpIG5vdyBhc2tzIHRoZSBmdWxsIHJlcXVlc3RlZCBzaXplIHRvCi0gIHRoZSByYXcgc3RyZWFtIGluc3RlYWQgb2YgbGltaXRpbmcgaXRzZWxmIHRvIHRoZSBidWZmZXIgc2l6ZS4KLQotLSBJc3N1ZSAjMTMzOTI6IFdyaXRpbmcgYSBweWMgZmlsZSBzaG91bGQgbm93IGJlIGF0b21pYyB1bmRlciBXaW5kb3dzIGFzIHdlbGwuCi0KLS0gSXNzdWUgIzEzMzMzOiBUaGUgVVRGLTcgZGVjb2RlciBub3cgYWNjZXB0cyBsb25lIHN1cnJvZ2F0ZXMgKHRoZSBlbmNvZGVyCi0gIGFscmVhZHkgYWNjZXB0cyB0aGVtKS4KLQotLSBJc3N1ZSAjMTMzODk6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhc3NlcyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0cyBmb3IKLSAgbGlzdCBhbmQgZGljdCBvYmplY3RzLiAgVGhleSBhbHJlYWR5IGNsZWFyZWQgb3RoZXIgZnJlZWxpc3RzIGluIHRoZQotICBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMTMzMjc6IFJlbW92ZSB0aGUgbmVlZCBmb3IgYW4gZXhwbGljaXQgTm9uZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50Ci0gIHRvIG9zLnV0aW1lLCBvcy5sdXRpbWVzLCBvcy5mdXRpbWVzLCBvcy5mdXRpbWVucywgb3MuZnV0aW1lc2F0LCBpbgotICBvcmRlciB0byB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZS4gQWxzbyBhZGRlZCBrZXl3b3JkIGFyZ3VtZW50Ci0gIGhhbmRsaW5nIHRvIG9zLnV0aW1lbnNhdCBpbiBvcmRlciB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IE5vbmUuCi0KLS0gSXNzdWUgIzEzMzUwOiBTaW1wbGlmeSBzb21lIEMgY29kZSBieSByZXBsYWNpbmcgbW9zdCB1c2FnZXMgb2YKLSAgUHlVbmljb2RlX0Zvcm1hdCBieSBQeVVuaWNvZGVfRnJvbUZvcm1hdC4KLQotLSBJc3N1ZSAjMTMzNDI6IGlucHV0KCkgdXNlZCB0byBpZ25vcmUgc3lzLnN0ZGluJ3MgYW5kIHN5cy5zdGRvdXQncyB1bmljb2RlCi0gIGVycm9yIGhhbmRsZXIgaW4gaW50ZXJhY3RpdmUgbW9kZSAod2hlbiBjYWxsaW5nIGludG8gUHlPU19SZWFkbGluZSgpKS4KLQotLSBJc3N1ZSAjOTg5NjogQWRkIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhdHRyaWJ1dGVzIHRvIHJhbmdlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEzMzQzOiBGaXggYSBTeXN0ZW1FcnJvciB3aGVuIGEgbGFtYmRhIGV4cHJlc3Npb24gdXNlcyBhIGdsb2JhbAotICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDogYGBsYW1iZGEgKiwKLSAgYXJnPUdMT0JBTF9OQU1FOiBOb25lYGAKLQotLSBJc3N1ZSAjMTI3OTc6IEFkZGVkIGN1c3RvbSBvcGVuZXIgcGFyYW1ldGVyIHRvIGJ1aWx0aW4gb3BlbigpIGFuZAotICBGaWxlSU8ub3BlbigpLgotCi0tIElzc3VlICMxMDUxOTogQXZvaWQgdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGluCi0gIHNldG9iamVjdC5jLgotCi0tIElzc3VlICMxMDM2MzogRGVhbGxvY2F0ZSBnbG9iYWwgbG9ja3MgaW4gUHlfRmluYWxpemUoKS4KLQotLSBJc3N1ZSAjMTMwMTg6IEZpeCByZWZlcmVuY2UgbGVha3MgaW4gZXJyb3IgcGF0aHMgaW4gZGljdG9iamVjdC5jLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzIwMTogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzIGJhc2VkIG9uCi0gIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCi0gIG9iamVjdCBpZGVudGl0eSkuCi0KLS0gSXNzdWUgIzEyOTQyMzI6IEluIGEgZmV3IGNhc2VzIGludm9sdmluZyBtZXRhY2xhc3MgaW5oZXJpdGFuY2UsIHRoZQotICBpbnRlcnByZXRlciB3b3VsZCBzb21ldGltZXMgaW52b2tlIHRoZSB3cm9uZyBtZXRhY2xhc3Mgd2hlbiBidWlsZGluZyBhIG5ldwotICBjbGFzcyBvYmplY3QuIFRoZXNlIGNhc2VzIG5vdyBiZWhhdmUgY29ycmVjdGx5LiBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzEyNzUzOiBBZGQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KLSAgQm90aCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgYW5kICdcTnsuLi59JyBub3cgcmVzb2x2ZSBhbGlhc2VzLAotICBhbmQgYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIHJlc29sdmVzIG5hbWVkIHNlcXVlbmNlcyB0b28uCi0KLS0gSXNzdWUgIzEyMTcwOiBUaGUgY291bnQoKSwgZmluZCgpLCByZmluZCgpLCBpbmRleCgpIGFuZCByaW5kZXgoKSBtZXRob2RzCi0gIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBub3cgYWNjZXB0IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyNTUKLSAgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTI2MDQ6IFZUUkFDRSBtYWNybyBleHBhbmRlZCB0byBuby1vcCBpbiBfc3JlLmMgdG8gYXZvaWQgY29tcGlsZXIKLSAgd2FybmluZ3MuIFBhdGNoIGJ5IEpvc2ggVHJpcGxldHQgYW5kIFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMjI4MTogUmV3cml0ZSB0aGUgTUJDUyBjb2RlYyB0byBoYW5kbGUgY29ycmVjdGx5IHJlcGxhY2UgYW5kIGlnbm9yZQotICBlcnJvciBoYW5kbGVycyBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4gVGhlIE1CQ1MgY29kZWMgaXMgbm93IHN1cHBvcnRpbmcgYWxsCi0gIGVycm9yIGhhbmRsZXJzLCBpbnN0ZWFkIG9mIG9ubHkgcmVwbGFjZSB0byBlbmNvZGUgYW5kIGlnbm9yZSB0byBkZWNvZGUuCi0KLS0gSXNzdWUgIzEzMTg4OiBXaGVuIGNhbGxlZCB3aXRob3V0IGFuIGV4cGxpY2l0IHRyYWNlYmFjayBhcmd1bWVudCwKLSAgZ2VuZXJhdG9yLnRocm93KCkgbm93IGdldHMgdGhlIHRyYWNlYmFjayBmcm9tIHRoZSBwYXNzZWQgZXhjZXB0aW9uJ3MKLSAgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlLiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEzMTQ2OiBXcml0aW5nIGEgcHljIGZpbGUgaXMgbm93IGF0b21pYyB1bmRlciBQT1NJWC4KLQotLSBJc3N1ZSAjNzgzMzogRXh0ZW5zaW9uIG1vZHVsZXMgYnVpbHQgdXNpbmcgZGlzdHV0aWxzIG9uIFdpbmRvd3Mgd2lsbCBubwotICBsb25nZXIgaW5jbHVkZSBhICJtYW5pZmVzdCIgdG8gcHJldmVudCB0aGVtIGZhaWxpbmcgYXQgaW1wb3J0IHRpbWUgaW4gc29tZQotICBlbWJlZGRlZCBzaXR1YXRpb25zLgotCi0tIFBFUCAzMTUxIC8gaXNzdWUgIzEyNTU1OiByZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5LgotCi0tIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgotCi0tIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKLSAgYXMgIlRoZSBwaXBlIGlzIGJlaW5nIGNsb3NlZCIpIGlzIG5vdyBtYXBwZWQgdG8gUE9TSVggZXJybm8gRVBJUEUKLSAgKHByZXZpb3VzbHkgRUlOVkFMKS4KLQotLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKLSAgdHVwbGVzIG9yIGxpc3RzLgotCi0tIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKLSAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KLQotLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKLSAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAotICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKLSAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KLQotLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQotICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KLSAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTMwMjE6IE1pc3NpbmcgZGVjcmVmIG9uIGFuIGVycm9yIHBhdGguICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IKLSAgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTI5NzM6IEZpeCBvdmVyZmxvdyBjaGVja3MgdGhhdCByZWxpZWQgb24gdW5kZWZpbmVkIGJlaGF2aW91ciBpbgotICBsaXN0X3JlcGVhdCAobGlzdG9iamVjdC5jKSBhbmQgaXNsaWNlX25leHQgKGl0ZXJ0b29sc21vZHVsZS5jKS4gIFRoZXNlIGJ1Z3MKLSAgY2F1c2VkIHRlc3QgZmFpbHVyZXMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgQ2xhbmcuCi0KLS0gSXNzdWUgIzEyOTA0OiBvcy51dGltZSwgb3MuZnV0aW1lcywgb3MubHV0aW1lcywgYW5kIG9zLmZ1dGltZXNhdCBub3cgd3JpdGUKLSAgYXRpbWUgYW5kIG10aW1lIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24gb24gbW9kZXJuIFBPU0lYIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTI4MDI6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX0RJUkVDVE9SWSAobnVtYmVyZWQgMjY3KSBpcyBub3cKLSAgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVOT1RESVIgKHByZXZpb3VzbHkgRUlOVkFMKS4KLQotLSBJc3N1ZSAjOTIwMDogVGhlIHN0ci5pcyogbWV0aG9kcyBub3cgd29yayB3aXRoIHN0cmluZ3MgdGhhdCBjb250YWluIG5vbi1CTVAKLSAgY2hhcmFjdGVycyBldmVuIGluIG5hcnJvdyBVbmljb2RlIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTI3OTE6IEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgZWFybHkgd2hlbiBhIGdlbmVyYXRvciBleGl0cyB3aXRoCi0gIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTI3NzM6IE1ha2UgX19kb2NfXyBtdXRhYmxlIG9uIHVzZXItZGVmaW5lZCBjbGFzc2VzLgotCi0tIElzc3VlICMxMjc2NjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gY3JlYXRpbmcgYSBjbGFzcyB3aXRoIGEgY2xhc3MgdmFyaWFibGUKLSAgdGhhdCBjb25mbGljdHMgd2l0aCBhIG5hbWUgaW4gX19zbG90c19fLgotCi0tIElzc3VlICMxMjI2NjogRml4IHN0ci5jYXBpdGFsaXplKCkgdG8gY29ycmVjdGx5IHVwcGVyY2FzZS9sb3dlcmNhc2UKLSAgdGl0bGVjYXNlZCBhbmQgY2FzZWQgbm9uLWxldHRlciBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKLSAgb3V0c2lkZSB0aGUgQk1QLgotCi0tIElzc3VlICMxMjU3NTogVmFsaWRhdGUgdXNlci1nZW5lcmF0ZWQgQVNUIGJlZm9yZSBpdCBpcyBjb21waWxlZC4KLQotLSBNYWtlIHR5cGUoTm9uZSksIHR5cGUoRWxsaXBzaXMpLCBhbmQgdHlwZShOb3RJbXBsZW1lbnRlZCkgY2FsbGFibGUuIFRoZXkKLSAgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHNpbmdsZXRvbiBpbnN0YW5jZXMuCi0KLS0gRm9yYmlkIHN1bW1pbmcgYnl0ZXMgd2l0aCBzdW0oKS4KLQotLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKLSAgY29tcGlsaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzEyNjQ3OiBUaGUgTm9uZSBvYmplY3Qgbm93IGhhcyBhIF9fYm9vbF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBGYWxzZS4KLSAgRm9ybWVybHksIGJvb2woTm9uZSkgcmV0dXJuZWQgRmFsc2Ugb25seSBiZWNhdXNlIG9mIHNwZWNpYWwgY2FzZSBsb2dpYwotICBpbiBQeU9iamVjdF9Jc1RydWUoKS4KLQotLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCi0gIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQotICBKdWxpYW4gQmVybWFuLgotCi0tIElzc3VlICMxMDI3MTogQWxsb3cgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBiZSBhbnkgY2FsbGFibGUuCi0KLS0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQotICBub24tZXhjZXB0aW9uIGNsYXNzLgotCi0tIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCi0gIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKLSAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncwotICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZwotICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCi0KLS0gSXNzdWUgIzk2MTEsIElzc3VlICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KLQotLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCi0gIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCi0KLS0gSXNzdWUgIzk2NDI6IEZpeCBmaWxlc3lzdGVtIGVuY29kaW5nIGluaXRpYWxpemF0aW9uOiB1c2UgdGhlIEFOU0kgY29kZSBwYWdlCi0gIG9uIFdpbmRvd3MgaWYgdGhlIG1iY3MgY29kZWMgaXMgbm90IGF2YWlsYWJsZSwgYW5kIGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmCi0gIHdlIGNhbm5vdCBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyAoaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgaXMgbm90IGF2YWlsYWJsZSkKLSAgaW5zdGVhZCBvZiB1c2luZyBVVEYtOC4KLQotLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQotICBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQotICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KLQotLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sCi0gIHdpdGggb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTIzNTY6IFdoZW4gcmVxdWlyZWQgcG9zaXRpb25hbCBvciBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBub3QKLSAgZ2l2ZW4sIHByb2R1Y2UgYSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lKHMpIG9mIHRoZQotICBtaXNzaW5nIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTIzNzA6IEZpeCBzdXBlciB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIF9fY2xhc3NfXyBpcyBvdmVycmlkZW4gaW4gdGhlCi0gIGNsYXNzIGJvZHkuCi0KLS0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKLSAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgotCi0tIExvb3NlbiB0eXBlIHJlc3RyaWN0aW9ucyBvbiB0aGUgX19kaXJfXyBtZXRob2QuIF9fZGlyX18gY2FuIG5vdyByZXR1cm4gYW55Ci0gIHNlcXVlbmNlLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIGxpc3QgYW5kIHNvcnRlZCBieSBkaXIoKS4KLQotLSBJc3N1ZSAjMTIyNjU6IE1ha2UgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgYnkgcGFzc2luZyBhbiBpbnZhbGlkIHNldCBvZgotICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBtb3JlIGluZm9ybWF0aXZlLgotCi0tIElzc3VlICMxMjIyNTogU3RpbGwgYWxsb3cgUHl0aG9uIHRvIGJ1aWxkIGlmIFB5dGhvbiBpcyBub3QgaW4gaXRzIGhnIHJlcG8gb3IKLSAgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAotICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAotICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCi0KLS0gSXNzdWUgIzEyMjE2OiBBbGxvdyB1bmV4cGVjdGVkIEVPRiBlcnJvcnMgdG8gaGFwcGVuIG9uIGFueSBsaW5lIG9mIHRoZSBmaWxlLgotCi0tIElzc3VlICMxMjE5OTogVGhlIFRyeUV4Y2VwdCBhbmQgVHJ5RmluYWxseSBhbmQgQVNUIG5vZGVzIGhhdmUgYmVlbiB1bmlmaWVkCi0gIGludG8gYSBUcnkgbm9kZS4KLQotLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KLSAgTWFjIE9TIFggYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhCi0gICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4KLSAgKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIxMDY6IFRoZSB1c2Ugb2YgdGhlIG11bHRpcGxlLXdpdGggc2hvcnRoYW5kIHN5bnRheCBpcyBub3cgcmVmbGVjdGVkCi0gIGluIHRoZSBBU1QuCi0KLS0gSXNzdWUgIzEyMTkwOiBUcnkgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIG9iamVjdCB3aGVuIGNvbXBpbGluZyB1bm1hcnNoYWxsaW5nCi0gIGEgY29kZSBvYmplY3RzIGluIHRoZSBzYW1lIGZpbGUuCi0KLS0gSXNzdWUgIzEyMTY2OiBNb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBkaXIoKSBzcGVjaWFsaXplZCBmb3IgdmFyaW91cyB0eXBlcyBpbnRvCi0gIHRoZSBfX2Rpcl9fKCkgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcy4KLQotLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KLQotLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCi0gIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCi0KLS0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAotICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxNzQ2NjU2OiBBZGRlZCB0aGUgaWZfbmFtZWluZGV4LCBpZl9pbmRleHRvbmFtZSwgaWZfbmFtZXRvaW5kZXgKLSAgbWV0aG9kcyB0byB0aGUgc29ja2V0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCi0gIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5Ci0gIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCi0KLS0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCi0gIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgotCi0tIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQotICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4KLSAgdGhleSB0cnkgdG8gdGFrZSB0aGUgR0lMLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgotICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKLSAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldwotICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcwotICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCi0KLS0gSXNzdWUgIzExOTE4OiBPUy8yIGFuZCBWTVMgYXJlIG5vIG1vcmUgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YKLSAgbWFpbnRhaW5lci4KLQotLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCi0gIGFjY2VwdGVkIHRvby4KLQotLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcwotICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAKLSAgY2hhcnMgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KLQotLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgotICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzU2NzM6IEFkZGVkIGEgYHRpbWVvdXRgIGtleXdvcmQgYXJndW1lbnQgdG8gc3VicHJvY2Vzcy5Qb3Blbi53YWl0LAotICBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlZCwgc3VicHJvY2Vzcy5jYWxsLCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwsIGFuZAotICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dC4gIElmIHRoZSBibG9ja2luZyBvcGVyYXRpb24gdGFrZXMgbW9yZSB0aGFuIGB0aW1lb3V0YAotICBzZWNvbmRzLCB0aGUgYHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLS0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCi0gIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzkzMTk6IEluY2x1ZGUgdGhlIGZpbGVuYW1lIGluICJOb24tVVRGOCBjb2RlIC4uLiIgc3ludGF4IGVycm9yLgotCi0tIElzc3VlICMxMDc4NTogU3RvcmUgdGhlIGZpbGVuYW1lIGFzIFVuaWNvZGUgaW4gdGhlIFB5dGhvbiBwYXJzZXIuCi0KLS0gSXNzdWUgIzExNjE5OiBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoKSBkb2Vzbid0IGVuY29kZSB0aGUgcGF0aCB0byBieXRlcwotICBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxMDk5ODogUmVtb3ZlIG1lbnRpb25zIG9mIC1RLCBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyBhbmQKLSAgUHlfRGl2aXNpb25XYXJuaW5nRmxhZyBsZWZ0IG92ZXIgZnJvbSBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTEyNDQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBwZWVwaG9sZXIgY2hlY2sgdGhhdCB3YXMgcHJldmVudGluZwotICBuZWdhdGl2ZSB6ZXJvcyBmcm9tIGJlaW5nIGNvbnN0YW50LWZvbGRlZCBwcm9wZXJseS4KLQotLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KLSAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKLSAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYKLSAgc3Rkb3V0IG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCi0gIGRlcGVuZGluZyBvbiBoZWFwIHVzYWdlKS4KLQotLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0bwotICBhIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCi0KLS0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAotICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCi0gIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KLQotLSBJc3N1ZSAjOTg1NjogQ2hhbmdlIG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZwotICB0byBiZSBhIERlcHJlY2F0aW9uV2FybmluZy4gSW4gMy4yIGl0IHdhcyBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0gIEluIDMuNCBpdCB3aWxsIGJlIGEgVHlwZUVycm9yLgotCi0tIElzc3VlICMxMTI0NDogVGhlIHBlZXBob2xlIG9wdGltaXplciBpcyBub3cgYWJsZSB0byBjb25zdGFudC1mb2xkCi0gIGFyYml0cmFyaWx5IGNvbXBsZXggZXhwcmVzc2lvbnMuICBUaGlzIGFsc28gZml4ZXMgYSAzLjIgcmVncmVzc2lvbiB3aGVyZQotICBvcGVyYXRpb25zIGludm9sdmluZyBuZWdhdGl2ZSBudW1iZXJzIHdlcmUgbm90IGNvbnN0YW50LWZvbGRlZC4KLQotLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuCi0gIHRoZXJlIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMzM1OiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGxpc3Quc29ydCB3aGVuIHRoZSBrZXkgZnVuY3Rpb24KLSAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjODkyMzogV2hlbiBhIHN0cmluZyBpcyBlbmNvZGVkIHRvIFVURi04IGluIHN0cmljdCBtb2RlLCB0aGUgcmVzdWx0IGlzCi0gIGNhY2hlZCBpbnRvIHRoZSBvYmplY3QuIEV4YW1wbGVzOiBzdHIuZW5jb2RlKCksIHN0ci5lbmNvZGUoJ3V0Zi04JyksCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAotICBOVUxMKS4KLQotLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQotICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgotCi0tIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCi0KLS0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGgKLSAgYSBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgotCi0tIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKLSAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgotCi0tIElzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggbm93IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LgotICBQYXRjaCBieSBUb3JzdGVuIEJlY2tlci4KLQotLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgotICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCi0gIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKLSAgVW5pY29kZUVuY29kZUVycm9yIG9uIHJlY3Vyc2lvbiBsaW1pdC4KLQotLSBJc3N1ZSAjMTExODc6IFJlbW92ZSBib290c3RyYXAgY29kZSAodXNlIEFTQ0lJKSBvZgotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCksIGl0IHdhcyByZXBsYWNlZCBieSBhIGJldHRlciBmYWxsYmFjayAodXNlIHRoZQotICBsb2NhbGUgZW5jb2RpbmcpIGluIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKS4KLQotLSBDaGVjayBmb3IgTlVMTCByZXN1bHQgaW4gUHlUeXBlX0Zyb21TcGVjLgotCi0tIElzc3VlICMxMDUxNjogTmV3IGNvcHkoKSBhbmQgY2xlYXIoKSBtZXRob2RzIGZvciBsaXN0cyBhbmQgYnl0ZWFycmF5cy4KLQotLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCi0gIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCi0KLS0gSXNzdWUgIzEyMzgwOiBUaGUgcmp1c3QsIGxqdXN0IGFuZCBjZW50ZXIgbWV0aG9kcyBvZiBieXRlcyBhbmQgYnl0ZWFycmF5Ci0gIG5vdyBhY2NlcHQgYSBieXRlYXJyYXkgYXJndW1lbnQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE2NjogUGlja2xlciBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsIGBgZGlzcGF0Y2hfdGFibGVgYAotICBhdHRyaWJ1dGUgd2hpY2ggYWxsb3dzIHRvIHNldCBjdXN0b20gcGVyLXBpY2tsZXIgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTM1NTA6IFJlbW92ZSB0aGUgZGVidWcgbWFjaGluZXJ5IGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGU6IHJlbW92ZQotICB2ZXJib3NlIGFyZ3VtZW50cyBmcm9tIGFsbCB0aHJlYWRpbmcgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNDE1OTogRml4IHRoZSBsZW4oKSBvZiB3ZWFrIGNvbnRhaW5lcnMgKFdlYWtTZXQsIFdlYWtLZXlEaWN0aW9uYXJ5LAotICBXZWFrVmFsdWVEaWN0aW9uYXJ5KSB0byByZXR1cm4gYSBiZXR0ZXIgYXBwcm94aW1hdGlvbiB3aGVuIHNvbWUgb2JqZWN0cwotICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KLSAgTyhuKS4KLQotLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCi0gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscwotICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotLSBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBzbGFzaGVzIGluIHRoZSBzdGFydCB0YWcuCi0KLS0gSXNzdWUgIzEzNjQxOiBEZWNvZGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2U2NCBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5Ci0gIHVuaWNvZGUgc3RyaW5ncy4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCi0KLS0gSXNzdWUgIzE0MDQzOiBTcGVlZCB1cCBpbXBvcnRsaWIncyBfRmlsZUZpbmRlciBieSBhdCBsZWFzdCA4eCwgYW5kIGFkZCBhCi0gIG5ldyBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTQwMDE6IENWRS0yMDEyLTA4NDU6IHhtbHJwYzogRml4IGFuIGVuZGxlc3MgbG9vcCBpbgotICBTaW1wbGVYTUxSUENTZXJ2ZXIgdXBvbiBtYWxmb3JtZWQgUE9TVCByZXF1ZXN0LgotCi0tIElzc3VlICMxMzk2MTogTW92ZSBpbXBvcnRsaWIgb3ZlciB0byB1c2luZyBvcy5yZXBsYWNlKCkgZm9yIGF0b21pYyByZW5hbWluZy4KLQotLSBEbyBhd2F5IHdpdGggYW1iaWd1b3VzIGxldmVsIHZhbHVlcyAoYXMgc3VnZ2VzdGVkIGJ5IFBFUCAzMjgpIGluCi0gIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgYnkgcmFpc2luZyBWYWx1ZUVycm9yIHdoZW4gbGV2ZWwgPCAwLgotCi0tIElzc3VlICMyNDg5OiBwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KLQotLSBJc3N1ZSAjMTMwMTQ6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgotCi0tIElzc3VlICMxMzc3NzogQWRkIFBGX1NZU1RFTSBzb2NrZXRzIG9uIE9TIFguCi0gIFBhdGNoIGJ5IE1pY2hhZWwgR29kZXJiYXVlci4KLQotLSBJc3N1ZSAjMTMwMTU6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIGRlZmF1bHRkaWN0Ll9fcmVwcl9fLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGFuZCBwYWNrYWdpbmcncyBidWlsZF9leHQgY29tbWFuZHMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyAoc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzKSBnaXZlbgotICB0byB0aGVpciAtLWxpYnJhcmllcyBvcHRpb24uCi0KLS0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgZmlyc3QgYmVmb3JlCi0gIHNlbmRpbmcgTU9ERSBSRUFERVIsIGFuZCBvbmx5IHNlbmRzIGl0IGlmIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzOTkzOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3Mgd2hlbgotICBzdHJpY3Q9RmFsc2UuCi0KLS0gSXNzdWUgIzEzOTMwOiBsaWIydG8zIG5vdyBzdXBwb3J0cyB3cml0aW5nIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgotICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQotICBzdWZmaXguCi0KLS0gSXNzdWUgIzk3NTA6IEZpeCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgb24gdGFibGVzIGFuZCBmaWVsZHMKLSAgd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGtleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbwotICBLb2h0YWxhLgotCi0tIElzc3VlICMxMDI4Nzogbm50cGxpYiBub3cgcXVlcmllcyB0aGUgc2VydmVyJ3MgQ0FQQUJJTElUSUVTIGFnYWluIGFmdGVyCi0gIGF1dGhlbnRpY2F0aW5nIChzaW5jZSB0aGUgcmVzdWx0IG1heSBjaGFuZ2UsIGFjY29yZGluZyB0byBSRkMgNDY0MykuCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTM1OTA6IE9uIE9TIFggMTAuNyBhbmQgMTAuNiB3aXRoIFhjb2RlIDQuMiwgYnVpbGRpbmcKLSAgRGlzdHV0aWxzLWJhc2VkIHBhY2thZ2VzIHdpdGggQyBleHRlbnNpb24gbW9kdWxlcyBtYXkgZmFpbCBiZWNhdXNlCi0gIEFwcGxlIGhhcyByZW1vdmVkIGdjYy00LjIsIHRoZSB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgcHl0aG9uLm9yZwotICA2NC1iaXQvMzItYml0IFB5dGhvbnMuICBJZiB0aGUgdXNlciBkb2VzIG5vdCBleHBsaWNpdGx5IG92ZXJyaWRlCi0gIHRoZSBkZWZhdWx0IEMgY29tcGlsZXIgYnkgc2V0dGluZyB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUsCi0gIERpc3R1dGlscyB3aWxsIG5vdyBhdHRlbXB0IHRvIGNvbXBpbGUgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBjbGFuZwotICBpZiBnY2MtNC4yIGlzIHJlcXVpcmVkIGJ1dCBub3QgZm91bmQuIEFsc28gYXMgYSBjb252ZW5pZW5jZSwgaWYKLSAgdGhlIHVzZXIgZG9lcyBleHBsaWNpdGx5IHNldCBDQywgc3Vic3RpdHV0ZSBpdHMgdmFsdWUgYXMgdGhlIGRlZmF1bHQKLSAgY29tcGlsZXIgaW4gdGhlIERpc3R1dGlscyBMRFNIQVJFRCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGZvciBPUyBYLgotICAoTm90ZSwgdGhlIHB5dGhvbi5vcmcgMzItYml0LW9ubHkgUHl0aG9ucyB1c2UgZ2NjLTQuMCBhbmQgdGhlIDEwLjR1Ci0gIFNESywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXZhaWxhYmxlIGluIFhjb2RlIDQuICBUaGlzIGNoYW5nZSBkb2VzIG5vdAotICBhdHRlbXB0IHRvIG92ZXJyaWRlIHNldHRpbmdzIHRvIHN1cHBvcnQgdGhlaXIgdXNlIHdpdGggWGNvZGUgNC4pCi0KLS0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgotICBzdHJpY3Q9RmFsc2UuCi0KLS0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAotICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTM2MDk6IEFkZCB0d28gZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5hbCBzaXplOgotICBvcy5nZXRfdGVybWluYWxfc2l6ZSAobG93IGxldmVsKSBhbmQgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIChoaWdoIGxldmVsKS4KLSAgUGF0Y2ggYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KLQotLSBJc3N1ZSAjMTM4NDU6IE9uIFdpbmRvd3MsIHRpbWUudGltZSgpIG5vdyB1c2VzIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkKLSAgaW5zdGVhZCBvZiBmdGltZSgpIHRvIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEwMCBucyBpbnN0ZWFkIG9mIDEgbXMgKHRoZSBjbG9jawotICBhY2N1cmFjeSBpcyBiZXR3ZWVuIDAuNSBtcyBhbmQgMTUgbXMpLgotCi0tIElzc3VlICMxMzg0NjogQWRkIHRpbWUubW9ub3RvbmljKCksIG1vbm90b25pYyBjbG9jay4KLQotLSBJc3N1ZSAjODE4NDogbXVsdGlwcm9jZXNzaW5nOiBPbiBXaW5kb3dzLCBkb24ndCBzZXQgU09fUkVVU0VBRERSIG9uCi0gIENvbm5lY3Rpb24gc29ja2V0cywgYW5kIHNldCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSBvbiBuYW1lZCBwaXBlcywgdG8KLSAgbWFrZSBzdXJlIHR3byBsaXN0ZW5lcnMgY2FuJ3QgYmluZCB0byB0aGUgc2FtZSBzb2NrZXQvcGlwZSAob3IgYW55IGV4aXN0aW5nCi0gIHNvY2tldC9waXBlKS4KLQotLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKLSAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KLQotLSBJc3N1ZSAjMTM3MzQ6IEFkZCBvcy5md2FsaygpLCBhIGRpcmVjdG9yeSB3YWxraW5nIGZ1bmN0aW9uIHlpZWxkaW5nIGZpbGUKLSAgZGVzY3JpcHRvcnMuCi0KLS0gSXNzdWUgIzI5NDU6IE1ha2UgdGhlIGRpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBhd2FyZSBvZiBiZGlzdF9ycG0gcHJvZHVjdHMuCi0KLS0gSXNzdWUgIzEzNzEyOiBweXNldHVwIGNyZWF0ZSBzaG91bGQgbm90IGNvbnZlcnQgcGFja2FnZV9kYXRhIHRvIGV4dHJhX2ZpbGVzLgotCi0tIElzc3VlICMxMTgwNTogcGFja2FnZV9kYXRhIGluIHNldHVwLmNmZyBzaG91bGQgYWxsb3cgbW9yZSB0aGFuIG9uZSB2YWx1ZS4KLQotLSBJc3N1ZSAjMTM2NzY6IEhhbmRsZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgemVyb3MgY29ycmVjdGx5IGluIHNxbGl0ZTMuCi0KLS0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKLSAgd2l0aCBvdmVyd3JpdGluZy4KLQotLSBJc3N1ZSAjMTM4NDg6IG9wZW4oKSBhbmQgdGhlIEZpbGVJTyBjb25zdHJ1Y3RvciBub3cgY2hlY2sgZm9yIE5VTAotICBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIG5hbWUuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzODA2OiBUaGUgc2l6ZSBjaGVjayBpbiBhdWRpb29wIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zIHdhcyB0b28KLSAgc3RyaWN0IGFuZCBjb3VsZCByZWplY3QgdmFsaWQgY29tcHJlc3NlZCBkYXRhLiAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KLQotLSBJc3N1ZSAjMTM4MTI6IFdoZW4gYSBtdWx0aXByb2Nlc3NpbmcgUHJvY2VzcyBjaGlsZCByYWlzZXMgYW4gZXhjZXB0aW9uLAotICBmbHVzaCBzdGRlcnIgYWZ0ZXIgcHJpbnRpbmcgdGhlIGV4Y2VwdGlvbiB0cmFjZWJhY2suCi0KLS0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQwotICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCi0KLS0gSXNzdWUgIzEzODQ3OiB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLmdtdGltZSgpIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQKLSAgb2YgVmFsdWVFcnJvciBvbiBmYWlsdXJlLiB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuYXNjdGltZSgpIG5vdyByYWlzZXMgYW4KLSAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQotICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAotCi0tIElzc3VlICMxMzc3MjogSW4gb3Muc3ltbGluaygpIHVuZGVyIFdpbmRvd3MsIGRvIG5vdCB0cnkgdG8gZ3Vlc3MgdGhlIGxpbmsKLSAgdGFyZ2V0J3MgdHlwZSAoZmlsZSBvciBkaXJlY3RvcnkpLiAgVGhlIGRldGVjdGlvbiB3YXMgYnVnZ3kgYW5kIG1hZGUgdGhlCi0gIGNhbGwgbm9uLWF0b21pYyAodGhlcmVmb3JlIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucykuCi0KLS0gSXNzdWUgIzY2MzE6IERpc2FsbG93IHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gdXJsbGliIHVybG9wZW4gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM3MjI6IEF2b2lkIHNpbGVuY2luZyBJbXBvcnRFcnJvcnMgd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvZGVjcwotICByZWdpc3RyeS4KLQotLSBJc3N1ZSAjMTM3ODE6IEZpeCBHemlwRmlsZSBidWcgdGhhdCBjYXVzZWQgYW4gZXhjZXB0aW9uIHRvIGJlIHJhaXNlZCB3aGVuCi0gIG9wZW5pbmcgZm9yIHdyaXRpbmcgdXNpbmcgYSBmaWxlb2JqIHJldHVybmVkIGJ5IG9zLmZkb3BlbigpLgotCi0tIElzc3VlICMxMzgwMzogVW5kZXIgU29sYXJpcywgZGlzdHV0aWxzIGRvZXNuJ3QgaW5jbHVkZSBiaXRuZXNzCi0gIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4KLQotLSBJc3N1ZSAjMTAyNzg6IEFkZCB0aW1lLndhbGxjbG9jaygpIGZ1bmN0aW9uLCBtb25vdG9uaWMgY2xvY2suCi0KLS0gSXNzdWUgIzEzODA5OiBGaXggcmVncmVzc2lvbiB3aGVyZSBiejIgbW9kdWxlIHdvdWxkbid0IHdvcmsgd2hlbiB0aHJlYWRzIGFyZQotICBkaXNhYmxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzEzNTg5OiBGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgotICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgotCi0tIElzc3VlICMxMzY0MjogVW5xdW90ZSBiZWZvcmUgYjY0ZW5jb2RpbmcgdXNlcjpwYXNzd29yZCBkdXJpbmcgQmFzaWMKLSAgQXV0aGVudGljYXRpb24uIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEpvb25hcyBLdW9yaWxlaHRvLgotCi0tIElzc3VlICMxMjM2NDogRml4IGEgaGFuZyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KLSAgVGhlIGhhbmcgd291bGQgb2NjdXIgd2hlbiByZXRyaWV2aW5nIHRoZSByZXN1bHQgb2YgYSBzY2hlZHVsZWQgZnV0dXJlIGFmdGVyCi0gIHRoZSBleGVjdXRvciBoYWQgYmVlbiBzaHV0IGRvd24uCi0KLS0gSXNzdWUgIzEzNTAyOiB0aHJlYWRpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIEV2ZW50LndhaXQoKSB0aGF0IG1hZGUgaXQKLSAgcmV0dXJuIEZhbHNlIHdoZW4gdGhlIGV2ZW50IHdhcyBzZXQgYW5kIGNsZWFyZWQgcmlnaHQgYWZ0ZXIuCi0KLS0gSXNzdWUgIzk5OTM6IFdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcywKLSAgYW5kIHRoZSBzb3VyY2UgaXMgYSBzeW1saW5rLCBzaHV0aWwubW92ZSgpIG5vdyByZWNyZWF0ZXMgYSBzeW1saW5rIG9uIHRoZQotICBkZXN0aW5hdGlvbiBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIGZpbGUgY29udGVudHMuICBQYXRjaCBieSBKb25hdGhhbiBOaWVob2YKLSAgYW5kIEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTI5MjY6IEZpeCBhIGJ1ZyBpbiB0YXJmaWxlJ3MgbGluayBleHRyYWN0aW9uLgotCi0tIElzc3VlICMxMzY5NjogRml4IHRoZSAzMDIgUmVsYXRpdmUgVVJMIFJlZGlyZWN0aW9uIHByb2JsZW0uCi0KLS0gSXNzdWUgIzEzNjM2OiBXZWFrIGNpcGhlcnMgYXJlIG5vdyBkaXNhYmxlZCBieSBkZWZhdWx0IGluIHRoZSBzc2wgbW9kdWxlCi0gIChleGNlcHQgd2hlbiBTU0x2MiBpcyBleHBsaWNpdGx5IGFza2VkIGZvcikuCi0KLS0gSXNzdWUgIzEyNzE1OiBBZGQgYW4gb3B0aW9uYWwgc3ltbGlua3MgYXJndW1lbnQgdG8gc2h1dGlsIGZ1bmN0aW9ucwotICAoY29weWZpbGUsIGNvcHltb2RlLCBjb3B5c3RhdCwgY29weSwgY29weTIpLiAgV2hlbiB0aGF0IHBhcmFtZXRlciBpcwotICB0cnVlLCBzeW1saW5rcyBhcmVuJ3QgZGVyZWZlcmVuY2VkIGFuZCB0aGUgb3BlcmF0aW9uIGluc3RlYWQgYWN0cyBvbiB0aGUKLSAgc3ltbGluayBpdHNlbGYgKG9yIGNyZWF0ZXMgb25lLCBpZiByZWxldmFudCkuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gQWRkIGEgZmxhZ3MgcGFyYW1ldGVyIHRvIHNlbGVjdC5lcG9sbC4KLQotLSBJc3N1ZSAjMTM2MjY6IEFkZCBzdXBwb3J0IGZvciBTU0wgRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZQotICBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKCkgbWV0aG9kIGFuZCB0aGUgc3NsLk9QX1NJTkdMRV9ESF9VU0Ugb3B0aW9uLgotCi0tIElzc3VlICMxMTAwNjogRG9uJ3QgaXNzdWUgbG93IGxldmVsIHdhcm5pbmcgaW4gc3VicHJvY2VzcyB3aGVuIHBpcGUyKCkgZmFpbHMuCi0KLS0gSXNzdWUgIzEzNjIwOiBTdXBwb3J0IGZvciBDaHJvbWUgYnJvd3NlciBpbiB3ZWJicm93c2VyLiAgUGF0Y2ggY29udHJpYnV0ZWQKLSAgYnkgQXJuYXVkIENhbG1ldHRlcy4KLQotLSBJc3N1ZSAjMTE4Mjk6IEZpeCBjb2RlIGV4ZWN1dGlvbiBob2xlcyBpbiBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvcgotICBtZXRhY2xhc3NlcyB3aXRoIG1ldGFjbGFzc2VzLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEyNzA4OiBBZGQgc3Rhcm1hcCgpIGFuZCBzdGFybWFwX2FzeW5jKCkgbWV0aG9kcyAoc2ltaWxhciB0bwotICBpdGVydG9vbHMuc3Rhcm1hcCgpKSB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbC4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTc4NTogRml4IGluc3BlY3QgYW5kIHB5ZG9jIHdpdGggbWlzYmVoYXZpbmcgZGVzY3JpcHRvcnMuCi0KLS0gSXNzdWUgIzEzNjM3OiAiYTJiIiBmdW5jdGlvbnMgaW4gdGhlIGJpbmFzY2lpIG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKLSAgdW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxMzYzNDogQWRkIHN1cHBvcnQgZm9yIHF1ZXJ5aW5nIGFuZCBkaXNhYmxpbmcgU1NMIGNvbXByZXNzaW9uLgotCi0tIElzc3VlICMxMzYyNzogQWRkIHN1cHBvcnQgZm9yIFNTTCBFbGxpcHRpYyBDdXJ2ZS1iYXNlZCBEaWZmaWUtSGVsbG1hbgotICBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlIFNTTENvbnRleHQuc2V0X2VjZGhfY3VydmUoKSBtZXRob2QgYW5kIHRoZQotICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTM2MzU6IEFkZCBzc2wuT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBzbyB0aGF0IFNTTCBzZXJ2ZXJzCi0gIGNob29zZSB0aGUgY2lwaGVyIGJhc2VkIG9uIHRoZWlyIG93biBwcmVmZXJlbmNlcywgcmF0aGVyIHRoYW4gb24gdGhlCi0gIGNsaWVudCdzLgotCi0tIElzc3VlICMxMTgxMzogRml4IGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yIG1vZHVsZXMuIFBhdGNoIGJ5IEFuZHJlYXMKLSAgU3TDvGhyay4KLQotLSBJc3N1ZSAjNzUwMjogRml4IGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIERvY1Rlc3RDYXNlIGluc3RhbmNlcy4gIFBhdGNoIGJ5Ci0gIEPDqWRyaWMgS3JpZXIuCi0KLS0gSXNzdWUgIzExODcwOiB0aHJlYWRpbmc6IFByb3Blcmx5IHJlaW5pdGlhbGl6ZSB0aHJlYWRzIGludGVybmFsIGxvY2tzIGFuZAotICBjb25kaXRpb24gdmFyaWFibGVzIHRvIGF2b2lkIGRlYWRsb2NrcyBpbiBjaGlsZCBwcm9jZXNzZXMuCi0KLS0gSXNzdWUgIzgwMzU6IHVybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEKLSAgcmVkaXJlY3Rpb24gb3IgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEzNTYwOiBvcy5zdHJlcnJvcigpIG5vdyB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mCi0gIFVURi04LgotCi0tIElzc3VlICM4MzczOiBUaGUgZmlsZXN5c3RlbSBwYXRoIG9mIEFGX1VOSVggc29ja2V0cyBub3cgdXNlcyB0aGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyBhbmQgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLCByYXRoZXIgdGhhbiBVVEYtOC4gIFBhdGNoCi0gIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjMTAzNTA6IFJlYWQgYW5kIHNhdmUgZXJybm8gYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiB3aGljaCBtaWdodAotICBvdmVyd3JpdGUgaXQuICBPcmlnaW5hbCBwYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi0tIElzc3VlICMxMTYxMDogSW50cm9kdWNlIGEgbW9yZSBnZW5lcmFsIHdheSB0byBkZWNsYXJlIGFic3RyYWN0IHByb3BlcnRpZXMuCi0KLS0gSXNzdWUgIzEzNTkxOiBBIGJ1ZyBpbiBpbXBvcnRsaWIgaGFzIGJlZW4gZml4ZWQgdGhhdCBjYXVzZWQgaW1wb3J0X21vZHVsZQotICB0byBsb2FkIGEgbW9kdWxlIHR3aWNlLgotCi0tIElzc3VlICMxMzQ0OSBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbWV0aG9kIGhhcyBhIG5ldyAiYmxvY2tpbmciIHBhcmFtZXRlciB3aGljaAotICB3aGVuIHNldCB0byBGYWxzZSBtYWtlcyBydW4oKSBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKLSAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4uICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2zDoC4KLQotLSBJc3N1ZSAjODY4NCBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCi0gIGVudmlyb25tZW50cy4gIFBhdGNoIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoC4KLQotLSBBbGlhcyByZXNvdXJjZS5lcnJvciB0byBPU0Vycm9yIGFsYSBQRVAgMzE1MS4KLQotLSBJc3N1ZSAjNTY4OTogQWRkIHN1cHBvcnQgZm9yIGx6bWEgY29tcHJlc3Npb24gdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgotCi0tIElzc3VlICMxMzI0ODogVHVybiAzLjIncyBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGludG8gMy4zJ3MKLSAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSXQgY292ZXJzICdjZ2kuZXNjYXBlJywgJ2ltcG9ydGxpYi5hYmMuUHlMb2FkZXInLAotICAnaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcicsICdubnRwbGliLk5OVFAueGd0aXRsZScsICdubnRwbGliLk5OVFAueHBhdGgnLAotICBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGVzIG9mICdzbXRwZC5TTVRQQ2hhbm5lbCcuCi0KLS0gSXNzdWUgIzU5MDUsIElzc3VlICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKLSAgZW5jb2RpbmcsIGluc3RlYWQgb2YgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzEzNDY0OiBBZGQgYSByZWFkaW50bygpIG1ldGhvZCB0byBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UuICBQYXRjaAotICBieSBKb24gS3Vobi4KLQotLSB0YXJmaWxlLnB5OiBDb3JyZWN0bHkgZGV0ZWN0IGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtcyB3aXRoIGJsb2Nrc2l6ZXMKLSAgb3RoZXIgdGhhbiA5MDBrLgotCi0tIElzc3VlICMxMzQzOTogRml4IG1hbnkgZXJyb3JzIGluIHR1cnRsZSBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM2NzE1OiBBZGQgYSBtb2R1bGUgJ2x6bWEnIGZvciBjb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0uCi0gIFRoYW5rcyB0byBQZXIgw5h5dmluZCBLYXJsc2VuIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTM0ODc6IE1ha2UgaW5zcGVjdC5nZXRtb2R1bGUgcm9idXN0IGFnYWluc3QgY2hhbmdlcyBkb25lIHRvCi0gIHN5cy5tb2R1bGVzIHdoaWxlIGl0IGlzIGl0ZXJhdGluZyBvdmVyIGl0LgotCi0tIElzc3VlICMxMjYxODogRml4IGEgYnVnIHRoYXQgcHJldmVudGVkIHB5X2NvbXBpbGUgZnJvbSBjcmVhdGluZyBieXRlCi0gIGNvbXBpbGVkIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEluaXRpYWwgcGF0Y2ggYnkgU2pvZXJkIGRlIFZyaWVzLgotCi0tIElzc3VlICMxMzQ0NDogV2hlbiBzdGRvdXQgaGFzIGJlZW4gY2xvc2VkIGV4cGxpY2l0bHksIHdlIHNob3VsZCBub3QgYXR0ZW1wdAotICB0byBmbHVzaCBpdCBhdCBzaHV0ZG93biBhbmQgcHJpbnQgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEyNTY3OiBUaGUgY3Vyc2VzIG1vZHVsZSB1c2VzIFVuaWNvZGUgZnVuY3Rpb25zIGZvciBVbmljb2RlIGFyZ3VtZW50cwotICB3aGVuIGl0IGlzIGxpbmtlZCB0byB0aGUgbmN1cnNlcyBsaWJyYXJ5LiBJdCBlbmNvZGVzIGFsc28gVW5pY29kZSBzdHJpbmdzIHRvCi0gIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KLQotLSBJc3N1ZSAjMTI4NTY6IEVuc3VyZSBjaGlsZCBwcm9jZXNzZXMgZG8gbm90IGluaGVyaXQgdGhlIHBhcmVudCdzIHJhbmRvbQotICBzZWVkIGZvciBmaWxlbmFtZSBnZW5lcmF0aW9uIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUuICBQYXRjaCBieSBCcmlhbgotICBIYXJyaW5nLgotCi0tIElzc3VlICM5OTU3OiBTcG9vbGVkVGVtcG9yYXJ5RmlsZS50cnVuY2F0ZSgpIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNpemUKLSAgcGFyYW1ldGVyLCBhcyBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cy4gIFBhdGNoIGJ5IFJ5YW4gS2VsbHkuCi0KLS0gSXNzdWUgIzEzNDU4OiBGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgc3NsIG1vZHVsZSB3aGVuIGRlY29kaW5nIGEKLSAgY2VydGlmaWNhdGUgd2l0aCBhIHN1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCi0KLS0gSXNzdWUgIzEzNDE1OiBvcy51bnNldGVudigpIGRvZXNuJ3QgaWdub3JlIGVycm9ycyBhbnltb3JlLgotCi0tIElzc3VlICMxMzI0NTogc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNvbnN0cnVjdG9yJ3MgdGltZWZ1bmMgYW5kCi0gIGRlbGF5ZnVuY3QgcGFyYW1ldGVycyBhcmUgbm93IG9wdGlvbmFsLgotICBzY2hlZHVsZXIuZW50ZXIgYW5kIHNjaGVkdWxlci5lbnRlcmFicyBtZXRob2RzIGdhaW5lZCBhIG5ldyBrd2FyZ3MgcGFyYW1ldGVyLgotICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBDbGFyay4KLQotLSBJc3N1ZSAjMTIzMjg6IFVuZGVyIFdpbmRvd3MsIHJlZmFjdG9yIGhhbmRsaW5nIG9mIEN0cmwtQyBldmVudHMgYW5kCi0gIG1ha2UgX211bHRpcHJvY2Vzc2luZy53aW4zMi5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGludGVycnVwdGlibGUgd2hlbgotICB0aGUgd2FpdF9mbGFnIHBhcmFtZXRlciBpcyBmYWxzZS4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTMzMjI6IEZpeCBCdWZmZXJlZFdyaXRlci53cml0ZSgpIHRvIGVuc3VyZSB0aGF0IEJsb2NraW5nSU9FcnJvciBpcwotICByYWlzZWQgd2hlbiB0aGUgd3JhcHBlZCByYXcgZmlsZSBpcyBub24tYmxvY2tpbmcgYW5kIHRoZSB3cml0ZSB3b3VsZCBibG9jay4KLSAgUHJldmlvdXMgY29kZSBhc3N1bWVkIHRoYXQgdGhlIHJhdyB3cml0ZSgpIHdvdWxkIHJhaXNlIEJsb2NraW5nSU9FcnJvciwgYnV0Ci0gIFJhd0lPQmFzZS53cml0ZSgpIGlzIGRlZmluZWQgdG8gcmV0dXJuZWQgTm9uZSB3aGVuIHRoZSBjYWxsIHdvdWxkIGJsb2NrLgotICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzEzMzU4OiBIVE1MUGFyc2VyIG5vdyBjYWxscyBoYW5kbGVfZGF0YSBvbmx5IG9uY2UgZm9yIGVhY2ggQ0RBVEEuCi0KLS0gSXNzdWUgIzQxNDc6IG1pbmlkb20ncyB0b3ByZXR0eXhtbCBubyBsb25nZXIgYWRkcyB3aGl0ZXNwYWNlIGFyb3VuZCBhIHRleHQKLSAgbm9kZSB3aGVuIGl0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGFuIGVsZW1lbnQuICBJbml0aWFsIHBhdGNoIGJ5IERhbgotICBLZW5pZ3NiZXJnLgotCi0tIElzc3VlICMxMzM3NDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIG9zIG1vZHVsZS4gVXNlCi0gIFVuaWNvZGUgZmlsZW5hbWVzIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzIHRvIG5vdCBkZXBlbmQgb24gdGhlIEFOU0kgY29kZQotICBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgotCi0tIElzc3VlICMxMzI5NzogVXNlIGJ5dGVzIHR5cGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBiaW5hcnkgZGF0YSB0aHJvdWdoIFhNTFJQQy4KLQotLSBJc3N1ZSAjNjM5NzogU3VwcG9ydCAiL2Rldi9wb2xsIiBwb2xsaW5nIG9iamVjdHMgaW4gc2VsZWN0IG1vZHVsZSwKLSAgdW5kZXIgU29sYXJpcyAmIGRlcml2YXRpdmVzLgotCi0tIElzc3VlcyAjMTc0NTc2MSwgIzc1NTY3MCwgIzEzMzU3LCAjMTI2MjksICMxMjAwMzEzOiBIVE1MUGFyc2VyIG5vdyBjb3JyZWN0bHkKLSAgaGFuZGxlcyBub24tdmFsaWQgYXR0cmlidXRlcywgaW5jbHVkaW5nIGFkamFjZW50IGFuZCB1bnF1b3RlZCBhdHRyaWJ1dGVzLgotCi0tIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCBhbmQgcGFja2FnaW5nLm1hbmlmZXN0Lk1hbmlmZXN0Ci0gIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEzMzg0OiBSZW1vdmUgdW5uZWNlc3NhcnkgX19mdXR1cmVfXyBpbXBvcnQgaW4gTGliL3JhbmRvbS5weQotCi0tIElzc3VlICMxMzE0OTogU3BlZWQgdXAgYXBwZW5kLW9ubHkgU3RyaW5nSU8gb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTMzNzM6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZS5nZXQoKSBjb3VsZCBzb21ldGltZXMgYmxvY2sgaW5kZWZpbml0ZWx5Ci0gIHdoZW4gY2FsbGVkIHdpdGggYSB0aW1lb3V0LiAgUGF0Y2ggYnkgQXJuYXVkIFlzbWFsLgotCi0tIElzc3VlICMxMzI1NDogRml4IE1haWxkaXIgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBtYWlsZGlyIGNvbnRlbnRzCi0gIGFyZSByZWFkIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMzA2NzogbG9jYWxlLnNldGxvY2FsZSgpIG5vdyByYWlzZXMgVHlwZUVycm9yIGlmIHRoZSBzZWNvbmQKLSAgYXJndW1lbnQgaXMgYW4gaW52YWxpZCBpdGVyYWJsZS4gSXRzIGRvY3VtZW50YXRpb24gYW5kIGRvY3N0cmluZwotICB3ZXJlIGFsc28gdXBkYXRlZC4gSW5pdGlhbCBwYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxMzE0MDogRml4IHRoZSBkYWVtb25fdGhyZWFkcyBhdHRyaWJ1dGUgb2YgVGhyZWFkaW5nTWl4SW4uCi0KLS0gSXNzdWUgIzEzMzM5OiBGaXggY29tcGlsZSBlcnJvciBpbiBwb3NpeG1vZHVsZS5jIGR1ZSB0byBtaXNzaW5nIHNlbWljb2xvbi4KLSAgVGhhbmtzIHRvIFJvYmVydCBYaWFvLgotCi0tIEJ5dGUgY29tcGlsYXRpb24gaW4gcGFja2FnaW5nIGlzIG5vdyBpc29sYXRlZCBmcm9tIHRoZSBjYWxsaW5nIFB5dGhvbiAtQiBvcgotICAtTyBvcHRpb25zLCBpbnN0ZWFkIG9mIGJlaW5nIGRpc2FsbG93ZWQgdW5kZXIgLUIgb3IgYnVnZ3kgdW5kZXIgLU8uCi0KLS0gSXNzdWUgIzEwNTcwOiBjdXJzZXMucHV0cCgpIGFuZCBjdXJzZXMudHBhcm0oKSBhcmUgbm93IGV4cGVjdGluZyBhIGJ5dGUKLSAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVW5pY29kZSBzdHJpbmcuCi0KLS0gSXNzdWUgIzEzMjk1OiBodHRwLnNlcnZlciBub3cgcHJvZHVjZXMgdmFsaWQgSFRNTCA0LjAxIHN0cmljdC4KLQotLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgotCi0tIElzc3VlICMxMzI4NzogdXJsbGliLnJlcXVlc3QgYW5kIHVybGxpYi5lcnJvciBub3cgY29udGFpbnMgYW4gX19hbGxfXwotICBhdHRyaWJ1dGUgdG8gZXhwb3NlIG9ubHkgcmVsZXZhbnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAgUGF0Y2ggYnkgRmxvcmVudAotICBYaWNsdW5hLgotCi0tIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKLSAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgotCi0tIElzc3VlICMxMDgxNzogRml4IHVybHJldHJpZXZlIGZ1bmN0aW9uIHRvIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yIGV2ZW4KLSAgd2hlbiByZXBvcnRob29rIGlzIE5vbmUuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gRml4IHRoZSB4bWxycGMuY2xpZW50IHVzZXIgYWdlbnQgdG8gcmV0dXJuIHNvbWV0aGluZyBzaW1pbGFyIHRvCi0gIHVybGxpYi5yZXF1ZXN0IHVzZXIgYWdlbnQ6ICJQeXRob24teG1scnBjLzMuMyIuCi0KLS0gSXNzdWUgIzEzMjkzOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byBtYXJzaGFsIGJ5dGVzIHVzaW5nCi0gIHhtbHJwYy5jbGllbnQuCi0KLS0gSXNzdWUgIzEzMjkxOiBOYW1lRXJyb3IgaW4geG1scnBjIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzEzMjU4OiBVc2UgY2FsbGFibGUoKSBidWlsdC1pbiBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTMyNzM6IGZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBIVE1MUGFyc2VyIHRvIHByb3Blcmx5IGRldGVjdCBzb21lCi0gIHRhZ3Mgd2hlbiBzdHJpY3Q9RmFsc2UuCi0KLS0gSXNzdWUgIzExMTgzOiBBZGQgZmluZXItZ3JhaW5lZCBleGNlcHRpb25zIHRvIHRoZSBzc2wgbW9kdWxlLCBzbyB0aGF0Ci0gIHlvdSBkb24ndCBoYXZlIHRvIGluc3BlY3QgdGhlIGV4Y2VwdGlvbidzIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbW1vbiBjYXNlLgotCi0tIElzc3VlICMxMzIxNjogQWRkIGNwNjUwMDEgY29kZWMsIHRoZSBXaW5kb3dzIFVURi04IChDUF9VVEY4KS4KLQotLSBJc3N1ZSAjMTMyMjY6IEFkZCBSVExEX3h4eCBjb25zdGFudHMgdG8gdGhlIG9zIG1vZHVsZS4gVGhlc2UgY29uc3RhbnRzIGNhbiBiZQotICB1c2VkIHdpdGggc3lzLnNldGRsb3BlbmZsYWdzKCkuCi0KLS0gSXNzdWUgIzEwMjc4OiBBZGQgY2xvY2tfZ2V0cmVzKCksIGNsb2NrX2dldHRpbWUoKSBhbmQgQ0xPQ0tfeHh4IGNvbnN0YW50cyB0bwotICB0aGUgdGltZSBtb2R1bGUuIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykgcHJvdmlkZXMgYQotICBtb25vdG9uaWMgY2xvY2sKLQotLSBJc3N1ZSAjMTAzMzI6IG11bHRpcHJvY2Vzc2luZzogZml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiBhIFBvb2wgaXMgY2xvc2VkCi0gIGJlZm9yZSBhbGwgdGFza3MgaGF2ZSBjb21wbGV0ZWQuCi0KLS0gSXNzdWUgIzEzMjU1OiB3cm9uZyBkb2NzdHJpbmdzIGluIGFycmF5IG1vZHVsZS4KLQotLSBJc3N1ZSAjODU0MDogUmVtb3ZlIGRlcHJlY2F0ZWQgQ29udGV4dC5fY2xhbXAgYXR0cmlidXRlIGluIERlY2ltYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNTogQWRkZWQgRGVwcmVjYXRpb25XYXJuaW5nIHRvIGxvZ2dpbmcud2FybigpIG1ldGhvZCBhbmQgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzkxNjg6IG5vdyBzbXRwZCBpcyBhYmxlIHRvIGJpbmQgcHJpdmlsZWdlZCBwb3J0LgotCi0tIElzc3VlICMxMjUyOTogZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kCi0gIHNlbWljb2xvbnMgdG9nZXRoZXIuIFBhdGNoIGJ5IEJlbiBEYXJuZWxsIGFuZCBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTMyMjc6IGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgaGFzIGEgb3B0aW9uIHRvIGRpc3Rpbmd1aXNoCi0gIGNhbGxzIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLgotCi0tIElzc3VlICM2MDkwOiB6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAKLSAgZWFybGllciB0aGFuIDE5ODAgaXMgcHJvdmlkZWQuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMzE1MDogc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaCBmaWxlcwotICB3aGVuIGltcG9ydGVkLCBpbnN0ZWFkIGRvaW5nIGl0IGF0IGJ1aWxkIHRpbWUuICBUaGlzIG1ha2VzIGltcG9ydGluZwotICBzeXNjb25maWcgZmFzdGVyIGFuZCByZWR1Y2VzIFB5dGhvbiBzdGFydHVwIHRpbWUgYnkgMjAlLgotCi0tIElzc3VlICMxMjQ0ODogc210cGxpYiBub3cgZmx1c2hlcyBzdGRvdXQgd2hpbGUgcnVubmluZyBgYHB5dGhvbiAtbSBzbXRwbGliYGAKLSAgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTI0NTQ6IFRoZSBtYWlsYm94IG1vZHVsZSBpcyBub3cgdXNpbmcgQVNDSUksIGluc3RlYWQgb2YgdGhlIGxvY2FsZQotICBlbmNvZGluZywgdG8gcmVhZCBhbmQgd3JpdGUgLm1oX3NlcXVlbmNlcyBmaWxlcy4KLQotLSBJc3N1ZSAjMTMxOTQ6IHpsaWIuY29tcHJlc3NvYmooKS5jb3B5KCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpLmNvcHkoKSBhcmUKLSAgbm93IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNjczMDA3OiB1cmxsaWIucmVxdWVzdCBub3cgc3VwcG9ydHMgSEVBRCByZXF1ZXN0IHZpYSBuZXcgbWV0aG9kIGFyZ3VtZW50LgotICBQYXRjaCBjb250cmlidXRpb25zIGJ5IERhdmlkIFN0YW5laywgUGF0cmljayBXZXN0ZXJob2ZmIGFuZCBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzEyMzg2OiBwYWNrYWdpbmcgZG9lcyBub3QgZmFpbCBhbnltb3JlIHdoZW4gd3JpdGluZyB0aGUgUkVTT1VSQ0VTCi0gIGZpbGUuCi0KLS0gSXNzdWUgIzEzMTU4OiBGaXggZGVjb2RpbmcgYW5kIGVuY29kaW5nIG9mIEdOVSB0YXIgc3BlY2lmaWMgYmFzZS0yNTYgbnVtYmVyCi0gIGZpZWxkcyBpbiB0YXJmaWxlLgotCi0tIElzc3VlICMxMzAyNTogbWltZXR5cGVzIGlzIG5vdyByZWFkaW5nIE1JTUUgdHlwZXMgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLAotICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzEwNjUzOiBPbiBXaW5kb3dzLCB1c2Ugc3RyZnRpbWUoKSBpbnN0ZWFkIG9mIHdjc2Z0aW1lKCkgYmVjYXVzZQotICB3Y3NmdGltZSgpIGRvZXNuJ3QgZm9ybWF0IHRpbWUgem9uZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzEzMTUwOiBUaGUgdG9rZW5pemUgbW9kdWxlIGRvZXNuJ3QgY29tcGlsZSBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zCi0gIGF0IHN0YXJ0dXAgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTExNzE6IEZpeCBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSB3aGVuIFB5dGhvbiB3YXMKLSAgY29uZmlndXJlZCB3aXRoIGRpZmZlcmVudCBwcmVmaXggYW5kIGV4ZWMtcHJlZml4LgotCi0tIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCi0gIFBFUCAzMTQ3LWNvbXBsaWFudCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjNzM2NzogRml4IHBrZ3V0aWwud2Fsa19wYXRocyB0byBza2lwIGRpcmVjdG9yaWVzIHdob3NlCi0gIGNvbnRlbnRzIGNhbm5vdCBiZSByZWFkLgotCi0tIElzc3VlICMzMTYzOiBUaGUgc3RydWN0IG1vZHVsZSBnZXRzIG5ldyBmb3JtYXQgY2hhcmFjdGVycyAnbicgYW5kICdOJwotICBzdXBwb3J0aW5nIEMgaW50ZWdlciB0eXBlcyBgYHNzaXplX3RgYCBhbmQgYGBzaXplX3RgYCwgcmVzcGVjdGl2ZWx5LgotCi0tIElzc3VlICMxMzA5OTogRml4IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCB1bmRlciBhIFR1cmtpc2ggbG9jYWxlLgotICBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMxMzA4NzogQnVmZmVyZWRSZWFkZXIuc2VlaygpIG5vdyBhbHdheXMgcmFpc2VzIFVuc3VwcG9ydGVkT3BlcmF0aW9uCi0gIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgdW5zZWVrYWJsZSwgZXZlbiBpZiB0aGUgc2VlayBjb3VsZCBiZQotICBzYXRpc2ZpZWQgdXNpbmcgdGhlIGludGVybmFsIGJ1ZmZlci4gIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCi0KLS0gSXNzdWUgIzc2ODk6IEFsbG93IHBpY2tsaW5nIG9mIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2xhc3NlcyB3aGVuIHRoZWlyCi0gIG1ldGFjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggY29weXJlZy4gIFBhdGNoIGJ5IE5pY29sYXMgTS4gVGhpw6lyeSBhbmQgQ3JhaWcKLSAgQ2l0cm8uCi0KLS0gSXNzdWUgIzEzMDM0OiBXaGVuIGRlY29kaW5nIHNvbWUgU1NMIGNlcnRpZmljYXRlcywgdGhlIHN1YmplY3RBbHROYW1lCi0gIGV4dGVuc2lvbiBjb3VsZCBiZSB1bnJlcG9ydGVkLgotCi0tIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCi0gIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KLQotLSBJc3N1ZSAjMTI5NTk6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCB0byBjb2xsZWN0aW9ucy5fX2FsbF9fLgotCi0tIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIGFuZCBwYWNrYWdpbmcncyBNRVRBREFUQSBmaWxlcyB3aWxsCi0gIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IKLSAgRG93bmxvYWQtVVJMIGZpZWxkIGlzIHByZXNlbnQuCi0KLS0gSXNzdWUgIzEyNTY3OiBBZGQgY3Vyc2VzLnVuZ2V0X3djaCgpIGZ1bmN0aW9uLiBQdXNoIGEgY2hhcmFjdGVyIHNvIHRoZSBuZXh0Ci0gIGdldF93Y2goKSB3aWxsIHJldHVybiBpdC4KLQotLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgbm93IHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKLSAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgotCi0tIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCi0gIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KLQotLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKLSAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCi0gIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKLSAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCi0KLS0gSXNzdWUgIzEyODg4OiBGaXggYSBidWcgaW4gSFRNTFBhcnNlci51bmVzY2FwZSB0aGF0IHByZXZlbnRlZCBpdCB0byBlc2NhcGUKLSAgbW9yZSB0aGFuIDEyOCBlbnRpdGllcy4gIFBhdGNoIGJ5IFBldGVyIE90dGVuLgotCi0tIElzc3VlICMxMjg3ODogRXhwb3NlIGEgX19kaWN0X18gYXR0cmlidXRlIG9uIGlvLklPQmFzZSBhbmQgaXRzIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyNDk0OiBPbiBlcnJvciwgY2FsbCgpLCBjaGVja19jYWxsKCksIGNoZWNrX291dHB1dCgpIGFuZAotICBnZXRzdGF0dXNvdXRwdXQoKSBmdW5jdGlvbnMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBraWxsIHRoZSBwcm9jZXNzLAotICByZWFkIGl0cyBzdGF0dXMgKHRvIGF2b2lkIHpvbWJpcykgYW5kIGNsb3NlIHBpcGVzLgotCi0tIElzc3VlICMxMjcyMDogRXhwb3NlIGxvdy1sZXZlbCBMaW51eCBleHRlbmRlZCBmaWxlIGF0dHJpYnV0ZSBmdW5jdGlvbnMgaW4gb3MuCi0KLS0gSXNzdWUgIzEwOTQ2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaQotICBub3cgcmVzcGVjdCBhIC0tc2tpcC1idWlsZCBvcHRpb24gZ2l2ZW4gdG8gYmRpc3QuICBUaGUgcGFja2FnaW5nIGNvbW1hbmRzCi0gIHdlcmUgZml4ZWQgdG9vLgotCi0tIElzc3VlICMxMjg0NzogRml4IGEgY3Jhc2ggd2l0aCBuZWdhdGl2ZSBQVVQgYW5kIExPTkdfQklOUFVUIGFyZ3VtZW50cyBpbgotICB0aGUgQyBwaWNrbGUgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzExNTY0OiBBdm9pZCBjcmFzaGVzIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBodWdlIG9iamVjdHMgb3IgY29udGFpbmVycwotICAobW9yZSB0aGFuIDIqKjMxIGl0ZW1zKS4gIEluc3RlYWQsIGluIG1vc3QgY2FzZXMsIGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkLgotCi0tIElzc3VlICMxMjI4NzogRml4IGEgc3RhY2sgY29ycnVwdGlvbiBpbiBvc3NhdWRpb2RldiBtb2R1bGUgd2hlbiB0aGUgRkQgaXMKLSAgZ3JlYXRlciB0aGFuIEZEX1NFVFNJWkUuCi0KLS0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCi0gIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KLQotLSBJc3N1ZSAjOTkyMzogVGhlIG1haWxjYXAgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgcGxhdGZvcm0gcGF0aAotICBzZXBhcmF0b3IgZm9yIHRoZSBNQUlMQ0FQIGVudmlyb25tZW50IHZhcmlhYmxlIG9uIG5vbi1QT1NJWCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEyODM1OiBGb2xsb3cgdXAgdG8gIzY1NjAgdGhhdCB1bmNvbmRpdGlvbmFsbHkgcHJldmVudHMgdXNlIG9mIHRoZQotICB1bmVuY3J5cHRlZCBzZW5kbXNnL3JlY3Ztc2cgQVBJcyBvbiBTU0wgd3JhcHBlZCBzb2NrZXRzLiBQYXRjaCBieSBEYXZpZAotICBXYXRzb24uCi0KLS0gSXNzdWUgIzEyODAzOiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIG5vdyBhY2NlcHRzIGEgcGFzc3dvcmQgYXJndW1lbnQKLSAgdG8gYmUgdXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLiAgUGF0Y2ggYnkgQWRhbSBTaW1wa2lucy4KLQotLSBJc3N1ZSAjMTE2NTc6IEZpeCBzZW5kaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3ZlciAyNTUgb3ZlciBhIG11bHRpcHJvY2Vzc2luZwotICBQaXBlLgotCi0tIElzc3VlICMxMjgxMTogdGFibmFubnkuY2hlY2soKSBub3cgcHJvbXB0bHkgY2xvc2VzIGNoZWNrZWQgZmlsZXMuIFBhdGNoIGJ5Ci0gIEFudGhvbnkgQnJpZ2dzLgotCi0tIElzc3VlICM2NTYwOiBUaGUgc2VuZG1zZy9yZWN2bXNnIEFQSSBpcyBub3cgZXhwb3NlZCBieSB0aGUgc29ja2V0IG1vZHVsZQotICB3aGVuIHByb3ZpZGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLCBzdXBwb3J0aW5nIHByb2Nlc3Npbmcgb2YKLSAgYW5jaWxsYXJ5IGRhdGEgaW4gcHVyZSBQeXRob24gY29kZS4gUGF0Y2ggYnkgRGF2aWQgV2F0c29uIGFuZCBIZWlrbyBXdW5kcmFtLgotCi0tIElzc3VlICMxMjMyNjogT24gTGludXgsIHN5cy5wbGF0Zm9ybSBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24KLSAgYW55bW9yZS4gSXQgaXMgbm93IGFsd2F5cyAnbGludXgnLCBpbnN0ZWFkIG9mICdsaW51eDInIG9yICdsaW51eDMnIGRlcGVuZGluZwotICBvbiB0aGUgTGludXggdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTIyMTM6IEZpeCBhIGJ1ZmZlcmluZyBidWcgd2l0aCBpbnRlcmxlYXZlZCByZWFkcyBhbmQgd3JpdGVzIHRoYXQKLSAgY291bGQgYXBwZWFyIG9uIEJ1ZmZlcmVkUmFuZG9tIHN0cmVhbXMuCi0KLS0gSXNzdWUgIzEyNzc4OiBSZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIHdoZW4gSlNPTi1lbmNvZGluZyBhIGxhcmdlCi0gIGNvbnRhaW5lciBvZiBtYW55IHNtYWxsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNjUwOiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHN1YnByb2Nlc3MuUG9wZW4gY291bGQgbGVhawotICByZXNvdXJjZXMgKEZEL3pvbWJpZSkgd2hlbiBraWxsZWQgYXQgdGhlIHdyb25nIHRpbWUuCi0KLS0gSXNzdWUgIzEyNzQ0OiBGaXggaW5lZmZpY2llbnQgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMgYmV0d2VlbiAyKiozMSBhbmQKLSAgMioqNjMgb24gc3lzdGVtcyB3aXRoIGEgNjQtYml0IEMgImxvbmciLgotCi0tIElzc3VlICMxMjY0NjogQWRkIGFuICdlb2YnIGF0dHJpYnV0ZSB0byB6bGliLkRlY29tcHJlc3MsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCi0gIGRldGVjdCB0cnVuY2F0ZWQgaW5wdXQgc3RyZWFtcy4KLQotLSBJc3N1ZSAjMTE1MTM6IEZpeCBleGNlcHRpb24gaGFuZGxpbmcgYGB0YXJmaWxlLlRhckZpbGUuZ3pvcGVuKClgYCB3aGVuCi0gIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCi0KLS0gSXNzdWUgIzEyNjg3OiBGaXggYSBwb3NzaWJsZSBidWZmZXJpbmcgYnVnIHdoZW4gdW5waWNrbGluZyB0ZXh0IG1vZGUKLSAgKHByb3RvY29sIDAsIG1vc3RseSkgcGlja2xlcy4KLQotLSBJc3N1ZSAjMTAwODc6IEZpeCB0aGUgaHRtbCBvdXRwdXQgZm9ybWF0IG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgotCi0tIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgotCi0tIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQotICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCi0KLS0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAotICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCi0gIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKLSAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KLQotLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCi0KLS0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKLSAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KLQotLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKLSAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCi0gIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgotCi0tIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdwotICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKLSAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCi0KLS0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoRXZlbnQsCi0gIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgotICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcwotICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKLSAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMsIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQotICB1bmRlcnNjb3JlZCBuYW1lcyBsaWtlIG11bHRpcHJvY2Vzc2luZyBkaWQuCi0KLS0gSXNzdWUgIzk3MjM6IEFkZCBzaGxleC5xdW90ZSBmdW5jdGlvbnMsIHRvIGVzY2FwZSBmaWxlbmFtZXMgYW5kIGNvbW1hbmQKLSAgbGluZXMuCi0KLS0gSXNzdWUgIzEyNjAzOiBGaXggcHlkb2Muc3lub3BzaXMoKSBvbiBmaWxlcyB3aXRoIG5vbi1uZWdhdGl2ZSBzdF9tdGltZS4KLQotLSBJc3N1ZSAjMTI1MTQ6IFVzZSB0cnkvZmluYWxseSB0byBhc3N1cmUgdGhlIHRpbWVpdCBtb2R1bGUgcmVzdG9yZXMgZ2FyYmFnZQotICBjb2xsZWN0aW9ucyB3aGVuIGl0IGlzIGRvbmUuCi0KLS0gSXNzdWUgIzEyNjA3OiBJbiBzdWJwcm9jZXNzLCBmaXggaXNzdWUgd2hlcmUgaWYgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIgaXMKLSAgZ2l2ZW4gYXMgYSBsb3cgZmQsIGl0IGdldHMgb3ZlcndyaXR0ZW4uCi0KLS0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKLSAgYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlci4KLQotLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCi0KLS0gSXNzdWUgIzE4MTM6IEZpeCBjb2RlYyBsb29rdXAgdW5kZXIgVHVya2lzaCBsb2NhbGVzLgotCi0tIElzc3VlICMxMjU5MTogSW1wcm92ZSBzdXBwb3J0IG9mICJ1bml2ZXJzYWwgbmV3bGluZXMiIGluIHRoZSBzdWJwcm9jZXNzCi0gIG1vZHVsZTogdGhlIHBpcGVkIHN0cmVhbXMgY2FuIG5vdyBiZSBwcm9wZXJseSByZWFkIGZyb20gb3Igd3JpdHRlbiB0by4KLQotLSBJc3N1ZSAjMTI1OTE6IEFsbG93IGlvLlRleHRJT1dyYXBwZXIgdG8gd29yayB3aXRoIHJhdyBJTyBvYmplY3RzICh3aXRob3V0Ci0gIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGEgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0byBtYW5kYXRlCi0gIHVuYnVmZmVyZWQgd3JpdGVzLgotCi0tIElzc3VlICMxMDg4MzogRml4IHNvY2tldCBsZWFrcyBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHVzaW5nIEZUUC4KLQotLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KLQotLSBJc3N1ZSAjMTI1NTE6IFByb3ZpZGUgYSBnZXRfY2hhbm5lbF9iaW5kaW5nKCkgbWV0aG9kIG9uIFNTTCBzb2NrZXRzIHNvIGFzCi0gIHRvIGdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgdGhlIGN1cnJlbnQgU1NMIHNlc3Npb24gKG9ubHkgdGhlCi0gICJ0bHMtdW5pcXVlIiBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQpLiAgVGhpcyBhbGxvd3MgdGhlIGltcGxlbWVudGF0aW9uCi0gIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIFNDUkFNLVNIQS0xLVBMVVMuICBQYXRjaCBieQotICBKYWNlayBLb25pZWN6bnkuCi0KLS0gSXNzdWUgIzY2NTE5NDogZW1haWwudXRpbHMgbm93IGhhcyBmb3JtYXRfZGF0ZXRpbWUgYW5kIHBhcnNlZGF0ZV90b19kYXRldGltZQotICBmdW5jdGlvbnMsIGFsbG93aW5nIGZvciByb3VuZCB0cmlwcGluZyBvZiBSRkMyODIyIGZvcm1hdCBkYXRlcy4KLQotLSBJc3N1ZSAjMTI1NzE6IEFkZCBhIHBsYXQtbGludXgzIGRpcmVjdG9yeSBtaXJyb3JpbmcgdGhlIHBsYXQtbGludXgyCi0gIGRpcmVjdG9yeSwgc28gdGhhdCAiaW1wb3J0IERMRkNOIiBhbmQgb3RoZXIgc2ltaWxhciBpbXBvcnRzIHdvcmsgb24KLSAgTGludXggMy4wLgotCi0tIElzc3VlICM3NDg0OiBzbXRwbGliIG5vIGxvbmdlciBwdXRzIDw+IGFyb3VuZCBhZGRyZXNzZXMgaW4gVlJGWSBhbmQgRVhQTgotICBjb21tYW5kczsgdGhleSBhcmVuJ3QgcmVxdWlyZWQgYW5kIGluIGZhY3QgcG9zdGZpeCBkb2Vzbid0IHN1cHBvcnQgdGhhdCBmb3JtLgotCi0tIElzc3VlICMxMjI3MzogUmVtb3ZlIGFzdC5fX3ZlcnNpb25fXy4gQVNUIGNoYW5nZXMgY2FuIGJlIGFjY291bnRlZCBmb3IgYnkKLSAgY2hlY2tpbmcgc3lzLnZlcnNpb25faW5mbyBvciBzeXMuX21lcmN1cmlhbC4KLQotLSBTaWxlbmNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIgdHJhY2ViYWNrcyB3aGVuIHNodXR0aW5nIGRvd24gYQotICBQcm9jZXNzUG9vbEV4ZWN1dG9yLgotCi0tIEZpeCBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IKLSAgYnkgam9pbmluZyBhbGwgcXVldWVzIGFuZCBwcm9jZXNzZXMgd2hlbiBzaHV0ZG93bigpIGlzIGNhbGxlZC4KLQotLSBJc3N1ZSAjMTE2MDM6IEZpeCBhIGNyYXNoIHdoZW4gX19zdHJfXyBpcyByZWJvdW5kIGFzIF9fcmVwcl9fLiAgUGF0Y2ggYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMTMyMTogRml4IGEgY3Jhc2ggd2l0aCBtdWx0aXBsZSBpbXBvcnRzIG9mIHRoZSBfcGlja2xlIG1vZHVsZSB3aGVuCi0gIGVtYmVkZGluZyBQeXRob24uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzY3NTU6IEFkZCBnZXRfd2NoKCkgbWV0aG9kIHRvIGN1cnNlcy53aW5kb3cgY2xhc3MuIFBhdGNoIGJ5IEnDsWlnbwotICBTZXJuYS4KLQotLSBBZGQgY2dpLmNsb3NlbG9nKCkgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIGxvZyBmaWxlLgotCi0tIElzc3VlICMxMjUwMjogYXN5bmNvcmU6IGZpeCBwb2xsaW5nIGxvb3Agd2l0aCBBRl9VTklYIHNvY2tldHMuCi0KLS0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgaW4gYSBlbmRpYW4gZGlmZmVyZW50IHRoYW4KLSAgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCi0KLS0gUmFpc2UgVmFsdWVFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZSBfQ0hVTktfU0laRSBhdHRyaWJ1dGUgb2YgYQotICBUZXh0SU9XcmFwcGVyIHRvIGEgaHVnZSB2YWx1ZSwgbm90IFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjMTI1MDQ6IENsb3NlIGZpbGUgaGFuZGxlcyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gcGFja2FnaW5nLmRhdGFiYXNlLgotICBUaGlzIGZpeGVzIGEgYnVnIHdpdGggdGhlIHJlbW92ZSAodW5pbnN0YWxsKSBmZWF0dXJlIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWVzICMxMjE2OSBhbmQgIzEwNTEwOiBGYWN0b3Igb3V0IGNvZGUgdXNlZCBieSB2YXJpb3VzIHBhY2thZ2luZyBjb21tYW5kcwotICB0byBtYWtlIEhUVFAgUE9TVCByZXF1ZXN0cywgYW5kIG1ha2Ugc3VyZSBpdCB1c2VzIENSTEYuCi0KLS0gSXNzdWUgIzEyMDE2OiBNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gVGhleSBvbmx5Ci0gIGlnbm9yZSB0aGUgZmlyc3QgYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLAotICBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLCAncmVwbGFjZScpIGdpdmVzICdcdWZmZmRcbicgaW5zdGVhZCBvZiAnXHVmZmZkJy4KLQotLSBJc3N1ZSAjMTI0NTk6IHRpbWUuc2xlZXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgc2xlZXAgbGVuZ3RoIGlzCi0gIG5lZ2F0aXZlLCBpbnN0ZWFkIG9mIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3Mgb3IgcmFpc2luZyBhbiBJT0Vycm9yIG9uCi0gIExpbnV4IGZvciBleGFtcGxlLCB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBhbGwgcGxhdGZvcm1zLgotCi0tIElzc3VlICMxMjQ1MTogcHlkb2M6IGh0bWxfZ2V0ZmlsZSgpIG5vdyB1c2VzIHRva2VuaXplLm9wZW4oKSB0byBzdXBwb3J0Ci0gIFB5dGhvbiBzY3JpcHRzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWQgdGhlIGNvZGluZyBjb29raWUKLSAgb2YgdGhlIHNjcmlwdCkuCi0KLS0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCi0gIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgotCi0tIElzc3VlICMxMjQ2Nzogd2FybmluZ3M6IGZpeCBhIHJhY2UgY29uZGl0aW9uIGlmIGEgd2FybmluZyBpcyBlbWl0dGVkIGF0Ci0gIHNodXRkb3duLCBpZiBnbG9iYWxzKClbJ19fZmlsZV9fJ10gaXMgTm9uZS4KLQotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCi0gIHRoYW4gVVRGLTggKHNjcmlwdHMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgotCi0tIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCi0gIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTIxNDc6IEFkanVzdCB0aGUgbmV3LWluLTMuMiBzbXRwbGliLnNlbmRfbWVzc2FnZSBtZXRob2QgZm9yIGJldHRlcgotICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogIGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQtIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzEyMzUyOiBGaXggYSBkZWFkbG9jayBpbiBtdWx0aXByb2Nlc3NpbmcuSGVhcCB3aGVuIGEgYmxvY2sgaXMgZnJlZWQgYnkKLSAgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHdoaWxlIHRoZSBIZWFwIGxvY2sgaXMgaGVsZC4KLQotLSBJc3N1ZSAjMTI0NjI6IHRpbWUuc2xlZXAoKSBub3cgaW1tZWRpYXRlbHkgY2FsbHMgdGhlIChQeXRob24pIHNpZ25hbCBoYW5kbGVyCi0gIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBpbnN0ZWFkIG9mIGhhdmluZyB0byB3YWl0IHVudGlsIHRoZSBuZXh0Ci0gIGluc3RydWN0aW9uLgotCi0tIElzc3VlICMxMjQ0MjogbmV3IHNodXRpbC5kaXNrX3VzYWdlIGZ1bmN0aW9uLCBwcm92aWRpbmcgdG90YWwsIHVzZWQgYW5kIGZyZWUKLSAgZGlzayBzcGFjZSBzdGF0aXN0aWNzLgotCi0tIElzc3VlICMxMjQ1MTogVGhlIFhJbmNsdWRlIGRlZmF1bHQgbG9hZGVyIG9mIHhtbC5ldHJlZSBub3cgZGVjb2RlcyBmaWxlcyBmcm9tCi0gIFVURi04IGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gSXQgbm93Ci0gIGFsc28gb3BlbnMgWE1MIGZpbGVzIGZvciB0aGUgcGFyc2VyIGluIGJpbmFyeSBtb2RlIGluc3RlYWQgb2YgdGhlIHRleHQgbW9kZQotICB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBkb2N0ZXN0LmRlYnVnX3NjcmlwdCgpIGRvZXNuJ3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUKLSAgYW55bW9yZSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwKLSAgdG8gcmVhZCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTI0NTE6IGRpc3R1dGlscyBub3cgb3BlbnMgdGhlIHNldHVwIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSB0byByZWFkIHRoZQotICBlbmNvZGluZyBjb29raWUsIGluc3RlYWQgb2Ygb3BlbmluZyBpdCBpbiBVVEYtOC4KLQotLSBJc3N1ZSAjOTUxNjogT24gTWFjIE9TIFgsIGNoYW5nZSBEaXN0dXRpbHMgdG8gbm8gbG9uZ2VyIGdsb2JhbGx5IGF0dGVtcHQgdG8KLSAgY2hlY2sgb3Igc2V0IHRoZSBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoZQotICBpbnRlcnByZXRlciBwcm9jZXNzLiAgVGhpcyBjb3VsZCBjYXVzZSBmYWlsdXJlcyBpbiBub24tRGlzdHV0aWxzIHN1YnByb2Nlc3NlcwotICBhbmQgd2FzIHVucmVsaWFibGUgc2luY2UgdGVzdHMgb3IgdXNlciBwcm9ncmFtcyBjb3VsZCBtb2RpZnkgdGhlIGludGVycHJldGVyCi0gIGVudmlyb25tZW50IGFmdGVyIERpc3R1dGlscyBzZXQgaXQuICBJbnN0ZWFkLCBoYXZlIERpc3R1dGlscyBzZXQgdGhlCi0gIGRlcGxveW1lbnQgdGFyZ2V0IG9ubHkgaW4gdGhlIGVudmlyb25tZW50IG9mIGVhY2ggYnVpbGQgc3VicHJvY2Vzcy4gIEl0IGlzCi0gIHN0aWxsIHBvc3NpYmxlIHRvIGdsb2JhbGx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJ5IHNldHRpbmcKLSAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGJlZm9yZSBsYXVuY2hpbmcgdGhlIGludGVycHJldGVyOyBpdHMgdmFsdWUgbXVzdCBiZQotICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgdmFsdWUgd2l0aCB3aGljaCB0aGUgaW50ZXJwcmV0ZXIKLSAgd2FzIGJ1aWx0LiAgQWxzbywgaW1wbGVtZW50IHRoZSBzYW1lIGhhbmRsaW5nIGluIHBhY2thZ2luZy4KLQotLSBJc3N1ZSAjMTI0MjI6IEluIHRoZSBjb3B5IG1vZHVsZSwgZG9uJ3Qgc3RvcmUgb2JqZWN0cyB0aGF0IGFyZSB0aGVpciBvd24gY29weQotICBpbiB0aGUgbWVtbyBkaWN0LgotCi0tIElzc3VlICMxMjMwMzogQWRkIHNpZ3dhaXRpbmZvKCkgYW5kIHNpZ3RpbWVkd2FpdCgpIHRvIHRoZSBzaWduYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzE4NzQ6IGVtYWlsIG5vdyBkZXRlY3RzIGFuZCByZXBvcnRzIGFzIGEgZGVmZWN0IHRoZSBwcmVzZW5jZSBvZgotICBhbnkgQ1RFIG90aGVyIHRoYW4gN2JpdCwgOGJpdCwgb3IgYmluYXJ5IG9uIGEgbXVsdGlwYXJ0LgotCi0tIElzc3VlICMxMjM4MzogRml4IHN1YnByb2Nlc3MgbW9kdWxlIHdpdGggZW52PXt9OiBkb24ndCBjb3B5IHRoZSBlbnZpcm9ubWVudAotICB2YXJpYWJsZXMsIHN0YXJ0IHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQuCi0KLS0gSXNzdWUgIzExNjM3OiBGaXggc3VwcG9ydCBmb3IgaW1wb3J0aW5nIHBhY2thZ2luZyBzZXR1cCBob29rcyBmcm9tIHRoZQotICBwcm9qZWN0IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNjc3MTogTW92ZWQgdGhlIGN1cnNlcy53cmFwcGVyIGZ1bmN0aW9uIGZyb20gdGhlIHNpbmdsZS1mdW5jdGlvbgotICB3cmFwcGVyIG1vZHVsZSBpbnRvIF9faW5pdF9fLCBlbGltaW5hdGluZyB0aGUgbW9kdWxlLiAgU2luY2UgX19pbml0X18gd2FzCi0gIGFscmVhZHkgaW1wb3J0aW5nIHRoZSBmdW5jdGlvbiB0byBjdXJzZXMud3JhcHBlciwgdGhlcmUgaXMgbm8gQVBJIGNoYW5nZS4KLQotLSBJc3N1ZSAjMTE1ODQ6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgaGVhZGVyCi0gIHBhc3NlZCB0byBpdCBpcyBhIEhlYWRlciBvYmplY3QsIGFuZCBIZWFkZXIvbWFrZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWwKLSAgaWYgZ2l2ZW4gYmluYXJ5IHVua25vd24tOGJpdCBpbnB1dC4KLQotLSBJc3N1ZSAjMTE3MDA6IG1haWxib3ggcHJveHkgb2JqZWN0IGNsb3NlIG1ldGhvZHMgY2FuIG5vdyBiZSBjYWxsZWQgbXVsdGlwbGUKLSAgdGltZXMgd2l0aG91dCBlcnJvci4KLQotLSBJc3N1ZSAjMTE3Njc6IENvcnJlY3QgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gbWFpbGJveCdzIF9fZ2V0aXRlbV9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTIxMzM6IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fb3BlbigpIG9mIHVybGxpYi5yZXF1ZXN0IGNsb3NlcyB0aGUgSFRUUAotICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAotICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjMTIyNDA6IEFsbG93IG11bHRpcGxlIHNldHVwIGhvb2tzIGluIHBhY2thZ2luZydzIHNldHVwLmNmZyBmaWxlcy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBCcmF5LgotCi0tIElzc3VlICM5Mjg0OiBBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdAotICBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzExNTk1OiBGaXggYXNzb3J0ZWQgYnVncyBpbiBwYWNrYWdpbmcudXRpbC5jZmdfdG9fYXJncywgYQotICBjb21wYXRpYmlsaXR5IGhlbHBlciBmb3IgdGhlIGRpc3R1dGlscy1wYWNrYWdpbmcgdHJhbnNpdGlvbi4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IEVyaWsgQnJheS4KLQotLSBJc3N1ZSAjMTIyODc6IEluIG9zc2F1ZGlvZGV2LCBjaGVjayB0aGF0IHRoZSBkZXZpY2UgaXNuJ3QgY2xvc2VkIGluIHNldmVyYWwKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTIwMDk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gbmV0cmMgZmlsZSBjb21tZW50IGhhbmRsaW5nLgotCi0tIElzc3VlICMxMjI0NjogV2FybiBhbmQgZmFpbCB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgcHJvamVjdCBmcm9tCi0gIGFuIHVuaW5zdGFsbGVkIFB5dGhvbiAoYnVpbHQgaW4gYSBzb3VyY2UgY2hlY2tvdXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgVHNoZXBhbmcgTGVraG9ua2hvYmUuCi0KLS0gSXNzdWUgIzEwNjk0OiB6aXBmaWxlIG5vdyBpZ25vcmVzIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiBhIHppcGZpbGUuCi0KLS0gSXNzdWUgIzEyMjgzOiBGaXhlZCByZWdyZXNzaW9uIGluIHNtdHBsaWIgcXVvdGluZyBvZiBsZWFkaW5nIGRvdHMgaW4gREFUQS4KLQotLSBJc3N1ZSAjMTA0MjQ6IEFyZ3BhcnNlIG5vdyBpbmNsdWRlcyB0aGUgbmFtZXMgb2YgdGhlIG1pc3NpbmcgcmVxdWlyZWQKLSAgYXJndW1lbnRzIGluIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBlcnJvciBtZXNzYWdlLgotCi0tIElzc3VlICMxMjE2ODogU3lzTG9nSGFuZGxlciBub3cgYWxsb3dzIE5VTCB0ZXJtaW5hdGlvbiB0byBiZSBjb250cm9sbGVkIHVzaW5nCi0gIGEgbmV3ICdhcHBlbmRfbnVsJyBhdHRyaWJ1dGUgb24gdGhlIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzExNTgzOiBTcGVlZCB1cCBvcy5wYXRoLmlzZGlyIG9uIFdpbmRvd3MgYnkgdXNpbmcgR2V0RmlsZUF0dHJpYnV0ZXMKLSAgaW5zdGVhZCBvZiBvcy5zdGF0LgotCi0tIElzc3VlICMxMjAyMTogTWFrZSBtbWFwJ3MgcmVhZCgpIG1ldGhvZCBhcmd1bWVudCBvcHRpb25hbC4gUGF0Y2ggYnkgUGV0cmkKLSAgTGVodGluZW4uCi0KLS0gSXNzdWUgIzkyMDU6IGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIG5vdyBkZXRlY3RzIGtpbGxlZAotICBjaGlsZHJlbiBhbmQgcmFpc2VzIEJyb2tlblByb2Nlc3NQb29sIGluIHN1Y2ggYSBzaXR1YXRpb24uICBQcmV2aW91c2x5IGl0Ci0gIHdvdWxkIHJlbGlhYmx5IGZyZWV6ZS9kZWFkbG9jay4KLQotLSBJc3N1ZSAjMTIwNDA6IEV4cG9zZSBhIG5ldyBhdHRyaWJ1dGUgYGBzZW50aW5lbGBgIG9uIGluc3RhbmNlcyBvZgotICBgYG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYGAuICBBbHNvLCBmaXggUHJvY2Vzcy5qb2luKCkgdG8gbm90IHVzZSBwb2xsaW5nCi0gIGFueW1vcmUsIHdoZW4gZ2l2ZW4gYSB0aW1lb3V0LgotCi0tIElzc3VlICMxMTg5MzogUmVtb3ZlIG9ic29sZXRlIGludGVybmFsIHdyYXBwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGluIHRoZQotICBzbXRwbGliIG1vZHVsZS4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCi0KLS0gSXNzdWUgIzEyMDgwOiBGaXggYSBEZWNpbWFsLnBvd2VyKCkgY2FzZSB0aGF0IHRvb2sgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZQotICB0byBjb21wdXRlLgotCi0tIElzc3VlICMxMjIyMTogUmVtb3ZlIF9fdmVyc2lvbl9fIGF0dHJpYnV0ZXMgZnJvbSBweWV4cGF0LCBwaWNrbGUsIHRhcmZpbGUsCi0gIHB5ZG9jLCB0a2ludGVyLCBhbmQgeG1sLnBhcnNlcnMuZXhwYXQuIFRoaXMgd2VyZSB1c2VsZXNzIHZlcnNpb24gY29uc3RhbnRzCi0gIGxlZnQgb3ZlciBmcm9tIHRoZSBNZXJjdXJpYWwgdHJhbnNpdGlvbgotCi0tIE5hbWVkIHR1cGxlcyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCB2YXJzKCkuCi0KLS0gSXNzdWUgIzEyMDg1OiBGaXggYW4gYXR0cmlidXRlIGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBpZiB0aGUKLSAgY29uc3RydWN0b3IgaGFzIGZhaWxlZCwgZS5nLiBiZWNhdXNlIG9mIGFuIHVuZGVjbGFyZWQga2V5d29yZCBhcmd1bWVudC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBPbGVnIE9zaG15YW4uCi0KLS0gSXNzdWUgIzEyMDI4OiBNYWtlIHRocmVhZGluZy5fZ2V0X2lkZW50KCkgcHVibGljLCByZW5hbWUgaXQgdG8KLSAgdGhyZWFkaW5nLmdldF9pZGVudCgpIGFuZCBkb2N1bWVudCBpdC4gVGhpcyBmdW5jdGlvbiB3YXMgYWxyZWFkeSB1c2VkIHVzaW5nCi0gIF90aHJlYWQuZ2V0X2lkZW50KCkuCi0KLS0gSXNzdWUgIzEyMTcxOiBJbmNyZW1lbnRhbEVuY29kZXIucmVzZXQoKSBvZiBDSksgY29kZWNzIChtdWx0aWJ5dGVjb2RlYykgY2FsbHMKLSAgZW5jcmVzZXQoKSBpbnN0ZWFkIG9mIGRlY3Jlc2V0KCkuCi0KLS0gSXNzdWUgIzEyMjE4OiBSZW1vdmVkIHdzZ2lyZWYuZWdnLWluZm8uCi0KLS0gSXNzdWUgIzEyMTk2OiBBZGQgcGlwZTIoKSB0byB0aGUgb3MgbW9kdWxlLgotCi0tIElzc3VlICM5ODUwNjQ6IE1ha2UgcGxpc3RsaWIgbW9yZSByZXNpbGllbnQgdG8gZmF1bHR5IGlucHV0IHBsaXN0cy4KLSAgUGF0Y2ggYnkgTWhlciBNb3ZzaXN5YW4uCi0KLS0gSXNzdWUgIzE2MjU6IEJaMkZpbGUgYW5kIGJ6Mi5kZWNvbXByZXNzKCkgbm93IHN1cHBvcnQgbXVsdGktc3RyZWFtIGZpbGVzLgotICBJbml0aWFsIHBhdGNoIGJ5IE5pciBBaWRlcy4KLQotLSBJc3N1ZSAjMTIxNzU6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQoLTEpIG5vdyBjYWxscyByYXcucmVhZGFsbCgpIGlmIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IG9ubHkgcmVhZHMgdGhlIGZpbGUgcG9zaXRpb24gYW5kIHNpemUKLSAgb25jZS4KLQotLSBJc3N1ZSAjMTIxNzU6IFJhd0lPQmFzZS5yZWFkYWxsKCkgbm93IHJldHVybnMgTm9uZSBpZiByZWFkKCkgcmV0dXJucyBOb25lLgotCi0tIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIGFuIElPRXJyb3IKLSAgaWYgdGhlIGZpbGUgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4aW4KLSAgY2xhc3MgZm9yIGNsZWFudXAuIEluaXRpYWwgUGF0Y2ggYnkgSnVzdGluIFdhcmtlbnRpbi4KLQotLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgotICBjdHlwZXMudXRpbC5fZ2V0X3NvbmFtZSgpLiAgUGF0Y2ggYnkgU2lqaW4gSm9zZXBoLgotCi0tIElzc3VlICMxMDgxODogUmVtb3ZlIHRoZSBUayBHVUkgYW5kIHRoZSBzZXJ2ZSgpIGZ1bmN0aW9uIG9mIHRoZSBweWRvYyBtb2R1bGUsCi0gIHB5ZG9jIC1nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgaXQgaGFzIGEgbmV3IGVuaGFuY2VkIHdlYgotICBzZXJ2ZXIuCi0KLS0gSXNzdWUgIzE0NDE1MzA6IEluIGltYXBsaWIsIHJlYWQgdGhlIGRhdGEgaW4gb25lIGNodW5rIHRvIHNwZWVkIHVwIGxhcmdlCi0gIHJlYWRzIGFuZCBzaW1wbGlmeSBjb2RlLgotCi0tIElzc3VlICMxMjA3MDogRml4IHRoZSBNYWtlZmlsZSBwYXJzZXIgb2YgdGhlIHN5c2NvbmZpZyBtb2R1bGUgdG8gaGFuZGxlCi0gIGNvcnJlY3RseSByZWZlcmVuY2VzIHRvICJib2d1cyB2YXJpYWJsZSIgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKS4KLQotLSBJc3N1ZSAjMTIxMDA6IERvbid0IHJlc2V0IGluY3JlbWVudGFsIGVuY29kZXJzIG9mIENKSyBjb2RlY3MgYXQgZWFjaCBjYWxsIHRvCi0gIHRoZWlyIGVuY29kZSgpIG1ldGhvZCBhbnltb3JlLCBidXQgY29udGludWUgdG8gY2FsbCB0aGUgcmVzZXQoKSBtZXRob2QgaWYgdGhlCi0gIGZpbmFsIGFyZ3VtZW50IGlzIFRydWUuCi0KLS0gSXNzdWUgIzEyMDQ5OiBBZGQgUkFORF9ieXRlcygpIGFuZCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9ucyB0byB0aGUgc3NsCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjUwMTogb3MuZGV2aWNlX2VuY29kaW5nKCkgcmV0dXJucyBOb25lIG9uIFdpbmRvd3MgaWYgdGhlIGFwcGxpY2F0aW9uCi0gIGhhcyBubyBjb25zb2xlLgotCi0tIElzc3VlICMxMjEwNTogQWRkIE9fQ0xPRVhFQyB0byB0aGUgb3MgbW9kdWxlLgotCi0tIElzc3VlICMxMjA3OTogRGVjaW1hbCgnSW5maW5pdHknKS5mbWEoRGVjaW1hbCgnMCcpLCAoMy45MTIyNDMxODEyNjc4NmUrMTkrMGopKQotICBub3cgcmFpc2VzIFR5cGVFcnJvciAocmVmbGVjdGluZyB0aGUgaW52YWxpZCB0eXBlIG9mIHRoZSAzcmQgYXJndW1lbnQpIHJhdGhlcgotICB0aGFuIERlY2ltYWwuSW52YWxpZE9wZXJhdGlvbi4KLQotLSBJc3N1ZSAjMTIxMjQ6IHppcGltcG9ydCBkb2Vzbid0IGtlZXAgYSByZWZlcmVuY2UgdG8gemxpYi5kZWNvbXByZXNzKCkgYW55bW9yZQotICB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlLgotCi0tIEFkZCB0aGUgcGFja2FnaW5nIG1vZHVsZSwgYW4gaW1wcm92ZWQgZm9yayBvZiBkaXN0dXRpbHMgKGFsc28ga25vd24gYXMKLSAgZGlzdHV0aWxzMikuCi0KLS0gSXNzdWUgIzEyMDY1OiBjb25uZWN0X2V4KCkgb24gYW4gU1NMIHNvY2tldCBub3cgcmV0dXJucyB0aGUgb3JpZ2luYWwgZXJybm8KLSAgd2hlbiB0aGUgc29ja2V0J3MgdGltZW91dCBleHBpcmVzIChpdCB1c2VkIHRvIHJldHVybiBOb25lKS4KLQotLSBJc3N1ZSAjODgwOTogVGhlIFNNVFBfU1NMIGNvbnN0cnVjdG9yIGFuZCBTTVRQLnN0YXJ0dGxzKCkgbm93IHN1cHBvcnQKLSAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgotICBQYXRjaCBieSBLYXN1biBIZXJhdGguCi0KLS0gSXNzdWUgIzk1MTY6IElzc3VlICM5NTE2OiBhdm9pZCBlcnJvcnMgaW4gc3lzY29uZmlnIHdoZW4gTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi0gIGlzIHNldCBpbiBzaGVsbC4KLQotLSBJc3N1ZSAjODY1MDogTWFrZSB6bGliIG1vZHVsZSA2NC1iaXQgY2xlYW4uIGNvbXByZXNzKCksIGRlY29tcHJlc3MoKSBhbmQKLSAgdGhlaXIgaW5jcmVtZW50YWwgY291bnRlcnBhcnRzIG5vdyByYWlzZSBPdmVyZmxvd0Vycm9yIGlmIGdpdmVuIGFuIGlucHV0Ci0gIGxhcmdlciB0aGFuIDRHQiwgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZSBpbnB1dCBhbmQgcmV0dXJuaW5nCi0gIGFuIGluY29ycmVjdCByZXN1bHQuCi0KLS0gSXNzdWUgIzEyMDUwOiB6bGliLmRlY29tcHJlc3NvYmooKS5kZWNvbXByZXNzKCkgbm93IGNsZWFycyB0aGUgdW5jb25zdW1lZF90YWlsCi0gIGF0dHJpYnV0ZSB3aGVuIGNhbGxlZCB3aXRob3V0IGEgbWF4X2xlbmd0aCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTIwNjI6IEZpeCBhIGZsdXNoaW5nIGJ1ZyB3aGVuIGRvaW5nIGEgY2VydGFpbiB0eXBlIG9mIEkvTyBzZXF1ZW5jZQotICBvbiBhIGZpbGUgb3BlbmVkIGluIHJlYWQrd3JpdGUgbW9kZSAobmFtZWx5OiByZWFkaW5nLCBzZWVraW5nIGEgYml0IGZvcndhcmQsCi0gIHdyaXRpbmcsIHRoZW4gc2Vla2luZyBiZWZvcmUgdGhlIHByZXZpb3VzIHdyaXRlIGJ1dCBzdGlsbCB3aXRoaW4gYnVmZmVyZWQKLSAgZGF0YSwgYW5kIHdyaXRpbmcgYWdhaW4pLgotCi0tIElzc3VlICM5OTcxOiBXcml0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRSZWFkZXIucmVhZGludG8oKS4KLSAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KLQotLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCi0gIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAotICBieSBZdXZhbCBHcmVlbmZpZWxkLgotCi0tIElzc3VlICMxMDQxOSwgIzYwMTE6IGJ1aWxkX3NjcmlwdHMgY29tbWFuZCBvZiBkaXN0dXRpbHMgaGFuZGxlcyBjb3JyZWN0bHkKLSAgbm9uLUFTQ0lJIHBhdGggKHBhdGggdG8gdGhlIFB5dGhvbiBleGVjdXRhYmxlKS4gT3BlbiBhbmQgd3JpdGUgdGhlIHNjcmlwdCBpbgotICBiaW5hcnkgbW9kZSwgYnV0IGVuc3VyZSB0aGF0IHRoZSBzaGViYW5nIGlzIGRlY29kYWJsZSBmcm9tIFVURi04IGFuZCBmcm9tIHRoZQotICBlbmNvZGluZyBvZiB0aGUgc2NyaXB0LgotCi0tIElzc3VlICM4NDk4OiBJbiBzb2NrZXQuYWNjZXB0KCksIGFsbG93IHRvIHNwZWNpZnkgMCBhcyBhIGJhY2tsb2cgdmFsdWUgaW4KLSAgb3JkZXIgdG8gYWNjZXB0IGV4YWN0bHkgb25lIGNvbm5lY3Rpb24uICBQYXRjaCBieSBEYW5pZWwgRXZlcnMuCi0KLS0gSXNzdWUgIzEyMDExOiBzaWduYWwuc2lnbmFsKCkgYW5kIHNpZ25hbC5zaWdpbnRlcnJ1cHQoKSByYWlzZSBhbiBPU0Vycm9yLAotICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzM3MDk6IGFkZCBhIGZsdXNoX2hlYWRlcnMgbWV0aG9kIHRvIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIHdoaWNoCi0gIG1hbmFnZXMgdGhlIHNlbmRpbmcgb2YgaGVhZGVycyB0byBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaGluZyB0aGUgaW50ZXJuYWwKLSAgaGVhZGVycyBidWZmZXIuIFBhdGNoIGNvbnRyaWJ1dGlvbiBieSBBbmRyZXcgU2NoYWFmCi0KLS0gSXNzdWUgIzExNzQzOiBSZXdyaXRlIG11bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9uIGNsYXNzZXMgaW4gcHVyZSBQeXRob24uCi0KLS0gSXNzdWUgIzExMTY0OiBTdG9wIHRyeWluZyB0byB1c2UgX3htbHBsdXMgaW4gdGhlIHhtbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzExODg4OiBBZGQgbG9nMiBmdW5jdGlvbiB0byBtYXRoIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBNYXJrCi0gIERpY2tpbnNvbi4KLQotLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgotCi0tIElzc3VlICM4NDA3OiBUaGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIHRoZSBzaWduYWwgbnVtYmVyIGFzIGEgc2luZ2xlIGJ5dGUKLSAgaW5zdGVhZCBvZiBhIG51bCBieXRlIGludG8gdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IuIFNvIGl0IGlzIHBvc3NpYmxlIHRvCi0gIHdhaXQgbW9yZSB0aGFuIG9uZSBzaWduYWwgYW5kIGtub3cgd2hpY2ggc2lnbmFscyB3ZXJlIHJhaXNlZC4KLQotLSBJc3N1ZSAjODQwNzogQWRkIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKSBmdW5jdGlvbnMgdG8gdGhlCi0gIHNpZ25hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaAotICBieSBLYXN1biBIZXJhdGguCi0KLS0gSXNzdWUgIzEyMDAyOiBmdHBsaWIncyBhYm9ydCgpIG1ldGhvZCByYWlzZXMgVHlwZUVycm9yLgotCi0tIElzc3VlICMxMTkxNjogQWRkIGEgbnVtYmVyIG9mIE1hY09TWCBzcGVjaWZpYyBkZWZpbml0aW9ucyB0byB0aGUgZXJybm8gbW9kdWxlLgotICBQYXRjaCBieSBQaWVycmUgQ2Fycmllci4KLQotLSBJc3N1ZSAjMTE5OTk6IGZpeGVkIHNwb3JhZGljIHN5bmMgZmFpbHVyZSBtYWlsYm94Lk1haWxkaXIgZHVlIHRvIGl0cyB0cnlpbmcgdG8KLSAgZGV0ZWN0IG10aW1lIGNoYW5nZXMgYnkgY29tcGFyaW5nIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW5zdGVhZCBvZiB0byB0aGUKLSAgcHJldmlvdXMgdmFsdWUgb2YgdGhlIG10aW1lLgotCi0tIElzc3VlICMxMTA3MjogYWRkZWQgTUxTRCBjb21tYW5kIChSRkMtMzY1OSkgc3VwcG9ydCB0byBmdHBsaWIuCi0KLS0gSXNzdWUgIzg4MDg6IFRoZSBJTUFQNF9TU0wgY29uc3RydWN0b3Igbm93IGFsbG93cyBwYXNzaW5nIGFuIFNTTENvbnRleHQKLSAgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlIGNoYW5uZWwuICBQYXRjaCBieSBTaWppbgotICBKb3NlcGguCi0KLS0gbnRwYXRoLnNhbWVmaWxlIGZhaWxlZCB0byBub3RpY2UgdGhhdCAiYS50eHQiIGFuZCAiQS5UWFQiIHJlZmVyIHRvIHRoZSBzYW1lCi0gIGZpbGUgb24gV2luZG93cyBYUC4gQXMgbm90aWNlZCBpbiBpc3N1ZSAjMTA2ODQuCi0KLS0gSXNzdWUgIzEyMDAwOiBXaGVuIGEgU1NMIGNlcnRpZmljYXRlIGhhcyBhIHN1YmplY3RBbHROYW1lIHdpdGhvdXQgYW55Ci0gIGROU05hbWUgZW50cnksIHNzbC5tYXRjaF9ob3N0bmFtZSgpIHNob3VsZCB1c2UgdGhlIHN1YmplY3QncyBjb21tb25OYW1lLgotICBQYXRjaCBieSBOaWNvbGFzIEJhcmVpbC4KLQotLSBJc3N1ZSAjMTA3NzU6IGFzc2VydFJhaXNlcywgYXNzZXJ0UmFpc2VzUmVnZXgsIGFzc2VydFdhcm5zLCBhbmQKLSAgYXNzZXJ0V2FybnNSZWdleCBub3cgYWNjZXB0IGEga2V5d29yZCBhcmd1bWVudCAnbXNnJyB3aGVuIHVzZWQgYXMgY29udGV4dAotICBtYW5hZ2Vycy4gIEluaXRpYWwgcGF0Y2ggYnkgV2luc3RvbiBFd2VydC4KLQotLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKLSAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAotICBmb3IgdGhlIGNhc2UuCi0KLS0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydAotICBtb3JlIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaAotICBieSBZc2ogUmF5LgotCi0tIElzc3VlICMxMTkzMDogUmVtb3ZlZCBkZXByZWNhdGVkIHRpbWUuYWNjZXB0MmR5ZWFyIHZhcmlhYmxlLgotICBSZW1vdmVkIHllYXIgPj0gMTAwMCByZXN0cmljdGlvbiBmcm9tIGRhdGV0aW1lLnN0cmZ0aW1lLgotCi0tIGxvZ2dpbmc6IGRvbid0IGRlZmluZSBRdWV1ZUxpc3RlbmVyIGlmIFB5dGhvbiBoYXMgbm8gdGhyZWFkIHN1cHBvcnQuCi0KLS0gZnVuY3Rvb2xzLmNtcF90b19rZXkoKSBub3cgd29ya3Mgd2l0aCBjb2xsZWN0aW9ucy5IYXNoYWJsZSgpLgotCi0tIElzc3VlICMxMTI3NzogbW1hcC5tbWFwKCkgY2FsbHMgZmNudGwoZmQsIEZfRlVMTEZTWU5DKSBvbiBNYWMgT1MgWCB0byBnZXQKLSAgYXJvdW5kIGEgbW1hcCBidWcgd2l0aCBzcGFyc2UgZmlsZXMuIFBhdGNoIHdyaXR0ZW4gYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KLQotLSBJc3N1ZSAjODQwNzogQWRkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKSBmdW5jdGlvbiB0byBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZQotICBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCi0KLS0gSXNzdWUgIzExODU4OiBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGV4cGVjdGVkIGxvd2VyLWNhc2Ugc2VjdGlvbgotICBuYW1lcy4KLQotLSBJc3N1ZSAjMTEzMjQ6IENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpIG5vdyB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzExODExOiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuICBQYXRjaAotICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKLSAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCi0KLS0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KLQotLSBJc3N1ZSAjMTE4NTY6IFNwZWVkIHVwIHBhcnNpbmcgb2YgSlNPTiBudW1iZXJzLgotCi0tIElzc3VlICMxMTAwNTogdGhyZWFkaW5nLlJMb2NrKCkuX3JlbGVhc2Vfc2F2ZSgpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKLSAgbG9jayB3YXMgbm90IGFjcXVpcmVkLgotCi0tIElzc3VlICMxMTI1ODogU3BlZWQgdXAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgdW5kZXIgTGludXggYnkgYSBmYWN0b3IKLSAgb2YgNSB0byAxMC4gIEluaXRpYWwgcGF0Y2ggYnkgSm9uYXMgSC4KLQotLSBJc3N1ZSAjMTEzODI6IFRyaXZpYWwgc3lzdGVtIGNhbGxzLCBzdWNoIGFzIGR1cCgpIG9yIHBpcGUoKSwgbmVlZG4ndAotICByZWxlYXNlIHRoZSBHSUwuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMjIzOiBBZGQgdGhyZWFkaW5nLl9pbmZvKCkgZnVuY3Rpb24gcHJvdmlkaW5nIGluZm9ybWF0aW9ucyBhYm91dAotICB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxMTczMTogc2ltcGxpZnkvZW5oYW5jZSBlbWFpbCBwYXJzZXIvZ2VuZXJhdG9yIEFQSSBieSBpbnRyb2R1Y2luZwotICBwb2xpY3kgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCi0gIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCi0gIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCi0KLS0gSXNzdWUgIzExNDkyOiBmaXggc2V2ZXJhbCBpc3N1ZXMgd2l0aCBoZWFkZXIgZm9sZGluZyBpbiB0aGUgZW1haWwgcGFja2FnZS4KLQotLSBJc3N1ZSAjMTE4NTI6IEFkZCBtaXNzaW5nIGltcG9ydHMgYW5kIHVwZGF0ZSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTE4NzU6IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0J3MgX19yZWR1Y2VfXyB3YXMgdGVtcG9yYXJpbHkKLSAgbXV0YXRpbmcgdGhlIG9iamVjdCBpbnN0ZWFkIG9mIGp1c3Qgd29ya2luZyBvbiBhIGNvcHkuCi0KLS0gSXNzdWUgIzExNDY3OiBGaXggdXJscGFyc2UgYmVoYXZpb3Igd2hlbiBoYW5kbGluZyB1cmxzIHdoaWNoIGNvbnRhaW5zIHNjaGVtZQotICBzcGVjaWZpYyBwYXJ0IG9ubHkgZGlnaXRzLiBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KLQotLSBjb2xsZWN0aW9ucy5Db3VudGVyKCkuY29weSgpIG5vdyB3b3JrcyBjb3JyZWN0bHkgZm9yIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzExNDc0OiBGaXggdGhlIGJ1ZyB3aXRoIHVybDJwYXRobmFtZSgpIGhhbmRsaW5nIG9mICcvQ3wvJyBvbiBXaW5kb3dzLgotICBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KLQotLSBJc3N1ZSAjMTE2ODQ6IGNvbXBsZXRlIGVtYWlsLnBhcnNlciBieXRlcyBBUEkgYnkgYWRkaW5nIEJ5dGVzSGVhZGVyUGFyc2VyLgotCi0tIFRoZSBiejIgbW9kdWxlIG5vdyBoYW5kbGVzIDRHaUIrIGlucHV0IGJ1ZmZlcnMgY29ycmVjdGx5LgotCi0tIElzc3VlICM5MjMzOiBGaXgganNvbi5sb2Fkcygne30nKSB0byByZXR1cm4gYSBkaWN0IChpbnN0ZWFkIG9mIGEgbGlzdCksIHdoZW4KLSAgX2pzb24gaXMgbm90IGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTE4MzA6IFJlbW92ZSB1bm5lY2Vzc2FyeSBpbnRyb3NwZWN0aW9uIGNvZGUgaW4gdGhlIGRlY2ltYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMTcwMzogdXJsbGliMi5nZXR1cmwoKSBkb2VzIG5vdCByZXR1cm4gY29ycmVjdCB1cmwgd2hlbiB0aGUgb3JpZ2luYWwKLSAgdXJsIGNvbnRhaW5zICNmcmFnbWVudC4KLQotLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAotICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCi0KLS0gSXNzdWUgIzExMTg2OiBweWRvYyBpZ25vcmVzIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlCi0gIGNoYXJhY3RlciBpbiB0aGUgaW5kZXggb2YgbW9kdWxlcy4KLQotLSBJc3N1ZSAjMTE4MTU6IFVzZSBhIGxpZ2h0LXdlaWdodCBTaW1wbGVRdWV1ZSBmb3IgdGhlIHJlc3VsdCBxdWV1ZSBpbgotICBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KLQotLSBJc3N1ZSAjNTE2MjogVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcKLSAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvbiBXaW5kb3dzLgotCi0tIGxvZ2dpbmcuYmFzaWNDb25maWcgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICdoYW5kbGVycycgYXJndW1lbnQgdGFraW5nIGFuCi0gIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4gQWRkaXRpb25hbCBwYXJhbWV0ZXIKLSAgY2hlY2tzIHdlcmUgYWxzbyBhZGRlZCB0byBiYXNpY0NvbmZpZy4KLQotLSBJc3N1ZSAjMTE4MTQ6IEZpeCBsaWtlbHkgdHlwbyBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbC5fdGVybWluYXRlKCkuCi0KLS0gSXNzdWUgIzExNzQ3OiBGaXggcmFuZ2UgZm9ybWF0dGluZyBpbiBkaWZmbGliLmNvbnRleHRfZGlmZigpIGFuZAotICBkaWZmbGliLnVuaWZpZWRfZGlmZigpLgotCi0tIElzc3VlICM4NDI4OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbCB3aGVuIHRlcm1pbmF0aW5nCi0gIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZwotICBzaHV0IGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzI2NTA6IHJlLmVzY2FwZSgpIG5vIGxvbmdlciBlc2NhcGVzIHRoZSAnXycuCi0KLS0gSXNzdWUgIzExNzU3OiBzZWxlY3Quc2VsZWN0KCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSB0aW1lb3V0Ci0gIGlzIHBhc3NlZCAocHJldmlvdXNseSwgYSBzZWxlY3QuZXJyb3Igd2l0aCBFSU5WQUwgd291bGQgYmUgcmFpc2VkKS4gIFBhdGNoCi0gIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjNzMxMTogZml4IGh0bWwucGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTE2MDU6IGVtYWlsLnBhcnNlci5CeXRlc0ZlZWRQYXJzZXIgd2FzIGluY29ycmVjdGx5IGNvbnZlcnRpbmcKLSAgbXVsdGlwYXJ0IHN1YnBhcnRzIHdpdGggYW4gOC1iaXQgQ1RFIGludG8gdW5pY29kZSBpbnN0ZWFkIG9mIHByZXNlcnZpbmcgdGhlCi0gIGJ5dGVzLgotCi0tIElzc3VlICMxNjkwNjA4OiBlbWFpbC51dGlsLmZvcm1hdGFkZHIgaXMgbm93IFJGQyAyMDQ3IGF3YXJlOiAgaXQgbm93IGhhcyBhCi0gIGNoYXJzZXQgcGFyYW1ldGVyIHRoYXQgZGVmYXVsdHMgdG8gdXRmLTggYW5kIGlzIHVzZWQgYXMgdGhlIGNoYXJzZXQgZm9yIFJGQwotICAyMDQ3IGVuY29kaW5nIHdoZW4gdGhlIHJlYWxuYW1lIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxMDk2MzogRW5zdXJlIHRoYXQgc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5ldmVyIHJhaXNlcyBFUElQRS4KLQotLSBJc3N1ZSAjMTA3OTE6IEltcGxlbWVudCBtaXNzaW5nIG1ldGhvZCBHemlwRmlsZS5yZWFkMSgpLCBhbGxvd2luZyBHemlwRmlsZQotICB0byBiZSB3cmFwcGVkIGluIGEgVGV4dElPV3JhcHBlci4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTE3MDc6IEFkZGVkIGEgZmFzdCBDIHZlcnNpb24gb2YgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KLSAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTE2ODg6IEFkZCBzcWxpdGUzLkNvbm5lY3Rpb24uc2V0X3RyYWNlX2NhbGxiYWNrKCkuICBQYXRjaCBieQotICBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzExNzQ2OiBGaXggU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSB0byBhY2NlcHQgZWxsaXB0aWMgY3VydmUKLSAgcHJpdmF0ZSBrZXlzLgotCi0tIElzc3VlICM1ODYzOiBSZXdyaXRlIEJaMkZpbGUgaW4gcHVyZSBQeXRob24sIGFuZCBhbGxvdyBpdCB0byBhY2NlcHQKLSAgZmlsZS1saWtlIG9iamVjdHMgdXNpbmcgYSBuZXcgYGBmaWxlb2JqYGAgY29uc3RydWN0b3IgYXJndW1lbnQuICBQYXRjaCBieQotICBOYWRlZW0gVmF3ZGEuCi0KLS0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2FtZUVsZW1lbnRzIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiBpbml0ZnNlbmNvZGluZygpIHdhcyBub3QKLSAgY2FsbGVkIHlldDogZGV0ZWN0IGJvb3RzdHJhcCAoc3RhcnR1cCkgaXNzdWVzIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzExMzkzOiBBZGQgdGhlIG5ldyBmYXVsdGhhbmRsZXIgbW9kdWxlLgotCi0tIElzc3VlICMxMTYxODogRml4IHRoZSB0aW1lb3V0IGxvZ2ljIGluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSB1bmRlciBXaW5kb3dzLgotCi0tIFJlbW92ZWQgdGhlICdzdHJpY3QnIGFyZ3VtZW50IHRvIGVtYWlsLnBhcnNlci5QYXJzZXIsIHdoaWNoIGhhcyBiZWVuCi0gIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDIuNC4KLQotLSBJc3N1ZSAjMTEyNTY6IEZpeCBpbnNwZWN0LmdldGNhbGxhcmdzIG9uIGZ1bmN0aW9ucyB0aGF0IHRha2Ugb25seSBrZXl3b3JkCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTE2OTY6IEZpeCBJRCBnZW5lcmF0aW9uIGluIG1zaWxpYi4KLQotLSBpdGVydG9vbHMuYWNjdW11bGF0ZSBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgKmZ1bmMqIGFyZ3VtZW50IGZvcgotICBhIHVzZXItc3VwcGxpZWQgYmluYXJ5IGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMTY5MjogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlbW8gZnVuY3Rpb25zIGluIHN1YnByb2Nlc3MgbW9kdWxlLgotCi0tIElzc3VlICM5Njk2OiBGaXggZXhjZXB0aW9uIGluY29ycmVjdGx5IHJhaXNlZCBieSB4ZHJsaWIuUGFja2VyLnBhY2tfaW50IHdoZW4KLSAgdHJ5aW5nIHRvIHBhY2sgYSBuZWdhdGl2ZSAoaW4tcmFuZ2UpIGludGVnZXIuCi0KLS0gSXNzdWUgIzExNjc1OiBtdWx0aXByb2Nlc3NpbmcuW1Jhd11BcnJheSBvYmplY3RzIGNyZWF0ZWQgZnJvbSBhbiBpbnRlZ2VyIHNpemUKLSAgYXJlIG5vdyB6ZXJvZWQgb24gY3JlYXRpb24uICBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW91ciBzcGVjaWZpZWQgYnkgdGhlCi0gIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzc2Mzk6IEZpeCBzaG9ydCBmaWxlIG5hbWUgZ2VuZXJhdGlvbiBpbiBiZGlzdF9tc2kKLQotLSBJc3N1ZSAjMTE2MzU6IERvbid0IHVzZSBwb2xsaW5nIGluIHdvcmtlciB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgbGF1bmNoZWQgYnkKLSAgY29uY3VycmVudC5mdXR1cmVzLgotCi0tIElzc3VlICM1ODQ1OiBBdXRvbWF0aWNhbGx5IHJlYWQgcmVhZGxpbmUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgY29tcGxldGlvbgotICBpbiBpbnRlcmFjdGl2ZSBtb2RlLgotCi0tIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKLSAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCi0gIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KLQotLSBJc3N1ZSAjODc1NDogSGF2ZSBpbXBvcnRsaWIgdXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzExNTkxOiBQcmV2ZW50ICJpbXBvcnQgc2l0ZSIgZnJvbSBtb2RpZnlpbmcgc3lzLnBhdGggd2hlbiBweXRob24KLSAgd2FzIHN0YXJ0ZWQgd2l0aCAtUy4KLQotLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IGFkZHMgYSBfc291cmNlIGF0dHJpYnV0ZSB0byB0aGUgZ2VuZXJhdGVkCi0gIGNsYXNzLiAgVGhpcyBtYWtlIHRoZSBzb3VyY2UgbW9yZSBhY2Nlc3NpYmxlIHRoYW4gdGhlIG91dGRhdGVkCi0gICJ2ZXJib3NlIiBvcHRpb24gd2hpY2ggcHJpbnRzIHRvIHN0ZG91dCBidXQgZG9lc24ndCBtYWtlIHRoZSBzb3VyY2UKLSAgc3RyaW5nIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTEzNzE6IE1hcmsgZ2V0b3B0IGVycm9yIG1lc3NhZ2VzIGFzIGxvY2FsaXphYmxlLiAgUGF0Y2ggYnkgRmlsaXAKLSAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTEzMzM6IEFkZCBfX3Nsb3RzX18gdG8gY29sbGVjdGlvbnMgQUJDcy4KLQotLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fLgotCi0tIElzc3VlICMxMTY2NjogbGV0IGhlbHAoKSBkaXNwbGF5IG5hbWVkIHR1cGxlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMKLSAgdGhhdCBzdGFydCB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLgotCi0tIElzc3VlICMxMTY2MjogTWFrZSB1cmxsaWIgYW5kIHVybGxpYjIgaWdub3JlIHJlZGlyZWN0aW9ucyBpZiB0aGUKLSAgc2NoZW1lIGlzIG5vdCBIVFRQLCBIVFRQUyBvciBGVFAgKENWRS0yMDExLTE1MjEpLgotCi0tIElzc3VlICM1NTM3OiBGaXggdGltZTJpc296KCkgYW5kIHRpbWUybmV0c2NhcGUoKSBmdW5jdGlvbnMgb2YKLSAgaHR0cGxpYi5jb29raWVqYXIgZm9yIGV4cGlyYXRpb24geWVhciBncmVhdGVyIHRoYW4gMjAzOCBvbiAzMi1iaXQgc3lzdGVtcy4KLQotLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBnZXR0ZXh0IHBsdXJhbCBmb3JtcyBpbiBvcHRwYXJzZS4KLQotLSBJc3N1ZSAjMTExMjc6IFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBhIHNvY2tldCBvYmplY3QuCi0KLS0gSXNzdWUgIzExNTYzOiBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCi0gIGNsYXNzIHdoaWNoIGhlbHBzIGluIGNsb3Npbmcgb2Ygc29ja2V0cyBhZnRlciBjb25uZWN0aW9uIGlzIG92ZXIuIFBhdGNoCi0gIGNvbnRyaWJ1dGlvbnMgYnkgSmVmZiBNY05laWwgYW5kIE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTE0NTk6IEEgYGBidWZzaXplYGAgdmFsdWUgb2YgMCBpbiBzdWJwcm9jZXNzLlBvcGVuKCkgcmVhbGx5IGNyZWF0ZXMKLSAgdW5idWZmZXJlZCBwaXBlcywgc3VjaCB0aGF0IHNlbGVjdCgpIHdvcmtzIHByb3Blcmx5IG9uIHRoZW0uCi0KLS0gSXNzdWUgIzU0MjE6IEZpeCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBvbmUgb2Ygc29ja2V0LnNlbmR0bygpJ3MKLSAgYXJndW1lbnRzIGhhcyB0aGUgd3JvbmcgdHlwZS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCi0KLS0gSXNzdWUgIzEwODEyOiBBZGQgc29tZSBleHRyYSBwb3NpeCBmdW5jdGlvbnMgdG8gdGhlIG9zIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQotICBzZXR1cCBhbmQgdGVhcmRvd24uCi0KLS0gSXNzdWUgIzExMjQzOiBmaXggdGhlIHBhcmFtZXRlciBxdWVyeWluZyBtZXRob2RzIG9mIE1lc3NhZ2UgdG8gd29yayBpZgotICB0aGUgaGVhZGVycyBjb250YWluIHVuLWVuY29kZWQgbm9uLUFTQ0lJIGRhdGEuCi0KLS0gSXNzdWUgIzExNDAxOiBmaXggaGFuZGxpbmcgb2YgaGVhZGVycyB3aXRoIG5vIHZhbHVlOyB0aGlzIGZpeGVzIGEgcmVncmVzc2lvbgotICByZWxhdGl2ZSB0byBQeXRob24yIGFuZCB0aGUgcmVzdWx0IGlzIG5vdyB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uMi4KLQotLSBJc3N1ZSAjOTI5ODogYmFzZTY0IGJvZGllcyB3ZXJlbid0IGJlaW5nIGZvbGRlZCB0byBsaW5lIGxlbmd0aHMgbGVzcyB0aGFuIDc4LAotICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQotICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KLQotLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAotICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KLQotLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgotCi0tIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKLSAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCi0gIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzCi0gIHRoYXQgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KLQotLSBJc3N1ZSAjMTE1MDE6IGRpc3V0aWxzLmFyY2hpdmVfdXRpbHMubWFrZV96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB6bGliIGlzCi0gIG5vdCBpbnN0YWxsZWQuIEluc3RlYWQsIHRoZSB6aXBmaWxlLlpJUF9TVE9SRUQgY29tcHJlc3Npb24gaXMgdXNlZCB0byBjcmVhdGUKLSAgdGhlIFppcEZpbGUuIFBhdGNoIGJ5IE5hdGFsaWEgQi4gQmlkYXJ0LgotCi0tIElzc3VlICMxMTI4OTogYHNtdHAuU01UUGAgY2xhc3MgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIHNvIGl0IGNhbiBiZSB1c2VkCi0gIGluIGEgYHdpdGhgIHN0YXRlbWVudC4gIENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEuCi0KLS0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0Ci0gIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCi0KLS0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KLSAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KLQotLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBPUyBYIHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQKLSAgSVAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KLQotLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGgKLSAgdGhlICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcwotICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KLQotLSBJc3N1ZSAjMTE2MjQ3NzogUG9zdGVsIFByaW5jaXBsZSBhZGp1c3RtZW50IHRvIGVtYWlsIGRhdGUgcGFyc2luZzogaGFuZGxlIHRoZQotICBmYWN0IHRoYXQgc29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyBpbnN0ZWFkIG9mICc6JyBpbiB0aW1lIHNwZWNzLgotCi0tIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMKLSAgb3BlcmF0aW9ucyB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgotCi0tIElzc3VlICM5OTM1OiBTcGVlZCB1cCBwaWNrbGluZyBvZiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzU2MjI6IEZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMKLSAgaW5pdGlhbGl6YXRpb24gZmFpbHMuCi0KLS0gSXNzdWUgIzExNDA4OiBJbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCksIG9ubHkgY2FsbCBnZXR0aW1lb2ZkYXkoKSB3aGVuCi0gIHJlYWxseSBuZWNlc3NhcnkuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMzkxOiBXcml0aW5nIHRvIGEgbW1hcCBvYmplY3QgY3JlYXRlZCB3aXRoCi0gIGBgbW1hcC5QUk9UX1JFQUR8bW1hcC5QUk9UX0VYRUNgYCB3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYQotICBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzk3OTU6IGFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBmb3Igbm50cGxpYi5OTlRQIGNsYXNzLgotCi0tIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbgotICBjZXJ0YWluIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieQotICBjaGVja2luZyBmb3IgRUFDQ0VTLCBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgotCi0tIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycwotICBvbiBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCi0KLS0gSXNzdWUgIzExMzc3OiBEZXByZWNhdGUgcGxhdGZvcm0ucG9wZW4oKSBhbmQgcmVpbXBsZW1lbnQgaXQgd2l0aCBvcy5wb3BlbigpLgotCi0tIElzc3VlICM4NTEzOiBPbiBVTklYLCBzdWJwcm9jZXNzIHN1cHBvcnRzIGJ5dGVzIGNvbW1hbmQgc3RyaW5nLgotCi0tIElzc3VlICMxMDg2NjogQWRkIHNvY2tldC5zZXRob3N0bmFtZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTExNDA6IExvY2sucmVsZWFzZSgpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiBhdHRlbXB0aW5nCi0gIHRvIHJlbGVhc2UgYW4gdW5hY3F1aXJlZCBsb2NrLCBhcyBjbGFpbWVkIGluIHRoZSB0aHJlYWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAgVGhlIF90aHJlYWQuZXJyb3IgZXhjZXB0aW9uIGlzIG5vdyBhbiBhbGlhcyBvZiBSdW50aW1lRXJyb3IuICBQYXRjaCBieQotICBGaWxpcCBHcnVzemN6ecWEc2tpLiAgUGF0Y2ggZm9yIF9kdW1teV90aHJlYWQgYnkgQXltZXJpYyBBdWd1c3Rpbi4KLQotLSBJc3N1ZSAjODU5NDogZnRwbGliIG5vdyBwcm92aWRlcyBhIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoaWNoCi0gIChhZGRyZXNzLCBwb3J0KSB0byBiaW5kIHRvIGJlZm9yZSBjb25uZWN0aW5nLgotCi0tIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCi0gIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KLQotLSBJc3N1ZSAjMTEyOTc6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpLgotCi0tIElzc3VlICMxMDc1NTogQWRkIHRoZSBwb3NpeC5mbGlzdGRpcigpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzQ3NjE6IEFkZCB0aGUgYGAqYXQoKWBgIGZhbWlseSBvZiBmdW5jdGlvbnMgKG9wZW5hdCgpLCBldGMuKSB0byB0aGUKLSAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzczMjI6IFRyeWluZyB0byByZWFkIGZyb20gYSBzb2NrZXQncyBmaWxlLWxpa2Ugb2JqZWN0IGFmdGVyIGEgdGltZW91dAotICBvY2N1cnJlZCBub3cgcmFpc2VzIGFuIGVycm9yIGluc3RlYWQgb2Ygc2lsZW50bHkgbG9zaW5nIGRhdGEuCi0KLS0gSXNzdWUgIzExMjkxOiBwb3BsaWIuUE9QIG5vIGxvbmdlciBzdXBwcmVzc2VzIGVycm9ycyBvbiBxdWl0KCkuCi0KLS0gSXNzdWUgIzExMTc3OiBhc3luY29yZSdzIGNyZWF0ZV9zb2NrZXQoKSBhcmd1bWVudHMgY2FuIG5vdyBiZSBvbWl0dGVkLgotCi0tIElzc3VlICM2MDY0OiBBZGQgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHRocmVhZGluZy5UaHJlYWQKLSAgYW5kIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKLSAgZGVmYXVsdCBiZWhhdmlvdXIgb2YgaW5oZXJpdGluZyB0aGUgZGFlbW9uaWMgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudAotICB0aHJlYWQvcHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAotICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgotCi0tIElzc3VlICMxMDc4NDogTmV3IG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxMTExNDogRml4IGNhdGFzdHJvcGhpYyBwZXJmb3JtYW5jZSBvZiB0ZWxsKCkgb24gdGV4dCBmaWxlcyAodXAKLSAgdG8gMTAwMHggZmFzdGVyIGluIHNvbWUgY2FzZXMpLiAgSXQgaXMgc3RpbGwgb25lIHRvIHR3byBvcmRlciBvZiBtYWduaXR1ZGVzCi0gIHNsb3dlciB0aGFuIGJpbmFyeSB0ZWxsKCkuCi0KLS0gSXNzdWUgIzEwODgyOiBBZGQgb3Muc2VuZGZpbGUgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEwODY4OiBBbGxvdyB1c2FnZSBvZiB0aGUgcmVnaXN0ZXIgbWV0aG9kIG9mIGFuIEFCQyBhcyBhIGNsYXNzCi0gIGRlY29yYXRvci4KLQotLSBJc3N1ZSAjMTEyMjQ6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiB0YXJmaWxlIHRoYXQgYWZmZWN0ZWQgdGhlIGZpbGUtbGlrZQotICBvYmplY3RzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKSByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIG1lbW9yeQotICBjb25zdW1wdGlvbiBhbmQgZmFpbHVyZXMgd2l0aCB0aGUgc3RyZWFtIGludGVyZmFjZS4KLQotLSBJc3N1ZSAjMTA5MjQ6IEFkZGluZyBzYWx0IGFuZCBNb2R1bGFyIENyeXB0IEZvcm1hdCB0byBjcnlwdCBsaWJyYXJ5LgotICBNb3ZlZCBvbGQgQyB3cmFwcGVyIHRvIF9jcnlwdCwgYW5kIGFkZGVkIGEgUHl0aG9uIHdyYXBwZXIgd2l0aAotICBlbmhhbmNlZCBzYWx0IGdlbmVyYXRpb24gYW5kIHNpbXBsZXIgQVBJIGZvciBwYXNzd29yZCBnZW5lcmF0aW9uLgotCi0tIElzc3VlICMxMTA3NDogTWFrZSAndG9rZW5pemUnIHNvIGl0IGNhbiBiZSByZWxvYWRlZC4KLQotLSBJc3N1ZSAjMTEwODU6IE1vdmVkIGNvbGxlY3Rpb25zIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnRvIGEgc2VwYXJhdGUKLSAgbW9kdWxlIGNhbGxlZCBjb2xsZWN0aW9ucy5hYmMsIGZvbGxvd2luZyB0aGUgcGF0dGVybiB1c2VkIGJ5IGltcG9ydGxpYi5hYmMuCi0gIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjb2xsZWN0aW9ucwotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzQ2ODE6IEFsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4KLSAgNEdCLCBldmVuIG9uIDMyLWJpdCBidWlsZHMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLCBhZGFwdGVkIGZvcgotICAzMi1iaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCi0gIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCi0KLS0gSXNzdWUgIzExMDg5OiBGaXggcGVyZm9ybWFuY2UgaXNzdWUgbGltaXRpbmcgdGhlIHVzZSBvZiBDb25maWdQYXJzZXIoKQotICB3aXRoIGxhcmdlIGNvbmZpZyBmaWxlcy4KLQotLSBJc3N1ZSAjMTAyNzY6IEZpeCB0aGUgcmVzdWx0cyBvZiB6bGliLmNyYzMyKCkgYW5kIHpsaWIuYWRsZXIzMigpIG9uIGJ1ZmZlcnMKLSAgbGFyZ2VyIHRoYW4gNEdCLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTM4ODogQWRkZWQgYSBjbGVhcigpIG1ldGhvZCB0byBNdXRhYmxlU2VxdWVuY2UKLQotLSBJc3N1ZSAjMTExNzQ6IEFkZCBhcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIsIHdoaWNoIHVzZXMgdHlwZSBuYW1lcwotICBmb3IgdGhlIG5hbWVzIG9mIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbiBoZWxwIG1lc3NhZ2VzLgotCi0tIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KLQotLSBJc3N1ZSAjOTAyNjogRml4IG9yZGVyIG9mIGFyZ3BhcnNlIHN1Yi1jb21tYW5kcyBpbiBoZWxwIG1lc3NhZ2VzLgotCi0tIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgotCi0tIElzc3VlICMxMjE5MTogQWRkZWQgc2h1dGlsLmNob3duKCkgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG93bmVyIG9mIGEKLSAgZ2l2ZW4gcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlaXIgbmFtZXMuCi0KLS0gSXNzdWUgIzEzOTg4OiBUaGUgX2VsZW1lbnR0cmVlIGFjY2VsZXJhdG9yIGlzIHVzZWQgd2hlbmV2ZXIgYXZhaWxhYmxlLgotICBOb3cgeG1sLmV0cmVlLmNFbGVtZW50VHJlZSBiZWNvbWVzIGEgZGVwcmVjYXRlZCBhbGlhcyB0byBFbGVtZW50VHJlZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgotCi0tIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCi0KLS0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KLQotLSBQRVAgMzkzOiB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2lkZS11bmljb2RlIGlzIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzEyODUyOiBTZXQgX1hPUEVOX1NPVVJDRSB0byA3MDAsIGluc3RlYWQgb2YgNjAwLCB0byBnZXQgUE9TSVggMjAwOAotICBmdW5jdGlvbnMgb24gT3BlbkJTRCAoZS5nLiBmZG9wZW5kaXIpLgotCi0tIElzc3VlICMxMTg2MzogUmVtb3ZlIHN1cHBvcnQgZm9yIGxlZ2FjeSBzeXN0ZW1zIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMgotICAoZm9sbG93aW5nIFBFUCAxMSkuICBUaGVzZSBzeXN0ZW1zIGFyZSBzeXN0ZW1zIHVzaW5nIE1hY2ggQyBUaHJlYWRzLAotICBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMsIEdOVSBwdGggdGhyZWFkcyBhbmQgSVJJWCB0aHJlYWRzLgotCi0tIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAotICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCi0gIGZ1bmN0aW9ucyAoQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFgKLSAgKFVGX0hJRERFTiBhbmQgVUZfQ09NUFJFU1NFRCkuCi0KLS0gSXNzdWUgIzEwNjQ1OiBJbnN0YWxsaW5nIFB5dGhvbiBubyBsb25nZXIgY3JlYXRlcyBhCi0gIFB5dGhvbi1YLlkuWi1weVguWS5lZ2ctaW5mbyBmaWxlIGluIHRoZSBsaWItZHlubG9hZCBkaXJlY3RvcnkuCi0KLS0gRG8gbm90IGFjY2lkZW50YWxseSBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBzcWxpdGUuaCB0d2ljZSB3aGVuCi0gIGJ1aWxkaW5nIHNxbGl0ZTMuCi0KLS0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywKLSAgZW5zdXJlICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIKLSAgZmlsZXMgaW4gdGhlIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgotCi0tIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgotCi0tIElzc3VlICMxMTQxMTogRml4ICdtYWtlIERFU1RESVI9JyB3aXRoIGEgcmVsYXRpdmUgZGVzdGluYXRpb24uCi0KLS0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24KLSAgcGFja2FnZSBoYWQgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgotCi0tIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCi0gIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKLQotLSBJc3N1ZSAjMTQyMDA6IElETEUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgotICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAotICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KLSAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCi0gIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LgotCi0tIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCi0gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjOTg3MTogUHJldmVudCBJRExFIDMgY3Jhc2ggd2hlbiBnaXZlbiBieXRlIHN0aW5ncwotICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgotICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKLQotLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgotCi0tIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwotICBpbiBvcy5raWxsKCkuCi0KLS0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQotICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KLQotLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCi0gIHdpdGggVGsgOC41LgotCi0tIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCi0gIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKLSAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KLQotLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKLSAgZmlsZSBpbiBhIHBhY2thZ2UuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCi0gIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCi0KLS0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKLSAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKLSAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQotICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCi0KLS0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KLSAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCi0KLS0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKLSAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCi0KLS0gSXNzdWUgIzExMTc5OiBNYWtlIGNjYmVuY2ggd29yayB1bmRlciBQeXRob24gMy4xIGFuZCAyLjcgYWdhaW4uCi0KLS0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKLSAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgotICAiLS1uZXdsaW5lIiBvcHRpb24gYWRkZWQgdG8gc3BlY2lmeSBuZXcgbGluZSBjaGFyYWN0ZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjg0NzogRml4ZWQgaW1wcm9wZXIgdXNlIG9mIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgpIGluCi0gIG5vbi1weWRlYnVnIGJ1aWxkcy4gU2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBub3cgY29tcGlsZSBjbGVhbmx5IHdoZW4KLSAgYXNzZXJ0KClzIGFyZSBlbmFibGVkIGluIHN0YW5kYXJkIGJ1aWxkcyAoLURERUJVRyBmbGFnKS4KLQotLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgotICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQotICBWaWxtb3MgTmViZWhhai4KLQotLSBJc3N1ZSAjNzc3Nzogc29ja2V0OiBBZGQgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAoUEZfUkRTKSBzdXBwb3J0LgotCi0tIElzc3VlICMxMzE1OTogRmlsZUlPIGFuZCBCWjJDb21wcmVzc29yL0JaMkRlY29tcHJlc3NvciBub3cgdXNlIGEgbGluZWFyLXRpbWUKLSAgYnVmZmVyIGdyb3d0aCBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgotCi0tIElzc3VlICMxMDE0MTogc29ja2V0OiBBZGQgU29ja2V0Q0FOIChQRl9DQU4pIHN1cHBvcnQuIEluaXRpYWwgcGF0Y2ggYnkKLSAgTWF0dGhpYXMgRnVjaHMsIHVwZGF0ZWQgYnkgVGlhZ28gR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTMwNzA6IEZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZQotICB3b3VsZCBiZSBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSB0byBpdHMgdW5kZXJseWluZyBCdWZmZXJlZFJXUGFpcidzCi0gIHdyaXRlciBnb3QgY2xlYXJlZCBieSB0aGUgR0MuCi0KLS0gSXNzdWUgIzEyODgxOiBjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KLQotLSBJc3N1ZSAjMTMwNTg6IG9zc2F1ZGlvZGV2OiBmaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBlcnJvci4gUGF0Y2ggYnkKLSAgVGhvbWFzIEphcm9zY2guCi0KLS0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgotICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKLSAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KLQotLSBJc3N1ZSAjMTE3MjcxMTogQWRkICdsb25nIGxvbmcnIHN1cHBvcnQgdG8gdGhlIGFycmF5IG1vZHVsZS4KLSAgSW5pdGlhbCBwYXRjaCBieSBPcmVuIFRpcm9zaCBhbmQgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzEyNDgzOiBjdHlwZXM6IEZpeCBhIGNyYXNoIHdoZW4gdGhlIGRlc3RydWN0aW9uIG9mIGEgY2FsbGJhY2sKLSAgb2JqZWN0IHRyaWdnZXJzIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KLQotLSBJc3N1ZSAjMTI5NTA6IEZpeCBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvcnMgaW4gbXVsdGlwcm9jZXNzaW5nLCB1bmRlcgotICBPcGVuSW5kaWFuYS9JbGx1bW9zLgotCi0tIElzc3VlICMxMjc2NDogRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90Ci0gIGEgc3RyaW5nLgotCi0tIElzc3VlICMxMTI0MTogc3ViY2xhc3NlcyBvZiBjdHlwZXMuQXJyYXkgY2FuIG5vdyBiZSBzdWJjbGFzc2VkLgotCi0tIElzc3VlICM5NjUxOiBGaXggYSBjcmFzaCB3aGVuIGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcigwKSB3YXMgcGFzc2VkIHRvCi0gIHNvbWUgZnVuY3Rpb25zIGxpa2UgZmlsZS53cml0ZSgpLgotCi0tIElzc3VlICMxMDMwOTogRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyCi0gIHNpZ25hdHVyZS4gIFdpdGhvdXQgdGhpcywgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2Ygdm9pZCogIT0gc2l6ZW9mIGludCBhcmUKLSAgYnJva2VuLiAgUGF0Y2ggZ2l2ZW4gYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTIwNTE6IEZpeCBzZWdmYXVsdCBpbiBqc29uLmR1bXBzKCkgd2hpbGUgZW5jb2RpbmcgaGlnaGx5LW5lc3RlZAotICBvYmplY3RzIHVzaW5nIHRoZSBDIGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEyMDE3OiBGaXggc2VnZmF1bHQgaW4ganNvbi5sb2FkcygpIHdoaWxlIGRlY29kaW5nIGhpZ2hseS1uZXN0ZWQKLSAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxODM4OiBQcmV2ZW50IHNlZ2ZhdWx0IGluIGN0eXBlcywgd2hlbiBfYXNfcGFyYW1ldGVyXyBvbiBhIGNsYXNzIGlzIHNldAotICB0byBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KLSAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgotCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMDg4MTogRml4IHRlc3Rfc2l0ZSBmYWlsdXJlIHdpdGggT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgotCi0tIElzc3VlICMxMzkwMTogUHJldmVudCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlcyBvbiBPUyBYIHdpdGggLS1lbmFibGUtc2hhcmVkLgotCi0tIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQotICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCi0KLS0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKLSAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCi0KLS0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzExNjU5OiBGaXggUmVzb3VyY2VXYXJuaW5nIGluIHRlc3Rfc3VicHJvY2VzcyBpbnRyb2R1Y2VkIGJ5ICMxMTQ1OS4KLSAgUGF0Y2ggYnkgQmVuIEhheWRlbi4KLQotLSBJc3N1ZSAjMTE1Nzc6IGZpeCBSZXNvdXJjZVdhcm5pbmcgdHJpZ2dlcmVkIGJ5IGltcHJvdmVkIGJpbmhleCB0ZXN0IGNvdmVyYWdlCi0KLS0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgotICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCi0KLS0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAotCi0tIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMxMzcyNTogRml4IHJlZ3J0ZXN0IHRvIHJlY29nbml6ZSB0aGUgZG9jdW1lbnRlZCAtZCBmbGFnLgotICBQYXRjaCBieSBFcm5vIFR1a2lhLgotCi0tIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgotICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQotCi0tIElzc3VlICM1NjYxOiBBZGQgYSB0ZXN0IGZvciBFQ09OTlJFU0VUL0VQSVBFIGhhbmRsaW5nIHRvIHRlc3RfYXN5bmNvcmUuIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCi0KLS0gUmUtZW5hYmxlIGxpYjJ0bzMncyB0ZXN0X3BhcnNlci5weSB0ZXN0cywgdGhvdWdoIHdpdGggYW4gZXhwZWN0ZWQgZmFpbHVyZQotICAoc2VlIGlzc3VlICMxMzEyNSkuCi0KLS0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgotCi0tIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKLQotLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQotICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKLSAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgotICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKLSAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCi0gIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgotICBpbnN0YWxsZWQgUHl0aG9uLgotCi0tIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKLSAgUHl0aG9uLgotCi0tIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCi0gIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcwotICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCi0gIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCi0gIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KLSAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQotCi0tIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKLSAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCi0KLS0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQotICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KLQotLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCi0gIGluIHRlc3RfdGVsbmV0bGliLnB5LgotCi0tIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKLSAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKLSAgV2ViIHNpdGUuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cwotICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0Ci0gIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCi0KLS0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQotICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCi0gIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgotCi0tIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKLSAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCi0gIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAotICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCi0KLS0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KLSAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAotICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgotCi0tIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKLSAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQotICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgotCi0tIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0Ci0gIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCi0gIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCi0gIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgotICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KLQotLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQotICAyLjggKyAgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKLSAgaXNvMjAyMl9rcikuCi0KLS0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCi0KLS0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KLSAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KLQotLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KLSAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCi0gIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgotICB0aHJlYWQuCi0KLS0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAotICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KLQotLSBJc3N1ZSAjMTEyMjM6IFNraXAgdGVzdF9sb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgYW5kCi0gIHRlc3RfcmxvY2tfYWNxdWlyZV9pbnRlcnJ1cHRpb24oKSBvZiB0ZXN0X3RocmVhZHNpZ25hbHMgaWYgYSB0aHJlYWQgbG9jayBpcwotICBpbXBsZW1lbnRlZCB1c2luZyBhIFBPU0lYIG11dGV4IGFuZCBhIFBPU0lYIGNvbmRpdGlvbiB2YXJpYWJsZS4gQSBQT1NJWAotICBjb25kaXRpb24gdmFyaWFibGUgY2Fubm90IGJlIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChlLmcuIG9uIExpbnV4LCB0aGUKLSAgZnV0ZXggc3lzdGVtIGNhbGwgaXMgcmVzdGFydGVkKS4KLQotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbiB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KLQotLSBGaXggcG9zc2libGUgImZpbGUgYWxyZWFkeSBleGlzdHMiIGVycm9yIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCi0KLS0gSXNzdWUgIzExNzE5OiBGaXggbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkIHRlc3RfbXNpbGliIHNraXAgb24gbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLiBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExNzI3OiBBZGQgYSAtLXRpbWVvdXQgb3B0aW9uIHRvIHJlZ3J0ZXN0OiBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gIFRJTUVPVVQgc2Vjb25kcywgZHVtcHMgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBhbmQgZXhpdHMuCi0KLS0gSXNzdWUgIzExNjUzOiBmaXggLVcgd2l0aCAtaiBpbiByZWdydGVzdC4KLQotLSBUaGUgZW1haWwgdGVzdCBzdWl0ZSBub3cgbGl2ZXMgaW4gdGhlIExpYi90ZXN0L3Rlc3RfZW1haWwgcGFja2FnZS4gIFRoZSB0ZXN0Ci0gIGhhcm5lc3MgY29kZSBoYXMgYWxzbyBiZWVuIG1vZGVybml6ZWQgdG8gYWxsb3cgdXNlIG9mIG5ldyB1bml0dGVzdCBmZWF0dXJlcy4KLQotLSByZWdydGVzdCBub3cgZGlzY292ZXJzIHRlc3QgcGFja2FnZXMgYXMgd2VsbCBhcyB0ZXN0IG1vZHVsZXMuCi0KLS0gSXNzdWUgIzExNTc3OiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgYmluaGV4LnB5LiBQYXRjaCBieSBBcmthZHkgS29wbHlhcm92LgotCi0tIE5ldyB0ZXN0X2NyYXNoZXJzIGFkZGVkIHRvIGV4ZXJjaXNlIHRoZSBzY3JpcHRzIGluIHRoZSBMaWIvdGVzdC9jcmFzaGVycwotICBkaXJlY3RvcnkgYW5kIGNvbmZpcm0gdGhleSBmYWlsIGFzIGV4cGVjdGVkCi0KLS0gSXNzdWUgIzExNTc4OiBhZGRlZCB0ZXN0IGZvciB0aGUgdGltZWl0IG1vZHVsZS4gIFBhdGNoIGJ5IE1pY2hhZWwgSGVucnkuCi0KLS0gSXNzdWUgIzExNTAzOiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgcG9zaXhwYXRoLnB5LiBQYXRjaCBieSBFdmFuIERhbmRyZWEuCi0KLS0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCi0gIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgotCi0tIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQotICBFdmFuIERhbmRyZWEuCi0KLS0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KLQotLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKLSAgQXJsZW4KLQotLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzcy50ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCi0gIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCi0KLS0gSXNzdWUgIzExMjIzOiBGaXggdGVzdF90aHJlYWRzaWduYWxzIHRvIGZhaWwsIG5vdCBoYW5nLCB3aGVuIHRoZQotICBub24tc2VtYXBob3JlIGltcGxlbWVudGF0aW9uIG9mIGxvY2tzIGlzIHVzZWQgdW5kZXIgUE9TSVguCi0KLS0gSXNzdWUgIzEwOTExOiBBZGQgdGVzdHMgb24gQ0dJIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgUGllcnJlIFF1ZW50ZWwuCi0KLS0gSXNzdWUgIzk5MzE6IEZpeCBoYW5ncyBpbiBHVUkgdGVzdHMgdW5kZXIgV2luZG93cyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCi0gIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxMDUxMjogUHJvcGVybHkgY2xvc2Ugc29ja2V0cyB1bmRlciB0ZXN0LnRlc3RfY2dpLgotCi0tIElzc3VlICMxMDk5MjogTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIGNvdmVyYWdlLgotCi0tIElzc3VlICMxMDgyNjogUHJldmVudCBzcG9yYWRpYyBmYWlsdXJlIGluIHRlc3Rfc3VicHJvY2VzcyBvbiBTb2xhcmlzIGR1ZQotICB0byBvcGVuIGRvb3IgZmlsZXMuCi0KLS0gSXNzdWUgIzEwOTkwOiBQcmV2ZW50IHRlc3RzIGZyb20gY2xvYmJlcmluZyBhIHNldCB0cmFjZSBmdW5jdGlvbi4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycwotICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKLSAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKLSAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bwotICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCi0KLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCi0gIG5hcnJvdyBidWlsZC4KLQotLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKLSAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCi0gIHR5cGVzLgotCi0tIElzc3VlICMxMzcyNzogQWRkIDMgbWFjcm9zIHRvIGFjY2VzcyBQeURhdGVUaW1lX0RlbHRhIG1lbWJlcnM6Ci0gIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMsIFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMsCi0gIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUy4KLQotLSBJc3N1ZSAjMTA1NDI6IEFkZCA0IG1hY3JvcyB0byB3b3JrIHdpdGggc3Vycm9nYXRlczogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUsCi0gIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUsIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSwKLSAgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMuCi0KLS0gSXNzdWUgIzEyNzI0OiBBZGQgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIG1hY3JvIGZvciByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQuCi0KLS0gUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiBoYXMgYmVlbiByZW1vdmVkLCBzaW5jZSBpdCdzIG1lYW5pbmdsZXNzIHdpdGgKLSAgTWVyY3VyaWFsLgotCi0tIElzc3VlICMxMjE3MzogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsIGlzIG5vdyBgY29uc3QKLSAgY2hhciAqYCBpbnN0ZWFkIG9mIGBjaGFyICpgLgotCi0tIElzc3VlICMxMjM4MDogUHlBcmdfUGFyc2VUdXBsZSBub3cgYWNjZXB0cyBhIGJ5dGVhcnJheSBmb3IgdGhlICdjJyBmb3JtYXQuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjMwMDY6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gYW5kIGluZGV4aW5nIG9mIGRpY3QuX19taXNzaW5nX18uCi0gIEFkZCBhbiBlbnRyeSBpbiB0aGUgbGFuZ3VhZ2UgZGF0YW1vZGVsIHNwZWNpYWwgbWV0aG9kcyBzZWN0aW9uLgotICBSZXZpc2UgYW5kIGluZGV4IGl0cyBkaXNjdXNzaW9uIGluIHRoZSBzdGR0eXBlcyBtYXBwaW5nL2RpY3Qgc2VjdGlvbi4KLQotLSBJc3N1ZSAjMTM5ODk6IERvY3VtZW50IHRoYXQgR3ppcEZpbGUgZG9lcyBub3Qgc3VwcG9ydCB0ZXh0IG1vZGUsIGFuZCBnaXZlIGEKLSAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiBvcGVuZWQgd2l0aCBhbiBpbnZhbGlkIG1vZGUgc3RyaW5nLgotCi0tIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAotICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKLSAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KLS0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAotICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCi0KLS0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgotCi0tIElzc3VlICM5MzQzOiBEb2N1bWVudCB0aGF0IGFyZ3BhcnNlIHBhcmVudCBwYXJzZXJzIG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKLSAgdGhlaXIgY2hpbGRyZW4uCi0KLS0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCi0gIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCi0KLS0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgotICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCi0KLS0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCi0KLS0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLgotCi0tIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKLSAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCi0KLS0gSXNzdWUgIzEyNzk4OiBVcGRhdGVkIHRoZSBtaW1ldHlwZXMgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTI5NDk6IERvY3VtZW50IHRoZSBrd29ubHlhcmdjb3VudCBhcmd1bWVudCBmb3IgdGhlIFB5Q29kZV9OZXcKLSAgQyBBUEkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCi0gIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCi0gIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KLQotLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCi0KLS0gSXNzdWUgIzExODE4OiBGaXggdGVtcGZpbGUgZXhhbXBsZXMgZm9yIFB5dGhvbiAzLgotCi0KICoqKEZvciBpbmZvcm1hdGlvbiBhYm91dCBvbGRlciB2ZXJzaW9ucywgY29uc3VsdCB0aGUgSElTVE9SWSBmaWxlLikqKgpkaWZmIC0tZ2l0IGEvTWlzYy9Qb3J0aW5nIGIvTWlzYy9Qb3J0aW5nCmluZGV4IDUxZjczZTYuLmMyODNjYjIgMTAwNjQ0Ci0tLSBhL01pc2MvUG9ydGluZworKysgYi9NaXNjL1BvcnRpbmcKQEAgLTI3LDcgKzI3LDcgQEAKIHN1cHBvcnQuICBTdGFydCB3aXRoIE1vZHVsZXMvY29uZmlnLmMuaW4uCiAKIEZpbmFsbHksIHlvdSdsbCBydW4gaW50byBzb21lIHRoaW5ncyB0aGF0IGFyZW4ndCBzdXBwb3J0ZWQgb24geW91cgotdGFyZ2V0IHBsYXRmb3JtLiAgRm9yZ2V0IGFib3V0IHRoZSBwb3NpeCBtb2R1bGUgZm9yIG5vdyAtLSBzaW1wbHkgdGFrZSAKK3RhcmdldCBwbGF0Zm9ybS4gIEZvcmdldCBhYm91dCB0aGUgcG9zaXggbW9kdWxlIGZvciBub3cgLS0gc2ltcGx5IHRha2UKIGl0IG91dCBvZiB0aGUgY29uZmlnLmMgZmlsZS4KIAogQmFuZyBvbiBpdCB1bnRpbCB5b3UgZ2V0IGEgPj4+IHByb21wdC4gIChZb3UgbWF5IGhhdmUgdG8gZGlzYWJsZSB0aGUKZGlmZiAtLWdpdCBhL01pc2MvY292ZXJpdHlfbW9kZWwuYyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwppbmRleCA1N2YzYWViLi40OTNlN2MxIDEwMDY0NAotLS0gYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMKKysrIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCkBAIC04NSw3ICs4NSw3IEBACiB9CiAKIC8qIFB5dGhvbi9maWxldXRpbHMuYyAqLwotd2NoYXJfdCAqX1B5X2NoYXIyd2NoYXIoY29uc3QgY2hhciogYXJnLCBzaXplX3QgKnNpemUpCit3Y2hhcl90ICpQeV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciogYXJnLCBzaXplX3QgKnNpemUpCiB7CiAgICB3Y2hhcl90ICp3OwogICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhhcmcpOwpAQCAtMTIyLDcgKzEyMiw4IEBACiAKIC8qIENvdmVyaXR5IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGF0IGZkb3BlbmRpcigpIG1heSB0YWtlIG93bmVyc2hpcCBvZiBmZC4gKi8KIAotRElSICpmZG9wZW5kaXIoaW50IGZkKSB7CitESVIgKmZkb3BlbmRpcihpbnQgZmQpCit7CiAgICAgRElSICpkOwogICAgIGlmIChkKSB7CiAgICAgICAgIF9fY292ZXJpdHlfY2xvc2VfXyhmZCk7CkBAIC0xMzAsMyArMTMxLDU4IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKKy8qIE1vZHVsZXMvX2RhdGV0aW1lLmMKKyAqCisgKiBDb3Zlcml0eSB0aGlua3MgdGhhdCB0aGUgaW5wdXQgdmFsdWVzIGZvciB0aGVzZSBmdW5jdGlvbiBjb21lIGZyb20gYQorICogdGFpbnRlZCBzb3VyY2UgUHlEYXRlVGltZV9EQVRFX0dFVF8qIG1hY3JvcyB1c2UgYml0IHNoaWZ0aW5nLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfc3RydWN0X3RpbWUoaW50IHksIGludCBtLCBpbnQgZCwgaW50IGhoLCBpbnQgbW0sIGludCBzcywgaW50IGRzdGZsYWcpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHkpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obSk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhkKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGhoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG1tKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHNzKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGRzdGZsYWcpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAoreW1kX3RvX29yZChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KQoreworICAgIGludCBvcmQgPSAwOworCisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyh5ZWFyKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG1vbnRoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGRheSk7CisKKyAgICByZXR1cm4gb3JkOworfQorCitzdGF0aWMgaW50Citub3JtYWxpemVfZGF0ZShpbnQgKnllYXIsIGludCAqbW9udGgsIGludCAqZGF5KQoreworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oKnllYXIpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oKm1vbnRoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKCpkYXkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3dlZWtkYXkoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKK3sKKyAgICBpbnQgdyA9IDA7CisKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHllYXIpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obW9udGgpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oZGF5KTsKKworICAgIHJldHVybiB3OworfQorCmRpZmYgLS1naXQgYS9NaXNjL2dkYmluaXQgYi9NaXNjL2dkYmluaXQKaW5kZXggOTQ4NGI1MS4uM2I2ZmU1MCAxMDA2NDQKLS0tIGEvTWlzYy9nZGJpbml0CisrKyBiL01pc2MvZ2RiaW5pdApAQCAtMTUwLDEwICsxNTAsMTAgQEAKIAogIyBnZW5lcmFsbHkgdXNlZnVsIG1hY3JvIHRvIHByaW50IGEgVW5pY29kZSBzdHJpbmcKIGRlZiBwdQotICBzZXQgJHVuaSA9ICRhcmcwIAorICBzZXQgJHVuaSA9ICRhcmcwCiAgIHNldCAkaSA9IDAKICAgd2hpbGUgKCokdW5pICYmICRpKys8MTAwKQotICAgIGlmICgqJHVuaSA8IDB4ODApIAorICAgIGlmICgqJHVuaSA8IDB4ODApCiAgICAgICBwcmludCAqKGNoYXIqKSR1bmkrKwogICAgIGVsc2UKICAgICAgIHByaW50IC94ICooc2hvcnQqKSR1bmkrKwpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24ubWFuIGIvTWlzYy9weXRob24ubWFuCmluZGV4IGVhOTU0MGMuLjZkYmRiYTkgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLm1hbgorKysgYi9NaXNjL3B5dGhvbi5tYW4KQEAgLTEwMywxMCArMTAzLDEwIEBACiBhcHBsaWNhdGlvbnMuCiBTZWUgdGhlIGludGVybmFsIGRvY3VtZW50YXRpb24gZm9yIGhpbnRzLgogLlBQCi1Eb2N1bWVudGF0aW9uIGZvciBpbnN0YWxsZWQgUHl0aG9uIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGNhbiBiZSAKLXZpZXdlZCBieSBydW5uaW5nIHRoZSAKK0RvY3VtZW50YXRpb24gZm9yIGluc3RhbGxlZCBQeXRob24gbW9kdWxlcyBhbmQgcGFja2FnZXMgY2FuIGJlCit2aWV3ZWQgYnkgcnVubmluZyB0aGUKIC5CIHB5ZG9jCi1wcm9ncmFtLiAgCitwcm9ncmFtLgogLlNIIENPTU1BTkQgTElORSBPUFRJT05TCiAuVFAKIC5CIFwtQgpAQCAtMTQ5LDIzICsxNDksMjAgQEAKIG1hbGljaW91cyBjb2RlLgogLlRQCiAuQkkgIlwtbSAiIG1vZHVsZS1uYW1lCi1TZWFyY2hlcyAKLS5JIHN5cy5wYXRoIAotZm9yIHRoZSBuYW1lZCBtb2R1bGUgYW5kIHJ1bnMgdGhlIGNvcnJlc3BvbmRpbmcgCi0uSSAucHkgCitTZWFyY2hlcworLkkgc3lzLnBhdGgKK2ZvciB0aGUgbmFtZWQgbW9kdWxlIGFuZCBydW5zIHRoZSBjb3JyZXNwb25kaW5nCisuSSAucHkKIGZpbGUgYXMgYSBzY3JpcHQuCiAuVFAKIC5CIFwtTwotVHVybiBvbiBiYXNpYyBvcHRpbWl6YXRpb25zLiAgVGhpcyBjaGFuZ2VzIHRoZSBmaWxlbmFtZSBleHRlbnNpb24gZm9yCi1jb21waWxlZCAoYnl0ZWNvZGUpIGZpbGVzIGZyb20KLS5JIC5weWMKLXRvIFxmSS5weW9cZlAuICBHaXZlbiB0d2ljZSwgY2F1c2VzIGRvY3N0cmluZ3MgdG8gYmUgZGlzY2FyZGVkLgorVHVybiBvbiBiYXNpYyBvcHRpbWl6YXRpb25zLiAgR2l2ZW4gdHdpY2UsIGNhdXNlcyBkb2NzdHJpbmdzIHRvIGJlIGRpc2NhcmRlZC4KIC5UUAogLkIgXC1PTwogRGlzY2FyZCBkb2NzdHJpbmdzIGluIGFkZGl0aW9uIHRvIHRoZSBcZkItT1xmUCBvcHRpbWl6YXRpb25zLgogLlRQCiAuQiBcLXEKLURvIG5vdCBwcmludCB0aGUgdmVyc2lvbiBhbmQgY29weXJpZ2h0IG1lc3NhZ2VzLiBUaGVzZSBtZXNzYWdlcyBhcmUgCitEbyBub3QgcHJpbnQgdGhlIHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gVGhlc2UgbWVzc2FnZXMgYXJlCiBhbHNvIHN1cHByZXNzZWQgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUuCiAuVFAKIC5CIFwtcwpAQCAtMTkyLDcgKzE4OSw3IEBACiAuQiBcLXYKIFByaW50IGEgbWVzc2FnZSBlYWNoIHRpbWUgYSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQsIHNob3dpbmcgdGhlIHBsYWNlCiAoZmlsZW5hbWUgb3IgYnVpbHQtaW4gbW9kdWxlKSBmcm9tIHdoaWNoIGl0IGlzIGxvYWRlZC4gIFdoZW4gZ2l2ZW4KLXR3aWNlLCBwcmludCBhIG1lc3NhZ2UgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGNoZWNrZWQgZm9yIHdoZW4gCit0d2ljZSwgcHJpbnQgYSBtZXNzYWdlIGZvciBlYWNoIGZpbGUgdGhhdCBpcyBjaGVja2VkIGZvciB3aGVuCiBzZWFyY2hpbmcgZm9yIGEgbW9kdWxlLiAgQWxzbyBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBtb2R1bGUgY2xlYW51cAogYXQgZXhpdC4KIC5UUApAQCAtNDE3LDcgKzQxNCw3IEBACiAuSVAgUFlUSE9OVkVSQk9TRQogSWYgdGhpcyBpcyBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nIGl0IGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZwogdGhlIFxmQlwtdlxmUCBvcHRpb24uIElmIHNldCB0byBhbiBpbnRlZ2VyLCBpdCBpcyBlcXVpdmFsZW50IHRvCi1zcGVjaWZ5aW5nIFxmQlwtdlxmUCBtdWx0aXBsZSB0aW1lcy4gCitzcGVjaWZ5aW5nIFxmQlwtdlxmUCBtdWx0aXBsZSB0aW1lcy4KIC5JUCBQWVRIT05XQVJOSU5HUwogSWYgdGhpcyBpcyBzZXQgdG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIGl0IGlzIGVxdWl2YWxlbnQgdG8KIHNwZWNpZnlpbmcgdGhlIFxmQlwtV1xmUCBvcHRpb24gZm9yIGVhY2ggc2VwYXJhdGUgdmFsdWUuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1JFQURNRSBiL01vZHVsZXMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNzlmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL1JFQURNRQpAQCAtMCwwICsxLDIgQEAKK1NvdXJjZSBmaWxlcyBmb3Igc3RhbmRhcmQgbGlicmFyeSBleHRlbnNpb24gbW9kdWxlcywKK2FuZCBmb3JtZXIgZXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCBhcmUgbm93IGJ1aWx0aW4gbW9kdWxlcy4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KaW5kZXggNWFjMjQwNC4uYWRhYzAzMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KKysrIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KQEAgLTcsNyArNyw3IEBACiBAVVNFX1RIUkVBRF9NT0RVTEVAX3RocmVhZCBfdGhyZWFkbW9kdWxlLmMKIAogIyBUaGUgc2lnbmFsIG1vZHVsZQotQFVTRV9TSUdOQUxfTU9EVUxFQHNpZ25hbCBzaWduYWxtb2R1bGUuYworQFVTRV9TSUdOQUxfTU9EVUxFQF9zaWduYWwgc2lnbmFsbW9kdWxlLmMKIAogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBwcmV2aW91c2x5IGxpc3RlZCBpbiB0aGlzIGZpbGUgYXJlIGJ1aWx0CiAjIGJ5IHRoZSBzZXR1cC5weSBzY3JpcHQgaW4gUHl0aG9uIDIuMSBhbmQgbGF0ZXIuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggYjYwYjU5NC4uMDZiYTZhZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTE4LDYgKzExOCw3IEBACiBpdGVydG9vbHMgaXRlcnRvb2xzbW9kdWxlLmMgICAgIyBGdW5jdGlvbnMgY3JlYXRpbmcgaXRlcmF0b3JzIGZvciBlZmZpY2llbnQgbG9vcGluZwogYXRleGl0IGF0ZXhpdG1vZHVsZS5jICAgICAgIyBSZWdpc3RlciBmdW5jdGlvbnMgdG8gYmUgcnVuIGF0IGludGVycHJldGVyLXNodXRkb3duCiBfc3RhdCBfc3RhdC5jCQkJIyBzdGF0LmggaW50ZXJmYWNlCit0aW1lIHRpbWVtb2R1bGUuYwkjIC1sbSAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCiAKICMgYWNjZXNzIHRvIElTTyBDIGxvY2FsZSBzdXBwb3J0CiBfbG9jYWxlIF9sb2NhbGVtb2R1bGUuYyAgIyAtbGludGwKQEAgLTE3MSw3ICsxNzIsNiBAQAogI2NtYXRoIGNtYXRobW9kdWxlLmMgX21hdGguYyAjIC1sbSAjIGNvbXBsZXggbWF0aCBsaWJyYXJ5IGZ1bmN0aW9ucwogI21hdGggbWF0aG1vZHVsZS5jIF9tYXRoLmMgIyAtbG0gIyBtYXRoIGxpYnJhcnkgZnVuY3Rpb25zLCBlLmcuIHNpbigpCiAjX3N0cnVjdCBfc3RydWN0LmMJIyBiaW5hcnkgc3RydWN0dXJlIHBhY2tpbmcvdW5wYWNraW5nCi0jdGltZSB0aW1lbW9kdWxlLmMgIyAtbG0gIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwogI193ZWFrcmVmIF93ZWFrcmVmLmMJIyBiYXNpYyB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0CiAjX3Rlc3RjYXBpIF90ZXN0Y2FwaW1vZHVsZS5jICAgICMgUHl0aG9uIEMgQVBJIHRlc3QgbW9kdWxlCiAjX3JhbmRvbSBfcmFuZG9tbW9kdWxlLmMJIyBSYW5kb20gbnVtYmVyIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnoybW9kdWxlLmMgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwppbmRleCBlNjUyZjRkLi43ZGZkMzA3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19iejJtb2R1bGUuYworKysgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpAQCAtNTEsNiArNTEsMTQgQEAKICAgICBiel9zdHJlYW0gYnpzOwogICAgIGNoYXIgZW9mOyAgICAgICAgICAgLyogVF9CT09MIGV4cGVjdHMgYSBjaGFyICovCiAgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOworICAgIGNoYXIgbmVlZHNfaW5wdXQ7CisgICAgY2hhciAqaW5wdXRfYnVmZmVyOworICAgIHNpemVfdCBpbnB1dF9idWZmZXJfc2l6ZTsKKworICAgIC8qIGJ6cy0+YXZhaWxfaW4gaXMgb25seSAzMiBiaXQsIHNvIHdlIHN0b3JlIHRoZSB0cnVlIGxlbmd0aAorICAgICAgIHNlcGFyYXRlbHkuIENvbnZlcnNpb24gYW5kIGxvb3BpbmcgaXMgZW5jYXBzdWxhdGVkIGluCisgICAgICAgZGVjb21wcmVzc19idWYoKSAqLworICAgIHNpemVfdCBienNfYXZhaWxfaW5fcmVhbDsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwogI2VuZGlmCkBAIC0xMTEsMTkgKzExOSwyMyBAQAogfQogCiAjaWYgQlVGU0laIDwgODE5MgotI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKKyNkZWZpbmUgSU5JVElBTF9CVUZGRVJfU0laRSA4MTkyCiAjZWxzZQotI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIEJVRlNJWgogI2VuZGlmCiAKIHN0YXRpYyBpbnQKLWdyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmKQorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKICAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCiAgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQogICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCiAgICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwogICAgIHNpemVfdCBuZXdfc2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisKKyAgICBpZiAobWF4X2xlbmd0aCA+IDAgJiYgbmV3X3NpemUgPiAoc2l6ZV90KSBtYXhfbGVuZ3RoKQorICAgICAgICBuZXdfc2l6ZSA9IChzaXplX3QpIG1heF9sZW5ndGg7CisKICAgICBpZiAobmV3X3NpemUgPiBzaXplKSB7CiAgICAgICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBuZXdfc2l6ZSk7CiAgICAgfSBlbHNlIHsgIC8qIG92ZXJmbG93ICovCkBAIC0xNDIsMTQgKzE1NCwxNCBAQAogICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGMtPmJ6cy5uZXh0X2luID0gZGF0YTsKICAgICBjLT5ienMuYXZhaWxfaW4gPSAwOwogICAgIGMtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgYy0+YnpzLmF2YWlsX291dCA9IFNNQUxMQ0hVTks7CisgICAgYy0+YnpzLmF2YWlsX291dCA9IElOSVRJQUxfQlVGRkVSX1NJWkU7CiAgICAgZm9yICg7OykgewogICAgICAgICBjaGFyICp0aGlzX291dDsKICAgICAgICAgaW50IGJ6ZXJyb3I7CkBAIC0xNjgsNyArMTgwLDcgQEAKICAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgewogICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwogICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCkgPCAwKQorICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0LCAtMSkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIGMtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CiAgICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CkBAIC0xODgsNyArMjAwLDcgQEAKICAgICAgICAgaWYgKGFjdGlvbiA9PSBCWl9GSU5JU0ggJiYgYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgIGlmIChkYXRhX3NpemUgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xOTksMTIgKzIxMSwxMSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBfYnoyCiBjbGFzcyBfYnoyLkJaMkNvbXByZXNzb3IgIkJaMkNvbXByZXNzb3IgKiIgIiZCWjJDb21wcmVzc29yX1R5cGUiCiBjbGFzcyBfYnoyLkJaMkRlY29tcHJlc3NvciAiQloyRGVjb21wcmVzc29yICoiICImQloyRGVjb21wcmVzc29yX1R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lM2IxMzk5MjRmNWUxOGNjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kYzdkNzk5MmE3OWY5Y2I3XSovCiAKICNpbmNsdWRlICJjbGluaWMvX2J6Mm1vZHVsZS5jLmgiCiAKQEAgLTQwMiw2NCArNDEzLDE3NiBAQAogCiAvKiBCWjJEZWNvbXByZXNzb3IgY2xhc3MuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqZCwgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikKKy8qIERlY29tcHJlc3MgZGF0YSBvZiBsZW5ndGggZC0+YnpzX2F2YWlsX2luX3JlYWwgaW4gZC0+YnpzLm5leHRfaW4uICBUaGUgb3V0cHV0CisgICBidWZmZXIgaXMgYWxsb2NhdGVkIGR5bmFtaWNhbGx5IGFuZCByZXR1cm5lZC4gIEF0IG1vc3QgbWF4X2xlbmd0aCBieXRlcyBhcmUKKyAgIHJldHVybmVkLCBzbyBzb21lIG9mIHRoZSBpbnB1dCBtYXkgbm90IGJlIGNvbnN1bWVkLiBkLT5ienMubmV4dF9pbiBhbmQKKyAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsIGFyZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGNvbnN1bWVkIGlucHV0LiAqLworc3RhdGljIFB5T2JqZWN0KgorZGVjb21wcmVzc19idWYoQloyRGVjb21wcmVzc29yICpkLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7Ci0gICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgLyogZGF0YV9zaXplIGlzIHN0cmljdGx5IHBvc2l0aXZlLCBidXQgYmVjYXVzZSB3ZSByZXBlYXRlZGx5IGhhdmUgdG8KKyAgICAgICBjb21wYXJlIGFnYWluc3QgbWF4X2xlbmd0aCBhbmQgUHlCeXRlc19HRVRfU0laRSB3ZSBkZWNsYXJlIGl0IGFzCisgICAgICAgc2lnbmVkICovCisgICAgUHlfc3NpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgYnpfc3RyZWFtICpienMgPSAmZC0+YnpzOwogCi0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKKyAgICBpZiAobWF4X2xlbmd0aCA8IDAgfHwgbWF4X2xlbmd0aCA+PSBJTklUSUFMX0JVRkZFUl9TSVpFKQorICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBtYXhfbGVuZ3RoKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgZC0+YnpzLm5leHRfaW4gPSBkYXRhOwotICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgbGVuIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfaW4gKGFuIHVuc2lnbmVkIGludCkuCi0gICAgICAgRG8gZGVjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCi0gICAgZC0+YnpzLmF2YWlsX2luID0gKHVuc2lnbmVkIGludClQeV9NSU4obGVuLCBVSU5UX01BWCk7Ci0gICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKLSAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBTTUFMTENIVU5LOworICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGJ6cy0+bmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwogICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqdGhpc19vdXQ7Ci0gICAgICAgIGludCBiemVycm9yOworICAgICAgICBpbnQgYnpyZXQ7CisgICAgICAgIHNpemVfdCBhdmFpbDsKKworICAgICAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGJ1ZmZlciBsZW5ndGggbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9vdXQsIHNvIHdlCisgICAgICAgICAgIGRvIGRlY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcworICAgICAgICAgICBlYWNoLiBOb3RlIHRoYXQgdGhlIGV4cHJlc3Npb24gZm9yIGBhdmFpbGAgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgICAgICAgICBwb3NpdGl2ZSwgc28gdGhlIGNhc3QgaXMgc2FmZS4gKi8KKyAgICAgICAgYXZhaWwgPSAoc2l6ZV90KSAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplKTsKKyAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSAodW5zaWduZWQgaW50KVB5X01JTihhdmFpbCwgVUlOVF9NQVgpOworICAgICAgICBienMtPmF2YWlsX2luID0gKHVuc2lnbmVkIGludClQeV9NSU4oZC0+YnpzX2F2YWlsX2luX3JlYWwsIFVJTlRfTUFYKTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgLT0gYnpzLT5hdmFpbF9pbjsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHRoaXNfb3V0ID0gZC0+YnpzLm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcygmZC0+YnpzKTsKLSAgICAgICAgZGF0YV9zaXplICs9IGQtPmJ6cy5uZXh0X291dCAtIHRoaXNfb3V0OworICAgICAgICBienJldCA9IEJaMl9iekRlY29tcHJlc3MoYnpzKTsKKyAgICAgICAgZGF0YV9zaXplID0gYnpzLT5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsICs9IGJ6cy0+YXZhaWxfaW47CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnpyZXQpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgeworICAgICAgICBpZiAoYnpyZXQgPT0gQlpfU1RSRUFNX0VORCkgewogICAgICAgICAgICAgZC0+ZW9mID0gMTsKLSAgICAgICAgICAgIGxlbiArPSBkLT5ienMuYXZhaWxfaW47Ci0gICAgICAgICAgICBpZiAobGVuID4gMCkgeyAvKiBTYXZlIGxlZnRvdmVyIGlucHV0IHRvIHVudXNlZF9kYXRhICovCi0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOwotICAgICAgICAgICAgICAgIGQtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkLT5ienMubmV4dF9pbiwgbGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkLT5ienMuYXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICB9IGVsc2UgaWYgKGQtPmJ6c19hdmFpbF9pbl9yZWFsID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3NpemUgPT0gbWF4X2xlbmd0aCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9pbiA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGxlbiwgVUlOVF9NQVgpOwotICAgICAgICAgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSAodW5zaWduZWQgaW50KVB5X01JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICAgICAgaWYgKGRhdGFfc2l6ZSA9PSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgJiYKKyAgICAgICAgICAgICAgICBncm93X2J1ZmZlcigmcmVzdWx0LCBtYXhfbGVuZ3RoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCi0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpkLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCit7CisgICAgY2hhciBpbnB1dF9idWZmZXJfaW5fdXNlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgYnpfc3RyZWFtICpienMgPSAmZC0+YnpzOworCisgICAgLyogUHJlcGVuZCB1bmNvbnN1bWVkIGlucHV0IGlmIG5lY2Vzc2FyeSAqLworICAgIGlmIChienMtPm5leHRfaW4gIT0gTlVMTCkgeworICAgICAgICBzaXplX3QgYXZhaWxfbm93LCBhdmFpbF90b3RhbDsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCB0byBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgYXZhaWxfbm93ID0gKGQtPmlucHV0X2J1ZmZlciArIGQtPmlucHV0X2J1ZmZlcl9zaXplKQorICAgICAgICAgICAgLSAoYnpzLT5uZXh0X2luICsgZC0+YnpzX2F2YWlsX2luX3JlYWwpOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIGlmIHdlIG1vdmUgZXhpc3RpbmcKKyAgICAgICAgICAgY29udGVudHMgdG8gYmVnaW5uaW5nIG9mIGJ1ZmZlciAob3ZlcndyaXRpbmcKKyAgICAgICAgICAgY29uc3VtZWQgaW5wdXQpICovCisgICAgICAgIGF2YWlsX3RvdGFsID0gZC0+aW5wdXRfYnVmZmVyX3NpemUgLSBkLT5ienNfYXZhaWxfaW5fcmVhbDsKKworICAgICAgICBpZiAoYXZhaWxfdG90YWwgPCBsZW4pIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBienMtPm5leHRfaW4gLSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgICAgICBjaGFyICp0bXA7CisgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSArIGxlbiAtIGF2YWlsX25vdzsKKworICAgICAgICAgICAgLyogQXNzaWduIHRvIHRlbXBvcmFyeSB2YXJpYWJsZSBmaXJzdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAgICAgIGxvc2UgYWRkcmVzcyBvZiBhbGxvY2F0ZWQgYnVmZmVyIGlmIHJlYWxsb2MgZmFpbHMgKi8KKyAgICAgICAgICAgIHRtcCA9IFB5TWVtX1JlYWxsb2MoZC0+aW5wdXRfYnVmZmVyLCBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IHRtcDsKKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gbmV3X3NpemU7CisKKyAgICAgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlciArIG9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhdmFpbF9ub3cgPCBsZW4pIHsKKyAgICAgICAgICAgIG1lbW1vdmUoZC0+aW5wdXRfYnVmZmVyLCBienMtPm5leHRfaW4sCisgICAgICAgICAgICAgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKyAgICAgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoKHZvaWQqKShienMtPm5leHRfaW4gKyBkLT5ienNfYXZhaWxfaW5fcmVhbCksIGRhdGEsIGxlbik7CisgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsICs9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBienMtPm5leHRfaW4gPSBkYXRhOworICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCA9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjb21wcmVzc19idWYoZCwgbWF4X2xlbmd0aCk7CisgICAgaWYocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGQtPmVvZikgeworICAgICAgICBkLT5uZWVkc19pbnB1dCA9IDA7CisgICAgICAgIGlmIChkLT5ienNfYXZhaWxfaW5fcmVhbCA+IDApIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKKyAgICAgICAgICAgIGQtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgICAgICAgICBienMtPm5leHRfaW4sIGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKyAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoZC0+YnpzX2F2YWlsX2luX3JlYWwgPT0gMCkgeworICAgICAgICBienMtPm5leHRfaW4gPSBOVUxMOworICAgICAgICBkLT5uZWVkc19pbnB1dCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkLT5uZWVkc19pbnB1dCA9IDA7CisKKyAgICAgICAgLyogSWYgd2UgZGlkIG5vdCB1c2UgdGhlIGlucHV0IGJ1ZmZlciwgd2Ugbm93IGhhdmUKKyAgICAgICAgICAgdG8gY29weSB0aGUgdGFpbCBmcm9tIHRoZSBjYWxsZXIncyBidWZmZXIgaW50byB0aGUKKyAgICAgICAgICAgaW5wdXQgYnVmZmVyICovCisgICAgICAgIGlmICghaW5wdXRfYnVmZmVyX2luX3VzZSkgeworCisgICAgICAgICAgICAvKiBEaXNjYXJkIGJ1ZmZlciBpZiBpdCdzIHRvbyBzbWFsbAorICAgICAgICAgICAgICAgKHJlc2l6aW5nIGl0IG1heSBuZWVkbGVzc2x5IGNvcHkgdGhlIGN1cnJlbnQgY29udGVudHMpICovCisgICAgICAgICAgICBpZiAoZC0+aW5wdXRfYnVmZmVyICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXJfc2l6ZSA8IGQtPmJ6c19hdmFpbF9pbl9yZWFsKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShkLT5pbnB1dF9idWZmZXIpOworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEFsbG9jYXRlIGlmIG5lY2Vzc2FyeSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gUHlNZW1fTWFsbG9jKGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+aW5wdXRfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19NZW1vcnlFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gZC0+YnpzX2F2YWlsX2luX3JlYWw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIENvcHkgdGFpbCAqLworICAgICAgICAgICAgbWVtY3B5KGQtPmlucHV0X2J1ZmZlciwgYnpzLT5uZXh0X2luLCBkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisgICAgICAgICAgICBienMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogCiBlcnJvcjoKQEAgLTQ3MCwyMSArNTkzLDMwIEBACiAvKltjbGluaWMgaW5wdXRdCiBfYnoyLkJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKKyAgICBzZWxmOiBzZWxmKHR5cGU9IkJaMkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKLSAgICAvCisgICAgbWF4X2xlbmd0aDogUHlfc3NpemVfdD0tMQogCi1Qcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuCitEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLgogCi1SZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGInJyBvdGhlcndpc2UuCitJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCogYnl0ZXMgb2YKK2RlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIgb3V0cHV0IGNhbiBiZQorcHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQKK2NhbGwgdG8gKmRlY29tcHJlc3MoKSogbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGInJyB0byBvYnRhaW4gbW9yZSBvZiB0aGUgb3V0cHV0LgogCi1BdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkCi1yYWlzZXMgYW4gRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KLWlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuCitJZiBhbGwgb2YgdGhlIGlucHV0IGRhdGEgd2FzIGRlY29tcHJlc3NlZCBhbmQgcmV0dXJuZWQgKGVpdGhlciBiZWNhdXNlIHRoaXMKK3dhcyBsZXNzIHRoYW4gKm1heF9sZW5ndGgqIGJ5dGVzLCBvciBiZWNhdXNlICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLAorKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIFRydWUuCisKK0F0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQgcmFpc2VzIGFuCitFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbgordGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wODZlNGI5OWU2MGNiM2Y2IGlucHV0PTYxNmMyYTZkYjUyNjk5NjFdKi8KK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjNlNDEwNDVkZWIyNDBhMyBpbnB1dD05NTU4YjQyNGM4YjAwNTE2XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTQ5Miw3ICs2MjQsNyBAQAogICAgIGlmIChzZWxmLT5lb2YpCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkVuZCBvZiBzdHJlYW0gYWxyZWFkeSByZWFjaGVkIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWF4X2xlbmd0aCk7CiAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MjcsNyArNjU5LDExIEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOworICAgIHNlbGYtPm5lZWRzX2lucHV0ID0gMTsKKyAgICBzZWxmLT5ienNfYXZhaWxfaW5fcmVhbCA9IDA7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXJfc2l6ZSA9IDA7CisgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC01NDksNiArNjg1LDggQEAKIHN0YXRpYyB2b2lkCiBCWjJEZWNvbXByZXNzb3JfZGVhbGxvYyhCWjJEZWNvbXByZXNzb3IgKnNlbGYpCiB7CisgICAgaWYoc2VsZi0+aW5wdXRfYnVmZmVyICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aW5wdXRfYnVmZmVyKTsKICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwogICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtNTcwLDExICs3MDgsMTYgQEAKIFB5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19fLAogIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CiAKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfbmVlZHNfaW5wdXRfZG9jLAorIlRydWUgaWYgbW9yZSBpbnB1dCBpcyBuZWVkZWQgYmVmb3JlIG1vcmUgZGVjb21wcmVzc2VkIGRhdGEgY2FuIGJlIHByb2R1Y2VkLiIpOworCiBzdGF0aWMgUHlNZW1iZXJEZWYgQloyRGVjb21wcmVzc29yX21lbWJlcnNbXSA9IHsKICAgICB7ImVvZiIsIFRfQk9PTCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCBlb2YpLAogICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX2VvZl9fZG9jX199LAogICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksCiAgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19ffSwKKyAgICB7Im5lZWRzX2lucHV0IiwgVF9CT09MLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIG5lZWRzX2lucHV0KSwgUkVBRE9OTFksCisgICAgIEJaMkRlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2N9LAogICAgIHtOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwppbmRleCA1MmYzNDc5Li5jZjY3YzQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwpAQCAtNDcsMTkgKzQ3LDI1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lMTM5MGUzZGEzY2I5ZGViXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2NvZGVjc21vZHVsZS5jLmgiCiAKIC8qIC0tLSBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIocmVnaXN0ZXJfX2RvY19fLAotInJlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbilcblwKLVxuXAotUmVnaXN0ZXIgYSBjb2RlYyBzZWFyY2ggZnVuY3Rpb24uIFNlYXJjaCBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIHRha2VcblwKLW9uZSBhcmd1bWVudCwgdGhlIGVuY29kaW5nIG5hbWUgaW4gYWxsIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIGVpdGhlclxuXAotcmV0dXJuIE5vbmUsIG9yIGEgdHVwbGUgb2YgZnVuY3Rpb25zIChlbmNvZGVyLCBkZWNvZGVyLCBzdHJlYW1fcmVhZGVyLFxuXAotc3RyZWFtX3dyaXRlcikgKG9yIGEgQ29kZWNJbmZvIG9iamVjdCkuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJlZ2lzdGVyCisgICAgc2VhcmNoX2Z1bmN0aW9uOiBvYmplY3QKKyAgICAvCiAKLXN0YXRpYwotUHlPYmplY3QgKmNvZGVjX3JlZ2lzdGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VhcmNoX2Z1bmN0aW9uKQorUmVnaXN0ZXIgYSBjb2RlYyBzZWFyY2ggZnVuY3Rpb24uCisKK1NlYXJjaCBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIHRha2Ugb25lIGFyZ3VtZW50LCB0aGUgZW5jb2RpbmcgbmFtZSBpbgorYWxsIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIGVpdGhlciByZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnMKKyhlbmNvZGVyLCBkZWNvZGVyLCBzdHJlYW1fcmVhZGVyLCBzdHJlYW1fd3JpdGVyKSAob3IgYSBDb2RlY0luZm8gb2JqZWN0KS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmVnaXN0ZXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNlYXJjaF9mdW5jdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMTc2MDhiNmFkMzgwZWI4IGlucHV0PTM2OTU3ODQ2Nzk1NWNhZTRdKi8KIHsKICAgICBpZiAoUHlDb2RlY19SZWdpc3RlcihzZWFyY2hfZnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY3LDc1ICs3Myw3MyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9va3VwX19kb2NfXywKLSJsb29rdXAoZW5jb2RpbmcpIC0+IENvZGVjSW5mb1xuXAotXG5cCi1Mb29rcyB1cCBhIGNvZGVjIHR1cGxlIGluIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkgYW5kIHJldHVybnNcblwKLWEgQ29kZWNJbmZvIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubG9va3VwCisgICAgZW5jb2Rpbmc6IHN0cgorICAgIC8KIAotc3RhdGljCi1QeU9iamVjdCAqY29kZWNfbG9va3VwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK0xvb2tzIHVwIGEgY29kZWMgdHVwbGUgaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeSBhbmQgcmV0dXJucyBhIENvZGVjSW5mbyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5OGU0MWFmZjBjMDRlZjYgaW5wdXQ9M2M1NzJjMGRiM2ZlYmU5Y10qLwogewotICAgIGNoYXIgKmVuY29kaW5nOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmxvb2t1cCIsICZlbmNvZGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7CiB9CiAKLVB5RG9jX1NUUlZBUihlbmNvZGVfX2RvY19fLAotImVuY29kZShvYmosIFtlbmNvZGluZ1ssZXJyb3JzXV0pIC0+IG9iamVjdFxuXAotXG5cCi1FbmNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIGVuY29kaW5nIGRlZmF1bHRzXG5cCi10byB0aGUgZGVmYXVsdCBlbmNvZGluZy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3JcblwKLWhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlXG5cCi1hIFZhbHVlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJyBhbmRcblwKLSd4bWxjaGFycmVmcmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGhcblwKLWNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmVuY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZW5jb2Rpbmc6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorCitlbmNvZGluZyBkZWZhdWx0cyB0byB0aGUgZGVmYXVsdCBlbmNvZGluZy4gIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEKK2RpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZworZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJworYW5kICdiYWNrc2xhc2hyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aAorY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNvZGVjX2VuY29kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWMwNzNmNjIyNDljOGQ3YyBpbnB1dD0yNDQwZDc2OWRmMDIwYTBlXSovCiB7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98c3M6ZW5jb2RlIiwgJnYsICZlbmNvZGluZywgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KLSAgICByZXR1cm4gUHlDb2RlY19FbmNvZGUodiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5Q29kZWNfRW5jb2RlKG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKLVB5RG9jX1NUUlZBUihkZWNvZGVfX2RvY19fLAotImRlY29kZShvYmosIFtlbmNvZGluZ1ssZXJyb3JzXV0pIC0+IG9iamVjdFxuXAotXG5cCi1EZWNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIGVuY29kaW5nIGRlZmF1bHRzXG5cCi10byB0aGUgZGVmYXVsdCBlbmNvZGluZy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3JcblwKLWhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlXG5cCi1hIFZhbHVlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJ1xuXAotYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXNcblwKLWFibGUgdG8gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5kZWNvZGUKKyAgICBvYmo6IG9iamVjdAorICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJzdHJpY3QiCisKK0RlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KKworZW5jb2RpbmcgZGVmYXVsdHMgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhCitkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcKK2Vycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScKK2FuZCAnYmFja3NsYXNocmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGgKK2NvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb2RlY19kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4MWNiZjYxODlhN2Y4NzggaW5wdXQ9YTM1MWU1ZjViYWFkMTU0NF0qLwogewotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHNzOmRlY29kZSIsICZ2LCAmZW5jb2RpbmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIAogICAgIC8qIERlY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgcmV0dXJuIFB5Q29kZWNfRGVjb2RlKHYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeUNvZGVjX0RlY29kZShvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTE0OSwzNyArMTUzLDkgQEAKIFB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX18sCi0iX2ZvcmdldF9jb2RlYygkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKLSItLVxuIgotIlxuIgotIlB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUiKTsKLQotI2RlZmluZSBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGICAgIFwKLSAgICB7Il9mb3JnZXRfY29kZWMiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19fZm9yZ2V0X2NvZGVjLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19fZm9yZ2V0X2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzOl9mb3JnZXRfY29kZWMiLAotICAgICAgICAmZW5jb2RpbmcpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3NWU2MzE1OTE3MDJhNWMgaW5wdXQ9MThkNWQ5MmQwZTM4NmMzOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1NmE5Yjk5ZDJkMjgwODAgaW5wdXQ9MThkNWQ5MmQwZTM4NmMzOF0qLwogewogICAgIGlmIChfUHlDb2RlY19Gb3JnZXQoZW5jb2RpbmcpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4OCw0OCArMTY0LDQ5IEBACiB9CiAKIHN0YXRpYwotUHlPYmplY3QgKmNvZGVjX3R1cGxlKFB5T2JqZWN0ICp1bmljb2RlLAorUHlPYmplY3QgKmNvZGVjX3R1cGxlKFB5T2JqZWN0ICpkZWNvZGVkLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIk9uIiwgdW5pY29kZSwgbGVuKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5uIiwgZGVjb2RlZCwgbGVuKTsKIH0KIAogLyogLS0tIFN0cmluZyBjb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi1zdGF0aWMgUHlPYmplY3QgKgotZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICpkYXRhOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZXNjYXBlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcihhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfHo6ZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhLCAmc2l6ZSwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0RlY29kZUVzY2FwZShkYXRhLCBzaXplLCBlcnJvcnMsIDAsIE5VTEwpLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjQ4ZmEzZTc4ZDAzZTY1OCBpbnB1dD0wMDE4ZWRmZDk5ZGI3MTRkXSovCit7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeUJ5dGVzX0RlY29kZUVzY2FwZShkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgMCwgTlVMTCk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZXNjYXBlX2VuY29kZQorICAgIGRhdGE6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5Qnl0ZXNfVHlwZScpCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mY2Q2ZjM0ZmU0MTExYzUwIGlucHV0PWRhOWRlZDAwOTkyZjMyZjJdKi8KIHsKLSAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBQeU9iamVjdCAqdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3RyKTsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShkYXRhKTsKICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJzdHJpbmcgaXMgdG9vIGxhcmdlIHRvIGVuY29kZSIpOwpAQCAtMjQ5LDcgKzIyNiw3IEBACiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZSAqLwogICAgICAgICAgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpKSA+PSA0KTsKLSAgICAgICAgICAgIGMgPSBQeUJ5dGVzX0FTX1NUUklORyhzdHIpW2ldOworICAgICAgICAgICAgYyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRhdGEpW2ldOwogICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJyB8fCBjID09ICdcXCcpCiAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOwogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQpAQCAtMjc3LDE4ICsyNTQsMTggQEAKIH0KIAogLyogLS0tIERlY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlCisgICAgb2JqOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2ludGVybmFsX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmZTQ3YzJjZDg4MDdkOTIgaW5wdXQ9OGQ1NzkzMGFlZGExNzBjNl0qLwogewotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iaiwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMwOSwxMjAgKzI4NiwxMDkgQEAKICAgICB9CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzdfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzdfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhOTQ1ZTkwN2U3MmU4MjcgaW5wdXQ9YmM0ZDYyNDdlY2RiMDFlNl0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47Ci0KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfOF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfOF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzA5ZjlmZjRlZjVjOWI2IGlucHV0PTM5MTYxZDcxZTc0MjJlZTJdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8xNl9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkMmZhMDUwN2Q5YmVmMmMgaW5wdXQ9ZjNjZjAxZDE0NjEwMDdjZV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IDA7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47IC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlb3JkZXIsIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZieXRlb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2xlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8xNl9sZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZkNjIxNTE1ZWY0Y2UxOCBpbnB1dD1hNzdlM2JmOTczMzVkOTRlXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gLTE7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2xlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47IC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9iZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfYmVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5MmY0ZWFjYjNlMWZhMDUgaW5wdXQ9NjA2ZjY5ZmFlOTFiNTU2M10qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IDE7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2JlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47IC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCkBAIC00MzMsOTggKzM5OSw5NCBAQAogICAgYmVpbmcgdGhlIHZhbHVlIGluIGVmZmVjdCBhdCB0aGUgZW5kIG9mIGRhdGEuCiAKICovCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9leF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBieXRlb3JkZXI6IGludCA9IDAKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfZXhfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxMzZhMTg2ZGMyZGVmYTAgaW5wdXQ9ZjZlN2Y2OTc2NThjMDEzZV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGUsICp0dXBsZTsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CisgICAgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzE2X2V4X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiT25pIiwgdW5pY29kZSwgY29uc3VtZWQsIGJ5dGVvcmRlcik7Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgIHJldHVybiB0dXBsZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8zMl9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAwOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZieXRlb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObmkiLCBkZWNvZGVkLCBjb25zdW1lZCwgYnl0ZW9yZGVyKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMzJfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjc2MzVlNTU4NTdlOGVmYiBpbnB1dD04NmQ0ZjQxYzZjMmU3NjNkXSovCit7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisgICAgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZieXRlb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2xlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8zMl9sZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTc5ZDE3ODdkOGRkZjk4OCBpbnB1dD1kMThiNjUwNzcyZDE4OGJhXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gLTE7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfbGVfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47IC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlb3JkZXIsIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZieXRlb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfYmVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAxOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2JlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2JlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4MzU2YjBmMzY3Nzk5ODEgaW5wdXQ9MTljMjcxYjVkMzQ5MjZkOF0qLworeworICAgIGludCBieXRlb3JkZXIgPSAxOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCkBAIC01MzUsMTY3ICs0OTcsMTU3IEBACiAgICBiZWluZyB0aGUgdmFsdWUgaW4gZWZmZWN0IGF0IHRoZSBlbmQgb2YgZGF0YS4KIAogKi8KKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2V4X2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJ5dGVvcmRlcjogaW50ID0gMAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8zMl9leF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWI4YzcwOTc3YzE5OTJmNSBpbnB1dD00YWYzZTZjY2ZlMzRhMDc2XSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMDsKLSAgICBQeU9iamVjdCAqdW5pY29kZSwgKnR1cGxlOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZieXRlb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47IC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlb3JkZXIsIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJPbmkiLCB1bmljb2RlLCBjb25zdW1lZCwgYnl0ZW9yZGVyKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgcmV0dXJuIHR1cGxlOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObmkiLCBkZWNvZGVkLCBjb25zdW1lZCwgYnl0ZW9yZGVyKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2VzY2FwZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxYWE2M2YyNjIwYzQ5OTkgaW5wdXQ9NDlmZDI3ZDA2ODEzYTdmNV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnVuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcihhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJmOTZjYzE4MmQ4MTM3OSBpbnB1dD03NzA5MDNhMjExNDM0ZWJjXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejpyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgcmV0dXJuIGNvZGVjX3R1cGxlKHVuaWNvZGUsIHBidWYubGVuKTsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgZGF0YS0+bGVuKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5sYXRpbl8xX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxhdGluXzFfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2xhdGluXzFfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NmI5MTZmNTA1NWFhZjEzIGlucHV0PTVjYWQwZjE3NTljNjE4ZWNdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmxhdGluXzFfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShkYXRhLT5idWYsIGRhdGEtPmxlbiwgZXJyb3JzKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgZGF0YS0+bGVuKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5hc2NpaV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hc2NpaV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMjEzYTFiNWNkYWZjNjUgaW5wdXQ9YWQxMTA2ZjY0MDM3YmQxNl0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIFB5T2JqZWN0ICp1bmljb2RlOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6YXNjaWlfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoZGF0YS0+YnVmLCBkYXRhLT5sZW4sIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1jaGFybWFwX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIFB5T2JqZWN0ICp1bmljb2RlOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jaGFybWFwX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG1hcHBpbmc6IG9iamVjdCA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHpPOmNoYXJtYXBfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZtYXBwaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3ZDI3ZjM2NTA5OGJiYWUgaW5wdXQ9MTk3MTJjYTM1YzVhODBlMl0qLworeworICAgIFB5T2JqZWN0ICpkZWNvZGVkOworCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUNoYXJtYXAocGJ1Zi5idWYsIHBidWYubGVuLCBtYXBwaW5nLCBlcnJvcnMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CisgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBtYXBwaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCiAjaWZkZWYgSEFWRV9NQkNTCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubWJjc19kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmNzX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZWJhZjNhNWIyMGU1M2ZhIGlucHV0PWQ0OTJjMWNhNjRmNGZhOGFdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOm1iY3NfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47Ci0KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgZXJyb3JzLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuY29kZV9wYWdlX2RlY29kZQorICAgIGNvZGVwYWdlOiBpbnQKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1jb2RlX3BhZ2VfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZGF0YSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDMxOGUzZDk5NzFlMzFiYSBpbnB1dD00ZjMxNTJhMzA0ZTIxZDUxXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOwotICAgIGludCBjb2RlX3BhZ2U7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Knx6aTpjb2RlX3BhZ2VfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47Ci0KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoY29kZV9wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoY29kZXBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIApAQCAtNzAzLDQzICs2NTUsMzkgQEAKIAogLyogLS0tIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MucmVhZGJ1ZmZlcl9lbmNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcmVhZGJ1ZmZlcl9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxOWNjMjQwODMyOTk4NTkgaW5wdXQ9YjdjMzIyYjg5ZDRhYjkyM10qLwogewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjb25zdCBjaGFyICpkYXRhOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGRhdGEsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIHNpemUgPSBwZGF0YS5sZW47Ci0KLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIHNpemUpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUocmVzdWx0LCBzaXplKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLT5idWYsIGRhdGEtPmxlbik7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKHJlc3VsdCwgZGF0YS0+bGVuKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9iajsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2ludGVybmFsX2VuY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlMDg0NTcwNjhhZDUwM2IgaW5wdXQ9ODYyOGYwMjgwY2Y1YmE2MV0qLworewogICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAxKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvYmosICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICBQeV9VTklDT0RFICp1OwogICAgICAgICBQeV9zc2l6ZV90IGxlbiwgc2l6ZTsKQEAgLTc1MCw3ICs2OTgsNyBAQAogICAgICAgICB1ID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUob2JqLCAmbGVuKTsKICAgICAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgICAgIGlmICgoc2l6ZV90KWxlbiA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpCiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgc2l6ZSA9IGxlbiAqIHNpemVvZihQeV9VTklDT0RFKTsKICAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXUsIHNpemUpLApAQCAtNzYxLDIyICs3MDksMjYgQEAKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gY29kZWNfdHVwbGUoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh2aWV3LmJ1Ziwgdmlldy5sZW4pLCB2aWV3Lmxlbik7CisgICAgICAgIHJlc3VsdCA9IGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUodmlldy5idWYsIHZpZXcubGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5sZW4pOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfN19lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfN19lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl83X2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hN2FjY2M0OTZhMzJiNzU5IGlucHV0PWZkOTFhNzhmMTAzYjA0MjFdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtNzg5LDE2ICs3NDEsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl84X2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl84X2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzhfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjODMxZDgwZTdhZWRlZGUgaW5wdXQ9MmMyMmQ0MDUzMmYwNzFmM10qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04MTgsMTcgKzc3MywyMCBAQAogCiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJ5dGVvcmRlcjogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMTZfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTNhYzU4ZTk2MGE5ZWU0ZCBpbnB1dD0zOTM1YTQ4OWIyZDUzODVlXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTg0MSwxNiArNzk5LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfbGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfbGVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfbGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDIyYmVkYjhkYTM0ZmI2NiBpbnB1dD1iYzI3ZGYwNWQxZDIwZGZlXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTg2MywxNiArODI0LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfYmVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfYmVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2FhN2VlOTUwMmFjZGQ3NyBpbnB1dD01YTY5ZDQxMTI3NjM0NjJiXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTg5MiwxNyArODU2LDIwIEBACiAKICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTdkNWEwMDNiMDJiYWVkIGlucHV0PTQzNGExZWZhNDkyYjhkNThdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtOTE1LDE2ICs4ODIsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8zMl9sZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9sZV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9sZV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZGRhNjQxY2QzM2RiZmMyIGlucHV0PWRmYTJkN2RjNzhiOTk0MjJdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtOTM3LDE2ICs5MDcsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8zMl9iZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9iZV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jY2NhOGI0NGQ5MWE3YzdhIGlucHV0PTQ1OTU2MTdiMTgxNjkwMDJdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtOTU5LDE2ICs5MzIsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4OWYyM2QyYjhmOGQ4MGIgaW5wdXQ9ODI3MzUwNmYxNDA3NjkxMl0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC05ODEsMTYgKzk1NywxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWM0ZTM5ZDZlYzM3YTYyIGlucHV0PTE4MTc1NWQ1ZGZhY2VmM2NdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtMTAwMywxNiArOTgyLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sYXRpbl8xX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmxhdGluXzFfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpsYXRpbl8xX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWNmMDBlYjhlNDhjODg5YyBpbnB1dD1mMDNmNmRjZjFkODRiZWU0XSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTEwMjUsMTYgKzEwMDcsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWFzY2lpX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5hc2NpaV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmFzY2lpX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOWQxOGZjNmI2YjkxY2ZiIGlucHV0PWQ4N2UyNWExMGE1OTNmZWVdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtMTA0NywxNyArMTAzMiwyMSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotY2hhcm1hcF9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmNoYXJtYXBfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBtYXBwaW5nOiBvYmplY3QgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHpPOmNoYXJtYXBfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycywgJm1hcHBpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0Y2E0MmI4Mzg1M2M2NDMgaW5wdXQ9ODVmNDE3MjY2MWU4ZGFkOV0qLworeworICAgIFB5T2JqZWN0ICp2OworCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKQEAgLTEwNzIsMjcgKzEwNjEsMzQgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotY2hhcm1hcF9idWlsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmNoYXJtYXBfYnVpbGQKKyAgICBtYXA6IHVuaWNvZGUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbWFwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0ODViNThmYTQ0YWZhNmEgaW5wdXQ9ZDkxYTkxZDE3MTdkYmM2ZF0qLwogewotICAgIFB5T2JqZWN0ICptYXA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKICNpZmRlZiBIQVZFX01CQ1MKIAotc3RhdGljIFB5T2JqZWN0ICoKLW1iY3NfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubWJjc19lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6Om1iY3NfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMWEwMTNiYzY4Nzk4YmQ3IGlucHV0PTY1YzA5ZWUxZTQyMDMyNjNdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtMTEwNSwxNyArMTEwMSwyMCBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotY29kZV9wYWdlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgY29kZV9wYWdlOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlCisgICAgY29kZV9wYWdlOiBpbnQKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2I0MDY2MThkYmZiY2UyNSBpbnB1dD1jODU2MmVjNDYwYzJlMzA5XSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTExMzQsOTkgKzExMzMsOTQgQEAKIAogLyogLS0tIEVycm9yIGhhbmRsZXIgcmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5RG9jX1NUUlZBUihyZWdpc3Rlcl9lcnJvcl9fZG9jX18sCi0icmVnaXN0ZXJfZXJyb3IoZXJyb3JzLCBoYW5kbGVyKVxuXAotXG5cCi1SZWdpc3RlciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsZXIgdW5kZXIgdGhlIG5hbWVcblwKLWVycm9ycy4gaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0LCB0aGF0XG5cCi13aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBjb250YWluaW5nXG5cCi1pbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nXG5cCi1lcnJvciBhbmQgbXVzdCByZXR1cm4gYSAocmVwbGFjZW1lbnQsIG5ldyBwb3NpdGlvbikgdHVwbGUuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJlZ2lzdGVyX2Vycm9yCisgICAgZXJyb3JzOiBzdHIKKyAgICBoYW5kbGVyOiBvYmplY3QKKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCAqcmVnaXN0ZXJfZXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmVnaXN0ZXIgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGVyIHVuZGVyIHRoZSBuYW1lIGVycm9ycy4KKworaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCitpbnN0YW5jZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5jb2RpbmcvZGVjb2RpbmcKK2Vycm9yIGFuZCBtdXN0IHJldHVybiBhIChyZXBsYWNlbWVudCwgbmV3IHBvc2l0aW9uKSB0dXBsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhhbmRsZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUwMGQzYjE4NDljZTY4YSBpbnB1dD01ZTY3MDkyMDNjMmUzM2ZlXSovCiB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqaGFuZGxlcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086cmVnaXN0ZXJfZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgJmhhbmRsZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlDb2RlY19SZWdpc3RlckVycm9yKG5hbWUsIGhhbmRsZXIpKQorICAgIGlmIChQeUNvZGVjX1JlZ2lzdGVyRXJyb3IoZXJyb3JzLCBoYW5kbGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihsb29rdXBfZXJyb3JfX2RvY19fLAotImxvb2t1cF9lcnJvcihlcnJvcnMpIC0+IGhhbmRsZXJcblwKLVxuXAotUmV0dXJuIHRoZSBlcnJvciBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsaW5nIG5hbWVcblwKLW9yIHJhaXNlIGEgTG9va3VwRXJyb3IsIGlmIG5vIGhhbmRsZXIgZXhpc3RzIHVuZGVyIHRoaXMgbmFtZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubG9va3VwX2Vycm9yCisgICAgbmFtZTogc3RyCisgICAgLwogCi1zdGF0aWMgUHlPYmplY3QgKmxvb2t1cF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyCisKK1JldHVybiB0aGUgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGluZyBuYW1lIG9yIHJhaXNlIGEKK0xvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMxZTZkZjhjODNjNjE1OCBpbnB1dD00Nzc1ZGQ2NWU2MjM1YWJhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpsb29rdXBfZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUNvZGVjX0xvb2t1cEVycm9yKG5hbWUpOwogfQogCiAvKiAtLS0gTW9kdWxlIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9jb2RlY3NfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJyZWdpc3RlciIsICAgICAgICAgICAgICAgIGNvZGVjX3JlZ2lzdGVyLCAgICAgICAgICAgICAgICAgTUVUSF9PLAotICAgICAgICByZWdpc3Rlcl9fZG9jX199LAotICAgIHsibG9va3VwIiwgICAgICAgICAgICAgICAgICBjb2RlY19sb29rdXAsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgbG9va3VwX19kb2NfX30sCi0gICAgeyJlbmNvZGUiLCAgICAgICAgICAgICAgICAgIGNvZGVjX2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBlbmNvZGVfX2RvY19ffSwKLSAgICB7ImRlY29kZSIsICAgICAgICAgICAgICAgICAgY29kZWNfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGRlY29kZV9fZG9jX199LAotICAgIHsiZXNjYXBlX2VuY29kZSIsICAgICAgICAgICBlc2NhcGVfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJlc2NhcGVfZGVjb2RlIiwgICAgICAgICAgIGVzY2FwZV9kZWNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl84X2VuY29kZSIsICAgICAgICAgICAgdXRmXzhfZW5jb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzhfZGVjb2RlIiwgICAgICAgICAgICB1dGZfOF9kZWNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfN19lbmNvZGUiLCAgICAgICAgICAgIHV0Zl83X2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl83X2RlY29kZSIsICAgICAgICAgICAgdXRmXzdfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2VuY29kZSIsICAgICAgICAgICB1dGZfMTZfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfbGVfZW5jb2RlIiwgICAgICAgIHV0Zl8xNl9sZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9iZV9lbmNvZGUiLCAgICAgICAgdXRmXzE2X2JlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2RlY29kZSIsICAgICAgICAgICB1dGZfMTZfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfbGVfZGVjb2RlIiwgICAgICAgIHV0Zl8xNl9sZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9iZV9kZWNvZGUiLCAgICAgICAgdXRmXzE2X2JlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2V4X2RlY29kZSIsICAgICAgICB1dGZfMTZfZXhfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZW5jb2RlIiwgICAgICAgICAgIHV0Zl8zMl9lbmNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9sZV9lbmNvZGUiLCAgICAgICAgdXRmXzMyX2xlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2JlX2VuY29kZSIsICAgICAgICB1dGZfMzJfYmVfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZGVjb2RlIiwgICAgICAgICAgIHV0Zl8zMl9kZWNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9sZV9kZWNvZGUiLCAgICAgICAgdXRmXzMyX2xlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2JlX2RlY29kZSIsICAgICAgICB1dGZfMzJfYmVfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZXhfZGVjb2RlIiwgICAgICAgIHV0Zl8zMl9leF9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfZXNjYXBlX2VuY29kZSIsICAgdW5pY29kZV9lc2NhcGVfZW5jb2RlLCAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgICB1bmljb2RlX2VzY2FwZV9kZWNvZGUsICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2ludGVybmFsX2VuY29kZSIsIHVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlIiwgdW5pY29kZV9pbnRlcm5hbF9kZWNvZGUsICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsIHJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUsICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSwgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxhdGluXzFfZW5jb2RlIiwgICAgICAgICAgbGF0aW5fMV9lbmNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsibGF0aW5fMV9kZWNvZGUiLCAgICAgICAgICBsYXRpbl8xX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhc2NpaV9lbmNvZGUiLCAgICAgICAgICAgIGFzY2lpX2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImFzY2lpX2RlY29kZSIsICAgICAgICAgICAgYXNjaWlfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2hhcm1hcF9lbmNvZGUiLCAgICAgICAgICBjaGFybWFwX2VuY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjaGFybWFwX2RlY29kZSIsICAgICAgICAgIGNoYXJtYXBfZGVjb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNoYXJtYXBfYnVpbGQiLCAgICAgICAgICAgY2hhcm1hcF9idWlsZCwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAgICAgICByZWFkYnVmZmVyX2VuY29kZSwgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9NQkNTCi0gICAgeyJtYmNzX2VuY29kZSIsICAgICAgICAgICAgIG1iY3NfZW5jb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7Im1iY3NfZGVjb2RlIiwgICAgICAgICAgICAgbWJjc19kZWNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY29kZV9wYWdlX2VuY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjb2RlX3BhZ2VfZGVjb2RlIiwgICAgICAgIGNvZGVfcGFnZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgotICAgIHsicmVnaXN0ZXJfZXJyb3IiLCAgICAgICAgICByZWdpc3Rlcl9lcnJvciwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgcmVnaXN0ZXJfZXJyb3JfX2RvY19ffSwKLSAgICB7Imxvb2t1cF9lcnJvciIsICAgICAgICAgICAgbG9va3VwX2Vycm9yLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGxvb2t1cF9lcnJvcl9fZG9jX199LAorICAgIF9DT0RFQ1NfUkVHSVNURVJfTUVUSE9EREVGCisgICAgX0NPREVDU19MT09LVVBfTUVUSE9EREVGCisgICAgX0NPREVDU19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl84X0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl84X0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl83X0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl83X0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfTEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0JFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfTEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0JFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9FWF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0xFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9CRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0xFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9CRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfRVhfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9FU0NBUEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTEFUSU5fMV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19MQVRJTl8xX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0FTQ0lJX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0FTQ0lJX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NIQVJNQVBfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ0hBUk1BUF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DSEFSTUFQX0JVSUxEX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SRUdJU1RFUl9FUlJPUl9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0xPT0tVUF9FUlJPUl9NRVRIT0RERUYKICAgICBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggNjI3ZmFkNS4uYzFmZDhiOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC0xLDUwICsxLDczIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKKyNpZmRlZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgICAgICAgIC8qIEZvciBzaXplX3QgKi8KKyNlbmRpZgorCiAvKiBjb2xsZWN0aW9ucyBtb2R1bGUgaW1wbGVtZW50YXRpb24gb2YgYSBkZXF1ZSgpIGRhdGF0eXBlCiAgICBXcml0dGVuIGFuZCBtYWludGFpbmVkIGJ5IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KLSAgIENvcHlyaWdodCAoYykgMjAwNC0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgQ29weXJpZ2h0IChjKSAyMDA0LTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogKi8KIAogLyogVGhlIGJsb2NrIGxlbmd0aCBtYXkgYmUgc2V0IHRvIGFueSBudW1iZXIgb3ZlciAxLiAgTGFyZ2VyIG51bWJlcnMKICAqIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHRoZSBtZW1vcnkgYWxsb2NhdG9yLCBnaXZlIGZhc3RlcgotICogaW5kZXhpbmcgYW5kIHJvdGF0aW9uLCBhbmQgcmVkdWNlIHRoZSBsaW5rOjpkYXRhIG92ZXJoZWFkIHJhdGlvLgotICoKLSAqIElkZWFsbHksIHRoZSBibG9jayBsZW5ndGggd2lsbCBiZSBzZXQgdG8gdHdvIGxlc3MgdGhhbiBzb21lCi0gKiBtdWx0aXBsZSBvZiB0aGUgY2FjaGUtbGluZSBsZW5ndGggKHNvIHRoYXQgdGhlIGZ1bGwgYmxvY2sKLSAqIGluY2x1ZGluZyB0aGUgbGVmdGxpbmsgYW5kIHJpZ2h0bGluayB3aWxsIGZpdCBuZWF0bHkgaW50bwotICogY2FjaGUgbGluZXMpLgorICogaW5kZXhpbmcgYW5kIHJvdGF0aW9uLCBhbmQgcmVkdWNlIHRoZSBsaW5rIHRvIGRhdGEgb3ZlcmhlYWQgcmF0aW8uCisgKiBNYWtpbmcgdGhlIGJsb2NrIGxlbmd0aCBhIHBvd2VyIG9mIHR3byBzcGVlZHMtdXAgdGhlIG1vZHVsbworICogYW5kIGRpdmlzaW9uIGNhbGN1bGF0aW9ucyBpbiBkZXF1ZV9pdGVtKCkgYW5kIGRlcXVlX2Fzc19pdGVtKCkuCiAgKi8KIAotI2RlZmluZSBCTE9DS0xFTiA2MgorI2RlZmluZSBCTE9DS0xFTiA2NAogI2RlZmluZSBDRU5URVIgKChCTE9DS0xFTiAtIDEpIC8gMikKIAotLyogQSBgZGVxdWVvYmplY3RgIGlzIGNvbXBvc2VkIG9mIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGBibG9ja2Agbm9kZXMuCisvKiBEYXRhIGZvciBkZXF1ZSBvYmplY3RzIGlzIHN0b3JlZCBpbiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBmaXhlZAorICogbGVuZ3RoIGJsb2Nrcy4gIFRoaXMgYXNzdXJlcyB0aGF0IGFwcGVuZHMgb3IgcG9wcyBuZXZlciBtb3ZlIGFueQorICogb3RoZXIgZGF0YSBlbGVtZW50cyBiZXNpZGVzIHRoZSBvbmUgYmVpbmcgYXBwZW5kZWQgb3IgcG9wcGVkLgorICoKKyAqIEFub3RoZXIgYWR2YW50YWdlIGlzIHRoYXQgaXQgY29tcGxldGVseSBhdm9pZHMgdXNlIG9mIHJlYWxsb2MoKSwKKyAqIHJlc3VsdGluZyBpbiBtb3JlIHByZWRpY3RhYmxlIHBlcmZvcm1hbmNlLgorICoKKyAqIFRleHRib29rIGltcGxlbWVudGF0aW9ucyBvZiBkb3VibHktbGlua2VkIGxpc3RzIHN0b3JlIG9uZSBkYXR1bQorICogcGVyIGxpbmssIGJ1dCB0aGF0IGdpdmVzIHRoZW0gYSAyMDAlIG1lbW9yeSBvdmVyaGVhZCAoYSBwcmV2IGFuZAorICogbmV4dCBsaW5rIGZvciBlYWNoIGRhdHVtKSBhbmQgaXQgY29zdHMgb25lIG1hbGxvYygpIGNhbGwgcGVyIGRhdGEKKyAqIGVsZW1lbnQuICBCeSB1c2luZyBmaXhlZC1sZW5ndGggYmxvY2tzLCB0aGUgbGluayB0byBkYXRhIHJhdGlvIGlzCisgKiBzaWduaWZpY2FudGx5IGltcHJvdmVkIGFuZCB0aGVyZSBhcmUgcHJvcG9ydGlvbmFsbHkgZmV3ZXIgY2FsbHMKKyAqIHRvIG1hbGxvYygpIGFuZCBmcmVlKCkuICBUaGUgZGF0YSBibG9ja3Mgb2YgY29uc2VjdXRpdmUgcG9pbnRlcnMKKyAqIGFsc28gaW1wcm92ZSBjYWNoZSBsb2NhbGl0eS4KKyAqCiAgKiBUaGUgbGlzdCBvZiBibG9ja3MgaXMgbmV2ZXIgZW1wdHksIHNvIGQubGVmdGJsb2NrIGFuZCBkLnJpZ2h0YmxvY2sKICAqIGFyZSBuZXZlciBlcXVhbCB0byBOVUxMLiAgVGhlIGxpc3QgaXMgbm90IGNpcmN1bGFyLgogICoKICAqIEEgZGVxdWUgZCdzIGZpcnN0IGVsZW1lbnQgaXMgYXQgZC5sZWZ0YmxvY2tbbGVmdGluZGV4XQogICogYW5kIGl0cyBsYXN0IGVsZW1lbnQgaXMgYXQgZC5yaWdodGJsb2NrW3JpZ2h0aW5kZXhdLgotICogVW5saWtlIFB5dGhvbiBzbGljZSBpbmRpY2VzLCB0aGVzZSBpbmRpY2VzIGFyZSBpbmNsdXNpdmUKLSAqIG9uIGJvdGggZW5kcy4gIFRoaXMgbWFrZXMgdGhlIGFsZ29yaXRobXMgZm9yIGxlZnQgYW5kCi0gKiByaWdodCBvcGVyYXRpb25zIG1vcmUgc3ltbWV0cmljYWwgYW5kIHNpbXBsaWZpZXMgdGhlIGRlc2lnbi4KICAqCi0gKiBUaGUgaW5kaWNlcywgZC5sZWZ0aW5kZXggYW5kIGQucmlnaHRpbmRleCBhcmUgYWx3YXlzIGluIHRoZSByYW5nZQotICogICAgIDAgPD0gaW5kZXggPCBCTE9DS0xFTi4KLSAqIFRoZWlyIGV4YWN0IHJlbGF0aW9uc2hpcCBpczoKLSAqICAgICAoZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEpICUgQkxPQ0tMRU4gPT0gZC5yaWdodGluZGV4LgorICogVW5saWtlIFB5dGhvbiBzbGljZSBpbmRpY2VzLCB0aGVzZSBpbmRpY2VzIGFyZSBpbmNsdXNpdmUgb24gYm90aAorICogZW5kcy4gIFRoaXMgbWFrZXMgdGhlIGFsZ29yaXRobXMgZm9yIGxlZnQgYW5kIHJpZ2h0IG9wZXJhdGlvbnMKKyAqIG1vcmUgc3ltbWV0cmljYWwgYW5kIGl0IHNpbXBsaWZpZXMgdGhlIGRlc2lnbi4KICAqCi0gKiBFbXB0eSBkZXF1ZXMgaGF2ZSBkLmxlbiA9PSAwOyBkLmxlZnRibG9jaz09ZC5yaWdodGJsb2NrOwotICogZC5sZWZ0aW5kZXggPT0gQ0VOVEVSKzE7IGFuZCBkLnJpZ2h0aW5kZXggPT0gQ0VOVEVSLgorICogVGhlIGluZGljZXMsIGQubGVmdGluZGV4IGFuZCBkLnJpZ2h0aW5kZXggYXJlIGFsd2F5cyBpbiB0aGUgcmFuZ2U6CisgKiAgICAgMCA8PSBpbmRleCA8IEJMT0NLTEVOCisgKgorICogQW5kIHRoZWlyIGV4YWN0IHJlbGF0aW9uc2hpcCBpczoKKyAqICAgICAoZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEpICUgQkxPQ0tMRU4gPT0gZC5yaWdodGluZGV4CisgKgorICogV2hlbmV2ZXIgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrLCB0aGVuOgorICogICAgIGQubGVmdGluZGV4ICsgZC5sZW4gLSAxID09IGQucmlnaHRpbmRleAorICoKKyAqIEhvd2V2ZXIsIHdoZW4gZC5sZWZ0YmxvY2sgIT0gZC5yaWdodGJsb2NrLCB0aGUgZC5sZWZ0aW5kZXggYW5kCisgKiBkLnJpZ2h0aW5kZXggYmVjb21lIGluZGljZXMgaW50byBkaXN0aW5jdCBibG9ja3MgYW5kIGVpdGhlciBtYXkKKyAqIGJlIGxhcmdlciB0aGFuIHRoZSBvdGhlci4KKyAqCisgKiBFbXB0eSBkZXF1ZXMgaGF2ZToKKyAqICAgICBkLmxlbiA9PSAwCisgKiAgICAgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrCisgKiAgICAgZC5sZWZ0aW5kZXggPT0gQ0VOVEVSICsgMQorICogICAgIGQucmlnaHRpbmRleCA9PSBDRU5URVIKKyAqCiAgKiBDaGVja2luZyBmb3IgZC5sZW4gPT0gMCBpcyB0aGUgaW50ZW5kZWQgd2F5IHRvIHNlZSB3aGV0aGVyIGQgaXMgZW1wdHkuCi0gKgotICogV2hlbmV2ZXIgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrLAotICogICAgIGQubGVmdGluZGV4ICsgZC5sZW4gLSAxID09IGQucmlnaHRpbmRleC4KLSAqCi0gKiBIb3dldmVyLCB3aGVuIGQubGVmdGJsb2NrICE9IGQucmlnaHRibG9jaywgZC5sZWZ0aW5kZXggYW5kIGQucmlnaHRpbmRleAotICogYmVjb21lIGluZGljZXMgaW50byBkaXN0aW5jdCBibG9ja3MgYW5kIGVpdGhlciBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlCi0gKiBvdGhlci4KICAqLwogCiB0eXBlZGVmIHN0cnVjdCBCTE9DSyB7CkBAIC01Myw2ICs3NiwxOSBAQAogICAgIHN0cnVjdCBCTE9DSyAqcmlnaHRsaW5rOwogfSBibG9jazsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X1ZBUl9IRUFECisgICAgYmxvY2sgKmxlZnRibG9jazsKKyAgICBibG9jayAqcmlnaHRibG9jazsKKyAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsgICAgICAgLyogMCA8PSBsZWZ0aW5kZXggPCBCTE9DS0xFTiAqLworICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleDsgICAgICAvKiAwIDw9IHJpZ2h0aW5kZXggPCBCTE9DS0xFTiAqLworICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnRlZCB3aGVuZXZlciB0aGUgaW5kaWNlcyBtb3ZlICovCisgICAgUHlfc3NpemVfdCBtYXhsZW47CisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworfSBkZXF1ZW9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZV90eXBlOworCiAvKiBGb3IgZGVidWcgYnVpbGRzLCBhZGQgZXJyb3IgY2hlY2tpbmcgdG8gdHJhY2sgdGhlIGVuZHBvaW50cwogICogaW4gdGhlIGNoYWluIG9mIGxpbmtzLiAgVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoYXQgbGluawogICogYXNzaWdubWVudHMgb25seSB0YWtlIHBsYWNlIGF0IGVuZHBvaW50cyBzbyB0aGF0IGxpbmtzIGFscmVhZHkKQEAgLTc0LDggKzExMCwxNCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAorLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCisgICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgorKi8KKworI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCisKIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKLSAgIGFsbG9jYXRvci4gIEl0IGFjY29tb2RhdGVzIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbmV3IGJsb2NrcyBhcmUgYmVpbmcKKyAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKQEAgLTg2LDkgKzEyOCw3IEBACiBzdGF0aWMgYmxvY2sgKgogbmV3YmxvY2soUHlfc3NpemVfdCBsZW4pIHsKICAgICBibG9jayAqYjsKLSAgICAvKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYLCB3ZSByZWZ1c2UgdG8KLSAgICAgKiBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LiAqLwotICAgIGlmIChsZW4gPj0gUFlfU1NJWkVfVF9NQVggLSAyKkJMT0NLTEVOKSB7CisgICAgaWYgKGxlbiA+PSBNQVhfREVRVUVfTEVOKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBibG9ja3MgdG8gdGhlIGRlcXVlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2LDM0ICsxNTYsMTEgQEAKICAgICB9CiB9CiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9WQVJfSEVBRAotICAgIGJsb2NrICpsZWZ0YmxvY2s7Ci0gICAgYmxvY2sgKnJpZ2h0YmxvY2s7Ci0gICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIGluIHJhbmdlKEJMT0NLTEVOKSAqLwotICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleDsgICAgICAvKiBpbiByYW5nZShCTE9DS0xFTikgKi8KLSAgICBsb25nIHN0YXRlOyAgICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOwotICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KLX0gZGVxdWVvYmplY3Q7Ci0KLS8qIFRoZSBkZXF1ZSdzIHNpemUgbGltaXQgaXMgZC5tYXhsZW4uICBUaGUgbGltaXQgY2FuIGJlIHplcm8gb3IgcG9zaXRpdmUuCi0gKiBJZiB0aGVyZSBpcyBubyBsaW1pdCwgdGhlbiBkLm1heGxlbiA9PSAtMS4KLSAqCi0gKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMgZ3Jvd24gcGFzdAotICogdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0IGJ5IHBvcHBpbmcgYW4KLSAqIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLAotICogYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KLSAqLwotCi0jZGVmaW5lIFRSSU0oZCwgcG9wZnVuY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChkLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkKSA+IGQtPm1heGxlbikgeyAgICAgICBcCi0gICAgICAgIFB5T2JqZWN0ICpydiA9IHBvcGZ1bmN0aW9uKGQsIE5VTEwpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGFzc2VydChydiAhPSBOVUxMICAmJiAgUHlfU0laRShkKSA8PSBkLT5tYXhsZW4pOyAgICBcCi0gICAgICAgIFB5X0RFQ1JFRihydik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlX3R5cGU7CisvKiBYWFggVG9kbzoKKyAgIElmIGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb25zIGJlY29tZSBhdmFpbGFibGUsIG1ha2UgdGhlCisgICBkZXF1ZSBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgYWxsIG9mIHRoZSBmaWVsZHMKKyAgIGNhbiBiZSByZXRyaWV2ZWQgb3IgdXBkYXRlZCBpbiBhIHNpbmdsZSBjYWNoZSBsaW5lLgorKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKQEAgLTE2NSwxNCArMTgyLDE0IEBACiAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKIAogICAgIGFzc2VydChCTE9DS0xFTiA+PSAyKTsKKyAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CiAgICAgZGVxdWUtPmxlZnRibG9jayA9IGI7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOwogICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwogICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgIFB5X1NJWkUoZGVxdWUpID0gMDsKICAgICBkZXF1ZS0+c3RhdGUgPSAwOwotICAgIGRlcXVlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAgICAgZGVxdWUtPm1heGxlbiA9IC0xOworICAgIGRlcXVlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CkBAIC0xOTMsMTMgKzIxMCw3IEBACiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOwotICAgICAgICAgICAgLyogcmUtY2VudGVyIGluc3RlYWQgb2YgZnJlZWluZyBhIGJsb2NrICovCi0gICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKLSAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgICAgIHByZXZibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKICAgICAgICAgICAgIGZyZWVibG9jayhkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC0yMDcsNiArMjE4LDEyIEBACiAgICAgICAgICAgICBNQVJLX0VORChwcmV2YmxvY2stPnJpZ2h0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IHByZXZibG9jazsKICAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQkxPQ0tMRU4gLSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7CisgICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KKyAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGl0ZW07CkBAIC0yMzEsMTMgKzI0OCw3IEBACiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSBCTE9DS0xFTikgewotICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7Ci0gICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KLSAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwotICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPmxlZnRibG9jay0+cmlnaHRsaW5rOwogICAgICAgICAgICAgZnJlZWJsb2NrKGRlcXVlLT5sZWZ0YmxvY2spOwpAQCAtMjQ1LDYgKzI1NiwxMiBAQAogICAgICAgICAgICAgTUFSS19FTkQocHJldmJsb2NrLT5sZWZ0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrID0gcHJldmJsb2NrOwogICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKKyAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLworICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7CisgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaXRlbTsKQEAgLTI1MiwxMSArMjY5LDQyIEBACiAKIFB5RG9jX1NUUlZBUihwb3BsZWZ0X2RvYywgIlJlbW92ZSBhbmQgcmV0dXJuIHRoZSBsZWZ0bW9zdCBlbGVtZW50LiIpOwogCisvKiBUaGUgZGVxdWUncyBzaXplIGxpbWl0IGlzIGQubWF4bGVuLiAgVGhlIGxpbWl0IGNhbiBiZSB6ZXJvIG9yIHBvc2l0aXZlLgorICogSWYgdGhlcmUgaXMgbm8gbGltaXQsIHRoZW4gZC5tYXhsZW4gPT0gLTEuCisgKgorICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzIGdyb3duIHBhc3QKKyAqIHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdCBieSBwb3BwaW5nIGFuCisgKiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwKKyAqIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCisgKi8KKworc3RhdGljIHZvaWQKK2RlcXVlX3RyaW1fcmlnaHQoZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgeworICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7CisgICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKKyAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitkZXF1ZV90cmltX2xlZnQoZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgeworICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOworICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7CisgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgfQorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgZGVxdWUtPnN0YXRlKys7Ci0gICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOLTEpIHsKKyAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CiAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzEsNyArMzE5LDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3BsZWZ0KTsKKyAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0yOTYsNyArMzQ0LDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3ApOworICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0zNTIsNyArNDAwLDcgQEAKIAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKLSAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOLTEpIHsKKyAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewogICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwpAQCAtMzY5LDcgKzQxNyw3IEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcGxlZnQpOworICAgICAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOwogICAgIH0KICAgICBQeV9ERUNSRUYoaXQpOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtNDMwLDcgKzQ3OCw3IEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcCk7CisgICAgICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOwogICAgIH0KICAgICBQeV9ERUNSRUYoaXQpOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtNDU0LDYgKzUwMiwxNDYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfY29uY2F0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKm90aGVyKQoreworICAgIFB5T2JqZWN0ICpuZXdfZGVxdWUsICpyZXN1bHQ7CisgICAgaW50IHJ2OworCisgICAgcnYgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG90aGVyLCAoUHlPYmplY3QgKikmZGVxdWVfdHlwZSk7CisgICAgaWYgKHJ2IDw9IDApIHsKKyAgICAgICAgaWYgKHJ2ID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGNvbmNhdGVuYXRlIGRlcXVlIChub3QgXCIlLjIwMHNcIikgdG8gZGVxdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZXdfZGVxdWUgPSBkZXF1ZV9jb3B5KChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZCgoZGVxdWVvYmplY3QgKiluZXdfZGVxdWUsIG90aGVyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbmV3X2RlcXVlOworfQorCitzdGF0aWMgdm9pZCBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQoreworICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFhYWCBhZGQgYSBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gbWF4bGVuIGlzIGRlZmluZWQgKi8KKyAgICBpZiAobiA8IDApCisgICAgICAgIG4gPSAwOworICAgIGVsc2UgaWYgKG4gPiAwICYmIFB5X1NJWkUoZGVxdWUpID4gTUFYX0RFUVVFX0xFTiAvIG4pCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfbmV3KCZkZXF1ZV90eXBlLCAoUHlPYmplY3QgKilOVUxMLCAoUHlPYmplY3QgKilOVUxMKTsKKyAgICBuZXdfZGVxdWUtPm1heGxlbiA9IGRlcXVlLT5tYXhsZW47CisKKyAgICBmb3IgKCA7IG4gOyBuLS0pIHsKKyAgICAgICAgcmVzdWx0ID0gZGVxdWVfZXh0ZW5kKG5ld19kZXF1ZSwgKFB5T2JqZWN0ICopZGVxdWUpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfZGVxdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9pbnBsYWNlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK3sKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBQeU9iamVjdCAqcnY7CisKKyAgICBzaXplID0gUHlfU0laRShkZXF1ZSk7CisgICAgaWYgKHNpemUgPT0gMCB8fCBuID09IDEpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOworICAgIH0KKworICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgZGVxdWVfY2xlYXIoZGVxdWUpOworICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CisgICAgfQorCisgICAgaWYgKHNpemUgPiBNQVhfREVRVUVfTEVOIC8gbikgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIC8qIGNvbW1vbiBjYXNlLCByZXBlYXRpbmcgYSBzaW5nbGUgZWxlbWVudCAqLworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF07CisKKyAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCisgICAgICAgICAgICBuID0gZGVxdWUtPm1heGxlbjsKKworICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7IGkrKykgeworICAgICAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQoZGVxdWUsIGl0ZW0pOworICAgICAgICAgICAgaWYgKHJ2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKKyAgICB9CisKKyAgICBzZXEgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopZGVxdWUpOworICAgIGlmIChzZXEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHNlcTsKKworICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgaSsrKSB7CisgICAgICAgIHJ2ID0gZGVxdWVfZXh0ZW5kKGRlcXVlLCBzZXEpOworICAgICAgICBpZiAocnYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocnYpOworICAgIH0KKyAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgIFB5X0RFQ1JFRihzZXEpOworICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKK30KKworLyogVGhlIHJvdGF0ZSgpIG1ldGhvZCBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyB1c2VkIGludGVybmFsbHkKK2FzIGEgcHJpbWl0aXZlIGZvciBvdGhlciBtZXRob2RzLgorCitSb3RhdGlvbiBieSAxIG9yIC0xIGlzIGEgY29tbW9uIGNhc2UsIHNvIGFueSBvcHRpbWl6YXRpb25zIGZvciBoaWdoCit2b2x1bWUgcm90YXRpb25zIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIHBlbmFsaXplIHRoZSBjb21tb24gY2FzZS4KKworQ29uY2VwdHVhbGx5LCBhIHJvdGF0ZSBieSBvbmUgaXMgZXF1aXZhbGVudCB0byBhIHBvcCBvbiBvbmUgc2lkZSBhbmQgYW4KK2FwcGVuZCBvbiB0aGUgb3RoZXIuICBIb3dldmVyLCBhIHBvcC9hcHBlbmQgcGFpciBpcyB1bm5lY2Vzc2FyaWx5IHNsb3cKK2JlY2F1c2UgaXQgcmVxdWlyZXMgYSBpbmNyZWYvZGVjcmVmIHBhaXIgZm9yIGFuIG9iamVjdCBsb2NhdGVkIHJhbmRvbWx5CitpbiBtZW1vcnkuICBJdCBpcyBiZXR0ZXIgdG8ganVzdCBtb3ZlIHRoZSBvYmplY3QgcG9pbnRlciBmcm9tIG9uZSBibG9jawordG8gdGhlIG5leHQgd2l0aG91dCBjaGFuZ2luZyB0aGUgcmVmZXJlbmNlIGNvdW50LgorCitXaGVuIG1vdmluZyBiYXRjaGVzIG9mIHBvaW50ZXJzLCBpdCBpcyB0ZW1wdGluZyB0byB1c2UgbWVtY3B5KCkgYnV0IHRoYXQKK3Byb3ZlZCB0byBiZSBzbG93ZXIgdGhhbiBhIHNpbXBsZSBsb29wIGZvciBhIHZhcmlldHkgb2YgcmVhc29ucy4KK01lbWNweSgpIGNhbm5vdCBrbm93IGluIGFkdmFuY2UgdGhhdCB3ZSdyZSBjb3B5aW5nIHBvaW50ZXJzIGluc3RlYWQgb2YKK2J5dGVzLCB0aGF0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBwb2ludGVyIGFsaWduZWQgYW5kCitub24tb3ZlcmxhcHBpbmcsIHRoYXQgbW92aW5nIGp1c3Qgb25lIHBvaW50ZXIgaXMgYSBjb21tb24gY2FzZSwgdGhhdCB3ZQorbmV2ZXIgbmVlZCB0byBtb3ZlIG1vcmUgdGhhbiBCTE9DS0xFTiBwb2ludGVycywgYW5kIHRoYXQgYXQgbGVhc3Qgb25lCitwb2ludGVyIGlzIGFsd2F5cyBtb3ZlZC4KKworRm9yIGhpZ2ggdm9sdW1lIHJvdGF0aW9ucywgbmV3YmxvY2soKSBhbmQgZnJlZWJsb2NrKCkgYXJlIG5ldmVyIGNhbGxlZAorbW9yZSB0aGFuIG9uY2UuICBQcmV2aW91c2x5IGVtcHRpZWQgYmxvY2tzIGFyZSBpbW1lZGlhdGVseSByZXVzZWQgYXMgYQorZGVzdGluYXRpb24gYmxvY2suICBJZiBhIGJsb2NrIGlzIGxlZnQtb3ZlciBhdCB0aGUgZW5kLCBpdCBpcyBmcmVlZC4KKyovCisKIHN0YXRpYyBpbnQKIF9kZXF1ZV9yb3RhdGUoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCiB7CkBAIC01MDMsMTMgKzY5MSwxMyBAQAogICAgICAgICAgICAgaWYgKG0gPiBsZWZ0aW5kZXgpCiAgICAgICAgICAgICAgICAgbSA9IGxlZnRpbmRleDsKICAgICAgICAgICAgIGFzc2VydCAobSA+IDAgJiYgbSA8PSBsZW4pOwotICAgICAgICAgICAgc3JjID0gJnJpZ2h0YmxvY2stPmRhdGFbcmlnaHRpbmRleF07Ci0gICAgICAgICAgICBkZXN0ID0gJmxlZnRibG9jay0+ZGF0YVtsZWZ0aW5kZXggLSAxXTsKICAgICAgICAgICAgIHJpZ2h0aW5kZXggLT0gbTsKICAgICAgICAgICAgIGxlZnRpbmRleCAtPSBtOworICAgICAgICAgICAgc3JjID0gJnJpZ2h0YmxvY2stPmRhdGFbcmlnaHRpbmRleCArIDFdOworICAgICAgICAgICAgZGVzdCA9ICZsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4XTsKICAgICAgICAgICAgIG4gLT0gbTsKICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAqKGRlc3QtLSkgPSAqKHNyYy0tKTsKKyAgICAgICAgICAgICAgICAqKGRlc3QrKykgPSAqKHNyYysrKTsKICAgICAgICAgICAgIH0gd2hpbGUgKC0tbSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJpZ2h0aW5kZXggPT0gLTEpIHsKQEAgLTU4NSw3ICs3NzMsNyBAQAogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyb3RhdGUiLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChfZGVxdWVfcm90YXRlKGRlcXVlLCBuKSA9PSAwKQorICAgIGlmICghX2RlcXVlX3JvdGF0ZShkZXF1ZSwgbikpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjAwLDcgKzc4OCw3IEBACiAgICAgYmxvY2sgKnJpZ2h0YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICBQeV9zc2l6ZV90IGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4ID0gZGVxdWUtPnJpZ2h0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuID0gKFB5X1NJWkUoZGVxdWUpKS8yOworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpIC8gMjsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QgKnRtcDsKIApAQCAtNjQzLDggKzgzMSw4IEBACiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBsb25nIHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOwogICAgIGludCBjbXA7CiAKICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewpAQCAtNjc1LDYgKzg2MywzOCBAQAogUHlEb2NfU1RSVkFSKGNvdW50X2RvYywKICJELmNvdW50KHZhbHVlKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdmFsdWUiKTsKIAorc3RhdGljIGludAorZGVxdWVfY29udGFpbnMoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqdikKK3sKKyAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7CisgICAgUHlfc3NpemVfdCBpOworICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBpbnQgY21wOworCisgICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKKyAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOworICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOworICAgICAgICBpZiAoY21wKSB7CisgICAgICAgICAgICByZXR1cm4gY21wOworICAgICAgICB9CisgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZGV4Kys7CisgICAgICAgIGlmIChpbmRleCA9PSBCTE9DS0xFTikgeworICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIFB5X3NzaXplX3QKIGRlcXVlX2xlbihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CkBAIC02ODIsNiArOTAyLDk5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9pbmRleChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKGRlcXVlKTsKKyAgICBQeU9iamVjdCAqdiwgKml0ZW07CisgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPJk8mOmluZGV4IiwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN0YXJ0IDwgMCkgeworICAgICAgICBzdGFydCArPSBQeV9TSVpFKGRlcXVlKTsKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICB9CisgICAgaWYgKHN0b3AgPCAwKSB7CisgICAgICAgIHN0b3AgKz0gUHlfU0laRShkZXF1ZSk7CisgICAgICAgIGlmIChzdG9wIDwgMCkKKyAgICAgICAgICAgIHN0b3AgPSAwOworICAgIH0KKworICAgIGZvciAoaT0wIDsgaTxzdG9wIDsgaSsrKSB7CisgICAgICAgIGlmIChpID49IHN0YXJ0KSB7CisgICAgICAgICAgICBpbnQgY21wOworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKKyAgICAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiJVIgaXMgbm90IGluIGRlcXVlIiwgdik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihpbmRleF9kb2MsCisiRC5pbmRleCh2YWx1ZSwgW3N0YXJ0LCBbc3RvcF1dKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS5cbiIKKyJSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuIik7CisKKy8qIGluc2VydCgpLCByZW1vdmUoKSwgYW5kIGRlbGl0ZW0oKSBhcmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YKKyAgIHJvdGF0ZSgpIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlIHBlcmZvcm1hbmNlIG5lYXIgdGhlIGVuZAorICAgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoZXNlIG1ldGhvZHMgYmVjb21lIHBvcHVsYXIsIGl0IGlzIG5vdAorICAgaGFyZCB0byByZS1pbXBsZW1lbnQgdGhpcyB1c2luZyBkaXJlY3QgZGF0YSBtb3ZlbWVudCAoc2ltaWxhciB0bworICAgdGhlIGNvZGUgdXNlZCBpbiBsaXN0IHNsaWNlIGFzc2lnbm1lbnRzKSBhbmQgYWNoaWV2ZSBhIHBlcmZvcm1hbmNlCisgICBib29zdCAoYnkgbW92aW5nIGVhY2ggcG9pbnRlciBvbmx5IG9uY2UgaW5zdGVhZCBvZiB0d2ljZSkuCisqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfaW5zZXJ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLCAmaW5kZXgsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA+PSBuKQorICAgICAgICByZXR1cm4gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKGluZGV4IDw9IC1uIHx8IGluZGV4ID09IDApCisgICAgICAgIHJldHVybiBkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIC1pbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBydiA9IGRlcXVlX2FwcGVuZGxlZnQoZGVxdWUsIHZhbHVlKTsKKyAgICBpZiAocnYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKHJ2KTsKKyAgICBpZiAoX2RlcXVlX3JvdGF0ZShkZXF1ZSwgaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCisiRC5pbnNlcnQoaW5kZXgsIG9iamVjdCkgLS0gaW5zZXJ0IG9iamVjdCBiZWZvcmUgaW5kZXgiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX3JlbW92ZShkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIG49UHlfU0laRShkZXF1ZSk7CkBAIC03MjYsOSArMTAzOSwxNyBAQAogICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICB9Ci0gICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2sgJiYKLSAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCAtIDEgPT0gZGVxdWUtPnJpZ2h0aW5kZXggJiYKLSAgICAgICAgICAgUHlfU0laRShkZXF1ZSkgPT0gMCk7CisgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4IC0gMSA9PSBkZXF1ZS0+cmlnaHRpbmRleCk7CisgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpID09IDApOworfQorCitzdGF0aWMgaW50Cit2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCit7CisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KKyAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzM4LDkgKzEwNTksOCBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgbiwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgIGlmICghdmFsaWRfaW5kZXgoaSwgUHlfU0laRShkZXF1ZSkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiZGVxdWUgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzUyLDE0ICsxMDcyLDE2IEBACiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICB9IGVsc2UgewogICAgICAgICBpICs9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgICAgIGkgJT0gQkxPQ0tMRU47CisgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAvIEJMT0NLTEVOKTsKKyAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbiA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCisgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC03NzAsMTMgKzEwOTIsNiBAQAogICAgIHJldHVybiBpdGVtOwogfQogCi0vKiBkZWxpdGVtKCkgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygcm90YXRlIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlCi0gICBwZXJmb3JtYW5jZSBuZWFyIHRoZSBlbmQgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoaXMgbWV0aG9kIGJlY29tZXMKLSAgIHBvcHVsYXIsIGl0IGlzIG5vdCBoYXJkIHRvIHJlLWltcGxlbWVudCB0aGlzIHVzaW5nIGRpcmVjdCBkYXRhIG1vdmVtZW50Ci0gICAoc2ltaWxhciB0byBjb2RlIGluIGxpc3Qgc2xpY2UgYXNzaWdubWVudCkgYW5kIGFjaGlldmUgYSB0d28gb3IgdGhyZWVmb2xkCi0gICBwZXJmb3JtYW5jZSBib29zdC4KLSovCi0KIHN0YXRpYyBpbnQKIGRlcXVlX2RlbF9pdGVtKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBpKQogewpAQCAtODAwLDIzICsxMTE1LDI0IEBACiAgICAgYmxvY2sgKmI7CiAgICAgUHlfc3NpemVfdCBuLCBsZW49UHlfU0laRShkZXF1ZSksIGhhbGZsZW49KGxlbisxKT4+MSwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IGxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICBpZiAoIXZhbGlkX2luZGV4KGksIGxlbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZGVxdWVfZGVsX2l0ZW0oZGVxdWUsIGkpOwogCiAgICAgaSArPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgaSAlPSBCTE9DS0xFTjsKKyAgICBuID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgLyBCTE9DS0xFTik7CisgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICB3aGlsZSAobi0tKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewotICAgICAgICBuID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBsZW4gLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKKyAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCisgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIHdoaWxlIChuLS0pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC05MzgsNyArMTI1NCw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuICE9IC0xKQotCiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkZXF1ZSglUiwgbWF4bGVuPSV6ZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2xpc3QsICgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbik7CiAgICAgZWxzZQpAQCAtMTA3Myw2ICsxMzg4LDEyIEBACiBQeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKICJELl9fc2l6ZW9mX18oKSAtLSBzaXplIG9mIEQgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCitzdGF0aWMgaW50CitkZXF1ZV9ib29sKGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICByZXR1cm4gUHlfU0laRShkZXF1ZSkgIT0gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2dldF9tYXhsZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtMTA4MSw2ICsxNDAyLDkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRlcXVlLT5tYXhsZW4pOwogfQogCisKKy8qIGRlcXVlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogc3RhdGljIFB5R2V0U2V0RGVmIGRlcXVlX2dldHNldFtdID0gewogICAgIHsibWF4bGVuIiwgKGdldHRlcilkZXF1ZV9nZXRfbWF4bGVuLCAoc2V0dGVyKU5VTEwsCiAgICAgICJtYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciBOb25lIGlmIHVuYm91bmRlZCJ9LApAQCAtMTA4OSwxOSArMTQxMywzMCBAQAogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgZGVxdWVfYXNfc2VxdWVuY2UgPSB7CiAgICAgKGxlbmZ1bmMpZGVxdWVfbGVuLCAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfY29uY2F0LCAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9yZXBlYXQsICAgICAgICAgLyogc3FfcmVwZWF0ICovCiAgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9pdGVtLCAgICAgICAgICAgLyogc3FfaXRlbSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3NsaWNlICovCi0gICAgKHNzaXplb2JqYXJncHJvYylkZXF1ZV9hc3NfaXRlbSwgICAgICAgICAgICAvKiBzcV9hc3NfaXRlbSAqLworICAgIChzc2l6ZW9iamFyZ3Byb2MpZGVxdWVfYXNzX2l0ZW0sICAgIC8qIHNxX2Fzc19pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX3NsaWNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KLSAgICAoYmluYXJ5ZnVuYylkZXF1ZV9pbnBsYWNlX2NvbmNhdCwgICAgICAgICAgIC8qIHNxX2lucGxhY2VfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9yZXBlYXQgKi8KLQorICAgIChvYmpvYmpwcm9jKWRlcXVlX2NvbnRhaW5zLCAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfaW5wbGFjZV9jb25jYXQsICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KKyAgICAoc3NpemVhcmdmdW5jKWRlcXVlX2lucGxhY2VfcmVwZWF0LCAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAotLyogZGVxdWUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZXF1ZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCisgICAgKGlucXVpcnkpZGVxdWVfYm9vbCwgICAgICAgICAgICAgICAgLyogbmJfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZGVxdWVfaXRlcihkZXF1ZW9iamVjdCAqZGVxdWUpOwogc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9yZXZpdGVyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CkBAIC0xMTE3LDE3ICsxNDUyLDIzIEBACiAgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjbGVhcl9kb2N9LAogICAgIHsiX19jb3B5X18iLCAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfY29weSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIGNvcHlfZG9jfSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2NvcHksCisgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjb3B5X2RvY30sCiAgICAgeyJjb3VudCIsICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9jb3VudCwKLSAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudF9kb2N9LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgY291bnRfZG9jfSwKICAgICB7ImV4dGVuZCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2V4dGVuZCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZF9kb2N9LAogICAgIHsiZXh0ZW5kbGVmdCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfZXh0ZW5kbGVmdCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZGxlZnRfZG9jfSwKKyAgICB7ImluZGV4IiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luZGV4LAorICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICAgaW5kZXhfZG9jfSwKKyAgICB7Imluc2VydCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luc2VydCwKKyAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgIGluc2VydF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcG9wLAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wX2RvY30sCiAgICAgeyJwb3BsZWZ0IiwgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9wb3BsZWZ0LAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wbGVmdF9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcmVtb3ZlLAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgcmVtb3ZlX2RvY30sCkBAIC0xMTQ1LDcgKzE0ODYsNyBAQAogUHlEb2NfU1RSVkFSKGRlcXVlX2RvYywKICJkZXF1ZShbaXRlcmFibGVbLCBtYXhsZW5dXSkgLS0+IGRlcXVlIG9iamVjdFxuXAogXG5cCi1CdWlsZCBhbiBvcmRlcmVkIGNvbGxlY3Rpb24gd2l0aCBvcHRpbWl6ZWQgYWNjZXNzIGZyb20gaXRzIGVuZHBvaW50cy4iKTsKK0EgbGlzdC1saWtlIHNlcXVlbmNlIG9wdGltaXplZCBmb3IgZGF0YSBhY2Nlc3NlcyBuZWFyIGl0cyBlbmRwb2ludHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKQEAgLTExNTksNyArMTUwMCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCiAgICAgZGVxdWVfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZkZXF1ZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICZkZXF1ZV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCwgICAgICAgIC8qIHRwX2hhc2ggKi8KQEAgLTExOTUsMTAgKzE1MzYsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGJsb2NrICpiOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgZGVxdWVvYmplY3QgKmRlcXVlOwotICAgIGxvbmcgc3RhdGU7ICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLworICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLwogICAgIFB5X3NzaXplX3QgY291bnRlcjsgICAgLyogbnVtYmVyIG9mIGl0ZW1zIHJlbWFpbmluZyBmb3IgaXRlcmF0aW9uICovCiB9IGRlcXVlaXRlcm9iamVjdDsKIApAQCAtMTMxNSw3ICsxNjU2LDcgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZWl0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTMzNCw3ICsxNjc1LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkZXF1ZWl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTE0MzcsNyArMTc3OCw3IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVyZXZpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTE0NTYsNyArMTc5Nyw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGVxdWVpdGVyX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xODAwLDE5ICsyMTQxLDQwIEBACiAgICAgaWYgKG1hcHBpbmdfZ2V0ICE9IE5VTEwgJiYgbWFwcGluZ19nZXQgPT0gZGljdF9nZXQgJiYKICAgICAgICAgbWFwcGluZ19zZXRpdGVtICE9IE5VTEwgJiYgbWFwcGluZ19zZXRpdGVtID09IGRpY3Rfc2V0aXRlbSkgewogICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoIGFkdmFudGFnZXM6CisgICAgICAgICAgICAgICAgICAgMS4gRWxpbWluYXRlIGRvdWJsZSBoYXNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgKGJ5IHJlLXVzaW5nIHRoZSBzYW1lIGhhc2ggZm9yIGJvdGggdGhlIGdldCBhbmQgc2V0KQorICAgICAgICAgICAgICAgICAgIDIuIEF2b2lkIGFyZ3VtZW50IG92ZXJoZWFkIG9mIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAoYXJndW1lbnQgdHVwbGUgY3JlYXRpb24gYW5kIHBhcnNpbmcpCisgICAgICAgICAgICAgICAgICAgMy4gQXZvaWQgaW5kaXJlY3Rpb24gdGhyb3VnaCBhIGJvdW5kIG1ldGhvZCBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlcyBhbm90aGVyIGFyZ3VtZW50IHR1cGxlKQorICAgICAgICAgICAgICAgICAgIDQuIEF2b2lkIGluaXRpYWwgaW5jcmVtZW50IGZyb20gemVybworICAgICAgICAgICAgICAgICAgICAgIChyZXVzZSBhbiBleGlzdGluZyBvbmUtb2JqZWN0IGluc3RlYWQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CisKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CisKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2xkdmFsID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgb25lKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKQEAgLTE5MDEsNiArMjI2Myw5IEBACiAgICAgUHlfSU5DUkVGKCZkZWZkaWN0X3R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZGVmYXVsdGRpY3QiLCAoUHlPYmplY3QgKikmZGVmZGljdF90eXBlKTsKIAorICAgIFB5X0lOQ1JFRigmUHlPRGljdF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk9yZGVyZWREaWN0IiwgKFB5T2JqZWN0ICopJlB5T0RpY3RfVHlwZSk7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZWl0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoJmRlcXVlaXRlcl90eXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCmluZGV4IGRhNDRlZjMuLmQ0MjJjZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtMTIsMTIgKzEyLDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jNjI1MmNmNGYyZjJhZTgxXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2NyeXB0bW9kdWxlLmMuaCIKIAogLypbY2xpbmljIGlucHV0XQogY3J5cHQuY3J5cHQKIAotICAgIHdvcmQ6ICdzJwotICAgIHNhbHQ6ICdzJworICAgIHdvcmQ6IHN0cgorICAgIHNhbHQ6IHN0cgogICAgIC8KIAogSGFzaCBhICp3b3JkKiB3aXRoIHRoZSBnaXZlbiAqc2FsdCogYW5kIHJldHVybiB0aGUgaGFzaGVkIHBhc3N3b3JkLgpAQCAtMjksNDMgKzMwLDkgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoY3J5cHRfY3J5cHRfX2RvY19fLAotImNyeXB0KCRtb2R1bGUsIHdvcmQsIHNhbHQsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJIYXNoIGEgKndvcmQqIHdpdGggdGhlIGdpdmVuICpzYWx0KiBhbmQgcmV0dXJuIHRoZSBoYXNoZWQgcGFzc3dvcmQuXG4iCi0iXG4iCi0iKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXJcJ3MgcGFzc3dvcmQuICAqc2FsdCogKGVpdGhlciBhIHJhbmRvbSAyIG9yIDE2XG4iCi0iY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aCAkZGlnaXQkIHRvIGluZGljYXRlIHRoZSBtZXRob2QpXG4iCi0id2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIGFuZCBwcm9kdWNlIGRpc3RpbmN0XG4iCi0icmVzdWx0cyBmb3IgYSBnaXZlbiAqd29yZCouIik7Ci0KLSNkZWZpbmUgQ1JZUFRfQ1JZUFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImNyeXB0IiwgKFB5Q0Z1bmN0aW9uKWNyeXB0X2NyeXB0LCBNRVRIX1ZBUkFSR1MsIGNyeXB0X2NyeXB0X19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jcnlwdF9jcnlwdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKndvcmQsIGNvbnN0IGNoYXIgKnNhbHQpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3J5cHRfY3J5cHQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqd29yZDsKLSAgICBjb25zdCBjaGFyICpzYWx0OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzczpjcnlwdCIsCi0gICAgICAgICZ3b3JkLCAmc2FsdCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBjcnlwdF9jcnlwdF9pbXBsKG1vZHVsZSwgd29yZCwgc2FsdCk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZWFhY2RmOTk0YTZmZjIzIGlucHV0PTRkOTNiNmQwZjQxZmJmNThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVhZDFlODU0ZDgzMDY5IGlucHV0PTBlOGVkZWM5YzM2NDM1MmJdKi8KIHsKICAgICAvKiBPbiBzb21lIHBsYXRmb3JtcyAoQXRoZU9TKSBjcnlwdCByZXR1cm5zIE5VTEwgZm9yIGFuIGludmFsaWQKICAgICAgICBzYWx0LiBSZXR1cm4gTm9uZSBpbiB0aGF0IGNhc2UuIFhYWCBNYXliZSByYWlzZSBhbiBleGNlcHRpb24/ICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA3YTcxNTY0Li5hNjE0MTkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CiAgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICBTdHlsZURlc2MgKnFzOwogCiAgICAgZm9yIChxcyA9IHF1b3RlX3N0eWxlczsgcXMtPm5hbWU7IHFzKyspIHsKLSAgICAgICAgaWYgKHFzLT5zdHlsZSA9PSBxdW90aW5nKQorICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYmFkIFwicXVvdGluZ1wiIHZhbHVlIik7CkBAIC00MzIsNyArNDMyLDcgQEAKICAgICAgICAgZ290byBlcnI7CiAgICAgaWYgKHNlbGYtPmRlbGltaXRlciA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiXCJkZWxpbWl0ZXJcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgIlwiZGVsaW1pdGVyXCIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZyIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKHF1b3RlY2hhciA9PSBQeV9Ob25lICYmIHF1b3RpbmcgPT0gTlVMTCkKQEAgLTEwMDksNyArMTAwOSw3IEBACiAgKi8KIHN0YXRpYyBQeV9zc2l6ZV90CiBqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiwgaW50ICpxdW90ZWQsCiAgICAgICAgICAgICAgICAgIGludCBjb3B5X3BoYXNlKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwpAQCAtMTA3MSwxOCArMTA3MSw2IEBACiAgICAgICAgIEFERENIKGMpOwogICAgIH0KIAotICAgIC8qIElmIGZpZWxkIGlzIGVtcHR5IGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIHF1b3RlZC4KLSAgICAgKi8KLSAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7Ci0gICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCi0gICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcXVvdGVkID0gMTsKLSAgICB9Ci0KICAgICBpZiAoKnF1b3RlZCkgewogICAgICAgICBpZiAoY29weV9waGFzZSkKICAgICAgICAgICAgIEFERENIKGRpYWxlY3QtPnF1b3RlY2hhcik7CkBAIC0xMTI2LDcgKzExMTQsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1qb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKK2pvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlPYmplY3QgKmZpZWxkLCBpbnQgcXVvdGVkKQogewogICAgIHVuc2lnbmVkIGludCBmaWVsZF9raW5kID0gLTE7CiAgICAgdm9pZCAqZmllbGRfZGF0YSA9IE5VTEw7CkBAIC0xMTQxLDcgKzExMjksNyBAQAogICAgICAgICBmaWVsZF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmaWVsZCk7CiAgICAgfQogICAgIHJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAwKTsKICAgICBpZiAocmVjX2xlbiA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTUwLDcgKzExMzgsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTExODEsMzcgKzExNjksMzAgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNzdl93cml0ZXJvd19kb2MsCi0id3JpdGVyb3coc2VxdWVuY2UpXG4iCisid3JpdGVyb3coaXRlcmFibGUpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIENTViByZWNvcmQgZnJvbSBhIHNlcXVlbmNlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgQ1NWIHJlY29yZCBmcm9tIGFuIGl0ZXJhYmxlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKICJlbGVtZW50cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3Zfd3JpdGVyb3coV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqc2VxKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwotICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgIFB5T2JqZWN0ICpsaW5lLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICppdGVyLCAqZmllbGQsICpsaW5lLCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKLQotICAgIGxlbiA9IFB5U2VxdWVuY2VfTGVuZ3RoKHNlcSk7Ci0gICAgaWYgKGxlbiA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGV4cGVjdGVkLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXEtPm9iX3R5cGUtPnRwX25hbWUpOwogCiAgICAgLyogSm9pbiBhbGwgZmllbGRzIGluIGludGVybmFsIGJ1ZmZlci4KICAgICAgKi8KICAgICBqb2luX3Jlc2V0KHNlbGYpOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqZmllbGQ7CisgICAgd2hpbGUgKChmaWVsZCA9IFB5SXRlcl9OZXh0KGl0ZXIpKSkgewogICAgICAgICBpbnQgYXBwZW5kX29rOwogICAgICAgICBpbnQgcXVvdGVkOwogCi0gICAgICAgIGZpZWxkID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHNlcSwgaSk7Ci0gICAgICAgIGlmIChmaWVsZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAgICAgc3dpdGNoIChkaWFsZWN0LT5xdW90aW5nKSB7CiAgICAgICAgIGNhc2UgUVVPVEVfTk9OTlVNRVJJQzoKICAgICAgICAgICAgIHF1b3RlZCA9ICFQeU51bWJlcl9DaGVjayhmaWVsZCk7CkBAIC0xMjI1LDExICsxMjA2LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZpZWxkKSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgZmllbGQsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIGZpZWxkLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEyMzcsMTkgKzEyMTgsMzcgQEAKIAogICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKGZpZWxkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7Ci0gICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIHN0ciwgcXVvdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghYXBwZW5kX29rKQorICAgICAgICBpZiAoIWFwcGVuZF9vaykgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKGl0ZXIpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzZWxmLT5udW1fZmllbGRzID4gMCAmJiBzZWxmLT5yZWNfc2l6ZSA9PSAwKSB7CisgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNlbGYtPm51bV9maWVsZHMtLTsKKyAgICAgICAgaWYgKCFqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAxKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIEFkZCBsaW5lIHRlcm1pbmF0b3IuCiAgICAgICovCiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKQEAgLTEyNjEsOSArMTI2MCw5IEBACiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKLSJ3cml0ZXJvd3Moc2VxdWVuY2Ugb2Ygc2VxdWVuY2VzKVxuIgorIndyaXRlcm93cyhpdGVyYWJsZSBvZiBpdGVyYWJsZXMpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIHNlcmllcyBvZiBzZXF1ZW5jZXMgdG8gYSBjc3YgZmlsZS4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgc2VyaWVzIG9mIGl0ZXJhYmxlcyB0byBhIGNzdiBmaWxlLiAgTm9uLXN0cmluZ1xuIgogImVsZW1lbnRzIHdpbGwgYmUgY29udmVydGVkIHRvIHN0cmluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDJlNTkzOWMuLmI5ZmQ4MmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgY2hhciAqbmV3X3ByZWZpeDsKICAgICBjaGFyICpyZXN1bHQ7CiAgICAgY2hhciBidWZbMzJdOwotICAgIGludCBwcmVmaXhfbGVuOworICAgIFB5X3NzaXplX3QgcHJlZml4X2xlbjsKICAgICBpbnQgazsKIAogICAgIHByZWZpeF9sZW4gPSAzMiAqIG5kaW0gKyAzOwpAQCAtMjgxOSw4ICsyODE5LDkgQEAKICAgICAgICAgICAgICAgIHNyYy0+Yl9wdHIsCiAgICAgICAgICAgICAgICBzaXplKTsKIAotICAgICAgICBpZiAoUHlDUG9pbnRlclR5cGVPYmplY3RfQ2hlY2sodHlwZSkpCi0gICAgICAgICAgICAvKiBYWFggKi87CisgICAgICAgIGlmIChQeUNQb2ludGVyVHlwZU9iamVjdF9DaGVjayh0eXBlKSkgeworICAgICAgICAgICAgLyogWFhYICovCisgICAgICAgIH0KIAogICAgICAgICB2YWx1ZSA9IEdldEtlZXBlZE9iamVjdHMoc3JjKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDhkYWVmZmMuLjAzYTkxMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0xNjAzLDcgKzE2MDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIk1lbW9yeSBjYW5ub3QgYmUgcmVzaXplZCBiZWNhdXNlIHRoaXMgb2JqZWN0IGRvZXNuJ3Qgb3duIGl0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8PSBzaXplb2Yob2JqLT5iX3ZhbHVlKSkgeworICAgIGlmICgoc2l6ZV90KXNpemUgPD0gc2l6ZW9mKG9iai0+Yl92YWx1ZSkpIHsKICAgICAgICAgLyogaW50ZXJuYWwgZGVmYXVsdCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoICovCiAgICAgICAgIG9iai0+Yl9zaXplID0gc2l6ZTsKICAgICAgICAgZ290byBkb25lOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IDIwNzgyOTEuLjRiZDAyMmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTEzNTQsMTQgKzEzNTQsNiBAQAogewogICAgIC8qIFhYWCBXaGF0IGFib3V0IGludmFsaWQgcG9pbnRlcnMgPz8/ICovCiAgICAgaWYgKCoodm9pZCAqKilwdHIpIHsKLSNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQotICAgICAgICBpZiAoSXNCYWRTdHJpbmdQdHJBKCooY2hhciAqKilwdHIsIC0xKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3RyaW5nIHBvaW50ZXIgJXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICooY2hhciAqKilwdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgqKGNoYXIgKiopcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oKihjaGFyICoqKXB0cikpOwogICAgIH0gZWxzZSB7CkBAIC0xNDE4LDE0ICsxNDEwLDYgQEAKICAgICB3Y2hhcl90ICpwOwogICAgIHAgPSAqKHdjaGFyX3QgKiopcHRyOwogICAgIGlmIChwKSB7Ci0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgICAgICAgaWYgKElzQmFkU3RyaW5nUHRyVygqKHdjaGFyX3QgKiopcHRyLCAtMSkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmluZyBwb2ludGVyICVwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqKHdjaGFyX3QgKiopcHRyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocCwgd2NzbGVuKHApKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xNDU1LDE1ICsxNDM5LDE1IEBACiAgICAgLyogY3JlYXRlIGEgQlNUUiBmcm9tIHZhbHVlICovCiAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIHdjaGFyX3QqIHd2YWx1ZTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgICAgICBQeV9zc2l6ZV90IHdzaXplOworICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJndzaXplKTsKICAgICAgICAgaWYgKHd2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICgodW5zaWduZWQpIHNpemUgIT0gc2l6ZSkgeworICAgICAgICBpZiAoKHVuc2lnbmVkKSB3c2l6ZSAhPSB3c2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdHJpbmcgdG9vIGxvbmcgZm9yIEJTVFIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3dmFsdWUsICh1bnNpZ25lZClzaXplKTsKKyAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXdzaXplKTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgYnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMKaW5kZXggNzZjYjAzZS4uYjc1ODZjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9tc3ZjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYwpAQCAtNjUsMzcgKzY1LDU2IEBACiAJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIHNpemVvZih2b2lkICopKTsKIAogICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKKyAgICAgIGlmICh6IDwgc2l6ZW9mKGludHB0cl90KSkKIAl7Ci0JICB6ID0gc2l6ZW9mKGludCk7CisJICB6ID0gc2l6ZW9mKGludHB0cl90KTsKIAkgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCiAJICAgIHsKIAkgICAgY2FzZSBGRklfVFlQRV9TSU5UODoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ4ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDggKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQxNiAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDE2ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKGludHB0cl90ICopIGFyZ3AgPSAoaW50cHRyX3QpKihTSU5UMzIgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gMDsKKwkgICAgICAqKGZsb2F0ICopIGFyZ3AgPSAqKGZsb2F0ICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICAvLyA2NC1iaXQgdmFsdWUgY2FzZXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIHg4NiBhbmQgQU1ENjQgYnVpbGRzCisJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgorCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ2NCAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9ICh1aW50cHRyX3QpKihVSU5UNjQgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9IDA7CisJICAgICAgKihkb3VibGUgKikgYXJncCA9ICooZG91YmxlICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA1ZmZjZTJmLi5kNjRiZGM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04OGM4NjBhYmRiYjUwZTBjXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2N1cnNlc21vZHVsZS5jLmgiCisKIC8qIERlZmluaXRpb24gb2YgZXhjZXB0aW9uIGN1cnNlcy5lcnJvciAqLwogCiBzdGF0aWMgUHlPYmplY3QgKlB5Q3Vyc2VzRXJyb3I7CkBAIC01ODMsNzUgKzU4NSwxMCBAQAogY3VycmVudCBzZXR0aW5ncyBmb3IgdGhlIHdpbmRvdyBvYmplY3QuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihjdXJzZXNfd2luZG93X2FkZGNoX19kb2NfXywKLSJhZGRjaChbeSwgeCxdIGNoLCBbYXR0cl0pXG4iCi0iUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0ci5cbiIKLSJcbiIKLSIgIHlcbiIKLSIgICAgWS1jb29yZGluYXRlLlxuIgotIiAgeFxuIgotIiAgICBYLWNvb3JkaW5hdGUuXG4iCi0iICBjaFxuIgotIiAgICBDaGFyYWN0ZXIgdG8gYWRkLlxuIgotIiAgYXR0clxuIgotIiAgICBBdHRyaWJ1dGVzIGZvciB0aGUgY2hhcmFjdGVyLlxuIgotIlxuIgotIlBhaW50IGNoYXJhY3RlciBjaCBhdCAoeSwgeCkgd2l0aCBhdHRyaWJ1dGVzIGF0dHIsXG4iCi0ib3ZlcndyaXRpbmcgYW55IGNoYXJhY3RlciBwcmV2aW91c2x5IHBhaW50ZWQgYXQgdGhhdCBsb2NhdGlvbi5cbiIKLSJCeSBkZWZhdWx0LCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIGFuZCBhdHRyaWJ1dGVzIGFyZSB0aGVcbiIKLSJjdXJyZW50IHNldHRpbmdzIGZvciB0aGUgd2luZG93IG9iamVjdC4iKTsKLQotI2RlZmluZSBDVVJTRVNfV0lORE9XX0FERENIX01FVEhPRERFRiAgICBcCi0gICAgeyJhZGRjaCIsIChQeUNGdW5jdGlvbiljdXJzZXNfd2luZG93X2FkZGNoLCBNRVRIX1ZBUkFSR1MsIGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgaW50IGdyb3VwX2xlZnRfMSwgaW50IHksIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3Vyc2VzX3dpbmRvd19hZGRjaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IGdyb3VwX2xlZnRfMSA9IDA7Ci0gICAgaW50IHkgPSAwOwotICAgIGludCB4ID0gMDsKLSAgICBQeU9iamVjdCAqY2g7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwotICAgIGxvbmcgYXR0ciA9IDA7Ci0KLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjdXJzZXMud2luZG93LmFkZGNoIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgcmV0dXJuX3ZhbHVlID0gY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKHNlbGYsIGdyb3VwX2xlZnRfMSwgeSwgeCwgY2gsIGdyb3VwX3JpZ2h0XzEsIGF0dHIpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIGludCBncm91cF9sZWZ0XzEsIGludCB5LCBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0Yjk3Y2MyODcwMTBjNTQgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLworY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5ZjdmODUwNzhlYzA2YzMgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLwogewogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpjd3NlbGYgPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilzZWxmOwogICAgIGludCBjb29yZGluYXRlc19ncm91cCA9IGdyb3VwX2xlZnRfMTsKQEAgLTI2NzUsNyArMjYxMiw3IEBACiAgICAgfQogICAgIGtucCA9IGtleW5hbWUoY2gpOwogCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiAoY2hhciAqKWtucCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiBrbnApOwogfQogI2VuZGlmCiAKQEAgLTI5MjksNiArMjg2NiwxMyBAQAogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gMTsKIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzKFB5T2JqZWN0ICpzZWxmKQoreworICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSB1cGRhdGVfbGluZXNfY29scygpKTsKK30KKwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0NVUlNFU19SRVNJWkVURVJNCkBAIC0zMzMxLDYgKzMyNzUsOSBAQAogICAgIHsidHlwZWFoZWFkIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19UeXBlQWhlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmN0cmwiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuQ3RybCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuZ2V0Y2giLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRDaCwgTUVUSF9WQVJBUkdTfSwKKyNpZiBkZWZpbmVkKEhBVkVfQ1VSU0VTX1JFU0laRVRFUk0pIHx8IGRlZmluZWQoSEFWRV9DVVJTRVNfUkVTSVpFX1RFUk0pCisgICAgeyJ1cGRhdGVfbGluZXNfY29scyIsICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzLCBNRVRIX05PQVJHU30sCisjZW5kaWYKICNpZmRlZiBIQVZFX05DVVJTRVNXCiAgICAgeyJ1bmdldF93Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0X1djaCwgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZDgyMjViYS4uN2U0YmU1YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDYgKzcsMTAgQEAKIAogI2luY2x1ZGUgPHRpbWUuaD4KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+ICAgICAgICAgLyogc3RydWN0IHRpbWV2YWwgKi8KKyNlbmRpZgorCiAvKiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gYnVpbGRpbmcgdGhlIGNvcmUgbW9kdWxlIGFuZCBidWlsZGluZyBleHRlbnNpb24KICAqIG1vZHVsZXMuCiAgKi8KQEAgLTIyLDYgKzI2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTc4MTQyY2I2NGI5ZTk4YmNdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIgorCiAvKiBXZSByZXF1aXJlIHRoYXQgQyBpbnQgYmUgYXQgbGVhc3QgMzIgYml0cywgYW5kIHVzZSBpbnQgdmlydHVhbGx5CiAgKiBldmVyeXdoZXJlLiAgSW4ganVzdCBhIGZldyBjYXNlcyB3ZSB1c2UgYSB0ZW1wIGxvbmcsIHdoZXJlIGEgUHl0aG9uCiAgKiBBUEkgcmV0dXJucyBhIEMgbG9uZy4gIEluIHN1Y2ggY2FzZXMsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlCkBAIC0yNDU5LDcgKzI0NjUsNyBAQAogICAgIHN0cnVjdCB0bSAqdG07CiAgICAgdGltZV90IHQ7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHRtID0gbG9jYWx0aW1lKCZ0KTsKQEAgLTM4MDUsMjkgKzM4MTEsNiBAQAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotc3RhdGljIGludAotdGltZV9ib29sKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpvZmZzZXQsICp0emluZm87Ci0gICAgaW50IG9mZnNlY3MgPSAwOwotCi0gICAgaWYgKFRJTUVfR0VUX1NFQ09ORChzZWxmKSB8fCBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKSkgewotICAgICAgICAvKiBTaW5jZSB1dGNvZmZzZXQgaXMgaW4gd2hvbGUgbWludXRlcywgbm90aGluZyBjYW4KLSAgICAgICAgICogYWx0ZXIgdGhlIGNvbmNsdXNpb24gdGhhdCB0aGlzIGlzIG5vbnplcm8uCi0gICAgICAgICAqLwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgdHppbmZvID0gR0VUX1RJTUVfVFpJTkZPKHNlbGYpOwotICAgIGlmICh0emluZm8gIT0gUHlfTm9uZSkgewotICAgICAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldCh0emluZm8sIFB5X05vbmUpOwotICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG9mZnNlY3MgPSBHRVRfVERfREFZUyhvZmZzZXQpKjg2NDAwICsgR0VUX1REX1NFQ09ORFMob2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiAoVElNRV9HRVRfTUlOVVRFKHNlbGYpKjYwIC0gb2Zmc2VjcyArIFRJTUVfR0VUX0hPVVIoc2VsZikqMzYwMCkgIT0gMDsKLX0KLQogLyogUGlja2xlIHN1cHBvcnQsIGEgc2ltcGxlIHVzZSBvZiBfX3JlZHVjZV9fLiAqLwogCiAvKiBMZXQgYmFzZXN0YXRlIGJlIHRoZSBub24tdHppbmZvIGRhdGEgc3RyaW5nLgpAQCAtMzg5NSwxOSArMzg3OCw2IEBACiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXAogYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLlxuIik7CiAKLXN0YXRpYyBQeU51bWJlck1ldGhvZHMgdGltZV9hc19udW1iZXIgPSB7Ci0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG9zaXRpdmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCi0gICAgKGlucXVpcnkpdGltZV9ib29sLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9ib29sICovCi19OwotCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImRhdGV0aW1lLnRpbWUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0zOTE5LDcgKzM4ODksNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpdGltZV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAmdGltZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYyl0aW1lX2hhc2gsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtNDEyNyw4ICs0MDk3LDExIEBACiAgICAgdGltZV90IHRpbWV0OwogICAgIGxvbmcgdXM7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLCAmdGltZXQsICZ1cywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZXQsICZ1cywgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydCgwIDw9IHVzICYmIHVzIDw9IDk5OTk5OSk7CisKICAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIApAQCAtNDEzOSwxMCArNDExMiwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdHppbmZvKQogewotICAgIF9QeVRpbWVfdGltZXZhbCB0OwotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZ0KTsKLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0LnR2X3NlYywgKGludCl0LnR2X3VzZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgX1B5VGltZV90IHRzID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworCisgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHRzLCAmdHYsIF9QeVRpbWVfUk9VTkRfRkxPT1IpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KDAgPD0gdHYudHZfdXNlYyAmJiB0di50dl91c2VjIDw9IDk5OTk5OSk7CisKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0di50dl9zZWMsIHR2LnR2X3VzZWMsIHR6aW5mbyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTQxNTgsNDMgKzQxMzUsOSBAQAogSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfXywKLSJub3coJHR5cGUsIC8sIHR6PU5vbmUpXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIG5ldyBkYXRldGltZSBvYmplY3QgcmVwcmVzZW50aW5nIGN1cnJlbnQgdGltZSBsb2NhbCB0byB0ei5cbiIKLSJcbiIKLSIgIHR6XG4iCi0iICAgIFRpbWV6b25lIG9iamVjdC5cbiIKLSJcbiIKLSJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7Ci0KLSNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODNjNTYzN2UzYzg0M2ZhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMzM4NmU1MzQ1ZTJiNDdhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KIHsKICAgICBQeU9iamVjdCAqc2VsZjsKIApAQCAtNTA1Niw4ICs0OTk5LDcgQEAKIAogICAgIHsidXRjZnJvbXRpbWVzdGFtcCIsIChQeUNGdW5jdGlvbilkYXRldGltZV91dGNmcm9tdGltZXN0YW1wLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLAotICAgICBQeURvY19TVFIoInRpbWVzdGFtcCAtPiBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAiCi0gICAgICAgICAgICAgICAiKGxpa2UgdGltZS50aW1lKCkpLiIpfSwKKyAgICAgUHlEb2NfU1RSKCJDb25zdHJ1Y3QgYSBuYWl2ZSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcC4iKX0sCiAKICAgICB7InN0cnB0aW1lIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3N0cnB0aW1lLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCA5M2VhNDE2Li4wMjg5OWU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMjksMTAgKzI5LDEwIEBACiAjZW5kaWYKIAogLypbY2xpbmljIGlucHV0XQotbW9kdWxlIGRibQotY2xhc3MgZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK21vZHVsZSBfZGJtCitjbGFzcyBfZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTkyNDUwNTY0Njg0YTY5YTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTliMWFhODc1NmQxNjE1MGVdKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTQwLDYgKzQwLDggQEAKICAgICBEQk0gKmRpX2RibTsKIH0gZGJtb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL19kYm1tb2R1bGUuYy5oIgorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKICNkZWZpbmUgaXNfZGJtb2JqZWN0KHYpIChQeV9UWVBFKHYpID09ICZEYm10eXBlKQpAQCAtNDksMTUgKzUxLDYgQEAKIAogc3RhdGljIFB5T2JqZWN0ICpEYm1FcnJvcjsKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZGJtb2JqZWN0X2NvbnZlcnRlcihzZWxmX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICJkYm1vYmplY3QgKiIKLSAgICBkZWYgcHJlX3JlbmRlcihzZWxmKToKLSAgICAgICAgc3VwZXIoKS5wcmVfcmVuZGVyKCkKLSAgICAgICAgc2VsZi5uYW1lID0gJ2RwJwotW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmFkNTM2MzU3OTEzODc5YV0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgogbmV3ZGJtb2JqZWN0KGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncywgaW50IG1vZGUpCiB7CkBAIC0xODEsMjkgKzE3NCw0MyBAQAogICAgIChvYmpvYmphcmdwcm9jKWRibV9hc3Nfc3ViLCAgICAgICAgIC8qbXBfYXNzX3N1YnNjcmlwdCovCiB9OwogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5jbG9zZQorCitDbG9zZSB0aGUgZGF0YWJhc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fX2Nsb3NlKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZGJtX2RibV9jbG9zZV9pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jOGRjNWI2NzA5NjAwYjg2IGlucHV0PTA0NmRiNzIzNzdkNTFiZThdKi8KIHsKLSAgICBpZiAoZHAtPmRpX2RibSkKLSAgICAgICAgZGJtX2Nsb3NlKGRwLT5kaV9kYm0pOwotICAgIGRwLT5kaV9kYm0gPSBOVUxMOworICAgIGlmIChzZWxmLT5kaV9kYm0pCisgICAgICAgIGRibV9jbG9zZShzZWxmLT5kaV9kYm0pOworICAgIHNlbGYtPmRpX2RibSA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5rZXlzCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2tleXMoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19kYm1fZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0NTQ5ZjdjMTIxYjMzYyBpbnB1dD1kMjEwYmE3NzhjZDljNjhhXSovCiB7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGRhdHVtIGtleTsKICAgICBpbnQgZXJyOwogCi0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOwogICAgIHYgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoa2V5ID0gZGJtX2ZpcnN0a2V5KGRwLT5kaV9kYm0pOyBrZXkuZHB0cjsKLSAgICAgICAgIGtleSA9IGRibV9uZXh0a2V5KGRwLT5kaV9kYm0pKSB7CisgICAgZm9yIChrZXkgPSBkYm1fZmlyc3RrZXkoc2VsZi0+ZGlfZGJtKTsga2V5LmRwdHI7CisgICAgICAgICBrZXkgPSBkYm1fbmV4dGtleShzZWxmLT5kaV9kYm0pKSB7CiAgICAgICAgIGl0ZW0gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNjUsNTggKzI3MiwyNyBAQAogfTsKIAogLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uZ2V0CiAKLWRibS5kYm0uZ2V0Ci0KLSAgICBzZWxmOiBkYm1vYmplY3QKLQotICAgIGtleTogc3RyKGxlbmd0aD1UcnVlKQotICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICBrZXk6IHN0cihhY2NlcHQ9e3N0ciwgcm9idWZmZXJ9LCB6ZXJvZXM9VHJ1ZSkKKyAgICBkZWZhdWx0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKICAgICAvCiAKIFJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRibV9kYm1fZ2V0X19kb2NfXywKLSJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOwotCi0jZGVmaW5lIERCTV9EQk1fR0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pZGJtX2RibV9nZXQsIE1FVEhfVkFSQVJHUywgZGJtX2RibV9nZXRfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmtleTsKLSAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1fZGJtX2dldF9pbXBsKGRwLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTJlYTExMzk0ZTdlOTJkIGlucHV0PWFlY2Y1ZWZkMmYyYjFhM2JdKi8KK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDRmOTVlYmE4MjAzZDkzIGlucHV0PWEzYTI3OTk1N2Y4NWViNmRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjVjMGU1MjNlYWYxMjUxIGlucHV0PTk0MDJjMGFmODU4MmRjNjldKi8KIHsKICAgICBkYXR1bSBkYm1fa2V5LCB2YWw7CiAKICAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKICAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGRibV9rZXkpOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIHZhbCA9IGRibV9mZXRjaChzZWxmLT5kaV9kYm0sIGRibV9rZXkpOwogICAgIGlmICh2YWwuZHB0ciAhPSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh2YWwuZHB0ciwgdmFsLmRzaXplKTsKIApAQCAtMzI0LDQ2ICszMDAsNTUgQEAKICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uc2V0ZGVmYXVsdAorICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIGRlZmF1bHQ6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworICAgIC8KKworUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LgorCitJZiBrZXkgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjU0NTg4NmNmMjcyMTYxIGlucHV0PWJmNDBjNDhlZGFjYTAxZDZdKi8KIHsKLSAgICBkYXR1bSBrZXksIHZhbDsKLSAgICBQeU9iamVjdCAqZGVmdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgKnRtcF9wdHI7CisgICAgZGF0dW0gZGJtX2tleSwgdmFsOwogICAgIFB5X3NzaXplX3QgdG1wX3NpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86c2V0ZGVmYXVsdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBfcHRyLCAmdG1wX3NpemUsICZkZWZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtleS5kcHRyID0gdG1wX3B0cjsKLSAgICBrZXkuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGtleSk7CisgICAgZGJtX2tleS5kcHRyID0gKGNoYXIgKilrZXk7CisgICAgZGJtX2tleS5kc2l6ZSA9IGtleV9sZW5ndGg7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CisgICAgdmFsID0gZGJtX2ZldGNoKHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKHZhbC5kcHRyICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZhbC5kcHRyLCB2YWwuZHNpemUpOwotICAgIGlmIChkZWZ2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIGRlZnZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgaWYgKGRlZnZhbHVlID09IE5VTEwpCisgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBkZWZhdWx0X3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB2YWwuZHB0ciA9IE5VTEw7CiAgICAgICAgIHZhbC5kc2l6ZSA9IDA7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZ2YWx1ZSwgInMjIiwgJnZhbC5kcHRyLCAmdG1wX3NpemUpICkgeworICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZhdWx0X3ZhbHVlLCAicyMiLCAmdmFsLmRwdHIsICZ0bXBfc2l6ZSkgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJkYm0gbWFwcGluZ3MgaGF2ZSBieXRlIHN0cmluZyBlbGVtZW50cyBvbmx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB2YWwuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICAgICAgUHlfSU5DUkVGKGRlZnZhbHVlKTsKKyAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOwogICAgIH0KLSAgICBpZiAoZGJtX3N0b3JlKGRwLT5kaV9kYm0sIGtleSwgdmFsLCBEQk1fSU5TRVJUKSA8IDApIHsKLSAgICAgICAgZGJtX2NsZWFyZXJyKGRwLT5kaV9kYm0pOworICAgIGlmIChkYm1fc3RvcmUoc2VsZi0+ZGlfZGJtLCBkYm1fa2V5LCB2YWwsIERCTV9JTlNFUlQpIDwgMCkgeworICAgICAgICBkYm1fY2xlYXJlcnIoc2VsZi0+ZGlfZGJtKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLCAiY2Fubm90IGFkZCBpdGVtIHRvIGRhdGFiYXNlIik7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWZ2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBkZWZ2YWx1ZTsKKyAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM4MiwxNSArMzY3LDEwIEBACiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIGRibV9tZXRob2RzW10gPSB7Ci0gICAgeyJjbG9zZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGJtX19jbG9zZSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICAiY2xvc2UoKVxuQ2xvc2UgdGhlIGRhdGFiYXNlLiJ9LAotICAgIHsia2V5cyIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9rZXlzLCAgICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgImtleXMoKSAtPiBsaXN0XG5SZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4ifSwKLSAgICBEQk1fREJNX0dFVF9NRVRIT0RERUYKLSAgICB7InNldGRlZmF1bHQiLCAgICAgIChQeUNGdW5jdGlvbilkYm1fc2V0ZGVmYXVsdCwgICAgTUVUSF9WQVJBUkdTLAotICAgICAic2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSkgLT4gdmFsdWVcbiIKLSAgICAgIlJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4gIElmIGtleVxuIgotICAgICAiaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4ifSwKKyAgICBfREJNX0RCTV9DTE9TRV9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9LRVlTX01FVEhPRERFRgorICAgIF9EQk1fREJNX0dFVF9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9TRVRERUZBVUxUX01FVEhPRERFRgogICAgIHsiX19lbnRlcl9fIiwgZGJtX19lbnRlcl9fLCBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX2V4aXRfXyIsICBkYm1fX2V4aXRfXywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwpAQCAtNDMxLDcgKzQxMSw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIAotZGJtLm9wZW4gYXMgZGJtb3BlbgorX2RibS5vcGVuIGFzIGRibW9wZW4KIAogICAgIGZpbGVuYW1lOiBzdHIKICAgICAgICAgVGhlIGZpbGVuYW1lIHRvIG9wZW4uCkBAIC00NDksNDcgKzQyOSwxMCBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKLSJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKLSJcbiIKLSIgIGZpbGVuYW1lXG4iCi0iICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgotIiAgZmxhZ3NcbiIKLSIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKLSIgIG1vZGVcbiIKLSIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCi0iICAgIChlLmcuIG9zLk9fUkRXUikuIik7Ci0KLSNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsIGludCBtb2RlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0gICAgY29uc3QgY2hhciAqZmxhZ3MgPSAiciI7Ci0gICAgaW50IG1vZGUgPSA0Mzg7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInN8c2k6b3BlbiIsCi0gICAgICAgICZmaWxlbmFtZSwgJmZsYWdzLCAmbW9kZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLCBpbnQgbW9kZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTdiNzI1ZjljNGRjZWMyIGlucHV0PTY0OTlhYjBmYWIxMzMzYWNdKi8KK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZThkNGIzNmYyNWM3MzNmZCBpbnB1dD0yMjYzMzRiYWRlNTc2NGU2XSovCiB7CiAgICAgaW50IGlmbGFnczsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IGYwMDA4ODcuLjE2OTkxNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTU2NDAsNyArNTY0MCw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KQEAgLTU2NzIsNyArNTY3Miw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCBhNjQ5MGI5Li43MTAyOWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtMTksMjYgKzE5LDMwIEBACiBQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAogIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOwogCi1QeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAotZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZ2V0Y29udGV4dCwKKyJnZXRjb250ZXh0KCRtb2R1bGUsIC8pXG4tLVxuXG5cCitHZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LCJcblwKLXNldGNvbnRleHQoYykgLSBTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LAorInNldGNvbnRleHQoJG1vZHVsZSwgY29udGV4dCwgLylcbi0tXG5cblwKK1NldCBhIG5ldyBkZWZhdWx0IGNvbnRleHQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwiXG5cCi1sb2NhbGNvbnRleHQoY3R4PU5vbmUpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHRcblwKLWNvbnRleHQgdG8gYSBjb3B5IG9mIGN0eCBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlXG5cCi1wcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbiBleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpc1xuXAotc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwKKyJsb2NhbGNvbnRleHQoJG1vZHVsZSwgLywgY3R4PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIGEgY29weSBvZiBjdHhcblwKK29uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgZGVmYXVsdCBjb250ZXh0IHdoZW5cblwKK2V4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mIHRoZSBjdXJyZW50XG5cCitkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKIFxuIik7CiAKICNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCi1QeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCi1JRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAotb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCi1sZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorUHlEb2NfU1RSVkFSKGRvY19pZWVlX2NvbnRleHQsCisiSUVFRUNvbnRleHQoJG1vZHVsZSwgYml0cywgLylcbi0tXG5cblwKK1JldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvciBvbmUgb2YgdGhlXG5cCitJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIGFuZCBsZXNzXG5cCit0aGFuIElFRUVfQ09OVEVYVF9NQVhfQklUUy4gIEZvciB0aGUgbW9zdCBjb21tb24gdmFsdWVzLCB0aGUgY29uc3RhbnRzXG5cCiBERUNJTUFMMzIsIERFQ0lNQUw2NCBhbmQgREVDSU1BTDEyOCBhcmUgcHJvdmlkZWQuXG5cCiBcbiIpOwogI2VuZGlmCkBAIC00OCwzMiArNTIsMzQgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1QeURvY19TVFJWQVIoZG9jX2RlY2ltYWwsIlxuXAotRGVjaW1hbCh2YWx1ZT1cIjBcIiwgY29udGV4dD1Ob25lKTogQ29uc3RydWN0IGEgbmV3IERlY2ltYWwgb2JqZWN0LlxuXAotdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIG9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuXG5cCi1JZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0XG5cCi10aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBJbnZhbGlkT3BlcmF0aW9uXG5cCi10cmFwIGlzIGFjdGl2ZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfZGVjaW1hbCwKKyJEZWNpbWFsKHZhbHVlPVwiMFwiLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuICd2YWx1ZScgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsXG5cCitvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LiBJZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlXG5cCitjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmXG5cCit0aGUgSW52YWxpZE9wZXJhdGlvbiB0cmFwIGlzIGFjdGl2ZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYWRqdXN0ZWQsIlxuXAotYWRqdXN0ZWQoKSAtIFJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci5cblwKLVxuXAotRGVmaW5lZCBhcyBleHAgKyBkaWdpdHMgLSAxLlxuXAorUHlEb2NfU1RSVkFSKGRvY19hZGp1c3RlZCwKKyJhZGp1c3RlZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci4gIERlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAotYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2FzX3R1cGxlLAorImFzX3R1cGxlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLCJcblwKLWNhbm9uaWNhbCgpIC0gUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiBDdXJyZW50bHksXG5cCi10aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uXG5cCi1yZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKKyJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXAorb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIHJldHVybnMgaXRzXG5cCithcmd1bWVudCB1bmNoYW5nZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmUsIlxuXAotY29tcGFyZShvdGhlciwgY29udGV4dD1Ob25lKSAtIENvbXBhcmUgc2VsZiB0byBvdGhlci4gUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZSwKKyJjb21wYXJlKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSBzZWxmIHRvIG90aGVyLiAgUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKIFxuXAogICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJylcblwKICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJylcblwKQEAgLTgxLDE3ICs4NywxOCBAQAogICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLCJcblwKLWNvbXBhcmVfc2lnbmFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0XG5cCi1hbGwgTmFOcyBzaWduYWwuXG5cCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLAorImNvbXBhcmVfc2lnbmFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0IGFsbCBOYU5zIHNpZ25hbC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwiXG5cCi1jb21wYXJlX3RvdGFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXJcblwKLWFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGVcblwKLWNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuXG5cCi1Ud28gRGVjaW1hbCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zXG5cCi1jb21wYXJlIHVuZXF1YWwgaW4gdGhpcyBvcmRlcmluZzpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwKKyJjb21wYXJlX3RvdGFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW5cblwKK3RoZWlyIG51bWVyaWNhbCB2YWx1ZS4gIFNpbWlsYXIgdG8gdGhlIGNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0XG5cCitnaXZlcyBhIHRvdGFsIG9yZGVyaW5nIG9uIERlY2ltYWwgaW5zdGFuY2VzLiAgVHdvIERlY2ltYWwgaW5zdGFuY2VzIHdpdGhcblwKK3RoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsXG5cCitpbiB0aGlzIG9yZGVyaW5nOlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCiAgICAgRGVjaW1hbCgnLTEnKVxuXApAQCAtMTA3LDM2ICsxMTQsMzkgQEAKIEludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAotY29tcGFyZV90b3RhbF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAotYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKLWlnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4geC5jb21wYXJlX3RvdGFsX21hZyh5KSBpcyBlcXVpdmFsZW50IHRvXG5cCi14LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK0NvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyXG5cCit2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuXG5cCitcblwKK3guY29tcGFyZV90b3RhbF9tYWcoeSkgaXMgZXF1aXZhbGVudCB0byB4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb25qdWdhdGUsIlxuXAotY29uanVnYXRlKCkgLSBSZXR1cm4gc2VsZi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29uanVnYXRlLAorImNvbmp1Z2F0ZSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBzZWxmLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCi1jb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCi1pcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9hYnMsCisiY29weV9hYnMoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnlcblwKK2NvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X25lZ2F0ZSwiXG5cCi1jb3B5X25lZ2F0ZSgpIC0gUmV0dXJuIHRoZSBuZWdhdGlvbiBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uIGlzXG5cCi11bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsCisiY29weV9uZWdhdGUoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dFxuXAorYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoXG5cCi10aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9zaWduLAorImNvcHlfc2lnbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlXG5cCitzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gRm9yIGV4YW1wbGU6XG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSlcblwKICAgICBEZWNpbWFsKCctMi4zJylcblwKQEAgLTE0NiwxNCArMTU2LDE2IEBACiBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2V4cCwiXG5cCi1leHAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvblxuXAotZSoqeCBhdCB0aGUgZ2l2ZW4gbnVtYmVyLiBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlXG5cCi1hbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZXhwLAorImV4cCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGUqKnggYXQgdGhlIGdpdmVuXG5cCitudW1iZXIuICBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0XG5cCitpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZnJvbV9mbG9hdCwiXG5cCi1mcm9tX2Zsb2F0KGYpIC0gQ2xhc3MgbWV0aG9kIHRoYXQgY29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19mcm9tX2Zsb2F0LAorImZyb21fZmxvYXQoJHR5cGUsIGYsIC8pXG4tLVxuXG5cCitDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuXG5cCiBTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsXG5cCiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuXG5cCiBcblwKQEAgLTE2OCwxNTUgKzE4MCwxNzYgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19mbWEsIlxuXAotZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKSAtIEZ1c2VkIG11bHRpcGx5LWFkZC4gUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmRcblwKLXdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2ZtYSwKKyJmbWEoJHNlbGYsIC8sIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRnVzZWQgbXVsdGlwbHktYWRkLiAgUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmQgd2l0aCBubyByb3VuZGluZyBvZiB0aGVcblwKK2ludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgyKS5mbWEoMywgNSlcblwKICAgICBEZWNpbWFsKCcxMScpXG5cCiBcblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfY2Fub25pY2FsLCJcblwKLWlzX2Nhbm9uaWNhbCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGNhbm9uaWNhbCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotQ3VycmVudGx5LCBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzXG5cCi1yZXR1cm5zIFRydWUuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwKKyJpc19jYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuICBDdXJyZW50bHksXG5cCithIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzIHJldHVybnNcblwKK1RydWUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2Zpbml0ZSwiXG5cCi1pc19maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZpbml0ZSBudW1iZXIsIGFuZCBGYWxzZSBpZiB0aGVcblwKLWFyZ3VtZW50IGlzIGluZmluaXRlIG9yIGEgTmFOLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsCisiaXNfZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZmluaXRlIG51bWJlciwgYW5kIEZhbHNlIGlmIHRoZSBhcmd1bWVudFxuXAoraXMgaW5maW5pdGUgb3IgYSBOYU4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLCJcblwKLWlzX2luZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG5cCi1pbmZpbml0eSBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotXG4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19pc19uYW4sIlxuXAotaXNfbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLAorImlzX2luZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSBhbmRcblwKIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZVxuXAotbm9uLXplcm8gbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uXG5cCi1SZXR1cm4gRmFsc2UgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwKKyJpc19uYW4oJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kIEZhbHNlXG5cCitvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAotaXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBub3JtYWwgZmluaXRlIG5vbi16ZXJvIG51bWJlciB3aXRoIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRW1pbi4gUmV0dXJuIEZhbHNlIGlmIHRoZVxuXAorYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLCJcblwKLWlzX3NpZ25lZCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGhhcyBhIG5lZ2F0aXZlIHNpZ24gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuIE5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfcW5hbiwKKyJpc19xbmFuKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKLWlzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLAorImlzX3NpZ25lZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitOb3RlIHRoYXQgYm90aCB6ZXJvcyBhbmQgTmFOcyBjYW4gY2Fycnkgc2lnbnMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoY29udGV4dD1Ob25lKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZFxuXAotRmFsc2Ugb3RoZXJ3aXNlLiBBIG51bWJlciBpcyBzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhblxuXAotYWRqdXN0ZWQgZXhwb25lbnQgbGVzcyB0aGFuIEVtaW4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3NuYW4sCisiaXNfc25hbigkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCi1pc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwKKyJpc19zdWJub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzXG5cCitzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhbiBhZGp1c3RlZCBleHBvbmVudCBsZXNzXG5cCit0aGFuIEVtaW4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xuLCJcblwKLWxuKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3plcm8sCisiaXNfemVybygkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmQgRmFsc2VcblwKK290aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nMTAsIlxuXAotbG9nMTAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xuLAorImxuKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiBUaGUgZnVuY3Rpb24gYWx3YXlzXG5cCit1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nYiwiXG5cCi1sb2diKGNvbnRleHQ9Tm9uZSkgLSBGb3IgYSBub24temVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnRcblwKLW9mIHRoZSBvcGVyYW5kIGFzIGEgRGVjaW1hbCBpbnN0YW5jZS4gSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvLCB0aGVuXG5cCi1EZWNpbWFsKCctSW5maW5pdHknKSBpcyByZXR1cm5lZCBhbmQgdGhlIERpdmlzaW9uQnlaZXJvIGNvbmRpdGlvbiBpc1xuXAotcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLAorImxvZzEwKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZVxuXAorUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfYW5kLCJcblwKLWxvZ2ljYWxfYW5kKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGFuZCBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2IsCisibG9nYigkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRm9yIGEgbm9uLXplcm8gbnVtYmVyLCByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBvcGVyYW5kIGFzIGFcblwKK0RlY2ltYWwgaW5zdGFuY2UuICBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW4gRGVjaW1hbCgnLUluZmluaXR5JykgaXNcblwKK3JldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzIHJhaXNlZC4gSWYgdGhlIG9wZXJhbmQgaXNcblwKK2FuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCi0obG9naWNhbCkgb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgJ2FuZCcgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfb3IsIlxuXAotbG9naWNhbF9vcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBvciBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfaW52ZXJ0LAorImxvZ2ljYWxfaW52ZXJ0KCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZSAobG9naWNhbCkgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAotdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWdpdC13aXNlICdvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX21heCwiXG5cCi1tYXgob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhXG5cCi1xdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX3hvciwKKyJsb2dpY2FsX3hvcigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgZGlnaXQtd2lzZSAnZXhjbHVzaXZlIG9yJyBvZiB0aGUgdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWF4X21hZywiXG5cCi1tYXhfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWF4KCkgbWV0aG9kLCBidXQgdGhlXG5cCi1jb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX21heCwKKyJtYXgoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiAgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpc1xuXAorbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWluLCJcblwKLW1pbihvdGhlciwgY29udGV4dD1Ob25lKSAtIE1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGFcblwKLXF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsCisibWF4X21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1NpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlXG5cCit2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19taW5fbWFnLCJcblwKLW1pbl9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBTaW1pbGFyIHRvIHRoZSBtaW4oKSBtZXRob2QsIGJ1dCB0aGVcblwKLWNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluLAorIm1pbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK01pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXNcblwKK251bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAotbmV4dF9taW51cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAotZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKLWlzIHNtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGVcblwKK3ZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywiXG5cCi1uZXh0X3BsdXMoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlXG5cCi1naXZlbiBjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdFxuXAotaXMgbGFyZ2VyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsCisibmV4dF9taW51cygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGVcblwKK2N1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZVxuXAorZ2l2ZW4gb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAotbmV4dF90b3dhcmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm5cblwKLXRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKLUlmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCi13aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKG9yIGluIHRoZVxuXAorY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGVcblwKK2dpdmVuIG9wZXJhbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCi1ub3JtYWxpemUoY29udGV4dD1Ob25lKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0XG5cCi10cmFpbGluZyB6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS5cblwKLVVzZWQgZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3JcblwKLWV4YW1wbGUsIERlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZVxuXAotZXF1aXZhbGVudCB2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfdG93YXJkLAorIm5leHRfdG93YXJkKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUgdW5lcXVhbCwgcmV0dXJuIHRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3RcblwKK29wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuICBJZiBib3RoIG9wZXJhbmRzIGFyZVxuXAorbnVtZXJpY2FsbHkgZXF1YWwsIHJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXRcblwKK3RvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLCJcblwKLW51bWJlcl9jbGFzcyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZVxuXAotb3BlcmFuZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzOlxuXAorUHlEb2NfU1RSVkFSKGRvY19ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmRcblwKK2NvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byBEZWNpbWFsKCcwJykgdG8gRGVjaW1hbCgnMGUwJykuICBVc2VkXG5cCitmb3IgcHJvZHVjaW5nIGNhbm9uaWNhbCB2YWx1ZXMgZm9yIG1lbWJlcnMgb2YgYW4gZXF1aXZhbGVuY2UgY2xhc3MuXG5cCitGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemVcblwKK3RvIHRoZSBlcXVpdmFsZW50IHZhbHVlIERlY2ltYWwoJzMyLjEnKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLAorIm51bWJlcl9jbGFzcygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJldHVybmVkIHZhbHVlXG5cCitpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKIFxuXAogICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKICAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKQEAgLTMzMSw5ICszNjQsMTAgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGVcblwKLWZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgLywgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZVxuXAorZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAogICAgIERlY2ltYWwoJzEuNDE0JylcblwKQEAgLTM1MiwxMDMgKzM4NiwxMDkgQEAKIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JhZGl4LCJcblwKLXJhZGl4KCkgLSBSZXR1cm4gRGVjaW1hbCgxMCksIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIERlY2ltYWwgY2xhc3MgZG9lc1xuXAorUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwKKyJyYWRpeCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBEZWNpbWFsKDEwKSwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgRGVjaW1hbCBjbGFzcyBkb2VzXG5cCiBhbGwgaXRzIGFyaXRobWV0aWMuIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JlbWFpbmRlcl9uZWFyLCJcblwKLXJlbWFpbmRlcl9uZWFyKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBkaXZpZGluZ1xuXAotc2VsZiBieSBvdGhlci4gVGhpcyBkaWZmZXJzIGZyb20gc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlXG5cCi1yZW1haW5kZXIgaXMgY2hvc2VuIHNvIGFzIHRvIG1pbmltaXplIGl0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZVxuXAotcmV0dXJuIHZhbHVlIGlzIHNlbGYgLSBuICogb3RoZXIgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdFxuXAotdmFsdWUgb2Ygc2VsZiAvIG90aGVyLCBhbmQgaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmVcblwKLWlzIGNob3Nlbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nIHNlbGYgYnkgb3RoZXIuICBUaGlzIGRpZmZlcnMgZnJvbVxuXAorc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlIHJlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemVcblwKK2l0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZSByZXR1cm4gdmFsdWUgaXMgc2VsZiAtIG4gKiBvdGhlclxuXAord2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdCB2YWx1ZSBvZiBzZWxmIC8gb3RoZXIsIGFuZFxuXAoraWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUgaXMgY2hvc2VuLlxuXAogXG5cCiBJZiB0aGUgcmVzdWx0IGlzIHplcm8gdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHNlbGYuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwiXG5cCi1yb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZVxuXAotZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZCBvcGVyYW5kXG5cCi1tdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZVxuXAotdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHJvdGF0ZS4gSWYgdGhlIHNlY29uZFxuXAotb3BlcmFuZCBpcyBwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlXG5cCi1yaWdodC4gVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvXG5cCitQeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwKKyJyb3RhdGUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudFxuXAorc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW5cblwKK3RoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxuXAorb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUgdGhlbiByb3RhdGlvbiBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlIHJvdGF0aW9uIGlzIHRvIHRoZSByaWdodC5cblwKK1RoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0b1xuXAogbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmVcblwKIHVuY2hhbmdlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bShvdGhlciwgY29udGV4dD1Ob25lKSAtIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZVxuXAotc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlIE5hTi5cblwKK1B5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLAorInNhbWVfcXVhbnR1bSgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1Rlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUgTmFOLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zY2FsZWIsIlxuXAotc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIGV4cG9uZW50XG5cCi1hZGp1c3RlZCB0aGUgc2Vjb25kLiBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5XG5cCi0xMCoqb3RoZXIuIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwKKyJzY2FsZWIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWQgdGhlIHNlY29uZC4gIEVxdWl2YWxlbnRseSxcblwKK3JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5IDEwKipvdGhlci4gVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmVcblwKK2FuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3NoaWZ0LCJcblwKLXNoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZlxuXAotdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmRcblwKLW9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGVcblwKLWFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzaGlmdC5cblwKLUlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZVxuXAotdGhlIHNoaWZ0IGlzIHRvIHRoZSByaWdodC4gRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLlxuXAotVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX3NoaWZ0LAorInNoaWZ0KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnRcblwKK3NwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuICBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluXG5cCit0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcblwKK29wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUsIHRoZW4gdGhlIHNoaWZ0IGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2UgdGhlIHNoaWZ0IGlzIHRvIHRoZVxuXAorcmlnaHQuIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4gVGhlIHNpZ24gYW5kIGV4cG9uZW50XG5cCitvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zcXJ0LCJcblwKLXNxcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGFyZ3VtZW50IHRvIGZ1bGwgcHJlY2lzaW9uLlxuXAotVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuXG5cCitQeURvY19TVFJWQVIoZG9jX3NxcnQsCisic3FydCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSBST1VORF9IQUxGX0VWRU4gcm91bmRpbmcgbW9kZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9fZW5nX3N0cmluZywiXG5cCi10b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkgLSBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLlxuXAotRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmVcblwKLWFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJylcblwKLWlzIGNvbnZlcnRlZCB0byBEZWNpbWFsKCcxLjIzRSszJykuXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2VuZ19zdHJpbmcsCisidG9fZW5nX3N0cmluZygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4gIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudFxuXAord2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZSBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbFxuXAorcGxhY2UuIEZvciBleGFtcGxlLCBEZWNpbWFsKCcxMjNFKzEnKSBpcyBjb252ZXJ0ZWQgdG8gRGVjaW1hbCgnMS4yM0UrMycpLlxuXAogXG5cCiBUaGUgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4cG9uZW50IHNpZ24gaXMgbG93ZXJcblwKIG9yIHVwcGVyIGNhc2UuIE90aGVyd2lzZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcGVyYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsLCJcblwKLXRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBJZGVudGljYWwgdG8gdGhlXG5cCi10b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gVGhlIHRvX2ludGVncmFsKCkgbmFtZSBoYXMgYmVlbiBrZXB0XG5cCi1mb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLlxuXAorUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwKKyJ0b19pbnRlZ3JhbCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW5cblwKK2tlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCi1pbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy5cblwKLVRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZVxuXAotYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LAorInRvX2ludGVncmFsX2V4YWN0KCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmXG5cCityb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXJcblwKK2lmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGVcblwKK3JvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLAorInRvX2ludGVncmFsX3ZhbHVlKCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gIFRoZVxuXAorcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnlcblwKK3RoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZVxuXAogb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKLXRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAotaW50ZWdlciB3aXRob3V0IHNpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWRcblwKLWJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXJcblwKLXBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXNcblwKLXVzZWQuXG5cCi1cbiIpOwotCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotUHlEb2NfU1RSVkFSKGRvY19jb250ZXh0LCJcblwKK1B5RG9jX1NUUlZBUihkb2NfY29udGV4dCwKKyJDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpXG4tLVxuXG5cCiBUaGUgY29udGV4dCBhZmZlY3RzIGFsbW9zdCBhbGwgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgcm91bmRpbmcsXG5cCi1PdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNlcHRpb25zIGFuZCBtdWNoIG1vcmUuIEEgbmV3IGNvbnRleHRcblwKK092ZXIvVW5kZXJmbG93LCByYWlzaW5nIG9mIGV4Y2VwdGlvbnMgYW5kIG11Y2ggbW9yZS4gIEEgbmV3IGNvbnRleHRcblwKIGNhbiBiZSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzOlxuXAogXG5cCiAgICAgPj4+IGMgPSBDb250ZXh0KHByZWM9MjgsIEVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsXG5cCkBAIC00NjAsMzA4ICs1MDAsMzcyIEBACiBcbiIpOwogCiAjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQotUHlEb2NfU1RSVkFSKGRvY19jdHhfYXBwbHksIlxuXAotYXBwbHkoeCkgLSBBcHBseSBzZWxmIHRvIERlY2ltYWwgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LAorImFwcGx5KCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCiBcbiIpOwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKLWNsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl9mbGFncywKKyJjbGVhcl9mbGFncygkc2VsZiwgLylcbi0tXG5cblwKK1Jlc2V0IGFsbCBmbGFncyB0byBGYWxzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX3RyYXBzLCJcblwKLWNsZWFyX3RyYXBzKCkgLSBTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfdHJhcHMsCisiY2xlYXJfdHJhcHMoJHNlbGYsIC8pXG4tLVxuXG5cCitTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weSwiXG5cCi1jb3B5KCkgLSBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksCisiY29weSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dCB3aXRoIGFsbCBmbGFncyBjbGVhcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLCJcblwKLWNvcHlfZGVjaW1hbCh4KSAtIFJldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLAorImNvcHlfZGVjaW1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWwsIlxuXAotY3JlYXRlX2RlY2ltYWwoeCkgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIHgsIHVzaW5nIHNlbGYgYXMgdGhlXG5cCi1jb250ZXh0LiBVbmxpa2UgdGhlIERlY2ltYWwgY29uc3RydWN0b3IsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlIGNvbnRleHRcblwKLWxpbWl0cy5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsLAorImNyZWF0ZV9kZWNpbWFsKCRzZWxmLCBudW09XCIwXCIsIC8pXG4tLVxuXG5cCitDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIG51bSwgdXNpbmcgc2VsZiBhcyB0aGUgY29udGV4dC4gVW5saWtlIHRoZVxuXAorRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dCBsaW1pdHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LCJcblwKLWNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGZsb2F0IGYuXG5cCi1Vbmxpa2UgdGhlIERlY2ltYWwuZnJvbV9mbG9hdCgpIGNsYXNzIG1ldGhvZCwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGVcblwKLWNvbnRleHQgbGltaXRzLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyJjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCRzZWxmLCBmLCAvKVxuLS1cblxuXAorQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLiAgVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKVxuXAorY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKLUV0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCi1leHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCi1pcyBzZXQgdG8gRXRpbnkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdGlueSwKKyJFdGlueSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWVcblwKK2ZvciBzdWJub3JtYWwgcmVzdWx0cy4gIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50IGlzIHNldCB0byBFdGlueS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0b3AsIlxuXAotRXRvcCgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50XG5cCi1pZiB0aGUgX2NsYW1wIGZpZWxkIG9mIHRoZSBjb250ZXh0IGlzIHNldCB0byAxIChJRUVFIGNsYW1wIG1vZGUpLiBFdG9wKCkgbXVzdFxuXAotbm90IGJlIG5lZ2F0aXZlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRvcCwKKyJFdG9wKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiAgVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gIEV0b3AoKVxuXAorbXVzdCBub3QgYmUgbmVnYXRpdmUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9hYnMsIlxuXAotYWJzKHgpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWJzLAorImFicygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2FkZCwiXG5cCi1hZGQoeCwgeSkgLSBSZXR1cm4gdGhlIHN1bSBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWRkLAorImFkZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgc3VtIG9mIHggYW5kIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsIlxuXAotY2Fub25pY2FsKHgpIC0gUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsCisiY2Fub25pY2FsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLCJcblwKLWNvbXBhcmUoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLAorImNvbXBhcmUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3NpZ25hbCwiXG5cCi1jb21wYXJlX3NpZ25hbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS4gQWxsIE5hTnMgc2lnbmFsLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV9zaWduYWwsCisiY29tcGFyZV9zaWduYWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuICBBbGwgTmFOcyBzaWduYWwuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKLWNvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLAorImNvbXBhcmVfdG90YWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCi1jb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKLWlnbm9yaW5nIHNpZ24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiwgaWdub3Jpbmcgc2lnbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfYWJzLCJcblwKLWNvcHlfYWJzKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywKKyJjb3B5X2Ficygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAotY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfbmVnYXRlLAorImNvcHlfbmVnYXRlKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKHgsIHkpIC0gQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwKKyJjb3B5X3NpZ24oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKLWRpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZSwKKyJkaXZpZGUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCBkaXZpZGVkIGJ5IHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGVfaW50LCJcblwKLWRpdmlkZV9pbnQoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHksIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlX2ludCwKKyJkaXZpZGVfaW50KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHggZGl2aWRlZCBieSB5LCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2Rpdm1vZCwiXG5cCi1kaXZtb2QoeCwgeSkgLSBSZXR1cm4gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24geCAvIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsCisiZGl2bW9kKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKLWV4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9leHAsCisiZXhwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGUgKiogeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwiXG5cCi1mbWEoeCwgeSwgeikgLSBSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwKKyJmbWEoJHNlbGYsIHgsIHksIHosIC8pXG4tLVxuXG5cCitSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Nhbm9uaWNhbCwiXG5cCi1pc19jYW5vbmljYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGNhbm9uaWNhbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfY2Fub25pY2FsLAorImlzX2Nhbm9uaWNhbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc19maW5pdGUsIlxuXAotaXNfZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwKKyJpc19maW5pdGUoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAotaXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19pbmZpbml0ZSwKKyJpc19pbmZpbml0ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25hbiwiXG5cCi1pc19uYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcU5hTiBvciBzTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sCisiaXNfbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sIlxuXAotaXNfcW5hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sCisiaXNfcW5hbigkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NpZ25lZCwiXG5cCi1pc19zaWduZWQoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsCisiaXNfc2lnbmVkKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCi1pc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwKKyJpc19zbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHNpZ25hbGluZyBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIHN1Ym5vcm1hbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLAorImlzX3N1Ym5vcm1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKLWlzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfemVybywKKyJpc196ZXJvKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHplcm8sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2xuLCJcblwKLWxuKHgpIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sCisibG4oJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCi1sb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZzEwLAorImxvZzEwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwiXG5cCi1sb2diKHgpIC0gUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwKKyJsb2diKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsIlxuXAotbG9naWNhbF9hbmQoeCwgeSkgLSBEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoeCkgLSBJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsCisibG9naWNhbF9pbnZlcnQoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwiXG5cCi1sb2dpY2FsX29yKHgsIHkpIC0gRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3IoeCwgeSkgLSBEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsCisibG9naWNhbF94b3IoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LCJcblwKLW1heCh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LAorIm1heCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywiXG5cCi1tYXhfbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywKKyJtYXhfbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLCJcblwKLW1pbih4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLAorIm1pbigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywiXG5cCi1taW5fbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWludXMsIlxuXAotbWludXMoeCkgLSBNaW51cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IG1pbnVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKLWJ1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW51cywKKyJtaW51cygkc2VsZiwgeCwgLylcbi0tXG5cblwKK01pbnVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggbWludXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X211bHRpcGx5LCJcblwKLW11bHRpcGx5KHgsIHkpIC0gUmV0dXJuIHRoZSBwcm9kdWN0IG9mIHggYW5kIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9tdWx0aXBseSwKKyJtdWx0aXBseSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcHJvZHVjdCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywiXG5cCi1uZXh0X21pbnVzKHgpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywKKyJuZXh0X21pbnVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9wbHVzLCJcblwKLW5leHRfcGx1cyh4KSAtIFJldHVybiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCi1uZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwKKyJuZXh0X3Rvd2FyZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAotbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAotbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsCisibnVtYmVyX2NsYXNzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKLXBsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCi1idXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcGx1cywKKyJwbHVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUGx1cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IHBsdXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLCJcblwKLXBvd2VyKHgsIHkpIC0gQ29tcHV0ZSB4Kip5LiBJZiB4IGlzIG5lZ2F0aXZlLCB0aGVuIHkgbXVzdCBiZSBpbnRlZ3JhbC5cblwKLVRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyB5IGlzIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZVxuXAotYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuIEluIHRoZSBQeXRob24gdmVyc2lvblxuXAotdGhlIHJlc3VsdCBpcyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGluIHRoZSBDIHZlcnNpb24gdGhlIHJlc3VsdCBpc1xuXAotYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLAorInBvd2VyKCRzZWxmLCAvLCBhLCBiLCBtb2R1bG89Tm9uZSlcbi0tXG5cblwKK0NvbXB1dGUgYSoqYi4gSWYgJ2EnIGlzIG5lZ2F0aXZlLCB0aGVuICdiJyBtdXN0IGJlIGludGVncmFsLiBUaGUgcmVzdWx0XG5cCit3aWxsIGJlIGluZXhhY3QgdW5sZXNzICdhJyBpcyBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhblxuXAorYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiAgSW4gdGhlIFB5dGhvbiB2ZXJzaW9uIHRoZVxuXAorcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzIGFsbW9zdFxuXAorYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAogXG5cCi1wb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK0lmIG1vZHVsbyBpcyBnaXZlbiwgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zXG5cCitob2xkOlxuXAogXG5cCiAgICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWxcblwKLSAgICAqIHkgbXVzdCBiZSBub25uZWdhdGl2ZVxuXAotICAgICogYXQgbGVhc3Qgb25lIG9mIHggb3IgeSBtdXN0IGJlIG5vbnplcm9cblwKLSAgICAqIG0gbXVzdCBiZSBub256ZXJvIGFuZCBsZXNzIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWVcblwKKyAgICAqICdiJyBtdXN0IGJlIG5vbm5lZ2F0aXZlXG5cCisgICAgKiBhdCBsZWFzdCBvbmUgb2YgJ2EnIG9yICdiJyBtdXN0IGJlIG5vbnplcm9cblwKKyAgICAqIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZVxuXAogXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZSh4LCB5KSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yYWRpeCwiXG5cCi1yYWRpeCgpIC0gUmV0dXJuIDEwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmFkaXgsCisicmFkaXgoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gMTAuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAotcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAotdGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyLAorInJlbWFpbmRlcigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsXG5cCitpZiBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXJfbmVhciwiXG5cCi1yZW1haW5kZXJfbmVhcih4LCB5KSAtIFJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGVcblwKLWV4YWN0IHZhbHVlIG9mIHggLyB5IChpZiB0aGUgcmVzdWx0IGlzIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHgpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0IHZhbHVlIG9mIHggLyB5XG5cCisoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCi1yb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9yb3RhdGUsCisicm90YXRlKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4LCByb3RhdGVkIGJ5IHkgcGxhY2VzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bSh4LCB5KSAtIFJldHVybiBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NhbWVfcXVhbnR1bSwKKyJzYW1lX3F1YW50dW0oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9zY2FsZWIsIlxuXAotc2NhbGViKHgsIHkpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlXG5cCi10byBpdHMgZXhwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLAorInNjYWxlYigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2hpZnQsIlxuXAotc2hpZnQoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9zaGlmdCwKKyJzaGlmdCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCwgc2hpZnRlZCBieSB5IHBsYWNlcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsIlxuXAotc3FydCh4KSAtIFNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsCisic3FydCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1NxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LCJcblwKLXN1YnRyYWN0KHgsIHkpIC0gUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LAorInN1YnRyYWN0KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2VuZ19zdHJpbmcsIlxuXAotdG9fZW5nX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIGVuZ2luZWVyaW5nIG5vdGF0aW9uLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywKKyJ0b19lbmdfc3RyaW5nKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCi10b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsLAorInRvX2ludGVncmFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRvX2ludGVncmFsX3ZhbHVlKHgpLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3QoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpc1xuXAotcm91bmRlZCBvciBpbmV4YWN0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsCisidG9faW50ZWdyYWxfZXhhY3QoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpcyByb3VuZGVkIG9yIGluZXhhY3QuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwiXG5cCi10b19pbnRlZ3JhbF92YWx1ZSh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwKKyJ0b19pbnRlZ3JhbF92YWx1ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JvdW5kIHRvIGFuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLCJcblwKLXRvX3NjaV9zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLAorInRvX3NjaV9zdHJpbmcoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCiBcbiIpOwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CmluZGV4IDI3MTM3YjIuLmFiN2Q1YmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtMzYsNiArMzYsNyBAQAogZnJvbSByYW5kZGVjIGltcG9ydCByYW5kZmxvYXQsIGFsbF91bmFyeSwgYWxsX2JpbmFyeSwgYWxsX3Rlcm5hcnkKIGZyb20gcmFuZGRlYyBpbXBvcnQgdW5hcnlfb3B0YXJnLCBiaW5hcnlfb3B0YXJnLCB0ZXJuYXJ5X29wdGFyZwogZnJvbSBmb3JtYXRoZWxwZXIgaW1wb3J0IHJhbmRfZm9ybWF0LCByYW5kX2xvY2FsZQorZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfZGVjX2Zyb21fdHJpcGxlCiAKIEMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQogUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKQEAgLTM3MCw3ICszNzEsNyBAQAogICAgICAgICByZXR1cm4gYWJzKGEgLSBiKQogCiAgICAgZGVmIHN0YW5kYXJkX3VscChzZWxmLCBkZWMsIHByZWMpOgotICAgICAgICByZXR1cm4gUC5fZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGRlYy5fZXhwK2xlbihkZWMuX2ludCktcHJlYykKIAogICAgIGRlZiByb3VuZGluZ19kaXJlY3Rpb24oc2VsZiwgeCwgbW9kZSk6CiAgICAgICAgICIiIkRldGVybWluZSB0aGUgZWZmZWN0aXZlIGRpcmVjdGlvbiBvZiB0aGUgcm91bmRpbmcgd2hlbgpAQCAtNDAxLDEwICs0MDIsMTAgQEAKICAgICAgICAgIyBDb252ZXJ0IGluZmluaXRpZXMgdG8gdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgKyAxLgogICAgICAgICB4ID0gZXhhY3QKICAgICAgICAgaWYgZXhhY3QuaXNfaW5maW5pdGUoKToKLSAgICAgICAgICAgIHggPSBQLl9kZWNfZnJvbV90cmlwbGUoZXhhY3QuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorICAgICAgICAgICAgeCA9IF9kZWNfZnJvbV90cmlwbGUoZXhhY3QuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQogICAgICAgICB5ID0gcm91bmRlZAogICAgICAgICBpZiByb3VuZGVkLmlzX2luZmluaXRlKCk6Ci0gICAgICAgICAgICB5ID0gUC5fZGVjX2Zyb21fdHJpcGxlKHJvdW5kZWQuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorICAgICAgICAgICAgeSA9IF9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCiAKICAgICAgICAgIyBlcnIgPSAocm91bmRlZCAtIGV4YWN0KSAvIHVscChyb3VuZGVkKQogICAgICAgICBzZWxmLm1heGN0eC5wcmVjID0gcCAqIDIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IDEzNmYxOWMuLmVhNzcwNTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtMTEsNiArMTEsOCBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKQEAgLTE4NSw4ICsxODcsOCBAQAogICAgIFB5T2JqZWN0KiBhdHRyaWI7CiAKICAgICAvKiBjaGlsZCBlbGVtZW50cyAqLwotICAgIGludCBsZW5ndGg7IC8qIGFjdHVhbCBudW1iZXIgb2YgaXRlbXMgKi8KLSAgICBpbnQgYWxsb2NhdGVkOyAvKiBhbGxvY2F0ZWQgaXRlbXMgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsgLyogYWN0dWFsIG51bWJlciBvZiBpdGVtcyAqLworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAvKiBhbGxvY2F0ZWQgaXRlbXMgKi8KIAogICAgIC8qIHRoaXMgZWl0aGVyIHBvaW50cyB0byBfY2hpbGRyZW4gb3IgdG8gYSBtYWxsb2NlZCBidWZmZXIgKi8KICAgICBQeU9iamVjdCogKmNoaWxkcmVuOwpAQCAtMjUxLDcgKzI1Myw3IEBACiBkZWFsbG9jX2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7CiAgICAgRWxlbWVudE9iamVjdEV4dHJhICpteWV4dHJhOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCiAgICAgICAgIHJldHVybjsKQEAgLTM2OCw2ICszNzAsMTQgQEAKICAgICByZXR1cm4gYXR0cmliOwogfQogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2VsZW1lbnR0cmVlCitjbGFzcyBfZWxlbWVudHRyZWUuRWxlbWVudCAiRWxlbWVudE9iamVjdCAqIiAiJkVsZW1lbnRfVHlwZSIKK2NsYXNzIF9lbGVtZW50dHJlZS5UcmVlQnVpbGRlciAiVHJlZUJ1aWxkZXJPYmplY3QgKiIgIiZUcmVlQnVpbGRlcl9UeXBlIgorY2xhc3MgX2VsZW1lbnR0cmVlLlhNTFBhcnNlciAiWE1MUGFyc2VyT2JqZWN0ICoiICImWE1MUGFyc2VyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xNTlhYTUwYTU0MDYxYzIyXSovCisKIHN0YXRpYyBpbnQKIGVsZW1lbnRfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtNDI5LDkgKzQzOSw5IEBACiB9CiAKIExPQ0FMKGludCkKLWVsZW1lbnRfcmVzaXplKEVsZW1lbnRPYmplY3QqIHNlbGYsIGludCBleHRyYSkKK2VsZW1lbnRfcmVzaXplKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5X3NzaXplX3QgZXh0cmEpCiB7Ci0gICAgaW50IHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplOwogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CiAKICAgICAvKiBtYWtlIHN1cmUgc2VsZi0+Y2hpbGRyZW4gY2FuIGhvbGQgdGhlIGdpdmVuIG51bWJlciBvZiBleHRyYQpAQCAtNDQyLDcgKzQ1Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc2l6ZSA9IHNlbGYtPmV4dHJhLT5sZW5ndGggKyBleHRyYTsKKyAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOyAgLyogbmV2ZXIgb3ZlcmZsb3dzICovCiAKICAgICBpZiAoc2l6ZSA+IHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQpIHsKICAgICAgICAgLyogdXNlIFB5dGhvbiAyLjQncyBsaXN0IGdyb3d0aCBzdHJhdGVneSAqLwpAQCAtNDUzLDYgKzQ2Myw4IEBACiAgICAgICAgICAqIGJlIHNhZmUuCiAgICAgICAgICAqLwogICAgICAgICBzaXplID0gc2l6ZSA/IHNpemUgOiAxOworICAgICAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU1NJWkVfVF9NQVgvc2l6ZW9mKFB5T2JqZWN0KikpCisgICAgICAgICAgICBnb3RvIG5vbWVtb3J5OwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pIHsKICAgICAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyCiAgICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEKQEAgLTYxMyw3ICs2MjUsNyBAQAogICAgIFB5X1ZJU0lUKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICBpbnQgaTsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+YXR0cmliKTsKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgKytpKQpAQCAtNjU0LDI1ICs2NjYsMzMgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9hcHBlbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIGVsZW1lbnQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuYXBwZW5kCiAKLSAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudChzZWxmLCBlbGVtZW50KSA8IDApCisgICAgc3ViZWxlbWVudDogb2JqZWN0KHN1YmNsYXNzX29mPScmRWxlbWVudF9UeXBlJykKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJlbGVtZW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0YTg4NGI3Y2YyMjk1ZjQgaW5wdXQ9M2VkNjQ4YmViNWJmYTIyYV0qLworeworICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KHNlbGYsIHN1YmVsZW1lbnQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9jbGVhcm1ldGhvZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbGVhciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmNsZWFyCiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmNkN2E1MWY5NGNmZmY2IGlucHV0PTNjNzE5ZmY5NGJmNDVkZDZdKi8KK3sKICAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtNjg2LDE0ICs3MDYsMTcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9jb3B5KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGludCBpOwotICAgIEVsZW1lbnRPYmplY3QqIGVsZW1lbnQ7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX2NvcHlfXwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6X19jb3B5X18iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmM3MDFlYmZmNzI0Nzc4MSBpbnB1dD1hZDg3YWFlYmU5NTY3NWJmXSovCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIEVsZW1lbnRPYmplY3QqIGVsZW1lbnQ7CiAKICAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQoCiAgICAgICAgIHNlbGYtPnRhZywgKHNlbGYtPmV4dHJhKSA/IHNlbGYtPmV4dHJhLT5hdHRyaWIgOiBQeV9Ob25lKTsKQEAgLTcyNSwxMCArNzQ4LDE5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZGVlcGNvcHkoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX2RlZXBjb3B5X18KKworICAgIG1lbW86IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxZjE5ODUxZDE3YmYyMzkgaW5wdXQ9ZGYyNGMyYjYwMjQzMGI3N10qLwogewotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBFbGVtZW50T2JqZWN0KiBlbGVtZW50OwogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIGF0dHJpYjsKQEAgLTczNiwxMCArNzY4LDYgQEAKICAgICBQeU9iamVjdCogdGFpbDsKICAgICBQeU9iamVjdCogaWQ7CiAKLSAgICBQeU9iamVjdCogbWVtbzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86X19kZWVwY29weV9fIiwgJm1lbW8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHRhZyA9IGRlZXBjb3B5KHNlbGYtPnRhZywgbWVtbyk7CiAgICAgaWYgKCF0YWcpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODEwLDE3ICs4MzgsMjIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9zaXplb2YoUHlPYmplY3QqIG15c2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NpemVvZl9fIC0+IFB5X3NzaXplX3QKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY3Mzg2NzcyMTAwODAwMCBpbnB1dD03MGY0YjMyM2Q1NWExN2MxXSovCiB7Ci0gICAgRWxlbWVudE9iamVjdCAqc2VsZiA9IChFbGVtZW50T2JqZWN0KilteXNlbGY7CiAgICAgUHlfc3NpemVfdCByZXN1bHQgPSBzaXplb2YoRWxlbWVudE9iamVjdCk7CiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7CiAgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKTsKICAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQogICAgICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihQeU9iamVjdCopICogc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZDsKICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIGRpY3Qga2V5cyBmb3IgZ2V0c3RhdGUvc2V0c3RhdGUuICovCkBAIC04MzYsMTAgKzg2OSwxNiBAQAogICogYW55IHVubmVjZXNzYXJ5IHN0cnVjdHVyZXMgdGhlcmU7IGFuZCAoYikgaXQgYnV5cyBjb21wYXRpYmlsaXR5IHdpdGggMy4yCiAgKiBwaWNrbGVzLiAgU2VlIGlzc3VlICMxNjA3Ni4KICAqLworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19nZXRzdGF0ZV9fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfZ2V0c3RhdGUoRWxlbWVudE9iamVjdCAqc2VsZikKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcyNzlhZWViNmJiNWIwNCBpbnB1dD1mMGQxNmQ3ZWMyZjdhZGMxXSovCiB7Ci0gICAgaW50IGksIG5vYXR0cmliOworICAgIFB5X3NzaXplX3QgaSwgbm9hdHRyaWI7CiAgICAgUHlPYmplY3QgKmluc3RhbmNlZGljdCA9IE5VTEwsICpjaGlsZHJlbjsKIAogICAgIC8qIEJ1aWxkIGEgbGlzdCBvZiBjaGlsZHJlbi4gKi8KQEAgLTk1Miw2ICs5OTEsNyBAQAogLyogX19zZXRzdGF0ZV9fIGZvciBFbGVtZW50IGluc3RhbmNlIGZyb20gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KICAqICdzdGF0ZScgc2hvdWxkIGJlIHRoZSBpbnN0YW5jZSBkaWN0LgogICovCisKIHN0YXRpYyBQeU9iamVjdCAqCiBlbGVtZW50X3NldHN0YXRlX2Zyb21fUHl0aG9uKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKIHsKQEAgLTk3Nyw4ICsxMDE3LDE3IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19zZXRzdGF0ZV9fCisKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1lbGVtZW50X3NldHN0YXRlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKK19lbGVtZW50dHJlZV9FbGVtZW50X19fc2V0c3RhdGVfXyhFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWEyOGJmMzQ5MWIxZjc1ZSBpbnB1dD1hYWY4MGFiZWE3YzFlM2I5XSovCiB7CiAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChzdGF0ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTEwMzIsMjEgKzEwODEsMjYgQEAKICAgICByZXR1cm4gMTsgLyogdW5rbm93biB0eXBlOyBtaWdodCBiZSBwYXRoIGV4cHJlc3Npb24gKi8KIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9leHRlbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5leHRlbmQKKworICAgIGVsZW1lbnRzOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZWxlbWVudHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjZlNjdmYzJmZjUyOTE5MSBpbnB1dD04MDdiYzRmMzFjNjlmN2MwXSovCiB7CiAgICAgUHlPYmplY3QqIHNlcTsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeU9iamVjdCogc2VxX2luOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpleHRlbmQiLCAmc2VxX2luKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxX2luLCAiIik7CisgICAgc2VxID0gUHlTZXF1ZW5jZV9GYXN0KGVsZW1lbnRzLCAiIik7CiAgICAgaWYgKCFzZXEpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KAogICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImV4cGVjdGVkIHNlcXVlbmNlLCBub3QgXCIlLjIwMHNcIiIsIFB5X1RZUEUoc2VxX2luKS0+dHBfbmFtZQorICAgICAgICAgICAgImV4cGVjdGVkIHNlcXVlbmNlLCBub3QgXCIlLjIwMHNcIiIsIFB5X1RZUEUoZWxlbWVudHMpLT50cF9uYW1lCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDc3LDIzICsxMTMxLDI2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5maW5kCisKKyAgICBwYXRoOiBvYmplY3QKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MWI0M2YwZjBiZWNhZmFlIGlucHV0PTM1OWI2OTg1ZjY0ODlkMmVdKi8KIHsKLSAgICBpbnQgaTsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworICAgIFB5X3NzaXplX3QgaTsKICAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgIGlmIChjaGVja3BhdGgocGF0aCkgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmQpOwogICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKLSAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCBwYXRoLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogICAgIH0KIApAQCAtMTEwNiw3ICsxMTYzLDcgQEAKICAgICAgICAgaWYgKCFFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgoKEVsZW1lbnRPYmplY3QqKWl0ZW0pLT50YWcsIHRhZywgUHlfRVEpOworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgoKEVsZW1lbnRPYmplY3QqKWl0ZW0pLT50YWcsIHBhdGgsIFB5X0VRKTsKICAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0xMTE3LDI0ICsxMTc0LDI4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZmluZHRleHQKKworICAgIHBhdGg6IG9iamVjdAorICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04M2IzYmE0NTM1ZDMwOGQyIGlucHV0PWI1M2E4NWFhNWFhMmE5MTZdKi8KIHsKLSAgICBpbnQgaTsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbmR0ZXh0KTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgMH07CiAgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTzpmaW5kdGV4dCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCisgICAgaWYgKGNoZWNrcGF0aChwYXRoKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCisgICAgICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtMTE0OCw3ICsxMjA5LDcgQEAKICAgICAgICAgaWYgKCFFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLT50YWcsIHRhZywgUHlfRVEpOworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLT50YWcsIHBhdGgsIFB5X0VRKTsKICAgICAgICAgaWYgKHJjID4gMCkgewogICAgICAgICAgICAgUHlPYmplY3QqIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGl0ZW0pOwogICAgICAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkgewpAQCAtMTE2OCwxOSArMTIyOSwyMyBAQAogICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiBvdXQ7Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmZpbmRhbGwKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZGFsbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGg6IG9iamVjdAorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhMGJkOWY1NTQxYjcxMWQgaW5wdXQ9NGQ5ZTY1MDVhNjM4NTUwY10qLworeworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCogb3V0OworICAgIFB5T2JqZWN0KiB0YWcgPSBwYXRoOworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgewogICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKQEAgLTEyMTQsMzYgKzEyNzksNDEgQEAKICAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lml0ZXJmaW5kCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOml0ZXJmaW5kIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgcGF0aDogb2JqZWN0CisgICAgbmFtZXNwYWNlczogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lY2RkNTZkNjNiMTlkNDBmIGlucHV0PWFiYjk3NGUzNTBmYjY1YzddKi8KK3sKKyAgICBQeU9iamVjdCogdGFnID0gcGF0aDsKKyAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7CisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5nZXQKKworICAgIGtleTogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIzYzYxNDE0MjU5NWQ3NSBpbnB1dD1lZTE1M2JiZjhjZGIyNDZlXSovCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCAwfTsKLQotICAgIFB5T2JqZWN0KiBrZXk7Ci0gICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpnZXQiLCBrd2xpc3QsICZrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IGRlZmF1bHRfdmFsdWU7CkBAIC0xMjU3LDE3ICsxMzI3LDIwIEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldGNoaWxkcmVuKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZ2V0Y2hpbGRyZW4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU1MGZmZTExODYzN2IxNGYgaW5wdXQ9MGY3NTRkZmRlZDE1MGQ1Zl0qLwogewotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCogbGlzdDsKIAogICAgIC8qIEZJWE1FOiByZXBvcnQgYXMgZGVwcmVjYXRlZD8gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldGNoaWxkcmVuIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CiAKQEAgLTEyODksMjUgKzEzNjIsMzAgQEAKIGNyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCk7CiAKIAorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaXRlcgorCisgICAgdGFnOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZjQ5ZjlhODYyOTQxY2M1IGlucHV0PTc3NGQ1YjEyZTU3M2FlZGRdKi8KIHsKLSAgICBQeU9iamVjdCogdGFnID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7InRhZyIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOml0ZXIiLCBrd2xpc3QsICZ0YWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgdGFnLCAwKTsKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOml0ZXJ0ZXh0IikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaXRlcnRleHQKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmYTM0YjJmYmNiNjVkZjYgaW5wdXQ9YWY4ZjBlNDJjYjIzOWM4OV0qLworewogICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgUHlfTm9uZSwgMSk7CiB9CiAKQEAgLTEzMjksMTYgKzE0MDcsMjEgQEAKICAgICByZXR1cm4gc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2luZGV4XTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9pbnNlcnQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaW50IGk7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pbnNlcnQKIAotICAgIGludCBpbmRleDsKLSAgICBQeU9iamVjdCogZWxlbWVudDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPITppbnNlcnQiLCAmaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZFbGVtZW50X1R5cGUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW5kZXg6IFB5X3NzaXplX3QKKyAgICBzdWJlbGVtZW50OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZFbGVtZW50X1R5cGUnKQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5MGFkZmVmNGQ0MjRjMGIgaW5wdXQ9Y2Q2ZmJmY2RhYjUyZDdhOF0qLworeworICAgIFB5X3NzaXplX3QgaTsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCkBAIC0xMzU5LDMyICsxNDQyLDM4IEBACiAgICAgZm9yIChpID0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsgaSA+IGluZGV4OyBpLS0pCiAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSA9IHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpLTFdOwogCi0gICAgUHlfSU5DUkVGKGVsZW1lbnQpOwotICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpbmRleF0gPSBlbGVtZW50OworICAgIFB5X0lOQ1JFRihzdWJlbGVtZW50KTsKKyAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baW5kZXhdID0gc3ViZWxlbWVudDsKIAogICAgIHNlbGYtPmV4dHJhLT5sZW5ndGgrKzsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZW1zKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOml0ZW1zIikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaXRlbXMKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZkYjJjNzc4Y2UzZjVhNGQgaW5wdXQ9YWRiZTA5YWFlYTQ3NDQ0N10qLworewogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKIAogICAgIHJldHVybiBQeURpY3RfSXRlbXMoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfa2V5cyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjprZXlzIikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQua2V5cwogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9rZXlzX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzViZmFiYmYyMGVlYjNjIGlucHV0PWYwMmNhZjViNDk2YjViMGJdKi8KK3sKICAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IHNlbGYtPmV4dHJhLT5hdHRyaWIgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CiAKQEAgLTE0MDAsMTYgKzE0ODksMjIgQEAKICAgICByZXR1cm4gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9tYWtlZWxlbWVudChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lm1ha2VlbGVtZW50CisKKyAgICB0YWc6IG9iamVjdAorICAgIGF0dHJpYjogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDEwOTgzMmQ1YmI3ODllZiBpbnB1dD05NDgwZDFkMmUzZTY4MjM1XSovCiB7CiAgICAgUHlPYmplY3QqIGVsZW07CiAKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzptYWtlZWxlbWVudCIsICZ0YWcsICZhdHRyaWIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CiAgICAgaWYgKCFhdHRyaWIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQyMSwxNiArMTUxNiwyMSBAQAogICAgIHJldHVybiBlbGVtOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3JlbW92ZShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpbnQgaTsKLSAgICBpbnQgcmM7Ci0gICAgUHlPYmplY3QqIGVsZW1lbnQ7Ci0gICAgUHlPYmplY3QqIGZvdW5kOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQucmVtb3ZlCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3ViZWxlbWVudDogb2JqZWN0KHN1YmNsYXNzX29mPScmRWxlbWVudF9UeXBlJykKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJlbGVtZW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4ZmU2YzA3ZDZkODdkMWYgaW5wdXQ9ZDUyZmMyOGVkZWRjMGJkOF0qLworeworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgcmM7CisgICAgUHlPYmplY3QgKmZvdW5kOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewogICAgICAgICAvKiBlbGVtZW50IGhhcyBubyBjaGlsZHJlbiwgc28gcmFpc2UgZXhjZXB0aW9uICovCkBAIC0xNDQyLDkgKzE1NDIsOSBAQAogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSA9PSBlbGVtZW50KQorICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID09IHN1YmVsZW1lbnQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldLCBlbGVtZW50LCBQeV9FUSk7CisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSwgc3ViZWxlbWVudCwgUHlfRVEpOwogICAgICAgICBpZiAocmMgPiAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChyYyA8IDApCkBAIC0xNDUyLDcgKzE1NTIsNyBAQAogICAgIH0KIAogICAgIGlmIChpID49IHNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKLSAgICAgICAgLyogZWxlbWVudCBpcyBub3QgaW4gY2hpbGRyZW4sIHNvIHJhaXNlIGV4Y2VwdGlvbiAqLworICAgICAgICAvKiBzdWJlbGVtZW50IGlzIG5vdCBpbiBjaGlsZHJlbiwgc28gcmFpc2UgZXhjZXB0aW9uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAibGlzdC5yZW1vdmUoeCk6IHggbm90IGluIGxpc3QiCkBAIC0xNDc5LDE2ICsxNTc5LDIyIEBACiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgYXQgJXA+Iiwgc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfc2V0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuc2V0CisKKyAgICBrZXk6IG9iamVjdAorICAgIHZhbHVlOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X3NldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmI5Mzg4MDZiZTNjNTY1NiBpbnB1dD0xZWZlOTBmN2Q4MmIzZmU5XSovCiB7CiAgICAgUHlPYmplY3QqIGF0dHJpYjsKIAotICAgIFB5T2JqZWN0KiBrZXk7Ci0gICAgUHlPYmplY3QqIHZhbHVlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086c2V0IiwgJmtleSwgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CiAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTA4LDcgKzE2MTQsNyBAQAogZWxlbWVudF9zZXRpdGVtKFB5T2JqZWN0KiBzZWxmXywgUHlfc3NpemVfdCBpbmRleCwgUHlPYmplY3QqIGl0ZW0pCiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZiA9IChFbGVtZW50T2JqZWN0Kikgc2VsZl87Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0KiBvbGQ7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CkBAIC0xNzY5LDQzICsxODc1LDYgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBlbGVtZW50X21ldGhvZHNbXSA9IHsKLQotICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXJtZXRob2QsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsic2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3NldCwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0KLSAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9hcHBlbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZXh0ZW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9yZW1vdmUsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVydGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLQotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiaXRlbXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlbXMsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2tleXMsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Im1ha2VlbGVtZW50IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X21ha2VlbGVtZW50LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jb3B5LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2RlZXBjb3B5LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX19zaXplb2ZfXyIsIGVsZW1lbnRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWVsZW1lbnRfc2V0c3RhdGUsIE1FVEhfT30sCi0KLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfZ2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CkBAIC0xOTAyLDU0ICsxOTcxLDYgQEAKICAgICAwLAogfTsKIAotc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgZWxlbWVudF9hc19tYXBwaW5nID0gewotICAgIChsZW5mdW5jKSBlbGVtZW50X2xlbmd0aCwKLSAgICAoYmluYXJ5ZnVuYykgZWxlbWVudF9zdWJzY3IsCi0gICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKLSAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYyllbGVtZW50X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAmZWxlbWVudF9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgICZlbGVtZW50X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyllbGVtZW50X2djX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSllbGVtZW50X2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoRWxlbWVudE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyllbGVtZW50X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGVsZW1lbnRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLX07Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEVsZW1lbnQgaXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogRWxlbWVudEl0ZXJPYmplY3QgcmVwcmVzZW50cyB0aGUgaXRlcmF0aW9uIHN0YXRlIG92ZXIgYW4gWE1MIGVsZW1lbnQgaW4KQEAgLTIzMTIsMjMgKzIzMzMsMjQgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdDsKIH0KIAotc3RhdGljIGludAotdHJlZWJ1aWxkZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgMH07Ci0gICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7Ci0gICAgVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGZfdGIgPSAoVHJlZUJ1aWxkZXJPYmplY3QgKilzZWxmOwotICAgIFB5T2JqZWN0ICp0bXA7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuVHJlZUJ1aWxkZXIuX19pbml0X18KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzpUcmVlQnVpbGRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGVsZW1lbnRfZmFjdG9yeTogb2JqZWN0ID0gTlVMTAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MWNmYTc1NTg5NzBlZTk2IGlucHV0PTFiNDI0ZWVlZmMzNTI0OWNdKi8KK3sKKyAgICBQeU9iamVjdCAqdG1wOwogCiAgICAgaWYgKGVsZW1lbnRfZmFjdG9yeSkgewogICAgICAgICBQeV9JTkNSRUYoZWxlbWVudF9mYWN0b3J5KTsKLSAgICAgICAgdG1wID0gc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5OwotICAgICAgICBzZWxmX3RiLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7CisgICAgICAgIHRtcCA9IHNlbGYtPmVsZW1lbnRfZmFjdG9yeTsKKyAgICAgICAgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OwogICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgfQogCkBAIC0yNjQ4LDIzICsyNjcwLDMzIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogbWV0aG9kcyAoaW4gYWxwaGFiZXRpY2FsIG9yZGVyKSAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBQeU9iamVjdCogZGF0YTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZGF0YSIsICZkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuVHJlZUJ1aWxkZXIuZGF0YQogCisgICAgZGF0YTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YShUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRhdGEpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkxNDRjNzEwMDc5NWJiMiBpbnB1dD1hMDU0MGM1MzJiMjg0ZDI5XSovCit7CiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9kYXRhKHNlbGYsIGRhdGEpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl9lbmQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmVuZCIsICZ0YWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5lbmQKIAorICAgIHRhZzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZW5kKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhOTg3MjdjYzY5MWNkOWQgaW5wdXQ9MjJkYzM2NzQyMzZmNTc0NV0qLworewogICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfZW5kKHNlbGYsIHRhZyk7CiB9CiAKQEAgLTI2ODQsNzYgKzI3MTYsMzUgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl9jbG9zZShUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Y2xvc2UiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuVHJlZUJ1aWxkZXIuY2xvc2UKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQ0MWZlZTMyMDJmNjFlZSBpbnB1dD1mN2M5YzY1ZGM3MThkZTE0XSovCit7CiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2RvbmUoc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX3N0YXJ0KFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5zdGFydAorCisgICAgdGFnOiBvYmplY3QKKyAgICBhdHRyczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTdlOWRjMjg2MTM0OTQxMSBpbnB1dD05NWZjMTc1OGRkMDQyYzY1XSovCiB7Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogYXR0cmliID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TzpzdGFydCIsICZ0YWcsICZhdHRyaWIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOworICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoc2VsZiwgdGFnLCBhdHRycyk7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiB0cmVlYnVpbGRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJkYXRhIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9kYXRhLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic3RhcnQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX3N0YXJ0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9lbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFRyZWVCdWlsZGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5UcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCi0gICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpdHJlZWJ1aWxkZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpdHJlZWJ1aWxkZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpdHJlZWJ1aWxkZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICB0cmVlYnVpbGRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCi19OwotCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogdGhlIGV4cGF0IGludGVyZmFjZSAqLwogCkBAIC0yODY5LDEyICsyODYwLDEzIEBACiAgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCiAqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBQeV9zc2l6ZV90IGxpbmUsIFB5X3NzaXplX3QgY29sdW1uLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlemQsIGNvbHVtbiAlemQiLAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAogICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQpAQCAtMjg5OCw3ICsyODkwLDcgQEAKICAgICB9CiAgICAgUHlfREVDUkVGKGNvZGUpOwogCi0gICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKKyAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihubikiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzI1OSwzMyArMzI1MSwzNCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9faW5pdF9fCisKKyAgICBodG1sOiBvYmplY3QgPSBOVUxMCisgICAgdGFyZ2V0OiBvYmplY3QgPSBOVUxMCisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci14bWxwYXJzZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhcmdldCwgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDZhMTZjNjNkZGE1NDQ0MSBpbnB1dD0xNTViYzU2OTViYWFmZmZkXSovCiB7Ci0gICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmX3hwID0gKFhNTFBhcnNlck9iamVjdCAqKXNlbGY7Ci0gICAgUHlPYmplY3QgKnRhcmdldCA9IE5VTEwsICpodG1sID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIDB9OworICAgIHNlbGYtPmVudGl0eSA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGYtPmVudGl0eSkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT3o6WE1MUGFyc2VyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CisgICAgc2VsZi0+bmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKCFzZWxmLT5uYW1lcykgeworICAgICAgICBQeV9DTEVBUihzZWxmLT5lbnRpdHkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc2VsZl94cC0+ZW50aXR5ID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZl94cC0+ZW50aXR5KQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBzZWxmX3hwLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIXNlbGZfeHAtPm5hbWVzKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBzZWxmX3hwLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOwotICAgIGlmICghc2VsZl94cC0+cGFyc2VyKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKKyAgICBzZWxmLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOworICAgIGlmICghc2VsZi0+cGFyc2VyKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPm5hbWVzKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMyOTUsNTUgKzMyODgsNTUgQEAKICAgICB9IGVsc2UgewogICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoJlRyZWVCdWlsZGVyX1R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXRhcmdldCkgewotICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKLSAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGZfeHAtPnBhcnNlcik7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5lbnRpdHkpOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOworICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBzZWxmX3hwLT50YXJnZXQgPSB0YXJnZXQ7CisgICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OwogCi0gICAgc2VsZl94cC0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CisgICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOworICAgIHNlbGYtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7CisgICAgc2VsZi0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7CisgICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKKyAgICBzZWxmLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7CisgICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGYtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CiAKICAgICBQeUVycl9DbGVhcigpOwogCiAgICAgLyogY29uZmlndXJlIHBhcnNlciAqLwotICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmX3hwLT5wYXJzZXIsIHNlbGZfeHApOworICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmLT5wYXJzZXIsIHNlbGYpOwogICAgIEVYUEFUKFNldEVsZW1lbnRIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnRFbGVtZW50SGFuZGxlcikgZXhwYXRfc3RhcnRfaGFuZGxlciwKICAgICAgICAgKFhNTF9FbmRFbGVtZW50SGFuZGxlcikgZXhwYXRfZW5kX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXREZWZhdWx0SGFuZGxlckV4cGFuZCkoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX0RlZmF1bHRIYW5kbGVyKSBleHBhdF9kZWZhdWx0X2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRDaGFyYWN0ZXJEYXRhSGFuZGxlcikoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyKSBleHBhdF9kYXRhX2hhbmRsZXIKICAgICAgICAgKTsKLSAgICBpZiAoc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQpCisgICAgaWYgKHNlbGYtPmhhbmRsZV9jb21tZW50KQogICAgICAgICBFWFBBVChTZXRDb21tZW50SGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX0NvbW1lbnRIYW5kbGVyKSBleHBhdF9jb21tZW50X2hhbmRsZXIKICAgICAgICAgICAgICk7Ci0gICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9waSkKKyAgICBpZiAoc2VsZi0+aGFuZGxlX3BpKQogICAgICAgICBFWFBBVChTZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgZXhwYXRfcGlfaGFuZGxlcgogICAgICAgICAgICAgKTsKICAgICBFWFBBVChTZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcikoCi0gICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAoWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIEVYUEFUKERlZmF1bHRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSwgTlVMTAogICAgICAgICApOwogCkBAIC0zNDE5LDE1ICszNDEyLDE4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9jbG9zZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5jbG9zZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2OGQzNzVkZDIzYmM3ZmIgaW5wdXQ9Y2E3OTA5Y2E3OGMzYWJmZV0qLwogewogICAgIC8qIGVuZCBmZWVkaW5nIGRhdGEgdG8gcGFyc2VyICovCiAKICAgICBQeU9iamVjdCogcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsb3NlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzID0gZXhwYXRfcGFyc2Uoc2VsZiwgIiIsIDAsIDEpOwogICAgIGlmICghcmVzKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM0NDUsMTUgKzM0NDEsMjQgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9mZWVkKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuZmVlZAorCisgICAgZGF0YTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2ZlZWQoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDJiNmE3OGVlYzc0NDZkIGlucHV0PWZlMjMxYjZiOGRlM2NlMWZdKi8KIHsKICAgICAvKiBmZWVkIGRhdGEgdG8gcGFyc2VyICovCiAKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGRhdGEpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgZGF0YV9sZW47Ci0gICAgICAgIGNvbnN0IGNoYXIgKmRhdGEgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZkYXRhX2xlbik7Ci0gICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIGNvbnN0IGNoYXIgKmRhdGFfcHRyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoZGF0YSwgJmRhdGFfbGVuKTsKKyAgICAgICAgaWYgKGRhdGFfcHRyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGRhdGFfbGVuID4gSU5UX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzaXplIGRvZXMgbm90IGZpdCBpbiBhbiBpbnQiKTsKQEAgLTM0NjEsMTIgKzM0NjYsMTIgQEAKICAgICAgICAgfQogICAgICAgICAvKiBFeHBsaWNpdGx5IHNldCBVVEYtOCBlbmNvZGluZy4gUmV0dXJuIGNvZGUgaWdub3JlZC4gKi8KICAgICAgICAgKHZvaWQpRVhQQVQoU2V0RW5jb2RpbmcpKHNlbGYtPnBhcnNlciwgInV0Zi04Iik7Ci0gICAgICAgIHJldHVybiBleHBhdF9wYXJzZShzZWxmLCBkYXRhLCAoaW50KWRhdGFfbGVuLCAwKTsKKyAgICAgICAgcmV0dXJuIGV4cGF0X3BhcnNlKHNlbGYsIGRhdGFfcHRyLCAoaW50KWRhdGFfbGVuLCAwKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3OwogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKQorICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRhdGEsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAodmlldy5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKQEAgLTM0NzksOCArMzQ4NCwxNyBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX3BhcnNlX3dob2xlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9wYXJzZV93aG9sZQorCisgICAgZmlsZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19wYXJzZV93aG9sZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3OTcxOTdiYjgxOGRkYTMgaW5wdXQ9MTllY2M4OTNiNmYzZTc1Ml0qLwogewogICAgIC8qIChpbnRlcm5hbCkgcGFyc2UgdGhlIHdob2xlIGlucHV0LCB1bnRpbCBlbmQgb2Ygc3RyZWFtICovCiAgICAgUHlPYmplY3QqIHJlYWRlcjsKQEAgLTM0ODgsMTEgKzM1MDIsNyBAQAogICAgIFB5T2JqZWN0KiB0ZW1wOwogICAgIFB5T2JqZWN0KiByZXM7CiAKLSAgICBQeU9iamVjdCogZmlsZW9iajsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86X3BhcnNlIiwgJmZpbGVvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZW9iaiwgInJlYWQiKTsKKyAgICByZWFkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkIik7CiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0zNTI3LDggKzM1MzcsMTQgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlYWRlcik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInNpemUgZG9lcyBub3QgZml0IGluIGFuIGludCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgcmVzID0gZXhwYXRfcGFyc2UoCi0gICAgICAgICAgICBzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlciksIDAKKyAgICAgICAgICAgIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIChpbnQpUHlCeXRlc19HRVRfU0laRShidWZmZXIpLCAwCiAgICAgICAgICAgICApOwogCiAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwpAQCAtMzU1MywyNSArMzU2OSwzNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLmRvY3R5cGUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwOWZkYjljNDVmM2E2MDIgaW5wdXQ9MjBkNWUwZmViZjkwMmEyZl0qLwogewogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfc2V0ZXZlbnRzKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9zZXRldmVudHMKKworICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMaXN0X1R5cGUnKQorICAgIGV2ZW50c190b19yZXBvcnQ6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PTU5ZGI5NzQyOTEwYzYxNzRdKi8KIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogICAgIFB5X3NzaXplX3QgaSwgc2VxbGVuOwogICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0YXJnZXQ7Ci0KLSAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOwotICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqZXZlbnRzX3NlcTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsICAmUHlMaXN0X1R5cGUsICZldmVudHNfcXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudHNfdG9fcmVwb3J0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0zNjU1LDE1ICszNjgzLDYgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHhtbHBhcnNlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZmVlZCwgTUVUSF9PfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfcGFyc2Vfd2hvbGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZV93aG9sZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9zZXRldmVudHMsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHhtbHBhcnNlcl9nZXRhdHRybyhYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQogewpAQCAtMzY4OCw2ICszNzA3LDE1MiBAQAogICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QqKSBzZWxmLCBuYW1lb2JqKTsKIH0KIAorI2luY2x1ZGUgImNsaW5pYy9fZWxlbWVudHRyZWUuYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgZWxlbWVudF9tZXRob2RzW10gPSB7CisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9DTEVBUl9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9TRVRfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRURVhUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRBTExfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9BUFBFTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRVhURU5EX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lOU0VSVF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9SRU1PVkVfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRgorCisgICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfS0VZU19NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX01BS0VFTEVNRU5UX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19DT1BZX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0laRU9GX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19HRVRTVEFURV9fX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fU0VUU1RBVEVfX19NRVRIT0RERUYKKworICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgZWxlbWVudF9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKSBlbGVtZW50X2xlbmd0aCwKKyAgICAoYmluYXJ5ZnVuYykgZWxlbWVudF9zdWJzY3IsCisgICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyllbGVtZW50X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAmZWxlbWVudF9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZlbGVtZW50X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyllbGVtZW50X2djX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSllbGVtZW50X2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoRWxlbWVudE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyllbGVtZW50X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsZW1lbnRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0cmVlYnVpbGRlcl9tZXRob2RzW10gPSB7CisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0RBVEFfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX1NUQVJUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9FTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0NMT1NFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBUcmVlQnVpbGRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAorICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRyZWVidWlsZGVyX2djX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXRyZWVidWlsZGVyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHRyZWVidWlsZGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fLCAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgdHJlZWJ1aWxkZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHhtbHBhcnNlcl9tZXRob2RzW10gPSB7CisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9GRUVEX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfQ0xPU0VfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fUEFSU0VfV0hPTEVfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fU0VURVZFTlRTX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfRE9DVFlQRV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgWE1MUGFyc2VyX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5YTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKQEAgLTM3MjQsNyArMzg4OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyl4bWxwYXJzZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fLCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICB4bWxwYXJzZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCkBAIC0zNzkxLDcgKzM5NTYsNyBAQAogICAgIGlmIChleHBhdF9jYXBpKSB7CiAgICAgICAgIC8qIGNoZWNrIHRoYXQgaXQncyB1c2FibGUgKi8KICAgICAgICAgaWYgKHN0cmNtcChleHBhdF9jYXBpLT5tYWdpYywgUHlFeHBhdF9DQVBJX01BR0lDKSAhPSAwIHx8Ci0gICAgICAgICAgICBleHBhdF9jYXBpLT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBQeUV4cGF0X0NBUEkpIHx8CisgICAgICAgICAgICAoc2l6ZV90KWV4cGF0X2NhcGktPnNpemUgPCBzaXplb2Yoc3RydWN0IFB5RXhwYXRfQ0FQSSkgfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1BSk9SX1ZFUlNJT04gIT0gWE1MX01BSk9SX1ZFUlNJT04gfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1JTk9SX1ZFUlNJT04gIT0gWE1MX01JTk9SX1ZFUlNJT04gfHwKICAgICAgICAgICAgIGV4cGF0X2NhcGktPk1JQ1JPX1ZFUlNJT04gIT0gWE1MX01JQ1JPX1ZFUlNJT04pIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggMjRkYTY3Ny4uOTViNWIxMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTI1LDcgKzI1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwYXJ0aWFsX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmM7CisgICAgUHlPYmplY3QgKmZ1bmMsICpwYXJncywgKm5hcmdzLCAqcGt3OwogICAgIHBhcnRpYWxvYmplY3QgKnB0bzsKIAogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDwgMSkgewpAQCAtMzQsNyArMzQsMTYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgcGFyZ3MgPSBwa3cgPSBQeV9Ob25lOwogICAgIGZ1bmMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIGlmIChQeV9UWVBFKGZ1bmMpID09ICZwYXJ0aWFsX3R5cGUgJiYgdHlwZSA9PSAmcGFydGlhbF90eXBlKSB7CisgICAgICAgIHBhcnRpYWxvYmplY3QgKnBhcnQgPSAocGFydGlhbG9iamVjdCAqKWZ1bmM7CisgICAgICAgIGlmIChwYXJ0LT5kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHBhcmdzID0gcGFydC0+YXJnczsKKyAgICAgICAgICAgIHBrdyA9IHBhcnQtPmt3OworICAgICAgICAgICAgZnVuYyA9IHBhcnQtPmZuOworICAgICAgICB9CisgICAgfQogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIik7CkBAIC00OCwxOCArNTcsNjMgQEAKIAogICAgIHB0by0+Zm4gPSBmdW5jOwogICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICBwdG8tPmFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIFBZX1NTSVpFX1RfTUFYKTsKLSAgICBpZiAocHRvLT5hcmdzID09IE5VTEwpIHsKKworICAgIG5hcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBQWV9TU0laRV9UX01BWCk7CisgICAgaWYgKG5hcmdzID09IE5VTEwpIHsKKyAgICAgICAgcHRvLT5hcmdzID0gTlVMTDsKICAgICAgICAgcHRvLT5rdyA9IE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihwdG8pOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcHRvLT5rdyA9IChrdyAhPSBOVUxMKSA/IFB5RGljdF9Db3B5KGt3KSA6IFB5RGljdF9OZXcoKTsKLSAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwdG8pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocGFyZ3MgPT0gUHlfTm9uZSB8fCBQeVR1cGxlX0dFVF9TSVpFKHBhcmdzKSA9PSAwKSB7CisgICAgICAgIHB0by0+YXJncyA9IG5hcmdzOworICAgICAgICBQeV9JTkNSRUYobmFyZ3MpOwogICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKG5hcmdzKSA9PSAwKSB7CisgICAgICAgIHB0by0+YXJncyA9IHBhcmdzOworICAgICAgICBQeV9JTkNSRUYocGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcHRvLT5hcmdzID0gUHlTZXF1ZW5jZV9Db25jYXQocGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHB0by0+YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwdG8pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKG5hcmdzKTsKIAorICAgIGlmIChrdyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwa3cgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9Db3B5KGt3KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBQeURpY3RfQ29weShwa3cpOworICAgICAgICAgICAgaWYgKHB0by0+a3cgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfTWVyZ2UocHRvLT5rdywga3csIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAocGt3ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAocHRvLT5rdyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gcGt3OworICAgICAgICAgICAgUHlfSU5DUkVGKHBrdyk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBwdG8tPndlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBwdG8tPmRpY3QgPSBOVUxMOwpAQCAtNTM2LDYgKzU5MCw1NDkgQEAKIG9mIHRoZSBzZXF1ZW5jZSBpbiB0aGUgY2FsY3VsYXRpb24sIGFuZCBzZXJ2ZXMgYXMgYSBkZWZhdWx0IHdoZW4gdGhlXG5cCiBzZXF1ZW5jZSBpcyBlbXB0eS4iKTsKIAorLyogbHJ1X2NhY2hlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiB0aGlzIG9iamVjdCBpcyB1c2VkIGRlbGltaXQgYXJncyBhbmQga2V5d29yZHMgaW4gdGhlIGNhY2hlIGtleXMgKi8KK3N0YXRpYyBQeU9iamVjdCAqa3dkX21hcmsgPSBOVUxMOworCitzdHJ1Y3QgbHJ1X2xpc3RfZWxlbTsKK3N0cnVjdCBscnVfY2FjaGVfb2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCBscnVfbGlzdF9lbGVtIHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgc3RydWN0IGxydV9saXN0X2VsZW0gKnByZXYsICpuZXh0OyAgLyogYm9ycm93ZWQgbGlua3MgKi8KKyAgICBQeU9iamVjdCAqa2V5LCAqcmVzdWx0OworfSBscnVfbGlzdF9lbGVtOworCitzdGF0aWMgdm9pZAorbHJ1X2xpc3RfZWxlbV9kZWFsbG9jKGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sobGluayk7CisgICAgUHlfWERFQ1JFRihsaW5rLT5rZXkpOworICAgIFB5X1hERUNSRUYobGluay0+cmVzdWx0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwobGluayk7Cit9CisKK3N0YXRpYyBpbnQKK2xydV9saXN0X2VsZW1fdHJhdmVyc2UobHJ1X2xpc3RfZWxlbSAqbGluaywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQobGluay0+a2V5KTsKKyAgICBQeV9WSVNJVChsaW5rLT5yZXN1bHQpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitscnVfbGlzdF9lbGVtX2NsZWFyKGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgUHlfQ0xFQVIobGluay0+a2V5KTsKKyAgICBQeV9DTEVBUihsaW5rLT5yZXN1bHQpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IGxydV9saXN0X2VsZW1fdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJmdW5jdG9vbHMuX2xydV9saXN0X2VsZW0iLCAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YobHJ1X2xpc3RfZWxlbSksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilscnVfbGlzdF9lbGVtX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylscnVfbGlzdF9lbGVtX3RyYXZlcnNlLCAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlscnVfbGlzdF9lbGVtX2NsZWFyLCAgICAgICAvKiB0cF9jbGVhciAqLworfTsKKworCit0eXBlZGVmIFB5T2JqZWN0ICooKmxydV9jYWNoZV90ZXJuYXJ5ZnVuYykoc3RydWN0IGxydV9jYWNoZV9vYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3R5cGVkZWYgc3RydWN0IGxydV9jYWNoZV9vYmplY3QgeworICAgIGxydV9saXN0X2VsZW0gcm9vdDsgIC8qIGluY2x1ZGVzIFB5T2JqZWN0X0hFQUQgKi8KKyAgICBQeV9zc2l6ZV90IG1heHNpemU7CisgICAgUHlPYmplY3QgKm1heHNpemVfTzsKKyAgICBQeU9iamVjdCAqZnVuYzsKKyAgICBscnVfY2FjaGVfdGVybmFyeWZ1bmMgd3JhcHBlcjsKKyAgICBQeU9iamVjdCAqY2FjaGU7CisgICAgUHlPYmplY3QgKmNhY2hlX2luZm9fdHlwZTsKKyAgICBQeV9zc2l6ZV90IG1pc3NlcywgaGl0czsKKyAgICBpbnQgdHlwZWQ7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgaW50IGZ1bGw7Cit9IGxydV9jYWNoZV9vYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2NhY2hlX3R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCitscnVfY2FjaGVfbWFrZV9rZXkoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgdHlwZWQpCit7CisgICAgUHlPYmplY3QgKmtleSwgKnNvcnRlZF9pdGVtczsKKyAgICBQeV9zc2l6ZV90IGtleV9zaXplLCBwb3MsIGtleV9wb3M7CisKKyAgICAvKiBzaG9ydCBwYXRoLCBrZXkgd2lsbCBtYXRjaCBhcmdzIGFueXdheSwgd2hpY2ggaXMgYSB0dXBsZSAqLworICAgIGlmICghdHlwZWQgJiYgIWt3ZHMpIHsKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoa3dkcyAmJiBQeURpY3RfU2l6ZShrd2RzKSA+IDApIHsKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gUHlEaWN0X0l0ZW1zKGt3ZHMpOworICAgICAgICBpZiAoIXNvcnRlZF9pdGVtcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMaXN0X1NvcnQoc29ydGVkX2l0ZW1zKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzb3J0ZWRfaXRlbXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gTlVMTDsKKworICAgIGtleV9zaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBrZXlfc2l6ZSArPSBQeUxpc3RfR0VUX1NJWkUoc29ydGVkX2l0ZW1zKTsKKyAgICBpZiAodHlwZWQpCisgICAgICAgIGtleV9zaXplICo9IDI7CisgICAgaWYgKHNvcnRlZF9pdGVtcykKKyAgICAgICAga2V5X3NpemUrKzsKKworICAgIGtleSA9IFB5VHVwbGVfTmV3KGtleV9zaXplKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGtleV9wb3MgPSAwOworICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlUdXBsZV9HRVRfU0laRShhcmdzKTsgKytwb3MpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIHBvcyk7CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgfQorICAgIGlmIChzb3J0ZWRfaXRlbXMpIHsKKyAgICAgICAgUHlfSU5DUkVGKGt3ZF9tYXJrKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywga3dkX21hcmspOworICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOyArK3BvcykgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeUxpc3RfR0VUX0lURU0oc29ydGVkX2l0ZW1zLCBwb3MpOworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHR5cGVkKSB7CisgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlUdXBsZV9HRVRfU0laRShhcmdzKTsgKytwb3MpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gKFB5T2JqZWN0ICopUHlfVFlQRShQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIHBvcykpOworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvcnRlZF9pdGVtcykgeworICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeUxpc3RfR0VUX1NJWkUoc29ydGVkX2l0ZW1zKTsgKytwb3MpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHBfaXRlbXMgPSBQeUxpc3RfR0VUX0lURU0oc29ydGVkX2l0ZW1zLCBwb3MpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gKFB5T2JqZWN0ICopUHlfVFlQRShQeVR1cGxlX0dFVF9JVEVNKHRwX2l0ZW1zLCAxKSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5LCBrZXlfcG9zKyssIGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChrZXlfcG9zID09IGtleV9zaXplKTsKKworZG9uZToKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBQeV9ERUNSRUYoc29ydGVkX2l0ZW1zKTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgordW5jYWNoZWRfbHJ1X2NhY2hlX3dyYXBwZXIobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeU9iamVjdF9DYWxsKHNlbGYtPmZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5taXNzZXMrKzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraW5maW5pdGVfbHJ1X2NhY2hlX3dyYXBwZXIobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmtleSA9IGxydV9jYWNoZV9tYWtlX2tleShhcmdzLCBrd2RzLCBzZWxmLT50eXBlZCk7CisgICAgaWYgKCFrZXkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKHNlbGYtPmNhY2hlLCBrZXkpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIHNlbGYtPmhpdHMrKzsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChzZWxmLT5mdW5jLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5jYWNoZSwga2V5LCByZXN1bHQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBzZWxmLT5taXNzZXMrKzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2V4dHJpY2F0ZV9saW5rKGxydV9saXN0X2VsZW0gKmxpbmspCit7CisgICAgbGluay0+cHJldi0+bmV4dCA9IGxpbmstPm5leHQ7CisgICAgbGluay0+bmV4dC0+cHJldiA9IGxpbmstPnByZXY7Cit9CisKK3N0YXRpYyB2b2lkCitscnVfY2FjaGVfYXBwZW5kX2xpbmsobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgbHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBscnVfbGlzdF9lbGVtICpyb290ID0gJnNlbGYtPnJvb3Q7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGFzdCA9IHJvb3QtPnByZXY7CisgICAgbGFzdC0+bmV4dCA9IHJvb3QtPnByZXYgPSBsaW5rOworICAgIGxpbmstPnByZXYgPSBsYXN0OworICAgIGxpbmstPm5leHQgPSByb290OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYm91bmRlZF9scnVfY2FjaGVfd3JhcHBlcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGluazsKKyAgICBQeU9iamVjdCAqa2V5LCAqcmVzdWx0OworCisgICAga2V5ID0gbHJ1X2NhY2hlX21ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHNlbGYtPnR5cGVkKTsKKyAgICBpZiAoIWtleSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGluayAgPSAobHJ1X2xpc3RfZWxlbSAqKVB5RGljdF9HZXRJdGVtV2l0aEVycm9yKHNlbGYtPmNhY2hlLCBrZXkpOworICAgIGlmIChsaW5rKSB7CisgICAgICAgIGxydV9jYWNoZV9leHRyaWNhdGVfbGluayhsaW5rKTsKKyAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICBzZWxmLT5oaXRzKys7CisgICAgICAgIHJlc3VsdCA9IGxpbmstPnJlc3VsdDsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoc2VsZi0+ZnVuYywgYXJncywga3dkcyk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2VsZi0+ZnVsbCAmJiBzZWxmLT5yb290Lm5leHQgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgLyogVXNlIHRoZSBvbGRlc3QgaXRlbSB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0LiAqLworICAgICAgICBQeU9iamVjdCAqb2xka2V5LCAqb2xkcmVzdWx0OworICAgICAgICAvKiBFeHRyaWNhdGUgdGhlIG9sZGVzdCBpdGVtLiAqLworICAgICAgICBsaW5rID0gc2VsZi0+cm9vdC5uZXh0OworICAgICAgICBscnVfY2FjaGVfZXh0cmljYXRlX2xpbmsobGluayk7CisgICAgICAgIC8qIFJlbW92ZSBpdCBmcm9tIHRoZSBjYWNoZS4KKyAgICAgICAgICAgVGhlIGNhY2hlIGRpY3QgaG9sZHMgb25lIHJlZmVyZW5jZSB0byB0aGUgbGluaywKKyAgICAgICAgICAgYW5kIHRoZSBsaW5rZWQgbGlzdCBob2xkcyB5ZXQgb25lIHJlZmVyZW5jZSB0byBpdC4gKi8KKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtKHNlbGYtPmNhY2hlLCBsaW5rLT5rZXkpIDwgMCkgeworICAgICAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIC8qIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG9sZCBrZXkgYW5kIG9sZCByZXN1bHQgdG8KKyAgICAgICAgICAgcHJldmVudCB0aGVpciByZWYgY291bnRzIGZyb20gZ29pbmcgdG8gemVybyBkdXJpbmcgdGhlCisgICAgICAgICAgIHVwZGF0ZS4gVGhhdCB3aWxsIHByZXZlbnQgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IG9iamVjdAorICAgICAgICAgICBjbGVhbi11cCBjb2RlIChpLmUuIF9fZGVsX18pIGZyb20gcnVubmluZyB3aGlsZSB3ZSdyZQorICAgICAgICAgICBzdGlsbCBhZGp1c3RpbmcgdGhlIGxpbmtzLiAqLworICAgICAgICBvbGRrZXkgPSBsaW5rLT5rZXk7CisgICAgICAgIG9sZHJlc3VsdCA9IGxpbmstPnJlc3VsdDsKKworICAgICAgICBsaW5rLT5rZXkgPSBrZXk7CisgICAgICAgIGxpbmstPnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmNhY2hlLCBrZXksIChQeU9iamVjdCAqKWxpbmspIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxpbmspOworICAgICAgICAgICAgUHlfREVDUkVGKG9sZGtleSk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xkcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGxydV9jYWNoZV9hcHBlbmRfbGluayhzZWxmLCBsaW5rKTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7IC8qIGZvciByZXR1cm4gKi8KKyAgICAgICAgUHlfREVDUkVGKG9sZGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRyZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLiAqLworICAgICAgICBsaW5rID0gKGxydV9saXN0X2VsZW0gKilQeU9iamVjdF9HQ19OZXcobHJ1X2xpc3RfZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZscnVfbGlzdF9lbGVtX3R5cGUpOworICAgICAgICBpZiAobGluayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBsaW5rLT5rZXkgPSBrZXk7CisgICAgICAgIGxpbmstPnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGxpbmspOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+Y2FjaGUsIGtleSwgKFB5T2JqZWN0ICopbGluaykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOyAvKiBmb3IgcmV0dXJuICovCisgICAgICAgIHNlbGYtPmZ1bGwgPSAoUHlEaWN0X1NpemUoc2VsZi0+Y2FjaGUpID49IHNlbGYtPm1heHNpemUpOworICAgIH0KKyAgICBzZWxmLT5taXNzZXMrKzsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgUHlPYmplY3QgKmZ1bmMsICptYXhzaXplX08sICpjYWNoZV9pbmZvX3R5cGU7CisgICAgaW50IHR5cGVkOworICAgIGxydV9jYWNoZV9vYmplY3QgKm9iajsKKyAgICBQeV9zc2l6ZV90IG1heHNpemU7CisgICAgUHlPYmplY3QgKigqd3JhcHBlcikobHJ1X2NhY2hlX29iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidXNlcl9mdW5jdGlvbiIsICJtYXhzaXplIiwgInR5cGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FjaGVfaW5mb190eXBlIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk9PcE86bHJ1X2NhY2hlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bmMsICZtYXhzaXplX08sICZ0eXBlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FjaGVfaW5mb190eXBlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBjYWxsYWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBzZWxlY3QgdGhlIGNhY2hpbmcgZnVuY3Rpb24sIGFuZCBtYWtlL2luYyBtYXhzaXplX08gKi8KKyAgICBpZiAobWF4c2l6ZV9PID09IFB5X05vbmUpIHsKKyAgICAgICAgd3JhcHBlciA9IGluZmluaXRlX2xydV9jYWNoZV93cmFwcGVyOworICAgICAgICAvKiB1c2UgdGhpcyBvbmx5IHRvIGluaXRpYWxpemUgbHJ1X2NhY2hlX29iamVjdCBhdHRyaWJ1dGUgbWF4c2l6ZSAqLworICAgICAgICBtYXhzaXplID0gLTE7CisgICAgfSBlbHNlIGlmIChQeUluZGV4X0NoZWNrKG1heHNpemVfTykpIHsKKyAgICAgICAgbWF4c2l6ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChtYXhzaXplX08sIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAobWF4c2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChtYXhzaXplID09IDApCisgICAgICAgICAgICB3cmFwcGVyID0gdW5jYWNoZWRfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdyYXBwZXIgPSBib3VuZGVkX2xydV9jYWNoZV93cmFwcGVyOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtYXhzaXplIHNob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2JqID0gKGxydV9jYWNoZV9vYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCEob2JqLT5jYWNoZSA9IFB5RGljdF9OZXcoKSkpIHsKKyAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iai0+cm9vdC5wcmV2ID0gJm9iai0+cm9vdDsKKyAgICBvYmotPnJvb3QubmV4dCA9ICZvYmotPnJvb3Q7CisgICAgb2JqLT5tYXhzaXplID0gbWF4c2l6ZTsKKyAgICBQeV9JTkNSRUYobWF4c2l6ZV9PKTsKKyAgICBvYmotPm1heHNpemVfTyA9IG1heHNpemVfTzsKKyAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgb2JqLT5mdW5jID0gZnVuYzsKKyAgICBvYmotPndyYXBwZXIgPSB3cmFwcGVyOworICAgIG9iai0+bWlzc2VzID0gb2JqLT5oaXRzID0gMDsKKyAgICBvYmotPnR5cGVkID0gdHlwZWQ7CisgICAgUHlfSU5DUkVGKGNhY2hlX2luZm9fdHlwZSk7CisgICAgb2JqLT5jYWNoZV9pbmZvX3R5cGUgPSBjYWNoZV9pbmZvX3R5cGU7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqOworfQorCitzdGF0aWMgbHJ1X2xpc3RfZWxlbSAqCitscnVfY2FjaGVfdW5saW5rX2xpc3QobHJ1X2NhY2hlX29iamVjdCAqc2VsZikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpyb290ID0gJnNlbGYtPnJvb3Q7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGluayA9IHJvb3QtPm5leHQ7CisgICAgaWYgKGxpbmsgPT0gcm9vdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcm9vdC0+cHJldi0+bmV4dCA9IE5VTEw7CisgICAgcm9vdC0+bmV4dCA9IHJvb3QtPnByZXYgPSByb290OworICAgIHJldHVybiBsaW5rOworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2NsZWFyX2xpc3QobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICB3aGlsZSAobGluayAhPSBOVUxMKSB7CisgICAgICAgIGxydV9saXN0X2VsZW0gKm5leHQgPSBsaW5rLT5uZXh0OworICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgIGxpbmsgPSBuZXh0OworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9kZWFsbG9jKGxydV9jYWNoZV9vYmplY3QgKm9iaikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaXN0ID0gbHJ1X2NhY2hlX3VubGlua19saXN0KG9iaik7CisgICAgUHlfWERFQ1JFRihvYmotPm1heHNpemVfTyk7CisgICAgUHlfWERFQ1JFRihvYmotPmZ1bmMpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZSk7CisgICAgUHlfWERFQ1JFRihvYmotPmRpY3QpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIFB5X1RZUEUob2JqKS0+dHBfZnJlZShvYmopOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2NhbGwobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHJldHVybiBzZWxmLT53cmFwcGVyKHNlbGYsIGFyZ3MsIGt3ZHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2Rlc2NyX2dldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnR5cGUpCit7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lIHx8IG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorICAgIHJldHVybiBQeU1ldGhvZF9OZXcoc2VsZiwgb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9pbmZvKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5jYWNoZV9pbmZvX3R5cGUsICJubk9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhpdHMsIHNlbGYtPm1pc3Nlcywgc2VsZi0+bWF4c2l6ZV9PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X1NpemUoc2VsZi0+Y2FjaGUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9jbGVhcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpc3QgPSBscnVfY2FjaGVfdW5saW5rX2xpc3Qoc2VsZik7CisgICAgc2VsZi0+aGl0cyA9IHNlbGYtPm1pc3NlcyA9IDA7CisgICAgc2VsZi0+ZnVsbCA9IDA7CisgICAgUHlEaWN0X0NsZWFyKHNlbGYtPmNhY2hlKTsKKyAgICBscnVfY2FjaGVfY2xlYXJfbGlzdChsaXN0KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX3RyYXZlcnNlKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgd2hpbGUgKGxpbmsgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgbHJ1X2xpc3RfZWxlbSAqbmV4dCA9IGxpbmstPm5leHQ7CisgICAgICAgIFB5X1ZJU0lUKGxpbmspOworICAgICAgICBsaW5rID0gbmV4dDsKKyAgICB9CisgICAgUHlfVklTSVQoc2VsZi0+bWF4c2l6ZV9PKTsKKyAgICBQeV9WSVNJVChzZWxmLT5mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5jYWNoZSk7CisgICAgUHlfVklTSVQoc2VsZi0+Y2FjaGVfaW5mb190eXBlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX2NsZWFyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYpCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGlzdCA9IGxydV9jYWNoZV91bmxpbmtfbGlzdChzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYXhzaXplX08pOworICAgIFB5X0NMRUFSKHNlbGYtPmZ1bmMpOworICAgIFB5X0NMRUFSKHNlbGYtPmNhY2hlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihscnVfY2FjaGVfZG9jLAorIkNyZWF0ZSBhIGNhY2hlZCBjYWxsYWJsZSB0aGF0IHdyYXBzIGFub3RoZXIgZnVuY3Rpb24uXG5cCitcblwKK3VzZXJfZnVuY3Rpb246ICAgICAgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhY2hlZFxuXAorXG5cCittYXhzaXplOiAgMCAgICAgICAgIGZvciBubyBjYWNoaW5nXG5cCisgICAgICAgICAgTm9uZSAgICAgIGZvciB1bmxpbWl0ZWQgY2FjaGUgc2l6ZVxuXAorICAgICAgICAgIG4gICAgICAgICBmb3IgYSBib3VuZGVkIGNhY2hlXG5cCitcblwKK3R5cGVkOiAgICBGYWxzZSAgICAgY2FjaGUgZigzKSBhbmQgZigzLjApIGFzIGlkZW50aWNhbCBjYWxsc1xuXAorICAgICAgICAgIFRydWUgICAgICBjYWNoZSBmKDMpIGFuZCBmKDMuMCkgYXMgZGlzdGluY3QgY2FsbHNcblwKK1xuXAorY2FjaGVfaW5mb190eXBlOiAgICBuYW1lZHR1cGxlIGNsYXNzIHdpdGggdGhlIGZpZWxkczpcblwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgbWlzc2VzIGN1cnJzaXplIG1heHNpemVcbiIKKyk7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBscnVfY2FjaGVfbWV0aG9kc1tdID0geworICAgIHsiY2FjaGVfaW5mbyIsIChQeUNGdW5jdGlvbilscnVfY2FjaGVfY2FjaGVfaW5mbywgTUVUSF9OT0FSR1N9LAorICAgIHsiY2FjaGVfY2xlYXIiLCAoUHlDRnVuY3Rpb24pbHJ1X2NhY2hlX2NhY2hlX2NsZWFyLCBNRVRIX05PQVJHU30sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgbHJ1X2NhY2hlX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2NhY2hlX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImZ1bmN0b29scy5fbHJ1X2NhY2hlX3dyYXBwZXIiLCAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihscnVfY2FjaGVfb2JqZWN0KSwgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWxydV9jYWNoZV9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylscnVfY2FjaGVfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEV8UHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbHJ1X2NhY2hlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylscnVfY2FjaGVfdHBfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlscnVfY2FjaGVfdHBfY2xlYXIsICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBscnVfY2FjaGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGxydV9jYWNoZV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgbHJ1X2NhY2hlX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YobHJ1X2NhY2hlX29iamVjdCwgZGljdCksICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGxydV9jYWNoZV9uZXcsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKwogLyogbW9kdWxlIGxldmVsIGNvZGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLApAQCAtNTQ4LDYgKzExNDUsMTEgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAorc3RhdGljIHZvaWQKK21vZHVsZV9mcmVlKHZvaWQgKm0pCit7CisgICAgUHlfQ0xFQVIoa3dkX21hcmspOworfQogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9mdW5jdG9vbHNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULApAQCAtNTU4LDcgKzExNjAsNyBAQAogICAgIE5VTEwsCiAgICAgTlVMTCwKICAgICBOVUxMLAotICAgIE5VTEwKKyAgICBtb2R1bGVfZnJlZSwKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC01NjksNiArMTE3MSw3IEBACiAgICAgY2hhciAqbmFtZTsKICAgICBQeVR5cGVPYmplY3QgKnR5cGVsaXN0W10gPSB7CiAgICAgICAgICZwYXJ0aWFsX3R5cGUsCisgICAgICAgICZscnVfY2FjaGVfdHlwZSwKICAgICAgICAgTlVMTAogICAgIH07CiAKQEAgLTU3Niw2ICsxMTc5LDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBrd2RfbWFyayA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5QmFzZU9iamVjdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoIWt3ZF9tYXJrKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgZm9yIChpPTAgOyB0eXBlbGlzdFtpXSAhPSBOVUxMIDsgaSsrKSB7CiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZWxpc3RbaV0pIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCmluZGV4IDIyOWUxNmUuLmYwNzBhMTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKQEAgLTE2LDE3ICsxNiwyMyBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJtX3N0cmVycm9yKGdkYm1fZXJyb3IpOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZ2RibQorY2xhc3MgX2dkYm0uZ2RibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTExMzkyN2M2MTcwNzI5YjJdKi8KKwogUHlEb2NfU1RSVkFSKGdkYm1tb2R1bGVfX2RvY19fLAogIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgR05VIERCTSAoR0RCTSkgbGlicmFyeS5cblwKIFxuXAogVGhpcyBtb2R1bGUgaXMgcXVpdGUgc2ltaWxhciB0byB0aGUgZGJtIG1vZHVsZSwgYnV0IHVzZXMgR0RCTSBpbnN0ZWFkIHRvXG5cCi1wcm92aWRlIHNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBmaWxlIGZvcm1hdHNcblwKLWNyZWF0ZWQgYnkgR0RCTSBhbmQgZGJtIGFyZSBpbmNvbXBhdGlibGUuIFxuXAorcHJvdmlkZSBzb21lIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eS4gIFBsZWFzZSBub3RlIHRoYXQgdGhlIGZpbGUgZm9ybWF0c1xuXAorY3JlYXRlZCBieSBHREJNIGFuZCBkYm0gYXJlIGluY29tcGF0aWJsZS5cblwKIFxuXAogR0RCTSBvYmplY3RzIGJlaGF2ZSBsaWtlIG1hcHBpbmdzIChkaWN0aW9uYXJpZXMpLCBleGNlcHQgdGhhdCBrZXlzIGFuZFxuXAotdmFsdWVzIGFyZSBhbHdheXMgc3RyaW5ncy4gUHJpbnRpbmcgYSBHREJNIG9iamVjdCBkb2Vzbid0IHByaW50IHRoZVxuXAota2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kIHZhbHVlcygpIG1ldGhvZHMgYXJlIG5vdFxuXAotc3VwcG9ydGVkLiIpOwordmFsdWVzIGFyZSBhbHdheXMgaW1tdXRhYmxlIGJ5dGVzLWxpa2Ugb2JqZWN0cyBvciBzdHJpbmdzLiAgUHJpbnRpbmdcblwKK2EgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGUga2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kXG5cCit2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMzYsNiArNDIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKKyNpbmNsdWRlICJjbGluaWMvX2dkYm1tb2R1bGUuYy5oIgorCiAjZGVmaW5lIGlzX2RibW9iamVjdCh2KSAoUHlfVFlQRSh2KSA9PSAmRGJtdHlwZSkKICNkZWZpbmUgY2hlY2tfZGJtb2JqZWN0X29wZW4odikgaWYgKCh2KS0+ZGlfZGJtID09IE5VTEwpIFwKICAgICB7IFB5RXJyX1NldFN0cmluZyhEYm1FcnJvciwgIkdEQk0gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkIik7IFwKQEAgLTQ4LDE1ICs1NiwxNSBAQAogUHlEb2NfU1RSVkFSKGdkYm1fb2JqZWN0X19kb2NfXywKICJUaGlzIG9iamVjdCByZXByZXNlbnRzIGEgR0RCTSBkYXRhYmFzZS5cblwKIEdEQk0gb2JqZWN0cyBiZWhhdmUgbGlrZSBtYXBwaW5ncyAoZGljdGlvbmFyaWVzKSwgZXhjZXB0IHRoYXQga2V5cyBhbmRcblwKLXZhbHVlcyBhcmUgYWx3YXlzIHN0cmluZ3MuIFByaW50aW5nIGEgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGVcblwKLWtleXMgYW5kIHZhbHVlcywgYW5kIHRoZSBpdGVtcygpIGFuZCB2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3RcblwKLXN1cHBvcnRlZC5cblwKK3ZhbHVlcyBhcmUgYWx3YXlzIGltbXV0YWJsZSBieXRlcy1saWtlIG9iamVjdHMgb3Igc3RyaW5ncy4gIFByaW50aW5nXG5cCithIEdEQk0gb2JqZWN0IGRvZXNuJ3QgcHJpbnQgdGhlIGtleXMgYW5kIHZhbHVlcywgYW5kIHRoZSBpdGVtcygpIGFuZFxuXAordmFsdWVzKCkgbWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZC5cblwKIFxuXAogR0RCTSBvYmplY3RzIGFsc28gc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgc3VjaCBhcyBmaXJzdGtleSxcblwKIG5leHRrZXksIHJlb3JnYW5pemUsIGFuZCBzeW5jLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3ZGJtb2JqZWN0KGNoYXIgKmZpbGUsIGludCBmbGFncywgaW50IG1vZGUpCituZXdkYm1vYmplY3QoY29uc3QgY2hhciAqZmlsZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkKIHsKICAgICBkYm1vYmplY3QgKmRwOwogCkBAIC02NSw3ICs3Myw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRwLT5kaV9zaXplID0gLTE7CiAgICAgZXJybm8gPSAwOwotICAgIGlmICgoZHAtPmRpX2RibSA9IGdkYm1fb3BlbihmaWxlLCAwLCBmbGFncywgbW9kZSwgTlVMTCkpID09IDApIHsKKyAgICBpZiAoKGRwLT5kaV9kYm0gPSBnZGJtX29wZW4oKGNoYXIgKilmaWxlLCAwLCBmbGFncywgbW9kZSwgTlVMTCkpID09IDApIHsKICAgICAgICAgaWYgKGVycm5vICE9IDApCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oRGJtRXJyb3IpOwogICAgICAgICBlbHNlCkBAIC0xMzUsMjQgKzE0MywyNyBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIoZGJtX2dldF9fZG9jX18sCi0iZ2V0KGtleVssIGRlZmF1bHRdKSAtPiB2YWx1ZVxuXAotR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciBkZWZhdWx0IGlmIG5vdCBwcmVzZW50OyBpZiBub3QgZ2l2ZW4sXG5cCi1kZWZhdWx0IGlzIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLmdldAorCisgICAga2V5OiBvYmplY3QKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgLworCitHZXQgdGhlIHZhbHVlIGZvciBrZXksIG9yIGRlZmF1bHQgaWYgbm90IHByZXNlbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fZ2V0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2dkYm1fZ2RibV9nZXRfaW1wbChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5YjdjNTg1YWQ0ZjU1NGEgaW5wdXQ9YTljMjA0MjNmMzRjMTdiNl0qLwogewotICAgIFB5T2JqZWN0ICp2LCAqcmVzOwotICAgIFB5T2JqZWN0ICpkZWYgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAmdiwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoZHAsIHYpOworICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfSU5DUkVGKGRlZik7Ci0gICAgICAgIHJldHVybiBkZWY7CisgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0X3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgfQogICAgIHJldHVybiByZXM7CiB9CkBAIC0xOTgsMjUgKzIwOSwyOSBAQAogICAgIHJldHVybiAwOwogfQogCi1QeURvY19TVFJWQVIoZGJtX3NldGRlZmF1bHRfX2RvY19fLAotInNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pIC0+IHZhbHVlXG5cCi1HZXQgdmFsdWUgZm9yIGtleSwgb3Igc2V0IGl0IHRvIGRlZmF1bHQgYW5kIHJldHVybiBkZWZhdWx0IGlmIG5vdCBwcmVzZW50O1xuXAotaWYgbm90IGdpdmVuLCBkZWZhdWx0IGlzIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLnNldGRlZmF1bHQKKworICAgIGtleTogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgIC8KKworR2V0IHZhbHVlIGZvciBrZXksIG9yIHNldCBpdCB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdCBpZiBub3QgcHJlc2VudC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODg3NjBlZTUyMDMyOTAxMiBpbnB1dD0wZGI0NmI2OWU5NjgwMTcxXSovCiB7Ci0gICAgUHlPYmplY3QgKnYsICpyZXM7Ci0gICAgUHlPYmplY3QgKmRlZiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLCAxLCAyLCAmdiwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoZHAsIHYpOworICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKGRibV9hc3Nfc3ViKGRwLCB2LCBkZWYpIDwgMCkKKyAgICAgICAgaWYgKGRibV9hc3Nfc3ViKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBkYm1fc3Vic2NyaXB0KGRwLCB2KTsKKyAgICAgICAgcmV0dXJuIGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTIyNyw0MyArMjQyLDQ5IEBACiAgICAgKG9iam9iamFyZ3Byb2MpZGJtX2Fzc19zdWIsICAgICAgICAgLyptcF9hc3Nfc3Vic2NyaXB0Ki8KIH07CiAKLVB5RG9jX1NUUlZBUihkYm1fY2xvc2VfX2RvY19fLAotImNsb3NlKCkgLT4gTm9uZVxuXAotQ2xvc2VzIHRoZSBkYXRhYmFzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uY2xvc2UKKworQ2xvc2UgdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2Nsb3NlKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNTEyYTU5NDU5OGI1NjMgaW5wdXQ9MGEyMDM0NDczNzliNDVmZF0qLwogewotICAgIGlmIChkcC0+ZGlfZGJtKQotICAgICAgICBnZGJtX2Nsb3NlKGRwLT5kaV9kYm0pOwotICAgIGRwLT5kaV9kYm0gPSBOVUxMOworICAgIGlmIChzZWxmLT5kaV9kYm0pCisgICAgICAgIGdkYm1fY2xvc2Uoc2VsZi0+ZGlfZGJtKTsKKyAgICBzZWxmLT5kaV9kYm0gPSBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogLyogWFhYIFNob3VsZCByZXR1cm4gYSBzZXQgb3IgYSBzZXQgdmlldyAqLwotUHlEb2NfU1RSVkFSKGRibV9rZXlzX19kb2NfXywKLSJrZXlzKCkgLT4gbGlzdF9vZl9rZXlzXG5cCi1HZXQgYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0ua2V5cworCitHZXQgYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9rZXlzKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2I0YjE3NzZjMzY0NWRjYyBpbnB1dD0xODMyZWUwYTMxMzJjZmFmXSovCiB7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGRhdHVtIGtleSwgbmV4dGtleTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKGRwID09IE5VTEwgfHwgIWlzX2RibW9iamVjdChkcCkpIHsKKyAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFpc19kYm1vYmplY3Qoc2VsZikpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CiAKICAgICB2ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGtleSA9IGdkYm1fZmlyc3RrZXkoZHAtPmRpX2RibSk7CisgICAga2V5ID0gZ2RibV9maXJzdGtleShzZWxmLT5kaV9kYm0pOwogICAgIHdoaWxlIChrZXkuZHB0cikgewogICAgICAgICBpdGVtID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShrZXkuZHB0ciwga2V5LmRzaXplKTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewpAQCAtMjc4LDcgKzI5OSw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBuZXh0a2V5ID0gZ2RibV9uZXh0a2V5KGRwLT5kaV9kYm0sIGtleSk7CisgICAgICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoc2VsZi0+ZGlfZGJtLCBrZXkpOwogICAgICAgICBmcmVlKGtleS5kcHRyKTsKICAgICAgICAga2V5ID0gbmV4dGtleTsKICAgICB9CkBAIC0zMjksMjEgKzM1MCwyNSBAQAogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAotUHlEb2NfU1RSVkFSKGRibV9maXJzdGtleV9fZG9jX18sCi0iZmlyc3RrZXkoKSAtPiBrZXlcblwKLUl0J3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2RcblwKLWFuZCB0aGUgbmV4dGtleSgpIG1ldGhvZC4gVGhlIHRyYXZlcnNhbCBpcyBvcmRlcmVkIGJ5IEdEQk0ncyBpbnRlcm5hbFxuXAotaGFzaCB2YWx1ZXMsIGFuZCB3b24ndCBiZSBzb3J0ZWQgYnkgdGhlIGtleSB2YWx1ZXMuIFRoaXMgbWV0aG9kXG5cCi1yZXR1cm5zIHRoZSBzdGFydGluZyBrZXkuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLmZpcnN0a2V5CisKK1JldHVybiB0aGUgc3RhcnRpbmcga2V5IGZvciB0aGUgdHJhdmVyc2FsLgorCitJdCdzIHBvc3NpYmxlIHRvIGxvb3Agb3ZlciBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIHVzaW5nIHRoaXMgbWV0aG9kCithbmQgdGhlIG5leHRrZXkoKSBtZXRob2QuICBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTSdzIGludGVybmFsCitoYXNoIHZhbHVlcywgYW5kIHdvbid0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9maXJzdGtleShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqdW51c2VkKQorX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZmY4NTYyOGQ4NGI2NWQyIGlucHV0PTBkYmQ2YTMzNWQ2OWJiYTBdKi8KIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBkYXR1bSBrZXk7CiAKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAga2V5ID0gZ2RibV9maXJzdGtleShkcC0+ZGlfZGJtKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBrZXkgPSBnZGJtX2ZpcnN0a2V5KHNlbGYtPmRpX2RibSk7CiAgICAgaWYgKGtleS5kcHRyKSB7CiAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBmcmVlKGtleS5kcHRyKTsKQEAgLTM1NSwyNyArMzgwLDM1IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoZGJtX25leHRrZXlfX2RvY19fLAotIm5leHRrZXkoa2V5KSAtPiBuZXh0X2tleVxuXAotUmV0dXJucyB0aGUga2V5IHRoYXQgZm9sbG93cyBrZXkgaW4gdGhlIHRyYXZlcnNhbC5cblwKLVRoZSBmb2xsb3dpbmcgY29kZSBwcmludHMgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSBkYiwgd2l0aG91dCBoYXZpbmdcblwKLXRvIGNyZWF0ZSBhIGxpc3QgaW4gbWVtb3J5IHRoYXQgY29udGFpbnMgdGhlbSBhbGw6XG5cCi1cblwKLSAgICAgIGsgPSBkYi5maXJzdGtleSgpXG5cCi0gICAgICB3aGlsZSBrICE9IE5vbmU6XG5cCi0gICAgICAgICAgcHJpbnQga1xuXAotICAgICAgICAgIGsgPSBkYi5uZXh0a2V5KGspIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLm5leHRrZXkKKworICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIC8KKworUmV0dXJucyB0aGUga2V5IHRoYXQgZm9sbG93cyBrZXkgaW4gdGhlIHRyYXZlcnNhbC4KKworVGhlIGZvbGxvd2luZyBjb2RlIHByaW50cyBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIGRiLCB3aXRob3V0IGhhdmluZwordG8gY3JlYXRlIGEgbGlzdCBpbiBtZW1vcnkgdGhhdCBjb250YWlucyB0aGVtIGFsbDoKKworICAgICAgayA9IGRiLmZpcnN0a2V5KCkKKyAgICAgIHdoaWxlIGsgIT0gTm9uZToKKyAgICAgICAgICBwcmludChrKQorICAgICAgICAgIGsgPSBkYi5uZXh0a2V5KGspCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fbmV4dGtleShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqYXJncykKK19nZGJtX2dkYm1fbmV4dGtleV9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MmFiODkyZGU2ZWIyZjYgaW5wdXQ9MWYxNjA2OTQzNjE0ZTM2Zl0qLwogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGRhdHVtIGtleSwgbmV4dGtleTsKKyAgICBkYXR1bSBkYm1fa2V5LCBuZXh0a2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpuZXh0a2V5IiwgJmtleS5kcHRyLCAma2V5LmRzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOwotICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoZHAtPmRpX2RibSwga2V5KTsKKyAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKKyAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBuZXh0a2V5ID0gZ2RibV9uZXh0a2V5KHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKG5leHRrZXkuZHB0cikgewogICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShuZXh0a2V5LmRwdHIsIG5leHRrZXkuZHNpemUpOwogICAgICAgICBmcmVlKG5leHRrZXkuZHB0cik7CkBAIC0zODcsMjAgKzQyMCwyNSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKGRibV9yZW9yZ2FuaXplX19kb2NfXywKLSJyZW9yZ2FuaXplKCkgLT4gTm9uZVxuXAotSWYgeW91IGhhdmUgY2FycmllZCBvdXQgYSBsb3Qgb2YgZGVsZXRpb25zIGFuZCB3b3VsZCBsaWtlIHRvIHNocmlua1xuXAotdGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGVcblwKLWRhdGFiYXNlLiBHREJNIHdpbGwgbm90IHNob3J0ZW4gdGhlIGxlbmd0aCBvZiBhIGRhdGFiYXNlIGZpbGUgZXhjZXB0XG5cCi1ieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlXG5cCi1rZXB0IGFuZCByZXVzZWQgYXMgbmV3IChrZXksdmFsdWUpIHBhaXJzIGFyZSBhZGRlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0ucmVvcmdhbml6ZQorCitSZW9yZ2FuaXplIHRoZSBkYXRhYmFzZS4KKworSWYgeW91IGhhdmUgY2FycmllZCBvdXQgYSBsb3Qgb2YgZGVsZXRpb25zIGFuZCB3b3VsZCBsaWtlIHRvIHNocmluawordGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGUKK2RhdGFiYXNlLiAgR0RCTSB3aWxsIG5vdCBzaG9ydGVuIHRoZSBsZW5ndGggb2YgYSBkYXRhYmFzZSBmaWxlIGV4Y2VwdAorYnkgdXNpbmcgdGhpcyByZW9yZ2FuaXphdGlvbjsgb3RoZXJ3aXNlLCBkZWxldGVkIGZpbGUgc3BhY2Ugd2lsbCBiZQora2VwdCBhbmQgcmV1c2VkIGFzIG5ldyAoa2V5LHZhbHVlKSBwYWlycyBhcmUgYWRkZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fcmVvcmdhbml6ZShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqdW51c2VkKQorX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4ZDk2MjRkZjkyZTk2MWQgaW5wdXQ9ZjZiZWE4NWJjZmQ0MGRkMl0qLwogewotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKGdkYm1fcmVvcmdhbml6ZShkcC0+ZGlfZGJtKSA8IDApIHsKKyAgICBpZiAoZ2RibV9yZW9yZ2FuaXplKHNlbGYtPmRpX2RibSkgPCAwKSB7CiAgICAgICAgIGlmIChlcnJubyAhPSAwKQogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKERibUVycm9yKTsKICAgICAgICAgZWxzZQpAQCAtNDExLDE2ICs0NDksMjEgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRibV9zeW5jX19kb2NfXywKLSJzeW5jKCkgLT4gTm9uZVxuXAotV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzXG5cCi1hbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uc3luYworCitGbHVzaCB0aGUgZGF0YWJhc2UgdG8gdGhlIGRpc2sgZmlsZS4KKworV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzCithbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zeW5jKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX3N5bmNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg4YjE1ZjQ3MDI4ZjEyNSBpbnB1dD0yYTQ3ZDJjOWUxNTNhYjhhXSovCiB7Ci0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOwotICAgIGdkYm1fc3luYyhkcC0+ZGlfZGJtKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBnZGJtX3N5bmMoc2VsZi0+ZGlfZGJtKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC00NDAsMTQgKzQ4MywxNSBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZGJtX21ldGhvZHNbXSA9IHsKLSAgICB7ImNsb3NlIiwgICAgIChQeUNGdW5jdGlvbilkYm1fY2xvc2UsICAgTUVUSF9OT0FSR1MsIGRibV9jbG9zZV9fZG9jX199LAotICAgIHsia2V5cyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9rZXlzLCAgICBNRVRIX05PQVJHUywgZGJtX2tleXNfX2RvY19ffSwKLSAgICB7ImZpcnN0a2V5IiwgIChQeUNGdW5jdGlvbilkYm1fZmlyc3RrZXksTUVUSF9OT0FSR1MsIGRibV9maXJzdGtleV9fZG9jX199LAotICAgIHsibmV4dGtleSIsICAgKFB5Q0Z1bmN0aW9uKWRibV9uZXh0a2V5LCBNRVRIX1ZBUkFSR1MsIGRibV9uZXh0a2V5X19kb2NfX30sCi0gICAgeyJyZW9yZ2FuaXplIiwoUHlDRnVuY3Rpb24pZGJtX3Jlb3JnYW5pemUsTUVUSF9OT0FSR1MsIGRibV9yZW9yZ2FuaXplX19kb2NfX30sCi0gICAgeyJzeW5jIiwgICAgICAoUHlDRnVuY3Rpb24pZGJtX3N5bmMsICAgIE1FVEhfTk9BUkdTLCBkYm1fc3luY19fZG9jX199LAotICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9nZXQsICAgICBNRVRIX1ZBUkFSR1MsIGRibV9nZXRfX2RvY19ffSwKLSAgICB7InNldGRlZmF1bHQiLChQeUNGdW5jdGlvbilkYm1fc2V0ZGVmYXVsdCxNRVRIX1ZBUkFSR1MsIGRibV9zZXRkZWZhdWx0X19kb2NfX30sCisgICAgX0dEQk1fR0RCTV9DTE9TRV9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0tFWVNfTUVUSE9EREVGCisgICAgX0dEQk1fR0RCTV9GSVJTVEtFWV9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX05FWFRLRVlfTUVUSE9EREVGCisgICAgX0dEQk1fR0RCTV9SRU9SR0FOSVpFX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fU1lOQ19NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0dFVF9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0dFVF9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX1NFVERFRkFVTFRfTUVUSE9EREVGCiAgICAgeyJfX2VudGVyX18iLCBkYm1fX2VudGVyX18sIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7Il9fZXhpdF9fIiwgIGRibV9fZXhpdF9fLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCkBAIC00ODYsNDAgKzUzMCw0NCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIoZGJtb3Blbl9fZG9jX18sCi0ib3BlbihmaWxlbmFtZSwgW2ZsYWdzLCBbbW9kZV1dKSAgLT4gZGJtX29iamVjdFxuXAotT3BlbiBhIGRibSBkYXRhYmFzZSBhbmQgcmV0dXJuIGEgZGJtIG9iamVjdC4gVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzXG5cCi10aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cblwKLVxuXAotVGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50IGNhbiBiZSAncicgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2VcblwKLWZvciByZWFkaW5nIG9ubHkgLS0gZGVmYXVsdCksICd3JyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZSBmb3JcblwKLXJlYWRpbmcgYW5kIHdyaXRpbmcpLCAnYycgKHdoaWNoIGNyZWF0ZXMgdGhlIGRhdGFiYXNlIGlmIGl0IGRvZXNuJ3RcblwKLWV4aXN0KSwgb3IgJ24nICh3aGljaCBhbHdheXMgY3JlYXRlcyBhIG5ldyBlbXB0eSBkYXRhYmFzZSkuXG5cCi1cblwKLVNvbWUgdmVyc2lvbnMgb2YgZ2RibSBzdXBwb3J0IGFkZGl0aW9uYWwgZmxhZ3Mgd2hpY2ggbXVzdCBiZVxuXAotYXBwZW5kZWQgdG8gb25lIG9mIHRoZSBmbGFncyBkZXNjcmliZWQgYWJvdmUuIFRoZSBtb2R1bGUgY29uc3RhbnRcblwKLSdvcGVuX2ZsYWdzJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiBUaGUgJ2YnIGZsYWdcblwKLW9wZW5zIHRoZSBkYXRhYmFzZSBpbiBmYXN0IG1vZGU7IGFsdGVyZWQgZGF0YSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5XG5cCi1iZSB3cml0dGVuIHRvIHRoZSBkaXNrIGFmdGVyIGV2ZXJ5IGNoYW5nZS4gVGhpcyByZXN1bHRzIGluIGZhc3RlclxuXAotd3JpdGVzIHRvIHRoZSBkYXRhYmFzZSwgYnV0IG1heSByZXN1bHQgaW4gYW4gaW5jb25zaXN0ZW50IGRhdGFiYXNlXG5cCi1pZiB0aGUgcHJvZ3JhbSBjcmFzaGVzIHdoaWxlIHRoZSBkYXRhYmFzZSBpcyBzdGlsbCBvcGVuLiBVc2UgdGhlXG5cCi1zeW5jKCkgbWV0aG9kIHRvIGZvcmNlIGFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLlxuXAotVGhlICdzJyBmbGFnIGNhdXNlcyBhbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0byBiZSBzeW5jaHJvbml6ZWQgdG9cblwKLWRpc2suIFRoZSAndScgZmxhZyBkaXNhYmxlcyBsb2NraW5nIG9mIHRoZSBkYXRhYmFzZSBmaWxlLlxuXAotXG5cCi1UaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHlcblwKLXdoZW4gdGhlIGRhdGFiYXNlIGhhcyB0byBiZSBjcmVhdGVkLiBJdCBkZWZhdWx0cyB0byBvY3RhbCAwNjY2LiAiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLm9wZW4gYXMgZGJtb3BlbgorICAgIGZpbGVuYW1lIGFzIG5hbWU6IHN0cgorICAgIGZsYWdzOiBzdHI9InIiCisgICAgbW9kZTogaW50KHB5X2RlZmF1bHQ9IjBvNjY2IikgPSAwbzY2NgorICAgIC8KKworT3BlbiBhIGRibSBkYXRhYmFzZSBhbmQgcmV0dXJuIGEgZGJtIG9iamVjdC4KKworVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmaWxlLgorCitUaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlICdyJyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZQorZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgJ3cnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlIGZvcgorcmVhZGluZyBhbmQgd3JpdGluZyksICdjJyAod2hpY2ggY3JlYXRlcyB0aGUgZGF0YWJhc2UgaWYgaXQgZG9lc24ndAorZXhpc3QpLCBvciAnbicgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS4KKworU29tZSB2ZXJzaW9ucyBvZiBnZGJtIHN1cHBvcnQgYWRkaXRpb25hbCBmbGFncyB3aGljaCBtdXN0IGJlCithcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZSBtb2R1bGUgY29uc3RhbnQKKydvcGVuX2ZsYWdzJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiAgVGhlICdmJyBmbGFnCitvcGVucyB0aGUgZGF0YWJhc2UgaW4gZmFzdCBtb2RlOyBhbHRlcmVkIGRhdGEgd2lsbCBub3QgYXV0b21hdGljYWxseQorYmUgd3JpdHRlbiB0byB0aGUgZGlzayBhZnRlciBldmVyeSBjaGFuZ2UuICBUaGlzIHJlc3VsdHMgaW4gZmFzdGVyCit3cml0ZXMgdG8gdGhlIGRhdGFiYXNlLCBidXQgbWF5IHJlc3VsdCBpbiBhbiBpbmNvbnNpc3RlbnQgZGF0YWJhc2UKK2lmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uICBVc2UgdGhlCitzeW5jKCkgbWV0aG9kIHRvIGZvcmNlIGFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLgorVGhlICdzJyBmbGFnIGNhdXNlcyBhbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0byBiZSBzeW5jaHJvbml6ZWQgdG8KK2Rpc2suICBUaGUgJ3UnIGZsYWcgZGlzYWJsZXMgbG9ja2luZyBvZiB0aGUgZGF0YWJhc2UgZmlsZS4KKworVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5Cit3aGVuIHRoZSBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIDBvNjY2LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitkYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzY1YjMxNDE1YzAzY2NkNCBpbnB1dD01NTU2M2NkNjBlNTE5ODRhXSovCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBjaGFyICpmbGFncyA9ICJyIjsKICAgICBpbnQgaWZsYWdzOwotICAgIGludCBtb2RlID0gMDY2NjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwgJm5hbWUsICZmbGFncywgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKGZsYWdzWzBdKSB7CiAgICAgY2FzZSAncic6CiAgICAgICAgIGlmbGFncyA9IEdEQk1fUkVBREVSOwpAQCAtNTgwLDcgKzYyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogCiBzdGF0aWMgUHlNZXRob2REZWYgZGJtbW9kdWxlX21ldGhvZHNbXSA9IHsKLSAgICB7ICJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorICAgIERCTU9QRU5fTUVUSE9EREVGCiAgICAgeyAwLCAwIH0sCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwppbmRleCA2YTJhOWFmLi5hMTU3ZmJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCisrKyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAogCiAvKiBFVlAgaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UgdG8gaGFzaGluZyBpbiBPcGVuU1NMICovCkBAIC0zMSwxMCArMzIsNiBAQAogI2RlZmluZSBIQVNIX09CSl9DT05TVFJVQ1RPUiAwCiAjZW5kaWYKIAotLyogTWluaW11bSBPcGVuU1NMIHZlcnNpb24gbmVlZGVkIHRvIHN1cHBvcnQgc2hhMjI0IGFuZCBoaWdoZXIuICovCi0jaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDAwKQotI2RlZmluZSBfT1BFTlNTTF9TVVBQT1JUU19TSEEyCi0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTU2LDEyICs1MywxMCBAQAogCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcobWQ1KQogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTEpCi0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTIyNCkKIERFRklORV9DT05TVFNfRk9SX05FVyhzaGEyNTYpCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcoc2hhMzg0KQogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTUxMikKLSNlbmRpZgogCiAKIHN0YXRpYyBFVlBvYmplY3QgKgpAQCAtMTYzLDkgKzE1OCw3IEBACiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbRVZQX01BWF9NRF9TSVpFXTsKICAgICBFVlBfTURfQ1RYIHRlbXBfY3R4OwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgY2hhciAqaGV4X2RpZ2VzdDsKLSAgICB1bnNpZ25lZCBpbnQgaSwgaiwgZGlnZXN0X3NpemU7CisgICAgdW5zaWduZWQgaW50IGRpZ2VzdF9zaXplOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgbG9ja2VkX0VWUF9NRF9DVFhfY29weSgmdGVtcF9jdHgsIHNlbGYpOwpAQCAtMTc0LDIyICsxNjcsNyBAQAogCiAgICAgRVZQX01EX0NUWF9jbGVhbnVwKCZ0ZW1wX2N0eCk7CiAKLSAgICAvKiBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgKi8KLSAgICBoZXhfZGlnZXN0ID0gUHlNZW1fTWFsbG9jKGRpZ2VzdF9zaXplICogMiArIDEpOwotICAgIGlmICghaGV4X2RpZ2VzdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8ZGlnZXN0X3NpemU7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoaGV4X2RpZ2VzdCwgZGlnZXN0X3NpemUgKiAyKTsKLSAgICBQeU1lbV9GcmVlKGhleF9kaWdlc3QpOwotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIGRpZ2VzdF9zaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKEVWUF91cGRhdGVfX2RvY19fLApAQCAtNzk4LDEyICs3NzYsMTAgQEAKIAogR0VOX0NPTlNUUlVDVE9SKG1kNSkKIEdFTl9DT05TVFJVQ1RPUihzaGExKQotI2lmZGVmIF9PUEVOU1NMX1NVUFBPUlRTX1NIQTIKIEdFTl9DT05TVFJVQ1RPUihzaGEyMjQpCiBHRU5fQ09OU1RSVUNUT1Ioc2hhMjU2KQogR0VOX0NPTlNUUlVDVE9SKHNoYTM4NCkKIEdFTl9DT05TVFJVQ1RPUihzaGE1MTIpCi0jZW5kaWYKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIApAQCAtODE1LDEyICs3OTEsMTAgQEAKICNlbmRpZgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKG1kNSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMSksCi0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTIyNCksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMjU2KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGEzODQpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTUxMiksCi0jZW5kaWYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC04NzcsMTEgKzg1MSw5IEBACiAgICAgLyogdGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIGJ5IHRoZSBjb252ZW5pZW5jZSBjb25zdHJ1Y3RvcnMgKi8KICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhtZDUpOwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTEpOwotI2lmZGVmIF9PUEVOU1NMX1NVUFBPUlRTX1NIQTIKICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhzaGEyMjQpOwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTI1Nik7CiAgICAgSU5JVF9DT05TVFJVQ1RPUl9DT05TVEFOVFMoc2hhMzg0KTsKICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhzaGE1MTIpOwotI2VuZGlmCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwppbmRleCAwNDg0NWYxLi5jMzQzODYyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIHN0YXRpYyBpbnQKLV9zaWZ0ZG93bihQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQorc2lmdGRvd24oUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeU9iamVjdCAqbmV3aXRlbSwgKnBhcmVudDsKKyAgICBQeU9iamVjdCAqbmV3aXRlbSwgKnBhcmVudCwgKiphcnI7CiAgICAgUHlfc3NpemVfdCBwYXJlbnRwb3MsIHNpemU7CiAgICAgaW50IGNtcDsKIApAQCAtMjQsMTIgKzI0LDEzIEBACiAKICAgICAvKiBGb2xsb3cgdGhlIHBhdGggdG8gdGhlIHJvb3QsIG1vdmluZyBwYXJlbnRzIGRvd24gdW50aWwgZmluZGluZwogICAgICAgIGEgcGxhY2UgbmV3aXRlbSBmaXRzLiAqLwotICAgIG5ld2l0ZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKTsKKyAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgIG5ld2l0ZW0gPSBhcnJbcG9zXTsKICAgICB3aGlsZSAocG9zID4gc3RhcnRwb3MpIHsKICAgICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7Ci0gICAgICAgIHBhcmVudCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MpOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKG5ld2l0ZW0sIHBhcmVudCwgUHlfTFQpOwotICAgICAgICBpZiAoY21wID09IC0xKQorICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKHNpemUgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMzgsMjAgKzM5LDIxIEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKGNtcCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHBhcmVudCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MpOwotICAgICAgICBuZXdpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcyk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MsIG5ld2l0ZW0pOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBwYXJlbnQpOworICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKKyAgICAgICAgbmV3aXRlbSA9IGFycltwb3NdOworICAgICAgICBhcnJbcGFyZW50cG9zXSA9IG5ld2l0ZW07CisgICAgICAgIGFycltwb3NdID0gcGFyZW50OwogICAgICAgICBwb3MgPSBwYXJlbnRwb3M7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1fc2lmdHVwKFB5TGlzdE9iamVjdCAqaGVhcCwgUHlfc3NpemVfdCBwb3MpCitzaWZ0dXAoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIGNoaWxkcG9zLCByaWdodHBvcywgbGltaXQ7Ci0gICAgUHlPYmplY3QgKnRtcDEsICp0bXAyOworICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgY2hpbGRwb3MsIGxpbWl0OworICAgIFB5T2JqZWN0ICp0bXAxLCAqdG1wMiwgKiphcnI7CiAgICAgaW50IGNtcDsKIAogICAgIGFzc2VydChQeUxpc3RfQ2hlY2soaGVhcCkpOwpAQCAtNjMsMjAgKzY1LDE5IEBACiAgICAgfQogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLworICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwotICAgICAgICByaWdodHBvcyA9IGNoaWxkcG9zICsgMTsKLSAgICAgICAgaWYgKHJpZ2h0cG9zIDwgZW5kcG9zKSB7CisgICAgICAgIGlmIChjaGlsZHBvcyArIDEgPCBlbmRwb3MpIHsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oaGVhcCwgY2hpbGRwb3MpLAotICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShoZWFwLCByaWdodHBvcyksCisgICAgICAgICAgICAgICAgYXJyW2NoaWxkcG9zXSwKKyAgICAgICAgICAgICAgICBhcnJbY2hpbGRwb3MgKyAxXSwKICAgICAgICAgICAgICAgICBQeV9MVCk7Ci0gICAgICAgICAgICBpZiAoY21wID09IC0xKQorICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgaWYgKGNtcCA9PSAwKQotICAgICAgICAgICAgICAgIGNoaWxkcG9zID0gcmlnaHRwb3M7CisgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtODQsMTQgKzg1LDE1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgdG1wMSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBjaGlsZHBvcyk7Ci0gICAgICAgIHRtcDIgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIGNoaWxkcG9zLCB0bXAyKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgdG1wMSk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOworICAgICAgICB0bXAyID0gYXJyW3Bvc107CisgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOworICAgICAgICBhcnJbcG9zXSA9IHRtcDE7CiAgICAgICAgIHBvcyA9IGNoaWxkcG9zOwogICAgIH0KICAgICAvKiBCdWJibGUgaXQgdXAgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuICovCi0gICAgcmV0dXJuIF9zaWZ0ZG93bihoZWFwLCBzdGFydHBvcywgcG9zKTsKKyAgICByZXR1cm4gc2lmdGRvd24oaGVhcCwgc3RhcnRwb3MsIHBvcyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMDcsMjAgKzEwOSwxOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBpdGVtKSA9PSAtMSkKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBpdGVtKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoX3NpZnRkb3duKChQeUxpc3RPYmplY3QgKiloZWFwLCAwLCBQeUxpc3RfR0VUX1NJWkUoaGVhcCktMSkgPT0gLTEpCisgICAgaWYgKHNpZnRkb3duKChQeUxpc3RPYmplY3QgKiloZWFwLCAwLCBQeUxpc3RfR0VUX1NJWkUoaGVhcCktMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBwdXNoX2RvYywKICJoZWFwcHVzaChoZWFwLCBpdGVtKSAtPiBOb25lLiBQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1oZWFwcG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKK2hlYXBwb3BfaW50ZXJuYWwoUHlPYmplY3QgKmhlYXAsIGludCBzaWZ0dXBfZnVuYyhQeUxpc3RPYmplY3QgKiwgUHlfc3NpemVfdCkpCiB7CiAgICAgUHlPYmplY3QgKmxhc3RlbHQsICpyZXR1cm5pdGVtOwogICAgIFB5X3NzaXplX3QgbjsKQEAgLTEzMCw3ICsxMzEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiAjIHJhaXNlcyBhcHByb3ByaWF0ZSBJbmRleEVycm9yIGlmIGhlYXAgaXMgZW1wdHkgKi8KKyAgICAvKiByYWlzZXMgSW5kZXhFcnJvciBpZiB0aGUgaGVhcCBpcyBlbXB0eSAqLwogICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CiAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMTM5LDcgKzE0MCw3IEBACiAKICAgICBsYXN0ZWx0ID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIG4tMSkgOwogICAgIFB5X0lOQ1JFRihsYXN0ZWx0KTsKLSAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGhlYXAsIG4tMSwgbiwgTlVMTCkgPCAwKSB7CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShoZWFwLCBuLTEsIG4sIE5VTEwpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihsYXN0ZWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQ5LDE4ICsxNTAsMjQgQEAKICAgICAgICAgcmV0dXJuIGxhc3RlbHQ7CiAgICAgcmV0dXJuaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgMCwgbGFzdGVsdCk7Ci0gICAgaWYgKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApID09IC0xKSB7CisgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSkgewogICAgICAgICBQeV9ERUNSRUYocmV0dXJuaXRlbSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2hlYXBwb3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQoreworICAgIHJldHVybiBoZWFwcG9wX2ludGVybmFsKGhlYXAsIHNpZnR1cCk7Cit9CisKIFB5RG9jX1NUUlZBUihoZWFwcG9wX2RvYywKICJQb3AgdGhlIHNtYWxsZXN0IGl0ZW0gb2ZmIHRoZSBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1oZWFwcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitoZWFwcmVwbGFjZV9pbnRlcm5hbChQeU9iamVjdCAqYXJncywgaW50IHNpZnR1cF9mdW5jKFB5TGlzdE9iamVjdCAqLCBQeV9zc2l6ZV90KSkKIHsKICAgICBQeU9iamVjdCAqaGVhcCwgKml0ZW0sICpyZXR1cm5pdGVtOwogCkBAIC0xNzIsNyArMTc5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9HRVRfU0laRShoZWFwKSA8IDEpIHsKKyAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTgwLDEzICsxODcsMTkgQEAKICAgICByZXR1cm5pdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwogICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgMCwgaXRlbSk7Ci0gICAgaWYgKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApID09IC0xKSB7CisgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSkgewogICAgICAgICBQeV9ERUNSRUYocmV0dXJuaXRlbSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2hlYXByZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaGVhcHJlcGxhY2VfaW50ZXJuYWwoYXJncywgc2lmdHVwKTsKK30KKwogUHlEb2NfU1RSVkFSKGhlYXByZXBsYWNlX2RvYywKICJoZWFwcmVwbGFjZShoZWFwLCBpdGVtKSAtPiB2YWx1ZS4gUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuXAogXG5cCkBAIC0yMTEsMTMgKzIyNCwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApIDwgMSkgeworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPT0gMCkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0KIAogICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCksIGl0ZW0sIFB5X0xUKTsKLSAgICBpZiAoY21wID09IC0xKQorICAgIGlmIChjbXAgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY21wID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwpAQCAtMjMyLDcgKzI0NSw3IEBACiAgICAgcmV0dXJuaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIDAsIGl0ZW0pOwotICAgIGlmIChfc2lmdHVwKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSA9PSAtMSkgeworICAgIGlmIChzaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR1cm5pdGVtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjQ0LDggKzI1Nyw3MyBAQAogZnJvbSB0aGUgaGVhcC4gVGhlIGNvbWJpbmVkIGFjdGlvbiBydW5zIG1vcmUgZWZmaWNpZW50bHkgdGhhblxuXAogaGVhcHB1c2goKSBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGNhbGwgdG8gaGVhcHBvcCgpLiIpOwogCitzdGF0aWMgUHlfc3NpemVfdAora2VlcF90b3BfYml0KFB5X3NzaXplX3QgbikKK3sKKyAgICBpbnQgaSA9IDA7CisKKyAgICB3aGlsZSAobiA+IDEpIHsKKyAgICAgICAgbiA+Pj0gMTsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gbiA8PCBpOworfQorCisvKiBDYWNoZSBmcmllbmRseSB2ZXJzaW9uIG9mIGhlYXBpZnkoKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgQnVpbGQtdXAgYSBoZWFwIGluIE8obikgdGltZSBieSBwZXJmb3JtaW5nIHNpZnR1cCgpIG9wZXJhdGlvbnMKKyAgIG9uIG5vZGVzIHdob3NlIGNoaWxkcmVuIGFyZSBhbHJlYWR5IGhlYXBzLgorCisgICBUaGUgc2ltcGxlc3Qgd2F5IGlzIHRvIHNpZnQgdGhlIG5vZGVzIGluIHJldmVyc2Ugb3JkZXIgZnJvbQorICAgbi8vMi0xIHRvIDAgaW5jbHVzaXZlLiAgVGhlIGRvd25zaWRlIGlzIHRoYXQgY2hpbGRyZW4gbWF5IGJlCisgICBvdXQgb2YgY2FjaGUgYnkgdGhlIHRpbWUgdGhlaXIgcGFyZW50IGlzIHJlYWNoZWQuCisKKyAgIEEgYmV0dGVyIHdheSBpcyB0byBub3Qgd2FpdCBmb3IgdGhlIGNoaWxkcmVuIHRvIGdvIG91dCBvZiBjYWNoZS4KKyAgIE9uY2UgYSBzaWJsaW5nIHBhaXIgb2YgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHNpZnRlZCwgaW1tZWRpYXRlbHkKKyAgIHNpZnQgdGhlaXIgcGFyZW50IG5vZGUgKHdoaWxlIHRoZSBjaGlsZHJlbiBhcmUgc3RpbGwgaW4gY2FjaGUpLgorCisgICBCb3RoIHdheXMgYnVpbGQgY2hpbGQgaGVhcHMgYmVmb3JlIHRoZWlyIHBhcmVudHMsIHNvIGJvdGggd2F5cworICAgZG8gdGhlIGV4YWN0IHNhbWUgbnVtYmVyIG9mIGNvbXBhcmlzb25zIGFuZCBwcm9kdWNlIGV4YWN0bHkKKyAgIHRoZSBzYW1lIGhlYXAuICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIHRyYXZlcnNhbAorICAgb3JkZXIgaXMgb3B0aW1pemVkIGZvciBjYWNoZSBlZmZpY2llbmN5LgorKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWhlYXBpZnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQorY2FjaGVfZnJpZW5kbHlfaGVhcGlmeShQeU9iamVjdCAqaGVhcCwgaW50IHNpZnR1cF9mdW5jKFB5TGlzdE9iamVjdCAqLCBQeV9zc2l6ZV90KSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIGosIG0sIG1oYWxmLCBsZWZ0bW9zdDsKKworICAgIG0gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPj4gMTsgICAgICAgICAvKiBpbmRleCBvZiBmaXJzdCBjaGlsZGxlc3Mgbm9kZSAqLworICAgIGxlZnRtb3N0ID0ga2VlcF90b3BfYml0KG0gKyAxKSAtIDE7ICAgICAvKiBsZWZ0bW9zdCBub2RlIGluIHJvdyBvZiBtICovCisgICAgbWhhbGYgPSBtID4+IDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCBvZiBmaXJzdCBjaGlsZGxlc3Mgbm9kZSAqLworCisgICAgZm9yIChpID0gbGVmdG1vc3QgLSAxIDsgaSA+PSBtaGFsZiA7IGktLSkgeworICAgICAgICBqID0gaTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGlmIChzaWZ0dXBfZnVuYygoUHlMaXN0T2JqZWN0ICopaGVhcCwgaikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoIShqICYgMSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBqID4+PSAxOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpID0gbSAtIDEgOyBpID49IGxlZnRtb3N0IDsgaS0tKSB7CisgICAgICAgIGogPSBpOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCBqKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmICghKGogJiAxKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGogPj49IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitoZWFwaWZ5X2ludGVybmFsKFB5T2JqZWN0ICpoZWFwLCBpbnQgc2lmdHVwX2Z1bmMoUHlMaXN0T2JqZWN0ICosIFB5X3NzaXplX3QpKQogewogICAgIFB5X3NzaXplX3QgaSwgbjsKIApAQCAtMjU0LDcgKzMzMiwxNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICAvKiBGb3IgaGVhcHMgbGlrZWx5IHRvIGJlIGJpZ2dlciB0aGFuIEwxIGNhY2hlLCB3ZSB1c2UgdGhlIGNhY2hlCisgICAgICAgZnJpZW5kbHkgaGVhcGlmeSBmdW5jdGlvbi4gIEZvciBzbWFsbGVyIGhlYXBzIHRoYXQgZml0IGVudGlyZWx5CisgICAgICAgaW4gY2FjaGUsIHdlIHByZWZlciB0aGUgc2ltcGxlciBhbGdvcml0aG0gd2l0aCBsZXNzIGJyYW5jaGluZy4KKyAgICAqLwogICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CisgICAgaWYgKG4gPiAyNTAwKQorICAgICAgICByZXR1cm4gY2FjaGVfZnJpZW5kbHlfaGVhcGlmeShoZWFwLCBzaWZ0dXBfZnVuYyk7CisKICAgICAvKiBUcmFuc2Zvcm0gYm90dG9tLXVwLiAgVGhlIGxhcmdlc3QgaW5kZXggdGhlcmUncyBhbnkgcG9pbnQgdG8KICAgICAgICBsb29raW5nIGF0IGlzIHRoZSBsYXJnZXN0IHdpdGggYSBjaGlsZCBpbmRleCBpbi1yYW5nZSwgc28gbXVzdAogICAgICAgIGhhdmUgMippICsgMSA8IG4sIG9yIGkgPCAobi0xKS8yLiAgSWYgbiBpcyBldmVuID0gMipqLCB0aGlzIGlzCkBAIC0yNjIsMTQyICszNDcsNjggQEAKICAgICAgICBuIGlzIG9kZCA9IDIqaisxLCB0aGlzIGlzICgyKmorMS0xKS8yID0gaiBzbyBqLTEgaXMgdGhlIGxhcmdlc3QsCiAgICAgICAgYW5kIHRoYXQncyBhZ2FpbiBuLy8yLTEuCiAgICAgKi8KLSAgICBmb3IgKGk9bi8yLTEgOyBpPj0wIDsgaS0tKQotICAgICAgICBpZihfc2lmdHVwKChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSA9PSAtMSkKKyAgICBmb3IgKGkgPSBuLzIgLSAxIDsgaSA+PSAwIDsgaS0tKQorICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraGVhcGlmeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCit7CisgICAgcmV0dXJuIGhlYXBpZnlfaW50ZXJuYWwoaGVhcCwgc2lmdHVwKTsKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBpZnlfZG9jLAogIlRyYW5zZm9ybSBsaXN0IGludG8gYSBoZWFwLCBpbi1wbGFjZSwgaW4gTyhsZW4oaGVhcCkpIHRpbWUuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1ubGFyZ2VzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmhlYXA9TlVMTCwgKmVsZW0sICppdGVyYWJsZSwgKnNvbCwgKml0LCAqb2xkZWxlbTsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgaW50IGNtcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86bmxhcmdlc3QiLCAmbiwgJml0ZXJhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGhlYXAgPSBQeUxpc3RfTmV3KDApOwotICAgIGlmIChoZWFwID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrICl7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBlbGVtKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9HRVRfU0laRShoZWFwKSA9PSAwKQotICAgICAgICBnb3RvIHNvcnRpdDsKLQotICAgIGZvciAoaT1uLzItMSA7IGk+PTAgOyBpLS0pCi0gICAgICAgIGlmKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsOwotCi0gICAgc29sID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc29sLCBlbGVtLCBQeV9MVCk7Ci0gICAgICAgIGlmIChjbXAgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY21wID09IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIG9sZGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBlbGVtKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZGVsZW0pOwotICAgICAgICBpZiAoX3NpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIHNvbCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB9Ci1zb3J0aXQ6Ci0gICAgaWYgKFB5TGlzdF9Tb3J0KGhlYXApID09IC0xKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKFB5TGlzdF9SZXZlcnNlKGhlYXApID09IC0xKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICByZXR1cm4gaGVhcDsKLQotZmFpbDoKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYoaGVhcCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihubGFyZ2VzdF9kb2MsCi0iRmluZCB0aGUgbiBsYXJnZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC5cblwKLVxuXAotRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwgcmV2ZXJzZT1UcnVlKVs6bl1cbiIpOwotCiBzdGF0aWMgaW50Ci1fc2lmdGRvd25tYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IHBvcykKK3NpZnRkb3duX21heChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQogewotICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50OworICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50LCAqKmFycjsKKyAgICBQeV9zc2l6ZV90IHBhcmVudHBvcywgc2l6ZTsKICAgICBpbnQgY21wOwotICAgIFB5X3NzaXplX3QgcGFyZW50cG9zOwogCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhoZWFwKSk7Ci0gICAgaWYgKHBvcyA+PSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKKyAgICBzaXplID0gUHlMaXN0X0dFVF9TSVpFKGhlYXApOworICAgIGlmIChwb3MgPj0gc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgbmV3aXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOwotICAgIFB5X0lOQ1JFRihuZXdpdGVtKTsKICAgICAvKiBGb2xsb3cgdGhlIHBhdGggdG8gdGhlIHJvb3QsIG1vdmluZyBwYXJlbnRzIGRvd24gdW50aWwgZmluZGluZwogICAgICAgIGEgcGxhY2UgbmV3aXRlbSBmaXRzLiAqLwotICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcyl7CisgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKKyAgICBuZXdpdGVtID0gYXJyW3Bvc107CisgICAgd2hpbGUgKHBvcyA+IHN0YXJ0cG9zKSB7CiAgICAgICAgIHBhcmVudHBvcyA9IChwb3MgLSAxKSA+PiAxOwotICAgICAgICBwYXJlbnQgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcGFyZW50cG9zKTsKKyAgICAgICAgcGFyZW50ID0gYXJyW3BhcmVudHBvc107CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYXJlbnQsIG5ld2l0ZW0sIFB5X0xUKTsKLSAgICAgICAgaWYgKGNtcCA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG5ld2l0ZW0pOworICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHNpemUgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNtcCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOwotICAgICAgICBQeV9ERUNSRUYoUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcykpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBwYXJlbnQpOworICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKKyAgICAgICAgbmV3aXRlbSA9IGFycltwb3NdOworICAgICAgICBhcnJbcGFyZW50cG9zXSA9IG5ld2l0ZW07CisgICAgICAgIGFycltwb3NdID0gcGFyZW50OwogICAgICAgICBwb3MgPSBwYXJlbnRwb3M7CiAgICAgfQotICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLV9zaWZ0dXBtYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKK3NpZnR1cF9tYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIGNoaWxkcG9zLCByaWdodHBvcywgbGltaXQ7CisgICAgUHlfc3NpemVfdCBzdGFydHBvcywgZW5kcG9zLCBjaGlsZHBvcywgbGltaXQ7CisgICAgUHlPYmplY3QgKnRtcDEsICp0bXAyLCAqKmFycjsKICAgICBpbnQgY21wOwotICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqdG1wOwogCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhoZWFwKSk7CiAgICAgZW5kcG9zID0gUHlMaXN0X0dFVF9TSVpFKGhlYXApOwpAQCAtNDA2LDEyNSArNDE3LDYyIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgbmV3aXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOwotICAgIFB5X0lOQ1JFRihuZXdpdGVtKTsKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KKyAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KLSAgICAgICAgcmlnaHRwb3MgPSBjaGlsZHBvcyArIDE7Ci0gICAgICAgIGlmIChyaWdodHBvcyA8IGVuZHBvcykgeworICAgICAgICBpZiAoY2hpbGRwb3MgKyAxIDwgZW5kcG9zKSB7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHJpZ2h0cG9zKSwKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oaGVhcCwgY2hpbGRwb3MpLAorICAgICAgICAgICAgICAgIGFycltjaGlsZHBvcyArIDFdLAorICAgICAgICAgICAgICAgIGFycltjaGlsZHBvc10sCiAgICAgICAgICAgICAgICAgUHlfTFQpOwotICAgICAgICAgICAgaWYgKGNtcCA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdpdGVtKTsKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNtcCA9PSAwKQotICAgICAgICAgICAgICAgIGNoaWxkcG9zID0gcmlnaHRwb3M7CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgdG1wID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIGNoaWxkcG9zKTsKLSAgICAgICAgUHlfSU5DUkVGKHRtcCk7Ci0gICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwb3MsIHRtcCk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOworICAgICAgICB0bXAyID0gYXJyW3Bvc107CisgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOworICAgICAgICBhcnJbcG9zXSA9IHRtcDE7CiAgICAgICAgIHBvcyA9IGNoaWxkcG9zOwogICAgIH0KLQotICAgIC8qIFRoZSBsZWFmIGF0IHBvcyBpcyBlbXB0eSBub3cuICBQdXQgbmV3aXRlbSB0aGVyZSwgYW5kIGJ1YmJsZQotICAgICAgIGl0IHVwIHRvIGl0cyBmaW5hbCByZXN0aW5nIHBsYWNlIChieSBzaWZ0aW5nIGl0cyBwYXJlbnRzIGRvd24pLiAqLwotICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgbmV3aXRlbSk7Ci0gICAgcmV0dXJuIF9zaWZ0ZG93bm1heChoZWFwLCBzdGFydHBvcywgcG9zKTsKKyAgICAvKiBCdWJibGUgaXQgdXAgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuICovCisgICAgcmV0dXJuIHNpZnRkb3duX21heChoZWFwLCBzdGFydHBvcywgcG9zKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5zbWFsbGVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitoZWFwcG9wX21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCiB7Ci0gICAgUHlPYmplY3QgKmhlYXA9TlVMTCwgKmVsZW0sICppdGVyYWJsZSwgKmxvcywgKml0LCAqb2xkZWxlbTsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgaW50IGNtcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86bnNtYWxsZXN0IiwgJm4sICZpdGVyYWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoZWFwID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAoaGVhcCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKyApewotICAgICAgICBlbGVtID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ290byBzb3J0aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoaGVhcCwgZWxlbSkgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgfQotICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7Ci0gICAgaWYgKG4gPT0gMCkKLSAgICAgICAgZ290byBzb3J0aXQ7Ci0KLSAgICBmb3IgKGk9bi8yLTEgOyBpPj0wIDsgaS0tKQotICAgICAgICBpZihfc2lmdHVwbWF4KChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLQotICAgIGxvcyA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICBlbGVtID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ290byBzb3J0aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0sIGxvcywgUHlfTFQpOwotICAgICAgICBpZiAoY21wID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNtcCA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9sZGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBlbGVtKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZGVsZW0pOwotICAgICAgICBpZiAoX3NpZnR1cG1heCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGxvcyA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB9Ci0KLXNvcnRpdDoKLSAgICBpZiAoUHlMaXN0X1NvcnQoaGVhcCkgPT0gLTEpCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBoZWFwOwotCi1mYWlsOgotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfWERFQ1JFRihoZWFwKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaGVhcHBvcF9pbnRlcm5hbChoZWFwLCBzaWZ0dXBfbWF4KTsKIH0KIAotUHlEb2NfU1RSVkFSKG5zbWFsbGVzdF9kb2MsCi0iRmluZCB0aGUgbiBzbWFsbGVzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuXG5cCi1cblwKLUVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUpWzpuXVxuIik7CitQeURvY19TVFJWQVIoaGVhcHBvcF9tYXhfZG9jLCAiTWF4aGVhcCB2YXJpYW50IG9mIGhlYXBwb3AuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitoZWFwcmVwbGFjZV9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBoZWFwcmVwbGFjZV9pbnRlcm5hbChhcmdzLCBzaWZ0dXBfbWF4KTsKK30KKworUHlEb2NfU1RSVkFSKGhlYXByZXBsYWNlX21heF9kb2MsICJNYXhoZWFwIHZhcmlhbnQgb2YgaGVhcHJlcGxhY2UiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2hlYXBpZnlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKK3sKKyAgICByZXR1cm4gaGVhcGlmeV9pbnRlcm5hbChoZWFwLCBzaWZ0dXBfbWF4KTsKK30KKworUHlEb2NfU1RSVkFSKGhlYXBpZnlfbWF4X2RvYywgIk1heGhlYXAgdmFyaWFudCBvZiBoZWFwaWZ5LiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaGVhcHFfbWV0aG9kc1tdID0gewogICAgIHsiaGVhcHB1c2giLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWhlYXBwdXNoLApAQCAtNTM3LDEwICs0ODUsMTIgQEAKICAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgaGVhcHJlcGxhY2VfZG9jfSwKICAgICB7ImhlYXBpZnkiLCAgICAgICAgIChQeUNGdW5jdGlvbiloZWFwaWZ5LAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICBoZWFwaWZ5X2RvY30sCi0gICAgeyJubGFyZ2VzdCIsICAgICAgICAoUHlDRnVuY3Rpb24pbmxhcmdlc3QsCi0gICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgIG5sYXJnZXN0X2RvY30sCi0gICAgeyJuc21hbGxlc3QiLCAgICAgICAoUHlDRnVuY3Rpb24pbnNtYWxsZXN0LAotICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICBuc21hbGxlc3RfZG9jfSwKKyAgICB7Il9oZWFwcG9wX21heCIsICAgIChQeUNGdW5jdGlvbiloZWFwcG9wX21heCwKKyAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgaGVhcHBvcF9tYXhfZG9jfSwKKyAgICB7Il9oZWFwcmVwbGFjZV9tYXgiLChQeUNGdW5jdGlvbiloZWFwcmVwbGFjZV9tYXgsCisgICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgIGhlYXByZXBsYWNlX21heF9kb2N9LAorICAgIHsiX2hlYXBpZnlfbWF4IiwgICAgKFB5Q0Z1bmN0aW9uKWhlYXBpZnlfbWF4LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICBoZWFwaWZ5X21heF9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IDQ1YzMxYTUuLjUyOGJjZDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC05MywxNDAgKzkzLDE0NSBAQAogLyoKICAqIFRoZSBtYWluIG9wZW4oKSBmdW5jdGlvbgogICovCi1QeURvY19TVFJWQVIob3Blbl9kb2MsCi0ib3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLFxuIgotIiAgICAgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkgLT4gZmlsZSBvYmplY3RcbiIKLSJcbiIKLSJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLlxuIgotIlxuIgotImZpbGUgaXMgZWl0aGVyIGEgdGV4dCBvciBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgKGFuZCB0aGUgcGF0aFxuIgotImlmIHRoZSBmaWxlIGlzbid0IGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0b1xuIgotImJlIG9wZW5lZCBvciBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZVxuIgotIndyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlXG4iCi0icmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pXG4iCi0iXG4iCi0ibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKLSJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHRcbiIKLSJtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCi0iaXQgYWxyZWFkeSBleGlzdHMpLCAneCcgZm9yIGNyZWF0aW5nIGFuZCB3cml0aW5nIHRvIGEgbmV3IGZpbGUsIGFuZFxuIgotIidhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzXG4iCi0iYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS5cbiIKLSJJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm1cbiIKLSJkZXBlbmRlbnQ6IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaXMgY2FsbGVkIHRvIGdldCB0aGVcbiIKLSJjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5XG4iCi0ibW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZTpcbiIKLSJcbiIKLSI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCi0iQ2hhcmFjdGVyIE1lYW5pbmdcbiIKLSItLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCi0iJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpXG4iCi0iJ3cnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3RcbiIKLSIneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmdcbiIKLSInYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzXG4iCi0iJ2InICAgICAgIGJpbmFyeSBtb2RlXG4iCi0iJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdClcbiIKLSInKycgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpXG4iCi0iJ1UnICAgICAgIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgKGRlcHJlY2F0ZWQpXG4iCi0iPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgotIlxuIgotIlRoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb21cbiIKLSJhY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGVcbiIKLSIncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmRcbiIKLSJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCi0iXG4iCi0iUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgotImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpblxuIgotImJpbmFyeSBtb2RlIChhcHBlbmRpbmcgJ2InIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXNcbiIKLSJieXRlcyBvYmplY3RzIHdpdGhvdXQgYW55IGRlY29kaW5nLiBJbiB0ZXh0IG1vZGUgKHRoZSBkZWZhdWx0LCBvciB3aGVuXG4iCi0iJ3QnIGlzIGFwcGVuZGVkIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZVxuIgotInJldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGFcbiIKLSJwbGF0Zm9ybS1kZXBlbmRlbnQgZW5jb2Rpbmcgb3IgdXNpbmcgdGhlIHNwZWNpZmllZCBlbmNvZGluZyBpZiBnaXZlbi5cbiIKLSJcbiIKLSInVScgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnNcbiIKLSJvZiBQeXRob24uICBJdCBoYXMgbm8gZWZmZWN0IGluIFB5dGhvbiAzLiAgVXNlIG5ld2xpbmUgdG8gY29udHJvbFxuIgotInVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLlxuIgotIlxuIgotImJ1ZmZlcmluZyBpcyBhbiBvcHRpb25hbCBpbnRlZ2VyIHVzZWQgdG8gc2V0IHRoZSBidWZmZXJpbmcgcG9saWN5LlxuIgotIlBhc3MgMCB0byBzd2l0Y2ggYnVmZmVyaW5nIG9mZiAob25seSBhbGxvd2VkIGluIGJpbmFyeSBtb2RlKSwgMSB0byBzZWxlY3RcbiIKLSJsaW5lIGJ1ZmZlcmluZyAob25seSB1c2FibGUgaW4gdGV4dCBtb2RlKSwgYW5kIGFuIGludGVnZXIgPiAxIHRvIGluZGljYXRlXG4iCi0idGhlIHNpemUgb2YgYSBmaXhlZC1zaXplIGNodW5rIGJ1ZmZlci4gIFdoZW4gbm8gYnVmZmVyaW5nIGFyZ3VtZW50IGlzXG4iCi0iZ2l2ZW4sIHRoZSBkZWZhdWx0IGJ1ZmZlcmluZyBwb2xpY3kgd29ya3MgYXMgZm9sbG93czpcbiIKLSJcbiIKLSIqIEJpbmFyeSBmaWxlcyBhcmUgYnVmZmVyZWQgaW4gZml4ZWQtc2l6ZSBjaHVua3M7IHRoZSBzaXplIG9mIHRoZSBidWZmZXJcbiIKLSIgIGlzIGNob3NlbiB1c2luZyBhIGhldXJpc3RpYyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGRldmljZSdzXG4iCi0iICBcImJsb2NrIHNpemVcIiBhbmQgZmFsbGluZyBiYWNrIG9uIGBpby5ERUZBVUxUX0JVRkZFUl9TSVpFYC5cbiIKLSIgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy5cbiIKLSJcbiIKLSIqIFwiSW50ZXJhY3RpdmVcIiB0ZXh0IGZpbGVzIChmaWxlcyBmb3Igd2hpY2ggaXNhdHR5KCkgcmV0dXJucyBUcnVlKVxuIgotIiAgdXNlIGxpbmUgYnVmZmVyaW5nLiAgT3RoZXIgdGV4dCBmaWxlcyB1c2UgdGhlIHBvbGljeSBkZXNjcmliZWQgYWJvdmVcbiIKLSIgIGZvciBiaW5hcnkgZmlsZXMuXG4iCi0iXG4iCi0iZW5jb2RpbmcgaXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gZGVjb2RlIG9yIGVuY29kZSB0aGVcbiIKLSJmaWxlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBlbmNvZGluZyBpc1xuIgotInBsYXRmb3JtIGRlcGVuZGVudCwgYnV0IGFueSBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgUHl0aG9uIGNhbiBiZVxuIgotInBhc3NlZC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncy5cbiIKLSJcbiIKLSJlcnJvcnMgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBlcnJvcnMgYXJlIHRvXG4iCi0iYmUgaGFuZGxlZC0tLXRoaXMgYXJndW1lbnQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGJpbmFyeSBtb2RlLiBQYXNzXG4iCi0iJ3N0cmljdCcgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlbmNvZGluZyBlcnJvclxuIgotIih0aGUgZGVmYXVsdCBvZiBOb25lIGhhcyB0aGUgc2FtZSBlZmZlY3QpLCBvciBwYXNzICdpZ25vcmUnIHRvIGlnbm9yZVxuIgotImVycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLilcbiIKLSJTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gJ2hlbHAoY29kZWNzLkNvZGVjKSdcbiIKLSJmb3IgYSBsaXN0IG9mIHRoZSBwZXJtaXR0ZWQgZW5jb2RpbmcgZXJyb3Igc3RyaW5ncy5cbiIKLSJcbiIKLSJuZXdsaW5lIGNvbnRyb2xzIGhvdyB1bml2ZXJzYWwgbmV3bGluZXMgd29ya3MgKGl0IG9ubHkgYXBwbGllcyB0byB0ZXh0XG4iCi0ibW9kZSkuIEl0IGNhbiBiZSBOb25lLCAnJywgJ1xcbicsICdcXHInLCBhbmQgJ1xcclxcbicuICBJdCB3b3JrcyBhc1xuIgotImZvbGxvd3M6XG4iCi0iXG4iCi0iKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpc1xuIgotIiAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xcbicsICdcXHInLCBvciAnXFxyXFxuJywgYW5kXG4iCi0iICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKLSIgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKLSIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCi0iICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgotIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgotIlxuIgotIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXFxuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlXG4iCi0iICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWZcbiIKLSIgIG5ld2xpbmUgaXMgJycgb3IgJ1xcbicsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgotIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZFxuIgotIiAgdG8gdGhlIGdpdmVuIHN0cmluZy5cbiIKLSJcbiIKLSJJZiBjbG9zZWZkIGlzIEZhbHNlLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW5cbiIKLSJ3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZC4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBmaWxlIG5hbWUgaXMgZ2l2ZW5cbiIKLSJhbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS5cbiIKLSJcbiIKLSJBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGVcbiIKLSJ1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnlcbiIKLSJjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW5cbiIKLSJmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHlcbiIKLSJzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuXG4iCi0iXG4iCi0ib3BlbigpIHJldHVybnMgYSBmaWxlIG9iamVjdCB3aG9zZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1vZGUsIGFuZFxuIgotInRocm91Z2ggd2hpY2ggdGhlIHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmdcbiIKLSJhcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsXG4iCi0iJ3InLCAnd3QnLCAncnQnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuXG4iCi0iYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5XG4iCi0ibW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnlcbiIKLSJtb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zXG4iCi0iYSBCdWZmZXJlZFJhbmRvbS5cbiIKLSJcbiIKLSJJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKLSJvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCi0ib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuXG4iCi0gICAgKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KKworX2lvLm9wZW4KKyAgICBmaWxlOiBvYmplY3QKKyAgICBtb2RlOiBzdHIgPSAiciIKKyAgICBidWZmZXJpbmc6IGludCA9IC0xCisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBuZXdsaW5lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgY2xvc2VmZDogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQorICAgIG9wZW5lcjogb2JqZWN0ID0gTm9uZQorCitPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLgorCitmaWxlIGlzIGVpdGhlciBhIHRleHQgb3IgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIChhbmQgdGhlIHBhdGgKK2lmIHRoZSBmaWxlIGlzbid0IGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0bworYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlCit3cmFwcGVkLiAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZQorcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pCisKK21vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlCitpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQKK21vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYKK2l0IGFscmVhZHkgZXhpc3RzKSwgJ3gnIGZvciBjcmVhdGluZyBhbmQgd3JpdGluZyB0byBhIG5ldyBmaWxlLCBhbmQKKydhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzCithcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLgorSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtCitkZXBlbmRlbnQ6IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaXMgY2FsbGVkIHRvIGdldCB0aGUKK2N1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkKK21vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CisKKz09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYXJhY3RlciBNZWFuaW5nCistLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKKyd3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmcKKydhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKKydiJyAgICAgICBiaW5hcnkgbW9kZQorJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdCkKKycrJyAgICAgICBvcGVuIGEgZGlzayBmaWxlIGZvciB1cGRhdGluZyAocmVhZGluZyBhbmQgd3JpdGluZykKKydVJyAgICAgICB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIChkZXByZWNhdGVkKQorPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tCithY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGUKKydyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZAorcmFpc2VzIGFuIGBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgorCitQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCitldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2Vzbid0LiBGaWxlcyBvcGVuZWQgaW4KK2JpbmFyeSBtb2RlIChhcHBlbmRpbmcgJ2InIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXMKK2J5dGVzIG9iamVjdHMgd2l0aG91dCBhbnkgZGVjb2RpbmcuIEluIHRleHQgbW9kZSAodGhlIGRlZmF1bHQsIG9yIHdoZW4KKyd0JyBpcyBhcHBlbmRlZCB0byB0aGUgbW9kZSBhcmd1bWVudCksIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUKK3JldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGEKK3BsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLgorCisnVScgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnMKK29mIFB5dGhvbi4gIEl0IGhhcyBubyBlZmZlY3QgaW4gUHl0aG9uIDMuICBVc2UgbmV3bGluZSB0byBjb250cm9sCit1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS4KKworYnVmZmVyaW5nIGlzIGFuIG9wdGlvbmFsIGludGVnZXIgdXNlZCB0byBzZXQgdGhlIGJ1ZmZlcmluZyBwb2xpY3kuCitQYXNzIDAgdG8gc3dpdGNoIGJ1ZmZlcmluZyBvZmYgKG9ubHkgYWxsb3dlZCBpbiBiaW5hcnkgbW9kZSksIDEgdG8gc2VsZWN0CitsaW5lIGJ1ZmZlcmluZyAob25seSB1c2FibGUgaW4gdGV4dCBtb2RlKSwgYW5kIGFuIGludGVnZXIgPiAxIHRvIGluZGljYXRlCit0aGUgc2l6ZSBvZiBhIGZpeGVkLXNpemUgY2h1bmsgYnVmZmVyLiAgV2hlbiBubyBidWZmZXJpbmcgYXJndW1lbnQgaXMKK2dpdmVuLCB0aGUgZGVmYXVsdCBidWZmZXJpbmcgcG9saWN5IHdvcmtzIGFzIGZvbGxvd3M6CisKKyogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgorICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2UncworICAiYmxvY2sgc2l6ZSIgYW5kIGZhbGxpbmcgYmFjayBvbiBgaW8uREVGQVVMVF9CVUZGRVJfU0laRWAuCisgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy4KKworKiAiSW50ZXJhY3RpdmUiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpCisgIHVzZSBsaW5lIGJ1ZmZlcmluZy4gIE90aGVyIHRleHQgZmlsZXMgdXNlIHRoZSBwb2xpY3kgZGVzY3JpYmVkIGFib3ZlCisgIGZvciBiaW5hcnkgZmlsZXMuCisKK2VuY29kaW5nIGlzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGRlY29kZSBvciBlbmNvZGUgdGhlCitmaWxlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcworcGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlCitwYXNzZWQuICBTZWUgdGhlIGNvZGVjcyBtb2R1bGUgZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBlbmNvZGluZ3MuCisKK2Vycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG8KK2JlIGhhbmRsZWQtLS10aGlzIGFyZ3VtZW50IHNob3VsZCBub3QgYmUgdXNlZCBpbiBiaW5hcnkgbW9kZS4gUGFzcworJ3N0cmljdCcgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlbmNvZGluZyBlcnJvcgorKHRoZSBkZWZhdWx0IG9mIE5vbmUgaGFzIHRoZSBzYW1lIGVmZmVjdCksIG9yIHBhc3MgJ2lnbm9yZScgdG8gaWdub3JlCitlcnJvcnMuIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcgZXJyb3JzIGNhbiBsZWFkIHRvIGRhdGEgbG9zcy4pCitTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gJ2hlbHAoY29kZWNzLkNvZGVjKScKK2ZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLgorCituZXdsaW5lIGNvbnRyb2xzIGhvdyB1bml2ZXJzYWwgbmV3bGluZXMgd29ya3MgKGl0IG9ubHkgYXBwbGllcyB0byB0ZXh0Cittb2RlKS4gSXQgY2FuIGJlIE5vbmUsICcnLCAnXG4nLCAnXHInLCBhbmQgJ1xyXG4nLiAgSXQgd29ya3MgYXMKK2ZvbGxvd3M6CisKKyogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMKKyAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xuJywgJ1xyJywgb3IgJ1xyXG4nLCBhbmQKKyAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byAnXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGUKKyAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZQorICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZgorICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbgorICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuCisKKyogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUKKyAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCisgIG5ld2xpbmUgaXMgJycgb3IgJ1xuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55CisgIG9mIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZAorICB0byB0aGUgZ2l2ZW4gc3RyaW5nLgorCitJZiBjbG9zZWZkIGlzIEZhbHNlLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW4KK3doZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlbgorYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuCisKK0EgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZQordW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5CitjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4KK2ZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eQorc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorCitvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kCit0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCithcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsCisncicsICd3dCcsICdydCcsIGV0Yy4pLCBpdCByZXR1cm5zIGEgVGV4dElPV3JhcHBlci4gV2hlbiB1c2VkIHRvIG9wZW4KK2EgZmlsZSBpbiBhIGJpbmFyeSBtb2RlLCB0aGUgcmV0dXJuZWQgY2xhc3MgdmFyaWVzOiBpbiByZWFkIGJpbmFyeQorbW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnkKK21vZGVzLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRXcml0ZXIsIGFuZCBpbiByZWFkL3dyaXRlIG1vZGUsIGl0IHJldHVybnMKK2EgQnVmZmVyZWRSYW5kb20uCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGEgc3RyaW5nIG9yIGJ5dGVhcnJheSBhcyBhIGZpbGUgZm9yIGJvdGgKK3JlYWRpbmcgYW5kIHdyaXRpbmcuIEZvciBzdHJpbmdzIFN0cmluZ0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCitvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCitvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvX29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCisgICAgICAgICAgICAgIGludCBidWZmZXJpbmcsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MTVkMGQ3NDZlYjE0ZDIgaW5wdXQ9ZjRlMWNhNzUyMjM5ODdiY10qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLAotICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpmaWxlLCAqb3BlbmVyID0gUHlfTm9uZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGludCBidWZmZXJpbmcgPSAtMSwgY2xvc2VmZCA9IDE7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMLCAqZXJyb3JzID0gTlVMTCwgKm5ld2xpbmUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGk7CiAKICAgICBpbnQgY3JlYXRpbmcgPSAwLCByZWFkaW5nID0gMCwgd3JpdGluZyA9IDAsIGFwcGVuZGluZyA9IDAsIHVwZGF0aW5nID0gMDsKQEAgLTIzNywxOCArMjQyLDExIEBACiAKICAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTDsKIAorICAgIF9QeV9JREVOVElGSUVSKF9ibGtzaXplKTsKICAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwotICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppTzpvcGVuIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkLCAmb3BlbmVyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlKSAmJgogCSFQeUJ5dGVzX0NoZWNrKGZpbGUpICYmCiAJIVB5TnVtYmVyX0NoZWNrKGZpbGUpKSB7CkBAIC0zODAsMjQgKzM3OCwxNCBAQAogICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IDA7CiAKICAgICBpZiAoYnVmZmVyaW5nIDwgMCkgewotICAgICAgICBidWZmZXJpbmcgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICAgICAgICAgIGxvbmcgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9maWxlbm8sIE5VTEwpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgICAgIGZpbGVubyA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgaWYgKGZpbGVubyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgICAgIGlmIChmc3RhdChmaWxlbm8sICZzdCkgPj0gMCAmJiBzdC5zdF9ibGtzaXplID4gMSkKLSAgICAgICAgICAgICAgICBidWZmZXJpbmcgPSBzdC5zdF9ibGtzaXplOwotICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgUHlPYmplY3QgKmJsa3NpemVfb2JqOworICAgICAgICBibGtzaXplX29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQocmF3LCAmUHlJZF9fYmxrc2l6ZSk7CisgICAgICAgIGlmIChibGtzaXplX29iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYnVmZmVyaW5nID0gUHlMb25nX0FzTG9uZyhibGtzaXplX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihibGtzaXplX29iaik7CisgICAgICAgIGlmIChidWZmZXJpbmcgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChidWZmZXJpbmcgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNjIxLDggKzYwOSwxMCBAQAogICogTW9kdWxlIGRlZmluaXRpb24KICAqLwogCisjaW5jbHVkZSAiY2xpbmljL19pb21vZHVsZS5jLmgiCisKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilpb19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Blbl9kb2N9LAorICAgIF9JT19PUEVOX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCA4OTI3ODY0Li45ZDUyMDVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNjksNyArNjksNyBAQAogICogT2Zmc2V0IHR5cGUgZm9yIHBvc2l0aW9uaW5nLgogICovCiAKLS8qIFByaW50aW5nIGEgdmFyaWFibGUgb2YgdHlwZSBvZmZfdCAod2l0aCBlLmcuLCBQeVN0cmluZ19Gcm9tRm9ybWF0KQorLyogUHJpbnRpbmcgYSB2YXJpYWJsZSBvZiB0eXBlIG9mZl90ICh3aXRoIGUuZy4sIFB5VW5pY29kZV9Gcm9tRm9ybWF0KQogICAgY29ycmVjdGx5IGFuZCB3aXRob3V0IHByb2R1Y2luZyBjb21waWxlciB3YXJuaW5ncyBpcyBzdXJwcmlzaW5nbHkgcGFpbmZ1bC4KICAgIFdlIGlkZW50aWZ5IGFuIGludGVnZXIgdHlwZSB3aG9zZSBzaXplIG1hdGNoZXMgb2ZmX3QgYW5kIHRoZW46ICgxKSBjYXN0IHRoZQogICAgb2ZmX3QgdG8gdGhhdCBpbnRlZ2VyIHR5cGUgYW5kICgyKSB1c2UgdGhlIGFwcHJvcHJpYXRlIGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCAzNjViYjg1Li4yOWUwMDBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xMyw2ICsxMywyNCBAQAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5fQnVmZmVyZWRJT0Jhc2UgIlB5T2JqZWN0ICoiICImUHlCdWZmZXJlZElPQmFzZV9UeXBlIgorY2xhc3MgX2lvLl9CdWZmZXJlZCAiYnVmZmVyZWQgKiIgIiZQeUJ1ZmZlcmVkSU9CYXNlX1R5cGUiCitjbGFzcyBfaW8uQnVmZmVyZWRSZWFkZXIgImJ1ZmZlcmVkICoiICImUHlCdWZmZXJlZFJlYWRlcl9UeXBlIgorY2xhc3MgX2lvLkJ1ZmZlcmVkV3JpdGVyICJidWZmZXJlZCAqIiAiJlB5QnVmZmVyZWRXcml0ZXJfVHlwZSIKK2NsYXNzIF9pby5CdWZmZXJlZFJXUGFpciAicndwYWlyICoiICImUHlCdWZmZXJlZFJXUGFpcl9UeXBlIgorY2xhc3MgX2lvLkJ1ZmZlcmVkUmFuZG9tICJidWZmZXJlZCAqIiAiJlB5QnVmZmVyZWRSYW5kb21fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTU5NDYwYjljNTYzOTk4NGRdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwogX1B5X0lERU5USUZJRVIoY2xvc2UpOwogX1B5X0lERU5USUZJRVIoX2RlYWxsb2Nfd2Fybik7CiBfUHlfSURFTlRJRklFUihmbHVzaCk7CkBAIC0yNCw2ICs0Miw3IEBACiBfUHlfSURFTlRJRklFUihyZWFkMSk7CiBfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CiBfUHlfSURFTlRJRklFUihyZWFkaW50byk7CitfUHlfSURFTlRJRklFUihyZWFkaW50bzEpOwogX1B5X0lERU5USUZJRVIod3JpdGFibGUpOwogX1B5X0lERU5USUZJRVIod3JpdGUpOwogCkBAIC00Nyw0NSArNjYsNjMgQEAKICAgICApOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2J1ZmZlcmVkaW9iYXNlX3JlYWRpbnRvX2dlbmVyaWMoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyLCBjaGFyIHJlYWRpbnRvMSkKIHsKLSAgICBQeV9idWZmZXIgYnVmOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpkYXRhOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3JlYWQsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkaW50bzEgPyAmUHlJZF9yZWFkMSA6ICZQeUlkX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm4iLCBidWZmZXItPmxlbik7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVhZCgpIHNob3VsZCByZXR1cm4gYnl0ZXMiKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgbGVuID0gUHlfU0laRShkYXRhKTsKLSAgICBpZiAobGVuID4gYnVmLmxlbikgeworICAgIGlmIChsZW4gPiBidWZmZXItPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJyZWFkKCkgcmV0dXJuZWQgdG9vIG11Y2ggZGF0YTogIgogICAgICAgICAgICAgICAgICAgICAgIiV6ZCBieXRlcyByZXF1ZXN0ZWQsICV6ZCByZXR1cm5lZCIsCi0gICAgICAgICAgICAgICAgICAgICBidWYubGVuLCBsZW4pOworICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5sZW4sIGxlbik7CiAgICAgICAgIFB5X0RFQ1JFRihkYXRhKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShidWYuYnVmLCBQeUJ5dGVzX0FTX1NUUklORyhkYXRhKSwgbGVuKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5idWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGRhdGEpLCBsZW4pOwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICBQeV9ERUNSRUYoZGF0YSk7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7Cit9CiAKLSAgZXJyb3I6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWRJT0Jhc2UucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjOGNkYTY2ODRhZjgwMzggaW5wdXQ9MDBhNmI5YTM4ZjI5ODMwYV0qLworeworICAgIHJldHVybiBfYnVmZmVyZWRpb2Jhc2VfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDApOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvMQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1ODYyM2U0ZmQyYjY5ZDMgaW5wdXQ9ZWJhZDc1YjRhYWRmYjliZV0qLworeworICAgIHJldHVybiBfYnVmZmVyZWRpb2Jhc2VfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsMTQgKzEzNCwxOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoYnVmZmVyZWRpb2Jhc2VfZGV0YWNoX2RvYywKLSAgICAiRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC5cbiIKLSAgICAiXG4iCi0gICAgIkFmdGVyIHRoZSByYXcgc3RyZWFtIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgYnVmZmVyIGlzIGluIGFuIHVudXNhYmxlXG4iCi0gICAgInN0YXRlLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkSU9CYXNlLmRldGFjaAorCitEaXNjb25uZWN0IHRoaXMgYnVmZmVyIGZyb20gaXRzIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBhbmQgcmV0dXJuIGl0LgorCitBZnRlciB0aGUgcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIGJ1ZmZlciBpcyBpbiBhbiB1bnVzYWJsZQorc3RhdGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZGlvYmFzZV9kZXRhY2goUHlPYmplY3QgKnNlbGYpCitfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1NDk3N2M4ZDEwZWQ4OGMgaW5wdXQ9ODIyNDI3ZmI1OGZlNDE2OV0qLwogewogICAgIHJldHVybiBidWZmZXJlZGlvYmFzZV91bnN1cHBvcnRlZCgiZGV0YWNoIik7CiB9CkBAIC0xNjIsNjggKzIwMyw2IEBACiB9CiAKIAotc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkaW9iYXNlX21ldGhvZHNbXSA9IHsKLSAgICB7ImRldGFjaCIsIChQeUNGdW5jdGlvbilidWZmZXJlZGlvYmFzZV9kZXRhY2gsIE1FVEhfTk9BUkdTLCBidWZmZXJlZGlvYmFzZV9kZXRhY2hfZG9jfSwKLSAgICB7InJlYWQiLCBidWZmZXJlZGlvYmFzZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3JlYWRfZG9jfSwKLSAgICB7InJlYWQxIiwgYnVmZmVyZWRpb2Jhc2VfcmVhZDEsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2VfcmVhZDFfZG9jfSwKLSAgICB7InJlYWRpbnRvIiwgYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8sIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJ3cml0ZSIsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlX2RvY30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1QeVR5cGVPYmplY3QgUHlCdWZmZXJlZElPQmFzZV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfaW8uX0J1ZmZlcmVkSU9CYXNlIiwgICAgICAvKnRwX25hbWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKLSAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZGlvYmFzZV9kb2MsICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBidWZmZXJlZGlvYmFzZV9tZXRob2RzLCAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgICZQeUlPQmFzZV9UeXBlLCAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCi19OwotCi0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKQEAgLTMxOCw3ICsyOTcsNyBAQAogICAgICAgICAgKiBOb3RlIHRoYXQgbm9uLWRhZW1vbiB0aHJlYWRzIGhhdmUgYWxyZWFkeSBleGl0ZWQgaGVyZSwgc28gdGhpcwogICAgICAgICAgKiBzaG91bGRuJ3QgYWZmZWN0IGNhcmVmdWxseSB3cml0dGVuIHRocmVhZGVkIEkvTyBjb2RlLgogICAgICAgICAgKi8KLSAgICAgICAgc3QgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoc2VsZi0+bG9jaywgMWU2LCAwKTsKKyAgICAgICAgc3QgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoc2VsZi0+bG9jaywgKFBZX1RJTUVPVVRfVCkxZTYsIDApOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZWxheF9sb2NraW5nICYmIHN0ICE9IFBZX0xPQ0tfQUNRVUlSRUQpIHsKQEAgLTY4MywxMSArNjYyLDcgQEAKIF9zZXRfQmxvY2tpbmdJT0Vycm9yKGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbiBlcnJvcgotICAgICAgIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCiAgICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX0Jsb2NraW5nSU9FcnJvciwgImlzbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBtc2csIHdyaXR0ZW4pOwogICAgIGlmIChlcnIpCkBAIC04ODIsMTkgKzg1NywyMiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucGVlaworICAgIHNpemU6IFB5X3NzaXplX3QgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9wZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfcGVla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmE3YTA5N2NhMjMwMTAyYiBpbnB1dD0zN2ZmYjk3ZDA2ZmY0YWRiXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYsICJwZWVrIG9mIGNsb3NlZCBmaWxlIikKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cGVlayIsICZuKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtOTExLDE2ICs4ODksMTkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnJlYWQKKyAgICBzaXplIGFzIG46IGlvX3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkX3JlYWQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDFjNzhiYjE1YjliYmU5IGlucHV0PWMwOTM5ZWM3ZjllOTM1NGZdKi8KIHsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmIChuIDwgLTEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZCBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSBvciAtMSIpOwpAQCAtOTQ5LDE3ICs5MzAsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnJlYWQxCisgICAgc2l6ZSBhcyBuOiBQeV9zc2l6ZV90CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcmVhZDEoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmNjNGZiNGU1NGQxMDNhMyBpbnB1dD04ZDI4NjljMThiOTgzMTg0XSovCiB7Ci0gICAgUHlfc3NpemVfdCBuLCBoYXZlLCByOworICAgIFB5X3NzaXplX3QgaGF2ZSwgcjsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQxIiwgJm4pKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7CkBAIC0xMDAzLDMyICs5ODcsMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlciwgY2hhciByZWFkaW50bzEpCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IG4sIHdyaXR0ZW4gPSAwLCByZW1haW5pbmc7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG4gPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwogICAgIGlmIChuID4gMCkgewotICAgICAgICBpZiAobiA+PSBidWYubGVuKSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmLmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYubGVuKTsKLSAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOwotICAgICAgICAgICAgcmVzID0gUHlMb25nX0Zyb21Tc2l6ZV90KGJ1Zi5sZW4pOwotICAgICAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisgICAgICAgIGlmIChuID49IGJ1ZmZlci0+bGVuKSB7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLT5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmZmVyLT5sZW4pOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChidWZmZXItPmxlbik7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CisgICAgICAgIG1lbWNweShidWZmZXItPmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKICAgICAgICAgc2VsZi0+cG9zICs9IG47CiAgICAgICAgIHdyaXR0ZW4gPSBuOwogICAgIH0KIAogICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCi0gICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzZWxmLT53cml0YWJsZSkgewogICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOwpAQCAtMTA0MCwyNiArMTAxOSwzMiBAQAogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CiAgICAgc2VsZi0+cG9zID0gMDsKIAotICAgIGZvciAocmVtYWluaW5nID0gYnVmLmxlbiAtIHdyaXR0ZW47CisgICAgZm9yIChyZW1haW5pbmcgPSBidWZmZXItPmxlbiAtIHdyaXR0ZW47CiAgICAgICAgICByZW1haW5pbmcgPiAwOwogICAgICAgICAgd3JpdHRlbiArPSBuLCByZW1haW5pbmcgLT0gbikgewogICAgICAgICAvKiBJZiByZW1haW5pbmcgYnl0ZXMgaXMgbGFyZ2VyIHRoYW4gaW50ZXJuYWwgYnVmZmVyIHNpemUsIGNvcHkKICAgICAgICAgICogZGlyZWN0bHkgaW50byBjYWxsZXIncyBidWZmZXIuICovCiAgICAgICAgIGlmIChyZW1haW5pbmcgPiBzZWxmLT5idWZmZXJfc2l6ZSkgewotICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIC8qIEluIHJlYWRpbnRvMSBtb2RlLCB3ZSBkbyBub3Qgd2FudCB0byBmaWxsIHRoZSBpbnRlcm5hbAorICAgICAgICAgICBidWZmZXIgaWYgd2UgYWxyZWFkeSBoYXZlIHNvbWUgZGF0YSB0byByZXR1cm4gKi8KKyAgICAgICAgZWxzZSBpZiAoIShyZWFkaW50bzEgJiYgd3JpdHRlbikpIHsKICAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7CiAgICAgICAgICAgICBpZiAobiA+IDApIHsKICAgICAgICAgICAgICAgICBpZiAobiA+IHJlbWFpbmluZykKICAgICAgICAgICAgICAgICAgICAgbiA9IHJlbWFpbmluZzsKLSAgICAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIGJ1ZmZlci0+YnVmICsgd3JpdHRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKICAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gbjsKICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogc2hvcnQgY2lyY3VpdCAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG4gPSAwOworCiAgICAgICAgIGlmIChuID09IDAgfHwgKG4gPT0gLTIgJiYgd3JpdHRlbiA+IDApKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChuIDwgMCkgewpAQCAtMTA2OSwxNiArMTA1NCw0NyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KKworICAgICAgICAvKiBBdCBtb3N0IG9uZSByZWFkIGluIHJlYWRpbnRvMSBtb2RlICovCisgICAgICAgIGlmIChyZWFkaW50bzEpIHsKKyAgICAgICAgICAgIHdyaXR0ZW4gKz0gbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh3cml0dGVuKTsKIAogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpOwotZW5kX3VubG9ja2VkOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLl9CdWZmZXJlZC5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG9faW1wbChidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmNiMzc2NTgwYjFkODE3MCBpbnB1dD1lZDZiOThiN2EyMGEzMDA4XSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGludG8xCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1YzZhYzU4NjgyMDVkNiBpbnB1dD00NDU1YzVkNTVmZGYxNjg3XSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMSk7Cit9CisKKwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZF9yZWFkbGluZShidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKIHsKQEAgLTExOTAsMTUgKzEyMDYsMTggQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGxpbmUKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNGRkMmFhNmUzM2JlODNjIGlucHV0PWZmMWUwZGY4MjFjYjRlNWNdKi8KK3sKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIHNpemUpOwogfQogCiAKQEAgLTEyMTYsMTcgKzEyMzUsMjEgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21PZmZfdChwb3MpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnNlZWsKKyAgICB0YXJnZXQgYXMgdGFyZ2V0b2JqOiBvYmplY3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9zZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfc2Vla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqdGFyZ2V0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdhZTBlOGRjNDZlZmRlZmIgaW5wdXQ9YTljNDkyMGJmY2JhNjE2M10qLwogewogICAgIFB5X29mZl90IHRhcmdldCwgbjsKLSAgICBpbnQgd2hlbmNlID0gMDsKLSAgICBQeU9iamVjdCAqdGFyZ2V0b2JqLCAqcmVzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgaW5zdGVhZCBvZiB0cnVzdGluZyBPUyAnc2VlaygpJwogICAgICoqIGVycm9yIGRldGVjdGlvbiwganVzdCBpbiBjYXNlLgpAQCAtMTMwOCwxNyArMTMzMSwxOSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQudHJ1bmNhdGUKKyAgICBwb3M6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY3Y2EwM2M2MGMyNzBkZSBpbnB1dD04YTFiZTM0ZDU3Y2NhMmQzXSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmcG9zKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTQwMywyOSArMTQyOCwyNyBAQAogICogY2xhc3MgQnVmZmVyZWRSZWFkZXIKICAqLwogCi1QeURvY19TVFJWQVIoYnVmZmVyZWRyZWFkZXJfZG9jLAotICAgICAgICAgICAgICJDcmVhdGUgYSBuZXcgYnVmZmVyZWQgcmVhZGVyIHVzaW5nIHRoZSBnaXZlbiByZWFkYWJsZSByYXcgSU8gb2JqZWN0LiIpOwotCiBzdGF0aWMgdm9pZCBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIHNlbGYtPnJlYWRfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkcmVhZGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFJlYWRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0NyZWF0ZSBhIG5ldyBidWZmZXJlZCByZWFkZXIgdXNpbmcgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdyBJTyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZGRjZmVmYTBlZDI5NGM0IGlucHV0PWZiODg3ZTA2ZjExYjRlNDhdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xNzQ2LDExMSArMTc2OSwxMiBAQAogICAgIHNlbGYtPnBvcyA9IDA7CiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByKTsKIH0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHNbXSA9IHsKLSAgICAvKiBCdWZmZXJlZElPTWl4aW4gbWV0aG9kcyAqLwotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2ltcGxlX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90ZWxsLCBNRVRIX05PQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWRyZWFkZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHJlYWRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFJlYWRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyZWFkZXJfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWJ1ZmZlcmVkX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWRyZWFkZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHJlYWRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcmVhZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCi19OwogDAogCiAKIC8qCiAgKiBjbGFzcyBCdWZmZXJlZFdyaXRlcgogICovCi1QeURvY19TVFJWQVIoYnVmZmVyZWR3cml0ZXJfZG9jLAotICAgICJBIGJ1ZmZlciBmb3IgYSB3cml0ZWFibGUgc2VxdWVudGlhbCBSYXdJTyBvYmplY3QuXG4iCi0gICAgIlxuIgotICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgotICAgICJzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpCiB7CkBAIC0xODU4LDIxICsxNzgyLDI2IEBACiAgICAgc2VsZi0+d3JpdGVfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkd3JpdGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0EgYnVmZmVyIGZvciBhIHdyaXRlYWJsZSBzZXF1ZW50aWFsIFJhd0lPIG9iamVjdC4KKworVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFdyaXRlciBmb3IgdGhlIGdpdmVuIHdyaXRlYWJsZSByYXcKK3N0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODk0MmEwMjBjMGRlZTY0IGlucHV0PTkxNGJlOWI5NWUxNjAwN2JdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFdyaXRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xOTkzLDI5ICsxOTIyLDI4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci53cml0ZQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWR3cml0ZXJfd3JpdGUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmOGQxMzY1NzU5YmZjNmIgaW5wdXQ9ZGQ4N2RkODVmYzdmODg1MF0qLwogewogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCB3cml0dGVuLCBhdmFpbCwgcmVtYWluaW5nOwogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZidWYpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChJU19DTE9TRUQoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiB0aGUgZGF0YSB0byB3cml0ZSBjYW4gYmUgZnVsbHkgYnVmZmVyZWQuICovCiAgICAgaWYgKCFWQUxJRF9SRUFEX0JVRkZFUihzZWxmKSAmJiAhVkFMSURfV1JJVEVfQlVGRkVSKHNlbGYpKSB7CkBAIC0yMDIzLDE1ICsxOTUxLDE1IEBACiAgICAgICAgIHNlbGYtPnJhd19wb3MgPSAwOwogICAgIH0KICAgICBhdmFpbCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2VsZi0+YnVmZmVyX3NpemUgLSBzZWxmLT5wb3MsIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKLSAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgewotICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKICAgICAgICAgaWYgKCFWQUxJRF9XUklURV9CVUZGRVIoc2VsZikgfHwgc2VsZi0+d3JpdGVfcG9zID4gc2VsZi0+cG9zKSB7CiAgICAgICAgICAgICBzZWxmLT53cml0ZV9wb3MgPSBzZWxmLT5wb3M7CiAgICAgICAgIH0KLSAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPnBvcyArIGJ1Zi5sZW4pOworICAgICAgICBBREpVU1RfUE9TSVRJT04oc2VsZiwgc2VsZi0+cG9zICsgYnVmZmVyLT5sZW4pOwogICAgICAgICBpZiAoc2VsZi0+cG9zID4gc2VsZi0+d3JpdGVfZW5kKQogICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kID0gc2VsZi0+cG9zOwotICAgICAgICB3cml0dGVuID0gYnVmLmxlbjsKKyAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAKQEAgLTIwNTQsMTcgKzE5ODIsMTcgQEAKICAgICAgICAgc2VsZi0+d3JpdGVfcG9zID0gMDsKICAgICAgICAgYXZhaWwgPSBQeV9TQUZFX0RPV05DQVNUKHNlbGYtPmJ1ZmZlcl9zaXplIC0gc2VsZi0+d3JpdGVfZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwotICAgICAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgeworICAgICAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKICAgICAgICAgICAgIC8qIEV2ZXJ5dGhpbmcgY2FuIGJlIGJ1ZmZlcmVkICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmLmJ1ZiwgYnVmLmxlbik7Ci0gICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgKz0gYnVmLmxlbjsKLSAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOwotICAgICAgICAgICAgd3JpdHRlbiA9IGJ1Zi5sZW47CisgICAgICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+d3JpdGVfZW5kLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KICAgICAgICAgLyogQnVmZmVyIGFzIG11Y2ggYXMgcG9zc2libGUuICovCi0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIgKyBzZWxmLT53cml0ZV9lbmQsIGJ1Zi5idWYsIGF2YWlsKTsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmZmVyLT5idWYsIGF2YWlsKTsKICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGF2YWlsOwogICAgICAgICBzZWxmLT5wb3MgKz0gYXZhaWw7CiAgICAgICAgIC8qIFhYWCBNb2RpZnlpbmcgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiBlIHVzaW5nIHRoZSBwb2ludGVyIHcKQEAgLTIwOTAsMTEgKzIwMTgsMTEgQEAKICAgICB9CiAKICAgICAvKiBUaGVuIHdyaXRlIGJ1ZiBpdHNlbGYuIEF0IHRoaXMgcG9pbnQgdGhlIGJ1ZmZlciBoYXMgYmVlbiBlbXB0aWVkLiAqLwotICAgIHJlbWFpbmluZyA9IGJ1Zi5sZW47CisgICAgcmVtYWluaW5nID0gYnVmZmVyLT5sZW47CiAgICAgd3JpdHRlbiA9IDA7CiAgICAgd2hpbGUgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IF9idWZmZXJlZHdyaXRlcl9yYXdfd3JpdGUoCi0gICAgICAgICAgICBzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwgYnVmLmxlbiAtIHdyaXR0ZW4pOworICAgICAgICAgICAgc2VsZiwgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBidWZmZXItPmxlbiAtIHdyaXR0ZW4pOwogICAgICAgICBpZiAobiA9PSAtMSkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfSBlbHNlIGlmIChuID09IC0yKSB7CkBAIC0yMTAyLDcgKzIwMzAsNyBAQAogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgYnVmZmVyIGV2ZXJ5dGhpbmcsIHN0aWxsIGJ1ZmZlciBhcyBtdWNoIGFzIHBvc3NpYmxlICovCiAgICAgICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sIHNlbGYtPmJ1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBzZWxmLT5idWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgICAgc2VsZi0+cmF3X3BvcyA9IDA7CiAgICAgICAgICAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPmJ1ZmZlcl9zaXplKTsKICAgICAgICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgPSBzZWxmLT5idWZmZXJfc2l6ZTsKQEAgLTIxMjUsNyArMjA1Myw3IEBACiAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQogICAgICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwogICAgIGlmIChyZW1haW5pbmcgPiAwKSB7Ci0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLCByZW1haW5pbmcpOworICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCAoY2hhciAqKSBidWZmZXItPmJ1ZiArIHdyaXR0ZW4sIHJlbWFpbmluZyk7CiAgICAgICAgIHdyaXR0ZW4gKz0gcmVtYWluaW5nOwogICAgIH0KICAgICBzZWxmLT53cml0ZV9wb3MgPSAwOwpAQCAtMjEzOSw5NiArMjA2Nyw4IEBACiAKIGVycm9yOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICByZXR1cm4gcmVzOwogfQotCi1zdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWR3cml0ZXJfbWV0aG9kc1tdID0gewotICAgIC8qIEJ1ZmZlcmVkSU9NaXhpbiBtZXRob2RzICovCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHdyaXRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkV3JpdGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFdyaXRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZHdyaXRlcl9kb2MsICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylidWZmZXJlZF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSlidWZmZXJlZF9jbGVhciwgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihidWZmZXJlZCwgd2Vha3JlZmxpc3QpLCAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkd3JpdGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWR3cml0ZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHdyaXRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYnVmZmVyZWR3cml0ZXJfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KLX07CiAMCiAKIApAQCAtMjIzNiwxOCArMjA3Niw2IEBACiAgKiBCdWZmZXJlZFJXUGFpcgogICovCiAKLVB5RG9jX1NUUlZBUihidWZmZXJlZHJ3cGFpcl9kb2MsCi0gICAgIkEgYnVmZmVyZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0IHRvZ2V0aGVyLlxuIgotICAgICJcbiIKLSAgICAiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgotICAgICJmb3JtIGEgc2VxdWVudGlhbCBJTyBvYmplY3QgdGhhdCBjYW4gcmVhZCBhbmQgd3JpdGUuIFRoaXMgaXMgdHlwaWNhbGx5XG4iCi0gICAgInVzZWQgd2l0aCBhIHNvY2tldCBvciB0d28td2F5IHBpcGUuXG4iCi0gICAgIlxuIgotICAgICJyZWFkZXIgYW5kIHdyaXRlciBhcmUgUmF3SU9CYXNlIG9iamVjdHMgdGhhdCBhcmUgcmVhZGFibGUgYW5kXG4iCi0gICAgIndyaXRlYWJsZSByZXNwZWN0aXZlbHkuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogLyogWFhYIFRoZSB1c2VmdWxuZXNzIG9mIHRoaXMgKGNvbXBhcmVkIHRvIGhhdmluZyB0d28gc2VwYXJhdGUgSU8gb2JqZWN0cykgaXMKICAqIHF1ZXN0aW9uYWJsZS4KICAqLwpAQCAtMjI2MCwxNyArMjA4OCwyOSBAQAogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gcndwYWlyOwogCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnVmZmVyZWRSV1BhaXIuX19pbml0X18KKyAgICByZWFkZXI6IG9iamVjdAorICAgIHdyaXRlcjogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgLworCitBIGJ1ZmZlcmVkIHJlYWRlciBhbmQgd3JpdGVyIG9iamVjdCB0b2dldGhlci4KKworQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0bworZm9ybSBhIHNlcXVlbnRpYWwgSU8gb2JqZWN0IHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlLiBUaGlzIGlzIHR5cGljYWxseQordXNlZCB3aXRoIGEgc29ja2V0IG9yIHR3by13YXkgcGlwZS4KKworcmVhZGVyIGFuZCB3cml0ZXIgYXJlIFJhd0lPQmFzZSBvYmplY3RzIHRoYXQgYXJlIHJlYWRhYmxlIGFuZAord3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLWJ1ZmZlcmVkcndwYWlyX2luaXQocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICpyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqd3JpdGVyLCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyN2U3M2QxYWVlOGY5ODQgaW5wdXQ9NjIwZDQyZDcxZjMzYTAzMV0qLwogewotICAgIFB5T2JqZWN0ICpyZWFkZXIsICp3cml0ZXI7Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJlYWRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUod3JpdGVyLCBQeV9UcnVlKSA9PSBOVUxMKQpAQCAtMjM2NSw2ICsyMjA1LDEyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitidWZmZXJlZHJ3cGFpcl9yZWFkaW50bzEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRpbnRvMSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl93cml0ZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwpAQCAtMjQyOSwxMiArMjI3NSwzMTMgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHIoKFB5T2JqZWN0ICopIHNlbGYtPndyaXRlciwgX1B5SU9fc3RyX2Nsb3NlZCk7CiB9CisMCisKKworLyoKKyAqIEJ1ZmZlcmVkUmFuZG9tCisgKi8KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ1ZmZlcmVkUmFuZG9tLl9faW5pdF9fCisgICAgcmF3OiBvYmplY3QKKyAgICBidWZmZXJfc2l6ZTogUHlfc3NpemVfdChjX2RlZmF1bHQ9IkRFRkFVTFRfQlVGRkVSX1NJWkUiKSA9IERFRkFVTFRfQlVGRkVSX1NJWkUKKworQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLgorCitUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSwKK3JhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdAorZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzZDY0ZWIwZjY0ZTY0YTMgaW5wdXQ9YTRlODE4ZmI4NmQwZTUwY10qLworeworICAgIHNlbGYtPm9rID0gMDsKKyAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CisKKyAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0NMRUFSKHNlbGYtPnJhdyk7CisgICAgUHlfSU5DUkVGKHJhdyk7CisgICAgc2VsZi0+cmF3ID0gcmF3OworICAgIHNlbGYtPmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemU7CisgICAgc2VsZi0+cmVhZGFibGUgPSAxOworICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKworICAgIGlmIChfYnVmZmVyZWRfaW5pdChzZWxmKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOworICAgIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoc2VsZik7CisgICAgc2VsZi0+cG9zID0gMDsKKworICAgIHNlbGYtPmZhc3RfY2xvc2VkX2NoZWNrcyA9IChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUmFuZG9tX1R5cGUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyYXcpID09ICZQeUZpbGVJT19UeXBlKTsKKworICAgIHNlbGYtPm9rID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworI2luY2x1ZGUgImNsaW5pYy9idWZmZXJlZGlvLmMuaCIKKworCitzdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWRpb2Jhc2VfbWV0aG9kc1tdID0geworICAgIF9JT19fQlVGRkVSRURJT0JBU0VfREVUQUNIX01FVEhPRERFRgorICAgIHsicmVhZCIsIGJ1ZmZlcmVkaW9iYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2VfcmVhZF9kb2N9LAorICAgIHsicmVhZDEiLCBidWZmZXJlZGlvYmFzZV9yZWFkMSwgTUVUSF9WQVJBUkdTLCBidWZmZXJlZGlvYmFzZV9yZWFkMV9kb2N9LAorICAgIF9JT19fQlVGRkVSRURJT0JBU0VfUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRElPQkFTRV9SRUFESU5UTzFfTUVUSE9EREVGCisgICAgeyJ3cml0ZSIsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlX2RvY30sCisgICAge05VTEwsIE5VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlCdWZmZXJlZElPQmFzZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfaW8uX0J1ZmZlcmVkSU9CYXNlIiwgICAgICAvKnRwX25hbWUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAvKnRwX2ZsYWdzKi8KKyAgICBidWZmZXJlZGlvYmFzZV9kb2MsICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBidWZmZXJlZGlvYmFzZV9tZXRob2RzLCAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeUlPQmFzZV9UeXBlLCAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHJlYWRlcl9tZXRob2RzW10gPSB7CisgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KKyAgICB7ImRldGFjaCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZXRhY2gsIE1FVEhfTk9BUkdTfSwKKyAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NpbXBsZV9mbHVzaCwgTUVUSF9OT0FSR1N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfY2xvc2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWthYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkYWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9maWxlbm8sIE1FVEhfTk9BUkdTfSwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9pc2F0dHksIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9kZWFsbG9jX3dhcm4iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZGVhbGxvY193YXJuLCBNRVRIX099LAorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCisKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRDFfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LAorICAgIF9JT19fQlVGRkVSRURfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NpemVvZiwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIGJ1ZmZlcmVkcmVhZGVyX21lbWJlcnNbXSA9IHsKKyAgICB7InJhdyIsIFRfT0JKRUNULCBvZmZzZXRvZihidWZmZXJlZCwgcmF3KSwgUkVBRE9OTFl9LAorICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKGJ1ZmZlcmVkLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgYnVmZmVyZWRyZWFkZXJfZ2V0c2V0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWJ1ZmZlcmVkX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHsibmFtZSIsIChnZXR0ZXIpYnVmZmVyZWRfbmFtZV9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHsibW9kZSIsIChnZXR0ZXIpYnVmZmVyZWRfbW9kZV9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitQeVR5cGVPYmplY3QgUHlCdWZmZXJlZFJlYWRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfaW8uQnVmZmVyZWRSZWFkZXIiLCAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihidWZmZXJlZCksICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIChkZXN0cnVjdG9yKWJ1ZmZlcmVkX2RlYWxsb2MsICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCisgICAgKHJlcHJmdW5jKWJ1ZmZlcmVkX3JlcHIsICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLworICAgIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWJ1ZmZlcmVkX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLworICAgIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYnVmZmVyZWRyZWFkZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBidWZmZXJlZHJlYWRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWR3cml0ZXJfbWV0aG9kc1tdID0geworICAgIC8qIEJ1ZmZlcmVkSU9NaXhpbiBtZXRob2RzICovCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKKworICAgIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1RSVU5DQVRFX01FVEhPRERFRgorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZmx1c2gsIE1FVEhfTk9BUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0geworICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHdyaXRlcl9nZXRzZXRbXSA9IHsKKyAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK1B5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkV3JpdGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5CdWZmZXJlZFdyaXRlciIsICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KKyAgICBfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19fX2RvY19fLCAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWJ1ZmZlcmVkX2NsZWFyLCAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKGJ1ZmZlcmVkLCB3ZWFrcmVmbGlzdCksIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYnVmZmVyZWR3cml0ZXJfbWV0aG9kcywgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBidWZmZXJlZHdyaXRlcl9tZW1iZXJzLCAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGJ1ZmZlcmVkd3JpdGVyX2dldHNldCwgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZihidWZmZXJlZCwgZGljdCksICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcndwYWlyX21ldGhvZHNbXSA9IHsKICAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcGVlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkcndwYWlyX3JlYWQxLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZWFkaW50bzEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZGludG8xLCBNRVRIX1ZBUkFSR1N9LAogCiAgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl93cml0ZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkcndwYWlyX2ZsdXNoLCBNRVRIX05PQVJHU30sCkBAIC0yNDc3LDcgKzI2MjQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQogICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKiB0cF9mbGFncyAqLwotICAgIGJ1ZmZlcmVkcndwYWlyX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19fX2RvY19fLCAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkcndwYWlyX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KWJ1ZmZlcmVkcndwYWlyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMjQ5Miw3ICsyNjM5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKHJ3cGFpciwgZGljdCksICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcndwYWlyX2luaXQsIC8qIHRwX2luaXQgKi8KKyAgICBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X18sIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTI1MDYsNjMgKzI2NTMsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKLQwKIAogCi0vKgotICogQnVmZmVyZWRSYW5kb20KLSAqLwotCi1QeURvY19TVFJWQVIoYnVmZmVyZWRyYW5kb21fZG9jLAotICAgICJBIGJ1ZmZlcmVkIGludGVyZmFjZSB0byByYW5kb20gYWNjZXNzIHN0cmVhbXMuXG4iCi0gICAgIlxuIgotICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSxcbiIKLSAgICAicmF3LCBnaXZlbiBpbiB0aGUgZmlyc3QgYXJndW1lbnQuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0XG4iCi0gICAgImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQotc3RhdGljIGludAotYnVmZmVyZWRyYW5kb21faW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeU9iamVjdCAqcmF3OwotCi0gICAgc2VsZi0+b2sgPSAwOwotICAgIHNlbGYtPmRldGFjaGVkID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSYW5kb20iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5yYXcpOwotICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIHNlbGYtPnJhdyA9IHJhdzsKLSAgICBzZWxmLT5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplOwotICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKLSAgICBzZWxmLT53cml0YWJsZSA9IDE7Ci0KLSAgICBpZiAoX2J1ZmZlcmVkX2luaXQoc2VsZikgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKLSAgICBfYnVmZmVyZWR3cml0ZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIHNlbGYtPnBvcyA9IDA7Ci0KLSAgICBzZWxmLT5mYXN0X2Nsb3NlZF9jaGVja3MgPSAoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmF3KSA9PSAmUHlGaWxlSU9fVHlwZSk7Ci0KLSAgICBzZWxmLT5vayA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHJhbmRvbV9tZXRob2RzW10gPSB7CiAgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2Nsb3NlLCBNRVRIX05PQVJHU30sCkBAIC0yNTc3LDE1ICsyNjY5LDE2IEBACiAKICAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGCiAgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFEMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRgorICAgIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMjYyNiw3ICsyNzE5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyYW5kb21fZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCkBAIC0yNjQxLDcgKzI3MzQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylidWZmZXJlZHJhbmRvbV9pbml0LCAvKiB0cF9pbml0ICovCisgICAgX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKaW5kZXggNDY1MjM1Ni4uZDQ2NDMwZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jCisrKyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwpAQCAtMiwxMiArMiwxNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIiAgICAgICAvKiBmb3Igb2Zmc2V0b2YoKSAqLwogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uQnl0ZXNJTyAiYnl0ZXNpbyAqIiAiJlB5Qnl0ZXNJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2Y1MGVjMDM0ZjVjMGIyNl0qLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIGNoYXIgKmJ1ZjsKKyAgICBQeU9iamVjdCAqYnVmOwogICAgIFB5X3NzaXplX3QgcG9zOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX3NpemU7Ci0gICAgc2l6ZV90IGJ1Zl9zaXplOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKICAgICBQeV9zc2l6ZV90IGV4cG9ydHM7CkBAIC0xOCw2ICsyMywxMiBAQAogICAgIGJ5dGVzaW8gKnNvdXJjZTsKIH0gYnl0ZXNpb2J1ZjsKIAorLyogVGhlIGJ5dGVzaW8gb2JqZWN0IGNhbiBiZSBpbiB0aHJlZSBzdGF0ZXM6CisgICogUHlfUkVGQ05UKGJ1ZikgPT0gMSwgZXhwb3J0cyA9PSAwLgorICAqIFB5X1JFRkNOVChidWYpID4gMS4gIGV4cG9ydHMgPT0gMCwKKyAgICBmaXJzdCBtb2RpZmljYXRpb24gb3IgZXhwb3J0IGNhdXNlcyB0aGUgaW50ZXJuYWwgYnVmZmVyIGNvcHlpbmcuCisgICogZXhwb3J0cyA+IDAuICBQeV9SRUZDTlQoYnVmKSA9PSAxLCBhbnkgbW9kaWZpY2F0aW9ucyBhcmUgZm9yYmlkZGVuLgorKi8KIAogI2RlZmluZSBDSEVDS19DTE9TRUQoc2VsZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICgoc2VsZiktPmJ1ZiA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzMsNDAgKzQ0LDYwIEBACiAgICAgICAgIHJldHVybiBOVUxMOyBcCiAgICAgfQogCisjZGVmaW5lIFNIQVJFRF9CVUYoc2VsZikgKFB5X1JFRkNOVCgoc2VsZiktPmJ1ZikgPiAxKQorCiAKIC8qIEludGVybmFsIHJvdXRpbmUgdG8gZ2V0IGEgbGluZSBmcm9tIHRoZSBidWZmZXIgb2YgYSBCeXRlc0lPCiAgICBvYmplY3QuIFJldHVybnMgdGhlIGxlbmd0aCBiZXR3ZWVuIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZQogICAgbmV4dCBuZXdsaW5lIGNoYXJhY3Rlci4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfbGluZShieXRlc2lvICpzZWxmLCBjaGFyICoqb3V0cHV0KQorc2Nhbl9lb2woYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBsZW4pCiB7Ci0gICAgY2hhciAqbjsKLSAgICBjb25zdCBjaGFyICpzdHJfZW5kOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCAqbjsKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKIAogICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CiAKICAgICAvKiBNb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUsIHVwIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgcy4gKi8KLSAgICBzdHJfZW5kID0gc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemU7Ci0gICAgZm9yIChuID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwotICAgICAgICAgbiA8IHN0cl9lbmQgJiYgKm4gIT0gJ1xuJzsKLSAgICAgICAgIG4rKyk7CisgICAgc3RhcnQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgIG1heGxlbiA9IHNlbGYtPnN0cmluZ19zaXplIC0gc2VsZi0+cG9zOworICAgIGlmIChsZW4gPCAwIHx8IGxlbiA+IG1heGxlbikKKyAgICAgICAgbGVuID0gbWF4bGVuOwogCi0gICAgLyogU2tpcCB0aGUgbmV3bGluZSBjaGFyYWN0ZXIgKi8KLSAgICBpZiAobiA8IHN0cl9lbmQpCi0gICAgICAgIG4rKzsKLQotICAgIC8qIEdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4gKi8KLSAgICBsZW4gPSBuIC0gKHNlbGYtPmJ1ZiArIHNlbGYtPnBvcyk7Ci0gICAgKm91dHB1dCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLQorICAgIGlmIChsZW4pIHsKKyAgICAgICAgbiA9IG1lbWNocihzdGFydCwgJ1xuJywgbGVuKTsKKyAgICAgICAgaWYgKG4pCisgICAgICAgICAgICAvKiBHZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YKKyAgICAgICAgICAgICAgIHRoZSBsaW5lLiAqLworICAgICAgICAgICAgbGVuID0gbiAtIHN0YXJ0ICsgMTsKKyAgICB9CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zIDwgUFlfU1NJWkVfVF9NQVggLSBsZW4pOwotICAgIHNlbGYtPnBvcyArPSBsZW47CiAKICAgICByZXR1cm4gbGVuOwogfQogCisvKiBJbnRlcm5hbCByb3V0aW5lIGZvciBkZXRhY2hpbmcgdGhlIHNoYXJlZCBidWZmZXIgb2YgQnl0ZXNJTyBvYmplY3RzLgorICAgVGhlIGNhbGxlciBzaG91bGQgZW5zdXJlIHRoYXQgdGhlICdzaXplJyBhcmd1bWVudCBpcyBub24tbmVnYXRpdmUgYW5kCisgICBub3QgbGVzc2VyIHRoYW4gc2VsZi0+c3RyaW5nX3NpemUuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLiAqLworc3RhdGljIGludAordW5zaGFyZV9idWZmZXIoYnl0ZXNpbyAqc2VsZiwgc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKm5ld19idWYsICpvbGRfYnVmOworICAgIGFzc2VydChTSEFSRURfQlVGKHNlbGYpKTsKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAoc2l6ZV90KXNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBuZXdfYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAobmV3X2J1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19idWYpLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAorICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgb2xkX2J1ZiA9IHNlbGYtPmJ1ZjsKKyAgICBzZWxmLT5idWYgPSBuZXdfYnVmOworICAgIFB5X0RFQ1JFRihvbGRfYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogSW50ZXJuYWwgcm91dGluZSBmb3IgY2hhbmdpbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBvZiBCeXRlc0lPIG9iamVjdHMuCiAgICBUaGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgJ3NpemUnIGFyZ3VtZW50IGlzIG5vbi1uZWdhdGl2ZS4gIFJldHVybnMKICAgIDAgb24gc3VjY2VzcywgLTEgb3RoZXJ3aXNlLiAqLwpAQCAtNzUsOCArMTA2LDcgQEAKIHsKICAgICAvKiBIZXJlLCB1bnNpZ25lZCB0eXBlcyBhcmUgdXNlZCB0byBhdm9pZCBkZWFsaW5nIHdpdGggc2lnbmVkIGludGVnZXIKICAgICAgICBvdmVyZmxvdywgd2hpY2ggaXMgdW5kZWZpbmVkIGluIEMuICovCi0gICAgc2l6ZV90IGFsbG9jID0gc2VsZi0+YnVmX3NpemU7Ci0gICAgY2hhciAqbmV3X2J1ZiA9IE5VTEw7CisgICAgc2l6ZV90IGFsbG9jID0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5idWYpOwogCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKIApAQCAtMTA0LDEzICsxMzQsMTUgQEAKIAogICAgIGlmIChhbGxvYyA+ICgoc2l6ZV90KS0xKSAvIHNpemVvZihjaGFyKSkKICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICBuZXdfYnVmID0gKGNoYXIgKilQeU1lbV9SZWFsbG9jKHNlbGYtPmJ1ZiwgYWxsb2MgKiBzaXplb2YoY2hhcikpOwotICAgIGlmIChuZXdfYnVmID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFNIQVJFRF9CVUYoc2VsZikpIHsKKyAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKHNlbGYsIGFsbG9jKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNlbGYtPmJ1Zl9zaXplID0gYWxsb2M7Ci0gICAgc2VsZi0+YnVmID0gbmV3X2J1ZjsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmc2VsZi0+YnVmLCBhbGxvYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHJldHVybiAwOwogCkBAIC0xMjUsMTIgKzE1NywxOCBAQAogc3RhdGljIFB5X3NzaXplX3QKIHdyaXRlX2J5dGVzKGJ5dGVzaW8gKnNlbGYsIGNvbnN0IGNoYXIgKmJ5dGVzLCBQeV9zc2l6ZV90IGxlbikKIHsKKyAgICBzaXplX3QgZW5kcG9zOwogICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KHNlbGYtPnBvcyA+PSAwKTsKICAgICBhc3NlcnQobGVuID49IDApOwogCi0gICAgaWYgKChzaXplX3Qpc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+YnVmX3NpemUpIHsKLSAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgKHNpemVfdClzZWxmLT5wb3MgKyBsZW4pIDwgMCkKKyAgICBlbmRwb3MgPSAoc2l6ZV90KXNlbGYtPnBvcyArIGxlbjsKKyAgICBpZiAoZW5kcG9zID4gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1ZikpIHsKKyAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgZW5kcG9zKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgaWYgKFNIQVJFRF9CVUYoc2VsZikpIHsKKyAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKHNlbGYsIFB5X01BWChlbmRwb3MsIChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0xNDMsMTggKzE4MSwxOCBAQAogICAgICAgICAgIHwgICB8ICAgICAgICAgICAgPC0tdG8gcGFkLS0+fDwtLS10byB3cml0ZS0tLT4gICAgfAogICAgICAgICAgIDAgICBidWYgICAgICAgICAgICAgICAgICAgcG9zaXRpb24KICAgICAgICAgKi8KLSAgICAgICAgbWVtc2V0KHNlbGYtPmJ1ZiArIHNlbGYtPnN0cmluZ19zaXplLCAnXDAnLAorICAgICAgICBtZW1zZXQoUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSArIHNlbGYtPnN0cmluZ19zaXplLCAnXDAnLAogICAgICAgICAgICAgICAgKHNlbGYtPnBvcyAtIHNlbGYtPnN0cmluZ19zaXplKSAqIHNpemVvZihjaGFyKSk7CiAgICAgfQogCiAgICAgLyogQ29weSB0aGUgZGF0YSB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLCBvdmVyd3JpdGluZyBzb21lIG9mIHRoZSBleGlzdGluZwogICAgICAgIGRhdGEgaWYgc2VsZi0+cG9zIDwgc2VsZi0+c3RyaW5nX3NpemUuICovCi0gICAgbWVtY3B5KHNlbGYtPmJ1ZiArIHNlbGYtPnBvcywgYnl0ZXMsIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKKyAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSArIHNlbGYtPnBvcywgYnl0ZXMsIGxlbik7CisgICAgc2VsZi0+cG9zID0gZW5kcG9zOwogCiAgICAgLyogU2V0IHRoZSBuZXcgbGVuZ3RoIG9mIHRoZSBpbnRlcm5hbCBzdHJpbmcgaWYgaXQgaGFzIGNoYW5nZWQuICovCi0gICAgaWYgKHNlbGYtPnN0cmluZ19zaXplIDwgc2VsZi0+cG9zKSB7Ci0gICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gc2VsZi0+cG9zOworICAgIGlmICgoc2l6ZV90KXNlbGYtPnN0cmluZ19zaXplIDwgZW5kcG9zKSB7CisgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gZW5kcG9zOwogICAgIH0KIAogICAgIHJldHVybiBsZW47CkBAIC0xNzEsNDAgKzIwOSw3MSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHJlYWRhYmxlX2RvYywKLSJyZWFkYWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZGFibGUKIAotUHlEb2NfU1RSVkFSKHdyaXRhYmxlX2RvYywKLSJ3cml0YWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihzZWVrYWJsZV9kb2MsCi0ic2Vla2FibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLiIpOwotCi0vKiBHZW5lcmljIGdldHRlciBmb3IgdGhlIHdyaXRhYmxlLCByZWFkYWJsZSBhbmQgc2Vla2FibGUgcHJvcGVydGllcyAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXJldHVybl9ub3RfY2xvc2VkKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19yZWFkYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGU5MzgyMmFkNWI2MjI2MyBpbnB1dD05NmM1ZDBjY2NmYjI5ZjVjXSovCiB7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCi1QeURvY19TVFJWQVIoZmx1c2hfZG9jLAotImZsdXNoKCkgLT4gTm9uZS4gIERvZXMgbm90aGluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLndyaXRhYmxlCisKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19mbHVzaChieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fd3JpdGFibGVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0ZmY2YTI1NGIxMTUwYjggaW5wdXQ9NzAwZWVkODA4Mjc3NTYwYV0qLworeworICAgIENIRUNLX0NMT1NFRChzZWxmKTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uc2Vla2FibGUKKworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWthYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YjQxN2Y0NmRjYzA5YjU2IGlucHV0PTk0MjFmNjU2MjdhMzQ0ZGRdKi8KK3sKKyAgICBDSEVDS19DTE9TRUQoc2VsZik7CisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmZsdXNoCisKK0RvZXMgbm90aGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2ZsdXNoX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xODdlM2Q3ODFjYTEzNGEwIGlucHV0PTU2MWVhNDkwYmU0NTgxYTddKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXRidWZmZXJfZG9jLAotImdldGJ1ZmZlcigpIC0+IGJ5dGVzLlxuIgotIlxuIgotIkdldCBhIHJlYWQtd3JpdGUgdmlldyBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5nZXRidWZmZXIKKworR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fZ2V0YnVmZmVyKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19nZXRidWZmZXJfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyY2Q3YzZlMTNhYTA5ZWQgaW5wdXQ9OGY3MzhlZjYxNTg2NTE3Nl0qLwogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9ICZfUHlCeXRlc0lPQnVmZmVyX1R5cGU7CiAgICAgYnl0ZXNpb2J1ZiAqYnVmOwpAQCAtMjIyLDU5ICsyOTEsMTA0IEBACiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXR2YWxfZG9jLAotImdldHZhbHVlKCkgLT4gYnl0ZXMuXG4iCi0iXG4iCi0iUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5nZXR2YWx1ZQorCitSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fZ2V0dmFsdWUoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2dldHZhbHVlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iM2Y2YTMyMzNjOGZkNjI4IGlucHV0PTRiNDAzYWMwYWYzOTczZWRdKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmLCBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplIDw9IDEgfHwgc2VsZi0+ZXhwb3J0cyA+IDApCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKKworICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1ZikpIHsKKyAgICAgICAgaWYgKFNIQVJFRF9CVUYoc2VsZikpIHsKKyAgICAgICAgICAgIGlmICh1bnNoYXJlX2J1ZmZlcihzZWxmLCBzZWxmLT5zdHJpbmdfc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmc2VsZi0+YnVmLCBzZWxmLT5zdHJpbmdfc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X0lOQ1JFRihzZWxmLT5idWYpOworICAgIHJldHVybiBzZWxmLT5idWY7CiB9CiAKLVB5RG9jX1NUUlZBUihpc2F0dHlfZG9jLAotImlzYXR0eSgpIC0+IEZhbHNlLlxuIgotIlxuIgotIkFsd2F5cyByZXR1cm5zIEZhbHNlIHNpbmNlIEJ5dGVzSU8gb2JqZWN0cyBhcmUgbm90IGNvbm5lY3RlZFxuIgotInRvIGEgdHR5LWxpa2UgZGV2aWNlLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uaXNhdHR5CisKK0Fsd2F5cyByZXR1cm5zIEZhbHNlLgorCitCeXRlc0lPIG9iamVjdHMgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYSBUVFktbGlrZSBkZXZpY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2lzYXR0eShieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9faXNhdHR5X2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjY3NzEyZTY2OWY2YzhmIGlucHV0PTZmOTdmMDk4NWQxM2Y4MjddKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQogCi1QeURvY19TVFJWQVIodGVsbF9kb2MsCi0idGVsbCgpIC0+IGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlclxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy50ZWxsCisKK0N1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fdGVsbChieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fdGVsbF9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjU0YjBmOTNjZDBlNWUxZCBpbnB1dD1iMTA2YWRmMDk5Y2IzNjU3XSovCiB7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlYWRfZG9jLAotInJlYWQoW3NpemVdKSAtPiByZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuXG4iCi0iXG4iCi0iSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCi0iUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CitzdGF0aWMgUHlPYmplY3QgKgorcmVhZF9ieXRlcyhieXRlc2lvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY2hhciAqb3V0cHV0OworCisgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc2l6ZSA8PSBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgaWYgKHNpemUgPiAxICYmCisgICAgICAgIHNlbGYtPnBvcyA9PSAwICYmIHNpemUgPT0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5idWYpICYmCisgICAgICAgIHNlbGYtPmV4cG9ydHMgPT0gMCkgeworICAgICAgICBzZWxmLT5wb3MgKz0gc2l6ZTsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmJ1Zik7CisgICAgICAgIHJldHVybiBzZWxmLT5idWY7CisgICAgfQorCisgICAgb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSArIHNlbGYtPnBvczsKKyAgICBzZWxmLT5wb3MgKz0gc2l6ZTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShvdXRwdXQsIHNpemUpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC4KKworSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19CeXRlc0lPX3JlYWRfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1ZGFjYjUzNWMxZTE3ODEgaW5wdXQ9Y2M3YmE0YTc5N2JiMTU1NV0qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKLSAgICBjaGFyICpvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWQiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QoYXJnKTsKICAgICAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTI5OCw1MiArNDEyLDQ4IEBACiAgICAgICAgICAgICBzaXplID0gMDsKICAgICB9CiAKLSAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwotICAgIG91dHB1dCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLSAgICBzZWxmLT5wb3MgKz0gc2l6ZTsKLQotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG91dHB1dCwgc2l6ZSk7CisgICAgcmV0dXJuIHJlYWRfYnl0ZXMoc2VsZiwgc2l6ZSk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJlYWQxX2RvYywKLSJyZWFkMShzaXplKSAtPiByZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuXG4iCi0iXG4iCi0iSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cbiIKLSJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWQxCisgICAgc2l6ZTogb2JqZWN0CisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuCisKK0lmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZDEoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKm4pCitfaW9fQnl0ZXNJT19yZWFkMShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNjAyMWY1ZDBhYzNkNGUyIGlucHV0PWQ0ZjQwYmI4ZjJmOTk0MThdKi8KIHsKLSAgICBQeU9iamVjdCAqYXJnLCAqcmVzOwotCi0gICAgYXJnID0gUHlUdXBsZV9QYWNrKDEsIG4pOwotICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzICA9IGJ5dGVzaW9fcmVhZChzZWxmLCBhcmcpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlYWRsaW5lX2RvYywKLSJyZWFkbGluZShbc2l6ZV0pIC0+IG5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKLSJcbiIKLSJSZXRhaW4gbmV3bGluZS4gIEEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtXG4iCi0ibnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS5cbiIKLSJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZGxpbmUKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworTmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZXMgb2JqZWN0LgorCitSZXRhaW4gbmV3bGluZS4gIEEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtCitudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3JlYWRsaW5lKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fcmVhZGxpbmVfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjMjExNTUzNGE0ZjkyNzYgaW5wdXQ9Y2EzMWYwNmRlNmVhYjI1N10qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKLSAgICBjaGFyICpvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWRsaW5lIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0zNTksMzcgKzQ2OSwzMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBuID0gZ2V0X2xpbmUoc2VsZiwgJm91dHB1dCk7CisgICAgbiA9IHNjYW5fZW9sKHNlbGYsIHNpemUpOwogCi0gICAgaWYgKHNpemUgPj0gMCAmJiBzaXplIDwgbikgewotICAgICAgICBzaXplID0gbiAtIHNpemU7Ci0gICAgICAgIG4gLT0gc2l6ZTsKLSAgICAgICAgc2VsZi0+cG9zIC09IHNpemU7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBuKTsKKyAgICByZXR1cm4gcmVhZF9ieXRlcyhzZWxmLCBuKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlYWRsaW5lc19kb2MsCi0icmVhZGxpbmVzKFtzaXplXSkgLT4gbGlzdCBvZiBzdHJpbmdzLCBlYWNoIGEgbGluZSBmcm9tIHRoZSBmaWxlLlxuIgotIlxuIgotIkNhbGwgcmVhZGxpbmUoKSByZXBlYXRlZGx5IGFuZCByZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBzbyByZWFkLlxuIgotIlRoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlXG4iCi0idG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZGxpbmVzCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK0xpc3Qgb2YgYnl0ZXMgb2JqZWN0cywgZWFjaCBhIGxpbmUgZnJvbSB0aGUgZmlsZS4KKworQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuCitUaGUgb3B0aW9uYWwgc2l6ZSBhcmd1bWVudCwgaWYgZ2l2ZW4sIGlzIGFuIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZQordG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZGxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fcmVhZGxpbmVzX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOWI4ZTM0Yzg4MDgwOGZmIGlucHV0PTY5MWFhMTMxNGYyYzJhODddKi8KIHsKICAgICBQeV9zc2l6ZV90IG1heHNpemUsIHNpemUsIG47CiAgICAgUHlPYmplY3QgKnJlc3VsdCwgKmxpbmU7CiAgICAgY2hhciAqb3V0cHV0OwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZXMiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKICAgICAgICAgbWF4c2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QoYXJnKTsKICAgICAgICAgaWYgKG1heHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTQxMCw3ICs1MTYsOSBAQAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHdoaWxlICgobiA9IGdldF9saW5lKHNlbGYsICZvdXRwdXQpKSAhPSAwKSB7CisgICAgb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSArIHNlbGYtPnBvczsKKyAgICB3aGlsZSAoKG4gPSBzY2FuX2VvbChzZWxmLCAtMSkpICE9IDApIHsKKyAgICAgICAgc2VsZi0+cG9zICs9IG47CiAgICAgICAgIGxpbmUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG91dHB1dCwgbik7CiAgICAgICAgIGlmICghbGluZSkKICAgICAgICAgICAgIGdvdG8gb25fZXJyb3I7CkBAIC00MjIsNiArNTMwLDcgQEAKICAgICAgICAgc2l6ZSArPSBuOwogICAgICAgICBpZiAobWF4c2l6ZSA+IDAgJiYgc2l6ZSA+PSBtYXhzaXplKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG91dHB1dCArPSBuOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC00MzAsMjUgKzUzOSwyNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIocmVhZGludG9fZG9jLAotInJlYWRpbnRvKGJ5dGVhcnJheSkgLT4gaW50LiAgUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLlxuIgotIlxuIgotIlJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRiksIG9yIE5vbmUgaWYgdGhlIG9iamVjdFxuIgotImlzIHNldCBub3QgdG8gYmxvY2sgYXMgaGFzIG5vIGRhdGEgdG8gcmVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWRpbnRvCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworCitSZWFkIHVwIHRvIGxlbihidWZmZXIpIGJ5dGVzIGludG8gYnVmZmVyLgorCitSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLCBvciBOb25lIGlmIHRoZSBvYmplY3QKK2lzIHNldCBub3QgdG8gYmxvY2sgYXMgaGFzIG5vIGRhdGEgdG8gcmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZGludG8oYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK19pb19CeXRlc0lPX3JlYWRpbnRvX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTVkNDA3MjE3ZGNmMDYzOSBpbnB1dD03MTU4MWYzMjYzNWMzYTMxXSovCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZmZlcjsKICAgICBQeV9zc2l6ZV90IGxlbiwgbjsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyoiLCAmYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBhZGp1c3QgaW52YWxpZCBzaXplcyAqLwotICAgIGxlbiA9IGJ1ZmZlci5sZW47CisgICAgbGVuID0gYnVmZmVyLT5sZW47CiAgICAgbiA9IHNlbGYtPnN0cmluZ19zaXplIC0gc2VsZi0+cG9zOwogICAgIGlmIChsZW4gPiBuKSB7CiAgICAgICAgIGxlbiA9IG47CkBAIC00NTYsMzMgKzU2NywzNCBAQAogICAgICAgICAgICAgbGVuID0gMDsKICAgICB9CiAKLSAgICBtZW1jcHkoYnVmZmVyLmJ1Ziwgc2VsZi0+YnVmICsgc2VsZi0+cG9zLCBsZW4pOworICAgIG1lbWNweShidWZmZXItPmJ1ZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSArIHNlbGYtPnBvcywgbGVuKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zICsgbGVuIDwgUFlfU1NJWkVfVF9NQVgpOwogICAgIGFzc2VydChsZW4gPj0gMCk7CiAgICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOwogCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQogCi1QeURvY19TVFJWQVIodHJ1bmNhdGVfZG9jLAotInRydW5jYXRlKFtzaXplXSkgLT4gaW50LiAgVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLlxuIgotIlxuIgotIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgotIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLiAgUmV0dXJucyB0aGUgbmV3IHNpemUuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnRydW5jYXRlCisgICAgc2l6ZSBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1RydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcy4KKworU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuCitUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4gIFJldHVybnMgdGhlIG5ldyBzaXplLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb190cnVuY2F0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MWU2YmU2MGU2N2RkZDY2IGlucHV0PTExZWQxOTY2ODM1NDYyYmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgQ0hFQ0tfRVhQT1JUUyhzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QoYXJnKTsKICAgICAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTUxNiw0OSArNjI4LDQ5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNpb19pdGVybmV4dChieXRlc2lvICpzZWxmKQogewotICAgIGNoYXIgKm5leHQ7CiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgbiA9IGdldF9saW5lKHNlbGYsICZuZXh0KTsKKyAgICBuID0gc2Nhbl9lb2woc2VsZiwgLTEpOwogCi0gICAgaWYgKCFuZXh0IHx8IG4gPT0gMCkKKyAgICBpZiAobiA9PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG5leHQsIG4pOworICAgIHJldHVybiByZWFkX2J5dGVzKHNlbGYsIG4pOwogfQogCi1QeURvY19TVFJWQVIoc2Vla19kb2MsCi0ic2Vlayhwb3MsIHdoZW5jZT0wKSAtPiBpbnQuICBDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgotIlxuIgotIlNlZWsgdG8gYnl0ZSBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCi0iICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKLSIgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlO1xuIgotIiAgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyB1c3VhbGx5IG5lZ2F0aXZlLlxuIgotIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnNlZWsKKyAgICBwb3M6IFB5X3NzaXplX3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0NoYW5nZSBzdHJlYW0gcG9zaXRpb24uCisKK1NlZWsgdG8gYnl0ZSBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6CisgICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwOworICAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG1heSBiZSBuZWdhdGl2ZTsKKyAgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyB1c3VhbGx5IG5lZ2F0aXZlLgorUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19zZWVrKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fc2Vla19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMyNjIwNGE2OGU5MTkwZTQgaW5wdXQ9MWU4NzVlNmViYzY1Mjk0OF0qLwogewotICAgIFB5X3NzaXplX3QgcG9zOwotICAgIGludCBtb2RlID0gMDsKLQogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLCAmcG9zLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHBvcyA8IDAgJiYgbW9kZSA9PSAwKSB7CisgICAgaWYgKHBvcyA8IDAgJiYgd2hlbmNlID09IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgc2VlayB2YWx1ZSAlemQiLCBwb3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBtb2RlIDA6IG9mZnNldCByZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KLSAgICAgICBtb2RlIDE6IG9mZnNldCByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLgotICAgICAgIG1vZGUgMjogb2Zmc2V0IHJlbGF0aXZlIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KLSAgICBpZiAobW9kZSA9PSAxKSB7CisgICAgLyogd2hlbmNlID0gMDogb2Zmc2V0IHJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgICAgIHdoZW5jZSA9IDE6IG9mZnNldCByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLgorICAgICAgIHdoZW5jZSA9IDI6IG9mZnNldCByZWxhdGl2ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisgICAgaWYgKHdoZW5jZSA9PSAxKSB7CiAgICAgICAgIGlmIChwb3MgPiBQWV9TU0laRV9UX01BWCAtIHNlbGYtPnBvcykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldyBwb3NpdGlvbiB0b28gbGFyZ2UiKTsKQEAgLTU2Niw3ICs2NzgsNyBAQAogICAgICAgICB9CiAgICAgICAgIHBvcyArPSBzZWxmLT5wb3M7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgPT0gMikgeworICAgIGVsc2UgaWYgKHdoZW5jZSA9PSAyKSB7CiAgICAgICAgIGlmIChwb3MgPiBQWV9TU0laRV9UX01BWCAtIHNlbGYtPnN0cmluZ19zaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwpAQCAtNTc0LDkgKzY4Niw5IEBACiAgICAgICAgIH0KICAgICAgICAgcG9zICs9IHNlbGYtPnN0cmluZ19zaXplOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlICE9IDApIHsKKyAgICBlbHNlIGlmICh3aGVuY2UgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgbW9kZSk7CisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB3aGVuY2UgKCVpLCBzaG91bGQgYmUgMCwgMSBvciAyKSIsIHdoZW5jZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNTg3LDU0ICs2OTksNjMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyk7CiB9CiAKLVB5RG9jX1NUUlZBUih3cml0ZV9kb2MsCi0id3JpdGUoYnl0ZXMpIC0+IGludC4gIFdyaXRlIGJ5dGVzIHRvIGZpbGUuXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLndyaXRlCisgICAgYjogb2JqZWN0CisgICAgLworCitXcml0ZSBieXRlcyB0byBmaWxlLgorCitSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb193cml0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQorX2lvX0J5dGVzSU9fd3JpdGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTMzMTZkOTk4MDBhMGI5NSBpbnB1dD1mNWVjN2M4YzY0ZWQ3MjBhXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gMDsKICAgICBQeV9idWZmZXIgYnVmOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIENIRUNLX0VYUE9SVFMoc2VsZik7CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJmJ1ZiwgUHlCVUZfQ09OVElHX1JPKSA8IDApCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiLCAmYnVmLCBQeUJVRl9DT05USUdfUk8pIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoYnVmLmxlbiAhPSAwKQogICAgICAgICBuID0gd3JpdGVfYnl0ZXMoc2VsZiwgYnVmLmJ1ZiwgYnVmLmxlbik7Ci0gICAgaWYgKG4gPj0gMCkKLSAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOwogCiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBuID49IDAgPyBQeUxvbmdfRnJvbVNzaXplX3QobikgOiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIod3JpdGVsaW5lc19kb2MsCi0id3JpdGVsaW5lcyhsaW5lcykgLT4gTm9uZS4gIFdyaXRlIGJ5dGVzIG9iamVjdHMgdG8gdGhlIGZpbGUuXG4iCi0iXG4iCi0iTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QgYWRkZWQuICBUaGUgYXJndW1lbnQgY2FuIGJlIGFueSBpdGVyYWJsZVxuIgotIm9iamVjdCBwcm9kdWNpbmcgYnl0ZXMgb2JqZWN0cy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgd3JpdGUoKSBmb3JcbiIKLSJlYWNoIGJ5dGVzIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLndyaXRlbGluZXMKKyAgICBsaW5lczogb2JqZWN0CisgICAgLworCitXcml0ZSBsaW5lcyB0byB0aGUgZmlsZS4KKworTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QgYWRkZWQuICBsaW5lcyBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdAorcHJvZHVjaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgd3JpdGUoKSBmb3IKK2VhY2ggZWxlbWVudC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fd3JpdGVsaW5lcyhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqdikKK19pb19CeXRlc0lPX3dyaXRlbGluZXMoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmxpbmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMzNhYTMyNzFjOTE3NTIgaW5wdXQ9ZTk3MjUzOTE3NmZjOGZjMV0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CiAgICAgUHlPYmplY3QgKnJldDsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIobGluZXMpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICByZXQgPSBieXRlc2lvX3dyaXRlKHNlbGYsIGl0ZW0pOworICAgICAgICByZXQgPSBfaW9fQnl0ZXNJT193cml0ZShzZWxmLCBpdGVtKTsKICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CkBAIC02NTEsMTcgKzc3MiwxOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoY2xvc2VfZG9jLAotImNsb3NlKCkgLT4gTm9uZS4gIERpc2FibGUgYWxsIEkvTyBvcGVyYXRpb25zLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uY2xvc2UKKworRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2Nsb3NlKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19jbG9zZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ3MWJiOTQxMWFmODRhMCBpbnB1dD0zN2UxZjU1NTU2ZTYxZjYwXSovCiB7CiAgICAgQ0hFQ0tfRVhQT1JUUyhzZWxmKTsKLSAgICBpZiAoc2VsZi0+YnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5idWYpOwotICAgICAgICBzZWxmLT5idWYgPSBOVUxMOwotICAgIH0KKyAgICBQeV9DTEVBUihzZWxmLT5idWYpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC02ODMsNyArODA1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc2lvX2dldHN0YXRlKGJ5dGVzaW8gKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IGJ5dGVzaW9fZ2V0dmFsdWUoc2VsZik7CisgICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IF9pb19CeXRlc0lPX2dldHZhbHVlX2ltcGwoc2VsZik7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCkBAIC03MzMsNyArODU1LDcgQEAKIAogICAgIC8qIFNldCB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIGJ1ZmZlci4gSWYgc3RhdGVbMF0gZG9lcyBub3Qgc3VwcG9ydCB0aGUKICAgICAgICBidWZmZXIgcHJvdG9jb2wsIGJ5dGVzaW9fd3JpdGUgd2lsbCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgVHlwZUVycm9yLiAqLwotICAgIHJlc3VsdCA9IGJ5dGVzaW9fd3JpdGUoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOworICAgIHJlc3VsdCA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtNzkxLDEwICs5MTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImRlYWxsb2NhdGVkIEJ5dGVzSU8gb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzIik7CiAgICAgICAgIFB5RXJyX1ByaW50KCk7CiAgICAgfQotICAgIGlmIChzZWxmLT5idWYgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7Ci0gICAgICAgIHNlbGYtPmJ1ZiA9IE5VTEw7Ci0gICAgfQorICAgIFB5X0NMRUFSKHNlbGYtPmJ1Zik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CiAgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCiAgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOwpAQCAtODE0LDcgKzkzMyw3IEBACiAgICAgLyogdHBfYWxsb2MgaW5pdGlhbGl6ZXMgYWxsIHRoZSBmaWVsZHMgdG8gemVyby4gU28gd2UgZG9uJ3QgaGF2ZSB0bwogICAgICAgIGluaXRpYWxpemUgdGhlbSBoZXJlLiAqLwogCi0gICAgc2VsZi0+YnVmID0gKGNoYXIgKilQeU1lbV9NYWxsb2MoMCk7CisgICAgc2VsZi0+YnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKICAgICBpZiAoc2VsZi0+YnVmID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTgyMywyNyArOTQyLDQxIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLl9faW5pdF9fCisgICAgaW5pdGlhbF9ieXRlcyBhcyBpbml0dmFsdWU6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitCdWZmZXJlZCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ5dGVzIGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIGludAotYnl0ZXNpb19pbml0KGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19CeXRlc0lPX19faW5pdF9fX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmluaXR2YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NWMwYzUxZTI0YzViNjIxIGlucHV0PWFhYzdmMzFiNjdiZjBmYjZdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOkJ5dGVzSU8iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaXR2YWx1ZSkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIC8qIEluIGNhc2UsIF9faW5pdF9fIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4gKi8KICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IDA7CiAgICAgc2VsZi0+cG9zID0gMDsKIAorICAgIGlmIChzZWxmLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRXhpc3RpbmcgZXhwb3J0cyBvZiBkYXRhOiBvYmplY3QgY2Fubm90IGJlIHJlLXNpemVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgaWYgKGluaXR2YWx1ZSAmJiBpbml0dmFsdWUgIT0gUHlfTm9uZSkgewotICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICByZXMgPSBieXRlc2lvX3dyaXRlKHNlbGYsIGluaXR2YWx1ZSk7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHNlbGYtPnBvcyA9IDA7CisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3QoaW5pdHZhbHVlKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGluaXR2YWx1ZSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHNlbGYtPmJ1Zik7CisgICAgICAgICAgICBzZWxmLT5idWYgPSBpbml0dmFsdWU7CisgICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoaW5pdHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgICAgICByZXMgPSBfaW9fQnl0ZXNJT193cml0ZShzZWxmLCBpbml0dmFsdWUpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgc2VsZi0+cG9zID0gMDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtODU1LDggKzk4OCw4IEBACiAgICAgUHlfc3NpemVfdCByZXM7CiAKICAgICByZXMgPSBzaXplb2YoYnl0ZXNpbyk7Ci0gICAgaWYgKHNlbGYtPmJ1ZikKLSAgICAgICAgcmVzICs9IHNlbGYtPmJ1Zl9zaXplOworICAgIGlmIChzZWxmLT5idWYgJiYgIVNIQVJFRF9CVUYoc2VsZikpCisgICAgICAgIHJlcyArPSBfUHlTeXNfR2V0U2l6ZU9mKHNlbGYtPmJ1Zik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCkBAIC04NzUsNiArMTAwOCw4IEBACiB9CiAKIAorI2luY2x1ZGUgImNsaW5pYy9ieXRlc2lvLmMuaCIKKwogc3RhdGljIFB5R2V0U2V0RGVmIGJ5dGVzaW9fZ2V0c2V0bGlzdFtdID0gewogICAgIHsiY2xvc2VkIiwgIChnZXR0ZXIpYnl0ZXNpb19nZXRfY2xvc2VkLCBOVUxMLAogICAgICAiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuIn0sCkBAIC04ODIsMzYgKzEwMTcsMzAgQEAKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgYnl0ZXNpb19tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkYWJsZSIsICAgKFB5Q0Z1bmN0aW9uKXJldHVybl9ub3RfY2xvc2VkLCAgTUVUSF9OT0FSR1MsIHJlYWRhYmxlX2RvY30sCi0gICAgeyJzZWVrYWJsZSIsICAgKFB5Q0Z1bmN0aW9uKXJldHVybl9ub3RfY2xvc2VkLCAgTUVUSF9OT0FSR1MsIHNlZWthYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsICAgKFB5Q0Z1bmN0aW9uKXJldHVybl9ub3RfY2xvc2VkLCAgTUVUSF9OT0FSR1MsIHdyaXRhYmxlX2RvY30sCi0gICAgeyJjbG9zZSIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fY2xvc2UsICAgICAgTUVUSF9OT0FSR1MsIGNsb3NlX2RvY30sCi0gICAgeyJmbHVzaCIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fZmx1c2gsICAgICAgTUVUSF9OT0FSR1MsIGZsdXNoX2RvY30sCi0gICAgeyJpc2F0dHkiLCAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9faXNhdHR5LCAgICAgTUVUSF9OT0FSR1MsIGlzYXR0eV9kb2N9LAotICAgIHsidGVsbCIsICAgICAgIChQeUNGdW5jdGlvbilieXRlc2lvX3RlbGwsICAgICAgIE1FVEhfTk9BUkdTLCB0ZWxsX2RvY30sCi0gICAgeyJ3cml0ZSIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fd3JpdGUsICAgICAgTUVUSF9PLCB3cml0ZV9kb2N9LAotICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc2lvX3dyaXRlbGluZXMsIE1FVEhfTywgd3JpdGVsaW5lc19kb2N9LAotICAgIHsicmVhZDEiLCAgICAgIChQeUNGdW5jdGlvbilieXRlc2lvX3JlYWQxLCAgICAgIE1FVEhfTywgcmVhZDFfZG9jfSwKLSAgICB7InJlYWRpbnRvIiwgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkaW50bywgICBNRVRIX08sIHJlYWRpbnRvX2RvY30sCi0gICAgeyJyZWFkbGluZSIsICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZGxpbmUsICAgTUVUSF9WQVJBUkdTLCByZWFkbGluZV9kb2N9LAotICAgIHsicmVhZGxpbmVzIiwgIChQeUNGdW5jdGlvbilieXRlc2lvX3JlYWRsaW5lcywgIE1FVEhfVkFSQVJHUywgcmVhZGxpbmVzX2RvY30sCi0gICAgeyJyZWFkIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZCwgICAgICAgTUVUSF9WQVJBUkdTLCByZWFkX2RvY30sCi0gICAgeyJnZXRidWZmZXIiLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fZ2V0YnVmZmVyLCAgTUVUSF9OT0FSR1MsICBnZXRidWZmZXJfZG9jfSwKLSAgICB7ImdldHZhbHVlIiwgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19nZXR2YWx1ZSwgICBNRVRIX05PQVJHUywgIGdldHZhbF9kb2N9LAotICAgIHsic2VlayIsICAgICAgIChQeUNGdW5jdGlvbilieXRlc2lvX3NlZWssICAgICAgIE1FVEhfVkFSQVJHUywgc2Vla19kb2N9LAotICAgIHsidHJ1bmNhdGUiLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX3RydW5jYXRlLCAgIE1FVEhfVkFSQVJHUywgdHJ1bmNhdGVfZG9jfSwKKyAgICBfSU9fQllURVNJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19DTE9TRV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19GTFVTSF9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19JU0FUVFlfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fVEVMTF9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19XUklURV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19XUklURUxJTkVTX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQUQxX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURMSU5FU19NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0dFVEJVRkZFUl9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19HRVRWQUxVRV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19TRUVLX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1RSVU5DQVRFX01FVEhPRERFRgogICAgIHsiX19nZXRzdGF0ZV9fIiwgIChQeUNGdW5jdGlvbilieXRlc2lvX2dldHN0YXRlLCAgTUVUSF9OT0FSR1MsIE5VTEx9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgIChQeUNGdW5jdGlvbilieXRlc2lvX3NldHN0YXRlLCAgTUVUSF9PLCBOVUxMfSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnl0ZXNpb19zaXplb2YsICAgICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotUHlEb2NfU1RSVkFSKGJ5dGVzaW9fZG9jLAotIkJ5dGVzSU8oW2J1ZmZlcl0pIC0+IG9iamVjdFxuIgotIlxuIgotIkNyZWF0ZSBhIGJ1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXNcbiIKLSJidWZmZXIsIHJlYWR5IGZvciByZWFkaW5nIGFuZCB3cml0aW5nLiIpOwotCiBQeVR5cGVPYmplY3QgUHlCeXRlc0lPX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9pby5CeXRlc0lPIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSovCkBAIC05MzQsNyArMTA2Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwKICAgICBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCi0gICAgYnl0ZXNpb19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICBfaW9fQnl0ZXNJT19fX2luaXRfX19fZG9jX18sICAgICAgICAgICAgICAgLyp0cF9kb2MqLwogICAgICh0cmF2ZXJzZXByb2MpYnl0ZXNpb190cmF2ZXJzZSwgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KICAgICAoaW5xdWlyeSlieXRlc2lvX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwpAQCAtOTQ5LDcgKzEwNzgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KICAgICBvZmZzZXRvZihieXRlc2lvLCBkaWN0KSwgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpYnl0ZXNpb19pbml0LCAgICAgICAgICAgICAgICAgICAgLyp0cF9pbml0Ki8KKyAgICBfaW9fQnl0ZXNJT19fX2luaXRfXywgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pbml0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCiAgICAgYnl0ZXNpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmV3Ki8KIH07CkBAIC05NjQsMTggKzEwOTMsMjQgQEAKIHN0YXRpYyBpbnQKIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKGJ5dGVzaW9idWYgKm9iaiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCiB7Ci0gICAgaW50IHJldDsKICAgICBieXRlc2lvICpiID0gKGJ5dGVzaW8gKikgb2JqLT5zb3VyY2U7CisKICAgICBpZiAodmlldyA9PSBOVUxMKSB7Ci0gICAgICAgIGItPmV4cG9ydHMrKzsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJieXRlc2lvYnVmX2dldGJ1ZmZlcjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopb2JqLCBiLT5idWYsIGItPnN0cmluZ19zaXplLAorICAgIGlmIChTSEFSRURfQlVGKGIpKSB7CisgICAgICAgIGlmICh1bnNoYXJlX2J1ZmZlcihiLCBiLT5zdHJpbmdfc2l6ZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIGNhbm5vdCBmYWlsIGlmIHZpZXcgIT0gTlVMTCBhbmQgcmVhZG9ubHkgPT0gMCAqLworICAgICh2b2lkKVB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGItPmJ1ZiksIGItPnN0cmluZ19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsYWdzKTsKLSAgICBpZiAocmV0ID49IDApIHsKLSAgICAgICAgYi0+ZXhwb3J0cysrOwotICAgIH0KLSAgICByZXR1cm4gcmV0OworICAgIGItPmV4cG9ydHMrKzsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNhYmI5MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTU5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX29wZW5fX2RvY19fLAorIm9wZW4oJG1vZHVsZSwgLywgZmlsZSwgbW9kZT1cJ3JcJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLFxuIgorIiAgICAgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuXG4iCisiXG4iCisiZmlsZSBpcyBlaXRoZXIgYSB0ZXh0IG9yIGJ5dGUgc3RyaW5nIGdpdmluZyB0aGUgbmFtZSAoYW5kIHRoZSBwYXRoXG4iCisiaWYgdGhlIGZpbGUgaXNuXCd0IGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0b1xuIgorImJlIG9wZW5lZCBvciBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZVxuIgorIndyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlXG4iCisicmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pXG4iCisiXG4iCisibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKKyJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvIFwnclwnIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dFxuIgorIm1vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSBcJ3dcJyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZlxuIgorIml0IGFscmVhZHkgZXhpc3RzKSwgXCd4XCcgZm9yIGNyZWF0aW5nIGFuZCB3cml0aW5nIHRvIGEgbmV3IGZpbGUsIGFuZFxuIgorIlwnYVwnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXNcbiIKKyJhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLlxuIgorIkluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybVxuIgorImRlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZVxuIgorImN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnlcbiIKKyJtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOlxuIgorIlxuIgorIj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIKKyJDaGFyYWN0ZXIgTWVhbmluZ1xuIgorIi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKKyJcJ3JcJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KVxuIgorIlwnd1wnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3RcbiIKKyJcJ3hcJyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZ1xuIgorIlwnYVwnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0c1xuIgorIlwnYlwnICAgICAgIGJpbmFyeSBtb2RlXG4iCisiXCd0XCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KVxuIgorIlwnK1wnICAgICAgIG9wZW4gYSBkaXNrIGZpbGUgZm9yIHVwZGF0aW5nIChyZWFkaW5nIGFuZCB3cml0aW5nKVxuIgorIlwnVVwnICAgICAgIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgKGRlcHJlY2F0ZWQpXG4iCisiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgorIlxuIgorIlRoZSBkZWZhdWx0IG1vZGUgaXMgXCdydFwnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbVxuIgorImFjY2VzcywgdGhlIG1vZGUgXCd3K2JcJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlXG4iCisiXCdyK2JcJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSBcJ3hcJyBtb2RlIGltcGxpZXMgXCd3XCcgYW5kXG4iCisicmFpc2VzIGFuIGBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLlxuIgorIlxuIgorIlB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZmlsZXMgb3BlbmVkIGluIGJpbmFyeSBhbmQgdGV4dCBtb2RlcyxcbiIKKyJldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2VzblwndC4gRmlsZXMgb3BlbmVkIGluXG4iCisiYmluYXJ5IG1vZGUgKGFwcGVuZGluZyBcJ2JcJyB0byB0aGUgbW9kZSBhcmd1bWVudCkgcmV0dXJuIGNvbnRlbnRzIGFzXG4iCisiYnl0ZXMgb2JqZWN0cyB3aXRob3V0IGFueSBkZWNvZGluZy4gSW4gdGV4dCBtb2RlICh0aGUgZGVmYXVsdCwgb3Igd2hlblxuIgorIlwndFwnIGlzIGFwcGVuZGVkIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZVxuIgorInJldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGFcbiIKKyJwbGF0Zm9ybS1kZXBlbmRlbnQgZW5jb2Rpbmcgb3IgdXNpbmcgdGhlIHNwZWNpZmllZCBlbmNvZGluZyBpZiBnaXZlbi5cbiIKKyJcbiIKKyJcJ1VcJyBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGluIGZ1dHVyZSB2ZXJzaW9uc1xuIgorIm9mIFB5dGhvbi4gIEl0IGhhcyBubyBlZmZlY3QgaW4gUHl0aG9uIDMuICBVc2UgbmV3bGluZSB0byBjb250cm9sXG4iCisidW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuXG4iCisiXG4iCisiYnVmZmVyaW5nIGlzIGFuIG9wdGlvbmFsIGludGVnZXIgdXNlZCB0byBzZXQgdGhlIGJ1ZmZlcmluZyBwb2xpY3kuXG4iCisiUGFzcyAwIHRvIHN3aXRjaCBidWZmZXJpbmcgb2ZmIChvbmx5IGFsbG93ZWQgaW4gYmluYXJ5IG1vZGUpLCAxIHRvIHNlbGVjdFxuIgorImxpbmUgYnVmZmVyaW5nIChvbmx5IHVzYWJsZSBpbiB0ZXh0IG1vZGUpLCBhbmQgYW4gaW50ZWdlciA+IDEgdG8gaW5kaWNhdGVcbiIKKyJ0aGUgc2l6ZSBvZiBhIGZpeGVkLXNpemUgY2h1bmsgYnVmZmVyLiAgV2hlbiBubyBidWZmZXJpbmcgYXJndW1lbnQgaXNcbiIKKyJnaXZlbiwgdGhlIGRlZmF1bHQgYnVmZmVyaW5nIHBvbGljeSB3b3JrcyBhcyBmb2xsb3dzOlxuIgorIlxuIgorIiogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlclxuIgorIiAgaXMgY2hvc2VuIHVzaW5nIGEgaGV1cmlzdGljIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcgZGV2aWNlXCdzXG4iCisiICBcImJsb2NrIHNpemVcIiBhbmQgZmFsbGluZyBiYWNrIG9uIGBpby5ERUZBVUxUX0JVRkZFUl9TSVpFYC5cbiIKKyIgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy5cbiIKKyJcbiIKKyIqIFwiSW50ZXJhY3RpdmVcIiB0ZXh0IGZpbGVzIChmaWxlcyBmb3Igd2hpY2ggaXNhdHR5KCkgcmV0dXJucyBUcnVlKVxuIgorIiAgdXNlIGxpbmUgYnVmZmVyaW5nLiAgT3RoZXIgdGV4dCBmaWxlcyB1c2UgdGhlIHBvbGljeSBkZXNjcmliZWQgYWJvdmVcbiIKKyIgIGZvciBiaW5hcnkgZmlsZXMuXG4iCisiXG4iCisiZW5jb2RpbmcgaXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gZGVjb2RlIG9yIGVuY29kZSB0aGVcbiIKKyJmaWxlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBlbmNvZGluZyBpc1xuIgorInBsYXRmb3JtIGRlcGVuZGVudCwgYnV0IGFueSBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgUHl0aG9uIGNhbiBiZVxuIgorInBhc3NlZC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncy5cbiIKKyJcbiIKKyJlcnJvcnMgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBlcnJvcnMgYXJlIHRvXG4iCisiYmUgaGFuZGxlZC0tLXRoaXMgYXJndW1lbnQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGJpbmFyeSBtb2RlLiBQYXNzXG4iCisiXCdzdHJpY3RcJyB0byByYWlzZSBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVuY29kaW5nIGVycm9yXG4iCisiKHRoZSBkZWZhdWx0IG9mIE5vbmUgaGFzIHRoZSBzYW1lIGVmZmVjdCksIG9yIHBhc3MgXCdpZ25vcmVcJyB0byBpZ25vcmVcbiIKKyJlcnJvcnMuIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcgZXJyb3JzIGNhbiBsZWFkIHRvIGRhdGEgbG9zcy4pXG4iCisiU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIgb3IgcnVuIFwnaGVscChjb2RlY3MuQ29kZWMpXCdcbiIKKyJmb3IgYSBsaXN0IG9mIHRoZSBwZXJtaXR0ZWQgZW5jb2RpbmcgZXJyb3Igc3RyaW5ncy5cbiIKKyJcbiIKKyJuZXdsaW5lIGNvbnRyb2xzIGhvdyB1bml2ZXJzYWwgbmV3bGluZXMgd29ya3MgKGl0IG9ubHkgYXBwbGllcyB0byB0ZXh0XG4iCisibW9kZSkuIEl0IGNhbiBiZSBOb25lLCBcJ1wnLCBcJ1xcblwnLCBcJ1xcclwnLCBhbmQgXCdcXHJcXG5cJy4gIEl0IHdvcmtzIGFzXG4iCisiZm9sbG93czpcbiIKKyJcbiIKKyIqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzXG4iCisiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiBcJ1xcblwnLCBcJ1xcclwnLCBvciBcJ1xcclxcblwnLCBhbmRcbiIKKyIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gXCdcXG5cJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlXG4iCisiICBjYWxsZXIuIElmIGl0IGlzIFwnXCcsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKKyIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCisiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgorIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgorIlxuIgorIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSBcJ1xcblwnIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKKyIgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZlxuIgorIiAgbmV3bGluZSBpcyBcJ1wnIG9yIFwnXFxuXCcsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgorIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCisiICB0byB0aGUgZ2l2ZW4gc3RyaW5nLlxuIgorIlxuIgorIklmIGNsb3NlZmQgaXMgRmFsc2UsIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGtlcHQgb3BlblxuIgorIndoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlblxuIgorImFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLlxuIgorIlxuIgorIkEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZVxuIgorInVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieVxuIgorImNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlblxuIgorImZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eVxuIgorInNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS5cbiIKKyJcbiIKKyJvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kXG4iCisidGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZ1xuIgorImFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKFwnd1wnLFxuIgorIlwnclwnLCBcJ3d0XCcsIFwncnRcJywgZXRjLiksIGl0IHJldHVybnMgYSBUZXh0SU9XcmFwcGVyLiBXaGVuIHVzZWQgdG8gb3BlblxuIgorImEgZmlsZSBpbiBhIGJpbmFyeSBtb2RlLCB0aGUgcmV0dXJuZWQgY2xhc3MgdmFyaWVzOiBpbiByZWFkIGJpbmFyeVxuIgorIm1vZGUsIGl0IHJldHVybnMgYSBCdWZmZXJlZFJlYWRlcjsgaW4gd3JpdGUgYmluYXJ5IGFuZCBhcHBlbmQgYmluYXJ5XG4iCisibW9kZXMsIGl0IHJldHVybnMgYSBCdWZmZXJlZFdyaXRlciwgYW5kIGluIHJlYWQvd3JpdGUgbW9kZSwgaXQgcmV0dXJuc1xuIgorImEgQnVmZmVyZWRSYW5kb20uXG4iCisiXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYSBzdHJpbmcgb3IgYnl0ZWFycmF5IGFzIGEgZmlsZSBmb3IgYm90aFxuIgorInJlYWRpbmcgYW5kIHdyaXRpbmcuIEZvciBzdHJpbmdzIFN0cmluZ0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCisib3BlbmVkIGluIGEgdGV4dCBtb2RlLCBhbmQgZm9yIGJ5dGVzIGEgQnl0ZXNJTyBjYW4gYmUgdXNlZCBsaWtlIGEgZmlsZVxuIgorIm9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLiIpOworCisjZGVmaW5lIF9JT19PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKV9pb19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2lvX29wZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCisgICAgICAgICAgICAgIGludCBidWZmZXJpbmcsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19vcGVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CisgICAgaW50IGJ1ZmZlcmluZyA9IC0xOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUgPSBOVUxMOworICAgIGludCBjbG9zZWZkID0gMTsKKyAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLAorICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19vcGVuX2ltcGwobW9kdWxlLCBmaWxlLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGNsb3NlZmQsIG9wZW5lcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05N2NkYzA5YmY2OGE4MDY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzdlMjc1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCkBAIC0wLDAgKzEsNDU0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRElPQkFTRV9SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bywgTUVUSF9PLCBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX19kb2NfXywKKyJyZWFkaW50bzEoJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRElPQkFTRV9SRUFESU5UTzFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvMSIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMSwgTUVUSF9PLCBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzEoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfX2RvY19fLAorImRldGFjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRpc2Nvbm5lY3QgdGhpcyBidWZmZXIgZnJvbSBpdHMgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gaXQuXG4iCisiXG4iCisiQWZ0ZXIgdGhlIHJhdyBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBidWZmZXIgaXMgaW4gYW4gdW51c2FibGVcbiIKKyJzdGF0ZS4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX0RFVEFDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRJT0Jhc2VfZGV0YWNoLCBNRVRIX05PQVJHUywgX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfZGV0YWNoX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fQnVmZmVyZWRJT0Jhc2VfZGV0YWNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3BlZWtfX2RvY19fLAorInBlZWsoJHNlbGYsIHNpemU9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJwZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcGVlaywgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3BlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcGVla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9wZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwZWVrIiwKKyAgICAgICAgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9wZWVrX2ltcGwoc2VsZiwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZF9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG4gPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZDFfX2RvY19fLAorInJlYWQxKCRzZWxmLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQUQxX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkMSIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3JlYWQxLCBNRVRIX08sIF9pb19fQnVmZmVyZWRfcmVhZDFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZDFfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZDEoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnJlYWQxIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKHNlbGYsIG4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvLCBNRVRIX08sIF9pb19fQnVmZmVyZWRfcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG9faW1wbChidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50byhidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfX2RvY19fLAorInJlYWRpbnRvMSgkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURJTlRPMV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8xIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZGludG8xLCBNRVRIX08sIF9pb19fQnVmZmVyZWRfcmVhZGludG8xX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9SRUFETElORV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9zZWVrX19kb2NfXywKKyJzZWVrKCRzZWxmLCB0YXJnZXQsIHdoZW5jZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICp0YXJnZXRvYmosIGludCB3aGVuY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9zZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFyZ2V0b2JqOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCisgICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoc2VsZiwgdGFyZ2V0b2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkc2VsZiwgcG9zPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfdHJ1bmNhdGUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3MgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRSZWFkZXJfX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSlcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5ldyBidWZmZXJlZCByZWFkZXIgdXNpbmcgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdyBJTyBvYmplY3QuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJlYWRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkV3JpdGVyKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSlcbiIKKyItLVxuIgorIlxuIgorIkEgYnVmZmVyIGZvciBhIHdyaXRlYWJsZSBzZXF1ZW50aWFsIFJhd0lPIG9iamVjdC5cbiIKKyJcbiIKKyJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgorInN0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG9cbiIKKyJERUZBVUxUX0JVRkZFUl9TSVpFLiIpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19faW1wbChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKnJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyYXc7CisgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRXcml0ZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fQlVGRkVSRURXUklURVJfV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CdWZmZXJlZFdyaXRlcl93cml0ZSwgTUVUSF9PLCBfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX19kb2NfXywKKyJCdWZmZXJlZFJXUGFpcihyZWFkZXIsIHdyaXRlciwgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgYnVmZmVyZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0IHRvZ2V0aGVyLlxuIgorIlxuIgorIkEgYnVmZmVyZWQgcmVhZGVyIG9iamVjdCBhbmQgYnVmZmVyZWQgd3JpdGVyIG9iamVjdCBwdXQgdG9nZXRoZXIgdG9cbiIKKyJmb3JtIGEgc2VxdWVudGlhbCBJTyBvYmplY3QgdGhhdCBjYW4gcmVhZCBhbmQgd3JpdGUuIFRoaXMgaXMgdHlwaWNhbGx5XG4iCisidXNlZCB3aXRoIGEgc29ja2V0IG9yIHR3by13YXkgcGlwZS5cbiIKKyJcbiIKKyJyZWFkZXIgYW5kIHdyaXRlciBhcmUgUmF3SU9CYXNlIG9iamVjdHMgdGhhdCBhcmUgcmVhZGFibGUgYW5kXG4iCisid3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG9cbiIKKyJERUZBVUxUX0JVRkZFUl9TSVpFLiIpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICpyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqd3JpdGVyLCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgUHlPYmplY3QgKnJlYWRlcjsKKyAgICBQeU9iamVjdCAqd3JpdGVyOworICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworCisgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUldQYWlyX1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQnVmZmVyZWRSV1BhaXIiLCBrd2FyZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJ1ZmZlcmVkUldQYWlyIiwKKyAgICAgICAgJnJlYWRlciwgJndyaXRlciwgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19pbXBsKChyd3BhaXIgKilzZWxmLCByZWFkZXIsIHdyaXRlciwgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSlcbiIKKyItLVxuIgorIlxuIgorIkEgYnVmZmVyZWQgaW50ZXJmYWNlIHRvIHJhbmRvbSBhY2Nlc3Mgc3RyZWFtcy5cbiIKKyJcbiIKKyJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSxcbiIKKyJyYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXRcbiIKKyJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLiIpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X19faW1wbChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKnJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyYXc7CisgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiYmI1ZTIzOWI0ZmZlNmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYjFkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKQEAgLTAsMCArMSw0MjIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT19yZWFkYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGFibGVfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRhYmxlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fd3JpdGFibGVfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3dyaXRhYmxlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla2FibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2ZsdXNoX19kb2NfXywKKyJmbHVzaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRvZXMgbm90aGluZy4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19GTFVTSF9NRVRIT0RERUYgICAgXAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fZmx1c2gsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT19mbHVzaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2ZsdXNoKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX2ZsdXNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19nZXRidWZmZXJfX2RvY19fLAorImdldGJ1ZmZlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCBhIHJlYWQtd3JpdGUgdmlldyBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fR0VUQlVGRkVSX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRidWZmZXIiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fZ2V0YnVmZmVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19nZXRidWZmZXJfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldGJ1ZmZlcihieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19nZXRidWZmZXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2dldHZhbHVlX19kb2NfXywKKyJnZXR2YWx1ZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0dFVFZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR2YWx1ZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19nZXR2YWx1ZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2dldHZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZ2V0dmFsdWUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWx3YXlzIHJldHVybnMgRmFsc2UuXG4iCisiXG4iCisiQnl0ZXNJTyBvYmplY3RzIGFyZSBub3QgY29ubmVjdGVkIHRvIGEgVFRZLWxpa2UgZGV2aWNlLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2lzYXR0eSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2lzYXR0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9faXNhdHR5X2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19pc2F0dHkoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT190ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1RFTExfTUVUSE9EREVGICAgIFwKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fdGVsbCwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3RlbGxfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3RlbGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fQnl0ZXNJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWQxX19kb2NfXywKKyJyZWFkMSgkc2VsZiwgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQUQxX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkMSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkMSwgTUVUSF9PLCBfaW9fQnl0ZXNJT19yZWFkMV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJOZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBieXRlcyBvYmplY3QuXG4iCisiXG4iCisiUmV0YWluIG5ld2xpbmUuICBBIG5vbi1uZWdhdGl2ZSBzaXplIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bVxuIgorIm51bWJlciBvZiBieXRlcyB0byByZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGxpbmUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGxpbmVfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkbGluZXNfX2RvY19fLAorInJlYWRsaW5lcygkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTGlzdCBvZiBieXRlcyBvYmplY3RzLCBlYWNoIGEgbGluZSBmcm9tIHRoZSBmaWxlLlxuIgorIlxuIgorIkNhbGwgcmVhZGxpbmUoKSByZXBlYXRlZGx5IGFuZCByZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBzbyByZWFkLlxuIgorIlRoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlXG4iCisidG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFETElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lcyIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fcmVhZGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lcyhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGxpbmVzX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVwIHRvIGxlbihidWZmZXIpIGJ5dGVzIGludG8gYnVmZmVyLlxuIgorIlxuIgorIlJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRiksIG9yIE5vbmUgaWYgdGhlIG9iamVjdFxuIgorImlzIHNldCBub3QgdG8gYmxvY2sgYXMgaGFzIG5vIGRhdGEgdG8gcmVhZC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX0J5dGVzSU9fcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRpbnRvX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGludG8oYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLlxuIgorIlxuIgorIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgorIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLiAgUmV0dXJucyB0aGUgbmV3IHNpemUuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdHJ1bmNhdGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19zZWVrX19kb2NfXywKKyJzZWVrKCRzZWxmLCBwb3MsIHdoZW5jZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi5cbiIKKyJcbiIKKyJTZWVrIHRvIGJ5dGUgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOlxuIgorIiAgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCisiICAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG1heSBiZSBuZWdhdGl2ZTtcbiIKKyIgICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgdXN1YWxseSBuZWdhdGl2ZS5cbiIKKyJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWtfaW1wbChieXRlc2lvICpzZWxmLCBQeV9zc2l6ZV90IHBvcywgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCisgICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fc2Vla19pbXBsKHNlbGYsIHBvcywgd2hlbmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnl0ZXMgdG8gZmlsZS5cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT193cml0ZSwgTUVUSF9PLCBfaW9fQnl0ZXNJT193cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBsaW5lcyB0byB0aGUgZmlsZS5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIGxpbmVzIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0XG4iCisicHJvZHVjaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgd3JpdGUoKSBmb3JcbiIKKyJlYWNoIGVsZW1lbnQuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fV1JJVEVMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT193cml0ZWxpbmVzLCBNRVRIX08sIF9pb19CeXRlc0lPX3dyaXRlbGluZXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRpc2FibGUgYWxsIEkvTyBvcGVyYXRpb25zLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19jbG9zZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fY2xvc2UoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX19faW5pdF9fX19kb2NfXywKKyJCeXRlc0lPKGluaXRpYWxfYnl0ZXM9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJCdWZmZXJlZCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ5dGVzIGJ1ZmZlci4iKTsKKworc3RhdGljIGludAorX2lvX0J5dGVzSU9fX19pbml0X19faW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqaW5pdHZhbHVlKTsKKworc3RhdGljIGludAorX2lvX0J5dGVzSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluaXRpYWxfYnl0ZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsCisgICAgICAgICZpbml0dmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fX19pbml0X19faW1wbCgoYnl0ZXNpbyAqKXNlbGYsIGluaXR2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MDBjY2MxNDk1ODdmYWM0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGExMjA1ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCkBAIC0wLDAgKzEsMzY3IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZmlsZS5cbiIKKyJcbiIKKyJBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmVcbiIKKyJjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19jbG9zZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2Nsb3NlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19fX2luaXRfX19fZG9jX18sCisiRmlsZUlPKGZpbGUsIG1vZGU9XCdyXCcsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZmlsZS5cbiIKKyJcbiIKKyJUaGUgbW9kZSBjYW4gYmUgXCdyXCcgKGRlZmF1bHQpLCBcJ3dcJywgXCd4XCcgb3IgXCdhXCcgZm9yIHJlYWRpbmcsXG4iCisid3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgorImRvZXNuXCd0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiIKKyJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHlcbiIKKyJleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllc1xuIgorIndyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byBcJ3dcJy5BZGQgYSBcJytcJyB0byB0aGUgbW9kZVxuIgorInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKKyJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKKyJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgorIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKKyJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOworCitzdGF0aWMgaW50CitfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcik7CisKK3N0YXRpYyBpbnQKK19pb19GaWxlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CisgICAgaW50IGNsb3NlZmQgPSAxOworICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaU86RmlsZUlPIiwgX2tleXdvcmRzLAorICAgICAgICAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLCAmb3BlbmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fX19pbml0X19faW1wbCgoZmlsZWlvICopc2VsZiwgbmFtZW9iaiwgbW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19maWxlbm8sIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19maWxlbm9faW1wbChmaWxlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19maWxlbm8oZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX2ZpbGVub19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHJlYWQgbW9kZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19yZWFkYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkYWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRhYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT193cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fd3JpdGFibGVfaW1wbChmaWxlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0YWJsZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBmaWxlIHN1cHBvcnRzIHJhbmRvbS1hY2Nlc3MuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19TRUVLQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fc2Vla2FibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fc2Vla2FibGVfaW1wbChmaWxlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrYWJsZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX0ZpbGVJT19yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkaW50byhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fcmVhZGFsbF9fZG9jX18sCisicmVhZGFsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCisiXG4iCisiSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsXG4iCisib3IgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4gIFJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFsbCIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3JlYWRhbGwsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFsbF9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRhbGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC5cbiIKKyJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX0ZpbGVJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRfaW1wbChmaWxlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWQoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnl0ZXMgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIHdyaXR0ZW4uXG4iCisiXG4iCisiT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uXG4iCisiVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsXG4iCisicmV0dXJucyBOb25lIGlmIHRoZSB3cml0ZSB3b3VsZCBibG9jay4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3dyaXRlLCBNRVRIX08sIF9pb19GaWxlSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fd3JpdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3dyaXRlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19zZWVrX19kb2NfXywKKyJzZWVrKCRzZWxmLCBwb3MsIHdoZW5jZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbiBhbmQgcmV0dXJuIHRoZSBmaWxlIHBvc2l0aW9uLlxuIgorIlxuIgorIkFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG9cbiIKKyJTRUVLX1NFVCBvciAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXQgc2hvdWxkIGJlID49IDApOyBvdGhlciB2YWx1ZXNcbiIKKyJhcmUgU0VFS19DVVIgb3IgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZSksXG4iCisiYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoXG4iCisibWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLlxuIgorIlxuIgorIk5vdGUgdGhhdCBub3QgYWxsIGZpbGUgb2JqZWN0cyBhcmUgc2Vla2FibGUuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19TRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fc2VlaywgTUVUSF9WQVJBUkdTLCBfaW9fRmlsZUlPX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fc2Vla19pbXBsKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKnBvcywgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWsoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcG9zOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCisgICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3RlbGxfX2RvY19fLAorInRlbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGZpbGUgcG9zaXRpb24uXG4iCisiXG4iCisiQ2FuIHJhaXNlIE9TRXJyb3IgZm9yIG5vbiBzZWVrYWJsZSBmaWxlcy4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1RFTExfTUVUSE9EREVGICAgIFwKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT190ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3RlbGxfaW1wbChmaWxlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT190ZWxsKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRlRSVU5DQVRFKQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHNpemU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcyBhbmQgcmV0dXJuIHRoZSB0cnVuY2F0ZWQgc2l6ZS5cbiIKKyJcbiIKKyJTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS5cbiIKKyJUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fRmlsZUlPX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3RydW5jYXRlX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqcG9zb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdHJ1bmNhdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcG9zb2JqID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnBvc29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3RydW5jYXRlX2ltcGwoc2VsZiwgcG9zb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZUUlVOQ0FURSkgKi8KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX2lzYXR0eSwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2lzYXR0eV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2lzYXR0eShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKKyNpZm5kZWYgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjFhMjBiMTBjODFhZGQ2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZWEwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaApAQCAtMCwwICsxLDI3OSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3RlbGxfX2RvY19fLAorInRlbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV90ZWxsLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfdGVsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfdGVsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3RlbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX3RlbGxfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2ZsdXNoX19kb2NfXywKKyJmbHVzaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkZsdXNoIHdyaXRlIGJ1ZmZlcnMsIGlmIGFwcGxpY2FibGUuXG4iCisiXG4iCisiVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlYWQtb25seSBhbmQgbm9uLWJsb2NraW5nIHN0cmVhbXMuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfRkxVU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2ZsdXNoLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfZmx1c2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2ZsdXNoX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmx1c2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX2ZsdXNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGbHVzaCBhbmQgY2xvc2UgdGhlIElPIG9iamVjdC5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9jbG9zZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3MuXG4iCisiXG4iCisiSWYgRmFsc2UsIHNlZWsoKSwgdGVsbCgpIGFuZCB0cnVuY2F0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uXG4iCisiVGhpcyBtZXRob2QgbWF5IG5lZWQgdG8gZG8gYSB0ZXN0IHNlZWsoKS4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9TRUVLQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfc2Vla2FibGVfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9zZWVrYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2Vfc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLlxuIgorIlxuIgorIklmIEZhbHNlLCByZWFkKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2VfcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9yZWFkYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfcmVhZGFibGVfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLlxuIgorIlxuIgorIklmIEZhbHNlLCB3cml0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfV1JJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2Vfd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3dyaXRhYmxlX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfd3JpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgaWYgb25lIGV4aXN0cy5cbiIKKyJcbiIKKyJBbiBJT0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgSU8gb2JqZWN0IGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9maWxlbm8sIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9maWxlbm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2ZpbGVub19pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2ZpbGVubyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gXCdpbnRlcmFjdGl2ZVwnIHN0cmVhbS5cbiIKKyJcbiIKKyJSZXR1cm4gRmFsc2UgaWYgaXQgY2FuXCd0IGJlIGRldGVybWluZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2VfaXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9pc2F0dHlfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9pc2F0dHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX2lzYXR0eV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0uXG4iCisiXG4iCisiSWYgc2l6ZSBpcyBzcGVjaWZpZWQsIGF0IG1vc3Qgc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQuXG4iCisiXG4iCisiVGhlIGxpbmUgdGVybWluYXRvciBpcyBhbHdheXMgYlwnXFxuXCcgZm9yIGJpbmFyeSBmaWxlczsgZm9yIHRleHRcbiIKKyJmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lXG4iCisidGVybWluYXRvcihzKSByZWNvZ25pemVkLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBfaW9fX0lPQmFzZV9yZWFkbGluZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkbGluZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lX2ltcGwoc2VsZiwgbGltaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9yZWFkbGluZXNfX2RvY19fLAorInJlYWRsaW5lcygkc2VsZiwgaGludD0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgbGluZXMgZnJvbSB0aGUgc3RyZWFtLlxuIgorIlxuIgorImhpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZVxuIgorImxpbmVzIHdpbGwgYmUgcmVhZCBpZiB0aGUgdG90YWwgc2l6ZSAoaW4gYnl0ZXMvY2hhcmFjdGVycykgb2YgYWxsXG4iCisibGluZXMgc28gZmFyIGV4Y2VlZHMgaGludC4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9SRUFETElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lcyIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgX2lvX19JT0Jhc2VfcmVhZGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBoaW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBoaW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZXMiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVzX2ltcGwoc2VsZiwgaGludCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3dyaXRlbGluZXNfX2RvY19fLAorIndyaXRlbGluZXMoJHNlbGYsIGxpbmVzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3dyaXRlbGluZXMsIE1FVEhfTywgX2lvX19JT0Jhc2Vfd3JpdGVsaW5lc19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX19SYXdJT0Jhc2VfcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19SQVdJT0JBU0VfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fX1Jhd0lPQmFzZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fUmF3SU9CYXNlX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkIiwKKyAgICAgICAgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKHNlbGYsIG4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX19kb2NfXywKKyJyZWFkYWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCB1bnRpbCBFT0YsIHVzaW5nIG11bHRpcGxlIHJlYWQoKSBjYWxsLiIpOworCisjZGVmaW5lIF9JT19fUkFXSU9CQVNFX1JFQURBTExfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhbGwiLCAoUHlDRnVuY3Rpb24pX2lvX19SYXdJT0Jhc2VfcmVhZGFsbCwgTUVUSF9OT0FSR1MsIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmUwMzQxNTJiNjg4NGU2NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGUzMmEzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaApAQCAtMCwwICsxLDI4NiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT19nZXR2YWx1ZV9fZG9jX18sCisiZ2V0dmFsdWUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX0dFVFZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR2YWx1ZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fZ2V0dmFsdWUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19nZXR2YWx1ZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19nZXR2YWx1ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX2dldHZhbHVlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRlbGwgdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fdGVsbCwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT190ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fdGVsbF9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190ZWxsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYXQgbW9zdCBzaXplIGNoYXJhY3RlcnMsIHJldHVybmVkIGFzIGEgc3RyaW5nLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRlxuIgorImlzIHJlYWNoZWQuIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19TdHJpbmdJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCB1bnRpbCBuZXdsaW5lIG9yIEVPRi5cbiIKKyJcbiIKKyJSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBFT0YgaXMgaGl0IGltbWVkaWF0ZWx5LiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19SRUFETElORV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19TdHJpbmdJT19yZWFkbGluZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3JlYWRsaW5lX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3JlYWRsaW5lKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBwb3M9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydW5jYXRlIHNpemUgdG8gcG9zLlxuIgorIlxuIgorIlRoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXNcbiIKKyJyZXR1cm5lZCBieSB0ZWxsKCkuICBUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC5cbiIKKyJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fdHJ1bmNhdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT19zZWVrX19kb2NfXywKKyJzZWVrKCRzZWxmLCBwb3MsIHdoZW5jZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi5cbiIKKyJcbiIKKyJTZWVrIHRvIGNoYXJhY3RlciBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCisiICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwO1xuIgorIiAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG11c3QgYmUgMDtcbiIKKyIgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyBtdXN0IGJlIDAuXG4iCisiUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19TRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19TdHJpbmdJT19zZWVrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fc2Vla19pbXBsKHN0cmluZ2lvICpzZWxmLCBQeV9zc2l6ZV90IHBvcywgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fc2VlayhzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fc2Vla19pbXBsKHNlbGYsIHBvcywgd2hlbmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIHN0cmluZyB0byBmaWxlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4sIHdoaWNoIGlzIGFsd2F5cyBlcXVhbCB0b1xuIgorInRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT193cml0ZSwgTUVUSF9PLCBfaW9fU3RyaW5nSU9fd3JpdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgSU8gb2JqZWN0LlxuIgorIlxuIgorIkF0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZSBvYmplY3QgaXMgY2xvc2VkXG4iCisid2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2Nsb3NlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2Nsb3NlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT19fX2luaXRfX19fZG9jX18sCisiU3RyaW5nSU8oaW5pdGlhbF92YWx1ZT1cJ1wnLCBuZXdsaW5lPVwnXFxuXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgorIlxuIgorIlRoZSBpbml0aWFsX3ZhbHVlIGFyZ3VtZW50IHNldHMgdGhlIHZhbHVlIG9mIG9iamVjdC4gIFRoZSBuZXdsaW5lXG4iCisiYXJndW1lbnQgaXMgbGlrZSB0aGUgb25lIG9mIFRleHRJT1dyYXBwZXJcJ3MgY29uc3RydWN0b3IuIik7CisKK3N0YXRpYyBpbnQKK19pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmopOworCitzdGF0aWMgaW50CitfaW9fU3RyaW5nSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluaXRpYWxfdmFsdWUiLCAibmV3bGluZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPTzpTdHJpbmdJTyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoKHN0cmluZ2lvICopc2VsZiwgdmFsdWUsIG5ld2xpbmVfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGFibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT19yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fd3JpdGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fd3JpdGFibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3NlZWthYmxlX19kb2NfXywKKyJzZWVrYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fc2Vla2FibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrYWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjA2MWNmM2EyMGNkMTRlZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjN2U4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaApAQCAtMCwwICsxLDQ1NiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX19kb2NfXywKKyJJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKGRlY29kZXIsIHRyYW5zbGF0ZSwgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJDb2RlYyB1c2VkIHdoZW4gcmVhZGluZyBhIGZpbGUgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuXG4iCisiXG4iCisiSXQgd3JhcHMgYW5vdGhlciBpbmNyZW1lbnRhbCBkZWNvZGVyLCB0cmFuc2xhdGluZyBcXHJcXG4gYW5kIFxcciBpbnRvIFxcbi5cbiIKKyJJdCBhbHNvIHJlY29yZHMgdGhlIHR5cGVzIG9mIG5ld2xpbmVzIGVuY291bnRlcmVkLiAgV2hlbiB1c2VkIHdpdGhcbiIKKyJ0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpblxuIgorIm9uZSBwaWVjZS4gV2hlbiB1c2VkIHdpdGggZGVjb2Rlcj1Ob25lLCBpdCBleHBlY3RzIHVuaWNvZGUgc3RyaW5ncyBhc1xuIgorImRlY29kZSBpbnB1dCBhbmQgdHJhbnNsYXRlcyBuZXdsaW5lcyB3aXRob3V0IGZpcnN0IGludm9raW5nIGFuIGV4dGVybmFsXG4iCisiZGVjb2Rlci4iKTsKKworc3RhdGljIGludAorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19faW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVjb2RlciwgaW50IHRyYW5zbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVycm9ycyk7CisKK3N0YXRpYyBpbnQKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZGVjb2RlcjsKKyAgICBpbnQgdHJhbnNsYXRlOworICAgIFB5T2JqZWN0ICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT2l8TzpJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmZGVjb2RlciwgJnRyYW5zbGF0ZSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKChubGRlY29kZXJfb2JqZWN0ICopc2VsZiwgZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgaW5wdXQsIGZpbmFsPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGVfX2RvY19fLAorImdldHN0YXRlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9HRVRTVEFURV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZV9fZG9jX18sCisic2V0c3RhdGUoJHNlbGYsIHN0YXRlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9TRVRTVEFURV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfc2V0c3RhdGUsIE1FVEhfTywgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfc2V0c3RhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfUkVTRVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlc2V0IiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0X2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldChubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19fX2RvY19fLAorIlRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLFxuIgorIiAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgorIlxuIgorImVuY29kaW5nIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZVxuIgorImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgorIlxuIgorImVycm9ycyBkZXRlcm1pbmVzIHRoZSBzdHJpY3RuZXNzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc2VlXG4iCisiaGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZFxuIgorImRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCisiXG4iCisibmV3bGluZSBjb250cm9scyBob3cgbGluZSBlbmRpbmdzIGFyZSBoYW5kbGVkLiBJdCBjYW4gYmUgTm9uZSwgXCdcJyxcbiIKKyJcJ1xcblwnLCBcJ1xcclwnLCBhbmQgXCdcXHJcXG5cJy4gIEl0IHdvcmtzIGFzIGZvbGxvd3M6XG4iCisiXG4iCisiKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpc1xuIgorIiAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gXCdcXG5cJywgXCdcXHJcJywgb3IgXCdcXHJcXG5cJywgYW5kXG4iCisiICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvIFwnXFxuXCcgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZVxuIgorIiAgY2FsbGVyLiBJZiBpdCBpcyBcJ1wnLCB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGlzIGVuYWJsZWQsIGJ1dCBsaW5lXG4iCisiICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZlxuIgorIiAgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgaW5wdXQgbGluZXMgYXJlIG9ubHkgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW5cbiIKKyIgIHN0cmluZywgYW5kIHRoZSBsaW5lIGVuZGluZyBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC5cbiIKKyJcbiIKKyIqIE9uIG91dHB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCBhbnkgXCdcXG5cJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlXG4iCisiICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWZcbiIKKyIgIG5ld2xpbmUgaXMgXCdcJyBvciBcJ1xcblwnLCBubyB0cmFuc2xhdGlvbiB0YWtlcyBwbGFjZS4gSWYgbmV3bGluZSBpcyBhbnlcbiIKKyIgIG9mIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGFueSBcJ1xcblwnIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZFxuIgorIiAgdG8gdGhlIGdpdmVuIHN0cmluZy5cbiIKKyJcbiIKKyJJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0b1xuIgorIndyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuIik7CisKK3N0YXRpYyBpbnQKK19pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgbGluZV9idWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3cml0ZV90aHJvdWdoKTsKKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuZXdsaW5lID0gTlVMTDsKKyAgICBpbnQgbGluZV9idWZmZXJpbmcgPSAwOworICAgIGludCB3cml0ZV90aHJvdWdoID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98enp6aWk6VGV4dElPV3JhcHBlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJmJ1ZmZlciwgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19pbXBsKCh0ZXh0aW8gKilzZWxmLCBidWZmZXIsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nLCB3cml0ZV90aHJvdWdoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX19kb2NfXywKKyJkZXRhY2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0RFVEFDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX2RldGFjaCwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX2RldGFjaCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2RldGFjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCB0ZXh0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfd3JpdGUsIE1FVEhfTywgX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRleHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9pbXBsKHNlbGYsIHRleHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3JlYWQodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG4gPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHNlbGYsIG4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsCisgICAgICAgICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIGNvb2tpZSwgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfc2VlaywgTUVUSF9WQVJBUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9zZWVrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqY29va2llT2JqLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3NlZWsodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29va2llT2JqOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCisgICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHNlbGYsIGNvb2tpZU9iaiwgd2hlbmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl90ZWxsLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90ZWxsKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBwb3M9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9pbXBsKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnBvcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3MgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwoc2VsZiwgcG9zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX19kb2NfXywKKyJmaWxlbm8oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0ZJTEVOT19NRVRIT0RERUYgICAgXAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX2ZpbGVubyh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2ZpbGVub19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9TRUVLQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfc2Vla2FibGVfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfc2Vla2FibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGFibGVfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGVfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX2lzYXR0eSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2lzYXR0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX2lzYXR0eSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2lzYXR0eV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9GTFVTSF9NRVRIT0RERUYgICAgXAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZmx1c2gsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmx1c2hfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmx1c2godGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfY2xvc2UodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY5MDYwOGY4NWFhYjhiYTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vZmlsZWlvLmMgYi9Nb2R1bGVzL19pby9maWxlaW8uYwppbmRleCA3NDUwOGE3Li4xMmUzN2JiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9maWxlaW8uYworKysgYi9Nb2R1bGVzL19pby9maWxlaW8uYwpAQCAtNDMsNiArNDMsMTkgQEAKICNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uRmlsZUlPICJmaWxlaW8gKiIgIiZQeUZpbGVJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MWM3NzcwOGI0MWZkYTcwY10qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBmZDsKQEAgLTUzLDYgKzY2LDcgQEAKICAgICBzaWduZWQgaW50IHNlZWthYmxlIDogMjsgLyogLTEgbWVhbnMgdW5rbm93biAqLwogICAgIHVuc2lnbmVkIGludCBjbG9zZWZkIDogMTsKICAgICBjaGFyIGZpbmFsaXppbmc7CisgICAgdW5zaWduZWQgaW50IGJsa3NpemU7CiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogICAgIFB5T2JqZWN0ICpkaWN0OwogfSBmaWxlaW87CkBAIC0xMDYsOSArMTIwLDExIEBACiAgICAgICAgIC8qIGZkIGlzIGFjY2Vzc2libGUgYW5kIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBjbG9zZWQgaXQgKi8KICAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIGVyciA9IGNsb3NlKGZkKTsKICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwpAQCAtMTIzLDggKzEzOSwxOCBAQAogICAgIHJldHVybiAwOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmNsb3NlCisKK0Nsb3NlIHRoZSBmaWxlLgorCitBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmUKK2NhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX2Nsb3NlKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fY2xvc2VfaW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzczN2EzMTllZjNiYWQwYiBpbnB1dD1mMzUyMzE3NjBkNTRhNTIyXSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CkBAIC0xNjgsNiArMTk0LDcgQEAKICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAwOwogICAgICAgICBzZWxmLT5hcHBlbmRpbmcgPSAwOwogICAgICAgICBzZWxmLT5zZWVrYWJsZSA9IC0xOworICAgICAgICBzZWxmLT5ibGtzaXplID0gMDsKICAgICAgICAgc2VsZi0+Y2xvc2VmZCA9IDE7CiAgICAgICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKICAgICB9CkBAIC0xNzUsNTcgKzIwMiw0MCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKIH0KIAotLyogT24gVW5peCwgb3BlbiB3aWxsIHN1Y2NlZWQgZm9yIGRpcmVjdG9yaWVzLgotICAgSW4gUHl0aG9uLCB0aGVyZSBzaG91bGQgYmUgbm8gZmlsZSBvYmplY3RzIHJlZmVycmluZyB0bwotICAgZGlyZWN0b3JpZXMsIHNvIHdlIG5lZWQgYSBjaGVjay4gICovCi0KLXN0YXRpYyBpbnQKLWRpcmNoZWNrKGZpbGVpbyogc2VsZiwgUHlPYmplY3QgKm5hbWVvYmopCi17Ci0jaWYgZGVmaW5lZChIQVZFX0ZTVEFUKSAmJiBkZWZpbmVkKFNfSVNESVIpICYmIGRlZmluZWQoRUlTRElSKQotICAgIHN0cnVjdCBzdGF0IGJ1ZjsKLSAgICBpZiAoc2VsZi0+ZmQgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZidWYpID09IDAgJiYgU19JU0RJUihidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgZXJybm8gPSBFSVNESVI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBuYW1lb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1jaGVja19mZChpbnQgZmQpCi17Ci0jaWYgZGVmaW5lZChIQVZFX0ZTVEFUKQotICAgIHN0cnVjdCBzdGF0IGJ1ZjsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgKGZzdGF0KGZkLCAmYnVmKSA8IDAgJiYgZXJybm8gPT0gRUJBREYpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpleGM7Ci0gICAgICAgIGNoYXIgKm1zZyA9IHN0cmVycm9yKEVCQURGKTsKLSAgICAgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX09TRXJyb3IsICIoaXMpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVCQURGLCBtc2cpOwotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgZXhjKTsKLSAgICAgICAgUHlfWERFQ1JFRihleGMpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KICNpZmRlZiBPX0NMT0VYRUMKIGV4dGVybiBpbnQgX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLl9faW5pdF9fCisgICAgZmlsZSBhcyBuYW1lb2JqOiBvYmplY3QKKyAgICBtb2RlOiBzdHIgPSAiciIKKyAgICBjbG9zZWZkOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgb3BlbmVyOiBvYmplY3QgPSBOb25lCisKK09wZW4gYSBmaWxlLgorCitUaGUgbW9kZSBjYW4gYmUgJ3InIChkZWZhdWx0KSwgJ3cnLCAneCcgb3IgJ2EnIGZvciByZWFkaW5nLAord3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdAorZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkCit3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHkKK2V4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzCit3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZQordG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQorcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlCitvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLgorKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgorcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIGludAotZmlsZWlvX2luaXQoUHlPYmplY3QgKm9zZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzQxM2Y2OGU2NDg0YmJkIGlucHV0PTE5MzE2NGUyOTNkNmMwOTddKi8KIHsKLSAgICBmaWxlaW8gKnNlbGYgPSAoZmlsZWlvICopIG9zZWxmOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CiAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpzdHJpbmdvYmogPSBOVUxMLCAqb3BlbmVyID0gUHlfTm9uZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKnN0cmluZ29iaiA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfVU5JQ09ERSAqd2lkZW5hbWUgPSBOVUxMOwogI2VuZGlmCkBAIC0yMzMsMTUgKzI0MywxNiBAQAogICAgIGludCByd2EgPSAwLCBwbHVzID0gMDsKICAgICBpbnQgZmxhZ3MgPSAwOwogICAgIGludCBmZCA9IC0xOwotICAgIGludCBjbG9zZWZkID0gMTsKICAgICBpbnQgZmRfaXNfb3duID0gMDsKICNpZmRlZiBPX0NMT0VYRUMKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzID0gJl9QeV9vcGVuX2Nsb2V4ZWNfd29ya3M7CiAjZWxpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MgPSBOVUxMOwogI2VuZGlmCisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBmZGZzdGF0OworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgYXNzZXJ0KFB5RmlsZUlPX0NoZWNrKG9zZWxmKSk7CisgICAgYXNzZXJ0KFB5RmlsZUlPX0NoZWNrKHNlbGYpKTsKICAgICBpZiAoc2VsZi0+ZmQgPj0gMCkgewogICAgICAgICBpZiAoc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICAgICAgLyogSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4gKi8KQEAgLTI1MiwxMSArMjYzLDYgQEAKICAgICAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2lPOmZpbGVpbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVuZXIpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQsIGdvdCBmbG9hdCIpOwpAQCAtMjgwLDcgKzI4Niw3IEBACiAgICAgICAgIGlmICh3aWRlbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAod2NzbGVuKHdpZGVuYW1lKSAhPSBsZW5ndGgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTM2Niw4ICszNzIsNiBAQAogI2VuZGlmCiAKICAgICBpZiAoZmQgPj0gMCkgewotICAgICAgICBpZiAoY2hlY2tfZmQoZmQpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgc2VsZi0+ZmQgPSBmZDsKICAgICAgICAgc2VsZi0+Y2xvc2VmZCA9IGNsb3NlZmQ7CiAgICAgfQpAQCAtMzgxLDE1ICszODUsMjAgQEAKIAogICAgICAgICBlcnJubyA9IDA7CiAgICAgICAgIGlmIChvcGVuZXIgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IF93b3Blbih3aWRlbmFtZSwgZmxhZ3MsIDA2NjYpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IF93b3Blbih3aWRlbmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gb3BlbihuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gb3BlbihuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIH0gd2hpbGUgKHNlbGYtPmZkIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogCi0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgaWYgKGFzeW5jX2VycikKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKmZkb2JqOwpAQCAtNDI3LDggKzQzNiwyNCBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICNlbmRpZgogICAgIH0KLSAgICBpZiAoZGlyY2hlY2soc2VsZiwgbmFtZW9iaikgPCAwKQorCisgICAgc2VsZi0+Ymxrc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisgICAgaWYgKF9QeV9mc3RhdChzZWxmLT5mZCwgJmZkZnN0YXQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKKyNpZiBkZWZpbmVkKFNfSVNESVIpICYmIGRlZmluZWQoRUlTRElSKQorICAgIC8qIE9uIFVuaXgsIG9wZW4gd2lsbCBzdWNjZWVkIGZvciBkaXJlY3Rvcmllcy4KKyAgICAgICBJbiBQeXRob24sIHRoZXJlIHNob3VsZCBiZSBubyBmaWxlIG9iamVjdHMgcmVmZXJyaW5nIHRvCisgICAgICAgZGlyZWN0b3JpZXMsIHNvIHdlIG5lZWQgYSBjaGVjay4gICovCisgICAgaWYgKFNfSVNESVIoZmRmc3RhdC5zdF9tb2RlKSkgeworICAgICAgICBlcnJubyA9IEVJU0RJUjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbmRpZiAvKiBkZWZpbmVkKFNfSVNESVIpICovCisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFCisgICAgaWYgKGZkZnN0YXQuc3RfYmxrc2l6ZSA+IDEpCisgICAgICAgIHNlbGYtPmJsa3NpemUgPSBmZGZzdGF0LnN0X2Jsa3NpemU7CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFICovCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKICAgICAvKiBkb24ndCB0cmFuc2xhdGUgbmV3bGluZXMgKFxyXG4gPD0+IFxuKSAqLwpAQCAtNTA2LDMyICs1MzEsNjAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5maWxlbm8KKworUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fZmlsZW5vKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fZmlsZW5vX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5NjI2Y2U1Mzk4ZWNlOTAgaW5wdXQ9MGI5YjJkZTY3MzM1YWRhM10qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc2VsZi0+ZmQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnJlYWRhYmxlCisKK1RydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX3JlYWRhYmxlKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fcmVhZGFibGVfaW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjQwNzQ0YTYxNTBmZTliYSBpbnB1dD1hM2ZkZmVkNmVlYTcyMWM1XSovCiB7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT5yZWFkYWJsZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ud3JpdGFibGUKKworVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX3dyaXRhYmxlKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fd3JpdGFibGVfaW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTZjZWZjNTQ0NmU4OTk3NyBpbnB1dD1jMjA0YTgwOGNhMmUxNzQ4XSovCiB7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT53cml0YWJsZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uc2Vla2FibGUKKworVHJ1ZSBpZiBmaWxlIHN1cHBvcnRzIHJhbmRvbS1hY2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fc2Vla2FibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzkwOWNhMGE0MmU5Mjg3IGlucHV0PWM4ZTU1NTRkMmZkNjNjN2ZdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwpAQCAtNTQ4LDExICs2MDEsMTkgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT5zZWVrYWJsZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCisKK1NhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGludG8oZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fcmVhZGludG9faW1wbChmaWxlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIwMWE1YTIyYzg0MTVjYjQgaW5wdXQ9NDcyMWQ3YjY4YjE1NGVhZl0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIFB5X3NzaXplX3QgbiwgbGVuOworICAgIFB5X3NzaXplX3QgbjsKICAgICBpbnQgZXJyOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKQEAgLTU2MCw0OCArNjIxLDIxIEBACiAgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkKICAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJyZWFkaW5nIik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqIiwgJnBidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKSB7Ci0gICAgICAgIGxlbiA9IHBidWYubGVuOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsIHBidWYuYnVmLCAoaW50KWxlbik7Ci0jZWxzZQotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcGJ1Zi5idWYsIGxlbik7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgbiA9IC0xOworICAgIG4gPSBfUHlfcmVhZChzZWxmLT5mZCwgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKKyAgICAvKiBjb3B5IGVycm5vIGJlY2F1c2UgUHlCdWZmZXJfUmVsZWFzZSgpIGNhbiBpbmRpcmVjdGx5IG1vZGlmeSBpdCAqLwogICAgIGVyciA9IGVycm5vOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChuIDwgMCkgewotICAgICAgICBpZiAoZXJyID09IEVBR0FJTikKKworICAgIGlmIChuID09IC0xKSB7CisgICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKIH0KIAotI2lmbmRlZiBIQVZFX0ZTVEFUCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGFsbChmaWxlaW8gKnNlbGYpCi17Ci0gICAgX1B5X0lERU5USUZJRVIocmVhZGFsbCk7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9yZWFkYWxsLCAiTyIsIHNlbGYpOwotfQotCi0jZWxzZQotCiBzdGF0aWMgc2l6ZV90CiBuZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZSkKIHsKQEAgLTYyMSwxMCArNjU1LDIwIEBACiAgICAgcmV0dXJuIGFkZGVuZCArIGN1cnJlbnRzaXplOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnJlYWRhbGwKKworUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy4KKworSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsCitvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGFsbChmaWxlaW8gKnNlbGYpCitfaW9fRmlsZUlPX3JlYWRhbGxfaW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmFhMDI5MmIyMTNiNDAyMiBpbnB1dD1kYmRjMTM3ZjU1NjAyODM0XSovCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CiAgICAgUHlfb2ZmX3QgcG9zLCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOwpAQCAtNjM2LDEzICs2ODAsMTYgQEAKICAgICBpZiAoIV9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHBvcyA9IF9sc2Vla2k2NChzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKICNlbHNlCiAgICAgcG9zID0gbHNlZWsoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CiAjZW5kaWYKLSAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZzdCkgPT0gMCkKLSAgICAgICAgZW5kID0gc3Quc3Rfc2l6ZTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHNlbGYtPmZkLCAmc3RhdHVzKSA9PSAwKQorICAgICAgICBlbmQgPSBzdGF0dXMuc3Rfc2l6ZTsKICAgICBlbHNlCiAgICAgICAgIGVuZCA9IChQeV9vZmZfdCktMTsKIApAQCAtNjc2LDM1ICs3MjMsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIG4gPSBidWZzaXplIC0gYnl0ZXNfcmVhZDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChuID4gSU5UX01BWCkKLSAgICAgICAgICAgIG4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGJ5dGVzX3JlYWQsIChpbnQpbik7Ci0jZWxzZQotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGJ5dGVzX3JlYWQsIG4pOwotI2VuZGlmCi0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgbiA9IF9QeV9yZWFkKHNlbGYtPmZkLAorICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGJ5dGVzX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICBidWZzaXplIC0gYnl0ZXNfcmVhZCk7CisKICAgICAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAobiA9PSAtMSkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgeworICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVzX3JlYWQgPiAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgYnl0ZXNfcmVhZCArPSBuOwpAQCAtNzE4LDE0ICs3NTIsMjQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jZW5kaWYgLyogSEFWRV9GU1RBVCAqLworLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5yZWFkCisgICAgc2l6ZTogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLgorSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX3JlYWQoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fcmVhZF9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyNTI4ZDM5ZGQwY2E2NDEgaW5wdXQ9NWM2Y2FhNTQ5MGMxM2E5Yl0qLwogewogICAgIGNoYXIgKnB0cjsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAgICAgUHlPYmplY3QgKmJ5dGVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKQEAgLTczMyw0MSArNzc3LDI5IEBACiAgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkKICAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJyZWFkaW5nIik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJiIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICByZXR1cm4gZmlsZWlvX3JlYWRhbGwoc2VsZik7Ci0gICAgfQorICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIF9pb19GaWxlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOwogCiAjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLwogICAgIGlmIChzaXplID4gSU5UX01BWCkKICAgICAgICAgc2l6ZSA9IElOVF9NQVg7CiAjZW5kaWYKKwogICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwogCi0gICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBlcnJubyA9IDA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcHRyLCAoaW50KXNpemUpOwotI2Vsc2UKLSAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsIHB0ciwgc2l6ZSk7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgbiA9IC0xOwotCi0gICAgaWYgKG4gPCAwKSB7CisgICAgbiA9IF9QeV9yZWFkKHNlbGYtPmZkLCBwdHIsIHNpemUpOworICAgIGlmIChuID09IC0xKSB7CisgICAgICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeV9ERUNSRUYoKSBjYW4gaW5kaXJlY3RseSBtb2RpZnkgaXQgKi8KICAgICAgICAgaW50IGVyciA9IGVycm5vOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICBpZiAoZXJyID09IEVBR0FJTikKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTc4MSwxMSArODEzLDIzIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBieXRlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYnl0ZXMgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIHdyaXR0ZW4uCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLgorVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsCityZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX3dyaXRlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fRmlsZUlPX3dyaXRlX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9idWZmZXIgKmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQwNTlkYjNkMzYzYTJmNyBpbnB1dD1mZmJkODgzNGY0NDdhYzMxXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlfc3NpemVfdCBuLCBsZW47CisgICAgUHlfc3NpemVfdCBuOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNzkzLDM5ICs4MzcsMTUgQEAKICAgICBpZiAoIXNlbGYtPndyaXRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoIndyaXRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSoiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIGxlbiA9IHBidWYubGVuOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IDMyNzY3ICYmIGlzYXR0eShzZWxmLT5mZCkpIHsKLSAgICAgICAgICAgIC8qIElzc3VlICMxMTM5NTogdGhlIFdpbmRvd3MgY29uc29sZSByZXR1cm5zIGFuIGVycm9yICgxMjogbm90Ci0gICAgICAgICAgICAgICBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYgc3Rkb3V0IG1vZGUgaXMKLSAgICAgICAgICAgICAgIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAotICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLiAqLwotICAgICAgICAgICAgbGVuID0gMzI3Njc7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSB3cml0ZShzZWxmLT5mZCwgcGJ1Zi5idWYsIChpbnQpbGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSB3cml0ZShzZWxmLT5mZCwgcGJ1Zi5idWYsIGxlbik7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgbiA9IC0xOworICAgIG4gPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIGItPmJ1ZiwgYi0+bGVuKTsKKyAgICAvKiBjb3B5IGVycm5vIGJlY2F1c2UgUHlCdWZmZXJfUmVsZWFzZSgpIGNhbiBpbmRpcmVjdGx5IG1vZGlmeSBpdCAqLwogICAgIGVyciA9IGVycm5vOwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0KICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pCisgICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC04NzMsMTEgKzg5MywxMyBAQAogCiAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwogICAgICAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKICNlbHNlCiAgICAgICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CiAjZW5kaWYKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gLTE7CkBAIC04OTEsMjMgKzkxMyw0NCBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fc2VlayhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpwb3NvYmo7Ci0gICAgaW50IHdoZW5jZSA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnNlZWsKKyAgICBwb3M6IG9iamVjdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KIAorTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbiBhbmQgcmV0dXJuIHRoZSBmaWxlIHBvc2l0aW9uLgorCitBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiAgT3B0aW9uYWwgYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvCitTRUVLX1NFVCBvciAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXQgc2hvdWxkIGJlID49IDApOyBvdGhlciB2YWx1ZXMKK2FyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSwKK2FuZCBTRUVLX0VORCBvciAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaAorbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLgorCitOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqcG9zLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM5NzZhY2RmMDU0ZTY2NTUgaW5wdXQ9MDQzOTE5NGIwNzc0ZDQ1NF0qLworewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aSIsICZwb3NvYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBwb3J0YWJsZV9sc2VlayhzZWxmLT5mZCwgcG9zb2JqLCB3aGVuY2UpOworICAgIHJldHVybiBwb3J0YWJsZV9sc2VlayhzZWxmLT5mZCwgcG9zLCB3aGVuY2UpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnRlbGwKKworQ3VycmVudCBmaWxlIHBvc2l0aW9uLgorCitDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX3RlbGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fdGVsbF9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZmUyMTQ3MDU4ODA5ZDBiIGlucHV0PTgwN2UyNGVhZDRjZWMyZjldKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwpAQCAtOTE2LDEzICs5NTksMjIgQEAKIH0KIAogI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnRydW5jYXRlCisgICAgc2l6ZSBhcyBwb3NvYmo6IG9iamVjdCA9IE5VTEwKKyAgICAvCisKK1RydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcyBhbmQgcmV0dXJuIHRoZSB0cnVuY2F0ZWQgc2l6ZS4KKworU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuCitUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fdHJ1bmNhdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3NvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTQ5Y2E3YTkxNmMxNzZmYSBpbnB1dD05MDI2YWY0NDY4NmI3MzE4XSovCiB7Ci0gICAgUHlPYmplY3QgKnBvc29iaiA9IE5VTEw7IC8qIHRoZSBuZXcgc2l6ZSB3YW50ZWQgYnkgdGhlIHVzZXIgKi8KLSNpZm5kZWYgTVNfV0lORE9XUwogICAgIFB5X29mZl90IHBvczsKLSNlbmRpZgogICAgIGludCByZXQ7CiAgICAgaW50IGZkOwogCkBAIC05MzIsOSArOTg0LDYgQEAKICAgICBpZiAoIXNlbGYtPndyaXRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoIndyaXRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmcG9zb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAocG9zb2JqID09IFB5X05vbmUgfHwgcG9zb2JqID09IE5VTEwpIHsKICAgICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiAqLwogICAgICAgICBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgTlVMTCwgMSk7CkBAIC05NDUsNTIgKzk5NCw2IEBACiAgICAgICAgIFB5X0lOQ1JFRihwb3NvYmopOwogICAgIH0KIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBNUyBfY2hzaXplIGRvZXNuJ3Qgd29yayBpZiBuZXdzaXplIGRvZXNuJ3QgZml0IGluIDMyIGJpdHMsCi0gICAgICAgc28gZG9uJ3QgZXZlbiB0cnkgdXNpbmcgaXQuICovCi0gICAgewotICAgICAgICBQeU9iamVjdCAqb2xkcG9zb2JqLCAqdGVtcHBvc29iajsKLSAgICAgICAgSEFORExFIGhGaWxlOwotCi0gICAgICAgIC8qIHdlIHNhdmUgdGhlIGZpbGUgcG9pbnRlciBwb3NpdGlvbiAqLwotICAgICAgICBvbGRwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgTlVMTCwgMSk7Ci0gICAgICAgIGlmIChvbGRwb3NvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBvc29iaik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIHdlIHRoZW4gbW92ZSB0byB0aGUgdHJ1bmNhdGlvbiBwb3NpdGlvbiAqLwotICAgICAgICB0ZW1wcG9zb2JqID0gcG9ydGFibGVfbHNlZWsoZmQsIHBvc29iaiwgMCk7Ci0gICAgICAgIGlmICh0ZW1wcG9zb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRwb3NvYmopOwotICAgICAgICAgICAgUHlfREVDUkVGKHBvc29iaik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYodGVtcHBvc29iaik7Ci0KLSAgICAgICAgLyogVHJ1bmNhdGUuICBOb3RlIHRoYXQgdGhpcyBtYXkgZ3JvdyB0aGUgZmlsZSEgKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIGhGaWxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7Ci0gICAgICAgIHJldCA9IGhGaWxlID09IChIQU5ETEUpLTE7IC8qIHRlc3RpbmcgZm9yIElOVkFMSURfSEFORExFIHZhbHVlICovCi0gICAgICAgIGlmIChyZXQgPT0gMCkgewotICAgICAgICAgICAgcmV0ID0gU2V0RW5kT2ZGaWxlKGhGaWxlKSA9PSAwOwotICAgICAgICAgICAgaWYgKHJldCkKLSAgICAgICAgICAgICAgICBlcnJubyA9IEVBQ0NFUzsKLSAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIC8qIHdlIHJlc3RvcmUgdGhlIGZpbGUgcG9pbnRlciBwb3NpdGlvbiBpbiBhbnkgY2FzZSAqLwotICAgICAgICB0ZW1wcG9zb2JqID0gcG9ydGFibGVfbHNlZWsoZmQsIG9sZHBvc29iaiwgMCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRwb3NvYmopOwotICAgICAgICBpZiAodGVtcHBvc29iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wcG9zb2JqKTsKLSAgICB9Ci0jZWxzZQotCiAjaWYgZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQogICAgIHBvcyA9IFB5TG9uZ19Bc0xvbmdMb25nKHBvc29iaik7CiAjZWxzZQpAQCAtMTAwMiwxMiArMTAwNSwxNiBAQAogICAgIH0KIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgZXJybm8gPSAwOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXQgPSBfY2hzaXplX3MoZmQsIHBvcyk7CisjZWxzZQogICAgIHJldCA9IGZ0cnVuY2F0ZShmZCwgcG9zKTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotI2VuZGlmIC8qICFNU19XSU5ET1dTICovCi0KICAgICBpZiAocmV0ICE9IDApIHsKICAgICAgICAgUHlfREVDUkVGKHBvc29iaik7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKQEAgLTEwNTcsMjYgKzEwNjQsNDAgQEAKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5GaWxlSU8gZmQ9JWQgbW9kZT0nJXMnPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZkLCBtb2RlX3N0cmluZyhzZWxmKSk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgIjxfaW8uRmlsZUlPIGZkPSVkIG1vZGU9JyVzJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5mZCwgbW9kZV9zdHJpbmcoc2VsZiksIHNlbGYtPmNsb3NlZmQgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBuYW1lPSVSIG1vZGU9JyVzJz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lb2JqLCBtb2RlX3N0cmluZyhzZWxmKSk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgIjxfaW8uRmlsZUlPIG5hbWU9JVIgbW9kZT0nJXMnIGNsb3NlZmQ9JXM+IiwKKyAgICAgICAgICAgIG5hbWVvYmosIG1vZGVfc3RyaW5nKHNlbGYpLCBzZWxmLT5jbG9zZWZkID8gIlRydWUiIDogIkZhbHNlIik7CiAgICAgICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5pc2F0dHkKKworVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjb25uZWN0ZWQgdG8gYSBUVFkgZGV2aWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmlsZWlvX2lzYXR0eShmaWxlaW8gKnNlbGYpCitfaW9fRmlsZUlPX2lzYXR0eV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzJjMzk5MjRlOWE4MDcwIGlucHV0PWNkOTRjYTFmNWU5NWU4NDNdKi8KIHsKICAgICBsb25nIHJlczsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGlzYXR0eShzZWxmLT5mZCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGlmIChfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQorICAgICAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gMDsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXMpOwogfQpAQCAtMTA4OSwxMTAgKzExMTAsMjIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotCi1QeURvY19TVFJWQVIoZmlsZWlvX2RvYywKLSJmaWxlKG5hbWU6IHN0clssIG1vZGU6IHN0cl1bLCBvcGVuZXI6IE5vbmVdKSAtPiBmaWxlIElPIG9iamVjdFxuIgotIlxuIgotIk9wZW4gYSBmaWxlLiAgVGhlIG1vZGUgY2FuIGJlICdyJyAoZGVmYXVsdCksICd3JywgJ3gnIG9yICdhJyBmb3IgcmVhZGluZyxcbiIKLSJ3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0XG4iCi0iZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkXG4iCi0id2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuICBBIEZpbGVFeGlzdHNFcnJvciB3aWxsIGJlIHJhaXNlZCBpZiBpdCBhbHJlYWR5XG4iCi0iZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXNcbiIKLSJ3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZVxuIgotInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKLSJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKLSJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgotIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKLSJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOwotCi1QeURvY19TVFJWQVIocmVhZF9kb2MsCi0icmVhZChzaXplOiBpbnQpIC0+IGJ5dGVzLiAgcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgotIlxuIgotIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkXG4iCi0iSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS5cbiIKLSJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKLQotUHlEb2NfU1RSVkFSKHJlYWRhbGxfZG9jLAotInJlYWRhbGwoKSAtPiBieXRlcy4gIHJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCi0iXG4iCi0iSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsXG4iCi0ib3IgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4gIFJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOwotCi1QeURvY19TVFJWQVIod3JpdGVfZG9jLAotIndyaXRlKGI6IGJ5dGVzKSAtPiBpbnQuICBXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi5cbiIKLSJcbiIKLSJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi5cbiIKLSJUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSxcbiIKLSJyZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLiIKLSk7Ci0KLVB5RG9jX1NUUlZBUihmaWxlbm9fZG9jLAotImZpbGVubygpIC0+IGludC4gIFJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLiIpOwotCi1QeURvY19TVFJWQVIoc2Vla19kb2MsCi0ic2VlayhvZmZzZXQ6IGludFssIHdoZW5jZTogaW50XSkgLT4gaW50LiAgTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbiBhbmRcbiIKLSJyZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uXG4iCi0iXG4iCi0iQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gIE9wdGlvbmFsIGFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0b1xuIgotIlNFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlc1xuIgotImFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSxcbiIKLSJhbmQgU0VFS19FTkQgb3IgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2hcbiIKLSJtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuXG4iCi0iXG4iCi0iTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4iKTsKLQotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCi1QeURvY19TVFJWQVIodHJ1bmNhdGVfZG9jLAotInRydW5jYXRlKFtzaXplOiBpbnRdKSAtPiBpbnQuICBUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXNcbiIKLSJhbmQgcmV0dXJuIHRoZSB0cnVuY2F0ZWQgc2l6ZS5cbiIKLSJcbiIKLSJTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS5cbiIKLSJUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuIik7Ci0jZW5kaWYKLQotUHlEb2NfU1RSVkFSKHRlbGxfZG9jLAotInRlbGwoKSAtPiBpbnQuICBDdXJyZW50IGZpbGUgcG9zaXRpb24uXG4iCi0iXG4iCi0iQ2FuIHJhaXNlIE9TRXJyb3IgZm9yIG5vbiBzZWVrYWJsZSBmaWxlcy4iCi0pOwotCi1QeURvY19TVFJWQVIocmVhZGludG9fZG9jLAotInJlYWRpbnRvKCkgLT4gU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iKTsKLQotUHlEb2NfU1RSVkFSKGNsb3NlX2RvYywKLSJjbG9zZSgpIC0+IE5vbmUuICBDbG9zZSB0aGUgZmlsZS5cbiIKLSJcbiIKLSJBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmVcbiIKLSJjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4iKTsKLQotUHlEb2NfU1RSVkFSKGlzYXR0eV9kb2MsCi0iaXNhdHR5KCkgLT4gYm9vbC4gIFRydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4iKTsKLQotUHlEb2NfU1RSVkFSKHNlZWthYmxlX2RvYywKLSJzZWVrYWJsZSgpIC0+IGJvb2wuICBUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4iKTsKLQotUHlEb2NfU1RSVkFSKHJlYWRhYmxlX2RvYywKLSJyZWFkYWJsZSgpIC0+IGJvb2wuICBUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHJlYWQgbW9kZS4iKTsKLQotUHlEb2NfU1RSVkFSKHdyaXRhYmxlX2RvYywKLSJ3cml0YWJsZSgpIC0+IGJvb2wuICBUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuIik7CisjaW5jbHVkZSAiY2xpbmljL2ZpbGVpby5jLmgiCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmaWxlaW9fbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsICAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX3JlYWQsICAgICAgICAgTUVUSF9WQVJBUkdTLCByZWFkX2RvY30sCi0gICAgeyJyZWFkYWxsIiwgIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZGFsbCwgIE1FVEhfTk9BUkdTLCAgcmVhZGFsbF9kb2N9LAotICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pZmlsZWlvX3JlYWRpbnRvLCBNRVRIX1ZBUkFSR1MsIHJlYWRpbnRvX2RvY30sCi0gICAgeyJ3cml0ZSIsICAgIChQeUNGdW5jdGlvbilmaWxlaW9fd3JpdGUsICAgICAgICBNRVRIX1ZBUkFSR1MsIHdyaXRlX2RvY30sCi0gICAgeyJzZWVrIiwgICAgIChQeUNGdW5jdGlvbilmaWxlaW9fc2VlaywgICAgICAgICBNRVRIX1ZBUkFSR1MsIHNlZWtfZG9jfSwKLSAgICB7InRlbGwiLCAgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb190ZWxsLCAgICAgICAgIE1FVEhfVkFSQVJHUywgdGVsbF9kb2N9LAotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgdHJ1bmNhdGVfZG9jfSwKLSNlbmRpZgotICAgIHsiY2xvc2UiLCAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX2Nsb3NlLCAgICAgICAgTUVUSF9OT0FSR1MsICBjbG9zZV9kb2N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pZmlsZWlvX3NlZWthYmxlLCBNRVRIX05PQVJHUywgICAgICBzZWVrYWJsZV9kb2N9LAotICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pZmlsZWlvX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgICAgICByZWFkYWJsZV9kb2N9LAotICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pZmlsZWlvX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgICAgICB3cml0YWJsZV9kb2N9LAotICAgIHsiZmlsZW5vIiwgICAoUHlDRnVuY3Rpb24pZmlsZWlvX2ZpbGVubywgICBNRVRIX05PQVJHUywgICAgICBmaWxlbm9fZG9jfSwKLSAgICB7ImlzYXR0eSIsICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19pc2F0dHksICAgTUVUSF9OT0FSR1MsICAgICAgaXNhdHR5X2RvY30sCisgICAgX0lPX0ZJTEVJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fUkVBREFMTF9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19TRUVLX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fVEVMTF9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19GSUxFTk9fTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19JU0FUVFlfTUVUSE9EREVGCiAgICAgeyJfZGVhbGxvY193YXJuIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb19kZWFsbG9jX3dhcm4sIE1FVEhfTywgTlVMTH0sCiAgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZmlsZWlvX2dldHN0YXRlLCBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwpAQCAtMTIyNyw2ICsxMTYwLDcgQEAKIH07CiAKIHN0YXRpYyBQeU1lbWJlckRlZiBmaWxlaW9fbWVtYmVyc1tdID0geworICAgIHsiX2Jsa3NpemUiLCBUX1VJTlQsIG9mZnNldG9mKGZpbGVpbywgYmxrc2l6ZSksIDB9LAogICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKGZpbGVpbywgZmluYWxpemluZyksIDB9LAogICAgIHtOVUxMfQogfTsKQEAgLTEyNTMsNyArMTE4Nyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCiAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGZpbGVpb19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgX2lvX0ZpbGVJT19fX2luaXRfX19fZG9jX18sICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWZpbGVpb190cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpZmlsZWlvX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KQEAgLTEyNjgsNyArMTIwMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKGZpbGVpbywgZGljdCksICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIGZpbGVpb19pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIF9pb19GaWxlSU9fX19pbml0X18sICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBmaWxlaW9fbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCBlZjA2YjQzLi4wMjUwMDdlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtMTMsNiArMTMsMjAgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLl9JT0Jhc2UgIlB5T2JqZWN0ICoiICImUHlJT0Jhc2VfVHlwZSIKK2NsYXNzIF9pby5fUmF3SU9CYXNlICJQeU9iamVjdCAqIiAiJlB5UmF3SU9CYXNlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMjlhNGQwNzZjMmIyMTFjXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIC8qCiAgKiBJT0Jhc2UgY2xhc3MsIGFuIGFic3RyYWN0IGNsYXNzCiAgKi8KQEAgLTk2LDExICsxMTAsMTUgQEAKICAgICByZXR1cm4gaW9iYXNlX3Vuc3VwcG9ydGVkKCJzZWVrIik7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfdGVsbF9kb2MsCi0gICAgICAgICAgICAgIlJldHVybiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnRlbGwKKworUmV0dXJuIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3RlbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfdGVsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg5YTFjMDgwNzkzNWFiZTIgaW5wdXQ9MDRlNjE1ZmVjMTI4ODAxZl0qLwogewogICAgIF9QeV9JREVOVElGSUVSKHNlZWspOwogCkBAIC0xMjEsMTMgKzEzOSwxNyBAQAogCiAvKiBGbHVzaCBhbmQgY2xvc2UgbWV0aG9kcyAqLwogCi1QeURvY19TVFJWQVIoaW9iYXNlX2ZsdXNoX2RvYywKLSAgICAiRmx1c2ggd3JpdGUgYnVmZmVycywgaWYgYXBwbGljYWJsZS5cbiIKLSAgICAiXG4iCi0gICAgIlRoaXMgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWFkLW9ubHkgYW5kIG5vbi1ibG9ja2luZyBzdHJlYW1zLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5mbHVzaAorCitGbHVzaCB3cml0ZSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLgorCitUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVhZC1vbmx5IGFuZCBub24tYmxvY2tpbmcgc3RyZWFtcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9mbHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9mbHVzaF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjZWY0YjRkNTQ2NTZhM2IgaW5wdXQ9NzczYmUxMjFhYmUyNzBhYV0qLwogewogICAgIC8qIFhYWCBTaG91bGQgdGhpcyByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuPz8/ICovCiAgICAgaWYgKElTX0NMT1NFRChzZWxmKSkgewpAQCAtMTM3LDExICsxNTksNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX2Nsb3NlX2RvYywKLSAgICAiRmx1c2ggYW5kIGNsb3NlIHRoZSBJTyBvYmplY3QuXG4iCi0gICAgIlxuIgotICAgICJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLlxuIik7Ci0KIHN0YXRpYyBpbnQKIGlvYmFzZV9jbG9zZWQoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC0xODAsOCArMTk3LDE3IEBACiAgICBgX19JT0Jhc2VfY2xvc2VkYCBhbmQgY2FsbCBmbHVzaCgpIGJ5IGl0c2VsZiwgYnV0IGl0IGlzIHJlZHVuZGFudCB3aXRoCiAgICB3aGF0ZXZlciBiZWhhdmlvdXIgYSBub24tdHJpdmlhbCBkZXJpdmVkIGNsYXNzIHdpbGwgaW1wbGVtZW50LiAqLwogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5jbG9zZQorCitGbHVzaCBhbmQgY2xvc2UgdGhlIElPIG9iamVjdC4KKworVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9jbG9zZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9jbG9zZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzYzZhNmY1N2Q3ODNkNmQgaW5wdXQ9ZjQ0OTRkNWMzMWRiYzZiN10qLwogewogICAgIFB5T2JqZWN0ICpyZXM7CiAKQEAgLTMwNCwxNCArMzMwLDE4IEBACiAKIC8qIElucXVpcnkgbWV0aG9kcyAqLwogCi1QeURvY19TVFJWQVIoaW9iYXNlX3NlZWthYmxlX2RvYywKLSAgICAiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3MuXG4iCi0gICAgIlxuIgotICAgICJJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi5cbiIKLSAgICAiVGhpcyBtZXRob2QgbWF5IG5lZWQgdG8gZG8gYSB0ZXN0IHNlZWsoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnNlZWthYmxlCisKK1JldHVybiB3aGV0aGVyIG9iamVjdCBzdXBwb3J0cyByYW5kb20gYWNjZXNzLgorCitJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4KK1RoaXMgbWV0aG9kIG1heSBuZWVkIHRvIGRvIGEgdGVzdCBzZWVrKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2Vfc2Vla2FibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2Vfc2Vla2FibGVfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YzI0YzY3ZjVmMzJhNDNkIGlucHV0PTIyNjc2ZWViYjgxZGNmMWVdKi8KIHsKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CkBAIC0zMzMsMTMgKzM2MywxNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfcmVhZGFibGVfZG9jLAotICAgICJSZXR1cm4gd2hldGhlciBvYmplY3Qgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy5cbiIKLSAgICAiXG4iCi0gICAgIklmIEZhbHNlLCByZWFkKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnJlYWRhYmxlCisKK1JldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLgorCitJZiBGYWxzZSwgcmVhZCgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfcmVhZGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfcmVhZGFibGVfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDgwODkyNTA2ODYzODhiIGlucHV0PTEyZmMzZDhmNmJlNDY0MzRdKi8KIHsKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CkBAIC0zNjIsMTMgKzM5NiwxNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2Vfd3JpdGFibGVfZG9jLAotICAgICJSZXR1cm4gd2hldGhlciBvYmplY3Qgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy5cbiIKLSAgICAiXG4iCi0gICAgIklmIEZhbHNlLCB3cml0ZSgpIHdpbGwgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS53cml0YWJsZQorCitSZXR1cm4gd2hldGhlciBvYmplY3Qgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4KKworSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV93cml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV93cml0YWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQwNjAwMWQwOTg1YmUxNGYgaW5wdXQ9YzE3YTBiYjZhOGRmYzU5MF0qLwogewogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KQEAgLTQxMywyNCArNDUxLDMyIEBACiAKIC8qIFhYWCBTaG91bGQgdGhlc2UgYmUgcHJlc2VudCBldmVuIGlmIHVuaW1wbGVtZW50ZWQ/ICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfZmlsZW5vX2RvYywKLSAgICAiUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBpZiBvbmUgZXhpc3RzLlxuIgotICAgICJcbiIKLSAgICAiQW4gSU9FcnJvciBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmZpbGVubworCitSZXR1cm5zIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGlmIG9uZSBleGlzdHMuCisKK0FuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2ZpbGVubyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9maWxlbm9faW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2MwOTczZjBmNWYzYjczIGlucHV0PTMyNzczYzVkZjRiN2VlZGVdKi8KIHsKICAgICByZXR1cm4gaW9iYXNlX3Vuc3VwcG9ydGVkKCJmaWxlbm8iKTsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9pc2F0dHlfZG9jLAotICAgICJSZXR1cm4gd2hldGhlciB0aGlzIGlzIGFuICdpbnRlcmFjdGl2ZScgc3RyZWFtLlxuIgotICAgICJcbiIKLSAgICAiUmV0dXJuIEZhbHNlIGlmIGl0IGNhbid0IGJlIGRldGVybWluZWQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmlzYXR0eQorCitSZXR1cm4gd2hldGhlciB0aGlzIGlzIGFuICdpbnRlcmFjdGl2ZScgc3RyZWFtLgorCitSZXR1cm4gRmFsc2UgaWYgaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9pc2F0dHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfaXNhdHR5X2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjBjYWI3N2NlZGU0MWNkZCBpbnB1dD05ZWY3NjUzMGQzNjg0NThiXSovCiB7CiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19jbG9zZWQoc2VsZiwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MzksMzAgKzQ4NSwzMSBAQAogCiAvKiBSZWFkbGluZShzKSBhbmQgd3JpdGVsaW5lcyAqLwogCi1QeURvY19TVFJWQVIoaW9iYXNlX3JlYWRsaW5lX2RvYywKLSAgICAiUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0uXG4iCi0gICAgIlxuIgotICAgICJJZiBsaW1pdCBpcyBzcGVjaWZpZWQsIGF0IG1vc3QgbGltaXQgYnl0ZXMgd2lsbCBiZSByZWFkLlxuIgotICAgICJcbiIKLSAgICAiVGhlIGxpbmUgdGVybWluYXRvciBpcyBhbHdheXMgYidcXG4nIGZvciBiaW5hcnkgZmlsZXM7IGZvciB0ZXh0XG4iCi0gICAgImZpbGVzLCB0aGUgbmV3bGluZXMgYXJndW1lbnQgdG8gb3BlbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIGxpbmVcbiIKLSAgICAidGVybWluYXRvcihzKSByZWNvZ25pemVkLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5yZWFkbGluZQorICAgIHNpemUgYXMgbGltaXQ6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBmcm9tIHRoZSBzdHJlYW0uCisKK0lmIHNpemUgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IHNpemUgYnl0ZXMgd2lsbCBiZSByZWFkLgorCitUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiJ1xuJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dAorZmlsZXMsIHRoZSBuZXdsaW5lcyBhcmd1bWVudCB0byBvcGVuIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgbGluZQordGVybWluYXRvcihzKSByZWNvZ25pemVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3JlYWRsaW5lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3JlYWRsaW5lX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgbGltaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQ3OWY3OWI1ODE4Nzg0MCBpbnB1dD1kZjRjYzg4ODRmNTUzY2FiXSovCiB7CiAgICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhIChzbG93aXNoKSByZWFkbGluZSgpLiAqLwogCi0gICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogICAgIGludCBoYXNfcGVlayA9IDA7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IG9sZF9zaXplID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIocGVlayk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChzZWxmLCAmUHlJZF9wZWVrKSkKICAgICAgICAgaGFzX3BlZWsgPSAxOwogCkBAIC01ODUsMjMgKzYzMiwyNSBAQAogICAgIHJldHVybiBsaW5lOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX3JlYWRsaW5lc19kb2MsCi0gICAgIlJldHVybiBhIGxpc3Qgb2YgbGluZXMgZnJvbSB0aGUgc3RyZWFtLlxuIgotICAgICJcbiIKLSAgICAiaGludCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubyBtb3JlXG4iCi0gICAgImxpbmVzIHdpbGwgYmUgcmVhZCBpZiB0aGUgdG90YWwgc2l6ZSAoaW4gYnl0ZXMvY2hhcmFjdGVycykgb2YgYWxsXG4iCi0gICAgImxpbmVzIHNvIGZhciBleGNlZWRzIGhpbnQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS5yZWFkbGluZXMKKyAgICBoaW50OiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JldHVybiBhIGxpc3Qgb2YgbGluZXMgZnJvbSB0aGUgc3RyZWFtLgorCitoaW50IGNhbiBiZSBzcGVjaWZpZWQgdG8gY29udHJvbCB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlYWQ6IG5vIG1vcmUKK2xpbmVzIHdpbGwgYmUgcmVhZCBpZiB0aGUgdG90YWwgc2l6ZSAoaW4gYnl0ZXMvY2hhcmFjdGVycykgb2YgYWxsCitsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3JlYWRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBoaW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJmNTA0MjE2NzdmYTNkZWEgaW5wdXQ9MTk2MWM0YTk1ZTk2ZTY2MV0qLwogewotICAgIFB5X3NzaXplX3QgaGludCA9IC0xLCBsZW5ndGggPSAwOworICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmVzIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQ2LDE0ICs2OTUsMTcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3dyaXRlbGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpsaW5lcywgKml0ZXIsICpyZXM7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0lPQmFzZS53cml0ZWxpbmVzCisgICAgbGluZXM6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp3cml0ZWxpbmVzIiwgJmxpbmVzKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfd3JpdGVsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmxpbmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3NmViMGE5YjYwYTY2MjggaW5wdXQ9NDMyZTcyOWE4NDUwYjNjYl0qLworeworICAgIFB5T2JqZWN0ICppdGVyLCAqcmVzOwogCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19jbG9zZWQoc2VsZiwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02ODgsMzEgKzc0MCwzMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaW5jbHVkZSAiY2xpbmljL2lvYmFzZS5jLmgiCisKIHN0YXRpYyBQeU1ldGhvZERlZiBpb2Jhc2VfbWV0aG9kc1tdID0gewogICAgIHsic2VlayIsIGlvYmFzZV9zZWVrLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV9zZWVrX2RvY30sCi0gICAgeyJ0ZWxsIiwgaW9iYXNlX3RlbGwsIE1FVEhfTk9BUkdTLCBpb2Jhc2VfdGVsbF9kb2N9LAorICAgIF9JT19fSU9CQVNFX1RFTExfTUVUSE9EREVGCiAgICAgeyJ0cnVuY2F0ZSIsIGlvYmFzZV90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBpb2Jhc2VfdHJ1bmNhdGVfZG9jfSwKLSAgICB7ImZsdXNoIiwgaW9iYXNlX2ZsdXNoLCBNRVRIX05PQVJHUywgaW9iYXNlX2ZsdXNoX2RvY30sCi0gICAgeyJjbG9zZSIsIGlvYmFzZV9jbG9zZSwgTUVUSF9OT0FSR1MsIGlvYmFzZV9jbG9zZV9kb2N9LAorICAgIF9JT19fSU9CQVNFX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX0NMT1NFX01FVEhPRERFRgogCi0gICAgeyJzZWVrYWJsZSIsIGlvYmFzZV9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIGlvYmFzZV9zZWVrYWJsZV9kb2N9LAotICAgIHsicmVhZGFibGUiLCBpb2Jhc2VfcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBpb2Jhc2VfcmVhZGFibGVfZG9jfSwKLSAgICB7IndyaXRhYmxlIiwgaW9iYXNlX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgaW9iYXNlX3dyaXRhYmxlX2RvY30sCisgICAgX0lPX19JT0JBU0VfU0VFS0FCTEVfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfV1JJVEFCTEVfTUVUSE9EREVGCiAKICAgICB7Il9jaGVja0Nsb3NlZCIsICAgX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZCwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2NoZWNrU2Vla2FibGUiLCBfUHlJT0Jhc2VfY2hlY2tfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9jaGVja1JlYWRhYmxlIiwgX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCiAgICAgeyJfY2hlY2tXcml0YWJsZSIsIF9QeUlPQmFzZV9jaGVja193cml0YWJsZSwgTUVUSF9OT0FSR1N9LAogCi0gICAgeyJmaWxlbm8iLCBpb2Jhc2VfZmlsZW5vLCBNRVRIX05PQVJHUywgaW9iYXNlX2ZpbGVub19kb2N9LAotICAgIHsiaXNhdHR5IiwgaW9iYXNlX2lzYXR0eSwgTUVUSF9OT0FSR1MsIGlvYmFzZV9pc2F0dHlfZG9jfSwKKyAgICBfSU9fX0lPQkFTRV9GSUxFTk9fTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfSVNBVFRZX01FVEhPRERFRgogCiAgICAgeyJfX2VudGVyX18iLCBpb2Jhc2VfZW50ZXIsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9fZXhpdF9fIiwgaW9iYXNlX2V4aXQsIE1FVEhfVkFSQVJHU30sCiAKLSAgICB7InJlYWRsaW5lIiwgaW9iYXNlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV9yZWFkbGluZV9kb2N9LAotICAgIHsicmVhZGxpbmVzIiwgaW9iYXNlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBpb2Jhc2VfcmVhZGxpbmVzX2RvY30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgaW9iYXNlX3dyaXRlbGluZXMsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX19JT0JBU0VfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfUkVBRExJTkVTX01FVEhPRERFRgorICAgIF9JT19fSU9CQVNFX1dSSVRFTElORVNfTUVUSE9EREVGCiAKICAgICB7TlVMTCwgTlVMTH0KIH07CkBAIC03OTUsMTUgKzg0OSwxNyBAQAogICogZWl0aGVyLikKICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1yYXdpb2Jhc2VfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7Ci0gICAgUHlPYmplY3QgKmIsICpyZXM7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX1Jhd0lPQmFzZS5yZWFkCisgICAgc2l6ZSBhcyBuOiBQeV9zc2l6ZV90ID0gLTEKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLCAmbikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjZGViNzMxZTNjOWYxM2MgaW5wdXQ9YjZkMGRjZjY0MTdkMTM3NF0qLworeworICAgIFB5T2JqZWN0ICpiLCAqcmVzOwogCiAgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWRhbGwpOwpAQCAtODM2LDExICs4OTIsMTUgQEAKIH0KIAogCi1QeURvY19TVFJWQVIocmF3aW9iYXNlX3JlYWRhbGxfZG9jLAotICAgICAgICAgICAgICJSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX1Jhd0lPQmFzZS5yZWFkYWxsCisKK1JlYWQgdW50aWwgRU9GLCB1c2luZyBtdWx0aXBsZSByZWFkKCkgY2FsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJhd2lvYmFzZV9yZWFkYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTg3YjljZTkyOTQyNWEwIGlucHV0PTY4ODg3NDE0MTIxMzYyMmFdKi8KIHsKICAgICBpbnQgcjsKICAgICBQeU9iamVjdCAqY2h1bmtzID0gUHlMaXN0X05ldygwKTsKQEAgLTg5Miw5ICs5NTIsMjUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcmF3aW9iYXNlX3JlYWRpbnRvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmF3aW9iYXNlX3dyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOworICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgcmF3aW9iYXNlX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCByYXdpb2Jhc2VfcmVhZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRhbGwiLCByYXdpb2Jhc2VfcmVhZGFsbCwgTUVUSF9OT0FSR1MsIHJhd2lvYmFzZV9yZWFkYWxsX2RvY30sCisgICAgX0lPX19SQVdJT0JBU0VfUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fX1JBV0lPQkFTRV9SRUFEQUxMX01FVEhPRERFRgorICAgIHsicmVhZGludG8iLCByYXdpb2Jhc2VfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCisgICAgeyJ3cml0ZSIsIHJhd2lvYmFzZV93cml0ZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCmluZGV4IDlkNzM4ODQuLjgzMTVhYjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKKysrIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwpAQCAtMTEsNiArMTEsMTIgQEAKICNkZWZpbmUgU1RBVEVfUkVBTElaRUQgMQogI2RlZmluZSBTVEFURV9BQ0NVTVVMQVRJTkcgMgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uU3RyaW5nSU8gInN0cmluZ2lvICoiICImUHlTdHJpbmdJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzE3YmMwZjQyMTY1Y2Q3ZF0qLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5X1VDUzQgKmJ1ZjsKQEAgLTM5LDYgKzQ1LDggQEAKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHN0cmluZ2lvOwogCitzdGF0aWMgaW50IF9pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpOworCiAjZGVmaW5lIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpIFwKICAgICBpZiAoc2VsZi0+b2sgPD0gMCkgeyBcCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBcCkBAIC01OCwxMiArNjYsNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsgXAogICAgIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX2RvYywKLSAgICAiVGV4dCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ1ZmZlci5cbiIKLSAgICAiXG4iCi0gICAgIlRoZSBpbml0aWFsX3ZhbHVlIGFyZ3VtZW50IHNldHMgdGhlIHZhbHVlIG9mIG9iamVjdC4gIFRoZSBuZXdsaW5lXG4iCi0gICAgImFyZ3VtZW50IGlzIGxpa2UgdGhlIG9uZSBvZiBUZXh0SU9XcmFwcGVyJ3MgY29uc3RydWN0b3IuIik7Ci0KIAogLyogSW50ZXJuYWwgcm91dGluZSBmb3IgY2hhbmdpbmcgdGhlIHNpemUsIGluIHRlcm1zIG9mIGNoYXJhY3RlcnMsIG9mIHRoZQogICAgYnVmZmVyIG9mIFN0cmluZ0lPIG9iamVjdHMuICBUaGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgJ3NpemUnCkBAIC0yNjQsMTEgKzI2NiwxNSBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX2dldHZhbHVlX2RvYywKLSAgICAiUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLmdldHZhbHVlCisKK1JldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX2dldHZhbHVlKHN0cmluZ2lvICpzZWxmKQorX2lvX1N0cmluZ0lPX2dldHZhbHVlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdiNmE3YmZlYWViY2UwMSBpbnB1dD1kMjNjYjgxZDY3OTFjZjg4XSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwpAQCAtMjc4LDMzICsyODQsNDAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb190ZWxsX2RvYywKLSAgICAiVGVsbCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnRlbGwKKworVGVsbCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fdGVsbChzdHJpbmdpbyAqc2VsZikKK19pb19TdHJpbmdJT190ZWxsX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmU4N2FjNjdiMTE2Yzc3YiBpbnB1dD1lYzg2NmViYWZmMDJmNDA1XSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3JlYWRfZG9jLAotICAgICJSZWFkIGF0IG1vc3QgbiBjaGFyYWN0ZXJzLCByZXR1cm5lZCBhcyBhIHN0cmluZy5cbiIKLSAgICAiXG4iCi0gICAgIklmIHRoZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRlxuIgotICAgICJpcyByZWFjaGVkLiBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGF0IEVPRi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnJlYWQKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgY2hhcmFjdGVycywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRgoraXMgcmVhY2hlZC4gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19yZWFkKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT19yZWFkX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzY3Njg2NDc3Mzc0NmY2OCBpbnB1dD05YTMxOTAxNWY2ZjM5NjVjXSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuOwogICAgIFB5X1VDUzQgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBpZiAoUHlOdW1iZXJfQ2hlY2soYXJnKSkgewpAQCAtMzczLDIwICszODYsMjMgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgc3RhcnQsIGxlbik7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19yZWFkbGluZV9kb2MsCi0gICAgIlJlYWQgdW50aWwgbmV3bGluZSBvciBFT0YuXG4iCi0gICAgIlxuIgotICAgICJSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBFT0YgaXMgaGl0IGltbWVkaWF0ZWx5LlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ucmVhZGxpbmUKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworUmVhZCB1bnRpbCBuZXdsaW5lIG9yIEVPRi4KKworUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgRU9GIGlzIGhpdCBpbW1lZGlhdGVseS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3JlYWRsaW5lKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5ZmRjYWMwM2EzZGVlODEgaW5wdXQ9ZTBlMGVkNDA0MjA0MDE3Nl0qLwogewotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmUiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIApAQCAtNDQxLDIyICs0NTcsMjUgQEAKICAgICByZXR1cm4gbGluZTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3RydW5jYXRlX2RvYywKLSAgICAiVHJ1bmNhdGUgc2l6ZSB0byBwb3MuXG4iCi0gICAgIlxuIgotICAgICJUaGUgcG9zIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzXG4iCi0gICAgInJldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLlxuIgotICAgICJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy50cnVuY2F0ZQorICAgIHBvcyBhcyBhcmc6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1RydW5jYXRlIHNpemUgdG8gcG9zLgorCitUaGUgcG9zIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzCityZXR1cm5lZCBieSB0ZWxsKCkuICBUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4KK1JldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3RydW5jYXRlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwNzI0MzljMmIwMWQzMDYgaW5wdXQ9NzQ4NjE5YTQ5NGJhNTNhZF0qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKQEAgLTQ5MCw0OSArNTA5LDUxIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3NlZWtfZG9jLAotICAgICJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgotICAgICJcbiIKLSAgICAiU2VlayB0byBjaGFyYWN0ZXIgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOlxuIgotICAgICIgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCi0gICAgIiAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG11c3QgYmUgMDtcbiIKLSAgICAiICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgbXVzdCBiZSAwLlxuIgotICAgICJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5zZWVrCisgICAgcG9zOiBQeV9zc2l6ZV90CisgICAgd2hlbmNlOiBpbnQgPSAwCisgICAgLworCitDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLgorCitTZWVrIHRvIGNoYXJhY3RlciBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6CisgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7CisgICAgMSAgQ3VycmVudCBwb3NpdGlvbiAtIHBvcyBtdXN0IGJlIDA7CisgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyBtdXN0IGJlIDAuCitSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19zZWVrKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT19zZWVrX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5ZTBhYzlhOGFlNzFjMjUgaW5wdXQ9ZTM4NTViMjRlN2NhZTA2YV0qLwogewotICAgIFB5X3NzaXplX3QgcG9zOwotICAgIGludCBtb2RlID0gMDsKLQogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLCAmcG9zLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmIChtb2RlICE9IDAgJiYgbW9kZSAhPSAxICYmIG1vZGUgIT0gMikgeworICAgIGlmICh3aGVuY2UgIT0gMCAmJiB3aGVuY2UgIT0gMSAmJiB3aGVuY2UgIT0gMikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgbW9kZSk7CisgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCB3aGVuY2UgKCVpLCBzaG91bGQgYmUgMCwgMSBvciAyKSIsIHdoZW5jZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIGlmIChwb3MgPCAwICYmIG1vZGUgPT0gMCkgeworICAgIGVsc2UgaWYgKHBvcyA8IDAgJiYgd2hlbmNlID09IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2VlayBwb3NpdGlvbiAlemQiLCBwb3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSBpZiAobW9kZSAhPSAwICYmIHBvcyAhPSAwKSB7CisgICAgZWxzZSBpZiAod2hlbmNlICE9IDAgJiYgcG9zICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZG8gbm9uemVybyBjdXItcmVsYXRpdmUgc2Vla3MiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogbW9kZSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCi0gICAgICAgbW9kZSAxOiBubyBjaGFuZ2UgdG8gY3VycmVudCBwb3NpdGlvbi4KLSAgICAgICBtb2RlIDI6IGNoYW5nZSBwb3NpdGlvbiB0byBlbmQgb2YgZmlsZS4gKi8KLSAgICBpZiAobW9kZSA9PSAxKSB7CisgICAgLyogd2hlbmNlID0gMDogb2Zmc2V0IHJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgICAgIHdoZW5jZSA9IDE6IG5vIGNoYW5nZSB0byBjdXJyZW50IHBvc2l0aW9uLgorICAgICAgIHdoZW5jZSA9IDI6IGNoYW5nZSBwb3NpdGlvbiB0byBlbmQgb2YgZmlsZS4gKi8KKyAgICBpZiAod2hlbmNlID09IDEpIHsKICAgICAgICAgcG9zID0gc2VsZi0+cG9zOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlID09IDIpIHsKKyAgICBlbHNlIGlmICh3aGVuY2UgPT0gMikgewogICAgICAgICBwb3MgPSBzZWxmLT5zdHJpbmdfc2l6ZTsKICAgICB9CiAKQEAgLTU0MSwxNCArNTYyLDIwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fd3JpdGVfZG9jLAotICAgICJXcml0ZSBzdHJpbmcgdG8gZmlsZS5cbiIKLSAgICAiXG4iCi0gICAgIlJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4sIHdoaWNoIGlzIGFsd2F5cyBlcXVhbCB0b1xuIgotICAgICJ0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy53cml0ZQorICAgIHMgYXMgb2JqOiBvYmplY3QKKyAgICAvCisKK1dyaXRlIHN0cmluZyB0byBmaWxlLgorCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLCB3aGljaCBpcyBhbHdheXMgZXF1YWwgdG8KK3RoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3dyaXRlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQorX2lvX1N0cmluZ0lPX3dyaXRlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkZWFiYTkxYTE1Yjk0ZGEgaW5wdXQ9Y2Y5NmYzYjE2NTg2ZTY2OV0qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIApAQCAtNTY5LDE0ICs1OTYsMjAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fY2xvc2VfZG9jLAotICAgICJDbG9zZSB0aGUgSU8gb2JqZWN0LiBBdHRlbXB0aW5nIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBhZnRlciB0aGVcbiIKLSAgICAib2JqZWN0IGlzIGNsb3NlZCB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci5cbiIKLSAgICAiXG4iCi0gICAgIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5jbG9zZQorCitDbG9zZSB0aGUgSU8gb2JqZWN0LgorCitBdHRlbXB0aW5nIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBhZnRlciB0aGUgb2JqZWN0IGlzIGNsb3NlZAord2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuCisKK1RoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19jbG9zZShzdHJpbmdpbyAqc2VsZikKK19pb19TdHJpbmdJT19jbG9zZV9pbXBsKHN0cmluZ2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0Mzk5MzU1Y2JlNTE4ZjEgaW5wdXQ9Y2JjMTBiNDVmMzVkNmQ0Nl0qLwogewogICAgIHNlbGYtPmNsb3NlZCA9IDE7CiAgICAgLyogRnJlZSB1cCBzb21lIG1lbW9yeSAqLwpAQCAtNjQ0LDE5ICs2NzcsMjUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLl9faW5pdF9fCisgICAgaW5pdGlhbF92YWx1ZSBhcyB2YWx1ZTogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gJycKKyAgICBuZXdsaW5lIGFzIG5ld2xpbmVfb2JqOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAnXG4nCisKK1RleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuCisKK1RoZSBpbml0aWFsX3ZhbHVlIGFyZ3VtZW50IHNldHMgdGhlIHZhbHVlIG9mIG9iamVjdC4gIFRoZSBuZXdsaW5lCithcmd1bWVudCBpcyBsaWtlIHRoZSBvbmUgb2YgVGV4dElPV3JhcHBlcidzIGNvbnN0cnVjdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1zdHJpbmdpb19pbml0KHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fU3RyaW5nSU9fX19pbml0X19faW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0MjFlYTAyM2IyMmVmNGUgaW5wdXQ9Y2VlMmQ5MTgxYjI1NzdhM10qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJpbml0aWFsX3ZhbHVlIiwgIm5ld2xpbmUiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAgICAgY2hhciAqbmV3bGluZSA9ICJcbiI7CiAgICAgUHlfc3NpemVfdCB2YWx1ZV9sZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9POl9faW5pdF9fIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgLyogUGFyc2UgdGhlIG5ld2xpbmUgYXJndW1lbnQuIFRoaXMgdXNlZCB0byBiZSBkb25lIHdpdGggdGhlICd6JwogICAgICAgIHNwZWNpZmllciwgaG93ZXZlciB0aGlzIGFsbG93ZWQgYW55IG9iamVjdCB3aXRoIHRoZSBidWZmZXIgaW50ZXJmYWNlIHRvCiAgICAgICAgYmUgY29udmVydGVkLiBUaHVzIHdlIGhhdmUgdG8gcGFyc2UgaXQgbWFudWFsbHkgc2luY2Ugd2Ugb25seSB3YW50IHRvCkBAIC03NjEsMzMgKzgwMCw0NSBAQAogCiAvKiBQcm9wZXJ0aWVzIGFuZCBwc2V1ZG8tcHJvcGVydGllcyAqLwogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ucmVhZGFibGUKIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3dyaXRhYmxlX2RvYywKLSJ3cml0YWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOwotCi1QeURvY19TVFJWQVIoc3RyaW5naW9fc2Vla2FibGVfZG9jLAotInNlZWthYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fc2Vla2FibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRhYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjE5ZDQ0ZGQ4YjFjZWI5OSBpbnB1dD0zOWNlMDY4YjIyNGMyMWFkXSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ud3JpdGFibGUKKworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19yZWFkYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fd3JpdGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xM2U0ZGQ3NzE4NzA3NGNhIGlucHV0PTdhNjkxMzUzYWFjMzg4MzVdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5zZWVrYWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fd3JpdGFibGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQyMGI0NjQxYzc1Njg3OSBpbnB1dD00YzYwNmQwNWIzMjk1MmU2XSovCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwpAQCAtODA5LDcgKzg2MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5naW9fZ2V0c3RhdGUoc3RyaW5naW8gKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IHN0cmluZ2lvX2dldHZhbHVlKHNlbGYpOworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKQEAgLTg1Nyw3ICs5MDgsNyBAQAogICAgIGluaXRhcmcgPSBQeVR1cGxlX0dldFNsaWNlKHN0YXRlLCAwLCAyKTsKICAgICBpZiAoaW5pdGFyZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc3RyaW5naW9faW5pdChzZWxmLCBpbml0YXJnLCBOVUxMKSA8IDApIHsKKyAgICBpZiAoX2lvX1N0cmluZ0lPX19faW5pdF9fKChQeU9iamVjdCAqKXNlbGYsIGluaXRhcmcsIE5VTEwpIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoaW5pdGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk1OSwxOSArMTAxMCwyMSBAQAogICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyKHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9uZXdsaW5lcyk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgc3RyaW5naW9fbWV0aG9kc1tdID0gewotICAgIHsiY2xvc2UiLCAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fY2xvc2UsICAgIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fY2xvc2VfZG9jfSwKLSAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX2dldHZhbHVlLCBNRVRIX05PQVJHUywgIHN0cmluZ2lvX2dldHZhbHVlX2RvY30sCi0gICAgeyJyZWFkIiwgICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkLCAgICAgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb19yZWFkX2RvY30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb19yZWFkbGluZV9kb2N9LAotICAgIHsidGVsbCIsICAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fdGVsbCwgICAgIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fdGVsbF9kb2N9LAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgc3RyaW5naW9fdHJ1bmNhdGVfZG9jfSwKLSAgICB7InNlZWsiLCAgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3NlZWssICAgICBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3NlZWtfZG9jfSwKLSAgICB7IndyaXRlIiwgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3dyaXRlLCAgICBNRVRIX08sICAgICAgIHN0cmluZ2lvX3dyaXRlX2RvY30sCisjaW5jbHVkZSAiY2xpbmljL3N0cmluZ2lvLmMuaCIKIAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fc2Vla2FibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb19zZWVrYWJsZV9kb2N9LAotICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb19yZWFkYWJsZV9kb2N9LAotICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBzdHJpbmdpb193cml0YWJsZV9kb2N9LAorc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBzdHJpbmdpb19tZXRob2RzW10gPSB7CisgICAgX0lPX1NUUklOR0lPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19HRVRWQUxVRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1RFTExfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1RSVU5DQVRFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19TRUVLX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19XUklURV9NRVRIT0RERUYKKworICAgIF9JT19TVFJJTkdJT19TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1dSSVRBQkxFX01FVEhPRERFRgogCiAgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19zZXRzdGF0ZSwgTUVUSF9PfSwKQEAgLTEwMTMsNyArMTA2Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLwotICAgIHN0cmluZ2lvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgX2lvX1N0cmluZ0lPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgIC8qdHBfZG9jKi8KICAgICAodHJhdmVyc2Vwcm9jKXN0cmluZ2lvX3RyYXZlcnNlLCAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCiAgICAgKGlucXVpcnkpc3RyaW5naW9fY2xlYXIsICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KQEAgLTEwMjgsNyArMTA4MSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwogICAgIG9mZnNldG9mKHN0cmluZ2lvLCBkaWN0KSwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylzdHJpbmdpb19pbml0LCAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIF9pb19TdHJpbmdJT19fX2luaXRfXywgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KICAgICBzdHJpbmdpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3RleHRpby5jIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKaW5kZXggYjQxOTI3NS4uYzk2MmMwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vdGV4dGlvLmMKKysrIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKQEAgLTExLDYgKzExLDIwIEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyICJubGRlY29kZXJfb2JqZWN0ICoiICImUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUiCitjbGFzcyBfaW8uVGV4dElPV3JhcHBlciAidGV4dGlvICoiICImVGV4dElPV3JhcHBlcl9UWXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjA5N2E0ZmM4NTY3MGMyNl0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCiBfUHlfSURFTlRJRklFUihjbG9zZSk7CiBfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKIF9QeV9JREVOVElGSUVSKGRlY29kZSk7CkBAIC0yMTAsMzggKzIyNCwzNyBAQAogCiAvKiBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyICovCiAKLVB5RG9jX1NUUlZBUihpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RvYywKLSAgICAiQ29kZWMgdXNlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLiAgSXQgd3JhcHNcbiIKLSAgICAiYW5vdGhlciBpbmNyZW1lbnRhbCBkZWNvZGVyLCB0cmFuc2xhdGluZyBcXHJcXG4gYW5kIFxcciBpbnRvIFxcbi4gIEl0IGFsc29cbiIKLSAgICAicmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aFxuIgotICAgICJ0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpblxuIgotICAgICJvbmUgcGllY2UuIFdoZW4gdXNlZCB3aXRoIGRlY29kZXI9Tm9uZSwgaXQgZXhwZWN0cyB1bmljb2RlIHN0cmluZ3MgYXNcbiIKLSAgICAiZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWxcbiIKLSAgICAiZGVjb2Rlci5cbiIKLSAgICApOwotCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIFB5T2JqZWN0ICplcnJvcnM7Ci0gICAgc2lnbmVkIGludCBwZW5kaW5nY3I6IDE7Ci0gICAgc2lnbmVkIGludCB0cmFuc2xhdGU6IDE7CisgICAgdW5zaWduZWQgaW50IHBlbmRpbmdjcjogMTsKKyAgICB1bnNpZ25lZCBpbnQgdHJhbnNsYXRlOiAxOwogICAgIHVuc2lnbmVkIGludCBzZWVubmw6IDM7CiB9IG5sZGVjb2Rlcl9vYmplY3Q7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLl9faW5pdF9fCisgICAgZGVjb2Rlcjogb2JqZWN0CisgICAgdHJhbnNsYXRlOiBpbnQKKyAgICBlcnJvcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJzdHJpY3QiCisKK0NvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS4KKworSXQgd3JhcHMgYW5vdGhlciBpbmNyZW1lbnRhbCBkZWNvZGVyLCB0cmFuc2xhdGluZyBcclxuIGFuZCBcciBpbnRvIFxuLgorSXQgYWxzbyByZWNvcmRzIHRoZSB0eXBlcyBvZiBuZXdsaW5lcyBlbmNvdW50ZXJlZC4gIFdoZW4gdXNlZCB3aXRoCit0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpbgorb25lIHBpZWNlLiBXaGVuIHVzZWQgd2l0aCBkZWNvZGVyPU5vbmUsIGl0IGV4cGVjdHMgdW5pY29kZSBzdHJpbmdzIGFzCitkZWNvZGUgaW5wdXQgYW5kIHRyYW5zbGF0ZXMgbmV3bGluZXMgd2l0aG91dCBmaXJzdCBpbnZva2luZyBhbiBleHRlcm5hbAorZGVjb2Rlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIGludAotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9pbml0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19faW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVjb2RlciwgaW50IHRyYW5zbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYmQwNGQ0NDNlNzY0ZWMyIGlucHV0PTg5ZGI2YjE5YzZiMTI2YmZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVjb2RlcjsKLSAgICBpbnQgdHJhbnNsYXRlOwotICAgIFB5T2JqZWN0ICplcnJvcnMgPSBOVUxMOwotICAgIGNoYXIgKmt3bGlzdFtdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBzZWxmLT5kZWNvZGVyID0gZGVjb2RlcjsKICAgICBQeV9JTkNSRUYoZGVjb2Rlcik7CiAKQEAgLTQ5NSwyMiArNTA4LDI3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICppbnB1dDsKLSAgICBpbnQgZmluYWwgPSAwOworLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuZGVjb2RlCisgICAgaW5wdXQ6IG9iamVjdAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98aTpJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZpbnB1dCwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkNDg2NzU1YmIzN2E2NmUgaW5wdXQ9ZDY1Njc3Mzg1YmZkNjgyN10qLworewogICAgIHJldHVybiBfUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSgoUHlPYmplY3QgKikgc2VsZiwgaW5wdXQsIGZpbmFsKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuZ2V0c3RhdGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjBkMmM5YzEzNmY0ZTBkMCBpbnB1dD1mOGZmMTAxODI1ZTMyZTdmXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKQEAgLTUyMCw3ICs1MzgsNyBAQAogICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwogICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHN0YXRlLCAiKE9LKSIsICZidWZmZXIsICZmbGFnKSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPSyIsICZidWZmZXIsICZmbGFnKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC01MzcsMTYgKzU1NSwyNCBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSyIsIGJ1ZmZlciwgZmxhZyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLnNldHN0YXRlCisgICAgc3RhdGU6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfc2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfc2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTBjNjIyNTA4YjU3NmNiIGlucHV0PWM1M2ZiNTA1YTc2ZGJiZTJdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIihPSykiLCAmYnVmZmVyLCAmZmxhZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT0siLCAmYnVmZmVyLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2VsZi0+cGVuZGluZ2NyID0gKGludCkgZmxhZyAmIDE7CisgICAgc2VsZi0+cGVuZGluZ2NyID0gKGludCkgKGZsYWcgJiAxKTsKICAgICBmbGFnID4+PSAxOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkKQEAgLTU1Niw4ICs1ODIsMTMgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX3Jlc2V0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyZmE0MGM3NDYyYWE4ZmYgaW5wdXQ9NzI4Njc4ZGRhZWE3NzZkZl0qLwogewogICAgIHNlbGYtPnNlZW5ubCA9IDA7CiAgICAgc2VsZi0+cGVuZGluZ2NyID0gMDsKQEAgLTU5MSw5NSArNjIyLDggQEAKIAogfQogCi0KLXN0YXRpYyBQeU1ldGhvZERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiZ2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAotICAgIHsic2V0c3RhdGUiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9zZXRzdGF0ZSwgTUVUSF9PfSwKLSAgICB7InJlc2V0IiwgKFB5Q0Z1bmN0aW9uKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfcmVzZXQsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldFtdID0gewotICAgIHsibmV3bGluZXMiLCAoZ2V0dGVyKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbmV3bGluZXNfZ2V0LCBOVUxMLCBOVUxMfSwKLSAgICB7TlVMTH0KLX07Ci0KLVB5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCAvKnRwX25hbWUqLwotICAgIHNpemVvZihubGRlY29kZXJfb2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c2V0LCAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYylpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotCi0KIC8qIFRleHRJT1dyYXBwZXIgKi8KIAotUHlEb2NfU1RSVkFSKHRleHRpb3dyYXBwZXJfZG9jLAotICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgotICAgICJcbiIKLSAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgotICAgICJcbiIKLSAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWVcbiIKLSAgICAiaGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZFxuIgotICAgICJkZWZhdWx0cyB0byBcInN0cmljdFwiLlxuIgotICAgICJcbiIKLSAgICAibmV3bGluZSBjb250cm9scyBob3cgbGluZSBlbmRpbmdzIGFyZSBoYW5kbGVkLiBJdCBjYW4gYmUgTm9uZSwgJycsXG4iCi0gICAgIidcXG4nLCAnXFxyJywgYW5kICdcXHJcXG4nLiAgSXQgd29ya3MgYXMgZm9sbG93czpcbiIKLSAgICAiXG4iCi0gICAgIiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXNcbiIKLSAgICAiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiAnXFxuJywgJ1xccicsIG9yICdcXHJcXG4nLCBhbmRcbiIKLSAgICAiICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKLSAgICAiICBjYWxsZXIuIElmIGl0IGlzICcnLCB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGlzIGVuYWJsZWQsIGJ1dCBsaW5lXG4iCi0gICAgIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKLSAgICAiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgotICAgICIgIHN0cmluZywgYW5kIHRoZSBsaW5lIGVuZGluZyBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC5cbiIKLSAgICAiXG4iCi0gICAgIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXFxuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlXG4iCi0gICAgIiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmXG4iCi0gICAgIiAgbmV3bGluZSBpcyAnJyBvciAnXFxuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCi0gICAgIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZFxuIgotICAgICIgIHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4iCi0gICAgIlxuIgotICAgICJJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0b1xuIgotICAgICJ3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLiIKLSAgICApOwotCiB0eXBlZGVmIFB5T2JqZWN0ICoKICAgICAgICAgKCplbmNvZGVmdW5jX3QpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCkBAIC03NDIsNyArNjg2LDYgQEAKICAgICBQeU9iamVjdCAqZGljdDsKIH0gdGV4dGlvOwogCi0KIC8qIEEgY291cGxlIG9mIHNwZWNpYWxpemVkIGNhc2VzIGluIG9yZGVyIHRvIGJ5cGFzcyB0aGUgc2xvdyBpbmNyZW1lbnRhbAogICAgZW5jb2RpbmcgbWV0aG9kcyBmb3IgdGhlIG1vc3QgcG9wdWxhciBlbmNvZGluZ3MuICovCiAKQEAgLTg0MywyOCArNzg2LDU5IEBACiB9OwogCiAKLXN0YXRpYyBpbnQKLXRleHRpb3dyYXBwZXJfaW5pdCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsCi0gICAgICAgICAgICAgICAgICAgICAgTlVMTH07Ci0gICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJhdywgKmNvZGVjX2luZm8gPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGNoYXIgKm5ld2xpbmUgPSBOVUxMOwotICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDAsIHdyaXRlX3Rocm91Z2ggPSAwOwotICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5fX2luaXRfXworICAgIGJ1ZmZlcjogb2JqZWN0CisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBuZXdsaW5lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbGluZV9idWZmZXJpbmc6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd3JpdGVfdGhyb3VnaDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKIAorQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci4KKworZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlCitkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS4KKworZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUKK2hlbHAoY29kZWNzLkNvZGVjKSBvciB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY29kZWNzLnJlZ2lzdGVyKSBhbmQKK2RlZmF1bHRzIHRvICJzdHJpY3QiLgorCituZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCAnJywKKydcbicsICdccicsIGFuZCAnXHJcbicuICBJdCB3b3JrcyBhcyBmb2xsb3dzOgorCisqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzCisgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluICdcbicsICdccicsIG9yICdcclxuJywgYW5kCisgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xuJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlCisgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmUKKyAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2YKKyAgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgaW5wdXQgbGluZXMgYXJlIG9ubHkgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4KKyAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLgorCisqIE9uIG91dHB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlCisgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZgorICBuZXdsaW5lIGlzICcnIG9yICdcbicsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueQorICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWQKKyAgdG8gdGhlIGdpdmVuIHN0cmluZy4KKworSWYgbGluZV9idWZmZXJpbmcgaXMgVHJ1ZSwgYSBjYWxsIHRvIGZsdXNoIGlzIGltcGxpZWQgd2hlbiBhIGNhbGwgdG8KK3dyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgbGluZV9idWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3cml0ZV90aHJvdWdoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2YTgzNDAyY2UyYTgzODEgaW5wdXQ9MzEyNmNiMzEwMWEyYzk5Yl0qLworeworICAgIFB5T2JqZWN0ICpyYXcsICpjb2RlY19pbmZvID0gTlVMTDsKKyAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IHI7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHp6emlpOmZpbGVpbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKQotICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAobmV3bGluZSAmJiBuZXdsaW5lWzBdICE9ICdcMCcKICAgICAgICAgJiYgIShuZXdsaW5lWzBdID09ICdcbicgJiYgbmV3bGluZVsxXSA9PSAnXDAnKQpAQCAtMTI0NCw4ICsxMjE4LDEzIEBACiAgICAgfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmRldGFjaAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9kZXRhY2godGV4dGlvICpzZWxmKQorX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiYTM3MTVjZDAzMmQ1ZjIgaW5wdXQ9ZTVhNzFmYmRhOWUxZDlmOV0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXIsICpyZXM7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CkBAIC0xMjkwLDI1ICsxMjY5LDI2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLndyaXRlCisgICAgdGV4dDogdW5pY29kZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfd3JpdGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMmRlYjBkNTA3NzFmY2VjIGlucHV0PWZkZjE5MTUzNTg0YTBlNDRdKi8KIHsKICAgICBQeU9iamVjdCAqcmV0OwotICAgIFB5T2JqZWN0ICp0ZXh0OyAvKiBvd25lZCByZWZlcmVuY2UgKi8KICAgICBQeU9iamVjdCAqYjsKICAgICBQeV9zc2l6ZV90IHRleHRsZW47CiAgICAgaW50IGhhc2xmID0gMDsKICAgICBpbnQgbmVlZGZsdXNoID0gMCwgdGV4dF9uZWVkZmx1c2ggPSAwOwogCi0gICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6d3JpdGUiLCAmdGV4dCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0ZXh0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBpZiAoc2VsZi0+ZW5jb2RlciA9PSBOVUxMKQpAQCAtMTQ0MSw2ICsxNDIxLDcgQEAKICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY19mbGFncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmlucHV0X2NodW5rID0gTlVMTDsKKyAgICBQeV9idWZmZXIgaW5wdXRfY2h1bmtfYnVmOwogICAgIFB5T2JqZWN0ICpkZWNvZGVkX2NoYXJzLCAqY2h1bmtfc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ieXRlcywgbmNoYXJzOwogICAgIGludCBlb2Y7CkBAIC0xNDY4LDcgKzE0NDksMTYgQEAKICAgICAgICAgLyogR2l2ZW4gdGhpcywgd2Uga25vdyB0aGVyZSB3YXMgYSB2YWxpZCBzbmFwc2hvdCBwb2ludAogICAgICAgICAgKiBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYWdvIHdpdGggZGVjb2RlciBzdGF0ZSAoYicnLCBkZWNfZmxhZ3MpLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKFB5QXJnX1BhcnNlKHN0YXRlLCAiKE9PKSIsICZkZWNfYnVmZmVyLCAmZGVjX2ZsYWdzKSA8IDApIHsKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPTyIsICZkZWNfYnVmZmVyLCAmZGVjX2ZsYWdzKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGVjX2J1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlY29kZXIgZ2V0c3RhdGUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0LCBub3QgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVjX2J1ZmZlciktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtMTQ4NCwyMyArMTQ3NCwyNCBAQAogICAgIGNodW5rX3NpemUgPSBQeUxvbmdfRnJvbVNzaXplX3QoUHlfTUFYKHNlbGYtPmNodW5rX3NpemUsIHNpemVfaGludCkpOwogICAgIGlmIChjaHVua19zaXplID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKKwogICAgIGlucHV0X2NodW5rID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+YnVmZmVyLAogICAgICAgICAoc2VsZi0+aGFzX3JlYWQxID8gX1B5SU9fc3RyX3JlYWQxOiBfUHlJT19zdHJfcmVhZCksCiAgICAgICAgIGNodW5rX3NpemUsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihjaHVua19zaXplKTsKICAgICBpZiAoaW5wdXRfY2h1bmsgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmICghUHlCeXRlc19DaGVjayhpbnB1dF9jaHVuaykpIHsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoaW5wdXRfY2h1bmssICZpbnB1dF9jaHVua19idWYsIDApICE9IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bmRlcmx5aW5nICVzKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICJ1bmRlcmx5aW5nICVzKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcy1saWtlIG9iamVjdCwgIgogICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIChzZWxmLT5oYXNfcmVhZDEgPyAicmVhZDEiOiAicmVhZCIpLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpbnB1dF9jaHVuayktPnRwX25hbWUpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCi0gICAgbmJ5dGVzID0gUHlCeXRlc19TaXplKGlucHV0X2NodW5rKTsKKyAgICBuYnl0ZXMgPSBpbnB1dF9jaHVua19idWYubGVuOwogICAgIGVvZiA9IChuYnl0ZXMgPT0gMCk7Ci0KICAgICBpZiAoUHlfVFlQRShzZWxmLT5kZWNvZGVyKSA9PSAmUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUpIHsKICAgICAgICAgZGVjb2RlZF9jaGFycyA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKAogICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgaW5wdXRfY2h1bmssIGVvZik7CkBAIC0xNTA5LDYgKzE1MDAsNyBAQAogICAgICAgICBkZWNvZGVkX2NoYXJzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKICAgICAgICAgICAgIF9QeUlPX3N0cl9kZWNvZGUsIGlucHV0X2NodW5rLCBlb2YgPyBQeV9UcnVlIDogUHlfRmFsc2UsIE5VTEwpOwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dF9jaHVua19idWYpOwogCiAgICAgaWYgKGNoZWNrX2RlY29kZWQoZGVjb2RlZF9jaGFycykgPCAwKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0xNTI1LDE4ICsxNTE3LDEyIEBACiAgICAgICAgIC8qIEF0IHRoZSBzbmFwc2hvdCBwb2ludCwgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGJlZm9yZSB0aGUgcmVhZCwgdGhlCiAgICAgICAgICAqIG5leHQgaW5wdXQgdG8gYmUgZGVjb2RlZCBpcyBkZWNfYnVmZmVyICsgaW5wdXRfY2h1bmsuCiAgICAgICAgICAqLwotICAgICAgICBQeU9iamVjdCAqbmV4dF9pbnB1dCA9IFB5TnVtYmVyX0FkZChkZWNfYnVmZmVyLCBpbnB1dF9jaHVuayk7Ci0gICAgICAgIGlmIChuZXh0X2lucHV0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhuZXh0X2lucHV0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2lucHV0KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pbnB1dCk7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0X2lucHV0ID0gZGVjX2J1ZmZlcjsKKyAgICAgICAgUHlCeXRlc19Db25jYXQoJm5leHRfaW5wdXQsIGlucHV0X2NodW5rKTsKKyAgICAgICAgaWYgKG5leHRfaW5wdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgZGVjX2J1ZmZlciA9IE5VTEw7IC8qIFJlZmVyZW5jZSBsb3N0IHRvIFB5Qnl0ZXNfQ29uY2F0ICovCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGRlY19idWZmZXIpOwogICAgICAgICBQeV9DTEVBUihzZWxmLT5zbmFwc2hvdCk7CiAgICAgICAgIHNlbGYtPnNuYXBzaG90ID0gUHlfQnVpbGRWYWx1ZSgiTk4iLCBkZWNfZmxhZ3MsIG5leHRfaW5wdXQpOwogICAgIH0KQEAgLTE1NTEsMTcgKzE1MzcsMTkgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWQKKyAgICBzaXplIGFzIG46IGlvX3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdlNjUxY2U2Y2M2YTI1YTYgaW5wdXQ9OGMwOTM5ODQyNDA4NWNjYV0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IC0xOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqY2h1bmtzID0gTlVMTDsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyID09IE5VTEwpCkBAIC0xNzI1LDcgKzE3MTMsNyBAQAogICAgIGVsc2UgewogICAgICAgICAvKiBOb24tdW5pdmVyc2FsIG1vZGUuICovCiAgICAgICAgIFB5X3NzaXplX3QgcmVhZG5sX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlYWRubCk7Ci0gICAgICAgIGNoYXIgKm5sID0gUHlVbmljb2RlX0RBVEEocmVhZG5sKTsKKyAgICAgICAgUHlfVUNTMSAqbmwgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZWFkbmwpOwogICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLwogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKQEAgLTE5MjcsMTYgKzE5MTUsMTggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZGxpbmUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5yZWFkbGluZQorICAgIHNpemU6IFB5X3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAorc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQ0YWZhOTg4MDRlOGIyNSBpbnB1dD01NmM3MTcyNDgzYjM2ZGI2XSovCit7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsICZsaW1pdCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBfdGV4dGlvd3JhcHBlcl9yZWFkbGluZShzZWxmLCBsaW1pdCk7CisgICAgcmV0dXJuIF90ZXh0aW93cmFwcGVyX3JlYWRsaW5lKHNlbGYsIHNpemUpOwogfQogCiAvKiBTZWVrIGFuZCBUZWxsICovCkBAIC0yMDY4LDE5ICsyMDU4LDIzIEBACiAgICAgICAgIHNlbGYsIGNvb2tpZS0+c3RhcnRfcG9zID09IDAgJiYgY29va2llLT5kZWNfZmxhZ3MgPT0gMCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnNlZWsKKyAgICBjb29raWUgYXMgY29va2llT2JqOiBvYmplY3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3NlZWsodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpjb29raWVPYmosIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGExNTY3OTc2NGUyZDA0ZCBpbnB1dD0wNDU4YWJlYjNkNzg0MmJlXSovCiB7Ci0gICAgUHlPYmplY3QgKmNvb2tpZU9iaiwgKnBvc29iajsKKyAgICBQeU9iamVjdCAqcG9zb2JqOwogICAgIGNvb2tpZV90eXBlIGNvb2tpZTsKLSAgICBpbnQgd2hlbmNlID0gMDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGludCBjbXA7CiAKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLCAmY29va2llT2JqLCAmd2hlbmNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgUHlfSU5DUkVGKGNvb2tpZU9iaik7CkBAIC0yMjUyLDggKzIyNDYsMTMgQEAKIAogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci50ZWxsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3RlbGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3RlbGxfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGYxNjhjMDhiZjM0YWQ1ZiBpbnB1dD05YTJjYWY4OGMyNGY5ZGRmXSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBQeU9iamVjdCAqcG9zb2JqID0gTlVMTDsKQEAgLTIyNjMsNyArMjI2Miw2IEBACiAgICAgUHlfc3NpemVfdCBza2lwX2J5dGVzLCBza2lwX2JhY2s7CiAgICAgUHlPYmplY3QgKnNhdmVkX3N0YXRlID0gTlVMTDsKICAgICBjaGFyICppbnB1dCwgKmlucHV0X2VuZDsKLSAgICBjaGFyICpkZWNfYnVmZmVyOwogICAgIFB5X3NzaXplX3QgZGVjX2J1ZmZlcl9sZW47CiAgICAgaW50IGRlY19mbGFnczsKIApAQCAtMjMwNiw3ICsyMzA0LDcgQEAKICAgICAgICAgZ290byBmYWlsOwogCiAgICAgLyogU2tpcCBiYWNrd2FyZCB0byB0aGUgc25hcHNob3QgcG9pbnQgKHNlZSBfcmVhZF9jaHVuaykuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZShzZWxmLT5zbmFwc2hvdCwgIihpTykiLCAmY29va2llLmRlY19mbGFncywgJm5leHRfaW5wdXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzZWxmLT5zbmFwc2hvdCwgImlPIiwgJmNvb2tpZS5kZWNfZmxhZ3MsICZuZXh0X2lucHV0KSkKICAgICAgICAgZ290byBmYWlsOwogCiAgICAgYXNzZXJ0IChQeUJ5dGVzX0NoZWNrKG5leHRfaW5wdXQpKTsKQEAgLTIzMjgsMTQgKzIzMjYsMjQgQEAKICAgICAgICAgZ290byBmYWlsOwogCiAjZGVmaW5lIERFQ09ERVJfR0VUU1RBVEUoKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKmRlY19idWZmZXI7IFwKICAgICAgICAgUHlPYmplY3QgKl9zdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsIFwKICAgICAgICAgICAgIF9QeUlPX3N0cl9nZXRzdGF0ZSwgTlVMTCk7IFwKICAgICAgICAgaWYgKF9zdGF0ZSA9PSBOVUxMKSBcCiAgICAgICAgICAgICBnb3RvIGZhaWw7IFwKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShfc3RhdGUsICIoeSNpKSIsICZkZWNfYnVmZmVyLCAmZGVjX2J1ZmZlcl9sZW4sICZkZWNfZmxhZ3MpKSB7IFwKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKF9zdGF0ZSwgIk9pIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpKSB7IFwKICAgICAgICAgICAgIFB5X0RFQ1JFRihfc3RhdGUpOyBcCiAgICAgICAgICAgICBnb3RvIGZhaWw7IFwKICAgICAgICAgfSBcCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkZWNfYnVmZmVyKSkgeyBcCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlY29kZXIgZ2V0c3RhdGUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QsIG5vdCAnJS4yMDBzJyIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGRlY19idWZmZXIpLT50cF9uYW1lKTsgXAorICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICB9IFwKKyAgICAgICAgZGVjX2J1ZmZlcl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGRlY19idWZmZXIpOyBcCiAgICAgICAgIFB5X0RFQ1JFRihfc3RhdGUpOyBcCiAgICAgfSB3aGlsZSAoMCkKIApAQCAtMjQ2MCwxNiArMjQ2OCwxOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci50cnVuY2F0ZQorICAgIHBvczogb2JqZWN0ID0gTm9uZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfdHJ1bmNhdGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqcG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwZWMyYWZiOWJiNzc0NWYgaW5wdXQ9NTZlYzhiYWE2NWFlYTM3N10qLwogewotICAgIFB5T2JqZWN0ICpwb3MgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmcG9zKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygoUHlPYmplY3QgKikgc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC0yNTM0LDM2ICsyNTQ1LDYxIEBACiAKIC8qIElucXVpcmllcyAqLwogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5maWxlbm8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfZmlsZW5vKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9faW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjE0OTBhNGMzZGExM2U2YyBpbnB1dD1jNDg4Y2E4M2QwMDY5ZjliXSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5zZWVrYWJsZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9zZWVrYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfc2Vla2FibGVfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWIyMjNkYmJjZmZjMGYwMCBpbnB1dD04YjAwNWNhMDZlMWZjYTEzXSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9zZWVrYWJsZSwgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWRhYmxlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3JlYWRhYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MmZmN2JhMjg5YThhOTFiIGlucHV0PTA3MDRlYTdlMDFiMGQzZWJdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3JlYWRhYmxlLCBOVUxMKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIud3JpdGFibGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfd3JpdGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3MjhjNzE3OTBkMDMyMDAgaW5wdXQ9YzQxNzQwYmM5ZDg2MzZlOF0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfd3JpdGFibGUsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5pc2F0dHkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfaXNhdHR5KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTJiZTFhMzViYWNlODgyZSBpbnB1dD1mYjY4ZDlmMmM5OWJiZmZmXSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9pc2F0dHksIE5VTEwpOwpAQCAtMjU3Nyw4ICsyNjEzLDEzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmZsdXNoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX2ZsdXNoKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01OWRlOTE2NWY5YzJlNGQyIGlucHV0PTkyOGM2MDU5MDY5NGFiODVdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yNTg4LDggKzI2MjksMTMgQEAKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuY2xvc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfY2xvc2UodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA1NmNjZjhiNDg3NmU0ZjQgaW5wdXQ9OWMyMTE0MzE1ZWFlMTk0OF0qLwogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IHI7CkBAIC0yNzMzLDI0ICsyNzc5LDgxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiB0ZXh0aW93cmFwcGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRldGFjaCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl93cml0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9yZWFkbGluZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfZmx1c2gsIE1FVEhfTk9BUkdTfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfY2xvc2UsIE1FVEhfTk9BUkdTfSwKKyNpbmNsdWRlICJjbGluaWMvdGV4dGlvLmMuaCIKIAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfZmlsZW5vLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3NlZWthYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3dyaXRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9pc2F0dHksIE1FVEhfTk9BUkdTfSwKK3N0YXRpYyBQeU1ldGhvZERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX21ldGhvZHNbXSA9IHsKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9ERUNPREVfTUVUSE9EREVGCisgICAgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfR0VUU1RBVEVfTUVUSE9EREVGCisgICAgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfU0VUU1RBVEVfTUVUSE9EREVGCisgICAgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfUkVTRVRfTUVUSE9EREVGCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzZXRbXSA9IHsKKyAgICB7Im5ld2xpbmVzIiwgKGdldHRlcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX25ld2xpbmVzX2dldCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIiwgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YobmxkZWNvZGVyX29iamVjdCksIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAvKnRwX2ZsYWdzKi8KKyAgICBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzZXQsIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18sIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZXh0aW93cmFwcGVyX21ldGhvZHNbXSA9IHsKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9ERVRBQ0hfTUVUSE9EREVGCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9GTFVTSF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9DTE9TRV9NRVRIT0RERUYKKworICAgIF9JT19URVhUSU9XUkFQUEVSX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9JU0FUVFlfTUVUSE9EREVGCiAgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAogCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfc2VlaywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl90ZWxsLCBNRVRIX05PQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9JT19URVhUSU9XUkFQUEVSX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfVEVMTF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9UUlVOQ0FURV9NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTI3OTYsNyArMjg5OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCiAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAvKnRwX2ZsYWdzKi8KLSAgICB0ZXh0aW93cmFwcGVyX2RvYywgICAgICAgICAgLyogdHBfZG9jICovCisgICAgX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19fX2RvY19fLCAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXRleHRpb3dyYXBwZXJfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpdGV4dGlvd3JhcHBlcl9jbGVhciwgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KQEAgLTI4MTEsNyArMjkxNCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICBvZmZzZXRvZih0ZXh0aW8sIGRpY3QpLCAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYyl0ZXh0aW93cmFwcGVyX2luaXQsIC8qIHRwX2luaXQgKi8KKyAgICBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IDJmNDJjMzQuLmU0NDc4ZWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICBQeU9iamVjdCAqaXRlbV9zZXBhcmF0b3I7CiAgICAgUHlPYmplY3QgKnNvcnRfa2V5czsKICAgICBQeU9iamVjdCAqc2tpcGtleXM7Ci0gICAgaW50IGZhc3RfZW5jb2RlOworICAgIFB5Q0Z1bmN0aW9uIGZhc3RfZW5jb2RlOwogICAgIGludCBhbGxvd19uYW47CiB9IFB5RW5jb2Rlck9iamVjdDsKIApAQCAtMjI1LDI2ICsyMjUsMTE2IEBACiAgICAgcmV0dXJuIHJ2YWw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitlc2NhcGVfdW5pY29kZShQeU9iamVjdCAqcHlzdHIpCit7CisgICAgLyogVGFrZSBhIFB5VW5pY29kZSBweXN0ciBhbmQgcmV0dXJuIGEgbmV3IGVzY2FwZWQgUHlVbmljb2RlICovCisgICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3QgaW5wdXRfY2hhcnM7CisgICAgUHlfc3NpemVfdCBvdXRwdXRfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGNoYXJzOworICAgIFB5T2JqZWN0ICpydmFsOworICAgIHZvaWQgKmlucHV0OworICAgIGludCBraW5kOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocHlzdHIpOworICAgIGlucHV0X2NoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGlucHV0ID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKKyAgICAvKiBDb21wdXRlIHRoZSBvdXRwdXQgc2l6ZSAqLworICAgIGZvciAoaSA9IDAsIG91dHB1dF9zaXplID0gMjsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOworICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAnXFwnOiBjYXNlICciJzogY2FzZSAnXGInOiBjYXNlICdcZic6CisgICAgICAgIGNhc2UgJ1xuJzogY2FzZSAnXHInOiBjYXNlICdcdCc6CisgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoYyA8PSAweDFmKQorICAgICAgICAgICAgICAgIG91dHB1dF9zaXplICs9IDY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0X3NpemUrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJ2YWwgPSBQeVVuaWNvZGVfTmV3KG91dHB1dF9zaXplLCBtYXhjaGFyKTsKKyAgICBpZiAocnZhbCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChydmFsKTsKKworI2RlZmluZSBFTkNPREVfT1VUUFVUIGRvIHsgXAorICAgICAgICBjaGFycyA9IDA7IFwKKyAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOyBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7IFwKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsgXAorICAgICAgICAgICAgc3dpdGNoIChjKSB7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gYzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJyInOiAgb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gYzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xiJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gJ2InOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXGYnOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAnZic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcbic6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICduJzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xyJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gJ3InOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXHQnOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAndCc7IGJyZWFrOyBcCisgICAgICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgICAgICAgaWYgKGMgPD0gMHgxZikgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICdcXCc7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICcwJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnMCc7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+IDQpICYgMHhmXTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgICAgICkgJiAweGZdOyBcCisgICAgICAgICAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBjOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpvdXRwdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShydmFsKTsKKyAgICAgICAgRU5DT0RFX09VVFBVVDsKKyAgICB9IGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqb3V0cHV0ID0gUHlVbmljb2RlXzJCWVRFX0RBVEEocnZhbCk7CisgICAgICAgIEVOQ09ERV9PVVRQVVQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqb3V0cHV0ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEocnZhbCk7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgRU5DT0RFX09VVFBVVDsKKyAgICB9CisjdW5kZWYgRU5DT0RFX09VVFBVVAorCisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJ2YWwsIDEpKTsKKyNlbmRpZgorICAgIHJldHVybiBydmFsOworfQorCiBzdGF0aWMgdm9pZAogcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKQogewotICAgIC8qIFVzZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIGpzb24uZGVjb2Rlci5lcnJtc2cgdG8gcmFpc2UgYSBuaWNlCi0gICAgbG9va2luZyBWYWx1ZUVycm9yIGV4Y2VwdGlvbiAqLwotICAgIHN0YXRpYyBQeU9iamVjdCAqZXJybXNnX2ZuID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcHltc2c7Ci0gICAgaWYgKGVycm1zZ19mbiA9PSBOVUxMKSB7CisgICAgLyogVXNlIEpTT05EZWNvZGVFcnJvciBleGNlcHRpb24gdG8gcmFpc2UgYSBuaWNlIGxvb2tpbmcgVmFsdWVFcnJvciBzdWJjbGFzcyAqLworICAgIHN0YXRpYyBQeU9iamVjdCAqSlNPTkRlY29kZUVycm9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjOworICAgIGlmIChKU09ORGVjb2RlRXJyb3IgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZGVjb2RlciA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgianNvbi5kZWNvZGVyIik7CiAgICAgICAgIGlmIChkZWNvZGVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVycm1zZ19mbiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZGVjb2RlciwgImVycm1zZyIpOworICAgICAgICBKU09ORGVjb2RlRXJyb3IgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGRlY29kZXIsICJKU09ORGVjb2RlRXJyb3IiKTsKICAgICAgICAgUHlfREVDUkVGKGRlY29kZXIpOwotICAgICAgICBpZiAoZXJybXNnX2ZuID09IE5VTEwpCisgICAgICAgIGlmIChKU09ORGVjb2RlRXJyb3IgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcHltc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZXJybXNnX2ZuLCAiKHpPbikiLCBtc2csIHMsIGVuZCk7Ci0gICAgaWYgKHB5bXNnKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBweW1zZyk7Ci0gICAgICAgIFB5X0RFQ1JFRihweW1zZyk7CisgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEpTT05EZWNvZGVFcnJvciwgIih6T24pIiwgbXNnLCBzLCBlbmQpOworICAgIGlmIChleGMpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KEpTT05EZWNvZGVFcnJvciwgZXhjKTsKKyAgICAgICAgUHlfREVDUkVGKGV4Yyk7CiAgICAgfQogfQogCkBAIC01MzcsNiArNjI3LDMxIEBACiAgICAgcmV0dXJuIHJ2YWw7CiB9CiAKKworUHlEb2NfU1RSVkFSKHB5ZG9jX2VuY29kZV9iYXNlc3RyaW5nLAorICAgICJlbmNvZGVfYmFzZXN0cmluZyhzdHJpbmcpIC0+IHN0cmluZ1xuIgorICAgICJcbiIKKyAgICAiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmciCispOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfZW5jb2RlX2Jhc2VzdHJpbmcoUHlPYmplY3QqIHNlbGYgVU5VU0VELCBQeU9iamVjdCAqcHlzdHIpCit7CisgICAgUHlPYmplY3QgKnJ2YWw7CisgICAgLyogUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcgKi8KKyAgICAvKiBNRVRIX08gKi8KKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHB5c3RyKSkgeworICAgICAgICBydmFsID0gZXNjYXBlX3VuaWNvZGUocHlzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBub3QgJS44MHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShweXN0ciktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJ2YWw7Cit9CisKIHN0YXRpYyB2b2lkCiBzY2FubmVyX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC03MTUsNyArODMwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9wYXJzZV9hcnJheV91bmljb2RlKFB5U2Nhbm5lck9iamVjdCAqcywgUHlPYmplY3QgKnB5c3RyLCBQeV9zc2l6ZV90IGlkeCwgUHlfc3NpemVfdCAqbmV4dF9pZHhfcHRyKSB7Ci0gICAgLyogUmVhZCBhIEpTT04gYXJyYXkgZnJvbSBQeVN0cmluZyBweXN0ci4KKyAgICAvKiBSZWFkIGEgSlNPTiBhcnJheSBmcm9tIFB5VW5pY29kZSBweXN0ci4KICAgICBpZHggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIG9wZW5pbmcgYnJhY2UuCiAgICAgKm5leHRfaWR4X3B0ciBpcyBhIHJldHVybi1ieS1yZWZlcmVuY2UgaW5kZXggdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlcgogICAgICAgICB0aGUgY2xvc2luZyBicmFjZS4KQEAgLTc4Nyw4ICs5MDIsOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BhcnNlX2NvbnN0YW50KFB5U2Nhbm5lck9iamVjdCAqcywgY2hhciAqY29uc3RhbnQsIFB5X3NzaXplX3QgaWR4LCBQeV9zc2l6ZV90ICpuZXh0X2lkeF9wdHIpIHsKLSAgICAvKiBSZWFkIGEgSlNPTiBjb25zdGFudCBmcm9tIFB5U3RyaW5nIHB5c3RyLgorX3BhcnNlX2NvbnN0YW50KFB5U2Nhbm5lck9iamVjdCAqcywgY29uc3QgY2hhciAqY29uc3RhbnQsIFB5X3NzaXplX3QgaWR4LCBQeV9zc2l6ZV90ICpuZXh0X2lkeF9wdHIpIHsKKyAgICAvKiBSZWFkIGEgSlNPTiBjb25zdGFudC4KICAgICBjb25zdGFudCBpcyB0aGUgY29uc3RhbnQgc3RyaW5nIHRoYXQgd2FzIGZvdW5kCiAgICAgICAgICgiTmFOIiwgIkluZmluaXR5IiwgIi1JbmZpbml0eSIpLgogICAgIGlkeCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY29uc3RhbnQKQEAgLTgyMCw3ICs5MzUsNyBAQAogICAgICAgICB0aGUgbnVtYmVyLgogCiAgICAgUmV0dXJucyBhIG5ldyBQeU9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGF0IG51bWJlcjoKLSAgICAgICAgUHlJbnQsIFB5TG9uZywgb3IgUHlGbG9hdC4KKyAgICAgICAgUHlMb25nLCBvciBQeUZsb2F0LgogICAgICAgICBNYXkgcmV0dXJuIG90aGVyIHR5cGVzIGlmIHBhcnNlX2ludCBvciBwYXJzZV9mbG9hdCBhcmUgc2V0CiAgICAgKi8KICAgICB2b2lkICpzdHI7CkBAIC0xMjM2LDcgKzEzNTEsMTQgQEAKICAgICBzLT5pdGVtX3NlcGFyYXRvciA9IGl0ZW1fc2VwYXJhdG9yOwogICAgIHMtPnNvcnRfa2V5cyA9IHNvcnRfa2V5czsKICAgICBzLT5za2lwa2V5cyA9IHNraXBrZXlzOwotICAgIHMtPmZhc3RfZW5jb2RlID0gKFB5Q0Z1bmN0aW9uX0NoZWNrKHMtPmVuY29kZXIpICYmIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uKHMtPmVuY29kZXIpID09IChQeUNGdW5jdGlvbilweV9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaSk7CisgICAgcy0+ZmFzdF9lbmNvZGUgPSBOVUxMOworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhzLT5lbmNvZGVyKSkgeworICAgICAgICBQeUNGdW5jdGlvbiBmID0gUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24ocy0+ZW5jb2Rlcik7CisgICAgICAgIGlmIChmID09IChQeUNGdW5jdGlvbilweV9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaSB8fAorICAgICAgICAgICAgICAgIGYgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nKSB7CisgICAgICAgICAgICBzLT5mYXN0X2VuY29kZSA9IGY7CisgICAgICAgIH0KKyAgICB9CiAgICAgcy0+YWxsb3dfbmFuID0gYWxsb3dfbmFuOwogCiAgICAgUHlfSU5DUkVGKHMtPm1hcmtlcnMpOwpAQCAtMTM4NSw3ICsxNTA3LDcgQEAKIHsKICAgICAvKiBSZXR1cm4gdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBzdHJpbmcgKi8KICAgICBpZiAocy0+ZmFzdF9lbmNvZGUpCi0gICAgICAgIHJldHVybiBweV9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaShOVUxMLCBvYmopOworICAgICAgICByZXR1cm4gcy0+ZmFzdF9lbmNvZGUoTlVMTCwgb2JqKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPmVuY29kZXIsIG9iaiwgTlVMTCk7CiB9CkBAIC0xODMyLDYgKzE5NTQsMTAgQEAKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLAogICAgICAgICBNRVRIX08sCiAgICAgICAgIHB5ZG9jX2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpfSwKKyAgICB7ImVuY29kZV9iYXNlc3RyaW5nIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nLAorICAgICAgICBNRVRIX08sCisgICAgICAgIHB5ZG9jX2VuY29kZV9iYXNlc3RyaW5nfSwKICAgICB7InNjYW5zdHJpbmciLAogICAgICAgICAoUHlDRnVuY3Rpb24pcHlfc2NhbnN0cmluZywKICAgICAgICAgTUVUSF9WQVJBUkdTLApAQCAtMTg1NCw3ICsxOTgwLDcgQEAKICAgICAgICAgTlVMTAogfTsKIAotUHlPYmplY3QqCitQeU1PRElOSVRfRlVOQwogUHlJbml0X19qc29uKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJmpzb25tb2R1bGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCAwMTM3ZDk1Li42NmU1MzRmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMjAyLDYgKzIwMiw4IEBACiAgICAgICAgICovCiAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gZm4tPm1fc2VsZjsKICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIFB5T2JqZWN0ICptb2RuYW1lID0gZm4tPm1fbW9kdWxlOworCiAgICAgICAgIGlmIChuYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICptbyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksIG5hbWUpOwogICAgICAgICAgICAgUHlfWElOQ1JFRihtbyk7CkBAIC0yMTMsOSArMjE1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLyogT3RoZXJ3aXNlLCB1c2UgX19tb2R1bGVfXyAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxidWlsdC1pbiBtZXRob2QgJXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgaWYgKG1vZG5hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2sobW9kbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxidWlsdC1pbiBtZXRob2QgJVMuJXM+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxidWlsdC1pbiBtZXRob2QgJXM+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKaW5kZXggYzQzNjc2YS4uN2U0ZTJkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwpAQCAtNjYsNiArNjYsOSBAQAogICAgIGludCBjaGVjazsKICAgICBjaGFyIGVvZjsKICAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisgICAgY2hhciBuZWVkc19pbnB1dDsKKyAgICB1aW50OF90ICppbnB1dF9idWZmZXI7CisgICAgc2l6ZV90IGlucHV0X2J1ZmZlcl9zaXplOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAjZW5kaWYKQEAgLTE0MiwxMCArMTQ1LDE1IEBACiAjZW5kaWYKIAogc3RhdGljIGludAotZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCitncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZiwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQogewotICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKLSAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1Ziwgc2l6ZSArIChzaXplID4+IDMpICsgNik7CisgICAgUHlfc3NpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKKyAgICBQeV9zc2l6ZV90IG5ld3NpemUgPSBzaXplICsgKHNpemUgPj4gMykgKyA2OworCisgICAgaWYgKG1heF9sZW5ndGggPiAwICYmIG5ld3NpemUgPiBtYXhfbGVuZ3RoKQorICAgICAgICBuZXdzaXplID0gbWF4X2xlbmd0aDsKKworICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBuZXdzaXplKTsKIH0KIAogCkBAIC00NzAsMTIgKzQ3OCwxMSBAQAogCiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIF9sem1hCiBjbGFzcyBfbHptYS5MWk1BQ29tcHJlc3NvciAiQ29tcHJlc3NvciAqIiAiJkNvbXByZXNzb3JfdHlwZSIKIGNsYXNzIF9sem1hLkxaTUFEZWNvbXByZXNzb3IgIkRlY29tcHJlc3NvciAqIiAiJkRlY29tcHJlc3Nvcl90eXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjE3YWZjNzg2NTI1ZDZjMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MmMxNGJiZTA1ZmYwYzE0N10qLwogCiAjaW5jbHVkZSAiY2xpbmljL19sem1hbW9kdWxlLmMuaCIKIApAQCAtNTA0LDcgKzUxMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogY29tcHJlc3MoQ29tcHJlc3NvciAqYywgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbiwgbHptYV9hY3Rpb24gYWN0aW9uKQogewotICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5X3NzaXplX3QgZGF0YV9zaXplID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKQEAgLTUyNyw3ICs1MzQsNyBAQAogICAgICAgICAgICAgKGFjdGlvbiA9PSBMWk1BX0ZJTklTSCAmJiBsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIGlmIChjLT5senMuYXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0LCAtMSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGMtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKICAgICAgICAgICAgIGMtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CkBAIC04ODgsMjUgKzg5NSwzMyBAQAogCiAvKiBMWk1BRGVjb21wcmVzc29yIGNsYXNzLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKmQsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pCisvKiBEZWNvbXByZXNzIGRhdGEgb2YgbGVuZ3RoIGQtPmx6cy5hdmFpbF9pbiBpbiBkLT5senMubmV4dF9pbi4gIFRoZSBvdXRwdXQKKyAgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgYW5kIHJldHVybmVkLiAgQXQgbW9zdCBtYXhfbGVuZ3RoIGJ5dGVzIGFyZQorICAgcmV0dXJuZWQsIHNvIHNvbWUgb2YgdGhlIGlucHV0IG1heSBub3QgYmUgY29uc3VtZWQuIGQtPmx6cy5uZXh0X2luIGFuZAorICAgZC0+bHpzLmF2YWlsX2luIGFyZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGNvbnN1bWVkIGlucHV0LiAqLworc3RhdGljIFB5T2JqZWN0KgorZGVjb21wcmVzc19idWYoRGVjb21wcmVzc29yICpkLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7Ci0gICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgbHptYV9zdHJlYW0gKmx6cyA9ICZkLT5senM7CiAKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOworICAgIGlmIChtYXhfbGVuZ3RoIDwgMCB8fCBtYXhfbGVuZ3RoID49IElOSVRJQUxfQlVGRkVSX1NJWkUpCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG1heF9sZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZC0+bHpzLm5leHRfaW4gPSBkYXRhOwotICAgIGQtPmx6cy5hdmFpbF9pbiA9IGxlbjsKLSAgICBkLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKworICAgIGx6cy0+bmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgbHpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGx6bWFfcmV0IGx6cmV0OwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUoJmQtPmx6cywgTFpNQV9SVU4pOwotICAgICAgICBkYXRhX3NpemUgPSAoY2hhciAqKWQtPmx6cy5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGx6cmV0ID0gbHptYV9jb2RlKGx6cywgTFpNQV9SVU4pOworICAgICAgICBkYXRhX3NpemUgPSAoY2hhciAqKWx6cy0+bmV4dF9vdXQgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtOTE0LDI2ICs5MjksMTMxIEBACiAgICAgICAgICAgICBkLT5jaGVjayA9IGx6bWFfZ2V0X2NoZWNrKCZkLT5senMpOwogICAgICAgICBpZiAobHpyZXQgPT0gTFpNQV9TVFJFQU1fRU5EKSB7CiAgICAgICAgICAgICBkLT5lb2YgPSAxOwotICAgICAgICAgICAgaWYgKGQtPmx6cy5hdmFpbF9pbiA+IDApIHsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7Ci0gICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilkLT5senMubmV4dF9pbiwgZC0+bHpzLmF2YWlsX2luKTsKLSAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgIH0gZWxzZSBpZiAobHpzLT5hdmFpbF9pbiA9PSAwKSB7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChkLT5senMuYXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgfSBlbHNlIGlmIChsenMtPmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZGF0YV9zaXplID09IG1heF9sZW5ndGgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCwgbWF4X2xlbmd0aCkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKLSAgICAgICAgICAgIGQtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgICAgICBsenMtPm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgbHpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQoreworICAgIGNoYXIgaW5wdXRfYnVmZmVyX2luX3VzZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGx6bWFfc3RyZWFtICpsenMgPSAmZC0+bHpzOworCisgICAgLyogUHJlcGVuZCB1bmNvbnN1bWVkIGlucHV0IGlmIG5lY2Vzc2FyeSAqLworICAgIGlmIChsenMtPm5leHRfaW4gIT0gTlVMTCkgeworICAgICAgICBzaXplX3QgYXZhaWxfbm93LCBhdmFpbF90b3RhbDsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCB0byBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgYXZhaWxfbm93ID0gKGQtPmlucHV0X2J1ZmZlciArIGQtPmlucHV0X2J1ZmZlcl9zaXplKQorICAgICAgICAgICAgLSAobHpzLT5uZXh0X2luICsgbHpzLT5hdmFpbF9pbik7CisKKyAgICAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHdlIGNhbiBhcHBlbmQgaWYgd2UgbW92ZSBleGlzdGluZworICAgICAgICAgICBjb250ZW50cyB0byBiZWdpbm5pbmcgb2YgYnVmZmVyIChvdmVyd3JpdGluZworICAgICAgICAgICBjb25zdW1lZCBpbnB1dCkgKi8KKyAgICAgICAgYXZhaWxfdG90YWwgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSAtIGx6cy0+YXZhaWxfaW47CisKKyAgICAgICAgaWYgKGF2YWlsX3RvdGFsIDwgbGVuKSB7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbHpzLT5uZXh0X2luIC0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICAgICAgdWludDhfdCAqdG1wOworICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gZC0+aW5wdXRfYnVmZmVyX3NpemUgKyBsZW4gLSBhdmFpbF9ub3c7CisKKyAgICAgICAgICAgIC8qIEFzc2lnbiB0byB0ZW1wb3JhcnkgdmFyaWFibGUgZmlyc3QsIHNvIHdlIGRvbid0CisgICAgICAgICAgICAgICBsb3NlIGFkZHJlc3Mgb2YgYWxsb2NhdGVkIGJ1ZmZlciBpZiByZWFsbG9jIGZhaWxzICovCisgICAgICAgICAgICB0bXAgPSBQeU1lbV9SZWFsbG9jKGQtPmlucHV0X2J1ZmZlciwgbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19NZW1vcnlFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSB0bXA7CisgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXJfc2l6ZSA9IG5ld19zaXplOworCisgICAgICAgICAgICBsenMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXIgKyBvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXZhaWxfbm93IDwgbGVuKSB7CisgICAgICAgICAgICBtZW1tb3ZlKGQtPmlucHV0X2J1ZmZlciwgbHpzLT5uZXh0X2luLAorICAgICAgICAgICAgICAgICAgICBsenMtPmF2YWlsX2luKTsKKyAgICAgICAgICAgIGx6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoKHZvaWQqKShsenMtPm5leHRfaW4gKyBsenMtPmF2YWlsX2luKSwgZGF0YSwgbGVuKTsKKyAgICAgICAgbHpzLT5hdmFpbF9pbiArPSBsZW47CisgICAgICAgIGlucHV0X2J1ZmZlcl9pbl91c2UgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbHpzLT5uZXh0X2luID0gZGF0YTsKKyAgICAgICAgbHpzLT5hdmFpbF9pbiA9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjb21wcmVzc19idWYoZCwgbWF4X2xlbmd0aCk7CisgICAgaWYocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGQtPmVvZikgeworICAgICAgICBkLT5uZWVkc19pbnB1dCA9IDA7CisgICAgICAgIGlmIChsenMtPmF2YWlsX2luID4gMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOworICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIChjaGFyICopbHpzLT5uZXh0X2luLCBsenMtPmF2YWlsX2luKTsKKyAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobHpzLT5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgIGx6cy0+bmV4dF9pbiA9IE5VTEw7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKworICAgICAgICAvKiBJZiB3ZSBkaWQgbm90IHVzZSB0aGUgaW5wdXQgYnVmZmVyLCB3ZSBub3cgaGF2ZQorICAgICAgICAgICB0byBjb3B5IHRoZSB0YWlsIGZyb20gdGhlIGNhbGxlcidzIGJ1ZmZlciBpbnRvIHRoZQorICAgICAgICAgICBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgaWYgKCFpbnB1dF9idWZmZXJfaW5fdXNlKSB7CisKKyAgICAgICAgICAgIC8qIERpc2NhcmQgYnVmZmVyIGlmIGl0J3MgdG9vIHNtYWxsCisgICAgICAgICAgICAgICAocmVzaXppbmcgaXQgbWF5IG5lZWRsZXNzbHkgY29weSB0aGUgY3VycmVudCBjb250ZW50cykgKi8KKyAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplIDwgbHpzLT5hdmFpbF9pbikgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoZC0+aW5wdXRfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBBbGxvY2F0ZSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IFB5TWVtX01hbGxvYyhsenMtPmF2YWlsX2luKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+aW5wdXRfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19NZW1vcnlFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gbHpzLT5hdmFpbF9pbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQ29weSB0YWlsICovCisgICAgICAgICAgICBtZW1jcHkoZC0+aW5wdXRfYnVmZmVyLCBsenMtPm5leHRfaW4sIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgbHpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIAogZXJyb3I6CkBAIC05NDYsMjAgKzEwNjYsMjggQEAKIAogICAgIHNlbGY6IHNlbGYodHlwZT0iRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgotICAgIC8KKyAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKLVByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4KK0RlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuCiAKLVJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS4KK0lmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZgorZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlCitwcm9kdWNlZCwgKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dAorY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYicnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuCiAKLUF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKLXJhaXNlcyBhbiBFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQotaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4KK0lmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpcword2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksCisqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gVHJ1ZS4KKworQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW4KK0VPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluCit0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDg2ZTc4ZGE3ZmYwZmYyMSBpbnB1dD01MGM0NzY4YjgyMWJmMGVmXSovCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZjRlMjBlYzcxMjIyNDFkIGlucHV0PWYyYmI5MDJjYzFjYWYyMDNdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtOTY3LDcgKzEwOTUsNyBAQAogICAgIGlmIChzZWxmLT5lb2YpCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkFscmVhZHkgYXQgZW5kIG9mIHN0cmVhbSIpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbik7CisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgZGF0YS0+YnVmLCBkYXRhLT5sZW4sIG1heF9sZW5ndGgpOwogICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAyMyw4ICsxMTUxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwgUHlPYmplY3QgKm1lbWxpbWl0LCBQeU9iamVjdCAqZmlsdGVycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YjExOWY2ZjJjYzJkN2E4IGlucHV0PTQ1OGNhNjEzMmVmMjk4MDFdKi8KK19sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIGludCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1lbWxpbWl0LCBQeU9iamVjdCAqZmlsdGVycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTE4MjFmOGFhMzY1NjRjIGlucHV0PTQ1OGNhNjEzMmVmMjk4MDFdKi8KIHsKICAgICBjb25zdCB1aW50MzJfdCBkZWNvZGVyX2ZsYWdzID0gTFpNQV9URUxMX0FOWV9DSEVDSyB8IExaTUFfVEVMTF9OT19DSEVDSzsKICAgICB1aW50NjRfdCBtZW1saW1pdF8gPSBVSU5UNjRfTUFYOwpAQCAtMTA1NSw2ICsxMTg0LDcgQEAKICAgICBzZWxmLT5hbGxvYy5hbGxvYyA9IFB5THptYV9NYWxsb2M7CiAgICAgc2VsZi0+YWxsb2MuZnJlZSA9IFB5THptYV9GcmVlOwogICAgIHNlbGYtPmx6cy5hbGxvY2F0b3IgPSAmc2VsZi0+YWxsb2M7CisgICAgc2VsZi0+bHpzLm5leHRfaW4gPSBOVUxMOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwpAQCAtMTA2NSw2ICsxMTk1LDkgQEAKICNlbmRpZgogCiAgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX1VOS05PV047CisgICAgc2VsZi0+bmVlZHNfaW5wdXQgPSAxOworICAgIHNlbGYtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyX3NpemUgPSAwOwogICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTExMTMsNiArMTI0Niw5IEBACiBzdGF0aWMgdm9pZAogRGVjb21wcmVzc29yX2RlYWxsb2MoRGVjb21wcmVzc29yICpzZWxmKQogeworICAgIGlmKHNlbGYtPmlucHV0X2J1ZmZlciAhPSBOVUxMKQorICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmlucHV0X2J1ZmZlcik7CisKICAgICBsem1hX2VuZCgmc2VsZi0+bHpzKTsKICAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTExMzQsNiArMTI3MCw5IEBACiBQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2VvZl9kb2MsCiAiVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4iKTsKIAorUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2MsCisiVHJ1ZSBpZiBtb3JlIGlucHV0IGlzIG5lZWRlZCBiZWZvcmUgbW9yZSBkZWNvbXByZXNzZWQgZGF0YSBjYW4gYmUgcHJvZHVjZWQuIik7CisKIFB5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jLAogIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CiAKQEAgLTExNDIsNiArMTI4MSw4IEBACiAgICAgIERlY29tcHJlc3Nvcl9jaGVja19kb2N9LAogICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIGVvZiksIFJFQURPTkxZLAogICAgICBEZWNvbXByZXNzb3JfZW9mX2RvY30sCisgICAgeyJuZWVkc19pbnB1dCIsIFRfQk9PTCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCBuZWVkc19pbnB1dCksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfbmVlZHNfaW5wdXRfZG9jfSwKICAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERlY29tcHJlc3NvciwgdW51c2VkX2RhdGEpLCBSRUFET05MWSwKICAgICAgRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX2RvY30sCiAgICAge05VTEx9CkBAIC0xMjYwLDggKzE0MDEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfdmxpIGZpbHRlcl9pZCwgUHlfYnVmZmVyICplbmNvZGVkX3Byb3BzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNWY3ZjUzNDVkNDg3NDQgaW5wdXQ9MjQ2NDEwODAwNzgyMTYwY10qLworX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfdmxpIGZpbHRlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWYyNDhmNTcwNzQ2NjY4YiBpbnB1dD0yNDY0MTA4MDA3ODIxNjBjXSovCiB7CiAgICAgbHptYV9maWx0ZXIgZmlsdGVyOwogICAgIGx6bWFfcmV0IGx6cmV0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3Bjb2RlLmMgYi9Nb2R1bGVzL19vcGNvZGUuYwppbmRleCBmZWUzODhmLi42NjNiYjIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19vcGNvZGUuYworKysgYi9Nb2R1bGVzL19vcGNvZGUuYwpAQCAtNiw2ICs2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTExNzQ0MmU2NmViMzc2ZTZdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fb3Bjb2RlLmMuaCIKKwogLypbY2xpbmljIGlucHV0XQogCiBfb3Bjb2RlLnN0YWNrX2VmZmVjdCAtPiBpbnQKQEAgLTE3LDQyICsxOSw5IEBACiBDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfXywKLSJzdGFja19lZmZlY3QoJG1vZHVsZSwgb3Bjb2RlLCBvcGFyZz1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iQ29tcHV0ZSB0aGUgc3RhY2sgZWZmZWN0IG9mIHRoZSBvcGNvZGUuIik7Ci0KLSNkZWZpbmUgX09QQ09ERV9TVEFDS19FRkZFQ1RfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YWNrX2VmZmVjdCIsIChQeUNGdW5jdGlvbilfb3Bjb2RlX3N0YWNrX2VmZmVjdCwgTUVUSF9WQVJBUkdTLCBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9fZG9jX199LAotCi1zdGF0aWMgaW50Ci1fb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcGNvZGUsIFB5T2JqZWN0ICpvcGFyZyk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1fb3Bjb2RlX3N0YWNrX2VmZmVjdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBpbnQgb3Bjb2RlOwotICAgIFB5T2JqZWN0ICpvcGFyZyA9IFB5X05vbmU7Ci0gICAgaW50IF9yZXR1cm5fdmFsdWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIml8TzpzdGFja19lZmZlY3QiLAotICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgX3JldHVybl92YWx1ZSA9IF9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwobW9kdWxlLCBvcGNvZGUsIG9wYXJnKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIGludAogX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3Bjb2RlLCBQeU9iamVjdCAqb3BhcmcpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWUxMTMzZjhkNTg3YmM2NyBpbnB1dD0yZDBhOWVlNTNjMDQxOGY1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWZjYWZkNTU5NmM2YjA1MCBpbnB1dD0yZDBhOWVlNTNjMDQxOGY1XSovCiB7CiAgICAgaW50IGVmZmVjdDsKICAgICBpbnQgb3BhcmdfaW50ID0gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX29wZXJhdG9yLmMgYi9Nb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IGFkZWI5OWUuLjczNWFmZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwpAQCAtNjksNiArNjksNyBAQAogc3BhbTIob3BfYWRkICAgICAgICAgICAsIFB5TnVtYmVyX0FkZCkKIHNwYW0yKG9wX3N1YiAgICAgICAgICAgLCBQeU51bWJlcl9TdWJ0cmFjdCkKIHNwYW0yKG9wX211bCAgICAgICAgICAgLCBQeU51bWJlcl9NdWx0aXBseSkKK3NwYW0yKG9wX21hdG11bCAgICAgICAgLCBQeU51bWJlcl9NYXRyaXhNdWx0aXBseSkKIHNwYW0yKG9wX2Zsb29yZGl2ICAgICAgLCBQeU51bWJlcl9GbG9vckRpdmlkZSkKIHNwYW0yKG9wX3RydWVkaXYgICAgICAgLCBQeU51bWJlcl9UcnVlRGl2aWRlKQogc3BhbTIob3BfbW9kICAgICAgICAgICAsIFB5TnVtYmVyX1JlbWFpbmRlcikKQEAgLTg2LDYgKzg3LDcgQEAKIHNwYW0yKG9wX2lhZGQgICAgICAgICAgLCBQeU51bWJlcl9JblBsYWNlQWRkKQogc3BhbTIob3BfaXN1YiAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdCkKIHNwYW0yKG9wX2ltdWwgICAgICAgICAgLCBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHkpCitzcGFtMihvcF9pbWF0bXVsICAgICAgICwgUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KQogc3BhbTIob3BfaWZsb29yZGl2ICAgICAsIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZSkKIHNwYW0yKG9wX2l0cnVlZGl2ICAgICAgLCBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZSkKIHNwYW0yKG9wX2ltb2QgICAgICAgICAgLCBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyKQpAQCAtMjM5LDcgKzI0MSw3IEBACiAiUmV0dXJuICdhID09IGInLiAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIGFwcHJvYWNoIGRlc2lnbmVkIHRvIHByZXZlbnRcbiIKICJ0aW1pbmcgYW5hbHlzaXMsIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LlxuIgogImEgYW5kIGIgbXVzdCBib3RoIGJlIG9mIHRoZSBzYW1lIHR5cGU6IGVpdGhlciBzdHIgKEFTQ0lJIG9ubHkpLFxuIgotIm9yIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbCAoZS5nLiBieXRlcykuXG4iCisib3IgYW55IGJ5dGVzLWxpa2Ugb2JqZWN0LlxuIgogIlxuIgogIk5vdGU6IElmIGEgYW5kIGIgYXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCBvciBpZiBhbiBlcnJvciBvY2N1cnMsXG4iCiAiYSB0aW1pbmcgYXR0YWNrIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmV2ZWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuIgpAQCAtMzQzLDYgKzM0NSw3IEBACiBzcGFtMihhZGQsICJhZGQoYSwgYikgLS0gU2FtZSBhcyBhICsgYi4iKQogc3BhbTIoc3ViLCAic3ViKGEsIGIpIC0tIFNhbWUgYXMgYSAtIGIuIikKIHNwYW0yKG11bCwgIm11bChhLCBiKSAtLSBTYW1lIGFzIGEgKiBiLiIpCitzcGFtMihtYXRtdWwsICJtYXRtdWwoYSwgYikgLS0gU2FtZSBhcyBhIEAgYi4iKQogc3BhbTIoZmxvb3JkaXYsICJmbG9vcmRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLy8gYi4iKQogc3BhbTIodHJ1ZWRpdiwgInRydWVkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC8gYi4iKQogc3BhbTIobW9kLCAibW9kKGEsIGIpIC0tIFNhbWUgYXMgYSAlIGIuIikKQEAgLTM2MCw2ICszNjMsNyBAQAogc3BhbTIoaWFkZCwgImEgPSBpYWRkKGEsIGIpIC0tIFNhbWUgYXMgYSArPSBiLiIpCiBzcGFtMihpc3ViLCAiYSA9IGlzdWIoYSwgYikgLS0gU2FtZSBhcyBhIC09IGIuIikKIHNwYW0yKGltdWwsICJhID0gaW11bChhLCBiKSAtLSBTYW1lIGFzIGEgKj0gYi4iKQorc3BhbTIoaW1hdG11bCwgImEgPSBpbWF0bXVsKGEsIGIpIC0tIFNhbWUgYXMgYSBAPSBiLiIpCiBzcGFtMihpZmxvb3JkaXYsICJhID0gaWZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLz0gYi4iKQogc3BhbTIoaXRydWVkaXYsICJhID0gaXRydWVkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC89IGIiKQogc3BhbTIoaW1vZCwgImEgPSBpbW9kKGEsIGIpIC0tIFNhbWUgYXMgYSAlPSBiLiIpCkBAIC00ODEsNiArNDg1LDQxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2l0ZW1nZXR0ZXJfcmVwcihpdGVtZ2V0dGVyb2JqZWN0ICppZykKK3sKKyAgICBQeU9iamVjdCAqcmVwcjsKKyAgICBjb25zdCBjaGFyICpyZXByZm10OworCisgICAgaW50IHN0YXR1cyA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilpZyk7CisgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoLi4uKSIsIFB5X1RZUEUoaWcpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICByZXByZm10ID0gaWctPm5pdGVtcyA9PSAxID8gIiVzKCVSKSIgOiAiJXMlUiI7CisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHJlcHJmbXQsIFB5X1RZUEUoaWcpLT50cF9uYW1lLCBpZy0+aXRlbSk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKWlnKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2l0ZW1nZXR0ZXJfcmVkdWNlKGl0ZW1nZXR0ZXJvYmplY3QgKmlnKQoreworICAgIGlmIChpZy0+bml0ZW1zID09IDEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShpZyksIGlnLT5pdGVtKTsKKyAgICByZXR1cm4gUHlUdXBsZV9QYWNrKDIsIFB5X1RZUEUoaWcpLCBpZy0+aXRlbSk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZyIpOworCitzdGF0aWMgUHlNZXRob2REZWYgaXRlbWdldHRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZW1nZXR0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEx9Cit9OworCiBQeURvY19TVFJWQVIoaXRlbWdldHRlcl9kb2MsCiAiaXRlbWdldHRlcihpdGVtLCAuLi4pIC0tPiBpdGVtZ2V0dGVyIG9iamVjdFxuXAogXG5cCkBAIC00OTksNyArNTM4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYylpdGVtZ2V0dGVyX3JlcHIsICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTUxNyw3ICs1NTYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGl0ZW1nZXR0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNzMzLDYgKzc3Miw5MyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkb3Rqb2luYXR0cihQeU9iamVjdCAqYXR0ciwgUHlPYmplY3QgKiphdHRyc2VwKQoreworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoYXR0cikpIHsKKyAgICAgICAgaWYgKCphdHRyc2VwID09IE5VTEwpIHsKKyAgICAgICAgICAgICphdHRyc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIi4iKTsKKyAgICAgICAgICAgIGlmICgqYXR0cnNlcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbigqYXR0cnNlcCwgYXR0cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKGF0dHIpOworICAgICAgICByZXR1cm4gYXR0cjsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithdHRyZ2V0dGVyX2FyZ3MoYXR0cmdldHRlcm9iamVjdCAqYWcpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICphdHRyc2VwID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXR0cnN0cmluZ3MgPSBQeVR1cGxlX05ldyhhZy0+bmF0dHJzKTsKKyAgICBpZiAoYXR0cnN0cmluZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYWctPm5hdHRyczsgKytpKSB7CisgICAgICAgIFB5T2JqZWN0ICphdHRyID0gUHlUdXBsZV9HRVRfSVRFTShhZy0+YXR0ciwgaSk7CisgICAgICAgIFB5T2JqZWN0ICphdHRyc3RyID0gZG90am9pbmF0dHIoYXR0ciwgJmF0dHJzZXApOworICAgICAgICBpZiAoYXR0cnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGF0dHJzZXApOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJzdHJpbmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXR0cnN0cmluZ3MsIGksIGF0dHJzdHIpOworICAgIH0KKyAgICBQeV9YREVDUkVGKGF0dHJzZXApOworICAgIHJldHVybiBhdHRyc3RyaW5nczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2F0dHJnZXR0ZXJfcmVwcihhdHRyZ2V0dGVyb2JqZWN0ICphZykKK3sKKyAgICBQeU9iamVjdCAqcmVwciA9IE5VTEw7CisgICAgaW50IHN0YXR1cyA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilhZyk7CisgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoLi4uKSIsIFB5X1RZUEUoYWcpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICBpZiAoYWctPm5hdHRycyA9PSAxKSB7CisgICAgICAgIFB5T2JqZWN0ICphdHRyc2VwID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmF0dHIgPSBkb3Rqb2luYXR0cihQeVR1cGxlX0dFVF9JVEVNKGFnLT5hdHRyLCAwKSwgJmF0dHJzZXApOworICAgICAgICBpZiAoYXR0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSKSIsIFB5X1RZUEUoYWcpLT50cF9uYW1lLCBhdHRyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGF0dHJzZXApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzdHJpbmdzID0gYXR0cmdldHRlcl9hcmdzKGFnKTsKKyAgICAgICAgaWYgKGF0dHJzdHJpbmdzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhZyktPnRwX25hbWUsIGF0dHJzdHJpbmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyc3RyaW5ncyk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKWFnKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2F0dHJnZXR0ZXJfcmVkdWNlKGF0dHJnZXR0ZXJvYmplY3QgKmFnKQoreworICAgIFB5T2JqZWN0ICphdHRyc3RyaW5ncyA9IGF0dHJnZXR0ZXJfYXJncyhhZyk7CisgICAgaWYgKGF0dHJzdHJpbmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9OIiwgUHlfVFlQRShhZyksIGF0dHJzdHJpbmdzKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGF0dHJnZXR0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilhdHRyZ2V0dGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMfQorfTsKKwogUHlEb2NfU1RSVkFSKGF0dHJnZXR0ZXJfZG9jLAogImF0dHJnZXR0ZXIoYXR0ciwgLi4uKSAtLT4gYXR0cmdldHRlciBvYmplY3RcblwKIFxuXApAQCAtNzUzLDcgKzg3OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAocmVwcmZ1bmMpYXR0cmdldHRlcl9yZXByLCAgICAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCkBAIC03NzEsNyArODk3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhdHRyZ2V0dGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTgwOSw2ICs5MzUsMTMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIC8qIGNyZWF0ZSBtZXRob2RjYWxsZXJvYmplY3Qgc3RydWN0dXJlICovCiAgICAgbWMgPSBQeU9iamVjdF9HQ19OZXcobWV0aG9kY2FsbGVyb2JqZWN0LCAmbWV0aG9kY2FsbGVyX3R5cGUpOwogICAgIGlmIChtYyA9PSBOVUxMKQpAQCAtODIxLDggKzk1NCw4IEBACiAgICAgfQogICAgIG1jLT5hcmdzID0gbmV3YXJnczsKIAotICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmbmFtZSk7CiAgICAgbWMtPm5hbWUgPSBuYW1lOwogCiAgICAgUHlfWElOQ1JFRihrd2RzKTsKQEAgLTg2NSw2ICs5OTgsMTQyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21ldGhvZGNhbGxlcl9yZXByKG1ldGhvZGNhbGxlcm9iamVjdCAqbWMpCit7CisgICAgUHlPYmplY3QgKmFyZ3JlcHJzLCAqcmVwciA9IE5VTEwsICpzZXAsICpqb2luZWRhcmdyZXByczsKKyAgICBQeV9zc2l6ZV90IG51bXRvdGFsYXJncywgbnVtcG9zYXJncywgbnVta3dkYXJncywgaTsKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKW1jKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShtYyktPnRwX25hbWUpOworICAgIH0KKworICAgIGlmIChtYy0+a3dkcyAhPSBOVUxMKSB7CisgICAgICAgIG51bWt3ZGFyZ3MgPSBQeURpY3RfU2l6ZShtYy0+a3dkcyk7CisgICAgICAgIGlmIChudW1rd2RhcmdzIDwgMCkgeworICAgICAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbnVta3dkYXJncyA9IDA7CisgICAgfQorCisgICAgbnVtcG9zYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUobWMtPmFyZ3MpOworICAgIG51bXRvdGFsYXJncyA9IG51bXBvc2FyZ3MgKyBudW1rd2RhcmdzOworCisgICAgaWYgKG51bXRvdGFsYXJncyA9PSAwKSB7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwgUHlfVFlQRShtYyktPnRwX25hbWUsIG1jLT5uYW1lKTsKKyAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgfQorCisgICAgYXJncmVwcnMgPSBQeVR1cGxlX05ldyhudW10b3RhbGFyZ3MpOworICAgIGlmIChhcmdyZXBycyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKiltYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBudW1wb3NhcmdzOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKm9uZXJlcHIgPSBQeU9iamVjdF9SZXByKFB5VHVwbGVfR0VUX0lURU0obWMtPmFyZ3MsIGkpKTsKKyAgICAgICAgaWYgKG9uZXJlcHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdyZXBycywgaSwgb25lcmVwcik7CisgICAgfQorCisgICAgaWYgKG51bWt3ZGFyZ3MgIT0gMCkgeworICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KG1jLT5rd2RzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqb25lcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lUiIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9uZXJlcHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoaSA+PSBudW10b3RhbGFyZ3MpIHsKKyAgICAgICAgICAgICAgICBpID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3JlcHJzLCBpLCBvbmVyZXByKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSAhPSBudW10b3RhbGFyZ3MpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIGRpY3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgIGlmIChzZXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgam9pbmVkYXJncmVwcnMgPSBQeVVuaWNvZGVfSm9pbihzZXAsIGFyZ3JlcHJzKTsKKyAgICBQeV9ERUNSRUYoc2VwKTsKKyAgICBpZiAoam9pbmVkYXJncmVwcnMgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUiwgJVUpIiwgUHlfVFlQRShtYyktPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jLT5uYW1lLCBqb2luZWRhcmdyZXBycyk7CisgICAgUHlfREVDUkVGKGpvaW5lZGFyZ3JlcHJzKTsKKworZG9uZToKKyAgICBQeV9ERUNSRUYoYXJncmVwcnMpOworICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKiltYyk7CisgICAgcmV0dXJuIHJlcHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZXRob2RjYWxsZXJfcmVkdWNlKG1ldGhvZGNhbGxlcm9iamVjdCAqbWMpCit7CisgICAgUHlPYmplY3QgKm5ld2FyZ3M7CisgICAgaWYgKCFtYy0+a3dkcyB8fCBQeURpY3RfU2l6ZShtYy0+a3dkcykgPT0gMCkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIFB5X3NzaXplX3QgY2FsbGFyZ2NvdW50ID0gUHlUdXBsZV9HRVRfU0laRShtYy0+YXJncyk7CisgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygxICsgY2FsbGFyZ2NvdW50KTsKKyAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYobWMtPm5hbWUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIG1jLT5uYW1lKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNhbGxhcmdjb3VudDsgKytpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTShtYy0+YXJncywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSArIDEsIGFyZyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9OIiwgUHlfVFlQRShtYyksIG5ld2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmZ1bmN0b29sczsKKyAgICAgICAgUHlPYmplY3QgKnBhcnRpYWw7CisgICAgICAgIFB5T2JqZWN0ICpjb25zdHJ1Y3RvcjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocGFydGlhbCk7CisgICAgICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CisgICAgICAgIGlmICghZnVuY3Rvb2xzKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBhcnRpYWwgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmN0b29scywgJlB5SWRfcGFydGlhbCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jdG9vbHMpOworICAgICAgICBpZiAoIXBhcnRpYWwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDIpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoUHlfVFlQRShtYykpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKVB5X1RZUEUobWMpKTsKKyAgICAgICAgUHlfSU5DUkVGKG1jLT5uYW1lKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAxLCBtYy0+bmFtZSk7CisgICAgICAgIGNvbnN0cnVjdG9yID0gUHlPYmplY3RfQ2FsbChwYXJ0aWFsLCBuZXdhcmdzLCBtYy0+a3dkcyk7CisgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBjb25zdHJ1Y3RvciwgbWMtPmFyZ3MpOworICAgIH0KK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1ldGhvZGNhbGxlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKW1ldGhvZGNhbGxlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTH0KK307CiBQeURvY19TVFJWQVIobWV0aG9kY2FsbGVyX2RvYywKICJtZXRob2RjYWxsZXIobmFtZSwgLi4uKSAtLT4gbWV0aG9kY2FsbGVyIG9iamVjdFxuXAogXG5cCkBAIC04ODQsNyArMTE1Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAocmVwcmZ1bmMpbWV0aG9kY2FsbGVyX3JlcHIsICAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCkBAIC05MDIsNyArMTE3MSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWV0aG9kY2FsbGVyX21ldGhvZHMsICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IDQzNWNiYWUuLjc4YTRiMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC01LDE0ICs1LDEzIEBACiAiT3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBQeXRob24gcGlja2xlIG1vZHVsZS4iKTsKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgX3BpY2tsZQogY2xhc3MgX3BpY2tsZS5QaWNrbGVyICJQaWNrbGVyT2JqZWN0ICoiICImUGlja2xlcl9UeXBlIgogY2xhc3MgX3BpY2tsZS5QaWNrbGVyTWVtb1Byb3h5ICJQaWNrbGVyTWVtb1Byb3h5T2JqZWN0ICoiICImUGlja2xlck1lbW9Qcm94eVR5cGUiCiBjbGFzcyBfcGlja2xlLlVucGlja2xlciAiVW5waWNrbGVyT2JqZWN0ICoiICImVW5waWNrbGVyX1R5cGUiCiBjbGFzcyBfcGlja2xlLlVucGlja2xlck1lbW9Qcm94eSAiVW5waWNrbGVyTWVtb1Byb3h5T2JqZWN0ICoiICImVW5waWNrbGVyTWVtb1Byb3h5VHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTExYzQ1MjQ4YTQxZGQzZmNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTRiM2UxMTM0NjhhNThlNmNdKi8KIAogLyogQnVtcCB0aGlzIHdoZW4gbmV3IG9wY29kZXMgYXJlIGFkZGVkIHRvIHRoZSBwaWNrbGUgcHJvdG9jb2wuICovCiBlbnVtIHsKQEAgLTE1Miw2ICsxNTEsOCBAQAogCiAgICAgLyogY29kZWNzLmVuY29kZSwgdXNlZCBmb3Igc2F2aW5nIGJ5dGVzIGluIG9sZGVyIHByb3RvY29scyAqLwogICAgIFB5T2JqZWN0ICpjb2RlY3NfZW5jb2RlOworICAgIC8qIGJ1aWx0aW5zLmdldGF0dHIsIHVzZWQgZm9yIHNhdmluZyBuZXN0ZWQgbmFtZXMgd2l0aCBwcm90b2NvbCA8IDQgKi8KKyAgICBQeU9iamVjdCAqZ2V0YXR0cjsKIH0gUGlja2xlU3RhdGU7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIF9waWNrbGUgbW9kdWxlIGRlZmluaXRpb24uICovCkBAIC0xODgsMTYgKzE4OSwyNiBAQAogICAgIFB5X0NMRUFSKHN0LT5uYW1lX21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X0NMRUFSKHN0LT5jb2RlY3NfZW5jb2RlKTsKKyAgICBQeV9DTEVBUihzdC0+Z2V0YXR0cik7CiB9CiAKIC8qIEluaXRpYWxpemUgdGhlIGdpdmVuIHBpY2tsZSBtb2R1bGUgc3RhdGUuICovCiBzdGF0aWMgaW50CiBfUGlja2xlX0luaXRTdGF0ZShQaWNrbGVTdGF0ZSAqc3QpCiB7CisgICAgUHlPYmplY3QgKmJ1aWx0aW5zOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29tcGF0X3BpY2tsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvZGVjcyA9IE5VTEw7CiAKKyAgICBidWlsdGlucyA9IFB5RXZhbF9HZXRCdWlsdGlucygpOworICAgIGlmIChidWlsdGlucyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHN0LT5nZXRhdHRyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoYnVpbHRpbnMsICJnZXRhdHRyIik7CisgICAgaWYgKHN0LT5nZXRhdHRyID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfSU5DUkVGKHN0LT5nZXRhdHRyKTsKKwogICAgIGNvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvcHlyZWciKTsKICAgICBpZiAoIWNvcHlyZWcpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC00MjAsMjIgKzQzMSwyMiBAQAogUGRhdGFfZ3JvdyhQZGF0YSAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqKmRhdGEgPSBzZWxmLT5kYXRhOwotICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkID0gc2VsZi0+YWxsb2NhdGVkOwotICAgIFB5X3NzaXplX3QgbmV3X2FsbG9jYXRlZDsKKyAgICBzaXplX3QgYWxsb2NhdGVkID0gKHNpemVfdClzZWxmLT5hbGxvY2F0ZWQ7CisgICAgc2l6ZV90IG5ld19hbGxvY2F0ZWQ7CiAKICAgICBuZXdfYWxsb2NhdGVkID0gKGFsbG9jYXRlZCA+PiAzKSArIDY7CiAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkKQorICAgIGlmIChuZXdfYWxsb2NhdGVkID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAtIGFsbG9jYXRlZCkKICAgICAgICAgZ290byBub21lbW9yeTsKICAgICBuZXdfYWxsb2NhdGVkICs9IGFsbG9jYXRlZDsKLSAgICBpZiAobmV3X2FsbG9jYXRlZCA+IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPiAoKHNpemVfdClQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCiAgICAgICAgIGdvdG8gbm9tZW1vcnk7CiAgICAgZGF0YSA9IFB5TWVtX1JFQUxMT0MoZGF0YSwgbmV3X2FsbG9jYXRlZCAqIHNpemVvZihQeU9iamVjdCAqKSk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBub21lbW9yeTsKIAogICAgIHNlbGYtPmRhdGEgPSBkYXRhOwotICAgIHNlbGYtPmFsbG9jYXRlZCA9IG5ld19hbGxvY2F0ZWQ7CisgICAgc2VsZi0+YWxsb2NhdGVkID0gKFB5X3NzaXplX3QpbmV3X2FsbG9jYXRlZDsKICAgICByZXR1cm4gMDsKIAogICBub21lbW9yeToKQEAgLTg1MCw3ICs4NjEsNyBAQAogc3RhdGljIHZvaWQKIF93cml0ZV9zaXplNjQoY2hhciAqb3V0LCBzaXplX3QgdmFsdWUpCiB7Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAKICAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CiAKQEAgLTE0NTYsNyArMTQ2Nyw3IEBACiAgICAgICAgICAgICBwZGF0YVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgqdmFsdWUgJiAweGZmKTsKICAgICAgICAgICAgIGxlbiA9IDI7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKnZhbHVlIDw9IDB4ZmZmZmZmZmZMKSB7CisgICAgICAgIGVsc2UgaWYgKChzaXplX3QpKnZhbHVlIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICAgICAgcGRhdGFbMF0gPSBMT05HX0JJTkdFVDsKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKCp2YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgcGRhdGFbMl0gPSAodW5zaWduZWQgY2hhcikoKCp2YWx1ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMTUxMyw3ICsxNTI0LDcgQEAKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpaWR4OwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpZHggPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdClpZHggPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgICAgICBwZGF0YVswXSA9IExPTkdfQklOUFVUOwogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcikoaWR4ICYgMHhmZik7CiAgICAgICAgICAgICBwZGF0YVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoaWR4ID4+IDgpICYgMHhmZik7CkBAIC0xNTM1LDY2ICsxNTQ2LDEwMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0YXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLCBpbnQgYWxsb3dfcXVhbG5hbWUpIHsKLSAgICBQeU9iamVjdCAqZG90dGVkX3BhdGg7Ci0gICAgUHlfc3NpemVfdCBpOworZ2V0X2RvdHRlZF9wYXRoKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lKSB7CiAgICAgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9kb3QsICIuIik7CiAgICAgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9sb2NhbHMsICI8bG9jYWxzPiIpOworICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAKICAgICBkb3R0ZWRfcGF0aCA9IFB5VW5pY29kZV9TcGxpdChuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9kb3QpLCAtMSk7Ci0gICAgaWYgKGRvdHRlZF9wYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGFzc2VydChQeV9TSVpFKGRvdHRlZF9wYXRoKSA+PSAxKTsKLSAgICBpZiAoIWFsbG93X3F1YWxuYW1lICYmIFB5X1NJWkUoZG90dGVkX3BhdGgpID4gMSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZ2V0IHF1YWxpZmllZCBhdHRyaWJ1dGUgJVIgb24gJVI7IgotICAgICAgICAgICAgICAgICAgICAgInVzZSBwcm90b2NvbHMgPj0gNCB0byBlbmFibGUgc3VwcG9ydCIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lLCBvYmopOwotICAgICAgICBQeV9ERUNSRUYoZG90dGVkX3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoZG90dGVkX3BhdGgpOyBpKyspIHsKKyAgICBuID0gUHlMaXN0X0dFVF9TSVpFKGRvdHRlZF9wYXRoKTsKKyAgICBhc3NlcnQobiA+PSAxKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdWJwYXRoID0gUHlMaXN0X0dFVF9JVEVNKGRvdHRlZF9wYXRoLCBpKTsKLSAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VW5pY29kZV9SaWNoQ29tcGFyZSgKICAgICAgICAgICAgIHN1YnBhdGgsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2xvY2FscyksIFB5X0VRKTsKICAgICAgICAgaW50IGlzX2VxdWFsID0gKHJlc3VsdCA9PSBQeV9UcnVlKTsKICAgICAgICAgYXNzZXJ0KFB5Qm9vbF9DaGVjayhyZXN1bHQpKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIGlmIChpc19lcXVhbCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgbG9jYWwgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHIob2JqLCBzdWJwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChvYmogPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSBsb2NhbCBvYmplY3QgJVIiLCBuYW1lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgbG9jYWwgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBvYmogPSB0bXA7CiAgICAgfQotICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgcmV0dXJuIG9iajsKKyAgICByZXR1cm4gZG90dGVkX3BhdGg7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aGljaG1vZHVsZShQeU9iamVjdCAqZ2xvYmFsLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUsIGludCBhbGxvd19xdWFsbmFtZSkKK2dldF9kZWVwX2F0dHJpYnV0ZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICoqcHBhcmVudCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKnBhcmVudCA9IE5VTEw7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QobmFtZXMpKTsKKyAgICBQeV9JTkNSRUYob2JqKTsKKyAgICBuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBpKTsKKyAgICAgICAgUHlfWERFQ1JFRihwYXJlbnQpOworICAgICAgICBwYXJlbnQgPSBvYmo7CisgICAgICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHIocGFyZW50LCBuYW1lKTsKKyAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFyZW50KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGlmIChwcGFyZW50ICE9IE5VTEwpCisgICAgICAgICpwcGFyZW50ID0gcGFyZW50OworICAgIGVsc2UKKyAgICAgICAgUHlfWERFQ1JFRihwYXJlbnQpOworICAgIHJldHVybiBvYmo7Cit9CisKK3N0YXRpYyB2b2lkCityZWZvcm1hdF9hdHRyaWJ1dGVfZXJyb3IoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgYXR0cmlidXRlICVSIG9uICVSIiwgbmFtZSwgb2JqKTsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2dldGF0dHJpYnV0ZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSwgaW50IGFsbG93X3F1YWxuYW1lKQoreworICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aCwgKmF0dHI7CisKKyAgICBpZiAoYWxsb3dfcXVhbG5hbWUpIHsKKyAgICAgICAgZG90dGVkX3BhdGggPSBnZXRfZG90dGVkX3BhdGgob2JqLCBuYW1lKTsKKyAgICAgICAgaWYgKGRvdHRlZF9wYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYXR0ciA9IGdldF9kZWVwX2F0dHJpYnV0ZShvYmosIGRvdHRlZF9wYXRoLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBhdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIG5hbWUpOworICAgIGlmIChhdHRyID09IE5VTEwpCisgICAgICAgIHJlZm9ybWF0X2F0dHJpYnV0ZV9lcnJvcihvYmosIG5hbWUpOworICAgIHJldHVybiBhdHRyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2hpY2htb2R1bGUoUHlPYmplY3QgKmdsb2JhbCwgUHlPYmplY3QgKmRvdHRlZF9wYXRoKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZTsKICAgICBQeU9iamVjdCAqbW9kdWxlc19kaWN0OwogICAgIFB5T2JqZWN0ICptb2R1bGU7Ci0gICAgUHlPYmplY3QgKm9iajsKLSAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlfc3NpemVfdCBpOwogICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgIF9QeV9JREVOVElGSUVSKG1vZHVsZXMpOwogICAgIF9QeV9JREVOVElGSUVSKF9fbWFpbl9fKTsKQEAgLTE2MTYsNiArMTY2Miw3IEBACiAgICAgfQogICAgIGFzc2VydChtb2R1bGVfbmFtZSA9PSBOVUxMKTsKIAorICAgIC8qIEZhbGxiYWNrIG9uIHdhbGtpbmcgc3lzLm1vZHVsZXMgKi8KICAgICBtb2R1bGVzX2RpY3QgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfbW9kdWxlcyk7CiAgICAgaWYgKG1vZHVsZXNfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5tb2R1bGVzIik7CkBAIC0xNjIzLDMxICsxNjcwLDI4IEBACiAgICAgfQogCiAgICAgaSA9IDA7Ci0gICAgd2hpbGUgKChqID0gUHlEaWN0X05leHQobW9kdWxlc19kaWN0LCAmaSwgJm1vZHVsZV9uYW1lLCAmbW9kdWxlKSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VW5pY29kZV9SaWNoQ29tcGFyZSgKLSAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX21haW5fXyksIFB5X0VRKTsKLSAgICAgICAgaW50IGlzX2VxdWFsID0gKHJlc3VsdCA9PSBQeV9UcnVlKTsKLSAgICAgICAgYXNzZXJ0KFB5Qm9vbF9DaGVjayhyZXN1bHQpKTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIGlmIChpc19lcXVhbCkKKyAgICB3aGlsZSAoUHlEaWN0X05leHQobW9kdWxlc19kaWN0LCAmaSwgJm1vZHVsZV9uYW1lLCAmbW9kdWxlKSkgeworICAgICAgICBQeU9iamVjdCAqY2FuZGlkYXRlOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG1vZHVsZV9uYW1lKSAmJgorICAgICAgICAgICAgIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG1vZHVsZV9uYW1lLCAiX19tYWluX18iKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAobW9kdWxlID09IFB5X05vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvYmogPSBnZXRhdHRyaWJ1dGUobW9kdWxlLCBnbG9iYWxfbmFtZSwgYWxsb3dfcXVhbG5hbWUpOwotICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgY2FuZGlkYXRlID0gZ2V0X2RlZXBfYXR0cmlidXRlKG1vZHVsZSwgZG90dGVkX3BhdGgsIE5VTEwpOworICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAob2JqID09IGdsb2JhbCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gZ2xvYmFsKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYobW9kdWxlX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gbW9kdWxlX25hbWU7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgIFB5X0RFQ1JFRihjYW5kaWRhdGUpOwogICAgIH0KIAogICAgIC8qIElmIG5vIG1vZHVsZSBpcyBmb3VuZCwgdXNlIF9fbWFpbl9fLiAqLwpAQCAtMTkzMyw3ICsxOTc3LDcgQEAKICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsICZvcCwgMSkgPCAwKQogICAgICAgICAgICAgZ290byBkb25lOwogCi0gICAgICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCAnZycsIDE3LCAwLCBOVUxMKTsKKyAgICAgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsICdyJywgMCwgUHlfRFRTRl9BRERfRE9UXzAsIE5VTEwpOwogICAgICAgICBpZiAoIWJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTIwMTMsNyArMjA1Nyw3IEBACiAgICAgICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcilzaXplOwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmZMKSB7CisgICAgICAgIGVsc2UgaWYgKChzaXplX3Qpc2l6ZSA8PSAweGZmZmZmZmZmVUwpIHsKICAgICAgICAgICAgIGhlYWRlclswXSA9IEJJTkJZVEVTOwogICAgICAgICAgICAgaGVhZGVyWzFdID0gKHVuc2lnbmVkIGNoYXIpKHNpemUgJiAweGZmKTsKICAgICAgICAgICAgIGhlYWRlclsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMjA1MCw5ICsyMDk0LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmF3X3VuaWNvZGVfZXNjYXBlKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlcHIsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IGksIHNpemUsIGV4cGFuZHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIHNpemVfdCBleHBhbmRzaXplOwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKQEAgLTIwNjcsMTUgKzIxMTIsMTYgQEAKICAgICBlbHNlCiAgICAgICAgIGV4cGFuZHNpemUgPSA2OwogCi0gICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICByZXByID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOworICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJldHVybiByZXByOworICAgIGFzc2VydChQeV9SRUZDTlQocmVwcikgPT0gMSk7CiAKLSAgICBwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOworICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKICAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KQEAgLTIxMDQsMTIgKzIxNTAsMTAgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7Ci0KLWRvbmU6Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwciksIHNpemUpOwotICAgIFB5X0RFQ1JFRihyZXByKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHNpemUgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmVwcjsKIH0KIAogc3RhdGljIGludApAQCAtMjExOCwxMiArMjE2MiwxMyBAQAogICAgIGNoYXIgaGVhZGVyWzldOwogICAgIFB5X3NzaXplX3QgbGVuOwogCisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CiAgICAgaWYgKHNpemUgPD0gMHhmZiAmJiBzZWxmLT5wcm90byA+PSA0KSB7CiAgICAgICAgIGhlYWRlclswXSA9IFNIT1JUX0JJTlVOSUNPREU7CiAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKShzaXplICYgMHhmZik7CiAgICAgICAgIGxlbiA9IDI7CiAgICAgfQotICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmZmZmZlVMKSB7CisgICAgZWxzZSBpZiAoKHNpemVfdClzaXplIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICBoZWFkZXJbMF0gPSBCSU5VTklDT0RFOwogICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcikoc2l6ZSAmIDB4ZmYpOwogICAgICAgICBoZWFkZXJbMl0gPSAodW5zaWduZWQgY2hhcikoKHNpemUgPj4gOCkgJiAweGZmKTsKQEAgLTMwNTgsNiArMzEwMyw5IEBACiAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXJlbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3RuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2xzOwogICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKICAgICBpbnQgc3RhdHVzID0gMDsKQEAgLTMwNzEsMTMgKzMxMTksMTEgQEAKICAgICAgICAgZ2xvYmFsX25hbWUgPSBuYW1lOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgIGdsb2JhbF9uYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fcXVhbG5hbWVfXyk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsX25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19xdWFsbmFtZV9fKTsKKyAgICAgICAgaWYgKGdsb2JhbF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGdsb2JhbF9uYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIGdsb2JhbF9uYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fbmFtZV9fKTsKQEAgLTMwODYsNyArMzEzMiwxMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIGdsb2JhbF9uYW1lLCBzZWxmLT5wcm90byA+PSA0KTsKKyAgICBkb3R0ZWRfcGF0aCA9IGdldF9kb3R0ZWRfcGF0aChtb2R1bGUsIGdsb2JhbF9uYW1lKTsKKyAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgZG90dGVkX3BhdGgpOwogICAgIGlmIChtb2R1bGVfbmFtZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0zMTA1LDcgKzMxNTQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIG9iaiwgbW9kdWxlX25hbWUpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBjbHMgPSBnZXRhdHRyaWJ1dGUobW9kdWxlLCBnbG9iYWxfbmFtZSwgc2VsZi0+cHJvdG8gPj0gNCk7CisgICAgbGFzdG5hbWUgPSBQeUxpc3RfR0VUX0lURU0oZG90dGVkX3BhdGgsIFB5TGlzdF9HRVRfU0laRShkb3R0ZWRfcGF0aCktMSk7CisgICAgUHlfSU5DUkVGKGxhc3RuYW1lKTsKKyAgICBjbHMgPSBnZXRfZGVlcF9hdHRyaWJ1dGUobW9kdWxlLCBkb3R0ZWRfcGF0aCwgJnBhcmVudCk7CisgICAgUHlfQ0xFQVIoZG90dGVkX3BhdGgpOwogICAgIGlmIChjbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlBpY2tsaW5nRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgcGlja2xlICVSOiBhdHRyaWJ1dGUgbG9va3VwICVTIG9uICVTIGZhaWxlZCIsCkBAIC0zMTkyLDYgKzMyNDQsMTEgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgIGdlbl9nbG9iYWw6CisgICAgICAgIGlmIChwYXJlbnQgPT0gbW9kdWxlKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYobGFzdG5hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGdsb2JhbF9uYW1lKTsKKyAgICAgICAgICAgIGdsb2JhbF9uYW1lID0gbGFzdG5hbWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgc3RhY2tfZ2xvYmFsX29wID0gU1RBQ0tfR0xPQkFMOwogCkBAIC0zMjAzLDYgKzMyNjAsMTUgQEAKICAgICAgICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCAmc3RhY2tfZ2xvYmFsX29wLCAxKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChwYXJlbnQgIT0gbW9kdWxlKSB7CisgICAgICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVkdWNlX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiKE8oT08pKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPmdldGF0dHIsIHBhcmVudCwgbGFzdG5hbWUpOworICAgICAgICAgICAgc3RhdHVzID0gc2F2ZV9yZWR1Y2Uoc2VsZiwgcmVkdWNlX3ZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2VfdmFsdWUpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdlbmVyYXRlIGEgbm9ybWFsIGdsb2JhbCBvcGNvZGUgaWYgd2UgYXJlIHVzaW5nIGEgcGlja2xlCiAgICAgICAgICAgICAgICBwcm90b2NvbCA8IDQsIG9yIGlmIHRoZSBvYmplY3QgaXMgbm90IHJlZ2lzdGVyZWQgaW4gdGhlCkBAIC0zMjgxLDYgKzMzNDcsOSBAQAogICAgIFB5X1hERUNSRUYobW9kdWxlX25hbWUpOwogICAgIFB5X1hERUNSRUYoZ2xvYmFsX25hbWUpOwogICAgIFB5X1hERUNSRUYobW9kdWxlKTsKKyAgICBQeV9YREVDUkVGKHBhcmVudCk7CisgICAgUHlfWERFQ1JFRihkb3R0ZWRfcGF0aCk7CisgICAgUHlfWERFQ1JFRihsYXN0bmFtZSk7CiAKICAgICByZXR1cm4gc3RhdHVzOwogfQpAQCAtMzQ2MCwyMCArMzUyOSwxOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzZWxmLT5wcm90byA+PSA0KSB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKLSAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfZXhfXykpID09IDA7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKKyAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKKyAgICAgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdXNlX25ld29ial9leCkgeworICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOworICAgICAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ29tcGFyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX18pKSA9PSAwOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7Ci0gICAgICAgICAgICB1c2VfbmV3b2JqID0gUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmUoCi0gICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX18pKSA9PSAwOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwotICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYobmFtZSk7CiAgICAgfQogCiAgICAgaWYgKHVzZV9uZXdvYmpfZXgpIHsKQEAgLTQwMzgsOCArNDEwNiw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NmUyMjlmM2IxZjQzMzJmIGlucHV0PWI4Y2RlYjdlM2Y1ZWU2NzRdKi8KK19waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVmMzEwNzhkYWIxN2ZiMCBpbnB1dD1iOGNkZWI3ZTNmNWVlNjc0XSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CiAgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwpAQCAtNDUzNCwxMCArNDYwMywxMCBAQAogY2FsY19iaW5zaXplKGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBzaXplX3QgeCA9IDA7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmJ5dGVzICYmIGkgPCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlcyAmJiAoc2l6ZV90KWkgPCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CiAgICAgICAgIHggfD0gKHNpemVfdCkgc1tpXSA8PCAoOCAqIGkpOwogICAgIH0KIApAQCAtNDU1Niw3ICs0NjI1LDcgQEAKIGNhbGNfYmluaW50KGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBsb25nIHggPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlczsgaSsrKSB7CkBAIC02MjM0LDggKzYzMDMsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0Yzc3NDM3ZTA4OGUxODggaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLworX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlY2MwOGQ3ZjllZDQxZTMgaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLwogewogICAgIFB5T2JqZWN0ICpnbG9iYWw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXNfZGljdDsKQEAgLTY0NDYsOCArNjUxNywxMCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWVkMWQ4NGQzMTVmM2I1IGlucHV0PTMwYjRkYzllOTc2Yjg5MGNdKi8KK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUyYzhjZTc0OGVkYzU3YjAgaW5wdXQ9MzBiNGRjOWU5NzZiODkwY10qLwogewogICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKQEAgLTY4NzUsOCArNjk0OCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTYwNmU2MjZkNTUzODUwZCBpbnB1dD1lOWU1ZmRkNDhkZTkyZWFlXSovCitfcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkZTdkZmY4OWM0MDY4MTYgaW5wdXQ9ZTllNWZkZDQ4ZGU5MmVhZV0qLwogewogICAgIFBpY2tsZXJPYmplY3QgKnBpY2tsZXIgPSBfUGlja2xlcl9OZXcoKTsKIApAQCAtNjkyOCw4ICs3MDAyLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzdmMGRlZWZlNWI4OGVlIGlucHV0PTI5M2RiZWRhMTgxNTgwYjddKi8KK19waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhYTM4MGRiNTZmZTA3YjkgaW5wdXQ9MjkzZGJlZGExODE1ODBiN10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUGlja2xlck9iamVjdCAqcGlja2xlciA9IF9QaWNrbGVyX05ldygpOwpAQCAtNjk4OCw4ICs3MDYzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY4YzYxMzU2YzE3MjY1NCBpbnB1dD1kYTk3MzcyZTM4ZTUxMGE2XSovCitfcGlja2xlX2xvYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OThmMWM1N2NiMmI0ZWIxIGlucHV0PWRhOTczNzJlMzhlNTEwYTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFVucGlja2xlck9iamVjdCAqdW5waWNrbGVyID0gX1VucGlja2xlcl9OZXcoKTsKQEAgLTcwNDEsOCArNzExNyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjM4NDVhZDExMGIyNTIyIGlucHV0PWY1N2YwZmRhYTJiNGNiOGJdKi8KK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjFlOWNkYjAxZTM2YTczNiBpbnB1dD1mNTdmMGZkYWEyYjRjYjhiXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBVbnBpY2tsZXJPYmplY3QgKnVucGlja2xlciA9IF9VbnBpY2tsZXJfTmV3KCk7CkBAIC03MTA0LDYgKzcxODEsNyBAQAogICAgIFB5X1ZJU0lUKHN0LT5uYW1lX21hcHBpbmdfM3RvMik7CiAgICAgUHlfVklTSVQoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X1ZJU0lUKHN0LT5jb2RlY3NfZW5jb2RlKTsKKyAgICBQeV9WSVNJVChzdC0+Z2V0YXR0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggNDUyZDU5Mi4uYTMyN2ZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogewogICAgIGludCBmZF9kaXJfZmQ7CiAKLSAgICBmZF9kaXJfZmQgPSBfUHlfb3BlbihGRF9ESVIsIE9fUkRPTkxZKTsKKyAgICBmZF9kaXJfZmQgPSBfUHlfb3Blbl9ub3JhaXNlKEZEX0RJUiwgT19SRE9OTFkpOwogICAgIGlmIChmZF9kaXJfZmQgPT0gLTEpIHsKICAgICAgICAgLyogTm8gd2F5IHRvIGdldCBhIGxpc3Qgb2Ygb3BlbiBmZHMuICovCiAgICAgICAgIF9jbG9zZV9mZHNfYnlfYnJ1dGVfZm9yY2Uoc3RhcnRfZmQsIHB5X2Zkc190b19rZWVwKTsKQEAgLTM5Miw3ICszOTIsNyBAQAogICAgICAgICAgICBQeU9iamVjdCAqcHJlZXhlY19mbiwKICAgICAgICAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSkKIHsKLSAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHVudXNlZCwgcmVhY2hlZF9wcmVleGVjID0gMDsKKyAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHJlYWNoZWRfcHJlZXhlYyA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBjb25zdCBjaGFyKiBlcnJfbXNnID0gIiI7CiAgICAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGEgaGV4IGludGVnZXIuICBXZSBjYW4ndCBtYWxsb2MuICovCkBAIC01MDYsMjggKzUwNiwyOSBAQAogICAgIHNhdmVkX2Vycm5vID0gZXJybm87CiAgICAgLyogUmVwb3J0IHRoZSBwb3NpeCBlcnJvciB0byBvdXIgcGFyZW50IHByb2Nlc3MuICovCiAgICAgLyogV2UgaWdub3JlIGFsbCB3cml0ZSgpIHJldHVybiB2YWx1ZXMgYXMgdGhlIHRvdGFsIHNpemUgb2Ygb3VyIHdyaXRlcyBpcwotICAgICAqIGxlc3MgdGhhbiBQSVBFQlVGIGFuZCB3ZSBjYW5ub3QgZG8gYW55dGhpbmcgYWJvdXQgYW4gZXJyb3IgYW55d2F5cy4gKi8KKyAgICAgICBsZXNzIHRoYW4gUElQRUJVRiBhbmQgd2UgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IGFuIGVycm9yIGFueXdheXMuCisgICAgICAgVXNlIF9QeV93cml0ZV9ub3JhaXNlKCkgdG8gcmV0cnkgd3JpdGUoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICAgICAgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KICAgICBpZiAoc2F2ZWRfZXJybm8pIHsKICAgICAgICAgY2hhciAqY3VyOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiT1NFcnJvcjoiLCA4KTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIk9TRXJyb3I6IiwgOCk7CiAgICAgICAgIGN1ciA9IGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pOwogICAgICAgICB3aGlsZSAoc2F2ZWRfZXJybm8gIT0gMCAmJiBjdXIgPiBoZXhfZXJybm8pIHsKLSAgICAgICAgICAgICotLWN1ciA9ICIwMTIzNDU2Nzg5QUJDREVGIltzYXZlZF9lcnJubyAlIDE2XTsKKyAgICAgICAgICAgICotLWN1ciA9IFB5X2hleGRpZ2l0c1tzYXZlZF9lcnJubyAlIDE2XTsKICAgICAgICAgICAgIHNhdmVkX2Vycm5vIC89IDE2OwogICAgICAgICB9Ci0gICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsIGN1ciwgaGV4X2Vycm5vICsgc2l6ZW9mKGhleF9lcnJubykgLSBjdXIpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiOiIsIDEpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBjdXIsIGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pIC0gY3VyKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIjoiLCAxKTsKICAgICAgICAgaWYgKCFyZWFjaGVkX3ByZWV4ZWMpIHsKICAgICAgICAgICAgIC8qIEluZGljYXRlIHRvIHRoZSBwYXJlbnQgdGhhdCB0aGUgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGV4ZWMoKS4gKi8KLSAgICAgICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKKyAgICAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKICAgICAgICAgfQogICAgICAgICAvKiBXZSBjYW4ndCBjYWxsIHN0cmVycm9yKHNhdmVkX2Vycm5vKS4gIEl0IGlzIG5vdCBhc3luYyBzaWduYWwgc2FmZS4KICAgICAgICAgICogVGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbG9vayB0aGUgZXJyb3IgbWVzc2FnZSB1cC4gKi8KICAgICB9IGVsc2UgewotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOwogICAgIH0KLSAgICBpZiAodW51c2VkKSByZXR1cm47ICAvKiBzaWxseT8geWVzISBhdm9pZHMgZ2NjIGNvbXBpbGVyIHdhcm5pbmcuICovCiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA0Mzc3ZWUwLi5kZjE0OWM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjksMTcgKzY5LDIxIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwogCisjaWZuZGVmIFBZX1VJTlQzMl9UCisjICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNlbmRpZgorCiAvKiBQZXJpb2QgcGFyYW1ldGVycyAtLSBUaGVzZSBhcmUgYWxsIG1hZ2ljLiAgRG9uJ3QgY2hhbmdlLiAqLwogI2RlZmluZSBOIDYyNAogI2RlZmluZSBNIDM5NwotI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLwotI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCi0jZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLworI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVSAgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLworI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVICAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCisjZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlUgIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIHVuc2lnbmVkIGxvbmcgc3RhdGVbTl07CiAgICAgaW50IGluZGV4OworICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05MSwxMyArOTUsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZworc3RhdGljIFBZX1VJTlQzMl9UCiBnZW5yYW5kX2ludDMyKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICB1bnNpZ25lZCBsb25nIHk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07CisgICAgUFlfVUlOVDMyX1QgeTsKKyAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKICAgICAvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMDUsMjIgKzEwOSwyMiBAQAogCiAgICAgICAgIGZvciAoa2s9MDtrazxOLU07a2srKykgewogICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOwotICAgICAgICAgICAgbXRba2tdID0gbXRba2srTV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVdOwogICAgICAgICB9CiAgICAgICAgIGZvciAoO2trPE4tMTtraysrKSB7CiAgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKICAgICAgICAgfQogICAgICAgICB5ID0gKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOwotICAgICAgICBtdFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKIAogICAgICAgICBzZWxmLT5pbmRleCA9IDA7CiAgICAgfQogCiAgICAgeSA9IG10W3NlbGYtPmluZGV4KytdOwogICAgIHkgXj0gKHkgPj4gMTEpOwotICAgIHkgXj0gKHkgPDwgNykgJiAweDlkMmM1NjgwVUw7Ci0gICAgeSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAwVUw7CisgICAgeSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODBVOworICAgIHkgXj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFU7CiAgICAgeSBePSAoeSA+PiAxOCk7CiAgICAgcmV0dXJuIHk7CiB9CkBAIC0xMzcsMjggKzE0MSwyNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9yYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIHVuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIHVuc2lnbmVkIGxvbmcgKm10OworICAgIFBZX1VJTlQzMl9UICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7Ci0gICAgbXRbMF09IHMgJiAweGZmZmZmZmZmVUw7CisgICAgbXRbMF09IHM7CiAgICAgZm9yIChtdGk9MTsgbXRpPE47IG10aSsrKSB7CiAgICAgICAgIG10W210aV0gPQotICAgICAgICAoMTgxMjQzMzI1M1VMICogKG10W210aS0xXSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7CisgICAgICAgICgxODEyNDMzMjUzVSAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkpOwogICAgICAgICAvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVsdGlwbGllci4gKi8KICAgICAgICAgLyogSW4gdGhlIHByZXZpb3VzIHZlcnNpb25zLCBNU0JzIG9mIHRoZSBzZWVkIGFmZmVjdCAgICovCiAgICAgICAgIC8qIG9ubHkgTVNCcyBvZiB0aGUgYXJyYXkgbXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgIC8qIDIwMDIvMDEvMDkgbW9kaWZpZWQgYnkgTWFrb3RvIE1hdHN1bW90byAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOwotICAgICAgICAvKiBmb3IgPjMyIGJpdCBtYWNoaW5lcyAqLwogICAgIH0KICAgICBzZWxmLT5pbmRleCA9IG10aTsKICAgICByZXR1cm47CkBAIC0xNjgsMzIgKzE3MCwzMCBAQAogLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqLwogLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCiBzdGF0aWMgUHlPYmplY3QgKgotaW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKLSAgICBpbml0X2dlbnJhbmQoc2VsZiwgMTk2NTAyMThVTCk7CisgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CiAgICAgaT0xOyBqPTA7CiAgICAgayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CiAgICAgZm9yICg7IGs7IGstLSkgewotICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1VUwpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKHVuc2lnbmVkIGxvbmcpajsgLyogbm9uIGxpbmVhciAqLwotICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKLSAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVVMKSkKLSAgICAgICAgICAgICAgICAgLSAodW5zaWduZWQgbG9uZylpOyAvKiBub24gbGluZWFyICovCi0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8KKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQorICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKLSAgICBtdFswXSA9IDB4ODAwMDAwMDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KKyAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTIwOCw5ICsyMDgsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOyAgICAgICAgICAgIC8qIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgKi8KICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICprZXlfYXNfYnl0ZXMgPSBOVUxMOwotICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkLCBpOworICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKQEAgLTIyMSw3ICsyMjAsNyBAQAogICAgICAgICB0aW1lX3Qgbm93OwogCiAgICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAodW5zaWduZWQgbG9uZylub3cpOworICAgICAgICBpbml0X2dlbnJhbmQoc2VsZiwgKFBZX1VJTlQzMl9UKW5vdyk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQpAQCAtMjQ5LDM1ICsyNDgsMzEgQEAKICAgICBrZXl1c2VkID0gYml0cyA9PSAwID8gMSA6IChiaXRzIC0gMSkgLyAzMiArIDE7CiAKICAgICAvKiBDb252ZXJ0IHNlZWQgdG8gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXlfYXNfYnl0ZXMgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5X2FzX2J5dGVzID09IE5VTEwpIHsKKyAgICBrZXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CisgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9hc19ieXRlcywga2V5dXNlZCAqIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgLyogbGl0dGxlLWVuZGlhbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilrZXksIGtleXVzZWQgKiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOyAvKiB1bnNpZ25lZCAqLwogICAgIGlmIChyZXMgPT0gLTEpIHsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOworICAgICAgICBQeU1lbV9GcmVlKGtleSk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAKLSAgICAvKiBGaWxsIGFycmF5IG9mIHVuc2lnbmVkIGxvbmdzIGZyb20gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX01hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOwotICAgICAgICBnb3RvIERvbmU7CisjaWYgUFlfQklHX0VORElBTgorICAgIHsKKyAgICAgICAgc2l6ZV90IGksIGo7CisgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCisgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CisgICAgICAgICAgICBrZXlbal0gPSB0bXA7CisgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXVzZWQ7IGkrKykgewotICAgICAgICBrZXlbaV0gPQotICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAwXSA8PCAwKSArCi0gICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDFdIDw8IDgpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgMl0gPDwgMTYpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgM10gPDwgMjQpOwotICAgIH0KLSAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7CisjZW5kaWYKICAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CkBAIC0zMzQsNyArMzI5LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSBlbGVtZW50ICYgMHhmZmZmZmZmZlVMOyAvKiBNYWtlIHN1cmUgd2UgZ2V0IHNhbmUgc3RhdGUgKi8KKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzQ5LDkgKzM0NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGssIGksIGJ5dGVzOwotICAgIHVuc2lnbmVkIGxvbmcgcjsKLSAgICB1bnNpZ25lZCBjaGFyICpieXRlYXJyYXk7CisgICAgaW50IGssIGksIHdvcmRzOworICAgIFBZX1VJTlQzMl9UIHI7CisgICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzY2LDI3ICszNjEsMzAgQEAKICAgICBpZiAoayA8PSAzMikgIC8qIEZhc3QgcGF0aCAqLwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKLSAgICBieXRlcyA9ICgoayAtIDEpIC8gMzIgKyAxKSAqIDQ7Ci0gICAgYnl0ZWFycmF5ID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoYnl0ZXMpOwotICAgIGlmIChieXRlYXJyYXkgPT0gTlVMTCkgeworICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKKyAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogRmlsbC1vdXQgd2hvbGUgd29yZHMsIGJ5dGUtYnktYnl0ZSB0byBhdm9pZCBlbmRpYW5uZXNzIGlzc3VlcyAqLwotICAgIGZvciAoaT0wIDsgaTxieXRlcyA7IGkrPTQsIGstPTMyKSB7CisgICAgLyogRmlsbC1vdXQgYml0cyBvZiBsb25nIGludGVnZXIsIGJ5IDMyLWJpdCB3b3JkcywgZnJvbSBsZWFzdCBzaWduaWZpY2FudAorICAgICAgIHRvIG1vc3Qgc2lnbmlmaWNhbnQuICovCisjaWYgUFlfTElUVExFX0VORElBTgorICAgIGZvciAoaSA9IDA7IGkgPCB3b3JkczsgaSsrLCBrIC09IDMyKQorI2Vsc2UKKyAgICBmb3IgKGkgPSB3b3JkcyAtIDE7IGkgPj0gMDsgaS0tLCBrIC09IDMyKQorI2VuZGlmCisgICAgewogICAgICAgICByID0gZ2VucmFuZF9pbnQzMihzZWxmKTsKICAgICAgICAgaWYgKGsgPCAzMikKLSAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOwotICAgICAgICBieXRlYXJyYXlbaSswXSA9ICh1bnNpZ25lZCBjaGFyKXI7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzFdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gOCk7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzJdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gMTYpOwotICAgICAgICBieXRlYXJyYXlbaSszXSA9ICh1bnNpZ25lZCBjaGFyKShyID4+IDI0KTsKKyAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOyAgLyogRHJvcCBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisgICAgICAgIHdvcmRhcnJheVtpXSA9IHI7CiAgICAgfQogCi0gICAgLyogbGl0dGxlIGVuZGlhbiBvcmRlciB0byBtYXRjaCBieXRlYXJyYXkgYXNzaWdubWVudCBvcmRlciAqLwotICAgIHJlc3VsdCA9IF9QeUxvbmdfRnJvbUJ5dGVBcnJheShieXRlYXJyYXksIGJ5dGVzLCAxLCAwKTsKLSAgICBQeU1lbV9GcmVlKGJ5dGVhcnJheSk7CisgICAgcmVzdWx0ID0gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCh1bnNpZ25lZCBjaGFyICopd29yZGFycmF5LCB3b3JkcyAqIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sIDAgLyogdW5zaWduZWQgKi8pOworICAgIFB5TWVtX0ZyZWUod29yZGFycmF5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggM2IyYTM4ZS4uNjZiNmUzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtMjQ5LDcgKzI0OSw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX3NjcHJveHkodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2RfbW9kdWxlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IGQzOTAzMjguLmEwOGViZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtMTI0MSw2ICsxMjQxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhNT0RVTEVfTkFNRSAiLkNvbm5lY3Rpb24oKSIsIGt3YXJncykpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiwgJnNxbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCAwYzk3MzRjLi5mYmQ5MDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgKiBmaXJzdCBnZXQgY2FsbGVkIHdpdGggY291bnQ9MD8gKi8KICAgICBkb3VibGUgdGltZW91dF9zdGFydGVkOwogCi0gICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlTdHJpbmcgd2l0aCB0aGUgaXNvbGF0aW9uIGxldmVsICovCisgICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlVbmljb2RlIHdpdGggdGhlIGlzb2xhdGlvbiBsZXZlbCAqLwogICAgIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWw7CiAKICAgICAvKiBOVUxMIGZvciBhdXRvY29tbWl0LCBvdGhlcndpc2UgYSBzdHJpbmcgd2l0aCB0aGUgQkVHSU4gc3RhdGVtZW50OyB3aWxsIGJlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZGI5NmIwMi4uYzE1OTljMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtNDYsNyArNDYsNyBAQAogCiAgICAgZHN0ID0gYnVmOwogICAgICpkc3QgPSAwOwotICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIGRzdCAtIGJ1ZiA8IHNpemVvZihidWYpIC0gMikgeworICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIChkc3QgLSBidWYpIDwgKChQeV9zc2l6ZV90KXNpemVvZihidWYpIC0gMikpIHsKICAgICAgICAgKmRzdCsrID0gUHlfVE9MT1dFUigqc3JjKyspOwogICAgIH0KIApAQCAtMzM0LDExICszMzQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIGRlYnVnIG1vZGUsIHR5cGVfY2FsbCgpIGZhaWxzIHdpdGggYW4gYXNzZXJ0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSAiPHVua25vd24gY29sdW1uIG5hbWU+IjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKaW5kZXggM2E5OTQ0Zi4uNjk0MTcxNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG8sIFB5T2JqZWN0ICphbHQpOwogCiBleHRlcm4gUHlPYmplY3QgKgotICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOyAgIAorICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogI2RlZmluZSBweXNxbGl0ZV9hZGFwdF9kb2MgXAogICAgICJhZGFwdChvYmosIHByb3RvY29sLCBhbHRlcm5hdGUpIC0+IGFkYXB0IG9iaiB0byBnaXZlbiBwcm90b2NvbC4gTm9uLXN0YW5kYXJkLiIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCmluZGV4IGVlNzM0NDYuLjA3NTg0ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKQEAgLTE0Miw4ICsxNDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpZHgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2xpY2VzIG5vdCBpbXBsZW1lbnRlZCwgeWV0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlbShzZWxmLT5kYXRhLCBpZHgpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJJbmRleCBtdXN0IGJlIGludCBvciBzdHJpbmciKTsKQEAgLTE1OSw3ICsxNTgsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19rZXlzKHB5c3FsaXRlX1Jvdyogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGxpc3Q7Ci0gICAgaW50IG5pdGVtcywgaTsKKyAgICBQeV9zc2l6ZV90IG5pdGVtcywgaTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICghbGlzdCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCAzMDBkODgzLi40MDE2YTQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtOTcsNDggKzk3LDI1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogc2VhcmNoIGVuZ2luZSBzdGF0ZSAqLwogCi0vKiBkZWZhdWx0IGNoYXJhY3RlciBwcmVkaWNhdGVzIChydW4gc3JlX2NoYXJzLnB5IHRvIHJlZ2VuZXJhdGUgdGFibGVzKSAqLwotCi0jZGVmaW5lIFNSRV9ESUdJVF9NQVNLIDEKLSNkZWZpbmUgU1JFX1NQQUNFX01BU0sgMgotI2RlZmluZSBTUkVfTElORUJSRUFLX01BU0sgNAotI2RlZmluZSBTUkVfQUxOVU1fTUFTSyA4Ci0jZGVmaW5lIFNSRV9XT1JEX01BU0sgMTYKLQotLyogRklYTUU6IHRoaXMgYXNzdW1lcyBBU0NJSS4gIGNyZWF0ZSB0YWJsZXMgaW4gaW5pdF9zcmUoKSBpbnN0ZWFkICovCi0KLXN0YXRpYyBjaGFyIHNyZV9jaGFyX2luZm9bMTI4XSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgNiwgMiwKLTIsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsCi0wLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsCi0yNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsCi0wLCAwLCAxNiwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgMCwgMCB9OwotCi1zdGF0aWMgY2hhciBzcmVfY2hhcl9sb3dlclsxMjhdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LAotMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LAotMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLAotNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLAotNjEsIDYyLCA2MywgNjQsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LAotMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsCi0xMjIsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsCi0xMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKLTEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3IH07Ci0KICNkZWZpbmUgU1JFX0lTX0RJR0lUKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX0RJR0lUX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU0RJR0lUKGNoKSkKICNkZWZpbmUgU1JFX0lTX1NQQUNFKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1NQQUNFX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU1NQQUNFKGNoKSkKICNkZWZpbmUgU1JFX0lTX0xJTkVCUkVBSyhjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9MSU5FQlJFQUtfTUFTSykgOiAwKQorICAgICgoY2gpID09ICdcbicpCiAjZGVmaW5lIFNSRV9JU19BTE5VTShjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9BTE5VTV9NQVNLKSA6IDApCisgICAgKChjaCkgPCAxMjggJiYgUHlfSVNBTE5VTShjaCkpCiAjZGVmaW5lIFNSRV9JU19XT1JEKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1dPUkRfTUFTSykgOiAwKQorICAgICgoY2gpIDwgMTI4ICYmIChQeV9JU0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykpCiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX2xvd2VyKHVuc2lnbmVkIGludCBjaCkKIHsKLSAgICByZXR1cm4gKChjaCkgPCAxMjggPyAodW5zaWduZWQgaW50KXNyZV9jaGFyX2xvd2VyW2NoXSA6IGNoKTsKKyAgICByZXR1cm4gKChjaCkgPCAxMjggPyBQeV9UT0xPV0VSKGNoKSA6IGNoKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzcmVfdXBwZXIodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAoKGNoKSA8IDEyOCA/IFB5X1RPVVBQRVIoY2gpIDogY2gpOwogfQogCiAvKiBsb2NhbGUtc3BlY2lmaWMgY2hhcmFjdGVyIHByZWRpY2F0ZXMgKi8KQEAgLTE1Miw2ICsxMjksMTEgQEAKICAgICByZXR1cm4gKChjaCkgPCAyNTYgPyAodW5zaWduZWQgaW50KXRvbG93ZXIoKGNoKSkgOiBjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX2xvY2FsZSh1bnNpZ25lZCBpbnQgY2gpCit7CisgICAgcmV0dXJuICgoY2gpIDwgMjU2ID8gKHVuc2lnbmVkIGludCl0b3VwcGVyKChjaCkpIDogY2gpOworfQorCiAvKiB1bmljb2RlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCiAKICNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoY2gpCkBAIC0xNjUsNiArMTQ3LDExIEBACiAgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX3VuaWNvZGUodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPVVBQRVIoY2gpOworfQorCiBMT0NBTChpbnQpCiBzcmVfY2F0ZWdvcnkoU1JFX0NPREUgY2F0ZWdvcnksIHVuc2lnbmVkIGludCBjaCkKIHsKQEAgLTI3MSwyNSArMjU4LDUwIEBACiAKIC8qIHNlZSBzcmUuaCBmb3Igb2JqZWN0IGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqLCBTUkVfU1RBVEUqLCBQeV9zc2l6ZV90KTsKLXN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqIGt3KTsKK3N0YXRpYyBQeU9iamVjdCAqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKiwgUHlPYmplY3QgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCk7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zcmVfY29kZXNpemUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc3JlCitjbGFzcyBfc3JlLlNSRV9QYXR0ZXJuICJQYXR0ZXJuT2JqZWN0ICoiICImUGF0dGVybl9UeXBlIgorY2xhc3MgX3NyZS5TUkVfTWF0Y2ggIk1hdGNoT2JqZWN0ICoiICImTWF0Y2hfVHlwZSIKK2NsYXNzIF9zcmUuU1JFX1NjYW5uZXIgIlNjYW5uZXJPYmplY3QgKiIgIiZTY2FubmVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMDIzMGVjMTlhMGRlYWM4XSovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBNYXRjaF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTY2FubmVyX1R5cGU7CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuZ2V0Y29kZXNpemUgLT4gaW50CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0Y29kZXNpemVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5NGYxZjk4ZWY0ODgzZTUgaW5wdXQ9YmQ2ZjZlY2Y0OTE2YmIyYl0qLwogewotICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2YoU1JFX0NPREUpKTsKKyAgICByZXR1cm4gc2l6ZW9mKFNSRV9DT0RFKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXNyZV9nZXRsb3dlcihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLmdldGxvd2VyIC0+IGludAorCisgICAgY2hhcmFjdGVyOiBpbnQKKyAgICBmbGFnczogaW50CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMzYxNmFlMmE0YzMwNiBpbnB1dD0wODdkMmYxYzQ0YmJjYTZmXSovCiB7Ci0gICAgaW50IGNoYXJhY3RlciwgZmxhZ3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZjaGFyYWN0ZXIsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOworICAgICAgICByZXR1cm4gc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKSk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIHJldHVybiBzcmVfbG93ZXJfdW5pY29kZShjaGFyYWN0ZXIpOworICAgIHJldHVybiBzcmVfbG93ZXIoY2hhcmFjdGVyKTsKIH0KIAogTE9DQUwodm9pZCkKQEAgLTMyOCw3ICszNDAsNyBAQAogCiAgICAgLyogZ2V0IHBvaW50ZXIgdG8gYnl0ZSBzdHJpbmcgYnVmZmVyICovCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdHJpbmcsIHZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ1ZmZlciIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzU3LDYgKzM2OSwxMSBAQAogCiAgICAgbWVtc2V0KHN0YXRlLCAwLCBzaXplb2YoU1JFX1NUQVRFKSk7CiAKKyAgICBzdGF0ZS0+bWFyayA9IFB5TWVtX05ldyh2b2lkICosIHBhdHRlcm4tPmdyb3VwcyAqIDIpOworICAgIGlmICghc3RhdGUtPm1hcmspIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQogICAgIHN0YXRlLT5sYXN0bWFyayA9IC0xOwogICAgIHN0YXRlLT5sYXN0aW5kZXggPSAtMTsKIApAQCAtMzY3LDEyICszODQsMTIgQEAKIAogICAgIGlmIChpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKCFpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPiAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtNDAwLDE1ICs0MTcsMjMgQEAKICAgICBzdGF0ZS0+cG9zID0gc3RhcnQ7CiAgICAgc3RhdGUtPmVuZHBvcyA9IGVuZDsKIAotICAgIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKKyAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKLSAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl9sb2NhbGU7CisgICAgfQorICAgIGVsc2UgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgewogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfdW5pY29kZTsKLSAgICBlbHNlCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl91bmljb2RlOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyOworICAgICAgICBzdGF0ZS0+dXBwZXIgPSBzcmVfdXBwZXI7CisgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZzsKICAgZXJyOgorICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogICAgIGlmIChzdGF0ZS0+YnVmZmVyLmJ1ZikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC00MjEsNiArNDQ2LDggQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzdGF0ZS0+c3RyaW5nKTsKICAgICBkYXRhX3N0YWNrX2RlYWxsb2Moc3RhdGUpOworICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogfQogCiAvKiBjYWxjdWxhdGUgb2Zmc2V0IGZyb20gc3RhcnQgb2Ygc3RyaW5nICovCkBAIC01NTAsMjYgKzU3NywzMiBAQAogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4ubWF0Y2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRiNGIxZGEzYmIyZDg0ZSBpbnB1dD0zZDA3OWFhOTk5NzliODFkXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBwb3MgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKKyAgICBQeU9iamVjdCAqbWF0Y2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHBhdHRlcm4sICJwYXR0ZXJuIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCAoUGF0dGVybk9iamVjdCAqKXNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwotICAgIGlmICghc3RyaW5nKQorICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIChQYXR0ZXJuT2JqZWN0ICopc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CkBAIC01NzksMzQgKzYxMiw0MyBAQAogICAgIHN0YXR1cyA9IHNyZV9tYXRjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgMCk7CiAKICAgICBUUkFDRSgoInwlcHwlcHxFTkRcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKKyAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIHJldHVybiBtYXRjaDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uZnVsbG1hdGNoCisKKyAgICBzdHJpbmc6IG9iamVjdCA9IE5VTEwKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisgICAgKgorICAgIHBhdHRlcm46IG9iamVjdCA9IE5VTEwKKworTWF0Y2hlcyBhZ2FpbnN0IGFsbCBvZiB0aGUgc3RyaW5nCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM5OGJjNWRhNzQ0ZWE5NCBpbnB1dD1kNDIyODYwNmNjMTI1ODBmXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOmZ1bGxtYXRjaCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInBhdHRlcm4iKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKQEAgLTYxNiwzNCArNjU4LDQ1IEBACiAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCAxKTsKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAorICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOwogICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIHJldHVybiBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zZWFyY2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitTY2FuIHRocm91Z2ggc3RyaW5nIGxvb2tpbmcgZm9yIGEgbWF0Y2gsIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIG1hdGNoIG9iamVjdCBpbnN0YW5jZS4KKworUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4MzkzOTRhMThlNWVhNGYgaW5wdXQ9ZGFiNDI3MjBmNGJlM2E0Yl0qLwogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKKyAgICBQeU9iamVjdCAqbWF0Y2g7CiAKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbm4kTzpzZWFyY2giLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kLCAmc3RyaW5nMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHN0cmluZzIsICJwYXR0ZXJuIik7CisgICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHBhdHRlcm4sICJwYXR0ZXJuIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwpAQCAtNjUyLDEyICs3MDUsMTQgQEAKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmV0dXJuIHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC03MDcsMjggKzc2MiwzNCBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5maW5kYWxsCisKKyAgICBzdHJpbmc6IG9iamVjdCA9IE5VTEwKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisgICAgKgorICAgIHNvdXJjZTogb2JqZWN0ID0gTlVMTAorCitSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBvZiBwYXR0ZXJuIGluIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMjk1NDk4YjMwMDYzOWQgaW5wdXQ9ZGY2ODgzNTVjMDU2YjlkZV0qLwogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeU9iamVjdCogbGlzdDsKICAgICBQeV9zc2l6ZV90IHN0YXR1czsKICAgICBQeV9zc2l6ZV90IGksIGIsIGU7CiAKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOmZpbmRhbGwiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kLCAmc3RyaW5nMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHN0cmluZzIsICJzb3VyY2UiKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc291cmNlLCAic291cmNlIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CkBAIC04MDgsMTQgKzg2OSwyOCBAQAogCiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uZmluZGl0ZXIKKworICAgIHN0cmluZzogb2JqZWN0CisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorCitSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgZm9yIHRoZSBSRSBwYXR0ZXJuIGluIHN0cmluZy4KKworRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGEgbWF0Y2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYmIxYTBhZWIzOGJiMTQgaW5wdXQ9NjEyYWFiNjllOWZlMDhlNF0qLwogewogICAgIFB5T2JqZWN0KiBzY2FubmVyOwogICAgIFB5T2JqZWN0KiBzZWFyY2g7CiAgICAgUHlPYmplY3QqIGl0ZXJhdG9yOwogCi0gICAgc2Nhbm5lciA9IHBhdHRlcm5fc2Nhbm5lcihwYXR0ZXJuLCBhcmdzLCBrdyk7CisgICAgc2Nhbm5lciA9IHBhdHRlcm5fc2Nhbm5lcihzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKICAgICBpZiAoIXNjYW5uZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC04MzAsOCArOTA1LDM4IEBACiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NwbGl0KFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnNjYW5uZXIKKworICAgIHN0cmluZzogb2JqZWN0CisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0ZWE1NDhhZWQzMzg5MGIgaW5wdXQ9M2FhY2RiZGU3N2EzYTYzN10qLworeworICAgIHJldHVybiBwYXR0ZXJuX3NjYW5uZXIoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uc3BsaXQKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gMAorICAgICoKKyAgICBzb3VyY2U6IG9iamVjdCA9IE5VTEwKKworU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCwgUHlPYmplY3QgKnNvdXJjZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMGJhYzJmZjU1YjlmODRjIGlucHV0PTQxZTBiMmUzNWU1OTlkN2JdKi8KIHsKICAgICBTUkVfU1RBVEUgc3RhdGU7CiAgICAgUHlPYmplY3QqIGxpc3Q7CkBAIC04NDEsMTkgKzk0NiwyNCBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICB2b2lkKiBsYXN0OwogCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gMDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9uJE86c3BsaXQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc3RyaW5nMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3RyaW5nID0gZml4X3N0cmluZ19wYXJhbShzdHJpbmcsIHN0cmluZzIsICJzb3VyY2UiKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc291cmNlLCAic291cmNlIik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpOwotICAgIGlmICghc3RyaW5nKQorICAgIGFzc2VydChzZWxmLT5jb2Rlc2l6ZSAhPSAwKTsKKyAgICBpZiAoc2VsZi0+Y29kZVswXSAhPSBTUkVfT1BfSU5GTyB8fCBzZWxmLT5jb2RlWzNdID09IDApIHsKKyAgICAgICAgaWYgKHNlbGYtPmNvZGVbMF0gPT0gU1JFX09QX0lORk8gJiYgc2VsZi0+Y29kZVs0XSA9PSAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19GdXR1cmVXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzcGxpdCgpIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHBhdHRlcm4gbWF0Y2guIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIDAsIFBZX1NTSVpFX1RfTUFYKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKQEAgLTk5Nyw4ICsxMTA3LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIDAsIFBZX1NTSVpFX1RfTUFYKTsKLSAgICBpZiAoIXN0cmluZykgeworICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmaWx0ZXIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMTM4LDM2ICsxMjQ3LDUwIEBACiAKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKLXsKLSAgICBQeU9iamVjdCogcHRlbXBsYXRlOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCBjb3VudCA9IDA7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPT3xuOnN1YiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRlbXBsYXRlLCAmc3RyaW5nLCAmY291bnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uc3ViCiAKLSAgICByZXR1cm4gcGF0dGVybl9zdWJ4KHNlbGYsIHB0ZW1wbGF0ZSwgc3RyaW5nLCBjb3VudCwgMCk7CisgICAgcmVwbDogb2JqZWN0CisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBjb3VudDogUHlfc3NpemVfdCA9IDAKKworUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkYmYyZWMzNDc5Y2JhMDAgaW5wdXQ9YzUzZDcwYmUwYjNjYWY4Nl0qLworeworICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCwgMCk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBwdGVtcGxhdGU7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk9PfG46c3VibiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRlbXBsYXRlLCAmc3RyaW5nLCAmY291bnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uc3VibgogCi0gICAgcmV0dXJuIHBhdHRlcm5fc3VieChzZWxmLCBwdGVtcGxhdGUsIHN0cmluZywgY291bnQsIDEpOworICAgIHJlcGw6IG9iamVjdAorICAgIHN0cmluZzogb2JqZWN0CisgICAgY291bnQ6IFB5X3NzaXplX3QgPSAwCisKK1JldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDk1MjJjZDUyOWU5NzI4IGlucHV0PWU3MzQyZDdjZTYwODM1NzddKi8KK3sKKyAgICByZXR1cm4gcGF0dGVybl9zdWJ4KHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQsIDEpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2NvcHkoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uX19jb3B5X18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVkZWRjMmRiMWJkODY5NCBpbnB1dD1hNzMwYTU5ZDg2M2JjOWY1XSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIFBhdHRlcm5PYmplY3QqIGNvcHk7CkBAIC0xMTk0LDggKzEzMTcsMTYgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2RlZXBjb3B5KFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBtZW1vKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5fX2RlZXBjb3B5X18KKworICAgIG1lbW86IG9iamVjdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1ZWZlNjliZDEyYzVkN2QgaW5wdXQ9Mzk1OTcxOTQ4MmMwN2Y3MF0qLwogewogI2lmZGVmIFVTRV9CVUlMVElOX0NPUFkKICAgICBQYXR0ZXJuT2JqZWN0KiBjb3B5OwpAQCAtMTIzNiw3ICsxMzY3LDcgQEAKICAgICB9OwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmbGFnX2l0ZW1zOwotICAgIGludCBpOworICAgIHNpemVfdCBpOwogICAgIGludCBmbGFncyA9IG9iai0+ZmxhZ3M7CiAKICAgICAvKiBPbWl0IHJlLlVOSUNPREUgZm9yIHZhbGlkIHN0cmluZyBwYXR0ZXJucy4gKi8KQEAgLTEyOTcsMTMxICsxNDI4LDQwIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHBhdHRlcm5fbWF0Y2hfZG9jLAotIm1hdGNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblwKLSAgICBNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9mdWxsbWF0Y2hfZG9jLAotImZ1bGxtYXRjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cCi0gICAgTWF0Y2hlcyBhZ2FpbnN0IGFsbCBvZiB0aGUgc3RyaW5nIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX3NlYXJjaF9kb2MsCi0ic2VhcmNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblwKLSAgICBTY2FuIHRocm91Z2ggc3RyaW5nIGxvb2tpbmcgZm9yIGEgbWF0Y2gsIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nXG5cCi0gICAgbWF0Y2ggb2JqZWN0IGluc3RhbmNlLiBSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX3NwbGl0X2RvYywKLSJzcGxpdChzdHJpbmdbLCBtYXhzcGxpdCA9IDBdKSAgLT4gbGlzdC5cblwKLSAgICBTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX2ZpbmRhbGxfZG9jLAotImZpbmRhbGwoc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IGxpc3QuXG5cCi0gICBSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBvZiBwYXR0ZXJuIGluIHN0cmluZy4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fZmluZGl0ZXJfZG9jLAotImZpbmRpdGVyKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBpdGVyYXRvci5cblwKLSAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgZm9yIHRoZSBcblwKLSAgICBSRSBwYXR0ZXJuIGluIHN0cmluZy4gRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGFcblwKLSAgICBtYXRjaCBvYmplY3QuIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX3N1Yl9kb2MsCi0ic3ViKHJlcGwsIHN0cmluZ1ssIGNvdW50ID0gMF0pIC0+IG5ld3N0cmluZy5cblwKLSAgICBSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZ1xuXAotICAgIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gc3RyaW5nIGJ5IHRoZSByZXBsYWNlbWVudCByZXBsLiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9zdWJuX2RvYywKLSJzdWJuKHJlcGwsIHN0cmluZ1ssIGNvdW50ID0gMF0pIC0+IChuZXdzdHJpbmcsIG51bWJlciBvZiBzdWJzKVxuXAotICAgIFJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZ1xuXAotICAgIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZVxuXAotICAgIHJlcGxhY2VtZW50IHJlcGwuIik7Ci0KIFB5RG9jX1NUUlZBUihwYXR0ZXJuX2RvYywgIkNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3RzIik7CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKLSAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9tYXRjaF9kb2N9LAotICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2Z1bGxtYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fZnVsbG1hdGNoX2RvY30sCi0gICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2VhcmNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9zZWFyY2hfZG9jfSwKLSAgICB7InN1YiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3N1Yl9kb2N9LAotICAgIHsic3VibiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9zdWJuX2RvY30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fc3BsaXRfZG9jfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fZmluZGFsbF9kb2N9LAotICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX2ZpbmRpdGVyX2RvY30sCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2NvcHksIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9kZWVwY29weSwgTUVUSF9PfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLSNkZWZpbmUgUEFUX09GRih4KSBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB4KQotc3RhdGljIFB5TWVtYmVyRGVmIHBhdHRlcm5fbWVtYmVyc1tdID0gewotICAgIHsicGF0dGVybiIsICAgIFRfT0JKRUNULCAgICBQQVRfT0ZGKHBhdHRlcm4pLCAgICAgICBSRUFET05MWX0sCi0gICAgeyJmbGFncyIsICAgICAgVF9JTlQsICAgICAgIFBBVF9PRkYoZmxhZ3MpLCAgICAgICAgIFJFQURPTkxZfSwKLSAgICB7Imdyb3VwcyIsICAgICBUX1BZU1NJWkVULCAgUEFUX09GRihncm91cHMpLCAgICAgICAgUkVBRE9OTFl9LAotICAgIHsiZ3JvdXBpbmRleCIsIFRfT0JKRUNULCAgICBQQVRfT0ZGKGdyb3VwaW5kZXgpLCAgICBSRUFET05MWX0sCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBQYXR0ZXJuX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfUGF0dGVybiIsCi0gICAgc2l6ZW9mKFBhdHRlcm5PYmplY3QpLCBzaXplb2YoU1JFX0NPREUpLAotICAgIChkZXN0cnVjdG9yKXBhdHRlcm5fZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpcGF0dGVybl9yZXByLCAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBwYXR0ZXJuX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgcGF0dGVybl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIHBhdHRlcm5fbWVtYmVycywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLX07CisvKiBQYXR0ZXJuT2JqZWN0J3MgJ2dyb3VwaW5kZXgnIG1ldGhvZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitwYXR0ZXJuX2dyb3VwaW5kZXgoUGF0dGVybk9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlEaWN0UHJveHlfTmV3KHNlbGYtPmdyb3VwaW5kZXgpOworfQogCiBzdGF0aWMgaW50IF92YWxpZGF0ZShQYXR0ZXJuT2JqZWN0ICpzZWxmKTsgLyogRm9yd2FyZCAqLwogCisvKltjbGluaWMgaW5wdXRdCitfc3JlLmNvbXBpbGUKKworICAgIHBhdHRlcm46IG9iamVjdAorICAgIGZsYWdzOiBpbnQKKyAgICBjb2RlOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxpc3RfVHlwZScpCisgICAgZ3JvdXBzOiBQeV9zc2l6ZV90CisgICAgZ3JvdXBpbmRleDogb2JqZWN0CisgICAgaW5kZXhncm91cDogb2JqZWN0CisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLV9jb21waWxlKFB5T2JqZWN0KiBzZWxmXywgUHlPYmplY3QqIGFyZ3MpCitfc3JlX2NvbXBpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0dGVybiwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgZ3JvdXBzLCBQeU9iamVjdCAqZ3JvdXBpbmRleCwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbmRleGdyb3VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwMDRiMjkzNzMwYmYzMDkgaW5wdXQ9N2QwNTllYzhhZTFlZGI4NV0qLwogewogICAgIC8qICJjb21waWxlIiBwYXR0ZXJuIGRlc2NyaXB0b3IgdG8gcGF0dGVybiBvYmplY3QgKi8KIAogICAgIFBhdHRlcm5PYmplY3QqIHNlbGY7CiAgICAgUHlfc3NpemVfdCBpLCBuOwogCi0gICAgUHlPYmplY3QqIHBhdHRlcm47Ci0gICAgaW50IGZsYWdzID0gMDsKLSAgICBQeU9iamVjdCogY29kZTsKLSAgICBQeV9zc2l6ZV90IGdyb3VwcyA9IDA7Ci0gICAgUHlPYmplY3QqIGdyb3VwaW5kZXggPSBOVUxMOwotICAgIFB5T2JqZWN0KiBpbmRleGdyb3VwID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPIXxuT08iLCAmcGF0dGVybiwgJmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoY29kZSk7CiAgICAgLyogY292ZXJpdHlbYW1wZXJzYW5kX2luX3NpemVdICovCiAgICAgc2VsZiA9IFB5T2JqZWN0X05FV19WQVIoUGF0dGVybk9iamVjdCwgJlBhdHRlcm5fVHlwZSwgbik7CkBAIC0xNTc3LDYgKzE2MTcsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfUkFOR0U6CisgICAgICAgIGNhc2UgU1JFX09QX1JBTkdFX0lHTk9SRToKICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTMzLDEwICsxOTc0LDkgQEAKIHN0YXRpYyBpbnQKIF92YWxpZGF0ZV9vdXRlcihTUkVfQ09ERSAqY29kZSwgU1JFX0NPREUgKmVuZCwgUHlfc3NpemVfdCBncm91cHMpCiB7Ci0gICAgaWYgKGdyb3VwcyA8IDAgfHwgZ3JvdXBzID4gMTAwIHx8IGNvZGUgPj0gZW5kIHx8IGVuZFstMV0gIT0gU1JFX09QX1NVQ0NFU1MpCisgICAgaWYgKGdyb3VwcyA8IDAgfHwgKHNpemVfdClncm91cHMgPiBTUkVfTUFYR1JPVVBTIHx8CisgICAgICAgIGNvZGUgPj0gZW5kIHx8IGVuZFstMV0gIT0gU1JFX09QX1NVQ0NFU1MpCiAgICAgICAgIEZBSUw7Ci0gICAgaWYgKGdyb3VwcyA9PSAwKSAgLyogZml4IGZvciBzaW1wbGVqc29uICovCi0gICAgICAgIGdyb3VwcyA9IDEwMDsgLyogMTAwIGdyb3VwcyBzaG91bGQgYWx3YXlzIGJlIHNhZmUgKi8KICAgICByZXR1cm4gX3ZhbGlkYXRlX2lubmVyKGNvZGUsIGVuZC0xLCBncm91cHMpOwogfQogCkBAIC0yMDM0LDEzICsyMDc0LDIyIEBACiAgICAgcmV0dXJuIG1hdGNoX2dldHNsaWNlX2J5X2luZGV4KHNlbGYsIG1hdGNoX2dldGluZGV4KHNlbGYsIGluZGV4KSwgZGVmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZXhwYW5kKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogcHRlbXBsYXRlKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guZXhwYW5kCisKKyAgICB0ZW1wbGF0ZTogb2JqZWN0CisKK1JldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0ZW1wbGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzFiNThjY2MzMjNjM2ExIGlucHV0PTRiZmRiMjJjMmY4YjE0NmFdKi8KIHsKICAgICAvKiBkZWxlZ2F0ZSB0byBQeXRob24gY29kZSAqLwogICAgIHJldHVybiBjYWxsKAogICAgICAgICBTUkVfUFlfTU9EVUxFLCAiX2V4cGFuZCIsCi0gICAgICAgIFB5VHVwbGVfUGFjaygzLCBzZWxmLT5wYXR0ZXJuLCBzZWxmLCBwdGVtcGxhdGUpCisgICAgICAgIFB5VHVwbGVfUGFjaygzLCBzZWxmLT5wYXR0ZXJuLCBzZWxmLCB0ZW1wbGF0ZSkKICAgICAgICAgKTsKIH0KIApAQCAtMjA3OSwyNCArMjEyOCwyOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLmdyb3VwcworCisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgICAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4KKworUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWY4ZTI2NDE1MzcyMzhhIGlucHV0PWJiMDY5ZWY1NWRhYmNhOTFdKi8KIHsKICAgICBQeU9iamVjdCogcmVzdWx0OwogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAKLSAgICBQeU9iamVjdCogZGVmID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJkZWZhdWx0IiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE86Z3JvdXBzIiwga3dsaXN0LCAmZGVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhzZWxmLT5ncm91cHMtMSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChpbmRleCA9IDE7IGluZGV4IDwgc2VsZi0+Z3JvdXBzOyBpbmRleCsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBpdGVtOwotICAgICAgICBpdGVtID0gbWF0Y2hfZ2V0c2xpY2VfYnlfaW5kZXgoc2VsZiwgaW5kZXgsIGRlZik7CisgICAgICAgIGl0ZW0gPSBtYXRjaF9nZXRzbGljZV9ieV9pbmRleChzZWxmLCBpbmRleCwgZGVmYXVsdF92YWx1ZSk7CiAgICAgICAgIGlmICghaXRlbSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIxMDcsMTggKzIxNjEsMjMgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5ncm91cGRpY3QKKworICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICAgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guCisKK1JldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI5OTE3YzkwNzNlNDE3NTcgaW5wdXQ9MGRlZDc5NjBiMjM3ODBhYV0qLwogewogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgUHlPYmplY3QqIGtleXM7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIFB5T2JqZWN0KiBkZWYgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgImRlZmF1bHQiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Tzpncm91cGRpY3QiLCBrd2xpc3QsICZkZWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJlc3VsdCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoIXJlc3VsdCB8fCAhc2VsZi0+cGF0dGVybi0+Z3JvdXBpbmRleCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxMzQsNyArMjE5Myw3IEBACiAgICAgICAgIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpbmRleCk7CiAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIHZhbHVlID0gbWF0Y2hfZ2V0c2xpY2Uoc2VsZiwga2V5LCBkZWYpOworICAgICAgICB2YWx1ZSA9IG1hdGNoX2dldHNsaWNlKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgZ290byBmYWlsZWQ7CkBAIC0yMTU1LDUwICsyMjE0LDU4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX3N0YXJ0KE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLnN0YXJ0IC0+IFB5X3NzaXplX3QKKworICAgIGdyb3VwOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX3N0YXJ0X2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZjZlN2Y5ZGYyZmI1MjAxIGlucHV0PWNlZDhlNGVkNGIzM2VlNmNdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGluZGV4OwotCi0gICAgUHlPYmplY3QqIGluZGV4XyA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLCAwLCAxLCAmaW5kZXhfKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGluZGV4Xyk7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGdyb3VwKTsKIAogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+Z3JvdXBzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAibm8gc3VjaCBncm91cCIKICAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogbWFyayBpcyAtMSBpZiBncm91cCBpcyB1bmRlZmluZWQgKi8KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPm1hcmtbaW5kZXgqMl0pOworICAgIHJldHVybiBzZWxmLT5tYXJrW2luZGV4KjJdOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9lbmQoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guZW5kIC0+IFB5X3NzaXplX3QKKworICAgIGdyb3VwOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfc3JlX1NSRV9NYXRjaF9lbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0MjQwYjA5OTExZjc2OTIgaW5wdXQ9MWI3OTk1NjBjN2YzZDdlNl0qLwogewotICAgIFB5X3NzaXplX3QgaW5kZXg7Ci0KLSAgICBQeU9iamVjdCogaW5kZXhfID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJlbmQiLCAwLCAxLCAmaW5kZXhfKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGluZGV4Xyk7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGdyb3VwKTsKIAogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+Z3JvdXBzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAibm8gc3VjaCBncm91cCIKICAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogbWFyayBpcyAtMSBpZiBncm91cCBpcyB1bmRlZmluZWQgKi8KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPm1hcmtbaW5kZXgqMisxXSk7CisgICAgcmV0dXJuIHNlbGYtPm1hcmtbaW5kZXgqMisxXTsKIH0KIAogTE9DQUwoUHlPYmplY3QqKQpAQCAtMjIyOCwxNiArMjI5NSwyMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9zcGFuKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLnNwYW4KKworICAgIGdyb3VwOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitGb3IgTWF0Y2hPYmplY3QgbSwgcmV0dXJuIHRoZSAyLXR1cGxlIChtLnN0YXJ0KGdyb3VwKSwgbS5lbmQoZ3JvdXApKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3NwYW5faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwMmFlNDA1OTRkMTRmZTYgaW5wdXQ9NDkwOTJiNjAwOGQxNzZkM10qLwogewotICAgIFB5X3NzaXplX3QgaW5kZXg7Ci0KLSAgICBQeU9iamVjdCogaW5kZXhfID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzcGFuIiwgMCwgMSwgJmluZGV4XykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBpbmRleF8pOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtYXRjaF9nZXRpbmRleChzZWxmLCBncm91cCk7CiAKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmdyb3VwcykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0yMjc3LDggKzIzNDgsMTQgQEAKICAgICByZXR1cm4gcmVnczsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfY29weShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLl9fY29weV9fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTc3OWM1ZmM4YjViNGViNCBpbnB1dD0zYmI0ZDMwYjZiYWRkYjViXSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIE1hdGNoT2JqZWN0KiBjb3B5OwpAQCAtMjMwOCw4ICsyMzg1LDE2IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZGVlcGNvcHkoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBtZW1vKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guX19kZWVwY29weV9fCisKKyAgICBtZW1vOiBvYmplY3QKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiNjU3NTc4ZWIwM2Y0YTMgaW5wdXQ9YjY1YjcyNDg5ZWFjNjRjY10qLwogewogI2lmZGVmIFVTRV9CVUlMVElOX0NPUFkKICAgICBNYXRjaE9iamVjdCogY29weTsKQEAgLTIzNDAsNTAgKzI0MjUsNiBAQAogICAgIFJldHVybiBzdWJncm91cChzKSBvZiB0aGUgbWF0Y2ggYnkgaW5kaWNlcyBvciBuYW1lcy5cblwKICAgICBGb3IgMCByZXR1cm5zIHRoZSBlbnRpcmUgbWF0Y2guIik7CiAKLVB5RG9jX1NUUlZBUihtYXRjaF9zdGFydF9kb2MsCi0ic3RhcnQoW2dyb3VwPTBdKSAtPiBpbnQuXG5cCi0gICAgUmV0dXJuIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9lbmRfZG9jLAotImVuZChbZ3JvdXA9MF0pIC0+IGludC5cblwKLSAgICBSZXR1cm4gaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9zcGFuX2RvYywKLSJzcGFuKFtncm91cF0pIC0+IHR1cGxlLlxuXAotICAgIEZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLiIpOwotCi1QeURvY19TVFJWQVIobWF0Y2hfZ3JvdXBzX2RvYywKLSJncm91cHMoW2RlZmF1bHQ9Tm9uZV0pIC0+IHR1cGxlLlxuXAotICAgIFJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEuXG5cCi0gICAgVGhlIGRlZmF1bHQgYXJndW1lbnQgaXMgdXNlZCBmb3IgZ3JvdXBzXG5cCi0gICAgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaCIpOwotCi1QeURvY19TVFJWQVIobWF0Y2hfZ3JvdXBkaWN0X2RvYywKLSJncm91cGRpY3QoW2RlZmF1bHQ9Tm9uZV0pIC0+IGRpY3QuXG5cCi0gICAgUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCB0aGUgbmFtZWQgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCxcblwKLSAgICBrZXllZCBieSB0aGUgc3ViZ3JvdXAgbmFtZS4gVGhlIGRlZmF1bHQgYXJndW1lbnQgaXMgdXNlZCBmb3IgZ3JvdXBzXG5cCi0gICAgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaCIpOwotCi1QeURvY19TVFJWQVIobWF0Y2hfZXhwYW5kX2RvYywKLSJleHBhbmQodGVtcGxhdGUpIC0+IHN0ci5cblwKLSAgICBSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSBkb2luZyBiYWNrc2xhc2ggc3Vic3RpdHV0aW9uXG5cCi0gICAgb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOwotCi1zdGF0aWMgUHlNZXRob2REZWYgbWF0Y2hfbWV0aG9kc1tdID0gewotICAgIHsiZ3JvdXAiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2dyb3VwX2RvY30sCi0gICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfc3RhcnQsIE1FVEhfVkFSQVJHUywgbWF0Y2hfc3RhcnRfZG9jfSwKLSAgICB7ImVuZCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZW5kLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2VuZF9kb2N9LAotICAgIHsic3BhbiIsIChQeUNGdW5jdGlvbikgbWF0Y2hfc3BhbiwgTUVUSF9WQVJBUkdTLCBtYXRjaF9zcGFuX2RvY30sCi0gICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIG1hdGNoX2dyb3Vwc19kb2N9LAotICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cGRpY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBtYXRjaF9ncm91cGRpY3RfZG9jfSwKLSAgICB7ImV4cGFuZCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZXhwYW5kLCBNRVRIX08sIG1hdGNoX2V4cGFuZF9kb2N9LAotICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2NvcHksIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZGVlcGNvcHksIE1FVEhfT30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCiBzdGF0aWMgUHlPYmplY3QgKgogbWF0Y2hfbGFzdGluZGV4X2dldChNYXRjaE9iamVjdCAqc2VsZikKIHsKQEAgLTI0MzQsNTcgKzI0NzUsNiBAQAogfQogCiAKLXN0YXRpYyBQeUdldFNldERlZiBtYXRjaF9nZXRzZXRbXSA9IHsKLSAgICB7Imxhc3RpbmRleCIsIChnZXR0ZXIpbWF0Y2hfbGFzdGluZGV4X2dldCwgKHNldHRlcilOVUxMfSwKLSAgICB7Imxhc3Rncm91cCIsIChnZXR0ZXIpbWF0Y2hfbGFzdGdyb3VwX2dldCwgKHNldHRlcilOVUxMfSwKLSAgICB7InJlZ3MiLCAgICAgIChnZXR0ZXIpbWF0Y2hfcmVnc19nZXQsICAgICAgKHNldHRlcilOVUxMfSwKLSAgICB7TlVMTH0KLX07Ci0KLSNkZWZpbmUgTUFUQ0hfT0ZGKHgpIG9mZnNldG9mKE1hdGNoT2JqZWN0LCB4KQotc3RhdGljIFB5TWVtYmVyRGVmIG1hdGNoX21lbWJlcnNbXSA9IHsKLSAgICB7InN0cmluZyIsICBUX09CSkVDVCwgICBNQVRDSF9PRkYoc3RyaW5nKSwgIFJFQURPTkxZfSwKLSAgICB7InJlIiwgICAgICBUX09CSkVDVCwgICBNQVRDSF9PRkYocGF0dGVybiksIFJFQURPTkxZfSwKLSAgICB7InBvcyIsICAgICBUX1BZU1NJWkVULCBNQVRDSF9PRkYocG9zKSwgICAgIFJFQURPTkxZfSwKLSAgICB7ImVuZHBvcyIsICBUX1BZU1NJWkVULCBNQVRDSF9PRkYoZW5kcG9zKSwgIFJFQURPTkxZfSwKLSAgICB7TlVMTH0KLX07Ci0KLS8qIEZJWE1FOiBpbXBsZW1lbnQgc2V0YXR0cigic3RyaW5nIiwgTm9uZSkgYXMgYSBzcGVjaWFsIGNhc2UgKHRvCi0gICBkZXRhY2ggdGhlIGFzc29jaWF0ZWQgc3RyaW5nLCBpZiBhbnkgKi8KLQotc3RhdGljIFB5VHlwZU9iamVjdCBNYXRjaF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLDApCi0gICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfTWF0Y2giLAotICAgIHNpemVvZihNYXRjaE9iamVjdCksIHNpemVvZihQeV9zc2l6ZV90KSwKLSAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpbWF0Y2hfcmVwciwgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIG1hdGNoX2RvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIG1hdGNoX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgbWF0Y2hfbWVtYmVycywgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBtYXRjaF9nZXRzZXQsICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi19OwotCiBzdGF0aWMgUHlPYmplY3QqCiBwYXR0ZXJuX25ld19tYXRjaChQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBTUkVfU1RBVEUqIHN0YXRlLCBQeV9zc2l6ZV90IHN0YXR1cykKIHsKQEAgLTI1NjAsOCArMjU1MCwxNCBAQAogICAgIFB5T2JqZWN0X0RFTChzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0Kgotc2Nhbm5lcl9tYXRjaChTY2FubmVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfU2Nhbm5lci5tYXRjaAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX21hdGNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzZiMzBjNjNkNGI4MWViIGlucHV0PTg4MWEwMTU0ZjhjMTNkOWFdKi8KIHsKICAgICBTUkVfU1RBVEUqIHN0YXRlID0gJnNlbGYtPnN0YXRlOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKQEAgLTI1ODcsOCArMjU4MywxNCBAQAogfQogCiAKLXN0YXRpYyBQeU9iamVjdCoKLXNjYW5uZXJfc2VhcmNoKFNjYW5uZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9TY2FubmVyLnNlYXJjaAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKFNjYW5uZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2RjMjExOTg2MDg4ZjAyNSBpbnB1dD0xNjEyMjNlZTkyZWY5MjcwXSovCiB7CiAgICAgU1JFX1NUQVRFKiBzdGF0ZSA9ICZzZWxmLT5zdGF0ZTsKICAgICBQeU9iamVjdCogbWF0Y2g7CkBAIC0yNjEzLDkgKzI2MTUsMTYwIEBACiAgICAgcmV0dXJuIG1hdGNoOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcykKK3sKKyAgICBTY2FubmVyT2JqZWN0KiBzY2FubmVyOworCisgICAgLyogY3JlYXRlIHNjYW5uZXIgb2JqZWN0ICovCisgICAgc2Nhbm5lciA9IFB5T2JqZWN0X05FVyhTY2FubmVyT2JqZWN0LCAmU2Nhbm5lcl9UeXBlKTsKKyAgICBpZiAoIXNjYW5uZXIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNjYW5uZXItPnBhdHRlcm4gPSBOVUxMOworCisgICAgLyogY3JlYXRlIHNlYXJjaCBzdGF0ZSBvYmplY3QgKi8KKyAgICBpZiAoIXN0YXRlX2luaXQoJnNjYW5uZXItPnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkgeworICAgICAgICBQeV9ERUNSRUYoc2Nhbm5lcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBzY2FubmVyLT5wYXR0ZXJuID0gKFB5T2JqZWN0Kikgc2VsZjsKKworICAgIHJldHVybiAoUHlPYmplY3QqKSBzY2FubmVyOworfQorCisjaW5jbHVkZSAiY2xpbmljL19zcmUuYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgcGF0dGVybl9tZXRob2RzW10gPSB7CisgICAgX1NSRV9TUkVfUEFUVEVSTl9NQVRDSF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX0ZVTExNQVRDSF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX1NFQVJDSF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9GSU5EQUxMX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU1BMSVRfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9GSU5ESVRFUl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX1NDQU5ORVJfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9fX0NPUFlfX19NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX19fREVFUENPUFlfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBwYXR0ZXJuX2dldHNldFtdID0geworICAgIHsiZ3JvdXBpbmRleCIsIChnZXR0ZXIpcGF0dGVybl9ncm91cGluZGV4LCAoc2V0dGVyKU5VTEwsCisgICAgICAiQSBkaWN0aW9uYXJ5IG1hcHBpbmcgZ3JvdXAgbmFtZXMgdG8gZ3JvdXAgbnVtYmVycy4ifSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCisjZGVmaW5lIFBBVF9PRkYoeCkgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgeCkKK3N0YXRpYyBQeU1lbWJlckRlZiBwYXR0ZXJuX21lbWJlcnNbXSA9IHsKKyAgICB7InBhdHRlcm4iLCAgICBUX09CSkVDVCwgICAgUEFUX09GRihwYXR0ZXJuKSwgICAgICAgUkVBRE9OTFl9LAorICAgIHsiZmxhZ3MiLCAgICAgIFRfSU5ULCAgICAgICBQQVRfT0ZGKGZsYWdzKSwgICAgICAgICBSRUFET05MWX0sCisgICAgeyJncm91cHMiLCAgICAgVF9QWVNTSVpFVCwgIFBBVF9PRkYoZ3JvdXBzKSwgICAgICAgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFBhdHRlcm5fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKKyAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCisgICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYylwYXR0ZXJuX3JlcHIsICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIHBhdHRlcm5fZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgbWF0Y2hfbWV0aG9kc1tdID0geworICAgIHsiZ3JvdXAiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2dyb3VwX2RvY30sCisgICAgX1NSRV9TUkVfTUFUQ0hfU1RBUlRfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfRU5EX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX1NQQU5fTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfR1JPVVBTX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX0dST1VQRElDVF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9FWFBBTkRfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfX19DT1BZX19fTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5R2V0U2V0RGVmIG1hdGNoX2dldHNldFtdID0geworICAgIHsibGFzdGluZGV4IiwgKGdldHRlciltYXRjaF9sYXN0aW5kZXhfZ2V0LCAoc2V0dGVyKU5VTEx9LAorICAgIHsibGFzdGdyb3VwIiwgKGdldHRlciltYXRjaF9sYXN0Z3JvdXBfZ2V0LCAoc2V0dGVyKU5VTEx9LAorICAgIHsicmVncyIsICAgICAgKGdldHRlciltYXRjaF9yZWdzX2dldCwgICAgICAoc2V0dGVyKU5VTEx9LAorICAgIHtOVUxMfQorfTsKKworI2RlZmluZSBNQVRDSF9PRkYoeCkgb2Zmc2V0b2YoTWF0Y2hPYmplY3QsIHgpCitzdGF0aWMgUHlNZW1iZXJEZWYgbWF0Y2hfbWVtYmVyc1tdID0geworICAgIHsic3RyaW5nIiwgIFRfT0JKRUNULCAgIE1BVENIX09GRihzdHJpbmcpLCAgUkVBRE9OTFl9LAorICAgIHsicmUiLCAgICAgIFRfT0JKRUNULCAgIE1BVENIX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAorICAgIHsicG9zIiwgICAgIFRfUFlTU0laRVQsIE1BVENIX09GRihwb3MpLCAgICAgUkVBRE9OTFl9LAorICAgIHsiZW5kcG9zIiwgIFRfUFlTU0laRVQsIE1BVENIX09GRihlbmRwb3MpLCAgUkVBRE9OTFl9LAorICAgIHtOVUxMfQorfTsKKworLyogRklYTUU6IGltcGxlbWVudCBzZXRhdHRyKCJzdHJpbmciLCBOb25lKSBhcyBhIHNwZWNpYWwgY2FzZSAodG8KKyAgIGRldGFjaCB0aGUgYXNzb2NpYXRlZCBzdHJpbmcsIGlmIGFueSAqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE1hdGNoX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKKyAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCisgICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAorICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbWF0Y2hfZG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgbWF0Y2hfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXRjaF9tZW1iZXJzLCAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG1hdGNoX2dldHNldCwgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KK307CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzY2FubmVyX21ldGhvZHNbXSA9IHsKLSAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKSBzY2FubmVyX21hdGNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pIHNjYW5uZXJfc2VhcmNoLCBNRVRIX05PQVJHU30sCisgICAgX1NSRV9TUkVfU0NBTk5FUl9NQVRDSF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9TQ0FOTkVSX1NFQVJDSF9NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTI2NTcsNDcgKzI4MTAsMTAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKLXsKLSAgICAvKiBjcmVhdGUgc2VhcmNoIHN0YXRlIG9iamVjdCAqLwotCi0gICAgU2Nhbm5lck9iamVjdCogc2VsZjsKLQotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJzb3VyY2UiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T25uJE86c2Nhbm5lciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInNvdXJjZSIpOwotICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIGNyZWF0ZSBzY2FubmVyIG9iamVjdCAqLwotICAgIHNlbGYgPSBQeU9iamVjdF9ORVcoU2Nhbm5lck9iamVjdCwgJlNjYW5uZXJfVHlwZSk7Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZWxmLT5wYXR0ZXJuID0gTlVMTDsKLQotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnNlbGYtPnN0YXRlLCBwYXR0ZXJuLCBzdHJpbmcsIHN0YXJ0LCBlbmQpOwotICAgIGlmICghc3RyaW5nKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKHBhdHRlcm4pOwotICAgIHNlbGYtPnBhdHRlcm4gPSAoUHlPYmplY3QqKSBwYXR0ZXJuOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci19Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJjb21waWxlIiwgX2NvbXBpbGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnZXRjb2Rlc2l6ZSIsIHNyZV9jb2Rlc2l6ZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZ2V0bG93ZXIiLCBzcmVfZ2V0bG93ZXIsIE1FVEhfVkFSQVJHU30sCisgICAgX1NSRV9DT01QSUxFX01FVEhPRERFRgorICAgIF9TUkVfR0VUQ09ERVNJWkVfTUVUSE9EREVGCisgICAgX1NSRV9HRVRMT1dFUl9NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTI3NDcsNiArMjg2MywxMiBAQAogICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgfQogCisgICAgeCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKFNSRV9NQVhHUk9VUFMpOworICAgIGlmICh4KSB7CisgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNQVhHUk9VUFMiLCB4KTsKKyAgICAgICAgUHlfREVDUkVGKHgpOworICAgIH0KKwogICAgIHggPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb3B5cmlnaHQpOwogICAgIGlmICh4KSB7CiAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJjb3B5cmlnaHQiLCB4KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggYzI3MDczYy4uN2E5ZTA2NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJvcGVuc3NsL3NzbC5oIgogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAjaW5jbHVkZSAib3BlbnNzbC9yYW5kLmgiCisjaW5jbHVkZSAib3BlbnNzbC9iaW8uaCIKIAogLyogU1NMIGVycm9yIG9iamVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICpQeVNTTEVycm9yT2JqZWN0OwpAQCAtMTA4LDYgKzEwOSwxMSBAQAogIyBkZWZpbmUgSEFWRV9TTkkgMAogI2VuZGlmCiAKKy8qIEFMUE4gYWRkZWQgaW4gT3BlblNTTCAxLjAuMiAqLworI2lmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorIyBkZWZpbmUgSEFWRV9BTFBOCisjZW5kaWYKKwogZW51bSBweV9zc2xfZXJyb3IgewogICAgIC8qIHRoZXNlIG1pcnJvciBzc2wuaCAqLwogICAgIFBZX1NTTF9FUlJPUl9OT05FLApAQCAtMTYxLDEzICsxNjcsNiBAQAogCiAjZGVmaW5lIFg1MDlfTkFNRV9NQVhMRU4gMjU2CiAKLS8qIFJBTkRfKiBBUElzIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS41ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA1MDBmTAotIyBkZWZpbmUgSEFWRV9PUEVOU1NMX1JBTkQgMQotI2Vsc2UKLSMgdW5kZWYgSEFWRV9PUEVOU1NMX1JBTkQKLSNlbmRpZgotCiAvKiBTU0xfQ1RYX2NsZWFyX29wdGlvbnMoKSBhbmQgU1NMX2NsZWFyX29wdGlvbnMoKSB3ZXJlIGZpcnN0IGFkZGVkIGluCiAgKiBPcGVuU1NMIDAuOS44bSBidXQgZG8gbm90IGFwcGVhciBpbiBzb21lIDAuOS45LWRldiB2ZXJzaW9ucyBzdWNoIHRoZQogICogMC45LjkgZnJvbSAiTWF5IDIwMDgiIHRoYXQgTmV0QlNEIDUuMCB1c2VzLiAqLwpAQCAtMTgxLDM2ICsxODAsMTggQEAKICAqIG9sZGVyIFNTTCwgYnV0IGxldCdzIGJlIHNhZmUgKi8KICNkZWZpbmUgUHlTU0xfQ0JfTUFYTEVOIDEyOAogCi0vKiBTU0xfZ2V0X2ZpbmlzaGVkIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS41ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA1MDBmTAotIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDEKLSNlbHNlCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMAotI2VuZGlmCi0KLS8qIEVDREggc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0VDREgpCi0jIGRlZmluZSBPUEVOU1NMX05PX0VDREgKLSNlbmRpZgotCi0vKiBjb21wcmVzc2lvbiBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkKLSMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAotI2VuZGlmCi0KLS8qIFg1MDlfVkVSSUZZX1BBUkFNIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDBmTAotIyBkZWZpbmUgSEFWRV9PUEVOU1NMX1ZFUklGWV9QQVJBTQotI2VuZGlmCi0KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBTU0xfQ1RYICpjdHg7CiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIGNoYXIgKm5wbl9wcm90b2NvbHM7CisgICAgdW5zaWduZWQgY2hhciAqbnBuX3Byb3RvY29sczsKICAgICBpbnQgbnBuX3Byb3RvY29sc19sZW47CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICB1bnNpZ25lZCBjaGFyICphbHBuX3Byb3RvY29sczsKKyAgICBpbnQgYWxwbl9wcm90b2NvbHNfbGVuOworI2VuZGlmCiAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCiAgICAgUHlPYmplY3QgKnNldF9ob3N0bmFtZTsKICNlbmRpZgpAQCAtMjI2LDIwICsyMDcsMzUgQEAKICAgICBjaGFyIHNodXRkb3duX3NlZW5femVybzsKICAgICBjaGFyIGhhbmRzaGFrZV9kb25lOwogICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGU7CisgICAgUHlPYmplY3QgKm93bmVyOyAvKiBQeXRob24gbGV2ZWwgIm93bmVyIiBwYXNzZWQgdG8gc2VydmVybmFtZSBjYWxsYmFjayAqLworICAgIFB5T2JqZWN0ICpzZXJ2ZXJfaG9zdG5hbWU7CiB9IFB5U1NMU29ja2V0OwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEJJTyAqYmlvOworICAgIGludCBlb2Zfd3JpdHRlbjsKK30gUHlTU0xNZW1vcnlCSU87CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU29ja2V0X1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGU7CiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMcmVhZChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIGludCBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRpbmcpOwotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9wZWVyY2VydChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9jaXBoZXIoUHlTU0xTb2NrZXQgKnNlbGYpOworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zc2wKK2NsYXNzIF9zc2wuX1NTTENvbnRleHQgIlB5U1NMQ29udGV4dCAqIiAiJlB5U1NMQ29udGV4dF9UeXBlIgorY2xhc3MgX3NzbC5fU1NMU29ja2V0ICJQeVNTTFNvY2tldCAqIiAiJlB5U1NMU29ja2V0X1R5cGUiCitjbGFzcyBfc3NsLk1lbW9yeUJJTyAiUHlTU0xNZW1vcnlCSU8gKiIgIiZQeVNTTE1lbW9yeUJJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2JmN2NiODMyNjM4ZTJlMV0qLworCisjaW5jbHVkZSAiY2xpbmljL19zc2wuYy5oIgorCitzdGF0aWMgaW50IFB5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCk7CiAKICNkZWZpbmUgUHlTU0xDb250ZXh0X0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMQ29udGV4dF9UeXBlKQogI2RlZmluZSBQeVNTTFNvY2tldF9DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xTb2NrZXRfVHlwZSkKKyNkZWZpbmUgUHlTU0xNZW1vcnlCSU9fQ2hlY2sodikgICAgKFB5X1RZUEUodikgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgU09DS0VUX0lTX05PTkJMT0NLSU5HLApAQCAtMjUxLDExICsyNDcsMTYgQEAKIH0gdGltZW91dF9zdGF0ZTsKIAogLyogV3JhcCBlcnJvciBzdHJpbmdzIHdpdGggZmlsZW5hbWUgYW5kIGxpbmUgIyAqLwotI2RlZmluZSBTVFJJTkdJRlkxKHgpICN4Ci0jZGVmaW5lIFNUUklOR0lGWTIoeCkgU1RSSU5HSUZZMSh4KQogI2RlZmluZSBFUlJTVFIxKHgseSx6KSAoeCAiOiIgeSAiOiAiIHopCi0jZGVmaW5lIEVSUlNUUih4KSBFUlJTVFIxKCJfc3NsLmMiLCBTVFJJTkdJRlkyKF9fTElORV9fKSwgeCkKKyNkZWZpbmUgRVJSU1RSKHgpIEVSUlNUUjEoIl9zc2wuYyIsIFB5X1NUUklOR0lGWShfX0xJTkVfXyksIHgpCiAKKy8qIEdldCB0aGUgc29ja2V0IGZyb20gYSBQeVNTTFNvY2tldCwgaWYgaXQgaGFzIG9uZSAqLworI2RlZmluZSBHRVRfU09DS0VUKG9iaikgKChvYmopLT5Tb2NrZXQgPyBcCisgICAgKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KChvYmopLT5Tb2NrZXQpIDogTlVMTCkKKworLyogSWYgc29jayBpcyBOVUxMLCB1c2UgYSB0aW1lb3V0IG9mIDAgc2Vjb25kICovCisjZGVmaW5lIEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKSBcCisgICAgKChzb2NrICE9IE5VTEwpID8gKHNvY2spLT5zb2NrX3RpbWVvdXQgOiAwKQogCiAvKgogICogU1NMIGVycm9ycy4KQEAgLTQxOSwxMyArNDIwLDEyIEBACiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlID09IDApIHsKLSAgICAgICAgICAgICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnMKLSAgICAgICAgICAgICAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KG9iai0+U29ja2V0KTsKKyAgICAgICAgICAgICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnMgPSBHRVRfU09DS0VUKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwIHx8ICgoKFB5T2JqZWN0ICopcykgPT0gUHlfTm9uZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9FT0Y7CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQeVNTTEVPRkVycm9yT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiRU9GIG9jY3VycmVkIGluIHZpb2xhdGlvbiBvZiBwcm90b2NvbCI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMgJiYgcmV0ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHVuZGVybHlpbmcgQklPIHJlcG9ydGVkIGFuIEkvTyBlcnJvciAqLwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwpAQCAtNDc5LDEwICs0NzksMTIgQEAKIHN0YXRpYyBQeVNTTFNvY2tldCAqCiBuZXdQeVNTTFNvY2tldChQeVNTTENvbnRleHQgKnNzbGN0eCwgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZSwKLSAgICAgICAgICAgICAgIGNoYXIgKnNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgICAgICAgIGNoYXIgKnNlcnZlcl9ob3N0bmFtZSwKKyAgICAgICAgICAgICAgIFB5U1NMTWVtb3J5QklPICppbmJpbywgUHlTU0xNZW1vcnlCSU8gKm91dGJpbykKIHsKICAgICBQeVNTTFNvY2tldCAqc2VsZjsKICAgICBTU0xfQ1RYICpjdHggPSBzc2xjdHgtPmN0eDsKKyAgICBQeU9iamVjdCAqaG9zdG5hbWU7CiAgICAgbG9uZyBtb2RlOwogCiAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhQeVNTTFNvY2tldCwgJlB5U1NMU29ja2V0X1R5cGUpOwpAQCAtNDk1LDYgKzQ5NywxOCBAQAogICAgIHNlbGYtPmN0eCA9IHNzbGN0eDsKICAgICBzZWxmLT5zaHV0ZG93bl9zZWVuX3plcm8gPSAwOwogICAgIHNlbGYtPmhhbmRzaGFrZV9kb25lID0gMDsKKyAgICBzZWxmLT5vd25lciA9IE5VTEw7CisgICAgaWYgKHNlcnZlcl9ob3N0bmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGhvc3RuYW1lID0gUHlVbmljb2RlX0RlY29kZShzZXJ2ZXJfaG9zdG5hbWUsIHN0cmxlbihzZXJ2ZXJfaG9zdG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWRuYSIsICJzdHJpY3QiKTsKKyAgICAgICAgaWYgKGhvc3RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNlbGYtPnNlcnZlcl9ob3N0bmFtZSA9IGhvc3RuYW1lOworICAgIH0gZWxzZQorICAgICAgICBzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUgPSBOVUxMOworCiAgICAgUHlfSU5DUkVGKHNzbGN0eCk7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhlIFNTTCBlcnJvciBzdGF0ZSBpcyBpbml0aWFsaXplZCAqLwpAQCAtNTA0LDggKzUxOCwxNyBAQAogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBzZWxmLT5zc2wgPSBTU0xfbmV3KGN0eCk7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBTU0xfc2V0X2FwcF9kYXRhKHNlbGYtPnNzbCxzZWxmKTsKLSAgICBTU0xfc2V0X2ZkKHNlbGYtPnNzbCwgUHlfU0FGRV9ET1dOQ0FTVChzb2NrLT5zb2NrX2ZkLCBTT0NLRVRfVCwgaW50KSk7CisgICAgU1NMX3NldF9hcHBfZGF0YShzZWxmLT5zc2wsIHNlbGYpOworICAgIGlmIChzb2NrKSB7CisgICAgICAgIFNTTF9zZXRfZmQoc2VsZi0+c3NsLCBQeV9TQUZFX0RPV05DQVNUKHNvY2stPnNvY2tfZmQsIFNPQ0tFVF9ULCBpbnQpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBCSU9zIGFyZSByZWZlcmVuY2UgY291bnRlZCBhbmQgU1NMX3NldF9iaW8gYm9ycm93cyBvdXIgcmVmZXJlbmNlLgorICAgICAgICAgKiBUbyBwcmV2ZW50IGEgZG91YmxlIGZyZWUgaW4gbWVtb3J5X2Jpb19kZWFsbG9jKCkgd2UgbmVlZCB0byB0YWtlIGFuCisgICAgICAgICAqIGV4dHJhIHJlZmVyZW5jZSBoZXJlLiAqLworICAgICAgICBDUllQVE9fYWRkKCZpbmJpby0+YmlvLT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19CSU8pOworICAgICAgICBDUllQVE9fYWRkKCZvdXRiaW8tPmJpby0+cmVmZXJlbmNlcywgMSwgQ1JZUFRPX0xPQ0tfQklPKTsKKyAgICAgICAgU1NMX3NldF9iaW8oc2VsZi0+c3NsLCBpbmJpby0+YmlvLCBvdXRiaW8tPmJpbyk7CisgICAgfQogICAgIG1vZGUgPSBTU0xfTU9ERV9BQ0NFUFRfTU9WSU5HX1dSSVRFX0JVRkZFUjsKICNpZmRlZiBTU0xfTU9ERV9BVVRPX1JFVFJZCiAgICAgbW9kZSB8PSBTU0xfTU9ERV9BVVRPX1JFVFJZOwpAQCAtNTIwLDcgKzU0Myw3IEBACiAgICAgLyogSWYgdGhlIHNvY2tldCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBvciB0aW1lb3V0IG1vZGUsIHNldCB0aGUgQklPCiAgICAgICogdG8gbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nIGlzIHRoZSBkZWZhdWx0KQogICAgICAqLwotICAgIGlmIChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKSB7CisgICAgaWYgKHNvY2sgJiYgc29jay0+c29ja190aW1lb3V0ID49IDApIHsKICAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCAxKTsKICAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCAxKTsKICAgICB9CkBAIC01MzMsMzUgKzU1Niw1MiBAQAogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCiAKICAgICBzZWxmLT5zb2NrZXRfdHlwZSA9IHNvY2tldF90eXBlOwotICAgIHNlbGYtPlNvY2tldCA9IFB5V2Vha3JlZl9OZXdSZWYoKFB5T2JqZWN0ICopIHNvY2ssIE5VTEwpOwotICAgIGlmIChzZWxmLT5Tb2NrZXQgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+U29ja2V0ID0gUHlXZWFrcmVmX05ld1JlZigoUHlPYmplY3QgKikgc29jaywgTlVMTCk7CisgICAgICAgIGlmIChzZWxmLT5Tb2NrZXQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgUHlfWERFQ1JFRihzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC8qIFNTTCBvYmplY3QgbWV0aG9kcyAqLwogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTGRvX2hhbmRzaGFrZShQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5kb19oYW5kc2hha2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzA4OThhODkzNjU0OGY2IGlucHV0PWQyZDczN2RlM2RmMDE4YzhdKi8KIHsKICAgICBpbnQgcmV0OwogICAgIGludCBlcnI7CiAgICAgaW50IHNvY2tzdGF0ZSwgbm9uYmxvY2tpbmc7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgewotICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jaykgeworICAgICAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoc29jayk7CisKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KKyAgICAgICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDApOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihzb2NrKTsKIAotICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgdGltZW91dCA9IEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKTsKKyAgICBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAKICAgICAvKiBBY3R1YWxseSBuZWdvdGlhdGUgU1NMIGNvbm5lY3Rpb24gKi8KICAgICAvKiBYWFggSWYgU1NMX2RvX2hhbmRzaGFrZSgpIHJldHVybnMgMCwgaXQncyBhbHNvIGEgZmFpbHVyZS4gKi8KQEAgLTU3MCwxNSArNjEwLDIxIEBACiAgICAgICAgIHJldCA9IFNTTF9kb19oYW5kc2hha2Uoc2VsZi0+c3NsKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIHJldCk7CiAgICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisKICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMCk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMCwgdGltZW91dCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzb2Nrc3RhdGUgPSBTT0NLRVRfT1BFUkFUSU9OX09LOwogICAgICAgICB9CisKICAgICAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJSU1RSKCJUaGUgaGFuZHNoYWtlIG9wZXJhdGlvbiB0aW1lZCBvdXQiKSk7CkBAIC01OTUsNyArNjQxLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQgfHwgZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKTsKLSAgICBQeV9ERUNSRUYoc29jayk7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICBpZiAocmV0IDwgMSkKICAgICAgICAgcmV0dXJuIFB5U1NMX1NldEVycm9yKHNlbGYsIHJldCwgX19GSUxFX18sIF9fTElORV9fKTsKIApAQCAtNjEwLDcgKzY1Niw3IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC03NzksMTIgKzgyNSw3IEBACiAgICAgY2hhciBidWZbMjA0OF07CiAgICAgY2hhciAqdnB0cjsKICAgICBpbnQgbGVuOwotICAgIC8qIElzc3VlICMyOTczOiBBU04xX2l0ZW1fZDJpKCkgQVBJIGNoYW5nZWQgaW4gT3BlblNTTCAwLjkuNm0gKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDYwZGZMCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsKLSNlbHNlCi0gICAgdW5zaWduZWQgY2hhciAqcDsKLSNlbmRpZgogCiAgICAgaWYgKGNlcnRpZmljYXRlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBwZWVyX2FsdF9uYW1lczsKQEAgLTEyNzQsMjUgKzEzMTUsMjggQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfdGVzdF9kZWNvZGVfY2VydGlmaWNhdGUgKFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphcmdzKSB7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl90ZXN0X2RlY29kZV9jZXJ0CisgICAgcGF0aDogb2JqZWN0KGNvbnZlcnRlcj0iUHlVbmljb2RlX0ZTQ29udmVydGVyIikKKyAgICAvCiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NzllMDFkYjI4MjgwNGU5IGlucHV0PWNkZWFhZjAyZDQzNDY2MjhdKi8KK3sKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgWDUwOSAqeD1OVUxMOwogICAgIEJJTyAqY2VydDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6dGVzdF9kZWNvZGVfY2VydGlmaWNhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZmaWxlbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKChjZXJ0PUJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBtYWxsb2MgbWVtb3J5IHRvIHJlYWQgZmlsZSIpOwogICAgICAgICBnb3RvIGZhaWwwOwogICAgIH0KIAotICAgIGlmIChCSU9fcmVhZF9maWxlbmFtZShjZXJ0LCBQeUJ5dGVzX0FzU3RyaW5nKGZpbGVuYW1lKSkgPD0gMCkgeworICAgIGlmIChCSU9fcmVhZF9maWxlbmFtZShjZXJ0LCBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpKSA8PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG9wZW4gZmlsZSIpOwogICAgICAgICBnb3RvIGZhaWwwOwpAQCAtMTMwOSwyMCArMTM1MywzMyBAQAogICAgIFg1MDlfZnJlZSh4KTsKIAogICBmYWlsMDoKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICBpZiAoY2VydCAhPSBOVUxMKSBCSU9fZnJlZShjZXJ0KTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5wZWVyX2NlcnRpZmljYXRlCisgICAgZGVyIGFzIGJpbmFyeV9tb2RlOiBib29sID0gRmFsc2UKKyAgICAvCisKK1JldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci4KKworSWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLCByZXR1cm5zIE5vbmUuICBJZiBhIGNlcnRpZmljYXRlIHdhcworcHJvdmlkZWQsIGJ1dCBub3QgdmFsaWRhdGVkLCByZXR1cm5zIGFuIGVtcHR5IGRpY3Rpb25hcnkuICBPdGhlcndpc2UKK3JldHVybnMgYSBkaWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlZXIgY2VydGlmaWNhdGUuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUKK3BlZXIgY2VydGlmaWNhdGUsIG9yIE5vbmUgaWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLiAgVGhpcyB3aWxsCityZXR1cm4gdGhlIGNlcnRpZmljYXRlIGV2ZW4gaWYgaXQgd2Fzbid0IHZhbGlkYXRlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX3BlZXJjZXJ0KFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIGludCBiaW5hcnlfbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGRjM2U0ZDFkODE4YTFkIGlucHV0PTgyODFiZDFkMTkzZGI4NDNdKi8KIHsKICAgICBpbnQgdmVyaWZpY2F0aW9uOwotICAgIGludCBiaW5hcnlfbW9kZSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLCAmYmluYXJ5X21vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+aGFuZHNoYWtlX2RvbmUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xMzQ0LDY4ICsxNDAxLDEyMyBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX3BlZXJjZXJ0X2RvYywKLSJwZWVyX2NlcnRpZmljYXRlKFtkZXI9RmFsc2VdKSAtPiBjZXJ0aWZpY2F0ZVxuXAotXG5cCi1SZXR1cm5zIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIHBlZXIuICBJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsXG5cCi1yZXR1cm5zIE5vbmUuICBJZiBhIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQsIHJldHVybnNcblwKLWFuIGVtcHR5IGRpY3Rpb25hcnkuICBPdGhlcndpc2UgcmV0dXJucyBhIGRpY3QgY29udGFpbmluZyBpbmZvcm1hdGlvblxuXAotYWJvdXQgdGhlIHBlZXIgY2VydGlmaWNhdGUuXG5cCi1cblwKLUlmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGVcblwKLXBlZXIgY2VydGlmaWNhdGUsIG9yIE5vbmUgaWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLiAgVGhpcyB3aWxsXG5cCi1yZXR1cm4gdGhlIGNlcnRpZmljYXRlIGV2ZW4gaWYgaXQgd2Fzbid0IHZhbGlkYXRlZC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9jaXBoZXIgKFB5U1NMU29ja2V0ICpzZWxmKSB7Ci0KLSAgICBQeU9iamVjdCAqcmV0dmFsLCAqdjsKLSAgICBjb25zdCBTU0xfQ0lQSEVSICpjdXJyZW50OwotICAgIGNoYXIgKmNpcGhlcl9uYW1lOwotICAgIGNoYXIgKmNpcGhlcl9wcm90b2NvbDsKLQotICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgY3VycmVudCA9IFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc2VsZi0+c3NsKTsKLSAgICBpZiAoY3VycmVudCA9PSBOVUxMKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLQotICAgIHJldHZhbCA9IFB5VHVwbGVfTmV3KDMpOworc3RhdGljIFB5T2JqZWN0ICoKK2NpcGhlcl90b190dXBsZShjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpCit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWUsICpjaXBoZXJfcHJvdG9jb2w7CisgICAgUHlPYmplY3QgKnYsICpyZXR2YWwgPSBQeVR1cGxlX05ldygzKTsKICAgICBpZiAocmV0dmFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY2lwaGVyX25hbWUgPSAoY2hhciAqKSBTU0xfQ0lQSEVSX2dldF9uYW1lKGN1cnJlbnQpOworICAgIGNpcGhlcl9uYW1lID0gU1NMX0NJUEhFUl9nZXRfbmFtZShjaXBoZXIpOwogICAgIGlmIChjaXBoZXJfbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXR2YWwsIDAsIFB5X05vbmUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhjaXBoZXJfbmFtZSk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWwwOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMCwgdik7CiAgICAgfQotICAgIGNpcGhlcl9wcm90b2NvbCA9IChjaGFyICopIFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY3VycmVudCk7CisKKyAgICBjaXBoZXJfcHJvdG9jb2wgPSBTU0xfQ0lQSEVSX2dldF92ZXJzaW9uKGNpcGhlcik7CiAgICAgaWYgKGNpcGhlcl9wcm90b2NvbCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXR2YWwsIDEsIFB5X05vbmUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhjaXBoZXJfcHJvdG9jb2wpOwogICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWlsMDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXR2YWwsIDEsIHYpOwogICAgIH0KLSAgICB2ID0gUHlMb25nX0Zyb21Mb25nKFNTTF9DSVBIRVJfZ2V0X2JpdHMoY3VycmVudCwgTlVMTCkpOworCisgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZyhTU0xfQ0lQSEVSX2dldF9iaXRzKGNpcGhlciwgTlVMTCkpOwogICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDA7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMiwgdik7CisKICAgICByZXR1cm4gcmV0dmFsOwogCi0gIGZhaWwwOgorICBmYWlsOgogICAgIFB5X0RFQ1JFRihyZXR2YWwpOwogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNkMTc0ZWFkMmU0MmM0ZmQgaW5wdXQ9MGJmZTE0OWRhOGZlNjMwNl0qLworeworICAgIFNTTF9TRVNTSU9OICpzZXNzID0gU1NMX2dldF9zZXNzaW9uKHNlbGYtPnNzbCk7CisgICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKmNpcGhlcnM7CisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmICghc2VzcyB8fCAhc2Vzcy0+Y2lwaGVycykKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgY2lwaGVycyA9IHNlc3MtPmNpcGhlcnM7CisgICAgcmVzID0gUHlMaXN0X05ldyhza19TU0xfQ0lQSEVSX251bShjaXBoZXJzKSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaSA9IDA7IGkgPCBza19TU0xfQ0lQSEVSX251bShjaXBoZXJzKTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBjaXBoZXJfdG9fdHVwbGUoc2tfU1NMX0NJUEhFUl92YWx1ZShjaXBoZXJzLCBpKSk7CisgICAgICAgIGlmICghdHVwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZXMsIGksIHR1cCk7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5jaXBoZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jaXBoZXJfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNzY0MTdjMTZkMGU1ODE1IGlucHV0PTU0OGZiMGUyNzI0Mzc5NmRdKi8KK3sKKyAgICBjb25zdCBTU0xfQ0lQSEVSICpjdXJyZW50OworCisgICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjdXJyZW50ID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzZWxmLT5zc2wpOworICAgIGlmIChjdXJyZW50ID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBjaXBoZXJfdG9fdHVwbGUoY3VycmVudCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC52ZXJzaW9uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdmVyc2lvbl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE3OGFlZDMzMTkzYjJjZGIgaW5wdXQ9OTAwMTg2YTUwMzQzNmZkNl0qLworeworICAgIGNvbnN0IGNoYXIgKnZlcnNpb247CisKKyAgICBpZiAoc2VsZi0+c3NsID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHZlcnNpb24gPSBTU0xfZ2V0X3ZlcnNpb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoIXN0cmNtcCh2ZXJzaW9uLCAidW5rbm93biIpKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcodmVyc2lvbik7Cit9CisKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZikgeworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI5MWQ0OTRjZDIwN2VjZjYgaW5wdXQ9YzI4ZmRlMTM5MjA0YjgyNl0qLworewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKICAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOwogCkBAIC0xNDE0LDExICsxNTI2LDM4IEBACiAKICAgICBpZiAob3V0ID09IE5VTEwpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKikgb3V0LCBvdXRsZW4pOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilvdXQsIG91dGxlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9jb21wcmVzc2lvbihQeVNTTFNvY2tldCAqc2VsZikgeworI2lmZGVmIEhBVkVfQUxQTgorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2wKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWMzMzY4OGIzMDNkMjUwZiBpbnB1dD00NDJkZTMwZTM1YmMyOTEzXSovCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0OworICAgIHVuc2lnbmVkIGludCBvdXRsZW47CisKKyAgICBTU0xfZ2V0MF9hbHBuX3NlbGVjdGVkKHNlbGYtPnNzbCwgJm91dCwgJm91dGxlbik7CisKKyAgICBpZiAob3V0ID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilvdXQsIG91dGxlbik7Cit9CisjZW5kaWYKKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LmNvbXByZXNzaW9uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb25faW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDE2Y2IxYmI0NjQ2YWU3IGlucHV0PTVkMDU5ZDBhMmJiYzMyYzhdKi8KK3sKICNpZmRlZiBPUEVOU1NMX05PX0NPTVAKICAgICBQeV9SRVRVUk5fTk9ORTsKICNlbHNlCkBAIC0xNDczLDYgKzE2MTIsNTQgQEAKIFNTTFNvY2tldCBiZWZvcmUgdGhlIGNyeXB0b2dyYXBoaWMgZXhjaGFuZ2UgaGFuZHNoYWtlIG1lc3NhZ2VzXG4iKTsKIAogCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3NlcnZlcl9zaWRlKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoc2VsZi0+c29ja2V0X3R5cGUgPT0gUFlfU1NMX1NFUlZFUik7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfc2VydmVyX3NpZGVfZG9jLAorIldoZXRoZXIgdGhpcyBpcyBhIHNlcnZlci1zaWRlIHNvY2tldC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWUoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmMpCit7CisgICAgaWYgKHNlbGYtPnNlcnZlcl9ob3N0bmFtZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBQeV9JTkNSRUYoc2VsZi0+c2VydmVyX2hvc3RuYW1lKTsKKyAgICByZXR1cm4gc2VsZi0+c2VydmVyX2hvc3RuYW1lOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2MsCisiVGhlIGN1cnJlbnRseSBzZXQgc2VydmVyIGhvc3RuYW1lIChmb3IgU05JKS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9vd25lcihQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICBQeU9iamVjdCAqb3duZXI7CisKKyAgICBpZiAoc2VsZi0+b3duZXIgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICBvd25lciA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+b3duZXIpOworICAgIFB5X0lOQ1JFRihvd25lcik7CisgICAgcmV0dXJuIG93bmVyOworfQorCitzdGF0aWMgaW50CitQeVNTTF9zZXRfb3duZXIoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqYykKK3sKKyAgICBQeV9YREVDUkVGKHNlbGYtPm93bmVyKTsKKyAgICBzZWxmLT5vd25lciA9IFB5V2Vha3JlZl9OZXdSZWYodmFsdWUsIE5VTEwpOworICAgIGlmIChzZWxmLT5vd25lciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfb3duZXJfZG9jLAorIlRoZSBQeXRob24tbGV2ZWwgb3duZXIgb2YgdGhpcyBvYmplY3QuXAorUGFzc2VkIGFzIFwic2VsZlwiIGluIHNlcnZlcm5hbWUgY2FsbGJhY2suIik7CisKIAogc3RhdGljIHZvaWQgUHlTU0xfZGVhbGxvYyhQeVNTTFNvY2tldCAqc2VsZikKIHsKQEAgLTE0ODIsNiArMTY2OSw4IEBACiAgICAgICAgIFNTTF9mcmVlKHNlbGYtPnNzbCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5Tb2NrZXQpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+Y3R4KTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPnNlcnZlcl9ob3N0bmFtZSk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5vd25lcik7CiAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwogfQogCkBAIC0xNDkxLDE3ICsxNjgwLDI3IEBACiAgKi8KIAogc3RhdGljIGludAotY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcpCitQeVNTTF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IHRpbWVvdXQpCiB7CisgICAgaW50IHJjOworI2lmZGVmIEhBVkVfUE9MTAorICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOworICAgIF9QeVRpbWVfdCBtczsKKyNlbHNlCisgICAgaW50IG5mZHM7CiAgICAgZmRfc2V0IGZkczsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBpbnQgcmM7CisjZW5kaWYKIAogICAgIC8qIE5vdGhpbmcgdG8gZG8gdW5sZXNzIHdlJ3JlIGluIHRpbWVvdXQgbW9kZSAobm90IG5vbi1ibG9ja2luZykgKi8KLSAgICBpZiAocy0+c29ja190aW1lb3V0IDwgMC4wKQotICAgICAgICByZXR1cm4gU09DS0VUX0lTX0JMT0NLSU5HOwotICAgIGVsc2UgaWYgKHMtPnNvY2tfdGltZW91dCA9PSAwLjApCisgICAgaWYgKChzID09IE5VTEwpIHx8ICh0aW1lb3V0ID09IDApKQogICAgICAgICByZXR1cm4gU09DS0VUX0lTX05PTkJMT0NLSU5HOworICAgIGVsc2UgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPiAwKQorICAgICAgICAgICAgcmV0dXJuIFNPQ0tFVF9IQVNfVElNRURfT1VUOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gU09DS0VUX0lTX0JMT0NLSU5HOworICAgIH0KIAogICAgIC8qIEd1YXJkIGFnYWluc3QgY2xvc2VkIHNvY2tldCAqLwogICAgIGlmIChzLT5zb2NrX2ZkIDwgMCkKQEAgLTE1MTAsODUgKzE3MDksOTEgQEAKICAgICAvKiBQcmVmZXIgcG9sbCwgaWYgYXZhaWxhYmxlLCBzaW5jZSB5b3UgY2FuIHBvbGwoKSBhbnkgZmQKICAgICAgKiB3aGljaCBjYW4ndCBiZSBkb25lIHdpdGggc2VsZWN0KCkuICovCiAjaWZkZWYgSEFWRV9QT0xMCi0gICAgewotICAgICAgICBzdHJ1Y3QgcG9sbGZkIHBvbGxmZDsKLSAgICAgICAgaW50IHRpbWVvdXQ7CisgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKKyAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CiAKLSAgICAgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKLSAgICAgICAgcG9sbGZkLmV2ZW50cyA9IHdyaXRpbmcgPyBQT0xMT1VUIDogUE9MTElOOworICAgIC8qIHRpbWVvdXQgaXMgaW4gc2Vjb25kcywgcG9sbCgpIHVzZXMgbWlsbGlzZWNvbmRzICovCisgICAgbXMgPSAoaW50KV9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICBhc3NlcnQobXMgPD0gSU5UX01BWCk7CiAKLSAgICAgICAgLyogcy0+c29ja190aW1lb3V0IGlzIGluIHNlY29uZHMsIHRpbWVvdXQgaW4gbXMgKi8KLSAgICAgICAgdGltZW91dCA9IChpbnQpKHMtPnNvY2tfdGltZW91dCAqIDEwMDAgKyAwLjUpOwotICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJjID0gcG9sbCgmcG9sbGZkLCAxLCB0aW1lb3V0KTsKLSAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBnb3RvIG5vcm1hbF9yZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmMgPSBwb2xsKCZwb2xsZmQsIDEsIChpbnQpbXMpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisjZWxzZQogICAgIC8qIEd1YXJkIGFnYWluc3Qgc29ja2V0IHRvbyBsYXJnZSBmb3Igc2VsZWN0Ki8KICAgICBpZiAoIV9QeUlzU2VsZWN0YWJsZV9mZChzLT5zb2NrX2ZkKSkKICAgICAgICAgcmV0dXJuIFNPQ0tFVF9UT09fTEFSR0VfRk9SX1NFTEVDVDsKIAotICAgIC8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIHRvIHNlbGVjdCAqLwotICAgIHR2LnR2X3NlYyA9IChpbnQpcy0+c29ja190aW1lb3V0OwotICAgIHR2LnR2X3VzZWMgPSAoaW50KSgocy0+c29ja190aW1lb3V0IC0gdHYudHZfc2VjKSAqIDFlNik7CisgICAgX1B5VGltZV9Bc1RpbWV2YWxfbm9yYWlzZSh0aW1lb3V0LCAmdHYsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisKICAgICBGRF9aRVJPKCZmZHMpOwogICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZmRzKTsKIAotICAgIC8qIFNlZSBpZiB0aGUgc29ja2V0IGlzIHJlYWR5ICovCisgICAgLyogV2FpdCB1bnRpbCB0aGUgc29ja2V0IGJlY29tZXMgcmVhZHkgKi8KICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgbmZkcyA9IFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KTsKICAgICBpZiAod3JpdGluZykKLSAgICAgICAgcmMgPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAotICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZmRzLCBOVUxMLCAmdHYpOworICAgICAgICByYyA9IHNlbGVjdChuZmRzLCBOVUxMLCAmZmRzLCBOVUxMLCAmdHYpOwogICAgIGVsc2UKLSAgICAgICAgcmMgPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAmZmRzLCBOVUxMLCBOVUxMLCAmdHYpOworICAgICAgICByYyA9IHNlbGVjdChuZmRzLCAmZmRzLCBOVUxMLCBOVUxMLCAmdHYpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0KLSNpZmRlZiBIQVZFX1BPTEwKLW5vcm1hbF9yZXR1cm46CiAjZW5kaWYKKwogICAgIC8qIFJldHVybiBTT0NLRVRfVElNRURfT1VUIG9uIHRpbWVvdXQsIFNPQ0tFVF9PUEVSQVRJT05fT0sgb3RoZXJ3aXNlCiAgICAgICAgKHdoZW4gd2UgYXJlIGFibGUgdG8gd3JpdGUgb3Igd2hlbiB0aGVyZSdzIHNvbWV0aGluZyB0byByZWFkKSAqLwogICAgIHJldHVybiByYyA9PSAwID8gU09DS0VUX0hBU19USU1FRF9PVVQgOiBTT0NLRVRfT1BFUkFUSU9OX09LOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHdyaXRlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGVzIHRoZSBieXRlcy1saWtlIG9iamVjdCBiIGludG8gdGhlIFNTTCBvYmplY3QuCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYTdhNmJlNTUyNzM1OGQ4IGlucHV0PTc3MjYyZDk5NGZlNTEwMGFdKi8KIHsKLSAgICBQeV9idWZmZXIgYnVmOwogICAgIGludCBsZW47CiAgICAgaW50IHNvY2tzdGF0ZTsKICAgICBpbnQgZXJyOwogICAgIGludCBub25ibG9ja2luZzsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sKLSAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNlbGYtPlNvY2tldCk7CisgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrID0gR0VUX1NPQ0tFVChzZWxmKTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOworICAgIGludCBoYXNfdGltZW91dDsKIAotICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKLSAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoc29jayk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJmJ1ZikpIHsKLSAgICAgICAgUHlfREVDUkVGKHNvY2spOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKICAgICB9CiAKLSAgICBpZiAoYnVmLmxlbiA+IElOVF9NQVgpIHsKKyAgICBpZiAoYi0+bGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgbG9uZ2VyIHRoYW4gJWQgYnl0ZXMiLCBJTlRfTUFYKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLwotICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KKyAgICAgICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDApOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgfQogCi0gICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOworICAgIHRpbWVvdXQgPSBHRVRfU09DS0VUX1RJTUVPVVQoc29jayk7CisgICAgaGFzX3RpbWVvdXQgPSAodGltZW91dCA+IDApOworICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDEsIHRpbWVvdXQpOwogICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHdyaXRlIG9wZXJhdGlvbiB0aW1lZCBvdXQiKTsKQEAgLTE2MDIsMjEgKzE4MDcsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJVbmRlcmx5aW5nIHNvY2tldCB0b28gbGFyZ2UgZm9yIHNlbGVjdCgpLiIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKwogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBsZW4gPSBTU0xfd3JpdGUoc2VsZi0+c3NsLCBidWYuYnVmLCAoaW50KWJ1Zi5sZW4pOworICAgICAgICBsZW4gPSBTU0xfd3JpdGUoc2VsZi0+c3NsLCBiLT5idWYsIChpbnQpYi0+bGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGxlbik7CiAgICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KKworICAgICAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMCk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMCwgdGltZW91dCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKSB7Ci0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzb2Nrc3RhdGUgPSBTT0NLRVRfT1BFUkFUSU9OX09LOwogICAgICAgICB9CisKICAgICAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3cml0ZSBvcGVyYXRpb24gdGltZWQgb3V0Iik7CkBAIC0xNjMwLDI2ICsxODQxLDI2IEBACiAgICAgICAgIH0KICAgICB9IHdoaWxlIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCB8fCBlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpOwogCi0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICBpZiAobGVuID4gMCkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhsZW4pOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFB5U1NMX1NldEVycm9yKHNlbGYsIGxlbiwgX19GSUxFX18sIF9fTElORV9fKTsKIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1NTTHdyaXRlX2RvYywKLSJ3cml0ZShzKSAtPiBsZW5cblwKLVxuXAotV3JpdGVzIHRoZSBzdHJpbmcgcyBpbnRvIHRoZSBTU0wgb2JqZWN0LiAgUmV0dXJucyB0aGUgbnVtYmVyXG5cCi1vZiBieXRlcyB3cml0dGVuLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnBlbmRpbmcKIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xwZW5kaW5nKFB5U1NMU29ja2V0ICpzZWxmKQorUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFscmVhZHkgZGVjcnlwdGVkIGJ5dGVzIGF2YWlsYWJsZSBmb3IgcmVhZCwgcGVuZGluZyBvbiB0aGUgY29ubmVjdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgzZDlmZWNkYzMwOGE4MyBpbnB1dD0yYjc3NDg3ZDZkZmQ1OTdmXSovCiB7CiAgICAgaW50IGNvdW50ID0gMDsKIApAQCAtMTY2Miw0OSArMTg3Myw1MiBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGNvdW50KTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1NTTHBlbmRpbmdfZG9jLAotInBlbmRpbmcoKSAtPiBjb3VudFxuXAotXG5cCi1SZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLFxuXAotcGVuZGluZyBvbiB0aGUgY29ubmVjdGlvbi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnJlYWQKKyAgICBzaXplIGFzIGxlbjogaW50CisgICAgWworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIF0KKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMcmVhZChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9yZWFkX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIGludCBsZW4sIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMDA5Nzc3NmNlYzJhMGFmIGlucHV0PWZmMTU3ZWI5MThkMDkwNWJdKi8KIHsKICAgICBQeU9iamVjdCAqZGVzdCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBjaGFyICptZW07Ci0gICAgaW50IGxlbiwgY291bnQ7Ci0gICAgaW50IGJ1Zl9wYXNzZWQgPSAwOworICAgIGludCBjb3VudDsKICAgICBpbnQgc29ja3N0YXRlOwogICAgIGludCBlcnI7CiAgICAgaW50IG5vbmJsb2NraW5nOwotICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jawotICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+U29ja2V0KTsKKyAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sgPSBHRVRfU09DS0VUKHNlbGYpOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CisgICAgaW50IGhhc190aW1lb3V0OwogCi0gICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoc29jayk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihzb2NrKTsKIAotICAgIGJ1Zi5vYmogPSBOVUxMOwotICAgIGJ1Zi5idWYgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXx3KjpyZWFkIiwgJmxlbiwgJmJ1ZikpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBpZiAoKGJ1Zi5idWYgPT0gTlVMTCkgJiYgKGJ1Zi5vYmogPT0gTlVMTCkpIHsKKyAgICBpZiAoIWdyb3VwX3JpZ2h0XzEpIHsKICAgICAgICAgZGVzdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKICAgICAgICAgaWYgKGRlc3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIG1lbSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRlc3QpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYnVmX3Bhc3NlZCA9IDE7Ci0gICAgICAgIG1lbSA9IGJ1Zi5idWY7Ci0gICAgICAgIGlmIChsZW4gPD0gMCB8fCBsZW4gPiBidWYubGVuKSB7Ci0gICAgICAgICAgICBsZW4gPSAoaW50KSBidWYubGVuOwotICAgICAgICAgICAgaWYgKGJ1Zi5sZW4gIT0gbGVuKSB7CisgICAgICAgIG1lbSA9IGJ1ZmZlci0+YnVmOworICAgICAgICBpZiAobGVuIDw9IDAgfHwgbGVuID4gYnVmZmVyLT5sZW4pIHsKKyAgICAgICAgICAgIGxlbiA9IChpbnQpIGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgaWYgKGJ1ZmZlci0+bGVuICE9IGxlbikgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4aW11bSBsZW5ndGggY2FuJ3QgZml0IGluIGEgQyAnaW50JyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNzEyLDMxICsxOTI2LDQzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLwotICAgIG5vbmJsb2NraW5nID0gKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOwotICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3diaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KKyAgICAgICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDApOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgfQorCisgICAgdGltZW91dCA9IEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKTsKKyAgICBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAKICAgICBkbyB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgY291bnQgPSBTU0xfcmVhZChzZWxmLT5zc2wsIG1lbSwgbGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGNvdW50KTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKLSAgICAgICAgfSBlbHNlIGlmICgoZXJyID09IFNTTF9FUlJPUl9aRVJPX1JFVFVSTikgJiYKLSAgICAgICAgICAgICAgICAgICAoU1NMX2dldF9zaHV0ZG93bihzZWxmLT5zc2wpID09Ci0gICAgICAgICAgICAgICAgICAgIFNTTF9SRUNFSVZFRF9TSFVURE9XTikpCisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CisgICAgICAgIH0gZWxzZSBpZiAoZXJyID09IFNTTF9FUlJPUl9aRVJPX1JFVFVSTiAmJgorICAgICAgICAgICAgICAgICAgIFNTTF9nZXRfc2h1dGRvd24oc2VsZi0+c3NsKSA9PSBTU0xfUkVDRUlWRURfU0hVVERPV04pCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvdW50ID0gMDsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc29ja3N0YXRlID0gU09DS0VUX09QRVJBVElPTl9PSzsKKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHJlYWQgb3BlcmF0aW9uIHRpbWVkIG91dCIpOwpAQCAtMTc0NSw1NSArMTk3MSw2NiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCB8fCBlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpOworCiAgICAgaWYgKGNvdW50IDw9IDApIHsKICAgICAgICAgUHlTU0xfU2V0RXJyb3Ioc2VsZiwgY291bnQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiBkb25lOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKLSAgICBpZiAoIWJ1Zl9wYXNzZWQpIHsKKyAgICBQeV9YREVDUkVGKHNvY2spOworICAgIGlmICghZ3JvdXBfcmlnaHRfMSkgewogICAgICAgICBfUHlCeXRlc19SZXNpemUoJmRlc3QsIGNvdW50KTsKICAgICAgICAgcmV0dXJuIGRlc3Q7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGNvdW50KTsKICAgICB9CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKLSAgICBpZiAoIWJ1Zl9wYXNzZWQpCisgICAgUHlfWERFQ1JFRihzb2NrKTsKKyAgICBpZiAoIWdyb3VwX3JpZ2h0XzEpCiAgICAgICAgIFB5X1hERUNSRUYoZGVzdCk7Ci0gICAgZWxzZQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMcmVhZF9kb2MsCi0icmVhZChbbGVuXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJlYWQgdXAgdG8gbGVuIGJ5dGVzIGZyb20gdGhlIFNTTCBzb2NrZXQuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2h1dGRvd24KIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xzaHV0ZG93bihQeVNTTFNvY2tldCAqc2VsZikKK0RvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZC4KKworUmV0dXJucyB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2ExYWE3ZWQ5ZDI1Y2E0MiBpbnB1dD1lZGUyY2MxYTJkZGYwZWU0XSovCiB7CiAgICAgaW50IGVyciwgc3NsX2Vyciwgc29ja3N0YXRlLCBub25ibG9ja2luZzsKICAgICBpbnQgemVyb3MgPSAwOwotICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jawotICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+U29ja2V0KTsKKyAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sgPSBHRVRfU09DS0VUKHNlbGYpOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CisgICAgaW50IGhhc190aW1lb3V0OwogCi0gICAgLyogR3VhcmQgYWdhaW5zdCBjbG9zZWQgc29ja2V0ICovCi0gICAgaWYgKCgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB8fCAoc29jay0+c29ja19mZCA8IDApKSB7Ci0gICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKLSAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgLyogR3VhcmQgYWdhaW5zdCBjbG9zZWQgc29ja2V0ICovCisgICAgICAgIGlmICgoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgfHwgKHNvY2stPnNvY2tfZmQgPCAwKSkgeworICAgICAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoc29jayk7CisKKyAgICAgICAgLyogSnVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KKyAgICAgICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDApOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICAgICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihzb2NrKTsKIAotICAgIC8qIEp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgdGltZW91dCA9IEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKTsKKyAgICBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCkBAIC0xODA5LDYgKzIwNDYsNyBAQAogICAgICAgICAgICAgU1NMX3NldF9yZWFkX2FoZWFkKHNlbGYtPnNzbCwgMCk7CiAgICAgICAgIGVyciA9IFNTTF9zaHV0ZG93bihzZWxmLT5zc2wpOwogICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgICAgIC8qIElmIGVyciA9PSAxLCBhIHNlY3VyZSBzaHV0ZG93biB3aXRoIFNTTF9zaHV0ZG93bigpIGlzIGNvbXBsZXRlICovCiAgICAgICAgIGlmIChlcnIgPiAwKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODIzLDE0ICsyMDYxLDE4IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICAvKiBQb3NzaWJseSByZXRyeSBzaHV0ZG93biB1bnRpbCB0aW1lb3V0IG9yIGZhaWx1cmUgKi8KICAgICAgICAgc3NsX2VyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBlcnIpOwogICAgICAgICBpZiAoc3NsX2VyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEKQotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDApOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDAsIHRpbWVvdXQpOwogICAgICAgICBlbHNlIGlmIChzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKQotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDEsIHRpbWVvdXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBpZiAoc3NsX2VyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEKQogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLApAQCAtMTg1MSwyNyArMjA5MywzMSBAQAogICAgIH0KIAogICAgIGlmIChlcnIgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICAgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICAgICAgcmV0dXJuIFB5U1NMX1NldEVycm9yKHNlbGYsIGVyciwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICB9Ci0gICAgZWxzZQorICAgIGlmIChzb2NrKQogICAgICAgICAvKiBJdCdzIGFscmVhZHkgSU5DUkVGJ2VkICovCiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgc29jazsKKyAgICBlbHNlCisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc29jayk7CisgICAgUHlfWERFQ1JFRihzb2NrKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1NTTHNodXRkb3duX2RvYywKLSJzaHV0ZG93bihzKSAtPiBzb2NrZXRcblwKLVxuXAotRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLCBhbmQgcmV0dXJuc1xuXAotdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC50bHNfdW5pcXVlX2NiCiAKLSNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKK1JldHVybnMgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgZGF0YSwgYXMgZGVmaW5lZCBieSBSRkMgNTkyOS4KKworSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX3Rsc191bmlxdWVfY2IoUHlTU0xTb2NrZXQgKnNlbGYpCitfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzYTgzMmQ2MDNmNTg2YWYgaW5wdXQ9NDM5NTI1YzdiM2Q4ZDM0ZF0qLwogewogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIGNoYXIgYnVmW1B5U1NMX0NCX01BWExFTl07CkBAIC0xODk1LDQyICsyMTQxLDMyIEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX3Rsc191bmlxdWVfY2JfZG9jLAotInRsc191bmlxdWVfY2IoKSAtPiBieXRlc1xuXAotXG5cCi1SZXR1cm5zIHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIGRhdGEsIGFzIGRlZmluZWQgYnkgUkZDIDU5MjkuXG5cCi1cblwKLUlmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQiKTsKLQotI2VuZGlmIC8qIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAqLwotCiBzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKICAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKKyAgICB7InNlcnZlcl9zaWRlIiwgKGdldHRlcikgUHlTU0xfZ2V0X3NlcnZlcl9zaWRlLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICBQeVNTTF9nZXRfc2VydmVyX3NpZGVfZG9jfSwKKyAgICB7InNlcnZlcl9ob3N0bmFtZSIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVNTTF9nZXRfc2VydmVyX2hvc3RuYW1lX2RvY30sCisgICAgeyJvd25lciIsIChnZXR0ZXIpIFB5U1NMX2dldF9vd25lciwgKHNldHRlcikgUHlTU0xfc2V0X293bmVyLAorICAgICAgICAgICAgICBQeVNTTF9nZXRfb3duZXJfZG9jfSwKICAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTE1ldGhvZHNbXSA9IHsKLSAgICB7ImRvX2hhbmRzaGFrZSIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xkb19oYW5kc2hha2UsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHdyaXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1NTTHdyaXRlX2RvY30sCi0gICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHJlYWQsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfU1NMcmVhZF9kb2N9LAotICAgIHsicGVuZGluZyIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xwZW5kaW5nLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfU1NMcGVuZGluZ19kb2N9LAotICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilQeVNTTF9wZWVyY2VydCwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9wZWVyY2VydF9kb2N9LAotICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2NpcGhlciwgTUVUSF9OT0FSR1N9LAotI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2wsIE1FVEhfTk9BUkdTfSwKLSNlbmRpZgotICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfY29tcHJlc3Npb24sIE1FVEhfTk9BUkdTfSwKLSAgICB7InNodXRkb3duIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHNodXRkb3duLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfU1NMc2h1dGRvd25fZG9jfSwKLSNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKLSAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pUHlTU0xfdGxzX3VuaXF1ZV9jYiwgTUVUSF9OT0FSR1MsCi0gICAgIFB5U1NMX3Rsc191bmlxdWVfY2JfZG9jfSwKLSNlbmRpZgorICAgIF9TU0xfX1NTTFNPQ0tFVF9ET19IQU5EU0hBS0VfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1dSSVRFX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9SRUFEX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9QRU5ESU5HX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9QRUVSX0NFUlRJRklDQVRFX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9DSVBIRVJfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NIQVJFRF9DSVBIRVJTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9WRVJTSU9OX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX0NPTVBSRVNTSU9OX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9TSFVURE9XTl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfVExTX1VOSVFVRV9DQl9NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTE5NzMsMjAgKzIyMDksMjEgQEAKICAqIF9TU0xDb250ZXh0IG9iamVjdHMKICAqLwogCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19zc2wuX1NTTENvbnRleHQuX19uZXdfXworICAgIHByb3RvY29sIGFzIHByb3RvX3ZlcnNpb246IGludAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWNvbnRleHRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9fU1NMQ29udGV4dF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHByb3RvX3ZlcnNpb24pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmNmMGQ3YTA3NDFiNmJkMSBpbnB1dD04ZDU4YTgwNWI5NWZjNTM0XSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InByb3RvY29sIiwgTlVMTH07CiAgICAgUHlTU0xDb250ZXh0ICpzZWxmOwotICAgIGludCBwcm90b192ZXJzaW9uID0gUFlfU1NMX1ZFUlNJT05fU1NMMjM7CiAgICAgbG9uZyBvcHRpb25zOwogICAgIFNTTF9DVFggKmN0eCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgYXJncywga3dkcywgImk6X1NTTENvbnRleHQiLCBrd2xpc3QsCi0gICAgICAgICZwcm90b192ZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTMSkKICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTdjFfbWV0aG9kKCkpOwpAQCAtMjAzMSw2ICsyMjY4LDkgQEAKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiAgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IE5VTEw7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICBzZWxmLT5hbHBuX3Byb3RvY29scyA9IE5VTEw7CisjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKICAgICBzZWxmLT5zZXRfaG9zdG5hbWUgPSBOVUxMOwogI2VuZGlmCkBAIC0yMDk5LDIwICsyMzM5LDI1IEBACiAgICAgY29udGV4dF9jbGVhcihzZWxmKTsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECi0gICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKKyAgICBQeU1lbV9GUkVFKHNlbGYtPm5wbl9wcm90b2NvbHMpOworI2VuZGlmCisjaWZkZWYgSEFWRV9BTFBOCisgICAgUHlNZW1fRlJFRShzZWxmLT5hbHBuX3Byb3RvY29scyk7CiAjZW5kaWYKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotc2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgcmV0OwotICAgIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3Q7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9jaXBoZXJzCisgICAgY2lwaGVybGlzdDogc3RyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnNldF9jaXBoZXJzIiwgJmNpcGhlcmxpc3QpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChzZWxmLT5jdHgsIGNpcGhlcmxpc3QpOworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3QpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2EzMTYyZjM1NTdjMGYzZiBpbnB1dD1hN2FjOTMxYjlmM2NhN2ZjXSovCit7CisgICAgaW50IHJldCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KHNlbGYtPmN0eCwgY2lwaGVybGlzdCk7CiAgICAgaWYgKHJldCA9PSAwKSB7CiAgICAgICAgIC8qIENsZWFyaW5nIHRoZSBlcnJvciBxdWV1ZSBpcyBuZWNlc3Nhcnkgb24gc29tZSBPcGVuU1NMIHZlcnNpb25zLAogICAgICAgICAgICBvdGhlcndpc2UgdGhlIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYWdhaW4gd2hlbiBhbm90aGVyIFNTTCBjYWxsCkBAIC0yMTI2LDYgKzIzNzEsMzAgQEAKIH0KIAogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKK3N0YXRpYyBpbnQKK2RvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlcl9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBzZXJ2ZXJfcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjbGllbnRfcHJvdG9jb2xzLCB1bnNpZ25lZCBpbnQgY2xpZW50X3Byb3RvY29sc19sZW4pCit7CisgICAgaW50IHJldDsKKyAgICBpZiAoY2xpZW50X3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgIGNsaWVudF9wcm90b2NvbHMgPSAodW5zaWduZWQgY2hhciAqKSIiOworICAgICAgICBjbGllbnRfcHJvdG9jb2xzX2xlbiA9IDA7CisgICAgfQorICAgIGlmIChzZXJ2ZXJfcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgc2VydmVyX3Byb3RvY29scyA9ICh1bnNpZ25lZCBjaGFyICopIiI7CisgICAgICAgIHNlcnZlcl9wcm90b2NvbHNfbGVuID0gMDsKKyAgICB9CisKKyAgICByZXQgPSBTU0xfc2VsZWN0X25leHRfcHJvdG8ob3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wcm90b2NvbHMsIHNlcnZlcl9wcm90b2NvbHNfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfcHJvdG9jb2xzLCBjbGllbnRfcHJvdG9jb2xzX2xlbik7CisgICAgaWYgKGFscG4gJiYgcmV0ICE9IE9QRU5TU0xfTlBOX05FR09USUFURUQpCisgICAgICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9OT0FDSzsKKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKwogLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VfY2IgKi8KIHN0YXRpYyBpbnQKIF9hZHZlcnRpc2VOUE5fY2IoU1NMICpzLApAQCAtMjEzNSwxMCArMjQwNCwxMCBAQAogICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKIAogICAgIGlmIChzc2xfY3R4LT5ucG5fcHJvdG9jb2xzID09IE5VTEwpIHsKLSAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKKyAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSIiOwogICAgICAgICAqbGVuID0gMDsKICAgICB9IGVsc2UgewotICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7CisgICAgICAgICpkYXRhID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKICAgICAgICAgKmxlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOwogICAgIH0KIApAQCAtMjE1MSw0NiArMjQyMCwzMCBAQAogICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZXJ2ZXIsIHVuc2lnbmVkIGludCBzZXJ2ZXJfbGVuLAogICAgICAgICAgICAgICB2b2lkICphcmdzKQogewotICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKLQotICAgIHVuc2lnbmVkIGNoYXIgKmNsaWVudCA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7Ci0gICAgaW50IGNsaWVudF9sZW47Ci0KLSAgICBpZiAoY2xpZW50ID09IE5VTEwpIHsKLSAgICAgICAgY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7Ci0gICAgICAgIGNsaWVudF9sZW4gPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNsaWVudF9sZW4gPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzX2xlbjsKLSAgICB9Ci0KLSAgICBTU0xfc2VsZWN0X25leHRfcHJvdG8ob3V0LCBvdXRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwgc2VydmVyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBjbGllbnRfbGVuKTsKLQotICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKKyAgICBQeVNTTENvbnRleHQgKmN0eCA9IChQeVNTTENvbnRleHQgKilhcmdzOworICAgIHJldHVybiBkb19wcm90b2NvbF9zZWxlY3Rpb24oMCwgb3V0LCBvdXRsZW4sIHNlcnZlciwgc2VydmVyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+bnBuX3Byb3RvY29scywgY3R4LT5ucG5fcHJvdG9jb2xzX2xlbik7CiB9CiAjZW5kaWYKIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5fc2V0X25wbl9wcm90b2NvbHMKKyAgICBwcm90b3M6IFB5X2J1ZmZlcgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLV9zZXRfbnBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyYjAwMmMzMzI0MzkwYzYgaW5wdXQ9MzE5ZmNiNjZhYmY5NWJkN10qLwogewogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICBQeV9idWZmZXIgcHJvdG9zOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpzZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzZWxmLT5ucG5fcHJvdG9jb2xzICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKLSAgICB9Ci0KLSAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gUHlNZW1fTWFsbG9jKHByb3Rvcy5sZW4pOwotICAgIGlmIChzZWxmLT5ucG5fcHJvdG9jb2xzID09IE5VTEwpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLT5sZW4pOworICAgIGlmIChzZWxmLT5ucG5fcHJvdG9jb2xzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBtZW1jcHkoc2VsZi0+bnBuX3Byb3RvY29scywgcHJvdG9zLmJ1ZiwgcHJvdG9zLmxlbik7Ci0gICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MubGVuOworICAgIG1lbWNweShzZWxmLT5ucG5fcHJvdG9jb2xzLCBwcm90b3MtPmJ1ZiwgcHJvdG9zLT5sZW4pOworICAgIHNlbGYtPm5wbl9wcm90b2NvbHNfbGVuID0gKGludCkgcHJvdG9zLT5sZW47CiAKICAgICAvKiBzZXQgYm90aCBzZXJ2ZXIgYW5kIGNsaWVudCBjYWxsYmFja3MsIGJlY2F1c2UgdGhlIGNvbnRleHQgY2FuCiAgICAgICogYmUgdXNlZCB0byBjcmVhdGUgYm90aCB0eXBlcyBvZiBzb2NrZXRzICovCkBAIC0yMjAxLDcgKzI0NTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxlY3ROUE5fY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZik7CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOwogICAgIFB5X1JFVFVSTl9OT05FOwogI2Vsc2UKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKQEAgLTIyMTAsNiArMjQ2Miw1MSBAQAogI2VuZGlmCiB9CiAKKyNpZmRlZiBIQVZFX0FMUE4KK3N0YXRpYyBpbnQKK19zZWxlY3RBTFBOX2NiKFNTTCAqcywKKyAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjbGllbnRfcHJvdG9jb2xzLCB1bnNpZ25lZCBpbnQgY2xpZW50X3Byb3RvY29sc19sZW4sCisgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCit7CisgICAgUHlTU0xDb250ZXh0ICpjdHggPSAoUHlTU0xDb250ZXh0ICopYXJnczsKKyAgICByZXR1cm4gZG9fcHJvdG9jb2xfc2VsZWN0aW9uKDEsICh1bnNpZ25lZCBjaGFyICoqKW91dCwgb3V0bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5hbHBuX3Byb3RvY29scywgY3R4LT5hbHBuX3Byb3RvY29sc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfcHJvdG9jb2xzLCBjbGllbnRfcHJvdG9jb2xzX2xlbik7Cit9CisjZW5kaWYKKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5fc2V0X2FscG5fcHJvdG9jb2xzCisgICAgcHJvdG9zOiBQeV9idWZmZXIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnByb3RvcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzU5OWE3Zjc2NjUxYTliIGlucHV0PTliYmE5NjQ1OTVkNTE5YmVdKi8KK3sKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICBQeU1lbV9GUkVFKHNlbGYtPmFscG5fcHJvdG9jb2xzKTsKKyAgICBzZWxmLT5hbHBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MtPmxlbik7CisgICAgaWYgKCFzZWxmLT5hbHBuX3Byb3RvY29scykKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtY3B5KHNlbGYtPmFscG5fcHJvdG9jb2xzLCBwcm90b3MtPmJ1ZiwgcHJvdG9zLT5sZW4pOworICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzX2xlbiA9IHByb3Rvcy0+bGVuOworCisgICAgaWYgKFNTTF9DVFhfc2V0X2FscG5fcHJvdG9zKHNlbGYtPmN0eCwgc2VsZi0+YWxwbl9wcm90b2NvbHMsIHNlbGYtPmFscG5fcHJvdG9jb2xzX2xlbikpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIFNTTF9DVFhfc2V0X2FscG5fc2VsZWN0X2NiKHNlbGYtPmN0eCwgX3NlbGVjdEFMUE5fY2IsIHNlbGYpOworCisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAiVGhlIEFMUE4gZXh0ZW5zaW9uIHJlcXVpcmVzIE9wZW5TU0wgMS4wLjIgb3IgbGF0ZXIuIik7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdldF92ZXJpZnlfbW9kZShQeVNTTENvbnRleHQgKnNlbGYsIHZvaWQgKmMpCiB7CkBAIC0yMjUzLDcgKzI1NTAsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9PUEVOU1NMX1ZFUklGWV9QQVJBTQogc3RhdGljIFB5T2JqZWN0ICoKIGdldF92ZXJpZnlfZmxhZ3MoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQogewpAQCAtMjI5MSw3ICsyNTg3LDYgQEAKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKIGdldF9vcHRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKQEAgLTI0NDgsMTEgKzI3NDMsMTkgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluCisgICAgY2VydGZpbGU6IG9iamVjdAorICAgIGtleWZpbGU6IG9iamVjdCA9IE5VTEwKKyAgICBwYXNzd29yZDogb2JqZWN0ID0gTlVMTAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmNlcnRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ZmlsZSwgUHlPYmplY3QgKnBhc3N3b3JkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0ODBiYzFjMzgwZTIwOTUgaW5wdXQ9N2NmOWFjNjczY2JlZTZmY10qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmNlcnRmaWxlLCAqa2V5ZmlsZSA9IE5VTEwsICpwYXNzd29yZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNlcnRmaWxlX2J5dGVzID0gTlVMTCwgKmtleWZpbGVfYnl0ZXMgPSBOVUxMOwogICAgIHBlbV9wYXNzd29yZF9jYiAqb3JpZ19wYXNzd2RfY2IgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrOwogICAgIHZvaWQgKm9yaWdfcGFzc3dkX3VzZXJkYXRhID0gc2VsZi0+Y3R4LT5kZWZhdWx0X3Bhc3N3ZF9jYWxsYmFja191c2VyZGF0YTsKQEAgLTI0NjEsMTAgKzI3NjQsNiBAQAogCiAgICAgZXJybm8gPSAwOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKLSAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGtleWZpbGUgPT0gUHlfTm9uZSkKICAgICAgICAga2V5ZmlsZSA9IE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoY2VydGZpbGUsICZjZXJ0ZmlsZV9ieXRlcykpIHsKQEAgLTI2MzIsMjEgKzI5MzEsMjYgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucworICAgIGNhZmlsZTogb2JqZWN0ID0gTlVMTAorICAgIGNhcGF0aDogb2JqZWN0ID0gTlVMTAorICAgIGNhZGF0YTogb2JqZWN0ID0gTlVMTAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTRjN2U0MTIzMGNhNTUxIGlucHV0PTk5N2YxZmIzYTc4NGVmODhdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTCwgKmNhcGF0aCA9IE5VTEwsICpjYWRhdGEgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYWZpbGVfYnl0ZXMgPSBOVUxMLCAqY2FwYXRoX2J5dGVzID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpjYWZpbGVfYnVmID0gTlVMTCwgKmNhcGF0aF9idWYgPSBOVUxMOwogICAgIGludCByID0gMCwgb2sgPSAxOwogCiAgICAgZXJybm8gPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICJ8T09POmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIGt3bGlzdCwKLSAgICAgICAgJmNhZmlsZSwgJmNhcGF0aCwgJmNhZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKGNhZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICBjYWZpbGUgPSBOVUxMOwogICAgIGlmIChjYXBhdGggPT0gUHlfTm9uZSkKQEAgLTI3NDMsMTggKzMwNDcsMjQgQEAKICAgICB9CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQubG9hZF9kaF9wYXJhbXMKKyAgICBwYXRoIGFzIGZpbGVwYXRoOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2RoX3BhcmFtcyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpmaWxlcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYzhlNTdhMzhlMDU1YWYwIGlucHV0PWM4ODcxZjNjNzk2YWUxZDZdKi8KIHsKICAgICBGSUxFICpmOwogICAgIERIICpkaDsKIAogICAgIGYgPSBfUHlfZm9wZW5fb2JqKGZpbGVwYXRoLCAicmIiKTsKLSAgICBpZiAoZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBmaWxlcGF0aCk7CisgICAgaWYgKGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCiAgICAgZXJybm8gPSAwOwogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBkaCA9IFBFTV9yZWFkX0RIcGFyYW1zKGYsIE5VTEwsIE5VTEwsIE5VTEwpOwpAQCAtMjc3NiwzOCArMzA4Niw3NiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll93cmFwX3NvY2tldAorICAgIHNvY2s6IG9iamVjdChzdWJjbGFzc19vZj0iUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlIikKKyAgICBzZXJ2ZXJfc2lkZTogaW50CisgICAgc2VydmVyX2hvc3RuYW1lIGFzIGhvc3RuYW1lX29iajogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1jb250ZXh0X3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpzb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VydmVyX3NpZGUsIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Njk3M2U0YjYwOTk1ZTkzMyBpbnB1dD04Mzg1OWI5MTU2ZGRmYzYzXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrOwotICAgIGludCBzZXJ2ZXJfc2lkZSA9IDA7CiAgICAgY2hhciAqaG9zdG5hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmosICpyZXM7CisgICAgUHlPYmplY3QgKnJlczsKIAogICAgIC8qIHNlcnZlcl9ob3N0bmFtZSBpcyBlaXRoZXIgTm9uZSAob3IgYWJzZW50KSwgb3IgdG8gYmUgZW5jb2RlZAogICAgICAgIHVzaW5nIHRoZSBpZG5hIGVuY29kaW5nLiAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPIWl8TyE6X3dyYXBfc29ja2V0Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc29jaywgJnNlcnZlcl9zaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoUHlfTm9uZSksICZob3N0bmFtZV9vYmopKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPIWlldDpfd3JhcF9zb2NrZXQiLCBrd2xpc3QsCi0gICAgICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsCi0gICAgICAgICAgICAmc29jaywgJnNlcnZlcl9zaWRlLAotICAgICAgICAgICAgImlkbmEiLCAmaG9zdG5hbWUpKQorICAgIGlmIChob3N0bmFtZV9vYmogIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGhvc3RuYW1lX29iaiwgImV0IiwgImlkbmEiLCAmaG9zdG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmVzID0gKFB5T2JqZWN0ICopIG5ld1B5U1NMU29ja2V0KHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0bmFtZSk7CisgICAgcmVzID0gKFB5T2JqZWN0ICopIG5ld1B5U1NMU29ja2V0KHNlbGYsIChQeVNvY2tldFNvY2tPYmplY3QgKilzb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogICAgIGlmIChob3N0bmFtZSAhPSBOVUxMKQogICAgICAgICBQeU1lbV9GcmVlKGhvc3RuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll93cmFwX2JpbworICAgIGluY29taW5nOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9IiZQeVNTTE1lbW9yeUJJT19UeXBlIiwgdHlwZT0iUHlTU0xNZW1vcnlCSU8gKiIpCisgICAgb3V0Z29pbmc6IG9iamVjdChzdWJjbGFzc19vZj0iJlB5U1NMTWVtb3J5QklPX1R5cGUiLCB0eXBlPSJQeVNTTE1lbW9yeUJJTyAqIikKKyAgICBzZXJ2ZXJfc2lkZTogaW50CisgICAgc2VydmVyX2hvc3RuYW1lIGFzIGhvc3RuYW1lX29iajogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zZXNzaW9uX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZywgaW50IHNlcnZlcl9zaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmZTRiYTc1YWQ5NTk0MGQgaW5wdXQ9MTc3MjVlY2RhYzBiZjIyMF0qLworeworICAgIGNoYXIgKmhvc3RuYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgLyogc2VydmVyX2hvc3RuYW1lIGlzIGVpdGhlciBOb25lIChvciBhYnNlbnQpLCBvciB0byBiZSBlbmNvZGVkCisgICAgICAgdXNpbmcgdGhlIGlkbmEgZW5jb2RpbmcuICovCisgICAgaWYgKGhvc3RuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoaG9zdG5hbWVfb2JqLCAiZXQiLCAiaWRuYSIsICZob3N0bmFtZSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgTlVMTCwgc2VydmVyX3NpZGUsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZywgb3V0Z29pbmcpOworCisgICAgUHlNZW1fRnJlZShob3N0bmFtZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5zZXNzaW9uX3N0YXRzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGQ5NjQxMWM0Mjg5M2JmYiBpbnB1dD03ZTBhODFmYjExMTAyYzhiXSovCiB7CiAgICAgaW50IHI7CiAgICAgUHlPYmplY3QgKnZhbHVlLCAqc3RhdHMgPSBQeURpY3RfTmV3KCk7CkBAIC0yODQ1LDggKzMxOTMsMTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmVlNzRlNmUwOWRlYWFhIGlucHV0PTM1ZjM0MDgwMjE0NjNkNzRdKi8KIHsKICAgICBpZiAoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKHNlbGYtPmN0eCkpIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CkBAIC0yODU2LDggKzMyMDksMTYgQEAKIH0KIAogI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X2VjZGhfY3VydmUKKyAgICBuYW1lOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCitfc3NsX19TU0xDb250ZXh0X3NldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjMwMjJjMTk2ZTQwZDdkMiBpbnB1dD1jMmJhZmI2ZjZlMzQ3MjZiXSovCiB7CiAgICAgUHlPYmplY3QgKm5hbWVfYnl0ZXM7CiAgICAgaW50IG5pZDsKQEAgLTI5MTIsMTEgKzMyNzMsMjUgQEAKIAogICAgIHNzbCA9IFNTTF9nZXRfYXBwX2RhdGEocyk7CiAgICAgYXNzZXJ0KFB5U1NMU29ja2V0X0NoZWNrKHNzbCkpOwotICAgIHNzbF9zb2NrZXQgPSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNzbC0+U29ja2V0KTsKKworICAgIC8qIFRoZSBzZXJ2ZXJuYW1lIGNhbGxiYWNrIGV4cGVjdHMgYSBhcmd1bWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQKKyAgICAgKiBTU0wgY29ubmVjdGlvbiBhbmQgdGhhdCBoYXMgYSAuY29udGV4dCBhdHRyaWJ1dGUgdGhhdCBjYW4gYmUgY2hhbmdlZCB0bworICAgICAqIGlkZW50aWZ5IHRoZSByZXF1ZXN0ZWQgaG9zdG5hbWUuIFNpbmNlIHRoZSBvZmZpY2lhbCBBUEkgaXMgdGhlIFB5dGhvbgorICAgICAqIGxldmVsIEFQSSB3ZSB3YW50IHRvIHBhc3MgdGhlIGNhbGxiYWNrIGEgUHl0aG9uIGxldmVsIG9iamVjdCByYXRoZXIgdGhhbgorICAgICAqIGEgX3NzbC5TU0xTb2NrZXQgaW5zdGFuY2UuIElmIHRoZXJlJ3MgYW4gIm93bmVyIiAodHlwaWNhbGx5IGFuCisgICAgICogU1NMT2JqZWN0KSB0aGF0IHdpbGwgYmUgcGFzc2VkLiBPdGhlcndpc2UgaWYgdGhlcmUncyBhIHNvY2tldCB0aGVuIHRoYXQKKyAgICAgKiB3aWxsIGJlIHBhc3NlZC4gSWYgYm90aCBkbyBub3QgZXhpc3Qgb25seSB0aGVuIHRoZSBDLWxldmVsIG9iamVjdCBpcworICAgICAqIHBhc3NlZC4gKi8KKyAgICBpZiAoc3NsLT5vd25lcikKKyAgICAgICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5vd25lcik7CisgICAgZWxzZSBpZiAoc3NsLT5Tb2NrZXQpCisgICAgICAgIHNzbF9zb2NrZXQgPSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNzbC0+U29ja2V0KTsKKyAgICBlbHNlCisgICAgICAgIHNzbF9zb2NrZXQgPSAoUHlPYmplY3QgKikgc3NsOworCiAgICAgUHlfSU5DUkVGKHNzbF9zb2NrZXQpOwotICAgIGlmIChzc2xfc29ja2V0ID09IFB5X05vbmUpIHsKKyAgICBpZiAoc3NsX3NvY2tldCA9PSBQeV9Ob25lKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KIAogICAgIGlmIChzZXJ2ZXJuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzc2xfY3R4LT5zZXRfaG9zdG5hbWUsIHNzbF9zb2NrZXQsCkBAIC0yOTc3LDI1ICszMzUyLDIzIEBACiB9CiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKFB5U1NMX3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvYywKLSJzZXRfc2VydmVybmFtZV9jYWxsYmFjayhtZXRob2QpXG5cCi1cblwKLVRoaXMgc2V0cyBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5XG5cCi10aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBOb25lIHRoZW4gdGhlIGNhbGxiYWNrIGlzIGRpc2FibGVkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZFxuXAotd2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG5cCi1TZWUgUkZDIDYwNjYgZm9yIGRldGFpbHMgb2YgdGhlIFNOSSBleHRlbnNpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrCisgICAgbWV0aG9kIGFzIGNiOiBvYmplY3QKKyAgICAvCisKK1NldCBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5IHRoZSBTU0wvVExTIGNsaWVudCBpbiB0aGUgU05JIGV4dGVuc2lvbi4KKworSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkCit3aXRoIHRoZSBTU0xTb2NrZXQsIHRoZSBzZXJ2ZXIgbmFtZSBhcyBhIHN0cmluZywgYW5kIHRoZSBTU0xDb250ZXh0IG9iamVjdC4KK1NlZSBSRkMgNjA2NiBmb3IgZGV0YWlscyBvZiB0aGUgU05JIGV4dGVuc2lvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xDb250ZXh0X3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmNiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0MzlhMWIyZDVkM2I3ZWEgaW5wdXQ9YTJhODM2MjAxOTdkNjAyYl0qLwogewogI2lmIEhBVkVfU05JICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQotICAgIFB5T2JqZWN0ICpjYjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIsICZjYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQ0xFQVIoc2VsZi0+c2V0X2hvc3RuYW1lKTsKICAgICBpZiAoY2IgPT0gUHlfTm9uZSkgewogICAgICAgICBTU0xfQ1RYX3NldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFjayhzZWxmLT5jdHgsIE5VTEwpOwpAQCAtMzAyMiwxNyArMzM5NSwyMSBAQAogI2VuZGlmCiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9nZXRfc3RhdHNfZG9jLAotImNlcnRfc3RvcmVfc3RhdHMoKSAtPiB7J2NybCc6IGludCwgJ3g1MDlfY2EnOiBpbnQsICd4NTA5JzogaW50fVxuXAotXG5cCi1SZXR1cm5zIHF1YW50aXRpZXMgb2YgbG9hZGVkIFguNTA5IGNlcnRpZmljYXRlcy4gWC41MDkgY2VydGlmaWNhdGVzIHdpdGggYVxuXAotQ0EgZXh0ZW5zaW9uIGFuZCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzIGluc2lkZSB0aGUgY29udGV4dCdzIGNlcnRcblwKLXN0b3JlLlxuXAotTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcblwKLWJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5jZXJ0X3N0b3JlX3N0YXRzCisKK1JldHVybnMgcXVhbnRpdGllcyBvZiBsb2FkZWQgWC41MDkgY2VydGlmaWNhdGVzLgorCitYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhIENBIGV4dGVuc2lvbiBhbmQgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0cworaW5zaWRlIHRoZSBjb250ZXh0J3MgY2VydCBzdG9yZS4KKworTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmUKK2JlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2VydF9zdG9yZV9zdGF0cyhQeVNTTENvbnRleHQgKnNlbGYpCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWYzNTZmNGQ5Y2NhODc0ZCBpbnB1dD1lYjQwZGQwZjZkMGU0MGNmXSovCiB7CiAgICAgWDUwOV9TVE9SRSAqc3RvcmU7CiAgICAgWDUwOV9PQkpFQ1QgKm9iajsKQEAgLTMwNjUsMjcgKzM0NDIsMjYgQEAKICAgICAgICAgIng1MDlfY2EiLCBjYSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9nZXRfY2FfY2VydHNfZG9jLAotImdldF9jYV9jZXJ0cyhiaW5hcnlfZm9ybT1GYWxzZSkgLT4gbGlzdCBvZiBsb2FkZWQgY2VydGlmaWNhdGVcblwKLVxuXAotUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuIElmIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBIGNlcnRpZmljYXRlLlxuXAotTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcblwKLWJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5nZXRfY2FfY2VydHMKKyAgICBiaW5hcnlfZm9ybTogYm9vbCA9IEZhbHNlCisKK1JldHVybnMgYSBsaXN0IG9mIGRpY3RzIHdpdGggaW5mb3JtYXRpb24gb2YgbG9hZGVkIENBIGNlcnRzLgorCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBCitjZXJ0aWZpY2F0ZS4KKworTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmUKK2JlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDU4ZjE0OGYzN2UyOTM4IGlucHV0PTY4ODdiNWEwOWI3ZjkwNzZdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKICAgICBYNTA5X1NUT1JFICpzdG9yZTsKICAgICBQeU9iamVjdCAqY2kgPSBOVUxMLCAqcmxpc3QgPSBOVUxMOwogICAgIGludCBpOwotICAgIGludCBiaW5hcnlfbW9kZSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifHA6Z2V0X2NhX2NlcnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZiaW5hcnlfbW9kZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKChybGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTA2LDcgKzM0ODIsNyBAQAogICAgICAgICBpZiAoIVg1MDlfY2hlY2tfY2EoY2VydCkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChiaW5hcnlfbW9kZSkgeworICAgICAgICBpZiAoYmluYXJ5X2Zvcm0pIHsKICAgICAgICAgICAgIGNpID0gX2NlcnRpZmljYXRlX3RvX2RlcihjZXJ0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNpID0gX2RlY29kZV9jZXJ0aWZpY2F0ZShjZXJ0KTsKQEAgLTMxMzMsNDIgKzM1MDksMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X2NoZWNrX2hvc3RuYW1lLCBOVUxMfSwKICAgICB7Im9wdGlvbnMiLCAoZ2V0dGVyKSBnZXRfb3B0aW9ucywKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfb3B0aW9ucywgTlVMTH0sCi0jaWZkZWYgSEFWRV9PUEVOU1NMX1ZFUklGWV9QQVJBTQogICAgIHsidmVyaWZ5X2ZsYWdzIiwgKGdldHRlcikgZ2V0X3ZlcmlmeV9mbGFncywKICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpIHNldF92ZXJpZnlfZmxhZ3MsIE5VTEx9LAotI2VuZGlmCiAgICAgeyJ2ZXJpZnlfbW9kZSIsIChnZXR0ZXIpIGdldF92ZXJpZnlfbW9kZSwKICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X3ZlcmlmeV9tb2RlLCBOVUxMfSwKICAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgY29udGV4dF9tZXRob2RzW10gPSB7Ci0gICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pIGNvbnRleHRfd3JhcF9zb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pIHNldF9jaXBoZXJzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX3NldF9ucG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKSBfc2V0X25wbl9wcm90b2NvbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2NlcnRfY2hhaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7ImxvYWRfZGhfcGFyYW1zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2RoX3BhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbikgbG9hZF92ZXJpZnlfbG9jYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJzZXNzaW9uX3N0YXRzIiwgKFB5Q0Z1bmN0aW9uKSBzZXNzaW9uX3N0YXRzLAotICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7InNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbikgc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKLSAgICB7InNldF9lY2RoX2N1cnZlIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZWNkaF9jdXJ2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSNlbmRpZgotICAgIHsic2V0X3NlcnZlcm5hbWVfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pIHNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIFB5U1NMX3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvY30sCi0gICAgeyJjZXJ0X3N0b3JlX3N0YXRzIiwgKFB5Q0Z1bmN0aW9uKSBjZXJ0X3N0b3JlX3N0YXRzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgUHlTU0xfZ2V0X3N0YXRzX2RvY30sCi0gICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pIGdldF9jYV9jZXJ0cywKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgUHlTU0xfZ2V0X2NhX2NlcnRzX2RvY30sCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfQ0lQSEVSU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19TRVRfQUxQTl9QUk9UT0NPTFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX05QTl9QUk9UT0NPTFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX0NFUlRfQ0hBSU5fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX0RIX1BBUkFNU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFU1NJT05fU1RBVFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfREVGQVVMVF9WRVJJRllfUEFUSFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9TRVJWRVJOQU1FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfQ0VSVF9TVE9SRV9TVEFUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zMjEwLDIzICszNTcyLDI1MiBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KLSAgICBjb250ZXh0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLworICAgIF9zc2xfX1NTTENvbnRleHQsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCiB9OwogCiAKKy8qCisgKiBNZW1vcnlCSU8gb2JqZWN0cworICovCiAKLSNpZmRlZiBIQVZFX09QRU5TU0xfUkFORAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc3NsLk1lbW9yeUJJTy5fX25ld19fCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4MjBhNThkYjc4MzMwYWMgaW5wdXQ9MjZkMjJlNDkwOWVjYjFiNV0qLworeworICAgIEJJTyAqYmlvOworICAgIFB5U1NMTWVtb3J5QklPICpzZWxmOworCisgICAgYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisgICAgaWYgKGJpbyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhbGxvY2F0ZSBCSU8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIC8qIFNpbmNlIG91ciBCSU8gaXMgbm9uLWJsb2NraW5nIGFuIGVtcHR5IHJlYWQoKSBkb2VzIG5vdCBpbmRpY2F0ZSBFT0YsCisgICAgICoganVzdCB0aGF0IG5vIGRhdGEgaXMgY3VycmVudGx5IGF2YWlsYWJsZS4gVGhlIFNTTCByb3V0aW5lcyBzaG91bGQgcmV0cnkKKyAgICAgKiB0aGUgcmVhZCwgd2hpY2ggd2UgY2FuIGFjaGlldmUgYnkgY2FsbGluZyBCSU9fc2V0X3JldHJ5X3JlYWQoKS4gKi8KKyAgICBCSU9fc2V0X3JldHJ5X3JlYWQoYmlvKTsKKyAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGJpbywgLTEpOworCisgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKKyAgICBzZWxmID0gKFB5U1NMTWVtb3J5QklPICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgQklPX2ZyZWUoYmlvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmJpbyA9IGJpbzsKKyAgICBzZWxmLT5lb2Zfd3JpdHRlbiA9IDA7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCittZW1vcnlfYmlvX2RlYWxsb2MoUHlTU0xNZW1vcnlCSU8gKnNlbGYpCit7CisgICAgQklPX2ZyZWUoc2VsZi0+YmlvKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Jpb19nZXRfcGVuZGluZyhQeVNTTE1lbW9yeUJJTyAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9tZW1vcnlfYmlvX3BlbmRpbmdfZG9jLAorIlRoZSBudW1iZXIgb2YgYnl0ZXMgcGVuZGluZyBpbiB0aGUgbWVtb3J5IEJJTy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9iaW9fZ2V0X2VvZihQeVNTTE1lbW9yeUJJTyAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChCSU9fY3RybF9wZW5kaW5nKHNlbGYtPmJpbykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGYtPmVvZl93cml0dGVuKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX21lbW9yeV9iaW9fZW9mX2RvYywKKyJXaGV0aGVyIHRoZSBtZW1vcnkgQklPIGlzIGF0IEVPRi4iKTsKKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ucmVhZAorICAgIHNpemUgYXMgbGVuOiBpbnQgPSAtMQorICAgIC8KKworUmVhZCB1cCB0byBzaXplIGJ5dGVzIGZyb20gdGhlIG1lbW9yeSBCSU8uCisKK0lmIHNpemUgaXMgbm90IHNwZWNpZmllZCwgcmVhZCB0aGUgZW50aXJlIGJ1ZmZlci4KK0lmIHRoZSByZXR1cm4gdmFsdWUgaXMgYW4gZW1wdHkgYnl0ZXMgaW5zdGFuY2UsIHRoaXMgbWVhbnMgZWl0aGVyCitFT0Ygb3IgdGhhdCBubyBkYXRhIGlzIGF2YWlsYWJsZS4gVXNlIHRoZSAiZW9mIiBwcm9wZXJ0eSB0bworZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fcmVhZF9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmLCBpbnQgbGVuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NTdhYTFlNzljZDAxYjMgaW5wdXQ9NTc0ZDdiZTA2YTkwMjM2Nl0qLworeworICAgIGludCBhdmFpbCwgbmJ5dGVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhdmFpbCA9IEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKTsKKyAgICBpZiAoKGxlbiA8IDApIHx8IChsZW4gPiBhdmFpbCkpCisgICAgICAgIGxlbiA9IGF2YWlsOworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOworICAgIGlmICgocmVzdWx0ID09IE5VTEwpIHx8IChsZW4gPT0gMCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBuYnl0ZXMgPSBCSU9fcmVhZChzZWxmLT5iaW8sIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIGxlbik7CisgICAgLyogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIGFueSBzaG9ydCByZWFkcyBidXQgY2hlY2sgYW55d2F5LiAqLworICAgIGlmICgobmJ5dGVzIDwgbGVuKSAmJiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGxlbikgPCAwKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ud3JpdGUKKyAgICBiOiBQeV9idWZmZXIKKyAgICAvCisKK1dyaXRlcyB0aGUgYnl0ZXMgYiBpbnRvIHRoZSBtZW1vcnkgQklPLgorCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNTZlYzU5MTEwZDc1OTM1IGlucHV0PWU0NTc1N2IzZTE3YzQ4MDhdKi8KK3sKKyAgICBpbnQgbmJ5dGVzOworCisgICAgaWYgKGItPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGxvbmdlciB0aGFuICVkIGJ5dGVzIiwgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZWxmLT5lb2Zfd3JpdHRlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgd3JpdGUoKSBhZnRlciB3cml0ZV9lb2YoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuYnl0ZXMgPSBCSU9fd3JpdGUoc2VsZi0+YmlvLCBiLT5idWYsIGItPmxlbik7CisgICAgaWYgKG5ieXRlcyA8IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobmJ5dGVzKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5NZW1vcnlCSU8ud3JpdGVfZW9mCisKK1dyaXRlIGFuIEVPRiBtYXJrZXIgdG8gdGhlIG1lbW9yeSBCSU8uCisKK1doZW4gYWxsIGRhdGEgaGFzIGJlZW4gcmVhZCwgdGhlICJlb2YiIHByb3BlcnR5IHdpbGwgYmUgVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0MTA2Mjc2Y2NkMWVkMzQgaW5wdXQ9NTZhOTQ1ZjFkMjllOGJkNl0qLworeworICAgIHNlbGYtPmVvZl93cml0dGVuID0gMTsKKyAgICAvKiBBZnRlciBhbiBFT0YgaXMgd3JpdHRlbiwgYSB6ZXJvIHJldHVybiBmcm9tIHJlYWQoKSBzaG91bGQgYmUgYSByZWFsIEVPRgorICAgICAqIGkuZS4gaXQgc2hvdWxkIG5vdCBiZSByZXRyaWVkLiBDbGVhciB0aGUgU0hPVUxEX1JFVFJZIGZsYWcuICovCisgICAgQklPX2NsZWFyX3JldHJ5X2ZsYWdzKHNlbGYtPmJpbyk7CisgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihzZWxmLT5iaW8sIDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBtZW1vcnlfYmlvX2dldHNldGxpc3RbXSA9IHsKKyAgICB7InBlbmRpbmciLCAoZ2V0dGVyKSBtZW1vcnlfYmlvX2dldF9wZW5kaW5nLCBOVUxMLAorICAgICAgICAgICAgICAgIFB5U1NMX21lbW9yeV9iaW9fcGVuZGluZ19kb2N9LAorICAgIHsiZW9mIiwgKGdldHRlcikgbWVtb3J5X2Jpb19nZXRfZW9mLCBOVUxMLAorICAgICAgICAgICAgUHlTU0xfbWVtb3J5X2Jpb19lb2ZfZG9jfSwKKyAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWVtb3J5X2Jpb19tZXRob2RzW10gPSB7CisgICAgX1NTTF9NRU1PUllCSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfU1NMX01FTU9SWUJJT19XUklURV9NRVRIT0RERUYKKyAgICBfU1NMX01FTU9SWUJJT19XUklURV9FT0ZfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTE1lbW9yeUJJT19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc3NsLk1lbW9yeUJJTyIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKFB5U1NMTWVtb3J5QklPKSwgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpbWVtb3J5X2Jpb19kZWFsbG9jLCAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLworICAgIG1lbW9yeV9iaW9fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLworICAgIG1lbW9yeV9iaW9fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KKyAgICBfc3NsX01lbW9yeUJJTywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLworfTsKKwogCiAvKiBoZWxwZXIgcm91dGluZXMgZm9yIHNlZWRpbmcgdGhlIFNTTCBQUk5HICovCi1zdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9hZGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgd3JpdHRlbjsKLSAgICBkb3VibGUgZW50cm9weTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9hZGQKKyAgICBzdHJpbmcgYXMgdmlldzogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVudHJvcHk6IGRvdWJsZQorICAgIC8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyNkOlJBTkRfYWRkIiwgJmJ1ZiwgJmxlbiwgJmVudHJvcHkpKQotICAgICAgICByZXR1cm4gTlVMTDsKK01peCBzdHJpbmcgaW50byB0aGUgT3BlblNTTCBQUk5HIHN0YXRlLgorCitlbnRyb3B5IChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbgorc3RyaW5nLiAgU2VlIFJGQyAxNzUwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqdmlldywgZG91YmxlIGVudHJvcHkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY4ZDVjOGNjZTMyODk1OCBpbnB1dD01ODBjODVlNmEzYTRmZTI5XSovCit7CisgICAgY29uc3QgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgbGVuLCB3cml0dGVuOworCisgICAgYnVmID0gKGNvbnN0IGNoYXIgKil2aWV3LT5idWY7CisgICAgbGVuID0gdmlldy0+bGVuOwogICAgIGRvIHsKICAgICAgICAgd3JpdHRlbiA9IFB5X01JTihsZW4sIElOVF9NQVgpOwogICAgICAgICBSQU5EX2FkZChidWYsIChpbnQpd3JpdHRlbiwgZW50cm9weSk7CkBAIC0zMjM3LDEyICszODI4LDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYWRkX2RvYywKLSJSQU5EX2FkZChzdHJpbmcsIGVudHJvcHkpXG5cCi1cblwKLU1peCBzdHJpbmcgaW50byB0aGUgT3BlblNTTCBQUk5HIHN0YXRlLiAgZW50cm9weSAoYSBmbG9hdCkgaXMgYSBsb3dlclxuXAotYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluIHN0cmluZy4gIFNlZSBSRkMgMTc1MC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1JBTkQoaW50IGxlbiwgaW50IHBzZXVkbykKIHsKQEAgLTMyODIsNjAgKzM4NjcsNzIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2J5dGVzCisgICAgbjogaW50CisgICAgLworCitHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDg3NDFiZGMxZDQzNWYzIGlucHV0PTY3OGRkZjI4NzJkZmViZmNdKi8KIHsKLSAgICBpbnQgbGVuOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX2J5dGVzIiwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMCk7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobiwgMCk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX2J5dGVzX2RvYywKLSJSQU5EX2J5dGVzKG4pIC0+IGJ5dGVzXG5cCi1cblwKLUdlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfcHNldWRvX2J5dGVzCisgICAgbjogaW50CisgICAgLworCitHZW5lcmF0ZSBuIHBzZXVkby1yYW5kb20gYnl0ZXMuCisKK1JldHVybiBhIHBhaXIgKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKS4gIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZQoraWYgdGhlIGJ5dGVzIGdlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRkNjczODEzMTA3ZjM4NzUgaW5wdXQ9NTgzMTJiZDUzZjliYmRkMF0qLwogewotICAgIGludCBsZW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMSk7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobiwgMSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2MsCi0iUkFORF9wc2V1ZG9fYnl0ZXMobikgLT4gKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKVxuXAotXG5cCi1HZW5lcmF0ZSBuIHBzZXVkby1yYW5kb20gYnl0ZXMuIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXNcCi1nZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9zdGF0dXMKKworUmV0dXJucyAxIGlmIHRoZSBPcGVuU1NMIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgYW5kIDAgaWYgbm90LgorCitJdCBpcyBuZWNlc3NhcnkgdG8gc2VlZCB0aGUgUFJORyB3aXRoIFJBTkRfYWRkKCkgb24gc29tZSBwbGF0Zm9ybXMgYmVmb3JlCit1c2luZyB0aGUgc3NsKCkgZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKK19zc2xfUkFORF9zdGF0dXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmN2VmNTdiYzdkZDFkMWMgaW5wdXQ9OGE3NzRiMDJkMWRjODFmM10qLwogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUkFORF9zdGF0dXMoKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX3N0YXR1c19kb2MsCi0iUkFORF9zdGF0dXMoKSAtPiAwIG9yIDFcblwKLVxuXAotUmV0dXJucyAxIGlmIHRoZSBPcGVuU1NMIFBSTkcgaGFzIGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgYW5kIDAgaWYgbm90LlxuXAotSXQgaXMgbmVjZXNzYXJ5IHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBSQU5EX2FkZCgpIG9uIHNvbWUgcGxhdGZvcm1zIGJlZm9yZVxuXAotdXNpbmcgdGhlIHNzbCgpIGZ1bmN0aW9uLiIpOwotCiAjaWZkZWYgSEFWRV9SQU5EX0VHRAorLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2VnZAorICAgIHBhdGg6IG9iamVjdChjb252ZXJ0ZXI9IlB5VW5pY29kZV9GU0NvbnZlcnRlciIpCisgICAgLworCitRdWVyaWVzIHRoZSBlbnRyb3B5IGdhdGhlciBkYWVtb24gKEVHRCkgb24gdGhlIHNvY2tldCBuYW1lZCBieSAncGF0aCcuCisKK1JldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBSYWlzZXMgU1NMRXJyb3IgaWYgY29ubmVjdGlvbiB0byBFR0QKK2ZhaWxzIG9yIGlmIGl0IGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGRhdGEgdG8gc2VlZCBQUk5HLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfUkFORF9lZ2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9SQU5EX2VnZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNzI4ZTUwMWUyODU0MWIgaW5wdXQ9MWFlYjdlYjk0ODMxMjE5NV0qLwogewotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIGludCBieXRlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6UkFORF9lZ2QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBieXRlcyA9IFJBTkRfZWdkKFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpOworICAgIGludCBieXRlcyA9IFJBTkRfZWdkKFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpOwogICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICBpZiAoYnl0ZXMgPT0gLTEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCkBAIC0zMzQ1LDI3ICszOTQyLDIxIEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnl0ZXMpOwogfQotCi1QeURvY19TVFJWQVIoUHlTU0xfUkFORF9lZ2RfZG9jLAotIlJBTkRfZWdkKHBhdGgpIC0+IGJ5dGVzXG5cCi1cblwKLVF1ZXJpZXMgdGhlIGVudHJvcHkgZ2F0aGVyIGRhZW1vbiAoRUdEKSBvbiB0aGUgc29ja2V0IG5hbWVkIGJ5ICdwYXRoJy5cblwKLVJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBSYWlzZXMgU1NMRXJyb3IgaWYgY29ubmVjdGlvbiB0byBFR0RcblwKLWZhaWxzIG9yIGlmIGl0IGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGRhdGEgdG8gc2VlZCBQUk5HLiIpOwogI2VuZGlmIC8qIEhBVkVfUkFORF9FR0QgKi8KIAotI2VuZGlmIC8qIEhBVkVfT1BFTlNTTF9SQU5EICovCiAKIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19kb2MsCi0iZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgLT4gdHVwbGVcblwKLVxuXAotUmV0dXJuIHNlYXJjaCBwYXRocyBhbmQgZW52aXJvbm1lbnQgdmFycyB0aGF0IGFyZSB1c2VkIGJ5IFNTTENvbnRleHQnc1xuXAotc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgdG8gbG9hZCBkZWZhdWx0IENBcy4gVGhlIHZhbHVlcyBhcmVcblwKLSdjZXJ0X2ZpbGVfZW52JywgJ2NlcnRfZmlsZScsICdjZXJ0X2Rpcl9lbnYnLCAnY2VydF9kaXInLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMKKworUmV0dXJuIHNlYXJjaCBwYXRocyBhbmQgZW52aXJvbm1lbnQgdmFycyB0aGF0IGFyZSB1c2VkIGJ5IFNTTENvbnRleHQncyBzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSB0byBsb2FkIGRlZmF1bHQgQ0FzLgorCitUaGUgdmFsdWVzIGFyZSAnY2VydF9maWxlX2VudicsICdjZXJ0X2ZpbGUnLCAnY2VydF9kaXJfZW52JywgJ2NlcnRfZGlyJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU9iamVjdCAqc2VsZikKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YTI4MjBjZTdlMzMwNGQzIGlucHV0PTUyMTBjOTUzZDk4YzNlYjVdKi8KIHsKICAgICBQeU9iamVjdCAqb2ZpbGVfZW52ID0gTlVMTDsKICAgICBQeU9iamVjdCAqb2ZpbGUgPSBOVUxMOwpAQCAtMzQyNCwyNiArNDAxNSwyNCBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX3R4dDJvYmpfZG9jLAotInR4dDJvYmoodHh0LCBuYW1lPUZhbHNlKSAtPiAobmlkLCBzaG9ydG5hbWUsIGxvbmduYW1lLCBvaWQpXG5cCi1cblwKLUxvb2t1cCBOSUQsIHNob3J0IG5hbWUsIGxvbmcgbmFtZSBhbmQgT0lEIG9mIGFuIEFTTjFfT0JKRUNULiBCeSBkZWZhdWx0XG5cCi1vYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmQgbG9uZyBuYW1lIGFyZSBhbHNvXG5cCi1tYXRjaGVkLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC50eHQyb2JqCisgICAgdHh0OiBzdHIKKyAgICBuYW1lOiBib29sID0gRmFsc2UKIAotc3RhdGljIFB5T2JqZWN0KgotUHlTU0xfdHh0Mm9iaihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuCisKK0J5IGRlZmF1bHQgb2JqZWN0cyBhcmUgbG9va2VkIHVwIGJ5IE9JRC4gV2l0aCBuYW1lPVRydWUgc2hvcnQgYW5kCitsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmFlMmMzMDUzMWI4ODA5ZiBpbnB1dD0xYzFlN2QwYWE3YzQ4NjAyXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqdHh0OwotICAgIGludCBuYW1lID0gMDsKICAgICBBU04xX09CSkVDVCAqb2JqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInN8cDp0eHQyb2JqIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ0eHQsICZuYW1lKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgb2JqID0gT0JKX3R4dDJvYmoodHh0LCBuYW1lID8gMCA6IDEpOwogICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInVua25vd24gb2JqZWN0ICclLjEwMHMnIiwgdHh0KTsKQEAgLTM0NTQsMjEgKzQwNDMsMjEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfbmlkMm9ial9kb2MsCi0ibmlkMm9iaihuaWQpIC0+IChuaWQsIHNob3J0bmFtZSwgbG9uZ25hbWUsIG9pZClcblwKLVxuXAotTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QgYnkgTklELiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5uaWQyb2JqCisgICAgbmlkOiBpbnQKKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCoKLVB5U1NMX25pZDJvYmooUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QgYnkgTklELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5pZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZGIxZGY4OWU0NGJhZGI4IGlucHV0PTUxNzg3YTNiZWU3ZDhmOThdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmlkOwogICAgIEFTTjFfT0JKRUNUICpvYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6bmlkMm9iaiIsICZuaWQpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAobmlkIDwgTklEX3VuZGVmKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiTklEIG11c3QgYmUgcG9zaXRpdmUuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzU2OCwzMCArNDE1NywyOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9lbnVtX2NlcnRpZmljYXRlc19kb2MsCi0iZW51bV9jZXJ0aWZpY2F0ZXMoc3RvcmVfbmFtZSkgLT4gW11cblwKLVxuXAotUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4gc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mXG5cCi0nQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gVGhlIHN5c3RlbSBtYXkgcHJvdmlkZSBtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby5cblwKLVRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsIGVuY29kaW5nX3R5cGUsIHRydXN0KSB0dXBsZXMuIFRoZVxuXAotZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yXG5cCi1QS0NTXzdfQVNOX0VOQ09ESU5HLiBUaGUgdHJ1c3Qgc2V0dGluZyBpcyBlaXRoZXIgYSBzZXQgb2YgT0lEcyBvciB0aGVcblwKLWJvb2xlYW4gVHJ1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuZW51bV9jZXJ0aWZpY2F0ZXMKKyAgICBzdG9yZV9uYW1lOiBzdHIKKworUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4KKworc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mICdDQScsICdST09UJyBvciAnTVknLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZQorbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLAorZW5jb2RpbmdfdHlwZSwgdHJ1c3QpIHR1cGxlcy4gIFRoZSBlbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkCit3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlcgorYSBzZXQgb2YgT0lEcyBvciB0aGUgYm9vbGVhbiBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNjNGViYzEwYjhhZGFjZmMgaW5wdXQ9OTE1ZjYwZDcwNDYxZWE0ZV0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07Ci0gICAgY2hhciAqc3RvcmVfbmFtZTsKICAgICBIQ0VSVFNUT1JFIGhTdG9yZSA9IE5VTEw7CiAgICAgUENDRVJUX0NPTlRFWFQgcENlcnRDdHggPSBOVUxMOwogICAgIFB5T2JqZWN0ICprZXl1c2FnZSA9IE5VTEwsICpjZXJ0ID0gTlVMTCwgKmVuYyA9IE5VTEwsICp0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInM6ZW51bV9jZXJ0aWZpY2F0ZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN0b3JlX25hbWUpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM2NTcsMjkgKzQyNDQsMjcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfZW51bV9jcmxzX2RvYywKLSJlbnVtX2NybHMoc3RvcmVfbmFtZSkgLT4gW11cblwKLVxuXAotUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3MnIGNlcnQgc3RvcmUuIHN0b3JlX25hbWUgbWF5IGJlIG9uZSBvZlxuXAotJ0NBJywgJ1JPT1QnIG9yICdNWScuIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGUgbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uXG5cCi1UaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLCBlbmNvZGluZ190eXBlKSB0dXBsZXMuIFRoZVxuXAotZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yXG5cCi1QS0NTXzdfQVNOX0VOQ09ESU5HLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5lbnVtX2NybHMKKyAgICBzdG9yZV9uYW1lOiBzdHIKKworUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3MnIGNlcnQgc3RvcmUuCisKK3N0b3JlX25hbWUgbWF5IGJlIG9uZSBvZiAnQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGUKK21vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcywKK2VuY29kaW5nX3R5cGUpIHR1cGxlcy4gIFRoZSBlbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGgKK1g1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9lbnVtX2NybHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfZW51bV9jcmxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NjM0OTBhMmFhMWM1MGQ1IGlucHV0PWExZjFkNzYyOWYxYzVkM2RdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OwotICAgIGNoYXIgKnN0b3JlX25hbWU7CiAgICAgSENFUlRTVE9SRSBoU3RvcmUgPSBOVUxMOwogICAgIFBDQ1JMX0NPTlRFWFQgcENybEN0eCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNybCA9IE5VTEwsICplbmMgPSBOVUxMLCAqdHVwID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJzOmVudW1fY3JscyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3RvcmVfbmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzczNywzNiArNDMyMiwxOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqLwotCiBzdGF0aWMgUHlNZXRob2REZWYgUHlTU0xfbWV0aG9kc1tdID0gewotICAgIHsiX3Rlc3RfZGVjb2RlX2NlcnQiLCAgICAgICBQeVNTTF90ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSwKLSAgICAgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBIQVZFX09QRU5TU0xfUkFORAotICAgIHsiUkFORF9hZGQiLCAgICAgICAgICAgIFB5U1NMX1JBTkRfYWRkLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1JBTkRfYWRkX2RvY30sCi0gICAgeyJSQU5EX2J5dGVzIiwgICAgICAgICAgUHlTU0xfUkFORF9ieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX2J5dGVzX2RvY30sCi0gICAgeyJSQU5EX3BzZXVkb19ieXRlcyIsICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jfSwKLSNpZmRlZiBIQVZFX1JBTkRfRUdECi0gICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKLSNlbmRpZgotICAgIHsiUkFORF9zdGF0dXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeVNTTF9SQU5EX3N0YXR1cywgTUVUSF9OT0FSR1MsCi0gICAgIFB5U1NMX1JBTkRfc3RhdHVzX2RvY30sCi0jZW5kaWYKLSAgICB7ImdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbilQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCi0gICAgIE1FVEhfTk9BUkdTLCBQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfZG9jfSwKLSNpZmRlZiBfTVNDX1ZFUgotICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX2VudW1fY2VydGlmaWNhdGVzX2RvY30sCi0gICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pUHlTU0xfZW51bV9jcmxzLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF9lbnVtX2NybHNfZG9jfSwKLSNlbmRpZgotICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilQeVNTTF90eHQyb2JqLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF90eHQyb2JqX2RvY30sCi0gICAgeyJuaWQyb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX25pZDJvYmosCi0gICAgIE1FVEhfVkFSQVJHUywgUHlTU0xfbmlkMm9ial9kb2N9LAorICAgIF9TU0xfX1RFU1RfREVDT0RFX0NFUlRfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX0FERF9NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfQllURVNfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX1BTRVVET19CWVRFU19NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfRUdEX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9TVEFUVVNfTUVUSE9EREVGCisgICAgX1NTTF9HRVRfREVGQVVMVF9WRVJJRllfUEFUSFNfTUVUSE9EREVGCisgICAgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyAgICBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyAgICBfU1NMX1RYVDJPQkpfTUVUSE9EREVGCisgICAgX1NTTF9OSUQyT0JKX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTM5MDYsNiArNDQ3Myw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMU29ja2V0X1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xNZW1vcnlCSU9fVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC0zOTY5LDYgKzQ1MzgsOSBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTFNvY2tldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTFNvY2tldF9UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1pFUk9fUkVUVVJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfWkVST19SRVRVUk4pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfV0FOVF9SRUFEIiwKQEAgLTQxMDksMTEgKzQ2ODEsNyBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19TTkkiLCByKTsKIAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAogICAgIHIgPSBQeV9UcnVlOwotI2Vsc2UKLSAgICByID0gUHlfRmFsc2U7Ci0jZW5kaWYKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfVExTX1VOSVFVRSIsIHIpOwogCkBAIC00MTMzLDYgKzQ3MDEsMTQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CiAKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX0FMUE4iLCByKTsKKwogICAgIC8qIE1hcHBpbmdzIGZvciBlcnJvciBjb2RlcyAqLwogICAgIGVycl9jb2Rlc190b19uYW1lcyA9IFB5RGljdF9OZXcoKTsKICAgICBlcnJfbmFtZXNfdG9fY29kZXMgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdGF0LmMgYi9Nb2R1bGVzL19zdGF0LmMKaW5kZXggYTMwMWZhOC4uZjZjYjMwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RhdC5jCisrKyBiL01vZHVsZXMvX3N0YXQuYwpAQCAtMjcsOSArMjcsMjEgQEAKICNlbmRpZiAvKiBIQVZFX1NZU19TVEFUX0ggKi8KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG1vZGVfdDsKKworLyogRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSBhbmQgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQQorICAgYXJlIG5vdCBwcmVzZW50IGluIFZDMjAxMCwgc28gZGVmaW5lIHRoZW0gbWFudWFsbHkgKi8KKyNpZm5kZWYgRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTQorIyAgZGVmaW5lIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0gMHg4MDAwCiAjZW5kaWYKIAorI2lmbmRlZiBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBCisjICBkZWZpbmUgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSAweDIwMDAwCisjZW5kaWYKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogLyogRnJvbSBQeXRob24ncyBzdGF0LnB5ICovCiAjaWZuZGVmIFNfSU1PREUKICMgIGRlZmluZSBTX0lNT0RFIDA3Nzc3CkBAIC00NzMsNiArNDg1LDEwIEBACiBTVF9BVElNRVxuXAogU1RfTVRJTUVcblwKIFNUX0NUSU1FXG5cCitcbiIKKworIkZJTEVfQVRUUklCVVRFXyo6IFdpbmRvd3MgZmlsZSBhdHRyaWJ1dGUgY29uc3RhbnRzXG5cCisgICAgICAgICAgICAgICAgICAgKG9ubHkgcHJlc2VudCBvbiBXaW5kb3dzKVxuXAogIik7CiAKIApAQCAtNTU1LDYgKzU3MSwyNiBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfTVRJTUUiLCA4KSkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9DVElNRSIsIDkpKSByZXR1cm4gTlVMTDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfQVJDSElWRSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0RFVklDRSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfRU5DUllQVEVEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0hJRERFTikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PUk1BTCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9OT1RfQ09OVEVOVF9JTkRFWEVEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfT0ZGTElORSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1NQQVJTRV9GSUxFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1NZU1RFTSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfVklSVFVBTCkpIHJldHVybiBOVUxMOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBhZDk5NTllLi4wNjhjNWQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtODUsOCArODUsNiBAQAogI2RlZmluZSBCT09MX0FMSUdOIDAKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0lGWSh4KSAgICAjeAotCiAjaWZkZWYgX19wb3dlcmMKICNwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAogI2VuZGlmCkBAIC01NDYsOCArNTQ0LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICh4IDwgU0hSVF9NSU4gfHwgeCA+IFNIUlRfTUFYKXsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNob3J0IGZvcm1hdCByZXF1aXJlcyAiIFNUUklOR0lGWShTSFJUX01JTikKLSAgICAgICAgICAgICAgICAgICAgICAgICIgPD0gbnVtYmVyIDw9ICIgU1RSSU5HSUZZKFNIUlRfTUFYKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnQgZm9ybWF0IHJlcXVpcmVzICIgUHlfU1RSSU5HSUZZKFNIUlRfTUlOKQorICAgICAgICAgICAgICAgICAgICAgICAgIiA8PSBudW1iZXIgPD0gIiBQeV9TVFJJTkdJRlkoU0hSVF9NQVgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB5ID0gKHNob3J0KXg7CkBAIC01NjQsNyArNTYyLDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICh4IDwgMCB8fCB4ID4gVVNIUlRfTUFYKXsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInVzaG9ydCBmb3JtYXQgcmVxdWlyZXMgMCA8PSBudW1iZXIgPD0gIiBTVFJJTkdJRlkoVVNIUlRfTUFYKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IGZvcm1hdCByZXF1aXJlcyAwIDw9IG51bWJlciA8PSAiCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9TVFJJTkdJRlkoVVNIUlRfTUFYKSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgeSA9ICh1bnNpZ25lZCBzaG9ydCl4OwpAQCAtMTI2NCw3ICsxMjYzLDggQEAKICAgICBjb25zdCBjaGFyICpzOwogICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICBjaGFyIGM7Ci0gICAgUHlfc3NpemVfdCBzaXplLCBsZW4sIG5jb2RlcywgbnVtLCBpdGVtc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbnVtLCBpdGVtc2l6ZTsKKyAgICBzaXplX3QgbmNvZGVzOwogCiAgICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+c19mb3JtYXQpOwogCkBAIC0xMzIwLDcgKzEzMjAsNyBAQAogICAgIH0KIAogICAgIC8qIGNoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIGlmICgobmNvZGVzICsgMSkgPiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoZm9ybWF0Y29kZSkpKSB7CisgICAgaWYgKChuY29kZXMgKyAxKSA+ICgoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGZvcm1hdGNvZGUpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCmluZGV4IDE3NmRmN2MuLjQzZGI4YTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYworKysgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKQEAgLTE5MCw3ICsxOTAsNyBAQAogICAgICAgICBlbHQtPnByZXYtPm5leHQgPSBlbHQtPm5leHQ7CiAgICAgZWxzZQogICAgICAgICBuZC0+aGVhZCA9IGVsdC0+bmV4dDsKLSAgICAKKwogICAgIGlmIChlbHQtPm5leHQpCiAgICAgICAgIGVsdC0+bmV4dC0+cHJldiA9IGVsdC0+cHJldjsKIApAQCAtNzY3LDcgKzc2Nyw3IEBACiAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgYmFzZS5yZWFkb25seSAgIHwgICAgIDAgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gIHwgYmFzZS5mb3JtYXQgICAgIHwgICAgTlVMTCAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8ICAKKyAgfCBiYXNlLmZvcm1hdCAgICAgfCAgICBOVUxMICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBiYXNlLm5kaW0gICAgICAgfCAgICAgMSAgICAgfCAgICAgIDEgICAgICB8ICAgICAgIE9LICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTE1MTAsNiArMTUxMCwxOSBAQAogICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CiAgICAgfQogCisgICAgLyogQXNjZXJ0YWluIHRoYXQgdGhlIG5ldyBidWZmZXIgaGFzIHRoZSBzYW1lIGNvbnRpZ3VpdHkgYXMgdGhlIGV4cG9ydGVyICovCisgICAgaWYgKE5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpICE9IFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnQycpIHx8CisgICAgICAgIC8qIHNraXAgY2FzdCB0byAxLWQgKi8KKyAgICAgICAgKHZpZXctPmZvcm1hdCAhPSBOVUxMICYmIHZpZXctPnNoYXBlICE9IE5VTEwgJiYKKyAgICAgICAgIE5EX0ZPUlRSQU5fQ09OVElHVU9VUyhiYXNlZmxhZ3MpICE9IFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnRicpKSB8fAorICAgICAgICAvKiBjYXN0IHRvIDEtZCAqLworICAgICAgICAodmlldy0+Zm9ybWF0ID09IE5VTEwgJiYgdmlldy0+c2hhcGUgPT0gTlVMTCAmJgorICAgICAgICAgIVB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnRicpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheTogY29udGlndWl0eSBtaXNtYXRjaCBpbiBnZXRidWYoKSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CiAgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CiAgICAgc2VsZi0+aGVhZC0+ZXhwb3J0cysrOwpAQCAtMjAwNSw3ICsyMDE4LDcgQEAKIHsKICAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKIAotICAgIGlmIChiYXNlLT5vYmogPT0gTlVMTCkgeyAKKyAgICBpZiAoYmFzZS0+b2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogICAgIFB5X0lOQ1JFRihiYXNlLT5vYmopOwpAQCAtMjIwNiw2ICsyMjE5LDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQogICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW2ldID0gLTE7CiAKKyAgICBuZC0+aGVhZC0+ZmxhZ3MgJj0gfihORF9DfE5EX0ZPUlRSQU4pOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTI0NjksMTMgKzI0ODQsMTIgQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBpZiAobmRpbSA9PSAxICYmIHNoYXBlICYmIHNoYXBlWzBdID09IDEpIHsKLSAgICAgICAgLyogVGhpcyBpcyBmb3IgY29tcGFyaW5nIHN0cmlkZXM6IEZvciBleGFtcGxlLCB0aGUgYXJyYXkKLSAgICAgICAgICAgWzE3NV0sIHNoYXBlPVsxXSwgc3RyaWRlcz1bLTVdIGlzIGNvbnNpZGVyZWQgY29udGlndW91cy4gKi8KLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgeworICAgICAgICBpZiAoc2hhcGUgJiYgc2hhcGVbaV0gPD0gMSkgeworICAgICAgICAgICAgLyogc3RyaWRlcyBjYW4gZGlmZmVyIGlmIHRoZSBkaW1lbnNpb24gaXMgbGVzcyB0aGFuIDIgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTI1NDQsNyArMjU1OCw3IEBACiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjEpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYyKTsKIAotICAgIHJldCA9IGVxdWFsID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOyAKKyAgICByZXQgPSBlcXVhbCA/IFB5X1RydWUgOiBQeV9GYWxzZTsKICAgICBQeV9JTkNSRUYocmV0KTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjU1NSwzMCArMjU2OSwzNSBAQAogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlPYmplY3QgKm9yZGVyOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIFB5X2J1ZmZlciB2aWV3OworICAgIFB5X2J1ZmZlciB2aWV3LCAqYmFzZTsKICAgICBjaGFyIG9yZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmb2JqLCAmb3JkZXIpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiaXNfY29udGlndW91czogb2JqZWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKLSAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOwotICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpIHsKLSAgICAgICAgZ290byByZWxlYXNlOworICAgIGlmIChOREFycmF5X0NoZWNrKG9iaikpIHsKKyAgICAgICAgLyogU2tpcCB0aGUgYnVmZmVyIHByb3RvY29sIHRvIGNoZWNrIHNpbXBsZSBldGMuIGJ1ZmZlcnMgZGlyZWN0bHkuICovCisgICAgICAgIGJhc2UgPSAmKChOREFycmF5T2JqZWN0ICopb2JqKS0+aGVhZC0+YmFzZTsKKyAgICAgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKGJhc2UsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiaXNfY29udGlndW91czogb2JqZWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmdmlldywgb3JkKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgfQogCi0gICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgIFB5X0lOQ1JFRihyZXQpOwotCi1yZWxlYXNlOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IGNmNGIwZTEuLjI2OTdhYzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtMTIsNiArMTIsMTEgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJkYXRldGltZS5oIgogI2luY2x1ZGUgIm1hcnNoYWwuaCIKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+ICAgICAgICAgLyogc3RydWN0IHRpbWV2YWwgKi8KKyNlbmRpZgogCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgpAQCAtNjgsNiArNzMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHRlc3Rfc2l6ZW9mX2NfdHlwZXMoUHlPYmplY3QgKnNlbGYpCiB7CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID4gNSkpKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdHlwZS1saW1pdHMiCisjZW5kaWYKICNkZWZpbmUgQ0hFQ0tfU0laRU9GKFRZUEUsIEVYUEVDVEVEKSAgICAgICAgIFwKICAgICBpZiAoRVhQRUNURUQgIT0gc2l6ZW9mKFRZUEUpKSAgeyAgICAgICAgIFwKICAgICAgICAgUHlFcnJfRm9ybWF0KFRlc3RFcnJvciwgICAgICAgICAgICAgIFwKQEAgLTEyNSw2ICsxMzQsOSBAQAogI3VuZGVmIElTX1NJR05FRAogI3VuZGVmIENIRUNLX1NJR05FU1MKICN1bmRlZiBDSEVDS19TSVpFT0YKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCiB9CiAKIApAQCAtMTcxOSw3ICsxNzMxLDcgQEAKICAgICAgICAgICAgICB7LTB4ZmZmZkwsIDE2LCAtMX0sCiAgICAgICAgICAgICAgezB4ZmZmZmZmZkwsIDI4LCAxfSwKICAgICAgICAgICAgICB7LTB4ZmZmZmZmZkwsIDI4LCAtMX19OwotICAgIGludCBpOworICAgIHNpemVfdCBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSCh0ZXN0Y2FzZXMpOyArK2kpIHsKICAgICAgICAgc2l6ZV90IG5iaXRzOwpAQCAtMjQ2OCw3ICsyNDgwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZpbmZvKTsKIH0KLSAKKwogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfZnJvbV9jb250aWd1b3VzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewpAQCAtMjUxOSw2ICsyNTMxLDU4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZiAoZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSAmJiBkZWZpbmVkKF9fR05VQ19fKQorZXh0ZXJuIFB5VHlwZU9iamVjdCBfUHlCeXRlc0lPQnVmZmVyX1R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gJl9QeUJ5dGVzSU9CdWZmZXJfVHlwZTsKKyAgICBQeU9iamVjdCAqYjsKKyAgICBjaGFyICpkdW1teVsxXTsKKyAgICBpbnQgcmV0LCBtYXRjaDsKKworICAgIC8qIFB5QnVmZmVyX0ZpbGxJbmZvKCkgKi8KKyAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyhOVUxMLCBOVUxMLCBkdW1teSwgMSwgMCwgUHlCVUZfU0lNUExFKTsKKyAgICBtYXRjaCA9IFB5RXJyX09jY3VycmVkKCkgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19CdWZmZXJFcnJvcik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAocmV0ICE9IC0xIHx8IG1hdGNoID09IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBieXRlc2lvYnVmX2dldGJ1ZmZlcigpICovCisgICAgYiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlPYmplY3RfR2V0QnVmZmVyKGIsIE5VTEwsIFB5QlVGX1NJTVBMRSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIG1hdGNoID0gUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0J1ZmZlckVycm9yKTsKKyAgICBQeUVycl9DbGVhcigpOworICAgIGlmIChyZXQgIT0gLTEgfHwgbWF0Y2ggPT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIFB5X1JFVFVSTl9OT05FOworCitlcnJvcjoKKyAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLAorICAgICAgICAidGVzdF9wZXAzMTE4X29ic29sZXRlX3dyaXRlX2xvY2tzOiBmYWlsdXJlIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworLyogVGhpcyB0ZXN0cyBmdW5jdGlvbnMgdGhhdCBoaXN0b3JpY2FsbHkgc3VwcG9ydGVkIHdyaXRlIGxvY2tzLiAgSXQgaXMKKyAgIHdyb25nIHRvIGNhbGwgZ2V0YnVmZmVyKCkgd2l0aCB2aWV3PT1OVUxMIGFuZCBhIGNvbXBsaWFudCBnZXRidWZmZXJwcm9jCisgICBpcyBlbnRpdGxlZCB0byBzZWdmYXVsdCBpbiB0aGF0IGNhc2UuICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb2JqKQoreworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCBOVUxMLCBQeUJVRl9TSU1QTEUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogLyogVGVzdCB0aGF0IHRoZSBmYXRhbCBlcnJvciBmcm9tIG5vdCBoYXZpbmcgYSBjdXJyZW50IHRocmVhZCBkb2Vzbid0CiAgICBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLiAgUnVuIHZpYSBMaWIvdGVzdC90ZXN0X2NhcGkucHkgKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNTcwLDcgKzI2MzQsNyBAQAogc3RhdGljIGludAogY2hlY2tfdGltZV9yb3VuZGluZyhpbnQgcm91bmQpCiB7Ci0gICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRE9XTiAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX1VQKSB7CisgICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRkxPT1IgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCByb3VuZGluZyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMjcwMyw2ICsyNzY3LDIxIEBACiAgICAgcmV0dXJuIG9iajsKIH0KIAorc3RhdGljIFB5TWV0aG9kRGVmIG1sOworCitzdGF0aWMgUHlPYmplY3QgKgorY3JlYXRlX2NmdW5jdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX05ld0V4KCZtbCwgc2VsZiwgTlVMTCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtbCA9IHsKKyAgICAiY3JlYXRlX2NmdW5jdGlvbiIsCisgICAgY3JlYXRlX2NmdW5jdGlvbiwKKyAgICBNRVRIX05PQVJHUywKKyAgICBOVUxMCit9OworCiBzdGF0aWMgUHlPYmplY3QgKgogX3Rlc3RfaW5jcmVmKFB5T2JqZWN0ICpvYikKIHsKQEAgLTI3NjEsNiArMjg0MCwyMCBAQAogewogICAgIHZvaWQgKnB0cjsKIAorICAgIHB0ciA9IFB5TWVtX1Jhd01hbGxvYygwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5TWVtX1Jhd01hbGxvYygwKSByZXR1cm5zIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TWVtX1Jhd0ZyZWUocHRyKTsKKworICAgIHB0ciA9IFB5TWVtX1Jhd0NhbGxvYygwLCAwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5TWVtX1Jhd0NhbGxvYygwLCAwKSByZXR1cm5zIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TWVtX1Jhd0ZyZWUocHRyKTsKKwogICAgIHB0ciA9IFB5TWVtX01hbGxvYygwKTsKICAgICBpZiAocHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5TWVtX01hbGxvYygwKSByZXR1cm5zIE5VTEwiKTsKQEAgLTI3NjgsNiArMjg2MSwxMyBAQAogICAgIH0KICAgICBQeU1lbV9GcmVlKHB0cik7CiAKKyAgICBwdHIgPSBQeU1lbV9DYWxsb2MoMCwgMCk7CisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU1lbV9DYWxsb2MoMCwgMCkgcmV0dXJucyBOVUxMIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeU1lbV9GcmVlKHB0cik7CisKICAgICBwdHIgPSBQeU9iamVjdF9NYWxsb2MoMCk7CiAgICAgaWYgKHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJQeU9iamVjdF9NYWxsb2MoMCkgcmV0dXJucyBOVUxMIik7CkBAIC0yNzc1LDEzICsyODc1LDIyIEBACiAgICAgfQogICAgIFB5T2JqZWN0X0ZyZWUocHRyKTsKIAorICAgIHB0ciA9IFB5T2JqZWN0X0NhbGxvYygwLCAwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5T2JqZWN0X0NhbGxvYygwLCAwKSByZXR1cm5zIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5T2JqZWN0X0ZyZWUocHRyKTsKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKIAogICAgIHNpemVfdCBtYWxsb2Nfc2l6ZTsKKyAgICBzaXplX3QgY2FsbG9jX25lbGVtOworICAgIHNpemVfdCBjYWxsb2NfZWxzaXplOwogICAgIHZvaWQgKnJlYWxsb2NfcHRyOwogICAgIHNpemVfdCByZWFsbG9jX25ld19zaXplOwogICAgIHZvaWQgKmZyZWVfcHRyOwpAQCAtMjc5NCw2ICsyOTAzLDE0IEBACiAgICAgcmV0dXJuIGhvb2stPmFsbG9jLm1hbGxvYyhob29rLT5hbGxvYy5jdHgsIHNpemUpOwogfQogCitzdGF0aWMgdm9pZCogaG9va19jYWxsb2MgKHZvaWQqIGN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIGFsbG9jX2hvb2tfdCAqaG9vayA9IChhbGxvY19ob29rX3QgKiljdHg7CisgICAgaG9vay0+Y2FsbG9jX25lbGVtID0gbmVsZW07CisgICAgaG9vay0+Y2FsbG9jX2Vsc2l6ZSA9IGVsc2l6ZTsKKyAgICByZXR1cm4gaG9vay0+YWxsb2MuY2FsbG9jKGhvb2stPmFsbG9jLmN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKIHN0YXRpYyB2b2lkKiBob29rX3JlYWxsb2MgKHZvaWQqIGN0eCwgdm9pZCogcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CiAgICAgYWxsb2NfaG9va190ICpob29rID0gKGFsbG9jX2hvb2tfdCAqKWN0eDsKQEAgLTI4MTUsMTcgKzI5MzIsMTUgQEAKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcl9tc2c7CiAgICAgYWxsb2NfaG9va190IGhvb2s7Ci0gICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7Ci0gICAgc2l6ZV90IHNpemUsIHNpemUyOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CisgICAgc2l6ZV90IHNpemUsIHNpemUyLCBuZWxlbSwgZWxzaXplOwogICAgIHZvaWQgKnB0ciwgKnB0cjI7CiAKLSAgICBob29rLm1hbGxvY19zaXplID0gMDsKLSAgICBob29rLnJlYWxsb2NfcHRyID0gTlVMTDsKLSAgICBob29rLnJlYWxsb2NfbmV3X3NpemUgPSAwOwotICAgIGhvb2suZnJlZV9wdHIgPSBOVUxMOworICAgIG1lbXNldCgmaG9vaywgMCwgc2l6ZW9mKGhvb2spKTsKIAogICAgIGFsbG9jLmN0eCA9ICZob29rOwogICAgIGFsbG9jLm1hbGxvYyA9ICZob29rX21hbGxvYzsKKyAgICBhbGxvYy5jYWxsb2MgPSAmaG9va19jYWxsb2M7CiAgICAgYWxsb2MucmVhbGxvYyA9ICZob29rX3JlYWxsb2M7CiAgICAgYWxsb2MuZnJlZSA9ICZob29rX2ZyZWU7CiAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKGRvbWFpbiwgJmhvb2suYWxsb2MpOwpAQCAtMjg4Miw2ICsyOTk3LDMzIEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKKyAgICBuZWxlbSA9IDI7CisgICAgZWxzaXplID0gNTsKKyAgICBzd2l0Y2goZG9tYWluKQorICAgIHsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9SQVc6IHB0ciA9IFB5TWVtX1Jhd0NhbGxvYyhuZWxlbSwgZWxzaXplKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fTUVNOiBwdHIgPSBQeU1lbV9DYWxsb2MobmVsZW0sIGVsc2l6ZSk7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogcHRyID0gUHlPYmplY3RfQ2FsbG9jKG5lbGVtLCBlbHNpemUpOyBicmVhazsKKyAgICBkZWZhdWx0OiBwdHIgPSBOVUxMOyBicmVhazsKKyAgICB9CisKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgZXJyb3JfbXNnID0gImNhbGxvYyBmYWlsZWQiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgaWYgKGhvb2suY2FsbG9jX25lbGVtICE9IG5lbGVtIHx8IGhvb2suY2FsbG9jX2Vsc2l6ZSAhPSBlbHNpemUpIHsKKyAgICAgICAgZXJyb3JfbXNnID0gImNhbGxvYyBpbnZhbGlkIG5lbGVtIG9yIGVsc2l6ZSI7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBzd2l0Y2goZG9tYWluKQorICAgIHsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9SQVc6IFB5TWVtX1Jhd0ZyZWUocHRyKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fTUVNOiBQeU1lbV9GcmVlKHB0cik7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogUHlPYmplY3RfRnJlZShwdHIpOyBicmVhazsKKyAgICB9CisKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmVzID0gUHlfTm9uZTsKICAgICBnb3RvIGZpbmFsbHk7CkBAIC0yOTQxLDYgKzMwODMsMTIgQEAKICJUaGlzIGRvY3N0cmluZyBoYXMgYSB2YWxpZCBzaWduYXR1cmUuIgogKTsKIAorUHlEb2NfU1RSVkFSKGRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLAorImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jKCRtb2R1bGUsIC8sIHNpZylcbiIKKyItLVxuIgorIlxuIgorKTsKKwogUHlEb2NfU1RSVkFSKGRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMsCiAiZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcygkbW9kdWxlLCAvLCBwYXJhbWV0ZXIpXG4iCiAiLS1cbiIKQEAgLTMwNTEsNiArMzE5OSwyNCBAQAogfQogI2VuZGlmICAgLyogV0lUSF9USFJFQUQgKi8KIAorc3RhdGljIFB5T2JqZWN0KgordGVzdF9yYWlzZV9zaWduYWwoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBzaWdudW0sIGVycjsKKworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJhaXNlX3NpZ25hbCIsICZzaWdudW0pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSByYWlzZShzaWdudW0pOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisKKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKiBtYXJzaGFsICovCiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTMyMDQsNiArMzM3MCwxNDIgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBvYmosIHBvcyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIC8qIGludmFsaWQgY2FsbDogcmV0dXJuIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yLAorICAgICAqIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KCkgbXVzdCBkZXRlY3Qgc3VjaCBidWcgYXQgcnVudGltZS4gKi8KKyAgICBQeUVycl9DbGVhcigpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QqCityZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIC8qIGludmFsaWQgY2FsbDogcmV0dXJuIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0LAorICAgICAqIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KCkgbXVzdCBkZXRlY3Qgc3VjaCBidWcgYXQgcnVudGltZS4gKi8KKyAgICBQeUVycl9TZXROb25lKFB5RXhjX1ZhbHVlRXJyb3IpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfZnJvbXNlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBzZWNvbmRzOworICAgIF9QeVRpbWVfdCB0czsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdHMgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKHNlY29uZHMpOworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QodHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfZnJvbXNlY29uZHNvYmplY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0czsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2kiLCAmb2JqLCAmcm91bmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoY2hlY2tfdGltZV9yb3VuZGluZyhyb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmdHMsIG9iaiwgcm91bmQpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KHRzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX2Fzc2Vjb25kc2RvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIF9QeVRpbWVfdCB0czsKKyAgICBkb3VibGUgZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTCIsICZucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRzID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIGQgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0cyk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfUHlUaW1lX0FzVGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIGludCByb3VuZDsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTGkiLCAmbnMsICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHQsICZ0diwgcm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzZWNvbmRzID0gUHlMb25nX0Zyb21Mb25nKChQWV9MT05HX0xPTkcpdHYudHZfc2VjKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBzZWNvbmRzLCB0di50dl91c2VjKTsKK30KKworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfUHlUaW1lX0FzVGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModCwgJnRzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgX1B5TG9uZ19Gcm9tVGltZV90KHRzLnR2X3NlYyksIHRzLnR2X25zZWMpOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X1B5VGltZV9Bc01pbGxpc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIGludCByb3VuZDsKKyAgICBfUHlUaW1lX3QgdCwgbXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkxpIiwgJm5zLCAmcm91bmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoY2hlY2tfdGltZV9yb3VuZGluZyhyb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0LCByb3VuZCk7CisgICAgLyogVGhpcyBjb252ZXJzaW9uIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBfUHlUaW1lX3QgaXMgYSBudW1iZXIgb2YKKyAgICAgICBuYW5vc2Vjb25kcyAqLworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QobXMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBpbnQgcm91bmQ7CisgICAgX1B5VGltZV90IHQsIG1zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMaSIsICZucywgJnJvdW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGNoZWNrX3RpbWVfcm91bmRpbmcocm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdCA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBtcyA9IF9QeVRpbWVfQXNNaWNyb3NlY29uZHModCwgcm91bmQpOworICAgIC8qIFRoaXMgY29udmVyc2lvbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgX1B5VGltZV90IGlzIGEgbnVtYmVyIG9mCisgICAgICAgbmFub3NlY29uZHMgKi8KKyAgICByZXR1cm4gX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KG1zKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTMyMzYsNiArMzUzOCwxMCBAQAogICAgIHsidGVzdF91bmljb2RlX2NvbXBhcmVfd2l0aF9hc2NpaSIsIChQeUNGdW5jdGlvbil0ZXN0X3VuaWNvZGVfY29tcGFyZV93aXRoX2FzY2lpLCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2NhcHN1bGUiLCAoUHlDRnVuY3Rpb24pdGVzdF9jYXBzdWxlLCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2Zyb21fY29udGlndW91cyIsIChQeUNGdW5jdGlvbil0ZXN0X2Zyb21fY29udGlndW91cywgTUVUSF9OT0FSR1N9LAorI2lmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpICYmIGRlZmluZWQoX19HTlVDX18pCisgICAgeyJ0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3MiLCAoUHlDRnVuY3Rpb24pdGVzdF9wZXAzMTE4X29ic29sZXRlX3dyaXRlX2xvY2tzLCBNRVRIX05PQVJHU30sCisjZW5kaWYKKyAgICB7ImdldGJ1ZmZlcl93aXRoX251bGxfdmlldyIsIGdldGJ1ZmZlcl93aXRoX251bGxfdmlldywgTUVUSF9PfSwKICAgICB7ImdldGFyZ3NfdHVwbGUiLCAgICAgICAgICAgZ2V0YXJnc190dXBsZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZHMiLCAoUHlDRnVuY3Rpb24pZ2V0YXJnc19rZXl3b3JkcywKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKQEAgLTMzMDksNiArMzYxNSw3IEBACiAgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7IndpdGhfdHBfZGVsIiwgICAgICAgICAgICAgd2l0aF90cF9kZWwsICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNyZWF0ZV9jZnVuY3Rpb24iLCAgICAgICAgY3JlYXRlX2NmdW5jdGlvbiwgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9weW1lbV9hbGxvYzAiLAogICAgICAoUHlDRnVuY3Rpb24pdGVzdF9weW1lbV9hbGxvYzAsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfcHltZW1fc2V0cmF3YWxsb2NhdG9ycyIsCkBAIC0zMzM0LDEyICszNjQxLDE3IEBACiAgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmUiLAogICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF93aXRoX2RvY3N0cmluZywgTUVUSF9OT0FSR1MsCiAgICAgICAgIGRvY3N0cmluZ193aXRoX3NpZ25hdHVyZX0sCisgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYyIsCisgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKKyAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2J1dF9ub19kb2N9LAogICAgIHsiZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcyIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKICAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lc30sCiAgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfd2l0aF9kZWZhdWx0cyIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKICAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX3dpdGhfZGVmYXVsdHN9LAorICAgIHsicmFpc2Vfc2lnbmFsIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfcmFpc2Vfc2lnbmFsLCBNRVRIX1ZBUkFSR1N9LAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgeyJjYWxsX2luX3RlbXBvcmFyeV9jX3RocmVhZCIsIGNhbGxfaW5fdGVtcG9yYXJ5X2NfdGhyZWFkLCBNRVRIX08sCiAgICAgIFB5RG9jX1NUUigic2V0X2Vycm9yX2NsYXNzKGVycm9yX2NsYXNzKSAtPiBOb25lIil9LApAQCAtMzM1Niw2ICszNjY4LDE5IEBACiAgICAgICAgIHB5bWFyc2hhbF9yZWFkX2xhc3Rfb2JqZWN0X2Zyb21fZmlsZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InB5bWFyc2hhbF9yZWFkX29iamVjdF9mcm9tX2ZpbGUiLAogICAgICAgICBweW1hcnNoYWxfcmVhZF9vYmplY3RfZnJvbV9maWxlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsicmV0dXJuX251bGxfd2l0aG91dF9lcnJvciIsCisgICAgICAgIHJldHVybl9udWxsX3dpdGhvdXRfZXJyb3IsIE1FVEhfTk9BUkdTfSwKKyAgICB7InJldHVybl9yZXN1bHRfd2l0aF9lcnJvciIsCisgICAgICAgIHJldHVybl9yZXN1bHRfd2l0aF9lcnJvciwgTUVUSF9OT0FSR1N9LAorICAgIHsiUHlUaW1lX0Zyb21TZWNvbmRzIiwgdGVzdF9weXRpbWVfZnJvbXNlY29uZHMsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0IiwgdGVzdF9weXRpbWVfZnJvbXNlY29uZHNvYmplY3QsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSIsIHRlc3RfcHl0aW1lX2Fzc2Vjb25kc2RvdWJsZSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7IlB5VGltZV9Bc1RpbWV2YWwiLCB0ZXN0X1B5VGltZV9Bc1RpbWV2YWwsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgeyJQeVRpbWVfQXNUaW1lc3BlYyIsIHRlc3RfUHlUaW1lX0FzVGltZXNwZWMsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKKyAgICB7IlB5VGltZV9Bc01pbGxpc2Vjb25kcyIsIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0FzTWljcm9zZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zNTE1LDYgKzM4NDAsMjAxIEBACiB9OwogCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECit9IG1hdG11bE9iamVjdDsKKworc3RhdGljIFB5T2JqZWN0ICoKK21hdG11bFR5cGVfbWF0bXVsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzT08pIiwgIm1hdG11bCIsIHNlbGYsIG90aGVyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21hdG11bFR5cGVfaW1hdG11bChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoc09PKSIsICJpbWF0bXVsIiwgc2VsZiwgb3RoZXIpOworfQorCitzdGF0aWMgdm9pZAorbWF0bXVsVHlwZV9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBQeU51bWJlck1ldGhvZHMgbWF0bXVsVHlwZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZW1haW5kZSByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZGl2bW9kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX25lZ2F0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Bvc2l0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Fic29sdXRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jvb2wgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW52ZXJ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvYXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbmRleCAqLworICAgIG1hdG11bFR5cGVfbWF0bXVsLCAgICAgICAgLyogbmJfbWF0cml4X211bHRpcGx5ICovCisgICAgbWF0bXVsVHlwZV9pbWF0bXVsICAgICAgICAvKiBuYl9tYXRyaXhfaW5wbGFjZV9tdWx0aXBseSAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBtYXRtdWxUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJtYXRtdWxUeXBlIiwKKyAgICBzaXplb2YobWF0bXVsT2JqZWN0KSwgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIG1hdG11bFR5cGVfZGVhbGxvYywgICAgICAgICAgICAgICAgIC8qIGRlc3RydWN0b3IgdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAmbWF0bXVsVHlwZV9hc19udW1iZXIsICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICJDIGxldmVsIHR5cGUgd2l0aCBtYXRyaXggb3BlcmF0aW9ucyBkZWZpbmVkIiwKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmF2ZXJzZXByb2MgdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmFvX2l0ZXJhdG9yOworfSBhd2FpdE9iamVjdDsKKworCitzdGF0aWMgUHlPYmplY3QgKgorYXdhaXRPYmplY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGF3YWl0T2JqZWN0ICphbzsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImF3YWl0T2JqZWN0IiwgMSwgMSwgJnYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFvID0gKGF3YWl0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKGFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHYpOworICAgIGFvLT5hb19pdGVyYXRvciA9IHY7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopYW87Cit9CisKKworc3RhdGljIHZvaWQKK2F3YWl0T2JqZWN0X2RlYWxsb2MoYXdhaXRPYmplY3QgKmFvKQoreworICAgIFB5X0NMRUFSKGFvLT5hb19pdGVyYXRvcik7CisgICAgUHlfVFlQRShhbyktPnRwX2ZyZWUoYW8pOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithd2FpdE9iamVjdF9hd2FpdChhd2FpdE9iamVjdCAqYW8pCit7CisgICAgUHlfSU5DUkVGKGFvLT5hb19pdGVyYXRvcik7CisgICAgcmV0dXJuIGFvLT5hb19pdGVyYXRvcjsKK30KKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGF3YWl0VHlwZV9hc19hc3luYyA9IHsKKyAgICAodW5hcnlmdW5jKWF3YWl0T2JqZWN0X2F3YWl0LCAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworc3RhdGljIFB5VHlwZU9iamVjdCBhd2FpdFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImF3YWl0VHlwZSIsCisgICAgc2l6ZW9mKGF3YWl0T2JqZWN0KSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhd2FpdE9iamVjdF9kZWFsbG9jLCAgICAvKiBkZXN0cnVjdG9yIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmF3YWl0VHlwZV9hc19hc3luYywgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQyBsZXZlbCB0eXBlIHdpdGggdHBfYXNfYXN5bmMiLAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYXZlcnNlcHJvYyB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIGF3YWl0T2JqZWN0X25ldywgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfdGVzdGNhcGltb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULApAQCAtMzUyOCw2ICs0MDQ4LDkgQEAKICAgICBOVUxMCiB9OwogCisvKiBQZXIgUEVQIDQ4OSwgdGhpcyBtb2R1bGUgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uCisgKi8KKwogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fdGVzdGNhcGkodm9pZCkKIHsKQEAgLTM1NDQsNiArNDA2NywxNSBAQAogICAgIC8qIGRvbid0IHVzZSBhIG5hbWUgc3RhcnRpbmcgd2l0aCAidGVzdCIsIHNpbmNlIHdlIGRvbid0IHdhbnQKICAgICAgICB0ZXN0X2NhcGkgdG8gYXV0b21hdGljYWxseSBjYWxsIHRoaXMgKi8KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl90ZXN0X3N0cnVjdG1lbWJlcnNUeXBlIiwgKFB5T2JqZWN0ICopJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpOworICAgIGlmIChQeVR5cGVfUmVhZHkoJm1hdG11bFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZtYXRtdWxUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm1hdG11bFR5cGUiLCAoUHlPYmplY3QgKikmbWF0bXVsVHlwZSk7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZhd2FpdFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZhd2FpdFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiYXdhaXRUeXBlIiwgKFB5T2JqZWN0ICopJmF3YWl0VHlwZSk7CiAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNIQVJfTUFYIiwgUHlMb25nX0Zyb21Mb25nKENIQVJfTUFYKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDSEFSX01JTiIsIFB5TG9uZ19Gcm9tTG9uZyhDSEFSX01JTikpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxOTY4NwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTAsMCArMSw1ODQgQEAKKworLyogVGVzdGluZyBtb2R1bGUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBtb2R1bGVzIChQRVAgNDg5KQorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworLyogRXhhbXBsZSBvYmplY3RzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICAgICAgICAgICAgKnhfYXR0cjsgICAgICAgIC8qIEF0dHJpYnV0ZXMgZGljdGlvbmFyeSAqLworfSBFeGFtcGxlT2JqZWN0OworCisvKiBFeGFtcGxlIG1ldGhvZHMgKi8KKworc3RhdGljIGludAorRXhhbXBsZV90cmF2ZXJzZShFeGFtcGxlT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitFeGFtcGxlX2ZpbmFsaXplKEV4YW1wbGVPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+eF9hdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0V4YW1wbGVfZGVtbyhFeGFtcGxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqbyA9IE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpkZW1vIiwgJm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobyAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhvKSkgeworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIEV4YW1wbGVfbWV0aG9kc1tdID0geworICAgIHsiZGVtbyIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKUV4YW1wbGVfZGVtbywgIE1FVEhfVkFSQVJHUywKKyAgICAgICAgUHlEb2NfU1RSKCJkZW1vKCkgLT4gTm9uZSIpfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0V4YW1wbGVfZ2V0YXR0cm8oRXhhbXBsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgaWYgKHNlbGYtPnhfYXR0ciAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+eF9hdHRyLCBuYW1lKTsKKyAgICAgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOworfQorCitzdGF0aWMgaW50CitFeGFtcGxlX3NldGF0dHIoRXhhbXBsZU9iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCit7CisgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIGludCBydiA9IFB5RGljdF9EZWxJdGVtU3RyaW5nKHNlbGYtPnhfYXR0ciwgbmFtZSk7CisgICAgICAgIGlmIChydiA8IDApCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgImRlbGV0ZSBub24tZXhpc3RpbmcgRXhhbXBsZSBhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHJ2OworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyhzZWxmLT54X2F0dHIsIG5hbWUsIHYpOworfQorCitzdGF0aWMgUHlUeXBlX1Nsb3QgRXhhbXBsZV9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RvYywgIlRoZSBFeGFtcGxlIHR5cGUifSwKKyAgICB7UHlfdHBfZmluYWxpemUsIEV4YW1wbGVfZmluYWxpemV9LAorICAgIHtQeV90cF90cmF2ZXJzZSwgRXhhbXBsZV90cmF2ZXJzZX0sCisgICAge1B5X3RwX2dldGF0dHJvLCBFeGFtcGxlX2dldGF0dHJvfSwKKyAgICB7UHlfdHBfc2V0YXR0ciwgRXhhbXBsZV9zZXRhdHRyfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgRXhhbXBsZV9tZXRob2RzfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgRXhhbXBsZV9UeXBlX3NwZWMgPSB7CisgICAgIl90ZXN0aW1wb3J0ZXhlYy5FeGFtcGxlIiwKKyAgICBzaXplb2YoRXhhbXBsZU9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCisgICAgRXhhbXBsZV9UeXBlX3Nsb3RzCit9OworCisvKiBGdW5jdGlvbiBvZiB0d28gaW50ZWdlcnMgcmV0dXJuaW5nIGludGVnZXIgKi8KKworUHlEb2NfU1RSVkFSKHRlc3RleHBvcnRfZm9vX2RvYywKKyJmb28oaSxqKVxuXAorXG5cCitSZXR1cm4gdGhlIHN1bSBvZiBpIGFuZCBqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdGV4cG9ydF9mb28oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGxvbmcgaSwgajsKKyAgICBsb25nIHJlczsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxsOmZvbyIsICZpLCAmaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IGkgKyBqOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKK30KKworLyogVGVzdCB0aGF0IFB5U3RhdGUgcmVnaXN0cmF0aW9uIGZhaWxzICAqLworCitQeURvY19TVFJWQVIoY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuY19kb2MsCisicmVnaXN0ZXJfc3RhdGUoMCk6IGNhbGwgUHlTdGF0ZV9GaW5kTW9kdWxlKClcblwKK3JlZ2lzdGVyX3N0YXRlKDEpOiBjYWxsIFB5U3RhdGVfQWRkTW9kdWxlKClcblwKK3JlZ2lzdGVyX3N0YXRlKDIpOiBjYWxsIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKCkiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGksIHJldDsKKyAgICBQeU1vZHVsZURlZiAqZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYyIsICZpKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3dpdGNoIChpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIG1vZCA9IFB5U3RhdGVfRmluZE1vZHVsZShkZWYpOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbW9kOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXQgPSBQeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZik7CisgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXQgPSBQeVN0YXRlX1JlbW92ZU1vZHVsZShkZWYpOworICAgICAgICAgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5VHlwZV9TbG90IFN0cl9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2Jhc2UsIE5VTEx9LCAvKiBmaWxsZWQgb3V0IGluIG1vZHVsZSBleGVjIGZ1bmN0aW9uICovCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIFN0cl9UeXBlX3NwZWMgPSB7CisgICAgIl90ZXN0aW1wb3J0ZXhlYy5TdHIiLAorICAgIDAsCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLAorICAgIFN0cl9UeXBlX3Nsb3RzCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgdGVzdGV4cG9ydF9tZXRob2RzW10gPSB7CisgICAgeyJmb28iLCAgICAgICAgICAgICB0ZXN0ZXhwb3J0X2ZvbywgICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgICAgIHRlc3RleHBvcnRfZm9vX2RvY30sCisgICAgeyJjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jIiwgIGNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMsCisgICAgICAgIE1FVEhfVkFSQVJHUywgY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuY19kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgaW50IGV4ZWNmdW5jKFB5T2JqZWN0ICptKQoreworICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKworICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCisgICAgICogaGVyZS4gSXQncyByZXF1aXJlZCBmb3IgcG9ydGFiaWxpdHkgdG8gV2luZG93cyB3aXRob3V0IHJlcXVpcmluZworICAgICAqIEMrKy4gKi8KKyAgICBTdHJfVHlwZV9zbG90c1swXS5wZnVuYyA9ICZQeVVuaWNvZGVfVHlwZTsKKworICAgIC8qIEFkZCBhIGN1c3RvbSB0eXBlICovCisgICAgdGVtcCA9IFB5VHlwZV9Gcm9tU3BlYygmRXhhbXBsZV9UeXBlX3NwZWMpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFeGFtcGxlIiwgdGVtcCkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgLyogQWRkIGFuIGV4Y2VwdGlvbiB0eXBlICovCisgICAgdGVtcCA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3Rlc3RpbXBvcnRleGVjLmVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgdGVtcCkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgLyogQWRkIFN0ciAqLworICAgIHRlbXAgPSBQeVR5cGVfRnJvbVNwZWMoJlN0cl9UeXBlX3NwZWMpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTdHIiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImludF9jb25zdCIsIDE5NjkpICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAic3RyX2NvbnN0IiwgInNvbWV0aGluZyBkaWZmZXJlbnQiKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXR1cm4gMDsKKyBmYWlsOgorICAgIHJldHVybiAtMTsKK30KKworLyogSGVscGVyIGZvciBtb2R1bGUgZGVmaW5pdGlvbnM7IHRoZXJlJ2xsIGJlIGEgbG90IG9mIHRoZW0gKi8KKyNkZWZpbmUgVEVTVF9NT0RVTEVfREVGKG5hbWUsIHNsb3RzLCBtZXRob2RzKSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLyBcCisgICAgbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8gXAorICAgIFB5RG9jX1NUUigiVGVzdCBtb2R1bGUgIiBuYW1lKSwgICAgICAgICAgICAgLyogbV9kb2MgKi8gXAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovIFwKKyAgICBtZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLyBcCisgICAgc2xvdHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovIFwKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8gXAorICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLyBcCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8gXAorfQorCitQeU1vZHVsZURlZl9TbG90IG1haW5fc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgbWFpbl9kZWYgPSBURVNUX01PRFVMRV9ERUYoIm1haW4iLCBtYWluX3Nsb3RzLCB0ZXN0ZXhwb3J0X21ldGhvZHMpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmbWFpbl9kZWYpOworfQorCisKKy8qKioqIEltcG9ydGluZyBhIG5vbi1tb2R1bGUgb2JqZWN0ICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlOworCisvKiBDcmVhdGUgYSBTaW1wbGVOYW1lc3BhY2UodGhyZWU9MykgKi8KK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfbm9ubW9kdWxlKFB5T2JqZWN0ICpzcGVjLCBQeU1vZHVsZURlZiAqZGVmKQoreworICAgIFB5T2JqZWN0ICpkY3QsICpucywgKnRocmVlOworCisgICAgaWYgKGRlZiAhPSAmZGVmX25vbm1vZHVsZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJkZWYgZG9lcyBub3QgbWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChkY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0aHJlZSA9IFB5TG9uZ19Gcm9tTG9uZygzKTsKKyAgICBpZiAodGhyZWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRjdCwgInRocmVlIiwgdGhyZWUpOworICAgIFB5X0RFQ1JFRih0aHJlZSk7CisKKyAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoZGN0KTsKKyAgICBQeV9ERUNSRUYoZGN0KTsKKyAgICByZXR1cm4gbnM7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9ub25tb2R1bGVbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19ub25tb2R1bGV9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlIiwgc2xvdHNfY3JlYXRlX25vbm1vZHVsZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbm1vZHVsZSk7Cit9CisKKy8qKioqIE5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9uYXNjaWlfbGF0aW4gPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJfdGVzdG11bHRpcGhhc2Vfbm9uYXNjaWlfbGF0aW4iLCAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJNb2R1bGUgbmFtZWQgaW4gQ3plY2giKSwgICAgICAgICAvKiBtX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdFVfX3Rlc3RtdWx0aXBoYXNlX3prb3VrYV9uYXRlbl9ldmMwN2dpOGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9ub25hc2NpaV9sYXRpbik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9uYXNjaWlfa2FuYSA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25hc2NpaV9rYW5hIiwgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIk1vZHVsZSBuYW1lZCBpbiBKYXBhbmVzZSIpLCAgICAgIC8qIG1fZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0VV9lY2t6YndiaGM2anBnemN4NDE1eChQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbmFzY2lpX2thbmEpOworfQorCisvKioqIE1vZHVsZSB3aXRoIGEgc2luZ2xlLWNoYXJhY3RlciBuYW1lICoqKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94KFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKKy8qKioqIFRlc3RpbmcgTlVMTCBzbG90cyAqKioqLworCitzdGF0aWMgUHlNb2R1bGVEZWYgbnVsbF9zbG90c19kZWYgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9udWxsX3Nsb3RzIiwgTlVMTCwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX251bGxfc2xvdHMoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm51bGxfc2xvdHNfZGVmKTsKK30KKworLyoqKiogUHJvYmxlbWF0aWMgbW9kdWxlcyAqKioqLworCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19iYWRfbGFyZ2VbXSA9IHsKKyAgICB7X1B5X21vZF9MQVNUX1NMT1QgKyAxLCBOVUxMfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2JhZF9sYXJnZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2JhZF9zbG90X2xhcmdlIiwgc2xvdHNfYmFkX2xhcmdlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbGFyZ2UoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9iYWRfbGFyZ2UpOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19iYWRfbmVnYXRpdmVbXSA9IHsKKyAgICB7LTEsIE5VTEx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfYmFkX25lZ2F0aXZlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbmVnYXRpdmUiLCBzbG90c19iYWRfbmVnYXRpdmUsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9uZWdhdGl2ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2JhZF9uZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfY3JlYXRlX2ludF93aXRoX3N0YXRlID0geyBcCisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiY3JlYXRlX3dpdGhfc3RhdGUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiTm90IGEgUHlNb2R1bGVPYmplY3Qgb2JqZWN0LCBidXQgcmVxdWVzdHMgcGVyLW1vZHVsZSBzdGF0ZSIpLAorICAgIDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX2ludF93aXRoX3N0YXRlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfY3JlYXRlX2ludF93aXRoX3N0YXRlKTsKK30KKworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX25lZ2F0aXZlX3NpemUgPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJuZWdhdGl2ZV9zaXplIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJQeU1vZHVsZURlZiB3aXRoIG5lZ2F0aXZlIG1fc2l6ZSIpLAorICAgIC0xLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfbmVnYXRpdmVfc2l6ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25lZ2F0aXZlX3NpemUpOworfQorCisKK3N0YXRpYyBQeU1vZHVsZURlZiB1bmluaXRpYWxpemVkX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigibWFpbiIsIG1haW5fc2xvdHMsIHRlc3RleHBvcnRfbWV0aG9kcyk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF91bmluaXRpYWxpemVkKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiAoUHlPYmplY3QqKSAmdW5pbml0aWFsaXplZF9kZWY7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF9udWxsKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBOVUxMOworfQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leHBvcnRfcmFpc2UoUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4cG9ydCBmdW5jdGlvbiIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leHBvcnRfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4cG9ydCBmdW5jdGlvbiIpOworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfbnVsbChQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfbnVsbFtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX251bGx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfY3JlYXRlX251bGwgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbCIsIHNsb3RzX2NyZWF0ZV9udWxsLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX251bGwoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfbnVsbCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfcmFpc2UoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGNyZWF0ZSBmdW5jdGlvbiIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfcmFpc2VbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19yYWlzZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfcmFpc2UgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbCIsIHNsb3RzX2NyZWF0ZV9yYWlzZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV9yYWlzZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZWZ1bmNfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGNyZWF0ZSBmdW5jdGlvbiIpOworICAgIHJldHVybiBQeU1vZHVsZV9OZXcoImZvbyIpOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb25bXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbn0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24gPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24iLCBzbG90c19jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24sIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24pOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9jcmVhdGUsIGNyZWF0ZWZ1bmNfbm9ubW9kdWxlfSwKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzIiwgc2xvdHNfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cywgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzKTsKK30KKworc3RhdGljIGludAorZXhlY2Z1bmNfZXJyKFB5T2JqZWN0ICptb2QpCit7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX2VycltdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfZXJyfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2V4ZWNfZXJyID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY19lcnIiLCBzbG90c19leGVjX2VyciwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfZXJyKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY19lcnIpOworfQorCitzdGF0aWMgaW50CitleGVjZnVuY19yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhlYyBmdW5jdGlvbiIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfZXhlY19yYWlzZVtdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfcmFpc2V9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY19yYWlzZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfcmFpc2UiLCBzbG90c19leGVjX3JhaXNlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY19yYWlzZShQeU9iamVjdCAqbW9kKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY19yYWlzZSk7Cit9CisKK3N0YXRpYyBpbnQKK2V4ZWNmdW5jX3VucmVwb3J0ZWRfZXhjZXB0aW9uKFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGV4ZWMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbltdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmNfdW5yZXBvcnRlZF9leGNlcHRpb259LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24iLCBzbG90c19leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24pOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwppbmRleCBmODBmNzZhLi5iY2IzYWVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYworKysgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwpAQCAtNDksMjEgKzQ5LDE4IEBACiAgKiB0aW1lb3V0LgogICovCiBzdGF0aWMgUHlMb2NrU3RhdHVzCi1hY3F1aXJlX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzKQorYWNxdWlyZV90aW1lZChQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgX1B5VGltZV90IHRpbWVvdXQpCiB7CiAgICAgUHlMb2NrU3RhdHVzIHI7Ci0gICAgX1B5VGltZV90aW1ldmFsIGN1cnRpbWU7Ci0gICAgX1B5VGltZV90aW1ldmFsIGVuZHRpbWU7CisgICAgX1B5VGltZV90IGVuZHRpbWUgPSAwOworICAgIF9QeVRpbWVfdCBtaWNyb3NlY29uZHM7CiAKLQotICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7Ci0gICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZlbmR0aW1lKTsKLSAgICAgICAgZW5kdGltZS50dl9zZWMgKz0gbWljcm9zZWNvbmRzIC8gKDEwMDAgKiAxMDAwKTsKLSAgICAgICAgZW5kdGltZS50dl91c2VjICs9IG1pY3Jvc2Vjb25kcyAlICgxMDAwICogMTAwMCk7Ci0gICAgfQotCisgICAgaWYgKHRpbWVvdXQgPiAwKQorICAgICAgICBlbmR0aW1lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIGRvIHsKKyAgICAgICAgbWljcm9zZWNvbmRzID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworCiAgICAgICAgIC8qIGZpcnN0IGEgc2ltcGxlIG5vbi1ibG9ja2luZyB0cnkgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCAqLwogICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIDAsIDApOwogICAgICAgICBpZiAociA9PSBQWV9MT0NLX0ZBSUxVUkUgJiYgbWljcm9zZWNvbmRzICE9IDApIHsKQEAgLTgyLDE0ICs3OSwxMiBAQAogCiAgICAgICAgICAgICAvKiBJZiB3ZSdyZSB1c2luZyBhIHRpbWVvdXQsIHJlY29tcHV0ZSB0aGUgdGltZW91dCBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgKiBzaWduYWxzLCBzaW5jZSB0aG9zZSBjYW4gdGFrZSB0aW1lLiAgKi8KLSAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmN1cnRpbWUpOwotICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9ICgoZW5kdGltZS50dl9zZWMgLSBjdXJ0aW1lLnR2X3NlYykgKiAxMDAwMDAwICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZHRpbWUudHZfdXNlYyAtIGN1cnRpbWUudHZfdXNlYykpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiAwKSB7CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGVuZHRpbWUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CiAKICAgICAgICAgICAgICAgICAvKiBDaGVjayBmb3IgbmVnYXRpdmUgdmFsdWVzLCBzaW5jZSB0aG9zZSBtZWFuIGJsb2NrIGZvcmV2ZXIuCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA8PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHIgPSBQWV9MT0NLX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtOTksNDQgKzk0LDYxIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitzdGF0aWMgaW50Citsb2NrX2FjcXVpcmVfcGFyc2VfYXJncyhQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3QgKnRpbWVvdXQpCiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NraW5nIiwgInRpbWVvdXQiLCBOVUxMfTsKICAgICBpbnQgYmxvY2tpbmcgPSAxOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gLTE7Ci0gICAgUFlfVElNRU9VVF9UIG1pY3Jvc2Vjb25kczsKLSAgICBQeUxvY2tTdGF0dXMgcjsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOworICAgIGNvbnN0IF9QeVRpbWVfdCB1bnNldF90aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcygtMSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlkOmFjcXVpcmUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICp0aW1lb3V0ID0gdW5zZXRfdGltZW91dCA7CiAKLSAgICBpZiAoIWJsb2NraW5nICYmIHRpbWVvdXQgIT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjYW4ndCBzcGVjaWZ5IGEgdGltZW91dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGEgbm9uLWJsb2NraW5nIGNhbGwiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpTzphY3F1aXJlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja2luZywgJnRpbWVvdXRfb2JqKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKHRpbWVvdXRfb2JqCisgICAgICAgICYmIF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QodGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29iaiwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghYmxvY2tpbmcgJiYgKnRpbWVvdXQgIT0gdW5zZXRfdGltZW91dCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3BlY2lmeSBhIHRpbWVvdXQgZm9yIGEgbm9uLWJsb2NraW5nIGNhbGwiKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAodGltZW91dCA8IDAgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgcG9zaXRpdmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCp0aW1lb3V0IDwgMCAmJiAqdGltZW91dCAhPSB1bnNldF90aW1lb3V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICghYmxvY2tpbmcpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IDA7Ci0gICAgZWxzZSBpZiAodGltZW91dCA9PSAtMSkKLSAgICAgICAgbWljcm9zZWNvbmRzID0gLTE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgKj0gMWU2OwotICAgICAgICBpZiAodGltZW91dCA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICAqdGltZW91dCA9IDA7CisgICAgZWxzZSBpZiAoKnRpbWVvdXQgIT0gdW5zZXRfdGltZW91dCkgeworICAgICAgICBfUHlUaW1lX3QgbWljcm9zZWNvbmRzOworCisgICAgICAgIG1pY3Jvc2Vjb25kcyA9IF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoKnRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPj0gUFlfVElNRU9VVF9NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgbWljcm9zZWNvbmRzID0gKFBZX1RJTUVPVVRfVCkgdGltZW91dDsKICAgICB9CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5sb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgUHlPYmplY3QgKgorbG9ja19QeVRocmVhZF9hY3F1aXJlX2xvY2sobG9ja29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIF9QeVRpbWVfdCB0aW1lb3V0OworICAgIFB5TG9ja1N0YXR1cyByOworCisgICAgaWYgKGxvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKGFyZ3MsIGt3ZHMsICZ0aW1lb3V0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+bG9ja19sb2NrLCB0aW1lb3V0KTsKICAgICBpZiAociA9PSBQWV9MT0NLX0lOVFIpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTkyLDYgKzIwNCwxMyBAQAogXG5cCiBSZXR1cm4gd2hldGhlciB0aGUgbG9jayBpcyBpbiB0aGUgbG9ja2VkIHN0YXRlLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorbG9ja19yZXByKGxvY2tvYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgJXMgb2JqZWN0IGF0ICVwPiIsCisgICAgICAgIHNlbGYtPmxvY2tlZCA/ICJsb2NrZWQiIDogInVubG9ja2VkIiwgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZik7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBsb2NrX21ldGhvZHNbXSA9IHsKICAgICB7ImFjcXVpcmVfbG9jayIsIChQeUNGdW5jdGlvbilsb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jaywKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgYWNxdWlyZV9kb2N9LApAQCAtMjIzLDcgKzI0Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgKHJlcHJmdW5jKWxvY2tfcmVwciwgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KQEAgLTI3NCw0MSArMjkzLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmxvY2tfYWNxdWlyZShybG9ja29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJibG9ja2luZyIsICJ0aW1lb3V0IiwgTlVMTH07Ci0gICAgaW50IGJsb2NraW5nID0gMTsKLSAgICBkb3VibGUgdGltZW91dCA9IC0xOwotICAgIFBZX1RJTUVPVVRfVCBtaWNyb3NlY29uZHM7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CiAgICAgbG9uZyB0aWQ7CiAgICAgUHlMb2NrU3RhdHVzIHIgPSBQWV9MT0NLX0FDUVVJUkVEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpZDphY3F1aXJlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja2luZywgJnRpbWVvdXQpKQorICAgIGlmIChsb2NrX2FjcXVpcmVfcGFyc2VfYXJncyhhcmdzLCBrd2RzLCAmdGltZW91dCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghYmxvY2tpbmcgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbid0IHNwZWNpZnkgYSB0aW1lb3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHRpbWVvdXQgPCAwICYmIHRpbWVvdXQgIT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IHZhbHVlIG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdGx5IHBvc2l0aXZlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoIWJsb2NraW5nKQotICAgICAgICBtaWNyb3NlY29uZHMgPSAwOwotICAgIGVsc2UgaWYgKHRpbWVvdXQgPT0gLTEpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IC0xOwotICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ICo9IDFlNjsKLSAgICAgICAgaWYgKHRpbWVvdXQgPj0gKGRvdWJsZSkgUFlfVElNRU9VVF9NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbWljcm9zZWNvbmRzID0gKFBZX1RJTUVPVVRfVCkgdGltZW91dDsKLSAgICB9Ci0KICAgICB0aWQgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7CiAgICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID4gMCAmJiB0aWQgPT0gc2VsZi0+cmxvY2tfb3duZXIpIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCA9IHNlbGYtPnJsb2NrX2NvdW50ICsgMTsKQEAgLTMyMCw3ICszMTEsNyBAQAogICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA9IGNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9Ci0gICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCB0aW1lb3V0KTsKICAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKSB7CiAgICAgICAgIGFzc2VydChzZWxmLT5ybG9ja19jb3VudCA9PSAwKTsKICAgICAgICAgc2VsZi0+cmxvY2tfb3duZXIgPSB0aWQ7CkBAIC00NzUsOCArNDY2LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmxvY2tfcmVwcihybG9ja29iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvd25lcj0lbGQgY291bnQ9JWx1PiIsCi0gICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHNlbGYtPnJsb2NrX293bmVyLCBzZWxmLT5ybG9ja19jb3VudCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgJXMgb2JqZWN0IG93bmVyPSVsZCBjb3VudD0lbHUgYXQgJXA+IiwKKyAgICAgICAgc2VsZi0+cmxvY2tfY291bnQgPyAibG9ja2VkIiA6ICJ1bmxvY2tlZCIsCisgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIHNlbGYtPnJsb2NrX293bmVyLAorICAgICAgICBzZWxmLT5ybG9ja19jb3VudCwgc2VsZik7CiB9CiAKIApAQCAtMTM1OSw3ICsxMzUyLDkgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX3RocmVhZCh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKnRpbWVvdXRfbWF4OworICAgIFB5T2JqZWN0ICptLCAqZCwgKnY7CisgICAgZG91YmxlIHRpbWVfbWF4OworICAgIGRvdWJsZSB0aW1lb3V0X21heDsKIAogICAgIC8qIEluaXRpYWxpemUgdHlwZXM6ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmbG9jYWxkdW1teXR5cGUpIDwgMCkKQEAgLTEzNzYsMTAgKzEzNzEsMTQgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRpbWVvdXRfbWF4ID0gUHlGbG9hdF9Gcm9tRG91YmxlKFBZX1RJTUVPVVRfTUFYIC8gMTAwMDAwMCk7Ci0gICAgaWYgKCF0aW1lb3V0X21heCkKKyAgICB0aW1lb3V0X21heCA9IFBZX1RJTUVPVVRfTUFYIC8gMTAwMDAwMDsKKyAgICB0aW1lX21heCA9IGZsb29yKF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfTUFYKSk7CisgICAgdGltZW91dF9tYXggPSBQeV9NSU4odGltZW91dF9tYXgsIHRpbWVfbWF4KTsKKworICAgIHYgPSBQeUZsb2F0X0Zyb21Eb3VibGUodGltZW91dF9tYXgpOworICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVElNRU9VVF9NQVgiLCB0aW1lb3V0X21heCkgPCAwKQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRJTUVPVVRfTUFYIiwgdikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBhIHN5bWJvbGljIGNvbnN0YW50ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggNTIwMjViYi4uNDFhZDVmOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtOSw4ICs5LDggQEAKIAogLyogVENML1RLIFZFUlNJT04gSU5GTzoKIAotICAgIE9ubHkgVGNsL1RrIDguMy4xIGFuZCBsYXRlciBhcmUgc3VwcG9ydGVkLiAgT2xkZXIgdmVyc2lvbnMgYXJlIG5vdAotICAgIHN1cHBvcnRlZC4gVXNlIFB5dGhvbiAyLjYgb3Igb2xkZXIgaWYgeW91IGNhbm5vdCB1cGdyYWRlIHlvdXIKKyAgICBPbmx5IFRjbC9UayA4LjQgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQuICBPbGRlciB2ZXJzaW9ucyBhcmUgbm90CisgICAgc3VwcG9ydGVkLiBVc2UgUHl0aG9uIDMuNCBvciBvbGRlciBpZiB5b3UgY2Fubm90IHVwZ3JhZGUgeW91cgogICAgIFRjbC9UayBsaWJyYXJpZXMuCiAqLwogCkBAIC0yMSw2ICsyMSw3IEBACiAKICovCiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTM2LDEzICszNyw2IEBACiAjZGVmaW5lIENIRUNLX1NJWkUoc2l6ZSwgZWxlbXNpemUpIFwKICAgICAoKHNpemVfdCkoc2l6ZSkgPD0gUHlfTUlOKChzaXplX3QpSU5UX01BWCwgVUlOVF9NQVggLyAoc2l6ZV90KShlbGVtc2l6ZSkpKQogCi0vKiBTdGFydGluZyB3aXRoIFRjbCA4LjQsIG1hbnkgQVBJcyBvZmZlciBjb25zdC1jb3JyZWN0bmVzcy4gIFVuZm9ydHVuYXRlbHksCi0gICBtYWtpbmcgX3RraW50ZXIgY29ycmVjdCBmb3IgdGhpcyBBUEkgbWVhbnMgdG8gYnJlYWsgZWFybGllcgotICAgdmVyc2lvbnMuIFVTRV9DT01QQVRfQ09OU1QgYWxsb3dzIHRvIG1ha2UgX3RraW50ZXIgd29yayB3aXRoIGJvdGggOC40IGFuZAotICAgZWFybGllciB2ZXJzaW9ucy4gT25jZSBUY2wgcmVsZWFzZXMgYmVmb3JlIDguNCBkb24ndCBuZWVkIHRvIGJlIHN1cHBvcnRlZAotICAgYW55bW9yZSwgdGhpcyBzaG91bGQgZ28uICovCi0jZGVmaW5lIFVTRV9DT01QQVRfQ09OU1QKLQogLyogSWYgVGNsIGlzIGNvbXBpbGVkIGZvciB0aHJlYWRzLCB3ZSBtdXN0IGFsc28gZGVmaW5lIFRDTF9USFJFQUQuIFdlIGRlZmluZQogICAgaXQgYWx3YXlzOyBpZiBUY2wgaXMgbm90IHRocmVhZGVkLCB0aGUgdGhyZWFkIGZ1bmN0aW9ucyBpbgogICAgVGNsIGFyZSBlbXB0eS4gICovCkBAIC01OCwxNSArNTIsOCBAQAogCiAjaW5jbHVkZSAidGtpbnRlci5oIgogCi0vKiBGb3IgVGNsIDguMiBhbmQgOC4zLCBDT05TVCogaXMgbm90IGRlZmluZWQgKGV4Y2VwdCBvbiBDeWd3aW4pLiAqLwotI2lmbmRlZiBDT05TVDg0X1JFVFVSTgotI2RlZmluZSBDT05TVDg0X1JFVFVSTgotI3VuZGVmIENPTlNUCi0jZGVmaW5lIENPTlNUCi0jZW5kaWYKLQotI2lmIFRLX0hFWF9WRVJTSU9OIDwgMHgwODAzMDIwMQotI2Vycm9yICJUayBvbGRlciB0aGFuIDguMy4xIG5vdCBzdXBwb3J0ZWQiCisjaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDQwMjAwCisjZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC40IG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAogI2lmIFRLX0hFWF9WRVJTSU9OID49IDB4MDgwNTAyMDggJiYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDYwMDAwIHx8IFwKQEAgLTExNCw3ICsxMDEsNjUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8Y29uaW8uaD4KICNkZWZpbmUgV0FJVF9GT1JfU1RESU4KKworc3RhdGljIFB5T2JqZWN0ICoKK19nZXRfdGNsX2xpYl9wYXRoKCkKK3sKKyAgICBzdGF0aWMgUHlPYmplY3QgKnRjbF9saWJyYXJ5X3BhdGggPSBOVUxMOworICAgIHN0YXRpYyBpbnQgYWxyZWFkeV9jaGVja2VkID0gMDsKKworICAgIGlmIChhbHJlYWR5X2NoZWNrZWQgPT0gMCkgeworICAgICAgICBQeU9iamVjdCAqcHJlZml4OworICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0X2J1ZjsKKyAgICAgICAgaW50IHN0YXRfcmV0dXJuX3ZhbHVlOworCisgICAgICAgIHByZWZpeCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKTsKKyAgICAgICAgaWYgKHByZWZpeCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENoZWNrIGV4cGVjdGVkIGxvY2F0aW9uIGZvciBhbiBpbnN0YWxsZWQgUHl0aG9uIGZpcnN0ICovCisgICAgICAgIHRjbF9saWJyYXJ5X3BhdGggPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiXFx0Y2xcXHRjbCIgVENMX1ZFUlNJT04pOworICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gUHlVbmljb2RlX0NvbmNhdChwcmVmaXgsIHRjbF9saWJyYXJ5X3BhdGgpOworICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdGF0X3JldHVybl92YWx1ZSA9IF9QeV9zdGF0KHRjbF9saWJyYXJ5X3BhdGgsICZzdGF0X2J1Zik7CisgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMikgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICAvKiBpbnN0YWxsIGxvY2F0aW9uIGRvZXNuJ3QgZXhpc3QsIHJlc2V0IGVycm5vIGFuZCBzZWUgaWYKKyAgICAgICAgICAgICAgIHdlJ3JlIGEgcmVwb3NpdG9yeSBidWlsZCAqLworICAgICAgICAgICAgZXJybm8gPSAwOworI2lmZGVmIFB5X1RDTFRLX0RJUgorICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVENMVEtfRElSICJcXGxpYlxcdGNsIiBUQ0xfVkVSU0lPTik7CisgICAgICAgICAgICBpZiAodGNsX2xpYnJhcnlfcGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0X3JldHVybl92YWx1ZSA9IF9QeV9zdGF0KHRjbF9saWJyYXJ5X3BhdGgsICZzdGF0X2J1Zik7CisgICAgICAgICAgICBpZiAoc3RhdF9yZXR1cm5fdmFsdWUgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIC8qIHRjbHRrRGlyIGZvciBhIHJlcG9zaXRvcnkgYnVpbGQgZG9lc24ndCBleGlzdCBlaXRoZXIsCisgICAgICAgICAgICAgICAgICAgcmVzZXQgZXJybm8gYW5kIGxlYXZlIFRjbCB0byBpdHMgb3duIGRldmljZXMgKi8KKyAgICAgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CisgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CiAjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBhbHJlYWR5X2NoZWNrZWQgPSAxOworICAgIH0KKyAgICByZXR1cm4gdGNsX2xpYnJhcnlfcGF0aDsKK30KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0zODUsMTAgKzQzMCwxMCBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TcGxpdChjaGFyICpsaXN0KQorU3BsaXQoY29uc3QgY2hhciAqbGlzdCkKIHsKICAgICBpbnQgYXJnYzsKLSAgICBjaGFyICoqYXJndjsKKyAgICBjb25zdCBjaGFyICoqYXJndjsKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmIChsaXN0ID09IE5VTEwpIHsKQEAgLTQzMiw3ICs0NzcsNyBAQAogU3BsaXRPYmooUHlPYmplY3QgKmFyZykKIHsKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGludCBpLCBzaXplOworICAgICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAgICAgICAgIFB5T2JqZWN0ICplbGVtLCAqbmV3ZWxlbSwgKnJlc3VsdDsKIAogICAgICAgICBzaXplID0gUHlUdXBsZV9TaXplKGFyZyk7CkBAIC00NDgsNyArNDkzLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgaW50IGs7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrOwogICAgICAgICAgICAgICAgIGlmIChuZXdlbGVtID09IGVsZW0pIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2VsZW0pOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ2OCw5ICs1MTMsMjkgQEAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCwgcmV0dXJuaW5nIGFyZy4gKi8KICAgICB9CisgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CisKKyAgICAgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShhcmcpOworICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhzaXplKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgLyogUmVjdXJzaXZlbHkgaW52b2tlIFNwbGl0T2JqIGZvciBhbGwgbGlzdCBpdGVtcy4gKi8KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBlbGVtID0gUHlMaXN0X0dFVF9JVEVNKGFyZywgaSk7CisgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CisgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKLSAgICAgICAgY2hhciAqKmFyZ3Y7CisgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgICAgICBjaGFyICpsaXN0ID0gUHlVbmljb2RlX0FzVVRGOChhcmcpOwogCiAgICAgICAgIGlmIChsaXN0ID09IE5VTEwgfHwKQEAgLTQ4NSw3ICs1NTAsNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKICAgICAgICAgaW50IGFyZ2M7Ci0gICAgICAgIGNoYXIgKiphcmd2OworICAgICAgICBjb25zdCBjaGFyICoqYXJndjsKICAgICAgICAgY2hhciAqbGlzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcoYXJnKTsKIAogICAgICAgICBpZiAoVGNsX1NwbGl0TGlzdCgoVGNsX0ludGVycCAqKU5VTEwsIGxpc3QsICZhcmdjLCAmYXJndikgIT0gVENMX09LKSB7CkBAIC01MDIsNiArNTY3LDE0IEBACiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF90a2ludGVyCitjbGFzcyBfdGtpbnRlci50a2FwcCAiVGthcHBPYmplY3QgKiIgIiZUa2FwcF9UeXBlX3NwZWMiCitjbGFzcyBfdGtpbnRlci5UY2xfT2JqICJQeVRjbE9iamVjdCAqIiAiJlB5VGNsT2JqZWN0X1R5cGVfc3BlYyIKK2NsYXNzIF90a2ludGVyLnRrdGltZXJ0b2tlbiAiVGt0dE9iamVjdCAqIiAiJlRrdHRfVHlwZV9zcGVjIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjFlYmYxNWMxNjJlZTIyOV0qLworCiAvKioqKiBUa2FwcCBPYmplY3QgKioqKi8KIAogI2lmbmRlZiBXSVRIX0FQUElOSVQKQEAgLTU1Miw4ICs2MjUsOSBAQAogc3RhdGljIHZvaWQgRGlzYWJsZUV2ZW50SG9vayh2b2lkKTsgLyogRm9yd2FyZCAqLwogCiBzdGF0aWMgVGthcHBPYmplY3QgKgotVGthcHBfTmV3KGNoYXIgKnNjcmVlbk5hbWUsIGNoYXIgKmNsYXNzTmFtZSwKLSAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsIGNoYXIgKnVzZSkKK1RrYXBwX05ldyhjb25zdCBjaGFyICpzY3JlZW5OYW1lLCBjb25zdCBjaGFyICpjbGFzc05hbWUsCisgICAgICAgICAgaW50IGludGVyYWN0aXZlLCBpbnQgd2FudG9iamVjdHMsIGludCB3YW50VGssIGludCBzeW5jLAorICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSkKIHsKICAgICBUa2FwcE9iamVjdCAqdjsKICAgICBjaGFyICphcmd2MDsKQEAgLTYxMCw3ICs2ODQsNyBAQAogICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwgInRjbF9pbnRlcmFjdGl2ZSIsICIwIiwgVENMX0dMT0JBTF9PTkxZKTsKIAogICAgIC8qIFRoaXMgaXMgdXNlZCB0byBnZXQgdGhlIGFwcGxpY2F0aW9uIGNsYXNzIGZvciBUayA0LjEgYW5kIHVwICovCi0gICAgYXJndjAgPSAoY2hhciopYXR0ZW1wdGNrYWxsb2Moc3RybGVuKGNsYXNzTmFtZSkgKyAxKTsKKyAgICBhcmd2MCA9IChjaGFyKilQeU1lbV9NYWxsb2Moc3RybGVuKGNsYXNzTmFtZSkgKyAxKTsKICAgICBpZiAoIWFyZ3YwKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKQEAgLTYyMSw3ICs2OTUsNyBAQAogICAgIGlmIChQeV9JU1VQUEVSKFB5X0NIQVJNQVNLKGFyZ3YwWzBdKSkpCiAgICAgICAgIGFyZ3YwWzBdID0gUHlfVE9MT1dFUihQeV9DSEFSTUFTSyhhcmd2MFswXSkpOwogICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLCAiYXJndjAiLCBhcmd2MCwgVENMX0dMT0JBTF9PTkxZKTsKLSAgICBja2ZyZWUoYXJndjApOworICAgIFB5TWVtX0ZyZWUoYXJndjApOwogCiAgICAgaWYgKCEgd2FudFRrKSB7CiAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLApAQCAtNjM3LDE0ICs3MTEsMTQgQEAKICAgICAvKiBzb21lIGluaXRpYWwgYXJndW1lbnRzIG5lZWQgdG8gYmUgaW4gYXJndiAqLwogICAgIGlmIChzeW5jIHx8IHVzZSkgewogICAgICAgICBjaGFyICphcmdzOwotICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogCiAgICAgICAgIGlmIChzeW5jKQogICAgICAgICAgICAgbGVuICs9IHNpemVvZiAiLXN5bmMiOwogICAgICAgICBpZiAodXNlKQotICAgICAgICAgICAgbGVuICs9IHN0cmxlbih1c2UpICsgc2l6ZW9mICItdXNlICI7CisgICAgICAgICAgICBsZW4gKz0gc3RybGVuKHVzZSkgKyBzaXplb2YgIi11c2UgIjsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCi0gICAgICAgIGFyZ3MgPSAoY2hhciopYXR0ZW1wdGNrYWxsb2MobGVuKTsKKyAgICAgICAgYXJncyA9IChjaGFyKilQeU1lbV9NYWxsb2MobGVuKTsKICAgICAgICAgaWYgKCFhcmdzKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtNjYyLDkgKzczNiwzNiBAQAogICAgICAgICB9CiAKICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsICJhcmd2IiwgYXJncywgVENMX0dMT0JBTF9PTkxZKTsKLSAgICAgICAgY2tmcmVlKGFyZ3MpOworICAgICAgICBQeU1lbV9GcmVlKGFyZ3MpOwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpzdHJfcGF0aDsKKyAgICAgICAgUHlPYmplY3QgKnV0ZjhfcGF0aDsKKyAgICAgICAgRFdPUkQgcmV0OworCisgICAgICAgIHJldCA9IEdldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKCFyZXQgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfRU5WVkFSX05PVF9GT1VORCkgeworICAgICAgICAgICAgc3RyX3BhdGggPSBfZ2V0X3RjbF9saWJfcGF0aCgpOworICAgICAgICAgICAgaWYgKHN0cl9wYXRoID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cl9wYXRoICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB1dGY4X3BhdGggPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHN0cl9wYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAodXRmOF9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgInRjbF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcodXRmOF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDTF9HTE9CQUxfT05MWSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHV0ZjhfcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChUY2xfQXBwSW5pdCh2LT5pbnRlcnApICE9IFRDTF9PSykgewogICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKil2KTsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCkBAIC05MjksOSArMTAzMCwxNCBAQAogewogICAgIFRjbF9PYmogKnJlc3VsdDsKIAotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHZhbHVlKSkKKyAgICBpZiAoUHlCeXRlc19DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodmFsdWUpID49IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiYnl0ZXMgb2JqZWN0IGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gVGNsX05ld0J5dGVBcnJheU9iaigodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KVB5Qnl0ZXNfR0VUX1NJWkUodmFsdWUpKTsKKyAgICB9CiAKICAgICBpZiAoUHlCb29sX0NoZWNrKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFRjbF9OZXdCb29sZWFuT2JqKFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSkpOwpAQCAtOTcwLDI0ICsxMDc2LDI4IEBACiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodmFsdWUpKQogICAgICAgICByZXR1cm4gVGNsX05ld0RvdWJsZU9iaihQeUZsb2F0X0FTX0RPVUJMRSh2YWx1ZSkpOwogCi0gICAgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpIHx8IFB5TGlzdF9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgVGNsX09iaiAqKmFyZ3Y7CiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKIAotICAgICAgICBzaXplID0gUHlUdXBsZV9TaXplKHZhbHVlKTsKKyAgICAgICAgc2l6ZSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRSh2YWx1ZSk7CiAgICAgICAgIGlmIChzaXplID09IDApCiAgICAgICAgICAgICByZXR1cm4gVGNsX05ld0xpc3RPYmooMCwgTlVMTCk7CiAgICAgICAgIGlmICghQ0hFQ0tfU0laRShzaXplLCBzaXplb2YoVGNsX09iaiAqKSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidHVwbGUgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfQ2hlY2sodmFsdWUpID8gInR1cGxlIGlzIHRvbyBsb25nIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYXJndiA9IChUY2xfT2JqICoqKSBhdHRlbXB0Y2thbGxvYygoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfT2JqICopKTsKLSAgICAgICAgaWYoIWFyZ3YpCi0gICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGFyZ3YgPSAoVGNsX09iaiAqKikgUHlNZW1fTWFsbG9jKCgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9PYmogKikpOworICAgICAgICBpZiAoIWFyZ3YpIHsKKyAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgYXJndltpXSA9IEFzT2JqKFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSxpKSk7Ci0gICAgICAgIHJlc3VsdCA9IFRjbF9OZXdMaXN0T2JqKFB5VHVwbGVfU2l6ZSh2YWx1ZSksIGFyZ3YpOwotICAgICAgICBja2ZyZWUoRlJFRUNBU1QgYXJndik7CisgICAgICAgICAgYXJndltpXSA9IEFzT2JqKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTSh2YWx1ZSxpKSk7CisgICAgICAgIHJlc3VsdCA9IFRjbF9OZXdMaXN0T2JqKChpbnQpc2l6ZSwgYXJndik7CisgICAgICAgIFB5TWVtX0ZyZWUoYXJndik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDEyLDkgKzExMjIsOSBAQAogICAgICAgICB9CiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2YWx1ZSk7CiAgICAgICAgIGlmIChraW5kID09IHNpemVvZihUY2xfVW5pQ2hhcikpCi0gICAgICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIFRjbF9OZXdVbmljb2RlT2JqKGluYnVmLCAoaW50KXNpemUpOwogICAgICAgICBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7Ci0gICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopYXR0ZW1wdGNrYWxsb2MoYWxsb2NzaXplKTsKKyAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilQeU1lbV9NYWxsb2MoYWxsb2NzaXplKTsKICAgICAgICAgLyogRWxzZSBvdmVyZmxvdyBvY2N1cnJlZCwgYW5kIHdlIHRha2UgdGhlIG5leHQgZXhpdCAqLwogICAgICAgICBpZiAoIW91dGJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEwMzEsMTQgKzExNDEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIGFib3ZlIHRoZSByYW5nZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVSswMDAwLVUrRkZGRikgYWxsb3dlZCBieSBUY2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7Ci0gICAgICAgICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBvdXRidWZbaV0gPSBjaDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIHNpemUpOwotICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKKyAgICAgICAgcmVzdWx0ID0gVGNsX05ld1VuaWNvZGVPYmoob3V0YnVmLCAoaW50KXNpemUpOworICAgICAgICBQeU1lbV9GcmVlKG91dGJ1Zik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMDY3LDcgKzExNzcsNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoYm9vbFZhbHVlKTsKIH0KIAotI2lmZGVmIFRDTF9XSURFX0lOVF9UWVBFCiBzdGF0aWMgUHlPYmplY3QqCiBmcm9tV2lkZUludE9iaihQeU9iamVjdCogdGthcHAsIFRjbF9PYmogKnZhbHVlKQogewpAQCAtMTA4NCw3ICsxMTkzLDYgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSUJUT01NQU1USAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTE1Nyw3ICsxMjY1LDYgQEAKICAgICAgICAgICAgZmFsbCB0aHJvdWdoIHRvIHdpZGVJbnQgaGFuZGxpbmcuICovCiAgICAgfQogCi0jaWZkZWYgVENMX1dJREVfSU5UX1RZUEUKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5JbnRUeXBlIHx8CiAgICAgICAgIHZhbHVlLT50eXBlUHRyID09IGFwcC0+V2lkZUludFR5cGUpIHsKICAgICAgICAgcmVzdWx0ID0gZnJvbVdpZGVJbnRPYmoodGthcHAsIHZhbHVlKTsKQEAgLTExNjcsNyArMTI3NCw2IEBACiAgICAgICAgIC8qIElmIHRoZXJlIGlzIGFuIGVycm9yIGluIHRoZSB3aWRlSW50IGNvbnZlcnNpb24sCiAgICAgICAgICAgIGZhbGwgdGhyb3VnaCB0byBiaWdudW0gaGFuZGxpbmcuICovCiAgICAgfQotI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICiAgICAgaWYgKHZhbHVlLT50eXBlUHRyID09IGFwcC0+SW50VHlwZSB8fApAQCAtMTI1OCw3ICsxMzY0LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKQogICAgICAgICBUY2xfRGVjclJlZkNvdW50KG9ianZbaV0pOwogICAgIGlmIChvYmp2ICE9IG9ialN0b3JlKQotICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb2Jqdik7CisgICAgICAgIFB5TWVtX0ZyZWUob2Jqdik7CiB9CiAKIC8qIENvbnZlcnQgUHl0aG9uIG9iamVjdHMgdG8gVGNsIG9iamVjdHMuIFRoaXMgbXVzdCBoYXBwZW4gaW4gdGhlCkBAIC0xMjcyLDcgKzEzNzgsNyBAQAogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CiAKLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgeworICAgIGVsc2UgaWYgKCEoUHlUdXBsZV9DaGVjayhhcmdzKSB8fCBQeUxpc3RfQ2hlY2soYXJncykpKSB7CiAgICAgICAgIG9ianZbMF0gPSBBc09iaihhcmdzKTsKICAgICAgICAgaWYgKG9ianZbMF0gPT0gMCkKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTEyODAsMTQgKzEzODYsMTYgQEAKICAgICAgICAgVGNsX0luY3JSZWZDb3VudChvYmp2WzBdKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIG9iamMgPSBQeVR1cGxlX1NpemUoYXJncyk7CisgICAgICAgIG9iamMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoYXJncyk7CiAKICAgICAgICAgaWYgKG9iamMgPiBBUkdTWikgewogICAgICAgICAgICAgaWYgKCFDSEVDS19TSVpFKG9iamMsIHNpemVvZihUY2xfT2JqICopKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidHVwbGUgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSA/ICJ0dXBsZSBpcyB0b28gbG9uZyIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgaXMgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG9ianYgPSAoVGNsX09iaiAqKilhdHRlbXB0Y2thbGxvYygoKHNpemVfdClvYmpjKSAqIHNpemVvZihUY2xfT2JqICopKTsKKyAgICAgICAgICAgIG9ianYgPSAoVGNsX09iaiAqKilQeU1lbV9NYWxsb2MoKChzaXplX3Qpb2JqYykgKiBzaXplb2YoVGNsX09iaiAqKSk7CiAgICAgICAgICAgICBpZiAob2JqdiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBvYmpjID0gMDsKQEAgLTEyOTYsNyArMTQwNCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCBpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgIG9iamMgPSBpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMxMSwxMCArMTQxOSwxMCBAQAogICAgICAgICAgICAgVGNsX0luY3JSZWZDb3VudChvYmp2W2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICAqcG9iamMgPSBvYmpjOworICAgICpwb2JqYyA9IChpbnQpb2JqYzsKICAgICByZXR1cm4gb2JqdjsKIGZpbmFsbHk6Ci0gICAgVGthcHBfQ2FsbERlYWxsb2NBcmdzKG9ianYsIG9ialN0b3JlLCBvYmpjKTsKKyAgICBUa2FwcF9DYWxsRGVhbGxvY0FyZ3Mob2Jqdiwgb2JqU3RvcmUsIChpbnQpb2JqYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE0NzQsMTYgKzE1ODIsMjEgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5ldmFsCisKKyAgICBzY3JpcHQ6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9ldmFsX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnNjcmlwdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNGI3OTgzMWY3MDBkZWEwIGlucHV0PTQ4MTQ4NDEyM2E0NTVmMjJdKi8KIHsKLSAgICBjaGFyICpzY3JpcHQ7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpldmFsIiwgJnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JpcHQpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNDkxLDIzICsxNjA0LDI4IEBACiAgICAgZXJyID0gVGNsX0V2YWwoVGthcHBfSW50ZXJwKHNlbGYpLCBzY3JpcHQpOwogICAgIEVOVEVSX09WRVJMQVAKICAgICBpZiAoZXJyID09IFRDTF9FUlJPUikKLSAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICBlbHNlCiAgICAgICAgIHJlcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKFRrYXBwX1Jlc3VsdChzZWxmKSk7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5ldmFsZmlsZQorCisgICAgZmlsZU5hbWU6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXZhbEZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZmlsZU5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjNiZTg4ZGNlZTRmMTFkMyBpbnB1dD04NzNhYjcwN2U1ZTk0N2UxXSovCiB7Ci0gICAgY2hhciAqZmlsZU5hbWU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChmaWxlTmFtZSk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE1MTUsMjMgKzE2MzMsMjggQEAKICAgICBlcnIgPSBUY2xfRXZhbEZpbGUoVGthcHBfSW50ZXJwKHNlbGYpLCBmaWxlTmFtZSk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnJlY29yZAorCisgICAgc2NyaXB0OiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1JlY29yZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZmUwOGEwMDYxNzMwZGYgaW5wdXQ9YzBiMGRiNWEyMTQxMmNhY10qLwogewotICAgIGNoYXIgKnNjcmlwdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnJlY29yZCIsICZzY3JpcHQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgoc2NyaXB0KTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTUzOSwyMCArMTY2MiwyNSBAQAogICAgIGVyciA9IFRjbF9SZWNvcmRBbmRFdmFsKFRrYXBwX0ludGVycChzZWxmKSwgc2NyaXB0LCBUQ0xfTk9fRVZBTCk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9BZGRFcnJvckluZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm1zZzsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmFkZGVycmluZm8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczphZGRlcnJvcmluZm8iLCAmbXNnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbXNnOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2FkZGVycmluZm9faW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbXNnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlMjIyZWUyMDUwZWIzNTcgaW5wdXQ9NDk3MTM5OTMxN2Q0YzEzNl0qLworewogICAgIENIRUNLX1NUUklOR19MRU5HVEgobXNnKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTU4NSw2ICsxNzEzLDE1IEBACiB9IFZhckV2ZW50OwogI2VuZGlmCiAKKy8qW3B5dGhvbl0KKworY2xhc3MgdmFybmFtZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdjb25zdCBjaGFyIConCisgICAgY29udmVydGVyID0gJ3Zhcm5hbWVfY29udmVydGVyJworCitbcHl0aG9uXSovCisvKltweXRob24gY2hlY2tzdW06IGRhMzlhM2VlNWU2YjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDldKi8KKwogc3RhdGljIGludAogdmFybmFtZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmluLCB2b2lkICpfb3V0KQogewpAQCAtMTU5Niw4ICsxNzMzLDggQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHMgPSBQeUJ5dGVzX0FzU3RyaW5nKGluKTsKLSAgICAgICAgaWYgKHN0cmxlbihzKSAhPSBQeUJ5dGVzX1NpemUoaW4pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm51bGwgYnl0ZSBpbiBieXRlcyBvYmplY3QiKTsKKyAgICAgICAgaWYgKHN0cmxlbihzKSAhPSAoc2l6ZV90KVB5Qnl0ZXNfU2l6ZShpbikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAqb3V0ID0gczsKQEAgLTE2MTMsOCArMTc1MCw4IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmxlbihzKSAhPSBzaXplKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm51bGwgY2hhcmFjdGVyIGluIHN0cmluZyIpOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3Qpc2l6ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgKm91dCA9IHM7CkBAIC0xNjY3LDcgKzE4MDQsNiBAQAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIFRrYXBwT2JqZWN0ICpzZWxmID0gKFRrYXBwT2JqZWN0KilzZWxmcHRyOwogICAgICAgICBWYXJFdmVudCAqZXY7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMsICpleGNfdHlwZSwgKmV4Y192YWw7CiAgICAgICAgIFRjbF9Db25kaXRpb24gY29uZCA9IE5VTEw7CkBAIC0xODYyLDMxICsxOTk4LDM5IEBACiAKIC8qKiBUY2wgdG8gUHl0aG9uICoqLwogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5nZXRpbnQKKworICAgIGFyZzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9HZXRJbnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZ2V0aW50KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4Y2YyOTNmYWUzMDdjZmUgaW5wdXQ9MDM0MDI2OTk3YzViOTFmOF0qLwogewogICAgIGNoYXIgKnM7Ci0jaWYgZGVmaW5lZChUQ0xfV0lERV9JTlRfVFlQRSkgfHwgZGVmaW5lZChIQVZFX0xJQlRPTU1BTVRIKQogICAgIFRjbF9PYmogKnZhbHVlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0jZWxzZQotICAgIGludCBpbnRWYWx1ZTsKLSNlbmRpZgogCi0gICAgaWYgKFB5VHVwbGVfU2l6ZShhcmdzKSA9PSAxKSB7Ci0gICAgICAgIFB5T2JqZWN0KiBvID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICByZXR1cm4gbzsKLSAgICAgICAgfQorICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdldGludCIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKLSNpZiBkZWZpbmVkKFRDTF9XSURFX0lOVF9UWVBFKSB8fCBkZWZpbmVkKEhBVkVfTElCVE9NTUFNVEgpCi0gICAgdmFsdWUgPSBUY2xfTmV3U3RyaW5nT2JqKHMsIC0xKTsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisKKyAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgeworICAgICAgICB2YWx1ZSA9ICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlOworICAgICAgICBUY2xfSW5jclJlZkNvdW50KHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpnZXRpbnQiLCAmcykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKKyAgICAgICAgdmFsdWUgPSBUY2xfTmV3U3RyaW5nT2JqKHMsIC0xKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICB9CiAgICAgLyogRG9uJ3QgdXNlIFRjbF9HZXRJbnQoKSBiZWNhdXNlIGl0IHJldHVybnMgYW1iaWd1b3VzIHJlc3VsdCBmb3IgdmFsdWUKICAgICAgICBpbiByYW5nZXMgLTIqKjMyLi4tMioqMzEtMSBhbmQgMioqMzEuLjIqKjMyLTEgKG9uIDMyLWJpdCBwbGF0Zm9ybSkuCiAKQEAgLTE4OTQsNDMgKzIwMzgsNjcgQEAKICAgICAgICB2YWx1ZSBpbiByYW5nZXMgLTIqKjY0Li4tMioqNjMtMSBhbmQgMioqNjMuLjIqKjY0LTEgKG9uIDMyLWJpdCBwbGF0Zm9ybSkuCiAgICAgICovCiAjaWZkZWYgSEFWRV9MSUJUT01NQU1USAotICAgIHJlc3VsdCA9IGZyb21CaWdudW1PYmooc2VsZiwgdmFsdWUpOworICAgIHJlc3VsdCA9IGZyb21CaWdudW1PYmooKFB5T2JqZWN0ICopc2VsZiwgdmFsdWUpOwogI2Vsc2UKLSAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaihzZWxmLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gZnJvbVdpZGVJbnRPYmooKFB5T2JqZWN0ICopc2VsZiwgdmFsdWUpOwogI2VuZGlmCiAgICAgVGNsX0RlY3JSZWZDb3VudCh2YWx1ZSk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMIHx8IFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIGlmIChUY2xfR2V0SW50KFRrYXBwX0ludGVycChzZWxmKSwgcywgJmludFZhbHVlKSA9PSBUQ0xfT0spCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW50VmFsdWUpOwotI2VuZGlmCi0gICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmdldGRvdWJsZQorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldERvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9nZXRkb3VibGUoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzUyYjEzOGJkOGI5NTZiOSBpbnB1dD0yMjAxNTcyOWNlOWVmN2Y4XSovCiB7CiAgICAgY2hhciAqczsKICAgICBkb3VibGUgdjsKIAotICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykgPT0gMSkgewotICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKTsKLSAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihvKTsKLSAgICAgICAgICAgIHJldHVybiBvOwotICAgICAgICB9CisgICAgaWYgKFB5RmxvYXRfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdldGRvdWJsZSIsICZzKSkKKworICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9GbG9hdChhcmcpOworICAgIH0KKworICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChUY2xfR2V0RG91YmxlRnJvbU9iaihUa2FwcF9JbnRlcnAoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2KSA9PSBUQ0xfRVJST1IpCisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6Z2V0ZG91YmxlIiwgJnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIGlmIChUY2xfR2V0RG91YmxlKFRrYXBwX0ludGVycChzZWxmKSwgcywgJnYpID09IFRDTF9FUlJPUikKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImQiLCB2KTsKKyAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbgorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldEJvb2xlYW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitfdGtpbnRlcl90a2FwcF9nZXRib29sZWFuKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyNmE5YWU0NDU4MjFkOTEgaW5wdXQ9N2YxMTI0OGVmOGY4Nzc2ZV0qLwogewogICAgIGNoYXIgKnM7CiAgICAgaW50IHY7CkBAIC0xOTQzLDcgKzIxMTEsNyBAQAogICAgICAgICBpZiAoVGNsX0dldEJvb2xlYW5Gcm9tT2JqKFRrYXBwX0ludGVycChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyh2KTsKICAgICB9CiAKQEAgLTE5NTEsMjAgKzIxMTksMjUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBpZiAoVGNsX0dldEJvb2xlYW4oVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyh2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZXhwcnN0cmluZworCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByU3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWRhMzIzZDNlZDBhYmIxIGlucHV0PWZhNzhmNzUxYWZiMmYyMWJdKi8KIHsKLSAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZXhwcnN0cmluZyIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xOTcyLDI0ICsyMTQ1LDI5IEBACiAgICAgcmV0dmFsID0gVGNsX0V4cHJTdHJpbmcoVGthcHBfSW50ZXJwKHNlbGYpLCBzKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZXhwcmxvbmcKKworICAgIHM6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXhwckxvbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZDZhNDZiNjNjNmViY2Y5IGlucHV0PTExYmQ3ZWVlMGM1N2I0ZGNdKi8KIHsKLSAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCByZXR2YWw7CiAgICAgbG9uZyB2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJsb25nIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE5OTcsMjMgKzIxNzUsMjkgQEAKICAgICByZXR2YWwgPSBUY2xfRXhwckxvbmcoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdik7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgibCIsIHYpOworICAgICAgICByZXMgPSBQeUxvbmdfRnJvbUxvbmcodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByZG91YmxlCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJEb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZV9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmNzhkZjEwODFlYTQxNTggaW5wdXQ9ZmYwMmJjMTE3OTg4MzJkNV0qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgZG91YmxlIHY7CiAgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByZG91YmxlIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoIlRrYXBwX0V4cHJEb3VibGUiLCByZXR1cm4gMCkKQEAgLTIwMjIsNjEgKzIyMDYsNzQgQEAKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmV0dmFsKQogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiZCIsIHYpOworICAgICAgICByZXMgPSBQeUZsb2F0X0Zyb21Eb3VibGUodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByYm9vbGVhbgorCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByQm9vbGVhbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiMjgwMzhjMjI4ODczMTEgaW5wdXQ9YzhjNjYwMjJiZGI4ZDVkM10qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKICAgICBpbnQgdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByYm9vbGVhbiIsICZzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKICAgICBFTlRFUl9UQ0wKICAgICByZXR2YWwgPSBUY2xfRXhwckJvb2xlYW4oVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdik7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChyZXR2YWwgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaSIsIHYpOworICAgICAgICByZXMgPSBQeUxvbmdfRnJvbUxvbmcodik7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCiAKIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuc3BsaXRsaXN0CisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfU3BsaXRMaXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3NwbGl0bGlzdChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xM2I1MWQzNDM4NmQzNmZiIGlucHV0PTJiMmUxMzM1MWUzYzBiNTNdKi8KIHsKICAgICBjaGFyICpsaXN0OwogICAgIGludCBhcmdjOwotICAgIGNoYXIgKiphcmd2OwotICAgIFB5T2JqZWN0ICphcmcsICp2OworICAgIGNvbnN0IGNoYXIgKiphcmd2OworICAgIFB5T2JqZWN0ICp2OwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNwbGl0bGlzdCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgb2JqYzsKICAgICAgICAgVGNsX09iaiAqKm9ianY7CiAgICAgICAgIGlmIChUY2xfTGlzdE9iakdldEVsZW1lbnRzKFRrYXBwX0ludGVycChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeVRjbE9iamVjdCopYXJnKS0+dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpjLCAmb2JqdikgPT0gVENMX0VSUk9SKSB7Ci0gICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgICAgICB9CiAgICAgICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhvYmpjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKHNlbGYsIG9ianZbaV0pOworICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7CiAgICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjA4OCwxNSArMjI4NSwxOCBAQAogICAgICAgICBQeV9JTkNSRUYoYXJnKTsKICAgICAgICAgcmV0dXJuIGFyZzsKICAgICB9CisgICAgaWYgKFB5TGlzdF9DaGVjayhhcmcpKSB7CisgICAgICAgIHJldHVybiBQeVNlcXVlbmNlX1R1cGxlKGFyZyk7CisgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpzcGxpdGxpc3QiLCAidXRmLTgiLCAmbGlzdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJldDpzcGxpdGxpc3QiLCAidXRmLTgiLCAmbGlzdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChsaXN0KTsKICAgICBpZiAoVGNsX1NwbGl0TGlzdChUa2FwcF9JbnRlcnAoc2VsZiksIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgJmFyZ2MsICZhcmd2KSA9PSBUQ0xfRVJST1IpICB7CiAgICAgICAgIFB5TWVtX0ZyZWUobGlzdCk7Ci0gICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICB9CiAKICAgICBpZiAoISh2ID0gUHlUdXBsZV9OZXcoYXJnYykpKQpAQCAtMjExNywxNCArMjMxNywyMSBAQAogICAgIHJldHVybiB2OwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5zcGxpdAorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1NwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3NwbGl0KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwOGFkODMyMzYzZmFjZmQgaW5wdXQ9YTFjNzgzNDllYWNhYTE0MF0qLwogewotICAgIFB5T2JqZWN0ICphcmcsICp2OworICAgIFB5T2JqZWN0ICp2OwogICAgIGNoYXIgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c3BsaXQiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VGNsT2JqZWN0X0NoZWNrKGFyZykpIHsKICAgICAgICAgVGNsX09iaiAqdmFsdWUgPSAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZTsKICAgICAgICAgaW50IG9iamM7CkBAIC0yMTMyLDE2ICsyMzM5LDE2IEBACiAgICAgICAgIGludCBpOwogICAgICAgICBpZiAoVGNsX0xpc3RPYmpHZXRFbGVtZW50cyhUa2FwcF9JbnRlcnAoc2VsZiksIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqYywgJm9ianYpID09IFRDTF9FUlJPUikgewotICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooc2VsZiwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9iamMgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CiAgICAgICAgIGlmIChvYmpjID09IDEpCi0gICAgICAgICAgICByZXR1cm4gRnJvbU9iaihzZWxmLCBvYmp2WzBdKTsKKyAgICAgICAgICAgIHJldHVybiBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdlswXSk7CiAgICAgICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhvYmpjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKHNlbGYsIG9ianZbaV0pOworICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7CiAgICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjE0OSwxMCArMjM1NiwxMCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmcpKQorICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykgfHwgUHlMaXN0X0NoZWNrKGFyZykpCiAgICAgICAgIHJldHVybiBTcGxpdE9iaihhcmcpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpzcGxpdCIsICJ1dGYtOCIsICZsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImV0OnNwbGl0IiwgInV0Zi04IiwgJmxpc3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGxpc3QpOwogICAgIHYgPSBTcGxpdChsaXN0KTsKQEAgLTIxODMsNyArMjM5MCw3IEBACiAgKiBmdW5jdGlvbiBvciBtZXRob2QuCiAgKi8KIHN0YXRpYyBpbnQKLVB5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK1B5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YSA9IChQeXRob25DbWRfQ2xpZW50RGF0YSAqKWNsaWVudERhdGE7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmcsICpyZXM7CkBAIC0yMjUyLDcgKzI0NTksNyBAQAogdHlwZWRlZiBzdHJ1Y3QgQ29tbWFuZEV2ZW50ewogICAgIFRjbF9FdmVudCBldjsKICAgICBUY2xfSW50ZXJwKiBpbnRlcnA7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGludCBjcmVhdGU7CiAgICAgaW50ICpzdGF0dXM7CiAgICAgQ2xpZW50RGF0YSAqZGF0YTsKQEAgLTIyNzUsMTggKzI0ODIsMjUgQEAKIH0KICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5jcmVhdGVjb21tYW5kCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorICAgIG5hbWU6IHN0cgorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlQ29tbWFuZChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmExYzc5YTRlZTJhZjQxMCBpbnB1dD0yYmMyYzA0NmEwOTE0MjM0XSovCiB7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgUHl0aG9uQ21kX0NsaWVudERhdGEgKmRhdGE7Ci0gICAgY2hhciAqY21kTmFtZTsKLSAgICBQeU9iamVjdCAqZnVuYzsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpjcmVhdGVjb21tYW5kIiwgJmNtZE5hbWUsICZmdW5jKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChjbWROYW1lKTsKKyAgICBDSEVDS19TVFJJTkdfTEVOR1RIKG5hbWUpOwogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY29tbWFuZCBub3QgY2FsbGFibGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzAzLDcgKzI1MTcsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgIGRhdGEtPnNlbGYgPSBzZWxmcHRyOworICAgIGRhdGEtPnNlbGYgPSAoUHlPYmplY3QgKikgc2VsZjsKICAgICBkYXRhLT5mdW5jID0gZnVuYzsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChzZWxmLT50aHJlYWRlZCAmJiBzZWxmLT50aHJlYWRfaWQgIT0gVGNsX0dldEN1cnJlbnRUaHJlYWQoKSkgewpAQCAtMjMxNyw3ICsyNTMxLDcgQEAKICAgICAgICAgZXYtPmV2LnByb2MgPSAoVGNsX0V2ZW50UHJvYyopVGthcHBfQ29tbWFuZFByb2M7CiAgICAgICAgIGV2LT5pbnRlcnAgPSBzZWxmLT5pbnRlcnA7CiAgICAgICAgIGV2LT5jcmVhdGUgPSAxOwotICAgICAgICBldi0+bmFtZSA9IGNtZE5hbWU7CisgICAgICAgIGV2LT5uYW1lID0gbmFtZTsKICAgICAgICAgZXYtPmRhdGEgPSAoQ2xpZW50RGF0YSlkYXRhOwogICAgICAgICBldi0+c3RhdHVzID0gJmVycjsKICAgICAgICAgZXYtPmRvbmUgPSAmY29uZDsKQEAgLTIzMjksNyArMjU0Myw3IEBACiAgICAgewogICAgICAgICBFTlRFUl9UQ0wKICAgICAgICAgZXJyID0gVGNsX0NyZWF0ZUNvbW1hbmQoCi0gICAgICAgICAgICBUa2FwcF9JbnRlcnAoc2VsZiksIGNtZE5hbWUsIFB5dGhvbkNtZCwKKyAgICAgICAgICAgIFRrYXBwX0ludGVycChzZWxmKSwgbmFtZSwgUHl0aG9uQ21kLAogICAgICAgICAgICAgKENsaWVudERhdGEpZGF0YSwgUHl0aG9uQ21kRGVsZXRlKSA9PSBOVUxMOwogICAgICAgICBMRUFWRV9UQ0wKICAgICB9CkBAIC0yMzQ0LDE2ICsyNTU4LDIyIEBACiAKIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5kZWxldGVjb21tYW5kCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorICAgIG5hbWU6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRGVsZXRlQ29tbWFuZChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD1iNjMwNjQ2OGYxMGIyMTljXSovCiB7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7Ci0gICAgY2hhciAqY21kTmFtZTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmRlbGV0ZWNvbW1hbmQiLCAmY21kTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIENIRUNLX1NUUklOR19MRU5HVEgoY21kTmFtZSk7CisgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChuYW1lKTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7CkBAIC0yMzY3LDcgKzI1ODcsNyBAQAogICAgICAgICBldi0+ZXYucHJvYyA9IChUY2xfRXZlbnRQcm9jKilUa2FwcF9Db21tYW5kUHJvYzsKICAgICAgICAgZXYtPmludGVycCA9IHNlbGYtPmludGVycDsKICAgICAgICAgZXYtPmNyZWF0ZSA9IDA7Ci0gICAgICAgIGV2LT5uYW1lID0gY21kTmFtZTsKKyAgICAgICAgZXYtPm5hbWUgPSBuYW1lOwogICAgICAgICBldi0+c3RhdHVzID0gJmVycjsKICAgICAgICAgZXYtPmRvbmUgPSAmY29uZDsKICAgICAgICAgVGthcHBfVGhyZWFkU2VuZChzZWxmLCAoVGNsX0V2ZW50KilldiwgJmNvbmQsCkBAIC0yMzc4LDcgKzI1OTgsNyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICBFTlRFUl9UQ0wKLSAgICAgICAgZXJyID0gVGNsX0RlbGV0ZUNvbW1hbmQoc2VsZi0+aW50ZXJwLCBjbWROYW1lKTsKKyAgICAgICAgZXJyID0gVGNsX0RlbGV0ZUNvbW1hbmQoc2VsZi0+aW50ZXJwLCBuYW1lKTsKICAgICAgICAgTEVBVkVfVENMCiAgICAgfQogICAgIGlmIChlcnIgPT0gLTEpIHsKQEAgLTI0NTksMTcgKzI2NzksMjMgQEAKICAgICBMRUFWRV9QWVRIT04KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuY3JlYXRlZmlsZWhhbmRsZXIKKworICAgIGZpbGU6IG9iamVjdAorICAgIG1hc2s6IGludAorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlRmlsZUhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgICAvKiBhcmdzIGlzIChmaWxlLCBtYXNrLCBmdW5jKSAqLworX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXNrLCBQeU9iamVjdCAqZnVuYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzNjZTgyZGU4MDFjMzUzIGlucHV0PTg0OTQzYTUyODZlNDc5NDddKi8KIHsKICAgICBGaWxlSGFuZGxlcl9DbGllbnREYXRhICpkYXRhOwotICAgIFB5T2JqZWN0ICpmaWxlLCAqZnVuYzsKLSAgICBpbnQgbWFzaywgdGZpbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgdGZpbGU7CiAKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMjQ5MiwxNCArMjcxOCwxOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRGVsZXRlRmlsZUhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpmaWxlOwotICAgIGludCB0ZmlsZTsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRlbGV0ZWZpbGVoYW5kbGVyCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZGVsZXRlZmlsZWhhbmRsZXIiLCAmZmlsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGZpbGU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1M2NjOTZlYmY5NDc2ZmQgaW5wdXQ9YWJiZWMxOWQ2NjMxMmUyYV0qLworeworICAgIGludCB0ZmlsZTsKIAogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0yNTI4LDE0ICsyNzU5LDIwIEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiB9IFRrdHRPYmplY3Q7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrdGltZXJ0b2tlbi5kZWxldGV0aW1lcmhhbmRsZXIKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGt0dE9iamVjdCAqIikKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGt0dF9EZWxldGVUaW1lckhhbmRsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrdHRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD0yNWJhNWRkNTk0ZTUyMDg0XSovCiB7Ci0gICAgVGt0dE9iamVjdCAqdiA9IChUa3R0T2JqZWN0ICopc2VsZjsKKyAgICBUa3R0T2JqZWN0ICp2ID0gc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IHYtPmZ1bmM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpkZWxldGV0aW1lcmhhbmRsZXIiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHYtPnRva2VuICE9IE5VTEwpIHsKICAgICAgICAgVGNsX0RlbGV0ZVRpbWVySGFuZGxlcih2LT50b2tlbik7CiAgICAgICAgIHYtPnRva2VuID0gTlVMTDsKQEAgLTI1NDgsMTIgKzI3ODUsNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgVGt0dF9tZXRob2RzW10gPQotewotICAgIHsiZGVsZXRldGltZXJoYW5kbGVyIiwgVGt0dF9EZWxldGVUaW1lckhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCiBzdGF0aWMgVGt0dE9iamVjdCAqCiBUa3R0X05ldyhQeU9iamVjdCAqZnVuYykKIHsKQEAgLTI1OTUsMjIgKzI4MjYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwogfQogCi1zdGF0aWMgUHlUeXBlX1Nsb3QgVGt0dF9UeXBlX3Nsb3RzW10gPSB7Ci0gICAge1B5X3RwX2RlYWxsb2MsIFRrdHRfRGVhbGxvY30sCi0gICAge1B5X3RwX3JlcHIsIFRrdHRfUmVwcn0sCi0gICAge1B5X3RwX21ldGhvZHMsIFRrdHRfbWV0aG9kc30sCi0gICAgezAsIDB9Ci19OwotCi1zdGF0aWMgUHlUeXBlX1NwZWMgVGt0dF9UeXBlX3NwZWMgPSB7Ci0gICAgIl90a2ludGVyLnRrdGltZXJ0b2tlbiIsCi0gICAgc2l6ZW9mKFRrdHRPYmplY3QpLAotICAgIDAsCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAotICAgIFRrdHRfVHlwZV9zbG90cywKLX07Ci0KLQogLyoqIFRpbWVyIEhhbmRsZXIgKiovCiAKIHN0YXRpYyB2b2lkCkBAIC0yNjQxLDE2ICsyODU2LDIyIEBACiAgICAgTEVBVkVfUFlUSE9OCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmNyZWF0ZXRpbWVyaGFuZGxlcgorCisgICAgbWlsbGlzZWNvbmRzOiBpbnQKKyAgICBmdW5jOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0NyZWF0ZVRpbWVySGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkYTU5NTliOWQwMzE5MTEgaW5wdXQ9YmE2NzI5ZjMyZjAyNzdhNV0qLwogewotICAgIGludCBtaWxsaXNlY29uZHM7Ci0gICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgVGt0dE9iamVjdCAqdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86Y3JlYXRldGltZXJoYW5kbGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJhZCBhcmd1bWVudCBsaXN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY3MCwxOCArMjg5MSwyMyBAQAogCiAvKiogRXZlbnQgTG9vcCAqKi8KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAubWFpbmxvb3AKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgdGhyZXNob2xkOiBpbnQgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9NYWluTG9vcChQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgdGhyZXNob2xkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYThlYWJiZTU3ODQxYjAgaW5wdXQ9YWQ1N2M5YzFkZDJiOTQ3MF0qLwogewotICAgIGludCB0aHJlc2hvbGQgPSAwOwotICAgIFRrYXBwT2JqZWN0ICpzZWxmID0gKFRrYXBwT2JqZWN0KilzZWxmcHRyOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKICNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsICZ0aHJlc2hvbGQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIHNlbGYtPmRpc3BhdGNoaW5nID0gMTsKIApAQCAtMjczMyw0NCArMjk1OSw1NiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRG9PbmVFdmVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IGZsYWdzID0gMDsKLSAgICBpbnQgcnY7CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5kb29uZWV2ZW50CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRvb25lZXZlbnQiLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmbGFnczogaW50ID0gMAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdjNmIyYWE0NjRjYWMyOSBpbnB1dD02NTQyYjkyOGUzNjRiNzkzXSovCit7CisgICAgaW50IHJ2OwogCiAgICAgRU5URVJfVENMCiAgICAgcnYgPSBUY2xfRG9PbmVFdmVudChmbGFncyk7CiAgICAgTEVBVkVfVENMCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBydik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnF1aXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1F1aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfcXVpdF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMjFlZWZmNDgxZjc1NGYgaW5wdXQ9ZTAzMDIwZGMzOGFmZjIzY10qLwogewotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6cXVpdCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHF1aXRNYWluTG9vcCA9IDE7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmludGVycGFkZHIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0ludGVycEFkZHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjYWFhZTMyNzNiM2M5NWEgaW5wdXQ9MmRkMzJjYmRkYjU1YTExMV0qLwogewotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aW50ZXJwYWRkciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIoVGthcHBfSW50ZXJwKHNlbGYpKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAubG9hZHRrCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9Ua0luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTllMTBhOTU0Y2U0NmQyYSBpbnB1dD1iNWU4MmFmZWRkNjM1NGYwXSovCiB7CiAgICAgVGNsX0ludGVycCAqaW50ZXJwID0gVGthcHBfSW50ZXJwKHNlbGYpOwogICAgIGNvbnN0IGNoYXIgKiBfdGtfZXhpc3RzID0gTlVMTDsKQEAgLTI3OTYsNyArMzAzNCw3IEBACiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpIHsKICAgICAgICAgLyogVGhpcyBzZXRzIGFuIGV4Y2VwdGlvbiwgYnV0IHdlIGNhbm5vdCByZXR1cm4gcmlnaHQKICAgICAgICAgICAgYXdheSBiZWNhdXNlIHdlIG5lZWQgdG8gZXhpdCB0aGUgb3ZlcmxhcCBmaXJzdC4gKi8KLSAgICAgICAgVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICB9IGVsc2UgewogICAgICAgICBfdGtfZXhpc3RzID0gVGthcHBfUmVzdWx0KHNlbGYpOwogICAgIH0KQEAgLTI4MzEsNTkgKzMwNjksMjMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1dpbGxEaXNwYXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC53aWxsZGlzcGF0Y2gKIAotICAgICgoVGthcHBPYmplY3QqKXNlbGYpLT5kaXNwYXRjaGluZyA9IDE7CisgICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUzZjQ2ZDI0NDY0MjE1NSBpbnB1dD0yNjMwNjk5NzY3ODA4OTcwXSovCit7CisgICAgc2VsZi0+ZGlzcGF0Y2hpbmcgPSAxOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAotLyoqKiogVGthcHAgTWV0aG9kIExpc3QgKioqKi8KLQotc3RhdGljIFB5TWV0aG9kRGVmIFRrYXBwX21ldGhvZHNbXSA9Ci17Ci0gICAgeyJ3aWxsZGlzcGF0Y2giLCAgICAgICBUa2FwcF9XaWxsRGlzcGF0Y2gsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndhbnRvYmplY3RzIiwgICAgICAgICAgICBUa2FwcF9XYW50T2JqZWN0cywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNhbGwiLCAgICAgICAgICAgICAgICAgICBUa2FwcF9DYWxsLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0V2YWwsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJldmFsZmlsZSIsICAgICAgICAgICAgICAgVGthcHBfRXZhbEZpbGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWNvcmQiLCAgICAgICAgICAgICAgICAgVGthcHBfUmVjb3JkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiYWRkZXJyb3JpbmZvIiwgICAgICAgVGthcHBfQWRkRXJyb3JJbmZvLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX1NldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbHNldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbFNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldHZhciIsICAgICAgICAgICAgICAgICBUa2FwcF9HZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnbG9iYWxnZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxHZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bnNldHZhciIsICAgICAgICAgICAgICAgVGthcHBfVW5zZXRWYXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnbG9iYWx1bnNldHZhciIsICAgICBUa2FwcF9HbG9iYWxVbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGludCIsICAgICAgICAgICAgICAgICBUa2FwcF9HZXRJbnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnZXRkb3VibGUiLCAgICAgICAgICAgICAgVGthcHBfR2V0RG91YmxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0Ym9vbGVhbiIsICAgICAgICAgICAgIFRrYXBwX0dldEJvb2xlYW4sIE1FVEhfT30sCi0gICAgeyJleHByc3RyaW5nIiwgICAgICAgICAgICAgVGthcHBfRXhwclN0cmluZywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4cHJsb25nIiwgICAgICAgICAgICAgICBUa2FwcF9FeHByTG9uZywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4cHJkb3VibGUiLCAgICAgICAgICAgICBUa2FwcF9FeHByRG91YmxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmJvb2xlYW4iLCAgICAgICAgVGthcHBfRXhwckJvb2xlYW4sIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzcGxpdGxpc3QiLCAgICAgICAgICAgICAgVGthcHBfU3BsaXRMaXN0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic3BsaXQiLCAgICAgICAgICAgICAgICAgIFRrYXBwX1NwbGl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY3JlYXRlY29tbWFuZCIsICAgICAgVGthcHBfQ3JlYXRlQ29tbWFuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRlbGV0ZWNvbW1hbmQiLCAgICAgIFRrYXBwX0RlbGV0ZUNvbW1hbmQsIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9DUkVBVEVGSUxFSEFORExFUgotICAgIHsiY3JlYXRlZmlsZWhhbmRsZXIiLCAgVGthcHBfQ3JlYXRlRmlsZUhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkZWxldGVmaWxlaGFuZGxlciIsICBUa2FwcF9EZWxldGVGaWxlSGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgotICAgIHsiY3JlYXRldGltZXJoYW5kbGVyIiwgVGthcHBfQ3JlYXRlVGltZXJIYW5kbGVyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsibWFpbmxvb3AiLCAgICAgICAgICAgICAgIFRrYXBwX01haW5Mb29wLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZG9vbmVldmVudCIsICAgICAgICAgICAgIFRrYXBwX0RvT25lRXZlbnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJxdWl0IiwgICAgICAgICAgICAgICAgICAgVGthcHBfUXVpdCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImludGVycGFkZHIiLCAgICAgICAgIFRrYXBwX0ludGVycEFkZHIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkdGsiLCAgICAgICAgICAgICAgICAgVGthcHBfVGtJbml0LCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgTlVMTH0KLX07Ci0KLQotCiAvKioqKiBUa2FwcCBUeXBlIE1ldGhvZHMgKioqKi8KIAogc3RhdGljIHZvaWQKQEAgLTI4OTksNDEgKzMxMDEsMjYgQEAKICAgICBEaXNhYmxlRXZlbnRIb29rKCk7CiB9CiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBUa2FwcF9UeXBlX3Nsb3RzW10gPSB7Ci0gICAge1B5X3RwX2RlYWxsb2MsIFRrYXBwX0RlYWxsb2N9LAotICAgIHtQeV90cF9tZXRob2RzLCBUa2FwcF9tZXRob2RzfSwKLSAgICB7MCwgMH0KLX07Ci0KLQotc3RhdGljIFB5VHlwZV9TcGVjIFRrYXBwX1R5cGVfc3BlYyA9IHsKLSAgICAiX3RraW50ZXIudGthcHAiLAotICAgIHNpemVvZihUa2FwcE9iamVjdCksCi0gICAgMCwKLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCi0gICAgVGthcHBfVHlwZV9zbG90cywKLX07Ci0KIAogCiAvKioqKiBUa2ludGVyIE1vZHVsZSAqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QqIHR1cGxlOwotICAgIGludCBzaXplOyAvKiBjdXJyZW50IHNpemUgKi8KLSAgICBpbnQgbWF4c2l6ZTsgLyogYWxsb2NhdGVkIHNpemUgKi8KKyAgICBQeV9zc2l6ZV90IHNpemU7IC8qIGN1cnJlbnQgc2l6ZSAqLworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsgLyogYWxsb2NhdGVkIHNpemUgKi8KIH0gRmxhdHRlbkNvbnRleHQ7CiAKIHN0YXRpYyBpbnQKLV9idW1wKEZsYXR0ZW5Db250ZXh0KiBjb250ZXh0LCBpbnQgc2l6ZSkKK19idW1wKEZsYXR0ZW5Db250ZXh0KiBjb250ZXh0LCBQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgLyogZXhwYW5kIHR1cGxlIHRvIGhvbGQgKGF0IGxlYXN0KSBzaXplIG5ldyBpdGVtcy4KICAgICAgICByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLCBmYWxzZSBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCAqLwogCi0gICAgaW50IG1heHNpemUgPSBjb250ZXh0LT5tYXhzaXplICogMjsKKyAgICBQeV9zc2l6ZV90IG1heHNpemUgPSBjb250ZXh0LT5tYXhzaXplICogMjsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCiAgICAgaWYgKG1heHNpemUgPCBjb250ZXh0LT5zaXplICsgc2l6ZSkKLSAgICAgICAgbWF4c2l6ZSA9IGNvbnRleHQtPnNpemUgKyBzaXplOworICAgICAgICBtYXhzaXplID0gY29udGV4dC0+c2l6ZSArIHNpemU7ICAvKiBuZXZlciBvdmVyZmxvd3MgKi8KIAogICAgIGNvbnRleHQtPm1heHNpemUgPSBtYXhzaXplOwogCkBAIC0yOTQ1LDQxICszMTMyLDIxIEBACiB7CiAgICAgLyogYWRkIHR1cGxlIG9yIGxpc3QgdG8gYXJndW1lbnQgdHVwbGUgKHJlY3Vyc2l2ZWx5KSAqLwogCi0gICAgaW50IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOwogCiAgICAgaWYgKGRlcHRoID4gMTAwMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJuZXN0aW5nIHRvbyBkZWVwIGluIF9mbGF0dGVuIik7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSBpZiAoUHlMaXN0X0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoaXRlbSk7CisgICAgfSBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGl0ZW0pIHx8IFB5TGlzdF9DaGVjayhpdGVtKSkgeworICAgICAgICBzaXplID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGl0ZW0pOwogICAgICAgICAvKiBwcmVhbGxvY2F0ZSAoYXNzdW1lIG5vIG5lc3RpbmcpICovCiAgICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgc2l6ZSA+IGNvbnRleHQtPm1heHNpemUgJiYKICAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCBzaXplKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvKiBjb3B5IGl0ZW1zIHRvIG91dHB1dCB0dXBsZSAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5TGlzdF9HRVRfSVRFTShpdGVtLCBpKTsKLSAgICAgICAgICAgIGlmIChQeUxpc3RfQ2hlY2sobykgfHwgUHlUdXBsZV9DaGVjayhvKSkgewotICAgICAgICAgICAgICAgIGlmICghX2ZsYXR0ZW4xKGNvbnRleHQsIG8sIGRlcHRoICsgMSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfSBlbHNlIGlmIChvICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c2l6ZSArIDEgPiBjb250ZXh0LT5tYXhzaXplICYmCi0gICAgICAgICAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY29udGV4dC0+dHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zaXplKyssIG8pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIC8qIHNhbWUsIGZvciB0dXBsZXMgKi8KLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoaXRlbSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgc2l6ZSA+IGNvbnRleHQtPm1heHNpemUgJiYKLSAgICAgICAgICAgICFfYnVtcChjb250ZXh0LCBzaXplKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oaXRlbSwgaSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtLCBpKTsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQ2hlY2sobykgfHwgUHlUdXBsZV9DaGVjayhvKSkgewogICAgICAgICAgICAgICAgIGlmICghX2ZsYXR0ZW4xKGNvbnRleHQsIG8sIGRlcHRoICsgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMjk5OSwxNCArMzE2NiwxOSBAQAogICAgIHJldHVybiAxOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5fZmxhdHRlbgorCisgICAgaXRlbTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX0ZsYXR0ZW4oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3RraW50ZXJfX2ZsYXR0ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTUwNTA0OWVjNzRjMzQ4MCBpbnB1dD02YjljMTIyNjBhYTExNTdmXSovCiB7CiAgICAgRmxhdHRlbkNvbnRleHQgY29udGV4dDsKLSAgICBQeU9iamVjdCogaXRlbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfZmxhdHRlbiIsICZpdGVtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb250ZXh0Lm1heHNpemUgPSBQeVNlcXVlbmNlX1NpemUoaXRlbSk7CiAgICAgaWYgKGNvbnRleHQubWF4c2l6ZSA8IDApCkBAIC0zMDI5LDI2ICszMjAxLDMzIEBACiAgICAgcmV0dXJuIGNvbnRleHQudHVwbGU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLmNyZWF0ZQorCisgICAgc2NyZWVuTmFtZTogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJhc2VOYW1lOiBzdHIgPSBOVUxMCisgICAgY2xhc3NOYW1lOiBzdHIgPSAiVGsiCisgICAgaW50ZXJhY3RpdmU6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd2FudG9iamVjdHM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgd2FudFRrOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgICAgIGlmIGZhbHNlLCB0aGVuIFRrX0luaXQoKSBkb2Vzbid0IGdldCBjYWxsZWQKKyAgICBzeW5jOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgICAgICBpZiB0cnVlLCB0aGVuIHBhc3MgLXN5bmMgdG8gd2lzaAorICAgIHVzZTogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgICAgICBpZiBub3QgTm9uZSwgdGhlbiBwYXNzIC11c2UgdG8gd2lzaAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9DcmVhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfY3JlYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqc2NyZWVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhc2VOYW1lLCBjb25zdCBjaGFyICpjbGFzc05hbWUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg4NDc4MDBmYzNiMjdlYiBpbnB1dD0wZDUyMmFhZDFjYjBjYTBlXSovCiB7Ci0gICAgY2hhciAqc2NyZWVuTmFtZSA9IE5VTEw7Ci0gICAgY2hhciAqYmFzZU5hbWUgPSBOVUxMOyAvKiBYWFggdGhpcyBpcyBub3QgdXNlZCBhbnltb3JlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGdldHRpbmcgcmlkIG9mIGl0LiAqLwotICAgIGNoYXIgKmNsYXNzTmFtZSA9IE5VTEw7Ci0gICAgaW50IGludGVyYWN0aXZlID0gMDsKLSAgICBpbnQgd2FudG9iamVjdHMgPSAwOwotICAgIGludCB3YW50VGsgPSAxOyAgICAgLyogSWYgZmFsc2UsIHRoZW4gVGtfSW5pdCgpIGRvZXNuJ3QgZ2V0IGNhbGxlZCAqLwotICAgIGludCBzeW5jID0gMDsgLyogcGFzcyAtc3luYyB0byB3aXNoICovCi0gICAgY2hhciAqdXNlID0gTlVMTDsgLyogcGFzcyAtdXNlIHRvIHdpc2ggKi8KLQotICAgIGNsYXNzTmFtZSA9ICJUayI7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5bmMsICZ1c2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBYWFggYmFzZU5hbWUgaXMgbm90IHVzZWQgYW55bW9yZTsKKyAgICAgKiB0cnkgZ2V0dGluZyByaWQgb2YgaXQuICovCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JlZW5OYW1lKTsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGJhc2VOYW1lKTsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGNsYXNzTmFtZSk7CkBAIC0zMDU5LDEyICszMjM4LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luYywgdXNlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIuc2V0YnVzeXdhaXRpbnRlcnZhbAorCisgICAgbmV3X3ZhbDogaW50CisgICAgLworCitTZXQgdGhlIGJ1c3ktd2FpdCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLgorCitJdCBzaG91bGQgYmUgc2V0IHRvIGEgZGl2aXNvciBvZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gZnJhbWVzIGluIGFuIGFuaW1hdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5ld192YWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI5ZDdlZjc5NDA0NjFlYSBpbnB1dD1kZWNhMWQ2ZjllNmRhZTQ3XSovCiB7Ci0gICAgaW50IG5ld192YWw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXdfdmFsIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJidXN5d2FpdGludGVydmFsIG11c3QgYmUgPj0gMCIpOwpAQCAtMzA3NCwzNCArMzI2MiwxMDMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIGNoYXIgc2V0YnVzeXdhaXRpbnRlcnZhbF9kb2NbXSA9Ci0ic2V0YnVzeXdhaXRpbnRlcnZhbChuKSAtPiBOb25lXG5cCi1cblwKLVNldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmVcblwKLWNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLlxuXAotSXQgc2hvdWxkIGJlIHNldCB0byBhIGRpdmlzb3Igb2YgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuXG5cCi1mcmFtZXMgaW4gYW4gYW5pbWF0aW9uLiI7CisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5nZXRidXN5d2FpdGludGVydmFsIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JldHVybiB0aGUgY3VycmVudCBidXN5LXdhaXQgaW50ZXJ2YWwgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzIHRvIFRjbF9Eb09uZUV2ZW50IGluIGEgdGhyZWFkZWQgUHl0aG9uIGludGVycHJldGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDA5ZWVlMDI2ZTk2OTcxIGlucHV0PWE2OTU4NzhkMmQ1NzZhODRdKi8KIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFRraW50ZXJfYnVzeXdhaXRpbnRlcnZhbCk7CisgICAgcmV0dXJuIFRraW50ZXJfYnVzeXdhaXRpbnRlcnZhbDsKIH0KIAotc3RhdGljIGNoYXIgZ2V0YnVzeXdhaXRpbnRlcnZhbF9kb2NbXSA9Ci0iZ2V0YnVzeXdhaXRpbnRlcnZhbCgpIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgYnVzeS13YWl0IGludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZVxuXAotY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuIjsKKyNpbmNsdWRlICJjbGluaWMvX3RraW50ZXIuYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgVGt0dF9tZXRob2RzW10gPQoreworICAgIF9US0lOVEVSX1RLVElNRVJUT0tFTl9ERUxFVEVUSU1FUkhBTkRMRVJfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlX1Nsb3QgVGt0dF9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RlYWxsb2MsIFRrdHRfRGVhbGxvY30sCisgICAge1B5X3RwX3JlcHIsIFRrdHRfUmVwcn0sCisgICAge1B5X3RwX21ldGhvZHMsIFRrdHRfbWV0aG9kc30sCisgICAgezAsIDB9Cit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgVGt0dF9UeXBlX3NwZWMgPSB7CisgICAgIl90a2ludGVyLnRrdGltZXJ0b2tlbiIsCisgICAgc2l6ZW9mKFRrdHRPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFRrdHRfVHlwZV9zbG90cywKK307CisKKworLyoqKiogVGthcHAgTWV0aG9kIExpc3QgKioqKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIFRrYXBwX21ldGhvZHNbXSA9Cit7CisgICAgX1RLSU5URVJfVEtBUFBfV0lMTERJU1BBVENIX01FVEhPRERFRgorICAgIHsid2FudG9iamVjdHMiLCAgICAgICAgICAgIFRrYXBwX1dhbnRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2FsbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0NhbGwsIE1FVEhfVkFSQVJHU30sCisgICAgX1RLSU5URVJfVEtBUFBfRVZBTF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FVkFMRklMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9SRUNPUkRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfQURERVJSSU5GT19NRVRIT0RERUYKKyAgICB7InNldHZhciIsICAgICAgICAgICAgICAgICBUa2FwcF9TZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnbG9iYWxzZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxTZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXR2YXIiLCAgICAgICBUa2FwcF9HZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnbG9iYWxnZXR2YXIiLCAgICAgICBUa2FwcF9HbG9iYWxHZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJ1bnNldHZhciIsICAgICBUa2FwcF9VbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbHVuc2V0dmFyIiwgICAgIFRrYXBwX0dsb2JhbFVuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIF9US0lOVEVSX1RLQVBQX0dFVElOVF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9HRVRET1VCTEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfR0VUQk9PTEVBTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FWFBSU1RSSU5HX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJMT05HX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJET1VCTEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkJPT0xFQU5fTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfU1BMSVRMSVNUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1NQTElUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURUNPTU1BTkRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfREVMRVRFQ09NTUFORF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9DUkVBVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9DUkVBVEVUSU1FUkhBTkRMRVJfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfTUFJTkxPT1BfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRE9PTkVFVkVOVF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9RVUlUX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0lOVEVSUEFERFJfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfTE9BRFRLX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlX1Nsb3QgVGthcHBfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCBUa2FwcF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgVGthcHBfbWV0aG9kc30sCisgICAgezAsIDB9Cit9OworCisKK3N0YXRpYyBQeVR5cGVfU3BlYyBUa2FwcF9UeXBlX3NwZWMgPSB7CisgICAgIl90a2ludGVyLnRrYXBwIiwKKyAgICBzaXplb2YoVGthcHBPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFRrYXBwX1R5cGVfc2xvdHMsCit9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlTWV0aG9kc1tdID0KIHsKLSAgICB7Il9mbGF0dGVuIiwgICAgICAgICAgIFRraW50ZXJfRmxhdHRlbiwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNyZWF0ZSIsICAgICAgICAgICAgIFRraW50ZXJfQ3JlYXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2V0YnVzeXdhaXRpbnRlcnZhbCIsVGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRidXN5d2FpdGludGVydmFsX2RvY30sCi0gICAgeyJnZXRidXN5d2FpdGludGVydmFsIiwoUHlDRnVuY3Rpb24pVGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIGdldGJ1c3l3YWl0aW50ZXJ2YWxfZG9jfSwKKyAgICBfVEtJTlRFUl9fRkxBVFRFTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9DUkVBVEVfTUVUSE9EREVGCisgICAgX1RLSU5URVJfU0VUQlVTWVdBSVRJTlRFUlZBTF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9HRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgTlVMTH0KIH07CiAKQEAgLTMzNDUsOCArMzYwMiw0MCBAQAogICAgIHVleGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByb2dyYW1OYW1lKCksIC0xKTsKICAgICBpZiAodWV4ZSkgewogICAgICAgICBjZXhlID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCh1ZXhlKTsKLSAgICAgICAgaWYgKGNleGUpCisgICAgICAgIGlmIChjZXhlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgaW50IHNldF92YXIgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKnN0cl9wYXRoOworICAgICAgICAgICAgd2NoYXJfdCAqd2NzX3BhdGg7CisgICAgICAgICAgICBEV09SRCByZXQ7CisKKyAgICAgICAgICAgIHJldCA9IEdldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMLCAwKTsKKworICAgICAgICAgICAgaWYgKCFyZXQgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfRU5WVkFSX05PVF9GT1VORCkgeworICAgICAgICAgICAgICAgIHN0cl9wYXRoID0gX2dldF90Y2xfbGliX3BhdGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyX3BhdGggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RyX3BhdGggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICB3Y3NfcGF0aCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHN0cl9wYXRoLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdjc19wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCB3Y3NfcGF0aCk7CisgICAgICAgICAgICAgICAgICAgIHNldF92YXIgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworCisgICAgICAgICAgICBpZiAoc2V0X3ZhcikgeworICAgICAgICAgICAgICAgIFNldEVudmlyb25tZW50VmFyaWFibGVXKEwiVENMX0xJQlJBUlkiLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdjc19wYXRoKTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoY2V4ZSk7CiAgICAgICAgIFB5X0RFQ1JFRih1ZXhlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwppbmRleCA0MDlmNGRiLi4yMjZhNDczIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCisrKyBiL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKQEAgLTE2LDE0ICsxNiwxMSBAQAogIyAgZGVmaW5lIFRSQUNFX0RFQlVHCiAjZW5kaWYKIAotI2RlZmluZSBfU1RSKFZBTCkgI1ZBTAotI2RlZmluZSBTVFIoVkFMKSBfU1RSKFZBTCkKLQogLyogUHJvdGVjdGVkIGJ5IHRoZSBHSUwgKi8KIHN0YXRpYyBzdHJ1Y3QgewotICAgIFB5TWVtQWxsb2NhdG9yIG1lbTsKLSAgICBQeU1lbUFsbG9jYXRvciByYXc7Ci0gICAgUHlNZW1BbGxvY2F0b3Igb2JqOworICAgIFB5TWVtQWxsb2NhdG9yRXggbWVtOworICAgIFB5TWVtQWxsb2NhdG9yRXggcmF3OworICAgIFB5TWVtQWxsb2NhdG9yRXggb2JqOwogfSBhbGxvY2F0b3JzOwogCiBzdGF0aWMgc3RydWN0IHsKQEAgLTgyLDcgKzc5LDcgQEAKICAgICAgICAgKHNpemVvZih0cmFjZWJhY2tfdCkgKyBzaXplb2YoZnJhbWVfdCkgKiAoTkZSQU1FIC0gMSkpCiAKICNkZWZpbmUgTUFYX05GUkFNRSBcCi0gICAgICAgICgoSU5UX01BWCAtIHNpemVvZih0cmFjZWJhY2tfdCkpIC8gc2l6ZW9mKGZyYW1lX3QpICsgMSkKKyAgICAgICAgKChJTlRfTUFYIC0gKGludClzaXplb2YodHJhY2ViYWNrX3QpKSAvIChpbnQpc2l6ZW9mKGZyYW1lX3QpICsgMSkKIAogc3RhdGljIFB5T2JqZWN0ICp1bmtub3duX2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyB0cmFjZWJhY2tfdCB0cmFjZW1hbGxvY19lbXB0eV90cmFjZWJhY2s7CkBAIC00NzYsMTcgKzQ3MywyMiBAQAogfQogCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogICAgIHZvaWQgKnB0cjsKIAotICAgIHB0ciA9IGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NJWkVfTUFYIC8gZWxzaXplKTsKKworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBwdHIgPSBhbGxvYy0+Y2FsbG9jKGFsbG9jLT5jdHgsIG5lbGVtLCBlbHNpemUpOworICAgIGVsc2UKKyAgICAgICAgcHRyID0gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSAqIGVsc2l6ZSk7CiAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIHNpemUpIDwgMCkgeworICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyLCBuZWxlbSAqIGVsc2l6ZSkgPCAwKSB7CiAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cik7CkBAIC00OTksNyArNTAxLDcgQEAKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogICAgIHZvaWQgKnB0cjI7CiAKICAgICBwdHIyID0gYWxsb2MtPnJlYWxsb2MoYWxsb2MtPmN0eCwgcHRyLCBuZXdfc2l6ZSk7CkBAIC01NDQsNyArNTQ2LDcgQEAKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19mcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKQogewotICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm47CkBAIC01NjAsMTMgKzU2MiwxNiBAQAogfQogCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX2FsbG9jX2dpbChpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgdm9pZCAqcHRyOwogCiAgICAgaWYgKGdldF9yZWVudHJhbnQoKSkgewotICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3IgKiljdHg7Ci0gICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIHNpemUpOworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OworICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+Y2FsbG9jKGFsbG9jLT5jdHgsIG5lbGVtLCBlbHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSAqIGVsc2l6ZSk7CiAgICAgfQogCiAgICAgLyogSWdub3JlIHJlZW50cmFudCBjYWxsLiBQeU9iamV0X01hbGxvYygpIGNhbGxzIFB5TWVtX01hbGxvYygpIGZvcgpAQCAtNTc0LDEzICs1NzksMjUgQEAKICAgICAgICBhbGxvY2F0aW9uIHR3aWNlLiAqLwogICAgIHNldF9yZWVudHJhbnQoMSk7CiAKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogCiAgICAgc2V0X3JlZW50cmFudCgwKTsKICAgICByZXR1cm4gcHRyOwogfQogCiBzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDAsIGN0eCwgMSwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfY2FsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmVhbGxvY19naWwodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICB2b2lkICpwdHIyOwpAQCAtNTkwLDcgKzYwNyw3IEBACiAgICAgICAgICAgIEV4YW1wbGU6IFB5TWVtX1Jhd1JlYWxsb2MoKSBpcyBjYWxsZWQgaW50ZXJuYWxseSBieSBweW1hbGxvYwogICAgICAgICAgICAoX1B5T2JqZWN0X01hbGxvYygpIGFuZCAgX1B5T2JqZWN0X1JlYWxsb2MoKSkgdG8gYWxsb2NhdGUgYSBuZXcKICAgICAgICAgICAgYXJlbmEgKG5ld19hcmVuYSgpKS4gKi8KLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewpAQCAtNjE0LDcgKzYzMSw3IEBACiAKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiBzdGF0aWMgdm9pZCoKLXRyYWNlbWFsbG9jX3Jhd19tYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX3Jhd19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbF9zdGF0ZTsKQEAgLTYyMiw4ICs2MzksMTEgQEAKICAgICB2b2lkICpwdHI7CiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7Ci0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKLSAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICB9CiAKICAgICAvKiBJZ25vcmUgcmVlbnRyYW50IGNhbGwuIFB5R0lMU3RhdGVfRW5zdXJlKCkgbWF5IGNhbGwgUHlNZW1fUmF3TWFsbG9jKCkKQEAgLTYzMywxMCArNjUzLDEwIEBACiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGdpbF9zdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7Ci0gICAgcHRyID0gdHJhY2VtYWxsb2NfbWFsbG9jKGN0eCwgc2l6ZSk7CisgICAgcHRyID0gdHJhY2VtYWxsb2NfYWxsb2ModXNlX2NhbGxvYywgY3R4LCBuZWxlbSwgZWxzaXplKTsKICAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsX3N0YXRlKTsKICNlbHNlCi0gICAgcHRyID0gdHJhY2VtYWxsb2NfbWFsbG9jKGN0eCwgc2l6ZSk7CisgICAgcHRyID0gdHJhY2VtYWxsb2NfYWxsb2ModXNlX2NhbGxvYywgY3R4LCBuZWxlbSwgZWxzaXplKTsKICNlbmRpZgogCiAgICAgc2V0X3JlZW50cmFudCgwKTsKQEAgLTY0NCw2ICs2NjQsMTggQEAKIH0KIAogc3RhdGljIHZvaWQqCit0cmFjZW1hbGxvY19yYXdfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygwLCBjdHgsIDEsIHNpemUpOworfQorCitzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX3Jhd19jYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygxLCBjdHgsIG5lbGVtLCBlbHNpemUpOworfQorCitzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTY1Myw3ICs2ODUsNyBAQAogCiAgICAgaWYgKGdldF9yZWVudHJhbnQoKSkgewogICAgICAgICAvKiBSZWVudHJhbnQgY2FsbCB0byBQeU1lbV9SYXdSZWFsbG9jKCkuICovCi0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKIAogICAgICAgICBwdHIyID0gYWxsb2MtPnJlYWxsb2MoYWxsb2MtPmN0eCwgcHRyLCBuZXdfc2l6ZSk7CiAKQEAgLTgzMSw3ICs4NjMsNyBAQAogc3RhdGljIGludAogdHJhY2VtYWxsb2Nfc3RhcnQoaW50IG1heF9uZnJhbWUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKICAgICBzaXplX3Qgc2l6ZTsKIAogICAgIGlmICh0cmFjZW1hbGxvY19pbml0KCkgPCAwKQpAQCAtODU2LDYgKzg4OCw3IEBACiAKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiAgICAgYWxsb2MubWFsbG9jID0gdHJhY2VtYWxsb2NfcmF3X21hbGxvYzsKKyAgICBhbGxvYy5jYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfY2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfcmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gdHJhY2VtYWxsb2NfZnJlZTsKIApAQCAtODY1LDYgKzg5OCw3IEBACiAjZW5kaWYKIAogICAgIGFsbG9jLm1hbGxvYyA9IHRyYWNlbWFsbG9jX21hbGxvY19naWw7CisgICAgYWxsb2MuY2FsbG9jID0gdHJhY2VtYWxsb2NfY2FsbG9jX2dpbDsKICAgICBhbGxvYy5yZWFsbG9jID0gdHJhY2VtYWxsb2NfcmVhbGxvY19naWw7CiAgICAgYWxsb2MuZnJlZSA9IHRyYWNlbWFsbG9jX2ZyZWU7CiAKQEAgLTExOTUsNyArMTIyOSw3IEBACiAgICAgaWYgKG5mcmFtZSA8IDEgfHwgbmZyYW1lID4gTUFYX05GUkFNRSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbnVtYmVyIG9mIGZyYW1lcyBtdXN0IGJlIGluIHJhbmdlIFsxOyAlaV0iLAotICAgICAgICAgICAgICAgICAgICAgKGludClNQVhfTkZSQU1FKTsKKyAgICAgICAgICAgICAgICAgICAgIE1BWF9ORlJBTUUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbmZyYW1lX2ludCA9IFB5X1NBRkVfRE9XTkNBU1QobmZyYW1lLCBQeV9zc2l6ZV90LCBpbnQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2Vha3JlZi5jIGIvTW9kdWxlcy9fd2Vha3JlZi5jCmluZGV4IGRhNTg5MzEuLjdjOTlkN2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dlYWtyZWYuYworKysgYi9Nb2R1bGVzL193ZWFrcmVmLmMKQEAgLTksNiArOSw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mZmVjNzNiODU4NDY1OTZkXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX3dlYWtyZWYuYy5oIgorCiAvKltjbGluaWMgaW5wdXRdCiAKIF93ZWFrcmVmLmdldHdlYWtyZWZjb3VudCAtPiBQeV9zc2l6ZV90CkBAIC0xOSwzNiArMjEsOSBAQAogUmV0dXJuIHRoZSBudW1iZXIgb2Ygd2VhayByZWZlcmVuY2VzIHRvICdvYmplY3QnLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfXywKLSJnZXR3ZWFrcmVmY291bnQoJG1vZHVsZSwgb2JqZWN0LCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBudW1iZXIgb2Ygd2VhayByZWZlcmVuY2VzIHRvIFwnb2JqZWN0XCcuIik7Ci0KLSNkZWZpbmUgX1dFQUtSRUZfR0VUV0VBS1JFRkNPVU5UX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXR3ZWFrcmVmY291bnQiLCAoUHlDRnVuY3Rpb24pX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50LCBNRVRIX08sIF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9fZG9jX199LAotCi1zdGF0aWMgUHlfc3NpemVfdAotX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1fd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCkKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7Ci0KLSAgICBfcmV0dXJuX3ZhbHVlID0gX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwobW9kdWxlLCBvYmplY3QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlfc3NpemVfdAogX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iamVjdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzJlZWRiZmQ3ZDY5ZTEwIGlucHV0PWNlZGI2OTcxMWI2YTI1MDddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTZhZDBiOTgyODVlNDY4IGlucHV0PWNlZGI2OTcxMWI2YTI1MDddKi8KIHsKICAgICBQeVdlYWtSZWZlcmVuY2UgKipsaXN0OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCmluZGV4IGQ0NzJjOWUuLjNlN2YxODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dpbmFwaS5jCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC00MCw2ICs0MCw3IEBACiAjZGVmaW5lIFdJTkRPV1NfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgIndpbmRvd3MuaCIKICNpbmNsdWRlIDxjcnRkYmcuaD4KKyNpbmNsdWRlICJ3aW5yZXBhcnNlLmgiCiAKICNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKICNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXApAQCAtNTcsOCArNTgsNiBAQAogCiAjZGVmaW5lIEZfSEFORExFIEZfUE9JTlRFUgogI2RlZmluZSBGX0RXT1JEICJrIgotI2RlZmluZSBGX0JPT0wgImkiCi0jZGVmaW5lIEZfVUlOVCAiSSIKIAogI2RlZmluZSBUX0hBTkRMRSBUX1BPSU5URVIKIApAQCAtMTQ2LDE3ICsxNDUsNjggQEAKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfd2luYXBpCitjbGFzcyBfd2luYXBpLk92ZXJsYXBwZWQgIk92ZXJsYXBwZWRPYmplY3QgKiIgIiZPdmVybGFwcGVkVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMxM2QzZjVmZDFkYWJiODRdKi8KKworLypbcHl0aG9uIGlucHV0XQorZGVmIGNyZWF0ZV9jb252ZXJ0ZXIodHlwZV8sIGZvcm1hdF91bml0KToKKyAgICBuYW1lID0gdHlwZV8gKyAnX2NvbnZlcnRlcicKKyAgICAjIHJlZ2lzdGVyZWQgdXBvbiBjcmVhdGlvbiBieSBDQ29udmVydGVyJ3MgbWV0YWNsYXNzCisgICAgdHlwZShuYW1lLCAoQ0NvbnZlcnRlciwpLCB7J3R5cGUnOiB0eXBlXywgJ2Zvcm1hdF91bml0JzogZm9ybWF0X3VuaXR9KQorCisjIGZvcm1hdCB1bml0IGRpZmZlcnMgYmV0d2VlbiBwbGF0Zm9ybXMgZm9yIHRoZXNlCitjcmVhdGVfY29udmVydGVyKCdIQU5ETEUnLCAnIiBGX0hBTkRMRSAiJykKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0hNT0RVTEUnLCAnIiBGX0hBTkRMRSAiJykKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0xQU0VDVVJJVFlfQVRUUklCVVRFUycsICciIEZfUE9JTlRFUiAiJykKKworY3JlYXRlX2NvbnZlcnRlcignQk9PTCcsICdpJykgIyBGX0JPT0wgdXNlZCBwcmV2aW91c2x5IChhbHdheXMgJ2knKQorY3JlYXRlX2NvbnZlcnRlcignRFdPUkQnLCAnaycpICMgRl9EV09SRCBpcyBhbHdheXMgImsiICh3aGljaCBpcyBtdWNoIHNob3J0ZXIpCitjcmVhdGVfY29udmVydGVyKCdMUENUU1RSJywgJ3MnKQorY3JlYXRlX2NvbnZlcnRlcignTFBXU1RSJywgJ3UnKQorY3JlYXRlX2NvbnZlcnRlcignVUlOVCcsICdJJykgIyBGX1VJTlQgdXNlZCBwcmV2aW91c2x5IChhbHdheXMgJ0knKQorCitjbGFzcyBIQU5ETEVfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0hBTkRMRScKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKVxuICAgIFB5X1JFVFVSTl9OT05FO1xuJykKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCisgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpO1xuJykKKworY2xhc3MgRFdPUkRfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0RXT1JEJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7XG4nKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Mzc0MDc2OTc5NTk2ZWJiYV0qLworCisjaW5jbHVkZSAiY2xpbmljL193aW5hcGkuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdAorCisgICAgd2FpdDogYm9vbAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqd2FpdG9iaikKK193aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZiwgaW50IHdhaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmRkMGMxZWQ2NTE4Y2QwMyBpbnB1dD0xOTQ1MDVlZThlMGUzNTY1XSovCiB7Ci0gICAgaW50IHdhaXQ7CiAgICAgQk9PTCByZXM7CiAgICAgRFdPUkQgdHJhbnNmZXJyZWQgPSAwOwogICAgIERXT1JEIGVycjsKIAotICAgIHdhaXQgPSBQeU9iamVjdF9Jc1RydWUod2FpdG9iaik7Ci0gICAgaWYgKHdhaXQgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmdHJhbnNmZXJyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ICE9IDApOwpAQCAtMTg1LDggKzIzNSwxMyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsICh1bnNpZ25lZCkgdHJhbnNmZXJyZWQsICh1bnNpZ25lZCkgZXJyKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5PdmVybGFwcGVkLmdldGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotb3ZlcmxhcHBlZF9nZXRidWZmZXIoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK193aW5hcGlfT3ZlcmxhcHBlZF9nZXRidWZmZXJfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1YTNlY2VlZmFlMGY3NDggaW5wdXQ9MzQ3ZmNmZDU2YjRjZWFiZF0qLwogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKCFzZWxmLT5jb21wbGV0ZWQpIHsKQEAgLTIwMCw4ICsyNTUsMTMgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuY2FuY2VsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1vdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNiOWFiNWRmNGViZGFlNSBpbnB1dD1jYmYzZGExNDIyOTAwMzlmXSovCiB7CiAgICAgQk9PTCByZXMgPSBUUlVFOwogCkBAIC0yMjIsMTAgKzI4Miw5IEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBvdmVybGFwcGVkX21ldGhvZHNbXSA9IHsKLSAgICB7IkdldE92ZXJsYXBwZWRSZXN1bHQiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsiZ2V0YnVmZmVyIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2dldGJ1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2NhbmNlbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRPVkVSTEFQUEVEUkVTVUxUX01FVEhPRERFRgorICAgIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRCVUZGRVJfTUVUSE9EREVGCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0NBTkNFTF9NRVRIT0RERUYKICAgICB7TlVMTH0KIH07CiAKQEAgLTI5OSwyMiArMzU4LDIzIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogd2luZG93cyBBUEkgZnVuY3Rpb25zICovCiAKLVB5RG9jX1NUUlZBUihDbG9zZUhhbmRsZV9kb2MsCi0iQ2xvc2VIYW5kbGUoaGFuZGxlKSAtPiBOb25lXG5cCi1cblwKLUNsb3NlIGhhbmRsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ2xvc2VIYW5kbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgLworCitDbG9zZSBoYW5kbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ2xvc2VIYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9DbG9zZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDU0ODU5NWM3MWNiNGJmNyBpbnB1dD03ZjBlNGFjMzZlMDM1MmI4XSovCiB7Ci0gICAgSEFORExFIGhPYmplY3Q7CiAgICAgQk9PTCBzdWNjZXNzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaE9iamVjdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKKyAgICBzdWNjZXNzID0gQ2xvc2VIYW5kbGUoaGFuZGxlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFzdWNjZXNzKQpAQCAtMzIzLDI4ICszODMsMjkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIG92ZXJsYXBwZWQgYXMgdXNlX292ZXJsYXBwZWQ6IGludChjX2RlZmF1bHQ9JzAnKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWQzYjE2NWQxYmNhOTVhIGlucHV0PWVkYzgzZGEwMDdlYmYzYmVdKi8KIHsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIEJPT0wgc3VjY2VzczsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJ8IiBGX0JPT0wsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKLSAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhOYW1lZFBpcGUpOworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKICAgICAgICAgaWYgKCFvdmVybGFwcGVkKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsCisgICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTM2OCw5NCArNDI5LDIzOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVGaWxlIC0+IEhBTkRMRQorCisgICAgZmlsZV9uYW1lOiBMUENUU1RSCisgICAgZGVzaXJlZF9hY2Nlc3M6IERXT1JECisgICAgc2hhcmVfbW9kZTogRFdPUkQKKyAgICBzZWN1cml0eV9hdHRyaWJ1dGVzOiBMUFNFQ1VSSVRZX0FUVFJJQlVURVMKKyAgICBjcmVhdGlvbl9kaXNwb3NpdGlvbjogRFdPUkQKKyAgICBmbGFnc19hbmRfYXR0cmlidXRlczogRFdPUkQKKyAgICB0ZW1wbGF0ZV9maWxlOiBIQU5ETEUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfQ3JlYXRlRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsIERXT1JEIHNoYXJlX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIEhBTkRMRSB0ZW1wbGF0ZV9maWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM2ZTFkNzhmOGFmZmQxMGMgaW5wdXQ9NjQyM2MzZTQwMzcyZGJkNV0qLwogewotICAgIExQQ1RTVFIgbHBGaWxlTmFtZTsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgRFdPUkQgZHdTaGFyZU1vZGU7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOwotICAgIERXT1JEIGR3Q3JlYXRpb25EaXNwb3NpdGlvbjsKLSAgICBEV09SRCBkd0ZsYWdzQW5kQXR0cmlidXRlczsKLSAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZTsKICAgICBIQU5ETEUgaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0hBTkRMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwRmlsZU5hbWUsICZkd0Rlc2lyZWRBY2Nlc3MsICZkd1NoYXJlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzLCAmZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdGbGFnc0FuZEF0dHJpYnV0ZXMsICZoVGVtcGxhdGVGaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlRmlsZShscEZpbGVOYW1lLCBkd0Rlc2lyZWRBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBkd1NoYXJlTW9kZSwgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywgaFRlbXBsYXRlRmlsZSk7CisgICAgaGFuZGxlID0gQ3JlYXRlRmlsZShmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVfbW9kZSwgc2VjdXJpdHlfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVKdW5jdGlvbgorCisgICAgc3JjX3BhdGg6IExQV1NUUgorICAgIGRzdF9wYXRoOiBMUFdTVFIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUFdTVFIgc3JjX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGRzdF9wYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjY2FlOTM2NGU0NmY2ZGEgaW5wdXQ9OGNkMWY5OTY0YjZlM2QzNl0qLwogewotICAgIExQQ1RTVFIgbHBOYW1lOwotICAgIERXT1JEIGR3T3Blbk1vZGU7Ci0gICAgRFdPUkQgZHdQaXBlTW9kZTsKLSAgICBEV09SRCBuTWF4SW5zdGFuY2VzOwotICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOwotICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICAvKiBQcml2aWxlZ2UgYWRqdXN0bWVudCAqLworICAgIEhBTkRMRSB0b2tlbiA9IE5VTEw7CisgICAgVE9LRU5fUFJJVklMRUdFUyB0cDsKKworICAgIC8qIFJlcGFyc2UgZGF0YSBidWZmZXIgKi8KKyAgICBjb25zdCBVU0hPUlQgcHJlZml4X2xlbiA9IDQ7CisgICAgVVNIT1JUIHByaW50X2xlbiA9IDA7CisgICAgVVNIT1JUIHJkYl9zaXplID0gMDsKKyAgICBQUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOworCisgICAgLyogSnVuY3Rpb24gcG9pbnQgY3JlYXRpb24gKi8KKyAgICBIQU5ETEUganVuY3Rpb24gPSBOVUxMOworICAgIERXT1JEIHJldCA9IDA7CisKKyAgICBpZiAoc3JjX3BhdGggPT0gTlVMTCB8fCBkc3RfcGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpOworCisgICAgaWYgKHdjc25jbXAoc3JjX3BhdGgsIEwiXFw/P1xcIiwgcHJlZml4X2xlbikgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKTsKKworICAgIC8qIEFkanVzdCBwcml2aWxlZ2VzIHRvIGFsbG93IHJld3JpdGluZyBkaXJlY3RvcnkgZW50cnkgYXMgYQorICAgICAgIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghT3BlblByb2Nlc3NUb2tlbihHZXRDdXJyZW50UHJvY2VzcygpLCBUT0tFTl9BREpVU1RfUFJJVklMRUdFUywgJnRva2VuKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgaWYgKCFMb29rdXBQcml2aWxlZ2VWYWx1ZShOVUxMLCBTRV9SRVNUT1JFX05BTUUsICZ0cC5Qcml2aWxlZ2VzWzBdLkx1aWQpKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICB0cC5Qcml2aWxlZ2VDb3VudCA9IDE7CisgICAgdHAuUHJpdmlsZWdlc1swXS5BdHRyaWJ1dGVzID0gU0VfUFJJVklMRUdFX0VOQUJMRUQ7CisgICAgaWYgKCFBZGp1c3RUb2tlblByaXZpbGVnZXModG9rZW4sIEZBTFNFLCAmdHAsIHNpemVvZihUT0tFTl9QUklWSUxFR0VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgaWYgKEdldEZpbGVBdHRyaWJ1dGVzVyhzcmNfcGF0aCkgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIFN0b3JlIHRoZSBhYnNvbHV0ZSBsaW5rIHRhcmdldCBwYXRoIGxlbmd0aCBpbiBwcmludF9sZW4uICovCisgICAgcHJpbnRfbGVuID0gKFVTSE9SVClHZXRGdWxsUGF0aE5hbWVXKHNyY19wYXRoLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAocHJpbnRfbGVuID09IDApCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIE5VTCB0ZXJtaW5hdG9yIHNob3VsZCBub3QgYmUgcGFydCBvZiBwcmludF9sZW4uICovCisgICAgLS1wcmludF9sZW47CisKKyAgICAvKiBSRVBBUlNFX0RBVEFfQlVGRkVSIHVzYWdlIGlzIGhlYXZpbHkgdW5kZXItZG9jdW1lbnRlZCwgZXNwZWNpYWxseSBmb3IKKyAgICAgICBqdW5jdGlvbiBwb2ludHMuIEhlcmUncyB3aGF0IEkndmUgbGVhcm5lZCBhbG9uZyB0aGUgd2F5OgorICAgICAgIC0gQSBqdW5jdGlvbiBwb2ludCBoYXMgdHdvIGNvbXBvbmVudHM6IGEgcHJpbnQgbmFtZSBhbmQgYSBzdWJzdGl0dXRlCisgICAgICAgICBuYW1lLiBUaGV5IGJvdGggZGVzY3JpYmUgdGhlIGxpbmsgdGFyZ2V0LCBidXQgdGhlIHN1YnN0aXR1dGUgbmFtZSBpcworICAgICAgICAgdGhlIHBoeXNpY2FsIHRhcmdldCBhbmQgdGhlIHByaW50IG5hbWUgaXMgc2hvd24gaW4gZGlyZWN0b3J5IGxpc3RpbmdzLgorICAgICAgIC0gVGhlIHByaW50IG5hbWUgbXVzdCBiZSBhIG5hdGl2ZSBuYW1lLCBwcmVmaXhlZCB3aXRoICJcPz9cIi4KKyAgICAgICAtIEJvdGggbmFtZXMgYXJlIHN0b3JlZCBhZnRlciBlYWNoIG90aGVyIGluIHRoZSBzYW1lIGJ1ZmZlciAodGhlCisgICAgICAgICBQYXRoQnVmZmVyKSBhbmQgYm90aCBtdXN0IGJlIE5VTC10ZXJtaW5hdGVkLgorICAgICAgIC0gVGhlcmUgYXJlIGZvdXIgbWVtYmVycyBkZWZpbmluZyB0aGVpciByZXNwZWN0aXZlIG9mZnNldCBhbmQgbGVuZ3RoCisgICAgICAgICBpbnNpZGUgUGF0aEJ1ZmZlcjogU3Vic3RpdHV0ZU5hbWVPZmZzZXQsIFN1YnN0aXR1dGVOYW1lTGVuZ3RoLAorICAgICAgICAgUHJpbnROYW1lT2Zmc2V0IGFuZCBQcmludE5hbWVMZW5ndGguCisgICAgICAgLSBUaGUgdG90YWwgc2l6ZSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGZvciB0aGUgUkVQQVJTRV9EQVRBX0JVRkZFUiwgdGh1cywKKyAgICAgICAgIGlzIHRoZSBzdW0gb2Y6CisgICAgICAgICAtIHRoZSBmaXhlZCBoZWFkZXIgc2l6ZSAoUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSkKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIE1vdW50UG9pbnRSZXBhcnNlQnVmZmVyIG1lbWJlciB3aXRob3V0IHRoZSBQYXRoQnVmZmVyCisgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBwcmVmaXggKCJcPz9cIikgaW4gYnl0ZXMKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByaW50IG5hbWUgaW4gYnl0ZXMKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHN1YnN0aXR1dGUgbmFtZSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0d28gTlVMIHRlcm1pbmF0b3JzIGluIGJ5dGVzICovCisgICAgcmRiX3NpemUgPSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKKyAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIpIC0KKyAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlcikgKworICAgICAgICAvKiBUd28gKzEncyBmb3IgTlVMIHRlcm1pbmF0b3JzLiAqLworICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbiArIDEgKyBwcmludF9sZW4gKyAxKSAqIHNpemVvZihXQ0hBUik7CisgICAgcmRiID0gKFBSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CisgICAgaWYgKHJkYiA9PSBOVUxMKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBtZW1zZXQocmRiLCAwLCByZGJfc2l6ZSk7CisgICAgcmRiLT5SZXBhcnNlVGFnID0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7CisgICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0ID0gMDsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lTGVuZ3RoID0KKyAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4pICogc2l6ZW9mKFdDSEFSKTsKKyAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlByaW50TmFtZU9mZnNldCA9CisgICAgICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVMZW5ndGggKyBzaXplb2YoV0NIQVIpOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoID0gcHJpbnRfbGVuICogc2l6ZW9mKFdDSEFSKTsKKworICAgIC8qIFN0b3JlIHRoZSBmdWxsIG5hdGl2ZSBwYXRoIG9mIGxpbmsgdGFyZ2V0IGF0IHRoZSBzdWJzdGl0dXRlIG5hbWUKKyAgICAgICBvZmZzZXQgKDApLiAqLworICAgIHdjc2NweShyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIsIEwiXFw/P1xcIik7CisgICAgaWYgKEdldEZ1bGxQYXRoTmFtZVcoc3JjX3BhdGgsIHByaW50X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsgcHJlZml4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSA9PSAwKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgYnV0IHRoZSBuYXRpdmUgcHJlZml4IHRvIHRoZSBwcmludCBuYW1lIG9mZnNldC4gKi8KKyAgICB3Y3NjcHkocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsKKyAgICAgICAgICAgICBwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSwKKyAgICAgICAgICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKyBwcmVmaXhfbGVuKTsKKworICAgIC8qIENyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgdGhlIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghQ3JlYXRlRGlyZWN0b3J5Vyhkc3RfcGF0aCwgTlVMTCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIGp1bmN0aW9uID0gQ3JlYXRlRmlsZVcoZHN0X3BhdGgsIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIE5VTEwsCisgICAgICAgIE9QRU5fRVhJU1RJTkcsCisgICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQgfCBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgaWYgKGp1bmN0aW9uID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBNYWtlIHRoZSBkaXJlY3RvcnkgZW50cnkgYSBqdW5jdGlvbiBwb2ludC4gKi8KKyAgICBpZiAoIURldmljZUlvQ29udHJvbChqdW5jdGlvbiwgRlNDVExfU0VUX1JFUEFSU0VfUE9JTlQsIHJkYiwgcmRiX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnJldCwgTlVMTCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworY2xlYW51cDoKKyAgICByZXQgPSBHZXRMYXN0RXJyb3IoKTsKKworICAgIENsb3NlSGFuZGxlKHRva2VuKTsKKyAgICBDbG9zZUhhbmRsZShqdW5jdGlvbik7CisgICAgUHlNZW1fUmF3RnJlZShyZGIpOworCisgICAgaWYgKHJldCAhPSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIocmV0KTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZU5hbWVkUGlwZSAtPiBIQU5ETEUKKworICAgIG5hbWU6IExQQ1RTVFIKKyAgICBvcGVuX21vZGU6IERXT1JECisgICAgcGlwZV9tb2RlOiBEV09SRAorICAgIG1heF9pbnN0YW5jZXM6IERXT1JECisgICAgb3V0X2J1ZmZlcl9zaXplOiBEV09SRAorICAgIGluX2J1ZmZlcl9zaXplOiBEV09SRAorICAgIGRlZmF1bHRfdGltZW91dDogRFdPUkQKKyAgICBzZWN1cml0eV9hdHRyaWJ1dGVzOiBMUFNFQ1VSSVRZX0FUVFJJQlVURVMKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBvcGVuX21vZGUsIERXT1JEIHBpcGVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbWF4X2luc3RhbmNlcywgRFdPUkQgb3V0X2J1ZmZlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBpbl9idWZmZXJfc2l6ZSwgRFdPUkQgZGVmYXVsdF90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NGNhMmEwNmEyMTliNTIzIGlucHV0PTVhNzM1MzBiODRkOGJjMzddKi8KK3sKICAgICBIQU5ETEUgaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKKyAgICBoYW5kbGUgPSBDcmVhdGVOYW1lZFBpcGUobmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCi0iQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKLVxuXAotQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCi13cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAotXG5cCi1waXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZVBpcGUKKworICAgIHBpcGVfYXR0cnM6IG9iamVjdAorICAgICAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLgorICAgIHNpemU6IERXT1JECisgICAgLworCitDcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUuCisKK1JldHVybnMgYSAyLXR1cGxlIG9mIGhhbmRsZXMsIHRvIHRoZSByZWFkIGFuZCB3cml0ZSBlbmRzIG9mIHRoZSBwaXBlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZVBpcGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBpcGVfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZjk5ZjNiNDIyMmJjNzggaW5wdXQ9YzRmMmNmYTU2ZWY2OGQ5MF0qLwogewogICAgIEhBTkRMRSByZWFkX3BpcGU7CiAgICAgSEFORExFIHdyaXRlX3BpcGU7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBQeU9iamVjdCogcGlwZV9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgRFdPUkQgc2l6ZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfRFdPUkQgIjpDcmVhdGVQaXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTU4NiwyMCArNzkxLDM2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihDcmVhdGVQcm9jZXNzX2RvYywKLSJDcmVhdGVQcm9jZXNzKGFwcF9uYW1lLCBjbWRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLFxuXAotICAgICAgICAgICAgICAgaW5oZXJpdCwgZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJkaXIsXG5cCi0gICAgICAgICAgICAgICBzdGFydHVwX2luZm8pIC0+IChwcm9jX2hhbmRsZSwgdGhyZWFkX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgdGlkKVxuXAotXG5cCi1DcmVhdGUgYSBuZXcgcHJvY2VzcyBhbmQgaXRzIHByaW1hcnkgdGhyZWFkLiBUaGUgcmV0dXJuXG5cCi12YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSxcblwKLXByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuXG5cCi1cblwKLXByb2NfYXR0cnMgYW5kIHRocmVhZF9hdHRycyBhcmUgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlUHJvY2VzcworCisgICAgYXBwbGljYXRpb25fbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgIGNvbW1hbmRfbGluZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgIHByb2NfYXR0cnM6IG9iamVjdAorICAgICAgICBJZ25vcmVkIGludGVybmFsbHksIGNhbiBiZSBOb25lLgorICAgIHRocmVhZF9hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgaW5oZXJpdF9oYW5kbGVzOiBCT09MCisgICAgY3JlYXRpb25fZmxhZ3M6IERXT1JECisgICAgZW52X21hcHBpbmc6IG9iamVjdAorICAgIGN1cnJlbnRfZGlyZWN0b3J5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc3RhcnR1cF9pbmZvOiBvYmplY3QKKyAgICAvCisKK0NyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuCisKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsCitwcm9jZXNzIElELCBhbmQgdGhyZWFkIElELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0NyZWF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9DcmVhdGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZSwgUHlPYmplY3QgKnByb2NfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzLCBCT09MIGluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzLCBQeU9iamVjdCAqZW52X21hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODc0YmIzNTBmZjllZDRlZiBpbnB1dD00YTQzYjA1MDM4ZDYzOWJiXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7CiAgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKQEAgLTYwNywyOCArODI4LDYgQEAKICAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7CiAgICAgd2NoYXJfdCAqd2Vudmlyb25tZW50OwogCi0gICAgd2NoYXJfdCogYXBwbGljYXRpb25fbmFtZTsKLSAgICB3Y2hhcl90KiBjb21tYW5kX2xpbmU7Ci0gICAgUHlPYmplY3QqIHByb2Nlc3NfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIFB5T2JqZWN0KiB0aHJlYWRfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOwotICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOwotICAgIFB5T2JqZWN0KiBlbnZfbWFwcGluZzsKLSAgICB3Y2hhcl90KiBjdXJyZW50X2RpcmVjdG9yeTsKLSAgICBQeU9iamVjdCogc3RhcnR1cF9pbmZvOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPTyIgRl9CT09MIEZfRFdPUkQgIk9aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0aW9uX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVudl9tYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0dXBfaW5mbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgWmVyb01lbW9yeSgmc2ksIHNpemVvZihzaSkpOwogICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKIApAQCAtNjgyLDQxICs4ODEsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKIH0KIAotUHlEb2NfU1RSVkFSKER1cGxpY2F0ZUhhbmRsZV9kb2MsCi0iRHVwbGljYXRlSGFuZGxlKHNvdXJjZV9wcm9jX2hhbmRsZSwgc291cmNlX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgdGFyZ2V0X3Byb2NfaGFuZGxlLCB0YXJnZXRfaGFuZGxlLCBhY2Nlc3MsXG5cCi0gICAgICAgICAgICAgICAgIGluaGVyaXRbLCBvcHRpb25zXSkgLT4gaGFuZGxlXG5cCi1cblwKLVJldHVybiBhIGR1cGxpY2F0ZSBoYW5kbGUgb2JqZWN0LlxuXAotXG5cCi1UaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuXAotaGFuZGxlLiBUaGVyZWZvcmUsIGFueSBjaGFuZ2VzIHRvIHRoZSBvYmplY3QgYXJlIHJlZmxlY3RlZFxuXAotdGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkR1cGxpY2F0ZUhhbmRsZSAtPiBIQU5ETEUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9EdXBsaWNhdGVIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZTogSEFORExFCisgICAgc291cmNlX2hhbmRsZTogSEFORExFCisgICAgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlOiBIQU5ETEUKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBpbmhlcml0X2hhbmRsZTogQk9PTAorICAgIG9wdGlvbnM6IERXT1JEID0gMAorICAgIC8KKworUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuCisKK1RoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsCitoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkCit0aHJvdWdoIGJvdGggaGFuZGxlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9EdXBsaWNhdGVIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc291cmNlX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsIEJPT0wgaW5oZXJpdF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDc5OTUxNWI2OGI1MjM3YiBpbnB1dD1iOTMzZTNmMjM1NmE4YzEyXSovCiB7CiAgICAgSEFORExFIHRhcmdldF9oYW5kbGU7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOwotICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOwotICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7Ci0gICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7Ci0gICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKLSAgICBEV09SRCBvcHRpb25zID0gMDsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFIEZfSEFORExFIEZfSEFORExFIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICI6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlc3VsdCA9IER1cGxpY2F0ZUhhbmRsZSgKICAgICAgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlLApAQCAtNzI5LDk4ICs5MjMsMTExIEBACiAgICAgKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmICghIHJlc3VsdCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICB9CiAKLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKHRhcmdldF9oYW5kbGUpOworICAgIHJldHVybiB0YXJnZXRfaGFuZGxlOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkV4aXRQcm9jZXNzCisKKyAgICBFeGl0Q29kZTogVUlOVAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBVSU5UIEV4aXRDb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZjNiNDk5YzI0Y2VkYzggaW5wdXQ9NGYwNTQ2NmE5NDA2YzU1OF0qLwogewotICAgIFVJTlQgdUV4aXRDb2RlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfVUlOVCwgJnVFeGl0Q29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgI2lmIGRlZmluZWQoUHlfREVCVUcpCiAgICAgICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTfFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAogICAgICAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwogICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKICAgICAjZW5kaWYKIAotICAgIEV4aXRQcm9jZXNzKHVFeGl0Q29kZSk7CisgICAgRXhpdFByb2Nlc3MoRXhpdENvZGUpOwogCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRDdXJyZW50UHJvY2Vzc19kb2MsCi0iR2V0Q3VycmVudFByb2Nlc3MoKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MgLT4gSEFORExFCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyOWFjM2FkNWY4MjkxZSBpbnB1dD1iMjEzNDAzZmQ0Yjk2YjQxXSovCiB7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShHZXRDdXJyZW50UHJvY2VzcygpKTsKKyAgICByZXR1cm4gR2V0Q3VycmVudFByb2Nlc3MoKTsKIH0KIAotUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCi0iR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCi1cblwKLVJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0RXhpdENvZGVQcm9jZXNzIC0+IERXT1JECiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBwcm9jZXNzOiBIQU5ETEUKKyAgICAvCisKK1JldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIERXT1JECitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBwcm9jZXNzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiMTBmMDg0OGE0MTBmNjUgaW5wdXQ9NjFiNmJmYzdkYzJlZTM3NF0qLwogewogICAgIERXT1JEIGV4aXRfY29kZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOwogCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmICghIHJlc3VsdCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIGV4aXRfY29kZSA9IERXT1JEX01BWDsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZXhpdF9jb2RlKTsKKyAgICByZXR1cm4gZXhpdF9jb2RlOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldExhc3RFcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldExhc3RFcnJvciAtPiBEV09SRAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgRFdPUkQKK193aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZWEwMGQ4ZTY3YmRkMDU2IGlucHV0PTYyZDQ3ZmI5YmNlMDM4YmFdKi8KIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7CisgICAgcmV0dXJuIEdldExhc3RFcnJvcigpOwogfQogCi1QeURvY19TVFJWQVIoR2V0TW9kdWxlRmlsZU5hbWVfZG9jLAotIkdldE1vZHVsZUZpbGVOYW1lKG1vZHVsZSkgLT4gcGF0aFxuXAotXG5cCi1SZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zXG5cCi10aGUgc3BlY2lmaWVkIG1vZHVsZS4gVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlXG5cCi1jdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLVRoZSBtb2R1bGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGhhbmRsZSB0byB0aGUgbG9hZGVkIG1vZHVsZVxuXAotd2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsIFxuXAotR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcblwKLW9mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lCisKKyAgICBtb2R1bGVfaGFuZGxlOiBITU9EVUxFCisgICAgLworCitSZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIG1vZHVsZS4KKworVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlCit3aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwKK0dldE1vZHVsZUZpbGVOYW1lIHJldHJpZXZlcyB0aGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlCitvZiB0aGUgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBITU9EVUxFIG1vZHVsZV9oYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTAwNjNkYzYzYmRiZmExOCBpbnB1dD02ZDY2ZmY3ZGVjYTVkMTFmXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7Ci0gICAgSE1PRFVMRSBtb2R1bGU7CiAgICAgV0NIQVIgZmlsZW5hbWVbTUFYX1BBVEhdOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CisgICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZV9oYW5kbGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CiAgICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOwogCiAgICAgaWYgKCEgcmVzdWx0KQpAQCAtODI5LDgzICsxMDM2LDk2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZmlsZW5hbWUsIHdjc2xlbihmaWxlbmFtZSkpOwogfQogCi1QeURvY19TVFJWQVIoR2V0U3RkSGFuZGxlX2RvYywKLSJHZXRTdGRIYW5kbGUoaGFuZGxlKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiBhIGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGRldmljZVxuXAotKFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBTVERfRVJST1JfSEFORExFKS5cblwKLVRoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0U3RkSGFuZGxlIC0+IEhBTkRMRQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldFN0ZEhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgc3RkX2hhbmRsZTogRFdPUkQKKyAgICAgICAgT25lIG9mIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBvciBTVERfRVJST1JfSEFORExFLgorICAgIC8KKworUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlLgorCitUaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfR2V0U3RkSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgRFdPUkQgc3RkX2hhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZjVjYTI4YjI4YzZmYWQyIGlucHV0PTA3MDE2YjA2YTJmYzg4MjZdKi8KIHsKICAgICBIQU5ETEUgaGFuZGxlOwotICAgIERXT1JEIHN0ZF9oYW5kbGU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgIjpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShzdGRfaGFuZGxlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwogCi0gICAgaWYgKCEgaGFuZGxlKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRWZXJzaW9uIC0+IGxvbmcKKworUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NWEyZjhhZDNiOTQ4Y2E4IGlucHV0PWUyMWRmZjhkMGJhZWRlZDJdKi8KKy8qIERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgYWJvdXQgR2V0VmVyc2lvbkV4IGFzIHRoZSByZXN1bHQgaXMKKyAgIGJlaW5nIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBjYWxsZXIsIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgIHVzaW5nIGl0IGNvcnJlY3RseS4gKi8KKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKKworeworICAgIHJldHVybiBHZXRWZXJzaW9uKCk7Cit9CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3BlblByb2Nlc3MgLT4gSEFORExFCisKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBpbmhlcml0X2hhbmRsZTogQk9PTAorICAgIHByb2Nlc3NfaWQ6IERXT1JECisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX09wZW5Qcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgRFdPUkQgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgQk9PTCBpbmhlcml0X2hhbmRsZSwgRFdPUkQgcHJvY2Vzc19pZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YmM1MmVkYTgyYTNkMjI2IGlucHV0PWVjOThjNGNmNGVhMmVjMzZdKi8KK3sKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKKyAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIH0KIAotICAgIC8qIG5vdGU6IHJldHVybnMgaW50ZWdlciwgbm90IGhhbmRsZSBvYmplY3QgKi8KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotUHlEb2NfU1RSVkFSKEdldFZlcnNpb25fZG9jLAotIkdldFZlcnNpb24oKSAtPiB2ZXJzaW9uXG5cCi1cblwKLVJldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuUGVla05hbWVkUGlwZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBzaXplOiBpbnQgPSAwCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0dldFZlcnNpb24oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9QZWVrTmFtZWRQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTZjOTA4ZTJmYjYzYzc5OCBpbnB1dD1jN2FhNTNiZmJjZTY5ZDcwXSovCiB7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoR2V0VmVyc2lvbigpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7Ci0gICAgRFdPUkQgZHdQcm9jZXNzSWQ7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEIEZfQk9PTCBGX0RXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOwotICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfUGVla05hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEw7CiAgICAgRFdPUkQgbnJlYWQsIG5hdmFpbCwgbmxlZnQ7CiAgICAgQk9PTCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiICwgJmhhbmRsZSwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MzgsMjMgKzExNTgsMjQgQEAKICAgICB9CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuUmVhZEZpbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgc2l6ZTogaW50CisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzY5NWRiNGRiOTdiMTM1IGlucHV0PThkZDgxMDE5NGU4NmFjN2RdKi8KIHsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBzaXplOwogICAgIERXT1JEIG5yZWFkOwogICAgIFB5T2JqZWN0ICpidWY7CiAgICAgQk9PTCByZXQ7Ci0gICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKICAgICBEV09SRCBlcnI7CiAgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAoIWJ1ZikKQEAgLTk5NywxOCArMTIxOCwyNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIGJ1ZiwgZXJyKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZQorCisgICAgbmFtZWRfcGlwZTogSEFORExFCisgICAgbW9kZTogb2JqZWN0CisgICAgbWF4X2NvbGxlY3Rpb25fY291bnQ6IG9iamVjdAorICAgIGNvbGxlY3RfZGF0YV90aW1lb3V0OiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBuYW1lZF9waXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXhfY29sbGVjdGlvbl9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjVhYTNjMjhkZWUyMjNjZSBpbnB1dD05MTQyZDcyMTYzZDBmYWE2XSovCiB7Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgUHlPYmplY3QgKm9BcmdzWzNdOworICAgIFB5T2JqZWN0ICpvQXJnc1szXSA9IHttb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXR9OwogICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAogICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgewpAQCAtMTAyMCw0OSArMTI1MCw1NCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKKyAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKG5hbWVkX3BpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAotIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKLVxuXAotVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOworCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLlRlcm1pbmF0ZVByb2Nlc3MKKworICAgIGhhbmRsZTogSEFORExFCisgICAgZXhpdF9jb2RlOiBVSU5UCisgICAgLworCitUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBleGl0X2NvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM3YzFiYjYyMTlhY2E4YiBpbnB1dD1kNmJjMGFhMWVlM2JiNGRmXSovCiB7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBIQU5ETEUgcHJvY2VzczsKLSAgICBVSU5UIGV4aXRfY29kZTsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfVUlOVCAiOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKKyAgICByZXN1bHQgPSBUZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgZXhpdF9jb2RlKTsKIAogICAgIGlmICghIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5XYWl0TmFtZWRQaXBlCisKKyAgICBuYW1lOiBMUENUU1RSCisgICAgdGltZW91dDogRFdPUkQKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsIERXT1JEIHRpbWVvdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWJjYTVlMDJmNDQ4YzlkNyBpbnB1dD0zNmZjNzgxMjkxYjE4NjJjXSovCiB7Ci0gICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7Ci0gICAgRFdPUkQgblRpbWVPdXQ7CiAgICAgQk9PTCBzdWNjZXNzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKKyAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShuYW1lLCB0aW1lb3V0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFzdWNjZXNzKQpAQCAtMTA3MSwyMSArMTMwNiwyNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMKKworICAgIGhhbmRsZV9zZXE6IG9iamVjdAorICAgIHdhaXRfZmxhZzogQk9PTAorICAgIG1pbGxpc2Vjb25kczogRFdPUkQoY19kZWZhdWx0PSdJTkZJTklURScpID0gX3dpbmFwaS5JTkZJTklURQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlX3NlcSwgQk9PTCB3YWl0X2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWNiNDQwNzI4ZDA2ZDEzMCBpbnB1dD0zNmY3NmNhMDU3Y2QyOGEwXSovCiB7CiAgICAgRFdPUkQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOwogICAgIEhBTkRMRSBoYW5kbGVzW01BWElNVU1fV0FJVF9PQkpFQ1RTXTsKICAgICBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5oYW5kbGVzLCBpOwotICAgIEJPT0wgd2FpdF9mbGFnOwotICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0JPT0wgInwiIEZfRFdPUkQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoYW5kbGVfc2VxKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTEzOSw1MyArMTM3OCw1NyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgcmVzdWx0KTsKIH0KIAotUHlEb2NfU1RSVkFSKFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jLAotIldhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCB0aW1lb3V0KSAtPiByZXN1bHRcblwKLVxuXAotV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcblwKLXRoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWRcblwKLWluIG1pbGxpc2Vjb25kcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdCAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBtaWxsaXNlY29uZHM6IERXT1JECisgICAgLworCitXYWl0IGZvciBhIHNpbmdsZSBvYmplY3QuCisKK1dhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yCit0aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkCitpbiBtaWxsaXNlY29uZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbWlsbGlzZWNvbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0YWU0MGMyNjk3NDljNDggaW5wdXQ9NDQzZDFhYjA3NmVkYzdiMV0qLwogewogICAgIERXT1JEIHJlc3VsdDsKIAotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgRFdPUkQgbWlsbGlzZWNvbmRzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9EV09SRCAiOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV3JpdGVGaWxlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIGJ1ZmZlcjogb2JqZWN0CisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK193aW5hcGlfV3JpdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgUHlPYmplY3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZTcwZWE0MWY0ZDJhMWQgaW5wdXQ9NTE4NDZhNWFmNTIwNTNmZF0qLwogewotICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlfYnVmZmVyIF9idWYsICpidWY7Ci0gICAgUHlPYmplY3QgKmJ1Zm9iajsKICAgICBEV09SRCBsZW4sIHdyaXR0ZW47CiAgICAgQk9PTCByZXQ7Ci0gICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKICAgICBEV09SRCBlcnI7CiAgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIC8qIEZpcnN0IGdldCBoYW5kbGUgYW5kIHVzZV9vdmVybGFwcGVkIHRvIGtub3cgd2hpY2ggUHlfYnVmZmVyIHRvIHVzZSAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmJ1Zm9iaiwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKICAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CkBAIC0xMTk2LDcgKzE0MzksNyBAQAogICAgIGVsc2UKICAgICAgICAgYnVmID0gJl9idWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGJ1Zm9iaiwgInkqIiwgYnVmKSkgeworICAgIGlmICghUHlBcmdfUGFyc2UoYnVmZmVyLCAieSoiLCBidWYpKSB7CiAgICAgICAgIFB5X1hERUNSRUYob3ZlcmxhcHBlZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEyMjksNTIgKzE0NzIsMzAgQEAKIAogCiBzdGF0aWMgUHlNZXRob2REZWYgd2luYXBpX2Z1bmN0aW9uc1tdID0gewotICAgIHsiQ2xvc2VIYW5kbGUiLCB3aW5hcGlfQ2xvc2VIYW5kbGUsIE1FVEhfVkFSQVJHUywKLSAgICAgQ2xvc2VIYW5kbGVfZG9jfSwKLSAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsICIifSwKLSAgICB7IkNyZWF0ZUZpbGUiLCB3aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJDcmVhdGVOYW1lZFBpcGUiLCB3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkNyZWF0ZVBpcGUiLCB3aW5hcGlfQ3JlYXRlUGlwZSwgTUVUSF9WQVJBUkdTLAotICAgICBDcmVhdGVQaXBlX2RvY30sCi0gICAgeyJDcmVhdGVQcm9jZXNzIiwgd2luYXBpX0NyZWF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgQ3JlYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKLSAgICB7IkV4aXRQcm9jZXNzIiwgd2luYXBpX0V4aXRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCB3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldEV4aXRDb2RlUHJvY2Vzc19kb2N9LAotICAgIHsiR2V0TGFzdEVycm9yIiwgd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsCi0gICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRNb2R1bGVGaWxlTmFtZSIsIHdpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAotICAgIHsiR2V0U3RkSGFuZGxlIiwgd2luYXBpX0dldFN0ZEhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRTdGRIYW5kbGVfZG9jfSwKLSAgICB7IkdldFZlcnNpb24iLCB3aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9WQVJBUkdTLAotICAgICBHZXRWZXJzaW9uX2RvY30sCi0gICAgeyJPcGVuUHJvY2VzcyIsIHdpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJQZWVrTmFtZWRQaXBlIiwgd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAiIn0sCi0gICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIHdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgVGVybWluYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiV2FpdE5hbWVkUGlwZSIsIHdpbmFwaV9XYWl0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLCB3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywKLSAgICAgV2FpdEZvclNpbmdsZU9iamVjdF9kb2N9LAotICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICIifSwKKyAgICBfV0lOQVBJX0NMT1NFSEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURUZJTEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVOQU1FRFBJUEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURUpVTkNUSU9OX01FVEhPRERFRgorICAgIF9XSU5BUElfRFVQTElDQVRFSEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfRVhJVFBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRDVVJSRU5UUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVEVYSVRDT0RFUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVExBU1RFUlJPUl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVE1PRFVMRUZJTEVOQU1FX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUU1RESEFORExFX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUVkVSU0lPTl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX09QRU5QUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfUEVFS05BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRgorICAgIF9XSU5BUElfU0VUTkFNRURQSVBFSEFORExFU1RBVEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9URVJNSU5BVEVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfV0FJVE5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1dBSVRGT1JNVUxUSVBMRU9CSkVDVFNfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XQUlURk9SU0lOR0xFT0JKRUNUX01FVEhPRERFRgorICAgIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IDVhYjFhYjYuLmEzY2NmOTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTE1LDYgKzE1LDExIEBACiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwogI2VuZGlmIC8qICFTVERDX0hFQURFUlMgKi8KIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIGFycmF5CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03ZDFiOGQ3ZjU5NThmZDgzXSovCisKIHN0cnVjdCBhcnJheW9iamVjdDsgLyogRm9yd2FyZCAqLwogCiAvKiBBbGwgcG9zc2libGUgYXJyYXlkZXNjciB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gdGhlIHZlY3RvciAiZGVzY3JpcHRvcnMiCkBAIC00Miw2ICs0Nyw2MyBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFycmF5dHlwZTsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGFycmF5b2JqZWN0ICphbzsKKyAgICBQeU9iamVjdCogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7Cit9IGFycmF5aXRlcm9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlOworCisjZGVmaW5lIFB5QXJyYXlJdGVyX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeUFycmF5SXRlcl9UeXBlKQorCitlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgeworICAgIFVOS05PV05fRk9STUFUID0gLTEsCisgICAgLyogVU5LTk9XTl9GT1JNQVQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBtYWNoaW5lIGZvcm1hdCBmb3IgYW4KKyAgICAgKiBhcnJheSB0eXBlIGNvZGUgY2Fubm90IGJlIGludGVycHJldGVkLiBXaGVuIHRoaXMgb2NjdXJzLCBhIGxpc3Qgb2YKKyAgICAgKiBQeXRob24gb2JqZWN0cyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkKKyAgICAgKiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtZW1vcnkgY29udGVudCBvZiB0aGUgYXJyYXkgZGlyZWN0bHkuIEluIHRoYXQKKyAgICAgKiBjYXNlLCB0aGUgYXJyYXlfcmVjb25zdHJ1Y3RvciBtZWNoYW5pc20gaXMgYnlwYXNzZWQgY29tcGxldGVseSwgYW5kCisgICAgICogdGhlIHN0YW5kYXJkIGFycmF5IGNvbnN0cnVjdG9yIGlzIHVzZWQgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIFRoaXMgaXMgd2lsbCBtb3N0IGxpa2VseSBvY2N1ciB3aGVuIHRoZSBtYWNoaW5lIGRvZXNuJ3QgdXNlIElFRUUKKyAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLgorICAgICAqLworCisgICAgVU5TSUdORURfSU5UOCA9IDAsCisgICAgU0lHTkVEX0lOVDggPSAxLAorICAgIFVOU0lHTkVEX0lOVDE2X0xFID0gMiwKKyAgICBVTlNJR05FRF9JTlQxNl9CRSA9IDMsCisgICAgU0lHTkVEX0lOVDE2X0xFID0gNCwKKyAgICBTSUdORURfSU5UMTZfQkUgPSA1LAorICAgIFVOU0lHTkVEX0lOVDMyX0xFID0gNiwKKyAgICBVTlNJR05FRF9JTlQzMl9CRSA9IDcsCisgICAgU0lHTkVEX0lOVDMyX0xFID0gOCwKKyAgICBTSUdORURfSU5UMzJfQkUgPSA5LAorICAgIFVOU0lHTkVEX0lOVDY0X0xFID0gMTAsCisgICAgVU5TSUdORURfSU5UNjRfQkUgPSAxMSwKKyAgICBTSUdORURfSU5UNjRfTEUgPSAxMiwKKyAgICBTSUdORURfSU5UNjRfQkUgPSAxMywKKyAgICBJRUVFXzc1NF9GTE9BVF9MRSA9IDE0LAorICAgIElFRUVfNzU0X0ZMT0FUX0JFID0gMTUsCisgICAgSUVFRV83NTRfRE9VQkxFX0xFID0gMTYsCisgICAgSUVFRV83NTRfRE9VQkxFX0JFID0gMTcsCisgICAgVVRGMTZfTEUgPSAxOCwKKyAgICBVVEYxNl9CRSA9IDE5LAorICAgIFVURjMyX0xFID0gMjAsCisgICAgVVRGMzJfQkUgPSAyMQorfTsKKyNkZWZpbmUgTUFDSElORV9GT1JNQVRfQ09ERV9NSU4gMAorI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01BWCAyMQorCisKKy8qCisgKiBNdXN0IGNvbWUgYWZ0ZXIgYXJyYXlvYmplY3QsIGFycmF5aXRlcm9iamVjdCwKKyAqIGFuZCBlbnVtIG1hY2hpbmVfY29kZV90eXBlIGRlZmluaXRpb25zLgorICovCisjaW5jbHVkZSAiY2xpbmljL2FycmF5bW9kdWxlLmMuaCIKKwogI2RlZmluZSBhcnJheV9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmQXJyYXl0eXBlKQogI2RlZmluZSBhcnJheV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJkFycmF5dHlwZSkKIApAQCAtNDcxLDYgKzUzMywxMCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIEltcGxlbWVudGF0aW9ucyBvZiBhcnJheSBvYmplY3QgbWV0aG9kcy4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBhcnJheS5hcnJheSAiYXJyYXlvYmplY3QgKiIgIiZBcnJheXR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZDQzZDM3ZTk0MmE4ODU0XSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBuZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQpAQCAtNjg0LDE2ICs3NTAsMzUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbnA7CiB9CiAKKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19jb3B5X18KKworUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9jb3B5KGFycmF5b2JqZWN0ICphLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZWM3YzNmOTI1ZDk2MTllIGlucHV0PWFkMWVlNWIwODY5NjVmMDldKi8KIHsKLSAgICByZXR1cm4gYXJyYXlfc2xpY2UoYSwgMCwgUHlfU0laRShhKSk7CisgICAgcmV0dXJuIGFycmF5X3NsaWNlKHNlbGYsIDAsIFB5X1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIoY29weV9kb2MsCi0iY29weShhcnJheSlcblwKLVxuXAotIFJldHVybiBhIGNvcHkgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19kZWVwY29weV9fCisKKyAgICB1bnVzZWQ6IG9iamVjdAorICAgIC8KKworUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2RlZXBjb3B5X18oYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWVjNzQ4ZDhlMTRhOWZhYSBpbnB1dD0yNDA1ZWNiNDkzMzc0OGM0XSovCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X19fY29weV9fX2ltcGwoc2VsZik7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9jb25jYXQoYXJyYXlvYmplY3QgKmEsIFB5T2JqZWN0ICpiYikKQEAgLTk2MSw4ICsxMDQ2LDE4IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmNvdW50CisKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK1JldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdiBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9jb3VudChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9jb3VudChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2RkMzYyNGJmNzEzNWEzYSBpbnB1dD1kOWJjZTlkNjVlMzlkMWY1XSovCiB7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtOTg0LDEzICsxMDc5LDE5IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChjb3VudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3VudF9kb2MsCi0iY291bnQoeClcblwKLVxuXAotUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB4IGluIHRoZSBhcnJheS4iKTsKKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuaW5kZXgKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmV0dXJuIGluZGV4IG9mIGZpcnN0IG9jY3VycmVuY2Ugb2YgdiBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9pbmRleChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9pbmRleChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQ4NDk4ZDMyNTYwMjE2NyBpbnB1dD1jZjYxOTg5OGM2NjQ5ZDA4XSovCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0xMDEzLDExICsxMTE0LDYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKLSJpbmRleCh4KVxuXAotXG5cCi1SZXR1cm4gaW5kZXggb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiB4IGluIHRoZSBhcnJheS4iKTsKLQogc3RhdGljIGludAogYXJyYXlfY29udGFpbnMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQogewpAQCAtMTAzNCw4ICsxMTMwLDE4IEBACiAgICAgcmV0dXJuIGNtcDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkucmVtb3ZlCisKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK1JlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3JlbW92ZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCithcnJheV9hcnJheV9yZW1vdmUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZjA2YmU5ZmRmOWRjZWIgaW5wdXQ9MGIxZTVhZWQyNTU5MDAyN10qLwogewogICAgIGludCBpOwogCkBAIC0xMDYyLDE4ICsxMTY4LDIzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAotInJlbW92ZSh4KVxuXAotXG5cCi1SZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgeCBpbiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5wb3AKKworICAgIGk6IFB5X3NzaXplX3QgPSAtMQorICAgIC8KKworUmV0dXJuIHRoZSBpLXRoIGVsZW1lbnQgYW5kIGRlbGV0ZSBpdCBmcm9tIHRoZSBhcnJheS4KKworaSBkZWZhdWx0cyB0byAtMS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3BvcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9wb3BfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjMWYwYzU0ZmU1MzA4ZTQgaW5wdXQ9OGU1ZmViNGMxYTExY2Q0NF0qLwogewotICAgIFB5X3NzaXplX3QgaSA9IC0xOwogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChQeV9TSVpFKHNlbGYpID09IDApIHsKICAgICAgICAgLyogU3BlY2lhbC1jYXNlIG1vc3QgY29tbW9uIGZhaWx1cmUgY2F1c2UgKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJwb3AgZnJvbSBlbXB0eSBhcnJheSIpOwpAQCAtMTA5NSwxMyArMTIwNiwxOCBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocG9wX2RvYywKLSJwb3AoW2ldKVxuXAotXG5cCi1SZXR1cm4gdGhlIGktdGggZWxlbWVudCBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGFycmF5LiBpIGRlZmF1bHRzIHRvIC0xLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZXh0ZW5kCisKKyAgICBiYjogb2JqZWN0CisgICAgLworCitBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9leHRlbmQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpiYikKK2FycmF5X2FycmF5X2V4dGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiZGRiYzhlOGJlZjg3MWQgaW5wdXQ9NDNiZTg2YWJhNWMzMWU0NF0qLwogewogICAgIGlmIChhcnJheV9kb19leHRlbmQoc2VsZiwgYmIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMDksMjkgKzEyMjUsMzUgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGV4dGVuZF9kb2MsCi0iZXh0ZW5kKGFycmF5IG9yIGl0ZXJhYmxlKVxuXAotXG5cCi0gQXBwZW5kIGl0ZW1zIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuaW5zZXJ0CisKKyAgICBpOiBQeV9zc2l6ZV90CisgICAgdjogb2JqZWN0CisgICAgLworCitJbnNlcnQgYSBuZXcgaXRlbSB2IGludG8gdGhlIGFycmF5IGJlZm9yZSBwb3NpdGlvbiBpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfaW5zZXJ0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X2luc2VydF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMzY0OGUyNzgzNDg1NjQgaW5wdXQ9NTU3N2QxYjQzODNlOTMxM10qLwogewotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsICZpLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBpbnMoc2VsZiwgaSwgdik7CiB9CiAKLVB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAotImluc2VydChpLHgpXG5cCi1cblwKLUluc2VydCBhIG5ldyBpdGVtIHggaW50byB0aGUgYXJyYXkgYmVmb3JlIHBvc2l0aW9uIGkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5idWZmZXJfaW5mbwogCitSZXR1cm4gYSB0dXBsZSAoYWRkcmVzcywgbGVuZ3RoKSBnaXZpbmcgdGhlIGN1cnJlbnQgbWVtb3J5IGFkZHJlc3MgYW5kIHRoZSBsZW5ndGggaW4gaXRlbXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgYXJyYXkncyBjb250ZW50cy4KKworVGhlIGxlbmd0aCBzaG91bGQgYmUgbXVsdGlwbGllZCBieSB0aGUgaXRlbXNpemUgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZQordGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9idWZmZXJfaW5mbyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWIyYTRlYzNhZTdlOThlNyBpbnB1dD1hNThiYWU1YzZlMWFjNmE2XSovCiB7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEwsICp2OwogCkBAIC0xMTU2LDI5ICsxMjc4LDM0IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotUHlEb2NfU1RSVkFSKGJ1ZmZlcl9pbmZvX2RvYywKLSJidWZmZXJfaW5mbygpIC0+IChhZGRyZXNzLCBsZW5ndGgpXG5cCi1cblwKLVJldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmRcblwKLXRoZSBsZW5ndGggaW4gaXRlbXMgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgYXJyYXkncyBjb250ZW50c1xuXAotVGhlIGxlbmd0aCBzaG91bGQgYmUgbXVsdGlwbGllZCBieSB0aGUgaXRlbXNpemUgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZVxuXAotdGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5hcHBlbmQKIAorICAgIHY6IG9iamVjdAorICAgIC8KKworQXBwZW5kIG5ldyB2YWx1ZSB2IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfYXBwZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2FwcGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzQ1YTA2NjliZjhkYjBlMiBpbnB1dD0wYjk4ZDlkNzhlNzhmMGZhXSovCiB7CiAgICAgcmV0dXJuIGlucyhzZWxmLCBQeV9TSVpFKHNlbGYpLCB2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGFwcGVuZF9kb2MsCi0iYXBwZW5kKHgpXG5cCi1cblwKLUFwcGVuZCBuZXcgdmFsdWUgeCB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmJ5dGVzd2FwCiAKK0J5dGVzd2FwIGFsbCBpdGVtcyBvZiB0aGUgYXJyYXkuCisKK0lmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLCA0LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpcworcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfYnl0ZXN3YXAoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9ieXRlc3dhcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmODIzNmNiZGYwZDkwYjUgaW5wdXQ9NmE4NTU5MWI5NTBhMDE4Nl0qLwogewogICAgIGNoYXIgKnA7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTIyOCwxNCArMTM1NSwxNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoYnl0ZXN3YXBfZG9jLAotImJ5dGVzd2FwKClcblwKLVxuXAotQnl0ZXN3YXAgYWxsIGl0ZW1zIG9mIHRoZSBhcnJheS4gIElmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLFxuXAotNCwgb3IgOCBieXRlcyBpbiBzaXplLCBSdW50aW1lRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkucmV2ZXJzZQorCitSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmV2ZXJzZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X3JldmVyc2VfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMDQ4NjhiMzZmNmY0MDg5IGlucHV0PWNkOTA0ZjAxYjI3ZDk2NmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplID0gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplOwogICAgIGNoYXIgKnAsICpxOwpAQCAtMTI2MSwyNyArMTM4OSwyNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIocmV2ZXJzZV9kb2MsCi0icmV2ZXJzZSgpXG5cCi1cblwKLVJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tZmlsZQogCisgICAgZjogb2JqZWN0CisgICAgbjogUHlfc3NpemVfdAorICAgIC8KIAotLyogRm9yd2FyZCAqLwotc3RhdGljIFB5T2JqZWN0ICphcnJheV9mcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKK1JlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbWZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYsIFB5X3NzaXplX3QgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzlmNjAwZTEwZjUzNTEwIGlucHV0PWUxODhhZmU4ZTU4YWRmNDBdKi8KIHsKLSAgICBQeU9iamVjdCAqZiwgKmIsICpyZXM7CisgICAgUHlPYmplY3QgKmIsICpyZXM7CiAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSA9IHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKLSAgICBQeV9zc2l6ZV90IG4sIG5ieXRlczsKKyAgICBQeV9zc2l6ZV90IG5ieXRlczsKICAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBpbnQgbm90X2Vub3VnaF9ieXRlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLCAmZiwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMwNSwxMyArMTQzMiw4IEBACiAKICAgICBub3RfZW5vdWdoX2J5dGVzID0gKFB5Qnl0ZXNfR0VUX1NJWkUoYikgIT0gbmJ5dGVzKTsKIAotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoTykiLCBiKTsKKyAgICByZXMgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXMoc2VsZiwgYik7CiAgICAgUHlfREVDUkVGKGIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gYXJyYXlfZnJvbWJ5dGVzKHNlbGYsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMzI1LDE1ICsxNDQ3LDE4IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21maWxlX2RvYywKLSJmcm9tZmlsZShmLCBuKVxuXAotXG5cCi1SZWFkIG4gb2JqZWN0cyBmcm9tIHRoZSBmaWxlIG9iamVjdCBmIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZVxuXAotYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2ZpbGUKIAorICAgIGY6IG9iamVjdAorICAgIC8KKworV3JpdGUgYWxsIGl0ZW1zIChhcyBtYWNoaW5lIHZhbHVlcykgdG8gdGhlIGZpbGUgb2JqZWN0IGYuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2ZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQorYXJyYXlfYXJyYXlfdG9maWxlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTJjZmE4MTI4ZGYwNzc3IGlucHV0PWIwNjY5YTQ4NGFhYjA4MzFdKi8KIHsKICAgICBQeV9zc2l6ZV90IG5ieXRlcyA9IFB5X1NJWkUoc2VsZikgKiBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgLyogV3JpdGUgNjRLIGJsb2NrcyBhdCBhIHRpbWUgKi8KQEAgLTEzNjgsMTQgKzE0OTMsMTggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHRvZmlsZV9kb2MsCi0idG9maWxlKGYpXG5cCi1cblwKLVdyaXRlIGFsbCBpdGVtcyAoYXMgbWFjaGluZSB2YWx1ZXMpIHRvIHRoZSBmaWxlIG9iamVjdCBmLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZnJvbWxpc3QKIAorICAgIGxpc3Q6IG9iamVjdAorICAgIC8KKworQXBwZW5kIGl0ZW1zIHRvIGFycmF5IGZyb20gbGlzdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGlzdCkKK2FycmF5X2FycmF5X2Zyb21saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGlzdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNjQxMWMyZDIyOGEzZTNmIGlucHV0PWJlMjYwNWE5NmM0OTY4MGZdKi8KIHsKICAgICBQeV9zc2l6ZV90IG47CiAKQEAgLTE0MDIsMTMgKzE1MzEsMTUgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21saXN0X2RvYywKLSJmcm9tbGlzdChsaXN0KVxuXAotXG5cCi1BcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkudG9saXN0CisKK0NvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9saXN0KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDBiNjBjYzllYWI4ZWY4OSBpbnB1dD1hOGQ3Nzg0YTk0Zjg2YjUzXSovCiB7CiAgICAgUHlPYmplY3QgKmxpc3QgPSBQeUxpc3RfTmV3KFB5X1NJWkUoc2VsZikpOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTE0MjksMTEgKzE1NjAsNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIodG9saXN0X2RvYywKLSJ0b2xpc3QoKSAtPiBsaXN0XG5cCi1cblwKLUNvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogZnJvbWJ5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKIHsKQEAgLTE0NzEsNDcgKzE1OTcsNTIgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuZnJvbXN0cmluZworCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgLworCitBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuCisKK1RoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMgaW5zdGVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWM0YmFhNzc5ZGY4NGNlIGlucHV0PWEzMzQxYTUxMmUxMWQ3NzNdKi8KIHsKLSAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgImZyb21zdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBVc2UgZnJvbWJ5dGVzKCkgaW5zdGVhZC4iLCAyKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqOmZyb21zdHJpbmciLCAmYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZnJvbWJ5dGVzKHNlbGYsICZidWZmZXIpOworICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgYnVmZmVyKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21zdHJpbmdfZG9jLAotImZyb21zdHJpbmcoc3RyaW5nKVxuXAotXG5cCi1BcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmVcblwKLXZhbHVlcywgYXMgaWYgaXQgaGFkIGJlZW4gcmVhZCBmcm9tIGEgZmlsZSB1c2luZyB0aGUgZnJvbWZpbGUoKSBtZXRob2QpLlxuXAotXG5cCi1UaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2UgZnJvbWJ5dGVzIGluc3RlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tYnl0ZXMKIAorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgLworCitBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5ODQyYzhmNzUxMGE1MTYgaW5wdXQ9MmJiZjJiNTNlYmZjYzk4OF0qLwogewotICAgIFB5X2J1ZmZlciBidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZnJvbWJ5dGVzKHNlbGYsICZidWZmZXIpOworICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgYnVmZmVyKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21ieXRlc19kb2MsCi0iZnJvbWJ5dGVzKGJ5dGVzdHJpbmcpXG5cCi1cblwKLUFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZVxuXAotdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2J5dGVzCiAKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzMxOGU0ZWRjZGMyYmI2IGlucHV0PTkwZWU0OTVmOTZkZTM0ZjVdKi8KIHsKICAgICBpZiAoUHlfU0laRShzZWxmKSA8PSBQWV9TU0laRV9UX01BWCAvIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5vYl9pdGVtLApAQCAtMTUyMSw0MCArMTY1Miw0NCBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHRvYnl0ZXNfZG9jLAotInRvYnl0ZXMoKSAtPiBieXRlc1xuXAotXG5cCi1Db252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlc1xuXAotcmVwcmVzZW50YXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b3N0cmluZwogCitDb252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlcyByZXByZXNlbnRhdGlvbi4KKworVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMgaW5zdGVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3Rvc3RyaW5nKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9zdHJpbmdfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDZiZDkyNzQ1YTJjOGYzIGlucHV0PWI2YzBkZGVlN2IzMDQ1N2VdKi8KIHsKICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICJ0b3N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzKCkgaW5zdGVhZC4iLCAyKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gYXJyYXlfdG9ieXRlcyhzZWxmLCB1bnVzZWQpOworICAgIHJldHVybiBhcnJheV9hcnJheV90b2J5dGVzX2ltcGwoc2VsZik7CiB9CiAKLVB5RG9jX1NUUlZBUih0b3N0cmluZ19kb2MsCi0idG9zdHJpbmcoKSAtPiBieXRlc1xuXAotXG5cCi1Db252ZXJ0IHRoZSBhcnJheSB0byBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcyBhbmQgcmV0dXJuIHRoZSBieXRlc1xuXAotcmVwcmVzZW50YXRpb24uXG5cCi1cblwKLVRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzIGluc3RlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tdW5pY29kZQogCisgICAgdXN0cjogUHlfVU5JQ09ERSh6ZXJvZXM9VHJ1ZSkKKyAgICAvCisKK0V4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci4KKworVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorVXNlIGFycmF5LmZyb21ieXRlcyh1c3RyLmVuY29kZSguLi4pKSB0byBhcHBlbmQgVW5pY29kZSBkYXRhIHRvIGFuIGFycmF5IG9mCitzb21lIG90aGVyIHR5cGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9VTklDT0RFICp1c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViYjcyZmMxNjk3NWUwNmQgaW5wdXQ9MTUwZjAwNTY2ZmZiY2E2ZV0qLwogewotICAgIFB5X1VOSUNPREUgKnVzdHI7Ci0gICAgUHlfc3NpemVfdCBuOwogICAgIGNoYXIgdHlwZWNvZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHlwZWNvZGUgPSBzZWxmLT5vYl9kZXNjci0+dHlwZWNvZGU7CiAgICAgaWYgKHR5cGVjb2RlICE9ICd1JykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE1NjIsMjkgKzE2OTcsMzAgQEAKICAgICAgICAgICAgICJ1bmljb2RlIHR5cGUgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAobiA+IDApIHsKKyAgICBpZiAodXN0cl9sZW5ndGggPiAwKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgICAgICBpZiAoYXJyYXlfcmVzaXplKHNlbGYsIG9sZF9zaXplICsgbikgPT0gLTEpCisgICAgICAgIGlmIChhcnJheV9yZXNpemUoc2VsZiwgb2xkX3NpemUgKyB1c3RyX2xlbmd0aCkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbWVtY3B5KHNlbGYtPm9iX2l0ZW0gKyBvbGRfc2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSwKLSAgICAgICAgICAgICAgIHVzdHIsIG4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICAgICAgICAgdXN0ciwgdXN0cl9sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb211bmljb2RlX2RvYywKLSJmcm9tdW5pY29kZSh1c3RyKVxuXAotXG5cCi1FeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG5cCi1UaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvclxuXAotaXMgcmFpc2VkLiAgVXNlIGFycmF5LmZyb21ieXRlcyh1c3RyLmVuY29kZSguLi4pKSB0b1xuXAotYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b3VuaWNvZGUKIAorRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLgorCitDb252ZXJ0IHRoZSBhcnJheSB0byBhIHVuaWNvZGUgc3RyaW5nLiAgVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7CitvdGhlcndpc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIFVzZSBhcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGEKK3VuaWNvZGUgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG91bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDhlNDQyMzc4MzM2ZTFlZiBpbnB1dD0xMjcyNDJlZWJlNzBiNjZkXSovCiB7CiAgICAgY2hhciB0eXBlY29kZTsKICAgICB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKQEAgLTE1OTYsNzAgKzE3MzIsMjQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKChQeV9VTklDT0RFICopIHNlbGYtPm9iX2l0ZW0sIFB5X1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIodG91bmljb2RlX2RvYywKLSJ0b3VuaWNvZGUoKSAtPiB1bmljb2RlXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZVxuXAotYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVXNlXG5cCi1hcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGEgdW5pY29kZSBzdHJpbmcgZnJvbVxuXAotYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuX19zaXplb2ZfXwogCitTaXplIG9mIHRoZSBhcnJheSBpbiBtZW1vcnksIGluIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfc2l6ZW9mKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfX19zaXplb2ZfX19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ZTFjNjFlYmJlM2VhZWQgaW5wdXQ9ODA1NTg2NTY1YmYyYjNjNl0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogICAgIHJlcyA9IHNpemVvZihhcnJheW9iamVjdCkgKyBzZWxmLT5hbGxvY2F0ZWQgKiBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKLSJfX3NpemVvZl9fKCkgLT4gaW50XG5cCi1cblwKLVNpemUgb2YgdGhlIGFycmF5IGluIG1lbW9yeSwgaW4gYnl0ZXMuIik7Ci0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqIFBpY2tsaW5nIHN1cHBvcnQgKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1lbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgewotICAgIFVOS05PV05fRk9STUFUID0gLTEsCi0gICAgLyogVU5LTk9XTl9GT1JNQVQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBtYWNoaW5lIGZvcm1hdCBmb3IgYW4KLSAgICAgKiBhcnJheSB0eXBlIGNvZGUgY2Fubm90IGJlIGludGVycHJldGVkLiBXaGVuIHRoaXMgb2NjdXJzLCBhIGxpc3Qgb2YKLSAgICAgKiBQeXRob24gb2JqZWN0cyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkKLSAgICAgKiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBtZW1vcnkgY29udGVudCBvZiB0aGUgYXJyYXkgZGlyZWN0bHkuIEluIHRoYXQKLSAgICAgKiBjYXNlLCB0aGUgYXJyYXlfcmVjb25zdHJ1Y3RvciBtZWNoYW5pc20gaXMgYnlwYXNzZWQgY29tcGxldGVseSwgYW5kCi0gICAgICogdGhlIHN0YW5kYXJkIGFycmF5IGNvbnN0cnVjdG9yIGlzIHVzZWQgaW5zdGVhZC4KLSAgICAgKgotICAgICAqIFRoaXMgaXMgd2lsbCBtb3N0IGxpa2VseSBvY2N1ciB3aGVuIHRoZSBtYWNoaW5lIGRvZXNuJ3QgdXNlIElFRUUKLSAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLgotICAgICAqLwotCi0gICAgVU5TSUdORURfSU5UOCA9IDAsCi0gICAgU0lHTkVEX0lOVDggPSAxLAotICAgIFVOU0lHTkVEX0lOVDE2X0xFID0gMiwKLSAgICBVTlNJR05FRF9JTlQxNl9CRSA9IDMsCi0gICAgU0lHTkVEX0lOVDE2X0xFID0gNCwKLSAgICBTSUdORURfSU5UMTZfQkUgPSA1LAotICAgIFVOU0lHTkVEX0lOVDMyX0xFID0gNiwKLSAgICBVTlNJR05FRF9JTlQzMl9CRSA9IDcsCi0gICAgU0lHTkVEX0lOVDMyX0xFID0gOCwKLSAgICBTSUdORURfSU5UMzJfQkUgPSA5LAotICAgIFVOU0lHTkVEX0lOVDY0X0xFID0gMTAsCi0gICAgVU5TSUdORURfSU5UNjRfQkUgPSAxMSwKLSAgICBTSUdORURfSU5UNjRfTEUgPSAxMiwKLSAgICBTSUdORURfSU5UNjRfQkUgPSAxMywKLSAgICBJRUVFXzc1NF9GTE9BVF9MRSA9IDE0LAotICAgIElFRUVfNzU0X0ZMT0FUX0JFID0gMTUsCi0gICAgSUVFRV83NTRfRE9VQkxFX0xFID0gMTYsCi0gICAgSUVFRV83NTRfRE9VQkxFX0JFID0gMTcsCi0gICAgVVRGMTZfTEUgPSAxOCwKLSAgICBVVEYxNl9CRSA9IDE5LAotICAgIFVURjMyX0xFID0gMjAsCi0gICAgVVRGMzJfQkUgPSAyMQotfTsKLSNkZWZpbmUgTUFDSElORV9GT1JNQVRfQ09ERV9NSU4gMAotI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01BWCAyMQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1mb3JtYXRkZXNjciB7CiAgICAgc2l6ZV90IHNpemU7CiAgICAgaW50IGlzX3NpZ25lZDsKQEAgLTE4MzUsMjEgKzE5MjUsMjkgQEAKICAqIFRoaXMgZnVuY3Rpb25zIGlzIGEgc3BlY2lhbCBjb25zdHJ1Y3RvciB1c2VkIHdoZW4gdW5waWNrbGluZyBhbiBhcnJheS4gSXQKICAqIHByb3ZpZGVzIGEgcG9ydGFibGUgd2F5IHRvIHJlYnVpbGQgYW4gYXJyYXkgZnJvbSBpdHMgbWVtb3J5IHJlcHJlc2VudGF0aW9uLgogICovCisvKltjbGluaWMgaW5wdXRdCithcnJheS5fYXJyYXlfcmVjb25zdHJ1Y3RvcgorCisgICAgYXJyYXl0eXBlOiBvYmplY3QodHlwZT0iUHlUeXBlT2JqZWN0ICoiKQorICAgIHR5cGVjb2RlOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIG1mb3JtYXRfY29kZTogaW50KHR5cGU9ImVudW0gbWFjaGluZV9mb3JtYXRfY29kZSIpCisgICAgaXRlbXM6IG9iamVjdAorICAgIC8KKworSW50ZXJuYWwuIFVzZWQgZm9yIHBpY2tsaW5nIHN1cHBvcnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZWNvbnN0cnVjdG9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlY2JmMGU4ZTRkOTJhYjkgaW5wdXQ9MjQ2NGRjOGY0Yzc3MzZiNV0qLwogewotICAgIFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlOwotICAgIFB5T2JqZWN0ICppdGVtczsKICAgICBQeU9iamVjdCAqY29udmVydGVkX2l0ZW1zOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHR5cGVjb2RlOwotICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOmFycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yIiwKLSAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghUHlUeXBlX0NoZWNrKGFycmF5dHlwZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGEgdHlwZSBvYmplY3QsIG5vdCAlLjIwMHMiLApAQCAtMjAwMCw3ICsyMDk4LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKICAgICAgICAgICAgIGlmIChkZXNjci0+aXNfaW50ZWdlcl90eXBlICYmCi0gICAgICAgICAgICAgICAgZGVzY3ItPml0ZW1zaXplID09IG1mX2Rlc2NyLnNpemUgJiYKKyAgICAgICAgICAgICAgICAoc2l6ZV90KWRlc2NyLT5pdGVtc2l6ZSA9PSBtZl9kZXNjci5zaXplICYmCiAgICAgICAgICAgICAgICAgZGVzY3ItPmlzX3NpZ25lZCA9PSBtZl9kZXNjci5pc19zaWduZWQpCiAgICAgICAgICAgICAgICAgdHlwZWNvZGUgPSBkZXNjci0+dHlwZWNvZGU7CiAgICAgICAgIH0KQEAgLTIwMzgsMTMgKzIxMzYsMjMgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX3JlZHVjZV9leF9fCisKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmVkdWNlX2V4KGFycmF5b2JqZWN0ICphcnJheSwgUHlPYmplY3QgKnZhbHVlKQorYXJyYXlfYXJyYXlfX19yZWR1Y2VfZXhfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA1MWUwYTYxNzVkMGVkZGIgaW5wdXQ9YzM2YzNmODVkZTdkZjZjZF0qLwogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmFycmF5X3N0cjsKLSAgICBpbnQgdHlwZWNvZGUgPSBhcnJheS0+b2JfZGVzY3ItPnR5cGVjb2RlOworICAgIGludCB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKICAgICBpbnQgbWZvcm1hdF9jb2RlOwogICAgIHN0YXRpYyBQeU9iamVjdCAqYXJyYXlfcmVjb25zdHJ1Y3RvciA9IE5VTEw7CiAgICAgbG9uZyBwcm90b2NvbDsKQEAgLTIwNzIsNyArMjE4MCw3IEBACiAgICAgaWYgKHByb3RvY29sID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopYXJyYXksICZQeUlkX19fZGljdF9fKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDk1LDMyICsyMjAzLDMwIEBACiAgICAgICAgICAqIGNvZXJjaW5nIHVuaWNvZGUgb2JqZWN0cyB0byBieXRlcyBpbiBhcnJheV9yZWNvbnN0cnVjdG9yLgogICAgICAgICAgKi8KICAgICAgICAgUHlPYmplY3QgKmxpc3Q7Ci0gICAgICAgIGxpc3QgPSBhcnJheV90b2xpc3QoYXJyYXksIE5VTEwpOworICAgICAgICBsaXN0ID0gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoc2VsZik7CiAgICAgICAgIGlmIChsaXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICAgICAiTyhDTylPIiwgUHlfVFlQRShhcnJheSksIHR5cGVjb2RlLCBsaXN0LCBkaWN0KTsKKyAgICAgICAgICAgICJPKENPKU8iLCBQeV9UWVBFKHNlbGYpLCB0eXBlY29kZSwgbGlzdCwgZGljdCk7CiAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGFycmF5X3N0ciA9IGFycmF5X3RvYnl0ZXMoYXJyYXksIE5VTEwpOworICAgIGFycmF5X3N0ciA9IGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKICAgICBpZiAoYXJyYXlfc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgIk8oT0NpTilPIiwgYXJyYXlfcmVjb25zdHJ1Y3RvciwgUHlfVFlQRShhcnJheSksIHR5cGVjb2RlLAorICAgICAgICAiTyhPQ2lOKU8iLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBQeV9UWVBFKHNlbGYpLCB0eXBlY29kZSwKICAgICAgICAgbWZvcm1hdF9jb2RlLCBhcnJheV9zdHIsIGRpY3QpOwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9nZXRfdHlwZWNvZGUoYXJyYXlvYmplY3QgKmEsIHZvaWQgKmNsb3N1cmUpCiB7CkBAIC0yMTQzLDU1ICsyMjQ5LDMxIEBACiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlfbWV0aG9kc1tdID0gewotICAgIHsiYXBwZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2FwcGVuZCwgICAgICBNRVRIX08sCi0gICAgIGFwcGVuZF9kb2N9LAotICAgIHsiYnVmZmVyX2luZm8iLCAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywKLSAgICAgYnVmZmVyX2luZm9fZG9jfSwKLSAgICB7ImJ5dGVzd2FwIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9ieXRlc3dhcCwgICAgTUVUSF9OT0FSR1MsCi0gICAgIGJ5dGVzd2FwX2RvY30sCi0gICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfY29weSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBjb3B5X2RvY30sCi0gICAgeyJjb3VudCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfY291bnQsICAgICAgIE1FVEhfTywKLSAgICAgY291bnRfZG9jfSwKLSAgICB7Il9fZGVlcGNvcHlfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgTUVUSF9PLAotICAgICBjb3B5X2RvY30sCi0gICAgeyJleHRlbmQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZXh0ZW5kLCAgICAgIE1FVEhfTywKLSAgICAgZXh0ZW5kX2RvY30sCi0gICAgeyJmcm9tZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZnJvbWZpbGUsICAgIE1FVEhfVkFSQVJHUywKLSAgICAgZnJvbWZpbGVfZG9jfSwKLSAgICB7ImZyb21saXN0IiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tbGlzdCwgICAgTUVUSF9PLAotICAgICBmcm9tbGlzdF9kb2N9LAotICAgIHsiZnJvbXN0cmluZyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21zdHJpbmcsICBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb21zdHJpbmdfZG9jfSwKLSAgICB7ImZyb21ieXRlcyIsICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tYnl0ZXMsICAgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tYnl0ZXNfZG9jfSwKLSAgICB7ImZyb211bmljb2RlIiwgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tdW5pY29kZSwgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tdW5pY29kZV9kb2N9LAotICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2luZGV4LCAgICAgICBNRVRIX08sCi0gICAgIGluZGV4X2RvY30sCi0gICAgeyJpbnNlcnQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfaW5zZXJ0LCAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgaW5zZXJ0X2RvY30sCi0gICAgeyJwb3AiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcG9wLCAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgcG9wX2RvY30sCi0gICAgeyJfX3JlZHVjZV9leF9fIiwgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVkdWNlX2V4LCAgIE1FVEhfTywKLSAgICAgcmVkdWNlX2RvY30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVtb3ZlLCAgICAgIE1FVEhfTywKLSAgICAgcmVtb3ZlX2RvY30sCi0gICAgeyJyZXZlcnNlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmV2ZXJzZSwgICAgIE1FVEhfTk9BUkdTLAotICAgICByZXZlcnNlX2RvY30sCi0gICAgeyJ0b2ZpbGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9maWxlLCAgICAgIE1FVEhfTywKLSAgICAgdG9maWxlX2RvY30sCi0gICAgeyJ0b2xpc3QiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9saXN0LCAgICAgIE1FVEhfTk9BUkdTLAotICAgICB0b2xpc3RfZG9jfSwKLSAgICB7InRvc3RyaW5nIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b3N0cmluZywgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvc3RyaW5nX2RvY30sCi0gICAgeyJ0b2J5dGVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9ieXRlcywgICAgIE1FVEhfTk9BUkdTLAotICAgICB0b2J5dGVzX2RvY30sCi0gICAgeyJ0b3VuaWNvZGUiLCAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG91bmljb2RlLCAgIE1FVEhfTk9BUkdTLAotICAgICB0b3VuaWNvZGVfZG9jfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheV9zaXplb2YsICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHNpemVvZl9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgQVJSQVlfQVJSQVlfQVBQRU5EX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0JVRkZFUl9JTkZPX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0JZVEVTV0FQX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fQ09QWV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0NPVU5UX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fREVFUENPUFlfX19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9FWFRFTkRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTUZJTEVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTUxJU1RfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTVNUUklOR19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NQllURVNfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfRlJPTVVOSUNPREVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfSU5ERVhfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfSU5TRVJUX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1BPUF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9fX1JFRFVDRV9FWF9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1JFTU9WRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9SRVZFUlNFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPRklMRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT0xJU1RfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9TVFJJTkdfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9CWVRFU19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT1VOSUNPREVfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19TSVpFT0ZfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjIwNyw5ICsyMjg5LDkgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJhcnJheSgnJWMnKSIsIChpbnQpdHlwZWNvZGUpOwogICAgIH0KICAgICBpZiAodHlwZWNvZGUgPT0gJ3UnKSB7Ci0gICAgICAgIHYgPSBhcnJheV90b3VuaWNvZGUoYSwgTlVMTCk7CisgICAgICAgIHYgPSBhcnJheV9hcnJheV90b3VuaWNvZGVfaW1wbChhKTsKICAgICB9IGVsc2UgewotICAgICAgICB2ID0gYXJyYXlfdG9saXN0KGEsIE5VTEwpOworICAgICAgICB2ID0gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoYSk7CiAgICAgfQogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ0Niw3ICsyNTI4LDExIEBACiBzdGF0aWMgaW50CiBhcnJheV9idWZmZXJfZ2V0YnVmKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldz09TlVMTCkgZ290byBmaW5pc2g7CisgICAgaWYgKHZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiYXJyYXlfYnVmZmVyX2dldGJ1Zjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgdmlldy0+YnVmID0gKHZvaWQgKilzZWxmLT5vYl9pdGVtOwogICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCopc2VsZjsKQEAgLTI0NzYsNyArMjU2Miw2IEBACiAjZW5kaWYKICAgICB9CiAKLSBmaW5pc2g6CiAgICAgc2VsZi0+b2JfZXhwb3J0cysrOwogICAgIHJldHVybiAwOwogfQpAQCAtMjU4NiwxNSArMjY3MSw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChpbml0aWFsICE9IE5VTEwgJiYgKFB5Qnl0ZUFycmF5X0NoZWNrKGluaXRpYWwpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19DaGVjayhpbml0aWFsKSkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdF9pbml0aWFsLCAqdjsKLSAgICAgICAgICAgICAgICB0X2luaXRpYWwgPSBQeVR1cGxlX1BhY2soMSwgaW5pdGlhbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRfaW5pdGlhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHYgPSBhcnJheV9mcm9tYnl0ZXMoKGFycmF5b2JqZWN0ICopYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdF9pbml0aWFsKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodF9pbml0aWFsKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgICAgICB2ID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzKChhcnJheW9iamVjdCAqKWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzY2LDE2ICsyODQ1LDEwIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKiBBcnJheSBJdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDsKLSAgICBhcnJheW9iamVjdCAgICAgICAgICAgICAgICAgKmFvOwotICAgIFB5T2JqZWN0ICAgICAgICAgICAgICAgICAgICAqICgqZ2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QpOwotfSBhcnJheWl0ZXJvYmplY3Q7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUHlBcnJheUl0ZXJfVHlwZTsKLQotI2RlZmluZSBQeUFycmF5SXRlcl9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlBcnJheUl0ZXJfVHlwZSkKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGFycmF5LmFycmF5aXRlcmF0b3IgImFycmF5aXRlcm9iamVjdCAqIiAiJlB5QXJyYXlJdGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01YWVmZDJkNzRkOGM4ZTMwXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9pdGVyKGFycmF5b2JqZWN0ICphbykKQEAgLTI4MjMsMzMgKzI4OTYsNDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5aXRlcl9yZWR1Y2UoYXJyYXlpdGVyb2JqZWN0ICppdCkKLXsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5hbywgaXQtPmluZGV4KTsKLX0KKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5aXRlcmF0b3IuX19yZWR1Y2VfXworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlpdGVyX3NldHN0YXRlKGFycmF5aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK2FycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKGFycmF5aXRlcm9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ODk4YTUyZThlNjZlMDE2IGlucHV0PWEwNjJlYTFlOTk1MTQxN2FdKi8KK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5aXRlcmF0b3IuX19zZXRzdGF0ZV9fCisKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworCitTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXyhhcnJheWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOTdkYTk5MDRlNDQzY2JlIGlucHV0PWY0N2Q1Y2VkYTE5ZTc4N2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CiAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIGluZGV4ID0gMDsKLSAgICBlbHNlIGlmIChpbmRleCA+IFB5X1NJWkUoaXQtPmFvKSkKLSAgICAgICAgaW5kZXggPSBQeV9TSVpFKGl0LT5hbyk7IC8qIGl0ZXJhdG9yIGV4aGF1c3RlZCAqLwotICAgIGl0LT5pbmRleCA9IGluZGV4OworICAgIGVsc2UgaWYgKGluZGV4ID4gUHlfU0laRShzZWxmLT5hbykpCisgICAgICAgIGluZGV4ID0gUHlfU0laRShzZWxmLT5hbyk7IC8qIGl0ZXJhdG9yIGV4aGF1c3RlZCAqLworICAgIHNlbGYtPmluZGV4ID0gaW5kZXg7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiBzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlpdGVyX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKLSAgICAgcmVkdWNlX2RvY30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCi0gICAgIHNldHN0YXRlX2RvY30sCisgICAgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1JFRFVDRV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZSVRFUkFUT1JfX19TRVRTVEFURV9fX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg5MCwzOSArMjk3NywyMSBAQAogCiAvKiBObyBmdW5jdGlvbnMgaW4gYXJyYXkgbW9kdWxlLiAqLwogc3RhdGljIFB5TWV0aG9kRGVmIGFfbWV0aG9kc1tdID0gewotICAgIHsiX2FycmF5X3JlY29uc3RydWN0b3IiLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5RG9jX1NUUigiSW50ZXJuYWwuIFVzZWQgZm9yIHBpY2tsaW5nIHN1cHBvcnQuIil9LAorICAgIEFSUkFZX19BUlJBWV9SRUNPTlNUUlVDVE9SX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMLCAwLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYXJyYXltb2R1bGUgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJhcnJheSIsCi0gICAgbW9kdWxlX2RvYywKLSAgICAtMSwKLSAgICBhX21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X2FycmF5KHZvaWQpCitzdGF0aWMgaW50CithcnJheV9tb2RleGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptOwogICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmQXJyYXl0eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfVFlQRSgmUHlBcnJheUl0ZXJfVHlwZSkgPSAmUHlUeXBlX1R5cGU7Ci0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYXJyYXltb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSZBcnJheXR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQXJyYXlUeXBlIiwgKFB5T2JqZWN0ICopJkFycmF5dHlwZSk7CkBAIC0yOTQ1LDUgKzMwMTQsMzAgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBtID0gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IGFycmF5c2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGFycmF5X21vZGV4ZWN9LAorICAgIHswLCBOVUxMfQorfTsKKworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGFycmF5bW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiYXJyYXkiLAorICAgIG1vZHVsZV9kb2MsCisgICAgMCwKKyAgICBhX21ldGhvZHMsCisgICAgYXJyYXlzbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2FycmF5KHZvaWQpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmFycmF5bW9kdWxlKTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCmluZGV4IDk4ODcwMTQuLjczOWMxODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwpAQCAtNjAsNyArNjAsNyBAQAogICAgIG1vZHN0YXRlLT5uY2FsbGJhY2tzID0gMDsKIH0KIAotLyogSW5zdGFsbGVkIGludG8gcHl0aG9ucnVuLmMncyBhdGV4aXQgbWVjaGFuaXNtICovCisvKiBJbnN0YWxsZWQgaW50byBweWxpZmVjeWNsZS5jJ3MgYXRleGl0IG1lY2hhbmlzbSAqLwogCiBzdGF0aWMgdm9pZAogYXRleGl0X2NhbGxmdW5jcyh2b2lkKQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAgICAgaWYgKGV4Y190eXBlKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGV4Y190eXBlKTsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y192YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGNfdGIpOyAgICAKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y190Yik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjX3R5cGUsICZleGNfdmFsdWUsICZleGNfdGIpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInJlZ2lzdGVyKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7IAorICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBmdW5jID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKQEAgLTE1OSw3ICsxNTksNyBAQAogCiAgICAgbmV3X2NhbGxiYWNrID0gUHlNZW1fTWFsbG9jKHNpemVvZihhdGV4aXRfY2FsbGJhY2spKTsKICAgICBpZiAobmV3X2NhbGxiYWNrID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOyAgIAorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIG5ld19jYWxsYmFjay0+YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgUHlUdXBsZV9HRVRfU0laRShhcmdzKSk7CiAgICAgaWYgKG5ld19jYWxsYmFjay0+YXJncyA9PSBOVUxMKSB7CkBAIC0zMzYsNyArMzM2LDcgQEAKICAgICBtb2RzdGF0ZSA9IEdFVF9BVEVYSVRfU1RBVEUobSk7CiAgICAgbW9kc3RhdGUtPmNhbGxiYWNrX2xlbiA9IDMyOwogICAgIG1vZHN0YXRlLT5uY2FsbGJhY2tzID0gMDsKLSAgICBtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9IFB5TWVtX05ldyhhdGV4aXRfY2FsbGJhY2sqLCAKKyAgICBtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9IFB5TWVtX05ldyhhdGV4aXRfY2FsbGJhY2sqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHN0YXRlLT5jYWxsYmFja19sZW4pOwogICAgIGlmIChtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggMDM1ODE0Ny4uMjcyMjBiMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTM5MSwxMCArMzkxLDkgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgYXVkaW9vcAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTYxOWY5MzVmMjY5MTk5YV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OGZhOGY2NjExYmUzNTkxYV0qLwogCiAvKltjbGluaWMgaW5wdXRdCiBhdWRpb29wLmdldHNhbXBsZQpAQCAtNDA4LDggKzQwNyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlfc3NpemVfdCBpbmRleCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDQ4MjQ5N2U2ZjZlNzhmIGlucHV0PTg4ZWRiZTI4NzEzOTM1NDldKi8KK2F1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM5OTVlMTg5ZmRjOGVjMTYgaW5wdXQ9ODhlZGJlMjg3MTM5MzU0OV0qLwogewogICAgIGludCB2YWw7CiAKQEAgLTU5NCw4ICs1OTQsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kZml0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfYnVmZmVyICpyZWZlcmVuY2UpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTA1ZmQwNGQ0MjQ0ZGIzMSBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCithdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjA5ZWVkZjVkODIzZDZkZCBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CkBAIC02NjIsOCArNjYzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRkZjM1YTFlNTc1NzVjZTQgaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLworYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1NjZhOGM1NWRlNTRmOTkgaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLwogewogICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC03MDMsOCArNzA1LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZG1heF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X3NzaXplX3QgbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxZDBjMmExZTU2NTUxMzQgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLworYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAxZmU3OTZmYWQyNTczYmIgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLwogewogICAgIGNvbnN0IHNob3J0ICpjcDE7CiAgICAgUHlfc3NpemVfdCBsZW4xOwpAQCAtODk3LDggKzkwMCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX211bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGZhY3RvcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjk3ZWJiZDU4NTJkMzhmIGlucHV0PWM3MjY2NjdiYWExNTdkM2NdKi8KK2F1ZGlvb3BfbXVsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICBkb3VibGUgZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjN2MzMTE5MWFjODZiMTAgaW5wdXQ9YzcyNjY2N2JhYTE1N2QzY10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtOTM4LDggKzk0Miw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzNmU3NzEwNTIxNjYxZGQgaW5wdXQ9YzRlYzk0OWIzZjRkZGRmYV0qLworYXVkaW9vcF90b21vbm9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3RvcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NTNmNTQ3YzVlMjllM2I2IGlucHV0PWM0ZWM5NDliM2Y0ZGRkZmFdKi8KIHsKICAgICBzaWduZWQgY2hhciAqY3AsICpuY3A7CiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CkBAIC05ODYsOCArOTkxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3RvcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmY1MDY4MWM4N2Y0YzFjIGlucHV0PTI3YjYzOTVlYmZkZmYzN2FdKi8KK2F1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY5N2JiNmJhNDFlOWRkMmMgaW5wdXQ9MjdiNjM5NWViZmRmZjM3YV0qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTAzMyw4ICsxMDM5LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkyMThiZjllYTc1YzNmMSBpbnB1dD00YThkNGJhZTRjMTYwNWM3XSovCithdWRpb29wX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQxLAorICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmZyYWdtZW50MiwgaW50IHdpZHRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNmMxMmYxNDNlMGIwMjcgaW5wdXQ9NGE4ZDRiYWU0YzE2MDVjN10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTA5MSw4ICsxMDk4LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IGJpYXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGVjODBiM2Y1ZDUxMGE1MSBpbnB1dD0yYjVjY2U1YzNiYjQ4MzhjXSovCithdWRpb29wX2JpYXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICBpbnQgYmlhcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYzFmNGRkYTIwYTAxYzI2IGlucHV0PTJiNWNjZTVjM2JiNDgzOGNdKi8KIHsKICAgICBzaWduZWQgY2hhciAqbmNwOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTEyMTgsOCArMTIyNiw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGludCBuZXd3aWR0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZjk0NjhhNzQ0NzJhOTNlIGlucHV0PTVjZTA4YzhhYTJmMjRkOTZdKi8KK2F1ZGlvb3BfbGluMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBuZXd3aWR0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYjZjYTk1MGQxZGY5ODk4IGlucHV0PTVjZTA4YzhhYTJmMjRkOTZdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpLCBqOwpAQCAtMTI3NSw4ICsxMjg0LDEwIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3JhdGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IG5jaGFubmVscywgaW50IGlucmF0ZSwgaW50IG91dHJhdGUsIFB5T2JqZWN0ICpzdGF0ZSwgaW50IHdlaWdodEEsIGludCB3ZWlnaHRCKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1ODVkZGRjNGI1ZmYyMzYgaW5wdXQ9YWZmM2FjZGM5NDQ3NjE5MV0qLworYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0QikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01OWUxNzg3YmZhNDliOWQ5IGlucHV0PWFmZjNhY2RjOTQ0NzYxOTFdKi8KIHsKICAgICBjaGFyICpjcCwgKm5jcDsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTE2MDIsOCArMTYxMyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2NTRjMjlkMjczMWZhZmUgaW5wdXQ9MTI5MTlkNTQ5YjkwYzkwYV0qLworYXVkaW9vcF9saW4yYWRwY21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05M2YwOTk2ZjU5MmI1Y2U1IGlucHV0PTEyOTE5ZDU0OWI5MGM5MGFdKi8KIHsKICAgICBzaWduZWQgY2hhciAqbmNwOwogICAgIFB5X3NzaXplX3QgaTsKQEAgLTE3MjQsOCArMTczNiw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MTk2NWNkY2MwYWE2OWIgaW5wdXQ9ZjUyMjExNDRmNWNhOWVmMF0qLworYXVkaW9vcF9hZHBjbTJsaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzZjZjZkYzJjODI5MTgxIGlucHV0PWY1MjIxMTQ0ZjVjYTllZjBdKi8KIHsKICAgICBzaWduZWQgY2hhciAqY3A7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCBlYTE0ZDNjLi5kOTIwZDIzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAjaWZkZWYgVVNFX1pMSUJfQ1JDMzIKICNpbmNsdWRlICJ6bGliLmgiCiAjZW5kaWYKQEAgLTE4NCwxMCArMTg1LDkgQEAKIH07CiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIGJpbmFzY2lpCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD00NGM2Zjg0MGNlNzA4ZjBjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kZTg5ZmI0NmJjYWYzZmVjXSovCiAKIC8qW3B5dGhvbiBpbnB1dF0KIApAQCAtMTExOCwzMyArMTExOCw3IEBACiBiaW5hc2NpaV9iMmFfaGV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE3OTMxODkyMmMyZjhmZGEgaW5wdXQ9OTY0MjNjZmEyOTlmZjNiMV0qLwogewotICAgIGNoYXIqIGFyZ2J1ZjsKLSAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIGNoYXIqIHJldGJ1ZjsKLSAgICBQeV9zc2l6ZV90IGksIGo7Ci0KLSAgICBhcmdidWYgPSBkYXRhLT5idWY7Ci0gICAgYXJnbGVuID0gZGF0YS0+bGVuOwotCi0gICAgYXNzZXJ0KGFyZ2xlbiA+PSAwKTsKLSAgICBpZiAoYXJnbGVuID4gUFlfU1NJWkVfVF9NQVggLyAyKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHJldHZhbCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYXJnbGVuKjIpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXRidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXR2YWwpOwotCi0gICAgLyogbWFrZSBoZXggdmVyc2lvbiBvZiBzdHJpbmcsIHRha2VuIGZyb20gc2hhbW9kdWxlLmMgKi8KLSAgICBmb3IgKGk9aj0wOyBpIDwgYXJnbGVuOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGFyZ2J1ZltpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSBhcmdidWZbaV0gJiAweGY7Ci0gICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfc3RyaGV4X2J5dGVzKChjb25zdCBjaGFyICopZGF0YS0+YnVmLCBkYXRhLT5sZW4pOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0xMTU5LDcgKzExMzMsNyBAQAogYmluYXNjaWlfaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MDk4NDQwMDkxZmI2MWRjIGlucHV0PTJlM2FmYWU3ZjA4M2YwNjFdKi8KIHsKLSAgICByZXR1cm4gYmluYXNjaWlfYjJhX2hleF9pbXBsKG1vZHVsZSwgZGF0YSk7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfYnl0ZXMoKGNvbnN0IGNoYXIgKilkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEzODIsOCArMTM1Niw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsIGludCBpc3RleHQsIGludCBoZWFkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmYyOTkxYmE2NDBmZmYzZSBpbnB1dD03ZjJhOWFhYTAwOGU5MmIyXSovCitiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4N2NhOWNjYjk0ZTJhOWYgaW5wdXQ9N2YyYTlhYWEwMDhlOTJiMl0qLwogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKICAgICB1bnNpZ25lZCBjaGFyICpkYXRhYnVmLCAqb2RhdGE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCmluZGV4IDVjNDAxYWEuLjFjZTQyMTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbmJ1ZiwgUHlfc3NpemVfdCAqaW5sZWZ0KQogewogICAgIHVuc2lnbmVkIGNoYXIgY2hhcnNldCwgZGVzaWduYXRpb247Ci0gICAgUHlfc3NpemVfdCBpLCBlc2NsZW47CisgICAgUHlfc3NpemVfdCBpLCBlc2NsZW4gPSAwOwogCiAgICAgZm9yIChpID0gMTtpIDwgTUFYX0VTQ1NFUUxFTjtpKyspIHsKICAgICAgICAgaWYgKGkgPj0gKmlubGVmdCkKQEAgLTMwNywxMCArMzA3LDkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpID49IE1BWF9FU0NTRVFMRU4pCi0gICAgICAgIHJldHVybiAxOyAvKiB1bnRlcm1pbmF0ZWQgZXNjYXBlIHNlcXVlbmNlICovCi0KICAgICBzd2l0Y2ggKGVzY2xlbikgeworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIDE7IC8qIHVudGVybWluYXRlZCBlc2NhcGUgc2VxdWVuY2UgKi8KICAgICBjYXNlIDM6CiAgICAgICAgIGlmIChJTkJZVEUyID09ICckJykgewogICAgICAgICAgICAgY2hhcnNldCA9IElOQllURTMgfCBDSEFSU0VUX0RCQ1M7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jamtjb2RlY3MuaCBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCmluZGV4IGQxNWNjZmIuLjIzNjQyZGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgKGNoYXIqKXN5bWJvbCk7CisgICAgbyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCBzeW1ib2wpOwogICAgIGlmIChvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIGVsc2UgaWYgKCFQeUNhcHN1bGVfSXNWYWxpZChvLCBQeU11bHRpYnl0ZUNvZGVjX0NBUFNVTEVfTkFNRSkpIHsKQEAgLTQwMSw3ICs0MDEsNyBAQAogICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFB5T2JqZWN0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5TU9ESU5JVF9GVU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFB5SW5pdF9fY29kZWNzXyMjbG9jKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX19tb2R1bGUpOyAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaCBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0N2ZmOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKQEAgLTAsMCArMSwzMjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJHNlbGYsIC8sIGlucHV0LCBlcnJvcnM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBlbmNvZGVkIHN0cmluZyB2ZXJzaW9uIG9mIGBpbnB1dFwnLlxuIgorIlxuIgorIlwnZXJyb3JzXCcgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXNcbiIKKyJcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlXG4iCisidmFsdWVzIGFyZSBcJ2lnbm9yZVwnLCBcJ3JlcGxhY2VcJyBhbmQgXCd4bWxjaGFycmVmcmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWVcbiIKKyJyZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaW5wdXQ7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgaW5wdXQsIGVycm9ycz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiRGVjb2RlcyBcJ2lucHV0XCcuXG4iCisiXG4iCisiXCdlcnJvcnNcJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpc1xuIgorIlwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGVcbiIKKyJ2YWx1ZXMgYXJlIFwnaWdub3JlXCcgYW5kIFwncmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy5cIiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KKyAgICBpZiAoaW5wdXQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX18sCisiZW5jb2RlKCRzZWxmLCAvLCBpbnB1dCwgZmluYWw9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGlucHV0LCBmaW5hbD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIFB5X2J1ZmZlciBpbnB1dCA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KKyAgICBpZiAoaW5wdXQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZW9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9pbXBsKHNlbGYsIHNpemVvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZW9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZShNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzaXplb2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVvYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemVvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBzaXplaGludG9iaj1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzLCBNRVRIX1ZBUkFSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVoaW50b2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVoaW50b2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZzaXplaGludG9iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKHNlbGYsIHNpemVoaW50b2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldF9fZG9jX18sCisicmVzZXQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVTRVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlc2V0IiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXQsIE1FVEhfTk9BUkdTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgc3Ryb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlbGluZXMsIE1FVEhfTywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZWxpbmVzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX18sCisiX19jcmVhdGVfY29kZWMoJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9fY3JlYXRlX2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWNfX2RvY19ffSwKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZWJiMjFlMThjMzA0M2QxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCmluZGV4IDQzNTUyOWYuLmMwNTE1MTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwpAQCAtOCw2ICs4LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAibXVsdGlieXRlY29kZWMuaCIKKyNpbmNsdWRlICJjbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX211bHRpYnl0ZWNvZGVjCitjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlQ29kZWMgIk11bHRpYnl0ZUNvZGVjT2JqZWN0ICoiICImTXVsdGlieXRlQ29kZWNfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhZDY4OTU0NmNiYjU0NTBdKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0ICAgICAgICAgICAgKmlub2JqOwpAQCAtMjIsMjcgKzI5LDcgQEAKICAgICBfUHlVbmljb2RlV3JpdGVyICAgIHdyaXRlcjsKIH0gTXVsdGlieXRlRGVjb2RlQnVmZmVyOwogCi1QeURvY19TVFJWQVIoTXVsdGlieXRlQ29kZWNfRW5jb2RlX19kb2NfXywKLSJJLmVuY29kZSh1bmljb2RlWywgZXJyb3JzXSkgLT4gKHN0cmluZywgbGVuZ3RoIGNvbnN1bWVkKVxuXAotXG5cCi1SZXR1cm4gYW4gZW5jb2RlZCBzdHJpbmcgdmVyc2lvbiBvZiBgdW5pY29kZScuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG9cblwKLXNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0XG5cCi1lbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmVcblwKLSdpZ25vcmUnLCAncmVwbGFjZScgYW5kICd4bWxjaGFycmVmcmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZVxuXAotcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4iKTsKLQotUHlEb2NfU1RSVkFSKE11bHRpYnl0ZUNvZGVjX0RlY29kZV9fZG9jX18sCi0iSS5kZWNvZGUoc3RyaW5nWywgZXJyb3JzXSkgLT4gKHVuaWNvZGVvYmplY3QsIGxlbmd0aCBjb25zdW1lZClcblwKLVxuXAotRGVjb2RlcyBgc3RyaW5nJyB1c2luZyBJLCBhbiBNdWx0aWJ5dGVDb2RlYyBpbnN0YW5jZS4gZXJyb3JzIG1heSBiZSBnaXZlblxuXAotdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nXG5cCi10aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzXG5cCi1hcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuXAotY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKLQotc3RhdGljIGNoYXIgKmNvZGVja3dhcmdsaXN0W10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9Owogc3RhdGljIGNoYXIgKmluY25ld2t3YXJnbGlzdFtdID0geyJlcnJvcnMiLCBOVUxMfTsKLXN0YXRpYyBjaGFyICppbmNyZW1lbnRhbGt3YXJnbGlzdFtdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9Owogc3RhdGljIGNoYXIgKnN0cmVhbWt3YXJnbGlzdFtdID0geyJzdHJlYW0iLCAiZXJyb3JzIiwgTlVMTH07CiAKIHN0YXRpYyBQeU9iamVjdCAqbXVsdGlieXRlY29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjICosCkBAIC01NTMsMjYgKzU0MCwzNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlQ29kZWMuZW5jb2RlCisKKyAgaW5wdXQ6IG9iamVjdAorICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKworUmV0dXJuIGFuIGVuY29kZWQgc3RyaW5nIHZlcnNpb24gb2YgYGlucHV0Jy4KKworJ2Vycm9ycycgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMKKydzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlCit2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScgYW5kICd4bWxjaGFycmVmcmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZQorcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLU11bHRpYnl0ZUNvZGVjX0VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiMjY2NTIwNDViYTU2YTkgaW5wdXQ9MDVmNmNlZDNjOGRkMDU4Ml0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlIHN0YXRlOwotICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqciwgKmFyZywgKnVjdnQ7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JjYiwgKnIsICp1Y3Z0OwogICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVja3dhcmdsaXN0LCAmYXJnLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhpbnB1dCkpCiAgICAgICAgIHVjdnQgPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBhcmcgPSB1Y3Z0ID0gUHlPYmplY3RfU3RyKGFyZyk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKKyAgICAgICAgaW5wdXQgPSB1Y3Z0ID0gUHlPYmplY3RfU3RyKGlucHV0KTsKKyAgICAgICAgaWYgKGlucHV0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaW5wdXQpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCBjb252ZXJ0IHRoZSBvYmplY3QgdG8gdW5pY29kZS4iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1Y3Z0KTsKQEAgLTU4MCwxMSArNTc4LDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPCAwKSB7CiAgICAgICAgIFB5X1hERUNSRUYodWN2dCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXJnKTsKKyAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewpAQCAtNTk2LDcgKzU5NCw3IEBACiAgICAgICAgIHNlbGYtPmNvZGVjLT5lbmNpbml0KCZzdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgciA9IG11bHRpYnl0ZWNvZGVjX2VuY29kZShzZWxmLT5jb2RlYywgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICBhcmcsIE5VTEwsIGVycm9yY2IsCisgICAgICAgICAgICAgICAgICAgIGlucHV0LCBOVUxMLCBlcnJvcmNiLAogICAgICAgICAgICAgICAgICAgICBNQkVOQ19GTFVTSCB8IE1CRU5DX1JFU0VUKTsKICAgICBpZiAociA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKQEAgLTYxMSwzMSArNjA5LDQxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYy5kZWNvZGUKKworICBpbnB1dDogUHlfYnVmZmVyCisgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitEZWNvZGVzICdpbnB1dCcuCisKKydlcnJvcnMnIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzCisnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZQordmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLU11bHRpYnl0ZUNvZGVjX0RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjQxOWY2NWJhZDZjYzc3IGlucHV0PWE3ZDQ1Zjg3Zjc1ZTVlMDJdKi8KIHsKICAgICBNdWx0aWJ5dGVDb2RlY19TdGF0ZSBzdGF0ZTsKICAgICBNdWx0aWJ5dGVEZWNvZGVCdWZmZXIgYnVmOwogICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqcmVzOwotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjb25zdCBjaGFyICpkYXRhLCAqZXJyb3JzID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkYXRhOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY2t3YXJnbGlzdCwgJnBkYXRhLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBkYXRhbGVuID0gcGRhdGEubGVuOworICAgIGRhdGEgPSBpbnB1dC0+YnVmOworICAgIGRhdGFsZW4gPSBpbnB1dC0+bGVuOwogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChkYXRhbGVuID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgICAgICBFUlJPUl9ERUNSRUYoZXJyb3JjYik7CiAgICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9OZXcoMCwgMCksIDApOwogICAgIH0KQEAgLTY2OCwxMyArNjc2LDExIEBACiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICByZXR1cm4gbWFrZV90dXBsZShyZXMsIGRhdGFsZW4pOwogCiBlcnJvcmV4aXQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmYnVmLndyaXRlcik7CkBAIC02ODMsMTMgKzY4OSw5IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbXVsdGlieXRlY29kZWNfbWV0aG9kc1tdID0gewotICAgIHsiZW5jb2RlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKU11bHRpYnl0ZUNvZGVjX0VuY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgTXVsdGlieXRlQ29kZWNfRW5jb2RlX19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pTXVsdGlieXRlQ29kZWNfRGVjb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICBNdWx0aWJ5dGVDb2RlY19EZWNvZGVfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0RFQ09ERV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgdm9pZApAQCAtODczLDI2ICs4NzUsMzQgQEAKIH0KIAogCi0vKioKLSAqIE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciBvYmplY3QKLSAqLworLypbY2xpbmljIGlucHV0XQorIGNsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIgIk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqIiAiJk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9M2JlODI5MDljZDA4OTI0ZF0qLworCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLmVuY29kZQorCisgICAgaW5wdXQ6IG9iamVjdAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbWJpZW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTIzMzYxYjZjNTA1ZTJjMSBpbnB1dD1hMzQ1YzY4OGZhNjY0ZjkyXSovCiB7Ci0gICAgUHlPYmplY3QgKmRhdGE7Ci0gICAgaW50IGZpbmFsID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98aTplbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbGt3YXJnbGlzdCwgJmRhdGEsICZmaW5hbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIGVuY29kZXJfZW5jb2RlX3N0YXRlZnVsKFNUQVRFRlVMX0VDVFgoc2VsZiksIGRhdGEsIGZpbmFsKTsKKyAgICByZXR1cm4gZW5jb2Rlcl9lbmNvZGVfc3RhdGVmdWwoU1RBVEVGVUxfRUNUWChzZWxmKSwgaW5wdXQsIGZpbmFsKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlci5yZXNldAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJpZW5jb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0MTI1ZDhmNTM3YTI1M2YgaW5wdXQ9OTMwZjA2NzYwNzA3YjZlYV0qLwogewogICAgIC8qIExvbmdlc3Qgb3V0cHV0OiA0IGJ5dGVzIChiJ1x4MEZceDFGKEInKSB3aXRoIElTTyAyMDIyICovCiAgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNF0sICpvdXRidWY7CkBAIC05MDksMTEgKzkxOSw5IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWJpZW5jb2Rlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJlbmNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZW5jb2Rlcl9lbmNvZGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsicmVzZXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1iaWVuY29kZXJfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfUkVTRVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEwMjQsMjYgKzEwMzIsMzEgQEAKIH07CiAKIAotLyoqCi0gKiBNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIgb2JqZWN0Ci0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KKyBjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyICJNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKiIgIiZNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWY2MDAzZmFhZjJjZWE2OTJdKi8KKworLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlci5kZWNvZGUKKworICAgIGlucHV0OiBQeV9idWZmZXIKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1iaWRlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWI5MDkwZThhOWNlMmJhIGlucHV0PTU3NjYzMWM2MTkwNmQzOWRdKi8KIHsKICAgICBNdWx0aWJ5dGVEZWNvZGVCdWZmZXIgYnVmOwogICAgIGNoYXIgKmRhdGEsICp3ZGF0YSA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwogICAgIFB5X3NzaXplX3Qgd3NpemUsIHNpemUsIG9yaWdwZW5kaW5nOwotICAgIGludCBmaW5hbCA9IDA7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGk6ZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxrd2FyZ2xpc3QsICZwZGF0YSwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBzaXplID0gcGRhdGEubGVuOworICAgIGRhdGEgPSBpbnB1dC0+YnVmOworICAgIHNpemUgPSBpbnB1dC0+bGVuOwogCiAgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZidWYud3JpdGVyKTsKICAgICBidWYuZXhjb2JqID0gTlVMTDsKQEAgLTEwOTQsMTQgKzExMDcsMTIgQEAKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIGlmICh3ZGF0YSAhPSBkYXRhKQogICAgICAgICBQeU1lbV9EZWwod2RhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgcmV0dXJuIHJlczsKIAogZXJyb3JleGl0OgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICBpZiAod2RhdGEgIT0gTlVMTCAmJiB3ZGF0YSAhPSBkYXRhKQogICAgICAgICBQeU1lbV9EZWwod2RhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CkBAIC0xMTA5LDggKzExMjAsMTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlci5yZXNldAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJpZGVjb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhNDIzYjE3ODJjMjNlZDEgaW5wdXQ9M2I2M2IzYmU4NWIyZmI0NV0qLwogewogICAgIGlmIChzZWxmLT5jb2RlYy0+ZGVjcmVzZXQgIT0gTlVMTCAmJgogICAgICAgICBzZWxmLT5jb2RlYy0+ZGVjcmVzZXQoJnNlbGYtPnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnKSAhPSAwKQpAQCAtMTEyMSwxMSArMTEzNyw5IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWJpZGVjb2Rlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJkZWNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZGVjb2Rlcl9kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsicmVzZXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1iaWRlY29kZXJfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTERFQ09ERVJfREVDT0RFX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTERFQ09ERVJfUkVTRVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMzYsOSArMTI1MCwxMCBAQAogfTsKIAogCi0vKioKLSAqIE11bHRpYnl0ZVN0cmVhbVJlYWRlciBvYmplY3QKLSAqLworLypbY2xpbmljIGlucHV0XQorIGNsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIgIk11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqIiAiTXVsdGlieXRlU3RyZWFtUmVhZGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMzIzNjM0Yjc0OTc2ZjA5XSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYnN0cmVhbXJlYWRlcl9pcmVhZChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCkBAIC0xMjYwLDEwICsxMjc1LDEwIEBACiAKICAgICAgICAgaWYgKHNpemVoaW50IDwgMCkKICAgICAgICAgICAgIGNyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKW1ldGhvZCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCBOVUxMKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3JlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopbWV0aG9kLCAiaSIsIHNpemVoaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsICJpIiwgc2l6ZWhpbnQpOwogICAgICAgICBpZiAoY3JlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAKQEAgLTEzNDUsMTYgKzEzNjAsMjEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIucmVhZAorCisgICAgc2l6ZW9iajogb2JqZWN0ID0gTm9uZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtcmVhZGVyX3JlYWQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaXplb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1NjIxZWI3NTM1NWQ1YjggaW5wdXQ9MDE1YjBkM2ZmMmZjYTQ4NV0qLwogewotICAgIFB5T2JqZWN0ICpzaXplb2JqID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwgMCwgMSwgJnNpemVvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzaXplb2JqID09IFB5X05vbmUgfHwgc2l6ZW9iaiA9PSBOVUxMKQorICAgIGlmIChzaXplb2JqID09IFB5X05vbmUpCiAgICAgICAgIHNpemUgPSAtMTsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc2l6ZW9iaikpCiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KHNpemVvYmopOwpAQCAtMTM2OSwxNiArMTM4OSwyMSBAQAogICAgIHJldHVybiBtYnN0cmVhbXJlYWRlcl9pcmVhZChzZWxmLCAicmVhZCIsIHNpemUpOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZWFkbGluZQorCisgICAgc2l6ZW9iajogb2JqZWN0ID0gTm9uZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtcmVhZGVyX3JlYWRsaW5lKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaXplb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmYmZhYWUxZWQ0NTdhMTEgaW5wdXQ9NDFjY2M2NGY5YmIwY2VjM10qLwogewotICAgIFB5T2JqZWN0ICpzaXplb2JqID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsIDAsIDEsICZzaXplb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc2l6ZW9iaiA9PSBQeV9Ob25lIHx8IHNpemVvYmogPT0gTlVMTCkKKyAgICBpZiAoc2l6ZW9iaiA9PSBQeV9Ob25lKQogICAgICAgICBzaXplID0gLTE7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHNpemVvYmopKQogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChzaXplb2JqKTsKQEAgLTEzOTMsMTYgKzE0MTgsMjIgQEAKICAgICByZXR1cm4gbWJzdHJlYW1yZWFkZXJfaXJlYWQoc2VsZiwgInJlYWRsaW5lIiwgc2l6ZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLnJlYWRsaW5lcworCisgICAgc2l6ZWhpbnRvYmo6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXJlYWRlcl9yZWFkbGluZXMoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTdjNDMxMDc2OGVkMmFkNCBpbnB1dD01NDkzMmY1ZDRkODhlODgwXSovCiB7Ci0gICAgUHlPYmplY3QgKnNpemVoaW50b2JqID0gTlVMTCwgKnIsICpzcjsKKyAgICBQeU9iamVjdCAqciwgKnNyOwogICAgIFB5X3NzaXplX3Qgc2l6ZWhpbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZXMiLCAwLCAxLCAmc2l6ZWhpbnRvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzaXplaGludG9iaiA9PSBQeV9Ob25lIHx8IHNpemVoaW50b2JqID09IE5VTEwpCisgICAgaWYgKHNpemVoaW50b2JqID09IFB5X05vbmUpCiAgICAgICAgIHNpemVoaW50ID0gLTE7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHNpemVoaW50b2JqKSkKICAgICAgICAgc2l6ZWhpbnQgPSBQeUxvbmdfQXNTc2l6ZV90KHNpemVoaW50b2JqKTsKQEAgLTE0MjMsOCArMTQ1NCwxMyBAQAogICAgIHJldHVybiBzcjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtcmVhZGVyX3Jlc2V0KE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTM4NDkwMzcwYTY4MGFiYyBpbnB1dD01ZDQxNDBkYjg0YjVlMWUyXSovCiB7CiAgICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNyZXNldCAhPSBOVUxMICYmCiAgICAgICAgIHNlbGYtPmNvZGVjLT5kZWNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCkBAIC0xNDM1LDE0ICsxNDcxLDEwIEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWJzdHJlYW1yZWFkZXJfbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtcmVhZGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJyZWFkbGluZSIsICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVhZGxpbmUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJyZWFkbGluZXMiLCAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVhZGxpbmVzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsicmVzZXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtcmVhZGVyX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRUFEX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRUFETElORVNfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRVNFVF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAogfTsKIApAQCAtMTU2NSw5ICsxNTk3LDEwIEBACiB9OwogCiAKLS8qKgotICogTXVsdGlieXRlU3RyZWFtV3JpdGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciAiTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICoiICImTXVsdGlieXRlU3RyZWFtV3JpdGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jZGUyMjc4MGEyMTVkNmFjXSovCiAKIHN0YXRpYyBpbnQKIG1ic3RyZWFtd3JpdGVyX2l3cml0ZShNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsCkBAIC0xNTg4LDggKzE2MjEsMTcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIud3JpdGUKKworICAgIHN0cm9iajogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW13cml0ZXJfd3JpdGUoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Ryb2JqKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZShNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTEzYWU4NDFjODk1MjUxZSBpbnB1dD01NTFkYzRjMDE4YzEwYTJiXSovCiB7CiAgICAgaWYgKG1ic3RyZWFtd3JpdGVyX2l3cml0ZShzZWxmLCBzdHJvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1OTcsOCArMTYzOSwxNyBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIud3JpdGVsaW5lcworCisgICAgbGluZXM6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtd3JpdGVyX3dyaXRlbGluZXMoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGluZXMpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlbGluZXMoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsaW5lcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNWM0Mjg1YWM4ZTdkNTIyIGlucHV0PTU3Nzk3ZmU3MDA4ZDRlOTZdKi8KIHsKICAgICBQeU9iamVjdCAqc3Ryb2JqOwogICAgIGludCBpLCByOwpAQCAtMTYyNCw4ICsxNjc1LDEzIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXdyaXRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0X2ltcGwoTXVsdGlieXRlU3RyZWFtV3JpdGVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmNTRhNGQ5YjAzZGI1ZmYgaW5wdXQ9YjU2ZGJjYmFmMzVjYzEwY10qLwogewogICAgIFB5T2JqZWN0ICpwd3J0OwogCkBAIC0xNzI0LDEzICsxNzgwLDEwIEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWJzdHJlYW13cml0ZXJfbWV0aG9kc1tdID0gewotICAgIHsid3JpdGUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtd3JpdGVyX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsid3JpdGVsaW5lcyIsICAgICAgKFB5Q0Z1bmN0aW9uKW1ic3RyZWFtd3JpdGVyX3dyaXRlbGluZXMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW13cml0ZXJfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9LAorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9XUklURUxJTkVTX01FVEhPRERFRgorICAgIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfUkVTRVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9LAogfTsKIAogc3RhdGljIFB5TWVtYmVyRGVmIG1ic3RyZWFtd3JpdGVyX21lbWJlcnNbXSA9IHsKQEAgLTE3ODQsMTIgKzE4MzcsMTYgQEAKIH07CiAKIAotLyoqCi0gKiBFeHBvc2VkIGZhY3RvcnkgZnVuY3Rpb24KLSAqLworLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLl9fY3JlYXRlX2NvZGVjCisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9fY3JlYXRlX2NvZGVjKFB5T2JqZWN0ICppZ25vcmUsIFB5T2JqZWN0ICphcmcpCitfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYmU3NGY2NTEwNjQwMTYzIGlucHV0PTY4NDBiMmE2YjE4M2ZjZmFdKi8KIHsKICAgICBNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZjsKICAgICBNdWx0aWJ5dGVDb2RlYyAqY29kZWM7CkBAIC0xODEyLDcgKzE4NjksNyBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIF9fbWV0aG9kc1tdID0gewotICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX19jcmVhdGVfY29kZWMsIE1FVEhfT30sCisgICAgX01VTFRJQllURUNPREVDX19fQ1JFQVRFX0NPREVDX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKaW5kZXggOGEyMDFhMC4uM2VkODMwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKQEAgLTE0LDIwICsxNCwxOCBAQAogImZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4iKTsKIAogI2RlZmluZSBfQloyX0JaMkNPTVBSRVNTT1JfQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9PLCBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3MoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3MoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIApAQCAtODQsOCArODIsNyBAQAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyQ29tcHJlc3Nvcl9UeXBlKSAmJgogICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKQogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ8aTpCWjJDb21wcmVzc29yIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOkJaMkNvbXByZXNzb3IiLAogICAgICAgICAmY29tcHJlc3NsZXZlbCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyQ29tcHJlc3NvciAqKXNlbGYsIGNvbXByZXNzbGV2ZWwpOwpAQCAtOTUsMzQgKzkyLDQzIEBACiB9CiAKIFB5RG9jX1NUUlZBUihfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCAvKVxuIgorImRlY29tcHJlc3MoJHNlbGYsIC8sIGRhdGEsIG1heF9sZW5ndGg9LTEpXG4iCiAiLS1cbiIKICJcbiIKLSJQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCisiRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy5cbiIKICJcbiIKLSJSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGJcJ1wnIG90aGVyd2lzZS5cbiIKKyJJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCogYnl0ZXMgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmVcbiIKKyJwcm9kdWNlZCwgKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dFxuIgorImNhbGwgdG8gKmRlY29tcHJlc3MoKSogbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGJcJ1wnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuXG4iCiAiXG4iCi0iQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZFxuIgotInJhaXNlcyBhbiBFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbVxuIgotImlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CisiSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzXG4iCisid2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksXG4iCisiKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIFRydWUuXG4iCisiXG4iCisiQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW5cbiIKKyJFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpblxuIgorInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0JaMl9CWjJERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSk7CitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CisgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCkBAIC0xNTksNCArMTY1LDQgQEAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMWNhNDQwNTUxOWEwOTMxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWYyOWI3NmIzMzE0ZmM3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI5N2IxOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTM5OCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfX2RvY19fLAorInJlZ2lzdGVyKCRtb2R1bGUsIHNlYXJjaF9mdW5jdGlvbiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlZ2lzdGVyIGEgY29kZWMgc2VhcmNoIGZ1bmN0aW9uLlxuIgorIlxuIgorIlNlYXJjaCBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIHRha2Ugb25lIGFyZ3VtZW50LCB0aGUgZW5jb2RpbmcgbmFtZSBpblxuIgorImFsbCBsb3dlciBjYXNlIGxldHRlcnMsIGFuZCBlaXRoZXIgcmV0dXJuIE5vbmUsIG9yIGEgdHVwbGUgb2YgZnVuY3Rpb25zXG4iCisiKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsIHN0cmVhbV93cml0ZXIpIChvciBhIENvZGVjSW5mbyBvYmplY3QpLiIpOworCisjZGVmaW5lIF9DT0RFQ1NfUkVHSVNURVJfTUVUSE9EREVGICAgIFwKKyAgICB7InJlZ2lzdGVyIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmVnaXN0ZXIsIE1FVEhfTywgX2NvZGVjc19yZWdpc3Rlcl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2NvZGVjc19sb29rdXBfX2RvY19fLAorImxvb2t1cCgkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKKyItLVxuIgorIlxuIgorIkxvb2tzIHVwIGEgY29kZWMgdHVwbGUgaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeSBhbmQgcmV0dXJucyBhIENvZGVjSW5mbyBvYmplY3QuIik7CisKKyNkZWZpbmUgX0NPREVDU19MT09LVVBfTUVUSE9EREVGICAgIFwKKyAgICB7Imxvb2t1cCIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xvb2t1cCwgTUVUSF9PLCBfY29kZWNzX2xvb2t1cF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cCIsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2VuY29kZV9fZG9jX18sCisiZW5jb2RlKCRtb2R1bGUsIC8sIG9iaiwgZW5jb2Rpbmc9c3lzLmdldGRlZmF1bHRlbmNvZGluZygpLFxuIgorIiAgICAgICBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkVuY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy5cbiIKKyJcbiIKKyJlbmNvZGluZyBkZWZhdWx0cyB0byB0aGUgZGVmYXVsdCBlbmNvZGluZy4gIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGFcbiIKKyJkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZ1xuIgorImVycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnXG4iCisiYW5kIFwnYmFja3NsYXNocmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19kZWNvZGVfX2RvY19fLAorImRlY29kZSgkbW9kdWxlLCAvLCBvYmosIGVuY29kaW5nPXN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKSxcbiIKKyIgICAgICAgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiZW5jb2RpbmcgZGVmYXVsdHMgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhXG4iCisiZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZW5jb2RpbmdcbiIKKyJlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSBcJ2lnbm9yZVwnLCBcJ3JlcGxhY2VcJ1xuIgorImFuZCBcJ2JhY2tzbGFzaHJlcGxhY2VcJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuIgorImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisKKyNkZWZpbmUgX0NPREVDU19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX18sCisiX2ZvcmdldF9jb2RlYygkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKKyItLVxuIgorIlxuIgorIlB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUiKTsKKworI2RlZmluZSBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9mb3JnZXRfY29kZWMiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19fZm9yZ2V0X2NvZGVjLCBNRVRIX08sIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJlc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJlc2NhcGVfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUoJG1vZHVsZSwgb2JqLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCisgICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX18sCisidXRmXzdfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfN19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl83X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl83X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzdfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19fLAorInV0Zl84X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfOF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfOF9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2xlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfbGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2JlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfYmVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2V4X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIGZpbmFsPUZhbHNlLFxuIgorIiAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfRVhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfZXhfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMTZfZXhfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfbGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfTEVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfbGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9sZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9sZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfYmVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfQkVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfYmVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZXhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBieXRlb3JkZXI9MCwgZmluYWw9RmFsc2UsXG4iCisiICAgICAgICAgICAgICAgICAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FWF9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9leF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6dW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX18sCisibGF0aW5fMV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTEFUSU5fMV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImxhdGluXzFfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbGF0aW5fMV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmxhdGluXzFfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2FzY2lpX2RlY29kZV9fZG9jX18sCisiYXNjaWlfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0FTQ0lJX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiYXNjaWlfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfYXNjaWlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfYXNjaWlfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfYXNjaWlfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6YXNjaWlfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jaGFybWFwX2RlY29kZV9fZG9jX18sCisiY2hhcm1hcF9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIG1hcHBpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DSEFSTUFQX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jaGFybWFwX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKm1hcHBpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19kZWNvZGVfX2RvY19fLAorIm1iY3NfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsibWJjc19kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19tYmNzX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX21iY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2RlY29kZSgkbW9kdWxlLCBjb2RlcGFnZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvZGVfcGFnZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGVwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpkYXRhLCBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNvZGVwYWdlOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfXywKKyJyZWFkYnVmZmVyX2VuY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUFEQlVGRkVSX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfX2RvY19fLAorInVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlKCRtb2R1bGUsIG9iaiwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAorICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfN19lbmNvZGVfX2RvY19fLAorInV0Zl83X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl83X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzdfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzdfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzdfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzhfZW5jb2RlX19kb2NfXywKKyJ1dGZfOF9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfOF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl84X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl84X2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl84X2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8xNl9lbmNvZGVfX2RvY19fLAorInV0Zl8xNl9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfbGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfYmVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZW5jb2RlX19kb2NfXywKKyJ1dGZfMzJfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2xlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9MRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9sZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2JlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9CRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9iZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJ1bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfZXNjYXBlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19fLAorInJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xhdGluXzFfZW5jb2RlX19kb2NfXywKKyJsYXRpbl8xX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xBVElOXzFfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJsYXRpbl8xX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xhdGluXzFfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfYXNjaWlfZW5jb2RlX19kb2NfXywKKyJhc2NpaV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19BU0NJSV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzY2lpX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2FzY2lpX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2FzY2lpX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6YXNjaWlfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2NoYXJtYXBfZW5jb2RlX19kb2NfXywKKyJjaGFybWFwX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCBtYXBwaW5nPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoYXJtYXBfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfY2hhcm1hcF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jaGFybWFwX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY2hhcm1hcF9idWlsZF9fZG9jX18sCisiY2hhcm1hcF9idWlsZCgkbW9kdWxlLCBtYXAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9CVUlMRF9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9idWlsZCIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NoYXJtYXBfYnVpbGQsIE1FVEhfTywgX2NvZGVjc19jaGFybWFwX2J1aWxkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbWFwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9idWlsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwobW9kdWxlLCBtYXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19lbmNvZGVfX2RvY19fLAorIm1iY3NfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im1iY3NfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbWJjc19lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bWJjc19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2VuY29kZSgkbW9kdWxlLCBjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY29kZV9wYWdlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfX2RvY19fLAorInJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuXG4iCisiXG4iCisiaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uXG4iCisiaW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nXG4iCisiZXJyb3IgYW5kIG11c3QgcmV0dXJuIGEgKHJlcGxhY2VtZW50LCBuZXcgcG9zaXRpb24pIHR1cGxlLiIpOworCisjZGVmaW5lIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7InJlZ2lzdGVyX2Vycm9yIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmVnaXN0ZXJfZXJyb3IsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9yczsKKyAgICBQeU9iamVjdCAqaGFuZGxlcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086cmVnaXN0ZXJfZXJyb3IiLAorICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwobW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX18sCisibG9va3VwX2Vycm9yKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyXG4iCisiXG4iCisiUmV0dXJuIHRoZSBlcnJvciBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsaW5nIG5hbWUgb3IgcmFpc2UgYVxuIgorIkxvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuIik7CisKKyNkZWZpbmUgX0NPREVDU19MT09LVVBfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7Imxvb2t1cF9lcnJvciIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xvb2t1cF9lcnJvciwgTUVUSF9PLCBfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MTNhNDA4MTc4OGRhMWJjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZWMzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihjcnlwdF9jcnlwdF9fZG9jX18sCisiY3J5cHQoJG1vZHVsZSwgd29yZCwgc2FsdCwgLylcbiIKKyItLVxuIgorIlxuIgorIkhhc2ggYSAqd29yZCogd2l0aCB0aGUgZ2l2ZW4gKnNhbHQqIGFuZCByZXR1cm4gdGhlIGhhc2hlZCBwYXNzd29yZC5cbiIKKyJcbiIKKyIqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlclwncyBwYXNzd29yZC4gICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTZcbiIKKyJjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoICRkaWdpdCQgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZClcbiIKKyJ3aWxsIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gYW5kIHByb2R1Y2UgZGlzdGluY3RcbiIKKyJyZXN1bHRzIGZvciBhIGdpdmVuICp3b3JkKi4iKTsKKworI2RlZmluZSBDUllQVF9DUllQVF9NRVRIT0RERUYgICAgXAorICAgIHsiY3J5cHQiLCAoUHlDRnVuY3Rpb24pY3J5cHRfY3J5cHQsIE1FVEhfVkFSQVJHUywgY3J5cHRfY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjcnlwdF9jcnlwdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp3b3JkOworICAgIGNvbnN0IGNoYXIgKnNhbHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOmNyeXB0IiwKKyAgICAgICAgJndvcmQsICZzYWx0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNyeXB0X2NyeXB0X2ltcGwobW9kdWxlLCB3b3JkLCBzYWx0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIyYzI5NWM5YmNlMDE4YzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTExNzQyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKQEAgLTAsMCArMSw3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19fLAorImFkZGNoKFt5LCB4LF0gY2gsIFthdHRyXSlcbiIKKyJQYWludCBjaGFyYWN0ZXIgY2ggYXQgKHksIHgpIHdpdGggYXR0cmlidXRlcyBhdHRyLlxuIgorIlxuIgorIiAgeVxuIgorIiAgICBZLWNvb3JkaW5hdGUuXG4iCisiICB4XG4iCisiICAgIFgtY29vcmRpbmF0ZS5cbiIKKyIgIGNoXG4iCisiICAgIENoYXJhY3RlciB0byBhZGQuXG4iCisiICBhdHRyXG4iCisiICAgIEF0dHJpYnV0ZXMgZm9yIHRoZSBjaGFyYWN0ZXIuXG4iCisiXG4iCisiUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0cixcbiIKKyJvdmVyd3JpdGluZyBhbnkgY2hhcmFjdGVyIHByZXZpb3VzbHkgcGFpbnRlZCBhdCB0aGF0IGxvY2F0aW9uLlxuIgorIkJ5IGRlZmF1bHQsIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gYW5kIGF0dHJpYnV0ZXMgYXJlIHRoZVxuIgorImN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSB3aW5kb3cgb2JqZWN0LiIpOworCisjZGVmaW5lIENVUlNFU19XSU5ET1dfQUREQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGNoIiwgKFB5Q0Z1bmN0aW9uKWN1cnNlc193aW5kb3dfYWRkY2gsIE1FVEhfVkFSQVJHUywgY3Vyc2VzX3dpbmRvd19hZGRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnNlc193aW5kb3dfYWRkY2goUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBncm91cF9sZWZ0XzEgPSAwOworICAgIGludCB5ID0gMDsKKyAgICBpbnQgeCA9IDA7CisgICAgUHlPYmplY3QgKmNoOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBsb25nIGF0dHIgPSAwOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY3Vyc2VzLndpbmRvdy5hZGRjaCByZXF1aXJlcyAxIHRvIDQgYXJndW1lbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChzZWxmLCBncm91cF9sZWZ0XzEsIHksIHgsIGNoLCBncm91cF9yaWdodF8xLCBhdHRyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4YzkwMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKQEAgLTAsMCArMSwzNyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX18sCisibm93KCR0eXBlLCAvLCB0ej1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBuZXcgZGF0ZXRpbWUgb2JqZWN0IHJlcHJlc2VudGluZyBjdXJyZW50IHRpbWUgbG9jYWwgdG8gdHouXG4iCisiXG4iCisiICB0elxuIgorIiAgICBUaW1lem9uZSBvYmplY3QuXG4iCisiXG4iCisiSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLiIpOworCisjZGVmaW5lIERBVEVUSU1FX0RBVEVUSU1FX05PV19NRVRIT0RERUYgICAgXAorICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnR6ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm5vdyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnR6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKHR5cGUsIHR6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNDVjNjcwZDZlNDk1M2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDc0ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0RCTV9EQk1fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2Nsb3NlLCBNRVRIX05PQVJHUywgX2RibV9kYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2RibV9kYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9kYm1fZGJtX2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4iKTsKKworI2RlZmluZSBfREJNX0RCTV9LRVlTX01FVEhPRERFRiAgICBcCisgICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZGJtX2RibV9rZXlzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9rZXlzX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZGJtX2RibV9rZXlzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9nZXRfX2RvY19fLAorImdldCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOworCisjZGVmaW5lIF9EQk1fREJNX0dFVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2dldCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9nZXQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpnZXQiLAorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2RibV9kYm1fc2V0ZGVmYXVsdF9fZG9jX18sCisic2V0ZGVmYXVsdCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LlxuIgorIlxuIgorIklmIGtleSBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBpdCBpcyBpbnNlcnRlZCB3aXRoIGRlZmF1bHQgYXMgdGhlIHZhbHVlLiIpOworCisjZGVmaW5lIF9EQk1fREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fc2V0ZGVmYXVsdCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9zZXRkZWZhdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKKyJcbiIKKyIgIGZpbGVuYW1lXG4iCisiICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgorIiAgZmxhZ3NcbiIKKyIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKKyIgIG1vZGVcbiIKKyIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCisiICAgIChlLmcuIG9zLk9fUkRXUikuIik7CisKKyNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3BlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDkyZTgxYjI4YzU1OGQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YzNmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCkBAIC0wLDAgKzEsNjY2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0FQUEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJlbGVtZW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9DTEVBUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXIsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCBtZW1vLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90CitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChzZWxmKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19fZG9jX18sCisiX19nZXRzdGF0ZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0dFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfXywKKyJfX3NldHN0YXRlX18oJHNlbGYsIHN0YXRlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NldHN0YXRlX18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgZWxlbWVudHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19fLAorImZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19fLAorImZpbmR0ZXh0KCRzZWxmLCAvLCBwYXRoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086ZmluZHRleHQiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXRoOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX18sCisiaXRlcmZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGICAgIFwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIC8sIGtleSwgZGVmYXVsdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5fX2RvY19fLAorImdldGNoaWxkcmVuKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y2hpbGRyZW4iLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW4sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfXywKKyJpdGVyKCRzZWxmLCAvLCB0YWc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUl9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfX2RvY19fLAorIml0ZXJ0ZXh0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlcnRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHQsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19fLAorImluc2VydCgkc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViZWxlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCisgICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19fZG9jX18sCisiaXRlbXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRiAgICBcCisgICAgeyJpdGVtcyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtcywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0tFWVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5cywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfX2RvY19fLAorIm1ha2VlbGVtZW50KCRzZWxmLCB0YWcsIGF0dHJpYiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfTUFLRUVMRU1FTlRfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ha2VlbGVtZW50IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cmliOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAorICAgICAgICAyLCAyLAorICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoc2VsZiwgdGFnLCBhdHRyaWIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgc3ViZWxlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlLCBNRVRIX08sIF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfX2RvY19fLAorInNldCgkc2VsZiwga2V5LCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9zZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXQiLAorICAgICAgICAyLCAyLAorICAgICAgICAma2V5LCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoc2VsZiwga2V5LCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KTsKKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOlRyZWVCdWlsZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGYsIGVsZW1lbnRfZmFjdG9yeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhX19kb2NfXywKKyJkYXRhKCRzZWxmLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfREFUQV9NRVRIT0RERUYgICAgXAorICAgIHsiZGF0YSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YSwgTUVUSF9PLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCB0YWcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9FTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZW5kLCBNRVRIX08sIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2UoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgdGFnLCBhdHRycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfU1RBUlRfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9pbXBsKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cnMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAorICAgICAgICAxLCAyLAorICAgICAgICAmdGFnLCAmYXR0cnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoc2VsZiwgdGFnLCBhdHRycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhcmdldCwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoKFhNTFBhcnNlck9iamVjdCAqKXNlbGYsIGh0bWwsIHRhcmdldCwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZF9fZG9jX18sCisiZmVlZCgkc2VsZiwgZGF0YSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9GRUVEX01FVEhPRERFRiAgICBcCisgICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2ZlZWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3BhcnNlX3dob2xlX19kb2NfXywKKyJfcGFyc2Vfd2hvbGUoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfX1BBUlNFX1dIT0xFX01FVEhPRERFRiAgICBcCisgICAgeyJfcGFyc2Vfd2hvbGUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGUsIE1FVEhfTywgX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9fZG9jX18sCisiZG9jdHlwZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9ET0NUWVBFX01FVEhPRERFRiAgICBcCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZSwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX19kb2NfXywKKyJfc2V0ZXZlbnRzKCRzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fU0VURVZFTlRTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0ZXZlbnRzIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOworICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwKKyAgICAgICAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTE5YWVkODRjMTU0NTE4NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEwYWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMCwwICsxLDI1MyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciBkZWZhdWx0IGlmIG5vdCBwcmVzZW50LiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fR0VUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9nZXQsIE1FVEhfVkFSQVJHUywgX2dkYm1fZ2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2dldChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3NldGRlZmF1bHRfX2RvY19fLAorInNldGRlZmF1bHQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHZhbHVlIGZvciBrZXksIG9yIHNldCBpdCB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdCBpZiBub3QgcHJlc2VudC4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9zZXRkZWZhdWx0LCBNRVRIX1ZBUkFSR1MsIF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9jbG9zZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fY2xvc2VfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9jbG9zZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fa2V5c19fZG9jX18sCisia2V5cygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsia2V5cyIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZ2RibV9nZGJtX2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fa2V5c19pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZ2RibV9nZGJtX2tleXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZmlyc3RrZXlfX2RvY19fLAorImZpcnN0a2V5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdGFydGluZyBrZXkgZm9yIHRoZSB0cmF2ZXJzYWwuXG4iCisiXG4iCisiSXRcJ3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2RcbiIKKyJhbmQgdGhlIG5leHRrZXkoKSBtZXRob2QuICBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTVwncyBpbnRlcm5hbFxuIgorImhhc2ggdmFsdWVzLCBhbmQgd29uXCd0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX0ZJUlNUS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJmaXJzdGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2ZpcnN0a2V5LCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9maXJzdGtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2ZpcnN0a2V5KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfXywKKyJuZXh0a2V5KCRzZWxmLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBrZXkgdGhhdCBmb2xsb3dzIGtleSBpbiB0aGUgdHJhdmVyc2FsLlxuIgorIlxuIgorIlRoZSBmb2xsb3dpbmcgY29kZSBwcmludHMgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSBkYiwgd2l0aG91dCBoYXZpbmdcbiIKKyJ0byBjcmVhdGUgYSBsaXN0IGluIG1lbW9yeSB0aGF0IGNvbnRhaW5zIHRoZW0gYWxsOlxuIgorIlxuIgorIiAgICAgIGsgPSBkYi5maXJzdGtleSgpXG4iCisiICAgICAgd2hpbGUgayAhPSBOb25lOlxuIgorIiAgICAgICAgICBwcmludChrKVxuIgorIiAgICAgICAgICBrID0gZGIubmV4dGtleShrKSIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fTkVYVEtFWV9NRVRIT0RERUYgICAgXAorICAgIHsibmV4dGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX25leHRrZXksIE1FVEhfTywgX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXlfaW1wbChkYm1vYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXkoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3Jlb3JnYW5pemVfX2RvY19fLAorInJlb3JnYW5pemUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW9yZ2FuaXplIHRoZSBkYXRhYmFzZS5cbiIKKyJcbiIKKyJJZiB5b3UgaGF2ZSBjYXJyaWVkIG91dCBhIGxvdCBvZiBkZWxldGlvbnMgYW5kIHdvdWxkIGxpa2UgdG8gc2hyaW5rXG4iCisidGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGVcbiIKKyJkYXRhYmFzZS4gIEdEQk0gd2lsbCBub3Qgc2hvcnRlbiB0aGUgbGVuZ3RoIG9mIGEgZGF0YWJhc2UgZmlsZSBleGNlcHRcbiIKKyJieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlXG4iCisia2VwdCBhbmQgcmV1c2VkIGFzIG5ldyAoa2V5LHZhbHVlKSBwYWlycyBhcmUgYWRkZWQuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9SRU9SR0FOSVpFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW9yZ2FuaXplIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fcmVvcmdhbml6ZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fcmVvcmdhbml6ZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9zeW5jX19kb2NfXywKKyJzeW5jKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggdGhlIGRhdGFiYXNlIHRvIHRoZSBkaXNrIGZpbGUuXG4iCisiXG4iCisiV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzXG4iCisiYW55IHVud3JpdHRlbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGRpc2suIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9TWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJzeW5jIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fc3luYywgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zeW5jX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fc3luYyhkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fc3luY19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoZGJtb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3M9XCdyXCcsIG1vZGU9MG82NjYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZGJtIGRhdGFiYXNlIGFuZCByZXR1cm4gYSBkYm0gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cbiIKKyJcbiIKKyJUaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlIFwnclwnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlXG4iCisiZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgXCd3XCcgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2UgZm9yXG4iCisicmVhZGluZyBhbmQgd3JpdGluZyksIFwnY1wnICh3aGljaCBjcmVhdGVzIHRoZSBkYXRhYmFzZSBpZiBpdCBkb2VzblwndFxuIgorImV4aXN0KSwgb3IgXCduXCcgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS5cbiIKKyJcbiIKKyJTb21lIHZlcnNpb25zIG9mIGdkYm0gc3VwcG9ydCBhZGRpdGlvbmFsIGZsYWdzIHdoaWNoIG11c3QgYmVcbiIKKyJhcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZSBtb2R1bGUgY29uc3RhbnRcbiIKKyJcJ29wZW5fZmxhZ3NcJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiAgVGhlIFwnZlwnIGZsYWdcbiIKKyJvcGVucyB0aGUgZGF0YWJhc2UgaW4gZmFzdCBtb2RlOyBhbHRlcmVkIGRhdGEgd2lsbCBub3QgYXV0b21hdGljYWxseVxuIgorImJlIHdyaXR0ZW4gdG8gdGhlIGRpc2sgYWZ0ZXIgZXZlcnkgY2hhbmdlLiAgVGhpcyByZXN1bHRzIGluIGZhc3RlclxuIgorIndyaXRlcyB0byB0aGUgZGF0YWJhc2UsIGJ1dCBtYXkgcmVzdWx0IGluIGFuIGluY29uc2lzdGVudCBkYXRhYmFzZVxuIgorImlmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uICBVc2UgdGhlXG4iCisic3luYygpIG1ldGhvZCB0byBmb3JjZSBhbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay5cbiIKKyJUaGUgXCdzXCcgZmxhZyBjYXVzZXMgYWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgdG8gYmUgc3luY2hyb25pemVkIHRvXG4iCisiZGlzay4gIFRoZSBcJ3VcJyBmbGFnIGRpc2FibGVzIGxvY2tpbmcgb2YgdGhlIGRhdGFiYXNlIGZpbGUuXG4iCisiXG4iCisiVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5XG4iCisid2hlbiB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCAwbzY2Ni4iKTsKKworI2RlZmluZSBEQk1PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLAorICAgICAgICAgICAgIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgbmFtZSwgZmxhZ3MsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDNkOGQ4NzFiY2NjYjY4YSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKaW5kZXggYzFhZDg4Mi4uNTlkOWQ1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaApAQCAtMTQsMjAgKzE0LDE4IEBACiAiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFDT01QUkVTU09SX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfTywgX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC02MiwzNCArNjAsNDMgQEAKIH0KIAogUHlEb2NfU1RSVkFSKF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCAvLCBkYXRhLCBtYXhfbGVuZ3RoPS0xKVxuIgogIi0tXG4iCiAiXG4iCi0iUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorIkRlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuXG4iCiAiXG4iCi0iUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCdcJyBvdGhlcndpc2UuXG4iCisiSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlXG4iCisicHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHRcbiIKKyJjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiXCdcJyB0byBvYnRhaW4gbW9yZSBvZiB0aGUgb3V0cHV0LlxuIgogIlxuIgotIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKLSJyYWlzZXMgYW4gRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKLSJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOworIklmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpc1xuIgorIndhcyBsZXNzIHRoYW4gKm1heF9sZW5ndGgqIGJ5dGVzLCBvciBiZWNhdXNlICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLFxuIgorIipzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQgcmFpc2VzIGFuXG4iCisiRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW5cbiIKKyJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKKyAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwpAQCAtMTIzLDcgKzEzMCw4IEBACiAiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIik7CiAKIHN0YXRpYyBpbnQKLV9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIGludCBmb3JtYXQsIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKTsKIAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xMzQsOCArMTQyLDcgQEAKICAgICBQeU9iamVjdCAqbWVtbGltaXQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpmaWx0ZXJzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsCiAgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKQEAgLTE1MywyMCArMTYwLDE4IEBACiAiQWx3YXlzIHJldHVybnMgVHJ1ZSBmb3IgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIuIik7CiAKICNkZWZpbmUgX0xaTUFfSVNfQ0hFQ0tfU1VQUE9SVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJpc19jaGVja19zdXBwb3J0ZWQiLCAoUHlDRnVuY3Rpb24pX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkLCBNRVRIX1ZBUkFSR1MsIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9fZG9jX199LAorICAgIHsiaXNfY2hlY2tfc3VwcG9ydGVkIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZCwgTUVUSF9PLCBfbHptYV9pc19jaGVja19zdXBwb3J0ZWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjaGVja19pZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hlY2tfaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwKLSAgICAgICAgJmNoZWNrX2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKG1vZHVsZSwgY2hlY2tfaWQpOwogCkBAIC0xODMsMjAgKzE4OCwxOCBAQAogIlRoZSByZXN1bHQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZmlsdGVyIElEIGl0c2VsZiwgb25seSB0aGUgb3B0aW9ucy4iKTsKIAogI2RlZmluZSBfTFpNQV9fRU5DT0RFX0ZJTFRFUl9QUk9QRVJUSUVTX01FVEhPRERFRiAgICBcCi0gICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIE1FVEhfVkFSQVJHUywgX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19fZG9jX199LAorICAgIHsiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBNRVRIX08sIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsem1hX2ZpbHRlciBmaWx0ZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAotICAgICAgICBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCkBAIC0yMjAsNyArMjIzLDggQEAKICAgICB7Il9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcywgTUVUSF9WQVJBUkdTLCBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOworX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfdmxpIGZpbHRlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyOSw4ICsyMzMsNyBAQAogICAgIGx6bWFfdmxpIGZpbHRlcl9pZDsKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8meSo6X2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCiAgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CkBAIC0yNDIsNCArMjQ1LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODA4ZmVjODIxNmFjNzEyYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQzZTA4NDJiZTNkM2ZlMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaCBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMCwwICsxLDM2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAorInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKKworI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBvcGNvZGU7CisgICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOnN0YWNrX2VmZmVjdCIsCisgICAgICAgICZvcGNvZGUsICZvcGFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlZTdjYjczNTcwNWU4YjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAppbmRleCA5NzUyOThjLi5iNjk4Y2U4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaApAQCAtODUsNyArODUsOCBAQAogIjIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1BpY2tsZXJfX19pbml0X19faW1wbChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOworX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBpbnQKIF9waWNrbGVfUGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC05Niw4ICs5Nyw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T3A6UGlja2xlciIsIF9rZXl3b3JkcywKICAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTE5OSw3ICsxOTksOSBAQAogICAgIHsiZmluZF9jbGFzcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzLCBNRVRIX1ZBUkFSR1MsIF9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKTsKK19waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNzEsNyArMjczLDkgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIGludAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMjgzLDggKzI4Nyw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLAogICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMzc3LDcgKzM4MCw4IEBACiAgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmZpbGUsIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKK19waWNrbGVfZHVtcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMzg5LDggKzM5Myw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBfaW1wbChtb2R1bGUsIG9iaiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQyMSw3ICs0MjQsOCBAQAogICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CitfcGlja2xlX2R1bXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDMyLDggKzQzNiw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQ3NSw3ICs0NzgsOCBAQAogICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOworX3BpY2tsZV9sb2FkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDg3LDggKzQ5MSw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCiAgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRfaW1wbChtb2R1bGUsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTUyMSw3ICs1MjQsOCBAQAogICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTUzMyw4ICs1MzcsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC01NDIsNCArNTQ1LDQgQEAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYWJhNzk1NzZlMjQwYzYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNmYzYTUyMzMyOTg0NDhlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlNDcwOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCkBAIC0wLDAgKzEsNjkzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NyZV9nZXRjb2Rlc2l6ZV9fZG9jX18sCisiZ2V0Y29kZXNpemUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRDT0RFU0laRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y29kZXNpemUiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRjb2Rlc2l6ZSwgTUVUSF9OT0FSR1MsIF9zcmVfZ2V0Y29kZXNpemVfX2RvY19ffSwKKworc3RhdGljIGludAorX3NyZV9nZXRjb2Rlc2l6ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRjb2Rlc2l6ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0Y29kZXNpemVfaW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9nZXRsb3dlcl9fZG9jX18sCisiZ2V0bG93ZXIoJG1vZHVsZSwgY2hhcmFjdGVyLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRMT1dFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0bG93ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRsb3dlciwgTUVUSF9WQVJBUkdTLCBfc3JlX2dldGxvd2VyX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRsb3dlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hhcmFjdGVyOworICAgIGludCBmbGFnczsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Z2V0bG93ZXIiLAorICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0bG93ZXJfaW1wbChtb2R1bGUsIGNoYXJhY3RlciwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX18sCisibWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLCBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfXywKKyJmdWxsbWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLFxuIgorIiAgICAgICAgICBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZVTExNQVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvLCBzdHJpbmc9Tm9uZSwgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSwgKixcbiIKKyIgICAgICAgcGF0dGVybj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoLCBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyBtYXRjaCBvYmplY3QgaW5zdGFuY2UuXG4iCisiXG4iCisiUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRiAgICBcCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUsICosXG4iCisiICAgICAgICBzb3VyY2U9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgc291cmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX18sCisiZmluZGl0ZXIoJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFJFIHBhdHRlcm4gaW4gc3RyaW5nLlxuIgorIlxuIgorIkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfXywKKyJzY2FubmVyKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYgICAgXAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xubjpzY2FubmVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfXywKKyJzcGxpdCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIG1heHNwbGl0PTAsICosIHNvdXJjZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7CisgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChzZWxmLCBzdHJpbmcsIG1heHNwbGl0LCBzb3VyY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX18sCisic3ViKCRzZWxmLCAvLCByZXBsLCBzdHJpbmcsIGNvdW50PTApXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYgICAgXAorICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXBsOworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1YiIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19fLAorInN1Ym4oJHNlbGYsIC8sIHJlcGwsIHN0cmluZywgY291bnQ9MClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGICAgIFwKKyAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmVwbDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWJuIiwgX2tleXdvcmRzLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19fLAorIl9fZGVlcGNvcHlfXygkc2VsZiwgLywgbWVtbylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZW1vOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCisgICAgICAgICZtZW1vKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfY29tcGlsZV9fZG9jX18sCisiY29tcGlsZSgkbW9kdWxlLCAvLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LFxuIgorIiAgICAgICAgaW5kZXhncm91cClcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9jb21waWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGdyb3VwcywgUHlPYmplY3QgKmdyb3VwaW5kZXgsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2NvbXBpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXR0ZXJuOworICAgIGludCBmbGFnczsKKyAgICBQeU9iamVjdCAqY29kZTsKKyAgICBQeV9zc2l6ZV90IGdyb3VwczsKKyAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKKyAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX18sCisiZXhwYW5kKCRzZWxmLCAvLCB0ZW1wbGF0ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0ZW1wbGF0ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdGVtcGxhdGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOmV4cGFuZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRlbXBsYXRlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKHNlbGYsIHRlbXBsYXRlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfXywKKyJncm91cHMoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEuXG4iCisiXG4iCisiICBkZWZhdWx0XG4iCisiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQU19NRVRIT0RERUYgICAgXAorICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfXywKKyJncm91cGRpY3QoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLlxuIgorIlxuIgorIiAgZGVmYXVsdFxuIgorIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUERJQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NUQVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9zdGFydCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zdGFydF9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3N0YXJ0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKHNlbGYsIGdyb3VwKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCBncm91cD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VORF9NRVRIT0RERUYgICAgXAorICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2VuZCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9lbmRfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX2VuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoc2VsZiwgZ3JvdXApOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfc3Bhbl9fZG9jX18sCisic3Bhbigkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NQQU5fTUVUSE9EREVGICAgIFwKKyAgICB7InNwYW4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfc3BhbiwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zcGFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX01hdGNoX19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfXywKKyJfX2RlZXBjb3B5X18oJHNlbGYsIC8sIG1lbW8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lbW87CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJm1lbW8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfX2RvY19fLAorIm1hdGNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9TY2FubmVyX21hdGNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9pbXBsKFNjYW5uZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX21hdGNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX1NFQVJDSF9NRVRIT0RERUYgICAgXAorICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX3NlYXJjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxZDczYWIyYzUwMDhiZDQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGJjNWQwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTAsMCArMSwxMTA1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9fZG9jX18sCisiZG9faGFuZHNoYWtlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfRE9fSEFORFNIQUtFX01FVEhPRERFRiAgICBcCisgICAgeyJkb19oYW5kc2hha2UiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX190ZXN0X2RlY29kZV9jZXJ0X19kb2NfXywKKyJfdGVzdF9kZWNvZGVfY2VydCgkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19URVNUX0RFQ09ERV9DRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJfdGVzdF9kZWNvZGVfY2VydCIsIChQeUNGdW5jdGlvbilfc3NsX190ZXN0X2RlY29kZV9jZXJ0LCBNRVRIX08sIF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX190ZXN0X2RlY29kZV9jZXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfX2RvY19fLAorInBlZXJfY2VydGlmaWNhdGUoJHNlbGYsIGRlcj1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci5cbiIKKyJcbiIKKyJJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzXG4iCisicHJvdmlkZWQsIGJ1dCBub3QgdmFsaWRhdGVkLCByZXR1cm5zIGFuIGVtcHR5IGRpY3Rpb25hcnkuICBPdGhlcndpc2VcbiIKKyJyZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZWVyIGNlcnRpZmljYXRlLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGVcbiIKKyJwZWVyIGNlcnRpZmljYXRlLCBvciBOb25lIGlmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZC4gIFRoaXMgd2lsbFxuIgorInJldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuXCd0IHZhbGlkYXRlZC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUEVFUl9DRVJUSUZJQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZSwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGJpbmFyeV9tb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfX2RvY19fLAorInNoYXJlZF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0hBUkVEX0NJUEhFUlNfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYXJlZF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVycywgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jaXBoZXJfX2RvY19fLAorImNpcGhlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX0NJUEhFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9jaXBoZXIsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfY2lwaGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY2lwaGVyX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NpcGhlcihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19fLAorInZlcnNpb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9WRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJ2ZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF92ZXJzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3ZlcnNpb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoc2VsZik7Cit9CisKKyNpZiBkZWZpbmVkKE9QRU5TU0xfTlBOX05FR09USUFURUQpCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX19kb2NfXywKKyJzZWxlY3RlZF9ucG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGICAgIFwKKyAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2xfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9BTFBOKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19fLAorInNlbGVjdGVkX2FscG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRiAgICBcCisgICAgeyJzZWxlY3RlZF9hbHBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQUxQTikgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9fZG9jX18sCisiY29tcHJlc3Npb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9DT01QUkVTU0lPTl9NRVRIT0RERUYgICAgXAorICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb25faW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgYiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyB0aGUgYnl0ZXMtbGlrZSBvYmplY3QgYiBpbnRvIHRoZSBTU0wgb2JqZWN0LlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3dyaXRlLCBNRVRIX08sIF9zc2xfX1NTTFNvY2tldF93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19fLAorInBlbmRpbmcoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLCBwZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9QRU5ESU5HX01FVEhPRERFRiAgICBcCisgICAgeyJwZW5kaW5nIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9wZW5kaW5nLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmcoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX18sCisicmVhZChzaXplLCBbYnVmZmVyXSlcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGxlbiwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9yZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbGVuOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9zc2wuX1NTTFNvY2tldC5yZWFkIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChzZWxmLCBsZW4sIGdyb3VwX3JpZ2h0XzEsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX19kb2NfXywKKyJzaHV0ZG93bigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZC5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NIVVRET1dOX01FVEhPRERFRiAgICBcCisgICAgeyJzaHV0ZG93biIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2h1dGRvd24sIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX18sCisidGxzX3VuaXF1ZV9jYigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIFwndGxzLXVuaXF1ZVwnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuIgorIlxuIgorIklmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1RMU19VTklRVUVfQ0JfTUVUSE9EREVGICAgIFwKKyAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2IsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBwcm90b192ZXJzaW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcHJvdG9fdmVyc2lvbjsKKworICAgIGlmICgodHlwZSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9TU0xDb250ZXh0IiwKKyAgICAgICAgJnByb3RvX3ZlcnNpb24pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9pbXBsKHR5cGUsIHByb3RvX3ZlcnNpb24pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfXywKKyJzZXRfY2lwaGVycygkc2VsZiwgY2lwaGVybGlzdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfQ0lQSEVSU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVycywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBjb25zdCBjaGFyICpjaXBoZXJsaXN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3Q7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX19kb2NfXywKKyJfc2V0X25wbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX05QTl9QUk9UT0NPTFNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19fLAorIl9zZXRfYWxwbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX0FMUE5fUFJPVE9DT0xTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0X2FscG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9hbHBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX18sCisibG9hZF9jZXJ0X2NoYWluKCRzZWxmLCAvLCBjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lLCBwYXNzd29yZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2VydGZpbGU7CisgICAgUHlPYmplY3QgKmtleWZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXNzd29yZCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoc2VsZiwgY2VydGZpbGUsIGtleWZpbGUsIHBhc3N3b3JkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19fLAorImxvYWRfdmVyaWZ5X2xvY2F0aW9ucygkc2VsZiwgLywgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRhdGE9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX1ZFUklGWV9MT0NBVElPTlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19fLAorImxvYWRfZGhfcGFyYW1zKCRzZWxmLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfREhfUEFSQU1TX01FVEhPRERFRiAgICBcCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfXywKKyJfd3JhcF9zb2NrZXQoJHNlbGYsIC8sIHNvY2ssIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc29jazsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsCisgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwgJnNvY2ssICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX18sCisiX3dyYXBfYmlvKCRzZWxmLCAvLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLFxuIgorIiAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmcsIGludCBzZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nOworICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZzsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIU8haXxPOl93cmFwX2JpbyIsIF9rZXl3b3JkcywKKyAgICAgICAgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZpbmNvbWluZywgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZvdXRnb2luZywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfXywKKyJzZXNzaW9uX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFU1NJT05fU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19fZG9jX18sCisic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChzZWxmKTsKK30KKworI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19fLAorInNldF9lY2RoX2N1cnZlKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X3NldF9lY2RoX2N1cnZlLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19ffSwKKworI2VuZGlmIC8qICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfX2RvY19fLAorInNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKCRzZWxmLCBtZXRob2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBzZXJ2ZXIgbmFtZSBpcyBwcm92aWRlZCBieSB0aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkXG4iCisid2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG4iCisiU2VlIFJGQyA2MDY2IGZvciBkZXRhaWxzIG9mIHRoZSBTTkkgZXh0ZW5zaW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2ssIE1FVEhfTywgX3NzbF9fU1NMQ29udGV4dF9zZXRfc2VydmVybmFtZV9jYWxsYmFja19fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfXywKKyJjZXJ0X3N0b3JlX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBxdWFudGl0aWVzIG9mIGxvYWRlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMuXG4iCisiXG4iCisiWC41MDkgY2VydGlmaWNhdGVzIHdpdGggYSBDQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHNcbiIKKyJpbnNpZGUgdGhlIGNvbnRleHRcJ3MgY2VydCBzdG9yZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0NFUlRfU1RPUkVfU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImNlcnRfc3RvcmVfc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX18sCisiZ2V0X2NhX2NlcnRzKCRzZWxmLCAvLCBiaW5hcnlfZm9ybT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgYSBsaXN0IG9mIGRpY3RzIHdpdGggaW5mb3JtYXRpb24gb2YgbG9hZGVkIENBIGNlcnRzLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0FcbiIKKyJjZXJ0aWZpY2F0ZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJTyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfTWVtb3J5QklPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IEJJTy5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgdGhlIGVudGlyZSBidWZmZXIuXG4iCisiSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlbXB0eSBieXRlcyBpbnN0YW5jZSwgdGhpcyBtZWFucyBlaXRoZXJcbiIKKyJFT0Ygb3IgdGhhdCBubyBkYXRhIGlzIGF2YWlsYWJsZS4gVXNlIHRoZSBcImVvZlwiIHByb3BlcnR5IHRvXG4iCisiZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLiIpOworCisjZGVmaW5lIF9TU0xfTUVNT1JZQklPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX01lbW9yeUJJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIGludCBsZW4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fcmVhZChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGxlbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkIiwKKyAgICAgICAgJmxlbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9NZW1vcnlCSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIHRoZSBieXRlcyBiIGludG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfTWVtb3J5QklPX3dyaXRlLCBNRVRIX08sIF9zc2xfTWVtb3J5QklPX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmLCBQeV9idWZmZXIgKmIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGUoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfX2RvY19fLAorIndyaXRlX2VvZigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGFuIEVPRiBtYXJrZXIgdG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgXCJlb2ZcIiBwcm9wZXJ0eSB3aWxsIGJlIFRydWUuIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9lb2YiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mLCBNRVRIX05PQVJHUywgX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2YoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2FkZF9fZG9jX18sCisiUkFORF9hZGQoJG1vZHVsZSwgc3RyaW5nLCBlbnRyb3B5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuXG4iCisiXG4iCisiZW50cm9weSAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW5cbiIKKyJzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0FERF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9hZGQiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLCBfc3NsX1JBTkRfYWRkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICp2aWV3LCBkb3VibGUgZW50cm9weSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGRvdWJsZSBlbnRyb3B5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAorICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KKyAgICBpZiAodmlldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2J5dGVzX19kb2NfXywKKyJSQU5EX2J5dGVzKCRtb2R1bGUsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiIpOworCisjZGVmaW5lIF9TU0xfUkFORF9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9ieXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfYnl0ZXMsIE1FVEhfTywgX3NzbF9SQU5EX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX3BzZXVkb19ieXRlc19fZG9jX18sCisiUkFORF9wc2V1ZG9fYnl0ZXMoJG1vZHVsZSwgbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy5cbiIKKyJcbiIKKyJSZXR1cm4gYSBwYWlyIChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYykuICBpc19jcnlwdG9ncmFwaGljIGlzIFRydWVcbiIKKyJpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX1BTRVVET19CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9PLCBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3BzZXVkb19ieXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9zdGF0dXNfX2RvY19fLAorIlJBTkRfc3RhdHVzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuXG4iCisiXG4iCisiSXQgaXMgbmVjZXNzYXJ5IHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBSQU5EX2FkZCgpIG9uIHNvbWUgcGxhdGZvcm1zIGJlZm9yZVxuIgorInVzaW5nIHRoZSBzc2woKSBmdW5jdGlvbi4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfU1RBVFVTX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX3N0YXR1cyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywgX3NzbF9SQU5EX3N0YXR1c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1cyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX1JBTkRfc3RhdHVzX2ltcGwobW9kdWxlKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkKKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9lZ2RfX2RvY19fLAorIlJBTkRfZWdkKCRtb2R1bGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJRdWVyaWVzIHRoZSBlbnRyb3B5IGdhdGhlciBkYWVtb24gKEVHRCkgb24gdGhlIHNvY2tldCBuYW1lZCBieSBcJ3BhdGhcJy5cbiIKKyJcbiIKKyJSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkLiAgUmFpc2VzIFNTTEVycm9yIGlmIGNvbm5lY3Rpb24gdG8gRUdEXG4iCisiZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9lZ2QiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2VnZCwgTUVUSF9PLCBfc3NsX1JBTkRfZWdkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfZWdkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX2VnZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2VnZF9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX19kb2NfXywKKyJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzZWFyY2ggcGF0aHMgYW5kIGVudmlyb25tZW50IHZhcnMgdGhhdCBhcmUgdXNlZCBieSBTU0xDb250ZXh0XCdzIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuXG4iCisiXG4iCisiVGhlIHZhbHVlcyBhcmUgXCdjZXJ0X2ZpbGVfZW52XCcsIFwnY2VydF9maWxlXCcsIFwnY2VydF9kaXJfZW52XCcsIFwnY2VydF9kaXJcJy4iKTsKKworI2RlZmluZSBfU1NMX0dFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX3R4dDJvYmpfX2RvY19fLAorInR4dDJvYmooJG1vZHVsZSwgLywgdHh0LCBuYW1lPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuXG4iCisiXG4iCisiQnkgZGVmYXVsdCBvYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmRcbiIKKyJsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4iKTsKKworI2RlZmluZSBfU1NMX1RYVDJPQkpfTUVUSE9EREVGICAgIFwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF90eHQyb2JqX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX3R4dDJvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICp0eHQsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9iaihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqdHh0OworICAgIGludCBuYW1lID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAorICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfbmlkMm9ial9fZG9jX18sCisibmlkMm9iaigkbW9kdWxlLCBuaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuIik7CisKKyNkZWZpbmUgX1NTTF9OSUQyT0JKX01FVEhPRERFRiAgICBcCisgICAgeyJuaWQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfbmlkMm9iaiwgTUVUSF9PLCBfc3NsX25pZDJvYmpfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfbmlkMm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5pZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX25pZDJvYmpfaW1wbChtb2R1bGUsIG5pZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKK1B5RG9jX1NUUlZBUihfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfXywKKyJlbnVtX2NlcnRpZmljYXRlcygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93c1wnIGNlcnQgc3RvcmUuXG4iCisiXG4iCisic3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mIFwnQ0FcJywgXCdST09UXCcgb3IgXCdNWVwnLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZVxuIgorIm1vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcyxcbiIKKyJlbmNvZGluZ190eXBlLCB0cnVzdCkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWRcbiIKKyJ3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlclxuIgorImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKKworI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0b3JlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCitQeURvY19TVFJWQVIoX3NzbF9lbnVtX2NybHNfX2RvY19fLAorImVudW1fY3JscygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3NcJyBjZXJ0IHN0b3JlLlxuIgorIlxuIgorInN0b3JlX25hbWUgbWF5IGJlIG9uZSBvZiBcJ0NBXCcsIFwnUk9PVFwnIG9yIFwnTVlcJy4gIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGVcbiIKKyJtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsXG4iCisiZW5jb2RpbmdfdHlwZSkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQgd2l0aFxuIgorIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CisKKyNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY3Jsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NybHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY3Jsc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfUkFORF9FR0RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfRU5VTV9DRVJUSUZJQ0FURVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE0OTk5Y2I1NjVhNjlhMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxN2RlYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMCwwICsxLDYyNCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19fLAorImV2YWwoJHNlbGYsIHNjcmlwdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVZBTF9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9ldmFsLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWwoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyaXB0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9fZG9jX18sCisiZXZhbGZpbGUoJHNlbGYsIGZpbGVOYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FVkFMRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbGZpbGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXZhbGZpbGUsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmZpbGVOYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoc2VsZiwgZmlsZU5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9yZWNvcmRfX2RvY19fLAorInJlY29yZCgkc2VsZiwgc2NyaXB0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9SRUNPUkRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlY29yZCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9yZWNvcmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfcmVjb3JkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3JlY29yZChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzY3JpcHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfXywKKyJhZGRlcnJpbmZvKCRzZWxmLCBtc2csIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0FEREVSUklORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGVycmluZm8iLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mbywgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm1zZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm1zZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0aW50X19kb2NfXywKKyJnZXRpbnQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VUSU5UX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRpbnQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0aW50LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGludF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlX19kb2NfXywKKyJnZXRkb3VibGUoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VURE9VQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGRvdWJsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX18sCisiZ2V0Ym9vbGVhbigkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9HRVRCT09MRUFOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2dldGJvb2xlYW4sIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19fZG9jX18sCisiZXhwcnN0cmluZygkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUlNUUklOR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcnN0cmluZyIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19fLAorImV4cHJsb25nKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FWFBSTE9OR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcmxvbmciLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmxvbmcsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmxvbmcoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfX2RvY19fLAorImV4cHJkb3VibGUoJHNlbGYsIHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0VYUFJET1VCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZSwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZShUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfXywKKyJleHByYm9vbGVhbigkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUkJPT0xFQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKHNlbGYsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3RfX2RvY19fLAorInNwbGl0bGlzdCgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9TUExJVExJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGlzdCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3QsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfc3BsaXRsaXN0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3NwbGl0LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX3NwbGl0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX19kb2NfXywKKyJjcmVhdGVjb21tYW5kKCRzZWxmLCBuYW1lLCBmdW5jLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9DUkVBVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLAorICAgICAgICAmbmFtZSwgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX19kb2NfXywKKyJkZWxldGVjb21tYW5kKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxldGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpkZWxldGVjb21tYW5kIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIpCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX18sCisiY3JlYXRlZmlsZWhhbmRsZXIoJHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVmaWxlaGFuZGxlciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXNrLCBQeU9iamVjdCAqZnVuYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IG1hc2s7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19fLAorImRlbGV0ZWZpbGVoYW5kbGVyKCRzZWxmLCBmaWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRlZmlsZWhhbmRsZXIiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXIsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19ffSwKKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DUkVBVEVGSUxFSEFORExFUikgKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfX2RvY19fLAorImRlbGV0ZXRpbWVyaGFuZGxlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtUSU1FUlRPS0VOX0RFTEVURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXIsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyKFRrdHRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9fZG9jX18sCisiY3JlYXRldGltZXJoYW5kbGVyKCRzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgbWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWlsbGlzZWNvbmRzOworICAgIFB5T2JqZWN0ICpmdW5jOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAorICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9fZG9jX18sCisibWFpbmxvb3AoJHNlbGYsIHRocmVzaG9sZD0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9NQUlOTE9PUF9NRVRIT0RERUYgICAgXAorICAgIHsibWFpbmxvb3AiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfbWFpbmxvb3AsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbWFpbmxvb3AoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB0aHJlc2hvbGQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCisgICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChzZWxmLCB0aHJlc2hvbGQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X19kb2NfXywKKyJkb29uZWV2ZW50KCRzZWxmLCBmbGFncz0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ET09ORUVWRU5UX01FVEhPRERFRiAgICBcCisgICAgeyJkb29uZWV2ZW50IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsCisgICAgICAgICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoc2VsZiwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfXywKKyJxdWl0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9RVUlUX01FVEhPRERFRiAgICBcCisgICAgeyJxdWl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3F1aXQsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoVGthcHBPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfcXVpdChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfcXVpdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX18sCisiaW50ZXJwYWRkcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfSU5URVJQQUREUl9NRVRIT0RERUYgICAgXAorICAgIHsiaW50ZXJwYWRkciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2ludGVycGFkZHIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX2ludGVycGFkZHJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2xvYWR0a19fZG9jX18sCisibG9hZHRrKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9MT0FEVEtfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWR0ayIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9sb2FkdGssIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9sb2FkdGtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0a19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0ayhUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfX2RvY19fLAorIndpbGxkaXNwYXRjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfV0lMTERJU1BBVENIX01FVEhPRERFRiAgICBcCisgICAgeyJ3aWxsZGlzcGF0Y2giLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2goVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfX2ZsYXR0ZW5fX2RvY19fLAorIl9mbGF0dGVuKCRtb2R1bGUsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX19GTEFUVEVOX01FVEhPRERFRiAgICBcCisgICAgeyJfZmxhdHRlbiIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9fZmxhdHRlbiwgTUVUSF9PLCBfdGtpbnRlcl9fZmxhdHRlbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfY3JlYXRlX19kb2NfXywKKyJjcmVhdGUoJG1vZHVsZSwgc2NyZWVuTmFtZT1Ob25lLCBiYXNlTmFtZT1Ob25lLCBjbGFzc05hbWU9XCdUa1wnLFxuIgorIiAgICAgICBpbnRlcmFjdGl2ZT1GYWxzZSwgd2FudG9iamVjdHM9RmFsc2UsIHdhbnRUaz1UcnVlLCBzeW5jPUZhbHNlLFxuIgorIiAgICAgICB1c2U9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlxuIgorIlxuIgorIiAgd2FudFRrXG4iCisiICAgIGlmIGZhbHNlLCB0aGVuIFRrX0luaXQoKSBkb2VzblwndCBnZXQgY2FsbGVkXG4iCisiICBzeW5jXG4iCisiICAgIGlmIHRydWUsIHRoZW4gcGFzcyAtc3luYyB0byB3aXNoXG4iCisiICB1c2VcbiIKKyIgICAgaWYgbm90IE5vbmUsIHRoZW4gcGFzcyAtdXNlIHRvIHdpc2giKTsKKworI2RlZmluZSBfVEtJTlRFUl9DUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9jcmVhdGUsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfY3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzY3JlZW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFzZU5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyZWVuTmFtZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqYmFzZU5hbWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSA9ICJUayI7CisgICAgaW50IGludGVyYWN0aXZlID0gMDsKKyAgICBpbnQgd2FudG9iamVjdHMgPSAwOworICAgIGludCB3YW50VGsgPSAxOworICAgIGludCBzeW5jID0gMDsKKyAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19fLAorInNldGJ1c3l3YWl0aW50ZXJ2YWwoJG1vZHVsZSwgbmV3X3ZhbCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuXG4iCisiXG4iCisiSXQgc2hvdWxkIGJlIHNldCB0byBhIGRpdmlzb3Igb2YgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuIGZyYW1lcyBpbiBhbiBhbmltYXRpb24uIik7CisKKyNkZWZpbmUgX1RLSU5URVJfU0VUQlVTWVdBSVRJTlRFUlZBTF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0YnVzeXdhaXRpbnRlcnZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsLCBNRVRIX08sIF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmV3X3ZhbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5ld192YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUsIG5ld192YWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfXywKKyJnZXRidXN5d2FpdGludGVydmFsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgYnVzeS13YWl0IGludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZSBjYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9HRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRidXN5d2FpdGludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9DUkVBVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZGQ2NjdiOTFjZjhhZGRkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaCBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M3MDFjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAorImdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gXCdvYmplY3RcJy4iKTsKKworI2RlZmluZSBfV0VBS1JFRl9HRVRXRUFLUkVGQ09VTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHdlYWtyZWZjb3VudCIsIChQeUNGdW5jdGlvbilfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQsIE1FVEhfTywgX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193ZWFrcmVmX2dldHdlYWtyZWZjb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGRhOWFhZGU2M2VlZDc3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NTE4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMCwwICsxLDg1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X19kb2NfXywKKyJHZXRPdmVybGFwcGVkUmVzdWx0KCRzZWxmLCB3YWl0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX09WRVJMQVBQRURfR0VUT1ZFUkxBUFBFRFJFU1VMVF9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwgTUVUSF9PLCBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBpbnQgd2FpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB3YWl0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX19kb2NfXywKKyJnZXRidWZmZXIoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX19kb2NfXywKKyJjYW5jZWwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9DQU5DRUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfXywKKyJDbG9zZUhhbmRsZSgkbW9kdWxlLCBoYW5kbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSBoYW5kbGUuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DTE9TRUhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2VIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9PLCBfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19fLAorIkNvbm5lY3ROYW1lZFBpcGUoJG1vZHVsZSwgLywgaGFuZGxlLCBvdmVybGFwcGVkPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlRmlsZV9fZG9jX18sCisiQ3JlYXRlRmlsZSgkbW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLFxuIgorIiAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcywgY3JlYXRpb25fZGlzcG9zaXRpb24sXG4iCisiICAgICAgICAgICBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZUZpbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgRFdPUkQgc2hhcmVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlcywgSEFORExFIHRlbXBsYXRlX2ZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVGaWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgZmlsZV9uYW1lOworICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzOworICAgIERXT1JEIHNoYXJlX21vZGU7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY3VyaXR5X2F0dHJpYnV0ZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb247CisgICAgRFdPUkQgZmxhZ3NfYW5kX2F0dHJpYnV0ZXM7CisgICAgSEFORExFIHRlbXBsYXRlX2ZpbGU7CisgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrayIgRl9QT0lOVEVSICJrayIgRl9IQU5ETEUgIjpDcmVhdGVGaWxlIiwKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9fZG9jX18sCisiQ3JlYXRlSnVuY3Rpb24oJG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURUpVTkNUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVKdW5jdGlvbiIsIChQeUNGdW5jdGlvbilfd2luYXBpX0NyZWF0ZUp1bmN0aW9uLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUFdTVFIgc3JjX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGRzdF9wYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBXU1RSIHNyY19wYXRoOworICAgIExQV1NUUiBkc3RfcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAorICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUp1bmN0aW9uX2ltcGwobW9kdWxlLCBzcmNfcGF0aCwgZHN0X3BhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9fZG9jX18sCisiQ3JlYXRlTmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLFxuIgorIiAgICAgICAgICAgICAgICBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsXG4iCisiICAgICAgICAgICAgICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfQ1JFQVRFTkFNRURQSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVOYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wZW5fbW9kZSwgRFdPUkQgcGlwZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtYXhfaW5zdGFuY2VzLCBEV09SRCBvdXRfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGluX2J1ZmZlcl9zaXplLCBEV09SRCBkZWZhdWx0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCBvcGVuX21vZGU7CisgICAgRFdPUkQgcGlwZV9tb2RlOworICAgIERXT1JEIG1heF9pbnN0YW5jZXM7CisgICAgRFdPUkQgb3V0X2J1ZmZlcl9zaXplOworICAgIERXT1JEIGluX2J1ZmZlcl9zaXplOworICAgIERXT1JEIGRlZmF1bHRfdGltZW91dDsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlczsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2tra2trayIgRl9QT0lOVEVSICI6Q3JlYXRlTmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZvcGVuX21vZGUsICZwaXBlX21vZGUsICZtYXhfaW5zdGFuY2VzLCAmb3V0X2J1ZmZlcl9zaXplLCAmaW5fYnVmZmVyX3NpemUsICZkZWZhdWx0X3RpbWVvdXQsICZzZWN1cml0eV9hdHRyaWJ1dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwgc2VjdXJpdHlfYXR0cmlidXRlcyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZVBpcGVfX2RvY19fLAorIkNyZWF0ZVBpcGUoJG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZS5cbiIKKyJcbiIKKyIgIHBpcGVfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgMi10dXBsZSBvZiBoYW5kbGVzLCB0byB0aGUgcmVhZCBhbmQgd3JpdGUgZW5kcyBvZiB0aGUgcGlwZS4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURVBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZVBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlUGlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBpcGVfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGlwZV9hdHRyczsKKyAgICBEV09SRCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19fZG9jX18sCisiQ3JlYXRlUHJvY2VzcygkbW9kdWxlLCBhcHBsaWNhdGlvbl9uYW1lLCBjb21tYW5kX2xpbmUsIHByb2NfYXR0cnMsXG4iCisiICAgICAgICAgICAgICB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsXG4iCisiICAgICAgICAgICAgICBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuXG4iCisiXG4iCisiICBwcm9jX2F0dHJzXG4iCisiICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuXG4iCisiICB0aHJlYWRfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuIgorInByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjb21tYW5kX2xpbmUsIFB5T2JqZWN0ICpwcm9jX2F0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRocmVhZF9hdHRycywgQk9PTCBpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBjcmVhdGlvbl9mbGFncywgUHlPYmplY3QgKmVudl9tYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICphcHBsaWNhdGlvbl9uYW1lOworICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZTsKKyAgICBQeU9iamVjdCAqcHJvY19hdHRyczsKKyAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzOworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOworICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOworICAgIFB5T2JqZWN0ICplbnZfbWFwcGluZzsKKyAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeTsKKyAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX19kb2NfXywKKyJEdXBsaWNhdGVIYW5kbGUoJG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuIgorIiAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSxcbiIKKyIgICAgICAgICAgICAgICAgb3B0aW9ucz0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG4iCisiXG4iCisiVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcbiIKKyJoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG4iCisidGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9EVVBMSUNBVEVIQU5ETEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgQk9PTCBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOworICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOworICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBvcHRpb25zID0gMDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAia2l8azpEdXBsaWNhdGVIYW5kbGUiLAorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfXywKKyJFeGl0UHJvY2VzcygkbW9kdWxlLCBFeGl0Q29kZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9FWElUUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiRXhpdFByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9FeGl0UHJvY2VzcywgTUVUSF9PLCBfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgVUlOVCBFeGl0Q29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgVUlOVCBFeGl0Q29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwobW9kdWxlLCBFeGl0Q29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfX2RvY19fLAorIkdldEN1cnJlbnRQcm9jZXNzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUQ1VSUkVOVFBST0NFU1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfTk9BUkdTLCBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfXywKKyJHZXRFeGl0Q29kZVByb2Nlc3MoJG1vZHVsZSwgcHJvY2VzcywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX0dFVEVYSVRDT0RFUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX08sIF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgcHJvY2Vzcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChtb2R1bGUsIHByb2Nlc3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfXywKKyJHZXRMYXN0RXJyb3IoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRMQVNURVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldExhc3RFcnJvciIsIChQeUNGdW5jdGlvbilfd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0TGFzdEVycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX18sCisiR2V0TW9kdWxlRmlsZU5hbWUoJG1vZHVsZSwgbW9kdWxlX2hhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgbW9kdWxlLlxuIgorIlxuIgorIlRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MuXG4iCisiXG4iCisiVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG4iCisid2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsXG4iCisiR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcbiIKKyJvZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUTU9EVUxFRklMRU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfTywgX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhNT0RVTEUgbW9kdWxlX2hhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19fLAorIkdldFN0ZEhhbmRsZSgkbW9kdWxlLCBzdGRfaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlLlxuIgorIlxuIgorIiAgc3RkX2hhbmRsZVxuIgorIiAgICBPbmUgb2YgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIG9yIFNURF9FUlJPUl9IQU5ETEUuXG4iCisiXG4iCisiVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUU1RESEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRTdGRIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRTdGRIYW5kbGUsIE1FVEhfTywgX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBzdGRfaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0U3RkSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgc3RkX2hhbmRsZTsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChtb2R1bGUsIHN0ZF9oYW5kbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRWZXJzaW9uX19kb2NfXywKKyJHZXRWZXJzaW9uKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRWRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRWZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0VmVyc2lvbl9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldFZlcnNpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3BlblByb2Nlc3NfX2RvY19fLAorIk9wZW5Qcm9jZXNzKCRtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9PUEVOUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiT3BlblByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX09wZW5Qcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfT3BlblByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGluaGVyaXRfaGFuZGxlLCBEV09SRCBwcm9jZXNzX2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfT3BlblByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBwcm9jZXNzX2lkOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJraWs6T3BlblByb2Nlc3MiLAorICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJnByb2Nlc3NfaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfT3BlblByb2Nlc3NfaW1wbChtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1BlZWtOYW1lZFBpcGVfX2RvY19fLAorIlBlZWtOYW1lZFBpcGUoJG1vZHVsZSwgaGFuZGxlLCBzaXplPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfUEVFS05BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiUGVla05hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9QZWVrTmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAorICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfUmVhZEZpbGVfX2RvY19fLAorIlJlYWRGaWxlKCRtb2R1bGUsIC8sIGhhbmRsZSwgc2l6ZSwgb3ZlcmxhcHBlZD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9SRUFERklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfUmVhZEZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfUmVhZEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9SZWFkRmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19fLAorIlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKCRtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX1NFVE5BTUVEUElQRUhBTkRMRVNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgbmFtZWRfcGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWF4X2NvbGxlY3Rpb25fY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbGxlY3RfZGF0YV90aW1lb3V0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIG5hbWVkX3BpcGU7CisgICAgUHlPYmplY3QgKm1vZGU7CisgICAgUHlPYmplY3QgKm1heF9jb2xsZWN0aW9uX2NvdW50OworICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKKyAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwobW9kdWxlLCBuYW1lZF9waXBlLCBtb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19fLAorIlRlcm1pbmF0ZVByb2Nlc3MoJG1vZHVsZSwgaGFuZGxlLCBleGl0X2NvZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9URVJNSU5BVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGV4aXRfY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBVSU5UIGV4aXRfY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfXywKKyJXYWl0TmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIHRpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV0FJVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiV2FpdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsIERXT1JEIHRpbWVvdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0TmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCB0aW1lb3V0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19fZG9jX18sCisiV2FpdEZvck11bHRpcGxlT2JqZWN0cygkbW9kdWxlLCBoYW5kbGVfc2VxLCB3YWl0X2ZsYWcsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9X3dpbmFwaS5JTkZJTklURSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9XQUlURk9STVVMVElQTEVPQkpFQ1RTX01FVEhPRERFRiAgICBcCisgICAgeyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlX3NlcSwgQk9PTCB3YWl0X2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOworICAgIEJPT0wgd2FpdF9mbGFnOworICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X19kb2NfXywKKyJXYWl0Rm9yU2luZ2xlT2JqZWN0KCRtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgYSBzaW5nbGUgb2JqZWN0LlxuIgorIlxuIgorIldhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG4iCisidGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuIgorImluIG1pbGxpc2Vjb25kcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX1dBSVRGT1JTSU5HTEVPQkpFQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBtaWxsaXNlY29uZHM7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV3JpdGVGaWxlX19kb2NfXywKKyJXcml0ZUZpbGUoJG1vZHVsZSwgLywgaGFuZGxlLCBidWZmZXIsIG92ZXJsYXBwZWQ9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZidWZmZXIsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dyaXRlRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBidWZmZXIsIHVzZV9vdmVybGFwcGVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4NzcxYzY1ODQwNTZkMTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjI0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKQEAgLTAsMCArMSw0OTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfX19jb3B5X18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2NvcHlfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCB1bnVzZWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX2RlZXBjb3B5X18sIE1FVEhfTywgYXJyYXlfYXJyYXlfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9jb3VudF9fZG9jX18sCisiY291bnQoJHNlbGYsIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHYgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0NPVU5UX01FVEhPRERFRiAgICBcCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9jb3VudCwgTUVUSF9PLCBhcnJheV9hcnJheV9jb3VudF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5kZXhfX2RvY19fLAorImluZGV4KCRzZWxmLCB2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIGZpcnN0IG9jY3VycmVuY2Ugb2YgdiBpbiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfSU5ERVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luZGV4LCBNRVRIX08sIGFycmF5X2FycmF5X2luZGV4X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9SRU1PVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9yZW1vdmUsIE1FVEhfTywgYXJyYXlfYXJyYXlfcmVtb3ZlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9wb3BfX2RvY19fLAorInBvcCgkc2VsZiwgaT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaS10aCBlbGVtZW50IGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgYXJyYXkuXG4iCisiXG4iCisiaSBkZWZhdWx0cyB0byAtMS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfcG9wX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9wb3BfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3BvcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgYmIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfRVhURU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZXh0ZW5kLCBNRVRIX08sIGFycmF5X2FycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5zZXJ0X19kb2NfXywKKyJpbnNlcnQoJHNlbGYsIGksIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbnNlcnQgYSBuZXcgaXRlbSB2IGludG8gdGhlIGFycmF5IGJlZm9yZSBwb3NpdGlvbiBpLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBhcnJheV9hcnJheV9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICp2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLAorICAgICAgICAmaSwgJnYpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaSwgdik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX19kb2NfXywKKyJidWZmZXJfaW5mbygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheVwncyBjb250ZW50cy5cbiIKKyJcbiIKKyJUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlXG4iCisidGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfQlVGRkVSX0lORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImJ1ZmZlcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm8oYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9hcHBlbmRfX2RvY19fLAorImFwcGVuZCgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBuZXcgdmFsdWUgdiB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9hcHBlbmQsIE1FVEhfTywgYXJyYXlfYXJyYXlfYXBwZW5kX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX18sCisiYnl0ZXN3YXAoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJCeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LlxuIgorIlxuIgorIklmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLCA0LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpc1xuIgorInJhaXNlZC4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9CWVRFU1dBUF9NRVRIT0RERUYgICAgXAorICAgIHsiYnl0ZXN3YXAiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfYnl0ZXN3YXAsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9ieXRlc3dhcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19fLAorInJldmVyc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1JFVkVSU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJldmVyc2UiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3JldmVyc2VfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9yZXZlcnNlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9yZXZlcnNlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tZmlsZV9fZG9jX18sCisiZnJvbWZpbGUoJHNlbGYsIGYsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIG4gb2JqZWN0cyBmcm9tIHRoZSBmaWxlIG9iamVjdCBmIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWZpbGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbWZpbGUsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfZnJvbWZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21maWxlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmOworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAorICAgICAgICAmZiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfXywKKyJ0b2ZpbGUoJHNlbGYsIGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBhbGwgaXRlbXMgKGFzIG1hY2hpbmUgdmFsdWVzKSB0byB0aGUgZmlsZSBvYmplY3QgZi4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0ZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvZmlsZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2ZpbGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX18sCisiZnJvbWxpc3QoJHNlbGYsIGxpc3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01MSVNUX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9tbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tbGlzdCwgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9saXN0X19kb2NfXywKKyJ0b2xpc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGFycmF5IHRvIGFuIG9yZGluYXJ5IGxpc3Qgd2l0aCB0aGUgc2FtZSBpdGVtcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0xJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b2xpc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfXywKKyJmcm9tc3RyaW5nKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIGZyb21ieXRlcyBpbnN0ZWFkLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21zdHJpbmciLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXN0cmluZywgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfXywKKyJmcm9tYnl0ZXMoJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NQllURVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tYnl0ZXMsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWJ5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV90b2J5dGVzX19kb2NfXywKKyJ0b2J5dGVzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsidG9ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2J5dGVzLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9ieXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3Rvc3RyaW5nX19kb2NfXywKKyJ0b3N0cmluZygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzIGluc3RlYWQuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InRvc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3Rvc3RyaW5nLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9zdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tdW5pY29kZV9fZG9jX18sCisiZnJvbXVuaWNvZGUoJHNlbGYsIHVzdHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG4iCisiXG4iCisiVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLlxuIgorIlVzZSBhcnJheS5mcm9tYnl0ZXModXN0ci5lbmNvZGUoLi4uKSkgdG8gYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZlxuIgorInNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NVU5JQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbXVuaWNvZGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X1VOSUNPREUgKnVzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqdXN0cjsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3RvdW5pY29kZV9fZG9jX18sCisidG91bmljb2RlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLlxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTtcbiIKKyJvdGhlcndpc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIFVzZSBhcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGFcbiIKKyJ1bmljb2RlIHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT1VOSUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvdW5pY29kZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b3VuaWNvZGUsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b3VuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19zaXplb2ZfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19zaXplb2ZfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfX2RvY19fLAorIl9hcnJheV9yZWNvbnN0cnVjdG9yKCRtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMsXG4iCisiICAgICAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIgorIkludGVybmFsLiBVc2VkIGZvciBwaWNrbGluZyBzdXBwb3J0LiIpOworCisjZGVmaW5lIEFSUkFZX19BUlJBWV9SRUNPTlNUUlVDVE9SX01FVEhPRERFRiAgICBcCisgICAgeyJfYXJyYXlfcmVjb25zdHJ1Y3RvciIsIChQeUNGdW5jdGlvbilhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3RvciwgTUVUSF9WQVJBUkdTLCBhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlUeXBlT2JqZWN0ICphcnJheXR5cGU7CisgICAgaW50IHR5cGVjb2RlOworICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CisgICAgUHlPYmplY3QgKml0ZW1zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOl9hcnJheV9yZWNvbnN0cnVjdG9yIiwKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fX19kb2NfXywKKyJfX3JlZHVjZV9leF9fKCRzZWxmLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfX19SRURVQ0VfRVhfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fLCBNRVRIX08sIGFycmF5X2FycmF5X19fcmVkdWNlX2V4X19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX18sCisiX19yZWR1Y2VfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1JFRFVDRV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXywgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXyhhcnJheWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19fLAorIl9fc2V0c3RhdGVfXygkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZTgyYzY1ZWE4NDFjZmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA0MGVmNWUyLi4zZWUyOTY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaApAQCAtMTIsNyArMTIsOCBAQAogICAgIHsiZ2V0c2FtcGxlIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZ2V0c2FtcGxlLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZ2V0c2FtcGxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlfc3NpemVfdCBpbmRleCk7CithdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2dldHNhbXBsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyLDggKzIzLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppbjpnZXRzYW1wbGUiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppbjpnZXRzYW1wbGUiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CkBAIC01NSw4ICs1NSw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOm1heCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtODgsOCArODcsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTptaW5tYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTEyMSw4ICsxMTksNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphdmciLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE1NCw4ICsxNTEsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpybXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE3OCw3ICsxNzQsOCBAQAogICAgIHsiZmluZGZpdCIsIChQeUNGdW5jdGlvbilhdWRpb29wX2ZpbmRmaXQsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9maW5kZml0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CithdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9maW5kZml0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTg3LDggKzE4NCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqeSo6ZmluZGZpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAogICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwpAQCAtMjE0LDcgKzIxMCw4IEBACiAgICAgeyJmaW5kZmFjdG9yIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZmluZGZhY3RvciwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2ZpbmRmYWN0b3JfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKTsKK2F1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2ZpbmRmYWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjMsOCArMjIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5KjpmaW5kZmFjdG9yIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZhY3RvciIsCiAgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CkBAIC0yNTAsNyArMjQ2LDggQEAKICAgICB7ImZpbmRtYXgiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9maW5kbWF4LCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZmluZG1heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfc3NpemVfdCBsZW5ndGgpOworYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfZmluZG1heChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTI1OSw4ICsyNTYsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSpuOmZpbmRtYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpuOmZpbmRtYXgiLAogICAgICAgICAmZnJhZ21lbnQsICZsZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kbWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIGxlbmd0aCk7CkBAIC0yOTIsOCArMjg4LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6YXZncHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zMjUsOCArMzIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6bWF4cHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heHBwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zNTgsOCArMzUyLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Y3Jvc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9jcm9zc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zODIsNyArMzc1LDggQEAKICAgICB7Im11bCIsIChQeUNGdW5jdGlvbilhdWRpb29wX211bCwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX211bF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBmYWN0b3IpOworYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgIGRvdWJsZSBmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9tdWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0zOTIsOCArMzg2LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgZG91YmxlIGZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZDptdWwiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZDptdWwiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKQEAgLTQxNiw3ICs0MDksOCBAQAogICAgIHsidG9tb25vIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfdG9tb25vLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9tb25vX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKTsKK2F1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF90b21vbm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00MjcsOCArNDIxLDcgQEAKICAgICBkb3VibGUgbGZhY3RvcjsKICAgICBkb3VibGUgcmZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZGQ6dG9tb25vIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwpAQCAtNDUxLDcgKzQ0NCw4IEBACiAgICAgeyJ0b3N0ZXJlbyIsIChQeUNGdW5jdGlvbilhdWRpb29wX3Rvc3RlcmVvLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9zdGVyZW9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CithdWRpb29wX3Rvc3RlcmVvX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3Rvc3RlcmVvKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNDYyLDggKzQ1Niw3IEBACiAgICAgZG91YmxlIGxmYWN0b3I7CiAgICAgZG91YmxlIHJmYWN0b3I7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWRkOnRvc3RlcmVvIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvc3RlcmVvIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKQEAgLTQ4Niw3ICs0NzksOCBAQAogICAgIHsiYWRkIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRkLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQxLCBQeV9idWZmZXIgKmZyYWdtZW50MiwgaW50IHdpZHRoKTsKK2F1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00OTYsOCArNDkwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQyID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5Kmk6YWRkIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCiAgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwpAQCAtNTIzLDcgKzUxNiw4IEBACiAgICAgeyJiaWFzIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYmlhcywgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2JpYXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IGJpYXMpOworYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgaW50IGJpYXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9iaWFzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNTMzLDggKzUyNyw3IEBACiAgICAgaW50IHdpZHRoOwogICAgIGludCBiaWFzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlpOmJpYXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpiaWFzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZiaWFzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYmlhc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgYmlhcyk7CkBAIC01NjYsOCArNTU5LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6cmV2ZXJzZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cmV2ZXJzZSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC01OTksOCArNTkxLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Ynl0ZXN3YXAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ieXRlc3dhcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC02MjMsNyArNjE0LDggQEAKICAgICB7ImxpbjJsaW4iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9saW4ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmxpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmV3d2lkdGgpOworYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3dpZHRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfbGluMmxpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTYzMyw4ICs2MjUsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBpbnQgbmV3d2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWk6bGluMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmxpbjJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwpAQCAtNjU4LDcgKzY0OSw5IEBACiAgICAgeyJyYXRlY3YiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9yYXRlY3YsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9yYXRlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfcmF0ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmNoYW5uZWxzLCBpbnQgaW5yYXRlLCBpbnQgb3V0cmF0ZSwgUHlPYmplY3QgKnN0YXRlLCBpbnQgd2VpZ2h0QSwgaW50IHdlaWdodEIpOworYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0Qik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3JhdGVjdihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTY3Myw4ICs2NjYsNyBAQAogICAgIGludCB3ZWlnaHRBID0gMTsKICAgICBpbnQgd2VpZ2h0QiA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWlpaU98aWk6cmF0ZWN2IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWlpaU98aWk6cmF0ZWN2IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKQEAgLTcwNiw4ICs2OTgsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4ydWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMnVsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTczOSw4ICs3MzAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTp1bGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3VsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTc3Miw4ICs3NjIsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4yYWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgwNSw4ICs3OTQsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphbGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgyOSw3ICs4MTcsOCBAQAogICAgIHsibGluMmFkcGNtIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfbGluMmFkcGNtLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmFkcGNtX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9saW4yYWRwY20oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04MzksOCArODI4LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmxpbjJhZHBjbSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg2Myw3ICs4NTEsOCBAQAogICAgIHsiYWRwY20ybGluIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRwY20ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRwY20ybGluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZHBjbTJsaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04NzMsOCArODYyLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmFkcGNtMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg4Niw0ICs4NzQsNCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTg0MGJiYTVkNDBjMmNlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc2ZTFiMjEzYTg3MjdiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCBlZjY0NmRkLi5lMzQ4YmVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC05LDIwICs5LDE4IEBACiAiRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfVVVfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfdXUsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX3V1X19kb2NfX30sCisgICAgeyJhMmJfdXUiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX3V1LCBNRVRIX08sIGJpbmFzY2lpX2EyYl91dV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfdXUiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfdXVfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDEsMjAgKzM5LDE4IEBACiAiVXVlbmNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9VVV9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3V1IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV91dSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfdXVfX2RvY19ffSwKKyAgICB7ImIyYV91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfdXUsIE1FVEhfTywgYmluYXNjaWlfYjJhX3V1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfdXVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmIyYV91dSIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC03MywyMCArNjksMTggQEAKICJEZWNvZGUgYSBsaW5lIG9mIGJhc2U2NCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2Jhc2U2NCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfYmFzZTY0X19kb2NfX30sCisgICAgeyJhMmJfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYTJiX2Jhc2U2NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfYmFzZTY0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfYmFzZTY0IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTA1LDIwICs5OSwxOCBAQAogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX08sIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6YjJhX2Jhc2U2NCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKQEAgLTEzNywyMCArMTI5LDE4IEBACiAiRGVjb2RlIC5ocXggY29kaW5nLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfaHF4X19kb2NfX30sCisgICAgeyJhMmJfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9ocXgsIE1FVEhfTywgYmluYXNjaWlfYTJiX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfaHF4IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTY5LDIwICsxNTksMTggQEAKICJCaW5oZXggUkxFLWNvZGUgYmluYXJ5IGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFQ09ERV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7InJsZWNvZGVfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3JsZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWNvZGVfaHF4X19kb2NfX30sCisgICAgeyJybGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVjb2RlX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfcmxlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVjb2RlX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpybGVjb2RlX2hxeCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjAxLDIwICsxODksMTggQEAKICJFbmNvZGUgLmhxeCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaHF4X19kb2NfX30sCisgICAgeyJiMmFfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9ocXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaHF4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjMzLDIwICsyMTksMTggQEAKICJEZWNvZGUgaGV4YmluIFJMRS1jb2RlZCBzdHJpbmcuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFREVDT0RFX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsicmxlZGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVkZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfX2RvY19ffSwKKyAgICB7InJsZWRlY29kZV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfcmxlZGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3JsZWRlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVkZWNvZGVfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOnJsZWRlY29kZV9ocXgiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0yNzgsMTIgKzI2MiwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmM7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqSTpjcmNfaHF4IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKICAgICAgICAgJmRhdGEsICZjcmMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgX3JldHVybl92YWx1ZSA9IGJpbmFzY2lpX2NyY19ocXhfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zMTUsMTIgKzI5OCwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmMgPSAwOwogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmNyYzMyIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAogICAgICAgICAmZGF0YSwgJmNyYykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zNDIsMjAgKzMyNCwxOCBAQAogImF2YWlsYWJsZSBhcyBcImhleGxpZnkoKVwiLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IRVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9oZXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hleCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaGV4X19kb2NfX30sCisgICAgeyJiMmFfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9oZXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hleF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaGV4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMzc2LDIwICszNTYsMTggQEAKICJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYnl0ZXMgb2JqZWN0LiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0hFWExJRllfTUVUSE9EREVGICAgIFwKLSAgICB7ImhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfaGV4bGlmeSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9oZXhsaWZ5X19kb2NfX30sCisgICAgeyJoZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2hleGxpZnksIE1FVEhfTywgYmluYXNjaWlfaGV4bGlmeV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpoZXhsaWZ5IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDExLDIwICszODksMTggQEAKICJUaGlzIGZ1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIGFzIFwidW5oZXhsaWZ5KClcIi4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfSEVYX01FVEhPRERFRiAgICBcCi0gICAgeyJhMmJfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9oZXgsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX2hleF9fZG9jX199LAorICAgIHsiYTJiX2hleCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfaGV4LCBNRVRIX08sIGJpbmFzY2lpX2EyYl9oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmhleHN0cik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl9oZXgiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00NDUsMjAgKzQyMSwxOCBAQAogImhleHN0ciBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgaGV4IGRpZ2l0cyAodXBwZXIgb3IgbG93ZXIgY2FzZSkuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfVU5IRVhMSUZZX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfdW5oZXhsaWZ5LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3VuaGV4bGlmeV9fZG9jX199LAorICAgIHsidW5oZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3VuaGV4bGlmeSwgTUVUSF9PLCBiaW5hc2NpaV91bmhleGxpZnlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX3VuaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOnVuaGV4bGlmeSIsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00OTAsOCArNDY0LDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAogICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBoZWFkZXIpOwpAQCAtNTE4LDcgKzQ5MSw4IEBACiAgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsIGludCBpc3RleHQsIGludCBoZWFkZXIpOworYmluYXNjaWlfYjJhX3FwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgcXVvdGV0YWJzLAorICAgICAgICAgICAgICAgICAgICAgaW50IGlzdGV4dCwgaW50IGhlYWRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC01MzAsOCArNTA0LDcgQEAKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKICAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CkBAIC01NDMsNCArNTE2LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI3NjFiMzZmNGY5ZTViYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjFhM2NiZjc2NjBlYmFhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2MTY0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMCwwICsxLDg2MCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NfX2RvY19fLAorImFjb3MoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYXJjIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0FDT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3MiLCAoUHlDRnVuY3Rpb24pY21hdGhfYWNvcywgTUVUSF9PLCBjbWF0aF9hY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Fjb3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NoX19kb2NfXywKKyJhY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQUNPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3NoIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2Fjb3NoLCBNRVRIX08sIGNtYXRoX2Fjb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hY29zaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hc2luX19kb2NfXywKKyJhc2luKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXNpbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hc2luLCBNRVRIX08sIGNtYXRoX2FzaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2FzaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXNpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXNpbmhfX2RvY19fLAorImFzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzaW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2FzaW5oLCBNRVRIX08sIGNtYXRoX2FzaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hc2luaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hdGFuX19kb2NfXywKKyJhdGFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXRhbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hdGFuLCBNRVRIX08sIGNtYXRoX2F0YW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2F0YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXRhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXRhbmhfX2RvY19fLAorImF0YW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImF0YW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2F0YW5oLCBNRVRIX08sIGNtYXRoX2F0YW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9jb3NfX2RvY19fLAorImNvcygkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb3NpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9DT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcyIsIChQeUNGdW5jdGlvbiljbWF0aF9jb3MsIE1FVEhfTywgY21hdGhfY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfY29zKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfY29zaF9fZG9jX18sCisiY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0NPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvc2giLCAoUHlDRnVuY3Rpb24pY21hdGhfY29zaCwgTUVUSF9PLCBjbWF0aF9jb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Nvc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2V4cF9fZG9jX18sCisiZXhwKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnouIik7CisKKyNkZWZpbmUgQ01BVEhfRVhQX01FVEhPRERFRiAgICBcCisgICAgeyJleHAiLCAoUHlDRnVuY3Rpb24pY21hdGhfZXhwLCBNRVRIX08sIGNtYXRoX2V4cF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfZXhwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2V4cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2xvZzEwX19kb2NfXywKKyJsb2cxMCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPRzEwX01FVEhPRERFRiAgICBcCisgICAgeyJsb2cxMCIsIChQeUNGdW5jdGlvbiljbWF0aF9sb2cxMCwgTUVUSF9PLCBjbWF0aF9sb2cxMF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfbG9nMTBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfbG9nMTAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2xvZzEwX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfc2luX19kb2NfXywKKyJzaW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTl9NRVRIT0RERUYgICAgXAorICAgIHsic2luIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NpbiwgTUVUSF9PLCBjbWF0aF9zaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3Npbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9zaW5oX19kb2NfXywKKyJzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7InNpbmgiLCAoUHlDRnVuY3Rpb24pY21hdGhfc2luaCwgTUVUSF9PLCBjbWF0aF9zaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9zaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3NpbmgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3NxcnRfX2RvY19fLAorInNxcnQoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9TUVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzcXJ0IiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NxcnQsIE1FVEhfTywgY21hdGhfc3FydF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfc3FydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zcXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF90YW5fX2RvY19fLAorInRhbigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOX01FVEhPRERFRiAgICBcCisgICAgeyJ0YW4iLCAoUHlDRnVuY3Rpb24pY21hdGhfdGFuLCBNRVRIX08sIGNtYXRoX3Rhbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3RhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3RhbmhfX2RvY19fLAorInRhbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOSF9NRVRIT0RERUYgICAgXAorICAgIHsidGFuaCIsIChQeUNGdW5jdGlvbiljbWF0aF90YW5oLCBNRVRIX08sIGNtYXRoX3RhbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5oX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfbG9nX19kb2NfXywKKyJsb2coJG1vZHVsZSwgeCwgeV9vYmo9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS5cbiIKKyJcbiIKKyJJZiB0aGUgYmFzZSBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSAoYmFzZSBlKSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPR19NRVRIT0RERUYgICAgXAorICAgIHsibG9nIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2xvZywgTUVUSF9WQVJBUkdTLCBjbWF0aF9sb2dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeCwgUHlPYmplY3QgKnlfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHg7CisgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCisgICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BoYXNlX19kb2NfXywKKyJwaGFzZSgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LiIpOworCisjZGVmaW5lIENNQVRIX1BIQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJwaGFzZSIsIChQeUNGdW5jdGlvbiljbWF0aF9waGFzZSwgTUVUSF9PLCBjbWF0aF9waGFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9waGFzZV9pbXBsKG1vZHVsZSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BvbGFyX19kb2NfXywKKyJwb2xhcigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCBhIGNvbXBsZXggZnJvbSByZWN0YW5ndWxhciBjb29yZGluYXRlcyB0byBwb2xhciBjb29yZGluYXRlcy5cbiIKKyJcbiIKKyJyIGlzIHRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuIik7CisKKyNkZWZpbmUgQ01BVEhfUE9MQVJfTUVUSE9EREVGICAgIFwKKyAgICB7InBvbGFyIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3BvbGFyLCBNRVRIX08sIGNtYXRoX3BvbGFyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfcmVjdF9fZG9jX18sCisicmVjdCgkbW9kdWxlLCByLCBwaGksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuIik7CisKKyNkZWZpbmUgQ01BVEhfUkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVjdCIsIChQeUNGdW5jdGlvbiljbWF0aF9yZWN0LCBNRVRIX1ZBUkFSR1MsIGNtYXRoX3JlY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3JlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkb3VibGUgciwgZG91YmxlIHBoaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9yZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRvdWJsZSByOworICAgIGRvdWJsZSBwaGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAorICAgICAgICAmciwgJnBoaSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Zpbml0ZV9fZG9jX18sCisiaXNmaW5pdGUoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvdGggdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiB6IGFyZSBmaW5pdGUsIGVsc2UgRmFsc2UuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNGSU5JVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzZmluaXRlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzZmluaXRlLCBNRVRIX08sIGNtYXRoX2lzZmluaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNuYW5fX2RvY19fLAorImlzbmFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBub3QgYSBudW1iZXIgKE5hTikuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNOQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzbmFuIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzbmFuLCBNRVRIX08sIGNtYXRoX2lzbmFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNpbmZfX2RvY19fLAorImlzaW5mKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4iKTsKKworI2RlZmluZSBDTUFUSF9JU0lORl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNpbmYiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNpbmYsIE1FVEhfTywgY21hdGhfaXNpbmZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Nsb3NlX19kb2NfXywKKyJpc2Nsb3NlKCRtb2R1bGUsIC8sIGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKVxuIgorIi0tXG4iCisiXG4iCisiRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGNvbXBsZXggbnVtYmVycyBhcmUgY2xvc2UgaW4gdmFsdWUuXG4iCisiXG4iCisiICByZWxfdG9sXG4iCisiICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlbGF0aXZlIHRvIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIiAgYWJzX3RvbFxuIgorIiAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgXCJjbG9zZVwiLCByZWdhcmRsZXNzIG9mIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJGb3IgdGhlIHZhbHVlcyB0byBiZSBjb25zaWRlcmVkIGNsb3NlLCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gbXVzdCBiZVxuIgorInNtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuXG4iCisiXG4iCisiLWluZiwgaW5mIGFuZCBOYU4gYmVoYXZlIHNpbWlsYXJseSB0byB0aGUgSUVFRSA3NTQgU3RhbmRhcmQuIFRoYXQgaXMsIE5hTiBpc1xuIgorIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOworCisjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKworc3RhdGljIGludAorY21hdGhfaXNjbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAorICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Nsb3NlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIFB5X2NvbXBsZXggYTsKKyAgICBQeV9jb21wbGV4IGI7CisgICAgZG91YmxlIHJlbF90b2wgPSAxZS0wOTsKKyAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI5ZTljNDhjOWQyNzM2MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzYjFjMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaApAQCAtMCwwICsxLDE4NSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGZjbnRsX2ZjbnRsX19kb2NfXywKKyJmY250bCgkbW9kdWxlLCBmZCwgY21kLCBhcmc9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgY21kYCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlXG4iCisiYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cbiIKKyJ0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmRcbiIKKyJkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLFxuIgorInRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG4iCisicmVzdWx0aW5nIHZhbHVlIHB1dCBpbiB0aGUgYXJnIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBsZW5ndGhcbiIKKyJvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW5cbiIKKyJpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcbiIKKyJjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZjbnRsIGNhbGwgaW4gdGhlIEMgY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9GQ05UTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmNudGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfZmNudGwsIE1FVEhfVkFSQVJHUywgZmNudGxfZmNudGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2ZjbnRsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mY250bChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvZGU7CisgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfaW9jdGxfX2RvY19fLAorImlvY3RsKCRtb2R1bGUsIGZkLCByZXF1ZXN0LCBhcmc9MCwgbXV0YXRlX2ZsYWc9VHJ1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgcmVxdWVzdGAgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuIgorImFzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzXG4iCisidXNlZCBpbiB0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuXG4iCisiXG4iCisiVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG4iCisiYnVmZmVyIGNvbnRhaW5pbmcgY2hhcmFjdGVyIGRhdGEgKG1vc3QgbGlrZWx5IGEgc3RyaW5nIG9yIGFuIGFycmF5KS5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZVxuIgorIm11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG4iCisiYnVmZmVyIGlzIChpbiBlZmZlY3QpIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgY2hhbmdlcyBtYWRlIGJ5XG4iCisidGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhc1xuIgorInJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG4iCisiY2FsbC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBmYWxzZSxcbiIKKyJ0aGUgYmVoYXZpb3IgaXMgYXMgaWYgYSBzdHJpbmcgaGFkIGJlZW4gcGFzc2VkLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcbiIKKyJvZiB0aGUgYnVmZmVyIGlzIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBhXG4iCisic3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpblxuIgorInRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuIgorImV4Y2VlZCAxMDI0IGJ5dGVzLlxuIgorIlxuIgorIklmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuIgorImFuIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBpb2N0bCBjYWxsIGluIHRoZSBDXG4iCisiY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9JT0NUTF9NRVRIT0RERUYgICAgXAorICAgIHsiaW9jdGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgZmNudGxfaW9jdGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfaW9jdGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjb2RlOworICAgIFB5T2JqZWN0ICpvYl9hcmcgPSBOVUxMOworICAgIGludCBtdXRhdGVfYXJnID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBmY250bF9pb2N0bF9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIG9iX2FyZywgbXV0YXRlX2FyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGZjbnRsX2Zsb2NrX19kb2NfXywKKyJmbG9jaygkbW9kdWxlLCBmZCwgb3BlcmF0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gYG9wZXJhdGlvbmAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscyAoT24gc29tZSBzeXN0ZW1zLCB0aGlzXG4iCisiZnVuY3Rpb24gaXMgZW11bGF0ZWQgdXNpbmcgZmNudGwoKSkuIik7CisKKyNkZWZpbmUgRkNOVExfRkxPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImZsb2NrIiwgKFB5Q0Z1bmN0aW9uKWZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZjbnRsX2Zsb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfZmxvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfbG9ja2ZfX2RvY19fLAorImxvY2tmKCRtb2R1bGUsIGZkLCBjbWQsIGxlbj0wLCBzdGFydD0wLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy5cbiIKKyJcbiIKKyJgZmRgIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCBvcGVyYXRpb24gaXMgb25lXG4iCisib2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iCisiXG4iCisiICAgIExPQ0tfVU4gLSB1bmxvY2tcbiIKKyIgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuIgorIiAgICBMT0NLX0VYIC0gYWNxdWlyZSBhbiBleGNsdXNpdmUgbG9ja1xuIgorIlxuIgorIldoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcbiIKKyJMT0NLX05CIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uICBJZiBMT0NLX05CIGlzIHVzZWQgYW5kIHRoZVxuIgorImxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbiBJT0Vycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGxcbiIKKyJoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcbiIKKyJzeXN0ZW0gLS0gZm9yIHBvcnRhYmlsaXR5LCBjaGVjayBmb3IgZWl0aGVyIHZhbHVlKS5cbiIKKyJcbiIKKyJgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvXG4iCisiRU9GLiAgYHN0YXJ0YCBpcyB0aGUgYnl0ZSBvZmZzZXQsIHJlbGF0aXZlIHRvIGB3aGVuY2VgLCB0byB0aGF0IHRoZSBsb2NrXG4iCisic3RhcnRzLiAgYHdoZW5jZWAgaXMgYXMgd2l0aCBmaWxlb2JqLnNlZWsoKSwgc3BlY2lmaWNhbGx5OlxuIgorIlxuIgorIiAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcbiIKKyIgICAgMSAtIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAoU0VFS19DVVIpXG4iCisiICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkiKTsKKworI2RlZmluZSBGQ05UTF9MT0NLRl9NRVRIT0RERUYgICAgXAorICAgIHsibG9ja2YiLCAoUHlDRnVuY3Rpb24pZmNudGxfbG9ja2YsIE1FVEhfVkFSQVJHUywgZmNudGxfbG9ja2ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgY29kZTsKKyAgICBQeU9iamVjdCAqbGVub2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RhcnRvYmogPSBOVUxMOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTI5NjNiNjMxZDAwZjBmZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjViNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApAQCAtMCwwICsxLDg1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZ3JwX2dldGdyZ2lkX19kb2NfXywKKyJnZXRncmdpZCgkbW9kdWxlLCAvLCBpZClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELlxuIgorIlxuIgorIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCisgICAgICAgICZpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZ3JwX2dldGdybmFtX19kb2NfXywKKyJnZXRncm5hbSgkbW9kdWxlLCAvLCBuYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuXG4iCisiXG4iCisiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOworCisjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOmdldGdybmFtIiwgX2tleXdvcmRzLAorICAgICAgICAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihncnBfZ2V0Z3JhbGxfX2RvY19fLAorImdldGdyYWxsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZ3JvdXAgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuIgorIlxuIgorIkFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCcrXCcgb3IgXCctXCcgcmVwcmVzZW50cyBhbiBpbnN0cnVjdGlvblxuIgorInRvIHVzZSBZUC9OSVMgYW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSB2aWEgZ2V0Z3JuYW0gb3IgZ2V0Z3JnaWQuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmFsbCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JhbGwsIE1FVEhfTk9BUkdTLCBncnBfZ2V0Z3JhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmFsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdyYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGdycF9nZXRncmFsbF9pbXBsKG1vZHVsZSk7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTE5MWMyNTYwMGFmYjFiZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWEzMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtMCwwICsxLDk1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoTUQ1VHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgTUQ1VFlQRV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfY29weSwgTUVUSF9OT0FSR1MsIE1ENVR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9jb3B5X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfY29weShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIE1ENVR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIE1ENVRZUEVfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV9kaWdlc3QsIE1FVEhfTk9BUkdTLCBNRDVUeXBlX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBNRDVUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBNRDVUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKE1ENVR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBNRDVUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfdXBkYXRlLCBNRVRIX08sIE1ENVR5cGVfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfbWQ1X21kNV9fZG9jX18sCisibWQ1KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfTUQ1X01ENV9NRVRIT0RERUYgICAgXAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX21kNV9tZDVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tZDVfbWQ1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbWQ1X21kNShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bWQ1IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY4MDNkZWQ3MDFhY2E1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThlZWFlNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMCwwICsxLDU3OTEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihvc19zdGF0X19kb2NfXywKKyJzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgorIiAgZGlyX2ZkXG4iCisiICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgICAgYW5kIHBhdGggc2hvdWxkIGJlIGEgcmVsYXRpdmUgc3RyaW5nOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0b1xuIgorIiAgICB0aGF0IGRpcmVjdG9yeS5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCisiXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJJdFwncyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfbHN0YXRfX2RvY19fLAorImxzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGgsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLlxuIgorIlxuIgorIkxpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19hY2Nlc3NfX2RvY19fLAorImFjY2VzcygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSxcbiIKKyIgICAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCisiLS1cbiIKKyJcbiIKKyJVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIG1vZGVcbiIKKyIgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLiAgQ2FuIGJlIEZfT0sgdG8gdGVzdCBleGlzdGVuY2UsXG4iCisiICAgIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZWZmZWN0aXZlX2lkc1xuIgorIiAgICBJZiBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcbiIKKyIgICAgdGhlIHJlYWwgdWlkL2dpZC5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcbiIKKyIgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuIgorIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOworCisjZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWNjZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMSk7CisgICAgaW50IG1vZGU7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBlZmZlY3RpdmVfaWRzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfVFRZTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3R0eW5hbWVfX2RvY19fLAorInR0eW5hbWUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIGRldmljZSBjb25uZWN0ZWQgdG8gXCdmZFwnLlxuIgorIlxuIgorIiAgZmRcbiIKKyIgICAgSW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgaGFuZGxlLiIpOworCisjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7InR0eW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdHR5bmFtZSwgTUVUSF9PLCBvc190dHluYW1lX19kb2NfX30sCisKK3N0YXRpYyBjaGFyICoKK29zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHR5bmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3R0eW5hbWVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RUWU5BTUUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ1RFUk1JRCkKKworUHlEb2NfU1RSVkFSKG9zX2N0ZXJtaWRfX2RvY19fLAorImN0ZXJtaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgZm9yIHRoaXMgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19DVEVSTUlEX01FVEhPRERFRiAgICBcCisgICAgeyJjdGVybWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2N0ZXJtaWQsIE1FVEhfTk9BUkdTLCBvc19jdGVybWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2N0ZXJtaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NURVJNSUQpICovCisKK1B5RG9jX1NUUlZBUihvc19jaGRpcl9fZG9jX18sCisiY2hkaXIoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIRElSKQorCitQeURvY19TVFJWQVIob3NfZmNoZGlyX19kb2NfXywKKyJmY2hkaXIoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorImZkIG11c3QgYmUgb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYgICAgXAorICAgIHsiZmNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaGRpcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GQ0hESVIpICovCisKK1B5RG9jX1NUUlZBUihvc19jaG1vZF9fZG9jX18sCisiY2htb2QoJG1vZHVsZSwgLywgcGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIG1vZGlmaWVkLiAgTWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHIgb3IgYnl0ZXMuXG4iCisiICAgIE9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIiAgbW9kZVxuIgorIiAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZm9sbG93X3N5bWxpbmtzXG4iCisiICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCisiICAgIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19mY2htb2RfX2RvY19fLAorImZjaG1vZCgkbW9kdWxlLCAvLCBmZCwgbW9kZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4iKTsKKworI2RlZmluZSBPU19GQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImZjaG1vZCIsIChQeUNGdW5jdGlvbilvc19mY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNobW9kKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICBpbnQgbW9kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZDSE1PRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19sY2htb2RfX2RvY19fLAorImxjaG1vZCgkbW9kdWxlLCAvLCBwYXRoLCBtb2RlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJcbiIKKyJJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcyBhZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LlxuIgorIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOworCisjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2htb2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTENITU9EKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NIRkxBR1MpCisKK1B5RG9jX1NUUlZBUihvc19jaGZsYWdzX19kb2NfXywKKyJjaGZsYWdzKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcbiIKKyIgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorImZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuIgorInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hmbGFncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykKKworUHlEb2NfU1RSVkFSKG9zX2xjaGZsYWdzX19kb2NfXywKKyJsY2hmbGFncygkbW9kdWxlLCAvLCBwYXRoLCBmbGFncylcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIlRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuIgorIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DSFJPT1QpCisKK1B5RG9jX1NUUlZBUihvc19jaHJvb3RfX2RvY19fLAorImNocm9vdCgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CisKKyNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaHJvb3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hyb290KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNocm9vdCIsICJwYXRoIiwgMCwgMCk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaHJvb3QiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jaHJvb3RfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hST09UKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZTWU5DKQorCitQeURvY19TVFJWQVIob3NfZnN5bmNfX2RvY19fLAorImZzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4iKTsKKworI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZnN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZnN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN5bmNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZTWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZTkMpCisKK1B5RG9jX1NUUlZBUihvc19zeW5jX19kb2NfXywKKyJzeW5jKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suIik7CisKKyNkZWZpbmUgT1NfU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsic3luYyIsIChQeUNGdW5jdGlvbilvc19zeW5jLCBNRVRIX05PQVJHUywgb3Nfc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zeW5jX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZEQVRBU1lOQykKKworUHlEb2NfU1RSVkFSKG9zX2ZkYXRhc3luY19fZG9jX18sCisiZmRhdGFzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzayB3aXRob3V0IGZvcmNpbmcgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOworCisjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZmRhdGFzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZkYXRhc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZkYXRhc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmRhdGFzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZkYXRhc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GREFUQVNZTkMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0hPV04pCisKK1B5RG9jX1NUUlZBUihvc19jaG93bl9fZG9jX18sCisiY2hvd24oJG1vZHVsZSwgLywgcGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXFxcbiIKKyJcbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIGRpcl9mZFxuIgorIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgorIiAgICBkaXJlY3RvcnkuXG4iCisiICBmb2xsb3dfc3ltbGlua3NcbiIKKyIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKKyIgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorIlxuIgorInBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG4iCisiICBsaW5rIHBvaW50cyB0by5cbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hPV04pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIT1dOKQorCitQeURvY19TVFJWQVIob3NfZmNob3duX19kb2NfXywKKyJmY2hvd24oJG1vZHVsZSwgLywgZmQsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CisKKyNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRkNIT1dOKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xDSE9XTikKKworUHlEb2NfU1RSVkFSKG9zX2xjaG93bl9fZG9jX18sCisibGNob3duKCRtb2R1bGUsIC8sIHBhdGgsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cbiIKKyJcbiIKKyJUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hvd24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hvd24iLCAicGF0aCIsIDAsIDApOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyY6bGNob3duIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xDSE9XTikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2dldGN3ZF9fZG9jX18sCisiZ2V0Y3dkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKyNkZWZpbmUgT1NfR0VUQ1dEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2QiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Y3dkLCBNRVRIX05PQVJHUywgb3NfZ2V0Y3dkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRjd2RfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIob3NfZ2V0Y3dkYl9fZG9jX18sCisiZ2V0Y3dkYigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworI2RlZmluZSBPU19HRVRDV0RCX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2RiIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGN3ZGIsIE1FVEhfTk9BUkdTLCBvc19nZXRjd2RiX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGN3ZGJfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0xJTkspCisKK1B5RG9jX1NUUlZBUihvc19saW5rX19kb2NfXywKKyJsaW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSxcbiIKKyIgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGxpbmsgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuIgorIiAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG4iCisic3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcbiIKKyIgIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCisiICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGICAgIFwKKyAgICB7ImxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpbmtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTElOSykgKi8KKworUHlEb2NfU1RSVkFSKG9zX2xpc3RkaXJfX2RvY19fLAorImxpc3RkaXIoJG1vZHVsZSwgLywgcGF0aD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG4iCisiICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBieXRlczsgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXNcbiIKKyIgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG4iCisiSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPVwnLlwnLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcXFxuIgorIiAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG4iCisiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworCisjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3RkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaXN0ZGlyIiwgInBhdGgiLCAxLCBQQVRIX0hBVkVfRkRPUEVORElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlzdGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19fLAorIl9nZXRmdWxscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldGZ1bGxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZnVsbHBhdGhuYW1lLCBNRVRIX08sIG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZ1bGxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX18sCisiX2dldGZpbmFscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzLiIpOworCisjZGVmaW5lIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9PLCBvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZmluYWxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19faXNkaXJfX2RvY19fLAorIl9pc2RpcigkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBPU19fSVNESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Il9pc2RpciIsIChQeUNGdW5jdGlvbilvc19faXNkaXIsIE1FVEhfTywgb3NfX2lzZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19faXNkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2lzZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2lzZGlyIiwgInBhdGgiLCAwLCAwKTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCisiX2dldHZvbHVtZXBhdGhuYW1lKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKKworI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKK1B5RG9jX1NUUlZBUihvc19ta2Rpcl9fZG9jX18sCisibWtkaXIoJG1vZHVsZSwgLywgcGF0aCwgbW9kZT01MTEsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgZGlyZWN0b3J5LlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCisiXG4iCisiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtkaXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtkaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlID0gNTExOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX05JQ0UpCisKK1B5RG9jX1NUUlZBUihvc19uaWNlX19kb2NfXywKKyJuaWNlKCRtb2R1bGUsIGluY3JlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIgorIkFkZCBpbmNyZW1lbnQgdG8gdGhlIHByaW9yaXR5IG9mIHByb2Nlc3MgYW5kIHJldHVybiB0aGUgbmV3IHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX05JQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7Im5pY2UiLCAoUHlDRnVuY3Rpb24pb3NfbmljZSwgTUVUSF9PLCBvc19uaWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGluY3JlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGluY3JlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19uaWNlX2ltcGwobW9kdWxlLCBpbmNyZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTklDRSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQUklPUklUWSkKKworUHlEb2NfU1RSVkFSKG9zX2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSgkbW9kdWxlLCAvLCB3aGljaCwgd2hvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKworI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBpbnQgd2hpY2g7CisgICAgaW50IHdobzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUFJJT1JJVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpCisKK1B5RG9jX1NUUlZBUihvc19zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkoJG1vZHVsZSwgLywgd2hpY2gsIHdobywgcHJpb3JpdHkpXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHByaW9yaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgaW50IHdoaWNoOworICAgIGludCB3aG87CisgICAgaW50IHByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpICovCisKK1B5RG9jX1NUUlZBUihvc19yZW5hbWVfX2RvY19fLAorInJlbmFtZSgkbW9kdWxlLCAvLCBzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uXG4iCisiXG4iCisiSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuIgorIiAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG4iCisiICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOworCisjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZXBsYWNlX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzcmMgKi8KKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgLyogQ2xlYW51cCBmb3IgZHN0ICovCisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3JtZGlyX19kb2NfXywKKyJybWRpcigkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zeXN0ZW1fX2RvY19fLAorInN5c3RlbSgkbW9kdWxlLCAvLCBjb21tYW5kKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOworCisjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeXN0ZW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNvbW1hbmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3lzdGVtX19kb2NfXywKKyJzeXN0ZW0oJG1vZHVsZSwgLywgY29tbWFuZClcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKKworI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c3RlbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBjb21tYW5kICovCisgICAgUHlfWERFQ1JFRihjb21tYW5kKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKSAqLworCitQeURvY19TVFJWQVIob3NfdW1hc2tfX2RvY19fLAorInVtYXNrKCRtb2R1bGUsIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgbnVtZXJpYyB1bWFzayBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB1bWFzay4iKTsKKworI2RlZmluZSBPU19VTUFTS19NRVRIT0RERUYgICAgXAorICAgIHsidW1hc2siLCAoUHlDRnVuY3Rpb24pb3NfdW1hc2ssIE1FVEhfTywgb3NfdW1hc2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW1hc2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3VtYXNrX2ltcGwobW9kdWxlLCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfdW5saW5rX19kb2NfXywKKyJ1bmxpbmsoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VubGluayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVtb3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmUiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmVfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9VTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3VuYW1lX19kb2NfXywKKyJ1bmFtZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuIgorIlxuIgorIlRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiIKKyIgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSkiKTsKKworI2RlZmluZSBPU19VTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsidW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdW5hbWUsIE1FVEhfTk9BUkdTLCBvc191bmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3VuYW1lX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9VTkFNRSkgKi8KKworUHlEb2NfU1RSVkFSKG9zX3V0aW1lX19kb2NfXywKKyJ1dGltZSgkbW9kdWxlLCAvLCBwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSxcbiIKKyIgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG4iCisiXG4iCisiSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcbiIKKyIgICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guXG4iCisiSWYgbnMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTtcbiIKKyIgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuIgorIiAgICBzaW5jZSB0aGUgZXBvY2guXG4iCisiSWYgYm90aCB0aW1lcyBhbmQgbnMgYXJlIE5vbmUsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS5cbiIKKyJTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcbiIKKyIgIGxpbmsgcG9pbnRzIHRvLlxuIgorIkl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoXG4iCisiICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfVVRJTUVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0aW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3V0aW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdXRpbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3V0aW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpucywgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191dGltZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInV0aW1lIiwgInBhdGgiLCAwLCBQQVRIX1VUSU1FX0hBVkVfRkQpOworICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc191dGltZV9pbXBsKG1vZHVsZSwgJnBhdGgsIHRpbWVzLCBucywgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX19leGl0X19kb2NfXywKKyJfZXhpdCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJFeGl0IHRvIHRoZSBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgc3RhdHVzLCB3aXRob3V0IG5vcm1hbCBleGl0IHByb2Nlc3NpbmcuIik7CisKKyNkZWZpbmUgT1NfX0VYSVRfTUVUSE9EREVGICAgIFwKKyAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2V4aXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19leGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZXhpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOl9leGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19leGl0X2ltcGwobW9kdWxlLCBzdGF0dXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRVhFQ1YpCisKK1B5RG9jX1NUUlZBUihvc19leGVjdl9fZG9jX18sCisiZXhlY3YoJG1vZHVsZSwgcGF0aCwgYXJndiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLiIpOworCisjZGVmaW5lIE9TX0VYRUNWX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjdiIsIChQeUNGdW5jdGlvbilvc19leGVjdiwgTUVUSF9WQVJBUkdTLCBvc19leGVjdl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZXhlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZXhlY3YoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmd2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgcGF0aCwgYXJndik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKQorCitQeURvY19TVFJWQVIob3NfZXhlY3ZlX19kb2NfXywKKyJleGVjdmUoJG1vZHVsZSwgLywgcGF0aCwgYXJndiwgZW52KVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG4iCisiXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLlxuIgorIiAgYXJndlxuIgorIiAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuXG4iCisiICBlbnZcbiIKKyIgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19FWEVDVkVfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4ZWN2ZSIsIChQeUNGdW5jdGlvbilvc19leGVjdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19leGVjdmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdmUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GRVhFQ1ZFKTsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBQeU9iamVjdCAqZW52OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndiwgZW52KTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRVhFQ1YpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKQorCitQeURvY19TVFJWQVIob3Nfc3Bhd252X19kb2NfXywKKyJzcGF3bnYoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIHByb2dyYW0gc3BlY2lmaWVkIGJ5IHBhdGggaW4gYSBuZXcgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIG1vZGVcbiIKKyIgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLiIpOworCisjZGVmaW5lIE9TX1NQQVdOVl9NRVRIT0RERUYgICAgXAorICAgIHsic3Bhd252IiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudiwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLAorICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252X2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2KTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgUHlfWERFQ1JFRihwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKworUHlEb2NfU1RSVkFSKG9zX3NwYXdudmVfX2RvY19fLAorInNwYXdudmUoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLlxuIgorIlxuIgorIiAgbW9kZVxuIgorIiAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uXG4iCisiICBwYXRoXG4iCisiICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLlxuIgorIiAgYXJndlxuIgorIiAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuXG4iCisiICBlbnZcbiIKKyIgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19TUEFXTlZFX01FVEhPRERFRiAgICBcCisgICAgeyJzcGF3bnZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudmUsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zcGF3bnZlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBQeU9iamVjdCAqZW52OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwKKyAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudmVfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9GT1JLMSkKKworUHlEb2NfU1RSVkFSKG9zX2ZvcmsxX19kb2NfXywKKyJmb3JrMSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRm9yayBhIGNoaWxkIHByb2Nlc3Mgd2l0aCBhIHNpbmdsZSBtdWx0aXBsZXhlZCAoaS5lLiwgbm90IGJvdW5kKSB0aHJlYWQuXG4iCisiXG4iCisiUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0ZPUksxX01FVEhPRERFRiAgICBcCisgICAgeyJmb3JrMSIsIChQeUNGdW5jdGlvbilvc19mb3JrMSwgTUVUSF9OT0FSR1MsIG9zX2ZvcmsxX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yazEoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZm9yazFfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZPUksxKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZPUkspCisKK1B5RG9jX1NUUlZBUihvc19mb3JrX19kb2NfXywKKyJmb3JrKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JrIGEgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuIik7CisKKyNkZWZpbmUgT1NfRk9SS19NRVRIT0RERUYgICAgXAorICAgIHsiZm9yayIsIChQeUNGdW5jdGlvbilvc19mb3JrLCBNRVRIX05PQVJHUywgb3NfZm9ya19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19mb3JrX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX18sCisic2NoZWRfZ2V0X3ByaW9yaXR5X21heCgkbW9kdWxlLCAvLCBwb2xpY3kpXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgcG9saWN5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBpbnQgcG9saWN5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLAorICAgICAgICAmcG9saWN5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChtb2R1bGUsIHBvbGljeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9taW4oJG1vZHVsZSwgLywgcG9saWN5KVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgaW50IHBvbGljeTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBvbGljeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwobW9kdWxlLCBwb2xpY3kpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfZ2V0c2NoZWR1bGVyKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWR5IGJ5IHBpZC5cbiIKKyJcbiIKKyJQYXNzaW5nIDAgZm9yIHBpZCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfTywgb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgKGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9wYXJhbV9fZG9jX18sCisic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHlcIik7XG4iCisiXG4iCisiICBzY2hlZF9wcmlvcml0eVxuIgorIiAgICBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcGFyYW1faW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9wYXJhbShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLAorICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcGFyYW1faW1wbCh0eXBlLCBzY2hlZF9wcmlvcml0eSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiAoZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfXywKKyJzY2hlZF9zZXRzY2hlZHVsZXIoJG1vZHVsZSwgcGlkLCBwb2xpY3ksIHBhcmFtLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiXG4iCisiSWYgcGlkIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC5cbiIKKyJwYXJhbSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9TRVRTQ0hFRFVMRVJfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHNjaGVkdWxlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IHBvbGljeTsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCisgICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCwgcG9saWN5LCAmcGFyYW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRwYXJhbV9fZG9jX18sCisic2NoZWRfZ2V0cGFyYW0oJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCByZXR1cm5zIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4iCisiUmV0dXJuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRwYXJhbSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRwYXJhbSwgTUVUSF9PLCBvc19zY2hlZF9nZXRwYXJhbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0cGFyYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9zZXRwYXJhbV9fZG9jX18sCisic2NoZWRfc2V0cGFyYW0oJG1vZHVsZSwgcGlkLCBwYXJhbSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCBzZXRzIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4iCisicGFyYW0gc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRwYXJhbSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBvc19zY2hlZF9zZXRwYXJhbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0cGFyYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCisgICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkLCAmcGFyYW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19fLAorInNjaGVkX3JyX2dldF9pbnRlcnZhbCgkbW9kdWxlLCBwaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLCBpbiBzZWNvbmRzLlxuIgorIlxuIgorIlZhbHVlIHJldHVybmVkIGlzIGEgZmxvYXQuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX08sIG9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAorCitzdGF0aWMgZG91YmxlCitvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGRvdWJsZSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChtb2R1bGUsIHBpZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUZsb2F0X0Zyb21Eb3VibGUoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF95aWVsZF9fZG9jX18sCisic2NoZWRfeWllbGQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfeWllbGQiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBvc19zY2hlZF95aWVsZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfeWllbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3lpZWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NjaGVkX3lpZWxkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKKyJzY2hlZF9zZXRhZmZpbml0eSgkbW9kdWxlLCBwaWQsIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIENQVSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCB0byBtYXNrLlxuIgorIlxuIgorIm1hc2sgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzIGlkZW50aWZ5aW5nIENQVXMuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3NldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIG9zX3NjaGVkX3NldGFmZmluaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRhZmZpbml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgUHlPYmplY3QgKm1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0YWZmaW5pdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIFB5T2JqZWN0ICptYXNrOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAorICAgICAgICAmcGlkLCAmbWFzaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkLCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfZ2V0YWZmaW5pdHkoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRhZmZpbml0eSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9PLCBvc19zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0YWZmaW5pdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkpCisKK1B5RG9jX1NUUlZBUihvc19vcGVucHR5X19kb2NfXywKKyJvcGVucHR5KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgcHNldWRvLXRlcm1pbmFsLlxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIChtYXN0ZXJfZmQsIHNsYXZlX2ZkKSBjb250YWluaW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9yc1xuIgorImZvciBib3RoIHRoZSBtYXN0ZXIgYW5kIHNsYXZlIGVuZHMuIik7CisKKyNkZWZpbmUgT1NfT1BFTlBUWV9NRVRIT0RERUYgICAgXAorICAgIHsib3BlbnB0eSIsIChQeUNGdW5jdGlvbilvc19vcGVucHR5LCBNRVRIX05PQVJHUywgb3Nfb3BlbnB0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfb3BlbnB0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfb3BlbnB0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19vcGVucHR5X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRk9SS1BUWSkKKworUHlEb2NfU1RSVkFSKG9zX2ZvcmtwdHlfX2RvY19fLAorImZvcmtwdHkoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvcmsgYSBuZXcgcHJvY2VzcyB3aXRoIGEgbmV3IHBzZXVkby10ZXJtaW5hbCBhcyBjb250cm9sbGluZyB0dHkuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIChwaWQsIG1hc3Rlcl9mZCkuXG4iCisiTGlrZSBmb3JrKCksIHJldHVybiBwaWQgb2YgMCB0byB0aGUgY2hpbGQgcHJvY2VzcyxcbiIKKyJhbmQgcGlkIG9mIGNoaWxkIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy5cbiIKKyJUbyBib3RoLCByZXR1cm4gZmQgb2YgbmV3bHkgb3BlbmVkIHBzZXVkby10ZXJtaW5hbC4iKTsKKworI2RlZmluZSBPU19GT1JLUFRZX01FVEhPRERFRiAgICBcCisgICAgeyJmb3JrcHR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZvcmtwdHksIE1FVEhfTk9BUkdTLCBvc19mb3JrcHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrcHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mb3JrcHR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2ZvcmtwdHlfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZPUktQVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VURUdJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldGVnaWRfX2RvY19fLAorImdldGVnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKworI2RlZmluZSBPU19HRVRFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGVnaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRlZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRlZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGVnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VURVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldGV1aWRfX2RvY19fLAorImdldGV1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVEVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGV1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0ZXVpZCwgTUVUSF9OT0FSR1MsIG9zX2dldGV1aWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGV1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0ZXVpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VURVVJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRnaWRfX2RvY19fLAorImdldGdpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Z2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0Z2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEdJRCkgKi8KKworUHlEb2NfU1RSVkFSKG9zX2dldHBpZF9fZG9jX18sCisiZ2V0cGlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4iKTsKKworI2RlZmluZSBPU19HRVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldHBpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUR1JPVVBTKQorCitQeURvY19TVFJWQVIob3NfZ2V0Z3JvdXBzX19kb2NfXywKKyJnZXRncm91cHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIG9zX2dldGdyb3Vwc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z3JvdXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRncm91cHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0Z3JvdXBzX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRHUk9VUFMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUEdJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBnaWRfX2RvY19fLAorImdldHBnaWQoJG1vZHVsZSwgLywgcGlkKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuIik7CisKKyNkZWZpbmUgT1NfR0VUUEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfZ2V0cGdycF9fZG9jX18sCisiZ2V0cGdycCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUUEdSUF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cGdycCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ3JwLCBNRVRIX05PQVJHUywgb3NfZ2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwZ3JwX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQR1JQKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc19zZXRwZ3JwX19kb2NfXywKKyJzZXRwZ3JwKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNYWtlIHRoZSBjdXJyZW50IHByb2Nlc3MgdGhlIGxlYWRlciBvZiBpdHMgcHJvY2VzcyBncm91cC4iKTsKKworI2RlZmluZSBPU19TRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwZ3JwIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHBncnAsIE1FVEhfTk9BUkdTLCBvc19zZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NldHBncnBfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFBHUlApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUFBJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBwaWRfX2RvY19fLAorImdldHBwaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcGFyZW50XCdzIHByb2Nlc3MgaWQuXG4iCisiXG4iCisiSWYgdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZCwgV2luZG93cyBtYWNoaW5lcyB3aWxsIHN0aWxsXG4iCisicmV0dXJuIGl0cyBpZDsgb3RoZXJzIHN5c3RlbXMgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBcJ2luaXRcJyBwcm9jZXNzICgxKS4iKTsKKworI2RlZmluZSBPU19HRVRQUElEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwcGlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHBwaWQsIE1FVEhfTk9BUkdTLCBvc19nZXRwcGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwcGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldHBwaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBQSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUTE9HSU4pCisKK1B5RG9jX1NUUlZBUihvc19nZXRsb2dpbl9fZG9jX18sCisiZ2V0bG9naW4oJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuIik7CisKKyNkZWZpbmUgT1NfR0VUTE9HSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGxvZ2luIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGxvZ2luLCBNRVRIX05PQVJHUywgb3NfZ2V0bG9naW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvZ2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRsb2dpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRsb2dpbl9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUTE9HSU4pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUVUlEKQorCitQeURvY19TVFJWQVIob3NfZ2V0dWlkX19kb2NfXywKKyJnZXR1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHVzZXIgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0dWlkLCBNRVRIX05PQVJHUywgb3NfZ2V0dWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXR1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFVJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9LSUxMKQorCitQeURvY19TVFJWQVIob3Nfa2lsbF9fZG9jX18sCisia2lsbCgkbW9kdWxlLCBwaWQsIHNpZ25hbCwgLylcbiIKKyItLVxuIgorIlxuIgorIktpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7CisKKyNkZWZpbmUgT1NfS0lMTF9NRVRIT0RERUYgICAgXAorICAgIHsia2lsbCIsIChQeUNGdW5jdGlvbilvc19raWxsLCBNRVRIX1ZBUkFSR1MsIG9zX2tpbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5X3NzaXplX3Qgc2lnbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIFB5X3NzaXplX3Qgc2lnbmFsOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIm46a2lsbCIsCisgICAgICAgICZwaWQsICZzaWduYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbF9pbXBsKG1vZHVsZSwgcGlkLCBzaWduYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfS0lMTCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9LSUxMUEcpCisKK1B5RG9jX1NUUlZBUihvc19raWxscGdfX2RvY19fLAorImtpbGxwZygkbW9kdWxlLCBwZ2lkLCBzaWduYWwsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJLaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLiIpOworCisjZGVmaW5lIE9TX0tJTExQR19NRVRIT0RERUYgICAgXAorICAgIHsia2lsbHBnIiwgKFB5Q0Z1bmN0aW9uKW9zX2tpbGxwZywgTUVUSF9WQVJBUkdTLCBvc19raWxscGdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBnaWQsIGludCBzaWduYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfa2lsbHBnKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBnaWQ7CisgICAgaW50IHNpZ25hbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOmtpbGxwZyIsCisgICAgICAgICZwZ2lkLCAmc2lnbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxwZ19pbXBsKG1vZHVsZSwgcGdpZCwgc2lnbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0tJTExQRykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QTE9DSykKKworUHlEb2NfU1RSVkFSKG9zX3Bsb2NrX19kb2NfXywKKyJwbG9jaygkbW9kdWxlLCBvcCwgLylcbiIKKyItLVxuIgorIlxuIgorIkxvY2sgcHJvZ3JhbSBzZWdtZW50cyBpbnRvIG1lbW9yeS5cIik7Iik7CisKKyNkZWZpbmUgT1NfUExPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InBsb2NrIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bsb2NrLCBNRVRIX08sIG9zX3Bsb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBvcDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wbG9ja19pbXBsKG1vZHVsZSwgb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUExPQ0spICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0dWlkX19kb2NfXywKKyJzZXR1aWQoJG1vZHVsZSwgdWlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19TRVRVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHVpZCIsIChQeUNGdW5jdGlvbilvc19zZXR1aWQsIE1FVEhfTywgb3Nfc2V0dWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCB1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0dWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgdWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR1aWRfaW1wbChtb2R1bGUsIHVpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VURVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGV1aWRfX2RvY19fLAorInNldGV1aWQoJG1vZHVsZSwgZXVpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX1NFVEVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGV1aWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0ZXVpZCwgTUVUSF9PLCBvc19zZXRldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgZXVpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgZXVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRldWlkX2ltcGwobW9kdWxlLCBldWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VURUdJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGVnaWRfX2RvY19fLAorInNldGVnaWQoJG1vZHVsZSwgZWdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKworI2RlZmluZSBPU19TRVRFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGVnaWQsIE1FVEhfTywgb3Nfc2V0ZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGVnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZWdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IGVnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZWdpZF9pbXBsKG1vZHVsZSwgZWdpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmV1aWRfX2RvY19fLAorInNldHJldWlkKCRtb2R1bGUsIHJ1aWQsIGV1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsIGFuZCBlZmZlY3RpdmUgdXNlciBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJldWlkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmV1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdWlkX3QgcnVpZDsKKyAgICB1aWRfdCBldWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJldWlkIiwKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmV1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUkVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRyZWdpZF9fZG9jX18sCisic2V0cmVnaWQoJG1vZHVsZSwgcmdpZCwgZWdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVHSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJlZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJlZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZ2lkX3QgcmdpZDsKKyAgICBnaWRfdCBlZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJlZ2lkIiwKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0Z2lkX19kb2NfXywKKyJzZXRnaWQoJG1vZHVsZSwgZ2lkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VUR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRnaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0Z2lkLCBNRVRIX08sIG9zX3NldGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0Z2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0Z2lkX2ltcGwobW9kdWxlLCBnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEdST1VQUykKKworUHlEb2NfU1RSVkFSKG9zX3NldGdyb3Vwc19fZG9jX18sCisic2V0Z3JvdXBzKCRtb2R1bGUsIGdyb3VwcywgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4iKTsKKworI2RlZmluZSBPU19TRVRHUk9VUFNfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGdyb3VwcyIsIChQeUNGdW5jdGlvbilvc19zZXRncm91cHMsIE1FVEhfTywgb3Nfc2V0Z3JvdXBzX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUR1JPVVBTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVQzKQorCitQeURvY19TVFJWQVIob3Nfd2FpdDNfX2RvY19fLAorIndhaXQzKCRtb2R1bGUsIC8sIG9wdGlvbnMpXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKKworI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYgICAgXAorICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0M19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0MyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6d2FpdDMiLCBfa2V5d29yZHMsCisgICAgICAgICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQzX2ltcGwobW9kdWxlLCBvcHRpb25zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dBSVQzKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVQ0KQorCitQeURvY19TVFJWQVIob3Nfd2FpdDRfX2RvY19fLAorIndhaXQ0KCRtb2R1bGUsIC8sIHBpZCwgb3B0aW9ucylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBzcGVjaWZpYyBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczpcbiIKKyIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOworCisjZGVmaW5lIE9TX1dBSVQ0X01FVEhPRERFRiAgICBcCisgICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQ0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUNCkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pKQorCitQeURvY19TVFJWQVIob3Nfd2FpdGlkX19kb2NfXywKKyJ3YWl0aWQoJG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIHJlc3VsdCBvZiB3YWl0aW5nIGZvciBhIHByb2Nlc3Mgb3IgcHJvY2Vzc2VzLlxuIgorIlxuIgorIiAgaWR0eXBlXG4iCisiICAgIE11c3QgYmUgb25lIG9mIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG4iCisiICBpZFxuIgorIiAgICBUaGUgaWQgdG8gd2FpdCBvbi5cbiIKKyIgIG9wdGlvbnNcbiIKKyIgICAgQ29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRURcbiIKKyIgICAgb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuIgorIlxuIgorIlJldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlXG4iCisibm8gY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4iKTsKKworI2RlZmluZSBPU19XQUlUSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRpZCIsIChQeUNGdW5jdGlvbilvc193YWl0aWQsIE1FVEhfVkFSQVJHUywgb3Nfd2FpdGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpZHR5cGVfdCBpZHR5cGUsIGlkX3QgaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpZHR5cGVfdCBpZHR5cGU7CisgICAgaWRfdCBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0aWQiLAorICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRpZF9pbXBsKG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpCisKK1B5RG9jX1NUUlZBUihvc193YWl0cGlkX19kb2NfXywKKyJ3YWl0cGlkKCRtb2R1bGUsIHBpZCwgb3B0aW9ucywgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAgIChwaWQsIHN0YXR1cylcbiIKKyJcbiIKKyJUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfV0FJVFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdHBpZCIsIChQeUNGdW5jdGlvbilvc193YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGludCBvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUUElEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NXQUlUKQorCitQeURvY19TVFJWQVIob3Nfd2FpdHBpZF9fZG9jX18sCisid2FpdHBpZCgkbW9kdWxlLCBwaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMgPDwgOClcbiIKKyJcbiIKKyJUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKyNkZWZpbmUgT1NfV0FJVFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdHBpZCIsIChQeUNGdW5jdGlvbilvc193YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRwaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRwaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfaW50cHRyX3QgcGlkOworICAgIGludCBvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DV0FJVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUKQorCitQeURvY19TVFJWQVIob3Nfd2FpdF9fZG9jX18sCisid2FpdCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMpIik7CisKKyNkZWZpbmUgT1NfV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdCIsIChQeUNGdW5jdGlvbilvc193YWl0LCBNRVRIX05PQVJHUywgb3Nfd2FpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc193YWl0X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCisKK1B5RG9jX1NUUlZBUihvc19zeW1saW5rX19kb2NfXywKKyJzeW1saW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cbiIKKyJcbiIKKyJ0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgaWYgdGhlIHRhcmdldCBpcyB0byBiZVxuIgorIiAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuIgorIiAgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLilcbiIKKyIgIHRhcmdldF9pc19kaXJlY3RvcnkgaXMgaWdub3JlZCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRiAgICBcCisgICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeW1saW5rX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW1saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LAorICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5bWxpbmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgInNyYyIsIDAsIDApOworICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJkc3QiLCAwLCAwKTsKKyAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N5bWxpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHRhcmdldF9pc19kaXJlY3RvcnksIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lNTElOSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9USU1FUykKKworUHlEb2NfU1RSVkFSKG9zX3RpbWVzX19kb2NfXywKKyJ0aW1lcygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29sbGVjdGlvbiBjb250YWluaW5nIHByb2Nlc3MgdGltaW5nIGluZm9ybWF0aW9uLlxuIgorIlxuIgorIlRoZSBvYmplY3QgcmV0dXJuZWQgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG4iCisiICAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKVxuIgorIkFsbCBmaWVsZHMgYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIik7CisKKyNkZWZpbmUgT1NfVElNRVNfTUVUSE9EREVGICAgIFwKKyAgICB7InRpbWVzIiwgKFB5Q0Z1bmN0aW9uKW9zX3RpbWVzLCBNRVRIX05PQVJHUywgb3NfdGltZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RpbWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190aW1lcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc190aW1lc19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVElNRVMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUU0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0c2lkX19kb2NfXywKKyJnZXRzaWQoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0c2lkKHBpZCkgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOworCisjZGVmaW5lIE9TX0dFVFNJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHNpZCwgTUVUSF9PLCBvc19nZXRzaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRzaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0c2lkX2ltcGwobW9kdWxlLCBwaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUU0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFNJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHNpZF9fZG9jX18sCisic2V0c2lkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4iKTsKKworI2RlZmluZSBPU19TRVRTSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHNpZCIsIChQeUNGdW5jdGlvbilvc19zZXRzaWQsIE1FVEhfTk9BUkdTLCBvc19zZXRzaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0c2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3NldHNpZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUU0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFBHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRwZ2lkX19kb2NfXywKKyJzZXRwZ2lkKCRtb2R1bGUsIHBpZCwgcGdycCwgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQocGlkLCBwZ3JwKS4iKTsKKworI2RlZmluZSBPU19TRVRQR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHBnaWQsIE1FVEhfVkFSQVJHUywgb3Nfc2V0cGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgcGlkX3QgcGdycCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBwaWRfdCBwZ3JwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIiIgX1B5X1BBUlNFX1BJRCAiOnNldHBnaWQiLAorICAgICAgICAmcGlkLCAmcGdycCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQsIHBncnApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9UQ0dFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc190Y2dldHBncnBfX2RvY19fLAorInRjZ2V0cGdycCgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4iKTsKKworI2RlZmluZSBPU19UQ0dFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7InRjZ2V0cGdycCIsIChQeUNGdW5jdGlvbilvc190Y2dldHBncnAsIE1FVEhfTywgb3NfdGNnZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190Y2dldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNnZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnRjZ2V0cGdycCIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190Y2dldHBncnBfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RDR0VUUEdSUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9UQ1NFVFBHUlApCisKK1B5RG9jX1NUUlZBUihvc190Y3NldHBncnBfX2RvY19fLAorInRjc2V0cGdycCgkbW9kdWxlLCBmZCwgcGdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4iKTsKKworI2RlZmluZSBPU19UQ1NFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7InRjc2V0cGdycCIsIChQeUNGdW5jdGlvbilvc190Y3NldHBncnAsIE1FVEhfVkFSQVJHUywgb3NfdGNzZXRwZ3JwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190Y3NldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHBpZF90IHBnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNzZXRwZ3JwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBwaWRfdCBwZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwKKyAgICAgICAgJmZkLCAmcGdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190Y3NldHBncnBfaW1wbChtb2R1bGUsIGZkLCBwZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RDU0VUUEdSUCkgKi8KKworUHlEb2NfU1RSVkFSKG9zX29wZW5fX2RvY19fLAorIm9wZW4oJG1vZHVsZSwgLywgcGF0aCwgZmxhZ3MsIG1vZGU9NTExLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIChpbnRlZ2VyKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX09QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX29wZW5fX2RvY19ffSwKKworc3RhdGljIGludAorb3Nfb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwKKyAgICAgICAgICAgICBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgib3BlbiIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IGZsYWdzOworICAgIGludCBtb2RlID0gNTExOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX29wZW5faW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgbW9kZSwgZGlyX2ZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY2xvc2VfX2RvY19fLAorImNsb3NlKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmNsb3NlIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY2xvc2VyYW5nZV9fZG9jX18sCisiY2xvc2VyYW5nZSgkbW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgYWxsIGZpbGUgZGVzY3JpcHRvcnMgaW4gW2ZkX2xvdywgZmRfaGlnaCksIGlnbm9yaW5nIGVycm9ycy4iKTsKKworI2RlZmluZSBPU19DTE9TRVJBTkdFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZXJhbmdlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlcmFuZ2UsIE1FVEhfVkFSQVJHUywgb3NfY2xvc2VyYW5nZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2xvc2VyYW5nZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZF9sb3csIGludCBmZF9oaWdoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlcmFuZ2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkX2xvdzsKKyAgICBpbnQgZmRfaGlnaDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Y2xvc2VyYW5nZSIsCisgICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlcmFuZ2VfaW1wbChtb2R1bGUsIGZkX2xvdywgZmRfaGlnaCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2R1cF9fZG9jX18sCisiZHVwKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0RVUF9NRVRIT0RERUYgICAgXAorICAgIHsiZHVwIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cCwgTUVUSF9PLCBvc19kdXBfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZHVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2R1cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2R1cF9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfZHVwMl9fZG9jX18sCisiZHVwMigkbW9kdWxlLCAvLCBmZCwgZmQyLCBpbmhlcml0YWJsZT1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19EVVAyX01FVEhPRERFRiAgICBcCisgICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kdXAyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kdXAyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgZmQyLCBpbnQgaW5oZXJpdGFibGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZHVwMihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgImZkMiIsICJpbmhlcml0YWJsZSIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICBpbnQgZmQyOworICAgIGludCBpbmhlcml0YWJsZSA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxwOmR1cDIiLCBfa2V5d29yZHMsCisgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2R1cDJfaW1wbChtb2R1bGUsIGZkLCBmZDIsIGluaGVyaXRhYmxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0xPQ0tGKQorCitQeURvY19TVFJWQVIob3NfbG9ja2ZfX2RvY19fLAorImxvY2tmKCRtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIiAgZmRcbiIKKyIgICAgQW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBjb21tYW5kXG4iCisiICAgIE9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3IgRl9URVNULlxuIgorIiAgbGVuZ3RoXG4iCisiICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgT1NfTE9DS0ZfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvY2tmIiwgKFB5Q0Z1bmN0aW9uKW9zX2xvY2tmLCBNRVRIX1ZBUkFSR1MsIG9zX2xvY2tmX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sb2NrZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvbW1hbmQsIFB5X29mZl90IGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sb2NrZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvbW1hbmQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKKyAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xPQ0tGKSAqLworCitQeURvY19TVFJWQVIob3NfbHNlZWtfX2RvY19fLAorImxzZWVrKCRtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93LCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBwb3NpdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLlxuIgorIlxuIgorIlJldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBudW1iZXIgb2YgYnl0ZXNcbiIKKyJyZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiIpOworCisjZGVmaW5lIE9TX0xTRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJsc2VlayIsIChQeUNGdW5jdGlvbilvc19sc2VlaywgTUVUSF9WQVJBUkdTLCBvc19sc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlfb2ZmX3QKK29zX2xzZWVrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBwb3NpdGlvbiwgaW50IGhvdyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sc2VlayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3QgcG9zaXRpb247CisgICAgaW50IGhvdzsKKyAgICBQeV9vZmZfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZpOmxzZWVrIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbHNlZWtfaW1wbChtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93KTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVB5X29mZl90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZWFkX19kb2NfXywKKyJyZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0LiIpOworCisjZGVmaW5lIE9TX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pb3NfcmVhZCwgTUVUSF9WQVJBUkdTLCBvc19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZWFkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9zc2l6ZV90IGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZWFkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaW46cmVhZCIsCisgICAgICAgICZmZCwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1JFQURWKQorCitQeURvY19TVFJWQVIob3NfcmVhZHZfX2RvY19fLAorInJlYWR2KCRtb2R1bGUsIGZkLCBidWZmZXJzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYW4gaXRlcmFibGUgb2YgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgYnVmZmVycyBzaG91bGQgYmUgbXV0YWJsZSBidWZmZXJzIGFjY2VwdGluZyBieXRlcy5cbiIKKyJyZWFkdiB3aWxsIHRyYW5zZmVyIGRhdGEgaW50byBlYWNoIGJ1ZmZlciB1bnRpbCBpdCBpcyBmdWxsXG4iCisiYW5kIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlIHNlcXVlbmNlIHRvIGhvbGRcbiIKKyJ0aGUgcmVzdCBvZiB0aGUgZGF0YS5cbiIKKyJcbiIKKyJyZWFkdiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCxcbiIKKyJ3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuIik7CisKKyNkZWZpbmUgT1NfUkVBRFZfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWR2IiwgKFB5Q0Z1bmN0aW9uKW9zX3JlYWR2LCBNRVRIX1ZBUkFSR1MsIG9zX3JlYWR2X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc19yZWFkdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZHYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpidWZmZXJzOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLAorICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19yZWFkdl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1JFQURWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BSRUFEKQorCitQeURvY19TVFJWQVIob3NfcHJlYWRfX2RvY19fLAorInByZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LlxuIgorIlxuIgorIlJlYWQgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbVxuIgorInRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuIik7CisKKyNkZWZpbmUgT1NfUFJFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InByZWFkIiwgKFB5Q0Z1bmN0aW9uKW9zX3ByZWFkLCBNRVRIX1ZBUkFSR1MsIG9zX3ByZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGxlbmd0aCwgUHlfb2ZmX3Qgb2Zmc2V0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3ByZWFkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbGVuZ3RoOworICAgIFB5X29mZl90IG9mZnNldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsCisgICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3ByZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFJFQUQpICovCisKK1B5RG9jX1NUUlZBUihvc193cml0ZV9fZG9jX18sCisid3JpdGUoJG1vZHVsZSwgZmQsIGRhdGEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pb3Nfd3JpdGUsIE1FVEhfVkFSQVJHUywgb3Nfd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmRhdGEpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd3JpdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwKKyAgICAgICAgJmZkLCAmZGF0YSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmZGF0YSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfZnN0YXRfX2RvY19fLAorImZzdGF0KCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJMaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJFcXVpdmFsZW50IHRvIG9zLnN0YXQoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZTVEFUX01FVEhPRERFRiAgICBcCisgICAgeyJmc3RhdCIsIChQeUNGdW5jdGlvbilvc19mc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzdGF0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpmc3RhdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0X2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLlxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3JcbiIKKyJjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLiIpOworCisjZGVmaW5lIE9TX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2lzYXR0eSwgTUVUSF9PLCBvc19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfaXNhdHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2lzYXR0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2lzYXR0eV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1BJUEUpCisKK1B5RG9jX1NUUlZBUihvc19waXBlX19kb2NfXywKKyJwaXBlKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBwaXBlLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiB0d28gZmlsZSBkZXNjcmlwdG9yczpcbiIKKyIgIChyZWFkX2ZkLCB3cml0ZV9mZCkiKTsKKworI2RlZmluZSBPU19QSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJwaXBlIiwgKFB5Q0Z1bmN0aW9uKW9zX3BpcGUsIE1FVEhfTk9BUkdTLCBvc19waXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19waXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19waXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3BpcGVfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BJUEUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUElQRTIpCisKK1B5RG9jX1NUUlZBUihvc19waXBlMl9fZG9jX18sCisicGlwZTIoJG1vZHVsZSwgZmxhZ3MsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBwaXBlIHdpdGggZmxhZ3Mgc2V0IGF0b21pY2FsbHkuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOlxuIgorIiAgKHJlYWRfZmQsIHdyaXRlX2ZkKVxuIgorIlxuIgorImZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6XG4iCisiT19OT05CTE9DSywgT19DTE9FWEVDLiIpOworCisjZGVmaW5lIE9TX1BJUEUyX01FVEhPRERFRiAgICBcCisgICAgeyJwaXBlMiIsIChQeUNGdW5jdGlvbilvc19waXBlMiwgTUVUSF9PLCBvc19waXBlMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZTJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZTIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGlwZTJfaW1wbChtb2R1bGUsIGZsYWdzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BJUEUyKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1dSSVRFVikKKworUHlEb2NfU1RSVkFSKG9zX3dyaXRldl9fZG9jX18sCisid3JpdGV2KCRtb2R1bGUsIGZkLCBidWZmZXJzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSXRlcmF0ZSBvdmVyIGJ1ZmZlcnMsIGFuZCB3cml0ZSB0aGUgY29udGVudHMgb2YgZWFjaCB0byBhIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi5cbiIKKyJidWZmZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBieXRlcy1saWtlIG9iamVjdHMuIik7CisKKyNkZWZpbmUgT1NfV1JJVEVWX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZXYiLCAoUHlDRnVuY3Rpb24pb3Nfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIG9zX3dyaXRldl9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3Nfd3JpdGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeU9iamVjdCAqYnVmZmVycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193cml0ZXYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpidWZmZXJzOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwKKyAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGV2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV1JJVEVWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BXUklURSkKKworUHlEb2NfU1RSVkFSKG9zX3B3cml0ZV9fZG9jX18sCisicHdyaXRlKCRtb2R1bGUsIGZkLCBidWZmZXIsIG9mZnNldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBvZmZzZXQuXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIHRvIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mXG4iCisidGhlIGZpbGUuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlLiAgRG9lcyBub3QgY2hhbmdlIHRoZVxuIgorImN1cnJlbnQgZmlsZSBvZmZzZXQuIik7CisKKyNkZWZpbmUgT1NfUFdSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJwd3JpdGUiLCAoUHlDRnVuY3Rpb24pb3NfcHdyaXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3B3cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcHdyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgIFB5X29mZl90IG9mZnNldCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wd3JpdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwKKyAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3B3cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZidWZmZXIsIG9mZnNldCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BXUklURSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9NS0ZJRk8pCisKK1B5RG9jX1NUUlZBUihvc19ta2ZpZm9fX2RvY19fLAorIm1rZmlmbygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlPTQzOCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBcImZpZm9cIiAoYSBQT1NJWCBuYW1lZCBwaXBlKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYgICAgXAorICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZmlmb19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtmaWZvX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2ZpZm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtmaWZvIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgbW9kZSA9IDQzODsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta2ZpZm9faW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NS0ZJRk8pICovCisKKyNpZiAoZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikpCisKK1B5RG9jX1NUUlZBUihvc19ta25vZF9fZG9jX18sCisibWtub2QoJG1vZHVsZSwgLywgcGF0aCwgbW9kZT0zODQsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLlxuIgorIlxuIgorIkNyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG4iCisiYXQgcGF0aC4gIG1vZGUgc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlXG4iCisidHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuIgorIlNfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiAgSWYgU19JRkNIUiBvciBTX0lGQkxLIGlzIHNldCBvbiBtb2RlLFxuIgorImRldmljZSBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nXG4iCisib3MubWFrZWRldigpKS4gIE90aGVyd2lzZSBkZXZpY2UgaXMgaWdub3JlZC5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX01LTk9EX01FVEhPRERFRiAgICBcCisgICAgeyJta25vZCIsIChQeUNGdW5jdGlvbilvc19ta25vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rbm9kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtub2QiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlID0gMzg0OworICAgIGRldl90IGRldmljZSA9IDA7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX21rbm9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGV2aWNlLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWFqb3JfX2RvY19fLAorIm1ham9yKCRtb2R1bGUsIGRldmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7CisKKyNkZWZpbmUgT1NfTUFKT1JfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ham9yIiwgKFB5Q0Z1bmN0aW9uKW9zX21ham9yLCBNRVRIX08sIG9zX21ham9yX19kb2NfX30sCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21ham9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21ham9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZGV2X3QgZGV2aWNlOworICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWpvcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWlub3JfX2RvY19fLAorIm1pbm9yKCRtb2R1bGUsIGRldmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7CisKKyNkZWZpbmUgT1NfTUlOT1JfTUVUSE9EREVGICAgIFwKKyAgICB7Im1pbm9yIiwgKFB5Q0Z1bmN0aW9uKW9zX21pbm9yLCBNRVRIX08sIG9zX21pbm9yX19kb2NfX30sCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21pbm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21pbm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZGV2X3QgZGV2aWNlOworICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19taW5vcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKQorCitQeURvY19TVFJWQVIob3NfbWFrZWRldl9fZG9jX18sCisibWFrZWRldigkbW9kdWxlLCBtYWpvciwgbWlub3IsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4iKTsKKworI2RlZmluZSBPU19NQUtFREVWX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtlZGV2IiwgKFB5Q0Z1bmN0aW9uKW9zX21ha2VkZXYsIE1FVEhfVkFSQVJHUywgb3NfbWFrZWRldl9fZG9jX199LAorCitzdGF0aWMgZGV2X3QKK29zX21ha2VkZXZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFqb3IsIGludCBtaW5vcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19tYWtlZGV2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtYWpvcjsKKyAgICBpbnQgbWlub3I7CisgICAgZGV2X3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6bWFrZWRldiIsCisgICAgICAgICZtYWpvciwgJm1pbm9yKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWtlZGV2X2ltcGwobW9kdWxlLCBtYWpvciwgbWlub3IpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfUHlMb25nX0Zyb21EZXYoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9ERVZJQ0VfTUFDUk9TKSAqLworCisjaWYgKGRlZmluZWQgSEFWRV9GVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfZnRydW5jYXRlX19kb2NfXywKKyJmdHJ1bmNhdGUoJG1vZHVsZSwgZmQsIGxlbmd0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvciwgdG8gYSBzcGVjaWZpYyBsZW5ndGguIik7CisKKyNkZWZpbmUgT1NfRlRSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJmdHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIG9zX2Z0cnVuY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnRydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnRydW5jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLAorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpICovCisKKyNpZiAoZGVmaW5lZCBIQVZFX1RSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkbW9kdWxlLCAvLCBwYXRoLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSBhIGZpbGUsIHNwZWNpZmllZCBieSBwYXRoLCB0byBhIHNwZWNpZmljIGxlbmd0aC5cbiIKKyJcbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHJ1bmNhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInRydW5jYXRlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlRSVU5DQVRFKTsKKyAgICBQeV9vZmZfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc190cnVuY2F0ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBTExPQ0FURSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKSkKKworUHlEb2NfU1RSVkFSKG9zX3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX18sCisicG9zaXhfZmFsbG9jYXRlKCRtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkVuc3VyZSBhIGZpbGUgaGFzIGFsbG9jYXRlZCBhdCBsZWFzdCBhIHBhcnRpY3VsYXIgbnVtYmVyIG9mIGJ5dGVzIG9uIGRpc2suXG4iCisiXG4iCisiRW5zdXJlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIGVuY29tcGFzc2VzIGEgcmFuZ2Ugb2YgYnl0ZXNcbiIKKyJzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBjb250aW51aW5nIGZvciBsZW5ndGggYnl0ZXMuIik7CisKKyNkZWZpbmUgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJwb3NpeF9mYWxsb2NhdGUiLCAoUHlDRnVuY3Rpb24pb3NfcG9zaXhfZmFsbG9jYXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFsbG9jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFsbG9jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpCisKK1B5RG9jX1NUUlZBUihvc19wb3NpeF9mYWR2aXNlX19kb2NfXywKKyJwb3NpeF9mYWR2aXNlKCRtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYWR2aWNlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybi5cbiIKKyJcbiIKKyJBbm5vdW5jZSBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuLCB0aHVzIGFsbG93aW5nXG4iCisidGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuXG4iCisiVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG4iCisib2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW5ndGggYnl0ZXMuXG4iCisiYWR2aWNlIGlzIG9uZSBvZiBQT1NJWF9GQURWX05PUk1BTCwgUE9TSVhfRkFEVl9TRVFVRU5USUFMLFxuIgorIlBPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQsIG9yXG4iCisiUE9TSVhfRkFEVl9ET05UTkVFRC4iKTsKKworI2RlZmluZSBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRiAgICBcCisgICAgeyJwb3NpeF9mYWR2aXNlIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bvc2l4X2ZhZHZpc2UsIE1FVEhfVkFSQVJHUywgb3NfcG9zaXhfZmFkdmlzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFkdmlzZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIFB5X29mZl90IGxlbmd0aCwgaW50IGFkdmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wb3NpeF9mYWR2aXNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworICAgIGludCBhZHZpY2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWR2aXNlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3B1dGVudl9fZG9jX18sCisicHV0ZW52KCRtb2R1bGUsIG5hbWUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKKworI2RlZmluZSBPU19QVVRFTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dGVudiIsIChQeUNGdW5jdGlvbilvc19wdXRlbnYsIE1FVEhfVkFSQVJHUywgb3NfcHV0ZW52X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3B1dGVudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnB1dGVudiIsCisgICAgICAgICZuYW1lLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QVVRFTlYpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19wdXRlbnZfX2RvY19fLAorInB1dGVudigkbW9kdWxlLCBuYW1lLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJwdXRlbnYiLCAoUHlDRnVuY3Rpb24pb3NfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIG9zX3B1dGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6cHV0ZW52IiwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgbmFtZSAqLworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1VOU0VURU5WKQorCitQeURvY19TVFJWQVIob3NfdW5zZXRlbnZfX2RvY19fLAorInVuc2V0ZW52KCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfVU5TRVRFTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InVuc2V0ZW52IiwgKFB5Q0Z1bmN0aW9uKW9zX3Vuc2V0ZW52LCBNRVRIX08sIG9zX3Vuc2V0ZW52X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bnNldGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Vuc2V0ZW52KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5zZXRlbnZfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG5hbWUgKi8KKyAgICBQeV9YREVDUkVGKG5hbWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9VTlNFVEVOVikgKi8KKworUHlEb2NfU1RSVkFSKG9zX3N0cmVycm9yX19kb2NfXywKKyJzdHJlcnJvcigkbW9kdWxlLCBjb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4iKTsKKworI2RlZmluZSBPU19TVFJFUlJPUl9NRVRIT0RERUYgICAgXAorICAgIHsic3RyZXJyb3IiLCAoUHlDRnVuY3Rpb24pb3Nfc3RyZXJyb3IsIE1FVEhfTywgb3Nfc3RyZXJyb3JfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0cmVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RyZXJyb3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N0cmVycm9yX2ltcGwobW9kdWxlLCBjb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0NPUkVEVU1QKQorCitQeURvY19TVFJWQVIob3NfV0NPUkVEVU1QX19kb2NfXywKKyJXQ09SRURVTVAoJG1vZHVsZSwgc3RhdHVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgZHVtcGVkIHRvIGEgY29yZSBmaWxlLiIpOworCisjZGVmaW5lIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYgICAgXAorICAgIHsiV0NPUkVEVU1QIiwgKFB5Q0Z1bmN0aW9uKW9zX1dDT1JFRFVNUCwgTUVUSF9PLCBvc19XQ09SRURVTVBfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0NPUkVEVU1QX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XQ09SRURVTVAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dDT1JFRFVNUF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdDT1JFRFVNUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkNPTlRJTlVFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRkNPTlRJTlVFRF9fZG9jX18sCisiV0lGQ09OVElOVUVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGEgcGFydGljdWxhciBwcm9jZXNzIHdhcyBjb250aW51ZWQgZnJvbSBhIGpvYiBjb250cm9sIHN0b3AuXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgY29udGludWVkIGZyb20gYVxuIgorImpvYiBjb250cm9sIHN0b3AuIik7CisKKyNkZWZpbmUgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRiAgICBcCisgICAgeyJXSUZDT05USU5VRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGQ09OVElOVUVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dJRkNPTlRJTlVFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGQ09OVElOVUVEKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZDT05USU5VRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZDT05USU5VRUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTVE9QUEVEKQorCitQeURvY19TVFJWQVIob3NfV0lGU1RPUFBFRF9fZG9jX18sCisiV0lGU1RPUFBFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBzdG9wcGVkLiIpOworCisjZGVmaW5lIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRlNUT1BQRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU1RPUFBFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGU1RPUFBFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGU1RPUFBFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNUT1BQRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTVE9QUEVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU0lHTkFMRUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZTSUdOQUxFRF9fZG9jX18sCisiV0lGU0lHTkFMRUQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4iKTsKKworI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZTSUdOQUxFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0lGU0lHTkFMRUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU0lHTkFMRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZTSUdOQUxFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkVYSVRFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRkVYSVRFRF9fZG9jX18sCisiV0lGRVhJVEVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgZXhpdGVkIHZpYSB0aGUgZXhpdCgpIHN5c3RlbSBjYWxsLiIpOworCisjZGVmaW5lIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGRVhJVEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkVYSVRFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkVYSVRFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZFWElURURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRkVYSVRFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGRVhJVEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGRVhJVEVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0VYSVRTVEFUVVMpCisKK1B5RG9jX1NUUlZBUihvc19XRVhJVFNUQVRVU19fZG9jX18sCisiV0VYSVRTVEFUVVMoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLiIpOworCisjZGVmaW5lIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRiAgICBcCisgICAgeyJXRVhJVFNUQVRVUyIsIChQeUNGdW5jdGlvbilvc19XRVhJVFNUQVRVUywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dFWElUU1RBVFVTX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XRVhJVFNUQVRVUyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XRVhJVFNUQVRVU19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdFWElUU1RBVFVTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1RFUk1TSUcpCisKK1B5RG9jX1NUUlZBUihvc19XVEVSTVNJR19fZG9jX18sCisiV1RFUk1TSUcoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKKworI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYgICAgXAorICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XVEVSTVNJR19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XVEVSTVNJR19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV1RFUk1TSUcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV1RFUk1TSUdfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXVEVSTVNJRykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdTVE9QU0lHKQorCitQeURvY19TVFJWQVIob3NfV1NUT1BTSUdfX2RvY19fLAorIldTVE9QU0lHKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CisKKyNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGICAgIFwKKyAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1NUT1BTSUdfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV1NUT1BTSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dTVE9QU0lHKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1NUT1BTSUciLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dTVE9QU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1NUT1BTSUcpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX0ZTVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpCisKK1B5RG9jX1NUUlZBUihvc19mc3RhdHZmc19fZG9jX18sCisiZnN0YXR2ZnMoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIHN0YXR2ZnMoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZTVEFUVkZTX01FVEhPRERFRiAgICBcCisgICAgeyJmc3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19mc3RhdHZmcywgTUVUSF9PLCBvc19mc3RhdHZmc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXR2ZnNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXR2ZnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN0YXR2ZnNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpCisKK1B5RG9jX1NUUlZBUihvc19zdGF0dmZzX19kb2NfXywKKyJzdGF0dmZzKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJQZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworI2RlZmluZSBPU19TVEFUVkZTX01FVEhPRERFRiAgICBcCisgICAgeyJzdGF0dmZzIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXR2ZnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0dmZzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXR2ZnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdHZmcyIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZTVEFUVkZTKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdGF0dmZzX2ltcGwobW9kdWxlLCAmcGF0aCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19fZ2V0ZGlza3VzYWdlX19kb2NfXywKKyJfZ2V0ZGlza3VzYWdlKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKworI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZGlza3VzYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZGlza3VzYWdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIFB5X1VOSUNPREUgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1Ol9nZXRkaXNrdXNhZ2UiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRkaXNrdXNhZ2VfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRlBBVEhDT05GKQorCitQeURvY19TVFJWQVIob3NfZnBhdGhjb25mX19kb2NfXywKKyJmcGF0aGNvbmYoJG1vZHVsZSwgZmQsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLiIpOworCisjZGVmaW5lIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYgICAgXAorICAgIHsiZnBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBvc19mcGF0aGNvbmZfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK29zX2ZwYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnBhdGhjb25mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbmFtZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLAorICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2ZwYXRoY29uZl9pbXBsKG1vZHVsZSwgZmQsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZQQVRIQ09ORikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QQVRIQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX3BhdGhjb25mX19kb2NfXywKKyJwYXRoY29uZigkbW9kdWxlLCAvLCBwYXRoLCBuYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuIgorIlxuIgorIklmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCisjZGVmaW5lIE9TX1BBVEhDT05GX01FVEhPRERFRiAgICBcCisgICAgeyJwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19wYXRoY29uZiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3BhdGhjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19wYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGF0aGNvbmYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJwYXRoY29uZiIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZQQVRIQ09ORik7CisgICAgaW50IG5hbWU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wYXRoY29uZl9pbXBsKG1vZHVsZSwgJnBhdGgsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORlNUUikKKworUHlEb2NfU1RSVkFSKG9zX2NvbmZzdHJfX2RvY19fLAorImNvbmZzdHIoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfQ09ORlNUUl9NRVRIT0RERUYgICAgXAorICAgIHsiY29uZnN0ciIsIChQeUNGdW5jdGlvbilvc19jb25mc3RyLCBNRVRIX08sIG9zX2NvbmZzdHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NvbmZzdHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jb25mc3RyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NvbmZzdHJfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKQorCitQeURvY19TVFJWQVIob3Nfc3lzY29uZl9fZG9jX18sCisic3lzY29uZigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIGludGVnZXItdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGICAgIFwKKyAgICB7InN5c2NvbmYiLCAoUHlDRnVuY3Rpb24pb3Nfc3lzY29uZiwgTUVUSF9PLCBvc19zeXNjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19zeXNjb25mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3lzY29uZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuYW1lOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c2NvbmZfaW1wbChtb2R1bGUsIG5hbWUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU0NPTkYpICovCisKK1B5RG9jX1NUUlZBUihvc19hYm9ydF9fZG9jX18sCisiYWJvcnQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFib3J0IHRoZSBpbnRlcnByZXRlciBpbW1lZGlhdGVseS5cbiIKKyJcbiIKKyJUaGlzIGZ1bmN0aW9uIFwnZHVtcHMgY29yZVwnIG9yIG90aGVyd2lzZSBmYWlscyBpbiB0aGUgaGFyZGVzdCB3YXkgcG9zc2libGVcbiIKKyJvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcyBmdW5jdGlvbiBuZXZlciByZXR1cm5zLiIpOworCisjZGVmaW5lIE9TX0FCT1JUX01FVEhPRERFRiAgICBcCisgICAgeyJhYm9ydCIsIChQeUNGdW5jdGlvbilvc19hYm9ydCwgTUVUSF9OT0FSR1MsIG9zX2Fib3J0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19hYm9ydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWJvcnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfYWJvcnRfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVExPQURBVkcpCisKK1B5RG9jX1NUUlZBUihvc19nZXRsb2FkYXZnX19kb2NfXywKKyJnZXRsb2FkYXZnKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYXZlcmFnZSByZWNlbnQgc3lzdGVtIGxvYWQgaW5mb3JtYXRpb24uXG4iCisiXG4iCisiUmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGluIHRoZSBzeXN0ZW0gcnVuIHF1ZXVlIGF2ZXJhZ2VkIG92ZXJcbiIKKyJ0aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBhcyBhIHR1cGxlIG9mIHRocmVlIGZsb2F0cy5cbiIKKyJSYWlzZXMgT1NFcnJvciBpZiB0aGUgbG9hZCBhdmVyYWdlIHdhcyB1bm9idGFpbmFibGUuIik7CisKKyNkZWZpbmUgT1NfR0VUTE9BREFWR19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0bG9hZGF2ZyIsIChQeUNGdW5jdGlvbilvc19nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgb3NfZ2V0bG9hZGF2Z19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9hZGF2Z19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9hZGF2ZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRsb2FkYXZnX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKSAqLworCitQeURvY19TVFJWQVIob3NfZGV2aWNlX2VuY29kaW5nX19kb2NfXywKKyJkZXZpY2VfZW5jb2RpbmcoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZW5jb2Rpbmcgb2YgYSB0ZXJtaW5hbFwncyBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgdGVybWluYWwuXG4iCisiSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuIik7CisKKyNkZWZpbmUgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRiAgICBcCisgICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZGV2aWNlX2VuY29kaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2RldmljZV9lbmNvZGluZ19pbXBsKG1vZHVsZSwgZmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUkVTVUlEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmVzdWlkX19kb2NfXywKKyJzZXRyZXN1aWQoJG1vZHVsZSwgcnVpZCwgZXVpZCwgc3VpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cmVzdWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlc3VpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXN1aWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQsIHVpZF90IHN1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzdWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHJ1aWQ7CisgICAgdWlkX3QgZXVpZDsKKyAgICB1aWRfdCBzdWlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXN1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQsIHN1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVTVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFU0dJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJlc2dpZF9fZG9jX18sCisic2V0cmVzZ2lkKCRtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfU0VUUkVTR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZXNnaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0cmVzZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHJlc2dpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgcmdpZCwgZ2lkX3QgZWdpZCwgZ2lkX3Qgc2dpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXNnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgZ2lkX3QgcmdpZDsKKyAgICBnaWRfdCBlZ2lkOworICAgIGdpZF90IHNnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc2dpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCwgc2dpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRSRVNHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkVTVUlEKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmVzdWlkX19kb2NfXywKKyJnZXRyZXN1aWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkVTVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyZXN1aWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmVzdWlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cmVzdWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJlc3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRyZXN1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFJFU1VJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRSRVNHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRyZXNnaWRfX2RvY19fLAorImdldHJlc2dpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkVTR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyZXNnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0cmVzZ2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJlc2dpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRyZXNnaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFJFU0dJRCkgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX2dldHhhdHRyX19kb2NfXywKKyJnZXR4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgZ2V0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKyNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0eGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKKyAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgLyogQ2xlYW51cCBmb3IgYXR0cmlidXRlICovCisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX3NldHhhdHRyX19kb2NfXywKKyJzZXR4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLFxuIgorIiAgICAgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cbiIKKyJcbiIKKyJwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX1NFVFhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXR4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKKyAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOworICAgIFB5X2J1ZmZlciB2YWx1ZSA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCAmdmFsdWUsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICAvKiBDbGVhbnVwIGZvciB2YWx1ZSAqLworICAgIGlmICh2YWx1ZS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworI2lmIGRlZmluZWQoVVNFX1hBVFRSUykKKworUHlEb2NfU1RSVkFSKG9zX3JlbW92ZXhhdHRyX19kb2NfXywKKyJyZW1vdmV4YXR0cigkbW9kdWxlLCAvLCBwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cbiIKKyJcbiIKKyJwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG4iCisiICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmV4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZleGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZleGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19saXN0eGF0dHJfX2RvY19fLAorImxpc3R4YXR0cigkbW9kdWxlLCAvLCBwYXRoPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJpZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3R4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3R4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3R4YXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdHhhdHRyIiwgInBhdGgiLCAxLCAxKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3R4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChVU0VfWEFUVFJTKSAqLworCitQeURvY19TVFJWQVIob3NfdXJhbmRvbV9fZG9jX18sCisidXJhbmRvbSgkbW9kdWxlLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKworI2RlZmluZSBPU19VUkFORE9NX01FVEhPRERFRiAgICBcCisgICAgeyJ1cmFuZG9tIiwgKFB5Q0Z1bmN0aW9uKW9zX3VyYW5kb20sIE1FVEhfTywgb3NfdXJhbmRvbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXJhbmRvbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191cmFuZG9tKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnVyYW5kb20iLCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc191cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfY3B1X2NvdW50X19kb2NfXywKKyJjcHVfY291bnQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuIik7CisKKyNkZWZpbmUgT1NfQ1BVX0NPVU5UX01FVEhPRERFRiAgICBcCisgICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pb3NfY3B1X2NvdW50LCBNRVRIX05PQVJHUywgb3NfY3B1X2NvdW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jcHVfY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NwdV9jb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19jcHVfY291bnRfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIob3NfZ2V0X2luaGVyaXRhYmxlX19kb2NfXywKKyJnZXRfaW5oZXJpdGFibGUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0dFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldF9pbmhlcml0YWJsZSwgTUVUSF9PLCBvc19nZXRfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldF9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3Nfc2V0X2luaGVyaXRhYmxlX19kb2NfXywKKyJzZXRfaW5oZXJpdGFibGUoJG1vZHVsZSwgZmQsIGluaGVyaXRhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX1NFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldF9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGluaGVyaXRhYmxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGluaGVyaXRhYmxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLAorICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkLCBpbmhlcml0YWJsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAorImdldF9oYW5kbGVfaW5oZXJpdGFibGUoJG1vZHVsZSwgaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfTywgb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCisic2V0X2hhbmRsZV9pbmhlcml0YWJsZSgkbW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgaGFuZGxlLiIpOworCisjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnQgaW5oZXJpdGFibGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAicDpzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwKKyAgICAgICAgJmhhbmRsZSwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgaW5oZXJpdGFibGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ1RFUk1JRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NURVJNSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ1RFUk1JRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNIRElSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSERJUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNITU9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNITU9EX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSE1PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENITU9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xDSE1PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hGTEFHU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NIRkxBR1NfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ0hGTEFHU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENIRkxBR1NfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hGTEFHU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hST09UX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NIUk9PVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlNZTkNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lOQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZTkNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkRBVEFTWU5DX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ0hPV05fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19DSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRkNIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZDSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTENIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENIT1dOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xDSE9XTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTElOS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTElOS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0lTRElSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0lTRElSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19JU0RJUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTklDRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX05JQ0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTklDRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRQUklPUklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQUklPUklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRQUklPUklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lTVEVNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU1RFTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVU5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19VTkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19VTkFNRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRVhFQ1ZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19FWEVDVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19FWEVDVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRVhFQ1ZFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0VYRUNWRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1BBV05WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1BBV05WX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NQQVdOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1BBV05WRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NQQVdOVkVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1BBV05WRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SSzFfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLMV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GT1JLMV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZPUktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfT1BFTlBUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX09QRU5QVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfT1BFTlBUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRk9SS1BUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZPUktQVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SS1BUWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VURUdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VURUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VURVVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VURVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdST1VQU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBHUlBfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFBHUlBfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBQSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUFBJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUTE9HSU5fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRMT0dJTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRMT0dJTl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfS0lMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0tJTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfS0lMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfS0lMTFBHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfS0lMTFBHX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0tJTExQR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUExPQ0tfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QTE9DS19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QTE9DS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VURVVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VURVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VURUdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VURUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRSRVVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVVJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRSRUdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRUdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUR1JPVVBTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUR1JPVVBTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEdST1VQU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVDNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUM19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVDRfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUNF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVElEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVFBJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lNTElOS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZTUxJTktfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lNTElOS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVElNRVNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19USU1FU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19USU1FU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUU0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUU0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFNJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUU0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUU0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFNJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFBHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUEdJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVENHRVRQR1JQX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVENHRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RDR0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVENTRVRQR1JQX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVENTRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RDU0VUUEdSUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTE9DS0ZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MT0NLRl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MT0NLRl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUkVBRFZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19SRUFEVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19SRUFEVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFJFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUElQRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BJUEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUElQRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUElQRTJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QSVBFMl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QSVBFMl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1JJVEVWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1JJVEVWX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dSSVRFVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFdSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFdSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BXUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUtGSUZPX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUtGSUZPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX01LRklGT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUtOT0RfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NS05PRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUFKT1JfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NQUpPUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NQUpPUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUlOT1JfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NSU5PUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NSU5PUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTUFLRURFVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX01BS0VERVZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUFLRURFVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19UUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UUlVOQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUFVURU5WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BVVEVOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfVU5TRVRFTlZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19VTlNFVEVOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19VTlNFVEVOVl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dDT1JFRFVNUF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRkVYSVRFRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XRVhJVFNUQVRVU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1RFUk1TSUdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XVEVSTVNJR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfV1NUT1BTSUdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XU1RPUFNJR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XU1RPUFNJR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlNUQVRWRlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GU1RBVFZGU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GU1RBVFZGU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1RBVFZGU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NUQVRWRlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1RBVFZGU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfRlBBVEhDT05GX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlBBVEhDT05GX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUEFUSENPTkZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QQVRIQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfQ09ORlNUUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NPTkZTVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ09ORlNUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU1lTQ09ORl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lTQ09ORl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9BREFWR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFJFU1VJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUUkVTR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVTR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFJFU0dJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJFU1VJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUUkVTR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkVTR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJFU0dJRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfTElTVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTElTVFhBVFRSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xJU1RYQVRUUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjNmOTJiMmQyZTJjM2ZlMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGUyZTRmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApAQCAtMCwwICsxLDcxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHdkX2dldHB3dWlkX19kb2NfXywKKyJnZXRwd3VpZCgkbW9kdWxlLCB1aWRvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyB1c2VyIElELlxuIgorIlxuIgorIlNlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHd1aWQiLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3dWlkLCBNRVRIX08sIHB3ZF9nZXRwd3VpZF9fZG9jX199LAorCitQeURvY19TVFJWQVIocHdkX2dldHB3bmFtX19kb2NfXywKKyJnZXRwd25hbSgkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLlxuIgorIlxuIgorIlNlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV05BTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHduYW0iLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3bmFtLCBNRVRIX08sIHB3ZF9nZXRwd25hbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3bmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwd2RfZ2V0cHduYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ18pCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB3ZF9nZXRwd25hbV9pbXBsKG1vZHVsZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVFBXRU5UKQorCitQeURvY19TVFJWQVIocHdkX2dldHB3YWxsX19kb2NfXywKKyJnZXRwd2FsbCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cbiIKKyJcbiIKKyJTZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisKKyNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwd2FsbCIsIChQeUNGdW5jdGlvbilwd2RfZ2V0cHdhbGwsIE1FVEhfTk9BUkdTLCBwd2RfZ2V0cHdhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd2FsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3YWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB3ZF9nZXRwd2FsbF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUFdFTlQpICovCisKKyNpZm5kZWYgUFdEX0dFVFBXQUxMX01FVEhPRERFRgorICAgICNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFBXRF9HRVRQV0FMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmVkMGVjZjM0ZmQzZjk4ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaCBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OWM1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaApAQCAtMCwwICsxLDI4NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX19kb2NfXywKKyJQYXJzZSgkc2VsZiwgZGF0YSwgaXNmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnNlIFhNTCBkYXRhLlxuIgorIlxuIgorImBpc2ZpbmFsXCcgc2hvdWxkIGJlIHRydWUgYXQgZW5kIG9mIGlucHV0LiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1BBUlNFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9QYXJzZSwgTUVUSF9WQVJBUkdTLCBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpc2ZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBpbnQgaXNmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpQYXJzZSIsCisgICAgICAgICZkYXRhLCAmaXNmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHNlbGYsIGRhdGEsIGlzZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGVfX2RvY19fLAorIlBhcnNlRmlsZSgkc2VsZiwgZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnNlIFhNTCBkYXRhIGZyb20gZmlsZS1saWtlIG9iamVjdC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRUZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IlBhcnNlRmlsZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGUsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX19kb2NfXywKKyJTZXRCYXNlKCRzZWxmLCBiYXNlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBiYXNlIFVSTCBmb3IgdGhlIHBhcnNlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRCQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRCYXNlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2UsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpiYXNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqYmFzZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpTZXRCYXNlIiwgJmJhc2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9pbXBsKHNlbGYsIGJhc2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX19kb2NfXywKKyJHZXRCYXNlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9HRVRCQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRCYXNlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2UsIE1FVEhfTk9BUkdTLCBweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X19kb2NfXywKKyJHZXRJbnB1dENvbnRleHQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC5cbiIKKyJcbiIKKyJJZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnXG4iCisiZm9yIGFuIGVsZW1lbnQgd2l0aCBtYW55IGF0dHJpYnV0ZXMpLCBub3QgYWxsIG9mIHRoZSB0ZXh0IG1heSBiZSBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfR0VUSU5QVVRDT05URVhUX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRJbnB1dENvbnRleHQiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0LCBNRVRIX05PQVJHUywgcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19fLAorIkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlKCRzZWxmLCBjb250ZXh0LCBlbmNvZGluZz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGFyc2VyIGZvciBwYXJzaW5nIGFuIGV4dGVybmFsIGVudGl0eSBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfRVhURVJOQUxFTlRJVFlQQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlLCBNRVRIX1ZBUkFSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqY29udGV4dDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCisgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbChzZWxmLCBjb250ZXh0LCBlbmNvZGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX18sCisiU2V0UGFyYW1FbnRpdHlQYXJzaW5nKCRzZWxmLCBmbGFnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCkuXG4iCisiXG4iCisiUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUixcbiIKKyJYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUgYW5kXG4iCisiWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX0FMV0FZUy4gUmV0dXJucyB0cnVlIGlmIHNldHRpbmcgdGhlIGZsYWdcbiIKKyJ3YXMgc3VjY2Vzc2Z1bC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9TRVRQQVJBTUVOVElUWVBBUlNJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFBhcmFtRW50aXR5UGFyc2luZyIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmcsIE1FVEhfTywgcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmbGFnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHNlbGYsIGZsYWcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiAoWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUpCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX19kb2NfXywKKyJVc2VGb3JlaWduRFREKCRzZWxmLCBmbGFnPVRydWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHByb3ZpZGUgYW4gYXJ0aWZpY2lhbCBleHRlcm5hbCBzdWJzZXQgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuXG4iCisiXG4iCisiVGhpcyByZWFkaWx5IGFsbG93cyB0aGUgdXNlIG9mIGEgXCdkZWZhdWx0XCcgZG9jdW1lbnQgdHlwZSBjb250cm9sbGVkIGJ5IHRoZVxuIgorImFwcGxpY2F0aW9uLCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGVcbiIKKyJpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLiBcJ2ZsYWdcJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRiAgICBcCisgICAgeyJVc2VGb3JlaWduRFREIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVEQsIE1FVEhfVkFSQVJHUywgcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOlVzZUZvcmVpZ25EVEQiLAorICAgICAgICAmZmxhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX2ltcGwoc2VsZiwgZmxhZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChYTUxfQ09NQklORURfVkVSU0lPTiA+PSAxOTUwNSkgKi8KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19fX2RvY19fLAorIl9fZGlyX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX19fRElSX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGlyX18iLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfX19kaXJfXywgTUVUSF9OT0FSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX18sCisiUGFyc2VyQ3JlYXRlKCRtb2R1bGUsIC8sIGVuY29kaW5nPU5vbmUsIG5hbWVzcGFjZV9zZXBhcmF0b3I9Tm9uZSxcbiIKKyIgICAgICAgICAgICAgaW50ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9QQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmludGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKG1vZHVsZSwgZW5jb2RpbmcsIG5hbWVzcGFjZV9zZXBhcmF0b3IsIGludGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19fLAorIkVycm9yU3RyaW5nKCRtb2R1bGUsIGNvZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHN0cmluZyBlcnJvciBmb3IgZ2l2ZW4gbnVtYmVyLiIpOworCisjZGVmaW5lIFBZRVhQQVRfRVJST1JTVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7IkVycm9yU3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfRXJyb3JTdHJpbmcsIE1FVEhfTywgcHlleHBhdF9FcnJvclN0cmluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9FcnJvclN0cmluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X0Vycm9yU3RyaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyBjb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9FcnJvclN0cmluZ19pbXBsKG1vZHVsZSwgY29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgorICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjRkOTljOTcwMmQ4YTZjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NjViYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9jb3B5LCBNRVRIX05PQVJHUywgU0hBMVR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfY29weV9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfY29weShTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEExVHlwZV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIFNIQTFUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTFUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTFUeXBlX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEExVHlwZV9kaWdlc3QoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMVR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEExVHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBTSEExVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEExVHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfaGV4ZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTFUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBTSEExVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEExVHlwZV91cGRhdGUsIE1FVEhfTywgU0hBMVR5cGVfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfc2hhMV9zaGExX19kb2NfXywKKyJzaGExKCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTFfU0hBMV9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTFfc2hhMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTFfc2hhMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTFfc2hhMShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhMV9zaGExX2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUxOTEwMmYzMTIwNDkwYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWZlMTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApAQCAtMCwwICsxLDEyMyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2NvcHksIE1FVEhfTk9BUkdTLCBTSEEyNTZUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfY29weV9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEEyNTZUeXBlX2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEEyNTZUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1NlR5cGVfZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBMjU2VHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTI1NlR5cGVfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMjU2VHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTI1NlR5cGVfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTI1NlR5cGVfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTI1NlR5cGVfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEEyNTZUeXBlX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTI1Nl9zaGEyNTZfX2RvY19fLAorInNoYTI1NigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEyNTZfU0hBMjU2X01FVEhPRERFRiAgICBcCisgICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMjU2X3NoYTI1Nl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTI1Nl9zaGEyNTZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjU2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyNTZfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEyNTZfc2hhMjI0X19kb2NfXywKKyJzaGEyMjQoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjI0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTIyNChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjI0IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjI0X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU0Y2VkZjNiNjMyYzdiMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzA4NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApAQCAtMCwwICsxLDE3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfY29weSwgTUVUSF9OT0FSR1MsIFNIQTUxMlR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTUxMlR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyVHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBNTEyVHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBNTEyVHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBNTEyVHlwZV9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoX3NoYTUxMl9zaGE1MTJfX2RvY19fLAorInNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRiAgICBcCisgICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGE1MTJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhNTEyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGE1MTJfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTM4NF9fZG9jX18sCisic2hhMzg0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhMzg0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhNTEyX3NoYTM4NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGEzODQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTM4NCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTM4NF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM3ZDM4NTczMWZlZTdjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzA3ZWYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApAQCAtMCwwICsxLDQzMiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoSEFWRV9BTEFSTSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9hbGFybV9fZG9jX18sCisiYWxhcm0oJG1vZHVsZSwgc2Vjb25kcywgLylcbiIKKyItLVxuIgorIlxuIgorIkFycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4iKTsKKworI2RlZmluZSBTSUdOQUxfQUxBUk1fTUVUSE9EREVGICAgIFwKKyAgICB7ImFsYXJtIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9hbGFybSwgTUVUSF9PLCBzaWduYWxfYWxhcm1fX2RvY19ffSwKKworc3RhdGljIGxvbmcKK3NpZ25hbF9hbGFybV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzZWNvbmRzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9hbGFybShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzZWNvbmRzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBzaWduYWxfYWxhcm1faW1wbChtb2R1bGUsIHNlY29uZHMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0FMQVJNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BBVVNFKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3BhdXNlX19kb2NfXywKKyJwYXVzZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLiIpOworCisjZGVmaW5lIFNJR05BTF9QQVVTRV9NRVRIT0RERUYgICAgXAorICAgIHsicGF1c2UiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLCBNRVRIX05PQVJHUywgc2lnbmFsX3BhdXNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcGF1c2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wYXVzZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBzaWduYWxfcGF1c2VfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BBVVNFKSAqLworCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ25hbF9fZG9jX18sCisic2lnbmFsKCRtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLlxuIgorIlxuIgorIlRoZSBhY3Rpb24gY2FuIGJlIFNJR19ERkwsIFNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC5cbiIKKyJUaGUgcHJldmlvdXMgYWN0aW9uIGlzIHJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLlxuIgorIlxuIgorIioqKiBJTVBPUlRBTlQgTk9USUNFICoqKlxuIgorIkEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czpcbiIKKyJ0aGUgZmlyc3QgaXMgdGhlIHNpZ25hbCBudW1iZXIsIHRoZSBzZWNvbmQgaXMgdGhlIGludGVycnVwdGVkIHN0YWNrIGZyYW1lLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdOQUxfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ25hbCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnbmFsLCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWduYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBQeU9iamVjdCAqaGFuZGxlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnbmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisgICAgUHlPYmplY3QgKmhhbmRsZXI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsCisgICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9nZXRzaWduYWxfX2RvY19fLAorImdldHNpZ25hbCgkbW9kdWxlLCBzaWduYWxudW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgY2FuIGJlOlxuIgorIiAgU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWRcbiIKKyIgIFNJR19ERkwgLS0gaWYgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgc2lnbmFsIGlzIGluIGVmZmVjdFxuIgorIiAgTm9uZSAgICAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0XG4iCisiICBhbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyIik7CisKKyNkZWZpbmUgU0lHTkFMX0dFVFNJR05BTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c2lnbmFsIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9nZXRzaWduYWwsIE1FVEhfTywgc2lnbmFsX2dldHNpZ25hbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldHNpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldHNpZ25hbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0c2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHSU5URVJSVVBUKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ2ludGVycnVwdF9fZG9jX18sCisic2lnaW50ZXJydXB0KCRtb2R1bGUsIHNpZ25hbG51bSwgZmxhZywgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91ci5cbiIKKyJcbiIKKyJJZiBmbGFnIGlzIEZhbHNlLCBzeXN0ZW0gY2FsbHMgd2lsbCBiZSByZXN0YXJ0ZWQgd2hlbiBpbnRlcnJ1cHRlZCBieVxuIgorInNpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzIHdpbGwgYmUgaW50ZXJydXB0ZWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lnaW50ZXJydXB0IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdpbnRlcnJ1cHQsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ2ludGVycnVwdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ2ludGVycnVwdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0sIGludCBmbGFnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdpbnRlcnJ1cHQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHNpZ25hbG51bTsKKyAgICBpbnQgZmxhZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwKKyAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ2ludGVycnVwdF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBmbGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR0lOVEVSUlVQVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRJVElNRVIpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2V0aXRpbWVyX19kb2NfXywKKyJzZXRpdGltZXIoJG1vZHVsZSwgd2hpY2gsIHNlY29uZHMsIGludGVydmFsPTAuMCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldHMgZ2l2ZW4gaXRpbWVyIChvbmUgb2YgSVRJTUVSX1JFQUwsIElUSU1FUl9WSVJUVUFMIG9yIElUSU1FUl9QUk9GKS5cbiIKKyJcbiIKKyJUaGUgdGltZXIgd2lsbCBmaXJlIGFmdGVyIHZhbHVlIHNlY29uZHMgYW5kIGFmdGVyIHRoYXQgZXZlcnkgaW50ZXJ2YWwgc2Vjb25kcy5cbiIKKyJUaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLlxuIgorIlxuIgorIlJldHVybnMgb2xkIHZhbHVlcyBhcyBhIHR1cGxlOiAoZGVsYXksIGludGVydmFsKS4iKTsKKworI2RlZmluZSBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRpdGltZXIiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NldGl0aW1lciwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2V0aXRpbWVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBkb3VibGUgc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NldGl0aW1lcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgd2hpY2g7CisgICAgZG91YmxlIHNlY29uZHM7CisgICAgZG91YmxlIGludGVydmFsID0gMC4wOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsCisgICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCwgc2Vjb25kcywgaW50ZXJ2YWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUSVRJTUVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVElUSU1FUikKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9nZXRpdGltZXJfX2RvY19fLAorImdldGl0aW1lcigkbW9kdWxlLCB3aGljaCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CisKKyNkZWZpbmUgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0aXRpbWVyIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9nZXRpdGltZXIsIE1FVEhfTywgc2lnbmFsX2dldGl0aW1lcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfZ2V0aXRpbWVyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHdoaWNoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRJVElNRVIpICovCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfc2lnbWFza19fZG9jX18sCisicHRocmVhZF9zaWdtYXNrKCRtb2R1bGUsIGhvdywgbWFzaywgLylcbiIKKyItLVxuIgorIlxuIgorIkZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKworI2RlZmluZSBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRiAgICBcCisgICAgeyJwdGhyZWFkX3NpZ21hc2siLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGhvdywgUHlPYmplY3QgKm1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfc2lnbWFzayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaG93OworICAgIFB5T2JqZWN0ICptYXNrOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLAorICAgICAgICAmaG93LCAmbWFzaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwobW9kdWxlLCBob3csIG1hc2spOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1BFTkRJTkcpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lncGVuZGluZ19fZG9jX18sCisic2lncGVuZGluZygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuXG4iCisiXG4iCisiUmV0dXJucyBhIHNldCBvZiBzaWduYWwgbnVtYmVycyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0b1xuIgorInRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYgICAgXAorICAgIHsic2lncGVuZGluZyIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lncGVuZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc2lnbmFsX3NpZ3BlbmRpbmdfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1BFTkRJTkcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0X19kb2NfXywKKyJzaWd3YWl0KCRtb2R1bGUsIHNpZ3NldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGEgc2lnbmFsLlxuIgorIlxuIgorIlN1c3BlbmQgZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgZGVsaXZlcnkgb2Ygb25lIG9mIHRoZVxuIgorInNpZ25hbHMgc3BlY2lmaWVkIGluIHRoZSBzaWduYWwgc2V0IHNpZ3NldC4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWxcbiIKKyJhbmQgcmV0dXJucyB0aGUgc2lnbmFsIG51bWJlci4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lnd2FpdCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdCwgTUVUSF9PLCBzaWduYWxfc2lnd2FpdF9fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1dBSVQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fX2RvY19fLAorInNpZ3dhaXRpbmZvKCRtb2R1bGUsIHNpZ3NldCwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgc3luY2hyb25vdXNseSB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXMgZGVsaXZlcmVkLlxuIgorIlxuIgorIlJldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRiAgICBcCisgICAgeyJzaWd3YWl0aW5mbyIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sIE1FVEhfTywgc2lnbmFsX3NpZ3dhaXRpbmZvX19kb2NfX30sCisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9fZG9jX18sCisic2lndGltZWR3YWl0KCRtb2R1bGUsIHNpZ3NldCwgdGltZW91dCwgLylcbiIKKyItLVxuIgorIlxuIgorIkxpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0LlxuIgorIlxuIgorIlRoZSB0aW1lb3V0IGlzIHNwZWNpZmllZCBpbiBzZWNvbmRzLCB3aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYWxsb3dlZC4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRiAgICBcCisgICAgeyJzaWd0aW1lZHdhaXQiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lndGltZWR3YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGltZW91dF9vYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2lnc2V0OworICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iajsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNpZ3RpbWVkd2FpdCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lndGltZWR3YWl0X2ltcGwobW9kdWxlLCBzaWdzZXQsIHRpbWVvdXRfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX2tpbGxfX2RvY19fLAorInB0aHJlYWRfa2lsbCgkbW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYgICAgXAorICAgIHsicHRocmVhZF9raWxsIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgdGhyZWFkX2lkLCBpbnQgc2lnbmFsbnVtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyB0aHJlYWRfaWQ7CisgICAgaW50IHNpZ25hbG51bTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwKKyAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9raWxsX2ltcGwobW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSkgKi8KKworI2lmbmRlZiBTSUdOQUxfQUxBUk1fTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfQUxBUk1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX0FMQVJNX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BBVVNFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfR0VUSVRJTUVSX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfR0VUSVRJTUVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdXQUlUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdXQUlUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHV0FJVElORk9fTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHV0FJVElORk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOTkyNzhjMTZjNDBlYTQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkMThkYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUU1BOQU0pCisKK1B5RG9jX1NUUlZBUihzcHdkX2dldHNwbmFtX19kb2NfXywKKyJnZXRzcG5hbSgkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS5cbiIKKyJcbiIKKyJTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNwbmFtIiwgKFB5Q0Z1bmN0aW9uKXNwd2RfZ2V0c3BuYW0sIE1FVEhfTywgc3B3ZF9nZXRzcG5hbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc3B3ZF9nZXRzcG5hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3B3ZF9nZXRzcG5hbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnXykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc3B3ZF9nZXRzcG5hbV9pbXBsKG1vZHVsZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNQTkFNKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNQRU5UKQorCitQeURvY19TVFJWQVIoc3B3ZF9nZXRzcGFsbF9fZG9jX18sCisiZ2V0c3BhbGwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuIgorIlxuIgorIlNlZSBgaGVscChzcHdkKWAgZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisKKyNkZWZpbmUgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0c3BhbGwiLCAoUHlDRnVuY3Rpb24pc3B3ZF9nZXRzcGFsbCwgTUVUSF9OT0FSR1MsIHNwd2RfZ2V0c3BhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BhbGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc3B3ZF9nZXRzcGFsbF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUU1BFTlQpICovCisKKyNpZm5kZWYgU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmMxNzg4MzA0MTNmNzc2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmggYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyMGMxZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaApAQCAtMCwwICsxLDM2OCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfXywKKyJkZWNpbWFsKCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sXG4iCisiVmFsdWVFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ0lNQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY2ltYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY2ltYWwsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNpbWFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRlY2ltYWwiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9fZG9jX18sCisiZGlnaXQoJHNlbGYsIGNociwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRpZ2l0IHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ESUdJVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnaXQiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RpZ2l0LCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2RpZ2l0X2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkaWdpdCIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX19kb2NfXywKKyJudW1lcmljKCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlLlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgZmxvYXQuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9OVU1FUklDX01FVEhPRERFRiAgICBcCisgICAgeyJudW1lcmljIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9udW1lcmljLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpudW1lcmljIiwKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfX2RvY19fLAorImNhdGVnb3J5KCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBnZW5lcmFsIGNhdGVnb3J5IGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfQ0FURUdPUllfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhdGVnb3J5IiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeSwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNhdGVnb3J5IiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9fZG9jX18sCisiYmlkaXJlY3Rpb25hbCgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuXG4iCisiXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0JJRElSRUNUSU9OQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImJpZGlyZWN0aW9uYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWwsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKHNlbGYsIGNocik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfX2RvY19fLAorImNvbWJpbmluZygkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIlxuIgorIlJldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXMgZGVmaW5lZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfQ09NQklOSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJjb21iaW5pbmciLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZywgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19pbXBsKHNlbGYsIGNocik7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfX2RvY19fLAorIm1pcnJvcmVkKCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIlxuIgorIlJldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgYSBcIm1pcnJvcmVkXCJcbiIKKyJjaGFyYWN0ZXIgaW4gYmlkaXJlY3Rpb25hbCB0ZXh0LCAwIG90aGVyd2lzZS4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTUlSUk9SRURfTUVUSE9EREVGICAgIFwKKyAgICB7Im1pcnJvcmVkIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9taXJyb3JlZCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfX2RvY19ffSwKKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfaW1wbChzZWxmLCBjaHIpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfX2RvY19fLAorImVhc3RfYXNpYW5fd2lkdGgoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGVhc3QgYXNpYW4gd2lkdGggYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9FQVNUX0FTSUFOX1dJRFRIX01FVEhPRERFRiAgICBcCisgICAgeyJlYXN0X2FzaWFuX3dpZHRoIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9fZG9jX18sCisiZGVjb21wb3NpdGlvbigkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuXG4iCisiXG4iCisiQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGluIGNhc2Ugbm8gc3VjaCBtYXBwaW5nIGlzIGRlZmluZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ09NUE9TSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29tcG9zaXRpb24iLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb24sIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKHNlbGYsIGNocik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfX2RvY19fLAorIm5vcm1hbGl6ZSgkc2VsZiwgZm9ybSwgdW5pc3RyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBub3JtYWwgZm9ybSBcJ2Zvcm1cJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci5cbiIKKyJcbiIKKyJWYWxpZCB2YWx1ZXMgZm9yIGZvcm0gYXJlIFwnTkZDXCcsIFwnTkZLQ1wnLCBcJ05GRFwnLCBhbmQgXCdORktEXCcuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX05PUk1BTElaRV9NRVRIT0RERUYgICAgXAorICAgIHsibm9ybWFsaXplIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemUsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpmb3JtOworICAgIFB5T2JqZWN0ICppbnB1dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCisgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX2ltcGwoc2VsZiwgZm9ybSwgaW5wdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbmFtZV9fZG9jX18sCisibmFtZSgkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGEgc3RyaW5nLlxuIgorIlxuIgorIklmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsibmFtZSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbmFtZSwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bmFtZSIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2xvb2t1cF9fZG9jX18sCisibG9va3VwKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS5cbiIKKyJcbiIKKyJJZiBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4gdGhlXG4iCisiY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIEtleUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTE9PS1VQX01FVEhPRERFRiAgICBcCisgICAgeyJsb29rdXAiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2xvb2t1cCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoc2VsZiwgbmFtZSwgbmFtZV9sZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGY4ZGEzM2M2YmM2ZWZjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCmluZGV4IGY1NGE4MDUuLjM1NjYxYTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCkBAIC0yNiw4ICsyNiw3IEBACiAgICAgUHlfYnVmZmVyIGJ5dGVzID0ge05VTEwsIE5VTEx9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp8aTpjb21wcmVzcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpOmNvbXByZXNzIiwKICAgICAgICAgJmJ5dGVzLCAmbGV2ZWwpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmJ5dGVzLCBsZXZlbCk7CkBAIC01Nyw3ICs1Niw4IEBACiAgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLCB1bnNpZ25lZCBpbnQgYnVmc2l6ZSk7Cit6bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidWZzaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTY3LDggKzY3LDcgQEAKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgdW5zaWduZWQgaW50IGJ1ZnNpemUgPSBERUZfQlVGX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfGlPJjpkZWNvbXByZXNzIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGlPJjpkZWNvbXByZXNzIiwKICAgICAgICAgJmRhdGEsICZ3Yml0cywgdWludF9jb252ZXJ0ZXIsICZidWZzaXplKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfZGVjb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIHdiaXRzLCBidWZzaXplKTsKQEAgLTExMSw3ICsxMTAsOCBAQAogICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpOworemxpYl9jb21wcmVzc29ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfY29tcHJlc3NvYmooUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xMjUsOCArMTI1LDcgQEAKICAgICBpbnQgc3RyYXRlZ3kgPSBaX0RFRkFVTFRfU1RSQVRFR1k7CiAgICAgUHlfYnVmZmVyIHpkaWN0ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCiAgICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIGxldmVsLCBtZXRob2QsIHdiaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksICZ6ZGljdCk7CkBAIC0xNjUsOCArMTY0LDcgQEAKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgUHlPYmplY3QgKnpkaWN0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAogICAgICAgICAmd2JpdHMsICZ6ZGljdCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIHdiaXRzLCB6ZGljdCk7CkBAIC0xODksMjAgKzE4NywxOCBAQAogIkNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGNsZWFyIHRoZXNlIGJ1ZmZlcnMuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9Db21wcmVzc19jb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0NvbXByZXNzX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0NvbXByZXNzX2NvbXByZXNzLCBNRVRIX08sIHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9Db21wcmVzc19jb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3psaWJfQ29tcHJlc3NfY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKQEAgLTIzNSw3ICsyMzEsOCBAQAogICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKTsKK3psaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTI0NCw4ICsyNDEsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp8TyY6ZGVjb21wcmVzcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxPJjpkZWNvbXByZXNzIiwKICAgICAgICAgJmRhdGEsIHVpbnRfY29udmVydGVyLCAmbWF4X2xlbmd0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKQEAgLTI4Miw4ICsyNzgsNyBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtb2RlID0gWl9GSU5JU0g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInxpOmZsdXNoIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmZsdXNoIiwKICAgICAgICAgJm1vZGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIG1vZGUpOwpAQCAtMzE0LDEwICszMDksNiBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX1pMSUJfQ09QWSkgKi8KIAotI2lmbmRlZiBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCi0gICAgI2RlZmluZSBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KLQogI2lmIGRlZmluZWQoSEFWRV9aTElCX0NPUFkpCiAKIFB5RG9jX1NUUlZBUih6bGliX0RlY29tcHJlc3NfY29weV9fZG9jX18sCkBAIC0zNDAsMTAgKzMzMSw2IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfWkxJQl9DT1BZKSAqLwogCi0jaWZuZGVmIFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX0NPUFlfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoWkxJQl9ERUNPTVBSRVNTX0NPUFlfTUVUSE9EREVGKSAqLwotCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2ZsdXNoX19kb2NfXywKICJmbHVzaCgkc2VsZiwgbGVuZ3RoPXpsaWIuREVGX0JVRl9TSVpFLCAvKVxuIgogIi0tXG4iCkBAIC0zNjUsOCArMzUyLDcgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoID0gREVGX0JVRl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ8TyY6Zmx1c2giLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmZsdXNoIiwKICAgICAgICAgdWludF9jb252ZXJ0ZXIsICZsZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbGVuZ3RoKTsKQEAgLTM5OSw4ICszODUsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfEk6YWRsZXIzMiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmFkbGVyMzIiLAogICAgICAgICAmZGF0YSwgJnZhbHVlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfYWRsZXIzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKQEAgLTQzNyw4ICs0MjIsNyBAQAogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfEk6Y3JjMzIiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCiAgICAgICAgICZkYXRhLCAmdmFsdWUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKQEAgLTQ1MCw0ICs0MzQsOCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzk0NzM3MjFjYTdjOTYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKworI2lmbmRlZiBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NmVkMTE0N2JiYmI0Nzg4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY21hdGhtb2R1bGUuYyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwppbmRleCBlYjI4NTNjLi5kMTJlNGM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCkBAIC04LDYgKzgsNDAgQEAKICAgIGZsb2F0LmguICBXZSBhc3N1bWUgdGhhdCBGTFRfUkFESVggaXMgZWl0aGVyIDIgb3IgMTYuICovCiAjaW5jbHVkZSA8ZmxvYXQuaD4KIAorI2luY2x1ZGUgImNsaW5pYy9jbWF0aG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgY21hdGgKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTMwOGQ2ODM5ZjRhNDYzMzNdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgUHlfY29tcGxleF9wcm90ZWN0ZWRfY29udmVydGVyKFB5X2NvbXBsZXhfY29udmVydGVyKToKKyAgICBkZWYgbW9kaWZ5KHNlbGYpOgorICAgICAgICByZXR1cm4gJ2Vycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7JworCisKK2NsYXNzIFB5X2NvbXBsZXhfcHJvdGVjdGVkX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICJQeV9jb21wbGV4IgorCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgiIiIKK1B5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworaWYgKGVycm5vID09IEVET00pIHt7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgIGdvdG8gZXhpdDsKK319CitlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHt7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgZ290byBleGl0OworfX0KK2Vsc2Uge3sKKyAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworfX0KKyIiIi5zdHJpcCgpKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjMxMDE5MDM5YTZmYmI5YV0qLworCiAjaWYgKEZMVF9SQURJWCAhPSAyICYmIEZMVF9SQURJWCAhPSAxNikKICNlcnJvciAiTW9kdWxlcy9jbWF0aG1vZHVsZS5jIGV4cGVjdHMgRkxUX1JBRElYIHRvIGJlIDIgb3IgMTYiCiAjZW5kaWYKQEAgLTQ4LDEyICs4MiwxMiBAQAogI2RlZmluZSBDTV9TQ0FMRV9ET1dOICgtKENNX1NDQUxFX1VQKzEpLzIpCiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlfY29tcGxleCBjX2FzaW5oKFB5X2NvbXBsZXgpOwotc3RhdGljIFB5X2NvbXBsZXggY19hdGFuaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfY29zaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfc2luaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfc3FydChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfdGFuaChQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2FzaW5oX2ltcGwoUHlNb2R1bGVEZWYgKiwgUHlfY29tcGxleCk7CitzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfY29zaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfc2luaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfc3FydF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfdGFuaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOwogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9lcnJvcih2b2lkKTsKIAogLyogQ29kZSB0byBkZWFsIHdpdGggc3BlY2lhbCB2YWx1ZXMgKGluZmluaXRpZXMsIE5hTnMsIGV0Yy4pLiAqLwpAQCAtMTIzLDggKzE1NywxOCBAQAogCiBzdGF0aWMgUHlfY29tcGxleCBhY29zX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hY29zIC0+IFB5X2NvbXBsZXhfcHJvdGVjdGVkCisKKyAgICB6OiBQeV9jb21wbGV4X3Byb3RlY3RlZAorICAgIC8KKworUmV0dXJuIHRoZSBhcmMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Fjb3MoUHlfY29tcGxleCB6KQorY21hdGhfYWNvc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YzFkZDIxZmY4MThkYjZiIGlucHV0PWJkNmNiZDc4YWU4NTE5MjddKi8KIHsKICAgICBQeV9jb21wbGV4IHMxLCBzMiwgcjsKIApAQCAtMTQ1LDEwICsxODksMTAgQEAKICAgICB9IGVsc2UgewogICAgICAgICBzMS5yZWFsID0gMS4tei5yZWFsOwogICAgICAgICBzMS5pbWFnID0gLXouaW1hZzsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IDEuK3oucmVhbDsKICAgICAgICAgczIuaW1hZyA9IHouaW1hZzsKLSAgICAgICAgczIgPSBjX3NxcnQoczIpOworICAgICAgICBzMiA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMyKTsKICAgICAgICAgci5yZWFsID0gMi4qYXRhbjIoczEucmVhbCwgczIucmVhbCk7CiAgICAgICAgIHIuaW1hZyA9IG1fYXNpbmgoczIucmVhbCpzMS5pbWFnIC0gczIuaW1hZypzMS5yZWFsKTsKICAgICB9CkBAIC0xNTYsMTYgKzIwMCwxOCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hY29zX2RvYywKLSJhY29zKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgY29zaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggYWNvc2hfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmFjb3NoID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBjb3NpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfYWNvc2goUHlfY29tcGxleCB6KQorY21hdGhfYWNvc2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzIzYzc3NjQyOWRlZjk4MSBpbnB1dD0zZjYxYmVlN2Q3MDNlNTNjXSovCiB7CiAgICAgUHlfY29tcGxleCBzMSwgczIsIHI7CiAKQEAgLTE3OCwxMCArMjI0LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgczEucmVhbCA9IHoucmVhbCAtIDEuOwogICAgICAgICBzMS5pbWFnID0gei5pbWFnOwotICAgICAgICBzMSA9IGNfc3FydChzMSk7CisgICAgICAgIHMxID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczEpOwogICAgICAgICBzMi5yZWFsID0gei5yZWFsICsgMS47CiAgICAgICAgIHMyLmltYWcgPSB6LmltYWc7Ci0gICAgICAgIHMyID0gY19zcXJ0KHMyKTsKKyAgICAgICAgczIgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMik7CiAgICAgICAgIHIucmVhbCA9IG1fYXNpbmgoczEucmVhbCpzMi5yZWFsICsgczEuaW1hZypzMi5pbWFnKTsKICAgICAgICAgci5pbWFnID0gMi4qYXRhbjIoczEuaW1hZywgczIucmVhbCk7CiAgICAgfQpAQCAtMTg5LDM1ICsyMzUsMzggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYWNvc2hfZG9jLAotImFjb3NoKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHguIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hc2luID0gY21hdGguYWNvcwogCitSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2FzaW4oUHlfY29tcGxleCB6KQorY21hdGhfYXNpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MmQyMzQ2ZDQ2NjkwODI2IGlucHV0PWJlMGJmMGNmZGQ1MjM5YzVdKi8KIHsKICAgICAvKiBhc2luKHopID0gLWkgYXNpbmgoaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX2FzaW5oKHMpOworICAgIHMgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2FzaW5fZG9jLAotImFzaW4oeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggYXNpbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmFzaW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2FzaW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX2FzaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBjNjY2NDgyM2M3YjFiMzUgaW5wdXQ9NWMwOTQ0OGZjZmM4OWE3OV0qLwogewogICAgIFB5X2NvbXBsZXggczEsIHMyLCByOwogCkBAIC0yMzUsMTAgKzI4NCwxMCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHMxLnJlYWwgPSAxLit6LmltYWc7CiAgICAgICAgIHMxLmltYWcgPSAtei5yZWFsOwotICAgICAgICBzMSA9IGNfc3FydChzMSk7CisgICAgICAgIHMxID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczEpOwogICAgICAgICBzMi5yZWFsID0gMS4tei5pbWFnOwogICAgICAgICBzMi5pbWFnID0gei5yZWFsOwotICAgICAgICBzMiA9IGNfc3FydChzMik7CisgICAgICAgIHMyID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczIpOwogICAgICAgICByLnJlYWwgPSBtX2FzaW5oKHMxLnJlYWwqczIuaW1hZy1zMi5yZWFsKnMxLmltYWcpOwogICAgICAgICByLmltYWcgPSBhdGFuMih6LmltYWcsIHMxLnJlYWwqczIucmVhbC1zMS5pbWFnKnMyLmltYWcpOwogICAgIH0KQEAgLTI0NiwyMCArMjk1LDIyIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2FzaW5oX2RvYywKLSJhc2luaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHNpbmUgb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYXRhbiA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBhcmMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19hdGFuKFB5X2NvbXBsZXggeikKK2NtYXRoX2F0YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjdkNDRmMDJjNmE1YzNiNSBpbnB1dD0zYjIxZmY3ZDVlYWM2MzJhXSovCiB7CiAgICAgLyogYXRhbih6KSA9IC1pIGF0YW5oKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcywgcjsKICAgICBzLnJlYWwgPSAtei5pbWFnOwogICAgIHMuaW1hZyA9IHoucmVhbDsKLSAgICBzID0gY19hdGFuaChzKTsKKyAgICBzID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwpAQCAtMjk1LDE2ICszNDYsMTggQEAKICAgICByZXR1cm4gYXRhbjIoei5pbWFnLCB6LnJlYWwpOwogfQogCi1QeURvY19TVFJWQVIoY19hdGFuX2RvYywKLSJhdGFuKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgdGFuZ2VudCBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGF0YW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hdGFuaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hdGFuaChQeV9jb21wbGV4IHopCitjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNzllMGI5ZmVmYzhkYTdjIGlucHV0PTJiM2ZkYjgyZmIzNDQ4N2JdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIGF5LCBoOwpAQCAtMzEzLDcgKzM2Niw3IEBACiAKICAgICAvKiBSZWR1Y2UgdG8gY2FzZSB3aGVyZSB6LnJlYWwgPj0gMC4sIHVzaW5nIGF0YW5oKHopID0gLWF0YW5oKC16KS4gKi8KICAgICBpZiAoei5yZWFsIDwgMC4pIHsKLSAgICAgICAgcmV0dXJuIGNfbmVnKGNfYXRhbmgoY19uZWcoeikpKTsKKyAgICAgICAgcmV0dXJuIF9QeV9jX25lZyhjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgX1B5X2NfbmVnKHopKSk7CiAgICAgfQogCiAgICAgYXkgPSBmYWJzKHouaW1hZyk7CkBAIC0zNTAsMzQgKzQwMywzOCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hdGFuaF9kb2MsCi0iYXRhbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmNvcyA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBjb3NpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfY29zKFB5X2NvbXBsZXggeikKK2NtYXRoX2Nvc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDFjZGMxYjVlNzYxNjY3IGlucHV0PTYwMjJlMzliNzcxMjdhYzddKi8KIHsKICAgICAvKiBjb3MoeikgPSBjb3NoKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSAtei5pbWFnOwogICAgIHIuaW1hZyA9IHoucmVhbDsKLSAgICByID0gY19jb3NoKHIpOworICAgIHIgPSBjbWF0aF9jb3NoX2ltcGwobW9kdWxlLCByKTsKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfY29zX2RvYywKLSJjb3MoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGNvc2luZSBvZiB4LiIpOwotCiAKIC8qIGNvc2goaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCBjb3NoX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5jb3NoID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Nvc2goUHlfY29tcGxleCB6KQorY21hdGhfY29zaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mM2I1ZDMyODJiMzAyNGQzIGlucHV0PWQ2YjY2MzM5ZTljYzMzMmJdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIHhfbWludXNfb25lOwpAQCAtNDI2LDE4ICs0ODMsMjAgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfY29zaF9kb2MsCi0iY29zaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2YgeC4iKTsKLQogCiAvKiBleHAoaW5maW5pdHkgKyBpKnkpIGFuZCBleHAoLWluZmluaXR5ICsgaSp5KSBuZWVkIHNwZWNpYWwgdHJlYXRtZW50IGZvcgogICAgZmluaXRlIHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IGV4cF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguZXhwID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2V4cChQeV9jb21wbGV4IHopCitjbWF0aF9leHBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmY4ODI1ZWIyYmNhZDliYSBpbnB1dD04YjllNmNmOGE5MjE3NGMzXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSBsOwpAQCAtNDg2LDEyICs1NDUsNiBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19leHBfZG9jLAotImV4cCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgZXhwb25lbnRpYWwgdmFsdWUgZSoqeC4iKTsKLQotCiBzdGF0aWMgUHlfY29tcGxleCBsb2dfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKIHN0YXRpYyBQeV9jb21wbGV4CkBAIC01NjQsOCArNjE3LDE1IEBACiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorY21hdGgubG9nMTAgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfbG9nMTAoUHlfY29tcGxleCB6KQorY21hdGhfbG9nMTBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjNDI2Y2EwZTc4MjM0MSBpbnB1dD1jZmY1NjQ0ZjczYzE1MTljXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGludCBlcnJub19zYXZlOwpAQCAtNTc4LDM2ICs2MzgsNDAgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfbG9nMTBfZG9jLAotImxvZzEwKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5zaW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19zaW4oUHlfY29tcGxleCB6KQorY21hdGhfc2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU3ZjVlMmIyNTM4MjVhYzcgaW5wdXQ9MmQzNTE5ODQyYThiNGI4NV0qLwogewogICAgIC8qIHNpbih6KSA9IC1pIHNpbihpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfc2luaChzKTsKKyAgICBzID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3Npbl9kb2MsCi0ic2luKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBzaW5lIG9mIHguIik7Ci0KIAogLyogc2luaChpbmZpbml0eSArIGkqeSkgbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBzcGVjaWFsbHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IHNpbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnNpbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3NpbmgoUHlfY29tcGxleCB6KQorY21hdGhfc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzFmZmY4Mjk4MDQzYTk1IGlucHV0PWQyZDNmYzhjMWRkZmQyZGRdKi8KIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIHhfbWludXNfb25lOwpAQCAtNjU1LDE2ICs3MTksMTggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfc2luaF9kb2MsCi0ic2luaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHguIik7Ci0KIAogc3RhdGljIFB5X2NvbXBsZXggc3FydF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguc3FydCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19zcXJ0KFB5X2NvbXBsZXggeikKK2NtYXRoX3NxcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZiZGEyODNkMGM1YTdiNCBpbnB1dD03MDg4YjE2NmZjOWE1OGM3XSovCiB7CiAgICAgLyoKICAgICAgICBNZXRob2Q6IHVzZSBzeW1tZXRyaWVzIHRvIHJlZHVjZSB0byB0aGUgY2FzZSB3aGVuIHggPSB6LnJlYWwgYW5kIHkKQEAgLTczMCwzNiArNzk2LDQwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3NxcnRfZG9jLAotInNxcnQoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnRhbiA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSB0YW5nZW50IG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3RhbihQeV9jb21wbGV4IHopCitjbWF0aF90YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzNzRiYWNmMzZkOTliNCBpbnB1dD1mYzE2N2U1Mjg3Njc4ODhlXSovCiB7CiAgICAgLyogdGFuKHopID0gLWkgdGFuaChpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfdGFuaChzKTsKKyAgICBzID0gY21hdGhfdGFuaF9pbXBsKG1vZHVsZSwgcyk7CiAgICAgci5yZWFsID0gcy5pbWFnOwogICAgIHIuaW1hZyA9IC1zLnJlYWw7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3Rhbl9kb2MsCi0idGFuKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSB0YW5nZW50IG9mIHguIik7Ci0KIAogLyogdGFuaChpbmZpbml0eSArIGkqeSkgbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBzcGVjaWFsbHkgKi8KIHN0YXRpYyBQeV9jb21wbGV4IHRhbmhfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnRhbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX3RhbmgoUHlfY29tcGxleCB6KQorY21hdGhfdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTc4NzczZDI3YTE4ZTk2IGlucHV0PTIyZjY3ZjlkYzZkMjk2ODVdKi8KIHsKICAgICAvKiBGb3JtdWxhOgogCkBAIC04MjIsMjcgKzg5MiwzNSBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY190YW5oX2RvYywKLSJ0YW5oKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBoeXBlcmJvbGljIHRhbmdlbnQgb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGgubG9nCisKKyAgICB4OiBQeV9jb21wbGV4CisgICAgeV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICAvCisKK1RoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS4KKworSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2xvZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9sb2dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHgsIFB5T2JqZWN0ICp5X29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNWUyYTFlNTIyOWI1YTQ2IGlucHV0PWVlMGU4MjNhN2M2ZTY4ZWFdKi8KIHsKLSAgICBQeV9jb21wbGV4IHg7CiAgICAgUHlfY29tcGxleCB5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfEQiLCAmeCwgJnkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAgICAgeCA9IGNfbG9nKHgpOwotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDIpIHsKKyAgICBpZiAoeV9vYmogIT0gTlVMTCkgeworICAgICAgICB5ID0gUHlDb21wbGV4X0FzQ0NvbXBsZXgoeV9vYmopOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgeSA9IGNfbG9nKHkpOwotICAgICAgICB4ID0gY19xdW90KHgsIHkpOworICAgICAgICB4ID0gX1B5X2NfcXVvdCh4LCB5KTsKICAgICB9CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QoeCkKICAgICBpZiAoZXJybm8gIT0gMCkKQEAgLTg1MCwxMCArOTI4LDYgQEAKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleCh4KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX2xvZ19kb2MsCi0ibG9nKHhbLCBiYXNlXSkgLT4gdGhlIGxvZ2FyaXRobSBvZiB4IHRvIHRoZSBnaXZlbiBiYXNlLlxuXAotSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2YgeC4iKTsKLQogCiAvKiBBbmQgbm93IHRoZSBnbHVlIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUgZnJvbSBQeXRob246ICovCiAKQEAgLTg2OSw1NyArOTQzLDIyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tYXRoXzEoUHlPYmplY3QgKmFyZ3MsIFB5X2NvbXBsZXggKCpmdW5jKShQeV9jb21wbGV4KSkKLXsKLSAgICBQeV9jb21wbGV4IHgsciA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEIiwgJngpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJubyA9IDA7Ci0gICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIHJldHVybiAwKTsKLSAgICByID0gKCpmdW5jKSh4KTsKLSAgICBQeUZQRV9FTkRfUFJPVEVDVChyKTsKLSAgICBpZiAoZXJybm8gPT0gRURPTSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocik7Ci0gICAgfQotfQogCi0jZGVmaW5lIEZVTkMxKHN0dWJuYW1lLCBmdW5jKSBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICogc3R1Ym5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7IFwKLSAgICAgICAgcmV0dXJuIG1hdGhfMShhcmdzLCBmdW5jKTsgXAotICAgIH0KKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnBoYXNlCiAKLUZVTkMxKGNtYXRoX2Fjb3MsIGNfYWNvcykKLUZVTkMxKGNtYXRoX2Fjb3NoLCBjX2Fjb3NoKQotRlVOQzEoY21hdGhfYXNpbiwgY19hc2luKQotRlVOQzEoY21hdGhfYXNpbmgsIGNfYXNpbmgpCi1GVU5DMShjbWF0aF9hdGFuLCBjX2F0YW4pCi1GVU5DMShjbWF0aF9hdGFuaCwgY19hdGFuaCkKLUZVTkMxKGNtYXRoX2NvcywgY19jb3MpCi1GVU5DMShjbWF0aF9jb3NoLCBjX2Nvc2gpCi1GVU5DMShjbWF0aF9leHAsIGNfZXhwKQotRlVOQzEoY21hdGhfbG9nMTAsIGNfbG9nMTApCi1GVU5DMShjbWF0aF9zaW4sIGNfc2luKQotRlVOQzEoY21hdGhfc2luaCwgY19zaW5oKQotRlVOQzEoY21hdGhfc3FydCwgY19zcXJ0KQotRlVOQzEoY21hdGhfdGFuLCBjX3RhbikKLUZVTkMxKGNtYXRoX3RhbmgsIGNfdGFuaCkKKyAgICB6OiBQeV9jb21wbGV4CisgICAgLworCitSZXR1cm4gYXJndW1lbnQsIGFsc28ga25vd24gYXMgdGhlIHBoYXNlIGFuZ2xlLCBvZiBhIGNvbXBsZXguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9waGFzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9waGFzZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDllYWYzNzNjYjYyNGMzIGlucHV0PTVjZjc1MjI4YmE5NGI2OWRdKi8KIHsKLSAgICBQeV9jb21wbGV4IHo7CiAgICAgZG91YmxlIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6cGhhc2UiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgZXJybm8gPSAwOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImFyZyBmdW5jdGlvbiIsIHJldHVybiAwKQogICAgIHBoaSA9IGNfYXRhbjIoeik7CkBAIC05MzAsMjAgKzk2OSwyNiBAQAogICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBoaSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9waGFzZV9kb2MsCi0icGhhc2UoeikgLT4gZmxvYXRcblxuXAotUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGgucG9sYXIKKworICAgIHo6IFB5X2NvbXBsZXgKKyAgICAvCisKK0NvbnZlcnQgYSBjb21wbGV4IGZyb20gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMgdG8gcG9sYXIgY29vcmRpbmF0ZXMuCisKK3IgaXMgdGhlIGRpc3RhbmNlIGZyb20gMCBhbmQgcGhpIHRoZSBwaGFzZSBhbmdsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX3BvbGFyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX3BvbGFyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA3ZDQxYjE2Yzg3Nzg3NWEgaW5wdXQ9MjZjMzUzNTc0ZmQxYTg2MV0qLwogewotICAgIFB5X2NvbXBsZXggejsKICAgICBkb3VibGUgciwgcGhpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDpwb2xhciIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJwb2xhciBmdW5jdGlvbiIsIHJldHVybiAwKQogICAgIHBoaSA9IGNfYXRhbjIoeik7IC8qIHNob3VsZCBub3QgY2F1c2UgYW55IGV4Y2VwdGlvbiAqLwotICAgIHIgPSBjX2Ficyh6KTsgLyogc2V0cyBlcnJubyB0byBFUkFOR0Ugb24gb3ZlcmZsb3c7ICBvdGhlcndpc2UgMCAqLworICAgIHIgPSBfUHlfY19hYnMoeik7IC8qIHNldHMgZXJybm8gdG8gRVJBTkdFIG9uIG92ZXJmbG93OyAgb3RoZXJ3aXNlIDAgKi8KICAgICBQeUZQRV9FTkRfUFJPVEVDVChyKQogICAgIGlmIChlcnJubyAhPSAwKQogICAgICAgICByZXR1cm4gbWF0aF9lcnJvcigpOwpAQCAtOTUxLDExICs5OTYsNiBAQAogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGQiLCByLCBwaGkpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcG9sYXJfZG9jLAotInBvbGFyKHopIC0+IHI6IGZsb2F0LCBwaGk6IGZsb2F0XG5cblwKLUNvbnZlcnQgYSBjb21wbGV4IGZyb20gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMgdG8gcG9sYXIgY29vcmRpbmF0ZXMuIHIgaXNcblwKLXRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuIik7Ci0KIC8qCiAgIHJlY3QoKSBpc24ndCBjb3ZlcmVkIGJ5IHRoZSBDOTkgc3RhbmRhcmQsIGJ1dCBpdCdzIG5vdCB0b28gaGFyZCB0bwogICBmaWd1cmUgb3V0ICdzcGlyaXQgb2YgQzk5JyBydWxlcyBmb3Igc3BlY2lhbCB2YWx1ZSBoYW5kaW5nOgpAQCAtOTY5LDEzICsxMDA5LDIxIEBACiAKIHN0YXRpYyBQeV9jb21wbGV4IHJlY3Rfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnJlY3QKKworICAgIHI6IGRvdWJsZQorICAgIHBoaTogZG91YmxlCisgICAgLworCitDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9yZWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX3JlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkb3VibGUgciwgZG91YmxlIHBoaSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kOTdhODc0OWJkNjNlOWQ1IGlucHV0PTI0YzU2NDZkMTQ3ZWZkNjldKi8KIHsKICAgICBQeV9jb21wbGV4IHo7Ci0gICAgZG91YmxlIHIsIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLCAmciwgJnBoaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJyZWN0IGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAKQEAgLTEwMjYsNzkgKzEwNzQsMTQzIEBACiAgICAgICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHopOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcmVjdF9kb2MsCi0icmVjdChyLCBwaGkpIC0+IHo6IGNvbXBsZXhcblxuXAotQ29udmVydCBmcm9tIHBvbGFyIGNvb3JkaW5hdGVzIHRvIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzLiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguaXNmaW5pdGUgPSBjbWF0aC5wb2xhcgorCitSZXR1cm4gVHJ1ZSBpZiBib3RoIHRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgeiBhcmUgZmluaXRlLCBlbHNlIEZhbHNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNmaW5pdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNmaW5pdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY2NjgyZmE5M2RlNDVkNiBpbnB1dD04NDhlN2VlNzAxODk1ODE1XSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc2Zpbml0ZSIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19GSU5JVEUoei5yZWFsKSAmJiBQeV9JU19GSU5JVEUoei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc2Zpbml0ZV9kb2MsCi0iaXNmaW5pdGUoeikgLT4gYm9vbFxuXAotUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzbmFuID0gY21hdGgucG9sYXIKKworQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogbm90IGEgbnVtYmVyIChOYU4pLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNuYW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNuYW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg1ZmU4YzIwNDc3MThlZSBpbnB1dD03MTc5OWY1ZDI4NGM5YmFmXSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc25hbiIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19OQU4oei5yZWFsKSB8fCBQeV9JU19OQU4oei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc25hbl9kb2MsCi0iaXNuYW4oeikgLT4gYm9vbFxuXAotQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogbm90IGEgbnVtYmVyIChOYU4pIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc2luZiA9IGNtYXRoLnBvbGFyCisKK0NoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IGlzIGluZmluaXRlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNpbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfaXNpbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGNhOWM2MTA5ZTQ2OGJmNCBpbnB1dD0zNjNkZjE1NWM3MTgxMzI5XSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRDppc2luZiIsICZ6KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9JU19JTkZJTklUWSh6LnJlYWwpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JU19JTkZJTklUWSh6LmltYWcpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX2lzaW5mX2RvYywKLSJpc2luZih6KSAtPiBib29sXG5cCi1DaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzY2xvc2UgLT4gYm9vbAogCisgICAgYTogUHlfY29tcGxleAorICAgIGI6IFB5X2NvbXBsZXgKKyAgICAqCisgICAgcmVsX3RvbDogZG91YmxlID0gMWUtMDkKKyAgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkICJjbG9zZSIsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlcworICAgIGFic190b2w6IGRvdWJsZSA9IDAuMAorICAgICAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgImNsb3NlIiwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKKworRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGNvbXBsZXggbnVtYmVycyBhcmUgY2xvc2UgaW4gdmFsdWUuCisKK1JldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS4KKworRm9yIHRoZSB2YWx1ZXMgdG8gYmUgY29uc2lkZXJlZCBjbG9zZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtIG11c3QgYmUKK3NtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuCisKKy1pbmYsIGluZiBhbmQgTmFOIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhlIElFRUUgNzU0IFN0YW5kYXJkLiBUaGF0IGlzLCBOYU4gaXMKK25vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitjbWF0aF9pc2Nsb3NlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCisgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMGM1MzVmYjU0ZTIzMTAgaW5wdXQ9ZGY5NjM2ZDdkZTFkNGFjM10qLworeworICAgIGRvdWJsZSBkaWZmOworCisgICAgLyogc2FuaXR5IGNoZWNrIG9uIHRoZSBpbnB1dHMgKi8KKyAgICBpZiAocmVsX3RvbCA8IDAuMCB8fCBhYnNfdG9sIDwgMC4wICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0b2xlcmFuY2VzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIChhLnJlYWwgPT0gYi5yZWFsKSAmJiAoYS5pbWFnID09IGIuaW1hZykgKSB7CisgICAgICAgIC8qIHNob3J0IGNpcmN1aXQgZXhhY3QgZXF1YWxpdHkgLS0gbmVlZGVkIHRvIGNhdGNoIHR3byBpbmZpbml0aWVzIG9mCisgICAgICAgICAgIHRoZSBzYW1lIHNpZ24uIEFuZCBwZXJoYXBzIHNwZWVkcyB0aGluZ3MgdXAgYSBiaXQgc29tZXRpbWVzLgorICAgICAgICAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhdGNoZXMgdGhlIGNhc2Ugb2YgdHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUgc2lnbiwgb3IKKyAgICAgICBvbmUgaW5maW5pdHkgYW5kIG9uZSBmaW5pdGUgbnVtYmVyLiBUd28gaW5maW5pdGllcyBvZiBvcHBvc2l0ZQorICAgICAgIHNpZ24gd291bGQgb3RoZXJ3aXNlIGhhdmUgYW4gaW5maW5pdGUgcmVsYXRpdmUgdG9sZXJhbmNlLgorICAgICAgIFR3byBpbmZpbml0aWVzIG9mIHRoZSBzYW1lIHNpZ24gYXJlIGNhdWdodCBieSB0aGUgZXF1YWxpdHkgY2hlY2sKKyAgICAgICBhYm92ZS4KKyAgICAqLworCisgICAgaWYgKFB5X0lTX0lORklOSVRZKGEucmVhbCkgfHwgUHlfSVNfSU5GSU5JVFkoYS5pbWFnKSB8fAorICAgICAgICBQeV9JU19JTkZJTklUWShiLnJlYWwpIHx8IFB5X0lTX0lORklOSVRZKGIuaW1hZykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogbm93IGRvIHRoZSByZWd1bGFyIGNvbXB1dGF0aW9uCisgICAgICAgdGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgIndlYWsiIHRlc3QgZnJvbSB0aGUgQm9vc3QgbGlicmFyeQorICAgICovCisKKyAgICBkaWZmID0gX1B5X2NfYWJzKF9QeV9jX2RpZmYoYSwgYikpOworCisgICAgcmV0dXJuICgoKGRpZmYgPD0gcmVsX3RvbCAqIF9QeV9jX2FicyhiKSkgfHwKKyAgICAgICAgICAgICAoZGlmZiA8PSByZWxfdG9sICogX1B5X2NfYWJzKGEpKSkgfHwKKyAgICAgICAgICAgIChkaWZmIDw9IGFic190b2wpKTsKK30KIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAiVGhpcyBtb2R1bGUgaXMgYWx3YXlzIGF2YWlsYWJsZS4gSXQgcHJvdmlkZXMgYWNjZXNzIHRvIG1hdGhlbWF0aWNhbFxuIgogImZ1bmN0aW9ucyBmb3IgY29tcGxleCBudW1iZXJzLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgY21hdGhfbWV0aG9kc1tdID0gewotICAgIHsiYWNvcyIsICAgY21hdGhfYWNvcywgIE1FVEhfVkFSQVJHUywgY19hY29zX2RvY30sCi0gICAgeyJhY29zaCIsICBjbWF0aF9hY29zaCwgTUVUSF9WQVJBUkdTLCBjX2Fjb3NoX2RvY30sCi0gICAgeyJhc2luIiwgICBjbWF0aF9hc2luLCAgTUVUSF9WQVJBUkdTLCBjX2FzaW5fZG9jfSwKLSAgICB7ImFzaW5oIiwgIGNtYXRoX2FzaW5oLCBNRVRIX1ZBUkFSR1MsIGNfYXNpbmhfZG9jfSwKLSAgICB7ImF0YW4iLCAgIGNtYXRoX2F0YW4sICBNRVRIX1ZBUkFSR1MsIGNfYXRhbl9kb2N9LAotICAgIHsiYXRhbmgiLCAgY21hdGhfYXRhbmgsIE1FVEhfVkFSQVJHUywgY19hdGFuaF9kb2N9LAotICAgIHsiY29zIiwgICAgY21hdGhfY29zLCAgIE1FVEhfVkFSQVJHUywgY19jb3NfZG9jfSwKLSAgICB7ImNvc2giLCAgIGNtYXRoX2Nvc2gsICBNRVRIX1ZBUkFSR1MsIGNfY29zaF9kb2N9LAotICAgIHsiZXhwIiwgICAgY21hdGhfZXhwLCAgIE1FVEhfVkFSQVJHUywgY19leHBfZG9jfSwKLSAgICB7ImlzZmluaXRlIiwgY21hdGhfaXNmaW5pdGUsIE1FVEhfVkFSQVJHUywgY21hdGhfaXNmaW5pdGVfZG9jfSwKLSAgICB7ImlzaW5mIiwgIGNtYXRoX2lzaW5mLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX2lzaW5mX2RvY30sCi0gICAgeyJpc25hbiIsICBjbWF0aF9pc25hbiwgTUVUSF9WQVJBUkdTLCBjbWF0aF9pc25hbl9kb2N9LAotICAgIHsibG9nIiwgICAgY21hdGhfbG9nLCAgIE1FVEhfVkFSQVJHUywgY21hdGhfbG9nX2RvY30sCi0gICAgeyJsb2cxMCIsICBjbWF0aF9sb2cxMCwgTUVUSF9WQVJBUkdTLCBjX2xvZzEwX2RvY30sCi0gICAgeyJwaGFzZSIsICBjbWF0aF9waGFzZSwgTUVUSF9WQVJBUkdTLCBjbWF0aF9waGFzZV9kb2N9LAotICAgIHsicG9sYXIiLCAgY21hdGhfcG9sYXIsIE1FVEhfVkFSQVJHUywgY21hdGhfcG9sYXJfZG9jfSwKLSAgICB7InJlY3QiLCAgIGNtYXRoX3JlY3QsICBNRVRIX1ZBUkFSR1MsIGNtYXRoX3JlY3RfZG9jfSwKLSAgICB7InNpbiIsICAgIGNtYXRoX3NpbiwgICBNRVRIX1ZBUkFSR1MsIGNfc2luX2RvY30sCi0gICAgeyJzaW5oIiwgICBjbWF0aF9zaW5oLCAgTUVUSF9WQVJBUkdTLCBjX3NpbmhfZG9jfSwKLSAgICB7InNxcnQiLCAgIGNtYXRoX3NxcnQsICBNRVRIX1ZBUkFSR1MsIGNfc3FydF9kb2N9LAotICAgIHsidGFuIiwgICAgY21hdGhfdGFuLCAgIE1FVEhfVkFSQVJHUywgY190YW5fZG9jfSwKLSAgICB7InRhbmgiLCAgIGNtYXRoX3RhbmgsICBNRVRIX1ZBUkFSR1MsIGNfdGFuaF9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgQ01BVEhfQUNPU19NRVRIT0RERUYKKyAgICBDTUFUSF9BQ09TSF9NRVRIT0RERUYKKyAgICBDTUFUSF9BU0lOX01FVEhPRERFRgorICAgIENNQVRIX0FTSU5IX01FVEhPRERFRgorICAgIENNQVRIX0FUQU5fTUVUSE9EREVGCisgICAgQ01BVEhfQVRBTkhfTUVUSE9EREVGCisgICAgQ01BVEhfQ09TX01FVEhPRERFRgorICAgIENNQVRIX0NPU0hfTUVUSE9EREVGCisgICAgQ01BVEhfRVhQX01FVEhPRERFRgorICAgIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGCisgICAgQ01BVEhfSVNGSU5JVEVfTUVUSE9EREVGCisgICAgQ01BVEhfSVNJTkZfTUVUSE9EREVGCisgICAgQ01BVEhfSVNOQU5fTUVUSE9EREVGCisgICAgQ01BVEhfTE9HX01FVEhPRERFRgorICAgIENNQVRIX0xPRzEwX01FVEhPRERFRgorICAgIENNQVRIX1BIQVNFX01FVEhPRERFRgorICAgIENNQVRIX1BPTEFSX01FVEhPRERFRgorICAgIENNQVRIX1JFQ1RfTUVUSE9EREVGCisgICAgQ01BVEhfU0lOX01FVEhPRERFRgorICAgIENNQVRIX1NJTkhfTUVUSE9EREVGCisgICAgQ01BVEhfU1FSVF9NRVRIT0RERUYKKyAgICBDTUFUSF9UQU5fTUVUSE9EREVGCisgICAgQ01BVEhfVEFOSF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY29uZmlnLmMuaW4gYi9Nb2R1bGVzL2NvbmZpZy5jLmluCmluZGV4IDdhMjRlMmQuLjdiNzcxOTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY29uZmlnLmMuaW4KKysrIGIvTW9kdWxlcy9jb25maWcuYy5pbgpAQCAtMTMsNyArMTMsNyBAQAogLyogISEhICEhISAhISEgVGhpcyBmaWxlIGlzIGVkaXRlZCBieSB0aGUgbWFrZXNldHVwIHNjcmlwdCAhISEgISEhICEhISAqLwogCiAvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHRhYmxlIG9mIGJ1aWx0LWluIG1vZHVsZXMuCi0gICBTZWUgaW5pdF9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCisgICBTZWUgY3JlYXRlX2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwppbmRleCAxNDkzZjhkLi41MzBkZGM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCisrKyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKQEAgLTUsNyArNSwxMyBAQAogI2luY2x1ZGUgPGZyYW1lb2JqZWN0Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyMgIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgogI2VuZGlmCiAKIC8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KQEAgLTIyLDkgKzI4LDcgQEAKICMgIGRlZmluZSBGQVVMVEhBTkRMRVJfVVNFUgogI2VuZGlmCiAKLS8qIGNhc3Qgc2l6ZV90IHRvIGludCBiZWNhdXNlIHdyaXRlKCkgdGFrZXMgYW4gaW50IG9uIFdpbmRvd3MKLSAgIChhbnl3YXksIHRoZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIDMwIGNoYXJhY3RlcnMpICovCi0jZGVmaW5lIFBVVFMoZmQsIHN0cikgd3JpdGUoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSBfUHlfd3JpdGVfbm9yYWlzZShmZCwgc3RyLCBzdHJsZW4oc3RyKSkKIAogX1B5X0lERU5USUZJRVIoZW5hYmxlKTsKIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CkBAIC0xMjcsMzIgKzEzMSw0NiBAQAogICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCiAKICAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisgICBJZiBmaWxlIGlzIGFuIGludGVnZXIsIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBmaWxlIGRlc2NyaXB0b3IuCiAKLSAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KLSAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGFuZCB3cml0ZSB0aGUgbmV3IGZpbGUgaW50byAqZmlsZV9wdHIuCisgICBPbiBlcnJvciwgcmV0dXJuIC0xLiAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi1mYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhQeU9iamVjdCAqZmlsZSwgaW50ICpwX2ZkKQorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKipmaWxlX3B0cikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGxvbmcgZmRfbG9uZzsKICAgICBpbnQgZmQ7CisgICAgUHlPYmplY3QgKmZpbGUgPSAqZmlsZV9wdHI7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgewogICAgICAgICBmaWxlID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgICAgIGlmIChmaWxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5zdGRlcnIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChmaWxlID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJzeXMuc3RkZXJyIGlzIE5vbmUiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhmaWxlKSkgeworICAgICAgICBmZCA9IF9QeUxvbmdfQXNJbnQoZmlsZSk7CisgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqZmlsZV9wdHIgPSBOVUxMOworICAgICAgICByZXR1cm4gZmQ7CisgICAgfQogCiAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBmZCA9IC0xOwogICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgewpAQCAtMTY1LDcgKzE4Myw3IEBACiAgICAgaWYgKGZkID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xNzUsOCArMTkzLDggQEAKICAgICAgICAgLyogaWdub3JlIGZsdXNoKCkgZXJyb3IgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9Ci0gICAgKnBfZmQgPSBmZDsKLSAgICByZXR1cm4gZmlsZTsKKyAgICAqZmlsZV9wdHIgPSBmaWxlOworICAgIHJldHVybiBmZDsKIH0KIAogLyogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQ6IG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIHRoZSBjdXJyZW50CkBAIC0xOTMsNiArMjExLDQyIEBACiAgICAgcmV0dXJuIHRzdGF0ZTsKIH0KIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhpbnQgZmQsIGludCBhbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKK3sKKyAgICBzdGF0aWMgdm9sYXRpbGUgaW50IHJlZW50cmFudCA9IDA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKHJlZW50cmFudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVlbnRyYW50ID0gMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscyBhbmQKKyAgICAgICBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUgUHl0aG9uCisgICAgICAgdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZQorICAgICAgIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCisgICAgICAgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyNlbHNlCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyNlbmRpZgorCisgICAgaWYgKGFsbF90aHJlYWRzKQorICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGludGVycCwgdHN0YXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQorICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorCisgICAgcmVlbnRyYW50ID0gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0KgogZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5KFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMjA5LDggKzI2Myw4IEBACiAgICAgICAgICZmaWxlLCAmYWxsX3RocmVhZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CkBAIC0yMjcsNiArMjgxLDEwIEBACiAgICAgZWxzZSB7CiAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOwogICAgIH0KKworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjUwLDcgKzMwOCw2IEBACiAgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyID0gTlVMTDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIAogICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkKQEAgLTI3OCwyNiArMzM1LDggQEAKICAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKICAgICBQVVRTKGZkLCAiXG5cbiIpOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAotICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KLSAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgotCi0gICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCi0gICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKLSAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCi0gICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotI2VuZGlmCi0KLSAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCi0gICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKLSAgICB9CisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKGZkLCBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWxfZXJyb3IuaW50ZXJwKTsKIAogICAgIGVycm5vID0gc2F2ZV9lcnJubzsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0zMzMsOCArMzcyLDggQEAKICAgICAgICAgInxPaTplbmFibGUiLCBrd2xpc3QsICZmaWxlLCAmYWxsX3RocmVhZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CkBAIC0zNDIsNyArMzgxLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9YREVDUkVGKGZhdGFsX2Vycm9yLmZpbGUpOwotICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICBQeV9YSU5DUkVGKGZpbGUpOwogICAgIGZhdGFsX2Vycm9yLmZpbGUgPSBmaWxlOwogICAgIGZhdGFsX2Vycm9yLmZkID0gZmQ7CiAgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKQEAgLTQ1Miw5ICs0OTEsOSBAQAogICAgICAgICBhc3NlcnQoc3QgPT0gUFlfTE9DS19GQUlMVVJFKTsKIAogICAgICAgICAvKiBnZXQgdGhlIHRocmVhZCBob2xkaW5nIHRoZSBHSUwsIE5VTEwgaWYgbm8gdGhyZWFkIGhvbGQgdGhlIEdJTCAqLwotICAgICAgICBjdXJyZW50ID0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOworICAgICAgICBjdXJyZW50ID0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKIAotICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOwogCiAgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIGN1cnJlbnQpOwogICAgICAgICBvayA9IChlcnJtc2cgPT0gTlVMTCk7CkBAIC01NDcsOCArNTg2LDggQEAKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7Ci0gICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICBmZCA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKCZmaWxlKTsKKyAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGZvcm1hdCB0aGUgdGltZW91dCAqLwpAQCAtNTYxLDcgKzYwMCw3IEBACiAgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk7CiAKICAgICBQeV9YREVDUkVGKHRocmVhZC5maWxlKTsKLSAgICBQeV9JTkNSRUYoZmlsZSk7CisgICAgUHlfWElOQ1JFRihmaWxlKTsKICAgICB0aHJlYWQuZmlsZSA9IGZpbGU7CiAgICAgdGhyZWFkLmZkID0gZmQ7CiAgICAgdGhyZWFkLnRpbWVvdXRfdXMgPSB0aW1lb3V0X3VzOwpAQCAtNjQwLDI4ICs2NzksMTQgQEAKIGZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pCiB7CiAgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIAogICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CiAgICAgaWYgKCF1c2VyLT5lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYKLSAgICAgICB0aGUgdGhyZWFkIGRvZXNuJ3QgaG9sZCB0aGUgR0lMLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKQotICAgICAgIGluc3RlYWQ6IGNhbGwgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotI2VuZGlmCisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKHVzZXItPmZkLCB1c2VyLT5hbGxfdGhyZWFkcywgdXNlci0+aW50ZXJwKTsKIAotICAgIGlmICh1c2VyLT5hbGxfdGhyZWFkcykKLSAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHVzZXItPmZkLCB1c2VyLT5pbnRlcnAsIHRzdGF0ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKLSAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKHVzZXItPmZkLCB0c3RhdGUpOwotICAgIH0KICNpZmRlZiBIQVZFX1NJR0FDVElPTgogICAgIGlmICh1c2VyLT5jaGFpbikgewogICAgICAgICAodm9pZClzaWdhY3Rpb24oc2lnbnVtLCAmdXNlci0+cHJldmlvdXMsIE5VTEwpOwpAQCAtNzMxLDggKzc1Niw4IEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpIHsKQEAgLTc1NCw3ICs3NzksNyBAQAogICAgIH0KIAogICAgIFB5X1hERUNSRUYodXNlci0+ZmlsZSk7Ci0gICAgUHlfSU5DUkVGKGZpbGUpOworICAgIFB5X1hJTkNSRUYoZmlsZSk7CiAgICAgdXNlci0+ZmlsZSA9IGZpbGU7CiAgICAgdXNlci0+ZmQgPSBmZDsKICAgICB1c2VyLT5hbGxfdGhyZWFkcyA9IGFsbF90aHJlYWRzOwpAQCAtODA0LDEyICs4MjksNDEgQEAKICNlbmRpZiAgIC8qIEZBVUxUSEFORExFUl9VU0VSICovCiAKIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQodm9pZCkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgVUlOVCBtb2RlOworCisgICAgLyogQ29uZmlndXJlIFdpbmRvd3MgdG8gbm90IGRpc3BsYXkgdGhlIFdpbmRvd3MgRXJyb3IgUmVwb3J0aW5nIGRpYWxvZyAqLworICAgIG1vZGUgPSBTZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YKTsKKyAgICBTZXRFcnJvck1vZGUobW9kZSB8IFNFTV9OT0dQRkFVTFRFUlJPUkJPWCk7CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyAgICBzdHJ1Y3QgcmxpbWl0IHJsOworCisgICAgLyogRGlzYWJsZSBjcmVhdGlvbiBvZiBjb3JlIGR1bXAgKi8KKyAgICBpZiAoZ2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAmcmwpICE9IDApIHsKKyAgICAgICAgcmwucmxpbV9jdXIgPSAwOworICAgICAgICBzZXRybGltaXQoUkxJTUlUX0NPUkUsICZybCk7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8qIFZpc3VhbCBTdHVkaW86IGNvbmZpZ3VyZSBhYm9ydCgpIHRvIG5vdCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugbm9yCisgICAgICAgb3BlbiBhIHBvcHVwIGFza2luZyB0byByZXBvcnQgdGhlIGZhdWx0LiAqLworICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoMCwgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3JlYWRfbnVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgdm9sYXRpbGUgaW50ICp4OwogICAgIHZvbGF0aWxlIGludCB5OwogCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIHggPSBOVUxMOwogICAgIHkgPSAqeDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHkpOwpAQCAtODE5LDYgKzg3Myw3IEBACiBzdGF0aWMgdm9pZAogZmF1bHRoYW5kbGVyX3JhaXNlX3NpZ3NlZ3Yodm9pZCkKIHsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIC8qIEZvciBTSUdTRUdWLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSByZXN0b3JlcyB0aGUgcHJldmlvdXMgc2lnbmFsCiAgICAgICAgaGFuZGxlciBhbmQgdGhlbiBnaXZlcyBiYWNrIHRoZSBleGVjdXRpb24gZmxvdyB0byB0aGUgcHJvZ3JhbSAod2l0aG91dApAQCAtODYxLDYgKzkxNiw3IEBACiAgICAgLyogRG8gYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvOiByYWlzZSBhIFNJR0ZQRSBvbiBJbnRlbCBDUFUsIGJ1dCBub3Qgb24KICAgICAgICBQb3dlclBDLiBVc2Ugdm9sYXRpbGUgdG8gZGlzYWJsZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4gKi8KICAgICB2b2xhdGlsZSBpbnQgeCA9IDEsIHkgPSAwLCB6OworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICB6ID0geCAvIHk7CiAgICAgLyogSWYgdGhlIGRpdmlzaW9uIGJ5IHplcm8gZGlkbid0IHJhaXNlIGEgU0lHRlBFIChlLmcuIG9uIFBvd2VyUEMpLAogICAgICAgIHJhaXNlIGl0IG1hbnVhbGx5LiAqLwpAQCAtODczLDM5ICs5MjksMTggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmYXVsdGhhbmRsZXJfc2lnYWJydChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgX01TQ19WRVIKLSAgICAvKiBWaXN1YWwgU3R1ZGlvOiBjb25maWd1cmUgYWJvcnQoKSB0byBub3QgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG5vcgotICAgICAgIG9wZW4gYSBwb3B1cCBhc2tpbmcgdG8gcmVwb3J0IHRoZSBmYXVsdC4gKi8KLSAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKDAsIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7Ci0jZW5kaWYKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgYWJvcnQoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotI2lmZGVmIFNJR0JVUwotc3RhdGljIFB5T2JqZWN0ICoKLWZhdWx0aGFuZGxlcl9zaWdidXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHJhaXNlKFNJR0JVUyk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIFNJR0lMTAotc3RhdGljIFB5T2JqZWN0ICoKLWZhdWx0aGFuZGxlcl9zaWdpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHJhaXNlKFNJR0lMTCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqbWVzc2FnZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInk6ZmF0YWxfZXJyb3IiLCAmbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQpAQCAtOTM5LDYgKzk3NCw3IEBACiAgICAgUHlfdWludHB0cl90IHNwID0gKFB5X3VpbnRwdHJfdCkmZGVwdGg7CiAgICAgUHlfdWludHB0cl90IHN0b3A7CiAKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgZGVwdGggPSAwOwogICAgIHN0b3AgPSBzdGFja19vdmVyZmxvdyhzcCAtIFNUQUNLX09WRVJGTE9XX01BWF9TSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcCArIFNUQUNLX09WRVJGTE9XX01BWF9TSVpFLApAQCAtMTAyOCwxNCArMTA2NCw2IEBACiAgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKICAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCi0jaWZkZWYgU0lHQlVTCi0gICAgeyJfc2lnYnVzIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdidXMsIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIl9zaWdidXMoKTogcmFpc2UgYSBTSUdCVVMgc2lnbmFsIil9LAotI2VuZGlmCi0jaWZkZWYgU0lHSUxMCi0gICAgeyJfc2lnaWxsIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdpbGwsIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIl9zaWdpbGwoKTogcmFpc2UgYSBTSUdJTEwgc2lnbmFsIil9LAotI2VuZGlmCiAgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKICNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKaW5kZXggOTMyNTk0MC4uOTdmZjA3YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mY250bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZmNudGxtb2R1bGUuYwpAQCAtMTUsNiArMTUsMTEgQEAKICNpbmNsdWRlIDxzdHJvcHRzLmg+CiAjZW5kaWYKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIGZjbnRsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xMjRiNTgzODdjMTU4MTc5XSovCisKIHN0YXRpYyBpbnQKIGNvbnZfZGVzY3JpcHRvcihQeU9iamVjdCAqb2JqZWN0LCBpbnQgKnRhcmdldCkKIHsKQEAgLTI2LDQ4ICszMSw3MiBAQAogICAgIHJldHVybiAxOwogfQogCisvKiBNdXN0IGNvbWUgYWZ0ZXIgY29udl9kZXNjcmlwdG9yIGRlZmluaXRpb24uICovCisjaW5jbHVkZSAiY2xpbmljL2ZjbnRsbW9kdWxlLmMuaCIKIAotLyogZmNudGwoZmQsIG9wLCBbYXJnXSkgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2ZjbnRsLmZjbnRsCisKKyAgICBmZDogb2JqZWN0KHR5cGU9J2ludCcsIGNvbnZlcnRlcj0nY29udl9kZXNjcmlwdG9yJykKKyAgICBjbWQgYXMgY29kZTogaW50CisgICAgYXJnOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgLworCitQZXJmb3JtIHRoZSBvcGVyYXRpb24gYGNtZGAgb24gZmlsZSBkZXNjcmlwdG9yIGZkLgorCitUaGUgdmFsdWVzIHVzZWQgZm9yIGBjbWRgIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUKK2FzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgbW9kdWxlLCB1c2luZyB0aGUgc2FtZSBuYW1lcyBhcyB1c2VkIGluCit0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmQKK2RlZmF1bHRzIHRvIDA7IGl0IG1heSBiZSBhbiBpbnQgb3IgYSBzdHJpbmcuICBJZiBhcmcgaXMgZ2l2ZW4gYXMgYSBzdHJpbmcsCit0aGUgcmV0dXJuIHZhbHVlIG9mIGZjbnRsIGlzIGEgc3RyaW5nIG9mIHRoYXQgbGVuZ3RoLCBjb250YWluaW5nIHRoZQorcmVzdWx0aW5nIHZhbHVlIHB1dCBpbiB0aGUgYXJnIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBsZW5ndGgKK29mIHRoZSBhcmcgc3RyaW5nIGlzIG5vdCBhbGxvd2VkIHRvIGV4Y2VlZCAxMDI0IGJ5dGVzLiAgSWYgdGhlIGFyZyBnaXZlbgoraXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpcyBhbiBpbnRlZ2VyCitjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZjbnRsIGNhbGwgaW4gdGhlIEMgY29kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2ZjbnRsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2ZjbnRsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZmM1YmZhNzRhMDNlZjBkIGlucHV0PThjZWZiZTU5YjI5ZWZiZTJdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgaW50IGNvZGU7Ci0gICAgaW50IGFyZzsKKyAgICB1bnNpZ25lZCBpbnQgaW50X2FyZyA9IDA7CiAgICAgaW50IHJldDsKICAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgY2hhciBidWZbMTAyNF07CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpcyM6ZmNudGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJnN0ciwgJmxlbikpIHsKLSAgICAgICAgaWYgKGxlbiA+IHNpemVvZiBidWYpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmY250bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoYXJnICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHBhcnNlX3Jlc3VsdDsKKworICAgICAgICBpZiAoUHlBcmdfUGFyc2UoYXJnLCAicyMiLCAmc3RyLCAmbGVuKSkgeworICAgICAgICAgICAgaWYgKChzaXplX3QpbGVuID4gc2l6ZW9mIGJ1ZikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmNudGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gZmNudGwoZmQsIGNvZGUsIGJ1Zik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBidWYpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcGFyc2VfcmVzdWx0ID0gUHlBcmdfUGFyc2UoYXJnLAorICAgICAgICAgICAgIkk7ZmNudGwgcmVxdWlyZXMgYSBmaWxlIG9yIGZpbGUgZGVzY3JpcHRvciwiCisgICAgICAgICAgICAiIGFuIGludGVnZXIgYW5kIG9wdGlvbmFsbHkgYSB0aGlyZCBpbnRlZ2VyIG9yIGEgc3RyaW5nIiwKKyAgICAgICAgICAgICZpbnRfYXJnKTsKKyAgICAgICAgaWYgKCFwYXJzZV9yZXN1bHQpIHsKKyAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CiAgICAgfQogCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBhcmcgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgIk8maXxJO2ZjbnRsIHJlcXVpcmVzIGEgZmlsZSBvciBmaWxlIGRlc2NyaXB0b3IsIgotICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGEgdGhpcmQgaW50ZWdlciBvciBhIHN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpIHsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gZmNudGwoZmQsIGNvZGUsIGFyZyk7CisgICAgcmV0ID0gZmNudGwoZmQsIGNvZGUsIChpbnQpaW50X2FyZyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmV0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CkBAIC03NiwzMyArMTA1LDU0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylyZXQpOwogfQogCi1QeURvY19TVFJWQVIoZmNudGxfZG9jLAotImZjbnRsKGZkLCBvcCwgW2FyZ10pXG5cCi1cblwKLVBlcmZvcm0gdGhlIG9wZXJhdGlvbiBvcCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuICBUaGUgdmFsdWVzIHVzZWRcblwKLWZvciBvcCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlXG5cCi1hcyBjb25zdGFudHMgaW4gdGhlIGZjbnRsIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpblxuXAotdGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLiAgVGhlIGFyZ3VtZW50IGFyZyBpcyBvcHRpb25hbCwgYW5kXG5cCi1kZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLFxuXAotdGhlIHJldHVybiB2YWx1ZSBvZiBmY250bCBpcyBhIHN0cmluZyBvZiB0aGF0IGxlbmd0aCwgY29udGFpbmluZyB0aGVcblwKLXJlc3VsdGluZyB2YWx1ZSBwdXQgaW4gdGhlIGFyZyBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUgbGVuZ3RoXG5cCi1vZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW5cblwKLWlzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMgYW4gaW50ZWdlclxuXAotY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmY250bCBjYWxsIGluIHRoZSBDIGNvZGUuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2ZjbnRsLmlvY3RsCiAKLS8qIGlvY3RsKGZkLCBvcCwgW2FyZ10pICovCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgcmVxdWVzdCBhcyBjb2RlOiB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKQorICAgIGFyZyBhcyBvYl9hcmc6IG9iamVjdChjX2RlZmF1bHQ9J05VTEwnKSA9IDAKKyAgICBtdXRhdGVfZmxhZyBhcyBtdXRhdGVfYXJnOiBib29sID0gVHJ1ZQorICAgIC8KKworUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGByZXF1ZXN0YCBvbiBmaWxlIGRlc2NyaXB0b3IgYGZkYC4KKworVGhlIHZhbHVlcyB1c2VkIGZvciBgcmVxdWVzdGAgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZQorYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBvciB0ZXJtaW9zIGxpYnJhcnkgbW9kdWxlcywgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMKK3VzZWQgaW4gdGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLgorCitUaGUgYXJndW1lbnQgYGFyZ2AgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEKK2J1ZmZlciBjb250YWluaW5nIGNoYXJhY3RlciBkYXRhIChtb3N0IGxpa2VseSBhIHN0cmluZyBvciBhbiBhcnJheSkuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIChzdWNoIGFzIGFuIGFycmF5KSBhbmQgaWYgdGhlCittdXRhdGVfZmxhZyBhcmd1bWVudCAod2hpY2ggaXMgb25seSBhbGxvd2VkIGluIHRoaXMgY2FzZSkgaXMgdHJ1ZSB0aGVuIHRoZQorYnVmZmVyIGlzIChpbiBlZmZlY3QpIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgY2hhbmdlcyBtYWRlIGJ5Cit0aGUgT1Mgd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgYWZ0ZXIgdGhlIGNhbGwgaGFzCityZXR1cm5lZC4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGludGVnZXIgcmV0dXJuZWQgYnkgdGhlIGlvY3RsIHN5c3RlbQorY2FsbC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIGEgbXV0YWJsZSBidWZmZXIgYW5kIHRoZSBtdXRhYmxlX2ZsYWcgYXJndW1lbnQgaXMgZmFsc2UsCit0aGUgYmVoYXZpb3IgaXMgYXMgaWYgYSBzdHJpbmcgaGFkIGJlZW4gcGFzc2VkLgorCitJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW1tdXRhYmxlIGJ1ZmZlciAobW9zdCBsaWtlbHkgYSBzdHJpbmcpIHRoZW4gYSBjb3B5CitvZiB0aGUgYnVmZmVyIGlzIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBhCitzdHJpbmcgb2YgdGhlIHNhbWUgbGVuZ3RoIGNvbnRhaW5pbmcgd2hhdGV2ZXIgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHV0IGluCit0aGUgYnVmZmVyLiAgVGhlIGxlbmd0aCBvZiB0aGUgYXJnIGJ1ZmZlciBpbiB0aGlzIGNhc2UgaXMgbm90IGFsbG93ZWQgdG8KK2V4Y2VlZCAxMDI0IGJ5dGVzLgorCitJZiB0aGUgYXJnIGdpdmVuIGlzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMKK2FuIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBpb2N0bCBjYWxsIGluIHRoZSBDCitjb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZmNudGxfaW9jdGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorZmNudGxfaW9jdGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVuc2lnbmVkIGludCBjb2RlLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JfYXJnLCBpbnQgbXV0YXRlX2FyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMDJmYWEwZjdlYmUyMjEwIGlucHV0PWVkZTcwYzQzM2NjY2JiYjJdKi8KIHsKICNkZWZpbmUgSU9DVExfQlVGU1ogMTAyNAotICAgIGludCBmZDsKLSAgICAvKiBJbiBQeUFyZ19QYXJzZVR1cGxlIGJlbG93LCB3ZSB1c2UgdGhlIHVuc2lnbmVkIG5vbi1jaGVja2VkICdJJwotICAgICAgIGZvcm1hdCBmb3IgdGhlICdjb2RlJyBwYXJhbWV0ZXIgYmVjYXVzZSBQeXRob24gdHVybnMgMHg4MDAwMDAwCi0gICAgICAgaW50byBlaXRoZXIgYSBsYXJnZSBwb3NpdGl2ZSBudW1iZXIgKFB5TG9uZyBvciBQeUludCBvbiA2NC1iaXQKLSAgICAgICBwbGF0Zm9ybXMpIG9yIGEgbmVnYXRpdmUgbnVtYmVyIG9uIG90aGVycyAoMzItYml0IFB5SW50KQotICAgICAgIHdoZXJlYXMgdGhlIHN5c3RlbSBleHBlY3RzIGl0IHRvIGJlIGEgMzJiaXQgYml0IGZpZWxkIHZhbHVlCisgICAgLyogV2UgdXNlIHRoZSB1bnNpZ25lZCBub24tY2hlY2tlZCAnSScgZm9ybWF0IGZvciB0aGUgJ2NvZGUnIHBhcmFtZXRlcgorICAgICAgIGJlY2F1c2UgdGhlIHN5c3RlbSBleHBlY3RzIGl0IHRvIGJlIGEgMzJiaXQgYml0IGZpZWxkIHZhbHVlCiAgICAgICAgcmVnYXJkbGVzcyBvZiBpdCBiZWluZyBwYXNzZWQgYXMgYW4gaW50IG9yIHVuc2lnbmVkIGxvbmcgb24KICAgICAgICB2YXJpb3VzIHBsYXRmb3Jtcy4gIFNlZSB0aGUgdGVybWlvcy5USU9DU1dJTlNaIGNvbnN0YW50IGFjcm9zcwogICAgICAgIHBsYXRmb3JtcyBmb3IgYW4gZXhhbXBsZSBvZiB0aGlzLgpAQCAtMTExLDEwMSArMTYxLDk4IEBACiAgICAgICAgaW4gdGhlaXIgdW5zaWduZWQgbG9uZyBpb2N0bCBjb2RlcyB0aGlzIHdpbGwgYnJlYWsgYW5kIG5lZWQKICAgICAgICBzcGVjaWFsIGNhc2luZyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0gYmVpbmcgYnVpbHQgb24uCiAgICAgICovCi0gICAgdW5zaWduZWQgaW50IGNvZGU7Ci0gICAgaW50IGFyZzsKKyAgICBpbnQgYXJnID0gMDsKICAgICBpbnQgcmV0OwogICAgIFB5X2J1ZmZlciBwc3RyOwogICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBpbnQgbXV0YXRlX2FyZyA9IDE7CiAgICAgY2hhciBidWZbSU9DVExfQlVGU1orMV07ICAvKiBhcmd1bWVudCBwbHVzIE5VTCBieXRlICovCiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJdyp8aTppb2N0bCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICZwc3RyLCAmbXV0YXRlX2FyZykpIHsKLSAgICAgICAgY2hhciAqYXJnOwotICAgICAgICBzdHIgPSBwc3RyLmJ1ZjsKLSAgICAgICAgbGVuID0gcHN0ci5sZW47CisgICAgaWYgKG9iX2FyZyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUFyZ19QYXJzZShvYl9hcmcsICJ3Kjppb2N0bCIsICZwc3RyKSkgeworICAgICAgICAgICAgY2hhciAqYXJnOworICAgICAgICAgICAgc3RyID0gcHN0ci5idWY7CisgICAgICAgICAgICBsZW4gPSBwc3RyLmxlbjsKIAotICAgICAgICBpZiAobXV0YXRlX2FyZykgewotICAgICAgICAgICAgaWYgKGxlbiA8PSBJT0NUTF9CVUZTWikgewotICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuIDw9IElPQ1RMX0JVRlNaKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgICAgICAgICBhcmcgPSBidWY7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcmcgPSBzdHI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXJnID0gc3RyOworICAgICAgICAgICAgICAgIGlmIChsZW4gPiBJT0NUTF9CVUZTWikgeworICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgICAgICAgICBhcmcgPSBidWY7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ1ZiA9PSBhcmcpIHsKKyAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIC8qIHRoaW5rIGFycmF5LnJlc2l6ZSgpICovCisgICAgICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGFyZyk7CisgICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG11dGF0ZV9hcmcgJiYgKGxlbiA8PSBJT0NUTF9CVUZTWikpIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkoc3RyLCBidWYsIGxlbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsgLyogTm8gZnVydGhlciBhY2Nlc3MgdG8gc3RyIGJlbG93IHRoaXMgcG9pbnQgKi8KKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlKG9iX2FyZywgInMqOmlvY3RsIiwgJnBzdHIpKSB7CisgICAgICAgICAgICBzdHIgPSBwc3RyLmJ1ZjsKKyAgICAgICAgICAgIGxlbiA9IHBzdHIubGVuOwogICAgICAgICAgICAgaWYgKGxlbiA+IElPQ1RMX0JVRlNaKSB7CiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJpb2N0bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpb2N0bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7Ci0gICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGFyZyA9IGJ1ZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoYnVmID09IGFyZykgewotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyAvKiB0aGluayBhcnJheS5yZXNpemUoKSAqLwotICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGFyZyk7CisgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYnVmKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobXV0YXRlX2FyZyAmJiAobGVuIDw9IElPQ1RMX0JVRlNaKSkgewotICAgICAgICAgICAgbWVtY3B5KHN0ciwgYnVmLCBsZW4pOwotICAgICAgICB9Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOyAvKiBObyBmdXJ0aGVyIGFjY2VzcyB0byBzdHIgYmVsb3cgdGhpcyBwb2ludCAqLwotICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmV0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CiAgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJklzKjppb2N0bCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmcHN0cikpIHsKLSAgICAgICAgc3RyID0gcHN0ci5idWY7Ci0gICAgICAgIGxlbiA9IHBzdHIubGVuOwotICAgICAgICBpZiAobGVuID4gSU9DVExfQlVGU1opIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImlvY3RsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKG9iX2FyZywKKyAgICAgICAgICAgICAiaTtpb2N0bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKKyAgICAgICAgICAgICAiIGFuIGludGVnZXIgYW5kIG9wdGlvbmFsbHkgYW4gaW50ZWdlciBvciBidWZmZXIgYXJndW1lbnQiLAorICAgICAgICAgICAgICZhcmcpKSB7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOwotICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGJ1Zik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7Ci0gICAgfQotCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBhcmcgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgIk8mSXxpO2lvY3RsIHJlcXVpcmVzIGEgZmlsZSBvciBmaWxlIGRlc2NyaXB0b3IsIgotICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGFuIGludGVnZXIgb3IgYnVmZmVyIGFyZ3VtZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkgewotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIC8vIEZhbGwtdGhyb3VnaCB0byBvdXRzaWRlIHRoZSAnaWYnIHN0YXRlbWVudC4KICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOwpAQCAtMjE4LDUyICsyNjUsMjUgQEAKICN1bmRlZiBJT0NUTF9CVUZTWgogfQogCi1QeURvY19TVFJWQVIoaW9jdGxfZG9jLAotImlvY3RsKGZkLCBvcFssIGFyZ1ssIG11dGF0ZV9mbGFnXV0pXG5cCi1cblwKLVBlcmZvcm0gdGhlIG9wZXJhdGlvbiBvcCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuICBUaGUgdmFsdWVzIHVzZWQgZm9yIG9wXG5cCi1hcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlIGFzIGNvbnN0YW50cyBpbiB0aGVcblwKLWZjbnRsIG9yIHRlcm1pb3MgbGlicmFyeSBtb2R1bGVzLCB1c2luZyB0aGUgc2FtZSBuYW1lcyBhcyB1c2VkIGluIHRoZVxuXAotcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuXG5cCi1cblwKLVRoZSBhcmd1bWVudCBhcmcgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGFcblwKLWJ1ZmZlciBjb250YWluaW5nIGNoYXJhY3RlciBkYXRhIChtb3N0IGxpa2VseSBhIHN0cmluZyBvciBhbiBhcnJheSkuIFxuXAotXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZVxuXAotbXV0YXRlX2ZsYWcgYXJndW1lbnQgKHdoaWNoIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGlzIGNhc2UpIGlzIHRydWUgdGhlbiB0aGVcblwKLWJ1ZmZlciBpcyAoaW4gZWZmZWN0KSBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGNoYW5nZXMgbWFkZSBieVxuXAotdGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhc1xuXAotcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHJldHVybmVkIGJ5IHRoZSBpb2N0bCBzeXN0ZW1cblwKLWNhbGwuXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIGFuZCB0aGUgbXV0YWJsZV9mbGFnIGFyZ3VtZW50IGlzIG5vdFxuXAotcGFzc2VkIG9yIGlzIGZhbHNlLCB0aGUgYmVoYXZpb3IgaXMgYXMgaWYgYSBzdHJpbmcgaGFkIGJlZW4gcGFzc2VkLiAgVGhpc1xuXAotYmVoYXZpb3Igd2lsbCBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzIG9mIFB5dGhvbi5cblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGltbXV0YWJsZSBidWZmZXIgKG1vc3QgbGlrZWx5IGEgc3RyaW5nKSB0aGVuIGEgY29weVxuXAotb2YgdGhlIGJ1ZmZlciBpcyBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgYVxuXAotc3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpblxuXAotdGhlIGJ1ZmZlci4gIFRoZSBsZW5ndGggb2YgdGhlIGFyZyBidWZmZXIgaW4gdGhpcyBjYXNlIGlzIG5vdCBhbGxvd2VkIHRvXG5cCi1leGNlZWQgMTAyNCBieXRlcy5cblwKLVxuXAotSWYgdGhlIGFyZyBnaXZlbiBpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzXG5cCi1hbiBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW9jdGwgY2FsbCBpbiB0aGUgQ1xuXAotY29kZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2ZjbnRsLmZsb2NrCiAKKyAgICBmZDogb2JqZWN0KHR5cGU9J2ludCcsIGNvbnZlcnRlcj0nY29udl9kZXNjcmlwdG9yJykKKyAgICBvcGVyYXRpb24gYXMgY29kZTogaW50CisgICAgLwogCi0vKiBmbG9jayhmZCwgb3BlcmF0aW9uKSAqLworUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gYG9wZXJhdGlvbmAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuCisKK1NlZSB0aGUgVW5peCBtYW51YWwgcGFnZSBmb3IgZmxvY2soMikgZm9yIGRldGFpbHMgKE9uIHNvbWUgc3lzdGVtcywgdGhpcworZnVuY3Rpb24gaXMgZW11bGF0ZWQgdXNpbmcgZmNudGwoKSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1mY250bF9mbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitmY250bF9mbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzkwMzUxMzNhN2RiZmM5NiBpbnB1dD1iNzBhMGE0MWNhMjJhOGEwXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBjb2RlOwogICAgIGludCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpmbG9jayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgSEFWRV9GTE9DSwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXQgPSBmbG9jayhmZCwgY29kZSk7CkBAIC0yOTksMjkgKzMxOSw1MCBAQAogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihmbG9ja19kb2MsCi0iZmxvY2soZmQsIG9wZXJhdGlvbilcblwKLVxuXAotUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgU2VlIHRoZSBVbml4IFxuXAotbWFudWFsIHBhZ2UgZm9yIGZsb2NrKDIpIGZvciBkZXRhaWxzLiAgKE9uIHNvbWUgc3lzdGVtcywgdGhpcyBmdW5jdGlvbiBpc1xuXAotZW11bGF0ZWQgdXNpbmcgZmNudGwoKS4pIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2ZjbnRsLmxvY2tmCiAKLS8qIGxvY2tmKGZkLCBvcGVyYXRpb24pICovCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgY21kIGFzIGNvZGU6IGludAorICAgIGxlbiBhcyBsZW5vYmo6IG9iamVjdChjX2RlZmF1bHQ9J05VTEwnKSA9IDAKKyAgICBzdGFydCBhcyBzdGFydG9iajogb2JqZWN0KGNfZGVmYXVsdD0nTlVMTCcpID0gMAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KKworQSB3cmFwcGVyIGFyb3VuZCB0aGUgZmNudGwoKSBsb2NraW5nIGNhbGxzLgorCitgZmRgIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCBvcGVyYXRpb24gaXMgb25lCitvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKworICAgIExPQ0tfVU4gLSB1bmxvY2sKKyAgICBMT0NLX1NIIC0gYWNxdWlyZSBhIHNoYXJlZCBsb2NrCisgICAgTE9DS19FWCAtIGFjcXVpcmUgYW4gZXhjbHVzaXZlIGxvY2sKKworV2hlbiBvcGVyYXRpb24gaXMgTE9DS19TSCBvciBMT0NLX0VYLCBpdCBjYW4gYWxzbyBiZSBiaXR3aXNlIE9SZWQgd2l0aAorTE9DS19OQiB0byBhdm9pZCBibG9ja2luZyBvbiBsb2NrIGFjcXVpc2l0aW9uLiAgSWYgTE9DS19OQiBpcyB1c2VkIGFuZCB0aGUKK2xvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbiBJT0Vycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwKK2hhdmUgYW4gZXJybm8gYXR0cmlidXRlIHNldCB0byBFQUNDRVMgb3IgRUFHQUlOIChkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGluZworc3lzdGVtIC0tIGZvciBwb3J0YWJpbGl0eSwgY2hlY2sgZm9yIGVpdGhlciB2YWx1ZSkuCisKK2BsZW5gIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgd2l0aCB0aGUgZGVmYXVsdCBtZWFuaW5nIHRvIGxvY2sgdG8KK0VPRi4gIGBzdGFydGAgaXMgdGhlIGJ5dGUgb2Zmc2V0LCByZWxhdGl2ZSB0byBgd2hlbmNlYCwgdG8gdGhhdCB0aGUgbG9jaworc3RhcnRzLiAgYHdoZW5jZWAgaXMgYXMgd2l0aCBmaWxlb2JqLnNlZWsoKSwgc3BlY2lmaWNhbGx5OgorCisgICAgMCAtIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZmlsZSAoU0VFS19TRVQpCisgICAgMSAtIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAoU0VFS19DVVIpCisgICAgMiAtIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgKFNFRUtfRU5EKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZmNudGxfbG9ja2YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorZmNudGxfbG9ja2ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlLCBQeU9iamVjdCAqbGVub2JqLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRvYmosIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFhZjM1ZWJhMDhiOWFmNyBpbnB1dD05YzU5NDM5MWRlODIxZjI0XSovCiB7Ci0gICAgaW50IGZkLCBjb2RlLCByZXQsIHdoZW5jZSA9IDA7Ci0gICAgUHlPYmplY3QgKmxlbm9iaiA9IE5VTEwsICpzdGFydG9iaiA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPT2k6bG9ja2YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCByZXQ7CiAKICNpZm5kZWYgTE9DS19TSAogI2RlZmluZSBMT0NLX1NIICAgICAgICAgMSAgICAgICAvKiBzaGFyZWQgbG9jayAqLwpAQCAtMzc0LDQzICs0MTUsMTcgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9ja2ZfZG9jLAotImxvY2tmIChmZCwgb3BlcmF0aW9uLCBsZW5ndGg9MCwgc3RhcnQ9MCwgd2hlbmNlPTApXG5cCi1cblwKLVRoaXMgaXMgZXNzZW50aWFsbHkgYSB3cmFwcGVyIGFyb3VuZCB0aGUgZmNudGwoKSBsb2NraW5nIGNhbGxzLiAgZmQgaXMgdGhlXG5cCi1maWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCBvcGVyYXRpb24gaXMgb25lIG9mIHRoZVxuXAotZm9sbG93aW5nIHZhbHVlczpcblwKLVxuXAotICAgIExPQ0tfVU4gLSB1bmxvY2tcblwKLSAgICBMT0NLX1NIIC0gYWNxdWlyZSBhIHNoYXJlZCBsb2NrXG5cCi0gICAgTE9DS19FWCAtIGFjcXVpcmUgYW4gZXhjbHVzaXZlIGxvY2tcblwKLVxuXAotV2hlbiBvcGVyYXRpb24gaXMgTE9DS19TSCBvciBMT0NLX0VYLCBpdCBjYW4gYWxzbyBiZSBiaXR3aXNlIE9SZWQgd2l0aFxuXAotTE9DS19OQiB0byBhdm9pZCBibG9ja2luZyBvbiBsb2NrIGFjcXVpc2l0aW9uLiAgSWYgTE9DS19OQiBpcyB1c2VkIGFuZCB0aGVcblwKLWxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbiBJT0Vycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGxcblwKLWhhdmUgYW4gZXJybm8gYXR0cmlidXRlIHNldCB0byBFQUNDRVMgb3IgRUFHQUlOIChkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGluZ1xuXAotc3lzdGVtIC0tIGZvciBwb3J0YWJpbGl0eSwgY2hlY2sgZm9yIGVpdGhlciB2YWx1ZSkuXG5cCi1cblwKLWxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvXG5cCi1FT0YuICBzdGFydCBpcyB0aGUgYnl0ZSBvZmZzZXQsIHJlbGF0aXZlIHRvIHdoZW5jZSwgdG8gdGhhdCB0aGUgbG9ja1xuXAotc3RhcnRzLiAgd2hlbmNlIGlzIGFzIHdpdGggZmlsZW9iai5zZWVrKCksIHNwZWNpZmljYWxseTpcblwKLVxuXAotICAgIDAgLSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKFNFRUtfU0VUKVxuXAotICAgIDEgLSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBidWZmZXIgcG9zaXRpb24gKFNFRUtfQ1VSKVxuXAotICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkiKTsKLQogLyogTGlzdCBvZiBmdW5jdGlvbnMgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIGZjbnRsX21ldGhvZHNbXSA9IHsKLSAgICB7ImZjbnRsIiwgICAgICAgICAgIGZjbnRsX2ZjbnRsLCBNRVRIX1ZBUkFSR1MsIGZjbnRsX2RvY30sCi0gICAgeyJpb2N0bCIsICAgICAgICAgICBmY250bF9pb2N0bCwgTUVUSF9WQVJBUkdTLCBpb2N0bF9kb2N9LAotICAgIHsiZmxvY2siLCAgICAgICAgICAgZmNudGxfZmxvY2ssIE1FVEhfVkFSQVJHUywgZmxvY2tfZG9jfSwKLSAgICB7ImxvY2tmIiwgICAgICAgZmNudGxfbG9ja2YsIE1FVEhfVkFSQVJHUywgbG9ja2ZfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworICAgIEZDTlRMX0ZDTlRMX01FVEhPRERFRgorICAgIEZDTlRMX0lPQ1RMX01FVEhPRERFRgorICAgIEZDTlRMX0ZMT0NLX01FVEhPRERFRgorICAgIEZDTlRMX0xPQ0tGX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nY21vZHVsZS5jIGIvTW9kdWxlcy9nY21vZHVsZS5jCmluZGV4IDliYjM2NjYuLmNiNzIyMmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL2djbW9kdWxlLmMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiICAgICAgICAvKiBmb3IgUHlGcmFtZV9DbGVhckZyZWVMaXN0ICovCisjaW5jbHVkZSAicHl0aW1lLmgiICAgICAgICAgICAgIC8qIGZvciBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKi8KIAogLyogR2V0IGFuIG9iamVjdCdzIEdDIGhlYWQgKi8KICNkZWZpbmUgQVNfR0MobykgKChQeUdDX0hlYWQgKikobyktMSkKQEAgLTE2Niw3ICsxNjcsNiBAQAogICAgICAgICAgICAgICAgIERFQlVHX1VOQ09MTEVDVEFCTEUgfCBcCiAgICAgICAgICAgICAgICAgREVCVUdfU0FWRUFMTAogc3RhdGljIGludCBkZWJ1ZzsKLXN0YXRpYyBQeU9iamVjdCAqdG1vZCA9IE5VTEw7CiAKIC8qIFJ1bm5pbmcgc3RhdHMgcGVyIGdlbmVyYXRpb24gKi8KIHN0cnVjdCBnY19nZW5lcmF0aW9uX3N0YXRzIHsKQEAgLTg5NCwyNiArODk0LDYgQEAKICAgICAodm9pZClQeVNldF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKLXN0YXRpYyBkb3VibGUKLWdldF90aW1lKHZvaWQpCi17Ci0gICAgZG91YmxlIHJlc3VsdCA9IDA7Ci0gICAgaWYgKHRtb2QgIT0gTlVMTCkgewotICAgICAgICBfUHlfSURFTlRJRklFUih0aW1lKTsKLQotICAgICAgICBQeU9iamVjdCAqZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodG1vZCwgJlB5SWRfdGltZSwgTlVMTCk7Ci0gICAgICAgIGlmIChmID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlGbG9hdF9DaGVjayhmKSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0FzRG91YmxlKGYpOwotICAgICAgICAgICAgUHlfREVDUkVGKGYpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCiAgKiBjb2xsZWN0aW9uIHByb2Nlc3Mgd29ya3MuICovCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtOTI4LDcgKzkwOCw4IEBACiAgICAgUHlHQ19IZWFkIHVucmVhY2hhYmxlOyAvKiBub24tcHJvYmxlbWF0aWMgdW5yZWFjaGFibGUgdHJhc2ggKi8KICAgICBQeUdDX0hlYWQgZmluYWxpemVyczsgIC8qIG9iamVjdHMgd2l0aCwgJiByZWFjaGFibGUgZnJvbSwgX19kZWxfXyAqLwogICAgIFB5R0NfSGVhZCAqZ2M7Ci0gICAgZG91YmxlIHQxID0gMC4wOworICAgIF9QeVRpbWVfdCB0MSA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGEgY29tcGlsZXIgd2FybmluZyAqLworCiAgICAgc3RydWN0IGdjX2dlbmVyYXRpb25fc3RhdHMgKnN0YXRzID0gJmdlbmVyYXRpb25fc3RhdHNbZ2VuZXJhdGlvbl07CiAKICAgICBpZiAoZGVidWcgJiBERUJVR19TVEFUUykgewpAQCAtOTM2LDkgKzkxNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uKTsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBvYmplY3RzIGluIGVhY2ggZ2VuZXJhdGlvbjoiKTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9HRU5FUkFUSU9OUzsgaSsrKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiAlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiICV6ZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY19saXN0X3NpemUoR0VOX0hFQUQoaSkpKTsKLSAgICAgICAgdDEgPSBnZXRfdGltZSgpOworICAgICAgICB0MSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiXG4iKTsKICAgICB9CiAKQEAgLTEwNDIsMTkgKzEwMjQsMTYgQEAKICAgICAgICAgICAgIGRlYnVnX2N5Y2xlKCJ1bmNvbGxlY3RhYmxlIiwgRlJPTV9HQyhnYykpOwogICAgIH0KICAgICBpZiAoZGVidWcgJiBERUJVR19TVEFUUykgewotICAgICAgICBkb3VibGUgdDIgPSBnZXRfdGltZSgpOworICAgICAgICBfUHlUaW1lX3QgdDIgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgaWYgKG0gPT0gMCAmJiBuID09IDApCiAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiZ2M6IGRvbmUiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgImdjOiBkb25lLCAiCi0gICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgdW5yZWFjaGFibGUsICIKLSAgICAgICAgICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCB1bmNvbGxlY3RhYmxlIiwKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigKKyAgICAgICAgICAgICAgICAiZ2M6IGRvbmUsICV6ZCB1bnJlYWNoYWJsZSwgJXpkIHVuY29sbGVjdGFibGUiLAogICAgICAgICAgICAgICAgIG4rbSwgbik7Ci0gICAgICAgIGlmICh0MSAmJiB0MikgewotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiwgJS40ZnMgZWxhcHNlZCIsIHQyLXQxKTsKLSAgICAgICAgfQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiLlxuIik7CisgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIsICUuNGZzIGVsYXBzZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHQyIC0gdDEpKTsKICAgICB9CiAKICAgICAvKiBBcHBlbmQgaW5zdGFuY2VzIGluIHRoZSB1bmNvbGxlY3RhYmxlIHNldCB0byBhIFB5dGhvbgpAQCAtMTU4MSwxOCArMTU2MCw2IEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiY2FsbGJhY2tzIiwgY2FsbGJhY2tzKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogSW1wb3J0aW5nIGNhbid0IGJlIGRvbmUgaW4gY29sbGVjdCgpIGJlY2F1c2UgY29sbGVjdCgpCi0gICAgICogY2FuIGJlIGNhbGxlZCB2aWEgUHlHQ19Db2xsZWN0KCkgaW4gUHlfRmluYWxpemUoKS4KLSAgICAgKiBUaGlzIHdvdWxkbid0IGJlIGEgcHJvYmxlbSwgZXhjZXB0IHRoYXQgPGluaXRpYWxpemVkPiBpcwotICAgICAqIHJlc2V0IHRvIDAgYmVmb3JlIGNhbGxpbmcgY29sbGVjdCB3aGljaCB0cmlwcyB1cAotICAgICAqIHRoZSBpbXBvcnQgYW5kIHRyaWdnZXJzIGFuIGFzc2VydGlvbi4KLSAgICAgKi8KLSAgICBpZiAodG1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIHRtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7Ci0gICAgICAgIGlmICh0bW9kID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLQogI2RlZmluZSBBRERfSU5UKE5BTUUpIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAjTkFNRSwgTkFNRSkgPCAwKSByZXR1cm4gTlVMTAogICAgIEFERF9JTlQoREVCVUdfU1RBVFMpOwogICAgIEFERF9JTlQoREVCVUdfQ09MTEVDVEFCTEUpOwpAQCAtMTY4MSw3ICsxNjQ4LDYgQEAKIF9QeUdDX0Zpbmkodm9pZCkKIHsKICAgICBQeV9DTEVBUihjYWxsYmFja3MpOwotICAgIFB5X0NMRUFSKHRtb2QpOwogfQogCiAvKiBmb3IgZGVidWdnaW5nICovCkBAIC0xNzE1LDE1ICsxNjgxLDE5IEBACiAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKG9wKTsKIH0KIAotUHlPYmplY3QgKgotX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QgYmFzaWNzaXplKQorc3RhdGljIFB5T2JqZWN0ICoKK19QeU9iamVjdF9HQ19BbGxvYyhpbnQgdXNlX2NhbGxvYywgc2l6ZV90IGJhc2ljc2l6ZSkKIHsKICAgICBQeU9iamVjdCAqb3A7CiAgICAgUHlHQ19IZWFkICpnOworICAgIHNpemVfdCBzaXplOwogICAgIGlmIChiYXNpY3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeUdDX0hlYWQpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBnID0gKFB5R0NfSGVhZCAqKVB5T2JqZWN0X01BTExPQygKLSAgICAgICAgc2l6ZW9mKFB5R0NfSGVhZCkgKyBiYXNpY3NpemUpOworICAgIHNpemUgPSBzaXplb2YoUHlHQ19IZWFkKSArIGJhc2ljc2l6ZTsKKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9DYWxsb2MoMSwgc2l6ZSk7CisgICAgZWxzZQorICAgICAgICBnID0gKFB5R0NfSGVhZCAqKVB5T2JqZWN0X01hbGxvYyhzaXplKTsKICAgICBpZiAoZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICBnLT5nYy5nY19yZWZzID0gMDsKQEAgLTE3NDMsNiArMTcxMywxOCBAQAogfQogCiBQeU9iamVjdCAqCitfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBiYXNpY3NpemUpCit7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HQ19BbGxvYygwLCBiYXNpY3NpemUpOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfR0NfQ2FsbG9jKHNpemVfdCBiYXNpY3NpemUpCit7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HQ19BbGxvYygxLCBiYXNpY3NpemUpOworfQorCitQeU9iamVjdCAqCiBfUHlPYmplY3RfR0NfTmV3KFB5VHlwZU9iamVjdCAqdHApCiB7CiAgICAgUHlPYmplY3QgKm9wID0gX1B5T2JqZWN0X0dDX01hbGxvYyhfUHlPYmplY3RfU0laRSh0cCkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCAxM2UzODE3Li4wM2QyOTJjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtMTMxLDYgKzEzMSwyMyBAQAogc3RhdGljIHdjaGFyX3QgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKIHN0YXRpYyB3Y2hhcl90ICptb2R1bGVfc2VhcmNoX3BhdGggPSBOVUxMOwogCisvKiBHZXQgZmlsZSBzdGF0dXMuIEVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworCitzdGF0aWMgaW50CitfUHlfd3N0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3sKKyAgICBpbnQgZXJyOworICAgIGNoYXIgKmZuYW1lOworICAgIGZuYW1lID0gUHlfRW5jb2RlTG9jYWxlKHBhdGgsIE5VTEwpOworICAgIGlmIChmbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVyciA9IHN0YXQoZm5hbWUsIGJ1Zik7CisgICAgUHlNZW1fRnJlZShmbmFtZSk7CisgICAgcmV0dXJuIGVycjsKK30KKwogc3RhdGljIHZvaWQKIHJlZHVjZSh3Y2hhcl90ICpkaXIpCiB7CkBAIC0xNTMsMTQgKzE3MCwxNCBAQAogCiAKIHN0YXRpYyBpbnQKLWlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lKSAgICAgICAgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCitpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5YyB0b28gKi8KIHsKICAgICBpZiAoaXNmaWxlKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvKiBDaGVjayBmb3IgdGhlIGNvbXBpbGVkIHZlcnNpb24gb2YgcHJlZml4LiAqLwogICAgIGlmICh3Y3NsZW4oZmlsZW5hbWUpIDwgTUFYUEFUSExFTikgewotICAgICAgICB3Y3NjYXQoZmlsZW5hbWUsIFB5X09wdGltaXplRmxhZyA/IEwibyIgOiBMImMiKTsKKyAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBMImMiKTsKICAgICAgICAgaWYgKGlzZmlsZShmaWxlbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0zMzYsNyArMzUzLDcgQEAKICAgICBqb2lucGF0aChwcmVmaXgsIEwiTW9kdWxlcy9TZXR1cCIpOwogICAgIGlmIChpc2ZpbGUocHJlZml4KSkgewogICAgICAgICAvKiBDaGVjayBWUEFUSCB0byBzZWUgaWYgYXJndjBfcGF0aCBpcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiAqLwotICAgICAgICB2cGF0aCA9IF9QeV9jaGFyMndjaGFyKFZQQVRILCBOVUxMKTsKKyAgICAgICAgdnBhdGggPSBQeV9EZWNvZGVMb2NhbGUoVlBBVEgsIE5VTEwpOwogICAgICAgICBpZiAodnBhdGggIT0gTlVMTCkgewogICAgICAgICAgICAgd2NzbmNweShwcmVmaXgsIGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4pOwogICAgICAgICAgICAgcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7CkBAIC00OTEsMTAgKzUwOCwxMCBAQAogICAgIHdjaGFyX3QgKl9weXRob25wYXRoLCAqX3ByZWZpeCwgKl9leGVjX3ByZWZpeDsKICAgICB3Y2hhcl90ICpsaWJfcHl0aG9uOwogCi0gICAgX3B5dGhvbnBhdGggPSBfUHlfY2hhcjJ3Y2hhcihQWVRIT05QQVRILCBOVUxMKTsKLSAgICBfcHJlZml4ID0gX1B5X2NoYXIyd2NoYXIoUFJFRklYLCBOVUxMKTsKLSAgICBfZXhlY19wcmVmaXggPSBfUHlfY2hhcjJ3Y2hhcihFWEVDX1BSRUZJWCwgTlVMTCk7Ci0gICAgbGliX3B5dGhvbiA9IF9QeV9jaGFyMndjaGFyKCJsaWIvcHl0aG9uIiBWRVJTSU9OLCBOVUxMKTsKKyAgICBfcHl0aG9ucGF0aCA9IFB5X0RlY29kZUxvY2FsZShQWVRIT05QQVRILCBOVUxMKTsKKyAgICBfcHJlZml4ID0gUHlfRGVjb2RlTG9jYWxlKFBSRUZJWCwgTlVMTCk7CisgICAgX2V4ZWNfcHJlZml4ID0gUHlfRGVjb2RlTG9jYWxlKEVYRUNfUFJFRklYLCBOVUxMKTsKKyAgICBsaWJfcHl0aG9uID0gUHlfRGVjb2RlTG9jYWxlKCJsaWIvcHl0aG9uIiBWRVJTSU9OLCBOVUxMKTsKIAogICAgIGlmICghX3B5dGhvbnBhdGggfHwgIV9wcmVmaXggfHwgIV9leGVjX3ByZWZpeCB8fCAhbGliX3B5dGhvbikgewogICAgICAgICBQeV9GYXRhbEVycm9yKApAQCAtNTAzLDcgKzUyMCw3IEBACiAgICAgfQogCiAgICAgaWYgKF9wYXRoKSB7Ci0gICAgICAgIHBhdGhfYnVmZmVyID0gX1B5X2NoYXIyd2NoYXIoX3BhdGgsIE5VTEwpOworICAgICAgICBwYXRoX2J1ZmZlciA9IFB5X0RlY29kZUxvY2FsZShfcGF0aCwgTlVMTCk7CiAgICAgICAgIHBhdGggPSBwYXRoX2J1ZmZlcjsKICAgICB9CiAKQEAgLTU4NCw3ICs2MDEsNyBAQAogICAgICAgICAqKiBiZSBydW5uaW5nIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LCBzbyB3ZSB1c2UgdGhlCiAgICAgICAgICoqIGJ1aWxkLWRpcmVjdG9yeS1zcGVjaWZpYyBsb2dpYyB0byBmaW5kIExpYiBhbmQgc3VjaC4KICAgICAgICAgKi8KLSAgICAgICAgd2NoYXJfdCogd2J1ZiA9IF9QeV9jaGFyMndjaGFyKG1vZFBhdGgsIE5VTEwpOworICAgICAgICB3Y2hhcl90KiB3YnVmID0gUHlfRGVjb2RlTG9jYWxlKG1vZFBhdGgsIE5VTEwpOwogICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgZGVjb2RlIGZyYW1ld29yayBsb2NhdGlvbiIpOwogICAgICAgICB9CkBAIC03MDksNyArNzI2LDcgQEAKIAogICAgIGlmIChfcnRweXBhdGggJiYgX3J0cHlwYXRoWzBdICE9ICdcMCcpIHsKICAgICAgICAgc2l6ZV90IHJ0cHlwYXRoX2xlbjsKLSAgICAgICAgcnRweXBhdGggPSBfUHlfY2hhcjJ3Y2hhcihfcnRweXBhdGgsICZydHB5cGF0aF9sZW4pOworICAgICAgICBydHB5cGF0aCA9IFB5X0RlY29kZUxvY2FsZShfcnRweXBhdGgsICZydHB5cGF0aF9sZW4pOwogICAgICAgICBpZiAocnRweXBhdGggIT0gTlVMTCkKICAgICAgICAgICAgIGJ1ZnN6ICs9IHJ0cHlwYXRoX2xlbiArIDE7CiAgICAgfQpAQCAtODc0LDQgKzg5MSwzIEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dycG1vZHVsZS5jIGIvTW9kdWxlcy9ncnBtb2R1bGUuYwppbmRleCBkYTc4MjUzLi40MDNlNDM0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dycG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKQEAgLTYsNiArNiwxMiBAQAogCiAjaW5jbHVkZSA8Z3JwLmg+CiAKKyNpbmNsdWRlICJjbGluaWMvZ3JwbW9kdWxlLmMuaCIKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBncnAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWNhZGU2M2YyZWQxYmQ5ZjhdKi8KKwogc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgc3RydWN0X2dyb3VwX3R5cGVfZmllbGRzW10gPSB7CiAgICB7ImdyX25hbWUiLCAiZ3JvdXAgbmFtZSJ9LAogICAgeyJncl9wYXNzd2QiLCAicGFzc3dvcmQifSwKQEAgLTc2LDE0ICs4MiwyNSBAQAogICAgIHJldHVybiB2OwogfQogCisvKltjbGluaWMgaW5wdXRdCitncnAuZ2V0Z3JnaWQKKworICAgIGlkOiBvYmplY3QKKworUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgZ3JvdXAgSUQuCisKK0lmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ncnBfZ2V0Z3JnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpweW9faWQpCitncnBfZ2V0Z3JnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGExMWY1ZmRlYjhjNzhhMCBpbnB1dD0xNWZhMGUyY2NmNWNkYTI1XSovCiB7CiAgICAgUHlPYmplY3QgKnB5X2ludF9pZDsKICAgICBnaWRfdCBnaWQ7CiAgICAgc3RydWN0IGdyb3VwICpwOwogCi0gICAgcHlfaW50X2lkID0gUHlOdW1iZXJfTG9uZyhweW9faWQpOworICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOwogICAgIGlmICghcHlfaW50X2lkKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihweV9pbnRfaWQsICZnaWQpKSB7CkBAIC0xMDMsMjIgKzEyMCwzMSBAQAogICAgIHJldHVybiBta2dyZW50KHApOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdybmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIHN0cnVjdCBncm91cCAqcDsKLSAgICBQeU9iamVjdCAqYXJnLCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdybmFtCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0Z3JuYW0iLCAmYXJnKSkKKyAgICBuYW1lOiB1bmljb2RlCisKK1JldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBncm91cCBuYW1lLgorCitJZiBuYW1lIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZDQ3NTExZjQ4NTRkYThlIGlucHV0PTA4ZGVkMjlhZmZhM2M4NjNdKi8KK3sKKyAgICBjaGFyICpuYW1lX2NoYXJzOworICAgIHN0cnVjdCBncm91cCAqcDsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKChieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQobmFtZSkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQorICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWVfY2hhcnMsIE5VTEwpID09IC0xKQogICAgICAgICBnb3RvIG91dDsKIAotICAgIGlmICgocCA9IGdldGdybmFtKG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgImdldGdybmFtKCk6IG5hbWUgbm90IGZvdW5kOiAlcyIsIG5hbWUpOworICAgIGlmICgocCA9IGdldGdybmFtKG5hbWVfY2hhcnMpKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgImdldGdybmFtKCk6IG5hbWUgbm90IGZvdW5kOiAlcyIsIG5hbWVfY2hhcnMpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgcmV0dmFsID0gbWtncmVudChwKTsKQEAgLTEyNyw4ICsxNTMsMTggQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisvKltjbGluaWMgaW5wdXRdCitncnAuZ2V0Z3JhbGwKKworUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGdyb3VwIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci4KKworQW4gZW50cnkgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAnKycgb3IgJy0nIHJlcHJlc2VudHMgYW4gaW5zdHJ1Y3Rpb24KK3RvIHVzZSBZUC9OSVMgYW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSB2aWEgZ2V0Z3JuYW0gb3IgZ2V0Z3JnaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ncnBfZ2V0Z3JhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppZ25vcmUpCitncnBfZ2V0Z3JhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFkZDkwMzdhMjBjMjAyZGUgaW5wdXQ9ZDdkZjc2YzgyNWMzNjdkZl0qLwogewogICAgIFB5T2JqZWN0ICpkOwogICAgIHN0cnVjdCBncm91cCAqcDsKQEAgLTE1MSwyMCArMTg3LDEwIEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBncnBfbWV0aG9kc1tdID0gewotICAgIHsiZ2V0Z3JnaWQiLCAgICAgICAgZ3JwX2dldGdyZ2lkLCAgIE1FVEhfTywKLSAgICAgImdldGdyZ2lkKGlkKSAtPiAoZ3JfbmFtZSxncl9wYXNzd2QsZ3JfZ2lkLGdyX21lbSlcblwKLVJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELiAgSWZcblwKLWlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIn0sCi0gICAgeyJnZXRncm5hbSIsICAgICAgICBncnBfZ2V0Z3JuYW0sICAgTUVUSF9WQVJBUkdTLAotICAgICAiZ2V0Z3JuYW0obmFtZSkgLT4gKGdyX25hbWUsZ3JfcGFzc3dkLGdyX2dpZCxncl9tZW0pXG5cCi1SZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gZ3JvdXAgbmFtZS4gIElmXG5cCi1uYW1lIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIn0sCi0gICAgeyJnZXRncmFsbCIsICAgICAgICBncnBfZ2V0Z3JhbGwsICAgTUVUSF9OT0FSR1MsCi0gICAgICJnZXRncmFsbCgpIC0+IGxpc3Qgb2YgdHVwbGVzXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZ3JvdXAgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuXAotQW4gZW50cnkgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAnKycgb3IgJy0nIHJlcHJlc2VudHMgYW4gaW5zdHJ1Y3Rpb25cblwKLXRvIHVzZSBZUC9OSVMgYW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSB2aWEgZ2V0Z3JuYW0gb3IgZ2V0Z3JnaWQuIn0sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBHUlBfR0VUR1JHSURfTUVUSE9EREVGCisgICAgR1JQX0dFVEdSTkFNX01FVEhPRERFRgorICAgIEdSUF9HRVRHUkFMTF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KIH07CiAKIFB5RG9jX1NUUlZBUihncnBfX2RvY19fLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggNjYzNGExNy4uMDI5MWIyNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0zODc0LDcgKzM4NzQsNyBAQAogCiBmYXN0X21vZGU6ICB3aGVuIGNudCBhbiBpbnRlZ2VyIDwgUFlfU1NJWkVfVF9NQVggYW5kIG5vIHN0ZXAgaXMgc3BlY2lmaWVkLgogCi0gICAgYXNzZXJ0KGNudCAhPSBQWV9TU0laRV9UX01BWCAmJiBsb25nX2NudCA9PSBOVUxMICYmIGxvbmdfc3RlcD09UHlJbnQoMSkpOworICAgIGFzc2VydChjbnQgIT0gUFlfU1NJWkVfVF9NQVggJiYgbG9uZ19jbnQgPT0gTlVMTCAmJiBsb25nX3N0ZXA9PVB5TG9uZygxKSk7CiAgICAgQWR2YW5jZXMgd2l0aDogIGNudCArPSAxCiAgICAgV2hlbiBjb3VudCBoaXRzIFlfU1NJWkVfVF9NQVgsIHN3aXRjaCB0byBzbG93X21vZGUuCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvbGRfc29fYWl4LmluIGIvTW9kdWxlcy9sZF9zb19haXguaW4KaW5kZXggODZhOWY3ZS4uOTYxNTMyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9sZF9zb19haXguaW4KKysrIGIvTW9kdWxlcy9sZF9zb19haXguaW4KQEAgLTUsNyArNSw3IEBACiAjICAgVFlQRTogICAgICAgICAgIGV4ZWN1dGFibGUsIHVzZXMgbWFrZXhwX2FpeAogIyAgIFNZU1RFTTogICAgICAgICBBSVgKICMKLSMgICBERVNDUklQVElPTjogICAgQ3JlYXRlcyBhIHNoYXJlYWJsZSAubyBmcm9tIGEgc2V0IG9mIHByZS1jb21waWxlZCAKKyMgICBERVNDUklQVElPTjogICAgQ3JlYXRlcyBhIHNoYXJlYWJsZSAubyBmcm9tIGEgc2V0IG9mIHByZS1jb21waWxlZAogIyAgICAgICAgICAgICAgICAgICAodW5zaGFyZWQpIC5vIGZpbGVzCiAjCiAjICAgVVNBR0U6ICAgICAgICAgIGxkX3NvX2FpeCBbQ0NdIFthcmd1bWVudHNdCkBAIC00Niw3ICs0Niw3IEBACiAjICAgICAgICAgICAgICAgICAgIDQuICBVbmNvbW1lbnRpbmcgdGhlICJlY2hvIiBsaW5lcyBnaXZlcyBkZXRhaWxlZCBvdXRwdXQKICMgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IHRoZSBjb21tYW5kcyBleGVjdXRlZCBpbiB0aGUgc2NyaXB0LgogIwotIyAgICAgICAgICAgICAgICAgICAgICAgCisjCiAjICAgSElTVE9SWTogICAgICAgIE9jdC0xOTk2ICAgIC0tIFN1cHBvcnQgYWRkZWQgZm9yIG11bHRpcGxlIC5vIGZpbGVzIC0tCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGFuZCBvcHRpb25hbCBhcmd1bWVudHMgcHJvY2Vzc2luZy4gIC0tCiAjICAgICAgICAgICAgICAgICAgIENocmlzIE15ZXJzIChteWVyc0B0Yy5jb3JuZWxsLmVkdSksIEtlaXRoIEt3b2sKQEAgLTEzMiw3ICsxMzIsNyBAQAogZG9uZQogCiBpZiB0ZXN0ICIkb2JqZmlsZSIgPSAibGlicHl0aG9uQFZFUlNJT05AQEFCSUZMQUdTQC5zbyI7IHRoZW4KLSAgbGRzb2NvcmVtb2RlPSJ0cnVlIiAKKyAgbGRzb2NvcmVtb2RlPSJ0cnVlIgogZmkKIAogaWYgdGVzdCAteiAiJG9ianMiOyB0aGVuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCmluZGV4IDg3YTIxZDcuLjJhOWVhMjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWFpbi5jCisrKyBiL01vZHVsZXMvbWFpbi5jCkBAIC05LDcgKzksNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpZmRlZiBIQVZFX0ZDTlRMX0gKICNpbmNsdWRlIDxmY250bC5oPgotI2RlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCiAjZW5kaWYKICNlbmRpZgogCkBAIC0zNDMsNiArMzQyLDggQEAKICAgICBpbnQgdmVyc2lvbiA9IDA7CiAgICAgaW50IHNhd191bmJ1ZmZlcmVkX2ZsYWcgPSAwOwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKKyAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb24gPSBOVUxMOworICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbnMgPSBOVUxMOwogCiAgICAgY2YuY2ZfZmxhZ3MgPSAwOwogCkBAIC00NjUsNyArNDY2LDE1IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdXJzoKLSAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb24oX1B5T1Nfb3B0YXJnKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICB3YXJuaW5nX29wdGlvbnMgPSBQeUxpc3RfTmV3KDApOworICAgICAgICAgICAgaWYgKHdhcm5pbmdfb3B0aW9ucyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHdhcm5pbmdfb3B0aW9uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihfUHlPU19vcHRhcmcsIC0xKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbik7CisgICAgICAgICAgICBQeV9ERUNSRUYod2FybmluZ19vcHRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnWCc6CkBAIC01MTEsMTYgKzUyMCwxNiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZyAmJiAod3AgPSBfd2dldGVudihMIlBZVEhPTldBUk5JTkdTIikpICYmCiAgICAgICAgICp3cCAhPSBMJ1wwJykgewotICAgICAgICB3Y2hhcl90ICpidWYsICp3YXJuaW5nOworICAgICAgICB3Y2hhcl90ICpidWYsICp3YXJuaW5nLCAqY29udGV4dCA9IE5VTEw7CiAKICAgICAgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9SYXdNYWxsb2MoKHdjc2xlbih3cCkgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnkgdG8gY29weSBQWVRIT05XQVJOSU5HUyIpOwogICAgICAgICB3Y3NjcHkoYnVmLCB3cCk7Ci0gICAgICAgIGZvciAod2FybmluZyA9IHdjc3RvayhidWYsIEwiLCIpOworICAgICAgICBmb3IgKHdhcm5pbmcgPSB3Y3N0b2tfcyhidWYsIEwiLCIsICZjb250ZXh0KTsKICAgICAgICAgICAgICB3YXJuaW5nICE9IE5VTEw7Ci0gICAgICAgICAgICAgd2FybmluZyA9IHdjc3RvayhOVUxMLCBMIiwiKSkgeworICAgICAgICAgICAgIHdhcm5pbmcgPSB3Y3N0b2tfcyhOVUxMLCBMIiwiLCAmY29udGV4dCkpIHsKICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb24od2FybmluZyk7CiAgICAgICAgIH0KICAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwpAQCAtNTU5LDYgKzU2OCwxMiBAQAogICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgfQogI2VuZGlmCisgICAgaWYgKHdhcm5pbmdfb3B0aW9ucyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRSh3YXJuaW5nX29wdGlvbnMpOyBpKyspIHsKKyAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKFB5TGlzdF9HRVRfSVRFTSh3YXJuaW5nX29wdGlvbnMsIGkpKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChjb21tYW5kID09IE5VTEwgJiYgbW9kdWxlID09IE5VTEwgJiYgX1B5T1Nfb3B0aW5kIDwgYXJnYyAmJgogICAgICAgICB3Y3NjbXAoYXJndltfUHlPU19vcHRpbmRdLCBMIi0iKSAhPSAwKQpAQCAtNjMxLDcgKzY0Niw3IEBACiAgICAgICAgICAgICAvKiBVc2VkIGJ5IE1hYy9Ub29scy9weXRob253LmMgdG8gZm9yd2FyZAogICAgICAgICAgICAgICogdGhlIGFyZ3YwIG9mIHRoZSBzdHViIGV4ZWN1dGFibGUKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgd2NoYXJfdCogd2J1ZiA9IF9QeV9jaGFyMndjaGFyKHB5dmVudl9sYXVuY2hlciwgTlVMTCk7CisgICAgICAgICAgICB3Y2hhcl90KiB3YnVmID0gUHlfRGVjb2RlTG9jYWxlKHB5dmVudl9sYXVuY2hlciwgTlVMTCk7CiAKICAgICAgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgZGVjb2RlIF9fUFlWRU5WX0xBVU5DSEVSX18iKTsKQEAgLTY1Miw2ICs2NjcsNyBAQAogICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwogI2VuZGlmCiAgICAgUHlfSW5pdGlhbGl6ZSgpOworICAgIFB5X1hERUNSRUYod2FybmluZ19vcHRpb25zKTsKIAogICAgIGlmICghUHlfUXVpZXRGbGFnICYmIChQeV9WZXJib3NlRmxhZyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmQgPT0gTlVMTCAmJiBmaWxlbmFtZSA9PSBOVUxMICYmCkBAIC03MTMsNyArNzI5LDcgQEAKICAgICAgICAgICAgICAgICBjaGFyICpjZmlsZW5hbWVfYnVmZmVyOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNmaWxlbmFtZTsKICAgICAgICAgICAgICAgICBpbnQgZXJyID0gZXJybm87Ci0gICAgICAgICAgICAgICAgY2ZpbGVuYW1lX2J1ZmZlciA9IF9QeV93Y2hhcjJjaGFyKGZpbGVuYW1lLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBjZmlsZW5hbWVfYnVmZmVyID0gUHlfRW5jb2RlTG9jYWxlKGZpbGVuYW1lLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoY2ZpbGVuYW1lX2J1ZmZlciAhPSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBjZmlsZW5hbWUgPSBjZmlsZW5hbWVfYnVmZmVyOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTczNiwxMSArNzUyLDEyIEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qIFhYWDogZG9lcyB0aGlzIHdvcmsgb24gV2luL1dpbjY0PyAoc2VlIHBvc2l4X2ZzdGF0KSAqLwotICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICAgICAgICAgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc2IpID09IDAgJiYKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHNiOworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oZnApLCAmc2IpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAgU19JU0RJUihzYi5zdF9tb2RlKSkgewotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVsczogJyVscycgaXMgYSBkaXJlY3RvcnksIGNhbm5vdCBjb250aW51ZVxuIiwgYXJndlswXSwgZmlsZW5hbWUpOworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWxzOiAnJWxzJyBpcyBhIGRpcmVjdG9yeSwgY2Fubm90IGNvbnRpbnVlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbMF0sIGZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWtlc2V0dXAgYi9Nb2R1bGVzL21ha2VzZXR1cAppbmRleCA4YjVjYzI4Li45MGRiNDJlIDEwMDc1NQotLS0gYS9Nb2R1bGVzL21ha2VzZXR1cAorKysgYi9Nb2R1bGVzL21ha2VzZXR1cApAQCAtMjY2LDcgKzI2Niw3IEBACiAJKikgIHNlZCAtZSAiCiAJCTFpJE5MLyogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSAkY29uZmlnIGJ5IG1ha2VzZXR1cC4gKi8KIAkJL01BUktFUiAxL2kkTkwkRVhUREVDTFMKLSAKKwogCQkvTUFSS0VSIDIvaSROTCRJTklUQklUUwogCiAJCSIgJGNvbmZpZyA+Y29uZmlnLmMKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKaW5kZXggMjQzZTJhMy4uOTM1OWViMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tYXRobW9kdWxlLmMKQEAgLTIyMyw2ICsyMjMsMzUgQEAKICAgICByZXR1cm4gbnVtL2RlbjsKIH0KIAorLyogQ29uc3RhbnQgZm9yICtpbmZpbml0eSwgZ2VuZXJhdGVkIGluIHRoZSBzYW1lIHdheSBhcyBmbG9hdCgnaW5mJykuICovCisKK3N0YXRpYyBkb3VibGUKK21faW5mKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfSFVHRV9WQUw7CisjZW5kaWYKK30KKworLyogQ29uc3RhbnQgbmFuIHZhbHVlLCBnZW5lcmF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZsb2F0KCduYW4nKS4gKi8KKy8qIFdlIGRvbid0IGN1cnJlbnRseSBhc3N1bWUgdGhhdCBQeV9OQU4gaXMgZGVmaW5lZCBldmVyeXdoZXJlLiAqLworCisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisKK3N0YXRpYyBkb3VibGUKK21fbmFuKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbigwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X05BTjsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogc3RhdGljIGRvdWJsZQogbV90Z2FtbWEoZG91YmxlIHgpCiB7CkBAIC02NTYsNiArNjg1LDMzIEBACiB9CiAKIAorc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfZ2NkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYSwgKmIsICpnOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpnY2QiLCAmYSwgJmIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGEgPSBQeU51bWJlcl9JbmRleChhKTsKKyAgICBpZiAoYSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBiID0gUHlOdW1iZXJfSW5kZXgoYik7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBnID0gX1B5TG9uZ19HQ0QoYSwgYik7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICByZXR1cm4gZzsKK30KKworUHlEb2NfU1RSVkFSKG1hdGhfZ2NkX2RvYywKKyJnY2QoeCwgeSkgLT4gaW50XG5cCitncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB4IGFuZCB5Iik7CisKKwogLyogQ2FsbCBpc19lcnJvciB3aGVuIGVycm5vICE9IDAsIGFuZCB3aGVyZSB4IGlzIHRoZSByZXN1bHQgbGlibQogICogcmV0dXJuZWQuICBpc19lcnJvciB3aWxsIHVzdWFsbHkgc2V0IHVwIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuCiAgKiB0cnVlICgxKSwgYnV0IG1heSByZXR1cm4gZmFsc2UgKDApIHdpdGhvdXQgc2V0dGluZyB1cCBhbiBleGNlcHRpb24uCkBAIC0xMDEwLDcgKzEwNjYsNyBAQAogICAgIFB5X3NzaXplX3QgbSA9ICptX3B0cjsKIAogICAgIG0gKz0gbTsgIC8qIGRvdWJsZSAqLwotICAgIGlmIChuIDwgbSAmJiBtIDwgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGRvdWJsZSkpKSB7CisgICAgaWYgKG4gPCBtICYmIChzaXplX3QpbSA8ICgoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGRvdWJsZSkpKSB7CiAgICAgICAgIGRvdWJsZSAqcCA9ICpwX3B0cjsKICAgICAgICAgaWYgKHAgPT0gcHMpIHsKICAgICAgICAgICAgIHYgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBtKTsKQEAgLTE0MDgsNiArMTQ2NCw3IEBACiBtYXRoX2ZhY3RvcmlhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBsb25nIHg7CisgICAgaW50IG92ZXJmbG93OwogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpvZGRfcGFydCwgKnR3b192YWx1YXRpb247CiAKICAgICBpZiAoUHlGbG9hdF9DaGVjayhhcmcpKSB7CkBAIC0xNDIxLDE1ICsxNDc4LDIyIEBACiAgICAgICAgIGx4ID0gUHlMb25nX0Zyb21Eb3VibGUoZHgpOwogICAgICAgICBpZiAobHggPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyhseCk7CisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cobHgsICZvdmVyZmxvdyk7CiAgICAgICAgIFB5X0RFQ1JFRihseCk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhhcmcsICZvdmVyZmxvdyk7CiAKLSAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHggPCAwKSB7CisgICAgfQorICAgIGVsc2UgaWYgKG92ZXJmbG93ID09IDEpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZmFjdG9yaWFsKCkgYXJndW1lbnQgc2hvdWxkIG5vdCBleGNlZWQgJWxkIiwKKyAgICAgICAgICAgICAgICAgICAgIExPTkdfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKG92ZXJmbG93ID09IC0xIHx8IHggPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZhY3RvcmlhbCgpIG5vdCBkZWZpbmVkIGZvciBuZWdhdGl2ZSB2YWx1ZXMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTI2LDYgKzE5OTAsODMgQEAKICJpc2luZih4KSAtPiBib29sXG5cblwKIFJldHVybiBUcnVlIGlmIHggaXMgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSwgYW5kIEZhbHNlIG90aGVyd2lzZS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfaXNjbG9zZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgZG91YmxlIGEsIGI7CisgICAgZG91YmxlIHJlbF90b2wgPSAxZS05OworICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOworICAgIGRvdWJsZSBkaWZmID0gMC4wOworICAgIGxvbmcgcmVzdWx0ID0gMDsKKworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImRkfCRkZDppc2Nsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogc2FuaXR5IGNoZWNrIG9uIHRoZSBpbnB1dHMgKi8KKyAgICBpZiAocmVsX3RvbCA8IDAuMCB8fCBhYnNfdG9sIDwgMC4wICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0b2xlcmFuY2VzIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICggYSA9PSBiICkgeworICAgICAgICAvKiBzaG9ydCBjaXJjdWl0IGV4YWN0IGVxdWFsaXR5IC0tIG5lZWRlZCB0byBjYXRjaCB0d28gaW5maW5pdGllcyBvZgorICAgICAgICAgICB0aGUgc2FtZSBzaWduLiBBbmQgcGVyaGFwcyBzcGVlZHMgdGhpbmdzIHVwIGEgYml0IHNvbWV0aW1lcy4KKyAgICAgICAgKi8KKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorCisgICAgLyogVGhpcyBjYXRjaGVzIHRoZSBjYXNlIG9mIHR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlIHNpZ24sIG9yCisgICAgICAgb25lIGluZmluaXR5IGFuZCBvbmUgZmluaXRlIG51bWJlci4gVHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUKKyAgICAgICBzaWduIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZmluaXRlIHJlbGF0aXZlIHRvbGVyYW5jZS4KKyAgICAgICBUd28gaW5maW5pdGllcyBvZiB0aGUgc2FtZSBzaWduIGFyZSBjYXVnaHQgYnkgdGhlIGVxdWFsaXR5IGNoZWNrCisgICAgICAgYWJvdmUuCisgICAgKi8KKworICAgIGlmIChQeV9JU19JTkZJTklUWShhKSB8fCBQeV9JU19JTkZJTklUWShiKSkgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorCisgICAgLyogbm93IGRvIHRoZSByZWd1bGFyIGNvbXB1dGF0aW9uCisgICAgICAgdGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgIndlYWsiIHRlc3QgZnJvbSB0aGUgQm9vc3QgbGlicmFyeQorICAgICovCisKKyAgICBkaWZmID0gZmFicyhiIC0gYSk7CisKKyAgICByZXN1bHQgPSAoKChkaWZmIDw9IGZhYnMocmVsX3RvbCAqIGIpKSB8fAorICAgICAgICAgICAgICAgKGRpZmYgPD0gZmFicyhyZWxfdG9sICogYSkpKSB8fAorICAgICAgICAgICAgICAoZGlmZiA8PSBhYnNfdG9sKSk7CisKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihtYXRoX2lzY2xvc2VfZG9jLAorImlzX2Nsb3NlKGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKSAtPiBib29sXG4iCisiXG4iCisiRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIGNsb3NlIGluIHZhbHVlLlxuIgorIlxuIgorIiAgIHJlbF90b2xcbiIKKyIgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkIFwiY2xvc2VcIiwgcmVsYXRpdmUgdG8gdGhlXG4iCisiICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiICAgIGFic190b2xcbiIKKyIgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkIFwiY2xvc2VcIiwgcmVnYXJkbGVzcyBvZiB0aGVcbiIKKyIgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXNcbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBhIGlzIGNsb3NlIGluIHZhbHVlIHRvIGIsIGFuZCBGYWxzZSBvdGhlcndpc2UuXG4iCisiXG4iCisiRm9yIHRoZSB2YWx1ZXMgdG8gYmUgY29uc2lkZXJlZCBjbG9zZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtXG4iCisibXVzdCBiZSBzbWFsbGVyIHRoYW4gYXQgbGVhc3Qgb25lIG9mIHRoZSB0b2xlcmFuY2VzLlxuIgorIlxuIgorIi1pbmYsIGluZiBhbmQgTmFOIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhlIElFRUUgNzU0IFN0YW5kYXJkLiAgVGhhdFxuIgorImlzLCBOYU4gaXMgbm90IGNsb3NlIHRvIGFueXRoaW5nLCBldmVuIGl0c2VsZi4gIGluZiBhbmQgLWluZiBhcmVcbiIKKyJvbmx5IGNsb3NlIHRvIHRoZW1zZWx2ZXMuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBtYXRoX21ldGhvZHNbXSA9IHsKICAgICB7ImFjb3MiLCAgICAgICAgICAgIG1hdGhfYWNvcywgICAgICBNRVRIX08sICAgICAgICAgbWF0aF9hY29zX2RvY30sCiAgICAgeyJhY29zaCIsICAgICAgICAgICBtYXRoX2Fjb3NoLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfYWNvc2hfZG9jfSwKQEAgLTE5NTAsNyArMjA5MSwxMCBAQAogICAgIHsiZnJleHAiLCAgICAgICAgICAgbWF0aF9mcmV4cCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2ZyZXhwX2RvY30sCiAgICAgeyJmc3VtIiwgICAgICAgICAgICBtYXRoX2ZzdW0sICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfZnN1bV9kb2N9LAogICAgIHsiZ2FtbWEiLCAgICAgICAgICAgbWF0aF9nYW1tYSwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2dhbW1hX2RvY30sCisgICAgeyJnY2QiLCAgICAgICAgICAgICBtYXRoX2djZCwgICAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfZ2NkX2RvY30sCiAgICAgeyJoeXBvdCIsICAgICAgICAgICBtYXRoX2h5cG90LCAgICAgTUVUSF9WQVJBUkdTLCAgIG1hdGhfaHlwb3RfZG9jfSwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pIG1hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICBtYXRoX2lzY2xvc2VfZG9jfSwKICAgICB7ImlzZmluaXRlIiwgICAgICAgIG1hdGhfaXNmaW5pdGUsICBNRVRIX08sICAgICAgICAgbWF0aF9pc2Zpbml0ZV9kb2N9LAogICAgIHsiaXNpbmYiLCAgICAgICAgICAgbWF0aF9pc2luZiwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2lzaW5mX2RvY30sCiAgICAgeyJpc25hbiIsICAgICAgICAgICBtYXRoX2lzbmFuLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfaXNuYW5fZG9jfSwKQEAgLTIwMDEsNyArMjE0NSwxMSBAQAogCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKKyNpZiAhZGVmaW5lZChQWV9OT19TSE9SVF9GTE9BVF9SRVBSKSB8fCBkZWZpbmVkKFB5X05BTikKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX25hbigpKSk7CisjZW5kaWYKIAotICAgIGZpbmFsbHk6CisgIGZpbmFsbHk6CiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCA1Y2IzZDM2Li5hOWViYzhjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTE4LDcgKzE4LDEzIEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9tZDUKK2NsYXNzIE1ENVR5cGUgIk1ENW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmU1MjYxNzE5OTU3YTkxMl0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00OCw2ICs1NCw3IEBACiAgICAgc3RydWN0IG1kNV9zdGF0ZSBoYXNoX3N0YXRlOwogfSBNRDVvYmplY3Q7CiAKKyNpbmNsdWRlICJjbGluaWMvbWQ1bW9kdWxlLmMuaCIKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgpAQCAtMzMyLDMwICszMzksMzQgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoTUQ1X2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfY29weShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitNRDVUeXBlX2NvcHlfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTk2ZWIzNjg1MmYwMjA3MSBpbnB1dD0yYzA5ZTZkMjQ5M2YzMDc5XSovCiB7CiAgICAgTUQ1b2JqZWN0ICpuZXdvYmo7CiAKLSAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAmTUQ1dHlwZSkgewotICAgICAgICBpZiAoIChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKChuZXdvYmogPSBuZXdNRDVvYmplY3QoKSk9PU5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbmV3b2JqLT5oYXNoX3N0YXRlID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3b2JqOwogfQogCi1QeURvY19TVFJWQVIoTUQ1X2RpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLU1ENV9kaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9kaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWI2OTFkYzQxOTBhMDdlYyBpbnB1dD03Yjk2ZTY1Mzg5NDEyYTM0XSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKQEAgLTM2NSw1NCArMzc2LDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIE1ENV9ESUdFU1RTSVpFKTsKIH0KIAotUHlEb2NfU1RSVkFSKE1ENV9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK01ENVR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLU1ENV9oZXhkaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTdiYWRjZWQxZjNhYzkzMiBpbnB1dD1iNjBiMTlkZTY0NDc5OGRkXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7Ci0gICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KICAgICB0ZW1wID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICBtZDVfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KE1ENV9ESUdFU1RTSVpFICogMiwgMTI3KTsKLSAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwotCi0gICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCi0gICAgZm9yKGk9aj0wOyBpPE1ENV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciopZGlnZXN0LCBNRDVfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihNRDVfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK01ENVR5cGUudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfdXBkYXRlKE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitNRDVUeXBlX3VwZGF0ZShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjZhZDE2ODQxNjMzODQyMyBpbnB1dD02ZTFlZmNkOWVjZjE3MDMyXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIG1kNV9wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTQyMywxMCArNDIxLDEwIEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBNRDVfbWV0aG9kc1tdID0gewotICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKU1ENV9jb3B5LCAgICAgIE1FVEhfTk9BUkdTLCAgTUQ1X2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilNRDVfZGlnZXN0LCAgICBNRVRIX05PQVJHUywgIE1ENV9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilNRDVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgIE1ENV9oZXhkaWdlc3RfX2RvY19ffSwKLSAgICB7InVwZGF0ZSIsICAgIChQeUNGdW5jdGlvbilNRDVfdXBkYXRlLCAgICBNRVRIX1ZBUkFSR1MsIE1ENV91cGRhdGVfX2RvY19ffSwKKyAgICBNRDVUWVBFX0NPUFlfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgTUQ1VFlQRV9VUERBVEVfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC01MDIsMjcgKzUwMCwyNiBAQAogCiAvKiBUaGUgc2luZ2xlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbjogbmV3KCkgKi8KIAotUHlEb2NfU1RSVkFSKE1ENV9uZXdfX2RvY19fLAotIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19tZDUubWQ1CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19tZDVfbWQ1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNTI3NDM2YTIwOTBiOTU2IGlucHV0PWQxMmVmOGY3MmQ2ODRmN2JdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIE1ENW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdNRDVvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MzEsMTEgKzUyOCwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIG1kNV9wcm9jZXNzKCZuZXctPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIH0KQEAgLTU0Nyw3ICs1NDQsNyBAQAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBNRDVfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pTUQ1X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIE1ENV9uZXdfX2RvY19ffSwKKyAgICBfTUQ1X01ENV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IDEzNzE0MjQuLmM1YmE0YjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC0zMDEsMTYgKzMwMSwxNyBAQAogewogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSBzZWxmLT5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBzZWxmLT5zaXplOwotICAgIGNvbnN0IGNoYXIgKm5lZWRsZTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9idWZmZXIgdmlldzsKIAogICAgIENIRUNLX1ZBTElEKE5VTEwpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCByZXZlcnNlID8gInkjfG5uOnJmaW5kIiA6ICJ5I3xubjpmaW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRsZSwgJmxlbiwgJnN0YXJ0LCAmZW5kKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCByZXZlcnNlID8gInkqfG5uOnJmaW5kIiA6ICJ5KnxubjpmaW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpZXcsICZzdGFydCwgJmVuZCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciAqcCwgKnN0YXJ0X3AsICplbmRfcDsKICAgICAgICAgaW50IHNpZ24gPSByZXZlcnNlID8gLTEgOiAxOworICAgICAgICBjb25zdCBjaGFyICpuZWVkbGUgPSB2aWV3LmJ1ZjsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSB2aWV3LmxlbjsKIAogICAgICAgICBpZiAoc3RhcnQgPCAwKQogICAgICAgICAgICAgc3RhcnQgKz0gc2VsZi0+c2l6ZTsKQEAgLTMzNSw5ICszMzYsMTEgQEAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW4gJiYgbmVlZGxlW2ldID09IHBbaV07ICsraSkKICAgICAgICAgICAgICAgICAvKiBub3RoaW5nICovOwogICAgICAgICAgICAgaWYgKGkgPT0gbGVuKSB7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChwIC0gc2VsZi0+ZGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLTEpOwogICAgIH0KIH0KQEAgLTM4NSwyMiArMzg4LDI1IEBACiBtbWFwX3dyaXRlX21ldGhvZChtbWFwX29iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGNoYXIgKmRhdGE7CisgICAgUHlfYnVmZmVyIGRhdGE7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmRhdGEsICZsZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmZGF0YSkpCiAgICAgICAgIHJldHVybihOVUxMKTsKIAotICAgIGlmICghaXNfd3JpdGFibGUoc2VsZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChzZWxmLT5wb3MgKyBsZW5ndGgpID4gc2VsZi0+c2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImRhdGEgb3V0IG9mIHJhbmdlIik7CisgICAgaWYgKCFpc193cml0YWJsZShzZWxmKSkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShzZWxmLT5kYXRhK3NlbGYtPnBvcywgZGF0YSwgbGVuZ3RoKTsKLSAgICBzZWxmLT5wb3MgPSBzZWxmLT5wb3MrbGVuZ3RoOworCisgICAgaWYgKChzZWxmLT5wb3MgKyBkYXRhLmxlbikgPiBzZWxmLT5zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGF0YSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1jcHkoc2VsZi0+ZGF0YSArIHNlbGYtPnBvcywgZGF0YS5idWYsIGRhdGEubGVuKTsKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5wb3MgKyBkYXRhLmxlbjsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC00NTksMTUgKzQ2NSwxMyBAQAogCiAjaWZkZWYgVU5JWAogICAgIHsKLSAgICAgICAgc3RydWN0IHN0YXQgYnVmOwotICAgICAgICBpZiAoLTEgPT0gZnN0YXQoc2VsZi0+ZmQsICZidWYpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOworICAgICAgICBpZiAoX1B5X2ZzdGF0KHNlbGYtPmZkLCAmc3RhdHVzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhidWYuc3Rfc2l6ZSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHN0YXR1cy5zdF9zaXplKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnVmLnN0X3NpemUpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHN0YXR1cy5zdF9zaXplKTsKICNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBVTklYICovCkBAIC0xMTA2LDkgKzExMTAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG5ld19tbWFwX29iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewotI2lmZGVmIEhBVkVfRlNUQVQKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSNlbmRpZgorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOwogICAgIG1tYXBfb2JqZWN0ICptX29iajsKICAgICBQeU9iamVjdCAqbWFwX3NpemVfb2JqID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG1hcF9zaXplOwpAQCAtMTE3MywzMiArMTE3NSwzMSBAQAogICAgIGlmIChmZCAhPSAtMSkKICAgICAgICAgKHZvaWQpZmNudGwoZmQsIEZfRlVMTEZTWU5DKTsKICNlbmRpZgotI2lmZGVmIEhBVkVfRlNUQVQKLSAgICBpZiAoZmQgIT0gLTEgJiYgZnN0YXQoZmQsICZzdCkgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisgICAgaWYgKGZkICE9IC0xICYmIF9QeV9mc3RhdF9ub3JhaXNlKGZkLCAmc3RhdHVzKSA9PSAwCisgICAgICAgICYmIFNfSVNSRUcoc3RhdHVzLnN0X21vZGUpKSB7CiAgICAgICAgIGlmIChtYXBfc2l6ZSA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoc3Quc3Rfc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc3RhdHVzLnN0X3NpemUgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IG1tYXAgYW4gZW1wdHkgZmlsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBzdC5zdF9zaXplKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID49IHN0YXR1cy5zdF9zaXplKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtbWFwIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gZmlsZSBzaXplIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3Quc3Rfc2l6ZSAtIG9mZnNldCA+IFBZX1NTSVpFX1RfTUFYKSB7CisgICAgICAgICAgICBpZiAoc3RhdHVzLnN0X3NpemUgLSBvZmZzZXQgPiBQWV9TU0laRV9UX01BWCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1tYXAgbGVuZ3RoIGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbWFwX3NpemUgPSAoUHlfc3NpemVfdCkgKHN0LnN0X3NpemUgLSBvZmZzZXQpOwotICAgICAgICB9IGVsc2UgaWYgKG9mZnNldCArIChzaXplX3QpbWFwX3NpemUgPiBzdC5zdF9zaXplKSB7CisgICAgICAgICAgICBtYXBfc2l6ZSA9IChQeV9zc2l6ZV90KSAoc3RhdHVzLnN0X3NpemUgLSBvZmZzZXQpOworICAgICAgICB9IGVsc2UgaWYgKG9mZnNldCArIG1hcF9zaXplID4gc3RhdHVzLnN0X3NpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtbWFwIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gZmlsZSBzaXplIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgogICAgIG1fb2JqID0gKG1tYXBfb2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKG1fb2JqID09IE5VTEwpIHtyZXR1cm4gTlVMTDt9CiAgICAgbV9vYmotPmRhdGEgPSBOVUxMOwpAQCAtMTIyMSw3ICsxMjIyLDYgQEAKICAgICAgICAgZmQgPSBkZXZ6ZXJvID0gX1B5X29wZW4oIi9kZXYvemVybyIsIE9fUkRXUik7CiAgICAgICAgIGlmIChkZXZ6ZXJvID09IC0xKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTMyNSwxMSArMTMyNSwxMyBAQAogICAgICAqLwogICAgIGlmIChmaWxlbm8gIT0gLTEgJiYgZmlsZW5vICE9IDApIHsKICAgICAgICAgLyogRW5zdXJlIHRoYXQgZmlsZW5vIGlzIHdpdGhpbiB0aGUgQ1JUJ3MgdmFsaWQgcmFuZ2UgKi8KLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmaWxlbm8pID09IDApIHsKKyAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZW5vKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICBmaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgaWYgKGZoPT0oSEFORExFKS0xKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbmlzbW9kdWxlLmMgYi9Nb2R1bGVzL25pc21vZHVsZS5jCmluZGV4IDBhZjQ5NWYuLjY0ZWI1ZGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbmlzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwpAQCAtNDU2LDggKzQ1Niw4IEBACiAgICAgTlVMTAogfTsKIAotUHlPYmplY3QqCi1QeUluaXRfbmlzICh2b2lkKQorUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9uaXModm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQ7CiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbmlzbW9kdWxlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCAyZDBkZDA5Li5kMmZkNWM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0xOSw2ICsxOSw3IEBACiAgKiAkSWQkCiAgKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKQEAgLTUxLDggKzUyLDggQEAKICAgICBjaGFyICAgICpkZXZpY2VuYW1lOyAgICAgICAgICAgICAgLyogbmFtZSBvZiB0aGUgZGV2aWNlIGZpbGUgKi8KICAgICBpbnQgICAgICBmZDsgICAgICAgICAgICAgICAgICAgICAgLyogZmlsZSBkZXNjcmlwdG9yICovCiAgICAgaW50ICAgICAgbW9kZTsgICAgICAgICAgICAgICAgICAgIC8qIGZpbGUgbW9kZSAoT19SRE9OTFksIGV0Yy4pICovCi0gICAgaW50ICAgICAgaWNvdW50OyAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvdW50ICovCi0gICAgaW50ICAgICAgb2NvdW50OyAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCBjb3VudCAqLworICAgIFB5X3NzaXplX3QgaWNvdW50OyAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb3VudCAqLworICAgIFB5X3NzaXplX3Qgb2NvdW50OyAgICAgICAgICAgICAgICAvKiBvdXRwdXQgY291bnQgKi8KICAgICB1aW50MzJfdCBhZm10czsgICAgICAgICAgICAgICAgICAgLyogYXVkaW8gZm9ybWF0cyBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgKi8KIH0gb3NzX2F1ZGlvX3Q7CiAKQEAgLTExNiwxMSArMTE3LDggQEAKICAgICAgICBwcm92aWRlcyBhIHNwZWNpYWwgaW9jdGwoKSBmb3Igbm9uLWJsb2NraW5nIHJlYWQvd3JpdGUsIHdoaWNoIGlzCiAgICAgICAgZXhwb3NlZCB2aWEgb3NzX25vbmJsb2NrKCkgYmVsb3cuICovCiAgICAgZmQgPSBfUHlfb3BlbihkZXZpY2VuYW1lLCBpbW9kZXxPX05PTkJMT0NLKTsKLQotICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgZGV2aWNlbmFtZSk7CisgICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICAvKiBBbmQgKHRyeSB0bykgcHV0IGl0IGJhY2sgaW4gYmxvY2tpbmcgbW9kZSBzbyB3ZSBnZXQgdGhlCiAgICAgICAgZXhwZWN0ZWQgd3JpdGUoKSBzZW1hbnRpY3MuICovCkBAIC0xODAsMTAgKzE3OCw4IEBACiAgICAgfQogCiAgICAgZmQgPSBfUHlfb3BlbihkZXZpY2VuYW1lLCBPX1JEV1IpOwotICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgZGV2aWNlbmFtZSk7CisgICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBpZiAoKHNlbGYgPSBQeU9iamVjdF9OZXcob3NzX21peGVyX3QsICZPU1NNaXhlclR5cGUpKSA9PSBOVUxMKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKQEAgLTQwNCwyOSArNDAwLDI1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3JlYWQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGludCBzaXplLCBjb3VudDsKLSAgICBjaGFyICpjcDsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGNvdW50OwogICAgIFB5T2JqZWN0ICpydjsKIAogICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46cmVhZCIsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBydiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CiAgICAgaWYgKHJ2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGNwID0gUHlCeXRlc19BU19TVFJJTkcocnYpOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNvdW50ID0gcmVhZChzZWxmLT5mZCwgY3AsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoY291bnQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICBjb3VudCA9IF9QeV9yZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhydiksIHNpemUpOworICAgIGlmIChjb3VudCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYocnYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBzZWxmLT5pY291bnQgKz0gY291bnQ7CiAgICAgX1B5Qnl0ZXNfUmVzaXplKCZydiwgY291bnQpOwogICAgIHJldHVybiBydjsKQEAgLTQzNSwzMyArNDI3LDMyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3dyaXRlKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpjcDsKLSAgICBpbnQgcnYsIHNpemU7CisgICAgUHlfYnVmZmVyIGRhdGE7CisgICAgUHlfc3NpemVfdCBydjsKIAogICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmNwLCAmc2l6ZSkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJmRhdGEpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBydiA9IHdyaXRlKHNlbGYtPmZkLCBjcCwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBydiA9IF9QeV93cml0ZShzZWxmLT5mZCwgZGF0YS5idWYsIGRhdGEubGVuKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHJ2ID09IC0xKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2VsZi0+b2NvdW50ICs9IHJ2OwotICAgIH0KKyAgICBzZWxmLT5vY291bnQgKz0gcnY7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfd3JpdGVhbGwob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKmNwOwotICAgIGludCBydiwgc2l6ZTsKKyAgICBQeV9idWZmZXIgZGF0YTsKKyAgICBjb25zdCBjaGFyICpjcDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfc3NpemVfdCBydjsKICAgICBmZF9zZXQgd3JpdGVfc2V0X2ZkczsKICAgICBpbnQgc2VsZWN0X3J2OwogCkBAIC00NzUsNDEgKzQ2Niw1MCBAQAogICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmNwLCAmc2l6ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZWFsbCIsICZkYXRhKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIV9QeUlzU2VsZWN0YWJsZV9mZChzZWxmLT5mZCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBkZXNjcmlwdG9yIG91dCBvZiByYW5nZSBmb3Igc2VsZWN0Iik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogdXNlIHNlbGVjdCB0byB3YWl0IGZvciBhdWRpbyBkZXZpY2UgdG8gYmUgYXZhaWxhYmxlICovCiAgICAgRkRfWkVSTygmd3JpdGVfc2V0X2Zkcyk7CiAgICAgRkRfU0VUKHNlbGYtPmZkLCAmd3JpdGVfc2V0X2Zkcyk7CisgICAgY3AgPSAoY29uc3QgY2hhciAqKWRhdGEuYnVmOworICAgIHNpemUgPSBkYXRhLmxlbjsKIAogICAgIHdoaWxlIChzaXplID4gMCkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHNlbGVjdF9ydiA9IHNlbGVjdChzZWxmLT5mZCsxLCBOVUxMLCAmd3JpdGVfc2V0X2ZkcywgTlVMTCwgTlVMTCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGFzc2VydChzZWxlY3RfcnYgIT0gMCk7ICAgICAgICAgLyogbm8gdGltZW91dCwgY2FuJ3QgZXhwaXJlICovCi0gICAgICAgIGlmIChzZWxlY3RfcnYgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcnYgPSB3cml0ZShzZWxmLT5mZCwgY3AsIHNpemUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsgICAgICAvKiBidWZmZXIgaXMgZnVsbCwgdHJ5IGFnYWluICovCi0gICAgICAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlICAgICAgICAgICAgICAgICAgICAgIC8qIGl0J3MgYSByZWFsIGVycm9yICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiB3cm90ZSBydiBieXRlcyAqLwotICAgICAgICAgICAgc2VsZi0+b2NvdW50ICs9IHJ2OwotICAgICAgICAgICAgc2l6ZSAtPSBydjsKLSAgICAgICAgICAgIGNwICs9IHJ2OworICAgICAgICBhc3NlcnQoc2VsZWN0X3J2ICE9IDApOyAgIC8qIG5vIHRpbWVvdXQsIGNhbid0IGV4cGlyZSAqLworICAgICAgICBpZiAoc2VsZWN0X3J2ID09IC0xKSB7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KKworICAgICAgICBydiA9IF9QeV93cml0ZShzZWxmLT5mZCwgY3AsIFB5X01JTihzaXplLCBJTlRfTUFYKSk7CisgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAgLyogYnVmZmVyIGlzIGZ1bGwsIHRyeSBhZ2FpbiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgeworICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBpdCdzIGEgcmVhbCBlcnJvciAqLworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHdyb3RlIHJ2IGJ5dGVzICovCisgICAgICAgIHNlbGYtPm9jb3VudCArPSBydjsKKyAgICAgICAgc2l6ZSAtPSBydjsKKyAgICAgICAgY3AgKz0gcnY7CiAgICAgfQorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCmluZGV4IDM2ZTk4OTMuLjJhMTZkYmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwpAQCAtMjMsNiArMjMsMTEgQEAKICAqICB0aGF0IGxpbnQgZGV0ZWN0cyBhcmUgZ29uZSwgYnV0IHRoZXJlIGFyZSBzdGlsbCB3YXJuaW5ncyB3aXRoCiAgKiAgUHlfW1hdREVDUkVGKCkgYW5kIFB5X1tYXUlOQ1JFRigpIG1hY3Jvcy4gIFRoZSBsaW50IGFubm90YXRpb25zCiAgKiAgbG9vayBsaWtlICJOT1RFKC4uLikiLgorICoKKyAqICBUbyBkZWJ1ZyBwYXJzZXIgZXJyb3JzIGxpa2UKKyAqICAgICAgInBhcnNlci5QYXJzZXJFcnJvcjogRXhwZWN0ZWQgbm9kZSB0eXBlIDEyLCBnb3QgMzMzLiIKKyAqICBkZWNvZGUgc3ltYm9sIG51bWJlcnMgdXNpbmcgdGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIGZpbGVzCisgKiAgTGliL3N5bWJvbC5oIGFuZCBJbmNsdWRlL3Rva2VuLmguCiAgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIiAgICAgICAgICAgICAgICAgICAgIC8qIGdlbmVyYWwgUHl0aG9uIEFQSSAgICAgICAgICAgICAqLwpAQCAtMTAzNiw2ICsxMDQxLDggQEAKIFZBTElEQVRFUihvcl90ZXN0KTsKIFZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKIFZBTElEQVRFUih5aWVsZF9hcmcpOworVkFMSURBVEVSKGFzeW5jX2Z1bmNkZWYpOyAgICAgICBWQUxJREFURVIoYXN5bmNfc3RtdCk7CitWQUxJREFURVIoYXRvbV9leHByKTsKIAogI3VuZGVmIFZBTElEQVRFUgogCkBAIC0xMDg3LDMwICsxMDk0LDU2IEBACiAgICAgcmV0dXJuIChyZXMpOwogfQogCi0KLS8qICBYICgnLCcgWCkgWycsJ10KLSAqLworLyogIFggKCcsJyBYKSBbJywnXSAqLwogc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3Qobm9kZSAqdHJlZSwgaW50IG50eXBlLCBpbnQgKCp2ZnVuYykobm9kZSAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpCit2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdF92YXJpYWJsZShub2RlICp0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuY19pbmMpKG5vZGUgKiwgaW50ICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaXN0X25vZGVfdHlwZV9uYW1lKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChuY2ggJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgbnR5cGUpCi0gICAgICAgICAgICAgICAmJiB2ZnVuYyhDSElMRCh0cmVlLCAwKSkpOworICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7CiAKLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIG5hbWUpOworICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KKyAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIGxpc3Rfbm9kZV90eXBlX25hbWUpOworICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGlzX2V2ZW4obmNoKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIC0tbmNoKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgbmNoID4gMSkgewotICAgICAgICAgICAgaW50IHBvcyA9IDE7Ci0gICAgICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7IHBvcyArPSAyKQotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2ZnVuYyhDSElMRCh0cmVlLCBwb3MgKyAxKSkpOworICAgICAgICBmb3IgKCA7IHJlcyAmJiAqcG9zIDwgbmNoOyApIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKHRyZWUsIHBvcyk7CisgICAgICAgICAgICBpZiAoIXJlcyB8fCAqcG9zID49IG5jaCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsICgqcG9zKSsrKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIChyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qICBYICgnLCcgWCkgWycsJ10gKi8KK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3JlcGVhdGluZ19saXN0KG5vZGUgKnRyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdF9ub2RlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCp2YWxpZGF0ZV9jaGlsZF9mdW5jKShub2RlICopLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7CisgICAgaW50IHBvcyA9IDA7CisKKyAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCisgICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoIDsgcmVzICYmIHBvcyA8IG5jaDsgKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jKENISUxEKHRyZWUsIHBvcysrKSk7CisgICAgICAgICAgICBpZiAoIXJlcyB8fCBwb3MgPj0gbmNoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgcG9zKyspKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOwogfQogCiAKQEAgLTE1NzcsNiArMTYxMCw3IEBACiAgICAgICAgICAgfHwgKG50eXBlID09IHRyeV9zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSB3aXRoX3N0bXQpCiAgICAgICAgICAgfHwgKG50eXBlID09IGZ1bmNkZWYpCisgICAgICAgICAgfHwgKG50eXBlID09IGFzeW5jX3N0bXQpCiAgICAgICAgICAgfHwgKG50eXBlID09IGNsYXNzZGVmKQogICAgICAgICAgIHx8IChudHlwZSA9PSBkZWNvcmF0ZWQpKQogICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKHRyZWUpOwpAQCAtMjQwOSwyNyArMjQ0Myw2MCBAQAogCiAvKiAgcG93ZXI6CiAgKgotICogIHBvd2VyOiBhdG9tIHRyYWlsZXIqICgnKionIGZhY3RvcikqCisgKiAgcG93ZXI6IGF0b21fZXhwciB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCiAgKi8KIHN0YXRpYyBpbnQKIHZhbGlkYXRlX3Bvd2VyKG5vZGUgKnRyZWUpCiB7Ci0gICAgaW50IHBvcyA9IDE7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKICAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHBvd2VyKSAmJiAobmNoID49IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tKENISUxEKHRyZWUsIDApKSk7CisgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKIAotICAgIHdoaWxlIChyZXMgJiYgKHBvcyA8IG5jaCkgJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gdHJhaWxlcikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICBpZiAocmVzICYmIChwb3MgPCBuY2gpKSB7Ci0gICAgICAgIGlmICghaXNfZXZlbihuY2ggLSBwb3MpKSB7CisgICAgaWYgKG5jaCA+IDEpIHsKKyAgICAgICAgaWYgKG5jaCAhPSAzKSB7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ3Bvd2VyJyIpOwogICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKCA7IHJlcyAmJiAocG9zIDwgKG5jaCAtIDEpKTsgcG9zICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCBwb3MgKyAxKSkpOworICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAxKSkKKyAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAyKSkpOwogICAgIH0KKworICAgIHJldHVybiAocmVzKTsKK30KKworCisvKiAgYXRvbV9leHByOgorICoKKyAqICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgorICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hdG9tX2V4cHIobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgc3RhcnQgPSAwOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgaW50IHJlczsKKyAgICBpbnQgcG9zOworCisgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbV9leHByKSAmJiAobmNoID49IDEpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIHJldHVybiAocmVzKTsKKyAgICB9CisKKyAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gQVdBSVQpIHsKKyAgICAgICAgc3RhcnQgPSAxOworICAgICAgICBpZiAobmNoIDwgMikgeworICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdhdG9tX2V4cHInIik7CisgICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzID0gdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCBzdGFydCkpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgcG9zID0gc3RhcnQgKyAxOworICAgICAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQorICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJhaWxlcihDSElMRCh0cmVlLCBwb3MrKykpOworICAgIH0KKwogICAgIHJldHVybiAocmVzKTsKIH0KIApAQCAtMjQ5MywzOSArMjU2MCwyOCBAQAogCiAKIC8qICB0ZXN0bGlzdF9jb21wOgotICogICAgdGVzdCAoIGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10gKQorICogICAgKHRlc3R8c3Rhcl9leHByKSAoIGNvbXBfZm9yIHwgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10gKQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKG5vZGUgKnRyZWUpCiB7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSBuY2g7CisgICAgaW50IG9rOwogCi0gICAgaWYgKG5jaCA9PSAwKQorICAgIGlmIChuY2ggPT0gMCkgewogICAgICAgICBlcnJfc3RyaW5nKCJtaXNzaW5nIGNoaWxkIG5vZGVzIG9mIHRlc3RsaXN0X2NvbXAiKTsKLSAgICBlbHNlIHsKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihDSElMRCh0cmVlLCAwKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8qCi0gICAgICogIGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10KLSAgICAgKi8KLSAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpCi0gICAgICAgIG9rID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpOworICAgIGlmIChuY2ggPT0gMiAmJiBUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBjb21wX2ZvcikgeworICAgICAgICBvayA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQorICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiAgKCcsJyB0ZXN0KSogWycsJ10gICovCi0gICAgICAgIGludCBpID0gMTsKLSAgICAgICAgd2hpbGUgKG9rICYmIG5jaCAtIGkgPj0gMikgewotICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9rICYmIGkgPT0gbmNoLTEpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgZWxzZSBpZiAoaSAhPSBuY2gpIHsKLSAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgdHJhaWxpbmcgbm9kZXMgZm9yIHRlc3RsaXN0X2NvbXAiKTsKLSAgICAgICAgfQorICAgICAgICBvayA9IHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCisgICAgICAgICAgICAgICAgdGVzdGxpc3RfY29tcCwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKKyAgICAgICAgICAgICAgICAidGVzdGxpc3RfY29tcCIpOwogICAgIH0KICAgICByZXR1cm4gb2s7CiB9CkBAIC0yNjM4LDYgKzI2OTQsNTUgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19mdW5jZGVmKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIGlmIChuY2ggPT0gMikgeworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykKKyAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSAwOworICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX2Z1bmNkZWYiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisKKy8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FzeW5jX3N0bXQobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfc3RtdCkKKyAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpKTsKKworICAgIGlmIChuY2ggIT0gMikgeworICAgICAgICByZXMgPSAwOworICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfc3RtdCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmdW5jZGVmKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSB3aXRoX3N0bXQpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdChDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZm9yX3N0bXQpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZvcihDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzOworfQorCisKIAogLyogZGVjb3JhdGVkCiAgKiAgIGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKQEAgLTI3MzIsOSArMjgzNyw2IEBACiAgICAgfQogICAgIG9rID0gMTsKICAgICBpZiAobmNoLWkgPiAwKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGFyZ3VtZW50IHwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdIHwgJyoqJyB0ZXN0Ci0gICAgICAgICAqLwogICAgICAgICBpbnQgc3ltID0gVFlQRShDSElMRCh0cmVlLCBpKSk7CiAKICAgICAgICAgaWYgKHN5bSA9PSBhcmd1bWVudCkgewpAQCAtMjc0NSwzMCArMjg0Nyw3IEBACiAgICAgICAgICAgICAgICAgb2sgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN5bSA9PSBTVEFSKSB7Ci0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX3N0YXIoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgaWYgKG9rICYmIChuY2gtaSA9PSAyKSkKLSAgICAgICAgICAgICAgICBvayA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChvayAmJiAobmNoLWkgPT0gNSkpCi0gICAgICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrMikpCi0gICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBpKzMpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSs0KSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCB1c2Ugb2YgJyonIGluIGFyZ2xpc3QiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3ltID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgICAgIGlmIChuY2gtaSA9PSAyKQotICAgICAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIHVzZSBvZiAnKionIGluIGFyZ2xpc3QiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFyZ2xpc3Qgc3BlY2lmaWNhdGlvbiIpOwogICAgICAgICAgICAgb2sgPSAwOwogICAgICAgICB9CkBAIC0yNzc4LDkgKzI4NTcsMTAgQEAKIAogCiAKLS8qICBhcmd1bWVudDoKLSAqCi0gKiAgW3Rlc3QgJz0nXSB0ZXN0IFtjb21wX2Zvcl0KKy8qICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAorICogICAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAorICogICAgICAgICAgICAgICcqKicgZXhwciB8CisgKiAgICAgICAgICAgICAgc3Rhcl9leHByICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfYXJndW1lbnQobm9kZSAqdHJlZSkKQEAgLTI3ODgsMTQgKzI4NjgsMjQgQEAKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwogICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCiAgICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKLSAgICBpZiAocmVzKSAKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpKTsKIAorICAgIGlmIChyZXMpIHsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihDSElMRCh0cmVlLCAwKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobmNoID09IDIpIHsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID09IDMpKSB7CisgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgMSkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpKTsKKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CiAKQEAgLTI5NDgsMTEgKzMwMzgsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJfb3Jfc3Rhcl9leHByLCAiZXhwcmxpc3QiKSk7CiB9CiAKKy8qIEluY3JlbWVudGluZyB2YWxpZGF0ZSBmdW5jdGlvbnMgcmV0dXJucyBub256ZXJvIGlmZiBzdWNjZXNzIChsaWtlIG90aGVyCisgKiB2YWxpZGF0ZSBmdW5jdGlvbnMsIGFuZCBhZHZhbmNlICppIGJ5IHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoZWQgcGF0dGVybi4gKi8KKworLyogdGVzdCAnOicgdGVzdCAqLworc3RhdGljIGludAordmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCit7CisgICAgcmV0dXJuICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpCisgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAoKmkpKyspKQorICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAoKmkpKyspKSk7Cit9CisKKy8qIHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIgKi8KK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2RpY3RfZWxlbWVudF9pbmMobm9kZSAqdHJlZSwgaW50ICppKQoreworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgaW50IHJlcyA9IDA7CisgICAgaWYgKG5jaCAtICppID49IDIpIHsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgKmkrMSkpID09IENPTE9OKSB7CisgICAgICAgICAgICAvKiB0ZXN0ICc6JyB0ZXN0ICovCisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsIGkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogJyoqJyBleHByICovCisgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAoKmkpKyspKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsICgqaSkrKykpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCiAvKgogICogIGRpY3RvcnNldG1ha2VyOgogICoKLSAqICAodGVzdCAnOicgdGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkpIHwKLSAqICAodGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkpCisgKiAgICggKCh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKQorICogICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKSkqIFsnLCddKSkgfAorICogICAgICgodGVzdCB8ICcqJyB0ZXN0KQorICogICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0IHwgJyonIHRlc3QpKSogWycsJ10pKSApCiAgKi8KIHN0YXRpYyBpbnQKIHZhbGlkYXRlX2RpY3RvcnNldG1ha2VyKG5vZGUgKnRyZWUpCkBAIC0yOTY2LDY1ICszMDg5LDQ0IEBACiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKG5jaCAtIGkgPCAxKSB7CisgICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KICAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJkaWN0b3JzZXRtYWtlciIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpOwotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChuY2ggLSBpID49IDIgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gQ09MT04pIHsKKyAgICBpZiAobmNoIC0gaSA+PSAyCisgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCBpKzEpKSA9PSBDT0xPTikgfHwKKyAgICAgICAgICAgIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBET1VCTEVTVEFSKSkpIHsKICAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5IG9yIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBpZiAobmNoIC0gaSA+PSAxICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGNvbXBfZm9yKSB7CisgICAgICAgIGlmIChuY2ggLSBpID49IDQgJiYgVFlQRShDSElMRCh0cmVlLCBpKzMpKSA9PSBjb21wX2ZvcikgewogICAgICAgICAgICAgLyogRGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSk7CisgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCAmaSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwogICAgICAgICAgICAgaWYgKCFyZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkuICovCi0gICAgICAgICAgICB3aGlsZSAobmNoIC0gaSA+PSA0KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5jaCAtIGkgPT0gMSkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrKykpOwotICAgICAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdF92YXJpYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgZGljdG9yc2V0bWFrZXIsCisgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2RpY3RfZWxlbWVudF9pbmMsCisgICAgICAgICAgICAgICAgICAgICZpLAorICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKICAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICAvKiBTZXQgZGlzcGxheSBvciBzZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMSAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBjb21wX2ZvcikgeworICAgICAgICBpZiAobmNoIC0gaSA+PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgaSArIDEpKSA9PSBjb21wX2ZvcikgewogICAgICAgICAgICAgLyogU2V0IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKTsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpCisgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwogICAgICAgICAgICAgaWYgKCFyZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBTZXQgZGlzcGxheS4gKi8KLSAgICAgICAgICAgIHdoaWxlIChuY2ggLSBpID49IDIpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5jaCAtIGkgPT0gMSkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrKykpOwotICAgICAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwNjgsNiArMzE3MCwxMiBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqICBEZWZpbml0aW9uIG5vZGVzLgogICAgICAgICAgICAgICovCisgICAgICAgICAgY2FzZSBhc3luY19mdW5jZGVmOgorICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfZnVuY2RlZih0cmVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgYXN5bmNfc3RtdDoKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FzeW5jX3N0bXQodHJlZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIGZ1bmNkZWY6CiAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKHRyZWUpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggMDRmMGQzNi4uZWM4YzUyNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtNiw3ICs2LDcgQEAKICAgIGZ1bmN0aW9ucyBhcmUgZWl0aGVyIHVuaW1wbGVtZW50ZWQgb3IgaW1wbGVtZW50ZWQgZGlmZmVyZW50bHkuICBUaGUgc291cmNlCiAgICBhc3N1bWVzIHRoYXQgZm9yIFdpbmRvd3MgTlQsIHRoZSBtYWNybyAnTVNfV0lORE9XUycgaXMgZGVmaW5lZCBpbmRlcGVuZGVudAogICAgb2YgdGhlIGNvbXBpbGVyIHVzZWQuICBEaWZmZXJlbnQgY29tcGlsZXJzIGRlZmluZSB0aGVpciBvd24gZmVhdHVyZQotICAgdGVzdCBtYWNybywgZS5nLiAnX19CT1JMQU5EQ19fJyBvciAnX01TQ19WRVInLiAqLworICAgdGVzdCBtYWNybywgZS5nLiAnX01TQ19WRVInLiAqLwogCiAKIApAQCAtMjUsOCArMjUsMTEgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaWZuZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlICJwb3NpeG1vZHVsZS5oIgorI2Vsc2UKKyNpbmNsdWRlICJ3aW5yZXBhcnNlLmgiCiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0xNDEsMTMgKzE0NCw2IEBACiAjZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2Vsc2UKLSNpZmRlZiBfX0JPUkxBTkRDX18gICAgICAgICAgICAgLyogQm9ybGFuZCBjb21waWxlciAqLwotI2RlZmluZSBIQVZFX0VYRUNWICAgICAgMQotI2RlZmluZSBIQVZFX09QRU5ESVIgICAgMQotI2RlZmluZSBIQVZFX1BJUEUgICAgICAgMQotI2RlZmluZSBIQVZFX1NZU1RFTSAgICAgMQotI2RlZmluZSBIQVZFX1dBSVQgICAgICAgMQotI2Vsc2UKICNpZmRlZiBfTVNDX1ZFUiAgICAgICAgIC8qIE1pY3Jvc29mdCBjb21waWxlciAqLwogI2RlZmluZSBIQVZFX0dFVFBQSUQgICAgMQogI2RlZmluZSBIQVZFX0dFVExPR0lOICAgMQpAQCAtMTc3LDE0ICsxNzMsMTQgQEAKICNkZWZpbmUgSEFWRV9XQUlUICAgICAgIDEKICNkZWZpbmUgSEFWRV9UVFlOQU1FICAgIDEKICNlbmRpZiAgLyogX01TQ19WRVIgKi8KLSNlbmRpZiAgLyogX19CT1JMQU5EQ19fICovCiAjZW5kaWYgIC8qICEgX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogCiAKIC8qW2NsaW5pYyBpbnB1dF0KKyMgb25lIG9mIHRoZSBmZXcgdGltZXMgd2UgbGllIGFib3V0IHRoaXMgbmFtZSEKIG1vZHVsZSBvcwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OGNmZjA5NmQxMTMzMjg4Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OTRhMGYwZjk3OGFjYWUxN10qLwogCiAjaWZuZGVmIF9NU0NfVkVSCiAKQEAgLTIxMSwxMSArMjA3LDcgQEAKIGV4dGVybiBpbnQgY2hkaXIoY29uc3QgY2hhciAqKTsKIGV4dGVybiBpbnQgcm1kaXIoY29uc3QgY2hhciAqKTsKICNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotZXh0ZXJuIGludCBjaG1vZChjb25zdCBjaGFyICosIGludCk7Ci0jZWxzZQogZXh0ZXJuIGludCBjaG1vZChjb25zdCBjaGFyICosIG1vZGVfdCk7Ci0jZW5kaWYKIC8qI2lmZGVmIEhBVkVfRkNITU9ECiBleHRlcm4gaW50IGZjaG1vZChpbnQsIG1vZGVfdCk7CiAjZW5kaWYqLwpAQCAtMzAxLDYgKzI5Myw5IEBACiAjaWZuZGVmIElPX1JFUEFSU0VfVEFHX1NZTUxJTksKICNkZWZpbmUgSU9fUkVQQVJTRV9UQUdfU1lNTElOSyAoMHhBMDAwMDAwQ0wpCiAjZW5kaWYKKyNpZm5kZWYgSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQKKyNkZWZpbmUgSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQgKDB4QTAwMDAwMDNMKQorI2VuZGlmCiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSA8bWFsbG9jLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtMzU2LDggKzM1MSw4IEBACiAjaWZkZWYgTVNfV0lORE9XUwogIyAgICAgICBkZWZpbmUgU1RBVCB3aW4zMl9zdGF0CiAjICAgICAgIGRlZmluZSBMU1RBVCB3aW4zMl9sc3RhdAotIyAgICAgICBkZWZpbmUgRlNUQVQgd2luMzJfZnN0YXQKLSMgICAgICAgZGVmaW5lIFNUUlVDVF9TVEFUIHN0cnVjdCB3aW4zMl9zdGF0CisjICAgICAgIGRlZmluZSBGU1RBVCBfUHlfZnN0YXRfbm9yYWlzZQorIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IF9QeV9zdGF0X3N0cnVjdAogI2Vsc2UKICMgICAgICAgZGVmaW5lIFNUQVQgc3RhdAogIyAgICAgICBkZWZpbmUgTFNUQVQgbHN0YXQKQEAgLTM3OCw2ICszNzMsMjAgQEAKIAogI2RlZmluZSBEV09SRF9NQVggNDI5NDk2NzI5NVUKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgSU5JVEZVTkMgUHlJbml0X250CisjZGVmaW5lIE1PRE5BTUUgIm50IgorI2Vsc2UKKyNkZWZpbmUgSU5JVEZVTkMgUHlJbml0X3Bvc2l4CisjZGVmaW5lIE1PRE5BTUUgInBvc2l4IgorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisvKiBkZWZpbmVkIGluIGZpbGV1dGlscy5jICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV90aW1lX3RfdG9fRklMRV9USU1FKHRpbWVfdCwgaW50LCBGSUxFVElNRSAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKik7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKIHN0YXRpYyBpbnQKQEAgLTcwMSw3ICs3MTAsNiBAQAogfQogCiAKLQogLyoKICAqIEEgUHlBcmdfUGFyc2VUdXBsZSAiY29udmVydGVyIiBmdW5jdGlvbgogICogdGhhdCBoYW5kbGVzIGZpbGVzeXN0ZW0gcGF0aHMgaW4gdGhlIG1hbm5lcgpAQCAtNzk3LDggKzgwNSw4IEBACiAgICAgUHlPYmplY3QgKmNsZWFudXA7CiB9IHBhdGhfdDsKIAotI2RlZmluZSBQQVRIX1RfSU5JVElBTElaRShmdW5jdGlvbl9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQpIFwKLSAgICB7ZnVuY3Rpb25fbmFtZSwgTlVMTCwgbnVsbGFibGUsIGFsbG93X2ZkLCBOVUxMLCBOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfQorI2RlZmluZSBQQVRIX1RfSU5JVElBTElaRShmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQpIFwKKyAgICB7ZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkLCBOVUxMLCBOVUxMLCAtMSwgMCwgTlVMTCwgTlVMTH0KIAogc3RhdGljIHZvaWQKIHBhdGhfY2xlYW51cChwYXRoX3QgKnBhdGgpIHsKQEAgLTg1OSw3ICs4NjcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtOTI1LDggKzkzMyw4IEBACiAjZW5kaWYKIAogICAgIG5hcnJvdyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKLSAgICBpZiAobGVuZ3RoICE9IHN0cmxlbihuYXJyb3cpKSB7Ci0gICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIgaW4gJXMiKTsKKyAgICBpZiAoKHNpemVfdClsZW5ndGggIT0gc3RybGVuKG5hcnJvdykpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gJXMiKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTAyNyw5NyArMTAzNSw0NiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBBIGhlbHBlciB1c2VkIGJ5IGEgbnVtYmVyIG9mIFBPU0lYLW9ubHkgZnVuY3Rpb25zICovCi0jaWZuZGVmIE1TX1dJTkRPV1MKLXN0YXRpYyBpbnQKLV9wYXJzZV9vZmZfdChQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQotewotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB0eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKICNlbHNlCi0gICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKKyAgICB0eXBlZGVmIG9mZl90IFB5X29mZl90OworI2VuZGlmCisKK3N0YXRpYyBpbnQKK1B5X29mZl90X2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCB2b2lkICphZGRyKQoreworI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKKyAgICAqKChQeV9vZmZfdCAqKWFkZHIpID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKKyNlbHNlCisgICAgKigoUHlfb2ZmX3QgKilhZGRyKSA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKICNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gMTsKIH0KLSNlbmRpZgogCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwCi0vKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCi0gKiB2YWxpZCBhbmQgcmFpc2UgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgotICogTm9ybWFsbHksIGFuIGludmFsaWQgZmQgaXMgbGlrZWx5IHRvIGJlIGEgQyBwcm9ncmFtIGVycm9yIGFuZCB0aGVyZWZvcmUKLSAqIGFuIGFzc2VydGlvbiBjYW4gYmUgdXNlZnVsLCBidXQgaXQgZG9lcyBjb250cmFkaWN0IHRoZSBQT1NJWCBzdGFuZGFyZAotICogd2hpY2ggZm9yIHdyaXRlKDIpIHN0YXRlczoKLSAqICAgICJPdGhlcndpc2UsIC0xIHNoYWxsIGJlIHJldHVybmVkIGFuZCBlcnJubyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiIKLSAqICAgICJbRUJBREZdIFRoZSBmaWxkZXMgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIG9wZW4gZm9yCi0gKiAgICAgd3JpdGluZy4iCi0gKiBGdXJ0aGVybW9yZSwgcHl0aG9uIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbnkgb2xkIGludGVnZXIKLSAqIGFzIGEgZmQgYW5kIHNob3VsZCBtZXJlbHkgcmFpc2UgYSBweXRob24gZXhjZXB0aW9uIG9uIGVycm9yLgotICogVGhlIE1pY3Jvc29mdCBDUlQgZG9lc24ndCBwcm92aWRlIGFuIG9mZmljaWFsIHdheSB0byBjaGVjayBmb3IgdGhlCi0gKiB2YWxpZGl0eSBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IHdlIGNhbiBlbXVsYXRlIGl0cyBpbnRlcm5hbCBiZWhhdmlvdXIKLSAqIGJ5IHVzaW5nIHRoZSBleHBvcnRlZCBfX3BpbmZvIGRhdGEgbWVtYmVyIGFuZCBrbm93bGVkZ2Ugb2YgdGhlCi0gKiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGludm9sdmVkLgotICogVGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSB1cGRhdGVkIGZvciBlYWNoIHZlcnNpb24gb2YgdmlzdWFsIHN0dWRpbwotICogYWNjb3JkaW5nIHRvIHRoZSBmaWxlIGludGVybmFsLmggaW4gdGhlIENSVCBzb3VyY2UsIHVudGlsIE1TIGNvbWVzCi0gKiB1cCB3aXRoIGEgbGVzcyBoYWNreSB3YXkgdG8gZG8gdGhpcy4KLSAqIChhbGwgb2YgdGhpcyBpcyB0byBhdm9pZCBnbG9iYWxseSBtb2RpZnlpbmcgdGhlIENSVCBiZWhhdmlvdXIgdXNpbmcKLSAqIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpIGFuZCBfQ3J0U2V0UmVwb3J0TW9kZSgpKQotICovCi0vKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCi0gKiBPbmx5IHRoZSBmaXJzdCBpdGVtcyBtdXN0IGJlIHByZXNlbnQuCi0gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnRwdHJfdCBvc2ZobmQ7Ci0gICAgY2hhciBvc2ZpbGU7Ci19IG15X2lvaW5mbzsKLQotZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyICogX19waW9pbmZvW107Ci0jZGVmaW5lIElPSU5GT19MMkUgNQotI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCi0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQotI2RlZmluZSBGT1BFTiAweDAxCi0jZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKLQotLyogVGhpcyBmdW5jdGlvbiBlbXVsYXRlcyB3aGF0IHRoZSB3aW5kb3dzIENSVCBkb2VzIHRvIHZhbGlkYXRlIGZpbGUgaGFuZGxlcyAqLwotaW50Ci1fUHlWZXJpZnlfZmQoaW50IGZkKQorc3RhdGljIFB5T2JqZWN0ICoKK1B5TG9uZ19Gcm9tUHlfb2ZmX3QoUHlfb2ZmX3Qgb2Zmc2V0KQogewotICAgIGNvbnN0IGludCBpMSA9IGZkID4+IElPSU5GT19MMkU7Ci0gICAgY29uc3QgaW50IGkyID0gZmQgJiAoKDEgPDwgSU9JTkZPX0wyRSkgLSAxKTsKLQotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZW9mX2lvaW5mbyA9IDA7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBpb2luZm8gc3RydWN0dXJlLAotICAgICAqIGFzIHVzZWQgYnkgdGhlIENSVCBsb2FkZWQgaW4gbWVtb3J5Ci0gICAgICovCi0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCAmJiBfX3Bpb2luZm9bMF0gIT0gTlVMTCkgewotICAgICAgICBzaXplb2ZfaW9pbmZvID0gX21zaXplKF9fcGlvaW5mb1swXSkgLyBJT0lORk9fQVJSQVlfRUxUUzsKLSAgICB9Ci0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCkgewotICAgICAgICAvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLi4uICovCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0KLSAgICAvKiBTZWUgdGhhdCBpdCBpc24ndCBhIHNwZWNpYWwgQ0xFQVIgZmlsZW5vICovCi0gICAgaWYgKGZkICE9IF9OT19DT05TT0xFX0ZJTEVOTykgewotICAgICAgICAvKiBNaWNyb3NvZnQgQ1JUIHdvdWxkIGNoZWNrIHRoYXQgMDw9ZmQ8X25oYW5kbGUgYnV0IHdlIGNhbid0IGRvIHRoYXQuICBJbnN0ZWFkCi0gICAgICAgICAqIHdlIGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkgYW5kIG90aGVyIGluZm8KLSAgICAgICAgICovCi0gICAgICAgIGlmICgwIDw9IGkxICYmIGkxIDwgSU9JTkZPX0FSUkFZUyAmJiBfX3Bpb2luZm9baTFdICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIGZpbmFsbHksIGNoZWNrIHRoYXQgdGhlIGZpbGUgaXMgb3BlbiAqLwotICAgICAgICAgICAgbXlfaW9pbmZvKiBpbmZvID0gKG15X2lvaW5mbyopKF9fcGlvaW5mb1tpMV0gKyBpMiAqIHNpemVvZl9pb2luZm8pOwotICAgICAgICAgICAgaWYgKGluZm8tPm9zZmlsZSAmIEZPUEVOKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gIGZhaWw6Ci0gICAgZXJybm8gPSBFQkFERjsKLSAgICByZXR1cm4gMDsKKyNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcob2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvZmZzZXQpOworI2VuZGlmCiB9CiAKKworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKKy8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmRfZHVwMiB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCisgKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCisgKi8KKyNkZWZpbmUgSU9JTkZPX0wyRSA1CisjZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKKyNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQorI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCisjZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKKwogLyogdGhlIHNwZWNpYWwgY2FzZSBvZiBjaGVja2luZyBkdXAyLiAgVGhlIHRhcmdldCBmZCBtdXN0IGJlIGluIGEgc2Vuc2libGUgcmFuZ2UgKi8KIHN0YXRpYyBpbnQKIF9QeVZlcmlmeV9mZF9kdXAyKGludCBmZDEsIGludCBmZDIpCkBAIC0xMTMyLDQ2ICsxMDg5LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogfQogI2Vsc2UKLS8qIGR1bW15IHZlcnNpb24uIF9QeVZlcmlmeV9mZCgpIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBmaWxlb2JqZWN0LmggKi8KLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkX2R1cDIoQSwgQikgKDEpCisjZGVmaW5lIF9QeVZlcmlmeV9mZF9kdXAyKGZkMSwgZmQyKSAoX1B5VmVyaWZ5X2ZkKGZkMSkgJiYgKGZkMikgPj0gMCkKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwotLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgd2FzIGNvcGllZCBmcm9tCi0gICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3OTE1MTQuYXNweCBhcyB0aGUgcmVxdWlyZWQKLSAgIGluY2x1ZGUgZG9lc24ndCBzZWVtIHRvIGJlIHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAotICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX1JFUEFSU0VfREFUQV9CVUZGRVIgewotICAgIFVMT05HIFJlcGFyc2VUYWc7Ci0gICAgVVNIT1JUIFJlcGFyc2VEYXRhTGVuZ3RoOwotICAgIFVTSE9SVCBSZXNlcnZlZDsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBVU0hPUlQgU3Vic3RpdHV0ZU5hbWVPZmZzZXQ7Ci0gICAgICAgICAgICBVU0hPUlQgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7Ci0gICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lT2Zmc2V0OwotICAgICAgICAgICAgVVNIT1JUIFByaW50TmFtZUxlbmd0aDsKLSAgICAgICAgICAgIFVMT05HIEZsYWdzOwotICAgICAgICAgICAgV0NIQVIgUGF0aEJ1ZmZlclsxXTsKLSAgICAgICAgfSBTeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyOwotCi0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBVU0hPUlQgU3Vic3RpdHV0ZU5hbWVPZmZzZXQ7Ci0gICAgICAgICAgICBVU0hPUlQgIFN1YnN0aXR1dGVOYW1lTGVuZ3RoOwotICAgICAgICAgICAgVVNIT1JUICBQcmludE5hbWVPZmZzZXQ7Ci0gICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZUxlbmd0aDsKLSAgICAgICAgICAgIFdDSEFSICBQYXRoQnVmZmVyWzFdOwotICAgICAgICB9IE1vdW50UG9pbnRSZXBhcnNlQnVmZmVyOwotCi0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBVQ0hBUiAgRGF0YUJ1ZmZlclsxXTsKLSAgICAgICAgfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsKLSAgICB9OwotfSBSRVBBUlNFX0RBVEFfQlVGRkVSLCAqUFJFUEFSU0VfREFUQV9CVUZGRVI7Ci0KLSNkZWZpbmUgUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSAgRklFTERfT0ZGU0VUKFJFUEFSU0VfREFUQV9CVUZGRVIsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCi0jZGVmaW5lIE1BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCiAKIHN0YXRpYyBpbnQKIHdpbjMyX2dldF9yZXBhcnNlX3RhZyhIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGUsIFVMT05HICpyZXBhcnNlX3RhZykKQEAgLTEzNTYsNDcgKzEyNzcsMzcgQEAKIAogLyogUE9TSVggZ2VuZXJpYyBtZXRob2RzICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9maWxkZXMoUHlPYmplY3QgKmZkb2JqLCBpbnQgKCpmdW5jKShpbnQpKQorc3RhdGljIGludAorZmlsZGVzX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkKIHsKICAgICBpbnQgZmQ7Ci0gICAgaW50IHJlczsKLSAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoZmRvYmopOworICAgIGludCAqcG9pbnRlciA9IChpbnQgKilwOworICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihvKTsKICAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKmZ1bmMpKGZkKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIHJldHVybiAwOworICAgICpwb2ludGVyID0gZmQ7CisgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF8xc3RyKGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwgUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwKLSAgICAgICAgICAgaW50ICgqZnVuYykoY29uc3QgY2hhciopKQorcG9zaXhfZmlsZGVzX2ZkKGludCBmZCwgaW50ICgqZnVuYykoaW50KSkKIHsKLSAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgcmVzOwotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSBmdW5jX25hbWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykocGF0aC5uYXJyb3cpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICByZXMgPSAoKmZ1bmMpKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIApAQCAtMTQ3NSw4OSArMTM4Niw3IEBACiAgICBUaGVyZWZvcmUsIHdlIGltcGxlbWVudCBvdXIgb3duIHN0YXQsIGJhc2VkIG9uIHRoZSBXaW4zMiBBUEkgZGlyZWN0bHkuCiAqLwogI2RlZmluZSBIQVZFX1NUQVRfTlNFQyAxCi0KLXN0cnVjdCB3aW4zMl9zdGF0ewotICAgIHVuc2lnbmVkIGxvbmcgc3RfZGV2OwotICAgIF9faW50NjQgc3RfaW5vOwotICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7Ci0gICAgaW50IHN0X25saW5rOwotICAgIGludCBzdF91aWQ7Ci0gICAgaW50IHN0X2dpZDsKLSAgICB1bnNpZ25lZCBsb25nIHN0X3JkZXY7Ci0gICAgX19pbnQ2NCBzdF9zaXplOwotICAgIHRpbWVfdCBzdF9hdGltZTsKLSAgICBpbnQgc3RfYXRpbWVfbnNlYzsKLSAgICB0aW1lX3Qgc3RfbXRpbWU7Ci0gICAgaW50IHN0X210aW1lX25zZWM7Ci0gICAgdGltZV90IHN0X2N0aW1lOwotICAgIGludCBzdF9jdGltZV9uc2VjOwotfTsKLQotc3RhdGljIF9faW50NjQgc2Vjc19iZXR3ZWVuX2Vwb2NocyA9IDExNjQ0NDczNjAwOyAvKiBTZWNvbmRzIGJldHdlZW4gMS4xLjE2MDEgYW5kIDEuMS4xOTcwICovCi0KLXN0YXRpYyB2b2lkCi1GSUxFX1RJTUVfdG9fdGltZV90X25zZWMoRklMRVRJTUUgKmluX3B0ciwgdGltZV90ICp0aW1lX291dCwgaW50KiBuc2VjX291dCkKLXsKLSAgICAvKiBYWFggZW5kaWFubmVzcy4gU2hvdWxkbid0IG1hdHRlciwgYXMgYWxsIFdpbmRvd3MgaW1wbGVtZW50YXRpb25zIGFyZSBsaXR0bGUtZW5kaWFuICovCi0gICAgLyogQ2Fubm90IHNpbXBseSBjYXN0IGFuZCBkZXJlZmVyZW5jZSBpbl9wdHIsCi0gICAgICAgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsaWduZWQgcHJvcGVybHkgKi8KLSAgICBfX2ludDY0IGluOwotICAgIG1lbWNweSgmaW4sIGluX3B0ciwgc2l6ZW9mKGluKSk7Ci0gICAgKm5zZWNfb3V0ID0gKGludCkoaW4gJSAxMDAwMDAwMCkgKiAxMDA7IC8qIEZJTEVUSU1FIGlzIGluIHVuaXRzIG9mIDEwMCBuc2VjLiAqLwotICAgICp0aW1lX291dCA9IFB5X1NBRkVfRE9XTkNBU1QoKGluIC8gMTAwMDAwMDApIC0gc2Vjc19iZXR3ZWVuX2Vwb2NocywgX19pbnQ2NCwgdGltZV90KTsKLX0KLQotc3RhdGljIHZvaWQKLXRpbWVfdF90b19GSUxFX1RJTUUodGltZV90IHRpbWVfaW4sIGludCBuc2VjX2luLCBGSUxFVElNRSAqb3V0X3B0cikKLXsKLSAgICAvKiBYWFggZW5kaWFubmVzcyAqLwotICAgIF9faW50NjQgb3V0OwotICAgIG91dCA9IHRpbWVfaW4gKyBzZWNzX2JldHdlZW5fZXBvY2hzOwotICAgIG91dCA9IG91dCAqIDEwMDAwMDAwICsgbnNlY19pbiAvIDEwMDsKLSAgICBtZW1jcHkob3V0X3B0ciwgJm91dCwgc2l6ZW9mKG91dCkpOwotfQotCi0vKiBCZWxvdywgd2UgKmtub3cqIHRoYXQgdWdvK3IgaXMgMDQ0NCAqLwotI2lmIF9TX0lSRUFEICE9IDA0MDAKLSNlcnJvciBVbnN1cHBvcnRlZCBDIGxpYnJhcnkKLSNlbmRpZgotc3RhdGljIGludAotYXR0cmlidXRlc190b19tb2RlKERXT1JEIGF0dHIpCi17Ci0gICAgaW50IG0gPSAwOwotICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotICAgICAgICBtIHw9IF9TX0lGRElSIHwgMDExMTsgLyogSUZFWEVDIGZvciB1c2VyLGdyb3VwLG90aGVyICovCi0gICAgZWxzZQotICAgICAgICBtIHw9IF9TX0lGUkVHOwotICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCi0gICAgICAgIG0gfD0gMDQ0NDsKLSAgICBlbHNlCi0gICAgICAgIG0gfD0gMDY2NjsKLSAgICByZXR1cm4gbTsKLX0KLQotc3RhdGljIGludAotYXR0cmlidXRlX2RhdGFfdG9fc3RhdChCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgcmVwYXJzZV90YWcsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCi17Ci0gICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZW9mKCpyZXN1bHQpKTsKLSAgICByZXN1bHQtPnN0X21vZGUgPSBhdHRyaWJ1dGVzX3RvX21vZGUoaW5mby0+ZHdGaWxlQXR0cmlidXRlcyk7Ci0gICAgcmVzdWx0LT5zdF9zaXplID0gKCgoX19pbnQ2NClpbmZvLT5uRmlsZVNpemVIaWdoKTw8MzIpICsgaW5mby0+bkZpbGVTaXplTG93OwotICAgIHJlc3VsdC0+c3RfZGV2ID0gaW5mby0+ZHdWb2x1bWVTZXJpYWxOdW1iZXI7Ci0gICAgcmVzdWx0LT5zdF9yZGV2ID0gcmVzdWx0LT5zdF9kZXY7Ci0gICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdENyZWF0aW9uVGltZSwgJnJlc3VsdC0+c3RfY3RpbWUsICZyZXN1bHQtPnN0X2N0aW1lX25zZWMpOwotICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0V3JpdGVUaW1lLCAmcmVzdWx0LT5zdF9tdGltZSwgJnJlc3VsdC0+c3RfbXRpbWVfbnNlYyk7Ci0gICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdExhc3RBY2Nlc3NUaW1lLCAmcmVzdWx0LT5zdF9hdGltZSwgJnJlc3VsdC0+c3RfYXRpbWVfbnNlYyk7Ci0gICAgcmVzdWx0LT5zdF9ubGluayA9IGluZm8tPm5OdW1iZXJPZkxpbmtzOwotICAgIHJlc3VsdC0+c3RfaW5vID0gKCgoX19pbnQ2NClpbmZvLT5uRmlsZUluZGV4SGlnaCk8PDMyKSArIGluZm8tPm5GaWxlSW5kZXhMb3c7Ci0gICAgaWYgKHJlcGFyc2VfdGFnID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspIHsKLSAgICAgICAgLyogZmlyc3QgY2xlYXIgdGhlIFNfSUZNVCBiaXRzICovCi0gICAgICAgIHJlc3VsdC0+c3RfbW9kZSBePSAocmVzdWx0LT5zdF9tb2RlICYgU19JRk1UKTsKLSAgICAgICAgLyogbm93IHNldCB0aGUgYml0cyB0aGF0IG1ha2UgdGhpcyBhIHN5bWxpbmsgKi8KLSAgICAgICAgcmVzdWx0LT5zdF9tb2RlIHw9IFNfSUZMTks7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19CisjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfRklMRV9BVFRSSUJVVEVTIDEKIAogc3RhdGljIEJPT0wKIGF0dHJpYnV0ZXNfZnJvbV9kaXIoTFBDU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCkBAIC0xNTgyLDYgKzE0MTEsMjUgQEAKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIHZvaWQKK2ZpbmRfZGF0YV90b19maWxlX2luZm9fdyhXSU4zMl9GSU5EX0RBVEFXICpwRmlsZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgKnJlcGFyc2VfdGFnKQoreworICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKKyAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gcEZpbGVEYXRhLT5kd0ZpbGVBdHRyaWJ1dGVzOworICAgIGluZm8tPmZ0Q3JlYXRpb25UaW1lICAgPSBwRmlsZURhdGEtPmZ0Q3JlYXRpb25UaW1lOworICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBwRmlsZURhdGEtPmZ0TGFzdEFjY2Vzc1RpbWU7CisgICAgaW5mby0+ZnRMYXN0V3JpdGVUaW1lICA9IHBGaWxlRGF0YS0+ZnRMYXN0V3JpdGVUaW1lOworICAgIGluZm8tPm5GaWxlU2l6ZUhpZ2ggICAgPSBwRmlsZURhdGEtPm5GaWxlU2l6ZUhpZ2g7CisgICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IHBGaWxlRGF0YS0+bkZpbGVTaXplTG93OworLyogIGluZm8tPm5OdW1iZXJPZkxpbmtzICAgPSAxOyAqLworICAgIGlmIChwRmlsZURhdGEtPmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKQorICAgICAgICAqcmVwYXJzZV90YWcgPSBwRmlsZURhdGEtPmR3UmVzZXJ2ZWQwOworICAgIGVsc2UKKyAgICAgICAgKnJlcGFyc2VfdGFnID0gMDsKK30KKwogc3RhdGljIEJPT0wKIGF0dHJpYnV0ZXNfZnJvbV9kaXJfdyhMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7CkBAIC0xNTkxLDQ1ICsxNDM5LDEwIEBACiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKLSAgICAqcmVwYXJzZV90YWcgPSAwOwotICAgIGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMgPSBGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzOwotICAgIGluZm8tPmZ0Q3JlYXRpb25UaW1lICAgPSBGaWxlRGF0YS5mdENyZWF0aW9uVGltZTsKLSAgICBpbmZvLT5mdExhc3RBY2Nlc3NUaW1lID0gRmlsZURhdGEuZnRMYXN0QWNjZXNzVGltZTsKLSAgICBpbmZvLT5mdExhc3RXcml0ZVRpbWUgID0gRmlsZURhdGEuZnRMYXN0V3JpdGVUaW1lOwotICAgIGluZm8tPm5GaWxlU2l6ZUhpZ2ggICAgPSBGaWxlRGF0YS5uRmlsZVNpemVIaWdoOwotICAgIGluZm8tPm5GaWxlU2l6ZUxvdyAgICAgPSBGaWxlRGF0YS5uRmlsZVNpemVMb3c7Ci0vKiAgaW5mby0+bk51bWJlck9mTGlua3MgICA9IDE7ICovCi0gICAgaWYgKEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKQotICAgICAgICAqcmVwYXJzZV90YWcgPSBGaWxlRGF0YS5kd1Jlc2VydmVkMDsKKyAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIEdyYWIgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KLXN0YXRpYyBpbnQgaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSA9IC0xOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVykoSEFORExFLCBMUFdTVFIsIERXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQpOwotc3RhdGljIGludAotY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKCkKLXsKLSAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOwotICAgIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7Ci0KLSAgICAvKiBvbmx5IHJlY2hlY2sgKi8KLSAgICBpZiAoLTEgPT0gaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKLSAgICB7Ci0gICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwotICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEiKTsKLSAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXIik7Ci0gICAgICAgIGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXOwotICAgIH0KLSAgICByZXR1cm4gaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZTsKLX0KLQogc3RhdGljIEJPT0wKIGdldF90YXJnZXRfcGF0aChIQU5ETEUgaGRsLCB3Y2hhcl90ICoqdGFyZ2V0X3BhdGgpCiB7CkBAIC0xNjM4LDggKzE0NTEsOCBAQAogCiAgICAgLyogV2UgaGF2ZSBhIGdvb2QgaGFuZGxlIHRvIHRoZSB0YXJnZXQsIHVzZSBpdCB0byBkZXRlcm1pbmUKICAgICAgICB0aGUgdGFyZ2V0IHBhdGggbmFtZSAodGhlbiB3ZSdsbCBjYWxsIGxzdGF0IG9uIGl0KS4gKi8KLSAgICBidWZfc2l6ZSA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGRsLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWT0xVTUVfTkFNRV9ET1MpOworICAgIGJ1Zl9zaXplID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZPTFVNRV9OQU1FX0RPUyk7CiAgICAgaWYoIWJ1Zl9zaXplKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTE2NDksNyArMTQ2Miw3IEBACiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICByZXN1bHRfbGVuZ3RoID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsCisgICAgcmVzdWx0X2xlbmd0aCA9IEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGRsLAogICAgICAgICAgICAgICAgICAgICAgICBidWYsIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogCiAgICAgaWYoIXJlc3VsdF9sZW5ndGgpIHsKQEAgLTE2NjksMTAgKzE0ODIsMTAgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpOwogc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LAord2luMzJfeHN0YXRfaW1wbChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgaW50IGNvZGU7CkBAIC0xNjgyLDEyICsxNDk1LDYgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBjb25zdCBjaGFyICpkb3Q7CiAKLSAgICBpZighY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKCkpIHsKLSAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUsIGRvbid0Ci0gICAgICAgICAgIHRyYXZlcnNlIHJlcGFyc2UgcG9pbnQuICovCi0gICAgICAgIHRyYXZlcnNlID0gRkFMU0U7Ci0gICAgfQotCiAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQSgKICAgICAgICAgcGF0aCwKICAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCkBAIC0xNzU1LDcgKzE1NjIsNyBAQAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKICAgICB9Ci0gICAgYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CisgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOwogCiAgICAgLyogU2V0IFNfSUVYRUMgaWYgaXQgaXMgYW4gLmV4ZSwgLmJhdCwgLi4uICovCiAgICAgZG90ID0gc3RycmNocihwYXRoLCAnLicpOwpAQCAtMTc2OCw3ICsxNTc1LDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpCiB7CiAgICAgaW50IGNvZGU7CkBAIC0xNzc4LDEyICsxNTg1LDYgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBjb25zdCB3Y2hhcl90ICpkb3Q7CiAKLSAgICBpZighY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKCkpIHsKLSAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUsIGRvbid0Ci0gICAgICAgICAgIHRyYXZlcnNlIHJlcGFyc2UgcG9pbnQuICovCi0gICAgICAgIHRyYXZlcnNlID0gRkFMU0U7Ci0gICAgfQotCiAgICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKICAgICAgICAgcGF0aCwKICAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCkBAIC0xODUxLDcgKzE2NTIsNyBAQAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKICAgICB9Ci0gICAgYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CisgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOwogCiAgICAgLyogU2V0IFNfSUVYRUMgaWYgaXQgaXMgYW4gLmV4ZSwgLmJhdCwgLi4uICovCiAgICAgZG90ID0gd2NzcmNocihwYXRoLCAnLicpOwpAQCAtMTg2NCw3ICsxNjY1LDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xODc0LDcgKzE2NzUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCit3aW4zMl94c3RhdF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xODk2LDgwICsxNjk3LDI5IEBACiAgICBUaGUgX3cgcmVwcmVzZW50IFVuaWNvZGUgZXF1aXZhbGVudHMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIEFOU0kgZnVuY3Rpb25zLiAqLwogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfbHN0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfbHN0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfbHN0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBGQUxTRSk7CiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3N0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKK3dpbjMyX3N0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIFRSVUUpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9zdGF0X3coY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKK3dpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBUUlVFKTsKIH0KIAotc3RhdGljIGludAotd2luMzJfZnN0YXQoaW50IGZpbGVfbnVtYmVyLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQotewotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87Ci0gICAgSEFORExFIGg7Ci0gICAgaW50IHR5cGU7Ci0KLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlX251bWJlcikpCi0gICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICBlbHNlCi0gICAgICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVfbnVtYmVyKTsKLQotICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgotICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KLSAgICBlcnJubyA9IDA7Ci0KLSAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAvKiBUaGlzIGlzIHJlYWxseSBhIEMgbGlicmFyeSBlcnJvciAoaW52YWxpZCBmaWxlIGhhbmRsZSkuCi0gICAgICAgICAgIFdlIHNldCB0aGUgV2luMzIgZXJyb3IgdG8gdGhlIGNsb3NlcyBvbmUgbWF0Y2hpbmcuICovCi0gICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9JTlZBTElEX0hBTkRMRSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZW9mKCpyZXN1bHQpKTsKLQotICAgIHR5cGUgPSBHZXRGaWxlVHlwZShoKTsKLSAgICBpZiAodHlwZSA9PSBGSUxFX1RZUEVfVU5LTk9XTikgewotICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIC8qIGVsc2U6IHZhbGlkIGJ1dCB1bmtub3duIGZpbGUgKi8KLSAgICB9Ci0KLSAgICBpZiAodHlwZSAhPSBGSUxFX1RZUEVfRElTSykgewotICAgICAgICBpZiAodHlwZSA9PSBGSUxFX1RZUEVfQ0hBUikKLSAgICAgICAgICAgIHJlc3VsdC0+c3RfbW9kZSA9IF9TX0lGQ0hSOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IEZJTEVfVFlQRV9QSVBFKQotICAgICAgICAgICAgcmVzdWx0LT5zdF9tb2RlID0gX1NfSUZJRk87Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaCwgJmluZm8pKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBhdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCAwLCByZXN1bHQpOwotICAgIC8qIHNwZWNpZmljIHRvIGZzdGF0KCkgKi8KLSAgICByZXN1bHQtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby5uRmlsZUluZGV4SGlnaCk8PDMyKSArIGluZm8ubkZpbGVJbmRleExvdzsKLSAgICByZXR1cm4gMDsKLX0KLQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKQEAgLTIwMTksNiArMTc2OSw5IEBACiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CSVJUSFRJTUUKICAgICB7InN0X2JpcnRodGltZSIsICAgInRpbWUgb2YgY3JlYXRpb24ifSwKICNlbmRpZgorI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfRklMRV9BVFRSSUJVVEVTCisgICAgeyJzdF9maWxlX2F0dHJpYnV0ZXMiLCAiV2luZG93cyBmaWxlIGF0dHJpYnV0ZSBiaXRzIn0sCisjZW5kaWYKICAgICB7MH0KIH07CiAKQEAgLTIwNTgsNiArMTgxMSwxMiBAQAogI2RlZmluZSBTVF9CSVJUSFRJTUVfSURYIFNUX0dFTl9JRFgKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMKKyNkZWZpbmUgU1RfRklMRV9BVFRSSUJVVEVTX0lEWCAoU1RfQklSVEhUSU1FX0lEWCsxKQorI2Vsc2UKKyNkZWZpbmUgU1RfRklMRV9BVFRSSUJVVEVTX0lEWCBTVF9CSVJUSFRJTUVfSURYCisjZW5kaWYKKwogc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzdGF0X3Jlc3VsdF9kZXNjID0gewogICAgICJzdGF0X3Jlc3VsdCIsIC8qIG5hbWUgKi8KICAgICBzdGF0X3Jlc3VsdF9fZG9jX18sIC8qIGRvYyAqLwpAQCAtMjE1OSwxMCArMTkxOCwxMiBAQAogUHlEb2NfU1RSVkFSKHN0YXRfZmxvYXRfdGltZXNfX2RvY19fLAogInN0YXRfZmxvYXRfdGltZXMoW25ld3ZhbF0pIC0+IG9sZHZhbFxuXG5cCiBEZXRlcm1pbmUgd2hldGhlciBvcy5bbGZdc3RhdCByZXByZXNlbnRzIHRpbWUgc3RhbXBzIGFzIGZsb2F0IG9iamVjdHMuXG5cCi1JZiBuZXd2YWwgaXMgVHJ1ZSwgZnV0dXJlIGNhbGxzIHRvIHN0YXQoKSByZXR1cm4gZmxvYXRzLCBpZiBpdCBpcyBGYWxzZSxcblwKLWZ1dHVyZSBjYWxscyByZXR1cm4gaW50cy4gXG5cCi1JZiBuZXd2YWwgaXMgb21pdHRlZCwgcmV0dXJuIHRoZSBjdXJyZW50IHNldHRpbmcuXG4iKTsKK1xuXAorSWYgdmFsdWUgaXMgVHJ1ZSwgZnV0dXJlIGNhbGxzIHRvIHN0YXQoKSByZXR1cm4gZmxvYXRzOyBpZiBpdCBpcyBGYWxzZSxcblwKK2Z1dHVyZSBjYWxscyByZXR1cm4gaW50cy5cblwKK0lmIHZhbHVlIGlzIG9taXR0ZWQsIHJldHVybiB0aGUgY3VycmVudCBzZXR0aW5nLlxuIik7CiAKKy8qIEFDIDMuNTogdGhlIHB1YmxpYyBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSBOb25lLCBub3QgcmVhZHkgZm9yIHRoYXQgeWV0ICovCiBzdGF0aWMgUHlPYmplY3QqCiBzdGF0X2Zsb2F0X3RpbWVzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTIzMjIsNiArMjA4MywxMCBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgU1RfRkxBR1NfSURYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9mbGFncykpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIFNUX0ZJTEVfQVRUUklCVVRFU19JRFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhzdC0+c3RfZmlsZV9hdHRyaWJ1dGVzKSk7CisjZW5kaWYKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKQEAgLTIzODUsMTIgKzIxNTAsMTgxIEBACiAgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKIH0KIAotI2lmZGVmIEhBVkVfRlNUQVRBVAotICAgICNkZWZpbmUgT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKy8qW3B5dGhvbiBpbnB1dF0KKworZm9yIHMgaW4gIiIiCisKK0ZBQ0NFU1NBVAorRkNITU9EQVQKK0ZDSE9XTkFUCitGU1RBVEFUCitMSU5LQVQKK01LRElSQVQKK01LRklGT0FUCitNS05PREFUCitPUEVOQVQKK1JFQURMSU5LQVQKK1NZTUxJTktBVAorVU5MSU5LQVQKKworIiIiLnN0cmlwKCkuc3BsaXQoKToKKyAgICBzID0gcy5zdHJpcCgpCisgICAgcHJpbnQoIiIiCisjaWZkZWYgSEFWRV97c30KKyAgICAjZGVmaW5lIHtzfV9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKICNlbHNlCi0gICAgI2RlZmluZSBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisgICAgI2RlZmluZSB7c31fRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorIiIiLnJzdHJpcCgpLmZvcm1hdChzPXMpKQorCitmb3IgcyBpbiAiIiIKKworRkNIRElSCitGQ0hNT0QKK0ZDSE9XTgorRkRPUEVORElSCitGRVhFQ1ZFCitGUEFUSENPTkYKK0ZTVEFUVkZTCitGVFJVTkNBVEUKKworIiIiLnN0cmlwKCkuc3BsaXQoKToKKyAgICBzID0gcy5zdHJpcCgpCisgICAgcHJpbnQoIiIiCisjaWZkZWYgSEFWRV97c30KKyAgICAjZGVmaW5lIFBBVEhfSEFWRV97c30gMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV97c30gMAogI2VuZGlmCiAKKyIiIi5yc3RyaXAoKS5mb3JtYXQocz1zKSkKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgI2RlZmluZSBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRkFDQ0VTU0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9EQVQKKyAgICAjZGVmaW5lIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIT1dOQVQKKyAgICAjZGVmaW5lIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRBVAorICAgICNkZWZpbmUgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgI2RlZmluZSBMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtESVJBVAorICAgICNkZWZpbmUgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAjZGVmaW5lIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgICNkZWZpbmUgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBNS05PREFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfT1BFTkFUCisgICAgI2RlZmluZSBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgICNkZWZpbmUgUkVBRExJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBSRUFETElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgI2RlZmluZSBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAjZGVmaW5lIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIRElSCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIRElSIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIRElSIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hNT0QgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hNT0QgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE9XTiAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE9XTiAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkRPUEVORElSIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkRPUEVORElSIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkVYRUNWRSAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZFWEVDVkUgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZQQVRIQ09ORiAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZQQVRIQ09ORiAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GU1RBVFZGUyAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZTVEFUVkZTIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GVFJVTkNBVEUgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GVFJVTkNBVEUgMAorI2VuZGlmCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGJkNGY2ZjdkNDEyNjdmMSBpbnB1dD04MGI0Yzg5MGI2Nzc0ZWE1XSovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgI3VuZGVmIFBBVEhfSEFWRV9GVFJVTkNBVEUKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GVFJVTkNBVEUgMQorI2VuZGlmCiAKIC8qW3B5dGhvbiBpbnB1dF0KIApAQCAtMjQwNSwyMiArMjMzOSwyNSBAQAogICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhbGxvd19mZD1GYWxzZSwgbnVsbGFibGU9RmFsc2UpOgogICAgICAgICAjIHJpZ2h0IG5vdyBwYXRoX3QgZG9lc24ndCBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzLgogICAgICAgICAjIHRvIHN1cHBvcnQgYSBkZWZhdWx0IHZhbHVlLCB5b3UnbGwgbmVlZCB0byBvdmVycmlkZSBpbml0aWFsaXplKCkuCi0gICAgICAgIGlmIHNlbGYuZGVmYXVsdCBpcyBub3QgdW5zcGVjaWZpZWQ6CisgICAgICAgIGlmIHNlbGYuZGVmYXVsdCBub3QgaW4gKHVuc3BlY2lmaWVkLCBOb25lKToKICAgICAgICAgICAgIGZhaWwoIkNhbid0IHNwZWNpZnkgYSBkZWZhdWx0IHRvIHRoZSBwYXRoX3QgY29udmVydGVyISIpCiAKLSAgICAgICAgaWYgc2VsZi5jX2RlZmF1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmYWlsKCJDYW4ndCBzcGVjaWZ5IGEgY19kZWZhdWx0IHRvIHRoZSBwYXRoX3QgY29udmVydGVyISIpCisgICAgICAgIGlmIHNlbGYuY19kZWZhdWx0IG5vdCBpbiAoTm9uZSwgJ1B5X05vbmUnKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3Qgc3BlY2lmeSBhIGNfZGVmYXVsdCB0byB0aGUgcGF0aF90IGNvbnZlcnRlciEiKQogCiAgICAgICAgIHNlbGYubnVsbGFibGUgPSBudWxsYWJsZQogICAgICAgICBzZWxmLmFsbG93X2ZkID0gYWxsb3dfZmQKIAogICAgIGRlZiBwcmVfcmVuZGVyKHNlbGYpOgogICAgICAgICBkZWYgc3RyaWZ5KHZhbHVlKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgICAgICByZXR1cm4gc3RyKGludChib29sKHZhbHVlKSkpCiAKICAgICAgICAgIyBhZGQgc2VsZi5weV9uYW1lIGhlcmUgd2hlbiBtZXJnaW5nIHdpdGggcG9zaXhtb2R1bGUgY29udmVyc2lvbgotICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICdQQVRIX1RfSU5JVElBTElaRSgie30iLCB7fSwge30pJy5mb3JtYXQoCisgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ1BBVEhfVF9JTklUSUFMSVpFKCJ7fSIsICJ7fSIsIHt9LCB7fSknLmZvcm1hdCgKICAgICAgICAgICAgIHNlbGYuZnVuY3Rpb24ubmFtZSwKKyAgICAgICAgICAgIHNlbGYubmFtZSwKICAgICAgICAgICAgIHN0cmlmeShzZWxmLm51bGxhYmxlKSwKICAgICAgICAgICAgIHN0cmlmeShzZWxmLmFsbG93X2ZkKSwKICAgICAgICAgICAgICkKQEAgLTI0MzEsMTUgKzIzNjgsODcgQEAKIAogY2xhc3MgZGlyX2ZkX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2ludCcKLSAgICBjb252ZXJ0ZXIgPSAnT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSJwogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYpOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCByZXF1aXJlcz1Ob25lKToKICAgICAgICAgaWYgc2VsZi5kZWZhdWx0IGluICh1bnNwZWNpZmllZCwgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICdERUZBVUxUX0RJUl9GRCcKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXF1aXJlcywgc3RyKToKKyAgICAgICAgICAgIHNlbGYuY29udmVydGVyID0gcmVxdWlyZXMudXBwZXIoKSArICdfRElSX0ZEX0NPTlZFUlRFUicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udmVydGVyID0gJ2Rpcl9mZF9jb252ZXJ0ZXInCiAKK2NsYXNzIGZpbGRlc19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnQnCisgICAgY29udmVydGVyID0gJ2ZpbGRlc19jb252ZXJ0ZXInCisKK2NsYXNzIHVpZF90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gInVpZF90IgorICAgIGNvbnZlcnRlciA9ICdfUHlfVWlkX0NvbnZlcnRlcicKKworY2xhc3MgZ2lkX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAiZ2lkX3QiCisgICAgY29udmVydGVyID0gJ19QeV9HaWRfQ29udmVydGVyJworCitjbGFzcyBkZXZfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdkZXZfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5X0Rldl9Db252ZXJ0ZXInCisKK2NsYXNzIGRldl90X3JldHVybl9jb252ZXJ0ZXIodW5zaWduZWRfbG9uZ19yZXR1cm5fY29udmVydGVyKToKKyAgICB0eXBlID0gJ2Rldl90JworICAgIGNvbnZlcnNpb25fZm4gPSAnX1B5TG9uZ19Gcm9tRGV2JworICAgIHVuc2lnbmVkX2Nhc3QgPSAnKGRldl90KScKKworY2xhc3MgRlNDb252ZXJ0ZXJfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlPYmplY3QgKicKKyAgICBjb252ZXJ0ZXIgPSAnUHlVbmljb2RlX0ZTQ29udmVydGVyJworICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5kZWZhdWx0IGlzIG5vdCB1bnNwZWNpZmllZDoKKyAgICAgICAgICAgIGZhaWwoIkZTQ29udmVydGVyX2NvbnZlcnRlciBkb2VzIG5vdCBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzIikKKyAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAnTlVMTCcKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICByZXR1cm4gIlB5X1hERUNSRUYoIiArIHNlbGYubmFtZSArICIpO1xuIgorCitjbGFzcyBwaWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdwaWRfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9QSUQgIicKKworY2xhc3MgaWR0eXBlX3RfY29udmVydGVyKGludF9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaWR0eXBlX3QnCisKK2NsYXNzIGlkX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaWRfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9QSUQgIicKKworY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCisgICAgZm9ybWF0X3VuaXQgPSAnIiBfUHlfUEFSU0VfSU5UUFRSICInCisKK2NsYXNzIFB5X29mZl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X29mZl90JworICAgIGNvbnZlcnRlciA9ICdQeV9vZmZfdF9jb252ZXJ0ZXInCisKK2NsYXNzIFB5X29mZl90X3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X29mZl90JworICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21QeV9vZmZfdCcKKworY2xhc3MgcGF0aF9jb25mbmFtZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZT0iaW50IgorICAgIGNvbnZlcnRlcj0iY29udl9wYXRoX2NvbmZuYW1lIgorCitjbGFzcyBjb25mc3RyX2NvbmZuYW1lX2NvbnZlcnRlcihwYXRoX2NvbmZuYW1lX2NvbnZlcnRlcik6CisgICAgY29udmVydGVyPSdjb252X2NvbmZzdHJfY29uZm5hbWUnCisKK2NsYXNzIHN5c2NvbmZfY29uZm5hbWVfY29udmVydGVyKHBhdGhfY29uZm5hbWVfY29udmVydGVyKToKKyAgICBjb252ZXJ0ZXI9ImNvbnZfc3lzY29uZl9jb25mbmFtZSIKKworY2xhc3Mgc2NoZWRfcGFyYW1fY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnc3RydWN0IHNjaGVkX3BhcmFtJworICAgIGNvbnZlcnRlciA9ICdjb252ZXJ0X3NjaGVkX3BhcmFtJworICAgIGltcGxfYnlfcmVmZXJlbmNlID0gVHJ1ZTsKIAogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NWM5ZjQ1NmY1MzI0NGZjM10qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YWZmZTY4MzE2ZjE2MDQwMV0qLwogCiAvKltjbGluaWMgaW5wdXRdCiAKQEAgLTI0NTAsNyArMjQ1OSw3IEBACiAKICAgICAqCiAKLSAgICBkaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmc3RhdGF0JykgPSBOb25lCiAgICAgICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIGEgcmVsYXRpdmUgc3RyaW5nOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0bwogICAgICAgICB0aGF0IGRpcmVjdG9yeS4KQEAgLTI0NzEsMTAzICsyNDgwLDQxIEBACiAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKG9zX3N0YXRfX2RvY19fLAotInN0YXQoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgotIi0tXG4iCi0iXG4iCi0iUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG4iCi0iXG4iCi0iICBwYXRoXG4iCi0iICAgIFBhdGggdG8gYmUgZXhhbWluZWQ7IGNhbiBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuXG4iCi0iICBkaXJfZmRcbiIKLSIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgotIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgYSByZWxhdGl2ZSBzdHJpbmc7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvXG4iCi0iICAgIHRoYXQgZGlyZWN0b3J5LlxuIgotIiAgZm9sbG93X3N5bWxpbmtzXG4iCi0iICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCi0iICAgIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCi0iICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKLSJcbiIKLSJkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG4iCi0iICBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCi0iICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuIgotIlxuIgotIkl0XCdzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG4iCi0iICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKLQotI2RlZmluZSBPU19TVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0X19kb2NfX30sCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKLSAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgMCwgMSk7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIE9TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwotCi1leGl0OgotICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjFkY2FhNWUyNGRiOTg4MiBpbnB1dD01YWUxNTViZDQ3NWZkMjBhXSovCitvc19zdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTRmNzU2OWY5NWQ1MjNjYSBpbnB1dD0wOTlkMzU2YzMwNmZhMjRhXSovCiB7CiAgICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoInN0YXQiLCBwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc3RhdF9fZG9jX18sCi0ibHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKLUVxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5sc3RhdAorCisgICAgcGF0aCA6IHBhdGhfdAorCisgICAgKgorCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmc3RhdGF0JykgPSBOb25lCisKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy4KKworTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YTc0OGUzMzNmY2IzOWJkIGlucHV0PTBiNzQ3NDc2NTkyN2I5MjVdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDA7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibHN0YXQiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpsc3RhdCIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9GU1RBVEFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoImxzdGF0IiwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoImxzdGF0IiwgcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogfQogCiAKLSNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAotICAgICNkZWZpbmUgT1NfQUNDRVNTX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgotI2Vsc2UKLSAgICAjZGVmaW5lIE9TX0FDQ0VTU19ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQotI2VuZGlmCiAvKltjbGluaWMgaW5wdXRdCi1vcy5hY2Nlc3MKK29zLmFjY2VzcyAtPiBib29sCiAKICAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9VHJ1ZSkKICAgICAgICAgUGF0aCB0byBiZSB0ZXN0ZWQ7IGNhbiBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuCkBAIC0yNTc4LDcgKzI1MjUsNyBAQAogCiAgICAgKgogCi0gICAgZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZmFjY2Vzc2F0JykgPSBOb25lCiAgICAgICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0CiAgICAgICAgIGRpcmVjdG9yeS4KQEAgLTI2MDUsNzMgKzI1NTIsMTIgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIob3NfYWNjZXNzX19kb2NfXywKLSJhY2Nlc3MoJG1vZHVsZSwgLywgcGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsXG4iCi0iICAgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgotIi0tXG4iCi0iXG4iCi0iVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvIGEgcGF0aC5cbiIKLSJcbiIKLSIgIHBhdGhcbiIKLSIgICAgUGF0aCB0byBiZSB0ZXN0ZWQ7IGNhbiBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuXG4iCi0iICBtb2RlXG4iCi0iICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC4gIENhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLFxuIgotIiAgICBvciB0aGUgaW5jbHVzaXZlLU9SIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLlxuIgotIiAgZGlyX2ZkXG4iCi0iICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKLSIgICAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0XG4iCi0iICAgIGRpcmVjdG9yeS5cbiIKLSIgIGVmZmVjdGl2ZV9pZHNcbiIKLSIgICAgSWYgVHJ1ZSwgYWNjZXNzIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCBpbnN0ZWFkIG9mXG4iCi0iICAgIHRoZSByZWFsIHVpZC9naWQuXG4iCi0iICBmb2xsb3dfc3ltbGlua3NcbiIKLSIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKLSIgICAgYWNjZXNzIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgotIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCi0iXG4iCi0iZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcbiIKLSIgIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcbiIKLSIgIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCi0iXG4iCi0iTm90ZSB0aGF0IG1vc3Qgb3BlcmF0aW9ucyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzXG4iCi0iICByb3V0aW5lIGNhbiBiZSB1c2VkIGluIGEgc3VpZC9zZ2lkIGVudmlyb25tZW50IHRvIHRlc3QgaWYgdGhlIGludm9raW5nIHVzZXJcbiIKLSIgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC4iKTsKLQotI2RlZmluZSBPU19BQ0NFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19hY2Nlc3NfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3N0YXRpYyBpbnQKK29zX2FjY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgICBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYmFhNTMzNDAyMTAwODhkIGlucHV0PWI3NWE3NTY3OTdhZjQ1ZWNdKi8KIHsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKLSAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJhY2Nlc3MiLCAwLCAxKTsKLSAgICBpbnQgbW9kZTsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGVmZmVjdGl2ZV9pZHMgPSAwOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiTyZpfCRPJnBwOmFjY2VzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19hY2Nlc3NfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGZvbGxvd19zeW1saW5rcyk7Ci0KLWV4aXQ6Ci0gICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0KLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTZlZDRmMTUxYmU5ZGYwZiBpbnB1dD0yZTJlNzU5NDM3MWY1YjdlXSovCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHJldHVybl92YWx1ZTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBEV09SRCBhdHRyOwpAQCAtMjY4MSwxMSArMjU2NywxMSBAQAogCiAjaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImFjY2VzcyIsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGVmZmVjdGl2ZV9pZHMpIHsKICAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoImFjY2VzcyIsICJlZmZlY3RpdmVfaWRzIik7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICNlbmRpZgogCkBAIC0yNzA1LDExICsyNTkxLDEwIEBACiAgICAgICogICAgICogb3IgaXQncyBhIGRpcmVjdG9yeS4KICAgICAgKiAoRGlyZWN0b3JpZXMgY2Fubm90IGJlIHJlYWQtb25seSBvbiBXaW5kb3dzLikKICAgICAqLwotICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygKLSAgICAgICAgKGF0dHIgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpICYmCisgICAgcmV0dXJuX3ZhbHVlID0gKGF0dHIgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpICYmCiAgICAgICAgICAgICAoIShtb2RlICYgMikgfHwKICAgICAgICAgICAgICEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSB8fAotICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSk7CisgICAgICAgICAgICAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpOwogI2Vsc2UKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTI3MjgsMTIgKzI2MTMsOSBAQAogI2VuZGlmCiAgICAgICAgIHJlc3VsdCA9IGFjY2VzcyhwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKCFyZXN1bHQpOworICAgIHJldHVybl92YWx1ZSA9ICFyZXN1bHQ7CiAjZW5kaWYKIAotI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAotZXhpdDoKLSNlbmRpZgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKQEAgLTI3NTIsNyArMjYzNCw2IEBACiAKIAogI2lmZGVmIEhBVkVfVFRZTkFNRQotCiAvKltjbGluaWMgaW5wdXRdCiBvcy50dHluYW1lIC0+IERlY29kZUZTRGVmYXVsdAogCkBAIC0yNzY0LDQ0ICsyNjQ1LDkgQEAKIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgdGVybWluYWwgZGV2aWNlIGNvbm5lY3RlZCB0byAnZmQnLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIob3NfdHR5bmFtZV9fZG9jX18sCi0idHR5bmFtZSgkbW9kdWxlLCBmZCwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgdGVybWluYWwgZGV2aWNlIGNvbm5lY3RlZCB0byBcJ2ZkXCcuXG4iCi0iXG4iCi0iICBmZFxuIgotIiAgICBJbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBoYW5kbGUuIik7Ci0KLSNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsidHR5bmFtZSIsIChQeUNGdW5jdGlvbilvc190dHluYW1lLCBNRVRIX1ZBUkFSR1MsIG9zX3R0eW5hbWVfX2RvY19ffSwKLQotc3RhdGljIGNoYXIgKgotb3NfdHR5bmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc190dHluYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCBmZDsKLSAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJpOnR0eW5hbWUiLAotICAgICAgICAmZmQpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgX3JldHVybl92YWx1ZSA9IG9zX3R0eW5hbWVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgY2hhciAqCiBvc190dHluYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNlZTdiYzRjZmZlYzAxYTIgaW5wdXQ9NWY3MmNhODNlNzZiM2I0NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzYWQzZDVjY2FlZjc1YzMgaW5wdXQ9NWY3MmNhODNlNzZiM2I0NV0qLwogewogICAgIGNoYXIgKnJldDsKIApAQCAtMjgxMCwxNyArMjY1NiwxOCBAQAogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiByZXQ7CiB9Ci0jZWxzZQotI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0NURVJNSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9jdGVybWlkX19kb2NfXywKLSJjdGVybWlkKCkgLT4gc3RyaW5nXG5cblwKLVJldHVybiB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgZm9yIHRoaXMgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmN0ZXJtaWQKKworUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBmb3IgdGhpcyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY3Rlcm1pZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2N0ZXJtaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiNzM3ODgyMDFlMGFlYmQgaW5wdXQ9M2I4N2ZkZDUyNTU2MzgyZF0qLwogewogICAgIGNoYXIgKnJldDsKICAgICBjaGFyIGJ1ZmZlcltMX2N0ZXJtaWRdOwpAQCAtMjgzNCwxMDYgKzI2ODEsMTEyIEBACiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGJ1ZmZlcik7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0NURVJNSUQgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NoZGlyX19kb2NfXywKLSJjaGRpcihwYXRoKVxuXG5cCi1DaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLlxuXAotXG5cCi1wYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNoZGlyCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GQ0hESVInKQorCitDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLgorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzU4ZTNhMjBmYjVhYTkzIGlucHV0PTFhNGExNWI0ZDEyY2IxNWRdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImNoZGlyIjsKLSNpZmRlZiBIQVZFX0ZDSERJUgotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hkaXIiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC53aWRlKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgtPndpZGUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfY2hkaXIocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLT5uYXJyb3cpOwogICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KICNlbHNlCiAjaWZkZWYgSEFWRV9GQ0hESVIKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGguZmQpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGgtPmZkKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gY2hkaXIocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLT5uYXJyb3cpOwogI2VuZGlmCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisKICNpZmRlZiBIQVZFX0ZDSERJUgotUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaGRpcl9fZG9jX18sCi0iZmNoZGlyKGZkKVxuXG5cCi1DaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmQgbXVzdCBiZVxuXAotb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLiAgRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mY2hkaXIKKworICAgIGZkOiBmaWxkZXMKKworQ2hhbmdlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci4KKworZmQgbXVzdCBiZSBvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuCitFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZmNoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmRvYmopCitvc19mY2hkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzYxZDMwZGY2YjJkMzQxOCBpbnB1dD0xOGU4MTY0NzlhMmZhOTg1XSovCiB7Ci0gICAgcmV0dXJuIHBvc2l4X2ZpbGRlcyhmZG9iaiwgZmNoZGlyKTsKKyAgICByZXR1cm4gcG9zaXhfZmlsZGVzX2ZkKGZkLCBmY2hkaXIpOwogfQogI2VuZGlmIC8qIEhBVkVfRkNIRElSICovCiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NobW9kX19kb2NfXywKLSJjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKLSAgbGluayBwb2ludHMgdG8uXG5cCi1JdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAotICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jaG1vZAorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRkNITU9EJykKKyAgICAgICAgUGF0aCB0byBiZSBtb2RpZmllZC4gIE1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyIG9yIGJ5dGVzLgorICAgICAgICBPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAgICAgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgIG1vZGU6IGludAorICAgICAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuCisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZjaG1vZGF0JykgPSBOb25lCisgICAgICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0CisgICAgICAgIGRpcmVjdG9yeS4KKworICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKyAgICAgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluaywKKyAgICAgICAgY2htb2Qgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgICAgICAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuCisKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA1ZTdmNzNiMWE4NDNiYTIgaW5wdXQ9N2YxNjE4ZTVlMTVjYzE5Nl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBtb2RlOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKQEAgLTI5NDMsMzMgKzI3OTYsMTcgQEAKICAgICBpbnQgZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQgPSAwOwogI2VuZGlmCiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImNobW9kIjsKLSNpZmRlZiBIQVZFX0ZDSE1PRAotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmbW9kZSwKLSNpZmRlZiBIQVZFX0ZDSE1PREFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCi0jZW5kaWYKLSAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWYgIShkZWZpbmVkKEhBVkVfRkNITU9EQVQpIHx8IGRlZmluZWQoSEFWRV9MQ0hNT0QpKQogICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG1vZCIsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIGVsc2UKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdyk7CisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKICAgICBpZiAoYXR0ciA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICBlbHNlIHsKQEAgLTI5NzcsMjcgKzI4MTQsMjYgQEAKICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhdHRyIHw9IEZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICBpZiAocGF0aC53aWRlKQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgud2lkZSwgYXR0cik7CisgICAgICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3csIGF0dHIpOworICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdywgYXR0cik7CiAgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfRkNITU9ECi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZjaG1vZChwYXRoLmZkLCBtb2RlKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZChwYXRoLT5mZCwgbW9kZSk7CiAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9MQ0hNT0QKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQotICAgICAgICByZXN1bHQgPSBsY2htb2QocGF0aC5uYXJyb3csIG1vZGUpOworICAgICAgICByZXN1bHQgPSBsY2htb2QocGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0ZDSE1PREFUCkBAIC0zMDEyLDcgKzI4NDgsNyBAQAogICAgICAgICAgKiBzdXBwb3J0IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzPUZhbHNlLiAgKEhvcGVmdWxseS4pCiAgICAgICAgICAqIFVudGlsIHRoZW4sIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGF0IGV4Y2VwdGlvbiB3ZSByYWlzZS4KICAgICAgICAgICovCi0gICAgICAgIHJlc3VsdCA9IGZjaG1vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZGF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEJ1dCB3YWl0ISAgV2UgY2FuJ3QgdGhyb3cgdGhlIGV4Y2VwdGlvbiB3aXRob3V0IGFsbG93aW5nIHRocmVhZHMsCkBAIC0zMDI1LDcgKzI4NjEsNyBAQAogICAgIH0KICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gY2htb2QocGF0aC5uYXJyb3csIG1vZGUpOworICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KSB7CkBAIC0zMDM5LDI3MiArMjg3NSwyODkgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KICNlbmRpZgogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCiAjaWZkZWYgSEFWRV9GQ0hNT0QKLVB5RG9jX1NUUlZBUihwb3NpeF9mY2htb2RfX2RvY19fLAotImZjaG1vZChmZCwgbW9kZSlcblxuXAotQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZVxuXAotZGVzY3JpcHRvciBmZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmNobW9kCisKKyAgICBmZDogaW50CisgICAgbW9kZTogaW50CisKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvciBmZC4KKworRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZmNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZWUzMWNhMjI2ZDFlZDMzIGlucHV0PThhYjExOTc1Y2EwMWVlNWJdKi8KIHsKLSAgICBpbnQgZmQsIG1vZGUsIHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmZjaG1vZCIsICZmZCwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZmNobW9kKGZkLCBtb2RlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpbnQgcmVzOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IGZjaG1vZChmZCwgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9GQ0hNT0QgKi8KIAorCiAjaWZkZWYgSEFWRV9MQ0hNT0QKLVB5RG9jX1NUUlZBUihwb3NpeF9sY2htb2RfX2RvY19fLAotImxjaG1vZChwYXRoLCBtb2RlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzXG5cCi1hZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LlxuXAotRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MubGNobW9kCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICBtb2RlOiBpbnQKKworQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy4KKworSWYgcGF0aCBpcyBhIHN5bWxpbmssIHRoaXMgYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4KK0VxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfbGNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YzBjYzQ2NTg4ZDg5ZTQ2IGlucHV0PTkwYzU2NjNjNzQ2NWQyNGZdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgaTsKICAgICBpbnQgcmVzOwotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGNobW9kIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpsY2htb2QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxjaG1vZChwYXRoLm5hcnJvdywgaSk7CisgICAgcmVzID0gbGNobW9kKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9MQ0hNT0QgKi8KIAogCiAjaWZkZWYgSEFWRV9DSEZMQUdTCi1QeURvY19TVFJWQVIocG9zaXhfY2hmbGFnc19fZG9jX18sCi0iY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLVNldCBmaWxlIGZsYWdzLlxuXAotXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKLSAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCi1mb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgaXQgaXNcblwKLXVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNoZmxhZ3MKKworICAgIHBhdGg6IHBhdGhfdAorICAgIGZsYWdzOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2w9VHJ1ZQorCitTZXQgZmlsZSBmbGFncy4KKworSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIGNoZmxhZ3Mgd2lsbCBjaGFuZ2UgZmxhZ3Mgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlCisgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLgorZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4gIElmIGl0IGlzCit1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hmbGFnc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncywKKyAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmMmQ2ZTczNTM0YTk1YjkgaW5wdXQ9MDMyN2UyOWZlYjg3NjIzNl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hmbGFncyI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfCRpOmNoZmxhZ3MiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogI2lmbmRlZiBIQVZFX0xDSEZMQUdTCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNoZmxhZ3MiLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogI2VuZGlmCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9MQ0hGTEFHUwogICAgIGlmICghZm9sbG93X3N5bWxpbmtzKQotICAgICAgICByZXN1bHQgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgICAgICByZXN1bHQgPSBsY2hmbGFncyhwYXRoLT5uYXJyb3csIGZsYWdzKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgICAgICByZXN1bHQgPSBjaGZsYWdzKHBhdGgtPm5hcnJvdywgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwogCisKICNpZmRlZiBIQVZFX0xDSEZMQUdTCi1QeURvY19TVFJWQVIocG9zaXhfbGNoZmxhZ3NfX2RvY19fLAotImxjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCi1TZXQgZmlsZSBmbGFncy5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAotRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MubGNoZmxhZ3MKKworICAgIHBhdGg6IHBhdGhfdAorICAgIGZsYWdzOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKworU2V0IGZpbGUgZmxhZ3MuCisKK1RoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGNoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfbGNoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Njc0MTMyMmZiOTQ5NjYxYiBpbnB1dD1mOWY4MmVhOGI1ODVjYTlkXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBpbnQgcmVzOwotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGNoZmxhZ3MiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZrOmxjaGZsYWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKKyAgICByZXMgPSBsY2hmbGFncyhwYXRoLT5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9MQ0hGTEFHUyAqLwogCisKICNpZmRlZiBIQVZFX0NIUk9PVAotUHlEb2NfU1RSVkFSKHBvc2l4X2Nocm9vdF9fZG9jX18sCi0iY2hyb290KHBhdGgpXG5cblwKLUNoYW5nZSByb290IGRpcmVjdG9yeSB0byBwYXRoLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2hyb290CisgICAgcGF0aDogcGF0aF90CisKK0NoYW5nZSByb290IGRpcmVjdG9yeSB0byBwYXRoLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaHJvb3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfY2hyb290X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2ZGJmYWJlNzRlY2FhOWQgaW5wdXQ9MTQ4MjI5NjU2NTJjM2RjM10qLwogewotICAgIHJldHVybiBwb3NpeF8xc3RyKCJjaHJvb3QiLCBhcmdzLCAiTyY6Y2hyb290IiwgY2hyb290KTsKKyAgICBpbnQgcmVzOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBjaHJvb3QocGF0aC0+bmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ0hST09UICovCisKIAogI2lmZGVmIEhBVkVfRlNZTkMKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3luY19fZG9jX18sCi0iZnN5bmMoZmlsZGVzKVxuXG5cCi1mb3JjZSB3cml0ZSBvZiBmaWxlIHdpdGggZmlsZWRlc2NyaXB0b3IgdG8gZGlzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzeW5jCisKKyAgICBmZDogZmlsZGVzCisKK0ZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQorb3NfZnN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODNhMzUwODUxMDY0YWVhNyBpbnB1dD0yMWMzNjQ1YzA1Njk2N2YyXSovCiB7Ci0gICAgcmV0dXJuIHBvc2l4X2ZpbGRlcyhmZG9iaiwgZnN5bmMpOworICAgIHJldHVybiBwb3NpeF9maWxkZXNfZmQoZmQsIGZzeW5jKTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZTWU5DICovCiAKKwogI2lmZGVmIEhBVkVfU1lOQwotUHlEb2NfU1RSVkFSKHBvc2l4X3N5bmNfX2RvY19fLAotInN5bmMoKVxuXG5cCi1Gb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zeW5jCisKK0ZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N5bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19zeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTUyNGY2NTZjMjAxYzQwIGlucHV0PTg0NzQ5ZmU1ZTliNDA0ZmZdKi8KIHsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgc3luYygpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZTkMgKi8KKwogCiAjaWZkZWYgSEFWRV9GREFUQVNZTkMKLQogI2lmZGVmIF9faHB1eAogZXh0ZXJuIGludCBmZGF0YXN5bmMoaW50KTsgLyogT24gSFAtVVgsIGluIGxpYmMgYnV0IG5vdCBpbiB1bmlzdGQuaCAqLwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mZGF0YXN5bmNfX2RvY19fLAotImZkYXRhc3luYyhmaWxkZXMpXG5cblwKLWZvcmNlIHdyaXRlIG9mIGZpbGUgd2l0aCBmaWxlZGVzY3JpcHRvciB0byBkaXNrLlxuXAotIGRvZXMgbm90IGZvcmNlIHVwZGF0ZSBvZiBtZXRhZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZkYXRhc3luYworCisgICAgZmQ6IGZpbGRlcworCitGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrIHdpdGhvdXQgZm9yY2luZyB1cGRhdGUgb2YgbWV0YWRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mZGF0YXN5bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKK29zX2ZkYXRhc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGYwNGEzYWZmNTE1Yjc1IGlucHV0PWJjNzQ3OTFlZTU0ZGQyOTFdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfZmlsZGVzKGZkb2JqLCBmZGF0YXN5bmMpOworICAgIHJldHVybiBwb3NpeF9maWxkZXNfZmQoZmQsIGZkYXRhc3luYyk7CiB9CiAjZW5kaWYgLyogSEFWRV9GREFUQVNZTkMgKi8KIAogCiAjaWZkZWYgSEFWRV9DSE9XTgotUHlEb2NfU1RSVkFSKHBvc2l4X2Nob3duX19kb2NfXywKLSJjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAotXG5cCi1wYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGNob3duIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCi0gIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNob3duCisKKyAgICBwYXRoIDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRkNIT1dOJykKKyAgICAgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC4KKworICAgIHVpZDogdWlkX3QKKworICAgIGdpZDogZ2lkX3QKKworICAgICoKKworICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZmNob3duYXQnKSA9IE5vbmUKKyAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKKyAgICAgICAgZGlyZWN0b3J5LgorCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorICAgICAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgICAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICAgICAgICB0aGUgbGluayBwb2ludHMgdG8uCisKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXAorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIGNob3duIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZQorICBsaW5rIHBvaW50cyB0by4KK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAorICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYTQ1NTlmMzk0ZGJkOTEgaW5wdXQ9YTYxY2MzNTU3NDgxNGQ1ZF0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHVpZF90IHVpZDsKLSAgICBnaWRfdCBnaWQ7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hvd24iOwotI2lmZGVmIEhBVkVfRkNIT1dOCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyZ8JE8mcDpjaG93biIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCwKLSNpZmRlZiBIQVZFX0ZDSE9XTkFUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAjaWYgIShkZWZpbmVkKEhBVkVfTENIT1dOKSB8fCBkZWZpbmVkKEhBVkVfRkNIT1dOQVQpKQogICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKLSAgICBpZiAoZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJjaG93biIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKLSAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG93biIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJjaG93biIsIGRpcl9mZCwgcGF0aC0+ZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2hvd24iLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZmRlZiBfX0FQUExFX18KICAgICAvKgpAQCAtMzMxNSwxMDIgKzMxNjgsOTggQEAKICAgICAgKi8KICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChsY2hvd24gPT0gTlVMTCkpIHsKICAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hvd24iLCBmb2xsb3dfc3ltbGlua3MpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNlbmRpZgogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfRkNIT1dOCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLmZkLCB1aWQsIGdpZCk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hvd24ocGF0aC0+ZmQsIHVpZCwgZ2lkKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0xDSE9XTgogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCi0gICAgICAgIHJlc3VsdCA9IGxjaG93bihwYXRoLm5hcnJvdywgdWlkLCBnaWQpOworICAgICAgICByZXN1bHQgPSBsY2hvd24ocGF0aC0+bmFycm93LCB1aWQsIGdpZCk7CiAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9GQ0hPV05BVAogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIHVpZCwgZ2lkLAorICAgICAgICByZXN1bHQgPSBmY2hvd25hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgdWlkLCBnaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvd24ocGF0aC0+bmFycm93LCB1aWQsIGdpZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSE9XTiAqLwogCisKICNpZmRlZiBIQVZFX0ZDSE9XTgotUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaG93bl9fZG9jX18sCi0iZmNob3duKGZkLCB1aWQsIGdpZClcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZSBkZXNjcmlwdG9yXG5cCi1mZCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZjaG93bgorCisgICAgZmQ6IGludAorICAgIHVpZDogdWlkX3QKKyAgICBnaWQ6IGdpZF90CisKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmaWxlIGRlc2NyaXB0b3IuCisKK0VxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZmNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZjaG93bl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU0NWFiZjhmNjA4NmQ3NiBpbnB1dD0zYWY1NDRiYTFiMTNhMGQ3XSovCiB7Ci0gICAgaW50IGZkOwotICAgIHVpZF90IHVpZDsKLSAgICBnaWRfdCBnaWQ7CiAgICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8mOmZjaG93biIsICZmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZjaG93bihmZCwgdWlkLCBnaWQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IGZjaG93bihmZCwgdWlkLCBnaWQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfRkNIT1dOICovCiAKKwogI2lmZGVmIEhBVkVfTENIT1dOCi1QeURvY19TVFJWQVIocG9zaXhfbGNob3duX19kb2NfXywKLSJsY2hvd24ocGF0aCwgdWlkLCBnaWQpXG5cblwKLUNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCi1UaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKLUVxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sY2hvd24KKworICAgIHBhdGggOiBwYXRoX3QKKyAgICB1aWQ6IHVpZF90CisgICAgZ2lkOiBnaWRfdAorCitDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLgorCitUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KK0VxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfbGNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjBkMmRhMTU3OWFjMjc1IGlucHV0PWIxYzYwMTRkNTYzYTcxNjFdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICB1aWRfdCB1aWQ7Ci0gICAgZ2lkX3QgZ2lkOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2hvd24iOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOmxjaG93biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxjaG93bihwYXRoLm5hcnJvdywgdWlkLCBnaWQpOworICAgIHJlcyA9IGxjaG93bihwYXRoLT5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfTENIT1dOICovCiAKQEAgLTM0ODcsMTQ4ICszMzM2LDEyNSBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRjd2RfX2RvY19fLAotImdldGN3ZCgpIC0+IHBhdGhcblxuXAotUmV0dXJuIGEgdW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRjd2QKKworUmV0dXJuIGEgdW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0Y3dkX3VuaWNvZGUoUHlPYmplY3QgKnNlbGYpCitvc19nZXRjd2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmZTNhOGMwMTIxNTI1ZWEgaW5wdXQ9ZjA2OTIxMWJiNzBlM2QzOV0qLwogewogICAgIHJldHVybiBwb3NpeF9nZXRjd2QoMCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRjd2RiX19kb2NfXywKLSJnZXRjd2RiKCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBieXRlcyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRjd2RiCisKK1JldHVybiBhIGJ5dGVzIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRjd2RfYnl0ZXMoUHlPYmplY3QgKnNlbGYpCitvc19nZXRjd2RiX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZmNlNDJlZTRiMmEyOTZhIGlucHV0PWY2ZjZhMzc4ZGFkM2Q5Y2JdKi8KIHsKICAgICByZXR1cm4gcG9zaXhfZ2V0Y3dkKDEpOwogfQogCisKICNpZiAoKCFkZWZpbmVkKEhBVkVfTElOSykpICYmIGRlZmluZWQoTVNfV0lORE9XUykpCiAjZGVmaW5lIEhBVkVfTElOSyAxCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTElOSwotUHlEb2NfU1RSVkFSKHBvc2l4X2xpbmtfX2RvY19fLAotImxpbmsoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS5cblwKLVxuXAotSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAotICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKLSAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHNyYyBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGxpbmsgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAotICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKLXNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyXG5cCi0gIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG5cCi0gIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCisKK29zLmxpbmsKKworICAgIHNyYyA6IHBhdGhfdAorICAgIGRzdCA6IHBhdGhfdAorICAgICoKKyAgICBzcmNfZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorICAgIGRzdF9kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitDcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLgorCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KQorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWMKKyAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlCisgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLgorc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIKKyAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEKKyAgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCisgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQ3YTdlODhmN2IzOTFiNiBpbnB1dD1iMDA5NWViYmNiYWE3ZTA0XSovCiB7Ci0gICAgcGF0aF90IHNyYywgZHN0OwotICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgQk9PTCByZXN1bHQ7CiAjZWxzZQogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKIAotICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7Ci0gICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9ICJsaW5rIjsKLSAgICBkc3QuZnVuY3Rpb25fbmFtZSA9ICJsaW5rIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfE8mTyZwOmxpbmsiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLAotICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZuZGVmIEhBVkVfTElOS0FUCiAgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKICAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoImxpbmsiLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc3JjLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3Qud2lkZSwgc3JjLndpZGUsIE5VTEwpOworICAgIGlmIChzcmMtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0Lm5hcnJvdywgc3JjLm5hcnJvdywgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yMigmc3JjLCAmZHN0KTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKICNlbHNlCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfTElOS0FUCiAgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAogICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKICAgICAgICAgKCFmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICByZXN1bHQgPSBsaW5rYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywKLSAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3csCisgICAgICAgIHJlc3VsdCA9IGxpbmthdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywKKyAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC0+bmFycm93LAogICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gQVRfU1lNTElOS19GT0xMT1cgOiAwKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKLSAgICBwYXRoX2NsZWFudXAoJmRzdCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZgogCiAKLQotUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3RkaXJfX2RvY19fLAotImxpc3RkaXIocGF0aD0nLicpIC0+IGxpc3Rfb2ZfZmlsZW5hbWVzXG5cblwKLVJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuXG5cCi1UaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG5cCi1lbnRyaWVzICcuJyBhbmQgJy4uJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVxuXAotcGF0aCBjYW4gYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBzdHIgb3IgYnl0ZXMuICBJZiBwYXRoIGlzIGJ5dGVzLFxuXAotICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBieXRlczsgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXNcblwKLSAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGJlIHN0ci5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcblwKLSAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwotCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCiBzdGF0aWMgUHlPYmplY3QgKgogX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmxpc3QpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqdjsKICAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAgICAgQk9PTCByZXN1bHQ7CkBAIC0zODg3LDEyMyArMzcxMywxMTcgQEAKIH0gIC8qIGVuZCBvZiBfcG9zaXhfbGlzdGRpciAqLwogI2VuZGlmICAvKiB3aGljaCBPUyAqLwogCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxpc3RkaXIKKworICAgIHBhdGggOiBwYXRoX3QobnVsbGFibGU9VHJ1ZSwgYWxsb3dfZmQ9J1BBVEhfSEFWRV9GRE9QRU5ESVInKSA9IE5vbmUKKworUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4KKworcGF0aCBjYW4gYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBzdHIgb3IgYnl0ZXMuICBJZiBwYXRoIGlzIGJ5dGVzLAorICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBieXRlczsgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXMKKyAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGJlIHN0ci4KK0lmIHBhdGggaXMgTm9uZSwgdXNlcyB0aGUgcGF0aD0nLicuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3I7XAorICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuCisKK1RoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKK2VudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LgorCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdGRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZmJlNjdjMWY3ODBjOGI3IGlucHV0PTA5ZTMwMDQxNmUzY2Q3MjldKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBQeU9iamVjdCAqbGlzdCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsaXN0ZGlyIjsKLSAgICBwYXRoLm51bGxhYmxlID0gMTsKLSNpZmRlZiBIQVZFX0ZET1BFTkRJUgotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotICAgIHBhdGguZmQgPSAtMTsKLSNlbmRpZgotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQotICAgIHJldHVybl92YWx1ZSA9IF9saXN0ZGlyX3dpbmRvd3Nfbm9fb3BlbmRpcigmcGF0aCwgbGlzdCk7CisgICAgcmV0dXJuIF9saXN0ZGlyX3dpbmRvd3Nfbm9fb3BlbmRpcihwYXRoLCBOVUxMKTsKICNlbHNlCi0gICAgcmV0dXJuX3ZhbHVlID0gX3Bvc2l4X2xpc3RkaXIoJnBhdGgsIGxpc3QpOworICAgIHJldHVybiBfcG9zaXhfbGlzdGRpcihwYXRoLCBOVUxMKTsKICNlbmRpZgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKIC8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBhYnNwYXRoIG9uIHdpbjMyICovCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2dldGZ1bGxwYXRobmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY29uc3QgY2hhciAqcGF0aDsKLSAgICBjaGFyIG91dGJ1ZltNQVhfUEFUSF07Ci0gICAgY2hhciAqdGVtcDsKLSAgICBQeU9iamVjdCAqcG87CisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0ZnVsbHBhdGhuYW1lCiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZ1bGxwYXRobmFtZSIsICZwbykpCisgICAgcGF0aDogcGF0aF90CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI5MGIxZjEwM2IwODc3M2YgaW5wdXQ9MzMyZWQ1MzdjMjlkMGEzZV0qLworeworICAgIGlmICghcGF0aC0+bmFycm93KQogICAgIHsKLSAgICAgICAgd2NoYXJfdCAqd3BhdGg7CiAgICAgICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSF0sICp3b3V0YnVmcCA9IHdvdXRidWY7CiAgICAgICAgIHdjaGFyX3QgKnd0ZW1wOwogICAgICAgICBEV09SRCByZXN1bHQ7CiAgICAgICAgIFB5T2JqZWN0ICp2OwogCi0gICAgICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7Ci0gICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsCisgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKICAgICAgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgewogICAgICAgICAgICAgd291dGJ1ZnAgPSBQeU1lbV9OZXcod2NoYXJfdCwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghd291dGJ1ZnApCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHdwYXRoLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOworICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZVciLCBwbyk7CisgICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKICAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCiAgICAgICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgeworICAgICAgICBjaGFyIG91dGJ1ZltNQVhfUEFUSF07CisgICAgICAgIGNoYXIgKnRlbXA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ5Ol9nZXRmdWxscGF0aG5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aCwgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3V0YnVmLCAmdGVtcCkpIHsKLSAgICAgICAgd2luMzJfZXJyb3IoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aC0+bmFycm93LCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0YnVmLCAmdGVtcCkpIHsKKyAgICAgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aC0+b2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcob3V0YnVmKTsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhQeVR1cGxlX0dldEl0ZW0oYXJncywgMCkpKSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKG91dGJ1Ziwgc3RybGVuKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsIE5VTEwpOwotICAgIH0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7Ci19IC8qIGVuZCBvZiBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lICovCit9CiAKIAorLypbY2xpbmljIGlucHV0XQorb3MuX2dldGZpbmFscGF0aG5hbWUKIAotLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHNhbWVwYXRoIG9uIHdpbmRvd3MgKi8KKyAgICBwYXRoOiB1bmljb2RlCisgICAgLworCitBIGhlbHBlciBmdW5jdGlvbiBmb3Igc2FtZXBhdGggb24gd2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19nZXRmaW5hbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19nZXRmaW5hbHBhdGhuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJlODFhNWY1MWEzNGJjZiBpbnB1dD03MWQ1ZTg5MzM0ODkxYmY0XSovCiB7CiAgICAgSEFORExFIGhGaWxlOwogICAgIGludCBidWZfc2l6ZTsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKLSAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7Ci0gICAgd2NoYXJfdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmaW5hbHBhdGhuYW1lIiwgJnBvKSkKKyAgICBwYXRoX3djaGFyID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKKyAgICBpZiAocGF0aF93Y2hhciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZighY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKCkpIHsKLSAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUsIHJldHVybiBhCi0gICAgICAgICAgIE5vdEltcGxlbWVudGVkRXJyb3IuICovCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7Ci0gICAgfQogCiAgICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKLSAgICAgICAgcGF0aCwKKyAgICAgICAgcGF0aF93Y2hhciwKICAgICAgICAgMCwgLyogZGVzaXJlZCBhY2Nlc3MgKi8KICAgICAgICAgMCwgLyogc2hhcmUgbW9kZSAqLwogICAgICAgICBOVUxMLCAvKiBzZWN1cml0eSBhdHRyaWJ1dGVzICovCkBAIC00MDEzLDg5ICszODMzLDg0IEBACiAgICAgICAgIE5VTEwpOwogCiAgICAgaWYoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNyZWF0ZUZpbGVXIiwgcG8pOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDcmVhdGVGaWxlVyIsIHBhdGgpOwogCiAgICAgLyogV2UgaGF2ZSBhIGdvb2QgaGFuZGxlIHRvIHRoZSB0YXJnZXQsIHVzZSBpdCB0byBkZXRlcm1pbmUgdGhlCiAgICAgICAgdGFyZ2V0IHBhdGggbmFtZS4gKi8KLSAgICBidWZfc2l6ZSA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIDAsIDAsIFZPTFVNRV9OQU1FX05UKTsKKyAgICBidWZfc2l6ZSA9IEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIDAsIDAsIFZPTFVNRV9OQU1FX05UKTsKIAogICAgIGlmKCFidWZfc2l6ZSkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcG8pOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKIAogICAgIHRhcmdldF9wYXRoID0gUHlNZW1fTmV3KHdjaGFyX3QsIGJ1Zl9zaXplKzEpOwogICAgIGlmKCF0YXJnZXRfcGF0aCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKLSAgICByZXN1bHRfbGVuZ3RoID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgdGFyZ2V0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CisgICAgcmVzdWx0X2xlbmd0aCA9IEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIHRhcmdldF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW15QnlIYW5kbGUiLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOwogCiAgICAgaWYoIUNsb3NlSGFuZGxlKGhGaWxlKSkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNsb3NlSGFuZGxlIiwgcGF0aCk7CiAKICAgICB0YXJnZXRfcGF0aFtyZXN1bHRfbGVuZ3RoXSA9IDA7CiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CiAgICAgUHlNZW1fRnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKLQotfSAvKiBlbmQgb2YgcG9zaXhfX2dldGZpbmFscGF0aG5hbWUgKi8KK30KIAogUHlEb2NfU1RSVkFSKHBvc2l4X19pc2Rpcl9fZG9jX18sCiAiUmV0dXJuIHRydWUgaWYgdGhlIHBhdGhuYW1lIHJlZmVycyB0byBhbiBleGlzdGluZyBkaXJlY3RvcnkuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9pc2RpcgorCisgICAgcGF0aDogcGF0aF90CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9faXNkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2lzZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxN2IyZDRlMTk5NGIwZmYgaW5wdXQ9ZTc5NGYxMmZhYWI2MmEyYV0qLwogewotICAgIGNvbnN0IGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKnBvOwogICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2lzZGlyIiwgJnBvKSkgewotICAgICAgICB3Y2hhcl90ICp3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgICAgICBpZiAod3BhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghcGF0aC0+bmFycm93KQorICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOworICAgIGVsc2UKKyAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOwogCi0gICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cod3BhdGgpOwotICAgICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKLSAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICAgICAgZ290byBjaGVjazsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInk6X2lzZGlyIiwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogCi1jaGVjazoKICAgICBpZiAoYXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19fLAotIlJldHVybiB2b2x1bWUgbW91bnQgcG9pbnQgb2YgdGhlIHNwZWNpZmllZCBwYXRoLiIpOwogCi0vKiBBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiB3aW5kb3dzICovCisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0dm9sdW1lcGF0aG5hbWUKKworICAgIHBhdGg6IHVuaWNvZGUKKworQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlzbW91bnQgb24gV2luMzIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzlhMGJhNzI5Zjk1NmRiZSBpbnB1dD03ZWFjYWRjNDBhY2JkYTZiXSovCiB7Ci0gICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGgsICptb3VudHBhdGg9TlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKICAgICBzaXplX3QgYnVmbGVuOwogICAgIEJPT0wgcmV0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0dm9sdW1lcGF0aG5hbWUiLCAmcG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUocG8sICZidWZsZW4pOwotICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgcGF0aF93Y2hhciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHBhdGgsICZidWZsZW4pOworICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGJ1ZmxlbiArPSAxOwogCkBAIC00MTEyLDEyICszOTI3LDEyIEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IEdldFZvbHVtZVBhdGhOYW1lVyhwYXRoLCBtb3VudHBhdGgsCisgICAgcmV0ID0gR2V0Vm9sdW1lUGF0aE5hbWVXKHBhdGhfd2NoYXIsIG1vdW50cGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChidWZsZW4sIHNpemVfdCwgRFdPUkQpKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXQpIHsKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJfZ2V0dm9sdW1lcGF0aG5hbWUiLCBwbyk7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiX2dldHZvbHVtZXBhdGhuYW1lIiwgcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihtb3VudHBhdGgsIHdjc2xlbihtb3VudHBhdGgpKTsKQEAgLTQxMjYsNzggKzM5NDEsNjYgQEAKICAgICBQeU1lbV9GcmVlKG1vdW50cGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLS8qIGVuZCBvZiBwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUgKi8KIAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X21rZGlyX19kb2NfXywKLSJta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotQ3JlYXRlIGEgZGlyZWN0b3J5LlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAotXG5cCi1UaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm1rZGlyCisKKyAgICBwYXRoIDogcGF0aF90CisKKyAgICBtb2RlOiBpbnQgPSAwbzc3NworCisgICAgKgorCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdta2RpcmF0JykgPSBOb25lCisKKyMgIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK0NyZWF0ZSBhIGRpcmVjdG9yeS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbWtkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbWtkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiZjFmNzM4ODczZWYyYzUgaW5wdXQ9ZTk2NWY2ODM3N2U5YjFjZV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBtb2RlID0gMDc3NzsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgcmVzdWx0OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJta2RpciI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2RpciIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLAotI2lmZGVmIEhBVkVfTUtESVJBVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLndpZGUsIE5VTEwpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLm5hcnJvdywgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWYgSEFWRV9NS0RJUkFUCiAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gbWtkaXJhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gbWtkaXJhdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgZWxzZQogI2VuZGlmCiAjaWYgKCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKFBZQ0NfVkFDUFApICkgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICAgICAgcmVzdWx0ID0gbWtkaXIocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLT5uYXJyb3cpOwogI2Vsc2UKLSAgICAgICAgcmVzdWx0ID0gbWtkaXIocGF0aC5uYXJyb3csIG1vZGUpOworICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLT5uYXJyb3csIG1vZGUpOwogI2VuZGlmCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAjZW5kaWYKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKQEAgLTQyMDgsMTcgKzQwMTEsMjAgQEAKIAogCiAjaWZkZWYgSEFWRV9OSUNFCi1QeURvY19TVFJWQVIocG9zaXhfbmljZV9fZG9jX18sCi0ibmljZShpbmMpIC0+IG5ld19wcmlvcml0eVxuXG5cCi1EZWNyZWFzZSB0aGUgcHJpb3JpdHkgb2YgcHJvY2VzcyBieSBpbmMgYW5kIHJldHVybiB0aGUgbmV3IHByaW9yaXR5LiIpOworLypbY2xpbmljIGlucHV0XQorb3MubmljZQorCisgICAgaW5jcmVtZW50OiBpbnQKKyAgICAvCisKK0FkZCBpbmNyZW1lbnQgdG8gdGhlIHByaW9yaXR5IG9mIHByb2Nlc3MgYW5kIHJldHVybiB0aGUgbmV3IHByaW9yaXR5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbmljZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19uaWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGluY3JlbWVudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ODcwNDE4YTNmYzA3YjUxIGlucHV0PTg2NGJlMmQ0MDJhMjFkYTJdKi8KIHsKLSAgICBpbnQgaW5jcmVtZW50LCB2YWx1ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCB2YWx1ZTsKIAogICAgIC8qIFRoZXJlIGFyZSB0d28gZmxhdm91cnMgb2YgJ25pY2UnOiBvbmUgdGhhdCByZXR1cm5zIHRoZSBuZXcKICAgICAgICBwcmlvcml0eSAoYXMgcmVxdWlyZWQgYnkgYWxtb3N0IGFsbCBzdGFuZGFyZHMgb3V0IHRoZXJlKSBhbmQgdGhlCkBAIC00MjQ1LDE3ICs0MDUxLDIxIEBACiAKIAogI2lmZGVmIEhBVkVfR0VUUFJJT1JJVFkKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwcmlvcml0eV9fZG9jX18sCi0iZ2V0cHJpb3JpdHkod2hpY2gsIHdobykgLT4gY3VycmVudF9wcmlvcml0eVxuXG5cCi1HZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cHJpb3JpdHkKKworICAgIHdoaWNoOiBpbnQKKyAgICB3aG86IGludAorCitSZXR1cm4gcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZ2V0cHJpb3JpdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDc1OTkzN2FhNWI2N2VkNiBpbnB1dD05YmU2MTVkNDBlMjU0NGVmXSovCiB7Ci0gICAgaW50IHdoaWNoLCB3aG8sIHJldHZhbDsKKyAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ3aGljaCwgJndobykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGVycm5vID0gMDsKICAgICByZXR2YWwgPSBnZXRwcmlvcml0eSh3aGljaCwgd2hvKTsKICAgICBpZiAoZXJybm8gIT0gMCkKQEAgLTQyNjYsMTggKzQwNzYsMjMgQEAKIAogCiAjaWZkZWYgSEFWRV9TRVRQUklPUklUWQotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHByaW9yaXR5X19kb2NfXywKLSJzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKSAtPiBOb25lXG5cblwKLVNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRwcmlvcml0eQorCisgICAgd2hpY2g6IGludAorICAgIHdobzogaW50CisgICAgcHJpb3JpdHk6IGludAorCitTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0cHJpb3JpdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8sIGludCBwcmlvcml0eSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NDk3ZDMzMDE1NDdlN2Q1IGlucHV0PTcxMGNjYmY2NWI5ZGM1MTNdKi8KIHsKLSAgICBpbnQgd2hpY2gsIHdobywgcHJpbywgcmV0dmFsOworICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaSIsICZ3aGljaCwgJndobywgJnByaW8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR2YWwgPSBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKTsKKyAgICByZXR2YWwgPSBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvcml0eSk7CiAgICAgaWYgKHJldHZhbCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC00Mjg2LDE3ICs0MTAxLDEwIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLWludGVybmFsX3JlbmFtZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywgaW50IGlzX3JlcGxhY2UpCitpbnRlcm5hbF9yZW5hbWUocGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwgaW50IGRzdF9kaXJfZmQsIGludCBpc19yZXBsYWNlKQogewogICAgIGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7Ci0gICAgcGF0aF90IHNyYzsKLSAgICBwYXRoX3QgZHN0OwotICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZGlyX2ZkX3NwZWNpZmllZDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBjaGFyIGZvcm1hdFsyNF07Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgQk9PTCByZXN1bHQ7CkBAIC00MzA1LDIxMCArNDExMywyMDAgQEAKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAKLSAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwotICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0gICAgc3JjLmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lOwotICAgIGRzdC5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZTsKLSAgICBzdHJjcHkoZm9ybWF0LCAiTyZPJnwkTyZPJjoiKTsKLSAgICBzdHJjYXQoZm9ybWF0LCBmdW5jdGlvbl9uYW1lKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsIGZvcm1hdCwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBkaXJfZmRfc3BlY2lmaWVkID0gKHNyY19kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChkc3RfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKTsKICNpZm5kZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKSB7CiAgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGZ1bmN0aW9uX25hbWUsICJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkIik7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc3JjLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy53aWRlLCBkc3Qud2lkZSwgZmxhZ3MpOworICAgIGlmIChzcmMtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMubmFycm93LCBkc3QubmFycm93LCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdywgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yMigmc3JjLCAmZHN0KTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQotICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LCBkc3RfZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLT5uYXJyb3csIGRzdF9kaXJfZmQsIGRzdC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yMigmc3JjLCAmZHN0KTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogI2VuZGlmCi0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZzcmMpOwotICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKLSJyZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCi1SZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblwKLVxuXAotSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAotICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKLSAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1zcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5yZW5hbWUKKworICAgIHNyYyA6IHBhdGhfdAorICAgIGRzdCA6IHBhdGhfdAorICAgICoKKyAgICBzcmNfZGlyX2ZkIDogZGlyX2ZkID0gTm9uZQorICAgIGRzdF9kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisKK1JlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LgorCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KQorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA4MDMzYmIyZWMyN2ZiNWYgaW5wdXQ9ZmFhNjFjODQ3OTEyYzg1MF0qLwogewotICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoYXJncywga3dhcmdzLCAwKTsKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKHNyYywgZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCAwKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlcGxhY2VfX2RvY19fLAotInJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCi1SZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLlxuXAotXG5cCi1JZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCi0gIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAotICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLXNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlcGxhY2UgPSBvcy5yZW5hbWUKKworUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi4KKworSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZQorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdCkKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVwbGFjZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2Rpcl9mZCwgaW50IGRzdF9kaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTMxZDAxMmVlZDhkM2I4YiBpbnB1dD0yNTUxNWRmYjEwN2M4NDIxXSovCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDEpOworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoc3JjLCBkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIDEpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfcm1kaXJfX2RvY19fLAotInJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1SZW1vdmUgYSBkaXJlY3RvcnkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJtZGlyCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAqCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J3VubGlua2F0JykgPSBOb25lCisKK1JlbW92ZSBhIGRpcmVjdG9yeS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JtZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JtZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhYmFkZWM4MGQ1YTc3YzcgaW5wdXQ9MzhjOGIzNzVjYTM0YTdlMl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJybWRpciI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwga2V5d29yZHMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9VTkxJTktBVAotICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLndpZGUpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgtPndpZGUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKICAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLwogI2Vsc2UKICNpZmRlZiBIQVZFX1VOTElOS0FUCiAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIEFUX1JFTU9WRURJUik7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IHJtZGlyKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC0+bmFycm93KTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKICNpZmRlZiBIQVZFX1NZU1RFTQotUHlEb2NfU1RSVkFSKHBvc2l4X3N5c3RlbV9fZG9jX18sCi0ic3lzdGVtKGNvbW1hbmQpIC0+IGV4aXRfc3RhdHVzXG5cblwKLUV4ZWN1dGUgdGhlIGNvbW1hbmQgKGEgc3RyaW5nKSBpbiBhIHN1YnNoZWxsLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3lzdGVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIHN0czsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgd2NoYXJfdCAqY29tbWFuZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInU6c3lzdGVtIiwgJmNvbW1hbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5c3RlbSAtPiBsb25nCiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3RzID0gX3dzeXN0ZW0oY29tbWFuZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbHNlCi0gICAgUHlPYmplY3QgKmNvbW1hbmRfb2JqOwotICAgIGNoYXIgKmNvbW1hbmQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzeXN0ZW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kX29iaikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGNvbW1hbmQ6IFB5X1VOSUNPREUKIAotICAgIGNvbW1hbmQgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmRfb2JqKTsKK0V4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbW1hbmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGMzYmQ1YWJjZDljMjllNyBpbnB1dD0zMDNmNWNlOTdkZjYwNmIwXSovCit7CisgICAgbG9uZyByZXN1bHQ7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN0cyA9IHN5c3RlbShjb21tYW5kKTsKKyAgICByZXN1bHQgPSBfd3N5c3RlbShjb21tYW5kKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihjb21tYW5kX29iaik7Ci0jZW5kaWYKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHN0cyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5c3RlbSAtPiBsb25nCisKKyAgICBjb21tYW5kOiBGU0NvbnZlcnRlcgorCitFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19zeXN0ZW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqY29tbWFuZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MDBmNzc1ZTEwYjdiZTU1IGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KK3sKKyAgICBsb25nIHJlc3VsdDsKKyAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IHN5c3RlbShieXRlcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWVNURU0gKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdW1hc2tfX2RvY19fLAotInVtYXNrKG5ld19tYXNrKSAtPiBvbGRfbWFza1xuXG5cCi1TZXQgdGhlIGN1cnJlbnQgbnVtZXJpYyB1bWFzayBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB1bWFzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVtYXNrCisKKyAgICBtYXNrOiBpbnQKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW1hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdW1hc2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFzaykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTFmZTNjOWYxNGQ2YTA1IGlucHV0PWFiNmJmZDliMjRkOGE3ZThdKi8KIHsKLSAgICBpbnQgaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6dW1hc2siLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGkgPSAoaW50KXVtYXNrKGkpOworICAgIGludCBpID0gKGludCl1bWFzayhtYXNrKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaSk7CkBAIC00NTM3LDcgKzQzMzUsMTAgQEAKICAgICAgICAgICAgIGZpbmRfZGF0YV9oYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhscEZpbGVOYW1lLCAmZmluZF9kYXRhKTsKIAogICAgICAgICAgICAgaWYoZmluZF9kYXRhX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgICAgICAgIGlzX2xpbmsgPSBmaW5kX2RhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSzsKKyAgICAgICAgICAgICAgICAvKiBJT19SRVBBUlNFX1RBR19TWU1MSU5LIGlmIGl0IGlzIGEgc3ltbGluayBhbmQKKyAgICAgICAgICAgICAgICAgICBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVCBpZiBpdCBpcyBhIGp1bmN0aW9uIHBvaW50LiAqLworICAgICAgICAgICAgICAgIGlzX2xpbmsgPSBmaW5kX2RhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2RhdGEuZHdSZXNlcnZlZDAgPT0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7CiAgICAgICAgICAgICAgICAgRmluZENsb3NlKGZpbmRfZGF0YV9oYW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTUwLDgxICs0MzUxLDczIEBACiB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfdW5saW5rX19kb2NfXywKLSJ1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLVJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgcmVtb3ZlKCkpLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1QeURvY19TVFJWQVIocG9zaXhfcmVtb3ZlX19kb2NfXywKLSJyZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLVJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudW5saW5rCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAqCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J3VubGlua2F0Jyk9Tm9uZQorCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW5saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3VubGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzRhZmQ1Y2QwOWIyMzdlIGlucHV0PWQ3YmNkZTJiMWIyYTI1NTJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAidW5saW5rIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwga2V5d29yZHMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9VTkxJTktBVAotICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgtPndpZGUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwogICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCAwKTsKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIDApOwogICAgIGVsc2UKICNlbmRpZiAvKiBIQVZFX1VOTElOS0FUICovCi0gICAgICAgIHJlc3VsdCA9IHVubGluayhwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHVubGluayhwYXRoLT5uYXJyb3cpOwogI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdW5hbWVfX2RvY19fLAotInVuYW1lKCkgLT4gdW5hbWVfcmVzdWx0XG5cblwKLVJldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS5cblwKLVRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcblwKLSAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKSIpOworLypbY2xpbmljIGlucHV0XQorb3MucmVtb3ZlID0gb3MudW5saW5rCisKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwZDUxNDllNjQ4MzJiOWUgaW5wdXQ9ZTA1YzVhYjU1Y2QzMDk4M10qLworeworICAgIHJldHVybiBvc191bmxpbmtfaW1wbChtb2R1bGUsIHBhdGgsIGRpcl9mZCk7Cit9CisKIAogc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdW5hbWVfcmVzdWx0X2ZpZWxkc1tdID0gewogICAgIHsic3lzbmFtZSIsICAgICJvcGVyYXRpbmcgc3lzdGVtIG5hbWUifSwKQEAgLTQ2NTQsOCArNDQ0NywxOSBAQAogCiAKICNpZmRlZiBIQVZFX1VOQU1FCisvKltjbGluaWMgaW5wdXRdCitvcy51bmFtZQorCitSZXR1cm4gYW4gb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uCisKK1RoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKKyAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3VuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMWUxNDIxYjc1N2U3NTNmIGlucHV0PWU2OGJkMjQ2ZGIzMDQzZWRdKi8KIHsKICAgICBzdHJ1Y3QgdXRzbmFtZSB1OwogICAgIGludCByZXM7CkBAIC00Njk0LDMxICs0NDk4LDYgQEAKICNlbmRpZiAvKiBIQVZFX1VOQU1FICovCiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3V0aW1lX19kb2NfXywKLSJ1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cCi1TZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZSBvZiBwYXRoLlxuXAotXG5cCi1wYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCi1cblwKLUlmIHRpbWVzIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSk7XG5cCi0gICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guXG5cCi1JZiBucyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZV9ucywgbXRpbWVfbnMpO1xuXAotICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHNcblwKLSAgICBzaW5jZSB0aGUgZXBvY2guXG5cCi1JZiBib3RoIHRpbWVzIGFuZCBucyBhcmUgTm9uZSwgdXRpbWUgdXNlcyB0aGUgY3VycmVudCB0aW1lLlxuXAotU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIHV0aW1lIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoXG5cCi0gIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgICAgbm93OwpAQCAtNDgwNCw2ICs0NTgzLDkgQEAKICNlbmRpZgogfQogCisgICAgI2RlZmluZSBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKICNlbmRpZgogCiAjZGVmaW5lIFVUSU1FX0hBVkVfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTKSB8fCBkZWZpbmVkKEhBVkVfRlVUSU1FTlMpKQpAQCAtNDgyMiw2ICs0NjA0LDkgQEAKICNlbmRpZgogfQogCisgICAgI2RlZmluZSBQQVRIX1VUSU1FX0hBVkVfRkQgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAogCkBAIC00ODg3LDE5ICs0NjcyLDUwIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorCisvKltjbGluaWMgaW5wdXRdCitvcy51dGltZQorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX1VUSU1FX0hBVkVfRkQnKQorICAgIHRpbWVzOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIG5zOiBvYmplY3QgPSBOVUxMCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J2Z1dGltZW5zYXQnKSA9IE5vbmUKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2w9VHJ1ZQorCisjICJ1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cCisKK1NldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTsKKyAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4KK0lmIG5zIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7CisgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kcworICAgIHNpbmNlIHRoZSBlcG9jaC4KK0lmIGJvdGggdGltZXMgYW5kIG5zIGFyZSBOb25lLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuCitTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLgorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGgKKyAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdXRpbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICp0aW1lcywKKyAgICAgICAgICAgICAgUHlPYmplY3QgKm5zLCBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxZjM0MzRlNTYwYmEyZjAgaW5wdXQ9MWYxOGMxN2Q1OTQxYWE4Ml0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5zID0gTlVMTDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotCi0gICAgdXRpbWVfdCB1dGltZTsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBIQU5ETEUgaEZpbGU7CiAgICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOwpAQCAtNDkwOCwyNSArNDcyNCw5IEBACiAjZW5kaWYKIAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHV0aW1lX3QgdXRpbWU7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInV0aW1lIjsKICAgICBtZW1zZXQoJnV0aW1lLCAwLCBzaXplb2YodXRpbWVfdCkpOwotI2lmIFVUSU1FX0hBVkVfRkQKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICJPJnxPJE9PJnA6dXRpbWUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICZ0aW1lcywgJm5zLAotI2lmIFVUSU1FX0hBVkVfRElSX0ZECi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcwotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodGltZXMgJiYgKHRpbWVzICE9IFB5X05vbmUpICYmIG5zKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDk0Niw5ICs0NzQ2LDkgQEAKICAgICAgICAgfQogICAgICAgICB1dGltZS5ub3cgPSAwOwogICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEgfHwKICAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgdXRpbWUuYXRpbWVfcyA9IGFfc2VjOwpAQCAtNDk4MCw5ICs0NzgwLDkgQEAKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCiAKLSAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKLSAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKLSAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJ1dGltZSIsIHBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC0+ZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgidXRpbWUiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogCiAjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCkBAIC00OTk2LDE3ICs0Nzk2LDE3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgtPm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC01MDE1LDggKzQ4MTUsOCBAQAogICAgICAgICBhdGltZSA9IG10aW1lOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKKyAgICAgICAgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodXRpbWUuYXRpbWVfcywgdXRpbWUuYXRpbWVfbnMsICZhdGltZSk7CisgICAgICAgIF9QeV90aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC01MDMxLDIzICs0ODMxLDIzIEBACiAKICNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHV0aW1lX25vZm9sbG93X3N5bWxpbmtzKCZ1dGltZSwgcGF0aC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKIAogI2lmIFVUSU1FX0hBVkVfRElSX0ZECiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLm5hcnJvdywgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CiAgICAgZWxzZQogI2VuZGlmCiAKICNpZiBVVElNRV9IQVZFX0ZECi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IHV0aW1lX2ZkKCZ1dGltZSwgcGF0aC5mZCk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGgtPmZkKTsKICAgICBlbHNlCiAjZW5kaWYKIAotICAgIHJlc3VsdCA9IHV0aW1lX2RlZmF1bHQoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gdXRpbWVfZGVmYXVsdCgmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01MDYzLDcgKzQ4NjMsNiBAQAogICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAKIGV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGhGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CkBAIC01MDczLDE3ICs0ODcyLDIwIEBACiAKIC8qIFByb2Nlc3Mgb3BlcmF0aW9ucyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfX2V4aXRfX2RvY19fLAotIl9leGl0KHN0YXR1cylcblxuXAotRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5fZXhpdAorCisgICAgc3RhdHVzOiBpbnQKKworRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2V4aXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3MmEzY2JhZjY4ZjM2MjEgaW5wdXQ9NWU2ZDU3NTU2YjBjNGE2Ml0qLwogewotICAgIGludCBzdHM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9leGl0IiwgJnN0cykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIF9leGl0KHN0cyk7CisgICAgX2V4aXQoc3RhdHVzKTsKICAgICByZXR1cm4gTlVMTDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIApAQCAtNTIyMSw5NiArNTAyMyw4MyBAQAogfQogI2VuZGlmCiAKKwogI2lmZGVmIEhBVkVfRVhFQ1YKLVB5RG9jX1NUUlZBUihwb3NpeF9leGVjdl9fZG9jX18sCi0iZXhlY3YocGF0aCwgYXJncylcblxuXAotRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3MuZXhlY3YKKworICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2V4ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyMjFmMDgxNDMxNDZmZmYgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLwogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2OworICAgIGNoYXIgKnBhdGhfY2hhcjsKICAgICBjaGFyICoqYXJndmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjOwogCiAgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CiAgICAgaWYgKGFyZ2MgPCAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3YoKSBhcmcgMiBtdXN0IG5vdCBiZSBlbXB0eSIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGV4ZWN2KHBhdGgsIGFyZ3ZsaXN0KTsKKyAgICBleGVjdihwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9leGVjdmVfX2RvY19fLAotImV4ZWN2ZShwYXRoLCBhcmdzLCBlbnYpXG5cblwKLUV4ZWN1dGUgYSBwYXRoIHdpdGggYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCwgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3NcblwKLVxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHlvdSBtYXkgc3BlY2lmeSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgcGF0aDtcblwKLSAgZXhlY3ZlIHdpbGwgZXhlY3V0ZSB0aGUgcHJvZ3JhbSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG9wZW4gdG8uXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmV4ZWN2ZQorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRkVYRUNWRScpCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgZW52OiBvYmplY3QKKyAgICAgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4KKworRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZXhlY3ZlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTgxODg0ZmNkYjIxNTA4ZSBpbnB1dD02MjY4MDRmYTA5MjYwNmQ5XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3YsICplbnY7CiAgICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKICAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnZpcm9ubWVudCIsIE5VTEx9OwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImV4ZWN2ZSI7Ci0jaWZkZWYgSEFWRV9GRVhFQ1ZFCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2LCAmZW52Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKQEAgLTUzMzMsMTUgKzUxMjIsMTUgQEAKICAgICAgICAgZ290byBmYWlsOwogCiAjaWZkZWYgSEFWRV9GRVhFQ1ZFCi0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgZmV4ZWN2ZShwYXRoLmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgaWYgKHBhdGgtPmZkID4gLTEpCisgICAgICAgIGZleGVjdmUocGF0aC0+ZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgZXhlY3ZlKHBhdGgubmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgICAgIGV4ZWN2ZShwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgcGF0aF9lcnJvcihwYXRoKTsKIAogICAgIHdoaWxlICgtLWVudmMgPj0gMCkKICAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwpAQCAtNTM0OSwyOSArNTEzOCwzMyBAQAogICBmYWlsOgogICAgIGlmIChhcmd2bGlzdCkKICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAjZW5kaWYgLyogSEFWRV9FWEVDViAqLwogCiAKICNpZmRlZiBIQVZFX1NQQVdOVgotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudl9fZG9jX18sCi0ic3Bhd252KG1vZGUsIHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgdGhlIHByb2dyYW0gJ3BhdGgnIGluIGEgbmV3IHByb2Nlc3MuXG5cCi1cblwKLSAgICBtb2RlOiBtb2RlIG9mIHByb2Nlc3MgY3JlYXRpb25cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3Muc3Bhd252CisKKyAgICBtb2RlOiBpbnQKKyAgICAgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLgorICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgorICAgIGFyZ3Y6IG9iamVjdAorICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zcGF3bnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc3Bhd252X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDBhNzk0NTQ4NGM4Y2M1IGlucHV0PTA0MmM5MWRmYzFlNmRlYmNdKi8KIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICpwYXRoX2NoYXI7CiAgICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGludCBtb2RlLCBpOworICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgYXJnYzsKICAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKICAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKQEAgLTUzNzksMTEgKzUxNzIsNyBAQAogICAgIC8qIHNwYXdudiBoYXMgdGhyZWUgYXJndW1lbnRzOiAobW9kZSwgcGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLCAmbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewogICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7CiAgICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKQEAgLTUzOTUsMTMgKzUxODQsMTEgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKQEAgLTU0MTEsNyArNTE5OCw2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC01NDIxLDExICs1MjA3LDEwIEBACiAgICAgICAgIG1vZGUgPSBfUF9PVkVSTEFZOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoLCBhcmd2bGlzdCk7CisgICAgc3Bhd252YWwgPSBfc3Bhd252KG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKIAogICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC01NDM0LDI1ICs1MjE5LDMxIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudmVfX2RvY19fLAotInNwYXdudmUobW9kZSwgcGF0aCwgYXJncywgZW52KVxuXG5cCi1FeGVjdXRlIHRoZSBwcm9ncmFtICdwYXRoJyBpbiBhIG5ldyBwcm9jZXNzLlxuXAotXG5cCi0gICAgbW9kZTogbW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIGFyZ3VtZW50c1xuXAotICAgIGVudjogZGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncyIpOworLypbY2xpbmljIGlucHV0XQorb3Muc3Bhd252ZQorCisgICAgbW9kZTogaW50CisgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIGVudjogb2JqZWN0CisgICAgICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuCisgICAgLworCitFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zcGF3bnZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NwYXdudmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTdmNWYwNzAzNjEwNTMxZiBpbnB1dD0wMjM2MmZkOTM3OTYzZjhmXSovCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3YsICplbnY7CisgICAgY2hhciAqcGF0aF9jaGFyOwogICAgIGNoYXIgKiphcmd2bGlzdDsKICAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBpbnQgbW9kZTsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7CiAgICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CkBAIC01NDYyLDExICs1MjUzLDcgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwgJm1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01NTEwLDcgKzUyOTcsNyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NTI0LDcgKzUzMTEsNiBAQAogICBmYWlsXzE6CiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGxhc3RhcmcpOwogICBmYWlsXzA6Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC01NTMyLDE0ICs1MzE4LDE3IEBACiAKIAogI2lmZGVmIEhBVkVfRk9SSzEKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrMV9fZG9jX18sCi0iZm9yazEoKSAtPiBwaWRcblxuXAotRm9yayBhIGNoaWxkIHByb2Nlc3Mgd2l0aCBhIHNpbmdsZSBtdWx0aXBsZXhlZCAoaS5lLiwgbm90IGJvdW5kKSB0aHJlYWQuXG5cCi1cblwKLVJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmsxCisKK0ZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLgorCitSZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mb3JrMShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2ZvcmsxX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMjdiNGY2NjQxOWM5ZGNmIGlucHV0PTEyZGIwMjE2Nzg5MzkyNmVdKi8KIHsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC01NTYyLDE3ICs1MzUxLDIxIEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwaWQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLMSAqLwogCiAKICNpZmRlZiBIQVZFX0ZPUksKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrX19kb2NfXywKLSJmb3JrKCkgLT4gcGlkXG5cblwKLUZvcmsgYSBjaGlsZCBwcm9jZXNzLlxuXAotUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZm9yaworCitGb3JrIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZm9yayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2ZvcmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg5OGIxZWNkMzQ5OGJhMTIgaW5wdXQ9MTNjOTU2NDEzMTEwZWVhYV0qLwogewogICAgIHBpZF90IHBpZDsKICAgICBpbnQgcmVzdWx0ID0gMDsKQEAgLTU1OTUsOTIgKzUzODgsMTA2IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwaWQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLICovCisKIAogI2lmZGVmIEhBVkVfU0NIRURfSAotCiAjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfXywKLSJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSlcblxuXAotR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworICAgIHBvbGljeTogaW50CisKK0dldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgcG9saWN5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2YTMwZmE1MDcxZjJkODEgaW5wdXQ9MjA5N2I3OTk4ZWNhNjg3NF0qLwogewotICAgIGludCBwb2xpY3ksIG1heDsKKyAgICBpbnQgbWF4OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAmcG9saWN5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWF4ID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpOwogICAgIGlmIChtYXggPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1heCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKLSJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSlcblxuXAotR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluCisKKyAgICBwb2xpY3k6IGludAorCitHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2EzZWQ2YmM0M2U5YjIwIGlucHV0PTIxYmM4ZmEwZDcwOTgzYmZdKi8KIHsKLSAgICBpbnQgcG9saWN5LCBtaW47Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsICZwb2xpY3kpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisgICAgaW50IG1pbiA9IHNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KTsKICAgICBpZiAobWluIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtaW4pOwogfQotCiAjZW5kaWYgLyogSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYICovCiAKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfXywKLSJzY2hlZF9nZXRzY2hlZHVsZXIocGlkKVxuXG5cCi1HZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIGEgUElEIG9mICpwaWQqLlxuXAotUGFzc2luZyBhIFBJRCBvZiAwIHJldHVybnMgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9nZXRzY2hlZHVsZXIKKyAgICBwaWQ6IHBpZF90CisgICAgLworCitHZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkeSBieSBwaWQuCisKK1Bhc3NpbmcgMCBmb3IgcGlkIHJldHVybnMgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldHNjaGVkdWxlcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04Y2Q2M2MxNWNhZjU0ZmE5IGlucHV0PTVmMTRjZmQxZjE4OWUxYTBdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHBvbGljeSA9IHNjaGVkX2dldHNjaGVkdWxlcihwaWQpOwogICAgIGlmIChwb2xpY3kgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHBvbGljeSk7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIgKi8KIAotI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBvcy5zY2hlZF9wYXJhbSAiUHlPYmplY3QgKiIgIiZTY2hlZFBhcmFtVHlwZSIKKworQGNsYXNzbWV0aG9kCitvcy5zY2hlZF9wYXJhbS5fX25ld19fCisKKyAgICBzY2hlZF9wcmlvcml0eTogb2JqZWN0CisgICAgICAgIEEgc2NoZWR1bGluZyBwYXJhbWV0ZXIuCisKK0N1cnJlbnQgaGFzIG9ubHkgb25lIGZpZWxkOiBzY2hlZF9wcmlvcml0eSIpOworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2NoZWRfcGFyYW1fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zY2hlZF9wYXJhbV9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnNjaGVkX3ByaW9yaXR5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ4ZjQwNjdkNjBmNDhjMTMgaW5wdXQ9NzNhNGMyMmY3MDcxZmM2Ml0qLwogewotICAgIFB5T2JqZWN0ICpyZXMsICpwcmlvcml0eTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86c2NoZWRfcGFyYW0iLCBrd2xpc3QsICZwcmlvcml0eSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KHR5cGUpOwogICAgIGlmICghcmVzKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYocHJpb3JpdHkpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7CisgICAgUHlfSU5DUkVGKHNjaGVkX3ByaW9yaXR5KTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgc2NoZWRfcHJpb3JpdHkpOwogICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihzY2hlZF9wYXJhbV9fZG9jX18sCi0ic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpOiBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLlxuXG5cCi1DdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKKworUHlEb2NfVkFSKG9zX3NjaGVkX3BhcmFtX19kb2NfXyk7CiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHNjaGVkX3BhcmFtX2ZpZWxkc1tdID0gewogICAgIHsic2NoZWRfcHJpb3JpdHkiLCAidGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkifSwKQEAgLTU2ODksNyArNTQ5Niw3IEBACiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc2NoZWRfcGFyYW1fZGVzYyA9IHsKICAgICAic2NoZWRfcGFyYW0iLCAvKiBuYW1lICovCi0gICAgc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KKyAgICBvc19zY2hlZF9wYXJhbV9fZG9jX18sIC8qIGRvYyAqLwogICAgIHNjaGVkX3BhcmFtX2ZpZWxkcywKICAgICAxCiB9OwpAQCAtNTcxMywxMTggKzU1MjAsMTM0IEBACiAgICAgcmVzLT5zY2hlZF9wcmlvcml0eSA9IFB5X1NBRkVfRE9XTkNBU1QocHJpb3JpdHksIGxvbmcsIGludCk7CiAgICAgcmV0dXJuIDE7CiB9CisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSAqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRzY2hlZHVsZXIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX18sCi0ic2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSlcblxuXAotU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSwgKnBvbGljeSosIGZvciAqcGlkKi5cblwKLUlmICpwaWQqIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC5cblwKLSpwYXJhbSogaXMgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uIik7CisgICAgcGlkOiBwaWRfdAorICAgIHBvbGljeTogaW50CisgICAgcGFyYW06IHNjaGVkX3BhcmFtCisgICAgLworCitTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworSWYgcGlkIGlzIDAsIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY2hhbmdlZC4KK3BhcmFtIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX3NldHNjaGVkdWxlcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IHBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcwNTNlNWM1MjhjMzVjOSBpbnB1dD1jNTgxZjk0NjlhNTMyN2RkXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBwb2xpY3k7Ci0gICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmcG9saWN5LCAmY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKgogICAgICoqIHNjaGVkX3NldHNjaGVkdWxlcigpIHJldHVybnMgMCBpbiBMaW51eCwgYnV0IHRoZSBwcmV2aW91cwogICAgICoqIHNjaGVkdWxpbmcgcG9saWN5IHVuZGVyIFNvbGFyaXMvSWxsdW1vcywgYW5kIG90aGVycy4KICAgICAqKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgaW4gYWxsIE9wZXJhdGluZyBTeXN0ZW1zLgogICAgICovCi0gICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgJnBhcmFtKSA9PSAtMSkKKyAgICBpZiAoc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQorI2VuZGlmICAvKiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUiovCiAKLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0cGFyYW0KKyAgICBwaWQ6IHBpZF90CisgICAgLwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAotInNjaGVkX2dldHBhcmFtKHBpZCkgLT4gc2NoZWRfcGFyYW1cblxuXAotUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggKnBpZCogYXMgYW4gaW5zdGFuY2Ugb2YgdGhlXG5cCi1zY2hlZF9wYXJhbSBjbGFzcy4gQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitJZiBwaWQgaXMgMCwgcmV0dXJucyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorUmV0dXJuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQyYzViZDI2MDRlY2QwOCBpbnB1dD0xOGExZWY5YzJlZmFlMjk2XSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLSAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzY2hlZF9nZXRwYXJhbShwaWQsICZwYXJhbSkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7Ci0gICAgaWYgKCFyZXMpCisgICAgcmVzdWx0ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlNjaGVkUGFyYW1UeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcHJpb3JpdHkgPSBQeUxvbmdfRnJvbUxvbmcocGFyYW0uc2NoZWRfcHJpb3JpdHkpOwogICAgIGlmICghcHJpb3JpdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKLSAgICByZXR1cm4gcmVzOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAwLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfXywKLSJzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKVxuXG5cCi1TZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciBhIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCi1BIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX3NldHBhcmFtCisgICAgcGlkOiBwaWRfdAorICAgIHBhcmFtOiBzY2hlZF9wYXJhbQorICAgIC8KKworU2V0IHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuCisKK0lmIHBpZCBpcyAwLCBzZXRzIHBhcmFtZXRlcnMgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuCitwYXJhbSBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF9zZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9zZXRwYXJhbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iN2EzYzU4OTQzNmNlYzliIGlucHV0PTZiOGQ2ZGZjZWNkYzIxYmRdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgaWYgKHNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KKyNlbmRpZiAvKiBIQVZFX1NDSEVEX1NFVFBBUkFNICovCiAKLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX3JyX2dldF9pbnRlcnZhbCAtPiBkb3VibGUKKyAgICBwaWQ6IHBpZF90CisgICAgLwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKLSJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKSAtPiBmbG9hdFxuXG5cCi1SZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIGluIHNlY29uZHMuIik7CitSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLCBpbiBzZWNvbmRzLgogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1ZhbHVlIHJldHVybmVkIGlzIGEgZmxvYXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBkb3VibGUKK29zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03YWRjMTM3YTg2ZGVhNTgxIGlucHV0PTJhOTczZGExNWNjYTZmYWVdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIGludGVydmFsOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQsICZpbnRlcnZhbCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSlpbnRlcnZhbC50dl9zZWMgKyAxZS05KmludGVydmFsLnR2X25zZWMpOworICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KKyAgICByZXR1cm4gKGRvdWJsZSlpbnRlcnZhbC50dl9zZWMgKyAxZS05KmludGVydmFsLnR2X25zZWM7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwgKi8KIAotI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF95aWVsZF9fZG9jX18sCi0ic2NoZWRfeWllbGQoKVxuXG5cCi1Wb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF95aWVsZAorCitWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zY2hlZF95aWVsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3NjaGVkX3lpZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kN2JkNTE4NjljNGNiNmE4IGlucHV0PWU1NGQ2Zjk4MTg5MzkxZDRdKi8KIHsKICAgICBpZiAoc2NoZWRfeWllbGQoKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC01ODMyLDM5ICs1NjU1LDQxIEBACiB9CiAKICNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCi0KIC8qIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFVzIGFsbG9jYXRlZCBpbiBhIGNwdV9zZXRfdCAqLwogc3RhdGljIGNvbnN0IGludCBOQ1BVU19TVEFSVCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUOwogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19fLAotInNjaGVkX3NldGFmZmluaXR5KHBpZCwgY3B1X3NldClcblxuXAotU2V0IHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiB0byAqY3B1X3NldCouIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRhZmZpbml0eQorICAgIHBpZDogcGlkX3QKKyAgICBtYXNrIDogb2JqZWN0CisgICAgLworCitTZXQgdGhlIENQVSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCB0byBtYXNrLgorCittYXNrIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyBpZGVudGlmeWluZyBDUFVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5T2JqZWN0ICptYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4MmJjYmY0MGQzMjUzYTkgaW5wdXQ9YTA3OTFhNTk3YzcwODViYV0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBpbnQgbmNwdXM7CiAgICAgc2l6ZV90IHNldHNpemU7Ci0gICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlcmFibGUsICppdGVyYXRvciA9IE5VTEwsICppdGVtOworICAgIGNwdV9zZXRfdCAqY3B1X3NldCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0ZXJhdG9yID0gTlVMTCwgKml0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZpdGVyYWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIobWFzayk7CiAgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbmNwdXMgPSBOQ1BVU19TVEFSVDsKICAgICBzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmNwdXMpOwotICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOwotICAgIGlmIChtYXNrID09IE5VTEwpIHsKKyAgICBjcHVfc2V0ID0gQ1BVX0FMTE9DKG5jcHVzKTsKKyAgICBpZiAoY3B1X3NldCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIENQVV9aRVJPX1Moc2V0c2l6ZSwgbWFzayk7CisgICAgQ1BVX1pFUk9fUyhzZXRzaXplLCBjcHVfc2V0KTsKIAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKICAgICAgICAgbG9uZyBjcHU7CkBAIC01OTA1LDQ4ICs1NzMwLDUwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBuZXdzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmV3bmNwdXMpOwogICAgICAgICAgICAgQ1BVX1pFUk9fUyhuZXdzZXRzaXplLCBuZXdtYXNrKTsKLSAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBtYXNrLCBzZXRzaXplKTsKLSAgICAgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgICAgICAgICAgbWVtY3B5KG5ld21hc2ssIGNwdV9zZXQsIHNldHNpemUpOworICAgICAgICAgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgICAgICAgICBzZXRzaXplID0gbmV3c2V0c2l6ZTsKLSAgICAgICAgICAgIG1hc2sgPSBuZXdtYXNrOworICAgICAgICAgICAgY3B1X3NldCA9IG5ld21hc2s7CiAgICAgICAgICAgICBuY3B1cyA9IG5ld25jcHVzOwogICAgICAgICB9Ci0gICAgICAgIENQVV9TRVRfUyhjcHUsIHNldHNpemUsIG1hc2spOworICAgICAgICBDUFVfU0VUX1MoY3B1LCBzZXRzaXplLCBjcHVfc2V0KTsKICAgICB9CiAgICAgUHlfQ0xFQVIoaXRlcmF0b3IpOwogCi0gICAgaWYgKHNjaGVkX3NldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgbWFzaykpIHsKKyAgICBpZiAoc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzZXRzaXplLCBjcHVfc2V0KSkgewogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBDUFVfRlJFRShjcHVfc2V0KTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6Ci0gICAgaWYgKG1hc2spCi0gICAgICAgIENQVV9GUkVFKG1hc2spOworICAgIGlmIChjcHVfc2V0KQorICAgICAgICBDUFVfRlJFRShjcHVfc2V0KTsKICAgICBQeV9YREVDUkVGKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldGFmZmluaXR5X19kb2NfXywKLSJzY2hlZF9nZXRhZmZpbml0eShwaWQsIG5jcHVzKSAtPiBjcHVfc2V0XG5cblwKLVJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCi1UaGUgcmV0dXJuZWQgY3B1X3NldCB3aWxsIGJlIG9mIHNpemUgKm5jcHVzKi4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0YWZmaW5pdHkKKyAgICBwaWQ6IHBpZF90CisgICAgLworCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQzMWE4ZjMxMGUzNjllNyBpbnB1dD1lYWYxNjE5MzY4NzRiOGExXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKICAgICBzaXplX3Qgc2V0c2l6ZTsKICAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKQEAgLTU5OTYsNiArNTgyMyw3IEBACiAKICNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KIAorCiAvKiBBSVggdXNlcyAvZGV2L3B0YyBidXQgaXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIC9kZXYvcHRteCAqLwogLyogSVJJWCBoYXMgYm90aCAvZGV2L3B0YyBhbmQgL2Rldi9wdG14LCB1c2UgcHRteCAqLwogI2lmIGRlZmluZWQoSEFWRV9ERVZfUFRDKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVE1YKQpAQCAtNjAyMiwxMyArNTg1MCwyMCBAQAogI2VuZGlmCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9GT1JLUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVggKi8KIAorCiAjaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCi1QeURvY19TVFJWQVIocG9zaXhfb3BlbnB0eV9fZG9jX18sCi0ib3BlbnB0eSgpIC0+IChtYXN0ZXJfZmQsIHNsYXZlX2ZkKVxuXG5cCi1PcGVuIGEgcHNldWRvLXRlcm1pbmFsLCByZXR1cm5pbmcgb3BlbiBmZCdzIGZvciBib3RoIG1hc3RlciBhbmQgc2xhdmUgZW5kLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5vcGVucHR5CisKK09wZW4gYSBwc2V1ZG8tdGVybWluYWwuCisKK1JldHVybiBhIHR1cGxlIG9mIChtYXN0ZXJfZmQsIHNsYXZlX2ZkKSBjb250YWluaW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycworZm9yIGJvdGggdGhlIG1hc3RlciBhbmQgc2xhdmUgZW5kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X29wZW5wdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19vcGVucHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNThlNTcxYzFiYTEzNWVlIGlucHV0PWYzZDk5ZmQ5OWU3NjI5MDddKi8KIHsKICAgICBpbnQgbWFzdGVyX2ZkID0gLTEsIHNsYXZlX2ZkID0gLTE7CiAjaWZuZGVmIEhBVkVfT1BFTlBUWQpAQCAtNjA1OSw3ICs1ODk0LDcgQEAKIAogICAgIHNsYXZlX2ZkID0gX1B5X29wZW4oc2xhdmVfbmFtZSwgT19SRFdSKTsKICAgICBpZiAoc2xhdmVfZmQgPCAwKQotICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOworICAgICAgICBnb3RvIGVycm9yOwogCiAjZWxzZQogICAgIG1hc3Rlcl9mZCA9IG9wZW4oREVWX1BUWV9GSUxFLCBPX1JEV1IgfCBPX05PQ1RUWSk7IC8qIG9wZW4gbWFzdGVyICovCkBAIC02MDg3LDggKzU5MjIsOCBAQAogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCiAgICAgc2xhdmVfZmQgPSBfUHlfb3BlbihzbGF2ZV9uYW1lLCBPX1JEV1IgfCBPX05PQ1RUWSk7IC8qIG9wZW4gc2xhdmUgKi8KLSAgICBpZiAoc2xhdmVfZmQgPCAwKQotICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOworICAgIGlmIChzbGF2ZV9mZCA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwpAQCAtNjEwNiw5ICs1OTQxLDcgQEAKIAogcG9zaXhfZXJyb3I6CiAgICAgcG9zaXhfZXJyb3IoKTsKLSNpZiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpCiBlcnJvcjoKLSNlbmRpZgogICAgIGlmIChtYXN0ZXJfZmQgIT0gLTEpCiAgICAgICAgIGNsb3NlKG1hc3Rlcl9mZCk7CiAgICAgaWYgKHNsYXZlX2ZkICE9IC0xKQpAQCAtNjExNywxNSArNTk1MCwyMiBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKSAqLwogCisKICNpZmRlZiBIQVZFX0ZPUktQVFkKLVB5RG9jX1NUUlZBUihwb3NpeF9mb3JrcHR5X19kb2NfXywKLSJmb3JrcHR5KCkgLT4gKHBpZCwgbWFzdGVyX2ZkKVxuXG5cCi1Gb3JrIGEgbmV3IHByb2Nlc3Mgd2l0aCBhIG5ldyBwc2V1ZG8tdGVybWluYWwgYXMgY29udHJvbGxpbmcgdHR5LlxuXG5cCi1MaWtlIGZvcmsoKSwgcmV0dXJuIDAgYXMgcGlkIHRvIGNoaWxkIHByb2Nlc3MsIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50LlxuXAotVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmtwdHkKKworRm9yayBhIG5ldyBwcm9jZXNzIHdpdGggYSBuZXcgcHNldWRvLXRlcm1pbmFsIGFzIGNvbnRyb2xsaW5nIHR0eS4KKworUmV0dXJucyBhIHR1cGxlIG9mIChwaWQsIG1hc3Rlcl9mZCkuCitMaWtlIGZvcmsoKSwgcmV0dXJuIHBpZCBvZiAwIHRvIHRoZSBjaGlsZCBwcm9jZXNzLAorYW5kIHBpZCBvZiBjaGlsZCB0byB0aGUgcGFyZW50IHByb2Nlc3MuCitUbyBib3RoLCByZXR1cm4gZmQgb2YgbmV3bHkgb3BlbmVkIHBzZXVkby10ZXJtaW5hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZvcmtwdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrcHR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTFiODM5MWRjZTNjYjU3IGlucHV0PWYxZjdmNGJhZTM5NjYwMTBdKi8KIHsKICAgICBpbnQgbWFzdGVyX2ZkID0gLTEsIHJlc3VsdCA9IDA7CiAgICAgcGlkX3QgcGlkOwpAQCAtNjE0OSw1OSArNTk4OSw3MyBAQAogICAgIH0KICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5pKSIsIFB5TG9uZ19Gcm9tUGlkKHBpZCksIG1hc3Rlcl9mZCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZPUktQVFkgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRFR0lECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0ZWdpZF9fZG9jX18sCi0iZ2V0ZWdpZCgpIC0+IGVnaWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRlZ2lkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0ZWdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwZjQzM2E4YzBiMWQ5MTkgaW5wdXQ9MTU5NmY3OWFkMTEwN2Q1ZF0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21HaWQoZ2V0ZWdpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VURUdJRCAqLwogCiAKICNpZmRlZiBIQVZFX0dFVEVVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRldWlkX19kb2NfXywKLSJnZXRldWlkKCkgLT4gZXVpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0ZXVpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0ZXVpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhNTMyYzRhNjY4NzQzNTcgaW5wdXQ9NDY0NGM2NjJkM2JkOWYxOV0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21VaWQoZ2V0ZXVpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VURVVJRCAqLwogCiAKICNpZmRlZiBIQVZFX0dFVEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdpZF9fZG9jX18sCi0iZ2V0Z2lkKCkgLT4gZ2lkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRnaWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFhMjIwMjFiNzRlYTQ2YiBpbnB1dD01ODc5NjM0NGNkODdjMGY2XSovCiB7CiAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUdpZChnZXRnaWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwaWRfX2RvY19fLAotImdldHBpZCgpIC0+IHBpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZCIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cGlkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZmJmM2E5MzRlZTA5ZTYyIGlucHV0PTVhOWEwMGYwYWI2OGFhMDBdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQoZ2V0cGlkKCkpOwogfQogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUExJU1QKKworLyogQUMgMy41OiBmdW5ueSBhcHBsZSBsb2dpYyBiZWxvdyAqLwogUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX18sCiAiZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSAtPiBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25nc1xuXG5cCiBSZXR1cm5zIGEgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3MuXG5cblwKQEAgLTYyNzQsMTUgKzYxMjgsMTkgQEAKIAogICAgIHJldHVybiBsaXN0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHUk9VUExJU1QgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLAotImdldGdyb3VwcygpIC0+IGxpc3Qgb2YgZ3JvdXAgSURzXG5cblwKLVJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Z3JvdXBzCisKK1JldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBJRHMgZm9yIHRoZSBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0Z3JvdXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTdjNGZkMmRiNmQ1YzYwIGlucHV0PWQzZjEwOTQxMmU2YTE1NWNdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNjM4MSw3ICs2MjM5LDcgQEAKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEdST1VQUyAqLwogCiAjaWZkZWYgSEFWRV9JTklUR1JPVVBTCiBQeURvY19TVFJWQVIocG9zaXhfaW5pdGdyb3Vwc19fZG9jX18sCkBAIC02MzkwLDYgKzYyNDgsNyBAQAogdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWRcblwKIGdyb3VwIGlkLiIpOwogCisvKiBBQyAzLjU6IGZ1bm55IGFwcGxlIGxvZ2ljICovCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfaW5pdGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC02NDIyLDIwICs2MjgxLDIzIEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9JTklUR1JPVVBTICovCisKIAogI2lmZGVmIEhBVkVfR0VUUEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHBnaWRfX2RvY19fLAotImdldHBnaWQocGlkKSAtPiBwZ2lkXG5cblwKLUNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBnaWQKKworICAgIHBpZDogcGlkX3QKKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwZ2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzBlNzEzYjRkNTRiN2M2MSBpbnB1dD0zOWQ3MTBhZTNiYWFmMWM3XSovCiB7Ci0gICAgcGlkX3QgcGlkLCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwZ2lkID0gZ2V0cGdpZChwaWQpOworICAgIHBpZF90IHBnaWQgPSBnZXRwZ2lkKHBpZCk7CiAgICAgaWYgKHBnaWQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGdpZCk7CkBAIC02NDQ0LDEyICs2MzA2LDE1IEBACiAKIAogI2lmZGVmIEhBVkVfR0VUUEdSUAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHBncnBfX2RvY19fLAotImdldHBncnAoKSAtPiBwZ3JwXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cGdycAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZjM0MDM1ODU4NDY4MTFmIGlucHV0PTY4NDZmYjJiYjlhMzcwNWVdKi8KIHsKICNpZmRlZiBHRVRQR1JQX0hBVkVfQVJHCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBncnAoMCkpOwpAQCAtNjQ2MSwxMiArNjMyNiwxNSBAQAogCiAKICNpZmRlZiBIQVZFX1NFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRwZ3JwX19kb2NfXywKLSJzZXRwZ3JwKClcblxuXAotTWFrZSB0aGlzIHByb2Nlc3MgdGhlIHByb2Nlc3MgZ3JvdXAgbGVhZGVyLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cGdycAorCitNYWtlIHRoZSBjdXJyZW50IHByb2Nlc3MgdGhlIGxlYWRlciBvZiBpdHMgcHJvY2VzcyBncm91cC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19zZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01OTY1MGY1NWE5NjNkN2FjIGlucHV0PTFmMDYxOWZjYjU3MzFlN2VdKi8KIHsKICNpZmRlZiBTRVRQR1JQX0hBVkVfQVJHCiAgICAgaWYgKHNldHBncnAoMCwgMCkgPCAwKQpAQCAtNjQ3Nyw3ICs2MzQ1LDYgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9Ci0KICNlbmRpZiAvKiBIQVZFX1NFVFBHUlAgKi8KIAogI2lmZGVmIEhBVkVfR0VUUFBJRApAQCAtNjUyNCwxNCArNjM5MSwxOSBAQAogfQogI2VuZGlmIC8qTVNfV0lORE9XUyovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwcGlkX19kb2NfXywKLSJnZXRwcGlkKCkgLT4gcHBpZFxuXG5cCi1SZXR1cm4gdGhlIHBhcmVudCdzIHByb2Nlc3MgaWQuICBJZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLFxuXAotV2luZG93cyBtYWNoaW5lcyB3aWxsIHN0aWxsIHJldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZFxuXAotb2YgdGhlICdpbml0JyBwcm9jZXNzICgxKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cHBpZAorCitSZXR1cm4gdGhlIHBhcmVudCdzIHByb2Nlc3MgaWQuCisKK0lmIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQsIFdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbAorcmV0dXJuIGl0cyBpZDsgb3RoZXJzIHN5c3RlbXMgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSAnaW5pdCcgcHJvY2VzcyAoMSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwcGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGU0OWM4ZTdhODczOGNkMiBpbnB1dD1lNjM3Y2I4NzUzOWMwMzBlXSovCiB7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHJldHVybiB3aW4zMl9nZXRwcGlkKCk7CkBAIC02NTQzLDEyICs2NDE1LDE1IEBACiAKIAogI2lmZGVmIEhBVkVfR0VUTE9HSU4KLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRsb2dpbl9fZG9jX18sCi0iZ2V0bG9naW4oKSAtPiBzdHJpbmdcblxuXAotUmV0dXJuIHRoZSBhY3R1YWwgbG9naW4gbmFtZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGxvZ2luCisKK1JldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRsb2dpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGxvZ2luX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzdlYmRiM2U0YjVkYWMxIGlucHV0PTJhMjFhYjFlOTE3MTYzZGZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC02NTgxLDc3ICs2NDU2LDU0IEBACiB9CiAjZW5kaWYgLyogSEFWRV9HRVRMT0dJTiAqLwogCisKICNpZmRlZiBIQVZFX0dFVFVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHVpZF9fZG9jX18sCi0iZ2V0dWlkKCkgLT4gdWlkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgdXNlciBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHVpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXR1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzYThiODk0Y2VmYjNmYTUgaW5wdXQ9YjUzYzhiMzVmMTEwYTUxNl0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21VaWQoZ2V0dWlkKCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRVSUQgKi8KIAogCi0jaWZkZWYgSEFWRV9LSUxMCi1QeURvY19TVFJWQVIocG9zaXhfa2lsbF9fZG9jX18sCi0ia2lsbChwaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHBpZF90IHBpZDsKLSAgICBpbnQgc2lnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpOmtpbGwiLCAmcGlkLCAmc2lnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGtpbGwocGlkLCBzaWcpID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfS0lMTFBHCi1QeURvY19TVFJWQVIocG9zaXhfa2lsbHBnX19kb2NfXywKLSJraWxscGcocGdpZCwgc2lnKVxuXG5cCi1LaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfa2lsbHBnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgc2lnOwotICAgIHBpZF90IHBnaWQ7Ci0gICAgLyogWFhYIHNvbWUgbWFuIHBhZ2VzIG1ha2UgdGhlIGBwZ2lkYCBwYXJhbWV0ZXIgYW4gaW50LCBvdGhlcnMKLSAgICAgICBhIHBpZF90LiBTaW5jZSBnZXRwZ3JwKCkgcmV0dXJucyBhIHBpZF90LCB3ZSBhc3N1bWUga2lsbHBnIHNob3VsZAotICAgICAgIHRha2UgdGhlIHNhbWUgdHlwZS4gTW9yZW92ZXIsIHBpZF90IGlzIGFsd2F5cyBhdCBsZWFzdCBhcyB3aWRlIGFzCi0gICAgICAgaW50IChlbHNlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGZhaWxzKSwgd2hpY2ggaXMgc2FmZS4gKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLCAmcGdpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChraWxscGcocGdpZCwgc2lnKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmCi0KICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfa2lsbF9fZG9jX18sCi0ia2lsbChwaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4iKTsKKyNkZWZpbmUgSEFWRV9LSUxMCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisjaWZkZWYgSEFWRV9LSUxMCisvKltjbGluaWMgaW5wdXRdCitvcy5raWxsCisKKyAgICBwaWQ6IHBpZF90CisgICAgc2lnbmFsOiBQeV9zc2l6ZV90CisgICAgLworCitLaWxsIGEgcHJvY2VzcyB3aXRoIGEgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeV9zc2l6ZV90IHNpZ25hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGY5MDdkZDAwYTgzYzI2IGlucHV0PTYxYTM2Yjg2Y2EyNzVhYjldKi8KKyNpZm5kZWYgTVNfV0lORE9XUworeworICAgIGlmIChraWxsKHBpZCwgKGludClzaWduYWwpID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbHNlIC8qICFNU19XSU5ET1dTICovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgRFdPUkQgc2lnLCBlcnI7CisgICAgRFdPUkQgc2lnID0gKERXT1JEKXNpZ25hbDsKKyAgICBEV09SRCBlcnI7CiAgICAgSEFORExFIGhhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJrOmtpbGwiLCAmcGlkLCAmc2lnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBDb25zb2xlIHByb2Nlc3NlcyB3aGljaCBzaGFyZSBhIGNvbW1vbiBjb25zb2xlIGNhbiBiZSBzZW50IENUUkwrQyBvcgogICAgICAgIENUUkwrQlJFQUsgZXZlbnRzLCBwcm92aWRlZCB0aGV5IGhhbmRsZSBzYWlkIGV2ZW50cy4gKi8KICAgICBpZiAoc2lnID09IENUUkxfQ19FVkVOVCB8fCBzaWcgPT0gQ1RSTF9CUkVBS19FVkVOVCkgewpAQCAtNjY4MiwxMDMgKzY1MzQsMTM4IEBACiAgICAgQ2xvc2VIYW5kbGUoaGFuZGxlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIEhBVkVfS0lMTCAqLworCisKKyNpZmRlZiBIQVZFX0tJTExQRworLypbY2xpbmljIGlucHV0XQorb3Mua2lsbHBnCisKKyAgICBwZ2lkOiBwaWRfdAorICAgIHNpZ25hbDogaW50CisgICAgLworCitLaWxsIGEgcHJvY2VzcyBncm91cCB3aXRoIGEgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfa2lsbHBnX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGdpZCwgaW50IHNpZ25hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDM0YTc2NmVmOTQ1ZjkzIGlucHV0PTM4YjU0NDllYjhmYWVjMTldKi8KK3sKKyAgICAvKiBYWFggc29tZSBtYW4gcGFnZXMgbWFrZSB0aGUgYHBnaWRgIHBhcmFtZXRlciBhbiBpbnQsIG90aGVycworICAgICAgIGEgcGlkX3QuIFNpbmNlIGdldHBncnAoKSByZXR1cm5zIGEgcGlkX3QsIHdlIGFzc3VtZSBraWxscGcgc2hvdWxkCisgICAgICAgdGFrZSB0aGUgc2FtZSB0eXBlLiBNb3Jlb3ZlciwgcGlkX3QgaXMgYWx3YXlzIGF0IGxlYXN0IGFzIHdpZGUgYXMKKyAgICAgICBpbnQgKGVsc2UgY29tcGlsYXRpb24gb2YgdGhpcyBtb2R1bGUgZmFpbHMpLCB3aGljaCBpcyBzYWZlLiAqLworICAgIGlmIChraWxscGcocGdpZCwgc2lnbmFsKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogSEFWRV9LSUxMUEcgKi8KKwogCiAjaWZkZWYgSEFWRV9QTE9DSwotCiAjaWZkZWYgSEFWRV9TWVNfTE9DS19ICiAjaW5jbHVkZSA8c3lzL2xvY2suaD4KICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfcGxvY2tfX2RvY19fLAotInBsb2NrKG9wKVxuXG5cCisvKltjbGluaWMgaW5wdXRdCitvcy5wbG9jaworICAgIG9wOiBpbnQKKyAgICAvCisKIExvY2sgcHJvZ3JhbSBzZWdtZW50cyBpbnRvIG1lbW9yeS4iKTsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Bsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bsb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjYjg1MWY4MWI5MTQ5ODQgaW5wdXQ9ZTZlNWUzNDhlMTUyNWY2MF0qLwogewotICAgIGludCBvcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cGxvY2siLCAmb3ApKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocGxvY2sob3ApID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BMT0NLICovCisKIAogI2lmZGVmIEhBVkVfU0VUVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0dWlkX19kb2NfXywKLSJzZXR1aWQodWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXR1aWQKKworICAgIHVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHVpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXR1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCB1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTQxZWE5YThkMWU1ZDU2NSBpbnB1dD1jOTIxYTMyODVhYTIyMjU2XSovCiB7Ci0gICAgdWlkX3QgdWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0dWlkKHVpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRVSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9TRVRFVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0ZXVpZF9fZG9jX18sCi0ic2V0ZXVpZCh1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRldWlkCisKKyAgICBldWlkOiB1aWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGV1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBldWlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2ZjRmNjgyM2E2NDhkNmQgaW5wdXQ9YmE5M2Q5MjdlNDc4MWFhOV0qLwogewotICAgIHVpZF90IGV1aWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGV1aWQoZXVpZCkgPCAwKSB7CisgICAgaWYgKHNldGV1aWQoZXVpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEVVSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRFR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0ZWdpZF9fZG9jX18sCi0ic2V0ZWdpZChnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0ZWdpZAorCisgICAgZWdpZDogZ2lkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0ZWdpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGVnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2EwOTRhNjlhMDgxYTYwZiBpbnB1dD00MDgwNTI2ZDBjY2Q2Y2UzXSovCiB7Ci0gICAgZ2lkX3QgZWdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2V0ZWdpZChlZ2lkKSA8IDApIHsKKyAgICBpZiAoc2V0ZWdpZChlZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VURUdJRCAqLwogCisKICNpZmRlZiBIQVZFX1NFVFJFVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmV1aWRfX2RvY19fLAotInNldHJldWlkKHJ1aWQsIGV1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmV1aWQKKworICAgIHJ1aWQ6IHVpZF90CisgICAgZXVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cmV1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldHJldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgcnVpZCwgdWlkX3QgZXVpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjkzOGMzZTczZDI3ZWM3IGlucHV0PTBjYTg5NzhkZTY2Mzg4MGNdKi8KIHsKLSAgICB1aWRfdCBydWlkLCBldWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHJldWlkKHJ1aWQsIGV1aWQpIDwgMCkgewogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9IGVsc2UgewpAQCAtNjc4OCw1MyArNjY3NSw2MiBAQAogfQogI2VuZGlmIC8qIEhBVkVfU0VUUkVVSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRSRUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlZ2lkX19kb2NfXywKLSJzZXRyZWdpZChyZ2lkLCBlZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZWdpZAorCisgICAgcmdpZDogZ2lkX3QKKyAgICBlZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0cmVnaWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldHJlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZ2lkX3QgcmdpZCwgZ2lkX3QgZWdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjE4ZjE4MzlhYmFiZTNkIGlucHV0PWM1OTQ5OWY3Mjg0NmRiNzhdKi8KIHsKLSAgICBnaWRfdCByZ2lkLCBlZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZWdpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldHJlZ2lkKHJnaWQsIGVnaWQpIDwgMCkgeworICAgIGlmIChzZXRyZWdpZChyZ2lkLCBlZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUUkVHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRnaWRfX2RvY19fLAotInNldGdpZChnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRnaWQKKyAgICBnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2V0Z2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NTZjYjQyYzZhYmQ5ZDg3IGlucHV0PTI3ZDMwYzQwNTkwNDVkYzZdKi8KIHsKLSAgICBnaWRfdCBnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRnaWQoZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEdJRCAqLwogCisKICNpZmRlZiBIQVZFX1NFVEdST1VQUwotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGdyb3Vwc19fZG9jX18sCi0ic2V0Z3JvdXBzKGxpc3QpXG5cblwKLVNldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldGdyb3VwcworCisgICAgZ3JvdXBzOiBvYmplY3QKKyAgICAvCisKK1NldCB0aGUgZ3JvdXBzIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gbGlzdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwcykKK29zX3NldGdyb3VwcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZ3JvdXBzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5NDVjMmUzY2M4MTdjNTggaW5wdXQ9ZmE3NDJjYTNkYWY4NWE3ZV0qLwogewogICAgIGludCBpLCBsZW47CiAgICAgZ2lkX3QgZ3JvdXBsaXN0W01BWF9HUk9VUFNdOwpAQCAtNjkzNSw4MyArNjgzMSwxMTQgQEAKIH0KICNlbmRpZiAvKiBIQVZFX1dBSVQzIHx8IEhBVkVfV0FJVDQgKi8KIAorCiAjaWZkZWYgSEFWRV9XQUlUMwotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXQzX19kb2NfXywKLSJ3YWl0MyhvcHRpb25zKSAtPiAocGlkLCBzdGF0dXMsIHJ1c2FnZSlcblxuXAotV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0MworCisgICAgb3B0aW9uczogaW50CitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXQzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTE4YWY0OTI0ZGM1NDk0NSBpbnB1dD04YWM0YzU2OTU2YjYxNzEwXSovCiB7CiAgICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOwogICAgIHN0cnVjdCBydXNhZ2UgcnU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6d2FpdDMiLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXQzKCZzdGF0dXMsIG9wdGlvbnMsICZydSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcGlkID0gd2FpdDMoJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChwaWQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocGlkIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCiAgICAgcmV0dXJuIHdhaXRfaGVscGVyKHBpZCwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUMyAqLwogCisKICNpZmRlZiBIQVZFX1dBSVQ0Ci1QeURvY19TVFJWQVIocG9zaXhfd2FpdDRfX2RvY19fLAotIndhaXQ0KHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzLCBydXNhZ2UpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorCitvcy53YWl0NAorCisgICAgcGlkOiBwaWRfdAorICAgIG9wdGlvbnM6IGludAorCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgc3BlY2lmaWMgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXQ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MTRmMTllNmZmMDFlMDk5IGlucHV0PWQxMWRlZWQwNzUwNjAwYmFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IG9wdGlvbnM7CisgICAgcGlkX3QgcmVzOwogICAgIHN0cnVjdCBydXNhZ2UgcnU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHdhaXQ0KHBpZCwgJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXQ0KHBpZCwgJnN0YXR1cywgb3B0aW9ucywgJnJ1KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgcmV0dXJuIHdhaXRfaGVscGVyKHBpZCwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CisgICAgcmV0dXJuIHdhaXRfaGVscGVyKHJlcywgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cyksICZydSk7CiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisKICNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCi1QeURvY19TVFJWQVIocG9zaXhfd2FpdGlkX19kb2NfXywKLSJ3YWl0aWQoaWR0eXBlLCBpZCwgb3B0aW9ucykgLT4gd2FpdGlkX3Jlc3VsdFxuXG5cCi1XYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuXG5cblwKLWlkdHlwZSBjYW4gYmUgUF9QSUQsIFBfUEdJRCBvciBQX0FMTC5cblwKLWlkIHNwZWNpZmllcyB0aGUgcGlkIHRvIHdhaXQgb24uXG5cCi1vcHRpb25zIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIFdFWElURUQsIFdTVE9QUEVEXG5cCi1vciBXQ09OVElOVUVEIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aCBXTk9IQU5HIG9yIFdOT1dBSVQuXG5cCi1SZXR1cm5zIGVpdGhlciB3YWl0aWRfcmVzdWx0IG9yIE5vbmUgaWYgV05PSEFORyBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZVxuXAotbm8gY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLndhaXRpZAorCisgICAgaWR0eXBlOiBpZHR5cGVfdAorICAgICAgICBNdXN0IGJlIG9uZSBvZiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLgorICAgIGlkOiBpZF90CisgICAgICAgIFRoZSBpZCB0byB3YWl0IG9uLgorICAgIG9wdGlvbnM6IGludAorICAgICAgICBDb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRAorICAgICAgICBvciBXQ09OVElOVUVEIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aCBXTk9IQU5HIG9yIFdOT1dBSVQuCisgICAgLworCitSZXR1cm5zIHRoZSByZXN1bHQgb2Ygd2FpdGluZyBmb3IgYSBwcm9jZXNzIG9yIHByb2Nlc3Nlcy4KKworUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaWR0eXBlX3QgaWR0eXBlLCBpZF90IGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YzAxOTI3NTBlMjJmYTJlIGlucHV0PWQ4ZTdmNzZlMDUyYjc5MjBdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGlkdHlwZV90IGlkdHlwZTsKLSAgICBpZF90IGlkOwotICAgIGludCBvcHRpb25zLCByZXM7CisgICAgaW50IHJlczsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBzaWdpbmZvX3Qgc2k7CiAgICAgc2kuc2lfcGlkID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHdhaXRpZChpZHR5cGUsIGlkLCAmc2ksIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICBpZiAoc2kuc2lfcGlkID09IDApCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNzAzMiw3OSArNjk1OSwxMTEgQEAKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pICovCiAKLSNpZmRlZiBIQVZFX1dBSVRQSUQKLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKLSJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzKVxuXG5cCi1XYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4iKTsKKworI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKQorLypbY2xpbmljIGlucHV0XQorb3Mud2FpdHBpZAorICAgIHBpZDogcGlkX3QKKyAgICBvcHRpb25zOiBpbnQKKyAgICAvCisKK1dhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBjaGlsZCBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cykKKworVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd2FpdHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZTM1OTMzNTNkNTRiMTViIGlucHV0PTBiZjE2NjZiODc1OGZkYTNdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IG9wdGlvbnM7CisgICAgcGlkX3QgcmVzOworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IHdhaXRwaWQocGlkLCAmc3RhdHVzLCBvcHRpb25zKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChwaWQgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0cGlkKHBpZCwgJnN0YXR1cywgb3B0aW9ucyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaSIsIFB5TG9uZ19Gcm9tUGlkKHBpZCksIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChyZXMpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CiB9Ci0KICNlbGlmIGRlZmluZWQoSEFWRV9DV0FJVCkKLQogLyogTVMgQyBoYXMgYSB2YXJpYW50IG9mIHdhaXRwaWQoKSB0aGF0J3MgdXNhYmxlIGZvciBtb3N0IHB1cnBvc2VzLiAqLwotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRwaWRfX2RvY19fLAotIndhaXRwaWQocGlkLCBvcHRpb25zKSAtPiAocGlkLCBzdGF0dXMgPDwgOClcblxuIgotIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBwcm9jZXNzLiAgb3B0aW9ucyBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0cGlkCisgICAgcGlkOiBQeV9pbnRwdHJfdAorICAgIG9wdGlvbnM6IGludAorICAgIC8KKworV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHByb2Nlc3M6CisgICAgKHBpZCwgc3RhdHVzIDw8IDgpCisKK1RoZSBvcHRpb25zIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXRwaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmMxZDUyMGRiMDE5NjI1ZiBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCiB7Ci0gICAgUHlfaW50cHRyX3QgcGlkOwotICAgIGludCBzdGF0dXMsIG9wdGlvbnM7CisgICAgaW50IHN0YXR1czsKKyAgICBQeV9pbnRwdHJfdCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiaTp3YWl0cGlkIiwgJnBpZCwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcGlkID0gX2N3YWl0KCZzdGF0dXMsIHBpZCwgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGlkID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gX2N3YWl0KCZzdGF0dXMsIHBpZCwgb3B0aW9ucyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICAvKiBzaGlmdCB0aGUgc3RhdHVzIGxlZnQgYSBieXRlIHNvIHRoaXMgaXMgbW9yZSBsaWtlIHRoZSBQT1NJWCB3YWl0cGlkICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiAiaSIsIHBpZCwgc3RhdHVzIDw8IDgpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKF9QeV9QQVJTRV9JTlRQVFIgImkiLCByZXMsIHN0YXR1cyA8PCA4KTsKIH0KLSNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgfHwgSEFWRV9DV0FJVCAqLworI2VuZGlmCisKIAogI2lmZGVmIEhBVkVfV0FJVAotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRfX2RvY19fLAotIndhaXQoKSAtPiAocGlkLCBzdGF0dXMpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdAorCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc193YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTdmNDk3ODM5M2UwNjU0IGlucHV0PTAzYjAxODJkNGE0NzAwY2VdKi8KIHsKICAgICBwaWRfdCBwaWQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcGlkID0gd2FpdCgmc3RhdHVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChwaWQgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBwaWQgPSB3YWl0KCZzdGF0dXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHBpZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChwaWQgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1dBSVQgKi8KIAogCiAjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC03MTIwLDYgKzcwNzksNyBAQAogCiAjaWZkZWYgSEFWRV9SRUFETElOSwogCisvKiBBQyAzLjU6IG1lcmdlIHdpbjMyIGFuZCBub3QgdG9nZXRoZXIgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CkBAIC03MTM0LDEyICs3MDk0LDcgQEAKICAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicmVhZGxpbmsiOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9SRUFETElOS0FUCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNzE2NSwyMyArNzEyMCw4NiBAQAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLQogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAorI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgd2NoYXJfdCAqcGF0aDsKKyAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOworICAgIERXT1JEIGlvX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisgICAgICAgIGludCBkaXJfZmQ7CisgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOworCisgICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUgPSBDcmVhdGVGaWxlVygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgT1BFTl9FWElTVElORywKKyAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKKyAgICAgICAgMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCisgICAgaW9fcmVzdWx0ID0gRGV2aWNlSW9Db250cm9sKAorICAgICAgICByZXBhcnNlX3BvaW50X2hhbmRsZSwKKyAgICAgICAgRlNDVExfR0VUX1JFUEFSU0VfUE9JTlQsCisgICAgICAgIDAsIDAsIC8qIGluIGJ1ZmZlciAqLworICAgICAgICB0YXJnZXRfYnVmZmVyLCBzaXplb2YodGFyZ2V0X2J1ZmZlciksCisgICAgICAgICZuX2J5dGVzX3JldHVybmVkLAorICAgICAgICAwIC8qIHdlJ3JlIG5vdCB1c2luZyBPVkVSTEFQUEVEX0lPICovCisgICAgICAgICk7CisgICAgQ2xvc2VIYW5kbGUocmVwYXJzZV9wb2ludF9oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaW9fcmVzdWx0PT0wKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKKworICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub3QgYSBzeW1ib2xpYyBsaW5rIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwcmludF9uYW1lID0gcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKworICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0OworCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwcmludF9uYW1lLAorICAgICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoLzIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKwogCiAjaWZkZWYgSEFWRV9TWU1MSU5LCi1QeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKLSAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAotICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAotICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCkBAIC03MzI3LDE4OSArNzM0NSwxMDIgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KICNlbmRpZgogCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5bWxpbmsKKyAgICBzcmM6IHBhdGhfdAorICAgIGRzdDogcGF0aF90CisgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeTogYm9vbCA9IEZhbHNlCisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdzeW1saW5rYXQnKT1Ob25lCisKKyMgInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC4KKwordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmUKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlcworICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKQorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTAxYjRiY2YzMjQwM2NjZCBpbnB1dD1lODIwZWM0NDcyNTQ3YmMzXSovCiB7Ci0gICAgcGF0aF90IHNyYzsKLSAgICBwYXRoX3QgZHN0OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIHJlc3VsdDsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9ICJzeW1saW5rIjsKLSAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOwotICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSAic3ltbGluayI7Ci0gICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgaWYgKCF3aW4zMl9jYW5fc3ltbGluaykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInN5bWJvbGljIGxpbmsgcHJpdmlsZWdlIG5vdCBoZWxkIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKLSAgICAgICAgICAgIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAotI2lmZGVmIEhBVkVfU1lNTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChkc3Qud2lkZSkgeworICAgIGlmIChkc3QtPndpZGUpIHsKICAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy53aWRlLCBkc3Qud2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyQShzcmMubmFycm93LCBkc3QubmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAKICNlbHNlCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWYgSEFWRV9TWU1MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBzeW1saW5rYXQoc3JjLm5hcnJvdywgZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy0+bmFycm93LCBkaXJfZmQsIGRzdC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIGdvdG8gZXhpdDsgLyogc2lsZW5jZSAidW51c2VkIGxhYmVsIiB3YXJuaW5nICovCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKLSAgICBwYXRoX2NsZWFudXAoJmRzdCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLQogI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwogCiAKLSNpZiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHdjaGFyX3QgKnBhdGg7Ci0gICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKLSAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOwotICAgIEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZTsKLQotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwotICAgIHdjaGFyX3QgKnByaW50X25hbWU7Ci0KLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlV8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogRmlyc3QgZ2V0IGEgaGFuZGxlIHRvIHRoZSByZXBhcnNlIHBvaW50ICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcGFyc2VfcG9pbnRfaGFuZGxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlR8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCi0gICAgICAgIDApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVwYXJzZV9wb2ludF9oYW5kbGU9PUlOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBOZXcgY2FsbCBEZXZpY2VJb0NvbnRyb2wgdG8gcmVhZCB0aGUgcmVwYXJzZSBwb2ludCAqLwotICAgIGlvX3Jlc3VsdCA9IERldmljZUlvQ29udHJvbCgKLSAgICAgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUsCi0gICAgICAgIEZTQ1RMX0dFVF9SRVBBUlNFX1BPSU5ULAotICAgICAgICAwLCAwLCAvKiBpbiBidWZmZXIgKi8KLSAgICAgICAgdGFyZ2V0X2J1ZmZlciwgc2l6ZW9mKHRhcmdldF9idWZmZXIpLAotICAgICAgICAmbl9ieXRlc19yZXR1cm5lZCwKLSAgICAgICAgMCAvKiB3ZSdyZSBub3QgdXNpbmcgT1ZFUkxBUFBFRF9JTyAqLwotICAgICAgICApOwotICAgIENsb3NlSGFuZGxlKHJlcGFyc2VfcG9pbnRfaGFuZGxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGlvX3Jlc3VsdD09MCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7Ci0KLSAgICBpZiAocmRiLT5SZXBhcnNlVGFnICE9IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspCi0gICAgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAibm90IGEgc3ltYm9saWMgbGluayIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcHJpbnRfbmFtZSA9IHJkYi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsKLSAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZU9mZnNldDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHJpbnRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZUxlbmd0aC8yKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRpbWVzX3Jlc3VsdF9maWVsZHNbXSA9IHsKQEAgLTc1NzUsMTUgKzc1MDYsMjYgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCi0idGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAotUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCi10aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCi0gICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZuZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECitzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisvKltjbGluaWMgaW5wdXRdCitvcy50aW1lcworCitSZXR1cm4gYSBjb2xsZWN0aW9uIGNvbnRhaW5pbmcgcHJvY2VzcyB0aW1pbmcgaW5mb3JtYXRpb24uCisKK1RoZSBvYmplY3QgcmV0dXJuZWQgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6CisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpCitBbGwgZmllbGRzIGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc190aW1lc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYwYTYzZWJlNmU2ZjA5MSBpbnB1dD0yYmY5ZGYzZDZhYjJlNDhiXSovCisjaWZkZWYgTVNfV0lORE9XUwogewogICAgIEZJTEVUSU1FIGNyZWF0ZSwgZXhpdCwga2VybmVsLCB1c2VyOwogICAgIEhBTkRMRSBoUHJvYzsKQEAgLTc2MDMsMTIgKzc1NDUsMTAgQEAKICAgICAgICAgKGRvdWJsZSkwLAogICAgICAgICAoZG91YmxlKTApOwogfQotI2Vsc2UgLyogTm90IFdpbmRvd3MgKi8KLSNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECi1zdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7Ci1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCisjZWxzZSAvKiBNU19XSU5ET1dTICovCiB7CisKKwogICAgIHN0cnVjdCB0bXMgdDsKICAgICBjbG9ja190IGM7CiAgICAgZXJybm8gPSAwOwpAQCAtNzYyMiwyMyArNzU2MiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWMgLyB0aWNrc19wZXJfc2Vjb25kKTsKIH0KLSNlbmRpZgotCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRTSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLAotImdldHNpZChwaWQpIC0+IHNpZFxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHNpZAorCisgICAgcGlkOiBwaWRfdAorICAgIC8KKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0c2lkKHBpZCkgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0c2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc0ZjgwYzBlNmJmYjM4IGlucHV0PWVlYjJiOTIzYTMwY2UwNGVdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHNpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzaWQgPSBnZXRzaWQocGlkKTsKICAgICBpZiAoc2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC03NjQ4LDUzICs3NTkwLDYwIEBACiAKIAogI2lmZGVmIEhBVkVfU0VUU0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0c2lkX19kb2NfXywKLSJzZXRzaWQoKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHNpZAorCitDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHNpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3NldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzk4ZmMxNTJhZTMyNzMzMCBpbnB1dD01ZmZmNDU4NThlMmYwNzc2XSovCiB7CiAgICAgaWYgKHNldHNpZCgpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUUEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHBnaWRfX2RvY19fLAotInNldHBnaWQocGlkLCBwZ3JwKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRwZ2lkKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRwZ2lkCisKKyAgICBwaWQ6IHBpZF90CisgICAgcGdycDogcGlkX3QKKyAgICAvCisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQocGlkLCBwZ3JwKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHBnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgcGlkX3QgcGdycCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MDc5YThlOTMyOTEyODQxIGlucHV0PWZjZWIzOTVlY2E1NzJlMWFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IHBncnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6c2V0cGdpZCIsICZwaWQsICZwZ3JwKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHBnaWQocGlkLCBwZ3JwKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFBHSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9UQ0dFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y2dldHBncnBfX2RvY19fLAotInRjZ2V0cGdycChmZCkgLT4gcGdpZFxuXG5cCi1SZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBnaXZlbiBieSBhIGZkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudGNnZXRwZ3JwCisKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y2dldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNnZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViYjZkYzVmMTExYzdkYzAgaW5wdXQ9N2Y2YzE4ZWFjMTBhZGE4Nl0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp0Y2dldHBncnAiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKKyAgICBwaWRfdCBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKICAgICBpZiAocGdpZCA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwZ2lkKTsKQEAgLTc3MDMsMjEgKzc2NTIsMjMgQEAKIAogCiAjaWZkZWYgSEFWRV9UQ1NFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y3NldHBncnBfX2RvY19fLAotInRjc2V0cGdycChmZCwgcGdpZClcblxuXAotU2V0IHRoZSBwcm9jZXNzIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGVybWluYWwgZ2l2ZW4gYnkgYSBmZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRjc2V0cGdycAorCisgICAgZmQ6IGludAorICAgIHBnaWQ6IHBpZF90CisgICAgLworCitTZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y3NldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNzZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBwaWRfdCBwZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlNGIwNTE3NzQ2MmNkMjIgaW5wdXQ9NWJkYzk5N2M2YTYxOTAyMF0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsICZmZCwgJnBnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodGNzZXRwZ3JwKGZkLCBwZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwogCkBAIC03NzI3LDE1OCArNzY3OCwxNjYgQEAKIGV4dGVybiBpbnQgX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfb3Blbl9fZG9jX18sCi0ib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLU9wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBoYW5kbGUgKGludGVnZXIpLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5vcGVuIC0+IGludAorICAgIHBhdGg6IHBhdGhfdAorICAgIGZsYWdzOiBpbnQKKyAgICBtb2RlOiBpbnQgPSAwbzc3NworICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nb3BlbmF0JykgPSBOb25lCisKKyMgIm9wZW4ocGF0aCwgZmxhZ3MsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK09wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIChpbnRlZ2VyKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3Nfb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwKKyAgICAgICAgICAgICBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3ZThjYzYzNTU5ZjVkZGQgaW5wdXQ9YWQ4NjIzYjI5YWNkMjkzNF0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBmbGFnczsKLSAgICBpbnQgbW9kZSA9IDA3Nzc7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCBhc3luY19lcnIgPSAwOworCiAjaWZkZWYgT19DTE9FWEVDCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9ICZfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VsaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzID0gTlVMTDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJvcGVuIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJmZsYWdzLCAmbW9kZSwKLSNpZmRlZiBIQVZFX09QRU5BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBmbGFncyB8PSBPX05PSU5IRVJJVDsKICNlbGlmIGRlZmluZWQoT19DTE9FWEVDKQogICAgIGZsYWdzIHw9IE9fQ0xPRVhFQzsKICNlbmRpZgogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgZmQgPSBfd29wZW4ocGF0aC53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9PUEVOQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICAgICAgZmQgPSBvcGVuYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGZkID0gb3BlbihwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aC0+bmFycm93LCBmbGFncywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgaWYgKGZkID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoLm9iamVjdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgaWYgKCFhc3luY19lcnIpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aC0+b2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIDAsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIHJldHVybiBmZDsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2Nsb3NlX19kb2NfXywKLSJjbG9zZShmZClcblxuXAotQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IgKGZvciBsb3cgbGV2ZWwgSU8pLiIpOwogCi0vKgotVGhlIHVuZGVyc2NvcmUgYXQgZW5kIG9mIGZ1bmN0aW9uIG5hbWUgYXZvaWRzIGEgbmFtZSBjbGFzaCB3aXRoIHRoZSBsaWJjCi1mdW5jdGlvbiBwb3NpeF9jbG9zZS4KLSovCisvKltjbGluaWMgaW5wdXRdCitvcy5jbG9zZQorCisgICAgZmQ6IGludAorCitDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nsb3NlXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00N2JmMmVhNTM2NDQ1YTI2IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKLSAgICBpbnQgZmQsIHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2xvc2UiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmVzOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KKyAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmVzID0gY2xvc2UoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jbG9zZXJhbmdlX19kb2NfXywKLSJjbG9zZXJhbmdlKGZkX2xvdywgZmRfaGlnaClcblxuXAotQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jbG9zZXJhbmdlCisKKyAgICBmZF9sb3c6IGludAorICAgIGZkX2hpZ2g6IGludAorICAgIC8KKworQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jbG9zZXJhbmdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2Nsb3NlcmFuZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmRfbG93LCBpbnQgZmRfaGlnaCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MGU2YWRiOTUyMjBiYTk2IGlucHV0PTU4NTVhM2QwNTNlYmQ0ZWNdKi8KIHsKLSAgICBpbnQgZmRfZnJvbSwgZmRfdG8sIGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpjbG9zZXJhbmdlIiwgJmZkX2Zyb20sICZmZF90bykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCBpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBmb3IgKGkgPSBmZF9mcm9tOyBpIDwgZmRfdG87IGkrKykKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZm9yIChpID0gZmRfbG93OyBpIDwgZmRfaGlnaDsgaSsrKQogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGkpKQogICAgICAgICAgICAgY2xvc2UoaSk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9kdXBfX2RvY19fLAotImR1cChmZCkgLT4gZmQyXG5cblwKLVJldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmR1cCAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2R1cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIGEgZHVwbGljYXRlIG9mIGEgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19kdXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRiYmFjOGM3NjUyZDA1ZSBpbnB1dD02ZjEwZjdlYTk3Zjc4NTJhXSovCiB7Ci0gICAgaW50IGZkOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmR1cCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZmQgPSBfUHlfZHVwKGZkKTsKLSAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CisgICAgcmV0dXJuIF9QeV9kdXAoZmQpOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9kdXAyX19kb2NfXywKLSJkdXAyKG9sZF9mZCwgbmV3X2ZkKVxuXG5cCi1EdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZHVwMgorICAgIGZkOiBpbnQKKyAgICBmZDI6IGludAorICAgIGluaGVyaXRhYmxlOiBib29sPVRydWUKKworRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2R1cDIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZHVwMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhMDk5ZDk1ODgxYTc5MjMgaW5wdXQ9NzZlOTZmNTExYmUwMzUyZl0qLwogewotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKLSAgICBpbnQgZmQsIGZkMjsKLSAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwogICAgIGludCByZXM7CiAjaWYgZGVmaW5lZChIQVZFX0RVUDMpICYmIFwKICAgICAhKGRlZmluZWQoSEFWRV9GQ05UTF9IKSAmJiBkZWZpbmVkKEZfRFVQMkZEX0NMT0VYRUMpKQpAQCAtNzg4NiwxNiArNzg0NSwxOCBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpfGk6ZHVwMiIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIV9QeVZlcmlmeV9mZF9kdXAyKGZkLCBmZDIpKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAorICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CisgICAgICogdGhlbiBoYXMgdG8gYmUgY2xvc2VkLiBTZWUgb3NfY2xvc2VfaW1wbCgpIGZvciB3aHkgd2UgZG9uJ3QgaGFuZGxlIEVJTlRSCisgICAgICogdXBvbiBjbG9zZSgpLCBhbmQgdGhlcmVmb3JlIGJlbG93LgorICAgICAqLwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlcyA9IGR1cDIoZmQsIGZkMik7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKQEAgLTc5NTAsMzAgKzc5MTEsMzQgQEAKIAogI2VuZGlmCiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogI2lmZGVmIEhBVkVfTE9DS0YKLVB5RG9jX1NUUlZBUihwb3NpeF9sb2NrZl9fZG9jX18sCi0ibG9ja2YoZmQsIGNtZCwgbGVuKVxuXG5cCi1BcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXG5cCi1mZCBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWNtZCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIC0gb25lIG9mIEZfTE9DSywgRl9UTE9DSywgRl9VTE9DSyBvclxuXAotRl9URVNULlxuXAotbGVuIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MubG9ja2YKKworICAgIGZkOiBpbnQKKyAgICAgICAgQW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAgY29tbWFuZDogaW50CisgICAgICAgIE9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3IgRl9URVNULgorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCBzdGFydGluZyBhdCB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAvCisKK0FwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29tbWFuZCwgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZmY3NzhmOWUyZmJmMWIgaW5wdXQ9NjVkYTQxZDIxMDZlOWI3OV0qLwogewotICAgIGludCBmZCwgY21kLCByZXM7Ci0gICAgb2ZmX3QgbGVuOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCi0gICAgICAgICAgICAmZmQsICZjbWQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCByZXM7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbG9ja2YoZmQsIGNtZCwgbGVuKTsKKyAgICByZXMgPSBsb2NrZihmZCwgY29tbWFuZCwgbGVuZ3RoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlcyA8IDApCkBAIC03OTgxLDk1ICs3OTQ2LDEwNSBAQAogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xPQ0tGICovCiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xzZWVrX19kb2NfXywKLSJsc2VlayhmZCwgcG9zLCBob3cpIC0+IG5ld3Bvc1xuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgYSBmaWxlIGRlc2NyaXB0b3IuXG5cCi1SZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gYnl0ZXMsIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxzZWVrIC0+IFB5X29mZl90CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc2VlayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIHBvc2l0aW9uOiBQeV9vZmZfdAorICAgIGhvdzogaW50CisgICAgLworCitTZXQgdGhlIHBvc2l0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCisKK1JldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBudW1iZXIgb2YgYnl0ZXMKK3JlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9vZmZfdAorb3NfbHNlZWtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IHBvc2l0aW9uLCBpbnQgaG93KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZDRhYjk2ZDY2NDk5OGMgaW5wdXQ9OTAyNjU0YWQzZjk2YTZkM10qLwogewotICAgIGludCBmZCwgaG93OwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQWV9MT05HX0xPTkcgcG9zLCByZXM7Ci0jZWxzZQotICAgIG9mZl90IHBvcywgcmVzOwotI2VuZGlmCi0gICAgUHlPYmplY3QgKnBvc29iajsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPaTpsc2VlayIsICZmZCwgJnBvc29iaiwgJmhvdykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X29mZl90IHJlc3VsdDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogI2lmZGVmIFNFRUtfU0VUCiAgICAgLyogVHVybiAwLCAxLCAyIGludG8gU0VFS197U0VULENVUixFTkR9ICovCiAgICAgc3dpdGNoIChob3cpIHsKLSAgICBjYXNlIDA6IGhvdyA9IFNFRUtfU0VUOyBicmVhazsKLSAgICBjYXNlIDE6IGhvdyA9IFNFRUtfQ1VSOyBicmVhazsKLSAgICBjYXNlIDI6IGhvdyA9IFNFRUtfRU5EOyBicmVhazsKKyAgICAgICAgY2FzZSAwOiBob3cgPSBTRUVLX1NFVDsgYnJlYWs7CisgICAgICAgIGNhc2UgMTogaG93ID0gU0VFS19DVVI7IGJyZWFrOworICAgICAgICBjYXNlIDI6IGhvdyA9IFNFRUtfRU5EOyBicmVhazsKICAgICB9CiAjZW5kaWYgLyogU0VFS19FTkQgKi8KIAotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwotI2Vsc2UKLSAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwotI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCBob3cpOworICAgIHJlc3VsdCA9IF9sc2Vla2k2NChmZCwgcG9zaXRpb24sIGhvdyk7CiAjZWxzZQotICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIGhvdyk7CisgICAgcmVzdWx0ID0gbHNlZWsoZmQsIHBvc2l0aW9uLCBob3cpOwogI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKIAotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOwotI2Vsc2UKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhyZXMpOwotI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfcmVhZF9fZG9jX18sCi0icmVhZChmZCwgYnVmZmVyc2l6ZSkgLT4gYnl0ZXNcblxuXAotUmVhZCBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlYWQKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBQeV9zc2l6ZV90CisgICAgLworCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19yZWFkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9zc2l6ZV90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTI0ZjQ0MTc4NDU1ZThiIGlucHV0PTFkZjJlYWEyN2MwYmYxZDNdKi8KIHsKLSAgICBpbnQgZmQsIHNpemU7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpyZWFkIiwgJmZkLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplIDwgMCkgeworCisgICAgaWYgKGxlbmd0aCA8IDApIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgc2l6ZSk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCisgICAgaWYgKGxlbmd0aCA+IElOVF9NQVgpCisgICAgICAgIGxlbmd0aCA9IElOVF9NQVg7CisjZW5kaWYKKworICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBsZW5ndGgpOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisKKyAgICBuID0gX1B5X3JlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIGxlbmd0aCk7CisgICAgaWYgKG4gPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChuIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQotICAgIGlmIChuICE9IHNpemUpCisKKyAgICBpZiAobiAhPSBsZW5ndGgpCiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKKwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKQEAgLTgxMzEsMTIwICs4MTA2LDEzNSBAQAogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1JFQURWCi1QeURvY19TVFJWQVIocG9zaXhfcmVhZHZfX2RvY19fLAotInJlYWR2KGZkLCBidWZmZXJzKSAtPiBieXRlc3JlYWRcblxuXAotUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYSBudW1iZXIgb2YgbXV0YWJsZSwgYnl0ZXMtbGlrZVxuXAotb2JqZWN0cyAoXCJidWZmZXJzXCIpLiAgcmVhZHYgd2lsbCB0cmFuc2ZlciBkYXRhIGludG8gZWFjaCBidWZmZXJcblwKLXVudGlsIGl0IGlzIGZ1bGwgYW5kIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlIHNlcXVlbmNlXG5cCi10byBob2xkIHRoZSByZXN0IG9mIHRoZSBkYXRhLlxuXG5cCi1yZWFkdiByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCAod2hpY2ggbWF5IGJlIGxlc3MgdGhhblxuXAotdGhlIHRvdGFsIGNhcGFjaXR5IG9mIGFsbCB0aGUgYnVmZmVycy4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWR2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyNpZmRlZiBIQVZFX1JFQURWCisvKltjbGluaWMgaW5wdXRdCitvcy5yZWFkdiAtPiBQeV9zc2l6ZV90CisKKyAgICBmZDogaW50CisgICAgYnVmZmVyczogb2JqZWN0CisgICAgLworCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgZmQgaW50byBhbiBpdGVyYWJsZSBvZiBidWZmZXJzLgorCitUaGUgYnVmZmVycyBzaG91bGQgYmUgbXV0YWJsZSBidWZmZXJzIGFjY2VwdGluZyBieXRlcy4KK3JlYWR2IHdpbGwgdHJhbnNmZXIgZGF0YSBpbnRvIGVhY2ggYnVmZmVyIHVudGlsIGl0IGlzIGZ1bGwKK2FuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZSB0byBob2xkCit0aGUgcmVzdCBvZiB0aGUgZGF0YS4KKworcmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsCit3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc19yZWFkdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDBmYzU2ZmYxODAwMDU5ZiBpbnB1dD1lNjc5ZWI1ZGJmYTAzNTdkXSovCiB7Ci0gICAgaW50IGZkLCBjbnQ7CisgICAgaW50IGNudDsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlPYmplY3QgKnNlcTsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKICAgICBQeV9idWZmZXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLCAmZmQsICZzZXEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhidWZmZXJzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgInJlYWR2KCkgYXJnIDIgbXVzdCBiZSBhIHNlcXVlbmNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOwogCi0gICAgaWYgKGlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfV1JJVEFCTEUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKGJ1ZmZlcnMpOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkdihmZCwgaW92LCBjbnQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGlvdl9zZXR1cCgmaW92LCAmYnVmLCBidWZmZXJzLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAKICAgICBpb3ZfY2xlYW51cChpb3YsIGJ1ZiwgY250KTsKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBpZiAoIWFzeW5jX2VycikKKyAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOworICAgIHJldHVybiBuOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9SRUFEViAqLworCiAKICNpZmRlZiBIQVZFX1BSRUFECi1QeURvY19TVFJWQVIocG9zaXhfcHJlYWRfX2RvY19fLAotInByZWFkKGZkLCBidWZmZXJzaXplLCBvZmZzZXQpIC0+IHN0cmluZ1xuXG5cCi1SZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBhdCBhIHBvc2l0aW9uIG9mIG9mZnNldC4gSXQgd2lsbCByZWFkIHVwXG5cCi10byBidWZmZXJzaXplIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLiIpOworLypbY2xpbmljIGlucHV0XQorIyBUT0RPIGxlbmd0aCBzaG91bGQgYmUgc2l6ZV90ISAgYnV0IFB5dGhvbiBkb2Vzbid0IHN1cHBvcnQgcGFyc2luZyBzaXplX3QgeWV0Lgorb3MucHJlYWQKKworICAgIGZkOiBpbnQKKyAgICBsZW5ndGg6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICAvCisKK1JlYWQgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LgorCitSZWFkIGxlbmd0aCBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20KK3RoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGxlbmd0aCwgUHlfb2ZmX3Qgb2Zmc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwZDFmZWQ4N2Y2OGZhMzMgaW5wdXQ9MDg0OTQ4ZGNiYWEzNWQ0Y10qLwogewotICAgIGludCBmZCwgc2l6ZTsKLSAgICBvZmZfdCBvZmZzZXQ7CiAgICAgUHlfc3NpemVfdCBuOworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOnByZWFkIiwgJmZkLCAmc2l6ZSwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICBpZiAobGVuZ3RoIDwgMCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfQotICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBzaXplKTsKKyAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIHNpemUsIG9mZnNldCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIG4gPSBwcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgbGVuZ3RoLCBvZmZzZXQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKwogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICB9Ci0gICAgaWYgKG4gIT0gc2l6ZSkKKyAgICBpZiAobiAhPSBsZW5ndGgpCiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QUkVBRCAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfd3JpdGVfX2RvY19fLAotIndyaXRlKGZkLCBkYXRhKSAtPiBieXRlc3dyaXR0ZW5cblxuXAotV3JpdGUgYnl0ZXMgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy53cml0ZSAtPiBQeV9zc2l6ZV90CisKKyAgICBmZDogaW50CisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmRhdGEpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTg4NDVjOTNjOWVlMWRkYSBpbnB1dD0zMjA3ZTI4OTYzMjM0ZjNjXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgaW50IGZkOwotICAgIFB5X3NzaXplX3Qgc2l6ZSwgbGVuOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6d3JpdGUiLCAmZmQsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICBzaXplID0gd3JpdGUoZmQsIHBidWYuYnVmLCAoaW50KWxlbik7Ci0jZWxzZQotICAgIHNpemUgPSB3cml0ZShmZCwgcGJ1Zi5idWYsIGxlbik7Ci0jZW5kaWYKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKKyAgICByZXR1cm4gX1B5X3dyaXRlKGZkLCBkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKICNpZmRlZiBIQVZFX1NFTkRGSUxFCkBAIC04MjU0LDExICs4MjQ0LDEzIEBACiAgICAgICAgICAgICAtPiBieXRlc3dyaXR0ZW5cblwKIENvcHkgbmJ5dGVzIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGluIHRvIGZpbGUgZGVzY3JpcHRvciBvdXQuIik7CiAKKy8qIEFDIDMuNTogZG9uJ3QgYm90aGVyIGNvbnZlcnRpbmcsIGhhcyBvcHRpb25hbCBncm91cCovCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfc2VuZGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewogICAgIGludCBpbiwgb3V0OwogICAgIFB5X3NzaXplX3QgcmV0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIG9mZl90IG9mZnNldDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCkBAIC04Mjc5LDEwICs4MjcxLDEwIEBACiAKICNpZmRlZiBfX0FQUExFX18KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKLSAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmc2J5dGVzLAogI2Vsc2UKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mbnxPT2k6c2VuZGZpbGUiLAotICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsICZsZW4sCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgJmxlbiwKICNlbmRpZgogICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTgzMjEsMTMgKzgzMTMsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgX19BUFBMRV9fCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKICNlbHNlCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworICAgICAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsIGxlbiwgJnNmLCAmc2J5dGVzLCBmbGFncyk7CiAjZW5kaWYKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICBpZiAoc2YuaGVhZGVycyAhPSBOVUxMKQogICAgICAgICBpb3ZfY2xlYW51cChzZi5oZWFkZXJzLCBoYnVmLCBzZi5oZHJfY250KTsKQEAgLTgzNDYsNyArODM0Miw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICB9CiAgICAgZ290byBkb25lOwogCkBAIC04MzY3LDc2ICs4MzYzLDEwNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICNpZmRlZiBsaW51eAogICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sIE5VTEwsIGNvdW50KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZG8geworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJuIiwgcmV0KTsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoIV9wYXJzZV9vZmZfdChvZmZvYmosICZvZmZzZXQpKQorICAgIGlmICghUHlfb2ZmX3RfY29udmVydGVyKG9mZm9iaiwgJm9mZnNldCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOwogI2VuZGlmCiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdF9fZG9jX18sCi0iZnN0YXQoZmQpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZnN0YXQKKworICAgIGZkIDogaW50CisKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCisKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZzdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3MWZlOThiZjA0MmI2MjYgaW5wdXQ9MjdlMGUwZWJiZTU2MDBjOV0qLwogewotICAgIGludCBmZDsKICAgICBTVFJVQ1RfU1RBVCBzdDsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmc3RhdCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBGU1RBVChmZCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAocmVzICE9IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfaXNhdHR5X19kb2NfXywKLSJpc2F0dHkoZmQpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciAnZmQnIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yXG5cCi1jb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfaXNhdHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmlzYXR0eSAtPiBib29sCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLgorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yCitjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19pc2F0dHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWNlYzlkM2MyOWQxNmQzMyBpbnB1dD0wOGNlOTRhYTFlYWY3YjVlXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTppc2F0dHkiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGlzYXR0eShmZCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgcmV0dXJuX3ZhbHVlID0gaXNhdHR5KGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfUElQRQotUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGVfX2RvY19fLAotInBpcGUoKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBpcGUKKworQ3JlYXRlIGEgcGlwZS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfcGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmIwY2QzZjg2OGVjM2M0MCBpbnB1dD0wMjUzNWU4YzhmYTZjNGQ0XSovCiB7CiAgICAgaW50IGZkc1syXTsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04NTA0LDI1ICs4NTMwLDMwIEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCisKICNpZmRlZiBIQVZFX1BJUEUyCi1QeURvY19TVFJWQVIocG9zaXhfcGlwZTJfX2RvY19fLAotInBpcGUyKGZsYWdzKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuXAotZmxhZ3MgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczpcblwKLU9fTk9OQkxPQ0ssIE9fQ0xPRVhFQy5cblwKLSIpOworLypbY2xpbmljIGlucHV0XQorb3MucGlwZTIKKworICAgIGZsYWdzOiBpbnQKKyAgICAvCisKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCisKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CitPX05PTkJMT0NLLCBPX0NMT0VYRUMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK29zX3BpcGUyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxNWI2MDc1ZDBjNmIyZTcgaW5wdXQ9ZjI2MWI2ZTdlNjNjNjgxN10qLwogewotICAgIGludCBmbGFnczsKICAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7CiAKLSAgICBmbGFncyA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKLSAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXMgPSBwaXBlMihmZHMsIGZsYWdzKTsKICAgICBpZiAocmVzICE9IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtODUzMCwzMDYgKzg1NjEsMzQwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9QSVBFMiAqLwogCi0jaWZkZWYgSEFWRV9XUklURVYKLVB5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAotIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHRoZSBjb250ZW50cyBvZiAqYnVmZmVycyogdG8gZmlsZSBkZXNjcmlwdG9yICpmZCouICpidWZmZXJzKlxuXAotbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy5cblxuXAotd3JpdGV2IHdyaXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBvYmplY3QgdG8gdGhlIGZpbGUgZGVzY3JpcHRvclxuXAotYW5kIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd3JpdGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyNpZmRlZiBIQVZFX1dSSVRFVgorLypbY2xpbmljIGlucHV0XQorb3Mud3JpdGV2IC0+IFB5X3NzaXplX3QKKyAgICBmZDogaW50CisgICAgYnVmZmVyczogb2JqZWN0CisgICAgLworCitJdGVyYXRlIG92ZXIgYnVmZmVycywgYW5kIHdyaXRlIHRoZSBjb250ZW50cyBvZiBlYWNoIHRvIGEgZmlsZSBkZXNjcmlwdG9yLgorCitSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK2J1ZmZlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRldl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTQ4OTI1ZGJmMmQ1YzIzOCBpbnB1dD01YjhkMTdmZTQxODlkMmZlXSovCiB7Ci0gICAgaW50IGZkLCBjbnQ7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgUHlPYmplY3QgKnNlcTsKKyAgICBpbnQgY250OworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIHN0cnVjdCBpb3ZlYyAqaW92OwogICAgIFB5X2J1ZmZlciAqYnVmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwgJmZkLCAmc2VxKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhidWZmZXJzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKKyAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoYnVmZmVycyk7CiAKLSAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIHNlcSwgY250LCBQeUJVRl9TSU1QTEUpIDwgMCkgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIGJ1ZmZlcnMsIGNudCwgUHlCVUZfU0lNUExFKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXN1bHQgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKIAogICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAocmVzdWx0IDwgMCAmJiAhYXN5bmNfZXJyKQorICAgICAgICBwb3NpeF9lcnJvcigpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1BXUklURQotUHlEb2NfU1RSVkFSKHBvc2l4X3B3cml0ZV9fZG9jX18sCi0icHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHN0cmluZyB0byBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGZyb20gb2Zmc2V0LCBsZWF2aW5nIHRoZSBmaWxlXG5cCi1vZmZzZXQgdW5jaGFuZ2VkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHdyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBpbnQgZmQ7Ci0gICAgb2ZmX3Qgb2Zmc2V0OwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwgJmZkLCAmcGJ1ZiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc2l6ZSA9IHB3cml0ZShmZCwgcGJ1Zi5idWYsIChzaXplX3QpcGJ1Zi5sZW4sIG9mZnNldCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfTUtGSUZPCi1QeURvY19TVFJWQVIocG9zaXhfbWtmaWZvX19kb2NfXywKLSJta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBtb2RlID0gMDY2NjsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtmaWZvIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsCi0jaWZkZWYgSEFWRV9NS0ZJRk9BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX01LRklGT0FUCi0gICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gbWtmaWZvYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IG1rZmlmbyhwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi1QeURvY19TVFJWQVIocG9zaXhfbWtub2RfX2RvY19fLAotIm1rbm9kKGZpbGVuYW1lLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKVxuXAotbmFtZWQgZmlsZW5hbWUuIG1vZGUgc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlXG5cCi10eXBlIG9mIG5vZGUgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mXG5cCi1TX0lGUkVHLCBTX0lGQ0hSLCBTX0lGQkxLLCBhbmQgU19JRklGTy4gRm9yIFNfSUZDSFIgYW5kIFNfSUZCTEssXG5cCi1kZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZ1xuXAotb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBpbnQgbW9kZSA9IDA2NjY7Ci0gICAgZGV2X3QgZGV2aWNlID0gMDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpTyYkTyY6bWtub2QiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsCi0jaWZkZWYgSEFWRV9NS05PREFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmZGVmIEhBVkVfTUtOT0RBVAotICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwotUHlEb2NfU1RSVkFSKHBvc2l4X21ham9yX19kb2NfXywKLSJtYWpvcihkZXZpY2UpIC0+IG1ham9yIG51bWJlclxuXAotRXh0cmFjdHMgYSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21ham9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBkZXZfdCBkZXZpY2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyltYWpvcihkZXZpY2UpKTsKLX0KLQotUHlEb2NfU1RSVkFSKHBvc2l4X21pbm9yX19kb2NfXywKLSJtaW5vcihkZXZpY2UpIC0+IG1pbm9yIG51bWJlclxuXAotRXh0cmFjdHMgYSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21pbm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBkZXZfdCBkZXZpY2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyltaW5vcihkZXZpY2UpKTsKLX0KLQotUHlEb2NfU1RSVkFSKHBvc2l4X21ha2VkZXZfX2RvY19fLAotIm1ha2VkZXYobWFqb3IsIG1pbm9yKSAtPiBkZXZpY2UgbnVtYmVyXG5cCi1Db21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21ha2VkZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBtYWpvciwgbWlub3I7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTptYWtlZGV2IiwgJm1ham9yLCAmbWlub3IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tRGV2KG1ha2VkZXYobWFqb3IsIG1pbm9yKSk7Ci19Ci0jZW5kaWYgLyogZGV2aWNlIG1hY3JvcyAqLwotCi0KLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotUHlEb2NfU1RSVkFSKHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX18sCi0iZnRydW5jYXRlKGZkLCBsZW5ndGgpXG5cblwKLVRydW5jYXRlIGEgZmlsZSB0byBhIHNwZWNpZmllZCBsZW5ndGguIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBmZDsKLSAgICBvZmZfdCBsZW5ndGg7Ci0gICAgaW50IHJlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsICZmZCwgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZnRydW5jYXRlKGZkLCBsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9UUlVOQ0FURQotUHlEb2NfU1RSVkFSKHBvc2l4X3RydW5jYXRlX19kb2NfXywKLSJ0cnVuY2F0ZShwYXRoLCBsZW5ndGgpXG5cblwKLVRydW5jYXRlIHRoZSBmaWxlIGdpdmVuIGJ5IHBhdGggdG8gbGVuZ3RoIGJ5dGVzLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90cnVuY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgb2ZmX3QgbGVuZ3RoOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInRydW5jYXRlIjsKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyc2Vfb2ZmX3QsICZsZW5ndGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXMgPSBmdHJ1bmNhdGUocGF0aC5mZCwgbGVuZ3RoKTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmVzID0gdHJ1bmNhdGUocGF0aC5uYXJyb3csIGxlbmd0aCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmVzdWx0ID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmIC8qIEhBVkVfV1JJVEVWICovCisKKworI2lmZGVmIEhBVkVfUFdSSVRFCisvKltjbGluaWMgaW5wdXRdCitvcy5wd3JpdGUgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgb2Zmc2V0OiBQeV9vZmZfdAorICAgIC8KKworV3JpdGUgYnl0ZXMgdG8gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC4KKworV3JpdGUgYnVmZmVyIHRvIGZkLCBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mCit0aGUgZmlsZS4gIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGUuICBEb2VzIG5vdCBjaGFuZ2UgdGhlCitjdXJyZW50IGZpbGUgb2Zmc2V0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcHdyaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9idWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgIFB5X29mZl90IG9mZnNldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05M2FhYmRiNDBlMTdkMzI1IGlucHV0PTE5OTAzZjFiM2RkMjYzNzddKi8KK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHNpemUgPSBwd3JpdGUoZmQsIGJ1ZmZlci0+YnVmLCAoc2l6ZV90KWJ1ZmZlci0+bGVuLCBvZmZzZXQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHNpemUgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKworICAgIGlmIChzaXplIDwgMCAmJiAhYXN5bmNfZXJyKQorICAgICAgICBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBzaXplOworfQorI2VuZGlmIC8qIEhBVkVfUFdSSVRFICovCisKKworI2lmZGVmIEhBVkVfTUtGSUZPCisvKltjbGluaWMgaW5wdXRdCitvcy5ta2ZpZm8KKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludD0wbzY2NgorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nbWtmaWZvYXQnKT1Ob25lCisKK0NyZWF0ZSBhICJmaWZvIiAoYSBQT1NJWCBuYW1lZCBwaXBlKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rZmlmb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY1ZjVlNzJjNjMwMDQ5YSBpbnB1dD03MzAzMmU5OGEzNmUwZTE5XSovCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rZmlmb2F0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCisgICAgICAgICAgICByZXN1bHQgPSBta2ZpZm8ocGF0aC0+bmFycm93LCBtb2RlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfTUtGSUZPICovCisKKworI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCisvKltjbGluaWMgaW5wdXRdCitvcy5ta25vZAorCisgICAgcGF0aDogcGF0aF90CisgICAgbW9kZTogaW50PTBvNjAwCisgICAgZGV2aWNlOiBkZXZfdD0wCisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdta25vZGF0Jyk9Tm9uZQorCitDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKworQ3JlYXRlIGEgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0gKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkKK2F0IHBhdGguICBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZQordHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZgorU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uICBJZiBTX0lGQ0hSIG9yIFNfSUZCTEsgaXMgc2V0IG9uIG1vZGUsCitkZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZworb3MubWFrZWRldigpKS4gIE90aGVyd2lzZSBkZXZpY2UgaXMgaWdub3JlZC4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rbm9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgZGV2X3QgZGV2aWNlLAorICAgICAgICAgICAgICBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxNTFhOGE5Zjc1NGQyNzIgaW5wdXQ9ZWU0NDUzMTU1MWE0ZDgzYl0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIG1vZGUsIGRldmljZSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC0+bmFycm93LCBtb2RlLCBkZXZpY2UpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikgKi8KKworCisjaWZkZWYgSEFWRV9ERVZJQ0VfTUFDUk9TCisvKltjbGluaWMgaW5wdXRdCitvcy5tYWpvciAtPiB1bnNpZ25lZF9pbnQKKworICAgIGRldmljZTogZGV2X3QKKyAgICAvCisKK0V4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21ham9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNTU2OTNhYjQ5YmFjMzQgaW5wdXQ9MWUxNmE0ZDMwYzRkNDQ2Ml0qLworeworICAgIHJldHVybiBtYWpvcihkZXZpY2UpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm1pbm9yIC0+IHVuc2lnbmVkX2ludAorCisgICAgZGV2aWNlOiBkZXZfdAorICAgIC8KKworRXh0cmFjdHMgYSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHVuc2lnbmVkIGludAorb3NfbWlub3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkZXZfdCBkZXZpY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2NzIxOWViZjI3NGUyNyBpbnB1dD0wODQyYzZkMjNmMjRjNjVlXSovCit7CisgICAgcmV0dXJuIG1pbm9yKGRldmljZSk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorb3MubWFrZWRldiAtPiBkZXZfdAorCisgICAgbWFqb3I6IGludAorICAgIG1pbm9yOiBpbnQKKyAgICAvCisKK0NvbXBvc2VzIGEgcmF3IGRldmljZSBudW1iZXIgZnJvbSB0aGUgbWFqb3IgYW5kIG1pbm9yIGRldmljZSBudW1iZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgZGV2X3QKK29zX21ha2VkZXZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbWFqb3IsIGludCBtaW5vcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2I2MjY0MzUyNDM3NjYwIGlucHV0PTRiOWZkOGZjNzNjYmU0OGZdKi8KK3sKKyAgICByZXR1cm4gbWFrZWRldihtYWpvciwgbWlub3IpOworfQorI2VuZGlmIC8qIEhBVkVfREVWSUNFX01BQ1JPUyAqLworCisKKyNpZiBkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUworLypbY2xpbmljIGlucHV0XQorb3MuZnRydW5jYXRlCisKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBQeV9vZmZfdAorICAgIC8KKworVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgZmlsZSBkZXNjcmlwdG9yLCB0byBhIHNwZWNpZmljIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2NjZmNDAxZDc2YmY4MzQgaW5wdXQ9NjNiNDM2NDFlNTI4MThmMl0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHJlc3VsdCA9IF9jaHNpemVfcyhmZCwgbGVuZ3RoKTsKKyNlbHNlCisgICAgICAgIHJlc3VsdCA9IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKTsKKyNlbmRpZgorICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFIHx8IE1TX1dJTkRPV1MgKi8KKworCisjaWYgZGVmaW5lZCBIQVZFX1RSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUworLypbY2xpbmljIGlucHV0XQorb3MudHJ1bmNhdGUKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GVFJVTkNBVEUnKQorICAgIGxlbmd0aDogUHlfb2ZmX3QKKworVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgcGF0aCwgdG8gYSBzcGVjaWZpYyBsZW5ndGguCisKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHJ1bmNhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNjBhOWUwODM3MGU5ZTJlIGlucHV0PTc3MjI5Y2YwYjUwYTliNzddKi8KK3sKKyAgICBpbnQgcmVzdWx0OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZmQ7CisjZW5kaWYKKworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG9zX2Z0cnVuY2F0ZV9pbXBsKG1vZHVsZSwgcGF0aC0+ZmQsIGxlbmd0aCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBlbHNlCisgICAgICAgIGZkID0gX29wZW4ocGF0aC0+bmFycm93LCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOworICAgIGlmIChmZCA8IDApCisgICAgICAgIHJlc3VsdCA9IC0xOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBfY2hzaXplX3MoZmQsIGxlbmd0aCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICBlcnJubyA9IHJlc3VsdDsKKyAgICB9CisjZWxzZQorICAgIHJlc3VsdCA9IHRydW5jYXRlKHBhdGgtPm5hcnJvdywgbGVuZ3RoKTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX1RSVU5DQVRFIHx8IE1TX1dJTkRPV1MgKi8KKwogCiAvKiBJc3N1ZSAjMjIzOTY6IE9uIDMyLWJpdCBBSVggcGxhdGZvcm0sIHRoZSBwcm90b3R5cGVzIG9mIG9zLnBvc2l4X2ZhZHZpc2UoKQogICAgYW5kIG9zLnBvc2l4X2ZhbGxvY2F0ZSgpIGluIHN5c3RlbSBoZWFkZXJzIGFyZSB3cm9uZyBpZiBfTEFSR0VfRklMRVMgaXMKQEAgLTg4MzksMTg2ICs4OTA0LDIxMSBAQAogIyAgZGVmaW5lIFBPU0lYX0ZBRFZJU0VfQUlYX0JVRwogI2VuZGlmCiAKKwogI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLVB5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19fLAotInBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pXG5cblwKLUVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZFxuXAotc3RhcnRpbmcgZnJvbSBvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBvc2l4X2ZhbGxvY2F0ZQorCisgICAgZmQ6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgLworCitFbnN1cmUgYSBmaWxlIGhhcyBhbGxvY2F0ZWQgYXQgbGVhc3QgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBieXRlcyBvbiBkaXNrLgorCitFbnN1cmUgdGhhdCB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmQgZW5jb21wYXNzZXMgYSByYW5nZSBvZiBieXRlcworc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcG9zaXhfZmFsbG9jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNmY4N2E4Yzc1MWUxYjQgaW5wdXQ9ZDdhMmVmMGFiMmNhNTJmYl0qLwogewotICAgIG9mZl90IGxlbiwgb2Zmc2V0OwotICAgIGludCByZXMsIGZkOworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8mOnBvc2l4X2ZhbGxvY2F0ZSIsCi0gICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BPU0lYX0ZBTExPQ0FURSkgJiYgIVBPU0lYX0ZBRFZJU0VfQUlYX0JVRyAqLworCiAKICNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKQotUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19fLAotInBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpXG5cblwKLUFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmdcblwKLXRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuXAotVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG5cCi1vZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy5cblwKLWFkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcblwKLVBPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQgb3JcblwKLVBPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5wb3NpeF9mYWR2aXNlCisKKyAgICBmZDogaW50CisgICAgb2Zmc2V0OiBQeV9vZmZfdAorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICBhZHZpY2U6IGludAorICAgIC8KKworQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybi4KKworQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiwgdGh1cyBhbGxvd2luZwordGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCitUaGUgYWR2aWNlIGFwcGxpZXMgdG8gdGhlIHJlZ2lvbiBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmQgc3RhcnRpbmcgYXQKK29mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLgorYWR2aWNlIGlzIG9uZSBvZiBQT1NJWF9GQURWX05PUk1BTCwgUE9TSVhfRkFEVl9TRVFVRU5USUFMLAorUE9TSVhfRkFEVl9SQU5ET00sIFBPU0lYX0ZBRFZfTk9SRVVTRSwgUE9TSVhfRkFEVl9XSUxMTkVFRCwgb3IKK1BPU0lYX0ZBRFZfRE9OVE5FRUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wb3NpeF9mYWR2aXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3Bvc2l4X2ZhZHZpc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgsIGludCBhZHZpY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDU3Y2U2YTY3MTg5ZTEwZCBpbnB1dD0wZmJlNTU0ZWRjMmYwNGI1XSovCiB7Ci0gICAgb2ZmX3QgbGVuLCBvZmZzZXQ7Ci0gICAgaW50IHJlcywgZmQsIGFkdmljZTsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCi0gICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuLCAmYWR2aWNlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApIHsKLSAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1BPU0lYX0ZBRFZJU0UgJiYgIVBPU0lYX0ZBRFZJU0VfQUlYX0JVRyAqLwogCiAjaWZkZWYgSEFWRV9QVVRFTlYKLVB5RG9jX1NUUlZBUihwb3NpeF9wdXRlbnZfX2RvY19fLAotInB1dGVudihrZXksIHZhbHVlKVxuXG5cCi1DaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOwogCiAvKiBTYXZlIHB1dGVudigpIHBhcmFtZXRlcnMgYXMgdmFsdWVzIGhlcmUsIHNvIHdlIGNhbiBjb2xsZWN0IHRoZW0gd2hlbiB0aGV5CiAgKiBnZXQgcmUtc2V0IHdpdGggYW5vdGhlciBjYWxsIGZvciB0aGUgc2FtZSBrZXkuICovCiBzdGF0aWMgUHlPYmplY3QgKnBvc2l4X3B1dGVudl9nYXJiYWdlOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHV0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3N0YXRpYyB2b2lkCitwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7CisgICAgLyogSW5zdGFsbCB0aGUgZmlyc3QgYXJnIGFuZCBuZXdzdHIgaW4gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7CisgICAgICogdGhpcyB3aWxsIGNhdXNlIHByZXZpb3VzIHZhbHVlIHRvIGJlIGNvbGxlY3RlZC4gIFRoaXMgaGFzIHRvCisgICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHB1dGVudigpIGNhbGwgYmVjYXVzZSB0aGUgb2xkIHZhbHVlCisgICAgICogd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4gKi8KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG5hbWUsIHZhbHVlKSkKKyAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworfQorCisKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKLSAgICB3Y2hhcl90ICpuZXdlbnY7CisvKltjbGluaWMgaW5wdXRdCitvcy5wdXRlbnYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVVU6cHV0ZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9zMSwgJm9zMikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIG5hbWU6IHVuaWNvZGUKKyAgICB2YWx1ZTogdW5pY29kZQorICAgIC8KIAotICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG9zMSwgb3MyKTsKLSAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKK0NoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEyNDM4Y2Y5NWU1YTBjMWMgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLworeworICAgIHdjaGFyX3QgKmVudjsKKworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgbmFtZSwgdmFsdWUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChfTUFYX0VOViA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5ld3N0cikpIHsKKyAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCiAgICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOwotICAgIGlmIChuZXdlbnYgPT0gTlVMTCkKKyAgICBlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaWNvZGUpOworICAgIGlmIChlbnYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgeworICAgIGlmIChfd3B1dGVudihlbnYpKSB7CiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotI2Vsc2UKLSAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwotICAgIGNoYXIgKnMxLCAqczI7Ci0gICAgY2hhciAqbmV3ZW52OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJPJk8mOnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgczEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMSk7Ci0gICAgczIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMik7Ci0KLSAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgczEsIHMyKTsKLSAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBuZXdlbnYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHIpOwotICAgIGlmIChwdXRlbnYobmV3ZW52KSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgLyogSW5zdGFsbCB0aGUgZmlyc3QgYXJnIGFuZCBuZXdzdHIgaW4gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7Ci0gICAgICogdGhpcyB3aWxsIGNhdXNlIHByZXZpb3VzIHZhbHVlIHRvIGJlIGNvbGxlY3RlZC4gIFRoaXMgaGFzIHRvCi0gICAgICogaGFwcGVuIGFmdGVyIHRoZSByZWFsIHB1dGVudigpIGNhbGwgYmVjYXVzZSB0aGUgb2xkIHZhbHVlCi0gICAgICogd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4gKi8KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSwgbmV3c3RyKSkgewotICAgICAgICAvKiByZWFsbHkgbm90IG11Y2ggd2UgY2FuIGRvOyBqdXN0IGxlYWsgKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXdzdHIpOwotICAgIH0KLQotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgUHlfREVDUkVGKG9zMSk7Ci0gICAgUHlfREVDUkVGKG9zMik7Ci0jZW5kaWYKKyAgICBwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKG5hbWUsIHVuaWNvZGUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5X0RFQ1JFRihvczEpOwotICAgIFB5X0RFQ1JFRihvczIpOwotI2VuZGlmCi0gICAgUHlfWERFQ1JFRihuZXdzdHIpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZiAvKiBwdXRlbnYgKi8KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnB1dGVudgogCi0jaWZkZWYgSEFWRV9VTlNFVEVOVgotUHlEb2NfU1RSVkFSKHBvc2l4X3Vuc2V0ZW52X19kb2NfXywKLSJ1bnNldGVudihrZXkpXG5cblwKLURlbGV0ZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKKyAgICBuYW1lOiBGU0NvbnZlcnRlcgorICAgIHZhbHVlOiBGU0NvbnZlcnRlcgorICAgIC8KKworQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Vuc2V0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3B1dGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTI0MzhjZjk1ZTVhMGMxYyBpbnB1dD1hOTdiYzYxNTJmNjg4ZDMxXSovCiB7Ci0gICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKyAgICBjaGFyICplbnY7CisgICAgY2hhciAqbmFtZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWUpOworICAgIGNoYXIgKnZhbHVlX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsdWUpOworCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgbmFtZV9zdHJpbmcsIHZhbHVlX3N0cmluZyk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZW52ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworICAgIGlmIChwdXRlbnYoZW52KSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBwb3NpeF9wdXRlbnZfZ2FyYmFnZV9zZXRpdGVtKG5hbWUsIGJ5dGVzKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogSEFWRV9QVVRFTlYgKi8KKworCisjaWZkZWYgSEFWRV9VTlNFVEVOVgorLypbY2xpbmljIGlucHV0XQorb3MudW5zZXRlbnYKKyAgICBuYW1lOiBGU0NvbnZlcnRlcgorICAgIC8KKworRGVsZXRlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5zZXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNTk5NGI1NzAxNmEyZGM5IGlucHV0PTJiYjUyODhhNTk5YzcxMDddKi8KK3sKICNpZm5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICBpbnQgZXJyOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnVuc2V0ZW52IiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgogICAgIHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICNlbHNlCiAgICAgZXJyID0gdW5zZXRlbnYoUHlCeXRlc19BU19TVFJJTkcobmFtZSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KICNlbmRpZgogCiAgICAgLyogUmVtb3ZlIHRoZSBrZXkgZnJvbSBwb3NpeF9wdXRlbnZfZ2FyYmFnZTsKQEAgLTkwMzAsMjMgKzkxMjAsMjUgQEAKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZiAvKiB1bnNldGVudiAqLworI2VuZGlmIC8qIEhBVkVfVU5TRVRFTlYgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N0cmVycm9yX19kb2NfXywKLSJzdHJlcnJvcihjb2RlKSAtPiBzdHJpbmdcblxuXAotVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc3RyZXJyb3IKKworICAgIGNvZGU6IGludAorICAgIC8KKworVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0cmVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3N0cmVycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDI4MGM2YWY1MWU1YzlmZSBpbnB1dD03NWE4NjczZDk3OTE1YTkxXSovCiB7Ci0gICAgaW50IGNvZGU7Ci0gICAgY2hhciAqbWVzc2FnZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c3RyZXJyb3IiLCAmY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG1lc3NhZ2UgPSBzdHJlcnJvcihjb2RlKTsKKyAgICBjaGFyICptZXNzYWdlID0gc3RyZXJyb3IoY29kZSk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlcnJvcigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtOTA1NywxNTUgKzkxNDksMTY4IEBACiAKIAogI2lmZGVmIEhBVkVfU1lTX1dBSVRfSAotCiAjaWZkZWYgV0NPUkVEVU1QCi1QeURvY19TVFJWQVIocG9zaXhfV0NPUkVEVU1QX19kb2NfXywKLSJXQ09SRURVTVAoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgZHVtcGVkIHRvIGEgY29yZSBmaWxlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0NPUkVEVU1QIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dDT1JFRFVNUChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKyAgICAvCisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0NPUkVEVU1QX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzRmNzBiYmU2M2ZiZjQxIGlucHV0PThiMDVlN2FiMzg1MjhkMDRdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXQ09SRURVTVAiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0NPUkVEVU1QKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXQ09SRURVTVAod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdDT1JFRFVNUCAqLwogCisKICNpZmRlZiBXSUZDT05USU5VRUQKLVB5RG9jX1NUUlZBUihwb3NpeF9XSUZDT05USU5VRURfX2RvY19fLAotIldJRkNPTlRJTlVFRChzdGF0dXMpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nICdzdGF0dXMnIHdhcyBjb250aW51ZWQgZnJvbSBhXG5cCi1qb2IgY29udHJvbCBzdG9wLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGQ09OVElOVUVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRkNPTlRJTlVFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgYSBwYXJ0aWN1bGFyIHByb2Nlc3Mgd2FzIGNvbnRpbnVlZCBmcm9tIGEgam9iIGNvbnRyb2wgc3RvcC4KKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgY29udGludWVkIGZyb20gYQoram9iIGNvbnRyb2wgc3RvcC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGQ09OVElOVUVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Y2RkMjY1NDNlYmI2ZGNkIGlucHV0PWU3NzdlN2QzOGViMjViZDldKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXQ09OVElOVUVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRkNPTlRJTlVFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGQ09OVElOVUVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZDT05USU5VRUQgKi8KIAorCiAjaWZkZWYgV0lGU1RPUFBFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRlNUT1BQRURfX2RvY19fLAotIldJRlNUT1BQRUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgc3RvcHBlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldJRlNUT1BQRUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGU1RPUFBFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGU1RPUFBFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzNiZjM1ZTQ0OTk0YTcyNCBpbnB1dD0wNDNjYjdmMTI4OWVmOTA0XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0lGU1RPUFBFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZTVE9QUEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZTVE9QUEVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZTVE9QUEVEICovCiAKKwogI2lmZGVmIFdJRlNJR05BTEVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGU0lHTkFMRURfX2RvY19fLAotIldJRlNJR05BTEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZTSUdOQUxFRCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XSUZTSUdOQUxFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGU0lHTkFMRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI2OTc5NzU3NzE4NzI0MjAgaW5wdXQ9ZDU1YmE3Y2M5Y2U1ZGM0M10qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldJRlNJR05BTEVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRlNJR05BTEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZTSUdOQUxFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGU0lHTkFMRUQgKi8KIAorCiAjaWZkZWYgV0lGRVhJVEVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGRVhJVEVEX19kb2NfXywKLSJXSUZFWElURUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiB0cnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyBleGl0ZWQgdXNpbmcgdGhlIGV4aXQoKVxuXAotc3lzdGVtIGNhbGwuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZFWElURUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGRVhJVEVEKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV0lGRVhJVEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYThmOGM2MWYwYjg1MzJlIGlucHV0PWQ2Mzc3NWE2NzkxNTg2YzBdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXSUZFWElURUQiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0lGRVhJVEVEKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXSUZFWElURUQod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdJRkVYSVRFRCAqLwogCisKICNpZmRlZiBXRVhJVFNUQVRVUwotUHlEb2NfU1RSVkFSKHBvc2l4X1dFWElUU1RBVFVTX19kb2NfXywKLSJXRVhJVFNUQVRVUyhzdGF0dXMpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gJ3N0YXR1cycuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XRVhJVFNUQVRVUyAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dFWElUU1RBVFVTKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUgZnJvbSBzdGF0dXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dFWElUU1RBVFVTX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYTU0ZGEyM2Q5ZTBmNmFmIGlucHV0PWUxZmI0OTQ0ZTM3NzU4NWJdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXRVhJVFNUQVRVUyIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBXRVhJVFNUQVRVUyhzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0VYSVRTVEFUVVMod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdFWElUU1RBVFVTICovCiAKKwogI2lmZGVmIFdURVJNU0lHCi1QeURvY19TVFJWQVIocG9zaXhfV1RFUk1TSUdfX2RvY19fLAotIldURVJNU0lHKHN0YXR1cykgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHRlcm1pbmF0ZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgJ3N0YXR1cydcblwKLXZhbHVlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV1RFUk1TSUcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XVEVSTVNJRyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV1RFUk1TSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkMjUzNjcwMjZjYjg1MmMgaW5wdXQ9NzI3ZmQ3Zjg0ZWMzZjI0M10qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldURVJNU0lHIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIFdURVJNU0lHKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXVEVSTVNJRyh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV1RFUk1TSUcgKi8KIAorCiAjaWZkZWYgV1NUT1BTSUcKLVB5RG9jX1NUUlZBUihwb3NpeF9XU1RPUFNJR19fZG9jX18sCi0iV1NUT1BTSUcoc3RhdHVzKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkXG5cCi10aGUgJ3N0YXR1cycgdmFsdWUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XU1RPUFNJRyAtPiBpbnQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dTVE9QU0lHKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzdGF0dXM6IGludAorCitSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19XU1RPUFNJR19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRlYjljMTNiMDAxYWRiNCBpbnB1dD00NmViZjFkMWIyOTNjNWMxXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V1NUT1BTSUciLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgV1NUT1BTSUcoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdTVE9QU0lHKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXU1RPUFNJRyAqLwotCiAjZW5kaWYgLyogSEFWRV9TWVNfV0FJVF9IICovCiAKIApAQCAtOTI2MCwxMDQgKzkzNjUsMTAxIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdHZmc19fZG9jX18sCi0iZnN0YXR2ZnMoZmQpIC0+IHN0YXR2ZnMgcmVzdWx0XG5cblwKLVBlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLlxuXAotRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZnN0YXR2ZnMKKyAgICBmZDogaW50CisgICAgLworCitQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC4KKworRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZzdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4NGE5NGE3NTQ0OTdhYzAgaW5wdXQ9ZDgxMjIyNDNhYzUwOTc1ZV0qLwogewotICAgIGludCBmZCwgcmVzOworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZnN0YXR2ZnMiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZnN0YXR2ZnMoZmQsICZzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhmZCwgJnN0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIHJldHVybiBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKIH0KLSNlbmRpZiAvKiBIQVZFX0ZTVEFUVkZTICYmIEhBVkVfU1lTX1NUQVRWRlNfSCAqLworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpICovCiAKIAogI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorLypbY2xpbmljIGlucHV0XQorb3Muc3RhdHZmcwogCi1QeURvY19TVFJWQVIocG9zaXhfc3RhdHZmc19fZG9jX18sCi0ic3RhdHZmcyhwYXRoKVxuXG5cCi1QZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZTVEFUVkZTJykKKworUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2VkMDdhMmNmOTMxZjQxIGlucHV0PTNmNWMzNTc5MWM2NjliZDldKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInN0YXR2ZnMiOwotI2lmZGVmIEhBVkVfRlNUQVRWRlMKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfRlNUQVRWRlMKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkgeworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkgewogI2lmZGVmIF9fQVBQTEVfXwogICAgICAgICAvKiBoYW5kbGUgd2Vhay1saW5raW5nIG9uIE1hYyBPUyBYIDEwLjMgKi8KICAgICAgICAgaWYgKGZzdGF0dmZzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGguZmQpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZmRfc3BlY2lmaWVkKCJzdGF0dmZzIiwgcGF0aC0+ZmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLmZkLCAmc3QpOworICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLT5mZCwgJnN0KTsKICAgICB9CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC5uYXJyb3csICZzdCk7CisgICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC0+bmFycm93LCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CiB9Ci0jZW5kaWYgLyogSEFWRV9TVEFUVkZTICovCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSAqLworCiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX18sCi0iX2dldGRpc2t1c2FnZShwYXRoKSAtPiAodG90YWwsIGZyZWUpXG5cblwKLVJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXRkaXNrdXNhZ2UKKworICAgIHBhdGg6IFB5X1VOSUNPREUKKworUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhICh0b3RhbCwgZnJlZSkgdHVwbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19nZXRkaXNrdXNhZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwYTljZjMzNDQ5ZGIxZGQgaW5wdXQ9NjQ1ODEzM2FlZDg5M2M3OF0qLwogewogICAgIEJPT0wgcmV0dmFsOwogICAgIFVMQVJHRV9JTlRFR0VSIF8sIHRvdGFsLCBmcmVlOwotICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IiwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXR2YWwgPSBHZXREaXNrRnJlZVNwYWNlRXhXKHBhdGgsICZfLCAmdG90YWwsICZmcmVlKTsKQEAgLTkzNjcsNyArOTQ2OSw3IEBACiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKExMKSIsIHRvdGFsLlF1YWRQYXJ0LCBmcmVlLlF1YWRQYXJ0KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCiAvKiBUaGlzIGlzIHVzZWQgZm9yIGZwYXRoY29uZigpLCBwYXRoY29uZigpLCBjb25mc3RyKCkgYW5kIHN5c2NvbmYoKS4KQEAgLTk1MjQsODEgKzk2MjYsNzMgQEAKIH0KICNlbmRpZgogCisKICNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotUHlEb2NfU1RSVkFSKHBvc2l4X2ZwYXRoY29uZl9fZG9jX18sCi0iZnBhdGhjb25mKGZkLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZwYXRoY29uZiAtPiBsb25nCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBuYW1lOiBwYXRoX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX2ZwYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDgyYjI5MjJkNDQ0MWRlNyBpbnB1dD01OTQyYTAyNGQzNzc3ODEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWUsIGZkOworICAgIGxvbmcgbGltaXQ7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZwYXRoY29uZiIsICZmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewotICAgICAgICBsb25nIGxpbWl0OworICAgIGVycm5vID0gMDsKKyAgICBsaW1pdCA9IGZwYXRoY29uZihmZCwgbmFtZSk7CisgICAgaWYgKGxpbWl0ID09IC0xICYmIGVycm5vICE9IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAKLSAgICAgICAgZXJybm8gPSAwOwotICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihmZCwgbmFtZSk7Ci0gICAgICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKQotICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbGltaXQ7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZQQVRIQ09ORiAqLwogCiAKICNpZmRlZiBIQVZFX1BBVEhDT05GCi1QeURvY19TVFJWQVIocG9zaXhfcGF0aGNvbmZfX2RvY19fLAotInBhdGhjb25mKHBhdGgsIG5hbWUpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorb3MucGF0aGNvbmYgLT4gbG9uZworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZQQVRIQ09ORicpCisgICAgbmFtZTogcGF0aF9jb25mbmFtZQogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLgorCitJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19wYXRoY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcxMzAyOWU5NTAxZjVhYiBpbnB1dD1iYzNlMmE5ODVhZjI3ZTVlXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJwYXRoY29uZiI7Ci0jaWZkZWYgSEFWRV9GUEFUSENPTkYKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICBsb25nIGxpbWl0OwogCiAgICAgZXJybm8gPSAwOwogI2lmZGVmIEhBVkVfRlBBVEhDT05GCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpCi0gICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGguZmQsIG5hbWUpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYocGF0aC0+ZmQsIG5hbWUpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgubmFycm93LCBuYW1lKTsKKyAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLT5uYXJyb3csIG5hbWUpOwogICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBFSU5WQUwpCiAgICAgICAgICAgICAvKiBjb3VsZCBiZSBhIHBhdGggb3IgbmFtZSBwcm9ibGVtICovCiAgICAgICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBwYXRoX2Vycm9yKCZwYXRoKTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKLSAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGxpbWl0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QQVRIQ09ORiAqLwogCiAjaWZkZWYgSEFWRV9DT05GU1RSCiBzdGF0aWMgc3RydWN0IGNvbnN0ZGVmIHBvc2l4X2NvbnN0YW50c19jb25mc3RyW10gPSB7CkBAIC05NzYyLDIxICs5ODU2LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihzdHJ1Y3QgY29uc3RkZWYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NvbmZzdHJfX2RvY19fLAotImNvbmZzdHIobmFtZSkgLT4gc3RyaW5nXG5cblwKLVJldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNvbmZzdHIKKworICAgIG5hbWU6IGNvbmZzdHJfY29uZm5hbWUKKyAgICAvCisKK1JldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jb25mc3RyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2NvbmZzdHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmY3OWM5ZWVkOGMyZGFmIGlucHV0PTE4ZmI0ZDA1NjcyNDJlNjVdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmFtZTsKICAgICBjaGFyIGJ1ZmZlclsyNTVdOwogICAgIHNpemVfdCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBlcnJubyA9IDA7CiAgICAgbGVuID0gY29uZnN0cihuYW1lLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKICAgICBpZiAobGVuID09IDApIHsKQEAgLTk3OTAsMTggKzk4ODcsMjAgQEAKICAgICB9CiAKICAgICBpZiAobGVuID49IHNpemVvZihidWZmZXIpKSB7CisgICAgICAgIHNpemVfdCBsZW4yOwogICAgICAgICBjaGFyICpidWYgPSBQeU1lbV9NYWxsb2MobGVuKTsKICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGNvbmZzdHIobmFtZSwgYnVmLCBsZW4pOwotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIGxlbi0xKTsKKyAgICAgICAgbGVuMiA9IGNvbmZzdHIobmFtZSwgYnVmLCBsZW4pOworICAgICAgICBhc3NlcnQobGVuID09IGxlbjIpOworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIGxlbjItMSk7CiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWZmZXIsIGxlbi0xKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DT05GU1RSICovCiAKIAogI2lmZGVmIEhBVkVfU1lTQ09ORgpAQCAtMTAzMDgsMjkgKzEwNDA3LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihzdHJ1Y3QgY29uc3RkZWYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N5c2NvbmZfX2RvY19fLAotInN5c2NvbmYobmFtZSkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gYW4gaW50ZWdlci12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeXNjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5c2NvbmYgLT4gbG9uZworICAgIG5hbWU6IHN5c2NvbmZfY29uZm5hbWUKKyAgICAvCisKK1JldHVybiBhbiBpbnRlZ2VyLXZhbHVlZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX3N5c2NvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZDU2NzMwNmY1OGQ2OWM0IGlucHV0PTI3OWUzNDMwYTMzZjI5ZTRdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpbnQgbmFtZTsKKyAgICBsb25nIHZhbHVlOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkgewotICAgICAgICBsb25nIHZhbHVlOwotCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgdmFsdWUgPSBzeXNjb25mKG5hbWUpOwotICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgZXJybm8gIT0gMCkKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgZXJybm8gPSAwOworICAgIHZhbHVlID0gc3lzY29uZihuYW1lKTsKKyAgICBpZiAodmFsdWUgPT0gLTEgJiYgZXJybm8gIT0gMCkKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZU0NPTkYgKi8KIAogCiAvKiBUaGlzIGNvZGUgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgdGFibGVzIG9mIGNvbmZpZ3VyYXRpb24gdmFsdWUgbmFtZXMKQEAgLTEwNDA3LDEzICsxMDUwNSwxOCBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hYm9ydF9fZG9jX18sCi0iYWJvcnQoKSAtPiBkb2VzIG5vdCByZXR1cm4hXG5cblwKLUFib3J0IHRoZSBpbnRlcnByZXRlciBpbW1lZGlhdGVseS4gIFRoaXMgJ2R1bXBzIGNvcmUnIG9yIG90aGVyd2lzZSBmYWlsc1xuXAotaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlIG9uIHRoZSBob3N0aW5nIG9wZXJhdGluZyBzeXN0ZW0uIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5hYm9ydAorCitBYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuCisKK1RoaXMgZnVuY3Rpb24gJ2R1bXBzIGNvcmUnIG9yIG90aGVyd2lzZSBmYWlscyBpbiB0aGUgaGFyZGVzdCB3YXkgcG9zc2libGUKK29uIHRoZSBob3N0aW5nIG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hYm9ydChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2Fib3J0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ODZiYjk2NjQ3YzI5OWIzIGlucHV0PWNmMmM3ZDk4YmM1MDQwNDddKi8KIHsKICAgICBhYm9ydCgpOwogICAgIC8qTk9UUkVBQ0hFRCovCkBAIC0xMDQyMiw5ICsxMDUyNSwxMSBAQAogfQogCiAjaWZkZWYgTVNfV0lORE9XUworLyogQUMgMy41OiBjaGFuZ2UgdG8gcGF0aF90PyBidXQgdGhhdCBtaWdodCBjaGFuZ2UgZXhjZXB0aW9ucyAqLwogUHlEb2NfU1RSVkFSKHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX18sCi0ic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pIC0gU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWRcblwKLWFwcGxpY2F0aW9uLlxuXAorInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAorXG5cCitTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKIFxuXAogV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCiBkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCkBAIC0xMDQ0MSw2ICsxMDU0NiwzNyBAQAogYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKIHRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7CiAKKy8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLworc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7CitzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CitzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOworc3RhdGljIGludAorY2hlY2tfU2hlbGxFeGVjdXRlKCkKK3sKKyAgICBISU5TVEFOQ0UgaFNoZWxsMzI7CisKKyAgICAvKiBvbmx5IHJlY2hlY2sgKi8KKyAgICBpZiAoLTEgPT0gaGFzX1NoZWxsRXhlY3V0ZSkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGhTaGVsbDMyID0gTG9hZExpYnJhcnlXKEwiU0hFTEwzMiIpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoaFNoZWxsMzIpIHsKKyAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZUEgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZUEiKTsKKyAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZVcgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZVciKTsKKyAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSBQeV9TaGVsbEV4ZWN1dGVBICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU2hlbGxFeGVjdXRlVzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBoYXNfU2hlbGxFeGVjdXRlOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW4zMl9zdGFydGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTA0NTEsNiArMTA1ODcsMTQgQEAKICAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworCisgICAgaWYoIWNoZWNrX1NoZWxsRXhlY3V0ZSgpKSB7CisgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgU2hlbGxFeGVjdXRlLCByZXR1cm4gYQorICAgICAgICAgICBOb3RJbXBsZW1lbnRlZEVycm9yLiAqLworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAic3RhcnRmaWxlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpOworICAgIH0KKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxzOnN0YXJ0ZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlwYXRoLCAmb3BlcmF0aW9uKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTA0NzksOCArMTA2MjMsOCBAQAogICAgICAgICB3b3BlcmF0aW9uID0gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uLCB3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIFB5X1hERUNSRUYodW9wZXJhdGlvbik7CkBAIC0xMDUwMiw4ICsxMDY0Niw4IEBACiAgICAgfQogICAgIGZpbGVwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZXBhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7CiAgICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwpAQCAtMTA1MTQsMTcgKzEwNjU4LDIzIEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRsb2FkYXZnX19kb2NfXywKLSJnZXRsb2FkYXZnKCkgLT4gKGZsb2F0LCBmbG9hdCwgZmxvYXQpXG5cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyXG5cCi10aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBvciByYWlzZXMgT1NFcnJvciBpZiB0aGUgbG9hZCBhdmVyYWdlXG5cCi13YXMgdW5vYnRhaW5hYmxlIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRsb2FkYXZnCisKK1JldHVybiBhdmVyYWdlIHJlY2VudCBzeXN0ZW0gbG9hZCBpbmZvcm1hdGlvbi4KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGluIHRoZSBzeXN0ZW0gcnVuIHF1ZXVlIGF2ZXJhZ2VkIG92ZXIKK3RoZSBsYXN0IDEsIDUsIGFuZCAxNSBtaW51dGVzIGFzIGEgdHVwbGUgb2YgdGhyZWUgZmxvYXRzLgorUmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZSB3YXMgdW5vYnRhaW5hYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0bG9hZGF2ZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGxvYWRhdmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiNjRjNWI2NzVkNzRjMTQgaW5wdXQ9M2Q2ZDgyNmI3NmQ4YTM0ZV0qLwogewogICAgIGRvdWJsZSBsb2FkYXZnWzNdOwogICAgIGlmIChnZXRsb2FkYXZnKGxvYWRhdmcsIDMpIT0zKSB7CkBAIC0xMDUzMyw3MiArMTA2ODMsODMgQEAKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkZCIsIGxvYWRhdmdbMF0sIGxvYWRhdmdbMV0sIGxvYWRhdmdbMl0pOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRMT0FEQVZHICovCiAKLVB5RG9jX1NUUlZBUihkZXZpY2VfZW5jb2RpbmdfX2RvY19fLAotImRldmljZV9lbmNvZGluZyhmZCkgLT4gc3RyXG5cblwKLVJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlbmNvZGluZyBvZiB0aGUgZGV2aWNlXG5cCi1pZiB0aGUgb3V0cHV0IGlzIGEgdGVybWluYWw7IGVsc2UgcmV0dXJuIE5vbmUuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmRldmljZV9lbmNvZGluZworICAgIGZkOiBpbnQKKworUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGVuY29kaW5nIG9mIGEgdGVybWluYWwncyBmaWxlIGRlc2NyaXB0b3IuCisKK1RoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHRlcm1pbmFsLgorSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ZjE0ZTMzNDY4NDE5YzEgaW5wdXQ9OWUxZDRhNDJiNjZkZjMxMl0qLwogewotICAgIGludCBmZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKIH0KIAotI2lmZGVmIEhBVkVfU0VUUkVTVUlECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmVzdWlkX19kb2NfXywKLSJzZXRyZXN1aWQocnVpZCwgZXVpZCwgc3VpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0cmVzdWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisjaWZkZWYgSEFWRV9TRVRSRVNVSUQKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHJlc3VpZAorCisgICAgcnVpZDogdWlkX3QKKyAgICBldWlkOiB1aWRfdAorICAgIHN1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgcnVpZCwgdWlkX3QgZXVpZCwgdWlkX3Qgc3VpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MmNjMzMwODEyYzZlZDBmIGlucHV0PTllMzNjYjc5YTgyNzkyZjNdKi8KIHsKLSAgICAvKiBXZSBhc3N1bWUgdWlkX3QgaXMgbm8gbGFyZ2VyIHRoYW4gYSBsb25nLiAqLwotICAgIHVpZF90IHJ1aWQsIGV1aWQsIHN1aWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXN1aWQocnVpZCwgZXVpZCwgc3VpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0VUUkVTVUlEICovCisKIAogI2lmZGVmIEhBVkVfU0VUUkVTR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0cmVzZ2lkX19kb2NfXywKLSJzZXRyZXNnaWQocmdpZCwgZWdpZCwgc2dpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZXNnaWQKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0cmVzZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgcmdpZDogZ2lkX3QKKyAgICBlZ2lkOiBnaWRfdAorICAgIHNnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIGdyb3VwIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc2dpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQsIGdpZF90IHNnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTkxZGM0ODQyYTYwNDQyOSBpbnB1dD0zM2U5ZTA3ODVlZjQyNmIxXSovCiB7Ci0gICAgZ2lkX3QgcmdpZCwgZWdpZCwgc2dpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHJlc2dpZChyZ2lkLCBlZ2lkLCBzZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TRVRSRVNHSUQgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRSRVNVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRyZXN1aWRfX2RvY19fLAotImdldHJlc3VpZCgpIC0+IChydWlkLCBldWlkLCBzdWlkKVxuXG5cCi1HZXQgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmVzdWlkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldHJlc3VpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkZGVmNjJmYWFlOGU0NzcgaW5wdXQ9NDFjY2ZhOGUxZjY1MTdhZF0qLwogewogICAgIHVpZF90IHJ1aWQsIGV1aWQsIHN1aWQ7CiAgICAgaWYgKGdldHJlc3VpZCgmcnVpZCwgJmV1aWQsICZzdWlkKSA8IDApCkBAIC0xMDYwNyw5MCArMTA3NjgsODggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21VaWQoZXVpZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tVWlkKHN1aWQpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUUkVTVUlEICovCisKIAogI2lmZGVmIEhBVkVfR0VUUkVTR0lECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cmVzZ2lkX19kb2NfXywKLSJnZXRyZXNnaWQoKSAtPiAocmdpZCwgZWdpZCwgc2dpZClcblxuXAotR2V0IHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRyZXNnaWQKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0cmVzZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK1JldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxYTU1M2NiY2YxNjIzNGMgaW5wdXQ9NTE3ZTY4ZGI5Y2EzMmRmNl0qLwogewotICAgIHVpZF90IHJnaWQsIGVnaWQsIHNnaWQ7CisgICAgZ2lkX3QgcmdpZCwgZWdpZCwgc2dpZDsKICAgICBpZiAoZ2V0cmVzZ2lkKCZyZ2lkLCAmZWdpZCwgJnNnaWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOTk4pIiwgX1B5TG9uZ19Gcm9tR2lkKHJnaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUxvbmdfRnJvbUdpZChlZ2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21HaWQoc2dpZCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRSRVNHSUQgKi8KKwogCiAjaWZkZWYgVVNFX1hBVFRSUworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0eGF0dHIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHhhdHRyX19kb2NfXywKLSJnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKSAtPiB2YWx1ZVxuXG5cCi1SZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUpCisgICAgYXR0cmlidXRlOiBwYXRoX3QKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitSZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZjJjZWRlNzRiZDVkNDEyIGlucHV0PThjOGVhM2JhYjc4ZDg5YzJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiZ2V0eGF0dHIiOwotICAgIGF0dHJpYnV0ZS5mdW5jdGlvbl9uYW1lID0gImdldHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCi0gICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiZ2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewogICAgICAgICB2b2lkICpwdHI7CiAgICAgICAgIHNzaXplX3QgcmVzdWx0OwogICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlcik7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKLSAgICAgICAgaWYgKHBhdGguZmQgPj0gMCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZnZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKHBhdGgtPmZkID49IDApCisgICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKICAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGxnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocmVzdWx0ICE9IGJ1ZmZlcl9zaXplKSB7CkBAIC0xMDcwMCwxNjggKzEwODU5LDEzNCBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHhhdHRyX19kb2NfXywKLSJzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHhhdHRyCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9VHJ1ZSkKKyAgICBhdHRyaWJ1dGU6IHBhdGhfdAorICAgIHZhbHVlOiBQeV9idWZmZXIKKyAgICBmbGFnczogaW50ID0gMAorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1NldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICp2YWx1ZSwgaW50IGZsYWdzLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiMzk1ZWY4Mjg4MGZlYTAgaW5wdXQ9ZjBkMjY4MzM5OTIwMTVjMl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHBhdGhfdCBhdHRyaWJ1dGU7Ci0gICAgUHlfYnVmZmVyIHZhbHVlOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzc2l6ZV90IHJlc3VsdDsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAic2V0eGF0dHIiOwotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7Ci0gICAgbWVtc2V0KCZ2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsCi0gICAgICAgIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAmdmFsdWUsICZmbGFncywKLSAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJzZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmc2V0eGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgICAgICByZXN1bHQgPSBzZXR4YXR0cihwYXRoLT5uYXJyb3csIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+YnVmLCB2YWx1ZS0+bGVuLCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfXywKLSJyZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1SZW1vdmUgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCi0gIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MucmVtb3ZleGF0dHIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQorICAgIGF0dHJpYnV0ZTogcGF0aF90CisgICAgKgorICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKworUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljCisgIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgIHRoZSBsaW5rIHBvaW50cyB0by4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVtb3ZleGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZleGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY5MmJiMzlhYjk5MjY1MGQgaW5wdXQ9Y2RiNTQ4MzQxNjFlMzMyOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHBhdGhfdCBhdHRyaWJ1dGU7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3NpemVfdCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInJlbW92ZXhhdHRyIjsKLSAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOwotICAgIGF0dHJpYnV0ZS5mdW5jdGlvbl9uYW1lID0gInJlbW92ZXhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJyZW1vdmV4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHBhdGguZmQgPiAtMSkKLSAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmcmVtb3ZleGF0dHIocGF0aC0+ZmQsIGF0dHJpYnV0ZS0+bmFycm93KTsKICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gcmVtb3ZleGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7Ci0KLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfbGlzdHhhdHRyX19kb2NfXywKLSJsaXN0eGF0dHIocGF0aD0nLicsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC5cblwKLVxuXAotcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLWlmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxpc3R4YXR0cgorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUsIG51bGxhYmxlPVRydWUpID0gTm9uZQorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1JldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLgorCitwYXRoIG1heSBiZSBlaXRoZXIgTm9uZSwgYSBzdHJpbmcsIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgoraWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgIHRoZSBsaW5rIHBvaW50cyB0by4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3R4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0eGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg3YWQ2Y2U1NmU0MmE0ZiBpbnB1dD0wOGNjYTUzYWMwYjA3YzEzXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgY2hhciAqYnVmZmVyID0gTlVMTDsKLSAgICBjaGFyICpuYW1lOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsaXN0eGF0dHIiOwotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotICAgIHBhdGguZmQgPSAtMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImxpc3R4YXR0ciIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBuYW1lID0gcGF0aC5uYXJyb3cgPyBwYXRoLm5hcnJvdyA6ICIuIjsKKyAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOworCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKICAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7CkBAIC0xMDg2OSw3ICsxMDk5NCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyID0gUHlNZW1fTUFMTE9DKGJ1ZmZlcl9zaXplKTsKQEAgLTEwODc5LDggKzExMDA0LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGguZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGZsaXN0eGF0dHIocGF0aC0+ZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgICAgICBsZW5ndGggPSBsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UKQEAgLTEwODkzLDcgKzExMDE4LDcgQEAKICAgICAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTA5MjYsNDMgKzExMDUxLDQzIEBACiAgICAgYnJlYWs7CiAgICAgfQogZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotCiAjZW5kaWYgLyogVVNFX1hBVFRSUyAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKLSJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCi1SZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudXJhbmRvbQorCisgICAgc2l6ZTogUHlfc3NpemVfdAorICAgIC8KKworUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdXJhbmRvbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDAxMWYwMjE1MDFmMDNiIGlucHV0PTQwNjdjZGIxYjY3NzZjMjldKi8KIHsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgcmV0OworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBpbnQgcmVzdWx0OwogCi0gICAgIC8qIFJlYWQgYXJndW1lbnRzICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplIDwgMCkKICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOwotICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYnl0ZXM7CiB9CiAKIC8qIFRlcm1pbmFsIHNpemUgcXVlcnlpbmcgKi8KQEAgLTEwOTg2LDYgKzExMTExLDcgQEAKIH07CiAKICNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCisvKiBBQyAzLjU6IGZkIHNob3VsZCBhY2NlcHQgTm9uZSAqLwogUHlEb2NfU1RSVkFSKHRlcm1zaXplX19kb2NfXywKICAgICAiUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgKGNvbHVtbnMsIGxpbmVzKS5cbiIgICAgICAgIFwKICAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExMDcxLDEzICsxMTE5NywxNiBAQAogfQogI2VuZGlmIC8qIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2NwdV9jb3VudF9fZG9jX18sCi0iY3B1X2NvdW50KCkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0sIG9yIE5vbmUgaWYgdGhpcyB2YWx1ZSBjYW5ub3QgYmVcblwKLWVzdGFibGlzaGVkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5jcHVfY291bnQKKworUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NwdV9jb3VudChQeU9iamVjdCAqc2VsZikKK29zX2NwdV9jb3VudF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzU5ZWU3ZjZiY2U4MzJiOCBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMTA2LDExMSArMTEyMzUsOTQzIEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZ2V0X2luaGVyaXRhYmxlX19kb2NfXywKLSAgICAiZ2V0X2luaGVyaXRhYmxlKGZkKSAtPiBib29sXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0X2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldF9pbmhlcml0YWJsZSAtPiBib29sCisKKyAgICBmZDogaW50CisgICAgLworCitHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19nZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzYxMTBiYjM2ZWZhYTIxZSBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBpbmhlcml0YWJsZTsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQotICAgIGluaGVyaXRhYmxlID0gX1B5X2dldF9pbmhlcml0YWJsZShmZCk7Ci0gICAgaWYgKGluaGVyaXRhYmxlIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhpbmhlcml0YWJsZSk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJldHVybl92YWx1ZSA9IF9QeV9nZXRfaW5oZXJpdGFibGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldF9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgInNldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUpXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9zZXRfaW5oZXJpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorb3Muc2V0X2luaGVyaXRhYmxlCisgICAgZmQ6IGludAorICAgIGluaGVyaXRhYmxlOiBpbnQKKyAgICAvCisKK1NldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhYzVjNmNlODYyM2YwNDUgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewotICAgIGludCBmZCwgaW5oZXJpdGFibGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9pbmhlcml0YWJsZSIsICZmZCwgJmluaGVyaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBpbnQgcmVzdWx0OwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKLSAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUsIE5VTEwpIDwgMCkKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgcmVzdWx0ID0gX1B5X3NldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUsIE5VTEwpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIoZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgImdldF9oYW5kbGVfaW5oZXJpdGFibGUoZmQpIC0+IGJvb2xcbiIgXAotICAgICJcbiIgXAotICAgICJHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSAtPiBib29sCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitHZXQgdGhlIGNsb3NlLW9uLWV4ZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiN2IzZTFiNDNmMzEyYjYgaW5wdXQ9NWY3NzU5NDQzYWFlM2RjNV0qLwogewotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKICAgICBEV09SRCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghR2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSloYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhmbGFncyAmIEhBTkRMRV9GTEFHX0lOSEVSSVQpOworICAgIHJldHVybiBmbGFncyAmIEhBTkRMRV9GTEFHX0lOSEVSSVQ7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfXywKLSAgICAic2V0X2hhbmRsZV9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUpXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzcGVjaWZpZWQgaGFuZGxlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldF9oYW5kbGVfaW5oZXJpdGFibGUKKyAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaW5oZXJpdGFibGU6IGJvb2wKKyAgICAvCisKK1NldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaGVyaXRhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZTExMWE5NmM5ZWIyOTYgaW5wdXQ9ZTY0YjJiMjczMDQ2OWRlZl0qLwogewotICAgIGludCBpbmhlcml0YWJsZSA9IDE7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOwotICAgIERXT1JEIGZsYWdzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGluaGVyaXRhYmxlKQotICAgICAgICBmbGFncyA9IEhBTkRMRV9GTEFHX0lOSEVSSVQ7Ci0gICAgZWxzZQotICAgICAgICBmbGFncyA9IDA7CisgICAgRFdPUkQgZmxhZ3MgPSBpbmhlcml0YWJsZSA/IEhBTkRMRV9GTEFHX0lOSEVSSVQgOiAwOwogICAgIGlmICghU2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSloYW5kbGUsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIGZsYWdzKSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAorI2lmbmRlZiBNU19XSU5ET1dTCitQeURvY19TVFJWQVIoZ2V0X2Jsb2NraW5nX19kb2NfXywKKyAgICAiZ2V0X2Jsb2NraW5nKGZkKSAtPiBib29sXG4iIFwKKyAgICAiXG4iIFwKKyAgICAiR2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3I6XG4iIFwKKyAgICAiRmFsc2UgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpcyBzZXQsIFRydWUgaWYgdGhlIGZsYWcgaXMgY2xlYXJlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcG9zaXhfZ2V0X2Jsb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQ7CisgICAgaW50IGJsb2NraW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKGJsb2NraW5nIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhibG9ja2luZyk7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfYmxvY2tpbmdfX2RvY19fLAorICAgICJzZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKVxuIiBcCisgICAgIlxuIiBcCisgICAgIlNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci5cbiIgXAorICAgICJTZXQgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpZiBibG9ja2luZyBpcyBGYWxzZSxcbiIgXAorICAgICJjbGVhciB0aGUgT19OT05CTE9DSyBmbGFnIG90aGVyd2lzZS4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcG9zaXhfc2V0X2Jsb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGJsb2NraW5nLCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9ibG9ja2luZyIsICZmZCwgJmJsb2NraW5nKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJlc3VsdCA9IF9QeV9zZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjYW5kaXJfX2RvY19fLAorInNjYW5kaXIocGF0aD0nLicpIC0+IGl0ZXJhdG9yIG9mIERpckVudHJ5IG9iamVjdHMgZm9yIGdpdmVuIHBhdGgiKTsKKworc3RhdGljIGNoYXIgKmZvbGxvd19zeW1saW5rc19rZXl3b3Jkc1tdID0geyJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqc3RhdDsKKyAgICBQeU9iamVjdCAqbHN0YXQ7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgd2luMzJfbHN0YXQ7CisgICAgX19pbnQ2NCB3aW4zMl9maWxlX2luZGV4OworICAgIGludCBnb3RfZmlsZV9pbmRleDsKKyNlbHNlIC8qIFBPU0lYICovCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CisjZW5kaWYKKyAgICBpbm9fdCBkX2lubzsKKyNlbmRpZgorfSBEaXJFbnRyeTsKKworc3RhdGljIHZvaWQKK0RpckVudHJ5X2RlYWxsb2MoRGlyRW50cnkgKmVudHJ5KQoreworICAgIFB5X1hERUNSRUYoZW50cnktPm5hbWUpOworICAgIFB5X1hERUNSRUYoZW50cnktPnBhdGgpOworICAgIFB5X1hERUNSRUYoZW50cnktPnN0YXQpOworICAgIFB5X1hERUNSRUYoZW50cnktPmxzdGF0KTsKKyAgICBQeV9UWVBFKGVudHJ5KS0+dHBfZnJlZSgoUHlPYmplY3QgKillbnRyeSk7Cit9CisKKy8qIEZvcndhcmQgcmVmZXJlbmNlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV90ZXN0X21vZGUoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MsIHVuc2lnbmVkIHNob3J0IG1vZGVfYml0cyk7CisKKy8qIFNldCBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgMCBmb3IgRmFsc2UsIDEgZm9yIFRydWUgKi8KK3N0YXRpYyBpbnQKK0RpckVudHJ5X2lzX3N5bWxpbmsoRGlyRW50cnkgKnNlbGYpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldHVybiAoc2VsZi0+d2luMzJfbHN0YXQuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkxOSzsKKyNlbGlmIGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIC8qIFBPU0lYICovCisgICAgaWYgKHNlbGYtPmRfdHlwZSAhPSBEVF9VTktOT1dOKQorICAgICAgICByZXR1cm4gc2VsZi0+ZF90eXBlID09IERUX0xOSzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgMCwgU19JRkxOSyk7CisjZWxzZQorICAgIC8qIFBPU0lYIHdpdGhvdXQgZF90eXBlICovCisgICAgcmV0dXJuIERpckVudHJ5X3Rlc3RfbW9kZShzZWxmLCAwLCBTX0lGTE5LKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfcHlfaXNfc3ltbGluayhEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgcmVzdWx0ID0gRGlyRW50cnlfaXNfc3ltbGluayhzZWxmKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mZXRjaF9zdGF0KERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworICAgIGludCByZXN1bHQ7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICpwYXRoOworCisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CisgICAgaWYgKCFwYXRoKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLCAmc3QpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLCAmc3QpOworCisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7CisgICAgfQorI2Vsc2UgLyogUE9TSVggKi8KKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgY2hhciAqcGF0aDsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZieXRlcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBTVEFUKHBhdGgsICZzdCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgc2VsZi0+cGF0aCk7CisjZW5kaWYKKworICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9nZXRfbHN0YXQoRGlyRW50cnkgKnNlbGYpCit7CisgICAgaWYgKCFzZWxmLT5sc3RhdCkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgc2VsZi0+bHN0YXQgPSBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzZWxmLT53aW4zMl9sc3RhdCk7CisjZWxzZSAvKiBQT1NJWCAqLworICAgICAgICBzZWxmLT5sc3RhdCA9IERpckVudHJ5X2ZldGNoX3N0YXQoc2VsZiwgMCk7CisjZW5kaWYKKyAgICB9CisgICAgUHlfWElOQ1JFRihzZWxmLT5sc3RhdCk7CisgICAgcmV0dXJuIHNlbGYtPmxzdGF0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZ2V0X3N0YXQoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MpCit7CisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJldHVybiBEaXJFbnRyeV9nZXRfbHN0YXQoc2VsZik7CisKKyAgICBpZiAoIXNlbGYtPnN0YXQpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IERpckVudHJ5X2lzX3N5bWxpbmsoc2VsZik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAocmVzdWx0KQorICAgICAgICAgICAgc2VsZi0+c3RhdCA9IERpckVudHJ5X2ZldGNoX3N0YXQoc2VsZiwgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPnN0YXQgPSBEaXJFbnRyeV9nZXRfbHN0YXQoc2VsZik7CisgICAgfQorCisgICAgUHlfWElOQ1JFRihzZWxmLT5zdGF0KTsKKyAgICByZXR1cm4gc2VsZi0+c3RhdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3N0YXQoRGlyRW50cnkgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifCRwOkRpckVudHJ5LnN0YXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X2dldF9zdGF0KHNlbGYsIGZvbGxvd19zeW1saW5rcyk7Cit9CisKKy8qIFNldCBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgMCBmb3IgRmFsc2UsIDEgZm9yIFRydWUgKi8KK3N0YXRpYyBpbnQKK0RpckVudHJ5X3Rlc3RfbW9kZShEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcywgdW5zaWduZWQgc2hvcnQgbW9kZV9iaXRzKQoreworICAgIFB5T2JqZWN0ICpzdGF0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RfbW9kZSA9IE5VTEw7CisgICAgbG9uZyBtb2RlOworICAgIGludCByZXN1bHQ7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpbnQgaXNfc3ltbGluazsKKyAgICBpbnQgbmVlZF9zdGF0OworI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworICAgIHVuc2lnbmVkIGxvbmcgZGlyX2JpdHM7CisjZW5kaWYKKyAgICBfUHlfSURFTlRJRklFUihzdF9tb2RlKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpc19zeW1saW5rID0gKHNlbGYtPndpbjMyX2xzdGF0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZMTks7CisgICAgbmVlZF9zdGF0ID0gZm9sbG93X3N5bWxpbmtzICYmIGlzX3N5bWxpbms7CisjZWxpZiBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpc19zeW1saW5rID0gc2VsZi0+ZF90eXBlID09IERUX0xOSzsKKyAgICBuZWVkX3N0YXQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfVU5LTk9XTiB8fCAoZm9sbG93X3N5bWxpbmtzICYmIGlzX3N5bWxpbmspOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIGlmIChuZWVkX3N0YXQpIHsKKyNlbmRpZgorICAgICAgICBzdGF0ID0gRGlyRW50cnlfZ2V0X3N0YXQoc2VsZiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgaWYgKCFzdGF0KSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19GaWxlTm90Rm91bmRFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAvKiBJZiBmaWxlIGRvZXNuJ3QgZXhpc3QgKGFueW1vcmUpLCB0aGVuIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgICAgIChpLmUuLCBzYXkgaXQncyBub3QgYSBmaWxlL2RpcmVjdG9yeSkgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdF9tb2RlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdGF0LCAmUHlJZF9zdF9tb2RlKTsKKyAgICAgICAgaWYgKCFzdF9tb2RlKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBtb2RlID0gUHlMb25nX0FzTG9uZyhzdF9tb2RlKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKHN0X21vZGUpOworICAgICAgICBQeV9DTEVBUihzdGF0KTsKKyAgICAgICAgcmVzdWx0ID0gKG1vZGUgJiBTX0lGTVQpID09IG1vZGVfYml0czsKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoSEFWRV9ESVJFTlRfRF9UWVBFKQorICAgIH0KKyAgICBlbHNlIGlmIChpc19zeW1saW5rKSB7CisgICAgICAgIGFzc2VydChtb2RlX2JpdHMgIT0gU19JRkxOSyk7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQobW9kZV9iaXRzID09IFNfSUZESVIgfHwgbW9kZV9iaXRzID09IFNfSUZSRUcpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgZGlyX2JpdHMgPSBzZWxmLT53aW4zMl9sc3RhdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlk7CisgICAgICAgIGlmIChtb2RlX2JpdHMgPT0gU19JRkRJUikKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpcl9iaXRzICE9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpcl9iaXRzID09IDA7CisjZWxzZSAvKiBQT1NJWCAqLworICAgICAgICBpZiAobW9kZV9iaXRzID09IFNfSUZESVIpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfRElSOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLT5kX3R5cGUgPT0gRFRfUkVHOworI2VuZGlmCisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHN0X21vZGUpOworICAgIFB5X1hERUNSRUYoc3RhdCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfcHlfdGVzdF9tb2RlKERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzLCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHMpCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIHJlc3VsdCA9IERpckVudHJ5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIG1vZGVfYml0cyk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaXNfZGlyKERpckVudHJ5ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInwkcDpEaXJFbnRyeS5pc19kaXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X3B5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIFNfSUZESVIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaXNfZmlsZShEaXJFbnRyeSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8JHA6RGlyRW50cnkuaXNfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX2tleXdvcmRzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gRGlyRW50cnlfcHlfdGVzdF9tb2RlKHNlbGYsIGZvbGxvd19zeW1saW5rcywgU19JRlJFRyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9pbm9kZShEaXJFbnRyeSAqc2VsZikKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgeworICAgICAgICB3Y2hhcl90ICpwYXRoOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CisgICAgICAgIGlmICghcGF0aCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYtPndpbjMyX2ZpbGVfaW5kZXggPSBzdGF0LnN0X2lubzsKKyAgICAgICAgc2VsZi0+Z290X2ZpbGVfaW5kZXggPSAxOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPndpbjMyX2ZpbGVfaW5kZXgpOworI2Vsc2UgLyogUE9TSVggKi8KKyNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT5kX2lubyk7CisjZWxzZQorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VsZi0+ZF9pbm8pOworI2VuZGlmCisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3JlcHIoRGlyRW50cnkgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RGlyRW50cnkgJVI+Iiwgc2VsZi0+bmFtZSk7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CisgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCisgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKKyAgICB7InBhdGgiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGlyRW50cnksIHBhdGgpLCBSRUFET05MWSwKKyAgICAgInRoZSBlbnRyeSdzIGZ1bGwgcGF0aCBuYW1lOyBlcXVpdmFsZW50IHRvIG9zLnBhdGguam9pbihzY2FuZGlyX3BhdGgsIGVudHJ5Lm5hbWUpIn0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlNZXRob2REZWYgRGlyRW50cnlfbWV0aG9kc1tdID0geworICAgIHsiaXNfZGlyIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lzX2RpciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIGRpcmVjdG9yeTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaXNfZmlsZSIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pc19maWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAicmV0dXJuIFRydWUgaWYgdGhlIGVudHJ5IGlzIGEgZmlsZTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaXNfc3ltbGluayIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9weV9pc19zeW1saW5rLCBNRVRIX05PQVJHUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIHN5bWJvbGljIGxpbms7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfc3RhdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBzdGF0X3Jlc3VsdCBvYmplY3QgZm9yIHRoZSBlbnRyeTsgY2FjaGVkIHBlciBlbnRyeSIKKyAgICB9LAorICAgIHsiaW5vZGUiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfaW5vZGUsIE1FVEhfTk9BUkdTLAorICAgICAicmV0dXJuIGlub2RlIG9mIHRoZSBlbnRyeTsgY2FjaGVkIHBlciBlbnRyeSIsCisgICAgfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRGlyRW50cnlUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRE5BTUUgIi5EaXJFbnRyeSIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKERpckVudHJ5KSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilEaXJFbnRyeV9kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIChyZXByZnVuYylEaXJFbnRyeV9yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgRGlyRW50cnlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBEaXJFbnRyeV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworfTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIHdjaGFyX3QgKgoram9pbl9wYXRoX2ZpbGVuYW1lVyh3Y2hhcl90ICpwYXRoX3dpZGUsIHdjaGFyX3QqIGZpbGVuYW1lKQoreworICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIHdjaGFyX3QgKnJlc3VsdDsKKyAgICB3Y2hhcl90IGNoOworCisgICAgaWYgKCFwYXRoX3dpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwYXRoX3dpZGUgPSBMIi4iOworICAgICAgICBwYXRoX2xlbiA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXRoX2xlbiA9IHdjc2xlbihwYXRoX3dpZGUpOworICAgIH0KKworICAgIC8qIFRoZSArMSdzIGFyZSBmb3IgdGhlIHBhdGggc2VwYXJhdG9yIGFuZCB0aGUgTlVMICovCisgICAgc2l6ZSA9IHBhdGhfbGVuICsgMSArIHdjc2xlbihmaWxlbmFtZSkgKyAxOworICAgIHJlc3VsdCA9IFB5TWVtX05ldyh3Y2hhcl90LCBzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd2NzY3B5KHJlc3VsdCwgcGF0aF93aWRlKTsKKyAgICBpZiAocGF0aF9sZW4gPiAwKSB7CisgICAgICAgIGNoID0gcmVzdWx0W3BhdGhfbGVuIC0gMV07CisgICAgICAgIGlmIChjaCAhPSBTRVAgJiYgY2ggIT0gQUxUU0VQICYmIGNoICE9IEwnOicpCisgICAgICAgICAgICByZXN1bHRbcGF0aF9sZW4rK10gPSBTRVA7CisgICAgICAgIHdjc2NweShyZXN1bHQgKyBwYXRoX2xlbiwgZmlsZW5hbWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZnJvbV9maW5kX2RhdGEocGF0aF90ICpwYXRoLCBXSU4zMl9GSU5EX0RBVEFXICpkYXRhVykKK3sKKyAgICBEaXJFbnRyeSAqZW50cnk7CisgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZV9pbmZvOworICAgIFVMT05HIHJlcGFyc2VfdGFnOworICAgIHdjaGFyX3QgKmpvaW5lZF9wYXRoOworCisgICAgZW50cnkgPSBQeU9iamVjdF9OZXcoRGlyRW50cnksICZEaXJFbnRyeVR5cGUpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVudHJ5LT5uYW1lID0gTlVMTDsKKyAgICBlbnRyeS0+cGF0aCA9IE5VTEw7CisgICAgZW50cnktPnN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5sc3RhdCA9IE5VTEw7CisgICAgZW50cnktPmdvdF9maWxlX2luZGV4ID0gMDsKKworICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CisgICAgaWYgKCFlbnRyeS0+bmFtZSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGpvaW5lZF9wYXRoID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhwYXRoLT53aWRlLCBkYXRhVy0+Y0ZpbGVOYW1lKTsKKyAgICBpZiAoIWpvaW5lZF9wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZW50cnktPnBhdGggPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGpvaW5lZF9wYXRoLCAtMSk7CisgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CisgICAgaWYgKCFlbnRyeS0+cGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihlbnRyeSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbHNlIC8qIFBPU0lYICovCisKK3N0YXRpYyBjaGFyICoKK2pvaW5fcGF0aF9maWxlbmFtZShjaGFyICpwYXRoX25hcnJvdywgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQoreworICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnJlc3VsdDsKKworICAgIGlmICghcGF0aF9uYXJyb3cpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwYXRoX25hcnJvdyA9ICIuIjsKKyAgICAgICAgcGF0aF9sZW4gPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aF9sZW4gPSBzdHJsZW4ocGF0aF9uYXJyb3cpOworICAgIH0KKworICAgIGlmIChmaWxlbmFtZV9sZW4gPT0gLTEpCisgICAgICAgIGZpbGVuYW1lX2xlbiA9IHN0cmxlbihmaWxlbmFtZSk7CisKKyAgICAvKiBUaGUgKzEncyBhcmUgZm9yIHRoZSBwYXRoIHNlcGFyYXRvciBhbmQgdGhlIE5VTCAqLworICAgIHNpemUgPSBwYXRoX2xlbiArIDEgKyBmaWxlbmFtZV9sZW4gKyAxOworICAgIHJlc3VsdCA9IFB5TWVtX05ldyhjaGFyLCBzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3RyY3B5KHJlc3VsdCwgcGF0aF9uYXJyb3cpOworICAgIGlmIChwYXRoX2xlbiA+IDAgJiYgcmVzdWx0W3BhdGhfbGVuIC0gMV0gIT0gJy8nKQorICAgICAgICByZXN1bHRbcGF0aF9sZW4rK10gPSAnLyc7CisgICAgc3RyY3B5KHJlc3VsdCArIHBhdGhfbGVuLCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgRGlyRW50cnkgKmVudHJ5OworICAgIGNoYXIgKmpvaW5lZF9wYXRoOworCisgICAgZW50cnkgPSBQeU9iamVjdF9OZXcoRGlyRW50cnksICZEaXJFbnRyeVR5cGUpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVudHJ5LT5uYW1lID0gTlVMTDsKKyAgICBlbnRyeS0+cGF0aCA9IE5VTEw7CisgICAgZW50cnktPnN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5sc3RhdCA9IE5VTEw7CisKKyAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZShwYXRoLT5uYXJyb3csIG5hbWUsIG5hbWVfbGVuKTsKKyAgICBpZiAoIWpvaW5lZF9wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKCFwYXRoLT5uYXJyb3cgfHwgIVB5Qnl0ZXNfQ2hlY2socGF0aC0+b2JqZWN0KSkgeworICAgICAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKG5hbWUsIG5hbWVfbGVuKTsKKyAgICAgICAgZW50cnktPnBhdGggPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGpvaW5lZF9wYXRoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVudHJ5LT5uYW1lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCBuYW1lX2xlbik7CisgICAgICAgIGVudHJ5LT5wYXRoID0gUHlCeXRlc19Gcm9tU3RyaW5nKGpvaW5lZF9wYXRoKTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CisgICAgaWYgKCFlbnRyeS0+bmFtZSB8fCAhZW50cnktPnBhdGgpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICBlbnRyeS0+ZF90eXBlID0gZF90eXBlOworI2VuZGlmCisgICAgZW50cnktPmRfaW5vID0gZF9pbm87CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW50cnkpOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIHBhdGhfdCBwYXRoOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmlsZV9kYXRhOworICAgIGludCBmaXJzdF90aW1lOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICBESVIgKmRpcnA7CisjZW5kaWYKK30gU2NhbmRpckl0ZXJhdG9yOworCisjaWZkZWYgTVNfV0lORE9XUworCitzdGF0aWMgdm9pZAorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBGaW5kQ2xvc2UoaXRlcmF0b3ItPmhhbmRsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXICpmaWxlX2RhdGEgPSAmaXRlcmF0b3ItPmZpbGVfZGF0YTsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICghaXRlcmF0b3ItPmZpcnN0X3RpbWUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBGaW5kTmV4dEZpbGVXKGl0ZXJhdG9yLT5oYW5kbGUsIGZpbGVfZGF0YSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgICAgICAgICAgLyogTm8gbW9yZSBmaWxlcyBmb3VuZCBpbiBkaXJlY3RvcnksIHN0b3AgaXRlcmF0aW5nICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAwOworCisgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLworICAgICAgICBpZiAod2NzY21wKGZpbGVfZGF0YS0+Y0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCisgICAgICAgICAgICAgICAgd2NzY21wKGZpbGVfZGF0YS0+Y0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBEaXJFbnRyeV9mcm9tX2ZpbmRfZGF0YSgmaXRlcmF0b3ItPnBhdGgsIGZpbGVfZGF0YSk7CisKKyAgICAgICAgLyogTG9vcCB0aWxsIHdlIGdldCBhIG5vbi1kb3QgZGlyZWN0b3J5IG9yIGZpbmlzaCBpdGVyYXRpbmcgKi8KKyAgICB9CisKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2Vsc2UgLyogUE9TSVggKi8KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIGlmICghaXRlcmF0b3ItPmRpcnApCisgICAgICAgIHJldHVybjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBjbG9zZWRpcihpdGVyYXRvci0+ZGlycCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+ZGlycCA9IE5VTEw7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2l0ZXJuZXh0KFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgc3RydWN0IGRpcmVudCAqZGlyZW50cDsKKyAgICBQeV9zc2l6ZV90IG5hbWVfbGVuOworICAgIGludCBpc19kb3Q7CisKKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIGlmICghaXRlcmF0b3ItPmRpcnApIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcmVudHAgPSByZWFkZGlyKGl0ZXJhdG9yLT5kaXJwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWRpcmVudHApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgICAgICAvKiBObyBtb3JlIGZpbGVzIGZvdW5kIGluIGRpcmVjdG9yeSwgc3RvcCBpdGVyYXRpbmcgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCisgICAgICAgIG5hbWVfbGVuID0gTkFNTEVOKGRpcmVudHApOworICAgICAgICBpc19kb3QgPSBkaXJlbnRwLT5kX25hbWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAgIChuYW1lX2xlbiA9PSAxIHx8IChkaXJlbnRwLT5kX25hbWVbMV0gPT0gJy4nICYmIG5hbWVfbGVuID09IDIpKTsKKyAgICAgICAgaWYgKCFpc19kb3QpIHsKKyAgICAgICAgICAgIHJldHVybiBEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8oJml0ZXJhdG9yLT5wYXRoLCBkaXJlbnRwLT5kX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuLCBkaXJlbnRwLT5kX2lubworI2lmZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGRpcmVudHAtPmRfdHlwZQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvKiBMb29wIHRpbGwgd2UgZ2V0IGEgbm9uLWRvdCBkaXJlY3Rvcnkgb3IgZmluaXNoIGl0ZXJhdGluZyAqLworICAgIH0KKworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYKKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9kZWFsbG9jKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBQeV9YREVDUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisgICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisgICAgUHlfVFlQRShpdGVyYXRvciktPnRwX2ZyZWUoKFB5T2JqZWN0ICopaXRlcmF0b3IpOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNjYW5kaXJJdGVyYXRvclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9ETkFNRSAiLlNjYW5kaXJJdGVyYXRvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoU2NhbmRpckl0ZXJhdG9yKSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKVNjYW5kaXJJdGVyYXRvcl9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2FuZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisjaWZkZWYgTVNfV0lORE9XUworICAgIHdjaGFyX3QgKnBhdGhfc3RyVzsKKyNlbHNlCisgICAgY2hhciAqcGF0aDsKKyNlbmRpZgorCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CisgICAgaWYgKCFpdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtc2V0KCZpdGVyYXRvci0+cGF0aCwgMCwgc2l6ZW9mKHBhdGhfdCkpOworICAgIGl0ZXJhdG9yLT5wYXRoLmZ1bmN0aW9uX25hbWUgPSAic2NhbmRpciI7CisgICAgaXRlcmF0b3ItPnBhdGgubnVsbGFibGUgPSAxOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGl0ZXJhdG9yLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyNlbHNlCisgICAgaXRlcmF0b3ItPmRpcnAgPSBOVUxMOworI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6c2NhbmRpciIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmaXRlcmF0b3ItPnBhdGgpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogcGF0aF9jb252ZXJ0ZXIgZG9lc24ndCBrZWVwIHBhdGgub2JqZWN0IGFyb3VuZCwgc28gZG8gaXQKKyAgICAgICBtYW51YWxseSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBpdGVyYXRvciBoZXJlICh0aGUgcmVmY291bnQKKyAgICAgICBpcyBkZWNyZW1lbnRlZCBpbiBTY2FuZGlySXRlcmF0b3JfZGVhbGxvYykKKyAgICAqLworICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOworCisgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOworICAgIGlmICghcGF0aF9zdHJXKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGl0ZXJhdG9yLT5oYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhwYXRoX3N0clcsICZpdGVyYXRvci0+ZmlsZV9kYXRhKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZShwYXRoX3N0clcpOworCisgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbHNlIC8qIFBPU0lYICovCisgICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykKKyAgICAgICAgcGF0aCA9IGl0ZXJhdG9yLT5wYXRoLm5hcnJvdzsKKyAgICBlbHNlCisgICAgICAgIHBhdGggPSAiLiI7CisKKyAgICBlcnJubyA9IDA7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGl0ZXJhdG9yLT5kaXJwID0gb3BlbmRpcihwYXRoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkgeworICAgICAgICBwYXRoX2Vycm9yKCZpdGVyYXRvci0+cGF0aCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopaXRlcmF0b3I7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworI2luY2x1ZGUgImNsaW5pYy9wb3NpeG1vZHVsZS5jLmgiCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGR1bXAgYnVmZmVyCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0KLSNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWQwNzFiYmM4ZjQ5ZWExMiBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBvc2l4X21ldGhvZHNbXSA9IHsKQEAgLTExMjE4LDcxICsxMjE3OSwyNiBAQAogICAgIE9TX1NUQVRfTUVUSE9EREVGCiAgICAgT1NfQUNDRVNTX01FVEhPRERFRgogICAgIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0KLSAgICB7ImNoZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGRpcl9fZG9jX199LAotI2lmZGVmIEhBVkVfQ0hGTEFHUwotICAgIHsiY2hmbGFncyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hmbGFnc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwotICAgIHsiY2htb2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NobW9kLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NobW9kX19kb2NfX30sCi0jaWZkZWYgSEFWRV9GQ0hNT0QKLSAgICB7ImZjaG1vZCIsICAgICAgICAgIHBvc2l4X2ZjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2htb2RfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwotI2lmZGVmIEhBVkVfQ0hPV04KLSAgICB7ImNob3duIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG93biwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG93bl9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0xDSE1PRAotICAgIHsibGNobW9kIiwgICAgICAgICAgcG9zaXhfbGNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG1vZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENITU9EICovCi0jaWZkZWYgSEFWRV9GQ0hPV04KLSAgICB7ImZjaG93biIsICAgICAgICAgIHBvc2l4X2ZjaG93biwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2hvd25fX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZDSE9XTiAqLwotI2lmZGVmIEhBVkVfTENIRkxBR1MKLSAgICB7ImxjaGZsYWdzIiwgICAgICAgIHBvc2l4X2xjaGZsYWdzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaGZsYWdzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MQ0hGTEFHUyAqLwotI2lmZGVmIEhBVkVfTENIT1dOCi0gICAgeyJsY2hvd24iLCAgICAgICAgICBwb3NpeF9sY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfbGNob3duX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0NIUk9PVAotICAgIHsiY2hyb290IiwgICAgICAgICAgcG9zaXhfY2hyb290LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nocm9vdF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9DVEVSTUlECi0gICAgeyJjdGVybWlkIiwgICAgICAgICBwb3NpeF9jdGVybWlkLCBNRVRIX05PQVJHUywgcG9zaXhfY3Rlcm1pZF9fZG9jX199LAotI2VuZGlmCi0gICAgeyJnZXRjd2QiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0Y3dkX3VuaWNvZGUsCi0gICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZF9fZG9jX199LAotICAgIHsiZ2V0Y3dkYiIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF9ieXRlcywKLSAgICBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Y3dkYl9fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9MSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJsaW5rIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saW5rX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9MSU5LICovCi0gICAgeyJsaXN0ZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saXN0ZGlyX19kb2NfX30sCi0gICAgeyJsc3RhdCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbHN0YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbHN0YXRfX2RvY19ffSwKLSAgICB7Im1rZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2Rpcl9fZG9jX199LAotI2lmZGVmIEhBVkVfTklDRQotICAgIHsibmljZSIsICAgICAgICAgICAgcG9zaXhfbmljZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9uaWNlX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9OSUNFICovCi0jaWZkZWYgSEFWRV9HRVRQUklPUklUWQotICAgIHsiZ2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCi0jaWZkZWYgSEFWRV9TRVRQUklPUklUWQotICAgIHsic2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfc2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cHJpb3JpdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCisgICAgT1NfQ0hESVJfTUVUSE9EREVGCisgICAgT1NfQ0hGTEFHU19NRVRIT0RERUYKKyAgICBPU19DSE1PRF9NRVRIT0RERUYKKyAgICBPU19GQ0hNT0RfTUVUSE9EREVGCisgICAgT1NfTENITU9EX01FVEhPRERFRgorICAgIE9TX0NIT1dOX01FVEhPRERFRgorICAgIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyAgICBPU19MQ0hPV05fTUVUSE9EREVGCisgICAgT1NfTENIRkxBR1NfTUVUSE9EREVGCisgICAgT1NfQ0hST09UX01FVEhPRERFRgorICAgIE9TX0NURVJNSURfTUVUSE9EREVGCisgICAgT1NfR0VUQ1dEX01FVEhPRERFRgorICAgIE9TX0dFVENXREJfTUVUSE9EREVGCisgICAgT1NfTElOS19NRVRIT0RERUYKKyAgICBPU19MSVNURElSX01FVEhPRERFRgorICAgIE9TX0xTVEFUX01FVEhPRERFRgorICAgIE9TX01LRElSX01FVEhPRERFRgorICAgIE9TX05JQ0VfTUVUSE9EREVGCisgICAgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisgICAgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9SRUFETElOSwogICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlYWRsaW5rLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKQEAgLTExMjkzLDM3NiArMTIyMDksMTYyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCi0gICAgeyJyZW5hbWUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbmFtZV9fZG9jX199LAotICAgIHsicmVwbGFjZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlcGxhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVwbGFjZV9fZG9jX199LAotICAgIHsicm1kaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JtZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JtZGlyX19kb2NfX30sCisgICAgT1NfUkVOQU1FX01FVEhPRERFRgorICAgIE9TX1JFUExBQ0VfTUVUSE9EREVGCisgICAgT1NfUk1ESVJfTUVUSE9EREVGCiAgICAgeyJzdGF0X2Zsb2F0X3RpbWVzIiwgc3RhdF9mbG9hdF90aW1lcywgTUVUSF9WQVJBUkdTLCBzdGF0X2Zsb2F0X3RpbWVzX19kb2NfX30sCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCi0gICAgeyJzeW1saW5rIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3ltbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zeW1saW5rX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCi0jaWZkZWYgSEFWRV9TWVNURU0KLSAgICB7InN5c3RlbSIsICAgICAgICAgIHBvc2l4X3N5c3RlbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXN0ZW1fX2RvY19ffSwKLSNlbmRpZgotICAgIHsidW1hc2siLCAgICAgICAgICAgcG9zaXhfdW1hc2ssIE1FVEhfVkFSQVJHUywgcG9zaXhfdW1hc2tfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1VOQU1FCi0gICAgeyJ1bmFtZSIsICAgICAgICAgICBwb3NpeF91bmFtZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3VuYW1lX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9VTkFNRSAqLwotICAgIHsidW5saW5rIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF91bmxpbmtfX2RvY19ffSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZlX19kb2NfX30sCi0gICAgeyJ1dGltZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBwb3NpeF91dGltZV9fZG9jX199LAotI2lmZGVmIEhBVkVfVElNRVMKLSAgICB7InRpbWVzIiwgICAgICAgICAgIHBvc2l4X3RpbWVzLCBNRVRIX05PQVJHUywgcG9zaXhfdGltZXNfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1RJTUVTICovCi0gICAgeyJfZXhpdCIsICAgICAgICAgICBwb3NpeF9fZXhpdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9fZXhpdF9fZG9jX199LAotI2lmZGVmIEhBVkVfRVhFQ1YKLSAgICB7ImV4ZWN2IiwgICAgICAgICAgIHBvc2l4X2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2X19kb2NfX30sCi0gICAgeyJleGVjdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZXhlY3ZlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KLSNpZmRlZiBIQVZFX1NQQVdOVgotICAgIHsic3Bhd252IiwgICAgICAgICAgcG9zaXhfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NwYXdudl9fZG9jX199LAotICAgIHsic3Bhd252ZSIsICAgICAgICAgcG9zaXhfc3Bhd252ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZlX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TUEFXTlYgKi8KLSNpZmRlZiBIQVZFX0ZPUksxCi0gICAgeyJmb3JrMSIsICAgICAgIHBvc2l4X2ZvcmsxLCBNRVRIX05PQVJHUywgcG9zaXhfZm9yazFfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUksxICovCi0jaWZkZWYgSEFWRV9GT1JLCi0gICAgeyJmb3JrIiwgICAgICAgICAgICBwb3NpeF9mb3JrLCBNRVRIX05PQVJHUywgcG9zaXhfZm9ya19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfRk9SSyAqLwotI2lmZGVmIEhBVkVfU0NIRURfSAotI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQotICAgIHsic2NoZWRfZ2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9nZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKLSAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCi0gICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCi0gICAgeyJzY2hlZF9zZXRwYXJhbSIsIHBvc2l4X3NjaGVkX3NldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgotICAgIHsic2NoZWRfc2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJzY2hlZF95aWVsZCIsICAgICBwb3NpeF9zY2hlZF95aWVsZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NjaGVkX3lpZWxkX19kb2NfX30sCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQotICAgIHsic2NoZWRfc2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAotICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCi0jaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCi0gICAgeyJvcGVucHR5IiwgICAgICAgICBwb3NpeF9vcGVucHR5LCBNRVRIX05PQVJHUywgcG9zaXhfb3BlbnB0eV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfT1BFTlBUWSB8fCBIQVZFX19HRVRQVFkgfHwgSEFWRV9ERVZfUFRNWCAqLwotI2lmZGVmIEhBVkVfRk9SS1BUWQotICAgIHsiZm9ya3B0eSIsICAgICAgICAgcG9zaXhfZm9ya3B0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtwdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUktQVFkgKi8KLSNpZmRlZiBIQVZFX0dFVEVHSUQKLSAgICB7ImdldGVnaWQiLCAgICAgICAgIHBvc2l4X2dldGVnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRFR0lEICovCi0jaWZkZWYgSEFWRV9HRVRFVUlECi0gICAgeyJnZXRldWlkIiwgICAgICAgICBwb3NpeF9nZXRldWlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0ZXVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VURVVJRCAqLwotI2lmZGVmIEhBVkVfR0VUR0lECi0gICAgeyJnZXRnaWQiLCAgICAgICAgICBwb3NpeF9nZXRnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLworICAgIE9TX1NZTUxJTktfTUVUSE9EREVGCisgICAgT1NfU1lTVEVNX01FVEhPRERFRgorICAgIE9TX1VNQVNLX01FVEhPRERFRgorICAgIE9TX1VOQU1FX01FVEhPRERFRgorICAgIE9TX1VOTElOS19NRVRIT0RERUYKKyAgICBPU19SRU1PVkVfTUVUSE9EREVGCisgICAgT1NfVVRJTUVfTUVUSE9EREVGCisgICAgT1NfVElNRVNfTUVUSE9EREVGCisgICAgT1NfX0VYSVRfTUVUSE9EREVGCisgICAgT1NfRVhFQ1ZfTUVUSE9EREVGCisgICAgT1NfRVhFQ1ZFX01FVEhPRERFRgorICAgIE9TX1NQQVdOVl9NRVRIT0RERUYKKyAgICBPU19TUEFXTlZFX01FVEhPRERFRgorICAgIE9TX0ZPUksxX01FVEhPRERFRgorICAgIE9TX0ZPUktfTUVUSE9EREVGCisgICAgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9SUl9HRVRfSU5URVJWQUxfTUVUSE9EREVGCisgICAgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisgICAgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1lJRUxEX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRgorICAgIE9TX09QRU5QVFlfTUVUSE9EREVGCisgICAgT1NfRk9SS1BUWV9NRVRIT0RERUYKKyAgICBPU19HRVRFR0lEX01FVEhPRERFRgorICAgIE9TX0dFVEVVSURfTUVUSE9EREVGCisgICAgT1NfR0VUR0lEX01FVEhPRERFRgogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAgICAgeyJnZXRncm91cGxpc3QiLCAgICBwb3NpeF9nZXRncm91cGxpc3QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dFVEdST1VQUwotICAgIHsiZ2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfZ2V0Z3JvdXBzLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z3JvdXBzX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImdldHBpZCIsICAgICAgICAgIHBvc2l4X2dldHBpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHBpZF9fZG9jX199LAotI2lmZGVmIEhBVkVfR0VUUEdSUAotICAgIHsiZ2V0cGdycCIsICAgICAgICAgcG9zaXhfZ2V0cGdycCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX0dFVFBQSUQKLSAgICB7ImdldHBwaWQiLCAgICAgICAgIHBvc2l4X2dldHBwaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwcGlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQUElEICovCi0jaWZkZWYgSEFWRV9HRVRVSUQKLSAgICB7ImdldHVpZCIsICAgICAgICAgIHBvc2l4X2dldHVpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUVUlEICovCi0jaWZkZWYgSEFWRV9HRVRMT0dJTgotICAgIHsiZ2V0bG9naW4iLCAgICAgICAgcG9zaXhfZ2V0bG9naW4sIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2dpbl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9LSUxMCi0gICAgeyJraWxsIiwgICAgICAgICAgICBwb3NpeF9raWxsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2tpbGxfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0tJTEwgKi8KLSNpZmRlZiBIQVZFX0tJTExQRwotICAgIHsia2lsbHBnIiwgICAgICAgICAgcG9zaXhfa2lsbHBnLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2tpbGxwZ19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfS0lMTFBHICovCi0jaWZkZWYgSEFWRV9QTE9DSwotICAgIHsicGxvY2siLCAgICAgICAgICAgcG9zaXhfcGxvY2ssIE1FVEhfVkFSQVJHUywgcG9zaXhfcGxvY2tfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1BMT0NLICovCisgICAgT1NfR0VUR1JPVVBTX01FVEhPRERFRgorICAgIE9TX0dFVFBJRF9NRVRIT0RERUYKKyAgICBPU19HRVRQR1JQX01FVEhPRERFRgorICAgIE9TX0dFVFBQSURfTUVUSE9EREVGCisgICAgT1NfR0VUVUlEX01FVEhPRERFRgorICAgIE9TX0dFVExPR0lOX01FVEhPRERFRgorICAgIE9TX0tJTExfTUVUSE9EREVGCisgICAgT1NfS0lMTFBHX01FVEhPRERFRgorICAgIE9TX1BMT0NLX01FVEhPRERFRgogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKLSAgICB7ImtpbGwiLCAgICB3aW4zMl9raWxsLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2tpbGxfX2RvY19ffSwKICNlbmRpZgotI2lmZGVmIEhBVkVfU0VUVUlECi0gICAgeyJzZXR1aWQiLCAgICAgICAgICBwb3NpeF9zZXR1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0dWlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRVSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEVVSUQKLSAgICB7InNldGV1aWQiLCAgICAgICAgIHBvc2l4X3NldGV1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0ZXVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VURVVJRCAqLwotI2lmZGVmIEhBVkVfU0VURUdJRAotICAgIHsic2V0ZWdpZCIsICAgICAgICAgcG9zaXhfc2V0ZWdpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRFR0lEICovCi0jaWZkZWYgSEFWRV9TRVRSRVVJRAotICAgIHsic2V0cmV1aWQiLCAgICAgICAgcG9zaXhfc2V0cmV1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFJFVUlEICovCi0jaWZkZWYgSEFWRV9TRVRSRUdJRAotICAgIHsic2V0cmVnaWQiLCAgICAgICAgcG9zaXhfc2V0cmVnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFJFR0lEICovCi0jaWZkZWYgSEFWRV9TRVRHSUQKLSAgICB7InNldGdpZCIsICAgICAgICAgIHBvc2l4X3NldGdpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVEdJRCAqLwotI2lmZGVmIEhBVkVfU0VUR1JPVVBTCi0gICAgeyJzZXRncm91cHMiLCAgICAgICBwb3NpeF9zZXRncm91cHMsIE1FVEhfTywgcG9zaXhfc2V0Z3JvdXBzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRHUk9VUFMgKi8KKyAgICBPU19TRVRVSURfTUVUSE9EREVGCisgICAgT1NfU0VURVVJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRVVJRF9NRVRIT0RERUYKKyAgICBPU19TRVRHSURfTUVUSE9EREVGCisgICAgT1NfU0VURUdJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRUdJRF9NRVRIT0RERUYKKyAgICBPU19TRVRHUk9VUFNfTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9JTklUR1JPVVBTCiAgICAgeyJpbml0Z3JvdXBzIiwgICAgICBwb3NpeF9pbml0Z3JvdXBzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2luaXRncm91cHNfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0lOSVRHUk9VUFMgKi8KLSNpZmRlZiBIQVZFX0dFVFBHSUQKLSAgICB7ImdldHBnaWQiLCAgICAgICAgIHBvc2l4X2dldHBnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cGdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUUEdJRCAqLwotI2lmZGVmIEhBVkVfU0VUUEdSUAotICAgIHsic2V0cGdycCIsICAgICAgICAgcG9zaXhfc2V0cGdycCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX1dBSVQKLSAgICB7IndhaXQiLCAgICAgICAgICAgIHBvc2l4X3dhaXQsIE1FVEhfTk9BUkdTLCBwb3NpeF93YWl0X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUICovCi0jaWZkZWYgSEFWRV9XQUlUMwotICAgIHsid2FpdDMiLCAgICAgICAgICAgcG9zaXhfd2FpdDMsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDNfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVQzICovCi0jaWZkZWYgSEFWRV9XQUlUNAotICAgIHsid2FpdDQiLCAgICAgICAgICAgcG9zaXhfd2FpdDQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVQ0ICovCi0jaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQotICAgIHsid2FpdGlkIiwgICAgICAgICAgcG9zaXhfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRpZF9fZG9jX199LAotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpIHx8IGRlZmluZWQoSEFWRV9DV0FJVCkKLSAgICB7IndhaXRwaWQiLCAgICAgICAgIHBvc2l4X3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdHBpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCAqLwotI2lmZGVmIEhBVkVfR0VUU0lECi0gICAgeyJnZXRzaWQiLCAgICAgICAgICBwb3NpeF9nZXRzaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0c2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRTSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFNJRAotICAgIHsic2V0c2lkIiwgICAgICAgICAgcG9zaXhfc2V0c2lkLCBNRVRIX05PQVJHUywgcG9zaXhfc2V0c2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRTSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFBHSUQKLSAgICB7InNldHBnaWQiLCAgICAgICAgIHBvc2l4X3NldHBnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cGdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUUEdJRCAqLwotI2lmZGVmIEhBVkVfVENHRVRQR1JQCi0gICAgeyJ0Y2dldHBncnAiLCAgICAgICBwb3NpeF90Y2dldHBncnAsIE1FVEhfVkFSQVJHUywgcG9zaXhfdGNnZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9UQ0dFVFBHUlAgKi8KLSNpZmRlZiBIQVZFX1RDU0VUUEdSUAotICAgIHsidGNzZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Rjc2V0cGdycF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVENTRVRQR1JQICovCi0gICAgeyJvcGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfb3BlbixcCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfb3Blbl9fZG9jX199LAotICAgIHsiY2xvc2UiLCAgICAgICAgICAgcG9zaXhfY2xvc2VfLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlX19kb2NfX30sCi0gICAgeyJjbG9zZXJhbmdlIiwgICAgICBwb3NpeF9jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlcmFuZ2VfX2RvY19ffSwKLSAgICB7ImRldmljZV9lbmNvZGluZyIsIGRldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTLCBkZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKLSAgICB7ImR1cCIsICAgICAgICAgICAgIHBvc2l4X2R1cCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXBfX2RvY19ffSwKLSAgICB7ImR1cDIiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9kdXAyLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfZHVwMl9fZG9jX199LAotI2lmZGVmIEhBVkVfTE9DS0YKLSAgICB7ImxvY2tmIiwgICAgICAgICAgIHBvc2l4X2xvY2tmLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xvY2tmX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImxzZWVrIiwgICAgICAgICAgIHBvc2l4X2xzZWVrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzZWVrX19kb2NfX30sCi0gICAgeyJyZWFkIiwgICAgICAgICAgICBwb3NpeF9yZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1JFQURWCi0gICAgeyJyZWFkdiIsICAgICAgICAgICBwb3NpeF9yZWFkdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkdl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QUkVBRAotICAgIHsicHJlYWQiLCAgICAgICAgICAgcG9zaXhfcHJlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHJlYWRfX2RvY19ffSwKLSNlbmRpZgotICAgIHsid3JpdGUiLCAgICAgICAgICAgcG9zaXhfd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGVfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1dSSVRFVgotICAgIHsid3JpdGV2IiwgICAgICAgICAgcG9zaXhfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRldl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QV1JJVEUKLSAgICB7InB3cml0ZSIsICAgICAgICAgIHBvc2l4X3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wd3JpdGVfX2RvY19ffSwKLSNlbmRpZgorICAgIE9TX0dFVFBHSURfTUVUSE9EREVGCisgICAgT1NfU0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19XQUlUX01FVEhPRERFRgorICAgIE9TX1dBSVQzX01FVEhPRERFRgorICAgIE9TX1dBSVQ0X01FVEhPRERFRgorICAgIE9TX1dBSVRJRF9NRVRIT0RERUYKKyAgICBPU19XQUlUUElEX01FVEhPRERFRgorICAgIE9TX0dFVFNJRF9NRVRIT0RERUYKKyAgICBPU19TRVRTSURfTUVUSE9EREVGCisgICAgT1NfU0VUUEdJRF9NRVRIT0RERUYKKyAgICBPU19UQ0dFVFBHUlBfTUVUSE9EREVGCisgICAgT1NfVENTRVRQR1JQX01FVEhPRERFRgorICAgIE9TX09QRU5fTUVUSE9EREVGCisgICAgT1NfQ0xPU0VfTUVUSE9EREVGCisgICAgT1NfQ0xPU0VSQU5HRV9NRVRIT0RERUYKKyAgICBPU19ERVZJQ0VfRU5DT0RJTkdfTUVUSE9EREVGCisgICAgT1NfRFVQX01FVEhPRERFRgorICAgIE9TX0RVUDJfTUVUSE9EREVGCisgICAgT1NfTE9DS0ZfTUVUSE9EREVGCisgICAgT1NfTFNFRUtfTUVUSE9EREVGCisgICAgT1NfUkVBRF9NRVRIT0RERUYKKyAgICBPU19SRUFEVl9NRVRIT0RERUYKKyAgICBPU19QUkVBRF9NRVRIT0RERUYKKyAgICBPU19XUklURV9NRVRIT0RERUYKKyAgICBPU19XUklURVZfTUVUSE9EREVGCisgICAgT1NfUFdSSVRFX01FVEhPRERFRgogI2lmZGVmIEhBVkVfU0VOREZJTEUKICAgICB7InNlbmRmaWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zZW5kZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zZW5kZmlsZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJmc3RhdCIsICAgICAgICAgICBwb3NpeF9mc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdF9fZG9jX199LAotICAgIHsiaXNhdHR5IiwgICAgICAgICAgcG9zaXhfaXNhdHR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2lzYXR0eV9fZG9jX199LAotI2lmZGVmIEhBVkVfUElQRQotICAgIHsicGlwZSIsICAgICAgICAgICAgcG9zaXhfcGlwZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3BpcGVfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUElQRTIKLSAgICB7InBpcGUyIiwgICAgICAgICAgIHBvc2l4X3BpcGUyLCBNRVRIX08sIHBvc2l4X3BpcGUyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX01LRklGTwotICAgIHsibWtmaWZvIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZmlmbywKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi0gICAgeyJta25vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtub2QsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtub2RfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwotICAgIHsibWFqb3IiLCAgICAgICAgICAgcG9zaXhfbWFqb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWFqb3JfX2RvY19ffSwKLSAgICB7Im1pbm9yIiwgICAgICAgICAgIHBvc2l4X21pbm9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21pbm9yX19kb2NfX30sCi0gICAgeyJtYWtlZGV2IiwgICAgICAgICBwb3NpeF9tYWtlZGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ha2VkZXZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCi0gICAgeyJmdHJ1bmNhdGUiLCAgICAgICBwb3NpeF9mdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnRydW5jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1RSVU5DQVRFCi0gICAgeyJ0cnVuY2F0ZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdHJ1bmNhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdHJ1bmNhdGVfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLSAgICB7InBvc2l4X2ZhbGxvY2F0ZSIsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQURWSVNFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi0gICAgeyJwb3NpeF9mYWR2aXNlIiwgICBwb3NpeF9wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFVURU5WCi0gICAgeyJwdXRlbnYiLCAgICAgICAgICBwb3NpeF9wdXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHV0ZW52X19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1VOU0VURU5WCi0gICAgeyJ1bnNldGVudiIsICAgICAgICBwb3NpeF91bnNldGVudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF91bnNldGVudl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJzdHJlcnJvciIsICAgICAgICBwb3NpeF9zdHJlcnJvciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdHJlcnJvcl9fZG9jX199LAotI2lmZGVmIEhBVkVfRkNIRElSCi0gICAgeyJmY2hkaXIiLCAgICAgICAgICBwb3NpeF9mY2hkaXIsIE1FVEhfTywgcG9zaXhfZmNoZGlyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZTWU5DCi0gICAgeyJmc3luYyIsICAgICAgIHBvc2l4X2ZzeW5jLCBNRVRIX08sIHBvc2l4X2ZzeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZTkMKLSAgICB7InN5bmMiLCAgICAgICAgcG9zaXhfc3luYywgTUVUSF9OT0FSR1MsIHBvc2l4X3N5bmNfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfRkRBVEFTWU5DCi0gICAgeyJmZGF0YXN5bmMiLCAgIHBvc2l4X2ZkYXRhc3luYywgIE1FVEhfTywgcG9zaXhfZmRhdGFzeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19XQUlUX0gKLSNpZmRlZiBXQ09SRURVTVAKLSAgICB7IldDT1JFRFVNUCIsICAgICAgIHBvc2l4X1dDT1JFRFVNUCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XQ09SRURVTVBfX2RvY19ffSwKLSNlbmRpZiAvKiBXQ09SRURVTVAgKi8KLSNpZmRlZiBXSUZDT05USU5VRUQKLSAgICB7IldJRkNPTlRJTlVFRCIscG9zaXhfV0lGQ09OVElOVUVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRkNPTlRJTlVFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRkNPTlRJTlVFRCAqLwotI2lmZGVmIFdJRlNUT1BQRUQKLSAgICB7IldJRlNUT1BQRUQiLCAgICAgIHBvc2l4X1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0lGU1RPUFBFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRlNUT1BQRUQgKi8KLSNpZmRlZiBXSUZTSUdOQUxFRAotICAgIHsiV0lGU0lHTkFMRUQiLCAgICAgcG9zaXhfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0lGU0lHTkFMRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZTSUdOQUxFRCAqLwotI2lmZGVmIFdJRkVYSVRFRAotICAgIHsiV0lGRVhJVEVEIiwgICAgICAgcG9zaXhfV0lGRVhJVEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRkVYSVRFRF9fZG9jX199LAotI2VuZGlmIC8qIFdJRkVYSVRFRCAqLwotI2lmZGVmIFdFWElUU1RBVFVTCi0gICAgeyJXRVhJVFNUQVRVUyIsICAgICBwb3NpeF9XRVhJVFNUQVRVUywgTUVUSF9WQVJBUkdTLCBwb3NpeF9XRVhJVFNUQVRVU19fZG9jX199LAotI2VuZGlmIC8qIFdFWElUU1RBVFVTICovCi0jaWZkZWYgV1RFUk1TSUcKLSAgICB7IldURVJNU0lHIiwgICAgICAgIHBvc2l4X1dURVJNU0lHLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dURVJNU0lHX19kb2NfX30sCi0jZW5kaWYgLyogV1RFUk1TSUcgKi8KLSNpZmRlZiBXU1RPUFNJRwotICAgIHsiV1NUT1BTSUciLCAgICAgICAgcG9zaXhfV1NUT1BTSUcsIE1FVEhfVkFSQVJHUywgcG9zaXhfV1NUT1BTSUdfX2RvY19ffSwKLSNlbmRpZiAvKiBXU1RPUFNJRyAqLwotI2VuZGlmIC8qIEhBVkVfU1lTX1dBSVRfSCAqLwotI2lmIGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCi0gICAgeyJmc3RhdHZmcyIsICAgICAgICBwb3NpeF9mc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdHZmc19fZG9jX199LAotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsic3RhdHZmcyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXR2ZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdHZmc19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9DT05GU1RSCi0gICAgeyJjb25mc3RyIiwgICAgICAgICBwb3NpeF9jb25mc3RyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NvbmZzdHJfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTQ09ORgotICAgIHsic3lzY29uZiIsICAgICAgICAgcG9zaXhfc3lzY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXNjb25mX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotICAgIHsiZnBhdGhjb25mIiwgICAgICAgcG9zaXhfZnBhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZwYXRoY29uZl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QQVRIQ09ORgotICAgIHsicGF0aGNvbmYiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3BhdGhjb25mLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCi0jZW5kaWYKLSAgICB7ImFib3J0IiwgICAgICAgICAgIHBvc2l4X2Fib3J0LCBNRVRIX05PQVJHUywgcG9zaXhfYWJvcnRfX2RvY19ffSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJfZ2V0ZnVsbHBhdGhuYW1lIiwgICAgICAgIHBvc2l4X19nZXRmdWxscGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsICAgICAgIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX2lzZGlyIiwgICAgICAgICAgICAgICAgICBwb3NpeF9faXNkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2lzZGlyX19kb2NfX30sCi0gICAgeyJfZ2V0ZGlza3VzYWdlIiwgICAgICAgICAgIHdpbjMyX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHUywgd2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX199LAotICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgICAgICBwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVExPQURBVkcKLSAgICB7ImdldGxvYWRhdmciLCAgICAgIHBvc2l4X2dldGxvYWRhdmcsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2FkYXZnX19kb2NfX30sCi0jZW5kaWYKLSAgICB7InVyYW5kb20iLCAgICAgICAgIHBvc2l4X3VyYW5kb20sICAgTUVUSF9WQVJBUkdTLCBwb3NpeF91cmFuZG9tX19kb2NfX30sCi0jaWZkZWYgSEFWRV9TRVRSRVNVSUQKLSAgICB7InNldHJlc3VpZCIsICAgICAgIHBvc2l4X3NldHJlc3VpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRyZXN1aWRfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0VUUkVTR0lECi0gICAgeyJzZXRyZXNnaWQiLCAgICAgICBwb3NpeF9zZXRyZXNnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVzZ2lkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVFJFU1VJRAotICAgIHsiZ2V0cmVzdWlkIiwgICAgICAgcG9zaXhfZ2V0cmVzdWlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzdWlkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0dFVFJFU0dJRAotICAgIHsiZ2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzZ2lkX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19GU1RBVF9NRVRIT0RERUYKKyAgICBPU19JU0FUVFlfTUVUSE9EREVGCisgICAgT1NfUElQRV9NRVRIT0RERUYKKyAgICBPU19QSVBFMl9NRVRIT0RERUYKKyAgICBPU19NS0ZJRk9fTUVUSE9EREVGCisgICAgT1NfTUtOT0RfTUVUSE9EREVGCisgICAgT1NfTUFKT1JfTUVUSE9EREVGCisgICAgT1NfTUlOT1JfTUVUSE9EREVGCisgICAgT1NfTUFLRURFVl9NRVRIT0RERUYKKyAgICBPU19GVFJVTkNBVEVfTUVUSE9EREVGCisgICAgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgT1NfUE9TSVhfRkFMTE9DQVRFX01FVEhPRERFRgorICAgIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisgICAgT1NfUFVURU5WX01FVEhPRERFRgorICAgIE9TX1VOU0VURU5WX01FVEhPRERFRgorICAgIE9TX1NUUkVSUk9SX01FVEhPRERFRgorICAgIE9TX0ZDSERJUl9NRVRIT0RERUYKKyAgICBPU19GU1lOQ19NRVRIT0RERUYKKyAgICBPU19TWU5DX01FVEhPRERFRgorICAgIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyAgICBPU19XQ09SRURVTVBfTUVUSE9EREVGCisgICAgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRgorICAgIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisgICAgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisgICAgT1NfV0lGRVhJVEVEX01FVEhPRERFRgorICAgIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRgorICAgIE9TX1dURVJNU0lHX01FVEhPRERFRgorICAgIE9TX1dTVE9QU0lHX01FVEhPRERFRgorICAgIE9TX0ZTVEFUVkZTX01FVEhPRERFRgorICAgIE9TX1NUQVRWRlNfTUVUSE9EREVGCisgICAgT1NfQ09ORlNUUl9NRVRIT0RERUYKKyAgICBPU19TWVNDT05GX01FVEhPRERFRgorICAgIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyAgICBPU19QQVRIQ09ORl9NRVRIT0RERUYKKyAgICBPU19BQk9SVF9NRVRIT0RERUYKKyAgICBPU19fR0VURlVMTFBBVEhOQU1FX01FVEhPRERFRgorICAgIE9TX19JU0RJUl9NRVRIT0RERUYKKyAgICBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRgorICAgIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRgorICAgIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19HRVRMT0FEQVZHX01FVEhPRERFRgorICAgIE9TX1VSQU5ET01fTUVUSE9EREVGCisgICAgT1NfU0VUUkVTVUlEX01FVEhPRERFRgorICAgIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyAgICBPU19HRVRSRVNVSURfTUVUSE9EREVGCisgICAgT1NfR0VUUkVTR0lEX01FVEhPRERFRgogCi0jaWZkZWYgVVNFX1hBVFRSUwotICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfc2V0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X3NldHhhdHRyX19kb2NfX30sCi0gICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9nZXR4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfZ2V0eGF0dHJfX2RvY19ffSwKLSAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbW92ZXhhdHRyLAotICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX199LAotICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3R4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdHhhdHRyX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19HRVRYQVRUUl9NRVRIT0RERUYKKyAgICBPU19TRVRYQVRUUl9NRVRIT0RERUYKKyAgICBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYKKyAgICBPU19MSVNUWEFUVFJfTUVUSE9EREVGCisKICNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCiAgICAgeyJnZXRfdGVybWluYWxfc2l6ZSIsIGdldF90ZXJtaW5hbF9zaXplLCBNRVRIX1ZBUkFSR1MsIHRlcm1zaXplX19kb2NfX30sCiAjZW5kaWYKLSAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilwb3NpeF9jcHVfY291bnQsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgcG9zaXhfY3B1X2NvdW50X19kb2NfX30sCi0gICAgeyJnZXRfaW5oZXJpdGFibGUiLCBwb3NpeF9nZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgZ2V0X2luaGVyaXRhYmxlX19kb2NfX30sCi0gICAgeyJzZXRfaW5oZXJpdGFibGUiLCBwb3NpeF9zZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgc2V0X2luaGVyaXRhYmxlX19kb2NfX30sCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIHBvc2l4X2dldF9oYW5kbGVfaW5oZXJpdGFibGUsCi0gICAgIE1FVEhfVkFSQVJHUywgZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAotICAgIHsic2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIHBvc2l4X3NldF9oYW5kbGVfaW5oZXJpdGFibGUsCi0gICAgIE1FVEhfVkFSQVJHUywgc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorICAgIE9TX0NQVV9DT1VOVF9NRVRIT0RERUYKKyAgICBPU19HRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgT1NfU0VUX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIHsiZ2V0X2Jsb2NraW5nIiwgcG9zaXhfZ2V0X2Jsb2NraW5nLCBNRVRIX1ZBUkFSR1MsIGdldF9ibG9ja2luZ19fZG9jX199LAorICAgIHsic2V0X2Jsb2NraW5nIiwgcG9zaXhfc2V0X2Jsb2NraW5nLCBNRVRIX1ZBUkFSR1MsIHNldF9ibG9ja2luZ19fZG9jX199LAogI2VuZGlmCisgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0xMjEwNSwxNSArMTI4MDcsNiBAQAogfQogCiAKLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotI2RlZmluZSBJTklURlVOQyBQeUluaXRfbnQKLSNkZWZpbmUgTU9ETkFNRSAibnQiCi0KLSNlbHNlCi0jZGVmaW5lIElOSVRGVU5DIFB5SW5pdF9wb3NpeAotI2RlZmluZSBNT0ROQU1FICJwb3NpeCIKLSNlbmRpZgotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHBvc2l4bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICBNT0ROQU1FLApAQCAtMTIxNzMsNyArMTI4NjYsNyBAQAogICAgICJIQVZFX0ZTVEFUVkZTIiwKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyNpZiBkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUwogICAgICJIQVZFX0ZUUlVOQ0FURSIsCiAjZW5kaWYKIApAQCAtMTIzMjcsMTMgKzEzMDIwLDE5IEBACiAgICAgICAgIHNjaGVkX3BhcmFtX2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zY2hlZF9wYXJhbSI7CiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU2NoZWRQYXJhbVR5cGUsICZzY2hlZF9wYXJhbV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gc2NoZWRfcGFyYW1fbmV3OworICAgICAgICBTY2hlZFBhcmFtVHlwZS50cF9uZXcgPSBvc19zY2hlZF9wYXJhbTsKICNlbmRpZgogCiAgICAgICAgIC8qIGluaXRpYWxpemUgVGVybWluYWxTaXplX2luZm8gKi8KICAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZUZXJtaW5hbFNpemVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlcm1pbmFsU2l6ZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICAvKiBpbml0aWFsaXplIHNjYW5kaXIgdHlwZXMgKi8KKyAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSgmU2NhbmRpckl0ZXJhdG9yVHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkoJkRpckVudHJ5VHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wd2Rtb2R1bGUuYyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKaW5kZXggZWJiODcxMi4uMjgxYzMwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCkBAIC02LDYgKzYsMTIgQEAKIAogI2luY2x1ZGUgPHB3ZC5oPgogCisjaW5jbHVkZSAiY2xpbmljL3B3ZG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgcHdkCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02MGY2MjhlZjM1NmI5N2I2XSovCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9wd2RfdHlwZV9maWVsZHNbXSA9IHsKICAgICB7InB3X25hbWUiLCAidXNlciBuYW1lIn0sCiAgICAgeyJwd19wYXNzd2QiLCAicGFzc3dvcmQifSwKQEAgLTg3LDE4ICs5MywyNSBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocHdkX2dldHB3dWlkX19kb2NfXywKLSJnZXRwd3VpZCh1aWQpIC0+IChwd19uYW1lLHB3X3Bhc3N3ZCxwd191aWQsXG5cCi0gICAgICAgICAgICAgICAgICBwd19naWQscHdfZ2Vjb3MscHdfZGlyLHB3X3NoZWxsKVxuXAotUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgdXNlciBJRC5cblwKLVNlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B3ZC5nZXRwd3VpZAorCisgICAgdWlkb2JqOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIHVzZXIgSUQuCisKK1NlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHdkX2dldHB3dWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B3ZF9nZXRwd3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqdWlkb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNiYTI5YWU0YzJiY2I4ZTEgaW5wdXQ9YWU2NGQ1MDdhMWM2ZDNlOF0qLwogewogICAgIHVpZF90IHVpZDsKICAgICBzdHJ1Y3QgcGFzc3dkICpwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6Z2V0cHd1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpIHsKKworICAgIGlmICghX1B5X1VpZF9Db252ZXJ0ZXIodWlkb2JqLCAmdWlkKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0cHd1aWQoKTogdWlkIG5vdCBmb3VuZCIpOwpAQCAtMTE2LDIxICsxMjksMjUgQEAKICAgICByZXR1cm4gbWtwd2VudChwKTsKIH0KIAotUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd25hbV9fZG9jX18sCi0iZ2V0cHduYW0obmFtZSkgLT4gKHB3X25hbWUscHdfcGFzc3dkLHB3X3VpZCxcblwKLSAgICAgICAgICAgICAgICAgICAgcHdfZ2lkLHB3X2dlY29zLHB3X2Rpcixwd19zaGVsbClcblwKLVJldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG5cCi1TZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitwd2QuZ2V0cHduYW0KKworICAgIGFyZzogdW5pY29kZQorICAgIC8KKworUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KKworU2VlIGBoZWxwKHB3ZClgIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wd2RfZ2V0cHduYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHdkX2dldHB3bmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02Njg0OGQ0MmQzODZmY2EzIGlucHV0PWQ1ZjdlNzAwOTE5YjAyZDNdKi8KIHsKICAgICBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBwYXNzd2QgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldHB3bmFtIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZykpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQpAQCAtMTQ3LDE0ICsxNjQsMTcgQEAKIH0KIAogI2lmZGVmIEhBVkVfR0VUUFdFTlQKLVB5RG9jX1NUUlZBUihwd2RfZ2V0cHdhbGxfX2RvY19fLAotImdldHB3YWxsKCkgLT4gbGlzdF9vZl9lbnRyaWVzXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgXAotaW4gYXJiaXRyYXJ5IG9yZGVyLlxuXAotU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorcHdkLmdldHB3YWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK1NlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXB3ZF9nZXRwd2FsbChQeU9iamVjdCAqc2VsZikKK3B3ZF9nZXRwd2FsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWIzMGUzN2JmMjZkNDMxZCBpbnB1dD1kN2VjZWJmZDkwMjE5Yjg1XSovCiB7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgc3RydWN0IHBhc3N3ZCAqcDsKQEAgLTE3NywxMSArMTk3LDEwIEBACiAjZW5kaWYKIAogc3RhdGljIFB5TWV0aG9kRGVmIHB3ZF9tZXRob2RzW10gPSB7Ci0gICAgeyJnZXRwd3VpZCIsICAgICAgICBwd2RfZ2V0cHd1aWQsIE1FVEhfVkFSQVJHUywgcHdkX2dldHB3dWlkX19kb2NfX30sCi0gICAgeyJnZXRwd25hbSIsICAgICAgICBwd2RfZ2V0cHduYW0sIE1FVEhfVkFSQVJHUywgcHdkX2dldHB3bmFtX19kb2NfX30sCisgICAgUFdEX0dFVFBXVUlEX01FVEhPRERFRgorICAgIFBXRF9HRVRQV05BTV9NRVRIT0RERUYKICNpZmRlZiBIQVZFX0dFVFBXRU5UCi0gICAgeyJnZXRwd2FsbCIsICAgICAgICAoUHlDRnVuY3Rpb24pcHdkX2dldHB3YWxsLAotICAgICAgICBNRVRIX05PQVJHUywgIHB3ZF9nZXRwd2FsbF9fZG9jX199LAorICAgIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKICNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCAxOWJlMGM3Li5hNDM4ODdlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtNiw2ICs2LDEzIEBACiAKICNpbmNsdWRlICJweWV4cGF0LmgiCiAKKy8qIERvIG5vdCBlbWl0IENsaW5pYyBvdXRwdXQgdG8gYSBmaWxlIGFzIHRoYXQgd3JlYWtzIGhhdm9jIHdpdGggY29uZGl0aW9uYWxseQorICAgaW5jbHVkZWQgbWV0aG9kcy4gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBweWV4cGF0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMTY4ZDUwM2E0NDkwYzE1XSovCisKICNkZWZpbmUgWE1MX0NPTUJJTkVEX1ZFUlNJT04gKDEwMDAwKlhNTF9NQUpPUl9WRVJTSU9OKzEwMCpYTUxfTUlOT1JfVkVSU0lPTitYTUxfTUlDUk9fVkVSU0lPTikKIAogc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgRXhwYXRNZW1vcnlIYW5kbGVyID0gewpAQCAtNjEsNiArNjgsOCBAQAogICAgIFB5T2JqZWN0ICoqaGFuZGxlcnM7CiB9IHhtbHBhcnNlb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3B5ZXhwYXQuYy5oIgorCiAjZGVmaW5lIENIQVJBQ1RFUl9EQVRBX0JVRkZFUl9TSVpFIDgxOTIKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYbWxwYXJzZXR5cGU7CkBAIC02NzEsNiArNjgwLDExIEBACiBWT0lEX0hBTkRMRVIoRW5kRG9jdHlwZURlY2wsICh2b2lkICp1c2VyRGF0YSksICgiKCkiKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypbY2xpbmljIGlucHV0XQorY2xhc3MgcHlleHBhdC54bWxwYXJzZXIgInhtbHBhcnNlb2JqZWN0ICoiICImWG1scGFyc2V0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjM5MzE2MjM4NTIzMmUxY10qLworCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfcGFyc2VfcmVzdWx0KHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgcnYpCkBAIC02ODcsMjUgKzcwMSwzMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocnYpOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfUGFyc2VfX2RvY19fLAotIlBhcnNlKGRhdGFbLCBpc2ZpbmFsXSlcblwKLVBhcnNlIFhNTCBkYXRhLiAgYGlzZmluYWwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4iKTsKLQogI2RlZmluZSBNQVhfQ0hVTktfU0laRSAoMSA8PCAyMCkKIAorLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuUGFyc2UKKworICAgIGRhdGE6IG9iamVjdAorICAgIGlzZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworCitQYXJzZSBYTUwgZGF0YS4KKworYGlzZmluYWwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1BhcnNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNGRiODQzZGQxZjRlZDRiIGlucHV0PTE5OWQ5ZThlOTJlYmJiNGJdKi8KIHsKLSAgICBQeU9iamVjdCAqZGF0YTsKLSAgICBpbnQgaXNGaW5hbCA9IDA7CiAgICAgY29uc3QgY2hhciAqczsKICAgICBQeV9zc2l6ZV90IHNsZW47CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgaW50IHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLCAmZGF0YSwgJmlzRmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgdmlldy5idWYgPSBOVUxMOwogICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoZGF0YSwgJnNsZW4pOwpAQCAtNzI5LDcgKzc0OCw3IEBACiAgICAgICAgIHNsZW4gLT0gTUFYX0NIVU5LX1NJWkU7CiAgICAgfQogICAgIGFzc2VydChNQVhfQ0hVTktfU0laRSA8IElOVF9NQVggJiYgc2xlbiA8IElOVF9NQVgpOwotICAgIHJjID0gWE1MX1BhcnNlKHNlbGYtPml0c2VsZiwgcywgKGludClzbGVuLCBpc0ZpbmFsKTsKKyAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNmaW5hbCk7CiAKIGRvbmU6CiAgICAgaWYgKHZpZXcuYnVmICE9IE5VTEwpCkBAIC03ODAsMTggKzc5OSwyNCBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1BhcnNlRmlsZV9fZG9jX18sCi0iUGFyc2VGaWxlKGZpbGUpXG5cCi1QYXJzZSBYTUwgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5QYXJzZUZpbGUKKworICAgIGZpbGU6IG9iamVjdAorICAgIC8KKworUGFyc2UgWE1MIGRhdGEgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfUGFyc2VGaWxlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZikKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlRmlsZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmFkYzZhMTMxMDBjYzQyYiBpbnB1dD1mYmI1YTEyYjYwMzhkNzM1XSovCiB7CiAgICAgaW50IHJ2ID0gMTsKICAgICBQeU9iamVjdCAqcmVhZG1ldGhvZCA9IE5VTEw7CiAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKLSAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkKTsKKyAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkKTsKICAgICBpZiAocmVhZG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUiKTsKQEAgLTgyMyw0MiArODQ4LDUwIEBACiAgICAgcmV0dXJuIGdldF9wYXJzZV9yZXN1bHQoc2VsZiwgcnYpOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfU2V0QmFzZV9fZG9jX18sCi0iU2V0QmFzZShiYXNlX3VybClcblwKLVNldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5TZXRCYXNlCisKKyAgICBiYXNlOiBzdHIKKyAgICAvCisKK1NldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9TZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqYmFzZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMjEyZGRjZWI2MDdiNTM5IGlucHV0PWM2ODRlNWRlODk1ZWUxYThdKi8KIHsKLSAgICBjaGFyICpiYXNlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOlNldEJhc2UiLCAmYmFzZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghWE1MX1NldEJhc2Uoc2VsZi0+aXRzZWxmLCBiYXNlKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfR2V0QmFzZV9fZG9jX18sCi0iR2V0QmFzZSgpIC0+IHVybFxuXAotUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkdldEJhc2UKKworUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX0dldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg4NmNiMjFmOWE4NzM5YSBpbnB1dD05MThkNzFjMzgwMDk2MjBlXSovCiB7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInoiLCBYTUxfR2V0QmFzZShzZWxmLT5pdHNlbGYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX0dldElucHV0Q29udGV4dF9fZG9jX18sCi0iR2V0SW5wdXRDb250ZXh0KCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC5cblwKLUlmIHRoZSBldmVudCB3YXMgZ2VuZXJhdGVkIGJ5IGEgbGFyZ2UgYW1vdW50IG9mIHRleHQgKHN1Y2ggYXMgYSBzdGFydCB0YWdcblwKLWZvciBhbiBlbGVtZW50IHdpdGggbWFueSBhdHRyaWJ1dGVzKSwgbm90IGFsbCBvZiB0aGUgdGV4dCBtYXkgYmUgYXZhaWxhYmxlLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuR2V0SW5wdXRDb250ZXh0CisKK1JldHVybiB0aGUgdW50cmFuc2xhdGVkIHRleHQgb2YgdGhlIGlucHV0IHRoYXQgY2F1c2VkIHRoZSBjdXJyZW50IGV2ZW50LgorCitJZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnCitmb3IgYW4gZWxlbWVudCB3aXRoIG1hbnkgYXR0cmlidXRlcyksIG5vdCBhbGwgb2YgdGhlIHRleHQgbWF5IGJlIGF2YWlsYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX0dldElucHV0Q29udGV4dCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3B5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4ODAyNmQ2ODNmYzIyY2MgaW5wdXQ9MDM0ZGY4NzEyZGI2ODM3OV0qLwogewogICAgIGlmIChzZWxmLT5pbl9jYWxsYmFjaykgewogICAgICAgICBpbnQgb2Zmc2V0LCBzaXplOwpAQCAtODc1LDI0ICs5MDgsMjUgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9fZG9jX18sCi0iRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoY29udGV4dFssIGVuY29kaW5nXSlcblwKLUNyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlXG5cCi1pbmZvcm1hdGlvbiBwYXNzZWQgdG8gdGhlIEV4dGVybmFsRW50aXR5UmVmSGFuZGxlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlCisKKyAgICBjb250ZXh0OiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBlbmNvZGluZzogc3RyID0gTlVMTAorICAgIC8KKworQ3JlYXRlIGEgcGFyc2VyIGZvciBwYXJzaW5nIGFuIGV4dGVybmFsIGVudGl0eSBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzVjZGE5ZDdhMGZiY2Q2IGlucHV0PWI5MDY3MTRjYzEyMmMzMjJdKi8KIHsKLSAgICBjaGFyICpjb250ZXh0OwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICB4bWxwYXJzZW9iamVjdCAqbmV3X3BhcnNlcjsKICAgICBpbnQgaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienxzOkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgbmV3X3BhcnNlciA9IFB5T2JqZWN0X0dDX05ldyh4bWxwYXJzZW9iamVjdCwgJlhtbHBhcnNldHlwZSk7CiAgICAgaWYgKG5ld19wYXJzZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NDgsNDEgKzk4Miw0OSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfcGFyc2VyOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX19kb2NfXywKLSJTZXRQYXJhbUVudGl0eVBhcnNpbmcoZmxhZykgLT4gc3VjY2Vzc1xuXAotQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREXG5cCi1zdWJzZXQpLiBQb3NzaWJsZSBmbGFnIHZhbHVlcyBhcmUgWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSLFxuXAotWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX1VOTEVTU19TVEFOREFMT05FIGFuZFxuXAotWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX0FMV0FZUy4gUmV0dXJucyB0cnVlIGlmIHNldHRpbmcgdGhlIGZsYWdcblwKLXdhcyBzdWNjZXNzZnVsLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuU2V0UGFyYW1FbnRpdHlQYXJzaW5nCiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZyh4bWxwYXJzZW9iamVjdCAqcCwgUHlPYmplY3QqIGFyZ3MpCisgICAgZmxhZzogaW50CisgICAgLworCitDb250cm9scyBwYXJzaW5nIG9mIHBhcmFtZXRlciBlbnRpdGllcyAoaW5jbHVkaW5nIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0KS4KKworUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUiwKK1hNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORSBhbmQKK1hNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnCit3YXMgc3VjY2Vzc2Z1bC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xODY2OGVlOGU3NjBkNjRjIGlucHV0PThhZWExOWI0YjE1ZTlhZjFdKi8KIHsKLSAgICBpbnQgZmxhZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmZmxhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZsYWcgPSBYTUxfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHAtPml0c2VsZiwgZmxhZyk7CisgICAgZmxhZyA9IFhNTF9TZXRQYXJhbUVudGl0eVBhcnNpbmcoc2VsZi0+aXRzZWxmLCBmbGFnKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGZsYWcpOwogfQogCiAKICNpZiBYTUxfQ09NQklORURfVkVSU0lPTiA+PSAxOTUwNQotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1VzZUZvcmVpZ25EVERfX2RvY19fLAotIlVzZUZvcmVpZ25EVEQoW2ZsYWddKVxuXAotQWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBwcm92aWRlIGFuIGFydGlmaWNpYWwgZXh0ZXJuYWwgc3Vic2V0IGlmIG9uZSBpc1xuXAotbm90IHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCBpbnN0YW5jZS4gIFRoaXMgcmVhZGlseSBhbGxvd3MgdGhlXG5cCi11c2Ugb2YgYSAnZGVmYXVsdCcgZG9jdW1lbnQgdHlwZSBjb250cm9sbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGxcblwKLWdldHRpbmcgdGhlIGFkdmFudGFnZSBvZiBwcm92aWRpbmcgZG9jdW1lbnQgdHlwZSBpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLlxuXAotJ2ZsYWcnIGRlZmF1bHRzIHRvIFRydWUgaWYgbm90IHByb3ZpZGVkLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuVXNlRm9yZWlnbkRURAorCisgICAgZmxhZzogYm9vbCA9IFRydWUKKyAgICAvCisKK0FsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gcHJvdmlkZSBhbiBhcnRpZmljaWFsIGV4dGVybmFsIHN1YnNldCBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCBpbnN0YW5jZS4KKworVGhpcyByZWFkaWx5IGFsbG93cyB0aGUgdXNlIG9mIGEgJ2RlZmF1bHQnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGUKK2FwcGxpY2F0aW9uLCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGUKK2luZm9ybWF0aW9uIHRvIHRoZSBwYXJzZXIuICdmbGFnJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1VzZUZvcmVpZ25EVEQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZmFhOWFhNTBiYjBmNjVjIGlucHV0PTc4MTQ0YzUxOWQxMTZhNmVdKi8KIHsKLSAgICBpbnQgZmxhZyA9IDE7CiAgICAgZW51bSBYTUxfRXJyb3IgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwgJmZsYWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJjID0gWE1MX1VzZUZvcmVpZ25EVEQoc2VsZi0+aXRzZWxmLCBmbGFnID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgIGlmIChyYyAhPSBYTUxfRVJST1JfTk9ORSkgewogICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlbGYsIHJjKTsKQEAgLTk5MiwyOSArMTAzNCw3MCBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqeG1scGFyc2VfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCogbm9hcmdzKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLl9fZGlyX18KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX19fZGlyX19faW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzIyNDUxZWZiOWU0ZDE3IGlucHV0PTc2YWE0NTVmMmE2NjEzODRdKi8KK3sKKyNkZWZpbmUgQVBQRU5EKGxpc3QsIHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdHIpOyAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChvICE9IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKGxpc3QsIG8pOyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlICgwKQorCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKnJjID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIXJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm8gPSBnZXRfaGFuZGxlcl9uYW1lKCZoYW5kbGVyX2luZm9baV0pOworICAgICAgICBpZiAobyAhPSBOVUxMKQorICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChyYywgbyk7CisgICAgICAgIFB5X1hERUNSRUYobyk7CisgICAgfQorICAgIEFQUEVORChyYywgIkVycm9yQ29kZSIpOworICAgIEFQUEVORChyYywgIkVycm9yTGluZU51bWJlciIpOworICAgIEFQUEVORChyYywgIkVycm9yQ29sdW1uTnVtYmVyIik7CisgICAgQVBQRU5EKHJjLCAiRXJyb3JCeXRlSW5kZXgiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50TGluZU51bWJlciIpOworICAgIEFQUEVORChyYywgIkN1cnJlbnRDb2x1bW5OdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50Qnl0ZUluZGV4Iik7CisgICAgQVBQRU5EKHJjLCAiYnVmZmVyX3NpemUiKTsKKyAgICBBUFBFTkQocmMsICJidWZmZXJfdGV4dCIpOworICAgIEFQUEVORChyYywgImJ1ZmZlcl91c2VkIik7CisgICAgQVBQRU5EKHJjLCAibmFtZXNwYWNlX3ByZWZpeGVzIik7CisgICAgQVBQRU5EKHJjLCAib3JkZXJlZF9hdHRyaWJ1dGVzIik7CisgICAgQVBQRU5EKHJjLCAic3BlY2lmaWVkX2F0dHJpYnV0ZXMiKTsKKyAgICBBUFBFTkQocmMsICJpbnRlcm4iKTsKKworI3VuZGVmIEFQUEVORAorCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHJjKTsKKyAgICAgICAgcmMgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiB4bWxwYXJzZV9tZXRob2RzW10gPSB7Ci0gICAgeyJQYXJzZSIsICAgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfUGFyc2UsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1BhcnNlX19kb2NfX30sCi0gICAgeyJQYXJzZUZpbGUiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfUGFyc2VGaWxlLAotICAgICAgICAgICAgICAgICAgTUVUSF9PLCAgICAgICB4bWxwYXJzZV9QYXJzZUZpbGVfX2RvY19ffSwKLSAgICB7IlNldEJhc2UiLCAgIChQeUNGdW5jdGlvbil4bWxwYXJzZV9TZXRCYXNlLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9TZXRCYXNlX19kb2NfX30sCi0gICAgeyJHZXRCYXNlIiwgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfR2V0QmFzZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCB4bWxwYXJzZV9HZXRCYXNlX19kb2NfX30sCi0gICAgeyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19ffSwKLSAgICB7IlNldFBhcmFtRW50aXR5UGFyc2luZyIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmcsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX199LAotICAgIHsiR2V0SW5wdXRDb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX0dldElucHV0Q29udGV4dCwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCB4bWxwYXJzZV9HZXRJbnB1dENvbnRleHRfX2RvY19ffSwKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRUZJTEVfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQkFTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9HRVRCQVNFX01FVEhPRERFRgorICAgIFBZRVhQQVRfWE1MUEFSU0VSX0dFVElOUFVUQ09OVEVYVF9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9FWFRFUk5BTEVOVElUWVBBUlNFUkNSRUFURV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9TRVRQQVJBTUVOVElUWVBBUlNJTkdfTUVUSE9EREVGCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUKLSAgICB7IlVzZUZvcmVpZ25EVEQiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfVXNlRm9yZWlnbkRURCwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfVXNlRm9yZWlnbkRURF9fZG9jX199LAorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAjZW5kaWYKLSAgICB7Il9fZGlyX18iLCB4bWxwYXJzZV9kaXIsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9fX0RJUl9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIC8qIC0tLS0tLS0tLS0gKi8KQEAgLTEwNzcsNyArMTE2MCw3IEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld3htbHBhcnNlb2JqZWN0KGNoYXIgKmVuY29kaW5nLCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQorbmV3eG1scGFyc2VvYmplY3QoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pCiB7CiAgICAgaW50IGk7CiAgICAgeG1scGFyc2VvYmplY3QgKnNlbGY7CkBAIC0xMjU1LDUyICsxMzM4LDYgQEAKICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0KilzZWxmLCBuYW1lb2JqKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QqIG5vYXJncykKLXsKLSNkZWZpbmUgQVBQRU5EKGxpc3QsIHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdHIpOyAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChvICE9IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKGxpc3QsIG8pOyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9IHdoaWxlICgwKQotCi0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QgKnJjID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAoIXJjKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKm8gPSBnZXRfaGFuZGxlcl9uYW1lKCZoYW5kbGVyX2luZm9baV0pOwotICAgICAgICBpZiAobyAhPSBOVUxMKQotICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChyYywgbyk7Ci0gICAgICAgIFB5X1hERUNSRUYobyk7Ci0gICAgfQotICAgIEFQUEVORChyYywgIkVycm9yQ29kZSIpOwotICAgIEFQUEVORChyYywgIkVycm9yTGluZU51bWJlciIpOwotICAgIEFQUEVORChyYywgIkVycm9yQ29sdW1uTnVtYmVyIik7Ci0gICAgQVBQRU5EKHJjLCAiRXJyb3JCeXRlSW5kZXgiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50TGluZU51bWJlciIpOwotICAgIEFQUEVORChyYywgIkN1cnJlbnRDb2x1bW5OdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50Qnl0ZUluZGV4Iik7Ci0gICAgQVBQRU5EKHJjLCAiYnVmZmVyX3NpemUiKTsKLSAgICBBUFBFTkQocmMsICJidWZmZXJfdGV4dCIpOwotICAgIEFQUEVORChyYywgImJ1ZmZlcl91c2VkIik7Ci0gICAgQVBQRU5EKHJjLCAibmFtZXNwYWNlX3ByZWZpeGVzIik7Ci0gICAgQVBQRU5EKHJjLCAib3JkZXJlZF9hdHRyaWJ1dGVzIik7Ci0gICAgQVBQRU5EKHJjLCAic3BlY2lmaWVkX2F0dHJpYnV0ZXMiKTsKLSAgICBBUFBFTkQocmMsICJpbnRlcm4iKTsKLQotI3VuZGVmIEFQUEVORAotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJjKTsKLSAgICAgICAgcmMgPSBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiByYzsKLX0KLQogc3RhdGljIGludAogc2V0aGFuZGxlcih4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0KiB2KQogewpAQCAtMTUwNiwyNCArMTU0MywyNCBAQAogLyogRW5kIG9mIGNvZGUgZm9yIHhtbHBhcnNlciBvYmplY3RzICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIocHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19fLAotIlBhcnNlckNyZWF0ZShbZW5jb2RpbmdbLCBuYW1lc3BhY2Vfc2VwYXJhdG9yXV0pIC0+IHBhcnNlclxuXAotUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC5QYXJzZXJDcmVhdGUKKworICAgIGVuY29kaW5nOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbmFtZXNwYWNlX3NlcGFyYXRvcjogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGludGVybjogb2JqZWN0ID0gTlVMTAorCitSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1weWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbm90dXNlZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3B5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODFmY2NkMjMzZTE3NDNhOCBpbnB1dD0yM2QyOTcwNGFjYWQzODVkXSovCiB7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IGludGVybl9kZWNyZWYgPSAwOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm4iLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHp6TzpQYXJzZXJDcmVhdGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuYW1lc3BhY2Vfc2VwYXJhdG9yICE9IE5VTEwKICAgICAgICAgJiYgc3RybGVuKG5hbWVzcGFjZV9zZXBhcmF0b3IpID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE1NTMsMjkgKzE1OTAsMjggQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocHlleHBhdF9FcnJvclN0cmluZ19fZG9jX18sCi0iRXJyb3JTdHJpbmcoZXJybm8pIC0+IHN0cmluZ1xuXAotUmV0dXJucyBzdHJpbmcgZXJyb3IgZm9yIGdpdmVuIG51bWJlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQuRXJyb3JTdHJpbmcKKworICAgIGNvZGU6IGxvbmcKKyAgICAvCisKK1JldHVybnMgc3RyaW5nIGVycm9yIGZvciBnaXZlbiBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1weWV4cGF0X0Vycm9yU3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIGNvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDg3NjY4MTA4YjY4NjhlNSBpbnB1dD1jYzY3ZGUwMTBkOWU2MmIzXSovCiB7Ci0gICAgbG9uZyBjb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInoiLCBYTUxfRXJyb3JTdHJpbmcoKGludCljb2RlKSk7CiB9CiAKIC8qIExpc3Qgb2YgbWV0aG9kcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBweWV4cGF0X21ldGhvZHNbXSA9IHsKLSAgICB7IlBhcnNlckNyZWF0ZSIsICAgIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwKLSAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCi0gICAgeyJFcnJvclN0cmluZyIsICAgICAoUHlDRnVuY3Rpb24pcHlleHBhdF9FcnJvclN0cmluZywKLSAgICAgTUVUSF9WQVJBUkdTLCAgICAgIHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19ffSwKLQotICAgIHtOVUxMLCAgICAgICAoUHlDRnVuY3Rpb24pTlVMTCwgMCwgTlVMTH0gICAgICAgICAgICAvKiBzZW50aW5lbCAqLworICAgIFBZRVhQQVRfUEFSU0VSQ1JFQVRFX01FVEhPRERFRgorICAgIFBZRVhQQVRfRVJST1JTVFJJTkdfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKIAogLyogTW9kdWxlIGRvY3N0cmluZyAqLwpAQCAtMTU5MywxNiArMTYyOSw2IEBACiAjZGVmaW5lIE1PRFVMRV9JTklURlVOQyBQeUluaXRfcHlleHBhdAogI2VuZGlmCiAKLSNpZm5kZWYgUHlNT0RJTklUX0ZVTkMKLSMgICBpZmRlZiBNU19XSU5ET1dTCi0jICAgICAgIGRlZmluZSBQeU1PRElOSVRfRlVOQyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZAotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIFB5TU9ESU5JVF9GVU5DIHZvaWQKLSMgICBlbmRpZgotI2VuZGlmCi0KLVB5TU9ESU5JVF9GVU5DIE1PRFVMRV9JTklURlVOQyh2b2lkKTsgIC8qIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzICovCi0KIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgcHlleHBhdG1vZHVsZSA9IHsKICAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICAgICBNT0RVTEVfTkFNRSwKQEAgLTE2NjAsNyArMTY4Niw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJYTUxQYXJzZXJUeXBlIiwgKFB5T2JqZWN0ICopICZYbWxwYXJzZXR5cGUpOwogCiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkVYUEFUX1ZFUlNJT04iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIFhNTF9FeHBhdFZlcnNpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0V4cGF0VmVyc2lvbigpKTsKICAgICB7CiAgICAgICAgIFhNTF9FeHBhdF9WZXJzaW9uIGluZm8gPSBYTUxfRXhwYXRWZXJzaW9uSW5mbygpOwogICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInZlcnNpb25faW5mbyIsCkBAIC0xNzQwLDcgKzE3NjYsNyBAQAogCiAjZGVmaW5lIE1ZQ09OU1QobmFtZSkgXAogICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChlcnJvcnNfbW9kdWxlLCAjbmFtZSwgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopWE1MX0Vycm9yU3RyaW5nKG5hbWUpKSA8IDApIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKG5hbWUpKSA8IDApICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdG1wbnVtID0gUHlMb25nX0Zyb21Mb25nKG5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAodG1wbnVtID09IE5VTEwpIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTk1MSwzICsxOTc3LDggQEAKIAogICAgIHtOVUxMLCBOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKKworLypbY2xpbmljIGlucHV0XQorZHVtcCBidWZmZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCBiNTQ1YmNhLi5mNmI1MmEwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0yMzcsNiArMjM3LDQzIEBACiBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcyB+Ly5oaXN0b3J5LiIpOwogCiAKKyNpZmRlZiBIQVZFX1JMX0FQUEVORF9ISVNUT1JZCisvKiBFeHBvcnRlZCBmdW5jdGlvbiB0byBzYXZlIHBhcnQgb2YgYSByZWFkbGluZSBoaXN0b3J5IGZpbGUgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FwcGVuZF9oaXN0b3J5X2ZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBuZWxlbWVudHM7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lX29iaiA9IFB5X05vbmUsICpmaWxlbmFtZV9ieXRlczsKKyAgICBjaGFyICpmaWxlbmFtZTsKKyAgICBpbnQgZXJyOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOmFwcGVuZF9oaXN0b3J5X2ZpbGUiLCAmbmVsZW1lbnRzLCAmZmlsZW5hbWVfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGZpbGVuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKGZpbGVuYW1lX29iaiwgJmZpbGVuYW1lX2J5dGVzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmaWxlbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcoZmlsZW5hbWVfYnl0ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbGVuYW1lX2J5dGVzID0gTlVMTDsKKyAgICAgICAgZmlsZW5hbWUgPSBOVUxMOworICAgIH0KKyAgICBlcnJubyA9IGVyciA9IGFwcGVuZF9oaXN0b3J5KG5lbGVtZW50cywgZmlsZW5hbWUpOworICAgIGlmICghZXJyICYmIF9oaXN0b3J5X2xlbmd0aCA+PSAwKQorICAgICAgICBoaXN0b3J5X3RydW5jYXRlX2ZpbGUoZmlsZW5hbWUsIF9oaXN0b3J5X2xlbmd0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZV9ieXRlcyk7CisgICAgZXJybm8gPSBlcnI7CisgICAgaWYgKGVycm5vKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX2FwcGVuZF9oaXN0b3J5X2ZpbGUsCisiYXBwZW5kX2hpc3RvcnlfZmlsZShuZWxlbWVudHNbLCBmaWxlbmFtZV0pIC0+IE5vbmVcblwKK0FwcGVuZCB0aGUgbGFzdCBuZWxlbWVudHMgb2YgdGhlIGhpc3RvcnkgbGlzdCB0byBmaWxlLlxuXAorVGhlIGRlZmF1bHQgZmlsZW5hbWUgaXMgfi8uaGlzdG9yeS4iKTsKKyNlbmRpZgorCisKIC8qIFNldCBoaXN0b3J5IGxlbmd0aCAqLwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC03NDcsNiArNzg0LDEwIEBACiAgICAgIE1FVEhfVkFSQVJHUywgZG9jX3JlYWRfaGlzdG9yeV9maWxlfSwKICAgICB7IndyaXRlX2hpc3RvcnlfZmlsZSIsIHdyaXRlX2hpc3RvcnlfZmlsZSwKICAgICAgTUVUSF9WQVJBUkdTLCBkb2Nfd3JpdGVfaGlzdG9yeV9maWxlfSwKKyNpZmRlZiBIQVZFX1JMX0FQUEVORF9ISVNUT1JZCisgICAgeyJhcHBlbmRfaGlzdG9yeV9maWxlIiwgYXBwZW5kX2hpc3RvcnlfZmlsZSwKKyAgICAgTUVUSF9WQVJBUkdTLCBkb2NfYXBwZW5kX2hpc3RvcnlfZmlsZX0sCisjZW5kaWYKICAgICB7ImdldF9oaXN0b3J5X2l0ZW0iLCBnZXRfaGlzdG9yeV9pdGVtLAogICAgICBNRVRIX1ZBUkFSR1MsIGRvY19nZXRfaGlzdG9yeV9pdGVtfSwKICAgICB7ImdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoIiwgKFB5Q0Z1bmN0aW9uKWdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggZmZhZjg2NS4uNTkwYWVjYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC0xOTMsNTEgKzE5MywzMiBAQAogI2VuZGlmIC8qIFNFTEVDVF9VU0VTX0hFQVAgKi8KICAgICBQeU9iamVjdCAqaWZkbGlzdCwgKm9mZGxpc3QsICplZmRsaXN0OwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0b3V0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBQeV9Ob25lOwogICAgIGZkX3NldCBpZmRzZXQsIG9mZHNldCwgZWZkc2V0OwogICAgIHN0cnVjdCB0aW1ldmFsIHR2LCAqdHZwOwogICAgIGludCBpbWF4LCBvbWF4LCBlbWF4LCBtYXg7CiAgICAgaW50IG47CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKIAogICAgIC8qIGNvbnZlcnQgYXJndW1lbnRzICovCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2VsZWN0IiwgMywgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmlmZGxpc3QsICZvZmRsaXN0LCAmZWZkbGlzdCwgJnRvdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAmaWZkbGlzdCwgJm9mZGxpc3QsICZlZmRsaXN0LCAmdGltZW91dF9vYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh0b3V0ID09IFB5X05vbmUpCi0gICAgICAgIHR2cCA9IChzdHJ1Y3QgdGltZXZhbCAqKTA7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGEgZmxvYXQgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKHRpbWVvdXRfb2JqID09IFB5X05vbmUpCisgICAgICAgIHR2cCA9IChzdHJ1Y3QgdGltZXZhbCAqKU5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIE9uIE9wZW5CU0QgNS40LCB0aW1ldmFsLnR2X3NlYyBpcyBhIGxvbmcuCi0gICAgICAgICAqIEV4YW1wbGU6IGxvbmcgaXMgNjQtYml0LCB3aGVyZWFzIHRpbWVfdCBpcyAzMi1iaXQuICovCi0gICAgICAgIHRpbWVfdCBzZWM7Ci0gICAgICAgIC8qIE9uIE9TIFggNjQtYml0LCB0aW1ldmFsLnR2X3VzZWMgaXMgYW4gaW50IChhbmQgdGh1cyBzdGlsbCA0Ci0gICAgICAgICAgIGJ5dGVzIGFzIHJlcXVpcmVkKSwgYnV0IG5vIGxvbmdlciBkZWZpbmVkIGJ5IGEgbG9uZy4gKi8KLSAgICAgICAgbG9uZyB1c2VjOwotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnNlYywgJnVzZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX1VQKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgLyogT24gV2luZG93cywgdGltZXZhbC50dl9zZWMgaXMgYSBsb25nICgzMiBiaXQpLAotICAgICAgICAgKiB3aGVyZWFzIHRpbWVfdCBjYW4gYmUgNjQtYml0LiAqLwotICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPT0gc2l6ZW9mKGxvbmcpKTsKLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICAgICAgaWYgKHNlYyA+IExPTkdfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYSBmbG9hdCBvciBOb25lIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXNlYzsKLSNlbHNlCi0gICAgICAgIGFzc2VydChzaXplb2YodHYudHZfc2VjKSA+PSBzaXplb2Yoc2VjKSk7Ci0gICAgICAgIHR2LnR2X3NlYyA9IHNlYzsKLSNlbmRpZgotICAgICAgICB0di50dl91c2VjID0gdXNlYzsKKworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWV2YWwodGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICh0di50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ1LDcgKzIyNiw2IEBACiAgICAgICAgIHR2cCA9ICZ0djsKICAgICB9CiAKLQogI2lmZGVmIFNFTEVDVF9VU0VTX0hFQVAKICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBsaXN0cyAqLwogICAgIHJmZDJvYmogPSBQeU1lbV9ORVcocHlsaXN0LCBGRF9TRVRTSVpFICsgMSk7CkBAIC0yNTgsNiArMjM4LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogI2VuZGlmIC8qIFNFTEVDVF9VU0VTX0hFQVAgKi8KKwogICAgIC8qIENvbnZlcnQgc2VxdWVuY2VzIHRvIGZkX3NldHMsIGFuZCBnZXQgbWF4aW11bSBmZCBudW1iZXIKICAgICAgKiBwcm9wYWdhdGVzIHRoZSBQeXRob24gZXhjZXB0aW9uIHNldCBpbiBzZXEyc2V0KCkKICAgICAgKi8KQEAgLTI3MCwxMyArMjUxLDM3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAoKGVtYXg9c2VxMnNldChlZmRsaXN0LCAmZWZkc2V0LCBlZmQyb2JqKSkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7CisKICAgICBtYXggPSBpbWF4OwogICAgIGlmIChvbWF4ID4gbWF4KSBtYXggPSBvbWF4OwogICAgIGlmIChlbWF4ID4gbWF4KSBtYXggPSBlbWF4OwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSBzZWxlY3QobWF4LCAmaWZkc2V0LCAmb2Zkc2V0LCAmZWZkc2V0LCB0dnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHR2cCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgbiA9IHNlbGVjdChtYXgsICZpZmRzZXQsICZvZmRzZXQsICZlZmRzZXQsIHR2cCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogc2VsZWN0KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgICAgICBpZiAodHZwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBuID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeVRpbWVfQXNUaW1ldmFsX25vcmFpc2UodGltZW91dCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgc2VsZWN0KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAobiA9PSBTT0NLRVRfRVJST1IpIHsKQEAgLTUxNiwzMCArNTIxLDM5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9sbF9wb2xsKHBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0b3V0ID0gTlVMTDsKLSAgICBpbnQgdGltZW91dCA9IDAsIHBvbGxfcmVzdWx0LCBpLCBqOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0aW1lb3V0X29iaiA9IE5VTEw7CisgICAgaW50IHBvbGxfcmVzdWx0LCBpLCBqOwogICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEwsICpudW0gPSBOVUxMOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmU7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpwb2xsIiwgJnRpbWVvdXRfb2JqKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KLSAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICBlbHNlIGlmICghUHlOdW1iZXJfQ2hlY2sodG91dCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOworICAgICAgICBkZWFkbGluZSA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0b3V0ID0gUHlOdW1iZXJfTG9uZyh0b3V0KTsKLSAgICAgICAgaWYgKCF0b3V0KQorICAgICAgICBpZiAoX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdGltZW91dCA9IF9QeUxvbmdfQXNJbnQodG91dCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0b3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgfQorCisgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICBpZiAobXMgPCBJTlRfTUlOIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAgICAgfQogCiAgICAgLyogQXZvaWQgY29uY3VycmVudCBwb2xsKCkgaW52b2NhdGlvbiwgaXNzdWUgODg2NSAqLwpAQCAtNTU3LDE0ICs1NzEsMzggQEAKICAgICBzZWxmLT5wb2xsX3J1bm5pbmcgPSAxOwogCiAgICAgLyogY2FsbCBwb2xsKCkgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcG9sbF9yZXN1bHQgPSBwb2xsKHNlbGYtPnVmZHMsIHNlbGYtPnVmZF9sZW4sIHRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgYXN5bmNfZXJyID0gMDsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBwb2xsX3Jlc3VsdCA9IHBvbGwoc2VsZi0+dWZkcywgc2VsZi0+dWZkX2xlbiwgKGludCltcyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcG9sbCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgIGFzeW5jX2VyciA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIHBvbGxfcmVzdWx0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgcG9sbCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBzZWxmLT5wb2xsX3J1bm5pbmcgPSAwOwogCiAgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGlmICghYXN5bmNfZXJyKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTU3Myw0MSArNjExLDQwIEBACiAgICAgcmVzdWx0X2xpc3QgPSBQeUxpc3RfTmV3KHBvbGxfcmVzdWx0KTsKICAgICBpZiAoIXJlc3VsdF9saXN0KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBwb2xsX3Jlc3VsdDsgaisrKSB7Ci0gICAgICAgICAgICAvKiBza2lwIHRvIHRoZSBuZXh0IGZpcmVkIGRlc2NyaXB0b3IgKi8KLSAgICAgICAgICAgIHdoaWxlICghc2VsZi0+dWZkc1tpXS5yZXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaWYgd2UgaGl0IGEgTlVMTCByZXR1cm4sIHNldCB2YWx1ZSB0byBOVUxMCi0gICAgICAgICAgICAgICBhbmQgYnJlYWsgb3V0IG9mIGxvb3A7IGNvZGUgYXQgZW5kIHdpbGwKLSAgICAgICAgICAgICAgIGNsZWFuIHVwIHJlc3VsdF9saXN0ICovCi0gICAgICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfTmV3KDIpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLmZkKTsKLSAgICAgICAgICAgIGlmIChudW0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDAsIG51bSk7CiAKLSAgICAgICAgICAgIC8qIFRoZSAmMHhmZmZmIGlzIGEgd29ya2Fyb3VuZCBmb3IgQUlYLiAgJ3JldmVudHMnCi0gICAgICAgICAgICAgICBpcyBhIDE2LWJpdCBzaG9ydCwgYW5kIElCTSBhc3NpZ25lZCBQT0xMTlZBTAotICAgICAgICAgICAgICAgdG8gYmUgMHg4MDAwLCBzbyB0aGUgY29udmVyc2lvbiB0byBpbnQgcmVzdWx0cwotICAgICAgICAgICAgICAgaW4gYSBuZWdhdGl2ZSBudW1iZXIuIFNlZSBTRiBidWcgIzkyMzMxNS4gKi8KLSAgICAgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLnJldmVudHMgJiAweGZmZmYpOwotICAgICAgICAgICAgaWYgKG51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2YWx1ZSwgMSwgbnVtKTsKLSAgICAgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGosIHZhbHVlKSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBwb2xsX3Jlc3VsdDsgaisrKSB7CisgICAgICAgIC8qIHNraXAgdG8gdGhlIG5leHQgZmlyZWQgZGVzY3JpcHRvciAqLworICAgICAgICB3aGlsZSAoIXNlbGYtPnVmZHNbaV0ucmV2ZW50cykgewogICAgICAgICAgICAgaSsrOwogICAgICAgICB9CisgICAgICAgIC8qIGlmIHdlIGhpdCBhIE5VTEwgcmV0dXJuLCBzZXQgdmFsdWUgdG8gTlVMTAorICAgICAgICAgICBhbmQgYnJlYWsgb3V0IG9mIGxvb3A7IGNvZGUgYXQgZW5kIHdpbGwKKyAgICAgICAgICAgY2xlYW4gdXAgcmVzdWx0X2xpc3QgKi8KKyAgICAgICAgdmFsdWUgPSBQeVR1cGxlX05ldygyKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5mZCk7CisgICAgICAgIGlmIChudW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2YWx1ZSwgMCwgbnVtKTsKKworICAgICAgICAvKiBUaGUgJjB4ZmZmZiBpcyBhIHdvcmthcm91bmQgZm9yIEFJWC4gICdyZXZlbnRzJworICAgICAgICAgICBpcyBhIDE2LWJpdCBzaG9ydCwgYW5kIElCTSBhc3NpZ25lZCBQT0xMTlZBTAorICAgICAgICAgICB0byBiZSAweDgwMDAsIHNvIHRoZSBjb252ZXJzaW9uIHRvIGludCByZXN1bHRzCisgICAgICAgICAgIGluIGEgbmVnYXRpdmUgbnVtYmVyLiBTZWUgU0YgYnVnICM5MjMzMTUuICovCisgICAgICAgIG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT51ZmRzW2ldLnJldmVudHMgJiAweGZmZmYpOworICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDEsIG51bSk7CisgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGosIHZhbHVlKSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGkrKzsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdF9saXN0OwogCkBAIC03MTgsMTQgKzc1NSwxMCBAQAogICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IHBvbGxmZCkqc2VsZi0+bl9mZHM7CiAgICAgc2VsZi0+bl9mZHMgPSAwOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSB3cml0ZShzZWxmLT5mZF9kZXZwb2xsLCBzZWxmLT5mZHMsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAobiA9PSAtMSApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIG4gPSBfUHlfd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKKyAgICBpZiAobiA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwogICAgIGlmIChuIDwgc2l6ZSkgewogICAgICAgICAvKgogICAgICAgICAqKiBEYXRhIHdyaXRlZCB0byAvZGV2L3BvbGwgaXMgYSBiaW5hcnkgZGF0YSBzdHJ1Y3R1cmUuIEl0IGlzIG5vdApAQCAtODQzLDQwICs4NzYsMzggQEAKIGRldnBvbGxfcG9sbChkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBzdHJ1Y3QgZHZwb2xsIGR2cDsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdG91dCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRpbWVvdXRfb2JqID0gTlVMTDsKICAgICBpbnQgcG9sbF9yZXN1bHQsIGk7Ci0gICAgbG9uZyB0aW1lb3V0OwogICAgIFB5T2JqZWN0ICp2YWx1ZSwgKm51bTEsICpudW0yOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmUgPSAwOwogCiAgICAgaWYgKHNlbGYtPmZkX2RldnBvbGwgPCAwKQogICAgICAgICByZXR1cm4gZGV2cG9sbF9lcnJfY2xvc2VkKCk7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpwb2xsIiwgJnRpbWVvdXRfb2JqKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KLSAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICBlbHNlIGlmICghUHlOdW1iZXJfQ2hlY2sodG91dCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdG91dCA9IFB5TnVtYmVyX0xvbmcodG91dCk7Ci0gICAgICAgIGlmICghdG91dCkKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbU1pbGxpc2Vjb25kc09iamVjdCgmdGltZW91dCwgdGltZW91dF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUxvbmdfQXNMb25nKHRvdXQpOwotICAgICAgICBQeV9ERUNSRUYodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgICAgIH0KIAotICAgIGlmICgodGltZW91dCA8IC0xKSB8fCAodGltZW91dCA+IElOVF9NQVgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgLTEgfHwgbXMgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQpAQCAtODg0LDEyICs5MTUsMzYgQEAKIAogICAgIGR2cC5kcF9mZHMgPSBzZWxmLT5mZHM7CiAgICAgZHZwLmRwX25mZHMgPSBzZWxmLT5tYXhfbl9mZHM7Ci0gICAgZHZwLmRwX3RpbWVvdXQgPSB0aW1lb3V0OworICAgIGR2cC5kcF90aW1lb3V0ID0gKGludCltczsKIAotICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBvbGxfcmVzdWx0ID0gaW9jdGwoc2VsZi0+ZmRfZGV2cG9sbCwgRFBfUE9MTCwgJmR2cCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAodGltZW91dCA+PSAwKQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBkbyB7CisgICAgICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBwb2xsX3Jlc3VsdCA9IGlvY3RsKHNlbGYtPmZkX2RldnBvbGwsIERQX1BPTEwsICZkdnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIGRldnBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKHRpbWVvdXQgPj0gMCkgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgcG9sbF9yZXN1bHQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgICAgICBkdnAuZHBfdGltZW91dCA9IChpbnQpbXM7CisgICAgICAgICAgICAvKiByZXRyeSBkZXZwb2xsKCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtODk3LDI4ICs5NTIsMjYgQEAKICAgICB9CiAKICAgICAvKiBidWlsZCB0aGUgcmVzdWx0IGxpc3QgKi8KLQogICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CiAgICAgaWYgKCFyZXN1bHRfbGlzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7Ci0gICAgICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7Ci0gICAgICAgICAgICBudW0yID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5yZXZlbnRzKTsKLSAgICAgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgewotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0yKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgbnVtMSwgbnVtMik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobnVtMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobnVtMik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7CisgICAgICAgIG51bTEgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLmZkKTsKKyAgICAgICAgbnVtMiA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0ucmV2ZW50cyk7CisgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihudW0xKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIG51bTEsIG51bTIpOworICAgICAgICBQeV9ERUNSRUYobnVtMSk7CisgICAgICAgIFB5X0RFQ1JFRihudW0yKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBpLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTAxMyw3ICsxMDY2LDYgQEAKICAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7CiAgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAvKgogICAgICoqIElmIHdlIHRyeSB0byBwcm9jZXNzIG1vcmUgdGhhdCBnZXRybGltaXQoKQogICAgICoqIGZkcywgdGhlIGtlcm5lbCB3aWxsIGdpdmUgYW4gZXJyb3IsIHNvCkBAIC0xMDIxLDE4ICsxMDczLDE0IEBACiAgICAgKiogdmFsdWUsIGJlY2F1c2Ugd2UgY2FuIGNoYW5nZSBybGltaXQoKSBhbnl0aW1lLgogICAgICovCiAgICAgbGltaXRfcmVzdWx0ID0gZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZsaW1pdCk7Ci0gICAgaWYgKGxpbWl0X3Jlc3VsdCAhPSAtMSkKLSAgICAgICAgZmRfZGV2cG9sbCA9IF9QeV9vcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KICAgICBpZiAobGltaXRfcmVzdWx0ID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChmZF9kZXZwb2xsID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCAiL2Rldi9wb2xsIik7CisKKyAgICBmZF9kZXZwb2xsID0gX1B5X29wZW4oIi9kZXYvcG9sbCIsIE9fUkRXUik7CisgICAgaWYgKGZkX2RldnBvbGwgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGZkcyA9IFB5TWVtX05FVyhzdHJ1Y3QgcG9sbGZkLCBsaW1pdC5ybGltX2N1cik7CiAgICAgaWYgKGZkcyA9PSBOVUxMKSB7CkBAIC0xNDM3LDM0ICsxNDg1LDQ2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHllcG9sbF9wb2xsKHB5RXBvbGxfT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgZG91YmxlIGR0aW1lb3V0ID0gLTEuOwotICAgIGludCB0aW1lb3V0OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJtYXhldmVudHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOwogICAgIGludCBtYXhldmVudHMgPSAtMTsKICAgICBpbnQgbmZkcywgaTsKICAgICBQeU9iamVjdCAqZWxpc3QgPSBOVUxMLCAqZXR1cGxlID0gTlVMTDsKICAgICBzdHJ1Y3QgZXBvbGxfZXZlbnQgKmV2cyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ0aW1lb3V0IiwgIm1heGV2ZW50cyIsIE5VTEx9OworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBtcywgZGVhZGxpbmU7CiAKICAgICBpZiAoc2VsZi0+ZXBmZCA8IDApCiAgICAgICAgIHJldHVybiBweWVwb2xsX2Vycl9jbG9zZWQoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8ZGk6cG9sbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHRpbWVvdXQsICZtYXhldmVudHMpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPaTpwb2xsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0X29iaiwgJm1heGV2ZW50cykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGR0aW1lb3V0IDwgMCkgeworICAgIGlmICh0aW1lb3V0X29iaiA9PSBOVUxMIHx8IHRpbWVvdXRfb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgdGltZW91dCA9IC0xOwotICAgIH0KLSAgICBlbHNlIGlmIChkdGltZW91dCAqIDEwMDAuMCA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1zID0gLTE7CisgICAgICAgIGRlYWRsaW5lID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIGVwb2xsX3dhaXQoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsIHJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgIHRvIHdhaXQgKmF0IGxlYXN0KiBkdGltZW91dCBzZWNvbmRzLiAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCljZWlsKGR0aW1lb3V0ICogMTAwMC4wKTsKKyAgICAgICAgLyogZXBvbGxfd2FpdCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgdG93YXJkcworICAgICAgICAgICBpbmZpbml0eSB0byB3YWl0IGF0IGxlYXN0IHRpbWVvdXQgc2Vjb25kcy4gKi8KKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICBpZiAobXMgPCBJTlRfTUlOIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CiAgICAgfQogCiAgICAgaWYgKG1heGV2ZW50cyA9PSAtMSkgewpAQCAtMTQ4Myw5ICsxNTQzLDMwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuZmRzID0gZXBvbGxfd2FpdChzZWxmLT5lcGZkLCBldnMsIG1heGV2ZW50cywgdGltZW91dCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBuZmRzID0gZXBvbGxfd2FpdChzZWxmLT5lcGZkLCBldnMsIG1heGV2ZW50cywgKGludCltcyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogcG9sbCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIG5mZHMgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgICAgICAvKiByZXRyeSBlcG9sbF93YWl0KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlKDEpOworCiAgICAgaWYgKG5mZHMgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTIwMjIsOCArMjEwMyw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqZXZsID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpjaGwgPSBOVUxMOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0c3BlYzsKICAgICBzdHJ1Y3QgdGltZXNwZWMgKnB0aW1lb3V0c3BlYzsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOwogCiAgICAgaWYgKHNlbGYtPmtxZmQgPCAwKQogICAgICAgICByZXR1cm4ga3F1ZXVlX3F1ZXVlX2Vycl9jbG9zZWQoKTsKQEAgLTIwNDEsMjQgKzIxMjMsMjUgQEAKICAgICBpZiAob3RpbWVvdXQgPT0gUHlfTm9uZSB8fCBvdGltZW91dCA9PSBOVUxMKSB7CiAgICAgICAgIHB0aW1lb3V0c3BlYyA9IE5VTEw7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG90aW1lb3V0KSkgewotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG90aW1lb3V0LCAmdGltZW91dC50dl9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWVvdXQudHZfbnNlYywgX1B5VGltZV9ST1VORF9VUCkgPT0gLTEpCisgICAgZWxzZSB7CisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRpbWVvdXRzcGVjKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmICh0aW1lb3V0LnR2X3NlYyA8IDApIHsKKyAgICAgICAgaWYgKHRpbWVvdXRzcGVjLnR2X3NlYyA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUgb3IgTm9uZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgotICAgICAgICAgICAgIm9yIE5vbmUsIGdvdCAlLjIwMHMiLAotICAgICAgICAgICAgUHlfVFlQRShvdGltZW91dCktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXRzcGVjOwogICAgIH0KIAogICAgIGlmIChjaCAhPSBOVUxMICYmIGNoICE9IFB5X05vbmUpIHsKQEAgLTIxMDMsMTAgKzIxODYsMzQgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBnb3RldmVudHMgPSBrZXZlbnQoc2VsZi0+a3FmZCwgY2hsLCBuY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgZXZsLCBuZXZlbnRzLCBwdGltZW91dHNwZWMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHB0aW1lb3V0c3BlYykKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgZ290ZXZlbnRzID0ga2V2ZW50KHNlbGYtPmtxZmQsIGNobCwgbmNoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBldmwsIG5ldmVudHMsIHB0aW1lb3V0c3BlYyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoga2V2ZW50KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKHB0aW1lb3V0c3BlYykgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290ZXZlbnRzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRpbWVvdXRzcGVjKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogcmV0cnkga2V2ZW50KCkgd2l0aCB0aGUgcmVjb21wdXRlZCB0aW1lb3V0ICovCisgICAgICAgIH0KKyAgICB9IHdoaWxlICgxKTsKIAogICAgIGlmIChnb3RldmVudHMgPT0gLTEpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCBiNDRmZTE4Li43NGI5NGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMTgsNyArMTgsMTMgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTEKK2NsYXNzIFNIQTFUeXBlICJTSEExb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zZGM5YTIwZDFiZWNiNzU5XSovCiAKIC8qIFNvbWUgdXNlZnVsIHR5cGVzICovCiAKQEAgLTQ4LDYgKzU0LDcgQEAKICAgICBzdHJ1Y3Qgc2hhMV9zdGF0ZSBoYXNoX3N0YXRlOwogfSBTSEExb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTFtb2R1bGUuYy5oIgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCkBAIC0zMDksMTAgKzMxNiwxNSBAQAogCiAvKiBFeHRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCiAKLVB5RG9jX1NUUlZBUihTSEExX2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV9jb3B5KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9jb3B5X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNGUwMDEyNjQ2MjBmMDJhIGlucHV0PWI3ZWFlMTBkZjZmODliMzZdKi8KIHsKICAgICBTSEExb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTMyMywxMSArMzM1LDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTFfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9kaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJmMDUzMDJhN2FhMmI1Y2IgaW5wdXQ9MjA1ZDQ3ZTE5MjdmZDAwOV0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKQEAgLTMzNyw1NCArMzUzLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIFNIQTFfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMVR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfaGV4ZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQxNjFmZDcxZTY4YzY2NTkgaW5wdXQ9OTc2OTEwNTVjMGM3NGFiMF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKLSAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7Ci0gICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KICAgICB0ZW1wID0gc2VsZi0+aGFzaF9zdGF0ZTsKICAgICBzaGExX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKLSAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhTSEExX0RJR0VTVFNJWkUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8U0hBMV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgU0hBMV9ESUdFU1RTSVpFKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTFfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV91cGRhdGUoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTSEExVHlwZV91cGRhdGUoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kOTkwMmYwZTUwMTVlOWFlIGlucHV0PWFhZDhlMDc4MTJlZGJiYTNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXBkYXRlIiwgJm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOwogCiAgICAgc2hhMV9wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTM5NSwxMCArMzk4LDEwIEBACiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBTSEExX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEExX2NvcHksICAgICAgTUVUSF9OT0FSR1MsICBTSEExX2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilTSEExX2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBTSEExX2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTFfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgIFNIQTFfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBMV91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBMV91cGRhdGVfX2RvY19ffSwKKyAgICBTSEExVFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTFUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEExVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgU0hBMVRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNDc0LDI3ICs0NzcsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEExX25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQTEgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGExLnNoYTEKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMV9zaGExX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTRlODQxMzg2YjllOGRiIGlucHV0PTI3ZWE1NDI4MWQ5OTVlYzJdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQTFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMW9iamVjdCgpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTUwMywxMSArNTA1LDExIEBACiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChkYXRhX29iaikgeworICAgIGlmIChzdHJpbmcpIHsKICAgICAgICAgc2hhMV9wcm9jZXNzKCZuZXctPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgIH0KQEAgLTUxOSw3ICs1MjEsNyBAQAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBTSEExX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhMSIsKFB5Q0Z1bmN0aW9uKVNIQTFfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyxTSEExX25ld19fZG9jX199LAorICAgIF9TSEExX1NIQTFfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKaW5kZXggYjA1YmZjMS4uOGM0ZGVmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCkBAIC0xOSw3ICsxOSwxMyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTI1NgorY2xhc3MgU0hBMjU2VHlwZSAiU0hBb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03MWEzOTE3NGQ0ZjBhNzQ0XSovCiAKIC8qIFNvbWUgdXNlZnVsIHR5cGVzICovCiAKQEAgLTQ3LDYgKzUzLDggQEAKICAgICBpbnQgZGlnZXN0c2l6ZTsKIH0gU0hBb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgiCisKIC8qIFdoZW4gcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBDUFUgd2UgbmVlZCB0byBwZXJmb3JtIGJ5dGUgcmV2ZXJzYWwgb24gYW4KICAgIGFycmF5IG9mIGxvbmd3b3Jkcy4gKi8KIApAQCAtMzkzLDEwICs0MDEsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBMjU2X2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEEyNTZUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWE4YmJkNjZhMGM5YzE2OCBpbnB1dD1mNTg4NDBhNjE4ZDRmMmE3XSovCiB7CiAgICAgU0hBb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTQxMiwxMSArNDI1LDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK1NIQTI1NlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2NjE2YTVlOTA5ZmJjM2QgaW5wdXQ9MWZiNzUyZTU4OTU0MTU3ZF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKQEAgLTQyNiw1NCArNDQzLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMjU2X2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MjVmOGE3MDQxYWU5N2YzIGlucHV0PTBjYzRjNzE0NjkzMDEwZDFdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgU0hBY29weShzZWxmLCAmdGVtcCk7CiAgICAgc2hhX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvcihpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+ZGlnZXN0c2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfdXBkYXRlX19kb2NfXywKLSJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfdXBkYXRlKFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTSEEyNTZUeXBlX3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDk2N2ZiMjg2MGM2NmFmNyBpbnB1dD1iMmQ0NDlkNWIzMGYwZjVhXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIHNoYV91cGRhdGUoc2VsZiwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC00ODQsMTAgKzQ4OCwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEEyNTZfY29weSwgICAgICBNRVRIX05PQVJHUywgIFNIQTI1Nl9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBTSEEyNTZfZGlnZXN0X19kb2NfX30sCi0gICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMjU2X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBTSEEyNTZfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBTSEEyNTZfdXBkYXRlX19kb2NfX30sCisgICAgU0hBMjU2VFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTI1NlRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTk0LDI3ICs1OTgsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTI1Ni5zaGEyNTYKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMjU2IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyNTZfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGEyNTZfc2hhMjU2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNzBlNmUyZDk3MTEyODQ0IGlucHV0PTA5Y2NlM2ZiODU1MDU2YjJdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEyNTZvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02MjMsMTEgKzYyNiwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYV91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC02MzUsMjcgKzYzOCwyNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXc7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyMjRfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTI1Ni5zaGEyMjQKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEyMjRfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGEyNTZfc2hhMjI0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMjgyMmJmMjg0MTZiNDJhIGlucHV0PTI3YTA0YmEyNGMzNTNhNzNdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEyMjRvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02NjQsMTEgKzY2NiwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYV91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC02ODAsOCArNjgyLDggQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEyNTZfbmV3X19kb2NfX30sCi0gICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pU0hBMjI0X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIFNIQTIyNF9uZXdfX2RvY19ffSwKKyAgICBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYKKyAgICBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCA0N2M1N2U1Li44MjM3ZDg2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTE5LDYgKzE5LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiaGFzaGxpYi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc2hhNTEyCitjbGFzcyBTSEE1MTJUeXBlICJTSEFvYmplY3QgKiIgIiZQeVR5cGVfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTgxYTNjY2RlOTJiY2ZlOGRdKi8KIAogI2lmZGVmIFBZX0xPTkdfTE9ORyAvKiBJZiBubyBQWV9MT05HX0xPTkcsIGRvbid0IGNvbXBpbGUgYW55dGhpbmchICovCiAKQEAgLTQ5LDYgKzU2LDggQEAKICAgICBpbnQgZGlnZXN0c2l6ZTsKIH0gU0hBb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgiCisKIC8qIFdoZW4gcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBDUFUgd2UgbmVlZCB0byBwZXJmb3JtIGJ5dGUgcmV2ZXJzYWwgb24gYW4KICAgIGFycmF5IG9mIGxvbmd3b3Jkcy4gKi8KIApAQCAtNDU5LDEwICs0NjgsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBNTEyX2NvcHlfX2RvY19fLCAiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEE1MTJUeXBlLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfY29weShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWRlYTg5NmVkMzE2NDgyMSBpbnB1dD05ZjVmMzFlNmM0NTc3NzZhXSovCiB7CiAgICAgU0hBb2JqZWN0ICpuZXdvYmo7CiAKQEAgLTQ3OCwxMSArNDkyLDE1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK1NIQTUxMlR5cGVfZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEwODBiYmVlZWY3ZGRlMWIgaW5wdXQ9NjBjMmNlZGU5ZTAyMzAxOF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKQEAgLTQ5Miw1NCArNTEwLDQxIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBNTEyX2hleGRpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2hleGRpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzczMzA1Yjg2MDFlMThiIGlucHV0PTQ5OGI4NzdiMjVjYmUwYTJdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgU0hBY29weShzZWxmLCAmdGVtcCk7CiAgICAgc2hhNTEyX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvciAoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBNTEyX3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEE1MTJUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBNTEyVHlwZV91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjZjMzM2U3Mzk5NWE3OWUgaW5wdXQ9ZGVkMmI0NjY1NjU2NjI4M10qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBzaGE1MTJfdXBkYXRlKHNlbGYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwpAQCAtNTQ4LDEyICs1NTMsMTYgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CisvKltjbGluaWMgaW5wdXRdCitkdW1wIGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilTSEE1MTJfY29weSwgICAgICBNRVRIX05PQVJHUywgU0hBNTEyX2NvcHlfX2RvY19ffSwKLSAgICB7ImRpZ2VzdCIsICAgIChQeUNGdW5jdGlvbilTSEE1MTJfZGlnZXN0LCAgICBNRVRIX05PQVJHUywgU0hBNTEyX2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEE1MTJfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBTSEE1MTJfdXBkYXRlX19kb2NfX30sCisgICAgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNjYwLDI3ICs2NjksMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihTSEE1MTJfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTUxMi5zaGE1MTIKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEE1MTJfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGE1MTJfc2hhNTEyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTEzYmMwYTk0ZGE2ZGUzIGlucHV0PWU2OWJhZDlhZTliNmEzMDhdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEE1MTJvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02ODksMTEgKzY5NywxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTUxMl91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC03MDEsMjcgKzcwOSwyNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXc7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEzODRfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NoYTUxMi5zaGEzODQKKworICAgIHN0cmluZzogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK1JldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEEzODRfbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK19zaGE1MTJfc2hhMzg0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYzczMWFlYTU1MDkxNzRkIGlucHV0PWM5MzI3Nzg4ZDRlYTQ1NDVdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OwogICAgIFNIQW9iamVjdCAqbmV3OwotICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgInxPOm5ldyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vYmopKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChkYXRhX29iaikKLSAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChkYXRhX29iaiwgJmJ1Zik7CisgICAgaWYgKHN0cmluZykKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChzdHJpbmcsICZidWYpOwogCiAgICAgaWYgKChuZXcgPSBuZXdTSEEzODRvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03MzAsMTEgKzczNywxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTUxMl91cGRhdGUobmV3LCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC03NDMsMTEgKzc1MCwxNiBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2R1bXAgYnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCisKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBX2Z1bmN0aW9uc1tdID0gewotICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMl9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEE1MTJfbmV3X19kb2NfX30sCi0gICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pU0hBMzg0X25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIFNIQTM4NF9uZXdfX2RvY19ffSwKKyAgICBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKKyAgICBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCBmZWRhZGRmLi43MGYzMDUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTcsNiArNyw5IEBACiAjaWZuZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlICJwb3NpeG1vZHVsZS5oIgogI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIiAgIC8qIG5lZWRlZCBmb3IgU09DS0VUX1QgKi8KKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTQ5LDYgKzUyLDEzIEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2luY2x1ZGUgImNsaW5pYy9zaWduYWxtb2R1bGUuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgc2lnbmFsCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMDMwMWEzYmRlNWZlOWQzXSovCisKIAogLyoKICAgIE5PVEVTIE9OIFRIRSBJTlRFUkFDVElPTiBCRVRXRUVOIFNJR05BTFMgQU5EIFRIUkVBRFMKQEAgLTg3LDcgKzk3LDIwIEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiB9IEhhbmRsZXJzW05TSUddOwogCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBJTlZBTElEX0ZEICgoU09DS0VUX1QpLTEpCisKK3N0YXRpYyB2b2xhdGlsZSBzdHJ1Y3QgeworICAgIFNPQ0tFVF9UIGZkOworICAgIGludCB1c2Vfc2VuZDsKKyAgICBpbnQgc2VuZF9lcnJfc2V0OworICAgIGludCBzZW5kX2Vycm5vOworICAgIGludCBzZW5kX3dpbl9lcnJvcjsKK30gd2FrZXVwID0ge0lOVkFMSURfRkQsIDAsIDB9OworI2Vsc2UKKyNkZWZpbmUgSU5WQUxJRF9GRCAoLTEpCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdha2V1cF9mZCA9IC0xOworI2VuZGlmCiAKIC8qIFNwZWVkIHVwIHNpZ2NoZWNrKCkgd2hlbiBub25lIHRyaXBwZWQgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgaXNfdHJpcHBlZCA9IDA7CkBAIC0xNzIsNyArMTk1LDcgQEAKIH0KIAogc3RhdGljIGludAotcmVwb3J0X3dha2V1cF9lcnJvcih2b2lkICpkYXRhKQorcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAgICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CkBAIC0xODQsMjUgKzIwNyw4NyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIGludAorcmVwb3J0X3dha2V1cF9zZW5kX2Vycm9yKHZvaWQqIFB5X1VOVVNFRChkYXRhKSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKHdha2V1cC5zZW5kX3dpbl9lcnJvcikgeworICAgICAgICAvKiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycigpIGludm9rZXMgRm9ybWF0TWVzc2FnZSgpIHdoaWNoCisgICAgICAgICAgIHJlY29nbml6ZXMgdGhlIGVycm9yIGNvZGVzIHVzZWQgYnkgYm90aCBHZXRMYXN0RXJyb3IoKSBhbmQKKyAgICAgICAgICAgV1NBR2V0TGFzdEVycm9yICovCisgICAgICAgIHJlcyA9IFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIHdha2V1cC5zZW5kX3dpbl9lcnJvcik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcnJubyA9IHdha2V1cC5zZW5kX2Vycm5vOworICAgICAgICByZXMgPSBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgYXNzZXJ0KHJlcyA9PSBOVUxMKTsKKyAgICB3YWtldXAuc2VuZF9lcnJfc2V0ID0gMDsKKworICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byBzZW5kIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCB3YWtldXAgZmQ6XG4iKTsKKyAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoTlVMTCk7CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KKwogc3RhdGljIHZvaWQKIHRyaXBfc2lnbmFsKGludCBzaWdfbnVtKQogewogICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTsKLSAgICBpbnQgcmMgPSAwOworICAgIGludCBmZDsKKyAgICBQeV9zc2l6ZV90IHJjOwogCiAgICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDE7Ci0gICAgaWYgKHdha2V1cF9mZCAhPSAtMSkgeworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGZkID0gUHlfU0FGRV9ET1dOQ0FTVCh3YWtldXAuZmQsIFNPQ0tFVF9ULCBpbnQpOworI2Vsc2UKKyAgICBmZCA9IHdha2V1cF9mZDsKKyNlbmRpZgorCisgICAgaWYgKGZkICE9IElOVkFMSURfRkQpIHsKICAgICAgICAgYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKXNpZ19udW07Ci0gICAgICAgIHdoaWxlICgocmMgPSB3cml0ZSh3YWtldXBfZmQsICZieXRlLCAxKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOwotICAgICAgICBpZiAocmMgPT0gLTEpCi0gICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbChyZXBvcnRfd2FrZXVwX2Vycm9yLCAodm9pZCAqKSAoUHlfaW50cHRyX3QpIGVycm5vKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICh3YWtldXAudXNlX3NlbmQpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICByYyA9IHNlbmQoZmQsICZieXRlLCAxLCAwKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHJjIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisKKyAgICAgICAgICAgIC8qIHdlIG9ubHkgaGF2ZSBhIHN0b3JhZ2UgZm9yIG9uZSBlcnJvciBpbiB0aGUgd2FrZXVwIHN0cnVjdHVyZSAqLworICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiAhd2FrZXVwLnNlbmRfZXJyX3NldCkgeworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX2Vycl9zZXQgPSAxOworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX2Vycm5vID0gZXJybm87CisgICAgICAgICAgICAgICAgd2FrZXVwLnNlbmRfd2luX2Vycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF9zZW5kX2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgYnl0ZSA9ICh1bnNpZ25lZCBjaGFyKXNpZ19udW07CisKKyAgICAgICAgICAgIC8qIF9QeV93cml0ZV9ub3JhaXNlKCkgcmV0cmllcyB3cml0ZSgpIGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkKKyAgICAgICAgICAgICAgIGEgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KKyAgICAgICAgICAgIHJjID0gX1B5X3dyaXRlX25vcmFpc2UoZmQsICZieXRlLCAxKTsKKworICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChpc190cmlwcGVkKQotICAgICAgICByZXR1cm47Ci0gICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cwotICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLwotICAgIGlzX3RyaXBwZWQgPSAxOwotICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKKworICAgIGlmICghaXNfdHJpcHBlZCkgeworICAgICAgICAvKiBTZXQgaXNfdHJpcHBlZCBhZnRlciBzZXR0aW5nIC50cmlwcGVkLCBhcyBpdCBnZXRzCisgICAgICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLworICAgICAgICBpc190cmlwcGVkID0gMTsKKyAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTIyNyw3ICszMTIsNyBAQAogICAgIGlmIChzaWdfbnVtICE9IFNJR0NITEQpCiAjZW5kaWYKICAgICAvKiBJZiB0aGUgaGFuZGxlciB3YXMgbm90IHNldCB1cCB3aXRoIHNpZ2FjdGlvbiwgcmVpbnN0YWxsIGl0LiAgU2VlCi0gICAgICogUHl0aG9uL3B5dGhvbnJ1bi5jIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgUHlPU19zZXRzaWcgd2hpY2gKKyAgICAgKiBQeXRob24vcHlsaWZlY3ljbGUuYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIFB5T1Nfc2V0c2lnIHdoaWNoCiAgICAgICogbWFrZXMgdGhpcyB0cnVlLiAgU2VlIGFsc28gaXNzdWU4MzU0LiAqLwogICAgIFB5T1Nfc2V0c2lnKHNpZ19udW0sIHNpZ25hbF9oYW5kbGVyKTsKICNlbmRpZgpAQCAtMjQ0LDI1ICszMjksMzcgQEAKIAogCiAjaWZkZWYgSEFWRV9BTEFSTQotc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9hbGFybShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5hbGFybSAtPiBsb25nCisKKyAgICBzZWNvbmRzOiBpbnQKKyAgICAvCisKK0FycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK3NpZ25hbF9hbGFybV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzZWNvbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1ZjliYWRhYWIyNWQzZTcgaW5wdXQ9MGQ1ZTk3ZTBlNmYzOWU4Nl0qLwogewotICAgIGludCB0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTphbGFybSIsICZ0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogYWxhcm0oKSByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyByZW1haW5pbmcgKi8KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWFsYXJtKHQpKTsKKyAgICByZXR1cm4gKGxvbmcpYWxhcm0oc2Vjb25kcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihhbGFybV9kb2MsCi0iYWxhcm0oc2Vjb25kcylcblwKLVxuXAotQXJyYW5nZSBmb3IgU0lHQUxSTSB0byBhcnJpdmUgYWZ0ZXIgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLiIpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1BBVVNFCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5wYXVzZQorCitXYWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfcGF1c2UoUHlPYmplY3QgKnNlbGYpCitzaWduYWxfcGF1c2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNDU3MDRjYWE2M2JiZTkgaW5wdXQ9ZjAzZGUwZjg3NTc1MjA2Ml0qLwogewogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAodm9pZClwYXVzZSgpOwpAQCAtMjczLDI5ICszNzAsMzggQEAKICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotUHlEb2NfU1RSVkFSKHBhdXNlX2RvYywKLSJwYXVzZSgpXG5cCi1cblwKLVdhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcy4iKTsKIAogI2VuZGlmCiAKIAorLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ25hbAorCisgICAgc2lnbmFsbnVtOiBpbnQKKyAgICBoYW5kbGVyOiAgIG9iamVjdAorICAgIC8KKworU2V0IHRoZSBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSBhY3Rpb24gY2FuIGJlIFNJR19ERkwsIFNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC4KK1RoZSBwcmV2aW91cyBhY3Rpb24gaXMgcmV0dXJuZWQuICBTZWUgZ2V0c2lnbmFsKCkgZm9yIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMuCisKKyoqKiBJTVBPUlRBTlQgTk9USUNFICoqKgorQSBzaWduYWwgaGFuZGxlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOgordGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWduYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3NpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0sIFB5T2JqZWN0ICpoYW5kbGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYyMmQ3ZDBiZWViZWE1NDYgaW5wdXQ9ZGVlZTg0YWY1ZmEwNDMyY10qLwogewotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgaW50IHNpZ19udW07CiAgICAgUHlPYmplY3QgKm9sZF9oYW5kbGVyOwogICAgIHZvaWQgKCpmdW5jKShpbnQpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86c2lnbmFsIiwgJnNpZ19udW0sICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogVmFsaWRhdGUgdGhhdCBzaWdfbnVtIGlzIG9uZSBvZiB0aGUgYWxsb3dhYmxlIHNpZ25hbHMgKi8KLSAgICBzd2l0Y2ggKHNpZ19udW0pIHsKKyAgICAvKiBWYWxpZGF0ZSB0aGF0IHNpZ25hbG51bSBpcyBvbmUgb2YgdGhlIGFsbG93YWJsZSBzaWduYWxzICovCisgICAgc3dpdGNoIChzaWduYWxudW0pIHsKICAgICAgICAgY2FzZSBTSUdBQlJUOiBicmVhazsKICNpZmRlZiBTSUdCUkVBSwogICAgICAgICAvKiBJc3N1ZSAjMTAwMDM6IFNJR0JSRUFLIGlzIG5vdCBkb2N1bWVudGVkIGFzIHBlcm1pdHRlZCwgYnV0IHdvcmtzCkBAIC0zMTksNjEgKzQyNSw2MyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoc2lnX251bSA8IDEgfHwgc2lnX251bSA+PSBOU0lHKSB7CisgICAgaWYgKHNpZ25hbG51bSA8IDEgfHwgc2lnbmFsbnVtID49IE5TSUcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChvYmogPT0gSWdub3JlSGFuZGxlcikKKyAgICBpZiAoaGFuZGxlciA9PSBJZ25vcmVIYW5kbGVyKQogICAgICAgICBmdW5jID0gU0lHX0lHTjsKLSAgICBlbHNlIGlmIChvYmogPT0gRGVmYXVsdEhhbmRsZXIpCisgICAgZWxzZSBpZiAoaGFuZGxlciA9PSBEZWZhdWx0SGFuZGxlcikKICAgICAgICAgZnVuYyA9IFNJR19ERkw7Ci0gICAgZWxzZSBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sob2JqKSkgeworICAgIGVsc2UgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGhhbmRsZXIpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAic2lnbmFsIGhhbmRsZXIgbXVzdCBiZSBzaWduYWwuU0lHX0lHTiwgc2lnbmFsLlNJR19ERkwsIG9yIGEgY2FsbGFibGUgb2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZnVuYyA9IHNpZ25hbF9oYW5kbGVyOwotICAgIGlmIChQeU9TX3NldHNpZyhzaWdfbnVtLCBmdW5jKSA9PSBTSUdfRVJSKSB7CisgICAgaWYgKFB5T1Nfc2V0c2lnKHNpZ25hbG51bSwgZnVuYykgPT0gU0lHX0VSUikgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ19udW1dLmZ1bmM7Ci0gICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDA7Ci0gICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgSGFuZGxlcnNbc2lnX251bV0uZnVuYyA9IG9iajsKKyAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ25hbG51bV0uZnVuYzsKKyAgICBIYW5kbGVyc1tzaWduYWxudW1dLnRyaXBwZWQgPSAwOworICAgIFB5X0lOQ1JFRihoYW5kbGVyKTsKKyAgICBIYW5kbGVyc1tzaWduYWxudW1dLmZ1bmMgPSBoYW5kbGVyOwogICAgIGlmIChvbGRfaGFuZGxlciAhPSBOVUxMKQogICAgICAgICByZXR1cm4gb2xkX2hhbmRsZXI7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9kb2MsCi0ic2lnbmFsKHNpZywgYWN0aW9uKSAtPiBhY3Rpb25cblwKLVxuXAotU2V0IHRoZSBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuICBUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLFxuXAotU0lHX0lHTiwgb3IgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LiAgVGhlIHByZXZpb3VzIGFjdGlvbiBpc1xuXAotcmV0dXJuZWQuICBTZWUgZ2V0c2lnbmFsKCkgZm9yIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMuXG5cCi1cblwKLSoqKiBJTVBPUlRBTlQgTk9USUNFICoqKlxuXAotQSBzaWduYWwgaGFuZGxlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOlxuXAotdGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4iKTsKIAorLypbY2xpbmljIGlucHV0XQorc2lnbmFsLmdldHNpZ25hbAorCisgICAgc2lnbmFsbnVtOiBpbnQKKyAgICAvCisKK1JldHVybiB0aGUgY3VycmVudCBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuCisKK1RoZSByZXR1cm4gdmFsdWUgY2FuIGJlOgorICBTSUdfSUdOIC0tIGlmIHRoZSBzaWduYWwgaXMgYmVpbmcgaWdub3JlZAorICBTSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3QKKyAgTm9uZSAgICAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0CisgIGFueXRoaW5nIGVsc2UgLS0gdGhlIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QgdXNlZCBhcyBhIGhhbmRsZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9nZXRzaWduYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX2dldHNpZ25hbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzaWduYWxudW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDUwZWMzNTU3NTdlMzYwYyBpbnB1dD1hYzIzYTAwZjE5ZGZhNTA5XSovCiB7Ci0gICAgaW50IHNpZ19udW07CiAgICAgUHlPYmplY3QgKm9sZF9oYW5kbGVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRzaWduYWwiLCAmc2lnX251bSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaWdfbnVtIDwgMSB8fCBzaWdfbnVtID49IE5TSUcpIHsKKyAgICBpZiAoc2lnbmFsbnVtIDwgMSB8fCBzaWduYWxudW0gPj0gTlNJRykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOworICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnbmFsbnVtXS5mdW5jOwogICAgIGlmIChvbGRfaGFuZGxlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvbGRfaGFuZGxlcik7CiAgICAgICAgIHJldHVybiBvbGRfaGFuZGxlcjsKQEAgLTM4Myw1MyArNDkxLDY1IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoZ2V0c2lnbmFsX2RvYywKLSJnZXRzaWduYWwoc2lnKSAtPiBhY3Rpb25cblwKLVxuXAotUmV0dXJuIHRoZSBjdXJyZW50IGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC4gIFRoZSByZXR1cm4gdmFsdWUgY2FuIGJlOlxuXAotU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWRcblwKLVNJR19ERkwgLS0gaWYgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgc2lnbmFsIGlzIGluIGVmZmVjdFxuXAotTm9uZSAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0XG5cCi1hbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyIik7Ci0KICNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotUHlEb2NfU1RSVkFSKHNpZ2ludGVycnVwdF9kb2MsCi0ic2lnaW50ZXJydXB0KHNpZywgZmxhZykgLT4gTm9uZVxuXAotY2hhbmdlIHN5c3RlbSBjYWxsIHJlc3RhcnQgYmVoYXZpb3VyOiBpZiBmbGFnIGlzIEZhbHNlLCBzeXN0ZW0gY2FsbHNcblwKLXdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnkgc2lnbmFsIHNpZywgZWxzZSBzeXN0ZW0gY2FsbHNcblwKLXdpbGwgYmUgaW50ZXJydXB0ZWQuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWdpbnRlcnJ1cHQKKworICAgIHNpZ25hbG51bTogaW50CisgICAgZmxhZzogICAgICBpbnQKKyAgICAvCisKK0NoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91ci4KKworSWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzIHdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnkKK3NpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzIHdpbGwgYmUgaW50ZXJydXB0ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnaW50ZXJydXB0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBpbnQgZmxhZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZGNmOGIwMzFiMGU4MDQ0IGlucHV0PTQxNjBhY2FjY2EzZTIwOTldKi8KIHsKLSAgICBpbnQgc2lnX251bTsKLSAgICBpbnQgZmxhZzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwgJnNpZ19udW0sICZmbGFnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpZ19udW0gPCAxIHx8IHNpZ19udW0gPj0gTlNJRykgeworICAgIGlmIChzaWduYWxudW0gPCAxIHx8IHNpZ25hbG51bSA+PSBOU0lHKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2lnaW50ZXJydXB0KHNpZ19udW0sIGZsYWcpPDApIHsKKyAgICBpZiAoc2lnaW50ZXJydXB0KHNpZ25hbG51bSwgZmxhZyk8MCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqCisKK3N0YXRpYyBQeU9iamVjdCoKIHNpZ25hbF9zZXRfd2FrZXVwX2ZkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdHJ1Y3Qgc3RhdCBidWY7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICpmZG9iajsKKyAgICBTT0NLRVRfVCBzb2NrZmQsIG9sZF9zb2NrZmQ7CisgICAgaW50IHJlczsKKyAgICBpbnQgcmVzX3NpemUgPSBzaXplb2YgcmVzOworICAgIFB5T2JqZWN0ICptb2Q7CisgICAgaW50IGlzX3NvY2tldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzZXRfd2FrZXVwX2ZkIiwgJmZkb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzb2NrZmQgPSBQeUxvbmdfQXNTb2NrZXRfdChmZG9iaik7CisgICAgaWYgKHNvY2tmZCA9PSAoU09DS0VUX1QpKC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbHNlCiAgICAgaW50IGZkLCBvbGRfZmQ7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0X3dha2V1cF9mZCIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgIT0gbWFpbl90aHJlYWQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC00MzcsMjEgKzU1Nyw5MCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoZmQgIT0gLTEgJiYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8IGZzdGF0KGZkLCAmYnVmKSAhPSAwKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaXNfc29ja2V0ID0gMDsKKyAgICBpZiAoc29ja2ZkICE9IElOVkFMSURfRkQpIHsKKyAgICAgICAgLyogSW1wb3J0IHRoZSBfc29ja2V0IG1vZHVsZSB0byBjYWxsIFdTQVN0YXJ0dXAoKSAqLworICAgICAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc29ja2V0Iik7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYobW9kKTsKKworICAgICAgICAvKiB0ZXN0IHRoZSBzb2NrZXQgKi8KKyAgICAgICAgaWYgKGdldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikmcmVzLCAmcmVzX3NpemUpICE9IDApIHsKKyAgICAgICAgICAgIGludCBmZCwgZXJyOworCisgICAgICAgICAgICBlcnIgPSBXU0FHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gV1NBRU5PVFNPQ0spIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBlcnIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOworICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0YXR1cykgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICAgICAgLyogb24gV2luZG93cywgYSBmaWxlIGNhbm5vdCBiZSBzZXQgdG8gbm9uLWJsb2NraW5nIG1vZGUgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlzX3NvY2tldCA9IDE7CisKKyAgICAgICAgICAgIC8qIFdpbmRvd3MgZG9lcyBub3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIHRlc3QgaWYgYSBzb2NrZXQKKyAgICAgICAgICAgICAgIGlzIGluIG5vbi1ibG9ja2luZyBtb2RlICovCisgICAgICAgIH0KICAgICB9CisKKyAgICBvbGRfc29ja2ZkID0gd2FrZXVwLmZkOworICAgIHdha2V1cC5mZCA9IHNvY2tmZDsKKyAgICB3YWtldXAudXNlX3NlbmQgPSBpc19zb2NrZXQ7CisKKyAgICBpZiAob2xkX3NvY2tmZCAhPSBJTlZBTElEX0ZEKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tb2NrZXRfdChvbGRfc29ja2ZkKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLTEpOworI2Vsc2UKKyAgICBpZiAoZmQgIT0gLTEpIHsKKyAgICAgICAgaW50IGJsb2NraW5nOworCisgICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOworICAgICAgICBpZiAoYmxvY2tpbmcgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChibG9ja2luZykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmZCAlaSBtdXN0IGJlIGluIG5vbi1ibG9ja2luZyBtb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG9sZF9mZCA9IHdha2V1cF9mZDsKICAgICB3YWtldXBfZmQgPSBmZDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob2xkX2ZkKTsKKyNlbmRpZgogfQogCiBQeURvY19TVFJWQVIoc2V0X3dha2V1cF9mZF9kb2MsCiAic2V0X3dha2V1cF9mZChmZCkgLT4gZmRcblwKIFxuXAotU2V0cyB0aGUgZmQgdG8gYmUgd3JpdHRlbiB0byAod2l0aCAnXFwwJykgd2hlbiBhIHNpZ25hbFxuXAorU2V0cyB0aGUgZmQgdG8gYmUgd3JpdHRlbiB0byAod2l0aCB0aGUgc2lnbmFsIG51bWJlcikgd2hlbiBhIHNpZ25hbFxuXAogY29tZXMgaW4uICBBIGxpYnJhcnkgY2FuIHVzZSB0aGlzIHRvIHdha2V1cCBzZWxlY3Qgb3IgcG9sbC5cblwKLVRoZSBwcmV2aW91cyBmZCBpcyByZXR1cm5lZC5cblwKK1RoZSBwcmV2aW91cyBmZCBvciAtMSBpcyByZXR1cm5lZC5cblwKIFxuXAogVGhlIGZkIG11c3QgYmUgbm9uLWJsb2NraW5nLiIpOwogCkBAIC00NTksNzEgKzY0OCw4NSBAQAogaW50CiBQeVNpZ25hbF9TZXRXYWtldXBGZChpbnQgZmQpCiB7Ci0gICAgaW50IG9sZF9mZCA9IHdha2V1cF9mZDsKKyAgICBpbnQgb2xkX2ZkOwogICAgIGlmIChmZCA8IDApCiAgICAgICAgIGZkID0gLTE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgb2xkX2ZkID0gUHlfU0FGRV9ET1dOQ0FTVCh3YWtldXAuZmQsIFNPQ0tFVF9ULCBpbnQpOworICAgIHdha2V1cC5mZCA9IGZkOworI2Vsc2UKKyAgICBvbGRfZmQgPSB3YWtldXBfZmQ7CiAgICAgd2FrZXVwX2ZkID0gZmQ7CisjZW5kaWYKICAgICByZXR1cm4gb2xkX2ZkOwogfQogCiAKICNpZmRlZiBIQVZFX1NFVElUSU1FUgorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2V0aXRpbWVyCisKKyAgICB3aGljaDogICAgaW50CisgICAgc2Vjb25kczogIGRvdWJsZQorICAgIGludGVydmFsOiBkb3VibGUgPSAwLjAKKyAgICAvCisKK1NldHMgZ2l2ZW4gaXRpbWVyIChvbmUgb2YgSVRJTUVSX1JFQUwsIElUSU1FUl9WSVJUVUFMIG9yIElUSU1FUl9QUk9GKS4KKworVGhlIHRpbWVyIHdpbGwgZmlyZSBhZnRlciB2YWx1ZSBzZWNvbmRzIGFuZCBhZnRlciB0aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuCitUaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLgorCitSZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2V0aXRpbWVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zZXRpdGltZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGRvdWJsZSBzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBpbnRlcnZhbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTkyMjdhMjdiZDA1OTg4IGlucHV0PTBkMjdkNDE3Y2ZjYmQ1MWFdKi8KIHsKLSAgICBkb3VibGUgZmlyc3Q7Ci0gICAgZG91YmxlIGludGVydmFsID0gMDsKLSAgICBpbnQgd2hpY2g7CiAgICAgc3RydWN0IGl0aW1lcnZhbCBuZXcsIG9sZDsKIAotICAgIGlmKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsICZ3aGljaCwgJmZpcnN0LCAmaW50ZXJ2YWwpKQotICAgIHJldHVybiBOVUxMOwotCi0gICAgdGltZXZhbF9mcm9tX2RvdWJsZShmaXJzdCwgJm5ldy5pdF92YWx1ZSk7CisgICAgdGltZXZhbF9mcm9tX2RvdWJsZShzZWNvbmRzLCAmbmV3Lml0X3ZhbHVlKTsKICAgICB0aW1ldmFsX2Zyb21fZG91YmxlKGludGVydmFsLCAmbmV3Lml0X2ludGVydmFsKTsKICAgICAvKiBMZXQgT1MgY2hlY2sgIndoaWNoIiB2YWx1ZSAqLwogICAgIGlmIChzZXRpdGltZXIod2hpY2gsICZuZXcsICZvbGQpICE9IDApIHsKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOwotICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gaXRpbWVyX3JldHZhbCgmb2xkKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGl0aW1lcl9kb2MsCi0ic2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKVxuXAotXG5cCi1TZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTFxuXAotb3IgSVRJTUVSX1BST0YpIHRvIGZpcmUgYWZ0ZXIgdmFsdWUgc2Vjb25kcyBhbmQgYWZ0ZXJcblwKLXRoYXQgZXZlcnkgaW50ZXJ2YWwgc2Vjb25kcy5cblwKLVRoZSBpdGltZXIgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBzZWNvbmRzIHRvIHplcm8uXG5cCi1cblwKLVJldHVybnMgb2xkIHZhbHVlcyBhcyBhIHR1cGxlOiAoZGVsYXksIGludGVydmFsKS4iKTsKICNlbmRpZgogCiAKICNpZmRlZiBIQVZFX0dFVElUSU1FUgorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuZ2V0aXRpbWVyCisKKyAgICB3aGljaDogICAgaW50CisgICAgLworCitSZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX2dldGl0aW1lcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfZ2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxMzQ5YWIxOGFhZGM1NjkgaW5wdXQ9ZjdkMjFkMzhmMzQ5MDYyN10qLwogewotICAgIGludCB3aGljaDsKICAgICBzdHJ1Y3QgaXRpbWVydmFsIG9sZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKQotICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKGdldGl0aW1lcih3aGljaCwgJm9sZCkgIT0gMCkgewotICAgIFB5RXJyX1NldEZyb21FcnJubyhJdGltZXJFcnJvcik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhJdGltZXJFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHJldHVybiBpdGltZXJfcmV0dmFsKCZvbGQpOwogfQogCi1QeURvY19TVFJWQVIoZ2V0aXRpbWVyX2RvYywKLSJnZXRpdGltZXIod2hpY2gpXG5cCi1cblwKLVJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdXQUlUKSB8fCBcCkBAIC02MTQsMjEgKzgxNywyOCBAQAogI2VuZGlmCiAKICNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucHRocmVhZF9zaWdtYXNrCisKKyAgICBob3c6ICBpbnQKKyAgICBtYXNrOiBvYmplY3QKKyAgICAvCisKK0ZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBob3csIFB5T2JqZWN0ICptYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIwNDNhOWYwZWViMWUwNzUgaW5wdXQ9ZjNiN2Q3YTYxYjdiODI4M10qLwogewotICAgIGludCBob3c7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHM7Ci0gICAgc2lnc2V0X3QgbWFzaywgcHJldmlvdXM7CisgICAgc2lnc2V0X3QgbmV3bWFzaywgcHJldmlvdXM7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwgJmhvdywgJnNpZ25hbHMpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQobWFzaywgJm5ld21hc2spKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJm1hc2spKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZtYXNrLCAmcHJldmlvdXMpOworICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZuZXdtYXNrLCAmcHJldmlvdXMpOwogICAgIGlmIChlcnIgIT0gMCkgewogICAgICAgICBlcnJubyA9IGVycjsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtNjQyLDE2ICs4NTIsMjMgQEAKICAgICByZXR1cm4gc2lnc2V0X3RvX3NldChwcmV2aW91cyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvYywKLSJwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKSAtPiBvbGQgbWFza1xuXAotXG5cCi1GZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sgKi8KIAogCiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWdwZW5kaW5nCisKK0V4YW1pbmUgcGVuZGluZyBzaWduYWxzLgorCitSZXR1cm5zIGEgc2V0IG9mIHNpZ25hbCBudW1iZXJzIHRoYXQgYXJlIHBlbmRpbmcgZm9yIGRlbGl2ZXJ5IHRvCit0aGUgY2FsbGluZyB0aHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lncGVuZGluZyhQeU9iamVjdCAqc2VsZikKK3NpZ25hbF9zaWdwZW5kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjRjZWQ4MDNlN2U1MWRkIGlucHV0PWUwMDM2YzAxNmY4NzRlMjldKi8KIHsKICAgICBpbnQgZXJyOwogICAgIHNpZ3NldF90IG1hc2s7CkBAIC02NjEsMjUgKzg3OCwzMiBAQAogICAgIHJldHVybiBzaWdzZXRfdG9fc2V0KG1hc2spOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3BlbmRpbmdfZG9jLAotInNpZ3BlbmRpbmcoKSAtPiBsaXN0XG5cCi1cblwKLUV4YW1pbmUgcGVuZGluZyBzaWduYWxzLiIpOwogI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLwogCiAKICNpZmRlZiBIQVZFX1NJR1dBSVQKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ3dhaXQKKworICAgIHNpZ3NldDogb2JqZWN0CisgICAgLworCitXYWl0IGZvciBhIHNpZ25hbC4KKworU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCitzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCBzaWdzZXQuICBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUgc2lnbmFsCithbmQgcmV0dXJucyB0aGUgc2lnbmFsIG51bWJlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWd3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd3YWl0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzaWdzZXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFlNTMwNDhiMDMzNmE1YyBpbnB1dD0xMWFmMmQ4MmQ4M2MyZTk0XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHM7CiAgICAgc2lnc2V0X3Qgc2V0OwogICAgIGludCBlcnIsIHNpZ251bTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0IiwgJnNpZ25hbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTY5MywxMSArOTE3LDggQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNpZ251bSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9kb2MsCi0ic2lnd2FpdChzaWdzZXQpIC0+IHNpZ251bVxuXAotXG5cCi1XYWl0IGEgc2lnbmFsLiIpOwotI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHV0FJVCAqLworCiAKICNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwpAQCAtNzUyLDEwMCArOTczLDEzNiBAQAogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWd3YWl0aW5mbworCisgICAgc2lnc2V0OiBvYmplY3QKKyAgICAvCisKK1dhaXQgc3luY2hyb25vdXNseSB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXMgZGVsaXZlcmVkLgorCitSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3dhaXRpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd3YWl0aW5mbyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiYjUzYjA3ZTVlOTI2YjUgaW5wdXQ9ZjM3NzlhNzRhOTkxZTE3MV0qLwogewotICAgIFB5T2JqZWN0ICpzaWduYWxzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBzaWdpbmZvX3Qgc2k7CiAgICAgaW50IGVycjsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0aW5mbyIsICZzaWduYWxzKSkKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ3NldCwgJnNldCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnIgPSBzaWd3YWl0aW5mbygmc2V0LCAmc2kpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKGVyciA9PSAtMQorICAgICAgICAgICAgICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAoZXJyID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpIDogTlVMTDsKIAogICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0aW5mb19kb2MsCi0ic2lnd2FpdGluZm8oc2lnc2V0KSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAotXG5cCi1XYWl0IHN5bmNocm9ub3VzbHkgZm9yIGEgc2lnbmFsIHVudGlsIG9uZSBvZiB0aGUgc2lnbmFscyBpbiAqc2lnc2V0KiBpc1xuXAotZGVsaXZlcmVkLlxuXAotUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPICovCiAKICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lndGltZWR3YWl0CisKKyAgICBzaWdzZXQ6ICBvYmplY3QKKyAgICB0aW1lb3V0IGFzIHRpbWVvdXRfb2JqOiBvYmplY3QKKyAgICAvCisKK0xpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0LgorCitUaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFsbG93ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lndGltZWR3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWd0aW1lZHdhaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTk2MGI1Y2VhMTM5OTI5IGlucHV0PTUzZmQ0ZWEzZTM3MjRlYjhdKi8KIHsKLSAgICBQeU9iamVjdCAqc2lnbmFscywgKnRpbWVvdXQ7Ci0gICAgc3RydWN0IHRpbWVzcGVjIGJ1ZjsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CiAgICAgc2lnc2V0X3Qgc2V0OwogICAgIHNpZ2luZm9fdCBzaTsKLSAgICB0aW1lX3QgdHZfc2VjOwotICAgIGxvbmcgdHZfbnNlYzsKLSAgICBpbnQgZXJyOworICAgIGludCByZXM7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lLCBtb25vdG9uaWM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnNpZ3RpbWVkd2FpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzaWduYWxzLCAmdGltZW91dCkpCisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9vYmosIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWModGltZW91dCwgJnR2X3NlYywgJnR2X25zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYudHZfc2VjID0gdHZfc2VjOwotICAgIGJ1Zi50dl9uc2VjID0gdHZfbnNlYzsKLQotICAgIGlmIChidWYudHZfc2VjIDwgMCB8fCBidWYudHZfbnNlYyA8IDApIHsKKyAgICBpZiAodGltZW91dCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnIgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmYnVmKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChlcnIgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKLSAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KKyAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXNwZWModGltZW91dCwgJnRzKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IHNpZ3RpbWVkd2FpdCgmc2V0LCAmc2ksICZ0cyk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHJlcyAhPSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICB9CisKKyAgICAgICAgLyogc2lndGltZWR3YWl0KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChFSU5UUikgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgbW9ub3RvbmljID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBtb25vdG9uaWM7CisgICAgICAgIGlmICh0aW1lb3V0IDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKDEpOwogCiAgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2MsCi0ic2lndGltZWR3YWl0KHNpZ3NldCwgKHRpbWVvdXRfc2VjLCB0aW1lb3V0X25zZWMpKSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAotXG5cCi1MaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dCBzcGVjaWZpZWQgYXMgYSB0dXBsZSBvZiAoc2Vjb25kcyxcblwKLW5hbm9zZWNvbmRzKS4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVCAqLwogCiAKICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucHRocmVhZF9raWxsCisKKyAgICB0aHJlYWRfaWQ6ICBsb25nCisgICAgc2lnbmFsbnVtOiAgaW50CisgICAgLworCitTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3B0aHJlYWRfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfcHRocmVhZF9raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbG9uZyB0aHJlYWRfaWQsIGludCBzaWduYWxudW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzVhZWQyNzEzYzc1NmQ3YSBpbnB1dD03N2VkNmEzYjZmMmE4MTIyXSovCiB7Ci0gICAgbG9uZyB0aWQ7Ci0gICAgaW50IHNpZ251bTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLCAmdGlkLCAmc2lnbnVtKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlcnIgPSBwdGhyZWFkX2tpbGwoKHB0aHJlYWRfdCl0aWQsIHNpZ251bSk7CisgICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGhyZWFkX2lkLCBzaWduYWxudW0pOwogICAgIGlmIChlcnIgIT0gMCkgewogICAgICAgICBlcnJubyA9IGVycjsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtODU5LDYyICsxMTE2LDI5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX2RvYywKLSJwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pXG5cCi1cblwKLVNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CiAjZW5kaWYgICAvKiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkgKi8KIAogCiAKLS8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAqLworLyogTGlzdCBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIC0tIHNvbWUgb2YgdGhlIG1ldGhvZGRlZnMgYXJlCisgICBkZWZpbmVkIHRvIG5vdGhpbmcgaWYgdGhlIGNvcnJlc3BvbmRpbmcgQyBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAqLwogc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbF9tZXRob2RzW10gPSB7Ci0jaWZkZWYgSEFWRV9BTEFSTQotICAgIHsiYWxhcm0iLCAgICAgICAgICAgICAgICAgICBzaWduYWxfYWxhcm0sIE1FVEhfVkFSQVJHUywgYWxhcm1fZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0VUSVRJTUVSCi0gICAgeyJzZXRpdGltZXIiLCAgICAgICBzaWduYWxfc2V0aXRpbWVyLCBNRVRIX1ZBUkFSR1MsIHNldGl0aW1lcl9kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRJVElNRVIKLSAgICB7ImdldGl0aW1lciIsICAgICAgIHNpZ25hbF9nZXRpdGltZXIsIE1FVEhfVkFSQVJHUywgZ2V0aXRpbWVyX2RvY30sCi0jZW5kaWYKLSAgICB7InNpZ25hbCIsICAgICAgICAgICAgICAgICAgc2lnbmFsX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfZG9jfSwKLSAgICB7ImdldHNpZ25hbCIsICAgICAgICAgICAgICAgc2lnbmFsX2dldHNpZ25hbCwgTUVUSF9WQVJBUkdTLCBnZXRzaWduYWxfZG9jfSwKKyAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCisgICAgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorICAgIFNJR05BTF9TRVRJVElNRVJfTUVUSE9EREVGCisgICAgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyAgICBTSUdOQUxfU0lHTkFMX01FVEhPRERFRgorICAgIFNJR05BTF9HRVRTSUdOQUxfTUVUSE9EREVGCiAgICAgeyJzZXRfd2FrZXVwX2ZkIiwgICAgICAgICAgIHNpZ25hbF9zZXRfd2FrZXVwX2ZkLCBNRVRIX1ZBUkFSR1MsIHNldF93YWtldXBfZmRfZG9jfSwKLSNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotICAgIHsic2lnaW50ZXJydXB0IiwgICAgICAgICAgICBzaWduYWxfc2lnaW50ZXJydXB0LCBNRVRIX1ZBUkFSR1MsIHNpZ2ludGVycnVwdF9kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9QQVVTRQotICAgIHsicGF1c2UiLCAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLAotICAgICBNRVRIX05PQVJHUywgcGF1c2VfZG9jfSwKLSNlbmRpZgotICAgIHsiZGVmYXVsdF9pbnRfaGFuZGxlciIsIHNpZ25hbF9kZWZhdWx0X2ludF9oYW5kbGVyLAotICAgICBNRVRIX1ZBUkFSR1MsIGRlZmF1bHRfaW50X2hhbmRsZXJfZG9jfSwKLSNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQotICAgIHsicHRocmVhZF9raWxsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfa2lsbCwKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9raWxsX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSwotICAgIHsicHRocmVhZF9zaWdtYXNrIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKLSAgICB7InNpZ3BlbmRpbmciLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdwZW5kaW5nLAotICAgICBNRVRIX05PQVJHUywgc2lnbmFsX3NpZ3BlbmRpbmdfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHV0FJVAotICAgIHsic2lnd2FpdCIsICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KLSAgICB7InNpZ3dhaXRpbmZvIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0aW5mbywKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdGluZm9fZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCi0gICAgeyJzaWd0aW1lZHdhaXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lndGltZWR3YWl0LAotICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jfSwKLSNlbmRpZgotICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBTSUdOQUxfU0lHSU5URVJSVVBUX01FVEhPRERFRgorICAgIFNJR05BTF9QQVVTRV9NRVRIT0RERUYKKyAgICBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgorICAgIFNJR05BTF9QVEhSRUFEX1NJR01BU0tfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdUSU1FRFdBSVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogCkBAIC05NTYsNyArMTE4MCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc2lnbmFsbW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAic2lnbmFsIiwKKyAgICAiX3NpZ25hbCIsCiAgICAgbW9kdWxlX2RvYywKICAgICAtMSwKICAgICBzaWduYWxfbWV0aG9kcywKQEAgLTk2Nyw3ICsxMTkxLDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfc2lnbmFsKHZvaWQpCitQeUluaXRfX3NpZ25hbCh2b2lkKQogewogICAgIFB5T2JqZWN0ICptLCAqZCwgKng7CiAgICAgaW50IGk7CkBAIC0xMzgwLDcgKzE2MDQsNyBAQAogdm9pZAogUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQogewotICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzaWduYWwiKTsKKyAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiX3NpZ25hbCIpOwogICAgIGlmIChtKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCBiNmYyYmY1Li43NjEwYjBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEyMSw3ICsxMjEsNyBAQAogZ2V0c29ja25hbWUoKSAtLSByZXR1cm4gbG9jYWwgYWRkcmVzc1xuXAogZ2V0c29ja29wdChsZXZlbCwgb3B0bmFtZVssIGJ1Zmxlbl0pIC0tIGdldCBzb2NrZXQgb3B0aW9uc1xuXAogZ2V0dGltZW91dCgpIC0tIHJldHVybiB0aW1lb3V0IG9yIE5vbmVcblwKLWxpc3RlbihuKSAtLSBzdGFydCBsaXN0ZW5pbmcgZm9yIGluY29taW5nIGNvbm5lY3Rpb25zXG5cCitsaXN0ZW4oW25dKSAtLSBzdGFydCBsaXN0ZW5pbmcgZm9yIGluY29taW5nIGNvbm5lY3Rpb25zXG5cCiByZWN2KGJ1ZmxlblssIGZsYWdzXSkgLS0gcmVjZWl2ZSBkYXRhXG5cCiByZWN2X2ludG8oYnVmZmVyWywgbmJ5dGVzWywgZmxhZ3NdXSkgLS0gcmVjZWl2ZSBkYXRhIChpbnRvIGEgYnVmZmVyKVxuXAogcmVjdmZyb20oYnVmbGVuWywgZmxhZ3NdKSAtLSByZWNlaXZlIGRhdGEgYW5kIHNlbmRlclwncyBhZGRyZXNzXG5cCkBAIC0yODQsMTQgKzI4NCwxNSBAQAogIyAgaW5jbHVkZSA8ZmNudGwuaD4KICMgZW5kaWYKIAorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE4MDAKKy8qIFByb3ZpZGVzIHRoZSBJc1dpbmRvd3M3U1AxT3JHcmVhdGVyKCkgZnVuY3Rpb24gKi8KKyNpbmNsdWRlIDxWZXJzaW9uSGVscGVycy5oPgorI2VuZGlmCisKICNlbmRpZgogCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKLSNpZm5kZWYgb2Zmc2V0b2YKLSMgZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikgKChzaXplX3QpKCYoKHR5cGUgKikwKS0+bWVtYmVyKSkKLSNlbmRpZgotCiAjaWZuZGVmIE9fTk9OQkxPQ0sKICMgZGVmaW5lIE9fTk9OQkxPQ0sgT19OREVMQVkKICNlbmRpZgpAQCAtNDU5LDcgKzQ2MCw3IEBACiAjZWxzZQogLyogSWYgdGhlcmUncyBubyB0aW1lb3V0IGxlZnQsIHdlIGRvbid0IGhhdmUgdG8gY2FsbCBzZWxlY3QsIHNvIGl0J3MgYSBzYWZlLAogICogbGl0dGxlIHdoaXRlIGxpZS4gKi8KLSNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAoX1B5SXNTZWxlY3RhYmxlX2ZkKChzKS0+c29ja19mZCkgfHwgKHMpLT5zb2NrX3RpbWVvdXQgPD0gMC4wKQorI2RlZmluZSBJU19TRUxFQ1RBQkxFKHMpIChfUHlJc1NlbGVjdGFibGVfZmQoKHMpLT5zb2NrX2ZkKSB8fCAocyktPnNvY2tfdGltZW91dCA8PSAwKQogI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTQ4MSw2ICs0ODIsMTkgQEAKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUworIyAgZGVmaW5lIEdFVF9TT0NLX0VSUk9SIFdTQUdldExhc3RFcnJvcigpCisjICBkZWZpbmUgU0VUX1NPQ0tfRVJST1IoZXJyKSBXU0FTZXRMYXN0RXJyb3IoZXJyKQorIyAgZGVmaW5lIFNPQ0tfVElNRU9VVF9FUlIgV1NBRVdPVUxEQkxPQ0sKKyMgIGRlZmluZSBTT0NLX0lOUFJPR1JFU1NfRVJSIFdTQUVXT1VMREJMT0NLCisjZWxzZQorIyAgZGVmaW5lIEdFVF9TT0NLX0VSUk9SIGVycm5vCisjICBkZWZpbmUgU0VUX1NPQ0tfRVJST1IoZXJyKSBkbyB7IGVycm5vID0gZXJyOyB9IHdoaWxlICgwKQorIyAgZGVmaW5lIFNPQ0tfVElNRU9VVF9FUlIgRVdPVUxEQkxPQ0sKKyMgIGRlZmluZSBTT0NLX0lOUFJPR1JFU1NfRVJSIEVJTlBST0dSRVNTCisjZW5kaWYKKworCisjaWZkZWYgTVNfV0lORE9XUwogLyogRG9lcyBXU0FTb2NrZXQoKSBzdXBwb3J0IHRoZSBXU0FfRkxBR19OT19IQU5ETEVfSU5IRVJJVCBmbGFnPyAqLwogc3RhdGljIGludCBzdXBwb3J0X3dzYV9ub19pbmhlcml0ID0gLTE7CiAjZW5kaWYKQEAgLTU1Miw2ICs1NjYsOSBAQAogc3RhdGljIGludAogaW50ZXJuYWxfc2V0YmxvY2tpbmcoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgYmxvY2spCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHVfbG9uZyBhcmc7CisjZW5kaWYKICNpZiAhZGVmaW5lZChNU19XSU5ET1dTKSBcCiAgICAgJiYgISgoZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKSAmJiBkZWZpbmVkKEZJT05CSU8pKSkKICAgICBpbnQgZGVsYXlfZmxhZywgbmV3X2RlbGF5X2ZsYWc7CkBAIC01NzgsOCArNTk1LDggQEAKICAgICAgICAgZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpOwogI2VuZGlmCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCi0gICAgYmxvY2sgPSAhYmxvY2s7Ci0gICAgaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgKHVfbG9uZyopJmJsb2NrKTsKKyAgICBhcmcgPSAhYmxvY2s7CisgICAgaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgJmFyZyk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTU4Nyw2MCArNjA0LDc5IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIERvIGEgc2VsZWN0KCkvcG9sbCgpIG9uIHRoZSBzb2NrZXQsIGlmIG5lY2Vzc2FyeSAoc29ja190aW1lb3V0ID4gMCkuCi0gICBUaGUgYXJndW1lbnQgd3JpdGluZyBpbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbi4KLSAgIFRoaXMgZG9lcyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uOyB3ZSdsbCBsZXQgb3VyIGNhbGxlciBkbyB0aGF0Ci0gICBhZnRlciB0aGV5J3ZlIHJlYWNxdWlyZWQgdGhlIGludGVycHJldGVyIGxvY2suCi0gICBSZXR1cm5zIDEgb24gdGltZW91dCwgLTEgb24gZXJyb3IsIDAgb3RoZXJ3aXNlLiAqLwogc3RhdGljIGludAotaW50ZXJuYWxfc2VsZWN0X2V4KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcsIGRvdWJsZSBpbnRlcnZhbCkKK2ludGVybmFsX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgaW50IGNvbm5lY3QpCiB7CiAgICAgaW50IG47CisjaWZkZWYgSEFWRV9QT0xMCisgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7CisgICAgX1B5VGltZV90IG1zOworI2Vsc2UKKyAgICBmZF9zZXQgZmRzLCBlZmRzOworICAgIHN0cnVjdCB0aW1ldmFsIHR2LCAqdHZwOworI2VuZGlmCiAKLSAgICAvKiBOb3RoaW5nIHRvIGRvIHVubGVzcyB3ZSdyZSBpbiB0aW1lb3V0IG1vZGUgKG5vdCBub24tYmxvY2tpbmcpICovCi0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA8PSAwLjApCi0gICAgICAgIHJldHVybiAwOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgR0lMIGhlbGQgKi8KKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCisgICAgLyogRXJyb3IgY29uZGl0aW9uIGlzIGZvciBvdXRwdXQgb25seSAqLworICAgIGFzc2VydCghKGNvbm5lY3QgJiYgIXdyaXRpbmcpKTsKIAogICAgIC8qIEd1YXJkIGFnYWluc3QgY2xvc2VkIHNvY2tldCAqLwogICAgIGlmIChzLT5zb2NrX2ZkIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAvKiBIYW5kbGluZyB0aGlzIGNvbmRpdGlvbiBoZXJlIHNpbXBsaWZpZXMgdGhlIHNlbGVjdCBsb29wcyAqLwotICAgIGlmIChpbnRlcnZhbCA8IDAuMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KICAgICAvKiBQcmVmZXIgcG9sbCwgaWYgYXZhaWxhYmxlLCBzaW5jZSB5b3UgY2FuIHBvbGwoKSBhbnkgZmQKICAgICAgKiB3aGljaCBjYW4ndCBiZSBkb25lIHdpdGggc2VsZWN0KCkuICovCiAjaWZkZWYgSEFWRV9QT0xMCi0gICAgewotICAgICAgICBzdHJ1Y3QgcG9sbGZkIHBvbGxmZDsKLSAgICAgICAgaW50IHRpbWVvdXQ7Ci0KLSAgICAgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKLSAgICAgICAgcG9sbGZkLmV2ZW50cyA9IHdyaXRpbmcgPyBQT0xMT1VUIDogUE9MTElOOwotCi0gICAgICAgIC8qIHMtPnNvY2tfdGltZW91dCBpcyBpbiBzZWNvbmRzLCB0aW1lb3V0IGluIG1zICovCi0gICAgICAgIHRpbWVvdXQgPSAoaW50KShpbnRlcnZhbCAqIDEwMDAgKyAwLjUpOwotICAgICAgICBuID0gcG9sbCgmcG9sbGZkLCAxLCB0aW1lb3V0KTsKKyAgICBwb2xsZmQuZmQgPSBzLT5zb2NrX2ZkOworICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKKyAgICBpZiAoY29ubmVjdCkgeworICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgc29ja2V0IGJlY29tZXMgd3JpdGFibGUgb24gY29ubmVjdGlvbiBzdWNjZXNzLAorICAgICAgICAgICBidXQgYSBjb25uZWN0aW9uIGZhaWx1cmUgaXMgbm90aWZpZWQgYXMgYW4gZXJyb3IuIE9uIFBPU0lYLCB0aGUKKyAgICAgICAgICAgc29ja2V0IGJlY29tZXMgd3JpdGFibGUgb24gY29ubmVjdGlvbiBzdWNjZXNzIG9yIG9uIGNvbm5lY3Rpb24KKyAgICAgICAgICAgZmFpbHVyZS4gKi8KKyAgICAgICAgcG9sbGZkLmV2ZW50cyB8PSBQT0xMRVJSOwogICAgIH0KKworICAgIC8qIHMtPnNvY2tfdGltZW91dCBpcyBpbiBzZWNvbmRzLCB0aW1lb3V0IGluIG1zICovCisgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKGludGVydmFsLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgIGFzc2VydChtcyA8PSBJTlRfTUFYKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgbiA9IHBvbGwoJnBvbGxmZCwgMSwgKGludCltcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAjZWxzZQotICAgIHsKLSAgICAgICAgLyogQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgdG8gc2VsZWN0ICovCi0gICAgICAgIGZkX3NldCBmZHM7Ci0gICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgICAgICB0di50dl9zZWMgPSAoaW50KWludGVydmFsOwotICAgICAgICB0di50dl91c2VjID0gKGludCkoKGludGVydmFsIC0gdHYudHZfc2VjKSAqIDFlNik7Ci0gICAgICAgIEZEX1pFUk8oJmZkcyk7Ci0gICAgICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZmRzKTsKLQotICAgICAgICAvKiBTZWUgaWYgdGhlIHNvY2tldCBpcyByZWFkeSAqLwotICAgICAgICBpZiAod3JpdGluZykKLSAgICAgICAgICAgIG4gPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZmRzLCBOVUxMLCAmdHYpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgJmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKKyAgICBpZiAoaW50ZXJ2YWwgPj0gMCkgeworICAgICAgICBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKGludGVydmFsLCAmdHYsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgIHR2cCA9ICZ0djsKICAgICB9CisgICAgZWxzZQorICAgICAgICB0dnAgPSBOVUxMOworCisgICAgRkRfWkVSTygmZmRzKTsKKyAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7CisgICAgRkRfWkVSTygmZWZkcyk7CisgICAgaWYgKGNvbm5lY3QpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcywKKyAgICAgICAgICAgYnV0IGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIG5vdGlmaWVkIGFzIGFuIGVycm9yLiBPbiBQT1NJWCwgdGhlCisgICAgICAgICAgIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcyBvciBvbiBjb25uZWN0aW9uCisgICAgICAgICAgIGZhaWx1cmUuICovCisgICAgICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZWZkcyk7CisgICAgfQorCisgICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIGlmICh3cml0aW5nKQorICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKKyAgICAgICAgICAgICAgICAgICBOVUxMLCAmZmRzLCAmZWZkcywgdHZwKTsKKyAgICBlbHNlCisgICAgICAgIG4gPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAorICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsICZlZmRzLCB0dnApOworICAgIFB5X0VORF9BTExPV19USFJFQURTOwogI2VuZGlmCiAKICAgICBpZiAobiA8IDApCkBAIC02NTAsNTYgKzY4NiwxNjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogQ2FsbCBhIHNvY2tldCBmdW5jdGlvbi4KKworICAgT24gZXJyb3IsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIGVyciBpcyBzZXQsIG9yIGZpbGwgZXJyIGFuZAorICAgcmV0dXJuIC0xIG90aGVyd2lzZS4gSWYgYSBzaWduYWwgd2FzIHJlY2VpdmVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VkCisgICBhbiBleGNlcHRpb24sIHJldHVybiAtMSwgYW5kIHNldCBlcnIgdG8gLTEgaWYgZXJyIGlzIHNldC4KKworICAgT24gc3VjY2VzcywgcmV0dXJuIDAsIGFuZCBzZXQgZXJyIHRvIDAgaWYgZXJyIGlzIHNldC4KKworICAgSWYgdGhlIHNvY2tldCBoYXMgYSB0aW1lb3V0LCB3YWl0IHVudGlsIHRoZSBzb2NrZXQgaXMgcmVhZHkgYmVmb3JlIGNhbGxpbmcKKyAgIHRoZSBmdW5jdGlvbjogd2FpdCB1bnRpbCB0aGUgc29ja2V0IGlzIHdyaXRhYmxlIGlmIHdyaXRpbmcgaXMgbm9uemVybywgd2FpdAorICAgdW50aWwgdGhlIHNvY2tldCByZWNlaXZlZCBkYXRhIG90aGVyd2lzZS4KKworICAgSWYgdGhlIHNvY2tldCBmdW5jdGlvbiBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGggRUlOVFIpOiByZXRyeQorICAgdGhlIGZ1bmN0aW9uLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24gKFBFUCA0NzUpLgorCisgICBXaGVuIHRoZSBmdW5jdGlvbiBpcyByZXRyaWVkLCByZWNvbXB1dGUgdGhlIHRpbWVvdXQgdXNpbmcgYSBtb25vdG9uaWMgY2xvY2suCisKKyAgIHNvY2tfY2FsbF9leCgpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkLiBUaGUgc29ja2V0IGZ1bmN0aW9uIGlzCisgICBjYWxsZWQgd2l0aCB0aGUgR0lMIHJlbGVhc2VkLiAqLwogc3RhdGljIGludAotaW50ZXJuYWxfc2VsZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcpCitzb2NrX2NhbGxfZXgoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLAorICAgICAgICAgICAgIGludCB3cml0aW5nLAorICAgICAgICAgICAgIGludCAoKnNvY2tfZnVuYykgKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSksCisgICAgICAgICAgICAgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICBpbnQgY29ubmVjdCwKKyAgICAgICAgICAgICBpbnQgKmVyciwKKyAgICAgICAgICAgICBfUHlUaW1lX3QgdGltZW91dCkKIHsKLSAgICByZXR1cm4gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIHdyaXRpbmcsIHMtPnNvY2tfdGltZW91dCk7Ci19CisgICAgaW50IGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBfUHlUaW1lX3QgZGVhZGxpbmUgPSAwOworICAgIGludCBkZWFkbGluZV9pbml0aWFsaXplZCA9IDA7CisgICAgaW50IHJlczsKIAotLyoKLSAgIFR3byBtYWNyb3MgZm9yIGF1dG9tYXRpYyByZXRyeSBvZiBzZWxlY3QoKSBpbiBjYXNlIG9mIGZhbHNlIHBvc2l0aXZlcwotICAgKGZvciBleGFtcGxlLCBzZWxlY3QoKSBjb3VsZCBpbmRpY2F0ZSBhIHNvY2tldCBpcyByZWFkeSBmb3IgcmVhZGluZwotICAgIGJ1dCB0aGUgZGF0YSB0aGVuIGRpc2NhcmRlZCBieSB0aGUgT1MgYmVjYXVzZSBvZiBhIHdyb25nIGNoZWNrc3VtKS4KLSAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2U6CisgICAgLyogc29ja19jYWxsKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgR0lMIGhlbGQuICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIG91dGxlbiA9IHJlY3Yocy0+c29ja19mZCwgY2J1ZiwgbGVuLCBmbGFncyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgIC8qIG91dGVyIGxvb3AgdG8gcmV0cnkgc2VsZWN0KCkgd2hlbiBzZWxlY3QoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbAorICAgICAgIG9yIHRvIHJldHJ5IHNlbGVjdCgpK3NvY2tfZnVuYygpIG9uIGZhbHNlIHBvc2l0aXZlIChzZWUgYWJvdmUpICovCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLyogRm9yIGNvbm5lY3QoKSwgcG9sbCBldmVuIGZvciBibG9ja2luZyBzb2NrZXQuIFRoZSBjb25uZWN0aW9uCisgICAgICAgICAgIHJ1bnMgYXN5bmNocm9ub3VzbHkuICovCisgICAgICAgIGlmIChoYXNfdGltZW91dCB8fCBjb25uZWN0KSB7CisgICAgICAgICAgICBpZiAoaGFzX3RpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICBfUHlUaW1lX3QgaW50ZXJ2YWw7CisKKyAgICAgICAgICAgICAgICBpZiAoZGVhZGxpbmVfaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogcmVjb21wdXRlIHRoZSB0aW1lb3V0ICovCisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZWFkbGluZV9pbml0aWFsaXplZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB0aW1lb3V0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCA+PSAwKQorICAgICAgICAgICAgICAgICAgICByZXMgPSBpbnRlcm5hbF9zZWxlY3Qocywgd3JpdGluZywgaW50ZXJ2YWwsIGNvbm5lY3QpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlcyA9IGludGVybmFsX3NlbGVjdChzLCB3cml0aW5nLCB0aW1lb3V0LCBjb25uZWN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICplcnIgPSBHRVRfU09DS19FUlJPUjsKKworICAgICAgICAgICAgICAgIGlmIChDSEVDS19FUlJOTyhFSU5UUikpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogc2VsZWN0KCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXJyID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiByZXRyeSBzZWxlY3QoKSAqLworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBzZWxlY3QoKSBmYWlsZWQgKi8KKyAgICAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gMSkgeworICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICplcnIgPSBTT0NLX1RJTUVPVVRfRVJSOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB0aGUgc29ja2V0IGlzIHJlYWR5ICovCisgICAgICAgIH0KKworICAgICAgICAvKiBpbm5lciBsb29wIHRvIHJldHJ5IHNvY2tfZnVuYygpIHdoZW4gc29ja19mdW5jKCkgaXMgaW50ZXJydXB0ZWQKKyAgICAgICAgICAgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJlcyA9IHNvY2tfZnVuYyhzLCBkYXRhKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgICAgIGlmIChyZXMpIHsKKyAgICAgICAgICAgICAgICAvKiBzb2NrX2Z1bmMoKSBzdWNjZWVkZWQgKi8KKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAqZXJyID0gR0VUX1NPQ0tfRVJST1I7CisKKyAgICAgICAgICAgIGlmICghQ0hFQ0tfRVJSTk8oRUlOVFIpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvKiBzb2NrX2Z1bmMoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICplcnIgPSAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHJldHJ5IHNvY2tfZnVuYygpICovCisgICAgICAgIH0KKworICAgICAgICBpZiAocy0+c29ja190aW1lb3V0ID4gMAorICAgICAgICAgICAgJiYgKENIRUNLX0VSUk5PKEVXT1VMREJMT0NLKSB8fCBDSEVDS19FUlJOTyhFQUdBSU4pKSkgeworICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmU6IHNvY2tfZnVuYygpIGZhaWxlZCB3aXRoIEVXT1VMREJMT0NLIG9yIEVBR0FJTi4KKworICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGVjdCgpIGNvdWxkIGluZGljYXRlIGEgc29ja2V0IGlzIHJlYWR5IGZvcgorICAgICAgICAgICAgICAgcmVhZGluZywgYnV0IHRoZSBkYXRhIHRoZW4gZGlzY2FyZGVkIGJ5IHRoZSBPUyBiZWNhdXNlIG9mIGEKKyAgICAgICAgICAgICAgIHdyb25nIGNoZWNrc3VtLgorCisgICAgICAgICAgICAgICBMb29wIG9uIHNlbGVjdCgpIHRvIHJlY2hlY2sgZm9yIHNvY2tldCByZWFkeW5lc3MuICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHNvY2tfZnVuYygpIGZhaWxlZCAqLworICAgICAgICBpZiAoIWVycikKKyAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAvKiBlbHNlOiBlcnIgd2FzIGFscmVhZHkgc2V0IGJlZm9yZSAqLwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotKi8KK30KIAotI2RlZmluZSBCRUdJTl9TRUxFQ1RfTE9PUChzKSBcCi0gICAgeyBcCi0gICAgICAgIF9QeVRpbWVfdGltZXZhbCBub3csIGRlYWRsaW5lID0gezAsIDB9OyBcCi0gICAgICAgIGRvdWJsZSBpbnRlcnZhbCA9IHMtPnNvY2tfdGltZW91dDsgXAotICAgICAgICBpbnQgaGFzX3RpbWVvdXQgPSBzLT5zb2NrX3RpbWVvdXQgPiAwLjA7IFwKLSAgICAgICAgaWYgKGhhc190aW1lb3V0KSB7IFwKLSAgICAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZub3cpOyBcCi0gICAgICAgICAgICBkZWFkbGluZSA9IG5vdzsgXAotICAgICAgICAgICAgX1B5VGltZV9BRERfU0VDT05EUyhkZWFkbGluZSwgcy0+c29ja190aW1lb3V0KTsgXAotICAgICAgICB9IFwKLSAgICAgICAgd2hpbGUgKDEpIHsgXAotICAgICAgICAgICAgZXJybm8gPSAwOyBcCitzdGF0aWMgaW50Citzb2NrX2NhbGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLAorICAgICAgICAgIGludCB3cml0aW5nLAorICAgICAgICAgIGludCAoKmZ1bmMpIChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpLAorICAgICAgICAgIHZvaWQgKmRhdGEpCit7CisgICAgcmV0dXJuIHNvY2tfY2FsbF9leChzLCB3cml0aW5nLCBmdW5jLCBkYXRhLCAwLCBOVUxMLCBzLT5zb2NrX3RpbWVvdXQpOworfQogCi0jZGVmaW5lIEVORF9TRUxFQ1RfTE9PUChzKSBcCi0gICAgICAgICAgICBpZiAoIWhhc190aW1lb3V0IHx8IFwKLSAgICAgICAgICAgICAgICAoIUNIRUNLX0VSUk5PKEVXT1VMREJMT0NLKSAmJiAhQ0hFQ0tfRVJSTk8oRUFHQUlOKSkpIFwKLSAgICAgICAgICAgICAgICBicmVhazsgXAotICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJm5vdyk7IFwKLSAgICAgICAgICAgIGludGVydmFsID0gX1B5VGltZV9JTlRFUlZBTChub3csIGRlYWRsaW5lKTsgXAotICAgICAgICB9IFwKLSAgICB9IFwKIAogLyogSW5pdGlhbGl6ZSBhIG5ldyBzb2NrZXQgb2JqZWN0LiAqLwogCi1zdGF0aWMgZG91YmxlIGRlZmF1bHR0aW1lb3V0ID0gLTEuMDsgLyogRGVmYXVsdCB0aW1lb3V0IGZvciBuZXcgc29ja2V0cyAqLworLyogRGVmYXVsdCB0aW1lb3V0IGZvciBuZXcgc29ja2V0cyAqLworc3RhdGljIF9QeVRpbWVfdCBkZWZhdWx0dGltZW91dCA9IF9QWVRJTUVfRlJPTVNFQ09ORFMoLTEpOwogCiBzdGF0aWMgdm9pZAogaW5pdF9zb2Nrb2JqZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywKQEAgLTcxMywxMiArODU5LDEyIEBACiAgICAgcy0+ZXJyb3JoYW5kbGVyID0gJnNldF9lcnJvcjsKICNpZmRlZiBTT0NLX05PTkJMT0NLCiAgICAgaWYgKHR5cGUgJiBTT0NLX05PTkJMT0NLKQotICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSAwLjA7CisgICAgICAgIHMtPnNvY2tfdGltZW91dCA9IDA7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewogICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSBkZWZhdWx0dGltZW91dDsKLSAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDAuMCkKKyAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApCiAgICAgICAgICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKTsKICAgICB9CiAKQEAgLTEyMTQsNiArMTM2MCw3MSBAQAogICAgIH0KIH0KIAorLyogSGVscGVyIGZvciBnZXRzb2NrYWRkcmFyZzogYnlwYXNzIElETkEgZm9yIEFTQ0lJLW9ubHkgaG9zdCBuYW1lcworICAgKGluIHBhcnRpY3VsYXIsIG51bWVyaWMgSVAgYWRkcmVzc2VzKS4gKi8KK3N0cnVjdCBtYXliZV9pZG5hIHsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNoYXIgKmJ1ZjsKK307CisKK3N0YXRpYyB2b2lkCitpZG5hX2NsZWFudXAoc3RydWN0IG1heWJlX2lkbmEgKmRhdGEpCit7CisgICAgUHlfQ0xFQVIoZGF0YS0+b2JqKTsKK30KKworc3RhdGljIGludAoraWRuYV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgc3RydWN0IG1heWJlX2lkbmEgKmRhdGEpCit7CisgICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqb2JqMiwgKm9iajM7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlkbmFfY2xlYW51cChkYXRhKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGRhdGEtPm9iaiA9IE5VTEw7CisgICAgbGVuID0gLTE7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sob2JqKSkgeworICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FzU3RyaW5nKG9iaik7CisgICAgICAgIGxlbiA9IFB5Qnl0ZXNfU2l6ZShvYmopOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CisgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKG9iaik7CisgICAgICAgIGxlbiA9IFB5Qnl0ZUFycmF5X1NpemUob2JqKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikgJiYgUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7CisgICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvYmoyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKKyAgICAgICAgaWYgKCFvYmoyKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyaW5nIG9yIHVuaWNvZGUgdGV4dCBidWZmZXIgZXhwZWN0ZWQsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG9iajMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iajIsICJpZG5hIiwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihvYmoyKTsKKyAgICAgICAgaWYgKCFvYmozKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob2JqMykpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmozKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBkYXRhLT5vYmogPSBvYmozOworICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmozKTsKKyAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmozKTsKKyAgICB9CisgICAgaWYgKHN0cmxlbihkYXRhLT5idWYpICE9IGxlbikgeworICAgICAgICBQeV9DTEVBUihkYXRhLT5vYmopOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaG9zdCBuYW1lIG11c3Qgbm90IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKK30KIAogLyogUGFyc2UgYSBzb2NrZXQgYWRkcmVzcyBhcmd1bWVudCBhY2NvcmRpbmcgdG8gdGhlIHNvY2tldCBvYmplY3QncwogICAgYWRkcmVzcyBmYW1pbHkuICBSZXR1cm4gMSBpZiB0aGUgYWRkcmVzcyB3YXMgaW4gdGhlIHByb3BlciBmb3JtYXQsCkBAIC0xMjMwLDggKzE0NDEsNyBAQAogICAgIGNhc2UgQUZfVU5JWDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl91biogYWRkcjsKLSAgICAgICAgY2hhciAqcGF0aDsKLSAgICAgICAgaW50IGxlbjsKKyAgICAgICAgUHlfYnVmZmVyIHBhdGg7CiAgICAgICAgIGludCByZXR2YWwgPSAwOwogCiAgICAgICAgIC8qIFBFUCAzODMuICBOb3QgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyIHNpbmNlIHdlIG5lZWQgdG8KQEAgLTEyNDIsMTQgKzE0NTIsMTcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInkjIiwgJnBhdGgsICZsZW4pKQotICAgICAgICAgICAgZ290byB1bml4X291dDsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAieSoiLCAmcGF0aCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHBhdGgubGVuID49IDApOwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKICNpZmRlZiBsaW51eAotICAgICAgICBpZiAobGVuID4gMCAmJiBwYXRoWzBdID09IDApIHsKKyAgICAgICAgaWYgKHBhdGgubGVuID4gMCAmJiAqKGNvbnN0IGNoYXIgKilwYXRoLmJ1ZiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgZXh0ZW5zaW9uICovCi0gICAgICAgICAgICBpZiAobGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CisgICAgICAgICAgICBpZiAoKHNpemVfdClwYXRoLmxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKQEAgLTEyNTksMTggKzE0NzIsMTkgQEAKICNlbmRpZiAvKiBsaW51eCAqLwogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLSAgICAgICAgICAgIGlmIChsZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CisgICAgICAgICAgICBpZiAoKHNpemVfdClwYXRoLmxlbiA+PSBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtsZW5dID0gMDsKKyAgICAgICAgICAgIGFkZHItPnN1bl9wYXRoW3BhdGgubGVuXSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYWRkci0+c3VuX2ZhbWlseSA9IHMtPnNvY2tfZmFtaWx5OwotICAgICAgICBtZW1jcHkoYWRkci0+c3VuX3BhdGgsIHBhdGgsIGxlbik7Ci0gICAgICAgICpsZW5fcmV0ID0gbGVuICsgb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CisgICAgICAgIG1lbWNweShhZGRyLT5zdW5fcGF0aCwgcGF0aC5idWYsIHBhdGgubGVuKTsKKyAgICAgICAgKmxlbl9yZXQgPSBwYXRoLmxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogICAgICAgICByZXR2YWwgPSAxOwogICAgIHVuaXhfb3V0OgorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXRoKTsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICByZXR1cm4gcmV0dmFsOwogICAgIH0KQEAgLTEzMDgsNyArMTUyMiw3IEBACiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyOwotICAgICAgICBjaGFyICpob3N0OworICAgICAgICBzdHJ1Y3QgbWF5YmVfaWRuYSBob3N0ID0ge05VTEwsIE5VTEx9OwogICAgICAgICBpbnQgcG9ydCwgcmVzdWx0OwogICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTEzMTgsMTMgKzE1MzIsMTMgQEAKICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZ3MpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZXRpOmdldHNvY2thZGRyYXJnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZG5hIiwgJmhvc3QsICZwb3J0KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6Z2V0c29ja2FkZHJhcmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRuYV9jb252ZXJ0ZXIsICZob3N0LCAmcG9ydCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYWRkcj0oc3RydWN0IHNvY2thZGRyX2luKilhZGRyX3JldDsKLSAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAorICAgICAgICByZXN1bHQgPSBzZXRpcGFkZHIoaG9zdC5idWYsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCphZGRyKSwgIEFGX0lORVQpOwotICAgICAgICBQeU1lbV9GcmVlKGhvc3QpOworICAgICAgICBpZG5hX2NsZWFudXAoJmhvc3QpOwogICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4ZmZmZikgewpAQCAtMTM0Myw3ICsxNTU3LDcgQEAKICAgICBjYXNlIEFGX0lORVQ2OgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiogYWRkcjsKLSAgICAgICAgY2hhciAqaG9zdDsKKyAgICAgICAgc3RydWN0IG1heWJlX2lkbmEgaG9zdCA9IHtOVUxMLCBOVUxMfTsKICAgICAgICAgaW50IHBvcnQsIHJlc3VsdDsKICAgICAgICAgdW5zaWduZWQgaW50IGZsb3dpbmZvLCBzY29wZV9pZDsKICAgICAgICAgZmxvd2luZm8gPSBzY29wZV9pZCA9IDA7CkBAIC0xMzU1LDE1ICsxNTY5LDE1IEBACiAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmdzKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0aXxJSSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWRuYSIsICZob3N0LCAmcG9ydCwgJmZsb3dpbmZvLAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxJSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZG5hX2NvbnZlcnRlciwgJmhvc3QsICZwb3J0LCAmZmxvd2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2NvcGVfaWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWFkZHJfcmV0OwotICAgICAgICByZXN1bHQgPSBzZXRpcGFkZHIoaG9zdCwgKHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsCisgICAgICAgIHJlc3VsdCA9IHNldGlwYWRkcihob3N0LmJ1ZiwgKHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmFkZHIpLCBBRl9JTkVUNik7Ci0gICAgICAgIFB5TWVtX0ZyZWUoaG9zdCk7CisgICAgICAgIGlkbmFfY2xlYW51cCgmaG9zdCk7CiAgICAgICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhmZmZmKSB7CkBAIC0xNDkyLDggKzE3MDYsNyBAQAogICAgICAgICBpbnQgcHJvdG9OdW1iZXI7CiAgICAgICAgIGludCBoYXR5cGUgPSAwOwogICAgICAgICBpbnQgcGt0dHlwZSA9IDA7Ci0gICAgICAgIGNoYXIgKmhhZGRyID0gTlVMTDsKLSAgICAgICAgdW5zaWduZWQgaW50IGhhbGVuID0gMDsKKyAgICAgICAgUHlfYnVmZmVyIGhhZGRyID0ge05VTEwsIE5VTEx9OwogCiAgICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTUwMywyNSArMTcxNiwyOCBAQAogICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJncyktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaXxpaXkjIiwgJmludGVyZmFjZU5hbWUsCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2l8aWl5KiIsICZpbnRlcmZhY2VOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb3RvTnVtYmVyLCAmcGt0dHlwZSwgJmhhdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYWRkciwgJmhhbGVuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYWRkcikpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgc3RybmNweShpZnIuaWZyX25hbWUsIGludGVyZmFjZU5hbWUsIHNpemVvZihpZnIuaWZyX25hbWUpKTsKICAgICAgICAgaWZyLmlmcl9uYW1lWyhzaXplb2YoaWZyLmlmcl9uYW1lKSktMV0gPSAnXDAnOwogICAgICAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgU0lPQ0dJRklOREVYLCAmaWZyKSA8IDApIHsKICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGhhbGVuID4gOCkgewotICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSGFyZHdhcmUgYWRkcmVzcyBtdXN0IGJlIDggYnl0ZXMgb3IgbGVzcyIpOwotICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaGFkZHIuYnVmICYmIGhhZGRyLmxlbiA+IDgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIYXJkd2FyZSBhZGRyZXNzIG11c3QgYmUgOCBieXRlcyBvciBsZXNzIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZoYWRkcik7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG9OdW1iZXIgPCAwIHx8IHByb3RvTnVtYmVyID4gMHhmZmZmKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAiZ2V0c29ja2FkZHJhcmc6IHByb3RvTnVtYmVyIG11c3QgYmUgMC02NTUzNS4iKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmhhZGRyKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2xsKilhZGRyX3JldDsKQEAgLTE1MzAsMTEgKzE3NDYsMTQgQEAKICAgICAgICAgYWRkci0+c2xsX2lmaW5kZXggPSBpZnIuaWZyX2lmaW5kZXg7CiAgICAgICAgIGFkZHItPnNsbF9wa3R0eXBlID0gcGt0dHlwZTsKICAgICAgICAgYWRkci0+c2xsX2hhdHlwZSA9IGhhdHlwZTsKLSAgICAgICAgaWYgKGhhbGVuICE9IDApIHsKLSAgICAgICAgICBtZW1jcHkoJmFkZHItPnNsbF9hZGRyLCBoYWRkciwgaGFsZW4pOworICAgICAgICBpZiAoaGFkZHIuYnVmKSB7CisgICAgICAgICAgICBtZW1jcHkoJmFkZHItPnNsbF9hZGRyLCBoYWRkci5idWYsIGhhZGRyLmxlbik7CisgICAgICAgICAgICBhZGRyLT5zbGxfaGFsZW4gPSBoYWRkci5sZW47CiAgICAgICAgIH0KLSAgICAgICAgYWRkci0+c2xsX2hhbGVuID0gaGFsZW47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZHItPnNsbF9oYWxlbiA9IDA7CiAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mICphZGRyOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZoYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICNlbmRpZgpAQCAtMTYxMSw3ICsxODMwLDcgQEAKIAogICAgICAgICAgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKHNpemVfdClsZW4gPCBzaXplb2YoaWZyLmlmcl9uYW1lKSkgewogICAgICAgICAgICAgICAgIHN0cm5jcHkoaWZyLmlmcl9uYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhpbnRlcmZhY2VOYW1lKSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOwogICAgICAgICAgICAgICAgIGlmci5pZnJfbmFtZVsoc2l6ZW9mKGlmci5pZnJfbmFtZSkpLTFdID0gJ1wwJzsKICAgICAgICAgICAgICAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgU0lPQ0dJRklOREVYLCAmaWZyKSA8IDApIHsKQEAgLTE2NjEsNyArMTg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGN0bF9uYW1lKSA+IHNpemVvZihpbmZvLmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGN0bF9uYW1lKSA+IChQeV9zc2l6ZV90KXNpemVvZihpbmZvLmN0bF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKQEAgLTE4OTYsOCArMjExNSwxNSBAQAogICAgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAgICAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLWNvbXBhcmUiCiAgICAgI2VuZGlmCisgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyAgICAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyAgICAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdHlwZS1saW1pdHMiCisgICAgI2VuZGlmCiAgICAgaWYgKG1zZy0+bXNnX2NvbnRyb2xsZW4gPCAwKQogICAgICAgICByZXR1cm4gMDsKKyAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8ICgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID4gNSkpKQorICAgICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgI2VuZGlmCiAgICAgI2lmZGVmIF9fY2xhbmdfXwogICAgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICAjZW5kaWYKQEAgLTE5NTUsMjIgKzIxODEsNTEgQEAKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCiAKK3N0cnVjdCBzb2NrX2FjY2VwdCB7CisgICAgc29ja2xlbl90ICphZGRybGVuOworICAgIHNvY2tfYWRkcl90ICphZGRyYnVmOworICAgIFNPQ0tFVF9UIHJlc3VsdDsKK307CisKKyNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCisvKiBhY2NlcHQ0KCkgaXMgYXZhaWxhYmxlIG9uIExpbnV4IDIuNi4yOCsgYW5kIGdsaWJjIDIuMTAgKi8KK3N0YXRpYyBpbnQgYWNjZXB0NF93b3JrcyA9IC0xOworI2VuZGlmCisKK3N0YXRpYyBpbnQKK3NvY2tfYWNjZXB0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX2FjY2VwdCAqY3R4ID0gZGF0YTsKKworI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKKyAgICBpZiAoYWNjZXB0NF93b3JrcyAhPSAwKSB7CisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09DS19DTE9FWEVDKTsKKyAgICAgICAgaWYgKGN0eC0+cmVzdWx0ID09IElOVkFMSURfU09DS0VUICYmIGFjY2VwdDRfd29ya3MgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIE9uIExpbnV4IG9sZGVyIHRoYW4gMi42LjI4LCBhY2NlcHQ0KCkgZmFpbHMgd2l0aCBFTk9TWVMgKi8KKyAgICAgICAgICAgIGFjY2VwdDRfd29ya3MgPSAoZXJybm8gIT0gRU5PU1lTKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYWNjZXB0NF93b3JrcyA9PSAwKQorICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKiBzLl9hY2NlcHQoKSAtPiAoZmQsIGFkZHJlc3MpICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX2FjY2VwdChQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKLSAgICBTT0NLRVRfVCBuZXdmZCA9IElOVkFMSURfU09DS0VUOworICAgIFNPQ0tFVF9UIG5ld2ZkOwogICAgIHNvY2tsZW5fdCBhZGRybGVuOwogICAgIFB5T2JqZWN0ICpzb2NrID0gTlVMTDsKICAgICBQeU9iamVjdCAqYWRkciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgaW50IHRpbWVvdXQ7Ci0jaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQotICAgIC8qIGFjY2VwdDQoKSBpcyBhdmFpbGFibGUgb24gTGludXggMi42LjI4KyBhbmQgZ2xpYmMgMi4xMCAqLwotICAgIHN0YXRpYyBpbnQgYWNjZXB0NF93b3JrcyA9IC0xOwotI2VuZGlmCisgICAgc3RydWN0IHNvY2tfYWNjZXB0IGN0eDsKIAogICAgIGlmICghZ2V0c29ja2FkZHJsZW4ocywgJmFkZHJsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5NzksMzYgKzIyMzQsMTEgQEAKICAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpCiAgICAgICAgIHJldHVybiBzZWxlY3RfZXJyb3IoKTsKIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQotICAgICAgICBpZiAoYWNjZXB0NF93b3JrcyAhPSAwKSB7Ci0gICAgICAgICAgICBuZXdmZCA9IGFjY2VwdDQocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU09DS19DTE9FWEVDKTsKLSAgICAgICAgICAgIGlmIChuZXdmZCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgLyogT24gTGludXggb2xkZXIgdGhhbiAyLjYuMjgsIGFjY2VwdDQoKSBmYWlscyB3aXRoIEVOT1NZUyAqLwotICAgICAgICAgICAgICAgIGFjY2VwdDRfd29ya3MgPSAoZXJybm8gIT0gRU5PU1lTKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoYWNjZXB0NF93b3JrcyA9PSAwKQotICAgICAgICAgICAgbmV3ZmQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwotI2Vsc2UKLSAgICAgICAgbmV3ZmQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgIGN0eC5hZGRybGVuID0gJmFkZHJsZW47CisgICAgY3R4LmFkZHJidWYgPSAmYWRkcmJ1ZjsKKyAgICBpZiAoc29ja19jYWxsKHMsIDAsIHNvY2tfYWNjZXB0X2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotCi0gICAgaWYgKG5ld2ZkID09IElOVkFMSURfU09DS0VUKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgbmV3ZmQgPSBjdHgucmVzdWx0OwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmICghU2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSluZXdmZCwgSEFORExFX0ZMQUdfSU5IRVJJVCwgMCkpIHsKQEAgLTIwNjksNyArMjI5OSw3IEBACiAgICAgaWYgKGJsb2NrID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcy0+c29ja190aW1lb3V0ID0gYmxvY2sgPyAtMS4wIDogMC4wOworICAgIHMtPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoYmxvY2sgPyAtMSA6IDApOwogICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTIwODMsNiArMjMxMyw0NyBAQAogc2V0YmxvY2tpbmcoVHJ1ZSkgaXMgZXF1aXZhbGVudCB0byBzZXR0aW1lb3V0KE5vbmUpO1xuXAogc2V0YmxvY2tpbmcoRmFsc2UpIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGltZW91dCgwLjApLiIpOwogCitzdGF0aWMgaW50Citzb2NrZXRfcGFyc2VfdGltZW91dChfUHlUaW1lX3QgKnRpbWVvdXQsIFB5T2JqZWN0ICp0aW1lb3V0X29iaikKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisjZW5kaWYKKyNpZm5kZWYgSEFWRV9QT0xMCisgICAgX1B5VGltZV90IG1zOworI2VuZGlmCisgICAgaW50IG92ZXJmbG93ID0gMDsKKworICAgIGlmICh0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgICp0aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcygtMSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9vYmosIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoKnRpbWVvdXQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiVGltZW91dCB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBvdmVyZmxvdyB8PSAoX1B5VGltZV9Bc1RpbWV2YWwoKnRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApOworI2VuZGlmCisjaWZuZGVmIEhBVkVfUE9MTAorICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcygqdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICBvdmVyZmxvdyB8PSAobXMgPiBJTlRfTUFYKTsKKyNlbmRpZgorICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGRvZXNuJ3QgZml0IGludG8gQyB0aW1ldmFsIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogLyogcy5zZXR0aW1lb3V0KHRpbWVvdXQpIG1ldGhvZC4gIEFyZ3VtZW50OgogICAgTm9uZSAtLSBubyB0aW1lb3V0LCBibG9ja2luZyBtb2RlOyBzYW1lIGFzIHNldGJsb2NraW5nKFRydWUpCiAgICAwLjAgIC0tIG5vbi1ibG9ja2luZyBtb2RlOyBzYW1lIGFzIHNldGJsb2NraW5nKEZhbHNlKQpAQCAtMjA5MiwyMiArMjM2MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2V0dGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgZG91YmxlIHRpbWVvdXQ7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpCi0gICAgICAgIHRpbWVvdXQgPSAtMS4wOwotICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShhcmcpOwotICAgICAgICBpZiAodGltZW91dCA8IDAuMCkgewotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChzb2NrZXRfcGFyc2VfdGltZW91dCgmdGltZW91dCwgYXJnKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gdGltZW91dDsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMC4wKTsKKyAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0yMTI2LDEyICsyMzg4LDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19nZXR0aW1lb3V0KFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKLSAgICBpZiAocy0+c29ja190aW1lb3V0IDwgMC4wKSB7CisgICAgaWYgKHMtPnNvY2tfdGltZW91dCA8IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHMtPnNvY2tfdGltZW91dCk7CisgICAgZWxzZSB7CisgICAgICAgIGRvdWJsZSBzZWNvbmRzID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUocy0+c29ja190aW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNvbmRzKTsKKyAgICB9CiB9CiAKIFB5RG9jX1NUUlZBUihnZXR0aW1lb3V0X2RvYywKQEAgLTIxNTIsMjIgKzI0MTYsMjIgQEAKICAgICBpbnQgbGV2ZWw7CiAgICAgaW50IG9wdG5hbWU7CiAgICAgaW50IHJlczsKLSAgICBjaGFyICpidWY7Ci0gICAgaW50IGJ1ZmxlbjsKKyAgICBQeV9idWZmZXIgb3B0dmFsOwogICAgIGludCBmbGFnOwogCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaTpzZXRzb2Nrb3B0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmZmxhZykpIHsKLSAgICAgICAgYnVmID0gKGNoYXIgKikgJmZsYWc7Ci0gICAgICAgIGJ1ZmxlbiA9IHNpemVvZiBmbGFnOworICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikmZmxhZywgc2l6ZW9mIGZsYWcpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkjOnNldHNvY2tvcHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJmJ1ZiwgJmJ1ZmxlbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZvcHR2YWwpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOwogICAgIH0KLSAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCAodm9pZCAqKWJ1ZiwgYnVmbGVuKTsKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTIyNzEsNiArMjUzNSwxMCBAQAogewogICAgIFNPQ0tFVF9UIGZkOwogCisgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KKyAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqLwogICAgIGlmICgoZmQgPSBzLT5zb2NrX2ZkKSAhPSAtMSkgewogICAgICAgICBzLT5zb2NrX2ZkID0gLTE7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTIzMDIsOTIgKzI1NzAsOTAgQEAKIGNhbiBiZSByZXVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLiAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyByZXR1cm5lZC4iKTsKIAogc3RhdGljIGludAotaW50ZXJuYWxfY29ubmVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4sCi0gICAgICAgICAgICAgICAgIGludCAqdGltZW91dHApCitzb2NrX2Nvbm5lY3RfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQqIFB5X1VOVVNFRChkYXRhKSkKIHsKLSAgICBpbnQgcmVzLCB0aW1lb3V0OworICAgIGludCBlcnI7CisgICAgc29ja2xlbl90IHNpemUgPSBzaXplb2YgZXJyOwogCi0gICAgdGltZW91dCA9IDA7CisgICAgaWYgKGdldHNvY2tvcHQocy0+c29ja19mZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsICh2b2lkICopJmVyciwgJnNpemUpKSB7CisgICAgICAgIC8qIGdldHNvY2tvcHQoKSBmYWlsZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGVyciA9PSBFSVNDT05OKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgLyogc29ja19jYWxsX2V4KCkgdXNlcyBHRVRfU09DS19FUlJPUigpIHRvIGdldCB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBTRVRfU09DS19FUlJPUihlcnIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2ludGVybmFsX2Nvbm5lY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRybGVuLAorICAgICAgICAgICAgICAgICBpbnQgcmFpc2UpCit7CisgICAgaW50IHJlcywgZXJyLCB3YWl0X2Nvbm5lY3Q7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gY29ubmVjdChzLT5zb2NrX2ZkLCBhZGRyLCBhZGRybGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0jaWZkZWYgTVNfV0lORE9XUwotCi0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDAuMCkgewotICAgICAgICBpZiAocmVzIDwgMCAmJiBXU0FHZXRMYXN0RXJyb3IoKSA9PSBXU0FFV09VTERCTE9DSyAmJgotICAgICAgICAgICAgSVNfU0VMRUNUQUJMRShzKSkgewotICAgICAgICAgICAgLyogVGhpcyBpcyBhIG1lc3MuICBCZXN0IHNvbHV0aW9uOiB0cnVzdCBzZWxlY3QgKi8KLSAgICAgICAgICAgIGZkX3NldCBmZHM7Ci0gICAgICAgICAgICBmZF9zZXQgZmRzX2V4YzsKLSAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgICAgICAgICAgdHYudHZfc2VjID0gKGludClzLT5zb2NrX3RpbWVvdXQ7Ci0gICAgICAgICAgICB0di50dl91c2VjID0gKGludCkoKHMtPnNvY2tfdGltZW91dCAtIHR2LnR2X3NlYykgKiAxZTYpOwotICAgICAgICAgICAgRkRfWkVSTygmZmRzKTsKLSAgICAgICAgICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZmRzKTsKLSAgICAgICAgICAgIEZEX1pFUk8oJmZkc19leGMpOwotICAgICAgICAgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHNfZXhjKTsKLSAgICAgICAgICAgIHJlcyA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgJmZkc19leGMsICZ0dik7Ci0gICAgICAgICAgICBpZiAocmVzID09IDApIHsKLSAgICAgICAgICAgICAgICByZXMgPSBXU0FFV09VTERCTE9DSzsKLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID4gMCkgewotICAgICAgICAgICAgICAgIGlmIChGRF9JU1NFVChzLT5zb2NrX2ZkLCAmZmRzKSkKLSAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNvY2tldCBpcyBpbiB0aGUgd3JpdGFibGUgc2V0IC0gdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtZWFucyBjb25uZWN0ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQXMgcGVyIE1TIGRvY3MsIHdlIG5lZWQgdG8gY2FsbCBnZXRzb2Nrb3B0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIGVycm9yICovCi0gICAgICAgICAgICAgICAgICAgIGludCByZXNfc2l6ZSA9IHNpemVvZiByZXM7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEl0IG11c3QgYmUgaW4gdGhlIGV4Y2VwdGlvbiBzZXQgKi8KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KEZEX0lTU0VUKHMtPnNvY2tfZmQsICZmZHNfZXhjKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgwID09IGdldHNvY2tvcHQocy0+c29ja19mZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikmcmVzLCAmcmVzX3NpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgLyogZ2V0c29ja29wdCBhbHNvIGNsZWFycyBXU0FHZXRMYXN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzbyByZXNldCBpdCBiYWNrLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgV1NBU2V0TGFzdEVycm9yKHJlcyk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IFdTQUdldExhc3RFcnJvcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGVsc2UgaWYgKHJlcyA8IDApIGFuIGVycm9yIG9jY3VycmVkICovCi0gICAgICAgIH0KKyAgICBpZiAoIXJlcykgeworICAgICAgICAvKiBjb25uZWN0KCkgc3VjY2VlZGVkLCB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZCAqLworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmVzID0gV1NBR2V0TGFzdEVycm9yKCk7CisgICAgLyogY29ubmVjdCgpIGZhaWxlZCAqLwogCi0jZWxzZQorICAgIC8qIHNhdmUgZXJyb3IsIFB5RXJyX0NoZWNrU2lnbmFscygpIGNhbiByZXBsYWNlIGl0ICovCisgICAgZXJyID0gR0VUX1NPQ0tfRVJST1I7CisgICAgaWYgKENIRUNLX0VSUk5PKEVJTlRSKSkgeworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAocy0+c29ja190aW1lb3V0ID4gMC4wKSB7Ci0gICAgICAgIGlmIChyZXMgPCAwICYmIGVycm5vID09IEVJTlBST0dSRVNTICYmIElTX1NFTEVDVEFCTEUocykpIHsKLSAgICAgICAgICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3QocywgMSk7Ci0gICAgICAgICAgICBpZiAodGltZW91dCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLyogQnVnICMxMDE5ODA4OiBpbiBjYXNlIG9mIGFuIEVJTlBST0dSRVNTLAotICAgICAgICAgICAgICAgICAgIHVzZSBnZXRzb2Nrb3B0KFNPX0VSUk9SKSB0byBnZXQgdGhlIHJlYWwKLSAgICAgICAgICAgICAgICAgICBlcnJvci4gKi8KLSAgICAgICAgICAgICAgICBzb2NrbGVuX3QgcmVzX3NpemUgPSBzaXplb2YgcmVzOwotICAgICAgICAgICAgICAgICh2b2lkKWdldHNvY2tvcHQocy0+c29ja19mZCwgU09MX1NPQ0tFVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPX0VSUk9SLCAmcmVzLCAmcmVzX3NpemUpOwotICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gRUlTQ09OTikKLSAgICAgICAgICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgICAgICBlcnJubyA9IHJlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVvdXQgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXMgPSBlcnJubzsgICAgICAgICAgICAvKiBoYWQgZXJyb3IgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXMgPSBFV09VTERCTE9DSzsgICAgICAgICAgICAgICAgICAgICAgLyogdGltZWQgb3V0ICovCi0gICAgICAgIH0KKyAgICAgICAgLyogSXNzdWUgIzIzNjE4OiB3aGVuIGNvbm5lY3QoKSBmYWlscyB3aXRoIEVJTlRSLCB0aGUgY29ubmVjdGlvbiBpcworICAgICAgICAgICBydW5uaW5nIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAgICAgIElmIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzIGEgdGltZW91dCwgd2FpdCB1bnRpbCB0aGUKKyAgICAgICAgICAgY29ubmVjdGlvbiBjb21wbGV0ZXMsIGZhaWxzIG9yIHRpbWVkIG91dCB1c2luZyBzZWxlY3QoKSwgYW5kIHRoZW4KKyAgICAgICAgICAgZ2V0IHRoZSBjb25uZWN0aW9uIHN0YXR1cyB1c2luZyBnZXRzb2Nrb3B0KFNPX0VSUk9SKS4KKworICAgICAgICAgICBJZiB0aGUgc29ja2V0IGlzIG5vbi1ibG9ja2luZywgcmFpc2UgSW50ZXJydXB0ZWRFcnJvci4gVGhlIGNhbGxlciBpcworICAgICAgICAgICByZXNwb25zaWJsZSB0byB3YWl0IHVudGlsIHRoZSBjb25uZWN0aW9uIGNvbXBsZXRlcywgZmFpbHMgb3IgdGltZWQKKyAgICAgICAgICAgb3V0IChpdCdzIHRoZSBjYXNlIGluIGFzeW5jaW8gZm9yIGV4YW1wbGUpLiAqLworICAgICAgICB3YWl0X2Nvbm5lY3QgPSAocy0+c29ja190aW1lb3V0ICE9IDAgJiYgSVNfU0VMRUNUQUJMRShzKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3YWl0X2Nvbm5lY3QgPSAocy0+c29ja190aW1lb3V0ID4gMCAmJiBlcnIgPT0gU09DS19JTlBST0dSRVNTX0VSUgorICAgICAgICAgICAgICAgICAgICAgICAgJiYgSVNfU0VMRUNUQUJMRShzKSk7CiAgICAgfQogCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJlcyA9IGVycm5vOworICAgIGlmICghd2FpdF9jb25uZWN0KSB7CisgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgLyogcmVzdG9yZSBlcnJvciwgbWF5YmUgcmVwbGFjZWQgYnkgUHlFcnJfQ2hlY2tTaWduYWxzKCkgKi8KKyAgICAgICAgICAgIFNFVF9TT0NLX0VSUk9SKGVycik7CisgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZXJyOworICAgIH0KIAotI2VuZGlmCi0gICAgKnRpbWVvdXRwID0gdGltZW91dDsKLQotICAgIHJldHVybiByZXM7CisgICAgaWYgKHJhaXNlKSB7CisgICAgICAgIC8qIHNvY2tldC5jb25uZWN0KCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciAqLworICAgICAgICBpZiAoc29ja19jYWxsX2V4KHMsIDEsIHNvY2tfY29ubmVjdF9pbXBsLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEsIE5VTEwsIHMtPnNvY2tfdGltZW91dCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogc29ja2V0LmNvbm5lY3RfZXgoKSByZXR1cm5zIHRoZSBlcnJvciBjb2RlIG9uIGVycm9yICovCisgICAgICAgIGlmIChzb2NrX2NhbGxfZXgocywgMSwgc29ja19jb25uZWN0X2ltcGwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmVyciwgcy0+c29ja190aW1lb3V0KSA8IDApCisgICAgICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogLyogcy5jb25uZWN0KHNvY2thZGRyKSBtZXRob2QgKi8KQEAgLTIzOTgsMjMgKzI2NjQsMTUgQEAKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwogICAgIGludCBhZGRybGVuOwogICAgIGludCByZXM7Ci0gICAgaW50IHRpbWVvdXQ7CiAKICAgICBpZiAoIWdldHNvY2thZGRyYXJnKHMsIGFkZHJvLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGludGVybmFsX2Nvbm5lY3QocywgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwgJnRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgIHJlcyA9IGludGVybmFsX2Nvbm5lY3QocywgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwgMSk7CisgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGNvbm5lY3RfZG9jLApAQCAtMjQzMiwyMSArMjY5MCwxMyBAQAogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CiAgICAgaW50IGFkZHJsZW47CiAgICAgaW50IHJlczsKLSAgICBpbnQgdGltZW91dDsKIAogICAgIGlmICghZ2V0c29ja2FkZHJhcmcocywgYWRkcm8sIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gaW50ZXJuYWxfY29ubmVjdChzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLCAmdGltZW91dCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIC8qIFNpZ25hbHMgYXJlIG5vdCBlcnJvcnMgKHRob3VnaCB0aGV5IG1heSByYWlzZSBleGNlcHRpb25zKS4gIEFkYXB0ZWQKLSAgICAgICBmcm9tIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdCgpLiAqLwotI2lmZGVmIEVJTlRSCi0gICAgaWYgKHJlcyA9PSBFSU5UUiAmJiBQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sIDApOworICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgcmVzKTsKIH0KQEAgLTI1MzQsMTQgKzI3ODQsMTYgQEAKIC8qIHMubGlzdGVuKG4pIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc29ja19saXN0ZW4oUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQorc29ja19saXN0ZW4oUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgYmFja2xvZzsKKyAgICAvKiBXZSB0cnkgdG8gY2hvb3NlIGEgZGVmYXVsdCBiYWNrbG9nIGhpZ2ggZW5vdWdoIHRvIGF2b2lkIGNvbm5lY3Rpb24gZHJvcHMKKyAgICAgKiBmb3IgY29tbW9uIHdvcmtsb2FkcywgeWV0IG5vdCB0b28gaGlnaCB0byBsaW1pdCByZXNvdXJjZSB1c2FnZS4gKi8KKyAgICBpbnQgYmFja2xvZyA9IFB5X01JTihTT01BWENPTk4sIDEyOCk7CiAgICAgaW50IHJlczsKIAotICAgIGJhY2tsb2cgPSBfUHlMb25nX0FzSW50KGFyZyk7Ci0gICAgaWYgKGJhY2tsb2cgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmxpc3RlbiIsICZiYWNrbG9nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyogVG8gYXZvaWQgcHJvYmxlbXMgb24gc3lzdGVtcyB0aGF0IGRvbid0IGFsbG93IGEgbmVnYXRpdmUgYmFja2xvZwogICAgICAqICh3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYW55d2F5KSB3ZSBmb3JjZSBhIG1pbmltdW0gdmFsdWUgb2YgMC4gKi8KQEAgLTI1NTYsMTIgKzI4MDgsMzQgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGxpc3Rlbl9kb2MsCi0ibGlzdGVuKGJhY2tsb2cpXG5cCisibGlzdGVuKFtiYWNrbG9nXSlcblwKIFxuXAotRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIFRoZSBiYWNrbG9nIGFyZ3VtZW50IG11c3QgYmUgYXRcblwKLWxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mXG5cCitFbmFibGUgYSBzZXJ2ZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zLiAgSWYgYmFja2xvZyBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmVcblwKK2F0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mXG5cCiB1bmFjY2VwdGVkIGNvbm5lY3Rpb25zIHRoYXQgdGhlIHN5c3RlbSB3aWxsIGFsbG93IGJlZm9yZSByZWZ1c2luZyBuZXdcblwKLWNvbm5lY3Rpb25zLiIpOworY29ubmVjdGlvbnMuIElmIG5vdCBzcGVjaWZpZWQsIGEgZGVmYXVsdCByZWFzb25hYmxlIHZhbHVlIGlzIGNob3Nlbi4iKTsKKworc3RydWN0IHNvY2tfcmVjdiB7CisgICAgY2hhciAqY2J1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgZmxhZ3M7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3JlY3ZfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfcmVjdiAqY3R4ID0gZGF0YTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSByZWN2KHMtPnNvY2tfZmQsIGN0eC0+Y2J1ZiwgKGludCljdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gcmVjdihzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzKTsKKyNlbmRpZgorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CiAKIAogLyoKQEAgLTI1NzYsOCArMjg1MCw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc29ja19yZWN2X2d1dHMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBjaGFyKiBjYnVmLCBQeV9zc2l6ZV90IGxlbiwgaW50IGZsYWdzKQogewotICAgIFB5X3NzaXplX3Qgb3V0bGVuID0gLTE7Ci0gICAgaW50IHRpbWVvdXQ7CisgICAgc3RydWN0IHNvY2tfcmVjdiBjdHg7CiAKICAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpIHsKICAgICAgICAgc2VsZWN0X2Vycm9yKCk7CkBAIC0yNTg4LDMyICsyODYxLDEzIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBvdXRsZW4gPSByZWN2KHMtPnNvY2tfZmQsIGNidWYsIChpbnQpbGVuLCBmbGFncyk7Ci0jZWxzZQotICAgICAgICBvdXRsZW4gPSByZWN2KHMtPnNvY2tfZmQsIGNidWYsIGxlbiwgZmxhZ3MpOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgY3R4LmNidWYgPSBjYnVmOworICAgIGN0eC5sZW4gPSBsZW47CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzLCAwLCBzb2NrX3JlY3ZfaW1wbCwgJmN0eCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotICAgIGlmIChvdXRsZW4gPCAwKSB7Ci0gICAgICAgIC8qIE5vdGU6IHRoZSBjYWxsIHRvIGVycm9yaGFuZGxlcigpIEFMV0FZUyBpbmRpcmVjdGx5IHJldHVybmVkCi0gICAgICAgICAgIE5VTEwsIHNvIGlnbm9yZSBpdHMgcmV0dXJuIHZhbHVlICovCi0gICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiBvdXRsZW47CisgICAgcmV0dXJuIGN0eC5yZXN1bHQ7CiB9CiAKIApAQCAtMjcyNyw2ICsyOTgxLDM0IEBACiBcblwKIFNlZSByZWN2KCkgZm9yIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIGZsYWdzLiIpOwogCitzdHJ1Y3Qgc29ja19yZWN2ZnJvbSB7CisgICAgY2hhciogY2J1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgZmxhZ3M7CisgICAgc29ja2xlbl90ICphZGRybGVuOworICAgIHNvY2tfYWRkcl90ICphZGRyYnVmOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19yZWN2ZnJvbV9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19yZWN2ZnJvbSAqY3R4ID0gZGF0YTsKKworICAgIG1lbXNldChjdHgtPmFkZHJidWYsIDAsICpjdHgtPmFkZHJsZW4pOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjdHgtPmxlbiA+IElOVF9NQVgpCisgICAgICAgIGN0eC0+bGVuID0gSU5UX01BWDsKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGN0eC0+Y2J1ZiwgKGludCljdHgtPmxlbiwgY3R4LT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGN0eC0+Y2J1ZiwgY3R4LT5sZW4sIGN0eC0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbmRpZgorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CisKIAogLyoKICAqIFRoaXMgaXMgdGhlIGd1dHMgb2YgdGhlIHJlY3Zmcm9tKCkgYW5kIHJlY3Zmcm9tX2ludG8oKSBtZXRob2RzLCB3aGljaCByZWFkcwpAQCAtMjc0NCw5ICszMDI2LDggQEAKICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCoqIGFkZHIpCiB7CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKLSAgICBpbnQgdGltZW91dDsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKICAgICBzb2NrbGVuX3QgYWRkcmxlbjsKKyAgICBzdHJ1Y3Qgc29ja19yZWN2ZnJvbSBjdHg7CiAKICAgICAqYWRkciA9IE5VTEw7CiAKQEAgLTI3NTgsMzggKzMwMzksMjAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG1lbXNldCgmYWRkcmJ1ZiwgMCwgYWRkcmxlbik7Ci0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjYnVmLCAoaW50KWxlbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAmYWRkcmJ1ZiwgJmFkZHJsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGNidWYsIGxlbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCi0gICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKCEoKmFkZHIgPSBtYWtlc29ja2FkZHIocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRybGVuLCBzLT5zb2NrX3Byb3RvKSkpCisgICAgY3R4LmNidWYgPSBjYnVmOworICAgIGN0eC5sZW4gPSBsZW47CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgY3R4LmFkZHJidWYgPSAmYWRkcmJ1ZjsKKyAgICBjdHguYWRkcmxlbiA9ICZhZGRybGVuOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19yZWN2ZnJvbV9pbXBsLCAmY3R4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHJldHVybiBuOworICAgICphZGRyID0gbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgcy0+c29ja19wcm90byk7CisgICAgaWYgKCphZGRyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBjdHgucmVzdWx0OwogfQogCiAvKiBzLnJlY3Zmcm9tKG5ieXRlcyBbLGZsYWdzXSkgbWV0aG9kICovCkBAIC0yOTAwLDEwICszMTYzLDI0IEBACiBcblwKIExpa2UgcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIGJ1dCBhbHNvIHJldHVybiB0aGUgc2VuZGVyJ3MgYWRkcmVzcyBpbmZvLiIpOwogCi0KIC8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZwogICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLwogI2lmZGVmIENNU0dfTEVOCitzdHJ1Y3Qgc29ja19yZWN2bXNnIHsKKyAgICBzdHJ1Y3QgbXNnaGRyICptc2c7CisgICAgaW50IGZsYWdzOworICAgIHNzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19yZWN2bXNnX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3JlY3Ztc2cgKmN0eCA9IGRhdGE7CisKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Ztc2cocy0+c29ja19mZCwgY3R4LT5tc2csIGN0eC0+ZmxhZ3MpOworICAgIHJldHVybiAgKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKgogICogQ2FsbCByZWN2bXNnKCkgd2l0aCB0aGUgc3VwcGxpZWQgaW92ZWMgc3RydWN0dXJlcywgZmxhZ3MsIGFuZAogICogYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIHNpemUgKGNvbnRyb2xsZW4pLiAgUmV0dXJucyB0aGUgdHVwbGUgcmV0dXJuCkBAIC0yOTE5LDggKzMxOTYsNiBAQAogICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBQeV9zc2l6ZV90IGNvbnRyb2xsZW4sCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKCptYWtldmFsKShzc2l6ZV90LCB2b2lkICopLCB2b2lkICptYWtldmFsX2RhdGEpCiB7Ci0gICAgc3NpemVfdCBieXRlc19yZWNlaXZlZCA9IC0xOwotICAgIGludCB0aW1lb3V0OwogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CiAgICAgc29ja2xlbl90IGFkZHJidWZsZW47CiAgICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CkBAIC0yOTI5LDYgKzMyMDQsNyBAQAogICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaDsKICAgICBzaXplX3QgY21zZ2RhdGFsZW4gPSAwOwogICAgIGludCBjbXNnX3N0YXR1czsKKyAgICBzdHJ1Y3Qgc29ja19yZWN2bXNnIGN0eDsKIAogICAgIC8qIFhYWDogUE9TSVggc2F5cyB0aGF0IG1zZ19uYW1lIGFuZCBtc2dfbmFtZWxlbiAic2hhbGwgYmUKICAgICAgICBpZ25vcmVkIiB3aGVuIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkIChMaW51eCBmaWxscyB0aGVtIGluCkBAIC0yOTU1LDI4ICszMjMxLDE3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CiAgICAgbXNnLm1zZ19uYW1lID0gU0FTMlNBKCZhZGRyYnVmKTsKICAgICBtc2cubXNnX25hbWVsZW4gPSBhZGRyYnVmbGVuOwogICAgIG1zZy5tc2dfaW92ID0gaW92OwogICAgIG1zZy5tc2dfaW92bGVuID0gaW92bGVuOwogICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CiAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIGJ5dGVzX3JlY2VpdmVkID0gcmVjdm1zZyhzLT5zb2NrX2ZkLCAmbXNnLCBmbGFncyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7Ci0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKIAotICAgIGlmIChieXRlc19yZWNlaXZlZCA8IDApIHsKLSAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgY3R4Lm1zZyA9ICZtc2c7CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzLCAwLCBzb2NrX3JlY3Ztc2dfaW1wbCwgJmN0eCkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQogCiAgICAgLyogTWFrZSBsaXN0IG9mIChsZXZlbCwgdHlwZSwgZGF0YSkgdHVwbGVzIGZyb20gY29udHJvbCBtZXNzYWdlcy4gKi8KICAgICBpZiAoKGNtc2dfbGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCkBAIC0zMDE4LDcgKzMyODMsNyBAQAogICAgIH0KIAogICAgIHJldHZhbCA9IFB5X0J1aWxkVmFsdWUoIk5PaU4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptYWtldmFsKShieXRlc19yZWNlaXZlZCwgbWFrZXZhbF9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbWFrZXZhbCkoY3R4LnJlc3VsdCwgbWFrZXZhbF9kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbXNnLm1zZ19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLApAQCAtMzIyNiwxNSArMzQ5MSwzNiBAQAogI2VuZGlmICAgIC8qIENNU0dfTEVOICovCiAKIAorc3RydWN0IHNvY2tfc2VuZCB7CisgICAgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBmbGFnczsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfc2VuZF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19zZW5kICpjdHggPSBkYXRhOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjdHgtPmxlbiA+IElOVF9NQVgpCisgICAgICAgIGN0eC0+bGVuID0gSU5UX01BWDsKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmQocy0+c29ja19mZCwgY3R4LT5idWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MpOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmQocy0+c29ja19mZCwgY3R4LT5idWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzKTsKKyNlbmRpZgorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7Cit9CisKIC8qIHMuc2VuZChkYXRhIFssZmxhZ3NdKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2VuZChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgbiA9IC0xOwotICAgIGludCBmbGFncyA9IDAsIHRpbWVvdXQ7CisgICAgaW50IGZsYWdzID0gMDsKICAgICBQeV9idWZmZXIgcGJ1ZjsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kIGN0eDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpzZW5kIiwgJnBidWYsICZmbGFncykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzI0MywzMyArMzUyOSwxNiBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKICAgICAgICAgcmV0dXJuIHNlbGVjdF9lcnJvcigpOwogICAgIH0KLSAgICBidWYgPSBwYnVmLmJ1ZjsKLSAgICBsZW4gPSBwYnVmLmxlbjsKLQotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gc2VuZChzLT5zb2NrX2ZkLCBidWYsIChpbnQpbGVuLCBmbGFncyk7Ci0jZWxzZQotICAgICAgICBuID0gc2VuZChzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MpOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgeworICAgIGN0eC5idWYgPSBwYnVmLmJ1ZjsKKyAgICBjdHgubGVuID0gcGJ1Zi5sZW47CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzLCAxLCBzb2NrX3NlbmRfaW1wbCwgJmN0eCkgPCAwKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotCiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzZW5kX2RvYywKQEAgLTMyODYsOSArMzU1NSwxNSBAQAogc29ja19zZW5kYWxsKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgbGVuLCBuID0gLTE7Ci0gICAgaW50IGZsYWdzID0gMCwgdGltZW91dCwgc2F2ZWRfZXJybm87CisgICAgUHlfc3NpemVfdCBsZW4sIG47CisgICAgaW50IGZsYWdzID0gMDsKICAgICBQeV9idWZmZXIgcGJ1ZjsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kIGN0eDsKKyAgICBpbnQgaGFzX3RpbWVvdXQgPSAocy0+c29ja190aW1lb3V0ID4gMCk7CisgICAgX1B5VGltZV90IGludGVydmFsID0gcy0+c29ja190aW1lb3V0OworICAgIF9QeVRpbWVfdCBkZWFkbGluZSA9IDA7CisgICAgaW50IGRlYWRsaW5lX2luaXRpYWxpemVkID0gMDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpzZW5kYWxsIiwgJnBidWYsICZmbGFncykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzMwMSw1MCArMzU3Niw0NyBAQAogICAgIH0KIAogICAgIGRvIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0KHMsIDEpOwotICAgICAgICBuID0gLTE7Ci0gICAgICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgICAgICBuID0gc2VuZChzLT5zb2NrX2ZkLCBidWYsIChpbnQpbGVuLCBmbGFncyk7Ci0jZWxzZQotICAgICAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzKTsKLSNlbmRpZgorICAgICAgICBpZiAoaGFzX3RpbWVvdXQpIHsKKyAgICAgICAgICAgIGlmIChkZWFkbGluZV9pbml0aWFsaXplZCkgeworICAgICAgICAgICAgICAgIC8qIHJlY29tcHV0ZSB0aGUgdGltZW91dCAqLworICAgICAgICAgICAgICAgIGludGVydmFsID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWFkbGluZV9pbml0aWFsaXplZCA9IDE7CisgICAgICAgICAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyBzLT5zb2NrX3RpbWVvdXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbCA8PSAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAvKiBQeUVycl9DaGVja1NpZ25hbHMoKSBtaWdodCBjaGFuZ2UgZXJybm8gKi8KLSAgICAgICAgc2F2ZWRfZXJybm8gPSBlcnJubzsKKworICAgICAgICBjdHguYnVmID0gYnVmOworICAgICAgICBjdHgubGVuID0gbGVuOworICAgICAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICAgICAgaWYgKHNvY2tfY2FsbF9leChzLCAxLCBzb2NrX3NlbmRfaW1wbCwgJmN0eCwgMCwgTlVMTCwgaW50ZXJ2YWwpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgbiA9IGN0eC5yZXN1bHQ7CisgICAgICAgIGFzc2VydChuID49IDApOworCisgICAgICAgIGJ1ZiArPSBuOworICAgICAgICBsZW4gLT0gbjsKKwogICAgICAgICAvKiBXZSBtdXN0IHJ1biBvdXIgc2lnbmFsIGhhbmRsZXJzIGJlZm9yZSBsb29waW5nIGFnYWluLgogICAgICAgICAgICBzZW5kKCkgY2FuIHJldHVybiBhIHN1Y2Nlc3NmdWwgcGFydGlhbCB3cml0ZSB3aGVuIGl0IGlzCiAgICAgICAgICAgIGludGVycnVwdGVkLCBzbyB3ZSBjYW4ndCByZXN0cmljdCBvdXJzZWx2ZXMgdG8gRUlOVFIuICovCi0gICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgIC8qIElmIGludGVycnVwdGVkLCB0cnkgYWdhaW4gKi8KLSAgICAgICAgICAgIGlmIChzYXZlZF9lcnJubyA9PSBFSU5UUikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBidWYgKz0gbjsKLSAgICAgICAgbGVuIC09IG47CisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9IHdoaWxlIChsZW4gPiAwKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKIAotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJlcyA9IFB5X05vbmU7CisKK2RvbmU6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlEb2NfU1RSVkFSKHNlbmRhbGxfZG9jLApAQCAtMzM1Niw2ICszNjI4LDMyIEBACiB0byB0ZWxsIGhvdyBtdWNoIGRhdGEgaGFzIGJlZW4gc2VudC4iKTsKIAogCitzdHJ1Y3Qgc29ja19zZW5kdG8geworICAgIGNoYXIgKmJ1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgZmxhZ3M7CisgICAgaW50IGFkZHJsZW47CisgICAgc29ja19hZGRyX3QgKmFkZHJidWY7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3NlbmR0b19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19zZW5kdG8gKmN0eCA9IGRhdGE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGN0eC0+bGVuID4gSU5UX01BWCkKKyAgICAgICAgY3R4LT5sZW4gPSBJTlRfTUFYOworICAgIGN0eC0+cmVzdWx0ID0gc2VuZHRvKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCAoaW50KWN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmR0byhzLT5zb2NrX2ZkLCBjdHgtPmJ1ZiwgY3R4LT5sZW4sIGN0eC0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKiBzLnNlbmR0byhkYXRhLCBbZmxhZ3MsXSBzb2NrYWRkcikgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMzYzLDExICszNjYxLDEwIEBACiB7CiAgICAgUHlfYnVmZmVyIHBidWY7CiAgICAgUHlPYmplY3QgKmFkZHJvOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgYXJnbGVuOworICAgIFB5X3NzaXplX3QgYXJnbGVuOwogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgaW50IGFkZHJsZW4sIGZsYWdzLCB0aW1lb3V0OwotICAgIFB5X3NzaXplX3QgbiA9IC0xOworICAgIGludCBhZGRybGVuLCBmbGFnczsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kdG8gY3R4OwogCiAgICAgZmxhZ3MgPSAwOwogICAgIGFyZ2xlbiA9IFB5VHVwbGVfU2l6ZShhcmdzKTsKQEAgLTMzODgsOSArMzY4NSw2IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgYnVmID0gcGJ1Zi5idWY7Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0KICAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAgICAgICAgIHJldHVybiBzZWxlY3RfZXJyb3IoKTsKQEAgLTM0MDEsMzIgKzM2OTUsMTggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAxLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSBzZW5kdG8ocy0+c29ja19mZCwgYnVmLCAoaW50KWxlbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbik7Ci0jZWxzZQotICAgICAgICBuID0gc2VuZHRvKHMtPnNvY2tfZmQsIGJ1ZiwgbGVuLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgeworICAgIGN0eC5idWYgPSBwYnVmLmJ1ZjsKKyAgICBjdHgubGVuID0gcGJ1Zi5sZW47CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgY3R4LmFkZHJsZW4gPSBhZGRybGVuOworICAgIGN0eC5hZGRyYnVmID0gJmFkZHJidWY7CisgICAgaWYgKHNvY2tfY2FsbChzLCAxLCBzb2NrX3NlbmR0b19pbXBsLCAmY3R4KSA8IDApIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzZW5kdG9fZG9jLApAQCAtMzQzOSw2ICszNzE5LDIxIEBACiAvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKICAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KICNpZmRlZiBDTVNHX0xFTgorc3RydWN0IHNvY2tfc2VuZG1zZyB7CisgICAgc3RydWN0IG1zZ2hkciAqbXNnOworICAgIGludCBmbGFnczsKKyAgICBzc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfc2VuZG1zZ19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnICpjdHggPSBkYXRhOworCisgICAgY3R4LT5yZXN1bHQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsIGN0eC0+bXNnLCBjdHgtPmZsYWdzKTsKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKiBzLnNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzQ1NiwxMCArMzc1MSwxMCBAQAogICAgIH0gKmNtc2dzID0gTlVMTDsKICAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKICAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OwotICAgIHNzaXplX3QgYnl0ZXNfc2VudCA9IC0xOwotICAgIGludCBhZGRybGVuLCB0aW1lb3V0LCBmbGFncyA9IDA7CisgICAgaW50IGFkZHJsZW4sIGZsYWdzID0gMDsKICAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsICpkYXRhX2Zhc3QgPSBOVUxMLAogICAgICAgICAqY21zZ19mYXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T2lPOnNlbmRtc2ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKQpAQCAtMzYxMywyMyArMzkwOCwxMiBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkKLSAgICAgICAgYnl0ZXNfc2VudCA9IHNlbmRtc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTOwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgY3R4Lm1zZyA9ICZtc2c7CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzLCAxLCBzb2NrX3NlbmRtc2dfaW1wbCwgJmN0eCkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQogCi0gICAgaWYgKGJ5dGVzX3NlbnQgPCAwKSB7Ci0gICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChieXRlc19zZW50KTsKKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CiAKIGZpbmFsbHk6CiAgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKQEAgLTM3OTYsNyArNDA4MCw3IEBACiAgICAgeyJzaGFyZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2hhcmUsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzb2NrX3NoYXJlX2RvY30sCiAjZW5kaWYKLSAgICB7Imxpc3RlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfbGlzdGVuLCBNRVRIX08sCisgICAgeyJsaXN0ZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX2xpc3RlbiwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIGxpc3Rlbl9kb2N9LAogICAgIHsicmVjdiIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19yZWN2LCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjdl9kb2N9LApAQCAtMzgzOCwxMCArNDEyMiwxNCBAQAogICAgICAgIHsiZmFtaWx5IiwgVF9JTlQsIG9mZnNldG9mKFB5U29ja2V0U29ja09iamVjdCwgc29ja19mYW1pbHkpLCBSRUFET05MWSwgInRoZSBzb2NrZXQgZmFtaWx5In0sCiAgICAgICAgeyJ0eXBlIiwgVF9JTlQsIG9mZnNldG9mKFB5U29ja2V0U29ja09iamVjdCwgc29ja190eXBlKSwgUkVBRE9OTFksICJ0aGUgc29ja2V0IHR5cGUifSwKICAgICAgICB7InByb3RvIiwgVF9JTlQsIG9mZnNldG9mKFB5U29ja2V0U29ja09iamVjdCwgc29ja19wcm90byksIFJFQURPTkxZLCAidGhlIHNvY2tldCBwcm90b2NvbCJ9LAotICAgICAgIHsidGltZW91dCIsIFRfRE9VQkxFLCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfdGltZW91dCksIFJFQURPTkxZLCAidGhlIHNvY2tldCB0aW1lb3V0In0sCiAgICAgICAgezB9LAogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIHNvY2tfZ2V0c2V0bGlzdFtdID0geworICAgIHsidGltZW91dCIsIChnZXR0ZXIpc29ja19nZXR0aW1lb3V0LCBOVUxMLCBQeURvY19TVFIoInRoZSBzb2NrZXQgdGltZW91dCIpfSwKKyAgICB7TlVMTH0gLyogc2VudGluZWwgKi8KK307CisKIC8qIERlYWxsb2NhdGUgYSBzb2NrZXQgb2JqZWN0IGluIHJlc3BvbnNlIHRvIHRoZSBsYXN0IFB5X0RFQ1JFRigpLgogICAgRmlyc3QgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRpb24uICovCiAKQEAgLTM5MDUsNyArNDE5Myw3IEBACiAgICAgbmV3ID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKG5ldyAhPSBOVUxMKSB7CiAgICAgICAgICgoUHlTb2NrZXRTb2NrT2JqZWN0ICopbmV3KS0+c29ja19mZCA9IC0xOwotICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPnNvY2tfdGltZW91dCA9IC0xLjA7CisgICAgICAgICgoUHlTb2NrZXRTb2NrT2JqZWN0ICopbmV3KS0+c29ja190aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcygtMSk7CiAgICAgICAgICgoUHlTb2NrZXRTb2NrT2JqZWN0ICopbmV3KS0+ZXJyb3JoYW5kbGVyID0gJnNldF9lcnJvcjsKICAgICB9CiAgICAgcmV0dXJuIG5ldzsKQEAgLTQwODgsNyArNDM3Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIHNvY2tfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHNvY2tfbWVtYmVybGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgc29ja19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwpAQCAtNDIyNyw3ICs0NTE1LDcgQEAKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIGNvbW1vbiB0byBnZXRob3N0YnluYW1lX2V4IGFuZCBnZXRob3N0YnlhZGRyICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRob3N0X2NvbW1vbihzdHJ1Y3QgaG9zdGVudCAqaCwgc3RydWN0IHNvY2thZGRyICphZGRyLCBpbnQgYWxlbiwgaW50IGFmKQorZ2V0aG9zdF9jb21tb24oc3RydWN0IGhvc3RlbnQgKmgsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc2l6ZV90IGFsZW4sIGludCBhZikKIHsKICAgICBjaGFyICoqcGNoOwogICAgIFB5T2JqZWN0ICpydG5fdHVwbGUgPSAoUHlPYmplY3QgKilOVUxMOwpAQCAtNDk0NCwyMSArNTIzMiwyMiBAQAogc3RhdGljIFB5T2JqZWN0Kgogc29ja2V0X2luZXRfbnRvYShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqcGFja2VkX3N0cjsKLSAgICBpbnQgYWRkcl9sZW47CisgICAgUHlfYnVmZmVyIHBhY2tlZF9pcDsKICAgICBzdHJ1Y3QgaW5fYWRkciBwYWNrZWRfYWRkcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6aW5ldF9udG9hIiwgJnBhY2tlZF9zdHIsICZhZGRyX2xlbikpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmluZXRfbnRvYSIsICZwYWNrZWRfaXApKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChhZGRyX2xlbiAhPSBzaXplb2YocGFja2VkX2FkZHIpKSB7CisgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJwYWNrZWQgSVAgd3JvbmcgbGVuZ3RoIGZvciBpbmV0X250b2EiKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbWVtY3B5KCZwYWNrZWRfYWRkciwgcGFja2VkX3N0ciwgYWRkcl9sZW4pOworICAgIG1lbWNweSgmcGFja2VkX2FkZHIsIHBhY2tlZF9pcC5idWYsIHBhY2tlZF9pcC5sZW4pOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoaW5ldF9udG9hKHBhY2tlZF9hZGRyKSk7CiB9CkBAIC01MDY5LDggKzUzNTgsNyBAQAogc29ja2V0X2luZXRfbnRvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGFmOwotICAgIGNoYXIqIHBhY2tlZDsKLSAgICBpbnQgbGVuOworICAgIFB5X2J1ZmZlciBwYWNrZWRfaXA7CiAgICAgY29uc3QgY2hhciogcmV0dmFsOwogI2lmZGVmIEVOQUJMRV9JUFY2CiAgICAgY2hhciBpcFtQeV9NQVgoSU5FVF9BRERSU1RSTEVOLCBJTkVUNl9BRERSU1RSTEVOKSArIDFdOwpAQCAtNTA4MSwzMSArNTM2OSwzNSBAQAogICAgIC8qIEd1YXJhbnRlZSBOVUwtdGVybWluYXRpb24gZm9yIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgYmVsb3cgKi8KICAgICBtZW1zZXQoKHZvaWQgKikgJmlwWzBdLCAnXDAnLCBzaXplb2YoaXApKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkjOmluZXRfbnRvcCIsICZhZiwgJnBhY2tlZCwgJmxlbikpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5KjppbmV0X250b3AiLCAmYWYsICZwYWNrZWRfaXApKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChhZiA9PSBBRl9JTkVUKSB7Ci0gICAgICAgIGlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgeworICAgICAgICBpZiAocGFja2VkX2lwLmxlbiAhPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAiaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNpZmRlZiBFTkFCTEVfSVBWNgogICAgIH0gZWxzZSBpZiAoYWYgPT0gQUZfSU5FVDYpIHsKLSAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgeworICAgICAgICBpZiAocGFja2VkX2lwLmxlbiAhPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgImludmFsaWQgbGVuZ3RoIG9mIHBhY2tlZCBJUCBhZGRyZXNzIHN0cmluZyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5ICVkIiwgYWYpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR2YWwgPSBpbmV0X250b3AoYWYsIHBhY2tlZCwgaXAsIHNpemVvZihpcCkpOworICAgIHJldHZhbCA9IGluZXRfbnRvcChhZiwgcGFja2VkX2lwLmJ1ZiwgaXAsIHNpemVvZihpcCkpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgaWYgKCFyZXR2YWwpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxMjQsOCArNTQxNiw3IEBACiBzb2NrZXRfaW5ldF9udG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgYWY7Ci0gICAgY2hhciogcGFja2VkOwotICAgIGludCBsZW47CisgICAgUHlfYnVmZmVyIHBhY2tlZF9pcDsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IGFkZHI7CiAgICAgRFdPUkQgYWRkcmxlbiwgcmV0LCByZXRsZW47CiAjaWZkZWYgRU5BQkxFX0lQVjYKQEAgLTUxMzcsMzggKzU0MjgsNDIgQEAKICAgICAvKiBHdWFyYW50ZWUgTlVMLXRlcm1pbmF0aW9uIGZvciBQeVVuaWNvZGVfRnJvbVN0cmluZygpIGJlbG93ICovCiAgICAgbWVtc2V0KCh2b2lkICopICZpcFswXSwgJ1wwJywgc2l6ZW9mKGlwKSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5IzppbmV0X250b3AiLCAmYWYsICZwYWNrZWQsICZsZW4pKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkX2lwKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAoYWYgPT0gQUZfSU5FVCkgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiBhZGRyNCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmYWRkcjsKIAotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgImludmFsaWQgbGVuZ3RoIG9mIHBhY2tlZCBJUCBhZGRyZXNzIHN0cmluZyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG1lbXNldChhZGRyNCwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogICAgICAgICBhZGRyNC0+c2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gICAgICAgIG1lbWNweSgmKGFkZHI0LT5zaW5fYWRkciksIHBhY2tlZCwgc2l6ZW9mKGFkZHI0LT5zaW5fYWRkcikpOworICAgICAgICBtZW1jcHkoJihhZGRyNC0+c2luX2FkZHIpLCBwYWNrZWRfaXAuYnVmLCBzaXplb2YoYWRkcjQtPnNpbl9hZGRyKSk7CiAgICAgICAgIGFkZHJsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKICAgICB9IGVsc2UgaWYgKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIGlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsKICAgICAgICAgYWRkci5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwotICAgICAgICBtZW1jcHkoJihhZGRyLnNpbjZfYWRkciksIHBhY2tlZCwgc2l6ZW9mKGFkZHIuc2luNl9hZGRyKSk7CisgICAgICAgIG1lbWNweSgmKGFkZHIuc2luNl9hZGRyKSwgcGFja2VkX2lwLmJ1Ziwgc2l6ZW9mKGFkZHIuc2luNl9hZGRyKSk7CiAgICAgICAgIGFkZHJsZW4gPSBzaXplb2YoYWRkcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAidW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCIsIGFmKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAKICAgICByZXRsZW4gPSBzaXplb2YoaXApOwogICAgIHJldCA9IFdTQUFkZHJlc3NUb1N0cmluZ0EoKHN0cnVjdCBzb2NrYWRkciopJmFkZHIsIGFkZHJsZW4sIE5VTEwsCkBAIC01NDA1LDEyICs1NzAwLDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGRlZmF1bHR0aW1lb3V0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIGlmIChkZWZhdWx0dGltZW91dCA8IDAuMCkgeworICAgIGlmIChkZWZhdWx0dGltZW91dCA8IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGRlZmF1bHR0aW1lb3V0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZG91YmxlIHNlY29uZHMgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShkZWZhdWx0dGltZW91dCk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjb25kcyk7CisgICAgfQogfQogCiBQeURvY19TVFJWQVIoZ2V0ZGVmYXVsdHRpbWVvdXRfZG9jLApAQCAtNTQyMywxOSArNTcyMCwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9zZXRkZWZhdWx0dGltZW91dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBkb3VibGUgdGltZW91dDsKKyAgICBfUHlUaW1lX3QgdGltZW91dDsKIAotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkKLSAgICAgICAgdGltZW91dCA9IC0xLjA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKGFyZyk7Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMC4wKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lb3V0IHZhbHVlIG91dCBvZiByYW5nZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKHNvY2tldF9wYXJzZV90aW1lb3V0KCZ0aW1lb3V0LCBhcmcpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBkZWZhdWx0dGltZW91dCA9IHRpbWVvdXQ7CiAKQEAgLTU3ODIsMTEgKzYwNzAsMTUgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9PSAtMSkgeworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE4MDAKKyAgICAgICAgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IElzV2luZG93czdTUDFPckdyZWF0ZXIoKTsKKyNlbHNlCiAgICAgICAgIERXT1JEIHZlcnNpb24gPSBHZXRWZXJzaW9uKCk7CiAgICAgICAgIERXT1JEIG1ham9yID0gKERXT1JEKUxPQllURShMT1dPUkQodmVyc2lvbikpOwogICAgICAgICBEV09SRCBtaW5vciA9IChEV09SRClISUJZVEUoTE9XT1JEKHZlcnNpb24pKTsKICAgICAgICAgLyogbmVlZCBXaW5kb3dzIDcgU1AxLCAyMDA4IFIyIFNQMSBvciBsYXRlciAqLwotICAgICAgICBzdXBwb3J0X3dzYV9ub19pbmhlcml0ID0gKG1ham9yID49IDYgJiYgbWlub3IgPj0gMSk7CisgICAgICAgIHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPSBtYWpvciA+IDYgfHwgKG1ham9yID09IDYgJiYgbWlub3IgPj0gMSk7CisjZW5kaWYKICAgICB9CiAjZW5kaWYKIApAQCAtNjE4NSw2ICs2NDc3LDkgQEAKICNpZmRlZiAgU09fUFJJT1JJVFkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QUklPUklUWSk7CiAjZW5kaWYKKyNpZmRlZiAgU09fTUFSSworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX01BUkspOworI2VuZGlmCiAKICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBmb3IgImxpc3RlbiIgKi8KICNpZmRlZiAgU09NQVhDT05OCkBAIC02MzIyLDYgKzY2MTcsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9SQVdfTE9PUEJBQ0spOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9SQVdfUkVDVl9PV05fTVNHUyk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX1JBV19GRF9GUkFNRVMpOworI2VuZGlmCiAjaWZkZWYgSEFWRV9MSU5VWF9DQU5fQkNNX0gKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fQkNNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9UWF9TRVRVUCIsIFRYX1NFVFVQKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmggYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCmluZGV4IGI4M2Y5YWYuLjNjY2U5MjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaApAQCAtMTQsNiArMTQsMTMgQEAKIAogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogIyBpbmNsdWRlIDx3aW5zb2NrMi5oPgorLyogV2luZG93cyAnc3VwcG9ydHMnIENNU0dfTEVOLCBidXQgZG9lcyBub3QgZm9sbG93IHRoZSBQT1NJWCBzdGFuZGFyZAorICogaW50ZXJmYWNlIGF0IGFsbCwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW5jbHVkaW5nIHRoZSBjb2RlIHRoYXQKKyAqIGF0dGVtcHRzIHRvIHVzZSBpdC4KKyAqLworIyBpZmRlZiBQeVNvY2tldF9CVUlMRElOR19TT0NLRVQKKyMgIHVuZGVmIENNU0dfTEVOCisjIGVuZGlmCiAjIGluY2x1ZGUgPHdzMnRjcGlwLmg+CiAvKiBWQzYgaXMgc2hpcHBlZCB3aXRoIG9sZCBwbGF0Zm9ybSBoZWFkZXJzLCBhbmQgZG9lcyBub3QgaGF2ZSBNU1RjcElQLmgKICAqIFNlcGFyYXRlIFNES3MgaGF2ZSBhbGwgdGhlIGZ1bmN0aW9ucyB3ZSB3YW50LCBidXQgb2xkZXIgb25lcyBkb24ndCBoYXZlCkBAIC0xNjcsNyArMTc0LDcgQEAKICAgICBQeU9iamVjdCAqKCplcnJvcmhhbmRsZXIpKHZvaWQpOyAvKiBFcnJvciBoYW5kbGVyOyBjaGVja3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubywgcmV0dXJucyBOVUxMIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgYSBQeXRob24gZXhjZXB0aW9uICovCi0gICAgZG91YmxlIHNvY2tfdGltZW91dDsgICAgICAgICAgICAgICAgIC8qIE9wZXJhdGlvbiB0aW1lb3V0IGluIHNlY29uZHM7CisgICAgX1B5VGltZV90IHNvY2tfdGltZW91dDsgICAgIC8qIE9wZXJhdGlvbiB0aW1lb3V0IGluIHNlY29uZHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wIG1lYW5zIG5vbi1ibG9ja2luZyAqLwogfSBQeVNvY2tldFNvY2tPYmplY3Q7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKaW5kZXggNjhlYTFiNS4uNDkzMjRkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKQEAgLTEwLDYgKzEwLDEyIEBACiAjaW5jbHVkZSA8c2hhZG93Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgImNsaW5pYy9zcHdkbW9kdWxlLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIHNwd2QKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWMwYjg0MWI5MGE2YTA3Y2VdKi8KIAogUHlEb2NfU1RSVkFSKHNwd2RfX2RvY19fLAogIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5peCBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UuXG5cCkBAIC0xMDcsMjAgKzExMywyNSBAQAogCiAjaWZkZWYgSEFWRV9HRVRTUE5BTQogCi1QeURvY19TVFJWQVIoc3B3ZF9nZXRzcG5hbV9fZG9jX18sCi0iZ2V0c3BuYW0obmFtZSkgLT4gKHNwX25hbXAsIHNwX3B3ZHAsIHNwX2xzdGNoZywgc3BfbWluLCBzcF9tYXgsXG5cCi0gICAgICAgICAgICAgICAgICAgIHNwX3dhcm4sIHNwX2luYWN0LCBzcF9leHBpcmUsIHNwX2ZsYWcpXG5cCi1SZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS5cblwKLVNlZSBzcHdkLl9fZG9jX18gZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitzcHdkLmdldHNwbmFtCiAKLXN0YXRpYyBQeU9iamVjdCogc3B3ZF9nZXRzcG5hbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgYXJnOiB1bmljb2RlCisgICAgLworCitSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KKworU2VlIGBoZWxwKHNwd2QpYCBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNmJiZTUxYTRlYjNiMjEgaW5wdXQ9ZGQ4OTQyOWU2MTY3YTAwZl0qLwogewogICAgIGNoYXIgKm5hbWU7CiAgICAgc3RydWN0IHNwd2QgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldHNwbmFtIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZykpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQpAQCAtMTM5LDE0ICsxNTAsMTcgQEAKIAogI2lmZGVmIEhBVkVfR0VUU1BFTlQKIAotUHlEb2NfU1RSVkFSKHNwd2RfZ2V0c3BhbGxfX2RvY19fLAotImdldHNwYWxsKCkgLT4gbGlzdF9vZl9lbnRyaWVzXG5cCi1SZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIFwKLWluIGFyYml0cmFyeSBvcmRlci5cblwKLVNlZSBzcHdkLl9fZG9jX18gZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitzcHdkLmdldHNwYWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLgorCitTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3B3ZF9nZXRzcGFsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzcHdkX2dldHNwYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMTJkOGVjN2JkYjI5NjEyIGlucHV0PWIyYzg0Yjc4NTdkNjIyYmRdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKICAgICBzdHJ1Y3Qgc3B3ZCAqcDsKQEAgLTE3MSwxMCArMTg1LDEwIEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiBzcHdkX21ldGhvZHNbXSA9IHsKICNpZmRlZiBIQVZFX0dFVFNQTkFNCi0gICAgeyJnZXRzcG5hbSIsICAgICAgICBzcHdkX2dldHNwbmFtLCBNRVRIX1ZBUkFSR1MsIHNwd2RfZ2V0c3BuYW1fX2RvY19ffSwKKyAgICBTUFdEX0dFVFNQTkFNX01FVEhPRERFRgogI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRTUEVOVAotICAgIHsiZ2V0c3BhbGwiLCAgICAgICAgc3B3ZF9nZXRzcGFsbCwgTUVUSF9OT0FSR1MsIHNwd2RfZ2V0c3BhbGxfX2RvY19ffSwKKyAgICBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZS5oIGIvTW9kdWxlcy9zcmUuaAppbmRleCA0MmZlMjhkLi5iNjMyMTY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZS5oCisrKyBiL01vZHVsZXMvc3JlLmgKQEAgLTE4LDggKzE4LDEwIEBACiAjZGVmaW5lIFNSRV9DT0RFIFB5X1VDUzQKICNpZiBTSVpFT0ZfU0laRV9UID4gNAogIyBkZWZpbmUgU1JFX01BWFJFUEVBVCAofihTUkVfQ09ERSkwKQorIyBkZWZpbmUgU1JFX01BWEdST1VQUyAoKH4oU1JFX0NPREUpMCkgLyAyKQogI2Vsc2UKICMgZGVmaW5lIFNSRV9NQVhSRVBFQVQgKChTUkVfQ09ERSlQWV9TU0laRV9UX01BWCkKKyMgZGVmaW5lIFNSRV9NQVhHUk9VUFMgKChTUkVfQ09ERSlQWV9TU0laRV9UX01BWCAvIFNJWkVPRl9TSVpFX1QgLyAyKQogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTUyLDkgKzU0LDYgQEAKIAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgKCpTUkVfVE9MT1dFUl9IT09LKSh1bnNpZ25lZCBpbnQgY2gpOwogCi0vKiBGSVhNRTogPGZsPiBzaG91bGRuJ3QgYmUgYSBjb25zdGFudCwgcmVhbGx5Li4uICovCi0jZGVmaW5lIFNSRV9NQVJLX1NJWkUgMjAwCi0KIHR5cGVkZWYgc3RydWN0IFNSRV9SRVBFQVRfVCB7CiAgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICBTUkVfQ09ERSogcGF0dGVybjsgLyogcG9pbnRzIHRvIFJFUEVBVCBvcGVyYXRvciBhcmd1bWVudHMgKi8KQEAgLTc2LDcgKzc1LDcgQEAKICAgICAvKiByZWdpc3RlcnMgKi8KICAgICBQeV9zc2l6ZV90IGxhc3RpbmRleDsKICAgICBQeV9zc2l6ZV90IGxhc3RtYXJrOwotICAgIHZvaWQqIG1hcmtbU1JFX01BUktfU0laRV07CisgICAgdm9pZCoqIG1hcms7CiAgICAgLyogZHluYW1pY2FsbHkgYWxsb2NhdGVkIHN0dWZmICovCiAgICAgY2hhciogZGF0YV9zdGFjazsKICAgICBzaXplX3QgZGF0YV9zdGFja19zaXplOwpAQCAtODUsNyArODQsNyBAQAogICAgIC8qIGN1cnJlbnQgcmVwZWF0IGNvbnRleHQgKi8KICAgICBTUkVfUkVQRUFUICpyZXBlYXQ7CiAgICAgLyogaG9va3MgKi8KLSAgICBTUkVfVE9MT1dFUl9IT09LIGxvd2VyOworICAgIFNSRV9UT0xPV0VSX0hPT0sgbG93ZXIsIHVwcGVyOwogfSBTUkVfU1RBVEU7CiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oIGIvTW9kdWxlcy9zcmVfY29uc3RhbnRzLmgKaW5kZXggNTk0MGQ1YS4uNjYzMjQ0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfY29uc3RhbnRzLmgKKysrIGIvTW9kdWxlcy9zcmVfY29uc3RhbnRzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqIFNlZSB0aGUgX3NyZS5jIGZpbGUgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRpc3RyaWJ1dGlvbi4KICAqLwogCi0jZGVmaW5lIFNSRV9NQUdJQyAyMDAzMTAxNworI2RlZmluZSBTUkVfTUFHSUMgMjAxNDA5MTcKICNkZWZpbmUgU1JFX09QX0ZBSUxVUkUgMAogI2RlZmluZSBTUkVfT1BfU1VDQ0VTUyAxCiAjZGVmaW5lIFNSRV9PUF9BTlkgMgpAQCAtNDQsNiArNDQsNyBAQAogI2RlZmluZSBTUkVfT1BfUkVQRUFUX09ORSAyOQogI2RlZmluZSBTUkVfT1BfU1VCUEFUVEVSTiAzMAogI2RlZmluZSBTUkVfT1BfTUlOX1JFUEVBVF9PTkUgMzEKKyNkZWZpbmUgU1JFX09QX1JBTkdFX0lHTk9SRSAzMgogI2RlZmluZSBTUkVfQVRfQkVHSU5OSU5HIDAKICNkZWZpbmUgU1JFX0FUX0JFR0lOTklOR19MSU5FIDEKICNkZWZpbmUgU1JFX0FUX0JFR0lOTklOR19TVFJJTkcgMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmVfbGliLmggYi9Nb2R1bGVzL3NyZV9saWIuaAppbmRleCA1YzZjNWE1Li40NjNhOTA4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZV9saWIuaAorKysgYi9Nb2R1bGVzL3NyZV9saWIuaApAQCAtMTAxLDcgKzEwMSw3IEBACiB9CiAKIExPQ0FMKGludCkKLVNSRShjaGFyc2V0KShTUkVfQ09ERSogc2V0LCBTUkVfQ09ERSBjaCkKK1NSRShjaGFyc2V0KShTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogc2V0LCBTUkVfQ09ERSBjaCkKIHsKICAgICAvKiBjaGVjayBpZiBjaGFyYWN0ZXIgaXMgYSBtZW1iZXIgb2YgdGhlIGdpdmVuIHNldCAqLwogCkBAIC0xNDIsNiArMTQyLDIwIEBACiAgICAgICAgICAgICBzZXQgKz0gMjsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU1JFX09QX1JBTkdFX0lHTk9SRToKKyAgICAgICAgICAgIC8qIDxSQU5HRV9JR05PUkU+IDxsb3dlcj4gPHVwcGVyPiAqLworICAgICAgICB7CisgICAgICAgICAgICBTUkVfQ09ERSB1Y2g7CisgICAgICAgICAgICAvKiBjaCBpcyBhbHJlYWR5IGxvd2VyIGNhc2VkICovCisgICAgICAgICAgICBpZiAoc2V0WzBdIDw9IGNoICYmIGNoIDw9IHNldFsxXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2s7CisgICAgICAgICAgICB1Y2ggPSBzdGF0ZS0+dXBwZXIoY2gpOworICAgICAgICAgICAgaWYgKHNldFswXSA8PSB1Y2ggJiYgdWNoIDw9IHNldFsxXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2s7CisgICAgICAgICAgICBzZXQgKz0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTUkVfT1BfTkVHQVRFOgogICAgICAgICAgICAgb2sgPSAhb2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5Myw3ICsyMDcsNyBAQAogICAgIGNhc2UgU1JFX09QX0lOOgogICAgICAgICAvKiByZXBlYXRlZCBzZXQgKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgSU5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIFNSRShjaGFyc2V0KShwYXR0ZXJuICsgMiwgKnB0cikpCisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgU1JFKGNoYXJzZXQpKHN0YXRlLCBwYXR0ZXJuICsgMiwgKnB0cikpCiAgICAgICAgICAgICBwdHIrKzsKICAgICAgICAgYnJlYWs7CiAKQEAgLTYyOCw3ICs2NDIsOCBAQAogICAgICAgICAgICAgLyogbWF0Y2ggc2V0IG1lbWJlciAob3Igbm9uX21lbWJlcikgKi8KICAgICAgICAgICAgIC8qIDxJTj4gPHNraXA+IDxzZXQ+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTlxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhU1JFKGNoYXJzZXQpKGN0eC0+cGF0dGVybiArIDEsICpjdHgtPnB0cikpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgIVNSRShjaGFyc2V0KShzdGF0ZSwgY3R4LT5wYXR0ZXJuICsgMSwgKmN0eC0+cHRyKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07CiAgICAgICAgICAgICBjdHgtPnB0cisrOwpAQCAtNjU3LDcgKzY3Miw3IEBACiAgICAgICAgIGNhc2UgU1JFX09QX0lOX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOX0lHTk9SRVxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwogICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZAotICAgICAgICAgICAgICAgIHx8ICFTUkUoY2hhcnNldCkoY3R4LT5wYXR0ZXJuKzEsCisgICAgICAgICAgICAgICAgfHwgIVNSRShjaGFyc2V0KShzdGF0ZSwgY3R4LT5wYXR0ZXJuKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKQEAgLTY4OCw3ICs3MDMsOCBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzFdID09IFNSRV9PUF9JTiAmJgogICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAhU1JFKGNoYXJzZXQpKGN0eC0+cGF0dGVybiArIDMsIChTUkVfQ09ERSkgKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAhU1JFKGNoYXJzZXQpKHN0YXRlLCBjdHgtPnBhdHRlcm4gKyAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpICpjdHgtPnB0cikpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CiAgICAgICAgICAgICAgICAgRE9fSlVNUChKVU1QX0JSQU5DSCwganVtcF9icmFuY2gsIGN0eC0+cGF0dGVybisxKTsKQEAgLTEzMTAsNyArMTMyNiw3IEBACiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwogICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkUoY2hhcnNldCkoY2hhcnNldCwgKnB0cikpCisgICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkUoY2hhcnNldCkoc3RhdGUsIGNoYXJzZXQsICpwdHIpKQogICAgICAgICAgICAgICAgIHB0cisrOwogICAgICAgICAgICAgaWYgKHB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKaW5kZXggY2RiNGZmYy4uZjg0Y2M3OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwpAQCAtODQsOSArODQsNiBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0NMQVNTIiwgQ2xhc3NCbG9jayk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfTU9EVUxFIiwgTW9kdWxlQmxvY2spOwogCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT1BUX0lNUE9SVF9TVEFSKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPUFRfVE9QTEVWRUwpOwotCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9DQUwpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdMT0JBTF9FWFBMSUNJVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR0xPQkFMX0lNUExJQ0lUKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGltZW1vZHVsZS5jIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKaW5kZXggZDA5MTdhNC4uMTk3ZDJjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKQEAgLTI3LDI4ICsyNywxMyBAQAogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIFRoZXNlIG92ZXJyaWRlcyBub3QgbmVlZGVkIGZvciBXaW4zMiAqLwotI2RlZmluZSB0aW1lem9uZSBfdGltZXpvbmUKLSNkZWZpbmUgdHpuYW1lIF90em5hbWUKLSNkZWZpbmUgZGF5bGlnaHQgX2RheWxpZ2h0Ci0jZW5kaWYgLyogX19CT1JMQU5EQ19fICovCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qICFfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgotI2VuZGlmCi0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgaW50IGZsb2F0c2xlZXAoZG91YmxlKTsKK3N0YXRpYyBpbnQgcHlzbGVlcChfUHlUaW1lX3QpOwogc3RhdGljIFB5T2JqZWN0KiBmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCi1zdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV90aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewpAQCAtOTIsMTIgKzc3LDEyIEBACiB9CiAjZW5kaWYgLyogSEFWRV9DTE9DSyAqLwogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCisjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBXSU4zMl9QRVJGX0NPVU5URVIKIC8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBkdWUgdG8gTWFyawogICAgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLwotc3RhdGljIGludAotd2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvLCBQeU9iamVjdCAqKnJlc3VsdCkKK3N0YXRpYyBQeU9iamVjdCoKK3dpbl9wZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICAgICBzdGF0aWMgTE9OR0xPTkcgY3B1X2ZyZXF1ZW5jeSA9IDA7CiAgICAgc3RhdGljIExPTkdMT05HIGN0clN0YXJ0OwpAQCAtMTA5LDEwICs5NCw4IEBACiAgICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZub3cpOwogICAgICAgICBjdHJTdGFydCA9IG5vdy5RdWFkUGFydDsKICAgICAgICAgaWYgKCFRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxKSB8fCBmcmVxLlF1YWRQYXJ0ID09IDApIHsKLSAgICAgICAgICAgIC8qIFVubGlrZWx5IHRvIGhhcHBlbiAtIHRoaXMgd29ya3Mgb24gYWxsIGludGVsCi0gICAgICAgICAgICAgICBtYWNoaW5lcyBhdCBsZWFzdCEgIFJldmVydCB0byBjbG9jaygpICovCi0gICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgY3B1X2ZyZXF1ZW5jeSA9IGZyZXEuUXVhZFBhcnQ7CiAgICAgfQpAQCAtMTI0LDEwICsxMDcsOSBAQAogICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOwogICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKICAgICB9Ci0gICAgKnJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShkaWZmIC8gKGRvdWJsZSljcHVfZnJlcXVlbmN5KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOwogfQotI2VuZGlmCisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCiAKICNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChIQVZFX0NMT0NLKQogI2RlZmluZSBQWUNMT0NLCkBAIC0xMzUsMTEgKzExNywxMCBAQAogcHljbG9jayhfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewogI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgotICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgaWYgKHdpbl9wZXJmX2NvdW50ZXIoaW5mbywgJnJlcykgPT0gMCkKLSAgICAgICAgcmV0dXJuIHJlczsKLSNlbmRpZgorICAgIHJldHVybiB3aW5fcGVyZl9jb3VudGVyKGluZm8pOworI2Vsc2UKICAgICByZXR1cm4gZmxvYXRjbG9jayhpbmZvKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTY5LDcgKzE1MCw3IEBACiAKICAgICByZXQgPSBjbG9ja19nZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOwogICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOwpAQCAtMTg1LDIyICsxNjYsMjIgQEAKIHsKICAgICBpbnQgY2xrX2lkOwogICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgdGltZV90IHR2X3NlYzsKLSAgICBsb25nIHR2X25zZWM7CisgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRwOwogICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNsb2NrX3NldHRpbWUiLCAmY2xrX2lkLCAmb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG9iaiwgJnR2X3NlYywgJnR2X25zZWMsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnQsIG9iaiwgX1B5VGltZV9ST1VORF9GTE9PUikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0cC50dl9zZWMgPSB0dl9zZWM7Ci0gICAgdHAudHZfbnNlYyA9IHR2X25zZWM7CisKKyAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHQsICZ0cCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0ID0gY2xvY2tfc2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKICAgICBpZiAocmV0ICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTIyMyw3ICsyMDQsNyBAQAogCiAgICAgcmV0ID0gY2xvY2tfZ2V0cmVzKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOwogICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yMzcsMTcgKzIxOCwxNyBAQAogI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3RpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgZG91YmxlIHNlY3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnNsZWVwIiwgJnNlY3MpKQorICAgIF9QeVRpbWVfdCBzZWNzOworICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZzZWNzLCBvYmosIF9QeVRpbWVfUk9VTkRfQ0VJTElORykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZWNzIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzbGVlcCBsZW5ndGggbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChmbG9hdHNsZWVwKHNlY3MpICE9IDApCisgICAgaWYgKHB5c2xlZXAoc2VjcykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzQxLDcgKzMyMiw3IEBACiAgICAgICAgIHdoZW50ID0gdGltZShOVUxMKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG90LCAmd2hlbnQsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG90LCAmd2hlbnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgICpwd2hlbiA9IHdoZW50OwpAQCAtNjM1LDEzICs2MTYsNiBAQAogICAgIHsKICAgICAgICAgaWYgKG91dGJ1ZlsxXT09JyMnKQogICAgICAgICAgICAgKytvdXRidWY7IC8qIG5vdCBkb2N1bWVudGVkIGJ5IHB5dGhvbiwgKi8KLSAgICAgICAgaWYgKG91dGJ1ZlsxXT09J1wwJyB8fAotICAgICAgICAgICAgIXN0cmNocigiYUFiQmNkSElqbU1wU1V3V3hYeVl6WiUiLCBvdXRidWZbMV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHN0cmluZyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZvcm1hdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBpZiAoKG91dGJ1ZlsxXSA9PSAneScpICYmIGJ1Zi50bV95ZWFyIDwgMCkKICAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC02NzksNyArNjUzLDkgQEAKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGJ1ZmxlbiA9IGZvcm1hdF90aW1lKG91dGJ1ZiwgaSwgZm10LCAmYnVmKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgZGVmaW5lZChfX1NURENfU0VDVVJFX0xJQl9fKQogICAgICAgICBlcnIgPSBlcnJubzsKICNlbmRpZgpAQCAtOTAzLDEyMiArODc5LDE3IEBACiBzaG91bGQgbm90IGJlIHJlbGllZCBvbi4iKTsKICNlbmRpZiAvKiBIQVZFX1dPUktJTkdfVFpTRVQgKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKLSAgICB8fCAoZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIFwKLSAgICAgICAgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKSkKLSNkZWZpbmUgUFlNT05PVE9OSUMKLSNlbmRpZgotCi0jaWZkZWYgUFlNT05PVE9OSUMKLXN0YXRpYyBQeU9iamVjdCoKK3N0YXRpYyBQeU9iamVjdCAqCiBweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7Ci0gICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKLSAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7Ci0gICAgZG91YmxlIHJlc3VsdDsKLQotICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgewotICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCi0gICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgewotICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKLSAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOwotICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOwotICAgIH0KLQotICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgewotICAgICAgICBVTE9OR0xPTkcgdGlja3M7Ci0gICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKLSAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7Ci0gICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKLSAgICAgICAgRFdPUkQgdGlja3M7Ci0KLSAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKLSAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKLSAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKLSAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOwotCi0gICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKLSAgICAgICAgcmVzdWx0ICs9IHRpY2tzOwotICAgICAgICByZXN1bHQgKj0gMWUtMzsKLSAgICB9Ci0KLSAgICBpZiAoaW5mbykgewotICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKLSAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOwotICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCi0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOwotICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7Ci0gICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOwotCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKLSAgICB1aW50NjRfdCB0aW1lOwotICAgIGRvdWJsZSBzZWNzOwotCi0gICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKLSAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90Ci0gICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLwotICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKLSAgICB9Ci0KLSAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7Ci0gICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OwotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKLSAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7Ci0gICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOwotICAgIH0KLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOwotCi0jZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQotICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKLSNpZmRlZiBDTE9DS19ISUdIUkVTCi0gICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7Ci0gICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7Ci0jZWxzZQotICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7Ci0gICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKLSNlbmRpZgotCi0gICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIF9QeVRpbWVfdCB0OworICAgIGRvdWJsZSBkOworICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIGluZm8pIDwgMCkgeworICAgICAgICBhc3NlcnQoaW5mbyAhPSBOVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgaWYgKGluZm8pIHsKLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKLSAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKLSAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7Ci0gICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQotICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OwotICAgIH0KLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKLSNlbmRpZgorICAgIGQgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0KTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAzMSw0MCArOTAyLDE1IEBACiAibW9ub3RvbmljKCkgLT4gZmxvYXRcblwKIFxuXAogTW9ub3RvbmljIGNsb2NrLCBjYW5ub3QgZ28gYmFja3dhcmQuIik7Ci0jZW5kaWYgICAvKiBQWU1PTk9UT05JQyAqLwogCiBzdGF0aWMgUHlPYmplY3QqCiBwZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChQWU1PTk9UT05JQykKLSAgICBQeU9iamVjdCAqcmVzOwotI2VuZGlmCi0jaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpCi0gICAgc3RhdGljIGludCB1c2VfcGVyZl9jb3VudGVyID0gMTsKLSNlbmRpZgotI2lmZGVmIFBZTU9OT1RPTklDCi0gICAgc3RhdGljIGludCB1c2VfbW9ub3RvbmljID0gMTsKLSNlbmRpZgotCiAjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCi0gICAgaWYgKHVzZV9wZXJmX2NvdW50ZXIpIHsKLSAgICAgICAgaWYgKHdpbl9wZXJmX2NvdW50ZXIoaW5mbywgJnJlcykgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIHVzZV9wZXJmX2NvdW50ZXIgPSAwOwotICAgIH0KKyAgICByZXR1cm4gd2luX3BlcmZfY291bnRlcihpbmZvKTsKKyNlbHNlCisgICAgcmV0dXJuIHB5bW9ub3RvbmljKGluZm8pOwogI2VuZGlmCi0KLSNpZmRlZiBQWU1PTk9UT05JQwotICAgIGlmICh1c2VfbW9ub3RvbmljKSB7Ci0gICAgICAgIHJlcyA9IHB5bW9ub3RvbmljKGluZm8pOwotICAgICAgICBpZiAocmVzICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB1c2VfbW9ub3RvbmljID0gMDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBmbG9hdHRpbWUoaW5mbyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjMxLDEwICsxMDc3LDggQEAKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKICAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CiAjZW5kaWYKLSNpZmRlZiBQWU1PTk9UT05JQwogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKICAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOwotI2VuZGlmCiAgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQogICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOwogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKQEAgLTE0MTEsNyArMTI1NSw3IEBACiAgICAgeyJjbG9ja19zZXR0aW1lIiwgICB0aW1lX2Nsb2NrX3NldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfc2V0dGltZV9kb2N9LAogICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCiAjZW5kaWYKLSAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfVkFSQVJHUywgc2xlZXBfZG9jfSwKKyAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfTywgc2xlZXBfZG9jfSwKICAgICB7ImdtdGltZSIsICAgICAgICAgIHRpbWVfZ210aW1lLCBNRVRIX1ZBUkFSR1MsIGdtdGltZV9kb2N9LAogICAgIHsibG9jYWx0aW1lIiwgICAgICAgdGltZV9sb2NhbHRpbWUsIE1FVEhfVkFSQVJHUywgbG9jYWx0aW1lX2RvY30sCiAgICAgeyJhc2N0aW1lIiwgICAgICAgICB0aW1lX2FzY3RpbWUsIE1FVEhfVkFSQVJHUywgYXNjdGltZV9kb2N9LApAQCAtMTQyNiw5ICsxMjcwLDcgQEAKICNpZmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKICAgICB7InR6c2V0IiwgICAgICAgICAgIHRpbWVfdHpzZXQsIE1FVEhfTk9BUkdTLCB0enNldF9kb2N9LAogI2VuZGlmCi0jaWZkZWYgUFlNT05PVE9OSUMKICAgICB7Im1vbm90b25pYyIsICAgICAgIHRpbWVfbW9ub3RvbmljLCBNRVRIX05PQVJHUywgbW9ub3RvbmljX2RvY30sCi0jZW5kaWYKICAgICB7InByb2Nlc3NfdGltZSIsICAgIHRpbWVfcHJvY2Vzc190aW1lLCBNRVRIX05PQVJHUywgcHJvY2Vzc190aW1lX2RvY30sCiAgICAgeyJwZXJmX2NvdW50ZXIiLCAgICB0aW1lX3BlcmZfY291bnRlciwgTUVUSF9OT0FSR1MsIHBlcmZfY291bnRlcl9kb2N9LAogICAgIHsiZ2V0X2Nsb2NrX2luZm8iLCAgdGltZV9nZXRfY2xvY2tfaW5mbywgTUVUSF9WQVJBUkdTLCBnZXRfY2xvY2tfaW5mb19kb2N9LApAQCAtMTUxMCwxNSArMTM1Miw2IEBACiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKLSAgICAgICAgaWYgKCFHZXRWZXJzaW9uRXgoKE9TVkVSU0lPTklORk8qKSZ3aW52ZXIpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7CiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQpAQCAtMTUzNCwxMDkgKzEzNjcsOTMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewotICAgIF9QeVRpbWVfdGltZXZhbCB0OwotI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQotICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKLSAgICBpbnQgcmV0OwotCi0gICAgLyogX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBkb2VzIG5vdCB1c2UgY2xvY2tfZ2V0dGltZSgpCi0gICAgICAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIHRvIGxpbmsgUHl0aG9uIHRvIHRoZSBydCAocmVhbC10aW1lKQotICAgICAgIGxpYnJhcnksIGF0IGxlYXN0IG9uIExpbnV4ICovCi0gICAgcmV0ID0gY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRwKTsKLSAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7Ci0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSI7Ci0gICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKENMT0NLX1JFQUxUSU1FLCAmcmVzKSA9PSAwKQotICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIF9QeVRpbWVfdCB0OworICAgIGRvdWJsZSBkOworICAgIGlmIChfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oJnQsIGluZm8pIDwgMCkgeworICAgICAgICBhc3NlcnQoaW5mbyAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2VuZGlmCi0gICAgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygmdCwgaW5mbyk7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjICogMWUtNik7CisgICAgZCA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHQpOworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZCk7CiB9CiAKIAotLyogSW1wbGVtZW50IGZsb2F0c2xlZXAoKSBmb3IgdmFyaW91cyBwbGF0Zm9ybXMuCisvKiBJbXBsZW1lbnQgcHlzbGVlcCgpIGZvciB2YXJpb3VzIHBsYXRmb3Jtcy4KICAgIFdoZW4gaW50ZXJydXB0ZWQgKG9yIHdoZW4gYW5vdGhlciBlcnJvciBvY2N1cnMpLCByZXR1cm4gLTEgYW5kCiAgICBzZXQgYW4gZXhjZXB0aW9uOyBlbHNlIHJldHVybiAwLiAqLwogCiBzdGF0aWMgaW50Ci1mbG9hdHNsZWVwKGRvdWJsZSBzZWNzKQorcHlzbGVlcChfUHlUaW1lX3Qgc2VjcykKIHsKLS8qIFhYWCBTaG91bGQgdGVzdCBmb3IgTVNfV0lORE9XUyBmaXJzdCEgKi8KLSNpZiBkZWZpbmVkKEhBVkVfU0VMRUNUKSAmJiAhZGVmaW5lZChfX0VNWF9fKQotICAgIHN0cnVjdCB0aW1ldmFsIHQ7Ci0gICAgZG91YmxlIGZyYWM7Ci0gICAgaW50IGVycjsKLQotICAgIGZyYWMgPSBmbW9kKHNlY3MsIDEuMCk7Ci0gICAgc2VjcyA9IGZsb29yKHNlY3MpOwotICAgIHQudHZfc2VjID0gKGxvbmcpc2VjczsKLSAgICB0LnR2X3VzZWMgPSAobG9uZykoZnJhYyoxMDAwMDAwLjApOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnIgPSBzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKGVyciAhPSAwKSB7Ci0jaWZkZWYgRUlOVFIKLSAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICBfUHlUaW1lX3QgZGVhZGxpbmUsIG1vbm90b25pYzsKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisgICAgaW50IGVyciA9IDA7CisjZWxzZQorICAgIF9QeVRpbWVfdCBtaWxsaXNlY3M7CisgICAgdW5zaWduZWQgbG9uZyB1bF9taWxsaXM7CisgICAgRFdPUkQgcmM7CisgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudDsKICNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisKKyAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHNlY3M7CisKKyAgICBkbyB7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHNlY3MsICZ0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVyciA9IHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdGltZW91dCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVyciA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICB9Ci0jZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBkZWxheSgoaW50KShzZWNzICogMTAwMCArIDAuNSkpOyAgLyogZGVsYXkoKSB1c2VzIG1pbGxpc2Vjb25kcyAqLwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgewotICAgICAgICBkb3VibGUgbWlsbGlzZWNzID0gc2VjcyAqIDEwMDAuMDsKLSAgICAgICAgdW5zaWduZWQgbG9uZyB1bF9taWxsaXM7Ci0KKyNlbHNlCisgICAgICAgIG1pbGxpc2VjcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoc2VjcywgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKICAgICAgICAgaWYgKG1pbGxpc2VjcyA+IChkb3VibGUpVUxPTkdfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xlZXAgbGVuZ3RoIGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICAvKiBBbGxvdyBzbGVlcCgwKSB0byBtYWludGFpbiB3aW4zMiBzZW1hbnRpY3MsIGFuZCBhcyBkZWNyZWVkCiAgICAgICAgICAqIGJ5IEd1aWRvLCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gYmUgaW50ZXJydXB0ZWQuCiAgICAgICAgICAqLwogICAgICAgICB1bF9taWxsaXMgPSAodW5zaWduZWQgbG9uZyltaWxsaXNlY3M7Ci0gICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpCisgICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgICAgIFNsZWVwKHVsX21pbGxpcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgRFdPUkQgcmM7Ci0gICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKLSAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKLSAgICAgICAgICAgIHJjID0gV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgdWxfbWlsbGlzLCBGQUxTRSk7Ci0gICAgICAgICAgICBpZiAocmMgPT0gV0FJVF9PQkpFQ1RfMCkgewotICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlRSOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcywgRkFMU0UpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0KLSNlbHNlCi0gICAgLyogWFhYIENhbid0IGludGVycnVwdCB0aGlzIHNsZWVwICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNsZWVwKChpbnQpc2Vjcyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAocmMgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAgICAgLyogc2xlZXAgd2FzIGludGVycnVwdGVkIGJ5IFNJR0lOVCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgbW9ub3RvbmljID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICBzZWNzID0gZGVhZGxpbmUgLSBtb25vdG9uaWM7CisgICAgICAgIGlmIChzZWNzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiByZXRyeSB3aXRoIHRoZSByZWNvbXB1dGVkIGRlbGF5ICovCisgICAgfSB3aGlsZSAoMSk7CisKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGthcHBpbml0LmMgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCmluZGV4IDJlZDg1OTQuLjc2MTZkOWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGthcHBpbml0LmMKKysrIGIvTW9kdWxlcy90a2FwcGluaXQuYwpAQCAtMjYsOSArMjYsNiBAQAogaW50CiBUY2xfQXBwSW5pdChUY2xfSW50ZXJwICppbnRlcnApCiB7Ci0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIFRrX1dpbmRvdyBtYWluX3dpbmRvdzsKLSNlbmRpZgogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3NraXBfdGtfaW5pdDsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfdGtfZmFpbGVkOwpAQCAtMTEzLDI5ICsxMTAsMTMgQEAKICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgICB9CiAKLSNpZmRlZiBXSVRIX01PUkVCVVRUT05TCi0gICAgbWFpbl93aW5kb3cgPSBUa19NYWluV2luZG93KGludGVycCk7Ci0jZWxzZQogICAgIFRrX01haW5XaW5kb3coaW50ZXJwKTsKLSNlbmRpZgogCiAjaWZkZWYgVEtfQVFVQQogICAgIFRrTWFjT1NYSW5pdEFwcGxlRXZlbnRzKGludGVycCk7CiAgICAgVGtNYWNPU1hJbml0TWVudXMoaW50ZXJwKTsKICNlbmRpZgogCi0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIHsKLSAgICAgICAgZXh0ZXJuIFRjbF9DbWRQcm9jIHN0dWRCdXR0b25DbWQ7Ci0gICAgICAgIGV4dGVybiBUY2xfQ21kUHJvYyB0cmlCdXR0b25DbWQ7Ci0KLSAgICAgICAgVGNsX0NyZWF0ZUNvbW1hbmQoaW50ZXJwLCAic3R1ZGJ1dHRvbiIsIHN0dWRCdXR0b25DbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBtYWluX3dpbmRvdywgTlVMTCk7Ci0gICAgICAgIFRjbF9DcmVhdGVDb21tYW5kKGludGVycCwgInRyaWJ1dHRvbiIsIHRyaUJ1dHRvbkNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKENsaWVudERhdGEpIG1haW5fd2luZG93LCBOVUxMKTsKLSAgICB9Ci0jZW5kaWYKLQogI2lmZGVmIFdJVEhfUElMIC8qIDAuMmI1IGFuZCBsYXRlciAtLSBub3QgeWV0IHJlbGVhc2VkIGFzIG9mIE1heSAxNCAqLwogICAgIHsKICAgICAgICAgZXh0ZXJuIHZvaWQgVGtJbWFnaW5nX0luaXQoVGNsX0ludGVycCAqKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGtpbnRlci5oIGIvTW9kdWxlcy90a2ludGVyLmgKaW5kZXggM2M1NTY3Ni4uY2I1YTgwNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy90a2ludGVyLmgKKysrIGIvTW9kdWxlcy90a2ludGVyLmgKQEAgLTE2LDE0ICsxNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoVEtfUkVMRUFTRV9MRVZFTCA8PCA4KSB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX1NFUklBTCA8PCAwKSkKIAotLyogVEtfVkVSU0lPTl9IRVggcGFja3MgZmllbGRzIGluIHdyb25nIG9yZGVyLCBub3Qgc3VpdGFibGUgZm9yIGNvbXBhcmluZyBvZgotICogbm9uLWZpbmFsIHJlbGVhc2VzLiAgTGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAqLwotI2RlZmluZSBUS19WRVJTSU9OX0hFWCAoKFRLX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX01JTk9SX1ZFUlNJT04gPDwgMTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfU0VSSUFMIDw8IDgpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfTEVWRUwgPDwgMCkpCi0KIC8qIFByb3RlY3QgVGsgOC40LjEzIGFuZCBvbGRlciBmcm9tIGEgZGVhZGxvY2sgdGhhdCBoYXBwZW5zIHdoZW4gdHJ5aW5nCiAgKiB0byBsb2FkIHRrIGFmdGVyIGEgZmFpbGVkIGF0dGVtcHQuICovCiAjaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDQwMjBlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggNTA3Y2VmMy4uYTZlMmRiYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtNzMsNiArNzMsOCBAQAogICAgIFB5X1VDUzQgKCpub3JtYWxpemF0aW9uKShQeV9VQ1M0KTsKIH0gUHJldmlvdXNEQlZlcnNpb247CiAKKyNpbmNsdWRlICJjbGluaWMvdW5pY29kZWRhdGEuYy5oIgorCiAjZGVmaW5lIGdldF9vbGRfcmVjb3JkKHNlbGYsIHYpICAgICgoKChQcmV2aW91c0RCVmVyc2lvbiopc2VsZiktPmdldHJlY29yZCkodikpCiAKIHN0YXRpYyBQeU1lbWJlckRlZiBEQl9tZW1iZXJzW10gPSB7CkBAIC05OSw4MSArMTAxLDMxIEBACiB9CiAKIAotc3RhdGljIFB5X1VDUzQgZ2V0dWNoYXIoUHlVbmljb2RlT2JqZWN0ICpvYmopCi17Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQotICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgPT0gMSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCi0gICAgICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7Ci0gICAgfQotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJuZWVkIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyIGFzIHBhcmFtZXRlciIpOwotICAgIHJldHVybiAoUHlfVUNTNCktMTsKLX0KLQogLyogLS0tIE1vZHVsZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qW2NsaW5pYyBpbnB1dF0KLQogdW5pY29kZWRhdGEuVUNELmRlY2ltYWwKIAotICAgIHVuaWNocjogb2JqZWN0KHR5cGU9J1B5VW5pY29kZU9iamVjdCAqJywgc3ViY2xhc3Nfb2Y9JyZQeVVuaWNvZGVfVHlwZScpCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKICAgICBkZWZhdWx0OiBvYmplY3Q9TlVMTAogICAgIC8KIAogQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRlY2ltYWwgdmFsdWUuCiAKLVJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNocgotYXMgaW50ZWdlci4gSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYKLW5vdCBnaXZlbiwgVmFsdWVFcnJvciBpcyByYWlzZWQuCitSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCitJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfXywKLSJkZWNpbWFsKCRzZWxmLCB1bmljaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLlxuIgotIlxuIgotIlJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNoclxuIgotImFzIGludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG4iCi0ibm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKLQotI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfREVDSU1BTF9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjaW1hbCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlVbmljb2RlT2JqZWN0ICp1bmljaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsKFByZXZpb3VzREJWZXJzaW9uICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNocjsKLSAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8hfE86ZGVjaW1hbCIsCi0gICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnVuaWNociwgJmRlZmF1bHRfdmFsdWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCB1bmljaHIsIGRlZmF1bHRfdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFByZXZpb3VzREJWZXJzaW9uICpzZWxmLCBQeVVuaWNvZGVPYmplY3QgKnVuaWNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODY4OTY2OTg5NmQyOTNkZiBpbnB1dD1jMjVjOWQyYjRkZTA3NmIxXSovCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTIzMzc2ZTFhMTg1MjMxIGlucHV0PTkzM2Y4MTA3OTkzZjIzZDBdKi8KIHsKICAgICBpbnQgaGF2ZV9vbGQgPSAwOwogICAgIGxvbmcgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgYyA9IGdldHVjaGFyKHVuaWNocik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTIwNCw2MSArMTU2LDY0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9kaWdpdF9fZG9jX18sCi0iZGlnaXQodW5pY2hyWywgZGVmYXVsdF0pXG5cCi1cblwKLVJldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIgYXNcblwKLWludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG5cCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmRpZ2l0CisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGlnaXQgdmFsdWUuCisKK1JldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCitJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2RpZ2l0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NmUxOGM5NTAxNzFmZDJmIGlucHV0PWUyN2Q2ZTQ1NjVjZDI5ZjJdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKmRlZm9iaiA9IE5VTEw7CiAgICAgbG9uZyByYzsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86ZGlnaXQiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgcmMgPSBQeV9VTklDT0RFX1RPRElHSVQoYyk7CiAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJub3QgYSBkaWdpdCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJjKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX251bWVyaWNfX2RvY19fLAotIm51bWVyaWModW5pY2hyWywgZGVmYXVsdF0pXG5cCi1cblwKLVJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNoclxuXAotYXMgZmxvYXQuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG5cCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm51bWVyaWMKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKKyAgICAvCisKK0NvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlLgorCitSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGZsb2F0LgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9udW1lcmljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzY2UyODFmZTg1YjEwYzQgaW5wdXQ9ZmRmNTg3MWE1NTQyODkzY10qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeU9iamVjdCAqZGVmb2JqID0gTlVMTDsKICAgICBpbnQgaGF2ZV9vbGQgPSAwOwogICAgIGRvdWJsZSByYzsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86bnVtZXJpYyIsICZQeVVuaWNvZGVfVHlwZSwgJnYsICZkZWZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTI3NiwzNyArMjMxLDM0IEBACiAgICAgaWYgKCFoYXZlX29sZCkKICAgICAgICAgcmMgPSBQeV9VTklDT0RFX1RPTlVNRVJJQyhjKTsKICAgICBpZiAocmMgPT0gLTEuMCkgewotICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJub3QgYSBudW1lcmljIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHJjKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2NhdGVnb3J5X19kb2NfXywKLSJjYXRlZ29yeSh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmNhdGVnb3J5CisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9jYXRlZ29yeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NTcxNTM5ZWUyZTY3ODNhIGlucHV0PTI3ZDZmM2Q4NTA1MGJjMDZdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6Y2F0ZWdvcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5jYXRlZ29yeTsKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0zMTYsMjYgKzI2OCwyNCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0NhdGVnb3J5TmFtZXNbaW5kZXhdKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2JpZGlyZWN0aW9uYWxfX2RvY19fLAotImJpZGlyZWN0aW9uYWwodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBiaWRpcmVjdGlvbmFsIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4gSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXNcblwKLXJldHVybmVkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmJpZGlyZWN0aW9uYWwKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBiaWRpcmVjdGlvbmFsIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4KKworSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM2MzEwY2UyMDM5YmI5MiBpbnB1dD1iM2Q4ZjQyY2ViZmNmNDc1XSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmJpZGlyZWN0aW9uYWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5iaWRpcmVjdGlvbmFsOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTM0Nyw1NSArMjk3LDUyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfQmlkaXJlY3Rpb25hbE5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9jb21iaW5pbmdfX2RvY19fLAotImNvbWJpbmluZyh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGVcblwKLWNoYXJhY3RlciB1bmljaHIgYXMgaW50ZWdlci4gUmV0dXJucyAwIGlmIG5vIGNvbWJpbmluZyBjbGFzcyBpc1xuXAotZGVmaW5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5jb21iaW5pbmcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9jb21iaW5pbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCisKK1JldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXMgZGVmaW5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhZDA1NmQwY2I2YTU5MjAgaW5wdXQ9OWYyZDZiMmE5NWQwYTIyYV0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpjb21iaW5pbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5jb21iaW5pbmc7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApCiAgICAgICAgICAgICBpbmRleCA9IDA7IC8qIHVuYXNzaWduZWQgKi8KICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbmRleCk7CisgICAgcmV0dXJuIGluZGV4OwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbWlycm9yZWRfX2RvY19fLAotIm1pcnJvcmVkKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgbWlycm9yZWQgcHJvcGVydHkgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgaW50ZWdlci4gUmV0dXJucyAxIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIGJlZW4gaWRlbnRpZmllZCBhc1xuXAotYSBcIm1pcnJvcmVkXCIgY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QubWlycm9yZWQgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9taXJyb3JlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIG1pcnJvcmVkIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCisKK1JldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgYSAibWlycm9yZWQiCitjaGFyYWN0ZXIgaW4gYmlkaXJlY3Rpb25hbCB0ZXh0LCAwIG90aGVyd2lzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjUzMmRiZjgxMjFiNTBlNiBpbnB1dD01ZGQ0MDBkMzUxYWU2ZjNiXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOm1pcnJvcmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+bWlycm9yZWQ7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtNDA0LDI4ICszNTEsMjUgQEAKICAgICAgICAgZWxzZSBpZiAob2xkLT5taXJyb3JlZF9jaGFuZ2VkICE9IDB4RkYpCiAgICAgICAgICAgICBpbmRleCA9IG9sZC0+bWlycm9yZWRfY2hhbmdlZDsKICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbmRleCk7CisgICAgcmV0dXJuIGluZGV4OwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZWFzdF9hc2lhbl93aWR0aF9fZG9jX18sCi0iZWFzdF9hc2lhbl93aWR0aCh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGVhc3QgYXNpYW4gd2lkdGggYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmVhc3RfYXNpYW5fd2lkdGgKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ODRlODUzN2Q5ZWU4MTk3IGlucHV0PWM0ODU0Nzk4YWFiMDI2ZTBdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6ZWFzdF9hc2lhbl93aWR0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKICAgICBpbmRleCA9IChpbnQpIF9nZXRyZWNvcmRfZXgoYyktPmVhc3RfYXNpYW5fd2lkdGg7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtNDM1LDI5ICszNzksMjcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9FYXN0QXNpYW5XaWR0aE5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9kZWNvbXBvc2l0aW9uX19kb2NfXywKLSJkZWNvbXBvc2l0aW9uKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgVW5pY29kZVxuXAotY2hhcmFjdGVyIHVuaWNociBhcyBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vXG5cCi1zdWNoIG1hcHBpbmcgaXMgZGVmaW5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5kZWNvbXBvc2l0aW9uCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCisKK0FuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vIHN1Y2ggbWFwcGluZyBpcyBkZWZpbmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkNjk5ZjNlYzc1NjVkMjcgaW5wdXQ9ZTRjMTI0NTlhZDY4NTA3Yl0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBjaGFyIGRlY29tcFsyNTZdOwogICAgIGludCBjb2RlLCBpbmRleCwgY291bnQ7CiAgICAgc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IHByZWZpeF9pbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmRlY29tcG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBjb2RlID0gKGludCljOwogCkBAIC04NTgsMjIgKzgwMCwyNCBAQAogICAgIHJldHVybiAxOyAvKiBjZXJ0YWlubHkgbm9ybWFsaXplZCAqLwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbm9ybWFsaXplX19kb2NfXywKLSJub3JtYWxpemUoZm9ybSwgdW5pc3RyKVxuXAotXG5cCi1SZXR1cm4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci4gIFZhbGlkXG5cCi12YWx1ZXMgZm9yIGZvcm0gYXJlICdORkMnLCAnTkZLQycsICdORkQnLCBhbmQgJ05GS0QnLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm5vcm1hbGl6ZQogCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlZGF0YV9ub3JtYWxpemUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBmb3JtOiBzdHIKKyAgICB1bmlzdHIgYXMgaW5wdXQ6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5VW5pY29kZV9UeXBlJykKKyAgICAvCisKK1JldHVybiB0aGUgbm9ybWFsIGZvcm0gJ2Zvcm0nIGZvciB0aGUgVW5pY29kZSBzdHJpbmcgdW5pc3RyLgorCitWYWxpZCB2YWx1ZXMgZm9yIGZvcm0gYXJlICdORkMnLCAnTkZLQycsICdORkQnLCBhbmQgJ05GS0QnLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MmQxZjg4NzAwMjdlZmRjIGlucHV0PWNkMDkyZTYzMWNmMTE4ODNdKi8KIHsKLSAgICBjaGFyICpmb3JtOwotICAgIFB5T2JqZWN0ICppbnB1dDsKLQotICAgIGlmKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyE6bm9ybWFsaXplIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTIzMiw2NCArMTE3Niw2NyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIFB5dGhvbiBiaW5kaW5ncyAqLwogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbmFtZV9fZG9jX18sCi0ibmFtZSh1bmljaHJbLCBkZWZhdWx0XSlcblwKLVJldHVybnMgdGhlIG5hbWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNociBhcyBhXG5cCi1zdHJpbmcuIElmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdFxuXAotZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm5hbWUKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKKyAgICAvCisKK1JldHVybnMgdGhlIG5hbWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgYSBzdHJpbmcuCisKK0lmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbiwKK1ZhbHVlRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbmFtZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbmFtZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YmJiMzdhMzI2NDA3NzA3IGlucHV0PTNlMDM2N2Y1MzRkZTU2ZDldKi8KIHsKICAgICBjaGFyIG5hbWVbTkFNRV9NQVhMRU5dOwotICAgIFB5X1VDUzQgYzsKLQotICAgIFB5VW5pY29kZU9iamVjdCogdjsKLSAgICBQeU9iamVjdCogZGVmb2JqID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86bmFtZSIsICZQeVVuaWNvZGVfVHlwZSwgJnYsICZkZWZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogCiAgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSwgMCkpIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm8gc3VjaCBuYW1lIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZvYmopOwotICAgICAgICAgICAgcmV0dXJuIGRlZm9iajsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0X3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbG9va3VwX19kb2NfXywKLSJsb29rdXAobmFtZSlcblwKLVxuXAotTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS4gIElmIGEgY2hhcmFjdGVyIHdpdGggdGhlXG5cCi1naXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZVxuXAotY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QubG9va3VwCisKKyAgICBzZWxmOiBzZWxmCisgICAgbmFtZTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIC8KKworTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS4KKworSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZQorY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIEtleUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2xvb2t1cChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NjVjYjgxODY3ODhlNmJlIGlucHV0PWE1NTdiZTBmODYwN2EwZDZdKi8KIHsKICAgICBQeV9VQ1M0IGNvZGU7Ci0KLSAgICBjaGFyKiBuYW1lOwotICAgIFB5X3NzaXplX3QgbmFtZWxlbjsKICAgICB1bnNpZ25lZCBpbnQgaW5kZXg7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVsZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobmFtZWxlbiA+IElOVF9NQVgpIHsKKyAgICBpZiAobmFtZV9sZW5ndGggPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIm5hbWUgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFfZ2V0Y29kZShzZWxmLCBuYW1lLCAoaW50KW5hbWVsZW4sICZjb2RlLCAxKSkgeworICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgKGludCluYW1lX2xlbmd0aCwgJmNvZGUsIDEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzMDgsMjQgKzEyNTUsMTcgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVkYXRhX2Z1bmN0aW9uc1tdID0gewogICAgIFVOSUNPREVEQVRBX1VDRF9ERUNJTUFMX01FVEhPRERFRgotICAgIHsiZGlnaXQiLCB1bmljb2RlZGF0YV9kaWdpdCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9kaWdpdF9fZG9jX199LAotICAgIHsibnVtZXJpYyIsIHVuaWNvZGVkYXRhX251bWVyaWMsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfbnVtZXJpY19fZG9jX199LAotICAgIHsiY2F0ZWdvcnkiLCB1bmljb2RlZGF0YV9jYXRlZ29yeSwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9jYXRlZ29yeV9fZG9jX199LAotICAgIHsiYmlkaXJlY3Rpb25hbCIsIHVuaWNvZGVkYXRhX2JpZGlyZWN0aW9uYWwsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsX19kb2NfX30sCi0gICAgeyJjb21iaW5pbmciLCB1bmljb2RlZGF0YV9jb21iaW5pbmcsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX2NvbWJpbmluZ19fZG9jX199LAotICAgIHsibWlycm9yZWQiLCB1bmljb2RlZGF0YV9taXJyb3JlZCwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9taXJyb3JlZF9fZG9jX199LAotICAgIHsiZWFzdF9hc2lhbl93aWR0aCIsIHVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoX19kb2NfX30sCi0gICAgeyJkZWNvbXBvc2l0aW9uIiwgdW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbiwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb25fX2RvY19ffSwKLSAgICB7Im5hbWUiLCB1bmljb2RlZGF0YV9uYW1lLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX25hbWVfX2RvY19ffSwKLSAgICB7Imxvb2t1cCIsIHVuaWNvZGVkYXRhX2xvb2t1cCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9sb29rdXBfX2RvY19ffSwKLSAgICB7Im5vcm1hbGl6ZSIsIHVuaWNvZGVkYXRhX25vcm1hbGl6ZSwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfbm9ybWFsaXplX19kb2NfX30sCisgICAgVU5JQ09ERURBVEFfVUNEX0RJR0lUX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9OVU1FUklDX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9DQVRFR09SWV9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQklESVJFQ1RJT05BTF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQ09NQklOSU5HX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9NSVJST1JFRF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfRUFTVF9BU0lBTl9XSURUSF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfREVDT01QT1NJVElPTl9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTkFNRV9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTE9PS1VQX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9OT1JNQUxJWkVfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggZWMxMWZhMS4uYTc5MTMyZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4zLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNy4wLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMzIzLDcgKzMyMyw5IEBACiAgICAgezI3LCAwLCAxOSwgMCwgMSwgMTM2fSwKICAgICB7MTQsIDAsIDE5LCAwLCA1LCAwfSwKICAgICB7OCwgMCwgMTksIDAsIDUsIDB9LAorICAgIHs5LCAwLCA5LCAwLCA1LCAwfSwKICAgICB7OSwgMCwgNCwgMCwgNSwgMH0sCisgICAgezMwLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7OSwgMCwgMTIsIDAsIDUsIDB9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTcwfSwKICAgICB7NSwgMjE2LCAxLCAwLCA1LCAwfSwKQEAgLTMzNSw4ICszMzcsOCBAQAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KLSNkZWZpbmUgVE9UQUxfRklSU1QgMzcyCi0jZGVmaW5lIFRPVEFMX0xBU1QgNTYKKyNkZWZpbmUgVE9UQUxfRklSU1QgMzc2CisjZGVmaW5lIFRPVEFMX0xBU1QgNjIKIHN0cnVjdCByZWluZGV4e2ludCBzdGFydDtzaG9ydCBjb3VudCxpbmRleDt9Owogc3RhdGljIHN0cnVjdCByZWluZGV4IG5mY19maXJzdFtdID0gewogICB7IDYwLCAyLCAwfSwKQEAgLTU0Niw2ICs1NDgsOSBAQAogICB7IDY5Nzg3LCAwLCAzNjh9LAogICB7IDY5Nzk3LCAwLCAzNjl9LAogICB7IDY5OTM3LCAxLCAzNzB9LAorICB7IDcwNDcxLCAwLCAzNzJ9LAorICB7IDcwODQxLCAwLCAzNzN9LAorICB7IDcxMDk2LCAxLCAzNzR9LAogICB7MCwwLDB9CiB9OwogCkBAIC01ODMsNiArNTg4LDEyIEBACiAgIHsgMTI0NDEsIDEsIDUyfSwKICAgeyA2OTgxOCwgMCwgNTR9LAogICB7IDY5OTI3LCAwLCA1NX0sCisgIHsgNzA0NjIsIDAsIDU2fSwKKyAgeyA3MDQ4NywgMCwgNTd9LAorICB7IDcwODMyLCAwLCA1OH0sCisgIHsgNzA4NDIsIDAsIDU5fSwKKyAgeyA3MDg0NSwgMCwgNjB9LAorICB7IDcxMDg3LCAwLCA2MX0sCiAgIHswLDAsMH0KIH07CiAKQEAgLTcxNCwzNiArNzI1LDQzIEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMiwgMTIyLCAxMjMsIDEyNCwgCi0gICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDg0LCAKLSAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTQzLCA4NCwgMTQ0LCAxNDUsIDE0NiwgCi0gICAgODQsIDE0NywgODQsIDE0OCwgODQsIDg0LCA4NCwgMTQ5LCA4NCwgODQsIDg0LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE1NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU1LCA4NCwgMTU2LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU3LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDE1OCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgMTU5LCAxNjAsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTYxLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA3OCwgMTYyLCAxNjMsIDE2NCwgMTY1LCA4NCwgMTY2LCA4NCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCi0gICAgMTczLCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTc1LCAxNzYsIDg0LCA4NCwgMTc3LCAxNzgsIDE3OSwgCi0gICAgMTgwLCAxODEsIDg0LCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKKyAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDEzOCwgNDEsIDQxLCAxNDUsIDEzOCwgMTQ2LCAxNDcsIDE0OCwgCisgICAgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTM4LCAxMzgsIDEzOCwgMTU1LCAxMzgsIDEzOCwgMTM4LCAxNTYsIAorICAgIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDEzOCwgMTM4LCAxNjMsIDEzOCwgMTY0LCAxNjUsIDE2NiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTY3LCAxMzgsIDEzOCwgMTM4LCAxNjgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE2OSwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTc2LCAxNzcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxNzksIDE4MCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAKKyAgICAxODEsIDE4MiwgMTgzLCAxODQsIDEzOCwgMTg1LCAxMzgsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgCisgICAgMTkzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTk0LCAxOTUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTk2LCAxOTcsIDEzOCwgMTM4LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMTM4LCAyMDMsIAorICAgIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCkBAIC03NjcsMzU5ICs3ODUsNDU5IEBACiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMTUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTIsIAotICAgIDEwMSwgMTkzLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxOTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDE5NSwgODQsIDE5NiwgMTk3LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIxNiwgCisgICAgMTAxLCAyMTcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMTgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIxOSwgMTM4LCAyMjAsIDIyMSwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCkBAIC0xMTU1LDggKzEyNzMsOCBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjIyLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTk4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTE5Miw3ICsxMzEwLDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTk4LCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xMjQ0LDcgKzEzNjIsNyBAQAogICAgIDY5LCA1OSwgNjksIDY5LCA3MCwgNjAsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDYyLCA2MiwgNzEsIDYwLCA2MCwgNjAsIAogICAgIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjEsIDYyLCA2MiwgNjAsIDcyLCA3MywgNzMsIDcyLCA3MywgNzMsIDcyLCA2MCwgNjAsIAogICAgIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNDQsIDQ3LCA0NCwgNDcsIDc0LCA1NCwgNDQsIAotICAgIDQ3LCAwLCAwLCA1MSwgNDcsIDQ3LCA0NywgNzUsIDAsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKKyAgICA0NywgMCwgMCwgNTEsIDQ3LCA0NywgNDcsIDc1LCA0NCwgMCwgMCwgMCwgMCwgNTgsIDc2LCAzOCwgNzUsIDM4LCAzOCwgMzgsIAogICAgIDAsIDM4LCAwLCAzOCwgMzgsIDQzLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDAsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKICAgICA0MywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKQEAgLTEyNjcsMTUzICsxMzg1LDE1NCBAQAogICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAogICAgIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDM1LCAKLSAgICAwLCA4MywgODQsIDAsIDAsIDAsIDAsIDg1LCAwLCA4NiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NywgODYsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODcsIAotICAgIDg4LCA4MSwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgCi0gICAgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDQsIDgxLCA4NiwgMTA0LCA5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA3LCAxMDcsIDEwNywgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAwLCA3OCwgNzgsIDEwOSwgMTEwLCAxMTAsIDExMSwgMTEyLCAxMTMsIDI2LCAyNiwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMTQsIDExNSwgMTE2LCAxMTMsIDExNywgMCwgMTEzLCAxMTMsIDExOCwgMTE4LCAKLSAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMjAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTIxLCAKLSAgICAxMjIsIDEyMywgMTE0LCAxMTUsIDExNiwgMTI0LCAxMjUsIDEyNiwgMTI2LCAxMjcsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDg2LCA4MSwgODEsIDg2LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDExMCwgCi0gICAgMTI5LCAxMjksIDExMywgMTE4LCAxMTgsIDEzMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTksIDExOCwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgMTEzLCAxMTgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAxMDgsIDI2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMjAsIDEyMCwgODEsIDgxLCAyNiwgODYsIDgxLCA4MSwgODYsIAotICAgIDExOCwgMTE4LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDExOCwgMTE4LCAKLSAgICAxMTgsIDEzMywgMTMzLCAxMTgsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTcsIDExOCwgMTM0LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgCi0gICAgODYsIDg2LCA4NiwgODEsIDg2LCA4NiwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgCi0gICAgODEsIDgxLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMzcsIDEzNywgMjYsIDEzOCwgMTM4LCAxMzgsIDEzNywgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCAzNSwgMCwgODMsIDg0LCAwLCAwLCAyNiwgMjYsIDg1LCAwLCA4NiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4NywgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODcsIDg4LCA4MSwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk4LCA5OSwgCisgICAgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDQsIDgxLCA4NiwgMTA0LCA5NywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAKLSAgICAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCi0gICAgMTA0LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDg2LCA4NiwgODYsIAotICAgIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCA3OCwgNzgsIDEwOSwgMTEwLCAxMTAsIDExMSwgMTEyLCAxMTMsIDI2LCAKKyAgICAyNiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMTQsIDExNSwgMTE2LCAxMTMsIDExNywgMCwgMTEzLCAxMTMsIAorICAgIDExOCwgMTE4LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMjAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTIxLCAxMjIsIDEyMywgMTE0LCAxMTUsIDExNiwgMTI0LCAxMjUsIDEyNiwgMTI2LCAxMjcsIDg2LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDExMCwgMTI5LCAxMjksIDExMywgMTE4LCAxMTgsIDEzMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTksIDExOCwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgMTEzLCAxMTgsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCAxMDgsIDI2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMjAsIDEyMCwgODEsIDgxLCAyNiwgODYsIAorICAgIDgxLCA4MSwgODYsIDExOCwgMTE4LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAorICAgIDExOCwgMTE4LCAxMTgsIDEzMywgMTMzLCAxMTgsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTcsIDExOCwgMTM0LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCA4MSwgODYsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODEsIDg2LCA4NiwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODEsIDg2LCA4MSwgCisgICAgODYsIDgxLCA4NiwgODEsIDgxLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMzcsIDEzNywgMjYsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzNywgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDEzNywgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKKyAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDg2LCA4NiwgODYsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4LCAwLCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAotICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgCi0gICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgCisgICAgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgCi0gICAgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgCi0gICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgCi0gICAgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCi0gICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCi0gICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgCisgICAgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCAKKyAgICA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIAorICAgIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAwLCAKLSAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIAorICAgIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAKKyAgICAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAotICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgCisgICAgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgCisgICAgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCisgICAgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTQ3LCAwLCAwLCAxNDcsIAorICAgIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAxNDcsIAotICAgIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIAorICAgIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIAorICAgIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgCisgICAgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAorICAgIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgCisgICAgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxNTUsIDAsIDAsIDAsIAorICAgIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgMTM5LCAxNDcsIDE0NywgCisgICAgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIAotICAgIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgCi0gICAgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKICAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIApAQCAtMTUxMywxMCArMTYzMiwxMCBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCiAgICAgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIApAQCAtMTU0NCw3ICsxNjYzLDcgQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgCiAgICAgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCA4NywgODEsIDg2LCAKICAgICAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE1NjcsMjk1ICsxNjg2LDI5NyBAQAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MywgODMsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODIsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgMTQwLCA0OCwgCi0gICAgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzUsIDE0MiwgMTM5LCAxMzksIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTQ2LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ3LCAxMzUsIDE0NywgMTM5LCAxMzksIDE0NywgMTQ3LCAxMzUsIDE0NywgMTc1LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNzUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTc1LCAxNDIsIDEzNSwgCisgICAgMTM1LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDE3NSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAorICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAorICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgCi0gICAgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAKLSAgICAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIAogICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAogICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAKLSAgICA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAKLSAgICAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAKLSAgICA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIAotICAgIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIAotICAgIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgCi0gICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIAotICAgIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIAotICAgIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAKLSAgICAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgCi0gICAgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAKLSAgICAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIAotICAgIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCAKLSAgICA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgCi0gICAgODEsIDgxLCA4MSwgODEsIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAKLSAgICAxNzYsIDE3NiwgODEsIDg2LCA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDI2LCAyNiwgMjIyLCAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAKLSAgICAyMjUsIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIAotICAgIDQ5LCAyMjYsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgCi0gICAgMjI3LCAyMjcsIDM3LCAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgCi0gICAgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIAotICAgIDIyOSwgMjI5LCAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgCisgICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAorICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAorICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKKyAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAorICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAorICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAorICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAorICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCisgICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKKyAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIDgyLCAKKyAgICA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgODEsIDE3NiwgMTc2LCA4NiwgODYsIDg2LCAKKyAgICA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMiwgMjIyLCA0OSwgMjIzLCAKKyAgICAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgMjYsIAorICAgIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgMjIzLCAyMjMsIDI2LCA0OSwgMjYsIAorICAgIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIDE1NiwgCisgICAgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAzNSwgCisgICAgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDIyNywgMjI3LCAyMjcsIAorICAgIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgCisgICAgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDAsIDAsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIAotICAgIDIzMiwgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICAyMzMsIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIAotICAgIDQwLCAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgCi0gICAgNzgsIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAKLSAgICAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAKLSAgICAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIAotICAgIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAKLSAgICAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAotICAgIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgCi0gICAgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAyMzIsIAorICAgIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIDIzMywgCisgICAgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAyMzMsIAorICAgIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIDIyNiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzgsIAorICAgIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAyMzgsIAorICAgIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgCisgICAgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAKKyAgICAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI0MCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCi0gICAgMjQyLCAyNDIsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIAorICAgIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAxNTMsIDE1MywgCiAgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAxNjMsIDE2NCwgCisgICAgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA5LCAxMCwgCisgICAgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKLSAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgCi0gICAgMjI2LCAyMTYsIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAxNjMsIDE2NCwgOSwgMTAsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIAorICAgIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIDIxNiwgNzgsIDc4LCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjQzLCA3OCwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCisgICAgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgCisgICAgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgCisgICAgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgCisgICAgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgCisgICAgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCA0NCwgNDcsIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgMTM4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIAotICAgIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAKKyAgICAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAKKyAgICAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIAorICAgIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAyNDQsIAorICAgIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDUsIDI0NSwgMjQ1LCAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKQEAgLTE4NzAsODEgKzE5OTEsODEgQEAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIAotICAgIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgCi0gICAgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIAotICAgIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAKLSAgICAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAxNzAsIAotICAgIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDAsIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjQ4LCAyNjQsIDI2NSwgCi0gICAgMjUyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIAorICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKKyAgICAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIAorICAgIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgCisgICAgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIAorICAgIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKKyAgICAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDgsIDI0NSwgCisgICAgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIAogICAgIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAyNjEsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI0NywgMjQ4LCAyNDgsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDAsIDAsIDI2MiwgMjYyLCAKKyAgICAyNjMsIDI2MywgMjQ4LCAyNjQsIDI2NSwgMjUyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAorICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAKKyAgICAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgCisgICAgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMCwgMjY2LCAyNjYsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ3LCAyNDgsIAorICAgIDI0OCwgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAorICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKKyAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCisgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAorICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKKyAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCisgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAorICAgIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNjYsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0xOTU3LDY0OSArMjA3OCwxMSBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTQsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDAsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA4MywgODMsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCAKLSAgICA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIAotICAgIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA4MSwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgCi0gICAgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKLSAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAxNzAsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc2LCAyNzUsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAKLSAgICAyNzcsIDI3NywgMjc3LCAyNzcsIDIxNSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAwLCAyNzUsIDI3NSwgMCwgCi0gICAgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NywgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OCwgMjc4LCAKLSAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxOTUsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAyODAsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODIsIDI4MywgMjgxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAKLSAgICAyODQsIDI4NCwgMjg1LCAyODUsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgCi0gICAgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjQ3LCAyNDcsIDI4MiwgMjgzLCAyODEsIDI4MSwgMjgxLCAyODEsIAotICAgIDI4NSwgMjg1LCAyODUsIDI4NiwgMjgxLCAyODYsIDAsIDI4MSwgMjg2LCAyODEsIDI4MSwgMjg0LCAyODcsIDI4OCwgMjg3LCAKLSAgICAyODgsIDI4NywgMjg4LCAyODksIDI4MSwgMjgxLCAyOTAsIDI5MSwgMjkyLCAyOTIsIDI5MywgMCwgMjgxLCAyOTQsIDI4OSwgCi0gICAgMjgxLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTUsIDI5NSwgMjk2LCAyOTcsIDI5NiwgMjk1LCAyOTUsIDI5OCwgCi0gICAgMjk5LCAyOTUsIDMwMCwgMzAxLCAzMDIsIDMwMSwgMzAxLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMSwgMjk1LCAzMDQsIDMwNSwgMzA0LCAyOTUsIDI5NSwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAzMDcsIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIDMwNSwgCi0gICAgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzE0LCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDAsIDI5NywgCi0gICAgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgMzE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAwLCAxMDQsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAwLCAxNDIsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgCi0gICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIwLCAzMjAsIAotICAgIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIAotICAgIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjMsIDMyMywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgCi0gICAgMzI0LCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCAKLSAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIAotICAgIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIAotICAgIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgCi0gICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMTMxLCAwLCAxMzEsIAotICAgIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgCi0gICAgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMyNywgMCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCi0gICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDI0MSwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yNjA3LDM2ICsyMDkwLDg0MyBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAorICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKKyAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA1MSwgNTEsIDAsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgCisgICAgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjcxLCAyNzEsIDQ0LCA0NywgNDQsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NywgNDcsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCA4MCwgODAsIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIAorICAgIDgzLCA4MywgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIAorICAgIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCAKKyAgICA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MSwgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgCisgICAgMjc0LCAyNzQsIDE3MCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAwLCAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc2LCAyNzUsIAorICAgIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDIxNSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMCwgMjc1LCAwLCAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NywgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAKKyAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzksIDE5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODAsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgCisgICAgMjgxLCAyODIsIDI4MywgMjgxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDAsIDAsIDI4MSwgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIAorICAgIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAKKyAgICAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgMjgxLCAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgCisgICAgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIDI4NywgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIAorICAgIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAyODksIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk1LCAyOTUsIAorICAgIDI5NiwgMjk3LCAyOTYsIDI5NSwgMjk1LCAyOTgsIDI5OSwgMjk1LCAzMDAsIDMwMSwgMzAyLCAzMDEsIDMwMSwgMzAzLCAKKyAgICAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDEsIDI5NSwgMzA0LCAzMDUsIDMwNCwgCisgICAgMjk1LCAyOTUsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAorICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKKyAgICAyOTgsIDI5NSwgMjk5LCAzMDcsIDMwOCwgMzA3LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMjk4LCAzMDUsIDI5OSwgMzA1LCAyOTgsIDI5OSwgMzEwLCAzMTEsIDMxMiwgMzEwLCAKKyAgICAzMTAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTQsIDMxNCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAKKyAgICAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAKKyAgICAwLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAwLCAyOTcsIDI5NywgMzA1LCAzMDcsIDMxNSwgMjk3LCAyOTcsIDAsIDMxNiwgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTYsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAzMTgsIAorICAgIDMxOCwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOSwgCisgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAorICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKKyAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCisgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIAorICAgIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4NiwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgMTM1LCA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgMCwgMCwgMCwgMTQyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKKyAgICAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4NiwgCisgICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDMyMywgMzIzLCAzMjMsIAorICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKKyAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDAsIDEzOSwgCisgICAgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MiwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIAorICAgIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCAKKyAgICA4MywgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTQ1LCA4MywgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCA4MywgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgCisgICAgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIAorICAgIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgCisgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIAorICAgIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgMTQ1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAKKyAgICAxNDIsIDEzNSwgODMsIDgzLCA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDUzLCA1MywgNTMsIAorICAgIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAorICAgIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MCwgMTM1LCAKKyAgICAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCAzMjUsIDE3NiwgCisgICAgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyNiwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgCisgICAgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIAorICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNywgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNywgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNywgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDMyNywgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNywgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCisgICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIAorICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAKKyAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDg2LCA4NiwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzEsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAKKyAgICAwLCAxMzEsIDAsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMCwgMTMxLCAKKyAgICAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAKKyAgICAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAzMjksIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKKyAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKKyAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCisgICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAyNDEsIAorICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAKICAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCiAgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAogICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKICAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCiAgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAogICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKQEAgLTI2NDksOCArMjkzOSw4IEBACiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCkBAIC0yNjU5LDcgKzI5NDksNyBAQAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMCwgMCwgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMCwgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTMxNDYsMzU5ICszNDM2LDM1NSBAQAogICAgIDUwLCA0OSwgMjYwODUsIDc3MCwgNTAsIDUwLCAyNjA4NSwgNzcwLCA1MCwgNTEsIDI2MDg1LCA3NzAsIDUwLCA1MiwgCiAgICAgMjYwODUsIDc3MCwgNTAsIDUzLCAyNjA4NSwgNzcwLCA1MCwgNTQsIDI2MDg1LCA3NzAsIDUwLCA1NSwgMjYwODUsIDc3MCwgCiAgICAgNTAsIDU2LCAyNjA4NSwgNzcwLCA1MCwgNTcsIDI2MDg1LCA3NzAsIDUxLCA0OCwgMjYwODUsIDc3MCwgNTEsIDQ5LCAKLSAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1OSwgMjk0LCAyNTksIDMzOSwgMjU2LCAzNTkxMiwgCi0gICAgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgCi0gICAgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgCi0gICAgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgCi0gICAgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgCi0gICAgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgCi0gICAgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgCi0gICAgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgCi0gICAgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgCi0gICAgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgCi0gICAgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgCi0gICAgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgCi0gICAgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgCi0gICAgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgCi0gICAgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgCi0gICAgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgCi0gICAgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgCi0gICAgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgCi0gICAgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgCi0gICAgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgCi0gICAgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgCi0gICAgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgCi0gICAgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgCi0gICAgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgCi0gICAgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgCi0gICAgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgCi0gICAgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgCi0gICAgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgCi0gICAgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgCi0gICAgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgCi0gICAgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgCi0gICAgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgCi0gICAgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgCi0gICAgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgCi0gICAgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgCi0gICAgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgCi0gICAgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgCi0gICAgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgCi0gICAgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgCi0gICAgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgCi0gICAgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgCi0gICAgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgCi0gICAgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgCi0gICAgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgCi0gICAgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgCi0gICAgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgCi0gICAgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgCi0gICAgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgCi0gICAgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgCi0gICAgMjU2LCA0MDM3MiwgMjU2LCAzNzA4NiwgMjU2LCAzODU4MywgMjU2LCAyMDM5OCwgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgCi0gICAgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgCi0gICAgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgCi0gICAgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgCi0gICAgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgCi0gICAgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgCi0gICAgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgCi0gICAgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgCi0gICAgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgCi0gICAgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgCi0gICAgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIAotICAgIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIAotICAgIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIAotICAgIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIAotICAgIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIAotICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIAotICAgIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIAotICAgIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIAotICAgIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIAotICAgIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIAotICAgIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIAotICAgIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIAotICAgIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIAotICAgIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIAotICAgIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIAotICAgIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIAotICAgIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgCi0gICAgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIAotICAgIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAKLSAgICAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgCi0gICAgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCAKLSAgICA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgCi0gICAgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgCi0gICAgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIAotICAgIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAKLSAgICAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIAotICAgIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgCi0gICAgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIAotICAgIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgCi0gICAgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCAKLSAgICA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgCi0gICAgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAxNjU5LCAyNjksIDE2NTksIDI3MCwgCi0gICAgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgCi0gICAgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAKLSAgICAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAKLSAgICAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIAotICAgIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIAotICAgIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgCi0gICAgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAyNzAsIDE2NzEsIDI2NywgMTY3NywgCi0gICAgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAKLSAgICAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAKLSAgICAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgMTcxMSwgMjcwLCAxNzExLCAyNjcsIAotICAgIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgMjY4LCAxNzEzLCAyNjksIDE3MTMsIAotICAgIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAxNzIzLCAyNjksIDE3MjMsIDI3MCwgCi0gICAgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAyNjksIDE3MjksIDI3MCwgMTcyOSwgCi0gICAgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAKLSAgICAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAKLSAgICAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgMTczNiwgMjY3LCAxNjU1LCAyNjcsIAotICAgIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIAotICAgIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIAotICAgIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAKLSAgICAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIAotICAgIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgCi0gICAgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIAotICAgIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCAKLSAgICA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCA1MjMsIDE1NzYsIDE1ODAsIDUyMywgCi0gICAgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAKLSAgICAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIAotICAgIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAKLSAgICAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIAotICAgIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgCi0gICAgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIAotICAgIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgCi0gICAgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCAKLSAgICA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCA1MjMsIDE1OTQsIDE2MDUsIDUyMywgCi0gICAgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAKLSAgICAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIAotICAgIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIDUyMywgMTYwMywgMTU4MSwgNTIzLCAKLSAgICAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIAotICAgIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgCi0gICAgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIAotICAgIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgCi0gICAgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCAKLSAgICA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCA1MjMsIDE2MDcsIDE2MDksIDUyMywgCi0gICAgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAKLSAgICAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIAotICAgIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgCi0gICAgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAKLSAgICAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIAotICAgIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgCi0gICAgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIAotICAgIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgCi0gICAgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCAKLSAgICA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgCi0gICAgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAKLSAgICAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIAotICAgIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAKLSAgICAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIAotICAgIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgCi0gICAgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIAotICAgIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgCi0gICAgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCAKLSAgICA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgCi0gICAgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAKLSAgICAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIAotICAgIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAKLSAgICAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIAotICAgIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgCi0gICAgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIAotICAgIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgCi0gICAgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCAKLSAgICA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgCi0gICAgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAKLSAgICAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIAotICAgIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAKLSAgICAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIAotICAgIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgCi0gICAgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIAotICAgIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgCi0gICAgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCAKLSAgICA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIAotICAgIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgCi0gICAgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCAKLSAgICA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgCi0gICAgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAKLSAgICAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIAotICAgIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAKLSAgICAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIAotICAgIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgCi0gICAgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIAotICAgIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgCi0gICAgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCAKLSAgICA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgCi0gICAgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAKLSAgICAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIAotICAgIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAKLSAgICAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIAotICAgIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgCi0gICAgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAKLSAgICAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAKLSAgICAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAKLSAgICAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAKLSAgICAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAKLSAgICAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAKLSAgICAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAKLSAgICAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAKLSAgICAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAKLSAgICAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAKLSAgICAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAKLSAgICAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAKLSAgICAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAKLSAgICAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKLSAgICAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAKLSAgICAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAKLSAgICAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAKLSAgICAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAKLSAgICAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAKLSAgICAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAKLSAgICAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAKLSAgICAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAKLSAgICAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAKLSAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAKLSAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAKLSAgICAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAKLSAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAKLSAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAKLSAgICAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAKLSAgICAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAKLSAgICAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAKLSAgICAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAKLSAgICAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAKLSAgICAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKLSAgICAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAKLSAgICAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAKLSAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAKLSAgICAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAKLSAgICAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAKLSAgICAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAKLSAgICAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIAotICAgIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIAotICAgIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIAotICAgIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgCi0gICAgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgCi0gICAgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIAotICAgIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgCi0gICAgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIAotICAgIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAKLSAgICAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAKLSAgICAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAKLSAgICAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIAotICAgIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgCi0gICAgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAKLSAgICAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIAotICAgIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIAotICAgIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgCi0gICAgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIAotICAgIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgCi0gICAgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgCi0gICAgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAKLSAgICAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAKLSAgICAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIAotICAgIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIAotICAgIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgCi0gICAgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgCi0gICAgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAKLSAgICAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAKLSAgICAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIAotICAgIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIAotICAgIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgCi0gICAgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgCi0gICAgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAKLSAgICAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAKLSAgICAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIAotICAgIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIAotICAgIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIAotICAgIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAKLSAgICAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgCi0gICAgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgCi0gICAgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgCi0gICAgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgCi0gICAgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgCi0gICAgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgCi0gICAgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgCi0gICAgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgCi0gICAgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgCi0gICAgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIAotICAgIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAKLSAgICAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgCi0gICAgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgCi0gICAgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgCi0gICAgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgCi0gICAgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgCi0gICAgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgCi0gICAgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgCi0gICAgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgCi0gICAgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgCi0gICAgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgCi0gICAgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgCi0gICAgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgCi0gICAgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgCi0gICAgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgCi0gICAgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgCi0gICAgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgCi0gICAgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgCi0gICAgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgCi0gICAgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgCi0gICAgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgCi0gICAgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgCi0gICAgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAKLSAgICAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgCi0gICAgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCAKLSAgICA2OTc5NywgNjk4MTgsIDUxMiwgNjk5MzcsIDY5OTI3LCA1MTIsIDY5OTM4LCA2OTkyNywgNTEyLCAxMTkxMjcsIDExOTE0MSwgCi0gICAgNTEyLCAxMTkxMjgsIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAKLSAgICAxMTkxMzUsIDExOTE1MiwgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIAotICAgIDExOTE0MSwgNTEyLCAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgCi0gICAgNTEyLCAxMTkyMjcsIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCAKLSAgICA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCAKLSAgICA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCAKLSAgICA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCAKLSAgICA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgCi0gICAgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIAotICAgIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAKLSAgICAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIAotICAgIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIAotICAgIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIAotICAgIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIAotICAgIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgCi0gICAgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIAotICAgIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAKLSAgICAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgCi0gICAgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgCi0gICAgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgCi0gICAgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAKLSAgICAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgCisgICAgMjYwODUsIDc3OCwgMTAzLCA5NywgMTA4LCAyNTksIDEwOTgsIDI1OSwgMTEwMCwgMjU5LCA0Mjg2MywgMjU5LCAyOTQsIAorICAgIDI1OSwgMzM5LCAyNTksIDQyNzkxLCAyNTksIDQzODMxLCAyNTksIDYxOSwgMjU5LCA0Mzg1OCwgMjU2LCAzNTkxMiwgMjU2LCAKKyAgICAyNjM1NiwgMjU2LCAzNjU1NCwgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgMjU2LCAKKyAgICA0MDg2MCwgMjU2LCA0MDg2MCwgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgMjU2LCAKKyAgICAyNTA3OCwgMjU2LCAzMDMxMywgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgMjU2LCAKKyAgICAzNzAwNywgMjU2LCAyNzEzOCwgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgMjU2LCAKKyAgICAzNzIyNiwgMjU2LCAzOTQwOSwgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgMjU2LCAKKyAgICAzNDM0OSwgMjU2LCA0MDQ3OCwgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgMjU2LCAKKyAgICAyNTI4OSwgMjU2LCAzMzI0MCwgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgMjU2LCAKKyAgICAyOTQzNiwgMjU2LCAzNzA3MCwgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgMjU2LCAKKyAgICAyNzM0NywgMjU2LCAyOTIwMCwgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgMjU2LCAKKyAgICAzNjMzNSwgMjU2LCAzODcwNiwgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgMjU2LCAKKyAgICAzMjE2MCwgMjU2LCAzMzczNywgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgMjU2LCAKKyAgICAyNDMyNCwgMjU2LCAzMTg0MCwgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgMjU2LCAKKyAgICAzODY0NywgMjU2LCAyMjc0NCwgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgMjU2LCAKKyAgICAzMjA0NywgMjU2LCAzMjMxMSwgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgMjU2LCAKKyAgICAyMDk0MCwgMjU2LCAzMTI2MCwgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgMjU2LCAKKyAgICAyNTI5NSwgMjU2LCAyNzEzOCwgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgMjU2LCAKKyAgICAyOTU3NSwgMjU2LCAzMDA2NCwgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgMjU2LCAKKyAgICAxOTk4MSwgMjU2LCAyNzg1MiwgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgMjU2LCAKKyAgICAzMDQ2NSwgMjU2LCAzMzg2NSwgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgMjU2LCAKKyAgICAyNTM0MiwgMjU2LCAzMzUwOSwgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgMjU2LCAKKyAgICAyMDkzNywgMjU2LCAyNjc1MywgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgMjU2LCAKKyAgICAyMTIzNywgMjU2LCAyMTU3MCwgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgMjU2LCAKKyAgICAzMTAxOCwgMjU2LCAzODMxNywgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgMjU2LCAKKyAgICAyNjMxMCwgMjU2LCAyNzUxMSwgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgMjU2LCAKKyAgICAyNTc1NCwgMjU2LCAyODQ1MSwgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgMjU2LCAKKyAgICAzMjg3OSwgMjU2LCAzNjY0NiwgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgMjU2LCAKKyAgICAyMTE1NSwgMjU2LCAyMTY5MywgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgMjU2LCAKKyAgICAyNDU2NSwgMjU2LCAyNTQ2NywgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgMjU2LCAKKyAgICAyMjI2NSwgMjU2LCAyMzUyNywgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgMjU2LCAKKyAgICAzMjY2NiwgMjU2LCAzMjgzOCwgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgMjU2LCAKKyAgICAyMDM2MywgMjU2LCAzMTE1MCwgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgMjU2LCAKKyAgICAyMDY5OCwgMjU2LCAyMzUzNCwgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgMjU2LCAKKyAgICAzMDI3NCwgMjU2LCAzNDA0NCwgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgMjU2LCAKKyAgICAyMTEyOSwgMjU2LCAyNjQ5MSwgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgMjU2LCAKKyAgICAzMDA0MSwgMjU2LCAzMDgyNywgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgMjU2LCAKKyAgICAzODUyMCwgMjU2LCAyMDUyMywgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgMjU2LCAKKyAgICAyNDkwMCwgMjU2LCAyNjY0NywgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgMjU2LCAKKyAgICAyMzY1MywgMjU2LCAyNjEzMSwgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgMjU2LCAKKyAgICAzMDE3OCwgMjU2LCAzMjYzMywgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgMjU2LCAKKyAgICAyMTMxMSwgMjU2LCAyODM0NiwgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgMjU2LCAKKyAgICAzODU2MywgMjU2LCA0MDAyMywgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgMjU2LCAKKyAgICAzMTQzNSwgMjU2LCAzMTUyMCwgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgMjU2LCAKKyAgICAyMDE2MCwgMjU2LCAzMzU5MCwgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgMjU2LCAKKyAgICAzMTk1OCwgMjU2LCAyMzQyOSwgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgMjU2LCAKKyAgICAzODQ3NywgMjU2LCAzNTIxMSwgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgMjU2LCAKKyAgICAyNjIyOCwgMjU2LCAyMDk1OCwgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgMjU2LCAKKyAgICAzMTA3NywgMjU2LCAzMTExOSwgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgMjU2LCAKKyAgICAzNTU3NiwgMjU2LCAzNjkyMCwgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgMjU2LCAKKyAgICA0MDM3MiwgMjU2LCAzNzA4NiwgMjU2LCAzODU4MywgMjU2LCAyMDM5OCwgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgMjU2LCAKKyAgICAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgMjU2LCAKKyAgICAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgMjU2LCAKKyAgICAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgMjU2LCAKKyAgICAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgMjU2LCAKKyAgICAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgMjU2LCAKKyAgICAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgMjU2LCAKKyAgICAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgMjU2LCAKKyAgICAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgMjU2LCAKKyAgICAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgMjU2LCAKKyAgICAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIDI1NiwgCisgICAgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIDI1NiwgCisgICAgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIDI1NiwgCisgICAgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIDI1NiwgCisgICAgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIDI1NiwgCisgICAgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIDI1NiwgCisgICAgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIDI1NiwgCisgICAgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIDI1NiwgCisgICAgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIDI1NiwgCisgICAgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIDI1NiwgCisgICAgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIDI1NiwgCisgICAgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIDI1NiwgCisgICAgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIDI1NiwgCisgICAgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIDI1NiwgCisgICAgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIDI1NiwgCisgICAgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIDI1NiwgCisgICAgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgMjU2LCAKKyAgICAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIDE1NDgzMiwgCisgICAgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAxMDUsIDUxNCwgCisgICAgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgMTE2LCA1MTQsIAorICAgIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCA1MTQsIDE0MDYsIAorICAgIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgMTUwNiwgMjYyLCAKKyAgICAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgMjYyLCAxNTEyLCAKKyAgICAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIDY0MzI5LCAxNDczLCAKKyAgICA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAxNDg4LCAxNDY4LCA1MTIsIAorICAgIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIDE0NjgsIDUxMiwgMTQ5MywgCisgICAgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgNTEyLCAxNDk4LCAxNDY4LCAKKyAgICA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIDE1MDQsIDE0NjgsIDUxMiwgCisgICAgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgMTQ2OCwgNTEyLCAxNTExLCAKKyAgICAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCA1MTIsIDE0OTMsIDE0NjUsIAorICAgIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgMTQ4OCwgMTUwMCwgMjY3LCAKKyAgICAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAxNjU5LCAyNjksIDE2NTksIDI3MCwgMTY1OSwgMjY3LCAxNjYyLCAKKyAgICAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgMjY5LCAxNjY0LCAyNzAsIAorICAgIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAxNjYzLCAyNjgsIDE2NjMsIAorICAgIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAyNzAsIDE2NTcsIDI2NywgCisgICAgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIDE3MDIsIDI2OSwgMTcwMiwgCisgICAgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIDI2NywgMTY2NywgMjY4LCAKKyAgICAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgMTY3MCwgMjcwLCAxNjcwLCAKKyAgICAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAyNzAsIDE2NzEsIDI2NywgMTY3NywgMjY4LCAxNjc3LCAyNjcsIAorICAgIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAxNjcyLCAyNjcsIDE2ODgsIAorICAgIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAyNjksIDE3MDUsIDI3MCwgCisgICAgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgMTcxMSwgMjcwLCAxNzExLCAyNjcsIDE3MTUsIDI2OCwgMTcxNSwgCisgICAgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgMjY4LCAxNzEzLCAyNjksIDE3MTMsIDI3MCwgMTcxMywgMjY3LCAKKyAgICAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAxNzIzLCAyNjksIDE3MjMsIDI3MCwgMTcyMywgMjY3LCAxNzI4LCAKKyAgICAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAyNjksIDE3MjksIDI3MCwgMTcyOSwgMjY3LCAxNzI2LCAyNjgsIAorICAgIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAxNzQ3LCAyNjgsIDE3NDcsIAorICAgIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAyNjgsIDE3MzUsIDI2NywgCisgICAgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgMTczNiwgMjY3LCAxNjU1LCAyNjcsIDE3MzksIDI2OCwgMTczOSwgCisgICAgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIDI2OCwgMTc0NCwgMjY5LCAKKyAgICAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIDUyNCwgMTU3NCwgMTU3NSwgCisgICAgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAxNTc0LCAxNjA4LCA1MjMsIAorICAgIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIDE3MzQsIDUyMywgMTU3NCwgCisgICAgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgNTI1LCAxNTc0LCAxNzQ0LCAKKyAgICA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIDE3NDAsIDI2OCwgMTc0MCwgCisgICAgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCA1MjMsIDE1NzQsIDE2MDUsIAorICAgIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCA1MjMsIDE1NzYsIDE1ODAsIDUyMywgMTU3NiwgMTU4MSwgNTIzLCAKKyAgICAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAxNjEwLCA1MjMsIDE1NzgsIAorICAgIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIDUyMywgMTU3OCwgMTYwOSwgCisgICAgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAxNTc5LCAxNjA5LCA1MjMsIAorICAgIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIDE1ODAsIDUyMywgMTU4MSwgCisgICAgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgNTIzLCAxNTg3LCAxNTgwLCAKKyAgICA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIDE1ODksIDE1ODEsIDUyMywgCisgICAgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgMTU4MiwgNTIzLCAxNTkwLCAKKyAgICAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCA1MjMsIDE1OTMsIDE1ODAsIAorICAgIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCA1MjMsIDE1OTQsIDE2MDUsIDUyMywgMTYwMSwgMTU4MCwgNTIzLCAKKyAgICAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAxNjA5LCA1MjMsIDE2MDEsIAorICAgIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIDUyMywgMTYwMiwgMTYxMCwgCisgICAgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIDUyMywgMTYwMywgMTU4MSwgNTIzLCAxNjAzLCAxNTgyLCA1MjMsIAorICAgIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIDE2MTAsIDUyMywgMTYwNCwgCisgICAgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgNTIzLCAxNjA0LCAxNjA5LCAKKyAgICA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIDE2MDUsIDE1ODIsIDUyMywgCisgICAgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgMTU4MCwgNTIzLCAxNjA2LCAKKyAgICAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCA1MjMsIDE2MDYsIDE2MTAsIAorICAgIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCA1MjMsIDE2MDcsIDE2MDksIDUyMywgMTYwNywgMTYxMCwgNTIzLCAKKyAgICAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAxNjA1LCA1MjMsIDE2MTAsIAorICAgIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIDUyMywgMTYwOSwgMTY0OCwgCisgICAgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgMTYxNywgNzc5LCAzMiwgCisgICAgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAxNTc0LCAxNTg1LCAKKyAgICA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIDE2MDksIDUyNCwgCisgICAgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgNTI0LCAxNTc2LCAKKyAgICAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIDE1NzgsIDE1ODYsIAorICAgIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgMTYxMCwgNTI0LCAKKyAgICAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCA1MjQsIDE1NzksIAorICAgIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgMTYwMiwgMTYwOSwgCisgICAgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAxNjA1LCA1MjQsIAorICAgIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIDUyNCwgMTYwNCwgCisgICAgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAxNjA2LCAxNTg2LCAKKyAgICA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIDE2MTAsIDUyNCwgCisgICAgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgNTI0LCAxNjEwLCAKKyAgICAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIDE1NzQsIDE1ODEsIAorICAgIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgMTU4MCwgNTI1LCAKKyAgICAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCA1MjUsIDE1NzgsIAorICAgIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgMTU3OCwgMTYwNywgCisgICAgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAxNTgwLCA1MjUsIAorICAgIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIDUyNSwgMTU4NywgCisgICAgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAxNTg5LCAxNTgyLCAKKyAgICA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIDE1ODIsIDUyNSwgCisgICAgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgNTI1LCAxNTkzLCAKKyAgICAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIDE2MDEsIDE1ODEsIAorICAgIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgMTYwNSwgNTI1LCAKKyAgICAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCA1MjUsIDE2MDMsIAorICAgIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgMTYwNCwgMTYwNSwgCisgICAgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAxNTgyLCA1MjUsIAorICAgIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIDUyNSwgMTYwNiwgCisgICAgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAxNjA3LCAxNjQ4LCAKKyAgICA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIDE2MDUsIDUyNSwgCisgICAgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgNTI2LCAxNTc2LCAKKyAgICAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIDE1NzksIDE2MDcsIAorICAgIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgMTYwNywgNTI2LCAKKyAgICAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCA1MjYsIDE2MDYsIAorICAgIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIDc4MiwgMTYwMCwgCisgICAgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgMTYxMCwgNTIzLCAKKyAgICAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCA1MjMsIDE1ODcsIAorICAgIDE2MDksIDUyMywgMTU4NywgMTYxMCwgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgMTU4MSwgMTYwOSwgCisgICAgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAxNjA5LCA1MjMsIAorICAgIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIDUyMywgMTU5MCwgCisgICAgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAxNTg4LCAxNjA1LCAKKyAgICA1MjMsIDE1ODgsIDE1ODUsIDUyMywgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIDE1ODUsIDUyNCwgCisgICAgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgNTI0LCAxNTk0LCAKKyAgICAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIDE1ODgsIDE2MDksIAorICAgIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgMTYwOSwgNTI0LCAKKyAgICAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCA1MjQsIDE1ODksIAorICAgIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgMTU4OCwgMTU4MSwgCisgICAgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAxNTg1LCA1MjQsIAorICAgIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIDUyNSwgMTU4OCwgCisgICAgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAxNTkxLCAxNjA1LCAKKyAgICA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIDE1ODAsIDUyNiwgCisgICAgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgNTI0LCAxNTc1LCAKKyAgICAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIAorICAgIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAxNjA1LCA3ODEsIAorICAgIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgyLCA3ODAsIAorICAgIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAxNjEwLCA3ODAsIAorICAgIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAxNTgxLCA3ODAsIAorICAgIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIAorICAgIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODAsIAorICAgIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIAorICAgIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAxNjEwLCA3ODAsIAorICAgIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODEsIAorICAgIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODEsIAorICAgIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIAorICAgIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODAsIAorICAgIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA5LCA3ODAsIAorICAgIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAxNjA5LCA3ODAsIAorICAgIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODAsIAorICAgIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjEwLCA3ODAsIAorICAgIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIAorICAgIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIAorICAgIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAxNjA1LCA3ODAsIAorICAgIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAxNjA1LCA3ODEsIAorICAgIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAxNTgyLCA3ODEsIAorICAgIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAxNjA1LCA3ODAsIAorICAgIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODAsIAorICAgIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAxNjA5LCA3ODAsIAorICAgIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAxNjEwLCA3ODAsIAorICAgIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAxNjEwLCA3ODAsIAorICAgIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAxNjA5LCA3ODAsIAorICAgIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjA5LCA3ODAsIAorICAgIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAxNjEwLCA3ODAsIAorICAgIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAxNjEwLCA3ODAsIAorICAgIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAxNjEwLCA3ODAsIAorICAgIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAxNjEwLCA3ODEsIAorICAgIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjEwLCA3ODAsIAorICAgIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAxNjEwLCA3ODEsIAorICAgIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIAorICAgIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAxNjEwLCA3ODAsIAorICAgIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAxNjEwLCA3ODEsIAorICAgIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIAorICAgIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAxNzQ2LCA3NzksIAorICAgIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIDE2MDMsIDE1NzYsIAorICAgIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIDE2MDUsIDEwMzUsIAorICAgIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIDE2MDgsIDE1ODcsIAorICAgIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgMzIsIDE1NzUsIAorICAgIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgCisgICAgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIDE1ODUsIDE3NDAsIAorICAgIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgNTksIDI2NSwgMzMsIAorICAgIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIDgyMTIsIDI2NSwgCisgICAgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAyNjUsIDEyMzA4LCAKKyAgICAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAyNjUsIDEyMjk2LCAKKyAgICAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAyNjUsIDkxLCAyNjUsIAorICAgIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIDI1OCwgOTUsIDI1OCwgCisgICAgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgNjMsIDI3MSwgMzMsIAorICAgIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAyNzEsIDEyMzA5LCAKKyAgICAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIDYyLCAyNzEsIDYxLCAKKyAgICAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIDE2MDAsIDE2MTEsIDUyMywgCisgICAgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgNTIzLCAzMiwgMTYxNSwgCisgICAgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIDE2MTcsIDUyNiwgCisgICAgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgMTU3MCwgMjY4LCAKKyAgICAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgMjY4LCAxNTczLCAKKyAgICAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAxNTc1LCAyNjcsIAorICAgIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAyNjcsIDE1NzgsIAorICAgIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIDE1NzksIDI3MCwgCisgICAgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIDI2OCwgMTU4MSwgCisgICAgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgMTU4MiwgMjY3LCAKKyAgICAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgMjY3LCAxNTg2LCAKKyAgICAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAxNTg4LCAyNjgsIAorICAgIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAyNzAsIDE1ODksIAorICAgIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIDE1OTEsIDI2OSwgCisgICAgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIDI2NywgMTU5MywgCisgICAgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgMTU5NCwgMjcwLCAKKyAgICAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgMjY4LCAxNjAyLCAKKyAgICAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAxNjAzLCAyNjcsIAorICAgIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAyNjksIDE2MDUsIAorICAgIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIDE2MDcsIDI2OCwgCisgICAgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIDI2OCwgMTYwOSwgCisgICAgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIDUyNCwgMTYwNCwgCisgICAgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAxNjA0LCAxNTczLCAKKyAgICA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgMjY0LCAzNiwgCisgICAgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgMjY0LCA0NCwgCisgICAgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgMjY0LCA1MiwgCisgICAgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgMjY0LCA2MCwgCisgICAgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgMjY0LCA2OCwgCisgICAgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgMjY0LCA3NiwgCisgICAgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgMjY0LCA4NCwgCisgICAgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgMjY0LCA5MiwgCisgICAgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgMjY0LCAxMDAsIAorICAgIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIDI2NCwgMTA3LCAKKyAgICAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAyNjQsIDExNCwgCisgICAgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgMjY0LCAxMjEsIAorICAgIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgMjY0LCAxMDYzMCwgCisgICAgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgMjcyLCAxMjUzMCwgCisgICAgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgMjcyLCAxMjUxNSwgCisgICAgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgMjcyLCAxMjQ1MiwgCisgICAgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgMjcyLCAxMjQ2MywgCisgICAgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgMjcyLCAxMjQ3NSwgCisgICAgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgMjcyLCAxMjQ4OCwgCisgICAgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgMjcyLCAxMjQ5NSwgCisgICAgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgMjcyLCAxMjUxMSwgCisgICAgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgMjcyLCAxMjUyMCwgCisgICAgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgMjcyLCAxMjUyNywgCisgICAgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgMjcyLCAxMjU5NCwgCisgICAgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgMjcyLCAxMjYwMCwgCisgICAgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgMjcyLCAxMjYwNiwgCisgICAgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgMjcyLCAxMjYxMiwgCisgICAgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgMjcyLCAxMjYxOCwgCisgICAgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgMjcyLCAxMjYyNCwgCisgICAgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgMjcyLCAxMjYzMCwgCisgICAgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgMjcyLCAxMjYzNiwgCisgICAgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgMjcyLCAxMjY0MiwgCisgICAgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAyNjQsIDE2NSwgCisgICAgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgODU5NSwgMjcyLCAKKyAgICA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCA2OTc5NywgNjk4MTgsIAorICAgIDUxMiwgNjk5MzcsIDY5OTI3LCA1MTIsIDY5OTM4LCA2OTkyNywgNTEyLCA3MDQ3MSwgNzA0NjIsIDUxMiwgNzA0NzEsIAorICAgIDcwNDg3LCA1MTIsIDcwODQxLCA3MDg0MiwgNTEyLCA3MDg0MSwgNzA4MzIsIDUxMiwgNzA4NDEsIDcwODQ1LCA1MTIsIAorICAgIDcxMDk2LCA3MTA4NywgNTEyLCA3MTA5NywgNzEwODcsIDUxMiwgMTE5MTI3LCAxMTkxNDEsIDUxMiwgMTE5MTI4LCAKKyAgICAxMTkxNDEsIDUxMiwgMTE5MTM1LCAxMTkxNTAsIDUxMiwgMTE5MTM1LCAxMTkxNTEsIDUxMiwgMTE5MTM1LCAxMTkxNTIsIAorICAgIDUxMiwgMTE5MTM1LCAxMTkxNTMsIDUxMiwgMTE5MTM1LCAxMTkxNTQsIDUxMiwgMTE5MjI1LCAxMTkxNDEsIDUxMiwgCisgICAgMTE5MjI2LCAxMTkxNDEsIDUxMiwgMTE5MjI3LCAxMTkxNTAsIDUxMiwgMTE5MjI4LCAxMTkxNTAsIDUxMiwgMTE5MjI3LCAKKyAgICAxMTkxNTEsIDUxMiwgMTE5MjI4LCAxMTkxNTEsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIAorICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAorICAgIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIAorICAgIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIAorICAgIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAKKyAgICAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgCisgICAgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIAorICAgIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgCisgICAgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgCisgICAgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgCisgICAgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIAorICAgIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAKICAgICAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgCiAgICAgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIAotICAgIDI2MiwgNjUsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNzEsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzgsIDI2MiwgNzksIAotICAgIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIAotICAgIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMiwgMjYyLCAKLSAgICAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgCi0gICAgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIAotICAgIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgCi0gICAgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgCi0gICAgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgCi0gICAgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgCi0gICAgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAKLSAgICAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgCi0gICAgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIAotICAgIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAKLSAgICAyNjIsIDcxLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAKKyAgICAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAKKyAgICAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAKKyAgICAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAKKyAgICAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgCisgICAgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIAorICAgIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAKKyAgICAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIAorICAgIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNzEsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIAogICAgIDI2MiwgODEsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIAotICAgIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIAotICAgIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAKLSAgICAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgCi0gICAgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2OCwgCi0gICAgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCi0gICAgMjYyLCA3OSwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgCi0gICAgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgCi0gICAgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIAotICAgIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAKLSAgICAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAKLSAgICAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAKLSAgICAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAKLSAgICAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAKKyAgICAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDIsIDI2MiwgMTA0LCAyNjIsIAorICAgIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMiwgMjYyLCAKKyAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCisgICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIAorICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAorICAgIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIAorICAgIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIAorICAgIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAKKyAgICAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgCisgICAgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIAorICAgIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgCisgICAgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgCisgICAgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5NywgCisgICAgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIAorICAgIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAKKyAgICAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgCisgICAgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAyNjIsIDY5LCAKKyAgICAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc5LCAKKyAgICAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDk3LCAKICAgICAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgCiAgICAgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIAogICAgIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAKQEAgLTM1MzYsMzMgKzM4MjIsMTUgQEAKICAgICAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgCiAgICAgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIAogICAgIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAKLSAgICAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgCi0gICAgMzA1LCAyNjIsIDU2NywgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIAotICAgIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCAKLSAgICA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIAotICAgIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgCi0gICAgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIAotICAgIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCAKLSAgICA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgCi0gICAgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgCi0gICAgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgCi0gICAgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIAotICAgIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAKLSAgICAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIAotICAgIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIDk0OCwgMjYyLCA5NDksIDI2MiwgCi0gICAgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIAotICAgIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCAKLSAgICA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIAotICAgIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDkxMywgMjYyLCAKLSAgICA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgCi0gICAgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIAotICAgIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgCi0gICAgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCAKLSAgICA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgCi0gICAgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIAotICAgIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCAKLSAgICA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIAotICAgIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCAKKyAgICAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIAorICAgIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIAorICAgIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIAorICAgIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIAorICAgIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgCisgICAgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIAorICAgIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAKKyAgICAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCAzMDUsIDI2MiwgCisgICAgNTY3LCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIAogICAgIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCAKICAgICA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIAogICAgIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgCkBAIC0zNTc4LDMzOSArMzg0Niw1NDYgQEAKICAgICA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgCiAgICAgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIAogICAgIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIAotICAgIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5ODgsIDI2MiwgOTg5LCAyNjIsIAotICAgIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIAotICAgIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIAotICAgIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIAotICAgIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIAotICAgIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIAotICAgIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIAotICAgIDU2LCAyNjIsIDU3LCAyNjIsIDE1NzUsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAKLSAgICAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAKLSAgICAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIAotICAgIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIAotICAgIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTcyMiwgMjYyLCAxNjk3LCAyNjIsIDE2NDcsIDI2MiwgCi0gICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgCi0gICAgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAKLSAgICAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKLSAgICAyNjIsIDE1ODAsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAotICAgIDE1OTMsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAotICAgIDI2MiwgMTcyMiwgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgCi0gICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCi0gICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAKLSAgICAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTY5NywgMjYyLCAxNTc1LCAKLSAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDcsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIAotICAgIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIAotICAgIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgCi0gICAgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgCi0gICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAKLSAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKLSAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIAotICAgIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCA1MTQsIDQ4LCA0NiwgCi0gICAgNTE0LCA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCAKLSAgICA0NCwgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgCi0gICAgNzcwLCA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIAotICAgIDQwLCA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIAotICAgIDc0LCA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIAotICAgIDQxLCA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIAotICAgIDc3MCwgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCAKLSAgICA0MCwgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIAotICAgIDEyMzA4LCA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCA1MTksIDg3LCA5MCwgMjY2LCA2NSwgCi0gICAgMjY2LCA2NiwgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCA3MSwgMjY2LCA3MiwgMjY2LCA3MywgCi0gICAgMjY2LCA3NCwgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgCi0gICAgMjY2LCA4MiwgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCA4NywgMjY2LCA4OCwgMjY2LCA4OSwgCi0gICAgMjY2LCA5MCwgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCAKLSAgICA4NiwgNTIyLCA4NywgNjcsIDUxNSwgNzcsIDY3LCA1MTUsIDc3LCA2OCwgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAotICAgIDEyMzYzLCA1MjIsIDEyNDY3LCAxMjQ2NywgMjY2LCAxMjQ2OSwgMjY2LCAyNTE2MywgMjY2LCAyMzM4MywgMjY2LCAyMTQ1MiwgCi0gICAgMjY2LCAxMjQ4NywgMjY2LCAyMDEwOCwgMjY2LCAyMjgxMCwgMjY2LCAzNTI5OSwgMjY2LCAyMjgyNSwgMjY2LCAyMDEzMiwgCi0gICAgMjY2LCAyNjE0NCwgMjY2LCAyODk2MSwgMjY2LCAyNjAwOSwgMjY2LCAyMTA2OSwgMjY2LCAyNDQ2MCwgMjY2LCAyMDg3NywgCi0gICAgMjY2LCAyNjAzMiwgMjY2LCAyMTAyMSwgMjY2LCAzMjA2NiwgMjY2LCAyOTk4MywgMjY2LCAzNjAwOSwgMjY2LCAyMjc2OCwgCi0gICAgMjY2LCAyMTU2MSwgMjY2LCAyODQzNiwgMjY2LCAyNTIzNywgMjY2LCAyNTQyOSwgMjY2LCAxOTk2OCwgMjY2LCAxOTk3NywgCi0gICAgMjY2LCAzNjkzOCwgMjY2LCAyNDAzOCwgMjY2LCAyMDAxMywgMjY2LCAyMTQ5MSwgMjY2LCAyNTM1MSwgMjY2LCAzNjIwOCwgCi0gICAgMjY2LCAyNTE3MSwgMjY2LCAzMTEwNSwgMjY2LCAzMTM1NCwgMjY2LCAyMTUxMiwgMjY2LCAyODI4OCwgMjY2LCAyNjM3NywgCi0gICAgMjY2LCAyNjM3NiwgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCAKLSAgICA3NzAsIDEyMzA4LCAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIAotICAgIDEyMzA5LCA3NzAsIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgCi0gICAgMzA0MjMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAKLSAgICAyNDQ3MSwgMjYzLCAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgCi0gICAgMjAzMjAsIDI1NiwgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgCi0gICAgMjA3MTEsIDI1NiwgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIAotICAgIDIwODM2LCAyNTYsIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAKLSAgICAxMzI0MjcsIDI1NiwgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgCi0gICAgMTY4NDE1LCAyNTYsIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIAotICAgIDIxMTA2LCAyNTYsIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIAotICAgIDIxMjQyLCAyNTYsIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIAotICAgIDIxMzM4LCAyNTYsIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIAotICAgIDEzMzY3NiwgMjU2LCAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgCi0gICAgMjE0ODksIDI1NiwgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgCi0gICAgMjE2NjYsIDI1NiwgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgCi0gICAgMjE4OTIsIDI1NiwgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgCi0gICAgMjIwMjIsIDI1NiwgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgCi0gICAgMjI0NzgsIDI1NiwgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgCi0gICAgMjI3MDAsIDI1NiwgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIAotICAgIDIyODE4LCAyNTYsIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgCi0gICAgMjMwNzksIDI1NiwgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgCi0gICAgMjMzNTgsIDI1NiwgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIAotICAgIDIzNTM5LCAyNTYsIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAKLSAgICAxNDIwOSwgMjU2LCAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgCi0gICAgMjM4NzUsIDI1NiwgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIAotICAgIDI0MDM0LCAyNTYsIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIAotICAgIDE0NDM0LCAyNTYsIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAKLSAgICAyNDI2NiwgMjU2LCAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgCi0gICAgMjU2LCAyNDM1NCwgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAKLSAgICAyNTYsIDI0NDI3LCAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAKLSAgICAyNTYsIDI0NzA1LCAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgCi0gICAgMjU2LCAyNDkwNCwgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgCi0gICAgMjU2LCAyNTAxMCwgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgCi0gICAgMjU2LCAyNTEwNCwgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgCi0gICAgMjU2LCAxNDIwOTIsIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIAotICAgIDI1NiwgMTQyMzIxLCAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAKLSAgICAyNTYsIDI1NzI2LCAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAKLSAgICAyNTYsIDE0MzM3MCwgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgCi0gICAgMjU2LCAxNTExMiwgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgCi0gICAgMjU2LCAzMjk0MSwgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgCi0gICAgMjU2LCAyNjQ1MSwgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIAotICAgIDI1NiwgMjY3NTcsIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAKLSAgICAyNTYsIDI2OTQ2LCAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgCi0gICAgMjU2LCAxNTM4NCwgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIAotICAgIDI1NiwgMjc1NTEsIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAKLSAgICAxNDYxNzAsIDI1NiwgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIAotICAgIDI3OTI2LCAyNTYsIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIAotICAgIDI4MDM3LCAyNTYsIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAKLSAgICAyODM2MywgMjU2LCAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIAotICAgIDE0NzM0MiwgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAKLSAgICAyODc0NiwgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgCi0gICAgMTQ4MDY3LCAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAKLSAgICAxNDkwMDAsIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgCi0gICAgMjU2LCAyOTU3OSwgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgCi0gICAgMjU2LCAyOTc4OCwgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgCi0gICAgMjU2LCAxNTA1ODIsIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAKLSAgICAzMDIyNCwgMjU2LCAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgCi0gICAgMjU2LCAzMDQ1MiwgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgCi0gICAgMzA0OTQsIDI1NiwgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgCi0gICAgMTY0NTQsIDI1NiwgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIAotICAgIDE2NjExLCAyNTYsIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAKLSAgICAyNTYsIDMxMjExLCAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgCi0gICAgMjU2LCAxNTQyNzksIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAKLSAgICAzMTY4NiwgMjU2LCAzMTY4OSwgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgCi0gICAgMzE5NzYsIDI1NiwgMzE5NzEsIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIAotICAgIDMyMTk5LCAyNTYsIDMyMjU4LCAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgCi0gICAgMTcyNDEsIDI1NiwgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAKLSAgICAzMjc3MywgMjU2LCAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgCi0gICAgMjU2LCAxNDQyMjMsIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIAotICAgIDI1NiwgMjMyMjEsIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIAotICAgIDMzMjgxLCAyNTYsIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIAotICAgIDMzNDM3LCAyNTYsIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIAotICAgIDE1ODUyNCwgMjU2LCAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAKLSAgICAzMzcyNSwgMjU2LCAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAKLSAgICAzMzc1NiwgMjU2LCAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgCi0gICAgMjU2LCAzNDAzNSwgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAKLSAgICAyNTYsIDE3NzYxLCAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIAotICAgIDI1NiwgMzQ0MDcsIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIAotICAgIDI1NiwgMzQ2ODEsIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIAotICAgIDI1NiwgMzQ4MTcsIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAKLSAgICAyNTYsIDM1MDM4LCAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIAotICAgIDI1NiwgMTgxMTAsIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIAotICAgIDI1NiwgMTYyOTg0LCAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgCi0gICAgMjU2LCAxMzMxMjQsIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAKLSAgICAyNTYsIDM2NjY0LCAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIAotICAgIDI1NiwgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAKLSAgICAyNTYsIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgCi0gICAgMjU2LCAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAKLSAgICAyNTYsIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIAotICAgIDI1NiwgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgCi0gICAgMjU2LCAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgCi0gICAgMjU2LCAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIAotICAgIDI1NiwgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgCi0gICAgMTcyNjg5LCAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIAotICAgIDQwNzE5LCAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCisgICAgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgCisgICAgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIAorICAgIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCAKKyAgICA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIAorICAgIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCA5NDgsIDI2MiwgCisgICAgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIAorICAgIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCAKKyAgICA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgCisgICAgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCAKKyAgICA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCA5MTksIDI2MiwgCisgICAgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgOTI2LCAyNjIsIAorICAgIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCA5MzMsIDI2MiwgCisgICAgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIDk0NiwgMjYyLCAKKyAgICA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgCisgICAgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIAorICAgIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCAKKyAgICA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgCisgICAgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCAKKyAgICA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgCisgICAgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCAKKyAgICA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIAorICAgIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIDk0OCwgMjYyLCA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCAKKyAgICA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgCisgICAgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIAorICAgIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIAorICAgIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDk4OCwgMjYyLCA5ODksIDI2MiwgNDgsIDI2MiwgCisgICAgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgCisgICAgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgCisgICAgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgCisgICAgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgCisgICAgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgCisgICAgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgCisgICAgNTcsIDI2MiwgMTU3NSwgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIAorICAgIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgCisgICAgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgCisgICAgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAKKyAgICAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNzIyLCAyNjIsIDE2OTcsIDI2MiwgMTY0NywgMjYyLCAxNTc2LCAKKyAgICAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIAorICAgIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIAorICAgIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIDI2MiwgCisgICAgMTU4MCwgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCisgICAgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgMjYyLCAKKyAgICAxNzIyLCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAKKyAgICAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIAorICAgIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIAorICAgIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNjk3LCAyNjIsIDE1NzUsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwNywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgCisgICAgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAKKyAgICAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAKKyAgICAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIAorICAgIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIAorICAgIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgCisgICAgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgCisgICAgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDUxNCwgNDgsIDQ2LCA1MTQsIAorICAgIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIDQ0LCAKKyAgICA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCA3NzAsIAorICAgIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgNDAsIAorICAgIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgNzQsIAorICAgIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgNDEsIAorICAgIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgNzcwLCAKKyAgICA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIDQwLCAKKyAgICA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgMTIzMDgsIAorICAgIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAyNjYsIDY2LCAKKyAgICAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAyNjYsIDc0LCAKKyAgICAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAyNjYsIDgyLCAKKyAgICAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAyNjYsIDkwLCAKKyAgICA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIDg2LCA1MjIsIAorICAgIDg3LCA2NywgNTE1LCA3NywgNjcsIDUxNSwgNzcsIDY4LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgMTIzNjMsIDUyMiwgCisgICAgMTI0NjcsIDEyNDY3LCAyNjYsIDEyNDY5LCAyNjYsIDI1MTYzLCAyNjYsIDIzMzgzLCAyNjYsIDIxNDUyLCAyNjYsIDEyNDg3LCAKKyAgICAyNjYsIDIwMTA4LCAyNjYsIDIyODEwLCAyNjYsIDM1Mjk5LCAyNjYsIDIyODI1LCAyNjYsIDIwMTMyLCAyNjYsIDI2MTQ0LCAKKyAgICAyNjYsIDI4OTYxLCAyNjYsIDI2MDA5LCAyNjYsIDIxMDY5LCAyNjYsIDI0NDYwLCAyNjYsIDIwODc3LCAyNjYsIDI2MDMyLCAKKyAgICAyNjYsIDIxMDIxLCAyNjYsIDMyMDY2LCAyNjYsIDI5OTgzLCAyNjYsIDM2MDA5LCAyNjYsIDIyNzY4LCAyNjYsIDIxNTYxLCAKKyAgICAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAyNjYsIDM2OTM4LCAKKyAgICAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAyNjYsIDI1MTcxLCAKKyAgICAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAyNjYsIDI2Mzc2LCAKKyAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIDc3MCwgMTIzMDgsIAorICAgIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgMTIzMDksIDc3MCwgCisgICAgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAzMDQyMywgMTIzMDksIAorICAgIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIDI0NDcxLCAyNjMsIAorICAgIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAyMDMyMCwgMjU2LCAKKyAgICAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAyMDcxMSwgMjU2LCAKKyAgICAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgMjA4MzYsIDI1NiwgCisgICAgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIDEzMjQyNywgMjU2LCAKKyAgICAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAxNjg0MTUsIDI1NiwgCisgICAgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgMjExMDYsIDI1NiwgCisgICAgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEyNDIsIDI1NiwgCisgICAgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgMjEzMzgsIDI1NiwgCisgICAgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMTMzNjc2LCAyNTYsIAorICAgIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAyMTQ4OSwgMjU2LCAKKyAgICAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAyMTY2NiwgMjU2LCAKKyAgICAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAyMTg5MiwgMjU2LCAKKyAgICAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAyMjAyMiwgMjU2LCAKKyAgICAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAyMjQ3OCwgMjU2LCAKKyAgICAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAyMjcwMCwgMjU2LCAKKyAgICAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgMjI4MTgsIDI1NiwgCisgICAgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAyMzA3OSwgMjU2LCAKKyAgICAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAyMzM1OCwgMjU2LCAKKyAgICAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgMjM1MzksIDI1NiwgCisgICAgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIDE0MjA5LCAyNTYsIAorICAgIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAyMzg3NSwgMjU2LCAKKyAgICAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgMjQwMzQsIDI1NiwgCisgICAgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgMTQ0MzQsIDI1NiwgCisgICAgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIDI0MjY2LCAyNTYsIAorICAgIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAyNTYsIDI0MzU0LCAKKyAgICAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIDI1NiwgMjQ0MjcsIAorICAgIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIDI1NiwgMjQ3MDUsIAorICAgIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAyNTYsIDI0OTA0LCAKKyAgICAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAyNTYsIDI1MDEwLCAKKyAgICAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAyNTYsIDI1MTA0LCAKKyAgICAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAyNTYsIDE0MjA5MiwgCisgICAgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgMjU2LCAxNDIzMjEsIAorICAgIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIDI1NiwgMjU3MjYsIAorICAgIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIDI1NiwgMTQzMzcwLCAKKyAgICAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAyNTYsIDE1MTEyLCAKKyAgICAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAyNTYsIDMyOTQxLCAKKyAgICAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAyNTYsIDI2NDUxLCAKKyAgICAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgMjU2LCAyNjc1NywgCisgICAgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIDI1NiwgMjY5NDYsIAorICAgIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAyNTYsIDE1Mzg0LCAKKyAgICAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgMjU2LCAyNzU1MSwgCisgICAgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIDE0NjE3MCwgMjU2LCAKKyAgICAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgMjc5MjYsIDI1NiwgCisgICAgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgMjgwMzcsIDI1NiwgCisgICAgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIDI4MzYzLCAyNTYsIAorICAgIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgMTQ3MzQyLCAKKyAgICAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIDI4NzQ2LCAKKyAgICAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAxNDgwNjcsIAorICAgIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIDE0OTAwMCwgCisgICAgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAyNTYsIDI5NTc5LCAKKyAgICAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAyNTYsIDI5Nzg4LCAKKyAgICAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAyNTYsIDE1MDU4MiwgCisgICAgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIDMwMjI0LCAyNTYsIAorICAgIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAyNTYsIDMwNDUyLCAKKyAgICAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAzMDQ5NCwgMjU2LCAKKyAgICAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAxNjQ1NCwgMjU2LCAKKyAgICAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgMTY2MTEsIDI1NiwgCisgICAgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIDI1NiwgMzEyMTEsIAorICAgIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAyNTYsIDE1NDI3OSwgCisgICAgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIDMxNjg2LCAyNTYsIDMxNjg5LCAKKyAgICAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAzMTk3NiwgMjU2LCAzMTk3MSwgCisgICAgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgMzIxOTksIDI1NiwgMzIyNTgsIAorICAgIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAxNzI0MSwgMjU2LCAKKyAgICAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIDMyNzczLCAyNTYsIAorICAgIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAyNTYsIDE0NDIyMywgCisgICAgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgMjU2LCAyMzIyMSwgCisgICAgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgMzMyODEsIDI1NiwgCisgICAgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgMzM0MzcsIDI1NiwgCisgICAgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgMTU4NTI0LCAyNTYsIAorICAgIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIDMzNzI1LCAyNTYsIAorICAgIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIDMzNzU2LCAyNTYsIAorICAgIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAyNTYsIDM0MDM1LCAKKyAgICAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIDI1NiwgMTc3NjEsIAorICAgIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgMjU2LCAzNDQwNywgCisgICAgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgMjU2LCAzNDY4MSwgCisgICAgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgMjU2LCAzNDgxNywgCisgICAgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIDI1NiwgMzUwMzgsIAorICAgIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgMjU2LCAxODExMCwgCisgICAgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgMjU2LCAxNjI5ODQsIAorICAgIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAyNTYsIDEzMzEyNCwgCisgICAgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIDI1NiwgMzY2NjQsIAorICAgIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgMjU2LCAKKyAgICAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIDI1NiwgCisgICAgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAyNTYsIAorICAgIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIDI1NiwgCisgICAgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgMjU2LCAKKyAgICAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAyNTYsIAorICAgIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAyNTYsIAorICAgIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgMjU2LCAKKyAgICA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAxNzI2ODksIAorICAgIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgNDA3MTksIAorICAgIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKIH07CiAKIC8qIGluZGV4IHRhYmxlcyBmb3IgdGhlIGRlY29tcG9zaXRpb24gZGF0YSAqLwotI2RlZmluZSBERUNPTVBfU0hJRlQgOAorI2RlZmluZSBERUNPTVBfU0hJRlQgNwogc3RhdGljIHVuc2lnbmVkIGNoYXIgZGVjb21wX2luZGV4MVtdID0gewotICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDE2LCA3LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDcsIDcsIDcsIDcsIDcsIDI1LCAKLSAgICA3LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDM0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAKLSAgICA0MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDIsIDQzLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0NCwgNywgNywgNDUsIAotICAgIDQ2LCA0NywgNDgsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDQ5LCA3LCA3LCA1MCwgNTEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDUyLCA1MywgNTQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDAsIDEwLCAxMSwgMTIsIDAsIDAsIDAsIDAsIDEzLCAxNCwgMTUsIDAsIAorICAgIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4LCAwLCAwLCAwLCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAKKyAgICAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgMCwgNDIsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgCisgICAgNDUsIDAsIDAsIDQ2LCAwLCA0NywgMCwgMCwgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OSwgNjAsIDYxLCAwLCAwLCAwLCAwLCAwLCAwLCA2MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAKKyAgICA3NCwgNzUsIDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NywgNzgsIDAsIDAsIDAsIDc5LCAwLCAwLCA4MCwgMCwgCisgICAgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MywgMCwgMCwgMCwgMCwgODQsIDg1LCAKKyAgICA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MiwgOTMsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkZWNvbXBfaW5kZXgyW10gPSB7CkBAIC0zOTc4LDM4ICs0NDUzLDIyIEBACiAgICAgMCwgMCwgMCwgMCwgMTA2NiwgMTA2OSwgMTA3MiwgMTA3NSwgMCwgMCwgMTA3OCwgMTA4MSwgMCwgMCwgMTA4NCwgMTA4NywgCiAgICAgMTA5MCwgMTA5MywgMTA5NiwgMTA5OSwgMCwgMCwgMTEwMiwgMTEwNSwgMTEwOCwgMTExMSwgMTExNCwgMTExNywgMCwgMCwgCiAgICAgMTEyMCwgMTEyMywgMTEyNiwgMTEyOSwgMTEzMiwgMTEzNSwgMTEzOCwgMTE0MSwgMTE0NCwgMTE0NywgMTE1MCwgMTE1MywgCi0gICAgMCwgMCwgMTE1NiwgMTE1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2NSwgMTE2OCwgMTE3MSwgMTE3NCwgCi0gICAgMTE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4MCwgMTE4MywgMTE4NiwgMTE4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5MiwgMCwgMTE5NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTE1NiwgMTE1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2MiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2NSwgMTE2OCwgMTE3MSwgMTE3NCwgMTE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE4MCwgMTE4MywgMTE4NiwgMTE4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5MiwgMCwgMTE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwMSwgMCwgMCwgMCwgCkBAIC00MDMxLDE5MSArNDQ5MCwxNzUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjY3LCAwLCAwLCAxMjcwLCAxMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjc2LCAxMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjg1LCAxMjg4LCAxMjkxLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY3LCAwLCAwLCAxMjcwLCAxMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjc2LCAxMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjg1LCAxMjg4LCAxMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAwLCAxMzAzLCAwLCAKLSAgICAxMzA2LCAxMzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEyLCAxMzE1LCAxMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAwLCAxMzAzLCAwLCAxMzA2LCAxMzA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIxLCAwLCAxMzI0LCAxMzI3LCAxMzMwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzEyLCAxMzE1LCAxMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM5LCAxMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzIxLCAwLCAxMzI0LCAxMzI3LCAxMzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzM5LCAxMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzUwLCAwLCAwLCAwLCAwLCAxMzUzLCAwLCAwLCAwLCAwLCAxMzU2LCAwLCAwLCAwLCAwLCAxMzU5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzY1LCAwLCAKKyAgICAxMzY4LCAxMzcxLCAxMzc0LCAxMzc3LCAxMzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzg5LCAwLCAwLCAwLCAwLCAxMzkyLCAwLCAwLCAwLCAwLCAxMzk1LCAwLCAwLCAwLCAwLCAxMzk4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDA0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDA5LCAwLCAxNDEyLCAwLCAxNDE1LCAwLCAxNDE4LCAwLCAxNDIxLCAwLCAwLCAKKyAgICAwLCAxNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDI3LCAwLCAxNDMwLCAKKyAgICAwLCAwLCAxNDMzLCAxNDM2LCAwLCAxNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQyLCAxNDQ0LCAxNDQ2LCAwLCAKKyAgICAxNDQ4LCAxNDUwLCAxNDUyLCAxNDU0LCAxNDU2LCAxNDU4LCAxNDYwLCAxNDYyLCAxNDY0LCAxNDY2LCAxNDY4LCAwLCAKKyAgICAxNDcwLCAxNDcyLCAxNDc0LCAxNDc2LCAxNDc4LCAxNDgwLCAxNDgyLCAxNDg0LCAxNDg2LCAxNDg4LCAxNDkwLCAxNDkyLCAKKyAgICAxNDk0LCAxNDk2LCAxNDk4LCAxNTAwLCAxNTAyLCAxNTA0LCAwLCAxNTA2LCAxNTA4LCAxNTEwLCAxNTEyLCAxNTE0LCAKKyAgICAxNTE2LCAxNTE4LCAxNTIwLCAxNTIyLCAxNTI0LCAxNTI2LCAxNTI4LCAxNTMwLCAxNTMyLCAxNTM0LCAxNTM2LCAxNTM4LCAKKyAgICAxNTQwLCAxNTQyLCAxNTQ0LCAxNTQ2LCAxNTQ4LCAxNTUwLCAxNTUyLCAxNTU0LCAxNTU2LCAxNTU4LCAxNTYwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwLCAwLCAwLCAwLCAwLCAxMzUzLCAwLCAwLCAwLCAwLCAKLSAgICAxMzU2LCAwLCAwLCAwLCAwLCAxMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzY1LCAwLCAxMzY4LCAxMzcxLCAxMzc0LCAxMzc3LCAxMzgwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg5LCAwLCAwLCAwLCAwLCAxMzkyLCAwLCAwLCAwLCAwLCAxMzk1LCAwLCAKLSAgICAwLCAwLCAwLCAxMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTY0LCAxNTY2LCAxNTY4LCAxNTcwLCAxNTcyLCAxNTc0LCAxNTc2LCAxNTc4LCAxNTgwLCAxNTgyLCAxNTg0LCAxNTg2LCAKKyAgICAxNTg4LCAxNTkwLCAxNTkyLCAxNTk0LCAxNTk2LCAxNTk4LCAxNjAwLCAxNjAyLCAxNjA0LCAxNjA2LCAxNjA4LCAxNjEwLCAKKyAgICAxNjEyLCAxNjE0LCAxNjE2LCAxNjE4LCAxNjIwLCAxNjIyLCAxNjI0LCAxNjI2LCAxNjI4LCAxNjMwLCAxNjMyLCAxNjM0LCAKKyAgICAxNjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM4LCAxNjQxLCAxNjQ0LCAKKyAgICAxNjQ3LCAxNjUwLCAxNjUzLCAxNjU2LCAxNjU5LCAxNjYyLCAxNjY1LCAxNjY4LCAxNjcxLCAxNjc0LCAxNjc3LCAxNjgwLCAKKyAgICAxNjgzLCAxNjg2LCAxNjg5LCAxNjkyLCAxNjk1LCAxNjk4LCAxNzAxLCAxNzA0LCAxNzA3LCAxNzEwLCAxNzEzLCAxNzE2LCAKKyAgICAxNzE5LCAxNzIyLCAxNzI1LCAxNzI4LCAxNzMxLCAxNzM0LCAxNzM3LCAxNzQwLCAxNzQzLCAxNzQ2LCAxNzQ5LCAxNzUyLCAKKyAgICAxNzU1LCAxNzU4LCAxNzYxLCAxNzY0LCAxNzY3LCAxNzcwLCAxNzczLCAxNzc2LCAxNzc5LCAxNzgyLCAxNzg1LCAxNzg4LCAKKyAgICAxNzkxLCAxNzk0LCAxNzk3LCAxODAwLCAxODAzLCAxODA2LCAxODA5LCAxODEyLCAxODE1LCAxODE4LCAxODIxLCAxODI0LCAKKyAgICAxODI3LCAxODMwLCAxODMzLCAxODM2LCAxODM5LCAxODQyLCAxODQ1LCAxODQ4LCAxODUxLCAxODU0LCAxODU3LCAxODYwLCAKKyAgICAxODYzLCAxODY2LCAxODY5LCAxODcyLCAxODc1LCAxODc4LCAxODgxLCAxODg0LCAxODg3LCAxODkwLCAxODkzLCAxODk2LCAKKyAgICAxODk5LCAxOTAyLCAxOTA1LCAxOTA4LCAxOTExLCAxOTE0LCAxOTE3LCAxOTIwLCAxOTIzLCAxOTI2LCAxOTI5LCAxOTMyLCAKKyAgICAxOTM1LCAxOTM4LCAxOTQxLCAxOTQ0LCAxOTQ3LCAxOTUwLCAxOTUzLCAxOTU2LCAxOTU5LCAxOTYyLCAxOTY1LCAxOTY4LCAKKyAgICAxOTcxLCAxOTc0LCAxOTc3LCAxOTgwLCAxOTgzLCAxOTg2LCAxOTg5LCAxOTkyLCAxOTk1LCAxOTk4LCAyMDAxLCAyMDA0LCAKKyAgICAyMDA3LCAyMDEwLCAyMDEzLCAyMDE2LCAyMDE5LCAyMDIyLCAyMDI1LCAyMDI4LCAyMDMxLCAyMDM0LCAyMDM3LCAyMDQwLCAKKyAgICAyMDQzLCAyMDQ2LCAyMDQ5LCAyMDUyLCAyMDU1LCAyMDU4LCAyMDYxLCAyMDY0LCAyMDY3LCAyMDcwLCAyMDczLCAyMDc2LCAKKyAgICAyMDc5LCAyMDgyLCAyMDg1LCAyMDg4LCAyMDkxLCAyMDk0LCAyMDk3LCAyMTAwLCAyMTAzLCAwLCAwLCAwLCAwLCAyMTA2LCAKKyAgICAyMTA5LCAyMTEyLCAyMTE1LCAyMTE4LCAyMTIxLCAyMTI0LCAyMTI3LCAyMTMwLCAyMTMzLCAyMTM2LCAyMTM5LCAyMTQyLCAKKyAgICAyMTQ1LCAyMTQ4LCAyMTUxLCAyMTU0LCAyMTU3LCAyMTYwLCAyMTYzLCAyMTY2LCAyMTY5LCAyMTcyLCAyMTc1LCAyMTc4LCAKKyAgICAyMTgxLCAyMTg0LCAyMTg3LCAyMTkwLCAyMTkzLCAyMTk2LCAyMTk5LCAyMjAyLCAyMjA1LCAyMjA4LCAyMjExLCAyMjE0LCAKKyAgICAyMjE3LCAyMjIwLCAyMjIzLCAyMjI2LCAyMjI5LCAyMjMyLCAyMjM1LCAyMjM4LCAyMjQxLCAyMjQ0LCAyMjQ3LCAyMjUwLCAKKyAgICAyMjUzLCAyMjU2LCAyMjU5LCAyMjYyLCAyMjY1LCAyMjY4LCAyMjcxLCAyMjc0LCAyMjc3LCAyMjgwLCAyMjgzLCAyMjg2LCAKKyAgICAyMjg5LCAyMjkyLCAyMjk1LCAyMjk4LCAyMzAxLCAyMzA0LCAyMzA3LCAyMzEwLCAyMzEzLCAyMzE2LCAyMzE5LCAyMzIyLCAKKyAgICAyMzI1LCAyMzI4LCAyMzMxLCAyMzM0LCAyMzM3LCAyMzQwLCAyMzQzLCAyMzQ2LCAyMzQ5LCAyMzUyLCAyMzU1LCAyMzU4LCAKKyAgICAyMzYxLCAyMzY0LCAyMzY3LCAyMzcwLCAyMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzc2LCAyMzc5LCAyMzgyLCAyMzg1LCAKKyAgICAyMzg4LCAyMzkxLCAyMzk0LCAyMzk3LCAyNDAwLCAyNDAzLCAyNDA2LCAyNDA5LCAyNDEyLCAyNDE1LCAyNDE4LCAyNDIxLCAKKyAgICAyNDI0LCAyNDI3LCAyNDMwLCAyNDMzLCAyNDM2LCAyNDM5LCAwLCAwLCAyNDQyLCAyNDQ1LCAyNDQ4LCAyNDUxLCAyNDU0LCAKKyAgICAyNDU3LCAwLCAwLCAyNDYwLCAyNDYzLCAyNDY2LCAyNDY5LCAyNDcyLCAyNDc1LCAyNDc4LCAyNDgxLCAyNDg0LCAyNDg3LCAKKyAgICAyNDkwLCAyNDkzLCAyNDk2LCAyNDk5LCAyNTAyLCAyNTA1LCAyNTA4LCAyNTExLCAyNTE0LCAyNTE3LCAyNTIwLCAyNTIzLCAKKyAgICAyNTI2LCAyNTI5LCAyNTMyLCAyNTM1LCAyNTM4LCAyNTQxLCAyNTQ0LCAyNTQ3LCAyNTUwLCAyNTUzLCAyNTU2LCAyNTU5LCAKKyAgICAyNTYyLCAyNTY1LCAyNTY4LCAyNTcxLCAwLCAwLCAyNTc0LCAyNTc3LCAyNTgwLCAyNTgzLCAyNTg2LCAyNTg5LCAwLCAwLCAKKyAgICAyNTkyLCAyNTk1LCAyNTk4LCAyNjAxLCAyNjA0LCAyNjA3LCAyNjEwLCAyNjEzLCAwLCAyNjE2LCAwLCAyNjE5LCAwLCAKKyAgICAyNjIyLCAwLCAyNjI1LCAyNjI4LCAyNjMxLCAyNjM0LCAyNjM3LCAyNjQwLCAyNjQzLCAyNjQ2LCAyNjQ5LCAyNjUyLCAKKyAgICAyNjU1LCAyNjU4LCAyNjYxLCAyNjY0LCAyNjY3LCAyNjcwLCAyNjczLCAyNjc2LCAyNjc5LCAyNjgxLCAyNjg0LCAyNjg2LCAKKyAgICAyNjg5LCAyNjkxLCAyNjk0LCAyNjk2LCAyNjk5LCAyNzAxLCAyNzA0LCAyNzA2LCAyNzA5LCAwLCAwLCAyNzExLCAyNzE0LCAKKyAgICAyNzE3LCAyNzIwLCAyNzIzLCAyNzI2LCAyNzI5LCAyNzMyLCAyNzM1LCAyNzM4LCAyNzQxLCAyNzQ0LCAyNzQ3LCAyNzUwLCAKKyAgICAyNzUzLCAyNzU2LCAyNzU5LCAyNzYyLCAyNzY1LCAyNzY4LCAyNzcxLCAyNzc0LCAyNzc3LCAyNzgwLCAyNzgzLCAyNzg2LCAKKyAgICAyNzg5LCAyNzkyLCAyNzk1LCAyNzk4LCAyODAxLCAyODA0LCAyODA3LCAyODEwLCAyODEzLCAyODE2LCAyODE5LCAyODIyLCAKKyAgICAyODI1LCAyODI4LCAyODMxLCAyODM0LCAyODM3LCAyODQwLCAyODQzLCAyODQ2LCAyODQ5LCAyODUyLCAyODU1LCAyODU4LCAKKyAgICAyODYxLCAyODY0LCAyODY3LCAwLCAyODcwLCAyODczLCAyODc2LCAyODc5LCAyODgyLCAyODg1LCAyODg3LCAyODkwLCAKKyAgICAyODkzLCAyODk1LCAyODk4LCAyOTAxLCAyOTA0LCAyOTA3LCAyOTEwLCAwLCAyOTEzLCAyOTE2LCAyOTE5LCAyOTIyLCAKKyAgICAyOTI0LCAyOTI3LCAyOTI5LCAyOTMyLCAyOTM1LCAyOTM4LCAyOTQxLCAyOTQ0LCAyOTQ3LCAyOTUwLCAwLCAwLCAyOTUyLCAKKyAgICAyOTU1LCAyOTU4LCAyOTYxLCAyOTY0LCAyOTY3LCAwLCAyOTY5LCAyOTcyLCAyOTc1LCAyOTc4LCAyOTgxLCAyOTg0LCAKKyAgICAyOTg3LCAyOTg5LCAyOTkyLCAyOTk1LCAyOTk4LCAzMDAxLCAzMDA0LCAzMDA3LCAzMDEwLCAzMDEyLCAzMDE1LCAzMDE4LCAKKyAgICAzMDIwLCAwLCAwLCAzMDIyLCAzMDI1LCAzMDI4LCAwLCAzMDMxLCAzMDM0LCAzMDM3LCAzMDQwLCAzMDQyLCAzMDQ1LCAKKyAgICAzMDQ3LCAzMDUwLCAzMDUyLCAwLCAzMDU1LCAzMDU3LCAzMDU5LCAzMDYxLCAzMDYzLCAzMDY1LCAzMDY3LCAzMDY5LCAKKyAgICAzMDcxLCAzMDczLCAzMDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDc3LCAwLCAwLCAwLCAwLCAwLCAzMDc5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDgyLCAzMDg0LCAzMDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDkxLCAwLCAwLCAwLCAzMDkzLCAzMDk2LCAwLCAzMTAwLCAzMTAzLCAwLCAwLCAwLCAwLCAzMTA3LCAwLCAzMTEwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTEzLCAzMTE2LCAzMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMTI5LCAzMTMxLCAwLCAwLCAzMTMzLCAzMTM1LCAzMTM3LCAzMTM5LCAzMTQxLCAzMTQzLCAKKyAgICAzMTQ1LCAzMTQ3LCAzMTQ5LCAzMTUxLCAzMTUzLCAzMTU1LCAzMTU3LCAzMTU5LCAzMTYxLCAzMTYzLCAzMTY1LCAzMTY3LCAKKyAgICAzMTY5LCAzMTcxLCAzMTczLCAzMTc1LCAzMTc3LCAzMTc5LCAzMTgxLCAzMTgzLCAzMTg1LCAwLCAzMTg3LCAzMTg5LCAKKyAgICAzMTkxLCAzMTkzLCAzMTk1LCAzMTk3LCAzMTk5LCAzMjAxLCAzMjAzLCAzMjA1LCAzMjA3LCAzMjA5LCAzMjExLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMjE2LCAzMjIwLCAzMjI0LCAzMjI2LCAwLCAzMjI5LCAzMjMzLCAzMjM3LCAwLCAzMjM5LCAzMjQyLCAzMjQ0LCAKKyAgICAzMjQ2LCAzMjQ4LCAzMjUwLCAzMjUyLCAzMjU0LCAzMjU2LCAzMjU4LCAzMjYwLCAwLCAzMjYyLCAzMjY0LCAwLCAwLCAKKyAgICAzMjY3LCAzMjY5LCAzMjcxLCAzMjczLCAzMjc1LCAwLCAwLCAzMjc3LCAzMjgwLCAzMjg0LCAwLCAzMjg3LCAwLCAzMjg5LCAKKyAgICAwLCAzMjkxLCAwLCAzMjkzLCAzMjk1LCAzMjk3LCAzMjk5LCAwLCAzMzAxLCAzMzAzLCAzMzA1LCAwLCAzMzA3LCAzMzA5LCAKKyAgICAzMzExLCAzMzEzLCAzMzE1LCAzMzE3LCAzMzE5LCAwLCAzMzIxLCAzMzI1LCAzMzI3LCAzMzI5LCAzMzMxLCAzMzMzLCAwLCAKKyAgICAwLCAwLCAwLCAzMzM1LCAzMzM3LCAzMzM5LCAzMzQxLCAzMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzQ1LCAzMzQ5LCAKKyAgICAzMzUzLCAzMzU4LCAzMzYyLCAzMzY2LCAzMzcwLCAzMzc0LCAzMzc4LCAzMzgyLCAzMzg2LCAzMzkwLCAzMzk0LCAzMzk4LCAKKyAgICAzNDAyLCAzNDA2LCAzNDA5LCAzNDExLCAzNDE0LCAzNDE4LCAzNDIxLCAzNDIzLCAzNDI2LCAzNDMwLCAzNDM1LCAzNDM4LCAKKyAgICAzNDQwLCAzNDQzLCAzNDQ3LCAzNDQ5LCAzNDUxLCAzNDUzLCAzNDU1LCAzNDU3LCAzNDYwLCAzNDY0LCAzNDY3LCAzNDY5LCAKKyAgICAzNDcyLCAzNDc2LCAzNDgxLCAzNDg0LCAzNDg2LCAzNDg5LCAzNDkzLCAzNDk1LCAzNDk3LCAzNDk5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTA1LCAzNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTExLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNTE0LCAzNTE3LCAzNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIzLCAwLCAwLCAwLCAwLCAzNTI2LCAKKyAgICAwLCAwLCAzNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNTMyLCAwLCAzNTM1LCAwLCAwLCAwLCAwLCAwLCAzNTM4LCAzNTQxLCAwLCAzNTQ1LCAzNTQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTUyLCAwLCAwLCAzNTU1LCAwLCAwLCAzNTU4LCAKKyAgICAwLCAzNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNTY0LCAwLCAzNTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTcwLCAzNTczLCAzNTc2LCAzNTc5LCAKKyAgICAzNTgyLCAwLCAwLCAzNTg1LCAzNTg4LCAwLCAwLCAzNTkxLCAzNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTk3LCAzNjAwLCAKKyAgICAwLCAwLCAzNjAzLCAzNjA2LCAwLCAwLCAzNjA5LCAzNjEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjE1LCAKKyAgICAzNjE4LCAzNjIxLCAzNjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNjI3LCAzNjMwLCAzNjMzLCAzNjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAzNjM5LCAzNjQyLCAKKyAgICAzNjQ1LCAzNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDA5LCAwLCAxNDEyLCAwLCAKLSAgICAxNDE1LCAwLCAxNDE4LCAwLCAxNDIxLCAwLCAwLCAwLCAxNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNDI3LCAwLCAxNDMwLCAwLCAwLCAxNDMzLCAxNDM2LCAwLCAxNDM5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQyLCAxNDQ0LCAxNDQ2LCAwLCAxNDQ4LCAxNDUwLCAxNDUyLCAKLSAgICAxNDU0LCAxNDU2LCAxNDU4LCAxNDYwLCAxNDYyLCAxNDY0LCAxNDY2LCAxNDY4LCAwLCAxNDcwLCAxNDcyLCAxNDc0LCAKLSAgICAxNDc2LCAxNDc4LCAxNDgwLCAxNDgyLCAxNDg0LCAxNDg2LCAxNDg4LCAxNDkwLCAxNDkyLCAxNDk0LCAxNDk2LCAxNDk4LCAKLSAgICAxNTAwLCAxNTAyLCAxNTA0LCAwLCAxNTA2LCAxNTA4LCAxNTEwLCAxNTEyLCAxNTE0LCAxNTE2LCAxNTE4LCAxNTIwLCAKLSAgICAxNTIyLCAxNTI0LCAxNTI2LCAxNTI4LCAxNTMwLCAxNTMyLCAxNTM0LCAxNTM2LCAxNTM4LCAxNTQwLCAxNTQyLCAxNTQ0LCAKLSAgICAxNTQ2LCAxNTQ4LCAxNTUwLCAxNTUyLCAxNTU0LCAxNTU2LCAxNTU4LCAxNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY0LCAxNTY2LCAxNTY4LCAKLSAgICAxNTcwLCAxNTcyLCAxNTc0LCAxNTc2LCAxNTc4LCAxNTgwLCAxNTgyLCAxNTg0LCAxNTg2LCAxNTg4LCAxNTkwLCAxNTkyLCAKLSAgICAxNTk0LCAxNTk2LCAxNTk4LCAxNjAwLCAxNjAyLCAxNjA0LCAxNjA2LCAxNjA4LCAxNjEwLCAxNjEyLCAxNjE0LCAxNjE2LCAKLSAgICAxNjE4LCAxNjIwLCAxNjIyLCAxNjI0LCAxNjI2LCAxNjI4LCAxNjMwLCAxNjMyLCAxNjM0LCAxNjM2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM4LCAxNjQxLCAxNjQ0LCAxNjQ3LCAxNjUwLCAxNjUzLCAKLSAgICAxNjU2LCAxNjU5LCAxNjYyLCAxNjY1LCAxNjY4LCAxNjcxLCAxNjc0LCAxNjc3LCAxNjgwLCAxNjgzLCAxNjg2LCAxNjg5LCAKLSAgICAxNjkyLCAxNjk1LCAxNjk4LCAxNzAxLCAxNzA0LCAxNzA3LCAxNzEwLCAxNzEzLCAxNzE2LCAxNzE5LCAxNzIyLCAxNzI1LCAKLSAgICAxNzI4LCAxNzMxLCAxNzM0LCAxNzM3LCAxNzQwLCAxNzQzLCAxNzQ2LCAxNzQ5LCAxNzUyLCAxNzU1LCAxNzU4LCAxNzYxLCAKLSAgICAxNzY0LCAxNzY3LCAxNzcwLCAxNzczLCAxNzc2LCAxNzc5LCAxNzgyLCAxNzg1LCAxNzg4LCAxNzkxLCAxNzk0LCAxNzk3LCAKLSAgICAxODAwLCAxODAzLCAxODA2LCAxODA5LCAxODEyLCAxODE1LCAxODE4LCAxODIxLCAxODI0LCAxODI3LCAxODMwLCAxODMzLCAKLSAgICAxODM2LCAxODM5LCAxODQyLCAxODQ1LCAxODQ4LCAxODUxLCAxODU0LCAxODU3LCAxODYwLCAxODYzLCAxODY2LCAxODY5LCAKLSAgICAxODcyLCAxODc1LCAxODc4LCAxODgxLCAxODg0LCAxODg3LCAxODkwLCAxODkzLCAxODk2LCAxODk5LCAxOTAyLCAxOTA1LCAKLSAgICAxOTA4LCAxOTExLCAxOTE0LCAxOTE3LCAxOTIwLCAxOTIzLCAxOTI2LCAxOTI5LCAxOTMyLCAxOTM1LCAxOTM4LCAxOTQxLCAKLSAgICAxOTQ0LCAxOTQ3LCAxOTUwLCAxOTUzLCAxOTU2LCAxOTU5LCAxOTYyLCAxOTY1LCAxOTY4LCAxOTcxLCAxOTc0LCAxOTc3LCAKLSAgICAxOTgwLCAxOTgzLCAxOTg2LCAxOTg5LCAxOTkyLCAxOTk1LCAxOTk4LCAyMDAxLCAyMDA0LCAyMDA3LCAyMDEwLCAyMDEzLCAKLSAgICAyMDE2LCAyMDE5LCAyMDIyLCAyMDI1LCAyMDI4LCAyMDMxLCAyMDM0LCAyMDM3LCAyMDQwLCAyMDQzLCAyMDQ2LCAyMDQ5LCAKLSAgICAyMDUyLCAyMDU1LCAyMDU4LCAyMDYxLCAyMDY0LCAyMDY3LCAyMDcwLCAyMDczLCAyMDc2LCAyMDc5LCAyMDgyLCAyMDg1LCAKLSAgICAyMDg4LCAyMDkxLCAyMDk0LCAyMDk3LCAyMTAwLCAyMTAzLCAwLCAwLCAwLCAwLCAyMTA2LCAyMTA5LCAyMTEyLCAyMTE1LCAKLSAgICAyMTE4LCAyMTIxLCAyMTI0LCAyMTI3LCAyMTMwLCAyMTMzLCAyMTM2LCAyMTM5LCAyMTQyLCAyMTQ1LCAyMTQ4LCAyMTUxLCAKLSAgICAyMTU0LCAyMTU3LCAyMTYwLCAyMTYzLCAyMTY2LCAyMTY5LCAyMTcyLCAyMTc1LCAyMTc4LCAyMTgxLCAyMTg0LCAyMTg3LCAKLSAgICAyMTkwLCAyMTkzLCAyMTk2LCAyMTk5LCAyMjAyLCAyMjA1LCAyMjA4LCAyMjExLCAyMjE0LCAyMjE3LCAyMjIwLCAyMjIzLCAKLSAgICAyMjI2LCAyMjI5LCAyMjMyLCAyMjM1LCAyMjM4LCAyMjQxLCAyMjQ0LCAyMjQ3LCAyMjUwLCAyMjUzLCAyMjU2LCAyMjU5LCAKLSAgICAyMjYyLCAyMjY1LCAyMjY4LCAyMjcxLCAyMjc0LCAyMjc3LCAyMjgwLCAyMjgzLCAyMjg2LCAyMjg5LCAyMjkyLCAyMjk1LCAKLSAgICAyMjk4LCAyMzAxLCAyMzA0LCAyMzA3LCAyMzEwLCAyMzEzLCAyMzE2LCAyMzE5LCAyMzIyLCAyMzI1LCAyMzI4LCAyMzMxLCAKLSAgICAyMzM0LCAyMzM3LCAyMzQwLCAyMzQzLCAyMzQ2LCAyMzQ5LCAyMzUyLCAyMzU1LCAyMzU4LCAyMzYxLCAyMzY0LCAyMzY3LCAKLSAgICAyMzcwLCAyMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzc2LCAyMzc5LCAyMzgyLCAyMzg1LCAyMzg4LCAyMzkxLCAyMzk0LCAKLSAgICAyMzk3LCAyNDAwLCAyNDAzLCAyNDA2LCAyNDA5LCAyNDEyLCAyNDE1LCAyNDE4LCAyNDIxLCAyNDI0LCAyNDI3LCAyNDMwLCAKLSAgICAyNDMzLCAyNDM2LCAyNDM5LCAwLCAwLCAyNDQyLCAyNDQ1LCAyNDQ4LCAyNDUxLCAyNDU0LCAyNDU3LCAwLCAwLCAyNDYwLCAKLSAgICAyNDYzLCAyNDY2LCAyNDY5LCAyNDcyLCAyNDc1LCAyNDc4LCAyNDgxLCAyNDg0LCAyNDg3LCAyNDkwLCAyNDkzLCAyNDk2LCAKLSAgICAyNDk5LCAyNTAyLCAyNTA1LCAyNTA4LCAyNTExLCAyNTE0LCAyNTE3LCAyNTIwLCAyNTIzLCAyNTI2LCAyNTI5LCAyNTMyLCAKLSAgICAyNTM1LCAyNTM4LCAyNTQxLCAyNTQ0LCAyNTQ3LCAyNTUwLCAyNTUzLCAyNTU2LCAyNTU5LCAyNTYyLCAyNTY1LCAyNTY4LCAKLSAgICAyNTcxLCAwLCAwLCAyNTc0LCAyNTc3LCAyNTgwLCAyNTgzLCAyNTg2LCAyNTg5LCAwLCAwLCAyNTkyLCAyNTk1LCAyNTk4LCAKLSAgICAyNjAxLCAyNjA0LCAyNjA3LCAyNjEwLCAyNjEzLCAwLCAyNjE2LCAwLCAyNjE5LCAwLCAyNjIyLCAwLCAyNjI1LCAyNjI4LCAKLSAgICAyNjMxLCAyNjM0LCAyNjM3LCAyNjQwLCAyNjQzLCAyNjQ2LCAyNjQ5LCAyNjUyLCAyNjU1LCAyNjU4LCAyNjYxLCAyNjY0LCAKLSAgICAyNjY3LCAyNjcwLCAyNjczLCAyNjc2LCAyNjc5LCAyNjgxLCAyNjg0LCAyNjg2LCAyNjg5LCAyNjkxLCAyNjk0LCAyNjk2LCAKLSAgICAyNjk5LCAyNzAxLCAyNzA0LCAyNzA2LCAyNzA5LCAwLCAwLCAyNzExLCAyNzE0LCAyNzE3LCAyNzIwLCAyNzIzLCAyNzI2LCAKLSAgICAyNzI5LCAyNzMyLCAyNzM1LCAyNzM4LCAyNzQxLCAyNzQ0LCAyNzQ3LCAyNzUwLCAyNzUzLCAyNzU2LCAyNzU5LCAyNzYyLCAKLSAgICAyNzY1LCAyNzY4LCAyNzcxLCAyNzc0LCAyNzc3LCAyNzgwLCAyNzgzLCAyNzg2LCAyNzg5LCAyNzkyLCAyNzk1LCAyNzk4LCAKLSAgICAyODAxLCAyODA0LCAyODA3LCAyODEwLCAyODEzLCAyODE2LCAyODE5LCAyODIyLCAyODI1LCAyODI4LCAyODMxLCAyODM0LCAKLSAgICAyODM3LCAyODQwLCAyODQzLCAyODQ2LCAyODQ5LCAyODUyLCAyODU1LCAyODU4LCAyODYxLCAyODY0LCAyODY3LCAwLCAKLSAgICAyODcwLCAyODczLCAyODc2LCAyODc5LCAyODgyLCAyODg1LCAyODg3LCAyODkwLCAyODkzLCAyODk1LCAyODk4LCAyOTAxLCAKLSAgICAyOTA0LCAyOTA3LCAyOTEwLCAwLCAyOTEzLCAyOTE2LCAyOTE5LCAyOTIyLCAyOTI0LCAyOTI3LCAyOTI5LCAyOTMyLCAKLSAgICAyOTM1LCAyOTM4LCAyOTQxLCAyOTQ0LCAyOTQ3LCAyOTUwLCAwLCAwLCAyOTUyLCAyOTU1LCAyOTU4LCAyOTYxLCAyOTY0LCAKLSAgICAyOTY3LCAwLCAyOTY5LCAyOTcyLCAyOTc1LCAyOTc4LCAyOTgxLCAyOTg0LCAyOTg3LCAyOTg5LCAyOTkyLCAyOTk1LCAKLSAgICAyOTk4LCAzMDAxLCAzMDA0LCAzMDA3LCAzMDEwLCAzMDEyLCAzMDE1LCAzMDE4LCAzMDIwLCAwLCAwLCAzMDIyLCAzMDI1LCAKLSAgICAzMDI4LCAwLCAzMDMxLCAzMDM0LCAzMDM3LCAzMDQwLCAzMDQyLCAzMDQ1LCAzMDQ3LCAzMDUwLCAzMDUyLCAwLCAzMDU1LCAKLSAgICAzMDU3LCAzMDU5LCAzMDYxLCAzMDYzLCAzMDY1LCAzMDY3LCAzMDY5LCAzMDcxLCAzMDczLCAzMDc1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMDc3LCAwLCAwLCAwLCAwLCAwLCAzMDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDgyLCAzMDg0LCAzMDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDkxLCAwLCAwLCAwLCAzMDkzLCAzMDk2LCAwLCAKLSAgICAzMTAwLCAzMTAzLCAwLCAwLCAwLCAwLCAzMTA3LCAwLCAzMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTEzLCAKLSAgICAzMTE2LCAzMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI5LCAzMTMxLCAKLSAgICAwLCAwLCAzMTMzLCAzMTM1LCAzMTM3LCAzMTM5LCAzMTQxLCAzMTQzLCAzMTQ1LCAzMTQ3LCAzMTQ5LCAzMTUxLCAzMTUzLCAKLSAgICAzMTU1LCAzMTU3LCAzMTU5LCAzMTYxLCAzMTYzLCAzMTY1LCAzMTY3LCAzMTY5LCAzMTcxLCAzMTczLCAzMTc1LCAzMTc3LCAKLSAgICAzMTc5LCAzMTgxLCAzMTgzLCAzMTg1LCAwLCAzMTg3LCAzMTg5LCAzMTkxLCAzMTkzLCAzMTk1LCAzMTk3LCAzMTk5LCAKLSAgICAzMjAxLCAzMjAzLCAzMjA1LCAzMjA3LCAzMjA5LCAzMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjE2LCAzMjIwLCAzMjI0LCAKLSAgICAzMjI2LCAwLCAzMjI5LCAzMjMzLCAzMjM3LCAwLCAzMjM5LCAzMjQyLCAzMjQ0LCAzMjQ2LCAzMjQ4LCAzMjUwLCAzMjUyLCAKLSAgICAzMjU0LCAzMjU2LCAzMjU4LCAzMjYwLCAwLCAzMjYyLCAzMjY0LCAwLCAwLCAzMjY3LCAzMjY5LCAzMjcxLCAzMjczLCAKLSAgICAzMjc1LCAwLCAwLCAzMjc3LCAzMjgwLCAzMjg0LCAwLCAzMjg3LCAwLCAzMjg5LCAwLCAzMjkxLCAwLCAzMjkzLCAzMjk1LCAKLSAgICAzMjk3LCAzMjk5LCAwLCAzMzAxLCAzMzAzLCAzMzA1LCAwLCAzMzA3LCAzMzA5LCAzMzExLCAzMzEzLCAzMzE1LCAzMzE3LCAKLSAgICAzMzE5LCAwLCAzMzIxLCAzMzI1LCAzMzI3LCAzMzI5LCAzMzMxLCAzMzMzLCAwLCAwLCAwLCAwLCAzMzM1LCAzMzM3LCAKLSAgICAzMzM5LCAzMzQxLCAzMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzQ1LCAzMzQ5LCAzMzUzLCAzMzU4LCAzMzYyLCAzMzY2LCAKLSAgICAzMzcwLCAzMzc0LCAzMzc4LCAzMzgyLCAzMzg2LCAzMzkwLCAzMzk0LCAzMzk4LCAzNDAyLCAzNDA2LCAzNDA5LCAzNDExLCAKLSAgICAzNDE0LCAzNDE4LCAzNDIxLCAzNDIzLCAzNDI2LCAzNDMwLCAzNDM1LCAzNDM4LCAzNDQwLCAzNDQzLCAzNDQ3LCAzNDQ5LCAKLSAgICAzNDUxLCAzNDUzLCAzNDU1LCAzNDU3LCAzNDYwLCAzNDY0LCAzNDY3LCAzNDY5LCAzNDcyLCAzNDc2LCAzNDgxLCAzNDg0LCAKLSAgICAzNDg2LCAzNDg5LCAzNDkzLCAzNDk1LCAzNDk3LCAzNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTAxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTA1LCAzNTA4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTE0LCAKLSAgICAzNTE3LCAzNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIzLCAwLCAwLCAwLCAwLCAzNTI2LCAwLCAwLCAzNTI5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTMyLCAwLCAzNTM1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNTM4LCAzNTQxLCAwLCAzNTQ1LCAzNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNTUyLCAwLCAwLCAzNTU1LCAwLCAwLCAzNTU4LCAwLCAzNTYxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTY0LCAwLCAzNTY3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTcwLCAzNTczLCAzNTc2LCAzNTc5LCAzNTgyLCAwLCAwLCAzNTg1LCAzNTg4LCAKLSAgICAwLCAwLCAzNTkxLCAzNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTk3LCAzNjAwLCAwLCAwLCAzNjAzLCAzNjA2LCAwLCAwLCAKLSAgICAzNjA5LCAzNjEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjE1LCAzNjE4LCAzNjIxLCAzNjI0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjI3LCAKLSAgICAzNjMwLCAzNjMzLCAzNjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAzNjM5LCAzNjQyLCAzNjQ1LCAzNjQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUxLCAzNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUxLCAzNjUzLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQyNTYsMjMgKzQ2OTksNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQxMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDEsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDMsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDM3MCwxNzIgKzQ3OTcsNyBAQAogICAgIDY1MzAsIDY1MzMsIDY1MzYsIDY1MzksIDY1NDIsIDY1NDUsIDY1NDgsIDY1NTEsIDY1NTQsIDY1NTgsIDY1NjIsIDY1NjYsIAogICAgIDY1NzAsIDY1NzQsIDY1NzgsIDY1ODIsIDY1ODYsIDY1OTAsIDY1OTQsIDY1OTgsIDY2MDIsIDY2MDYsIDY2MTAsIDY2MTQsIAogICAgIDY2MTgsIDY2MjIsIDY2MjYsIDY2MzAsIDY2MzQsIDY2MzgsIDY2NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDY2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2NDgsIDY2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTIsIDY2NTQsIDY2NTYsIDY2NTgsIDY2NjAsIDY2NjIsIDY2NjQsIAotICAgIDY2NjYsIDY2NjgsIDY2NzAsIDY2NzIsIDY2NzQsIDY2NzYsIDY2NzgsIDY2ODAsIDY2ODIsIDY2ODQsIDY2ODYsIDY2ODgsIAotICAgIDY2OTAsIDY2OTIsIDY2OTQsIDY2OTYsIDY2OTgsIDY3MDAsIDY3MDIsIDY3MDQsIDY3MDYsIDY3MDgsIDY3MTAsIDY3MTIsIAotICAgIDY3MTQsIDY3MTYsIDY3MTgsIDY3MjAsIDY3MjIsIDY3MjQsIDY3MjYsIDY3MjgsIDY3MzAsIDY3MzIsIDY3MzQsIDY3MzYsIAotICAgIDY3MzgsIDY3NDAsIDY3NDIsIDY3NDQsIDY3NDYsIDY3NDgsIDY3NTAsIDY3NTIsIDY3NTQsIDY3NTYsIDY3NTgsIDY3NjAsIAotICAgIDY3NjIsIDY3NjQsIDY3NjYsIDY3NjgsIDY3NzAsIDY3NzIsIDY3NzQsIDY3NzYsIDY3NzgsIDY3ODAsIDY3ODIsIDY3ODQsIAotICAgIDY3ODYsIDY3ODgsIDY3OTAsIDY3OTIsIDY3OTQsIDY3OTYsIDY3OTgsIDY4MDAsIDY4MDIsIDY4MDQsIDY4MDYsIDY4MDgsIAotICAgIDY4MTAsIDY4MTIsIDY4MTQsIDY4MTYsIDY4MTgsIDY4MjAsIDY4MjIsIDY4MjQsIDY4MjYsIDY4MjgsIDY4MzAsIDY4MzIsIAotICAgIDY4MzQsIDY4MzYsIDY4MzgsIDY4NDAsIDY4NDIsIDY4NDQsIDY4NDYsIDY4NDgsIDY4NTAsIDY4NTIsIDY4NTQsIDY4NTYsIAotICAgIDY4NTgsIDY4NjAsIDY4NjIsIDY4NjQsIDY4NjYsIDY4NjgsIDY4NzAsIDY4NzIsIDY4NzQsIDY4NzYsIDY4NzgsIDY4ODAsIAotICAgIDY4ODIsIDY4ODQsIDY4ODYsIDY4ODgsIDY4OTAsIDY4OTIsIDY4OTQsIDY4OTYsIDY4OTgsIDY5MDAsIDY5MDIsIDY5MDQsIAotICAgIDY5MDYsIDY5MDgsIDY5MTAsIDY5MTIsIDY5MTQsIDY5MTYsIDY5MTgsIDY5MjAsIDY5MjIsIDY5MjQsIDY5MjYsIDY5MjgsIAotICAgIDY5MzAsIDY5MzIsIDY5MzQsIDY5MzYsIDY5MzgsIDY5NDAsIDY5NDIsIDY5NDQsIDY5NDYsIDY5NDgsIDY5NTAsIDY5NTIsIAotICAgIDY5NTQsIDY5NTYsIDY5NTgsIDY5NjAsIDY5NjIsIDY5NjQsIDY5NjYsIDY5NjgsIDY5NzAsIDY5NzIsIDY5NzQsIDY5NzYsIAotICAgIDY5NzgsIDY5ODAsIDY5ODIsIDY5ODQsIDY5ODYsIDY5ODgsIDY5OTAsIDY5OTIsIDY5OTQsIDY5OTYsIDY5OTgsIDcwMDAsIAotICAgIDcwMDIsIDcwMDQsIDcwMDYsIDcwMDgsIDcwMTAsIDcwMTIsIDcwMTQsIDcwMTYsIDcwMTgsIDcwMjAsIDcwMjIsIDcwMjQsIAotICAgIDcwMjYsIDcwMjgsIDcwMzAsIDcwMzIsIDcwMzQsIDcwMzYsIDcwMzgsIDcwNDAsIDcwNDIsIDcwNDQsIDcwNDYsIDcwNDgsIAotICAgIDcwNTAsIDcwNTIsIDcwNTQsIDcwNTYsIDcwNTgsIDcwNjAsIDcwNjIsIDcwNjQsIDcwNjYsIDcwNjgsIDcwNzAsIDcwNzIsIAotICAgIDcwNzQsIDcwNzYsIDcwNzgsIDcwODAsIDcwODIsIDcwODQsIDcwODYsIDcwODgsIDcwOTAsIDcwOTIsIDcwOTQsIDcwOTYsIAotICAgIDcwOTgsIDcxMDAsIDcxMDIsIDcxMDQsIDcxMDYsIDcxMDgsIDcxMTAsIDcxMTIsIDcxMTQsIDcxMTYsIDcxMTgsIDcxMjAsIAotICAgIDcxMjIsIDcxMjQsIDcxMjYsIDcxMjgsIDcxMzAsIDcxMzIsIDcxMzQsIDcxMzYsIDcxMzgsIDcxNDAsIDcxNDIsIDcxNDQsIAotICAgIDcxNDYsIDcxNDgsIDcxNTAsIDcxNTIsIDcxNTQsIDcxNTYsIDcxNTgsIDcxNjAsIDcxNjIsIDcxNjQsIDcxNjYsIDcxNjgsIAotICAgIDcxNzAsIDcxNzIsIDcxNzQsIDcxNzYsIDcxNzgsIDcxODAsIDcxODIsIDcxODQsIDcxODYsIDcxODgsIDcxOTAsIDAsIDAsIAotICAgIDcxOTIsIDAsIDcxOTQsIDAsIDAsIDcxOTYsIDcxOTgsIDcyMDAsIDcyMDIsIDcyMDQsIDcyMDYsIDcyMDgsIDcyMTAsIAotICAgIDcyMTIsIDcyMTQsIDAsIDcyMTYsIDAsIDcyMTgsIDAsIDAsIDcyMjAsIDcyMjIsIDAsIDAsIDAsIDcyMjQsIDcyMjYsIAotICAgIDcyMjgsIDcyMzAsIDcyMzIsIDcyMzQsIDcyMzYsIDcyMzgsIDcyNDAsIDcyNDIsIDcyNDQsIDcyNDYsIDcyNDgsIDcyNTAsIAotICAgIDcyNTIsIDcyNTQsIDcyNTYsIDcyNTgsIDcyNjAsIDcyNjIsIDcyNjQsIDcyNjYsIDcyNjgsIDcyNzAsIDcyNzIsIDcyNzQsIAotICAgIDcyNzYsIDcyNzgsIDcyODAsIDcyODIsIDcyODQsIDcyODYsIDcyODgsIDcyOTAsIDcyOTIsIDcyOTQsIDcyOTYsIDcyOTgsIAotICAgIDczMDAsIDczMDIsIDczMDQsIDczMDYsIDczMDgsIDczMTAsIDczMTIsIDczMTQsIDczMTYsIDczMTgsIDczMjAsIDczMjIsIAotICAgIDczMjQsIDczMjYsIDczMjgsIDczMzAsIDczMzIsIDczMzQsIDczMzYsIDczMzgsIDczNDAsIDczNDIsIDczNDQsIDczNDYsIAotICAgIDczNDgsIDczNTAsIDczNTIsIDczNTQsIDczNTYsIDczNTgsIDAsIDAsIDczNjAsIDczNjIsIDczNjQsIDczNjYsIDczNjgsIAotICAgIDczNzAsIDczNzIsIDczNzQsIDczNzYsIDczNzgsIDczODAsIDczODIsIDczODQsIDczODYsIDczODgsIDczOTAsIDczOTIsIAotICAgIDczOTQsIDczOTYsIDczOTgsIDc0MDAsIDc0MDIsIDc0MDQsIDc0MDYsIDc0MDgsIDc0MTAsIDc0MTIsIDc0MTQsIDc0MTYsIAotICAgIDc0MTgsIDc0MjAsIDc0MjIsIDc0MjQsIDc0MjYsIDc0MjgsIDc0MzAsIDc0MzIsIDc0MzQsIDc0MzYsIDc0MzgsIDc0NDAsIAotICAgIDc0NDIsIDc0NDQsIDc0NDYsIDc0NDgsIDc0NTAsIDc0NTIsIDc0NTQsIDc0NTYsIDc0NTgsIDc0NjAsIDc0NjIsIDc0NjQsIAotICAgIDc0NjYsIDc0NjgsIDc0NzAsIDc0NzIsIDc0NzQsIDc0NzYsIDc0NzgsIDc0ODAsIDc0ODIsIDc0ODQsIDc0ODYsIDc0ODgsIAotICAgIDc0OTAsIDc0OTIsIDc0OTQsIDc0OTYsIDc0OTgsIDc1MDAsIDc1MDIsIDc1MDQsIDc1MDYsIDc1MDgsIDc1MTAsIDc1MTIsIAotICAgIDc1MTQsIDc1MTYsIDc1MTgsIDc1MjAsIDc1MjIsIDc1MjQsIDc1MjYsIDc1MjgsIDc1MzAsIDc1MzIsIDc1MzQsIDc1MzYsIAotICAgIDc1MzgsIDc1NDAsIDc1NDIsIDc1NDQsIDc1NDYsIDc1NDgsIDc1NTAsIDc1NTIsIDc1NTQsIDc1NTYsIDc1NTgsIDc1NjAsIAotICAgIDc1NjIsIDc1NjQsIDc1NjYsIDc1NjgsIDc1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc1NzIsIDc1NzUsIDc1NzgsIDc1ODEsIDc1ODUsIDc1ODksIDc1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc1OTUsIDc1OTgsIDc2MDEsIDc2MDQsIDc2MDcsIDAsIDAsIDAsIDAsIDAsIDc2MTAsIDAsIDc2MTMsIDc2MTYsIAotICAgIDc2MTgsIDc2MjAsIDc2MjIsIDc2MjQsIDc2MjYsIDc2MjgsIDc2MzAsIDc2MzIsIDc2MzQsIDc2MzYsIDc2MzksIDc2NDIsIAotICAgIDc2NDUsIDc2NDgsIDc2NTEsIDc2NTQsIDc2NTcsIDc2NjAsIDc2NjMsIDc2NjYsIDc2NjksIDc2NzIsIDAsIDc2NzUsIAotICAgIDc2NzgsIDc2ODEsIDc2ODQsIDc2ODcsIDAsIDc2OTAsIDAsIDc2OTMsIDc2OTYsIDAsIDc2OTksIDc3MDIsIDAsIDc3MDUsIAotICAgIDc3MDgsIDc3MTEsIDc3MTQsIDc3MTcsIDc3MjAsIDc3MjMsIDc3MjYsIDc3MjksIDc3MzIsIDc3MzUsIDc3MzcsIDc3MzksIAotICAgIDc3NDEsIDc3NDMsIDc3NDUsIDc3NDcsIDc3NDksIDc3NTEsIDc3NTMsIDc3NTUsIDc3NTcsIDc3NTksIDc3NjEsIDc3NjMsIAotICAgIDc3NjUsIDc3NjcsIDc3NjksIDc3NzEsIDc3NzMsIDc3NzUsIDc3NzcsIDc3NzksIDc3ODEsIDc3ODMsIDc3ODUsIDc3ODcsIAotICAgIDc3ODksIDc3OTEsIDc3OTMsIDc3OTUsIDc3OTcsIDc3OTksIDc4MDEsIDc4MDMsIDc4MDUsIDc4MDcsIDc4MDksIDc4MTEsIAotICAgIDc4MTMsIDc4MTUsIDc4MTcsIDc4MTksIDc4MjEsIDc4MjMsIDc4MjUsIDc4MjcsIDc4MjksIDc4MzEsIDc4MzMsIDc4MzUsIAotICAgIDc4MzcsIDc4MzksIDc4NDEsIDc4NDMsIDc4NDUsIDc4NDcsIDc4NDksIDc4NTEsIDc4NTMsIDc4NTUsIDc4NTcsIDc4NTksIAotICAgIDc4NjEsIDc4NjMsIDc4NjUsIDc4NjcsIDc4NjksIDc4NzEsIDc4NzMsIDc4NzUsIDc4NzcsIDc4NzksIDc4ODEsIDc4ODMsIAotICAgIDc4ODUsIDc4ODcsIDc4ODksIDc4OTEsIDc4OTMsIDc4OTUsIDc4OTcsIDc4OTksIDc5MDEsIDc5MDMsIDc5MDUsIDc5MDcsIAotICAgIDc5MDksIDc5MTEsIDc5MTMsIDc5MTUsIDc5MTcsIDc5MTksIDc5MjEsIDc5MjMsIDc5MjUsIDc5MjcsIDc5MjksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5MzEsIDc5MzMsIDc5MzUsIDc5MzcsIDc5MzksIDc5NDEsIDc5NDMsIDc5NDUsIAotICAgIDc5NDcsIDc5NDksIDc5NTEsIDc5NTMsIDc5NTUsIDc5NTcsIDc5NTksIDc5NjEsIDc5NjMsIDc5NjUsIDc5NjcsIDc5NjksIAotICAgIDc5NzEsIDc5NzMsIDc5NzUsIDc5NzcsIDc5ODAsIDc5ODMsIDc5ODYsIDc5ODksIDc5OTIsIDc5OTUsIDc5OTgsIDgwMDEsIAotICAgIDgwMDQsIDgwMDcsIDgwMTAsIDgwMTMsIDgwMTYsIDgwMTksIDgwMjIsIDgwMjUsIDgwMjgsIDgwMzEsIDgwMzMsIDgwMzUsIAotICAgIDgwMzcsIDgwMzksIDgwNDIsIDgwNDUsIDgwNDgsIDgwNTEsIDgwNTQsIDgwNTcsIDgwNjAsIDgwNjMsIDgwNjYsIDgwNjksIAotICAgIDgwNzIsIDgwNzUsIDgwNzgsIDgwODEsIDgwODQsIDgwODcsIDgwOTAsIDgwOTMsIDgwOTYsIDgwOTksIDgxMDIsIDgxMDUsIAotICAgIDgxMDgsIDgxMTEsIDgxMTQsIDgxMTcsIDgxMjAsIDgxMjMsIDgxMjYsIDgxMjksIDgxMzIsIDgxMzUsIDgxMzgsIDgxNDEsIAotICAgIDgxNDQsIDgxNDcsIDgxNTAsIDgxNTMsIDgxNTYsIDgxNTksIDgxNjIsIDgxNjUsIDgxNjgsIDgxNzEsIDgxNzQsIDgxNzcsIAotICAgIDgxODAsIDgxODMsIDgxODYsIDgxODksIDgxOTIsIDgxOTUsIDgxOTgsIDgyMDEsIDgyMDQsIDgyMDcsIDgyMTAsIDgyMTMsIAotICAgIDgyMTYsIDgyMTksIDgyMjIsIDgyMjUsIDgyMjgsIDgyMzEsIDgyMzQsIDgyMzcsIDgyNDAsIDgyNDMsIDgyNDYsIDgyNDksIAotICAgIDgyNTIsIDgyNTUsIDgyNTgsIDgyNjEsIDgyNjQsIDgyNjcsIDgyNzAsIDgyNzMsIDgyNzYsIDgyNzksIDgyODIsIDgyODUsIAotICAgIDgyODgsIDgyOTEsIDgyOTQsIDgyOTcsIDgzMDAsIDgzMDMsIDgzMDYsIDgzMDksIDgzMTIsIDgzMTUsIDgzMTgsIDgzMjEsIAotICAgIDgzMjUsIDgzMjksIDgzMzMsIDgzMzcsIDgzNDEsIDgzNDUsIDgzNDgsIDgzNTEsIDgzNTQsIDgzNTcsIDgzNjAsIDgzNjMsIAotICAgIDgzNjYsIDgzNjksIDgzNzIsIDgzNzUsIDgzNzgsIDgzODEsIDgzODQsIDgzODcsIDgzOTAsIDgzOTMsIDgzOTYsIDgzOTksIAotICAgIDg0MDIsIDg0MDUsIDg0MDgsIDg0MTEsIDg0MTQsIDg0MTcsIDg0MjAsIDg0MjMsIDg0MjYsIDg0MjksIDg0MzIsIDg0MzUsIAotICAgIDg0MzgsIDg0NDEsIDg0NDQsIDg0NDcsIDg0NTAsIDg0NTMsIDg0NTYsIDg0NTksIDg0NjIsIDg0NjUsIDg0NjgsIDg0NzEsIAotICAgIDg0NzQsIDg0NzcsIDg0ODAsIDg0ODMsIDg0ODYsIDg0ODksIDg0OTIsIDg0OTUsIDg0OTgsIDg1MDEsIDg1MDQsIDg1MDcsIAotICAgIDg1MTAsIDg1MTMsIDg1MTYsIDg1MTksIDg1MjIsIDg1MjUsIDg1MjgsIDg1MzEsIDg1MzQsIDg1MzcsIDg1NDAsIDg1NDMsIAotICAgIDg1NDYsIDg1NDksIDg1NTIsIDg1NTUsIDg1NTgsIDg1NjEsIDg1NjQsIDg1NjcsIDg1NzAsIDg1NzMsIDg1NzYsIDg1NzksIAotICAgIDg1ODIsIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTQsIDg1OTcsIDg2MDAsIDg2MDMsIDg2MDYsIDg2MDksIDg2MTIsIDg2MTUsIAotICAgIDg2MTgsIDg2MjEsIDg2MjQsIDg2MjcsIDg2MzAsIDg2MzMsIDg2MzYsIDg2MzksIDg2NDIsIDg2NDUsIDg2NDgsIDg2NTEsIAotICAgIDg2NTQsIDg2NTcsIDg2NjAsIDg2NjMsIDg2NjYsIDg2NjksIDg2NzIsIDg2NzUsIDg2NzgsIDg2ODEsIDg2ODQsIDg2ODcsIAotICAgIDg2OTAsIDg2OTMsIDg2OTYsIDg2OTksIDg3MDIsIDg3MDUsIDg3MDgsIDg3MTEsIDg3MTQsIDg3MTcsIDg3MjAsIDg3MjMsIAotICAgIDg3MjYsIDg3MjksIDg3MzIsIDg3MzUsIDg3MzgsIDg3NDEsIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTMsIDg3NTYsIDg3NTksIAotICAgIDg3NjIsIDg3NjUsIDg3NjgsIDg3NzEsIDg3NzUsIDg3NzksIDg3ODMsIDg3ODYsIDg3ODksIDg3OTIsIDg3OTUsIDg3OTgsIAotICAgIDg4MDEsIDg4MDQsIDg4MDcsIDg4MTAsIDg4MTMsIDg4MTYsIDg4MTksIDg4MjIsIDg4MjUsIDg4MjgsIDg4MzEsIDg4MzQsIAotICAgIDg4MzcsIDg4NDAsIDg4NDMsIDg4NDYsIDg4NDksIDg4NTIsIDg4NTUsIDg4NTgsIDg4NjEsIDg4NjQsIDg4NjcsIDg4NzAsIAotICAgIDg4NzMsIDg4NzYsIDg4NzksIDg4ODIsIDg4ODUsIDg4ODgsIDg4OTEsIDg4OTQsIDg4OTcsIDg5MDAsIDg5MDMsIDg5MDYsIAotICAgIDg5MDksIDg5MTIsIDg5MTUsIDg5MTgsIDg5MjEsIDg5MjQsIDg5MjcsIDg5MzAsIDg5MzMsIDg5MzYsIDg5MzksIDg5NDIsIAotICAgIDg5NDUsIDg5NDgsIDg5NTEsIDg5NTQsIDg5NTcsIDg5NjAsIDg5NjMsIDg5NjYsIDg5NjksIDg5NzIsIDg5NzUsIDg5NzgsIAotICAgIDg5ODEsIDg5ODQsIDg5ODcsIDg5OTAsIDg5OTMsIDg5OTYsIDg5OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwMDIsIDkwMDYsIDkwMTAsIDkwMTQsIDkwMTgsIDkwMjIsIDkwMjYsIDkwMzAsIAotICAgIDkwMzQsIDkwMzgsIDkwNDIsIDkwNDYsIDkwNTAsIDkwNTQsIDkwNTgsIDkwNjIsIDkwNjYsIDkwNzAsIDkwNzQsIDkwNzgsIAotICAgIDkwODIsIDkwODYsIDkwOTAsIDkwOTQsIDkwOTgsIDkxMDIsIDkxMDYsIDkxMTAsIDkxMTQsIDkxMTgsIDkxMjIsIDkxMjYsIAotICAgIDkxMzAsIDkxMzQsIDkxMzgsIDkxNDIsIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIAotICAgIDkxNzgsIDkxODIsIDkxODYsIDkxOTAsIDkxOTQsIDkxOTgsIDkyMDIsIDkyMDYsIDkyMTAsIDkyMTQsIDkyMTgsIDkyMjIsIAotICAgIDkyMjYsIDkyMzAsIDkyMzQsIDkyMzgsIDkyNDIsIDkyNDYsIDkyNTAsIDkyNTQsIDAsIDAsIDkyNTgsIDkyNjIsIDkyNjYsIAotICAgIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIDkyODYsIDkyOTAsIDkyOTQsIDkyOTgsIDkzMDIsIDkzMDYsIDkzMTAsIDkzMTQsIAotICAgIDkzMTgsIDkzMjIsIDkzMjYsIDkzMzAsIDkzMzQsIDkzMzgsIDkzNDIsIDkzNDYsIDkzNTAsIDkzNTQsIDkzNTgsIDkzNjIsIAotICAgIDkzNjYsIDkzNzAsIDkzNzQsIDkzNzgsIDkzODIsIDkzODYsIDkzOTAsIDkzOTQsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIAotICAgIDk0MTQsIDk0MTgsIDk0MjIsIDk0MjYsIDk0MzAsIDk0MzQsIDk0MzgsIDk0NDIsIDk0NDYsIDk0NTAsIDk0NTQsIDk0NTgsIAotICAgIDk0NjIsIDk0NjYsIDk0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NzQsIAotICAgIDk0NzgsIDk0ODIsIDk0ODcsIDk0OTIsIDk0OTcsIDk1MDIsIDk1MDcsIDk1MTIsIDk1MTcsIDk1MjEsIDk1NDAsIDk1NDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NTQsIDk1NTYsIAotICAgIDk1NTgsIDk1NjAsIDk1NjIsIDk1NjQsIDk1NjYsIDk1NjgsIDk1NzAsIDk1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIAotICAgIDk1ODQsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIAotICAgIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDAsIDAsIDk2MTYsIDk2MTgsIDk2MjAsIDk2MjIsIDk2MjQsIDk2MjYsIDk2MjgsIAotICAgIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDAsIDk2NDAsIDk2NDIsIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIAotICAgIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIAotICAgIDk2NzYsIDAsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDAsIDAsIDAsIDAsIDk2ODYsIDk2ODksIDk2OTIsIDAsIDk2OTUsIAotICAgIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDk3MDcsIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIAotICAgIDk3MzAsIDk3MzIsIDk3MzQsIDk3MzYsIDk3MzgsIDk3NDAsIDk3NDIsIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIAotICAgIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIAotICAgIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIAotICAgIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIAotICAgIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIAotICAgIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIAotICAgIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIAotICAgIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIAotICAgIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIAotICAgIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIDk5NjAsIDk5NjIsIDk5NjUsIDk5NjgsIDk5NzEsIAotICAgIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDAsIDAsIDAsIDAsIDk5ODYsIDk5ODgsIDk5OTAsIDk5OTIsIDk5OTQsIDk5OTYsIAotICAgIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIAotICAgIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAKLSAgICAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgCi0gICAgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIAotICAgIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAKLSAgICAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgCi0gICAgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIAotICAgIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAKLSAgICAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgCi0gICAgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIAotICAgIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAKLSAgICAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgCi0gICAgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIAotICAgIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAKLSAgICAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgCi0gICAgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIAotICAgIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAKLSAgICAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgCi0gICAgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDAsIDAsIDAsIDEwMzY2LCAxMDM2OCwgMTAzNzAsIDEwMzcyLCAxMDM3NCwgCi0gICAgMTAzNzYsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgMTAzODgsIDAsIDAsIDEwMzkwLCAKLSAgICAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAxMDQwNCwgMTA0MDYsIDAsIDAsIDAsIAotICAgIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDEwNDIwLCAwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAKLSAgICAxMDQyOCwgMTA0MzAsIDEwNDMyLCAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzYsIDAsIDEwNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDUsIDEwNDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjQ2LCA2NjQ4LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQ1NDQsNjExICs0ODA2LDgxMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxLCAxMDQ1NCwgMTA0NTcsIDEwNDYwLCAxMDQ2MywgCi0gICAgMTA0NjYsIDEwNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjUyLCA2NjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3MiwgMTA0NzUsIAotICAgIDEwNDc4LCAxMDQ4MSwgMTA0ODQsIDEwNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgCi0gICAgMTA1MTAsIDEwNTEyLCAxMDUxNCwgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIAotICAgIDEwNTMwLCAxMDUzMiwgMTA1MzQsIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAKLSAgICAxMDU1MCwgMTA1NTIsIDEwNTU0LCAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgCi0gICAgMTA1NzAsIDEwNTcyLCAxMDU3NCwgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIAotICAgIDEwNTkwLCAxMDU5MiwgMTA1OTQsIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAKLSAgICAxMDYxMCwgMTA2MTIsIDEwNjE0LCAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgCi0gICAgMTA2MzAsIDEwNjMyLCAxMDYzNCwgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAxMDY0NiwgMTA2NDgsIAotICAgIDEwNjUwLCAxMDY1MiwgMTA2NTQsIDEwNjU2LCAxMDY1OCwgMCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAKLSAgICAxMDY3MCwgMTA2NzIsIDEwNjc0LCAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgCi0gICAgMTA2OTAsIDEwNjkyLCAxMDY5NCwgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIAotICAgIDEwNzEwLCAxMDcxMiwgMTA3MTQsIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAKLSAgICAxMDczMCwgMTA3MzIsIDEwNzM0LCAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgCi0gICAgMTA3NTAsIDEwNzUyLCAxMDc1NCwgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIAotICAgIDEwNzcwLCAxMDc3MiwgMTA3NzQsIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDEwNzg4LCAKLSAgICAxMDc5MCwgMTA3OTIsIDEwNzk0LCAxMDc5NiwgMTA3OTgsIDEwODAwLCAwLCAxMDgwMiwgMTA4MDQsIDAsIDAsIDEwODA2LCAKLSAgICAwLCAwLCAxMDgwOCwgMTA4MTAsIDAsIDAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAwLCAxMDgyMCwgMTA4MjIsIAotICAgIDEwODI0LCAxMDgyNiwgMTA4MjgsIDEwODMwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAwLCAKLSAgICAxMDg0NCwgMCwgMTA4NDYsIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDAsIDEwODYwLCAKLSAgICAxMDg2MiwgMTA4NjQsIDEwODY2LCAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgCi0gICAgMTA4ODIsIDEwODg0LCAxMDg4NiwgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIAotICAgIDEwOTAyLCAxMDkwNCwgMTA5MDYsIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAKLSAgICAxMDkyMiwgMTA5MjQsIDEwOTI2LCAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgCi0gICAgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIAotICAgIDEwOTYyLCAxMDk2NCwgMTA5NjYsIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAKLSAgICAxMDk4MiwgMTA5ODQsIDEwOTg2LCAxMDk4OCwgMCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDAsIDAsIDEwOTk4LCAKLSAgICAxMTAwMCwgMTEwMDIsIDExMDA0LCAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgCi0gICAgMTEwMjAsIDExMDIyLCAxMTAyNCwgMTEwMjYsIDAsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIAotICAgIDExMDQwLCAxMTA0MiwgMTEwNDQsIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAKLSAgICAxMTA2MCwgMTEwNjIsIDExMDY0LCAxMTA2NiwgMTEwNjgsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAxMTA3OCwgCi0gICAgMTEwODAsIDExMDgyLCAwLCAxMTA4NCwgMTEwODYsIDExMDg4LCAxMTA5MCwgMCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgCi0gICAgMTEwOTgsIDExMTAwLCAwLCAxMTEwMiwgMCwgMCwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAKLSAgICAxMTExNCwgMTExMTYsIDAsIDExMTE4LCAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgCi0gICAgMTExMzQsIDExMTM2LCAxMTEzOCwgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIAotICAgIDExMTU0LCAxMTE1NiwgMTExNTgsIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAKLSAgICAxMTE3NCwgMTExNzYsIDExMTc4LCAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgCi0gICAgMTExOTQsIDExMTk2LCAxMTE5OCwgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIAotICAgIDExMjE0LCAxMTIxNiwgMTEyMTgsIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAKLSAgICAxMTIzNCwgMTEyMzYsIDExMjM4LCAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgCi0gICAgMTEyNTQsIDExMjU2LCAxMTI1OCwgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIAotICAgIDExMjc0LCAxMTI3NiwgMTEyNzgsIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAKLSAgICAxMTI5NCwgMTEyOTYsIDExMjk4LCAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgCi0gICAgMTEzMTQsIDExMzE2LCAxMTMxOCwgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIAotICAgIDExMzM0LCAxMTMzNiwgMTEzMzgsIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAKLSAgICAxMTM1NCwgMTEzNTYsIDExMzU4LCAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgCi0gICAgMTEzNzQsIDExMzc2LCAxMTM3OCwgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIAotICAgIDExMzk0LCAxMTM5NiwgMTEzOTgsIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAKLSAgICAxMTQxNCwgMTE0MTYsIDExNDE4LCAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgCi0gICAgMTE0MzQsIDExNDM2LCAxMTQzOCwgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIAotICAgIDExNDU0LCAxMTQ1NiwgMTE0NTgsIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAKLSAgICAxMTQ3NCwgMTE0NzYsIDExNDc4LCAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgCi0gICAgMTE0OTQsIDExNDk2LCAxMTQ5OCwgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIAotICAgIDExNTE0LCAxMTUxNiwgMTE1MTgsIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAKLSAgICAxMTUzNCwgMTE1MzYsIDExNTM4LCAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgCi0gICAgMTE1NTQsIDExNTU2LCAxMTU1OCwgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIAotICAgIDExNTc0LCAxMTU3NiwgMTE1NzgsIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAKLSAgICAxMTU5NCwgMTE1OTYsIDExNTk4LCAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgCi0gICAgMTE2MTQsIDExNjE2LCAxMTYxOCwgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIAotICAgIDExNjM0LCAxMTYzNiwgMTE2MzgsIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAKLSAgICAxMTY1NCwgMTE2NTYsIDExNjU4LCAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgCi0gICAgMTE2NzQsIDExNjc2LCAxMTY3OCwgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIAotICAgIDExNjk0LCAxMTY5NiwgMTE2OTgsIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAKLSAgICAxMTcxNCwgMTE3MTYsIDExNzE4LCAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgCi0gICAgMTE3MzQsIDExNzM2LCAxMTczOCwgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIAotICAgIDExNzU0LCAxMTc1NiwgMTE3NTgsIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAKLSAgICAxMTc3NCwgMTE3NzYsIDExNzc4LCAxMTc4MCwgMTE3ODIsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgCi0gICAgMTE3OTQsIDExNzk2LCAwLCAwLCAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgCi0gICAgMTE4MTIsIDExODE0LCAxMTgxNiwgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIAotICAgIDExODMyLCAxMTgzNCwgMTE4MzYsIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAKLSAgICAxMTg1MiwgMTE4NTQsIDExODU2LCAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgCi0gICAgMTE4NzIsIDExODc0LCAxMTg3NiwgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIAotICAgIDExODkyLCAxMTg5NCwgMTE4OTYsIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAKLSAgICAxMTkxMiwgMTE5MTQsIDExOTE2LCAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgCi0gICAgMTE5MzIsIDExOTM0LCAxMTkzNiwgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIAotICAgIDExOTUyLCAxMTk1NCwgMTE5NTYsIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAKLSAgICAxMTk3MiwgMTE5NzQsIDExOTc2LCAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgCi0gICAgMTE5OTIsIDExOTk0LCAxMTk5NiwgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIAotICAgIDEyMDEyLCAxMjAxNCwgMTIwMTYsIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAKLSAgICAxMjAzMiwgMTIwMzQsIDEyMDM2LCAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgCi0gICAgMTIwNTIsIDEyMDU0LCAxMjA1NiwgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIAotICAgIDEyMDcyLCAxMjA3NCwgMTIwNzYsIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAKLSAgICAxMjA5MiwgMTIwOTQsIDEyMDk2LCAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgCi0gICAgMTIxMTIsIDEyMTE0LCAxMjExNiwgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIAotICAgIDEyMTMyLCAxMjEzNCwgMTIxMzYsIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAKLSAgICAxMjE1MiwgMTIxNTQsIDEyMTU2LCAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgCi0gICAgMTIxNzIsIDEyMTc0LCAxMjE3NiwgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIAotICAgIDEyMTkyLCAxMjE5NCwgMTIxOTYsIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAKLSAgICAxMjIxMiwgMTIyMTQsIDEyMjE2LCAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgCi0gICAgMTIyMzIsIDEyMjM0LCAxMjIzNiwgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIAotICAgIDEyMjUyLCAxMjI1NCwgMTIyNTYsIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAKLSAgICAxMjI3MiwgMTIyNzQsIDEyMjc2LCAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgCi0gICAgMTIyOTIsIDEyMjk0LCAxMjI5NiwgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIAotICAgIDEyMzEyLCAxMjMxNCwgMTIzMTYsIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAKLSAgICAxMjMzMiwgMTIzMzQsIDEyMzM2LCAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgCi0gICAgMTIzNTIsIDEyMzU0LCAxMjM1NiwgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAxMjM2OCwgMTIzNzAsIAotICAgIDEyMzcyLCAxMjM3NCwgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMCwgMCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIAotICAgIDEyMzkwLCAxMjM5MiwgMTIzOTQsIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAKLSAgICAxMjQxMCwgMTI0MTIsIDEyNDE0LCAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgCi0gICAgMTI0MzAsIDEyNDMyLCAxMjQzNCwgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIAotICAgIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAKLSAgICAxMjQ3MCwgMTI0NzIsIDEyNDc0LCAxMjQ3NiwgMTI0NzgsIDEyNDgwLCAxMjQ4MiwgMTI0ODQsIDEyNDg2LCAxMjQ4OCwgMCwgCi0gICAgMTI0OTAsIDEyNDkyLCAxMjQ5NCwgMTI0OTYsIDEyNDk4LCAxMjUwMCwgMTI1MDIsIDEyNTA0LCAxMjUwNiwgMTI1MDgsIAotICAgIDEyNTEwLCAxMjUxMiwgMTI1MTQsIDEyNTE2LCAxMjUxOCwgMTI1MjAsIDEyNTIyLCAxMjUyNCwgMTI1MjYsIDEyNTI4LCAKLSAgICAxMjUzMCwgMTI1MzIsIDEyNTM0LCAxMjUzNiwgMTI1MzgsIDEyNTQwLCAxMjU0MiwgMCwgMTI1NDQsIDEyNTQ2LCAwLCAKLSAgICAxMjU0OCwgMCwgMCwgMTI1NTAsIDAsIDEyNTUyLCAxMjU1NCwgMTI1NTYsIDEyNTU4LCAxMjU2MCwgMTI1NjIsIDEyNTY0LCAKLSAgICAxMjU2NiwgMTI1NjgsIDEyNTcwLCAwLCAxMjU3MiwgMTI1NzQsIDEyNTc2LCAxMjU3OCwgMCwgMTI1ODAsIDAsIDEyNTgyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4NCwgMCwgMCwgMCwgMCwgMTI1ODYsIDAsIDEyNTg4LCAwLCAxMjU5MCwgMCwgMTI1OTIsIAotICAgIDEyNTk0LCAxMjU5NiwgMCwgMTI1OTgsIDEyNjAwLCAwLCAxMjYwMiwgMCwgMCwgMTI2MDQsIDAsIDEyNjA2LCAwLCAxMjYwOCwgCi0gICAgMCwgMTI2MTAsIDAsIDEyNjEyLCAwLCAxMjYxNCwgMTI2MTYsIDAsIDEyNjE4LCAwLCAwLCAxMjYyMCwgMTI2MjIsIDEyNjI0LCAKLSAgICAxMjYyNiwgMCwgMTI2MjgsIDEyNjMwLCAxMjYzMiwgMTI2MzQsIDEyNjM2LCAxMjYzOCwgMTI2NDAsIDAsIDEyNjQyLCAKLSAgICAxMjY0NCwgMTI2NDYsIDEyNjQ4LCAwLCAxMjY1MCwgMTI2NTIsIDEyNjU0LCAxMjY1NiwgMCwgMTI2NTgsIDAsIDEyNjYwLCAKLSAgICAxMjY2MiwgMTI2NjQsIDEyNjY2LCAxMjY2OCwgMTI2NzAsIDEyNjcyLCAxMjY3NCwgMTI2NzYsIDEyNjc4LCAwLCAxMjY4MCwgCi0gICAgMTI2ODIsIDEyNjg0LCAxMjY4NiwgMTI2ODgsIDEyNjkwLCAxMjY5MiwgMTI2OTQsIDEyNjk2LCAxMjY5OCwgMTI3MDAsIAotICAgIDEyNzAyLCAxMjcwNCwgMTI3MDYsIDEyNzA4LCAxMjcxMCwgMTI3MTIsIDAsIDAsIDAsIDAsIDAsIDEyNzE0LCAxMjcxNiwgCi0gICAgMTI3MTgsIDAsIDEyNzIwLCAxMjcyMiwgMTI3MjQsIDEyNzI2LCAxMjcyOCwgMCwgMTI3MzAsIDEyNzMyLCAxMjczNCwgCi0gICAgMTI3MzYsIDEyNzM4LCAxMjc0MCwgMTI3NDIsIDEyNzQ0LCAxMjc0NiwgMTI3NDgsIDEyNzUwLCAxMjc1MiwgMTI3NTQsIAotICAgIDEyNzU2LCAxMjc1OCwgMTI3NjAsIDEyNzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjY0LCA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCAKKyAgICA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCA2Njg4LCA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCAKKyAgICA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCA2NzEyLCA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCAKKyAgICA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCA2NzM2LCA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCAKKyAgICA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCA2NzYwLCA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCAKKyAgICA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCA2Nzg0LCA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCAKKyAgICA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCA2ODA4LCA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCAKKyAgICA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCA2ODMyLCA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCAKKyAgICA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCA2ODU2LCA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCAKKyAgICA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCA2ODgwLCA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCAKKyAgICA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCA2OTA0LCA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCAKKyAgICA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCA2OTI4LCA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCAKKyAgICA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCA2OTUyLCA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCAKKyAgICA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCA2OTc2LCA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCAKKyAgICA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCA3MDAwLCA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCAKKyAgICA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCA3MDI0LCA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCAKKyAgICA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCA3MDQ4LCA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCAKKyAgICA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCA3MDcyLCA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCAKKyAgICA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCA3MDk2LCA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCAKKyAgICA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCA3MTIwLCA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCAKKyAgICA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCA3MTQ0LCA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCAKKyAgICA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCA3MTY4LCA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCAKKyAgICA3MTg0LCA3MTg2LCA3MTg4LCA3MTkwLCA3MTkyLCA3MTk0LCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCAwLCAwLCA3MjA0LCAKKyAgICAwLCA3MjA2LCAwLCAwLCA3MjA4LCA3MjEwLCA3MjEyLCA3MjE0LCA3MjE2LCA3MjE4LCA3MjIwLCA3MjIyLCA3MjI0LCAKKyAgICA3MjI2LCAwLCA3MjI4LCAwLCA3MjMwLCAwLCAwLCA3MjMyLCA3MjM0LCAwLCAwLCAwLCA3MjM2LCA3MjM4LCA3MjQwLCAKKyAgICA3MjQyLCA3MjQ0LCA3MjQ2LCA3MjQ4LCA3MjUwLCA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCAKKyAgICA3MjY2LCA3MjY4LCA3MjcwLCA3MjcyLCA3Mjc0LCA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCAKKyAgICA3MjkwLCA3MjkyLCA3Mjk0LCA3Mjk2LCA3Mjk4LCA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCAKKyAgICA3MzE0LCA3MzE2LCA3MzE4LCA3MzIwLCA3MzIyLCA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCAKKyAgICA3MzM4LCA3MzQwLCA3MzQyLCA3MzQ0LCA3MzQ2LCA3MzQ4LCA3MzUwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCA3MzYwLCAKKyAgICA3MzYyLCA3MzY0LCA3MzY2LCA3MzY4LCA3MzcwLCAwLCAwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCAKKyAgICA3Mzg0LCA3Mzg2LCA3Mzg4LCA3MzkwLCA3MzkyLCA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCAKKyAgICA3NDA4LCA3NDEwLCA3NDEyLCA3NDE0LCA3NDE2LCA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCAKKyAgICA3NDMyLCA3NDM0LCA3NDM2LCA3NDM4LCA3NDQwLCA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCAKKyAgICA3NDU2LCA3NDU4LCA3NDYwLCA3NDYyLCA3NDY0LCA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCAKKyAgICA3NDgwLCA3NDgyLCA3NDg0LCA3NDg2LCA3NDg4LCA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCAKKyAgICA3NTA0LCA3NTA2LCA3NTA4LCA3NTEwLCA3NTEyLCA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCAKKyAgICA3NTI4LCA3NTMwLCA3NTMyLCA3NTM0LCA3NTM2LCA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCAKKyAgICA3NTUyLCA3NTU0LCA3NTU2LCA3NTU4LCA3NTYwLCA3NTYyLCA3NTY0LCA3NTY2LCA3NTY4LCA3NTcwLCA3NTcyLCA3NTc0LCAKKyAgICA3NTc2LCA3NTc4LCA3NTgwLCA3NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTg0LCAKKyAgICA3NTg3LCA3NTkwLCA3NTkzLCA3NTk3LCA3NjAxLCA3NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NjA3LCA3NjEwLCA3NjEzLCA3NjE2LCA3NjE5LCAwLCAwLCAwLCAwLCAwLCA3NjIyLCAwLCA3NjI1LCA3NjI4LCA3NjMwLCAKKyAgICA3NjMyLCA3NjM0LCA3NjM2LCA3NjM4LCA3NjQwLCA3NjQyLCA3NjQ0LCA3NjQ2LCA3NjQ4LCA3NjUxLCA3NjU0LCA3NjU3LCAKKyAgICA3NjYwLCA3NjYzLCA3NjY2LCA3NjY5LCA3NjcyLCA3Njc1LCA3Njc4LCA3NjgxLCA3Njg0LCAwLCA3Njg3LCA3NjkwLCAKKyAgICA3NjkzLCA3Njk2LCA3Njk5LCAwLCA3NzAyLCAwLCA3NzA1LCA3NzA4LCAwLCA3NzExLCA3NzE0LCAwLCA3NzE3LCA3NzIwLCAKKyAgICA3NzIzLCA3NzI2LCA3NzI5LCA3NzMyLCA3NzM1LCA3NzM4LCA3NzQxLCA3NzQ0LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCAKKyAgICA3NzU1LCA3NzU3LCA3NzU5LCA3NzYxLCA3NzYzLCA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCAKKyAgICA3Nzc5LCA3NzgxLCA3NzgzLCA3Nzg1LCA3Nzg3LCA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCAKKyAgICA3ODAzLCA3ODA1LCA3ODA3LCA3ODA5LCA3ODExLCA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCAKKyAgICA3ODI3LCA3ODI5LCA3ODMxLCA3ODMzLCA3ODM1LCA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCAKKyAgICA3ODUxLCA3ODUzLCA3ODU1LCA3ODU3LCA3ODU5LCA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCAKKyAgICA3ODc1LCA3ODc3LCA3ODc5LCA3ODgxLCA3ODgzLCA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCAKKyAgICA3ODk5LCA3OTAxLCA3OTAzLCA3OTA1LCA3OTA3LCA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCAKKyAgICA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3OTQzLCA3OTQ1LCA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCAKKyAgICA3OTYxLCA3OTYzLCA3OTY1LCA3OTY3LCA3OTY5LCA3OTcxLCA3OTczLCA3OTc1LCA3OTc3LCA3OTc5LCA3OTgxLCA3OTgzLCAKKyAgICA3OTg1LCA3OTg3LCA3OTg5LCA3OTkyLCA3OTk1LCA3OTk4LCA4MDAxLCA4MDA0LCA4MDA3LCA4MDEwLCA4MDEzLCA4MDE2LCAKKyAgICA4MDE5LCA4MDIyLCA4MDI1LCA4MDI4LCA4MDMxLCA4MDM0LCA4MDM3LCA4MDQwLCA4MDQzLCA4MDQ1LCA4MDQ3LCA4MDQ5LCAKKyAgICA4MDUxLCA4MDU0LCA4MDU3LCA4MDYwLCA4MDYzLCA4MDY2LCA4MDY5LCA4MDcyLCA4MDc1LCA4MDc4LCA4MDgxLCA4MDg0LCAKKyAgICA4MDg3LCA4MDkwLCA4MDkzLCA4MDk2LCA4MDk5LCA4MTAyLCA4MTA1LCA4MTA4LCA4MTExLCA4MTE0LCA4MTE3LCA4MTIwLCAKKyAgICA4MTIzLCA4MTI2LCA4MTI5LCA4MTMyLCA4MTM1LCA4MTM4LCA4MTQxLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTUzLCA4MTU2LCAKKyAgICA4MTU5LCA4MTYyLCA4MTY1LCA4MTY4LCA4MTcxLCA4MTc0LCA4MTc3LCA4MTgwLCA4MTgzLCA4MTg2LCA4MTg5LCA4MTkyLCAKKyAgICA4MTk1LCA4MTk4LCA4MjAxLCA4MjA0LCA4MjA3LCA4MjEwLCA4MjEzLCA4MjE2LCA4MjE5LCA4MjIyLCA4MjI1LCA4MjI4LCAKKyAgICA4MjMxLCA4MjM0LCA4MjM3LCA4MjQwLCA4MjQzLCA4MjQ2LCA4MjQ5LCA4MjUyLCA4MjU1LCA4MjU4LCA4MjYxLCA4MjY0LCAKKyAgICA4MjY3LCA4MjcwLCA4MjczLCA4Mjc2LCA4Mjc5LCA4MjgyLCA4Mjg1LCA4Mjg4LCA4MjkxLCA4Mjk0LCA4Mjk3LCA4MzAwLCAKKyAgICA4MzAzLCA4MzA2LCA4MzA5LCA4MzEyLCA4MzE1LCA4MzE4LCA4MzIxLCA4MzI0LCA4MzI3LCA4MzMwLCA4MzMzLCA4MzM3LCAKKyAgICA4MzQxLCA4MzQ1LCA4MzQ5LCA4MzUzLCA4MzU3LCA4MzYwLCA4MzYzLCA4MzY2LCA4MzY5LCA4MzcyLCA4Mzc1LCA4Mzc4LCAKKyAgICA4MzgxLCA4Mzg0LCA4Mzg3LCA4MzkwLCA4MzkzLCA4Mzk2LCA4Mzk5LCA4NDAyLCA4NDA1LCA4NDA4LCA4NDExLCA4NDE0LCAKKyAgICA4NDE3LCA4NDIwLCA4NDIzLCA4NDI2LCA4NDI5LCA4NDMyLCA4NDM1LCA4NDM4LCA4NDQxLCA4NDQ0LCA4NDQ3LCA4NDUwLCAKKyAgICA4NDUzLCA4NDU2LCA4NDU5LCA4NDYyLCA4NDY1LCA4NDY4LCA4NDcxLCA4NDc0LCA4NDc3LCA4NDgwLCA4NDgzLCA4NDg2LCAKKyAgICA4NDg5LCA4NDkyLCA4NDk1LCA4NDk4LCA4NTAxLCA4NTA0LCA4NTA3LCA4NTEwLCA4NTEzLCA4NTE2LCA4NTE5LCA4NTIyLCAKKyAgICA4NTI1LCA4NTI4LCA4NTMxLCA4NTM0LCA4NTM3LCA4NTQwLCA4NTQzLCA4NTQ2LCA4NTQ5LCA4NTUyLCA4NTU1LCA4NTU4LCAKKyAgICA4NTYxLCA4NTY0LCA4NTY3LCA4NTcwLCA4NTczLCA4NTc2LCA4NTc5LCA4NTgyLCA4NTg1LCA4NTg4LCA4NTkxLCA4NTk0LCAKKyAgICA4NTk3LCA4NjAwLCA4NjAzLCA4NjA2LCA4NjA5LCA4NjEyLCA4NjE1LCA4NjE4LCA4NjIxLCA4NjI0LCA4NjI3LCA4NjMwLCAKKyAgICA4NjMzLCA4NjM2LCA4NjM5LCA4NjQyLCA4NjQ1LCA4NjQ4LCA4NjUxLCA4NjU0LCA4NjU3LCA4NjYwLCA4NjYzLCA4NjY2LCAKKyAgICA4NjY5LCA4NjcyLCA4Njc1LCA4Njc4LCA4NjgxLCA4Njg0LCA4Njg3LCA4NjkwLCA4NjkzLCA4Njk2LCA4Njk5LCA4NzAyLCAKKyAgICA4NzA1LCA4NzA4LCA4NzExLCA4NzE0LCA4NzE3LCA4NzIwLCA4NzIzLCA4NzI2LCA4NzI5LCA4NzMyLCA4NzM1LCA4NzM4LCAKKyAgICA4NzQxLCA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzUzLCA4NzU2LCA4NzU5LCA4NzYyLCA4NzY1LCA4NzY4LCA4NzcxLCA4Nzc0LCAKKyAgICA4Nzc3LCA4NzgwLCA4NzgzLCA4Nzg3LCA4NzkxLCA4Nzk1LCA4Nzk4LCA4ODAxLCA4ODA0LCA4ODA3LCA4ODEwLCA4ODEzLCAKKyAgICA4ODE2LCA4ODE5LCA4ODIyLCA4ODI1LCA4ODI4LCA4ODMxLCA4ODM0LCA4ODM3LCA4ODQwLCA4ODQzLCA4ODQ2LCA4ODQ5LCAKKyAgICA4ODUyLCA4ODU1LCA4ODU4LCA4ODYxLCA4ODY0LCA4ODY3LCA4ODcwLCA4ODczLCA4ODc2LCA4ODc5LCA4ODgyLCA4ODg1LCAKKyAgICA4ODg4LCA4ODkxLCA4ODk0LCA4ODk3LCA4OTAwLCA4OTAzLCA4OTA2LCA4OTA5LCA4OTEyLCA4OTE1LCA4OTE4LCA4OTIxLCAKKyAgICA4OTI0LCA4OTI3LCA4OTMwLCA4OTMzLCA4OTM2LCA4OTM5LCA4OTQyLCA4OTQ1LCA4OTQ4LCA4OTUxLCA4OTU0LCA4OTU3LCAKKyAgICA4OTYwLCA4OTYzLCA4OTY2LCA4OTY5LCA4OTcyLCA4OTc1LCA4OTc4LCA4OTgxLCA4OTg0LCA4OTg3LCA4OTkwLCA4OTkzLCAKKyAgICA4OTk2LCA4OTk5LCA5MDAyLCA5MDA1LCA5MDA4LCA5MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCA5MDM0LCA5MDM4LCA5MDQyLCA5MDQ2LCAKKyAgICA5MDUwLCA5MDU0LCA5MDU4LCA5MDYyLCA5MDY2LCA5MDcwLCA5MDc0LCA5MDc4LCA5MDgyLCA5MDg2LCA5MDkwLCA5MDk0LCAKKyAgICA5MDk4LCA5MTAyLCA5MTA2LCA5MTEwLCA5MTE0LCA5MTE4LCA5MTIyLCA5MTI2LCA5MTMwLCA5MTM0LCA5MTM4LCA5MTQyLCAKKyAgICA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCA5MTc4LCA5MTgyLCA5MTg2LCA5MTkwLCAKKyAgICA5MTk0LCA5MTk4LCA5MjAyLCA5MjA2LCA5MjEwLCA5MjE0LCA5MjE4LCA5MjIyLCA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCAKKyAgICA5MjQyLCA5MjQ2LCA5MjUwLCA5MjU0LCA5MjU4LCA5MjYyLCA5MjY2LCAwLCAwLCA5MjcwLCA5Mjc0LCA5Mjc4LCA5MjgyLCAKKyAgICA5Mjg2LCA5MjkwLCA5Mjk0LCA5Mjk4LCA5MzAyLCA5MzA2LCA5MzEwLCA5MzE0LCA5MzE4LCA5MzIyLCA5MzI2LCA5MzMwLCAKKyAgICA5MzM0LCA5MzM4LCA5MzQyLCA5MzQ2LCA5MzUwLCA5MzU0LCA5MzU4LCA5MzYyLCA5MzY2LCA5MzcwLCA5Mzc0LCA5Mzc4LCAKKyAgICA5MzgyLCA5Mzg2LCA5MzkwLCA5Mzk0LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCA5NDE0LCA5NDE4LCA5NDIyLCA5NDI2LCAKKyAgICA5NDMwLCA5NDM0LCA5NDM4LCA5NDQyLCA5NDQ2LCA5NDUwLCA5NDU0LCA5NDU4LCA5NDYyLCA5NDY2LCA5NDcwLCA5NDc0LCAKKyAgICA5NDc4LCA5NDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDg2LCA5NDkwLCAKKyAgICA5NDk0LCA5NDk5LCA5NTA0LCA5NTA5LCA5NTE0LCA5NTE5LCA5NTI0LCA5NTI5LCA5NTMzLCA5NTUyLCA5NTYxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTY2LCA5NTY4LCA5NTcwLCAKKyAgICA5NTcyLCA5NTc0LCA5NTc2LCA5NTc4LCA5NTgwLCA5NTgyLCA5NTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTg2LCA5NTg4LCA5NTkwLCA5NTkyLCA5NTk0LCA5NTk2LCAKKyAgICA5NTk4LCA5NjAwLCA5NjAyLCA5NjA0LCA5NjA2LCA5NjA4LCA5NjEwLCA5NjEyLCA5NjE0LCA5NjE2LCA5NjE4LCA5NjIwLCAKKyAgICA5NjIyLCA5NjI0LCA5NjI2LCAwLCAwLCA5NjI4LCA5NjMwLCA5NjMyLCA5NjM0LCA5NjM2LCA5NjM4LCA5NjQwLCA5NjQyLCAKKyAgICA5NjQ0LCA5NjQ2LCA5NjQ4LCA5NjUwLCAwLCA5NjUyLCA5NjU0LCA5NjU2LCA5NjU4LCA5NjYwLCA5NjYyLCA5NjY0LCAKKyAgICA5NjY2LCA5NjY4LCA5NjcwLCA5NjcyLCA5Njc0LCA5Njc2LCA5Njc4LCA5NjgwLCA5NjgyLCA5Njg0LCA5Njg2LCA5Njg4LCAKKyAgICAwLCA5NjkwLCA5NjkyLCA5Njk0LCA5Njk2LCAwLCAwLCAwLCAwLCA5Njk4LCA5NzAxLCA5NzA0LCAwLCA5NzA3LCAwLCAKKyAgICA5NzEwLCA5NzEzLCA5NzE2LCA5NzE5LCA5NzIyLCA5NzI1LCA5NzI4LCA5NzMxLCA5NzM0LCA5NzM3LCA5NzQwLCA5NzQyLCAKKyAgICA5NzQ0LCA5NzQ2LCA5NzQ4LCA5NzUwLCA5NzUyLCA5NzU0LCA5NzU2LCA5NzU4LCA5NzYwLCA5NzYyLCA5NzY0LCA5NzY2LCAKKyAgICA5NzY4LCA5NzcwLCA5NzcyLCA5Nzc0LCA5Nzc2LCA5Nzc4LCA5NzgwLCA5NzgyLCA5Nzg0LCA5Nzg2LCA5Nzg4LCA5NzkwLCAKKyAgICA5NzkyLCA5Nzk0LCA5Nzk2LCA5Nzk4LCA5ODAwLCA5ODAyLCA5ODA0LCA5ODA2LCA5ODA4LCA5ODEwLCA5ODEyLCA5ODE0LCAKKyAgICA5ODE2LCA5ODE4LCA5ODIwLCA5ODIyLCA5ODI0LCA5ODI2LCA5ODI4LCA5ODMwLCA5ODMyLCA5ODM0LCA5ODM2LCA5ODM4LCAKKyAgICA5ODQwLCA5ODQyLCA5ODQ0LCA5ODQ2LCA5ODQ4LCA5ODUwLCA5ODUyLCA5ODU0LCA5ODU2LCA5ODU4LCA5ODYwLCA5ODYyLCAKKyAgICA5ODY0LCA5ODY2LCA5ODY4LCA5ODcwLCA5ODcyLCA5ODc0LCA5ODc2LCA5ODc4LCA5ODgwLCA5ODgyLCA5ODg0LCA5ODg2LCAKKyAgICA5ODg4LCA5ODkwLCA5ODkyLCA5ODk0LCA5ODk2LCA5ODk4LCA5OTAwLCA5OTAyLCA5OTA0LCA5OTA2LCA5OTA4LCA5OTEwLCAKKyAgICA5OTEyLCA5OTE0LCA5OTE2LCA5OTE4LCA5OTIwLCA5OTIyLCA5OTI0LCA5OTI2LCA5OTI4LCA5OTMwLCA5OTMyLCA5OTM0LCAKKyAgICA5OTM2LCA5OTM4LCA5OTQwLCA5OTQyLCA5OTQ0LCA5OTQ2LCA5OTQ4LCA5OTUwLCA5OTUyLCA5OTU0LCA5OTU2LCA5OTU4LCAKKyAgICA5OTYwLCA5OTYyLCA5OTY0LCA5OTY2LCA5OTY4LCA5OTcwLCA5OTcyLCA5OTc0LCA5OTc3LCA5OTgwLCA5OTgzLCA5OTg2LCAKKyAgICA5OTg5LCA5OTkyLCA5OTk1LCAwLCAwLCAwLCAwLCA5OTk4LCAxMDAwMCwgMTAwMDIsIDEwMDA0LCAxMDAwNiwgMTAwMDgsIAorICAgIDEwMDEwLCAxMDAxMiwgMTAwMTQsIDEwMDE2LCAxMDAxOCwgMTAwMjAsIDEwMDIyLCAxMDAyNCwgMTAwMjYsIDEwMDI4LCAKKyAgICAxMDAzMCwgMTAwMzIsIDEwMDM0LCAxMDAzNiwgMTAwMzgsIDEwMDQwLCAxMDA0MiwgMTAwNDQsIDEwMDQ2LCAxMDA0OCwgCisgICAgMTAwNTAsIDEwMDUyLCAxMDA1NCwgMTAwNTYsIDEwMDU4LCAxMDA2MCwgMTAwNjIsIDEwMDY0LCAxMDA2NiwgMTAwNjgsIAorICAgIDEwMDcwLCAxMDA3MiwgMTAwNzQsIDEwMDc2LCAxMDA3OCwgMTAwODAsIDEwMDgyLCAxMDA4NCwgMTAwODYsIDEwMDg4LCAKKyAgICAxMDA5MCwgMTAwOTIsIDEwMDk0LCAxMDA5NiwgMTAwOTgsIDEwMTAwLCAxMDEwMiwgMTAxMDQsIDEwMTA2LCAxMDEwOCwgCisgICAgMTAxMTAsIDEwMTEyLCAxMDExNCwgMTAxMTYsIDEwMTE4LCAxMDEyMCwgMTAxMjIsIDEwMTI0LCAxMDEyNiwgMTAxMjgsIAorICAgIDEwMTMwLCAxMDEzMiwgMTAxMzQsIDEwMTM2LCAxMDEzOCwgMTAxNDAsIDEwMTQyLCAxMDE0NCwgMTAxNDYsIDEwMTQ4LCAKKyAgICAxMDE1MCwgMTAxNTIsIDEwMTU0LCAxMDE1NiwgMTAxNTgsIDEwMTYwLCAxMDE2MiwgMTAxNjQsIDEwMTY2LCAxMDE2OCwgCisgICAgMTAxNzAsIDEwMTcyLCAxMDE3NCwgMTAxNzYsIDEwMTc4LCAxMDE4MCwgMTAxODIsIDEwMTg0LCAxMDE4NiwgMTAxODgsIAorICAgIDEwMTkwLCAxMDE5MiwgMTAxOTQsIDEwMTk2LCAxMDE5OCwgMTAyMDAsIDEwMjAyLCAxMDIwNCwgMTAyMDYsIDEwMjA4LCAKKyAgICAxMDIxMCwgMTAyMTIsIDEwMjE0LCAxMDIxNiwgMTAyMTgsIDEwMjIwLCAxMDIyMiwgMTAyMjQsIDEwMjI2LCAxMDIyOCwgCisgICAgMTAyMzAsIDEwMjMyLCAxMDIzNCwgMTAyMzYsIDEwMjM4LCAxMDI0MCwgMTAyNDIsIDEwMjQ0LCAxMDI0NiwgMTAyNDgsIAorICAgIDEwMjUwLCAxMDI1MiwgMTAyNTQsIDEwMjU2LCAxMDI1OCwgMTAyNjAsIDEwMjYyLCAxMDI2NCwgMTAyNjYsIDEwMjY4LCAKKyAgICAxMDI3MCwgMTAyNzIsIDEwMjc0LCAxMDI3NiwgMTAyNzgsIDEwMjgwLCAxMDI4MiwgMTAyODQsIDEwMjg2LCAxMDI4OCwgCisgICAgMTAyOTAsIDEwMjkyLCAxMDI5NCwgMTAyOTYsIDEwMjk4LCAxMDMwMCwgMTAzMDIsIDEwMzA0LCAxMDMwNiwgMTAzMDgsIAorICAgIDEwMzEwLCAxMDMxMiwgMTAzMTQsIDEwMzE2LCAxMDMxOCwgMTAzMjAsIDEwMzIyLCAxMDMyNCwgMTAzMjYsIDEwMzI4LCAKKyAgICAxMDMzMCwgMTAzMzIsIDEwMzM0LCAxMDMzNiwgMTAzMzgsIDEwMzQwLCAxMDM0MiwgMTAzNDQsIDEwMzQ2LCAxMDM0OCwgCisgICAgMTAzNTAsIDEwMzUyLCAxMDM1NCwgMTAzNTYsIDEwMzU4LCAxMDM2MCwgMTAzNjIsIDEwMzY0LCAxMDM2NiwgMTAzNjgsIAorICAgIDEwMzcwLCAxMDM3MiwgMTAzNzQsIDEwMzc2LCAwLCAwLCAwLCAxMDM3OCwgMTAzODAsIDEwMzgyLCAxMDM4NCwgMTAzODYsIAorICAgIDEwMzg4LCAwLCAwLCAxMDM5MCwgMTAzOTIsIDEwMzk0LCAxMDM5NiwgMTAzOTgsIDEwNDAwLCAwLCAwLCAxMDQwMiwgCisgICAgMTA0MDQsIDEwNDA2LCAxMDQwOCwgMTA0MTAsIDEwNDEyLCAwLCAwLCAxMDQxNCwgMTA0MTYsIDEwNDE4LCAwLCAwLCAwLCAKKyAgICAxMDQyMCwgMTA0MjIsIDEwNDI0LCAxMDQyNiwgMTA0MjgsIDEwNDMwLCAxMDQzMiwgMCwgMTA0MzQsIDEwNDM2LCAxMDQzOCwgCisgICAgMTA0NDAsIDEwNDQyLCAxMDQ0NCwgMTA0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyNzY0LCAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgyLCAxMjc4NSwgCi0gICAgMTI3ODgsIDEyNzkxLCAxMjc5NCwgMCwgMCwgMCwgMCwgMCwgMTI3OTcsIDEyODAxLCAxMjgwNSwgMTI4MDksIDEyODEzLCAKLSAgICAxMjgxNywgMTI4MjEsIDEyODI1LCAxMjgyOSwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgCi0gICAgMTI4NTcsIDEyODYxLCAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIAotICAgIDEyODk3LCAxMjkwMSwgMTI5MDUsIDEyOTA3LCAxMjkwOSwgMTI5MTIsIDAsIDEyOTE1LCAxMjkxNywgMTI5MTksIDEyOTIxLCAKLSAgICAxMjkyMywgMTI5MjUsIDEyOTI3LCAxMjkyOSwgMTI5MzEsIDEyOTMzLCAxMjkzNSwgMTI5MzcsIDEyOTM5LCAxMjk0MSwgCi0gICAgMTI5NDMsIDEyOTQ1LCAxMjk0NywgMTI5NDksIDEyOTUxLCAxMjk1MywgMTI5NTUsIDEyOTU3LCAxMjk1OSwgMTI5NjEsIAotICAgIDEyOTYzLCAxMjk2NSwgMTI5NjcsIDEyOTcwLCAxMjk3MywgMTI5NzYsIDEyOTc5LCAxMjk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODYsIDEyOTg5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0NDgsIDAsIDEwNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI5OTUsIDEyOTk4LCAxMzAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTMwMDMsIDEzMDA1LCAxMzAwNywgMTMwMDksIDEzMDExLCAxMzAxMywgMTMwMTUsIDEzMDE3LCAxMzAxOSwgMTMwMjEsIAotICAgIDEzMDIzLCAxMzAyNSwgMTMwMjcsIDEzMDI5LCAxMzAzMSwgMTMwMzMsIDEzMDM1LCAxMzAzNywgMTMwMzksIDEzMDQxLCAKLSAgICAxMzA0MywgMTMwNDUsIDEzMDQ3LCAxMzA0OSwgMTMwNTEsIDEzMDUzLCAxMzA1NSwgMTMwNTcsIDEzMDU5LCAxMzA2MSwgCi0gICAgMTMwNjMsIDEzMDY1LCAxMzA2NywgMTMwNjksIDEzMDcxLCAxMzA3MywgMTMwNzUsIDEzMDc3LCAxMzA3OSwgMTMwODEsIAotICAgIDEzMDgzLCAxMzA4NSwgMTMwODcsIDAsIDAsIDAsIDAsIDAsIDEzMDg5LCAxMzA5MywgMTMwOTcsIDEzMTAxLCAxMzEwNSwgCi0gICAgMTMxMDksIDEzMTEzLCAxMzExNywgMTMxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTI1LCAxMzEyNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTcsIDEwNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDQ2MywgMTA0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIAotICAgIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAKLSAgICAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgCi0gICAgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIAotICAgIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAKLSAgICAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgCi0gICAgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIAotICAgIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAKLSAgICAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgCi0gICAgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIAotICAgIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAKLSAgICAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgCi0gICAgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIAotICAgIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAKLSAgICAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgCi0gICAgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIAotICAgIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAKLSAgICAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgCi0gICAgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIAotICAgIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAKLSAgICAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgCi0gICAgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIAotICAgIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAKLSAgICAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgCi0gICAgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIAotICAgIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAKLSAgICAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgCi0gICAgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIAotICAgIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAKLSAgICAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgCi0gICAgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIAotICAgIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAKLSAgICAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgCi0gICAgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIAotICAgIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAKLSAgICAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgCi0gICAgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIAotICAgIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAKLSAgICAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgCi0gICAgMTM5MDcsIDEzOTA5LCAxMzkxMSwgMTM5MTMsIDEzOTE1LCAxMzkxNywgMTM5MTksIDEzOTIxLCAxMzkyMywgMTM5MjUsIAotICAgIDEzOTI3LCAxMzkyOSwgMTM5MzEsIDEzOTMzLCAxMzkzNSwgMTM5MzcsIDEzOTM5LCAxMzk0MSwgMTM5NDMsIDEzOTQ1LCAKLSAgICAxMzk0NywgMTM5NDksIDEzOTUxLCAxMzk1MywgMTM5NTUsIDEzOTU3LCAxMzk1OSwgMTM5NjEsIDEzOTYzLCAxMzk2NSwgCi0gICAgMTM5NjcsIDEzOTY5LCAxMzk3MSwgMTM5NzMsIDEzOTc1LCAxMzk3NywgMTM5NzksIDEzOTgxLCAxMzk4MywgMTM5ODUsIAotICAgIDEzOTg3LCAxMzk4OSwgMTM5OTEsIDEzOTkzLCAxMzk5NSwgMTM5OTcsIDEzOTk5LCAxNDAwMSwgMTQwMDMsIDE0MDA1LCAKLSAgICAxNDAwNywgMTQwMDksIDE0MDExLCAxNDAxMywgMTQwMTUsIDE0MDE3LCAxNDAxOSwgMTQwMjEsIDE0MDIzLCAxNDAyNSwgCi0gICAgMTQwMjcsIDE0MDI5LCAxNDAzMSwgMTQwMzMsIDE0MDM1LCAxNDAzNywgMTQwMzksIDE0MDQxLCAxNDA0MywgMTQwNDUsIAotICAgIDE0MDQ3LCAxNDA0OSwgMTQwNTEsIDE0MDUzLCAxNDA1NSwgMTQwNTcsIDE0MDU5LCAxNDA2MSwgMTQwNjMsIDE0MDY1LCAKLSAgICAxNDA2NywgMTQwNjksIDE0MDcxLCAxNDA3MywgMTQwNzUsIDE0MDc3LCAxNDA3OSwgMTQwODEsIDE0MDgzLCAxNDA4NSwgCi0gICAgMTQwODcsIDE0MDg5LCAxNDA5MSwgMTQwOTMsIDE0MDk1LCAxNDA5NywgMTQwOTksIDE0MTAxLCAxNDEwMywgMTQxMDUsIAotICAgIDE0MTA3LCAxNDEwOSwgMTQxMTEsIDE0MTEzLCAxNDExNSwgMTQxMTcsIDE0MTE5LCAxNDEyMSwgMTQxMjMsIDE0MTI1LCAKLSAgICAxNDEyNywgMTQxMjksIDE0MTMxLCAxNDEzMywgMTQxMzUsIDE0MTM3LCAxNDEzOSwgMTQxNDEsIDE0MTQzLCAxNDE0NSwgCi0gICAgMTQxNDcsIDE0MTQ5LCAxNDE1MSwgMTQxNTMsIDE0MTU1LCAxNDE1NywgMTQxNTksIDE0MTYxLCAxNDE2MywgMTQxNjUsIAotICAgIDE0MTY3LCAxNDE2OSwgMTQxNzEsIDE0MTczLCAxNDE3NSwgMTQxNzcsIDE0MTc5LCAxNDE4MSwgMTQxODMsIDE0MTg1LCAKLSAgICAxNDE4NywgMTQxODksIDE0MTkxLCAxNDE5MywgMTQxOTUsIDE0MTk3LCAxNDE5OSwgMTQyMDEsIDE0MjAzLCAxNDIwNSwgCi0gICAgMTQyMDcsIDE0MjA5LCAxNDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NjksIAorICAgIDEwNDcyLCAwLCAxMDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NzgsIDEwNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4NCwgMTA0ODcsIDEwNDkwLCAxMDQ5MywgMTA0OTYsIDEwNDk5LCAxMDUwMiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MDUsIDEwNTA4LCAxMDUxMSwgMTA1MTQsIDEwNTE3LCAKKyAgICAxMDUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MjMsIDEwNTI1LCAxMDUyNywgCisgICAgMTA1MjksIDEwNTMxLCAxMDUzMywgMTA1MzUsIDEwNTM3LCAxMDUzOSwgMTA1NDEsIDEwNTQzLCAxMDU0NSwgMTA1NDcsIAorICAgIDEwNTQ5LCAxMDU1MSwgMTA1NTMsIDEwNTU1LCAxMDU1NywgMTA1NTksIDEwNTYxLCAxMDU2MywgMTA1NjUsIDEwNTY3LCAKKyAgICAxMDU2OSwgMTA1NzEsIDEwNTczLCAxMDU3NSwgMTA1NzcsIDEwNTc5LCAxMDU4MSwgMTA1ODMsIDEwNTg1LCAxMDU4NywgCisgICAgMTA1ODksIDEwNTkxLCAxMDU5MywgMTA1OTUsIDEwNTk3LCAxMDU5OSwgMTA2MDEsIDEwNjAzLCAxMDYwNSwgMTA2MDcsIAorICAgIDEwNjA5LCAxMDYxMSwgMTA2MTMsIDEwNjE1LCAxMDYxNywgMTA2MTksIDEwNjIxLCAxMDYyMywgMTA2MjUsIDEwNjI3LCAKKyAgICAxMDYyOSwgMTA2MzEsIDEwNjMzLCAxMDYzNSwgMTA2MzcsIDEwNjM5LCAxMDY0MSwgMTA2NDMsIDEwNjQ1LCAxMDY0NywgCisgICAgMTA2NDksIDEwNjUxLCAxMDY1MywgMTA2NTUsIDEwNjU3LCAxMDY1OSwgMTA2NjEsIDEwNjYzLCAxMDY2NSwgMTA2NjcsIAorICAgIDEwNjY5LCAxMDY3MSwgMTA2NzMsIDEwNjc1LCAxMDY3NywgMTA2NzksIDEwNjgxLCAxMDY4MywgMTA2ODUsIDEwNjg3LCAKKyAgICAxMDY4OSwgMTA2OTEsIDAsIDEwNjkzLCAxMDY5NSwgMTA2OTcsIDEwNjk5LCAxMDcwMSwgMTA3MDMsIDEwNzA1LCAxMDcwNywgCisgICAgMTA3MDksIDEwNzExLCAxMDcxMywgMTA3MTUsIDEwNzE3LCAxMDcxOSwgMTA3MjEsIDEwNzIzLCAxMDcyNSwgMTA3MjcsIAorICAgIDEwNzI5LCAxMDczMSwgMTA3MzMsIDEwNzM1LCAxMDczNywgMTA3MzksIDEwNzQxLCAxMDc0MywgMTA3NDUsIDEwNzQ3LCAKKyAgICAxMDc0OSwgMTA3NTEsIDEwNzUzLCAxMDc1NSwgMTA3NTcsIDEwNzU5LCAxMDc2MSwgMTA3NjMsIDEwNzY1LCAxMDc2NywgCisgICAgMTA3NjksIDEwNzcxLCAxMDc3MywgMTA3NzUsIDEwNzc3LCAxMDc3OSwgMTA3ODEsIDEwNzgzLCAxMDc4NSwgMTA3ODcsIAorICAgIDEwNzg5LCAxMDc5MSwgMTA3OTMsIDEwNzk1LCAxMDc5NywgMTA3OTksIDEwODAxLCAxMDgwMywgMTA4MDUsIDEwODA3LCAKKyAgICAxMDgwOSwgMTA4MTEsIDEwODEzLCAxMDgxNSwgMTA4MTcsIDEwODE5LCAxMDgyMSwgMTA4MjMsIDEwODI1LCAxMDgyNywgCisgICAgMTA4MjksIDEwODMxLCAxMDgzMywgMCwgMTA4MzUsIDEwODM3LCAwLCAwLCAxMDgzOSwgMCwgMCwgMTA4NDEsIDEwODQzLCAwLCAKKyAgICAwLCAxMDg0NSwgMTA4NDcsIDEwODQ5LCAxMDg1MSwgMCwgMTA4NTMsIDEwODU1LCAxMDg1NywgMTA4NTksIDEwODYxLCAKKyAgICAxMDg2MywgMTA4NjUsIDEwODY3LCAxMDg2OSwgMTA4NzEsIDEwODczLCAxMDg3NSwgMCwgMTA4NzcsIDAsIDEwODc5LCAKKyAgICAxMDg4MSwgMTA4ODMsIDEwODg1LCAxMDg4NywgMTA4ODksIDEwODkxLCAwLCAxMDg5MywgMTA4OTUsIDEwODk3LCAxMDg5OSwgCisgICAgMTA5MDEsIDEwOTAzLCAxMDkwNSwgMTA5MDcsIDEwOTA5LCAxMDkxMSwgMTA5MTMsIDEwOTE1LCAxMDkxNywgMTA5MTksIAorICAgIDEwOTIxLCAxMDkyMywgMTA5MjUsIDEwOTI3LCAxMDkyOSwgMTA5MzEsIDEwOTMzLCAxMDkzNSwgMTA5MzcsIDEwOTM5LCAKKyAgICAxMDk0MSwgMTA5NDMsIDEwOTQ1LCAxMDk0NywgMTA5NDksIDEwOTUxLCAxMDk1MywgMTA5NTUsIDEwOTU3LCAxMDk1OSwgCisgICAgMTA5NjEsIDEwOTYzLCAxMDk2NSwgMTA5NjcsIDEwOTY5LCAxMDk3MSwgMTA5NzMsIDEwOTc1LCAxMDk3NywgMTA5NzksIAorICAgIDEwOTgxLCAxMDk4MywgMTA5ODUsIDEwOTg3LCAxMDk4OSwgMTA5OTEsIDEwOTkzLCAxMDk5NSwgMTA5OTcsIDEwOTk5LCAKKyAgICAxMTAwMSwgMTEwMDMsIDExMDA1LCAxMTAwNywgMTEwMDksIDExMDExLCAxMTAxMywgMTEwMTUsIDExMDE3LCAxMTAxOSwgCisgICAgMTEwMjEsIDAsIDExMDIzLCAxMTAyNSwgMTEwMjcsIDExMDI5LCAwLCAwLCAxMTAzMSwgMTEwMzMsIDExMDM1LCAxMTAzNywgCisgICAgMTEwMzksIDExMDQxLCAxMTA0MywgMTEwNDUsIDAsIDExMDQ3LCAxMTA0OSwgMTEwNTEsIDExMDUzLCAxMTA1NSwgMTEwNTcsIAorICAgIDExMDU5LCAwLCAxMTA2MSwgMTEwNjMsIDExMDY1LCAxMTA2NywgMTEwNjksIDExMDcxLCAxMTA3MywgMTEwNzUsIDExMDc3LCAKKyAgICAxMTA3OSwgMTEwODEsIDExMDgzLCAxMTA4NSwgMTEwODcsIDExMDg5LCAxMTA5MSwgMTEwOTMsIDExMDk1LCAxMTA5NywgCisgICAgMTEwOTksIDExMTAxLCAxMTEwMywgMTExMDUsIDExMTA3LCAxMTEwOSwgMTExMTEsIDExMTEzLCAxMTExNSwgMCwgMTExMTcsIAorICAgIDExMTE5LCAxMTEyMSwgMTExMjMsIDAsIDExMTI1LCAxMTEyNywgMTExMjksIDExMTMxLCAxMTEzMywgMCwgMTExMzUsIDAsIAorICAgIDAsIDAsIDExMTM3LCAxMTEzOSwgMTExNDEsIDExMTQzLCAxMTE0NSwgMTExNDcsIDExMTQ5LCAwLCAxMTE1MSwgMTExNTMsIAorICAgIDExMTU1LCAxMTE1NywgMTExNTksIDExMTYxLCAxMTE2MywgMTExNjUsIDExMTY3LCAxMTE2OSwgMTExNzEsIDExMTczLCAKKyAgICAxMTE3NSwgMTExNzcsIDExMTc5LCAxMTE4MSwgMTExODMsIDExMTg1LCAxMTE4NywgMTExODksIDExMTkxLCAxMTE5MywgCisgICAgMTExOTUsIDExMTk3LCAxMTE5OSwgMTEyMDEsIDExMjAzLCAxMTIwNSwgMTEyMDcsIDExMjA5LCAxMTIxMSwgMTEyMTMsIAorICAgIDExMjE1LCAxMTIxNywgMTEyMTksIDExMjIxLCAxMTIyMywgMTEyMjUsIDExMjI3LCAxMTIyOSwgMTEyMzEsIDExMjMzLCAKKyAgICAxMTIzNSwgMTEyMzcsIDExMjM5LCAxMTI0MSwgMTEyNDMsIDExMjQ1LCAxMTI0NywgMTEyNDksIDExMjUxLCAxMTI1MywgCisgICAgMTEyNTUsIDExMjU3LCAxMTI1OSwgMTEyNjEsIDExMjYzLCAxMTI2NSwgMTEyNjcsIDExMjY5LCAxMTI3MSwgMTEyNzMsIAorICAgIDExMjc1LCAxMTI3NywgMTEyNzksIDExMjgxLCAxMTI4MywgMTEyODUsIDExMjg3LCAxMTI4OSwgMTEyOTEsIDExMjkzLCAKKyAgICAxMTI5NSwgMTEyOTcsIDExMjk5LCAxMTMwMSwgMTEzMDMsIDExMzA1LCAxMTMwNywgMTEzMDksIDExMzExLCAxMTMxMywgCisgICAgMTEzMTUsIDExMzE3LCAxMTMxOSwgMTEzMjEsIDExMzIzLCAxMTMyNSwgMTEzMjcsIDExMzI5LCAxMTMzMSwgMTEzMzMsIAorICAgIDExMzM1LCAxMTMzNywgMTEzMzksIDExMzQxLCAxMTM0MywgMTEzNDUsIDExMzQ3LCAxMTM0OSwgMTEzNTEsIDExMzUzLCAKKyAgICAxMTM1NSwgMTEzNTcsIDExMzU5LCAxMTM2MSwgMTEzNjMsIDExMzY1LCAxMTM2NywgMTEzNjksIDExMzcxLCAxMTM3MywgCisgICAgMTEzNzUsIDExMzc3LCAxMTM3OSwgMTEzODEsIDExMzgzLCAxMTM4NSwgMTEzODcsIDExMzg5LCAxMTM5MSwgMTEzOTMsIAorICAgIDExMzk1LCAxMTM5NywgMTEzOTksIDExNDAxLCAxMTQwMywgMTE0MDUsIDExNDA3LCAxMTQwOSwgMTE0MTEsIDExNDEzLCAKKyAgICAxMTQxNSwgMTE0MTcsIDExNDE5LCAxMTQyMSwgMTE0MjMsIDExNDI1LCAxMTQyNywgMTE0MjksIDExNDMxLCAxMTQzMywgCisgICAgMTE0MzUsIDExNDM3LCAxMTQzOSwgMTE0NDEsIDExNDQzLCAxMTQ0NSwgMTE0NDcsIDExNDQ5LCAxMTQ1MSwgMTE0NTMsIAorICAgIDExNDU1LCAxMTQ1NywgMTE0NTksIDExNDYxLCAxMTQ2MywgMTE0NjUsIDExNDY3LCAxMTQ2OSwgMTE0NzEsIDExNDczLCAKKyAgICAxMTQ3NSwgMTE0NzcsIDExNDc5LCAxMTQ4MSwgMTE0ODMsIDExNDg1LCAxMTQ4NywgMTE0ODksIDExNDkxLCAxMTQ5MywgCisgICAgMTE0OTUsIDExNDk3LCAxMTQ5OSwgMTE1MDEsIDExNTAzLCAxMTUwNSwgMTE1MDcsIDExNTA5LCAxMTUxMSwgMTE1MTMsIAorICAgIDExNTE1LCAxMTUxNywgMTE1MTksIDExNTIxLCAxMTUyMywgMTE1MjUsIDExNTI3LCAxMTUyOSwgMTE1MzEsIDExNTMzLCAKKyAgICAxMTUzNSwgMTE1MzcsIDExNTM5LCAxMTU0MSwgMTE1NDMsIDExNTQ1LCAxMTU0NywgMTE1NDksIDExNTUxLCAxMTU1MywgCisgICAgMTE1NTUsIDExNTU3LCAxMTU1OSwgMTE1NjEsIDExNTYzLCAxMTU2NSwgMTE1NjcsIDExNTY5LCAxMTU3MSwgMTE1NzMsIAorICAgIDExNTc1LCAxMTU3NywgMTE1NzksIDExNTgxLCAxMTU4MywgMTE1ODUsIDExNTg3LCAxMTU4OSwgMTE1OTEsIDExNTkzLCAKKyAgICAxMTU5NSwgMTE1OTcsIDExNTk5LCAxMTYwMSwgMTE2MDMsIDExNjA1LCAxMTYwNywgMTE2MDksIDExNjExLCAxMTYxMywgCisgICAgMTE2MTUsIDExNjE3LCAxMTYxOSwgMTE2MjEsIDExNjIzLCAxMTYyNSwgMTE2MjcsIDExNjI5LCAxMTYzMSwgMTE2MzMsIAorICAgIDExNjM1LCAxMTYzNywgMTE2MzksIDExNjQxLCAxMTY0MywgMTE2NDUsIDExNjQ3LCAxMTY0OSwgMTE2NTEsIDExNjUzLCAKKyAgICAxMTY1NSwgMTE2NTcsIDExNjU5LCAxMTY2MSwgMTE2NjMsIDExNjY1LCAxMTY2NywgMTE2NjksIDExNjcxLCAxMTY3MywgCisgICAgMTE2NzUsIDExNjc3LCAxMTY3OSwgMTE2ODEsIDExNjgzLCAxMTY4NSwgMTE2ODcsIDExNjg5LCAxMTY5MSwgMTE2OTMsIAorICAgIDExNjk1LCAxMTY5NywgMTE2OTksIDExNzAxLCAxMTcwMywgMTE3MDUsIDExNzA3LCAxMTcwOSwgMTE3MTEsIDExNzEzLCAKKyAgICAxMTcxNSwgMTE3MTcsIDExNzE5LCAxMTcyMSwgMTE3MjMsIDExNzI1LCAxMTcyNywgMTE3MjksIDExNzMxLCAxMTczMywgCisgICAgMTE3MzUsIDExNzM3LCAxMTczOSwgMTE3NDEsIDExNzQzLCAxMTc0NSwgMTE3NDcsIDExNzQ5LCAxMTc1MSwgMTE3NTMsIAorICAgIDExNzU1LCAxMTc1NywgMTE3NTksIDExNzYxLCAxMTc2MywgMTE3NjUsIDExNzY3LCAxMTc2OSwgMTE3NzEsIDExNzczLCAKKyAgICAxMTc3NSwgMTE3NzcsIDExNzc5LCAxMTc4MSwgMTE3ODMsIDExNzg1LCAxMTc4NywgMTE3ODksIDExNzkxLCAxMTc5MywgCisgICAgMTE3OTUsIDExNzk3LCAxMTc5OSwgMTE4MDEsIDExODAzLCAxMTgwNSwgMTE4MDcsIDExODA5LCAxMTgxMSwgMTE4MTMsIAorICAgIDExODE1LCAxMTgxNywgMTE4MTksIDExODIxLCAxMTgyMywgMTE4MjUsIDExODI3LCAxMTgyOSwgMCwgMCwgMTE4MzEsIAorICAgIDExODMzLCAxMTgzNSwgMTE4MzcsIDExODM5LCAxMTg0MSwgMTE4NDMsIDExODQ1LCAxMTg0NywgMTE4NDksIDExODUxLCAKKyAgICAxMTg1MywgMTE4NTUsIDExODU3LCAxMTg1OSwgMTE4NjEsIDExODYzLCAxMTg2NSwgMTE4NjcsIDExODY5LCAxMTg3MSwgCisgICAgMTE4NzMsIDExODc1LCAxMTg3NywgMTE4NzksIDExODgxLCAxMTg4MywgMTE4ODUsIDExODg3LCAxMTg4OSwgMTE4OTEsIAorICAgIDExODkzLCAxMTg5NSwgMTE4OTcsIDExODk5LCAxMTkwMSwgMTE5MDMsIDExOTA1LCAxMTkwNywgMTE5MDksIDExOTExLCAKKyAgICAxMTkxMywgMTE5MTUsIDExOTE3LCAxMTkxOSwgMTE5MjEsIDExOTIzLCAxMTkyNSwgMTE5MjcsIDExOTI5LCAxMTkzMSwgCisgICAgMTE5MzMsIDExOTM1LCAxMTkzNywgMTE5MzksIDExOTQxLCAxMTk0MywgMTE5NDUsIDExOTQ3LCAxMTk0OSwgMTE5NTEsIAorICAgIDExOTUzLCAxMTk1NSwgMTE5NTcsIDExOTU5LCAxMTk2MSwgMTE5NjMsIDExOTY1LCAxMTk2NywgMTE5NjksIDExOTcxLCAKKyAgICAxMTk3MywgMTE5NzUsIDExOTc3LCAxMTk3OSwgMTE5ODEsIDExOTgzLCAxMTk4NSwgMTE5ODcsIDExOTg5LCAxMTk5MSwgCisgICAgMTE5OTMsIDExOTk1LCAxMTk5NywgMTE5OTksIDEyMDAxLCAxMjAwMywgMTIwMDUsIDEyMDA3LCAxMjAwOSwgMTIwMTEsIAorICAgIDEyMDEzLCAxMjAxNSwgMTIwMTcsIDEyMDE5LCAxMjAyMSwgMTIwMjMsIDEyMDI1LCAxMjAyNywgMTIwMjksIDEyMDMxLCAKKyAgICAxMjAzMywgMTIwMzUsIDEyMDM3LCAxMjAzOSwgMTIwNDEsIDEyMDQzLCAxMjA0NSwgMTIwNDcsIDEyMDQ5LCAxMjA1MSwgCisgICAgMTIwNTMsIDEyMDU1LCAxMjA1NywgMTIwNTksIDEyMDYxLCAxMjA2MywgMTIwNjUsIDEyMDY3LCAxMjA2OSwgMTIwNzEsIAorICAgIDEyMDczLCAxMjA3NSwgMTIwNzcsIDEyMDc5LCAxMjA4MSwgMTIwODMsIDEyMDg1LCAxMjA4NywgMTIwODksIDEyMDkxLCAKKyAgICAxMjA5MywgMTIwOTUsIDEyMDk3LCAxMjA5OSwgMTIxMDEsIDEyMTAzLCAxMjEwNSwgMTIxMDcsIDEyMTA5LCAxMjExMSwgCisgICAgMTIxMTMsIDEyMTE1LCAxMjExNywgMTIxMTksIDEyMTIxLCAxMjEyMywgMTIxMjUsIDEyMTI3LCAxMjEyOSwgMTIxMzEsIAorICAgIDEyMTMzLCAxMjEzNSwgMTIxMzcsIDEyMTM5LCAxMjE0MSwgMTIxNDMsIDEyMTQ1LCAxMjE0NywgMTIxNDksIDEyMTUxLCAKKyAgICAxMjE1MywgMTIxNTUsIDEyMTU3LCAxMjE1OSwgMTIxNjEsIDEyMTYzLCAxMjE2NSwgMTIxNjcsIDEyMTY5LCAxMjE3MSwgCisgICAgMTIxNzMsIDEyMTc1LCAxMjE3NywgMTIxNzksIDEyMTgxLCAxMjE4MywgMTIxODUsIDEyMTg3LCAxMjE4OSwgMTIxOTEsIAorICAgIDEyMTkzLCAxMjE5NSwgMTIxOTcsIDEyMTk5LCAxMjIwMSwgMTIyMDMsIDEyMjA1LCAxMjIwNywgMTIyMDksIDEyMjExLCAKKyAgICAxMjIxMywgMTIyMTUsIDEyMjE3LCAxMjIxOSwgMTIyMjEsIDEyMjIzLCAxMjIyNSwgMTIyMjcsIDEyMjI5LCAxMjIzMSwgCisgICAgMTIyMzMsIDEyMjM1LCAxMjIzNywgMTIyMzksIDEyMjQxLCAxMjI0MywgMTIyNDUsIDEyMjQ3LCAxMjI0OSwgMTIyNTEsIAorICAgIDEyMjUzLCAxMjI1NSwgMTIyNTcsIDEyMjU5LCAxMjI2MSwgMTIyNjMsIDEyMjY1LCAxMjI2NywgMTIyNjksIDEyMjcxLCAKKyAgICAxMjI3MywgMTIyNzUsIDEyMjc3LCAxMjI3OSwgMTIyODEsIDEyMjgzLCAxMjI4NSwgMTIyODcsIDEyMjg5LCAxMjI5MSwgCisgICAgMTIyOTMsIDEyMjk1LCAxMjI5NywgMTIyOTksIDEyMzAxLCAxMjMwMywgMTIzMDUsIDEyMzA3LCAxMjMwOSwgMTIzMTEsIAorICAgIDEyMzEzLCAxMjMxNSwgMTIzMTcsIDEyMzE5LCAxMjMyMSwgMTIzMjMsIDEyMzI1LCAxMjMyNywgMTIzMjksIDEyMzMxLCAKKyAgICAxMjMzMywgMTIzMzUsIDEyMzM3LCAxMjMzOSwgMTIzNDEsIDEyMzQzLCAxMjM0NSwgMTIzNDcsIDEyMzQ5LCAxMjM1MSwgCisgICAgMTIzNTMsIDEyMzU1LCAxMjM1NywgMTIzNTksIDEyMzYxLCAxMjM2MywgMTIzNjUsIDEyMzY3LCAxMjM2OSwgMTIzNzEsIAorICAgIDEyMzczLCAxMjM3NSwgMTIzNzcsIDEyMzc5LCAxMjM4MSwgMTIzODMsIDEyMzg1LCAxMjM4NywgMTIzODksIDEyMzkxLCAKKyAgICAxMjM5MywgMTIzOTUsIDEyMzk3LCAxMjM5OSwgMTI0MDEsIDEyNDAzLCAxMjQwNSwgMTI0MDcsIDEyNDA5LCAxMjQxMSwgCisgICAgMTI0MTMsIDAsIDAsIDEyNDE1LCAxMjQxNywgMTI0MTksIDEyNDIxLCAxMjQyMywgMTI0MjUsIDEyNDI3LCAxMjQyOSwgCisgICAgMTI0MzEsIDEyNDMzLCAxMjQzNSwgMTI0MzcsIDEyNDM5LCAxMjQ0MSwgMTI0NDMsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIAorICAgIDEyNDUxLCAxMjQ1MywgMTI0NTUsIDEyNDU3LCAxMjQ1OSwgMTI0NjEsIDEyNDYzLCAxMjQ2NSwgMTI0NjcsIDEyNDY5LCAKKyAgICAxMjQ3MSwgMTI0NzMsIDEyNDc1LCAxMjQ3NywgMTI0NzksIDEyNDgxLCAxMjQ4MywgMTI0ODUsIDEyNDg3LCAxMjQ4OSwgCisgICAgMTI0OTEsIDEyNDkzLCAxMjQ5NSwgMTI0OTcsIDEyNDk5LCAxMjUwMSwgMTI1MDMsIDEyNTA1LCAxMjUwNywgMTI1MDksIAorICAgIDEyNTExLCAxMjUxMywgMTI1MTUsIDEyNTE3LCAxMjUxOSwgMTI1MjEsIDAsIDEyNTIzLCAxMjUyNSwgMTI1MjcsIDEyNTI5LCAKKyAgICAxMjUzMSwgMTI1MzMsIDEyNTM1LCAxMjUzNywgMTI1MzksIDEyNTQxLCAxMjU0MywgMTI1NDUsIDEyNTQ3LCAxMjU0OSwgCisgICAgMTI1NTEsIDEyNTUzLCAxMjU1NSwgMTI1NTcsIDEyNTU5LCAxMjU2MSwgMTI1NjMsIDEyNTY1LCAxMjU2NywgMTI1NjksIAorICAgIDEyNTcxLCAxMjU3MywgMTI1NzUsIDAsIDEyNTc3LCAxMjU3OSwgMCwgMTI1ODEsIDAsIDAsIDEyNTgzLCAwLCAxMjU4NSwgCisgICAgMTI1ODcsIDEyNTg5LCAxMjU5MSwgMTI1OTMsIDEyNTk1LCAxMjU5NywgMTI1OTksIDEyNjAxLCAxMjYwMywgMCwgMTI2MDUsIAorICAgIDEyNjA3LCAxMjYwOSwgMTI2MTEsIDAsIDEyNjEzLCAwLCAxMjYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2MTcsIDAsIDAsIAorICAgIDAsIDAsIDEyNjE5LCAwLCAxMjYyMSwgMCwgMTI2MjMsIDAsIDEyNjI1LCAxMjYyNywgMTI2MjksIDAsIDEyNjMxLCAxMjYzMywgCisgICAgMCwgMTI2MzUsIDAsIDAsIDEyNjM3LCAwLCAxMjYzOSwgMCwgMTI2NDEsIDAsIDEyNjQzLCAwLCAxMjY0NSwgMCwgMTI2NDcsIAorICAgIDEyNjQ5LCAwLCAxMjY1MSwgMCwgMCwgMTI2NTMsIDEyNjU1LCAxMjY1NywgMTI2NTksIDAsIDEyNjYxLCAxMjY2MywgCisgICAgMTI2NjUsIDEyNjY3LCAxMjY2OSwgMTI2NzEsIDEyNjczLCAwLCAxMjY3NSwgMTI2NzcsIDEyNjc5LCAxMjY4MSwgMCwgCisgICAgMTI2ODMsIDEyNjg1LCAxMjY4NywgMTI2ODksIDAsIDEyNjkxLCAwLCAxMjY5MywgMTI2OTUsIDEyNjk3LCAxMjY5OSwgCisgICAgMTI3MDEsIDEyNzAzLCAxMjcwNSwgMTI3MDcsIDEyNzA5LCAxMjcxMSwgMCwgMTI3MTMsIDEyNzE1LCAxMjcxNywgMTI3MTksIAorICAgIDEyNzIxLCAxMjcyMywgMTI3MjUsIDEyNzI3LCAxMjcyOSwgMTI3MzEsIDEyNzMzLCAxMjczNSwgMTI3MzcsIDEyNzM5LCAKKyAgICAxMjc0MSwgMTI3NDMsIDEyNzQ1LCAwLCAwLCAwLCAwLCAwLCAxMjc0NywgMTI3NDksIDEyNzUxLCAwLCAxMjc1MywgMTI3NTUsIAorICAgIDEyNzU3LCAxMjc1OSwgMTI3NjEsIDAsIDEyNzYzLCAxMjc2NSwgMTI3NjcsIDEyNzY5LCAxMjc3MSwgMTI3NzMsIDEyNzc1LCAKKyAgICAxMjc3NywgMTI3NzksIDEyNzgxLCAxMjc4MywgMTI3ODUsIDEyNzg3LCAxMjc4OSwgMTI3OTEsIDEyNzkzLCAxMjc5NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3OTcsIDEyODAwLCAKKyAgICAxMjgwMywgMTI4MDYsIDEyODA5LCAxMjgxMiwgMTI4MTUsIDEyODE4LCAxMjgyMSwgMTI4MjQsIDEyODI3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMjgzMCwgMTI4MzQsIDEyODM4LCAxMjg0MiwgMTI4NDYsIDEyODUwLCAxMjg1NCwgMTI4NTgsIDEyODYyLCAKKyAgICAxMjg2NiwgMTI4NzAsIDEyODc0LCAxMjg3OCwgMTI4ODIsIDEyODg2LCAxMjg5MCwgMTI4OTQsIDEyODk4LCAxMjkwMiwgCisgICAgMTI5MDYsIDEyOTEwLCAxMjkxNCwgMTI5MTgsIDEyOTIyLCAxMjkyNiwgMTI5MzAsIDEyOTM0LCAxMjkzOCwgMTI5NDAsIAorICAgIDEyOTQyLCAxMjk0NSwgMCwgMTI5NDgsIDEyOTUwLCAxMjk1MiwgMTI5NTQsIDEyOTU2LCAxMjk1OCwgMTI5NjAsIDEyOTYyLCAKKyAgICAxMjk2NCwgMTI5NjYsIDEyOTY4LCAxMjk3MCwgMTI5NzIsIDEyOTc0LCAxMjk3NiwgMTI5NzgsIDEyOTgwLCAxMjk4MiwgCisgICAgMTI5ODQsIDEyOTg2LCAxMjk4OCwgMTI5OTAsIDEyOTkyLCAxMjk5NCwgMTI5OTYsIDEyOTk4LCAxMzAwMCwgMTMwMDMsIAorICAgIDEzMDA2LCAxMzAwOSwgMTMwMTIsIDEzMDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAxOSwgMTMwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzMDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAyOCwgMTMwMzEsIAorICAgIDEzMDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAzNiwgMTMwMzgsIDEzMDQwLCAxMzA0MiwgCisgICAgMTMwNDQsIDEzMDQ2LCAxMzA0OCwgMTMwNTAsIDEzMDUyLCAxMzA1NCwgMTMwNTYsIDEzMDU4LCAxMzA2MCwgMTMwNjIsIAorICAgIDEzMDY0LCAxMzA2NiwgMTMwNjgsIDEzMDcwLCAxMzA3MiwgMTMwNzQsIDEzMDc2LCAxMzA3OCwgMTMwODAsIDEzMDgyLCAKKyAgICAxMzA4NCwgMTMwODYsIDEzMDg4LCAxMzA5MCwgMTMwOTIsIDEzMDk0LCAxMzA5NiwgMTMwOTgsIDEzMTAwLCAxMzEwMiwgCisgICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMxMjIsIDEzMTI2LCAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNTgsIDEzMTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MiwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCisgICAgMTMxNzYsIDEzMTc4LCAxMzE4MCwgMTMxODIsIDEzMTg0LCAxMzE4NiwgMTMxODgsIDEzMTkwLCAxMzE5MiwgMTMxOTQsIAorICAgIDEzMTk2LCAxMzE5OCwgMTMyMDAsIDEzMjAyLCAxMzIwNCwgMTMyMDYsIDEzMjA4LCAxMzIxMCwgMTMyMTIsIDEzMjE0LCAKKyAgICAxMzIxNiwgMTMyMTgsIDEzMjIwLCAxMzIyMiwgMTMyMjQsIDEzMjI2LCAxMzIyOCwgMTMyMzAsIDEzMjMyLCAxMzIzNCwgCisgICAgMTMyMzYsIDEzMjM4LCAxMzI0MCwgMTMyNDIsIDEzMjQ0LCAxMzI0NiwgMTMyNDgsIDEzMjUwLCAxMzI1MiwgMTMyNTQsIAorICAgIDEzMjU2LCAxMzI1OCwgMTMyNjAsIDEzMjYyLCAxMzI2NCwgMTMyNjYsIDEzMjY4LCAxMzI3MCwgMTMyNzIsIDEzMjc0LCAKKyAgICAxMzI3NiwgMTMyNzgsIDEzMjgwLCAxMzI4MiwgMTMyODQsIDEzMjg2LCAxMzI4OCwgMTMyOTAsIDEzMjkyLCAxMzI5NCwgCisgICAgMTMyOTYsIDEzMjk4LCAxMzMwMCwgMTMzMDIsIDEzMzA0LCAxMzMwNiwgMTMzMDgsIDEzMzEwLCAxMzMxMiwgMTMzMTQsIAorICAgIDEzMzE2LCAxMzMxOCwgMTMzMjAsIDEzMzIyLCAxMzMyNCwgMTMzMjYsIDEzMzI4LCAxMzMzMCwgMTMzMzIsIDEzMzM0LCAKKyAgICAxMzMzNiwgMTMzMzgsIDEzMzQwLCAxMzM0MiwgMTMzNDQsIDEzMzQ2LCAxMzM0OCwgMTMzNTAsIDEzMzUyLCAxMzM1NCwgCisgICAgMTMzNTYsIDEzMzU4LCAxMzM2MCwgMTMzNjIsIDEzMzY0LCAxMzM2NiwgMTMzNjgsIDEzMzcwLCAxMzM3MiwgMTMzNzQsIAorICAgIDEzMzc2LCAxMzM3OCwgMTMzODAsIDEzMzgyLCAxMzM4NCwgMTMzODYsIDEzMzg4LCAxMzM5MCwgMTMzOTIsIDEzMzk0LCAKKyAgICAxMzM5NiwgMTMzOTgsIDEzNDAwLCAxMzQwMiwgMTM0MDQsIDEzNDA2LCAxMzQwOCwgMTM0MTAsIDEzNDEyLCAxMzQxNCwgCisgICAgMTM0MTYsIDEzNDE4LCAxMzQyMCwgMTM0MjIsIDEzNDI0LCAxMzQyNiwgMTM0MjgsIDEzNDMwLCAxMzQzMiwgMTM0MzQsIAorICAgIDEzNDM2LCAxMzQzOCwgMTM0NDAsIDEzNDQyLCAxMzQ0NCwgMTM0NDYsIDEzNDQ4LCAxMzQ1MCwgMTM0NTIsIDEzNDU0LCAKKyAgICAxMzQ1NiwgMTM0NTgsIDEzNDYwLCAxMzQ2MiwgMTM0NjQsIDEzNDY2LCAxMzQ2OCwgMTM0NzAsIDEzNDcyLCAxMzQ3NCwgCisgICAgMTM0NzYsIDEzNDc4LCAxMzQ4MCwgMTM0ODIsIDEzNDg0LCAxMzQ4NiwgMTM0ODgsIDEzNDkwLCAxMzQ5MiwgMTM0OTQsIAorICAgIDEzNDk2LCAxMzQ5OCwgMTM1MDAsIDEzNTAyLCAxMzUwNCwgMTM1MDYsIDEzNTA4LCAxMzUxMCwgMTM1MTIsIDEzNTE0LCAKKyAgICAxMzUxNiwgMTM1MTgsIDEzNTIwLCAxMzUyMiwgMTM1MjQsIDEzNTI2LCAxMzUyOCwgMTM1MzAsIDEzNTMyLCAxMzUzNCwgCisgICAgMTM1MzYsIDEzNTM4LCAxMzU0MCwgMTM1NDIsIDEzNTQ0LCAxMzU0NiwgMTM1NDgsIDEzNTUwLCAxMzU1MiwgMTM1NTQsIAorICAgIDEzNTU2LCAxMzU1OCwgMTM1NjAsIDEzNTYyLCAxMzU2NCwgMTM1NjYsIDEzNTY4LCAxMzU3MCwgMTM1NzIsIDEzNTc0LCAKKyAgICAxMzU3NiwgMTM1NzgsIDEzNTgwLCAxMzU4MiwgMTM1ODQsIDEzNTg2LCAxMzU4OCwgMTM1OTAsIDEzNTkyLCAxMzU5NCwgCisgICAgMTM1OTYsIDEzNTk4LCAxMzYwMCwgMTM2MDIsIDEzNjA0LCAxMzYwNiwgMTM2MDgsIDEzNjEwLCAxMzYxMiwgMTM2MTQsIAorICAgIDEzNjE2LCAxMzYxOCwgMTM2MjAsIDEzNjIyLCAxMzYyNCwgMTM2MjYsIDEzNjI4LCAxMzYzMCwgMTM2MzIsIDEzNjM0LCAKKyAgICAxMzYzNiwgMTM2MzgsIDEzNjQwLCAxMzY0MiwgMTM2NDQsIDEzNjQ2LCAxMzY0OCwgMTM2NTAsIDEzNjUyLCAxMzY1NCwgCisgICAgMTM2NTYsIDEzNjU4LCAxMzY2MCwgMTM2NjIsIDEzNjY0LCAxMzY2NiwgMTM2NjgsIDEzNjcwLCAxMzY3MiwgMTM2NzQsIAorICAgIDEzNjc2LCAxMzY3OCwgMTM2ODAsIDEzNjgyLCAxMzY4NCwgMTM2ODYsIDEzNjg4LCAxMzY5MCwgMTM2OTIsIDEzNjk0LCAKKyAgICAxMzY5NiwgMTM2OTgsIDEzNzAwLCAxMzcwMiwgMTM3MDQsIDEzNzA2LCAxMzcwOCwgMTM3MTAsIDEzNzEyLCAxMzcxNCwgCisgICAgMTM3MTYsIDEzNzE4LCAxMzcyMCwgMTM3MjIsIDEzNzI0LCAxMzcyNiwgMTM3MjgsIDEzNzMwLCAxMzczMiwgMTM3MzQsIAorICAgIDEzNzM2LCAxMzczOCwgMTM3NDAsIDEzNzQyLCAxMzc0NCwgMTM3NDYsIDEzNzQ4LCAxMzc1MCwgMTM3NTIsIDEzNzU0LCAKKyAgICAxMzc1NiwgMTM3NTgsIDEzNzYwLCAxMzc2MiwgMTM3NjQsIDEzNzY2LCAxMzc2OCwgMTM3NzAsIDEzNzcyLCAxMzc3NCwgCisgICAgMTM3NzYsIDEzNzc4LCAxMzc4MCwgMTM3ODIsIDEzNzg0LCAxMzc4NiwgMTM3ODgsIDEzNzkwLCAxMzc5MiwgMTM3OTQsIAorICAgIDEzNzk2LCAxMzc5OCwgMTM4MDAsIDEzODAyLCAxMzgwNCwgMTM4MDYsIDEzODA4LCAxMzgxMCwgMTM4MTIsIDEzODE0LCAKKyAgICAxMzgxNiwgMTM4MTgsIDEzODIwLCAxMzgyMiwgMTM4MjQsIDEzODI2LCAxMzgyOCwgMTM4MzAsIDEzODMyLCAxMzgzNCwgCisgICAgMTM4MzYsIDEzODM4LCAxMzg0MCwgMTM4NDIsIDEzODQ0LCAxMzg0NiwgMTM4NDgsIDEzODUwLCAxMzg1MiwgMTM4NTQsIAorICAgIDEzODU2LCAxMzg1OCwgMTM4NjAsIDEzODYyLCAxMzg2NCwgMTM4NjYsIDEzODY4LCAxMzg3MCwgMTM4NzIsIDEzODc0LCAKKyAgICAxMzg3NiwgMTM4NzgsIDEzODgwLCAxMzg4MiwgMTM4ODQsIDEzODg2LCAxMzg4OCwgMTM4OTAsIDEzODkyLCAxMzg5NCwgCisgICAgMTM4OTYsIDEzODk4LCAxMzkwMCwgMTM5MDIsIDEzOTA0LCAxMzkwNiwgMTM5MDgsIDEzOTEwLCAxMzkxMiwgMTM5MTQsIAorICAgIDEzOTE2LCAxMzkxOCwgMTM5MjAsIDEzOTIyLCAxMzkyNCwgMTM5MjYsIDEzOTI4LCAxMzkzMCwgMTM5MzIsIDEzOTM0LCAKKyAgICAxMzkzNiwgMTM5MzgsIDEzOTQwLCAxMzk0MiwgMTM5NDQsIDEzOTQ2LCAxMzk0OCwgMTM5NTAsIDEzOTUyLCAxMzk1NCwgCisgICAgMTM5NTYsIDEzOTU4LCAxMzk2MCwgMTM5NjIsIDEzOTY0LCAxMzk2NiwgMTM5NjgsIDEzOTcwLCAxMzk3MiwgMTM5NzQsIAorICAgIDEzOTc2LCAxMzk3OCwgMTM5ODAsIDEzOTgyLCAxMzk4NCwgMTM5ODYsIDEzOTg4LCAxMzk5MCwgMTM5OTIsIDEzOTk0LCAKKyAgICAxMzk5NiwgMTM5OTgsIDE0MDAwLCAxNDAwMiwgMTQwMDQsIDE0MDA2LCAxNDAwOCwgMTQwMTAsIDE0MDEyLCAxNDAxNCwgCisgICAgMTQwMTYsIDE0MDE4LCAxNDAyMCwgMTQwMjIsIDE0MDI0LCAxNDAyNiwgMTQwMjgsIDE0MDMwLCAxNDAzMiwgMTQwMzQsIAorICAgIDE0MDM2LCAxNDAzOCwgMTQwNDAsIDE0MDQyLCAxNDA0NCwgMTQwNDYsIDE0MDQ4LCAxNDA1MCwgMTQwNTIsIDE0MDU0LCAKKyAgICAxNDA1NiwgMTQwNTgsIDE0MDYwLCAxNDA2MiwgMTQwNjQsIDE0MDY2LCAxNDA2OCwgMTQwNzAsIDE0MDcyLCAxNDA3NCwgCisgICAgMTQwNzYsIDE0MDc4LCAxNDA4MCwgMTQwODIsIDE0MDg0LCAxNDA4NiwgMTQwODgsIDE0MDkwLCAxNDA5MiwgMTQwOTQsIAorICAgIDE0MDk2LCAxNDA5OCwgMTQxMDAsIDE0MTAyLCAxNDEwNCwgMTQxMDYsIDE0MTA4LCAxNDExMCwgMTQxMTIsIDE0MTE0LCAKKyAgICAxNDExNiwgMTQxMTgsIDE0MTIwLCAxNDEyMiwgMTQxMjQsIDE0MTI2LCAxNDEyOCwgMTQxMzAsIDE0MTMyLCAxNDEzNCwgCisgICAgMTQxMzYsIDE0MTM4LCAxNDE0MCwgMTQxNDIsIDE0MTQ0LCAxNDE0NiwgMTQxNDgsIDE0MTUwLCAxNDE1MiwgMTQxNTQsIAorICAgIDE0MTU2LCAxNDE1OCwgMTQxNjAsIDE0MTYyLCAxNDE2NCwgMTQxNjYsIDE0MTY4LCAxNDE3MCwgMTQxNzIsIDE0MTc0LCAKKyAgICAxNDE3NiwgMTQxNzgsIDE0MTgwLCAxNDE4MiwgMTQxODQsIDE0MTg2LCAxNDE4OCwgMTQxOTAsIDE0MTkyLCAxNDE5NCwgCisgICAgMTQxOTYsIDE0MTk4LCAxNDIwMCwgMTQyMDIsIDE0MjA0LCAxNDIwNiwgMTQyMDgsIDE0MjEwLCAxNDIxMiwgMTQyMTQsIAorICAgIDE0MjE2LCAxNDIxOCwgMTQyMjAsIDE0MjIyLCAxNDIyNCwgMTQyMjYsIDE0MjI4LCAxNDIzMCwgMTQyMzIsIDE0MjM0LCAKKyAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogTkZDIHBhaXJzICovCiAjZGVmaW5lIENPTVBfU0hJRlQgMgogc3RhdGljIHVuc2lnbmVkIHNob3J0IGNvbXBfaW5kZXhbXSA9IHsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA1LCA2LCA3LCA4LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMTEsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMywgCi0gICAgMTQsIDE1LCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE4LCAwLCAxOSwgMjAsIDIxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzIsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNCwgMzUsIDM2LCAwLCAzNywgMzgsIDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MCwgNDEsIDQyLCA0MywgNDQsIAotICAgIDQ1LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCAwLCA0OSwgMCwgNTAsIDUxLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDU0LCAwLCA1NSwgNTYsIDU3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OCwgNTksIDAsIDAsIDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MSwgNjIsIAotICAgIDYzLCAwLCA2NCwgNjUsIDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MywgNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1LCA3NiwgNzcsIAotICAgIDc4LCA3OSwgODAsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODMsIDg0LCAwLCA4NSwgODYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDg3LCA4OCwgMCwgODksIDkwLCA5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIsIDkzLCA5NCwgCi0gICAgOTUsIDk2LCA5NywgOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwMSwgMTAyLCAwLCAwLCAxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDYsIDEwNywgMCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDksIDExMCwgMTExLCAwLCAxMTIsIDAsIDExMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0LCAxMTUsIDExNiwgCi0gICAgMTE3LCAxMTgsIDExOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxMjEsIDAsIDEyMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIzLCAxMjQsIDEyNSwgMCwgMCwgMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcsIAotICAgIDEyOCwgMCwgMTI5LCAxMzAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCi0gICAgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0MCwgMTQxLCAxNDIsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDUsIDE0NiwgMCwgMTQ3LCAKLSAgICAxNDgsIDE0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNTcsIDAsIDE1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5LCAwLCAxNjAsIAotICAgIDAsIDE2MSwgMTYyLCAxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NCwgMCwgMTY1LCAwLCAxNjYsIDE2NywgMTY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjksIDE3MCwgMCwgMCwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzIsIAotICAgIDE3MywgMTc0LCAwLCAxNzUsIDE3NiwgMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgCi0gICAgMTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODQsIDE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTMsIDE5NCwgMTk1LCAKLSAgICAwLCAxOTYsIDE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTk4LCAxOTksIDAsIDIwMCwgMjAxLCAyMDIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjEwLCAwLCAwLCAwLCAyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMiwgMjEzLCAyMTQsIDAsIDIxNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTcsIAotICAgIDIxOCwgMjE5LCAwLCAyMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMSwgMjIyLCAyMjMsIDAsIDIyNCwgMCwgCi0gICAgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjI4LCAwLCAyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzIsIDIzMywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyMzUsIDAsIDIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjQwLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NSwgCi0gICAgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDcsIDAsIDI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MSwgMjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NCwgMCwgMjU1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NywgMCwgCi0gICAgMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTksIDI2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2NiwgMCwgMjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDAsIDI2OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyODMsIDAsIDI4NCwgMCwgMjg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODYsIDAsIDI4NywgMCwgCi0gICAgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODksIDAsIDI5MCwgMCwgMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyOTIsIDAsIDI5MywgMCwgMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNSwgMzA2LCAwLCAzMDcsIAotICAgIDAsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA5LCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxMSwgMCwgMCwgMzEyLCAwLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE1LCAwLCAzMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMCwgMzIxLCAwLCAzMjIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMywgMCwgMCwgMzI0LCAwLCAwLCAwLCAzMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjgsIDMyOSwgMCwgMzMwLCAwLCAwLCAwLCAzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMiwgMCwgMCwgCi0gICAgMzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzQsIDAsIDAsIDMzNSwgMCwgMCwgMCwgMzM2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzMzcsIDMzOCwgMCwgMzM5LCAwLCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MSwgMCwgMCwgCi0gICAgMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM0NCwgMzQ1LCAwLCAzNDYsIDAsIDAsIDAsIDM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMzQ4LCAwLCAwLCAzNDksIAotICAgIDAsIDAsIDAsIDM1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NiwgMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjEsIDM2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NSwgMzY2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY5LCAzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNzYsIDM3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MCwgCi0gICAgMzgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg0LCAzODUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0MDksIDQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDExLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0LCA0MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxOSwgNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzMsIDAsIAotICAgIDAsIDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MCwgNDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NDIsIDQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDUwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ1OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDc0LCAwLCAwLCAwLCAwLCAwLCAwLCA0NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDk1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTksIDAsIDAsIDAsIDAsIDAsIDAsIDUwMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTA0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTEwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUyMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIyLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTM0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTczLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjMzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA1LCAKKyAgICA2LCA3LCA4LCA5LCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEsIDAsIDAsIDEyLCAwLCAxMywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDE1LCAxNiwgMTcsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMjAsIDAsIDIxLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIAorICAgIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzIsIDMzLCAzNCwgMzUsIDAsIDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzgsIDM5LCAwLCAKKyAgICA0MCwgNDEsIDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDAsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIAorICAgIDUxLCA1MiwgNTMsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTYsIDAsIDU3LCA1OCwgNTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwLCAwLCA2MSwgMCwgNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYzLCA2NCwgNjUsIDAsIDY2LCA2NywgNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY5LCA3MCwgNzEsIDcyLCA3MywgMCwgCisgICAgNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1LCA3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzcsIDAsIDc4LCA3OSwgODAsIDgxLCAwLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDg0LCA4NSwgCisgICAgMCwgODYsIDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMSwgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMsIDEwNCwgMCwgMCwgMTA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNywgMTA4LCAxMDksIDAsIDExMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExLCAxMTIsIDExMywgCisgICAgMTE0LCAxMTUsIDAsIDAsIDExNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIAorICAgIDEyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzLCAwLCAxMjQsIDAsIDAsIDEyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTI2LCAxMjcsIDEyOCwgMCwgMCwgMTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNywgMTM4LCAxMzksIAorICAgIDE0MCwgMTQxLCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDUsIDE0NiwgMCwgMCwgMTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDgsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NSwgMTU2LCAxNTcsIAorICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyLCAwLCAxNjMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NCwgMCwgMTY1LCAwLCAxNjYsIDE2NywgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNjksIDAsIDAsIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzUsIAorICAgIDE3NiwgMCwgMCwgMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgCisgICAgMTgzLCAxODQsIDE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkyLCAwLCAxOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAxLCAyMDIsIAorICAgIDIwMywgMjA0LCAyMDUsIDIwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjA3LCAyMDgsIDAsIDIwOSwgCisgICAgMjEwLCAyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE5LCAwLCAwLCAwLCAyMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIyMSwgMjIyLCAyMjMsIDAsIDIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjYsIDIyNywgMjI4LCAwLCAyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDIzMCwgMjMxLCAyMzIsIDAsIDIzMywgMCwgMjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAwLCAyMzgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNDQsIDI0NSwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0OCwgMjQ5LCAyNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI1MSwgMjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjU1LCAyNTYsIDAsIDI1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU4LCAwLCAKKyAgICAyNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIAorICAgIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjUsIDI2NiwgMjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjcwLCAyNzEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc2LCAyNzcsIDAsIDI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjc5LCAwLCAyODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgMjgyLCAKKyAgICAyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjk3LCAyOTgsIDI5OSwgMCwgMzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDEsIDAsIDMwMiwgMCwgMzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDQsIDMwNSwgMzA2LCAwLCAzMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOCwgMCwgMzA5LCAwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjIsIDAsIDAsIAorICAgIDMyMywgMCwgMCwgMzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDAsIDAsIDMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzI3LCAwLCAwLCAwLCAzMjgsIDAsIDAsIDMyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMwLCAKKyAgICAzMzEsIDAsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMzLCAwLCAwLCAwLCAzMzQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzM2LCAzMzcsIDMzOCwgMCwgMzM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDAsIDAsIDAsIDM0MSwgCisgICAgMCwgMCwgMCwgMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ1LCAzNDYsIDAsIAorICAgIDAsIDM0NywgMCwgMCwgMzQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDksIDAsIDAsIDM1MCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUxLCAwLCAwLCAwLCAzNTIsIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU0LCAzNTUsIDAsIDM1NiwgMCwgMCwgMCwgMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTgsIDAsIDAsIDAsIDM1OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNjEsIDM2MiwgMzYzLCAwLCAzNjQsIDAsIDAsIDM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY2LCAwLCAKKyAgICAwLCAzNjcsIDAsIDAsIDAsIDM2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNzAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NCwgMzc1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzksIDM4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzgxLCAzODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg0LCAzODUsIDM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OSwgMzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM5OCwgMzk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMSwgNDAyLCA0MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDYsIDQwNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOCwgCisgICAgNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNywgNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ2MSwgNDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgNDY4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEzLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNywgMCwgMCwgMCwgMCwgMCwgMCwgNTI4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTQwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgNTU4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDYyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDYyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY1NiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvbXBfZGF0YVtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDAsIDAsIDg4MDAsIDAsIDAsIDAsIDg4MTUsIDE5MiwgMTkzLCAxOTQsIAotICAgIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIDAsIAotICAgIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgMCwgMjYyLCAKLSAgICAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAxOTksIDAsIDAsIDAsIDAsIDc2OTAsIDAsIDAsIDAsIDAsIAotICAgIDI3MCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgMjAwLCAyMDEsIDIwMiwgNzg2OCwgCi0gICAgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAwLCAwLCAwLCA3ODY0LCAwLCAwLCAwLCAKLSAgICA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgMCwgMCwgNzcxMCwgMCwgMCwgNTAwLCAyODQsIDAsIDc3MTIsIDI4NiwgCi0gICAgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDI5MCwgMCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCA3NzE0LCA3NzE4LCAwLCAwLCAKLSAgICAwLCA1NDIsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIDc3MjIsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDI5NiwgCi0gICAgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCA0NjMsIDUyMCwgNTIyLCAwLCAwLCAwLCA3ODgyLCAwLCAwLCAwLCAwLCAKLSAgICAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDAsIDAsIDMwOCwgMCwgMCwgNzcyOCwgMCwgMCwgMCwgMCwgMCwgNDg4LCAwLCAKLSAgICA3NzMwLCAwLCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDc3MzIsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAKLSAgICA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDc3NDIsIDAsIDAsIDAsIDAsIDc3NDQsIDAsIAotICAgIDAsIDc3NDYsIDAsIDAsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIDAsIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgCi0gICAgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIAotICAgIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAwLCA0MTYsIDc4ODQsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgCi0gICAgNzc2NCwgMCwgMCwgMCwgMCwgNzc2NiwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCA3NzY4LCAwLCAwLCAwLCAwLCAzNDQsIAotICAgIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDAsIDAsIDAsIDAsIDc3NzQsIDAsIDAsIDM0NiwgMzQ4LCAKLSAgICAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIDUzNiwgMzUwLCAwLCAwLCAwLCAwLCAKLSAgICA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCA3NzkyLCAwLCAwLCA3NzkwLCAwLCAKLSAgICAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAKLSAgICAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgNzc5NiwgMCwgMCwgMCwgMCwgMCwgNzgwNCwgMCwgCi0gICAgNzgwNiwgMCwgMCwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCA3ODEyLCAwLCA3ODE2LCAwLCAwLCAwLCAwLCAKLSAgICA3ODE4LCA3ODIwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIAotICAgIDc5MjQsIDAsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAzODEsIDAsIDc4MjYsIDAsIDAsIAotICAgIDAsIDAsIDc4MjgsIDAsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjU3LCAyNTksIDU1MSwgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgCi0gICAgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIDc2ODEsIDAsIDAsIDI2MSwgMCwgMCwgMCwgNzY4MywgMCwgMCwgNzY4NSwgCi0gICAgMCwgMCwgMCwgMCwgNzY4NywgMCwgMCwgMjYzLCAyNjUsIDAsIDAsIDAsIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAyMzEsIAotICAgIDAsIDAsIDAsIDAsIDc2OTEsIDAsIDAsIDAsIDAsIDI3MSwgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgCi0gICAgNzY5NSwgMCwgMjMyLCAyMzMsIDIzNCwgNzg2OSwgMjc1LCAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgCi0gICAgNTE5LCAwLCAwLCAwLCA3ODY1LCAwLCAwLCAwLCA1NTMsIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgMCwgMCwgNzcxMSwgCi0gICAgMCwgMCwgNTAxLCAyODUsIDAsIDc3MTMsIDI4NywgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDI5MSwgMCwgMCwgMCwgMCwgCi0gICAgMjkzLCAwLCAwLCAwLCA3NzE1LCA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIAotICAgIDc3MjMsIDAsIDc4MzAsIDAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCAKLSAgICA1MjEsIDUyMywgMCwgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAwLCAwLCAzMDksIDAsIAotICAgIDAsIDAsIDAsIDQ5NiwgMCwgNzcyOSwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDAsIDAsIAotICAgIDAsIDAsIDc3MzMsIDAsIDAsIDMxNCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIDAsIAotICAgIDc3NDEsIDAsIDAsIDc3MzksIDAsIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIDAsIDUwNSwgCi0gICAgMzI0LCAwLCAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAKLSAgICAwLCAwLCA3NzUzLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCA0NjYsIAotICAgIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDAsIDAsIDAsIDAsIDQ5MSwgMCwgMCwgNzc2NSwgMCwgMCwgMCwgMCwgNzc2NywgCi0gICAgMCwgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAwLCAKLSAgICAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAKLSAgICAzNTMsIDAsIDc3NzksIDAsIDAsIDUzNywgMzUxLCAwLCAwLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIAotICAgIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAyNDksIDI1MCwgMjUxLCAzNjEsIDM2MywgCi0gICAgMzY1LCAwLCAyNTIsIDc5MTEsIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIDc5MDksIDc3OTUsIDAsIDAsIAotICAgIDAsIDM3MSwgNzc5OSwgMCwgNzc5NywgMCwgMCwgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgNzgwOSwgNzgxMSwgCi0gICAgMzczLCAwLCAwLCAwLCA3ODE1LCA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAwLCAwLCAwLCA3ODE5LCA3ODIxLCAKLSAgICA3OTIzLCAyNTMsIDM3NSwgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDAsIAotICAgIDAsIDM3OCwgNzgyNSwgMCwgMCwgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIAotICAgIDAsIDgxNzMsIDkwMSwgMCwgMCwgODEyOSwgMCwgMCwgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgNzg0OCwgMCwgMCwgMCwgCi0gICAgNDc4LCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCA3Njg4LCAwLCAwLCAKLSAgICA3ODcyLCA3ODcwLCAwLCA3ODc2LCA3ODc0LCAwLCAwLCAwLCAwLCA3NzI2LCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAKLSAgICA3ODkyLCAwLCAwLCAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDU1NCwgMCwgMCwgMCwgMCwgNTEwLCAwLCAKLSAgICAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIDc4NDksIAotICAgIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgMCwgNTA3LCAwLCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgNzY4OSwgCi0gICAgMCwgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgNzg3NSwgMCwgMCwgMCwgMCwgNzcyNywgMCwgMCwgNzg5MSwgNzg4OSwgMCwgCi0gICAgNzg5NSwgNzg5MywgMCwgMCwgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAwLCA3NzU5LCA1NTUsIDAsIDAsIDAsIDAsIAotICAgIDUxMSwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc0LCA3ODU2LCA3ODU0LCAwLCAKLSAgICA3ODYwLCA3ODU4LCAwLCAwLCAwLCA3ODU3LCA3ODU1LCAwLCA3ODYxLCA3ODU5LCAwLCAwLCAwLCA3NzAwLCA3NzAyLCAwLCAKLSAgICAwLCA3NzAxLCA3NzAzLCAwLCAwLCA3NzYwLCA3NzYyLCAwLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCAwLCAwLCA3NzgwLCAwLCAKLSAgICAwLCAwLCA3NzgxLCAwLCAwLCAwLCA3NzgyLCAwLCAwLCAwLCA3NzgzLCAwLCAwLCA3ODAwLCAwLCAwLCAwLCA3ODAxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3ODAyLCAwLCAwLCAwLCA3ODAzLCAwLCAwLCA3ODM1LCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAKLSAgICA3OTAyLCAwLCAwLCAwLCAwLCA3OTA2LCAwLCAwLCA3OTAxLCA3ODk5LCAwLCA3OTA1LCA3OTAzLCAwLCAwLCAwLCAwLCAKLSAgICA3OTA3LCAwLCAwLCA3OTE0LCA3OTEyLCAwLCA3OTE4LCA3OTE2LCAwLCAwLCAwLCAwLCA3OTIwLCAwLCAwLCA3OTE1LCAKLSAgICA3OTEzLCAwLCA3OTE5LCA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDQ5MiwgMCwgMCwgMCwgCi0gICAgNDkzLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMCwgNzcwOCwgMCwgMCwgMCwgNzcwOSwgMCwgMCwgCi0gICAgNTYwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgODEyMiwgOTAyLCAwLCAwLCA4MTIxLCA4MTIwLCAwLCAKLSAgICAwLCAwLCAwLCA3OTQ0LCA3OTQ1LCAwLCA4MTI0LCAwLCAwLCA4MTM2LCA5MDQsIDAsIDAsIDAsIDAsIDc5NjAsIDc5NjEsIAotICAgIDgxMzgsIDkwNSwgMCwgMCwgMCwgMCwgNzk3NiwgNzk3NywgMCwgODE0MCwgMCwgMCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCAKLSAgICA4MTUyLCAwLCA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDgxODQsIDkwOCwgMCwgMCwgMCwgMCwgODAwOCwgODAwOSwgMCwgMCwgCi0gICAgMCwgODE3MiwgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDgxODYsIDkxMSwgCi0gICAgMCwgMCwgMCwgMCwgODA0MCwgODA0MSwgMCwgODE4OCwgMCwgMCwgMCwgODExNiwgMCwgMCwgMCwgODEzMiwgMCwgMCwgCi0gICAgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCAwLCAwLCAwLCAwLCA3OTM2LCA3OTM3LCA4MTE4LCA4MTE1LCAwLCAwLCAKLSAgICA4MDUwLCA5NDEsIDAsIDAsIDAsIDAsIDc5NTIsIDc5NTMsIDgwNTIsIDk0MiwgMCwgMCwgMCwgMCwgNzk2OCwgNzk2OSwgCi0gICAgODEzNCwgODEzMSwgMCwgMCwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIAotICAgIDgxNTAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgMCwgMCwgMCwgMCwgODAwMCwgODAwMSwgMCwgMCwgODE2NCwgODE2NSwgODA1OCwgCi0gICAgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIDAsIDAsIDgwMTYsIDgwMTcsIDgxNjYsIDAsIDAsIDAsIDgwNjAsIAotICAgIDk3NCwgMCwgMCwgMCwgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgODE0NiwgOTEyLCAwLCAwLCA4MTUxLCAwLCAKLSAgICAwLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDAsIDgxODAsIDAsIDAsIDAsIDk3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTgwLCAwLCAwLCAwLCAxMDMxLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAxMDI3LCAwLCAwLCAxMDI0LCAwLCAwLCAwLCAwLCAKLSAgICAxMjM4LCAwLCAxMDI1LCAwLCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAwLCAxMjQ2LCAxMDM3LCAwLCAwLCAwLCAxMjUwLCAKLSAgICAxMDQ5LCAwLCAxMjUyLCAwLCAxMDM2LCAwLCAwLCAwLCAwLCAwLCAxMjU0LCAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAKLSAgICAxMjY2LCAwLCAwLCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAxMjcyLCAwLCAwLCAwLCAxMjYwLCAwLCAxMjMzLCAwLCAxMjM1LCAKLSAgICAwLCAxMTA3LCAwLCAwLCAxMTA0LCAwLCAwLCAwLCAwLCAxMjM5LCAwLCAxMTA1LCAwLCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAKLSAgICAwLCAxMjQ3LCAxMTE3LCAwLCAwLCAwLCAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAxMTE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjU1LCAxMjYzLCAxMTE4LCAwLCAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAxMjczLCAKLSAgICAwLCAwLCAwLCAxMjYxLCAwLCAwLCAwLCAxMTExLCAxMTQyLCAwLCAwLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQyLCAwLCAwLCAwLCAxMjQzLCAwLCAwLCAwLCAxMjU4LCAwLCAwLCAwLCAxMjU5LCAwLCAwLCAxNTcwLCAxNTcxLCAKLSAgICAxNTczLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcyLCAwLCAwLCAwLCAxNTc0LCAwLCAwLCAwLCAxNzMwLCAwLCAwLCAwLCAKLSAgICAxNzQ3LCAwLCAwLCAwLCAxNzI4LCAwLCAyMzQ1LCAwLCAwLCAwLCAyMzUzLCAwLCAwLCAwLCAyMzU2LCAwLCAwLCAwLCAwLCAKLSAgICAyNTA3LCAyNTA4LCAyODkxLCAyODg4LCAyODkyLCAwLCAyOTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMDE5LCAwLCAzMTQ0LCAwLCAwLCAwLCAwLCAwLCAzMjY0LCAwLCAwLCAzMjc0LCAzMjcxLCAKLSAgICAzMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjc1LCAwLCAzNDAyLCAzNDA0LCAwLCAwLCAzNDAzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAwLCAwLCAzNTQ5LCAwLCAwLCA0MTM0LCAwLCAwLCAwLCAwLCA2OTE4LCAwLCAKLSAgICAwLCAwLCA2OTIwLCAwLCAwLCAwLCA2OTIyLCAwLCAwLCAwLCA2OTI0LCAwLCAwLCAwLCA2OTI2LCAwLCAwLCAwLCA2OTMwLCAKLSAgICAwLCAwLCAwLCA2OTcxLCAwLCAwLCAwLCA2OTczLCAwLCAwLCAwLCA2OTc2LCAwLCAwLCAwLCA2OTc3LCAwLCAwLCAwLCAKLSAgICA2OTc5LCA3NzM2LCAwLCAwLCAwLCA3NzM3LCAwLCAwLCAwLCA3NzcyLCAwLCAwLCAwLCA3NzczLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3Nzg0LCAwLCAwLCAwLCA3Nzg1LCAwLCAwLCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAwLCAwLCA3ODUzLCAwLCAwLCAKLSAgICA3ODYzLCAwLCAwLCAwLCAwLCA3ODc4LCAwLCAwLCAwLCA3ODc5LCAwLCAwLCAwLCA3ODk2LCAwLCAwLCAwLCA3ODk3LCAwLCAKLSAgICA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCAwLCAwLCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCA4MDY1LCAwLCAwLCAKLSAgICAwLCA4MDY2LCAwLCAwLCAwLCA4MDY3LCAwLCAwLCAwLCA4MDY4LCAwLCAwLCAwLCA4MDY5LCAwLCAwLCAwLCA4MDcwLCAwLCAKLSAgICAwLCAwLCA4MDcxLCAwLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCAwLCAwLCA3OTQ3LCA3OTQ5LCAwLCAwLCAKLSAgICA3OTUxLCA4MDczLCAwLCAwLCAwLCA4MDc0LCAwLCAwLCAwLCA4MDc1LCAwLCAwLCAwLCA4MDc2LCAwLCAwLCAwLCA4MDc3LCAKLSAgICAwLCAwLCAwLCA4MDc4LCAwLCAwLCAwLCA4MDc5LCAwLCAwLCA3OTU0LCA3OTU2LCAwLCAwLCA3OTU1LCA3OTU3LCAwLCAwLCAKLSAgICA3OTYyLCA3OTY0LCAwLCAwLCA3OTYzLCA3OTY1LCAwLCAwLCA3OTcwLCA3OTcyLCAwLCAwLCA3OTc0LCA4MDgwLCAwLCAwLCAKLSAgICA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCAwLCA4MDgyLCAwLCAwLCAwLCA4MDgzLCAwLCAwLCAwLCAKLSAgICA4MDg0LCAwLCAwLCAwLCA4MDg1LCAwLCAwLCAwLCA4MDg2LCAwLCAwLCAwLCA4MDg3LCAwLCAwLCA3OTc4LCA3OTgwLCAwLCAKLSAgICAwLCA3OTgyLCA4MDg4LCAwLCAwLCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCA4MDg5LCAwLCAwLCAwLCA4MDkwLCAwLCAwLCAKLSAgICAwLCA4MDkxLCAwLCAwLCAwLCA4MDkyLCAwLCAwLCAwLCA4MDkzLCAwLCAwLCAwLCA4MDk0LCAwLCAwLCAwLCA4MDk1LCAwLCAKLSAgICAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCAwLCAwLCA3OTg3LCA3OTg5LCAwLCAwLCA3OTkxLCAwLCAwLCAwLCAKLSAgICA3OTk0LCA3OTk2LCAwLCAwLCA3OTk4LCAwLCAwLCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAwLCAwLCAwLCA4MDAyLCAKLSAgICA4MDA0LCAwLCAwLCA4MDAzLCA4MDA1LCAwLCAwLCA4MDEwLCA4MDEyLCAwLCAwLCA4MDExLCA4MDEzLCAwLCAwLCA4MDE4LCAKLSAgICA4MDIwLCAwLCAwLCA4MDIyLCAwLCAwLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAKLSAgICAwLCAwLCA4MDMxLCAwLCAwLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCAwLCA4MDM1LCA4MDM3LCAwLCAKLSAgICAwLCA4MDM5LCA4MDk3LCAwLCAwLCAwLCA4MDk4LCAwLCAwLCAwLCA4MDk5LCAwLCAwLCAwLCA4MTAwLCAwLCAwLCAwLCAKLSAgICA4MTAxLCAwLCAwLCAwLCA4MTAyLCAwLCAwLCAwLCA4MTAzLCAwLCAwLCA4MDQyLCA4MDQ0LCAwLCAwLCA4MDQ2LCA4MTA0LCAKLSAgICAwLCAwLCA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCAwLCAwLCA4MTA2LCAwLCAwLCAwLCA4MTA3LCAwLCAwLCAKLSAgICAwLCA4MTA4LCAwLCAwLCAwLCA4MTA5LCAwLCAwLCAwLCA4MTEwLCAwLCAwLCAwLCA4MTExLCAwLCAwLCAwLCA4MTE0LCAwLCAKLSAgICAwLCAwLCA4MTMwLCAwLCAwLCAwLCA4MTc4LCAwLCAwLCAwLCA4MTE5LCAwLCAwLCA4MTQxLCA4MTQyLCAwLCAwLCA4MTQzLCAKLSAgICAwLCAwLCAwLCAwLCA4MTM1LCAwLCAwLCAwLCA4MTgzLCAwLCAwLCA4MTU3LCA4MTU4LCAwLCAwLCA4MTU5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4NjAyLCAwLCAwLCAwLCA4NjAzLCAwLCAwLCAwLCA4NjIyLCAwLCAwLCAwLCA4NjUzLCAwLCAwLCAwLCAKLSAgICA4NjU1LCAwLCAwLCAwLCA4NjU0LCAwLCAwLCAwLCA4NzA4LCAwLCAwLCAwLCA4NzEzLCAwLCAwLCAwLCA4NzE2LCAwLCAwLCAKLSAgICAwLCA4NzQwLCAwLCAwLCAwLCA4NzQyLCAwLCAwLCAwLCA4NzY5LCAwLCAwLCAwLCA4NzcyLCAwLCAwLCAwLCA4Nzc1LCAwLCAKLSAgICAwLCAwLCA4Nzc3LCAwLCAwLCAwLCA4ODEzLCAwLCAwLCAwLCA4ODAyLCAwLCAwLCAwLCA4ODE2LCAwLCAwLCAwLCA4ODE3LCAKLSAgICAwLCAwLCAwLCA4ODIwLCAwLCAwLCAwLCA4ODIxLCAwLCAwLCAwLCA4ODI0LCAwLCAwLCAwLCA4ODI1LCAwLCAwLCAwLCAKLSAgICA4ODMyLCAwLCAwLCAwLCA4ODMzLCAwLCAwLCAwLCA4OTI4LCAwLCAwLCAwLCA4OTI5LCAwLCAwLCAwLCA4ODM2LCAwLCAwLCAKLSAgICAwLCA4ODM3LCAwLCAwLCAwLCA4ODQwLCAwLCAwLCAwLCA4ODQxLCAwLCAwLCAwLCA4OTMwLCAwLCAwLCAwLCA4OTMxLCAwLCAKLSAgICAwLCAwLCA4ODc2LCAwLCAwLCAwLCA4ODc3LCAwLCAwLCAwLCA4ODc4LCAwLCAwLCAwLCA4ODc5LCAwLCAwLCAwLCA4OTM4LCAKLSAgICAwLCAwLCAwLCA4OTM5LCAwLCAwLCAwLCA4OTQwLCAwLCAwLCAwLCA4OTQxLCAxMjQzNiwgMCwgMCwgMCwgMTIzNjQsIDAsIDAsIAotICAgIDAsIDEyMzY2LCAwLCAwLCAwLCAxMjM2OCwgMCwgMCwgMCwgMTIzNzAsIDAsIDAsIDAsIDEyMzcyLCAwLCAwLCAwLCAxMjM3NCwgCi0gICAgMCwgMCwgMCwgMTIzNzYsIDAsIDAsIDAsIDEyMzc4LCAwLCAwLCAwLCAxMjM4MCwgMCwgMCwgMCwgMTIzODIsIDAsIDAsIDAsIAotICAgIDEyMzg0LCAwLCAwLCAwLCAxMjM4NiwgMCwgMCwgMCwgMTIzODksIDAsIDAsIDAsIDEyMzkxLCAwLCAwLCAwLCAxMjM5MywgMCwgCi0gICAgMCwgMCwgMTI0MDAsIDEyNDAxLCAwLCAwLCAxMjQwMywgMTI0MDQsIDAsIDAsIDEyNDA2LCAxMjQwNywgMCwgMCwgMTI0MDksIAotICAgIDEyNDEwLCAwLCAwLCAxMjQxMiwgMTI0MTMsIDAsIDAsIDEyNDQ2LCAwLCAwLCAwLCAxMjUzMiwgMCwgMCwgMCwgMTI0NjAsIAotICAgIDAsIDAsIDAsIDEyNDYyLCAwLCAwLCAwLCAxMjQ2NCwgMCwgMCwgMCwgMTI0NjYsIDAsIDAsIDAsIDEyNDY4LCAwLCAwLCAwLCAKLSAgICAxMjQ3MCwgMCwgMCwgMCwgMTI0NzIsIDAsIDAsIDAsIDEyNDc0LCAwLCAwLCAwLCAxMjQ3NiwgMCwgMCwgMCwgMTI0NzgsIDAsIAotICAgIDAsIDAsIDEyNDgwLCAwLCAwLCAwLCAxMjQ4MiwgMCwgMCwgMCwgMTI0ODUsIDAsIDAsIDAsIDEyNDg3LCAwLCAwLCAwLCAKLSAgICAxMjQ4OSwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAwLCAwLCAxMjQ5OSwgMTI1MDAsIDAsIDAsIDEyNTAyLCAxMjUwMywgMCwgCi0gICAgMCwgMTI1MDUsIDEyNTA2LCAwLCAwLCAxMjUwOCwgMTI1MDksIDAsIDAsIDEyNTM1LCAwLCAwLCAwLCAxMjUzNiwgMCwgMCwgCi0gICAgMCwgMTI1MzcsIDAsIDAsIDAsIDEyNTM4LCAwLCAwLCAwLCAxMjU0MiwgMCwgMCwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDAsIAotICAgIDY5Nzg4LCAwLCAwLCAwLCA2OTgwMywgMCwgMCwgMCwgMCwgNjk5MzQsIDAsIDAsIDAsIDY5OTM1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODE0LCAwLCA4ODAwLCAwLCAwLCAwLCAwLCAwLCA4ODE1LCAwLCAwLCAxOTIsIDE5MywgCisgICAgMTk0LCAxOTUsIDI1NiwgMjU4LCA1NTAsIDE5NiwgNzg0MiwgMTk3LCAwLCA0NjEsIDUxMiwgNTE0LCAwLCAwLCAwLCA3ODQwLCAKKyAgICAwLCA3NjgwLCAwLCAwLCAyNjAsIDAsIDAsIDAsIDAsIDAsIDc2ODIsIDAsIDAsIDc2ODQsIDAsIDAsIDAsIDAsIDc2ODYsIDAsIAorICAgIDAsIDAsIDAsIDI2MiwgMjY0LCAwLCAwLCAwLCAyNjYsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMTk5LCAwLCAKKyAgICAwLCA3NjkwLCAwLCAwLCAwLCAwLCAyNzAsIDAsIDc2OTIsIDAsIDAsIDAsIDc2OTYsIDAsIDc2OTgsIDAsIDAsIDc2OTQsIDAsIAorICAgIDAsIDAsIDIwMCwgMjAxLCAyMDIsIDc4NjgsIDI3NCwgMjc2LCAyNzgsIDIwMywgNzg2NiwgMCwgMCwgMjgyLCA1MTYsIDUxOCwgCisgICAgMCwgMCwgMCwgNzg2NCwgMCwgMCwgMCwgNTUyLCAyODAsIDc3MDQsIDAsIDc3MDYsIDAsIDAsIDc3MTAsIDAsIDAsIDAsIDAsIAorICAgIDUwMCwgMjg0LCAwLCA3NzEyLCAyODYsIDI4OCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAwLCAwLCAwLCAwLCAyOTAsIDAsIDAsIAorICAgIDI5MiwgMCwgMCwgMCwgNzcxNCwgNzcxOCwgMCwgMCwgMCwgNTQyLCAwLCA3NzE2LCAwLCAwLCAwLCA3NzIwLCAwLCAwLCAKKyAgICA3NzIyLCAwLCAwLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyOTYsIDI5OCwgMzAwLCAzMDQsIDIwNywgNzg4MCwgMCwgMCwgCisgICAgNDYzLCA1MjAsIDUyMiwgMCwgMCwgMCwgNzg4MiwgMzAyLCAwLCAwLCA3NzI0LCAwLCAwLCAzMDgsIDAsIDAsIDAsIDAsIAorICAgIDc3MjgsIDAsIDQ4OCwgMCwgMCwgMCwgMCwgMCwgNzczMCwgMCwgMCwgMCwgMzEwLCA3NzMyLCAwLCAwLCAwLCAwLCAzMTMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgNzczNCwgMCwgMCwgMCwgMzE1LCAwLCA3NzQwLCAwLCAwLCA3NzM4LCAwLCAwLCAwLCAKKyAgICAwLCA3NzQyLCA3NzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA3NzQ2LCA1MDQsIDMyMywgMCwgMjA5LCAwLCAwLCA3NzQ4LCAwLCAKKyAgICAwLCAwLCAwLCAzMjcsIDAsIDc3NTAsIDAsIDAsIDAsIDMyNSwgMCwgNzc1NCwgMCwgMCwgNzc1MiwgMCwgMCwgMCwgMjEwLCAKKyAgICAyMTEsIDIxMiwgMjEzLCAzMzIsIDMzNCwgNTU4LCAyMTQsIDc4ODYsIDAsIDMzNiwgNDY1LCA1MjQsIDUyNiwgMCwgMCwgCisgICAgNDE2LCA3ODg0LCA0OTAsIDAsIDAsIDAsIDAsIDc3NjQsIDAsIDAsIDAsIDAsIDc3NjYsIDAsIDAsIDAsIDAsIDM0MCwgCisgICAgNzc2OCwgMCwgMCwgMCwgMCwgMzQ0LCA1MjgsIDUzMCwgMCwgMCwgMCwgNzc3MCwgMCwgMCwgMCwgMzQyLCA3Nzc0LCAwLCAwLCAKKyAgICAwLCAwLCAzNDYsIDM0OCwgMCwgMCwgMCwgNzc3NiwgMCwgMCwgMCwgMCwgMzUyLCAwLCA3Nzc4LCAwLCAwLCA1MzYsIDM1MCwgCisgICAgMCwgMCwgNzc4NiwgMCwgMCwgMCwgMCwgMzU2LCAwLCAwLCAwLCAwLCAwLCA3Nzg4LCAwLCAwLCA1MzgsIDM1NCwgMCwgCisgICAgNzc5MiwgMCwgMCwgNzc5MCwgMCwgMCwgMCwgMjE3LCAyMTgsIDIxOSwgMzYwLCAzNjIsIDM2NCwgMCwgMjIwLCA3OTEwLCAKKyAgICAzNjYsIDM2OCwgNDY3LCA1MzIsIDUzNCwgMCwgMCwgNDMxLCA3OTA4LCA3Nzk0LCAwLCAwLCAwLCAzNzAsIDc3OTgsIDAsIAorICAgIDc3OTYsIDAsIDAsIDAsIDc4MDQsIDAsIDAsIDAsIDAsIDAsIDc4MDYsIDc4MDgsIDc4MTAsIDM3MiwgMCwgMCwgMCwgNzgxNCwgCisgICAgNzgxMiwgMCwgNzgxNiwgMCwgMCwgNzgxOCwgNzgyMCwgMCwgMCwgNzkyMiwgMjIxLCAzNzQsIDc5MjgsIDU2MiwgMCwgCisgICAgNzgyMiwgMzc2LCA3OTI2LCAwLCAwLCAwLCAwLCA3OTI0LCAwLCAwLCAwLCAwLCAwLCAzNzcsIDc4MjQsIDAsIDAsIDAsIAorICAgIDM3OSwgMCwgMCwgMCwgMCwgMzgxLCAwLCAwLCAwLCAwLCAwLCA3ODI2LCA3ODI4LCAwLCAwLCAwLCAyMjQsIDIyNSwgMjI2LCAKKyAgICAyMjcsIDI1NywgMjU5LCA1NTEsIDIyOCwgNzg0MywgMjI5LCAwLCA0NjIsIDUxMywgNTE1LCAwLCAwLCAwLCA3ODQxLCAwLCAKKyAgICA3NjgxLCAwLCAwLCAyNjEsIDAsIDc2ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODUsIDc2ODcsIDAsIDAsIDAsIDAsIDI2MywgCisgICAgMjY1LCAwLCAwLCAwLCAyNjcsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMjMxLCAwLCAwLCA3NjkxLCAwLCAwLCAwLCAwLCAyNzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc2OTMsIDAsIDAsIDAsIDc2OTcsIDAsIDc2OTksIDAsIDAsIDc2OTUsIDAsIDAsIDAsIDIzMiwgCisgICAgMjMzLCAyMzQsIDc4NjksIDI3NSwgMjc3LCAyNzksIDIzNSwgNzg2NywgMCwgMCwgMjgzLCA1MTcsIDUxOSwgMCwgMCwgMCwgCisgICAgNzg2NSwgMCwgMCwgMCwgNTUzLCAyODEsIDc3MDUsIDAsIDc3MDcsIDAsIDAsIDc3MTEsIDAsIDAsIDAsIDAsIDUwMSwgMjg1LCAKKyAgICAwLCA3NzEzLCAyODcsIDI4OSwgMCwgMCwgMCwgMCwgNDg3LCAwLCAyOTEsIDAsIDAsIDI5MywgMCwgMCwgMCwgNzcxNSwgCisgICAgNzcxOSwgMCwgMCwgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCA3NzE3LCAwLCAwLCAwLCA3NzIxLCAwLCAwLCA3NzIzLCAwLCAKKyAgICA3ODMwLCAwLCAwLCAwLCAyMzYsIDIzNywgMjM4LCAyOTcsIDI5OSwgMzAxLCAwLCAyMzksIDc4ODEsIDAsIDAsIDQ2NCwgCisgICAgNTIxLCA1MjMsIDAsIDAsIDAsIDc4ODMsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgNzcyNSwgMCwgMCwgMzA5LCAwLCAwLCAwLCAKKyAgICAwLCA0OTYsIDAsIDAsIDAsIDc3MjksIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgNzczMSwgMCwgMCwgMCwgMzExLCAwLCAwLCAKKyAgICAwLCAwLCA3NzMzLCAwLCAwLCAwLCAwLCAzMTQsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgNzczNSwgMCwgMCwgMCwgMzE2LCAKKyAgICAwLCA3NzQxLCAwLCAwLCA3NzM5LCAwLCAwLCAwLCAwLCA3NzQzLCAwLCAwLCAwLCAwLCA3NzQ1LCAwLCAwLCA3NzQ3LCAwLCAKKyAgICAwLCAwLCAwLCA1MDUsIDMyNCwgMCwgMjQxLCAwLCAwLCA3NzQ5LCAwLCAwLCAwLCAwLCAzMjgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc3NTEsIDAsIDAsIDAsIDMyNiwgMCwgNzc1NSwgMCwgMCwgNzc1MywgMCwgMCwgMCwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAKKyAgICAzMzMsIDMzNSwgNTU5LCAyNDYsIDc4ODcsIDAsIDMzNywgNDY2LCA1MjUsIDUyNywgMCwgMCwgNDE3LCA3ODg1LCAwLCAwLCAKKyAgICAwLCAwLCA0OTEsIDAsIDAsIDAsIDAsIDc3NjUsIDc3NjcsIDAsIDAsIDAsIDAsIDM0MSwgMCwgMCwgMCwgMCwgNzc2OSwgMCwgCisgICAgMCwgMCwgMCwgMzQ1LCA1MjksIDUzMSwgMCwgMCwgMCwgNzc3MSwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCA3Nzc1LCAwLCAKKyAgICAwLCAwLCAwLCAzNDcsIDM0OSwgMCwgMCwgMCwgNzc3NywgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCA3Nzc5LCAKKyAgICAwLCAwLCA1MzcsIDM1MSwgMCwgMCwgNzc4NywgNzgzMSwgMCwgMCwgMCwgMzU3LCAwLCA3Nzg5LCAwLCAwLCA1MzksIDM1NSwgCisgICAgMCwgNzc5MywgMCwgMCwgNzc5MSwgMCwgMCwgMCwgMjQ5LCAyNTAsIDI1MSwgMzYxLCAzNjMsIDM2NSwgMCwgMjUyLCA3OTExLCAKKyAgICAzNjcsIDM2OSwgNDY4LCA1MzMsIDUzNSwgMCwgMCwgNDMyLCA3OTA5LCA3Nzk1LCAwLCAwLCAwLCAzNzEsIDc3OTksIDAsIAorICAgIDc3OTcsIDAsIDAsIDAsIDc4MDUsIDAsIDc4MDcsIDAsIDAsIDAsIDAsIDc4MDksIDc4MTEsIDM3MywgMCwgMCwgMCwgNzgxNSwgCisgICAgNzgxMywgMCwgNzgzMiwgMCwgMCwgMCwgNzgxNywgMCwgMCwgNzgxOSwgNzgyMSwgMCwgMCwgNzkyMywgMjUzLCAzNzUsIAorICAgIDc5MjksIDU2MywgMCwgNzgyMywgMjU1LCA3OTI3LCA3ODMzLCAwLCAwLCAwLCA3OTI1LCAwLCAzNzgsIDc4MjUsIDAsIDAsIAorICAgIDAsIDM4MCwgMCwgMCwgMCwgMCwgMzgyLCAwLCA3ODI3LCAwLCAwLCAwLCAwLCA3ODI5LCAwLCAwLCAwLCA4MTczLCA5MDEsIAorICAgIDAsIDAsIDgxMjksIDAsIDc4NDYsIDc4NDQsIDAsIDc4NTAsIDc4NDgsIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgNTA2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MDgsIDAsIDAsIDQ4MiwgMCwgMCwgNzY4OCwgMCwgMCwgMCwgMCwgNzg3MiwgNzg3MCwgMCwgCisgICAgNzg3NiwgMCwgMCwgMCwgMCwgNzg3NCwgMCwgMCwgNzcyNiwgMCwgMCwgMCwgMCwgNzg5MCwgNzg4OCwgMCwgNzg5NCwgMCwgCisgICAgMCwgMCwgMCwgNzg5MiwgMCwgMCwgNzc1NiwgMCwgMCwgNTU2LCAwLCAwLCA3NzU4LCAwLCAwLCA1NTQsIDAsIDAsIDUxMCwgCisgICAgMCwgMCwgMCwgMCwgNDc1LCA0NzEsIDAsIDAsIDQ2OSwgMCwgMCwgNDczLCAwLCAwLCA3ODQ3LCA3ODQ1LCAwLCA3ODUxLCAKKyAgICA3ODQ5LCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCA0ODMsIDAsIDAsIAorICAgIDc2ODksIDAsIDAsIDAsIDAsIDc4NzMsIDc4NzEsIDAsIDc4NzcsIDAsIDAsIDAsIDAsIDc4NzUsIDAsIDAsIDc3MjcsIDAsIAorICAgIDAsIDAsIDAsIDc4OTEsIDc4ODksIDAsIDc4OTUsIDAsIDAsIDAsIDAsIDc4OTMsIDAsIDAsIDc3NTcsIDAsIDAsIDU1NywgMCwgCisgICAgMCwgNzc1OSwgMCwgMCwgNTU1LCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDQ3NiwgNDcyLCAwLCAwLCA0NzAsIDAsIDAsIAorICAgIDQ3NCwgMCwgMCwgNzg1NiwgNzg1NCwgMCwgNzg2MCwgNzg1OCwgMCwgMCwgMCwgMCwgMCwgNzg1NywgNzg1NSwgMCwgNzg2MSwgCisgICAgMCwgMCwgMCwgMCwgNzg1OSwgMCwgNzcwMCwgNzcwMiwgMCwgMCwgMCwgMCwgNzcwMSwgNzcwMywgNzc2MCwgNzc2MiwgMCwgCisgICAgMCwgMCwgMCwgNzc2MSwgNzc2MywgMCwgMCwgNzc4MCwgMCwgNzc4MSwgMCwgMCwgMCwgMCwgMCwgNzc4MiwgMCwgNzc4MywgCisgICAgMCwgMCwgMCwgMCwgNzgwMCwgMCwgMCwgMCwgMCwgMCwgNzgwMSwgMCwgMCwgMCwgNzgwMiwgMCwgNzgwMywgMCwgMCwgMCwgCisgICAgMCwgNzgzNSwgMCwgMCwgMCwgNzkwMCwgNzg5OCwgMCwgNzkwNCwgMCwgMCwgMCwgMCwgNzkwMiwgMCwgMCwgMCwgMCwgCisgICAgNzkwNiwgNzkwMSwgNzg5OSwgMCwgNzkwNSwgNzkwMywgMCwgMCwgMCwgMCwgNzkwNywgMCwgMCwgMCwgMCwgNzkxNCwgCisgICAgNzkxMiwgMCwgNzkxOCwgMCwgMCwgMCwgMCwgNzkxNiwgMCwgMCwgMCwgMCwgNzkyMCwgNzkxNSwgNzkxMywgMCwgNzkxOSwgCisgICAgNzkxNywgMCwgMCwgMCwgMCwgNzkyMSwgMCwgMCwgMCwgNDk0LCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgCisgICAgNDgwLCAwLCAwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDc3MDgsIDAsIDAsIDAsIDAsIDAsIDc3MDksIDU2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCA0OTUsIDAsIDAsIDgxMjIsIDkwMiwgMCwgMCwgODEyMSwgODEyMCwgNzk0NCwgCisgICAgNzk0NSwgMCwgMCwgMCwgMCwgMCwgODEyNCwgODEzNiwgOTA0LCAwLCAwLCAwLCAwLCA3OTYwLCA3OTYxLCAwLCAwLCA4MTM4LCAKKyAgICA5MDUsIDc5NzYsIDc5NzcsIDAsIDAsIDAsIDAsIDAsIDgxNDAsIDgxNTQsIDkwNiwgMCwgMCwgODE1MywgODE1MiwgMCwgCisgICAgOTM4LCAwLCAwLCA3OTkyLCA3OTkzLCAwLCAwLCA4MTg0LCA5MDgsIDgwMDgsIDgwMDksIDAsIDAsIDAsIDAsIDAsIDgxNzIsIAorICAgIDAsIDAsIDgxNzAsIDkxMCwgMCwgMCwgODE2OSwgODE2OCwgMCwgOTM5LCAwLCAwLCAwLCA4MDI1LCAwLCAwLCA4MTg2LCAKKyAgICA5MTEsIDAsIDAsIDAsIDAsIDgwNDAsIDgwNDEsIDAsIDgxODgsIDAsIDAsIDAsIDAsIDAsIDgxMTYsIDAsIDgxMzIsIDAsIDAsIAorICAgIDAsIDAsIDgwNDgsIDk0MCwgMCwgMCwgODExMywgODExMiwgNzkzNiwgNzkzNywgMCwgMCwgMCwgMCwgODExOCwgODExNSwgCisgICAgODA1MCwgOTQxLCAwLCAwLCAwLCAwLCA3OTUyLCA3OTUzLCAwLCAwLCA4MDUyLCA5NDIsIDc5NjgsIDc5NjksIDAsIDAsIDAsIAorICAgIDAsIDgxMzQsIDgxMzEsIDgwNTQsIDk0MywgMCwgMCwgODE0NSwgODE0NCwgMCwgOTcwLCAwLCAwLCA3OTg0LCA3OTg1LCAKKyAgICA4MTUwLCAwLCAwLCAwLCAwLCAwLCA4MDU2LCA5NzIsIDgwMDAsIDgwMDEsIDAsIDAsIDAsIDAsIDgxNjQsIDgxNjUsIDAsIDAsIAorICAgIDgwNTgsIDk3MywgMCwgMCwgODE2MSwgODE2MCwgMCwgOTcxLCAwLCAwLCA4MDE2LCA4MDE3LCAwLCAwLCAwLCAwLCA4MTY2LCAKKyAgICAwLCA4MDYwLCA5NzQsIDAsIDAsIDAsIDAsIDgwMzIsIDgwMzMsIDgxODIsIDgxNzksIDAsIDAsIDAsIDAsIDgxNDYsIDkxMiwgCisgICAgMCwgMCwgODE1MSwgMCwgODE2MiwgOTQ0LCAwLCAwLCA4MTY3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTgwLCAwLCA5NzksIDAsIAorICAgIDAsIDAsIDAsIDAsIDk4MCwgMCwgMTAzMSwgMCwgMCwgMCwgMTIzMiwgMCwgMTIzNCwgMCwgMCwgMCwgMTAyNywgMTAyNCwgMCwgCisgICAgMCwgMCwgMCwgMTIzOCwgMCwgMTAyNSwgMCwgMCwgMCwgMTIxNywgMCwgMTI0NCwgMCwgMCwgMCwgMCwgMCwgMTI0NiwgMCwgCisgICAgMCwgMTAzNywgMCwgMCwgMCwgMTI1MCwgMTA0OSwgMCwgMTI1MiwgMCwgMCwgMCwgMTAzNiwgMCwgMCwgMCwgMTI1NCwgMCwgCisgICAgMCwgMTI2MiwgMTAzOCwgMCwgMTI2NCwgMCwgMCwgMTI2NiwgMCwgMCwgMTI2OCwgMCwgMCwgMCwgMCwgMCwgMTI3MiwgMCwgCisgICAgMTI2MCwgMCwgMCwgMCwgMTIzMywgMCwgMTIzNSwgMCwgMCwgMCwgMTEwNywgMTEwNCwgMCwgMCwgMCwgMCwgMTIzOSwgMCwgCisgICAgMTEwNSwgMCwgMCwgMCwgMTIxOCwgMCwgMTI0NSwgMCwgMCwgMCwgMCwgMCwgMTI0NywgMCwgMCwgMTExNywgMCwgMCwgMCwgCisgICAgMTI1MSwgMTA4MSwgMCwgMTI1MywgMCwgMCwgMCwgMTExNiwgMCwgMCwgMCwgMTI1NSwgMCwgMCwgMTI2MywgMTExOCwgMCwgCisgICAgMTI2NSwgMCwgMCwgMTI2NywgMCwgMCwgMTI2OSwgMCwgMCwgMCwgMCwgMCwgMTI3MywgMCwgMTI2MSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTExMSwgMCwgMCwgMTE0MiwgMCwgMTE0MywgMCwgMCwgMCwgMCwgMTI0MiwgMCwgMCwgMCwgMCwgMCwgMTI0MywgMCwgCisgICAgMTI1OCwgMCwgMCwgMCwgMCwgMCwgMTI1OSwgMTU3MCwgMTU3MSwgMTU3MywgMCwgMCwgMCwgMCwgMTU3MiwgMCwgMTU3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTczMCwgMCwgMTc0NywgMCwgMCwgMCwgMCwgMCwgMTcyOCwgMCwgMCwgMCwgMjM0NSwgMCwgCisgICAgMjM1MywgMCwgMCwgMCwgMCwgMCwgMjM1NiwgMCwgMCwgMjUwNywgMjUwOCwgMCwgMCwgMjg5MSwgMjg4OCwgMjg5MiwgMCwgCisgICAgMCwgMCwgMjk2NCwgMCwgMCwgMCwgMCwgMzAxOCwgMzAyMCwgMCwgMCwgMCwgMCwgMzAxOSwgMCwgMCwgMCwgMzE0NCwgMCwgCisgICAgMCwgMCwgMzI2NCwgMzI3NCwgMzI3MSwgMzI3MiwgMCwgMCwgMCwgMCwgMzI3NSwgMCwgMCwgMCwgMzQwMiwgMzQwNCwgMCwgCisgICAgMCwgMCwgMCwgMzQwMywgMCwgMCwgMCwgMzU0NiwgMzU0OCwgMzU1MCwgMCwgMCwgMCwgMzU0OSwgNDEzNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjkxOCwgMCwgNjkyMCwgMCwgMCwgMCwgMCwgMCwgNjkyMiwgMCwgNjkyNCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjkyNiwgMCwgNjkzMCwgMCwgMCwgMCwgMCwgMCwgNjk3MSwgMCwgNjk3MywgMCwgMCwgMCwgMCwgMCwgNjk3NiwgMCwgCisgICAgNjk3NywgMCwgMCwgMCwgMCwgMCwgNjk3OSwgMCwgMCwgNzczNiwgMCwgNzczNywgMCwgMCwgMCwgMCwgMCwgNzc3MiwgMCwgCisgICAgNzc3MywgMCwgMCwgMCwgNzc4NCwgMCwgMCwgMCwgMCwgMCwgNzc4NSwgMCwgNzg1MiwgMCwgMCwgNzg2MiwgMCwgMCwgCisgICAgNzg1MywgMCwgMCwgNzg2MywgMCwgMCwgNzg3OCwgMCwgMCwgMCwgMCwgMCwgNzg3OSwgMCwgNzg5NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgNzg5NywgMCwgMCwgMCwgNzkzOCwgNzk0MCwgMCwgMCwgNzk0MiwgODA2NCwgNzkzOSwgNzk0MSwgMCwgMCwgNzk0MywgCisgICAgODA2NSwgMCwgMCwgMCwgMCwgMCwgODA2NiwgMCwgODA2NywgMCwgMCwgMCwgMCwgMCwgODA2OCwgMCwgODA2OSwgMCwgMCwgCisgICAgMCwgMCwgMCwgODA3MCwgMCwgODA3MSwgMCwgMCwgMCwgMCwgNzk0NiwgNzk0OCwgMCwgMCwgNzk1MCwgODA3MiwgNzk0NywgCisgICAgNzk0OSwgMCwgMCwgNzk1MSwgODA3MywgMCwgMCwgMCwgMCwgMCwgODA3NCwgMCwgODA3NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgODA3NiwgMCwgODA3NywgMCwgMCwgMCwgMCwgMCwgODA3OCwgMCwgODA3OSwgMCwgMCwgMCwgMCwgNzk1NCwgNzk1NiwgCisgICAgNzk1NSwgNzk1NywgMCwgMCwgMCwgMCwgNzk2MiwgNzk2NCwgNzk2MywgNzk2NSwgMCwgMCwgMCwgMCwgNzk3MCwgNzk3MiwgCisgICAgMCwgMCwgNzk3NCwgODA4MCwgNzk3MSwgNzk3MywgMCwgMCwgNzk3NSwgODA4MSwgMCwgMCwgMCwgMCwgMCwgODA4MiwgMCwgCisgICAgODA4MywgMCwgMCwgMCwgMCwgMCwgODA4NCwgMCwgODA4NSwgMCwgMCwgMCwgMCwgMCwgODA4NiwgMCwgODA4NywgMCwgMCwgCisgICAgMCwgMCwgNzk3OCwgNzk4MCwgMCwgMCwgNzk4MiwgODA4OCwgNzk3OSwgNzk4MSwgMCwgMCwgNzk4MywgODA4OSwgMCwgMCwgCisgICAgMCwgMCwgMCwgODA5MCwgMCwgODA5MSwgMCwgMCwgMCwgMCwgMCwgODA5MiwgMCwgODA5MywgMCwgMCwgMCwgMCwgMCwgCisgICAgODA5NCwgMCwgODA5NSwgMCwgMCwgMCwgMCwgNzk4NiwgNzk4OCwgMCwgMCwgNzk5MCwgMCwgNzk4NywgNzk4OSwgMCwgMCwgCisgICAgNzk5MSwgMCwgMCwgMCwgMCwgMCwgNzk5NCwgNzk5NiwgMCwgMCwgNzk5OCwgMCwgNzk5NSwgNzk5NywgMCwgMCwgNzk5OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgODAwMiwgODAwNCwgODAwMywgODAwNSwgMCwgMCwgMCwgMCwgODAxMCwgODAxMiwgODAxMSwgCisgICAgODAxMywgMCwgMCwgMCwgMCwgODAxOCwgODAyMCwgMCwgMCwgODAyMiwgMCwgODAxOSwgODAyMSwgMCwgMCwgODAyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgODAyNywgODAyOSwgMCwgMCwgODAzMSwgMCwgODAzNCwgODAzNiwgMCwgMCwgODAzOCwgODA5NiwgMCwgCisgICAgMCwgMCwgMCwgODAzNSwgODAzNywgMCwgMCwgODAzOSwgODA5NywgMCwgODA5OCwgMCwgMCwgMCwgMCwgMCwgODA5OSwgMCwgCisgICAgODEwMCwgMCwgMCwgMCwgMCwgMCwgODEwMSwgMCwgODEwMiwgMCwgMCwgMCwgMCwgMCwgODEwMywgODA0MiwgODA0NCwgMCwgCisgICAgMCwgODA0NiwgODEwNCwgMCwgMCwgMCwgMCwgODA0MywgODA0NSwgMCwgMCwgODA0NywgODEwNSwgMCwgODEwNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgODEwNywgMCwgODEwOCwgMCwgMCwgMCwgMCwgMCwgODEwOSwgMCwgODExMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODExMSwgMCwgODExNCwgMCwgMCwgMCwgMCwgMCwgODEzMCwgMCwgODE3OCwgMCwgMCwgMCwgMCwgMCwgODExOSwgODE0MSwgCisgICAgODE0MiwgMCwgMCwgODE0MywgMCwgMCwgMCwgMCwgMCwgMCwgODEzNSwgMCwgODE4MywgMCwgMCwgMCwgMCwgODE1NywgCisgICAgODE1OCwgMCwgMCwgODE1OSwgMCwgMCwgMCwgMCwgODYwMiwgMCwgODYwMywgMCwgMCwgMCwgMCwgMCwgODYyMiwgMCwgCisgICAgODY1MywgMCwgMCwgMCwgMCwgMCwgODY1NSwgMCwgODY1NCwgMCwgMCwgMCwgMCwgMCwgODcwOCwgMCwgODcxMywgMCwgMCwgCisgICAgMCwgMCwgMCwgODcxNiwgMCwgODc0MCwgMCwgMCwgMCwgMCwgMCwgODc0MiwgMCwgODc2OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgODc3MiwgMCwgODc3NSwgMCwgMCwgMCwgMCwgMCwgODc3NywgMCwgODgxMywgMCwgMCwgMCwgMCwgMCwgODgwMiwgMCwgCisgICAgODgxNiwgMCwgMCwgMCwgMCwgMCwgODgxNywgMCwgODgyMCwgMCwgMCwgMCwgMCwgMCwgODgyMSwgMCwgODgyNCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODgyNSwgMCwgODgzMiwgMCwgMCwgMCwgMCwgMCwgODgzMywgMCwgODkyOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODkyOSwgMCwgODgzNiwgMCwgMCwgMCwgMCwgMCwgODgzNywgMCwgODg0MCwgMCwgMCwgMCwgMCwgMCwgODg0MSwgMCwgCisgICAgODkzMCwgMCwgMCwgMCwgMCwgMCwgODkzMSwgMCwgODg3NiwgMCwgMCwgMCwgMCwgMCwgODg3NywgMCwgODg3OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODg3OSwgMCwgODkzOCwgMCwgMCwgMCwgMCwgMCwgODkzOSwgMCwgODk0MCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODk0MSwgMCwgMCwgMTI0MzYsIDAsIDEyMzY0LCAwLCAwLCAwLCAwLCAwLCAxMjM2NiwgMCwgMTIzNjgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyMzcwLCAwLCAxMjM3MiwgMCwgMCwgMCwgMCwgMCwgMTIzNzQsIDAsIDEyMzc2LCAwLCAwLCAwLCAwLCAwLCAxMjM3OCwgCisgICAgMCwgMTIzODAsIDAsIDAsIDAsIDAsIDAsIDEyMzgyLCAwLCAxMjM4NCwgMCwgMCwgMCwgMCwgMCwgMTIzODYsIDAsIDEyMzg5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjM5MSwgMCwgMTIzOTMsIDAsIDAsIDAsIDAsIDAsIDEyNDAwLCAxMjQwMSwgMTI0MDMsIAorICAgIDEyNDA0LCAwLCAwLCAwLCAwLCAxMjQwNiwgMTI0MDcsIDEyNDA5LCAxMjQxMCwgMCwgMCwgMCwgMCwgMTI0MTIsIDEyNDEzLCAKKyAgICAxMjQ0NiwgMCwgMCwgMCwgMCwgMCwgMTI1MzIsIDAsIDEyNDYwLCAwLCAwLCAwLCAwLCAwLCAxMjQ2MiwgMCwgMTI0NjQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyNDY2LCAwLCAxMjQ2OCwgMCwgMCwgMCwgMCwgMCwgMTI0NzAsIDAsIDEyNDcyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjQ3NCwgMCwgMTI0NzYsIDAsIDAsIDAsIDAsIDAsIDEyNDc4LCAwLCAxMjQ4MCwgMCwgMCwgMCwgMCwgMCwgMTI0ODIsIAorICAgIDAsIDEyNDg1LCAwLCAwLCAwLCAwLCAwLCAxMjQ4NywgMCwgMTI0ODksIDAsIDAsIDAsIDAsIDAsIDEyNDk2LCAxMjQ5NywgCisgICAgMTI0OTksIDEyNTAwLCAwLCAwLCAwLCAwLCAxMjUwMiwgMTI1MDMsIDEyNTA1LCAxMjUwNiwgMCwgMCwgMCwgMCwgMTI1MDgsIAorICAgIDEyNTA5LCAxMjUzNSwgMCwgMCwgMCwgMCwgMCwgMTI1MzYsIDAsIDEyNTM3LCAwLCAwLCAwLCAwLCAwLCAxMjUzOCwgMCwgCisgICAgMTI1NDIsIDAsIDAsIDAsIDY5Nzg2LCAwLCAwLCAwLCAwLCAwLCA2OTc4OCwgMCwgNjk4MDMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY5OTM0LCAwLCA2OTkzNSwgMCwgMCwgNzA0NzUsIDcwNDc2LCAwLCAwLCA3MDg0NCwgNzA4NDMsIDcwODQ2LCAwLCAwLCAKKyAgICA3MTA5OCwgMCwgMCwgMCwgMCwgMCwgNzEwOTksIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKQEAgLTUyMTAsNzMgKzU2NzQsNzQgQEAKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCi0gICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKLSAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgMiwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCAyLCA1MSwgMiwgMiwgNTIsIDUzLCA1NCwgNTUsIDU2LCAyLCA1NywgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAKLSAgICA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCA5MCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCisgICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA0OSwgNDksIAotICAgIDk3LCA5OCwgNDksIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk4LCA1MCwgNTAsIAorICAgIDk5LCAxMDAsIDUwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMDgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMiwgMiwgMiwgMTE1LCAxMTYsIDIsIDExNywgMTE4LCAKLSAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjgsIDIsIAotICAgIDEyOSwgMTMwLCAxMzEsIDIsIDEzMiwgMiwgMTMzLCAyLCAyLCAyLCAxMzQsIDIsIDIsIDIsIDEzNSwgMTM2LCAxMzcsIDEzOCwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAxNDAsIDIsIDE0MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCAxNDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDIsIDIsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgCisgICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDIsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDIsIDUwLCA1MCwgMTMyLCAKKyAgICAyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAyLCAyLCAyLCAxNDIsIDIsIDIsIDIsIAorICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMiwgMiwgMTUwLCAyLCAxNTEsIDE1MiwgMTUzLCAyLCAyLCAyLCAKKyAgICAxNTQsIDIsIDIsIDIsIDE1NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDE1NiwgMTU3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE1OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgNDksIDE0MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMTQ0LCAxNDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgCisgICAgNTAsIDUwLCAxNTksIDE2MCwgMTYxLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2MywgMTY0LCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE2NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMTY2LCAxNjcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OCwgMiwgCisgICAgMTY5LCAyLCAxNzAsIDIsIDIsIDE3MSwgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ3LCAyLCAxNDgsIDIsIDE0OSwgMiwgMiwgMTUwLCAyLCAyLCAyLCAxNTEsIDE1MiwgCi0gICAgMTUzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNTQsIDE1NSwgCi0gICAgMiwgMiwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDIsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTQ4LCAKLSAgICAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMTcwLCA5MywgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDE3MSwgMiwgMTcyLCAxNzMsIDIsIDIsIDIsIAorICAgIDUwLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NiwgMTc3LCAyLCAyLCAxNzgsIDE3OSwgMTgwLCAKKyAgICAxODEsIDE4MiwgMiwgMTgzLCAxODQsIDUwLCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTQsIDE5NSwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAxOTYsIDIsIDE5NywgMTk4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzQsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc2LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIwMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAxNzgsIDQ5LCAxNzksIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjAzLCA1MCwgMjA0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTksIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01NTExLDcgKzU5NzYsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ5LCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAyMDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTU3NSw3ICs2MDQwLDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNTYxMSw3ICs2MDc2LDcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAxMCwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01NjIzLDE2ICs2MDg4LDE2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTY2MCwxNiArNjEyNSwxNiBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTY5NiwxOCArNjE2MSwxOCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01NzE2LDc5NiArNjE4MSwzMTAgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKLSAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA0LCAwLCAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAKLSAgICA0LCAzNSwgOCwgNiwgNywgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDUsIDQ2LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDQsIDAsIDAsIDM2LCAzNywgMzgsIAorICAgIDM5LCA0MCwgNDEsIDEsIDEsIDAsIDAsIDAsIDQsIDM1LCA4LCA2LCA3LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDYsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCAKLSAgICA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NTE2LDM4ICs2NDk1LDY1NyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggN2NjYjEyNi4uZGQwNWY4NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCw3NiArNCw3NSBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA2NywgNzQsIDIwMywgNzcsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3MywgNzEsIDIwNiwgODMsIDg5LCA3NiwgCisgICAgNzYsIDY1LCA2NiwgNzYsIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIDc3LCAKICAgICA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCA2NSwgCi0gICAgMjA2LCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCAKLSAgICA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgCi0gICAgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAotICAgIDIxMiwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDg2LCA3OSwgODcsIAotICAgIDY5LCAyMDQsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgCi0gICAgODMsIDczLCA2NywgNjUsIDIwNCwgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIAotICAgIDIxMSwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCi0gICAgMTk1LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgODQsIDY1LCA3NywgNzMsIDIwNCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgCi0gICAgNzMsIDc4LCA3MywgNzgsIDE5OSwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDg2LCA2NSwgMjAxLCA4MywgCi0gICAgODEsIDg1LCA2NSwgODIsIDE5NywgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NiwgNjUsIDgyLCAKLSAgICA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIAotICAgIDgyLCAyMDYsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgCi0gICAgODMsIDczLCA3MSwgNzgsIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCAKLSAgICA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNzUsIDY1LCA4NCwgNjUsIAotICAgIDc1LCA2NSwgNzgsIDE5MywgMTk0LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIAotICAgIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4NCwgNzMsIDY2LCA2OSwgCi0gICAgODQsIDY1LCAyMDYsIDc5LCAxOTgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY5LCA2OSwgMjA1LCA4NiwgCi0gICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDg1LCAxMjgsIDc1LCAKLSAgICA3MiwgNzcsIDY5LCAyMTAsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIAotICAgIDgyLCA3MywgNjksIDIxMCwgNzMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgMjAwLCA3OSwgMTI4LCAKLSAgICA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIAotICAgIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgCi0gICAgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgMjAzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgCi0gICAgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCAKLSAgICA3OSwgNzUsIDY5LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIAotICAgIDgyLCA2OSwgMjE1LCA3NywgNzMsIDY1LCAyMDcsIDgwLCA3NiwgODUsIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgCi0gICAgNjUsIDgyLCA2OCwgMjExLCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCAKLSAgICA3MSwgMjExLCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgODQsIAotICAgIDIwMCwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgMjEzLCA4NCwgODcsIAotICAgIDc5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NiwgCi0gICAgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgNzYsIDY5LCAxOTgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCAxMjgsIDg0LCA4NywgMjA3LCAKLSAgICA3MiwgNjksIDY1LCA4NiwgMjE3LCA3OSwgODYsIDY5LCAyMTAsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgCi0gICAgMjEyLCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDg1LCAyMDgsIDc2LCA3OSwgCi0gICAgMjE1LCA3MiwgNjUsIDIwMCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODcsIDIwNiwgNzIsIDczLCA3MSwgMjAwLCA3MCwgODUsIAotICAgIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDIwNCwgODQsIDY1LCAxOTksIDY2LCA2NSwgODIsIDEyOCwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDc4LCA4NSwgCi0gICAgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgMTk3LCAKLSAgICA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIAotICAgIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgODQsIDc5LCA3OCwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgCi0gICAgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA3MiwgNzMsIDgyLCAKLSAgICA2NSwgNzEsIDY1LCA3OCwgMTkzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIAotICAgIDc4LCAxOTksIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgCi0gICAgMjAxLCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIDcxLCAyMTMsIDg2LCA3OSwgNjcsIDY1LCAKLSAgICA3NiwgNzMsIDE5NSwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzQsIDY5LCA2OSwgMjA1LCA3OCwgNjksIAotICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgCi0gICAgNjUsIDc4LCA2OSwgODMsIDE5NywgNzksIDgyLCA3MywgODksIDE5MywgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg3LCAKLSAgICA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNjUsIDEyOCwgNzIsIAotICAgIDY1LCA3NiwgMTk4LCA3NywgNjUsIDgyLCAyMDMsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY5LCAyMTUsIAotICAgIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5MywgODQsIDcyLCA2NSwgMjAxLCA2NywgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgCi0gICAgMTk3LCA2OCwgNzksIDg0LCAyMTEsIDcxLCA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDY3LCA3MiwgNjUsIDIwNSwgCi0gICAgNzYsIDg1LCAxOTcsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCAKLSAgICA3NSwgNjUsIDEyOCwgODIsIDg1LCA3OCwgNzMsIDE5NSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgCi0gICAgMTkzLCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCAKLSAgICA3MiwgNjUsIDc3LCA5MCwgMTkzLCA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgODQsIDczLCA3NiwgNjgsIDY5LCAxMjgsIAotICAgIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgCi0gICAgNjksIDY5LCA4NCwgNjksIDIwMSwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzAsIDczLCA4NiwgNjksIAotICAgIDEyOCwgODAsIDY1LCAxMjgsIDg5LCA2NSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgNzMsIDg4LCAxMjgsIDY5LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNjksIDgwLCA2NywgNzIsIDE5MywgNzgsIDY1LCAxMjgsIDgzLCA2OSwgODYsIAotICAgIDY5LCA3OCwgMTI4LCA3NiwgNzksIDc4LCAxOTksIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc1LCA3MywgCi0gICAgMTk1LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDc5LCA4MCwgNjksIDIwNiwgODIsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODYsIDczLCA2OSwgMjEyLCAKLSAgICA3NiwgNjUsIDIwNywgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIAorICAgIDIwNiwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgCisgICAgODIsIDIwNSwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNjcsIDY1LCA3OCwgNjUsIAorICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAKKyAgICAyMDUsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgMjA0LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIAorICAgIDg0LCA4NSwgODIsIDE5NywgODQsIDczLCA3NywgNjksIDIxMSwgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA2OSwgCisgICAgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgMjEwLCA2NywgODksIDgyLCA3MywgNzYsIDc2LCAKKyAgICA3MywgMTk1LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAxOTksIAorICAgIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgMTk4LCA2NywgCisgICAgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCAKKyAgICA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg2LCA2NSwgMjAxLCAKKyAgICA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCA2OCwgNzksIAorICAgIDg1LCA2NiwgNzYsIDE5NywgNjUsIDgyLCA4MiwgNzksIDIxNSwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzEsIDc4LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgNjksIDc2LCA3OSwgODcsIAorICAgIDEyOCwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDY2LCA4OSwgCisgICAgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgMjAzLCAKKyAgICA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgMTI4LCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIAorICAgIDc4LCAxOTMsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgCisgICAgNjgsIDc5LCAyMTIsIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NSwgNzMsIDc1LCA2NSwgNzUsIDg1LCAyMDEsIDc3LCAKKyAgICA2OSwgNzgsIDY4LCAxOTcsIDg1LCAxMjgsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNzksIDE5OCwgNzMsIDEyOCwgCisgICAgNzksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDIxNywgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY5LCAyMDUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIAorICAgIDc3LCA2OSwgMjEwLCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY5LCAyMTAsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODksIDY5LCAyMDAsIDgwLCAKKyAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA3NywgNzksIAorICAgIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgCisgICAgODcsIDY1LCA4MiwgNjgsIDIxMSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4NCwgNzMsIDc2LCAxOTcsIDY4LCAKKyAgICA4NSwgODAsIDc2LCA3OSwgODksIDY1LCAyMDYsIDY2LCA3OSwgMjE2LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgOTAsIDY5LCAxOTYsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCA3NCwgCisgICAgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODAsIDc2LCA4NSwgMjExLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCAKKyAgICA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgNzMsIDY1LCAyMDcsIDg0LCA4NywgNzksIDEyOCwgMjEzLCA2NywgNzksIDc4LCAKKyAgICA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNzIsIDc5LCA3OSwgNzUsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDc3LCA3OSwgNzgsIDE5OSwgODAsIDY1LCA3MiwgCisgICAgNjUsIDg3LCAyMDAsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDc2LCA3OSwgMjE1LCA4NiwgNzksIDY3LCAKKyAgICA2NSwgNzYsIDczLCAxOTUsIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIAorICAgIDY5LCA4MywgMTk3LCA4NCwgODcsIDIwNywgNzksIDc4LCAxOTcsIDg1LCAyMDgsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIDg0LCA3OSwgCisgICAgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgNzIsIDczLCAKKyAgICA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4NCwgNzIsIDgyLCA2OSwgCisgICAgMTk3LCA2OCwgNzksIDg3LCAyMDYsIDc5LCA4NiwgNjksIDIxMCwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCA3OCwgCisgICAgODUsIDc3LCA2OSwgODIsIDczLCAxOTUsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA3OCwgMTk3LCA2NiwgODIsIDY1LCAKKyAgICA3MiwgNzcsIDIwMSwgNjYsIDY1LCA4MiwgMTk0LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNjUsIDIwMCwgNzcsIDY1LCAKKyAgICA4MiwgMjAzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgNzYsIAorICAgIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAKKyAgICAyMDQsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzYsIDc5LCAKKyAgICA3OCwgMTk5LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA3MiwgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgCisgICAgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNjcsIDIwMywgNzIsIDY1LCA3NiwgMTk4LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NCwgODUsIAorICAgIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODQsIDY5LCA3NiwgODUsIDcxLCAyMTMsIDY1LCA4MiwgNzcsIDY5LCA3OCwgCisgICAgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCAKKyAgICA3MywgMTk1LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcwLCA3MywgODYsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAorICAgIDczLCA2NSwgMjA0LCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA3NCwgNjksIDY5LCAyMDUsIDc1LCA2NSwgCisgICAgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzksIDgyLCA3MywgODksIAorICAgIDE5MywgODAsIDY1LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgCisgICAgMTk1LCA4MywgMTI4LCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDgzLCA3MywgODgsIDEyOCwgNzcsIDY1LCAxMjgsIAorICAgIDc4LCA2OSwgMjE1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTMsIDgzLCA3OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgCisgICAgNjUsIDIwMSwgODksIDY1LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgCisgICAgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgODMsIDY5LCAKKyAgICA4NiwgNjksIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgNjcsIDczLCA4NCwgMjAxLCA3MSwgODUsIAorICAgIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3OCwgNjUsIDEyOCwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgCisgICAgNzgsIDY5LCAxOTYsIDg3LCA2NSwgODIsIDY1LCA3OCwgMTk5LCA2NywgNzIsIDY1LCAyMDUsIDcxLCA4MiwgNjUsIDc4LCAKKyAgICA4NCwgNzIsIDE5MywgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIAogICAgIDg4LCAxMjgsIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIAogICAgIDkwLCA5MCwgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgCiAgICAgODUsIDgyLCAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAKQEAgLTg0LDE4MSArODMsMTkyIEBACiAgICAgOTAsIDY5LCA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAKICAgICAxMjgsIDkwLCA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCAKICAgICA5MCwgNjUsIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIAotICAgIDc0LCAxMjgsIDkwLCA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDY1LCA4MiwgCi0gICAgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgzLCA3MiwgNjUsIDEyOCwgOTAsIDgyLCAKLSAgICA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAxMjgsIDkwLCAKLSAgICA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgOTAsIDc0LCAKLSAgICA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCA3OCwgNzksIAotICAgIDgyLCAxMjgsIDkwLCA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgCi0gICAgMTI4LCA5MCwgNzMsIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIAotICAgIDIwMSwgOTAsIDcyLCA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDkwLCA3MiwgODksIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgCi0gICAgNjksIDEyOCwgOTAsIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgCi0gICAgOTAsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCAKLSAgICA3MiwgODUsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIAotICAgIDcyLCA4NSwgMTI4LCA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgCi0gICAgMTI4LCA5MCwgNzIsIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAKLSAgICAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCAKLSAgICA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCAKLSAgICA2NSwgODgsIDEyOCwgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIAotICAgIDEyOCwgOTAsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIAotICAgIDcyLCAxMjgsIDkwLCA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIAotICAgIDY5LCA3OCwgMTI4LCA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgCi0gICAgOTAsIDY5LCA1MCwgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgCi0gICAgOTAsIDY1LCA4OSwgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAKLSAgICAxMjgsIDkwLCA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCA4OCwgMTI4LCAKLSAgICA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCAKLSAgICA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTQsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKLSAgICA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIAotICAgIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgCi0gICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAKLSAgICA2NywgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAKLSAgICAxMjgsIDg5LCA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAKLSAgICAxMjgsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAKLSAgICAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAKLSAgICAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgCi0gICAgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIAotICAgIDg1LCAxMjgsIDg5LCA4NSwgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCAKLSAgICA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCAKLSAgICA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIAotICAgIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIAotICAgIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIAotICAgIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgCi0gICAgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCAKLSAgICA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIAotICAgIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCAKLSAgICA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIAotICAgIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgCi0gICAgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCAKLSAgICA4OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIAotICAgIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgCi0gICAgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIAotICAgIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIAotICAgIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAKLSAgICAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCAKLSAgICA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIAotICAgIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIAotICAgIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIAotICAgIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgCi0gICAgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAKLSAgICAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCAKLSAgICA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIAotICAgIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIAotICAgIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIAotICAgIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIAotICAgIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgCi0gICAgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCAKLSAgICA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIAotICAgIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MiwgCi0gICAgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgCi0gICAgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgCi0gICAgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCAKLSAgICA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCAKLSAgICA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIAotICAgIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgCi0gICAgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCAKLSAgICA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgCi0gICAgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgCi0gICAgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgCi0gICAgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCAKLSAgICA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIAotICAgIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgCi0gICAgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAKLSAgICAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgCi0gICAgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgCi0gICAgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgCi0gICAgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgCi0gICAgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgCi0gICAgODcsIDY1LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCA4OCwgCi0gICAgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIDY1LCAKLSAgICAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgCi0gICAgODgsIDc5LCA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgCi0gICAgODIsIDc5LCAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgODgsIDczLCA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAxMjgsIDg4LCA2OSwgCi0gICAgODMsIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgCi0gICAgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIAotICAgIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg3LCA5MCwgMTI4LCA4NywgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIAotICAgIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgODUsIDc2LCA4NSwgCi0gICAgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgCi0gICAgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgCi0gICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAKLSAgICAyMDAsIDg3LCA4MiwgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCAKLSAgICA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIAotICAgIDEyOCwgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgCi0gICAgODIsIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgCi0gICAgNzksIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIAotICAgIDEyOCwgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIAotICAgIDc3LCA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgCi0gICAgNzYsIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgCi0gICAgODcsIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIAotICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgCi0gICAgNjgsIDg1LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCA3OCwgMTI4LCA4NywgCisgICAgNzQsIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgCisgICAgODcsIDY1LCA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCAKKyAgICA5MCwgODUsIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgzLCA3MiwgNjUsIAorICAgIDEyOCwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIAorICAgIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIAorICAgIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIAorICAgIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgCisgICAgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgCisgICAgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgCisgICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgCisgICAgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCAKKyAgICA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIAorICAgIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgCisgICAgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgCisgICAgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAKKyAgICAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIAorICAgIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIAorICAgIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgCisgICAgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgCisgICAgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCAKKyAgICA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCAKKyAgICA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIAorICAgIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIAorICAgIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgCisgICAgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCAKKyAgICA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCAKKyAgICA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCAKKyAgICA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIAorICAgIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgCisgICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKKyAgICA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAKKyAgICA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgCisgICAgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgCisgICAgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgCisgICAgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCAKKyAgICA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCAKKyAgICA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCAKKyAgICA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCAKKyAgICA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCAKKyAgICA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgCisgICAgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCAKKyAgICA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCAKKyAgICA4OSwgMTI4LCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIAorICAgIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAKKyAgICAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIAorICAgIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgCisgICAgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIAorICAgIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCAKKyAgICA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCAKKyAgICA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCAKKyAgICA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIAorICAgIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIAorICAgIDg5LCA3MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgCisgICAgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgCisgICAgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCAKKyAgICA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgCisgICAgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgCisgICAgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCAKKyAgICA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCAKKyAgICA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgCisgICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCAKKyAgICA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCAKKyAgICA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIAorICAgIDY5LCA3MSwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIAorICAgIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIAorICAgIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgCisgICAgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgCisgICAgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCAKKyAgICA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAKKyAgICAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCAKKyAgICA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIAorICAgIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgCisgICAgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCAKKyAgICA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAorICAgIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCAKKyAgICA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIAorICAgIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIAorICAgIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgCisgICAgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgCisgICAgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgCisgICAgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCA4OCwgCisgICAgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDIwNSwgCisgICAgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAKKyAgICAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgCisgICAgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgCisgICAgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgCisgICAgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAKKyAgICAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAKKyAgICAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgCisgICAgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgCisgICAgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCAKKyAgICA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIDgwLCAKKyAgICA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAKKyAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIAorICAgIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIAorICAgIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCA4OSwgCisgICAgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCA4NiwgCisgICAgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgCisgICAgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgCisgICAgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgCisgICAgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAKKyAgICAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIAorICAgIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIAorICAgIDg3LCA3OSwgODIsIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgCisgICAgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIAorICAgIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIAorICAgIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgCisgICAgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCAKKyAgICA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIAorICAgIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIAorICAgIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgCisgICAgMjA2LCA4NywgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIAorICAgIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgCisgICAgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCA3OCwgMTI4LCA4NywgCiAgICAgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCA2OCwgNjksIDQ1LCAKICAgICA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIAogICAgIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgCiAgICAgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCAKICAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIAogICAgIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgCi0gICAgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgMTI4LCA4NywgCi0gICAgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCAKLSAgICA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCAKLSAgICA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNjksIAotICAgIDc4LCAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA2OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY1LCA4MiwgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCAKLSAgICA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCA4OSwgMTI4LCA4NywgNjUsIDIxNywgODcsIDY1LCA4OCwgNzMsIDc4LCAKLSAgICAxOTksIDg3LCA2NSwgODgsIDEyOCwgODcsIDY1LCA4NywgNDUsIDY1LCA4OSwgNzMsIDc4LCA0NSwgODIsIDY5LCA4MywgNzIsIAotICAgIDEyOCwgODcsIDY1LCA4NywgMTI4LCA4NywgNjUsIDIxNSwgODcsIDY1LCA4NiwgMjE3LCA4NywgNjUsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDY1LCA4NiwgNjksIDgzLCAxMjgsIDg3LCA2NSwgODYsIDY5LCAxMjgsIDg3LCA2NSwgODYsIDE5NywgODcsIAotICAgIDY1LCA4NSwgMTI4LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCA3NywgNjksIDc2LCA3OSwgCi0gICAgNzgsIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA2NSwgODQsIDY5LCAyMTAsIDg3LCA2NSwgODQsIDY3LCAKLSAgICA3MiwgMTI4LCA4NywgNjUsIDg0LCAxMjgsIDg3LCA2NSwgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgODMsIAotICAgIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNzYsIDY1LCAxMjgsIDg3LCA2NSwgODMsIDc2LCAKLSAgICAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgCi0gICAgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCA3NiwgMTI4LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIAotICAgIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgCi0gICAgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgCi0gICAgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIAotICAgIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIAotICAgIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NSwgMTI4LCAKKyAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MiwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIAorICAgIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIAorICAgIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAKKyAgICAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIAorICAgIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgCisgICAgODcsIDY5LCA2NSwgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAKKyAgICAxMjgsIDg3LCA2NSwgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAKKyAgICAxMjgsIDg3LCA2NSwgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIAorICAgIDEyOCwgODcsIDY1LCAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIAorICAgIDY5LCA4MywgMTI4LCA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIAorICAgIDY1LCA4NCwgODQsIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgCisgICAgODQsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCAKKyAgICA4NCwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNjksIDY2LCA2NSwgODMsIAorICAgIDc1LCA2OSwgODQsIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgCisgICAgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCAKKyAgICA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgCisgICAgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCAKKyAgICA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIAorICAgIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjgsIDY4LCAKKyAgICA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIAorICAgIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgCisgICAgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgCisgICAgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgCisgICAgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAogICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAogICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCiAgICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCkBAIC0zNDcsMjMyICszNTcsMjUwIEBACiAgICAgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKICAgICAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCAKICAgICA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIAotICAgIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCAKLSAgICA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA2NywgNjUsIAotICAgIDc4LCA3OSwgMTI4LCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgCi0gICAgNzMsIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCAKLSAgICA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgCi0gICAgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCAKLSAgICA3MywgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAotICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIAotICAgIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgCi0gICAgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCAKLSAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAotICAgIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIAotICAgIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCi0gICAgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgCisgICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDczLCAxMjgsIAorICAgIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgCisgICAgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIDc2LCA2NSwgODAsIDg1LCAKKyAgICAyMDMsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCA3MywgNjcsIAorICAgIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAKKyAgICAxMjgsIDg2LCA3MywgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIAorICAgIDg0LCA4MiwgNzMsIDc5LCA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgCisgICAgNjksIDEyOCwgODYsIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCAKKyAgICA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIAorICAgIDczLCA4MywgNjUsIDgyLCA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgCisgICAgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAKKyAgICAxMjgsIDg2LCA3MywgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgCisgICAgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAKKyAgICAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCAKKyAgICA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIAorICAgIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgCisgICAgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgCisgICAgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIAorICAgIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA4NiwgNzAsIDY1LCAxMjgsIDg2LCA2OSwgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgCisgICAgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIAorICAgIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKKyAgICA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKKyAgICA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKKyAgICA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCisgICAgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCAKKyAgICA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIAorICAgIDgyLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIAogICAgIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgCiAgICAgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgCiAgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgCiAgICAgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCAKICAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIAotICAgIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCAKLSAgICA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIAotICAgIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgCi0gICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzMsIAotICAgIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAKLSAgICAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCAKLSAgICA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgNDgsIDUxLCA1MCwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIAotICAgIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgCi0gICAgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NywgMTI4LCA4NiwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgNTUsIDEyOCwgODYsIDQ4LCA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIAotICAgIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCA0OCwgNTAsIDQ5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc0LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKLSAgICA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAxMjgsIDg2LCA0OCwgNDksIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCA0OCwgNDksIDUzLCAxMjgsIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDEyOCwgODYsIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgNDgsIDQ4LCA1MSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDczLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCAKLSAgICA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgCi0gICAgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgCi0gICAgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCAKLSAgICA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIAotICAgIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgCi0gICAgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCAKLSAgICA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCAKLSAgICA4NSwgODMsIDY5LCA0NSwgNDksIDEyOCwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCAKLSAgICA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIAotICAgIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIAotICAgIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgCi0gICAgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgCi0gICAgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgCi0gICAgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIDcyLCAKLSAgICAyMTIsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgCi0gICAgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCAKLSAgICA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIAotICAgIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgCi0gICAgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIDc4LCA3MywgMjEyLCA4NSwgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCAKLSAgICA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDY4LCAyMDcsIDg1LCA3OCwgNjgsIAotICAgIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgNzgsIDE5NywgODUsIDc4LCA2OCwgCi0gICAgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCAKLSAgICA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgNjgsIAotICAgIDEyOCwgODUsIDc4LCA2NSwgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCA2NSwgCi0gICAgMTI4LCA4NSwgMjA2LCA4NSwgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCA2OSwgCi0gICAgNzYsIDc2LCA2NSwgMTI4LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIAotICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCi0gICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKLSAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAotICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAotICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCi0gICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCi0gICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgNjgsIDY1LCAKLSAgICA3NywgNjUsIDEyOCwgODUsIDY2LCAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgNzgsIDcxLCAxMjgsIDg1LCAKLSAgICA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgNDgsIDUyLCA0OSwgMTI4LCA4NSwgNDgsIDUyLCAKLSAgICA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCA1NiwgMTI4LCA4NSwgNDgsIDUxLCA1NSwgMTI4LCAKLSAgICA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCA4NSwgNDgsIDUxLCA1MiwgMTI4LCA4NSwgNDgsIAotICAgIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDEyOCwgODUsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCAKLSAgICAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAxMjgsIDg1LCA0OCwgNTAsIDU0LCAxMjgsIDg1LCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NSwgNDgsIAotICAgIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA4NSwgNDgsIDUwLCA0OCwgCi0gICAgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA4NSwgCi0gICAgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgNDgsIDQ5LCAKLSAgICA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIAotICAgIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgCi0gICAgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIAotICAgIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgCi0gICAgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgCi0gICAgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgCi0gICAgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgCi0gICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIAotICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIAotICAgIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIAotICAgIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgCi0gICAgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgCi0gICAgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgCi0gICAgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCAKLSAgICA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgCi0gICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIAotICAgIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIAotICAgIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgCi0gICAgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCAKLSAgICA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgCi0gICAgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAKLSAgICAyMDAsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIAotICAgIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgCi0gICAgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCAKLSAgICA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIAotICAgIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgCi0gICAgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgCi0gICAgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCAKLSAgICA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIAotICAgIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIAotICAgIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgCi0gICAgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgCi0gICAgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIAotICAgIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgCi0gICAgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgCi0gICAgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIAotICAgIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgCi0gICAgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgCi0gICAgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAKLSAgICAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCAKLSAgICA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIAotICAgIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCAKLSAgICA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIAotICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCAKLSAgICA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgCi0gICAgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCAKLSAgICA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgCi0gICAgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCAKLSAgICA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIAotICAgIDczLCA4NCwgNzksIDIxMSwgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgCi0gICAgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCAKLSAgICA4MCwgNzksIDY4LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCAxOTcsIAotICAgIDg0LCA4MiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIDg0LCA4MiwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCA3NywgNzksIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDczLCA3MSwgNzksIDgyLCAKLSAgICA3MSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDgyLCA3MywgNzAsIAotICAgIDc5LCA3NiwgNzMsIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgODIsIDczLCA2OCwgCi0gICAgNjksIDc4LCAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA4NSwgNzYsIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIAotICAgIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCAKLSAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIAotICAgIDEyOCwgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgCi0gICAgNzgsIDY4LCAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIAorICAgIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgCisgICAgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCAKKyAgICA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgCisgICAgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCAKKyAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIAorICAgIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzQsIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIAorICAgIDg2LCA2NSwgMjAwLCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NiwgNDgsIDUxLCA1MCwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAKKyAgICA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NywgMTI4LCA4NiwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIAorICAgIDEyOCwgODYsIDQ4LCA1MCwgNTUsIDEyOCwgODYsIDQ4LCA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDUwLCAxMjgsIDg2LCA0OCwgNTAsIDQ5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA0OCwgNzUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc0LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA0OCwgNzIsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA0OCwgNjksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNjYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIAorICAgIDg2LCA0OCwgNDksIDU3LCAxMjgsIDg2LCA0OCwgNDksIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgCisgICAgNDksIDU0LCAxMjgsIDg2LCA0OCwgNDksIDUzLCAxMjgsIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDEyOCwgODYsIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNTYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA1NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4NiwgNDgsIDQ4LCA1MSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDczLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA0OSwgNzEsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIAorICAgIDQ4LCA0OSwgNjgsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgCisgICAgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAKKyAgICAxMjgsIDg1LCA5MCwgMTc5LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAKKyAgICAxMjgsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIAorICAgIDUxLCAxMjgsIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIAorICAgIDg1LCA4MywgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgCisgICAgODMsIDcyLCA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAKKyAgICAxMjgsIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAKKyAgICAyMTgsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCAKKyAgICA4NSwgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCAKKyAgICA4NSwgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIAorICAgIDgyLCA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIAorICAgIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAKKyAgICAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIAorICAgIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCAKKyAgICAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIAorICAgIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgCisgICAgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCAKKyAgICA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIAorICAgIDc4LCA3MywgMjEyLCA4NSwgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgCisgICAgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDY4LCAyMDcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCAKKyAgICA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgNzgsIDE5NywgODUsIDc4LCA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIAorICAgIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgCisgICAgMTkzLCA4NSwgNzgsIDY3LCA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCAKKyAgICA4MiwgNjUsIDg0LCA2OSwgNjgsIDEyOCwgODUsIDc4LCA2NSwgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIAorICAgIDE5NiwgODUsIDc4LCA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCAKKyAgICA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCA2NSwgMTI4LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIAorICAgIDY2LCA3MywgNzgsIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgCisgICAgODUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCAKKyAgICA3NiwgNjksIDY1LCA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIAorICAgIDczLCAxOTUsIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIAorICAgIDEyOCwgODUsIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgCisgICAgODQsIDE5MywgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIAorICAgIDY2LCA4NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgCisgICAgNjgsIDY1LCA3NywgNjUsIDEyOCwgODUsIDY2LCAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDg1LCA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgNDgsIDUyLCA0OSwgMTI4LCA4NSwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCA1NiwgMTI4LCA4NSwgNDgsIDUxLCAKKyAgICA1NSwgMTI4LCA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCA4NSwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA4NSwgNDgsIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDEyOCwgODUsIAorICAgIDQ4LCA1MSwgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg1LCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAxMjgsIDg1LCA0OCwgNTAsIDU0LCAKKyAgICAxMjgsIDg1LCA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCAKKyAgICA4NSwgNDgsIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA4NSwgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA4NSwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDg1LCAKKyAgICA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIAorICAgIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIAorICAgIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIAorICAgIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIAorICAgIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgCisgICAgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCAKKyAgICA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCAKKyAgICA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDg5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIDg4LCA4NywgODYsIAorICAgIDEyOCwgODQsIDg4LCA4NywgMjE0LCA4NCwgODgsIDcyLCA2OSwgNjksIDIwMiwgODQsIDg3LCA3OSwgNzksIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgCisgICAgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg0LCAKKyAgICA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAxMjgsIAorICAgIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIAorICAgIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgCisgICAgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgCisgICAgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIAorICAgIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAKKyAgICAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgCisgICAgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCAyMDYsIDg0LCAKKyAgICA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIAorICAgIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIAorICAgIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAKKyAgICAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIDY4LCAKKyAgICA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIAorICAgIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCA4NCwgCisgICAgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIDg0LCAKKyAgICA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgNzMsIAorICAgIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCA4NCwgCisgICAgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIDg0LCAKKyAgICA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgODQsIAorICAgIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIDY1LCAKKyAgICA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIDg0LCAKKyAgICA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgNjUsIAorICAgIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIAorICAgIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDc5LCA3OSwgCisgICAgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCA4MywgNzIsIAorICAgIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIDY5LCA2OSwgCisgICAgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY2LCAKKyAgICAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCAKKyAgICA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIAorICAgIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgCisgICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NiwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgCisgICAgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCAKKyAgICA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAorICAgIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgCisgICAgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKKyAgICA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAorICAgIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgCisgICAgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKKyAgICA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIAorICAgIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIAorICAgIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCAKKyAgICA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIAorICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIAorICAgIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgCisgICAgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgODQsIDgyLCA3MywgODQsIDczLCAKKyAgICA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgODIsIAorICAgIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgCisgICAgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNzMsIDc2LCAKKyAgICA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODQsIDgyLCA3MywgNzMsIDgzLCA2NSwgODAsIDEyOCwgODQsIDgyLCA3MywgNzEsIAorICAgIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCAyMDUsIDg0LCA4MiwgNzMsIDcxLCA3OSwgCisgICAgODIsIDcxLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgODIsIDczLCAKKyAgICA3MCwgNzksIDc2LCA3MywgNjUsIDg0LCAxOTcsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA4MiwgNzMsIAorICAgIDY4LCA2OSwgNzgsIDIxMiwgODQsIDgyLCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgCisgICAgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODIsIDc5LCA4NSwgNzgsIAorICAgIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4NCwgODIsIDczLCAKKyAgICA2NSwgMTI4LCA4NCwgODIsIDczLCAxMjgsIDg0LCA4MiwgNjksIDgzLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4NCwgODIsIAorICAgIDY5LCA3OCwgNjgsIDEyOCwgODQsIDgyLCA2OSwgNzgsIDE5NiwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MSwgCiAgICAgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCAKICAgICA0NSwgNDksIDEyOCwgODQsIDgyLCA2OSwgNjksIDEyOCwgODQsIDgyLCA2OSwgMTk3LCA4NCwgODIsIDY5LCA2NSwgNjgsIAogICAgIDczLCA3OCwgNzEsIDEyOCwgODQsIDgyLCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgODAsIDY5LCA5MCwgNzMsIDg1LCA3NywgCkBAIC01ODMsMTQxNCArNjExLDE0ODMgQEAKICAgICA4NCwgODIsIDY1LCAyMDUsIDg0LCA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIAogICAgIDY1LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCA2NywgMTI4LCA4NCwgODIsIDY1LCA3MCwgCiAgICAgNzAsIDczLCAxOTUsIDg0LCA4MiwgNjUsIDY4LCAxOTcsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKLSAgICA4MiwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDEyOCwgODQsIDc5LCA4OCwgMTI4LCA4NCwgNzksIDg3LCA2OSwgODIsIAotICAgIDEyOCwgODQsIDc5LCA4NSwgODIsIDc4LCA3OSwgNzMsIDIxMSwgODQsIDc5LCA4NCwgNjUsIDIwNCwgODQsIDc5LCA4NCwgCi0gICAgMTI4LCA4NCwgNzksIDgyLCA4NCwgNzksIDczLCA4MywgMTk3LCA4NCwgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgODMsIAotICAgIDEyOCwgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDIxMSwgODQsIDc5LCA4MiwgNjcsIDcyLCAxMjgsIDg0LCA3OSwgCi0gICAgODEsIDEyOCwgODQsIDc5LCA4MCwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIDgwLCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgMTk2LCA4NCwgNzksIDgwLCAxMjgsIDg0LCA3OSwgMjA4LCA4NCwgNzksIDc5LCA4NCwgNzIsIDEyOCwgODQsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgODQsIDc5LCA3OCwgNzksIDgzLCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgNjksIDEyOCwgODQsIAotICAgIDc5LCA3OCwgNzEsIDg1LCAxOTcsIDg0LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTYsIDEyOCwgCi0gICAgODQsIDc5LCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICA0NSwgNTMsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCAKLSAgICA3OSwgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIAotICAgIDc2LCA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDg0LCA3OSwgNjgsIDIwNywgCi0gICAgODQsIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAKLSAgICAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgCi0gICAgODQsIDc2LCA3MiwgODksIDY1LCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKLSAgICA4NCwgNzYsIDcyLCA3OSwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzMsIDEyOCwgODQsIAotICAgIDc2LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY1LCAxMjgsIDg0LCA3NiwgCi0gICAgNjksIDY5LCAxMjgsIDg0LCA3NiwgNjUsIDEyOCwgODQsIDc0LCA2OSwgMTI4LCA4NCwgNzMsIDg4LCAxMjgsIDg0LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDg0LCA3MywgODcsIDY1LCAyMTgsIDg0LCA3MywgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCAKLSAgICA3MywgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzMsIDg0LCAxOTMsIDg0LCA3MywgODQsIDEyOCwgODQsIDczLCA4MiwgODksIAotICAgIDY1LCA3NSwgMTI4LCA4NCwgNzMsIDgyLCA4NCwgMTkzLCA4NCwgNzMsIDgyLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4NCwgNzMsIDgyLCAxMjgsIDg0LCA3MywgMjEwLCA4NCwgNzMsIDgwLCA4MCwgNzMsIDEyOCwgCi0gICAgODQsIDczLCA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCAKLSAgICA4OSwgMTI4LCA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIAotICAgIDg1LCA4MiwgNjksIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAKLSAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCAxOTcsIDg0LCAKLSAgICA3MywgNzYsIDEyOCwgODQsIDczLCAyMDQsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgCi0gICAgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCAKLSAgICA2OSwgODUsIDg0LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgCi0gICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKLSAgICA4NSwgMjEyLCA4NCwgNzMsIDcxLCA3MiwgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIAotICAgIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgCi0gICAgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAKLSAgICAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCAKLSAgICA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIAotICAgIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIAotICAgIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAKLSAgICAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIAotICAgIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgCi0gICAgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgCi0gICAgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIAotICAgIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgCi0gICAgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCAKLSAgICA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIAotICAgIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgCi0gICAgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAKLSAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIAotICAgIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKLSAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAotICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCi0gICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCAKLSAgICA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIAotICAgIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgCi0gICAgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCAKLSAgICA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIAotICAgIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgCi0gICAgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKLSAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAotICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKLSAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgODIsIDY1LCA2NywgNzUsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA4MiwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDY1LCAKKyAgICAxMjgsIDg0LCA4MiwgMTI4LCA4NCwgNzksIDg4LCAxMjgsIDg0LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDg2LCAKKyAgICAxMjgsIDg0LCA3OSwgODUsIDgyLCA3OCwgNzksIDczLCAyMTEsIDg0LCA3OSwgODUsIDY3LCA3MiwgODQsIDc5LCA3OCwgCisgICAgMTk3LCA4NCwgNzksIDg0LCA2NSwgMjA0LCA4NCwgNzksIDg0LCAxMjgsIDg0LCA3OSwgODMsIDEyOCwgODQsIDc5LCA4MiwgCisgICAgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgNzgsIDY1LCA2OCwgNzksIDEyOCwgODQsIDc5LCA4MiwgNjcsIDg1LCAKKyAgICA3NiwgODUsIDgzLCAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgCisgICAgMTI4LCA4NCwgNzksIDgxLCAxMjgsIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODQsIDc5LCA4MCwgMTI4LCA4NCwgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIAorICAgIDcyLCAxMjgsIDg0LCA3OSwgNzksIDc4LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgCisgICAgODUsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCAKKyAgICA2OSwgNDUsIDU2LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgCisgICAgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCAKKyAgICA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIAorICAgIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgCisgICAgMjA3LCA4NCwgNzksIDczLCA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCAKKyAgICA4NCwgNzksIDY4LCAyMDcsIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIAorICAgIDY1LCAxMjgsIDg0LCA3OCwgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCAKKyAgICA4NCwgNzYsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIAorICAgIDc2LCA3MiwgODUsIDEyOCwgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgCisgICAgNzIsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCAKKyAgICA2NSwgMTI4LCA4NCwgNzYsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCAKKyAgICA4OCwgMTI4LCA4NCwgNzMsIDg3LCA4MiwgMTI4LCA4NCwgNzMsIDg3LCA3OCwgMTI4LCA4NCwgNzMsIDg3LCA2NSwgMjE4LCAKKyAgICA4NCwgNzMsIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDg0LCA3NiwgNzksIDEyOCwgODQsIDczLCA4NCwgCisgICAgMTkzLCA4NCwgNzMsIDg0LCAxMjgsIDg0LCA3MywgODIsIDg5LCA2NSwgNzUsIDEyOCwgODQsIDczLCA4MiwgODQsIDE5MywgCisgICAgODQsIDczLCA4MiwgNzksIDc4LCA3MywgNjUsIDIwNiwgODQsIDczLCA4MiwgNzIsIDg1LCA4NCwgMTkzLCA4NCwgNzMsIDgyLCAKKyAgICA2OSwgMTk2LCA4NCwgNzMsIDgyLCAxMjgsIDg0LCA3MywgMjEwLCA4NCwgNzMsIDgwLCA4MCwgNzMsIDEyOCwgODQsIDczLCAKKyAgICA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCA4OSwgMTI4LCAKKyAgICA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAxMjgsIDg0LCA3MywgCisgICAgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY5LCA4MywgMTI4LCA4NCwgNzMsIDc2LCAKKyAgICA2OCwgNjksIDEyOCwgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCAKKyAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIAorICAgIDc1LCA2OSwgODUsIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKKyAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCAKKyAgICA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzEsIDcyLCA4NCwgNzYsIAorICAgIDg5LCA0NSwgNjcsIDc2LCA3OSwgODMsIDY5LCAxOTYsIDg0LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA3MywgNzEsIDY5LCA4MiwgCisgICAgMTI4LCA4NCwgNzMsIDcxLCA2OSwgMjEwLCA4NCwgNzMsIDcwLCA3MywgNzgsIDY1LCA3MSwgMjAwLCA4NCwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA4NCwgNzMsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDE5NywgODQsIDczLCA2NywgNzUsIDY5LCA4NCwgODMsIAorICAgIDEyOCwgODQsIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA4NCwgNzMsIDY3LCAyMDMsIAorICAgIDg0LCA3MywgNjUsIDgyLCA2NSwgMTI4LCA4NCwgNzMsIDUwLCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgCisgICAgNzksIDc5LCAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCAKKyAgICA3MywgNzMsIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIAorICAgIDY1LCA2NSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgCisgICAgNzMsIDgzLCA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCAKKyAgICA4NCwgNzksIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIAorICAgIDY5LCAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgCisgICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCAKKyAgICA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCisgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKKyAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAKKyAgICAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCisgICAgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAKKyAgICA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA3OSwgNzcsIAorICAgIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIAorICAgIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgCisgICAgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIAorICAgIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgCisgICAgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCA3MSwgMTk3LCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCAKKyAgICA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCA3MiwgCisgICAgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgCisgICAgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCAKKyAgICA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIAorICAgIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIAorICAgIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgCisgICAgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgCisgICAgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCAKKyAgICA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIAorICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgCisgICAgNjUsIDc0LCAxMjgsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCAKKyAgICA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgCisgICAgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgCisgICAgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgCisgICAgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCAKKyAgICA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIAorICAgIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgCisgICAgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIAorICAgIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIAorICAgIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCiAgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKICAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAotICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgCi0gICAgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIAotICAgIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgCi0gICAgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCAKLSAgICA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIAotICAgIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgCi0gICAgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKLSAgICA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIAotICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCAKLSAgICA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIAotICAgIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgCi0gICAgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgCi0gICAgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgCi0gICAgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCAKLSAgICA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIAotICAgIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgCi0gICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAKLSAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAotICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCi0gICAgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAKLSAgICAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIAotICAgIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIAotICAgIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgCi0gICAgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCAKLSAgICA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIAotICAgIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCAKLSAgICA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCAKLSAgICA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIAotICAgIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgCi0gICAgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCAKLSAgICA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgCi0gICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgCi0gICAgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCAKLSAgICA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIAotICAgIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIAotICAgIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCAKLSAgICA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIAotICAgIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgCi0gICAgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgCi0gICAgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgCi0gICAgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgCi0gICAgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIAotICAgIDEyOCwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIAotICAgIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgCi0gICAgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCAKLSAgICA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTUsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAotICAgIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNDgsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OSwgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgODMsIDg3LCAKLSAgICA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIDEyOCwgODMsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIDczLCA3NywgCi0gICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgODcsIAotICAgIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCA2NSwgCi0gICAgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIDgzLCAKLSAgICA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgODMsIAotICAgIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCA4NCwgCi0gICAgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCAKLSAgICA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIAotICAgIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCAKLSAgICA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIAotICAgIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgCi0gICAgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIAotICAgIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAKLSAgICAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCAKLSAgICA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIAotICAgIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIAotICAgIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCAKLSAgICA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIAotICAgIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIAotICAgIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzIsIDg1LCA4MiwgCi0gICAgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCi0gICAgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAyMTEsIDgzLCA4NSwgNjcsIDY3LCAKLSAgICA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIAotICAgIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCi0gICAgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCAKLSAgICA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIAotICAgIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgCi0gICAgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCAKLSAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCi0gICAgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIAotICAgIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCAKLSAgICA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIAotICAgIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgODksIAotICAgIDEyOCwgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAotICAgIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgCi0gICAgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgCi0gICAgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIAotICAgIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgCi0gICAgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCAKLSAgICA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIAotICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgCi0gICAgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCAKLSAgICA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIAotICAgIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIAotICAgIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgCi0gICAgMTI4LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCAKLSAgICA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIAotICAgIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgCi0gICAgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCAKLSAgICA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIAotICAgIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY3LCA2NywgCi0gICAgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCAKLSAgICA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIAotICAgIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgCi0gICAgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAKLSAgICAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCAKLSAgICA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIAotICAgIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIAotICAgIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgCi0gICAgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCi0gICAgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCAKLSAgICA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgCi0gICAgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgCisgICAgMjExLCA4NCwgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCAKKyAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIAorICAgIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgCisgICAgNjksIDIxMCwgODQsIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIAorICAgIDc5LCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgCisgICAgNjUsIDEyOCwgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCAKKyAgICA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA3OCwgODMsIDEyOCwgODQsIAorICAgIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgCisgICAgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgCisgICAgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIAorICAgIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY5LCA0NSwgCisgICAgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCAKKyAgICA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIAorICAgIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIAorICAgIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCAKKyAgICA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIAorICAgIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgCisgICAgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIDEyOCwgODQsIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgCisgICAgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgyLCAKKyAgICA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIAorICAgIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIAorICAgIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2NSwgCisgICAgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCAKKyAgICA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIAorICAgIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgCisgICAgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCAKKyAgICA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgCisgICAgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCAKKyAgICA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCAKKyAgICA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIAorICAgIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIDEyOCwgODQsIAorICAgIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgCisgICAgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCAKKyAgICA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCAKKyAgICA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIAorICAgIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCAKKyAgICA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgCisgICAgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAKKyAgICAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIAorICAgIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCAKKyAgICA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCAKKyAgICA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCAKKyAgICA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCAKKyAgICA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgCisgICAgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCAKKyAgICA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIAorICAgIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgCisgICAgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKKyAgICAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIAorICAgIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAorICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCisgICAgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIAorICAgIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAKKyAgICAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCAKKyAgICA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIAorICAgIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgCisgICAgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCAKKyAgICA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIAorICAgIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgCisgICAgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgCisgICAgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIAorICAgIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgCisgICAgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCAKKyAgICA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIAorICAgIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCAKKyAgICA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIAorICAgIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgCisgICAgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKKyAgICA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIAorICAgIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgCisgICAgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCAKKyAgICA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIAorICAgIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIAorICAgIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgCisgICAgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCAKKyAgICA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIAorICAgIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAKKyAgICAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIAorICAgIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgCisgICAgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgCisgICAgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIAorICAgIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgCisgICAgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIAorICAgIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgCisgICAgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgMTI4LCA4MywgODUsIDY1LCAxMjgsIDgzLCAyMTMsIAorICAgIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAxMjgsIDgzLCA4NCwgCisgICAgODUsIDY4LCA3MywgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIAorICAgIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAKKyAgICA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIAorICAgIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgCisgICAgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCAKKyAgICA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIAorICAgIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgCisgICAgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCAKKyAgICA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgCisgICAgODIsIDY1LCA3MywgNzAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCAKKyAgICA4MywgODQsIDc5LCA4NiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIAorICAgIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgCisgICAgNjUsIDcxLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA4MywgODQsIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIAorICAgIDgyLCA4NSwgMjA4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgCisgICAgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgMTI4LCAKKyAgICA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIAorICAgIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAKKyAgICAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgCisgICAgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCAKKyAgICA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgCisgICAgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCAKKyAgICA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIAorICAgIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgCisgICAgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzcsIDgwLCA2OSwgMTk2LCA4MywgODQsIDY1LCAKKyAgICA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIAorICAgIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgCisgICAgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCAKKyAgICA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIAorICAgIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgCisgICAgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAKKyAgICAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCAKKyAgICA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCA4MywgNzIsIDczLCA3OCwgCisgICAgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgCisgICAgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgCisgICAgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgCisgICAgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAKICAgICAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIAotICAgIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgCi0gICAgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIAotICAgIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCAKLSAgICA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIAotICAgIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCAKLSAgICA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgCi0gICAgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCAKLSAgICA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIAorICAgIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4OSwgMTI4LCA4MywgCisgICAgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCAKKyAgICA4MywgODAsIDgyLCA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIAorICAgIDY5LCA2NywgNzIsIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgMTk5LCA4MywgCisgICAgODAsIDc5LCA4NCwgMTI4LCA4MywgODAsIDc5LCA4MiwgODQsIDIxMSwgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCAKKyAgICA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MywgODAsIAorICAgIDc2LCA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgCisgICAgODIsIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgCisgICAgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNzMsIDY4LCA2OSwgMjEwLCAKKyAgICA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA4MCwgNjksIAorICAgIDgzLCA3NywgNzMsIDc2LCAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDgwLCA2OSwgCisgICAgNjksIDY3LCA3MiwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCA2NSwgNzYsIAorICAgIDEyOCwgODMsIDgwLCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4MCwgCisgICAgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCAKKyAgICA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIAorICAgIDgyLCA3NSwgNzYsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgCisgICAgODIsIDc1LCA3NiwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCAKKyAgICA3MiwgNjksIDg0LCA4NCwgNzMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA2OCwgCisgICAgMTk3LCA4MywgODAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgCisgICAgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCAKKyAgICA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIAogICAgIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgCiAgICAgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCAKICAgICA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCAKICAgICA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIAogICAgIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAKLSAgICAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIAotICAgIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIAotICAgIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIAotICAgIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgCi0gICAgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgCi0gICAgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIAotICAgIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCAKLSAgICA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIAotICAgIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKLSAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCAKLSAgICA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIAotICAgIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgCi0gICAgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIAotICAgIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgCi0gICAgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgCi0gICAgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCAKLSAgICA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIAotICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIAotICAgIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIAotICAgIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCAKLSAgICA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKLSAgICAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIAotICAgIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCAKLSAgICA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIAotICAgIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgCi0gICAgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCAKLSAgICA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgCi0gICAgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAotICAgIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIAotICAgIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgCi0gICAgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAKLSAgICAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIAotICAgIDIxMSwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDczLCA2NiwgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgCi0gICAgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIAotICAgIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCAKLSAgICA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCAKLSAgICA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIAotICAgIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgCi0gICAgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjksIAotICAgIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzIsIDc5LCA4MiwgCi0gICAgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIAotICAgIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDgzLCAKLSAgICA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc5LCA4MywgMjExLCA4MywgNzIsIAotICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIDE5NiwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgCi0gICAgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIAotICAgIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCAKLSAgICA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgMjEyLCA4MywgNzIsIAotICAgIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIDgzLCA3MiwgNzksIDc5LCA4NCwgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgNzksIDE5NywgODMsIDcyLCAKLSAgICA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCA2NSwgNzYsIDY1LCA2NSwgCi0gICAgMTI4LCA4MywgNzIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDE5MywgODMsIDcyLCA3MywgODIsIDIxMiwgCi0gICAgODMsIDcyLCA3MywgODIsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDczLCA4MiwgMTI4LCA4MywgNzIsIDczLCAyMTAsIDgzLCAKLSAgICA3MiwgNzMsIDgxLCAxMjgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA4NCwgMjA3LCA4MywgNzIsIAotICAgIDczLCA3OCwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA2OCwgMTkzLCA4MywgNzIsIDczLCA3OCwgMTI4LCA4MywgCi0gICAgNzIsIDczLCAyMDYsIDgzLCA3MiwgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzIsIDczLCA3NywgMTkzLCA4MywgNzIsIDczLCAKLSAgICA3NywgMTI4LCA4MywgNzIsIDczLCAyMDUsIDgzLCA3MiwgNzMsIDczLCA3OCwgMTI4LCA4MywgNzIsIDczLCA3MywgMTI4LCAKLSAgICA4MywgNzIsIDczLCA3MCwgMjEyLCA4MywgNzIsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDgzLCA3MiwgNzMsIDY4LCAxMjgsIAotICAgIDgzLCA3MiwgNzMsIDE5NiwgODMsIDcyLCA3MiwgNjUsIDEyOCwgODMsIDcyLCA3MiwgMTkzLCA4MywgNzIsIDY5LCA4OCwgCi0gICAgMTI4LCA4MywgNzIsIDY5LCA4NiwgNjUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg1LCAKLSAgICA3OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDg0LCA4NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDIxMiwgODMsIDcyLCA2OSwgODMsIDcyLCA3NiwgNjUsIDc3LCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzMsIDcxLCAKLSAgICAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzMsIDE5OSwgODMsIDcyLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA4MywgNzIsIAotICAgIDY5LCA4MywgNzIsIDEyOCwgODMsIDcyLCA2OSwgODEsIDY5LCAyMDQsIDgzLCA3MiwgNjksIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDc4LCAxMjgsIDgzLCA3MiwgNjksIDc2LCA3NiwgMTI4LCA4MywgNzIsIDY5LCA3NiwgMjA0LCA4MywgNzIsIDY5LCAKLSAgICA3NiwgNzAsIDEyOCwgODMsIDcyLCA2OSwgNzMsIDEyOCwgODMsIDcyLCA2OSwgNzEsIDU3LCAxMjgsIDgzLCA3MiwgNjksIAotICAgIDY5LCA4MCwgMTI4LCA4MywgNzIsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCA3MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgCi0gICAgNzIsIDY5LCA2OSwgMjA2LCA4MywgNzIsIDY5LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA0NSwgNzEsIDc5LCA2NSwgODQsIAotICAgIDEyOCwgODMsIDcyLCAxOTcsIDgzLCA3MiwgNjcsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4OCwgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgCi0gICAgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgNzIsIDY1LCA4MiwgODAsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA1MCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDc3LCA4MiwgCi0gICAgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA3NSwgODQsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIAotICAgIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgCi0gICAgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgCi0gICAgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCAKLSAgICA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgCi0gICAgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgCi0gICAgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCAKLSAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCi0gICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIAotICAgIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgCi0gICAgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgCi0gICAgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgCi0gICAgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCAKLSAgICA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIAotICAgIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCAKLSAgICA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAKLSAgICAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIAotICAgIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCAKLSAgICA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIAotICAgIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgCi0gICAgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCAKLSAgICA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIAotICAgIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCAKLSAgICA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIAotICAgIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCAKLSAgICA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIAotICAgIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgCi0gICAgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCAKLSAgICA2NSwgNzUsIDc5LCA4NCwgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIAotICAgIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgODMsIDY1LCAKLSAgICA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgNzEsIAotICAgIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIAotICAgIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgCi0gICAgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCAKLSAgICA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAKLSAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCAKLSAgICA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIAotICAgIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgCi0gICAgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgCi0gICAgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAKLSAgICAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgCi0gICAgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIAotICAgIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgCi0gICAgNzEsIDY2LCAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCi0gICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCAKLSAgICA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIAotICAgIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA4MiwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgCi0gICAgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDcyLCAKLSAgICA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgCi0gICAgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCAKLSAgICA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAKLSAgICAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIAotICAgIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCAKLSAgICA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgCisgICAgMjExLCA4MywgNzksIDc2LCA3MywgMTk2LCA4MywgNzksIDcyLCAxMjgsIDgzLCA3OSwgNzEsIDY4LCA3MywgNjUsIDIwNiwgCisgICAgODMsIDc5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY5LCA0NSwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIAorICAgIDc5LCA3MCwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3OSwgNzAsIDIxMiwgODMsIDc5LCAxOTgsIDgzLCA3OSwgCisgICAgNjcsIDczLCA2OSwgODQsIDg5LCAxMjgsIDgzLCA3OSwgNjcsIDY3LCA2OSwgMjEwLCA4MywgNzksIDY1LCA4MCwgMTI4LCAKKyAgICA4MywgNzksIDY1LCAxMjgsIDgzLCAyMDcsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDc4LCAxMjgsIDgzLCA3OCwgNzksIAorICAgIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDc5LCA4NywgCisgICAgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIDEyOCwgODMsIDc4LCA3OSwgMjE1LCAKKyAgICA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIAorICAgIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgCisgICAgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCAKKyAgICA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgODMsIDc2LCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDgzLCA3NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAKKyAgICAxOTcsIDgzLCA3NiwgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIAorICAgIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAKKyAgICAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIAorICAgIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIAorICAgIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgCisgICAgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCAKKyAgICA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCAKKyAgICA4OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIAorICAgIDg4LCA4NCwgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgCisgICAgNzMsIDg4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCAKKyAgICA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIAorICAgIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgCisgICAgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCAKKyAgICA3MywgODgsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIAorICAgIDczLCAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgCisgICAgNzEsIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKKyAgICAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIAorICAgIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCAKKyAgICA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgCisgICAgMTk2LCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCAKKyAgICA3MywgNzAsIDg0LCA0NSwgNTEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCAKKyAgICA3NiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIAorICAgIDgzLCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4MCwgCisgICAgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCAKKyAgICA3NiwgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIAorICAgIDcxLCA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgCisgICAgNzYsIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIAorICAgIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgCisgICAgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgCisgICAgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAKKyAgICA3NywgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgCisgICAgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgMTI4LCA4MywgCisgICAgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCAKKyAgICA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIAorICAgIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgCisgICAgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIAorICAgIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgCisgICAgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAKKyAgICAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgCisgICAgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgCisgICAgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCAKKyAgICA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIAorICAgIDgzLCA3MiwgODIsIDczLCA3MywgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgCisgICAgNzIsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCAKKyAgICA4MiwgNjksIDE5NiwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgzLCA3MiwgNzksIDgyLCA4NCwgCisgICAgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgCisgICAgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIAorICAgIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc5LCA4MywgMjExLCA4MywgCisgICAgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIDE5NiwgODMsIDcyLCA3OSwgODIsIAorICAgIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCAKKyAgICA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgCisgICAgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIAorICAgIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgMjEyLCA4MywgCisgICAgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCA4MCwgNzMsIDc4LCAxOTksIDgzLCAKKyAgICA3MiwgNzksIDgwLCAxMjgsIDgzLCA3MiwgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA4MywgNzIsIDc5LCA3OSwgNzMsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgODMsIDcyLCA3OSwgNzEsIDIwMSwgCisgICAgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAxOTcsIDgzLCA3MiwgNzksIDY1LCAKKyAgICAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIDc2LCA2NSwgNjUsIDEyOCwgODMsIAorICAgIDcyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCAxOTMsIDgzLCA3MiwgNzMsIDgyLCAyMTIsIDgzLCA3MiwgCisgICAgNzMsIDgyLCA2NSwgNjksIDEyOCwgODMsIDcyLCA3MywgODIsIDEyOCwgODMsIDcyLCA3MywgMjEwLCA4MywgNzIsIDczLCAKKyAgICA4MSwgMTI4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA4MywgNzIsIDczLCA3OCwgODQsIDIwNywgODMsIDcyLCA3MywgNzgsIAorICAgIDczLCA3MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgCisgICAgNjUsIDEyOCwgODMsIDcyLCA3MywgNzcsIDE5MywgODMsIDcyLCA3MywgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgCisgICAgNzIsIDczLCA3MywgNzgsIDEyOCwgODMsIDcyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCAKKyAgICA3MywgNjksIDc2LCA2OCwgMTI4LCA4MywgNzIsIDczLCA2OCwgMTI4LCA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIAorICAgIDY1LCAxMjgsIDgzLCA3MiwgNzIsIDE5MywgODMsIDcyLCA2OSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIAorICAgIDgzLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgCisgICAgNjksIDgxLCA4NCwgODUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCAKKyAgICA2OSwgMTI4LCA4MywgNzIsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY5LCAyMTIsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzYsIAorICAgIDY1LCA3NywgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCA3MSwgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCAKKyAgICAxOTksIDgzLCA3MiwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCAxMjgsIDgzLCA3MiwgNjksIAorICAgIDgxLCA2OSwgMjA0LCA4MywgNzIsIDY5LCA4MCwgMTI4LCA4MywgNzIsIDY5LCA3OCwgMTI4LCA4MywgNzIsIDY5LCA3NiwgCisgICAgNzYsIDEyOCwgODMsIDcyLCA2OSwgNzYsIDIwNCwgODMsIDcyLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA3MiwgNjksIDczLCAKKyAgICAxMjgsIDgzLCA3MiwgNjksIDcxLCA1NywgMTI4LCA4MywgNzIsIDY5LCA2OSwgODAsIDEyOCwgODMsIDcyLCA2OSwgNjksIAorICAgIDc4LCA4NSwgMTI4LCA4MywgNzIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDcyLCA2OSwgNjksIDIwNiwgODMsIDcyLCA2OSwgCisgICAgNjksIDEyOCwgODMsIDcyLCA2OSwgNDUsIDcxLCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgMTk3LCA4MywgNzIsIDY3LCAKKyAgICA3MiwgNzksIDc5LCA3MywgMTI4LCA4MywgNzIsIDY3LCA3MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODksIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgNzIsIDY1LCA4NiwgCisgICAgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgODIsIAorICAgIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgCisgICAgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgCisgICAgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCAKKyAgICA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIAorICAgIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCisgICAgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCAKKyAgICA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIAorICAgIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIAorICAgIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIAorICAgIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCAKKyAgICA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgCisgICAgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgyLCA3MywgNzAsIAorICAgIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCAKKyAgICA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgNzcsIAorICAgIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgCisgICAgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCAKKyAgICA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgCisgICAgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIAorICAgIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgCisgICAgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCAKKyAgICA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgCisgICAgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCAKKyAgICA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgCisgICAgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCAKKyAgICA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIAorICAgIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIAorICAgIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgCisgICAgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCAKKyAgICA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIAorICAgIDgzLCA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgCisgICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKKyAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCisgICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKKyAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAorICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCisgICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCAKKyAgICA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCAKKyAgICA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIAorICAgIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgCisgICAgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCAKKyAgICA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIAorICAgIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgCisgICAgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCAKKyAgICA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgCisgICAgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCAKKyAgICA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCisgICAgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAKKyAgICA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIAorICAgIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgCisgICAgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCAKKyAgICA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgCisgICAgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIDgzLCA2NSwgNzQsIDY4LCAKKyAgICA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzMsIDc2LCAxMjgsIAorICAgIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgCisgICAgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAKKyAgICAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCA2OSwgODQsIDIxNywgODMsIDY1LCA2OCwgNzIsIAorICAgIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIAorICAgIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgCisgICAgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgCisgICAgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCAKKyAgICA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIAorICAgIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIAorICAgIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAKKyAgICAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCAKKyAgICA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgCisgICAgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgCisgICAgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCAKKyAgICA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCAKKyAgICA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIAorICAgIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgCisgICAgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCAKKyAgICA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIAorICAgIDc3LCAyMDEsIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIAorICAgIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY5LCAxMjgsIDgyLCA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCAKKyAgICA4MiwgODUsIDcxLCA2NiwgMjE3LCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCAKKyAgICA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIAorICAgIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgCisgICAgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCAKKyAgICA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIAorICAgIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIAorICAgIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA3OSwgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCAKKyAgICA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgODIsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIAorICAgIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAKKyAgICAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIAorICAgIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgCisgICAgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIAorICAgIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgODIsIDc5LCA3NywgCisgICAgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3NiwgNzYsIDY5LCAKKyAgICA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgNzEsIDEyOCwgODIsIAorICAgIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIAorICAgIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCAKKyAgICA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCAKKyAgICA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIAorICAgIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgCisgICAgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCAKKyAgICA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzgsIAorICAgIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgCiAgICAgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCAKICAgICA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgCiAgICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAKICAgICA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgCiAgICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCAKLSAgICA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgCi0gICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCi0gICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIAotICAgIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAKLSAgICAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCAKLSAgICA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCAKLSAgICA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgCi0gICAgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCAKLSAgICA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIAotICAgIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgCi0gICAgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgCi0gICAgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCAKLSAgICA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIAotICAgIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgCi0gICAgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIAotICAgIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgCi0gICAgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCAKLSAgICA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIAotICAgIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgCi0gICAgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIAotICAgIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgCi0gICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCAKLSAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIAotICAgIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAKLSAgICAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgCi0gICAgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCAKLSAgICA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgCi0gICAgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgCi0gICAgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCAKLSAgICA1MCwgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgCi0gICAgMTI4LCA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgCi0gICAgODMsIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgCi0gICAgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCAKLSAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgCi0gICAgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIAotICAgIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAKLSAgICAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIAotICAgIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCAKLSAgICA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgCi0gICAgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgCi0gICAgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgCi0gICAgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIAotICAgIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIAotICAgIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIAotICAgIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIAotICAgIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIAotICAgIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIAotICAgIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgCi0gICAgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCAKLSAgICA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIAotICAgIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCAKLSAgICA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIAotICAgIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCAKLSAgICA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAotICAgIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgCi0gICAgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIAotICAgIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIAotICAgIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIAotICAgIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCAKLSAgICA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCAKLSAgICA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgCi0gICAgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCi0gICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgCi0gICAgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgMjExLCA4MSwgNjUsIAotICAgIDc2LCAxOTMsIDgxLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgCi0gICAgNzAsIDEyOCwgODEsIDY1LCAxOTgsIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIDY1LCA3MywgMTI4LCA4MSwgCi0gICAgNjUsIDY1LCA3MCwgODUsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgNTUsIDEyOCwgODEsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgODEsIDQ4LCA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgODEsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgODEsIDQ4LCA0OCwgNTAsIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAxMjgsIDgwLCA4OSwgODgsIAotICAgIDEyOCwgODAsIDg5LCA4NCwgMTI4LCA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAxMjgsIDgwLCA4OSwgODAsIAotICAgIDEyOCwgODAsIDg5LCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIAotICAgIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIAotICAgIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCAKLSAgICA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIAotICAgIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgCi0gICAgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgCi0gICAgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgCi0gICAgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgCi0gICAgNzMsIDE5NSwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCi0gICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCi0gICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCi0gICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAotICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgCi0gICAgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIAotICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCAKLSAgICA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIAotICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgCi0gICAgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgCi0gICAgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCAKLSAgICA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIAotICAgIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgCi0gICAgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIAotICAgIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgCi0gICAgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIAotICAgIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIAotICAgIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCAKLSAgICA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgCi0gICAgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCAKLSAgICA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIAotICAgIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAKLSAgICAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgCi0gICAgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCAKLSAgICA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIAotICAgIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgCi0gICAgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAKLSAgICAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIAotICAgIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgCi0gICAgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgMTk2LCA4MCwgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIAotICAgIDgyLCAyMTcsIDgwLCA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgCi0gICAgNzksIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgCi0gICAgODAsIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIAotICAgIDc2LCA4NSwgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA4NSwgCi0gICAgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCA4MCwgNzYsIDc5LCA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCAKLSAgICA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIDY4LCAxMjgsIDgwLCA3NiwgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIAotICAgIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCAKLSAgICA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCAKLSAgICA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIAotICAgIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIAotICAgIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgCi0gICAgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCAKLSAgICA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgCi0gICAgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgCi0gICAgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCAKLSAgICA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAotICAgIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCAKLSAgICA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIAotICAgIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgCi0gICAgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCAKLSAgICA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCAKLSAgICA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIAotICAgIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgCi0gICAgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIAotICAgIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgNzIsIDY1LCA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgCi0gICAgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCA4MCwgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCAKLSAgICA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAKLSAgICAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgCi0gICAgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCAKLSAgICA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIAotICAgIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgCi0gICAgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAKLSAgICA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIAotICAgIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgCi0gICAgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCA2OSwgODIsIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNjksIDgyLCA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIAotICAgIDczLCAxMjgsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgCi0gICAgODIsIDc3LCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIAotICAgIDgzLCA4MywgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgCi0gICAgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgCi0gICAgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKLSAgICAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIAotICAgIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgMTI4LCA4MCwgNjgsIDcwLCAKLSAgICAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCAKLSAgICA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIAotICAgIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCAKLSAgICA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCAKLSAgICA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgCi0gICAgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAotICAgIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgCi0gICAgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIAotICAgIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCAKLSAgICA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIAotICAgIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgNzcsIDY5LCAKLSAgICA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgMTkzLCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgCi0gICAgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAKLSAgICAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIAotICAgIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgCi0gICAgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgCi0gICAgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgCi0gICAgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgCi0gICAgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIAotICAgIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgCi0gICAgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCAKLSAgICA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIAotICAgIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCAxMjgsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCAKLSAgICA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCAKLSAgICA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgCi0gICAgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgCi0gICAgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgCi0gICAgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCAKLSAgICA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIAotICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgCi0gICAgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgCi0gICAgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIAorICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIAorICAgIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIAorICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgCisgICAgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIAorICAgIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCAKKyAgICA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKKyAgICA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgCisgICAgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIAorICAgIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgCisgICAgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIDc5LCAKKyAgICAyMDYsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAKKyAgICAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCAKKyAgICA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAorICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDgzLCA2NywgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCAKKyAgICA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIAorICAgIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgCisgICAgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCAKKyAgICA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIAorICAgIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgCisgICAgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCAKKyAgICA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIAorICAgIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCAKKyAgICA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIAorICAgIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgCisgICAgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgCisgICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCAKKyAgICA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAorICAgIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCAKKyAgICA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgCisgICAgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAKKyAgICA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIAorICAgIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgCisgICAgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCAKKyAgICA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIAorICAgIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgCisgICAgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCAKKyAgICA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIAorICAgIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNjksIDgwLCAKKyAgICA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgNzMsIAorICAgIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCA3MSwgCisgICAgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCAKKyAgICA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgMTI4LCAKKyAgICA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCA3OSwgCisgICAgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIDEyOCwgCisgICAgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIAorICAgIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgCisgICAgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAorICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCisgICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKKyAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCisgICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKKyAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAorICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKKyAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKKyAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKKyAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCisgICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCisgICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCisgICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCisgICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCisgICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCisgICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKKyAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAorICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCisgICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAorICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCisgICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCisgICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAorICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCAKKyAgICA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIAorICAgIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgCisgICAgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIAorICAgIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIAorICAgIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCAKKyAgICA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCAKKyAgICA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCAKKyAgICA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCAKKyAgICA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIAorICAgIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIAorICAgIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgCisgICAgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgCisgICAgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAKKyAgICAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAKKyAgICAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCAKKyAgICA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDIxMSwgODEsIAorICAgIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCA3MywgMTI4LCA4MSwgCisgICAgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIDU1LCAxMjgsIDgxLCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIDgxLCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgMTI4LCA4MCwgODksIAorICAgIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgMTI4LCA4MCwgODksIAorICAgIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIAorICAgIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIAorICAgIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIAorICAgIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgCisgICAgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCAKKyAgICA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIAorICAgIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgCisgICAgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCAKKyAgICA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIAorICAgIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIAorICAgIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCAKKyAgICA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIAorICAgIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIAorICAgIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIAorICAgIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgCisgICAgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIAorICAgIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgCisgICAgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCAKKyAgICA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIAorICAgIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgCisgICAgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCAKKyAgICA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCAKKyAgICA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCAKKyAgICA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIAorICAgIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgCisgICAgNjUsIDg0LCAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCAKKyAgICA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgCisgICAgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgCisgICAgODMsIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCAKKyAgICA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCAKKyAgICA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgCisgICAgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCAKKyAgICA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgCisgICAgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgCisgICAgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIAorICAgIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCAKKyAgICA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgCisgICAgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCAKKyAgICA2NiwgNzYsIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIAorICAgIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgCisgICAgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAKKyAgICAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCAKKyAgICA4MCwgNzksIDc2LCA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIAorICAgIDgwLCA3OSwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAKKyAgICAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIAorICAgIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgCisgICAgMTk2LCA4MCwgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAKKyAgICAyMTcsIDgwLCA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIAorICAgIDY3LCA3NSwgNjksIDIxMiwgODAsIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIDc4LCA2OSwgODUsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgCisgICAgODAsIDc2LCA4NSwgODMsIDQ1LCA3NywgNzMsIDc4LCA4NSwgMjExLCA4MCwgNzYsIDg1LCA4MywgMTI4LCA4MCwgNzYsIDg1LCAKKyAgICA4MiwgNjUsIDc2LCAxMjgsIDgwLCA3NiwgODUsIDc3LCA2OSwgMTk2LCA4MCwgNzYsIDg1LCA3NywgMTI4LCA4MCwgNzYsIAorICAgIDg1LCA3NSwgMTI4LCA4MCwgNzYsIDg1LCA3MSwgMTI4LCA4MCwgNzYsIDg1LCAxMjgsIDgwLCA3NiwgNzksIDg3LCAxMjgsIAorICAgIDgwLCA3NiwgNzksIDgwLCA3MiwgODUsIDEyOCwgODAsIDc2LCA3MiwgNjUsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCA3MiwgCisgICAgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIDY4LCAxMjgsIDgwLCA3NiwgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIDc2LCAKKyAgICA2NSwgODQsIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIDY1LCA3OCwgNjksIAorICAgIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgNjUsIDc1LCAxMjgsIAorICAgIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCA2OCwgNjksIDIxMCwgCisgICAgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIDY3LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgODcsIDgyLCAxMjgsIDgwLCAKKyAgICA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCAyMDMsIAorICAgIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIDgzLCA2OSwgNzYsIDY5LCA3MiwgCisgICAgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDgyLCAKKyAgICA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgyLCA2NSwgNjcsIDg5LCAxMjgsIAorICAgIDgwLCA3MywgODIsIDUwLCAxMjgsIDgwLCA3MywgODAsIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgCisgICAgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAKKyAgICAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIAorICAgIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgCisgICAgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCAKKyAgICA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCAKKyAgICA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIAorICAgIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgCisgICAgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCAKKyAgICA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA4NCwgODUsIDgyLCA2OSwgMTI4LCA4MCwgNzMsIAorICAgIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgCisgICAgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCAKKyAgICA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIAorICAgIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgCisgICAgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCAKKyAgICA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIAorICAgIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIAorICAgIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIAorICAgIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIDg5LCA3OCwgCisgICAgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgNzIsIDY1LCAKKyAgICA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCA4MCwgCisgICAgMTkzLCA4MCwgNzIsIDY1LCA2NiwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCA2NSwgNjUsIDEyOCwgODAsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAxMjgsIDgwLCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDgwLCA2OSwgODUsIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIDEyOCwgODAsIDY5LCA4NCwgNjUsIAorICAgIDgzLCA4NCwgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCAKKyAgICA3MywgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMTk2LCA4MCwgNjksIDgzLCA3OSwgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA4MCwgCisgICAgNjksIDgzLCA3MiwgMTc4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCAKKyAgICA3MiwgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIAorICAgIDc5LCA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgCisgICAgODAsIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCAKKyAgICA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgCisgICAgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCA2OSwgODIsIDc4LCA3MywgMjA2LCA4MCwgNjksIDgyLCAKKyAgICA3NywgNzMsIDg0LCA4NCwgNjksIDE5NiwgODAsIDY5LCA4MiwgNzcsIDczLCAxOTUsIDgwLCA2OSwgODIsIDc3LCA2NSwgNzgsIAorICAgIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDY5LCA4MiwgCisgICAgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDIwMSwgODAsIDY5LCA4MiwgNzAsIDc5LCA4MiwgNzcsIDczLCA3OCwgMTk5LCAKKyAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNjksIAorICAgIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgCisgICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgCisgICAgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCAKKyAgICA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgMjA2LCA4MCwgCisgICAgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCAKKyAgICA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIAorICAgIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgCisgICAgNjksIDY5LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCAKKyAgICA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIAorICAgIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNjcsIDcyLCAKKyAgICAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAxMjgsIDgwLCAKKyAgICA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgODAsIDY1LCAKKyAgICA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCA4OSwgCisgICAgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCA3MywgCisgICAgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCA4NCwgODQsIDY5LCAKKyAgICA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgCisgICAgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgCisgICAgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCAKKyAgICA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCisgICAgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgCisgICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCA4MCwgNjUsIDgzLCAKKyAgICA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIAorICAgIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKKyAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCisgICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIAorICAgIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgCisgICAgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCAKKyAgICA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgCisgICAgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIAorICAgIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCAKKyAgICA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgCisgICAgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCAKKyAgICA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIAorICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIAorICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgCisgICAgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAorICAgIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIAorICAgIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAorICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCisgICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKKyAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAorICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCisgICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKKyAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAorICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgCisgICAgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCAKKyAgICA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCAKKyAgICA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIAorICAgIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIDEyOCwgCisgICAgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgMTI4LCAKKyAgICA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIAorICAgIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIAorICAgIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgCisgICAgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCAKKyAgICA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCA4MCwgNDgsIAorICAgIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgCisgICAgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCAKKyAgICA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIAorICAgIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgCisgICAgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIAogICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKLSAgICAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCAKLSAgICA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgCi0gICAgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAKLSAgICAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCAKLSAgICA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgCi0gICAgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgCi0gICAgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIAotICAgIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAotICAgIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA3OSwgOTAsIDY5LCAKLSAgICAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIAotICAgIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA3OCwgCi0gICAgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgODIsIDEyOCwgCi0gICAgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCA3OSwgNzgsIDY5LCAKLSAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3OSwgNzgsIAotICAgIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgCi0gICAgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCAyMDYsIDc5LCAKLSAgICA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCA2OCwgMTI4LCA3OSwgCi0gICAgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCA3OSwgNzQsIDczLCAKLSAgICA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MiwgNzcsIAotICAgIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIAotICAgIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAKLSAgICAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIAotICAgIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgMTk2LCAKLSAgICA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIAotICAgIDg0LCA2OSwgMjEyLCA3OSwgNjcsIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgCi0gICAgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgCi0gICAgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgCi0gICAgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCAKLSAgICA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgCi0gICAgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCAKLSAgICA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCAKLSAgICA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIAotICAgIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAKLSAgICA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIAotICAgIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIAotICAgIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgCi0gICAgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCAKLSAgICA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIAotICAgIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgCi0gICAgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCAKLSAgICA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCAKLSAgICA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIAotICAgIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIAotICAgIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzgsIDg5LCA4NSwgNzksIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgODksIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCA3OSwgMTI4LCAKLSAgICA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIAotICAgIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgCi0gICAgNzMsIDczLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgODQsIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCAKLSAgICA4OSwgNzIsIDY1LCAxMjgsIDc4LCA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgNzgsIDg5LCA2OSwgNzIsIAotICAgIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCAKLSAgICA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIAotICAgIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgCi0gICAgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgCi0gICAgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgCi0gICAgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCAKLSAgICA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIAotICAgIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIAotICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgCi0gICAgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCAKLSAgICA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCAKLSAgICA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIAotICAgIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgCi0gICAgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgMjEzLCA3OCwgODQsIAotICAgIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgCi0gICAgNjUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCAKLSAgICA4NSwgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIAotICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgCi0gICAgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgODMsIDcyLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAKLSAgICAxMjgsIDc4LCA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIAotICAgIDEyOCwgNzgsIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDc4LCA4MiwgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAKLSAgICAxMjgsIDc4LCA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA3OSwgODAsIDEyOCwgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIDY5LCA4NCwgMTI4LCAKLSAgICA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgNjUsIAotICAgIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA3OSwgODYsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgCi0gICAgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCAKLSAgICA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIAotICAgIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgCi0gICAgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgMjEyLCA3OCwgCi0gICAgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCAKLSAgICA2OSwgODIsIDIwNiwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgMjEwLCAKKyAgICA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIAorICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgCisgICAgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCAKKyAgICA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgCisgICAgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDc5LCAKKyAgICA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA3OSwgCisgICAgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCAKKyAgICA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIAorICAgIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgCisgICAgNjksIDIxMCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgCisgICAgNzksIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCAKKyAgICA3MiwgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIAorICAgIDg0LCA3OSwgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgCisgICAgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCAKKyAgICA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIAorICAgIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCAKKyAgICA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCAyMDYsIDc5LCA3OSwgOTAsIAorICAgIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgCisgICAgODUsIDEyOCwgNzksIDc5LCA3MiwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCAKKyAgICA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIAorICAgIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgCisgICAgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCAKKyAgICA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIAorICAgIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgCisgICAgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCAKKyAgICA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIAorICAgIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgCisgICAgNzYsIDEyOCwgNzksIDczLCAyMDQsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIAorICAgIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAKKyAgICAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIAorICAgIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIAorICAgIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgCisgICAgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCAKKyAgICA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgCisgICAgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCAKKyAgICA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgCisgICAgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgCisgICAgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCAKKyAgICA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIAorICAgIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIAorICAgIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgCisgICAgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCAKKyAgICA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCAKKyAgICA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIAorICAgIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCAKKyAgICA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIAorICAgIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgCisgICAgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCisgICAgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCAKKyAgICA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgCisgICAgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCAKKyAgICA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIAorICAgIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgCisgICAgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIAorICAgIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIAorICAgIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgCisgICAgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgCisgICAgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgCisgICAgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCAKKyAgICA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCA3OCwgODksIAorICAgIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIAorICAgIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIDc4LCA4OSwgCisgICAgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgCisgICAgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgCisgICAgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCA3MywgNzgsIAorICAgIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgCisgICAgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgCisgICAgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgCisgICAgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAKKyAgICAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIAorICAgIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIAorICAgIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIAorICAgIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgCisgICAgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIAorICAgIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgCisgICAgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCAKKyAgICA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCAKKyAgICA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgCisgICAgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgCisgICAgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCAKKyAgICA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCAKKyAgICA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIDg2LCAxMjgsIDc4LCA4NCwgCisgICAgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIDc4LCA4NCwgMjEzLCA3OCwgCisgICAgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA3OSwgNzEsIAorICAgIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCA2NSwgODUsIDEyOCwgNzgsIAorICAgIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgMTI4LCA3OCwgODQsIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgODQsIDY1LCAyMDgsIDc4LCA4NCwgCisgICAgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAxMjgsIDc4LCA4MywgODUsIDc3LCAKKyAgICAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDgzLCA3MywgNjksIAorICAgIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDc4LCA4MywgCisgICAgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDY5LCAxMjgsIDc4LCAKKyAgICA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY5LCAKKyAgICA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgODksIDg0LCAxMjgsIDc4LCAKKyAgICA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCA4MCwgMTI4LCA3OCwgODIsIAorICAgIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCA4MiwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIDg1LCA2NSwgMTI4LCA3OCwgCisgICAgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIDc4LCA4MiwgNzksIDEyOCwgCisgICAgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgMjExLCA3OCwgODIsIDY5LCAKKyAgICA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgNjUsIDg0LCAxMjgsIDc4LCAKKyAgICA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgNzgsIDc5LCA4OSwgMTI4LCAKKyAgICA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCA3NywgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIDc4LCA3OSwgODQsIDY5LCAKKyAgICA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgNzksIDg0LCA2OSwgNjYsIAorICAgIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCA4NCwgNjksIDEyOCwgCisgICAgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIDY3LCA3MiwgMTI4LCAKKyAgICA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgMjEyLCA3OCwgNzksIAorICAgIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgCisgICAgODIsIDIwNiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIAorICAgIDc4LCAxOTksIDc4LCA3OSwgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIAogICAgIDc4LCA3OSwgODAsIDEyOCwgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgCiAgICAgNzAsIDc5LCA4MiwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIAogICAgIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCAKLSAgICA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIAotICAgIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIAotICAgIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgCi0gICAgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIAotICAgIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIAotICAgIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCAKLSAgICA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCAKLSAgICA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCAKLSAgICA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIAotICAgIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgCi0gICAgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgCi0gICAgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCAKLSAgICA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIAotICAgIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCA2NSwgCi0gICAgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCAKLSAgICA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzgsIAotICAgIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgNzMsIAotICAgIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgNzgsIAotICAgIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAxMjgsIAotICAgIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDEyOCwgCi0gICAgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgCi0gICAgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgCi0gICAgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCAKLSAgICA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIAotICAgIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIAotICAgIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCAKLSAgICA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAKLSAgICAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIAotICAgIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCAKLSAgICA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIAotICAgIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIAotICAgIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIAotICAgIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgCi0gICAgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCAKLSAgICA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIAotICAgIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIAotICAgIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCAKLSAgICA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIAotICAgIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCAKLSAgICA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgCi0gICAgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCAKLSAgICA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIAotICAgIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgCi0gICAgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCAKLSAgICA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCAKLSAgICA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgCi0gICAgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCAKLSAgICA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIAotICAgIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgCi0gICAgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCAKLSAgICA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIAotICAgIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAKLSAgICAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCAKLSAgICA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCAKLSAgICA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIAotICAgIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCAKLSAgICA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIAorICAgIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc4LCAxMjgsIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgCisgICAgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCAKKyAgICA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIAorICAgIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgCisgICAgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCAKKyAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIAorICAgIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCisgICAgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCAKKyAgICA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIAorICAgIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA2NSwgODUsIDEyOCwgNzgsIAorICAgIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCAKKyAgICA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIAorICAgIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgCisgICAgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCAKKyAgICA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIAorICAgIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgCisgICAgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCAKKyAgICA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIAorICAgIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgCisgICAgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCAKKyAgICA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCAKKyAgICA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIAorICAgIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgCisgICAgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIAorICAgIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzgsIAorICAgIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzIsIAorICAgIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAKKyAgICAxMjgsIDc4LCA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIAorICAgIDczLCA3OCwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIAorICAgIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCAKKyAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgCisgICAgNzksIDc1LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgCisgICAgNjksIDg1LCA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCAKKyAgICA2OSwgMTI4LCA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCAKKyAgICA2OSwgMTI4LCA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCAKKyAgICA4NiwgNjksIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIAorICAgIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgCisgICAgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCAKKyAgICA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCAKKyAgICA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIAorICAgIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgCisgICAgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCAKKyAgICA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCAKKyAgICA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgCisgICAgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKKyAgICA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCAKKyAgICA2NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIAorICAgIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCAKKyAgICA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIAorICAgIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgCisgICAgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCAKKyAgICA3MywgNzgsIDE5NywgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIAorICAgIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDc4LCA2OSwgODQsIDEyOCwgCisgICAgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIAorICAgIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgCisgICAgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIAorICAgIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAKKyAgICAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCAKKyAgICA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIAorICAgIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgCisgICAgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCAKKyAgICA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIAorICAgIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgCisgICAgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAKKyAgICAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCAKKyAgICA2NiwgODksIDg0LCAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIAorICAgIDg5LCA4MCwgMTI4LCA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDg1LCAxMjgsIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAKKyAgICAxMjgsIDc4LCA2NiwgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCAKKyAgICA3MywgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIAorICAgIDczLCA2OSwgMTI4LCA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAKKyAgICAxMjgsIDc4LCA2NSwgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIAorICAgIDg1LCA4MiwgNjUsIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgCisgICAgMjAxLCA3OCwgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MywgNjUsIAorICAgIDIwNCwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIAorICAgIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgCisgICAgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCAKKyAgICA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCAKKyAgICA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCAKKyAgICA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIAorICAgIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjYsIAorICAgIDY1LCA4NCwgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgCiAgICAgNjUsIDY1LCA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAKLSAgICAxOTMsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIAotICAgIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIAotICAgIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgCi0gICAgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIAotICAgIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAKLSAgICAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgCi0gICAgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgCi0gICAgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIAotICAgIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgCi0gICAgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIAotICAgIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgCi0gICAgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIAotICAgIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgCi0gICAgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAKLSAgICAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCAKLSAgICA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIAotICAgIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgCi0gICAgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCAKLSAgICA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIAotICAgIDcyLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgCi0gICAgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgCi0gICAgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCAKLSAgICA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIAotICAgIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIAotICAgIDE5OSwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIAotICAgIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA0NSwgCi0gICAgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIDgwLCA2NSwgMTI4LCA3NywgCi0gICAgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCAKLSAgICA2OSwgMTk2LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA4NSwgODMsIAotICAgIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgCi0gICAgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCAKLSAgICA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIAotICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgCi0gICAgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAotICAgIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCAKLSAgICA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgCi0gICAgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCAKLSAgICA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIAotICAgIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgCi0gICAgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCAKLSAgICA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIAotICAgIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgCi0gICAgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCAKLSAgICA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAotICAgIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgCi0gICAgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgCi0gICAgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIAotICAgIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIAotICAgIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgCi0gICAgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgCi0gICAgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIAotICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgCi0gICAgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCAKLSAgICA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIAotICAgIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgCi0gICAgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCAKLSAgICA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIAotICAgIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4NCwgCi0gICAgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCA3MywgNjksIAotICAgIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIDc4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCAKLSAgICA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAxMjgsIDc3LCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCA3NywgNzMsIAotICAgIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc3LCA3MywgCisgICAgMTkzLCA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgCisgICAgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIAorICAgIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAKKyAgICAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIAorICAgIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIAorICAgIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIAorICAgIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCAKKyAgICA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCAKKyAgICA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIAorICAgIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgCisgICAgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCAKKyAgICA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIAorICAgIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAKKyAgICAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgMTI4LCA3NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIAorICAgIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgCisgICAgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCAKKyAgICA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3OCwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgCisgICAgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIAorICAgIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgCisgICAgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCAKKyAgICA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIAorICAgIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAKKyAgICAxMjgsIDc3LCA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAKKyAgICAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCAKKyAgICA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIAorICAgIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgCisgICAgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIAorICAgIDg0LCA3OSwgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgCisgICAgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgNzcsIDc5LCAKKyAgICA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgCisgICAgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCA3OSwgNzksIDc3LCAKKyAgICA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIDY4LCAxMjgsIAorICAgIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgCisgICAgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIAorICAgIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIAorICAgIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAKKyAgICAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIAorICAgIDc3LCA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIAorICAgIDc5LCA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDIwMSwgCisgICAgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAKKyAgICA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIAorICAgIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIAorICAgIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCAKKyAgICA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCAKKyAgICA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIAorICAgIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgCisgICAgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCAKKyAgICA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA3MywgOTAsIAorICAgIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAKKyAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIAorICAgIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAKKyAgICAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCAKKyAgICA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCA3MywgODQsIDY1LCA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIAorICAgIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgCisgICAgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAKICAgICAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIAogICAgIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgCiAgICAgMTI4LCA3NywgNzIsIDY1LCAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgCkBAIC0yMDE4LDE2MSArMjExNSwyMTkgQEAKICAgICA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgMTk1LCA3NywgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIAogICAgIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAKICAgICAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIAotICAgIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgCi0gICAgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIAotICAgIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIAotICAgIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgCi0gICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCAKLSAgICA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAorICAgIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAKKyAgICAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIAorICAgIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgCisgICAgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCAKKyAgICA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgCisgICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIAorICAgIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgCisgICAgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKICAgICA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIAotICAgIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgCi0gICAgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgCi0gICAgNzIsIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgCi0gICAgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCAKLSAgICA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIAotICAgIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgCi0gICAgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCAKLSAgICA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIAotICAgIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIAotICAgIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgCi0gICAgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgCi0gICAgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgNjYsIDEyOCwgNzcsIDE5NCwgNzcsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAKLSAgICAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKLSAgICA3NywgNjUsIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIAotICAgIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgCi0gICAgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCAKLSAgICA3NywgNjUsIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIAotICAgIDY3LCA4NSwgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIAotICAgIDc3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgCi0gICAgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgCi0gICAgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCAKLSAgICA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIAotICAgIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIAotICAgIDgzLCA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMjE4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCAKLSAgICA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIAotICAgIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgCi0gICAgODMsIDE5NywgNzcsIDY1LCA3NiwgNjksIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCAKLSAgICA3NiwgMTk3LCA3NywgNjUsIDc2LCA2NSwgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIAotICAgIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDE5MywgNzcsIDY1LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgNzMsIDg5LCA2NSwgCi0gICAgNzcsIDc5LCA3NSwgMTI4LCA3NywgNjUsIDczLCA4NCwgNjUsIDczLCA3NSwgNzIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDgyLCAKLSAgICA4NSwgMTI4LCA3NywgNjUsIDczLCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgNjUsIDczLCA3NywgNjUsIDc2LCA2NSwgNzMsIAorICAgIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgCisgICAgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCAKKyAgICA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIAorICAgIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCAKKyAgICA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIAorICAgIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgCisgICAgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCAKKyAgICA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIAorICAgIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAKKyAgICAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIAorICAgIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgCisgICAgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCAKKyAgICA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIDY2LCAxMjgsIDc3LCAxOTQsIDc3LCA2NSwgODksIDY5LCAKKyAgICAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIAorICAgIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgCisgICAgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA3MCwgCisgICAgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIDIwMSwgNzcsIDY1LCA4MiwgODUsIAorICAgIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgCisgICAgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIDgyLCAKKyAgICA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgCisgICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCAKKyAgICA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIAorICAgIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCAKKyAgICA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIAorICAgIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIAorICAgIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCA4MywgCisgICAgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDczLCA2NywgNzIsIDY1LCA2OSwgNjUsIDIwNiwgCisgICAgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgCisgICAgNjUsIDIxMiwgNzcsIDY1LCA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgODMsIAorICAgIDE5NywgNzcsIDY1LCA3NiwgNjksIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCA3NiwgCisgICAgMTk3LCA3NywgNjUsIDc2LCA2NSwgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgNzUsIDgzLCA4NSwgODIsIDE5MywgNzcsIDY1LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgNzMsIDg5LCA2NSwgNzcsIAorICAgIDc5LCA3NSwgMTI4LCA3NywgNjUsIDczLCA4NCwgNjUsIDczLCA3NSwgNzIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDgyLCA4NSwgCisgICAgMTI4LCA3NywgNjUsIDczLCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgNjUsIDczLCA3NywgNjUsIDc2LCA2NSwgNzMsIAogICAgIDEyOCwgNzcsIDY1LCA3MywgNzYsIDY2LCA3OSwgMjE2LCA3NywgNjUsIDczLCA3NSwgODUsIDgyLCA3OSwgMTI4LCA3NywgCiAgICAgNjUsIDczLCA2OCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA3MiwgNzQsIDc5LCA3OCwgMTk5LCAKICAgICA3NywgNjUsIDcyLCA3MiwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA3NywgNjUsIAotICAgIDcyLCA2NSwgODAsIDY1LCA3NSwgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgCi0gICAgNzcsIDY1LCA3MiwgMTI4LCA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNjksIDgzLCAKLSAgICA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA3NCwgNjksIDg0LCAxMjgsIAotICAgIDc3LCA2NSwgNjksIDc3LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzUsIDgwLCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDcxLCA2NiwgNzMsIAotICAgIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NSwgCi0gICAgNjksIDc2LCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDY1LCA2OCwgODksIDY1LCAKLSAgICAxMjgsIDc3LCA2NSwgNjgsIDg1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCA3NywgNjUsIDY4LCA2OCwgNjUsIAotICAgIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCi0gICAgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKLSAgICA3OSwgNzgsIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDIwNiwgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY1LCA2NSwgODksIDg5LCA2NSwgCi0gICAgNjUsIDEyOCwgNzcsIDY1LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgCi0gICAgNTIsIDUyLCAxMjgsIDc3LCA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAKLSAgICAxMjgsIDc3LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDUxLCA1NiwgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIAotICAgIDUxLCA1MywgMTI4LCA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgCi0gICAgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCAKLSAgICA2NSwgMTI4LCA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIAotICAgIDQ4LCA1MCwgNTQsIDEyOCwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgCi0gICAgNTAsIDUyLCAxMjgsIDc3LCA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDQ5LCA1NiwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgCi0gICAgNDgsIDQ5LCA1MywgMTI4LCA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCAKKyAgICA3MiwgNjUsIDgwLCA2NSwgNzUsIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA3NCwgNjUsIDc4LCAyMDEsIDc3LCA2NSwgNzIsIAorICAgIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgNzIsIDEyOCwgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgCisgICAgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDg5LCA3MywgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCA3NywgNjUsIDY5LCA3NywgODYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIAorICAgIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIDY5LCA3NiwgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA4NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgCisgICAgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCAxOTMsIDc3LCA2NSwgNjcsIDgyLCAKKyAgICA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY2LCA4MiwgCisgICAgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc3LCAKKyAgICA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCAyMDYsIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIAorICAgIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNjUsIDczLCAxMjgsIDc3LCA2NSwgCisgICAgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDksIDU3LCAxODMsIDc3LCA0OSwgNTcsIDE4MiwgNzcsIDQ5LCA1NywgCisgICAgMTgxLCA3NywgNDksIDU3LCAxODAsIDc3LCA0OSwgNTcsIDE3OSwgNzcsIDQ5LCA1NywgMTc4LCA3NywgNDksIDU3LCAxNzcsIAorICAgIDc3LCA0OSwgNTcsIDE3NiwgNzcsIDQ5LCA1NiwgMTg1LCA3NywgNDksIDU2LCAxODQsIDc3LCA0OSwgNTYsIDE4MywgNzcsIAorICAgIDQ5LCA1NiwgMTgyLCA3NywgNDksIDU2LCAxODEsIDc3LCA0OSwgNTYsIDE4MCwgNzcsIDQ5LCA1NiwgMTc5LCA3NywgNDksIAorICAgIDU2LCAxNzgsIDc3LCA0OSwgNTYsIDE3NywgNzcsIDQ5LCA1NiwgMTc2LCA3NywgNDksIDU1LCAxODUsIDc3LCA0OSwgNTUsIAorICAgIDE4NCwgNzcsIDQ5LCA1NSwgMTgzLCA3NywgNDksIDU1LCAxODIsIDc3LCA0OSwgNTUsIDE4MSwgNzcsIDQ5LCA1NSwgMTgwLCAKKyAgICA3NywgNDksIDU1LCAxNzksIDc3LCA0OSwgNTUsIDE3OCwgNzcsIDQ5LCA1NSwgMTc3LCA3NywgNDksIDU1LCAxNzYsIDc3LCAKKyAgICA0OSwgNTQsIDE4NSwgNzcsIDQ5LCA1NCwgMTg0LCA3NywgNDksIDU0LCAxODMsIDc3LCA0OSwgNTQsIDE4MiwgNzcsIDQ5LCAKKyAgICA1NCwgMTgxLCA3NywgNDksIDU0LCAxODAsIDc3LCA0OSwgNTQsIDE3OSwgNzcsIDQ5LCA1NCwgMTc4LCA3NywgNDksIDU0LCAKKyAgICAxNzcsIDc3LCA0OSwgNTQsIDE3NiwgNzcsIDQ5LCA1MywgMTg1LCA3NywgNDksIDUzLCAxODQsIDc3LCA0OSwgNTMsIDE4MywgCisgICAgNzcsIDQ5LCA1MywgMTgyLCA3NywgNDksIDUzLCAxODEsIDc3LCA0OSwgNTMsIDE4MCwgNzcsIDQ5LCA1MywgMTc5LCA3NywgCisgICAgNDksIDUzLCAxNzgsIDc3LCA0OSwgNTMsIDE3NywgNzcsIDQ5LCA1MywgMTc2LCA3NywgNDksIDUyLCAxODUsIDc3LCA0OSwgCisgICAgNTIsIDE4NCwgNzcsIDQ5LCA1MiwgMTgzLCA3NywgNDksIDUyLCAxODIsIDc3LCA0OSwgNTIsIDE4MSwgNzcsIDQ5LCA1MiwgCisgICAgMTgwLCA3NywgNDksIDUyLCAxNzksIDc3LCA0OSwgNTIsIDE3OCwgNzcsIDQ5LCA1MiwgMTc3LCA3NywgNDksIDUyLCAxNzYsIAorICAgIDc3LCA0OSwgNTEsIDE4NSwgNzcsIDQ5LCA1MSwgMTg0LCA3NywgNDksIDUxLCAxODMsIDc3LCA0OSwgNTEsIDE4MiwgNzcsIAorICAgIDQ5LCA1MSwgMTgxLCA3NywgNDksIDUxLCAxODAsIDc3LCA0OSwgNTEsIDE3OSwgNzcsIDQ5LCA1MSwgMTc4LCA3NywgNDksIAorICAgIDUxLCAxNzcsIDc3LCA0OSwgNTEsIDE3NiwgNzcsIDQ5LCA1MCwgMTg1LCA3NywgNDksIDUwLCAxODQsIDc3LCA0OSwgNTAsIAorICAgIDE4MywgNzcsIDQ5LCA1MCwgMTgyLCA3NywgNDksIDUwLCAxODEsIDc3LCA0OSwgNTAsIDE4MCwgNzcsIDQ5LCA1MCwgMTc5LCAKKyAgICA3NywgNDksIDUwLCAxNzgsIDc3LCA0OSwgNTAsIDE3NywgNzcsIDQ5LCA1MCwgMTc2LCA3NywgNDksIDQ5LCAxODUsIDc3LCAKKyAgICA0OSwgNDksIDE4NCwgNzcsIDQ5LCA0OSwgMTgzLCA3NywgNDksIDQ5LCAxODIsIDc3LCA0OSwgNDksIDE4MSwgNzcsIDQ5LCAKKyAgICA0OSwgMTgwLCA3NywgNDksIDQ5LCAxNzksIDc3LCA0OSwgNDksIDE3OCwgNzcsIDQ5LCA0OSwgMTc3LCA3NywgNDksIDQ5LCAKKyAgICAxNzYsIDc3LCA0OSwgNDgsIDE4NSwgNzcsIDQ5LCA0OCwgMTg0LCA3NywgNDksIDQ4LCAxODMsIDc3LCA0OSwgNDgsIDE4MiwgCisgICAgNzcsIDQ5LCA0OCwgMTgxLCA3NywgNDksIDQ4LCAxODAsIDc3LCA0OSwgNDgsIDE3OSwgNzcsIDQ5LCA0OCwgMTc4LCA3NywgCisgICAgNDksIDQ4LCAxNzcsIDc3LCA0OSwgNDgsIDE3NiwgNzcsIDQ4LCA1NywgMTg1LCA3NywgNDgsIDU3LCAxODQsIDc3LCA0OCwgCisgICAgNTcsIDE4MywgNzcsIDQ4LCA1NywgMTgyLCA3NywgNDgsIDU3LCAxODEsIDc3LCA0OCwgNTcsIDE4MCwgNzcsIDQ4LCA1NywgCisgICAgMTc5LCA3NywgNDgsIDU3LCAxNzgsIDc3LCA0OCwgNTcsIDE3NywgNzcsIDQ4LCA1NywgMTc2LCA3NywgNDgsIDU2LCAxODUsIAorICAgIDc3LCA0OCwgNTYsIDE4NCwgNzcsIDQ4LCA1NiwgMTgzLCA3NywgNDgsIDU2LCAxODIsIDc3LCA0OCwgNTYsIDE4MSwgNzcsIAorICAgIDQ4LCA1NiwgMTgwLCA3NywgNDgsIDU2LCAxNzksIDc3LCA0OCwgNTYsIDE3OCwgNzcsIDQ4LCA1NiwgMTc3LCA3NywgNDgsIAorICAgIDU2LCAxNzYsIDc3LCA0OCwgNTUsIDE4NSwgNzcsIDQ4LCA1NSwgMTg0LCA3NywgNDgsIDU1LCAxODMsIDc3LCA0OCwgNTUsIAorICAgIDE4MiwgNzcsIDQ4LCA1NSwgMTgxLCA3NywgNDgsIDU1LCAxODAsIDc3LCA0OCwgNTUsIDE3OSwgNzcsIDQ4LCA1NSwgMTc4LCAKKyAgICA3NywgNDgsIDU1LCAxNzcsIDc3LCA0OCwgNTUsIDE3NiwgNzcsIDQ4LCA1NCwgMTg1LCA3NywgNDgsIDU0LCAxODQsIDc3LCAKKyAgICA0OCwgNTQsIDE4MywgNzcsIDQ4LCA1NCwgMTgyLCA3NywgNDgsIDU0LCAxODEsIDc3LCA0OCwgNTQsIDE4MCwgNzcsIDQ4LCAKKyAgICA1NCwgMTc5LCA3NywgNDgsIDU0LCAxNzgsIDc3LCA0OCwgNTQsIDE3NywgNzcsIDQ4LCA1NCwgMTc2LCA3NywgNDgsIDUzLCAKKyAgICAxODUsIDc3LCA0OCwgNTMsIDE4NCwgNzcsIDQ4LCA1MywgMTgzLCA3NywgNDgsIDUzLCAxODIsIDc3LCA0OCwgNTMsIDE4MSwgCisgICAgNzcsIDQ4LCA1MywgMTgwLCA3NywgNDgsIDUzLCAxNzksIDc3LCA0OCwgNTMsIDE3OCwgNzcsIDQ4LCA1MywgMTc3LCA3NywgCisgICAgNDgsIDUzLCAxNzYsIDc3LCA0OCwgNTIsIDE4NSwgNzcsIDQ4LCA1MiwgMTg0LCA3NywgNDgsIDUyLCAxODMsIDc3LCA0OCwgCisgICAgNTIsIDE4MiwgNzcsIDQ4LCA1MiwgMTgxLCA3NywgNDgsIDUyLCA1MiwgMTI4LCA3NywgNDgsIDUyLCAxODAsIDc3LCA0OCwgCisgICAgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDE3OSwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgMTc4LCA3NywgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA3NywgNDgsIDUyLCAxNzcsIDc3LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCAKKyAgICA0OCwgMTI4LCA3NywgNDgsIDUyLCAxNzYsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgNTEsIDE4NSwgNzcsIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNzcsIDQ4LCA1MSwgMTg0LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCAxODMsIDc3LCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDE4MiwgNzcsIDQ4LCA1MSwgNTMsIDEyOCwgNzcsIDQ4LCA1MSwgMTgxLCAKKyAgICA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCAxODAsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIAorICAgIDUxLCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgMTc5LCA3NywgNDgsIDUxLCA1MCwgCisgICAgMTI4LCA3NywgNDgsIDUxLCAxNzgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgCisgICAgNDgsIDUxLCAxNzcsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDE3NiwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgCisgICAgNzcsIDQ4LCA1MCwgMTg1LCA3NywgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgMTg0LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCAxODMsIDc3LCA0OCwgNTAsIDU0LCAxMjgsIDc3LCAKKyAgICA0OCwgNTAsIDE4MiwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgMTgxLCA3NywgNDgsIDUwLCA1MiwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDEyOCwgNzcsIDQ4LCA1MCwgMTgwLCA3NywgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIAorICAgIDUwLCAxNzksIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCA3NywgNDgsIDUwLCAxNzgsIAorICAgIDc3LCA0OCwgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDE3NywgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgCisgICAgMTc2LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIDQ5LCAxODUsIDc3LCA0OCwgNDksIDU2LCAxMjgsIDc3LCA0OCwgCisgICAgNDksIDE4NCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCA0OCwgNDksIDE4MywgCisgICAgNzcsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDE4MiwgNzcsIDQ4LCAKKyAgICA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUzLCAxMjgsIDc3LCA0OCwgNDksIDE4MSwgNzcsIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgMTgwLCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCAxNzksIDc3LCA0OCwgNDksIAogICAgIDUwLCA3MiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgCiAgICAgNDksIDUwLCA2OSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCAKICAgICA0OCwgNDksIDUwLCA2NiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNDksIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDc3LCA0OCwgNDgsIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKLSAgICA3NywgNDgsIDQ4LCA1MSwgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIAotICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIAotICAgIDg5LCA4OCwgMTI4LCA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIAotICAgIDg5LCA4MCwgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgCi0gICAgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgCi0gICAgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgCi0gICAgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgCi0gICAgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIAotICAgIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgCi0gICAgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgCi0gICAgNzYsIDg1LCA1MSwgMTI4LCA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgCi0gICAgNzcsIDEyOCwgNzYsIDgyLCA3MywgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIAotICAgIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgCi0gICAgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCAKLSAgICA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIAotICAgIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgCi0gICAgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgCi0gICAgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCAKLSAgICA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCAKLSAgICA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAotICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgCi0gICAgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAKLSAgICAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIAotICAgIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgCi0gICAgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCAKLSAgICA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIAotICAgIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgCi0gICAgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCAKLSAgICA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIAotICAgIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgCi0gICAgODQsIDY5LCAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgCi0gICAgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCAKLSAgICA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDIwMywgNzYsIAotICAgIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgCi0gICAgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCAKLSAgICA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIAotICAgIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKLSAgICAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIAotICAgIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIAotICAgIDY5LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgCisgICAgNDgsIDQ5LCAxNzgsIDc3LCA0OCwgNDksIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDE3NywgNzcsIDQ4LCA0OSwgNDgsIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDE3NiwgNzcsIDQ4LCA0OCwgNTcsIDEyOCwgNzcsIDQ4LCAKKyAgICA0OCwgMTg1LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCAxODQsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCAKKyAgICA0OCwgNDgsIDE4MywgNzcsIDQ4LCA0OCwgNTQsIDEyOCwgNzcsIDQ4LCA0OCwgMTgyLCA3NywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA3NywgNDgsIDQ4LCAxODEsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDE4MCwgNzcsIDQ4LCA0OCwgNTEsIAorICAgIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDUxLCAxMjgsIDc3LCA0OCwgNDgsIDE3OSwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIAorICAgIDQ4LCA0OCwgMTc4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDc3LCA0OCwgNDgsIDE3NywgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIAorICAgIDc2LCA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIAorICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgCisgICAgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgCisgICAgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgCisgICAgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIAorICAgIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIAorICAgIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgCisgICAgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgMTk3LCA3NiwgCisgICAgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgNTAsIDEyOCwgCisgICAgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAxMjgsIDc2LCA4MiwgCisgICAgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgMTk3LCAKKyAgICA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzYsIAorICAgIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCA4NywgNDUsIDc3LCAKKyAgICA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIDg3LCA0NSwgCisgICAgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCAKKyAgICA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgCisgICAgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCAKKyAgICA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCAKKyAgICA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIAorICAgIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIAorICAgIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCAKKyAgICA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIAorICAgIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCAKKyAgICA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgCisgICAgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCAKKyAgICA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIAorICAgIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgCisgICAgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCAKKyAgICA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIAorICAgIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgCisgICAgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgCisgICAgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCAKKyAgICA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCAKKyAgICA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgODQsIAorICAgIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIAorICAgIDc2LCA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIAorICAgIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAKKyAgICAxMjgsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIAorICAgIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgCisgICAgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCAKKyAgICA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIAorICAgIDY2LCAyMTMsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgCisgICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgNzYsIDczLCA3MCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgCiAgICAgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgCiAgICAgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCAKICAgICA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgCiAgICAgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCAKICAgICA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCAKLSAgICA4NiwgNjksIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIAotICAgIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIAotICAgIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgCi0gICAgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIAotICAgIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAKLSAgICAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIAotICAgIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgCi0gICAgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgCi0gICAgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAKLSAgICAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIAotICAgIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCAKLSAgICA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIAotICAgIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgCisgICAgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCAKKyAgICA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgCisgICAgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA2OSwgODAsIAorICAgIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgCisgICAgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MywgMjExLCAKKyAgICA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgCisgICAgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCAKKyAgICA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIAorICAgIDczLCAxMjgsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgCisgICAgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIAorICAgIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgCisgICAgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIAorICAgIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgCiAgICAgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIAogICAgIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgCiAgICAgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCAKQEAgLTIxODEsMTM3ICsyMzM2LDE1MSBAQAogICAgIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgCiAgICAgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgCiAgICAgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgCi0gICAgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgCi0gICAgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgCi0gICAgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIAotICAgIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIAotICAgIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAKLSAgICAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIAotICAgIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIAotICAgIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKLSAgICA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAotICAgIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgCi0gICAgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCAKLSAgICA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCA4OCwgCi0gICAgNjUsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIDc5LCAKLSAgICAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCAKLSAgICA2OSwgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg1LCA3MiwgMTI4LCAKLSAgICA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAxMjgsIAotICAgIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgNzksIDEyOCwgNzUsIDg1LCA4MiwgCi0gICAgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCA4MiwgMTI4LCA3NSwgODUsIDIxMCwgCi0gICAgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCA4MCwgMTI4LCA3NSwgODUsIDc5LCAKLSAgICAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCA3OCwgNzEsIDEyOCwgNzUsIDg1LCAKLSAgICA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgMTI4LCA3NSwgODUsIDIwNCwgNzUsIAotICAgIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIAotICAgIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIAotICAgIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgCi0gICAgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIAotICAgIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCAKLSAgICA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgCi0gICAgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCAKLSAgICA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIAotICAgIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIAotICAgIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NCwgCi0gICAgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCAKLSAgICA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCA3NSwgNzksIDgxLCA3OCwgNjgsIAotICAgIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgMTI4LCA3NSwgNzksIDc5LCA4MCwgCi0gICAgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCAKLSAgICA4NCwgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgCi0gICAgMjAxLCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCAKLSAgICA3OSwgNzcsIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIDc5LCAyMDMsIDc1LCAKKyAgICA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIDc0LCAxMjgsIDc2LCA2NSwgODQsIAorICAgIDczLCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAKKyAgICAyMDQsIDc2LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIAorICAgIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgCisgICAgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgCisgICAgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAKKyAgICAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgODAsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCAKKyAgICA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIAorICAgIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgCisgICAgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgCisgICAgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIAorICAgIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzMsIDc4LCAxOTksIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgCisgICAgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgCisgICAgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIAorICAgIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjksIDc2LCAxMjgsIAorICAgIDc2LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAKKyAgICAxMjgsIDc2LCA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3NiwgNTQsIDEyOCwgNzYsIDUyLCAxMjgsIDc2LCA1MSwgMTI4LCA3NiwgNTAsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAKKyAgICAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIAorICAgIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgCisgICAgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAKKyAgICAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIAorICAgIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgCisgICAgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgCisgICAgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDc1LCA4NywgNzMsIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAKKyAgICAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCAKKyAgICA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCAKKyAgICA4NSwgNzIsIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIAorICAgIDg1LCA1MCwgMTI4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAKKyAgICAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgODIsIAorICAgIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgNzgsIAorICAgIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgCisgICAgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA2NiwgMTI4LCA3NSwgCisgICAgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgCisgICAgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIAorICAgIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIDEyOCwgCisgICAgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgCisgICAgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgCisgICAgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgCisgICAgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCA3MiwgMTI4LCA3NSwgODAsIAorICAgIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCA3OSwgODYsIDEyOCwgNzUsIAorICAgIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgCisgICAgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCA3NSwgNzksIDgxLCAKKyAgICA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgMTI4LCA3NSwgNzksIAorICAgIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIDEyOCwgCisgICAgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgNjUsIAorICAgIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCA2NiwgCisgICAgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIDc1LCAKKyAgICA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIDc5LCAyMDMsIDc1LCAKICAgICA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIDc5LCA3NywgMTI4LCAKLSAgICA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIDc5LCA2NSwgMTI4LCA3NSwgNzgsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgCi0gICAgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgCi0gICAgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCAKLSAgICA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCAKLSAgICA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAKLSAgICAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIDE5OSwgNzUsIAotICAgIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIDc1LCA3MywgCi0gICAgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzUsIDczLCAKLSAgICA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgCi0gICAgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIAotICAgIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgNzUsIAotICAgIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCA2NSwgCi0gICAgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCAKLSAgICA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIAotICAgIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIAotICAgIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgCi0gICAgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgNzUsIDcyLCAKLSAgICA4NSwgNjUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIAotICAgIDEyOCwgNzUsIDcyLCA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIAotICAgIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgNzMsIDc4LCA4OSwgNjUsIDEyOCwgNzUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAKLSAgICAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKLSAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIAotICAgIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OCwgCi0gICAgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIAotICAgIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgCi0gICAgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgCi0gICAgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCAKLSAgICA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIAotICAgIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgCi0gICAgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgCi0gICAgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgCi0gICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAKLSAgICAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgNjYsIDEyOCwgNzUsIDY1LCAKLSAgICA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODksIDY1LCAyMDAsIAotICAgIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgNzMsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg1LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIAotICAgIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgCi0gICAgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIAotICAgIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgCi0gICAgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCAKLSAgICA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIAotICAgIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgCi0gICAgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCAKLSAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIAotICAgIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKLSAgICA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIAotICAgIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIAotICAgIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCAKLSAgICA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIAotICAgIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIAotICAgIDc1LCA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCA3NSwgNjUsIDcwLCA2NSwgCi0gICAgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCA3NSwgNjUsIDY4LCAxODEsIAotICAgIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIDE3OSwgNzUsIDY1LCA2OCwgCi0gICAgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIDEyOCwgNzUsIDY1LCA2NSwgCi0gICAgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNTAsIDEyOCwgCisgICAgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA2NSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIAorICAgIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgCisgICAgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgCisgICAgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgCisgICAgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgCisgICAgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgCisgICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIAorICAgIDczLCA4NywgMTI4LCA3NSwgNzMsIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgCisgICAgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgCisgICAgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCAKKyAgICA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgCisgICAgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCAKKyAgICA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCAKKyAgICA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIAorICAgIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgCisgICAgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCAKKyAgICA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCAKKyAgICA3NSwgMTI4LCA3NSwgNzMsIDY2LCAxMjgsIDc1LCA3MywgNjUsIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCAKKyAgICA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgCisgICAgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCAKKyAgICA4NSwgNjgsIDY1LCA3NywgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIAorICAgIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgCisgICAgNzksIDc0LCA3NSwgMjAxLCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgCisgICAgNzMsIDg0LCAxMjgsIDc1LCA3MiwgNzMsIDc4LCA4OSwgNjUsIDEyOCwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCAKKyAgICA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgMjAxLCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIAorICAgIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4NiwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAKKyAgICAyMDEsIDc1LCA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIAorICAgIDc1LCA3MiwgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgCisgICAgNzIsIDEyOCwgNzUsIDcyLCA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgNzEsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCAKKyAgICA4OSwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIAorICAgIDEyOCwgNzUsIDY5LCA4NiwgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgCisgICAgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCAKKyAgICA4MCwgODUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIAorICAgIDc1LCA2OSwgODUsIDg0LCA3OCwgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA4NCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCAKKyAgICA4NCwgODQsIDIwMSwgNzUsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIAorICAgIDc5LCA4NywgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgCisgICAgNzcsIDY1LCA4NCwgMTkzLCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCAKKyAgICA3NSwgNjksIDc4LCAxMjgsIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIAorICAgIDgwLCA4NSwgMjA0LCA3NSwgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgCisgICAgNjksIDc3LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCAKKyAgICA2OSwgNzYsIDg2LCA3MywgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIAorICAgIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgCisgICAgNjksIDgzLCA4NSwgMTI4LCA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCAKKyAgICA3NSwgNjksIDY5LCA2NiwgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIAorICAgIDY1LCA3NiwgMTI4LCA3NSwgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgCisgICAgNzUsIDY1LCA4NywgNzMsIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCAKKyAgICA3NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIAorICAgIDg1LCAyMDYsIDc1LCA2NSwgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgCisgICAgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIAorICAgIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgCisgICAgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIAorICAgIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgCisgICAgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCAKKyAgICA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIAorICAgIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIAorICAgIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCAKKyAgICA2NSwgMjA4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIAorICAgIDE5OSwgNzUsIDY1LCA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgCisgICAgMTI4LCA3NSwgNjUsIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCAKKyAgICA3MiwgMjAxLCA3NSwgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCAKKyAgICA3NSwgNjUsIDIwMSwgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCAKKyAgICA2OCwgNTMsIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCAKKyAgICA3NSwgNjUsIDY4LCAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCAKKyAgICA3NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIAorICAgIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIAogICAgIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgCiAgICAgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgCiAgICAgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgODUsIDEyOCwgCkBAIC0yMzE5LDE1MDkgKzI0ODgsMTUzOCBAQAogICAgIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCA4NSwgNzksIDgwLCAKICAgICAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIDg5LCAxMjgsIDc0LCAKICAgICA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgNzEsIDY5LCAxMjgsIAotICAgIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgNzksIDg1LCAKLSAgICAyMTEsIDc0LCA3OSwgODksIDEyOCwgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAKLSAgICAxMjgsIDc0LCA3OSwgNzgsIDE5MywgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIAotICAgIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCA3NCwgCi0gICAgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgODQsIAotICAgIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIDc2LCAKLSAgICAxMjgsIDc0LCA3MywgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIAotICAgIDc0LCA3MywgNjUsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgCi0gICAgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgCi0gICAgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCAKLSAgICA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCAKLSAgICA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgCi0gICAgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIAotICAgIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIAotICAgIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgCi0gICAgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCAKLSAgICA3MiwgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgCi0gICAgNjksIDE5NiwgMjAyLCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAKLSAgICAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIAotICAgIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCA3MywgODUsIDEyOCwgNzMsIAotICAgIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCA3MywgCi0gICAgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCAKLSAgICA3OSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIAotICAgIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCAKLSAgICA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIAotICAgIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgCi0gICAgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCAKLSAgICA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCA4MiwgNzksIDY4LCA4NSwgCi0gICAgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCAKLSAgICA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIAotICAgIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCAKLSAgICA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzMsIAotICAgIDc4LCA4NCwgNjksIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCAKLSAgICA3OSwgNjcsIDc1LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIAotICAgIDg0LCA2OSwgODIsIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgCi0gICAgODQsIDY5LCA4MiwgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCAKLSAgICA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKLSAgICA3MSwgODIsIDY1LCAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNjksIDgyLCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIDEyOCwgNzMsIDc4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAKLSAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgMjEyLCA3MywgNzgsIDc4LCA3OSwgNjcsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDc4LCA2OSwgCi0gICAgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIDc4LCA3MSwgODUsIDEyOCwgNzMsIDc4LCA3MywgMTI4LCA3MywgCi0gICAgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgNzIsIDY5LCA4MiwgNjksIDc4LCAyMTIsIDczLCA3OCwgNzEsIDg3LCAKLSAgICA2NSwgOTAsIDEyOCwgNzMsIDc4LCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIAotICAgIDg1LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgCi0gICAgNzMsIDc4LCA3MywgODQsIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCAKLSAgICA3MywgODIsIDY5LCA2NywgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIAotICAgIDczLCA2NywgNjUsIDg0LCA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgCi0gICAgNzMsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCAKLSAgICA3OCwgNjcsIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIAotICAgIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAKLSAgICAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgCi0gICAgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCAKLSAgICA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgCi0gICAgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCAKLSAgICA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIAotICAgIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgCi0gICAgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCAKLSAgICA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCAKLSAgICA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgCi0gICAgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgCi0gICAgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgCi0gICAgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCAKLSAgICA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCi0gICAgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIAotICAgIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIAotICAgIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIDg1LCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIAotICAgIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCAKLSAgICA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAotICAgIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCAKLSAgICA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCAKLSAgICA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIAotICAgIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCi0gICAgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgCi0gICAgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAKLSAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCAKLSAgICA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCAKLSAgICA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIAotICAgIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIAotICAgIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCAKLSAgICA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIAotICAgIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIAotICAgIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgCi0gICAgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCAKLSAgICA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCAKLSAgICA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCAKLSAgICA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIAotICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgCi0gICAgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCAKLSAgICA3MiwgODUsIDc3LCA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIAotICAgIDcyLCA4NSwgNjYsIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgCi0gICAgNjUsIDY4LCA2OCwgNzksIDEyOCwgNzIsIDg0LCA4MywgMTI4LCA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIDg2LCAKLSAgICA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCAKLSAgICA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIAotICAgIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgCi0gICAgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIAotICAgIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAotICAgIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKLSAgICA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgCi0gICAgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIAotICAgIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDE5MywgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIAorICAgIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgODMsIDg0LCAKKyAgICA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIAorICAgIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIAorICAgIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgCisgICAgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIAorICAgIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgCisgICAgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIAorICAgIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDg4LCAKKyAgICAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCAKKyAgICA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIAorICAgIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgCisgICAgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgCisgICAgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCAKKyAgICA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIAorICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgCisgICAgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCAKKyAgICA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIAorICAgIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAxMjgsIDc0LCA2NSwgNzIsIDEyOCwgCisgICAgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgNzksIDQ1LCAKKyAgICA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCA3NywgODAsIAorICAgIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIDcyLCA3MywgCisgICAgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgNzMsIDg5LCAKKyAgICA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCA3MywgODQsIAorICAgIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgCisgICAgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAyMTEsIDczLCA4MywgNzksIDc4LCAKKyAgICAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDgzLCA3NiwgNjUsIAorICAgIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgCisgICAgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIAorICAgIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCA2NiwgMTI4LCA3MywgNzksIDg0LCA3MywgCisgICAgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCAKKyAgICA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIAorICAgIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgCisgICAgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCAKKyAgICA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIAorICAgIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODAsIAorICAgIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzksIDY3LCA3NSwgNjksIDE5NiwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNjUsIAorICAgIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIDY5LCA4MywgCisgICAgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgMjA0LCA3MywgCisgICAgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgODUsIDc3LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCAKKyAgICA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCA2OCwgMTk3LCA3MywgNzgsIDgzLCA2OSwgODIsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgCisgICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCAKKyAgICA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIAorICAgIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIAorICAgIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MSwgCisgICAgODcsIDY1LCA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCAKKyAgICA3NiwgODUsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIAorICAgIDcwLCA3MywgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgCisgICAgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCAKKyAgICA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgCisgICAgMjA2LCA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDIxNiwgNzMsIDc4LCA2OCwgNjksIDgwLCAKKyAgICA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIAorICAgIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgCisgICAgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIDc4LCAKKyAgICA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIAorICAgIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCA3NiwgCisgICAgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCAKKyAgICA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgODAsIAorICAgIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAKKyAgICAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCAKKyAgICA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgCisgICAgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIAorICAgIDcyLCA3OSwgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgCisgICAgODMsIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCAKKyAgICA2NywgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIAorICAgIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgCisgICAgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIAorICAgIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgCisgICAgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCAKKyAgICA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIAorICAgIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIAorICAgIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgCisgICAgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgCisgICAgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgCisgICAgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCAKKyAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIAorICAgIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgCisgICAgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCA3MiwgMTI4LCA3MiwgODYsIDEyOCwgCisgICAgNzIsIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAxMjgsIDcyLCAKKyAgICA4NSwgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgODMsIAorICAgIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgCisgICAgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgMjA2LCA3MiwgODUsIDc2LCAKKyAgICA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNjYsIDUwLCAxMjgsIDcyLCA4NSwgNjYsIAorICAgIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgNzksIDEyOCwgNzIsIDg1LCA2NSwgCisgICAgNzgsIDEyOCwgNzIsIDg0LCA4MywgMTI4LCA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIDg2LCA3OCwgNzMsIDE5MywgCisgICAgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCA4NSwgODMsIDE5NywgCisgICAgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIAorICAgIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgNzYsIDEyOCwgNzIsIAorICAgIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDgzLCA2OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCA3MiwgNzksIDgyLCA4MiwgMTI4LCA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCisgICAgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIAorICAgIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCAKKyAgICA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCisgICAgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAorICAgIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgCisgICAgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIAorICAgIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDE5MywgNzIsIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIAorICAgIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgCisgICAgNjksIDEyOCwgNzIsIDc5LCA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIAorICAgIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA3OSwgMTI4LCA3MiwgCisgICAgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCAKICAgICA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIAotICAgIDc5LCA3MywgMTI4LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIDg0LCAKLSAgICAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIDcyLCAKLSAgICA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgNzIsIAotICAgIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCA2OSwgCi0gICAgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCA3MiwgCi0gICAgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAKLSAgICAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCAKLSAgICA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgCi0gICAgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCAKLSAgICA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCAKLSAgICA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIAotICAgIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgCi0gICAgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCAKLSAgICA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgCi0gICAgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgCi0gICAgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIAotICAgIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIAotICAgIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIAotICAgIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgCi0gICAgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCAKLSAgICA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIAotICAgIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIAotICAgIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgCi0gICAgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCAKLSAgICA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIAotICAgIDg1LCAxMjgsIDcyLCA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgCi0gICAgNjksIDgyLCA3NywgNzMsIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCAKLSAgICA4MiwgNjksIDEyOCwgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgNjUsIDY5LCA4NSwgMjA1LCA3MiwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA3MiwgNjksIDc4LCAxOTksIDcyLCA2OSwgNzcsIDgwLCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgCi0gICAgODQsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCAyMTIsIDcyLCA2OSwgNzYsIDIwNSwgNzIsIDY5LCA3NiwgNzMsIDY3LCAKLSAgICA3OSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNzIsIDY5LCA3NSwgODUsIDg0LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjksIAotICAgIDczLCA4MywgNjksIDczLCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA4OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCA3NiwgCi0gICAgMjE3LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgMjA2LCA3MiwgNjksIDY1LCAKLSAgICA4MiwgODQsIDgzLCAxMjgsIDcyLCA2OSwgNjUsIDgyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3MiwgNjksIAotICAgIDY1LCA4MiwgODQsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDIxMiwgNzIsIDY5LCA2NSwgODIsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgCi0gICAgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIDY4LCAKLSAgICA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgCi0gICAgNjUsIDgzLCAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCAKLSAgICA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIAotICAgIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgCi0gICAgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIAotICAgIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCAKLSAgICA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDIxMSwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgCi0gICAgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCAKLSAgICA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIAorICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCisgICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAorICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCisgICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKKyAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCisgICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKKyAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAorICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCisgICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAorICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAKKyAgICAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIAorICAgIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCAKKyAgICA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIAorICAgIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCAKKyAgICA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIAorICAgIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgCisgICAgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIAorICAgIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgCisgICAgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCAKKyAgICA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgNzgsIDcxLCAxMjgsIAorICAgIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCA4NCwgMTI4LCA3MiwgCisgICAgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIDc5LCA4MCwgODQsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgNzMsIDgzLCA2OSwgNzMsIAorICAgIDEyOCwgNzIsIDY5LCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgCisgICAgNzgsIDc2LCAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCAKKyAgICA2OSwgNjUsIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAorICAgIDcyLCA2OSwgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgCisgICAgNDUsIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCAKKyAgICA2NSwgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIAorICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgCisgICAgNzIsIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NywgNzQsIAorICAgIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAKKyAgICAxMjgsIDcyLCA2NSwgMjEzLCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCAKKyAgICA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIAorICAgIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgCisgICAgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCAKKyAgICA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIAorICAgIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgCisgICAgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCA3OCwgNjgsIDc2LCAKKyAgICA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgCisgICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCAKKyAgICA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIAogICAgIDY1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgCiAgICAgNzEsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCAKICAgICA3NiwgNzAsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIAogICAgIDY5LCA4MiwgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAKLSAgICAxMjgsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIAotICAgIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCAKLSAgICA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIAotICAgIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCAKLSAgICA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCAKLSAgICA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCAKLSAgICA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCAKLSAgICA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCAKLSAgICA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIAotICAgIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAKKyAgICAxMjgsIDcyLCA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIAorICAgIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgCisgICAgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCAKKyAgICA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIAorICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIAorICAgIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCAKKyAgICA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCAKKyAgICA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCAKKyAgICA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCAKKyAgICA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCAKKyAgICA4NywgNjUsIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIAorICAgIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3MSwgCisgICAgODUsIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAKICAgICAxMjgsIDcxLCA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3MywgODQsIDY1LCAKLSAgICA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAKLSAgICAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIAotICAgIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgCi0gICAgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgCi0gICAgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCAKLSAgICA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIAotICAgIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgCi0gICAgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCAKLSAgICA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCAKLSAgICA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAotICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgCi0gICAgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCAKLSAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIAotICAgIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgCi0gICAgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCAKLSAgICA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIAotICAgIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgCi0gICAgNzEsIDc5LCA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCAKLSAgICA3OCwgNzEsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgNzksIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCA3OSwgNjUsIDIwNCwgNzEsIAotICAgIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCi0gICAgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCAKLSAgICA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgCi0gICAgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgCi0gICAgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgCi0gICAgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAKKyAgICA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCAKKyAgICA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIAorICAgIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgCisgICAgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCAKKyAgICA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAKKyAgICAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIAorICAgIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgCisgICAgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCAKKyAgICA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIAorICAgIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgCisgICAgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCAKKyAgICA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIAorICAgIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCAKKyAgICA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIAorICAgIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgCisgICAgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCAKKyAgICA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIAorICAgIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgCisgICAgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCAKKyAgICA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIAorICAgIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgCisgICAgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgCisgICAgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCAKKyAgICA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIAorICAgIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgCisgICAgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgCisgICAgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgCisgICAgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIAogICAgIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIAogICAgIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgCiAgICAgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCAKLSAgICA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIAotICAgIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgCi0gICAgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCisgICAgNzEsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCAKKyAgICA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCAKKyAgICA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIAorICAgIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgCisgICAgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgCisgICAgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCAKICAgICA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIAogICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgCiAgICAgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCAKICAgICA3MSwgNzIsIDY5LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIAogICAgIDEyOCwgNzEsIDcyLCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgNzEsIDcyLCAKLSAgICA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCA3MiwgNjUsIAotICAgIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCAKLSAgICA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgCi0gICAgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCAKLSAgICA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIAotICAgIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgCi0gICAgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDY5LCA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIAotICAgIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCAKLSAgICA3NywgNjUsIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIAotICAgIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCAKLSAgICA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCAKLSAgICA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIAotICAgIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgCi0gICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgCi0gICAgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCAKLSAgICA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIAotICAgIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIAotICAgIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgCi0gICAgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCAKLSAgICA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgCi0gICAgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCAKLSAgICA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCAKLSAgICA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIAotICAgIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIAotICAgIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIAotICAgIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgCi0gICAgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAKLSAgICAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAKLSAgICA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIAotICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgCi0gICAgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAKLSAgICAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgCi0gICAgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAKLSAgICAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCAKLSAgICA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIAotICAgIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgCi0gICAgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCAKLSAgICA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgNzksIAotICAgIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgCi0gICAgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCAKLSAgICA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIAotICAgIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgCi0gICAgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCAKLSAgICA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIAotICAgIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgCi0gICAgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCAKLSAgICA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIAotICAgIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgCi0gICAgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCAKLSAgICA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIAotICAgIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCAKLSAgICA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIAotICAgIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCAKLSAgICA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCA3OSwgNzksIDc2LCAxMjgsIAotICAgIDcwLCA3OSwgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDcwLCA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIAotICAgIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgCi0gICAgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgCi0gICAgNzEsIDg5LCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIAotICAgIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgCi0gICAgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCAKLSAgICA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIAotICAgIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgCi0gICAgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgCi0gICAgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKLSAgICA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIAotICAgIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIAotICAgIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAKLSAgICAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCAKLSAgICA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAotICAgIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA3MywgNzgsIDg1LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgCisgICAgNzIsIDY1LCA2OCwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIAorICAgIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgCisgICAgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgCisgICAgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCAKKyAgICA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIAorICAgIDg0LCAxMjgsIDcxLCA2OSwgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgCisgICAgNzIsIDg1LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIAorICAgIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgCisgICAgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAKKyAgICAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIAorICAgIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgCisgICAgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgCisgICAgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgNjgsIDY5LCAKKyAgICAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgNjksIDY1LCAKKyAgICAyMTAsIDcxLCA2OSwgNTAsIDUwLCAxMjgsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCAKKyAgICA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgCisgICAgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCAKKyAgICA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIAorICAgIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCAKKyAgICA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgCisgICAgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCAKKyAgICA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIAorICAgIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgCisgICAgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAKKyAgICAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCAKKyAgICA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIAorICAgIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgCisgICAgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAKKyAgICAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCAKKyAgICA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCAKKyAgICA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgCisgICAgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIAorICAgIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIAorICAgIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIDgzLCA1MSwgCisgICAgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgCisgICAgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgCisgICAgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIAorICAgIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIAorICAgIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NSwgNjUsIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIAorICAgIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgCisgICAgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCAKKyAgICA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIAorICAgIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIAorICAgIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgCisgICAgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIAorICAgIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgNzUsIDIxMSwgNzAsIAorICAgIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCA4MywgMTI4LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgCisgICAgNzAsIDgyLCA2NSwgNzcsIDE5NywgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCAKKyAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIAorICAgIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgCisgICAgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAKKyAgICAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgCisgICAgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCAKKyAgICA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgNzUsIAorICAgIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgCisgICAgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCAKKyAgICA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgCisgICAgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCAyMTIsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAKKyAgICAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgCisgICAgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgCisgICAgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIAorICAgIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgCisgICAgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCisgICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNjksIAorICAgIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIAorICAgIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgCisgICAgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgCisgICAgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAKKyAgICA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIAorICAgIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIAorICAgIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgCisgICAgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCAKKyAgICA4NiwgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCAKKyAgICA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIAorICAgIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgCiAgICAgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgCiAgICAgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCAKICAgICA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIAotICAgIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgCi0gICAgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAotICAgIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIAotICAgIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCAKLSAgICA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIAotICAgIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgCi0gICAgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCAKLSAgICA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIAotICAgIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAKLSAgICAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIAotICAgIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgCi0gICAgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCAKLSAgICA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODEsIAotICAgIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgCi0gICAgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCAKLSAgICA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCAKLSAgICA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCAKLSAgICA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIAotICAgIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCAKLSAgICA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAotICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIAotICAgIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgCi0gICAgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCAKLSAgICA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgCi0gICAgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIAotICAgIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIAotICAgIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgCi0gICAgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCAKLSAgICA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIAotICAgIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCAKLSAgICA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIAotICAgIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCisgICAgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCAKKyAgICA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAorICAgIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNDUsIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgCisgICAgNzEsIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKKyAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAorICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAorICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKKyAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAorICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDcyLCAKKyAgICA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIDg1LCA4OCwgMTI4LCAKKyAgICA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgODYsIDY1LCA3NiwgCisgICAgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCA2OSwgODIsIDc3LCAKKyAgICA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgMjAwLCA3MCwgNjksIAorICAgIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgNzgsIDczLCA3OCwgMTk3LCA3MCwgCisgICAgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCAKKyAgICA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIDIxMywgNzAsIDY5LCA3MiwgMTI4LCAKKyAgICA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIDc3LCAxMjgsIDcwLCA2OSwgNjksIAorICAgIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgCisgICAgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCAKKyAgICA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgCisgICAgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgCisgICAgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgCisgICAgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIAorICAgIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIAorICAgIDEyOCwgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgCisgICAgNzgsIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCAKKyAgICA2OSwgMjA2LCA3MCwgNjUsIDc0LCAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIAorICAgIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKKyAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIAorICAgIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgCisgICAgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCAKKyAgICA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIAorICAgIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgCisgICAgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAKKyAgICAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIAorICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgCisgICAgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgCisgICAgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAKKyAgICAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIAorICAgIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCAKKyAgICA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCAKKyAgICA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCAKKyAgICA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIAorICAgIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgCisgICAgNjksIDc2LCAyMTcsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIAorICAgIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgCisgICAgNzEsIDIwMCwgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCAKKyAgICA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCA4MywgODMsIAorICAgIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIDg4LCA3OSwgCisgICAgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgODQsIDEyOCwgCisgICAgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgCisgICAgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCAKKyAgICA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIAorICAgIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgCisgICAgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIAorICAgIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAKKyAgICAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCAKKyAgICA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIAorICAgIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgCisgICAgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCAKKyAgICA3OCwgNzMsIDg0LCAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIAorICAgIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKKyAgICAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgNDksIAorICAgIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAxMjgsIAorICAgIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCA2OSwgCisgICAgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCAKKyAgICA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCAKKyAgICA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgCisgICAgODIsIDY1LCAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIAorICAgIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCiAgICAgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCAKICAgICA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCAKLSAgICA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCAKLSAgICA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIAotICAgIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgCi0gICAgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIAotICAgIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgCi0gICAgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIAotICAgIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIAotICAgIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgCi0gICAgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAKLSAgICAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgCi0gICAgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCAKLSAgICA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIAotICAgIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgCi0gICAgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCAKLSAgICA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCAKLSAgICA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgCi0gICAgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCAKLSAgICA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIAotICAgIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCAKLSAgICA3MSwgNzIsIDg0LCA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgCi0gICAgMTI4LCA2OSwgNzMsIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCAKLSAgICA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgCi0gICAgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAKLSAgICAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCAKLSAgICA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIAotICAgIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgCi0gICAgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCAKLSAgICA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCAKLSAgICA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIAotICAgIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCAKLSAgICA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCi0gICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKLSAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAotICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIAotICAgIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCAKLSAgICA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIAotICAgIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgCi0gICAgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCAKLSAgICA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIAotICAgIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIAotICAgIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgCi0gICAgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCAKLSAgICA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIAotICAgIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAKLSAgICAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAorICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgCisgICAgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgCisgICAgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCAKKyAgICA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCAKKyAgICA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIAorICAgIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgCisgICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCAKKyAgICA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIAorICAgIDc4LCA3MywgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCAKKyAgICA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIAorICAgIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgCisgICAgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCAKKyAgICA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIAorICAgIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIAorICAgIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgCisgICAgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAKKyAgICA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIAorICAgIDY5LCA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCAKKyAgICA3MywgMTk1LCA2OSwgNzYsIDY2LCA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIAorICAgIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgCisgICAgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCAKKyAgICA4NCwgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIAorICAgIDY5LCA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKKyAgICA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIAorICAgIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAKKyAgICAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIAorICAgIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgCisgICAgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgNjUsIAorICAgIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCA2NSwgCisgICAgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIDcyLCAKKyAgICA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgNzIsIAorICAgIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCA1MSwgCisgICAgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDY1LCAKKyAgICAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIDY5LCAKKyAgICA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCA1NCwgCisgICAgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCA2OSwgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCA2OSwgCisgICAgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIDQ4LCAKKyAgICA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCAKKyAgICA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgODcsIAorICAgIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgOTAsIAorICAgIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgCisgICAgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAKKyAgICAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCAKKyAgICA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgCisgICAgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgCisgICAgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCAKKyAgICA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCAKKyAgICA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgCisgICAgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgCisgICAgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgCisgICAgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgCisgICAgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCAKKyAgICA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIAorICAgIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIAorICAgIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCisgICAgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAKKyAgICAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCAKKyAgICA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgCisgICAgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg2LCAKKyAgICAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKQEAgLTM5NTIsOTkgKzQxNTAsMTA2IEBACiAgICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKICAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAogICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCAKLSAgICA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIAotICAgIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgCi0gICAgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIAotICAgIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgNzIsIDY1LCAxMjgsIAotICAgIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIAotICAgIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgCi0gICAgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCAKLSAgICA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgCi0gICAgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIAotICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCAKLSAgICA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIAotICAgIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAKLSAgICAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODAsIDg0LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCAKLSAgICA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIAotICAgIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIAotICAgIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgCi0gICAgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCAKLSAgICA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAotICAgIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCi0gICAgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCAKLSAgICA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCAKLSAgICA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIAotICAgIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCAKLSAgICA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIAotICAgIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgCi0gICAgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCAKLSAgICA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAotICAgIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCAKLSAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIAotICAgIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgCi0gICAgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIAotICAgIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCi0gICAgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgCi0gICAgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCAKLSAgICA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIAotICAgIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCAKLSAgICA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIAotICAgIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIAotICAgIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgCi0gICAgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIAotICAgIDEyOCwgNjgsIDY5LCA4MywgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgCi0gICAgODQsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIAotICAgIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgCi0gICAgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCAKLSAgICA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIAotICAgIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgCi0gICAgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIAotICAgIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgCi0gICAgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCAKLSAgICA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgCi0gICAgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgCi0gICAgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCA2OCwgCisgICAgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIAorICAgIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgCisgICAgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgCisgICAgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgCisgICAgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgCisgICAgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCAKKyAgICA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCAKKyAgICA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIAorICAgIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgCisgICAgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCAKKyAgICA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCAKKyAgICA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIAorICAgIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgCisgICAgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCAKKyAgICA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIAorICAgIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgCisgICAgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgCisgICAgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCAKKyAgICA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgCisgICAgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIAorICAgIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCAKKyAgICA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgCisgICAgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIAorICAgIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKKyAgICAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIAorICAgIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgCisgICAgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAKKyAgICAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAKKyAgICAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIAorICAgIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgzLCA2OSwgCisgICAgMjA0LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIDY1LCA4NCwgCisgICAgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgODMsIDg0LCAKKyAgICA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIAorICAgIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIDIxMCwgCisgICAgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIAorICAgIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCA3NiwgCisgICAgMTI4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCAKKyAgICA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIAorICAgIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgCisgICAgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCAKKyAgICA3MywgMTI4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCAKKyAgICA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIAorICAgIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCAKKyAgICA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIAorICAgIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgCisgICAgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCAKKyAgICA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIAorICAgIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgCisgICAgMTI4LCA2OCwgNjksIDgzLCA3NSwgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgNzMsIDcxLCAKKyAgICA3OCwgMTI4LCA2OCwgNjksIDgzLCA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAxMjgsIDY4LCA2OSwgODMsIAorICAgIDY5LCA4MiwgMjEyLCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCAKKyAgICA3OCwgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIAorICAgIDY5LCA4MiwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgCisgICAgODQsIDg1LCA4MiwgNjksIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIDgwLCAKKyAgICA2NSwgODIsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgNzgsIAorICAgIDg0LCA2NSwgMjA0LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCA3OCwgCisgICAgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA2OCwgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgNzYsIAorICAgIDg0LCA2NSwgMTI4LCA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCA4MCwgCisgICAgNzIsIDczLCAxOTUsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCA3NiwgCisgICAgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIDE5NywgNjgsIDY5LCA3NSwgNjUsIDEyOCwgNjgsIDY5LCAKKyAgICA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIDczLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgNjksIAorICAgIDgzLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIDczLCA4NCwgNzMsIDc5LCA3OCwgCiAgICAgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAyMTEsIDY4LCA2OSwgNjksIDgyLCAKICAgICAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIDEyOCwgNjgsIDY5LCA2NywgODIsIAogICAgIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA2OCwgCi0gICAgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNjcsIDczLCA4MywgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgCi0gICAgNzMsIDc3LCA2NSwgMjA0LCA2OCwgNjksIDY3LCA3MywgNjgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjcsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIAotICAgIDY4LCA2OSwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDY1LCA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4NCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCAKLSAgICA4NSwgODIsIDEyOCwgNjgsIDY4LCA4NSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIAotICAgIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIAotICAgIDY4LCA2OCwgNzksIDg0LCAxMjgsIDY4LCA2OCwgNzksIDgwLCAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzMsIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDg0LCAxMjgsIDY4LCA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNjgsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCA2OCwgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAKLSAgICAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCi0gICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKLSAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKKyAgICA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIAorICAgIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIDY5LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgODUsIAorICAgIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCA2OSwgCisgICAgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIDY4LCAKKyAgICAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIDEyOCwgCisgICAgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIDY4LCAKKyAgICA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIAorICAgIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAxMjgsIAorICAgIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgCisgICAgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAKKyAgICAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIAorICAgIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgNjcsIAorICAgIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCAKKyAgICA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAxMjgsIAogICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCiAgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKICAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKQEAgLTQwNjEsMjg1ICs0MjY2LDMxMCBAQAogICAgIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgCiAgICAgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCAKICAgICA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCAKLSAgICA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIAotICAgIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAKLSAgICAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIAotICAgIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgCi0gICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAotICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCi0gICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAotICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAotICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKLSAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAotICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKLSAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKLSAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKLSAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAotICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCi0gICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKLSAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODksIAotICAgIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIAotICAgIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgCi0gICAgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCAKLSAgICA2OCwgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIAotICAgIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgCi0gICAgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIAotICAgIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgCi0gICAgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCAKLSAgICA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCAKLSAgICA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAKLSAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIAotICAgIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgCi0gICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIAotICAgIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCAKLSAgICA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIAotICAgIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgCi0gICAgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAKLSAgICAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIAotICAgIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCAKLSAgICA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIAotICAgIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgCi0gICAgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAKLSAgICAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIAotICAgIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAKLSAgICAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgCi0gICAgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIAotICAgIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgCi0gICAgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCAKLSAgICA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgCi0gICAgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIAotICAgIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgCi0gICAgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAotICAgIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCi0gICAgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIAotICAgIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgCi0gICAgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIAotICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgCi0gICAgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKLSAgICA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAKLSAgICA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAotICAgIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgCi0gICAgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCAKLSAgICA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIAotICAgIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgCi0gICAgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAKLSAgICAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCAKLSAgICA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIAotICAgIDY1LCAxMjgsIDY3LCA3OSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCAKLSAgICA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIAotICAgIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCAKLSAgICA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIAotICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgCi0gICAgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCAKLSAgICA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIAotICAgIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgCi0gICAgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCAKLSAgICA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIAotICAgIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgCi0gICAgNzYsIDY1LCA4NywgMTI4LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAKLSAgICAyMTAsIDY3LCA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCAKLSAgICA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIAotICAgIDgwLCAxOTcsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCi0gICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKLSAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIAotICAgIDczLCA4MiwgNjcsIDc2LCA2OSwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgCi0gICAgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIAotICAgIDczLCA2OSwgODUsIDY3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA2NywgNzMsIDY5LCA4NSwgMTk1LCA2NywgNzMsIDY5LCA4NCwgMTI4LCA2NywgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA2NywgNzMsIDY5LCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIAotICAgIDY3LCA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCAKLSAgICA2NywgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIAotICAgIDcyLCA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgCi0gICAgNzMsIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCAKLSAgICA4MywgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIAotICAgIDc5LCA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgCi0gICAgNjcsIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKLSAgICAxMjgsIDY3LCA3MiwgMjA3LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCAKLSAgICA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIAotICAgIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCAKLSAgICA4NSwgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDcyLCA3MywgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNzIsIDczLCA4MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDczLCAKLSAgICA3OCwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNzMsIDc4LCAxMjgsIDY3LCA3MiwgNzMsIDc3LCA2OSwgMTI4LCA2NywgNzIsIAotICAgIDczLCA3NiwgNzYsIDIxMywgNjcsIDcyLCA3MywgNzYsIDY4LCA4MiwgNjksIDIwNiwgNjcsIDcyLCA3MywgNzYsIDY4LCAKLSAgICAxMjgsIDY3LCA3MiwgNzMsIDc2LCAxMjgsIDY3LCA3MiwgNzMsIDc1LCAyMDEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIAotICAgIDcyLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgMjAwLCA2NywgNzIsIDczLCA2NywgNzUsIAotICAgIDY5LCA3OCwgMTI4LCA2NywgNzIsIDczLCA2NywgNzUsIDEyOCwgNjcsIDcyLCA3MywgMTI4LCA2NywgNzIsIDIwMSwgNjcsIAotICAgIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDcyLCA2OSwgODgsIDEyOCwgNjcsIDcyLCA2OSwgODYsIDgyLCA3OSwgMjA2LCA2NywgCi0gICAgNzIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDc4LCA4NSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIAotICAgIDIxMSwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCisgICAgNjgsIDY1LCA3MywgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCAKKyAgICA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIAorICAgIDgyLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgCisgICAgNzEsIDY5LCA4MywgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCAKKyAgICA2NSwgMjE4LCA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA1MSwgMTI4LCA2OCwgNjUsIAorICAgIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIAorICAgIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCAKKyAgICA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgCisgICAgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgCisgICAgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgCisgICAgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIAorICAgIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgCisgICAgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIAorICAgIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCAKKyAgICA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIAorICAgIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgCisgICAgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDg5LCAxMjgsIDY3LCA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIAorICAgIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCAKKyAgICA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA2NywgODUsIDgzLCA4MCwgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIAorICAgIDE5NywgNjcsIDg1LCA4MiwgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCAKKyAgICA4NSwgODIsIDc2LCAxMjgsIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCA2NywgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgODUsIDY2LCA2OSwgNjgsIAorICAgIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgCisgICAgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCA2NywgODMsIDczLCAKKyAgICAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIAorICAgIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgCisgICAgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIAorICAgIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgCisgICAgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCAKKyAgICA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIAorICAgIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCAKKyAgICA2NywgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIAorICAgIDY3LCA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgCisgICAgODIsIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCAKKyAgICA3NiwgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIAorICAgIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgCisgICAgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCAKKyAgICA4MiwgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgCisgICAgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIAorICAgIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgCisgICAgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCAKKyAgICA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIAorICAgIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgCisgICAgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAKKyAgICAyMTAsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIAorICAgIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgCisgICAgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzksIAorICAgIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzksIDc5LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCA3OCwgNzMsIDY5LCA3OCwgNjcsIAorICAgIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgMjA0LCA2NywgCisgICAgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgNjcsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCA2NywgNzksIDc4LCA4NCwgCisgICAgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDY5LCAKKyAgICA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCAKKyAgICA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgCisgICAgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCAKKyAgICA3OCwgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAorICAgIDc5LCA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgCisgICAgNzksIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCAKKyAgICA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgCisgICAgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCAKKyAgICA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgCisgICAgNzcsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCAKKyAgICA3OCwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIAorICAgIDY5LCA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIAorICAgIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIDY1LCAKKyAgICA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3OSwgMTI4LCAKKyAgICA2NywgNzcsIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIAorICAgIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgCisgICAgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCAKKyAgICA2NywgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIAorICAgIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIAorICAgIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCAKKyAgICA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4NywgCisgICAgMTI4LCA2NywgNzYsIDY1LCA4MywgODMsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIAorICAgIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIAorICAgIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCA3NiwgMjA0LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAKKyAgICAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIAorICAgIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgCisgICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCAKKyAgICA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgCisgICAgNjksIDIxNiwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgCisgICAgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCAKKyAgICA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgMjA2LCA2NywgNzMsIDIwNSwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDY3LCA3MywgNjksIDgwLCAxMjgsIDY3LCA3MywgNjksIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgCisgICAgODQsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAKKyAgICAxMjgsIDY3LCA3MiwgODcsIDg2LCAxMjgsIDY3LCA3MiwgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIDY3LCA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIAorICAgIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCA3MiwgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCAKKyAgICA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIDY5LCA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgCisgICAgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCAKKyAgICA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCA3MywgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIAorICAgIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg5LCAKKyAgICAxMjgsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgNzksIDgyLCA2OSwgODYsIAorICAgIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2OSwgCisgICAgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIDEyOCwgNjcsIDcyLCAKKyAgICAyMDcsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDcyLCA3MywgCisgICAgODQsIDg1LCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIAorICAgIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNzIsIDczLCA4MiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgCisgICAgNzMsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA3MywgODAsIDc3LCA4NSwgNzgsIDc1LCAxMjgsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICA3OSwgNzksIDIwMywgNjcsIDcyLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjcsIAorICAgIDcyLCA3MywgNzgsIDEyOCwgNjcsIDcyLCA3MywgNzcsIDY5LCAxMjgsIDY3LCA3MiwgNzMsIDc2LCA3NiwgMjEzLCA2NywgCisgICAgNzIsIDczLCA3NiwgNjgsIDgyLCA2OSwgMjA2LCA2NywgNzIsIDczLCA3NiwgNjgsIDEyOCwgNjcsIDcyLCA3MywgNzYsIAorICAgIDEyOCwgNjcsIDcyLCA3MywgNzUsIDIwMSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDQ1LCA3NSwgNzIsIDczLCA2OSwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKKyAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCAyMDAsIDY3LCA3MiwgNzMsIDY3LCA3NSwgNjksIDc4LCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDY3LCA3NSwgMTI4LCA2NywgNzIsIDczLCAxMjgsIDY3LCA3MiwgMjAxLCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNzIsIAorICAgIDY5LCA4OCwgMTI4LCA2NywgNzIsIDY5LCA4NiwgODIsIDc5LCAyMDYsIDY3LCA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgCisgICAgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCiAgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKICAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAogICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCi0gICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCi0gICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKLSAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCi0gICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKLSAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAotICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCi0gICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCi0gICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKLSAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAotICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCi0gICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCi0gICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKLSAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAotICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgCisgICAgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIDY3LCAKKyAgICA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIAorICAgIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgCisgICAgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAKKyAgICAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIAorICAgIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAKKyAgICA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgCisgICAgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCAKKyAgICA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgCisgICAgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIAorICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgCisgICAgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgCisgICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIDE5NSwgNjcsIDY5LCA3NiwgODMsIAorICAgIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA2OSwgCisgICAgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDY5LCA4NiwgMTI4LCAKKyAgICA2NywgNjksIDY5LCA2NiwgMTI4LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgCisgICAgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCAKKyAgICA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCAKKyAgICA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAorICAgIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgCisgICAgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAKKyAgICAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIAorICAgIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgCisgICAgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NywgNjUsIDg1LCAKICAgICAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCAKLSAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAotICAgIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCAKLSAgICA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIAotICAgIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgCi0gICAgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAKLSAgICAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCAKLSAgICA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIAotICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKLSAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgCi0gICAgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCAKLSAgICA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIAotICAgIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgCi0gICAgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCAKLSAgICA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAKLSAgICAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCAKLSAgICA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIAotICAgIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgCi0gICAgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDY3LCAKLSAgICA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCA2NywgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgMTI4LCA2NywgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNDgsIDQ5LCAKLSAgICA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCA0NSwgNTEsIAotICAgIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIDIwMSwgNjYsIAotICAgIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCAKLSAgICA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIAotICAgIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgCi0gICAgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgCi0gICAgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCAKKyAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIAorICAgIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgCisgICAgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCAKKyAgICA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIAorICAgIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgCisgICAgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAKKyAgICAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxMjgsIDY3LCAKKyAgICA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIAorICAgIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAKKyAgICAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIAorICAgIDY3LCA2NSwgNzgsIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgCisgICAgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCAKKyAgICA2NywgNjUsIDc4LCA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIAorICAgIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgCisgICAgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIAorICAgIDY3LCA2NSwgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAKKyAgICAxMjgsIDY3LCA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCAKKyAgICA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIAorICAgIDc2LCA2NywgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgCisgICAgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgCisgICAgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIAorICAgIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgCisgICAgNjcsIDY1LCA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIAorICAgIDY5LCA2OSwgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAKKyAgICA2NywgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA2NywgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgCisgICAgOTAsIDcyLCAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCAKKyAgICA3OCwgNDUsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIAorICAgIDEyOCwgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIAorICAgIDc3LCA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCAKKyAgICA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIAogICAgIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIAogICAgIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgCiAgICAgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCAKLSAgICA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAotICAgIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgCi0gICAgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCAKLSAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgCi0gICAgMTk3LCA2NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKLSAgICA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIAotICAgIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA2NiwgODIsIDg1LCA4MywgCi0gICAgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCAKLSAgICA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIAotICAgIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAKLSAgICAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIAotICAgIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgCi0gICAgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCAKLSAgICA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIAotICAgIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIAorICAgIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgCisgICAgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCAKKyAgICA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgCisgICAgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCAKKyAgICA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIAorICAgIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgCisgICAgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCAKKyAgICA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIAorICAgIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgCisgICAgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCAKKyAgICA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIAorICAgIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgCisgICAgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCAKKyAgICA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIAorICAgIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgCiAgICAgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIAogICAgIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIAotICAgIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgCi0gICAgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCAKLSAgICA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIAotICAgIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCA3OSwgODQsIDIwMCwgCi0gICAgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCAKLSAgICA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIAotICAgIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgCi0gICAgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAKLSAgICA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIAotICAgIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIAotICAgIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIDc5LCA2NSwgODIsIDEyOCwgCi0gICAgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCAKLSAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIAotICAgIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgCi0gICAgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKLSAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIAotICAgIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAKLSAgICAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIAotICAgIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgCi0gICAgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCAKLSAgICA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIAotICAgIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgCi0gICAgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCAKLSAgICA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIAotICAgIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCi0gICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKKyAgICA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIAorICAgIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgCisgICAgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCAKKyAgICA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIAorICAgIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgCisgICAgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCAKKyAgICA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCisgICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKKyAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAorICAgIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCAKKyAgICA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIAorICAgIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgCisgICAgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAKKyAgICAxMjgsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCAKKyAgICA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCA3MCwgNzMsIDgzLCA3MiwgCisgICAgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCAKKyAgICA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIAorICAgIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgCisgICAgNjUsIDY3LCA3NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCAKKyAgICA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgCisgICAgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAKKyAgICAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIAorICAgIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgCisgICAgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCAKKyAgICA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIAorICAgIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgCisgICAgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCAKKyAgICA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIAorICAgIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgCisgICAgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCAKKyAgICA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgCiAgICAgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAKICAgICA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIAogICAgIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgCkBAIC00MzUxLDE1NDg3ICs0NTgxLDE3MjAxIEBACiAgICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKICAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAogICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAotICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAKLSAgICAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCAKLSAgICA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3NiwgMTI4LCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgCi0gICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCAKLSAgICA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAotICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAotICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgCi0gICAgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCAKLSAgICA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgCi0gICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgCi0gICAgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIAotICAgIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgCi0gICAgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIAotICAgIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgCi0gICAgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCAKLSAgICA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAotICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgCi0gICAgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCAKLSAgICA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCAKLSAgICA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAotICAgIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgMTk0LCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIAotICAgIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgCi0gICAgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIAotICAgIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgCi0gICAgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgCi0gICAgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCAKLSAgICA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIAotICAgIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgCi0gICAgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgCi0gICAgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCAKLSAgICA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIAotICAgIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAxOTYsIDY2LCAKLSAgICA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgNjksIDgyLCA4NSwgCi0gICAgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIDUwLCAxMjgsIDY2LCAKLSAgICA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIDY2LCA1MCwgNTIsIAotICAgIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgNTMsIDEyOCwgNjYsIAotICAgIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgMTc2LCA2NiwgNTAsIAotICAgIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgNTEsIDUwLCAxMjgsIAotICAgIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgNTAsIDUwLCA1NiwgCi0gICAgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAxODEsIDY2LCA1MCwgCi0gICAgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCA0OSwgNTcsIDEyOCwgCi0gICAgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIDEyOCwgNjYsIDUwLCAKLSAgICA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIDUwLCA0OSwgNTAsIAotICAgIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgNjYsIDUwLCA0OCwgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCA0OCwgNTAsIDEyOCwgCi0gICAgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCA2NiwgNDksIDU3LCAKLSAgICA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIDU2LCA1MiwgMTI4LCAKLSAgICA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgMTI4LCA2NiwgNDksIAotICAgIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgNDksIDU1LCA1NSwgCi0gICAgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgCi0gICAgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgCi0gICAgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIDU0LCAxNzgsIDY2LCAKLSAgICA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIDQ5LCA1MywgNTYsIAotICAgIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgMTI4LCA2NiwgNDksIAotICAgIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgNDksIDUzLCAxNzcsIAotICAgIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgCi0gICAgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgCi0gICAgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgCi0gICAgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgNDksIDUwLCAxNzgsIAotICAgIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgNDksIDQ4LCA1NywgCi0gICAgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCA1NSwgMjA1LCA2NiwgCi0gICAgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCA2NiwgNDksIDQ4LCAKLSAgICA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIDE4MCwgNjYsIDQ5LCAKLSAgICA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCA2NiwgNDgsIDU2LCAKLSAgICA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIDE4MSwgNjYsIDQ4LCAKLSAgICA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIDU2LCAxNzYsIDY2LCAKLSAgICA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIDU1LCAxODIsIDY2LCAKLSAgICA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIDE3OCwgNjYsIDQ4LCAKLSAgICA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCA2NiwgNDgsIDU0LCAKLSAgICAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCA2NiwgNDgsIDU0LCAKLSAgICA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCA2NiwgNDgsIDUzLCAKLSAgICAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NiwgNDgsIDUzLCAKLSAgICAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCA0OCwgNTMsIDE3NywgCi0gICAgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCA0OCwgNTIsIDU1LCAKLSAgICAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCA0OCwgNTIsIDE3OSwgCi0gICAgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgCi0gICAgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NiwgCi0gICAgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAxNzYsIDY2LCA0OCwgCi0gICAgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgCi0gICAgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgCi0gICAgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAxMjgsIDY2LCA0OCwgCi0gICAgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgNjYsIDQ4LCA0OSwgCi0gICAgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgCi0gICAgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAxODIsIDY2LCA0OCwgCi0gICAgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCA2NiwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIDE3NywgNjUsIDkwLCAKLSAgICA4NSwgMTI4LCA2NSwgODksIDY5LCAyMTAsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCAKLSAgICA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIAotICAgIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgCi0gICAgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCAKLSAgICA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIAotICAgIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgCi0gICAgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIAotICAgIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgCi0gICAgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCAKLSAgICA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgCi0gICAgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIAotICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAKLSAgICAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIAotICAgIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgCi0gICAgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIAotICAgIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIAotICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgCi0gICAgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCAKLSAgICA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIAotICAgIDgzLCAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCisgICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCAyMTIsIDY2LCAKKyAgICA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIAorICAgIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIDc5LCAyMDgsIAorICAgIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgCisgICAgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIAorICAgIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIAorICAgIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgCisgICAgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCAKKyAgICA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIAorICAgIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgCisgICAgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjksIAorICAgIDY1LCA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIAorICAgIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIAorICAgIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIAorICAgIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCAKKyAgICA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCAKKyAgICA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIAorICAgIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIAorICAgIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgCisgICAgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCAKKyAgICA4MywgODMsIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIAorICAgIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgCisgICAgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCAKKyAgICA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIAorICAgIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgCisgICAgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCAKKyAgICA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgCisgICAgMTI4LCA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCAKKyAgICA4NCwgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCAKKyAgICA2NSwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIAorICAgIDc3LCA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgCisgICAgNjUsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIAorICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgCisgICAgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCAKKyAgICA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAorICAgIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgCisgICAgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCAxMjgsIDY2LCAKKyAgICA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIDY1LCA3MSwgNjUsIDEyOCwgNjYsIAorICAgIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgCisgICAgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCAKKyAgICA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIAorICAgIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgCisgICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIAorICAgIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCAKKyAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIAorICAgIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgCisgICAgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAKKyAgICAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCAKKyAgICA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIAorICAgIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIAorICAgIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgCisgICAgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgCisgICAgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCAKKyAgICA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIAorICAgIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIAorICAgIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgCisgICAgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAKKyAgICAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCAKKyAgICA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCAKKyAgICA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIAorICAgIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgCisgICAgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgCisgICAgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgCisgICAgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCAKKyAgICA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCAKKyAgICA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCAKKyAgICA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCAKKyAgICA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCAKKyAgICA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCAKKyAgICA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIAorICAgIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIAorICAgIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgCisgICAgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIAorICAgIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgCisgICAgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgCisgICAgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgCisgICAgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgCisgICAgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIAorICAgIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIAorICAgIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIAorICAgIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIAorICAgIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIAorICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIAorICAgIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIAorICAgIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIAorICAgIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCAKKyAgICA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCAKKyAgICA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIAorICAgIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCAKKyAgICA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCAKKyAgICA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIAorICAgIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgCisgICAgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjksIDIxMCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgCisgICAgMTI4LCA2NSwgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgCisgICAgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIAorICAgIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKKyAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAorICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKKyAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAorICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKKyAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAKKyAgICAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCAKKyAgICA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIAorICAgIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgCisgICAgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCAKKyAgICA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAorICAgIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCisgICAgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCAKKyAgICA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIAorICAgIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgCisgICAgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIAorICAgIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgCisgICAgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKICAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAogICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCiAgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAogICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCiAgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKICAgICA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIAotICAgIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAKLSAgICAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgCi0gICAgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCAKLSAgICA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIAotICAgIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAKLSAgICAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCA2NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgCi0gICAgMTkzLCA2NSwgODIsIDczLCA2OSwgODMsIDEyOCwgNjUsIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDY1LCAKLSAgICA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDY1LCA4MiwgNzEsIDczLCAxMjgsIAotICAgIDY1LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA2NSwgODIsIDY5LCA2NSwgMTI4LCA2NSwgODIsIDY4LCA3MiwgNjUsIDg2LCA3MywgCi0gICAgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCAKLSAgICA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIAotICAgIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgCi0gICAgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAKLSAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgCi0gICAgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAKLSAgICAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIAotICAgIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgCi0gICAgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCAKLSAgICA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIAotICAgIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgCi0gICAgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIAotICAgIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIAotICAgIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgCi0gICAgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIAotICAgIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgCi0gICAgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgCi0gICAgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIAotICAgIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAKLSAgICAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgCi0gICAgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCAKLSAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgCi0gICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCAKLSAgICA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgCi0gICAgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIAotICAgIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgCi0gICAgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCAKLSAgICA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIAotICAgIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgCi0gICAgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCAKLSAgICA4NSwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIAotICAgIDE5NiwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAKLSAgICAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIAotICAgIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgCi0gICAgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCAKLSAgICA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIAotICAgIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3NywgNjYsIDg1LCA3NiwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc3LCA2NiwgMTkzLCA2NSwgNzcsIDY1LCA4MiwgMTI4LCA2NSwgNzcsIDY1LCAKLSAgICAyMTAsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzcsIDY1LCA3NiwgNzEsIAotICAgIDY1LCA3NywgMTI4LCA2NSwgNzYsIDg2LCA2OSwgNzksIDc2LCA2NSwgMjEwLCA2NSwgNzYsIDg1LCA3NywgMTI4LCA2NSwgCi0gICAgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIAotICAgIDczLCA3OSwgMjA2LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgCi0gICAgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCAKLSAgICA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgCi0gICAgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgCi0gICAgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCAKLSAgICA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIAotICAgIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgCi0gICAgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCAKLSAgICA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIAotICAgIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAKLSAgICAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIAotICAgIDEyOCwgNjUsIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgCi0gICAgNzYsIDgzLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAKLSAgICAxOTUsIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCAKLSAgICA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIAotICAgIDc5LCAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgCi0gICAgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCAKLSAgICA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIAotICAgIDcyLCA2NSwgNzgsIDE5OSwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgCi0gICAgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIAotICAgIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgCi0gICAgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIAotICAgIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCAKKyAgICA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDczLCA3OCwgNzEsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgCisgICAgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCAKKyAgICA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgCisgICAgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgCisgICAgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIAorICAgIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAKKyAgICAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIAorICAgIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIAorICAgIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgCisgICAgNzIsIDY1LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjcsIAorICAgIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCA3MywgMTk1LCA2NSwgODIsIAorICAgIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCisgICAgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCAKKyAgICA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIAorICAgIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgCisgICAgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCAKKyAgICA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIAorICAgIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgCisgICAgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCAKKyAgICA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIAorICAgIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgCisgICAgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIAorICAgIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgCisgICAgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCAKKyAgICA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCAKKyAgICA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIAorICAgIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIAorICAgIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAKKyAgICA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCAKKyAgICA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKKyAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgCisgICAgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIAorICAgIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgCisgICAgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIAorICAgIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgCisgICAgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAKKyAgICAyMTcsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAKKyAgICAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIAorICAgIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3NywgCisgICAgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA4MCwgNjksIDgyLCAKKyAgICA4MywgNjUsIDc4LCAxOTYsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCA2NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIDIxMCwgNjUsIDc3LCA2NSwgCisgICAgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAxMjgsIDY1LCAKKyAgICA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIAorICAgIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NiwgCisgICAgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIAorICAgIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgCisgICAgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCAKKyAgICA4MywgMjEyLCA2NSwgNzYsIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIAorICAgIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgCisgICAgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIAorICAgIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgCisgICAgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgCisgICAgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAKKyAgICAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA3MiwgNjksIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCAKKyAgICA2OSwgODMsIDY5LCA3NiwgODMsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIAorICAgIDczLCA3NywgNzMsIDE5NSwgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgCisgICAgNjUsIDgyLCAxOTMsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIAorICAgIDIwMywgNjUsIDczLCA4NCwgNzksIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgCisgICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCAKKyAgICA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIAorICAgIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgCisgICAgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAorICAgIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgCisgICAgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCAKKyAgICA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgCisgICAgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAKKyAgICAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIAogICAgIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgCiAgICAgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCAKICAgICA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCAKICAgICA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIAogICAgIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgCiAgICAgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgCi0gICAgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCAKLSAgICA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgCi0gICAgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIAotICAgIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgCi0gICAgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIAotICAgIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIAotICAgIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgCi0gICAgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCAKLSAgICA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgCisgICAgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIAorICAgIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgCisgICAgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAorICAgIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgCisgICAgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCAKKyAgICA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIAorICAgIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgCisgICAgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIAorICAgIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgCisgICAgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAKKyAgICAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIAorICAgIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIAorICAgIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OSwgCisgICAgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDc3LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzAsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIAorICAgIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIDUxLCAxNzgsIDY1LCAKKyAgICA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIDE4MCwgNjUsIDU1LCAKKyAgICA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCA2NSwgNTUsIDQ4LCAKKyAgICA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgNDgsIDE4MywgNjUsIAorICAgIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgNjUsIDU0LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgNTIsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgNjUsIDU0LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIDU0LCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIDEyOCwgNjUsIDU0LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIDU0LCA0OCwgNTAsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCA1NiwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIDUzLCA1NiwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCA1NSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIDUzLCA1NCwgNTEsIAorICAgIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIDUzLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIAorICAgIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIAorICAgIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgCisgICAgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgCisgICAgNjUsIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCAKKyAgICA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUzLCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIAorICAgIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgCisgICAgNTQsIDU1LCAxMjgsIDY1LCA1MSwgNTQsIDU0LCAxMjgsIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCAKKyAgICAxMjgsIDY1LCA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MSwgNTQsIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIAorICAgIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIAorICAgIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgCisgICAgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAKKyAgICAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIAorICAgIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIAorICAgIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAKKyAgICAxMjgsIDY1LCA1MSwgNTAsIDU3LCAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCAKKyAgICA1MSwgNTAsIDU0LCAxMjgsIDY1LCA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIAorICAgIDUxLCAxMjgsIDY1LCA1MSwgNTAsIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIAorICAgIDY1LCA1MSwgNDksIDU3LCAxMjgsIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgCisgICAgNDksIDU0LCAxMjgsIDY1LCA1MSwgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCAKKyAgICA2NywgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNDgsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgNDgsIDU0LCAxMjgsIDY1LCA1MSwgNDgsIDUzLCAxMjgsIDY1LCAKKyAgICA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAxMjgsIDY1LCA1MSwgNDgsIDUwLCAxMjgsIDY1LCA1MSwgNDgsIAorICAgIDQ5LCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNDgsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIAorICAgIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCAKKyAgICA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgCisgICAgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIAorICAgIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgCisgICAgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgCisgICAgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCAKKyAgICA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ3LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKLSAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCi0gICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAotICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKLSAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxMiwgNDE3LCA0MjIsIDQyNywgCi0gICAgNDM0LCA0MzYsIDI5OSwgNDQyLCA0NDUsIDQ0NywgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAotICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKLSAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjUyLCA2NjMsIDY2NywgNjcwLCA2NzMsIDY3OCwgCi0gICAgMzQ4LCA2ODIsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAotICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKLSAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCi0gICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCi0gICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYwLCAKLSAgICAxMDY2LCAxMDcyLCAxMDgwLCAxMDgzLCAxMDg4LCAxMDk0LCAxMTAyLCAxMTA3LCAxMTEwLCAxMTEzLCAxMTEsIDExMTgsIAotICAgIDExMjIsIDExMjgsIDExMzQsIDExMzcsIDExNDMsIDExNDcsIDExNTIsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAotICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAotICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAotICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAotICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAotICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAotICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAotICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAotICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAotICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAotICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAotICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAotICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAotICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAotICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDEwNTgsIDE4MzYsIDE4NDIsIAotICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAotICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAotICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAotICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAotICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAotICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAotICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAotICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAotICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAotICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAotICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAotICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAotICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAotICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAotICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAotICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAotICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAotICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAotICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAotICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAotICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAotICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKLSAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKLSAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKLSAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKLSAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKLSAgICAzNDA4LCAzNDEzLCAxMTIwLCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAotICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAotICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAotICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAotICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKLSAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAotICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAotICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAotICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAotICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAotICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAotICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAotICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAotICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAotICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKLSAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKLSAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKLSAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKLSAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKLSAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKLSAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKLSAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKLSAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKLSAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKLSAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKLSAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKLSAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKLSAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKLSAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKLSAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKLSAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKLSAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKLSAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKLSAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKLSAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKLSAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKLSAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKLSAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKLSAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKLSAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKLSAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKLSAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKLSAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKLSAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKLSAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKLSAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQyNSwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCi0gICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCi0gICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCi0gICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCi0gICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCi0gICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCi0gICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCi0gICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCi0gICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCi0gICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCi0gICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCi0gICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKLSAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCi0gICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCi0gICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCi0gICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCi0gICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKLSAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKLSAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKLSAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKLSAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKLSAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKLSAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKLSAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKLSAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKLSAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKLSAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKLSAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKLSAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKLSAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA4OTk2LCAKLSAgICA3NjgsIDkwMDAsIDkwMDQsIDkwMDksIDkwMTQsIDkwMTksIDkwMjMsIDkwMjksIDkwMzcsIDkwNDMsIDkwNDcsIDkwNTMsIAotICAgIDkwNjMsIDkwNjcsIDkwNzMsIDkwNzgsIDkwODIsIDkwODgsIDkwOTQsIDIxNjEsIDkwOTksIDkxMDEsIDkxMDYsIDkxMTQsIAotICAgIDkxMjMsIDkxMjcsIDkxMzMsIDkxMzgsIDkxNDMsIDkxNDgsIDkxNTMsIDkxNTksIDkxNjQsIDkxNjksIDQwMDYsIDkxNzQsIAotICAgIDkxNzksIDkxODMsIDkxODksIDkxOTQsIDkyMDAsIDkyMDUsIDkyMTAsIDkyMTYsIDkyMjEsIDkxMjgsIDkyMjcsIDkyMzEsIAotICAgIDkyMzgsIDkyNDQsIDkyNDksIDkyNTMsIDYxODMsIDkyNTgsIDkyNjcsIDkyNzIsIDkyNzcsIDgyMTgsIDgyMjUsIDkyODIsIAotICAgIDI4NTMsIDkyODYsIDkyOTEsIDkyOTYsIDkxMzksIDkzMDAsIDkzMDUsIDkxNDQsIDkxNDksIDkzMTAsIDkzMTcsIDkzMjQsIAotICAgIDkzMzAsIDkzMzYsIDkzNDIsIDkzNDcsIDkzNTIsIDkzNTcsIDkxNTQsIDkxNjAsIDkzNjMsIDkzNjksIDkzNzQsIDkzODIsIAotICAgIDkxNjUsIDkzODcsIDk5MCwgOTM5MCwgOTM5OCwgOTQwNCwgOTQxMCwgOTQxOSwgOTQyNywgOTQzMiwgOTQzOCwgOTQ0NiwgCi0gICAgOTQ1MywgOTQ2OCwgOTQ4NSwgOTUwNCwgOTUxMywgOTUyMSwgOTUzNiwgOTU0NywgOTU1NywgOTU2NywgOTU3NSwgOTU4MSwgCi0gICAgOTU5MywgOTYwMiwgOTYxMCwgOTYxNywgOTYyNCwgOTYzMCwgOTYzNSwgOTY0MywgOTY1MywgOTY2MCwgOTY3MCwgOTY4MCwgCi0gICAgOTY5MCwgOTY5OCwgOTcwNSwgOTcxNCwgOTcyNCwgOTczOCwgOTc1MywgOTc2MiwgOTc3MCwgOTc3NSwgOTc3OSwgOTc4OCwgCi0gICAgOTc5NCwgOTc5OSwgOTgwOSwgOTgxOSwgOTgyOSwgOTgzNCwgOTgzOCwgOTg0NywgOTg1MiwgOTg2MiwgOTg3MywgOTg4NiwgCi0gICAgOTg5NCwgOTkwNywgOTkxOSwgOTkyNywgOTkzMiwgOTkzNiwgOTk0MiwgOTk0NywgOTk1NSwgOTk2MywgOTk3MCwgOTk3NSwgCi0gICAgOTk4MywgOTk4OSwgOTk5MiwgOTk5NiwgMTAwMDIsIDEwMDEwLCAxMDAxNSwgMTAwMTksIDEwMDI3LCAxMDAzNiwgMTAwNDQsIAotICAgIDEwMDUwLCAxMDA1NCwgMTAwNjEsIDEwMDcyLCAxMDA3NiwgMTAwNzksIDEwMDg1LCA5MTcwLCAxMDA5MCwgMTAwOTYsIAotICAgIDEwMTAzLCAxMDEwOSwgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKLSAgICAxMDE3MCwgMTAxNzUsIDk0ODEsIDEwMTgwLCAxMDE4NiwgMTAxOTMsIDEwMjAwLCAxMDIwNSwgMTAyMTIsIDEwMjIxLCAKLSAgICAxMDIyNSwgMTAyMzcsIDgyNTYsIDEwMjQxLCAxMDI0NCwgMTAyNDgsIDEwMjUyLCAxMDI1NiwgMTAyNjAsIDEwMjY2LCAKLSAgICAxMDI3MiwgMTAyNzcsIDEwMjgzLCAxMDI4OCwgMTAyOTMsIDEwMjk5LCAxMDMwNCwgMTAzMDksIDg5NTIsIDEwMzE0LCAKLSAgICAxMDMxOCwgMTAzMjIsIDEwMzI2LCAxMDMzMSwgMTAzMzYsIDEwMzQ0LCAxMDM1MCwgMTAzNTQsIDEwMzU4LCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc4LCAxMDM4MywgMTAzODcsIDEwMzkwLCAxMDM5NiwgMTA0MDMsIDEwNDA3LCAxMDQxMCwgMTA0MTUsIAotICAgIDEwNDE5LCA0MDQ1LCAxMDQyNSwgMTA0MzQsIDM2LCAxMDQ0MiwgMTA0NDgsIDEwNDUzLCA4OTY3LCAxMDQ1OCwgMTA0NjMsIAotICAgIDEwNDY3LCAxMDQ3MCwgMTA0ODUsIDEwNTA0LCAxMDUxNiwgMTA1MjksIDEwNTQyLCAxMDU1NSwgMTA1NjksIDEwNTgyLCAKLSAgICAxMDU5NywgMTA2MDQsIDkxNzUsIDEwNjEwLCAxMDYyNCwgMTA2MjksIDEwNjM1LCAxMDY0MCwgMTA2NDgsIDEwNjUzLCAKLSAgICA4MDQwLCAxMDY1OCwgMTA2NjEsIDEwNjY4LCAxMDY3MywgMTA2NzcsIDI4NTgsIDk5OCwgMTA2ODMsIDEwNjg3LCAxMDY5MywgCi0gICAgMTA2OTksIDEwNzA0LCAxMDcxMCwgMTA3MTUsIDkxODQsIDEwNzIxLCAxMDcyNywgMTA3MzIsIDEwNzM3LCAxMDc0NSwgCi0gICAgMTA3NTEsIDEwNzY0LCAxMDc3MiwgMTA3NzksIDkxOTAsIDEwNzg1LCAxMDc5MywgMTA4MDEsIDEwODA4LCAxMDgyMSwgCi0gICAgMTA4MzMsIDEwODQzLCAxMDg1MSwgMTA4NTgsIDEwODY1LCAxMDg3NCwgMTA4ODMsIDEwODkxLCAxMDg5OCwgMTA5MDMsIAotICAgIDEwOTA5LCA5MTk1LCAxMDkxNCwgMTA5MjAsIDkyMDEsIDEwOTI1LCAxMDkyOCwgMTA5MzUsIDEwOTQxLCAxMDk1NCwgODY2OSwgCi0gICAgMTA5NjUsIDEwOTcxLCAxMDk4MCwgMTA5ODgsIDEwOTk1LCAxMTAwMSwgMTEwMDcsIDExMDEyLCAxMTAxNiwgMTEwMjEsIAotICAgIDEwNDc3LCAxMTAyNywgOTIwNiwgMTEwMzQsIDExMDM5LCAxMTA0NiwgMTEwNTIsIDExMDU4LCAxMTA2MywgMTEwNzEsIAotICAgIDExMDc5LCAxMTA4NiwgMTEwOTAsIDExMTA0LCAxMTExNCwgMTExMTksIDExMTIzLCAxMTEzNCwgMTExNDAsIDExMTQ1LCAKLSAgICAxMTE1MCwgOTIxMSwgOTIxNywgMTExNTQsIDExMTU3LCAxMTE2MiwgMTExNzQsIDExMTgxLCAxMTE4NiwgMTExOTAsIAotICAgIDExMTk1LCAxMTE5OSwgMTEyMDYsIDExMjEyLCA5MjIyLCA5MTI5LCAxMTIxOSwgMjg2MywgOCwgMTEyMjYsIDExMjMxLCAKLSAgICAxMTIzNSwgMTEyNDEsIDExMjQ5LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NiwgMTEyODMsIDExMjg3LCAxMTI5OCwgCi0gICAgMTEzMDgsIDExMzE3LCAxMTMyOSwgMTEzMzQsIDExMzM4LCAxMTM0NiwgMTEzNjAsIDExMzY0LCAxMTM2NywgMTEzNzUsIAotICAgIDExMzgyLCAxMTM5MCwgMTEzOTQsIDExNDA1LCAxMTQwOSwgMTE0MTYsIDExNDIxLCAxMTQyNSwgMTE0MzEsIDExNDM2LCAKLSAgICAxMTQ0MCwgMTE0NDYsIDExNDUxLCAxMTQ2MiwgMTE0NjYsIDExNDY5LCAxMTQ3NSwgMTE0ODAsIDExNDg2LCAxMTQ5MiwgCi0gICAgMTE0OTksIDExNTEwLCAxMTUyMCwgMTE1MzAsIDExNTM5LCAxMTU0NiwgMTE1NTUsIDkyMzIsIDkyMzksIDkyNDUsIDkyNTAsIAotICAgIDExNTYxLCAxMTU2NywgOTI1NCwgMTE1NzMsIDExNTc2LCAxMTU4MywgMTE1ODgsIDExNjAzLCAxMTYxOSwgMTE2MzQsIAotICAgIDExNjQyLCAxMTY0OCwgMTE2NTMsIDgzOCwgNDIwLCAxMTY1OCwgMTE2NjYsIDExNjczLCAxMTY3OSwgMTE2ODQsIDExNjg5LCAKLSAgICA5MjU5LCAxMTY5MSwgMTE2OTUsIDExNzAwLCAxMTcwNCwgMTE3MTQsIDExNzE5LCAxMTcyMywgMTE3MzIsIDExNzM2LCAKLSAgICAxMTczOSwgOTI2OCwgMTE3NDYsIDExNzQ5LCAxMTc1NywgMTE3NjQsIDExNzcyLCAxMTc3NiwgMTE3ODMsIDExNzkyLCAKLSAgICAxMTc5NSwgMTE3OTksIDExODAzLCAxMTgwOSwgMTE4MTMsIDExODE3LCAxMTgyMSwgMTE4MjcsIDExODM3LCAxMTg0MSwgCi0gICAgMTE4NDksIDExODUzLCAxMTg2MCwgMTE4NjQsIDExODY5LCAxMTg3MywgMTE4ODAsIDExODg2LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA1LCAxMTkxNSwgMTE5MjAsIDExOTI1LCAxMTkyOSwgMTE5MzcsIDM5MDUsIDExOTQ1LCAxMTk1MCwgOTI3MywgCi0gICAgMTE5NTQsIDExOTU4LCAxMTk2MSwgMTE5NjksIDExOTc2LCAxMTk4MCwgNTk5MSwgMTE5ODQsIDExOTg5LCAxMTk5MywgCi0gICAgMTIwMDQsIDEyMDE0LCAxMjAxOSwgMTIwMjUsIDEyMDI5LCAxMjAzMiwgMTIwNDAsIDEyMDQ1LCAxMjA1MCwgMTIwNTcsIAotICAgIDEyMDYyLCA5Mjc4LCAxMjA2NywgMTIwNzEsIDEyMDc4LCAxNzIyLCA2MTQ1LCAxMjA4MywgMTIwODgsIDEyMDkzLCAxMjA5OCwgCi0gICAgMTIxMDQsIDEyMTA5LCAxMjExNSwgMTIxMjAsIDEyMTI1LCAxMjEzMCwgMTIxMzUsIDEyMTQwLCAxMjE0NSwgMTIxNTAsIAotICAgIDEyMTU1LCAxMjE2MCwgMTIxNjUsIDEyMTcwLCAxMjE3NSwgMTIxODAsIDEyMTg1LCAxMjE5MCwgMTIxOTUsIDEyMjAxLCAKLSAgICAxMjIwNiwgMTIyMTEsIDEyMjE2LCAxMjIyMSwgMTIyMjYsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDEyMjQ4LCAxMjI1MywgCi0gICAgMTIyNTksIDEyMjY0LCAxMjI3MCwgMTIyNzUsIDEyMjgwLCAxMjI4NSwgMTIyOTAsIDEyMjk2LCAxMjMwMSwgMTIzMDYsIAotICAgIDEyMzExLCA3MzcsIDEzOSwgMTIzMTksIDEyMzIzLCAxMjMyOCwgMTIzMzMsIDEyMzM3LCAxMjM0MSwgMTIzNDUsIDEyMzUwLCAKLSAgICAxMjM1NCwgMTIzNTksIDEyMzYzLCAxMjM2NiwgMTIzNzAsIDEyMzc0LCAxMjM4MCwgMTIzODUsIDEyMzk1LCAxMjQwMSwgCi0gICAgMTI0MDksIDEyNDEzLCAxMjQxNywgMTI0MjQsIDEyNDMyLCAxMjQ0MSwgMTI0NTIsIDEyNDU5LCAxMjQ2NiwgMTI0NzAsIAotICAgIDEyNDc5LCAxMjQ4OCwgMTI0OTYsIDEyNTA1LCAxMjUxNCwgMTI1MjMsIDEyNTMyLCAxMjU0MiwgMTI1NTIsIDEyNTYyLCAKLSAgICAxMjU3MiwgMTI1ODIsIDEyNTkxLCAxMjYwMSwgMTI2MTEsIDEyNjIxLCAxMjYzMSwgMTI2NDEsIDEyNjUxLCAxMjY2MSwgCi0gICAgMTI2NzAsIDEyNjgwLCAxMjY5MCwgMTI3MDAsIDEyNzEwLCAxMjcyMCwgMTI3MzAsIDEyNzM5LCAxMjc0OSwgMTI3NTksIAotICAgIDEyNzY5LCAxMjc3OSwgMTI3ODksIDEyNzk5LCAxMjgwOSwgMTI4MTksIDEyODI5LCAxMjgzOCwgMTI4NDgsIDEyODU4LCAKLSAgICAxMjg2OCwgMTI4NzgsIDEyODg4LCAxMjg5OCwgMTI5MDgsIDEyOTE4LCAxMjkyOCwgMTI5MzgsIDEyOTQ3LCAxMjU2LCAKLSAgICAxMjk1MywgMTI5NTYsIDEyOTYwLCAxMjk2NSwgMTI5NzIsIDEyOTc4LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMzAwMSwgCi0gICAgMTMwMDksIDEzMDE0LCAxMzAxOCwgMTMwMjIsIDEzMDI4LCAxMzAzMywgMTMwMzksIDkyODcsIDEzMDQ0LCAxMzA0OSwgCi0gICAgMTMwNTgsIDkyOTIsIDEzMDYzLCAxMzA2NiwgMTMwNzIsIDEzMDgwLCA5Mjk3LCAxMzA4NywgMTMwOTEsIDEzMDk1LCAKLSAgICAxMzA5OSwgMTMxMDksIDEzMTE1LCAxMzEyMSwgMTMxMjYsIDEzMTM1LCAxMzE0MywgMTMxNTAsIDEzMTU3LCAxMzE2MiwgCi0gICAgMTMxNjksIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTkyLCAxMzIwMiwgMTMyMTEsIDEzMjE5LCAxMzIzMCwgMTMyNDIsIAotICAgIDEzMjUyLCAxMzI1NywgMTMyNjEsIDEzMjY2LCAxMzI3MSwgMTMyNzUsIDEzMjgxLCAxMzI4OSwgMTMyOTYsIDEzMzA3LCAKLSAgICAxMzMxMiwgMTMzMjIsIDEzMzI2LCAxMzMyOSwgMTMzMzYsIDEzMzQ2LCAxMzM1NSwgMTMzNjIsIDEzMzY2LCAxMzM3MywgCi0gICAgMTMzNzksIDEzMzg0LCAxMzM4OSwgMTMzOTMsIDEzNDAyLCAxMzQwNywgMTM0MTMsIDEzNDE3LCAxMzQyMiwgMTM0MjYsIAotICAgIDEzNDM1LCAxMzQ0MywgMTM0NTEsIDEzNDU4LCAxMzQ2NiwgMTM0NzgsIDEzNDg5LCAxMzQ5OSwgMTM1MDYsIDEzNTEyLCAKLSAgICAxMzUyMSwgMTM1MzIsIDEzNTQxLCAxMzU1MywgMTM1NjUsIDEzNTc3LCAxMzU4NywgMTM1OTYsIDEzNjA1LCAxMzYxMywgCi0gICAgMTM2MjAsIDEzNjI5LCAxMzYzNywgMTM2NDEsIDEzNjQ3LCAxMzY1MywgMTM2NTgsIDc3NTMsIDEzNjYyLCAxMzY2NCwgCi0gICAgMTM2NjgsIDEzNjczLCAxMzY3OSwgMTM2ODgsIDEzNjkyLCAxMzY5OCwgMTM3MDYsIDEzNzEzLCAxMzcyMiwgMTM3MzEsIAotICAgIDEzNzQwLCAxMzc0OSwgMTM3NTgsIDEzNzY3LCAxMzc3NiwgMTM3ODUsIDEzNzk1LCAxMzgwNSwgMTM4MTQsIDEzODIwLCAKLSAgICAxMzgyNywgMTM4MzQsIDEzODQwLCAxMzg1NCwgMTM4NjEsIDEzODY5LCAxMzg3OCwgMTM4ODQsIDEzODkzLCAxMzkwMiwgCi0gICAgMTM5MTMsIDEzOTIzLCAxMzkzMSwgMTM5MzgsIDEzOTQ2LCAxMzk1NSwgMTM5NjgsIDEzOTc2LCAxMzk4MywgMTM5OTYsIAotICAgIDE0MDAyLCAxNDAwOCwgMTQwMTgsIDE0MDI3LCAxNDAzNiwgMTQwNDEsIDE0MDQ1LCAxNDA1MSwgMTQwNTcsIDE0MDY0LCAKLSAgICA4OTY2LCAxNDA2OSwgMTQwNzQsIDE0MDgxLCAxNDA4NiwgMTIzNzYsIDE0MDkxLCAxNDA5OSwgMTQxMDUsIDE0MTEwLCAKLSAgICAxNDExOCwgMTQxMjYsIDE0MTMzLCAxNDE0MSwgMTQxNDcsIDE0MTU1LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODcsIDE0MTkzLCAxNDE5OCwgMTQyMDIsIDE0MjEzLCAxNDIyMSwgMTQyMjcsIDE0MjMyLCAxNDI0MSwgMTQyNDcsIAotICAgIDE0MjUyLCAxNDI2MSwgMTQyNzUsIDM4NTMsIDE0Mjc5LCAxNDI4NCwgMTQyODksIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIAotICAgIDE0MzA5LCAxNDMxNCwgMTQzMTksIDE0MzI0LCA3NzUyLCAxNDMyOSwgMTQzMzQsIDE0MzM5LCAxNDM0NCwgMTQzNDksIAotICAgIDE0MzUzLCAxNDM1OCwgMTQzNjMsIDE0MzY4LCAxNDM3MywgMTQzNzksIDE0Mzg1LCAxNDM5MCwgMTQzOTQsIDE0Mzk5LCAKLSAgICAxNDQwNCwgMTQ0MDksIDkzMDEsIDE0NDE0LCAxNDQxOSwgMTQ0MjQsIDE0NDI5LCAxNDQzNCwgMTQ0NTEsIDE0NDY5LCAKLSAgICAxNDQ4MSwgMTQ0OTQsIDE0NTExLCAxNDUyNywgMTQ1NDQsIDE0NTU0LCAxNDU3MywgMTQ1ODQsIDE0NTk1LCAxNDYwNiwgCi0gICAgMTQ2MTcsIDE0NjI5LCAxNDY0MCwgMTQ2NTEsIDE0NjY4LCAxNDY3OSwgMTQ2OTAsIDE0Njk1LCA5MzA2LCAxNDcwMCwgCi0gICAgMTQ3MDQsIDIzODEsIDE0NzA4LCAxNDcxMSwgMTQ3MTcsIDE0NzI1LCAxNDczMywgMTQ3MzgsIDE0NzQ2LCAxNDc1NCwgCi0gICAgMTQ3NjEsIDE0NzY2LCAxNDc3MiwgMTQ3NzksIDE0Nzg3LCAxNDc5NCwgMTQ4MDYsIDE0ODE0LCAxNDgxOSwgMTE1OTcsIAotICAgIDE0ODI1LCAxNDgzNCwgMTQ4NDMsIDE0ODUxLCAxNDg1OCwgMTQ4NjQsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODkyLCAKLSAgICAxNDg5OCwgMTQ5MDcsIDE0OTE1LCAxNDkyNSwgMTQ5MzIsIDE0OTM4LCAxNDk0NiwgMTQ5NTIsIDE0OTYwLCAxNDk2NywgCi0gICAgMTQ5ODAsIDE0OTg3LCAxNDk5NiwgMTUwMDUsIDE1MDE0LCAxNTAyMiwgMTUwMzIsIDE1MDM5LCAxNTA0NCwgMzU2MCwgCi0gICAgMTUwNTEsIDE1MDU2LCAxMzcyLCAxNTA2MCwgMTQzMzAsIDE1MDY0LCAxNTA3MCwgMTUwNzQsIDE1MDgyLCAxNTA5NCwgCi0gICAgMTUwOTksIDE1MTA2LCAxNTExMiwgMTUxMTcsIDE1MTI0LCAxNDMzNSwgMTUxMjgsIDE1MTMyLCAxNTEzNiwgMTQzNDAsIAotICAgIDE1MTQwLCAxNDM0NSwgMTUxNDQsIDE1MTUxLCAxNTE1NiwgMTUxNjAsIDE1MTY3LCAxNTE3MSwgMTUxNzksIDE1MTg2LCAKLSAgICAxNTE5MCwgMTUxOTcsIDE1MjE0LCAxNTIyMywgMTUyMjcsIDE1MjMwLCAxNTIzOCwgMTUyNDQsIDE1MjQ5LCAzNjM4LCAKLSAgICAxNTI1MywgMTUyNTUsIDE1MjYzLCAxNTI3MCwgMTUyODAsIDE1MjkyLCAxNTI5NywgMTUzMDMsIDE1MzA4LCAxNTMxMiwgCi0gICAgMTUzMTgsIDE1MzIzLCAxNTMyOSwgMTUzMzIsIDE1MzM5LCAxNTM0NywgMTUzNTQsIDE1MzYwLCAxNTM2NiwgMTUzNzEsIAotICAgIDE1Mzc4LCAxNTM4NCwgMTUzODksIDE1Mzk2LCAxNTQwMCwgMTU0MDYsIDE1NDEwLCAxNTQxNywgMTU0MjMsIDE1NDI5LCAKLSAgICAxNTQzNywgMTU0NDMsIDE1NDQ4LCAxNTQ1NCwgMTU0NjIsIDE1NDcwLCAxNTQ3NiwgMTU0ODIsIDE1NDg3LCAxNTQ5NCwgCi0gICAgMTU0OTksIDE1NTAzLCAxNTUwOSwgMTU1MTQsIDE1NTIxLCAxNTUyNiwgMTU1MzIsIDE1NTM1LCAxNTU0MSwgMTU1NDcsIAotICAgIDE1NTUwLCAxNTU1NCwgMTU1NjYsIDE1NTcyLCAxNTU3NywgMTU1ODQsIDE1NTkwLCAxNTU5NiwgMTU2MDcsIDE1NjE3LCAKLSAgICAxNTYyNiwgMTU2MzQsIDE1NjQxLCAxNTY1MiwgMTU2NjIsIDE1NjcyLCAxNTY4MCwgMTU2ODMsIDE0MzU5LCAxNTY4OCwgCi0gICAgMTU2OTMsIDE0MzY0LCAxNDQ5OSwgMTU3MDEsIDE1NzE0LCAxNTcyOSwgMTU3NDAsIDE0NTE2LCAxNTc1OCwgMTU3NzEsIAotICAgIDE1Nzg0LCAxNTc5NSwgMTA0OTIsIDE1ODA2LCAxNTgxOSwgMTU4MzgsIDE1ODQ5LCAxNTg2MCwgMTU4NzEsIDI2NDksIAotICAgIDE1ODg0LCAxNTg4OCwgMTU4OTYsIDE1OTExLCAxNTkyNiwgMTU5MzcsIDE1OTQ0LCAxNTk1MCwgMTU5NTgsIDE1OTYyLCAKLSAgICAxNTk2OCwgMTU5NzEsIDE1OTgxLCAxNTk4OSwgMTU5OTYsIDE2MDA0LCAxNjAxNCwgMTYwMTksIDE2MDI2LCAxNjAzMSwgCi0gICAgMTYwMzgsIDE2MDQ5LCAxNjA1OSwgMTYwNjUsIDE2MDcwLCAxNjA3NSwgMTQzNjksIDE2MDc5LCAxNjA4NSwgMTYwOTEsIAotICAgIDE2MDk2LCAxNjEwMSwgMTYxMDYsIDE2MTEwLCAxNDM3NCwgMTQzODAsIDE2MTE0LCAxNDM4NiwgMTYxMTksIDE2MTI3LCAKLSAgICAxNjEzNiwgMTYxNDMsIDkxNTAsIDE2MTQ3LCAxNjE0OSwgMTYxNTQsIDE2MTU5LCAxNjE2NSwgMTYxNzAsIDE2MTc1LCAKLSAgICAxNjE4MCwgMTYxODUsIDE2MTg5LCAxNjE5NSwgMTYyMDEsIDE2MjA2LCAxNjIxMiwgMTYyMTcsIDE2MjIyLCAxNjIyOCwgCi0gICAgMTYyMzMsIDE2MjM4LCAxNjI0MywgMTYyNDgsIDE2MjU0LCAxNjI1OSwgMTYyNjQsIDE2MjcwLCAxNjI3NiwgMTYyODEsIAotICAgIDE2Mjg2LCAxNjI5MywgMTYyOTksIDE2MzEwLCAxNjMxNywgMTYzMjIsIDE2MzI2LCAxNjMzMCwgMTYzMzMsIDE2MzQxLCAKLSAgICAxNjM0NiwgMTYzNTMsIDE2MzYwLCAxNjM2NiwgMTYzNzEsIDE2Mzc2LCAxNjM4MywgMTYzOTMsIDE2Mzk4LCAxNjQwNSwgCi0gICAgMTY0MTEsIDE2NDIxLCAxNjQzMSwgMTY0NDUsIDE2NDU5LCAxNjQ3MywgMTY0ODcsIDE2NTAyLCAxNjUxNywgMTY1MzQsIAotICAgIDE2NTUyLCAxNjU2NSwgMTY1NzEsIDE2NTc2LCAxNjU4MSwgMTY1ODUsIDE2NTkwLCAxNjU5OCwgMTY2MDQsIDE2NjA5LCAKLSAgICAxNjYxNCwgMTY2MTgsIDE2NjIzLCAxNjYyNywgMTY2MzIsIDE2NjM2LCAxNjY0NywgMTY2NTMsIDE2NjU4LCAxNjY2MywgCi0gICAgMTY2NzAsIDE2Njc1LCAxNjY3OSwgMTY2ODQsIDE2Njg5LCAxNjY5NSwgMTY3MDIsIDE2NzA4LCAxNjcxMywgMTY3MTcsIAotICAgIDE2NzIzLCAxNjcyOCwgMTY3MzMsIDE2NzM3LCAxNjc0MywgMTY3NDgsIDE2NzUzLCAxNjc2MCwgMTY3NjUsIDEzMTExLCAKLSAgICAxNjc2OSwgMTY3NzQsIDE2Nzc4LCAxNjc4MywgMTY3ODksIDE2Nzk1LCAxNjgwMiwgMTY4MTIsIDE2ODIwLCAxNjgyNywgCi0gICAgMTY4MzIsIDE2ODM2LCAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NywgMTY4NzMsIDE2ODc5LCAxNjg4NCwgMTY4ODksIAotICAgIDE2ODk1LCAxNjkwMCwgMTY5MDYsIDE2OTExLCAxNjkxNywgMTY5MjMsIDE2OTMwLCAxNjkzNiwgMTY5NDEsIDE2OTQ2LCAKLSAgICA5MzQ4LCAxNjk1NSwgMTY5NTgsIDE2OTY0LCAxNjk2OSwgMTY5NzQsIDE2OTg0LCAxNjk5MSwgMTY5OTcsIDE3MDAyLCAKLSAgICAxNzAwNywgMTcwMTMsIDE3MDE4LCAxNzAyNCwgMTcwMjksIDE3MDM1LCAxNzA0MSwgMTcwNDYsIDE3MDU0LCAxNzA2MSwgCi0gICAgMTcwNjYsIDE3MDcxLCAxNzA3NywgMTcwODIsIDE3MDg2LCAxNzA5NSwgMTcxMDYsIDE3MTEzLCAxNzExOCwgMTcxMjYsIAotICAgIDE3MTMyLCAxNzEzOSwgMTcxNDUsIDE3MTUwLCAxNzE1NCwgMTcxNjAsIDE3MTY1LCAxNzE3MCwgMTcxNzUsIDE0NDAsIAotICAgIDc3NzcsIDI4NzcsIDE3MTc5LCAxNzE4MywgMTcxODcsIDE3MTkxLCAxNzE5NSwgMTcxOTksIDE3MjAyLCAxNzIwOSwgCi0gICAgMTcyMTcsIDE0NDAwLCAxNzIyNCwgMTcyMzQsIDE3MjQyLCAxNzI0OSwgMTcyNTcsIDE3MjY3LCAxNzI3NiwgMTcyODksIAotICAgIDE3Mjk0LCAxNzI5OSwgMTczMDcsIDE3MzE0LCAxMzIwNywgMTMyMTYsIDE3MzIxLCAxNzMzMSwgMTczNDYsIDE3MzUyLCAKLSAgICAxNzM1OSwgMTczNjYsIDE3MzcyLCAxNzM4MCwgMTczOTAsIDE3NDAwLCAxNDQwNSwgMTc0MDksIDE3NDE1LCAxNzQyMSwgCi0gICAgMTc0MjksIDE3NDM3LCAxNzQ0MiwgMTc0NTEsIDE3NDU5LCAxNzQ3MSwgMTc0ODEsIDE3NDkxLCAxNzUwMSwgMTc1MTAsIAotICAgIDE3NTIyLCAxNzUzMiwgMTc1NDIsIDE3NTUzLCAxNzU1OCwgMTc1NzAsIDE3NTgyLCAxNzU5NCwgMTc2MDYsIDE3NjE4LCAKLSAgICAxNzYzMCwgMTc2NDIsIDE3NjU0LCAxNzY2NiwgMTc2NzgsIDE3Njg5LCAxNzcwMSwgMTc3MTMsIDE3NzI1LCAxNzczNywgCi0gICAgMTc3NDksIDE3NzYxLCAxNzc3MywgMTc3ODUsIDE3Nzk3LCAxNzgwOSwgMTc4MjAsIDE3ODMyLCAxNzg0NCwgMTc4NTYsIAotICAgIDE3ODY4LCAxNzg4MCwgMTc4OTIsIDE3OTA0LCAxNzkxNiwgMTc5MjgsIDE3OTQwLCAxNzk1MSwgMTc5NjMsIDE3OTc1LCAKLSAgICAxNzk4NywgMTc5OTksIDE4MDExLCAxODAyMywgMTgwMzUsIDE4MDQ3LCAxODA1OSwgMTgwNzEsIDE4MDgyLCAxODA5NCwgCi0gICAgMTgxMDYsIDE4MTE4LCAxODEzMCwgMTgxNDIsIDE4MTU0LCAxODE2NiwgMTgxNzgsIDE4MTkwLCAxODIwMiwgMTgyMTMsIAotICAgIDE4MjI1LCAxODIzNywgMTgyNDksIDE4MjYxLCAxODI3MywgMTgyODUsIDE4Mjk3LCAxODMwOSwgMTgzMjEsIDE4MzMzLCAKLSAgICAxODM0NCwgMTgzNTYsIDE4MzY4LCAxODM4MCwgMTgzOTIsIDE4NDA0LCAxODQxNiwgMTg0MjgsIDE4NDQwLCAxODQ1MiwgCi0gICAgMTg0NjQsIDE4NDc1LCAxODQ4NywgMTg0OTksIDE4NTExLCAxODUyMywgMTg1MzYsIDE4NTQ5LCAxODU2MiwgMTg1NzUsIAotICAgIDE4NTg4LCAxODYwMSwgMTg2MTQsIDE4NjI2LCAxODYzOSwgMTg2NTIsIDE4NjY1LCAxODY3OCwgMTg2OTEsIDE4NzA0LCAKLSAgICAxODcxNywgMTg3MzAsIDE4NzQzLCAxODc1NiwgMTg3NjgsIDE4NzgxLCAxODc5NCwgMTg4MDcsIDE4ODIwLCAxODgzMywgCi0gICAgMTg4NDYsIDE4ODU5LCAxODg3MiwgMTg4ODUsIDE4ODk4LCAxODkxMCwgMTg5MjMsIDE4OTM2LCAxODk0OSwgMTg5NjIsIAotICAgIDE4OTc1LCAxODk4OCwgMTkwMDEsIDE5MDE0LCAxOTAyNywgMTkwNDAsIDE5MDUyLCAxOTA2NSwgMTkwNzgsIDE5MDkxLCAKLSAgICAxOTEwNCwgMTkxMTcsIDE5MTMwLCAxOTE0MywgMTkxNTYsIDE5MTY5LCAxOTE4MiwgMTkxOTQsIDE5MjA3LCAxOTIyMCwgCi0gICAgMTkyMzMsIDE5MjQ2LCAxOTI1OSwgMTkyNzIsIDE5Mjg1LCAxOTI5OCwgMTkzMTEsIDE5MzI0LCAxOTMzNiwgMTkzNDcsIAotICAgIDE5MzYwLCAxOTM3MywgMTkzODYsIDE5Mzk5LCAxOTQxMiwgMTk0MjUsIDE5NDM4LCAxOTQ1MSwgMTk0NjQsIDE5NDc3LCAKLSAgICAxOTQ4OSwgMTk1MDIsIDE5NTE1LCAxOTUyOCwgMTk1NDEsIDE5NTU0LCAxOTU2NywgMTk1ODAsIDE5NTkzLCAxOTYwNiwgCi0gICAgMTk2MTksIDE5NjMxLCAxOTY0NCwgMTk2NTcsIDE5NjcwLCAxOTY4MywgMTk2OTYsIDE5NzA5LCAxOTcyMiwgMTk3MzUsIAotICAgIDE5NzQ4LCAxOTc2MSwgMTk3NzMsIDE5Nzg2LCAxOTc5OSwgMTk4MTIsIDE5ODI1LCAxOTgzOCwgMTk4NTEsIDE5ODY0LCAKLSAgICAxOTg3NywgMTk4OTAsIDE5OTAzLCAxOTkxNSwgMTk5MjgsIDE5OTQxLCAxOTk1NCwgMTk5NjcsIDE5OTgwLCAxOTk5MywgCi0gICAgMjAwMDYsIDIwMDE5LCAyMDAzMiwgMjAwNDUsIDIwMDU3LCAyMDA3MCwgMjAwODMsIDIwMDk2LCAyMDEwOSwgMjAxMjIsIAotICAgIDIwMTM1LCAyMDE0OCwgMjAxNjEsIDIwMTc0LCAyMDE4NywgMjAxOTksIDIwMjEyLCAyMDIyNSwgMjAyMzgsIDIwMjUxLCAKLSAgICAyMDI2NCwgMjAyNzcsIDIwMjkwLCAyMDMwMywgMjAzMTYsIDIwMzI5LCAyMDM0MSwgMjAzNTQsIDIwMzY3LCAyMDM4MCwgCi0gICAgMjAzOTMsIDIwNDA2LCAyMDQxOSwgMjA0MzIsIDIwNDQ1LCAyMDQ1OCwgMjA0NzEsIDIwNDgzLCAyMDQ5NiwgMjA1MDksIAotICAgIDIwNTIyLCAyMDUzNSwgMjA1NDgsIDIwNTYxLCAyMDU3NCwgMjA1ODcsIDIwNjAwLCAyMDYxMywgMjA2MjUsIDIwNjM4LCAKLSAgICAyMDY1MSwgMjA2NjQsIDIwNjc3LCAyMDY5MCwgMjA3MDMsIDIwNzE2LCAyMDcyOSwgMjA3NDIsIDIwNzU1LCAyMDc2NywgCi0gICAgMjA3NzgsIDIwNzg2LCAyMDc5NCwgMjA4MDEsIDIwODA3LCAyMDgxMSwgMjA4MTcsIDIwODIzLCAyMDgzMSwgMjA4MzcsIAotICAgIDIwODQyLCAyMDg0NiwgMjA4NTUsIDkxNTUsIDIwODY2LCAyMDg3MywgMjA4ODEsIDIwODg4LCAyMDg5NSwgMTA5NDgsIAotICAgIDIwOTAyLCAyMDkxMSwgMjA5MTYsIDIwOTIxLCA3ODA1LCAyMDkyOCwgMjA5MzMsIDIwOTM2LCAyMDk0MSwgMjA5NDksIAotICAgIDIwOTU2LCAyMDk2MywgMjA5NzAsIDIwOTc2LCAyMDk4NSwgMjA5OTQsIDIxMDAwLCAyMTAwOSwgMjEwMTMsIDIxMDE5LCAKLSAgICAyMTAyNCwgMjEwMzQsIDIxMDQxLCAyMTA0NywgMjEwNTUsIDIxMDYxLCAyMTA2OCwgMjEwNzgsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTgsIDIxMTAyLCAyMTEwNywgMjExMTMsIDIxMTIxLCAyMTEyNSwgMjExMzUsIDE0NDE1LCAyMTE0NCwgMjExNTAsIAotICAgIDIxMTU0LCAyMTE2MywgMTQ0MjAsIDIxMTY5LCAyMTE3NiwgMjExODcsIDIxMTk1LCAyMTIwNCwgMjEyMTIsIDg5MzEsIAotICAgIDIxMjIwLCAyMTIyNSwgMjEyMzEsIDIxMjM2LCAyMTI0MCwgMjEyNDQsIDIxMjQ4LCA5NjM5LCAyMTI1MywgMjEyNjEsIAotICAgIDIxMjY4LCAyMTI3NywgMjEyODQsIDIxMjkxLCAxMDg3OCwgMjEyOTgsIDIxMzA0LCAyMTMwOCwgMjEzMTQsIDIxMzIxLCAKLSAgICAyMTMyNywgMjEzMzUsIDIxMzQxLCAyMTM0OCwgMjEzNTQsIDIxMzYwLCAyMTM2OSwgMjEzNzMsIDIxMzgxLCAyMTM5MCwgCi0gICAgMjEzOTcsIDIxNDAyLCAyMTQwNiwgMjE0MTcsIDIxNDIyLCAyMTQyNywgMjE0MzIsIDIxNDQ1LCA3OTk1LCAyMTQ0OSwgCi0gICAgMjE0NTUsIDIxNDYzLCAyMTQ2NywgMjE0NzQsIDIxNDgzLCAyMTQ4OCwgMTQ2OTEsIDIxNDk2LCAyMTUwMCwgMjE1MTIsIAotICAgIDIxNTE3LCAyMTUyMSwgMjE1MjQsIDIxNTMwLCAyMTUzNiwgMjE1NDEsIDIxNTQ1LCAyMTU0OCwgMjE1NTksIDIxNTY0LCAKLSAgICA5MzgzLCAyMTU3MSwgMjE1NzYsIDkzODgsIDIxNTgxLCAyMTU4NiwgMjE1OTEsIDIxNTk2LCAyMTYwMSwgMjE2MDYsIAotICAgIDIxNjExLCAyMTYxNiwgMjE2MjEsIDIxNjI2LCAyMTYzMSwgMjE2MzYsIDIxNjQyLCAyMTY0NywgMjE2NTIsIDIxNjU3LCAKLSAgICAyMTY2MiwgMjE2NjcsIDIxNjcyLCAyMTY3NywgMjE2ODIsIDIxNjg3LCAyMTY5MywgMjE2OTksIDIxNzA0LCAyMTcwOSwgCi0gICAgMjE3MTQsIDIxNzE5LCAyMTcyNCwgMjE3MjksIDIxNzM0LCAyMTczOSwgMjE3NDQsIDIxNzUwLCAyMTc1NSwgMjE3NjAsIAotICAgIDIxNzY1LCAyMTc3MSwgMjE3NzcsIDIxNzgyLCAyMTc4NywgMjE3OTIsIDIxNzk3LCAyMTgwMiwgMjE4MDcsIDIxODEyLCAKLSAgICAyMTgxNywgMjE4MjMsIDIxODI4LCAyMTgzMywgMjE4MzgsIDIxODQzLCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2MywgCi0gICAgMTM2OCwgMTI5LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAxMzExNywgMTI0NzYsIDIxODk2LCAKLSAgICAyMTkwMSwgMjE5MDUsIDIxOTEwLCAyMTkxNCwgMjE5MTksIDIxOTIzLCAyMTkyOSwgMjE5MzQsIDIxOTM4LCAyMTk0MiwgCi0gICAgMjE5NTAsIDIxOTU0LCAyMTk1OCwgMjE5NjMsIDIxOTY4LCAyMTk3MiwgMjE5NzgsIDIxOTgzLCAyMTk4NywgMjE5OTIsIAotICAgIDIxOTk3LCAyMjAwMSwgMjIwMDgsIDIyMDE1LCAyMjAyMiwgMjIwMjYsIDIyMDMwLCAyMjAzNSwgMjIwMzksIDIyMDQyLCAKLSAgICAyMjA0OCwgMjIwNjEsIDIyMDY2LCAyMjA3NSwgMjIwODAsIDk0MjgsIDIyMDg1LCAyMjA4OCwgMjcxMiwgMjcxNywgMjIwOTIsIAotICAgIDIyMDk4LCAyMjEwNCwgNzIwOSwgMjIxMDksIDIyMTE0LCAyMjExOSwgMjIxMjUsIDIyMTMwLCAxMzkwOSwgMjIxMzUsIAotICAgIDIyMTQwLCAyMjE0NSwgMjIxNTAsIDIyMTU2LCAyMjE2MSwgMjIxNjYsIDIyMTcyLCAyMjE3NywgMjIxODEsIDIyMTg2LCAKLSAgICAyMjE5MSwgMjIxOTYsIDIyMjAxLCAyMjIwNSwgMjIyMTAsIDIyMjE0LCAyMjIxOSwgMjIyMjQsIDIyMjI5LCAyMjIzNCwgCi0gICAgMjIyMzgsIDIyMjQzLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgMjIyNjcsIDI4ODYsIDIyMTgyLCAyMjI3MSwgCi0gICAgMjIyNzksIDIyMjg2LCA5NzMzLCAyMjI5OCwgMjIzMDYsIDIyMTg3LCAyMjMxMywgMjIzMTgsIDIyMzI2LCAyMjE5MiwgCi0gICAgMjIzMzEsIDIyMzM2LCAyMjM0NCwgMjIzNDksIDIyMTk3LCAyMjM1NCwgMjIzNTksIDIyMzYzLCAyMjM2OSwgMjIzNzcsIAotICAgIDIyMzgwLCAyMjM4NywgMjIzOTEsIDIyMzk1LCAyMjQwMSwgMjI0MDgsIDIyNDEzLCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQxNywgCi0gICAgMjI0MjMsIDIyNDI5LCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIAotICAgIDIyNDY2LCAyMjQ2OSwgMjI0NzUsIDIyNDgyLCAyMjQ5MCwgMjI0OTYsIDIyNTAyLCAyMjUwNywgMjI1MTIsIDIyNTE2LCAKLSAgICAxMzgyOSwgMTM4MzYsIDIyNTIxLCAyMjUzMywgMjI1MzYsIDIyNTQzLCAxNjM2MiwgMjI1NTAsIDIyNTU4LCAyMjU2OSwgCi0gICAgMjI1NzgsIDIyNTkxLCAyMjYwMSwgMjI2MTUsIDIyNjI3LCAyMjY0MSwgMjI2NTMsIDIyNjYzLCAyMjY3NSwgMjI2ODEsIAotICAgIDIyNjk2LCAyMjcyMCwgMjI3MzgsIDIyNzU3LCAyMjc3MCwgMjI3ODQsIDIyODAyLCAyMjgxOCwgMjI4MzUsIDIyODUzLCAKLSAgICAyMjg2NCwgMjI4ODMsIDIyOTAwLCAyMjkyMCwgMjI5MzgsIDIyOTUwLCAyMjk2NCwgMjI5NzgsIDIyOTkwLCAyMzAwNywgCi0gICAgMjMwMjYsIDIzMDQ0LCAyMzA1NiwgMjMwNzQsIDIzMDkzLCAxNDU1OSwgMjMxMDYsIDIzMTI2LCAyMzEzOCwgMTA1MjMsIAotICAgIDIzMTUwLCAyMzE1NSwgMjMxNjAsIDIzMTY1LCAyMzE3MSwgMjMxNzYsIDIzMTgwLCAyMzE4NywgMjM5OCwgMjMxOTEsIAotICAgIDIzMTk3LCAyMzIwMSwgMjMyMDQsIDIzMjA4LCAyMzIxNiwgMjMyMjIsIDIyMjE1LCAyMzIyNiwgMjMyMzUsIDIzMjQ2LCAKLSAgICAyMzI1MiwgMjMyNTgsIDIzMjY3LCAyMzI3NSwgMjMyODIsIDIzMjg3LCAyMzI5MSwgMjMyOTgsIDIzMzA0LCAyMzMxMywgCi0gICAgMjMzMjEsIDIzMzI4LCAyMzMzOCwgMjMzNDcsIDIzMzU3LCAyMzM2MiwgMjMzNzEsIDIzMzgwLCAyMzM5MSwgMjM0MDIsIAotICAgIDM5NjMsIDIzNDEyLCAyMzQxNiwgMjM0MjYsIDIzNDM0LCAyMzQ0NCwgMjM0NTUsIDIzNDYwLCAyMzQ3MCwgMjM0NzgsIAotICAgIDIzNDg1LCAyMzQ5MSwgMjM0OTgsIDIzNTAzLCAyMjIyNSwgMjM1MDcsIDIzNTE2LCAyMzUyMCwgMjM1MjMsIDIzNTI4LCAKLSAgICAyMzUzNSwgMjM1NDQsIDIzNTUyLCAyMzU2MCwgMjM1NzAsIDIzNTc5LCAyMzU4NSwgMjM1OTEsIDIyMjMwLCAyMjIzNSwgCi0gICAgMjM1OTUsIDIzNjA1LCAyMzYxNSwgMjM2MjUsIDIzNjMzLCAyMzY0MCwgMjM2NTAsIDIzNjU4LCAyMzY2NiwgMjM2NzIsIAotICAgIDIzNjgwLCA5MzAsIDIzNjg5LCAxNDc1MCwgNTQyLCAyMzcwMywgMjM3MTIsIDIzNzIwLCAyMzczMSwgMjM3NDIsIDIzNzUyLCAKLSAgICAyMzc2MSwgMjM3NzMsIDIzNzgyLCAyMzc5MSwgMjM3OTcsIDIzODA2LCAyMzgxNSwgMjM4MjUsIDIzODMzLCAyMzg0MSwgCi0gICAgOTM2MCwgMjM4NDcsIDIzODUwLCAyMzg1NCwgMjM4NTksIDIzODY0LCA5ODQ4LCAyMjI0OCwgMjIyNTMsIDIzODcyLCAKLSAgICAyMzg3OCwgMjM4ODQsIDIzODg5LCAyMzg5NCwgMjM4OTgsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIyLCAzNTI1LCAKLSAgICAyMzkzMCwgMjM5MzUsIDIzOTQwLCAyMzk0NCwgMjM5NDgsIDk5MjgsIDIzOTU1LCAyMzk2MywgMjM5NzcsIDIzOTg0LCAKLSAgICAyMzk5MCwgOTkzNywgOTk0MywgMjM5OTgsIDI0MDA2LCAyNDAxMywgMjQwMTgsIDI0MDIzLCAyMjI1OCwgMjQwMjksIAotICAgIDI0MDQwLCAyNDA0NCwgMjQwNDksIDI2MDEsIDI0MDU0LCAyNDA2NSwgMjQwNzEsIDI0MDc2LCAyNDA4MCwgMjQwODQsIAotICAgIDI0MDg3LCAyNDA5NCwgMjQxMDEsIDI0MTA4LCAyNDExNCwgMjQxMTgsIDIyMjYzLCAyNDEyMywgMjQxMjcsIDI0MTMxLCAKLSAgICAxMDM3LCAyNDEzNiwgMjQxNDEsIDI0MTQ2LCAyNDE1MSwgMjQxNTYsIDI0MTYxLCAyNDE2NiwgMjQxNzEsIDI0MTc2LCAKLSAgICAyNDE4MSwgMjQxODYsIDI0MTkxLCAyNDE5NiwgMjQyMDEsIDI0MjA3LCAyNDIxMiwgMjQyMTcsIDI0MjIyLCAyNDIyNywgCi0gICAgMjQyMzIsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUzLCAyNDI1OCwgMjQyNjMsIDI0MjY4LCAyNDI3MywgMjQyNzgsIAotICAgIDI0Mjg0LCAyNDI5MCwgMjQyOTUsIDI0MzAxLCAyNDMwNiwgMjQzMTEsIDUsIDI0MzE3LCAyNDMyMSwgMjQzMjUsIDI0MzI5LCAKLSAgICAyNDMzNCwgMjQzMzgsIDI0MzQyLCAyNDM0NiwgMjQzNTAsIDI0MzU1LCAyNDM1OSwgMjQzNjQsIDI0MzY4LCAyNDM3MSwgCi0gICAgMjQzNzUsIDI0MzgwLCAyNDM4NCwgMjQzODksIDI0MzkzLCAyNDM5NywgMjQ0MDEsIDI0NDA2LCAyNDQxMCwgMjQ0MTQsIAotICAgIDI0NDI0LCAyNDQyOSwgMjQ0MzMsIDI0NDM3LCAyNDQ0MiwgMjQ0NDcsIDI0NDU2LCAyNDQ2MSwgMjQ0NjYsIDI0NDcwLCAKLSAgICAyNDQ3NCwgMjQ0ODcsIDI0NDk5LCAyNDUwOCwgMjQ1MTcsIDI0NTIzLCAyNDUyOCwgMjQ1MzIsIDI0NTM2LCAyNDU0NiwgCi0gICAgMjQ1NTUsIDI0NTYzLCAyNDU2OSwgMjQ1NzQsIDI0NTc4LCAyNDU4NSwgMjQ1OTUsIDI0NjA0LCAyNDYxMiwgMjQ2MjAsIAotICAgIDI0NjI3LCAyNDYzNSwgMjQ2NDQsIDI0NjUzLCAyNDY2MSwgMjQ2NjYsIDI0NjcwLCAyNDY3NCwgMjQ2NzcsIDI0Njc5LCAKLSAgICAyNDY4MywgMjQ2ODcsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIDI0NzA1LCAyNDcwOCwgMjQ3MTIsIDI0NzE1LCAyNDcxOSwgCi0gICAgMjQ3MjIsIDI0NzI1LCAyNDcyOSwgMjQ3MzUsIDI0NzM5LCAyNDc0MywgMjQ3NDcsIDI0NzUyLCAyNDc1NywgMjQ3NjIsIAotICAgIDI0NzY2LCAyNDc2OSwgMjQ3NzQsIDI0NzgwLCAyNDc4NSwgMjQ3OTEsIDI0Nzk2LCAyNDgwMCwgMjQ4MDQsIDI0ODA4LCAKLSAgICAyNDgxMywgMjQ4MTcsIDI0ODIyLCAyNDgyNiwgMjQ4MzAsIDI0ODM3LCAyNDg0MSwgMjQ4NDQsIDI0ODQ4LCAyNDg1NCwgCi0gICAgMjQ4NjAsIDI0ODY0LCAyNDg2OCwgMjQ4NzMsIDI0ODgwLCAyNDg4NiwgMjQ4OTAsIDI0ODk5LCAyNDkwMywgMjQ5MDcsIAotICAgIDI0OTEwLCAyNDkxNiwgMjQ5MjEsIDI0OTI3LCAxNDg5LCAxNzkxLCAyNDkzMiwgMjQ5MzcsIDI0OTQyLCAyNDk0NywgCi0gICAgMjQ5NTIsIDI0OTU3LCAyNDk2MiwgMjE0OCwgMjE5NCwgMjQ5NjcsIDI0OTcwLCAyNDk3NCwgMjQ5NzgsIDI0OTgzLCAKLSAgICAyNDk4NywgMjQ5OTEsIDI0OTk0LCAyNDk5OSwgMjUwMDQsIDI1MDA4LCAyNTAxMSwgMjUwMTYsIDI1MDIwLCAyNTAyNSwgCi0gICAgMjUwMjksIDE0NzYyLCAyNTAzNCwgMjUwMzcsIDI1MDQwLCAyNTA0NCwgMjUwNDksIDI1MDUzLCAyNTA2NiwgMjUwNzAsIAotICAgIDI1MDczLCAyNTA4MSwgMjUwOTAsIDI1MDk3LCAyNTEwMiwgMjUxMDgsIDI1MTE0LCAyNTEyMiwgMjUxMjksIDI1MTM2LCAKLSAgICAyNTE0MCwgMjUxNDQsIDI1MTQ4LCAyNTE1MywgMjUxNTgsIDI1MTYyLCAyNTE3MCwgMjUxNzUsIDI1MTg3LCAyNTE5OCwgCi0gICAgMjUyMDMsIDI1MjA3LCAyNTIxMSwgMjUyMTcsIDI1MjIyLCAyNTIyNywgMjUyMzEsIDI1MjM1LCAyNTIzOCwgMjUyNDQsIAotICAgIDc5MTUsIDIzMTYsIDI1MjQ4LCAyNTI1MywgMjUyNjksIDk0NzUsIDI1Mjg5LCAyNTI5OCwgMjUzMTQsIDI1MzE4LCAyNTMyMSwgCi0gICAgMjUzMjcsIDI1MzM3LCAyNTM0MywgMjUzNTIsIDI1MzY3LCAyNTM3OSwgMjUzOTAsIDI1Mzk4LCAyNTQwNywgMjU0MTMsIAotICAgIDI1NDIyLCAyNTQzMiwgMjU0NDMsIDI1NDU0LCAyNTQ2MywgMjU0NzAsIDI1NDc5LCAyNTQ4NywgMjU0OTQsIDI1NTAyLCAKLSAgICAyNTUwOSwgMjU1MTYsIDI1NTI5LCAyNTUzNiwgMjU1NDIsIDI1NTQ3LCAyNTU1NiwgMjU1NjIsIDI1NTY3LCAyNTU3NSwgCi0gICAgMjU1ODIsIDIzNDM2LCAyNTU5NCwgMjU2MDYsIDI1NjIwLCAyNTYyOCwgMjU2MzUsIDI1NjQ3LCAyNTY1NiwgMjU2NjUsIAotICAgIDI1NjczLCAyNTY4MSwgMjU2ODksIDI1Njk2LCAyNTcwNSwgMjU3MTMsIDI1NzIzLCAyNTczMiwgMjU3NDIsIDI1NzUxLCAKLSAgICAyNTc2MCwgMjU3NjgsIDI1NzczLCAyNTc3NywgMjU3ODAsIDI1Nzg0LCAyNTc4OCwgMjU3OTIsIDI1Nzk2LCAyNTgwMCwgCi0gICAgMjU4MDYsIDI1ODEyLCAyNTgyMCwgMTQ4MDcsIDI1ODI3LCAyNTgzMiwgMjU4MzksIDI1ODQ1LCAyNTg1MiwgMTQ4MTUsIAotICAgIDI1ODU5LCAyNTg2MiwgMjU4NzQsIDI1ODgyLCAyNTg4OCwgMjU4OTMsIDI1ODk3LCA5ODc4LCAyNTkwOCwgMjU5MTgsIAotICAgIDI1OTI3LCAyNTkzNCwgMjU5MzgsIDE0ODIwLCAyNTk0MSwgMjU5NDgsIDI1OTUyLCAyNTk1OCwgMjU5NjEsIDI1OTY4LCAKLSAgICAyNTk3NCwgMjU5ODEsIDI1OTg3LCAyNTk5MSwgMjU5OTYsIDI2MDAwLCAyNjAwOSwgMjYwMTYsIDI2MDIyLCA3OTU2LCAKLSAgICAyNjAyOSwgMjYwMzcsIDI2MDQ0LCAyNjA1MCwgMjYwNTUsIDI2MDYxLCAyNjA2NywgMjYwNzUsIDI2MDc5LCAyNjA4MiwgCi0gICAgMjYwODQsIDI1Nzg1LCAyNjA5MywgMjYwOTksIDI2MTA5LCAyNjExNCwgMjYxMjEsIDI2MTI3LCAyNjEzMiwgMjYxMzcsIAotICAgIDI2MTQyLCAyNjE0NiwgMjYxNTEsIDI2MTU4LCAyNjE2NywgMjYxNzEsIDI2MTc4LCAyNjE4NywgMjYxOTMsIDI2MTk4LCAKLSAgICAyNjIwNCwgMjYyMDksIDI2MjE2LCAyNjIyNywgMjYyMzIsIDI2MjM2LCAyNjI0NiwgMjYyNTIsIDI2MjU2LCAyNjI2MSwgCi0gICAgMjYyNzEsIDI2MjgwLCAyNjI4NCwgMjYyOTEsIDI2Mjk5LCAyNjMwNiwgMjYzMTIsIDI2MzE3LCAyNjMyNSwgMjYzMzIsIAotICAgIDI2MzQ0LCAyNjM1MywgMjYzNTcsIDEzMDUzLCAyNjM2NSwgMjYzNzUsIDI2Mzc5LCAyNTA3NywgMjYzOTAsIDI2Mzk1LCAKLSAgICAyNjM5OSwgMjY0MDYsIDI2NDEzLCAyMTk3NCwgMjU3MTAsIDI2NDE4LCAyNjQyMiwgMjY0MjUsIDIyODcwLCAyNjQzMCwgCi0gICAgMjY0NDQsIDI2NDYwLCAyNjQ3OCwgMjY0OTcsIDI2NTE0LCAyNjUzMiwgMjI4ODksIDI2NTQ5LCAyNjU2OSwgMjI5MDYsIAotICAgIDI2NTgxLCAyNjU5MywgMTU3NDUsIDI2NjA1LCAyMjkyNiwgMjY2MTksIDI2NjMxLCAxMDUzNiwgMjY2NDUsIDI2NjUwLCAKLSAgICAyNjY1NSwgMjY2NjAsIDI2NjY2LCAyNjY3MiwgMjY2NzgsIDI2NjgyLCAyNjY4OSwgMjY2OTQsIDI2NzA0LCAyNjcxMCwgCi0gICAgMTAxODMsIDI2NzE2LCAyNjcxOCwgMjY3MjMsIDI2NzMxLCAyNjczNSwgMjYxNTQsIDI2NzQxLCAyNjc0OCwgMTE1MjQsIAotICAgIDExNTM0LCAyNjc1NSwgMjY3NjUsIDI2NzcwLCAyNjc3NCwgMjY3NzcsIDI2NzgzLCAyNjc5MSwgMjY4MDMsIDI2ODEzLCAKLSAgICAyNjgyOSwgMjY4NDIsIDI2ODU2LCAxNTc2MywgMjY4NzAsIDI2ODc3LCAyNjg4MSwgMjY4ODQsIDI2ODg5LCAyNjg5MywgCi0gICAgMjY5MDAsIDI2OTA3LCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5NDAsIDI2OTQ4LCAyNjk1NywgMjY5NjIsIAotICAgIDk1NzIsIDI2OTY2LCAyNjk2OSwgMjY5NzIsIDI2OTc3LCAyNjk4NCwgMjY5ODksIDI3MDA1LCAyNzAxMywgMjcwMjEsIAotICAgIDk0MjMsIDI3MDI5LCAyNzAzNCwgMjcwMzgsIDI3MDQ0LCAyNzA1MCwgMjcwNTMsIDI3MDU5LCAyNzA3MSwgMjcwNzksIAotICAgIDI3MDg2LCAyNzA5MiwgMjcwOTksIDI3MTEwLCAyNzEyNCwgMjcxMzcsIDI3MTQ2LCAyNzE1NSwgMjcxNjcsIDI3MTc4LCAKLSAgICAyNzE4OCwgMjcxOTcsIDI3MjA2LCAyNzIxNCwgMjcyMjUsIDc5MzgsIDI3MjMyLCAyNzIzOCwgMjcyNDMsIDI3MjQ5LCAKLSAgICAyNzI1NiwgMjcyNjYsIDI3Mjc2LCAyNzI4NSwgMjcyOTEsIDI3Mjk4LCAyNzMwMywgMjczMTAsIDI3MzE4LCAyNzMyNiwgCi0gICAgMjczMzgsIDYyNDYsIDI3MzQ1LCAyNzM1NCwgMjczNjIsIDI3MzY4LCAyNzM3NCwgMjczNzksIDI3MzgzLCAyNzM4NiwgCi0gICAgMjczOTIsIDI3Mzk5LCAyNzQwNCwgMjc0MDksIDI3NDEzLCAyNzQyNSwgMjc0MzYsIDI3NDQ1LCAyNzQ1MywgMTQ5NDcsIAotICAgIDI3NDU4LCAyNzQ2NCwgMjc0NzAsIDExNTE3LCA4NjM1LCAyNzQ3NSwgMjc0NzksIDI3NDgzLCAyNzQ4NiwgMjc0ODksIAotICAgIDI3NDk1LCAyNzUwMywgMjc1MTEsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIDI3NTI3LCAyNzUzNiwgMjc1NDAsIDI3NTQ4LCAKLSAgICAyNzU1OSwgMjc1NjMsIDI3NTY5LCAyNzU3NSwgMjc1NzksIDI3NTg1LCAyNzU5MywgMjc2MTUsIDI3NjM5LCAyNzY0NiwgCi0gICAgMjc2NTMsIDI3NjU5LCAyNzY2NywgMjc2NzMsIDI3Njc4LCAyNzY4OSwgMjc3MDcsIDI3NzE0LCAyNzcyMiwgMjc3MjYsIAotICAgIDI3NzM1LCAyNzc0OCwgMjc3NTYsIDI3NzY4LCAyNzc3OSwgMjc3ODksIDI3ODAzLCAyNzgxMiwgMjc4MjAsIDI3ODMyLCAKLSAgICA5NDkyLCAyNzg0MywgMjc4NTQsIDI3ODY2LCAyNzg3NiwgMjc4ODUsIDI3ODkwLCAyNzg5NCwgMjc5MDIsIDI3OTEyLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI0LCAyNzkyNywgMjc5MzUsIDI3OTQzLCAyNzk1MiwgMjc5NjIsIDI3OTcxLCAyNzk3NywgCi0gICAgMjc5OTEsIDI2NjMsIDI4MDEzLCAyODAyNCwgMjgwMzMsIDI4MDQzLCAyODA1NSwgMjgwNjQsIDI4MDczLCAyODA4MywgCi0gICAgMjgwOTEsIDI4MDk5LCAyODEwOCwgMjgxMTMsIDI4MTI0LCAyODEyOSwgMjgxNDAsIDI4MTQ0LCAyODE1NCwgMjgxNjMsIAotICAgIDI4MTcxLCAyODE4MSwgMjgxOTEsIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIzLCAyODIzMCwgMjgyMzksIDI4MjQzLCAKLSAgICAyODI1MSwgMjgyNTgsIDI4MjY2LCAyODI3MywgMjgyODQsIDI4Mjk5LCAyODMwNiwgMjgzMTIsIDI4MzIyLCAyODMzMSwgCi0gICAgMjgzMzcsIDI4MzQxLCAyODM0OCwgMjgzNTIsIDE0MDMxLCAyODM1OCwgMjgzNjIsIDI4MzY3LCAyODM3NCwgMjgzNzgsIAotICAgIDI4MzgyLCAyODM5MCwgMjgzOTgsIDI4NDA0LCAyODQxMywgMjg0MjAsIDI4NDI1LCAyODQzMCwgMjg0NDAsIDIzNTA1LCAKLSAgICAyODQ0NCwgMjg0NDcsIDI4NDUyLCAyODQ1NywgMjg0NjIsIDI4NDY3LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4NywgCi0gICAgMjg0OTMsIDI4NDk4LCAyODUwMywgMjg1MDksIDEyMTgsIDcwNCwgMjg1MTQsIDI4NTIzLCAyMzY0LCAyODUzMCwgMjg1MzUsIAotICAgIDI4NTM5LCAyODU0NSwgMTI2NywgNTQ2LCAzMTgsIDI4NTUwLCAyODU1OSwgMjg1NjcsIDI4NTc2LCAyODU4NCwgMjg1OTUsIAotICAgIDI4NjA0LCAyODYxMiwgMjg2MTYsIDI4NjE5LCAyODYyNywgMjg2MzUsIDI4NjQwLCAxNDc3NSwgMjg2NDYsIDI4NjUyLCAKLSAgICAyODY1OCwgNTg3MiwgMjg2NjMsIDI4NjY3LCAyODY3MywgMjg2NzcsIDI4Njg0LCAxNDU1LCAyODY5MCwgMjg2OTcsIDk1NzksIAotICAgIDI4NzAxLCAyODcxMSwgMjg3MTksIDI4NzI1LCAyODczNCwgMjg3NDIsIDI4NzQ4LCAyODc1NiwgMjg3NjMsIDExMTEwLCAKLSAgICAyODc2OSwgMjg3NzYsIDI4NzgxLCAyODc4OCwgMTQ5NiwgMjE0NywgMjg3OTQsIDI4ODAwLCAyODgwNywgMjg4MTgsIAotICAgIDI4ODI5LCAyODgzNywgMjg4NDQsIDI4ODU0LCAyODg2MywgMjg4NzEsIDI4ODgwLCAyODg4NywgMjg4OTQsIDI4OTA3LCAKLSAgICAyODkxOCwgMTI3MiwgMjg5MzcsIDI4OTQyLCAyODk1MCwgMzU3NSwgMjg5NTQsIDI4OTU5LCAyODk2MywgMTQ1OSwgMjQ3MDYsIAotICAgIDI4OTczLCAyODk3NywgMjg5ODIsIDI4OTg2LCAzNDkzLCAyODk5MiwgMjkwMDAsIDI5MDA3LCAyOTAxOCwgMjkwMjYsIAotICAgIDI5MDM0LCAzNTc2LCAyNzksIDI5MDM5LCAyOTA0NywgMjkwNTUsIDI5MDYyLCAyOTA2OCwgMjkwNzMsIDIyMTYsIDI5MDgwLCAKLSAgICAyOTA4NiwgMjU5OTIsIDI2MjIyLCAyOTA5MiwgMTA2LCAyOTA5NiwgMjkxMDAsIDI5MTA2LCA2MTUsIDkzMjgsIDI5MTExLCAKLSAgICAyOTExOCwgMjkxMjQsIDIzMjcsIDI5MTI4LCAyOTEzMiwgMTUxODcsIDI5MTM1LCAyOTE0MCwgMjkxNDcsIDI5MTUzLCAKLSAgICAyOTE1OCwgMjkxNjYsIDI5MTczLCAyOTE3OSwgMjIzNTEsIDI5MTgzLCAyOTE4NywgMzY0NiwgMTY2MjUsIDI5MTkxLCAKLSAgICAyOTE5NiwgMjkxOTksIDI5MjA3LCAyOTIxNSwgMjkyMjAsIDI5MjIzLCAyOTIzMCwgMjkyNDAsIDI5MjUyLCAyOTI1NywgCi0gICAgMjkyNjEsIDI5MjY5LCAyOTI3NiwgMjkyODIsIDI5Mjg5LCAyOTI5NiwgMjkyOTksIDI5MzAzLCAyOTMwNywgMTQ2MywgCi0gICAgMjkzMTcsIDI5MzE5LCAyOTMyNCwgMjkzMzAsIDI5MzM2LCAyOTM0MSwgMjkzNDYsIDI5MzUxLCAyOTM1NiwgMjkzNjEsIAotICAgIDI5MzY2LCAyOTM3MSwgMjkzNzYsIDI5MzgxLCAyOTM4NiwgMjkzOTEsIDI5Mzk2LCAyOTQwMSwgMjk0MDYsIDI5NDEyLCAKLSAgICAyOTQxOCwgMjk0MjQsIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYxLCAyOTQ2NiwgCi0gICAgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODgsIDI5NDkzLCAyOTQ5OCwgMjk1MDMsIDI5NTA5LCAyOTUxNCwgMjk1MjAsIAotICAgIDI5NTI1LCAyOTUzMCwgMjk1MzUsIDI5NTQwLCAyOTU0NiwgMjk1NTEsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAKLSAgICAyOTU3NywgMjk1ODIsIDI5NTg3LCAyOTU5MiwgMjk1OTcsIDI5NjAyLCAyOTYwOCwgMjk2MTQsIDI5NjIwLCAyOTYyNSwgCi0gICAgMjk2MzAsIDI5NjM1LCAyOTY0MCwgMjk2NDYsIDI5NjUyLCAyOTY1OCwgMjk2NjQsIDI5NjcwLCAyOTY3NiwgMjk2ODEsIAotICAgIDI5Njg3LCAyOTY5MiwgMjk2OTcsIDI5NzAyLCAyOTcwNywgMjk3MTMsIDI0NDMsIDI5NzE4LCAyNDUwLCAyNDU3LCAyNzU0LCAKLSAgICAyOTcyMywgMjQ2MywgMjQ3MywgMjk3MjksIDI5NzMzLCAyOTczOCwgMjk3NDMsIDI5NzQ5LCAyOTc1NCwgMjk3NTksIAotICAgIDI5NzYzLCAyOTc2OCwgMjk3NzQsIDI5Nzc5LCAyOTc4NCwgMjk3ODksIDI5Nzk1LCAyOTgwMCwgMjk4MDQsIDI5ODA4LCAKLSAgICAyOTgxMywgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzMsIDI5ODM5LCAyOTg0NSwgMjk4NTAsIDI5ODU0LCAyOTg1OSwgCi0gICAgMjk4NjUsIDI5ODY5LCAyOTg3NCwgMjk4NzksIDI5ODg0LCAyOTg4OSwgMjk4OTMsIDI5ODk2LCAyOTkwMSwgMjk5MDYsIAotICAgIDI5OTExLCAyOTkxNiwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5MzgsIDI5OTQzLCAyOTk0NywgMjk5NTIsIDI5OTU3LCAKLSAgICAyOTk2MiwgMjk5NjcsIDI5OTcyLCAyOTk3NiwgMjk5ODEsIDI5OTg2LCAyOTk5MSwgMjk5OTUsIDI5OTk5LCAzMDAwMywgCi0gICAgMzAwMDgsIDMwMDE2LCAzMDAyMSwgMzAwMjcsIDMwMDMzLCAzMDAzOSwgMzAwNDQsIDMwMDQ4LCAzMDA1MSwgMzAwNTYsIAotICAgIDMwMDYxLCAzMDA2NSwgMzAwNzAsIDMwMDc0LCAzMDA3OSwgMzAwODMsIDMwMDg2LCAzMDA5MSwgMTczMDIsIDMwMDk2LCAKLSAgICAzMDEwMSwgMzAxMDYsIDMwMTE0LCAyMTI4MCwgMjg2OTQsIDkwMjYsIDMwMTE5LCAzMDEyNCwgMzAxMjgsIDMwMTMzLCAKLSAgICAzMDEzNywgMzAxNDEsIDMwMTQ2LCAzMDE1MCwgMzAxNTMsIDMwMTU2LCAzMDE2MCwgMzAxNjUsIDMwMTY5LCAzMDE3NywgCi0gICAgMzAxODEsIDMwMTg0LCAzMDE4OSwgMzAxOTMsIDMwMTk3LCAzMDIwMiwgMzAyMDcsIDMwMjExLCAzMDIxNywgMzAyMjIsIAotICAgIDMwMjI3LCAzMDIzNCwgMzAyNDEsIDMwMjQ1LCAzMDI0OCwgMzAyNTQsIDMwMjYzLCAzMDI3MCwgMzAyNzgsIDMwMjg1LCAKLSAgICAzMDI4OSwgMzAyOTQsIDMwMjk4LCAzMDMwMiwgMzAzMDgsIDMwMzE0LCAzMDMxOCwgMzAzMjQsIDMwMzI5LCAzMDMzNCwgCi0gICAgMzAzMzgsIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzYsIDMwMzgyLCAzMDM4OCwgMzAzOTQsIAotICAgIDMwNDAwLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAzMDQyNSwgMzA0MzEsIDMwNDM4LCAzMDQ0NCwgMzA0NTAsIDMwNDU2LCAKLSAgICAzMDQ2MiwgMzA0NjgsIDMwNDc0LCAzMDQ4MCwgMzA0ODYsIDMwNDkyLCAxMTQxOCwgMzA0OTgsIDMwNTAzLCAzMDUwOCwgCi0gICAgMzA1MTEsIDMwNTE5LCAzMDUyNCwgMzA1MzMsIDMwNTM5LCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OCwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTgzLCAzMDU5MCwgMzA1OTcsIDMwNjAzLCAzMDYwOSwgMzA2MTQsIDE2MzAzLCAKLSAgICAzMDYyMSwgMzA2MjcsIDMwNjM0LCAzMDY0MCwgMzA2NDYsIDMwNjUxLCAzMDY1OSwgMzA2NjQsIDE2MDgyLCAzMDY2OCwgCi0gICAgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2ODksIDMwNjk0LCAzMDY5OCwgMzA3MDMsIDMwNzA4LCAzMDcxNCwgMzA3MTksIAotICAgIDMwNzI0LCAzMDcyOCwgMzA3MzMsIDMwNzM4LCAzMDc0MiwgMzA3NDcsIDMwNzUyLCAzMDc1NywgMzA3NjEsIDMwNzY2LCAKLSAgICAzMDc3MSwgMzA3NzYsIDMwNzgwLCAzMDc4NCwgMTUyOTMsIDMwNzg4LCAzMDc5NywgMzA4MDMsIDMwODA5LCAzMDgxOCwgCi0gICAgMzA4MjYsIDMwODM1LCAzMDg0MywgMzA4NDgsIDMwODUyLCAzMDg1OSwgMzA4NjUsIDMwODY5LCAzMDg3MiwgMzA4NzcsIAotICAgIDMwODg2LCAzMDg5NCwgMzA4OTksIDE0OTUsIDMwOTA1LCAzMDkwOCwgMzA5MTIsIDIyNDI0LCAyMjQzMCwgMzA5MTgsIAotICAgIDMwOTIyLCAzMDkzMywgMzA5NDQsIDMwOTU1LCAzMDk2NywgMzA5NzQsIDMwOTgxLCAzMDk4NiwgMzA5OTAsIDU5MDksIDc1NSwgCi0gICAgMjEyNzksIDMwOTk4LCAzMTAwMywgMzEwMDcsIDMxMDEyLCAzMTAxNiwgMzEwMjIsIDMxMDI3LCAzMTAzMywgMzEwMzgsIAotICAgIDMxMDQ0LCAzMTA0OSwgMzEwNTUsIDMxMDYwLCAzMTA2NiwgMzEwNzIsIDMxMDc4LCAzMTA4MywgMzEwMzksIDMxMDQ1LCAKLSAgICAzMTA4NywgMzEwOTIsIDMxMDk4LCAzMTEwMywgMzExMDksIDMxMTE0LCAzMTEyMCwgMzExMjUsIDMxMDUwLCAxMDQyMSwgCi0gICAgMzExMjksIDMxMDYxLCAzMTA2NywgMzEwNzMsIDI4MzEsIDM0MjMsIDMxMTM1LCAzMTEzOCwgMzExNDQsIDMxMTUwLCAKLSAgICAzMTE1NiwgMzExNjMsIDMxMTY5LCAzMTE3NSwgMzExODEsIDMxMTg3LCAzMTE5MywgMzExOTksIDMxMjA1LCAzMTIxMSwgCi0gICAgMzEyMTcsIDMxMjIzLCAzMTIyOSwgMzEyMzUsIDMxMjQyLCAzMTI0OCwgMzEyNTQsIDMxMjYwLCAzMTI2NiwgMzEyNzIsIAotICAgIDMxMjc1LCAzMTI4MCwgMzEyODMsIDMxMjkwLCAzMTI5OCwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI0LCAKLSAgICAzMTMyOCwgMzEzMzMsIDMxMzM5LCAzMTM0NCwgMzEzNTAsIDMxMzU1LCAzMTM2MSwgMzEzNjYsIDMxMzcyLCAzMTM3OCwgCi0gICAgMzEzODIsIDMxMzg3LCAzMTM5MiwgMzEzOTcsIDMxNDAyLCAzMTQwNiwgMzE0MTEsIDMxNDE2LCAzMTQyMSwgMzE0MjcsIAotICAgIDMxNDMzLCAzMTQzOSwgMzE0NDUsIDMxNDUwLCAzMTQ1NCwgMzE0NTcsIDMxNDYzLCAzMTQ2OSwgMzE0NzgsIDMxNDg2LCAKLSAgICAzMTQ5MywgMzE0OTgsIDMxNTAyLCAzMTUwNiwgMzE1MTEsIDE1MTQ2LCAzMTUxNiwgMzE1MjQsIDMxNTMwLCAzNjgzLCAKLSAgICAxMzc3LCAzMTUzNSwgMzE1MzksIDgwMDUsIDMxNTQ1LCAzMTU1MSwgMzE1NTgsIDgwMTQsIDMxNTYyLCAzMTU2OCwgMzE1NzUsIAotICAgIDMxNTgxLCAzMTU5MCwgMzE1OTgsIDMxNjEwLCAzMTYxNCwgMzE2MjEsIDMxNjI3LCAzMTYzMSwgMzE2MzQsIDMxNjQzLCAKLSAgICAzMTY1MSwgMzEwNDAsIDMxNjU2LCAzMTY2NiwgMzE2NzYsIDMxNjg2LCAzMTY5MiwgMzE2OTcsIDMxNzA3LCAzMTcxMiwgCi0gICAgMzE3MjUsIDMxNzM5LCAzMTc1MCwgMzE3NjIsIDMxNzc0LCAzMTc4OCwgMzE4MDEsIDMxODEzLCAzMTgyNSwgMTQ2MDAsIAotICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODUzLCAzMTg1NywgMzE4NjEsIDE3ODAsIDI3MTc2LCAzMTg2NSwgMzE4NzAsIAotICAgIDMxMDg4LCAzMTg3NSwgMzE4NzgsIDMxODgzLCAzMTg4OCwgMzE4OTMsIDMxODk5LCAzMTkwNSwgMTAwOTgsIDMxOTEwLCAKLSAgICAzMTkxNywgMTU2OTcsIDMxOTIzLCAzMTkyOCwgMzE5MzMsIDMxOTM3LCAzMTk0MiwgMzE5NDcsIDMxMDkzLCAzMTk1MiwgCi0gICAgMzE5NTcsIDMxOTYyLCAzMTk2OCwgMzEwOTksIDMxOTczLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NywgMzIwMDMsIAotICAgIDMyMDA5LCAzMjAyMCwgMzIwMjUsIDMyMDMyLCAzMjAzOSwgMzIwNDYsIDMyMDU0LCAzMjA2MywgMzIwNzIsIDMyMDc4LCAKLSAgICAzMjA4NCwgMzIwOTIsIDMxMTA0LCAzMjA5NywgMzIxMDMsIDMyMTA5LCAzMTExMCwgMzIxMTQsIDMyMTE5LCAzMjEyNywgCi0gICAgMzIxMzUsIDMyMTQxLCAzMjE0OCwgMzIxNTQsIDMyMTYxLCAzMjE2OCwgMzIxNzQsIDMyMTgyLCAzMjE5MiwgMzIxOTksIAotICAgIDMyMjA0LCAzMjIxMCwgMzIyMTUsIDMyMjIwLCAzMjIyNywgMzIyMzYsIDMyMjQ0LCAzMjI0OSwgMzIyNTUsIDMyMjYyLCAKLSAgICAzMjI3MCwgMzIyNzYsIDMyMjgxLCAzMjI4NywgMzIyOTYsIDI3OTU3LCAzMjMwMywgMzIzMDcsIDMyMzEyLCAzMjMyMSwgCi0gICAgMzIzMjYsIDMyMzMxLCAzMjMzNiwgMTI0MDUsIDMyMzQ0LCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2MywgMzIzNjgsIAotICAgIDMyMzczLCAzMjM4MCwgMzIzODUsIDMyMzkwLCAzMjM5NSwgMzExMTUsIDIxMjE2LCAzMjQwMSwgMjUxOSwgMjQ0LCAzMjQwNCwgCi0gICAgMzI0MDcsIDMyNDExLCAzMjQxNSwgMzI0MjUsIDMyNDMzLCAzMjQzNywgMzI0NDQsIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIAotICAgIDMyNDY0LCAzMjQ3MiwgMzI0ODAsIDMyNDg0LCAzMjQ4OCwgMzI0OTEsIDMyNDk4LCAzMjUwMiwgMzI1MDYsIDMyNTEzLCAKLSAgICAzMjUyMSwgMzEwNTEsIDMyNTI4LCAzMjUzNiwgMTAxNTgsIDY2NCwgMzA4LCAzMjU0OCwgMzI1NTMsIDMyNTU4LCAzMjU2NCwgCi0gICAgMzI1NjksIDMyNTc0LCAzNzA0LCAzMjU3OSwgMzI1ODIsIDMyNTg3LCAzMjU5MiwgMzI1OTcsIDMyNjAyLCAzMjYwNywgCi0gICAgMzI2MTQsIDIyNTI5LCAzMjYxOSwgMzI2MjQsIDMyNjI5LCAzMjYzNCwgMzI2MzksIDMyNjQ1LCAzMjY1MCwgMzI2NTYsIAotICAgIDMxMjg2LCAzMjY2MiwgMzI2NjcsIDMyNjczLCAzMjY3OSwgMzI2ODksIDMyNjk0LCAzMjY5OSwgMzI3MDMsIDMyNzA4LCAKLSAgICAzMjcxMywgMzI3MTgsIDMyNzIzLCAzMjczNiwgMzI3NDEsIDIyMzAyLCAxNjcwNSwgMzcxMCwgMzI3NDUsIDMyNzUwLCAKLSAgICAzMjc1NSwgMzI3NjEsIDMyNzY2LCAzMjc3MSwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTEsIDMyNzk2LCAzMjgwMSwgCi0gICAgMTM4MiwgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI0LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NSwgCi0gICAgMzI4NTEsIDMyODU2LCAzMjg2MCwgMzI4NjQsIDMyODY5LCAzMjg3NCwgMzI4NzksIDMyODgzLCAzMjg5MSwgMzI4OTUsIAotICAgIDMyOTAxLCAzMjkwNSwgMzI5MTIsIDE2NDk4LCAzMTA2MiwgMzI5MTgsIDMyOTI1LCAzMjkzMywgMzI5NDAsIDMyOTQ2LCAKLSAgICAzMjk1OSwgMzI5NzEsIDMyOTc3LCAzMjk4MSwgMjc3MywgMzI5ODUsIDMyOTg5LCAzMjQ5MywgMzI5OTgsIDMzMDA5LCAKLSAgICAzMzAxNCwgMzMwMTksIDMzMDI0LCAzMzAyOCwgMzMwMzMsIDIyNDM1LCAzMzAzNywgMzMwNDEsIDMzMDQ2LCAzMTA2OCwgCi0gICAgMjEzMDAsIDMzMDUwLCAzMzA1NSwgMzMwNjEsIDMzMDY2LCAzMzA3MCwgMzMwNzQsIDMzMDc3LCAzMzA4MSwgMzMwODcsIAotICAgIDMzMDk4LCAzMzExMCwgMzEwNzQsIDMzMTE1LCAzMzExOCwgMzMxMjIsIDM0NywgMzMxMjcsIDMzMTMyLCAzMzEzNywgCi0gICAgMzMxNDIsIDMzMTQ3LCAzMzE1MiwgMzMxNTgsIDMzMTYzLCAzMzE2OCwgMzMxNzQsIDMzMTc5LCAzMzE4NSwgMzMxOTAsIAotICAgIDMzMTk2LCAzMzIwMSwgMzMyMDYsIDMzMjExLCAzMzIxNiwgMzMyMjEsIDMzMjI2LCAzMzIzMSwgMzMyMzYsIDMzMjQyLCAKLSAgICAzMzI0NywgMzMyNTIsIDMzMjU3LCAzMzI2MiwgMzMyNjcsIDMzMjcyLCAzMzI3NywgMzMyODMsIDMzMjg5LCAzMzI5NCwgCi0gICAgMzMyOTksIDMzMzA0LCAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIAotICAgIDMzMzQ5LCAzMzM1NCwgMzMzNTksIDMzMzY0LCAzMzM2OSwgMzMzNzQsIDMzMzc5LCAzMzM4NSwgMzEzLCAyNiwgMzMzOTAsIAotICAgIDMzMzk0LCAzMzM5OCwgMzM0MDYsIDMzNDEwLCAzMzQxNCwgMzM0MTcsIDMzNDIwLCAzMzQyMiwgMzM0MjcsIDMzNDMxLCAKLSAgICAzMzQzNiwgMzM0NDAsIDMzNDQ1LCAzMzQ0OSwgMzM0NTQsIDMzNDU4LCAzMzQ2MSwgMzM0NjMsIDMzNDY3LCAzMzQ3MiwgCi0gICAgMzM0NzYsIDMzNDg3LCAzMzQ5MCwgMzM0OTIsIDMzNDk2LCAzMzUwOCwgMzM1MTcsIDMzNTIxLCAzMzUyNSwgMzM1MzEsIAotICAgIDMzNTM2LCAzMzU0NSwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NjUsIDMzNTcwLCAzMzU3NywgMzM1ODIsIDMzNTg4LCAKLSAgICAzMzU5MywgMzM1OTcsIDMzNjA0LCAyNTcxOCwgMjU3MjgsIDMzNjA4LCAzMzYxMywgMzM2MTgsIDMzNjIzLCAzMzYzMCwgCi0gICAgMzM2MzQsIDMzNjQxLCA4MTEzLCAzMzY0NywgMzM2NTYsIDMzNjY0LCAzMzY3OSwgMzM2OTMsIDMzNzAxLCAzMzcxMiwgCi0gICAgMzM3MjEsIDMzNzI2LCA3MjI3LCAzMzczNiwgMzM3NDEsIDMzNzQ2LCAzMzc1MCwgMzM3NTMsIDMzNzU3LCAzMzc2MiwgCi0gICAgMzM3NjYsIDMzNzczLCAzMzc3OCwgMzM3ODMsIDg5MTIsIDMzNzkzLCAzMzc5NSwgMzM3OTgsIDMzODAyLCAzMzgwOCwgCi0gICAgMzM4MTIsIDMzODE3LCAzMzgyMiwgMzM4MjgsIDMzODMzLCAzMzgzOSwgMzM4NDQsIDMzODU0LCAzMzg2MywgMzM4NzEsIAotICAgIDMzODc2LCAzMzg4MiwgMzM4ODcsIDMzODk0LCAzMzg5OCwgMzM5MDYsIDMzOTEzLCAzMzkyNiwgMzM5MzQsIDMzOTM4LCAKLSAgICAzMzk0OCwgMzM5NTMsIDMzOTU3LCAzMzk2NSwgMzM5NzMsIDMzOTc3LCAzMzk4NiwgMzM5OTIsIDMzOTk3LCAzNDAwNSwgCi0gICAgMzQwMTUsIDM0MDI0LCAzNDAzMywgMzQwNDIsIDM0MDUzLCAzNDA2MSwgMzQwNzIsIDM0MDgxLCAzNDA4OCwgMzQwOTQsIAotICAgIDM0MDk5LCAzNDExMCwgMzQxMTUsIDM0MTE5LCAzNDEyMiwgMzQxMjYsIDM0MTM0LCAzNDE0MCwgMzQxNDgsIDM0MTU1LCAKLSAgICAzNDE2MSwgMzQxNjYsIDM0MTcyLCAyNDE4LCAzNDE3NiwgMzQxNzgsIDM0MTgzLCAzNDE4OCwgMzQxOTMsIDM0MTk2LCAKLSAgICAzNDE5OCwgMzQyMDIsIDM0MjA1LCAzNDIxMiwgMzQyMTYsIDk4OTEsIDM0MjIwLCAzNDIyNiwgMzQyMzYsIDM0MjQxLCAKLSAgICAzNDI0NywgMzQyNTEsIDM0MjU2LCAzNDI2OSwgMjYxMDQsIDM0Mjc1LCAzNDI4NCwgMTc0NzUsIDM0MjkxLCAzNDMwMCwgCi0gICAgMzE2NzIsIDM0MzA4LCAzNDMxMywgMzQzMTcsIDM0MzI1LCAzNDMzMiwgMzQzMzcsIDM0MzQxLCAzNDM0NiwgMzQzNTAsIAotICAgIDM0MzU4LCAzNDM2NCwgMzQzNzAsIDM0Mzc1LCAzNDM3OSwgMzQzODIsIDM0Mzg3LCAzNDQwMCwgMzQ0MTYsIDIyOTk2LCAKLSAgICAzNDQzMywgMzQ0NDUsIDM0NDYyLCAzNDQ3NCwgMzQ0ODgsIDIzMDEzLCAyMzAzMiwgMzQ1MDAsIDM0NTEyLCAyNjgwLCAKLSAgICAzNDUyNiwgMzQ1MzEsIDM0NTM2LCAzNDU0MSwgMzQ1NDUsIDM0NTUyLCAzNDU2NCwgMzQ1NzAsIDM0NTczLCAzNDU4NCwgCi0gICAgMzQ1OTUsIDM0NjAwLCAzMjA4OSwgNjk1LCAzNDYwNCwgMzQ2MDgsIDM0NjEyLCAzNDYxNSwgMzQ2MjAsIDM0NjI1LCAKLSAgICAzNDYzMSwgMzQ2MzYsIDM0NjQxLCAzNDY0NywgMzQ2NTMsIDM0NjU4LCAzNDY2MiwgMzQ2NjcsIDM0NjcyLCAzNDY3NywgCi0gICAgMzQ2ODEsIDM0Njg0LCAzNDY5MCwgMzQ2OTUsIDM0NzAwLCAzNDcwNSwgMzQ3MDksIDM0NzE0LCAzNDcyMCwgMzQ3MjgsIAotICAgIDI2MzM3LCAzNDczMywgMzQ3MzgsIDM0NzQ1LCAzNDc1MSwgMzQ3NTcsIDM0NzYyLCAzNDc3MCwgMjI1MzgsIDM0Nzc3LCAKLSAgICAzNDc4MiwgMzQ3ODcsIDM0NzkyLCAzNDc5NiwgMzQ3OTksIDM0ODA0LCAzNDgwOCwgMzQ4MTIsIDM0ODE5LCAzNDgyNSwgCi0gICAgMzQ4MzEsIDM0ODM3LCAzNDg0NCwgMzQ4NDksIDM0ODU1LCAzMzk2OCwgMzQ4NTksIDM0ODYzLCAzNDg2OCwgMzQ4ODEsIAotICAgIDM0ODg2LCAzNDg5MiwgMzQ5MDAsIDM0OTA3LCAzNDkxNSwgMzQ5MjUsIDM0OTMxLCAzNDkzNywgMzQ5NDMsIDM0OTQ3LCAKLSAgICAzNDk1NiwgMzQ5NjQsIDM0OTcxLCAzNDk3NiwgMzQ5ODEsIDEwNDQ0LCAzNDk4NiwgMzQ5OTQsIDM1MDAxLCAzNTAwNywgCi0gICAgMzUwMTcsIDM1MDIyLCAzNTAyOCwgMzUwMzYsIDM2MDgsIDM1MDQzLCAzNTA1MCwgMzYxNCwgMzUwNTQsIDM1MDU5LCAKLSAgICAzNTA3MCwgMzUwNzcsIDM1MDgzLCAzNTA5MiwgMzUwOTYsIDQwMTUsIDM1MDk5LCAzNTEwNiwgMzUxMTIsIDM1MTE4LCAKLSAgICAzNTEyNiwgMzUxMzYsIDI5MDYzLCAzNTE0MywgMzUxNTEsIDM1MTU2LCAzNTE2MiwgMzUxNjcsIDI1OTY0LCAzNTE3MywgCi0gICAgMzUxODAsIDM1MTg2LCAzNTE5NSwgMjM2NzcsIDM1MjAyLCAzNTIwNywgMzUyMTEsIDM1MjE5LCAzNTIyNywgOTYwNywgCi0gICAgNTg5NSwgMzUyMzQsIDM1MjM4LCAzNTI0MCwgMzUyNDQsIDM1MjQ5LCAzNTI1MSwgMzUyNTcsIDM1MjYyLCAzNTI2NywgCi0gICAgMzUyNzQsIDMyNjEwLCAzNTI4MCwgMzUyODUsIDM1Mjg5LCAzNTI5NCwgMzUyOTgsIDM1MzA3LCAzNTMxMSwgMzUzMTcsIAotICAgIDM1MzI0LCAzNTMzMCwgMzUzMzcsIDM1MzQyLCAzNTM1MSwgMzUzNTYsIDM1MzYwLCAzNTM2NSwgMzUzNzIsIDM1MzgwLCAKLSAgICAzNTM4OCwgMzUzOTMsIDIxMzU2LCAzNTM5NywgMzU0MDAsIDM1NDA0LCAzNTQwOCwgMzU0MTIsIDM1NDE1LCAzNTQxNywgCi0gICAgMzU0MjUsIDM1NDI5LCAzNTQzNiwgMzU0NDAsIDM1NDQ0LCAzNTQ1MiwgMzU0NTksIDM1NDY5LCAzNTQ3MywgMzU0NzcsIAotICAgIDM1NDg1LCAzNTQ5MywgMzU0OTksIDM1NTA0LCAzNTUxMywgMTMzNTcsIDM1NTE5LCAzNTUyOCwgMzU1MzMsIDM1NTQwLCAKLSAgICAzNTU0OCwgMzU1NTYsIDM1NTY0LCAzNTU3MSwgMzU1NzgsIDM1NTg1LCAzNTU5MiwgMzU1OTksIDM1NjA0LCAzNTYxMCwgCi0gICAgMzU2MjcsIDM1NjM1LCAzNTY0NSwgMzU2NTMsIDM1NjYwLCA0MDcsIDM1NjY0LCAzNTY3MCwgMzU2NzQsIDM1Njc5LCAKLSAgICAzMzcxNywgMzU2ODUsIDM1Njg4LCAzNTY5MiwgMzU3MDAsIDM2MTksIDM1NzA4LCAzNTcxNCwgMzU3MjAsIDM1NzI5LCAKLSAgICAzNTczOSwgMzU3NDYsIDM1NzUyLCAzNjI1LCAzNjMxLCAzNTc2MSwgMzU3NjgsIDM1Nzc2LCAzNTc4MSwgMzU3ODUsIAotICAgIDM1NzkyLCAzNTgwMCwgMzU4MDcsIDM1ODEzLCAzNTgyMiwgMzU4MzIsIDM1ODM4LCAzNTg0NiwgMzU4NTUsIDM1ODYyLCAKLSAgICAzNTg3MCwgMzU4NzcsIDIyMDMyLCAzNTg4MSwgMzU4ODgsIDM1ODk0LCAzNTkwNCwgMzU5MTMsIDM1OTI0LCAzNTkyOCwgCi0gICAgMzU5MzgsIDM1OTQ0LCAzNTk1MSwgMzU5NTksIDM1OTY4LCAzNTk3NywgMzU5ODcsIDM1OTk4LCAzNjAwNSwgMzYwMTAsIAotICAgIDM2MDE3LCAzMDI5LCAzNjAyNSwgMzYwMzEsIDM2MDM2LCAzNjA0MiwgMzYwNDgsIDM2MDUzLCAzNjA2NiwgMzYwNzksIAotICAgIDM2MDkyLCAzNjA5OSwgMzYxMDUsIDM2MTEzLCAzNjEyMSwgMzYxMjYsIDM2MTMwLCAxNDY5LCAzNjEzNCwgMzYxMzksIAotICAgIDM2MTQ0LCAzNjE0OSwgMzYxNTQsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc1LCAzNjE4MCwgMzYxODUsIDM2MTkwLCAKLSAgICAzNjE5NSwgMzYyMDEsIDM2MjA3LCAzNjIxMiwgMzYyMTcsIDM2MjIzLCAzNjIyOCwgMzYyMzMsIDM2MjM4LCAzNjI0NCwgCi0gICAgMzYyNDksIDM2MjU0LCAzNjI1OSwgMzYyNjQsIDM2MjcwLCAzNjI3NSwgMzYyODAsIDM2Mjg2LCAzNjI5MSwgMzYyOTYsIAotICAgIDM2MzAxLCAzNjMwNiwgMzYzMTEsIDM2MzE3LCAzNjMyMiwgMzYzMjgsIDM2MzMzLCAzNjMzOSwgMzYzNDQsIDM2MzQ5LCAKLSAgICAzNjM1NCwgMzYzNjAsIDM2MzY2LCAzNjM3MiwgMzYzNzgsIDM2Mzg0LCAzNjM5MCwgMzYzOTYsIDM2NDAyLCAzNjQwNywgCi0gICAgMzY0MTIsIDM2NDE4LCAzNjQyMywgMzY0MjgsIDM2NDMzLCAzNjQzOCwgMzY0NDMsIDM2NDQ4LCAzNjQ1MywgMzY0NTksIAotICAgIDM2NDY0LCAzNjQ2OSwgMzY0NzUsIDM2NDgxLCAxMDEsIDM2NDg2LCAzNjQ4OCwgMzY0OTIsIDM2NDk2LCAzNjUwMCwgCi0gICAgMzY1MDUsIDM2NTA5LCA5NTI4LCAzNjUxMywgMzY1MTksIDE3NDEsIDYyODAsIDM2NTI1LCAzNjUyOCwgMzY1MzMsIDM2NTM3LCAKLSAgICAzNjU0MiwgMzY1NDYsIDM2NTUwLCAzNjU1NSwgMTAyNDUsIDM2NTU5LCAzNjU2MywgMzY1NjcsIDM2NTcxLCAxNTM4NSwgCi0gICAgMzY1NzYsIDM2NTgwLCAzNjU4NSwgMzY1OTAsIDM2NTk1LCAzNjU5OSwgMzY2MDYsIDI2MTI4LCAzNjYxMiwgMzY2MTUsIAotICAgIDM2NjE5LCAzNjYyNCwgMzY2MzAsIDM2NjM0LCAzNjY0MiwgMzY2NDgsIDM2NjUzLCAzNjY1NywgMzY2NjMsIDM2NjY3LCAKLSAgICAzNjY3MSwgMzQ2MiwgMzQ2NywgMjkyNTUsIDM2Njc0LCAzNjY3OCwgMzY2ODIsIDM2Njg2LCAzNjY5MCwgMzY2OTgsIAotICAgIDM2NzA1LCAzNjcwOSwgMzY3MTYsIDM2NzIxLCAzMTcsIDM2NzI2LCAzNjczMCwgMzY3MzYsIDM2NzQ4LCAzNjc1NCwgCi0gICAgMzY3NjAsIDM2NzY0LCAzNjc3MCwgMzY3NzksIDM2NzgzLCAzNjc4NywgMzY3OTIsIDM2Nzk4LCAzNjgwMywgMzY4MDcsIAotICAgIDM2ODEyLCAzNjgxNiwgMzY4MjAsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODUzLCAzNjg2OCwgMzY4ODMsIDM2ODk5LCAKLSAgICAzNjkxNywgMTAxOTUsIDM2OTMxLCAzNjkzOCwgMzY5NDIsIDM2OTQ1LCAzNjk1NCwgMzY5NTksIDM2OTYzLCAzNjk3MSwgCi0gICAgMzM5MTksIDM2OTc5LCAzNjk4MywgMzY5OTMsIDM3MDA0LCAyOTIyNSwgMzcwMTcsIDM3MDIxLCAzNzAzMCwgMzcwMzgsIAotICAgIDk3ODUsIDE0OTEzLCAzNzA0MiwgMjI0NDcsIDM3MDQ1LCAzMDE3MywgMzcwNTAsIDk3ODQsIDM3MDU1LCAzNzA2MSwgCi0gICAgMzcwNjYsIDM3MDcyLCAzNzA3NywgMzcwODMsIDM3MDg4LCAzNzA5NCwgMzcwOTksIDM3MTA1LCAzNzExMSwgMzcxMTcsIAotICAgIDM3MTIyLCAzNzA3OCwgMzcwODQsIDM3MDg5LCAzNzA5NSwgMzcxMDAsIDM3MTA2LCAzNzExMiwgODEyNiwgMzg3NCwgCi0gICAgMzcxMjYsIDM3MTM0LCAzNzEzOCwgMzcxNDEsIDM3MTQ1LCAzNzE1MCwgMzcxNTUsIDM3MTYxLCAzNzE2NywgMzcxNzIsIAotICAgIDM3MTc2LCAyNTk3NiwgMzcxODAsIDM3MTg0LCAzNzE5MCwgMzcxOTQsIDkwNDksIDM3MjAzLCAzNzIxMCwgMzcyMTQsIAotICAgIDExODc1LCAzNzIyMSwgMzcyMjcsIDM3MjMyLCAzNzIzOSwgMzcyNDYsIDM3MjUzLCAyODU3MSwgODA0OSwgMzcyNjAsIAotICAgIDM3MjY3LCAzNzI3NCwgMzcyODAsIDM3Mjg1LCAzNzI5MiwgMzczMDMsIDM3MzA5LCAzNzMxNCwgMzczMTksIDM3MzI0LCAKLSAgICAzNzMzMSwgMzcwNzksIDM3MzM1LCAzNzM0NSwgMzczNTYsIDM3MzYyLCAzNzM2NywgMzczNzIsIDM3Mzc3LCAzNzM4MiwgCi0gICAgMzczODcsIDM3MzkxLCAzNzM5NSwgMzc0MDEsIDM3NDA5LCAyMzE5LCA4NjUsIDEwMjYxLCAxMDI3MywgMTAyNzgsIDEwMjg0LCAKLSAgICAzNzQxOCwgMTAyODksIDEwMjk0LCAxMDMwMCwgMzc0MjMsIDM3NDMzLCAzNzQzNywgMTAzMDUsIDM3NDQyLCAxNjkwMywgCi0gICAgMzc0NDUsIDM3NDUwLCAzNzQ1NCwgMzc0NTksIDM3NDY0LCAzNzQ3MSwgMzc0NzgsIDM3NDgyLCAzNzQ4NSwgMzc0OTMsIAotICAgIDEwMjA4LCAzNzUwMCwgMzc1MDMsIDM3NTA5LCAzNzUxOSwgNTkyOSwgMzc1MjgsIDM3NTMyLCAzNzU0MCwgMzc1NDQsIAotICAgIDM3NTU0LCAzNzU2MCwgMzc1NzEsIDM3NTc3LCAzNzU4MywgMzc1ODgsIDM3NTk0LCAzNzYwMCwgMzc2MDYsIDM3NjExLCAKLSAgICAzNzYxNCwgMzc2MjEsIDM3NjI3LCAzNzYzMiwgMzc2MzksIDM3NjQ2LCAzNzY1MCwgMzc2NjAsIDM3NjczLCAzNzY4MiwgCi0gICAgMzc2OTEsIDM3NzAyLCAzNzcxNSwgMzc3MjYsIDM3NzM1LCAzNzc0NiwgMzc3NTEsIDM3NzYwLCAzNzc2NSwgMTAzMTAsIAotICAgIDM3NzcxLCAzNzc3OCwgMzc3ODYsIDM3NzkxLCAzNzc5NSwgMzc4MDIsIDM3ODA5LCAzODI5LCAxNiwgMzc4MTMsIDM3ODE4LCAKLSAgICAxNjc1NywgMzc4MjIsIDM3ODI1LCAzNzgyOCwgMjgwNzcsIDM3ODMyLCAyODU4MCwgMzc4NDAsIDM3ODQ0LCAzNzg0OCwgCi0gICAgMzc4NTEsIDM3ODU3LCAzNzEwMSwgMzc4NjMsIDM3ODcxLCAzNzg3NywgMzc4ODQsIDI4MDYwLCAzNzg4OCwgMjgyNTQsIAotICAgIDM3ODkyLCAzNzkwMSwgMzc5MDcsIDM3OTEzLCAzNzkxOCwgMzc5MjIsIDM3OTI4LCAzNzkzMiwgMzc5NDAsIDM3OTQ4LCAKLSAgICAyNjE5NCwgMzc5NTQsIDM3OTYxLCAzNzk2NywgMzc5NzIsIDM3OTc3LCAzNzk4MSwgMzc5ODcsIDM3OTkyLCAzNzk5OCwgCi0gICAgNDA1NiwgNzkxLCAzODAwNSwgMzgwMDksIDM4MDEyLCAxNTI3NSwgMzgwMjQsIDM1ODUxLCAzODAzNSwgMzgwMzgsIDM4MDQ1LCAKLSAgICAzODA0OSwgMzgwNTUsIDM4MDU5LCAzODA2NSwgMzgwNzAsIDM4MDc2LCAzODA4MSwgMzgwODYsIDM4MDkwLCAzODA5NCwgCi0gICAgMzgwOTksIDM4MTA0LCAzODExNCwgMzgxMjAsIDM4MTMzLCAzODEzOSwgMzgxNDUsIDM4MTUyLCAzODE1NywgMzgxNjMsIAotICAgIDM4MTY4LCAxNjY0MywgMTQ3MiwgMTAxOSwgMzEyMTgsIDMxMjI0LCAzODE3MywgMzEyMzAsIDMxMjQzLCAzMTI0OSwgCi0gICAgMzEyNTUsIDM4MTc5LCAzMTI2MSwgMzEyNjcsIDM4MTg1LCAzODE5MSwgMjIsIDM4MTk5LCAzODIwNiwgMzgyMTAsIDM4MjE0LCAKLSAgICAzODIyMiwgMzE5NzgsIDM4MjI2LCAzODIzMCwgMzgyMzcsIDM4MjQyLCAzODI0NiwgMzgyNTEsIDM4MjU3LCAzODI2MiwgCi0gICAgMzgyNjgsIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI5MCwgMzgyOTQsIDM4Mjk5LCAzODMwMywgMzgzMTAsIAotICAgIDM4MzE1LCAzODMxOSwgMzgzMjQsIDM4MzI4LCAzODMzMywgMzgzMzcsIDM4MzQyLCAzODM0OCwgMTU0OTUsIDE1NTAwLCAKLSAgICAzODM1MywgMzgzNTcsIDM4MzYwLCAzODM2NCwgMjExODMsIDM4MzY5LCAzODM3MywgMzgzNzksIDM4Mzg2LCAzODM5MSwgCi0gICAgMzg0MDEsIDM4NDA2LCAzODQxNCwgMzg0MTgsIDM4NDIxLCAzMTk5MywgMzg0MjUsIDQxMDksIDM4NDMwLCAzODQzNSwgCi0gICAgMzg0MzksIDM4NDQ0LCAzODQ0OCwgMzg0NTMsIDEzMzc1LCAzODQ2NCwgMzg0NjgsIDM4NDcxLCAzODQ3NiwgMzg0ODAsIAotICAgIDM4NDg0LCAzODQ4NywgMzg0OTEsIDgxNDUsIDEzMzkxLCAzODQ5NCwgMzg0OTcsIDM4NTAzLCAzODUwOCwgMzg1MTQsIAotICAgIDM4NTE5LCAzODUyNSwgMzg1MzAsIDM4NTM2LCAzODU0MSwgMzg1NDcsIDM4NTUzLCAzODU1OSwgMzg1NjQsIDM4NTY4LCAKLSAgICAzODU3MiwgMzg1ODEsIDM4NTk3LCAzODYxMywgMzg2MjMsIDI3OTY3LCAzODYzMCwgMzg2MzQsIDM4NjM5LCAzODY0NCwgCi0gICAgMzg2NDgsIDM4NjUyLCAzNTk3MiwgMzg2NTgsIDM4NjYzLCAzODY2NywgMzg2NzQsIDM4Njc5LCAzODY4MywgMzg2ODcsIAotICAgIDI2OTk2LCAzODY5MywgMjE0NTEsIDM4Njk4LCAzODcwNSwgMzg3MTMsIDM4NzE5LCAzODcyNiwgMzg3MzQsIDM4NzQwLCAKLSAgICAzODc0NCwgMzg3NTAsIDM4NzU4LCAzODc2MiwgMzg3NzEsIDk1MDksIDM4Nzc5LCAzODc4MywgMzg3OTEsIDM4Nzk4LCAKLSAgICAzODgwMywgMzg4MDgsIDM4ODEyLCAzODgxNSwgMzg4MTksIDM4ODIyLCAzODgyNiwgMzg4MzMsIDM4ODM4LCAzODg0NCwgCi0gICAgMjY0MTUsIDMxMjgxLCAzODg0OCwgMzg4NTUsIDM4ODYxLCAzODg2NywgMzg4NzIsIDM4ODc1LCAzODg3NywgMzg4ODQsIAotICAgIDM4ODkxLCAzODg5NywgMzg5MDEsIDM4OTA0LCAzODkwOCwgMzg5MTIsIDM4OTE2LCAzODkyMSwgMzg5MjUsIDM4OTI5LCAKLSAgICAzODkzMiwgMzg5MzYsIDM4OTUwLCAyMzA2MiwgMzg5NjksIDM4OTgyLCAzODk5NSwgMzkwMDgsIDIzMDgwLCAzOTAyMywgCi0gICAgMTA0OTcsIDM5MDM4LCAzOTA0NCwgMzkwNDgsIDM5MDUyLCAzOTA1OSwgMzkwNjQsIDM5MDY4LCAzOTA3NSwgMzkwODEsIAotICAgIDM5MDg2LCAzOTA5MiwgMzkxMDIsIDM5MTE0LCAzOTEyNSwgMzkxMzAsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ4LCAKLSAgICAxNTg5MSwgMzY3NywgMzkxNTYsIDE1NTIyLCAzOTE2OSwgMzkxNzYsIDM5MTgwLCAzOTE4NCwgMzkxODksIDM5MTk0LCAKLSAgICAzOTIwMCwgMzkyMDQsIDM5MjA4LCAzOTIxMSwgNzc0MiwgMTU1MzMsIDM5MjE2LCAzOTIyMCwgMzkyMjYsIDM5MjM1LCAKLSAgICAzOTI0MCwgMzkyNDcsIDM1ODI4LCAzOTI1MywgMzkyNTgsIDM5MjYyLCAzOTI2NywgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgCi0gICAgMzkyODUsIDM5MjkwLCAxNDU2NSwgMzkyOTcsIDM5MzA0LCAxMDc3LCAzOTMwOCwgMzkzMTMsIDM5MzE4LCAzOTMyNCwgCi0gICAgMzkzMjksIDM5MzM0LCAzOTMzOCwgMzkzNDgsIDM5MzUzLCAzOTM1OSwgMzkzNjQsIDM5MzcwLCAzOTM3NSwgMzkzODEsIAotICAgIDM5MzkxLCAzOTM5NiwgMzk0MDEsIDM5NDA1LCA3MjI5LCA3MjQxLCAzOTQxMCwgMzk0MTMsIDM5NDIwLCAzOTQyNiwgCi0gICAgMzQwODQsIDM0MDkxLCAzOTQzNSwgMzk0MzksIDMyMDQxLCAzOTQ0NywgMzk0NTgsIDM5NDY2LCAzNjAyMCwgMzk0NzMsIAotICAgIDM5NDc4LCAzOTQ4MywgMzk0OTQsIDM5NTAxLCAzOTUxMiwgMzIwNjUsIDIxNDU3LCAzOTUyMCwgNzM1LCAzOTUyNSwgCi0gICAgMzk1MzEsIDI4MDUxLCAzOTUzNywgMzk1NDIsIDM5NTUyLCAzOTU2MSwgMzk1NjgsIDM5NTc0LCAzOTU3OCwgMzk1ODEsIAotICAgIDM5NTg4LCAzOTU5NCwgMzk2MDEsIDM5NjA3LCAzOTYxNywgMzk2MjUsIDM5NjMxLCAzOTYzNywgMzk2NDIsIDM5NjQ2LCAKLSAgICAzOTY1MywgMzk2NTksIDM5NjY2LCAzODkxNywgNTM1LCAxMzgxOCwgMzk2NzIsIDM5Njc3LCAzOTY4MCwgMzk2ODYsIAotICAgIDM5Njk0LCAxMzk2LCAzOTY5OSwgMzk3MDMsIDM5NzA4LCAzOTcxNSwgMzk3MjEsIDM5NzI1LCAzOTcyOSwgMzk3MzQsIAotICAgIDM5NzQzLCAzOTc1MCwgMzk3NjAsIDM5NzY2LCAyODA5NSwgMzk3ODMsIDM5NzkyLCAzOTgwMCwgMzk4MDYsIDM5ODExLCAKLSAgICAzOTgxOCwgMzk4MjQsIDM5ODMyLCAzOTg0MSwgMzk4NDksIDM5ODUzLCAzOTg1OCwgMzk4NjYsIDMyMDc0LCAzOTg3MiwgCi0gICAgMzk4OTEsIDE1ODI0LCAzOTkwNSwgMzk5MjEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUxLCAzOTk1NiwgMzk5NjIsIAotICAgIDMyMDgwLCAzOTk2NywgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzQ1LCAyOTM2LCAzOTk5MCwgMzk5OTUsIDQwMDAwLCAyNzMyMiwgCi0gICAgMzk4MjEsIDQwMDA0LCA0MDAwOSwgNDAwMTcsIDQwMDIxLCA0MDAyNCwgNDAwMzAsIDQwMDM2LCA0MDA0MCwgMjgxNTAsIAotICAgIDQwMDQzLCA0MDA0OCwgNDAwNTIsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3NCwgNDAwNzgsIDQwMDgzLCAKLSAgICA0MDA4NywgNDAwOTEsIDIxMTc5LCAyMTE5MCwgNDAwOTUsIDQwMTAwLCA0MDEwNiwgMjY5NTMsIDQwMTExLCA0MDExNSwgCi0gICAgMjEyNjYsIDE2MDcyLCA0MDExOCwgNDAxMjMsIDQwMTI4LCA0MDEzMywgNDAxMzgsIDQwMTQzLCA0MDE0OCwgNDAxNTMsIAotICAgIDQ1MCwgNDksIDMxMjk5LCAzMTMwNCwgMzEzMDksIDMxMzE1LCAzMTMyMCwgMzEzMjUsIDQwMTU4LCAzMTMyOSwgNDAxNjIsIAotICAgIDQwMTY2LCA0MDE3MCwgMzEzMzQsIDMxMzQwLCA0MDE4NCwgMzEzNTEsIDMxMzU2LCA0MDE5MiwgNDAxOTcsIDMxMzYyLCAKLSAgICA0MDIwMiwgNDAyMDcsIDQwMjEyLCA0MDIxNywgNDAyMjMsIDQwMjI5LCA0MDIzNSwgMzEzNzksIDQwMjQ4LCA0MDI1NCwgCi0gICAgMzEzODMsIDQwMjU4LCAzMTM4OCwgNDAyNjMsIDMxMzkzLCAzMTM5OCwgNDAyNjYsIDQwMjcxLCA0MDI3NSwgMzA5NDgsIAotICAgIDQwMjgxLCAxMzU5OSwgNDAyODgsIDQwMjkzLCAzMTQwMywgNDAyOTcsIDQwMzAyLCA0MDMwNywgNDAzMTIsIDQwMzE2LCAKLSAgICA0MDMyMSwgNDAzMjYsIDQwMzMyLCA0MDMzNywgNDAzNDIsIDQwMzQ4LCA0MDM1NCwgNDAzNTksIDQwMzYzLCA0MDM2OCwgCi0gICAgNDAzNzMsIDQwMzc4LCA0MDM4MiwgNDAzODcsIDQwMzkyLCA0MDM5NywgNDA0MDMsIDQwNDA5LCA0MDQxNSwgNDA0MjAsIAotICAgIDQwNDI0LCA0MDQyOSwgNDA0MzMsIDMxNDA3LCAzMTQxMiwgMzE0MTcsIDQwNDM3LCA0MDQ0MSwgNDA0NDUsIDMxNDIyLCAKLSAgICAzMTQyOCwgMzE0MzQsIDMxNDQ2LCA0MDQ1NywgMjYwMTMsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc1LCA0MDQ4MCwgCi0gICAgNDA0ODUsIDQwNDg5LCA0MDQ5MywgNDA1MDMsIDQwNTA4LCA0MDUxMywgNDA1MTcsIDQwNTIxLCA0MDUyNCwgNDA1MzIsIAotICAgIDMxNDk0LCA0MDUzNywgMTQ3OSwgNDA1NDMsIDQwNTUxLCA0MDU2MCwgNDA1NjQsIDQwNTY4LCA0MDU3NiwgNDA1ODIsIAotICAgIDQwNTkwLCA0MDYwNiwgNDA2MTAsIDQwNjE0LCA0MDYxOSwgNDA2MzQsIDMxNTMxLCAxNzQ5LCAxMjA1NSwgNDA2MzgsIAotICAgIDEzNzgsIDQwNjUwLCA0MDY1MSwgNDA2NTksIDQwNjY2LCA0MDY3MSwgNDA2NzgsIDQwNjgzLCA5Mzc5LCAxMTE5LCAxMDMzMiwgCi0gICAgNDA2OTAsIDQwNjk1LCA0MDY5OCwgNDA3MDEsIDQwNzEwLCAxMjg2LCA0MDcxNSwgMzkwNjUsIDQwNzIyLCA0MDcyNywgCi0gICAgNDA3MzEsIDIyNTAzLCAyNTU3LCA0MDczOSwgMTA3NDEsIDQwNzQ5LCA0MDc1NSwgMjMzNywgMjM0NywgNDA3NjQsIDQwNzczLCAKLSAgICA0MDc4MywgNDA3OTQsIDMyOTMsIDM0MjM3LCAxMDM4NCwgMzgwNywgMTY2ODEsIDEyOTEsIDQwNzk5LCA0MDgwNywgNDA4MTQsIAotICAgIDQwODE5LCA0MDgyMywgNDA4MjcsIDIzODc1LCAxMDQxMSwgNDA4MzUsIDQwODQ0LCA0MDg1MywgNDA4NjEsIDQwODY4LCAKLSAgICA0MDg3OSwgNDA4ODQsIDQwODk3LCA0MDkxMCwgNDA5MjIsIDQwOTM0LCA0MDk0NiwgNDA5NTksIDQwOTcwLCA0MDk4MSwgCi0gICAgNDA5OTEsIDQwOTk5LCA0MTAwNywgNDEwMTksIDQxMDMxLCA0MTA0MiwgNDEwNTEsIDQxMDU5LCA0MTA2NiwgNDEwNzgsIAotICAgIDQxMDg1LCA0MTA5NCwgNDExMDEsIDQxMTE0LCA0MTExOSwgNDExMjksIDQxMTM0LCA0MTE0MCwgNDExNDUsIDM3MjExLCAKLSAgICA0MTE0OSwgNDExNTYsIDQxMTYwLCA0MTE2NywgNDExNzUsIDI1MTgsIDQxMTgyLCA0MTE5MywgNDEyMDMsIDQxMjEyLCAKLSAgICA0MTIyMCwgNDEyMzAsIDQxMjM4LCA0MTI0OCwgNDEyNTcsIDQxMjYyLCA0MTI2OCwgNDEyNzQsIDM3MDksIDQxMjg1LCAKLSAgICA0MTI5NSwgNDEzMDQsIDQxMzEzLCA0MTMyMywgNDEzMzEsIDQxMzQwLCA0MTM0NSwgNDEzNTAsIDQxMzU1LCAxNzA1LCAzNywgCi0gICAgNDEzNjMsIDQxMzcxLCA0MTM4MiwgNDEzOTMsIDE2MzU2LCA0MTQwMywgNDE0MDcsIDQxNDE0LCA0MTQyMCwgNDE0MjUsIAotICAgIDQxNDI5LCA0MTQ0MCwgNDE0NTAsIDQxNDU5LCA0MTQ3MCwgMTY3MzAsIDE2NzM1LCA0MTQ3NSwgNDE0ODQsIDQxNDg5LCAKLSAgICA0MTQ5OSwgNDE1MDQsIDQxNTEyLCA0MTUyMCwgNDE1MjcsIDQxNTMzLCA3MDc4LCAyMjgsIDQxNTM3LCA0MTU0MywgNDE1NDgsIAotICAgIDQxNTUxLCAyMTE3LCAzOTE4MSwgNDE1NTksIDQxNTYzLCA0MTU2NiwgMTUxMiwgNDE1NzIsIDEzOTgwLCAxMjk2LCA0MTU3NywgCi0gICAgNDE1OTAsIDQxNjA0LCAyNjQzLCA0MTYyMiwgNDE2MzQsIDQxNjQ2LCAyNjU3LCAyNjc0LCA0MTY2MCwgNDE2NzMsIDI2ODksIAotICAgIDQxNjg3LCA0MTY5OSwgMjcwNCwgNDE3MTMsIDEzMDIsIDEzMDgsIDEzMTQsIDEwNjU5LCA0MTcxOCwgNDE3MjMsIDQxNzI4LCAKLSAgICA0MTczMiwgNDE3NDcsIDQxNzYyLCA0MTc3NywgNDE3OTIsIDQxODA3LCA0MTgyMiwgNDE4MzcsIDQxODUyLCA0MTg2NywgCi0gICAgNDE4ODIsIDQxODk3LCA0MTkxMiwgNDE5MjcsIDQxOTQyLCA0MTk1NywgNDE5NzIsIDQxOTg3LCA0MjAwMiwgNDIwMTcsIAotICAgIDQyMDMyLCA0MjA0NywgNDIwNjIsIDQyMDc3LCA0MjA5MiwgNDIxMDcsIDQyMTIyLCA0MjEzNywgNDIxNTIsIDQyMTY3LCAKLSAgICA0MjE4MiwgNDIxOTcsIDQyMjEyLCA0MjIyNywgNDIyNDIsIDQyMjU3LCA0MjI3MiwgNDIyODcsIDQyMzAyLCA0MjMxNywgCi0gICAgNDIzMzIsIDQyMzQ3LCA0MjM2MiwgNDIzNzcsIDQyMzkyLCA0MjQwNywgNDI0MjIsIDQyNDM3LCA0MjQ1MiwgNDI0NjcsIAotICAgIDQyNDgyLCA0MjQ5NywgNDI1MTIsIDQyNTI3LCA0MjU0MiwgNDI1NTcsIDQyNTcyLCA0MjU4NywgNDI2MDIsIDQyNjE3LCAKLSAgICA0MjYzMiwgNDI2NDcsIDQyNjYyLCA0MjY3NywgNDI2OTIsIDQyNzA3LCA0MjcyMiwgNDI3MzcsIDQyNzUyLCA0Mjc2NywgCi0gICAgNDI3ODIsIDQyNzk3LCA0MjgxMiwgNDI4MjcsIDQyODQyLCA0Mjg1NywgNDI4NzIsIDQyODg3LCA0MjkwMiwgNDI5MTcsIAotICAgIDQyOTMyLCA0Mjk0NywgNDI5NjIsIDQyOTc3LCA0Mjk5MiwgNDMwMDcsIDQzMDIyLCA0MzAzNywgNDMwNTIsIDQzMDY3LCAKLSAgICA0MzA4MiwgNDMwOTcsIDQzMTEyLCA0MzEyNywgNDMxNDIsIDQzMTU3LCA0MzE3MiwgNDMxODcsIDQzMjAyLCA0MzIxNywgCi0gICAgNDMyMzIsIDQzMjQ3LCA0MzI2MiwgNDMyNzcsIDQzMjkyLCA0MzMwNywgNDMzMjIsIDQzMzM3LCA0MzM1MiwgNDMzNjcsIAotICAgIDQzMzgyLCA0MzM5NywgNDM0MTIsIDQzNDI3LCA0MzQ0MiwgNDM0NTcsIDQzNDcyLCA0MzQ4NywgNDM1MDIsIDQzNTE3LCAKLSAgICA0MzUzMiwgNDM1NDcsIDQzNTYyLCA0MzU3NywgNDM1OTIsIDQzNjA3LCA0MzYyMiwgNDM2MzcsIDQzNjUyLCA0MzY2NywgCi0gICAgNDM2ODIsIDQzNjk3LCA0MzcxMiwgNDM3MjcsIDQzNzQyLCA0Mzc1NywgNDM3NzIsIDQzNzg3LCA0MzgwMiwgNDM4MTcsIAotICAgIDQzODMyLCA0Mzg0NywgNDM4NjIsIDQzODc3LCA0Mzg5MiwgNDM5MDcsIDQzOTIyLCA0MzkzNywgNDM5NTIsIDQzOTY3LCAKLSAgICA0Mzk4MiwgNDM5OTcsIDQ0MDEyLCA0NDAyNywgNDQwNDIsIDQ0MDU3LCA0NDA3MiwgNDQwODcsIDQ0MTAyLCA0NDExNywgCi0gICAgNDQxMzIsIDQ0MTQ3LCA0NDE2MiwgNDQxNzcsIDQ0MTkyLCA0NDIwNywgNDQyMjIsIDQ0MjM3LCA0NDI1MiwgNDQyNjcsIAotICAgIDQ0MjgyLCA0NDI5NywgNDQzMTIsIDQ0MzI3LCA0NDM0MiwgNDQzNTcsIDQ0MzcyLCA0NDM4NywgNDQ0MDIsIDQ0NDE3LCAKLSAgICA0NDQzMiwgNDQ0NDcsIDQ0NDYyLCA0NDQ3NywgNDQ0OTIsIDQ0NTA3LCA0NDUyMiwgNDQ1MzcsIDQ0NTUyLCA0NDU2NywgCi0gICAgNDQ1ODIsIDQ0NTk3LCA0NDYxMiwgNDQ2MjcsIDQ0NjQyLCA0NDY1NywgNDQ2NzIsIDQ0Njg3LCA0NDcwMiwgNDQ3MTcsIAotICAgIDQ0NzMyLCA0NDc0NywgNDQ3NjIsIDQ0Nzc3LCA0NDc5MiwgNDQ4MDcsIDQ0ODIyLCA0NDgzNywgNDQ4NTIsIDQ0ODY3LCAKLSAgICA0NDg4MiwgNDQ4OTcsIDQ0OTEyLCA0NDkyNywgNDQ5NDIsIDQ0OTU3LCA0NDk3MiwgNDQ5ODcsIDQ1MDAyLCA0NTAxNywgCi0gICAgNDUwMzIsIDQ1MDQ3LCA0NTA2MiwgNDUwNzcsIDQ1MDkyLCA0NTEwNywgNDUxMjIsIDQ1MTM3LCA0NTE1MiwgNDUxNjcsIAotICAgIDQ1MTgyLCA0NTE5NywgNDUyMTIsIDQ1MjI3LCA0NTI0MiwgNDUyNTcsIDQ1MjcyLCA0NTI4NywgNDUzMDIsIDQ1MzE3LCAKLSAgICA0NTMzMiwgNDUzNDcsIDQ1MzYyLCA0NTM3NywgNDUzOTIsIDQ1NDA3LCA0NTQyMiwgNDU0MzcsIDQ1NDUyLCA0NTQ2NywgCi0gICAgNDU0ODIsIDQ1NDk3LCA0NTUxMiwgNDU1MjcsIDQ1NTQyLCA0NTU1NywgNDU1NzIsIDQ1NTg3LCA0NTYwMiwgNDU2MTcsIAotICAgIDQ1NjMyLCA0NTY0NywgNDU2NjIsIDQ1Njc3LCA0NTY5MiwgNDU3MDcsIDQ1NzIyLCA0NTczNywgNDU3NTIsIDQ1NzY3LCAKLSAgICA0NTc4MiwgNDU3OTcsIDQ1ODEyLCA0NTgyNywgNDU4NDIsIDQ1ODU3LCA0NTg3MiwgNDU4ODcsIDQ1OTAyLCA0NTkxNywgCi0gICAgNDU5MzIsIDQ1OTQ3LCA0NTk2MiwgNDU5NzcsIDQ1OTkyLCA0NjAwNywgNDYwMjIsIDQ2MDM3LCA0NjA1MiwgNDYwNjcsIAotICAgIDQ2MDgyLCA0NjA5NywgNDYxMTIsIDQ2MTI3LCA0NjE0MiwgNDYxNTcsIDQ2MTcyLCA0NjE4NywgNDYyMDIsIDQ2MjE3LCAKLSAgICA0NjIzMiwgNDYyNDcsIDQ2MjYyLCA0NjI3NywgNDYyOTIsIDQ2MzA3LCA0NjMyMiwgNDYzMzcsIDQ2MzUyLCA0NjM2NywgCi0gICAgNDYzODIsIDQ2Mzk3LCA0NjQxMiwgNDY0MjcsIDQ2NDQyLCA0NjQ1NywgNDY0NzIsIDQ2NDg3LCA0NjUwMiwgNDY1MTcsIAotICAgIDQ2NTMyLCA0NjU0NywgNDY1NjIsIDQ2NTc3LCA0NjU5MiwgNDY2MDcsIDQ2NjIyLCA0NjYzNywgNDY2NTIsIDQ2NjY3LCAKLSAgICA0NjY4MiwgNDY2OTcsIDQ2NzEyLCA0NjcyNywgNDY3NDIsIDQ2NzU3LCA0Njc3MiwgNDY3ODcsIDQ2ODAyLCA0NjgxNywgCi0gICAgNDY4MzIsIDQ2ODQ3LCA0Njg2MiwgNDY4NzcsIDQ2ODkyLCA0NjkwNywgNDY5MjIsIDQ2OTM3LCA0Njk1MiwgNDY5NjcsIAotICAgIDQ2OTgyLCA0Njk5NywgNDcwMTIsIDQ3MDI3LCA0NzA0MiwgNDcwNTcsIDQ3MDcyLCA0NzA4NywgNDcxMDIsIDQ3MTE3LCAKLSAgICA0NzEzMiwgNDcxNDcsIDQ3MTYyLCA0NzE3NywgNDcxOTIsIDQ3MjA3LCA0NzIyMiwgNDcyMzcsIDQ3MjUyLCA0NzI2NywgCi0gICAgNDcyODIsIDQ3Mjk3LCA0NzMxMiwgNDczMjcsIDQ3MzQyLCA0NzM1NywgNDczNzIsIDQ3Mzg3LCA0NzQwMiwgNDc0MTcsIAotICAgIDQ3NDMyLCA0NzQ0NywgNDc0NjIsIDQ3NDc3LCA0NzQ5MiwgNDc1MDcsIDQ3NTIyLCA0NzUzNywgNDc1NTIsIDQ3NTY3LCAKLSAgICA0NzU4MiwgNDc1OTcsIDQ3NjEyLCA0NzYyNywgNDc2NDIsIDQ3NjU3LCA0NzY3MiwgNDc2ODcsIDQ3NzAyLCA0NzcxNywgCi0gICAgNDc3MzIsIDQ3NzQ3LCA0Nzc2MiwgNDc3NzcsIDQ3NzkyLCA0NzgwNywgNDc4MjIsIDQ3ODM3LCA0Nzg1MiwgNDc4NjcsIAotICAgIDQ3ODgyLCA0Nzg5NywgNDc5MTIsIDQ3OTI3LCA0Nzk0MiwgNDc5NTcsIDQ3OTcyLCA0Nzk4NywgNDgwMDIsIDQ4MDE3LCAKLSAgICA0ODAzMiwgNDgwNDcsIDQ4MDYyLCA0ODA3NywgNDgwOTIsIDQ4MTA3LCA0ODEyMiwgNDgxMzcsIDQ4MTUyLCA0ODE2NywgCi0gICAgNDgxODIsIDQ4MTk3LCA0ODIxMiwgNDgyMjcsIDQ4MjQyLCA0ODI1NywgNDgyNzIsIDQ4Mjg3LCA0ODMwMiwgNDgzMTcsIAotICAgIDQ4MzMyLCA0ODM0NywgNDgzNjIsIDQ4Mzc3LCA0ODM5MiwgNDg0MDcsIDQ4NDIyLCA0ODQzNywgNDg0NTIsIDQ4NDY3LCAKLSAgICA0ODQ4MiwgNDg0OTcsIDQ4NTEyLCA0ODUyNywgNDg1NDIsIDQ4NTU3LCA0ODU3MiwgNDg1ODcsIDQ4NjAyLCA0ODYxNywgCi0gICAgNDg2MzIsIDQ4NjQ3LCA0ODY2MiwgNDg2NzcsIDQ4NjkyLCA0ODcwNywgNDg3MjIsIDQ4NzM3LCA0ODc1MiwgNDg3NjcsIAotICAgIDQ4NzgyLCA0ODc5NywgNDg4MTIsIDQ4ODI3LCA0ODg0MiwgNDg4NTcsIDQ4ODcyLCA0ODg4NywgNDg5MDIsIDQ4OTE3LCAKLSAgICA0ODkzMiwgNDg5NDcsIDQ4OTYyLCA0ODk3NywgNDg5OTIsIDQ5MDA3LCA0OTAyMiwgNDkwMzcsIDQ5MDUyLCA0OTA2NywgCi0gICAgNDkwODIsIDQ5MDk3LCA0OTExMiwgNDkxMjcsIDQ5MTQyLCA0OTE1NywgNDkxNzIsIDQ5MTg3LCA0OTIwMiwgNDkyMTcsIAotICAgIDQ5MjMyLCA0OTI0NywgNDkyNjIsIDQ5Mjc3LCA0OTI5MiwgNDkzMDcsIDQ5MzIyLCA0OTMzNywgNDkzNTIsIDQ5MzY3LCAKLSAgICA0OTM4MiwgNDkzOTcsIDQ5NDEyLCA0OTQyNywgNDk0NDIsIDQ5NDU3LCA0OTQ3MiwgNDk0ODcsIDQ5NTAyLCA0OTUxNywgCi0gICAgNDk1MzIsIDQ5NTQ4LCA0OTU2NCwgNDk1ODAsIDQ5NTk2LCA0OTYxMiwgNDk2MjgsIDQ5NjQ0LCA0OTY2MCwgNDk2NzYsIAotICAgIDQ5NjkyLCA0OTcwOCwgNDk3MjQsIDQ5NzQwLCA0OTc1NiwgNDk3NzIsIDQ5Nzg4LCA0OTgwNCwgNDk4MjAsIDQ5ODM2LCAKLSAgICA0OTg1MiwgNDk4NjgsIDQ5ODg0LCA0OTkwMCwgNDk5MTYsIDQ5OTMyLCA0OTk0OCwgNDk5NjQsIDQ5OTgwLCA0OTk5NiwgCi0gICAgNTAwMTIsIDUwMDI4LCA1MDA0NCwgNTAwNjAsIDUwMDc2LCA1MDA5MiwgNTAxMDgsIDUwMTI0LCA1MDE0MCwgNTAxNTYsIAotICAgIDUwMTcyLCA1MDE4OCwgNTAyMDQsIDUwMjIwLCA1MDIzNiwgNTAyNTIsIDUwMjY4LCA1MDI4NCwgNTAzMDAsIDUwMzE2LCAKLSAgICA1MDMzMiwgNTAzNDgsIDUwMzY0LCA1MDM4MCwgNTAzOTYsIDUwNDEyLCA1MDQyOCwgNTA0NDQsIDUwNDYwLCA1MDQ3NiwgCi0gICAgNTA0OTIsIDUwNTA4LCA1MDUyNCwgNTA1NDAsIDUwNTU2LCA1MDU3MiwgNTA1ODgsIDUwNjA0LCA1MDYyMCwgNTA2MzYsIAotICAgIDUwNjUyLCA1MDY2OCwgNTA2ODQsIDUwNzAwLCA1MDcxNiwgNTA3MzIsIDUwNzQ4LCA1MDc2NCwgNTA3ODAsIDUwNzk2LCAKLSAgICA1MDgxMiwgNTA4MjgsIDUwODQ0LCA1MDg2MCwgNTA4NzYsIDUwODkyLCA1MDkwOCwgNTA5MjQsIDUwOTQwLCA1MDk1NiwgCi0gICAgNTA5NzIsIDUwOTg4LCA1MTAwNCwgNTEwMjAsIDUxMDM2LCA1MTA1MiwgNTEwNjgsIDUxMDg0LCA1MTEwMCwgNTExMTYsIAotICAgIDUxMTMyLCA1MTE0OCwgNTExNjQsIDUxMTgwLCA1MTE5NiwgNTEyMTIsIDUxMjI4LCA1MTI0NCwgNTEyNjAsIDUxMjc2LCAKLSAgICA1MTI5MiwgNTEzMDgsIDUxMzI0LCA1MTM0MCwgNTEzNTYsIDUxMzcyLCA1MTM4OCwgNTE0MDQsIDUxNDIwLCA1MTQzNiwgCi0gICAgNTE0NTIsIDUxNDY4LCA1MTQ4NCwgNTE1MDAsIDUxNTE2LCA1MTUzMiwgNTE1NDgsIDUxNTY0LCA1MTU4MCwgNTE1OTYsIAotICAgIDUxNjEyLCA1MTYyOCwgNTE2NDQsIDUxNjYwLCA1MTY3NiwgNTE2OTIsIDUxNzA4LCA1MTcyNCwgNTE3NDAsIDUxNzU2LCAKLSAgICA1MTc3MiwgNTE3ODgsIDUxODA0LCA1MTgyMCwgNTE4MzYsIDUxODUyLCA1MTg2OCwgNTE4ODQsIDUxOTAwLCA1MTkxNiwgCi0gICAgNTE5MzIsIDUxOTQ4LCA1MTk2NCwgNTE5ODAsIDUxOTk2LCA1MjAxMiwgNTIwMjgsIDUyMDQ0LCA1MjA2MCwgNTIwNzYsIAotICAgIDUyMDkyLCA1MjEwOCwgNTIxMjQsIDUyMTQwLCA1MjE1NiwgNTIxNzIsIDUyMTg4LCA1MjIwNCwgNTIyMjAsIDUyMjM2LCAKLSAgICA1MjI1MiwgNTIyNjgsIDUyMjg0LCA1MjMwMCwgNTIzMTYsIDUyMzMyLCA1MjM0OCwgNTIzNjQsIDUyMzgwLCA1MjM5NiwgCi0gICAgNTI0MTIsIDUyNDI4LCA1MjQ0NCwgNTI0NjAsIDUyNDc2LCA1MjQ5MiwgNTI1MDgsIDUyNTI0LCA1MjU0MCwgNTI1NTYsIAotICAgIDUyNTcyLCA1MjU4OCwgNTI2MDQsIDUyNjIwLCA1MjYzNiwgNTI2NTIsIDUyNjY4LCA1MjY4NCwgNTI3MDAsIDUyNzE2LCAKLSAgICA1MjczMiwgNTI3NDgsIDUyNzY0LCA1Mjc4MCwgNTI3OTYsIDUyODEyLCA1MjgyOCwgNTI4NDQsIDUyODYwLCA1Mjg3NiwgCi0gICAgNTI4OTIsIDUyOTA4LCA1MjkyNCwgNTI5NDAsIDUyOTU2LCA1Mjk3MiwgNTI5ODgsIDUzMDA0LCA1MzAyMCwgNTMwMzYsIAotICAgIDUzMDUyLCA1MzA2OCwgNTMwODQsIDUzMTAwLCA1MzExNiwgNTMxMzIsIDUzMTQ4LCA1MzE2NCwgNTMxODAsIDUzMTk2LCAKLSAgICA1MzIxMiwgNTMyMjgsIDUzMjQ0LCA1MzI2MCwgNTMyNzYsIDUzMjkyLCA1MzMwOCwgNTMzMjQsIDUzMzQwLCA1MzM1NiwgCi0gICAgNTMzNzIsIDUzMzg4LCA1MzQwNCwgNTM0MjAsIDUzNDM2LCA1MzQ1MiwgNTM0NjgsIDUzNDg0LCA1MzUwMCwgNTM1MTYsIAotICAgIDUzNTMyLCA1MzU0OCwgNTM1NjQsIDUzNTgwLCA1MzU5NiwgNTM2MTIsIDUzNjI4LCA1MzY0NCwgNTM2NjAsIDUzNjc2LCAKLSAgICA1MzY5MiwgNTM3MDgsIDUzNzI0LCA1Mzc0MCwgNTM3NTYsIDUzNzcyLCA1Mzc4OCwgNTM4MDQsIDUzODIwLCA1MzgzNiwgCi0gICAgNTM4NTIsIDUzODY4LCA1Mzg4NCwgNTM5MDAsIDUzOTE2LCA1MzkzMiwgNTM5NDgsIDUzOTY0LCA1Mzk4MCwgNTM5OTYsIAotICAgIDU0MDEyLCA1NDAyOCwgNTQwNDQsIDU0MDYwLCA1NDA3NiwgNTQwOTIsIDU0MTA4LCA1NDEyNCwgNTQxNDAsIDU0MTU2LCAKLSAgICA1NDE3MiwgNTQxODgsIDU0MjA0LCA1NDIyMCwgNTQyMzYsIDU0MjUyLCA1NDI2OCwgNTQyODQsIDU0MzAwLCA1NDMxNiwgCi0gICAgNTQzMzIsIDU0MzQ4LCA1NDM2NCwgNTQzODAsIDU0Mzk2LCA1NDQxMiwgNTQ0MjgsIDU0NDQ0LCA1NDQ2MCwgNTQ0NzYsIAotICAgIDU0NDkyLCA1NDUwOCwgNTQ1MjQsIDU0NTQwLCA1NDU1NiwgNTQ1NzIsIDU0NTg4LCA1NDYwNCwgNTQ2MjAsIDU0NjM2LCAKLSAgICA1NDY1MiwgNTQ2NjgsIDU0Njg0LCA1NDcwMCwgNTQ3MTYsIDU0NzMyLCA1NDc0OCwgNTQ3NjQsIDU0NzgwLCA1NDc5NiwgCi0gICAgNTQ4MTIsIDU0ODI4LCA1NDg0NCwgNTQ4NjAsIDU0ODc2LCA1NDg5MiwgNTQ5MDgsIDU0OTI0LCA1NDk0MCwgNTQ5NTYsIAotICAgIDU0OTcyLCA1NDk4OCwgNTUwMDQsIDU1MDIwLCA1NTAzNiwgNTUwNTIsIDU1MDY4LCA1NTA4NCwgNTUxMDAsIDU1MTE2LCAKLSAgICA1NTEzMiwgNTUxNDgsIDU1MTY0LCA1NTE4MCwgNTUxOTYsIDU1MjEyLCA1NTIyOCwgNTUyNDQsIDU1MjYwLCA1NTI3NiwgCi0gICAgNTUyOTIsIDU1MzA4LCA1NTMyNCwgNTUzNDAsIDU1MzU2LCA1NTM3MiwgNTUzODgsIDU1NDA0LCA1NTQyMCwgNTU0MzYsIAotICAgIDU1NDUyLCA1NTQ2OCwgNTU0ODQsIDU1NTAwLCA1NTUxNiwgNTU1MzIsIDU1NTQ4LCA1NTU2NCwgNTU1ODAsIDU1NTk2LCAKLSAgICA1NTYxMiwgNTU2MjgsIDU1NjQ0LCA1NTY2MCwgNTU2NzYsIDU1NjkyLCA1NTcwOCwgNTU3MjQsIDU1NzQwLCA1NTc1NiwgCi0gICAgNTU3NzIsIDU1Nzg4LCA1NTgwNCwgNTU4MjAsIDU1ODM2LCA1NTg1MiwgNTU4NjgsIDU1ODg0LCA1NTkwMCwgNTU5MTYsIAotICAgIDU1OTMyLCA1NTk0OCwgNTU5NjQsIDU1OTgwLCA1NTk5NiwgNTYwMTIsIDU2MDI4LCA1NjA0NCwgNTYwNjAsIDU2MDc2LCAKLSAgICA1NjA5MiwgNTYxMDgsIDU2MTI0LCA1NjE0MCwgNTYxNTYsIDU2MTcyLCA1NjE4OCwgNTYyMDQsIDU2MjIwLCA1NjIzNiwgCi0gICAgNTYyNTIsIDU2MjY4LCA1NjI4NCwgNTYzMDAsIDU2MzE2LCA1NjMzMiwgNTYzNDgsIDU2MzY0LCA1NjM4MCwgNTYzOTYsIAotICAgIDU2NDEyLCA1NjQyOCwgNTY0NDQsIDU2NDYwLCA1NjQ3NiwgNTY0OTIsIDU2NTA4LCA1NjUyNCwgNTY1NDAsIDU2NTU2LCAKLSAgICA1NjU3MiwgNTY1ODgsIDU2NjA0LCA1NjYyMCwgNTY2MzYsIDU2NjUyLCA1NjY2OCwgNTY2ODQsIDU2NzAwLCA1NjcxNiwgCi0gICAgNTY3MzIsIDU2NzQ4LCA1Njc2NCwgNTY3ODAsIDU2Nzk2LCA1NjgxMiwgNTY4MjgsIDU2ODQ0LCA1Njg2MCwgNTY4NzYsIAotICAgIDU2ODkyLCA1NjkwOCwgNTY5MjQsIDU2OTQwLCA1Njk1NiwgNTY5NzIsIDU2OTg4LCA1NzAwNCwgNTcwMjAsIDU3MDM2LCAKLSAgICA1NzA1MiwgNTcwNjgsIDU3MDg0LCA1NzEwMCwgNTcxMTYsIDU3MTMyLCA1NzE0OCwgNTcxNjQsIDU3MTgwLCA1NzE5NiwgCi0gICAgNTcyMTIsIDU3MjI4LCA1NzI0NCwgNTcyNjAsIDU3Mjc2LCA1NzI5MiwgNTczMDgsIDU3MzI0LCA1NzM0MCwgNTczNTYsIAotICAgIDU3MzcyLCA1NzM4OCwgNTc0MDQsIDU3NDIwLCA1NzQzNiwgNTc0NTIsIDU3NDY4LCA1NzQ4NCwgNTc1MDAsIDU3NTE2LCAKLSAgICA1NzUzMiwgNTc1NDgsIDU3NTY0LCA1NzU4MCwgNTc1OTYsIDU3NjEyLCA1NzYyOCwgNTc2NDQsIDU3NjYwLCA1NzY3NiwgCi0gICAgNTc2OTIsIDU3NzA4LCA1NzcyNCwgNTc3NDAsIDU3NzU2LCA1Nzc3MiwgNTc3ODgsIDU3ODA0LCA1NzgyMCwgNTc4MzYsIAotICAgIDU3ODUyLCA1Nzg2OCwgNTc4ODQsIDU3OTAwLCA1NzkxNiwgNTc5MzIsIDU3OTQ4LCA1Nzk2NCwgNTc5ODAsIDU3OTk2LCAKLSAgICA1ODAxMiwgNTgwMjgsIDU4MDQ0LCA1ODA2MCwgNTgwNzYsIDU4MDkyLCA1ODEwOCwgNTgxMjQsIDU4MTQwLCA1ODE1NiwgCi0gICAgNTgxNzIsIDU4MTg4LCA1ODIwNCwgNTgyMTksIDE2NzYyLCA1ODIyOCwgNTgyMzQsIDU4MjQwLCA1ODI1MCwgNTgyNTgsIAotICAgIDE0ODk0LCAxNTQ0NSwgOTk2MCwgNTgyNzEsIDE1MjAsIDU4Mjc5LCAzNzYxLCAyNzQzMiwgNzE4MywgNTgyODUsIDU4MjkwLCAKLSAgICA1ODI5NSwgNTgzMDAsIDU4MzA1LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzMsIDU4MzM4LCA1ODM0MywgCi0gICAgNTgzNDgsIDU4MzUzLCA1ODM1OSwgNTgzNjQsIDU4MzY5LCA1ODM3NCwgNTgzNzksIDU4Mzg0LCA1ODM4OSwgNTgzOTQsIAotICAgIDU4NDAwLCA1ODQwNSwgNTg0MTEsIDU4NDE4LCAyNTYxLCA1ODQyMywgNTg0MjksIDg1MjYsIDU4NDMzLCA1ODQzOCwgCi0gICAgNTg0NDUsIDU4NDUzLCA0MCwgNTg0NTcsIDU4NDYzLCA1ODQ2OCwgNTg0NzMsIDU4NDc3LCA1ODQ4MiwgNTg0ODYsIDU4NDkwLCAKLSAgICAxMDY4NCwgNTg0OTQsIDU4NTA0LCA1ODUxNywgNTg1MjgsIDU4NTQxLCA1ODU0OCwgNTg1NTQsIDU4NTU5LCA1ODU2NSwgCi0gICAgNTg1NzEsIDU4NTc3LCA1ODU4MiwgNTg1ODcsIDU4NTkyLCA1ODU5NywgNTg2MDEsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIAotICAgIDU4NjIyLCA1ODYyOCwgNTg2MzQsIDU4NjM5LCA1ODY0MywgNTg2NDgsIDU4NjUzLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKLSAgICA1ODY3MiwgNTg2NzYsIDEwNzAwLCAxMDcxMSwgMTA3MTYsIDE1NjMsIDU4NjgwLCAxNTY4LCA1ODY4NiwgMTYyMzksIAotICAgIDU4Njg5LCA1ODY5NSwgMTU5OSwgNTg3MDEsIDE2MDUsIDE2MTEsIDEwNzQ2LCA1ODcwNiwgNTg3MTQsIDU4NzIxLCA1ODcyNSwgCi0gICAgNTg3MzEsIDU4NzM2LCAzMDk3NywgNTg3NDEsIDU4NzQ4LCA1ODc1MywgNTg3NTcsIDU4NzYxLCAxNjE2LCAxNjMzMSwgCi0gICAgNTg3NzAsIDU4Nzc0LCAxNjM0MiwgMTEyNSwgNTg3NzgsIDU4Nzg1LCA1ODc5MCwgNTg3OTQsIDE2MzY3LCAxNjIwLCAKLSAgICAzNzM1MCwgNTg3OTcsIDU4ODAyLCA1ODgxMiwgNTg4MjEsIDU4ODI2LCA1ODgzMCwgNTg4MzYsIDE2MjUsIDM5MjU5LCAKLSAgICA1ODg0MSwgNTg4NTAsIDU4ODU2LCA1ODg2MSwgMTA5MDQsIDEwOTEwLCA1ODg2NywgNTg4NzksIDU4ODk2LCA1ODkxMywgCi0gICAgNTg5MzAsIDU4OTQ3LCA1ODk2NCwgNTg5ODEsIDU4OTk4LCA1OTAxNSwgNTkwMzIsIDU5MDQ5LCA1OTA2NiwgNTkwODMsIAotICAgIDU5MTAwLCA1OTExNywgNTkxMzQsIDU5MTUxLCA1OTE2OCwgNTkxODUsIDU5MjAyLCA1OTIxOSwgNTkyMzYsIDU5MjUzLCAKLSAgICA1OTI3MCwgNTkyODcsIDU5MzA0LCA1OTMyMSwgNTkzMzgsIDU5MzU1LCA1OTM3MiwgNTkzODksIDU5NDA2LCA1OTQyMywgCi0gICAgNTk0NDAsIDU5NDU3LCA1OTQ3NCwgNTk0OTEsIDU5NTA4LCA1OTUyNSwgNTk1NDIsIDU5NTU5LCA1OTU3NiwgNTk1OTMsIAotICAgIDU5NjEwLCA1OTYyNywgNTk2NDQsIDU5NjYxLCA1OTY3OCwgNTk2OTUsIDU5NzEyLCA1OTcyMywgNTk3MjgsIDE2MzAsIAotICAgIDU5NzMyLCA1OTczOCwgNTk3NDMsIDU5NzQ4LCA5MzI2LCAxNjM1LCA1OTc1NCwgNTk3NjMsIDI3NzMxLCA1OTc2OCwgCi0gICAgNTk3NzksIDU5Nzg5LCA1OTc5NCwgNTk4MDEsIDU5ODA3LCA1OTgxMiwgNTk4MTcsIDE2NjE5LCA1OTgyMSwgMTA5MjEsIAotICAgIDE2NDAsIDEwOTI2LCA1OTgyNywgNTk4MzIsIDU5ODM4LCA1OTg0MywgNTk4NDgsIDU5ODUzLCA1OTg1OCwgNTk4NjMsIAotICAgIDU5ODY4LCA1OTg3MywgNTk4NzksIDU5ODg1LCA1OTg5MSwgNTk4OTYsIDU5OTAwLCA1OTkwNSwgNTk5MTAsIDU5OTE0LCAKLSAgICA1OTkxOSwgNTk5MjQsIDU5OTI5LCA1OTkzMywgNTk5MzgsIDU5OTQ0LCA1OTk0OSwgNTk5NTQsIDU5OTU4LCA1OTk2MywgCi0gICAgNTk5NjgsIDU5OTc0LCA1OTk3OSwgNTk5ODQsIDU5OTkwLCA1OTk5NiwgNjAwMDEsIDYwMDA1LCA2MDAxMCwgNjAwMTUsIAotICAgIDYwMDIwLCA2MDAyNCwgNjAwMjksIDYwMDM0LCA2MDAzOSwgNjAwNDUsIDYwMDUxLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OSwgNjAwNzQsIDYwMDc5LCAyOTEyOSwgNjAwODMsIDYwMDg4LCA2MDA5MywgNjAwOTksIDYwMTA0LCA2MDEwOSwgCi0gICAgNjAxMTMsIDYwMTE4LCA2MDEyMywgNjAxMjksIDYwMTM0LCA2MDEzOSwgNjAxNDUsIDYwMTUxLCA2MDE1NiwgNjAxNjAsIAotICAgIDYwMTY1LCA2MDE3MCwgNjAxNzQsIDYwMTc5LCA2MDE4NCwgNjAxODksIDYwMTk1LCA2MDIwMSwgNjAyMDYsIDYwMjEwLCAKLSAgICA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzQsIDYwMjM5LCA2MDI0MywgNjAyNDYsIDMxNjM5LCA2MDI1MSwgCi0gICAgNjAyNTksIDE2Njg1LCAzNjYzLCAxMTAxNywgNjAyNjUsIDYwMjc1LCA2MDI5MCwgMTEwMjIsIDYwMzAxLCA2MDMwNiwgCi0gICAgNjAzMTcsIDYwMzI5LCA2MDM0MSwgNjAzNTMsIDI2OTUsIDYwMzY1LCA2MDM3MCwgNjAzODIsIDYwMzg2LCA2MDM5MiwgCi0gICAgNjAzOTgsIDYwNDAzLCAxNjUyLCAxMDc4LCA2MDQxMiwgNjA0MTcsIDM5MzA5LCA2MDQyMSwgNjA0MjUsIDYwNDMwLCAKLSAgICA2MDQzNCwgMTY3NzAsIDYwNDM5LCA2MDQ0MiwgNjA0NTAsIDYwNDU4LCAxNjU2LCAxMTA0NywgMTEwNTMsIDE2NjEsIAotICAgIDYwNDY2LCA2MDQ3MywgNjA0NzgsIDYwNDg3LCA2MDQ5NywgNjA1MDQsIDYwNTA5LCA2MDUxNCwgMTY2NiwgNjA1MjEsIAotICAgIDYwNTI2LCAxNjg4NSwgNjA1MzAsIDYwNTM1LCA2MDU0MiwgNjA1NDgsIDYwNTUyLCA2MDU2MywgNjA1NzMsIDE2OTA3LCAKLSAgICA5MjM0LCA5MjQxLCAxNjcxLCA2MDU4MCwgNjA1ODYsIDYwNTk0LCA2MDYwMSwgNjA2MDcsIDYwNjE0LCA2MDYyNiwgNjA2MzIsIAotICAgIDYwNjM3LCA2MDY0OSwgNjA2NjAsIDYwNjY5LCA2MDY3OSwgMzc0MCwgMzA4MTMsIDMwODIyLCAxNjk0NywgMTY3NiwgMTY4MCwgCi0gICAgNjA2ODcsIDYwNjk4LCA2MDcwMywgMTY4MywgNjA3MTEsIDYwNzE2LCAxNjk5OCwgNjA3MjgsIDYwNzM0LCA2MDczOSwgCi0gICAgNjA3NDcsIDE2ODgsIDYwNzUyLCA2MDc1NywgNjA3NjUsIDYwNzczLCA2MDc4MCwgNjA3ODksIDYwNzk3LCA2MDgwNiwgCi0gICAgMTY5MywgNjA4MTAsIDE2OTgsIDYwODE1LCA2MDgyMiwgMTcwNzIsIDYwODMwLCA2MDgzNiwgNjA4NDEsIDYwODQ5LCAKLSAgICA2MDg1NiwgNjA4NjQsIDIyNTc0LCA2MDg2OSwgMTExODIsIDYwODc4LCA2MDg4NCwgNjA4OTEsIDYwODk4LCA2MDkwNCwgCi0gICAgNjA5MTQsIDYwOTIwLCA2MDkyNSwgNjA5MzYsIDYwOTQxLCA2MDk0OSwgMTExOTEsIDExMTk2LCA2MDk1NywgNjA5NjMsIAotICAgIDYwOTcxLCAzODA1LCAxNzExNCwgMzkzOTcsIDYwOTc2LCA2MDk4MiwgNjA5ODcsIDYwOTk1LCA2MTAwMiwgMTIwMzYsIAotICAgIDYxMDA3LCA2MTAxMywgMTcwOSwgNjEwMTgsIDYxMDIxLCAxMTMyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MywgCi0gICAgNjEwNDgsIDYxMDUzLCA2MTA1OCwgNjEwNjMsIDYxMDY4LCA2MTA3MywgMTcxOCwgOSwgNjEwNzksIDYxMDgzLCA2MTA4OCwgCi0gICAgNjEwOTIsIDYxMDk2LCA2MTEwMCwgMzE4NzksIDYxMTA1LCA2MTExMCwgNjExMTUsIDYxMTE5LCA2MTEyMiwgNjExMjYsIAotICAgIDYxMTMwLCA2MTEzNSwgNjExMzksIDYxMTQ0LCA2MTE0OCwgMzQ2MTYsIDM0NjIxLCAzNDYyNiwgNjExNTEsIDYxMTU4LCAKLSAgICA2MTE2NCwgMzkxMTgsIDYxMTc0LCAzNDYzMiwgMzIxMzcsIDMxODk0LCAzMTkwMCwgMzQ2NDgsIDMxOTA2LCA2MTE3OSwgCi0gICAgNjExODQsIDMyMTcwLCA2MTE4OCwgNjExOTEsIDYxMTk1LCA2MTIwMiwgNjEyMDUsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIAotICAgIDYxMjIxLCA2MTIzMSwgNjEyNDMsIDYxMjUwLCA2MTI1NiwgNjEyNjMsIDMzNTczLCA2MTI2NiwgODU0MywgODc3LCA2MTI2OSwgCi0gICAgNjEyNzMsIDYxMjc4LCAzNjkwLCA2MTI4MiwgNjEyODUsIDEzNjMyLCA2MTI5MiwgNjEyOTksIDYxMzEyLCA2MTMyMCwgCi0gICAgNjEzMjksIDYxMzM4LCA2MTM0MywgNjEzNTMsIDYxMzY2LCA2MTM3OCwgNjEzODUsIDYxMzkwLCA2MTM5OSwgNjE0MTIsIAotICAgIDM2MDYwLCA2MTQzMCwgNjE0MzUsIDYxNDQyLCA2MTQ0OCwgNjU2LCA2MTQ1MywgNjE0NjEsIDYxNDY4LCAyNzI3MSwgNjI3LCAKLSAgICA2MTQ3NCwgNjE0ODAsIDYxNDkwLCA2MTQ5NiwgNjE1MDEsIDMxOTI0LCA2MDAzLCAzMTkzOCwgNjE1MDUsIDYxNTE1LCAKLSAgICA2MTUyMCwgNjE1MzAsIDYxNTQ1LCA2MTU1MSwgNjE1NTcsIDMxOTQ4LCA2MTU2MiwgMzEwOTQsIDYxNTY2LCA2MTU3MSwgCi0gICAgNjE1NzYsIDYxNTgwLCA2MTU4NSwgMTY5NTAsIDYxNTkyLCA2MTU5NywgNjE2MDEsIDYwNDQsIDMxOTc0LCA2MTYwNSwgCi0gICAgNjE2MTEsIDMxMiwgNjE2MjEsIDYxNjI4LCA2MTYzNSwgNjE2NDAsIDYxNjQ5LCA1ODgwNiwgNjE2NTUsIDYxNjYzLCAKLSAgICA2MTY2NywgNjE2NzEsIDYxNjc1LCA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5NCwgNjE3MDIsIDYxNzA3LCA2MTcxMiwgCi0gICAgNjE3MTYsIDYxNzIxLCA2MTcyNSwgNjE3MjksIDYxNzM1LCA2MTc0MSwgNjE3NDYsIDYxNzUwLCAzMjA5OCwgNjE3NTUsIAotICAgIDMyMTA0LCAzMjExMCwgNjE3NjAsIDYxNzY2LCA2MTc3MywgNjE3NzgsIDYxNzgyLCAzMTExMSwgMTY2MTIsIDYxNzg1LCAKLSAgICA2MTc4OSwgNjE3OTQsIDYxODAxLCA2MTgwNywgNjE4MTEsIDYxODE2LCAzODgyOCwgNjE4MjIsIDYxODI2LCA2MTgzMCwgCi0gICAgNjE4MzUsIDYxODQxLCA2MTg0NywgNjE4NTksIDYxODY4LCA2MTg3OCwgNjE4ODQsIDYxODkxLCA2MTg5NiwgNjE5MDEsIAotICAgIDYxOTA1LCA2MTkwOCwgNjE5MTQsIDYxOTIxLCA2MTkyNiwgNjE5MzEsIDYxOTM4LCA2MTk0NSwgNjE5NTEsIDYxOTU2LCAKLSAgICA2MTk2MSwgNjE5NjksIDMyMTE1LCAyNDIzLCA2MTk3NCwgNjE5NzksIDYxOTg1LCA2MTk5MCwgNjE5OTYsIDYyMDAxLCAKLSAgICA2MjAwNiwgNjIwMTEsIDYyMDE3LCAzMjEzNiwgNjIwMjIsIDYyMDI4LCA2MjAzNCwgNjIwNDAsIDMyMjAwLCA2MjA0NSwgCi0gICAgNjIwNTAsIDYyMDU1LCAzMjIxMSwgNjIwNjAsIDYyMDY1LCA2MjA3MCwgNjIwNzYsIDYyMDgyLCAzMjIxNiwgNjIwODcsIAotICAgIDYyMDkyLCA2MjA5NywgMzIyNzEsIDMyMjc3LCA2MjEwMiwgNjIxMDcsIDMyMjgyLCA2MjExMiwgMjc5NTgsIDMyMzA0LCAKLSAgICAzMjMwOCwgNjIxMTcsIDYyMDkzLCA2MjEyMSwgNjIxMjksIDYyMTM1LCA2MjE0MywgNjIxNTAsIDYyMTU2LCA2MjE2NiwgCi0gICAgNjIxNzIsIDYyMTc5LCAxMDYzMSwgMzIzMjIsIDYyMTg1LCA2MjE5OCwgNjIyMDcsIDYyMjEzLCA2MjIyMiwgNjIyMjgsIAotICAgIDIzNTEyLCA2MjIzNSwgNjIyNDIsIDYyMjUyLCAzMjI3MiwgNjIyNTUsIDYyMjYyLCA2MjI2NywgNjIyNzEsIDYyMjc1LCAKLSAgICA2MjI4MCwgNjEyMCwgNjIyODQsIDYyMjg5LCA2MjI5NCwgMzQ3MTAsIDM0NzE1LCA2MjI5OCwgMzQ3MjksIDYyMzAzLCAKLSAgICAzNDczNCwgNjIzMDgsIDYyMzE0LCAzNDc0NiwgMzQ3NTIsIDM0NzU4LCA2MjMxOSwgNjIzMjUsIDIyNTM5LCA2MjMzNiwgCi0gICAgNjIzMzksIDYyMzUxLCA2MjM1OSwgMzIzNDUsIDYyMzYzLCA2MjM3MiwgNjIzODIsIDYyMzkxLCAzMjM1NSwgNjIzOTYsIAotICAgIDYyNDAzLCA2MjQxMiwgNjI0MTgsIDYyNDI2LCA2MjQzMywgNjA5NSwgNDM5NywgNjI0MzgsIDMyMjgzLCA2MjQ0NCwgCi0gICAgNjI0NDcsIDYyNDUzLCA2MjQ2MCwgNjI0NjUsIDYyNDcwLCAyMzQyMiwgNjI0NzQsIDYyNDgwLCA2MjQ4NiwgNjI0OTEsIAotICAgIDYyNDk2LCA2MjUwMCwgNjI1MDYsIDYyNTEyLCAzMzQ4MywgODYzLCAzNTcyMywgMzY2NDQsIDM2NjUwLCAzMjM5MSwgCi0gICAgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjgsIDYyNTQxLCA2MjU0NywgNjI1NTEsIDYyNTU0LCA2MjU1OSwgMzM3ODYsIAotICAgIDYyNTYzLCAzMTExNiwgMjEyODcsIDYyNTY5LCA2MDI0LCA2MDMyLCA5MDc1LCA2MjU3MiwgNjI1NzcsIDYyNTgyLCA2MjU4NywgCi0gICAgNjI1OTIsIDYyNTk3LCA2MjYwMiwgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjMsIDYyNjI4LCA2MjYzMywgNjI2MzksIAotICAgIDYyNjQ0LCA2MjY0OSwgNjI2NTQsIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc1LCA2MjY4MCwgNjI2ODYsIDYyNjkxLCAKLSAgICA2MjY5NiwgNjI3MDEsIDYyNzA2LCA2MjcxMSwgNjI3MTYsIDYyNzIxLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MiwgCi0gICAgNjI3NDcsIDYyNzUyLCA2Mjc1NywgNjI3NjIsIDYyNzY3LCA2Mjc3MiwgNjI3NzgsIDYyNzgzLCA2Mjc4OCwgNjI3OTMsIAotICAgIDYyNzk4LCA2MjgwMywgNjI4MDgsIDYyODEzLCA2MjgxOCwgNjI4MjMsIDYyODI5LCA2MjgzNCwgNjI4MzksIDYyODQ0LCAKLSAgICA2Mjg0OSwgNjI4NTUsIDYyODYxLCA2Mjg2NiwgNjI4NzIsIDYyODc3LCA2Mjg4MiwgNjI4ODcsIDYyODkyLCA2Mjg5NywgCi0gICAgMTUxMywgMjQ1LCA2MjkwMiwgNjI5MDYsIDYyOTEwLCA2MjkxNCwgMjUxMzMsIDYyOTE4LCA2MjkyMiwgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNiwgNjI5NDAsIDYyOTQ1LCA2Mjk1MCwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjgsIDYyOTcyLCAxMzM2OSwgCi0gICAgNjI5NzcsIDYyOTgxLCA2Mjk4OCwgNjI5OTgsIDE1MjA2LCA2MzAwNywgNjMwMTYsIDYzMDIwLCA2MzAyNSwgNjMwMzAsIAotICAgIDYzMDM0LCAyNDkyNCwgMzAxOSwgNjMwMzgsIDYzMDQ0LCAxNzM2MywgNjMwNDgsIDYzMDU3LCA2MzA2NSwgNjMwNzEsIAotICAgIDYzMDgzLCA2MzA5NSwgNjMwOTksIDYzMTA0LCA2MzEwOCwgNjMxMTQsIDYzMTIwLCA2MzEyNSwgNjMxMzUsIDYzMTQ1LCAKLSAgICA2MzE1MSwgNjMxNTYsIDYzMTYwLCA2MzE2NSwgNjMxNzEsIDYzMTgwLCA2MzE4OSwgNjMxOTcsIDE1NTYwLCA2MzIwMSwgCi0gICAgNjMyMTAsIDYzMjE4LCA2MzIzMCwgNjMyNDEsIDYzMjUyLCA2MzI2MSwgNjMyNjUsIDYzMjc0LCA2MzI4NCwgNjMyOTIsIAotICAgIDYzMjk4LCA2MzMwMywgNjMzMDksIDYzMzE0LCA5OCwgMzA5MjUsIDYzMzI1LCAyNjI2NiwgMjYyNzYsIDYzMzMxLCA2MzMzOCwgCi0gICAgNjMzNDQsIDYzMzQ4LCA2MzM1OCwgNjMzNjksIDYzMzc3LCA2MzM4NiwgNjMzOTEsIDYzMzk2LCA2MzQwMCwgMTczMTcsIAotICAgIDYzNDA4LCA2MzQxMiwgNjM0MTgsIDYzNDI4LCA2MzQzNSwgNjM0NDEsIDM0ODA5LCA2MzQ0NywgNjM0NDksIDYzNDUyLCAKLSAgICA2MzQ1NiwgNjM0NjYsIDYzNDcyLCA2MzQ3OSwgMTMzMTUsIDYzNDg2LCA2MzQ5MiwgNjM1MDEsIDYzNTEwLCA2MzUxNiwgCi0gICAgNjM1MjIsIDYzNTI4LCA2MzUzMywgNjM1NDAsIDYzNTQ3LCA2MzU1MywgNjM1NjYsIDYzNTc1LCA2MzU4NCwgNjM1ODksIAotICAgIDYzNTkzLCA2MzU5OSwgNjM2MDYsIDYzNjEzLCA2MzYyMCwgNjM2MjcsIDYzNjM0LCA2MzYzOSwgNjM2NDMsIDYzNjQ3LCAKLSAgICA2MzY1MCwgNjM2NjAsIDYzNjY0LCA2MzY3NiwgNjM2ODUsIDYzNjg5LCA2MzY5NCwgNjM2OTgsIDYzNzA0LCA2MzcwOSwgCi0gICAgNjM3MTYsIDYzNzI1LCA2MzczMywgNjM3NDEsIDYzNzQ2LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCA2Mzc3MCwgNjM3NzgsIAotICAgIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk3LCA2MzgwOSwgNjM4MTcsIDYzODI3LCA2MzgzNCwgNjM4NDAsIDYzODQ1LCAKLSAgICA2Mzg0OSwgNjM4NTMsIDYzODU3LCA2Mzg2NiwgNjM4NzUsIDYzODg0LCA2Mzg5MCwgNjM4OTYsIDYzOTAyLCA2MzkwNywgCi0gICAgNjM5MTQsIDYzOTIwLCA2MzkyOCwgNjM5MzUsIDEyNDYzLCA2Mzk0MSwgNjM5NDcsIDYzOTUxLCAxNDI0NCwgNjM5NTUsIAotICAgIDYzOTYwLCA2Mzk3MCwgNjM5NzksIDYzOTg1LCA2Mzk5MSwgNjM5OTksIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDIwLCAKLSAgICA2NDAyOCwgNjQwMzUsIDY0MDQxLCA2NDA1MiwgNjQwNTYsIDY0MDYwLCA2NDA2NCwgNjQwNjcsIDY0MDczLCA2NDA3OCwgCi0gICAgNjQwODIsIDY0MDg2LCA2NDA5NSwgNjQxMDMsIDY0MTEwLCA2NDExNiwgNjQxMjMsIDI0MDQ2LCAzODg3MCwgNjQxMjgsIAotICAgIDY0MTM2LCA2NDE0MCwgNjQxNDQsIDY0MTQ3LCA2NDE1NSwgNjQxNjIsIDY0MTY4LCA2NDE3NywgNjQxODUsIDY0MTkxLCAKLSAgICA2NDE5NiwgNjQyMDAsIDY0MjA1LCA2NDIwOSwgNjQyMTMsIDY0MjE4LCA2NDIyNywgNjQyMzEsIDY0MjM4LCA2NDI0NSwgCi0gICAgNjQyNTEsIDY0MjU5LCA2NDI2NSwgNjQyNzYsIDY0Mjg0LCA2NDI5MCwgMjI2NjksIDY0Mjk5LCA2NDMwNiwgNjQzMTMsIAotICAgIDY0MzIwLCA2NDMyNywgNjQzMzQsIDQxOTA3LCAxMzE1MywgNjQzNDEsIDY0MzQ4LCA2NDM1MywgMzQ4NDUsIDYyMTcsIAotICAgIDY0MzU5LCA2NDM2NCwgNjQzNjksIDY0Mzc1LCA2NDM4MSwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCAKLSAgICA2NDQxMywgNjQ0MTgsIDY0NDI0LCA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NSwgNjQ0NTAsIDY0NDU1LCA2NDQ2MCwgCi0gICAgNjQ0NjUsIDY0NDcwLCA2NDQ3NiwgNjQ0ODEsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIAotICAgIDY0NTE3LCA2NDUyMywgNjQ1MjgsIDY0NTMzLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCAKLSAgICA2NDU2OCwgNjQ1NzMsIDY0NTc5LCA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgCi0gICAgNjQ2MTksIDY0NjI1LCA2NDYzMCwgNjQ2MzUsIDY0NjQwLCA2NDY0NSwgNjQ2NTAsIDY0NjU1LCA2NDY2MCwgNjQ2NjUsIAotICAgIDY0NjcwLCA2NDY3NSwgNjQ2ODAsIDY0Njg1LCA2NDY5MSwgMTgzNCwgMjI0LCAzNzQ0NiwgNjQ2OTYsIDY0Njk5LCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzExLCA2NDcxNiwgNjM3MzcsIDY0NzI3LCA2NDczNywgNjQ3NDQsIDY0NzYwLCA2NDc2OSwgNjQ3NzksIAotICAgIDY0Nzg5LCA2NDc5NywgNjQ4MTEsIDY0ODE5LCA2NDgyMywgNjQ4MjYsIDY0ODMzLCA2NDgzOSwgNjQ4NTAsIDY0ODYyLCAKLSAgICA2NDg3MywgNjQ4ODIsIDY0ODg5LCAxMjk3LCAyMzMxMSwgNjQ4OTksIDI1OTAsIDY0OTAzLCA2NDkxMiwgMTEzOCwgMTcyOTAsIAotICAgIDM4MDgzLCA2NDkyMCwgNjQ5MjgsIDY0OTQyLCA2NDk1NSwgNjQ5NTksIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTgwLCAKLSAgICA2NDk4NiwgNjQ5OTEsIDg1MzUsIDY0OTk2LCA2NTAwMCwgNjUwMDgsIDExMDQ4LCA2NTAxMywgNjUwMTksIDY1MDI4LCAKLSAgICAxNzIxLCAxMTA2MCwgNzM2LCA2NTAzMiwgNjUwNDEsIDY1MDUxLCAyNzAzMCwgNjUwNjAsIDY1MDY2LCAxNjg2MiwgNjUwNzIsIAotICAgIDY1MDc2LCAzOTY0LCAxMTM5MSwgNjUwODIsIDY1MDg5LCA2MDY5MywgNjUwOTMsIDY1MDk3LCAzOTg4LCAxODksIDE0MTU5LCAKLSAgICA2NTEwMywgNjUxMTUsIDY1MTE5LCA2NTEyNSwgMjc3NTEsIDY1MTI5LCAxMTM3OSwgMjczMCwgNCwgNjUxMzQsIDY1MTQ0LCAKLSAgICA2NTE1MCwgNjUxNjEsIDY1MTY4LCA2NTE3NCwgNjUxODAsIDY1MTg4LCA2NTE5NSwgNjUyMDEsIDY1MjExLCA2NTIyMSwgCi0gICAgNjUyMzEsIDIzNDk5LCAxMzA5LCA2NTI0MCwgNjUyNDQsIDY1MjQ4LCA2NTI1NCwgNjUyNTgsIDI3NTMsIDI3NTksIDg1MzIsIAotICAgIDIyNjQsIDY1MjYyLCA2NTI2NiwgNjUyNzUsIDY1MjgzLCA2NTI5NCwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgNjUzMjEsIAotICAgIDY1MzMyLCA2NTM0MywgNjUzNTEsIDY1MzU3LCA5Njk0LCA2NTM2MiwgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIAotICAgIDY1Mzk0LCAyODEzNiwgNjU0MDEsIDY1NDExLCA2NTQxNywgNjU0MjMsIDk3OTYsIDY1NDMzLCA2NTQ0NCwgNjU0NTQsIAotICAgIDY1NDYzLCA2NTQ2NywgNjU0NzQsIDExNDAsIDExNzAsIDY1NDg0LCA2NTQ4OSwgNjU0OTcsIDY1NTA1LCA2NTUxNiwgCi0gICAgNjU1MjMsIDY1NTM3LCAxNDA4OCwgMzkzLCA2NTU0NywgNjU1NTEsIDY1NTU5LCA2NTU2OCwgNjU1NzYsIDY1NTgyLCAKLSAgICA2NTU5NiwgNjU2MDMsIDY1NjA5LCA2NTYxOCwgNjU2MjUsIDY1NjM1LCA2NTY0MywgMzgxMiwgMTU2LCA2NTY1MSwgNjU2NjIsIAotICAgIDY1NjY2LCA2NTY3OCwgMjc5NDksIDE2MSwgNjU2ODQsIDY1Njg5LCA2NTY5MywgNjU3MDAsIDY1NzA2LCA2NTcxNCwgCi0gICAgNjU3MjEsIDg4MTgsIDY1NzI4LCA2NTczNywgNjU3NDUsIDM4NzgsIDY1NzU4LCA4MTk5LCA2NTc2MiwgMjc5OCwgNDQzLCAKLSAgICA2NTc2NywgNjU3ODAsIDY1Nzg1LCAxODMzLCA2NTAsIDY1Nzg5LCAzODk1LCA2NTc5NywgNjU4MDMsIDY1ODA3LCA5MzEsIAotICAgIDY1ODE3LCA2NTgyNiwgNjU4MzEsIDE0OTI4LCAxNDkzNSwgNDUyNjksIDY1ODM1LCAzODIyLCAxMzA0MSwgNjU4NDMsIAotICAgIDY1ODUwLCAyMzU1NSwgNjU4NTQsIDY1ODYxLCA2NTg2NywgNjU4NzIsIDY1ODc3LCAxNDk0OCwgMzcyLCA2NTg4MiwgCi0gICAgNjU4OTQsIDY1OTAwLCA2NTkwOCwgMjgxMCwgMTc1MywgNjU5MTYsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTMzLCAKLSAgICA2NTkzOSwgNjU5NDQsIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzUsIDY1OTgwLCA2NTk4NSwgCi0gICAgNjU5OTAsIDY1OTk1LCA2NjAwMCwgNjYwMDUsIDY2MDEwLCA2NjAxNSwgNjYwMjEsIDY2MDI2LCA2NjAzMSwgNjYwMzYsIAotICAgIDY2MDQyLCA2NjA0NywgNjYwNTMsIDY2MDU4LCA2NjA2MywgNjYwNjgsIDY2MDczLCA2NjA3OCwgNjYwODMsIDY2MDg4LCAKLSAgICA2NjA5NCwgNjYwOTksIDY2MTA1LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMzAsIDY2MTM1LCA2NjE0MCwgCi0gICAgNjYxNDUsIDY2MTUxLCA2NjE1NiwgNjYxNjEsIDY2MTY2LCA2NjE3MCwgNjYxNzQsIDY2MTc5LCA2NjE4MywgNjYxODgsIAotICAgIDY2MTkzLCA2NjE5OSwgNjYyMDQsIDY2MjA4LCA2NjIxMywgNjYyMTcsIDY2MjIwLCA2NjIyMiwgNjYyMjYsIDY2MjI5LCAKLSAgICA2NjIzNCwgNjYyMzgsIDY2MjQyLCA2NjI0NiwgNjYyNTAsIDY2MjU5LCA2NjI2MywgMzI1NDksIDY2MjY2LCAzMjU1NCwgCi0gICAgNjYyNzMsIDY2Mjc4LCAzMjU1OSwgNjYyODcsIDY2Mjk2LCAzMjU2NSwgNjYzMDEsIDMyNTcwLCA2NjMxMCwgNjYzMTUsIAotICAgIDExNTc4LCA2NjMxOSwgNjYzMjQsIDY2MzI5LCAzMjU3NSwgNjYzMzMsIDQwMjI1LCA2NjMzNywgNjYzNDAsIDY2MzQ0LCAKLSAgICA4MjExLCA2NjM1MCwgNjYzNTUsIDY2MzU5LCAzNzA1LCAzMjU4MCwgNjYzNjIsIDY2MzY2LCA2NjM2OSwgNjYzNzQsIAotICAgIDY2Mzc4LCA2NjM4NCwgNjYzOTIsIDY2NDA1LCA2NjQxNCwgNjY0MjAsIDY2NDI1LCA2NjQzMSwgNjY0MzUsIDY2NDQxLCAKLSAgICA2NjQ0OSwgNjY0NTQsIDY2NDU4LCA2NjQ2NSwgNjY0NzEsIDY2NDc5LCA2NjQ4OCwgNjY0OTYsIDMyNTgzLCA2NjUwMywgCi0gICAgNjY1MTMsIDY2NTIyLCA2NjUzNSwgNjY1NDAsIDY2NTQ1LCA2NjU1NCwgNjY1NjAsIDY2NTY3LCA2NjU3OCwgNjY1OTAsIAotICAgIDY2NTk3LCA2NjYwNiwgNjY2MTUsIDY2NjI0LCA2NjYzMSwgNjY2MzcsIDY2NjQ0LCA2NjY1MiwgNjY2NTksIDY2NjY3LCAKLSAgICA2NjY3NiwgNjY2ODQsIDY2NjkxLCA2NjY5OSwgNjY3MDgsIDY2NzE2LCA2NjcyNSwgNjY3MzUsIDY2NzQ0LCA2Njc1MiwgCi0gICAgNjY3NTksIDY2NzY3LCA2Njc3NiwgNjY3ODQsIDY2NzkzLCA2NjgwMywgNjY4MTIsIDY2ODIwLCA2NjgyOSwgNjY4MzksIAotICAgIDY2ODQ4LCA2Njg1OCwgNjY4NjksIDY2ODc5LCA2Njg4OCwgNjY4OTYsIDY2OTAzLCA2NjkxMSwgNjY5MjAsIDY2OTI4LCAKLSAgICA2NjkzNywgNjY5NDcsIDY2OTU2LCA2Njk2NCwgNjY5NzMsIDY2OTgzLCA2Njk5MiwgNjcwMDIsIDY3MDEzLCA2NzAyMywgCi0gICAgNjcwMzIsIDY3MDQwLCA2NzA0OSwgNjcwNTksIDY3MDY4LCA2NzA3OCwgNjcwODksIDY3MDk5LCA2NzEwOCwgNjcxMTgsIAotICAgIDY3MTI5LCA2NzEzOSwgNjcxNTAsIDY3MTYyLCA2NzE3MywgNjcxODMsIDY3MTkyLCA2NzIwMCwgNjcyMDcsIDY3MjE1LCAKLSAgICA2NzIyNCwgNjcyMzIsIDY3MjQxLCA2NzI1MSwgNjcyNjAsIDY3MjY4LCA2NzI3NywgNjcyODcsIDY3Mjk2LCA2NzMwNiwgCi0gICAgNjczMTcsIDY3MzI3LCA2NzMzNiwgNjczNDQsIDY3MzUzLCA2NzM2MywgNjczNzIsIDY3MzgyLCA2NzM5MywgNjc0MDMsIAotICAgIDY3NDEyLCA2NzQyMiwgNjc0MzMsIDY3NDQzLCA2NzQ1NCwgNjc0NjYsIDY3NDc3LCA2NzQ4NywgNjc0OTYsIDY3NTA0LCAKLSAgICA2NzUxMywgNjc1MjMsIDY3NTMyLCA2NzU0MiwgNjc1NTMsIDY3NTYzLCA2NzU3MiwgNjc1ODIsIDY3NTkzLCA2NzYwMywgCi0gICAgNjc2MTQsIDY3NjI2LCA2NzYzNywgNjc2NDcsIDY3NjU2LCA2NzY2NiwgNjc2NzcsIDY3Njg3LCA2NzY5OCwgNjc3MTAsIAotICAgIDY3NzIxLCA2NzczMSwgNjc3NDIsIDY3NzU0LCA2Nzc2NSwgNjc3NzcsIDY3NzkwLCA2NzgwMiwgNjc4MTMsIDY3ODIzLCAKLSAgICA2NzgzMiwgNjc4NDAsIDY3ODQ3LCA2Nzg1NSwgNjc4NjQsIDY3ODcyLCA2Nzg4MSwgNjc4OTEsIDY3OTAwLCA2NzkwOCwgCi0gICAgNjc5MTcsIDY3OTI3LCA2NzkzNiwgNjc5NDYsIDY3OTU3LCA2Nzk2NywgNjc5NzYsIDY3OTg0LCA2Nzk5MywgNjgwMDMsIAotICAgIDY4MDEyLCA2ODAyMiwgNjgwMzMsIDY4MDQzLCA2ODA1MiwgNjgwNjIsIDY4MDczLCA2ODA4MywgNjgwOTQsIDY4MTA2LCAKLSAgICA2ODExNywgNjgxMjcsIDY4MTM2LCA2ODE0NCwgNjgxNTMsIDY4MTYzLCA2ODE3MiwgNjgxODIsIDY4MTkzLCA2ODIwMywgCi0gICAgNjgyMTIsIDY4MjIyLCA2ODIzMywgNjgyNDMsIDY4MjU0LCA2ODI2NiwgNjgyNzcsIDY4Mjg3LCA2ODI5NiwgNjgzMDYsIAotICAgIDY4MzE3LCA2ODMyNywgNjgzMzgsIDY4MzUwLCA2ODM2MSwgNjgzNzEsIDY4MzgyLCA2ODM5NCwgNjg0MDUsIDY4NDE3LCAKLSAgICA2ODQzMCwgNjg0NDIsIDY4NDUzLCA2ODQ2MywgNjg0NzIsIDY4NDgwLCA2ODQ4OSwgNjg0OTksIDY4NTA4LCA2ODUxOCwgCi0gICAgNjg1MjksIDY4NTM5LCA2ODU0OCwgNjg1NTgsIDY4NTY5LCA2ODU3OSwgNjg1OTAsIDY4NjAyLCA2ODYxMywgNjg2MjMsIAotICAgIDY4NjMyLCA2ODY0MiwgNjg2NTMsIDY4NjYzLCA2ODY3NCwgNjg2ODYsIDY4Njk3LCA2ODcwNywgNjg3MTgsIDY4NzMwLCAKLSAgICA2ODc0MSwgNjg3NTMsIDY4NzY2LCA2ODc3OCwgNjg3ODksIDY4Nzk5LCA2ODgwOCwgNjg4MTgsIDY4ODI5LCA2ODgzOSwgCi0gICAgNjg4NTAsIDY4ODYyLCA2ODg3MywgNjg4ODMsIDY4ODk0LCA2ODkwNiwgNjg5MTcsIDY4OTI5LCA2ODk0MiwgNjg5NTQsIAotICAgIDY4OTY1LCA2ODk3NSwgNjg5ODYsIDY4OTk4LCA2OTAwOSwgNjkwMjEsIDY5MDM0LCA2OTA0NiwgNjkwNTcsIDY5MDY5LCAKLSAgICA2OTA4MiwgNjkwOTQsIDY5MTA3LCA2OTEyMSwgNjkxMzQsIDY5MTQ2LCA2OTE1NywgNjkxNjcsIDY5MTc2LCA2OTE4NCwgCi0gICAgNjkxOTEsIDY5MTk2LCA4MDU4LCA2OTIwMywgMzI1OTMsIDY5MjA4LCA2OTIxMywgMzI1OTgsIDY5MjE5LCAyMDkyOSwgCi0gICAgMzI2MDMsIDY5MjI0LCA2OTIzMCwgNjkyMzgsIDY5MjQ0LCA2OTI1MCwgNjkyNTcsIDY5MjY0LCA2OTI2OSwgNjkyNzMsIAotICAgIDY5Mjc2LCA2OTI4MCwgNjkyODksIDY5Mjk1LCA2OTMwNywgNjkzMTgsIDY5MzIyLCAzMDgxLCA4MDMzLCA2OTMyNywgCi0gICAgNjkzMzAsIDY5MzMyLCA2OTMzNiwgNjkzNDAsIDY5MzQ0LCA2OTM1MCwgNjkzNTUsIDI1OTQ0LCA2OTM2MCwgNjkzNjQsIAotICAgIDY5MzY3LCA2OTM3MiwgNjkzNzYsIDY5MzgzLCA2OTM4OSwgNjkzOTMsIDYxNzAsIDY5Mzk3LCAzMjYyMCwgNjk0MDIsIAotICAgIDY5NDA5LCA2OTQxOCwgNjk0MjYsIDY5NDM3LCA2OTQ0NSwgNjk0NTMsIDY5NDYwLCA2OTQ2NywgNjk0NzMsIDY5NDg0LCAKLSAgICAzMjYyNSwgNjk0ODksIDY5NTAwLCA2OTUxMiwgNjk1MjAsIDY5NTMxLCA2OTU0MCwgNjk1NTEsIDY5NTU2LCA2OTU2NCwgCi0gICAgMjU1NiwgNjk1NjksIDM0Mjk1LCA2OTU4MiwgNjk1ODYsIDY5NTk4LCA2OTYwNiwgNjk2MTEsIDY5NjE5LCAxNzQ4NSwgCi0gICAgNjk2MzAsIDY5NjM2LCA2OTY0MywgNjk2NTEsIDY5NjU3LCAzMjYzNSwgNjk2NjIsIDM5MTQsIDU4MjU0LCA2OTY2OSwgCi0gICAgNjk2NzIsIDY5NjgwLCA2OTY5MywgNjk3MDYsIDY5NzE5LCA2OTczMiwgNjk3MzksIDY5NzUwLCA2OTc1OSwgNDE3MjQsIAotICAgIDQxNzI5LCA2OTc2NCwgNjk3NjgsIDY5Nzc2LCA2OTc4MywgNjk3OTIsIDY5ODAwLCA2OTgwNiwgNjk4MTUsIDY5ODIzLCAKLSAgICA2OTgzMSwgNjk4MzUsIDY5ODQ0LCA2OTg1MywgNjk4NjMsIDY5ODc2LCA2OTg4OSwgNjk4OTksIDMyNjQwLCA2OTkwNSwgCi0gICAgNjk5MTIsIDY5OTE4LCAzMjY0NiwgNjk5MjMsIDY5OTI2LCA2OTkzMCwgNjk5MzgsIDY5OTQ3LCA0MTQ2MiwgNjk5NTUsIAotICAgIDY5OTY0LCA2OTk3MiwgNjk5NzksIDY5OTg3LCA2OTk5NywgNzAwMDYsIDcwMDE1LCA3MDAyNCwgNzAwMzIsIDcwMDQzLCAKLSAgICA3MDA1MywgOTM2NiwgMjE1NjcsIDcwMDYyLCA3MDA2NywgNzAwNzIsIDcwMDc2LCA3MDA4MCwgNzAwODUsIDcwMDkxLCAKLSAgICA3MDA5NiwgNzAxMDEsIDcwMTA3LCA3MDExMiwgNzAxMTcsIDIxNTMyLCA3MDEyMiwgNzAxMjksIDcwMTM3LCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU3LCA3MDE2NCwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODUsIDcwMTkzLCAzMjY2MywgNzAxOTksIAotICAgIDcwMjA1LCA3MDIxNywgNzAyMjMsIDcwMjI3LCA3MDIzNCwgNzAyMzksIDcwMjUwLCA3MDI2MCwgNzAyNzAsIDcwMjgyLCAKLSAgICA3MDI4OCwgNzAyOTgsIDcwMzA4LCAzMjY5MCwgNzAzMTcsIDcwMzI2LCA3MDMzMiwgNzAzNDQsIDcwMzU1LCA3MDM2MiwgCi0gICAgNzAzNjcsIDcwMzcxLCA3MDM3OSwgNzAzODUsIDcwMzkwLCA3MDM5NSwgNzA0MDIsIDcwNDEwLCA3MDQyMiwgNzA0MzIsIAotICAgIDcwNDQxLCA3MDQ1MCwgNzA0NTcsIDM0MTU3LCAyMzg1MSwgNzA0NjMsIDcwNDY4LCA3MDQ3MiwgNzA0NzYsIDcwNDgxLCAKLSAgICA3MDQ4NywgNzA0OTgsIDcwNTExLCA3MDUxNiwgNzA1MjMsIDMyNjk1LCA3MDUyOCwgNzA1NDAsIDcwNTQ5LCA3MDU1OSwgCi0gICAgNzA1NzAsIDcwNTgzLCA3MDU5MCwgNzA1OTksIDcwNjA4LCA3MDYxNiwgNzA2MjEsIDcwNjI3LCAxMDY5LCA3MDYzMiwgCi0gICAgNzA2MzcsIDcwNjQyLCA3MDY0NywgNzA2NTMsIDcwNjU4LCA3MDY2MywgNzA2NjksIDcwNjc1LCA3MDY4MCwgNzA2ODQsIAotICAgIDcwNjg5LCA3MDY5NCwgNzA2OTksIDU4NzY2LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcxOSwgNzA3MjUsIDcwNzMxLCAKLSAgICA3MDczNiwgNzA3NDAsIDcwNzQ1LCA3MDc1MCwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzIsIDcwNzc3LCA3MDc4MiwgCi0gICAgNzA3ODcsIDcwNzkyLCA3MDc5NiwgNzA4MDIsIDcwODA3LCA3MDgxNiwgNzA4MjEsIDcwODI2LCA3MDgzMSwgNzA4MzYsIAotICAgIDcwODQwLCA3MDg0NywgNzA4NTMsIDE3MTM1LCAxNzE0MiwgNzA4NTgsIDcwODYyLCA3MDg2NiwgNzA4NzAsIDcwODc0LCAKLSAgICA0NTUyNCwgNzA4NzgsIDcwODA4LCA3MDg4MCwgNzA4OTAsIDMyNzA0LCA3MDg5MywgNzA5MDIsIDcwOTA4LCA2MTQzLCAKLSAgICAzMjcwOSwgNzA5MTIsIDcwOTE4LCA3MDkyMywgNzA5MjksIDcwOTM0LCA3MDkzOCwgNzA5NDUsIDcwOTUwLCA3MDk2MCwgCi0gICAgNzA5NjksIDcwOTczLCA3MDk3OSwgNzA5ODUsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDcxMDEwLCA3MTAxOCwgNzEwMjYsIAotICAgIDMyNzE0LCA3MTAzMywgNzEwMzYsIDcxMDQzLCA3MTA0OSwgNzEwNTQsIDcxMDU4LCA3MTA2NCwgNzEwNzEsIDcxMDc2LCAKLSAgICA3MTA4MCwgNzEwODksIDcxMDk3LCA3MTEwMywgNzExMDgsIDMyNzE5LCA3MTExNSwgNzExMjIsIDcxMTI4LCA3MTEzMywgCi0gICAgNzExMzksIDcxMTQ2LCA3MTE1MiwgMjEyOTQsIDI3NDU1LCA3MTE1OCwgNzExNjMsIDcxMTY5LCA3MTE4MSwgNzA4NDEsIAotICAgIDcwODQ4LCAyMTQ3MCwgNzExOTEsIDcxMTk2LCA3MTIwMywgNzEyMDksIDcxMjE2LCA3MTIyMiwgNzEyMzMsIDcxMjM4LCAKLSAgICA5MTEwLCA3MTI0NiwgNzEyNDksIDcxMjU1LCA3MTI1OSwgNzEyNjMsIDcxMjY2LCA3MTI3MiwgMzI0NjgsIDYxOTQsIDk2NCwgCi0gICAgMTM0MTksIDcxMjc5LCA3MTI4NSwgNzEyOTEsIDcxMjk3LCA3MTMwMywgNzEzMDksIDcxMzE1LCA3MTMyMSwgNzEzMjcsIAotICAgIDcxMzMyLCA3MTMzNywgNzEzNDIsIDcxMzQ3LCA3MTM1MiwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzIsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODcsIDcxMzkyLCA3MTM5OCwgNzE0MDMsIDcxNDA4LCA3MTQxNCwgNzE0MTksIDcxNDI0LCA3MTQzMCwgCi0gICAgNzE0MzYsIDcxNDQyLCA3MTQ0OCwgNzE0NTQsIDcxNDYwLCA3MTQ2NiwgNzE0NzIsIDcxNDc4LCA3MTQ4MywgNzE0ODgsIAotICAgIDcxNDk0LCA3MTQ5OSwgNzE1MDQsIDcxNTEwLCA3MTUxNSwgNzE1MjAsIDcxNTI1LCA3MTUzMCwgNzE1MzUsIDcxNTQwLCAKLSAgICA3MTU0NSwgNzE1NTAsIDcxNTU1LCA3MTU2MCwgNzE1NjUsIDcxNTcwLCA3MTU3NiwgNzE1ODEsIDcxNTg2LCA3MTU5MSwgCi0gICAgNzE1OTcsIDcxNjAyLCA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMywgNzE2MjgsIDcxNjMzLCA3MTYzOCwgNzE2NDMsIAotICAgIDcxNjQ4LCA3MTY1MywgNzE2NTgsIDcxNjYzLCA3MTY2OCwgNzE2NzMsIDcxNjc4LCA3MTY4MywgNzE2ODgsIDcxNjkzLCAKLSAgICA3MTY5OCwgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzI0LCA3MTcyOSwgNzE3MzQsIDcxNzM5LCA3MTc0NCwgCi0gICAgNzE3NDksIDcxNzU0LCA3MTc1OSwgMTg2NCwgMTQyLCA3MTc2NCwgNzE3NjgsIDcxNzcyLCA3MTc3NywgNzE3ODUsIDcxNzg5LCAKLSAgICA3MTc5NiwgNzE4MDQsIDcxODA4LCA3MTgyMSwgNzE4MjksIDcxODMzLCA3MTgzNiwgNzE4NDEsIDcxODQ1LCA3MTg1MCwgCi0gICAgNzE4NTQsIDcxODYyLCA3MTg2NiwgMjA5MzcsIDcxODcxLCA3MTg3NSwgNjA5NjcsIDcxODc5LCA3MTg4MiwgNzE4OTAsIAotICAgIDcxODk4LCA3MTkwNiwgNzE5MTEsIDcxOTE4LCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MiwgNzE5NDcsIDcxOTU1LCAKLSAgICA2NDk0NywgNzE5NjIsIDcxOTY3LCA3MTk3MiwgNzE5NzYsIDExNjQ1LCA3MTk4MCwgNzE5ODUsIDcxOTkwLCA3MTk5NCwgCi0gICAgNzE5OTcsIDcyMDAzLCA3MjAwNywgNzIwMTcsIDcyMDI2LCA3MjAyOSwgNzIwMzMsIDcyMDQwLCA3MjA1MywgNzIwNTksIAotICAgIDcyMDY3LCA3MjA3OCwgNzIwODksIDcyMTAwLCA3MjExMSwgNzIxMjAsIDcyMTI2LCA3MjEzNSwgNzIxNDMsIDcyMTUzLCAKLSAgICA3MjE2NiwgNzIxNzMsIDcyMTg0LCA3MjE5MCwgNzIxOTUsIDcyMjAwLCA3MjIwNiwgNzIyMTIsIDcyMjIyLCA3MjIzMSwgCi0gICAgNzA1MzAsIDcyMjM5LCA3MjI0NSwgNzIyNTMsIDcyMjU5LCA3MjI2NywgNzIyNzAsIDcyMjc0LCA3MjI3OCwgNzIyODEsIAotICAgIDcyMjg3LCA3MjI5MywgNzIzMDEsIDcyMzEzLCA3MjMyNSwgNzIzMzIsIDcyMzM2LCA3MjM0NywgNzIzNTUsIDcyMzYyLCAKLSAgICA3MjM3NCwgNzIzODIsIDcyMzkwLCA3MjM5NywgNzI0MDMsIDcyNDEzLCA3MjQyMiwgNzI0MjcsIDcyNDM3LCA3MjQ0NiwgCi0gICAgNDA3ODgsIDcyNDUzLCA3MjQ1NywgNzI0NjIsIDcyNDcwLCA3MjQ3NywgNzI0ODMsIDcyNDg3LCA3MjQ5NywgNzI1MDgsIAotICAgIDcyNTE2LCA3MjUyMywgNzI1MzUsIDcyNTQ3LCA3MjU1NiwgNjk1NzIsIDcyNTYzLCA3MjU3NCwgNzI1ODgsIDcyNTk2LCAKLSAgICA3MjYwNiwgNzI2MTMsIDcyNjIxLCA3MjYzMywgNzI2NDIsIDcyNjUwLCA3MjY2MCwgNzI2NzEsIDcyNjgzLCA3MjY5MiwgCi0gICAgNzI3MDIsIDcyNzA5LCA3MjcxOCwgNzI3MzMsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzY4LCA3Mjc4MSwgNzI3OTYsIAotICAgIDcyODAwLCA3MjgwOSwgNzI4MjEsIDcyODMyLCA3Mjg0MywgNzI4NTQsIDcyODY0LCA3Mjg3NSwgNzI4ODMsIDcyODg5LCAKLSAgICA3Mjg5OSwgNzI5MDcsIDcyOTEzLCAyOTAyOCwgNzI5MTgsIDcyOTI0LCA3MjkyOSwgNzI5MzYsIDk3MDgsIDE3NTA1LCAKLSAgICA3Mjk0MiwgNzI5NTEsIDcyOTU2LCA3Mjk2MCwgNzI5NjcsIDcyOTczLCA3Mjk3OCwgNzI5ODMsIDcyOTkxLCA3Mjk5OSwgCi0gICAgNzMwMDMsIDczMDA2LCA3MzAwOSwgNzMwMTEsIDczMDE4LCA3MzAyNCwgNzMwMzUsIDczMDQwLCA3MzA0NCwgNzMwNTEsIAotICAgIDczMDU3LCA3MzA2MiwgNzMwNzAsIDY1NDQ2LCA2NTQ1NiwgNzMwNzYsIDczMDgzLCA3MzA5MywgMTA2MTgsIDczMTAwLCAKLSAgICA3MzEwNSwgMjkyMjQsIDczMTE0LCA3MzExOSwgNzMxMjYsIDczMTM2LCA3MzE0NCwgNzMxNTIsIDczMTYxLCA3MzE2NywgCi0gICAgNzMxNzMsIDczMTgwLCA3MzE4NywgNzMxOTIsIDczMTk2LCA3MzIwNCwgNzMyMDksIDczMjE0LCA3MzIyMiwgNzMyMjksIAotICAgIDczMjM0LCA3MzI0MCwgNzMyNDMsIDczMjQ3LCA3MzI1NiwgNzE4MTYsIDczMjY1LCA3MzI2OSwgNzMyNzUsIDczMjg2LCAKLSAgICA3MzI5NiwgMTc1MTQsIDczMzA3LCA3MzMxNSwgMTc1MjYsIDczMzIyLCA3MzMyNiwgNzMzMzUsIDI3MzQxLCA3MzM0MiwgCi0gICAgNzMzNDYsIDczMzUxLCA3MzM2OCwgNzMzODAsIDEwNTc2LCA3MzM5MiwgNzMzOTcsIDczNDAyLCA3MzQwNywgMjEwMTAsIAotICAgIDczNDExLCA3MzQxNiwgNzM0MjEsIDczNDI3LCA3MzQzMiwgNTg0NiwgMjEwMTQsIDczNDM3LCA3MzQ0MiwgNzM0NDgsIAotICAgIDczNDU1LCA3MzQ2MCwgNzM0NjUsIDczNDcxLCA3MzQ3NywgNzM0ODMsIDczNDg4LCA3MzQ5NCwgNzM0OTgsIDczNTEyLCAKLSAgICA3MzUyMCwgNzM1MjgsIDczNTM0LCA3MzUzOSwgNzM1NDYsIDczNTU2LCA3MzU2NSwgNzM1NzAsIDczNTc1LCA3MzU4MywgCi0gICAgNzM1ODgsIDczNTk0LCA3MzU5OSwgNzM2MDgsIDU5ODIzLCA3MzYxMywgNzM2MTYsIDczNjM0LCA3MzY1MywgNzM2NjYsIAotICAgIDczNjgwLCA3MzY5NiwgNzM3MDMsIDczNzEwLCA3MzcxNiwgNzM3MjMsIDczNzI4LCA3MzczNCwgNzM3NDAsIDczNzQ4LCAKLSAgICA3Mzc1NCwgNzM3NTksIDczNzY0LCA3Mzc4MCwgMTA1ODksIDczNzk0LCA3MzgwMSwgNzM4MDksIDczODE1LCA3MzgxOSwgCi0gICAgNzM4MjIsIDczODI3LCA3MzgzMiwgNzM4MzksIDczODQ0LCA3Mzg1MywgNzM4NTgsIDczODY0LCA3Mzg3MywgNzM4ODIsIAotICAgIDczODg3LCA3Mzg5MSwgNzM4OTksIDczOTA4LCAxMTY3NCwgNzM5MTcsIDczOTI1LCA3MzkzMCwgNzM5MzYsIDExNjg1LCAKLSAgICA3Mzk0MSwgNzM5NDQsIDczOTQ5LCA3Mzk1OSwgNzM5NjgsIDczOTczLCA3Mzk3OSwgNzM5ODQsIDczOTkyLCA3Mzk5OSwgCi0gICAgNzQwMTAsIDc0MDIwLCA3NDAyNSwgNjQ4NzUsIDc0MDMwLCA3NDAzNiwgNzQwNDEsIDc0MDQ4LCA3NDA1NywgNzQwNjUsIAotICAgIDc0MDcxLCA3NDA3NywgNzQwODQsIDc0MDkwLCA3NDA5NCwgMTY5NjAsIDMwNTUsIDc0MDk5LCA3NDEwMywgNzQxMDcsIAotICAgIDc0MTEzLCA3NDEyMiwgNzQxMjgsIDc0MTM1LCA3NDEzOSwgNzQxNjAsIDc0MTgyLCA3NDE5OCwgNzQyMTUsIDc0MjM0LCAKLSAgICA3NDI0MywgNzQyNTMsIDc0MjYwLCA3NDI2NywgMjcyMjgsIDc0MjczLCA3NDI3NywgNzQyODUsIDc0Mjk3LCA3NDMwMywgCi0gICAgNzQzMTEsIDc0MzE1LCA3NDMyMywgNzQzMzAsIDc0MzM0LCA3NDM0MCwgNzQzNDYsIDc0MzUxLCAzNTYzLCA0MTkyNCwgCi0gICAgNzQzNTcsIDc0MzYxLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OSwgNzQzODQsIDc0MzkwLCA3NDM5NiwgNzQ0MDIsIAotICAgIDc0NDA5LCA3NDQxNSwgNzQ0MjIsIDc0NDI4LCA3NDQzNCwgNzQ0MzksIDc0NDQ1LCA3NDQ1MCwgNzQ0NTQsIDc0NDU5LCAKLSAgICA3NDQ2MywgNzQ0NjgsIDQxOTM5LCA3NDQ3MiwgNzQ0NzcsIDc0NDg1LCA3NDQ4OSwgNzQ0OTQsIDc0NTAxLCA3NDUxMCwgCi0gICAgNzQ1MTYsIDc0NTIwLCA3NDUyNywgNzQ1MzEsIDc0NTM0LCA3NDU0MSwgNzQ1NTAsIDc0NTU1LCA3NDU1OSwgNzQ1NjcsIAotICAgIDc0NTc2LCA3NDU4MCwgNzQ1ODgsIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjEwLCA3NDYxNiwgNzQ2MjEsIDc0NjI1LCAKLSAgICA3NDYzMSwgNzQ2MzYsIDc0NjQwLCA3NDY0NCwgNzQ2NDcsIDc0NjUyLCA3NDY2MCwgNzQ2NzAsIDc0Njc1LCAzOTQxNiwgCi0gICAgNzQ2ODMsIDc0Njk1LCA3NDY5OSwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzUsIDc0NzQxLCA3NDc0OCwgNzQ3NjAsIAotICAgIDc0NzY3LCA3NDc3MywgMjEwODgsIDc0Nzc3LCA3NDc4MywgNzQ3OTAsIDc0Nzk2LCA3NDgwMiwgNzQ4MDcsIDc0ODEyLCAKLSAgICA3NDgxNywgNzQ4MjYsIDcwMzMsIDc0ODMxLCAxNjQyNiwgNzQ4MzcsIDc0ODQxLCA3NDg0NSwgNzQ4NDksIDc0ODU3LCAKLSAgICA3NDg2NiwgNzQ4NzAsIDc0ODc3LCA3NDg4NiwgNzQ4OTksIDc0OTA1LCA3NDQ2NCwgMzAwODgsIDc0OTEwLCA3NDkxMiwgCi0gICAgNzQ5MTcsIDc0OTIyLCA3NDkyNywgNzQ5MzIsIDc0OTM3LCA3NDk0MiwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIAotICAgIDc0OTY3LCA3NDk3MiwgNzQ5NzcsIDc0OTgyLCA3NDk4OCwgNzQ5OTMsIDc0OTk4LCA3NTAwMywgNzUwMDgsIDc1MDEzLCAKLSAgICA3NTAxOCwgNzUwMjMsIDc1MDI4LCA3NTAzNCwgNzUwNDAsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDY4LCA3NTA3MywgCi0gICAgMTg3MCwgNDYsIDc1MDc4LCA3NTA4MywgMzI3NDYsIDc1MDg3LCAzMjc1MSwgMzI3NTYsIDMyNzYyLCAzMjc2NywgNzUwOTEsIAotICAgIDMyNzcyLCAyMjA4MywgNzUxMTMsIDc1MTE3LCA3NTEyMSwgNzUxMjYsIDc1MTMwLCAzMjc3NiwgNzUxMzQsIDc1MTQyLCAKLSAgICAzMjc4MSwgNzUxNDksIDc1MTUyLCA3NTE1NywgNzUxNjEsIDk1NDMsIDc1MTcwLCAzMjc4NiwgMjE5NDUsIDc1MTczLCAKLSAgICA3NTE3NywgMTQyOCwgNzUxODIsIDMyNzk3LCA3NTE4NSwgNzUxOTAsIDI1NzM3LCAyNTc0NywgMzUyNTgsIDc1MTk1LCAKLSAgICA3NTIwMCwgNzUyMDUsIDc1MjEwLCA3NTIxNiwgNzUyMjEsIDc1MjMwLCA3NTIzNSwgNzUyNDIsIDc1MjQ4LCA3NTI1MywgCi0gICAgNzUyNTgsIDc1MjYzLCA3NTI3MywgNzUyODIsIDc1Mjg3LCA3NTI5NSwgNzUyOTksIDc1MzA3LCAzMjYxMSwgMzczMTcsIAotICAgIDc1MzE0LCA3NTMyMCwgNzUzMjUsIDc1MzMwLCAxMjAxNiwgNzUzMzUsIDc1MzQxLCA3NTM0NiwgNzUzNTMsIDc1MzU5LCAKLSAgICA3NTM2NCwgNzUzNzIsIDc1MzgyLCA3NTM5MiwgNzUzOTgsIDc1NDAzLCA3NTQwOSwgMTc1MzYsIDc1NDE2LCAzNjA3MywgCi0gICAgNzU0MjksIDc1NDM0LCA3NTQ0MCwgMzA5OTMsIDc1NDUzLCA3NTQ1OSwgNzU0NjMsIDc1NDcyLCA3NTQ3OSwgNzU0ODUsIAotICAgIDc1NDkzLCA3NTUwMiwgNzU1MDksIDc1NTE1LCA3NTUxOCwgNzU1MjIsIDI1ODc4LCA3NTUyNiwgNzU1MzMsIDc1NTM5LCAKLSAgICA3NTU0NywgNzU1NTIsIDIzOTk0LCA3NTU1OCwgNzU1NjEsIDc1NTY5LCA3NTU3NywgNzU1OTEsIDc1NTk4LCA3NTYwNCwgCi0gICAgNzU2MTEsIDc1NjE3LCAzMjgxMSwgNzU2MjEsIDc1NjI4LCA3NTYzNiwgNzU2NDQsIDc1NjUwLCAzMjgxNiwgNzU2NTgsIAotICAgIDc1NjY0LCA3NTY2OSwgNzU2NzksIDc1Njg1LCA3NTY5NCwgMzA4MzAsIDM0NzE2LCA3NTcwMiwgNzU3MDcsIDc1NzEyLCAKLSAgICA3NTcxNiwgNzU3MjEsIDc1NzI1LCA3NTczMywgMTQ5MjAsIDM5NDI5LCA3NTczOCwgNzU3NDMsIDMyODIxLCA2MjI2OSwgCi0gICAgNzU3NDcsIDc1NzUyLCA3NTc1NiwgNzU3NjUsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDc1NzkwLCA3NTc5NywgNzU4MDMsIAotICAgIDc1ODA4LCA3NTgxMywgNzU4MjIsIDc1ODM0LCA3NTg0OSwgMzMwODMsIDc1ODU1LCAxNjU0NSwgMzI4MjUsIDc1ODU5LCAKLSAgICA3NTg2NiwgMjQxMDQsIDc1ODcyLCA3NTg3OSwgNzU4ODgsIDc1ODk1LCA3NTkwNCwgNzU5MTAsIDc1OTE1LCA3NTkyMywgCi0gICAgNzU5MjksIDMyODM1LCA3NTkzNCwgNzU5NDMsIDc0NzIzLCA3NTk1MiwgNzU5NTksIDc1OTY1LCA3NTk3MSwgNzU5ODEsIAotICAgIDc1OTg5LCA3NTk5NiwgNzYwMDAsIDMyODQwLCA3NjAwMywgMzI4NDYsIDMyODUyLCA3NjAwOCwgNzYwMTYsIDc2MDI0LCAKLSAgICA3NjAzNCwgNzYwNDMsIDc2MDUxLCA3NjA1OCwgNzYwNjgsIDMyODU3LCA3NjA3MiwgNzYwNzQsIDc2MDc4LCA3NjA4MywgCi0gICAgNzYwODcsIDc2MDkxLCA3NjA5NywgNzYxMDIsIDc2MTA2LCA3NjExNywgNzYxMjIsIDc2MTI3LCAzMDYwLCA3NjEzMSwgCi0gICAgNzYxMzgsIDc2MTQyLCA3NjE1MSwgNzYxNTksIDc2MTY2LCA3NjE3MSwgNzYxNzYsIDYyMzE1LCA3NjE4MCwgNzYxODMsIAotICAgIDc2MTg5LCA3NjE5NywgNzYyMDMsIDc2MjA3LCA3NjIxMiwgNzYyMTksIDc2MjI0LCA3NjIzMCwgMzQ3NDcsIDc2MjM1LCAKLSAgICA3NjIzOCwgNzYyNDMsIDc2MjQ3LCA3NjI1MiwgNzYyNTcsIDc2MjYxLCA3NjI2OSwgNzYyNzMsIDI1NzU2LCAyNTc2NSwgCi0gICAgNzYyNzksIDc2Mjg1LCA3NjI5MSwgNzYyOTYsIDc2MzAwLCA3NjMwMywgNzYzMTMsIDc2MzIyLCA3NjMyNywgNzYzMzMsIAotICAgIDc2MzQwLCA3NjM0NiwgNzYzNTAsIDc2MzU4LCA3NjM2MywgMzQ3NTMsIDc2MzY3LCA3NjM3NSwgNzYzODEsIDc2Mzg4LCAKLSAgICA3NjM5MywgNzYzOTcsIDc2NDAyLCA1ODQ0MCwgMzQ3NTksIDc2NDA4LCA3NjQxMywgNzY0MTcsIDc2NDIyLCA3NjQyNywgCi0gICAgNzY0MzIsIDc2NDM2LCA3NjQ0MSwgNzY0NDYsIDc2NDUyLCA3NjQ1NywgNzY0NjIsIDc2NDY4LCA3NjQ3NCwgNzY0NzksIAotICAgIDc2NDgzLCA3NjQ4OCwgNzY0OTMsIDc2NDk4LCA3NjUwMiwgMjQxMDMsIDc2NTA3LCA3NjUxMiwgNzY1MTgsIDc2NTI0LCAKLSAgICA3NjUzMCwgNzY1MzUsIDc2NTM5LCA3NjU0NCwgNzY1NDksIDc2NTU0LCA3NjU1OCwgNzY1NjMsIDc2NTY4LCA3NjU3MywgCi0gICAgNzY1NzgsIDc2NTgyLCAzMjg2NSwgNzY1OTAsIDc2NTk0LCA3NjYwMiwgNzY2MTAsIDc2NjIxLCA3NjYyNiwgNzY2MzAsIAotICAgIDIyMzk3LCA3NjYzNSwgNzY2NDEsIDc2NjUxLCA3NjY1OCwgNzY2NjMsIDc2NjcyLCA3NjY3NywgNzY2ODEsIDc2Njg2LCAKLSAgICA3NjY5NCwgNzY3MDIsIDc2NzA5LCA2NTEwOSwgNzY3MTUsIDc2NzIzLCA3NjczMCwgNzY3NDEsIDc2NzQ3LCA3Njc1MSwgCi0gICAgNzY3NTcsIDMyODc1LCA3Njc2MCwgNzY3NjcsIDc2Nzc1LCA3Njc4MCwgMzk2MjAsIDc2Nzg0LCA3Njc4OSwgNzY3OTYsIAotICAgIDc2ODAxLCA4OTkyLCA3NjgwNSwgNzY4MTMsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQ3LCA2MzM4MSwgNzY4NTUsIAotICAgIDc2ODYxLCA3Njg2NSwgNzY4NjgsIDc2ODc2LCA3Njg4MywgNzY4ODgsIDc2OTAxLCA3NjkwOCwgNzY5MTIsIDc2OTE5LCAKLSAgICA3NjkyNCwgNjA4NjAsIDc2OTI5LCA3NjkzMiwgNzY5MzksIDc2OTQ1LCA3Njk0OSwgNzY5NTcsIDc2OTY2LCA3Njk3NiwgCi0gICAgNzY5ODYsIDc2OTk1LCA3NzAwMywgNzcwMTQsIDc3MDE5LCA3NzAyMywgNzcwMjgsIDc3MDMyLCAzNTM4OSwgNzcwNDAsIAotICAgIDIxMzU3LCAzNTM5OCwgNzcwNDUsIDc3MDUwLCA3NzA1NSwgNzcwNjAsIDc3MDY1LCA3NzA3MCwgNzcwNzUsIDc3MDc5LCAKLSAgICA3NzA4NCwgNzcwODksIDc3MDk0LCA3NzA5OSwgNzcxMDQsIDc3MTA5LCA3NzExMywgNzcxMTgsIDc3MTIzLCA3NzEyNywgCi0gICAgNzcxMzEsIDc3MTM1LCA3NzEzOSwgNzcxNDQsIDc3MTQ5LCA3NzE1MywgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzEsIAotICAgIDc3MTc2LCA3NzE4MSwgNzcxODYsIDc3MTkwLCA3NzE5NSwgNzcyMDAsIDc3MjA0LCA3NzIwOSwgNzcyMTQsIDc3MjE5LCAKLSAgICA3NzIyNCwgNzcyMjksIDc3MjM0LCA3NzIzOSwgNzcyNDQsIDc3MjQ5LCA3NzI1NCwgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA4LCA3NzMxMywgNzczMTgsIAotICAgIDc3MzIzLCA3NzMyOCwgNzczMzMsIDc3MzM4LCA3NzM0MywgNzczNDgsIDc3MzUzLCA3NzM1OCwgNzczNjMsIDc3MzY3LCAKLSAgICA3NzM3MiwgNzczNzYsIDc3MzgxLCA3NzM4NiwgNzczOTEsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgCi0gICAgNzc0MjEsIDc3NDI1LCA3NzQyOSwgNzc0MzQsIDc3NDM5LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1NywgNzc0NjIsIAotICAgIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgxLCA3NzQ4NiwgNzc0OTEsIDc3NDk1LCA3NzUwMCwgNzc1MDQsIDc3NTA4LCAKLSAgICA3NzUxMiwgNzc1MTYsIDc3NTIxLCA3NzUyNSwgNzc1MjksIDc3NTMzLCA3NzUzNywgNzc1NDEsIDc3NTQ1LCA3NzU0OSwgCi0gICAgNzc1NTMsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIAotICAgIDc3NjAyLCA3NzYwNywgNzc2MTEsIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzYsIDc3NjQwLCAKLSAgICA3NzY0NSwgNzc2NDksIDc3NjU0LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MiwgNzc2NzYsIDc3NjgwLCA3NzY4NCwgCi0gICAgNzc2ODgsIDc3NjkyLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOCwgNzc3MTIsIDc3NzE2LCA3NzcyMCwgNzc3MjQsIAotICAgIDc3NzI4LCA3NzczMywgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY3LCAKLSAgICA3Nzc3MSwgNzc3NzUsIDc3Nzc5LCA3Nzc4MywgNzc3ODcsIDc3NzkxLCA3Nzc5NiwgNzc4MDAsIDc3ODA1LCA3NzgwOSwgCi0gICAgNzc4MTMsIDc3ODE3LCA3NzgyMSwgNzc4MjUsIDc3ODI5LCA3NzgzMywgNzc4MzcsIDc3ODQxLCA3Nzg0NSwgNzc4NDksIAotICAgIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgNzc4ODYsIDc3ODkwLCAKLSAgICA3Nzg5NCwgNzc4OTgsIDc3OTAzLCA3NzkwNywgNzc5MTEsIDc3OTE2LCA3NzkyMSwgNzc5MjUsIDc3OTI5LCA3NzkzMywgCi0gICAgNzc5MzcsIDc3OTQxLCA3Nzk0NSwgNzc5NDksIDc3OTUzLCA3Nzk1OCwgNzc5NjIsIDc3OTY3LCA3Nzk3MSwgNzc5NzYsIAotICAgIDc3OTgwLCA3Nzk4NSwgNzc5ODksIDc3OTk1LCA3ODAwMCwgNzgwMDQsIDc4MDA5LCA3ODAxMywgNzgwMTgsIDc4MDIyLCAKLSAgICA3ODAyNywgNzgwMzEsIDc4MDM2LCAxNTIxLCA3ODA0MCwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwNDQsIDc4MDQ4LCAyODI4LCAKLSAgICA3ODA1MiwgMTM5NywgNzgwNTcsIDEzNDIsIDc4MDYxLCAyODQwLCA3ODA2NSwgNzgwNzIsIDc4MDc5LCA3ODA5MywgMjg0NCwgCi0gICAgNzEzMSwgNzgxMDIsIDc4MTEwLCA3ODExNywgNzgxMjgsIDc4MTM3LCA3ODE0NCwgNzgxNTYsIDc4MTY5LCA3ODE4MiwgCi0gICAgNzgxOTMsIDc4MTk4LCA3ODIwNSwgNzgyMTcsIDc4MjIxLCAyODQ4LCAxMTc0NywgNzgyMzEsIDc4MjM2LCA3ODI0NSwgCi0gICAgNzgyNTUsIDI4NTIsIDc4MjYwLCA3ODI2NCwgNzgyNjksIDc4Mjc2LCA3ODI4MiwgNzgyOTAsIDc4MzAyLCAxMzQ3LCAKLSAgICAxMzA0MiwgNzgzMTIsIDc4MzE2LCA3ODMyMiwgNzgzMzYsIDc4MzQ4LCA3ODM2MCwgNzgzNzAsIDc4Mzc5LCA3ODM4OCwgCi0gICAgNzgzOTcsIDc4NDA1LCA3ODQxNiwgNzg0MjQsIDQwNTEsIDc4NDM0LCA3ODQ0NSwgNzg0NTQsIDc4NDYwLCA3ODQ3NSwgCi0gICAgNzg0ODIsIDc4NDg4LCAzNTUxNCwgNzg0OTMsIDI4NzYsIDEzMDQ2LCA3ODQ5NywgNzg1MDQsIDg5MzAsIDc4NTEzLCAyODgxLCAKLSAgICAzMjM2MSwgNzg1MTksIDYwNjA5LCA3ODUyNiwgNzg1MzIsIDc4NTQzLCA3ODU0OSwgNzg1NTYsIDc4NTYyLCA3ODU3MCwgCi0gICAgNzg1NzcsIDc4NTgzLCA3ODU5MywgNzg2MDIsIDc4NjEzLCA3ODYyMCwgNzg2MjYsIDc4NjM2LCA3ODY0NCwgNzg2NTAsIAotICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDc4NjgzLCA3ODY4NiwgNzg2OTIsIDc4Njk5LCA3ODcwNSwgNzg3MTMsIDc4NzIyLCAKLSAgICA3ODczMCwgNzg3MzYsIDc4NzQ1LCA0MTQ2NCwgNzg3NTksIDc4NzY0LCA3ODc3MCwgMTQ3NTcsIDc4Nzc1LCA3ODc4OCwgCi0gICAgNzg3OTcsIDc4ODA1LCA3ODgxMiwgNzg4MTYsIDc4ODIwLCA3ODgyMywgNzg4MzAsIDc4ODM3LCA3ODg0NSwgNzg4NTMsIAotICAgIDc4ODYyLCA3ODg3MCwgMTQ2ODQsIDc4ODc4LCA3ODg4MywgNzg4ODcsIDc4ODk5LCA3ODkwNiwgNzg5MTUsIDc0OCwgCi0gICAgNzg5MjUsIDc4OTM0LCA3ODk0NSwgMjg5NywgNzg5NDksIDc4OTUzLCA3ODk1OSwgNzg5NzIsIDc4OTg0LCA3ODk5NCwgCi0gICAgNzkwMDMsIDc5MDE1LCAyNjM2OSwgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTQsIDc5MDY1LCA3OTA3NSwgNzkwODUsIAotICAgIDc5MDk0LCA3OTEwMiwgMTEzMTIsIDc5MTA5LCA3OTExMywgNzkxMTYsIDc5MTIxLCA3OTEyNiwgNzkxMzAsIDc5MTM2LCAKLSAgICAxMzUyLCAxMTgxOCwgNzkxNDMsIDc5MTU0LCA3OTE2MywgNzkxNzEsIDc5MTgwLCA3OTE4OCwgNzkyMDQsIDc5MjE1LCAKLSAgICA3OTIyNCwgNzkyMzIsIDc5MjQ0LCA3OTI1NSwgNzkyNzEsIDc5MjgxLCA3OTMwMiwgNzkzMTUsIDc5MzIzLCA3OTMzMCwgCi0gICAgMTQ4NjgsIDc5MzQzLCA3OTM0OCwgNzkzNTQsIDU5MDgsIDc5MzYwLCA3OTM2MywgNzkzNzAsIDc5MzgwLCA4MTc2LCAKLSAgICA3OTM4NywgNzkzOTIsIDc5Mzk3LCA3OTQwMiwgNzk0MTAsIDc5NDE5LCA3OTQyNywgOTc1NiwgOTc2NSwgNzk0MzIsIAotICAgIDc5NDQzLCA3OTQ0OCwgNzk0NTQsIDI5MTMsIDI5MTgsIDc5NDYwLCAxMDg3OSwgNzk0NjYsIDc5NDczLCA3OTQ4MCwgCi0gICAgNzk0OTMsIDIyNTEsIDY4LCA3OTQ5OCwgNzk1MDMsIDc5NTEzLCA3OTUxOSwgNzk1MjgsIDc5NTM2LCA3OTU0NiwgNzk1NTAsIAotICAgIDc5NTU1LCA3OTU1OSwgNzk1NzEsIDI5NDEsIDc5NTc5LCA3OTU4NywgNzk1OTIsIDc5NjAzLCA3OTYxNCwgNzk2MjMsIAotICAgIDc5NjI4LCA3OTYzNCwgNzk2MzksIDc5NjQ5LCA3OTY1OSwgNzk2NjQsIDc5NjcwLCA3OTY3NCwgNzk2NzksIDc5Njg4LCAKLSAgICAyMTQxMCwgNzk2OTIsIDQxMjgsIDIwLCA3OTY5NywgNzk3MDYsIDc5NzEzLCA3OTcyMCwgNzk3MjYsIDc5NzMyLCA4NjQsIAotICAgIDc5NzM3LCA3OTc0MiwgNjA5MzcsIDc5NzQ3LCA3OTc1MiwgNzk3NTgsIDc5NzY0LCA3OTc3MiwgNzk3NzcsIDc5Nzg0LCAKLSAgICA3OTc5MCwgNzk3OTUsIDM4MDMwLCA0MTM1OCwgNzk4MDEsIDI5NDUsIDMyLCA3OTgxMSwgNzk4MjQsIDc5ODI5LCA3OTgzNywgCi0gICAgNzk4NDIsIDc5ODQ4LCAyOTY3LCAyODMxMCwgNzk4NTMsIDc5ODYxLCA3OTg2OCwgNzk4NzMsIDU4NjgyLCA2MTk0MCwgCi0gICAgNzk4ODIsIDc5ODg2LCAxNzA0LCAxODEzLCA3OTg5MSwgNzk4OTYsIDc5OTAzLCAxODE3LCAyNDcsIDc5OTEwLCA3OTkxNiwgCi0gICAgMjk4OSwgNzk5MjEsIDc5OTI2LCA3OTkzMywgMTgyMSwgNzk5MzgsIDc5OTQ0LCA3OTk0OSwgNzk5NjEsIDYxMTksIDc5OTcxLCAKLSAgICAxODI4LCA3OTk3NywgNzk5ODIsIDc5OTg5LCA3OTk5NiwgODAwMTEsIDgwMDE4LCA4MDAyOSwgODAwMzcsIDI2MTgsIAotICAgIDgwMDQxLCA4MDA1MywgODAwNTgsIDgwMDYyLCA4MDA2OCwgMjgxMzUsIDIyNTYsIDgwMDcyLCA4MDA4MywgODAwODcsIAotICAgIDgwMDkxLCA4MDA5NywgODAxMDEsIDgwMTEwLCA4MDExNCwgODAxMjUsIDgwMTI5LCAyMzAyLCAzMjE5MCwgODAxMzMsIAotICAgIDgwMTQzLCAzMDgwLCA5MzcxLCA4MDE1MSwgODAxNTYsIDgwMTYwLCA4MDE2OSwgODAxNzYsIDgwMTgyLCAzMDUwLCAxNzE1MiwgCi0gICAgODAxODYsIDgwMTk5LCA4MDIxNywgODAyMjIsIDgwMjMwLCA4MDIzOCwgODAyNDgsIDk5ODUsIDEzMTU0LCA4MDI2MCwgCi0gICAgODAyNzMsIDgwMjgwLCA4MDI4NywgODAzMDMsIDgwMzEwLCA4MDMxNiwgMTA2NCwgODAzMjMsIDgwMzMwLCA4MDM0MCwgCi0gICAgODAzNDksIDgwMzYxLCA0MjMyOCwgODAzNjksIDMwNjQsIDEyMDMwLCA4MDM3MiwgODAzODAsIDgwMzg0LCA3ODI3MiwgCi0gICAgMzA2OCwgODAzODgsIDIxMTkxLCAxMjA0NiwgMzc1NiwgODAzOTIsIDMwNzQsIDgwMzk2LCA4MDQwNiwgODA0MTIsIDgwNDE4LCAKLSAgICA4MDQyNCwgODA0MzAsIDgwNDM2LCA4MDQ0MiwgODA0NDgsIDgwNDU0LCA4MDQ2MCwgODA0NjYsIDgwNDcyLCA4MDQ3OCwgCi0gICAgODA0ODQsIDgwNDkwLCA4MDQ5NiwgODA1MDIsIDgwNTA4LCA4MDUxNCwgODA1MjAsIDgwNTI2LCA4MDUzMiwgODA1MzgsIAotICAgIDgwNTQ0LCA4MDU1MCwgODA1NTYsIDgwNTYzLCA4MDU3MCwgODA1NzYsIDgwNTgyLCA4MDU4OCwgODA1OTQsIDgwNjAwLCAKLSAgICA4MDYwNiwgMTM1NywgMTYwNjIsIDEyMDY4LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCAKLSAgICA4MDY0MiwgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgCi0gICAgODA2OTIsIDgwNjk3LCA4MDcwMiwgODA3MDcsIDgwNzEyLCA4MDcxNywgODA3MjIsIDgwNzI3LCA4MDczMiwgODA3MzcsIAotICAgIDgwNzQzLCA4MDc0OCwgODA3NTMsIDgwNzU5LCA4MDc2NCwgODA3NzAsIDgwNzc1LCA4MDc4MCwgODA3ODYsIDgwNzkxLCAKLSAgICA4MDc5NiwgODA4MDEsIDgwODA2LCA4MDgxMSwgODA4MTYsIDgwODIxLCA4MDgyNiwgODA0MDcsIDgwNDEzLCA4MDQxOSwgCi0gICAgODA0MjUsIDgwNDMxLCA4MDQzNywgODA0NDMsIDgwNDQ5LCA4MDQ1NSwgODA0NjEsIDgwNDY3LCA4MDQ3MywgODA0NzksIAotICAgIDgwNDg1LCA4MDQ5MSwgODA4MzIsIDgwNDk3LCA4MDUwMywgODA1MDksIDgwODM4LCA4MDUxNSwgODA1MjEsIDgwNTI3LCAKLSAgICA4MDUzMywgODA1MzksIDgwNTQ1LCA4MDU1MSwgODA1NzEsIDgwODQ0LCA4MDg1MCwgODA1NzcsIDgwODU2LCA4MDU4MywgCi0gICAgODA1ODksIDgwNTk1LCA4MDYwMSwgODA2MDcsIDMwOTEsIDMwOTYsIDgwODYyLCA4MDg2NywgODA4NzAsIDgwODc2LCAKLSAgICA4MDg4MiwgODA4ODksIDgwODk0LCA4MDg5OSwgMjMwNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCAzOSwgNDUsIDQ3LCA1MCwgNjIsIDcwLCA4MCwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0MCwgMTQ1LCAxNDgsIDE1MiwgMTU4LCAxNjQsIDE2OSwgMTc3LCAxODIsIDE4OSwgCisgICAgMTk3LCAxOTgsIDIwMSwgMjA5LCAyMTUsIDIyNCwgMjMxLCAyNDEsIDI0OCwgMjUzLCAyNTYsIDI2MSwgMTQ5LCAyNjcsIAorICAgIDI3MywgMjc2LCAyODAsIDI4NSwgMjkxLCAyOTcsIDMwMiwgMzA4LCAzMTMsIDMyMiwgMzI4LCAzMzUsIDM0MiwgMzUxLCAKKyAgICAzNTYsIDM2MSwgMzY5LCAzNzEsIDM3MiwgMzgwLCAzODgsIDM5NSwgMzk4LCA0MDQsIDQxMSwgNDE2LCA0MTgsIDQyNSwgCisgICAgNDI3LCAzMDYsIDQyOSwgNDMxLCA0MzYsIDQ0MywgNDUxLCA0NTUsIDQ2MSwgNDY2LCA0NzEsIDQ3NiwgNDgzLCA0OTMsIAorICAgIDQ5NiwgNTAzLCA1MTMsIDUyMiwgNTI5LCA1MzgsIDU0NSwgNTQ5LCA1NTcsIDU2MCwgNTczLCA1ODAsIDU4NCwgNTkzLCAKKyAgICA1OTcsIDYwMSwgNjA3LCA2MTEsIDYxNSwgNjE2LCA2MjUsIDYzMywgNjM4LCA2NDYsIDY1MSwgNjU3LCA2NjUsIDY2OCwgCisgICAgNjc1LCA2ODQsIDY5MiwgNjk1LCA2OTgsIDcwMCwgNzA2LCA3MTQsIDcyMSwgNzI0LCA3MzQsIDczOCwgNzQyLCA3NTMsIAorICAgIDc1OCwgNzYyLCA3NjYsIDc3MywgNzgwLCA3ODQsIDc4OCwgNzgyLCA3OTQsIDc5OCwgODAzLCA4MDYsIDgxMCwgODE2LCAKKyAgICA4MjEsIDgzMCwgODM4LCA4NDMsIDYxMCwgNTQzLCA4NDgsIDg1MSwgODU3LCA4NjEsIDg2NywgODc0LCA4NzcsIDg4NiwgCisgICAgODk1LCA5MDIsIDkxNSwgOTE5LCA5MjcsIDkzNiwgOTQyLCA5NTAsIDk1NywgOTY3LCA5NzQsIDk3OSwgOTg1LCA5OTMsIAorICAgIDk5NywgMTAwMCwgMjEsIDEwMDksIDEwMTgsIDEwMjYsIDEwMzAsIDEwMzUsIDEwMzgsIDEwNDcsIDEwNTIsIDEwNTQsIAorICAgIDEwNjEsIDEwNjUsIDEwNjgsIDEwNzEsIDEwNzgsIDEwODMsIDEwODcsIDEwOTAsIDEwOTQsIDExMDIsIDExMDgsIDExMTgsIAorICAgIDExMjQsIDExMzEsIDExMzUsIDExNDMsIDExNDYsIDExNTEsIDExNTcsIDExNjMsIDExNjcsIDExNzQsIDExNzksIDExODQsIAorICAgIDExOTAsIDExOTUsIDEyMDAsIDEyMDUsIDEyMDksIDEyMTQsIDEyMjAsIDEyMjUsIDEyMzAsIDEyMzQsIDEyNDAsIDEyNDUsIAorICAgIDEyNTAsIDEyNTUsIDEyNTksIDEyNjQsIDEyNjksIDEyNzQsIDEyODAsIDEyODYsIDEyOTIsIDEyOTcsIDEzMDEsIDEzMDYsIAorICAgIDEzMTEsIDEzMTYsIDEzMjAsIDEzMjUsIDEzMzAsIDEzMzUsIDEzNDAsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIAorICAgIDEzNDQsIDEyMDYsIDEzNTAsIDEzNTUsIDEzNjAsIDEzNjcsIDEzNzEsIDEzNzQsIDEzODMsIDEyMTAsIDEzODcsIDEyMTUsIAorICAgIDEyMjEsIDEyMjYsIDEzOTEsIDEzOTYsIDE0MDEsIDE0MDUsIDE0MDksIDE0MTUsIDE0MTksIDEyMzEsIDE0MjIsIDEyNDEsIAorICAgIDE0MjcsIDE0MzEsIDEyNDYsIDE0MzcsIDEyNTEsIDE0NDEsIDE0NDUsIDEyNTYsIDE0NDksIDE0NTQsIDE0NTgsIDE0NjEsIAorICAgIDE0NjUsIDEyNjAsIDEyNjUsIDE0NzAsIDEyNzAsIDE0NzYsIDE0ODIsIDE0ODgsIDE0OTQsIDEyNzUsIDEyODcsIDEyOTMsIAorICAgIDE0OTgsIDE1MDIsIDE1MDYsIDE1MDksIDEyOTgsIDE1MTMsIDE1MTUsIDE1MjAsIDE1MjUsIDE1MzEsIDE1MzYsIDE1NDEsIAorICAgIDE1NDUsIDE1NTAsIDE1NTUsIDE1NjAsIDE1NjUsIDE1NzEsIDE1NzYsIDE1ODEsIDE1ODcsIDE1OTMsIDE1OTgsIDE2MDIsIAorICAgIDE2MDcsIDE2MTIsIDE2MTcsIDE2MjIsIDE2MjcsIDE2MzEsIDE2MzksIDE2NDQsIDE2NDgsIDE2NTMsIDE2NTgsIDE2NjMsIAorICAgIDE2NjgsIDE2NzIsIDE2NzUsIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIDEzMDIsIAorICAgIDE3MjAsIDE3MjUsIDE3MzAsIDEzMDcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMTIsIDE3NTIsIDEzMTcsIDE3NTYsIDE3NTgsIAorICAgIDE3NjMsIDE3NjksIDEzMjEsIDE3NzQsIDE3ODMsIDEzMjYsIDE3ODgsIDE3OTQsIDE3OTksIDEzMzEsIDE4MDQsIDE4MDksIAorICAgIDE4MTIsIDE4MTcsIDE4MjEsIDE4MjUsIDE4MjksIDE4MzIsIDE4MzYsIDEzMzYsIDEzNDEsIDE4NDEsIDE4NDMsIDE4NDksIAorICAgIDE4NTUsIDE4NjEsIDE4NjcsIDE4NzMsIDE4NzksIDE4ODUsIDE4OTEsIDE4OTYsIDE5MDIsIDE5MDgsIDE5MTQsIDE5MjAsIAorICAgIDE5MjYsIDE5MzIsIDE5MzgsIDE5NDQsIDE5NTAsIDE5NTUsIDE5NjAsIDE5NjUsIDE5NzAsIDE5NzUsIDE5ODAsIDE5ODUsIAorICAgIDE5OTAsIDE5OTUsIDIwMDAsIDIwMDYsIDIwMTEsIDIwMTcsIDIwMjIsIDIwMjgsIDIwMzQsIDIwMzksIDIwNDUsIDIwNTEsIAorICAgIDIwNTcsIDIwNjMsIDIwNjgsIDIwNzMsIDIwNzUsIDIwNzYsIDIwODAsIDIwODQsIDIwODksIDIwOTMsIDIwOTcsIDIxMDEsIAorICAgIDIxMDYsIDIxMTAsIDIxMTMsIDIxMTgsIDIxMjIsIDIxMjcsIDIxMzEsIDIxMzUsIDIxNDAsIDIxNDQsIDIxNDcsIDIxNTEsIAorICAgIDIxNTcsIDIxNzEsIDIxNzUsIDIxNzksIDIxODMsIDIxODYsIDIxOTEsIDIxOTUsIDIxOTksIDIyMDIsIDIyMDYsIDIyMTEsIAorICAgIDIyMTYsIDIyMjEsIDIyMjYsIDIyMzAsIDIyMzQsIDIyMzgsIDIyNDIsIDIyNDcsIDIyNTEsIDIyNTYsIDIyNjAsIDIyNjUsIAorICAgIDIyNzEsIDIyNzgsIDIyODQsIDIyODksIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTYsIDIzMjEsIDIzMjQsIDIzMjYsIAorICAgIDExOTIsIDIzMzAsIDIzMzcsIDIzNDUsIDIzNTUsIDIzNjQsIDIzNzgsIDIzODIsIDIzODYsIDIzOTEsIDI0MDQsIDI0MTIsIAorICAgIDI0MTYsIDI0MjEsIDI0MjUsIDI0MjgsIDI0MzIsIDI0MzYsIDI0NDEsIDI0NDYsIDI0NTEsIDI0NTUsIDI0NTgsIDI0NjIsIAorICAgIDI0NjksIDI0NzYsIDI0ODIsIDI0ODcsIDI0OTIsIDI0OTgsIDI1MDQsIDI1MDksIDI1MTIsIDE3NjAsIDI1MTQsIDI1MjAsIAorICAgIDI1MjQsIDI1MjksIDI1MzMsIDI1MzcsIDE2NzgsIDE3NzEsIDI1NDIsIDI1NDYsIDI1NDksIDI1NTQsIDI1NTksIDI1NjQsIAorICAgIDI1NjksIDI1NzMsIDI1ODAsIDI1ODUsIDI1ODgsIDI1OTUsIDI2MDEsIDI2MDUsIDI2MDksIDI2MTMsIDI2MTgsIDI2MjUsIAorICAgIDI2MzAsIDI2MzUsIDI2NDIsIDI2NDgsIDI2NTQsIDI2NjAsIDI2NzQsIDI2OTEsIDI3MDYsIDI3MjEsIDI3MzAsIDI3MzUsIAorICAgIDI3MzksIDI3NDQsIDI3NDksIDI3NTMsIDI3NjUsIDI3NzIsIDI3NzgsIDIyNzQsIDI3ODQsIDI3OTEsIDI3OTcsIDI4MDEsIAorICAgIDI4MDQsIDI4MTEsIDI4MTcsIDI4MjIsIDI4MjYsIDI4MzEsIDI4MzUsIDI4MzksIDIwOTgsIDI4NDMsIDI4NDgsIDI4NTMsIAorICAgIDI4NTcsIDI4NjIsIDI4NzAsIDI4NzQsIDI4NzgsIDI4ODIsIDI4ODYsIDI4OTEsIDI4OTYsIDI5MDEsIDI5MDUsIDI5MTAsIAorICAgIDI5MTUsIDI5MTksIDI5MjQsIDI5MjgsIDI5MzEsIDI5MzUsIDI5MzksIDI5NDcsIDI5NTIsIDI5NTYsIDI5NjAsIDI5NjYsIAorICAgIDI5NzUsIDI5NzksIDI5ODMsIDI5ODksIDI5OTQsIDMwMDEsIDMwMDUsIDMwMTUsIDMwMTksIDMwMjMsIDMwMjgsIDMwMzIsIAorICAgIDMwMzcsIDMwNDMsIDMwNDgsIDMwNTIsIDMwNTYsIDMwNjAsIDI0NzIsIDMwNjgsIDMwNzMsIDMwNzksIDMwODQsIDMwODgsIAorICAgIDMwOTMsIDMwOTgsIDMxMDIsIDMxMDgsIDMxMTMsIDIxMDIsIDMxMTksIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDAsIDMxNDUsIAorICAgIDMxNTAsIDMxNTUsIDMxNjAsIDMxNjUsIDMxNzAsIDMxNzYsIDMxODEsIDEyMDcsIDEwMSwgMzE4NywgMzE5MSwgMzE5NSwgCisgICAgMzE5OSwgMzIwNCwgMzIwOCwgMzIxMiwgMzIxOCwgMzIyMywgMzIyNywgMzIzMSwgMzIzNiwgMzI0MSwgMzI0NSwgMzI1MCwgCisgICAgMzI1NCwgMzI1NywgMzI2MSwgMzI2NiwgMzI3MCwgMzI3NSwgMzI3OSwgMzI4MiwgMzI4NiwgMzI5MCwgMzI5NSwgMzI5OSwgCisgICAgMzMwMiwgMzMxNSwgMzMxOSwgMzMyMywgMzMyNywgMzMzMiwgMzMzNiwgMzM0MCwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgCisgICAgMzM2MCwgMzM2NSwgMzM3MCwgMzM3NSwgMzM3OSwgMzM4NCwgMzM4NywgMzM5MCwgMzM5NSwgMzQwMSwgMzQwNSwgMzQwOSwgCisgICAgMzQxMiwgMzQxNywgMzQyMSwgMzQyNiwgMzQzMCwgMzQzNCwgMzQzNywgMzQ0MywgMzQ0OCwgMzQ1MywgMzQ1OSwgMzQ2NCwgCisgICAgMzQ2OSwgMzQ3NSwgMzQ4MSwgMzQ4NiwgMzQ5MSwgMzQ5NiwgMzUwMSwgMTA2MywgNTU5LCAzNTA0LCAzNTA3LCAzNTEyLCAKKyAgICAzNTE2LCAzNTIwLCAzNTI0LCAzNTI4LCAzNTMxLCAzNTM1LCAzNTQwLCAzNTQ1LCAzNTQ5LCAzNTU0LCAzNTU4LCAzNTYzLCAKKyAgICAzNTY3LCAzNTcxLCAzNTc1LCAzNTgxLCAzNTg3LCAzNTkwLCAzNTkzLCAzNTk5LCAzNjA2LCAzNjEzLCAzNjE5LCAzNjI2LCAKKyAgICAzNjMxLCAzNjM1LCAzNjM5LCAzNjQ2LCAzNjUxLCAzNjU4LCAzNjYzLCAzNjY3LCAzNjc3LCAzNjgxLCAzNjg1LCAzNjkwLCAKKyAgICAzNjk1LCAzNzA1LCAyMTE0LCAzNzEwLCAzNzE0LCAzNzE3LCAzNzIzLCAzNzI4LCAzNzM0LCAzNzQwLCAzNzQ1LCAzNzUyLCAKKyAgICAzNzU2LCAzNzYwLCA2MTIsIDY5MywgMTM2OCwgMzc2NCwgMzc3MSwgMzc3OCwgMzc4NCwgMzc4OSwgMzc5NiwgMzgwMywgCisgICAgMzgwOSwgMzgxNSwgMzgyMCwgMzgyNCwgMzgzMCwgMzgzNywgMzg0MiwgMzg0NiwgMjEyMywgMzg1MCwgMzg1OCwgNjc5LCAKKyAgICAzODY0LCAzODc1LCAzODc5LCAzODg5LCAyMTI4LCAzODk1LCAzOTAwLCAzOTE1LCAzOTIxLCAzOTI4LCAzOTM4LCAzOTQ0LCAKKyAgICAzOTQ5LCAzOTU1LCAzOTYxLCAzOTY0LCAzOTY3LCAzOTcxLCAzOTc2LCAzOTgzLCAzOTg4LCAzOTkyLCAzOTk2LCA0MDAwLCAKKyAgICA0MDA0LCA0MDA5LCA0MDE1LCA0MDI2LCA0MDMwLCAzMjYyLCA0MDM1LCA0MDQ3LCA0MDU1LCA0MDU5LCA0MDY0LCAxNTQ3LCAKKyAgICA0MDcxLCA0MDc0LCA0MDc3LCA0MDgxLCA0MDg0LCA0MDkwLCA0MDk0LCA0MTA4LCA0MTEyLCA0MTE1LCA0MTE5LCA0MTI1LCAKKyAgICA0MTMxLCA0MTM2LCA0MTQwLCA0MTQ0LCA0MTUwLCA0MTYxLCA0MTY3LCA0MTcyLCA0MTc4LCA0MTgyLCA0MTkwLCA0MjAyLCAKKyAgICA0MjEyLCA0MjE4LCA0MjIzLCA0MjMyLCA0MjQwLCA0MjQ3LCA0MjUxLCA0MjU3LCA0MjY2LCA0Mjc1LCA0Mjc5LCA0Mjg0LCAKKyAgICA0Mjg5LCA0MjkzLCA0MzAxLCA0MzA1LCA0MzEwLCA0MzE0LCA0MzIwLCAyMTM2LCAxMzg0LCA0MzI2LCA0MzMxLCA0MzM3LCAKKyAgICA0MzQyLCA0MzQ3LCA0MzUyLCA0MzU3LCA0MzYyLCA0MzY3LCA0MzczLCA0Mzc4LCA0Mzg0LCA0Mzg5LCA0Mzk0LCA0Mzk5LCAKKyAgICA0NDA1LCA0NDEwLCA0NDE1LCA0NDIwLCA0NDI1LCA0NDMxLCA0NDM2LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCAKKyAgICA0NDY3LCA0NDcyLCA0NDc4LCA0NDgzLCA0NDg4LCAyNzEsIDMwMSwgNDQ5MywgNDQ5OSwgNDUwMywgNDUwNywgNDUxMiwgCisgICAgNDUxNiwgNDUyMCwgNDUyMywgNDUyNywgNDUzMSwgNDUzNSwgNDUzOSwgNDU0MywgNDU0OCwgNDU1MiwgNDU1NiwgNDU2MiwgCisgICAgNDMyMywgNDU2NywgNDU3MSwgNDU3NCwgNDU3OSwgNDU4NCwgNDU4OSwgNDU5NCwgNDU5OSwgNDYwNCwgNDYwOSwgNDYxNCwgCisgICAgNDYxOSwgNDYyNCwgNDYyOCwgNDYzMywgNDYzOCwgNDY0MywgNDY0OCwgNDY1MywgNDY1OCwgNDY2MywgNDY2OCwgNDY3MywgCisgICAgNDY3OCwgNDY4MiwgNDY4NywgNDY5MiwgNDY5NywgNDcwMiwgNDcwNywgNDcxMiwgNDcxNywgNDcyMiwgNDcyNywgNDczMiwgCisgICAgNDczNiwgNDc0MSwgNDc0NiwgNDc1MSwgNDc1NiwgNDc2MSwgNDc2NiwgNDc3MSwgNDc3NiwgNDc4MSwgNDc4NiwgNDc5MCwgCisgICAgNDc5NSwgNDgwMCwgNDgwNSwgNDgxMCwgNDgxNSwgNDgyMCwgNDgyNSwgNDgzMCwgNDgzNSwgNDg0MCwgNDg0NCwgNDg0OSwgCisgICAgNDg1NCwgNDg1OSwgNDg2NCwgNDg2OSwgNDg3NCwgNDg3OSwgNDg4NCwgNDg4OSwgNDg5NCwgNDg5OCwgNDkwMywgNDkwOCwgCisgICAgNDkxMywgNDkxOCwgNDkyMywgNDkyOCwgNDkzMywgNDkzOCwgNDk0MywgNDk0OCwgNDk1MiwgNDk1NywgNDk2MiwgNDk2NywgCisgICAgNDk3MiwgNDk3OCwgNDk4NCwgNDk5MCwgNDk5NiwgNTAwMiwgNTAwOCwgNTAxNCwgNTAxOSwgNTAyNSwgNTAzMSwgNTAzNywgCisgICAgNTA0MywgNTA0OSwgNTA1NSwgNTA2MSwgNTA2NywgNTA3MywgNTA3OSwgNTA4NCwgNTA5MCwgNTA5NiwgNTEwMiwgNTEwOCwgCisgICAgNTExNCwgNTEyMCwgNTEyNiwgNTEzMiwgNTEzOCwgNTE0NCwgNTE0OSwgNTE1NSwgNTE2MSwgNTE2NywgNTE3MywgNTE3OSwgCisgICAgNTE4NSwgNTE5MSwgNTE5NywgNTIwMywgNTIwOSwgNTIxNCwgNTIyMCwgNTIyNiwgNTIzMiwgNTIzOCwgNTI0NCwgNTI1MCwgCisgICAgNTI1NiwgNTI2MiwgNTI2OCwgNTI3NCwgNTI3OSwgNTI4NSwgNTI5MSwgNTI5NywgNTMwMywgNTMwOSwgNTMxNSwgNTMyMSwgCisgICAgNTMyNywgNTMzMywgNTMzOSwgNTM0NCwgNTM0OCwgNTM1NCwgNTM2MCwgNTM2NiwgNTM3MiwgNTM3OCwgNTM4NCwgNTM5MCwgCisgICAgNTM5NiwgNTQwMiwgNTQwOCwgNTQxMywgNTQxOSwgNTQyNSwgNTQzMSwgNTQzNywgNTQ0MywgNTQ0OSwgNTQ1NSwgNTQ2MSwgCisgICAgNTQ2NywgNTQ3MywgNTQ3OCwgNTQ4NCwgNTQ5MCwgNTQ5NiwgNTUwMiwgNTUwOCwgNTUxNCwgNTUyMCwgNTUyNiwgNTUzMiwgCisgICAgNTUzOCwgNTU0MywgNTU0OSwgNTU1NSwgNTU2MSwgNTU2NywgNTU3MywgNTU3OSwgNTU4NSwgNTU5MSwgNTU5NywgNTYwMywgCisgICAgNTYwOCwgNTYxNCwgNTYyMCwgNTYyNiwgNTYzMiwgNTYzOCwgNTY0NCwgNTY1MCwgNTY1NiwgNTY2MiwgNTY2OCwgNTY3MywgCisgICAgNTY3OSwgNTY4NSwgNTY5MSwgNTY5NywgNTcwMywgNTcwOSwgNTcxNSwgNTcyMSwgNTcyNywgNTczMywgNTczOCwgNTc0NCwgCisgICAgNTc1MCwgNTc1NiwgNTc2MiwgNTc2OCwgNTc3NCwgNTc4MCwgNTc4NiwgNTc5MiwgNTc5OCwgNTgwMywgNTgwOSwgNTgxNSwgCisgICAgNTgyMSwgNTgyNywgNTgzMywgNTgzOSwgNTg0NSwgNTg1MSwgNTg1NywgNTg2MywgNTg2OCwgNTg3NCwgNTg4MCwgNTg4NiwgCisgICAgNTg5MiwgNTg5OCwgNTkwNCwgNTkxMCwgNTkxNiwgNTkyMiwgNTkyOCwgNTkzMywgNTkzOSwgNTk0NSwgNTk1MSwgNTk1NywgCisgICAgNTk2MywgNTk2OSwgNTk3NSwgNTk4MSwgNTk4NywgNTk5MywgNTk5OCwgNjAwMiwgNjAwNSwgNjAxMiwgNjAxNiwgNjAyOSwgCisgICAgNjAzMywgNjAzNywgNjA0MSwgNjA0NCwgNjA0OCwgNjA1MywgNjA1NywgNjA2MSwgNjA2NywgNjA3NCwgNjA4MiwgNjA4OSwgCisgICAgNjA5MywgNjEwMSwgNjExMCwgNjExNiwgNjEyOCwgNjEzMywgNjEzNiwgNjE0MSwgNjE0NSwgNjE1NSwgNjE2MywgNjE3MSwgCisgICAgNjE3NywgNjE4MSwgNjE5MSwgNjIwMSwgNjIwOSwgNjIxNiwgNjIyMywgNjIyOSwgNjIzNSwgNjI0MiwgNjI0NiwgNjI1MywgCisgICAgNjI2MywgNjI3MywgNjI4MSwgNjI4OCwgNjI5MywgNjI5NywgNjMwMSwgNjMwOSwgNjMxMywgNjMxOCwgNjMyNSwgNjMzMywgCisgICAgNjMzOCwgNjM0MiwgNjM0NywgNjM1MSwgNjM1OCwgNjM2MywgNjM3NywgNjM4MiwgNjM4NywgNjM5NCwgMzUxNywgNjQwMywgCisgICAgNjQwNywgNjQxMiwgNjQxNiwgNjQyMCwgNjQyMywgNjQyOCwgNjQzMywgNjQ0MiwgNjQ0OCwgNjQ1NCwgNjQ2MCwgNjQ2NCwgCisgICAgNjQ3NSwgNjQ4NSwgNjUwMCwgNjUxNSwgNjUzMCwgNjU0NSwgNjU2MCwgNjU3NSwgNjU5MCwgNjYwNSwgNjYyMCwgNjYzNSwgCisgICAgNjY1MCwgNjY2NSwgNjY4MCwgNjY5NSwgNjcxMCwgNjcyNSwgNjc0MCwgNjc1NSwgNjc3MCwgNjc4NSwgNjgwMCwgNjgxNSwgCisgICAgNjgzMCwgNjg0NSwgNjg2MCwgNjg3NSwgNjg5MCwgNjkwNSwgNjkyMCwgNjkzNSwgNjk1MCwgNjk2NSwgNjk4MCwgNjk5NSwgCisgICAgNzAxMCwgNzAyNSwgNzA0MCwgNzA1NSwgNzA3MCwgNzA4NSwgNzEwMCwgNzExNSwgNzEzMCwgNzE0NSwgNzE2MCwgNzE3NSwgCisgICAgNzE5MCwgNzIwNSwgNzIyMCwgNzIyOSwgNzIzOCwgNzI0MywgNzI0OSwgNzI1OSwgNzI2MywgNzI2NywgNzI3MiwgNzI3NywgCisgICAgNzI4NSwgNzI4OSwgNzI5MiwgNzI5NiwgMzAxMCwgNzI5OSwgNzMwNCwgMzA1LCA0NzQsIDczMTAsIDczMTgsIDczMjIsIAorICAgIDczMjYsIDczMjksIDczMzMsIDczMzksIDczNDMsIDczNTEsIDczNTcsIDczNjIsIDczNjksIDczNzcsIDczODQsIDczOTAsIAorICAgIDczOTUsIDc0MDIsIDc0MDgsIDc0MTYsIDc0MjAsIDc0MjUsIDc0MzcsIDc0NDgsIDc0NTUsIDc0NTksIDc0NjMsIDc0NjcsIAorICAgIDc0NzAsIDc0NzYsIDMyODcsIDc0ODAsIDc0ODYsIDc0OTEsIDc0OTYsIDc1MDEsIDc1MDcsIDc1MTIsIDc1MTcsIDc1MjIsIAorICAgIDc1MjcsIDc1MzMsIDc1MzgsIDc1NDMsIDc1NDksIDc1NTQsIDc1NjAsIDc1NjUsIDc1NzEsIDc1NzYsIDc1ODIsIDc1ODcsIAorICAgIDc1OTIsIDc1OTcsIDc2MDIsIDc2MDcsIDc2MTMsIDc2MTgsIDc2MjMsIDc2MjgsIDc2MzQsIDc2NDAsIDc2NDYsIDc2NTIsIAorICAgIDc2NTgsIDc2NjQsIDc2NzAsIDc2NzYsIDc2ODIsIDc2ODgsIDc2OTQsIDc3MDAsIDc3MDUsIDc3MTAsIDc3MTUsIDc3MjAsIAorICAgIDc3MjUsIDc3MzAsIDc3MzUsIDc3NDAsIDc3NDYsIDc3NTIsIDc3NTcsIDc3NjMsIDc3NjksIDc3NzUsIDc3ODAsIDc3ODUsIAorICAgIDc3OTAsIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIDc4MzgsIDc4NDMsIDc4NDksIAorICAgIDc4NTUsIDc4NjEsIDc4NjcsIDc4NzMsIDc4NzksIDc4ODUsIDc4OTEsIDc4OTcsIDIxNDUsIDczMjgsIDc5MDIsIDc5MDYsIAorICAgIDc5MTAsIDc5MTMsIDc5MjAsIDc5MjMsIDc5MjcsIDc5MzUsIDc5NDAsIDc5NDUsIDc5MzYsIDc5NTAsIDIxNzIsIDc5NTQsIAorICAgIDc5NjAsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODMsIDc5OTEsIDc5OTYsIDgwMDAsIDgwMDMsIDgwMDcsIDgwMTMsIDgwMTksIAorICAgIDgwMjMsIDIxODAsIDU5NSwgODAyNiwgODAzMCwgODAzNSwgODA0MSwgODA0NiwgODA1MCwgODA1MywgODA1NywgODA2MywgCisgICAgODA2OCwgODA3MiwgODA3OSwgODA4MywgODA4NywgODA5MSwgODAwLCA4NzIsIDgwOTQsIDgxMDIsIDgxMDksIDgxMTUsIAorICAgIDgxMjIsIDgxMzAsIDgxMzcsIDgxNDQsIDgxNDksIDgxNjEsIDEyMjcsIDEzOTIsIDEzOTcsIDgxNzIsIDE0MDIsIDgxNzYsIAorICAgIDgxODAsIDgxODksIDgxOTcsIDgyMDYsIDgyMTIsIDgyMTcsIDgyMjEsIDgyMjcsIDgyMzIsIDI3MjYsIDgyMzksIDgyNDMsIAorICAgIDgyNTIsIDgyNjEsIDgyNzAsIDgyNzksIDgyODQsIDgyODksIDgzMDAsIDgzMTIsIDgzMTcsIDgzMjUsIDIyMzEsIDgzMjksIAorICAgIDgzMzEsIDgzMzYsIDgzNDAsIDgzNDksIDgzNTcsIDE0MDYsIDEzOCwgMzU1OSwgMzU2NCwgODM2MywgODM2NywgODM3NiwgCisgICAgODM4MiwgODM4NywgODM5MCwgODM5OSwgMzU2OCwgMjcxOCwgODQwNSwgODQxMywgODQxNywgODQyMSwgODQyNSwgMjI0OCwgCisgICAgODQyOSwgODQzNCwgODQ0MSwgODQ0NywgODQ1MywgODQ1NiwgODQ1OCwgODQ2MSwgODQ2OSwgODQ3NywgODQ4NSwgODQ4OCwgCisgICAgODQ5MywgMjI2MSwgODQ5OCwgNzk0NywgODUwMSwgODUwMywgODUwOCwgODUxMywgODUxOCwgODUyMywgODUyOCwgODUzMywgCisgICAgODUzOCwgODU0MywgODU0OCwgODU1MywgODU1OSwgODU2NCwgODU2OSwgODU3NCwgODU4MCwgODU4NSwgODU5MCwgODU5NSwgCisgICAgODYwMCwgODYwNSwgODYxMCwgODYxNiwgODYyMSwgODYyNiwgODYzMSwgODYzNiwgODY0MSwgODY0NiwgODY1MSwgODY1NiwgCisgICAgODY2MSwgODY2NiwgODY3MSwgODY3NiwgODY4MSwgODY4NiwgODY5MSwgODY5NiwgODcwMSwgODcwNywgODcxMywgODcxOCwgCisgICAgODcyMywgODcyOCwgODczMywgODczOCwgMjI3MiwgMjI3OSwgMjI4NSwgODc0MywgODc1MSwgODc1NywgODc2NSwgMjMxMSwgCisgICAgMjMxNywgODc3MywgODc3NywgODc4MiwgODc4NiwgODc5MCwgODc5NCwgODc5OSwgODgwMywgODgwOCwgODgxMiwgODgxNSwgCisgICAgODgxOCwgODgyNCwgODgzMCwgODgzNiwgODg0MiwgODg0OCwgODg1NCwgODg2MCwgODg2NCwgODg2OCwgODg3MiwgODg3NiwgCisgICAgODg4MSwgODg4NSwgODg5MCwgODg5NCwgODkwMCwgODkwNSwgODkxMiwgODkyMywgODkzMSwgODk0MSwgODk0NywgODk1NCwgCisgICAgODk1OSwgODk2MywgODk3NCwgODk4NywgODk5OCwgOTAxMSwgOTAyMiwgOTAzNCwgOTA0NiwgOTA1OCwgOTA3MSwgOTA4NCwgCisgICAgOTA5MSwgOTA5NywgOTExMSwgOTExOCwgOTEyNCwgOTEyOCwgOTEzMywgOTEzNywgOTE0NCwgOTE1MiwgOTE1NiwgOTE2MiwgCisgICAgOTE2NiwgOTE3MiwgOTE4MiwgOTE4NiwgOTE5MSwgOTE5NiwgOTIwMywgOTIwOSwgODExNywgOTIxOSwgOTIyMywgOTIzMCwgCisgICAgOTIzNiwgOTI0MywgODcxLCA5MjQ3LCA5MjUxLCA5MjU2LCA5MjYxLCA5MjY2LCA5MjcwLCA5Mjc2LCA5Mjg0LCA5MjkwLCAKKyAgICA5Mjk0LCA5MzAwLCA5MzEwLCA5MzE0LCA5MzIwLCA5MzI1LCA5MzI5LCA5MzMzLCA5MzM5LCA5MzQ1LCAyMTY4LCA5MzUwLCAKKyAgICA5MzUyLCA5MzU3LCA5MzY1LCA5Mzc0LCA5Mzc4LCA5Mzg0LCA5Mzg5LCA5Mzk0LCA5Mzk5LCA5NDA0LCA5NDEwLCA5NDE1LCAKKyAgICA5NDIwLCA0MTQ2LCA5NDI1LCA5NDMwLCA5NDM0LCA5NDQwLCA5NDQ1LCA5NDUxLCA5NDU2LCA5NDYxLCA5NDY3LCA5NDcyLCAKKyAgICA5Mzc5LCA5NDc4LCA5NDgyLCA5NDg5LCA5NDk1LCA5NTAwLCA5NTA0LCA2MzczLCA5NTA5LCA5NTE4LCA5NTIzLCA5NTI4LCAKKyAgICA4NDM3LCA4NDQ0LCA5NTMzLCAyODg4LCA5NTM3LCA5NTQyLCA5NTQ3LCA5NTUyLCA5MzkwLCA5NTU2LCA5NTYxLCA5NTY2LCAKKyAgICA5Mzk1LCA5NTcwLCA5NDAwLCA5NTc1LCA5NTgyLCA5NTg5LCA5NTk1LCA5NjAyLCA5NjA4LCA5NjE0LCA5NjE5LCA5NjI2LCAKKyAgICA5NjMxLCA5NjM2LCA5NjQxLCA5NjQ3LCA5NDA1LCA5NDExLCA5NjUzLCA5NjU5LCA5NjY0LCA5NjY5LCA5Njc3LCA5NDE2LCAKKyAgICA5NjgyLCAxMDI4LCA5Njg1LCA5NjkzLCA5Njk5LCA5NzA1LCA5NzE0LCA5NzIyLCA5NzMwLCA5NzM4LCA5NzQ2LCA5NzU0LCAKKyAgICA5NzYyLCA5NzcwLCA5Nzc4LCA5Nzg3LCA5Nzk2LCA5ODA0LCA5ODEzLCA5ODIyLCA5ODMxLCA5ODQwLCA5ODQ5LCA5ODU4LCAKKyAgICA5ODY3LCA5ODc2LCA5ODg1LCA5ODk0LCA5OTAyLCA5OTA3LCA5OTEzLCA5OTIxLCA5OTI4LCA5OTQzLCA5OTYwLCA5OTc5LCAKKyAgICA5OTg4LCA5OTk2LCAxMDAxMSwgMTAwMjIsIDEwMDMyLCAxMDA0MiwgMTAwNTAsIDEwMDU2LCAxMDA2OCwgMTAwNzcsIAorICAgIDEwMDg1LCAxMDA5MiwgMTAwOTksIDEwMTA1LCAxMDExMCwgMTAxMjAsIDEwMTI4LCAxMDEzOCwgMTAxNDUsIDEwMTU1LCAKKyAgICAxMDE2NSwgMTAxNzUsIDEwMTgzLCAxMDE5MCwgMTAxOTksIDEwMjA5LCAxMDIyMywgMTAyMzgsIDEwMjQ3LCAxMDI1NSwgCisgICAgMTAyNjAsIDEwMjY0LCAxMDI3MywgMTAyNzksIDEwMjg0LCAxMDI5NCwgMTAzMDQsIDEwMzE0LCAxMDMxOSwgMTAzMjMsIAorICAgIDEwMzMyLCAxMDMzNywgMTAzNDcsIDEwMzU4LCAxMDM3MSwgMTAzNzksIDEwMzkyLCAxMDQwNCwgMTA0MTIsIDEwNDE3LCAKKyAgICAxMDQyMSwgMTA0MjcsIDEwNDMyLCAxMDQ0MCwgMTA0NDgsIDEwNDU1LCAxMDQ2MCwgMTA0NjgsIDEwNDc4LCAxMDQ4NCwgCisgICAgMTA0ODgsIDEwNDkxLCAxMDQ5NSwgMTA1MDEsIDEwNTA1LCAxMDUxMywgMTA1MjIsIDEwNTI3LCAxMDUzMSwgMTA1MzUsIAorICAgIDEwNTQzLCAxMDU1MSwgMTA1NjAsIDEwNTY4LCAxMDU3NCwgMTA1NzgsIDEwNTg1LCAxMDU5NiwgMTA2MDAsIDEwNjAzLCAKKyAgICAxMDYwOSwgOTQyMSwgMTA2MTQsIDEwNjIwLCAxMDYyNywgMTA2MzMsIDEwNjM4LCAxMDY0NSwgMTA2NTIsIDEwNjU5LCAKKyAgICAxMDY2NiwgMTA2NzMsIDEwNjgwLCAxMDY4NywgMTA2OTQsIDEwNjk5LCA5OTU2LCAxMDcwNCwgMTA3MTAsIDEwNzE3LCAKKyAgICAxMDcyNCwgMTA3MjksIDEwNzM2LCAxMDc0NSwgMTA3NDksIDEwNzYxLCA4NDc1LCAxMDc2NSwgMTA3NjgsIDEwNzcyLCAKKyAgICAxMDc3NiwgMTA3ODAsIDEwNzg0LCAxMDc5MCwgMTA3OTYsIDEwODAxLCAxMDgwNywgMTA4MTIsIDEwODE3LCAxMDgyMywgCisgICAgMTA4MjgsIDEwODMzLCA5MTk5LCAxMDgzOCwgMTA4NDIsIDEwODQ2LCAxMDg1MCwgMTA4NTUsIDEwODYwLCAxMDg2NSwgCisgICAgMTA4NzMsIDEwODc5LCAxMDg4MywgMTA4ODcsIDEwODk0LCAxMDg5OSwgMTA5MDcsIDEwOTE0LCAxMDkxOSwgMTA5MjMsIAorICAgIDEwOTI2LCAxMDkzMiwgMTA5MzksIDEwOTQzLCAxMDk0NiwgMTA5NTEsIDEwOTU1LCA0MTg1LCAxMDk2MSwgMTA5NzAsIDM2LCAKKyAgICAxMDk3OCwgMTA5ODQsIDEwOTg5LCAxMDk5NCwgOTIxNCwgMTEwMDAsIDExMDA2LCAxMTAxMSwgMTEwMTUsIDExMDE4LCAKKyAgICAxMTAzMywgMTEwNTIsIDExMDY0LCAxMTA3NywgMTEwOTAsIDExMTAzLCAxMTExNywgMTExMzAsIDExMTQ1LCAxMTE1MiwgCisgICAgOTQyNiwgMTExNTgsIDExMTcyLCAxMTE3NywgMTExODMsIDExMTg4LCAxMTE5NiwgMTEyMDEsIDgyNDgsIDExMjA2LCAKKyAgICAxMTIwOSwgMTEyMTcsIDExMjI0LCAxMTIyOSwgMTEyMzMsIDExMjM5LCAyODkzLCAxMTMzLCAxMTI0MywgMTEyNDcsIAorICAgIDExMjUzLCAxMTI1OSwgMTEyNjQsIDExMjcwLCAxMTI3NSwgOTQzNSwgMTEyODEsIDExMjg3LCAxMTI5MiwgMTEyOTcsIAorICAgIDExMzA1LCAxMTMxMSwgMTEzMjQsIDExMzMyLCAxMTMzOSwgOTQ0MSwgMTEzNDUsIDExMzUzLCAxMTM2MSwgMTEzNjgsIAorICAgIDExMzgxLCAxMTM5MywgMTE0MDMsIDExNDExLCAxMTQxOCwgMTE0MjUsIDExNDM1LCAxMTQ0NCwgMTE0NTMsIDExNDYxLCAKKyAgICAxMTQ2OCwgMTE0NzMsIDExNDc5LCA5NDQ2LCAxMTQ4NCwgMTE0OTAsIDExNDk1LCAxMTUwMCwgOTQ1MiwgMTE1MDUsIAorICAgIDExNTA4LCAxMTUxNSwgMTE1MjEsIDExNTM0LCA4OTE2LCAxMTU0NSwgMTE1NTEsIDExNTYwLCAxMTU2OCwgMTE1NzUsIAorICAgIDExNTgxLCAxMTU5MiwgMTE1OTgsIDM3ODAsIDExNjAzLCAxMTYwOCwgMTEwMjUsIDExNjE0LCAxMTYyMSwgMTE2MjYsIAorICAgIDk0NTcsIDExNjMyLCAxMTYzNywgMTE2NDQsIDExNjUwLCAxMTY1NiwgMTE2NjEsIDExNjY5LCAxMTY3NywgMTE2ODQsIAorICAgIDExNjg4LCAxMTcwMCwgMTE3MTQsIDExNzI0LCAxMTcyOSwgMTE3MzMsIDExNzQ0LCAxMTc1MCwgMTE3NTUsIDExNzYwLCAKKyAgICA5NDYyLCAxMTc2NCwgOTQ2OCwgMTE3NjksIDExNzcyLCAxMTc3NywgMTE3ODksIDExNzk2LCAxMTgwMSwgMTE4MDUsIAorICAgIDExODEzLCAxMTgxOCwgMTE4MjIsIDExODI3LCAxMTgzNCwgMTE4NDAsIDk0NzMsIDkzODAsIDExODQ3LCAyODk4LCA4LCAKKyAgICAxMTg1NCwgMTE4NTksIDExODYzLCAxMTg2NywgMTE4NzMsIDExODgxLCAxMTg5MSwgMTE4OTYsIDExOTAxLCAxMTkwOCwgCisgICAgMTE5MTUsIDExOTE5LCAxMTkzMCwgMTE5NDAsIDExOTQ5LCAxMTk1OCwgMTE5NzAsIDExOTc1LCAxMTk3OSwgMTE5ODcsIAorICAgIDEyMDAxLCAxMjAwNSwgMTIwMDgsIDEyMDE2LCAxMjAyMywgMTIwMzEsIDEyMDM1LCAxMjA0NiwgMTIwNTAsIDEyMDU3LCAKKyAgICAxMjA2MiwgMTIwNjYsIDEyMDcyLCAxMjA3NywgMTIwODIsIDEyMDg2LCAxMjA5MiwgMTIwOTcsIDEyMTA4LCAxMjExMiwgCisgICAgMTIxMTUsIDEyMTIxLCAxMjEyNiwgMTIxMzIsIDEyMTM4LCAxMjE0NSwgMTIxNTYsIDEyMTY2LCAxMjE3NiwgMTIxODUsIAorICAgIDEyMTkyLCAxMjIwMSwgMTIyMDUsIDk0ODMsIDk0OTAsIDk0OTYsIDk1MDEsIDEyMjExLCAxMjIxNywgMTIyMjMsIDk1MDUsIAorICAgIDEyMjI5LCAxMjIzMiwgMTIyMzksIDEyMjQ0LCAxMjI1OSwgMTIyNzUsIDEyMjkwLCAxMjI5OCwgMTIzMDQsIDEyMzA5LCAKKyAgICA4NjQsIDM1NCwgMTIzMTQsIDEyMzIyLCAxMjMyOSwgMTIzMzUsIDEyMzQwLCAxMjM0NSwgOTUxMCwgMTIzNDcsIDEyMzUxLCAKKyAgICAxMjM1NiwgMTIzNjAsIDEyMzcwLCAxMjM3NSwgMTIzNzksIDEyMzg4LCAxMjM5MiwgMTIzOTUsIDEyNDAyLCA5NTE5LCAKKyAgICAxMjQwNywgMTI0MTAsIDEyNDE4LCAxMjQyNSwgMTI0MzMsIDEyNDM3LCAxMjQ0MSwgMTI0NDgsIDEyNDU3LCAxMjQ2NCwgCisgICAgMTI0NjAsIDEyNDcxLCAxMjQ3NSwgMTI0ODEsIDEyNDg1LCAxMjQ4OSwgMTI0OTMsIDEyNDk5LCAxMjUwOSwgMTI1MTcsIAorICAgIDEyNTI0LCAxMjUyOCwgMTI1MzYsIDEyNTQwLCAxMjU0NywgMTI1NTEsIDEyNTU2LCAxMjU2MCwgMTI1NjcsIDEyNTczLCAKKyAgICAxMjU4MSwgMTI1ODcsIDEyNTkyLCAxMjYwMiwgMTI2MDcsIDEyNjEyLCAxMjYxNiwgMTI2MjQsIDQwNDEsIDEyNjMyLCAKKyAgICAxMjYzNywgOTUyNCwgMTI2NDEsIDEyNjQ1LCAxMjY0OCwgMTI2NTYsIDEyNjYzLCAxMjY2NywgNjE3MywgMTI2NzEsIAorICAgIDEyNjc2LCAxMjY4MCwgMTI2OTEsIDEyNzAxLCAxMjcwNiwgMTI3MTIsIDEyNzE2LCAxMjcxOSwgMTI3MjcsIDEyNzMyLCAKKyAgICAxMjczNywgMTI3NDQsIDEyNzQ5LCA5NTI5LCAxMjc1NCwgMTI3NTgsIDEyNzY1LCAxNzIyLCA2MzMxLCAxMjc3MCwgMTI3NzUsIAorICAgIDEyNzgwLCAxMjc4NSwgMTI3OTEsIDEyNzk2LCAxMjgwMiwgMTI4MDcsIDEyODEyLCAxMjgxNywgMTI4MjIsIDEyODI3LCAKKyAgICAxMjgzMiwgMTI4MzcsIDEyODQyLCAxMjg0NywgMTI4NTIsIDEyODU3LCAxMjg2MiwgMTI4NjcsIDEyODcyLCAxMjg3NywgCisgICAgMTI4ODIsIDEyODg4LCAxMjg5MywgMTI4OTgsIDEyOTAzLCAxMjkwOCwgMTI5MTMsIDEyOTE5LCAxMjkyNCwgMTI5MjksIAorICAgIDEyOTM1LCAxMjk0MCwgMTI5NDYsIDEyOTUxLCAxMjk1NywgMTI5NjIsIDEyOTY3LCAxMjk3MiwgMTI5NzcsIDEyOTgzLCAKKyAgICAxMjk4OCwgMTI5OTMsIDEyOTk4LCA4MzYsIDExNywgMTMwMDYsIDEzMDEwLCAxMzAxNSwgMTMwMjAsIDEzMDI0LCAxMzAyOCwgCisgICAgMTMwMzIsIDEzMDM3LCAxMzA0MSwgMTMwNDYsIDEzMDUwLCAxMzA1MywgMTMwNTcsIDEzMDYxLCAxMzA2NywgMTMwNzIsIAorICAgIDEzMDgyLCAxMzA4OCwgMTMwOTYsIDEzMTAyLCAxMzEwNiwgMTMxMTAsIDEzMTE3LCAxMzEyNSwgMTMxMzQsIDEzMTQ1LCAKKyAgICAxMzE1MiwgMTMxNTksIDEzMTYzLCAxMzE3MiwgMTMxODEsIDEzMTg5LCAxMzE5OCwgMTMyMDcsIDEzMjE2LCAxMzIyNSwgCisgICAgMTMyMzUsIDEzMjQ1LCAxMzI1NSwgMTMyNjUsIDEzMjc1LCAxMzI4NCwgMTMyOTQsIDEzMzA0LCAxMzMxNCwgMTMzMjQsIAorICAgIDEzMzM0LCAxMzM0NCwgMTMzNTQsIDEzMzYzLCAxMzM3MywgMTMzODMsIDEzMzkzLCAxMzQwMywgMTM0MTMsIDEzNDIzLCAKKyAgICAxMzQzMiwgMTM0NDIsIDEzNDUyLCAxMzQ2MiwgMTM0NzIsIDEzNDgyLCAxMzQ5MiwgMTM1MDIsIDEzNTEyLCAxMzUyMiwgCisgICAgMTM1MzEsIDEzNTQxLCAxMzU1MSwgMTM1NjEsIDEzNTcxLCAxMzU4MSwgMTM1OTEsIDEzNjAxLCAxMzYxMSwgMTM2MjEsIAorICAgIDEzNjMxLCAxMzY0MCwgMTIzNiwgMTM2NDYsIDEzNjQ5LCAxMzY1MywgMTM2NTgsIDEzNjY1LCAxMzY3MSwgMTM2NzYsIAorICAgIDEzNjgwLCAxMzY4NSwgMTM2OTQsIDEzNzAyLCAxMzcwNywgMTM3MTEsIDEzNzE1LCAxMzcyMSwgMTM3MjYsIDEzNzMyLCAKKyAgICA5NTM4LCAxMzczNywgMTM3NDIsIDEzNzUxLCA5NTQ4LCAxMzc1NiwgMTM3NTksIDEzNzY1LCAxMzc3MywgOTU1MywgMTM3ODAsIAorICAgIDEzNzg0LCAxMzc4OCwgMTM3OTMsIDEzNzk3LCAxMzgwNywgMTM4MTMsIDEzODE5LCAxMzgyNCwgMTM4MzMsIDEzODQxLCAKKyAgICAxMzg0OCwgMTM4NTUsIDEzODYwLCAxMzg2NywgMTM4NzIsIDEzODc2LCAxMzg3OSwgMTM4OTAsIDEzOTAwLCAxMzkwOSwgCisgICAgMTM5MTcsIDEzOTI4LCAxMzk0MCwgMTM5NTAsIDEzOTU1LCAxMzk1OSwgMTM5NjQsIDEzOTY5LCAxMzk3MywgMTM5NzksIAorICAgIDEzOTg3LCAxMzk5NCwgMTQwMDUsIDE0MDEwLCAxNDAyMCwgMTQwMjksIDE0MDMzLCAxNDAzNiwgMTQwNDMsIDE0MDUzLCAKKyAgICAxNDA2MiwgMTQwNjksIDE0MDczLCAxNDA4MCwgMTQwODYsIDE0MDkxLCAxNDA5NiwgMTQxMDAsIDE0MTA5LCAxNDExNCwgCisgICAgMTQxMTgsIDE0MTI0LCAxNDEyOCwgMTQxMzMsIDE0MTM3LCAxNDE0NiwgMTQxNTQsIDE0MTYyLCAxNDE2OSwgMTQxNzcsIAorICAgIDE0MTg5LCAxNDIwMCwgMTQyMTAsIDE0MjE3LCAxNDIyMywgMTQyMzIsIDE0MjQzLCAxNDI1MiwgMTQyNjQsIDE0Mjc2LCAKKyAgICAxNDI4OCwgMTQyOTgsIDE0MzA3LCAxNDMxNiwgMTQzMjQsIDE0MzMxLCAxNDM0MCwgMTQzNDgsIDE0MzUyLCAxNDM1NywgCisgICAgMTQzNjMsIDE0MzY5LCAxNDM3NCwgMTQzNzksIDc5NjgsIDE0MzgzLCAxNDM4NSwgMTQzODksIDE0Mzk0LCAxNDQwMCwgCisgICAgMTQ0MDYsIDE0NDE1LCAxNDQxOSwgMTQ0MjUsIDE0NDMzLCAxNDQ0MCwgMTQ0NDksIDE0NDU4LCAxNDQ2NywgMTQ0NzYsIAorICAgIDE0NDg1LCAxNDQ5NCwgMTQ1MDMsIDE0NTEyLCAxNDUyMiwgMTQ1MzIsIDE0NTQxLCAxNDU0NywgMTQ1NTQsIDE0NTYxLCAKKyAgICAxNDU2NywgMTQ1ODEsIDE0NTg4LCAxNDU5NiwgMTQ2MDUsIDE0NjExLCAxNDYyMCwgMTQ2MjksIDE0NjQwLCAxNDY1MCwgCisgICAgMTQ2NTgsIDE0NjY1LCAxNDY3MywgMTQ2ODIsIDE0Njk1LCAxNDcwMywgMTQ3MTAsIDE0NzIzLCAxNDcyOSwgMTQ3MzUsIAorICAgIDE0NzQ1LCAxNDc1NCwgMTQ3NjMsIDE0NzY4LCAxNDc3MiwgMTQ3NzgsIDE0Nzg0LCAxNDc4OSwgMTQ3OTYsIDE0ODAzLCAKKyAgICA5MjEzLCAxNDgwOCwgMTQ4MTMsIDE0ODIwLCAxNDgyNywgMTQ4MzIsIDE0ODQ0LCAxMzA2MywgMTQ4NDksIDE0ODU3LCAKKyAgICAxNDg2MywgMTQ4NjgsIDE0ODc2LCAxNDg4NCwgMTQ4OTEsIDE0ODk5LCAxNDkwNSwgMTQ5MTMsIDE0OTIxLCAxNDkyNywgCisgICAgMTQ5MzIsIDE0OTM4LCAxNDk0NSwgMTQ5NTEsIDE0OTU2LCAxNDk2MCwgMTQ5NzEsIDE0OTc5LCAxNDk4NSwgMTQ5OTAsIAorICAgIDE0OTk3LCAxNTAwNiwgMTUwMTIsIDE1MDE3LCAxNTAyNSwgMTUwMzQsIDE1MDQ4LCAzOTg1LCAxNTA1MiwgMTUwNTcsIAorICAgIDE1MDYyLCAxNTA2OCwgMTUwNzMsIDE1MDc4LCAxNTA4MiwgMTUwODcsIDE1MDkyLCAxNTA5NywgNzk2NywgMTUxMDIsIAorICAgIDE1MTA3LCAxNTExMiwgMTUxMTcsIDE1MTIyLCAxNTEyNiwgMTUxMzEsIDE1MTM2LCAxNTE0MSwgMTUxNDYsIDE1MTUyLCAKKyAgICAxNTE1OCwgMTUxNjMsIDE1MTY3LCAxNTE3MywgMTUxNzgsIDE1MTgzLCAxNTE4OCwgOTU1NywgMTUxOTMsIDE1MTk4LCAKKyAgICAxNTIwMywgMTUyMDgsIDE1MjEzLCAxNTIzMCwgMTUyNDgsIDE1MjYwLCAxNTI3MywgMTUyOTAsIDE1MzA2LCAxNTMyMywgCisgICAgMTUzMzMsIDE1MzUyLCAxNTM2MywgMTUzNzQsIDE1Mzg1LCAxNTM5NiwgMTU0MDgsIDE1NDE5LCAxNTQzMCwgMTU0NDcsIAorICAgIDE1NDU4LCAxNTQ2OSwgMTU0NzQsIDk1NjIsIDE1NDc5LCAxNTQ4MywgMjQwMSwgMTU0ODcsIDE1NDkwLCAxNTQ5NiwgCisgICAgMTU1MDQsIDE1NTEyLCAxNTUxNywgMTU1MjUsIDE1NTMzLCAxNTU0MCwgMTU1NDQsIDE1NTQ5LCAxNTU1NSwgMTU1NjIsIAorICAgIDE1NTcwLCAxNTU3NywgMTU1ODksIDE1NTk3LCAxNTYwMiwgMTU2MDgsIDEyMjUzLCAxNTYxNCwgMTU2MjMsIDE1NjMxLCAKKyAgICAxNTY0MCwgMTU2NDgsIDE1NjU1LCAxNTY2MSwgMTU2NjksIDE1Njc2LCAxNTY4MiwgMTU2ODksIDE1Njk2LCAxNTcwMiwgCisgICAgMTU3MDgsIDE1NzE3LCAxNTcyNSwgMTU3MzUsIDE1NzQyLCAxNTc0OCwgMTU3NTYsIDE1NzYyLCAxNTc3MCwgMTU3NzgsIAorICAgIDE1Nzg1LCAxNTc5OCwgMTU4MDUsIDE1ODE0LCAxNTgyMywgMTU4MzIsIDE1ODQwLCAxNTg1MCwgMTU4NTcsIDE1ODYyLCAKKyAgICAzNjcxLCAxNTg2OSwgMTU4NzQsIDEzNTIsIDE1ODc4LCAxNTEwMywgMTU4ODIsIDE1ODg4LCAxNTg5MiwgMTU5MDAsIAorICAgIDE1OTEyLCAxNTkxOSwgMTU5MjUsIDE1OTMwLCAxNTkzNywgMTUxMDgsIDE1OTQxLCAxNTk0NSwgMTU5NDksIDE1MTEzLCAKKyAgICAxNTk1MywgMTUxMTgsIDE1OTU3LCAxNTk2NCwgMTU5NjksIDE1OTczLCAxNTk4MCwgMTU5ODQsIDE1OTkyLCAxNTk5OSwgCisgICAgMTYwMDQsIDE2MDA4LCAxNjAxNSwgMTYwMzIsIDE2MDQxLCAxNjA0NSwgMTYwNDgsIDE2MDU2LCAxNjA2MiwgMTYwNjcsIAorICAgIDM3NDksIDE2MDcxLCAxNjA3MywgMTYwODEsIDE2MDg4LCAxNjA5OCwgMTYxMTAsIDE2MTE1LCAxNjExOSwgMTYxMjUsIAorICAgIDE2MTMwLCAxNjEzNCwgMTYxNDAsIDE2MTQ1LCAxNjE1MSwgMTYxNTQsIDE2MTYxLCAxNjE2OSwgMTYxNzYsIDE2MTgyLCAKKyAgICAxNjE4OCwgMTYxOTMsIDE2MjAwLCAxNjIwNiwgMTYyMTEsIDE2MjE4LCAxNjIyMiwgMTYyMjgsIDE2MjMyLCAxNjIzOSwgCisgICAgMTYyNDUsIDE2MjUwLCAxNjI1NiwgMTYyNjQsIDE2MjcyLCAxNjI3OSwgMTYyODUsIDE2MjkwLCAxNjI5NiwgMTYzMDIsIAorICAgIDE2MzEwLCAxNjMxOCwgMTYzMjQsIDE2MzMwLCAxNjMzNSwgMTYzNDIsIDE2MzQ3LCAxNjM1MSwgMTYzNTcsIDE2MzYyLCAKKyAgICAxNjM2OSwgMTYzNzQsIDE2MzgwLCAxNjM4MywgMTYzODksIDE2Mzk1LCAxNjM5OCwgMTY0MDIsIDE2NDA2LCAxNjQxOCwgCisgICAgMTY0MjQsIDE2NDI5LCAxNjQzNiwgMTY0NDIsIDE2NDQ4LCAxNjQ1OSwgMTY0NjksIDE2NDc4LCAxNjQ4NiwgMTY0OTMsIAorICAgIDE2NTA0LCAxNjUxNCwgMTY1MjQsIDE2NTMyLCAxNjUzNSwgMTUxMzIsIDE2NTQwLCAxNjU0NSwgMTUxMzcsIDE1Mjc4LCAKKyAgICAxNjU1MywgMTY1NjYsIDE2NTgxLCAxNjU5MiwgMTUyOTUsIDE2NjEwLCAxNjYyMywgMTY2MzYsIDE2NjQ3LCAxMTA0MCwgCisgICAgMTY2NTgsIDE2NjcxLCAxNjY5MCwgMTY3MDEsIDE2NzEyLCAxNjcyMywgMjY2OSwgMTY3MzYsIDE2NzQwLCAxNjc0OCwgCisgICAgMTY3NTYsIDE2NzcxLCAxNjc4NiwgMTY3OTcsIDE2ODA0LCAxNjgxMCwgMTY4MTgsIDE2ODIyLCAxNjgyOCwgMTY4MzEsIAorICAgIDE2ODQxLCAxNjg0OSwgMTY4NTYsIDE2ODY0LCAxNjg3NCwgMTY4NzksIDE2ODg2LCAxNjg5MSwgMTY4OTgsIDE2OTA5LCAKKyAgICAxNjkxOSwgMTY5MjUsIDE2OTMwLCAxNjkzNSwgMTUxNDIsIDE2OTM5LCAxNjk0NSwgMTY5NTEsIDE2OTU2LCAxNjk2MSwgCisgICAgMTY5NjYsIDE2OTcwLCAxNTE0NywgMTUxNTMsIDE2OTc0LCAxNTE1OSwgMTY5NzksIDE2OTg3LCAxNjk5NSwgMTcwMDIsIAorICAgIDE3MDExLCAxNzAxOCwgMTcwMjIsIDk0MDEsIDE3MDI2LCAxNzAyOCwgMTcwMzMsIDE3MDM4LCAxNzA0NCwgMTcwNDksIAorICAgIDE3MDU0LCAxNzA1OSwgMTcwNjQsIDE3MDY4LCAxNzA3NCwgMTcwODAsIDE3MDg1LCAxNzA5MSwgMTcwOTYsIDE3MTAxLCAKKyAgICAxNzEwNSwgMTcxMTEsIDE3MTE2LCAxNzEyMSwgMTcxMjYsIDE3MTMxLCAxNzEzNywgMTcxNDIsIDE3MTQ3LCAxNzE1MywgCisgICAgMTcxNTksIDE3MTY0LCAxNzE2OSwgMTcxNzQsIDE3MTgxLCAxNzE4NywgMTcxOTgsIDE3MjA1LCAxNzIxMCwgMTcyMTQsIAorICAgIDE3MjE4LCAxNzIyMSwgMTcyMjksIDE3MjM0LCAxNzI0MSwgMTcyNDgsIDE3MjU0LCAxNzI1OSwgMTcyNjQsIDE3MjY5LCAKKyAgICAxNzI3NiwgMTcyODYsIDE3MjkxLCAxNzI5OCwgMTczMDQsIDE3MzEzLCAxNzMyMywgMTczMzMsIDE3MzQ3LCAxNzM2MSwgCisgICAgMTczNzUsIDE3Mzg5LCAxNzQwNCwgMTc0MTksIDE3NDM2LCAxNzQ1NCwgMTc0NjcsIDE3NDczLCAxNzQ3OCwgMTc0ODMsIAorICAgIDE3NDg3LCAxNzQ5NSwgMTc1MDAsIDE3NTA4LCAxNzUxNCwgMTc1MjAsIDE3NTI1LCAxNzUzMCwgMTc1MzQsIDE3NTM5LCAKKyAgICAxNzU0MywgMTc1NDgsIDE3NTUyLCAxNzU2MywgMTc1NjksIDE3NTc0LCAxNzU3OSwgMTc1ODYsIDE3NTkxLCAxNzU5NSwgCisgICAgMTc2MDAsIDE3NjA1LCAxNzYxMSwgMTc2MTgsIDE1MTY4LCAxNzYyNCwgMTc2MjgsIDE3NjM0LCAxNzYzOSwgMTc2NDQsIAorICAgIDE3NjQ4LCAxNzY1NCwgMTc2NTksIDE3NjY0LCAxNzY3MSwgMTc2NzYsIDEzODA5LCAxNzY4MCwgMTc2ODUsIDE3Njg5LCAKKyAgICAxNzY5NCwgMTc3MDAsIDE3NzA2LCAxNzcxMywgMTc3MjMsIDE3NzMxLCAxNzczOCwgMTc3NDMsIDE3NzQ3LCAxNzc1NiwgCisgICAgMTc3NjQsIDE3NzcxLCAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA2LCAxNzgxMSwgMTc4MTcsIAorICAgIDE3ODIyLCAxNzgyOCwgMTc4MzQsIDE3ODQxLCAxNzg0NywgMTc4NTIsIDE3ODU3LCA5NjI3LCAxNzg2NiwgMTc4NjksIAorICAgIDE3ODc3LCAxNzg4MywgMTc4ODgsIDE3ODkzLCAxNzkwMywgMTc5MTAsIDE3OTE2LCAxNzkyMSwgMTc5MjYsIDE3OTMyLCAKKyAgICAxNzkzNywgMTc5NDMsIDE3OTQ4LCAxNzk1NCwgMTc5NjAsIDE3OTY1LCAxNzk3MywgMTc5ODAsIDE3OTg1LCAxNzk5MCwgCisgICAgMTc5OTYsIDE4MDAxLCAxODAwNSwgMTgwMTQsIDE4MDI1LCAxODAzMiwgMTgwMzcsIDE4MDQyLCAxODA0OCwgMTgwNTMsIAorICAgIDE4MDYxLCAxODA2NywgMTgwNzMsIDE4MDgwLCAxODA4NiwgMTgwOTEsIDE4MDk1LCAxODEwMSwgMTgxMDYsIDE4MTExLCAKKyAgICAxODExNiwgMTQyMywgNzk5MiwgMjkxMiwgMTgxMjAsIDE4MTI0LCAxODEyOCwgMTgxMzIsIDE4MTM2LCAxODE0MCwgMTgxNDMsIAorICAgIDE4MTQ4LCAxODE1NSwgMTgxNjMsIDE1MTc5LCAxODE3MCwgMTgxODAsIDE4MTg4LCAxODE5NSwgMTgyMDMsIDE4MjEzLCAKKyAgICAxODIyMiwgMTgyMzUsIDE4MjQwLCAxODI0NSwgMTgyNTMsIDE4MjYwLCAxMzkwNSwgMTM5MTQsIDE4MjY3LCAxODI3NywgCisgICAgMTgyOTIsIDE4Mjk4LCAxODMwNSwgMTgzMTIsIDE4MzE4LCAxODMyNCwgMTgzMzIsIDE4MzQyLCAxODM1MiwgMTUxODQsIAorICAgIDE4MzYxLCAxODM2NywgMTgzNzMsIDE4MzgxLCAxODM4OSwgMTgzOTQsIDE4NDAzLCAxODQxMSwgMTg0MjMsIDE4NDMzLCAKKyAgICAxODQ0MywgMTg0NTMsIDE4NDYyLCAxODQ3NCwgMTg0ODQsIDE4NDk0LCAxODUwNSwgMTg1MTAsIDE4NTIyLCAxODUzNCwgCisgICAgMTg1NDYsIDE4NTU4LCAxODU3MCwgMTg1ODIsIDE4NTk0LCAxODYwNiwgMTg2MTgsIDE4NjMwLCAxODY0MSwgMTg2NTMsIAorICAgIDE4NjY1LCAxODY3NywgMTg2ODksIDE4NzAxLCAxODcxMywgMTg3MjUsIDE4NzM3LCAxODc0OSwgMTg3NjEsIDE4NzcyLCAKKyAgICAxODc4NCwgMTg3OTYsIDE4ODA4LCAxODgyMCwgMTg4MzIsIDE4ODQ0LCAxODg1NiwgMTg4NjgsIDE4ODgwLCAxODg5MiwgCisgICAgMTg5MDMsIDE4OTE1LCAxODkyNywgMTg5MzksIDE4OTUxLCAxODk2MywgMTg5NzUsIDE4OTg3LCAxODk5OSwgMTkwMTEsIAorICAgIDE5MDIzLCAxOTAzNCwgMTkwNDYsIDE5MDU4LCAxOTA3MCwgMTkwODIsIDE5MDk0LCAxOTEwNiwgMTkxMTgsIDE5MTMwLCAKKyAgICAxOTE0MiwgMTkxNTQsIDE5MTY1LCAxOTE3NywgMTkxODksIDE5MjAxLCAxOTIxMywgMTkyMjUsIDE5MjM3LCAxOTI0OSwgCisgICAgMTkyNjEsIDE5MjczLCAxOTI4NSwgMTkyOTYsIDE5MzA4LCAxOTMyMCwgMTkzMzIsIDE5MzQ0LCAxOTM1NiwgMTkzNjgsIAorICAgIDE5MzgwLCAxOTM5MiwgMTk0MDQsIDE5NDE2LCAxOTQyNywgMTk0MzksIDE5NDUxLCAxOTQ2MywgMTk0NzUsIDE5NDg4LCAKKyAgICAxOTUwMSwgMTk1MTQsIDE5NTI3LCAxOTU0MCwgMTk1NTMsIDE5NTY2LCAxOTU3OCwgMTk1OTEsIDE5NjA0LCAxOTYxNywgCisgICAgMTk2MzAsIDE5NjQzLCAxOTY1NiwgMTk2NjksIDE5NjgyLCAxOTY5NSwgMTk3MDgsIDE5NzIwLCAxOTczMywgMTk3NDYsIAorICAgIDE5NzU5LCAxOTc3MiwgMTk3ODUsIDE5Nzk4LCAxOTgxMSwgMTk4MjQsIDE5ODM3LCAxOTg1MCwgMTk4NjIsIDE5ODc1LCAKKyAgICAxOTg4OCwgMTk5MDEsIDE5OTE0LCAxOTkyNywgMTk5NDAsIDE5OTUzLCAxOTk2NiwgMTk5NzksIDE5OTkyLCAyMDAwNCwgCisgICAgMjAwMTcsIDIwMDMwLCAyMDA0MywgMjAwNTYsIDIwMDY5LCAyMDA4MiwgMjAwOTUsIDIwMTA4LCAyMDEyMSwgMjAxMzQsIAorICAgIDIwMTQ2LCAyMDE1OSwgMjAxNzIsIDIwMTg1LCAyMDE5OCwgMjAyMTEsIDIwMjI0LCAyMDIzNywgMjAyNTAsIDIwMjYzLCAKKyAgICAyMDI3NiwgMjAyODgsIDIwMjk5LCAyMDMxMiwgMjAzMjUsIDIwMzM4LCAyMDM1MSwgMjAzNjQsIDIwMzc3LCAyMDM5MCwgCisgICAgMjA0MDMsIDIwNDE2LCAyMDQyOSwgMjA0NDEsIDIwNDU0LCAyMDQ2NywgMjA0ODAsIDIwNDkzLCAyMDUwNiwgMjA1MTksIAorICAgIDIwNTMyLCAyMDU0NSwgMjA1NTgsIDIwNTcxLCAyMDU4MywgMjA1OTYsIDIwNjA5LCAyMDYyMiwgMjA2MzUsIDIwNjQ4LCAKKyAgICAyMDY2MSwgMjA2NzQsIDIwNjg3LCAyMDcwMCwgMjA3MTMsIDIwNzI1LCAyMDczOCwgMjA3NTEsIDIwNzY0LCAyMDc3NywgCisgICAgMjA3OTAsIDIwODAzLCAyMDgxNiwgMjA4MjksIDIwODQyLCAyMDg1NSwgMjA4NjcsIDIwODgwLCAyMDg5MywgMjA5MDYsIAorICAgIDIwOTE5LCAyMDkzMiwgMjA5NDUsIDIwOTU4LCAyMDk3MSwgMjA5ODQsIDIwOTk3LCAyMTAwOSwgMjEwMjIsIDIxMDM1LCAKKyAgICAyMTA0OCwgMjEwNjEsIDIxMDc0LCAyMTA4NywgMjExMDAsIDIxMTEzLCAyMTEyNiwgMjExMzksIDIxMTUxLCAyMTE2NCwgCisgICAgMjExNzcsIDIxMTkwLCAyMTIwMywgMjEyMTYsIDIxMjI5LCAyMTI0MiwgMjEyNTUsIDIxMjY4LCAyMTI4MSwgMjEyOTMsIAorICAgIDIxMzA2LCAyMTMxOSwgMjEzMzIsIDIxMzQ1LCAyMTM1OCwgMjEzNzEsIDIxMzg0LCAyMTM5NywgMjE0MTAsIDIxNDIzLCAKKyAgICAyMTQzNSwgMjE0NDgsIDIxNDYxLCAyMTQ3NCwgMjE0ODcsIDIxNTAwLCAyMTUxMywgMjE1MjYsIDIxNTM5LCAyMTU1MiwgCisgICAgMjE1NjUsIDIxNTc3LCAyMTU5MCwgMjE2MDMsIDIxNjE2LCAyMTYyOSwgMjE2NDIsIDIxNjU1LCAyMTY2OCwgMjE2ODEsIAorICAgIDIxNjk0LCAyMTcwNywgMjE3MTksIDIxNzMwLCAyMTczOSwgMjE3NDcsIDIxNzU1LCAyMTc2MiwgMjE3NjgsIDIxNzcyLCAKKyAgICAyMTc3OCwgMjE3ODQsIDIxNzkyLCAyMTc5NywgMjE4MDMsIDIxODA4LCAyMTgxMiwgMjE4MjEsIDk0MDYsIDIxODMyLCAKKyAgICAyMTgzOSwgMjE4NDcsIDIxODU0LCAyMTg2MSwgMTE1MjgsIDIxODY4LCAyMTg3NSwgMjE4ODQsIDIxODg5LCAyMTg5NCwgCisgICAgODAyMCwgMjE5MDEsIDIxOTA2LCAyMTkwOSwgMjE5MTQsIDIxOTIyLCAyMTkyOSwgMjE5MzYsIDIxOTQzLCAyMTk0OSwgCisgICAgMjE5NTgsIDIxOTY3LCAyMTk3MywgMjE5ODIsIDIxOTg2LCAyMTk5MiwgMjE5OTcsIDIyMDA3LCAyMjAxNCwgMjIwMjAsIAorICAgIDIyMDI4LCAyMjAzNCwgMjIwNDEsIDIyMDUxLCAyMjA2MCwgMjIwNjQsIDIyMDcxLCAyMjA3NSwgMjIwODAsIDIyMDg2LCAKKyAgICAyMjA5NCwgMjIwOTgsIDIyMTA4LCAxNTE5NCwgMjIxMTcsIDIyMTIzLCAyMjEyNywgMjIxMzYsIDIyMTQ2LCAxNTE5OSwgCisgICAgMjIxNTIsIDIyMTU5LCAyMjE3MCwgMjIxNzgsIDIyMTg4LCAyMjE5NywgMjIyMDUsIDkxNzgsIDIyMjEzLCAyMjIxOCwgCisgICAgMjIyMjQsIDIyMjI5LCAyMjIzMywgMjIyMzcsIDIyMjQxLCAxMDEyNCwgMjIyNDYsIDIyMjU0LCAyMjI2MSwgMjIyNzAsIAorICAgIDIyMjc3LCAyMjI4NCwgMjIyOTAsIDExNDQ4LCAyMjI5NywgMjIzMDMsIDIyMzA3LCAyMjMxMywgMjIzMjAsIDIyMzI2LCAKKyAgICAyMjMzNCwgMjIzNDAsIDIyMzQ3LCAyMjM1MywgMjIzNTksIDIyMzY4LCAyMjM3MiwgMjIzODAsIDIyMzg5LCAyMjM5NiwgCisgICAgMjI0MDEsIDIyNDA1LCAyMjQxNiwgMjI0MjEsIDIyNDI2LCAyMjQzMSwgMjI0NDQsIDgyMDMsIDIyNDQ4LCAyMjQ1NCwgCisgICAgMjI0NjIsIDIyNDY2LCAyMjQ3MywgMjI0ODIsIDIyNDg3LCAxNTQ3MCwgMjI0OTUsIDIyNDk5LCAyMjUxMSwgMjI1MTYsIAorICAgIDIyNTIwLCAyMjUyMywgMjI1MjksIDIyNTM1LCAyMjU0MSwgMjI1NDYsIDIyNTUwLCAyMjU1MywgMjI1NjQsIDIyNTY5LCAKKyAgICA5Njc4LCAyMjU3NiwgMjI1ODEsIDEyNDIsIDk2ODMsIDIyNTg2LCAyMjU5MSwgMjI1OTYsIDIyNjAxLCAyMjYwNiwgMjI2MTEsIAorICAgIDIyNjE2LCAyMjYyMSwgMjI2MjYsIDIyNjMxLCAyMjYzNiwgMjI2NDEsIDIyNjQ3LCAyMjY1MiwgMjI2NTcsIDIyNjYyLCAKKyAgICAyMjY2NywgMjI2NzIsIDIyNjc3LCAyMjY4MiwgMjI2ODcsIDIyNjkyLCAyMjY5OCwgMjI3MDQsIDIyNzA5LCAyMjcxNCwgCisgICAgMjI3MTksIDIyNzI0LCAyMjcyOSwgMjI3MzQsIDIyNzM5LCAyMjc0NCwgMjI3NDksIDIyNzU1LCAyMjc2MCwgMjI3NjUsIAorICAgIDIyNzcwLCAyMjc3NiwgMjI3ODIsIDIyNzg3LCAyMjc5MiwgMjI3OTcsIDIyODAyLCAyMjgwNywgMjI4MTIsIDIyODE3LCAKKyAgICAyMjgyMiwgMjI4MjgsIDIyODMzLCAyMjgzOCwgMjI4NDMsIDIyODQ4LCAyMjg1NCwgMjI4NTksIDIyODY0LCAyMjg2OCwgCisgICAgMTM0LCAyMjg3NiwgMjI4ODAsIDIyODg0LCAyMjg4OCwgMjI4OTMsIDIyODk3LCAxMzgxNSwgMjMyNywgMjI5MDEsIDIyOTA2LCAKKyAgICAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyNCwgMjI5MjgsIDIyOTM0LCAyMjkzOSwgMjI5NDMsIDIyOTQ3LCAyMjk1NSwgCisgICAgMjI5NTksIDIyOTYzLCAyMjk2OCwgMjI5NzMsIDIyOTc3LCAyMjk4MywgMjI5ODgsIDIyOTkyLCAyMjk5NywgMjMwMDIsIAorICAgIDIzMDA2LCAyMzAxMywgMjMwMjAsIDIzMDI3LCAyMzAzMSwgMjMwMzUsIDIzMDQwLCAyMzA0NCwgMjMwNDcsIDIzMDUzLCAKKyAgICAyMzA2NiwgMjMwNzEsIDIzMDgwLCAyMzA4NSwgOTkwMywgMjMwOTAsIDIzMDk1LCAyMzA5OCwgMjczMiwgMjczNywgMjMxMDIsIAorICAgIDIzMTA4LCAyMzExNCwgNzQxMywgMjMxMTksIDIzMTI0LCAyMzEyOSwgMjMxMzUsIDIzMTQwLCAxNDYzNiwgMjMxNDUsIAorICAgIDIzMTUwLCAyMzE1NSwgMjMxNjAsIDIzMTY2LCAyMzE3MSwgMjMxNzYsIDIzMTgyLCAyMzE4NywgMjMxOTEsIDIzMTk2LCAKKyAgICAyMzIwMSwgMjMyMDYsIDIzMjExLCAyMzIxNSwgMjMyMjAsIDIzMjI0LCAyMzIyOSwgMjMyMzQsIDIzMjM5LCAyMzI0NCwgCisgICAgMjMyNDgsIDIzMjUzLCAyMzI1NywgMjMyNjIsIDIzMjY3LCAyMzI3MiwgMjMyNzcsIDI5MjEsIDIzMTkyLCAyMzI4MSwgCisgICAgMjMyODksIDIzMjk2LCAxMDIxOCwgMjMzMDgsIDIzMzE2LCAyMzE5NywgMjMzMjMsIDIzMzI4LCAyMzMzNiwgMjMyMDIsIAorICAgIDIzMzQxLCAyMzM0NiwgMjMzNTQsIDIzMzU5LCAyMzIwNywgMjMzNjQsIDIzMzcyLCAyMzM3NywgMjMzODEsIDIzMzg3LCAKKyAgICAyMzM5NiwgMjM0MDQsIDIzNDA4LCAyMzQxMSwgMjM0MTgsIDIzNDIyLCAyMzQyNiwgMjM0MzIsIDIzNDM5LCAyMzQ0NCwgCisgICAgOTIwNSwgMTcyNywgMTczMiwgMjM0NDgsIDIzNDU0LCAyMzQ2MCwgMjM0NjUsIDIzNDY5LCAyMzQ3MywgMjM0NzcsIDIzNDgxLCAKKyAgICAyMzQ4NSwgMjM0ODksIDIzNDkzLCAyMzQ5NywgMjM1MDAsIDIzNTA2LCAyMzUxMywgMjM1MjEsIDIzNTI3LCAyMzUzMywgCisgICAgMjM1MzgsIDIzNTQzLCAyMzU0NywgMjM1NTIsIDE0NTU2LCAxNDU2MywgMjM1NTksIDIzNTcxLCAyMzU3NCwgMjM1ODEsIAorICAgIDE3MjUwLCAyMzU4OCwgMjM1OTYsIDIzNjA3LCAyMzYxNiwgMjM2MjksIDIzNjM5LCAyMzY1MywgMjM2NjUsIDIzNjc5LCAKKyAgICAyMzY5MiwgMjM3MDQsIDIzNzE0LCAyMzcyNiwgMjM3MzIsIDIzNzQ3LCAyMzc3MSwgMjM3ODksIDIzODA4LCAyMzgyMSwgCisgICAgMjM4MzUsIDIzODUzLCAyMzg2OSwgMjM4ODYsIDIzOTA0LCAyMzkxNSwgMjM5MzQsIDIzOTUxLCAyMzk3MSwgMjM5ODksIAorICAgIDI0MDAxLCAyNDAxNSwgMjQwMjksIDI0MDQxLCAyNDA1OCwgMjQwNzcsIDI0MDk1LCAyNDEwNywgMjQxMjUsIDI0MTQ0LCAKKyAgICAxNTMzOCwgMjQxNTcsIDI0MTc3LCAyNDE4OSwgMTEwNzEsIDI0MjAxLCAyNDIwNiwgMjQyMTEsIDI0MjE2LCAyNDIyMiwgCisgICAgMjQyMjcsIDI0MjMxLCAyNDIzOCwgMjQyNDQsIDI0MTgsIDI0MjQ4LCAyNDI1NCwgMjQyNTgsIDI0MjYxLCAyNDI2NSwgCisgICAgMjQyNjgsIDI0Mjc2LCAyNDI4MiwgMjMyMjUsIDI0Mjg2LCAyNDI5NSwgMjQzMDYsIDI0MzEyLCAyNDMxOCwgMjQzMzMsIAorICAgIDI0MzQyLCAyNDM1MCwgMjQzNTcsIDI0MzYyLCAyNDM2NiwgMjQzNzMsIDI0Mzc5LCAyNDM4OCwgMjQzOTYsIDI0NDAzLCAKKyAgICAyNDQxMywgMjQ0MjIsIDI0NDMyLCAyNDQzNywgMjQ0NDYsIDI0NDU1LCAyNDQ2NiwgMjQ0NzcsIDQxMDMsIDI0NDg3LCAKKyAgICAyNDQ5MSwgMjQ1MDEsIDI0NTA5LCAyNDUxOSwgMjQ1MzAsIDI0NTM1LCAyNDU0NSwgMjQ1NTMsIDI0NTYwLCAyNDU2NiwgCisgICAgMjQ1NzMsIDI0NTc4LCAyMzIzNSwgMjQ1ODIsIDI0NTkxLCAyNDU5NSwgMjQ1OTgsIDI0NjAzLCAyNDYxMSwgMjQ2MTgsIAorICAgIDI0NjI3LCAyNDYzNSwgMjQ2NDMsIDI0NjUzLCAyNDY2MiwgMjQ2NjgsIDI0Njc0LCAyNDY3OCwgMjMyNDAsIDIzMjQ1LCAKKyAgICAyNDY4MiwgMjQ2OTIsIDI0NzAyLCAyNDcxMiwgMjQ3MjAsIDI0NzI3LCAyNDczNywgMjQ3NDUsIDI0NzUzLCAyNDc1OSwgCisgICAgMjQ3NjcsIDgxMiwgMjQ3NzYsIDE1NTI5LCA1NzcsIDI0NzkwLCAyNDc5OSwgMjQ4MDcsIDI0ODE4LCAyNDgyOSwgMjQ4MzksIAorICAgIDI0ODQ4LCAyNDg2MCwgMjQ4NjksIDI0ODc4LCAyNDg4NSwgMjQ4OTEsIDI0OTAwLCAyNDkwOSwgMjQ5MTcsIDI0OTI3LCAKKyAgICAyNDkzNSwgMjQ5NDMsIDk2NDQsIDI0OTQ5LCAyNDk1MiwgMjQ5NTYsIDI0OTYxLCAyNDk2NiwgMjQ5NzAsIDEwMzMzLCAKKyAgICAyMzI1OCwgMjMyNjMsIDI0OTc4LCAyNDk4NCwgMjQ5OTAsIDI0OTk1LCAyNTAwMCwgMjUwMDQsIDI1MDEyLCAyNTAxOCwgCisgICAgMjUwMjQsIDI1MDI4LCAzNjI3LCAyNTAzNiwgMjUwNDEsIDI1MDQ2LCAyNTA1MCwgMjUwNTQsIDEwNDEzLCAyNTA2MSwgCisgICAgMjUwNjksIDI1MDgzLCAyNTA5MCwgMjUwOTYsIDEwNDIyLCAxMDQyOCwgMjUxMDQsIDI1MTEyLCAyNTExOSwgMjUxMjQsIAorICAgIDI1MTI5LCAyMzI2OCwgMjUxMzUsIDI1MTQ2LCAyNTE1MCwgMjUxNTUsIDI2MjEsIDI1MTYwLCAyNTE3MSwgMjUxNzcsIAorICAgIDI1MTgyLCAyNTE4NiwgMjUxOTAsIDI1MTkzLCAyNTIwMCwgMjUyMDcsIDI1MjEzLCAyNTIyMCwgMjUyMjYsIDI1MjMwLCAKKyAgICAyMzI3MywgMjUyMzUsIDI1MjM5LCAyNTI0MywgMTQyOCwgODM4NSwgMjUyNDgsIDI1MjUzLCAyNTI1OCwgMjUyNjMsIAorICAgIDI1MjY4LCAyNTI3MywgMjUyNzgsIDI1MjgzLCAyNTI4OCwgMjUyOTMsIDI1Mjk4LCAyNTMwMywgMjUzMDgsIDI1MzEzLCAKKyAgICAyNTMxOSwgMjUzMjQsIDI1MzI5LCAyNTMzNCwgMjUzMzksIDI1MzQ0LCAyNTM0OSwgMjUzNTUsIDI1MzYwLCAyNTM2NSwgCisgICAgMjUzNzAsIDI1Mzc1LCAyNTM4MCwgMjUzODUsIDI1MzkwLCAyNTM5NiwgMjU0MDIsIDI1NDA3LCAyNTQxMywgMjU0MTgsIAorICAgIDI1NDIzLCA1LCAyNTQyOSwgMjU0MzMsIDI1NDM3LCAyNTQ0MSwgMjU0NDYsIDI1NDUwLCAyNTQ1NCwgMjU0NTgsIDI1NDYyLCAKKyAgICAyNTQ2NywgMjU0NzEsIDI1NDc2LCAyNTQ4MCwgMjU0ODMsIDI1NDg3LCAyNTQ5MiwgMjU0OTYsIDI1NTAxLCAyNTUwNSwgCisgICAgMjU1MDksIDI1NTEzLCAyNTUxOCwgMjU1MjIsIDI1NTI2LCAyNTUzNiwgMjU1NDEsIDI1NTQ1LCAyNTU0OSwgMjU1NTQsIAorICAgIDI1NTU5LCAyNTU2OCwgMjU1NzMsIDI1NTc4LCAyNTU4MiwgMjU1ODYsIDI1NTk5LCAyNTYxMSwgMjU2MjAsIDI1NjI5LCAKKyAgICAyNTYzNCwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTMsIDI1NjYzLCAyNTY3MiwgMjU2ODAsIDI1Njg2LCAyNTY5MSwgCisgICAgMjU2OTUsIDI1NzAyLCAyNTcxMiwgMjU3MjEsIDI1NzI5LCAyNTczNywgMjU3NDQsIDI1NzUyLCAyNTc2MSwgMjU3NzAsIAorICAgIDI1Nzc4LCAyNTc4OCwgMjU3OTMsIDI1Nzk3LCAyNTgwMSwgMjU4MDQsIDI1ODA2LCAyNTgxMCwgMjU4MTQsIDI1ODE5LCAKKyAgICAyNTgyNCwgMjU4MjgsIDI1ODMyLCAyNTgzNSwgMjU4MzksIDI1ODQyLCAyNTg0NiwgMjU4NDksIDI1ODUyLCAyNTg1NiwgCisgICAgMjU4NjIsIDI1ODY2LCAyNTg3MCwgMjU4NzQsIDI1ODc5LCAyNTg4NCwgMjU4ODksIDI1ODkzLCAyNTg5NiwgMjU5MDEsIAorICAgIDI1OTA3LCAyNTkxMiwgMjU5MTgsIDI1OTIzLCAyNTkyNywgMjU5MzMsIDI1OTM3LCAyNTk0MSwgMjU5NDYsIDI1OTUwLCAKKyAgICAyNTk1NSwgMjU5NjAsIDI1OTY0LCAyNTk2OCwgMjU5NzUsIDI1OTc5LCAyNTk4MiwgMjU5ODYsIDI1OTkwLCAyNTk5NiwgCisgICAgMjYwMDIsIDI2MDA2LCAyNjAxMCwgMjYwMTUsIDI2MDIyLCAyNjAyOCwgMjYwMzIsIDI2MDQxLCAyNjA0NSwgMjYwNDksIAorICAgIDI2MDUyLCAyNjA1OCwgMjYwNjMsIDI2MDY5LCAxNDcyLCAxNzkxLCAyNjA3NCwgMjYwNzksIDI2MDg0LCAyNjA4OSwgCisgICAgMjYwOTQsIDI2MDk5LCAyNjEwNCwgMjE1NSwgMjIwMSwgMjYxMDksIDI2MTEyLCAyNjExNiwgMjYxMjAsIDI2MTI1LCAKKyAgICAyNjEyOSwgMTU1NDEsIDI2MTMzLCAyNjEzOCwgMjYxNDMsIDI2MTQ3LCAyNjE1MCwgMjYxNTUsIDI2MTU5LCAyNjE2NCwgCisgICAgMjYxNjgsIDE1NTQ1LCAyNjE3MywgMjYxNzYsIDI2MTc5LCAyNjE4MywgMjYxODgsIDI2MTkyLCAyNjIwNSwgMjYyMDksIAorICAgIDI2MjEyLCAyNjIyMCwgMjYyMjksIDI2MjM2LCAyNjI0MSwgMjYyNDcsIDI2MjUzLCAyNjI2MSwgMjYyNjgsIDI2Mjc1LCAKKyAgICAyNjI3OSwgMjYyODMsIDI2Mjg3LCAyNjI5MiwgMjYyOTcsIDI2MzAxLCAyNjMwOSwgMjYzMTQsIDI2MzI2LCAyNjMzNywgCisgICAgMjYzNDIsIDI2MzQ2LCAyNjM1MCwgMjYzNTYsIDI2MzU5LCAyNjM2NCwgMjYzNjksIDI2MzczLCAyNjM3NywgMjYzODAsIAorICAgIDI2Mzg2LCA4MTIzLCAyMzMxLCAyNjM5MCwgMjYzOTUsIDI2NDExLCA5OTUwLCAyNjQzMSwgMjY0NDAsIDI2NDU2LCAyNjQ2MCwgCisgICAgMjY0NjcsIDI2NDcwLCAyNjQ3NiwgMjY0ODYsIDI2NDkyLCAyNjUwMSwgMjY1MTYsIDI2NTI4LCAyNjUzOSwgMjY1NDcsIAorICAgIDI2NTU2LCAyNjU2MiwgMjY1NzEsIDI2NTgxLCAyNjU5MSwgMjY2MDIsIDI2NjEzLCAyNjYyMywgMjY2MzIsIDI2NjM5LCAKKyAgICAyNjY0OCwgMjY2NTYsIDI2NjYzLCAyNjY3MSwgMjY2NzgsIDI2Njg1LCAyNjY5OCwgMjY3MDUsIDI2NzEzLCAyNjcyMCwgCisgICAgMjY3MjYsIDI2NzMxLCAyNjc0MCwgMjY3NDYsIDI2NzUxLCAyNjc1OSwgMjY3NjYsIDI0NTExLCAyNjc3OCwgMjY3OTAsIAorICAgIDI2ODA0LCAyNjgxMiwgMjY4MTksIDI2ODMxLCAyNjg0MCwgMjY4NDksIDI2ODU3LCAyNjg2NSwgMjY4NzMsIDI2ODgwLCAKKyAgICAyNjg4OSwgMjY4OTcsIDI2OTA3LCAyNjkxNiwgMjY5MjYsIDI2OTM1LCAyNjk0NCwgMjY5NTIsIDI2OTU3LCAyNjk2MSwgCisgICAgMjY5NjQsIDI2OTY4LCAyNjk3MiwgMjY5NzYsIDI2OTgwLCAyNjk4NCwgMjY5OTAsIDI2OTk2LCAyNzAwNCwgMTU1OTAsIAorICAgIDI3MDExLCAyNzAxNiwgMjcwMjMsIDI3MDI5LCAyNzAzNiwgMTU1OTgsIDI3MDQzLCAyNzA0NiwgMjcwNTgsIDI3MDY2LCAKKyAgICAyNzA3MiwgMjcwNzcsIDI3MDgxLCAxMDM2MywgMjcwOTIsIDI3MTAwLCAyNzExMCwgMjcxMTksIDI3MTI2LCAyNzEzMCwgCisgICAgMTU2MDksIDI3MTMzLCAyNzE0MCwgMjcxNDQsIDI3MTUwLCAyNzE1MywgMjcxNjAsIDI3MTY2LCAyNzE3MywgMjcxNzksIAorICAgIDI3MTgzLCAyNzE4OCwgMjcxOTIsIDI3MjAxLCAyNzIwOCwgMjcyMTQsIDgxNjQsIDI3MjIxLCAyNzIyOSwgMjcyMzYsIAorICAgIDI3MjQyLCAyNzI0NywgMjcyNTMsIDI3MjU5LCAyNzI2NywgMjcyNzMsIDI3Mjc3LCAyNzI4MCwgMjcyODIsIDI2OTY5LCAKKyAgICAyNzI5MSwgMjcyOTcsIDI3MzAzLCAyNzMxMywgMjczMTgsIDI3MzI1LCAyNzMzMSwgMjczMzYsIDI3MzQxLCAyNzM0NiwgCisgICAgMjczNTAsIDI3MzU1LCAyNzM2MiwgMjczNjgsIDI3Mzc3LCAyNzM4MSwgMjczODgsIDI3Mzk0LCAyNzQwMywgMjc0MDksIAorICAgIDI3NDE0LCAyNzQyMCwgMjc0MjUsIDI3NDMyLCAyNzQ0MywgMjc0NDgsIDI3NDUyLCAyNzQ2MiwgMjc0NjgsIDI3NDcyLCAKKyAgICAyNzQ3NywgMjc0ODcsIDI3NDk2LCAyNzUwMCwgMjc1MDcsIDI3NTE1LCAyNzUyMiwgMjc1MjgsIDI3NTMzLCAyNzU0MSwgCisgICAgMjc1NDgsIDI3NTUzLCAyNzU2MCwgMjc1NzIsIDI3NTgxLCAyNzU4NSwgMTM3NDYsIDI3NTkzLCAyNzYwMywgMjc2MDcsIAorICAgIDI2MjE2LCAyNzYxOCwgMjc2MjMsIDI3NjI3LCAyNzYzNCwgMjc2NDEsIDIyOTc5LCAyNjg5NCwgMjc2NDYsIDI3NjUwLCAKKyAgICAyNzY1MywgMjM5MjEsIDI3NjU4LCAyNzY3MiwgMjc2ODgsIDI3NzA2LCAyNzcyNSwgMjc3NDIsIDI3NzYwLCAyMzk0MCwgCisgICAgMjc3NzcsIDI3Nzk3LCAyMzk1NywgMjc4MDksIDI3ODIxLCAxNjU5NywgMjc4MzMsIDIzOTc3LCAyNzg0NywgMjc4NTksIAorICAgIDExMDg0LCAyNzg3MywgMjc4NzgsIDI3ODgzLCAyNzg4OCwgMjc4OTQsIDI3OTAwLCAyNzkwNiwgMjc5MTAsIDI3OTE4LCAKKyAgICAyNzkyNSwgMjc5MzAsIDI3OTQwLCAyNzk0NiwgMTA3MDcsIDI3OTUyLCAyNzk1NCwgMjc5NTksIDI3OTY3LCAyNzk3MSwgCisgICAgMjczNTgsIDI3OTc3LCAyNzk4NCwgMTIxNzAsIDEyMTgwLCAyNzk5MSwgMjgwMDEsIDI4MDA2LCAyODAxMCwgMjgwMTMsIAorICAgIDI4MDE5LCAyODAyNywgMjgwMzksIDI4MDQ5LCAyODA2NSwgMjgwNzgsIDI4MDkyLCAxNjYxNSwgMjgxMDYsIDI4MTEzLCAKKyAgICAyODExNywgMjgxMjAsIDI4MTI1LCAyODEyOSwgMjgxMzYsIDI4MTQzLCAyODE1MywgMjgxNTgsIDI4MTYzLCAyODE2OCwgCisgICAgMjgxNzYsIDI4MTg0LCAyODE4OSwgMjgxOTgsIDI4MjAzLCAzMzI5LCAyODIwNywgMjgyMTAsIDI4MjEzLCAyODIxOCwgCisgICAgMjgyMjUsIDI4MjMwLCAyODI0NiwgMjgyNTQsIDI4MjYyLCA5NzE4LCAyODI3MCwgMjgyNzUsIDI4Mjc5LCAyODI4NSwgCisgICAgMjgyOTAsIDI4Mjk2LCAyODI5OSwgMjgzMDUsIDI4MzE3LCAyODMyNSwgMjgzMzIsIDI4MzM4LCAyODM0NSwgMjgzNTYsIAorICAgIDI4MzcwLCAyODM4MywgMjgzODksIDI4Mzk4LCAyODQwNCwgMjg0MTMsIDI4NDI1LCAyODQzNiwgMjg0NDYsIDI4NDU1LCAKKyAgICAyODQ2NCwgMjg0NzIsIDI4NDgzLCA4MTQ2LCAyODQ5MCwgMjg0OTcsIDI4NTAzLCAyODUwOCwgMjg1MTQsIDI4NTIxLCAKKyAgICAyODUzMSwgMjg1NDEsIDI4NTUwLCAyODU1NiwgMjg1NjMsIDI4NTY4LCAyODU3NiwgMjg1ODMsIDI4NTkxLCAyODU5OSwgCisgICAgMjg2MTEsIDY0MzgsIDI4NjE4LCAyODYyMSwgMjg2MzAsIDI4NjM4LCAyODY0NCwgMjg2NTAsIDI4NjU1LCAyODY1OSwgCisgICAgMjg2NjIsIDI4NjY4LCAyODY3NSwgMjg2ODAsIDI4Njg1LCAyODY5MCwgMjg2OTQsIDI4NzA2LCAyODcxNywgMjg3MjYsIAorICAgIDI4NzM0LCAxNTc1NywgMjg3MzksIDI4NzQ1LCAyODc1MSwgMTIxNjMsIDg4NjIsIDI4NzU2LCAyODc2MCwgMjg3NjQsIAorICAgIDI4NzY3LCAyODc3MCwgMjg3NzYsIDI4Nzg0LCAyODc5MiwgMjg3OTYsIDI4ODAwLCAyODgwNSwgMjg4MDgsIDI4ODE3LCAKKyAgICAyODgyMSwgMjg4MjQsIDI4ODMyLCAyODg0MywgMjg4NDcsIDI4ODUzLCAyODg1OSwgMjg4NjMsIDI4ODY5LCAyODg3NywgCisgICAgMjg4OTksIDI4OTIzLCAyODkzMiwgMjg5MzksIDI4OTQ2LCAyODk1MiwgMjg5NjAsIDI4OTY2LCAyODk3MSwgMjg5ODIsIAorICAgIDI5MDAwLCAyOTAwNywgMjkwMTUsIDI5MDE5LCAyOTAyNCwgMjkwMzMsIDI5MDQ2LCAyOTA1NCwgMjkwNjYsIDI5MDc3LCAKKyAgICAyOTA4OCwgMjkwOTgsIDI5MTEyLCAyOTEyMSwgMjkxMjksIDI5MTQxLCA5OTY3LCAyOTE1MiwgMjkxNjMsIDI5MTc1LCAKKyAgICAyOTE4NSwgMjkxOTQsIDI5MTk5LCAyOTIwMywgMjkyMTEsIDI5MjIyLCAyOTIzMiwgMjkyMzcsIDI5MjQxLCAyOTI0NCwgCisgICAgMjkyNDcsIDI5MjU1LCAyOTI2MywgMjkyNzIsIDI5MjgyLCAyOTI5MSwgMjkyOTcsIDI5MzExLCAyNjgzLCAyOTMzMywgCisgICAgMjkzNDQsIDI5MzUzLCAyOTM2MywgMjkzNzUsIDI5Mzg0LCAyOTM5MywgMjk0MDMsIDI5NDExLCAyOTQxOSwgMjk0MjgsIAorICAgIDI5NDMzLCAyOTQ0NCwgMjk0NDksIDI5NDYwLCAyOTQ2NCwgMjk0NzQsIDI5NDgzLCAyOTQ5MSwgMjk1MDEsIDI5NTExLCAKKyAgICAyOTUxOSwgMjk1MjgsIDI5NTM1LCAyOTU0MywgMjk1NTAsIDI5NTU5LCAyOTU2OCwgMjk1NzIsIDI5NTgwLCAyOTU4NywgCisgICAgMjk1OTUsIDI5NjAyLCAyOTYxMywgMjk2MjgsIDI5NjM1LCAyOTY0MSwgMjk2NTEsIDI5NjYwLCAyOTY2NiwgMjk2NzcsIAorICAgIDI5NjgxLCAyOTY4OCwgMjk2OTIsIDI5Njk4LCAxNDc1OCwgMjk3MDQsIDI5NzA4LCAyOTcxMywgMjk3MjAsIDI5NzI0LCAKKyAgICAyOTcyOCwgMjk3MzYsIDI5NzQ0LCAyOTc1MCwgMjk3NTksIDI5NzY2LCAyOTc3MSwgMjk3NzYsIDI5Nzg2LCAyNDU4MCwgCisgICAgMjk3OTAsIDI5NzkzLCAyOTc5OCwgMjk4MDMsIDI5ODA4LCAyOTgxMywgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzMsIAorICAgIDI5ODM5LCAyOTg0NCwgMjk4NDksIDI5ODU1LCAxMTk4LCA2OTksIDI5ODYwLCAyOTg2OSwgMjM3OSwgMjk4NzYsIDI5ODgxLCAKKyAgICAyOTg4NSwgMjk4OTEsIDEyNDcsIDU1OCwgMjcwLCAyOTg5NiwgMjk5MDUsIDI5OTEzLCAyOTkyMiwgMjk5MzAsIDI5OTQxLCAKKyAgICAyOTk0OSwgMjk5NTgsIDI5OTY2LCAxMDUwMiwgMjk5NzAsIDI5OTc4LCAyOTk4NiwgMjk5OTEsIDE1NTU4LCAyOTk5NywgCisgICAgMzAwMDMsIDMwMDA5LCA2MDM0LCAzMDAxNCwgMzAwMTgsIDMwMDI0LCAzMDAyOCwgMzAwMzUsIDE0MzgsIDMwMDQxLCAKKyAgICAzMDA0OCwgMTM0NywgNjA0MiwgMzAwNTIsIDMwMDYyLCAzMDA3MCwgMzAwNzYsIDMwMDg1LCAzMDA5MywgMzAwOTksIAorICAgIDMwMTA3LCAzMDExNCwgMTE3MjAsIDMwMTIwLCAzMDEyNywgMzAxMzIsIDMwMTM5LCAxNDc5LCAxOTksIDIxNTQsIDMwMTQ1LCAKKyAgICAzMDE1MSwgMzAxNTgsIDMwMTY5LCAzMDE4MCwgMzAxODgsIDMwMTk1LCAzMDIwNSwgMzAyMTQsIDMwMjIyLCAzMDIzMSwgCisgICAgMzAyMzgsIDMwMjQ1LCAzMDI1OCwgMzAyNjUsIDMwMjcxLCAzMDI4MiwgMzAzMDEsIDEyNTIsIDMwMzA1LCAzMDMxMCwgCisgICAgMzAzMTgsIDM2ODYsIDMwMzIyLCAzMDMyNywgMzAzMzEsIDMwMzM1LCAxNDQyLCAyNTgzMywgMzAzNDUsIDMwMzQ5LCAKKyAgICAzMDM1NCwgMzAzNTgsIDM1OTUsIDMwMzY0LCAzMDM3MiwgMzAzNzksIDMwMzkwLCAzMDM5OCwgMzA0MDYsIDM2ODcsIDMyMCwgCisgICAgMzA0MTEsIDMwNDE5LCAzMDQyNywgMzA0MzQsIDMwNDQwLCAzMDQ0NSwgMjIyMywgMTEyNTEsIDMwNDUyLCAzMDQ1OCwgCisgICAgMjcxODQsIDI3NDM4LCAzMDQ2NCwgNTQyLCAxMDYsIDMwNDY4LCAzMDQ3MiwgMzA0NzgsIDYzNSwgOTU5MywgMzA0ODMsIAorICAgIDMwNDkwLCAzMDQ5NiwgMzA1MDAsIDE2MjQsIDMwNTAzLCAzMDUwNywgMTYwMDUsIDMwNTEwLCAzMDUxNSwgMzA1MjIsIAorICAgIDMwNTI4LCAzMDUzMywgMzA1NDEsIDMwNTQ4LCAzMDU1NCwgMjMzNjEsIDMwNTU4LCAzMDU2MiwgMzc1NywgMTc1NDEsIAorICAgIDMwNTY2LCAzMDU3MSwgMzA1NzUsIDMwNTc4LCAzMDU4NiwgMzA1OTQsIDMwNTk5LCAzMDYwNywgMzA2MTAsIDMwNjE3LCAKKyAgICAzMDYyNywgMzA2MzksIDMwNjQ0LCAzMDY0OCwgMzA2NTYsIDMwNjYzLCAzMDY2OSwgMzA2NzYsIDMwNjgzLCAzMDY4NiwgCisgICAgMzA2OTAsIDMwNjk0LCAxNDQ2LCAzMDcwNCwgMzA3MDYsIDMwNzExLCAzMDcxNywgMzA3MjMsIDMwNzI4LCAzMDczMywgCisgICAgMzA3MzgsIDMwNzQzLCAzMDc0OCwgMzA3NTMsIDMwNzU4LCAzMDc2MywgMzA3NjgsIDMwNzczLCAzMDc3OCwgMzA3ODMsIAorICAgIDMwNzg4LCAzMDc5MywgMzA3OTksIDMwODA1LCAzMDgxMSwgMzA4MTcsIDMwODIyLCAzMDgyNywgMzA4MzIsIDMwODM4LCAKKyAgICAzMDg0MywgMzA4NDgsIDMwODUzLCAzMDg1OSwgMzA4NjQsIDMwODcwLCAzMDg3NSwgMzA4ODAsIDMwODg1LCAzMDg5MCwgCisgICAgMzA4OTYsIDMwOTAxLCAzMDkwNywgMzA5MTIsIDMwOTE3LCAzMDkyMiwgMzA5MjcsIDMwOTMzLCAzMDkzOCwgMzA5NDQsIAorICAgIDMwOTQ5LCAzMDk1NCwgMzA5NTksIDMwOTY0LCAzMDk2OSwgMzA5NzQsIDMwOTc5LCAzMDk4NCwgMzA5ODksIDMwOTk1LCAKKyAgICAzMTAwMSwgMzEwMDcsIDMxMDEyLCAzMTAxNywgMzEwMjIsIDMxMDI3LCAzMTAzMywgMzEwMzksIDMxMDQ1LCAzMTA1MSwgCisgICAgMzEwNTcsIDMxMDYzLCAzMTA2OCwgMzEwNzQsIDMxMDc5LCAzMTA4NCwgMzEwODksIDMxMDk0LCAzMTEwMCwgMjQ2MywgCisgICAgMzExMDUsIDI0NzAsIDI0NzcsIDI3NzQsIDMxMTEwLCAyNDgzLCAyNDkzLCAzMTExNiwgMzExMjAsIDMxMTI1LCAzMTEzMCwgCisgICAgMzExMzYsIDMxMTQxLCAzMTE0NiwgMzExNTAsIDMxMTU1LCAzMTE2MSwgMzExNjYsIDMxMTcxLCAzMTE3NiwgMzExODIsIAorICAgIDMxMTg3LCAzMTE5MSwgMzExOTUsIDMxMjAwLCAzMTIwNSwgMzEyMTAsIDMxMjE1LCAzMTIyMCwgMzEyMjYsIDMxMjMyLCAKKyAgICAzMTIzNywgMzEyNDEsIDMxMjQ2LCAzMTI1MiwgMzEyNTYsIDMxMjYxLCAzMTI2NiwgMzEyNzEsIDMxMjc2LCAzMTI4MCwgCisgICAgMzEyODMsIDMxMjg4LCAzMTI5MywgMzEyOTgsIDMxMzAzLCAzMTMwOCwgMzEzMTQsIDMxMzIwLCAzMTMyNSwgMzEzMzAsIAorICAgIDMxMzM1LCAzMTMzOSwgMzEzNDQsIDMxMzQ5LCAzMTM1NCwgMzEzNTksIDMxMzY0LCAzMTM2OSwgMzEzNzMsIDMxMzc4LCAKKyAgICAzMTM4MywgMzEzODgsIDMxMzkyLCAzMTM5NiwgMzE0MDAsIDMxNDA1LCAzMTQxMywgMzE0MTgsIDMxNDIzLCAzMTQyOSwgCisgICAgMzE0MzUsIDMxNDQxLCAzMTQ0NiwgMzE0NTAsIDMxNDUzLCAzMTQ1OCwgMzE0NjMsIDMxNDY3LCAzMTQ3MiwgMzE0NzcsIAorICAgIDMxNDgxLCAzMTQ4NiwgMzE0OTAsIDMxNDkzLCAzMTQ5OCwgMzg1MywgMTgyNDgsIDMxNTAzLCAzMTUwOCwgMzE1MTMsIAorICAgIDMxNTIxLCAyMjI3MywgMzAwNDUsIDkyNzMsIDMxNTI2LCAzMTUzMSwgMzE1MzUsIDMxNTQwLCAzMTU0NCwgMzE1NDgsIAorICAgIDMxNTUzLCAzMTU1NywgMzE1NjAsIDMxNTYzLCAzMTU2NywgMzE1NzIsIDMxNTc2LCAzMTU4NCwgMzE1ODgsIDMxNTkxLCAKKyAgICAzMTU5NiwgMzE2MDAsIDMxNjA0LCAzMTYwOSwgMzE2MTQsIDMxNjE4LCAzMTYyNCwgMzE2MjksIDMxNjM0LCAzMTY0MSwgCisgICAgMzE2NDgsIDMxNjUyLCAzMTY1NSwgMzE2NjEsIDMxNjcwLCAzMTY3NywgMzE2ODUsIDMxNjkyLCAzMTY5NiwgMzE3MDEsIAorICAgIDMxNzA1LCAzMTcwOSwgMzE3MTUsIDMxNzIxLCAzMTcyNSwgMzE3MzEsIDMxNzM2LCAzMTc0MSwgMzE3NDUsIDMxNzUyLCAKKyAgICAzMTc1OCwgMzE3NjQsIDMxNzcwLCAzMTc3NiwgMzE3ODMsIDMxNzg5LCAzMTc5NSwgMzE4MDEsIDMxODA3LCAzMTgxMywgCisgICAgMzE4MTksIDMxODI1LCAzMTgzMiwgMzE4MzgsIDMxODQ1LCAzMTg1MSwgMzE4NTcsIDMxODYzLCAzMTg2OSwgMzE4NzUsIAorICAgIDMxODgxLCAzMTg4NywgMzE4OTMsIDMxODk5LCAxMjA1OSwgMzE5MDUsIDMxOTExLCAzMTkxNiwgMzE5MjEsIDMxOTI2LCAKKyAgICAzMTkyOSwgMzE5MzUsIDMxOTQzLCAzMTk0OCwgMzE5NTIsIDMxOTU3LCAzMTk2MywgMzE5NzIsIDMxOTc4LCAzMTk4MywgCisgICAgMzE5ODgsIDMxOTkzLCAzMTk5NywgMzIwMDIsIDMyMDA3LCAzMjAxMiwgMzIwMTcsIDMyMDIyLCAzMjAyOSwgMzIwMzYsIAorICAgIDMyMDQyLCAzMjA0OCwgMzIwNTMsIDE3MTkxLCAzMjA2MCwgMzIwNjYsIDMyMDczLCAzMjA3OSwgMzIwODUsIDMyMDkwLCAKKyAgICAzMjA5OCwgMzIxMDMsIDEwMTE3LCAzMjEwNywgMzIxMTIsIDMyMTE3LCAzMjEyMywgMzIxMjgsIDMyMTMzLCAzMjEzNywgCisgICAgMzIxNDIsIDMyMTQ3LCAzMjE1MywgMzIxNTgsIDMyMTYzLCAzMjE2OCwgMzIxNzIsIDMyMTc3LCAzMjE4MiwgMzIxODYsIAorICAgIDMyMTkxLCAzMjE5NiwgMzIyMDAsIDMyMjA1LCAzMjIwOSwgMzIyMTQsIDMyMjE5LCAzMjIyNCwgMzIyMjgsIDMyMjMzLCAKKyAgICAzMjIzNywgMzIyNDEsIDE2MTExLCAzMjI0NiwgMzIyNTUsIDMyMjYxLCAzMjI2NywgMzIyNzYsIDMyMjg0LCAzMjI5MywgCisgICAgMzIzMDEsIDMyMzA2LCAzMjMxMCwgMzIzMTcsIDMyMzIzLCAzMjMzMSwgMzIzMzUsIDMyMzM4LCAzMjM0MywgMzIzNTIsIAorICAgIDMyMzYwLCAzMjM3OCwgMzIzODQsIDE0NzgsIDMyMzkwLCAzMjM5MywgMzIzOTcsIDIzNDU1LCAyMzQ2MSwgMzI0MDMsIAorICAgIDMyNDA3LCAzMjQxOCwgMzI0MjksIDMyNDQwLCAzMjQ1MiwgMzI0NTYsIDMyNDYzLCAzMjQ3MCwgMzI0NzUsIDMyNDc5LCAKKyAgICA2MDc5LCA4NTUsIDIyMjcyLCAzMjQ4NywgMzI0OTIsIDMyNDk2LCAzMjUwMSwgMzI1MDUsIDMyNTExLCAzMjUxNiwgMzI1MjIsIAorICAgIDMyNTI3LCAzMjUzMywgMzI1MzgsIDMyNTQ0LCAzMjU0OSwgMzI1NTUsIDMyNTYxLCAzMjU2NywgMzI1NzIsIDMyNTI4LCAKKyAgICAzMjUzNCwgMzI1NzYsIDMyNTgxLCAzMjU4NywgMzI1OTIsIDMyNTk4LCAzMjYwMywgMzI2MDksIDMyNjE0LCAzMjUzOSwgCisgICAgMTA5NTcsIDMyNjE4LCAzMjU1MCwgMzI1NTYsIDMyNTYyLCAyODY2LCAzNTA5LCAzMjYyNCwgMzI2MjcsIDMyNjMyLCAKKyAgICAzMjYzOCwgMzI2NDQsIDMyNjUwLCAzMjY1NywgMzI2NjMsIDMyNjY5LCAzMjY3NSwgMzI2ODEsIDMyNjg3LCAzMjY5MywgCisgICAgMzI2OTksIDMyNzA1LCAzMjcxMSwgMzI3MTcsIDMyNzIzLCAzMjcyOSwgMzI3MzYsIDMyNzQyLCAzMjc0OCwgMzI3NTQsIAorICAgIDMyNzYwLCAzMjc2NiwgMzI3NjksIDMyNzc0LCAzMjc3NywgMzI3ODQsIDMyNzg5LCAzMjc5NywgMzI4MDIsIDMyODA3LCAKKyAgICAzMjgxMywgMzI4MTgsIDMyODIzLCAzMjgyNywgMzI4MzIsIDMyODM4LCAzMjg0MywgMzI4NDksIDMyODU0LCAzMjg2MCwgCisgICAgMzI4NjUsIDMyODcxLCAzMjg3NywgMzI4ODEsIDMyODg2LCAzMjg5MSwgMzI4OTYsIDMyOTAxLCAzMjkwNSwgMzI5MTAsIAorICAgIDMyOTE1LCAzMjkyMCwgMzI5MjYsIDMyOTMyLCAzMjkzOCwgMzI5NDQsIDMyOTQ5LCAzMjk1MywgMzI5NTYsIDMyOTYyLCAKKyAgICAzMjk2OCwgMzI5NzcsIDMyOTg1LCAzMjk5MiwgMzI5OTcsIDMzMDAxLCAzMzAwNSwgMzMwMTAsIDE1OTU5LCAzMzAxNSwgCisgICAgMzMwMjMsIDMzMDI5LCAzODA1LCAxMzU3LCAzMzAzNCwgMzMwMzgsIDgyMTMsIDMzMDQ0LCAzMzA1MCwgMzMwNTcsIDgyMjIsIAorICAgIDMzMDYxLCAzMzA2NywgMzMwNzQsIDMzMDgwLCAzMzA4OSwgMzMwOTcsIDMzMTA5LCAzMzExMywgMzMxMjAsIDMzMTI2LCAKKyAgICAzMzEzMSwgMzMxMzUsIDMzMTM5LCAzMzE0MiwgMzMxNTEsIDMzMTU5LCAzMjUyOSwgMzMxNjQsIDMzMTc0LCAzMzE4NCwgCisgICAgMzMxOTQsIDMzMjAwLCAzMzIwNSwgMzMyMTUsIDMzMjIwLCAzMzIzMywgMzMyNDcsIDMzMjU4LCAzMzI3MCwgMzMyODIsIAorICAgIDMzMjk2LCAzMzMwOSwgMzMzMjEsIDMzMzMzLCAxNTM3OSwgMzMzNDcsIDMzMzUyLCAzMzM1NywgMzMzNjEsIDMzMzY1LCAKKyAgICAzMzM2OSwgMTc4MCwgMjg0MzQsIDMzMzczLCAzMzM3OCwgMzI1NzcsIDMzMzgzLCAzMzM4NiwgMzMzOTEsIDMzMzk2LCAKKyAgICAzMzQwMSwgMzM0MDcsIDMzNDEzLCAxMDYyMiwgMzM0MTgsIDMzNDI0LCAzMzQzMSwgMTY1NDksIDMzNDM3LCAzMzQ0MiwgCisgICAgMzM0NDcsIDMzNDUxLCAzMzQ1NiwgMzM0NjEsIDMyNTgyLCAzMzQ2NiwgMzM0NzEsIDMzNDc2LCAzMzQ4MiwgMzI1ODgsIAorICAgIDMzNDg3LCAzMzQ5MCwgMzM0OTcsIDMzNTA1LCAzMzUxMSwgMzM1MTcsIDMzNTIzLCAzMzUzNCwgMzM1MzksIDMzNTQ2LCAKKyAgICAzMzU1MywgMzM1NjAsIDMzNTY4LCAzMzU3NywgMzM1ODYsIDMzNTkyLCAzMzU5OCwgMzM2MDYsIDMyNTkzLCAzMzYxMSwgCisgICAgMzM2MTcsIDMzNjIzLCAzMjU5OSwgMzM2MjgsIDMzNjMzLCAzMzY0MSwgMzM2NDksIDMzNjU1LCAzMzY2MiwgMzM2NjgsIAorICAgIDMzNjc1LCAzMzY4MiwgMzM2ODgsIDMzNjk2LCAzMzcwNiwgMzM3MTMsIDMzNzE5LCAzMzcyNCwgMzM3MzAsIDMzNzM1LCAKKyAgICAzMzc0MCwgMzM3NDcsIDMzNzU2LCAzMzc2NCwgMzM3NjksIDMzNzc1LCAzMzc4MiwgMzM3OTAsIDMzNzk2LCAzMzgwMSwgCisgICAgMzM4MDcsIDMzODE2LCAzMzgyMywgMjkyNzcsIDMzODI5LCAzMzgzMywgMzM4MzgsIDMzODQ3LCAzMzg1MiwgMzM4NTcsIAorICAgIDMzODYyLCAxMzA5MiwgMzM4NzAsIDMzODc1LCAzMzg4MCwgMzM4ODUsIDMzODg5LCAzMzg5NCwgMzM4OTksIDMzOTA2LCAKKyAgICAzMzkxMSwgMzM5MTYsIDMzOTIxLCAzMjYwNCwgMjIyMDksIDMzOTI3LCAyNTM5LCAyMjIsIDMzOTMwLCAzMzkzMywgMzM5MzcsIAorICAgIDMzOTQxLCAzMzk1MSwgMzM5NTksIDMzOTY2LCAzMzk3MCwgMzM5NzcsIDMzOTg0LCAzMzk5MywgMzM5OTcsIDM0MDAwLCAKKyAgICAzNDAwNiwgMzQwMTQsIDM0MDIyLCAzNDAyNiwgMzQwMzAsIDM0MDMzLCAzNDAzOSwgMzQwNDYsIDM0MDUwLCAzNDA1NCwgCisgICAgMzQwNjEsIDM0MDY5LCAzMjU0MCwgMzQwNzYsIDM0MDg0LCAxMDY4MiwgNTk4LCAzNDksIDM0MDk2LCAzNDEwMSwgMzQxMDYsIAorICAgIDM0MTEyLCAzNDExNywgMzQxMjIsIDM4MjYsIDM0MTI3LCAzNDEzMCwgMzQxMzUsIDM0MTQwLCAzNDE0NSwgMzQxNTAsIAorICAgIDM0MTU1LCAzNDE2MiwgMjM1NjcsIDM0MTY3LCAzNDE3MiwgMzQxNzcsIDM0MTgyLCAzNDE4NywgMzQxOTMsIDM0MTk4LCAKKyAgICAzNDIwNCwgMzI3ODAsIDM0MjEwLCAzNDIxNSwgMzQyMjEsIDM0MjI3LCAzNDIzNywgMzQyNDIsIDM0MjQ3LCAzNDI1MSwgCisgICAgMzQyNTYsIDM0MjYxLCAzNDI2NiwgMzQyNzEsIDM0Mjg0LCAzNDI4OSwgMjMzMTIsIDE3NjIxLCAzODM5LCAzNDI5MywgCisgICAgMzQyOTksIDM0MzA0LCAzNDMwOSwgMzQzMTUsIDM0MzIwLCAzNDMyNSwgMzQzMjksIDM0MzM0LCAzNDMzOSwgMzQzNDUsIAorICAgIDM0MzUwLCAzNDM1NSwgMTM2MiwgMzQzNTksIDM0MzY0LCAzNDM2OSwgMzQzNzQsIDM0Mzc4LCAzNDM4MywgMzQzODgsIAorICAgIDM0MzkzLCAzNDM5OSwgMzQ0MDUsIDM0NDEwLCAzNDQxNCwgMzQ0MTgsIDM0NDIzLCAzNDQyOCwgMzQ0MzMsIDM0NDM3LCAKKyAgICAzNDQ0NSwgMzQ0NDksIDM0NDU1LCAzNDQ1OSwgMzQ0NjYsIDE3NDAwLCAzMjU1MSwgMzQ0NzIsIDM0NDc5LCAzNDQ4NywgCisgICAgMzQ0OTQsIDM0NTAwLCAzNDUxMywgMzQ1MjUsIDM0NTMwLCAzNDUzNiwgMzQ1NDAsIDI3OTMsIDM0NTQ0LCAzNDU0OCwgCisgICAgMzQwNDEsIDM0NTU3LCAzNDU2OCwgMzQ1NzMsIDI5MzQwLCAzNDU3OCwgMzQ1ODMsIDM0NTg3LCAzNDU5MiwgMjM0NjYsIAorICAgIDM0NTk2LCAzNDYwMCwgMzQ2MDUsIDMyNTU3LCAyMjI5OSwgMzQ2MDksIDM0NjE0LCAzNDYyMCwgMzQ2MjUsIDM0NjI5LCAKKyAgICAzNDYzMywgMzQ2MzYsIDM0NjQwLCAzNDY0NiwgMzQ2NTUsIDM0NjY2LCAzNDY3OCwgMzI1NjMsIDM0NjgzLCAzNDY4NiwgCisgICAgMzQ2OTAsIDM0Njk0LCAzNzgsIDM0Njk5LCAzNDcwNCwgMzQ3MDksIDM0NzE0LCAzNDcxOSwgMzQ3MjQsIDM0NzMwLCAKKyAgICAzNDczNSwgMzQ3NDAsIDM0NzQ2LCAzNDc1MSwgMzQ3NTcsIDM0NzYyLCAzNDc2OCwgMzQ3NzMsIDM0Nzc4LCAzNDc4MywgCisgICAgMzQ3ODgsIDM0NzkzLCAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNCwgMzQ4MTksIDM0ODI0LCAzNDgyOSwgMzQ4MzQsIAorICAgIDM0ODM5LCAzNDg0NCwgMzQ4NDksIDM0ODU1LCAzNDg2MSwgMzQ4NjYsIDM0ODcxLCAzNDg3NiwgMzQ4ODEsIDM0ODg2LCAKKyAgICAzNDg5MSwgMzQ4OTYsIDM0OTAxLCAzNDkwNiwgMzQ5MTEsIDM0OTE2LCAzNDkyMSwgMzQ5MjYsIDM0OTMxLCAzNDkzNiwgCisgICAgMzQ5NDEsIDM0OTQ2LCAzNDk1MSwgMzQ5NTcsIDMxMSwgMTMsIDM0OTYyLCAzNDk2NiwgMzQ5NzAsIDM0OTc4LCAzNDk4MiwgCisgICAgMzQ5ODYsIDM0OTg5LCAzNDk5MiwgMzQ5OTQsIDM0OTk5LCAzNTAwMywgMzUwMDgsIDM1MDEyLCAzNTAxNywgMzUwMjEsIAorICAgIDM1MDI2LCAzNTAzMCwgMzUwMzMsIDM1MDM1LCAzNTAzOSwgMzUwNDQsIDM1MDQ4LCAzNTA1OSwgMzUwNjIsIDM1MDY0LCAKKyAgICAzNTA2OCwgMzUwODAsIDM1MDg5LCAzNTA5MywgMzUwOTcsIDM1MTAzLCAzNTEwOCwgMzUxMTcsIDM1MTIzLCAzNTEyOCwgCisgICAgMzUxMzMsIDM1MTM3LCAzNTE0MSwgMzUxNDYsIDM1MTUzLCAzNTE1OCwgMzUxNjQsIDM1MTY5LCAzNTE3MywgMzUxODAsIAorICAgIDI2OTAyLCAyNjkxMiwgMzUxODQsIDM1MTg5LCAzNTE5NCwgMzUxOTksIDM1MjA2LCAzNTIxMCwgMzUyMTcsIDM1MjIzLCAKKyAgICA4MzMyLCAzNTIyNywgMzUyMzYsIDM1MjQ0LCAzNTI1OSwgMzUyNzMsIDM1MjgxLCAzNTI5MiwgMzUzMDEsIDM1MzA2LCAKKyAgICA3NDMxLCAzNTMxNiwgMzUzMjEsIDM1MzI2LCAzNTMzMCwgMzUzMzMsIDM1MzM4LCAzNTM0MiwgMzUzNDcsIDM1MzUxLCAKKyAgICAzNTM1OCwgMzUzNjMsIDM1MzY4LCAzNTM3MywgOTE1OSwgMzUzODMsIDM1Mzg1LCAzNTM4OCwgMzUzOTEsIDM1Mzk1LCAKKyAgICAzNTQwMSwgMzU0MDUsIDM1NDEwLCAzNTQxNSwgMzU0MjEsIDM1NDI2LCAzNTQzMiwgMzU0MzcsIDM1NDQ3LCAzNTQ1NiwgCisgICAgMzU0NjQsIDM1NDY5LCAzNTQ3NSwgMzU0ODAsIDM1NDg5LCAzNTUwMCwgMzU1MDUsIDM1NTEyLCAzNTUxNiwgMzU1MjQsIAorICAgIDM1NTMxLCAzNTU0NCwgMzU1NTIsIDM1NTU2LCAzNTU2NiwgMzU1NzEsIDM1NTc1LCAzNTU4MywgMzU1OTEsIDM1NTk2LCAKKyAgICAzNTYwMCwgMzU2MDQsIDM1NjEzLCAzNTYxOSwgMzU2MjQsIDM1NjMyLCAzNTY0MiwgMzU2NTEsIDM1NjYwLCAzNTY2OSwgCisgICAgMzU2ODAsIDM1Njg4LCAzNTY5OSwgMzU3MDgsIDM1NzE1LCAzNTcyMSwgMzU3MjYsIDM1NzM3LCAzNTc0MiwgMzU3NDYsIAorICAgIDM1NzQ5LCAzNTc1MywgMzU3NjEsIDM1NzY3LCAzNTc3MSwgMzU3NzksIDM1Nzg1LCAzNTc5MiwgMzU3OTgsIDM1ODAzLCAKKyAgICAzNTgwOSwgMjQzOCwgMzU4MTMsIDM1ODE1LCAzNTgyMCwgMzU4MjUsIDM1ODMwLCAzNTgzMywgMzU4MzUsIDM1ODM5LCAKKyAgICAzNTg0MiwgMzU4NDksIDM1ODUzLCAxMDM3NiwgMzU4NTcsIDM1ODYzLCAzNTg3MywgMzU4NzgsIDM1ODg0LCAzNTg4OCwgCisgICAgMzU4OTMsIDM1OTA2LCAyNzMwOCwgMzU5MTIsIDM1OTIxLCAzNTkzMCwgMTg0MjcsIDM1OTM3LCAzNTk0NiwgMzMxODAsIAorICAgIDM1OTU0LCAzNTk1OSwgMzU5NjMsIDM1OTcyLCAzNTk4MCwgMzU5ODcsIDM1OTkyLCAzNTk5NiwgMzYwMDEsIDM2MDA5LCAKKyAgICAzNjAxMywgMzYwMjEsIDM2MDI3LCAzNjAzMywgMzYwMzgsIDM2MDQyLCAzNjA0NSwgMzYwNTAsIDM2MDYzLCAzNjA3OSwgCisgICAgMjQwNDcsIDM2MDk2LCAzNjEwOCwgMzYxMjUsIDM2MTM3LCAzNjE1MSwgMjQwNjQsIDI0MDgzLCAzNjE2MywgMzYxNzUsIAorICAgIDI3MDAsIDM2MTg5LCAzNjE5NCwgMzYxOTksIDM2MjA0LCAzNjIwOCwgMzYyMTUsIDM2MjI3LCAzNjIzMywgMzYyNDIsIAorICAgIDM2MjQ1LCAzNjI1NiwgMzYyNjcsIDM2MjcyLCAzMzYwMywgNzkyLCAzNjI3NiwgMzYyODAsIDM2Mjg0LCAzNjI4NywgCisgICAgMzYyOTIsIDM2Mjk3LCAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOSwgMzYzMjUsIDM2MzMwLCAzNjMzNCwgMzYzMzksIAorICAgIDM2MzQ0LCAzNjM0OSwgMzYzNTMsIDM2MzU2LCAzNjM2MiwgMzYzNjcsIDM2MzcyLCAzNjM3NywgMzYzODEsIDM2Mzg2LCAKKyAgICAzNjM5MiwgMzY0MDAsIDI3NTY1LCAzNjQwNSwgMzY0MTAsIDM2NDE3LCAzNjQyMywgMzY0MjksIDM2NDM0LCAzNjQ0MiwgCisgICAgMjM1NzYsIDM2NDQ5LCAzNjQ1NCwgMzY0NTksIDM2NDY0LCAzNjQ2OCwgMzY0NzEsIDM2NDc2LCAzNjQ4MCwgMzY0ODQsIAorICAgIDM2NDkxLCAzNjQ5NywgMzY1MDMsIDM2NTA5LCAzNjUxNiwgMzY1MjEsIDM2NTI3LCAzNTU4NiwgMzY1MzEsIDM2NTM1LCAKKyAgICAzNjU0MCwgMzY1NTMsIDM2NTU4LCAzNjU2NCwgMzY1NzIsIDM2NTc5LCAzNjU4NywgMzY1OTcsIDM2NjAzLCAzNjYwOSwgCisgICAgMzY2MTUsIDM2NjE5LCAzNjYyOCwgMzY2MzYsIDM2NjQzLCAzNjY0OCwgMzY2NTMsIDEwOTgwLCAzNjY1OCwgMzY2NjYsIAorICAgIDM2NjczLCAzNjY3OSwgMzY2ODksIDM2Njk0LCAzNjcwMCwgMzY3MDgsIDM3MTksIDM2NzE1LCAzNjcyMSwgMzY3MjgsIAorICAgIDM3MjUsIDM2NzMyLCAzNjczNywgMzY3NDgsIDM2NzU1LCAzNjc2MSwgMzY3NzAsIDM2Nzc0LCA0MTU1LCAzNjc3NywgCisgICAgMzY3ODQsIDM2NzkwLCAzNjc5NiwgMzY4MDQsIDM2ODE0LCAzMDQzNSwgMzY4MjEsIDM2ODI5LCAzNjgzNSwgMzY4NDAsIAorICAgIDM2ODQ2LCAzNjg1MSwgMzY4NTUsIDI3MTU2LCAzNjg2MSwgMzY4NjgsIDM2ODc0LCAzNjg4MywgMzY4OTAsIDI0NzY0LCAKKyAgICAzNjg5NiwgMzY5MDEsIDM2OTA1LCAzNjkxMywgMzY5MjEsIDEwMDgyLCA2MDY1LCAzNjkyOCwgMzY5MzIsIDM2OTM0LCAKKyAgICAzNjkzOCwgMzY5NDMsIDM2OTQ1LCAzNjk1MCwgMzY5NTYsIDM2OTYxLCAzNjk2NiwgMzY5NzMsIDM0MTU4LCAzNjk3OSwgCisgICAgMzY5ODQsIDM2OTg4LCAzNjk5MywgMzY5OTcsIDM3MDA2LCAzNzAxMCwgMzcwMTYsIDM3MDIzLCAzNzAyOSwgMzcwMzYsIAorICAgIDM3MDQxLCAzNzA1MCwgMzcwNTUsIDM3MDU5LCAzNzA2NCwgMzcwNzEsIDM3MDc5LCAzNzA4NywgMzcwOTIsIDIyMzU1LCAKKyAgICAzNzA5NiwgMzcwOTksIDM3MTAzLCAzNzEwNywgMzcxMTEsIDM3MTE0LCAzNzExNiwgMzcxMjEsIDM3MTI5LCAzNzEzMywgCisgICAgMzcxNDIsIDM3MTQ5LCAzNzE1MywgMzcxNTcsIDM3MTY1LCAzNzE3MiwgMzcxODIsIDM3MTg2LCAzNzE5MCwgMzcxOTgsIAorICAgIDM3MjA2LCAzNzIxMiwgMzcyMTcsIDM3MjI2LCAxNDA2NCwgMzcyMzIsIDM3MjQxLCAzNzI0NiwgMzcyNTMsIDM3MjYwLCAKKyAgICAzNzI2OCwgMzcyNzYsIDM3Mjg0LCAzNzI4OSwgMzcyOTYsIDM3MzAzLCAzNzMxMCwgMzczMTcsIDM3MzI0LCAzNzMyOSwgCisgICAgMzczMzUsIDM3MzUyLCAzNzM2MCwgMzczNzAsIDM3Mzc4LCAzNzM4NSwgMzkyLCAzNzM4OSwgMzczOTUsIDM3Mzk5LCAKKyAgICAzNzQwNCwgMzUyOTcsIDM3NDEwLCAzNzQxMywgMzc0MTcsIDM3NDI4LCAzNzQzNiwgMzczMCwgMzc0NDQsIDM3NDUwLCAKKyAgICAzNzQ1NiwgMzc0NjYsIDM3NDc1LCAzNzQ4NSwgMzc0OTIsIDM3NDk4LCAzNzUwMywgMzczNiwgMzc0MiwgMzc1MTIsIAorICAgIDM3NTE5LCAzNzUyNywgMzc1MzIsIDM3NTM2LCAzNzU0MywgMzc1NTEsIDM3NTU4LCAzNzU2NCwgMzc1NzMsIDM3NTgzLCAKKyAgICAzNzU4OSwgMzc1OTcsIDM3NjA2LCAzNzYxMywgMzc2MjEsIDM3NjI4LCAyMzAzNywgMzc2MzIsIDM3NjM5LCAzNzY0NSwgCisgICAgMzc2NTUsIDM3NjY0LCAzNzY3MiwgMzc2ODMsIDM3Njg3LCAzNzY5NywgMzc3MDMsIDM3NzEwLCAzNzcxOCwgMzc3MjcsIAorICAgIDM3NzM2LCAzNzc0NiwgMzc3NTcsIDM3NzY0LCAzNzc2OSwgMzc3NzYsIDMwNjQsIDM3Nzg0LCAzNzc5MCwgMzc3OTUsIAorICAgIDM3ODAxLCAzNzgwNywgMzc4MTIsIDM3ODI1LCAzNzgzOCwgMzc4NTEsIDM3ODU4LCAzNzg2NCwgMzc4NzIsIDM3ODgwLCAKKyAgICAzNzg4NSwgMzc4ODksIDE0NTIsIDM3ODkzLCAzNzg5NywgMzc5MDEsIDM3OTA1LCAzNzkwOSwgMzc5MTMsIDM3OTE3LCAKKyAgICAzNzkyMSwgMzc5MjUsIDM3OTI5LCAzNzkzMywgMzc5MzcsIDM3OTQxLCAzNzk0NSwgMzc5NDksIDM3OTUzLCAzNzk1NywgCisgICAgMzc5NjEsIDM3OTY1LCAzNzk2OSwgMzc5NzMsIDM3OTc3LCAzNzk4MSwgMzc5ODUsIDM3OTg5LCAzNzk5MywgMzc5OTcsIAorICAgIDM4MDAxLCAzODAwNSwgMzgwMDksIDM4MDEzLCAzODAxNywgMzgwMjEsIDM4MDI1LCAzODAyOSwgMzgwMzMsIDM4MDM3LCAKKyAgICAzODA0MSwgMzgwNDUsIDM4MDQ5LCAzODA1MywgMzgwNTcsIDM4MDYxLCAzODA2NSwgMzgwNjksIDM4MDczLCAzODA3NywgCisgICAgMzgwODEsIDM4MDg1LCAzODA4OSwgMzgwOTMsIDM4MDk3LCAzODEwMSwgMzgxMDUsIDM4MTA5LCAzODExMywgMzgxMTcsIAorICAgIDM4MTIxLCAzODEyNSwgMzgxMjksIDM4MTMzLCAzODEzNywgMzgxNDEsIDM4MTQ1LCAzODE0OSwgMzgxNTMsIDM4MTU3LCAKKyAgICAzODE2MSwgMzgxNjUsIDM4MTY5LCAzODE3MywgMzgxNzcsIDM4MTgxLCAzODE4NSwgMzgxODksIDM4MTkzLCAzODE5NywgCisgICAgMzgyMDEsIDM4MjA1LCAzODIwOSwgMzgyMTMsIDM4MjE3LCAzODIyMSwgMzgyMjUsIDM4MjI5LCAzODIzMywgMzgyMzcsIAorICAgIDM4MjQxLCAzODI0NSwgMzgyNDksIDM4MjUzLCAzODI1NywgMzgyNjEsIDM4MjY1LCAzODI2OSwgMzgyNzMsIDM4Mjc3LCAKKyAgICAzODI4MSwgMzgyODUsIDM4Mjg5LCAzODI5MywgMzgyOTcsIDM4MzAxLCAzODMwNSwgMzgzMDksIDM4MzEzLCAzODMxNywgCisgICAgMzgzMjEsIDM4MzI1LCAzODMyOSwgMzgzMzMsIDM4MzM3LCAzODM0MSwgMzgzNDUsIDM4MzQ5LCAzODM1MywgMzgzNTcsIAorICAgIDM4MzYxLCAzODM2NSwgMzgzNjksIDM4MzczLCAzODM3NywgMzgzODEsIDM4Mzg1LCAzODM4OSwgMzgzOTMsIDM4Mzk3LCAKKyAgICAzODQwMSwgMzg0MDUsIDM4NDA5LCAzODQxMywgMzg0MTcsIDM4NDIxLCAzODQyNSwgMzg0MjksIDM4NDMzLCAzODQzNywgCisgICAgMzg0NDEsIDM4NDQ1LCAzODQ0OSwgMzg0NTMsIDM4NDU3LCAzODQ2MSwgMzg0NjUsIDM4NDY5LCAzODQ3MywgMzg0NzcsIAorICAgIDM4NDgxLCAzODQ4NSwgMzg0ODksIDM4NDkzLCAzODQ5NywgMzg1MDEsIDM4NTA1LCAzODUxMCwgMzg1MTQsIDM4NTE5LCAKKyAgICAzODUyMywgMzg1MjgsIDM4NTMyLCAzODUzNywgMzg1NDEsIDM4NTQ3LCAzODU1MiwgMzg1NTYsIDM4NTYxLCAzODU2NSwgCisgICAgMzg1NzAsIDM4NTc0LCAzODU3OSwgMzg1ODMsIDM4NTg4LCAzODU5MiwgMzg1OTcsIDM4NjAxLCAzODYwNiwgMzg2MTAsIAorICAgIDM4NjE2LCAzODYyMiwgMzg2MjcsIDM4NjMxLCAzODYzNiwgMzg2NDAsIDM4NjQ2LCAzODY1MSwgMzg2NTUsIDM4NjYwLCAKKyAgICAzODY2NCwgMzg2NjksIDM4NjczLCAzODY3OSwgMzg2ODQsIDM4Njg4LCAzODY5MywgMzg2OTcsIDM4NzAyLCAzODcwNiwgCisgICAgMzg3MTEsIDM4NzE1LCAzODcyMSwgMzg3MjYsIDM4NzMwLCAzODczNSwgMzg3MzksIDM4NzQ1LCAzODc1MCwgMzg3NTQsIAorICAgIDM4NzU5LCAzODc2MywgMzg3NjgsIDM4NzcyLCAzODc3NywgMzg3ODEsIDM4Nzg2LCAzODc5MCwgMzg3OTYsIDM4ODAxLCAKKyAgICAzODgwNSwgMzg4MTEsIDM4ODE2LCAzODgyMCwgMzg4MjYsIDM4ODMxLCAzODgzNSwgMzg4NDAsIDM4ODQ0LCAzODg0OSwgCisgICAgMzg4NTMsIDM4ODU5LCAzODg2NSwgMzg4NzEsIDM4ODc3LCAzODg4MywgMzg4ODksIDM4ODk1LCAzODkwMSwgMzg5MDYsIAorICAgIDM4OTEwLCAzODkxNSwgMzg5MTksIDM4OTI1LCAzODkzMCwgMzg5MzQsIDM4OTM5LCAzODk0MywgMzg5NDgsIDM4OTUyLCAKKyAgICAzODk1NywgMzg5NjEsIDM4OTY2LCAzODk3MCwgMzg5NzUsIDM4OTc5LCAzODk4NCwgMzg5ODgsIDM4OTk0LCAzODk5OSwgCisgICAgMzkwMDMsIDM5MDA4LCAzOTAxMiwgMzkwMTgsIDM5MDI0LCAzOTAyOSwgMTExLCA4OCwgMzkwMzMsIDM5MDM1LCAzOTAzOSwgCisgICAgMzkwNDMsIDM5MDQ3LCAzOTA1MiwgMzkwNTYsIDM5MDYwLCAxMDAwMywgMzkwNjUsIDM5MDcxLCAxNzQxLCA2NDcyLCAKKyAgICAzOTA3NywgMzkwODAsIDM5MDg1LCAzOTA4OSwgMzkwOTQsIDM5MDk4LCAzOTEwMiwgMzkxMDcsIDEwNzY5LCAzOTExMSwgCisgICAgMzkxMTUsIDM5MTE5LCA1OTQsIDM5MTIzLCAxNjIwNywgMzkxMjgsIDM5MTMyLCAzOTEzNywgMzkxNDIsIDM5MTQ3LCAKKyAgICAzOTE1MSwgMzkxNTgsIDI3MzMyLCAzOTE2NCwgMzkxNjcsIDM5MTcxLCAzOTE3NiwgMzkxODIsIDM5MTg2LCAzOTE5NCwgCisgICAgMzkyMDAsIDM5MjA1LCAzOTIwOSwgMzkyMTIsIDM5MjE2LCAzOTIyMiwgMzkyMjYsIDM5MjMwLCAzNTYwLCAzNTY1LCAKKyAgICAzMDY0MiwgMzkyMzMsIDM5MjM3LCAzOTI0MSwgMzkyNDUsIDM5MjQ5LCAzOTI1NywgMzkyNjQsIDM5MjY4LCAzOTI3NSwgCisgICAgMzkyODAsIDM5Mjk0LCAzOTMwMSwgMzkzMTIsIDMyNCwgMzkzMTcsIDM5MzIxLCAzOTMyNywgMzkzMzksIDM5MzQ1LCAKKyAgICAzOTM1MSwgMzA2NzksIDM5MzU1LCAzOTM2MSwgMzkzNzAsIDM5Mzc0LCAzOTM3OCwgMzkzODMsIDM5Mzg5LCAzOTM5NCwgCisgICAgMzkzOTgsIDM5NDAzLCAzOTQwNywgMzk0MTEsIDM5NDE4LCAzOTQyNCwgMzk0MjksIDM5NDQ0LCAzOTQ1OSwgMzk0NzQsIAorICAgIDM5NDkwLCAzOTUwOCwgMTA3MTksIDM5NTIyLCAzOTUyOSwgMzk1MzMsIDM5NTM2LCAzOTU0NSwgMzk1NTAsIDM5NTU0LCAKKyAgICAzOTU2MiwgMzU1MzcsIDM5NTcwLCAzOTU3NCwgMzk1ODQsIDM5NTk1LCAzMDYxMiwgMzk2MDgsIDM5NjEyLCAzOTYyMSwgCisgICAgMzk2MjksIDEwMjcwLCAxNTcyMywgMzk2MzMsIDIzNDc4LCAzOTYzNiwgMzE1ODAsIDM5NjQxLCAxMDI2OSwgMzk2NDYsIAorICAgIDM5NjUyLCAzOTY1NywgMzk2NjMsIDM5NjY4LCAzOTY3NCwgMzk2NzksIDM5Njg1LCAzOTY5MCwgMzk2OTYsIDM5NzAyLCAKKyAgICAzOTcwOCwgMzk3MTMsIDM5NjY5LCAzOTY3NSwgMzk2ODAsIDM5Njg2LCAzOTY5MSwgMzk2OTcsIDM5NzAzLCA4MzQ1LCAKKyAgICA0MDA2LCAzOTcxNywgMzk3MjUsIDM5NzI5LCAzOTczMiwgMzk3MzYsIDM5NzQxLCAzOTc0NiwgMzk3NTIsIDM5NzU4LCAKKyAgICAzOTc2MywgMzk3NjcsIDM5NzcxLCAyNzE2OCwgMzk3NzUsIDM5Nzc5LCAzOTc4MywgMzk3ODksIDM5NzkzLCAyOTIxNywgCisgICAgOTI5NiwgMzk4MDIsIDM5ODA5LCAzOTgxNSwgMzk4MTksIDEyNTYyLCAzOTgyNiwgMzk4MzIsIDM5ODM3LCAzOTg0NCwgCisgICAgMzk4NTEsIDM5ODU4LCAyOTkxNywgODI1NywgMzk4NjUsIDM5ODcyLCAzOTg3OSwgMzk4ODUsIDM5ODkwLCAzOTg5NywgCisgICAgMzk5MDgsIDM5OTE0LCAzOTkxOSwgMzk5MjQsIDM5OTI5LCAzOTkzNiwgMzk2NzAsIDM5OTQwLCAzOTk1MCwgMzk5NTksIAorICAgIDM5OTcwLCAzOTk3NiwgMzk5ODMsIDM5OTg4LCAzOTk5MywgMzk5OTgsIDQwMDAzLCA0MDAwOCwgNDAwMTIsIDQwMDE2LCAKKyAgICA0MDAyMiwgNDAwMzAsIDIzMzQsIDk1NSwgMTA3ODUsIDEwNzk3LCAxMDgwMiwgMTA4MDgsIDQwMDM5LCAxMDgxMywgMTA4MTgsIAorICAgIDEwODI0LCA0MDA0NCwgNDAwNTQsIDQwMDU4LCAxMDgyOSwgNDAwNjMsIDE3ODE0LCA0MDA2NiwgNDAwNzEsIDQwMDc1LCAKKyAgICAzNjIzNywgNDAwODYsIDQwMDkxLCA0MDA5OCwgNDAxMDUsIDQwMTA5LCA0MDExMiwgNDAxMjAsIDEwNzMyLCA0MDEyNywgCisgICAgNDAxMzAsIDQwMTM2LCA0MDE0NiwgNjEwNiwgNDAxNTUsIDQwMTYxLCA0MDE2NSwgNDAxNzMsIDQwMTc3LCA0MDE4NywgCisgICAgNDAxOTMsIDQwMTk4LCA0MDIwOSwgNDAyMTUsIDQwMjIxLCA0MDIyNiwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgNDAyNDksIAorICAgIDQwMjUyLCA0MDI1OSwgNDAyNjUsIDQwMjY5LCA0MDI3NCwgNDAyODEsIDQwMjg4LCA0MDI5MiwgNDAyOTUsIDQwMzA1LCAKKyAgICA0MDMxOCwgNDAzMjcsIDQwMzM2LCA0MDM0NywgNDAzNjAsIDQwMzcyLCA0MDM4MywgNDAzOTIsIDQwNDAzLCA0MDQwOCwgCisgICAgNDA0MTcsIDQwNDIyLCAxMDgzNCwgNDA0MjgsIDQwNDM1LCA0MDQ0MywgNDA0NDgsIDQwNDUyLCA0MDQ1OSwgNDA0NjYsIAorICAgIDM5NTgsIDIwLCA0MDQ3MCwgNDA0NzUsIDE3NjY4LCA0MDQ3OSwgNDA0ODIsIDQwNDg1LCAyOTM5NywgNDA0ODksIDI5OTI2LCAKKyAgICA0MDQ5NywgNDA1MDEsIDQwNTA1LCA0MDUwOCwgNDA1MTQsIDQwNTIwLCAzMjYyOCwgNDA1MjUsIDQwNTMzLCA0MDUzOSwgCisgICAgNDA1NDYsIDI5MzgwLCA0MDU1MCwgMjk1ODMsIDQwNTU0LCA0MDU2MywgNDA1NjksIDQwNTc1LCA0MDU4MCwgNDA1ODQsIAorICAgIDI5OTQ1LCA0MDU5MCwgNDA1OTMsIDQwNjAxLCA0MDYwOSwgMjc0MTAsIDQwNjE1LCA0MDYxOSwgNDA2MjQsIDQwNjMxLCAKKyAgICA0MDYzNywgNDA2NDIsIDQwNjQ3LCA0MDY1MSwgNDA2NTcsIDQwNjYyLCA0MDY2OCwgNDIwOCwgODgzLCA0MDY3NSwgNDA2NzksIAorICAgIDQwNjgyLCAxNjA5MywgNDA2OTQsIDQwNzA1LCAzNzYwMiwgNDA3MTAsIDQwNzEzLCA0MDcyMCwgNDA3MjQsIDQwNzMwLCAKKyAgICA0MDczNCwgNDA3NDAsIDQwNzQ1LCA0MDc1MSwgNDA3NTYsIDQwNzYxLCA0MDc2NSwgNDA3NjksIDQwNzc0LCA0MDc3OSwgCisgICAgNDA3ODksIDQwNzk1LCA0MDgwOCwgNDA4MTQsIDQwODIwLCA0MDgyNiwgNDA4MzMsIDQwODM4LCA0MDg0NCwgNDA4NDksIAorICAgIDE3NTU5LCAxNDU1LCA3NzEsIDQwODU0LCA0MDg1NywgNDA4NjAsIDQwODYzLCAzMjcxMiwgMzI3MTgsIDQwODY2LCAzMjcyNCwgCisgICAgMzI3MzcsIDMyNzQzLCAzMjc0OSwgNDA4NzIsIDMyNzU1LCAzMjc2MSwgNDA4NzgsIDQwODg0LCAyNiwgNDA4OTIsIDQwODk5LCAKKyAgICA0MDkwMywgNDA5MDcsIDQwOTE1LCAzMzQ5MiwgNDA5MTksIDQwOTIzLCA0MDkzMCwgNDA5MzUsIDQwOTM5LCA0MDk0NCwgCisgICAgNDA5NTAsIDQwOTU1LCA0MDk2MSwgNDA5NjYsIDQwOTcwLCA0MDk3NCwgNDA5NzgsIDQwOTgzLCA0MDk4NywgNDA5OTIsIAorICAgIDQwOTk2LCA0MTAwMCwgNDEwMDcsIDQxMDEyLCA0MTAxNiwgNDEwMjAsIDQxMDI1LCA0MTAyOSwgNDEwMzQsIDQxMDM4LCAKKyAgICA0MTA0MiwgNDEwNDcsIDQxMDUzLCAxNjM0MywgMTYzNDgsIDQxMDU4LCA0MTA2MiwgNDEwNjUsIDQxMDY5LCA0MTA3MywgCisgICAgMjIxNjYsIDQxMDc4LCA0MTA4MiwgNDEwODgsIDQxMDk1LCA0MTEwMCwgNDExMTAsIDQxMTE1LCA0MTEyMywgNDExMjcsIAorICAgIDQxMTMwLCAzMzUwNywgNDExMzQsIDQyNjEsIDQxMTM5LCA0MTE0NCwgNDExNDgsIDQxMTUzLCA0MTE1NywgNDExNjIsIAorICAgIDE0MDgyLCA0MTE3MywgNDExNzcsIDQxMTgwLCA0MTE4NCwgNDExODksIDQxMTkzLCA0MTE5OCwgNDEyMDMsIDQxMjA3LCAKKyAgICA0MTIxMSwgNDEyMTUsIDQxMjE4LCA0MTIyMiwgODM2NCwgMTQwOTgsIDQxMjI1LCA0MTIyOCwgNDEyMzQsIDQxMjM5LCAKKyAgICA0MTI0NSwgNDEyNTAsIDQxMjU2LCA0MTI2MSwgNDEyNjcsIDQxMjcyLCA0MTI3OCwgNDEyODQsIDQxMjkwLCA0MTI5NSwgCisgICAgNDEyOTksIDQxMzAzLCA0MTMxMiwgNDEzMjgsIDQxMzQ0LCA0MTM1NCwgMjkyODcsIDQxMzYxLCA0MTM2NSwgNDEzNzAsIAorICAgIDQxMzc1LCA0MTM3OSwgNDEzODMsIDM3NzMxLCA0MTM4OSwgNDEzOTQsIDQxMzk4LCA0MTQwNSwgNDE0MTAsIDQxNDE1LCAKKyAgICA0MTQxOSwgNDE0MjMsIDQxNDI5LCAyODIzNywgNDE0MzMsIDIyNDUwLCA0MTQzOCwgNDE0NDUsIDQxNDUzLCA0MTQ1OSwgCisgICAgNDE0NjYsIDQxNDc0LCA0MTQ4MCwgNDE0ODQsIDQxNDg5LCA0MTQ5NSwgNDE1MDMsIDQxNTA4LCA0MTUxMiwgNDE1MjEsIAorICAgIDk5ODQsIDQxNTI5LCA0MTUzMywgNDE1NDEsIDQxNTQ4LCA0MTU1MywgNDE1NTgsIDQxNTYzLCA0MTU2NywgNDE1NzAsIAorICAgIDQxNTc0LCA0MTU3NywgNDE1ODEsIDQxNTg4LCA0MTU5MywgNDE1OTcsIDQxNjAzLCAyNzY0MywgMzI3NzUsIDQxNjA3LCAKKyAgICA0MTYxMywgNDE2MjAsIDQxNjI2LCA0MTYzMiwgNDE2MzcsIDQxNjQwLCA0MTY0MiwgNDE2NDksIDQxNjU2LCA0MTY2MiwgCisgICAgNDE2NjYsIDQxNjY5LCA0MTY3MywgNDE2NzcsIDQxNjgxLCA0MTY4NiwgNDE2OTAsIDQxNjk0LCA0MTY5NywgNDE3MDEsIAorICAgIDQxNzE1LCAyNDExMywgNDE3MzQsIDQxNzQ3LCA0MTc2MCwgNDE3NzMsIDI0MTMxLCA0MTc4OCwgMTEwNDUsIDQxODAzLCAKKyAgICA0MTgwOSwgNDE4MTMsIDQxODE3LCA0MTgyMSwgNDE4MjUsIDQxODMyLCA0MTgzNywgNDE4NDEsIDQxODQ4LCA0MTg1NCwgCisgICAgNDE4NTksIDQxODY1LCA0MTg3NSwgNDE4ODcsIDQxODk4LCA0MTkwMywgNDE5MTAsIDQxOTE0LCA0MTkxOCwgNDE5MjEsIAorICAgIDE2NzUxLCAzNzk5LCA0MTkyOSwgMTYzNzAsIDQxOTQyLCA0MTk0OSwgNDE5NTMsIDQxOTU3LCA0MTk2MiwgNDE5NjcsIAorICAgIDQxOTczLCA0MTk3NywgNDE5ODEsIDQxOTg0LCA0MTk4OSwgNDE5OTMsIDQxOTk4LCA3OTU3LCAxNjM4MSwgNDIwMDMsIAorICAgIDQyMDA3LCA0MjAxMywgNDIwMjIsIDQyMDI3LCA0MjAzNiwgNDIwNDMsIDM3NTc5LCA0MjA0OSwgNDIwNTQsIDQyMDU4LCAKKyAgICA0MjA2MywgNDIwNzAsIDQyMDc2LCA0MjA4MCwgNDIwODMsIDQyMDg3LCA0MjA5MiwgMTUzNDQsIDQyMDk5LCA0MjEwNiwgCisgICAgNDIxMTAsIDQyMTEzLCA0MjExOCwgNDIxMjMsIDQyMTI5LCA0MjEzNCwgNDIxMzksIDQyMTQzLCA0MjE0OCwgNDIxNTgsIAorICAgIDQyMTYzLCA0MjE2OSwgNDIxNzQsIDQyMTgwLCA0MjE4NSwgNDIxOTEsIDQyMjAxLCA0MjIwNiwgNDIyMTEsIDQyMjE1LCAKKyAgICA0MjIyMCwgNzQzMywgNzQ0NSwgNDIyMjUsIDQyMjI4LCA0MjIzNSwgNDIyNDEsIDQyMjUwLCAzNTcxMSwgMzU3MTgsIAorICAgIDQyMjU4LCA0MjI2MiwgNDIyNjYsIDMzNTU1LCA0MjI3NCwgNDIyODUsIDQyMjkzLCAzNzc3OSwgNDIzMDAsIDQyMzA1LCAKKyAgICA0MjMxMCwgNDIzMjEsIDQyMzI4LCA0MjMzOSwgMzM1NzksIDIyNDU2LCA0MjM0NywgODM0LCA0MjM1MiwgMTQ0MjksIAorICAgIDQyMzU4LCAyOTM3MSwgNDIzNjQsIDQyMzY5LCA0MjM3OSwgNDIzODgsIDQyMzk1LCA0MjQwMSwgNDI0MDUsIDQyNDA4LCAKKyAgICA0MjQxNSwgNDI0MjEsIDQyNDI4LCA0MjQzNCwgNDI0NDQsIDQyNDUyLCA0MjQ1OCwgNDI0NjQsIDQyNDY5LCA0MjQ3MywgCisgICAgNDI0ODAsIDQyNDg1LCA0MjQ5MSwgNDI0OTgsIDQyNTA0LCA0MTY4MiwgNDI1MDksIDQyNTEzLCA1MjYsIDE0NTQ1LCAKKyAgICA0MjUxOSwgNDI1MjQsIDQyNTI3LCA0MjUzMywgNDI1NDEsIDEzNzksIDQyNTQ2LCA0MjU1MCwgNDI1NTUsIDQyNTYwLCAKKyAgICA0MjU2NSwgNDI1NzIsIDQyNTc2LCA0MjU4MSwgNDI1ODcsIDQyNTkxLCAzMjc4NSwgNDI1OTYsIDQyNjAxLCA0MjYxMCwgCisgICAgNDI2MTcsIDQyNjI3LCA0MjYzMywgMjk0MTUsIDQyNjUwLCA0MjY1OSwgNDI2NjcsIDQyNjczLCA0MjY3OCwgNDI2ODUsIAorICAgIDQyNjkxLCA0MjY5OSwgNDI3MDgsIDQyNzE2LCA0MjcyMCwgNDI3MjUsIDQyNzMzLCAzMDM2MCwgMzM1ODgsIDQyNzM5LCAKKyAgICA0Mjc1OCwgMTY2NzYsIDQyNzcyLCA0Mjc4OCwgNDI4MDIsIDQyODA4LCA0MjgxMywgNDI4MTgsIDQyODIzLCA0MjgyOSwgCisgICAgMzM1OTQsIDQyODM0LCA0MjgzNywgNDI4NDQsIDQyODQ5LCA0Mjg1MywgMzc2LCAyOTcxLCA0Mjg2MCwgNDI4NjUsIDQyODcwLCAKKyAgICAyODU5NSwgNDI2ODgsIDQyODc0LCA0Mjg3OSwgNDI4ODcsIDQyODkxLCA0Mjg5NCwgNDI4OTksIDQyOTA1LCA0MjkxMSwgCisgICAgNDI5MTYsIDQyOTIwLCAyOTQ3MCwgNDI5MjMsIDQyOTI4LCA0MjkzMiwgNDI5MzUsIDQyOTQwLCA0Mjk0NCwgNDI5NDksIAorICAgIDQyOTU0LCA0Mjk1OCwgNDI5NjMsIDQyOTY3LCA0Mjk3MSwgNDI5NzUsIDIyMTYyLCAyMjE3MywgNDI5ODAsIDQyOTg1LCAKKyAgICA0Mjk5MSwgNDI5OTYsIDI4MTk0LCA0MzAwMSwgNDMwMDUsIDIyMjU5LCAxNjkzMiwgNDMwMDgsIDQzMDEzLCA0MzAxOCwgCisgICAgNDMwMjMsIDQzMDI4LCA0MzAzMywgNDMwMzgsIDQzMDQzLCA0NjksIDQ5LCAzMjc5OCwgMzI4MDMsIDMyODA4LCAzMjgxNCwgCisgICAgMzI4MTksIDMyODI0LCA0MzA0OCwgMzI4MjgsIDQzMDUyLCA0MzA1NiwgNDMwNjAsIDMyODMzLCAzMjgzOSwgNDMwNzQsIAorICAgIDMyODUwLCAzMjg1NSwgNDMwODIsIDQzMDg3LCAzMjg2MSwgNDMwOTIsIDQzMDk3LCA0MzEwMiwgNDMxMDcsIDQzMTEzLCAKKyAgICA0MzExOSwgNDMxMjUsIDMyODc4LCA0MzEzOCwgNDMxNDcsIDQzMTUzLCAzMjg4MiwgNDMxNTcsIDMyODg3LCA0MzE2MiwgCisgICAgMzI4OTIsIDMyODk3LCA0MzE2NSwgNDMxNzAsIDQzMTc0LCAzMjQzMywgNDMxODAsIDE0MzEwLCA0MzE4NywgNDMxOTIsIAorICAgIDMyOTAyLCA0MzE5NiwgNDMyMDEsIDQzMjA2LCA0MzIxMSwgNDMyMTUsIDQzMjIwLCA0MzIyNSwgNDMyMzEsIDQzMjM2LCAKKyAgICA0MzI0MSwgNDMyNDcsIDQzMjUzLCA0MzI1OCwgNDMyNjIsIDQzMjY3LCA0MzI3MiwgNDMyNzcsIDQzMjgxLCA0MzI4NiwgCisgICAgNDMyOTEsIDQzMjk2LCA0MzMwMiwgNDMzMDgsIDQzMzE0LCA0MzMxOSwgNDMzMjMsIDQzMzI4LCA0MzMzMiwgMzI5MDYsIAorICAgIDMyOTExLCAzMjkxNiwgNDMzMzYsIDQzMzQwLCA0MzM0NCwgMzI5MjEsIDMyOTI3LCAzMjkzMywgMzI5NDUsIDQzMzU2LCAKKyAgICAyNzIwNSwgNDMzNjAsIDQzMzY1LCA0MzM2OSwgNDMzNzQsIDQzMzgxLCA0MzM4NiwgNDMzOTEsIDQzMzk2LCA0MzQwMCwgCisgICAgNDM0MDQsIDQzNDE0LCA0MzQxOSwgNDM0MjQsIDQzNDI4LCA0MzQzMiwgNDM0MzUsIDQzNDQzLCAzMjk5MywgNDM0NDgsIAorICAgIDE0NjIsIDQzNDU0LCA0MzQ1OSwgNDM0NjUsIDQzNDczLCA0MzQ4MiwgNDM0ODYsIDQzNDkwLCA0MzQ5OCwgNDM1MDQsIAorICAgIDQzNTEyLCA0MzUyOCwgNDM1MzIsIDQzNTM2LCA0MzU0MSwgNDM1NDcsIDQzNTYyLCAzMzAzMCwgMTc0OSwgMTI3NDIsIAorICAgIDQzNTY2LCAxMzU4LCAxMzczLCA0MzU3OCwgNDM1ODYsIDQzNTkzLCA0MzU5OCwgNDM2MDUsIDQzNjEwLCA5Njc0LCAxMDYyLCAKKyAgICAyNTI1LCAxMDg2MSwgNDM2MTcsIDk1NzIsIDQzNjIyLCA0MzYyNSwgNDM2MzQsIDEyNjYsIDQzNjM5LCA0MTgzOCwgNDM2NDYsIAorICAgIDQzNjU1LCA0MzY2MCwgNDM2NjQsIDQzNjcyLCAyMzUzNCwgMjU3NywgNDM2NzksIDExMzAxLCA0MzY4OSwgNDM2OTUsIAorICAgIDIzNTIsIDIzNjIsIDQzNzA0LCA0MzcxMywgNDM3MjMsIDQzNzM0LCAzMzUyLCAzNTg3NCwgNDM3MzksIDEwOTIwLCAzOTM2LCAKKyAgICAxNzU5NywgMTI3MSwgNDM3NDMsIDQzNzUxLCA0Mzc1OCwgNDM3NjMsIDQzNzY3LCA0Mzc3MSwgMjQ5ODEsIDQyMDk0LCAKKyAgICAxMDk0NywgNDM3NzksIDQzNzg4LCA0Mzc5NywgNDM4MDUsIDQzODEyLCA0MzgyMywgNDM4MjgsIDQzODQxLCA0Mzg1NCwgCisgICAgNDM4NjYsIDQzODc4LCA0Mzg5MCwgNDM5MDEsIDQzOTE0LCA0MzkyNSwgNDM5MzYsIDQzOTQ2LCA0Mzk1NCwgNDM5NjIsIAorICAgIDQzOTc0LCA0Mzk4NiwgNDM5OTcsIDQ0MDA2LCA0NDAxNCwgNDQwMjEsIDQ0MDMzLCA0NDA0MCwgNDQwNDYsIDQ0MDU1LCAKKyAgICA0NDA2MiwgNDQwNzUsIDQ0MDgwLCA0NDA5MCwgNDQwOTUsIDQ0MTAxLCA0NDEwNiwgMzk4MTYsIDQ0MTEwLCA0NDExNywgCisgICAgNDQxMjEsIDQ0MTI4LCA0NDEzNiwgMjUzOCwgNDQxNDMsIDQ0MTU0LCA0NDE2NCwgNDQxNzMsIDQ0MTgxLCA0NDE5MSwgCisgICAgNDQxOTksIDQ0MjA5LCA0NDIxOCwgNDQyMjMsIDQ0MjI5LCA0NDIzNSwgNDQyNDAsIDM4MzgsIDQ0MjUxLCA0NDI2MSwgCisgICAgNDQyNzAsIDQ0Mjc5LCA0NDI4NywgNDQyOTcsIDQ0MzA1LCA0NDMxNCwgNDQzMTksIDQ0MzI0LCA0NDMyOSwgMTY3OSwgMzcsIAorICAgIDQ0MzM3LCA0NDM0NSwgNDQzNTYsIDQ0MzY3LCAxNzI0NCwgNDQzNzcsIDQ0MzgxLCA0NDM4OCwgNDQzOTQsIDQ0Mzk5LCAKKyAgICA0NDQwMywgNDQ0MTQsIDQ0NDI0LCA0NDQzMywgNDQ0NDQsIDE3NjQxLCAxNzY0NiwgNDQ0NDksIDQ0NDU4LCA0NDQ2MywgCisgICAgNDQ0NzMsIDQ0NDc4LCA0NDQ4NiwgNDQ0OTQsIDQ0NTAxLCA0NDUwNywgMTY0MSwgMjUxLCA0NDUxMSwgNDQ1MTcsIDQ0NTIyLCAKKyAgICA0NDUyNSwgMjEyNCwgNDE5NTQsIDQ0NTMzLCA0NDUzNywgNDQ1NDAsIDE0OTUsIDQ0NTQ2LCAxNDcwNywgMTI3NiwgNDQ1NTEsIAorICAgIDQ0NTY0LCA0NDU3OCwgMjY2MywgNDQ1OTYsIDQ0NjA4LCA0NDYyMCwgMjY3NywgMjY5NCwgNDQ2MzQsIDQ0NjQ3LCAyNzA5LCAKKyAgICA0NDY2MSwgNDQ2NzMsIDI3MjQsIDQ0Njg3LCAxMjgyLCAxMjg4LCAxMjk0LCAxMTIwNywgNDQ2OTIsIDQ0Njk3LCA0NDcwMiwgCisgICAgNDQ3MDYsIDQ0NzIxLCA0NDczNiwgNDQ3NTEsIDQ0NzY2LCA0NDc4MSwgNDQ3OTYsIDQ0ODExLCA0NDgyNiwgNDQ4NDEsIAorICAgIDQ0ODU2LCA0NDg3MSwgNDQ4ODYsIDQ0OTAxLCA0NDkxNiwgNDQ5MzEsIDQ0OTQ2LCA0NDk2MSwgNDQ5NzYsIDQ0OTkxLCAKKyAgICA0NTAwNiwgNDUwMjEsIDQ1MDM2LCA0NTA1MSwgNDUwNjYsIDQ1MDgxLCA0NTA5NiwgNDUxMTEsIDQ1MTI2LCA0NTE0MSwgCisgICAgNDUxNTYsIDQ1MTcxLCA0NTE4NiwgNDUyMDEsIDQ1MjE2LCA0NTIzMSwgNDUyNDYsIDQ1MjYxLCA0NTI3NiwgNDUyOTEsIAorICAgIDQ1MzA2LCA0NTMyMSwgNDUzMzYsIDQ1MzUxLCA0NTM2NiwgNDUzODEsIDQ1Mzk2LCA0NTQxMSwgNDU0MjYsIDQ1NDQxLCAKKyAgICA0NTQ1NiwgNDU0NzEsIDQ1NDg2LCA0NTUwMSwgNDU1MTYsIDQ1NTMxLCA0NTU0NiwgNDU1NjEsIDQ1NTc2LCA0NTU5MSwgCisgICAgNDU2MDYsIDQ1NjIxLCA0NTYzNiwgNDU2NTEsIDQ1NjY2LCA0NTY4MSwgNDU2OTYsIDQ1NzExLCA0NTcyNiwgNDU3NDEsIAorICAgIDQ1NzU2LCA0NTc3MSwgNDU3ODYsIDQ1ODAxLCA0NTgxNiwgNDU4MzEsIDQ1ODQ2LCA0NTg2MSwgNDU4NzYsIDQ1ODkxLCAKKyAgICA0NTkwNiwgNDU5MjEsIDQ1OTM2LCA0NTk1MSwgNDU5NjYsIDQ1OTgxLCA0NTk5NiwgNDYwMTEsIDQ2MDI2LCA0NjA0MSwgCisgICAgNDYwNTYsIDQ2MDcxLCA0NjA4NiwgNDYxMDEsIDQ2MTE2LCA0NjEzMSwgNDYxNDYsIDQ2MTYxLCA0NjE3NiwgNDYxOTEsIAorICAgIDQ2MjA2LCA0NjIyMSwgNDYyMzYsIDQ2MjUxLCA0NjI2NiwgNDYyODEsIDQ2Mjk2LCA0NjMxMSwgNDYzMjYsIDQ2MzQxLCAKKyAgICA0NjM1NiwgNDYzNzEsIDQ2Mzg2LCA0NjQwMSwgNDY0MTYsIDQ2NDMxLCA0NjQ0NiwgNDY0NjEsIDQ2NDc2LCA0NjQ5MSwgCisgICAgNDY1MDYsIDQ2NTIxLCA0NjUzNiwgNDY1NTEsIDQ2NTY2LCA0NjU4MSwgNDY1OTYsIDQ2NjExLCA0NjYyNiwgNDY2NDEsIAorICAgIDQ2NjU2LCA0NjY3MSwgNDY2ODYsIDQ2NzAxLCA0NjcxNiwgNDY3MzEsIDQ2NzQ2LCA0Njc2MSwgNDY3NzYsIDQ2NzkxLCAKKyAgICA0NjgwNiwgNDY4MjEsIDQ2ODM2LCA0Njg1MSwgNDY4NjYsIDQ2ODgxLCA0Njg5NiwgNDY5MTEsIDQ2OTI2LCA0Njk0MSwgCisgICAgNDY5NTYsIDQ2OTcxLCA0Njk4NiwgNDcwMDEsIDQ3MDE2LCA0NzAzMSwgNDcwNDYsIDQ3MDYxLCA0NzA3NiwgNDcwOTEsIAorICAgIDQ3MTA2LCA0NzEyMSwgNDcxMzYsIDQ3MTUxLCA0NzE2NiwgNDcxODEsIDQ3MTk2LCA0NzIxMSwgNDcyMjYsIDQ3MjQxLCAKKyAgICA0NzI1NiwgNDcyNzEsIDQ3Mjg2LCA0NzMwMSwgNDczMTYsIDQ3MzMxLCA0NzM0NiwgNDczNjEsIDQ3Mzc2LCA0NzM5MSwgCisgICAgNDc0MDYsIDQ3NDIxLCA0NzQzNiwgNDc0NTEsIDQ3NDY2LCA0NzQ4MSwgNDc0OTYsIDQ3NTExLCA0NzUyNiwgNDc1NDEsIAorICAgIDQ3NTU2LCA0NzU3MSwgNDc1ODYsIDQ3NjAxLCA0NzYxNiwgNDc2MzEsIDQ3NjQ2LCA0NzY2MSwgNDc2NzYsIDQ3NjkxLCAKKyAgICA0NzcwNiwgNDc3MjEsIDQ3NzM2LCA0Nzc1MSwgNDc3NjYsIDQ3NzgxLCA0Nzc5NiwgNDc4MTEsIDQ3ODI2LCA0Nzg0MSwgCisgICAgNDc4NTYsIDQ3ODcxLCA0Nzg4NiwgNDc5MDEsIDQ3OTE2LCA0NzkzMSwgNDc5NDYsIDQ3OTYxLCA0Nzk3NiwgNDc5OTEsIAorICAgIDQ4MDA2LCA0ODAyMSwgNDgwMzYsIDQ4MDUxLCA0ODA2NiwgNDgwODEsIDQ4MDk2LCA0ODExMSwgNDgxMjYsIDQ4MTQxLCAKKyAgICA0ODE1NiwgNDgxNzEsIDQ4MTg2LCA0ODIwMSwgNDgyMTYsIDQ4MjMxLCA0ODI0NiwgNDgyNjEsIDQ4Mjc2LCA0ODI5MSwgCisgICAgNDgzMDYsIDQ4MzIxLCA0ODMzNiwgNDgzNTEsIDQ4MzY2LCA0ODM4MSwgNDgzOTYsIDQ4NDExLCA0ODQyNiwgNDg0NDEsIAorICAgIDQ4NDU2LCA0ODQ3MSwgNDg0ODYsIDQ4NTAxLCA0ODUxNiwgNDg1MzEsIDQ4NTQ2LCA0ODU2MSwgNDg1NzYsIDQ4NTkxLCAKKyAgICA0ODYwNiwgNDg2MjEsIDQ4NjM2LCA0ODY1MSwgNDg2NjYsIDQ4NjgxLCA0ODY5NiwgNDg3MTEsIDQ4NzI2LCA0ODc0MSwgCisgICAgNDg3NTYsIDQ4NzcxLCA0ODc4NiwgNDg4MDEsIDQ4ODE2LCA0ODgzMSwgNDg4NDYsIDQ4ODYxLCA0ODg3NiwgNDg4OTEsIAorICAgIDQ4OTA2LCA0ODkyMSwgNDg5MzYsIDQ4OTUxLCA0ODk2NiwgNDg5ODEsIDQ4OTk2LCA0OTAxMSwgNDkwMjYsIDQ5MDQxLCAKKyAgICA0OTA1NiwgNDkwNzEsIDQ5MDg2LCA0OTEwMSwgNDkxMTYsIDQ5MTMxLCA0OTE0NiwgNDkxNjEsIDQ5MTc2LCA0OTE5MSwgCisgICAgNDkyMDYsIDQ5MjIxLCA0OTIzNiwgNDkyNTEsIDQ5MjY2LCA0OTI4MSwgNDkyOTYsIDQ5MzExLCA0OTMyNiwgNDkzNDEsIAorICAgIDQ5MzU2LCA0OTM3MSwgNDkzODYsIDQ5NDAxLCA0OTQxNiwgNDk0MzEsIDQ5NDQ2LCA0OTQ2MSwgNDk0NzYsIDQ5NDkxLCAKKyAgICA0OTUwNiwgNDk1MjEsIDQ5NTM2LCA0OTU1MSwgNDk1NjYsIDQ5NTgxLCA0OTU5NiwgNDk2MTEsIDQ5NjI2LCA0OTY0MSwgCisgICAgNDk2NTYsIDQ5NjcxLCA0OTY4NiwgNDk3MDEsIDQ5NzE2LCA0OTczMSwgNDk3NDYsIDQ5NzYxLCA0OTc3NiwgNDk3OTEsIAorICAgIDQ5ODA2LCA0OTgyMSwgNDk4MzYsIDQ5ODUxLCA0OTg2NiwgNDk4ODEsIDQ5ODk2LCA0OTkxMSwgNDk5MjYsIDQ5OTQxLCAKKyAgICA0OTk1NiwgNDk5NzEsIDQ5OTg2LCA1MDAwMSwgNTAwMTYsIDUwMDMxLCA1MDA0NiwgNTAwNjEsIDUwMDc2LCA1MDA5MSwgCisgICAgNTAxMDYsIDUwMTIxLCA1MDEzNiwgNTAxNTEsIDUwMTY2LCA1MDE4MSwgNTAxOTYsIDUwMjExLCA1MDIyNiwgNTAyNDEsIAorICAgIDUwMjU2LCA1MDI3MSwgNTAyODYsIDUwMzAxLCA1MDMxNiwgNTAzMzEsIDUwMzQ2LCA1MDM2MSwgNTAzNzYsIDUwMzkxLCAKKyAgICA1MDQwNiwgNTA0MjEsIDUwNDM2LCA1MDQ1MSwgNTA0NjYsIDUwNDgxLCA1MDQ5NiwgNTA1MTEsIDUwNTI2LCA1MDU0MSwgCisgICAgNTA1NTYsIDUwNTcxLCA1MDU4NiwgNTA2MDEsIDUwNjE2LCA1MDYzMSwgNTA2NDYsIDUwNjYxLCA1MDY3NiwgNTA2OTEsIAorICAgIDUwNzA2LCA1MDcyMSwgNTA3MzYsIDUwNzUxLCA1MDc2NiwgNTA3ODEsIDUwNzk2LCA1MDgxMSwgNTA4MjYsIDUwODQxLCAKKyAgICA1MDg1NiwgNTA4NzEsIDUwODg2LCA1MDkwMSwgNTA5MTYsIDUwOTMxLCA1MDk0NiwgNTA5NjEsIDUwOTc2LCA1MDk5MSwgCisgICAgNTEwMDYsIDUxMDIxLCA1MTAzNiwgNTEwNTEsIDUxMDY2LCA1MTA4MSwgNTEwOTYsIDUxMTExLCA1MTEyNiwgNTExNDEsIAorICAgIDUxMTU2LCA1MTE3MSwgNTExODYsIDUxMjAxLCA1MTIxNiwgNTEyMzEsIDUxMjQ2LCA1MTI2MSwgNTEyNzYsIDUxMjkxLCAKKyAgICA1MTMwNiwgNTEzMjEsIDUxMzM2LCA1MTM1MSwgNTEzNjYsIDUxMzgxLCA1MTM5NiwgNTE0MTEsIDUxNDI2LCA1MTQ0MSwgCisgICAgNTE0NTYsIDUxNDcxLCA1MTQ4NiwgNTE1MDEsIDUxNTE2LCA1MTUzMSwgNTE1NDYsIDUxNTYxLCA1MTU3NiwgNTE1OTEsIAorICAgIDUxNjA2LCA1MTYyMSwgNTE2MzYsIDUxNjUxLCA1MTY2NiwgNTE2ODEsIDUxNjk2LCA1MTcxMSwgNTE3MjYsIDUxNzQxLCAKKyAgICA1MTc1NiwgNTE3NzEsIDUxNzg2LCA1MTgwMSwgNTE4MTYsIDUxODMxLCA1MTg0NiwgNTE4NjEsIDUxODc2LCA1MTg5MSwgCisgICAgNTE5MDYsIDUxOTIxLCA1MTkzNiwgNTE5NTEsIDUxOTY2LCA1MTk4MSwgNTE5OTYsIDUyMDExLCA1MjAyNiwgNTIwNDEsIAorICAgIDUyMDU2LCA1MjA3MSwgNTIwODYsIDUyMTAxLCA1MjExNiwgNTIxMzEsIDUyMTQ2LCA1MjE2MSwgNTIxNzYsIDUyMTkxLCAKKyAgICA1MjIwNiwgNTIyMjEsIDUyMjM2LCA1MjI1MSwgNTIyNjYsIDUyMjgxLCA1MjI5NiwgNTIzMTEsIDUyMzI2LCA1MjM0MSwgCisgICAgNTIzNTYsIDUyMzcxLCA1MjM4NiwgNTI0MDEsIDUyNDE2LCA1MjQzMSwgNTI0NDYsIDUyNDYxLCA1MjQ3NiwgNTI0OTEsIAorICAgIDUyNTA2LCA1MjUyMiwgNTI1MzgsIDUyNTU0LCA1MjU3MCwgNTI1ODYsIDUyNjAyLCA1MjYxOCwgNTI2MzQsIDUyNjUwLCAKKyAgICA1MjY2NiwgNTI2ODIsIDUyNjk4LCA1MjcxNCwgNTI3MzAsIDUyNzQ2LCA1Mjc2MiwgNTI3NzgsIDUyNzk0LCA1MjgxMCwgCisgICAgNTI4MjYsIDUyODQyLCA1Mjg1OCwgNTI4NzQsIDUyODkwLCA1MjkwNiwgNTI5MjIsIDUyOTM4LCA1Mjk1NCwgNTI5NzAsIAorICAgIDUyOTg2LCA1MzAwMiwgNTMwMTgsIDUzMDM0LCA1MzA1MCwgNTMwNjYsIDUzMDgyLCA1MzA5OCwgNTMxMTQsIDUzMTMwLCAKKyAgICA1MzE0NiwgNTMxNjIsIDUzMTc4LCA1MzE5NCwgNTMyMTAsIDUzMjI2LCA1MzI0MiwgNTMyNTgsIDUzMjc0LCA1MzI5MCwgCisgICAgNTMzMDYsIDUzMzIyLCA1MzMzOCwgNTMzNTQsIDUzMzcwLCA1MzM4NiwgNTM0MDIsIDUzNDE4LCA1MzQzNCwgNTM0NTAsIAorICAgIDUzNDY2LCA1MzQ4MiwgNTM0OTgsIDUzNTE0LCA1MzUzMCwgNTM1NDYsIDUzNTYyLCA1MzU3OCwgNTM1OTQsIDUzNjEwLCAKKyAgICA1MzYyNiwgNTM2NDIsIDUzNjU4LCA1MzY3NCwgNTM2OTAsIDUzNzA2LCA1MzcyMiwgNTM3MzgsIDUzNzU0LCA1Mzc3MCwgCisgICAgNTM3ODYsIDUzODAyLCA1MzgxOCwgNTM4MzQsIDUzODUwLCA1Mzg2NiwgNTM4ODIsIDUzODk4LCA1MzkxNCwgNTM5MzAsIAorICAgIDUzOTQ2LCA1Mzk2MiwgNTM5NzgsIDUzOTk0LCA1NDAxMCwgNTQwMjYsIDU0MDQyLCA1NDA1OCwgNTQwNzQsIDU0MDkwLCAKKyAgICA1NDEwNiwgNTQxMjIsIDU0MTM4LCA1NDE1NCwgNTQxNzAsIDU0MTg2LCA1NDIwMiwgNTQyMTgsIDU0MjM0LCA1NDI1MCwgCisgICAgNTQyNjYsIDU0MjgyLCA1NDI5OCwgNTQzMTQsIDU0MzMwLCA1NDM0NiwgNTQzNjIsIDU0Mzc4LCA1NDM5NCwgNTQ0MTAsIAorICAgIDU0NDI2LCA1NDQ0MiwgNTQ0NTgsIDU0NDc0LCA1NDQ5MCwgNTQ1MDYsIDU0NTIyLCA1NDUzOCwgNTQ1NTQsIDU0NTcwLCAKKyAgICA1NDU4NiwgNTQ2MDIsIDU0NjE4LCA1NDYzNCwgNTQ2NTAsIDU0NjY2LCA1NDY4MiwgNTQ2OTgsIDU0NzE0LCA1NDczMCwgCisgICAgNTQ3NDYsIDU0NzYyLCA1NDc3OCwgNTQ3OTQsIDU0ODEwLCA1NDgyNiwgNTQ4NDIsIDU0ODU4LCA1NDg3NCwgNTQ4OTAsIAorICAgIDU0OTA2LCA1NDkyMiwgNTQ5MzgsIDU0OTU0LCA1NDk3MCwgNTQ5ODYsIDU1MDAyLCA1NTAxOCwgNTUwMzQsIDU1MDUwLCAKKyAgICA1NTA2NiwgNTUwODIsIDU1MDk4LCA1NTExNCwgNTUxMzAsIDU1MTQ2LCA1NTE2MiwgNTUxNzgsIDU1MTk0LCA1NTIxMCwgCisgICAgNTUyMjYsIDU1MjQyLCA1NTI1OCwgNTUyNzQsIDU1MjkwLCA1NTMwNiwgNTUzMjIsIDU1MzM4LCA1NTM1NCwgNTUzNzAsIAorICAgIDU1Mzg2LCA1NTQwMiwgNTU0MTgsIDU1NDM0LCA1NTQ1MCwgNTU0NjYsIDU1NDgyLCA1NTQ5OCwgNTU1MTQsIDU1NTMwLCAKKyAgICA1NTU0NiwgNTU1NjIsIDU1NTc4LCA1NTU5NCwgNTU2MTAsIDU1NjI2LCA1NTY0MiwgNTU2NTgsIDU1Njc0LCA1NTY5MCwgCisgICAgNTU3MDYsIDU1NzIyLCA1NTczOCwgNTU3NTQsIDU1NzcwLCA1NTc4NiwgNTU4MDIsIDU1ODE4LCA1NTgzNCwgNTU4NTAsIAorICAgIDU1ODY2LCA1NTg4MiwgNTU4OTgsIDU1OTE0LCA1NTkzMCwgNTU5NDYsIDU1OTYyLCA1NTk3OCwgNTU5OTQsIDU2MDEwLCAKKyAgICA1NjAyNiwgNTYwNDIsIDU2MDU4LCA1NjA3NCwgNTYwOTAsIDU2MTA2LCA1NjEyMiwgNTYxMzgsIDU2MTU0LCA1NjE3MCwgCisgICAgNTYxODYsIDU2MjAyLCA1NjIxOCwgNTYyMzQsIDU2MjUwLCA1NjI2NiwgNTYyODIsIDU2Mjk4LCA1NjMxNCwgNTYzMzAsIAorICAgIDU2MzQ2LCA1NjM2MiwgNTYzNzgsIDU2Mzk0LCA1NjQxMCwgNTY0MjYsIDU2NDQyLCA1NjQ1OCwgNTY0NzQsIDU2NDkwLCAKKyAgICA1NjUwNiwgNTY1MjIsIDU2NTM4LCA1NjU1NCwgNTY1NzAsIDU2NTg2LCA1NjYwMiwgNTY2MTgsIDU2NjM0LCA1NjY1MCwgCisgICAgNTY2NjYsIDU2NjgyLCA1NjY5OCwgNTY3MTQsIDU2NzMwLCA1Njc0NiwgNTY3NjIsIDU2Nzc4LCA1Njc5NCwgNTY4MTAsIAorICAgIDU2ODI2LCA1Njg0MiwgNTY4NTgsIDU2ODc0LCA1Njg5MCwgNTY5MDYsIDU2OTIyLCA1NjkzOCwgNTY5NTQsIDU2OTcwLCAKKyAgICA1Njk4NiwgNTcwMDIsIDU3MDE4LCA1NzAzNCwgNTcwNTAsIDU3MDY2LCA1NzA4MiwgNTcwOTgsIDU3MTE0LCA1NzEzMCwgCisgICAgNTcxNDYsIDU3MTYyLCA1NzE3OCwgNTcxOTQsIDU3MjEwLCA1NzIyNiwgNTcyNDIsIDU3MjU4LCA1NzI3NCwgNTcyOTAsIAorICAgIDU3MzA2LCA1NzMyMiwgNTczMzgsIDU3MzU0LCA1NzM3MCwgNTczODYsIDU3NDAyLCA1NzQxOCwgNTc0MzQsIDU3NDUwLCAKKyAgICA1NzQ2NiwgNTc0ODIsIDU3NDk4LCA1NzUxNCwgNTc1MzAsIDU3NTQ2LCA1NzU2MiwgNTc1NzgsIDU3NTk0LCA1NzYxMCwgCisgICAgNTc2MjYsIDU3NjQyLCA1NzY1OCwgNTc2NzQsIDU3NjkwLCA1NzcwNiwgNTc3MjIsIDU3NzM4LCA1Nzc1NCwgNTc3NzAsIAorICAgIDU3Nzg2LCA1NzgwMiwgNTc4MTgsIDU3ODM0LCA1Nzg1MCwgNTc4NjYsIDU3ODgyLCA1Nzg5OCwgNTc5MTQsIDU3OTMwLCAKKyAgICA1Nzk0NiwgNTc5NjIsIDU3OTc4LCA1Nzk5NCwgNTgwMTAsIDU4MDI2LCA1ODA0MiwgNTgwNTgsIDU4MDc0LCA1ODA5MCwgCisgICAgNTgxMDYsIDU4MTIyLCA1ODEzOCwgNTgxNTQsIDU4MTcwLCA1ODE4NiwgNTgyMDIsIDU4MjE4LCA1ODIzNCwgNTgyNTAsIAorICAgIDU4MjY2LCA1ODI4MiwgNTgyOTgsIDU4MzE0LCA1ODMzMCwgNTgzNDYsIDU4MzYyLCA1ODM3OCwgNTgzOTQsIDU4NDEwLCAKKyAgICA1ODQyNiwgNTg0NDIsIDU4NDU4LCA1ODQ3NCwgNTg0OTAsIDU4NTA2LCA1ODUyMiwgNTg1MzgsIDU4NTU0LCA1ODU3MCwgCisgICAgNTg1ODYsIDU4NjAyLCA1ODYxOCwgNTg2MzQsIDU4NjUwLCA1ODY2NiwgNTg2ODIsIDU4Njk4LCA1ODcxNCwgNTg3MzAsIAorICAgIDU4NzQ2LCA1ODc2MiwgNTg3NzgsIDU4Nzk0LCA1ODgxMCwgNTg4MjYsIDU4ODQyLCA1ODg1OCwgNTg4NzQsIDU4ODkwLCAKKyAgICA1ODkwNiwgNTg5MjIsIDU4OTM4LCA1ODk1NCwgNTg5NzAsIDU4OTg2LCA1OTAwMiwgNTkwMTgsIDU5MDM0LCA1OTA1MCwgCisgICAgNTkwNjYsIDU5MDgyLCA1OTA5OCwgNTkxMTQsIDU5MTMwLCA1OTE0NiwgNTkxNjIsIDU5MTc4LCA1OTE5NCwgNTkyMTAsIAorICAgIDU5MjI2LCA1OTI0MiwgNTkyNTgsIDU5Mjc0LCA1OTI5MCwgNTkzMDYsIDU5MzIyLCA1OTMzOCwgNTkzNTQsIDU5MzcwLCAKKyAgICA1OTM4NiwgNTk0MDIsIDU5NDE4LCA1OTQzNCwgNTk0NTAsIDU5NDY2LCA1OTQ4MiwgNTk0OTgsIDU5NTE0LCA1OTUzMCwgCisgICAgNTk1NDYsIDU5NTYyLCA1OTU3OCwgNTk1OTQsIDU5NjEwLCA1OTYyNiwgNTk2NDIsIDU5NjU4LCA1OTY3NCwgNTk2OTAsIAorICAgIDU5NzA2LCA1OTcyMiwgNTk3MzgsIDU5NzU0LCA1OTc3MCwgNTk3ODYsIDU5ODAyLCA1OTgxOCwgNTk4MzQsIDU5ODUwLCAKKyAgICA1OTg2NiwgNTk4ODIsIDU5ODk4LCA1OTkxNCwgNTk5MzAsIDU5OTQ2LCA1OTk2MiwgNTk5NzgsIDU5OTk0LCA2MDAxMCwgCisgICAgNjAwMjYsIDYwMDQyLCA2MDA1OCwgNjAwNzQsIDYwMDkwLCA2MDEwNiwgNjAxMjIsIDYwMTM4LCA2MDE1NCwgNjAxNzAsIAorICAgIDYwMTg2LCA2MDIwMiwgNjAyMTgsIDYwMjM0LCA2MDI1MCwgNjAyNjYsIDYwMjgyLCA2MDI5OCwgNjAzMTQsIDYwMzMwLCAKKyAgICA2MDM0NiwgNjAzNjIsIDYwMzc4LCA2MDM5NCwgNjA0MTAsIDYwNDI2LCA2MDQ0MiwgNjA0NTgsIDYwNDc0LCA2MDQ5MCwgCisgICAgNjA1MDYsIDYwNTIyLCA2MDUzOCwgNjA1NTQsIDYwNTcwLCA2MDU4NiwgNjA2MDIsIDYwNjE4LCA2MDYzNCwgNjA2NTAsIAorICAgIDYwNjY2LCA2MDY4MiwgNjA2OTgsIDYwNzE0LCA2MDczMCwgNjA3NDYsIDYwNzYyLCA2MDc3OCwgNjA3OTQsIDYwODEwLCAKKyAgICA2MDgyNiwgNjA4NDIsIDYwODU4LCA2MDg3NCwgNjA4OTAsIDYwOTA2LCA2MDkyMiwgNjA5MzgsIDYwOTU0LCA2MDk3MCwgCisgICAgNjA5ODYsIDYxMDAyLCA2MTAxOCwgNjEwMzQsIDYxMDUwLCA2MTA2NiwgNjEwODIsIDYxMDk4LCA2MTExNCwgNjExMzAsIAorICAgIDYxMTQ2LCA2MTE2MiwgNjExNzgsIDYxMTkzLCAxNzY3MywgNjEyMDIsIDYxMjA3LCA2MTIxMywgNjEyMTksIDYxMjI5LCAKKyAgICA2MTIzNywgMTU3MDQsIDE2Mjg3LCAxMDQ0NSwgNjEyNTAsIDE1MDMsIDE1MDcsIDYxMjU4LCAzODkwLCAyODcxMywgNzM4NywgCisgICAgNjEyNjQsIDYxMjY5LCA2MTI3NCwgNjEyNzksIDYxMjg0LCA2MTI5MCwgNjEyOTUsIDYxMzAxLCA2MTMwNiwgNjEzMTIsIAorICAgIDYxMzE3LCA2MTMyMiwgNjEzMjcsIDYxMzMyLCA2MTMzOCwgNjEzNDMsIDYxMzQ4LCA2MTM1MywgNjEzNTgsIDYxMzYzLCAKKyAgICA2MTM2OCwgNjEzNzMsIDYxMzc5LCA2MTM4NCwgNjEzOTAsIDYxMzk3LCAyNTgxLCA2MTQwMiwgNjE0MDgsIDg3NTMsIAorICAgIDYxNDEyLCA2MTQxNywgNjE0MjQsIDYxNDMyLCA0NiwgNjE0MzYsIDYxNDQyLCA2MTQ0NywgNjE0NTIsIDYxNDU2LCA2MTQ2MSwgCisgICAgNjE0NjUsIDYxNDY5LCAxMTI0NCwgNjE0NzMsIDYxNDgzLCA2MTQ5NiwgNjE1MDcsIDYxNTIwLCA2MTUyNywgNjE1MzMsIAorICAgIDYxNTM4LCA2MTU0NCwgNjE1NTAsIDYxNTU2LCA2MTU2MSwgNjE1NjYsIDYxNTcxLCA2MTU3NiwgNjE1ODAsIDYxNTg1LCAKKyAgICA2MTU5MCwgNjE1OTUsIDYxNjAxLCA2MTYwNywgNjE2MTMsIDYxNjE4LCA2MTYyMiwgNjE2MjcsIDYxNjMyLCA2MTYzNiwgCisgICAgNjE2NDEsIDYxNjQ2LCA2MTY1MSwgNjE2NTUsIDExMjYwLCAxMTI3MSwgMTEyNzYsIDE1NDYsIDYxNjU5LCA2MTY2NSwgCisgICAgMTU1MSwgNjE2NzAsIDYxNjczLCAxNzEyMiwgNjE2NzgsIDYxNjg0LCA2MTY4OSwgMTU4MiwgNjE2OTUsIDE1ODgsIDE1OTQsIAorICAgIDExMzA2LCA2MTcwMCwgNjE3MDksIDYxNzE3LCA2MTcyNCwgNjE3MjgsIDYxNzM0LCA2MTczOSwgMzI0NjYsIDYxNzQ0LCAKKyAgICA2MTc1MSwgNjE3NTYsIDYxNzYwLCA2MTc2NCwgNjE3NzMsIDE1OTksIDE3MjE5LCA2MTc3OCwgNjE3ODIsIDE3MjMwLCAKKyAgICAxMTA1LCA2MTc4NiwgNjE3OTMsIDYxNzk4LCA2MTgwMiwgMTcyNjAsIDE2MDMsIDM5OTY0LCA2MTgwNSwgNjE4MTAsIAorICAgIDYxODIwLCA2MTgyOSwgNjE4MzQsIDYxODM4LCA2MTg0NCwgMTYwOCwgNDIwNTUsIDYxODQ5LCA2MTg1OCwgNjE4NjQsIAorICAgIDYxODY5LCA2MTg3NCwgMTE0NzQsIDExNDgwLCA2MTg4MCwgNjE4OTIsIDYxOTA5LCA2MTkyNiwgNjE5NDMsIDYxOTYwLCAKKyAgICA2MTk3NywgNjE5OTQsIDYyMDExLCA2MjAyOCwgNjIwNDUsIDYyMDYyLCA2MjA3OSwgNjIwOTYsIDYyMTEzLCA2MjEzMCwgCisgICAgNjIxNDcsIDYyMTY0LCA2MjE4MSwgNjIxOTgsIDYyMjE1LCA2MjIzMiwgNjIyNDksIDYyMjY2LCA2MjI4MywgNjIzMDAsIAorICAgIDYyMzE3LCA2MjMzNCwgNjIzNTEsIDYyMzY4LCA2MjM4NSwgNjI0MDIsIDYyNDE5LCA2MjQzNiwgNjI0NTMsIDYyNDcwLCAKKyAgICA2MjQ4NywgNjI1MDQsIDYyNTIxLCA2MjUzOCwgNjI1NTUsIDYyNTcyLCA2MjU4OSwgNjI2MDYsIDYyNjIzLCA2MjY0MCwgCisgICAgNjI2NTcsIDYyNjc0LCA2MjY5MSwgNjI3MDgsIDYyNzI1LCA2MjczNiwgNjI3NDEsIDE2MTMsIDYyNzQ1LCA2Mjc1MCwgCisgICAgNjI3NTYsIDYyNzYxLCA2Mjc2NiwgOTU5MSwgMTYxOCwgNjI3NzIsIDYyNzgxLCAyOTAyOSwgNjI3ODYsIDYyNzk3LCAKKyAgICAxMTQ5MSwgNjI4MDcsIDYyODEyLCA2MjgxOCwgNjI4MjMsIDYyODMwLCA2MjgzNiwgNjI4NDEsIDE2MjMsIDE3NTM1LCAKKyAgICA2Mjg0NiwgMTE1MDEsIDE2MjgsIDExNTA2LCA2Mjg1MiwgNjI4NTcsIDYyODYzLCA2Mjg2OCwgNjI4NzMsIDYyODc4LCAKKyAgICA2Mjg4MywgNjI4ODgsIDYyODkzLCA2Mjg5OCwgNjI5MDMsIDYyOTA5LCA2MjkxNSwgNjI5MjEsIDYyOTI2LCA2MjkzMCwgCisgICAgNjI5MzUsIDYyOTQwLCA2Mjk0NCwgNjI5NDksIDYyOTU0LCA2Mjk1OSwgNjI5NjQsIDYyOTY4LCA2Mjk3MywgNjI5NzksIAorICAgIDYyOTg0LCA2Mjk4OSwgNjI5OTMsIDYyOTk4LCA2MzAwMywgNjMwMDksIDYzMDE0LCA2MzAxOSwgNjMwMjUsIDYzMDMxLCAKKyAgICA2MzAzNiwgNjMwNDAsIDYzMDQ1LCA2MzA1MCwgNjMwNTUsIDYzMDU5LCA2MzA2NCwgNjMwNjksIDYzMDc0LCA2MzA4MCwgCisgICAgNjMwODYsIDYzMDkxLCA2MzA5NSwgNjMwOTksIDYzMTA0LCA2MzEwOSwgNjMxMTQsIDMwNTA0LCA2MzExOCwgNjMxMjMsIAorICAgIDYzMTI4LCA2MzEzNCwgNjMxMzksIDYzMTQ0LCA2MzE0OCwgNjMxNTMsIDYzMTU4LCA2MzE2NCwgNjMxNjksIDYzMTc0LCAKKyAgICA2MzE4MCwgNjMxODYsIDYzMTkxLCA2MzE5NSwgNjMyMDAsIDYzMjA1LCA2MzIwOSwgNjMyMTQsIDYzMjE5LCA2MzIyNCwgCisgICAgNjMyMzAsIDYzMjM2LCA2MzI0MSwgNjMyNDUsIDYzMjUwLCA2MzI1NSwgNjMyNTksIDYzMjY0LCA2MzI2OSwgNjMyNzQsIAorICAgIDYzMjc5LCA2MzI4MywgNjMyODYsIDYzMjg5LCA2MzI5NCwgMzMxNDcsIDYzMjk5LCA2MzMwNywgMTc2MDEsIDM3NzQsIAorICAgIDExNjA0LCA2MzMxMywgNjMzMjMsIDYzMzM4LCA2MzM0NiwgMTE2MDksIDYzMzU3LCA2MzM2MiwgNjMzNzMsIDYzMzg1LCAKKyAgICA2MzM5NywgNjM0MDksIDI3MTUsIDYzNDIxLCA2MzQyNiwgNjM0MzgsIDYzNDQyLCA2MzQ0OCwgNjM0NTQsIDYzNDU5LCAKKyAgICAxNjQ1LCAxNjgyNiwgNjM0NjgsIDYzNDczLCA0MjExNCwgNjM0NzcsIDYzNDgxLCA2MzQ4NiwgNjM0OTAsIDE3NjgxLCAKKyAgICA2MzQ5NSwgNjM0OTgsIDYzNTAzLCA2MzUxMSwgNjM1MTksIDE2NDksIDExNjQ1LCAxMTY1MSwgMTY1NCwgNjM1MjcsIAorICAgIDYzNTM0LCA2MzUzOSwgNjM1NDgsIDYzNTU4LCA2MzU2NSwgNjM1NzAsIDYzNTc1LCAxNjU5LCA2MzU4MiwgNjM1ODcsIAorICAgIDE3Nzk2LCA2MzU5MSwgNjM1OTYsIDYzNjAzLCA2MzYwOSwgNjM2MTMsIDYzNjI0LCA2MzYzNCwgMTc4MTgsIDk0ODUsIAorICAgIDk0OTIsIDYzNjQxLCAxNjY0LCA2MzY0NiwgNjM2NTIsIDYzNjYwLCA2MzY2NywgNjM2NzMsIDYzNjgwLCA2MzY5MiwgCisgICAgNjM2OTgsIDYzNzAzLCA2MzcxNSwgNjM3MjYsIDYzNzM1LCA2Mzc0NSwgMzg2OSwgMzIyNzEsIDMyMjgwLCAxNzg1OCwgCisgICAgMTY2OSwgMTY3MywgNjM3NTMsIDYzNzY0LCA2Mzc2OSwgMTY4MywgNjM3NzcsIDYzNzgyLCA2Mzc4NywgMTc5MTcsIDYzNzk5LCAKKyAgICA2MzgwMiwgNjM4MDgsIDYzODEzLCA2MzgyMSwgMTY4OCwgNjM4MjYsIDYzODMxLCA2MzgzOSwgNjM4NDcsIDYzODU0LCAKKyAgICA2Mzg2MywgNjM4NzEsIDYzODgwLCAxNjkzLCA2Mzg4NCwgMTY5OCwgMjIzMzAsIDYzODg5LCA2Mzg5NiwgMTc5OTEsIAorICAgIDYzOTA0LCA2MzkxMCwgNjM5MTUsIDYzOTIzLCA2MzkzMCwgNjM5MzgsIDE3MzA5LCA2Mzk0MywgMTE3OTcsIDYzOTUyLCAKKyAgICA2Mzk1OCwgNjM5NjMsIDYzOTcwLCA2Mzk3NywgNjM5ODMsIDE2OTkxLCA2Mzk5MywgNjM5OTksIDY0MDA0LCA2NDAxNSwgCisgICAgNjQwMjAsIDY0MDI4LCAxMTgxNCwgMTE4MTksIDY0MDM2LCA2NDA0MiwgNjQwNDYsIDY0MDU0LCAzOTM0LCAxODAzOCwgCisgICAgNDIyMDcsIDY0MDU5LCA2NDA2NSwgNjQwNzAsIDY0MDc4LCA2NDA4NSwgMTI3MjMsIDY0MDkwLCA2NDA5NiwgMTcwOSwgCisgICAgNjQxMDEsIDY0MTA0LCAxMTcyLCA2NDExMCwgNjQxMTUsIDY0MTIwLCA2NDEyNiwgNjQxMzEsIDY0MTM2LCA2NDE0MSwgCisgICAgNjQxNDYsIDY0MTUxLCA2NDE1NiwgMTcxOCwgOSwgNjQxNjIsIDY0MTY2LCA2NDE3MSwgNjQxNzUsIDY0MTc5LCA2NDE4MywgCisgICAgMzMzODcsIDY0MTg4LCAyNDI3NywgNjQxOTMsIDY0MTk4LCA2NDIwMiwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTgsIAorICAgIDY0MjIyLCA2NDIyNywgNjQyMzEsIDY0MjM3LCAzNjI4OCwgMzYyOTMsIDM2Mjk4LCA2NDI0MCwgNjQyNDcsIDY0MjUzLCAKKyAgICA2NDI2MSwgNDE4OTEsIDY0MjcxLCAzNjMwNCwgMzM2NTEsIDMzNDAyLCAzMzQwOCwgMzYzMjAsIDMzNDE0LCA2NDI3NiwgCisgICAgNjQyODEsIDMzNjg0LCA2NDI4NSwgNjQyODgsIDY0MjkyLCA2NDI5OSwgNjQzMDIsIDY0MzA3LCA2NDMxMiwgNjQzMTYsIAorICAgIDY0MzIwLCA2NDMyMywgNjQzMzMsIDY0MzQ1LCA2NDM1MiwgNjQzNTgsIDMzNDE5LCA2NDM2NSwgMzUxNDksIDY0MzY4LCAKKyAgICA4NzcwLCA5NDAsIDY0MzcxLCA2NDM3NSwgNjQzODAsIDM4MTIsIDY0Mzg0LCA2NDM4NywgMTQzNDMsIDY0Mzk0LCA2NDQwMSwgCisgICAgNjQ0MTQsIDY0NDIyLCA2NDQzMSwgNjQ0NDAsIDY0NDQ1LCA2NDQ1NSwgNjQ0NjgsIDY0NDgwLCA2NDQ4NywgNjQ0OTIsIAorICAgIDY0NTAxLCA2NDUxNCwgMzc4MTksIDY0NTMyLCA2NDUzNywgNjQ1NDQsIDY0NTUwLCA3NDYsIDY0NTU1LCA2NDU2MywgCisgICAgNjQ1NzAsIDI4NTM2LCA3MTAsIDY0NTc2LCA2NDU4MiwgNjQ1OTIsIDY0NTk4LCA2NDYwMywgMzM0MzgsIDYxODUsIDMzNDUyLCAKKyAgICA2NDYwNywgNjQ2MTcsIDY0NjIyLCA2NDYzMiwgNjQ2NDcsIDY0NjUzLCA2NDY1OSwgMzM0NjIsIDY0NjY0LCAzMjU4MywgCisgICAgNjQ2NjgsIDY0NjczLCA2NDY4MCwgNjQ2ODUsIDY0Njg5LCA2NDY5NCwgMTc4NjEsIDY0NzAxLCA2NDcwNiwgNjQ3MTAsIAorICAgIDYyMjYsIDMzNDg4LCA2NDcxNCwgNjQ3MjAsIDMxMCwgNjQ3MzAsIDY0NzM3LCA2NDc0NCwgNjQ3NDksIDY0NzU4LCA2MTgxNCwgCisgICAgNjQ3NjQsIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCA2NDc4OCwgNjQ3OTMsIDY0Nzk3LCA2NDgwMywgNjQ4MTEsIAorICAgIDY0ODE2LCA2NDgyMSwgNjQ4MjYsIDY0ODMwLCA2NDgzNSwgNjQ4MzksIDY0ODQzLCA2NDg0OSwgNjQ4NTUsIDY0ODYwLCAKKyAgICA2NDg2NCwgNjQ4NjksIDMzNjEyLCA2NDg3MywgMzM2MTgsIDMzNjI0LCA2NDg3OCwgNjQ4ODQsIDY0ODkxLCA2NDg5NiwgCisgICAgNjQ5MDAsIDMyNjAwLCAxNzUyOCwgNjQ5MDMsIDY0OTA3LCA2NDkxMiwgNjQ5MTksIDY0OTI1LCA2NDkyOSwgNjQ5MzQsIAorICAgIDQxNTgzLCA2NDk0MCwgNjQ5NDQsIDY0OTUxLCA2NDk1NSwgNjQ5NjAsIDY0OTY2LCA2NDk3MiwgNjQ5NzgsIDY0OTkwLCAKKyAgICA2NDk5OSwgNjUwMDksIDY1MDE1LCA2NTAyMiwgNjUwMjcsIDY1MDMyLCA2NTAzNiwgNjUwMzksIDY1MDQ1LCA2NTA1MiwgCisgICAgNjUwNTcsIDY1MDYyLCA2NTA2OSwgNjUwNzYsIDY1MDgzLCA2NTA4OSwgNjUwOTQsIDY1MDk5LCA2NTEwNywgMzM2MjksIAorICAgIDI0NDMsIDY1MTEyLCA2NTExNywgNjUxMjMsIDY1MTI4LCA2NTEzNCwgNjUxMzksIDY1MTQ0LCA2NTE0OSwgNjUxNTUsIAorICAgIDMzNjUwLCA2NTE2MCwgNjUxNjYsIDY1MTcyLCA2NTE3OCwgMzM3MjAsIDY1MTgzLCA2NTE4OCwgNjUxOTMsIDMzNzMxLCAKKyAgICA2NTE5OCwgNjUyMDMsIDY1MjA4LCA2NTIxNCwgNjUyMjAsIDMzNzM2LCA2NTIyNSwgNjUyMzAsIDY1MjM1LCAzMzc5MSwgCisgICAgMzM3OTcsIDY1MjQwLCA2NTI0NSwgMzM4MDIsIDMzODI0LCAyOTI3OCwgMzM4MzAsIDMzODM0LCA2NTI1MCwgMTI0NjcsIAorICAgIDY1MjU0LCA2NTI2MiwgNjUyNjgsIDY1Mjc2LCA2NTI4MywgNjUyODksIDY1Mjk5LCA2NTMwNSwgNjUzMTIsIDExMTc5LCAKKyAgICAzMzg0OCwgNjUzMTgsIDY1MzMxLCA2NTM0MCwgNjUzNDYsIDY1MzU1LCA2NTM2MSwgMjQ1ODcsIDY1MzY4LCA2NTM3NSwgCisgICAgNjUzODUsIDY1Mzg4LCAzMzc5MiwgNjUzOTMsIDY1NDAwLCA2NTQwNSwgNjU0MDksIDY1NDEzLCA2NTQxOCwgNjU0MjIsIAorICAgIDYzMDYsIDY1NDI3LCA2NTQzMiwgNjU0MzcsIDM2MzgyLCAzNjM4NywgNjU0NDEsIDM2NDAxLCA2NTQ0NiwgMzY0MDYsIAorICAgIDY1NDUxLCA2NTQ1NywgMzY0MTgsIDM2NDI0LCAzNjQzMCwgNjU0NjIsIDY1NDY4LCAyMzU3NywgNjU0NzksIDY1NDgyLCAKKyAgICA2NTQ5NCwgNjU1MDIsIDMzODcxLCA2NTUwNiwgNjU1MTUsIDY1NTI1LCA2NTUzNCwgMzM4ODEsIDY1NTM5LCA2NTU0NiwgCisgICAgNjU1NTUsIDY1NTYxLCA2NTU2OSwgNjU1NzYsIDYyNzcsIDQ1NTksIDY1NTgxLCAzMzgwMywgNjU1ODcsIDY1NTkwLCAKKyAgICA2NTU5NiwgNjU2MDMsIDY1NjA4LCA2NTYxMywgMjQ0OTcsIDY1NjE3LCA2NTYyMywgNjU2MjksIDY1NjM0LCA2NTYzOSwgCisgICAgNjU2NDMsIDY1NjQ5LCA2NTY1NSwgMzUwNTUsIDk1MywgMzc0NjksIDM5MTk2LCAzOTIwMiwgMzM5MTIsIDMzOTE3LCAKKyAgICA2NTY2MCwgNjU2NjQsIDY1NjY4LCA2NTY3MSwgNjU2ODQsIDY1NjkwLCA2NTY5NCwgNjU2OTcsIDY1NzAyLCAzNTM3NiwgCisgICAgNjU3MDYsIDMyNjA1LCAyMjI4MCwgNjU3MTIsIDYyMDYsIDYyMTQsIDkzMjIsIDY1NzE1LCA2NTcyMCwgNjU3MjUsIDY1NzMwLCAKKyAgICA2NTczNSwgNjU3NDAsIDY1NzQ1LCA2NTc1MCwgNjU3NTUsIDY1NzYwLCA2NTc2NiwgNjU3NzEsIDY1Nzc2LCA2NTc4MiwgCisgICAgNjU3ODcsIDY1NzkyLCA2NTc5NywgNjU4MDIsIDY1ODA3LCA2NTgxMiwgNjU4MTgsIDY1ODIzLCA2NTgyOSwgNjU4MzQsIAorICAgIDY1ODM5LCA2NTg0NCwgNjU4NDksIDY1ODU0LCA2NTg1OSwgNjU4NjQsIDY1ODY5LCA2NTg3NCwgNjU4NzksIDY1ODg1LCAKKyAgICA2NTg5MCwgNjU4OTUsIDY1OTAwLCA2NTkwNSwgNjU5MTAsIDY1OTE1LCA2NTkyMSwgNjU5MjYsIDY1OTMxLCA2NTkzNiwgCisgICAgNjU5NDEsIDY1OTQ2LCA2NTk1MSwgNjU5NTYsIDY1OTYxLCA2NTk2NiwgNjU5NzIsIDY1OTc3LCA2NTk4MiwgNjU5ODcsIAorICAgIDY1OTkyLCA2NTk5OCwgNjYwMDQsIDY2MDA5LCA2NjAxNSwgNjYwMjAsIDY2MDI1LCA2NjAzMCwgNjYwMzUsIDY2MDQwLCAKKyAgICAxNDk2LCAyMjMsIDY2MDQ1LCA2NjA0OSwgNjYwNTMsIDY2MDU3LCAyNjI3MiwgNjYwNjEsIDY2MDY1LCA2NjA3MCwgNjYwNzQsIAorICAgIDY2MDc5LCA2NjA4MywgNjYwODgsIDY2MDkzLCA2NjA5OCwgNjYxMDIsIDY2MTA2LCA2NjExMSwgNjYxMTUsIDE0MDc2LCAKKyAgICA2NjEyMCwgNjYxMjQsIDY2MTMxLCA2NjE0MSwgMTYwMjQsIDY2MTUwLCA2NjE1OSwgNjYxNjMsIDY2MTY4LCA2NjE3MywgCisgICAgNjYxNzcsIDY2MTgxLCAyNjA2NiwgMzA1NCwgNjYxODUsIDY2MTkxLCAxODMwOSwgNjYxOTUsIDY2MjA0LCA2NjIxMiwgCisgICAgNjYyMTgsIDY2MjMwLCA2NjI0MiwgNjYyNDYsIDY2MjUxLCA2NjI1NSwgNjYyNjEsIDY2MjY3LCA2NjI3MiwgNjYyODIsIAorICAgIDY2MjkyLCA2NjI5OCwgNjYzMDMsIDY2MzA3LCA2NjMxMywgNjYzMTgsIDY2MzI1LCA2NjMzMSwgNjYzMzYsIDY2MzQ1LCAKKyAgICA2NjM1NCwgNjYzNjIsIDE2NDEyLCA2NjM2NiwgNjYzNzUsIDY2MzgzLCA2NjM5NSwgNjY0MDYsIDY2NDE3LCA2NjQyNiwgCisgICAgNjY0MzAsIDY2NDM5LCA2NjQ0NywgNjY0NTcsIDY2NDY1LCA2NjQ3MSwgNjY0NzYsIDY2NDgyLCA2NjQ4NywgNjY0OTgsIDg1LCAKKyAgICAzMjQxMCwgNjY1MDQsIDI3NDgyLCAyNzQ5MiwgNjY1MTAsIDY2NTE3LCA2NjUyMywgNjY1MjcsIDY2NTM3LCA2NjU0OCwgCisgICAgNjY1NTYsIDY2NTY1LCA2NjU3MCwgNjY1NzUsIDY2NTgwLCA2NjU4NCwgNjY1ODgsIDE4MjYzLCA2NjU5NiwgNjY2MDAsIAorICAgIDY2NjA2LCA2NjYxNiwgNjY2MjMsIDY2NjI5LCA2NjYzNSwgMzY0ODEsIDY2NjM5LCA2NjY0MSwgNjY2NDQsIDY2NjUwLCAKKyAgICA2NjY1NCwgNjY2NjQsIDY2NjcwLCA2NjY3NywgNjY2ODQsIDE0MDEzLCA2NjY5MiwgNjY2OTgsIDY2NzA3LCA2NjcxNiwgCisgICAgNjY3MjIsIDY2NzI4LCA2NjczNCwgNjY3MzksIDY2NzQ2LCA2Njc1MywgNjY3NTksIDY2NzY3LCA2Njc4MCwgNjY3ODksIAorICAgIDY2Nzk4LCA2NjgwMywgNjY4MDcsIDY2ODEzLCA2NjgxOSwgNjY4MjYsIDY2ODMzLCA2Njg0MCwgNjY4NDcsIDY2ODU0LCAKKyAgICA2Njg1OSwgNjY4NjMsIDY2ODY3LCA2Njg3MCwgNjY4ODAsIDY2ODg0LCA2Njg5NiwgNjY5MDUsIDY2OTA5LCA2NjkxNCwgCisgICAgNjY5MTgsIDY2OTI0LCA2NjkyOSwgNjY5MzYsIDY2OTQ1LCA2Njk1MywgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIAorICAgIDY2OTgwLCA2Njk5MCwgNjY5OTgsIDY3MDAzLCA2NzAwNywgNjcwMTEsIDY3MDE3LCA2NzAyNSwgNjcwMzIsIDY3MDQ0LCAKKyAgICA2NzA1MiwgNjcwNjMsIDY3MDY5LCA2NzA3OSwgNjcwODUsIDY3MDg5LCA2NzA5NiwgNjcxMDIsIDY3MTA3LCA2NzExMSwgCisgICAgNjcxMTUsIDY3MTE5LCA2NzEyOCwgNjcxMzcsIDY3MTQ2LCA2NzE1MiwgNjcxNTgsIDY3MTY0LCA2NzE2OSwgNjcxNzYsIAorICAgIDY3MTgyLCA2NzE5MCwgNjcxOTcsIDEzMTU2LCA2NzIwMywgNjcyMDksIDY3MjEzLCAxNTAwOSwgNjcyMTcsIDY3MjIyLCAKKyAgICA2NzIzMiwgNjcyNDEsIDY3MjQ3LCA2NzI1MywgNjcyNjEsIDY3MjY4LCA2NzI3MiwgNjcyNzYsIDY3MjgyLCA2NzI5MCwgCisgICAgNjcyOTcsIDY3MzAzLCA2NzMxNCwgNjczMTgsIDY3MzIyLCA2NzMyNiwgNjczMjksIDY3MzM1LCA2NzM0MCwgNjczNDUsIAorICAgIDY3MzQ5LCA2NzM1MywgNjczNjIsIDY3MzcwLCA2NzM3NywgNjczODMsIDY3MzkwLCAyNTE1MiwgNDE2MzUsIDY3Mzk1LCAKKyAgICA2NzQwMywgNjc0MDcsIDY3NDExLCA2NzQxNCwgNjc0MjIsIDY3NDI5LCA2NzQzNSwgNjc0NDQsIDY3NDUyLCA2NzQ1OCwgCisgICAgNjc0NjMsIDY3NDY3LCA2NzQ3MiwgNjc0NzYsIDY3NDgwLCA2NzQ4NSwgNjc0OTQsIDY3NDk4LCA2NzUwNSwgMzkzMDUsIAorICAgIDY3NTA5LCA2NzUxNSwgNjc1MTksIDY3NTI3LCA2NzUzMywgNjc1MzgsIDY3NTQ5LCA2NzU1NywgNjc1NjMsIDIzNzIwLCAKKyAgICA2NzU3MiwgNjc1NzksIDY3NTg2LCA2NzU5MywgNjc2MDAsIDY3NjA3LCA0NDg4MSwgMTM4NTEsIDY3NjE0LCA2NzYyMSwgCisgICAgNjc2MjYsIDM2NTE3LCA2NDA0LCA2NzYzMiwgNjc2MzcsIDY3NjQyLCA2NzY0OCwgNjc2NTQsIDY3NjYwLCA2NzY2NSwgCisgICAgNjc2NzAsIDY3Njc1LCA2NzY4MCwgNjc2ODYsIDY3NjkxLCA2NzY5NywgNjc3MDIsIDY3NzA4LCA2NzcxMywgNjc3MTgsIAorICAgIDY3NzIzLCA2NzcyOCwgNjc3MzMsIDY3NzM4LCA2Nzc0MywgNjc3NDksIDY3NzU0LCA2Nzc2MCwgNjc3NjUsIDY3NzcwLCAKKyAgICA2Nzc3NSwgNjc3ODAsIDY3Nzg1LCA2Nzc5MCwgNjc3OTYsIDY3ODAxLCA2NzgwNiwgNjc4MTEsIDY3ODE2LCA2NzgyMSwgCisgICAgNjc4MjYsIDY3ODMxLCA2NzgzNiwgNjc4NDEsIDY3ODQ2LCA2Nzg1MiwgNjc4NTcsIDY3ODYyLCA2Nzg2NywgNjc4NzIsIAorICAgIDY3ODc3LCA2Nzg4MiwgNjc4ODcsIDY3ODkyLCA2Nzg5OCwgNjc5MDMsIDY3OTA4LCA2NzkxMywgNjc5MTgsIDY3OTIzLCAKKyAgICA2NzkyOCwgNjc5MzMsIDY3OTM4LCA2Nzk0MywgNjc5NDgsIDY3OTUzLCA2Nzk1OCwgNjc5NjQsIDE4MzksIDI0MCwgNDAwNjcsIAorICAgIDY3OTY5LCA2Nzk3MiwgNjc5NzcsIDY3OTgxLCA2Nzk4NCwgMzM5MSwgNjc5ODksIDY3OTk0LCA2Njk1NywgNjgwMDUsIAorICAgIDY4MDE1LCA2ODAyMiwgNjgwMzEsIDY4MDQ3LCA2ODA1NiwgNjgwNjYsIDY4MDc2LCA2ODA4NSwgNjgwOTMsIDY4MTA3LCAKKyAgICA2ODExNSwgNjgxMTksIDY4MTIyLCA2ODEyOSwgNjgxMzUsIDY4MTQ2LCA2ODE1OCwgNjgxNjksIDY4MTc4LCA2ODE4NSwgCisgICAgMTI3NywgMjQzODYsIDY4MTk1LCAyNjEwLCA2ODE5OSwgNjgyMDgsIDExMTksIDE4MjM2LCAyMTc5NCwgNjgyMTYsIDY4MjI0LCAKKyAgICA2ODIzOCwgNjgyNTEsIDY4MjU1LCA2ODI2MCwgNjgyNjUsIDY4MjcwLCA2ODI3NiwgNjgyODIsIDY4Mjg3LCA4NzYyLCAKKyAgICA2ODI5MiwgNjgyOTYsIDY4MzA0LCAxMTY0NiwgNjgzMDksIDY4MzE1LCA2ODMyNCwgNjgzMzIsIDE3MjEsIDExNjU4LCA4MzUsIAorICAgIDYzNDAsIDY4MzM2LCA2ODM0NSwgNjgzNTUsIDI0MDAsIDI4MjcxLCA2ODM2NCwgNjgzNzAsIDE3NzczLCAyODI4NiwgCisgICAgNjgzNzYsIDQxMDQsIDEyMDMyLCA2ODM4MiwgNjgzODksIDYzNzU5LCA2ODM5MywgNjgzOTcsIDY4NDAzLCA2ODQwOCwgCisgICAgNjg0MTMsIDQxMjgsIDE4MCwgMTQ5MTcsIDY4NDE4LCA2ODQzMCwgNjg0MzQsIDY4NDQwLCAyOTA0OSwgNjg0NDQsIDEyMDIwLCAKKyAgICAyNzUwLCA0LCA2ODQ0OSwgNjg0NTksIDY4NDcwLCA2ODQ3NiwgNjg0ODcsIDY4NDk0LCA2ODUwMCwgNjg1MDYsIDY4NTE0LCAKKyAgICA2ODUyMSwgNjg1MjcsIDY4NTM3LCA2ODU0NywgNjg1NTcsIDY4NTY2LCAyNDU3NCwgMTI4OSwgNjg1NzEsIDY4NTc1LCAKKyAgICA2ODU3OSwgNjg1ODUsIDY4NTg5LCAyNzczLCAyNzc5LCA4NzU5LCAyMjc1LCA2ODU5MywgNjg1OTcsIDY4NjA2LCA2ODYxNCwgCisgICAgNjg2MjUsIDY4NjMzLCA2ODY0MSwgNjg2NDcsIDY4NjUyLCA2ODY2MywgNjg2NzQsIDY4NjgyLCA2ODY4OCwgMTAxNzksIAorICAgIDY4NjkzLCA2ODcwMSwgNjg3MDUsIDY4NzA5LCA2ODcxNCwgNjg3MTgsIDY4NzMwLCAyOTQ1NiwgMTU5NzcsIDY4NzM3LCAKKyAgICA2ODc0NywgNjg3NTMsIDY4NzU5LCAxMDI4MSwgNjg3NjksIDY4NzgwLCA2ODc5MCwgNjg3OTksIDY4ODAzLCA2ODgxMCwgCisgICAgMTEyMSwgMjYwMywgNjg4MjAsIDY4ODI1LCA2ODgzMywgNjg4NDEsIDY4ODUyLCA2ODg1OSwgNjg4NzMsIDE0ODQ2LCA0NTMsIAorICAgIDY4ODgzLCA2ODg4NywgNjg4OTUsIDY4OTA0LCA2ODkxMiwgNjg5MTgsIDY4OTMyLCA2ODkzOSwgNjg5NDUsIDY4OTU0LCAKKyAgICA2ODk2MSwgNjg5NzEsIDY4OTc5LCA2ODk4NiwgNjg5OTQsIDY5MDAxLCAzOTQxLCAxNDMsIDY5MDA5LCA2OTAyMCwgNjkwMjQsIAorICAgIDY5MDM2LCA2OTA0MiwgMTIyMDIsIDE2NywgNjkwNDcsIDY5MDUyLCA2OTA1NiwgNjkwNjMsIDY5MDY5LCA2OTA3NywgCisgICAgNjkwODQsIDkwNjUsIDY5MDkxLCA2OTEwMCwgNjkxMDgsIDQwMTAsIDY5MTIxLCA0MDI3LCA2OTEyNSwgMjgyMywgNDk0LCAKKyAgICA2OTEzMCwgNjkxNDMsIDY5MTQ4LCAxODM4LCA3MzYsIDY5MTUyLCA0MDMxLCA2OTE2MCwgNjkxNjYsIDY5MTcwLCA4MTMsIAorICAgIDY5MTgwLCA2OTE4OSwgNjkxOTQsIDE1NzM4LCAxNTc0NSwgNDgyNDMsIDY5MTk4LCA0MDU2LCAzOTUxLCAxMzczNCwgCisgICAgNjkyMDYsIDY5MjEzLCA2OTIxOCwgMjQ2MzgsIDY5MjIyLCA2OTIyOSwgNjkyMzUsIDY5MjQwLCA2OTI0NSwgMTU3NTgsIAorICAgIDE2MSwgNjkyNTAsIDY5MjYyLCA2OTI2OCwgNjkyNzYsIDI4NDAsIDE3NTMsIDY5Mjg0LCA2OTI4NiwgNjkyOTEsIDY5Mjk2LCAKKyAgICA2OTMwMSwgNjkzMDcsIDY5MzEyLCA2OTMxNywgNjkzMjIsIDY5MzI3LCA2OTMzMiwgNjkzMzcsIDY5MzQzLCA2OTM0OCwgCisgICAgNjkzNTMsIDY5MzU4LCA2OTM2MywgNjkzNjgsIDY5MzczLCA2OTM3OCwgNjkzODMsIDY5Mzg5LCA2OTM5NCwgNjkzOTksIAorICAgIDY5NDA0LCA2OTQxMCwgNjk0MTUsIDY5NDIxLCA2OTQyNiwgNjk0MzEsIDY5NDM2LCA2OTQ0MSwgNjk0NDYsIDY5NDUxLCAKKyAgICA2OTQ1NiwgNjk0NjIsIDY5NDY3LCA2OTQ3MywgNjk0NzgsIDY5NDgzLCA2OTQ4OCwgNjk0OTMsIDY5NDk4LCA2OTUwMywgCisgICAgNjk1MDgsIDY5NTEzLCA2OTUxOSwgNjk1MjUsIDY5NTMwLCA2OTUzNSwgNjk1NDEsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIAorICAgIDY5NTU5LCA2OTU2NSwgNjk1NjksIDY5NTc1LCA2OTU4MCwgNjk1ODUsIDY5NTkxLCA2OTU5NiwgNjk2MDAsIDY5NjA1LCAKKyAgICA2OTYxMCwgNjk2MTQsIDY5NjE3LCA2OTYxOSwgNjk2MjMsIDY5NjI2LCA2OTYzMSwgNjk2MzUsIDY5NjQwLCA2OTY0NCwgCisgICAgNjk2NDgsIDY5NjUyLCA2OTY2MSwgNjk2NjUsIDM0MDk3LCA2OTY2OCwgMzQxMDIsIDY5Njc1LCA2OTY4MCwgMzQxMDcsIAorICAgIDY5Njg5LCA2OTY5OCwgMzQxMTMsIDY5NzAzLCAzNDExOCwgNjk3MTIsIDY5NzE3LCAxMjIzNCwgNjk3MjEsIDY5NzI2LCAKKyAgICA2OTczMSwgMzQxMjMsIDY5NzM1LCA0MzExNSwgNjk3MzksIDY5NzQyLCA2OTc0NiwgODQzMCwgNjk3NTIsIDY5NzU3LCAKKyAgICA2OTc2MSwgMzgyNywgMzQxMjgsIDY5NzY0LCA2OTc2OCwgNjk3NzEsIDY5Nzc2LCA2OTc4MCwgNjk3ODYsIDY5Nzk0LCAKKyAgICA2OTgwNywgNjk4MTYsIDY5ODIyLCA2OTgyNywgNjk4MzMsIDY5ODM3LCA2OTg0MywgNjk4NTEsIDY5ODU2LCA2OTg2MCwgCisgICAgNjk4NjcsIDY5ODczLCA2OTg4MSwgNjk4OTAsIDY5ODk4LCAzNDEzMSwgNjk5MDUsIDY5OTE1LCA2OTkyOCwgNjk5MzMsIAorICAgIDY5OTM4LCA2OTk0MiwgNjk5NTEsIDY5OTU3LCA2OTk2NCwgNjk5NzUsIDY5OTg3LCA2OTk5NCwgNzAwMDMsIDcwMDEyLCAKKyAgICA3MDAyMSwgNzAwMjgsIDcwMDM0LCA3MDA0MSwgNzAwNDksIDcwMDU2LCA3MDA2NCwgNzAwNzMsIDcwMDgxLCA3MDA4OCwgCisgICAgNzAwOTYsIDcwMTA1LCA3MDExMywgNzAxMjIsIDcwMTMyLCA3MDE0MSwgNzAxNDksIDcwMTU2LCA3MDE2NCwgNzAxNzMsIAorICAgIDcwMTgxLCA3MDE5MCwgNzAyMDAsIDcwMjA5LCA3MDIxNywgNzAyMjYsIDcwMjM2LCA3MDI0NSwgNzAyNTUsIDcwMjY2LCAKKyAgICA3MDI3NiwgNzAyODUsIDcwMjkzLCA3MDMwMCwgNzAzMDgsIDcwMzE3LCA3MDMyNSwgNzAzMzQsIDcwMzQ0LCA3MDM1MywgCisgICAgNzAzNjEsIDcwMzcwLCA3MDM4MCwgNzAzODksIDcwMzk5LCA3MDQxMCwgNzA0MjAsIDcwNDI5LCA3MDQzNywgNzA0NDYsIAorICAgIDcwNDU2LCA3MDQ2NSwgNzA0NzUsIDcwNDg2LCA3MDQ5NiwgNzA1MDUsIDcwNTE1LCA3MDUyNiwgNzA1MzYsIDcwNTQ3LCAKKyAgICA3MDU1OSwgNzA1NzAsIDcwNTgwLCA3MDU4OSwgNzA1OTcsIDcwNjA0LCA3MDYxMiwgNzA2MjEsIDcwNjI5LCA3MDYzOCwgCisgICAgNzA2NDgsIDcwNjU3LCA3MDY2NSwgNzA2NzQsIDcwNjg0LCA3MDY5MywgNzA3MDMsIDcwNzE0LCA3MDcyNCwgNzA3MzMsIAorICAgIDcwNzQxLCA3MDc1MCwgNzA3NjAsIDcwNzY5LCA3MDc3OSwgNzA3OTAsIDcwODAwLCA3MDgwOSwgNzA4MTksIDcwODMwLCAKKyAgICA3MDg0MCwgNzA4NTEsIDcwODYzLCA3MDg3NCwgNzA4ODQsIDcwODkzLCA3MDkwMSwgNzA5MTAsIDcwOTIwLCA3MDkyOSwgCisgICAgNzA5MzksIDcwOTUwLCA3MDk2MCwgNzA5NjksIDcwOTc5LCA3MDk5MCwgNzEwMDAsIDcxMDExLCA3MTAyMywgNzEwMzQsIAorICAgIDcxMDQ0LCA3MTA1MywgNzEwNjMsIDcxMDc0LCA3MTA4NCwgNzEwOTUsIDcxMTA3LCA3MTExOCwgNzExMjgsIDcxMTM5LCAKKyAgICA3MTE1MSwgNzExNjIsIDcxMTc0LCA3MTE4NywgNzExOTksIDcxMjEwLCA3MTIyMCwgNzEyMjksIDcxMjM3LCA3MTI0NCwgCisgICAgNzEyNTIsIDcxMjYxLCA3MTI2OSwgNzEyNzgsIDcxMjg4LCA3MTI5NywgNzEzMDUsIDcxMzE0LCA3MTMyNCwgNzEzMzMsIAorICAgIDcxMzQzLCA3MTM1NCwgNzEzNjQsIDcxMzczLCA3MTM4MSwgNzEzOTAsIDcxNDAwLCA3MTQwOSwgNzE0MTksIDcxNDMwLCAKKyAgICA3MTQ0MCwgNzE0NDksIDcxNDU5LCA3MTQ3MCwgNzE0ODAsIDcxNDkxLCA3MTUwMywgNzE1MTQsIDcxNTI0LCA3MTUzMywgCisgICAgNzE1NDEsIDcxNTUwLCA3MTU2MCwgNzE1NjksIDcxNTc5LCA3MTU5MCwgNzE2MDAsIDcxNjA5LCA3MTYxOSwgNzE2MzAsIAorICAgIDcxNjQwLCA3MTY1MSwgNzE2NjMsIDcxNjc0LCA3MTY4NCwgNzE2OTMsIDcxNzAzLCA3MTcxNCwgNzE3MjQsIDcxNzM1LCAKKyAgICA3MTc0NywgNzE3NTgsIDcxNzY4LCA3MTc3OSwgNzE3OTEsIDcxODAyLCA3MTgxNCwgNzE4MjcsIDcxODM5LCA3MTg1MCwgCisgICAgNzE4NjAsIDcxODY5LCA3MTg3NywgNzE4ODYsIDcxODk2LCA3MTkwNSwgNzE5MTUsIDcxOTI2LCA3MTkzNiwgNzE5NDUsIAorICAgIDcxOTU1LCA3MTk2NiwgNzE5NzYsIDcxOTg3LCA3MTk5OSwgNzIwMTAsIDcyMDIwLCA3MjAyOSwgNzIwMzksIDcyMDUwLCAKKyAgICA3MjA2MCwgNzIwNzEsIDcyMDgzLCA3MjA5NCwgNzIxMDQsIDcyMTE1LCA3MjEyNywgNzIxMzgsIDcyMTUwLCA3MjE2MywgCisgICAgNzIxNzUsIDcyMTg2LCA3MjE5NiwgNzIyMDUsIDcyMjE1LCA3MjIyNiwgNzIyMzYsIDcyMjQ3LCA3MjI1OSwgNzIyNzAsIAorICAgIDcyMjgwLCA3MjI5MSwgNzIzMDMsIDcyMzE0LCA3MjMyNiwgNzIzMzksIDcyMzUxLCA3MjM2MiwgNzIzNzIsIDcyMzgzLCAKKyAgICA3MjM5NSwgNzI0MDYsIDcyNDE4LCA3MjQzMSwgNzI0NDMsIDcyNDU0LCA3MjQ2NiwgNzI0NzksIDcyNDkxLCA3MjUwNCwgCisgICAgNzI1MTgsIDcyNTMxLCA3MjU0MywgNzI1NTQsIDcyNTY0LCA3MjU3MywgNzI1ODEsIDcyNTg4LCA3MjU5MywgODI2NiwgCisgICAgNzI2MDAsIDM0MTQxLCA3MjYwNSwgNzI2MTAsIDM0MTQ2LCA3MjYxNiwgMjE5MDIsIDM0MTUxLCA3MjYyMSwgNzI2MjcsIAorICAgIDcyNjM1LCA3MjY0MSwgNzI2NDcsIDcyNjU0LCA3MjY2MSwgNzI2NjYsIDcyNjcwLCA3MjY3NCwgNzI2NzcsIDcyNjgxLCAKKyAgICA3MjY5MCwgNzI2OTksIDcyNzA3LCA3MjcxMywgNzI3MjUsIDcyNzM2LCA3Mjc0MCwgMzExNiwgODI0MSwgNzI3NDUsIAorICAgIDcyNzQ4LCA3Mjc1MCwgNzI3NTQsIDcyNzU4LCA3Mjc2MiwgNzI3NjgsIDcyNzczLCAyNzEzNiwgNzI3NzgsIDcyNzgyLCAKKyAgICA3Mjc4NSwgNzI3OTAsIDcyNzk0LCA3MjgwMSwgNzI4MDcsIDcyODExLCA2MzYwLCA3MjgxNSwgMzQxNjgsIDcyODIwLCAKKyAgICA3MjgyNywgNzI4MzYsIDcyODQ0LCA3Mjg1NSwgNzI4NjMsIDcyODcyLCA3Mjg4MCwgNzI4ODcsIDcyODk0LCA3MjkwMCwgCisgICAgNzI5MTEsIDM0MTczLCA3MjkxNiwgNzI5MjcsIDcyOTM5LCA3Mjk0NywgNzI5NTgsIDcyOTY3LCA3Mjk3OCwgNzI5ODMsIAorICAgIDcyOTkxLCAyNTc2LCA3Mjk5NiwgMzU5NDEsIDczMDA5LCA3MzAxMywgNzMwMjUsIDczMDMzLCA3MzAzOCwgNzMwNDYsIAorICAgIDE4NDM3LCA3MzA1NywgNzMwNjMsIDczMDcwLCA3MzA3OCwgNzMwODQsIDM0MTgzLCA3MzA4OSwgNDA1MCwgNjEyMzMsIAorICAgIDczMDk2LCA3MzA5OSwgNzMxMDcsIDczMTIwLCA3MzEzMywgNzMxNDYsIDczMTU5LCA3MzE2NiwgNzMxNzcsIDczMTg2LCAKKyAgICA0NDY5OCwgNDQ3MDMsIDczMTkxLCA3MzE5NSwgNzMyMDMsIDczMjEwLCA3MzIxOSwgNzMyMjcsIDczMjMzLCA3MzI0MiwgCisgICAgNzMyNTAsIDczMjU4LCA3MzI2MiwgNzMyNzEsIDczMjgwLCA3MzI5MCwgNzMzMDMsIDczMzE2LCA3MzMyNiwgMzQxODgsIAorICAgIDczMzMyLCA3MzMzOSwgNzMzNDUsIDczMzUxLCAzNDE5NCwgNzMzNTYsIDczMzU5LCA3MzM2MywgNzMzNzEsIDczMzgwLCAKKyAgICA0NDQzNiwgNzMzODgsIDczMzk3LCA3MzQwNSwgNzM0MTIsIDczNDIwLCA3MzQzMCwgNzM0MzksIDczNDQ4LCA3MzQ1NywgCisgICAgNzM0NjUsIDczNDc2LCA3MzQ5MSwgNzM1MDEsIDk2NTYsIDIyNTcyLCA3MzUxMCwgNzM1MTUsIDczNTIwLCA3MzUyNCwgCisgICAgNzM1MjksIDczNTMzLCA3MzUzOCwgNzM1NDQsIDczNTQ5LCA3MzU1NCwgNzM1NjAsIDczNTY1LCA3MzU3MCwgMjI1MzcsIAorICAgIDczNTc1LCA3MzU4MiwgNzM1OTAsIDczNTk4LCA3MzYwNiwgNzM2MTEsIDczNjE4LCA3MzYyNSwgNzM2MzAsIDIyNTMsIAorICAgIDczNjM0LCA3MzYzOCwgNzM2NDYsIDczNjU0LCAzNDIxMSwgNzM2NjAsIDczNjY2LCA3MzY3OCwgNzM2ODQsIDczNjkxLCAKKyAgICA3MzY5NSwgNzM3MDIsIDczNzA3LCA3MzcxNCwgNzM3MjAsIDczNzI3LCA3MzczOCwgNzM3NDgsIDczNzU4LCA3Mzc3MCwgCisgICAgNzM3NzYsIDczNzg0LCA3Mzc5NCwgNzM4MDQsIDM0MjM4LCA3MzgxMywgNzM4MjIsIDczODI4LCA3Mzg0MCwgNzM4NTEsIAorICAgIDczODU4LCA3Mzg2MywgNzM4NjcsIDczODc1LCA3Mzg4MSwgNzM4ODYsIDczODkxLCA3Mzg5OCwgNzM5MDYsIDczOTE4LCAKKyAgICA3MzkyOCwgNzM5MzcsIDczOTQ2LCA3Mzk1MywgMzU3OTQsIDI0OTUzLCA3Mzk1OSwgNzM5NjQsIDczOTY4LCA3Mzk3MiwgCisgICAgNzM5NzcsIDczOTg1LCA3Mzk5MSwgNzQwMDIsIDc0MDE1LCA3NDAyMCwgNzQwMjcsIDM0MjQzLCA3NDAzMiwgNzQwNDQsIAorICAgIDc0MDUzLCA3NDA2MSwgNzQwNzEsIDc0MDgyLCA3NDA5NSwgNzQxMDIsIDc0MTExLCA3NDEyMCwgNzQxMjgsIDc0MTMzLCAKKyAgICA3NDEzOSwgMTQ4NSwgNzQxNDQsIDc0MTQ5LCA3NDE1NCwgNzQxNTksIDc0MTY1LCA3NDE3MCwgNzQxNzUsIDc0MTgxLCAKKyAgICA3NDE4NywgNzQxOTIsIDc0MTk2LCA3NDIwMSwgNzQyMDYsIDc0MjExLCA2MTc2OSwgNzQyMTYsIDc0MjIxLCA3NDIyNiwgCisgICAgNzQyMzEsIDc0MjM3LCA3NDI0MywgNzQyNDgsIDc0MjUyLCA3NDI1NywgNzQyNjIsIDc0MjY3LCA3NDI3MywgNzQyNzgsIAorICAgIDc0Mjg0LCA3NDI4OSwgNzQyOTQsIDc0Mjk5LCA3NDMwNCwgNzQzMDgsIDc0MzE0LCA3NDMxOSwgNzQzMjgsIDc0MzMzLCAKKyAgICA3NDMzOCwgNzQzNDMsIDc0MzQ4LCA3NDM1MiwgNzQzNTksIDc0MzY1LCA0MzE2LCAxODA4MywgMzA4MSwgNzQzNzAsIAorICAgIDc0Mzc0LCA3NDM3OSwgNzQzODMsIDc0Mzg3LCA3NDM5MSwgNDg0OTgsIDc0Mzk1LCA3NDMyMCwgNzQzOTcsIDc0NDA3LCAKKyAgICAzNDI1MiwgNzQ0MTAsIDc0NDE1LCA3NDQyNCwgNzQ0MzAsIDYzMjksIDM0MjU3LCA3NDQzNCwgNzQ0NDAsIDc0NDQ1LCAKKyAgICA3NDQ1MSwgNzQ0NTYsIDc0NDYwLCA3NDQ2NywgNzQ0NzIsIDc0NDgyLCA3NDQ5MSwgNzQ0OTUsIDc0NTAxLCA3NDUwNywgCisgICAgNzQ1MTMsIDc0NTE3LCA3NDUyNSwgNzQ1MzIsIDc0NTQwLCA3NDU0OCwgMzQyNjIsIDc0NTU1LCA3NDU1OCwgNzQ1NjUsIAorICAgIDc0NTcxLCA3NDU3NiwgNzQ1ODAsIDc0NTg2LCA3NDU5MywgNzQ1OTgsIDc0NjAyLCA3NDYxMSwgNzQ2MTksIDc0NjI1LCAKKyAgICA3NDYzMCwgMzQyNjcsIDc0NjM3LCA3NDY0NCwgNzQ2NTAsIDc0NjU1LCA3NDY2MSwgNzQ2NjgsIDc0Njc0LCAyMjI5MywgCisgICAgMjg3MzYsIDc0NjgwLCA3NDY4NSwgNzQ2OTEsIDc0Njk1LCA3NDcwNywgNzQzNTMsIDc0MzYwLCAyMjQ2OSwgNzQ3MTcsIAorICAgIDc0NzIyLCA3NDcyOSwgNzQ3MzUsIDc0NzQyLCA3NDc0OCwgNzQ3NTksIDc0NzY0LCA3NDc3MiwgOTM2MSwgNzQ3NzcsIAorICAgIDc0NzgwLCA3NDc4NiwgNzQ3OTAsIDc0Nzk0LCA3NDc5NywgNzQ4MDMsIDM0MDEwLCA0MzE3LCAxMDU5LCAxNDEzMCwgCisgICAgNzQ4MTAsIDc0ODE2LCA3NDgyMiwgNzQ4MjgsIDc0ODM0LCA3NDg0MCwgNzQ4NDYsIDc0ODUyLCA3NDg1OCwgNzQ4NjMsIAorICAgIDc0ODY4LCA3NDg3MywgNzQ4NzgsIDc0ODgzLCA3NDg4OCwgNzQ4OTMsIDc0ODk4LCA3NDkwMywgNzQ5MDgsIDc0OTEzLCAKKyAgICA3NDkxOCwgNzQ5MjMsIDc0OTI5LCA3NDkzNCwgNzQ5MzksIDc0OTQ1LCA3NDk1MCwgNzQ5NTUsIDc0OTYxLCA3NDk2NywgCisgICAgNzQ5NzMsIDc0OTc5LCA3NDk4NSwgNzQ5OTEsIDc0OTk3LCA3NTAwMywgNzUwMDksIDc1MDE0LCA3NTAxOSwgNzUwMjUsIAorICAgIDc1MDMwLCA3NTAzNSwgNzUwNDEsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDYxLCA3NTA2NiwgNzUwNzEsIDc1MDc2LCAKKyAgICA3NTA4MSwgNzUwODYsIDc1MDkxLCA3NTA5NiwgNzUxMDEsIDc1MTA3LCA3NTExMiwgNzUxMTcsIDc1MTIyLCA3NTEyOCwgCisgICAgNzUxMzMsIDc1MTM4LCA3NTE0MywgNzUxNDgsIDc1MTU0LCA3NTE1OSwgNzUxNjQsIDc1MTY5LCA3NTE3NCwgNzUxNzksIAorICAgIDc1MTg0LCA3NTE4OSwgNzUxOTQsIDc1MTk5LCA3NTIwNCwgNzUyMDksIDc1MjE0LCA3NTIxOSwgNzUyMjQsIDc1MjI5LCAKKyAgICA3NTIzNCwgNzUyMzksIDc1MjQ0LCA3NTI0OSwgNzUyNTUsIDc1MjYwLCA3NTI2NSwgNzUyNzAsIDc1Mjc1LCA3NTI4MCwgCisgICAgNzUyODUsIDc1MjkwLCAxODcxLCAxNDcsIDc1Mjk1LCA3NTI5OSwgNzUzMDMsIDc1MzA4LCA3NTMxNiwgNzUzMjAsIDc1MzI3LCAKKyAgICA3NTMzNSwgNzUzMzksIDc1MzUyLCA3NTM2MCwgNzUzNjUsIDc1MzcwLCAyNzU0NSwgNzUzNzQsIDc1Mzc5LCA3NTM4MywgCisgICAgNzUzODgsIDc1MzkyLCA3NTQwMCwgNzU0MDQsIDIxOTEwLCA3NTQwOSwgNzU0MTMsIDY0MDUwLCA3NTQxNywgNzU0MjAsIAorICAgIDc1NDI4LCA3NTQzNiwgNzU0NDQsIDc1NDQ5LCA3NTQ1NCwgNzU0NjEsIDc1NDY3LCA3NTQ3MywgNzU0NzgsIDc1NDg1LCAKKyAgICA3NTQ5MCwgNzU0OTgsIDY4MjQzLCA3NTUwNSwgNzU1MTAsIDc1NTE1LCA3NTUxOSwgMTIzMDEsIDc1NTIzLCA3NTUyOCwgCisgICAgNzU1MzMsIDc1NTM3LCA3NTU0MCwgNzU1NDYsIDc1NTUwLCA3NTU2MCwgNzU1NjksIDc1NTczLCA3NTU3NiwgNzU1ODAsIAorICAgIDc1NTg3LCA3NTYwMCwgNzU2MDYsIDc1NjE0LCA3NTYyMywgNzU2MzQsIDc1NjQ1LCA3NTY1NiwgNzU2NjcsIDc1Njc2LCAKKyAgICA3NTY4MiwgNzU2OTEsIDc1Njk5LCA3NTcwOSwgNzU3MjIsIDc1NzI5LCA3NTc0MCwgNzU3NDYsIDc1NzUxLCA3NTc1NiwgCisgICAgNzU3NjIsIDc1NzY4LCA3NTc3OCwgNzU3ODcsIDc0MDM0LCA3NTc5NSwgNzU4MDEsIDc1ODA5LCA3NTgxNSwgNzU4MjIsIAorICAgIDc1ODMwLCA3NTgzMywgNzU4MzcsIDc1ODQxLCA3NTg0NCwgNzU4NTAsIDc1ODU2LCA3NTg2NCwgNzU4NzYsIDc1ODg4LCAKKyAgICA3NTg5NSwgNzU5MDAsIDc1OTA0LCA3NTkxNSwgNzU5MjMsIDc1OTMwLCA3NTk0MiwgNzU5NTAsIDc1OTU4LCA3NTk2NSwgCisgICAgNzU5NzEsIDc1OTgxLCA3NTk5MCwgNzU5OTUsIDc2MDA1LCA3NjAxNCwgNDM3MjgsIDc2MDIxLCA3NjAyNSwgNzYwMzAsIAorICAgIDc2MDM4LCA3NjA0NSwgNzYwNTEsIDc2MDU1LCA3NjA2NSwgNzYwNzYsIDc2MDg0LCA3NjA5MSwgNzYxMDMsIDc2MTE1LCAKKyAgICA3NjEyNCwgNzI5OTksIDc2MTMxLCA3NjE0MSwgNzYxNTIsIDc2MTY2LCA3NjE3NCwgNzYxODQsIDc2MTkxLCA3NjE5OSwgCisgICAgNzYyMTIsIDc2MjI0LCA3NjIzMywgNzYyNDEsIDc2MjUxLCA3NjI2MiwgNzYyNzQsIDc2MjgzLCA3NjI5MywgNzYzMDAsIAorICAgIDc2MzA5LCA3NjMyNCwgNzYzMzIsIDc2MzQyLCA3NjM1MSwgNzYzNTksIDc2MzcyLCA2MTIwMywgNzYzODcsIDc2Mzk3LCAKKyAgICA3NjQwNiwgNzY0MTgsIDc2NDI4LCA3NjQ0MCwgNzY0NTEsIDc2NDYyLCA3NjQ3MywgNzY0ODMsIDc2NDk0LCA3NjUwMiwgCisgICAgNzY1MDgsIDc2NTE4LCA3NjUyNiwgNzY1MzIsIDMwNDAwLCA3NjUzNywgNzY1NDMsIDc2NTQ4LCA3NjU1NSwgMTAxOTMsIAorICAgIDE4NDU3LCA3NjU2MSwgNzY1NzAsIDc2NTc1LCA3NjU3OSwgNzY1ODYsIDc2NTkyLCA3NjU5NywgNzY2MDIsIDc2NjEwLCAKKyAgICA3NjYxOCwgNzY2MjIsIDc2NjI1LCA3NjYyOCwgNzY2MzAsIDc2NjM3LCA3NjY0MywgNzY2NTQsIDc2NjU5LCA3NjY2MywgCisgICAgNzY2NzAsIDc2Njc2LCA3NjY4MSwgNzY2ODksIDY4NzgyLCA2ODc5MiwgNzY2OTUsIDc2NzAyLCA3NjcxMiwgMTExNjYsIAorICAgIDc2NzE5LCA3NjcyNCwgMzA2MTEsIDc2NzMzLCA3NjczOCwgNzY3NDUsIDc2NzU1LCA3Njc2MywgNzY3NzEsIDc2NzgwLCAKKyAgICA3Njc4NiwgNzY3OTIsIDc2Nzk5LCA3NjgwNiwgNzY4MTEsIDc2ODE1LCA3NjgyMywgNzY4MjgsIDc2ODMzLCA3Njg0MiwgCisgICAgNzY4NTAsIDc2ODU3LCA3Njg2MiwgNzY4NjYsIDc2ODc1LCA3Njg4MSwgNzY4ODQsIDc2ODg4LCA3Njg5NywgNzY5MDcsIAorICAgIDc1MzQ3LCA3NjkxNiwgNzY5MjQsIDc2OTI4LCA3NjkzNCwgNzY5NDUsIDc2OTU1LCAxODQ2NiwgNzY5NjYsIDc2OTc0LCAKKyAgICA3Njk4MiwgMTg0NzgsIDc2OTg5LCA3Njk5MywgNzcwMDIsIDc3MDA5LCA3NzAxMiwgMjg2MTQsIDc3MDE1LCA3NzAxOSwgCisgICAgNzcwMjQsIDc3MDQxLCA3NzA1MywgMTExMjQsIDc3MDY1LCA3NzA3MCwgNzcwNzUsIDc3MDgwLCAyMTk4MywgNzcwODQsIAorICAgIDc3MDg5LCA3NzA5NCwgNzcxMDAsIDc3MTA1LCA2MDA4LCA3NzExMCwgMjE5ODcsIDc3MTE1LCA3NzEyMCwgNzcxMjYsIAorICAgIDc3MTMzLCA3NzEzOCwgNzcxNDMsIDc3MTQ5LCA3NzE1NSwgNzcxNjEsIDc3MTY2LCA3NzE3MiwgNzcxNzYsIDc3MTkwLCAKKyAgICA3NzE5OCwgNzcyMDYsIDc3MjEyLCA3NzIxNywgNzcyMjQsIDc3MjM0LCA3NzI0MywgNzcyNDgsIDc3MjUzLCA3NzI1OCwgCisgICAgNzcyNjYsIDc3MjcxLCA3NzI3NywgNzcyODIsIDc3MjkxLCA2Mjg0OCwgNzcyOTYsIDc3Mjk5LCA3NzMxNywgNzczMzYsIAorICAgIDc3MzQ5LCA3NzM2MywgNzczNzksIDc3Mzg2LCA3NzM5MywgNzc0MDIsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI3LCAKKyAgICA3NzQzMywgNzc0MzksIDc3NDQ3LCA3NzQ1MywgNzc0NTgsIDc3NDYzLCA3NzQ3OSwgMTExMzcsIDc3NDkzLCA3NzUwMCwgCisgICAgNzc1MDgsIDc3NTE0LCA3NzUxOCwgNzc1MjEsIDc3NTI2LCA3NzUzMSwgNzc1MzgsIDc3NTQzLCA3NzU1MiwgNzc1NTcsIAorICAgIDc3NTYzLCA3NzU2OSwgNzc1NzgsIDc3NTg3LCA3NzU5MiwgNzc1OTYsIDc3NjA0LCA3NzYxMywgMTIzMzAsIDc3NjIyLCAKKyAgICA3NzYzMCwgNzc2MzYsIDc3NjQxLCA3NzY0OCwgNzc2NTQsIDEyMzQxLCA3NzY1OSwgNzc2NjIsIDc3NjY3LCAzNDI5NCwgCisgICAgNzc2NzcsIDc3Njg2LCA3NzY5MSwgNzc2OTcsIDc3NzAyLCA3NzcxMCwgNzc3MTcsIDc3NzI4LCA3NzczOCwgNzc3NDMsIAorICAgIDc3NzUxLCA2ODE3MSwgNzc3NTYsIDc3NzYyLCA3Nzc2NywgNzc3NzQsIDc3NzgzLCA3Nzc5MSwgNzc3OTcsIDc3ODAzLCAKKyAgICA3NzgxMCwgNzc4MTYsIDc3ODIwLCAxNzg3OSwgMzA5MCwgNzc4MjUsIDc3ODI5LCA3NzgzMywgNzc4MzksIDc3ODQ4LCAKKyAgICA3Nzg1NCwgNzc4NjEsIDc3ODY1LCA3Nzg4NiwgNzc5MDgsIDc3OTI0LCA3Nzk0MSwgNzc5NjAsIDc3OTY5LCA3Nzk3OSwgCisgICAgNzc5ODcsIDc3OTk0LCA3ODAwMSwgNzgwMDcsIDI4NDg2LCA3ODAyMSwgNzgwMjUsIDc4MDMxLCA3ODAzOSwgNzgwNTEsIAorICAgIDc4MDU3LCA3ODA2NSwgNzgwNzAsIDc4MDc1LCA3ODA3OSwgNzgwODcsIDc4MDk0LCA3ODA5OCwgNzgxMDQsIDc4MTEwLCAKKyAgICA3ODExNSwgMzY3NCwgNDQ4OTgsIDc4MTIxLCA3ODEyNSwgNzgxMjksIDc4MTMzLCA3ODEzOCwgNzgxNDMsIDc4MTQ4LCAKKyAgICA3ODE1NCwgNzgxNjAsIDc4MTY2LCA3ODE3MywgNzgxNzksIDc4MTg2LCA3ODE5MiwgNzgxOTgsIDc4MjAzLCA3ODIwOSwgCisgICAgNzgyMTQsIDc4MjE4LCA3ODIyMywgNzgyMjcsIDc4MjMyLCA0NDkxMywgNzgyMzYsIDc4MjQxLCA3ODI0OSwgNzgyNTMsIAorICAgIDc4MjU4LCA3ODI2NSwgNzgyNzQsIDc4MjgwLCA3ODI4OSwgNzgyOTMsIDc4MzAwLCA3ODMwNCwgNzgzMDcsIDc4MzE0LCAKKyAgICA3ODMyMCwgNzgzMjksIDc4MzM5LCA3ODM0NCwgNzgzNDgsIDc4MzU2LCA3ODM2NSwgNzgzNjksIDc4Mzc3LCA3ODM4MywgCisgICAgNzgzODgsIDc4MzkzLCA3ODM5OSwgNzg0MDUsIDc4NDEwLCA3ODQxNCwgNzg0MjAsIDc4NDI1LCA3ODQyOSwgNzg0MzIsIAorICAgIDc4NDM3LCA3ODQ0NSwgNzg0NTUsIDc4NDYxLCA3ODQ2NiwgNzg0NzYsIDQyMjMxLCA3ODQ4NCwgNzg0OTYsIDc4NTAwLCAKKyAgICA3ODUwNiwgNzg1MTgsIDc4NTI5LCA3ODUzNiwgNzg1NDIsIDc4NTQ5LCA3ODU1NiwgNzg1NjgsIDc4NTc1LCA3ODU4MSwgCisgICAgMjIwNjEsIDc4NTg1LCA3ODU5MywgNzg1OTksIDc4NjA2LCA3ODYxMiwgNzg2MTgsIDc4NjI0LCA3ODYyOSwgNzg2MzQsIAorICAgIDc4NjM5LCA3ODY0OCwgNzg2NTYsIDc4NjY3LCA3MjI1LCA3ODY3MiwgMTczMjgsIDc4Njc4LCA3ODY4MiwgNzg2ODYsIAorICAgIDc4NjkwLCA3ODY5OCwgNzg3MDcsIDc4NzExLCA3ODcxOCwgNzg3MjcsIDc4NzM1LCA3ODc0OCwgNzg3NTQsIDc4MjI4LCAKKyAgICAzMTQ5NSwgNzg3NTksIDc4NzYxLCA3ODc2NiwgNzg3NzEsIDc4Nzc2LCA3ODc4MSwgNzg3ODYsIDc4NzkxLCA3ODc5NiwgCisgICAgNzg4MDEsIDc4ODA2LCA3ODgxMSwgNzg4MTYsIDc4ODIxLCA3ODgyNiwgNzg4MzEsIDc4ODM3LCA3ODg0MiwgNzg4NDcsIAorICAgIDc4ODUyLCA3ODg1NywgNzg4NjIsIDc4ODY3LCA3ODg3MiwgNzg4NzcsIDc4ODgzLCA3ODg4OSwgNzg4OTUsIDc4OTAwLCAKKyAgICA3ODkwNSwgNzg5MTcsIDc4OTIyLCAxODc3LCA0NCwgNzg5MjcsIDc4OTMyLCAzNDMwMCwgNzg5MzYsIDM0MzA1LCAzNDMxMCwgCisgICAgMzQzMTYsIDM0MzIxLCA3ODk0MCwgMzQzMjYsIDIzMDg4LCA3ODk2MiwgNzg5NjYsIDc4OTcwLCA3ODk3NSwgNzg5NzksIAorICAgIDM0MzMwLCA3ODk4MywgNzg5OTEsIDc4OTk4LCAzNDMzNSwgNzkwMDQsIDc5MDA3LCA3OTAxMiwgNzkwMTYsIDc5MDI1LCAKKyAgICAxMDAxOCwgNzkwMzMsIDM0MzQwLCAyMjk1MCwgNzkwMzYsIDc5MDQwLCAxNDExLCA3OTA0NSwgMzQzNTEsIDc5MDQ4LCAKKyAgICA3OTA1MywgMjY5MjEsIDI2OTMxLCAzNjk1NywgNzkwNTgsIDc5MDYzLCA3OTA2OCwgNzkwNzMsIDc5MDc5LCA3OTA4NCwgCisgICAgNzkwOTMsIDc5MDk4LCA3OTEwNywgNzkxMTUsIDc5MTIyLCA3OTEyOCwgNzkxMzMsIDc5MTM4LCA3OTE0MywgNzkxNTMsIAorICAgIDc5MTYyLCA3OTE3MCwgNzkxNzUsIDc5MTgzLCA3OTE4NywgNzkxOTUsIDc5MTk5LCA3OTIwNiwgNzkyMTQsIDM0MTU5LCAKKyAgICAzOTkyMiwgNzkyMjEsIDc5MjI3LCA3OTIzMiwgNzkyMzcsIDEyNzAzLCAyOTY3MSwgNzkyNDIsIDc5MjQ3LCA3OTI1NCwgCisgICAgNzkyNjAsIDc5MjY1LCA3OTI3MywgNzkyODMsIDc5MjkzLCA3OTI5OSwgNzkzMDQsIDc5MzEwLCAxODQ4OCwgNzkzMTcsIAorICAgIDM3ODMyLCA3OTMzMCwgNzkzMzUsIDc5MzQxLCAzMjQ4MiwgNzkzNTQsIDc5MzYwLCA3OTM2NCwgNzkzNzMsIDc5MzgwLCAKKyAgICA3OTM4NiwgNzkzOTQsIDc5NDAzLCA3OTQxMCwgNzk0MTYsIDc5NDE5LCA3OTQyMywgNzk0MjcsIDI3MDYyLCA3OTQzMSwgCisgICAgNzk0MzgsIDc5NDQ0LCA3OTQ1MiwgNzk0NTcsIDI1MTAwLCA3OTQ2MywgNzk0NjYsIDc5NDc0LCA3OTQ4MSwgNzk0ODksIAorICAgIDc5NTAyLCA3OTUxNiwgNzk1MjMsIDc5NTI5LCA3OTUzNiwgNzk1NDIsIDM0MzY1LCA3OTU0NiwgNzk1NTMsIDc5NTYxLCAKKyAgICA3OTU2OSwgNzk1NzUsIDM0MzcwLCA3OTU4MywgNzk1ODksIDc5NTk0LCA3OTYwNCwgNzk2MTAsIDc5NjE5LCAzMjI4OCwgCisgICAgMzYzODgsIDc5NjI3LCA3OTYzMiwgNzk2MzcsIDc5NjQxLCA3OTY0NiwgNzk2NTAsIDc5NjU4LCAxNTczMCwgNDIyNDQsIAorICAgIDc5NjYzLCA3OTY2OCwgMzQzNzUsIDY1NDA3LCA3OTY3MiwgNzk2NzcsIDc5NjgxLCA3OTY4OCwgNzk2OTcsIDc5NzA1LCAKKyAgICA3OTcxMSwgNzk3MTYsIDc5NzIyLCA3OTcyOSwgNzk3MzUsIDc5NzQwLCA3OTc0NSwgNzk3NTYsIDc5NzY1LCA3OTc3NywgCisgICAgNzk3OTIsIDM0NjQyLCA3OTc5OCwgMTc0NDcsIDM0Mzc5LCA3OTgwMiwgNzk4MDksIDI1MjE2LCA3OTgxNSwgNzk4MjIsIAorICAgIDc5ODMxLCA3OTgzOCwgNzk4NDcsIDc5ODUzLCA3OTg1OCwgNzk4NjYsIDc5ODcyLCAzNDM4OSwgNzk4NzcsIDc5ODg2LCAKKyAgICA3ODUyNCwgNzk4OTUsIDc5OTAyLCA3OTkwOCwgNzk5MTQsIDc5OTIzLCA3OTkzMywgNzk5NDEsIDc5OTQ4LCA3OTk1MiwgCisgICAgMzQzOTQsIDc5OTU1LCAzNDQwMCwgMzQ0MDYsIDc5OTYwLCA3OTk2OCwgNzk5NzYsIDc5OTg2LCA3OTk5NSwgODAwMDMsIAorICAgIDgwMDEwLCA4MDAyMCwgMzQ0MTEsIDgwMDI0LCA4MDAyNiwgODAwMzAsIDgwMDM1LCA4MDAzOSwgODAwNDMsIDgwMDQ5LCAKKyAgICA4MDA1NCwgODAwNTgsIDgwMDY5LCA4MDA3NCwgODAwNzksIDMwOTUsIDgwMDgzLCA4MDA5MCwgODAwOTQsIDgwMTAzLCAKKyAgICA4MDExMSwgODAxMTgsIDgwMTIzLCA4MDEyOCwgNjU0NTgsIDgwMTMyLCA4MDEzNSwgODAxNDEsIDgwMTQ5LCA4MDE1NSwgCisgICAgODAxNTksIDgwMTY0LCA4MDE3MSwgODAxNzYsIDgwMTgwLCA4MDE4NiwgMzY0MTksIDgwMTkxLCA4MDE5NCwgODAxOTksIAorICAgIDgwMjAzLCA4MDIwOCwgODAyMTUsIDgwMjIwLCA4MDIyNCwgNDA4MTYsIDgwMjMyLCAyNjk0MCwgMjY5NDksIDgwMjM4LCAKKyAgICA4MDI0NCwgODAyNTAsIDgwMjU1LCA4MDI1OSwgODAyNjIsIDgwMjcyLCA4MDI4MSwgODAyODYsIDgwMjkyLCA4MDI5OSwgCisgICAgODAzMDUsIDgwMzA5LCA4MDMxNywgODAzMjIsIDM2NDI1LCA3NTU0MiwgODAzMjYsIDgwMzM0LCA4MDM0MCwgODAzNDcsIAorICAgIDgwMzUyLCA4MDM1NiwgODAzNjEsIDYxNDE5LCA4MDM2NywgMzY0MzEsIDgwMzcyLCA4MDM3NywgODAzODEsIDgwMzg2LCAKKyAgICA4MDM5MSwgODAzOTYsIDgwNDAwLCA4MDQwNSwgODA0MTAsIDgwNDE2LCA4MDQyMSwgODA0MjYsIDgwNDMyLCA4MDQzOCwgCisgICAgODA0NDMsIDgwNDQ3LCA4MDQ1MiwgODA0NTcsIDgwNDYyLCA4MDQ2NiwgMjUyMTUsIDgwNDcxLCA4MDQ3NiwgODA0ODIsIAorICAgIDgwNDg4LCA4MDQ5NCwgODA0OTksIDgwNTAzLCA4MDUwOCwgODA1MTMsIDgwNTE4LCA4MDUyMiwgODA1MjcsIDgwNTMyLCAKKyAgICA4MDUzNywgODA1NDIsIDQ1MTY4LCA4MDU0NiwgMzQ0MTksIDgwNTU0LCA4MDU1OCwgODA1NjYsIDgwNTc0LCA4MDU4NSwgCisgICAgODA1OTAsIDgwNTk0LCAyMzQyOCwgODA1OTksIDgwNjA1LCA4MDYxMCwgODA2MjAsIDgwNjI3LCA4MDYzMiwgODA2NDAsIAorICAgIDgwNjQ5LCA4MDY1NCwgODA2NTgsIDgwNjYzLCA4MDY3MSwgODA2NzksIDgwNjg2LCA2ODQyNCwgODA2OTIsIDgwNzAwLCAKKyAgICA4MDcwNywgODA3MTgsIDgwNzI0LCA4MDczMCwgMzQ0MjksIDgwNzMzLCA4MDc0MCwgODA3NDgsIDgwNzUzLCA0MjQ0NywgCisgICAgODA3NTcsIDgwNzYyLCA4MDc2OSwgODA3NzQsIDkyMzksIDgwNzc4LCA4MDc4NiwgODA3OTMsIDgwODAwLCA4MDgwOSwgCisgICAgODA4MTYsIDgwODIyLCA4MDgzNiwgMTA0NzMsIDgwODQ0LCA4MDg1MCwgODA4NTQsIDgwODU3LCA4MDg2NSwgODA4NzIsIAorICAgIDgwODc3LCA4MDg5MCwgODA4OTcsIDgwOTAxLCA4MDkwNiwgODA5MTMsIDgwOTE4LCA2MzkzNCwgODA5MjMsIDgwOTI2LCAKKyAgICA4MDkzMywgODA5MzksIDgwOTQzLCA4MDk1MSwgODA5NjAsIDgwOTcwLCA4MDk4MCwgODA5ODksIDgxMDAwLCA4MTAwOCwgCisgICAgODEwMTksIDgxMDI0LCA4MTAyOCwgODEwMzMsIDgxMDM3LCAzNzA4OCwgODEwNDUsIDIyMzU2LCAzNzA5NywgODEwNTAsIAorICAgIDgxMDU1LCA4MTA2MCwgODEwNjUsIDgxMDcwLCA4MTA3NSwgODEwODAsIDgxMDg0LCA4MTA4OSwgODEwOTQsIDgxMDk5LCAKKyAgICA4MTEwNCwgODExMDksIDgxMTE0LCA4MTExOCwgODExMjMsIDgxMTI4LCA4MTEzMiwgODExMzYsIDgxMTQwLCA4MTE0NCwgCisgICAgODExNDksIDgxMTU0LCA4MTE1OCwgODExNjMsIDgxMTY3LCA4MTE3MSwgODExNzYsIDgxMTgxLCA4MTE4NiwgODExOTEsIAorICAgIDgxMTk1LCA4MTIwMCwgODEyMDUsIDgxMjA5LCA4MTIxNCwgODEyMTksIDgxMjI0LCA4MTIyOSwgODEyMzQsIDgxMjM5LCAKKyAgICA4MTI0NCwgODEyNDksIDgxMjU0LCA4MTI1OSwgODEyNjQsIDgxMjY5LCA4MTI3NCwgODEyNzksIDgxMjg0LCA4MTI4OSwgCisgICAgODEyOTQsIDgxMjk5LCA4MTMwNCwgODEzMDksIDgxMzEzLCA4MTMxOCwgODEzMjMsIDgxMzI4LCA4MTMzMywgODEzMzgsIAorICAgIDgxMzQzLCA4MTM0OCwgODEzNTMsIDgxMzU4LCA4MTM2MywgODEzNjgsIDgxMzcyLCA4MTM3NywgODEzODEsIDgxMzg2LCAKKyAgICA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMwLCA4MTQzNCwgCisgICAgODE0MzksIDgxNDQ0LCA4MTQ0OCwgODE0NTMsIDgxNDU4LCA4MTQ2MiwgODE0NjcsIDgxNDcyLCA4MTQ3NywgODE0ODIsIAorICAgIDgxNDg2LCA4MTQ5MSwgODE0OTYsIDgxNTAwLCA4MTUwNSwgODE1MDksIDgxNTEzLCA4MTUxNywgODE1MjEsIDgxNTI2LCAKKyAgICA4MTUzMCwgODE1MzQsIDgxNTM4LCA4MTU0MiwgODE1NDYsIDgxNTUwLCA4MTU1NCwgODE1NTgsIDgxNTYyLCA4MTU2NywgCisgICAgODE1NzIsIDgxNTc3LCA4MTU4MiwgODE1ODcsIDgxNTkyLCA4MTU5NywgODE2MDIsIDgxNjA3LCA4MTYxMiwgODE2MTYsIAorICAgIDgxNjIwLCA4MTYyNCwgODE2MjgsIDgxNjMyLCA4MTYzNiwgODE2NDEsIDgxNjQ1LCA4MTY1MCwgODE2NTQsIDgxNjU5LCAKKyAgICA4MTY2NCwgODE2NjgsIDgxNjcyLCA4MTY3NywgODE2ODEsIDgxNjg1LCA4MTY4OSwgODE2OTMsIDgxNjk3LCA4MTcwMSwgCisgICAgODE3MDUsIDgxNzA5LCA4MTcxMywgODE3MTcsIDgxNzIxLCA4MTcyNSwgODE3MjksIDgxNzMzLCA4MTczOCwgODE3NDMsIAorICAgIDgxNzQ3LCA4MTc1MSwgODE3NTUsIDgxNzU5LCA4MTc2MywgODE3NjcsIDgxNzcyLCA4MTc3NiwgODE3ODAsIDgxNzg0LCAKKyAgICA4MTc4OCwgODE3OTIsIDgxNzk2LCA4MTgwMSwgODE4MDUsIDgxODEwLCA4MTgxNCwgODE4MTgsIDgxODIyLCA4MTgyNiwgCisgICAgODE4MzAsIDgxODM0LCA4MTgzOCwgODE4NDIsIDgxODQ2LCA4MTg1MCwgODE4NTQsIDgxODU5LCA4MTg2MywgODE4NjcsIAorICAgIDgxODcxLCA4MTg3NSwgODE4NzksIDgxODgzLCA4MTg4NywgODE4OTEsIDgxODk1LCA4MTg5OSwgODE5MDMsIDgxOTA4LCAKKyAgICA4MTkxMiwgODE5MTYsIDgxOTIxLCA4MTkyNiwgODE5MzAsIDgxOTM0LCA4MTkzOCwgODE5NDIsIDgxOTQ2LCA4MTk1MCwgCisgICAgODE5NTQsIDgxOTU4LCA4MTk2MywgODE5NjcsIDgxOTcyLCA4MTk3NiwgODE5ODEsIDgxOTg1LCA4MTk5MCwgODE5OTQsIAorICAgIDgyMDAwLCA4MjAwNSwgODIwMDksIDgyMDE0LCA4MjAxOCwgODIwMjMsIDgyMDI3LCA4MjAzMiwgODIwMzYsIDgyMDQxLCAKKyAgICAxNTA0LCA4MjA0NSwgMjg1NCwgMTc1OSwgMTY3NywgODIwNDksIDgyMDUzLCAyODYzLCA4MjA1NywgMTM4MCwgODIwNjIsIAorICAgIDEzMjIsIDgyMDY2LCAyODc1LCA4MjA3MCwgODIwNzcsIDgyMDg0LCA4MjA5OCwgMjg3OSwgNzMyNywgODIxMDcsIDgyMTE1LCAKKyAgICA4MjEyMiwgODIxMzMsIDgyMTQyLCA4MjE0OSwgODIxNjEsIDgyMTc0LCA4MjE4NywgODIxOTgsIDgyMjAzLCA4MjIxMCwgCisgICAgODIyMjIsIDgyMjI2LCAyODgzLCAxMjQwOCwgODIyMzYsIDgyMjQxLCA4MjI1MCwgODIyNjAsIDgyMjY1LCAyODg3LCAKKyAgICA4MjI3MywgODIyNzcsIDgyMjgyLCA4MjI4OSwgODIyOTUsIDgyMzAzLCA4MjMxNSwgMTMyNywgMTM3MzUsIDgyMzI1LCAKKyAgICA4MjMyOSwgODIzMzUsIDgyMzQ5LCA4MjM2MSwgODIzNzMsIDgyMzgzLCA4MjM5MiwgODI0MDEsIDgyNDEwLCA4MjQxOCwgCisgICAgODI0MjksIDgyNDM3LCA0MjAzLCA4MjQ0NywgODI0NTgsIDgyNDY3LCA4MjQ3MywgODI0ODgsIDgyNDk1LCA4MjUwMSwgCisgICAgODI1MDYsIDM3MjI3LCA4MjUxMSwgMjkxMSwgMTM3MzksIDgyNTE1LCA4MjUyMiwgOTE3NywgODI1MzEsIDI5MTYsIDMzODg3LCAKKyAgICA4MjUzNywgNjM2NzUsIDgyNTQ0LCA4MjU1MCwgODI1NjEsIDgyNTY3LCA4MjU3NCwgODI1ODAsIDgyNTg4LCA4MjU5NSwgCisgICAgODI2MDEsIDgyNjExLCA4MjYyMCwgODI2MzEsIDgyNjQwLCA4MjY0NywgODI2NTMsIDgyNjYzLCA4MjY3MSwgODI2NzcsIAorICAgIDgyNjkyLCA4MjY5OCwgODI3MDMsIDgyNzEwLCA4MjcxMywgODI3MTksIDgyNzI2LCA4MjczMiwgODI3NDAsIDgyNzQ5LCAKKyAgICA4Mjc1NywgODI3NjMsIDgyNzcyLCA0NDQzOCwgODI3ODYsIDgyNzkxLCA4Mjc5NywgMTU1MzYsIDgyODAyLCA4MjgxNSwgCisgICAgODI4MjcsIDgyODM2LCA4Mjg0NCwgODI4NTEsIDgyODU1LCA4Mjg1OSwgODI4NjIsIDgyODY5LCA4Mjg3NiwgODI4ODQsIAorICAgIDgyODkyLCA4MjkwMSwgODI5MDksIDE1NDYzLCA4MjkxNywgODI5MjIsIDgyOTI2LCA4MjkzOCwgODI5NDUsIDgyOTU0LCAKKyAgICA3ODEsIDgyOTY0LCA4Mjk3MywgODI5ODQsIDI5MzIsIDgyOTg4LCA4Mjk5MiwgODI5OTgsIDgzMDExLCA4MzAyMywgODMwMzMsIAorICAgIDgzMDQyLCA4MzA1NCwgMjc1OTcsIDgzMDY1LCA4MzA3MywgODMwODIsIDgzMDkzLCA4MzEwNCwgODMxMTQsIDgzMTI0LCAKKyAgICA4MzEzMywgODMxNDEsIDExOTQ0LCA4MzE0OCwgODMxNTIsIDgzMTU1LCA4MzE2MCwgODMxNjUsIDgzMTY5LCA4MzE3NSwgCisgICAgMTMzMiwgODMxODIsIDgzMTg2LCAxMjQ5MCwgODMxOTAsIDgzMjAxLCA4MzIxMCwgODMyMTgsIDgzMjI3LCA4MzIzNSwgCisgICAgODMyNTEsIDgzMjYyLCA4MzI3MSwgODMyNzksIDgzMjkxLCA4MzMwMiwgODMzMTgsIDgzMzI4LCA4MzM0OSwgODMzNjMsIAorICAgIDgzMzc2LCA4MzM4NCwgODMzOTEsIDczNzMsIDgzNDA0LCA4MzQwOSwgODM0MTUsIDYwNzgsIDgzNDIxLCA4MzQyNCwgCisgICAgODM0MzEsIDgzNDQxLCA4Mzk1LCA4MzQ0OCwgODM0NTMsIDgzNDU4LCA4MzQ2MywgODM0NzEsIDgzNDgwLCA4MzQ4OCwgCisgICAgMTAyNDEsIDEwMjUwLCA4MzQ5MywgODM1MDQsIDgzNTA5LCA4MzUxNSwgMjk0OCwgMTE2MCwgODM1MjEsIDExNDQ5LCAKKyAgICA4MzUyNywgODM1MzQsIDgzNTQxLCA4MzU1NCwgMjI2MiwgNjgsIDgzNTU5LCA4MzU2NCwgODM1NzQsIDgzNTgzLCA4MzU4OSwgCisgICAgODM1OTgsIDgzNjA2LCA4MzYxNiwgODM2MjAsIDgzNjI1LCA4MzYyOSwgODM2NDEsIDI5NzYsIDgzNjQ5LCA4MzY1NywgCisgICAgODM2NjIsIDgzNjczLCA4MzY4NCwgODM2OTMsIDIyMzk3LCA4MzY5OCwgODM3MDQsIDgzNzA5LCA4MzcxOSwgODM3MjksIAorICAgIDgzNzM0LCA4Mzc0MCwgODM3NDQsIDgzNzQ5LCA4Mzc1OCwgMjI0MDksIDgzNzYyLCA0MjgwLCAyNCwgODM3NjcsIDgzNzc2LCAKKyAgICA4Mzc4MywgODM3OTAsIDgzNzk2LCA4MzgwMiwgOTU0LCA4MzgwNywgODM4MTIsIDY0MDE2LCA4MzgxNywgODM4MjIsIAorICAgIDgzODI4LCA4MzgzNCwgODM4NDIsIDgzODQ3LCA4Mzg1NSwgODM4NjIsIDgzODY4LCA4Mzg3MywgNDA3MDAsIDQ0MzMyLCAKKyAgICA4Mzg3OSwgMjk4MCwgMzIsIDgzODg5LCA4MzkwMiwgODM5MDcsIDgzOTE1LCA4MzkyMCwgODM5MjYsIDMwMDIsIDI5NjM5LCAKKyAgICA4MzkzMSwgODM5MzksIDgzOTQ2LCA4Mzk1MSwgODM5NjAsIDYxNjYxLCA2NTA3OCwgODM5NjgsIDgzOTcyLCAxNzA0LCAKKyAgICAxODE4LCA4Mzk3NywgODM5ODIsIDgzOTg5LCAxODIyLCAyNTQsIDgzOTk2LCA4NDAwMiwgMzAyNCwgODQwMDcsIDg0MDEyLCAKKyAgICA4NDAxOSwgMTgyNiwgODQwMjQsIDg0MDMwLCA4NDAzNSwgODQwNDcsIDYzMDUsIDg0MDU3LCAxODMzLCA4NDA2MywgODQwNjgsIAorICAgIDg0MDc1LCA4NDA4MiwgODQwOTcsIDg0MTA0LCA4NDExNSwgODQxMjAsIDg0MTI4LCAyNjM4LCA4NDEzMiwgODQxNDQsIAorICAgIDg0MTQ5LCA4NDE1MywgODQxNTksIDI5NDU1LCAyMjY3LCA4NDE2MywgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODgsIAorICAgIDg0MTkyLCA4NDIwMSwgODQyMDUsIDg0MjE2LCA4NDIyMCwgMjMxMywgMzM3MDQsIDg0MjI0LCA4NDIzNCwgMzExNSwgCisgICAgODQyNDIsIDk2NjEsIDg0MjUxLCA4NDI1NiwgODQyNjAsIDg0MjY5LCA4NDI3NiwgODQyODIsIDMwODUsIDE4MDkzLCAKKyAgICA4NDI4NiwgODQyOTksIDg0MzE3LCA4NDMyMiwgODQzMzAsIDg0MzM4LCA4NDM0OCwgMTA0ODAsIDEzODUyLCA4NDM2MCwgCisgICAgODQzNzMsIDg0MzgwLCA4NDM5NCwgODQ0MDEsIDg0NDE3LCA4NDQyNCwgODQ0MzAsIDIyNDQxLCAxMzEwMCwgODQ0MzcsIAorICAgIDg0NDQ0LCA4NDQ1NCwgODQ0NjMsIDQ1MTY3LCA4NDQ3NSwgNDUzMDIsIDg0NDgzLCA4NDQ4NiwgODQ0OTIsIDg0NDk4LCAKKyAgICA4NDUwNCwgODQ1MTAsIDg0NTE2LCA4NDUyMywgODQ1MzAsIDg0NTM2LCA4NDU0MiwgODQ1NDgsIDg0NTU0LCA4NDU2MCwgCisgICAgODQ1NjYsIDg0NTcyLCA4NDU3OCwgODQ1ODQsIDg0NTkwLCA4NDU5NiwgODQ2MDIsIDg0NjA4LCA4NDYxNCwgODQ2MjAsIAorICAgIDg0NjI2LCA4NDYzMiwgODQ2MzgsIDg0NjQ0LCA4NDY1MCwgODQ2NTYsIDg0NjYyLCA4NDY2OCwgODQ2NzQsIDg0NjgwLCAKKyAgICA4NDY4NiwgODQ2OTIsIDg0Njk4LCA4NDcwNCwgODQ3MTAsIDg0NzE2LCA4NDcyMiwgODQ3MjgsIDg0NzM0LCA4NDc0MCwgCisgICAgODQ3NDYsIDg0NzUyLCA4NDc1OCwgODQ3NjQsIDg0NzcwLCA4NDc3NiwgODQ3ODIsIDg0Nzg4LCA4NDc5NCwgODQ4MDAsIAorICAgIDg0ODA2LCA4NDgxMiwgODQ4MTgsIDg0ODI0LCA4NDgzMCwgODQ4MzYsIDg0ODQzLCA4NDg0OSwgODQ4NTYsIDg0ODYzLCAKKyAgICA4NDg2OSwgODQ4NzYsIDg0ODgzLCA4NDg4OSwgODQ4OTUsIDg0OTAxLCA4NDkwNywgODQ5MTMsIDg0OTE5LCA4NDkyNSwgCisgICAgODQ5MzEsIDg0OTM3LCA4NDk0MywgODQ5NDksIDg0OTU1LCA4NDk2MSwgODQ5NjcsIDg0OTczLCAzMDk5LCA5NjM0LCAKKyAgICA4NDk3OSwgODQ5ODUsIDg0OTkzLCA4NDk5NywgODIyODUsIDMxMDMsIDg1MDAxLCAyMjE3NCwgMTI3MzMsIDM4ODUsIAorICAgIDg1MDA1LCAzMTA5LCA4NTAwOSwgODUwMTksIDg1MDI1LCA4NTAzMSwgODUwMzcsIDg1MDQzLCA4NTA0OSwgODUwNTUsIAorICAgIDg1MDYxLCA4NTA2NywgODUwNzMsIDg1MDc5LCA4NTA4NSwgODUwOTEsIDg1MDk3LCA4NTEwMywgODUxMDksIDg1MTE1LCAKKyAgICA4NTEyMSwgODUxMjcsIDg1MTMzLCA4NTEzOSwgODUxNDUsIDg1MTUxLCA4NTE1NywgODUxNjMsIDg1MTY5LCA4NTE3NiwgCisgICAgODUxODMsIDg1MTg5LCA4NTE5NSwgODUyMDEsIDg1MjA3LCA4NTIxMywgODUyMTksIDEzMzcsIDg1MjI1LCA4NTIzMCwgCisgICAgODUyMzUsIDg1MjQwLCA4NTI0NSwgODUyNTAsIDg1MjU1LCA4NTI2MCwgODUyNjUsIDg1MjY5LCA4NTI3MywgODUyNzcsIAorICAgIDg1MjgxLCA4NTI4NSwgODUyODksIDg1MjkzLCA4NTI5NywgODUzMDEsIDg1MzA3LCA4NTMxMywgODUzMTksIDg1MzI1LCAKKyAgICA4NTMyOSwgODUzMzMsIDg1MzM3LCA4NTM0MSwgODUzNDUsIDg1MzQ5LCA4NTM1MywgODUzNTcsIDg1MzYxLCA4NTM2NiwgCisgICAgODUzNzEsIDg1Mzc2LCA4NTM4MSwgODUzODYsIDg1MzkxLCA4NTM5NiwgODU0MDEsIDg1NDA2LCA4NTQxMSwgODU0MTYsIAorICAgIDg1NDIxLCA4NTQyNiwgODU0MzEsIDg1NDM2LCA4NTQ0MSwgODU0NDYsIDg1NDUxLCA4NTQ1NiwgODU0NjEsIDg1NDY2LCAKKyAgICA4NTQ3MSwgODU0NzYsIDg1NDgxLCA4NTQ4NiwgODU0OTEsIDg1NDk2LCA4NTUwMSwgODU1MDYsIDg1NTExLCA4NTUxNiwgCisgICAgODU1MjEsIDg1NTI2LCA4NTUzMSwgODU1MzYsIDg1NTQxLCA4NTU0NiwgODU1NTEsIDg1NTU2LCA4NTU2MSwgODU1NjYsIAorICAgIDg1NTcxLCA4NTU3NiwgODU1ODEsIDg1NTg2LCA4NTU5MSwgODU1OTYsIDg1NjAxLCA4NTYwNiwgODU2MTEsIDg1NjE2LCAKKyAgICA4NTYyMSwgODU2MjYsIDg1NjMxLCA4NTYzNiwgODU2NDEsIDg1NjQ2LCA4NTY1MSwgODU2NTYsIDg1NjYxLCA4NTY2NiwgCisgICAgODU2NzEsIDg1Njc2LCA4NTY4MSwgODU2ODYsIDg1NjkxLCA4NTY5NiwgODU3MDEsIDg1NzA2LCA4NTcxMSwgODU3MTYsIAorICAgIDg1NzIxLCA4NTcyNiwgODU3MzEsIDg1NzM2LCA4NTc0MSwgODU3NDYsIDg1NzUxLCA4NTc1NiwgODU3NjEsIDg1NzY2LCAKKyAgICA4NTc3MSwgODU3NzYsIDg1NzgxLCA4NTc4NiwgODU3OTEsIDg1Nzk2LCA4NTgwMSwgODU4MDYsIDg1ODExLCA4NTgxNiwgCisgICAgODU4MjEsIDg1ODI2LCA4NTgzMSwgODU4MzYsIDg1ODQxLCA4NTg0NiwgODU4NTEsIDg1ODU2LCA4NTg2MSwgODU4NjYsIAorICAgIDg1ODcxLCA4NTg3NiwgODU4ODEsIDg1ODg2LCA4NTg5MSwgODU4OTYsIDg1OTAxLCA4NTkwNiwgODU5MTEsIDg1OTE2LCAKKyAgICA4NTkyMSwgODU5MjYsIDg1OTMxLCA4NTkzNiwgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NiwgCisgICAgODU5NzEsIDg1OTc2LCA4NTk4MSwgODU5ODYsIDg1OTkxLCA4NTk5NiwgODYwMDEsIDg2MDA2LCA4NjAxMSwgODYwMTYsIAorICAgIDg2MDIxLCA4NjAzMCwgODYwMzksIDg2MDQ4LCA4NjA1NywgODYwNjYsIDg2MDc1LCA4NjA4NCwgODYwOTMsIDg2MTAyLCAKKyAgICA4NjExMSwgODYxMjAsIDg2MTI5LCA4NjEzOCwgODYxNDcsIDg2MTU2LCA4NjE2NSwgODYxNzQsIDg2MTgzLCA4NjE5MiwgCisgICAgODYxOTcsIDg2MjAyLCA4NjIwNywgODYyMTIsIDg2MjE3LCA4NjIyMiwgODYyMjcsIDg2MjMyLCA4NjIzNywgODYyNDIsIAorICAgIDg2MjQ3LCA4NjI1MiwgODYyNTcsIDg2MjYyLCA4NjI2NywgODYyNzIsIDg2Mjc3LCA4NjI4MiwgODYyODcsIDg2MjkyLCAKKyAgICA4NjI5NywgODYzMDIsIDg2MzA3LCA4NjMxMiwgODYzMTcsIDg2MzIyLCA4NjMyNywgODYzMzIsIDg2MzM3LCA4NjM0MiwgCisgICAgODYzNDcsIDg2MzUyLCA4NjM1NywgODYzNjIsIDg2MzY3LCA4NjM3MiwgODYzNzcsIDg2MzgyLCA4NjM4NywgODYzOTIsIAorICAgIDg2Mzk3LCA4NjQwMiwgODY0MDcsIDg2NDEyLCA4NjQxNywgODY0MjIsIDg2NDI3LCA4NjQzMiwgODY0MzcsIDg2NDQyLCAKKyAgICA4NjQ0NywgODY0NTIsIDg2NDU3LCA4NjQ2MiwgODY0NjcsIDg2NDcyLCA4NjQ3NywgODY0ODIsIDg2NDg4LCA4NjQ5NCwgCisgICAgODY1MDAsIDg2NTA1LCA4NjUxMCwgODY1MTUsIDg2NTIxLCA4NjUyNywgODY1MzMsIDg2NTM4LCA4NjU0MywgODY1NDgsIAorICAgIDg2NTUzLCA4NjU1OCwgODY1NjMsIDg2NTY4LCAxNjkyMiwgMTI3NTUsIDg2NTczLCA4NjU3OSwgODY1ODUsIDg2NTk0LCAKKyAgICA4NjU5OSwgODY2MDQsIDg2NjA5LCA4NjYxNCwgODY2MTksIDg2NjI0LCA4NjYyOSwgODY2MzQsIDg2NjM5LCA4NjY0NCwgCisgICAgODY2NDksIDg2NjU0LCA4NjY1OSwgODY2NjQsIDg2NjY5LCA4NjY3NCwgODY2NzksIDg2Njg0LCA4NjY4OSwgODY2OTQsIAorICAgIDg2Njk5LCA4NjcwNCwgODY3MDksIDg2NzE0LCA4NjcxOSwgODY3MjUsIDg2NzMwLCA4NjczNSwgODY3NDEsIDg2NzQ2LCAKKyAgICA4Njc1MiwgODY3NTcsIDg2NzYyLCA4Njc2OCwgODY3NzMsIDg2Nzc4LCA4Njc4MywgODY3ODgsIDg2NzkzLCA4Njc5OCwgCisgICAgODY4MDMsIDg2ODA4LCA4NTAyMCwgODUwMjYsIDg1MDMyLCA4NTAzOCwgODY4MTQsIDg1MDQ0LCA4NTA1MCwgODUwNTYsIAorICAgIDg1MDYyLCA4NTA2OCwgODUwNzQsIDg1MDgwLCA4NTA4NiwgODUwOTIsIDg1MDk4LCA4NTEwNCwgODY4MjAsIDg1MTEwLCAKKyAgICA4NTExNiwgODUxMjIsIDg2ODI2LCA4NTEyOCwgODUxMzQsIDg1MTQwLCA4NTE0NiwgODUxNTIsIDg1MTU4LCA4NTE2NCwgCisgICAgODUxODQsIDg2ODMyLCA4NjgzOCwgODUxOTAsIDg2ODQ0LCA4NTE5NiwgODUyMDIsIDg1MjA4LCA4NTIxNCwgODUyMjAsIAorICAgIDMxMjYsIDMxMzEsIDg2ODUwLCA4Njg1NSwgODY4NTgsIDg2ODY0LCA4Njg3MCwgODY4NzcsIDg2ODgyLCA4Njg4NywgMjMxOCwgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KLSNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CisjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgOAorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwNAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxOSwgMjAsIDI0NSwgMzksIDc5LCAyMjQsIDEsIDc5LCA1NCwgNTAsIDI0NywgMTQwLCA1MCwgMjI1LCAxODUsIDUwLCAKLSAgICAyNTQsIDEzNCwgMjU0LCA2NSwgNDMsIDIyNiwgNywgNDQsIDIyNiwgNywgMjUzLCAyMjQsIDk2LCA1MCwgMjQ5LCAyMjcsIAotICAgIDI0MCwgMTc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxOSwgNDgsIDIxLCAyMTAsIDg2LCAyMSwgMTExLCAyMSwgMTA1LCAyMSwgCi0gICAgMTU4LCAyMSwgMTYxLCAyMSwgMTkwLCAyMSwgMTk1LCAyMSwgMTk5LCAyMSwgMTk2LCAyMSwgMjAxLCAyNDksIDIzNCwgMjIwLCAKLSAgICAxNTIsIDIzMywgMjEsIDUwLCAyNDUsIDEwNiwgNTAsIDI0MiwgMTM3LCA1MCwgMjI0LCAxNiwgNzksIDI0OSwgMjI1LCAyNTMsIAotICAgIDIxNCwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTY2LCA3LCA2LCAxLCAyNTEsIDc0LCA3LCA2LCAxLCAyNDksIDY4LCAKLSAgICA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjQ1LCAxNCwgNywgNiwgMSwgMjQzLCAyMDksIDcsIDYsIDEsIDI0MiwgNjcsIDcsIDYsIAotICAgIDEsIDc0LCA3LCA2LCAxLCAyMzUsIDE1MCwgNywgNiwgMSwgMjM1LCAyOSwgNywgNiwgMSwgMTU2LCA3LCA2LCAxLCAxOTQsIAotICAgIDcsIDYsIDEsIDIzMCwgMzAsIDcsIDYsIDEsIDc4LCA3LCA2LCAxLCAyMjYsIDEwOSwgNywgNiwgMSwgMjI0LCA5OSwgNywgNiwgCi0gICAgMSwgMTUzLCA3LCA2LCAxLCAyMjIsIDkzLCA3LCA2LCAxLCAyMTcsIDE1MywgNywgNiwgMSwgNjksIDcsIDYsIDEsIDIxNCwgCi0gICAgMTA1LCA3LCA2LCAxLCAyMTIsIDk4LCA3LCA2LCAxLCAyMTEsIDE3OCwgNywgNiwgMSwgMjExLCAxMTcsIDcsIDYsIDEsIAotICAgIDIxMCwgMTU5LCA0MywgNDIsIDEyNywgMjIzLCA1MywgMjE5LCA0OCwgNDQsIDQyLCAxMjcsIDI1MCwgMzksIDI1NSwgMjMsIAotICAgIDEyMSwgMjMyLCAyMTksIDI0MiwgMTQ0LCAyNTUsIDIzLCA3LCA0LCAxLCA2MSwgNywgNCwgMSwgMjUzLCAxNjYsIDcsIDQsIAotICAgIDEsIDI1MSwgNzQsIDcsIDQsIDEsIDI0OSwgNjgsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAyNDUsIDE0LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIwOSwgNywgNCwgMSwgMjQyLCA2NywgNywgNCwgMSwgNzQsIDcsIDQsIDEsIDIzNSwgMTUwLCA3LCA0LCAxLCAyMzUsIAotICAgIDI5LCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5NCwgNywgNCwgMSwgMjMwLCAzMCwgNywgNCwgMSwgNzgsIDcsIDQsIDEsIAotICAgIDIyNiwgMTA5LCA3LCA0LCAxLCAyMjQsIDk5LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTMsIDcsIDQsIDEsIDIxNywgCi0gICAgMTUzLCA3LCA0LCAxLCA2OSwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKLSAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDEwNywgMTI3LCA2NywgMjMyLCAyMTksIAotICAgIDQ0LCAyNDksIDEwNywgMTI3LCAxODQsIDIyOCwgNzgsIDIxOSwgMjAsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgMjUwLCAKLSAgICAxODQsIDUwLCAyMjQsIDIzMSwgNTAsIDI0OSwgMTA2LCA1MCwgMjExLCA0MCwgNTAsIDI1MSwgMTQzLCAxMzAsIDIyMSwgCi0gICAgMTc1LCA1MCwgMjQ4LCA5LCAyNDksIDE3MSwgNTAsIDI0NCwgMTQ0LCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIzMywgNDgsIDUyLCAKLSAgICAyNTQsIDExOCwgMjI0LCAxLCA3OSwgMjI4LCA1NywgNTAsIDIxOSwgNTQsIDI0MCwgMTc1LCAyMjMsIDEwNSwgNTAsIDIzMSwgCi0gICAgMjM3LCAyNDgsIDc5LCA1MCwgMjI1LCAyNCwgNTAsIDIxOCwgMjQsIDEwNSwgMjE4LCAyNCwgMTU4LCAyNTUsIDEyLCAyNTUsIAotICAgIDIzLCAyMzAsIDIzMywgNTAsIDIyNSwgNzEsIDUwLCAyMzAsIDIyOSwgMjQ3LCAxMjgsIDI1MCwgMTkxLCAyMTgsIDI0LCAKLSAgICAxMTEsIDIzMSwgMTUzLCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIyMiwgMjUwLCA1MiwgMjU0LCAxMTgsIDIyNCwgMSwgNzksIAotICAgIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIxMiwgCi0gICAgMTE0LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIzNSwgMjAwLCAyMjQsIDE2LCA3OSwgNywgNiwgMSwgMTE2LCAyLCAyNDIsIAotICAgIDE0MywgNywgNiwgMSwgMTE2LCAyLCAxNDIsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAxODQsIDcsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA0OCwgNywgNiwgMSwgCi0gICAgMjU0LCAyNTIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNjAsIDIsIDI0MiwgMTQzLCA3LCA2LCAKLSAgICAxLCAxNjAsIDIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNjAsIDIsIDI0OCwgOSwgNywgNiwgCi0gICAgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjQ1LCA2NywgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNDQsIDIsIDE0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNDQsIDIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDIzMCwgODksIAotICAgIDUwLCA3LCA2LCAxLCAxNDQsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDE0MiwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIAotICAgIDE0MiwgNywgNiwgMSwgMjE2LCAxNTIsIDcsIDQsIDEsIDIyMCwgNzgsIDIyMiwgOTMsIDcsIDQsIDEsIDExNiwgMiwgMjQyLCAKLSAgICAxNDMsIDcsIDQsIDEsIDExNiwgMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDExNiwgMiwgCi0gICAgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI0OCwgOSwgNywgNCwgMSwgMTE2LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIAotICAgIDI1NCwgMjUyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMTYwLCAyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDcsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDcsIDQsIDEsIDI0NSwgNjcsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzEsIDIsIDE4NCwgNywgNCwgMSwgMTQ0LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTQ0LCAyLCAxODQsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCA5LCAyNDcsIDE3NywgCi0gICAgNTAsIDcsIDQsIDEsIDE0NCwgMiwgOTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMTQyLCAKLSAgICA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMTYsIDE1MiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0OCwgOSwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAxNDIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIAotICAgIDI1MCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDU5LCA0OCwgNywgNCwgCi0gICAgMSwgMjUxLCA3NSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjUxLCA3NSwgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyNTAsIAotICAgIDI0MiwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgOTEsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDkxLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNjAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIAotICAgIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDQsIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAKLSAgICAyNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIxMCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAyNDMsIDIxMCwgCi0gICAgMiwgMjUxLCAxNTQsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCAKLSAgICA5MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgOTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAxODQsIDcsIDQsIDEsIDI0MCwgCi0gICAgMTYxLCAyLCAxODQsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTEsIDE1NCwgNywgCi0gICAgNiwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgMjI4LCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIAotICAgIDI0MCwgMTYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NywgMTI3LCA3NCwgNywgNiwgMjcsIDIzNiwgMzgsIDcsIDQsIDI3LCAKLSAgICAyMzYsIDM4LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMzgsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAKLSAgICAyNDUsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDYsIDEsIDIzMywgCi0gICAgMTU1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAKLSAgICAyNDcsIDEyOCwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgOTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDE0MiwgNywgNCwgMSwgMjMwLCAzMSwgCi0gICAgMiwgMTQyLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjUwLCAxOTEsIDcsIAotICAgIDYsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjMwLCAKLSAgICAzMSwgMjI0LCAyMDcsIDI1MSwgODYsIDI1NCwgNjUsIDcsIDYsIDEsIDI0NSwgMTQ2LCA3LCA0LCAxLCAyNDUsIDE0NiwgNywgCi0gICAgNiwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTQ0LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxNDQsIAotICAgIDIsIDUyLCAxNDIsIDcsIDYsIDI3LCAyMjYsIDIzOCwgNywgNCwgMjcsIDIyNiwgMjM4LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMTQyLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIAotICAgIDIyMywgMjI3LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMjMsIDIyNywgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDE0MiwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQyLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjE3LCAxNTQsIAotICAgIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMTA0LCAyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMTg0LCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyMjIsIDIzNywgNDgsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCAKLSAgICA0LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTIsIDk5LCAKLSAgICAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzgsIAotICAgIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDIxMCwgCi0gICAgMTYwLCAyLCAxNDIsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyMDAsIDIyMiwgOTMsIDcsIDQsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgNTcsIDIsIDEwMywgNywgNiwgMSwgNTcsIDIsIAotICAgIDIxNiwgMTIsIDcsIDQsIDEsIDU3LCAyLCAyMTYsIDEyLCA3LCA2LCAxLCAxMzgsIDE5NSwgNywgNCwgMSwgMTM4LCAxOTUsIAotICAgIDcsIDYsIDEsIDIwNCwgNzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDEwMywgNywgNCwgMSwgMjUxLCA3NSwgMiwgMTAzLCA3LCAKLSAgICA2LCAxLCAyNTQsIDIyOCwgMjQ5LCA2OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAKLSAgICAyMTYsIDEyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMTYsIDEyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDgsIDYyLCA3LCA2LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNiwgMSwgMjIxLCAxOTcsIDcsIDYsIDEsIDIwNCwgNzYsIDcsIDYsIDEsIDI0NSwgMTUsIDIsIAotICAgIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIAotICAgIDExNCwgNywgNCwgMSwgMjQwLCAyMDgsIDcsIDYsIDEsIDIzNSwgMTkyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgOTEsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDEwMywgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMTMwLCA3LCA0LCAxLCAyMzMsIDEwNiwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5NCwgNywgNiwgMSwgMjMwLCAzMSwgCi0gICAgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjAwLCA0NCwgMjMzLCA0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIAotICAgIDIyOSwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA2LCAxLCAKLSAgICAyMjYsIDIyMywgNywgNCwgMSwgMjI2LCAyMjMsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTEwLCAyLCAxMDMsIDcsIDEsIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIAotICAgIDEsIDI0NSwgODMsIDcsIDEsIDIyMywgNTIsIDI0NSwgODQsIDIzMiwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjI2LCAKLSAgICA3MCwgMTAzLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxMDQsIDIsIAotICAgIDI0MCwgMjU1LCA3LCA2LCAxLCAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAKLSAgICAxMTgsIDIsIDEwMywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAKLSAgICAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDI0NSwgMTYsIDcsIDYsIDEsIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIAotICAgIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIDI0NSwgMTcsIDIsIDIxNywgNzgsIDcsIDEsIDExMywgMiwgOTEsIDcsIDYsIAotICAgIDEsIDEzOCwgMTkwLCA3LCA0LCAxLCAxMzgsIDE5MCwgNywgMSwgMjM1LCAyMDAsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgCi0gICAgOTEsIDcsIDEsIDIxMSwgMTgxLCA3LCAxLCAyNDgsIDU1LCAyNTAsIDE5LCA3LCAxLCAyMzMsIDgzLCAyNTAsIDE5LCA3LCAxLCAKLSAgICAyNTQsIDE0NSwgMjUwLCAxOSwgNywgMSwgMjIzLCA1OCwgMjUwLCAxOSwgNywgNiwgMSwgMjQ2LCA0OCwgMiwgMjUwLCAyNDIsIAotICAgIDcsIDYsIDEsIDI0OSwgNjksIDIsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjQ2LCA0OCwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDYsIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMjgsIDE5MSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIAotICAgIDQsIDEsIDIyOCwgMTkxLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCAKLSAgICA2LCAxLCAyNDAsIDE2MSwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgCi0gICAgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDQsIAotICAgIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAxNDIsIDcsIAotICAgIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjUwLCAyNDIsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDc2LCAKLSAgICA3LCA2LCAxLCAxMTYsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyNDgsIDEwLCAyMiwgCi0gICAgMjMxLCAyMzcsIDcsIDYsIDEsIDExNiwgMiwgNTksIDcyLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDExNiwgMiwgNTksIDcyLCAKLSAgICAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI1NCwgMjUzLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAKLSAgICAyMTAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNCwgCi0gICAgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxNDQsIDIsIDIyNiwgMjI5LCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI0NSwgMTcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyNDUsIDE3LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDYsIDQ3LCAKLSAgICA3LCA2LCAxLCAyNDksIDY5LCAyLCA0LCAxLCAyMTAsIDE1OSwgNywgNCwgMSwgMjQ2LCA0NywgNywgNiwgMSwgMjQzLCAyMTAsIAotICAgIDIsIDE0MiwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAyMDYsIDcsIDYsIDEsIDIxMSwgMTgxLCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDExNiwgMiwgMjIyLCAyMzcsIDcyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA3MiwgMjIsIDE0MiwgNywgCi0gICAgNiwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTgsIAotICAgIDEwNSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTgsIDEwNSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCA1MiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDExNiwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDIzNSwgMjAwLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTE2LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA0LCAKLSAgICAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCAKLSAgICA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgCi0gICAgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxNDMsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI0OSwgMjI4LCA1MSwgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTAsIDIzMSwgNywgNCwgMSwgMjEwLCAyMzEsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjAwLCA0NCwgMjMzLCA0MiwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjQ5LCAxMDgsIDcsIDYsIDEsIDIyNiwgMTM4LCA3LCA0LCAKLSAgICAxLCAyMjYsIDEzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDExNiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgCi0gICAgMTQ0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDIzMSwgMjM3LCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIxMSwgMTE4LCAKLSAgICAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNDksIAotICAgIDEwOCwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDI0OCwgMTUxLCAyNDcsIDIyOCwgNywgNCwgMSwgMjI0LCAzNCwgMjQ3LCAyMjgsIDcsIDYsIDEsIDExNiwgMiwgOTEsIAotICAgIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDkxLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCA5MSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDEzMCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDIxNywgMjUxLCAKLSAgICAyMTcsIDc4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIDI0MiwgMTg3LCAyMTgsIAotICAgIDEzMSwgNywgNCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA3LCA2LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMTMwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgNywgNiwgMSwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMTYwLCAyLCA5MSwgNywgCi0gICAgNiwgMSwgMjM1LCAxNTEsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgOTEsIDcsIDYsIDEsIDQsIDIyNCwgMTAwLCAyLCAKLSAgICAyNDEsIDU5LCAyMTcsIDc4LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjQxLCA1OSwgMjE3LCA3OCwgNywgNiwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCi0gICAgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNTEsIDcsIDQsIDEsIDIxNSwgCi0gICAgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCA1NywgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc4LCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAKLSAgICAyNDksIDEwOCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjE3LCA3OCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA0LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNCwgMSwgMjIxLCAxOTcsIDcsIDQsIDEsIDIyMSwgMTk4LCAyLCAxMDMsIDcsIDQsIDEsIAotICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgMTYwLCAyLCAxMDMsIAotICAgIDcsIDQsIDEsIDI1MCwgOCwgMjIzLCA1MiwgMjA0LCA3NiwgNywgNCwgMSwgMjQ3LCAxMjcsIDIzNSwgMTUxLCAyLCA5MSwgNywgCi0gICAgNCwgMSwgMjQzLCAyMTAsIDIsIDEwMywgNywgNCwgMSwgMTE5LCAyNDMsIDIwOSwgNywgMSwgNCwgNiwgMjQzLCAyMDksIDcsIAotICAgIDQsIDEsIDI0MywgMTE0LCA3LCA0LCAxLCAyMjMsIDE1NCwgMjQwLCAyNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIAotICAgIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDEwMywgNywgNCwgMSwgMjQxLCAyMTUsIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE5MiwgNywgMSwgNCwgNiwgNzQsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUyLCA0OSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIyMywgNTgsIDEwMywgCi0gICAgNywgNCwgMSwgMjMzLCA3LCA3LCA0LCAxLCAyMTUsIDk0LCAxOTQsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTUsIDIsIAotICAgIDIwMCwgMjMzLCA0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCA0MywgMTAzLCA3LCAKLSAgICA0LCAxLCAyMzAsIDMxLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMzAsIDcsIDQsIDEsIDI1MiwgMTQyLCAKLSAgICA3OCwgNywgMSwgNCwgNiwgMjI2LCAyMzgsIDcsIDQsIDEsIDI1MCwgOCwgMjI2LCAyMDUsIDcsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NSwgNywgNCwgMSwgMjIzLCA1MiwgCi0gICAgMjIzLCAyMjcsIDIsIDI0NCwgOTUsIDcsIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAyMDAsIDE1MywgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMTAzLCA3LCA0LCAxLCAyNDUsIDgzLCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTEsIDIsIAotICAgIDIxOCwgMTA1LCAyMiwgMTAzLCA3LCA0LCAxLCAyMTgsIDIzMywgMjIzLCA1MiwgMjQ1LCA4MywgNywgNCwgMSwgMjQ1LCA4NCwgCi0gICAgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNywgMTUzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgCi0gICAgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIAotICAgIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAKLSAgICAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIAotICAgIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwOCwgNywgNCwgMSwgMjQ1LCAxNiwgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjQ5LCAKLSAgICAxMDgsIDcsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgNywgMSwgMjI1LCAxNDIsIDIxMywgMTM1LCAyNDQsIDEsIDcsIDEsIAotICAgIDIzNSwgMjAwLCAyNDIsIDE4NywgMjE4LCAxMzEsIDcsIDEsIDIxOCwgMTEyLCAyNTEsIDc0LCA3LCAxLCAyNTEsIDI1NCwgCi0gICAgMjUwLCAxOSwgNywgMSwgNCwgNiwgMjUzLCAxNjYsIDcsIDQsIDEsIDI1MCwgOCwgMjA0LCA3NiwgNywgMSwgNCwgNiwgMjQzLCAKLSAgICAyMTAsIDIsIDEwMywgNywgMSwgNCwgNiwgMjQyLCA2NywgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA3LCA0LCAKLSAgICAxLCAyMTUsIDk0LCAyMzUsIDI5LCA3LCAxLCA0LCA2LCAxNTYsIDcsIDQsIDEsIDIyNCwgMTAwLCAyLCAxMDMsIDcsIDEsIAotICAgIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIDEsIDIyMywgNTIsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIAotICAgIDQsIDEsIDI0NiwgNDgsIDI0NywgMjI4LCA3LCA0LCAxLCAyNDgsIDM0LCAyNDcsIDIyOCwgNywgNCwgMSwgMjQ2LCA0OCwgCi0gICAgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMTUsIDE4NiwgMjQ3LCAyMjgsIDcsIDQsIDEsIDIxNiwgMjM2LCAKLSAgICAyNDcsIDIyOCwgNywgNCwgMSwgMjE3LCAzMCwgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDQsIDE0MiwgCi0gICAgMjQ3LCAyMjgsIDcsIDQsIDEsIDIzMiwgMTA1LCAyNDcsIDIyOCwgNywgNCwgMSwgMjMyLCA1NiwgMjQ3LCAyMjgsIDcsIDEsIAotICAgIDI1MSwgMjU0LCAyMjUsIDE4NCwgNywgMSwgMjUyLCA2LCAyMjUsIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgCi0gICAgMjQ0LCA5NSwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgMjQ0LCA5NiwgMjIsIDIxNywgNzgsIDU4LCAxLCA0LCAKLSAgICAyNDIsIDY3LCA1OCwgMSwgNCwgMjQyLCA2OCwgMiwgMTAzLCA1OCwgMSwgNCwgMjM1LCAxNTAsIDU4LCAxLCA0LCAxNTMsIAotICAgIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIDIyNywgMiwgMTAzLCA1OCwgMSwgNCwgNiwgCi0gICAgMjM1LCAyMDAsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkzLCAKLSAgICA1OCwgMSwgNTIsIDIyNCwgMTkzLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMjcsIDU4LCAxLCAyNTQsIDY1LCA1OCwgMSwgCi0gICAgMjIzLCA1MiwgMjQ5LCAyMjcsIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjM2LCAKLSAgICA1OCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgMjIzLCA1MiwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgNDMsIAotICAgIDI1NCwgMSwgNTgsIDEsIDQ0LCAyNTQsIDEsIDU4LCAxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyNCwgMjU0LCAxLCA1OCwgMSwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjUwLCAyNDIsIDU4LCAxLCA2NywgMjMyLCAyMTksIDU4LCAxLCAyMzEsIDIzNywgNTgsIDEsIAotICAgIDI1NSwgMTIsIDI1NSwgMjMsIDU4LCAxLCAyNDIsIDE0NCwgMjU1LCAyMywgNTgsIDEsIDEyMSwgNjcsIDIzMiwgMjE5LCA1OCwgCi0gICAgMSwgMTIxLCAyMzEsIDIzNywgNTgsIDEsIDEyMSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAxMjEsIDI1NSwgMTIsIAotICAgIDI1NSwgMjMsIDU4LCAxLCAyMTUsIDIyMywgMjQ5LCAyMzQsIDU4LCAxLCAxNjMsIDIxNSwgMjIzLCAyNDksIDIzNCwgNTgsIAotICAgIDEsIDI1MCwgMTgxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDI1MCwgMTgxLCA0MywgMTYzLCAyMjIsIDIzNiwgNTgsIAotICAgIDEsIDEyMCwgMjE3LCA4OCwgNTgsIDEsIDEyNCwgMjE3LCA4OCwgNTgsIDEsIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTg3LCA1MCwgCi0gICAgMjUxLCAxNTQsIDU5LCA0OCwgMjIyLCAyMzcsIDQ4LCAyMjYsIDIyOCwgNCwgMTg0LCA1MiwgMjU1LCAxMiwgMjU1LCAyMywgCi0gICAgNTgsIDEsIDIyMywgMzksIDEwMywgNTgsIDEsIDI0OSwgMTM5LCAyNTUsIDIzLCA1OCwgMSwgNCwgMjQzLCAxMTQsIDU4LCAxLCAKLSAgICA0LCAxNTYsIDU4LCAxLCA0LCAyMjIsIDkzLCA1OCwgMSwgNCwgMjExLCAxNzgsIDU4LCAxLCA0LCAyMjMsIDUyLCAyNDIsIAotICAgIDE4NywgMjE4LCAxMzEsIDU4LCAxLCAyNDUsIDI4LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMTM4LCAxMzAsIDU4LCAxLCAKLSAgICAyMzAsIDIzMCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyNywgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAyMTAsIDI1NCwgMjQ4LCA1MiwgMTM4LCA3OSwgNTgsIDEsIDIxMSwgNzAsIDI0OCwgNTIsIDEzOCwgNzksIDU4LCAxLCAKLSAgICAyMTMsIDEzMywgNTgsIDEsIDIxNCwgMTg2LCA1OCwgMSwgNTIsIDI1NCwgNjUsIDU4LCAxLCAxMjEsIDEyNCwgMjU0LCAxLCAKLSAgICA1OCwgMSwgMTIxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDMsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDQsIDI1NCwgMSwgCi0gICAgNTgsIDEsIDEyMSwgMjIyLCAyMzYsIDU4LCAxLCAyMzAsIDIyOSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAyMzAsIAotICAgIDIyOSwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCA1OCwgMSwgMjMwLCAyMjksIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCA1OCwgMSwgCi0gICAgMTIxLCAxODQsIDU4LCAxLCAyMjMsIDE2MCwgMjQ5LCAyMzQsIDU4LCAxLCAyNTIsIDY2LCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAKLSAgICAyNDUsIDE1MSwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgMjUyLCA2NiwgMTIxLCAyMTYsIDMxLCA1OCwgMSwgMjQ1LCAxNTEsIAotICAgIDEyMSwgMjE2LCAzMSwgNTgsIDEsIDIyMCwgNTYsIDU4LCAxLCAyMDQsIDIyMCwgNTYsIDU4LCAxLCAxMjEsIDQzLCA3NSwgCi0gICAgMzgsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzOCwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDI1MCwgMzksIDI1NSwgMjMsIDM4LCAKLSAgICAxODQsIDM4LCAyMzEsIDIzNywgMzgsIDIyNiwgMTIzLCAzOCwgMjUxLCAxNTQsIDM4LCA1OSwgNDgsIDM4LCAyNDgsIDksIAotICAgIDM4LCAyNDEsIDU5LCA0OCwgMzgsIDIyMiwgMjM3LCA0OCwgMzgsIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCAzOCwgMjUwLCAKLSAgICAyNDIsIDM4LCA2NywgMjMyLCAyMjAsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIDIyMCwgNDgsIDM4LCA1MiwgMjQyLCAxNDQsIAotICAgIDI1NSwgMjMsIDM4LCAyNTEsIDcsIDM4LCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCAyMTUsIDk0LCAyNDksIDIyOCwgNDgsIAotICAgIDM4LCAyNDksIDIyOCwgNDgsIDM4LCAyMjMsIDUyLCAyNDksIDIyOCwgNDgsIDM4LCAyNDksIDIyOCwgNzIsIDIyMiwgMjU0LCAKLSAgICAzOCwgMjQyLCAxNDQsIDI1NSwgMjQsIDUxLCAzOCwgMjU1LCAxMiwgMjU1LCAyNCwgNTEsIDM4LCA0MywgMjE3LCA4OSwgNTEsIAotICAgIDM4LCA0NCwgMjE3LCA4OSwgNTEsIDM4LCA0MywgMjU0LCAxMTgsIDQ4LCAzOCwgMjQwLCAyNTUsIDM4LCA0MywgMTYzLCAKLSAgICAyMjIsIDIzNywgNTEsIDM4LCAxMjAsIDIxNywgODksIDUxLCAzOCwgMTI0LCAyMTcsIDg5LCA1MSwgMzgsIDk2LCA1LCA1MSwgCi0gICAgMzgsIDIzMCwgMTg3LCA1LCA1MSwgMzgsIDIyNiwgNjgsIDI0MSwgNTksIDUxLCAzOCwgMjIzLCA1OCwgMjQxLCA1OSwgNTEsIAotICAgIDM4LCA1OSwgNTEsIDM4LCAyNDgsIDEwLCA1MSwgMzgsIDIyMiwgMjM3LCA1MSwgMzgsIDI0OSwgMjI4LCA1MSwgMzgsIDI1MCwgCi0gICAgMTkxLCAzOCwgMjI2LCAyMjgsIDM4LCA2NywgMjMyLCAyMjAsIDUxLCAzOCwgMjUxLCAxNDgsIDUxLCAzOCwgMjM1LCAyMDAsIAotICAgIDUyLCAyNTQsIDMyLCA1MSwgMzgsIDI1MCwgMjQzLCA1MSwgMzgsIDI1MCwgMzksIDI1NSwgMjQsIDUxLCAzOCwgMjUxLCAKLSAgICAxNTUsIDUxLCAzOCwgMjM1LCAyMDAsIDI1MSwgMTU1LCA1MSwgMzgsIDIxNiwgOTAsIDUxLCAzOCwgMjMxLCAyMzgsIDUxLCAKLSAgICAzOCwgMTIxLCAyMzIsIDIxOSwgMzgsIDUyLCAxMjEsIDIzMiwgMjE5LCAzOCwgMjE2LCA5MCwgMjI2LCAxMjQsIDM4LCAyMTksIAotICAgIDI1MywgMjE4LCAxMDUsIDIyNiwgMTI0LCAzOCwgMjAwLCAyMTgsIDEwNSwgMjI2LCAxMjQsIDM4LCAyMTksIDI1MywgMjE5LCAKLSAgICA0OSwgMjI2LCAxMjQsIDM4LCAyMDAsIDIxOSwgNDksIDIyNiwgMTI0LCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDUxLCAzOCwgCi0gICAgMjM1LCAyMDAsIDI1MSwgMTQ4LCA1MSwgMzgsIDQyLCA1MSwgMzgsIDIyMSwgMTgyLCA1MSwgMzgsIDIxMSwgMTc5LCA0OCwgCi0gICAgMzgsIDY3LCAxODQsIDM4LCA1MiwgMjI2LCAxMjMsIDM4LCAyNDIsIDE0NCwgMTM4LCA3OSwgMzgsIDI1NSwgMTIsIDEzOCwgCi0gICAgNzksIDM4LCAyNiwgMjI1LCAxNzgsIDM4LCAyNiwgMjM0LCA4LCAzOCwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMzgsIDI2LCAKLSAgICAyMTAsIDIxOSwgMzgsIDI1MSwgMTQ4LCA0OCwgMzgsIDI0NSwgMTA2LCA1LCA1MSwgMzgsIDUyLCA2NywgMjMyLCAyMjAsIAotICAgIDUxLCAzOCwgNDMsIDI1NCwgMTE4LCA1MSwgMzgsIDIyOCwgNTcsIDIxNiwgOTAsIDQ4LCAzOCwgMjQxLCA2NSwgNDgsIDM4LCAKLSAgICAyNTQsIDE1NiwgMTI4LCAyMTYsIDQzLCA0OCwgMzgsIDQzLCA0NCwgODAsIDUxLCAzOCwgMjE0LCAxNTMsIDgwLCA1MSwgMzgsIAotICAgIDI0MiwgMTQ5LCAyMzUsIDY5LCAzOCwgNDQsIDI1NCwgMiwgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNywgNDgsIDM4LCAKLSAgICAyNDQsIDEzOSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDI1NCwgMiwgNTEsIDM4LCAKLSAgICA0NCwgMjU0LCAyLCAyMiwgMTIwLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDQ4LCAzOCwgNTksIDcyLCAKLSAgICAyMjIsIDI1NCwgMzgsIDI1MywgMjI1LCA1MSwgMzgsIDUyLCAyMjIsIDIzNywgNTEsIDM4LCAyMTAsIDM1LCA0OCwgMzgsIAotICAgIDUyLCAyNTEsIDE1NSwgNTEsIDM4LCA1MiwgMjUxLCAxNTQsIDM4LCA1MiwgMjMxLCAyMzcsIDM4LCA1MiwgMjMxLCAyMzgsIAotICAgIDUxLCAzOCwgNTIsIDE4NCwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCA1MiwgOTcsIDgwLCA1MSwgMzgsIDcsIAotICAgIDQsIDEsIDYxLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3NCwgMzgsIDcsIDQsIDEsIDc4LCAzOCwgNywgNCwgMSwgCi0gICAgNjksIDM4LCA3LCA0LCAxLCAyNTEsIDc0LCAzOCwgNywgNCwgMSwgMjQ5LCA2OCwgMzgsIDcsIDQsIDEsIDI0MiwgNjcsIDM4LCAKLSAgICA3LCA0LCAxLCAxOTQsIDM4LCA3LCA0LCAxLCAxNTMsIDM4LCA3LCA0LCAxLCAyMTcsIDE1MywgMzgsIDcsIDQsIDEsIDIxNCwgCi0gICAgMTA1LCAzOCwgNywgNCwgMSwgMjExLCAxNzgsIDI2LCA2LCAxLCAyNDEsIDIwMywgMjYsIDQsIDEsIDI0MSwgMjAzLCAyNiwgCi0gICAgNiwgMSwgMjU0LCAzMSwgMjIxLCAyNDgsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMjEsIDI0OCwgMjYsIDIyNywgMjAyLCA1MCwgCi0gICAgMjYsIDIzMiwgMTE0LCAyMjcsIDIwMiwgNTAsIDI2LCA2LCAxLCAyMjYsIDU1LCAyNDcsIDIzNSwgMjYsIDQsIDEsIDIyNiwgCi0gICAgNTUsIDI0NywgMjM1LCAyNiwgMjEwLCAyMTksIDI2LCA0LCAyMjMsIDUyLCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA0LCAKLSAgICAyNDYsIDEyNiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNCwgMjIzLCA1MiwgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgCi0gICAgMTgwLCA4NywgMjYsIDIyNCwgMTYsIDc5LCAyNiwgMjE2LCAxOSwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMjYsIDYsIDEsIAotICAgIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgMjU0LCAxMDUsIDIxNywgMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTYsIAotICAgIDE5LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMTYsIDE5LCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIyNiwgCi0gICAgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIxNiwgMTksIDI2LCA2LCAxLCAKLSAgICAyNTQsIDE1MSwgMjYsIDYsIDEsIDI1MiwgMzQsIDI2LCA2LCAxLCAyNDMsIDExNCwgMjYsIDYsIDEsIDI0OCwgNjIsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDEwOCwgMjYsIDYsIDEsIDIxMCwgODUsIDI2LCA2LCAxLCAyNDUsIDcxLCAyNiwgNiwgMSwgMjE2LCAxODAsIAotICAgIDI2LCA2LCAxLCAyMzUsIDE5MiwgMjYsIDYsIDEsIDIzNCwgMjI4LCAyNiwgNiwgMSwgMjMzLCAxMDQsIDI2LCA2LCAxLCAKLSAgICAyMzAsIDEwNywgMjYsIDYsIDEsIDIyNywgMjQyLCAyNiwgNiwgMSwgMjExLCAxNTcsIDI2LCA2LCAxLCAyMjYsIDIwMywgMjYsIAotICAgIDYsIDEsIDIyNSwgMTExLCAyNiwgNiwgMSwgMjIzLCA0MCwgMjYsIDYsIDEsIDIxOSwgMTc5LCAyNiwgNiwgMSwgMjE3LCA0MiwgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU3LCAyNiwgNiwgMSwgMjI1LCAxMzYsIDI2LCA2LCAxLCAyNTAsIDExOCwgMjYsIDYsIDEsIAotICAgIDIyNCwgMTY0LCAyNiwgNiwgMSwgMjI2LCAyMDUsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAzLCAyNiwgNiwgMSwgCi0gICAgMjE0LCAxNTgsIDIsIDI0OCwgMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjQ1LCAxMDksIAotICAgIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNiwgCi0gICAgMTksIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCA0LCAyMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDI1NCwgMTUxLCAyNiwgCi0gICAgNCwgMSwgMjUyLCAzNCwgMjYsIDQsIDEsIDI0MywgMTE0LCAyNiwgNCwgMSwgMjQ4LCA2MiwgMjYsIDQsIDEsIDI0NSwgMTA4LCAKLSAgICAyNiwgNCwgMSwgMjEwLCA4NSwgMjYsIDQsIDEsIDI0NSwgNzEsIDI2LCA0LCAxLCAyMTYsIDE4MCwgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkyLCAyNiwgNCwgMSwgMjM0LCAyMjgsIDI2LCA0LCAxLCAyMzMsIDEwNCwgMjYsIDQsIDEsIDIzMCwgMTA3LCAyNiwgNCwgCi0gICAgMSwgMjI3LCAyNDIsIDI2LCA0LCAxLCAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMjAzLCAyNiwgNCwgMSwgMjI1LCAxMTEsIAotICAgIDI2LCA0LCAxLCAyMjMsIDQwLCAyNiwgNCwgMSwgNDAsIDIxOSwgMTc5LCAyNiwgNCwgMSwgMjE5LCAxNzksIDI2LCA0LCAxLCAKLSAgICAyMTcsIDQyLCAyNiwgNCwgMSwgMjE0LCAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzNiwgMjYsIDQsIDEsIDI1MCwgMTE4LCAyNiwgCi0gICAgNCwgMSwgMjI0LCAxNjQsIDI2LCA0LCAxLCAyMjYsIDIwNSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDMsIDI2LCA0LCAKLSAgICAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAzLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMTQsIAotICAgIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNiwgMjM0LCAyNTMsIDg3LCAyNiwgCi0gICAgMjUyLCAzNSwgODcsIDI2LCAyMTYsIDE4MSwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQxLCA1OSwgODcsIDI2LCAyMTQsIAotICAgIDE1OCwgMiwgMjU1LCAxMiwgMjIsIDI0MSwgNTksIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMTAsIDIyLCAyNDEsIDU5LCAKLSAgICA4NywgMjYsIDIyNSwgMTM3LCA4NywgMjYsIDIyNSwgMTEyLCA4NywgMjYsIDIzNCwgMjUzLCA4NywgMjYsIDEsIDI1NCwgMzEsIAotICAgIDIzNCwgMTIsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMzQsIDEyLCAyNiwgMSwgMjE4LCAxMzksIDI2LCA0LCAxLCAyMTgsIDEzOSwgCi0gICAgMjYsIDEsIDI0NywgMjM1LCAyNiwgNCwgMSwgMjQ3LCAyMzUsIDI2LCAxLCAyMzQsIDEyLCAyNiwgNCwgMSwgMjM0LCAxMiwgCi0gICAgMjYsIDEsIDIyMSwgMjQ4LCAyNiwgNCwgMSwgMjIxLCAyNDgsIDgxLCA2LCAxLCAyMjAsIDU3LCA4MSwgNCwgMSwgMjIwLCAKLSAgICA1NywgODEsIDYsIDEsIDI0NCwgMTQ4LCA4MSwgNCwgMSwgMjQ0LCAxNDgsIDgxLCA2LCAxLCAyMzQsIDEyMywgODEsIDQsIDEsIAotICAgIDIzNCwgMTIzLCA4MSwgNiwgMSwgMjQxLCA1MiwgODEsIDQsIDEsIDI0MSwgNTIsIDgxLCA2LCAxLCAyNDMsIDEwOSwgODEsIAotICAgIDQsIDEsIDI0MywgMTA5LCA4MSwgNiwgMSwgMjIwLCAyNCwgODEsIDQsIDEsIDIyMCwgMjQsIDgxLCA2LCAxLCAyNDgsIDc3LCAKLSAgICA4MSwgNCwgMSwgMjQ4LCA3NywgMjYsIDIzNCwgMjI5LCA4NywgMjYsIDIyMywgNDEsIDg3LCAyNiwgMjMyLCA4OCwgMjE5LCAKLSAgICAxODAsIDg3LCAyNiwgMSwgMjEwLCAyMjQsIDI2LCA2LCAyMTYsIDE4MSwgODcsIDI2LCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIAotICAgIDI2LCAyMjMsIDUyLCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIDI2LCA2LCAxLCAyMjAsIDksIDI2LCA0LCAxLCAyMjAsIDksIAotICAgIDI2LCA2LCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA2LCAxLCAyMjEsIDI0NSwgMjYsIDQsIDEsIDIyMSwgMjQ1LCAyNiwgCi0gICAgMjIzLCA0MSwgMiwgMjE4LCAxMDUsIDg3LCAyNiwgNiwgMjIzLCA1MiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNiwgCi0gICAgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgMTgwLCA4NywgMjYsIDYsIDIyMywgNTIsIDI0NiwgMTI2LCAyMzIsIDg4LCAyMTksIAotICAgIDE4MCwgODcsIDMzLCA2LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgMzMsIDYsIDEsIDIzNSwgMTk2LCAzMywgNiwgMSwgCi0gICAgMjQ3LCAxNzAsIDMzLCA2LCAxLCAyNDIsIDE5NCwgMzMsIDYsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0NCwgMzMsIDYsIDEsIDI1MSwgODQsIDc0LCAzMywgNiwgMSwgMjExLCA4LCAzMywgNiwgMSwgMjM1LCAxMzIsIDMzLCA2LCAKLSAgICAxLCAyMzIsIDE5MywgMzMsIDYsIDEsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMzQsIDU0LCAKLSAgICAzMywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgNiwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0MCwgMzMsIDYsIDEsIDYxLCAzMywgNiwgMSwgMjUyLCA4MywgMzMsIDYsIDEsIDIxMywgMjU1LCAzMywgNiwgMSwgMjQyLCAKLSAgICAyNDMsIDMzLCA2LCAxLCAyNDgsIDk4LCAzMywgNiwgMSwgMjM2LCA2NywgMzMsIDYsIDEsIDIxMCwgNzQsIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk0LCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTksIDI1MywgNzQsIDMzLCA2LCAxLCAxNzYsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMzMsIDYsIDEsIDI0NSwgMTY3LCAzMywgNiwgMSwgMjQ1LCAxNTgsIDMzLCA2LCAxLCA3OCwgMzMsIDYsIDEsIAotICAgIDIyNSwgMjI0LCAzMywgNiwgMSwgMjQ1LCAxMDAsIDMzLCA2LCAxLCAyNDUsIDkwLCAzMywgNiwgMSwgMjE3LCAyMywgMzMsIAotICAgIDYsIDEsIDY5LCAzMywgNiwgMSwgMjQ1LCAyMTAsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OSwgMzMsIDYsIAotICAgIDEsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjIwLCAxMDQsIDMzLCA2LCAxLCAyMjAsIDY3LCAzMywgNiwgMSwgMjQyLCAxMCwgCi0gICAgNTAsIDMzLCA2LCAxLCAyMTEsIDI3LCAzMywgNiwgMSwgMjE5LCA1NCwgNTAsIDMzLCA2LCAxLCA3NiwgMzMsIDYsIDEsIAotICAgIDIxMCwgMjEyLCAzMywgNiwgMSwgMTkyLCAzMywgNCwgMSwgNjEsIDMzLCA0LCAxLCAyNTIsIDgzLCAzMywgNCwgMSwgMjEzLCAKLSAgICAyNTUsIDMzLCA0LCAxLCAyNDIsIDI0MywgMzMsIDQsIDEsIDI0OCwgOTgsIDMzLCA0LCAxLCAyMzYsIDY3LCAzMywgNCwgMSwgCi0gICAgMjEwLCA3NCwgMzMsIDQsIDEsIDIxMCwgOTQsIDMzLCA0LCAxLCA3NCwgMzMsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMzMsIDQsIAotICAgIDEsIDE3NiwgMzMsIDQsIDEsIDI0NSwgMTgyLCAzMywgNCwgMSwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyNDUsIDE1OCwgMzMsIAotICAgIDQsIDEsIDc4LCAzMywgNCwgMSwgMjI1LCAyMjQsIDMzLCA0LCAxLCAyNDUsIDEwMCwgMzMsIDQsIDEsIDI0NSwgOTAsIDMzLCAKLSAgICA0LCAxLCAyMTcsIDIzLCAzMywgNCwgMSwgNjksIDMzLCA0LCAxLCAyNDUsIDIxMCwgMzMsIDQsIDEsIDE2MiwgMzMsIDQsIDEsIAotICAgIDIxNSwgMTc5LCAzMywgNCwgMSwgMjUwLCAxMzksIDMzLCA0LCAxLCAyMjAsIDEwNCwgMzMsIDQsIDEsIDIyMCwgNjcsIDMzLCAKLSAgICA0LCAxLCAyNDIsIDEwLCA1MCwgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDU0LCA1MCwgMzMsIDQsIDEsIAotICAgIDc2LCAzMywgNCwgMSwgMjEwLCAyMTIsIDMzLCA0LCAxLCAxOTIsIDMzLCA0LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgCi0gICAgMzMsIDQsIDEsIDIzNSwgMTk2LCAzMywgNCwgMSwgMjQ3LCAxNzAsIDMzLCA0LCAxLCAyNDIsIDE5NCwgMzMsIDQsIDEsIAotICAgIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNCwgMSwgMjQ2LCA0NCwgMzMsIDQsIDEsIDI1MSwgODQsIDc0LCAzMywgNCwgMSwgCi0gICAgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAxMzIsIDMzLCA0LCAxLCAyMzIsIDE5MywgMzMsIDQsIDEsIDIyOCwgMTgzLCAzMywgCi0gICAgNCwgMSwgMjE1LCAxNzUsIDMzLCA0LCAxLCAyMzQsIDU0LCAzMywgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgCi0gICAgNCwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNCwgMSwgMjQ2LCA0MCwgMzMsIDYsIDEsIDIyNiwgMjA1LCAzMywgNCwgMSwgMjI2LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMTEsIDU5LCAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDQsIAotICAgIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDYsIDEsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTk4LCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE5MCwgMjMyLCAKLSAgICAxOTgsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDMzLCA2LCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAyNTIsIDEsIDIxMCwgCi0gICAgMTgzLCAzMywgNiwgMSwgMjMzLCAyMzksIDMzLCA0LCAxLCAyMzMsIDIzOSwgMzMsIDYsIDEsIDIyNCwgMTY0LCAzMywgNCwgCi0gICAgMSwgMjI0LCAxNjQsIDMzLCA2LCAxLCAyNDQsIDkwLCAzMywgNCwgMSwgMjQ0LCA5MCwgMzMsIDYsIDEsIDIzNSwgMTUyLCAKLSAgICAzMywgNCwgMSwgMjM1LCAxNTIsIDMzLCA2LCAxLCAyMzUsIDE1MywgMiwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzMywgNCwgCi0gICAgMSwgMjM1LCAxNTMsIDIsIDUyLCAyNDIsIDE0NCwgMjU1LCAyMywgMzMsIDYsIDEsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjE0LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA0LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjE2LCA2NiwgMzMsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDY2LCAzMywgNiwgMSwgMjI2LCAKLSAgICAxNDQsIDMzLCA0LCAxLCAyMjYsIDE0NCwgMzMsIDYsIDEsIDIzNCwgMTIsIDMzLCA0LCAxLCAyMzQsIDEyLCAzMywgMjE2LCAKLSAgICAxNDcsIDUwLCAzOCwgMzMsIDIxNiwgNjYsIDM4LCAzMywgMjI2LCA2OSwgMzgsIDMzLCAyNDgsIDE2MiwgMjI1LCAyMSwgMzgsIAotICAgIDMzLCAyMjQsIDE1OCwgMjI1LCAyMSwgMzgsIDMzLCAyMjUsIDYsIDM4LCAzMywgMjQwLCAyMTgsIDIxNiwgMTQ3LCA1MCwgCi0gICAgMzgsIDMzLCAyMzAsIDE5NiwgNTAsIDMzLCA2LCAxLCAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA2LCAxLCAyMjAsIDE0OCwgNTAsIDMzLCA0LCAxLCAyMjAsIAotICAgIDE0OCwgNTAsIDMzLCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxMTUsIDMzLCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAKLSAgICAxMTUsIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIAotICAgIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDI0NCwgCi0gICAgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjEwLCAKLSAgICA3NSwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIAotICAgIDQ3LCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIzNSwgMTksIDIsIDI0OCwgNDcsIDMzLCA0LCAKLSAgICAxLCAyMzUsIDE5LCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjM1LCAxOSwgCi0gICAgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgOTEsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCA5MSwgMzMsIDYsIDEsIAotICAgIDI1MiwgMTMyLCAxNzYsIDMzLCA0LCAxLCAyNTIsIDEzMiwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNTksIDIsIDI0OCwgNDcsIAotICAgIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjQ4LCA0NywgMzMsIDYsIDI3LCAyNDUsIDE1OSwgMjQyLCAyNDMsIDMzLCA0LCAyNywgCi0gICAgMjQ1LCAxNTksIDI0MiwgMjQzLCAzMywgNiwgMSwgMjI1LCAyMjUsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMjUsIAotICAgIDIyNSwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDYsIDEsIDI1NSwgMjksIDE2MiwgMzMsIDQsIDEsIDI1NSwgMjksIDE2MiwgCi0gICAgMzMsIDYsIDEsIDI0NSwgOTEsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyNDUsIDkxLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjE3LCAyNCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxNywgMjQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTgsIDEyMywgCi0gICAgNjksIDMzLCA0LCAxLCAyMTgsIDEyMywgNjksIDMzLCA2LCAxLCAyMTgsIDEyMywgMTA0LCAyLCA5MSwgMzMsIDQsIDEsIAotICAgIDIxOCwgMTIzLCAxMDQsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCA1NiwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI0MiwgNTYsIAotICAgIDIsIDI0OCwgNDcsIDMzLCA2LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIDMzLCA0LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIAotICAgIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjUwLCAxNDAsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMjAsIDM1LCAKLSAgICAzMywgNCwgMSwgMjIwLCAzNSwgMzMsIDYsIDEsIDI1NSwgMjksIDI1MCwgMTM5LCAzMywgNCwgMSwgMjU1LCAyOSwgMjUwLCAKLSAgICAxMzksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1NSwgMjksIDI1MCwgCi0gICAgMTQwLCAyLCAyNDgsIDQ3LCAzMywgMSwgMjI2LCA2MiwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTU0LCAzMywgNCwgCi0gICAgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMzUsIDE5LCAyLCAxMDMsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCAKLSAgICAxMDMsIDMzLCA2LCAxLCAyNDUsIDE4MywgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMTcsIDc4LCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAyMTcsIDc4LCAzMywgNiwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAKLSAgICAzMywgNCwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjQ1LCAxNjgsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyNDUsIDE2OCwgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDIyNiwgNjIsIDMzLCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU0LCAzMywgCi0gICAgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgMzMsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTE2LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAyNywgMTE2LCAyMzYsIDY3LCAzMywgNCwgMjcsIDExNiwgMjM2LCA2NywgMzMsIDYsIDEsIDIzNiwgNjgsIAotICAgIDIsIDI1MSwgMTU0LCAzMywgNCwgMSwgMjM2LCA2OCwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMjEsIDE5NywgMzMsIDQsIAotICAgIDEsIDIyMSwgMTk3LCAzMywgNiwgMSwgMjIxLCAxOTgsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIyMSwgMTk4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNDYsIAotICAgIDQ0LCAzMywgNCwgMSwgMjU1LCAyOSwgMjQ2LCA0NCwgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgMjQ4LCA5LCAzMywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAxNDQsIDIsIDI0OCwgOSwgMzMsIAotICAgIDYsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDQsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDYsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIAotICAgIDI0OCwgOSwgMzMsIDQsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDE2MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCAzMywgNCwgMSwgMTA0LCAyLCAyMzEsIAotICAgIDIzNywgMzMsIDYsIDEsIDEwNCwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTA0LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIAotICAgIDIsIDUyLCAxNDIsIDMzLCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMjUwLCAxNDAsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjQyLCAKLSAgICAyNDQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAxMDUsIDIyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAKLSAgICAxMDUsIDIyLCAxMDMsIDMzLCA2LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCAKLSAgICA2LCAxLCAyNDIsIDU2LCAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgNTYsIDIsIDkxLCAzMywgNiwgMSwgMjM0LCAyMCwgMjQ4LCAKLSAgICA5OCwgMzMsIDQsIDEsIDIzNCwgMjAsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDcsIDE3MCwgMzMsIDQsIDEsIAotICAgIDIzNCwgMjAsIDI0NywgMTcwLCAzMywgNiwgMSwgMjM0LCAyMCwgMjEwLCAyNywgMzMsIDQsIDEsIDIzNCwgMjAsIDIxMCwgCi0gICAgMjcsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDYsIDM4LCAzMywgNCwgMSwgMjM0LCAyMCwgMjQ2LCAzOCwgMzMsIDYsIDEsIAotICAgIDIzNCwgMjAsIDIzMiwgMTkzLCAzMywgNCwgMSwgMjM0LCAyMCwgMjMyLCAxOTMsIDMzLCA2LCAxLCAyMzQsIDIwLCAyMjgsIAotICAgIDE4MywgMzMsIDQsIDEsIDIzNCwgMjAsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjM0LCAyMCwgMjE5LCAxMTEsIDMzLCA0LCAxLCAKLSAgICAyMzQsIDIwLCAyMTksIDExMSwgMzMsIDYsIDEsIDIzNCwgMjAsIDIxNiwgNjEsIDMzLCA0LCAxLCAyMzQsIDIwLCAyMTYsIAotICAgIDYxLCAzMywgNiwgMSwgMjIzLCA1MiwgMjEwLCA5NCwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgOTQsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MywgMiwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxODMsIDIsIDEwMywgMzMsIDYsIDEsIDIzMywgNCwgMzMsIDQsIDEsIAotICAgIDIzMywgNCwgMzMsIDYsIDEsIDIyMywgNDIsIDMzLCA0LCAxLCAyMjMsIDQyLCAzMywgNiwgMSwgMjExLCA5MiwgMzMsIDQsIAotICAgIDEsIDIxMSwgOTIsIDMzLCA2LCAxLCAyMjQsIDkxLCAzMywgNCwgMSwgMjI0LCA5MSwgMzMsIDYsIDEsIDIxMiwgMjIsIDMzLCAKLSAgICA0LCAxLCAyMTIsIDIyLCAzMywgNiwgMSwgMjU0LCAxNzUsIDE3NiwgMzMsIDQsIDEsIDI1NCwgMTc1LCAxNzYsIDMzLCA2LCAKLSAgICAxLCAyNDUsIDE4MywgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjMwLCAyMjksIDEwMywgCi0gICAgMzMsIDYsIDEsIDIyNSwgMjI1LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjI1LCAyMjUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAKLSAgICAyMjAsIDM2LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjIwLCAzNiwgMiwgMjQ4LCA0NywgMTUwLCA2LCAxLCAyNTMsIDE3MiwgCi0gICAgMTUwLCA2LCAxLCAyNTIsIDQ3LCAxNTAsIDYsIDEsIDI0MiwgMjEwLCAxNTAsIDYsIDEsIDI0OCwgMjI5LCAxNTAsIDYsIDEsIAotICAgIDI0NSwgMjIxLCAxNTAsIDYsIDEsIDIxMCwgMTE2LCAxNTAsIDYsIDEsIDI0NSwgMjA1LCAxNTAsIDYsIDEsIDI0NSwgNzMsIAotICAgIDE1MCwgNiwgMSwgMTEyLCAxNTAsIDYsIDEsIDIxMCwgNzQsIDE1MCwgNiwgMSwgMjM1LCAyMzQsIDE1MCwgNiwgMSwgMjMyLCAKLSAgICAxOTYsIDE1MCwgNiwgMSwgMjExLCAxNjAsIDE1MCwgNiwgMSwgMjUxLCA0MSwgMTUwLCA2LCAxLCAyMzQsIDE3MSwgMTUwLCAKLSAgICA2LCAxLCAyNDEsIDc1LCAxNTAsIDYsIDEsIDIzNSwgMTQ3LCAxNTAsIDYsIDEsIDI0MiwgMjUzLCAxNTAsIDYsIDEsIDI1MCwgCi0gICAgMTM0LCAxNTAsIDYsIDEsIDIzMSwgNjMsIDE1MCwgNiwgMSwgMjExLCA4LCAxNTAsIDYsIDEsIDIyOCwgNDQsIDE1MCwgNiwgCi0gICAgMSwgMjIwLCAxMDQsIDE1MCwgNiwgMSwgMjEzLCAxMzgsIDE1MCwgNiwgMSwgMjUwLCAxNjUsIDE1MCwgNiwgMSwgMjI1LCAKLSAgICAyMDgsIDE1MCwgNiwgMSwgMjM1LCAxMTYsIDE1MCwgNiwgMSwgMjA1LCAxNTAsIDYsIDEsIDIyMSwgMTYzLCAxNTAsIDYsIDEsIAotICAgIDIxMywgMTc5LCAxNTAsIDYsIDEsIDIxNiwgNjMsIDE1MCwgNiwgMSwgMjIzLCA5OCwgMTUwLCA2LCAxLCAyNDksIDI0NiwgCi0gICAgMTUwLCA2LCAxLCAyMTAsIDI0OSwgMTUwLCA2LCAxLCAyMjUsIDQ5LCAxNTAsIDYsIDEsIDIzNCwgMTgyLCAxNTAsIDYsIDEsIAotICAgIDIyNiwgMjI2LCAxNTAsIDYsIDEsIDI0NCwgMTUwLCAxNTAsIDU4LCAxLCA0MywgMTYzLCAyMjIsIDIzNiwgMTUwLCAyNTQsIAotICAgIDY1LCAxNTAsIDI0NSwgMTYyLCA3OSwgMTUwLCAyNDUsIDM5LCA3OSwgMTUwLCAyNDksIDIyNywgMTUwLCAyMjQsIDE2LCA3OSwgCi0gICAgMTUwLCAyNTUsIDMwLCA3OSwgMTUwLCA0LCAxLCAyNTMsIDE3MiwgMTUwLCA0LCAxLCAyNTIsIDQ3LCAxNTAsIDQsIDEsIAotICAgIDI0MiwgMjEwLCAxNTAsIDQsIDEsIDI0OCwgMjI5LCAxNTAsIDQsIDEsIDI0NSwgMjIxLCAxNTAsIDQsIDEsIDIxMCwgMTE2LCAKLSAgICAxNTAsIDQsIDEsIDI0NSwgMjA1LCAxNTAsIDQsIDEsIDI0NSwgNzMsIDE1MCwgNCwgMSwgMTEyLCAxNTAsIDQsIDEsIDIxMCwgCi0gICAgNzQsIDE1MCwgNCwgMSwgMjM1LCAyMzQsIDE1MCwgNCwgMSwgMjMyLCAxOTYsIDE1MCwgNCwgMSwgMjExLCAxNjAsIDE1MCwgCi0gICAgNCwgMSwgMjUxLCA0MSwgMTUwLCA0LCAxLCAyMzQsIDE3MSwgMTUwLCA0LCAxLCAyNDEsIDc1LCAxNTAsIDQsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNTAsIDQsIDEsIDI0MiwgMjUzLCAxNTAsIDQsIDEsIDI1MCwgMTM0LCAxNTAsIDQsIDEsIDIzMSwgNjMsIDE1MCwgCi0gICAgNCwgMSwgMjExLCA4LCAxNTAsIDQsIDEsIDIyOCwgNDQsIDE1MCwgNCwgMSwgMjIwLCAxMDQsIDE1MCwgNCwgMSwgMjEzLCAKLSAgICAxMzgsIDE1MCwgNCwgMSwgMjUwLCAxNjUsIDE1MCwgNCwgMSwgMjI1LCAyMDgsIDE1MCwgNCwgMSwgMjM1LCAxMTYsIDE1MCwgCi0gICAgNCwgMSwgMjA1LCAxNTAsIDQsIDEsIDIyMSwgMTYzLCAxNTAsIDQsIDEsIDIxMywgMTc5LCAxNTAsIDQsIDEsIDIxNiwgNjMsIAotICAgIDE1MCwgNCwgMSwgMjIzLCA5OCwgMTUwLCA0LCAxLCAyNDksIDI0NiwgMTUwLCA0LCAxLCAyMTAsIDI0OSwgMTUwLCA0LCAxLCAKLSAgICAyMjUsIDQ5LCAxNTAsIDQsIDEsIDIzNCwgMTgyLCAxNTAsIDQsIDEsIDIyNiwgMjI2LCAxNTAsIDQsIDEsIDI0NCwgMTUwLCAKLSAgICAxNTAsIDQsIDI3LCAyNDUsIDIyMiwgMjEwLCAyNDksIDE1MCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAxNTAsIDI0MCwgMTc1LCAKLSAgICAxNTAsIDI0NiwgMTAzLCA1MCwgOTQsIDI1NSwgMjQsIDI0NSwgNjUsIDk0LCAyNTUsIDI0LCAyMjEsIDE2NCwgOTQsIDI1NSwgCi0gICAgMjQsIDIyMCwgOTAsIDk0LCAyNTUsIDI0LCAyMTAsIDEwNCwgMjI0LCA3NCwgOTQsIDI1NSwgMjQsIDIxMCwgMTA0LCAyNDMsIAotICAgIDEzMiwgOTQsIDI1NSwgMjQsIDIxNiwgNzYsIDk0LCAyNTUsIDI0LCAyMjMsIDUwLCA5NCwgMjU1LCAyNCwgMjEwLCAxMDMsIAotICAgIDk0LCAyNTUsIDI0LCAyMjUsIDI0OSwgOTQsIDI1NSwgMjQsIDIxMSwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDIxNSwgOTQsIAotICAgIDI1NSwgMjQsIDI0MywgNDgsIDk0LCAyNTUsIDI0LCAyNDMsIDQ5LCAyMzAsIDc0LCA5NCwgMjU1LCAyNCwgMjQzLCA0NiwgCi0gICAgOTQsIDI1NSwgMjQsIDIyNCwgNzUsIDIyNiwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjQzLCA2MywgOTQsIDI1NSwgCi0gICAgMjQsIDIyNSwgMjMwLCA5NCwgMjU1LCAyNCwgMjUzLCAyMDgsIDI0MiwgNDgsIDk0LCAyNTUsIDI0LCAyMzAsIDg0LCA5NCwgCi0gICAgMjU1LCAyNCwgMjMxLCAyMTMsIDk0LCAyNTUsIDI0LCAyMzEsIDU0LCA5NCwgMjU1LCAyNCwgMjMxLCA1NSwgMjM0LCAxODMsIAotICAgIDk0LCAyNTUsIDI0LCAyNDgsIDE3MSwgOTQsIDI1NSwgMjQsIDIyNCwgODYsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjI0LCAKLSAgICA3MCwgOTQsIDI1NSwgMjQsIDIxMSwgMzAsIDI1MiwgNDgsIDIxMCwgMjMwLCA5NCwgMjU1LCAyNCwgMjI2LCAyMTEsIDk0LCAKLSAgICAyNTUsIDI0LCAyMzYsIDI2LCA5NCwgMjU1LCAyNCwgMjQ4LCA3OCwgOTQsIDI1NSwgMjQsIDIxMCwgMzMsIDk0LCAxNjQsIAotICAgIDIzMSwgMTQ4LCAyNTAsIDQzLCA5NCwgMjI1LCAxNCwgMjIwLCAzOCwgOTQsIDIyNSwgMTQsIDI0MiwgMSwgMjIxLCAxNjQsIAotICAgIDk0LCAyMjUsIDE0LCAyNDIsIDEsIDIyNSwgMjQzLCA5NCwgMjI1LCAxNCwgMjQyLCAxLCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgCi0gICAgMjQxLCAxNjUsIDk0LCAyMjUsIDE0LCAyMTUsIDE3NywgOTQsIDIyNSwgMTQsIDIyMSwgMTY0LCA5NCwgMjI1LCAxNCwgMjI1LCAKLSAgICAyNDMsIDk0LCAyMjUsIDE0LCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgMjQxLCA2OCwgOTQsIDIyNSwgMTQsIDI0MSwgNjksIAotICAgIDI0MiwgMywgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTQsIDIyNCwgMjAsIDk0LCAyMjUsIDE0LCAyNDgsIDIxNiwgMTc3LCAKLSAgICAyMzEsIDE3NiwgOTQsIDIyNSwgMTQsIDIzMSwgNDMsIDk0LCAyMjQsIDE0NCwgMjMxLCAxNzMsIDk0LCAyMjUsIDE0LCAyMjMsIAotICAgIDE3MiwgOTQsIDIyNCwgMTQ0LCAyMjUsIDI1MSwgOTQsIDIyNSwgMTQsIDIyMCwgMjMsIDI0NywgMTI4LCA5NCwgMjI1LCAxNCwgCi0gICAgMjE5LCAxNjEsIDI0NywgMTI4LCA5NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIyNSwgMjQ1LCA5NCwgMTY0LCAyMTQsIDE2MCwgCi0gICAgMjQ3LCAxMjgsIDk0LCAxNjQsIDIzMiwgMTE0LCAyNDcsIDEyOCwgOTQsIDIyNCwgMTQ0LCAyMjcsIDE5OSwgMjQyLCA0NywgCi0gICAgOTQsIDIyNSwgMTQsIDIyNCwgODAsIDIyNCwgNzQsIDk0LCAxLCAyNTQsIDE3OSwgOTQsIDEsIDI1MiwgMzYsIDk0LCAxLCAKLSAgICAyNDIsIDIwOCwgOTQsIDEsIDI0OCwgMTk3LCA5NCwgMSwgMjQxLCAyNDUsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAyMTAsIAotICAgIDk3LCA5NCwgMSwgMjQxLCAyMDQsIDk0LCAxLCAyMTYsIDIzMSwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIDIzNSwgMCwgCi0gICAgOTQsIDEsIDIzNSwgMCwgOTQsIDEsIDIzMywgMTAwLCA5NCwgMSwgNDAsIDIzMSwgNzAsIDk0LCAxLCAyMzEsIDcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNywgMTk4LCA5NCwgMSwgMjI3LCAxOTgsIDk0LCAxLCAyMjEsIDI1MSwgOTQsIDEsIDI1MywgMTcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNSwgMjI0LCA5NCwgMSwgMjI1LCAyMjQsIDk0LCAxLCA0MCwgMjE1LCAxODAsIDk0LCAxLCAyMTUsIDE4MCwgCi0gICAgOTQsIDEsIDIyNCwgNDIsIDk0LCAxLCAyMjMsIDcwLCA5NCwgMSwgMjIwLCAyMiwgOTQsIDEsIDIxNywgMzksIDk0LCAyNywgCi0gICAgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAyMTEsIDYsIDUyLCAKLSAgICAyMTAsIDIzMywgOTQsIDIyNCwgMTQ0LCAyNDMsIDQ4LCA5NCwgMjI0LCAxNDQsIDI0MywgNDYsIDksIDU0LCA1MCwgOSwgNSwgCi0gICAgMjIxLCAyNDQsIDksIDI0NCwgMzgsIDIzMSwgMTU5LCA5LCA1LCAyMjIsIDI1LCA5LCA1LCAyMjEsIDI0NywgMjU0LCA0NSwgCi0gICAgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNTQsIDQ1LCAyNDQsIDEyLCAyMjIsIDE5NSwgOSwgMjIzLCAxMzcsIDI1NCwgNDUsIAotICAgIDIyNSwgMTg2LCAyMzAsIDE5OCwgNTAsIDI1NCwgNDUsIDIyNSwgMTg2LCAyMTYsIDI0OSwgMjE2LCAxNDksIDUwLCAyNTQsIAotICAgIDIzMCwgNTAsIDksIDI0OSwgMjI3LCA5LCAyNDgsIDE1OCwgMjIwLCAxMzksIDksIDIyNSwgMTYsIDIxMywgMjQxLCA1MCwgOSwgCi0gICAgNSwgMjMwLCAxNzksIDksIDUsIDIyMiwgNSwgMjU0LCAxODEsIDIxMiwgNDUsIDksIDUsIDI1NCwgMTgxLCAyNTMsIDIyOSwgCi0gICAgOSwgNSwgMjIzLCAxNzAsIDI1NCwgMTgwLCA5LCA1LCAyMjMsIDE3OCwgMjU0LCAxNjEsIDI1NCwgMTEyLCA5LCA1LCAyMTcsIAotICAgIDcxLCA5LCA0LCAxMjUsIDIxNywgODEsIDksIDQsIDEyNSwgMjcsIDEwOSwgMiwgMjMzLCAxMDksIDIsIDIxMSwgNDMsIDksIAotICAgIDQsIDEyNSwgMjEwLCAxMDgsIDksIDQsIDI0NCwgMTczLCA5LCA0LCAyNDgsIDE5MiwgOSwgNCwgMjM0LCAyMTEsIDksIDIyMCwgCi0gICAgMTUyLCA5LCAxLCA3OSwgOSwgMjE1LCAyMTIsIDU5LCAyMjQsIDE0NCwgNzksIDksIDIyNCwgMTYsIDc5LCA5LCAxLCAyMzQsIAotICAgIDIxNSwgMjExLCA0MywgOSwgMSwgMjQyLCAyNiwgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNDgsIDksIDEsIDEwOSwgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjEyLCAzMSwgMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAxODIsIDUxLCA5LCAxLCA3NywgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjU0LCAxNzksIDksIDEsIDI1MiwgNjIsIDksIDEsIDIxNywgOSwgMjMxLCAxNjksIDksIDEsIAotICAgIDIxNywgOCwgOSwgMSwgMjE2LCAxOTMsIDksIDEsIDIzNSwgMTI5LCA5LCAxLCAyNDIsIDQ0LCA5LCAxLCAyMzQsIDEzNSwgOSwgCi0gICAgMSwgMjQ4LCAyMDMsIDksIDEsIDIxNiwgMjAzLCA5LCAxLCAyMjMsIDk4LCA5LCAxLCAyMTAsIDEwOCwgOSwgMSwgMjIxLCAKLSAgICAxNjgsIDksIDEsIDIyMCwgNjEsIDksIDEsIDIyMiwgMjgsIDksIDEsIDI0OCwgMjI0LCA5LCAxLCAyMTcsIDgxLCA5LCAxLCAKLSAgICAyMTAsIDExMSwgOSwgMSwgMjU0LCAyMDUsIDksIDEsIDI0MiwgMjUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgMTEzLCAxNzAsIAotICAgIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAxLCAyNDQsIDE3NiwgNzcsIDIsIDIzNSwgMjAwLCAKLSAgICAyMTQsIDEwNSwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgCi0gICAgMTM0LCAxNzAsIDQ4LCA5LCAyMTcsIDQ0LCA5LCAxLCAyNDQsIDE1MCwgOSwgMSwgMjI0LCA4NCwgOSwgMSwgMjM1LCAwLCA5LCAKLSAgICAxLCAyMzMsIDEwOCwgOSwgMSwgMjMxLCA4MywgOSwgMSwgMjI4LCA2NywgOSwgMSwgMjQxLCAyMjUsIDksIDEsIDIxMiwgMzAsIAotICAgIDksIDEsIDEwOSwgMjMxLCAxOTcsIDksIDEsIDIxMSwgNDMsIDksIDI0NCwgMTcxLCA5LCAyNDgsIDE5MCwgOSwgMjM0LCAKLSAgICAyMDksIDksIDI0NCwgMTczLCA5LCAyNDgsIDE5MiwgOSwgMjM0LCAyMTEsIDksIDIyMCwgOTUsIDksIDIxOCwgNDYsIDksIAotICAgIDIzMSwgMjMxLCA0OCwgOSwgMTgyLCA0OCwgOSwgMTgyLCA1MSwgOSwgMjE4LCA2NiwgMjU0LCAxNzksIDksIDIzNSwgMjAwLCAKLSAgICAyNDgsIDE5MiwgOSwgMTY0LCAyMjgsIDY4LCAyNDIsIDIyNSwgOSwgMjA5LCAyNTUsIDksIDI1LCA1LCA0LCAyMTQsIDEwNiwgCi0gICAgNDgsIDksIDI1LCA1LCAyMzUsIDIwMCwgNCwgMjE0LCAxMDYsIDQ4LCA5LCAyNSwgNSwgNTksIDUxLCA5LCAyMjMsIDUyLCAKLSAgICAyNDgsIDE5MiwgOSwgMjQ0LCAxNzQsIDIsIDExMywgMjQ3LCAxMjYsIDksIDIxMiwgMzIsIDE4MiwgNTEsIDI1NCwgNDUsIAotICAgIDIxLCAyMTAsIDg2LCAyNTQsIDQ1LCAyMSwgMTExLCAyNTQsIDQ1LCAyMSwgMTA1LCAyNTQsIDQ1LCAyMSwgMTU4LCAyNTQsIAotICAgIDQ1LCAyMSwgMTYxLCAyNTQsIDQ1LCAyMSwgMTkwLCAyNTQsIDQ1LCAyMSwgMTk1LCAyNTQsIDQ1LCAyMSwgMTk5LCAyNTQsIAotICAgIDQ1LCAyMSwgMTk2LCAyNTQsIDQ1LCAyMSwgMjAxLCA5LCAyMjUsIDE4NSwgNTAsIDksIDI0OCwgOTEsIDIyMCwgMTM5LCA5LCAKLSAgICAyMTYsIDE0NywgMjIwLCAxMzksIDksIDI0NCwgODksIDIyNSwgMTIsIDIxOCwgMTU4LCA5LCAxLCAyNDcsIDEyNywgMjUyLCAKLSAgICA2MiwgOSwgMSwgMjQ3LCAxMjcsIDIyNCwgODQsIDksIDEsIDIxOCwgMjQsIDI1NCwgMTc5LCA5LCAxLCAxMDksIDIxMiwgNDYsIAotICAgIDksIDEsIDEwOSwgMiwgMjEyLCAzMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAyMTIsIDMyLCAxODIsIDUxLCA5LCAxLCAKLSAgICAxMjUsIDI0MiwgMjYsIDksIDEsIDEyNSwgMTgyLCAyNTQsIDE3OSwgOSwgMSwgMTI1LCAxODIsIDIxMiwgMzAsIDksIDEsIAotICAgIDEwNCwgMiwgMTgyLCA0OCwgOSwgMSwgMTI1LCAxODIsIDIxMSwgNDMsIDksIDEsIDIxNSwgMTQ5LCA5LCAxLCAyMTUsIDE0NywgCi0gICAgOSwgMSwgMjUyLCA3MiwgOSwgMSwgMjE3LCA5LCAyLCAyMjIsIDIzNiwgOSwgMSwgMjE3LCA5LCAyLCAxMzQsIDE3MCwgNzIsIAotICAgIDI0NiwgMTExLCA5LCAxLCAyMjUsIDIwOCwgOSwgMSwgMjE3LCA2LCA5LCAxLCAyNTIsIDYwLCA5LCAxLCAxMjIsIDIsIDE4MiwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMTEzLCAxNzAsIDY3LCA0OCwgOSwgMSwgMjI3LCAxNTcsIDksIDEsIDI0NiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMTcsIDI3LCA5LCAxLCAyMTcsIDI1LCA5LCAxLCAyNDgsIDEzOCwgOSwgMSwgCi0gICAgMjQ4LCAyMDQsIDIsIDIyMiwgMjM2LCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIDUxLCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIAotICAgIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwOSwgOSwgMSwgMjQ4LCAxNDAsIDksIDEsIDI0NiwgNzgsIAotICAgIDksIDEsIDI0OCwgMjA0LCAyLCAxMzQsIDE3MCwgNzIsIDI0NiwgMTExLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjQ0LCAxOSwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjIyLCAxNzMsIDksIDEsIDIyMywgOTksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMjMsIDk5LCAyLCAKLSAgICAyMjIsIDIzNiwgOSwgMSwgMjIzLCA5OSwgMiwgNTksIDUxLCA5LCAxLCAyMjMsIDk5LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIAotICAgIDEsIDIyMywgOTksIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAxMTMsIDE3MCwgNDgsIAotICAgIDksIDEsIDIzNSwgMTI2LCA5LCAxLCAyMjMsIDk5LCAyLCAyNDQsIDE5LCAxNzAsIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDksIDEsIDIyMSwgMTY5LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyMSwgMTY5LCAKLSAgICAyLCAxMzQsIDE3MCwgMjUyLCA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjIyLCAyOSwgMiwgMTEzLCAxNzAsIDUxLCAKLSAgICA5LCAxLCAyMjIsIDI5LCAyLCAxMzQsIDE3MCwgNDgsIDksIDEsIDIxNywgODIsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgCi0gICAgMjU0LCAyMDYsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxLCAyNDQsIDE1MSwgMiwgCi0gICAgNTksIDIzMCwgMTE0LCA1MSwgOSwgMSwgMjQ0LCAxNTEsIDIsIDU5LCA1MSwgOSwgMSwgMjEzLCAyNDgsIDksIDEsIDI0NCwgCi0gICAgMTUxLCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyNSwgMjA2LCA5LCAxLCAyMjQsIDg1LCAyLCA1OSwgNDgsIDksIDEsIAotICAgIDIyNCwgODUsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjM0LCAxODAsIDksIDEsIDIxNywgMjUxLCAyMzUsIDAsIDksIDEsIAotICAgIDIzNSwgMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNSwgMSwgMiwgNTksIDQ4LCA5LCAxLCAyMjksIDg0LCA5LCAxLCAyMzUsIAotICAgIDEsIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgMjQzLCAxMjksIDksIDEsIDI0MywgMTMwLCAyLCAyMjIsIDIzNiwgOSwgMSwgCi0gICAgMjI5LCA3LCA5LCAxLCAyNDMsIDEzMCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyNDIsIDEwOCwgOSwgMSwgMjQzLCAxMzAsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjMzLCAxMDksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMzMsIDEwOSwgMiwgNTksIAotICAgIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAKLSAgICAxLCAyMjgsIDY4LCAyLCA1OSwgNTEsIDksIDEsIDIyOCwgNjgsIDI0MiwgMjI1LCA5LCAxLCAyMjIsIDIxNiwgOSwgMSwgCi0gICAgMjI4LCA2OCwgMiwgMjIyLCAyMzYsIDksIDEsIDIyOCwgNjgsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQxLCAyMjYsIAotICAgIDI0NywgMTQ5LCA5LCAxLCAyMTcsIDI4LCAyLCA1OSwgNDgsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNDgsIDksIDEsIDI0MSwgCi0gICAgMjI2LCAyNDIsIDE3OCwgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAyLCAxODIsIDQ4LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCAyNDIsIDE3OCwgOSwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNCwgNzksIDIyNiwgMjM4LCA5LCAxLCAKLSAgICAyMjYsIDIzOCwgOSwgMSwgNjksIDksIDEsIDIxMCwgMjEyLCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMiwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyMTMsIDI1NSwgOSwgMSwgMjQ0LCAxNzYsIDIxMSwgNDMsIDksIDEsIDc3LCAKLSAgICAyLCAyMTcsIDc4LCA5LCAxLCA3NywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgOSwgMSwgNzYsIAotICAgIDksIDEsIDc3LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDc3LCAyNTIsIDE0MCwgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAKLSAgICAxODIsIDQ4LCA5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDksIDEsIDI1NCwgMjUyLCA5LCA0LCAxMjUsIDI3LCAyMjIsIDI5LCAKLSAgICAyLCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5NywgOSwgNCwgMTI1LCAyNywgMjI0LCA4NSwgMiwgMjMzLCAxMDksIDIsIAotICAgIDEwOSwgMjMxLCAxOTcsIDksIDQsIDEyNSwgNjYsIDY1LCAxNywgOSwgNCwgMTI1LCAyMzMsIDEwOSwgMjU0LCAxNzksIDksIAotICAgIDQsIDEyNSwgMjM1LCAxMjksIDksIDQsIDEyNSwgMTM0LCAyNDcsIDEyNiwgOSwgNCwgMTI1LCAyMjEsIDE2OCwgOSwgMjQ1LCAKLSAgICAxNTEsIDY0LCAyNTMsIDE3NCwgOSwgMjE4LCAxNTQsIDY0LCAyMjIsIDE0MCwgMjQ1LCAxODMsIDI0MSwgMTYyLCA5LCA0LCAKLSAgICAxMjUsIDIyMiwgMTg1LCAyMTAsIDg2LCA5LCA0LCAxMjUsIDIxNCwgMTU5LCAyMjMsIDExOCwgMjEwLCA4NiwgOSwgNCwgCi0gICAgMTI1LCAyNDcsIDEyNywgMjQxLCAyNDMsIDY0LCAyMzQsIDEzNSwgOSwgNCwgMTI1LCA2NiwgNTMsIDE3LCA5LCA0LCAxMjEsIAotICAgIDIyMSwgMTY4LCA5LCA0LCAxMjUsIDIzMSwgMjMyLCA5LCA0LCAyMTIsIDMwLCA5LCA0LCAyMTEsIDQzLCA5LCA0LCAxMjUsIAotICAgIDIxMSwgNDMsIDksIDQsIDEyNSwgMjI4LCA2NywgOSwgMjI1LCA0NCwgNjQsIDIyMiwgMTUsIDksIDI0NSwgMTYwLCAyNTAsIAotICAgIDE4MywgMTIxLCAyMTgsIDEzMSwgOSwgMjQ1LCAxNjAsIDI1MCwgMTgzLCAxMjUsIDIxOCwgMTMxLCA5LCAyMjIsIDE4NSwgCi0gICAgMTI1LCAyMTgsIDEzMiwgMiwgMjQ0LCAxMTIsIDI1MCwgMTgyLCA5LCA0LCAxMjEsIDIzMSwgODMsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAyMzUsIDIwMCwgMjE0LCAxMDUsIDksIDEsIDIyMywgOTksIDIsIDIzNSwgMjAwLCAyMTQsIDEwNSwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDIxMCwgODYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxMTEsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAKLSAgICAxMDUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNTgsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNjEsIDI0NSwgMzAsIDI1NCwgCi0gICAgNDUsIDIxLCAxOTAsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTksIDI0NSwgCi0gICAgMzAsIDI1NCwgNDUsIDIxLCAxOTYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAyMDEsIDksIDEsIDIyMCwgNjIsIDIsIDU5LCAKLSAgICA1MSwgOSwgMSwgMjQ4LCAyMjUsIDIsIDU5LCA1MSwgOSwgMSwgMjQyLCAyNTIsIDIsIDU5LCA1MSwgOSwgNSwgMjE5LCAxNjAsIAotICAgIDI1NCwgMTM0LCA5LCA1LCAyMTksIDE2MCwgMjI0LCAyMzgsIDIzMSwgNjMsIDksIDEsIDI0MSwgMjI2LCAyLCAyMzUsIDIwMCwgCi0gICAgMjE0LCAxMDUsIDE4MywgMjQ1LCAxNTEsIDY0LCAyMjYsIDE4LCAxODMsIDIxOCwgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgMTgzLCAyMTgsIDY4LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDE4MywgMjE4LCAyMCwgMjQ5LCAyMzQsIDE4MywgMjE4LCA2OCwgCi0gICAgMjQ5LCAyMzQsIDE4MywgMjAzLCAyNDksIDIzNCwgMTgzLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgMjQ5LCAKLSAgICAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyMTgsIDIwLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgCi0gICAgMjE4LCA2OCwgMjQ5LCAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyNDksIDE4OCwgMTgzLCAyNDIsIDgsIDIyNiwgCi0gICAgMjU0LCAxODMsIDI0MiwgOCwgMjMxLCA0MSwgMTgzLCAyNDIsIDgsIDI1MywgMjI2LCAxODMsIDI1NSwgMzAsIDc5LCAxODMsIAotICAgIDEsIDI1NCwgMTgzLCAxODMsIDEsIDIxOCwgMjQsIDI1NCwgMTgzLCAxODMsIDEsIDI1MiwgMzMsIDE4MywgMSwgMjQzLCAKLSAgICAxMjAsIDE4MywgMSwgMjQzLCAxMjEsIDI0MywgOTgsIDE4MywgMSwgMjQ4LCAyMDAsIDE4MywgMSwgMjQ3LCAxMjcsIDI0OCwgCi0gICAgMjAxLCAyMjIsIDIzMiwgMTgzLCAxLCAyNDEsIDI0NSwgMTgzLCAxLCAyMTIsIDMwLCAxODMsIDEsIDIxMCwgMTA4LCAxODMsIAotICAgIDEsIDI0MSwgMjAyLCAxODMsIDEsIDIxNiwgMjI3LCAxODMsIDEsIDIxNiwgMjI4LCAyNDMsIDk4LCAxODMsIDEsIDIxMCwgCi0gICAgMTk5LCAxODMsIDEsIDIxMCwgMjAwLCAyNDEsIDI0NSwgMTgzLCAxLCAyMzQsIDIzMSwgMTgzLCAxLCAyMzMsIDEwNywgMTgzLCAKLSAgICAxLCAyMzAsIDE5NSwgMTgzLCAxLCAyMjcsIDE5OCwgMTgzLCAxLCAyMjAsIDE0NSwgMTgzLCAxLCA0MCwgMjIwLCAxNDUsIAotICAgIDE4MywgMSwgNzYsIDE4MywgMSwgMjI1LCAyMjQsIDE4MywgMSwgMjIzLCA1MiwgMjI1LCAyMjQsIDE4MywgMSwgMjIyLCAyNiwgCi0gICAgMTgzLCAxLCAyMjQsIDc4LCAxODMsIDEsIDIyMiwgMjMyLCAxODMsIDEsIDIyMCwgMjIsIDE4MywgMSwgMjE3LCAzNywgMTgzLCAKLSAgICAxLCAyMjUsIDE3MiwgMjUyLCAyMCwgMTgzLCAxLCAyMjUsIDE3MiwgMjQyLCAyNDksIDE4MywgMSwgMjI1LCAxNzIsIDI0OCwgCi0gICAgMjgsIDE4MywgMjI0LCAxNTQsIDQ4LCAxODMsIDIyNCwgMTU0LCA1MSwgMTgzLCAyMjQsIDE1NCwgMjQ2LCAxMjUsIDE4MywgCi0gICAgMjEwLCAxNywgNDgsIDE4MywgMjEwLCAxNywgNTEsIDE4MywgMjEwLCAxNywgMjQ2LCAxMjUsIDE4MywgMjIzLCAxMzQsIDQ4LCAKLSAgICAxODMsIDIyMywgMTM0LCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAyNCwgMjQxLCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAKLSAgICAyNCwgMjU0LCAxMTMsIDE4MywgMjQxLCAyNDgsIDQ4LCAxODMsIDI0MSwgMjQ4LCA1MSwgMTgzLCAyNDEsIDI0NywgMjQ2LCAKLSAgICAxMjUsIDE4MywgMjQ1LCA4NywgNDgsIDE4MywgMjQ1LCA4NywgNTEsIDE4MywgMjIyLCAxMDksIDE4MywgMjQ0LCAxNDQsIAotICAgIDI0NywgMTI4LCAxODMsIDIyMywgMjUxLCAxODMsIDIyMiwgMTM2LCAxODMsIDExMywgNjcsIDE3MCwgNDgsIDE4MywgMTEzLCAKLSAgICA2NywgMTcwLCA1MSwgMTgzLCAxMzQsIDE3MCwgNDgsIDE4MywgMTM0LCAxNzAsIDUxLCAxODMsIDIyNiwgMjUyLCAyMzIsIAotICAgIDIyMCwgNDgsIDE4MywgMjI2LCAyNTIsIDIzMiwgMjIwLCA1MSwgMTgzLCAyMzAsIDYxLCAxODMsIDI1MiwgMTM5LCAxODMsIAotICAgIDEsIDIxOSwgNTEsIDIxMCwgODAsIDE4MywgMSwgMjE5LCA1MSwgMjM0LCAxMjgsIDE4MywgMSwgMjE5LCA1MSwgMjQ0LCAKLSAgICAxNjIsIDksIDEsIDI1MiwgNjMsIDIsIDEzNCwgMTcwLCAyNDEsIDEsIDUxLCA5LCAxLCAyNTIsIDYzLCAyLCA1OSwgMjUyLCAKLSAgICA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgCi0gICAgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCAyNTIsIDUxLCAyMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyNTIsIDYzLCAyLCAxMTMsIDE3MCwgMjUyLCA1MSwgMjIsIDU5LCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjUyLCA2MywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDEyMiwgMiwgMTEzLCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAxMjIsIDIsIDEzNCwgMTcwLCAyMjUsIDEwLCAyMTQsIDE1MywgNTEsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjIzLCA5OSwgMiwgOTEsIDksIDEsIDIyMSwgMTY5LCAyLCAyNDQsIDE5LCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTM0LCAxNzAsIAotICAgIDIyNSwgMTAsIDI0NiwgMTEyLCA0OCwgOSwgMSwgMjU0LCAyMDYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIAotICAgIDI0NCwgMTUxLCAyLCAxMTMsIDE3MCwgNTEsIDksIDEsIDI0NCwgMTUxLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAKLSAgICAxNTMsIDUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgNTksIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAKLSAgICAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgOSwgMSwgNjYsIDIsIDU5LCA0OCwgOSwgCi0gICAgMSwgNjYsIDIsIDU5LCA1MSwgOSwgMSwgMjI4LCA2OCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAKLSAgICAyMTcsIDgxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAyMTQsIDEwNSwgOSwgMSwgMjMzLCAxMDksIDIsIDEzMCwgOSwgMSwgCi0gICAgMjIzLCA5OSwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgOSwgMSwgMjIzLCA5OSwgMiwgMTgyLCA0OCwgOSwgMSwgMjIxLCAKLSAgICAxNjksIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgMjQ3LCAxMjYsIDksIDEsIDIyMSwgMTY5LCAyLCA0LCA5LCAxLCAKLSAgICAyMTcsIDgyLCAyMiwgMTEzLCAyNDcsIDEyNiwgOSwgMSwgMjIzLCA5OSwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgCi0gICAgMjQ3LCAxMjYsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCAKLSAgICA0NSwgMjEsIDExMywgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgCi0gICAgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAKLSAgICAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIAotICAgIDI0NCwgMTksIDUxLCA5LCAxLCAyMTIsIDMxLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDUxLCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgMjM1LCAyMDAsIDIxNCwgMTA1LCAKLSAgICA5LCAxLCAyMzUsIDEsIDIsIDExMywgMTcwLCA0OCwgMjE2LCAyMDYsIDEsIDI0MiwgNTMsIDIxNiwgMjA2LCAxLCAyMjAsIAotICAgIDcwLCAyMTYsIDIwNiwgMSwgMjI4LCA2NiwgMjE2LCAyMDYsIDEsIDIyMywgMTg3LCAyMTYsIDIwNiwgMSwgMjUyLCAxOTcsIAotICAgIDIxNiwgMjA2LCAxLCAyMzMsIDEsIDIxNiwgMjA2LCAxLCAyMzUsIDE0LCAyMTYsIDIwNiwgMSwgMjU0LCAxNjgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTQsIDI1LCAyMTYsIDIwNiwgMSwgMjMxLCA4MiwgMjE2LCAyMDYsIDEsIDI0NCwgMjAyLCAyMTYsIDIwNiwgCi0gICAgMSwgMjQ4LCAzMSwgMjE2LCAyMDYsIDEsIDIxNiwgMjA4LCAyMTYsIDIwNiwgMSwgMjMzLCAxMzcsIDIxNiwgMjA2LCAxLCAKLSAgICAyNDMsIDEzOCwgMjE2LCAyMDYsIDEsIDI0MiwgMTg0LCAyMTYsIDIwNiwgMSwgMjIxLCAxNjcsIDIxNiwgMjA2LCAxLCAyNDgsIAotICAgIDE1NiwgMjE2LCAyMDYsIDEsIDIxMCwgMTAwLCAyMTYsIDIwNiwgMSwgMjE3LCAzOCwgMjE2LCAyMDYsIDEsIDIxMSwgMTAzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjI1LCAyMzcsIDIxNiwgMjA2LCAxLCAyMzUsIDEzNCwgMjE2LCAyMDYsIDEsIDI1MCwgMTQyLCAyMTYsIAotICAgIDIwNiwgMSwgMjE1LCAxNTYsIDIxNiwgMjA2LCAxLCAyNDEsIDE5NSwgMjE2LCAyMDYsIDEsIDIzNCwgMTM3LCAyMTYsIDIwNiwgCi0gICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA2LCAxLCAyMTAsIDExNSwgMjE2LCAyMDYsIDEsIDIyMCwgNjAsIDIxNiwgMjA2LCAxLCAKLSAgICAyMjIsIDMyLCAyMTYsIDIwNiwgMSwgMjQ4LCAyMjcsIDIxNiwgMjA2LCAxLCAxMTIsIDIxNiwgMjA2LCAxLCAyMTAsIDIzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjU0LCAyMDIsIDIxNiwgMjA2LCAxLCAyNDIsIDI1MCwgMjE2LCAyMDYsIDEsIDIyNCwgODgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTIsIDYzLCAyMTYsIDIwNiwgMjU1LCAzMSwgMjE2LCAyMDYsIDI1NSwgNDcsIDIxNiwgMjA2LCAyNDAsIAotICAgIDEyMSwgMjE2LCAyMDYsIDI0NSwgMjE2LCAyMTYsIDIwNiwgMjE0LCAyMjIsIDIxNiwgMjA2LCAyMjYsIDE4NiwgMjE2LCAKLSAgICAyMDYsIDI0NSwgMjI0LCAyMTYsIDIwNiwgMjQ1LCAyNCwgMjE2LCAyMDYsIDIyNiwgMjUxLCAyMTYsIDIwNiwgMjI3LCAzLCAKLSAgICAyMTYsIDIwNiwgMjE4LCA0NiwgMjE2LCAyMDYsIDEsIDIyOSwgMjMwLCAyMjgsIDE0MiwgMjEsIDIxMCwgODYsIDIyOCwgCi0gICAgMTQyLCAyMSwgMTExLCAyMjgsIDE0MiwgMjEsIDEwNSwgMjI4LCAxNDIsIDIxLCAxNTgsIDIyOCwgMTQyLCAyMSwgMTYxLCAKLSAgICAyMjgsIDE0MiwgMjEsIDE5MCwgMjI4LCAxNDIsIDIxLCAxOTUsIDIyOCwgMTQyLCAyMSwgMTk5LCAyMjgsIDE0MiwgMjEsIAotICAgIDE5NiwgMjI4LCAxNDIsIDIxLCAyMDEsIDIyOCwgMTQyLCAxLCA2MSwgMjI4LCAxNDIsIDEsIDI0NSwgMjE3LCAyMjgsIDE0MiwgCi0gICAgMSwgNzQsIDIyOCwgMTQyLCAxLCA3NiwgMjI4LCAxNDIsIDEsIDY5LCAyMjgsIDE0MiwgMSwgMjI2LCAxODcsIDIyOCwgMTQyLCAKLSAgICAxLCA3OCwgMjI4LCAxNDIsIDEsIDI0OCwgMjE3LCAyMjgsIDE0MiwgMSwgMjMwLCAzMCwgMjI4LCAxNDIsIDEsIDI1MiwgCi0gICAgMTk5LCAyMjgsIDE0MiwgMSwgMTkxLCAyMjgsIDE0MiwgMSwgMjE3LCAxMDYsIDIyOCwgMTQyLCAxLCAyMzUsIDE0NywgMjI4LCAKLSAgICAxNDIsIDEsIDI1MCwgMTY1LCAyMjgsIDE0MiwgMSwgMjQ4LCAyMjksIDIyOCwgMTQyLCAxLCAyMDUsIDIyOCwgMTQyLCAxLCAKLSAgICAyMjIsIDE4MSwgMjI4LCAxNDIsIDEsIDIwNiwgMjI4LCAxNDIsIDEsIDI0MywgODYsIDIyOCwgMTQyLCAxLCAyNDQsIDIwNCwgCi0gICAgMjI4LCAxNDIsIDEsIDE3NiwgMjI4LCAxNDIsIDEsIDIzMywgMTQxLCAyMjgsIDE0MiwgMSwgMjI5LCAyMzQsIDIxMSwgMjIzLCAKLSAgICAyMjgsIDE0MiwgMSwgMTg2LCAyMjgsIDE0MiwgMSwgMjI3LCAxNjksIDIyOCwgMTQyLCAxLCAxOTgsIDIyOCwgMTQyLCAxLCAKLSAgICAxNjIsIDIyOCwgMTQyLCAxLCAyMTIsIDY1LCAyMjgsIDE0MiwgMSwgMTkyLCAyMjgsIDE0MiwgMSwgMjI3LCAxNzAsIDIxMSwgCi0gICAgMjIzLCAyMjgsIDE0MiwgMSwgMjM1LCA2NywgMjM1LCAxNDcsIDIyOCwgMTQyLCAxLCAyMzUsIDY3LCAyNTAsIDE2NSwgMjI4LCAKLSAgICAxNDIsIDEsIDIzNSwgNjcsIDIwNSwgMjI4LCAxNDIsIDM4LCAyMTksIDI1MywgMTI1LCAyMTYsIDMxLCAyMjgsIDE0MiwgMzgsIAotICAgIDIxOSwgMjUzLCAxMjEsIDIxNiwgMzEsIDIyOCwgMTQyLCAzOCwgMjE5LCAyNTMsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIwMCwgMjQ4LCA0NiwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDEyNSwgMjE2LCAzMSwgMjI4LCAKLSAgICAxNDIsIDM4LCAyMDAsIDEyMSwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIyOSwgMTk4LCA3OSwgMjI4LCAxNDIsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIDE0MiwgMTI1LCAxMzgsIDI1NCwgCi0gICAgNjUsIDIyOCwgMTQyLCAxMjEsIDEzOCwgMjU0LCA2NSwgMjI4LCAxNDIsIDE2LCAyMjYsIDE4OCwgMjQ4LCA1OCwgMjI4LCAKLSAgICAxNDIsIDE2LCAyNDMsIDg1LCAyMjgsIDE0MiwgMjQ5LCAyMjcsIDIyOCwgMTQyLCAyNDUsIDM5LCA3OSwgMjI4LCAxNDIsIAotICAgIDIzMywgMTE0LCAyMjEsIDI1NCwgMSwgMjU0LCAxODUsIDIyMSwgMjU0LCAxLCAyNTEsIDIzNiwgMjIxLCAyNTQsIDEsIDI0MywgCi0gICAgMTE5LCAyMjEsIDI1NCwgMSwgMjQ4LCAyMDIsIDIyMSwgMjU0LCAxLCAyMzUsIDE1OCwgMjIxLCAyNTQsIDEsIDI1MiwgMTk3LCAKLSAgICAyMjEsIDI1NCwgMSwgMjEwLCA4OSwgMjIxLCAyNTQsIDEsIDIzNSwgMTY2LCAyMjEsIDI1NCwgMSwgMjE2LCA2OCwgMjIxLCAKLSAgICAyNTQsIDEsIDIxMCwgMTgyLCAyMjEsIDI1NCwgMSwgMjM1LCAxNSwgMjIxLCAyNTQsIDEsIDIzMywgMTM0LCAyMjEsIDI1NCwgCi0gICAgMSwgMjMwLCAxOTUsIDIyMSwgMjU0LCAxLCAyMjcsIDE5OCwgMjIxLCAyNTQsIDEsIDIxOSwgMTU4LCAyMjEsIDI1NCwgMSwgCi0gICAgMjM2LCA2LCAyMjEsIDI1NCwgMSwgMjQ0LCAxMjksIDIyMSwgMjU0LCAxLCAyMTUsIDE4MiwgMjIxLCAyNTQsIDEsIDIyNCwgCi0gICAgMTMsIDIyMSwgMjU0LCAxLCAyMjIsIDIzMiwgMjIxLCAyNTQsIDEsIDIyMCwgODcsIDIyMSwgMjU0LCAxLCAyMTcsIDEwMSwgCi0gICAgMjIxLCAyNTQsIDE2NCwgMjM2LCA2LCAyMjEsIDI1NCwgMTY0LCAyMzYsIDUsIDIyMSwgMjU0LCAxNjQsIDIyNiwgMjQ3LCAKLSAgICAyMjEsIDI1NCwgMTY0LCAyNDgsIDIxNSwgMjIxLCAyNTQsIDU4LCAxLCAyNDUsIDExMywgMjEwLCAxODIsIDIyMSwgMjU0LCAKLSAgICAxNjQsIDI0NSwgMTEzLCAyMTAsIDE4MiwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc2LCAyMjEsIDI1NCwgMjUsIDUsIDc2LCAKLSAgICAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgMjU1LCA4MiwgMjIxLCAKLSAgICAyNTQsIDI1LCA1LCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIAotICAgIDYxLCAyMjEsIDI1NCwgMjUsIDUsIDYxLCAyMjEsIDI1NCwgNTgsIDEsIDIxOSwgMjUzLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAKLSAgICAyMTksIDI1MywgNjEsIDIyMSwgMjU0LCAyNSwgNSwgMjAwLCA2OSwgMjIxLCAyNTQsIDI1LCA1LCA2OSwgMjIxLCAyNTQsIAotICAgIDU4LCAxLCA3NCwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc0LCAyMjEsIDI1NCwgMjUsIDUsIDc0LCAyMjEsIDI1NCwgMjUsIAotICAgIDUsIDc4LCAyMjEsIDI1NCwgMjUsIDUsIDIxOCwgNDYsIDIyMSwgMjU0LCAxNjQsIDIyOSwgOTcsIDIyMSwgMjU0LCAyMjQsIAotICAgIDE0NCwgMjI5LCA5NywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDIyNywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDEyMiwgCi0gICAgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTIsIDEyMiwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTMsIDIwOSwgMjIxLCAyNTQsIAotICAgIDIyNCwgMTQ0LCAyMjAsIDEwLCAyMjEsIDI1NCwgMjU1LCAzMCwgNzksIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjMxLCA3MywgCi0gICAgMjI0LCA0OCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyMTAsIDMxLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIyNCwgNDgsIDIyMSwgCi0gICAgMjU0LCAyMjQsIDE0NCwgMjEwLCAxMTQsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjE1LCA5MCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAKLSAgICAyNTQsIDE3LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIzMSwgMTUwLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1NCwgCi0gICAgMTA4LCAyMzEsIDE4NywgMSwgMjQyLCAzMSwgMjMxLCAxODcsIDEsIDI1NSwgMzQsIDIzMSwgMTg3LCAxLCAyNTQsIDIyNSwgCi0gICAgMjMxLCAxODcsIDEsIDI1NSwgOCwgMjMxLCAxODcsIDEsIDI1NCwgMjE4LCAyMzEsIDE4NywgMSwgMjE0LCAxMjQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNTMsIDE2OCwgMjMxLCAxODcsIDEsIDIzNSwgMTY2LCAyMzEsIDE4NywgMSwgMjUzLCAyMDYsIDIzMSwgMTg3LCAKLSAgICAxLCAyNTQsIDE5MCwgMjMxLCAxODcsIDEsIDI1NCwgMTk1LCAyMzEsIDE4NywgMSwgMjU0LCAxODcsIDIzMSwgMTg3LCAxLCAKLSAgICAyNTQsIDE0NCwgMjMxLCAxODcsIDEsIDI1NCwgMTMxLCAyMzEsIDE4NywgMSwgMjUzLCAyNDUsIDIzMSwgMTg3LCAxLCAyMzYsIAotICAgIDYsIDIzMSwgMTg3LCAxLCAyNTQsIDgwLCAyMzEsIDE4NywgMSwgMjUzLCAyMTYsIDIzMSwgMTg3LCAxLCAyNTQsIDUzLCAKLSAgICAyMzEsIDE4NywgMSwgMjU0LCA0OSwgMjMxLCAxODcsIDEsIDI1MywgMjM5LCAyMzEsIDE4NywgMSwgMjUzLCAyMTQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNDYsIDYzLCAyMzEsIDE4NywgMSwgMjM1LCA4LCAyMzEsIDE4NywgMSwgMjU0LCAyMDUsIDIzMSwgMTg3LCAKLSAgICAyNTQsIDIzMSwgNzksIDIzMSwgMTg3LCAyMTMsIDEzNiwgNzksIDIzMSwgMTg3LCAyNDMsIDYwLCA3OSwgMjMxLCAxODcsIAotICAgIDIyNCwgMTQzLCA5LCAxLCAyNTIsIDYzLCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIDEsIDE1MSwgMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyMTcsIDgyLCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTUxLCAyLCA1OSwgMjUyLCA1MSwgMjIsIDEzNCwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjI0LCA4NSwgMiwgNTksIDUxLCA5LCAxLCAyMzMsIDEwOSwgMiwgNTIsIDEzMCwgOSwgMSwgNjYsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgNzcsIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgMTgyLCA0OCwgOSwgMSwgNzcsIAotICAgIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAyMzIsIDEyOSwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgNTksIDIxMSwgMjMxLCA5LCAxLCAyMjIsIDIwMywgMjExLCA0MywgOSwgMjQ5LCAxMDcsIDI0NCwgMTczLCA5LCAKLSAgICAyNDksIDEwNywgMjQ4LCAxOTIsIDksIDI0OSwgMTA3LCAyMzQsIDIxMSwgOSwgMjQ5LCAxMDcsIDI0NCwgMTcxLCA5LCAyNDksIAotICAgIDEwNywgMjQ4LCAxOTAsIDksIDI0OSwgMTA3LCAyMzQsIDIwOSwgOSwgMTM4LCAxMjMsIDU5LCA0OCwgOSwgMTM4LCAxMTMsIAotICAgIDE3MCwgNDgsIDksIDEzOCwgMjMyLCAxMzAsIDQ4LCA5LCAxMzgsIDEyMywgNTksIDUxLCA5LCAxMzgsIDExMywgMTcwLCA1MSwgCi0gICAgOSwgMTM4LCAyMzIsIDEzMCwgNTEsIDksIDIwNCwgMjQ0LCAxNzEsIDksIDIwNCwgMjQ4LCAxOTAsIDksIDIwNCwgMjM0LCAKLSAgICAyMDksIDksIDQsIDEyNSwgMjEyLCAzMCwgOSwgMjQ0LCAxNzQsIDIsIDIyMiwgMjM2LCA5LCAyNDQsIDE3NCwgMiwgNTksIAotICAgIDQ4LCA5LCAyMzQsIDIxMiwgMiwgNTksIDUxLCA5LCA0MywgMjU0LCAyLCA0OCwgOSwgNDQsIDI1NCwgMiwgNDgsIDksIDQzLCAKLSAgICAyNTQsIDIsIDUxLCA5LCA0NCwgMjU0LCAyLCA1MSwgOSwgNTIsIDQ0LCAyNTQsIDIsIDQ4LCA5LCA1MiwgNDQsIDI1NCwgMiwgCi0gICAgNzIsIDIsIDI0NywgMTI4LCA5LCA0NCwgMjU0LCAyLCA3MiwgMiwgMjQ3LCAxMjgsIDksIDI0OCwgMTkzLCAyLCAyNDcsIAotICAgIDEyOCwgODQsIDUsIDIzNSwgMjAwLCAyNTEsIDcsIDg0LCA1LCAyNTEsIDcsIDg0LCA1LCAyNTQsIDgzLCA4NCwgNSwgMjEzLCAKLSAgICAxNDcsIDg0LCAxLCAyMTksIDI1MywgNjEsIDg0LCAxLCA2MSwgODQsIDEsIDI1NSwgODIsIDg0LCAxLCA3NCwgODQsIDEsIAotICAgIDIzNiwgNDAsIDg0LCAxLCA2OSwgODQsIDEsIDIxNCwgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgCi0gICAgODQsIDEsIDI1MSwgMTAsIDc2LCA4NCwgMSwgMjE5LCAyNTMsIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTQsIDIxMCwgODQsIAotICAgIDEsIDI1MSwgMTAsIDc4LCA4NCwgMSwgMjE5LCAyNTMsIDc4LCA4NCwgMSwgNzgsIDg0LCAxLCAyNTMsIDIwMCwgODQsIDEsIAotICAgIDE3NiwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjQzLCAxNDIsIDg0LCAxLCAyNDMsIDAsIDg0LCAxLCAyMjksIDgyLCA4NCwgCi0gICAgMSwgMjUxLCA0MSwgODQsIDEsIDI1MCwgMTY1LCA4NCwgMSwgMjM1LCAxNDcsIDg0LCAxLCAyMzUsIDEyMCwgODQsIDEsIAotICAgIDIyNywgMTY5LCA4NCwgMSwgMjE1LCAxNTcsIDg0LCAxLCAyMTUsIDE0NSwgODQsIDEsIDI0OCwgMTQzLCA4NCwgMSwgMjQ4LCAKLSAgICAxMjcsIDg0LCAxLCAyMjgsIDExNSwgODQsIDEsIDIxNywgMTA2LCA4NCwgMSwgMjE2LCAyMDksIDg0LCAxLCAyNDgsIDIyOSwgCi0gICAgODQsIDEsIDI0OCwgMzMsIDg0LCAxLCAxOTgsIDg0LCAxLCAyMjgsIDk3LCA4NCwgMSwgMTkxLCA4NCwgMSwgMjI1LCAxNTAsIAotICAgIDg0LCAxLCAyNTIsIDE5OSwgODQsIDEsIDI1MiwgMjYsIDg0LCAxLCAxODYsIDg0LCAxLCAxOTIsIDg0LCAxLCAyMDUsIDg0LCAKLSAgICAxLCAyMjIsIDE4MSwgODQsIDEsIDIzMywgMTQxLCA4NCwgMSwgMjMyLCAxOTAsIDg0LCAxLCAyMzIsIDE4MSwgODQsIDEsIAotICAgIDIxNCwgMjcsIDg0LCAxLCAyMjAsIDEwNCwgODQsIDEsIDIxOCwgMjI1LCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgCi0gICAgMjUsIDUsIDIyNiwgMjM4LCA4NCwgMjUsIDUsIDIyNiwgMTg1LCA4NCwgNSwgMjI3LCAyMDksIDg0LCA1LCAyNTMsIDE4MywgCi0gICAgODQsIDI1LCA1LCAyNTUsIDgyLCA4NCwgMjUsIDUsIDc0LCA4NCwgMjUsIDUsIDIzNiwgNDAsIDg0LCAyNSwgNSwgNjksIDg0LCAKLSAgICAyNSwgNSwgMjE0LCAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgODQsIDI1LCAKLSAgICA1LCAyNTEsIDEwLCA3NiwgODQsIDI1LCA1LCAyMTksIDI1MywgNzYsIDg0LCAyNSwgNSwgNzYsIDg0LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDg0LCAyNSwgNSwgMjUxLCAxMCwgNzgsIDg0LCAyNSwgNSwgMjE5LCAyNTMsIDc4LCA4NCwgMjUsIDUsIDc4LCA4NCwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCA4NCwgNSwgMjEzLCAxNTIsIDg0LCAyNSwgNSwgMjI0LCAxODgsIDc2LCA4NCwgMjUsIDUsIAotICAgIDI1MywgMTc5LCA4NCwgMjI2LCAyMDgsIDg0LCAyMTgsIDExMywgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMywgNSwgMjU0LCAKLSAgICA4NSwgODQsIDI0MiwgMTQ0LCAyNTUsIDIzLCA4NCwgMjU1LCAxMiwgMjU1LCAyMywgODQsIDI1LCA1LCAyNTEsIDEwLCAyMDAsIAotICAgIDc2LCA4NCwgMjUsIDUsIDIxNCwgMjE0LCA4NCwgMjUsIDUsIDIxNCwgMTE3LCA4NCwgMSwgMjI0LCA5MSwgODQsIDEsIDIzNCwgCi0gICAgMTIxLCA4NCwgMSwgMjQyLCAyMzMsIDg0LCAxLCAyMTAsIDExNiwgODQsIDEsIDI0OCwgMTMyLCA4NCwgMSwgMjIzLCA0MiwgCi0gICAgODQsIDEsIDI0NCwgMjA0LCA4NCwgMSwgMjEwLCAxNjgsIDg0LCAxLCAxNDksIDIyMiwgMTgyLCA4NCwgMSwgMTQ5LCAyMzIsIAotICAgIDE5MSwgODQsIDI1LCA1LCAxNDksIDE1NiwgODQsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA4NCwgMjQ4LCAxODYsIDg0LCA1MiwgCi0gICAgMjQ4LCAxODYsIDg0LCAyMSwgMjEwLCA4NiwgODQsIDIxLCAxMTEsIDg0LCAyMSwgMTA1LCA4NCwgMjEsIDE1OCwgODQsIDIxLCAKLSAgICAxNjEsIDg0LCAyMSwgMTkwLCA4NCwgMjEsIDE5NSwgODQsIDIxLCAxOTksIDg0LCAyMSwgMTk2LCA4NCwgMjEsIDIwMSwgODQsIAotICAgIDI1NSwgMzAsIDUwLCA4NCwgNSwgMTI1LCAyMTksIDE5LCAyNDcsIDEyOCwgODQsIDEsIDI1MSwgMTAsIDYxLCA4NCwgMSwgCi0gICAgMjI2LCAyMzgsIDg0LCAxLCAyMjYsIDE4NSwgODQsIDEsIDI1MywgMTc5LCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIAotICAgIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MiwgODQsIDEsIDI0MywgMzYsIDg0LCAxLCAyMzUsIDEwMiwgCi0gICAgODQsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgODQsIDEsIDI0OCwgMTMzLCA4NCwgMSwgMjUyLCAxMTksIDE0NiwgNSwgMjUxLCAKLSAgICA3LCAxNDYsIDUsIDI1NCwgODMsIDE0NiwgNSwgMjEzLCAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA4MiwgMTQ2LCAKLSAgICAxLCA3NCwgMTQ2LCAxLCAyMzYsIDQwLCAxNDYsIDEsIDY5LCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAKLSAgICAxNDYsIDEsIDE0OSwgMTU2LCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1NCwgMjEwLCAxNDYsIDEsIDc4LCAxNDYsIDEsIDI1MywgCi0gICAgMjAwLCAxNDYsIDEsIDE3NiwgMTQ2LCAxLCAyMzQsIDEzOCwgMTQ2LCAxLCAyNDMsIDE0MiwgMTQ2LCAxLCAyNDMsIDAsIAotICAgIDE0NiwgMSwgMjI5LCA4MiwgMTQ2LCAxLCAyNTEsIDQxLCAxNDYsIDEsIDI1MCwgMTY1LCAxNDYsIDEsIDIzNSwgMTQ3LCAKLSAgICAxNDYsIDEsIDIzNSwgMTIwLCAxNDYsIDEsIDIyNywgMTY5LCAxNDYsIDEsIDIxNSwgMTU3LCAxNDYsIDEsIDIxNSwgMTQ1LCAKLSAgICAxNDYsIDEsIDI0OCwgMTQzLCAxNDYsIDEsIDI0OCwgMTI3LCAxNDYsIDEsIDIyOCwgMTE1LCAxNDYsIDEsIDIxNywgMTA2LCAKLSAgICAxNDYsIDEsIDIxNiwgMjA5LCAxNDYsIDEsIDI0OCwgMjI5LCAxNDYsIDEsIDI0OCwgMzMsIDE0NiwgMSwgMTk4LCAxNDYsIDEsIAotICAgIDE5MSwgMTQ2LCAxLCAyMjUsIDE1MCwgMTQ2LCAxLCAyNTIsIDE5OSwgMTQ2LCAxLCAyNTIsIDI2LCAxNDYsIDEsIDE4NiwgCi0gICAgMTQ2LCAxLCAxOTIsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIDIzMywgMTQxLCAxNDYsIDEsIDIyMCwgMTA0LCAxNDYsIDEsIAotICAgIDIxOCwgMjI1LCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIDE0NiwgNSwgMjI3LCAyMDksIDE0NiwgNSwgMjUzLCAxODMsIAotICAgIDE0NiwgMjUsIDUsIDI1NSwgODIsIDE0NiwgMjUsIDUsIDc0LCAxNDYsIDI1LCA1LCAyMzYsIDQwLCAxNDYsIDI1LCA1LCA2OSwgCi0gICAgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNDYsIDI1LCA1LCA3NiwgMTQ2LCAyNSwgNSwgMjU0LCAyMTAsIDE0NiwgMjUsIDUsIDc4LCAxNDYsIDI1LCA1LCAyNTMsIAotICAgIDIwMCwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIDEzMCwgMjE3LCAxMDYsIDE0NiwgMjUzLCAyMDEsIDIzMywgCi0gICAgMjksIDc5LCAxNDYsIDEsIDIyMiwgMTgxLCAxNDYsIDEsIDIyMywgNDIsIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAKLSAgICAyMjIsIDE4MiwgMTQ2LCAxLCAxNDksIDIzMiwgMTkxLCAxNDYsIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAKLSAgICAyMzIsIDE5MSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgMTExLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgCi0gICAgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxOTAsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMTk5LCAxNDYsIDIxLCAxOTYsIAotICAgIDE0NiwgMjEsIDIwMSwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgMjMwLCAyMjksIDI0OCwgNiwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgCi0gICAgMjMyLCAxMTQsIDI0OCwgNiwgMTQ2LCAyMjIsIDEyMCwgNzksIDE0NiwgMjIyLCAxMjAsIDUwLCAxNDYsIDI0OSwgMTA2LCAKLSAgICAyMjcsIDIwMSwgMTExLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTA1LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgCi0gICAgMTU4LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTYxLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTIzLCAyMzMsIDIyLCAKLSAgICAyMTYsIDIwMiwgMjE2LCAxOTcsIDI0OCwgNTYsIDE0NiwgMjQ5LCAxMDYsIDI0OCwgNTcsIDIxOSwgMTIxLCAxNDYsIDIzNSwgCi0gICAgMTY3LCAxNDYsIDI0MywgMTEwLCA3OSwgMTg1LCA1LCAyNTUsIDcsIDI1MSwgMjUxLCAxODUsIDUsIDI1MSwgMjUxLCAxODUsIAotICAgIDUsIDIxMywgMTQ3LCAxODUsIDEsIDYxLCAxODUsIDEsIDI1NSwgODIsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjM2LCA0MCwgCi0gICAgMTg1LCAxLCA2OSwgMTg1LCAxLCAyMTQsIDExOCwgMTg1LCAxLCAyNDUsIDIxNywgMTg1LCAxLCAyNTQsIDIxMCwgMTg1LCAxLCAKLSAgICAyMjYsIDE4NywgMTg1LCAxLCAyNTMsIDIwMCwgMTg1LCAxLCAxNzYsIDE4NSwgMSwgMjM0LCAxMzgsIDE4NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE4NSwgMSwgMjQzLCAwLCAxODUsIDEsIDIyOSwgODIsIDE4NSwgMSwgMjUxLCA0MSwgMTg1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTg1LCAxLCAyMzUsIDE0NywgMTg1LCAxLCAyMzUsIDEyMCwgMTg1LCAxLCAyMjcsIDE2OSwgMTg1LCAxLCAyMTUsIDE1NywgCi0gICAgMTg1LCAxLCAyMTUsIDE0NSwgMTg1LCAxLCAyNDgsIDE0MywgMTg1LCAxLCAyNDgsIDEyNywgMTg1LCAxLCAyMjgsIDExNSwgCi0gICAgMTg1LCAxLCAyMTcsIDEwNiwgMTg1LCAxLCAyMTYsIDIwOSwgMTg1LCAxLCAyNDgsIDIyOSwgMTg1LCAxLCAyNDgsIDMzLCAKLSAgICAxODUsIDEsIDE5OCwgMTg1LCAxLCAxOTEsIDE4NSwgMSwgMjI1LCAxNTAsIDE4NSwgMSwgMjUyLCAxOTksIDE4NSwgMSwgCi0gICAgMjUyLCAyNiwgMTg1LCAxLCAxODYsIDE4NSwgMSwgMTkyLCAxODUsIDEsIDIwNSwgMTg1LCAxLCAyMzMsIDE0MSwgMTg1LCAxLCAKLSAgICAyMzIsIDE5MCwgMTg1LCAxLCAyMTQsIDI3LCAxODUsIDEsIDIyMCwgMTA0LCAxODUsIDEsIDIwNiwgMTg1LCAxLCAxNjIsIAotICAgIDE4NSwgNSwgMjI3LCAyMDksIDE4NSwgMjUsIDUsIDI1NSwgODIsIDE4NSwgMjUsIDUsIDc0LCAxODUsIDI1LCA1LCAyMzYsIAotICAgIDQwLCAxODUsIDI1LCA1LCA2OSwgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NSwgMjUsIDUsIDI0NSwgMjE3LCAxODUsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTg1LCAyNSwgNSwgMjI2LCAxODcsIDE4NSwgMjUsIDUsIDI1MywgMjAwLCAxODUsIDUsIDIxMywgCi0gICAgMTUyLCAxODUsIDUsIDIxNCwgMjE4LCAxODUsIDEsIDIzNCwgMTIxLCAxODUsIDEsIDI0MiwgMjMzLCAxODUsIDEsIDIxMCwgCi0gICAgMTE2LCAxODUsIDEsIDIyMiwgMTgxLCAxODUsIDEsIDI0NCwgMjA0LCAxODUsIDIxLCAyMTAsIDg2LCAxODUsIDIxLCAxMTEsIAotICAgIDE4NSwgMjEsIDEwNSwgMTg1LCAyMSwgMTU4LCAxODUsIDIxLCAxNjEsIDE4NSwgMjEsIDE5MCwgMTg1LCAyMSwgMTk1LCAKLSAgICAxODUsIDIxLCAxOTksIDE4NSwgMjEsIDE5NiwgMTg1LCAyMSwgMjAxLCAxODUsIDIxNiwgNzUsIDE4NSwgMjU1LCA2LCAxODUsIAotICAgIDIzNSwgMTg1LCAxODUsIDIxNCwgMTQ2LCAxODUsIDI0NSwgMTg5LCAyMjYsIDE5MiwgMTg1LCA1LCAyMTEsIDc4LCAxNzEsIAotICAgIDUsIDI1MSwgNywgMTcxLCA1LCAyNTQsIDgzLCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgCi0gICAgODIsIDE3MSwgMSwgNzQsIDE3MSwgMSwgMjM2LCA0MCwgMTcxLCAxLCA2OSwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAKLSAgICAxNDksIDE1MywgMTcxLCAxLCAxNDksIDE1NiwgMTcxLCAyNSwgMjUxLCAxMCwgNzYsIDE3MSwgMSwgNzYsIDE3MSwgMSwgCi0gICAgMjU0LCAyMTAsIDE3MSwgMjUsIDI1MSwgMTAsIDc4LCAxNzEsIDEsIDc4LCAxNzEsIDEsIDI1MywgMjAwLCAxNzEsIDEsIAotICAgIDE3NiwgMTcxLCAxLCAyMzQsIDEzOCwgMTcxLCAxLCAyNDMsIDE0MiwgMTcxLCAxLCAyNDMsIDAsIDE3MSwgMSwgMjI5LCA4MiwgCi0gICAgMTcxLCAxLCAyNTEsIDQxLCAxNzEsIDEsIDI1MCwgMTY1LCAxNzEsIDEsIDIzNSwgMTQ3LCAxNzEsIDEsIDIzNSwgMTIwLCAKLSAgICAxNzEsIDEsIDIyNywgMTY5LCAxNzEsIDEsIDIxNSwgMTU3LCAxNzEsIDEsIDIxNSwgMTQ1LCAxNzEsIDEsIDI0OCwgMTQzLCAKLSAgICAxNzEsIDEsIDI0OCwgMTI3LCAxNzEsIDEsIDIyOCwgMTE1LCAxNzEsIDEsIDIxNywgMTA2LCAxNzEsIDEsIDIxNiwgMjA5LCAKLSAgICAxNzEsIDEsIDI0OCwgMjI5LCAxNzEsIDEsIDI0OCwgMzMsIDE3MSwgMSwgMTk4LCAxNzEsIDEsIDE5MSwgMTcxLCAxLCAyMjUsIAotICAgIDE1MCwgMTcxLCAxLCAyNTIsIDE5OSwgMTcxLCAxLCAyNTIsIDI2LCAxNzEsIDEsIDE4NiwgMTcxLCAxLCAxOTIsIDE3MSwgMSwgCi0gICAgMjA1LCAxNzEsIDEsIDIzMywgMTQxLCAxNzEsIDEsIDIzMiwgMTkwLCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAKLSAgICAxMDQsIDE3MSwgMSwgMjE4LCAyMjUsIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwOSwgMTcxLCAKLSAgICA1LCAyNTMsIDE4MywgMTcxLCAyNSwgNSwgMjU1LCA4MiwgMTcxLCAyNSwgNSwgNzQsIDE3MSwgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE3MSwgMjUsIDUsIDY5LCAxNzEsIDI1LCA1LCAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIAotICAgIDE0OSwgMjIyLCAxODIsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc2LCAxNzEsIDI1LCA1LCA3NiwgMTcxLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc4LCAxNzEsIDI1LCA1LCA3OCwgMTcxLCAyNSwgNSwgMjUzLCAyMDAsIDE3MSwgCi0gICAgNSwgMjEzLCAxNTIsIDE3MSwgMjI2LCAyMDgsIDE3MSwgMSwgMTQ5LCAyMjIsIDE4MiwgMTcxLCAxLCAxNDksIDIzMiwgMTkxLCAKLSAgICAxNzEsIDI1LCA1LCAxNDksIDE1NiwgMTcxLCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTcxLCAyMSwgMjEwLCA4NiwgMTcxLCAKLSAgICAyMSwgMTExLCAxNzEsIDIxLCAxMDUsIDE3MSwgMjEsIDE1OCwgMTcxLCAyMSwgMTYxLCAxNzEsIDIxLCAxOTAsIDE3MSwgMjEsIAotICAgIDE5NSwgMTcxLCAyMSwgMTk5LCAxNzEsIDIxLCAxOTYsIDE3MSwgMjEsIDIwMSwgMTcxLCAyNTUsIDMwLCA1MCwgMTcxLCAKLSAgICAyMjIsIDEyMCwgNTAsIDE1NywgNSwgMjUxLCA3LCAxNTcsIDUsIDI1NCwgODMsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgCi0gICAgNjEsIDE1NywgMSwgMjU1LCA4MiwgMTU3LCAxLCA3NCwgMTU3LCAxLCAyMzYsIDQwLCAxNTcsIDEsIDY5LCAxNTcsIDEsIAotICAgIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1NCwgCi0gICAgMjEwLCAxNTcsIDEsIDc4LCAxNTcsIDEsIDI1MywgMjAwLCAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzOCwgMTU3LCAxLCAKLSAgICAyNDMsIDE0MiwgMTU3LCAxLCAyNDMsIDAsIDE1NywgMSwgMjI5LCA4MiwgMTU3LCAxLCAyNTEsIDQxLCAxNTcsIDEsIDI1MCwgCi0gICAgMTY1LCAxNTcsIDEsIDIzNSwgMTQ3LCAxNTcsIDEsIDIzNSwgMTIwLCAxNTcsIDEsIDIyNywgMTY5LCAxNTcsIDEsIDIxNSwgCi0gICAgMTU3LCAxNTcsIDEsIDIxNSwgMTQ1LCAxNTcsIDEsIDI0OCwgMTQzLCAxNTcsIDEsIDI0OCwgMTI3LCAxNTcsIDEsIDIyOCwgCi0gICAgMTE1LCAxNTcsIDEsIDIxNywgMTA2LCAxNTcsIDEsIDIxNiwgMjA5LCAxNTcsIDEsIDI0OCwgMjI5LCAxNTcsIDEsIDI0OCwgCi0gICAgMzMsIDE1NywgMSwgMTk4LCAxNTcsIDEsIDE5MSwgMTU3LCAxLCAyMjUsIDE1MCwgMTU3LCAxLCAyNTIsIDE5OSwgMTU3LCAxLCAKLSAgICAyNTIsIDI2LCAxNTcsIDEsIDE4NiwgMTU3LCAxLCAxOTIsIDE1NywgMSwgMjA1LCAxNTcsIDEsIDIzMywgMTQxLCAxNTcsIDEsIAotICAgIDIzMiwgMTkwLCAxNTcsIDEsIDIxNCwgMjcsIDE1NywgMSwgMjIwLCAxMDQsIDE1NywgMSwgMjE4LCAyMjUsIDE1NywgMSwgCi0gICAgMjA2LCAxNTcsIDEsIDE2MiwgMTU3LCA1LCAyMjcsIDIwOSwgMTU3LCA1LCAyNTMsIDE4MywgMTU3LCAyNSwgNSwgMjU1LCAKLSAgICA4MiwgMTU3LCAyNSwgNSwgNzQsIDE1NywgMjUsIDUsIDIzNiwgNDAsIDE1NywgMjUsIDUsIDY5LCAxNTcsIDI1LCA1LCAyMTQsIAotICAgIDExOCwgMTU3LCAyNSwgNSwgMTQ5LCAxNTMsIDE1NywgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDE1NywgMjUsIDUsIDc2LCAKLSAgICAxNTcsIDI1LCA1LCAyNTQsIDIxMCwgMTU3LCAyNSwgNSwgNzgsIDE1NywgMjUsIDUsIDI1MywgMjAwLCAxNTcsIDUsIDIxMywgCi0gICAgMTUyLCAxNTcsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTU3LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDE1NywgMSwgMjIyLCAKLSAgICAxODEsIDE1NywgMSwgMjIzLCA0MiwgMTU3LCAxLCAyMTAsIDE2OCwgMTU3LCAxLCAxNDksIDIyMiwgMTgyLCAxNTcsIDEsIAotICAgIDE0OSwgMjMyLCAxOTEsIDE1NywgMjUsIDUsIDE0OSwgMTU2LCAxNTcsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCAxNTcsIDIxLCAKLSAgICAyMTAsIDg2LCAxNTcsIDIxLCAxMTEsIDE1NywgMjEsIDEwNSwgMTU3LCAyMSwgMTU4LCAxNTcsIDIxLCAxNjEsIDE1NywgMjEsIAotICAgIDE5MCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAxOTksIDE1NywgMjEsIDE5NiwgMTU3LCAyMSwgMjAxLCAxNTcsIDIzNSwgCi0gICAgMTY3LCAxNTcsIDEsIDIxMiwgNjUsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxNTcsIDI0NCwgMTAsIDEyMywgMjQyLCAKLSAgICAzNCwgMTU3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMTksIDExOSwgMTU3LCAyNDQsIAotICAgIDEwLCAxMjMsIDI0NSwgMTk2LCAxNTcsIDI0NCwgMTAsIDEzNCwgMjE5LCAxMTgsIDM2LCA1LCAyNTQsIDgzLCAzNiwgNSwgCi0gICAgMjEzLCAxNDcsIDM2LCAxLCA2MSwgMzYsIDEsIDI1NSwgODIsIDM2LCAxLCA3NCwgMzYsIDEsIDIzNiwgNDAsIDM2LCAxLCAKLSAgICA2OSwgMzYsIDEsIDIxNCwgMTE4LCAzNiwgMSwgNzYsIDM2LCAxLCAyNDUsIDIxNywgMzYsIDEsIDI1NCwgMjEwLCAzNiwgMSwgCi0gICAgNzgsIDM2LCAxLCAyMjYsIDE4NywgMzYsIDEsIDI1MywgMjAwLCAzNiwgMSwgMTc2LCAzNiwgMSwgMjI5LCA4MiwgMzYsIDEsIAotICAgIDI1MSwgNDEsIDM2LCAxLCAyMzUsIDE0NywgMzYsIDEsIDIyNywgMTY5LCAzNiwgMSwgMjE1LCAxNTcsIDM2LCAxLCAyMjgsIAotICAgIDExNSwgMzYsIDEsIDIxNywgMTA2LCAzNiwgMSwgMTk4LCAzNiwgMSwgMjI4LCA5NywgMzYsIDEsIDE5MSwgMzYsIDEsIDE4NiwgCi0gICAgMzYsIDEsIDE5MiwgMzYsIDEsIDIwNSwgMzYsIDEsIDIyMiwgMTgxLCAzNiwgMSwgMjMzLCAxNDEsIDM2LCAxLCAyMzIsIAotICAgIDE5MCwgMzYsIDEsIDIzMiwgMTgxLCAzNiwgMSwgMjE0LCAyNywgMzYsIDEsIDIyMCwgMTA0LCAzNiwgMSwgMjE4LCAyMjUsIAotICAgIDM2LCAxLCAyMDYsIDM2LCAxLCAxNjIsIDM2LCAyNSwgNSwgMjU1LCA4MiwgMzYsIDI1LCA1LCA3NCwgMzYsIDI1LCA1LCAKLSAgICAyMzYsIDQwLCAzNiwgMjUsIDUsIDY5LCAzNiwgMjUsIDUsIDIxNCwgMTE4LCAzNiwgMjUsIDUsIDc2LCAzNiwgMjUsIDUsIAotICAgIDI0NSwgMjE3LCAzNiwgMjUsIDUsIDI1NCwgMjEwLCAzNiwgMjUsIDUsIDc4LCAzNiwgMjUsIDUsIDIyNiwgMTg3LCAzNiwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCAzNiwgNSwgMjEzLCAxNTIsIDM2LCAyMjYsIDIwOCwgMzYsIDI1MywgMjAxLCAyMzMsIDI5LCAKLSAgICA3OSwgMzYsIDIxLCAyMTAsIDg2LCAzNiwgMjEsIDExMSwgMzYsIDIxLCAxMDUsIDM2LCAyMSwgMTU4LCAzNiwgMjEsIDE2MSwgCi0gICAgMzYsIDIxLCAxOTAsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDE5OSwgMzYsIDIxLCAxOTYsIDM2LCAyMSwgMjAxLCAzNiwgNTQsIAotICAgIDIxNiwgMjQ4LCAzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDM2LCA1NCwgMTIzLCAyMTYsIDE0OCwgMzYsIDI0OCwgMTU0LCA1MCwgCi0gICAgMzYsIDIzMCwgMTQwLCA1MCwgMzYsIDIxMSwgNDUsIDUwLCAzNiwgMjQ4LCA5NSwgNTAsIDM2LCAyNDksIDE0NywgNTAsIDM2LCAKLSAgICAyNTMsIDI0NiwgNzIsIDUwLCAzNiwgMjIyLCAxMjAsIDUwLCAzNiwgNTQsIDUwLCAxNDgsIDUsIDI1MSwgNywgMTQ4LCA1LCAKLSAgICAyNTQsIDgzLCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIDEsIDYxLCAxNDgsIDEsIDI1NSwgODIsIDE0OCwgMSwgNzQsIDE0OCwgCi0gICAgMSwgMjM2LCA0MCwgMTQ4LCAxLCA2OSwgMTQ4LCAxLCAyMTQsIDExOCwgMTQ4LCAxLCAxNDksIDE1MywgMTQ4LCAxLCAxNDksIAotICAgIDE1NiwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyNDUsIDIxNywgMTQ4LCAxLCAyNTQsIDIxMCwgMTQ4LCAxLCA3OCwgMTQ4LCAxLCAKLSAgICAyMjYsIDE4NywgMTQ4LCAxLCAyNTMsIDIwMCwgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzgsIDE0OCwgMSwgMjQzLCAKLSAgICAxNDIsIDE0OCwgMSwgMjQzLCAwLCAxNDgsIDEsIDIyOSwgODIsIDE0OCwgMSwgMjUxLCA0MSwgMTQ4LCAxLCAyNTAsIDE2NSwgCi0gICAgMTQ4LCAxLCAyMzUsIDE0NywgMTQ4LCAxLCAyMzUsIDEyMCwgMTQ4LCAxLCAyMjcsIDE2OSwgMTQ4LCAxLCAyMTUsIDE1NywgCi0gICAgMTQ4LCAxLCAyMTUsIDE0NSwgMTQ4LCAxLCAyNDgsIDE0MywgMTQ4LCAxLCAyNDgsIDEyNywgMTQ4LCAxLCAyMjgsIDExNSwgCi0gICAgMTQ4LCAxLCAyMTcsIDEwNiwgMTQ4LCAxLCAyMTYsIDIwOSwgMTQ4LCAxLCAyNDgsIDIyOSwgMTQ4LCAxLCAyNDgsIDMzLCAKLSAgICAxNDgsIDEsIDE5OCwgMTQ4LCAxLCAxOTEsIDE0OCwgMSwgMjI1LCAxNTAsIDE0OCwgMSwgMjUyLCAxOTksIDE0OCwgMSwgCi0gICAgMjUyLCAyNiwgMTQ4LCAxLCAxODYsIDE0OCwgMSwgMTkyLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE4MSwgMTQ4LCAxLCAKLSAgICAyMzMsIDE0MSwgMTQ4LCAxLCAyMzIsIDE5MCwgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTA0LCAxNDgsIDEsIAotICAgIDIxOCwgMjI1LCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAxNjIsIDE0OCwgNSwgMjUzLCAxODMsIDE0OCwgMjUsIDUsIDI1NSwgCi0gICAgODIsIDE0OCwgMjUsIDUsIDc0LCAxNDgsIDI1LCA1LCAyMzYsIDQwLCAxNDgsIDI1LCA1LCA2OSwgMTQ4LCAyNSwgNSwgMjE0LCAKLSAgICAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAxNDgsIDI1LCA1LCA3NiwgCi0gICAgMTQ4LCAyNSwgNSwgMjQ1LCAyMTcsIDE0OCwgMjUsIDUsIDI1NCwgMjEwLCAxNDgsIDI1LCA1LCA3OCwgMTQ4LCAyNSwgNSwgCi0gICAgMjI2LCAxODcsIDE0OCwgMjUsIDUsIDI1MywgMjAwLCAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjksIDc5LCAxNDgsIAotICAgIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTQ4LCAxLCAyMTUsIDE4NCwgMTQ4LCAxLCAyNDYsIDQ2LCAxNDgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDE0OCwgMSwgMTQ5LCAyMzIsIDE5MSwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxOTEsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgMjEsIDExMSwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIAotICAgIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTkwLCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDE5OSwgMTQ4LCAyMSwgMTk2LCAKLSAgICAxNDgsIDIxLCAyMDEsIDE0OCwgMjQ0LCAxMCwgMjEsIDIxMCwgODcsIDMxLCAyMjYsIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIAotICAgIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDIyNiwgMjQxLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAyMSwgCi0gICAgMTEzLCAzMSwgMjI2LCAyNDEsIDIyNCwgMjI2LCA2NCwgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMzQsIDMxLCAyMjYsIAotICAgIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDI0NSwgNTAsIDIyNCwgMjI2LCA2NCwgCi0gICAgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMTMsIDMxLCAyNDUsIDUwLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAKLSAgICAyMSwgMTM0LCAzMSwgMjQ1LCA1MCwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgNSwgMjE1LCA4NCwgMTY1LCA1LCAyNTQsIAotICAgIDgzLCAxNjUsIDUsIDIxMywgMTQ3LCAxNjUsIDEsIDYxLCAxNjUsIDEsIDI1NSwgODIsIDE2NSwgMSwgNzQsIDE2NSwgMSwgCi0gICAgMjM2LCA0MCwgMTY1LCAxLCA2OSwgMTY1LCAxLCAyMTQsIDExOCwgMTY1LCAxLCAxNDksIDE1MywgMTY1LCAxLCAxNDksIAotICAgIDE1NiwgMTY1LCAxLCA3NiwgMTY1LCAxLCAyNDUsIDIxNywgMTY1LCAxLCAyNTQsIDIxMCwgMTY1LCAxLCA3OCwgMTY1LCAxLCAKLSAgICAyMjYsIDE4NywgMTY1LCAxLCAyNTMsIDIwMCwgMTY1LCAxLCAxNzYsIDE2NSwgMSwgMjM0LCAxMzgsIDE2NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE2NSwgMSwgMjQzLCAwLCAxNjUsIDEsIDIyOSwgODIsIDE2NSwgMSwgMjUxLCA0MSwgMTY1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTY1LCAxLCAyMzUsIDE0NywgMTY1LCAxLCAyMzUsIDEyMCwgMTY1LCAxLCAyMjcsIDE2OSwgMTY1LCAxLCAyMTUsIDE1NywgCi0gICAgMTY1LCAxLCAyMTUsIDE0NSwgMTY1LCAxLCAyNDgsIDE0MywgMTY1LCAxLCAyNDgsIDEyNywgMTY1LCAxLCAyMjgsIDExNSwgCi0gICAgMTY1LCAxLCAyMTcsIDEwNiwgMTY1LCAxLCAyMTYsIDIwOSwgMTY1LCAxLCAyNDgsIDIyOSwgMTY1LCAxLCAyNDgsIDMzLCAKLSAgICAxNjUsIDEsIDE5OCwgMTY1LCAxLCAxOTEsIDE2NSwgMSwgMjI1LCAxNTAsIDE2NSwgMSwgMjUyLCAxOTksIDE2NSwgMSwgCi0gICAgMjUyLCAyNiwgMTY1LCAxLCAxODYsIDE2NSwgMSwgMTkyLCAxNjUsIDEsIDIwNSwgMTY1LCAxLCAyMjIsIDE4MSwgMTY1LCAxLCAKLSAgICAyMzMsIDE0MSwgMTY1LCAxLCAyMzIsIDE5MCwgMTY1LCAxLCAyMTQsIDI3LCAxNjUsIDEsIDIyMCwgMTA0LCAxNjUsIDEsIAotICAgIDIxOCwgMjI1LCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgMjI3LCAyMDksIDE2NSwgNSwgMjUzLCAxODMsIAotICAgIDE2NSwgMjUsIDUsIDI1NSwgODIsIDE2NSwgMjUsIDUsIDc0LCAxNjUsIDI1LCA1LCAyMzYsIDQwLCAxNjUsIDI1LCA1LCA2OSwgCi0gICAgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjQ1LCAyMTcsIDE2NSwgMjUsIDUsIDI1NCwgMjEwLCAxNjUsIDI1LCA1LCAKLSAgICA3OCwgMTY1LCAyNSwgNSwgMjI2LCAxODcsIDE2NSwgMjUsIDUsIDI1MywgMjAwLCAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIAotICAgIDIzMywgMjksIDc5LCAxNjUsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTY1LCAxLCAyNDQsIDIwNCwgMTY1LCAxLCAxNDksIAotICAgIDIyMiwgMTgyLCAxNjUsIDEsIDE0OSwgMjMyLCAxOTEsIDE2NSwgMjUsIDUsIDE0OSwgMTU2LCAxNjUsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTEsIDE2NSwgMjEsIDEwNSwgMTY1LCAyMSwgMTU4LCAKLSAgICAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE5MCwgMTY1LCAyMSwgMTk1LCAxNjUsIDIxLCAxOTksIDE2NSwgMjEsIDE5NiwgCi0gICAgMTY1LCAyMSwgMjAxLCAxNjUsIDUsIDIzNSwgMTA4LCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIDUsIDI1NCwgODMsIDEzNiwgCi0gICAgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA4MiwgMTM2LCAxLCA3NCwgMTM2LCAxLCAyMzYsIDQwLCAKLSAgICAxMzYsIDEsIDY5LCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIDE0OSwgMTU2LCAxMzYsIDEsIAotICAgIDc2LCAxMzYsIDEsIDI0NSwgMjE3LCAxMzYsIDEsIDI1NCwgMjEwLCAxMzYsIDEsIDc4LCAxMzYsIDEsIDIyNiwgMTg3LCAKLSAgICAxMzYsIDEsIDI1MywgMjAwLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzOCwgMTM2LCAxLCAyNDMsIDE0MiwgMTM2LCAKLSAgICAxLCAyNDMsIDAsIDEzNiwgMSwgMjI5LCA4MiwgMTM2LCAxLCAyNTEsIDQxLCAxMzYsIDEsIDI1MCwgMTY1LCAxMzYsIDEsIAotICAgIDIzNSwgMTQ3LCAxMzYsIDEsIDIzNSwgMTIwLCAxMzYsIDEsIDIyNywgMTY5LCAxMzYsIDEsIDIxNSwgMTU3LCAxMzYsIDEsIAotICAgIDIxNSwgMTQ1LCAxMzYsIDEsIDI0OCwgMTQzLCAxMzYsIDEsIDI0OCwgMTI3LCAxMzYsIDEsIDIyOCwgMTE1LCAxMzYsIDEsIAotICAgIDIxNywgMTA2LCAxMzYsIDEsIDIxNiwgMjA5LCAxMzYsIDEsIDI0OCwgMjI5LCAxMzYsIDEsIDI0OCwgMzMsIDEzNiwgMSwgCi0gICAgMTk4LCAxMzYsIDEsIDIyOCwgOTcsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIyNSwgMTUwLCAxMzYsIDEsIDI1MiwgMTk5LCAKLSAgICAxMzYsIDEsIDI1MiwgMjYsIDEzNiwgMSwgMTg2LCAxMzYsIDEsIDE5MiwgMTM2LCAxLCAyMDUsIDEzNiwgMSwgMjIyLCAxODEsIAotICAgIDEzNiwgMSwgMjMzLCAxNDEsIDEzNiwgMSwgMjMyLCAxOTAsIDEzNiwgMSwgMjMyLCAxODEsIDEzNiwgMSwgMjE0LCAyNywgCi0gICAgMTM2LCAxLCAyMjAsIDEwNCwgMTM2LCAxLCAyMTgsIDIyNSwgMTM2LCAxLCAyMDYsIDEzNiwgMSwgMTYyLCAxMzYsIDEsIAotICAgIDIxNSwgMTI2LCAxMzYsIDUsIDI1MywgMTgzLCAxMzYsIDI1LCA1LCAyNTUsIDgyLCAxMzYsIDI1LCA1LCA3NCwgMTM2LCAyNSwgCi0gICAgNSwgMjM2LCA0MCwgMTM2LCAyNSwgNSwgNjksIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCA1LCAxNDksIDE1MywgCi0gICAgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDI0NSwgMjE3LCAxMzYsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTM2LCAyNSwgNSwgNzgsIDEzNiwgMjUsIDUsIDIyNiwgMTg3LCAxMzYsIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3NiwgMTM2LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDEzNiwgCi0gICAgMSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAxLCAxNDksIDIzMiwgMTkxLCAxMzYsIDI1LCA1LCAxNDksIDE1NiwgMTM2LCAyNSwgCi0gICAgNSwgMTQ5LCAyMzIsIDE5MSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTExLCAxMzYsIDIxLCAxMDUsIDEzNiwgMjEsIAotICAgIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxOTAsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMTk5LCAxMzYsIDIxLCAKLSAgICAxOTYsIDEzNiwgMjEsIDIwMSwgMTM2LCA1NCwgMjE2LCAyNDgsIDEzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDEzNiwgNTQsIAotICAgIDEyMywgMjE2LCAxNDgsIDEzNiwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxMzYsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgCi0gICAgMTM2LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDEzNiwgMjQ4LCAxNTgsIDc5LCAxMzYsIDEsIDI1MCwgMTA3LCAyMjgsIAotICAgIDExNiwgMTM2LCAxLCAyNTAsIDEwNywgMjMwLCAzMCwgMTM2LCAxLCAyNTAsIDEwNywgMjIyLCAxODIsIDEzNiwgMSwgMjUwLCAKLSAgICAxMDcsIDE1NiwgMTM2LCAxLCAyNTAsIDEwNywgMjMyLCAxOTEsIDEzNiwgMSwgMjUwLCAxMDcsIDIzNSwgMjksIDE3NSwgNSwgCi0gICAgMjU0LCA4MiwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE3MywgMTc1LCAxLCAyNTUsIDM2LCAxNzUsIDEsIAotICAgIDI1NCwgMjMyLCAxNzUsIDEsIDI1NCwgMjQ3LCAxNzUsIDEsIDIzNSwgMTU3LCAxNzUsIDEsIDIzNiwgMzksIDE3NSwgMSwgCi0gICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxODAsIDE3NSwgMSwgMjM1LCAxODEsIDE3NSwgMSwgCi0gICAgMjM2LCAyNSwgMTc1LCAxLCAyMzYsIDI3LCAxNzUsIDEsIDI0NSwgMjUsIDE3NSwgMSwgMjQ1LCAyMTIsIDE3NSwgMSwgMjU0LCAKLSAgICAxOTcsIDE3NSwgMSwgMjI2LCAxMTIsIDE3NSwgMSwgMjI2LCAxODEsIDE3NSwgMSwgMjUzLCAxODYsIDE3NSwgMSwgMjU0LCAKLSAgICAxNTQsIDIzNCwgMTkzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMzQsIDE5MywgMTc1LCAxLCAyNTQsIDE1NCwgMjQzLCA4OSwgCi0gICAgMTc1LCAxLCAyMzEsIDIxNCwgMjQzLCA4OSwgMTc1LCAxLCAyMzQsIDIzNSwgMjI5LCAyMjcsIDE3NSwgMSwgMjIxLCAyMzgsIAotICAgIDI0MywgODksIDE3NSwgMSwgMjU0LCAxNTQsIDI1MCwgMjI0LCAxNzUsIDEsIDIzMSwgMjE0LCAyNTAsIDIyNCwgMTc1LCAxLCAKLSAgICAyNTQsIDE1NCwgMjM1LCAxMzMsIDE3NSwgMSwgMjMxLCAyMTQsIDIzNSwgMTMzLCAxNzUsIDEsIDIxNywgOTksIDIyOSwgCi0gICAgMjI3LCAxNzUsIDEsIDIxNywgOTksIDIyMSwgMjM3LCAyMjksIDIyOCwgMTc1LCAxLCAyMjEsIDIzOCwgMjM1LCAxMzMsIAotICAgIDE3NSwgMSwgMjU0LCAxNTQsIDIxNSwgMTUzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMTUsIDE1MywgMTc1LCAxLCAyNTQsIDE1NCwgCi0gICAgMjQ4LCAxMzQsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTM0LCAxNzUsIDEsIDIzMCwgNTgsIDIyOSwgMTg1LCAxNzUsIDEsIAotICAgIDIyMSwgMjM4LCAyNDgsIDEzNCwgMTc1LCAxLCAyNTQsIDE1NCwgMjE3LCAzMSwgMTc1LCAxLCAyMzEsIDIxNCwgMjE3LCAzMSwgCi0gICAgMTc1LCAxLCAyNTQsIDE1NCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTUyLCAxNzUsIDEsIDI0OCwgMTgyLCAKLSAgICAyMjksIDE4NSwgMTc1LCAxLCAyMjEsIDIzOCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjU0LCAxNTQsIDIyNSwgMjMyLCAxNzUsIDEsIAotICAgIDIzMSwgMjE0LCAyMjUsIDIzMiwgMTc1LCAxLCAyNTQsIDE1NCwgMjUyLCAxMjAsIDE3NSwgMSwgMjMxLCAyMTQsIDI1MiwgCi0gICAgMTIwLCAxNzUsIDEsIDIzMSwgMTM2LCAxNzUsIDEsIDI1NCwgMTM5LCAyNTIsIDEyMCwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAotICAgIDEsIDIyMywgMTM2LCAxNzUsIDEsIDI0OCwgMTgyLCAyMzMsIDczLCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk5LCAKLSAgICAyMjEsIDIxMiwgMTc1LCAxLCAyMzAsIDU4LCAyMjEsIDIxMiwgMTc1LCAxLCAyNDgsIDE4MiwgMjIxLCAyMTIsIDE3NSwgMSwgCi0gICAgMjQxLCAyNDksIDE3NSwgMSwgMjMwLCA1OCwgMjMzLCA3MywgMTc1LCAxLCAyNDQsIDE2NCwgMTc1LCA1LCAyNTQsIDE4NiwgCi0gICAgMTc1LCAyNSwgNSwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMTYxLCAyNTQsIDI0OSwgMTc1LCAyNSwgNSwgMjQ3LCAKLSAgICAyMzYsIDI1NCwgMjQ5LCAxNzUsIDI1LCA1LCAyMzQsIDE2MSwgMjM1LCAxNzcsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMzUsIAotICAgIDE3NywgMTc1LCAyNSwgNSwgMjM0LCAxNjEsIDIyNiwgOTIsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMjYsIDkyLCAxNzUsIAotICAgIDI1LCA1LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgMjM0LCAyMSwgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDIzNCwgMjEsIDE3NSwgCi0gICAgMjUsIDUsIDIzNCwgMjMsIDI0OCwgNzUsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIDI1NCwgMjQyLCAxNzUsIDI1LCAKLSAgICA1LCAyMzQsIDIyLCAyNDIsIDU0LCAyNDcsIDIzNiwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIAotICAgIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgCi0gICAgMjQ3LCAyMzYsIDI0MywgODgsIDE3NSwgMjI0LCAxNDQsIDIzMywgMjEzLCAxNjgsIDEzNSwgMjM0LCAzNSwgMjM0LCAyNTIsIAotICAgIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMzQsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDUsIDE2OCwgMTM1LCAKLSAgICAyMzQsIDExMiwgMjM0LCAxMDEsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDksIDE2OCwgMTM1LCAyMzQsIDExMiwgCi0gICAgMjIzLCAxNTcsIDE2OCwgMTM1LCAyMjksIDEwLCAyMjgsIDI1MywgMTY4LCAxMzUsIDI1MCwgOTUsIDI1MCwgMTU1LCAxNjgsIAotICAgIDEzNSwgMjUwLCA5NSwgMjUwLCAxMDMsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDE1NCwgMTY4LCAxMzUsIDIxOSwgNjEsIAotICAgIDIxOSwgNjAsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDkxLCAxNjgsIDEzNSwgMjEwLCAyNDUsIDIxMCwgMjUyLCAxNjgsIAotICAgIDEzNSwgMjQ3LCAxNTQsIDI1MCwgMTYyLCAxNjgsIDEzNSwgMjE2LCA0MywgMjI1LCAyNDIsIDE2OCwgMTM1LCAyMTYsIDE1OCwgCi0gICAgMjE2LCAyMDEsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI5LCAyMDYsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI1LCAxMTQsIAotICAgIDE2OCwgMTM1LCAyMjgsIDgwLCAyMjksIDEwMywgMTY4LCAxMzUsIDI0NywgMTU0LCAyNDgsIDc2LCAxNjgsIDEzNSwgMjE2LCAKLSAgICA0MywgMjE3LCA1NiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDEzMiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDIwNSwgCi0gICAgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDE1NSwgMTY4LCAxMzUsIDIyOCwgODAsIDIyNywgMjQyLCAxNjgsIDEzNSwgMjUxLCAKLSAgICAyMTQsIDI1MiwgMTcyLCAxNjgsIDEzNSwgMjI1LCAyMCwgMjI1LCA0NSwgMTY4LCAxMzUsIDIyNSwgMTI1LCAyMjUsIDExNiwgCi0gICAgMTY4LCAxMzUsIDI0NCwgNTIsIDI0NCwgMjA0LCAxNjgsIDEzNSwgMjI1LCAxMjUsIDIyNSwgMTQ0LCAxNjgsIDEzNSwgMjQ0LCAKLSAgICA1MiwgMjQ0LCAxODEsIDE2OCwgMTM1LCAyMjUsIDEyNSwgMjIxLCAyNDksIDE2OCwgMTM1LCAyMzAsIDE2NywgMTg2LCAxNjgsIAotICAgIDEzNSwgMjEwLCAyNDUsIDIxMSwgNzksIDE2OCwgMTM1LCAyMjIsIDIxNCwgMjIyLCAxNDEsIDE2OCwgMTM1LCAyMjIsIDE0MiwgCi0gICAgMTY4LCAxMzUsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMTY4LCAxMzUsIDIzMiwgMTAzLCAxNjgsIDEzNSwgMjExLCAyMjgsIAotICAgIDIxMiwgNjEsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDgsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDExNiwgMTY4LCAKLSAgICAxMzUsIDIxOSwgNjEsIDIxOCwgODMsIDE2OCwgMTM1LCAyNDEsIDc2LCAyNDEsIDE2NiwgMTY4LCAxMzUsIDIzMiwgMTYzLCAKLSAgICAyNTAsIDc2LCAxNjgsIDEzNSwgMTQ0LCAyNTQsIDEyMywgMTY4LCAxMzUsIDI0MSwgNzYsIDIyOCwgNzUsIDE2OCwgMTM1LCAKLSAgICAyMjYsIDcyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0MiwgMjQsIDE2OCwgMTM1LCAKLSAgICAyMjEsIDIzMiwgMjU1LCA4MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIDE0NCwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NCwgCi0gICAgMTY4LCAxMzUsIDIyMSwgMjMyLCAyMzYsIDQwLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAKLSAgICAyMzIsIDIxNCwgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDY5LCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMTE4LCAxNjgsIAotICAgIDEzNSwgMjI1LCAxMjcsIDE2OCwgMjQ5LCAxMDYsIDE2LCAyNTIsIDE3MywgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NiwgMTY4LCAKLSAgICAxMzUsIDIyMSwgMjMyLCAyNTQsIDI1MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3OCwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIAotICAgIDIxMSwgMjMxLCAyMDMsIDE2OCwgMTM1LCAyMjEsIDIzMiwgMjU0LCAyMTEsIDIzMSwgMjA0LCAxNjgsIDEzNSwgMjMzLCAKLSAgICAxMTIsIDE2OCwgMTM1LCAyMzEsIDIwMCwgMTY4LCAxMzUsIDIzMSwgMjAxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0NSwgCi0gICAgMTg4LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNiwgMTU3LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNSwgMjI5LCAxNjgsIAotICAgIDEzNSwgMjMxLCAyMDksIDI1MCwgMTQzLCAxNjgsIDEzNSwgMjE2LCAxOTksIDE2OCwgMTM1LCAyMjgsIDIxMCwgMTY4LCAKLSAgICAxMzUsIDIxMSwgNzMsIDE2OCwgMTM1LCAyNDQsIDQzLCAxNjgsIDIxLCAyMTAsIDg2LCAxNjgsIDIxLCAxMTEsIDE2OCwgMjEsIAotICAgIDEwNSwgMTY4LCAyMSwgMTU4LCAxNjgsIDIxLCAxNjEsIDE2OCwgMjEsIDE5MCwgMTY4LCAyMSwgMTk1LCAxNjgsIDIxLCAKLSAgICAxOTksIDE2OCwgMjEsIDE5NiwgMTY4LCAyMSwgMjAxLCAxNjgsIDEzNSwgMjU0LCAxMTksIDE2OCwgMTM1LCAyMzQsIDExMCwgCi0gICAgMjA5LCAyMDksIDEsIDIzNCwgMzQsIDIwOSwgMjA5LCAxLCAyMzQsIDExMiwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDIzNCwgCi0gICAgMTEyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI5LCA5LCAyMDksIDIwOSwgMSwgMjQ5LCAyNDYsIDIwOSwgMjA5LCAxLCAKLSAgICAyMTksIDYxLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI3LCAxMzgsIDIwOSwgMjA5LCAxLCAyNDcsIDE1MywgMjA5LCAyMDksIAotICAgIDEsIDExMiwgMjA5LCAyMDksIDEsIDIxNiwgMTU4LCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjE2LCAxNTgsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAxLCAyMjgsIDc5LCAyMDksIDIwOSwgMSwgMjUxLCAyMTMsIDIwOSwgMjA5LCAxLCAyMjUsIDE5LCAyMDksIAotICAgIDIwOSwgMSwgMjI1LCAxMjUsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgCi0gICAgMjI1LCAxMjUsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjMwLCAxNjYsIAotICAgIDIwOSwgMjA5LCAxLCAyMTAsIDI0NCwgMjA5LCAyMDksIDEsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMjA5LCAyMDksIDEsIDIzMiwgCi0gICAgMTYzLCAyMzIsIDEyNywgMjA5LCAyMDksIDEsIDIxMSwgMjI3LCAyMDksIDIwOSwgMSwgMjE5LCA2MSwgMjE4LCAzNiwgMjA5LCAKLSAgICAyMDksIDEsIDI0MSwgNzYsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCA3OCwgMjA5LCAyMDksIDEsIDI0MSwgNzYsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAyNDUsIDE3MSwgMjA5LCAyMDksIDI1LCA1LCA2MSwgMjA5LCAyMDksIDI1LCA1LCAyMzEsIDIwOSwgMjM0LCAKLSAgICAyNDAsIDIwOSwgMjA5LCAyNSwgNSwgMjU1LCA4MiwgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDE0NCwgMjA5LCAyMDksIDI1LCAKLSAgICA1LCA3NCwgMjA5LCAyMDksIDI1LCA1LCAyMzYsIDQwLCAyMDksIDIwOSwgMjUsIDUsIDIxMSwgMTE3LCAyMDksIDIwOSwgMjUsIAotICAgIDUsIDIxMCwgMTY5LCAyMDksIDIwOSwgMjUsIDUsIDY5LCAyMDksIDIwOSwgMjUsIDUsIDIxNCwgMTE4LCAyMDksIDIwOSwgCi0gICAgMjUsIDUsIDIzMSwgMjA5LCAyMzQsIDE5LCAyMDksIDIwOSwgMjIwLCAxNDcsIDUsIDIzMiwgMTYyLCAyMDksIDIwOSwgMjIwLCAKLSAgICAxNDcsIDUsIDIyNywgMTM4LCAyMDksIDIwOSwgMjUsIDUsIDc2LCAyMDksIDIwOSwgMjUsIDUsIDI0NSwgMjAzLCAyMDksIAotICAgIDIwOSwgMjUsIDUsIDc4LCAyMDksIDIwOSwgMjUsIDUsIDI1MywgMTc1LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMjEwLCAKLSAgICAyMDksIDIwOSwgMjM0LCAzNSwgMjMzLCAxNDEsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA5LCAyNDUsIDE4OCwgMjA5LCAyMDksIAotICAgIDEzOCwgMjMxLCAyMDksIDIxNiwgMTU3LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxMTgsIDIwOSwgMjA5LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyNTAsIDIzMSwgMjA5LCAyMDksIDI1MSwgMTIsIDc5LCAyMDksIDIwOSwgMjI4LCAyMTksIDIwOSwgCi0gICAgMjA5LCAyMSwgMjEwLCA4NiwgMjA5LCAyMDksIDIxLCAxMTEsIDIwOSwgMjA5LCAyMSwgMTA1LCAyMDksIDIwOSwgMjEsIAotICAgIDE1OCwgMjA5LCAyMDksIDIxLCAxNjEsIDIwOSwgMjA5LCAyMSwgMTkwLCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIAotICAgIDIxLCAxOTksIDIwOSwgMjA5LCAyMSwgMTk2LCAyMDksIDIwOSwgMjEsIDIwMSwgMjA5LCAyMDksIDI0MSwgNzYsIDIyOCwgCi0gICAgNzksIDIwOSwgMjA5LCAyNDEsIDc2LCAyMzAsIDE2NiwgMjA5LCAyMDksIDEsIDIzNCwgMTEzLCAyNDIsIDE4MSwgMjA5LCAKLSAgICAyMDksIDEsIDIzNCwgMTEzLCAyMjcsIDEzOCwgNjMsIDMsIDIyNiwgMjA4LCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAKLSAgICAyMzAsIDI1MywgMjE1LCAxOTAsIDYxLCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAyMzAsIDI1MywgMjU1LCAxNjgsIAotICAgIDIyMiwgMjE4LCAyNTIsIDg1LCAxODYsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTEsIDAsIDIzMCwgMjUzLCAyNTUsIDE2OCwgCi0gICAgMjQyLCAxMjIsIDIxNSwgMTc0LCAxODYsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMzEsIDk4LCAxODYsIDYzLCAKLSAgICAxNjQsIDI1MCwgNCwgMjExLCAwLCAyMzAsIDI1MywgMjIwLCAxMTEsIDE4NiwgNjMsIDE2NCwgMjUwLCAyNDcsIDIxMSwgMCwgCi0gICAgMjMwLCAyNTMsIDIyNSwgMTE1LCAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNTMsIDIxNSwgMTc0LCAKLSAgICAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIyMSwgMjEwLCAyMjAsIDk3LCA2MywgMTY0LCAyNTEsIDEzNiwgMjExLCAwLCAyMzAsIAotICAgIDI1MiwgNjMsIDE2NCwgMjUxLCAyMzEsIDIyMCwgNSwgMjExLCAwLCAyMzAsIDI1MiwgNjMsIDE2NCwgMjM1LCAyMDQsIDIxNSwgCi0gICAgMTczLCA2MywgMTY0LCAyNDgsIDY5LCAyMTUsIDE3NCwgMjUxLCAxMzUsIDYzLCAxNjQsIDIyMCwgOTcsIDYzLCAxNjQsIAotICAgIDIyNywgMTQzLCAyMjAsIDk3LCA2MywgMTY0LCAyMTUsIDE3NCwgMjIwLCA5NywgNjMsIDE2NCwgMjI3LCAxNDMsIDIxNSwgCi0gICAgMTc0LCAyMjAsIDk3LCA2MywgMTY0LCAyMjIsIDIzOSwgMjUwLCAxMzAsIDIxOCwgMjM4LCAyMjAsIDk3LCA2MywgMTY0LCAKLSAgICAyMjMsIDQ1LCAyNDIsIDE1MywgMjIwLCA5NywgNjMsIDE2NCwgMjUwLCAyNDcsIDI1NSwgMTcyLCAyMjIsIDE0NiwgMjMxLCAKLSAgICA5NywgMjAwLCAyNTEsIDE1LCA2MywgMTY0LCAyNDIsIDEyMiwgMjE1LCAxNzMsIDYzLCAyMzIsIDE1MCwgNSwgMjUwLCAxNjMsIAotICAgIDIyMiwgMTQ1LCA2MywgMjMyLCAxNTAsIDUsIDIzMywgMiwgMjIyLCAxNDUsIDYzLCAyNTMsIDIyMCwgNSwgMjIwLCAxMDcsIAotICAgIDI0MywgNzIsIDI1NSwgMTczLCAyMjIsIDE0NSwgNjMsIDI1MywgMjIwLCA1LCAyNTUsIDE3MCwgMTkxLCA2MywgMjUzLCAKLSAgICAyMjAsIDUsIDIyMSwgMTg0LCAyMTUsIDE2OSwgNjMsIDUsIDIyMywgMTMzLCAyNDcsIDE2NywgMjQzLCA3MSwgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjQyLCAxODMsIDYzLCA1LCAyMjMsIDEzMywgMjQ3LCAxNjcsIDI0MiwgMTIzLCA2MywgNSwgCi0gICAgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDMsIDcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDIsIDE4MywgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjIzLCAxMzMsIDIyOSwgMjIzLCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTExLCA2MywgCi0gICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE5MCwgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMTk5LCAKLSAgICA2MywgMjEsIDE5NiwgNjMsIDIxLCAyMDEsIDYzLCAyMSwgMTYzLCAxMTEsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCi0gICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxOTAsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgCi0gICAgMTYzLCAxOTksIDYzLCAyMSwgMTYzLCAxOTYsIDYzLCAyMSwgMTYzLCAyMDEsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCi0gICAgMTY0LCAyNTEsIDEzOCwgMjIyLCAxNDUsIDYzLCAxNjQsIDIyOSwgNzMsIDI1MSwgNzYsIDIyNywgMTUzLCAyMTAsIDI1LCAKLSAgICA2MywgMTY0LCAyNTAsIDI0NywgMjU1LCAxNzIsIDIyMiwgMTQ2LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAxNSwgNjMsIAotICAgIDE2NCwgMjI5LCA3MywgMjUxLCA3NiwgMjIwLCAxMDgsIDIyMiwgMTQ1LCA2MywgMTY0LCAyNTAsIDE0MCwgMjMwLCAyNTIsIAotICAgIDYzLCAxNjQsIDIxNSwgMTg1LCAyNTUsIDE2OSwgNjMsIDE2NCwgMjQyLCAxMDcsIDIyMiwgMTQ2LCAyNDIsIDcwLCA2MywgCi0gICAgMTY0LCAyNDIsIDEwNywgMjIyLCAxNDYsIDI0MiwgNzYsIDYzLCAxNjQsIDI1NCwgMTI0LCAyMzQsIDEyOSwgMjQyLCA3MCwgCi0gICAgNjMsIDE2NCwgMjU0LCAxMjQsIDIzNCwgMTI5LCAyNDIsIDc2LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzIsIDYzLCA1LCAKLSAgICAyMzEsIDE3MiwgMjE1LCAxNzIsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzOCwgNjMsIDEsIDI0MywgMTQyLCA2MywgMSwgCi0gICAgMjQzLCAwLCA2MywgMSwgMjI5LCA4MiwgNjMsIDEsIDI1MSwgNDEsIDYzLCAxLCAyNTAsIDE2NSwgNjMsIDEsIDIzNSwgMTQ3LCAKLSAgICA2MywgMSwgMjI3LCAxNjksIDYzLCAxLCAyMTUsIDE1NywgNjMsIDEsIDIxNSwgMTQ1LCA2MywgMSwgMjQ4LCAxNDMsIDYzLCAKLSAgICAxLCAyNDgsIDEyNywgNjMsIDEsIDIyOCwgMTE1LCA2MywgMSwgMjE3LCAxMDYsIDYzLCAxLCAyMTYsIDIwOSwgNjMsIDEsIAotICAgIDI0OCwgMjI5LCA2MywgMSwgMjQ4LCAzMywgNjMsIDEsIDE5OCwgNjMsIDEsIDE5MSwgNjMsIDEsIDIyNSwgMTUwLCA2MywgMSwgCi0gICAgMjUyLCAxOTksIDYzLCAxLCAyNTIsIDI2LCA2MywgMSwgMTg2LCA2MywgMSwgMjE1LCAxODQsIDYzLCAxLCAyMTUsIDE3NiwgCi0gICAgNjMsIDEsIDI0NiwgNDYsIDYzLCAxLCAyNDYsIDQxLCA2MywgMSwgMjEyLCA2NSwgNjMsIDEsIDIxMCwgODIsIDYzLCAxLCAKLSAgICAyMTAsIDExNiwgNjMsIDEsIDI1NSwgMTc1LCA2MywgMSwgMTkyLCA2MywgMSwgMjA1LCA2MywgMSwgMjMzLCAxNDEsIDYzLCAKLSAgICAxLCAyMjAsIDEwNCwgNjMsIDEsIDIxOCwgMjI1LCA2MywgMSwgMjA2LCA2MywgMSwgMTYyLCA2MywgMSwgNjEsIDYzLCAxLCAKLSAgICAyMzMsIDIzNywgNjMsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDEsIDIzNCwgNTIsIDYzLCAxLCAyMjIsIDE4MSwgNjMsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCA2MywgMjUsIDUsIDc0LCA2MywgMjUsIDUsIDIzNiwgNDAsIDYzLCAyNSwgNSwgNjksIDYzLCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDYzLCAyNSwgNSwgMTQ5LCAxNTMsIDYzLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjMsIDI1LCA1LCAxNDksIAotICAgIDE1NiwgNjMsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2MywgMjUsIDUsIDc2LCA2MywgMjUsIDUsIDI0NSwgMjE3LCA2MywgCi0gICAgMjUsIDUsIDc4LCA2MywgMjUsIDUsIDIyNiwgMTg3LCA2MywgNSwgMjIyLCAyMjQsIDIxOCwgODUsIDIyOSwgODMsIDIyMiwgCi0gICAgMjEzLCA2MywgNSwgMjIyLCAyMTgsIDI1MiwgODQsIDYzLCAyNSwgNSwgMjIzLCA1MiwgNzQsIDYzLCAyNSwgNSwgMjIzLCAKLSAgICA1MiwgMjM2LCA0MCwgNjMsIDUsIDIyNywgMTUzLCAyMTAsIDI2LCAyMjksIDIzMSwgMjQ4LCAyMjksIDYzLCA1LCAyMTksIAotICAgIDczLCAyMzMsIDY2LCA2MywgMTY0LCAyNDIsIDM2LCA2MywgMTY0LCAyMjYsIDYxLCA2MywgNSwgMjMzLCA2OSwgMjIyLCAKLSAgICAxNDUsIDYzLCA1LCAyMTEsIDcwLCAyMjIsIDE0NSwgNjMsIDUsIDIzMywgNzAsIDIxNSwgMTg1LCAyNTEsIDE1LCA2MywgNSwgCi0gICAgMjMxLCAxMDAsIDI1MSwgMTUsIDYzLCA1LCAyNDIsIDEyNiwgMjUxLCAxNiwgMjIzLCA0MywgNjMsIDUsIDI0MiwgMTI2LCAKLSAgICAyMzEsIDkwLCAyMjMsIDQzLCA2MywgNSwgMjM1LCAyMDAsIDIzMSwgMTAwLCAyNTEsIDE1LCA2MywgMjE4LCA3NCwgNSwgCi0gICAgMjMzLCA3MCwgMjE1LCAxODUsIDI1MSwgMTUsIDYzLCAyMTgsIDc0LCA1LCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgCi0gICAgNzQsIDUsIDIzNSwgMjAwLCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgNzQsIDEsIDE3NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDIzNCwgMTM4LCA2MywgMjE4LCA3NCwgMSwgMjQzLCAxNDIsIDYzLCAyMTgsIDc0LCAxLCAyNDMsIDAsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMjksIDgyLCA2MywgMjE4LCA3NCwgMSwgMjUxLCA0MSwgNjMsIDIxOCwgNzQsIDEsIDI1MCwgMTY1LCA2MywgMjE4LCAKLSAgICA3NCwgMSwgMjM1LCAxNDcsIDYzLCAyMTgsIDc0LCAxLCAyMjcsIDE2OSwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTU3LCA2MywgCi0gICAgMjE4LCA3NCwgMSwgMjE1LCAxNDUsIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDE0MywgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMTI3LCAKLSAgICA2MywgMjE4LCA3NCwgMSwgMjI4LCAxMTUsIDYzLCAyMTgsIDc0LCAxLCAyMTcsIDEwNiwgNjMsIDIxOCwgNzQsIDEsIDIxNiwgCi0gICAgMjA5LCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAyMjksIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDMzLCA2MywgMjE4LCA3NCwgMSwgCi0gICAgMTk4LCA2MywgMjE4LCA3NCwgMSwgMTkxLCA2MywgMjE4LCA3NCwgMSwgMjI1LCAxNTAsIDYzLCAyMTgsIDc0LCAxLCAyNTIsIAotICAgIDE5OSwgNjMsIDIxOCwgNzQsIDEsIDI1MiwgMjYsIDYzLCAyMTgsIDc0LCAxLCAxODYsIDYzLCAyMTgsIDc0LCAxLCAyMTUsIAotICAgIDE4NCwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTc2LCA2MywgMjE4LCA3NCwgMSwgMjQ2LCA0NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDI0NiwgNDEsIDYzLCAyMTgsIDc0LCAxLCAyMTIsIDY1LCA2MywgMjE4LCA3NCwgMSwgMjEwLCA4MiwgNjMsIDIxOCwgNzQsIAotICAgIDEsIDIxMCwgMTE2LCA2MywgMjE4LCA3NCwgMSwgMjU1LCAxNzUsIDYzLCAyMTgsIDc0LCAxLCAxOTIsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMDUsIDYzLCAyMTgsIDc0LCAxLCAyMzMsIDE0MSwgNjMsIDIxOCwgNzQsIDEsIDIyMCwgMTA0LCA2MywgMjE4LCA3NCwgCi0gICAgMSwgMjE4LCAyMjUsIDYzLCAyMTgsIDc0LCAxLCAyMDYsIDYzLCAyMTgsIDc0LCAxLCAxNjIsIDYzLCAyMTgsIDc0LCAxLCAKLSAgICA2MSwgNjMsIDIxOCwgNzQsIDEsIDIzMywgMjM3LCA2MywgMjE4LCA3NCwgMSwgMjQ0LCA4NSwgMjEyLCA2NSwgNjMsIDIxOCwgCi0gICAgNzQsIDEsIDI0NCwgODUsIDE5MiwgNjMsIDIxOCwgNzQsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDIzMywgMjI0LCAyMjIsIAotICAgIDE0MywgMjM0LCAxMzgsIDYzLCAyMzMsIDIyNCwgMjIyLCAxNDMsIDIzNCwgMTM5LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAKLSAgICAxNSwgNjMsIDI1MSwgNCwgNSwgMTE0LCAyNTIsIDc4LCA2MywgMjUxLCA0LCA1LCAxOTMsIDI1MiwgNzgsIDYzLCAyNTEsIDQsIAotICAgIDUsIDI1MSwgNSwgMjE3LCAyMSwgNjMsIDI1MSwgNCwgNSwgMjIxLCAyMDksIDI1NSwgMTc0LCA2MywgMTYsIDI0NiwgOTksIAotICAgIDI1MSwgMTMzLCA2MywgMTYsIDIyMywgMTMyLCAyMjIsIDIyNSwgNjMsIDE2LCAyMjYsIDgxLCAyNDMsIDcwLCA2MywgMTYsIAotICAgIDIyMywgMTMyLCAyMjIsIDIyNiwgMjIzLCA0NSwgMjQyLCAxNTIsIDYzLCAxNiwgMjI1LCAxMTUsIDE5MSwgNjMsIDE2LCAKLSAgICAyMjgsIDY0LCAyNTEsIDEzMywgNjMsIDE2LCAyMjgsIDY0LCAyNTEsIDEzNCwgMjI3LCAxNDMsIDI1NSwgMTcxLCA2MywgMTYsIAotICAgIDIyOCwgNjQsIDI1MSwgMTM0LCAyNDIsIDEyNCwgMjU1LCAxNzEsIDYzLCAxNiwgMjI4LCA2NCwgMjUxLCAxMzQsIDI1MSwgCi0gICAgNzcsIDI1NSwgMTcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyMjMsIDEzMywgMjQ3LCAxNjYsIDYzLCA1LCAyMjMsIAotICAgIDEzMywgMjI5LCAyMjQsIDI0MiwgMTIzLCA2MywgMTY0LCAyNTEsIDEzNywgMjIwLCA1LCAyNDIsIDIyMiwgMjMwLCAyNTMsIAotICAgIDIyMywgNDQsIDYzLCAxNjQsIDIzMCwgMTY4LCAyMTEsIDAsIDI0MiwgMjIyLCAyMzAsIDI1MywgMjIzLCA0NCwgNjMsIDE2NCwgCi0gICAgMjI3LCAxNDMsIDIxNSwgMTczLCA2MywgMTY0LCA2NSwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAKLSAgICAyMzEsIDk4LCAxODYsIDYzLCAxNjQsIDI1MCwgNCwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMjAsIAotICAgIDExMSwgMTg2LCAyMjIsIDI1MywgMjE4LCAwLCA1MCwgMjMzLCA1MSwgMjE4LCAwLCA1MCwgMjIyLCAyNTMsIDIxOCwgMCwgNSwgCi0gICAgMiwgMjQ3LCAxMjYsIDIzMywgNTEsIDIxOCwgMCwgNSwgMiwgMjQ3LCAxMjYsIDYzLCAxNjQsIDIzMywgNjEsIDIzMSwgMTAxLCAKLSAgICAyMjIsIDE0NSwgNjMsIDE2NCwgMjE1LCAyNTEsIDIzMSwgMTAxLCAyMjIsIDE0NSwgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgCi0gICAgMTM4LCA2OCwgMSwgMjQzLCAxNDIsIDY4LCAxLCAyNDMsIDAsIDY4LCAxLCAyMjksIDgyLCA2OCwgMSwgMjUxLCA0MSwgNjgsIAotICAgIDEsIDI1MCwgMTY1LCA2OCwgMSwgMjM1LCAxNDcsIDY4LCAxLCAyMzUsIDEyMCwgNjgsIDEsIDIyNywgMTY5LCA2OCwgMSwgCi0gICAgMjI4LCA4MSwgNjgsIDEsIDIxNSwgMTU3LCA2OCwgMSwgMjE1LCAxNDUsIDY4LCAxLCAyNDgsIDE0MywgNjgsIDEsIDI0OCwgCi0gICAgMTI3LCA2OCwgMSwgMjI4LCAxMTUsIDY4LCAxLCAyMTcsIDEwNiwgNjgsIDEsIDIxNiwgMjA5LCA2OCwgMSwgMjQ4LCAyMjksIAotICAgIDY4LCAxLCAyNDgsIDMzLCA2OCwgMSwgMTk4LCA2OCwgMSwgMTkxLCA2OCwgMSwgMjI1LCAxNTAsIDY4LCAxLCAyNTIsIDE5OSwgCi0gICAgNjgsIDEsIDI1MiwgMjYsIDY4LCAxLCAxODYsIDY4LCAxLCAxOTIsIDY4LCAxLCAyMDUsIDY4LCAxLCAyMzMsIDE0MSwgNjgsIAotICAgIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAyMzIsIDE5MCwgNjgsIDEsIDYxLCA2OCwgMSwgCi0gICAgMjIwLCA4OCwgNjEsIDY4LCAxLCA3NCwgNjgsIDEsIDIzNiwgNDAsIDY4LCAxLCA2OSwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgCi0gICAgMSwgNzYsIDY4LCAxLCAyMzAsIDE1NiwgNzYsIDY4LCAxLCA3OCwgNjgsIDEsIDI1MywgMjAwLCA2OCwgMjUsIDUsIDIxNywgCi0gICAgNjUsIDI1NSwgODIsIDY4LCAyNSwgNSwgMjU1LCA4MiwgNjgsIDI1LCA1LCA3NCwgNjgsIDI1LCA1LCAyMzYsIDQwLCA2OCwgCi0gICAgMjUsIDUsIDY5LCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc2LCA2OCwgMjUsIDUsIDI1NCwgMjEwLCA2OCwgCi0gICAgMjUsIDUsIDIzMCwgMTU2LCAyMzYsIDQwLCA2OCwgMjUsIDUsIDIzMCwgMTU2LCA3OCwgNjgsIDI1LCA1LCAxNjAsIDQ4LCAKLSAgICA2OCwgNSwgMjU0LCA4MywgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAKLSAgICAyNTMsIDI0MywgNjgsIDExNywgNSwgMTQ3LCAxOTIsIDY4LCAxMTcsIDUsIDE0NywgMjA1LCA2OCwgMTE3LCA1LCAxNDcsIAotICAgIDIxMiwgNjUsIDY4LCAxMTcsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzksIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgCi0gICAgMjEsIDExMSwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgNjgsIDIxLCAxOTAsIDY4LCAyMSwgMTk1LCAKLSAgICA2OCwgMjEsIDE5OSwgNjgsIDIxLCAxOTYsIDY4LCAyMSwgMjAxLCA2OCwgNSwgMjMyLCAxOTgsIDIyMSwgMTc0LCA2OCwgNSwgCi0gICAgMjIxLCAxNzQsIDY4LCAxNiwgMjMyLCAxNTksIDY4LCAxNiwgMjQ5LCAyMjEsIDY4LCAxNiwgMjU0LCAyMjksIDY4LCAxNiwgCi0gICAgMjQzLCA1NSwgNjgsIDEsIDIyMCwgMTA0LCA2OCwgMSwgMjE4LCAyMjUsIDY4LCAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxOTEsIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAKLSAgICAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2OCwgCi0gICAgMSwgMjMwLCAxNTYsIDIyOSwgODIsIDY4LCAxLCAyMzAsIDE1NiwgMjM1LCAxMjAsIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAKLSAgICAxMTksIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAxMTQsIDY4LCAxMTcsIDUsIDIzMCwgMTU2LCAxNDcsIDE5OCwgNjgsIDExNywgCi0gICAgNSwgMjMwLCAxNTYsIDE0NywgMTg2LCA2OCwgMTE3LCA1LCAyMzAsIDE1NiwgMTQ3LCAyMzMsIDE0MSwgNjgsIDEsIDIyMCwgCi0gICAgMTEwLCAyMzQsIDIxOSwgMjIwLCAxMDQsIDY4LCAyNSwgNSwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyNDUsIDYzLCA2OCwgMTM4LCAKLSAgICAxNjQsIDIyMCwgMTEwLCAyMzQsIDIxOSwgMjQxLCAyNTQsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyMzQsIAotICAgIDE4OSwgMjI1LCAxMjQsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyMDksIDY4LCAxLCAyMTIsIAotICAgIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjI0LCAxMTcsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIAotICAgIDI0NSwgNjMsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAKLSAgICAyMjQsIDExMSwgMjM0LCAyMTksIDIxNiwgMzAsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyOSwgCi0gICAgNjgsIDUsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAKLSAgICAyMTksIDIxNiwgMjcsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyNiwgNjgsIDEsIDI0NSwgCi0gICAgMjI3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIyOCwgMTE1LCA2OCwgMSwgMjQ1LCAyMjcsIDIyNCwgMTExLCAyMzQsIDIxOSwgCi0gICAgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIyNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyNDIsIDIyNCwgNjgsIDI1LCA1LCAyNDMsIAotICAgIDY2LCAyMzQsIDIxOSwgNzQsIDY4LCAyNSwgNSwgMjM0LCAxOTQsIDIyNiwgMjM4LCA2OCwgMjUsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjgsIDI1LCA1LCAyMzQsIDE5NCwgMjQ1LCAyMTcsIDY4LCAxLCAyMjAsIDg4LCAxNzYsIDY4LCAxLCAyMjAsIDg4LCAyMzQsIAotICAgIDEzOCwgNjgsIDEsIDIyMCwgODgsIDI0MywgMTQyLCA2OCwgMSwgMjIwLCA4OCwgMjUxLCA0MSwgNjgsIDEsIDIyMCwgODgsIAotICAgIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4OCwgMjI3LCAxNjksIDY4LCAxLCAyMjAsIDg4LCAyNDgsIDIyOSwgNjgsIDEsIDIyMCwgCi0gICAgODgsIDE5OCwgNjgsIDEsIDIyMCwgODgsIDIyNSwgMTUwLCA2OCwgMSwgMjIwLCA4OCwgMjQ0LCAyMDQsIDY4LCAxLCAyMjAsIAotICAgIDg4LCAyNTIsIDE5OSwgNjgsIDEsIDIyMCwgODgsIDIxNiwgMjA5LCA2OCwgMSwgMjIwLCA4OCwgMTYyLCA2OCwgMTE3LCA1LCAKLSAgICAyMjAsIDg4LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCA4OCwgMjU1LCA4MiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAKLSAgICA3NiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAxNjAsIDQ4LCA2OCwgMjUsIDUsIDIyMCwgODgsIDQwLCAyMTEsIDExNywgNjgsIDUsIAotICAgIDIyMCwgODgsIDIxNiwgMjksIDY4LCA1LCAyMjAsIDg4LCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjE2LCAyNiwgNjgsIAotICAgIDUsIDIyMCwgODgsIDIxNiwgMjUsIDY4LCA1LCAyMjAsIDg4LCAyNDksIDE2MCwgMjE2LCAyOSwgNjgsIDUsIDIyMCwgODgsIAotICAgIDI0OSwgMTYwLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjQ5LCAxNjAsIDI0NSwgMTYxLCAyMTYsIDMxLCA2OCwgMSwgCi0gICAgMjIyLCAxMzAsIDIyNiwgNjcsIDI0NCwgMjA0LCA2OCwgNSwgMjIyLCAxMzAsIDIyNiwgNjcsIDIxNiwgMjYsIDY4LCAyMjAsIAotICAgIDg4LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODgsIDIxLCAxMTEsIDY4LCAyMjAsIDg4LCAyMSwgMTA1LCA2OCwgMjIwLCA4OCwgCi0gICAgMjEsIDE1OCwgNjgsIDIyMCwgODgsIDIxLCAxNjEsIDY4LCAyMjAsIDg4LCAyMSwgMTkwLCA2OCwgMjIwLCA4OCwgMjEsIAotICAgIDE5NSwgNjgsIDIyMCwgODgsIDIxLCAxOTksIDY4LCAyMjAsIDg4LCAyMSwgMTk2LCA2OCwgMjIwLCA4OCwgMjEsIDIwMSwgCi0gICAgNjgsIDUsIDIzNCwgMTMyLCAyMTYsIDMwLCA2OCwgNSwgMjM0LCAxMzIsIDIxNiwgMjgsIDY4LCAyNSwgNSwgMjU0LCAxOTksIAotICAgIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTk5LCAyNTQsIDIxMCwgNjgsIDE2LCAyMjAsIDg4LCAxMTEsIDY4LCAxNiwgMjIwLCA4OCwgCi0gICAgMjQ1LCAzOCwgOTgsIDYsIDEsIDI1NCwgMTMxLCA5OCwgNiwgMSwgMjUyLCAxNjAsIDk4LCA2LCAxLCAyNDMsIDExMywgOTgsIAotICAgIDYsIDEsIDI0NywgMTM2LCA5OCwgNiwgMSwgMjQ1LCAxNTgsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgCi0gICAgODksIDk4LCA2LCAxLCAyMTcsIDYxLCA5OCwgNiwgMSwgMjM2LCA2LCA5OCwgNiwgMSwgMjM0LCAyNDAsIDk4LCA2LCAxLCAKLSAgICAyMzMsIDg3LCA5OCwgNiwgMSwgMjMxLCAxOTAsIDk4LCA2LCAxLCAyMjksIDIwMCwgOTgsIDYsIDEsIDIyNiwgMjAwLCA5OCwgCi0gICAgNiwgMSwgMjI2LCAyMSwgOTgsIDYsIDEsIDIxMCwgNzgsIDk4LCA2LCAxLCAyMjMsIDE3NCwgOTgsIDYsIDEsIDIyMSwgMjQ1LCAKLSAgICA5OCwgNiwgMSwgMjE3LCA1MSwgOTgsIDYsIDEsIDIxNCwgMTkwLCA5OCwgNiwgMSwgMjI1LCAxNDMsIDk4LCA2LCAxLCAyMzQsIAotICAgIDEyNywgOTgsIDYsIDEsIDI0MiwgMjQ4LCA5OCwgNiwgMSwgMjI0LCA3NiwgOTgsIDYsIDEsIDIyMCwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNTAsIDEwNSwgOTgsIDYsIDEsIDI1MSwgMTUsIDk4LCA2LCAxLCAyMzUsIDEwNiwgOTgsIDYsIDEsIDI1MCwgNDgsIDk4LCAKLSAgICA2LCAxLCAyNTAsIDE1MSwgOTgsIDYsIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTcsIDk4LCA2LCAxLCAyNDIsIAotICAgIDUwLCA5OCwgNiwgMSwgMjQxLCAyNDUsIDk4LCA2LCAxLCAyNDEsIDE4MiwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNDIsIDExLCA5OCwgNiwgMSwgMjQxLCA3MiwgOTgsIDYsIDEsIDIxMCwgMjQ2LCA5OCwgNiwgMSwgMjU0LCAyNDEsIDk4LCAKLSAgICAxLCAyNTQsIDEzMSwgOTgsIDEsIDI1MiwgMTYwLCA5OCwgMSwgMjQzLCAxMTMsIDk4LCAxLCAyNDcsIDEzNiwgOTgsIDEsIAotICAgIDI0NSwgMTU4LCA5OCwgMSwgMjEzLCAxNjAsIDk4LCAxLCAyMTAsIDg5LCA5OCwgMSwgMjE3LCA2MSwgOTgsIDEsIDIzNiwgNiwgCi0gICAgOTgsIDEsIDIzNCwgMjQwLCA5OCwgMSwgMjMzLCA4NywgOTgsIDEsIDIzMSwgMTkwLCA5OCwgMSwgMjI5LCAyMDAsIDk4LCAxLCAKLSAgICAyMjYsIDIwMCwgOTgsIDEsIDIyNiwgMjEsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzQsIDk4LCAxLCAyMjEsIAotICAgIDI0NSwgOTgsIDEsIDIxNywgNTEsIDk4LCAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQzLCA5OCwgMSwgMjM0LCAxMjcsIAotICAgIDk4LCAxLCAyNDIsIDI0OCwgOTgsIDEsIDIyNCwgNzYsIDk4LCAxLCAyMjAsIDIyLCA5OCwgMSwgMjUwLCAxMDUsIDk4LCAxLCAKLSAgICAyNTEsIDE1LCA5OCwgMSwgMjM1LCAxMDYsIDk4LCAxLCAyNTAsIDQ4LCA5OCwgMSwgMjUwLCAxNTEsIDk4LCAxLCAyMTEsIAotICAgIDE2MywgOTgsIDEsIDIzNSwgMTE3LCA5OCwgMSwgMjQyLCA1MCwgOTgsIDEsIDI0MSwgMjQ1LCA5OCwgMSwgMjQxLCAxODIsIAotICAgIDk4LCAxLCAyMTIsIDIyLCA5OCwgMSwgMjQyLCAxMSwgOTgsIDEsIDI0MSwgNzIsIDk4LCAxLCAyNDQsIDEyOSwgOTgsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNzMsIDk4LCAxLCAyMTUsIDk0LCAyNDMsIDExMywgOTgsIDEsIDI1NCwgMjA1LCA5OCwgCi0gICAgMjI2LCAxOSwgMjIwLCAxMzksIDU4LCAxLCA5OCwgMjI5LCAyMDAsIDk4LCAxLCAyNTQsIDI0MSwgOTgsIDEsIDI0MiwgMTAsIAotICAgIDUwLCA5OCwgMSwgMjMzLCAxMzMsIDUwLCAyNCwgMTAwLCAyMzQsIDY0LCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCi0gICAgMjI4LCAyMzEsIDI0LCAxMDAsIDIxNiwgMTAyLCAyNCwgMTAwLCAyMTgsIDIwNiwgMjQsIDEwMCwgMjIzLCAyOSwgMjQsIAotICAgIDEwMCwgMjMwLCAyMjIsIDI0LCAxMDAsIDIyNSwgOTgsIDI0LCAxMDAsIDIxOCwgMjE0LCAyNCwgMTAwLCAyMTksIDE1MCwgCi0gICAgMjQsIDEwMCwgMjE4LCAyMTEsIDI0LCAxMDAsIDIzNiwgNjMsIDI0LCAxMDAsIDI1MCwgNTQsIDI0LCAxMDAsIDIxOCwgMjIxLCAKLSAgICAyNCwgMTAwLCAyNTAsIDExNCwgMjQsIDEwMCwgMjM0LCAxMTYsIDI0LCAxMDAsIDIxNiwgMTc0LCAyNCwgMTAwLCAyMjUsIAotICAgIDEzNCwgMjQsIDEwMCwgMjQxLCAxNzksIDI0LCAxMDAsIDIyOCwgMjI3LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgCi0gICAgMjI4LCAyMjEsIDI0LCAxMDAsIDIyOCwgMjI1LCAyNCwgMTAwLCAyMTYsIDk5LCAyNCwgMTAwLCAyMjMsIDE3LCAyNCwgMTAwLCAKLSAgICAyMTgsIDIxMywgMjQsIDEwMCwgMjIzLCAyNywgMjQsIDEwMCwgMjM0LCAyMjQsIDI0LCAxMDAsIDIzMCwgMjE1LCAyNCwgCi0gICAgMTAwLCAyMzQsIDIyNywgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5MSwgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIAotICAgIDEwMCwgMjI1LCA4NywgMjQsIDEwMCwgMjI1LCA4NSwgMjQsIDEwMCwgMjI1LCA4MiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIAotICAgIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA4NiwgMjQsIDEwMCwgMjI1LCA5NiwgMjQsIDEwMCwgMjI1LCA5NywgMjQsIAotICAgIDEwMCwgMjI1LCA4MCwgMjQsIDEwMCwgMjI1LCA5MCwgMjQsIDEwMCwgMjM0LCAyMjUsIDI0LCAxMDAsIDIzNCwgMjIzLCAyNCwgCi0gICAgMTAwLCAyMTksIDE0MywgMjQsIDEwMCwgMjE5LCAxNDEsIDI0LCAxMDAsIDIxOSwgMTMzLCAyNCwgMTAwLCAyMTksIDEzNiwgCi0gICAgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTM4LCAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAKLSAgICAxMzUsIDI0LCAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE5LCAxNDksIDI0LCAxMDAsIAotICAgIDIxOSwgMTQ0LCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxMzksIDI0LCAxMDAsIDIxOSwgMTQ3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDk4LCAyNCwgMTAwLCAyNTAsIDk2LCAyNCwgMTAwLCAyNTAsIDE3NiwgMjQsIDEwMCwgMjUwLCAxNzQsIDI0LCAKLSAgICAxMDAsIDIyNiwgMzYsIDI0LCAxMDAsIDIzNiwgNTgsIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIzNiwgNTcsIDI0LCAKLSAgICAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTIsIDI0LCAxMDAsIDIzNiwgNTYsIDI0LCAxMDAsIDIxOCwgMjE4LCAyNCwgCi0gICAgMTAwLCAyMzYsIDYxLCAyNCwgMTAwLCAyMzYsIDYyLCAyNCwgMTAwLCAyMzYsIDUwLCAyNCwgMTAwLCAyMzYsIDU1LCAyNCwgCi0gICAgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDUzLCAyNCwgMTAwLCAyNTAsIDk5LCAyNCwgMTAwLCAyNTAsIDk3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDE3NywgMjQsIDEwMCwgMjUwLCAxNzUsIDI0LCAxMDAsIDI1MCwgMTEyLCAyNCwgMTAwLCAyNTAsIDExMywgCi0gICAgMjQsIDEwMCwgMjUwLCAxMDAsIDI0LCAxMDAsIDI1MCwgMTc4LCAyNCwgMTAwLCAyMjUsIDEzMiwgMjQsIDEwMCwgMjM0LCAKLSAgICAyMjYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyMTEsIDMyLCAyNCwgMTAwLCAyMzQsIDU1LCAyNCwgMTAwLCAyMjgsIAotICAgIDIyMywgMjQsIDEwMCwgMjI4LCAyMjksIDI0LCAxMDAsIDIyOCwgMjI4LCAyNCwgMTAwLCAyMTYsIDk2LCAyNCwgMTAwLCAKLSAgICAyNDQsIDExMSwgMjQsIDE0MywgMjQ0LCAxMTEsIDI0LCAxNDMsIDYxLCAyNCwgMTQzLCAyNTQsIDI1MiwgMjQsIDE0MywgCi0gICAgMTkyLCAyNCwgMTQzLCAyMTEsIDkyLCAyNCwgMTQzLCAyNDUsIDEyNSwgMjQsIDE0MywgNzYsIDI0LCAxNDMsIDIxMSwgMzYsIAotICAgIDI0LCAxNDMsIDIxMSwgNDcsIDI0LCAxNDMsIDc4LCAyNCwgMTQzLCAyMTIsIDY1LCAyNCwgMTQzLCAyMTIsIDYyLCAyNCwgCi0gICAgMTQzLCAyMjYsIDIzOCwgMjQsIDE0MywgMjEwLCAyNDQsIDI0LCAxNDMsIDY5LCAyNCwgMTQzLCAyMTIsIDExLCAyNCwgMTQzLCAKLSAgICAyMTIsIDIyLCAyNCwgMTQzLCAyMTEsIDI1MCwgMjQsIDE0MywgMjEwLCAyMTIsIDI0LCAxNDMsIDI0NSwgNjMsIDI0LCAxNDMsIAotICAgIDIxMSwgOCwgMjQsIDE0MywgNzQsIDI0LCAxNDMsIDI1NSwgMTY2LCAyNCwgMTQzLCAyNTUsIDE2NSwgMjQsIDE0MywgMjExLCAKLSAgICAxMDYsIDI0LCAxNDMsIDIxMSwgMTA0LCAyNCwgMTQzLCAyNDUsIDEyMywgMjQsIDE0MywgMjQ1LCAxMjIsIDI0LCAxNDMsIAotICAgIDI0NSwgMTI0LCAyNCwgMTQzLCAyMTEsIDM1LCAyNCwgMTQzLCAyMTEsIDM0LCAyNCwgMTQzLCAyMjcsIDg4LCAyNCwgMTQzLCAKLSAgICAyMjcsIDg5LCAyNCwgMTQzLCAyMjcsIDgyLCAyNCwgMTQzLCAyMjcsIDg3LCAyNCwgMTQzLCAyMjcsIDg1LCAyNCwgMTQzLCAKLSAgICAyMTAsIDIzOCwgMjQsIDE0MywgMjEwLCAyMzcsIDI0LCAxNDMsIDIxMCwgMjM2LCAyNCwgMTQzLCAyMTAsIDIzOSwgMjQsIAotICAgIDE0MywgMjEwLCAyNDAsIDI0LCAxNDMsIDIxNSwgMzAsIDI0LCAxNDMsIDIxNSwgMjksIDI0LCAxNDMsIDIxNSwgMjcsIDI0LCAKLSAgICAxNDMsIDIxNSwgMjQsIDI0LCAxNDMsIDIxNSwgMjUsIDI0LCAxNDMsIDIxMCwgMjExLCAyNCwgMTQzLCAyMTAsIDIwOCwgMjQsIAotICAgIDE0MywgMjEwLCAyMDksIDI0LCAxNDMsIDIxMCwgMjAzLCAyNCwgMTQzLCAyMTAsIDIwNCwgMjQsIDE0MywgMjEwLCAyMDUsIAotICAgIDI0LCAxNDMsIDIxMCwgMjA3LCAyNCwgMTQzLCAyNDUsIDU3LCAyNCwgMTQzLCAyNDUsIDU5LCAyNCwgMTQzLCAyMTEsIDcsIAotICAgIDI0LCAxNDMsIDI0MCwgMTYwLCAyNCwgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjQwLCAxNTUsIDI0LCAxNDMsIDI0MCwgCi0gICAgMTUzLCAyNCwgMTQzLCAyNDAsIDE1NywgMjQsIDE0MywgMjQwLCAxNTksIDI0LCAxNDMsIDI1NCwgNDIsIDI0LCAxNDMsIAotICAgIDI1NCwgMzksIDI0LCAxNDMsIDI1NCwgMzcsIDI0LCAxNDMsIDI1NCwgMzgsIDI0LCAxNDMsIDIxOCwgMjIyLCAyNCwgMTQzLCAKLSAgICAyNTUsIDE2NywgMjQsIDE0MywgMjExLCAxMDUsIDI0LCAxNDMsIDIxMSwgMzMsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIAotICAgIDIyNywgODMsIDI0LCA5MCwgMjM0LCA2NCwgMjQsIDkwLCAyMTgsIDIxNywgMjQsIDkwLCAyMzQsIDU3LCAyNCwgOTAsIDIyOCwgCi0gICAgMjMxLCAyNCwgOTAsIDIyOCwgMjI5LCAyNCwgOTAsIDIyOCwgMjI4LCAyNCwgOTAsIDIxNiwgMTAyLCAyNCwgOTAsIDIyMywgCi0gICAgMjksIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgMjIzLCA5LCAKLSAgICAyNCwgOTAsIDIyMywgNCwgMjQsIDkwLCAyMjMsIDE1LCAyNCwgOTAsIDIyMywgMjcsIDI0LCA5MCwgMjMwLCAyMjIsIDI0LCAKLSAgICA5MCwgMjI1LCA5OCwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIxOSwgMTUwLCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIAotICAgIDIzNiwgNjMsIDI0LCA5MCwgMjUwLCA1NCwgMjQsIDkwLCAyNTAsIDExNCwgMjQsIDkwLCAyMzQsIDExNiwgMjQsIDkwLCAKLSAgICAyMTYsIDE3NCwgMjQsIDkwLCAyMjUsIDEzNCwgMjQsIDkwLCAyNDEsIDE3OSwgMjQsIDkwLCAyMzQsIDU4LCAyNCwgOTAsIAotICAgIDIzNCwgNTYsIDI0LCA5MCwgMjI4LCAyMjcsIDI0LCA5MCwgMjI4LCAyMjEsIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgCi0gICAgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjIsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDk2LCAyNCwgOTAsIAotICAgIDIyMywgMjIsIDI0LCA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDMsIDI0LCA5MCwgMjIzLCAyLCAyNCwgOTAsIDIxOCwgCi0gICAgMjEzLCAyNCwgOTAsIDIyMywgMTksIDI0LCA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgMTMsIAotICAgIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxNiwgMjQsIDkwLCAyMjMsIDI1LCAyNCwgCi0gICAgOTAsIDIyMywgMSwgMjQsIDkwLCAyMzAsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMywgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIxMCwgMjQsIDkwLCAyMzAsIDIxNiwgMjQsIDkwLCAyMzAsIDIyMSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxOSwgMjQsIDkwLCAyMzQsIDIyNywgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIyNSwgOTAsIDI0LCA5MCwgCi0gICAgMjI1LCA5NSwgMjQsIDkwLCAyMzQsIDIyNSwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTksIDEzMywgMjQsIDkwLCAKLSAgICAyMTksIDEzNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMjYsIDM2LCAyNCwgOTAsIDIzNiwgNTgsIDI0LCA5MCwgCi0gICAgMjM2LCA1MSwgMjQsIDkwLCAyMTgsIDIxOCwgMjQsIDkwLCAyMzYsIDU5LCAyNCwgOTAsIDIxMSwgMjYsIDI0LCA5MCwgMjExLCAKLSAgICAyMiwgMjQsIDkwLCAyMTEsIDIzLCAyNCwgOTAsIDIyNSwgMTMyLCAyNCwgOTAsIDIzNCwgMjI2LCAyNCwgOTAsIDI0MSwgCi0gICAgMTc3LCAyNCwgOTAsIDI0MSwgMTc1LCAyNCwgOTAsIDI0MSwgMTc4LCAyNCwgOTAsIDI0MSwgMTc2LCAyNCwgOTAsIDIxMSwgCi0gICAgMzIsIDI0LCA5MCwgMjM0LCA2MCwgMjQsIDkwLCAyMzQsIDU5LCAyNCwgOTAsIDIzNCwgNjMsIDI0LCA5MCwgMjM0LCA2MSwgCi0gICAgMjQsIDkwLCAyMzQsIDYyLCAyNCwgOTAsIDIxOCwgMjE1LCAyOSwgMywgMTYyLCAyOSwgMywgMjQwLCAyMjksIDI5LCAzLCAKLSAgICAyNDEsIDE4NywgMjksIDMsIDI0MiwgNTMsIDI5LCAzLCAyNDEsIDIyNywgMjksIDMsIDI0MSwgMjQ1LCAyOSwgMywgMjQxLCAKLSAgICA3NSwgMjksIDMsIDI0MSwgNzQsIDI5LCAzLCAyMzMsIDE0MSwgMjksIDMsIDIzMiwgMTAzLCAyOSwgMywgMjMyLCAyNDcsIAotICAgIDI5LCAzLCAyMzMsIDE0MCwgMjksIDMsIDIzMywgNTYsIDI5LCAzLCAyMzMsIDY0LCAyOSwgMywgMjMyLCAxNjIsIDI5LCAzLCAKLSAgICAyMzIsIDc1LCAyOSwgMywgMjQxLCAxOTYsIDI5LCAzLCAyNDEsIDE5MCwgMjksIDMsIDI0MSwgMTkyLCAyOSwgMywgMjQxLCAKLSAgICAxOTUsIDI5LCAzLCAyNDEsIDE5MywgMjksIDMsIDI0MSwgMTk0LCAyOSwgMywgMjQxLCAxOTEsIDI5LCAzLCAyNDEsIDE4OSwgCi0gICAgMjksIDMsIDE4NiwgMjksIDMsIDIzMCwgMTA3LCAyOSwgMywgMjMwLCAyMzUsIDI5LCAzLCAyMzEsIDI0MiwgMjksIDMsIAotICAgIDIzMSwgODUsIDI5LCAzLCAyMzEsIDk2LCAyOSwgMywgMjMwLCAxNjYsIDI5LCAzLCAyMzAsIDQ3LCAyOSwgMywgMjE3LCAKLSAgICAxNjQsIDI5LCAzLCAyMTcsIDE1OCwgMjksIDMsIDIxNywgMTYwLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE2MSwgCi0gICAgMjksIDMsIDIxNywgMTYyLCAyOSwgMywgMjE3LCAxNTksIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIwNSwgMjksIDMsIAotICAgIDIyMiwgMTQyLCAyOSwgMywgMjIzLCAzOCwgMjksIDMsIDIyMywgMTg3LCAyOSwgMywgMjIzLCAxMTEsIDI5LCAzLCAyMjMsIAotICAgIDEzMSwgMjksIDMsIDIyMiwgMjEzLCAyOSwgMywgMjIyLCAxMTEsIDI5LCAzLCAyMDYsIDI5LCAzLCAyMTgsIDg0LCAyOSwgMywgCi0gICAgMjE5LCAxOTMsIDI5LCAzLCAyMjIsIDMzLCAyOSwgMywgMjIxLCAxNzIsIDI5LCAzLCAyMjEsIDE4MywgMjksIDMsIDIxOSwgCi0gICAgNjAsIDI5LCAzLCAyMTcsIDI1NCwgMjksIDMsIDIyMCwgMTA0LCAyOSwgMywgMjE5LCAyMjcsIDI5LCAzLCAyMjAsIDM0LCAKLSAgICAyOSwgMywgMjIwLCAxMDAsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgMjIwLCA2NSwgMjksIDMsIDIyMCwgOSwgMjksIDMsIAotICAgIDIxOSwgMjEwLCAyOSwgMywgMjI0LCA5MSwgMjksIDMsIDIyNCwgMzMsIDI5LCAzLCAyMjQsIDU2LCAyOSwgMywgMjI0LCA5MCwgCi0gICAgMjksIDMsIDIyNCwgNzEsIDI5LCAzLCAyMjQsIDcyLCAyOSwgMywgMjI0LCA0NSwgMjksIDMsIDIyNCwgNDQsIDI5LCAzLCAKLSAgICAyMjMsIDI0NSwgMjksIDMsIDIyMywgMjQxLCAyOSwgMywgMjIzLCAyNDQsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgCi0gICAgMjQzLCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2NywgMjksIAotICAgIDMsIDIyNCwgNjUsIDI5LCAzLCAyMjQsIDY2LCAyOSwgMywgMjI0LCA2MywgMjksIDMsIDIyNCwgNjEsIDI5LCAzLCAyMjQsIAotICAgIDU3LCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgNTgsIDI5LCAzLCAyMjQsIDU5LCAyOSwgMywgMjUyLCAxOTksIDI5LCAKLSAgICAzLCAyNTEsIDEzMywgMjksIDMsIDI1MiwgMTQsIDI5LCAzLCAyNTIsIDE5NywgMjksIDMsIDI1MiwgNzQsIDI5LCAzLCAyNTIsIAotICAgIDgzLCAyOSwgMywgMjUxLCAyMTMsIDI5LCAzLCAyNTEsIDkxLCAyOSwgMywgMjE0LCAyNywgMjksIDMsIDIxMiwgMTE2LCAyOSwgCi0gICAgMywgMjEzLCAxNzYsIDI5LCAzLCAyMTQsIDI2LCAyOSwgMywgMjEzLCAyNTAsIDI5LCAzLCAyMTMsIDI1NSwgMjksIDMsIAotICAgIDIxMywgMTM4LCAyOSwgMywgMjEyLCAxMDcsIDI5LCAzLCAyMTcsIDEwNiwgMjksIDMsIDIxNSwgMTE5LCAyOSwgMywgMjE2LCAKLSAgICAxMTgsIDI5LCAzLCAyMTcsIDEwMiwgMjksIDMsIDIxNywgMTIsIDI5LCAzLCAyMTcsIDIzLCAyOSwgMywgMTEyLCAyOSwgMywgCi0gICAgMjE1LCA4MCwgMjksIDMsIDI1MSwgNDEsIDI5LCAzLCAyNDksIDEyMCwgMjksIDMsIDI1MCwgNTksIDI5LCAzLCAyNTEsIDQwLCAKLSAgICAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNTAsIDE5OCwgMjksIDMsIDI0OSwgMjQ2LCAyOSwgMywgMjQ5LCA4OSwgMjksIDMsIAotICAgIDIxMSwgMTY1LCAyOSwgMywgMjExLCAxNDEsIDI5LCAzLCAyMTEsIDE1NywgMjksIDMsIDIxMSwgMTY0LCAyOSwgMywgMjExLCAKLSAgICAxNjEsIDI5LCAzLCAyMTEsIDE2MiwgMjksIDMsIDIxMSwgMTQ4LCAyOSwgMywgMjExLCAxNDcsIDI5LCAzLCAyMTEsIDEzNiwgCi0gICAgMjksIDMsIDIxMSwgMTMyLCAyOSwgMywgMjExLCAxMzUsIDI5LCAzLCAyMTEsIDEzMywgMjksIDMsIDIxMSwgMTM0LCAyOSwgCi0gICAgMywgMTk4LCAyOSwgMywgMjI3LCAyNDIsIDI5LCAzLCAyMjgsIDIzOCwgMjksIDMsIDIyOSwgMjMwLCAyOSwgMywgMjI5LCAKLSAgICAxMDgsIDI5LCAzLCAyMjksIDExMiwgMjksIDMsIDIyOCwgNzksIDI5LCAzLCAyMjcsIDE3OCwgMjksIDMsIDIyNywgMTY5LCAKLSAgICAyOSwgMywgMjI3LCAxMzIsIDI5LCAzLCAyMjcsIDE1MiwgMjksIDMsIDIyNywgMTY4LCAyOSwgMywgMjI3LCAxNTksIDI5LCAKLSAgICAzLCAyMjcsIDE2MCwgMjksIDMsIDIyNywgMTM4LCAyOSwgMywgMjI3LCAxMjMsIDI5LCAzLCAyNDIsIDE4NywgNjEsIDI5LCAKLSAgICAzLCAyNDIsIDE4NywgNjksIDI5LCAzLCAyNDIsIDE4NywgNzQsIDI5LCAzLCAyNDIsIDE4NywgMjU1LCA4MiwgMjksIDMsIAotICAgIDI0MiwgMTg3LCAyNDUsIDIxNywgMjksIDMsIDI0MiwgMTg3LCA3NiwgMjksIDMsIDI0MiwgMTg3LCA3OCwgMjksIDMsIDI0MiwgCi0gICAgMTg3LCAyMTIsIDY1LCAyOSwgMywgMTc2LCAyOSwgMywgMjMzLCAyMjMsIDI5LCAzLCAyMzQsIDk4LCAyOSwgMywgMjM1LCAKLSAgICAxNiwgMjksIDMsIDIzNCwgMTg3LCAyOSwgMywgMjM0LCAxODgsIDI5LCAzLCAyMzQsIDM0LCAyOSwgMywgMjM0LCAzMywgMjksIAotICAgIDMsIDIzMywgMTg4LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE4NywgMjksIDMsIDIzMywgMTgzLCAyOSwgMywgCi0gICAgMjMzLCAxODQsIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNzMsIDI5LCAzLCAyMzMsIAotICAgIDE3NiwgMjksIDMsIDIzMywgMTc0LCAyOSwgMywgMjMzLCAxNzUsIDI5LCAzLCAyMzMsIDE3MiwgMjksIDMsIDIzMywgMTcwLCAKLSAgICAyOSwgMywgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNjgsIDI5LCAKLSAgICAzLCAyMTIsIDY1LCAyOSwgMywgMjExLCAxOTUsIDI5LCAzLCAyMTEsIDI1MCwgMjksIDMsIDIxMiwgNjQsIDI5LCAzLCAyMTIsIAotICAgIDE3LCAyOSwgMywgMjEyLCAyMiwgMjksIDMsIDIxMSwgMjI3LCAyOSwgMywgMjExLCAyMjYsIDI5LCAzLCAyMjUsIDE0MiwgCi0gICAgNjEsIDI5LCAzLCAyMjUsIDE0MiwgNjksIDI5LCAzLCAyMjUsIDE0MiwgNzQsIDI5LCAzLCAyMjUsIDE0MiwgMjU1LCA4MiwgCi0gICAgMjksIDMsIDIyNSwgMTQyLCAyNDUsIDIxNywgMjksIDMsIDIyNSwgMTQyLCA3NiwgMjksIDMsIDIyNSwgMTQyLCA3OCwgMjksIAotICAgIDMsIDIxMCwgMTE2LCAyOSwgMywgMjEwLCAxMywgMjksIDMsIDIxMCwgNDQsIDI5LCAzLCAyMTAsIDExNSwgMjksIDMsIDIxMCwgCi0gICAgOTIsIDI5LCAzLCAyMTAsIDk0LCAyOSwgMywgMjEwLCAyMywgMjksIDMsIDIxMCwgMCwgMjksIDMsIDIxMCwgODIsIDI5LCAzLCAKLSAgICAyMTAsIDYyLCAyOSwgMywgMjEwLCA2OSwgMjksIDMsIDIxMCwgODEsIDI5LCAzLCAyMTAsIDczLCAyOSwgMywgMjEwLCA3NCwgCi0gICAgMjksIDMsIDIxMCwgNjcsIDI5LCAzLCAyMTAsIDUzLCAyOSwgMywgMTkyLCAyOSwgMywgMjEwLCAyMTIsIDI5LCAzLCAyMTEsIAotICAgIDgsIDI5LCAzLCAyMTEsIDEwMywgMjksIDMsIDIxMSwgNDQsIDI5LCAzLCAyMTEsIDQ3LCAyOSwgMywgMjEwLCAyNDQsIDI5LCAKLSAgICAzLCAyMTAsIDIzNSwgMjksIDMsIDI0OCwgMjI5LCAyOSwgMywgMjQ2LCA4NiwgMjksIDMsIDI0OCwgMTEsIDI5LCAzLCAyNDgsIAotICAgIDIyOCwgMjksIDMsIDI0OCwgODUsIDI5LCAzLCAyNDgsIDk4LCAyOSwgMywgMjQ3LCAxNTMsIDI5LCAzLCAyNDYsIDU1LCAyOSwgCi0gICAgMywgMjQ4LCAxNDMsIDI5LCAzLCAyNDgsIDEwOCwgMjksIDMsIDI0OCwgMTIwLCAyOSwgMywgMjQ4LCAxNDIsIDI5LCAzLCAKLSAgICAyNDgsIDEzMCwgMjksIDMsIDI0OCwgMTMxLCAyOSwgMywgMjQ4LCAxMTMsIDI5LCAzLCAyNDgsIDk5LCAyOSwgMywgMjM1LCAKLSAgICAxNDcsIDI5LCAzLCAyMzUsIDU3LCAyOSwgMywgMjM1LCAxMTQsIDI5LCAzLCAyMzUsIDE0NiwgMjksIDMsIDIzNSwgMTMwLCAKLSAgICAyOSwgMywgMjM1LCAxMzIsIDI5LCAzLCAyMzUsIDc0LCAyOSwgMywgMjM1LCAzNywgMjksIDMsIDI0MywgMTQyLCAyOSwgMywgCi0gICAgMjQyLCAxMjAsIDI5LCAzLCAyNDIsIDIyMSwgMjksIDMsIDI0MywgMTM5LCAyOSwgMywgMjQzLCA2MiwgMjksIDMsIDI0MywgCi0gICAgNjksIDI5LCAzLCAyNDIsIDE4MSwgMjksIDMsIDI0MiwgMTgwLCAyOSwgMywgMjQyLCA4NSwgMjksIDMsIDI0MiwgODEsIDI5LCAKLSAgICAzLCAyNDIsIDg0LCAyOSwgMywgMjQyLCA4MiwgMjksIDMsIDI0MiwgODMsIDI5LCAzLCAyNDMsIDM2LCAyOSwgMywgMjQzLCAKLSAgICAxNiwgMjksIDMsIDI0MywgMjYsIDI5LCAzLCAyNDMsIDM1LCAyOSwgMywgMjQzLCAzMCwgMjksIDMsIDI0MywgMzEsIDI5LCAKLSAgICAzLCAyNDMsIDIwLCAyOSwgMywgMjQzLCA1LCAyOSwgMywgMjE2LCAyMDksIDI5LCAzLCAyMTYsIDEzNywgMjksIDMsIDIxNiwgCi0gICAgMTc2LCAyOSwgMywgMjE2LCAyMDgsIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTk2LCAyOSwgMywgMjE2LCAxNTcsIAotICAgIDI5LCAzLCAyMTYsIDEyOSwgMjksIDMsIDI1MCwgMTY1LCAyOSwgMywgMjUwLCA3NywgMjksIDMsIDI1MCwgMTE4LCAyOSwgMywgCi0gICAgMjUwLCAxNjQsIDI5LCAzLCAyNTAsIDEzNiwgMjksIDMsIDI1MCwgMTM5LCAyOSwgMywgMjUwLCA5NCwgMjksIDMsIDI1MCwgCi0gICAgNjYsIDI5LCAzLCAyMjUsIDE1MCwgMjksIDMsIDIyNSwgMTE3LCAyOSwgMywgMjI1LCAxMzYsIDI5LCAzLCAyMjUsIDE0OSwgCi0gICAgMjksIDMsIDIyNSwgMTM4LCAyOSwgMywgMjI1LCAxMzksIDI5LCAzLCAyMjUsIDEyNCwgMjksIDMsIDIyNSwgMTEzLCAyOSwgCi0gICAgMywgMjE1LCAxODQsIDI5LCAzLCAyMTUsIDE2NCwgMjksIDMsIDIxNSwgMTY4LCAyOSwgMywgMjE1LCAxODMsIDI5LCAzLCAKLSAgICAyMTUsIDE3OCwgMjksIDMsIDIxNSwgMTc5LCAyOSwgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE2MiwgMjksIDMsIDIxNSwgCi0gICAgMzksIDI5LCAzLCAyMTUsIDMxLCAyOSwgMywgMjE1LCAzNSwgMjksIDMsIDIxNSwgMzgsIDI5LCAzLCAyMTUsIDM2LCAyOSwgCi0gICAgMywgMjE1LCAzNywgMjksIDMsIDIxNSwgMzMsIDI5LCAzLCAyMTUsIDMyLCAyOSwgMywgMjQ0LCAyMDQsIDI5LCAzLCAyNDMsIAotICAgIDI0MSwgMjksIDMsIDI0NCwgMTI5LCAyOSwgMywgMjQ0LCAyMDMsIDI5LCAzLCAyNDQsIDE1NSwgMjksIDMsIDI0NCwgMTYyLCAKLSAgICAyOSwgMywgMjQ0LCA1MSwgMjksIDMsIDI0MywgMjIwLCAyOSwgMywgMTkxLCAyOSwgMywgMjI0LCAxNTMsIDI5LCAzLCAyMjUsIAotICAgIDExMSwgMjksIDMsIDIyNiwgOTMsIDI5LCAzLCAyMjUsIDIxNCwgMjksIDMsIDIyNSwgMjI0LCAyOSwgMywgMjI1LCAxOSwgCi0gICAgMjksIDMsIDIyNCwgMTE3LCAyOSwgMywgMjIyLCAxMDEsIDI5LCAzLCAyMzAsIDM2LCAyOSwgMywgMjQzLCAyMTQsIDI5LCAKLSAgICAzOCwgMjQzLCA2MCwgMjIsIDI1LCAyMzMsIDI5LCA3OSwgMjksIDM4LCAyNSwgMjMzLCAyOSwgNzksIDI5LCAzOCwgMjQzLCAKLSAgICA2MCwgNzksIDI5LCAyMjEsIDE3NSwgNzksIDI5LCAyMTEsIDIwOCwgMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMjksIDI0OSwgCi0gICAgMjI3LCAyOSwgMjIwLCAxNTIsIDI5LCAyNDksIDIzNCwgMjksIDIyNCwgMjAyLCAyNDksIDIzNCwgMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyOSwgMjI2LCAxOSwgMjIwLCAxMzksIDI5LCAyMSwgMTExLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgCi0gICAgMTYxLCAyOSwgMjEsIDE5MCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMTk5LCAyOSwgMjEsIDE5NiwgMjksIDIxLCAyMDEsIDI5LCAKLSAgICA1NCwgMjE2LCAyNDgsIDI5LCA1NCwgMjE1LCA3MywgMjksIDU0LCAyMTYsIDE2MywgMjksIDU0LCAyNDQsIDIzLCAyOSwgNTQsIAotICAgIDI0NCwgMTIyLCAyOSwgNTQsIDIxOSwgMTEzLCAyOSwgNTQsIDIyMCwgMTE4LCAyOSwgNTQsIDI0NSwgMTkyLCAyOSwgNTQsIAotICAgIDIyOCwgMjAwLCAyOSwgNTQsIDI0MCwgMjE3LCAyOSwgNTQsIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjksIDMsIDIyMSwgMTc5LCAKLSAgICAyMzAsIDQ3LCAyOSwgMywgMjMwLCA0MywgMjksIDMsIDIzMCwgNDQsIDI5LCAzLCAyMzAsIDQ1LCAyOSwgMywgMjIxLCAxNzksIAotICAgIDI1MSwgOTEsIDI5LCAzLCAyNTEsIDg4LCAyOSwgMywgMjUxLCA4OSwgMjksIDMsIDI1MSwgOTAsIDI5LCAzLCAyMjEsIDE3OSwgCi0gICAgMjQzLCAyMjAsIDI5LCAzLCAyNDMsIDIxNiwgMjksIDMsIDI0MywgMjE3LCAyOSwgMywgMjQzLCAyMTgsIDI5LCAzLCAyMjEsIAotICAgIDE3OSwgMjI0LCAxMTcsIDI5LCAzLCAyMjQsIDExMywgMjksIDMsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAxMTUsIDI5LCAKLSAgICAyMTYsIDMyLCAxNjQsIDIxMCwgMjQ3LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQ5LCAyOSwgMjE2LCAzMiwgMTY0LCAyMjIsIAotICAgIDI0MSwgMjksIDIxNiwgMzIsIDE2NCwgMjE5LCAyNTMsIDIyMiwgMjQxLCAyOSwgMjE2LCAzMiwgMTY0LCAyNDcsIDI0MywgCi0gICAgMjksIDIxNiwgMzIsIDE2NCwgMjM0LCAxNzAsIDI5LCAyMTYsIDMyLCAxNjQsIDI1MCwgMTAyLCAyOSwgMjE2LCAzMiwgMTY0LCAKLSAgICAyNDEsIDE4NCwgMjksIDIxNiwgMzIsIDE2NCwgMjQ4LCA0OCwgMjksIDIxNiwgMzIsIDE2NCwgMjMzLCAyMDAsIDE2OSwgMSwgCi0gICAgNjEsIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzQsIDE2OSwgMSwgNzgsIDE2OSwgMSwgNjksIDE2OSwgMSwgMjE0LCAxMDUsIAotICAgIDE2OSwgMSwgMjQzLCAxNDIsIDE2OSwgMSwgMTc2LCAxNjksIDEsIDI0MywgNjksIDE2OSwgMSwgMjQyLCAyMjEsIDE2OSwgMSwgCi0gICAgMjQyLCAxODEsIDE2OSwgMSwgMjQyLCAxMjAsIDE2OSwgMSwgMjQyLCA4NiwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAKLSAgICAyNDUsIDE2OSwgMSwgMjQxLCAxODcsIDE2OSwgMSwgMjQxLCA3NSwgMTY5LCAxLCAyNDAsIDIyOSwgMTY5LCAxLCAyNDAsIAotICAgIDIwOCwgMTY5LCAxLCAyMzMsIDE0MSwgMTY5LCAxLCAyMzMsIDY0LCAxNjksIDEsIDIzMiwgMjQ3LCAxNjksIDEsIDIzMiwgCi0gICAgMTYyLCAxNjksIDEsIDIzMiwgMTAzLCAxNjksIDEsIDIzMiwgNzYsIDE2OSwgMSwgMTg2LCAxNjksIDEsIDIzMSwgOTYsIAotICAgIDE2OSwgMSwgMjMwLCAyMzUsIDE2OSwgMSwgMjMwLCAxNjYsIDE2OSwgMSwgMjMwLCAxMDcsIDE2OSwgMSwgMTk4LCAxNjksIAotICAgIDEsIDI0MSwgOTcsIDE2OSwgMSwgMjI5LCAyMTgsIDE2OSwgMSwgMjI5LCAxMTIsIDE2OSwgMSwgMjI4LCAyMzgsIDE2OSwgMSwgCi0gICAgMjI4LCA3OSwgMTY5LCAxLCAyMjcsIDI0MiwgMTY5LCAxLCAyMjcsIDE4MCwgMTY5LCAxLCAyMjQsIDMyLCAxNjksIDEsIAotICAgIDIyNCwgMTksIDE2OSwgMSwgMjI0LCAxMiwgMTY5LCAxLCAyMjQsIDQsIDE2OSwgMSwgMjIzLCAyNDksIDE2OSwgMSwgMjIzLCAKLSAgICAyNDcsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgOTMsIDE2OSwgMSwgMjIxLCAxODMsIDE2OSwgMSwgMjE5LCAxOTMsIAotICAgIDE2OSwgMSwgMjE5LCA2MCwgMTY5LCAxLCAyMTgsIDg0LCAxNjksIDEsIDIxOCwgMywgMTY5LCAxLCAyNDgsIDIyOSwgMTY5LCAKLSAgICAxLCAyMTcsIDEwNiwgMTY5LCAxLCAyNDgsIDk4LCAxNjksIDEsIDIxNywgMjMsIDE2OSwgMSwgMjQ4LCAxMSwgMTY5LCAxLCAKLSAgICAyMTYsIDExOCwgMTY5LCAxLCAyNDcsIDE1MywgMTY5LCAxLCAyNDYsIDg2LCAxNjksIDEsIDI0NiwgNTgsIDE2OSwgMSwgCi0gICAgMjQ3LCAxNjQsIDE2OSwgMSwgMjE2LCA2MCwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgNDgsIDE2OSwgMSwgMjE2LCAKLSAgICA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE1LCAxODQsIDE2OSwgMSwgMjE1LCAxNzksIAotICAgIDE2OSwgMSwgMjE1LCAxNjgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjQsIDE2OSwgMSwgMjE1LCAxNjMsIAotICAgIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAKLSAgICAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAxNjksIDEsIDE5MiwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIAotICAgIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAKLSAgICAyNDAsIDE3NSwgMTgsIDE5LCA3NiwgMTgsIDE5LCAyNTUsIDQ2LCAxOCwgMTksIDc0LCAxOCwgMTksIDIzNiwgNDAsIDE4LCAKLSAgICAxOSwgNzgsIDE4LCAxOSwgMjI2LCAxODcsIDE4LCAxOSwgMjExLCAxMTYsIDIyNiwgMTg3LCAxOCwgMTksIDczLCAyNDUsIAotICAgIDIxNywgMTgsIDE5LCA3MywgNzQsIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU1LCA4MiwgMTgsIDE5LCAyMTIsIDIyLCAxOCwgCi0gICAgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgCi0gICAgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIAotICAgIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgMTksIDIyOSwgMTk1LCAyMTEsIDIxNSwgMTgsIDE5LCAKLSAgICAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIAotICAgIDE5LCAyMjksIDE5NSwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIDIxMCwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIAotICAgIDE5LCAyNDIsIDE4NywgMjE4LCAxMzEsIDE4LCAxOSwgNDAsIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxNDMsIDE4LCAxOSwgCi0gICAgNDAsIDI1MSwgMTgzLCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIDQwLCAyMTYsIDE1LCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIAotICAgIDQwLCA0NCwgMTYzLCAyMjIsIDIzNiwgMTgsIDE5LCA0MCwgMjIyLCAyMzYsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgCi0gICAgNDAsIDUyLCAyMTksIDI1MywgNjcsIDIxOCwgOTIsIDE4LCAxOSwgNDAsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTgsIDE5LCAKLSAgICA0MCwgMjE5LCAyNTMsIDIwMywgOTEsIDE4LCAxOSwgNDAsIDIyNSwgMjUsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4OCwgMTgsIAotICAgIDE5LCAyNDUsIDE1OCwgMTgsIDE5LCAyMzYsIDYsIDE4LCAxOSwgMjI2LCAyMDAsIDE4LCAxOSwgMjU0LCAxMzEsIDE4LCAxOSwgCi0gICAgMjI1LCAyMjQsIDE4LCAxOSwgMjI2LCA5MSwgMTgsIDE5LCAyMjUsIDExMSwgMTgsIDE5LCAyMjUsIDc0LCAxOCwgMTksIAotICAgIDIyNSwgMTksIDE4LCAxOSwgMjI0LCAyNTIsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMjUyLCAxOCwgMTksIDczLCAyNDEsIAotICAgIDIyNywgMTgsIDE5LCA3MywgMjQxLCAxODcsIDE4LCAxOSwgMTkxLCAxOCwgMTksIDIyNiwgOTMsIDE4LCAxOSwgMjI0LCAKLSAgICAxMTUsIDE4LCAxOSwgMTU5LCAyMjQsIDExNSwgMTgsIDE5LCAyMjQsIDExMywgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgCi0gICAgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIAotICAgIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgMTA5LCAxOCwgMTksIDIyNCwgMTE3LCAxOCwgMTksIAotICAgIDE1OSwgMjI0LCAxMTcsIDE4LCAxOSwgMjI0LCAxMTYsIDE4LCAxOSwgMTU5LCAyMjQsIDExNiwgMTgsIDE5LCAyMTEsIDExNiwgCi0gICAgMjI0LCAxMTYsIDE4LCAxOSwgMjI2LCAxMDksIDE4LCAxOSwgMTU5LCAyMjYsIDEwOSwgMTgsIDE5LCA3MywgMjQyLCA2NywgCi0gICAgMTgsIDE5LCAyMTcsIDIzLCAxOCwgMTksIDIxNywgMTAwLCAxOCwgMTksIDIxNiwgMTE4LCAxOCwgMTksIDIxNiwgMTA0LCAKLSAgICAxOCwgMTksIDExMiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxMSwgMTE2LCAyMTYsIDE4LCAxOCwgMTksIDczLCAyNDgsIAotICAgIDg1LCAxOCwgMTksIDczLCAyNDgsIDExLCAxOCwgMTksIDIxNywgMTA2LCAxOCwgMTksIDIxNywgMTAyLCAxOCwgMTksIDIxNSwgCi0gICAgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIAotICAgIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAKLSAgICAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIAotICAgIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIDE5LCAyMjksIDE5NSwgMjE1LCA3OSwgMTgsIDE5LCAKLSAgICAyMTcsIDE1MywgMTgsIDE5LCAyMTUsIDE1MiwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzNCwgMTgsIDE5LCAKLSAgICAyMTUsIDE1NywgMTgsIDE5LCAyMzQsIDE4OCwgMTgsIDE5LCAyMzUsIDEzLCAxOCwgMTksIDIzNCwgOTgsIDE4LCAxOSwgCi0gICAgMjM0LCA4OSwgMTgsIDE5LCAyMzQsIDM0LCAxOCwgMTksIDIzNCwgMTYsIDE4LCAxOSwgMjExLCAxMTYsIDIzNCwgMTYsIDE4LCAKLSAgICAxOSwgMTc2LCAxOCwgMTksIDIzNSwgMTYsIDE4LCAxOSwgMjMzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDE4NCwgMTgsIAotICAgIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAKLSAgICAxODEsIDE4LCAxOSwgMjMzLCAxODAsIDE4LCAxOSwgMTU5LCAyMzMsIDE4MCwgMTgsIDE5LCAyMzMsIDE3OSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMywgMTc5LCAxOCwgMTksIDIzMywgMTg4LCAxOCwgMTksIDE1OSwgMjMzLCAxODgsIDE4LCAxOSwgMjMzLCAxODcsIAotICAgIDE4LCAxOSwgMTU5LCAyMzMsIDE4NywgMTgsIDE5LCAyMjksIDE5NSwgMjMzLCAxODcsIDE4LCAxOSwgMjM1LCAyOSwgMTgsIAotICAgIDE5LCAyMzMsIDE4OSwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDkwLCAxOCwgCi0gICAgMTksIDIxOSwgMjksIDIzNCwgMjksIDE4LCAxOSwgMjE5LCAyOSwgMjM0LCAyNTQsIDE4LCAxOSwgMjUwLCAxOTgsIDE4LCAKLSAgICAxOSwgMjUxLCAzOSwgMTgsIDE5LCAyNTAsIDU5LCAxOCwgMTksIDI1MCwgNDksIDE4LCAxOSwgMjQ5LCAyNDYsIDE4LCAxOSwgCi0gICAgMjQ5LCAxODIsIDE4LCAxOSwgMjExLCAxMTYsIDI0OSwgMTgyLCAxOCwgMTksIDI1MSwgNDEsIDE4LCAxOSwgMjUxLCA0MCwgCi0gICAgMTgsIDE5LCAyNDksIDg3LCAxOCwgMTksIDE1OSwgMjQ5LCA4NywgMTgsIDE5LCAyNDksIDg1LCAxOCwgMTksIDE1OSwgMjQ5LCAKLSAgICA4NSwgMTgsIDE5LCAyNDksIDg0LCAxOCwgMTksIDE1OSwgMjQ5LCA4NCwgMTgsIDE5LCAyNDksIDgzLCAxOCwgMTksIDE1OSwgCi0gICAgMjQ5LCA4MywgMTgsIDE5LCAyNDksIDgyLCAxOCwgMTksIDE1OSwgMjQ5LCA4MiwgMTgsIDE5LCAyNDksIDg5LCAxOCwgMTksIAotICAgIDE1OSwgMjQ5LCA4OSwgMTgsIDE5LCAyNDksIDg4LCAxOCwgMTksIDE1OSwgMjQ5LCA4OCwgMTgsIDE5LCAyMjksIDE5NSwgCi0gICAgMjQ5LCA4OCwgMTgsIDE5LCAyNTEsIDc0LCAxOCwgMTksIDIyMSwgMjExLCAyMTYsIDIxMSwgMTgsIDE5LCAyMzEsIDk2LCAKLSAgICAxOCwgMTksIDIzMSwgMjQxLCAxOCwgMTksIDIzMCwgMjM1LCAxOCwgMTksIDIzMCwgMjA2LCAxOCwgMTksIDIzMCwgMTY2LCAKLSAgICAxOCwgMTksIDIzMCwgMTM3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzAsIDEzNywgMTgsIDE5LCAxODYsIDE4LCAxOSwgMjMxLCAKLSAgICAyNDIsIDE4LCAxOSwgMjMwLCA0NSwgMTgsIDE5LCAxNTksIDIzMCwgNDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAxNTksIAotICAgIDIzMCwgNDMsIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAxNTksIDIzMCwgNDIsIDE4LCAxOSwgMjMwLCA0MSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMCwgNDEsIDE4LCAxOSwgMjMwLCA0MCwgMTgsIDE5LCAxNTksIDIzMCwgNDAsIDE4LCAxOSwgMjMwLCA0NywgMTgsIAotICAgIDE5LCAxNTksIDIzMCwgNDcsIDE4LCAxOSwgMjMwLCA0NiwgMTgsIDE5LCAxNTksIDIzMCwgNDYsIDE4LCAxOSwgMjI5LCAKLSAgICAxOTUsIDIzMCwgNDYsIDE4LCAxOSwgMTk0LCAxOCwgMTksIDE1OSwgMTk0LCAxOCwgMTksIDIzMCwgMjM5LCAxOCwgMTksIAotICAgIDI1MywgMjEzLCAxOTQsIDE4LCAxOSwgMjIxLCAyMTEsIDE5NCwgMTgsIDE5LCAyMjksIDExMiwgMTgsIDE5LCAyMjksIDIyOSwgCi0gICAgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAyMjgsIDIxMywgMTgsIDE5LCAyMjgsIDc5LCAxOCwgMTksIDIyOCwgNjksIDE4LCAKLSAgICAxOSwgMjExLCAxMTYsIDIyOCwgNjksIDE4LCAxOSwgMTk4LCAxOCwgMTksIDIyOSwgMjMwLCAxOCwgMTksIDIyNywgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjI3LCAxNzYsIDE4LCAxOSwgMjI3LCAxNzgsIDE4LCAxOSwgMTU5LCAyMjcsIDE3OCwgMTgsIDE5LCAKLSAgICAyMjcsIDE3NywgMTgsIDE5LCAxNTksIDIyNywgMTc3LCAxOCwgMTksIDIyOSwgMTk1LCAyMjcsIDE3NywgMTgsIDE5LCAyMzAsIAotICAgIDMwLCAxOCwgMTksIDczLCAyMjksIDg0LCAxOCwgMTksIDIyOCwgMjQzLCAxOCwgMTksIDIzMywgNjQsIDE4LCAxOSwgMjMzLCAKLSAgICAxMzksIDE4LCAxOSwgMjMyLCAyNDcsIDE4LCAxOSwgMjMyLCAyMzMsIDE4LCAxOSwgMjMyLCAxNjIsIDE4LCAxOSwgMjMyLCAKLSAgICAxMzMsIDE4LCAxOSwgMjExLCAxMTYsIDIzMiwgMTMzLCAxOCwgMTksIDIzMywgMTQxLCAxOCwgMTksIDIzMywgMTQwLCAxOCwgCi0gICAgMTksIDIzMiwgNzMsIDE4LCAxOSwgMTU5LCAyMzIsIDczLCAxOCwgMTksIDIzMiwgNzIsIDE4LCAxOSwgMTU5LCAyMzIsIDcyLCAKLSAgICAxOCwgMTksIDIzMiwgNzEsIDE4LCAxOSwgMTU5LCAyMzIsIDcxLCAxOCwgMTksIDIzMiwgNzAsIDE4LCAxOSwgMTU5LCAyMzIsIAotICAgIDcwLCAxOCwgMTksIDIzMiwgNjksIDE4LCAxOSwgMTU5LCAyMzIsIDY5LCAxOCwgMTksIDIzMiwgNzUsIDE4LCAxOSwgMTU5LCAKLSAgICAyMzIsIDc1LCAxOCwgMTksIDIzMiwgNzQsIDE4LCAxOSwgMTU5LCAyMzIsIDc0LCAxOCwgMTksIDE1NiwgMTgsIDE5LCAxNTksIAotICAgIDE1NiwgMTgsIDE5LCAxNDcsIDE1NiwgMTgsIDE5LCAyMjEsIDE4MywgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIDIxOSwgCi0gICAgMTkzLCAxOCwgMTksIDIxOSwgMTc3LCAxOCwgMTksIDIxOSwgNjAsIDE4LCAxOSwgMjE5LCA0MiwgMTgsIDE5LCAyMTEsIAotICAgIDExNiwgMjE5LCA0MiwgMTgsIDE5LCAyMDYsIDE4LCAxOSwgMjIyLCAzMywgMTgsIDE5LCAyMTcsIDI1MCwgMTgsIDE5LCAKLSAgICAxNTksIDIxNywgMjUwLCAxOCwgMTksIDIxNywgMjQ0LCAxOCwgMTksIDE1OSwgMjE3LCAyNDQsIDE4LCAxOSwgMjE3LCAyNDMsIAotICAgIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgMTgsIDE5LCAyMTcsIDIzOSwgMTgsIDE5LCAxNTksIDIxNywgMjM5LCAxOCwgMTksIAotICAgIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyNTQsIDE4LCAxOSwgMTU5LCAyMTcsIDI1NCwgCi0gICAgMTgsIDE5LCAyMTcsIDI1MywgMTgsIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIyOSwgMTk1LCAyMTcsIDI1MywgMTgsIAotICAgIDE5LCAyMjIsIDkzLCAxOCwgMTksIDI1MywgMjEzLCAyMjIsIDkzLCAxOCwgMTksIDIxNywgMjU1LCAxOCwgMTksIDI1MSwgCi0gICAgMjI2LCAyMjIsIDkzLCAxOCwgMTksIDIzMCwgMTMyLCAyMTksIDExMCwgMTgsIDE5LCAyMjksIDE5NSwgMjE5LCAxMDEsIDE4LCAKLSAgICAxOSwgMjI5LCAxOTUsIDIyMiwgOTEsIDE4LCAxOSwgMjI5LCAxOTUsIDIxOCwgMjM3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTgsIAotICAgIDg3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTksIDEwMCwgMTgsIDE5LCAyMjksIDE5NSwgMjIxLCAxODYsIDE4LCAxOSwgMjIwLCAKLSAgICA2NSwgMTgsIDE5LCAyMjAsIDM0LCAxOCwgMTksIDIyMCwgMjksIDE4LCAxOSwgMjIwLCA5LCAxOCwgMTksIDIyMCwgMywgMTgsIAotICAgIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAyMjAsIDEwMCwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgMjA4LCAKLSAgICAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAxOSwgMTU5LCAKLSAgICAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgMjA0LCAxOCwgCi0gICAgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMTAsIDE4LCAxOSwgMTU5LCAyMTksIDIxMCwgMTgsIDE5LCAyMTksIAotICAgIDIwOSwgMTgsIDE5LCAxNTksIDIxOSwgMjA5LCAxOCwgMTksIDIyMCwgMTA2LCAxOCwgMTksIDIxMSwgNDcsIDE4LCAxOSwgCi0gICAgMjExLCAxMDEsIDE4LCAxOSwgMjExLCA4LCAxOCwgMTksIDIxMCwgMjU1LCAxOCwgMTksIDIxMCwgMjQ0LCAxOCwgMTksIAotICAgIDIxMCwgMjI5LCAxOCwgMTksIDIxMSwgMTE2LCAyMTAsIDIyOSwgMTgsIDE5LCAxOTIsIDE4LCAxOSwgMjExLCAxMDMsIDE4LCAKLSAgICAxOSwgMjEwLCAxNzQsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NCwgMTgsIDE5LCAyMTAsIDE3MywgMTgsIDE5LCAxNTksIDIxMCwgCi0gICAgMTczLCAxOCwgMTksIDIxMCwgMTcyLCAxOCwgMTksIDE1OSwgMjEwLCAxNzIsIDE4LCAxOSwgMjEwLCAxNzEsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTAsIDE3MSwgMTgsIDE5LCAyMTAsIDE3MCwgMTgsIDE5LCAxNTksIDIxMCwgMTcwLCAxOCwgMTksIDIxMCwgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjEwLCAxNzYsIDE4LCAxOSwgMjEwLCAxNzUsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NSwgMTgsIDE5LCAKLSAgICAyMjksIDE5NSwgMjEwLCAxNzUsIDE4LCAxOSwgMjExLCAxMTcsIDE4LCAxOSwgMjUyLCAxMiwgMjExLCAxMTcsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIxMSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTMxLCAxOCwgMTksIDIyMywgCi0gICAgMjI2LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIzMywgNjQsIDE4LCAxOSwgMjIzLCAxODYsIDE4LCAxOSwgMjIzLCAzOCwgCi0gICAgMTgsIDE5LCAyMjIsIDI0MiwgMTgsIDE5LCAyMjIsIDIxMywgMTgsIDE5LCAyMjIsIDE5OSwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTYyLCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NywgMTgsIDE5LCAxNTksIDIzMywgMTQxLCAxOCwgMTksIDIyMiwgCi0gICAgMTEwLCAxOCwgMTksIDE1OSwgMjIyLCAxMTAsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAxOCwgMTksIDE0NywgCi0gICAgMTUzLCAxOCwgMTksIDI0NCwgMTYyLCAxOCwgMTksIDI0NCwgMjAxLCAxOCwgMTksIDI0NCwgMTI5LCAxOCwgMTksIDI0NCwgCi0gICAgMTE2LCAxOCwgMTksIDI0NCwgNTEsIDE4LCAxOSwgMjQ0LCA0MiwgMTgsIDE5LCAyNDQsIDIwNCwgMTgsIDE5LCAyNDQsIAotICAgIDIwMywgMTgsIDE5LCAyNDMsIDIxOSwgMTgsIDE5LCAxNTksIDI0MywgMjE5LCAxOCwgMTksIDI0NSwgMTQsIDE4LCAxOSwgCi0gICAgMjE2LCAxOTYsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxOTYsIDE4LCAxOSwgMjE2LCAxNzYsIDE4LCAxOSwgMjMwLCAyOCwgCi0gICAgMjE2LCAxNzYsIDE4LCAxOSwgMjE2LCAxNzIsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAxNTcsIAotICAgIDE4LCAxOSwgMjE2LCAxNTQsIDE4LCAxOSwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAxMjgsIAotICAgIDE4LCAxOSwgMTU5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTYsIDIxMSwgMTgsIDE5LCAyMTUsIDE0MywgMTgsIDE5LCAyMTUsIAotICAgIDE0MSwgMTgsIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIDE5LCAyMTUsIDE0NiwgMTgsIDE5LCAyMTUsIAotICAgIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIDIyNywgMTk3LCAKLSAgICAyNDEsIDI0NSwgMTgsIDE5LCAyMjcsIDE5NywgMjQxLCAxODcsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MSwgMTY4LCAxOCwgMTksIAotICAgIDIyNywgMTk3LCAyNDEsIDc1LCAxOCwgMTksIDIyNywgMTk3LCAyNDEsIDYwLCAxOCwgMTksIDIyNywgMTk3LCAxNjIsIDE4LCAKLSAgICAxOSwgMjI3LCAxOTcsIDI0MiwgNTMsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MiwgNjcsIDE4LCAxOSwgMjI3LCAxOTYsIDI0MiwgCi0gICAgNjcsIDE4LCAxOSwgMjQxLCAxNjEsIDE4LCAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDU2LCAxOCwgMTksIDIyNCwgNTEsIAotICAgIDE4LCAxOSwgMjI0LCA0NSwgMTgsIDE5LCAyMjQsIDQwLCAxOCwgMTksIDIyNCwgOTEsIDE4LCAxOSwgMjI0LCA5MCwgMTgsIAotICAgIDE5LCAyMjQsIDk5LCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMjE2LCA1NCwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAotICAgIDIxNiwgNTcsIDE4LCAxOSwgMTU5LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIyMywgMzgsIDE4LCAxOSwgMTU5LCAyMjIsIAotICAgIDIxMywgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDgwLCAxOCwgMTksIDIyOSwgMzIsIDE4LCAxOSwgMjI5LCAyOCwgCi0gICAgMTgsIDE5LCAyMjksIDksIDE4LCAxOSwgMjI5LCA0LCAxOCwgMTksIDIyOSwgODIsIDE4LCAxOSwgMjI5LCA4MSwgMTgsIDE5LCAKLSAgICAyMjksIDg0LCAxOCwgMTksIDIyOCwgMTA4LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDY1LCAxOCwgMTksIDIyMSwgMjExLCAKLSAgICAyMjAsIDM0LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDksIDE4LCAxOSwgMjIxLCAyMTEsIDIyMCwgMTA0LCAxOCwgMTksIAotICAgIDIxMSwgMjEzLCAyMTYsIDE5NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNzYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIwOSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMTEsIDE4LCAxOSwgMjMyLCAKLSAgICAyNTQsIDE4LCAxOSwgMjMyLCAyNTMsIDE4LCAxOSwgMjMyLCAyNTIsIDE4LCAxOSwgMjMyLCAyNTEsIDE4LCAxOSwgMjMzLCAKLSAgICA0LCAxOCwgMTksIDIzMywgMywgMTgsIDE5LCAyMzMsIDUsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMTk2LCAxOCwgMTksIAotICAgIDIxNiwgMjEwLCAyMTYsIDE3NiwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDE1NCwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAKLSAgICAyMTAsIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDIxMSwgMTgsIDE5LCAyNTQsIDE5OCwgMjUzLCAxNjYsIAotICAgIDE4LCAxOSwgMjUxLCAyMjYsIDc2LCAxOCwgMTksIDI1MSwgMjI2LCA3NCwgMTgsIDE5LCAyNTEsIDIyNiwgNzgsIDE4LCAxOSwgCi0gICAgMjUxLCAyMjYsIDYxLCAxOCwgMTksIDI1MSwgMjI2LCAyMTIsIDIyLCAxOCwgMTksIDI1MSwgMjI2LCAyMTEsIDI1MCwgMTgsIAotICAgIDE5LCAyNTEsIDIyNiwgMjExLCAyMjcsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgNjUsIDE4LCAxOSwgMjUxLCAyMjYsIDIyOSwgCi0gICAgMTEyLCAxOCwgMTksIDI1MSwgMjI2LCAyMjgsIDIzOCwgMTgsIDE5LCAyNTEsIDIyNiwgMjI4LCA3OSwgMTgsIDE5LCAyNTEsIAotICAgIDIyNiwgMTk4LCAxOCwgMTksIDI1MSwgMjI2LCAyMzQsIDE4OCwgMTgsIDE5LCAyNTEsIDIyNiwgMjM0LCA5OCwgMTgsIDE5LCAKLSAgICAyNTEsIDIyNiwgMjM0LCAzNCwgMTgsIDE5LCAyNTEsIDIyNiwgMTc2LCAxOCwgMTksIDIyMSwgMjExLCAyNDEsIDI0NSwgMTgsIAotICAgIDE5LCAyMjEsIDIxMSwgMjQxLCAxODcsIDE4LCAxOSwgMjIxLCAyMTEsIDI0MSwgNzUsIDE4LCAxOSwgMjIxLCAyMTEsIDE2MiwgCi0gICAgMTgsIDE5LCA3MywgMjQyLCAyMjcsIDE4LCAxOSwgNzMsIDI0MiwgMjMxLCAxOCwgMTksIDczLCAyNDIsIDI0MywgMTgsIDE5LCAKLSAgICA3MywgMjQyLCAyNDIsIDE4LCAxOSwgNzMsIDI0MiwgMjMyLCAxOCwgMTksIDczLCAyNDMsIDAsIDE4LCAxOSwgNzMsIDIyMiwgCi0gICAgMTQyLCAxOCwgMTksIDczLCAyMjIsIDIxMywgMTgsIDE5LCA3MywgMjIzLCAxMzEsIDE4LCAxOSwgNzMsIDIyMywgMTExLCAKLSAgICAxOCwgMTksIDczLCAyMjMsIDM4LCAxOCwgMTksIDczLCAyMDUsIDE4LCAxOSwgNzMsIDIxMSwgMTk1LCAxOCwgMTksIDczLCAKLSAgICAyMTEsIDIyNywgMTgsIDE5LCA3MywgMjEyLCAyMiwgMTgsIDE5LCA3MywgMjEyLCAxNywgMTgsIDE5LCA3MywgMjExLCAyNTAsIAotICAgIDE4LCAxOSwgNzMsIDIxMiwgNjUsIDE4LCAxOSwgNzMsIDI0MCwgMjAxLCAxOCwgMTksIDczLCAyNDAsIDIwMiwgMTgsIDE5LCAKLSAgICA3MywgMjQwLCAyMDUsIDE4LCAxOSwgNzMsIDI0MCwgMjA0LCAxOCwgMTksIDczLCAyNDAsIDIwMywgMTgsIDE5LCA3MywgCi0gICAgMjQwLCAyMDcsIDE4LCAxOSwgNzMsIDIxNiwgMTM3LCAxOCwgMTksIDczLCAyMTYsIDE1NywgMTgsIDE5LCA3MywgMjE2LCAKLSAgICAxOTYsIDE4LCAxOSwgNzMsIDIxNiwgMTk1LCAxOCwgMTksIDczLCAyMTYsIDE3NiwgMTgsIDE5LCA3MywgMjE2LCAyMDksIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTI0LCAxOCwgMTksIDczLCAyMTUsIDEzNCwgMTgsIDE5LCA3MywgMjE1LCAxNTIsIDE4LCAxOSwgCi0gICAgNzMsIDIxNSwgMTUxLCAxOCwgMTksIDczLCAyMTUsIDEzNiwgMTgsIDE5LCA3MywgMjE1LCAxNTcsIDE4LCAxOSwgNzMsIAotICAgIDIyNCwgMTUzLCAxOCwgMTksIDczLCAyMjUsIDE5LCAxOCwgMTksIDczLCAyMjUsIDIyNCwgMTgsIDE5LCA3MywgMjI1LCAKLSAgICAyMTQsIDE4LCAxOSwgNzMsIDIyNSwgMTExLCAxOCwgMTksIDczLCAxOTEsIDE4LCAxOSwgNzMsIDIyNiwgMTA5LCAxOCwgMTksIAotICAgIDczLCAyNDIsIDEyMCwgMTgsIDE5LCA3MywgMjQyLCAxODEsIDE4LCAxOSwgNzMsIDI0MywgNjksIDE4LCAxOSwgNzMsIDI0MywgCi0gICAgNjIsIDE4LCAxOSwgNzMsIDI0MiwgMjIxLCAxOCwgMTksIDczLCAyNDMsIDE0MiwgMTgsIDE5LCA3MywgMjM0LCAxMDYsIDE4LCAKLSAgICAxOSwgNzMsIDIzNCwgMTExLCAxOCwgMTksIDczLCAyMzQsIDEyNSwgMTgsIDE5LCA3MywgMjM0LCAxMjQsIDE4LCAxOSwgNzMsIAotICAgIDIzNCwgMTE4LCAxOCwgMTksIDczLCAyMzQsIDEzOCwgMTgsIDE5LCA3MywgMjM0LCA0NywgMTgsIDE5LCA3MywgMjM0LCA0OCwgCi0gICAgMTgsIDE5LCA3MywgMjM0LCA1MSwgMTgsIDE5LCA3MywgMjM0LCA1MCwgMTgsIDE5LCA3MywgMjM0LCA0OSwgMTgsIDE5LCAKLSAgICA3MywgMjM0LCA1MiwgMTgsIDE5LCA3MywgMjM0LCA1MywgMTgsIDE5LCA3MywgMjI3LCAyNDIsIDE4LCAxOSwgNzMsIDIyOCwgCi0gICAgNzksIDE4LCAxOSwgNzMsIDIyOSwgMTEyLCAxOCwgMTksIDczLCAyMjksIDEwOCwgMTgsIDE5LCA3MywgMjI4LCAyMzgsIDE4LCAKLSAgICAxOSwgNzMsIDE5OCwgMTgsIDE5LCA3MywgMjMwLCAxMDcsIDE4LCAxOSwgNzMsIDIzMCwgMTY2LCAxOCwgMTksIDczLCAyMzEsIAotICAgIDk2LCAxOCwgMTksIDczLCAyMzEsIDg1LCAxOCwgMTksIDczLCAyMzAsIDIzNSwgMTgsIDE5LCA3MywgMTg2LCAxOCwgMTksIAotICAgIDczLCAyMTAsIDIxMiwgMTgsIDE5LCA3MywgMjEwLCAyNDQsIDE4LCAxOSwgNzMsIDIxMSwgNDcsIDE4LCAxOSwgNzMsIDIxMSwgCi0gICAgNDQsIDE4LCAxOSwgNzMsIDIxMSwgOCwgMTgsIDE5LCA3MywgMTkyLCAxOCwgMTksIDczLCAyMzUsIDU3LCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyMzUsIDU3LCAxOCwgMTksIDczLCAyMzUsIDc0LCAxOCwgMTksIDczLCAyMzUsIDEzMiwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxMzAsIDE4LCAxOSwgNzMsIDIzNSwgMTE0LCAxOCwgMTksIDIyMSwgMjExLCAyMzUsIDExNCwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxNDcsIDE4LCAxOSwgNzMsIDIzNSwgODcsIDE4LCAxOSwgNzMsIDIzNSwgOTEsIDE4LCAxOSwgNzMsIDIzNSwgMTAxLCAKLSAgICAxOCwgMTksIDczLCAyMzUsIDEwMCwgMTgsIDE5LCA3MywgMjM1LCA5OSwgMTgsIDE5LCA3MywgMjM1LCAxMDIsIDE4LCAxOSwgCi0gICAgNzMsIDIzMiwgMTAzLCAxOCwgMTksIDczLCAyMzIsIDE2MiwgMTgsIDE5LCA3MywgMjMzLCA2NCwgMTgsIDE5LCA3MywgMjMzLCAKLSAgICA1NiwgMTgsIDE5LCA3MywgMjMyLCAyNDcsIDE4LCAxOSwgNzMsIDIzMywgMTQxLCAxOCwgMTksIDczLCAyNDcsIDE1NywgMTgsIAotICAgIDE5LCA3MywgMjQ3LCAxNTgsIDE4LCAxOSwgNzMsIDI0NywgMTYzLCAxOCwgMTksIDczLCAyNDcsIDE2MiwgMTgsIDE5LCA3MywgCi0gICAgMjQ3LCAxNTksIDE4LCAxOSwgNzMsIDI0NywgMTY0LCAxOCwgMTksIDczLCAyMzIsIDI1MCwgMTgsIDE5LCA3MywgMjMyLCAKLSAgICAyNTIsIDE4LCAxOSwgNzMsIDIzMywgMCwgMTgsIDE5LCA3MywgMjMyLCAyNTUsIDE4LCAxOSwgNzMsIDIzMiwgMjU0LCAxOCwgCi0gICAgMTksIDczLCAyMzMsIDQsIDE4LCAxOSwgNzMsIDIxNiwgNTEsIDE4LCAxOSwgNzMsIDIxNiwgNTMsIDE4LCAxOSwgNzMsIAotICAgIDIxNiwgNTYsIDE4LCAxOSwgNzMsIDIxNiwgNTUsIDE4LCAxOSwgNzMsIDIxNiwgNTQsIDE4LCAxOSwgNzMsIDIxNiwgNTcsIAotICAgIDE4LCAxOSwgNzMsIDIxNiwgNDYsIDE4LCAxOSwgNzMsIDIxNiwgNDcsIDE4LCAxOSwgNzMsIDIxNiwgNTksIDE4LCAxOSwgCi0gICAgNzMsIDIxNiwgNTgsIDE4LCAxOSwgNzMsIDIxNiwgNDgsIDE4LCAxOSwgNzMsIDIxNiwgNjAsIDE4LCAxOSwgNzMsIDIxMCwgCi0gICAgMTMsIDE4LCAxOSwgNzMsIDIxMCwgMjMsIDE4LCAxOSwgNzMsIDIxMCwgOTQsIDE4LCAxOSwgNzMsIDIxMCwgOTIsIDE4LCAKLSAgICAxOSwgNzMsIDIxMCwgNDQsIDE4LCAxOSwgNzMsIDIxMCwgMTE2LCAxOCwgMTksIDczLCAyMTAsIDE1OSwgMTgsIDE5LCA3MywgCi0gICAgNjUsIDIxMCwgMTU5LCAxOCwgMTksIDczLCAyNDYsIDM2LCAxOCwgMTksIDczLCAyNDYsIDM3LCAxOCwgMTksIDczLCAyNDYsIAotICAgIDQ0LCAxOCwgMTksIDczLCAyNDYsIDQzLCAxOCwgMTksIDczLCAyNDYsIDM5LCAxOCwgMTksIDczLCAyNDYsIDQ2LCAxOCwgCi0gICAgMTksIDczLCAyMTgsIDg0LCAxOCwgMTksIDczLCAyMTksIDYwLCAxOCwgMTksIDczLCAyMjEsIDE4MywgMTgsIDE5LCA3MywgCi0gICAgMjIxLCAxNzIsIDE4LCAxOSwgNzMsIDIxOSwgMTkzLCAxOCwgMTksIDczLCAyMDYsIDE4LCAxOSwgNzMsIDIxOSwgMjI3LCAKLSAgICAxOCwgMTksIDczLCAyMjAsIDksIDE4LCAxOSwgNzMsIDIyMCwgNjUsIDE4LCAxOSwgNzMsIDIyMCwgNjMsIDE4LCAxOSwgNzMsIAotICAgIDIyMCwgMzQsIDE4LCAxOSwgNzMsIDIyMCwgMTA0LCAxOCwgMTksIDczLCAyMjAsIDEwNiwgMTgsIDE5LCA3MywgMjE1LCAKLSAgICAxNjQsIDE4LCAxOSwgNzMsIDIxNSwgMTY3LCAxOCwgMTksIDczLCAyMTUsIDE3OSwgMTgsIDE5LCA3MywgMjE1LCAxNzgsIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTY4LCAxOCwgMTksIDczLCAyMTUsIDE4NCwgMTgsIDE5LCA3MywgMjUwLCA3NywgMTgsIDE5LCAKLSAgICA3MywgMjUwLCA5NCwgMTgsIDE5LCA3MywgMjUwLCAxMzksIDE4LCAxOSwgNzMsIDI1MCwgMTM2LCAxOCwgMTksIDczLCAyNTAsIAotICAgIDExOCwgMTgsIDE5LCA3MywgMjUwLCAxNjUsIDE4LCAxOSwgNzMsIDIxNSwgMTI3LCAxOCwgMTksIDczLCAyMTUsIDEyOCwgCi0gICAgMTgsIDE5LCA3MywgMjE1LCAxMzEsIDE4LCAxOSwgNzMsIDIxNSwgMTMwLCAxOCwgMTksIDczLCAyMTUsIDEyOSwgMTgsIDE5LCAKLSAgICA3MywgMjE1LCAxMzIsIDE4LCAxOSwgMjUwLCAxMTksIDUwLCAxOCwgMTksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTgsIDE5LCAKLSAgICAyMjQsIDgzLCAxOCwgMTksIDIyOSwgNzgsIDE4LCAxOSwgMjI4LCAxMDUsIDE4LCAxOSwgMjI4LCAxMDQsIDE4LCAxOSwgCi0gICAgMjI4LCAxMDMsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDcsIDE4LCAxOSwgMjI4LCAxMDYsIDE4LCAxOSwgCi0gICAgMjExLCAyMTMsIDIxNiwgMTI2LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAKLSAgICAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIAotICAgIDIxMywgMjE2LCAxMjksIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAKLSAgICAyMTEsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgOTgsIDIyNiwgMjMwLCAyMTksIDIxLCA3OSwgMjI2LCAyMzAsIDEsIDI1MiwgCi0gICAgNTYsIDIyNiwgMjMwLCAxLCAyMzIsIDkyLCAyMjYsIDIzMCwgMSwgMjQ0LCAxNTksIDIyNiwgMjMwLCAxLCAyMjIsIDE3LCAKLSAgICAyMjYsIDIzMCwgMSwgMjI4LCAxOTgsIDIyNiwgMjMwLCAxLCAyMTQsIDIyNiwgMjI2LCAyMzAsIDEsIDI0OCwgMjA1LCAyMjYsIAotICAgIDIzMCwgMSwgMjE2LCA4MSwgMjI2LCAyMzAsIDEsIDI0OSwgMjM3LCAyMjYsIDIzMCwgMSwgMjUwLCAxODgsIDIyNiwgMjMwLCAKLSAgICAxLCAyMzAsIDk2LCAyMjYsIDIzMCwgMSwgMjQyLCAxNjMsIDIyNiwgMjMwLCAxLCAyMjksIDY4LCAyMjYsIDIzMCwgMSwgCi0gICAgMjE4LCAxMjQsIDIyNiwgMjMwLCAxLCAyMjIsIDEzNywgMjI2LCAyMzAsIDEsIDI1NCwgMjA3LCAyMjYsIDIzMCwgMSwgMjI2LCAKLSAgICAxOTEsIDIyNiwgMjMwLCAxLCAyMTQsIDE1MCwgMjI2LCAyMzAsIDEsIDI0NSwgMjM5LCAyMjYsIDIzMCwgMSwgMjM1LCAxOTUsIAotICAgIDIyNiwgMjMwLCAxLCAyNDUsIDI0MCwgMjI2LCAyMzAsIDEsIDIyNiwgMTYyLCAyMjYsIDIzMCwgMSwgMjE0LCAyMDYsIDIyNiwgCi0gICAgMjMwLCAxLCAyMzYsIDQ2LCAyMjYsIDIzMCwgMSwgMjQ1LCAyMzcsIDIyNiwgMjMwLCAxLCAyMjUsIDIwNSwgMjI2LCAyMzAsIAotICAgIDI0NCwgMTU4LCA3OSwgMjI2LCAyMzAsIDIyMywgNTIsIDI0NCwgMTU4LCA3OSwgMTc4LCAxLCAyNDQsIDE0OSwgMjQ0LCAKLSAgICAxNDEsIDI0NCwgMTYzLCAyNDUsIDE0LCAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNjksIAotICAgIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMSwgCi0gICAgMjE2LCAxMzAsIDIxNiwgMTUyLCAxNzgsIDEsIDI0NSwgNjcsIDE3OCwgMSwgMjU0LCAxMDEsIDYxLCAxNzgsIDEsIDIyNiwgCi0gICAgMTQ3LCA3OCwgMTc4LCAxLCAyNTUsIDI2LCA2MSwgMTc4LCAxLCAyNTQsIDIzNiwgMTc4LCAxLCAyMzIsIDEzOSwgNzgsIAotICAgIDE3OCwgMSwgMjE5LCAyNDYsIDc4LCAxNzgsIDEsIDc4LCAxNzgsIDEsIDIyNiwgMjM4LCAxNzgsIDEsIDIyNiwgMjAwLCAKLSAgICAxNzgsIDEsIDIyMywgMTY3LCAyMjMsIDE4MCwgMjIzLCA5NywgMTUzLCAxNzgsIDEsIDIzNCwgMTk5LCAxNzgsIDEsIDI1MCwgCi0gICAgMTg1LCAxNzgsIDEsIDIzNCwgMjAwLCAyMzUsIDI5LCAxNzgsIDEsIDI0MywgMjA5LCAxNzgsIDEsIDI0NSwgMTQ2LCAxNzgsIAotICAgIDEsIDI0MywgNjUsIDI0MiwgNzMsIDI0MywgMjA5LCAxNzgsIDEsIDI0MywgMTAzLCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIAotICAgIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDQ1LCAyNDIsIDY3LCAxNzgsIDEsIDI0MiwgNDksIDI0MiwgNjcsIDE3OCwgMSwgCi0gICAgMjMyLCAxNDEsIDI0MiwgNjcsIDE3OCwgMSwgMjE5LCAyNDksIDI0MiwgNjcsIDE3OCwgMSwgMjI5LCAxOTAsIDIyNywgMTYxLCAKLSAgICAyMjksIDE5MSwgMjMwLCAzMCwgMTc4LCAxLCAyMTksIDI0NywgMjMwLCAzMCwgMTc4LCAxLCAyNDYsIDEyMywgMTc4LCAxLCAKLSAgICAyMzUsIDE3NSwgMjM1LCAxNzksIDIzNSwgMTY4LCA3NCwgMTc4LCAxLCA3NiwgMTc4LCAxLCAyMzUsIDEyMywgMjM1LCAxNTAsIAotICAgIDE3OCwgMSwgMjQzLCA1MCwgMTc4LCAxLCAyMzIsIDE0MiwgMjU0LCAyNTIsIDE3OCwgMSwgMjE5LCAyNTEsIDYxLCAxNzgsIAotICAgIDEsIDIzNSwgMTYwLCAyNDUsIDEyMSwgMTc4LCAxLCAyMjUsIDE2NywgMjI1LCAxODksIDIyNiwgMTA5LCAxNzgsIDEsIDI1NCwgCi0gICAgMTcyLCAyNDUsIDExOSwgMTc4LCAxLCAyMTksIDI2LCAyMjIsIDkzLCAxNzgsIDEsIDIxOSwgMTgxLCAyMzIsIDEzOCwgMjIyLCAKLSAgICA5MywgMTc4LCAxLCAyMTksIDI0NSwgMjIyLCA5MywgMTc4LCAxLCAyNTEsIDc0LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIAotICAgIDIxNiwgNjQsIDIxNiwgNzQsIDIxNSwgNDEsIDIxNywgMTUzLCAxNzgsIDEsIDIxOSwgMjQ0LCAyMTcsIDE1MywgMTc4LCAxLCAKLSAgICAyNDksIDY4LCAxNzgsIDEsIDI1MiwgMzksIDI1MiwgNDIsIDI1MSwgMjMyLCAyNTMsIDE2NiwgMTc4LCAxLCAyMTksIDI1MCwgCi0gICAgMjUzLCAxNjYsIDE3OCwgMSwgMjQ2LCAxMjIsIDE3OCwgMSwgMjI2LCAxNzUsIDE3OCwgMSwgMjQ1LCAyMDQsIDI0NSwgMjA2LCAKLSAgICA3NiwgMTc4LCAxLCAyMzEsIDE4MywgMjMxLCAxOTEsIDE5NCwgMTc4LCAxLCAyMzIsIDE0MCwgMTk0LCAxNzgsIDEsIDIxOSwgCi0gICAgMjQ4LCAxOTQsIDE3OCwgMSwgMjMzLCA3OSwgMjMzLCAxMjAsIDIzMiwgMTQ5LCAxNTYsIDE3OCwgMSwgMjQ2LCAxMjQsIAotICAgIDE3OCwgMSwgMjM1LCAyMzcsIDE3OCwgMSwgMjM1LCAyMzgsIDE3OCwgMSwgMjQ4LCAyMTgsIDI0OCwgMjIzLCAyNDksIDY4LCAKLSAgICAxNzgsIDEsIDIyNiwgMTQyLCAyNDUsIDY2LCA3OCwgMTc4LCAxLCAyNDUsIDIzNSwgMTc4LCAxLCAyMzUsIDE5NCwgMTc4LCAKLSAgICAxLCAyNDksIDg2LCAxNzgsIDEsIDI1MSwgMjUsIDE3OCwgMSwgMjUwLCAxOTcsIDE3OCwgMSwgMjE4LCAxNjMsIDE3OCwgMSwgCi0gICAgMjMyLCAxMzcsIDE3OCwgMSwgMjE5LCAyNDMsIDE3OCwgMSwgMjQwLCAxMTcsIDE3OCwgMSwgMjI0LCA5OSwgMTc4LCAxLCAKLSAgICAyMTEsIDE3OCwgMTc4LCAyMTksIDE1NywgMjI0LCAxNDMsIDE3OCwgMjMwLCA5MCwgMjI0LCAxNDMsIDE3OCwgMjQ5LCAxMzksIAotICAgIDIyNCwgMTQzLCAxNzgsIDI1NCwgMTQsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNTQsIDg3LCAyMTcsIDg0LCAKLSAgICAxLCA2MSwgMjE3LCA4NCwgMSwgNzQsIDIxNywgODQsIDEsIDY5LCAyMTcsIDg0LCAxLCAxNzYsIDIxNywgODQsIDEsIDI0MywgCi0gICAgMTQyLCAyMTcsIDg0LCAxLCAyMjksIDgyLCAyMTcsIDg0LCAxLCAyMTcsIDEwNiwgMjE3LCA4NCwgMSwgMjQ4LCAyMjksIAotICAgIDIxNywgODQsIDEsIDE5OCwgMjE3LCA4NCwgMSwgMTkxLCAyMTcsIDg0LCAxLCAyNTIsIDE5OSwgMjE3LCA4NCwgMSwgMTg2LCAKLSAgICAyMTcsIDg0LCAxLCAxOTIsIDIxNywgODQsIDEsIDIzMywgMTQxLCAyMTcsIDg0LCAxLCAyMTIsIDY1LCAyMTcsIDg0LCAxLCAKLSAgICAyMDYsIDIxNywgODQsIDEsIDE2MiwgMjE3LCA4NCwgMjUsIDUsIDc0LCAyMTcsIDg0LCAyNSwgNSwgNjksIDIxNywgODQsIDUsIAotICAgIDIxMywgMTUyLCAyNDIsIDE0LCAxLCA2MSwgMjQyLCAxNCwgMSwgNzQsIDI0MiwgMTQsIDEsIDY5LCAyNDIsIDE0LCAxLCAKLSAgICAxNzYsIDI0MiwgMTQsIDEsIDI0MywgMTQyLCAyNDIsIDE0LCAxLCAyMjksIDgyLCAyNDIsIDE0LCAxLCAyMTcsIDEwNiwgCi0gICAgMjQyLCAxNCwgMSwgMjQ4LCAyMjksIDI0MiwgMTQsIDEsIDE5OCwgMjQyLCAxNCwgMSwgMTkxLCAyNDIsIDE0LCAxLCAyNTIsIAotICAgIDE5OSwgMjQyLCAxNCwgMSwgMTg2LCAyNDIsIDE0LCAxLCAxOTIsIDI0MiwgMTQsIDEsIDIwNSwgMjQyLCAxNCwgMSwgMjMzLCAKLSAgICAxNDEsIDI0MiwgMTQsIDEsIDIxMiwgNjUsIDI0MiwgMTQsIDEsIDIwNiwgMjQyLCAxNCwgMSwgMTYyLCAyNDIsIDE0LCAyNSwgCi0gICAgNSwgNzQsIDI0MiwgMTQsIDI1LCA1LCA2OSwgMjQyLCAxNCwgNSwgMjI2LCA1MywgMjI1LCAxMjksIDIxOSwgMTU3LCAyMjQsIAotICAgIDE0MywgMjI1LCAxMjksIDUyLCAyMjQsIDE0MywgMjUxLCAxMjgsIDEsIDYxLCAyNTEsIDEyOCwgMSwgNzQsIDI1MSwgMTI4LCAKLSAgICAxLCA2OSwgMjUxLCAxMjgsIDEsIDE3NiwgMjUxLCAxMjgsIDEsIDI0MywgMTQyLCAyNTEsIDEyOCwgMSwgMjI5LCA4MiwgCi0gICAgMjUxLCAxMjgsIDEsIDIxNywgMTA2LCAyNTEsIDEyOCwgMSwgMjQ4LCAyMjksIDI1MSwgMTI4LCAxLCAxOTgsIDI1MSwgMTI4LCAKLSAgICAxLCAxOTEsIDI1MSwgMTI4LCAxLCAyNTIsIDE5OSwgMjUxLCAxMjgsIDEsIDE4NiwgMjUxLCAxMjgsIDEsIDE5MiwgMjUxLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUxLCAxMjgsIDEsIDIzMywgMTQxLCAyNTEsIDEyOCwgMSwgMjEyLCA2NSwgMjUxLCAxMjgsIDEsIAotICAgIDIwNiwgMjUxLCAxMjgsIDEsIDE2MiwgMjUxLCAxMjgsIDI1LCA1LCA3NCwgMjUxLCAxMjgsIDI1LCA1LCA2OSwgMjE3LCA4MywgCi0gICAgMSwgNjEsIDIxNywgODMsIDEsIDc0LCAyMTcsIDgzLCAxLCA2OSwgMjE3LCA4MywgMSwgMTc2LCAyMTcsIDgzLCAxLCAyNDMsIAotICAgIDE0MiwgMjE3LCA4MywgMSwgMjI5LCA4MiwgMjE3LCA4MywgMSwgMjE3LCAxMDYsIDIxNywgODMsIDEsIDI0OCwgMjI5LCAKLSAgICAyMTcsIDgzLCAxLCAxOTgsIDIxNywgODMsIDEsIDE5MSwgMjE3LCA4MywgMSwgMjUyLCAxOTksIDIxNywgODMsIDEsIDE4NiwgCi0gICAgMjE3LCA4MywgMSwgMTkyLCAyMTcsIDgzLCAxLCAyMzMsIDE0MSwgMjE3LCA4MywgMSwgMjEyLCA2NSwgMjE3LCA4MywgMSwgCi0gICAgMjA2LCAyMTcsIDgzLCAyNSwgNSwgNzQsIDIxNywgODMsIDI1LCA1LCA2OSwgNzAsIDEsIDE3NiwgNzAsIDEsIDIzNCwgMTM4LCAKLSAgICA3MCwgMSwgMjM0LCAzNCwgNzAsIDEsIDIzNCwgMTExLCA3MCwgMSwgMjI5LCA5LCA3MCwgMSwgMjUxLCA0MSwgNzAsIDEsIAotICAgIDI1MCwgMTY1LCA3MCwgMSwgMjQ5LCAyNDYsIDcwLCAxLCAyNTAsIDk0LCA3MCwgMSwgMjI3LCAxMzgsIDcwLCAxLCAyNDgsIAotICAgIDIyOSwgNzAsIDEsIDIxNSwgMTQ1LCA3MCwgMSwgMjQ3LCAxNTMsIDcwLCAxLCAyMTUsIDE0MCwgNzAsIDEsIDIyOCwgODUsIAotICAgIDcwLCAxLCAyMTcsIDEwNiwgNzAsIDEsIDIxNiwgMjA5LCA3MCwgMSwgMTEyLCA3MCwgMSwgMjE2LCAxNTcsIDcwLCAxLCAKLSAgICAyMjgsIDc5LCA3MCwgMSwgMjUyLCAxOTksIDcwLCAxLCAyMjUsIDE1MCwgNzAsIDEsIDIyNSwgMTksIDcwLCAxLCAyMjUsIAotICAgIDEyNCwgNzAsIDEsIDIzMCwgMTY2LCA3MCwgMSwgMjEwLCAyNDQsIDcwLCAxLCAyMjIsIDIxMywgNzAsIDEsIDIzMiwgMTYyLCAKLSAgICA3MCwgMSwgMjEzLCAxMzgsIDcwLCAxLCAyMjAsIDEwNCwgNzAsIDEsIDIxOCwgMTg2LCA3MCwgMSwgMjA2LCA3MCwgMSwgCi0gICAgMTYyLCA3MCwgMSwgMjMzLCAxNDEsIDcwLCAxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDc3LCA3MCwgMjM1LCAKLSAgICAyNTAsIDI1LCAyMjQsIDkwLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDU2LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUxLCAKLSAgICA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDMzLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUsIDcwLCAyMzUsIDI1MCwgMjUsIAotICAgIDIyMywgMjQ5LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjMsIDI0OCwgNzAsIDIzNSwgMjUwLCAyNSwgMjIyLCAxMDIsIDcwLCAKLSAgICAyMzUsIDI1MCwgMjUsIDIyMiwgOTUsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgNjcsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgCi0gICAgNTcsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNzIsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgODMsIDcwLCAyMzUsIDI1MCwgCi0gICAgMjUsIDIyNCwgNDEsIDIxNSwgNDksIDExMSwgNzAsIDIzNSwgMjUwLCAyNSwgMjI0LCA0MSwgMjE1LCA0OSwgMTA1LCA3MCwgCi0gICAgMjM1LCAyNTAsIDI1LCAyMjQsIDczLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTQsIDUzLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTUsIAotICAgIDgyLCA3MCwgMjUsIDUsIDI1NSwgODIsIDcwLCAyNSwgNSwgNzQsIDcwLCAyNSwgNSwgMjM2LCA0MCwgNzAsIDI1LCA1LCAKLSAgICAyMTEsIDExNywgNzAsIDI1LCA1LCAyMTAsIDE2OSwgNzAsIDI1LCA1LCA2OSwgNzAsIDI1LCA1LCAyMTQsIDExOCwgNzAsIAotICAgIDI1LCA1LCAyMTQsIDIyOSwgNzAsIDI1LCA1LCAyMjYsIDIzOCwgNzAsIDI1LCA1LCAxOTIsIDcwLCAyNSwgNSwgMjM2LCA2NywgCi0gICAgNzAsIDI1LCA1LCA3NiwgNzAsIDI1LCA1LCAyNTQsIDI1MiwgNzAsIDI1LCA1LCAyNTQsIDIxMCwgNzAsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgNzAsIDI1LCA1LCAyNTMsIDIwMCwgNzAsIDUsIDIyOCwgMjExLCA3MCwgNSwgMjIzLCAxMjksIDcwLCA1LCAyMTAsIAotICAgIDE4MCwgNzAsIDUsIDIzMCwgNTcsIDcwLCA1LCAyMTUsIDIxNCwgNzAsIDUsIDI1MiwgMTUxLCA3MCwgNSwgMjIyLCAyMDgsIAotICAgIDcwLCA1LCAyMTYsIDQxLCA3MCwgNSwgMjM0LCAyNDcsIDcwLCA1LCAyNTQsIDIxMiwgNzAsIDUsIDIyMSwgMjQ2LCAyMjEsIAotICAgIDI0MCwgNzAsIDUsIDIxMywgMTQ5LCA3MCwgNSwgMjQ5LCAyNDAsIDcwLCA1LCAyNTIsIDEyNSwgNzAsIDUsIDIzNCwgMTMxLCAKLSAgICA3MCwgNSwgMjUyLCAxNDUsIDcwLCA1LCAyNTEsIDE3LCAyMjUsIDc1LCAyMzMsIDE5MywgNzAsIDUsIDIzMywgMzYsIDIxNiwgCi0gICAgMTgsIDcwLCA1LCAyNTIsIDI4LCA3MCwgNSwgMjI1LCAxMjYsIDIzMCwgMTA0LCA3MCwgNSwgMjM0LCAxNSwgNzAsIDI0OSwgCi0gICAgMTA2LCAxNiwgMjIzLCAzMSwgNzAsIDUsIDI1MywgMTgyLCA3MCwgNSwgMjUzLCAyMDMsIDcwLCAyMSwgMjEwLCA4NiwgNzAsIAotICAgIDIxLCAxMTEsIDcwLCAyMSwgMTA1LCA3MCwgMjEsIDE1OCwgNzAsIDIxLCAxNjEsIDcwLCAyMSwgMTkwLCA3MCwgMjEsIDE5NSwgCi0gICAgNzAsIDIxLCAxOTksIDcwLCAyMSwgMTk2LCA3MCwgMjEsIDIwMSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjE5LCAKLSAgICA0NSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjMwLCA3NiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI1LCAKLSAgICA3NCwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUyLCA1NywgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUxLCAKLSAgICAxMTEsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgMjE4LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIAotICAgIDIxMiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI0LCAyMTAsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgCi0gICAgMjE2LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIDIxNCwgODMsIDI1MSwgMjQ0LCA4MywgMjQ1LCAxNzEsIDgzLCAKLSAgICAyNDksIDIyNywgODMsIDI0MywgMjM2LCAyMTgsIDEzMSwgODMsIDI0OSwgMjM0LCA4MywgMjQ0LCAxOSwgMjQ3LCAxMjYsIAotICAgIDgzLCAyMTYsIDQwLCAyMTksIDU0LCAyNDAsIDE3NSwgODMsIDIxOSwgMTkyLCAzLCAyNTEsIDE4MCwgMjMxLCAxNTksIDgzLCAKLSAgICAyMzEsIDE4OCwgMjQ5LCAyMjcsIDgzLCAyMzEsIDE4OCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MywgMjI4LCAxOTYsIDgzLCAKLSAgICAyNDQsIDUsIDQ1LCAyMjEsIDE1OSwgMTExLCA4MywgMjQ0LCA1LCA0NSwgMjIxLCAxNTksIDEwNSwgODMsIDI0NCwgNSwgNDUsIAotICAgIDIyMSwgMTU5LCAxNTgsIDgzLCAyNSwgMjIwLCAxMzksIDgzLCAyMSwgMjEwLCA4NiwgODMsIDIxLCAxMTEsIDgzLCAyMSwgCi0gICAgMTA1LCA4MywgMjEsIDE1OCwgODMsIDIxLCAxNjEsIDgzLCAyMSwgMTkwLCA4MywgMjEsIDE5NSwgODMsIDIxLCAxOTksIDgzLCAKLSAgICAyMSwgMTk2LCA4MywgMjEsIDIwMSwgODMsIDEsIDYxLCA4MywgMSwgNzYsIDgzLCAxLCA3NCwgODMsIDEsIDc4LCA4MywgMSwgCi0gICAgNjksIDgzLCAxLCAyMjYsIDIzOCwgODMsIDEsIDIxNCwgMjE0LCA4MywgMSwgMjQ1LCAyMTcsIDgzLCAxLCAxOTgsIDgzLCAxLCAKLSAgICAyNTQsIDEyMywgODMsIDEsIDI1MiwgMTk5LCA4MywgMSwgMTkxLCA4MywgMSwgMjI0LCA5MSwgODMsIDEsIDI0MywgMTQyLCAKLSAgICA4MywgMSwgMTg2LCA4MywgMSwgMjMzLCAxNDEsIDgzLCAxLCAyMDYsIDgzLCAxLCAyMjAsIDEwNCwgODMsIDEsIDIxNywgCi0gICAgMTA2LCA4MywgMSwgMjQ4LCAyMjksIDgzLCAxLCAyNTAsIDE2NSwgODMsIDEsIDIzNSwgMTQ3LCA4MywgMSwgMTkyLCA4MywgCi0gICAgMSwgMjA1LCA4MywgMSwgMjEyLCA2NSwgODMsIDEsIDI0NCwgMjA0LCA4MywgMSwgMTc2LCA4MywgMSwgMjM0LCAxMzgsIDgzLCAKLSAgICAxLCAyMTUsIDE4NCwgODMsIDEsIDIxMCwgMTE2LCA4MywgMSwgMjQyLCA1MywgODMsIDEsIDIxMCwgMTYsIDgzLCAxLCAyMzMsIAotICAgIDQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTgsIDgzLCAxLCAyMTYsIDQwLCAyMDAsIDI1LCA1MCwgODMsIDEsIAotICAgIDIxNiwgNDAsIDc2LCA4MywgMSwgMjE2LCA0MCwgNzQsIDgzLCAxLCAyMTYsIDQwLCA3OCwgODMsIDEsIDIxNiwgNDAsIDY5LCAKLSAgICA4MywgMSwgMjE2LCA0MCwgMjI2LCAyMzgsIDgzLCAxLCAyMTYsIDQwLCAyMTQsIDIxNCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTIzLCA4MywgMSwgMjE2LCA0MCwgMjUyLCAxOTksIDgzLCAxLCAyMTYsIDQwLCAxOTEsIDgzLCAxLCAyMTYsIDQwLCAyMjQsIAotICAgIDkxLCA4MywgMSwgMjE2LCA0MCwgMjQzLCAxNDIsIDgzLCAxLCAyMTYsIDQwLCAxODYsIDgzLCAxLCAyMTYsIDQwLCAyMTcsIAotICAgIDEwNiwgODMsIDEsIDIxNiwgNDAsIDI0OCwgMjI5LCA4MywgMSwgMjE2LCA0MCwgMjUwLCAxNjUsIDgzLCAxLCAyMTYsIDQwLCAKLSAgICAyMzUsIDE0NywgODMsIDEsIDIxNiwgNDAsIDIxNSwgMTg0LCA4MywgMSwgMjE2LCA0MCwgMTkyLCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjEyLCA2NSwgODMsIDEsIDIxNiwgNDAsIDE3NiwgODMsIDEsIDIxNiwgNDAsIDI0MywgMTM5LCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjQyLCA1MywgODMsIDEsIDIxNiwgNDAsIDIzNSwgMTEzLCA4MywgMSwgMjE2LCA0MCwgMjI4LCAyMzYsIDgzLCAxLCAyMTYsIAotICAgIDQwLCAyNDYsIDQ2LCA4MywgMSwgMjE5LCAxOTIsIDc2LCA4MywgMSwgMjE5LCAxOTIsIDc0LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDIzNSwgMTU4LCA4MywgMSwgMjE5LCAxOTIsIDIxNCwgMjE0LCA4MywgMSwgMjE5LCAxOTIsIDY5LCA4MywgMSwgMjE5LCAKLSAgICAxOTIsIDI1NCwgMTIzLCA4MywgMSwgMjE5LCAxOTIsIDE3NiwgODMsIDEsIDIxOSwgMTkyLCAyNDMsIDE0MiwgODMsIDEsIAotICAgIDIxOSwgMTkyLCAxNjIsIDgzLCAxLCAyMTksIDE5MiwgMTkxLCA4MywgMSwgMjE5LCAxOTIsIDIyMCwgMTA0LCA4MywgMSwgCi0gICAgMjE5LCAxOTIsIDIxNywgMTA2LCA4MywgMSwgMjE5LCAxOTIsIDI0OCwgMjI5LCA4MywgMSwgMjE5LCAxOTIsIDIzNSwgMTQ3LCAKLSAgICA4MywgMSwgMjE5LCAxOTIsIDI0NCwgMjA0LCA4MywgMSwgMjE5LCAxOTIsIDI0MywgMTM5LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDI0MiwgNTMsIDgzLCAxLCAyMTksIDE5MiwgMjE1LCAxODQsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCAxMTYsIDgzLCAxLCAKLSAgICAyMTksIDE5MiwgMjIzLCAxODcsIDgzLCAxLCAyMTksIDE5MiwgMjUwLCAxNjUsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCA4MiwgCi0gICAgODMsIDEsIDIzMSwgMTg4LCA3NCwgODMsIDEsIDIzMSwgMTg4LCAxNzYsIDgzLCAxLCAyMzEsIDE4OCwgMjA1LCA4MywgMSwgCi0gICAgMjMxLCAxODgsIDI0NCwgMjA0LCA4MywgMSwgMjMxLCAxODgsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIAotICAgIDI1NCwgODQsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEzLCAxNDgsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjQ4LCAxOTQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyMzUsIDIwMCwgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI1MiwgMTYzLCA4MywgMSwgCi0gICAgMjU0LCAxNzEsIDI0MywgMTIzLCAxMzQsIDI1MiwgMTYzLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCA2MSwgODMsIDEsIAotICAgIDI1NCwgMTcxLCAyNDMsIDEyMywgNzQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDE3NiwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjI5LCA4MiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjE1LCAxNTcsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNSwgMTQ1LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNDgsIDE0MywgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjI4LCAxMTUsIDgzLCAxLCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIyOSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMTkxLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMjUsIDE1MCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIAotICAgIDEyMywgMjE4LCAyMjUsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAKLSAgICAxMjMsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNTQsIDIxOCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjE3LCAxMDYsIDgzLCAxLCAyMTYsIDQwLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDMsIDAsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgCi0gICAgMTIzLCAyMjksIDgyLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDIzMSwgCi0gICAgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzNSwgMTIwLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMjE1LCAxNTcsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDEyNywgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjQ4LCAKLSAgICAzMywgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxOCwgMjI1LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjQ5LCA4MCwgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMTYzLCA2OSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMTYzLCAxOTIsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNTIsIDI2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIxOSwgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzMywgNCwgMTgsIDE5LCAyMjYsIDExMywgMTgsIDE5LCAyNTMsIDE3NSwgMTgsIDE5LCAKLSAgICAyNTUsIDM3LCAxOCwgMTksIDIxMiwgMjUsIDE4LCAxOSwgMjI0LCAyMjQsIDE4LCAxOSwgMjI1LCAyMzMsIDE4LCAxOSwgCi0gICAgMjI0LCAxMDgsIDE4LCAxOSwgMjE3LCAzMiwgMTgsIDE5LCAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDE4NSwgMTgsIDE5LCAKLSAgICAyMzEsIDEzNywgMTgsIDE5LCAyMjgsIDQyLCAxOCwgMTksIDIyOSwgMTg2LCAxOCwgMTksIDIzMywgNzQsIDE4LCAxOSwgCi0gICAgMjE5LCAyNCwgMTgsIDE5LCAyMjEsIDIxMywgMTgsIDE5LCAyMTksIDIzNCwgMTgsIDE5LCAyMjAsIDY4LCAxOCwgMTksIAotICAgIDIxOSwgMjAzLCAxOCwgMTksIDIxMCwgMjIwLCAxOCwgMTksIDIxMSwgNTIsIDE4LCAxOSwgMjIzLCAxMzcsIDE4LCAxOSwgCi0gICAgMjI3LCAxNzUsIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTc1LCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIDIyNiwgMjIwLCAKLSAgICAyMjcsIDE3NCwgMTgsIDE5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjYsIDIyMCwgMjI3LCAxNzMsIDE4LCAxOSwgMjI3LCAxNzIsIAotICAgIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTcyLCAxOCwgMTksIDIyMiwgMTA3LCAxOCwgMTksIDIyMiwgMTA2LCAxOCwgMTksIAotICAgIDIyMiwgMTA1LCAxOCwgMTksIDIyMiwgMTA0LCAxOCwgMTksIDIyMiwgMTAzLCAxOCwgMTksIDIyMiwgMTExLCAxOCwgMTksIAotICAgIDIyNiwgMjIwLCAyMjYsIDEwOSwgMTgsIDE5LCAyMjYsIDIyMCwgMjE3LCAxNTMsIDE4LCAxOSwgMjI2LCAyMjAsIDIzNSwgCi0gICAgMjksIDE4LCAxOSwgMjI2LCAyMjAsIDI1MSwgNzQsIDE4LCAxOSwgMjI2LCAyMjAsIDE5NCwgMTgsIDE5LCAyMjYsIDIyMCwgCi0gICAgMjMwLCAzMCwgMTgsIDE5LCAyMjYsIDIyMCwgMjIyLCA5MywgMTgsIDE5LCAyMjYsIDIyMCwgMjIwLCAxMDYsIDE4LCAxOSwgCi0gICAgMjQ1LCAyMjcsIDIxMiwgOTgsIDE4LCAxOSwgMjEyLCA3LCAyMTIsIDk4LCAxOCwgMTksIDQwLCA0LCAyMjIsIDIzNiwgMTgsIAotICAgIDE5LCA0MCwgMjIzLCAxNjAsIDI0NywgMTI4LCAxOCwgMTksIDIyMywgMjI2LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTMzLCAxOCwgMTksIDE1OSwgMjMzLCAxNDAsIDE4LCAxOSwgMjE2LCAxMjcsIDE4LCAxOSwgMjE2LCAxMjksIDE4LCAxOSwgCi0gICAgMjE1LCAxMzcsIDE4LCAxOSwgMjE1LCAxMzksIDE4LCAxOSwgMjE1LCAxNDQsIDE4LCAxOSwgMjE2LCA1MCwgMTgsIDE5LCAKLSAgICAyMTYsIDUyLCAxOCwgMTksIDIyMSwgMjExLCAyMTksIDIwOCwgMTgsIDE5LCAyMjEsIDIxMSwgMjIwLCAzLCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyNDEsIDYwLCAxOCwgMTksIDczLCAyNDIsIDgwLCAxOCwgMTksIDczLCAyNDgsIDYwLCAyNDMsIDYyLCAxOCwgCi0gICAgMTksIDczLCAyNDMsIDEzOSwgMTgsIDE5LCA3MywgMjQyLCA4NSwgMTgsIDE5LCAyMjEsIDIxMSwgMjM1LCAzOSwgMTgsIDE5LCAKLSAgICA3MywgMjM1LCAzNywgMTgsIDE5LCAyNTIsIDc2LCAyNDgsIDYwLCAxNTYsIDE4LCAxOSwgMjUyLCA3NiwgMjQ4LCA2MCwgCi0gICAgMTUzLCAxOCwgMTksIDczLCAyNDgsIDU1LCAyMjIsIDkzLCAyMzIsIDIyOSwgMjEzLCAxMjIsIDIzMywgMTYsIDIzMiwgMjI5LCAKLSAgICAxLCAxNzYsIDIzMiwgMjI5LCAxLCAyMzQsIDEzOCwgMjMyLCAyMjksIDEsIDI0MywgMTQyLCAyMzIsIDIyOSwgMSwgMjQzLCAKLSAgICAwLCAyMzIsIDIyOSwgMSwgMjI5LCA4MiwgMjMyLCAyMjksIDEsIDI1MSwgNDEsIDIzMiwgMjI5LCAxLCAyNTAsIDE2NSwgCi0gICAgMjMyLCAyMjksIDEsIDIzNSwgMTQ3LCAyMzIsIDIyOSwgMSwgMjM1LCAxMjAsIDIzMiwgMjI5LCAxLCAyMTEsIDcxLCAyMzIsIAotICAgIDIyOSwgMSwgMjE3LCAxMDYsIDIzMiwgMjI5LCAxLCAyMTYsIDIwOSwgMjMyLCAyMjksIDEsIDI0OCwgMjI5LCAyMzIsIDIyOSwgCi0gICAgMSwgMjQ4LCAzMywgMjMyLCAyMjksIDEsIDE5OCwgMjMyLCAyMjksIDEsIDE5MSwgMjMyLCAyMjksIDEsIDIyNSwgMTUwLCAKLSAgICAyMzIsIDIyOSwgMSwgMjUyLCAxOTksIDIzMiwgMjI5LCAxLCAyNTIsIDI2LCAyMzIsIDIyOSwgMSwgMTg2LCAyMzIsIDIyOSwgCi0gICAgMSwgMTkyLCAyMzIsIDIyOSwgMSwgMjA1LCAyMzIsIDIyOSwgMSwgMjMzLCAxNDEsIDIzMiwgMjI5LCAxLCAyMTIsIDY1LCAKLSAgICAyMzIsIDIyOSwgMSwgMjIwLCAxMDQsIDIzMiwgMjI5LCAxLCAyMTgsIDIyNSwgMjMyLCAyMjksIDEsIDIwNiwgMjMyLCAyMjksIAotICAgIDEsIDE2MiwgMjMyLCAyMjksIDI1LCA1LCA2MSwgMjMyLCAyMjksIDI1LCA1LCA3NCwgMjMyLCAyMjksIDI1LCA1LCA2OSwgCi0gICAgMjMyLCAyMjksIDI1LCA1LCAyNDUsIDIxNywgMjMyLCAyMjksIDI1LCA1LCAyNTQsIDIxMCwgMjMyLCAyMjksIDI1LCA1LCAKLSAgICAyMjYsIDE4NywgMjMyLCAyMjksIDI1LCA1LCAyNTMsIDIwMCwgMjMyLCAyMjksIDI1LCA1LCA3NiwgMjMyLCAyMjksIDI1LCAKLSAgICA1LCA3OCwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDE5MiwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDIwNSwgMjMyLCAyMjksIAotICAgIDIxOCwgNzQsIDEsIDIxMiwgNjUsIDIzMiwgMjI5LCA0LCAxLCAxNzYsIDIzMiwgMjI5LCA0LCAxLCAyMjksIDgyLCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMjU0LCA4MywgMjMyLCAyMjksIDQsIDEsIDIxNywgMTA2LCAyMzIsIDIyOSwgNCwgMSwgMTk4LCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMTkxLCAyMzIsIDIyOSwgNCwgMSwgMTg2LCAyMzIsIDIyOSwgNCwgMSwgMjA1LCAyMzIsIDIyOSwgNCwgMSwgCi0gICAgMjMzLCAxNDEsIDIzMiwgMjI5LCA1LCAyMzAsIDk0LCAyMzIsIDIyOSwgNSwgMjM0LCAxNzcsIDIzMiwgMjI5LCA1LCAyMjIsIAotICAgIDM0LCAyMzIsIDIyOSwgNSwgMjMyLCAxMzMsIDIzMiwgMjI5LCAyNDUsIDM5LCA3OSwgMjMyLCAyMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyMzIsIDIyOSwgMjEsIDIxMCwgODYsIDIzMiwgMjI5LCAyMSwgMTExLCAyMzIsIDIyOSwgMjEsIDEwNSwgMjMyLCAyMjksIAotICAgIDIxLCAxNTgsIDIzMiwgMjI5LCAyMSwgMTYxLCAyMzIsIDIyOSwgMjEsIDE5MCwgMjMyLCAyMjksIDIxLCAxOTUsIDIzMiwgCi0gICAgMjI5LCAyMSwgMTk5LCAyMzIsIDIyOSwgMjEsIDE5NiwgMjMyLCAyMjksIDIxLCAyMDEsIDM5LCAyMzMsIDY1LCAxLCAxNzYsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNjUsIDEsIDIyOSwgODIsIDM5LCAyMzMsIDY1LCAxLCAyMTUsIAotICAgIDE4NCwgMzksIDIzMywgNjUsIDEsIDIwNiwgMzksIDIzMywgNjUsIDEsIDE5MiwgMzksIDIzMywgNjUsIDEsIDIxNywgMTA2LCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyMDksIDM5LCAyMzMsIDY1LCAxLCAyMzMsIDE0MSwgMzksIDIzMywgNjUsIDEsIDE5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIyNSwgMTUwLCAzOSwgMjMzLCA2NSwgMSwgMTg2LCAzOSwgMjMzLCA2NSwgMSwgMjQ0LCAyMDQsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMTYyLCAzOSwgMjMzLCA2NSwgMSwgMjI0LCA5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIzNCwgMTM4LCAzOSwgMjMzLCA2NSwgMSwgMjE1LCAxNzYsIDM5LCAyMzMsIDY1LCAxLCAxOTgsIAotICAgIDM5LCAyMzMsIDY1LCAxLCA2MSwgMzksIDIzMywgNjUsIDEsIDc0LCAzOSwgMjMzLCA2NSwgMSwgMjQ1LCAyMTcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCAyNDUsIDIwNSwgMzksIDIzMywgNjUsIDEsIDY5LCAzOSwgMjMzLCA2NSwgMSwgMjI2LCAxODcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCA3OCwgMzksIDIzMywgNjUsIDEsIDIxNCwgMjE0LCAzOSwgMjMzLCA2NSwgMSwgNzYsIDM5LCAyMzMsIAotICAgIDY1LCAxLCAyNTMsIDE5OCwgMzksIDIzMywgNjUsIDEsIDI1NCwgMjEwLCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyOSwgMzksIAotICAgIDIzMywgNjUsIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyNiwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIxNiwgMjUsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjQsIDkxLCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMjI0LCA5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE3NiwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIAotICAgIDIxNSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkyLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDEyMSwgMjE1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKLSAgICAxOTIsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTcsIDEwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNiwgMjA5LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMTk4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE3LCAxMDYsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTIxLCAyMTYsIDIwOSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAKLSAgICAzOSwgMTczLCAxLCAxMjUsIDIyNSwgMTUwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTg2LCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI1LCAxNTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxODYsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyNDQsIDIwNCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgCi0gICAgMSwgMTI1LCAyMzMsIDE0MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0NCwgMjA0LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCi0gICAgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTQxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTYyLCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMjQ4LCAyMjksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNTIsIDE5OSwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0OCwgMjI5LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjUyLCAKLSAgICAxOTksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTM4LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjUsIDIxOCwgODMsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTgsIDgzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNSwgCi0gICAgMjE5LCAyNDEsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgODIsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDY5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExOCwgMTY2LCAzOSwgMTczLCAyNSwgCi0gICAgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NCwgMjUyLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3OCwgMTY2LCAzOSwgCi0gICAgMTczLCAyNSwgNSwgMjI3LCA0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCi0gICAgMjUzLCAxNzUsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgMzcsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjYsIDExMywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI3LCAxLCAxNjYsIDM5LCAxNzMsIAotICAgIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM1LCAxNTgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgCi0gICAgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDg0LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDMwLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDQwLCAxOTQsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzNSwgMjksIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgCi0gICAgNjgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTY2LCAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNjMsIDE2NiwgMzksIAotICAgIDE3MywgMTM4LCAyMzEsIDE2MiwgMTY2LCAzOSwgMTczLCAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIAotICAgIDM5LCAxNzMsIDIxLCAxOTAsIDE2NiwgMzksIDE3MywgMjEsIDE5NSwgMTY2LCAzOSwgMTczLCAyMSwgMTk5LCAxNjYsIDM5LCAKLSAgICAxNzMsIDIxLCAxOTYsIDE2NiwgMzksIDE3MywgMjEsIDIwMSwgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMSwgMTY2LCAzOSwgCi0gICAgMTczLCA1LCAyMzMsIDEyNiwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyNSwgNzAsIDE2LCAyMjUsIDI0MCwgNzAsIDE2LCAKLSAgICAyMzAsIDc3LCAyMzQsIDMxLCA3MCwgMTYsIDIyNSwgNzUsIDIzNCwgMzEsIDcwLCAxNiwgMjUyLCA1OCwgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNTEsIDExMiwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxOSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxMywgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyMjQsIDIxMSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxNywgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIAotICAgIDIxNSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE4MSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3NywgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNDgsIDE3NiwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OCwgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyNDgsIDE3NSwgMjM0LCAzMSwgNzAsIDE2LCAyMTUsIDg3LCA3MCwgMTYsIDIzMCwgNzcsIDIyMiwgCi0gICAgMjA3LCA3MCwgMTYsIDIyNSwgNzUsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MiwgNTgsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MSwgCi0gICAgMTEyLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxOSwgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTMsIDIyMiwgMjA3LCAKLSAgICA3MCwgMTYsIDIyNCwgMjExLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxNywgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTUsIAotICAgIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTgxLCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3NywgMjIyLCAyMDcsIDcwLCAxNiwgCi0gICAgMjQ4LCAxNzYsIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTc5LCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3OCwgMjIyLCAKLSAgICAyMDcsIDcwLCAxNiwgMjQ4LCAxNzUsIDIyMiwgMjA3LCAyNTEsIDEyOSwgMSwgMTc2LCAyNTEsIDEyOSwgMSwgMjQzLCAxNDIsIAotICAgIDI1MSwgMTI5LCAxLCAyMjksIDgyLCAyNTEsIDEyOSwgMSwgMjI5LCAyNywgMjUxLCAxMjksIDEsIDE5MSwgMjUxLCAxMjksIAotICAgIDEsIDI1MiwgMTk5LCAyNTEsIDEyOSwgMSwgMTg2LCAyNTEsIDEyOSwgMSwgMjMwLCAxMTAsIDI1MSwgMTI5LCAxLCAyMTcsIAotICAgIDEwNiwgMjUxLCAxMjksIDEsIDI0OCwgMjI5LCAyNTEsIDEyOSwgMSwgMTk4LCAyNTEsIDEyOSwgMSwgMjI4LCA0MSwgMjUxLCAKLSAgICAxMjksIDEsIDI1MSwgNDEsIDI1MSwgMTI5LCAxLCAyMzUsIDE0NywgMjUxLCAxMjksIDEsIDIyNywgMTY5LCAyNTEsIDEyOSwgCi0gICAgMSwgMjI3LCAxNjIsIDI1MSwgMTI5LCAxLCAxOTIsIDI1MSwgMTI5LCAxLCAyMDUsIDI1MSwgMTI5LCAxLCAyMzMsIDE0MSwgCi0gICAgMjUxLCAxMjksIDEsIDIxNCwgMjcsIDI1MSwgMTI5LCAxLCAyMDYsIDI1MSwgMTI5LCAxLCA2MSwgMjUxLCAxMjksIDEsIAotICAgIDE2MiwgMjUxLCAxMjksIDI1LCA1LCA3NCwgMjUxLCAxMjksIDI1LCA1LCA2OSwgMjUxLCAxMjksIDI1LCA1LCA3NiwgMjUxLCAKLSAgICAxMjksIDI1LCA1LCA3OCwgMjUxLCAxMjksIDI1LCA1LCAyNTQsIDI1MiwgMjUxLCAxMjksIDIyNiwgNjQsIDI1MSwgMTI5LCAKLSAgICAyNDUsIDE1MSwgNjQsIDIyMSwgMTc0LCAzOSwgODksIDEsIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzgsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3NywgMzksIDg5LCAxLCAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTc3LCAKLSAgICAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzgsIDM5LCA4OSwgMSwgMjI5LCA4MiwgMzksIDg5LCAxLCAxMjUsIDI1MSwgNDEsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE2NSwgMzksIDg5LCAxLCAxMjEsIDI1MSwgNDEsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIAotICAgIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE2NSwgMzksIDg5LCAxLCAyMjcsIDE2OSwgMzksIDg5LCAxLCAyMjMsIDE0MywgMzksIAotICAgIDg5LCAxLCAxMjUsIDIyMywgMTQxLCAzOSwgODksIDEsIDI0OCwgMjI5LCAzOSwgODksIDEsIDEyMSwgMjIzLCAxNDEsIDM5LCAKLSAgICA4OSwgMSwgMjIzLCAxNTIsIDM5LCA4OSwgMSwgMTI1LCAyMTcsIDEwNiwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA5LCAzOSwgCi0gICAgODksIDEsIDEyMSwgMjE3LCAxMDYsIDM5LCA4OSwgMSwgMTIxLCAyMTYsIDIwOSwgMzksIDg5LCAxLCAxOTgsIDM5LCA4OSwgCi0gICAgMSwgMjUyLCAxOTksIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAyMjUsIDE1MCwgMzksIDg5LCAxLCAKLSAgICAxMjUsIDI0NCwgMjA0LCAzOSwgODksIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyMSwgMjQ0LCAyMDQsIDM5LCA4OSwgMSwgCi0gICAgMTIxLCAyMjUsIDE1MCwgMzksIDg5LCAxLCAxODYsIDM5LCA4OSwgMSwgMTIxLCAxOTIsIDM5LCA4OSwgMSwgMTI1LCAxOTIsIAotICAgIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM5LCAzOSwgODksIDEsIDIzMywgMTQxLCAzOSwgODksIDEsIDIzMiwgCi0gICAgOTgsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAxMjUsIDIyMCwgMTA0LCAzOSwgODksIDEsIDEyNSwgMjE4LCAKLSAgICAyMjUsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxOTAsIDM5LCAKLSAgICA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCA4OSwgMSwgNzQsIDM5LCA4OSwgMSwgMjM2LCA0MCwgMzksIAotICAgIDg5LCAxLCA2OSwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIDg5LCAxLCAyNDUsIDIxNywgMzksIDg5LCAxLCAyMjYsIDE4NywgCi0gICAgMzksIDg5LCAxLCAyMzMsIDEyNiwgMzksIDg5LCAxLCAyNDIsIDEzOSwgMjA2LCAzOSwgODksIDExNywgNSwgMTQ3LCAyMDUsIAotICAgIDM5LCA4OSwgMTE3LCA1LCAxNDcsIDIzMywgMTQxLCAzOSwgODksIDExNywgNSwgMjMzLCAxNDIsIDIxNywgNTksIDIzMywgCi0gICAgMTE1LCAzOSwgODksIDUsIDIzMSwgMjA5LCAyMzQsIDIzNywgMjMzLCAxMTUsIDM5LCA4OSwgMTE3LCA1LCA0MCwgMjI5LCAKLSAgICA4MiwgMzksIDg5LCAxMTcsIDUsIDEyMSwgMTkxLCAzOSwgODksIDExNywgNSwgMTI1LCAyMjMsIDE0MiwgMTc3LCAxMjEsIAotICAgIDE5MSwgMzksIDg5LCAxMTcsIDUsIDE4NiwgMzksIDg5LCAxMTcsIDUsIDI1MiwgMTk5LCAzOSwgODksIDExNywgNSwgMjA2LCAKLSAgICAzOSwgODksIDUsIDIyMiwgMTIsIDM5LCA4OSwgMjUsIDUsIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwOSwgMjIxLCAyMjgsIAotICAgIDM5LCA4OSwgMjUsIDUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIDIxNywgNjUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIAotICAgIDc0LCAzOSwgODksIDI1LCA1LCAyMzYsIDQwLCAzOSwgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAKLSAgICAxMTcsIDM5LCA4OSwgMjUsIDUsIDY5LCAzOSwgODksIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzgsIDM5LCAKLSAgICA4OSwgMjUsIDUsIDIyNywgNSwgNTEsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTEzLCAzOSwgODksIDI1LCA1LCA3NiwgMzksIAotICAgIDg5LCAyNSwgNSwgMjU0LCAyNTIsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTg3LCAzOSwgODksIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjEwLCAzOSwgODksIDI1LCA1LCAyMjcsIDUsIDQ4LCAzOSwgODksIDUsIDIzMSwgCi0gICAgMjA5LCAyMzQsIDIzNiwgMzksIDg5LCA1LCAyMTYsIDMwLCAzOSwgODksIDUsIDIxNiwgMjksIDM5LCA4OSwgNSwgMjM0LCAKLSAgICAxMDMsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjcsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjYsIAotICAgIDM5LCA4OSwgNSwgMjIzLCAxOTEsIDI0MiwgNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIyMSwgMjU1LCAzOSwgODksIDUsIAotICAgIDIzNCwgMTAyLCAyMzQsIDIyMSwgMzksIDg5LCAzOCwgMjQ5LCAxMjMsIDI0NywgMTI4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAKLSAgICAyMTAsIDg2LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxMTEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDEwNSwgMzksIDg5LCAyNDEsIAotICAgIDUzLCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxNjEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5MCwgMzksIDg5LCAKLSAgICAyNDEsIDUzLCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxOTksIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5NiwgMzksIAotICAgIDg5LCAyNDEsIDUzLCAyMSwgMjAxLCAzOSwgODksIDg5LCAyMSwgMjEwLCA4NiwgMzksIDg5LCA4OSwgMjEsIDExMSwgMzksIAotICAgIDg5LCA4OSwgMjEsIDEwNSwgMzksIDg5LCA4OSwgMjEsIDE1OCwgMzksIDg5LCA4OSwgMjEsIDE2MSwgMzksIDg5LCA4OSwgCi0gICAgMjEsIDE5MCwgMzksIDg5LCA4OSwgMjEsIDE5NSwgMzksIDg5LCA4OSwgMjEsIDE5OSwgMzksIDg5LCA4OSwgMjEsIDE5NiwgCi0gICAgMzksIDg5LCA4OSwgMjEsIDIwMSwgMzksIDg5LCA1LCAyMTEsIDI0OSwgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAKLSAgICAyMjEsIDIxNywgMzksIDg5LCA1LCAyMzQsIDE2NiwgMzksIDg5LCA1LCAyNDAsIDIzOSwgMzksIDg5LCA1LCAyNDcsIDE0MiwgCi0gICAgMzksIDg5LCA1LCAyMjMsIDUyLCAyMjIsIDE4OSwgMjIzLCAxNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIxMSwgNzIsIDM5LCAKLSAgICA4OSwgNSwgMjM1LCAxMiwgMzksIDg5LCA1LCAyMzUsIDExLCAzOSwgODksIDUsIDIyMSwgMjI0LCAzOSwgODksIDUsIDIyMSwgCi0gICAgMjIzLCAzOSwgODksIDUsIDI0MiwgMTYsIDM5LCA4OSwgNSwgMjUxLCAzOCwgMTAyLCA1LCAyMTQsIDIwMCwgMjIzLCAzMywgCi0gICAgMTAyLCA1LCAyMTQsIDIwMCwgMjUxLCA5LCAxMDIsIDUsIDI1MCwgMTk0LCAxMDIsIDUsIDIxOCwgMTYsIDEwMiwgNSwgMjUxLCAKLSAgICAyNDEsIDEwMiwgMSwgMjU0LCAxOTMsIDEwMiwgMSwgMjU0LCAxOTQsIDIxNywgMTQsIDEwMiwgMSwgMjM2LCAzNiwgMTAyLCAKLSAgICAxLCAyMzYsIDM3LCAyMTcsIDE0LCAxMDIsIDEsIDIxNCwgMjAzLCAxMDIsIDEsIDIxNCwgMjA0LCAyMTcsIDE0LCAxMDIsIDEsIAotICAgIDIyMywgMTkxLCAyMjMsIDgyLCAxMDIsIDEsIDIyMywgMTkxLCAyMjMsIDgzLCAyMTcsIDE0LCAxMDIsIDEsIDIzMywgMTQyLCAKLSAgICAyMzMsIDMwLCAxMDIsIDEsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDEsIDI0NSwgMTg3LCAxMDIsIDEsIAotICAgIDI1NCwgMjA4LCAxMDIsIDEsIDIyNiwgMjE2LCAxMDIsIDEsIDIyNiwgMjE3LCAyMTcsIDE0LCAxMDIsIDEsIDE3NiwgMTAyLCAKLSAgICAxLCAyMzUsIDE5LCAyMzEsIDIxMiwgMTAyLCAxLCAyNDMsIDE0MiwgMTAyLCAxLCAyNDMsIDE0MywgMjQyLCAxNjgsIDEwMiwgCi0gICAgMSwgMjI5LCA4MiwgMTAyLCAxLCAyNTEsIDQxLCAxMDIsIDEsIDI1MSwgNDIsIDIzMywgMTI5LCAxMDIsIDEsIDIzNSwgMTQ3LCAKLSAgICAxMDIsIDEsIDIzNSwgMTQ4LCAyMzUsIDEyNCwgMTAyLCAxLCAyMjcsIDE2OSwgMTAyLCAxLCAyMTcsIDEwNywgMjMzLCA4MiwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNywgMjMwLCA3MiwgMjMxLCAyMTIsIDEwMiwgMSwgMjQ4LCAyMzAsIDIzMCwgNzIsIDI1NCwgMTUzLCAKLSAgICAxMDIsIDEsIDI0OCwgMjMwLCAyMzAsIDcyLCAyMzEsIDIxMiwgMTAyLCAxLCAyMjksIDIzNCwgMjIzLCAxNTUsIDEwMiwgMSwgCi0gICAgMjE3LCAxMDYsIDEwMiwgMSwgMjE3LCAxMDcsIDIxNywgMzYsIDEwMiwgMSwgMjQ4LCAyMjksIDEwMiwgMSwgMjQ4LCAyMzAsIAotICAgIDIzMSwgMjMwLCAxMDIsIDEsIDE5OCwgMTAyLCAxLCAxOTEsIDEwMiwgMSwgMjI2LCA5NCwgMjM0LCAyMzIsIDEwMiwgMSwgCi0gICAgMjUyLCAxOTksIDEwMiwgMSwgMjUyLCAyMDAsIDIzNCwgMTc4LCAxMDIsIDEsIDE4NiwgMTAyLCAxLCAxOTIsIDEwMiwgMSwgCi0gICAgMjA1LCAxMDIsIDEsIDIzMywgMTQxLCAxMDIsIDEsIDIxMiwgNjUsIDEwMiwgMSwgMjIyLCAzNiwgMjIyLCAyMiwgMTAyLCAxLCAKLSAgICAyMjIsIDM2LCAyMjEsIDIzNSwgMTAyLCAxLCAyMDYsIDEwMiwgMSwgMTYyLCAxMDIsIDUsIDIyMywgNzMsIDEwMiwgMjUsIDUsIAotICAgIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIxNCwgMTk5LCAxMDIsIDI1LCA1LCAyMTQsIDIwMCwgMjIxLCAyMzEsIDEwMiwgMjUsIAotICAgIDUsIDIxOCwgNDgsIDEwMiwgMjUsIDUsIDIxOCwgNDksIDIzNiwgMjgsIDEwMiwgMjUsIDUsIDIyMywgMTkxLCAyMjMsIDgyLCAKLSAgICAxMDIsIDI1LCA1LCAyMjMsIDE5MSwgMjIzLCA4MywgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjMzLCAxNDIsIDIzMywgMzAsIAotICAgIDEwMiwgMjUsIDUsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAxMDIsIDI1LCA1LCAKLSAgICAyMTcsIDY3LCAyMjMsIDgyLCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMjMsIAotICAgIDgzLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NywgMTAyLCAyNSwgNSwgMjI1LCAxODgsIDIxNywgMTQsIDEwMiwgCi0gICAgMjU1LCAzLCAyNTUsIDIsIDEwMiwgMSwgMjM1LCAxLCAyMjEsIDIzMCwgMTAyLCAxLCAyMzQsIDEwOCwgMjIxLCAyMzAsIAotICAgIDEwMiwgMSwgMjE1LCAzNCwgMjIxLCAyMzAsIDEwMiwgMSwgMjQ1LCAyMTEsIDIyMSwgMjMwLCAxMDIsIDEsIDIxNCwgMCwgCi0gICAgMjIxLCAyMzAsIDEwMiwgMSwgMjEwLCAxMDcsIDIyMSwgMjMwLCAxMDIsIDEsIDI1MywgMjE3LCAyMjEsIDIzMCwgMTAyLCAKLSAgICAyMSwgMjEwLCA4NiwgMTAyLCAyMSwgMTExLCAxMDIsIDIxLCAxMDUsIDEwMiwgMjEsIDE1OCwgMTAyLCAyMSwgMTYxLCAxMDIsIAotICAgIDIxLCAxOTAsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMTk5LCAxMDIsIDIxLCAxOTYsIDEwMiwgMjEsIDIwMSwgMTAyLCAKLSAgICAyMjYsIDMzLCAxMDIsIDIyNiwgNTksIDEwMiwgMjExLCAyMzgsIDEwMiwgMjUwLCAyNDQsIDIyNiwgNTIsIDEwMiwgMjUwLCAKLSAgICAyNDQsIDIxOSwgMTc0LCAxMDIsIDI1MCwgMjQ0LCAyMjYsIDYsIDEwMiwgMjI2LCA1OCwgMTAyLCAyOCwgMTYsIDI0NywgCi0gICAgMTM0LCAxMDIsIDI4LCAxNiwgMjQ4LCA1OSwgMTAyLCAyOCwgMTYsIDI0NiwgNzIsIDEwMiwgMjgsIDE2LCAyNDgsIDE4NCwgCi0gICAgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAyMTgsIDE2LCAxMDIsIDI4LCAxNiwgMjQ3LCAyMTMsIDEwMiwgMjgsIDE2LCAyNDgsIAotICAgIDIyMiwgMTAyLCAyOCwgMTYsIDI0OCwgNDEsIDEwMiwgMjgsIDE2LCAyNDgsIDIwNiwgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAKLSAgICAyNDMsIDY0LCAxMDIsIDI4LCAxNiwgMzgsIDIxNywgMTAsIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDksIDEwMiwgMjgsIAotICAgIDE2LCAzOCwgMjM0LCAxNzMsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzUsIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjgsIAotICAgIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzQsIDIsIDIzNSwgMTI4LCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTc2LCAyLCAKLSAgICAyMzUsIDEyOCwgMTAyLCAyOCwgMTYsIDM4LCAyNTIsIDQ1LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTcyLCAxMDIsIDI4LCAKLSAgICAxNiwgMjIyLCAyNTIsIDIwNCwgMjQ2LCA4MiwgMTAyLCAyOCwgMTYsIDIyMiwgMjUyLCAyMDQsIDI0OCwgMjIwLCAxMDIsIAotICAgIDI4LCAxNiwgMjIyLCAyNTIsIDI1MCwgOCwgMjE1LCAxMTIsIDEwMiwgMjgsIDE2LCAyMjIsIDI1MiwgMjUwLCA4LCAyMTcsIAotICAgIDc0LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjYsIDQ3LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjQsIAotICAgIDE0MiwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgMjI1LCA0MSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgCi0gICAgMjI1LCAyOSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDIwNCwgMjI1LCA2NCwgMjA3LCA1LCAyMjYsIDMwLCAyMDcsIDUsIAotICAgIDIyNiwgNDMsIDIwNywgNSwgMjI2LCAzOSwgMjA3LCAxLCA2MSwgMjA3LCAxLCA3NCwgMjA3LCAxLCA2OSwgMjA3LCAxLCAKLSAgICAyNTQsIDI1MiwgMjA3LCAxLCA3OCwgMjA3LCAxLCA3NiwgMjA3LCAxLCAyNDUsIDYzLCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAKLSAgICAyMjQsIDkxLCAyMDcsIDEsIDI0MywgMTQyLCAyMDcsIDEsIDIyOSwgODIsIDIwNywgMSwgMjUxLCA0MSwgMjA3LCAxLCAyMzUsIAotICAgIDE0NywgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAyMjcsIDE2OSwgMjA3LCAxLCAyMTcsIDEwNiwgMjA3LCAxLCAyNDgsIAotICAgIDIyOSwgMjA3LCAxLCAxOTgsIDIwNywgMSwgMTkxLCAyMDcsIDEsIDI0NCwgMjA0LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgCi0gICAgMjUyLCAxOTksIDIwNywgMSwgMTg2LCAyMDcsIDEsIDE5MiwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxNDEsIDIwNywgCi0gICAgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNywgNSwgMjI2LCAKLSAgICA1NiwgMjA3LCAxMTcsIDUsIDIyNiwgMzIsIDIwNywgMTE3LCA1LCAyMjYsIDI5LCAyMDcsIDI1LCA1LCAyMjYsIDQ2LCAyMDcsIAotICAgIDI1LCA1LCAyMjYsIDI4LCAyMDcsIDI1LCA1LCAyMjYsIDUwLCAyMDcsIDI1LCA1LCAyMjYsIDM4LCAyMDcsIDI1LCA1LCAKLSAgICAyMjYsIDU3LCAyMDcsIDI1LCA1LCAyMjYsIDQ4LCAyMDcsIDUsIDIyNiwgNjAsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgCi0gICAgMTE3LCA1LCAyMjUsIDI1MiwgMTg2LCAyMDcsIDExNywgNSwgMjI1LCAyNTIsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzgsIAotICAgIDIwNywgMSwgMjE3LCAyMzIsIDIwNywgMjEsIDIxMCwgODYsIDIwNywgMjEsIDExMSwgMjA3LCAyMSwgMTA1LCAyMDcsIDIxLCAKLSAgICAxNTgsIDIwNywgMjEsIDE2MSwgMjA3LCAyMSwgMTkwLCAyMDcsIDIxLCAxOTUsIDIwNywgMjEsIDE5OSwgMjA3LCAyMSwgCi0gICAgMTk2LCAyMDcsIDIxLCAyMDEsIDIwNywgMjUzLCAxODMsIDIwNywgMSwgMjIzLCA1NSwgMjA3LCAxLCAyMzMsIDEzLCAyMDcsIAotICAgIDEsIDI1MiwgMjYsIDIwNywgMSwgNDAsIDIzNSwgMjksIDIwNywgMSwgNDAsIDE5NCwgMjUyLCAxMjgsIDEsIDYxLCAyNTIsIAotICAgIDEyOCwgMSwgMjE5LCAxNjYsIDYxLCAyNTIsIDEyOCwgMSwgMTYyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE2MiwgMjUyLCAKLSAgICAxMjgsIDEsIDIzMSwgMTg2LCAxNjIsIDI1MiwgMTI4LCAxLCAyNTIsIDE5OSwgMjUyLCAxMjgsIDEsIDIzNCwgMjE4LCAyNTIsIAotICAgIDE5OSwgMjUyLCAxMjgsIDEsIDE5MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAxOTEsIDI1MiwgMTI4LCAxLCAxOTgsIDI1MiwgCi0gICAgMTI4LCAxLCAyMzEsIDE4NiwgMTk4LCAyNTIsIDEyOCwgMSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMTIsIAotICAgIDY1LCAyNTIsIDEyOCwgMSwgMjI2LCA3MSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgCi0gICAgMjE5LCAxNjYsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgMjM1LCAxNDcsIDI1MiwgMTI4LCAxLCAyNDgsIDIyOSwgMjUyLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDUsIDI1MiwgMTI4LCAxLCAxODYsIDI1MiwgMTI4LCAxLCAKLSAgICAyMTksIDE2NiwgMTg2LCAyNTIsIDEyOCwgMSwgMjE5LCAyOCwgMjE3LCAxMDYsIDI1MiwgMTI4LCAxLCAyMjgsIDYwLCAyMTcsIAotICAgIDEwNiwgMjUyLCAxMjgsIDEsIDIwNiwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDYsIDI1MiwgMTI4LCAxLCAyMzEsIDE4NiwgCi0gICAgMjA2LCAyNTIsIDEyOCwgMSwgMTkyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE5MiwgMjUyLCAxMjgsIDEsIDIyOSwgODIsIAotICAgIDI1MiwgMTI4LCAxLCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIyNywgCi0gICAgMTY5LCAyNTIsIDEyOCwgMSwgMjUxLCA0MSwgMjUyLCAxMjgsIDEsIDIyOSwgMTUzLCAyNTIsIDEyOCwgMSwgMjMxLCAxMjksIAotICAgIDI1MiwgMTI4LCAxLCA3NCwgMjUyLCAxMjgsIDEsIDY5LCAyNTIsIDEyOCwgNSwgMjE2LCAzNCwgMjUyLCAxMjgsIDI1LCA1LCAKLSAgICA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyMjYsIDcxLCA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyNDUsIDIxNywgMjUyLCAxMjgsIAotICAgIDI1LCA1LCA3NCwgMjUyLCAxMjgsIDI1LCA1LCAyMzQsIDIxOCwgNzQsIDI1MiwgMTI4LCAyNSwgNSwgNzgsIDI1MiwgMTI4LCAKLSAgICAyNSwgNSwgMjM0LCAyMTgsIDc4LCAyNTIsIDEyOCwgMjUsIDUsIDY5LCAyNTIsIDEyOCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgCi0gICAgMTY2LCAyMDYsIDI1MiwgMTI4LCAxMTcsIDUsIDIyOSwgODQsIDI1MiwgMTI4LCAxMTcsIDUsIDI0MiwgNjcsIDI1MiwgMTI4LCAKLSAgICAyMjYsIDQxLCAyNTIsIDEyOCwgMjI2LCAzNywgMjUyLCAxMjgsIDE2LCAyNTEsIDI0OSwgMjI5LCAyMzQsIDIzMSwgNDIsIAotICAgIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIyNSwgNjcsIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIzNSwgNTQsIDI1MiwgCi0gICAgMTI4LCAxNiwgMjUxLCAyNDksIDIyNiwgNDEsIDE5NywgMSwgMTc2LCAxOTcsIDEsIDIzNCwgNDUsIDE5NywgMSwgMjM0LCAKLSAgICAxMzgsIDE5NywgMSwgMjQzLCAxNDIsIDE5NywgMSwgMjQyLCAxOTMsIDE5NywgMSwgMjI5LCA4MiwgMTk3LCAxLCAyNTEsIAotICAgIDQxLCAxOTcsIDEsIDI1MCwgMTY1LCAxOTcsIDEsIDIzNSwgMTQ3LCAxOTcsIDEsIDIyNywgMTY5LCAxOTcsIDEsIDIxNywgCi0gICAgMTA2LCAxOTcsIDEsIDIxNiwgMjA5LCAxOTcsIDEsIDI0OCwgMjI5LCAxOTcsIDEsIDE5OCwgMTk3LCAxLCAxOTEsIDE5NywgCi0gICAgMSwgMjI1LCA0NSwgMTk3LCAxLCAyMjUsIDE1MCwgMTk3LCAxLCAyNDQsIDIwNCwgMTk3LCAxLCAyNDQsIDgzLCAxOTcsIDEsIAotICAgIDI1MiwgMTk5LCAxOTcsIDEsIDI1MSwgMjMwLCAxOTcsIDEsIDE4NiwgMTk3LCAxLCAyMzAsIDE3MywgMTk3LCAxLCAyMTUsIAotICAgIDE4NCwgMTk3LCAxLCAyMTUsIDE3NiwgMTk3LCAxLCAyNDYsIDQ2LCAxOTcsIDEsIDE5MiwgMTk3LCAxLCAyMDUsIDE5NywgMSwgCi0gICAgMjMzLCAxNDEsIDE5NywgMSwgMTYyLCAxOTcsIDEsIDI0MSwgMTYwLCAxOTcsIDEsIDIxNCwgMjcsIDE5NywgMSwgMjA2LCAKLSAgICAxOTcsIDEsIDIyMCwgMTA0LCAxOTcsIDEsIDIxMiwgNjUsIDE5NywgMSwgNjEsIDE5NywgMjE4LCA3NCwgMSwgMTkyLCAxOTcsIAotICAgIDIxOCwgNzQsIDEsIDIwNSwgMTk3LCAyNSwgNSwgMjU1LCA4MiwgMTk3LCAyNSwgNSwgNzQsIDE5NywgMjUsIDUsIDc4LCAKLSAgICAxOTcsIDI1LCA1LCAyMjYsIDE4NywgMTk3LCAyNSwgNSwgNjksIDE5NywgMjUsIDUsIDIxNCwgMTE4LCAxOTcsIDI1LCA1LCAKLSAgICA3NiwgMTk3LCAxMTcsIDUsIDIzNSwgMjksIDE5NywgMTE3LCA1LCAxOTQsIDE5NywgMTE3LCA1LCAxNTYsIDE5NywgMTE3LCAKLSAgICA1LCAyMzAsIDMwLCAxOTcsIDExNywgNSwgMjI2LCAxMDksIDE5NywgMTE3LCA1LCAxNTMsIDE5NywgMTE3LCA1LCAyMTcsIAotICAgIDE1MywgMTk3LCAxMTcsIDUsIDIyNywgMTQ2LCAxOTcsIDExNywgNSwgMjM0LCAyMzYsIDE5NywgNSwgMjIzLCAxNTMsIDE5NywgCi0gICAgNSwgMjI3LCAyMDksIDE5NywgMjI0LCAxNDQsIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyMjcsIDE1NiwgMjE2LCAxMjEsIAotICAgIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyNTAsIDE3MiwgMTk3LCAyMjQsIDE0NCwgMjE1LCAxNzEsIDI1MCwgMTcyLCAKLSAgICAxOTcsIDIyNCwgMTQ0LCAyMTUsIDE3MCwgMTk3LCAyMSwgMjEwLCA4NiwgMTk3LCAyMSwgMTExLCAxOTcsIDIxLCAxMDUsIAotICAgIDE5NywgMjEsIDE1OCwgMTk3LCAyMSwgMTYxLCAxOTcsIDIxLCAxOTAsIDE5NywgMjEsIDE5NSwgMTk3LCAyMSwgMTk5LCAKLSAgICAxOTcsIDIxLCAxOTYsIDE5NywgMjEsIDIwMSwgMTk3LCAxLCAyMTUsIDE1NywgMTk3LCAxLCAyMTUsIDE0NSwgMTk3LCAxLCAKLSAgICAyNDgsIDE0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTExLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxMDUsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE1OCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAyMSwgMTYxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTAsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE5NSwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTk5LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTYsIDIyNiwgMjE0LCAyNTAsIAotICAgIDExMSwgMjEsIDIwMSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNTMsIDIxNCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDIyNSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIAotICAgIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDE4NywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MCwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDQ0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NSwgNDUsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjU1LCA0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDM4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIAotICAgIDEsIDIzMiwgMjQ3LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNSwgMTc4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNiwgCi0gICAgNDEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxOTcsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxODYsIAotICAgIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMyLCAxMDMsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMjEsIDIyNiwgCi0gICAgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMTksIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAxNjgsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjE0LCAxMTEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMzLCA2NCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAxLCAyNDUsIDExNiwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDIyMCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNDUsIDE1OCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDk0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzMiwgCi0gICAgMTYyLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNiwgMTQxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNywgMCwgMjI2LCAKLSAgICAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDEyOSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDIyNiwgMjI2LCAyMTQsIAotICAgIDI1MCwgMTExLCAyMzAsIDEwOCwgMjE1LCAxMjIsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjQzLCAxMzcsIDIxNSwgMTIzLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIzMCwgMTA2LCAyMTUsIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjMsIDk1LCAyMjYsIAotICAgIDIxNCwgMjUwLCAxMTEsIDIyNSwgMTQ4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDI1NCwgMjE3LCAyMjYsIDIxNCwgMjUwLCAKLSAgICAxMTEsIDIyNCwgMTQ0LCAyMzAsIDEwMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjQsIDE0NCwgNTIsIDIzMCwgMTAzLCAyMDcsIAotICAgIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjE4LCA5LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjI2LCA0MiwgMjA3LCAyMjQsIAotICAgIDE0NCwgMjUxLCAyNDksIDIyNCwgMTMyLCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjUxLCAyNywgMjA3LCAyMjQsIDE0NCwgCi0gICAgMjUxLCAyNDksIDIzMywgMTQsIDIyMSwgMjI3LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjM1LCAxOSwgMjIxLCAyMjcsIAotICAgIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyNDgsIDIzMCwgMjIxLCAyMjcsIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAKLSAgICAyNTIsIDIwMCwgMjIxLCAyMjcsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjE2LCAyMTMsIDI1MiwgMTM4LCAyMjAsIDc5LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMjQsIDIwMSwgMjEzLCAyNTIsIDUsIDIyOCwgMjE0LCAyMTMsIDI1MiwgNSwgMjExLCA4MCwgMjMwLCAKLSAgICAyMjcsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjU0LCAyMjIsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgCi0gICAgMjUyLCAxMzgsIDIxMSwgODAsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDIzNCwgMjA0LCAKLSAgICAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDEwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgCi0gICAgMjM0LCAyMDQsIDIzNSwgMjUwLCAyMTgsIDIsIDIyMSwgMTk5LCAyMTMsIDI1MiwgMTM4LCA1MiwgMjE4LCAxLCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMTUsIDIxMiwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIwNCwgMjU0LCA4NSwgMjEzLCAyNTIsIAotICAgIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIDEzNCwgMTcwLCA1MSwgCi0gICAgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDMsIDIzNCwgMjE1LCAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTMsIAotICAgIDIxMiwgMjM1LCAyNTAsIDIxOCwgMSwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDEsIDIxMywgMjUyLCA1LCAyMTMsIAotICAgIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDUyLCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAKLSAgICAyMTMsIDE0OCwgMjU0LCA4NSwgMjEzLCAyNTIsIDUsIDIyMywgNTIsIDIxMywgMTQ4LCAyNTQsIDg1LCAyMTMsIDI1MiwgNSwgCi0gICAgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc4LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgODYsIDIsIDIxNywgCi0gICAgNzgsIDIxMywgMjUyLCA1LCAyNTQsIDg0LCAyNTQsIDk5LCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjUyLCAxNzQsIDIxMywgCi0gICAgMjUyLCA1LCAyNTQsIDg0LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjE0LCAyMSwgMiwgMjE3LCA3OCwgMjEzLCAKLSAgICAyNTIsIDUsIDIxNiwgNjksIDIxMywgMjUyLCA1LCAyNDEsIDE5OCwgMjAwLCAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjAwLCAKLSAgICAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjIyLCAxNDQsIDIwMCwgMjU0LCA4MywgMjEzLCAyNTIsIDUsIDI1NCwgODQsIDIxNCwgCi0gICAgMjIzLCAyMzAsIDk1LCAyMTMsIDI1MiwgNSwgMjU0LCAyOCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg5LCAyNTQsIDI4LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyNTEsIDEwLCA0OCwgMjEzLCAyNTIsIDUsIDIzNSwgMTA4LCAyMTMsIDI1MiwgNSwgMjE0LCAxNjEsIDcsIAotICAgIDEsIDQsIDYsIDYxLCA3LCAxLCA0LCA2LCAyNTQsIDI1MiwgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAyNTIsIDcsIDEsIDQsIAotICAgIDYsIDI1MiwgMTQyLCAyNTMsIDE2NiwgNywgMSwgNCwgNiwgMjUxLCA3NCwgNywgMSwgNCwgNiwgMjQ5LCA2OCwgNywgMSwgNCwgCi0gICAgNiwgMjQ1LCA2NywgNywgMSwgNCwgNiwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIDIwNCwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIAotICAgIDc0LCA3LCAxLCA0LCA2LCAyMzUsIDE1MCwgNywgMSwgNCwgNiwgMjM1LCAyOSwgNywgMSwgNCwgNiwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCAxLCA0LCA2LCAxOTQsIDcsIDEsIDQsIDYsIDIyMywgNTIsIDIzMCwgMzAsIDcsIDEsIDQsIDYsIDc4LCA3LCAxLCAKLSAgICA0LCA2LCAyMDQsIDc4LCA3LCA0LCAxLCAyMTksIDE4OSwgNzgsIDcsIDQsIDEsIDIxOSwgMTg5LCAyMDQsIDc4LCA3LCA0LCAKLSAgICAxLCAyMTksIDE4OSwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMjE1LCA5NCwgMjI2LCAyMzgsIDcsIDEsIDQsIDYsIDIyNiwgCi0gICAgMTM4LCA3LCA0LCAxLCAyMTYsIDE1LCAxNjMsIDc4LCA3LCA0LCAxLCAyNTEsIDE4MywgMTYzLCA3OCwgNywgMSwgNCwgNiwgCi0gICAgMjI2LCAxMDksIDcsIDEsIDQsIDYsIDIyMywgNTIsIDE1MywgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTUzLCA3LCAxLCA0LCA2LCAKLSAgICAyMTcsIDE1MywgNywgMSwgNCwgNiwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCA2OSwgNywgNCwgMSwgMjE5LCAxODksIDI0OCwgCi0gICAgOCwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCAyMTUsIDk0LCAxOTQsIDcsIDEsIDQsIDYsIDIxNCwgMTA1LCA3LCAxLCA0LCA2LCAKLSAgICAyMTIsIDk4LCA3LCAxLCA0LCA2LCAyMTAsIDE1OSwgNywgMSwgNCwgNiwgMjQ1LCAxNiwgNywgMSwgMjEzLCAxMzUsIDIzMywgCi0gICAgODgsIDIxOCwgMjUyLCA3LCAxLCAyNTQsIDIwNSwgMjYsIDEsIDQsIDYsIDI0MywgMTE0LCAyNiwgMSwgNCwgNiwgMjMzLCAKLSAgICAxMDQsIDI2LCAxLCA0LCA2LCAyMjUsIDExMSwgMjYsIDEsIDQsIDYsIDIyMywgNDAsIDI2LCAxLCA0LCA2LCAyMjQsIDE2NCwgCi0gICAgMzMsIDEsIDQsIDYsIDI0NSwgMTgyLCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI1MiwgNTgsIDEsIDYsIDI1MywgCi0gICAgMTY2LCA1OCwgMSwgNiwgMjUyLCAxNDIsIDI1MywgMTY2LCA1OCwgMSwgNiwgMjQ5LCA2OCwgNTgsIDEsIDYsIDc2LCA1OCwgCi0gICAgMSwgNiwgMjIzLCA1MiwgNzYsIDU4LCAxLCA2LCAyNDMsIDIwOSwgNTgsIDEsIDYsIDI0MiwgNjcsIDU4LCAxLCA2LCA3NCwgCi0gICAgNTgsIDEsIDYsIDIzNSwgMTUwLCA1OCwgMSwgNiwgMjM1LCAyOSwgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIDE5NCwgNTgsIAotICAgIDEsIDYsIDIzMCwgMzAsIDU4LCAxLCA2LCAyMjMsIDUyLCAyMzAsIDMwLCA1OCwgMSwgNiwgNzgsIDU4LCAxLCA2LCAyMjYsIAotICAgIDEzOCwgNTgsIDEsIDYsIDIyNiwgMTA5LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTMsIDU4LCAxLCA2LCA2OSwgCi0gICAgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgNCwgMjU0LCAKLSAgICAxNTEsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI1MiwgNTgsIDEsIDQsIDI1MywgMTY2LCA1OCwgMSwgNCwgMjQ5LCA2OCwgCi0gICAgNTgsIDEsIDQsIDc2LCA1OCwgMSwgNCwgMjIxLCAxOTcsIDU4LCAxLCA0LCAyMDQsIDc2LCA1OCwgMSwgNCwgMjE1LCA5NCwgCi0gICAgMjA0LCA3NiwgNTgsIDEsIDQsIDI0MywgMjA5LCA1OCwgMSwgNCwgMjE1LCA5NCwgNzQsIDU4LCAxLCA0LCAyMzUsIDI5LCAKLSAgICA1OCwgMSwgNCwgMTk0LCA1OCwgMSwgNCwgMjQ1LCAxNDYsIDU4LCAxLCA0LCA3OCwgNTgsIDEsIDQsIDIwNCwgNzgsIDU4LCAKLSAgICAxLCA0LCAyMTYsIDE1LCAxNjMsIDc4LCA1OCwgMSwgNCwgMjUxLCAxODMsIDE2MywgNzgsIDU4LCAxLCA0LCAyMjYsIDEwOSwgCi0gICAgNTgsIDEsIDQsIDIxNywgMTUzLCA1OCwgMSwgNCwgNjksIDU4LCAxLCA0LCAyMTksIDE4OSwgNjksIDU4LCAxLCA0LCAyMTUsIAotICAgIDk0LCAxOTQsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMjA1LCA1OCwgMSwgNCwgMjUyLCAzNCwgNTgsIAotICAgIDEsIDQsIDI2LCAyNDMsIDExNCwgNTgsIDEsIDQsIDI0OCwgNjIsIDU4LCAxLCA0LCAyNiwgMjI1LCAxMzYsIDU4LCAxLCA0LCAKLSAgICAyNTAsIDExOCwgNywgMjE4LCA2NiwgNCwgMSwgNzQsIDcsIDIxOCwgNjYsIDQsIDEsIDE1MywgNywgMjE4LCA2NiwgNCwgMSwgCi0gICAgNjksIDcsIDIxOCwgNjYsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjUyLCAzNCwgMjYsIDIxOCwgNjYsIAotICAgIDQsIDEsIDI0MywgMTE0LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjIzLCA0MCwgMjYsIDIxOCwgNjYsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICAyNiwgMjE4LCA2NiwgNCwgMSwgMjUwLCAxMTgsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCA1NywgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NiwgMjIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMiwgOTQsIAotICAgIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyMTAsIDE2MCwgCi0gICAgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQzLCAyMDksIDU4LCAxLCAzMywgMjQ1LCAxNTgsIDcsIDQsIAotICAgIDEsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE2LCAyMTIsIDIsIDIxOCwgMTA5LCA3LCA0LCA2LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTkzLCAyLCA5MSwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA0LCA2LCAKLSAgICAxLCAxMDQsIDIsIDkxLCA3LCA0LCAxLCAyMTQsIDE1OCwgMiwgOTEsIDcsIDQsIDEsIDU3LCAyLCAyMjYsIDcwLCAxMDMsIDcsIAotICAgIDQsIDEsIDI0OSwgNjksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAKLSAgICAxLCAyNDMsIDIxMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjMwLCAzMSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMjMsIDIyNywgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDI0NSwgODQsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjExLCAxNzksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI0OSwgCi0gICAgNjksIDIsIDI0MSwgNTksIDIyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjA0LCAKLSAgICAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjIzLCA1MiwgMjA0LCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjIxLCAxOTgsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjA0LCAxNDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCA4NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjIzLCA1OCwgMTAzLCA1OCwgMSwgNCwgMjE1LCAKLSAgICA5NCwgMjU0LCAxNTEsIDU4LCAxLCA0LCAyNTEsIDc0LCA1OCwgMSwgNCwgMjUxLCA3NSwgMiwgMjQ5LCAxMDgsIDU4LCAxLCAKLSAgICA0LCAyNDUsIDY3LCA1OCwgMSwgNCwgMjIzLCA1MiwgMjA0LCA3NiwgNTgsIDEsIDQsIDI0NSwgMTQsIDU4LCAxLCA0LCAyNDcsIAotICAgIDEyNywgMjM1LCAxNTEsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwOSwgNTgsIDEsIDQsIDIxNSwgOTQsIDI0MiwgCi0gICAgNjcsIDU4LCAxLCA0LCAyNDAsIDE2MSwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE5MiwgNTgsIDEsIDQsIDYsIDc0LCA1OCwgCi0gICAgMSwgNCwgNiwgMjQwLCAxNjEsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA1OCwgMSwgNCwgMjMzLCAKLSAgICAxNTUsIDIsIDIyMywgNTgsIDEwMywgNTgsIDEsIDQsIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDU4LCAxLCA0LCA2LCAKLSAgICAxNTYsIDU4LCAxLCA0LCAyMzIsIDU1LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMzIsIDU1LCAyLCAyMDAsIDIzMywgCi0gICAgNDIsIDU4LCAxLCA0LCAyMzAsIDMxLCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgMjMwLCAzMSwgMiwgMjIzLCA1OCwgMTAzLCAKLSAgICA1OCwgMSwgNCwgNiwgMjMwLCAzMCwgNTgsIDEsIDQsIDI1MiwgMTQyLCA3OCwgNTgsIDEsIDQsIDIyNSwgMTM2LCA1OCwgMSwgCi0gICAgNCwgMjIyLCA5NCwgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA4MywgNTgsIDEsIDQsIDIxNywgMTU0LCAyLCAyMjYsIDcwLCAKLSAgICAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgMSwgNCwgNiwgNjksIDU4LCAxLCA0LCAKLSAgICAyMTQsIDEwNiwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjE0LCAxMDUsIDU4LCAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIAotICAgIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgMiwgMjQ5LCAxMDgsIDU4LCAxLCA0LCAKLSAgICAyNDUsIDE2LCA1OCwgMSwgNCwgMjE2LCAxODAsIDM4LCAyNDYsIDEyNiwgMjQyLCAxNDQsIDI1NSwgMjMsIDM4LCAyNDYsIAotICAgIDEyNiwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDIxOSwgNzEsIDUxLCAzOCwgMjE4LCA3LCA3OSwgMzgsIDIzMSwgMjM2LCAzOCwgCi0gICAgMjQyLCAxNDEsIDM4LCAyMzEsIDIzNCwgMzgsIDI1NSwgMTAsIDM4LCAyNDIsIDE0MiwgMzgsIDI1NSwgMTEsIDM4LCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgNTEsIDM4LCAyNTEsIDE1MywgMzgsIDIzMSwgMjM1LCAzOCwgNTIsIDI1MCwgMzksIDQ4LCAzOCwgCi0gICAgMjI2LCAyMjksIDQ4LCAzOCwgMjEwLCAzNSwgNTEsIDM4LCAyMzUsIDE3OSwgNTEsIDM4LCAyMTQsIDE1MSwgNDgsIDM4LCAKLSAgICAyMTQsIDEzNCwgNDgsIDM4LCA3LCA0LCAxLCAyNDQsIDcxLCAyMDQsIDExNiwgNDgsIDM4LCA3LCA0LCAxLCAyNTQsIDI1MiwgCi0gICAgMzgsIDcsIDQsIDEsIDI1NCwgODEsIDM4LCA3LCA0LCAxLCAyNTMsIDE4NCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDI1MCwgCi0gICAgMTkxLCAzOCwgNywgNCwgMSwgMjM1LCAyMjAsIDI0OSwgNjgsIDM4LCA3LCA0LCAxLCAyNDUsIDY3LCAzOCwgNywgNCwgMSwgCi0gICAgMjQzLCAyMDksIDM4LCA3LCAxLCA0LCA2LCAyNDMsIDIwOSwgMzgsIDcsIDQsIDEsIDIzNSwgMjksIDM4LCA3LCA0LCAxLCAKLSAgICAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxOTQsIDM4LCA3LCA0LCAxLCAyMzAsIDMwLCAzOCwgCi0gICAgNywgMSwgNCwgNiwgMjMwLCAzMCwgMzgsIDcsIDEsIDQsIDYsIDE1MywgMzgsIDcsIDQsIDEsIDIyMywgMjI3LCAyMjIsIAotICAgIDE4OCwgMzgsIDcsIDQsIDEsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMTAsIAotICAgIDE1OSwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTUsIDUxLCAzOCwgMjU0LCAxNTYsIDEyOCwgMjE2LCA0MywgNTEsIDM4LCAKLSAgICA0MywgMjU0LCAyLCA0OCwgMzgsIDQ0LCAyNTQsIDIsIDIyLCAxMjQsIDI1NCwgMiwgNTEsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjIyLCAyMzcsIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA1MSwgNywgNiwgMSwgNTcsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgNTcsIDIsIDU5LCA0OCwgNywgNiwgMSwgNTcsIDIsIDU5LCA1MSwgNywgNCwgMSwgNTcsIDIsIDU5LCA1MSwgNywgCi0gICAgNiwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMjUxLCAKLSAgICA3NSwgMiwgMjUwLCAxOTIsIDIyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkyLCAyMiwgMTQyLCA3LCA2LCAKLSAgICAxLCAyNDksIDY5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgCi0gICAgNTksIDUxLCA3LCA0LCAxLCAyNDksIDY5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDIzMiwgMjIwLCA1MSwgCi0gICAgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAyNTAsIDE5MSwgNywgNCwgCi0gICAgMSwgMjQ5LCA2OSwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyNDksIAotICAgIDY5LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjE2LCA5MCwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgMjE2LCA5MCwgCi0gICAgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxOTIsIDIyLCAyNTEsIDE1NCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE5MiwgCi0gICAgMjIsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDUsIDE1LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgMTUsIDIsIDU5LCA0OCwgCi0gICAgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjMxLCAyMzcsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQyLCA2OCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCA1OSwgCi0gICAgNTEsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjUxLCAxNTUsIDUxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTEsIAotICAgIDE1NSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIxNiwgCi0gICAgOTAsIDUxLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIAotICAgIDI0OCwgMTAsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTQyLCA3LCAKLSAgICA2LCAxLCAyMzUsIDMwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjM1LCAzMCwgCi0gICAgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCA1OSwgMjUyLCA1MSwgCi0gICAgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgNTksIDI1MiwgNTEsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIAotICAgIDIzMiwgNTUsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDU1LCAyLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1NSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzIsIAotICAgIDU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgNTksIDQ4LCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIAotICAgIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIAotICAgIDkwLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgCi0gICAgMjIsIDI0OCwgOSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjQ4LCA5LCA3LCA2LCAxLCAxNDQsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAKLSAgICAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMjI2LCAKLSAgICAxMTAsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDU5LCAKLSAgICA1MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCAyNTIsIDUxLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIyMywgMjI3LCAKLSAgICAyLCA1OSwgMjUyLCA1MSwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCA1OSwgNTEsIAotICAgIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIAotICAgIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQzLCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDk0LCAKLSAgICAyLCAyNTAsIDI0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDcsIAotICAgIDQsIDEsIDIyMiwgOTQsIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTcsIAotICAgIDE1NCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgCi0gICAgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAKLSAgICAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNiwgMSwgMTA0LCAKLSAgICAyLCAyNTAsIDM5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCAKLSAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIAotICAgIDIyLCAyNDgsIDksIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDgsIDksIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAKLSAgICAxODQsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxODQsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDYsIDEsIAotICAgIDIxMiwgOTksIDIsIDI0OCwgOSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAKLSAgICA1OSwgNDgsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDYsIAotICAgIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgMTYwLCAKLSAgICAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgCi0gICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgCi0gICAgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDIxMSwgCi0gICAgMTE4LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDExNiwgMiwgNDQsIDE2MywgMjIyLCAyMzYsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMjIwLCA3OCwgMjIyLCA5MywgNywgNCwgMSwgMjQ4LCA2MiwgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAxNDIsIDcsIDQsIDEsIAotICAgIDExNiwgMiwgMjUwLCAzOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDQsIAotICAgIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjUxLCAxNTUsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDI0MSwgNTksIDQ4LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgCi0gICAgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMTg0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAxODQsIDcsIAotICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgNTksIDUxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDEsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMjUwLCAzOSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDI1MCwgMzksIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAxODQsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAxNDIsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAKLSAgICAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgCi0gICAgMCwgMjIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCAKLSAgICAwLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIDAsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTA0LCAyLCAKLSAgICAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNiwgCi0gICAgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA2LCAxLCAKLSAgICAxMDQsIDIsIDI0MSwgMCwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDIxMSwgMTE4LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyMTEsIDExOCwgCi0gICAgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQxLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNCwgCi0gICAgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNiwgMSwgMjMwLCAyMjgsIDIzMiwgMTkxLCA3LCA0LCAxLCAyMzAsIDIyOCwgMjMyLCAKLSAgICAxOTEsIDcsIDYsIDEsIDIzMCwgMjI4LCAyMTQsIDEwNSwgNywgNCwgMSwgMjMwLCAyMjgsIDIxNCwgMTA1LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExOCwgMiwgMjMyLCAxMjksIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1NywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAKLSAgICAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgCi0gICAgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTcsIAotICAgIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIAotICAgIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgCi0gICAgMTMsIDI2LCA2LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyNDUsIAotICAgIDcyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAKLSAgICAxNzgsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYxLCAyNiwgCi0gICAgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAKLSAgICAyMjQsIDE1NywgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjM1LCAxOTMsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAKLSAgICAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTcsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIAotICAgIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgCi0gICAgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIAotICAgIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjI2LCAyMDQsIAotICAgIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgCi0gICAgMTYxLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIAotICAgIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIAotICAgIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAKLSAgICAyNTQsIDE1MiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgMTA5LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgCi0gICAgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDQsIAotICAgIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAKLSAgICAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAKLSAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAotICAgIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgCi0gICAgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTUsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAKLSAgICAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNCwgMSwgMjQ1LCA3MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjEwLCAyMTksIAotICAgIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIAotICAgIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE3MCwgCi0gICAgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIAotICAgIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwNiwgCi0gICAgMiwgMjQ4LCAxNjIsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIAotICAgIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgCi0gICAgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAKLSAgICAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIAotICAgIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIAotICAgIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIAotICAgIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjI0LCAKLSAgICAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzksIDIyLCAyMjQsIDE3MCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgCi0gICAgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxMywgMTIwLCAyNiwgNiwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDIzMSwgMjM3LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAotICAgIDE1MiwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNzAsIDI2LCAyMzQsIDgsIDI2LCAyMjQsIAotICAgIDE3MCwgMjYsIDIyNCwgMTU3LCAyNiwgMjI1LCAxNzgsIDI2LCAyNDgsIDQsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCA3MiwgMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNSwgMTc4LCAyNiwgCi0gICAgNCwgMSwgMjQ1LCA3MiwgMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAotICAgIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNzAsIDI2LCAyMjQsIDE1OCwgMjIsIAotICAgIDIxNCwgMTMsIDI2LCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIAotICAgIDEsIDIzNSwgMTkzLCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkzLCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNiwgMTE0LCAKLSAgICAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIzMSwgMjM3LCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCAyNDgsIAotICAgIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgMjYsIDQsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgNCwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjIzLCA0MSwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMjMsIDQxLCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjIzLCA0MSwgMiwgMjQ4LCAxNjEsIDI2LCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCA0LCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgCi0gICAgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc5LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIAotICAgIDYsIDEsIDIyNiwgMjA2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgCi0gICAgMjI2LCAyMDYsIDIsIDIyNCwgMTcwLCAyNiwgMjI2LCAxMTQsIDI2LCAyNDgsIDE2MSwgMjQ1LCAxNTksIDIyNCwgMzAsIAotICAgIDI0NSwgMTY4LCAyMjQsIDMwLCAyNDUsIDE1OSwgMjE5LCAyMCwgMjQ1LCAxNjgsIDIxOSwgMjAsIDIxNiwgMTQyLCAyMTksIAotICAgIDIwLCAyNDQsIDE3LCAyMTksIDIwLCAyMTksIDEyNSwgMjE5LCAyMCwgMjQ0LCAxMjAsIDIxOSwgMjAsIDIyNCwgMTQ0LCAKLSAgICAyMTksIDIwLCAyMTYsIDE3MSwgMjE5LCAyMCwgMjQyLCA0MiwgMjE5LCAyMCwgMjEwLCA4NywgMjExLCAyNDUsIDIxOSwgMjAsIAotICAgIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDcyLCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCA2OSwgMjMzLCA0NCwgNzksIDIyMiwgCi0gICAgMjQ2LCA3OSwgMjQwLCAxNzUsIDIyOCwgNzMsIDI0MCwgMTc1LCAyNDQsIDEyMCwgMjQ4LCAxNjQsIDI0NSwgMTU5LCAyNDgsIAotICAgIDE2NCwgMjQ1LCAxNjgsIDI0OCwgMTY0LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIDIxOSwgNTIsIDEyMSwgMjMyLCAyMTksIAotICAgIDQzLCAyMTksIDE1NywgMjI0LCAxLCA3OSwgNDQsIDIxOSwgMTU3LCAyMjQsIDEsIDc5LCAyMTksIDE1NywgMjMyLCAxMTUsIAotICAgIDIyNCwgMSwgNzksIDIxOSwgMTU3LCAyNDEsIDE3MCwgMjI0LCAxLCA3OSwgNDMsIDUyLCAyMjQsIDEsIDc5LCA0NCwgNTIsIAotICAgIDIyNCwgMSwgNzksIDUyLCAyMzIsIDExNSwgMjI0LCAxLCA3OSwgNTIsIDI0MSwgMTcwLCAyMjQsIDEsIDc5LCAyNDgsIDIxMywgCi0gICAgNTIsIDI0OCwgMjEzLCAyNTEsIDEyMSwgMjE1LCAyMjMsIDI1MSwgMTIxLCAxMjMsIDU5LCAyMzMsIDYyLCAxMTMsIDU5LCAKLSAgICAyMzMsIDYyLCAyMDMsIDI0NSwgMTcxLCAyNDAsIDE3MywgMjI1LCAxMywgMjMyLCAyMjAsIDIyMCwgMTM5LCAyMjYsIDE5LCAKLSAgICAyMjAsIDEzOSwgMjMzLCA0NCwgMjQ1LCAxNjYsIDIyMiwgMjQ2LCAyNDUsIDE2NiwgMjI0LCAyNDksIDI0NywgMjA0LCAyNDQsIAotICAgIDI3LCAyMzMsIDQ0LCAyMjYsIDEyMSwgMjIyLCAyNDYsIDIyNiwgMTIxLCAyMjksIDE5OSwgMjI4LCA3OCwgMjE5LCAyMCwgCi0gICAgMjI1LCAxODYsIDIzMCwgMTk4LCA1MCwgMjI1LCAxODYsIDIxNiwgMjQ5LCAyMTYsIDE0OSwgNTAsIDIyNCwgMTkzLCA1MiwgCi0gICAgMjI0LCAxOTMsIDIxNSwgMjEyLCAyMjQsIDE5MywgMjIzLCA1MiwgMjI0LCAxOTMsIDIyMywgNTIsIDUyLCAyMjQsIDE5MywgCi0gICAgMjIzLCA1MiwgMjE1LCAyMTIsIDIyNCwgMTkzLCAyNTAsIDI0NiwgMjE5LCAxNTcsIDIzMywgNDgsIDI1NCwgMTE4LCAyMjQsIAotICAgIDEsIDc5LCAyMTksIDE1NywgMjIyLCAyNTAsIDI1NCwgMTE4LCAyMjQsIDEsIDc5LCAyMjMsIDExMCwgNzksIDUyLCAyNDUsIAotICAgIDM5LCA3OSwgMjM1LCAyMDgsIDIyNiwgMTIzLCAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMiwgMjUwLCAyNDcsIDIzNSwgMjIzLCAKLSAgICAyMjUsIDEzLCAyNTMsIDIyMiwgMjQwLCAxNzYsIDI1MSwgMTIxLCAyNDQsIDEwLCAyMTksIDk3LCA0MywgNDIsIDI1MSwgCi0gICAgMTY2LCAyLCAyMjQsIDEwLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMjQsIDEwLCA1MiwgMjI0LCAxNiwgNzksIDIyNCwgMTYsIAotICAgIDI0NSwgMzksIDc5LCAyNDUsIDM5LCAyMjQsIDE2LCA3OSwgMjE2LCA3MSwgNSwgMjQ1LCA3MywgMjIzLCA1MiwgMjI1LCA3MSwgCi0gICAgNTAsIDg1LCAxNDAsIDI1MSwgMTIxLCA4NSwgOTcsIDI1MSwgMTIxLCAxMjEsIDI1MywgMjI0LCAyMjMsIDUyLCAyMjAsIAotICAgIDE1MiwgMjUwLCA5LCAyMTQsIDE2MywgMTEzLCAyNTMsIDIyMywgMjU0LCAxNjcsIDIxMywgMTg4LCAyNDksIDIyNSwgMjMwLCAKLSAgICAxODcsIDUwLCAyMTcsIDIzNSwgMjQ4LCAxNjQsIDIzNSwgMjAwLCAyMTQsIDE4MCwgMjQ0LCA2MCwgMjI0LCAxNDQsIDc5LCAKLSAgICAxMzQsIDU5LCAyMjQsIDE0MywgMjI0LCAyNywgMjI0LCAxOTMsIDI0NCwgMTksIDU5LCAyMjQsIDE0MywgMjQ0LCA4OSwgNTksIAotICAgIDIyNCwgMTQzLCAxMTMsIDU5LCAyMjQsIDE0MywgMjQ0LCAxOSwgNTksIDc5LCAyNDYsIDEyNiwgMjQ5LCAxMzgsIDIxNSwgCi0gICAgMjIyLCA2NywgMjQ0LCAxOSwgMjQ3LCAxMjYsIDIzMSwgODcsIDExLCAyMTksIDIwLCAyMTEsIDIwOSwgMjM1LCA2OSwgMjQzLCAKLSAgICAyMzQsIDI1NCwgNjAsIDIzNSwgMTk4LCAyMTYsIDg2LCAyMzUsIDE5OCwgMjIwLCAxMzksIDIzNSwgMTk4LCAyMjUsIDI1LCAKLSAgICAyMzMsIDQ0LCAyMzUsIDE3MSwgMjIyLCAyNDYsIDIzNSwgMTcxLCAyNDQsIDEwMCwgMjE4LCA5MSwgMjM1LCAxNzEsIDIyNCwgCi0gICAgMjQ5LCAyNDcsIDIwNCwgMjM1LCAxNzEsIDIzNSwgMjM1LCAyMTcsIDE4MywgMjE3LCAyNTIsIDI1NSwgMTQsIDIxNywgMTgzLCAKLSAgICAyMTcsIDI1MiwgMjM1LCAyMzUsIDksIDI0NCwgMjgsIDIyMCwgODIsIDI1NSwgMTQsIDksIDI0NCwgMjgsIDIyMCwgODIsIAotICAgIDIyOSwgMTk0LCAyMSwgMjIwLCA4MywgMjI4LCA3NCwgMjEsIDIyMCwgODMsIDIxOCwgMjQsIDIxMCwgODYsIDIxOCwgMjQsIAotICAgIDcsIDQsIDEsIDc0LCAyMTgsIDI0LCAxNjEsIDIxOCwgMjQsIDE5MCwgMjE4LCAyNCwgMTk1LCAyMTgsIDI0LCAxOTksIDIxOCwgCi0gICAgMjQsIDE5NiwgMjE4LCAyNCwgMjAxLCAyMTgsIDI0LCA5NiwgNTAsIDIxOCwgMjQsIDIzMCwgMTg2LCAyMTgsIDI0LCAyNDUsIAotICAgIDEwNiwgNTAsIDIxOCwgMjQsIDQzLCAyMjYsIDcsIDIxOCwgMjQsIDQ0LCAyMjYsIDcsIDIxOCwgMjQsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzAsIDIxOCwgNjYsIDIxMCwgODYsIDIxOCwgNjYsIDExMSwgMjE4LCA2NiwgMTA1LCAyMTgsIDY2LCAxNTgsIDIxOCwgNjYsIAotICAgIDE2MSwgMjE4LCA2NiwgMTkwLCAyMTgsIDY2LCAxOTUsIDIxOCwgNjYsIDE5OSwgMjE4LCA2NiwgMTk2LCAyMTgsIDY2LCAKLSAgICAyMDEsIDIxOCwgNjYsIDk2LCA1MCwgMjE4LCA2NiwgMjMwLCAxODYsIDIxOCwgNjYsIDI0NSwgMTA2LCA1MCwgMjE4LCA2NiwgCi0gICAgNDMsIDIyNiwgNywgMjE4LCA2NiwgNDQsIDIyNiwgNywgNywgMjE4LCA2NiwgNCwgMSwgNjEsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDc2LCA3LCAyMTgsIDY2LCA0LCAxLCA3OCwgNywgMjE4LCA2NiwgNCwgMSwgMjExLCAxNzgsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDIyMSwgMTk3LCA3LCAyMTgsIDY2LCA0LCAxLCAyNDIsIDY3LCA3LCAyMTgsIDY2LCA0LCAxLCAyMzUsIDI5LCA3LCAyMTgsIAotICAgIDY2LCA0LCAxLCAxNTYsIDcsIDIxOCwgNjYsIDQsIDEsIDE5NCwgNywgMjE4LCA2NiwgNCwgMSwgMjMwLCAzMCwgNywgMjE4LCAKLSAgICA2NiwgNCwgMSwgMjI2LCAxMDksIDcsIDIxOCwgNjYsIDQsIDEsIDIyMiwgOTMsIDcsIDIxOCwgNjYsIDQsIDEsIDIxNywgCi0gICAgMTUzLCAyNDUsIDU0LCA1MCwgMjQ5LCAyMzUsIDUwLCAyNDksIDEyNSwgNTAsIDI0NCwgMywgMjQ0LCA2LCA1MCwgMjMyLCAKLSAgICAyMDQsIDUwLCAyMzAsIDE5OSwgNTAsIDIyOSwgMjE1LCA1MCwgMjI1LCAxNjUsIDUwLCAyMjIsIDEyMCwgNTAsIDIxMSwgCi0gICAgMjE3LCA1MCwgMTY2LCAyMjAsIDUxLCA1MCwgMjQ3LCAxMzUsIDUwLCAyNDUsIDU1LCA1MCwgMjM0LCA4MiwgNTAsIDIxNSwgCi0gICAgMTEzLCA1MCwgMjQ2LCAxMDksIDUwLCAyNDMsIDQ3LCAyMjUsIDE5NiwgNTAsIDIyNSwgMTYzLCA1MCwgMjQyLCAxMTYsIDUwLCAKLSAgICAyNTMsIDE5MCwgNTAsIDI0MCwgMjM1LCA1MCwgMjUwLCAxOTMsIDUwLCAyMzIsIDE5NywgMjE2LCA0LCA1MCwgMjE5LCAyLCAKLSAgICA1MCwgMjE2LCAyNDYsIDUwLCAyMzUsIDI0OCwgMjIyLCAxMjAsIDUwLCAyMTUsIDk3LCAyMzIsIDIwNCwgNTAsIDM4LCA0MywgCi0gICAgMjQyLCA2LCA0OCwgMzgsIDQ0LCAyNDIsIDYsIDQ4LCAzOCwgMjAwLCA2NywgMjMyLCAyMjAsIDIyNiwgMTI0LCAzOCwgMjE5LCAKLSAgICAyNTMsIDY3LCAyMzIsIDIyMCwgMjI2LCAxMjQsIDM4LCAyNTQsIDk2LCA4MCwgNDgsIDM4LCAyNTAsIDEwLCA4MCwgNDgsIAotICAgIDM4LCA0MywgODAsIDQ4LCAzOCwgNDQsIDgwLCA0OCwgMzgsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDI1MCwgMTAsIDIyMiwgCi0gICAgMjM3LCAyMjYsIDEyNCwgMzgsIDI1NCwgOTYsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDEzNCwgMTcwLCA0OCwgMzgsIAotICAgIDI0NCwgMTksIDE3MCwgNDgsIDM4LCAyNDUsIDE1NCwgMjUwLCA0MywgMzgsIDI0NSwgMTU0LCAyMTgsIDIzNiwgMzgsIDI0NSwgCi0gICAgMTU0LCAyNDgsIDAsIDM4LCAyNDUsIDE1NCwgMjUwLCA0NCwgMjUyLCAxODgsIDM4LCA0MywgNDQsIDgwLCA0OCwgMzgsIAotICAgIDI0NSwgMTU0LCAyMjEsIDE5MCwgMzgsIDI0NSwgMTU0LCAyMzQsIDE0MSwgMzgsIDI0NSwgMTU0LCAyMTQsIDE1NSwgMjI1LCAKLSAgICAxMCwgMjE1LCAyMjYsIDM4LCAyMjMsIDUzLCAyMTksIDQ5LCAyMjYsIDEyNCwgMzgsIDUyLCA2NywgMjE4LCAxMDUsIDIyNiwgCi0gICAgMTI0LCAzOCwgMjU0LCAxMDYsIDg3LCAzOCwgMjE1LCAyMTIsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgMTQ4LCAKLSAgICA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTI0LCAzOCwgMjAwLCA1MiwgMjE5LCA0OSwgMjI2LCAxMjQsIDM4LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIDM4LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTExLCAzOCwgNDMsIAotICAgIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIyNSwgNDgsIDI1NSwgMjAsIDIyNiwgMjM1LCAyNTUsIDQsIDIxNiwgCi0gICAgNDMsIDIxNiwgMTk3LCAyMTgsIDc1LCAxMzksIDYsIDI1MSwgNzQsIDI0OCwgNzksIDI1MCwgMTg2LCAyNTAsIDE4MywgMjMyLCAKLSAgICAyMjAsIDg3LCAyNTAsIDI0OCwgMjI2LCAyMzUsIDI1MSwgMzQsIDIxNCwgMTg5LCAyNDUsIDU2LCAyNDksIDE5OSwgMjIxLCAKLSAgICAxODcsIDI0OCwgNzksIDI0NCwgMTg3LCAxMTksIDQsIDI0MywgMjA5LCAxMTksIDYsIDI0MiwgNjcsIDI1MSwgMjI3LCA2LCAKLSAgICAyNDIsIDY3LCAxMzksIDYsIDI0MiwgNjcsIDIyNSwgNDAsIDI0OSwgMTk5LCAyMjUsIDQwLCAyNDksIDIwMCwgMTE1LCAxMTMsIAotICAgIDIyNSwgMTExLCAxMTksIDYsIDc0LCAyNTEsIDIyNywgNiwgNzQsIDExOSwgNiwgMTU2LCAxMTksIDQsIDE1NiwgMjMzLCAKLSAgICAxNTUsIDU3LCAyNTIsIDE0OSwgODcsIDEzOSwgNiwgMjMwLCAzMCwgMjI3LCAyMDAsIDUwLCAyMTksIDMzLCAyMjMsIDEyMiwgCi0gICAgMjQ5LCAxNzAsIDExOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI0LCA5OSwgMTE5LCA2LCAKLSAgICAxNTMsIDI1MSwgMjI3LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5OSwgMjE3LCA3MiwgMjIzLCA2NSwgMjIwLCAxMzQsIAotICAgIDc5LCAyMTcsIDIsIDUwLCAyMTUsIDI1NCwgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAxNTksIDIyNiwgMTM3LCAKLSAgICA1MCwgMjI2LCAyMjUsIDUwLCAyMzUsIDIwMCwgMjI2LCAyMjUsIDUwLCAyNTEsIDIyNywgNiwgMjEwLCAxNTksIDIxNSwgOTQsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MiwgMjM0LCAxNzksIDUwLCAyNTQsIDExNSwgNTAsIDExOSwgNiwgMjUzLCAxNjYsIDI1MSwgCi0gICAgMjI3LCA2LCAyNTEsIDc0LCAyNDUsIDc2LCA4NywgMTE5LCA0LCA3NiwgMTE5LCA2LCA3NiwgMTE5LCA2LCAyNDUsIDE0LCAKLSAgICAyMTUsIDk0LCA2LCAyNDUsIDE0LCAxMTksIDYsIDE5NCwgMTE5LCA0LCA3OCwgMTA5LCA4NywgMjUyLCAzNywgODcsIDI0MiwgCi0gICAgMjA5LCA4NywgMjQ4LCAxOTgsIDg3LCAyMzUsIDIzOSwgMjE5LCAzMSwgMjIyLCAxODksIDYsIDIyNCwgOTksIDI0NCwgMTkwLCAKLSAgICA1MCwgMTM5LCA0LCAyMjUsIDExMSwgMTM5LCA0LCAyNDMsIDExNCwgMTM5LCA2LCAyNDMsIDExNCwgMTM5LCA2LCAyMjUsIAotICAgIDExMSwgMTM5LCAyMzAsIDI5LCAyMTgsIDQxLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAyMDksIDIxNSwgOTQsIDM1LCA2LCAKLSAgICAxNTYsIDIyMywgNTIsIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgMTM5LCAzMiwgNiwgMjQ5LCA2OCwgCi0gICAgMTM5LCAzMiwgNCwgMjQ5LCA2OCwgMTM5LCAzMiwgNCwgNzYsIDEzOSwgMzIsIDQsIDc0LCAxMzksIDMyLCA0LCAyMzUsIAotICAgIDE1MCwgMjI0LCAxNzMsIDIzMiwgMjE5LCAyMTUsIDk0LCAyNTQsIDEzNCwgMjI1LCAxODYsIDUwLCAyNTQsIDE4OSwgMjE1LCAKLSAgICA5NCwgNCwgMjQ1LCAxNCwgMTYsIDMxLCAyMjEsIDI1NCwgMjE5LCAzMSwgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjIwLCAKLSAgICAxMjAsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyOCwgMTk5LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTIzLCAyMTYsIDI0MiwgCi0gICAgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjE2LCAxNjksIDIxMiwgMTE0LCAyNDQsIDEwLCAxMTMsIDIxNiwgMTY3LCAyMTIsIAotICAgIDExNCwgMjQ0LCAxMCwgMTIzLCAyNDQsIDEyNSwgMjEyLCAxMTQsIDI0NCwgMTAsIDExMywgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMzQsIDI0NCwgMTI0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCAxOSwgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIxOSwgMTE3LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCA4OSwgMjE5LCAxMTUsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDI0NSwgMTk2LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTM0LCAyNDUsIDE5NCwgMjEyLCAxMTQsIDI0NCwgCi0gICAgMTAsIDI0NCwgODksIDI0NSwgMTk0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjIwLCAxMjQsIDI0NSwgMTk0LCAyNDQsIDEwLCAKLSAgICAyMjcsIDIwMSwgMTExLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTU4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE2MSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIAotICAgIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5OSwgMjIyLCAyMDAsIDIyNywgMjAyLCAKLSAgICAxOTYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjAxLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCAyMjIsIDIwMCwgCi0gICAgMjI3LCAyMDIsIDI0NSwgMTc1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAKLSAgICAxMjIsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIAotICAgIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgNCwgCi0gICAgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTU4LCA0LCAyMjIsIDIwMCwgMjI3LCAKLSAgICAyMDIsIDE2MSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCA0LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDE5OSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgCi0gICAgMjAxLCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDI0NSwgMTc1LCA0LCAKLSAgICAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjIsIDQsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgCi0gICAgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjE2LCAxNDksIAotICAgIDI1MSwgNzUsIDI0OSwgNjgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDgsIDIyMiwgMjAwLCAyMjcsIAotICAgIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIyMywgNTIsIDEyMywgMjQwLCAyMTcsIDcsIAotICAgIDQsIDEsIDIyMywgNTIsIDI1MSwgNzQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE5LCAxMjcsIDIzMywgODQsIDE3LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDI0NCwgMTIzLCAyNDUsIDIzNCwgMTcsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjMsIDIxNiwgCi0gICAgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjQwLCAyMTgsIDIxNiwgMTQ4LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjEwLCAKLSAgICA4NywgMjE2LCAxNjcsIDE0MCwgNzUsIDIxNCwgMTUzLCA3NSwgOTcsIDc1LCAyNDYsIDExMiwgNzUsIDQzLCA0NCwgNzUsIAotICAgIDEyMCwgMTI0LCA3NSwgMjI4LCA2MSwgMjEyLCA5LCA3NSwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTksIDMwLCAyNDUsIAotICAgIDIyOCwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIDkxLCAxNDAsIDIxMiwgCi0gICAgMzYsIDc1LCA5NywgMjEyLCAzNiwgNzUsIDE0MCwgMTEzLCAyNDEsIDI0MSwgNzUsIDIxNCwgMTUzLCAxMTMsIDI0MSwgMjQxLCAKLSAgICA3NSwgOTcsIDExMywgMjQxLCAyNDEsIDc1LCAyNDYsIDExMiwgMTEzLCAyNDEsIDI0MSwgNzUsIDE0MCwgODAsIDIsIDIxNywgCi0gICAgNzgsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMTQwLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjE0LCAxNTMsIDgwLCAyNDMsIDI1MSwgCi0gICAgMTMwLCA5NywgODAsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAKLSAgICAyNTIsIDEzNSwgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgMiwgMjMyLCAxMjksIDk3LCA4MCwgCi0gICAgMiwgMjMyLCAxMjksIDQzLCA0NCwgMjEyLCAzNiwgNzUsIDQzLCA0NCwgODAsIDIsIDkxLCAyNDYsIDExMiwgMjEwLCAzNSwgCi0gICAgNzUsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3OCwgMjMzLCA0MywgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc4LCAyMjIsIAotICAgIDI0NCwgMjQ2LCAxMTIsIDgwLCAyLCAyMTYsIDc4LCAyMzMsIDQzLCAyNDYsIDExMiwgODAsIDIsIDIxNiwgNzgsIDIyMiwgCi0gICAgMjQ0LCA5NywgODAsIDIsIDI0OSwgMTY5LCAyNDYsIDExMSwgMjQ2LCAxMTIsIDgwLCAyLCAyNDksIDE2OSwgMjMzLCA0MywgCi0gICAgMjU0LCA5NiwgMjE2LCAxNSwgMjIwLCAxNTUsIDc1LCAyNTAsIDEwLCAyMTYsIDE1LCAyMjAsIDE1NSwgNzUsIDIyOCwgNjEsIAotICAgIDIxMiwgOSwgODAsIDIxNiwgNDMsIDIwMCwgMTMwLCAxNDAsIDgwLCAyMTYsIDQzLCAyNTIsIDE0OSwgMTE1LCA5NywgODAsIAotICAgIDIxNiwgNDMsIDEzMCwgMjU0LCA5NiwgMjA0LCAyNTAsIDQ0LCA3NSwgMjUwLCAxMCwgMjA0LCAyNTAsIDQ0LCA3NSwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE1MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExMSwgMjE0LCAKLSAgICAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjQ0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjMzLCAKLSAgICA0MywgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIxNCwgMTUyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIAotICAgIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI0NCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDIzMywgNDMsIDk3LCA4MCwgMTE1LCAxNDAsIDc1LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIDI0NiwgMTEyLCA3NSwgMTQwLCAKLSAgICA4MCwgMTE1LCA5NywgNzUsIDE0MCwgMjI2LCA3NCwgMjUzLCAyNTUsIDIxNCwgMTUzLCAyMjYsIDc0LCAyNTMsIDI1NSwgOTcsIAotICAgIDIyNiwgNzQsIDI1MywgMjU1LCAyNDYsIDExMiwgMjI2LCA3NCwgMjUzLCAyNTUsIDE0MCwgMjQyLCA2LCAxMTUsIDk3LCAKLSAgICAyNDIsIDUsIDk3LCAyNDIsIDYsIDExNSwgMTQwLCAyNDIsIDUsIDE0MCwgNTIsIDgwLCAyLCA5MSwgNDMsIDQ0LCA1MiwgODAsIAotICAgIDIsIDkxLCA5NywgNTIsIDgwLCAyLCA5MSwgMTQwLCA1MiwgNzUsIDIxNCwgMTUzLCA1MiwgNzUsIDk3LCA1MiwgNzUsIDI0NiwgCi0gICAgMTEyLCA1MiwgNzUsIDQzLCA0NCwgNTIsIDc1LCAxMjAsIDEyNCwgNTIsIDc1LCAyMjgsIDYxLCAyMTIsIDksIDUyLCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjEyLCA5LCAKLSAgICA1MiwgNzUsIDE0MCwgMjE1LCAyMTIsIDc1LCA5NywgMjE1LCAyMTIsIDc1LCAxNDAsIDIxOCwgMjMyLCA3NSwgOTcsIDIxOCwgCi0gICAgMjMyLCA3NSwgMjE0LCAxNTMsIDgwLCAyLCA1MiwgOTEsIDI0NiwgMTEyLCA4MCwgMiwgNTIsIDkxLCAxNDAsIDI0OCwgMTYzLCAKLSAgICA3NSwgMjE0LCAxNTMsIDI0OCwgMTYzLCA3NSwgOTcsIDI0OCwgMTYzLCA3NSwgMjQ2LCAxMTIsIDI0OCwgMTYzLCA3NSwgCi0gICAgMTQwLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIDIxNiwgNDMsIDEzMCwgMTQwLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgCi0gICAgNzUsIDk3LCA3MSwgNzUsIDI0NiwgMTEyLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgODAsIDI0MywgMjUxLCAxMzAsIDIxNCwgCi0gICAgMTUzLCA3MSwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCAKLSAgICAyMDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCA2NywgMTMwLCAyMTQsIDE1MywgNzEsIAotICAgIDUyLCA3NSwgMjE0LCAxNTMsIDcxLCA1MiwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgOTcsIDcxLCA4MCwgMjQzLCAyNTEsIAotICAgIDIxMiwgNTYsIDIyOCwgNjEsIDIxMiwgOSwgODAsIDIxNiwgNDMsIDI0OSwgMTY4LCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIAotICAgIDIxNiwgNDMsIDI0OSwgMTY4LCAxMjAsIDEyNCwgNzEsIDc1LCA0NCwgODAsIDIsIDQsIDI1MCwgNDMsIDI0NiwgMTEyLCA4MCwgCi0gICAgMTQwLCA2NCwgMjE0LCAxNTMsIDc1LCAxMzQsIDk3LCAyNTMsIDI1NSwgMTQwLCA4MCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIAotICAgIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCA1MiwgNjcsIDkxLCA5NywgODAsIDIsIDUyLCA2NywgCi0gICAgOTEsIDQzLCA0NCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjI2LCAxNzcsIDc1LCA5NywgMjI2LCAxNzcsIDc1LCA0MywgCi0gICAgNDQsIDIyNiwgMTc3LCA3NSwgMzEsIDI1NCwgMTYzLCAyNDksIDIyMiwgMjI2LCAxLCAyNDcsIDI0MSwgMjE2LCAxODgsIAotICAgIDI0NSwgMzUsIDIxNiwgMTg4LCAyNDcsIDE0NiwgMjI4LCA1NywgMjQ1LCAzNiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyMzUsIAotICAgIDI1MiwgMjI5LCAyMjYsIDI0NSwgMTc4LCAyMjYsIDIzNSwgMjI4LCA1NywgMjU0LCAxMzIsIDI0NSwgMTc4LCAyMjYsIDIzNSwgCi0gICAgNCwgMjQ1LCAxNzgsIDIyNiwgMjM1LCAyNDksIDE5NCwgMjUzLCAyNDYsIDIzMSwgNjcsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyNDksIDE5NiwgMjUzLCAyNDYsIDIzMSwgNjcsIDQsIDI0OSwgMTk0LCAyNTMsIDI0NiwgMjMxLCA2NywgMjQ1LCAxNTEsIAotICAgIDY0LCAyMjQsIDE3NSwgMjMwLCAyOSwgMjI0LCAxODMsIDIzMCwgMjksIDI0OSwgMTczLCAyMzAsIDI5LCAyMTgsIDQxLCAKLSAgICAyMzAsIDE4NywgNTAsIDIzMCwgMTg1LCA1MCwgNTksIDIyNSwgMjUsIDI0NywgMTc3LCAyMTksIDk3LCAyMjAsIDEzMCwgCi0gICAgMjMwLCAxODYsIDI1MywgMjI1LCAyMjYsIDE3MSwgMjIyLCAyMzcsIDIyNiwgMTcxLCAyNTEsIDEyMiwgMjI2LCAxNzEsIDQyLCAKLSAgICAyMjIsIDE5NSwgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNDQsIDEyLCAyMjIsIDE5NSwgMjI0LCAxNzEsIDExMiwgMjM1LCAyNDEsIAotICAgIDQ0LCAyNTQsIDExNywgMjU0LCAxMTcsIDIzMSwgOTMsIDI1NCwgMTE3LCAyMTksIDEsIDI1NCwgMTE3LCAyNDcsIDE3OSwgCi0gICAgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgyLCAyMjYsIDEyLCAxMTIsIDIyOCwgNTcsIDIyNiwgMTIsIDExMiwgMjMyLCAKLSAgICAxNTIsIDI1NCwgMTI2LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzNSwgMjA1LCAyMTQsIDE3NSwgMjM1LCAyMTgsIDUyLCAyMzUsIAotICAgIDIxOCwgMjE1LCAyMTIsIDIzNSwgMjE4LCAyNDksIDE5MCwgMjM1LCAyMTgsIDIxOCwgMTQsIDIzNSwgMjE4LCAyMTMsIDEyOSwgCi0gICAgMjM1LCAyMTgsIDI1MCwgMTAsIDIzNSwgMjE4LCAyNTAsIDEwLCAyNDksIDE5MCwgMjM1LCAyMTgsIDI1NCwgOTYsIDI0OSwgCi0gICAgMTkwLCAyMzUsIDIxOCwgMjE2LCAxODcsIDI1MiwgNzUsIDIyMywgMTQwLCAyMjQsIDE3MiwgNTksIDIzMCwgMTg2LCAyNDUsIAotICAgIDQxLCAyNDMsIDUzLCAyMjQsIDE3MiwgMjQxLCA2NCwgMjE2LCA5MCwgMjI2LCAxNzEsIDIyMywgNTIsIDE4NCwgMjM1LCAKLSAgICAyMDAsIDIzMywgNzEsIDIyMiwgOTMsIDIxOSwgMTU5LCAyMTIsIDM1LCAyMTEsIDIwMCwgMjI0LCAxODMsIDIyOCwgNTcsIAotICAgIDE4NCwgMjMwLCAxODcsIDE4NCwgMjUzLCAyMTgsIDEyOCwgMTEyLCAyMjgsIDU3LCAyNTMsIDIxOCwgMTI4LCAxMTIsIDI1NCwgCi0gICAgNTYsIDEyOCwgMTEyLCAyNTQsIDU2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNTUsIDEzLCAxMjgsIDExMiwgMjI5LCAxMDUsIAotICAgIDI1NCwgNTYsIDIyOCwgNjQsIDI1NSwgMTMsIDEyOCwgMTEyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIyOCwgNTcsIDI1NCwgCi0gICAgMTU2LCAxMjgsIDExMiwgMjU0LCAxNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgMjE1LCAyMTIsIDE4NCwgMjU0LCAxNjQsIAotICAgIDEyOCwgMTEyLCAyNDUsIDEwMiwgMTEyLCAyNDMsIDUyLCAyNDUsIDEwMiwgMTEyLCAyNDcsIDI0MiwgMjUyLCAzMSwgMjU0LCAKLSAgICA1OCwgMjE2LCAxOTcsIDIzMiwgMjI3LCAyNDMsIDUyLCAxMjgsIDExMiwgMjU0LCA1NiwgMTI4LCAyMTYsIDQzLCAxNzcsIAotICAgIDIxNiwgMTk3LCAyMzYsIDIyLCAyMjYsIDIzNSwgMjM2LCAyMiwgNjQsIDE3NywgMjU0LCA1NiwgMTI4LCAxMTIsIDI0OSwgCi0gICAgMjM1LCAyNDUsIDEwNSwgMjQ1LCAxMDYsIDI0OSwgMjM0LCAyMjIsIDIzNywgMjM2LCA3LCAxMjgsIDExMiwgMjIyLCAyMzcsIAotICAgIDEyOCwgMTEyLCAyNDksIDE2MiwgMTEyLCAyNDUsIDc1LCAyNDUsIDEwNCwgMTEyLCAyMTgsIDE1OSwgMjQ1LCAxMDUsIDI0OCwgCi0gICAgNjMsIDEyOCwgMTEyLCAxMjgsIDIxNiwgNDMsIDI1MSwgODYsIDI0OCwgODAsIDIzMSwgOTMsIDI1MSwgODUsIDIyNCwgMTQsIAotICAgIDEyOCwgMTEyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjQwLCAxMTEsIDExMiwgMjI4LCA1NywgMjQwLCAxMTEsIDExMiwgMjE4LCAKLSAgICAxMTEsIDI0NSwgMTAyLCAxMTIsIDIzMywgMjEsIDE3NywgMTI4LCAxMTIsIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMzMsIAotICAgIDIxLCAxMTUsIDEyOCwgMTEyLCAyNDIsIDEzNywgMTE1LCAxMjgsIDExMiwgMjMzLCAyMSwgMjUxLCA5NiwgMjI4LCA1NywgCi0gICAgMTI4LCAxMTIsIDI0MiwgMTM3LCAyNTEsIDk2LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMwLCAxMDIsIDIzMywgMjAsIDIzMCwgCi0gICAgMTAyLCAyNDIsIDEzNiwgMjUyLCAzMSwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjI4LCA1NywgMjMzLCAyMCwgMjI4LCAKLSAgICA1NywgMjQyLCAxMzYsIDIyOSwgMTA1LCAyMzMsIDIxLCAyMjgsIDY0LCAxMjgsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAKLSAgICAyMjgsIDY0LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyNDIsIDEzNywgMTc3LCAyNDUsIDEwMiwgCi0gICAgMTEyLCAyMjksIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQ1LCAxMDIsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAyMjgsIAotICAgIDY0LCAyNDUsIDEwMiwgMTEyLCAyMzMsIDIxLCAxNzcsIDI0MiwgMTM2LCAyNDIsIDEzNywgMTc3LCAyMzMsIDIwLCAyMjksIAotICAgIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQyLCAxMzYsIDIyOSwgMTA1LCAyNDIsIDEzNywgMjI4LCA2NCwgMjMzLCAyMCwgCi0gICAgMjI0LCAyMDUsIDIxOCwgNTYsIDIyNCwgMjA2LCAxNzcsIDEyOCwgMTEyLCAyMTgsIDU3LCAxNzcsIDEyOCwgMTEyLCAyMjQsIAotICAgIDIwNiwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAxNzcsIDI0NSwgMTAyLCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyMjQsIDIwOCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDIxOCwgNTgsIDIxOCwgNjUsIDIyNiwgMjM1LCAyMTgsIDIzLCAyMjYsIAotICAgIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDY1LCAyMjYsIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDIzLCAyMjYsIDIzNSwgCi0gICAgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAxMTIsIDIxOCwgMjMsIDY0LCAxNzcsIDEyOCwgMTEyLCAyMjksIDEwNSwgMTE2LCAKLSAgICAyMTgsIDY1LCA2NCwgMjI4LCA2NCwgMTI4LCAxMTIsIDIyOSwgMTA1LCAxMTYsIDIxOCwgMjMsIDY0LCAyMjgsIDY0LCAxMjgsIAotICAgIDExMiwgMjE4LCA2NSwgNjQsIDIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDIzLCA2NCwgMiwgMjI4LCA1NywgMTI4LCAKLSAgICAxMTIsIDIzMCwgODYsIDIzMCwgODcsIDIzMCwgODgsIDIzMCwgODcsIDIxNCwgMTc1LCA0MiwgMjM2LCAyMiwgMjI2LCAyMzUsIAotICAgIDQyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgCi0gICAgMTc3LCAxMjgsIDExMiwgNDIsIDI1MSwgMywgNDIsIDI0OSwgMTEwLCAzNywgMjI1LCAyNSwgMzcsIDIzMCwgMTg2LCAzNywgCi0gICAgMjE2LCA4NiwgMzcsIDI0NywgMTc3LCAyMTksIDk3LCAzNywgNTksIDIyNiwgMTcxLCAzNywgMjIyLCAyMzcsIDIyNiwgMTcxLCAKLSAgICAzNywgMjUzLCAyMjUsIDIyNiwgMTcxLCAzNywgMjQ1LCAxMDUsIDM3LCAyNDgsIDE2NCwgOTIsIDIyNSwgMjUsIDkyLCAyMzAsIAotICAgIDE4NiwgOTIsIDIxNiwgODYsIDkyLCA1OSwgMjI2LCAxNzEsIDQ0LCAyMTcsIDg4LCA0MywgMjE3LCA4OCwgMTI0LCAyMTcsIAotICAgIDg4LCAxMjAsIDIxNywgODgsIDI1MywgMjI4LCAyMzAsIDE2MSwgMjE1LCAxOTIsIDI0NCwgMzMsIDIxNSwgMjEyLCA2NywgCi0gICAgMjUyLCAxNDksIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDQsIDIxNSwgOTMsIDI0NywgMTQ2LCAyMjgsIAotICAgIDU3LCAyMjQsIDE2NiwgMjI4LCA1NywgMjE1LCAxOTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDQsIDM0LCAyMjksIDEwNywgCi0gICAgNTIsIDY3LCAyNTIsIDE0OSwgNTIsIDQ0LCAyMTUsIDkzLCAyMjQsIDIwNiwgMjE0LCAxODQsIDIyMywgOTQsIDIxOCwgNTcsIAotICAgIDIxNCwgMTg0LCAyMjMsIDk0LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAyMjgsIAotICAgIDYyLCAyMTgsIDc3LCAyMjgsIDYyLCAyMTgsIDc4LCA2NCwgMTc3LCAxMjgsIDExMiwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAKLSAgICAyMjgsIDYyLCAyMTgsIDc4LCAxNzcsIDEyOCwgMTEyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDIzNiwgMjIsIDIyNiwgMjM1LCAKLSAgICAyMzAsIDkyLCAyNDEsIDIwNywgMjQ5LCAyMDQsIDIzMSwgMTQyLCAyMzUsIDIxNSwgMjExLCAxNDUsIDIyOSwgMjA3LCAyMjgsIAotICAgIDYzLCA0NCwgMjU0LCAxMTgsIDIsIDI1NCwgMzMsIDQ0LCAyMTUsIDIyNiwgMjMwLCAyOSwgMjMyLCAxNTIsIDI1NCwgMTI2LCAKLSAgICAyMzAsIDI5LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzMCwgMjksIDIzNSwgMjA1LCAyMzAsIDI5LCAyMTQsIDE3NSwgMjQ4LCAKLSAgICAxLCAyMjYsIDE3MSwgNTksIDIyNiwgMTcxLCAyMTgsIDE1OSwgMjI2LCAxNzEsIDI0NywgMTc3LCAyMTYsIDg2LCAyNTEsIAotICAgIDE3MiwgNDMsIDIyOCwgNjIsIDI0NCwgMTg5LCAyMjAsIDE1MSwgMjI0LCAxODMsIDQ0LCAyMjgsIDYyLCAyNDQsIDE4OSwgCi0gICAgMjIwLCAxNTEsIDIyNCwgMTgzLCA0MywgMjIwLCAxNTEsIDIyNCwgMTgzLCA0NCwgMjIwLCAxNTEsIDIyNCwgMTgzLCAyMjMsIAotICAgIDUyLCAyMTYsIDkwLCAyNDUsIDEwNSwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIxOCwgNjQsIDUyLCAyMTgsIDIyLCA1MiwgMjM1LCAyMDUsIDUyLCAyMTQsIDE3NSwgMjI1LCA1MCwgCi0gICAgMTI4LCAyMiwgMjI2LCAxMiwgMTEyLCAyMzMsIDIxLCAyLCAyNDcsIDEyOCwgMjQyLCAxMzcsIDIsIDI0NywgMTI4LCAyMTMsIAotICAgIDE4NywgMjMwLCAxMDIsIDIzMywgMjAsIDIxMywgMTg3LCAyMzAsIDEwMiwgMjQyLCAxMzYsIDIzMywgMjEsIDEyOCwgMjE2LCAKLSAgICA0MywgMTc3LCAyNDIsIDEzNiwgMjQyLCAxMzcsIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMCwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAxMjgsIDIxNiwgNDMsIDE3NywgMjI0LCAyMDUsIAotICAgIDEyOCwgMjE2LCA0MywgMTc3LCAyMTgsIDU2LCAyNDcsIDE0NiwgMjI4LCA1NywgMjI0LCAyMDksIDE3NywgMjQ1LCAxMDcsIAotICAgIDI0NywgMTQ2LCAyMjgsIDU3LCAyMTgsIDU5LCAxNzcsIDI0NSwgMTA3LCAyMjgsIDU3LCA0MiwgMjM2LCAyMiwgNjQsIDE3NywgCi0gICAgMTI4LCAxMTIsIDIyOCwgNTcsIDQyLCAyMjYsIDE1NCwgNjQsIDE3NywgMTI4LCAxMTIsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAKLSAgICAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgMTc3LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMzLCAyMSwgCi0gICAgMjUxLCA5NiwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjQyLCAxMzcsIDI1MSwgOTYsIDIyOCwgNTcsIDI0NSwgMTAyLCAKLSAgICAxMTIsIDIyNCwgMjA2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAyNTEsIDk2LCAyMjgsIAotICAgIDU3LCAyNDUsIDEwMiwgMTEyLCAyMjgsIDU3LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ3LCAxNDYsIDIyOCwgCi0gICAgNTcsIDI0OSwgMTk2LCAyNTMsIDI0NiwgMjI4LCA2MiwgMjE4LCA3NywgMjI4LCA1NywgMjI4LCA2MiwgMjE4LCA3OCwgNjQsIAotICAgIDE3NywgMTI4LCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDksIDE5NiwgMjUzLCAyNDYsIDIyOCwgNjIsIDIxOCwgNzgsIAotICAgIDE3NywgMjQ1LCAxMDcsIDY3LCAyNDUsIDE3MSwgMjMwLCAyMjcsIDIwMywgMjQ1LCAxNzEsIDEyMCwgNDQsIDI0OCwgNywgCi0gICAgMjQ1LCAxNzEsIDEyNCwgNDQsIDI0OCwgNywgMjQ1LCAxNzEsIDI0NSwgMTc4LCA2NCwgMiwgMjAwLCAyMDMsIDkxLCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDY3LCAyNTIsIDE0OSwgMjUzLCAyMTUsIDI0NSwgMTUxLCA2NCwgMjAzLCA5MSwgNCwgMjQ1LCAxNzgsIAotICAgIDY0LCAyLCA2NywgMjUyLCAxNDksIDI1MywgMjE1LCAyNDUsIDE1MSwgNjQsIDIwMywgOTEsIDI0NSwgMTc4LCA2NCwgMiwgCi0gICAgNTksIDQ4LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCA0LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDIxNCwgMTgzLCAyNDUsIDE3OCwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkyLCAyNDksIDE5NCwgMiwgCi0gICAgMjAwLCAyMDMsIDkxLCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAKLSAgICA0LCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAyNDksIDE5NCwgCi0gICAgMiwgMjI2LCAxMjcsIDQsIDI0OSwgMTk0LCAyLCAyMjYsIDEyNywgMjEwLCAxNjAsIDE4OSwgMjUyLCAxODEsIDIzMSwgNjYsIAotICAgIDI0OCwgMiwgNTAsIDI0NSwgMTgwLCA3NSwgMjQwLCAyNDEsIDEyMCwgMjU0LCAxLCAxMjQsIDI1NCwgMSwgMjI0LCAxNzgsIAotICAgIDIyNSwgMTY4LCAyMTIsIDMyLCAyMzIsIDIxOSwgNDMsIDI1MCwgMTg5LCA0NCwgMjUwLCAxODksIDQzLCAyNDQsIDY1LCA0NCwgCi0gICAgMjQ0LCA2NSwgMjUxLCAxODMsIDQ0LCAyNDksIDE0MCwgMjUxLCAxODMsIDQzLCAyNDksIDE0MCwgMjE2LCAxNSwgNDQsIAotICAgIDI0OSwgMTQwLCAyMTYsIDE1LCA0MywgMjQ5LCAxNDAsIDIyMywgNTIsIDIyOCwgNTcsIDUwLCA0MiwgMjMyLCAxMTAsIDI1NCwgCi0gICAgMzMsIDIyMSwgMTY2LCAyMjEsIDE3MywgMjE3LCAyLCAyMjMsIDEyMywgMjI0LCAyNDQsIDIzNSwgMjQ1LCAyMTMsIDE2NSwgCi0gICAgMjE4LCAyMzYsIDIyNSwgNDQsIDY0LCAyMzUsIDIxNCwgNTAsIDIxNSwgOTQsIDIyOCwgNTcsIDUwLCAyMTIsIDQyLCAyNDAsIAotICAgIDI0MywgMjE2LCAxNSwgNDMsIDI0OSwgMTY4LCAyMTYsIDE1LCA0NCwgMjQ5LCAxNjgsIDI1MSwgMTgzLCA0MywgMjQ5LCAKLSAgICAxNjgsIDI1MSwgMTgzLCA0NCwgMjQ5LCAxNjgsIDIxNiwgMTUsIDE2MywgMjM1LCAyMTgsIDI1MSwgMTgzLCAxNjMsIDIzNSwgCi0gICAgMjE4LCAyNDMsIDI0OCwgMjE5LCA3NywgMTIwLCAyNTQsIDIsIDI1MiwgMzIsIDExMywgMjAzLCAyNTIsIDEzNywgMjI2LCAKLSAgICAxNjQsIDIzNCwgMTQ0LCAyNDUsIDk4LCAyMTYsIDQzLCAyMTYsIDE5NywgMjIyLCAyNTQsIDIxMSwgMTc5LCAyMzYsIDcsIAotICAgIDExNiwgMjIzLCAxMjAsIDI1MSwgMTcxLCAyMzQsIDE0MywgMjMzLCA0OCwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDI0NSwgOTgsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMzMsIDUyLCAyNTIsIDQzLCAyMjIsIDIzNiwgMjQ5LCAKLSAgICA3OCwgMjU0LCAxNjQsIDI1NCwgOSwgMjE3LCAxODIsIDIxNiwgNSwgMjIyLCAxMjUsIDI0NywgMjIzLCAyMjYsIDE1NSwgCi0gICAgMjQ5LCAyMDYsIDIxNywgNTMsIDIxOSwgODgsIDI0OSwgMTU5LCAyNDksIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDAsIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTgsIDIzMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMjQsIDMxLCAyNDUsIDEwNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDcsIDE4MiwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTAsIDQzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIAotICAgIDIxOCwgMTM3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjE5LCA5OCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MiwgMTg5LCAxMzAsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjI0LCAzMSwgMjE5LCA5NywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTIsIDE4OCwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyMzMsIDIwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI0MiwgMTM2LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDE0MCwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCA5NywgMjE0LCAxOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAxNDAsIDc1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIAotICAgIDk3LCA3NSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyNTIsIDE4OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAxMjQsIDIxNywgODksIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNjMsIDIxOCwgMTM3LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDEyNCwgMjUwLCAyNDYsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgCi0gICAgMjQ4LCA2MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjQsIDIxNywgODksIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjE0LCAxNTMsIDIxNCwgMTksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjE0LCAxNTMsIDc1LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjI2LCAxMjcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQ4LCA3NCwgCi0gICAgMjE4LCAxMzcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMTIwLCAyNTAsIDI0NiwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDczLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDYsIDExMiwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAKLSAgICAyNDYsIDExMiwgNzUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAwLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyNDgsIDYzLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDEsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIzNSwgNjMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIxNCwgCi0gICAgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjIwLCA3LCAyMzUsIDYyLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDIyNCwgMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyMTgsIDE1OCwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDksIDIzNCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjAsIDIxNywgODksIDI0OCwgOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDc0LCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjE4LCAxNTksIAotICAgIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMzUsIDYzLCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjUwLCA0NCwgMjQ4LCA5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyNCwgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCA0MywgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTYsIDkwLCAyNDgsIAotICAgIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQyLCAxMzcsIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDksIAotICAgIDIyOCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNzQsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyMTAsIDM0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIxOCwgMTM4LCAxODQsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjIwLCAxNTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyOCwgNTcsIDI0NSwgMTA3LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyNCwgMTUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTI0LCAyNTAsIAotICAgIDI0NywgMTg0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjUwLCAyNDcsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMzUsIDE5MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjMsIDQwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNiwgCi0gICAgMjA1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1NCwgMTUyLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDUsIDEwOSwgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjM1LCAxOTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIyNiwgMjA2LCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTQsIDE1MSwgMjI4LCAKLSAgICA1NywgMjUwLCAxMzgsIDc5LCA0NCwgMjU0LCAxMTgsIDIsIDI0NiwgMTEyLCAyMTAsIDM1LCA3NSwgMjE5LCAyMzcsIDIwNCwgCi0gICAgMjUxLCAxNzEsIDI1MiwgNTMsIDg3LCA2NywgMjMyLCAyMjAsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAyMjMsIDg3LCAKLSAgICAyNDksIDE5MSwgMjE0LCAxODEsIDg3LCAyNDcsIDE5NywgMjE0LCAxODEsIDg3LCAyNDUsIDE2MiwgODcsIDI0OSwgMjE4LCAKLSAgICA4NywgNzEsIDQyLCAyLCAyNTAsIDE4MywgNjcsIDIzMiwgMjE5LCAyNDUsIDEzOCwgODcsIDI1NCwgMTQ3LCAyMzQsIDE0NSwgCi0gICAgODcsIDI0MSwgMjIwLCA4NywgMzcsIDIwMywgMjUyLCAxNDksIDIsIDIyOCwgNTUsIDM3LCAyMTUsIDIyNywgMjQ2LCAxMTQsIAotICAgIDI1MSwgMTQzLCAyNTAsIDQ0LCAyLCAyMjgsIDU5LCA3NSwgMjE0LCAxNzksIDg3LCAyMzAsIDE0MiwgODcsIDI0MCwgMTcxLCAKLSAgICA4NywgMjI2LCAxNzgsIDI0MiwgNjYsIDg3LCAyMjYsIDE3OCwgMjMzLCAxNTMsIDg3LCAyMjUsIDI0OCwgODcsIDIyNSwgCi0gICAgMjQ3LCA4NywgMjQ3LCAyMDUsIDI0OSwgMTA1LCAxNiwgMjQ0LCAyOCwgMTA1LCAyMTksIDUyLCA4NywgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMwLCAyNDgsIDkxLCAyMjAsIDE0MCwgMjM0LCAxNDUsIDg3LCAyMjQsIDE5NSwgMjI2LCA3OSwgCi0gICAgMjI5LCA4NywgMjI2LCA3OSwgMjI0LCAxOTEsIDIyMSwgMTkxLCA4NywgMjUwLCAyNSwgMjIxLCAxOTEsIDg3LCA0MywgMjI2LCAKLSAgICA4LCAyMTQsIDE2MCwgMTAzLCA0MywgMjI2LCA4LCAyNDUsIDI5LCA0MywgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCA0NCwgCi0gICAgMjI2LCA4LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjI2LCA4LCAyNDUsIDI5LCA0NCwgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCAKLSAgICA0MywgNDIsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMjQ5LCAxNjgsIDQzLCA0MiwgMjUxLCAxNjYsIDI0NSwgMjksIDQzLCA0MiwgCi0gICAgMjUxLCAxNjYsIDIzMiwgMTE0LCAyNDksIDE2OCwgNDQsIDQyLCAyNTEsIDE2NiwgMjE0LCAxNjAsIDI0OSwgMTY4LCA0NCwgCi0gICAgNDIsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgNDIsIDI1MSwgMTY2LCAyMzIsIDExNCwgMjQ5LCAxNjgsIDQzLCAyNDksIAotICAgIDEwNywgMjUxLCAxNjYsIDIxNCwgMTYwLCAxMDMsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMCwgMjI5LCAyMjUsIDEwNCwgCi0gICAgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjMyLCAxMTQsIDEwMywgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgCi0gICAgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAKLSAgICAxMDQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMiwgMTE0LCAxMDMsIDIzNSwgMjE5LCAyNDUsIDI5LCAyMDMsIDIzMiwgCi0gICAgMjIwLCAyNDUsIDI5LCAyMTQsIDE2MCwgNDMsIDE3NywgMjMyLCAxMTQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgCi0gICAgMTc0LCAyMTQsIDE2MCwgNDQsIDE3NywgMjMyLCAxMTQsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgMTc0LCAyMTgsIAotICAgIDQyLCAyMTYsIDE0LCAyMTgsIDQyLCAyNTEsIDE4MiwgMjE2LCAxNSwgNDIsIDEyNywgMjUxLCAxODMsIDQyLCAxMjcsIDI1MSwgCi0gICAgMTgzLCA0MiwgMjUxLCAxNjYsIDExNSwgMjE2LCAxNSwgNDIsIDEyNywgMzQsIDE2LCAyNTEsIDE4MiwgNDMsIDY3LCA5MywgCi0gICAgMjMyLCAyMTksIDQ0LCA2NywgOTMsIDIzMiwgMjE5LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxOCwgMjAzLCAyMjEsIDIwNywgCi0gICAgMjMyLCAyMTcsIDIwMywgMjIxLCAyMDcsIDIzMiwgMjE2LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxNSwgMjQ4LCA1NCwgMTYsIAotICAgIDE5MywgNjcsIDIyLCAyMTYsIDE1LCAyMjIsIDI1NCwgMjQ4LCA1NCwgMTYsIDE5MywgNjcsIDIyLCAyNTEsIDE4MywgMjIyLCAKLSAgICAyNTQsIDI0OCwgNTQsIDE2LCAxOTMsIDY3LCAyLCAyNTAsIDQzLCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIAotICAgIDI1MCwgNDMsIDI0OCwgNTQsIDE2LCAxOTMsIDEyMCwgMjIsIDIwMywgMiwgMjUwLCA0MywgMjQ4LCA1NCwgMTYsIDE5MywgCi0gICAgNjcsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAKLSAgICAxNiwgMTkzLCAxMjAsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxMiwgMzUsIAotICAgIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgMjQ4LCA1NCwgMTYsIDE5MywgMTIwLCAyMiwgCi0gICAgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCAKLSAgICAxMjAsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxNiwgMTUsIDIzMywgNTIsIDI0OCwgNTQsIAotICAgIDE2LCAxOTMsIDY3LCAyMiwgMjUxLCAxODMsIDIzMywgNTIsIDQyLCAyNDQsIDQwLCAyMjMsIDU3LCA4NywgMjQ1LCAxOTAsIAotICAgIDg3LCA2NywgMjMyLCAyMjAsIDI0NSwgMjksIDIzMSwgMzgsIDI1MSwgMTU0LCAyMzEsIDM4LCAyMDAsIDExNSwgMjE5LCAKLSAgICAyNTIsIDIzMSwgMzgsIDIxOSwgMjUzLCAxMTUsIDIzMiwgMTQzLCAyMzEsIDM4LCAyMDAsIDExNSwgMTEzLCAyMTksIDIzOSwgCi0gICAgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMTE1LCAyMzIsIDE0MywgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMjM1LCA3MCwgCi0gICAgMjMxLCAzOCwgMjE1LCAyMDksIDIzMSwgMzgsIDIxNiwgMjI0LCAyMzEsIDM4LCAyMjUsIDE5MSwgMjQ1LCAyMzIsIDI0MiwgCi0gICAgMTI5LCAyNDMsIDIyNiwgMjE2LCAxNSwgMjI2LCA3LCAyNTEsIDE4MywgMjI2LCA3LCAyMTYsIDE1LCAyNDksIDEwNywgMTI3LCAKLSAgICAyNTEsIDE4MywgMjQ5LCAxMDcsIDEyNywgMjE2LCAxNSwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDI1MSwgMTgzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNzEsIDIxNSwgMjQwLCAyNTIsIDQzLCAyMjIsIDIzNywgMiwgMjUwLCA0MywgMjE4LCAxMjIsIDI0NCwgCi0gICAgNzIsIDI1NSwgMjYsIDI0OSwgMTA0LCAyNDUsIDE3OSwgMjM1LCAyMDUsIDI0OCwgOTEsIDI0NSwgMzIsIDg3LCA4NSwgMjIyLCAKLSAgICAyNTAsIDUyLCAyMTUsIDIyNiwgODUsIDIzMywgNDgsIDUyLCAyMTUsIDIyNiwgODUsIDIxNCwgMTYyLCA1MiwgMjE1LCAyMjYsIAotICAgIDg1LCAyNDYsIDExMywgNTIsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIAotICAgIDIzMywgNDgsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIDIyMiwgMjUwLCAyMTUsIDIyNywgMiwgNTIsIDY3LCAKLSAgICAxMzAsIDI1NCwgMTgyLCAyNTAsIDExLCAyMTgsIDEyOCwgMjE2LCA4NywgMjUwLCAxMSwgMjQwLCAyNDQsIDIsIDI0NCwgNTgsIAotICAgIDIyMSwgMjQzLCAxNiwgMzEsIDIyNywgMjA2LCAxNiwgMzEsIDIxOCwgMTU0LCA2NCwgMjQxLCAyNDAsIDE2LCAzMSwgMjE4LCAKLSAgICAxNTQsIDY0LCAyMTYsIDIxMywgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNiwgMjEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgCi0gICAgMjE1LCAyNDQsIDE2LCAzMSwgMjQ1LCAxNDAsIDE2LCAzMSwgMjU1LCAxNiwgMTYsIDMxLCAyNTIsIDUyLCAxNiwgMzEsIAotICAgIDI1MiwgMTg3LCAxNiwgMzEsIDIwMywgMjE3LCA5MCwgMTYsIDMxLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDE2LCAzMSwgNjcsIAotICAgIDIxNywgOTAsIDE2LCAzMSwgMjQ0LCAyOCwgMjQ0LCAxNTMsIDE2LCAzMSwgMjUwLCAyMzgsIDIyMywgNTYsIDE2LCAzMSwgCi0gICAgMjIwLCAzMCwgMjI2LCAxMzQsIDE2LCAzMSwgMjIwLCAzMCwgMjM2LCA2LCAxNiwgMzEsIDI0OCwgMTU5LCAyMzIsIDIxMCwgCi0gICAgMjQ1LCA4NSwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAxNiwgMzEsIDI0OCwgMzksIDI0OSwgMTg2LCAxMDUsIAotICAgIDE2LCAzMSwgMjQ4LCAzOSwgMjQ5LCAxODYsIDE1OCwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTYxLCAxNiwgMzEsIAotICAgIDE1MiwgMjU1LCAxNiwgMTYsIDMxLCAyMTcsIDE3OCwgMjM2LCA2OSwgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNSwgMjQ1LCAKLSAgICAyNTEsIDIyMSwgMTYsIDMxLCAyNTEsIDEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgMjMxLCA4NiwgMTYsIDMxLCAyMTgsIAotICAgIDYyLCAxNiwgMzEsIDI0NSwgODUsIDE2LCAzMSwgMjQ0LCAxMTUsIDIyMCwgMTM5LCAxNiwgMzEsIDI0MiwgMTI4LCAyMjAsIAotICAgIDEzOSwgMTYsIDMxLCAyMjMsIDEyNCwgMjIwLCAxMzksIDE2LCAzMSwgMjE0LCAxNzQsIDIyMCwgMTM5LCAxNiwgMzEsIDIxOSwgCi0gICAgMjAsIDE2LCAzMSwgMjQ4LCA3MSwgMjUxLCAyMjQsIDg3LCAyMDQsIDI1MSwgMTcxLCAxNiwgMzEsIDIyOSwgOTAsIDE2LCAKLSAgICAzMSwgMjQ4LCA3MiwgMjQ0LCAyOCwgMTA1LCAxNiwgMzEsIDIxOCwgNjMsIDI0NCwgMjgsIDEwNSwgMjI2LCAyNDUsIDEwMywgCi0gICAgMjI2LCAyNDUsIDI1MCwgMTYwLCAyMjYsIDI0NSwgMjQ0LCAzMSwgMjI2LCAyNDUsIDIzNSwgMjAwLCAyNDQsIDMxLCAyMjYsIAotICAgIDI0NSwgMjUyLCA1MCwgMjUxLCAxMzIsIDIyNiwgMjQ1LCAyNTEsIDE3OCwgMjE2LCAxMTIsIDIyNiwgMjQ1LCAyNTEsIDE2MywgCi0gICAgMjUyLCAxNTQsIDI0MCwgMTEwLCAyMjYsIDI0NSwgMjU0LCAxMzUsIDY0LCAyNTAsIDEzNywgMjI2LCAyNDUsIDI0OCwgMTY0LCAKLSAgICAyMjYsIDI0NSwgMjQ5LCA5NSwgMjU1LCAyMCwgMjI3LCAyMDQsIDIyNiwgMjQ1LCA1MiwgMjUyLCAxODgsIDM3LCAyMSwgCi0gICAgMTExLCAzNywgMjEsIDEwNSwgMzcsIDIxLCAxNTgsIDM3LCAyMSwgMTYxLCAzNywgMjEsIDE5MCwgMzcsIDIxLCAxOTUsIDM3LCAKLSAgICAyMSwgMTk5LCAzNywgMjEsIDE5NiwgMzcsIDIxLCAyMDEsIDM3LCA1NCwgMjE2LCAyNDgsIDM3LCA1NCwgMjQ1LCAxNzUsIAotICAgIDM3LCA1NCwgMjE1LCA3NiwgMzcsIDU0LCAyMTYsIDE2NSwgMzcsIDU0LCAyNDQsIDEzLCAzNywgNTQsIDI0NCwgMTI2LCAzNywgCi0gICAgNTQsIDIxOSwgMTIxLCAzNywgNTQsIDIyMCwgMTIxLCAzNywgNTQsIDI0NSwgMTk4LCAzNywgNTQsIDIyOCwgMjAyLCAzNywgCi0gICAgNTQsIDIxNSwgNzMsIDg4LCAyMSwgMTExLCA4OCwgMjEsIDEwNSwgODgsIDIxLCAxNTgsIDg4LCAyMSwgMTYxLCA4OCwgMjEsIAotICAgIDE5MCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMTk5LCA4OCwgMjEsIDE5NiwgODgsIDIxLCAyMDEsIDg4LCA1NCwgMjE2LCAKLSAgICAyNDgsIDg4LCA1NCwgMjQ1LCAxNzUsIDg4LCA1NCwgMjE1LCA3NiwgODgsIDU0LCAyMTYsIDE2NSwgODgsIDU0LCAyNDQsIAotICAgIDEzLCA4OCwgNTQsIDI0NCwgMTI2LCA4OCwgNTQsIDIxOSwgMTIxLCA4OCwgNTQsIDIyMCwgMTIxLCA4OCwgNTQsIDI0NSwgCi0gICAgMTk4LCA4OCwgNTQsIDIyOCwgMjAyLCA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIAotICAgIDExMywgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMSwgMTM0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDE5LCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDg5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTksIDEyNywgMjQzLCAyMzYsIAotICAgIDIxOCwgMTMxLCAyMSwgMjIwLCAxMjQsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDI0NSwgMjAxLCAyNDMsIDIzNiwgMjE4LCAKLSAgICAxMzEsIDIxLCAyMjgsIDIwNSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjE2LCAyNDksIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgNTQsIDI0NSwgMTc2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc3LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAKLSAgICAyMTYsIDE2NiwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAxNCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAKLSAgICAxMjcsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIxOSwgMTIyLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMjAsIDEyMiwgCi0gICAgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ1LCAxOTksIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIyOCwgMjAzLCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDg4LCA3LCA0LCAxLCA2MSwgODgsIDcsIAotICAgIDQsIDEsIDI1MywgMTY2LCA4OCwgNywgNCwgMSwgMjUxLCA3NCwgODgsIDcsIDQsIDEsIDI0OSwgNjgsIDg4LCA3LCA0LCAxLCAKLSAgICA3NiwgODgsIDcsIDQsIDEsIDI0NSwgMTQsIDg4LCA3LCA0LCAxLCAyNDMsIDIwOSwgODgsIDcsIDQsIDEsIDI0MiwgNjcsIAotICAgIDg4LCA3LCA0LCAxLCA3NCwgODgsIDcsIDQsIDEsIDIzNSwgMTUwLCA4OCwgNywgNCwgMSwgMjM1LCAyOSwgODgsIDcsIDQsIAotICAgIDEsIDE1NiwgODgsIDcsIDQsIDEsIDE5NCwgODgsIDcsIDQsIDEsIDIzMCwgMzAsIDg4LCA3LCA0LCAxLCA3OCwgODgsIDcsIAotICAgIDQsIDEsIDIyNiwgMTA5LCA4OCwgNywgNCwgMSwgMjI0LCA5OSwgODgsIDcsIDQsIDEsIDE1MywgODgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTMsIDg4LCA3LCA0LCAxLCAyMTcsIDE1MywgODgsIDcsIDQsIDEsIDY5LCA4OCwgNywgNCwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKLSAgICA0LCAxLCAyMTIsIDk4LCA4OCwgNywgNCwgMSwgMjExLCAxNzgsIDg4LCA3LCA0LCAxLCAyMTEsIDExNywgODgsIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAzNywgNywgNiwgMSwgNjEsIDM3LCA3LCA2LCAxLCAyNTMsIDE2NiwgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIAotICAgIDM3LCA3LCA2LCAxLCAyNDksIDY4LCAzNywgNywgNiwgMSwgNzYsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAzNywgNywgNiwgMSwgCi0gICAgMjQzLCAyMDksIDM3LCA3LCA2LCAxLCAyNDIsIDY3LCAzNywgNywgNiwgMSwgNzQsIDM3LCA3LCA2LCAxLCAyMzUsIDE1MCwgCi0gICAgMzcsIDcsIDYsIDEsIDIzNSwgMjksIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTQsIDM3LCA3LCA2LCAxLCAKLSAgICAyMzAsIDMwLCAzNywgNywgNiwgMSwgNzgsIDM3LCA3LCA2LCAxLCAyMjYsIDEwOSwgMzcsIDcsIDYsIDEsIDIyNCwgOTksIAotICAgIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgNywgNiwgMSwgMjE3LCAxNTMsIDM3LCA3LCA2LCAKLSAgICAxLCA2OSwgMzcsIDcsIDYsIDEsIDIxNCwgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgCi0gICAgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgCi0gICAgNywgNCwgMSwgMjUzLCAxNjYsIDM3LCA3LCA0LCAxLCAyNTEsIDc0LCAzNywgNywgNCwgMSwgMjQ5LCA2OCwgMzcsIDcsIDQsIAotICAgIDEsIDc2LCAzNywgNywgNCwgMSwgMjQ1LCAxNCwgMzcsIDcsIDQsIDEsIDI0MywgMjA5LCAzNywgNywgNCwgMSwgMjQyLCA2NywgCi0gICAgMzcsIDcsIDQsIDEsIDc0LCAzNywgNywgNCwgMSwgMjM1LCAxNTAsIDM3LCA3LCA0LCAxLCAyMzUsIDI5LCAzNywgNywgNCwgCi0gICAgMSwgMTU2LCAzNywgNywgNCwgMSwgMTk0LCAzNywgNywgNCwgMSwgMjMwLCAzMCwgMzcsIDcsIDQsIDEsIDc4LCAzNywgNywgCi0gICAgNCwgMSwgMjI2LCAxMDksIDM3LCA3LCA0LCAxLCAyMjQsIDk5LCAzNywgNywgNCwgMSwgMTUzLCAzNywgNywgNCwgMSwgMjIyLCAKLSAgICA5MywgMzcsIDcsIDQsIDEsIDIxNywgMTUzLCAzNywgNywgNCwgMSwgNjksIDM3LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzcsIDcsIAotICAgIDQsIDEsIDIxMiwgOTgsIDM3LCA3LCA0LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDQsIDEsIDIxMSwgMTE3LCAzNywgNywgNCwgMSwgCi0gICAgMjEwLCAxNTksIDM3LCAyMSwgMjEwLCA4NiwgMTUyLCAzNywgNTQsIDI0NSwgMTc1LCAxNTIsIDM3LCA1NCwgMjE1LCA3NiwgCi0gICAgMTUyLCAzNywgNTQsIDIxNiwgMTY1LCAxNTIsIDM3LCA1NCwgMjQ0LCAxMywgMTUyLCAzNywgNTQsIDI0NCwgMTI2LCAxNTIsIAotICAgIDM3LCA1NCwgMjE5LCAxMjEsIDE1MiwgMzcsIDU0LCAyMjAsIDEyMSwgMTUyLCAzNywgNTQsIDI0NSwgMTk4LCAxNTIsIDM3LCAKLSAgICA1NCwgMjI4LCAyMDIsIDE1MiwgMzcsIDU0LCAyMTUsIDczLCA1MiwgMzcsIDIxLCAxMTEsIDUyLCAzNywgMjEsIDEwNSwgNTIsIAotICAgIDM3LCAyMSwgMTU4LCA1MiwgMzcsIDIxLCAxNjEsIDUyLCAzNywgMjEsIDE5MCwgNTIsIDM3LCAyMSwgMTk1LCA1MiwgMzcsIAotICAgIDIxLCAxOTksIDUyLCAzNywgMjEsIDE5NiwgNTIsIDM3LCAyMSwgMjAxLCA1MiwgMzcsIDU0LCAyMTYsIDI0OCwgMTUyLCAzNywgCi0gICAgMjEsIDIxMCwgODYsIDkzLCA5OSwgMTkzLCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjQxLCA1MSwgOTMsIDk5LCAxOTMsIAotICAgIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTE0LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAKLSAgICAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjE1LCAyMTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTMsIAotICAgIDIyNCwgMjcsIDI0OCwgMTY1LCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjI0LCAyNywgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCAKLSAgICA5OSwgMTkzLCAyMjQsIDI3LCAyNDgsIDE2NSwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMjQsIDI3LCAyNDgsIDE2NSwgCi0gICAgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQ0LCAyNDEsIAotICAgIDIyOCwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIyMiwgMjU0LCAKLSAgICA5MywgOTksIDE5MywgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgCi0gICAgMTkzLCAxMjAsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQ0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIAotICAgIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIAotICAgIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDIyMiwgCi0gICAgMjU0LCA5MywgOTksIDY3LCAxOTMsIDIyLCA0NCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAKLSAgICAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDY3LCAxMTQsIDIyLCAKLSAgICA0NCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDE5MywgCi0gICAgMjIsIDQ0LCAxMjQsIDI0MSwgMjI4LCA5MywgOTksIDExNCwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDY3LCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCA2NywgMTkzLCAyMiwgNDMsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIAotICAgIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzNiwgOTMsIDk5LCA2NywgMTE0LCAKLSAgICAyMiwgNDMsIDIzMiwgMjM2LCA5MywgOTksIDEyNCwgMTkzLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxOTMsIAotICAgIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAKLSAgICAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgCi0gICAgMTI0LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCA0MywgMTkzLCAyMiwgNDQsIDEyNCwgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyNDEsIDUxLCA5MywgCi0gICAgOTksIDE5MywgMTIwLCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDEyMCwgMTkzLCAyMiwgMjAzLCAyNDEsIDIyOCwgCi0gICAgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCAxMjAsIDI0MSwgCi0gICAgMjI4LCA5MywgOTksIDQzLCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCA2NywgMjMyLCAyMzYsIAotICAgIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCA2NywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDE5MywgMjIsIDIwMywgMjQxLCAKLSAgICAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAxMjQsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAxMjAsIAotICAgIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDMsIDEyMCwgMTE0LCAKLSAgICAyMiwgNDQsIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDMsIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyNCwgMTE0LCAyMiwgNDMsIAotICAgIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCAxMjAsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCAxMjQsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCA2NywgMjQxLCAyMjgsIDkzLCAKLSAgICA5OSwgNDMsIDE5MywgMjIsIDQ0LCA2NywgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAKLSAgICA1MiwgMjQxLCA1MSwgOTMsIDk5LCA1MiwgMjEzLCAyMzksIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjQsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTIwLCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjAsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgNDQsIDI0NiwgCi0gICAgMTIxLCA5MywgOTksIDY3LCA1MiwgMjIsIDQ0LCAyMTksIDE1NiwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIAotICAgIDk5LCA2NywgMjE5LCAxNTcsIDIyLCA0MywgMjQ2LCAxMjEsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDMsIDIxOSwgMTU2LCA5MywgCi0gICAgOTksIDUyLCA2NywgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCAKLSAgICA5OSwgMTI0LCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTIwLCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCAKLSAgICA5OSwgNTIsIDEyMCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgMjAzLCAyNDYsIDEyMSwgOTMsIAotICAgIDk5LCA2NywgNTIsIDIyLCAyMDMsIDIxOSwgMTU2LCA5MywgOTksIDUyLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAKLSAgICAyNTQsIDM0LCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDI1NCwgMzQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNTQsIDM0LCAxMjAsIDIyLCAyMzMsIDUyLCA5MywgOTksIDE5MywgMjU0LCAzNCwgMTIwLCAyMiwgMjIyLCAKLSAgICAyNTQsIDkzLCA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MywgMjMyLCAxMTQsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0MywgMjE2LCA0MywgMjMyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgCi0gICAgMjQ4LCA3LCAyNDksIDEzOCwgOTMsIDk5LCAxOTMsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCAyMTQsIDE2MywgOTMsIDk5LCAKLSAgICAxOTMsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMjQ2LCAxMTQsIDkzLCA5OSwgMTE0LCAyMzMsIDUyLCA5MywgOTksIDExNCwgCi0gICAgMjE0LCAxNjMsIDkzLCA5OSwgMTE0LCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDI0NiwgMTE0LCA5MywgOTksIDE5MywgNDMsIAotICAgIDIyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAyMiwgMTE0LCAyNDYsIDExNCwgOTMsIDk5LCAxMTQsIDQzLCAKLSAgICAyMiwgMTkzLCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDE5MywgMjQ2LCAxMTQsIDIxNCwgMTYwLCAxNjMsIAotICAgIDI1MSwgMjIxLCAyMzIsIDExNCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIzMiwgMTE0LCAxMjMsIDIyNCwgMjUsIDI1MSwgCi0gICAgMjIxLCAyMzIsIDExNCwgMTM0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDIzMiwgMTE0LCAxNjMsIDI1MSwgMjIxLCAyMzIsIAotICAgIDExNCwgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgMjIxLCAyMzIsIDExNCwgMTM0LCAyMjQsIDIzLCAyNTEsIDIyMSwgMjMyLCAKLSAgICAxMTQsIDIyMCwgMTI0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDI0MywgMjM2LCAyNTEsIDIyMSwgNDMsIDIyMCwgMTI0LCAyNDUsIAotICAgIDE5NSwgMjUxLCAyMjEsIDQzLCAxMzQsIDIyNCwgMjMsIDI1MSwgMjIxLCA0MywgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgCi0gICAgMjIxLCA0MywgMTYzLCAyNTEsIDIyMSwgNDMsIDEzNCwgMjQ1LCAxOTUsIDI1MSwgMjIxLCA0MywgMTIzLCAyMjQsIDI1LCAKLSAgICAyNTEsIDIyMSwgNDMsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCA0NCwgMTYzLCAyNTEsIDIyMSwgMTkzLCAyMjAsIDk0LCAKLSAgICAyMzEsIDg3LCAyMjAsIDk0LCAyNDgsIDE3MCwgMjIwLCA5NCwgMjE0LCAxNjAsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCAKLSAgICA0NCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIyNCwgMjksIDIzMiwgMTE0LCAyMzMsIDUyLCAyMjQsIDI5LCAyMzIsIAotICAgIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCAyMzMsIDUyLCAyMjQsIDI5LCAyMTQsIDE2MCwgNDMsIDIyLCAKLSAgICAyMzIsIDExNCwgNDMsIDIyLCAyMzIsIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgCi0gICAgMTE0LCAyMjIsIDI1NCwgMjI0LCAyOSwgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIAotICAgIDIzMywgNTIsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTE0LCAyMjIsIDI1NCwgCi0gICAgMjI0LCAyOSwgMjE0LCAxNjAsIDIyMiwgMjU0LCAyMjQsIDI5LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDExNCwgMjMzLCAKLSAgICA1MiwgMjI0LCAyOSwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIDQzLCAyMiwgMjMyLCAxMTQsIDIyMiwgMjU0LCA4NSwgCi0gICAgMjE4LCAyMzYsIDcxLCAyMTgsIDIzNiwgNzEsIDQyLCAyLCAyMjIsIDE4NSwgMjQ5LCAxNjcsIDcxLCA0MiwgMjQ5LCAxOTUsIAotICAgIDg1LCA0LCAyMTgsIDIzNiwgNDIsIDIsIDIwMywgMjQ0LCAxMTMsIDQyLCAyLCA2NywgMjQ0LCAxMTMsIDQyLCAyLCAyMjYsIAotICAgIDE0OCwgMjQ5LCAxMzQsIDI0NCwgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMTYsIDQzLCAyMzIsIDExNCwgNDQsIDI0NCwgCi0gICAgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQzLCAyMzIsIDExNCwgNDMsIDI0NCwgMTEzLCA0MiwgMiwgMjQ4LCA3LCAKLSAgICAyNDksIDEzNCwgMjQ0LCAxMTMsIDg1LCA0LCAyMTgsIDIzNiwgNzEsIDQsIDIxOCwgMjM2LCA4NSwgMjIzLCAxMTksIDcxLCAKLSAgICAyMjMsIDExOSwgODUsIDY3LCAyMjMsIDExOSwgNzEsIDY3LCAyMjMsIDExOSwgODUsIDIyNiwgMTAsIDcxLCAyMjYsIDEwLCAKLSAgICA4NSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgCi0gICAgMjI2LCA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIAotICAgIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAKLSAgICAyNTAsIDIyNSwgMTEsIDcxLCAyMjIsIDI1MCwgMjI1LCAxMSwgODUsIDI0NiwgMTEzLCAyMTUsIDIyNiwgNzEsIDI0NiwgCi0gICAgMTEzLCAyMTUsIDIyNiwgODUsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgNzEsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgODUsIAotICAgIDIzMywgNDgsIDIxNSwgMjI2LCA3MSwgMjMzLCA0OCwgMjE1LCAyMjYsIDg1LCAyMzMsIDQ4LCA0LCAyMTUsIDIyNiwgNzEsIAotICAgIDIzMywgNDgsIDQsIDIxNSwgMjI2LCA4NSwgMjMzLCA0OCwgMjI1LCAxMSwgNzEsIDIzMywgNDgsIDIyNSwgMTEsIDg1LCAKLSAgICAyNDgsIDAsIDcxLCAyNDgsIDAsIDcxLCAyNDgsIDEsIDI0OSwgMTk1LCA4NSwgNCwgMjQ4LCAwLCAyNDQsIDk3LCAyMzIsIAotICAgIDExMCwgNzEsIDI1MCwgNDMsIDI0NiwgMTI2LCAyNTAsIDQzLCAyNTAsIDQ0LCAyLCA2NywgMjQ0LCAxMTMsIDI1MSwgMTE5LCAKLSAgICA4NSwgMjUwLCA0MywgMjUwLCA0NCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDQ0LCAxNjMsIDI1MSwgCi0gICAgMjI5LCAyNTAsIDQ0LCAyLCAyMzIsIDExNCwgMTYzLCAyNTEsIDIyOSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDE2MywgMjUxLCAKLSAgICAyMjksIDI1MCwgNDQsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyOSwgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDI1NCwgMTY0LCAKLSAgICAyNTEsIDk2LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjksIDI1MSwgMjI5LCA0MywgMTYzLCA4NSwgMjUwLCA0MywgNDQsIDE2MywgCi0gICAgODUsIDI1MCwgNDMsIDIzNSwgMjAxLCAyNTEsIDEyMSwgMjM1LCAyMDEsIDcxLCAyNTAsIDQzLCAyMTQsIDE2MCwgMTYzLCAKLSAgICAyMzUsIDIwMSwgNzEsIDI1MCwgNDMsIDIzMiwgMTE0LCAxNjMsIDIzNSwgMjAxLCA3MSwgMjUwLCA0MywgMjE0LCAxNjAsIAotICAgIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAyNTQsIDMzLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjksIDI1MCwgNDEsIDI1NCwgMzMsIAotICAgIDIzMiwgMTE0LCA0NCwgMjI0LCAyOSwgMjUwLCA0MSwgMjU0LCAzMywgMjMyLCAxMTQsIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAKLSAgICAyNTQsIDMzLCAyMTQsIDE2MCwgMTYzLCAyNTAsIDQzLCAyMzIsIDExNCwgMTYzLCAyNTAsIDQzLCA4NSwgMjMyLCAxMTQsIAotICAgIDQ0LCAyMTUsIDIyNiwgODUsIDIzMiwgMTE0LCA0MywgMjE1LCAyMjYsIDg1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI2LCA4NSwgCi0gICAgMjE0LCAxNjAsIDQ0LCAyMTUsIDIyNiwgNzEsIDI1MSwgMTIxLCA0MiwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDQyLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0MywgMjQ4LCA3LCAxNjMsIDI1MSwgMjI5LCA0MiwgMiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjQwLCAyMzIsIDIxOSwgCi0gICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgMjQ3LCAxMjgsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDQsIDE2MywgMjUxLCAyMjksIDIzMywgOTEsIDI1MCwgNDMsIDcxLCA0MiwgCi0gICAgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgNDIsIDIsIDIzMiwgMTE0LCA0MywgMjI0LCAyOCwgNzEsIDQyLCAyLCAKLSAgICAyMzIsIDExNCwgNDQsIDIyNCwgMjgsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgCi0gICAgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjMyLCAxMTQsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgMjMyLCAxMTQsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCAyMTQsIAotICAgIDE2MCwgNDMsIDIxNSwgMjI2LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI2LCAyMzIsIDExNCwgNDMsIDIxNSwgMjI2LCA3MSwgCi0gICAgMjMxLCA4NywgMjE4LCAyMzYsIDg1LCAyMzEsIDg3LCAyMTgsIDIzNiwgNzEsIDIzMSwgODcsIDQsIDIxOCwgMjM2LCA4NSwgCi0gICAgMjMxLCA4NywgNCwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjE1LCAyMjYsIDg1LCAyMTgsIDM5LCAyLCAyMjMsIDEzNSwgCi0gICAgMjQ5LCAyNTUsIDIxNCwgMTk0LCAyMTksIDYyLCAyNDksIDIzMCwgODUsIDIxOCwgMTU4LCA3MSwgMjE4LCAxNTgsIDIzMiwgCi0gICAgMjM0LCAyMTYsIDEzMywgMjE4LCAzOCwgMjUzLCAyNDIsIDIyOCwgNzYsIDI0OCwgNDYsIDIyOCwgNzYsIDI0OSwgMjAzLCAKLSAgICAyMjYsIDE2NywgODUsIDIxNywgMSwgNzEsIDIxNywgMSwgMjUyLCAxNjQsIDI1MSwgMTcxLCAyNTIsIDE2NCwgOTMsIDIsIAotICAgIDI1MCwgMTM3LCAyNTIsIDE2NCwgOTMsIDIsIDIxMSwgMTc4LCAyMjIsIDAsIDIxNCwgMTk1LCAyLCAyMjMsIDE2MywgMjQ2LCAKLSAgICA5MiwgMjQwLCAyNTAsIDI1MiwgMzAsIDcxLCAyMjAsIDQsIDIyNSwgMTA0LCA4NSwgMjIwLCA0LCAyMjUsIDEwNCwgMjIwLCAKLSAgICA4OSwgMjIzLCA1MiwgMjIyLCAxODksIDI0NCwgNjMsIDI0MSwgMjM1LCAyNTEsIDEyMSwgODUsIDQzLCAyMjUsIDEwLCAyMzUsIAotICAgIDI0OSwgODUsIDQ0LCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDEyMCwgMjI1LCAKLSAgICAxMCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDIzNSwgMjQ5LCAyMTksIAotICAgIDEwMywgMjIsIDI0OSwgMTM3LCAyNTAsIDIyNywgNTAsIDIyMywgMTc1LCA1MCwgMjUxLCAyNDcsIDUwLCAyNTEsIDMzLCAKLSAgICAyNTQsIDExMCwgMjI2LCAxNDksIDI0OSwgMTM4LCAyNTAsIDExOSwgMjIzLCA0MCwgMjQ5LCAxMzksIDY0LCAyMzIsIDEyNCwgCi0gICAgMjQ5LCAxMzksIDY0LCAyMzUsIDEyMiwgMjE4LCAxNTksIDIyLCAyNDksIDE0NCwgMjQ0LCAxNzYsIDg3LCAyNTUsIDEsIAotICAgIDIyMCwgOTEsIDI0MiwgMjksIDIyLCAyMTksIDE5MSwgMjI1LCAyMjMsIDg3LCAyMTAsIDI1NCwgMjExLCA2OSwgMjE1LCAKLSAgICAyMTYsIDMxLCAyNDEsIDIzMCwgMjE1LCAyMTYsIDMxLCAyMzMsIDExMywgMjE1LCAyMTYsIDMxLCAyNDQsIDEwNCwgMjE1LCAKLSAgICAyMTYsIDMxLCAyMTYsIDEzNCwgMjE1LCAyMTYsIDMxLCAyMTEsIDIzOSwgMjE1LCAyMTYsIDMxLCAyMTIsIDQwLCAyMTUsIAotICAgIDIxNiwgMzEsIDIzMCwgMTIwLCAyMTUsIDIxNiwgMzEsIDI0NSwgMjMxLCAyMTIsIDEsIDY0LCAyNDgsIDI2LCA3MSwgMjQzLCAKLSAgICAyNDcsIDI0NCwgMTk4LCA3MSwgMjE5LCA3NiwgMjQ0LCAxOTgsIDg1LCAyMTksIDc2LCAyNDQsIDE5OCwgNzEsIDIxOCwgMzksIAotICAgIDIsIDIyMywgMTM1LCAyNDQsIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzMsIDIzMywgODYsIDIyNCwgMjUsIDIzMCwgMTMzLCAKLSAgICAyMzEsIDU5LCAyNDQsIDE0NiwgNTAsIDI0NSwgMjMxLCAyMzEsIDE5NSwgNTAsIDIzNSwgNDQsIDIyMSwgMjIyLCAyMTQsIAotICAgIDE0NSwgMjI5LCA5OCwgMjI1LCAyMywgMjU0LCAyMCwgMjE3LCA0MSwgMjQzLCA1OSwgMjUxLCAxMSwgMjMzLCAyNSwgMjEzLCAKLSAgICAxNTAsIDIzMiwgMjQ0LCAyMjEsIDE5MywgMjIyLCAyMSwgMjUxLCAwLCAyNTQsIDUwLCAyMjUsIDU1LCA3MSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDcxLCAyNTAsIDEyNSwgMjI0LCAxNywgNzEsIDI1MCwgMTI1LCAyMjIsIDE5NywgNzEsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgNzEsIDI1MCwgMTI1LCAyMzQsIDM2LCA3MSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDg1LCAyNTAsIDEyNSwgMjI0LCAxNywgODUsIDI1MCwgMTI1LCAyMjIsIDE5NywgODUsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgODUsIDI1MCwgMTI1LCAyMzQsIDM2LCA4NSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjE5LCAxOCwgCi0gICAgMjE4LCA1MSwgNzEsIDI0MSwgMjM1LCAyMTgsIDUxLCA3MSwgMjQ4LCAxLCAyMTgsIDUxLCA4NSwgMjQ5LCAyNTMsIDIxOCwgCi0gICAgNTEsIDcxLCAyMTksIDE4LCAyMTgsIDUxLCA4NSwgMjQxLCAyMzUsIDIxOCwgNTEsIDg1LCAyNDgsIDEsIDIxOCwgNTEsIDcxLCAKLSAgICAyNDksIDI1MywgMjE4LCA1MSwgMjQwLCAyNTAsIDIxOCwgMjQwLCAyMjQsIDI1LCAyMjgsIDUyLCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjUyLCA4MSwgMjQ1LCAxOTcsIDIyOCwgNDcsIDI1MiwgODEsIDIxOSwgMTIwLCAyMjgsIDQ3LCAyMzAsIDYyLCAyNDQsIAotICAgIDc0LCA1MCwgMjMwLCA2MiwgMjI5LCAxOTMsIDUwLCAyMzAsIDYyLCAyMjAsIDc4LCA1MCwgMjEyLCA5LCAxODMsIDI0OSwgCi0gICAgMTM4LCAyNDUsIDIyOCwgMTgzLCAyNDksIDEzOCwgMjE0LCAxNzEsIDIyMywgMTE1LCA4NywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0OCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NSwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0MywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0MiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjQzLCA1NywgMjMxLCAxNDMsIDg1LCAyMTQsIDE3MSwgMjIzLCAKLSAgICAxMTUsIDg3LCAyMjMsIDExNiwgMjI2LCAyNCwgODcsIDIyNiwgMCwgMjI2LCAyNCwgODcsIDIyNSwgMTc3LCAyMjYsIDI0LCAKLSAgICA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0OSwgMjQ0LCAxOTcsIDI0NywgMjQ5LCAyNDQsIDE5NiwgMjQ3LCAyNDksIDI0NCwgCi0gICAgMTk1LCAyNDcsIDI0OSwgMjQ0LCAxOTQsIDI0NywgMjQ5LCAyNDQsIDE5MywgMjQ3LCAyNDksIDI0NCwgMTkyLCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgNTksIDIyMiwgMjU0LCA3MSwgMjUwLCA0NCwgMiwgMTEzLCAyNDcsIDEyNiwgODUsIDI1MCwgNDQsIDIsIDcxLCAKLSAgICA1OSwgMjIyLCAyNTQsIDg1LCAyNTAsIDQ0LCAyLCAxMTMsIDcxLCAyNDcsIDEyNiwgMjMwLCAxNDcsIDMxLCAyMTEsIDY5LCAKLSAgICAyMzAsIDE0NywgMzEsIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDI0MiwgMTM4LCAyMTEsIDY5LCAyNDcsIDIzMiwgMzEsIAotICAgIDIzMywgMTksIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDIzMywgMTksIDIxMSwgNjksIDI0NywgMjMyLCAzMSwgMjQyLCAKLSAgICAxMzgsIDIxMCwgMjUzLCA3MSwgMjQ0LCA4MSwgODUsIDI0NCwgODEsIDI0MiwgMjksIDIyLCAyMjUsIDEwNywgMjU0LCAxMjgsIAotICAgIDI0OSwgMTM2LCAyMTcsIDIzNiwgMjE4LCAxNjYsIDY0LCAyNTQsIDIzNSwgMjIxLCAyMDgsIDI1NCwgMTc4LCAyNDQsIDU5LCAKLSAgICAyNDMsIDY3LCAyMTgsIDE2NiwgNjQsIDI0MSwgMjA5LCAyNTMsIDIwNywgODcsIDI0NCwgNzAsIDIyNiwgMTMwLCA3MSwgCi0gICAgMjE4LCAxNTgsIDEzNCwgMjMyLCAyMTQsIDI0OSwgMTgzLCAyMjIsIDI1NCwgMTM0LCAyMzIsIDIxNCwgMjQ5LCAxODMsIAotICAgIDIzMywgNTIsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgMTMwLCA1MCwgMjQ2LCAxMTgsIDI0NCwgMTQ2LCA1MCwgMjQ2LCAKLSAgICAxMTgsIDIzMSwgMTk1LCA1MCwgMjM1LCAyMTAsIDI0NCwgMTQ2LCAyMiwgMjMxLCAxOTUsIDUwLCAyMzEsIDE5NSwgMjIsIAotICAgIDI0NCwgMTQ2LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCAyMiwgMjMxLCAKLSAgICAxOTUsIDIyLCAyNDQsIDE0NiwgNTAsIDY3LCAyMzEsIDE5NSwgMiwgMjE4LCAxMDUsIDUwLCAyMDMsIDIzMSwgMTk1LCAyLCAKLSAgICAyMTgsIDEwNSwgNTAsIDIzMSwgODcsIDcxLCAyNTAsIDQzLCAyMzEsIDg3LCA4NSwgMjUwLCA0MywgMjMxLCA4NywgNCwgNzEsIAotICAgIDI1MCwgNDMsIDIzMSwgMTU4LCA4NywgMjQ3LCAxNzUsIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTUsIDg3LCAyNDksIDIzOSwgCi0gICAgMjQzLCAyMzEsIDIxNCwgMTQxLCAyMjksIDkzLCAyNTAsIDE2OSwgMjI2LCA2NSwgMjM1LCA1MCwgMjEzLCAxODUsIDI1MCwgCi0gICAgMTAxLCA4NSwgMjMwLCAxMzQsIDIzMiwgMjMxLCAyMjAsIDExNCwgMjIwLCAxNDksIDIyNCwgOCwgMjIwLCAxMzIsIDIxOSwgCi0gICAgNTcsIDI1MiwgMTY3LCAyNTIsIDEzNCwgOTIsIDIzNCwgMTQ0LCA3MSwgMjQ2LCAxMDEsIDIzMSwgMTkwLCA3MSwgMjQ2LCAKLSAgICAxMDEsIDIzNCwgODQsIDg1LCAyNDYsIDEwMSwgMjMxLCAxOTAsIDg1LCAyNDYsIDEwMSwgMjM0LCA4NCwgMjE5LCA2MywgCi0gICAgMjExLCAyMzAsIDIxOSwgNjYsIDIxOCwgMzksIDI1MiwgNTksIDI0OSwgMjU1LCAyMjMsIDE2MiwgODUsIDIxOSwgNjIsIAotICAgIDIxNiwgMTM1LCAyNTAsIDAsIDIyLCAyMjMsIDE2MiwgMjE1LCA5NCwgNzEsIDIyMCwgNCwgMjI1LCAxMDQsIDIxNSwgOTQsIAotICAgIDg1LCAyMjAsIDQsIDIyNSwgMTA0LCA3MSwgMjQ4LCAxLCAyMzYsIDcsIDIxOCwgMjM2LCAyNDksIDEzMywgMjMzLCA5NywgCi0gICAgMjQ3LCAyMDEsIDI1MCwgMjUyLCAyMjYsIDE3MCwgMjI1LCAxMDcsIDI1MCwgMjUzLCAyMTksIDkwLCAyNDEsIDIxOSwgMiwgCi0gICAgNzEsIDI0OSwgMTM4LCAzNywgMjQ5LCAxMzMsIDIzMywgOTcsIDI1MCwgMTYxLCAyMjgsIDgwLCAyNDUsIDEzMiwgMjU0LCAKLSAgICAxNDksIDIyNiwgMTk1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIAotICAgIDcxLCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCA0MywgMjMzLCA5OCwgMjMxLCA1OCwgNzEsIDQzLCAKLSAgICAyMzMsIDk4LCAyMzEsIDU4LCAyNDYsIDk3LCAyMTksIDg0LCA1MCwgMTE0LCA3MSwgMjQ2LCAxMTMsIDIxNSwgMjI2LCA0MywgCi0gICAgMjUwLCA4LCAyNDUsIDEzMiwgOTIsIDIyMiwgMCwgMjQ0LCAxODMsIDI0OCwgNywgMjM2LCA3LCA3MSwgMjUwLCA0NCwgMjM2LCAKLSAgICA3LCA4NSwgMjE4LCAyMzYsIDg1LCAyMTUsIDE5MywgMjIzLCA2MywgNDMsIDI0NSwgMTMxLCAyMjMsIDYzLCA0MywgMjQ1LCAKLSAgICAxMzAsIDI1MywgMjE5LCAxNiwgMzEsIDIxNCwgMTQ1LCAxMTQsIDI1MCwgNDQsIDIsIDIxOCwgMTA1LCAyMiwgMTEzLCAxNzAsIAotICAgIDQ4LCAyMjUsIDE5MiwgMjIyLCAyNTEsIDIzNSwgMjEyLCAyMjUsIDE5MiwgMjMzLCA0OSwgMjM1LCAyMTIsIDIyNSwgMTkyLCAKLSAgICAyMzUsIDIwMCwgMjI1LCAxOTIsIDg1LCAyNDksIDEzOSwgMjI2LCAyMDEsIDIyMCwgMzEsIDIyMCwgMTksIDIxOSwgMjMxLCAKLSAgICAyNTAsIDY5LCAyNTAsIDIzNCwgMjQxLCAxNjQsIDIxOSwgMTI4LCAyNDMsIDY4LCAyMTEsIDIzMCwgMjQwLCAyMjcsIDI0MywgCi0gICAgNjgsIDIsIDI0MiwgMTksIDIzMSwgMTc4LCAxNiwgMzEsIDIzMiwgMjM1LCAyMzAsIDEyMCwgMjE0LCAxOTUsIDIyNiwgMjAxLCAKLSAgICAyNDIsIDEyOSwgMjQ0LCAyMCwgMjQ0LCA4MiwgMjM2LCA3LCAyNDEsIDY2LCAyNDQsIDEzNywgMjIyLCAxNiwgNDIsIDI0NCwgCi0gICAgMTksIDI0OSwgMTY3LCAyMTksIDEwNiwgMjQwLCAxMTksIDIxOSwgMTA5LCAyMjUsIDE3MSwgMiwgMjUyLCAxNjcsIDIxNiwgCi0gICAgMjQzLCAyMzUsIDEzNywgMjUyLCAxNTQsIDg3LCAyNDEsIDIzOCwgMjQyLCAxNDAsIDg3LCAyNDMsIDIzOSwgMjI0LCAxNDUsIAotICAgIDI0OSwgMTExLCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCA3MSwgMjQ0LCA4MiwgMiwgMjAzLCAyMzAsIDIyOSwgODUsIDIxOCwgCi0gICAgMTA2LCAyMTQsIDE2MCwgMjUxLCAyMjUsIDIyMSwgMTk1LCA4NSwgMjIxLCAxOTUsIDIzMiwgMTE0LCAyNTEsIDIyNSwgMjIxLCAKLSAgICAxOTUsIDcxLCAyMjEsIDE5NSwgNzEsIDExNCwgMjUwLCAxMzgsIDc5LCAyMTcsIDIsIDIzMiwgMTYwLCA1MCwgMjE3LCA1NCwgCi0gICAgMjQ2LCA5NiwgMjU0LCAyMDAsIDI0NSwgMTI3LCAyMjMsIDE2MCwgMjQ0LCA5MywgMjIzLCAxNjAsIDI0MiwgMjIsIDIxMywgCi0gICAgMTc0LCAyNDIsIDIyLCAyMTEsIDE5OCwgMjQyLCAyMiwgMjMyLCAxMTQsIDQ0LCAyMjUsIDIwMSwgMjI1LCAyMDEsIDIxNCwgCi0gICAgMTYwLCA0NCwgMjI1LCAyMDEsIDcxLCAyMjgsIDIzNSwgODUsIDIyOCwgMjM1LCAyNTAsIDEzOCwgNzksIDExNCwgMjUwLCAKLSAgICAxMzgsIDc5LCAyMzAsIDg5LCAyMTEsIDE3OCwgMTE0LCAyMzAsIDg5LCAyMTEsIDE3OCwgMjUyLCAxNjQsIDIxMSwgMTc4LCAKLSAgICAxMTQsIDI1MiwgMTY0LCAyMTEsIDE3OCwgMjI2LCAxMzAsIDI2LCAyNDksIDEzOCwgMTE0LCAyNiwgMjQ5LCAxMzgsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI0OSwgMTM4LCAxMTQsIDIwNCwgMjUwLCAxODMsIDI0OSwgMTM4LCA3LCAyNDksIDEzOCwgMjIwLCA5MywgCi0gICAgNzEsIDcsIDI0OSwgMTM4LCAyMjYsIDEzMCwgNywgMjQ5LCAxMzgsIDIzMSwgMTkyLCAyNDksIDEzOCwgMjE4LCAxNTksIDY0LCAKLSAgICAyNDgsIDE1NywgMjQ0LCAxOSwgMjE3LCAxNiwgMjUzLCAyMjQsIDI0NCwgMTksIDI1MiwgMTY1LCAyNTMsIDIyNCwgMTE0LCAKLSAgICAyNDQsIDE5LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NCwgMTksIDI0OSwgMjUxLCAyNTMsIDIyNCwgODUsIDI0NCwgMTksIAotICAgIDIyNSwgMTIsIDIxOCwgMTU4LCA3MSwgMjQ0LCAxOSwgMjI1LCAxMiwgMjE4LCAxNTgsIDIxOSwgMTMsIDIxOCwgMTEzLCAKLSAgICAyMjYsIDEzMCwgNzEsIDIxOCwgMTU4LCAzNywgNzEsIDIxOCwgMTU4LCAyMDQsIDI1MCwgMTgzLCA4NSwgMjE4LCAxNTgsIAotICAgIDg1LCAyNTAsIDE4MywgNzEsIDIxOCwgMTU4LCAyMjYsIDEzMCwgODUsIDIxOCwgMTU4LCAxMTQsIDIyNiwgMTMwLCA4NSwgCi0gICAgMjE4LCAxNTgsIDIyNSwgNjMsIDIxOCwgMTU4LCAyMjAsIDkzLCA3MSwgMjE4LCAxNTgsIDExNCwgMjUzLCAyMjQsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjE4LCAyNDYsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjI1LCAxMiwgODUsIAotICAgIDIxOCwgMTU4LCAyNDUsIDIwMSwgMjI1LCAxMiwgMjI1LCA2MywgMjE4LCAxNTgsIDIxOSwgMTI3LCAyMjUsIDEyLCA4NSwgCi0gICAgMjE4LCAxNTgsIDI0NSwgMjAxLCAyMjUsIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAxMTQsIDI0NSwgMjAxLCAyMjUsIAotICAgIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAyMTUsIDc3LCAyMjUsIDEyLCA4NSwgMjE4LCAxNTgsIDIxOSwgMTIyLCAKLSAgICAyMjUsIDEyLCAyNTMsIDIyNCwgMjE3LCAxNiwgMjUzLCAyMjQsIDIwNCwgMjUwLCAxODMsIDIxNywgMTYsIDI1MywgMjI0LCAKLSAgICAxMTQsIDIxNywgMTYsIDI1MywgMjI0LCAyMTksIDEyNywgMjI1LCAxNjAsIDg1LCAyMiwgNzEsIDI0NCwgNjIsIDg1LCAyNDQsIAotICAgIDYyLCA3MSwgMjQ0LCA2MiwgMjQ1LCAyMDEsIDIyNSwgMTYwLCAyMjYsIDEzMCwgODUsIDI0NCwgNjIsIDM3LCAyMDQsIDI1MCwgCi0gICAgMTgzLCAyNDUsIDIwMSwgMjI1LCAxMiwgMjE4LCAxNTgsIDExNCwgMjE3LCAxNiwgMjI1LCA2MywgMjUzLCAyMjQsIDIxOSwgCi0gICAgNjQsIDIxNiwgMTA2LCAyMTUsIDIxOSwgMjE5LCA2NCwgMTE0LCAyNTAsIDEyMiwgMjE5LCA2NCwgMjE5LCAxNSwgMTE0LCAKLSAgICAyMTksIDE1LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NSwgMjAxLCAyMTcsIDE2LCAyMjQsIDE3NCwgMjUzLCAyMjQsIDExNCwgCi0gICAgMjQ1LCAyMDEsIDIxNywgMTYsIDIyNCwgMTc0LCAyNTMsIDIyNCwgMjQ5LCAxMzksIDc5LCAyMjAsIDkzLCA3MSwgMjUwLCAKLSAgICA0MywgMTUyLCA5MiwgMjQ5LCAxMzksIDc5LCAyMzIsIDExNCwgNDQsIDI0NiwgOTQsIDcxLCAyMTgsIDIzNiwgMjE0LCAxNjAsIAotICAgIDQ0LCAyNDYsIDk0LCA3MSwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjIwLCA5MywgNzEsIDIxOCwgMjM2LCAyMTQsIDE2MCwgCi0gICAgNDQsIDIyMCwgOTMsIDcxLCAyMTgsIDIzNiwgODUsIDIyNCwgMTYsIDE2NCwgMjI2LCAxNTEsIDcxLCAyMjQsIDE2LCAxNjQsIAotICAgIDIyNiwgMTUxLCA3MSwgMjQ1LCAzOSwgMTY0LCAyMjYsIDE1MSwgODUsIDI0OCwgMSwgMjMwLCAxODcsIDcxLCAyMTEsIDE3OCwgCi0gICAgMTE0LCAyNDUsIDM5LCAxNjQsIDg3LCAxOTMsIDY3LCAxMzAsIDIzMSwgODcsIDY3LCAxMzAsIDExNCwgNjcsIDEzMCwgMTE0LCAKLSAgICAyMTksIDE1NywgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAyMTksIDE1NywgMjQ5LCAKLSAgICAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCA1MiwgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIAotICAgIDE1MSwgMTE0LCA1MiwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAxMjEsIDIxOSwgMTU3LCAyNDksIAotICAgIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDEyMSwgNTIsIDI0OSwgMjI4LCAyMjQsIDEsIDE2NCwgMjI2LCAKLSAgICAxNTEsIDI0OSwgOTksIDIxOCwgMTQyLCAyMjYsIDE5LCA1LCAyMjYsIDE1MSwgMTE0LCAyNDUsIDM5LCAxNjQsIDIyNiwgCi0gICAgMTUxLCAxMTQsIDI0MSwgMjM1LCAyNDUsIDM5LCAxNjQsIDIyNiwgMTUxLCAxMTQsIDg1LCAyNDEsIDIzNCwgMjIyLCAxODksIAotICAgIDExNCwgODUsIDI0MSwgMjM1LCAyNTEsIDEyMSwgMjQ0LCA2MywgMjQxLCAyMzQsIDIyMiwgMTg5LCAyNDQsIDYzLCAyNDEsIAotICAgIDIzNSwgMjUxLCAxMjEsIDIzMSwgODcsIDQzLCAyMjYsIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCA0NCwgMjI2LCA4LCAyMjYsIAotICAgIDE1MSwgMjMxLCA4NywgMjQ0LCA3MSwgNDMsIDIyNiwgOCwgMjI2LCAxNTEsIDIzMSwgODcsIDI0NCwgNzEsIDQ0LCAyMjYsIAotICAgIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIyNiwgMTUxLCAyMzEsIDg3LCAKLSAgICAyMjIsIDI1MCwgMjU0LCAxMTgsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMTE0LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjI0LCAxLCAKLSAgICAxNjQsIDIyNiwgMTUxLCAxMTQsIDIyMiwgMjUwLCAyNTQsIDExOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDIzMywgCi0gICAgNDgsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDExNCwgMjIyLCAyNTAsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAKLSAgICAxNTEsIDE5MywgNDMsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjYsIDIyNiwgMTUxLCAxOTMsIDQ0LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMjMxLCA4NywgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDIzMSwgCi0gICAgODcsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyNiwgMTUxLCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIDExMSwgMjQ3LCAKLSAgICAyMTIsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIAotICAgIDE2MSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTAsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTk1LCAyNDcsIDIxMiwgCi0gICAgMTUyLCAzNywgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTYsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMjAxLCAKLSAgICAyNDcsIDIxMiwgMTUyLCAzNywgNTQsIDIxNiwgMjQ4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTExLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCAyMSwgMTA1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTU4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIAotICAgIDIxMiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgCi0gICAgMTk5LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMjAxLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCA1NCwgMjE2LCAyNDgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDExMSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAKLSAgICAyMSwgMTA1LCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxNTgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgCi0gICAgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjEyLCAKLSAgICAxNTIsIDM3LCAzNSwgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMTUyLCAzNywgCi0gICAgMzUsIDIxLCAyMDEsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgNTQsIDIxNiwgMjQ4LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzUsIAotICAgIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTg3LCA1MCwgMTE0LCAyNDcsIDE3NywgNTAsIDExNCwgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAxMTQsIDk3LCA3NSwgMTE0LCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDI0NiwgMTA2LCAyMjUsIDE0LCA5NywgCi0gICAgNzUsIDExNCwgMjIyLCAxODYsIDk3LCA3NSwgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyMTUsIDIyNSwgOTcsIDc1LCAyNDgsIAotICAgIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyNDgsIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgODUsIDk3LCA3NSwgMjE2LCAKLSAgICAxNDUsIDIxNiwgMTMsIDk3LCAyNTQsIDEsIDIxNiwgMTQ1LCAyNTEsIDE4MSwgOTcsIDI1NCwgMSwgODUsIDk3LCAyNTQsIDEsIAotICAgIDExNCwgODUsIDI0OSwgOTksIDI0NiwgMTEyLCAyMiwgOTcsIDc1LCAxMTQsIDg1LCAyNDksIDk5LCAyMTQsIDE1MywgMjIsIAotICAgIDk3LCA3NSwgMjE4LCAyMzMsIDg1LCA5NywgNzUsIDExNCwgMjQ5LCAyMTQsIDg1LCA5NywgNzUsIDIyMiwgMjQ5LCA3MSwgCi0gICAgOTcsIDc1LCAyMzMsIDQ3LCA3MSwgOTcsIDc1LCAyNTIsIDE5MSwgMjIwLCA5MywgNzEsIDk3LCA3NSwgMjQzLCAyNDksIAotICAgIDIyMCwgOTMsIDcxLCA5NywgNzUsIDExNCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAxMTQsIDIxNCwgMTYwLCAKLSAgICAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMjI4LCA1NCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAyNDksIDEwNywgCi0gICAgMjMyLCAxMjksIDIyOCwgNTQsIDIxNCwgMTYwLCAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMzcsIDExNCwgNzEsIDk3LCA3NSwgCi0gICAgMjExLCAyNTIsIDk3LCA3NSwgMjUxLCAyMjgsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgMjUxLCAyMjgsIDk3LCA3NSwgMjUxLCAKLSAgICAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMTE0LCAyNTEsIDIyOCwgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAxMTQsIAotICAgIDI1MSwgMjI4LCA5NywgNzUsIDExNCwgMjUxLCAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjE3LCAxOCwgOTcsIDc1LCAKLSAgICAxMTQsIDIxNywgMTcsIDk3LCA3NSwgMjEyLCAxOCwgOTcsIDc1LCAxMTQsIDIxMiwgMTgsIDk3LCA3NSwgMjI2LCAxNzYsIAotICAgIDk3LCA3NSwgNTIsIDI0OSwgMTA3LCAyMzIsIDEyOSwgMTM0LCAyNDcsIDIyMiwgMjU0LCAxMTcsIDcxLCAyMTUsIDIyNywgCi0gICAgMjQ5LCAxOTUsIDQsIDcxLCAyMTUsIDIyNiwgMjI1LCAxNzQsIDIwNCwgMjE4LCA2NCwgMjA0LCAyMTgsIDIyLCA0MywgMjIyLCAKLSAgICA5MiwgMjUyLCAxODEsIDI0OCwgNjgsIDQ0LCAyMjIsIDkyLCAyNTIsIDE4MSwgMjQ4LCA2OCwgMTc3LCAyLCA1OSwgMjM1LCAKLSAgICAyMjIsIDIyMywgNTMsIDIxOSwgNDksIDIyNCwgMjA0LCAyMTgsIDY0LCAyMTgsIDIzLCAyMjQsIDIwNCwgMjE5LCA0OCwgNjcsIAotICAgIDI1MiwgMTQ5LCAyLCAyMDMsIDkxLCAxMSwgMjIyLCAyMzEsIDI0OCwgNiwgMjAwLCAyNDcsIDE3NiwgMTEsIDI0NCwgMTgzLCAKLSAgICAyNDgsIDYsIDkyLCAyMzIsIDE1MiwgMjU0LCAxMjYsIDkyLCAyMzIsIDE1MiwgMjI2LCAxNjIsIDcxLCAyNDgsIDEsIDIsIAotICAgIDI1MCwgMTgxLCAyNDcsIDEyOCwgMjIsIDIsIDI0NywgMTI4LCAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyMTQsIDE1MiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDksIDE2OSwgMiwgMjQ3LCAxMjgsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjksIDIsIDI0NywgMTI4LCAKLSAgICA0MywgMjI2LCAxMzIsIDIzNSwgNzIsIDQ0LCAyMjYsIDEzMiwgMjM1LCA3MiwgMjQzLCAyMzYsIDIyNiwgMTMyLCAyMzUsIAotICAgIDcyLCAyMzMsIDkxLCAxMjAsIDIxNywgODgsIDIzMywgOTEsIDEyNCwgMjE3LCA4OCwgNDMsIDIyLCA0NCwgNTIsIDIxNSwgCi0gICAgOTMsIDQzLCAyMiwgNDQsIDIxNywgODgsIDQzLCAyMzAsIDkyLCAyMDAsIDQ0LCAyMTcsIDg4LCAyMDAsIDQzLCAyMTcsIDg4LCAKLSAgICAxMjAsIDIxNywgODksIDIsIDI1MCwgNDQsIDQ4LCAyMzIsIDExMSwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjIyLCAxMzUsIAotICAgIDcxLCAyNDksIDIxMywgMjQ4LCAwLCA3MSwgMjQ5LCAyMTMsIDI0OCwgMSwgMiwgMTQwLCAyMTYsIDExNSwgNzEsIDI0OSwgCi0gICAgMjEzLCAyNDgsIDEsIDIsIDk3LCAyMTYsIDExNSwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE1LCA3MSwgNDIsIDIsIDk3LCAKLSAgICAyMTYsIDExNSwgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExOCwgCi0gICAgMTI3LCAxMSwgNDQsIDI1NCwgMTE4LCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDExLCA0MywgNzEsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIAotICAgIDEyNywgMTEsIDQzLCAyNDQsIDcxLCAyMjYsIDcsIDExLCA0NCwgMjQ0LCA3MSwgMjI2LCA3LCAyMTQsIDE1MywgMjI0LCAyNywgCi0gICAgNzUsIDI0NiwgMTEyLCAyMjQsIDI3LCA3NSwgMjU0LCA5NiwgMjQzLCAxMDUsIDI1MCwgNDQsIDc1LCAyNTAsIDEwLCAyNDMsIAotICAgIDEwNSwgMjUwLCA0NCwgNzUsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjUsIDIwMCwgMTQwLCA3NSwgMjAwLCA5NywgNzUsIDIwMCwgCi0gICAgNDMsIDQ0LCA3NSwgMjAwLCAxNDAsIDUyLCA3NSwgMjAwLCA5NywgNTIsIDc1LCAyMDAsIDQzLCA0NCwgNTIsIDc1LCAyMDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDgwLCAyNDMsIDI1MSwgMTMwLCAyMDAsIDE0MCwgNTIsIDgwLCAKLSAgICAyNDMsIDI1MSwgMTMwLCAyMDAsIDk3LCA1MiwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDIxOCwgMjMyLCA3NSwgNDYsIAotICAgIDQ3LCAyNTEsIDIyMywgNDYsIDQ3LCAyNDcsIDEyNSwgNDYsIDQ3LCAyNDYsIDI1MywgNDYsIDQ3LCAyNDcsIDEyNCwgNDYsIAotICAgIDQ3LCAyNDYsIDE4OSwgNDYsIDQ3LCAyNDcsIDYwLCA0NiwgNDcsIDI0NiwgMjUyLCA0NiwgNDcsIDI0NywgMTIzLCA0NiwgCi0gICAgNDcsIDI0NiwgMTU3LCA0NiwgNDcsIDI0NywgMjgsIDQ2LCA0NywgMjQ2LCAyMjAsIDQ2LCA0NywgMjQ3LCA5MSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMjUxLCA0NiwgNDcsIDI0NywgMTIyLCA0NiwgNDcsIAotICAgIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgMjQ3LCA3NSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIDI0NywgMTA2LCA0NiwgNDcsIAotICAgIDI0NiwgMTU2LCA0NiwgNDcsIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMjUwLCA0NiwgNDcsIDI0NywgMTIxLCA0NiwgNDcsIAotICAgIDI0NiwgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgCi0gICAgMTY0LCA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIAotICAgIDE0OCwgNDYsIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzksIDQ2LCA0NywgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIAotICAgIDE0MCwgNDYsIDQ3LCAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzEsIDQ2LCA0NywgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIAotICAgIDE1NSwgNDYsIDQ3LCAyNDcsIDI2LCA0NiwgNDcsIDI0NiwgMjE4LCA0NiwgNDcsIDI0NywgODksIDQ2LCA0NywgMjQ2LCAKLSAgICAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIDI0OSwgNDYsIDQ3LCAyNDcsIDEyMCwgNDYsIDQ3LCAyNDYsIAotICAgIDEyOSwgNDYsIDQ3LCAyNDcsIDAsIDQ2LCA0NywgMjQ2LCAxOTIsIDQ2LCA0NywgMjQ3LCA2MywgNDYsIDQ3LCAyNDYsIDE2MCwgCi0gICAgNDYsIDQ3LCAyNDcsIDMxLCA0NiwgNDcsIDI0NiwgMjIzLCA0NiwgNDcsIDI0NywgOTQsIDQ2LCA0NywgMjQ2LCAxNDQsIDQ2LCAKLSAgICA0NywgMjQ3LCAxNSwgNDYsIDQ3LCAyNDYsIDIwNywgNDYsIDQ3LCAyNDcsIDc4LCA0NiwgNDcsIDI0NiwgMTc1LCA0NiwgNDcsIAotICAgIDI0NywgNDYsIDQ2LCA0NywgMjQ2LCAyMzgsIDQ2LCA0NywgMjQ3LCAxMDksIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgCi0gICAgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAKLSAgICAzOCwgNDYsIDQ3LCAyNDYsIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDE1MSwgNDYsIDQ3LCAyNDcsIAotICAgIDIyLCA0NiwgNDcsIDI0NiwgMjE0LCA0NiwgNDcsIDI0NywgODUsIDQ2LCA0NywgMjQ2LCAxODIsIDQ2LCA0NywgMjQ3LCA1MywgCi0gICAgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAyNDcsIDMsIDQ2LCAKLSAgICA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIDM0LCA0NiwgNDcsIAotICAgIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMzksIDQ2LCA0NywgMjQ3LCAxMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMiwgNDYsIDQ3LCAyNDcsIDczLCA0NiwgNDcsIDI0NiwgMTcwLCA0NiwgNDcsIDI0NywgNDEsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzMsIDQ2LCA0NywgMjQ3LCAxMDQsIDQ2LCA0NywgMjQ2LCAxNTQsIDQ2LCA0NywgMjQ3LCAyNSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNywgNDYsIDQ3LCAyNDcsIDg4LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIDI0NywgNTYsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDgsIDQ2LCA0NywgMjQ3LCAxMTksIDQ2LCA0NywgMjQ2LCAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIAotICAgIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIAotICAgIDI0NiwgMTk3LCA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyOCwgNDYsIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIAotICAgIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgMTMwLCA0NiwgNDcsIDI0NywgMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5MywgNDYsIDQ3LCAyNDcsIDY0LCA0NiwgNDcsIDI0NiwgMTYxLCA0NiwgNDcsIDI0NywgMzIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjQsIDQ2LCA0NywgMjQ3LCA5NSwgNDYsIDQ3LCAyNDYsIDE0NSwgNDYsIDQ3LCAyNDcsIDE2LCA0NiwgNDcsIAotICAgIDI0NiwgMjA4LCA0NiwgNDcsIDI0NywgNzksIDQ2LCA0NywgMjQ2LCAxNzYsIDQ2LCA0NywgMjQ3LCA0NywgNDYsIDQ3LCAKLSAgICAyNDYsIDIzOSwgNDYsIDQ3LCAyNDcsIDExMCwgNDYsIDQ3LCAyNDYsIDEzNywgNDYsIDQ3LCAyNDcsIDgsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDAsIDQ2LCA0NywgMjQ3LCA3MSwgNDYsIDQ3LCAyNDYsIDE2OCwgNDYsIDQ3LCAyNDcsIDM5LCA0NiwgNDcsIAotICAgIDI0NiwgMjMxLCA0NiwgNDcsIDI0NywgMTAyLCA0NiwgNDcsIDI0NiwgMTUyLCA0NiwgNDcsIDI0NywgMjMsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTUsIDQ2LCA0NywgMjQ3LCA4NiwgNDYsIDQ3LCAyNDYsIDE4MywgNDYsIDQ3LCAyNDcsIDU0LCA0NiwgNDcsIAotICAgIDI0NiwgMjQ2LCA0NiwgNDcsIDI0NywgMTE3LCA0NiwgNDcsIDI0NiwgMTI4LCA0NiwgNDcsIDI0NiwgMjU1LCA0NiwgNDcsIAotICAgIDI0NiwgMTkxLCA0NiwgNDcsIDI0NywgNjIsIDQ2LCA0NywgMjQ2LCAxNTksIDQ2LCA0NywgMjQ3LCAzMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyMiwgNDYsIDQ3LCAyNDcsIDkzLCA0NiwgNDcsIDI0NiwgMTQzLCA0NiwgNDcsIDI0NywgMTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDYsIDQ2LCA0NywgMjQ3LCA3NywgNDYsIDQ3LCAyNDYsIDE3NCwgNDYsIDQ3LCAyNDcsIDQ1LCA0NiwgNDcsIAotICAgIDI0NiwgMjM3LCA0NiwgNDcsIDI0NywgMTA4LCA0NiwgNDcsIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAxNTAsIDQ2LCA0NywgMjQ3LCAyMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMywgNDYsIDQ3LCAyNDcsIDg0LCA0NiwgNDcsIDI0NiwgMTgxLCA0NiwgNDcsIDI0NywgNTIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDQsIDQ2LCA0NywgMjQ3LCAxMTUsIDQ2LCA0NywgMjQ2LCAxMzEsIDQ2LCA0NywgMjQ3LCAyLCA0NiwgNDcsIAotICAgIDI0NiwgMTk0LCA0NiwgNDcsIDI0NywgNjUsIDQ2LCA0NywgMjQ2LCAxNjIsIDQ2LCA0NywgMjQ3LCAzMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIyNSwgNDYsIDQ3LCAyNDcsIDk2LCA0NiwgNDcsIDI0NiwgMTQ2LCA0NiwgNDcsIDI0NywgMTcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDksIDQ2LCA0NywgMjQ3LCA4MCwgNDYsIDQ3LCAyNDYsIDE3NywgNDYsIDQ3LCAyNDcsIDQ4LCA0NiwgNDcsIAotICAgIDI0NiwgMjQwLCA0NiwgNDcsIDI0NywgMTExLCA0NiwgNDcsIDI0NiwgMTM4LCA0NiwgNDcsIDI0NywgOSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMSwgNDYsIDQ3LCAyNDcsIDcyLCA0NiwgNDcsIDI0NiwgMTY5LCA0NiwgNDcsIDI0NywgNDAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzIsIDQ2LCA0NywgMjQ3LCAxMDMsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNiwgNDYsIDQ3LCAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTg0LCA0NiwgNDcsIDI0NywgNTUsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDcsIDQ2LCA0NywgMjQ3LCAxMTgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIDY3LCA5MSwgNDMsIDQ0LCA1MiwgCi0gICAgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDUyLCA4MCwgMjQzLCAyNTEsIAotICAgIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjQ2LCAxMTIsIDgwLCAyLCAyMDMsIDkxLCAyMTQsIDE1MywgODAsIAotICAgIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMiwgNzUsIDI0NiwgMTEyLCAyMTUsIDIxMiwgNzUsIDE0MCwgNTIsIDI0OCwgCi0gICAgMTY1LCA3NSwgOTcsIDUyLCAyNDgsIDE2NSwgNzUsIDE0MCwgMjE1LCAyMTIsIDI0OCwgMTY1LCA3NSwgOTcsIDIxNSwgMjEyLCAKLSAgICAyNDgsIDE2NSwgNzUsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDc1LCA5NywgODAsIDIsIDI0NiwgMTI2LCAKLSAgICAyMTgsIDE0MSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQzLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgCi0gICAgODAsIDIsIDIxNywgNzgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgMjU0LCAzLCA5NywgMjU0LCAzLCAxNDAsIDUyLCAyNTQsIDMsIDk3LCAKLSAgICA1MiwgMjU0LCAzLCAxNDAsIDgwLCAyMTYsIDQzLCA4NSwgMjQ4LCAwLCA5NywgODAsIDIxNiwgNDMsIDg1LCAyNDgsIDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAyNTIsIDE0OSwgMjE2LCA0MywgODUsIDI0OCwgMCwgOTcsIDgwLCAyNDMsIDI1MSwgMjUyLCAKLSAgICAxNDksIDIxNiwgNDMsIDg1LCAyNDgsIDAsIDIyOCwgNjEsIDIxMiwgOSwgMjIsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDIyLCAyMTksIDMwLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyLCAxMDMsIAotICAgIDIyOCwgNjEsIDI0NSwgMjI4LCA4MCwgMiwgMTAzLCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIDIsIDEwMywgMjE5LCAzMCwgCi0gICAgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyMiwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjgsIAotICAgIDYxLCAyNDUsIDIyOCwgODAsIDIyLCAyMTksIDMwLCAyNDUsIDIyOCwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjIsIAotICAgIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgODAsIDIyLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjIsIAotICAgIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjQ0LCAxODMsIDI0OCwgNiwgMjQ0LCAxODMsIDI0OCwgNywgMjQ5LCAxMzMsIDIyMiwgCi0gICAgMjMxLCAyNDgsIDYsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjQ5LCAxMzMsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjI4LCAKLSAgICA2MSwgMjQ1LCAyMjgsIDgwLCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAyNDQsIDE4MywgMjQ4LCA3LCAyNDksIAotICAgIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjIsIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAyMjgsIDYxLCAyNDUsIDIyOCwgODAsIDI0OSwgMTMzLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAKLSAgICAyMTIsIDksIDgwLCAyNDksIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTIsIDM2LCA4MCwgMjI1LCAxMCwgMjQ3LCAKLSAgICAyMDMsIDIyMiwgMjU0LCA4MCwgMjI1LCAxMCwgOTcsIDIxNiwgMTg5LCAyNDksIDk4LCAyMTQsIDE1MiwgODAsIDIyNSwgMTAsIAotICAgIDk3LCAyMTYsIDE4OSwgMjQ5LCA5OCwgMjQ2LCAxMTEsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgCi0gICAgOTgsIDIzMywgNDMsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgOTgsIDIyMiwgMjQ0LCAyMjIsIAotICAgIDI0NywgMjU0LCAzNCwgMjUwLCAxMCwgNzUsIDIzMywgNDYsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIAotICAgIDM0LCAyNTQsIDk2LCA3NSwgMjUxLCAxODMsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIDM0LCAyNTAsIAotICAgIDEwLCA4MCwgMiwgMjMwLCAxODYsIDIxNiwgMTUsIDI1NCwgMzQsIDI1NCwgOTYsIDgwLCAyLCAyMjUsIDI1LCAyMzIsIDExNCwgCi0gICAgNDQsIDIyMCwgMTU0LCAyNTAsIDEwLCA3NSwgMjMyLCAxMTQsIDQzLCAyMjAsIDE1NCwgMjU0LCA5NiwgNzUsIDI1NCwgOTYsIAotICAgIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDI1MCwgMTAsIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDk3LCA4MCwgNzIsIDIxOSwgMjUzLCAKLSAgICAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjE5LCAyNTMsIDk3LCA3NSwgMjE5LCAyNTMsIDk3LCA4MCwgNzIsIDE0MCwgNzUsIAotICAgIDk3LCA4MCwgMiwgOTYsIDUxLCAxNDAsIDgwLCAyLCA5NiwgNTEsIDk3LCA4MCwgMjE2LCAxNDAsIDIxMSwgMTc4LCA0MywgCi0gICAgNDQsIDgwLCAyMTYsIDE0MCwgNCwgMjUwLCA0MywgMjE0LCAxNTMsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgNCwgMjUwLCAKLSAgICA0MywgNDMsIDI1MiwgMTQ3LCAxMjAsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTI0LCA0NCwgCi0gICAgMjUyLCAxNDcsIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDMsIDI0MiwgNSwgMTIwLCAKLSAgICAyNTIsIDE0NywgNDMsIDEyNCwgMjUyLCAxNDcsIDQ0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTIwLCA0NCwgMjUyLCAxNDcsIAotICAgIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDQsIDI0MiwgNSwgNDMsIDI1MiwgMTQ3LCAKLSAgICAxMjQsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDEyMCwgMjUyLCAxNDcsIDQzLCAxMjQsIDI1MiwgMTQ3LCA0MywgCi0gICAgMjQyLCA1LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyMCwgMjE2LCA0MywgMTMwLCA5NywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgMTIwLCAyMTYsIDQzLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjE2LCA0MywgMTMwLCAKLSAgICAyNDYsIDExMiwgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDQsIDIxNiwgNDMsIDEzMCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCAxMjQsIDIxNiwgNDMsIDEzMCwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgMjE2LCA0MywgMTMwLCAyMTQsIAotICAgIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDMsIDIxNiwgNDMsIDEzMCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAKLSAgICAxNDcsIDQzLCAyMTYsIDQzLCAxMzAsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCA5NywgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgCi0gICAgNDQsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjQzLCAyNTEsIDEzMCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI0MywgMjUxLCAxMzAsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIAotICAgIDI0MywgMjUxLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0MywgMjQzLCAyNTEsIDEzMCwgMjQ2LCAKLSAgICAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDEyMCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCA0MywgMjUyLCAzOCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjU0LCA5NywgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCAyNDYsIDExMiwgMjQyLCA2LCAKLSAgICAyLCAyNTIsIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjE0LCAxNjMsIDE0MCwgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTI0LCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTIwLCA3MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE2MywgOTcsIDI0MiwgNiwgCi0gICAgMiwgMjUyLCAxNDcsIDEyNCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDE0MCwgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgMjAwLCAyNDgsIDE2NCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI1MiwgNTEsIAotICAgIDIwMCwgMjQ4LCAxNjQsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCAyMDAsIDI0OCwgMTY0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTI0LCAyNTIsIDUxLCAyMDAsIDI0OCwgMTY0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMjQ2LCAxMTIsIDI0MiwgCi0gICAgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNTIsIDM4LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjIyLCAyNTQsIDQ0LCAKLSAgICA1MiwgODAsIDIsIDIyMiwgMTg1LCAyNDEsIDI0MiwgMjQ1LCAxMDYsIDUsIDcyLCA5NywgNzUsIDIxNiwgOTAsIDIyNiwgCi0gICAgMTcyLCA3MiwgOTcsIDc1LCAxNDAsIDgwLCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIxNiwgOTAsIAotICAgIDIyNiwgMTcxLCA5NywgODAsIDcyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIzMywgMjEsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCAKLSAgICAyMTYsIDE0MCwgMjMzLCAyMCwgMjQyLCAxMzcsIDcyLCA5NywgNzUsIDIxOCwgNjUsIDcyLCA5NywgNzUsIDE0MCwgODAsIAotICAgIDIxNiwgMTQwLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMTQwLCA3NSwgNDMsIDI0NCwgOTksIDIxNywgNzgsIDQ0LCAyNDQsIAotICAgIDk5LCAyMTcsIDc4LCAxMjAsIDI0NCwgOTksIDIxNywgNzgsIDEyNCwgMjQ0LCA5OSwgMjE3LCA3OCwgMjE1LCAyMTIsIDY3LCAKLSAgICAyNTIsIDE0OSwgMjQ4LCA2OCwgMjEwLCAxNjAsIDE4OSwgMjE4LCAyNDQsIDIxMCwgMTYwLCAxODksIDIxNSwgNDksIDI0OSwgCi0gICAgMjM0LCA0MywgNzEsIDI0OSwgMTA3LCAxMjcsIDQ0LCA3MSwgMjQ5LCAxMDcsIDEyNywgNDMsIDcxLCAyMjYsIDcsIDQ0LCAKLSAgICA3MSwgMjI2LCA3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjM2LCAyMiwgMTI3LCAyMTAsIDE2MCwgMTg5LCA0NCwgMjM2LCAyMiwgCi0gICAgMTI3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjUxLCAyNTAsIDEyNywgMjEwLCAxNjAsIDE4OSwgNDQsIDI1MSwgMjUwLCAxMjcsIAotICAgIDQzLCA0MiwgMjUxLCAxNjYsIDIsIDIxNCwgMTgzLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTQsIDE4MywgNDMsIDQyLCAKLSAgICAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgNywgMjE2LCAxNSwgMjQ5LCAxNjgsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIAotICAgIDIxNiwgMTE2LCAyMzYsIDcsIDI1MSwgMTgzLCAyNDksIDE2OCwgNDMsIDQyLCAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgCi0gICAgNywgMjUxLCAxODMsIDI0OSwgMTY4LCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTYsIDExNiwgMjM2LCA3LCAyMTYsIDE1LCAKLSAgICAyNDksIDE2OCwgNDMsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMiwgMjQ3LCAxMjgsIDQ0LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIsIAotICAgIDI0NywgMTI4LCA0MywgMjU0LCAzNCwgMjMzLCAyMSwgMTI3LCA0NCwgMjU0LCAzNCwgMjQyLCAxMzcsIDEyNywgNTIsIDQzLCAKLSAgICAyNTQsIDM0LCAyNDIsIDEzNywgMTI3LCA1MiwgNDQsIDI1NCwgMzQsIDIzMywgMjEsIDEyNywgNDMsIDg1LCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNDQsIDg1LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjQ2LCAxMjYsIDI0NCwgMTQzLCA2NywgMjEwLCAKLSAgICAzNSwgMjMyLCAyMTksIDIzMSwgOTMsIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjMzLCA1MiwgNDQsIDI1NCwgMTE4LCAyMTQsIAotICAgIDEyLCAyLCAyMTgsIDIzNiwgMjMxLCA5MywgNDQsIDI1NCwgMTE4LCAyLCAyNDcsIDEyOCwgMjU0LCAxMTgsIDIsIDIyMiwgCi0gICAgOTQsIDIzNSwgMjIyLCAyNTUsIDEyLCAyNTQsIDExNywgMjE5LCAxLCAyNTQsIDExOCwgMjI2LCAxNzQsIDIzMywgNTIsIAotICAgIDIxOSwgMSwgMjU0LCAxMTgsIDIyNiwgMTc0LCAyMTQsIDE2MywgMjE1LCA5NCwgMjU0LCAxMTcsIDIyMywgNTIsIDI1NCwgCi0gICAgMTE3LCAyNTQsIDExOCwgMiwgMjE0LCAxODMsIDIyMywgNTIsIDI1NCwgMTE4LCAyLCAyMTQsIDE4MywgMjI2LCAyNTIsIAotICAgIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjE0LCAxNjMsIDIyNiwgMjUyLCAyNTQsIDExOCwgMjI2LCAxNzQsIDI0NiwgMTE0LCAKLSAgICAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTIwLCAKLSAgICAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAKLSAgICAyMjUsIDEwLCAxMjAsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgCi0gICAgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTI0LCAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgCi0gICAgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIDEwLCAxMjQsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgCi0gICAgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCAKLSAgICA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIDIyNSwgMTAsIDQzLCAyMiwgCi0gICAgMjE0LCAxNjMsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIAotICAgIDEwLCA0NCwgMjIsIDI0NiwgMTE0LCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCAKLSAgICA3LCA4MCwgMjI1LCAxMCwgNDMsIDIyLCAyNDYsIDExNCwgMjIzLCA1MiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDIyNiwgMTI3LCAyNDUsIDE2MCwgMjIwLCAxMzAsIDIsIDQsIDI1MCwgNDQsIDQ4LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTYwLCAyMjAsIDEzMCwgMiwgNDMsIDgwLCA0OCwgMjUwLCA0NCwgMiwgCi0gICAgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCAxMSwgMzcsIDIyMywgNTMsIDIxOSwgNDgsIDM3LCAyMjUsIDE3NCwgCi0gICAgMjUwLCA0NCwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjUyLCAxNDksIDIyLCAyMTYsIDE1LCAxNjMsIDI0NywgMTgxLCAKLSAgICAyNTEsIDg2LCA2NywgMTMwLCAyNTAsIDQ0LCAyLCAyMTgsIDI1LCAyMTEsIDE3OCwgMzcsIDI1NCwgOTUsIDI0NywgMTc3LCAKLSAgICA1MCwgMTIwLCA4MCwgMjE2LCAxNDAsIDI1MCwgNDMsIDM3LCA3MSwgMjUxLCAxMjEsIDM3LCAyNTEsIDEyMSwgMzcsIDIzMywgCi0gICAgMjAsIDM3LCAyNDIsIDEzNiwgMjUwLCA0NCwgMiwgNCwgMjUwLCA0NCwgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCAKLSAgICAyNTAsIDQ0LCAyLCAxMTMsIDIwMywgMjE4LCA5MywgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCA5MiwgMjIyLCAyMzEsIAotICAgIDI0OCwgNywgMjE5LCA5NywgOTIsIDI0NCwgMTgzLCAyNDgsIDcsIDIxOSwgOTcsIDkyLCAyNTMsIDIyNCwgOTIsIDQsIDI1MCwgCi0gICAgNDMsIDkyLCAyMTgsIDIzNiwgMTEzLCAyMzUsIDcxLCAyMTgsIDIzNCwgMjE1LCAyMjcsIDIsIDU5LCA0OCwgMjE1LCAyMjcsIAotICAgIDIsIDIxNCwgMTgzLCAyMjIsIDk0LCAyMzYsIDcsIDIxNSwgMjI2LCAyMTUsIDIyNywgMiwgMjIwLCAxMzYsIDI1MywgMjE1LCAKLSAgICAyNTEsIDE4MiwgNDQsIDIxNSwgMjI3LCA3MiwgNDMsIDIxNSwgMjI2LCA0MywgMjE1LCAyMjcsIDI1MiwgMzgsIDY3LCAxMzAsIAotICAgIDY3LCAyNTIsIDE0OSwgMjUyLCAzOCwgNDQsIDIxNSwgMjI2LCAyNTEsIDE3MywgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MSwgCi0gICAgMTczLCAyLCA0NCwgMTYzLCAyNTEsIDIyOSwgODUsIDI1MSwgMTcyLCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDMwLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNzEsIDI0MCwgMjQzLCA4NSwgMjQwLCAyNDMsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxNDMsIAotICAgIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxNDMsIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTQzLCA0NCwgNTIsIDIxMSwgMjQ0LCAKLSAgICAyNDQsIDE0MywgMjM1LCAyNTUsIDIzNSwgMjQxLCAyMTYsIDExMywgMTE1LCAyMzUsIDI0MSwgMjM1LCAyNDIsIDIyOSwgCi0gICAgMTA3LCAyLCA2NywgMTMwLCAyNDYsIDEyMCwgMjMwLCA5MiwgNDIsIDIsIDI0OSwgMTg5LCAyMjYsIDEzMSwgMjM1LCAyNTMsIAotICAgIDI1MywgMjQ1LCAyMTksIDIyMSwgMjI0LCAxODMsIDI0NSwgMTA2LCA1LCAyMiwgMjE5LCA5OSwgMjI2LCAxMSwgMjQ1LCAKLSAgICAxMDYsIDUsIDIyLCAyMTksIDk5LCAyMjYsIDEyLCAyLCAyMTYsIDkwLCA0OCwgMjQwLCAxMTEsIDIxNiwgNDMsIDIyLCAyMTksIAotICAgIDk5LCAyMjYsIDExLCAyNDIsIDE5MCwgMjE4LCAxNTcsIDIxNiwgMTg2LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQzLCAKLSAgICAxNjMsIDI1MSwgMjI5LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQ0LCAxNjMsIDI1MSwgMjI5LCA4NSwgMjQ4LCAxLCAyLCAKLSAgICAxMjQsIDc1LCA4NSwgMjMyLCAxMTAsIDcxLCAyNTAsIDQ0LCAyLCAxMjQsIDc1LCA4NSwgMjUwLCA0NCwgMiwgMTI0LCA3NSwgCi0gICAgMjQ1LCA5MywgNzEsIDIxOCwgMjM2LCAyNDUsIDkzLCA4NSwgMjE4LCAyMzYsIDI0NSwgOTMsIDcxLCAyNDgsIDAsIDI0NSwgCi0gICAgOTMsIDg1LCAyNDgsIDAsIDI0NSwgOTMsIDcxLCAyNTAsIDQzLCAyNDUsIDkzLCA4NSwgMjUwLCA0MywgMjIyLCAxMzQsIAotICAgIDIyMywgNTMsIDIxOSwgNDksIDIyNiwgMTcxLCAyMTksIDQ5LCAyLCAyMjYsIDEyNywgMjIzLCA1MywgMjE5LCA0OSwgMiwgCi0gICAgMjAzLCA5MSwgMjUyLCAxLCAyMTksIDQ4LCAyNTIsIDEsIDIyMywgNTMsIDIxOSwgNDgsIDUyLCAyMjUsIDI1LCAyMTUsIAotICAgIDIxMiwgMjI1LCAyNSwgMjMzLCA0OCwgMjQ5LCA5OSwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI0OSwgOTksIDI1NCwgCi0gICAgMTE4LCAxMjcsIDIxNiwgNzksIDIzMCwgMTg0LCAyMzAsIDI5LCAzNywgNTksIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgOTYsIAotICAgIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgMzAsIDIyNiwgMTcxLCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDI0NywgCi0gICAgMTI4LCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDIyNSwgMjUsIDIzMCwgMjksIDQyLCAyMzUsIDIwNiwgMjI2LCAKLSAgICAxNzEsIDIzMCwgMjksIDQyLCAyMTQsIDE3NiwgMjI2LCAxNzEsIDExMywgMjMyLCAxNTIsIDIyLCAyMjYsIDE3MSwgMTEzLCAKLSAgICAyMzIsIDE1MiwgMTc3LCAyMjYsIDE3MSwgMjMwLCAyOSwgMzAsIDIyNiwgMTcxLCAyMzAsIDE1OSwgMTEzLCAyMTgsIDQ0LCAKLSAgICAyMTgsIDQyLCAyLCAyMzUsIDIxOCwgMjI0LCAyNywgMjM1LCAyMTksIDIyNiwgMTcxLCAyNDQsIDEwNywgMjI2LCAzLCAyMzUsIAotICAgIDIxOCwgMjM1LCAyMTksIDIsIDUyLCA5MSwgMjM1LCAyMTksIDI1MywgMTgxLCAyLCAyMTksIDk3LCAyNTAsIDQwLCAyNDMsIAotICAgIDIzMywgMjU0LCA5NiwgMjM1LCAyMTYsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIzLCAxMTgsIDIyNSwgMjQxLCAyNTQsIAotICAgIDEwLCAyMjUsIDQsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIwLCAxNTQsIDIyNSwgMjQxLCAyNTQsIDEwLCAyMjUsIDQsIAotICAgIDIzMiwgMjIwLCAyMzUsIDIxNywgMjI4LCA1NywgMjM2LCAxLCAyMTYsIDE5NywgMjI1LCA0LCAyMzUsIDIxOSwgMjU0LCAxMCwgCi0gICAgMTE2LCAyMjUsIDE0LCAyMjYsIDE3MSwgMjI0LCAyMSwgMjM1LCAyMTksIDIyNiwgMTcxLCAyMzUsIDIxOSwgMiwgMTQwLCAKLSAgICA4MCwgMiwgMTAzLCAyMzUsIDIxOSwgMiwgMzAsIDUwLCAyMzUsIDIxOSwgMiwgMjM1LCAyMDUsIDIzNSwgMjE5LCAyLCAyMTQsIAotICAgIDE3NSwgMjM1LCAyMTksIDIsIDIyNiwgMTI3LCAyMzUsIDIxOSwgMiwgMjE0LCAxODMsIDIzNSwgNzIsIDIzMywgOTEsIDQzLCAKLSAgICAyMTUsIDIyNywgMjI2LCAxNzEsIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyNDksIDIxNywgMjEwLCAxNjAsIDE4OSwgCi0gICAgMjIxLCAyMDMsIDIyNSwgNTksIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyMjQsIDE3OSwgOTYsIDUsIDIsIDQsIDI1MCwgCi0gICAgNDQsIDQ4LCA5NiwgNSwgMiwgMjUwLCAzOSwgMjU1LCAyNCwgNDgsIDk2LCA1LCAyLCAyMTYsIDkwLCA0OCwgOTYsIDUsIDIsIAotICAgIDU5LCA1MSwgOTYsIDUsIDIsIDIxNiwgOTAsIDUxLCA5NiwgNSwgMiwgMjE4LCA2NiwgMTA1LCA5NiwgNSwgMiwgODUsIDIxNSwgCi0gICAgMjI2LCAyMzAsIDE4NywgNSwgMiwgMjQ5LCAyMjgsIDQ4LCAyMzAsIDE4NywgNSwgMiwgNTksIDUxLCAyMzAsIDE4NywgNSwgCi0gICAgMiwgMjQ0LCAxODMsIDI0NywgMTI2LCAyMzAsIDE4NywgNSwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCA5NiwgNSwgMjM2LCA3LCAKLSAgICA0MywgMTYzLCAyNTAsIDQzLCA5NiwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAyMTMsIDI1NCwgMTc3LCAyNDksIAotICAgIDEzOSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIsIDU5LCA0OCwgMjMwLCA4OSwgNSwgMiwgMjE0LCAxODMsIDIyMCwgMTUxLCAKLSAgICAyMjQsIDE4NCwgMiwgMjUxLCAxODMsIDI1MCwgNywgMjE5LCA3OSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIzNiwgNywgNDMsIAotICAgIDE2MywgMjUwLCA0MywgMjMwLCA4OSwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAzNywgMjMwLCA4OSwgNSwgMiwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjMwLCA4OSwgNSwgMjM2LCA3LCA1MiwgMjUwLCA0MywgMzcsIDI0NywgMTc3LCA1MCwgOTYsIAotICAgIDUsIDIzNiwgNywgMjE1LCAyMjYsIDIzMCwgMTg3LCA1LCAyMzYsIDcsIDIxNSwgMjI2LCAyMzAsIDg5LCA1LCAyMzYsIDcsIAotICAgIDIxNSwgMjI2LCAyMzUsIDIxMywgMjI0LCAxODMsIDIyMiwgMjQ1LCAyMzUsIDIxMywgMjI0LCAxODMsIDIxMCwgMTYwLCAKLSAgICAxODksIDIyMywgOTMsIDI0OSwgMjE3LCAyNTQsIDE0MiwgMTc3LCAyNDksIDE3MywgMjM1LCAyMDYsIDIsIDI0NywgMTI4LCAKLSAgICAyMTQsIDE3NiwgMiwgMjMwLCAxODcsIDUwLCAyMTQsIDE3NiwgMiwgMjI2LCAxMjcsIDIzNSwgMjA2LCAyLCAyMjYsIDEyNywgCi0gICAgMjM1LCAyMDYsIDIsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjE0LCAxNzYsIDIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjE0LCAKLSAgICAxNzYsIDcyLCAyMzUsIDIwNSwgMjM1LCAyMDYsIDcyLCAyMTQsIDE3NSwgMjE0LCAxNzYsIDcyLCAyNTIsIDE0OSwgNzIsIAotICAgIDIzNSwgMjA1LCAyMzUsIDIwNiwgNzIsIDI1MiwgMTQ5LCA3MiwgMjE0LCAxNzUsIDIxNCwgMTc2LCAyNTIsIDM4LCAyMiwgCi0gICAgMjM1LCA3MSwgMiwgMjE0LCAxNzUsIDIzNSwgMjA2LCAyNTIsIDM4LCAyMiwgMjM1LCA3MSwgMiwgMjM1LCAyMDUsIDI1MCwgCi0gICAgOCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM1LCAyNTAsIDgsIDIzNSwgMjA2LCAyLCAyMjAsIDEzNSwgNTIsIDQyLCAyMzUsIAotICAgIDIwNSwgNTIsIDQyLCAyMTQsIDE3NSwgMjUwLCA4LCAyMTQsIDE3NiwgMiwgMjIwLCAxMzYsIDIyLCAyMTksIDc5LCAyMjQsIAotICAgIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1OSwgNDgsIDIzMiwgMTUyLCAxNzcsIDIsIDU5LCA0OCwgNTIsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMTEzLCAyMzUsIDIwNywgMjMyLCAxNTIsIDI1NCwgMTI2LCAxMTMsIAotICAgIDIzNSwgMjA3LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIxOSwgODcsIDIzMywgOTEsIDIyNiwgMTYyLCAyMTksIDg3LCAyMzMsIAotICAgIDkxLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDE3NywgMjI2LCAxMjUsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDIyLCAKLSAgICAyLCAyMzAsIDIyOSwgMjE4LCAxNDEsIDIzMiwgMTUyLCAxNzcsIDIsIDIzMCwgMjI5LCAyMTgsIDE0MSwgMjMyLCAxNTIsIAotICAgIDIyLCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMTc3LCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMjIsIDIsIAotICAgIDUyLCAyMjYsIDEyNywgMjMyLCAxNTIsIDIyLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1MiwgMjE0LCAxODMsIAotICAgIDQsIDIxMywgMjUxLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDE3NywgMiwgNTIsIDIyNiwgMTI3LCAyMzIsIDE1MiwgMTc3LCAKLSAgICAyLCA1MiwgMjE0LCAxODMsIDIxMCwgMTYwLCAxODksIDI0NywgMTM3LCAyNTQsIDg3LCAyMTAsIDE2MCwgMTg5LCAyMjMsIAotICAgIDE1MSwgMjU0LCA4NywgMjQ1LCAxMDYsIDUsIDIsIDU5LCA1MSwgMjQwLCAxMTEsIDIsIDU5LCA0OCwgMjE1LCAyMTIsIDIwMywgCi0gICAgMjUyLCAxNDksIDIsIDUyLCA2NywgOTEsIDIxNSwgMjEyLCAyMDMsIDI1MiwgMTQ5LCAyLCAyMTUsIDIxMiwgNjcsIDkxLCAKLSAgICAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgNTksIDQ4LCAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCAKLSAgICAyMTksIDE2NCwgMjMwLCAxODcsIDIxOSwgMTYzLCAyNDksIDIwNywgMiwgNTksIDQ4LCAyNDUsIDEwNiwgMiwgMjUzLCAyMjQsIAotICAgIDI1NCwgMTU2LCAxMjgsIDIxNiwgNDMsIDIsIDI1MCwgMzksIDI1NSwgMjMsIDI1NCwgNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjQ1LCAxMDYsIDUsIDcyLCA5NiwgNTAsIDk2LCA1LCA3MiwgMjQ1LCAxMDYsIDUwLCAyNDUsIDEwNiwgNSwgNzIsIDIxNiwgCi0gICAgOTAsIDIyNiwgMTcxLCA1MiwgMjQ5LCAyMzUsIDI0NSwgMTA3LCAxMTMsIDI0OSwgMjAyLCAyNDUsIDEwNiwgMjE5LCAxNzgsIAotICAgIDEzNCwgMjQ5LCAyMDIsIDI0NSwgMTA2LCAyMTksIDE3OCwgMjQ1LCAxMDYsIDUsIDIsIDExMywgMTcwLCA3MiwgMjIsIDExMywgCi0gICAgMTcwLCA1MSwgMjQ1LCAxMDIsIDIsIDI0NCwgMTksIDE3MCwgNDgsIDIzMywgMjEsIDIsIDI1MCwgNDQsIDIzNSwgMjIyLCAKLSAgICAyNDIsIDEzNywgMiwgMjUwLCA0NCwgMjM1LCAyMjIsIDIzMywgMjEsIDIsIDIyNCwgMTYsIDE2NCwgNDgsIDI0MiwgMTM3LCAKLSAgICAyLCAyMjQsIDE2LCAxNjQsIDQ4LCAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMTEyLCAyNDIsIDEzNywgMTc3LCAyMTksIAotICAgIDk5LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCAyMzUsIDIyMiwgMjQyLCAKLSAgICAxMzcsIDE3NywgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgMjM1LCAyMjIsIDIzMywgMjEsIDE3NywgMjE5LCA5OSwgCi0gICAgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDI0MiwgMTM3LCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAKLSAgICAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDcyLCAyMjIsIDI1NCwgMjQyLCAxMzcsIDE3NywgCi0gICAgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNzIsIDIzMywgNTIsIDIzMywgMjEsIDE3NywgMjU0LCA1NywgMjQyLCAKLSAgICAxMzcsIDE3NywgMjU0LCA1NywgMjMzLCAyMSwgMjIsIDIxOSwgMTU1LCAyMjgsIDU3LCAxMjgsIDExMiwgMjQyLCAxMzcsIAotICAgIDIyLCAyMTksIDE1NSwgMjI4LCA1NywgMTI4LCAxMTIsIDIzMywgMjEsIDIyLCAyMjgsIDU3LCAyNTQsIDU3LCAyNDIsIDEzNywgCi0gICAgMjIsIDIyOCwgNTcsIDI1NCwgNTcsIDIzMywgMjEsIDcyLCAyNDYsIDExOSwgMTI4LCA3MiwgMjQyLCAxMzYsIDI0MiwgMTM3LCAKLSAgICA3MiwgMjQ2LCAxMTksIDEyOCwgNzIsIDIzMywgMjAsIDIzMywgMjEsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgCi0gICAgMjQyLCAxMzcsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgMjMzLCAyMSwgNzIsIDIxOSwgMTY0LCA3MiwgMjQyLCAKLSAgICAxMzYsIDI0MiwgMTM3LCA3MiwgMjE5LCAxNjQsIDcyLCAyMzMsIDIwLCAyMzMsIDIxLCA3MiwgMjQyLCAxMzcsIDcyLCAyNDYsIAotICAgIDExOSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjMzLCAyMSwgNzIsIDI0NiwgMTE5LCAyNDUsIDEwNywgMjMzLCAyMSwgCi0gICAgNzIsIDIxOSwgOTksIDEyOCwgNzIsIDI0MiwgMTM3LCA3MiwgMjE5LCA5OSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjE5LCAKLSAgICA5OSwgMTI4LCA3MiwgMjMzLCAyMSwgNzIsIDIxOSwgOTksIDI0NSwgMTA3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgCi0gICAgMjMzLCAyMCwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMSwgMiwgNTksIDIzNSwgMjIyLCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzcsIDIsIAotICAgIDU5LCAyMzUsIDIyMiwgMjQ2LCAxMTksIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAyNDYsIDExOSwgMTI4LCAyMTYsIAotICAgIDQzLCAxNzcsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDIzMywgMjAsIDI0NiwgCi0gICAgMTE5LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzYsIDIxOSwgMTY0LCAxNzcsIDIzMywgMjAsIDIxOSwgCi0gICAgMTY0LCAxNzcsIDI0MiwgMTM2LCAyMTksIDE2NCwgNzIsIDIzMywgMjEsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOSwgMTY0LCAKLSAgICA3MiwgMjQyLCAxMzcsIDcyLCAyNDUsIDEwNiwgNTAsIDUyLCAyMjksIDk2LCAyMzMsIDIwLCA1MiwgMjI5LCA5NiwgMjQyLCAKLSAgICAxMzYsIDUyLCAyMjksIDk2LCAyMzMsIDIxLCAyLCAyMTQsIDE4MywgMjQyLCAxMzcsIDIyNiwgMTI1LCAyMzMsIDIwLCAyNDIsIAotICAgIDEzNywgMjUyLCAzOCwgMjMzLCAyMCwgMjMzLCAyMSwgMjUwLCA4LCAyNTEsIDg2LCAyNDksIDEwMCwgMjQyLCAxMzcsIDI1MCwgCi0gICAgOCwgMjUxLCA4NiwgMjQ5LCAxMDAsIDIzMywgMjEsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAKLSAgICAyNDUsIDEwNywgMjQyLCAxMzcsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAyNDUsIDEwNywgCi0gICAgMjE5LCA4MCwgMjE2LCAyMDEsIDIzMywgODksIDIxNiwgMjAxLCAyMTksIDgwLCAyMTYsIDIwMiwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjMzLCA4OSwgMjE2LCAyMDIsIDE3NywgMTI4LCAxMTIsIDI0NSwgMTA2LCA1LCAyLCAyNTEsIDExNiwgNDgsIDIyNCwgMjA2LCAKLSAgICA3MiwgMjE5LCAxNTUsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDIxOSwgMTU1LCAyNDUsIDEwNiwgNTAsIDIyNCwgCi0gICAgMjA2LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDU3LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIAotICAgIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDI0NSwgMTA2LCA1MCwgMjI0LCAKLSAgICAyMDYsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIAotICAgIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjI0LCAyMDYsIDcyLCAyMjgsIAotICAgIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIxOCwgNTcsIDcyLCAyMjgsIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDUyLCAKLSAgICAyMjQsIDIwNSwgNTIsIDIxOCwgNTYsIDIxOCwgNjUsIDIsIDI0NywgMTI4LCAyMTgsIDIzLCAyLCAyNDcsIDEyOCwgMjE4LCAKLSAgICA2NSwgMiwgOTYsIDUsIDUxLCAyMTgsIDIzLCAyLCA5NiwgNSwgNTEsIDIxOCwgNjUsIDIsIDIzMCwgODksIDUsIDUxLCAyMTgsIAotICAgIDIzLCAyLCAyMzAsIDg5LCA1LCA1MSwgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDIxOCwgCi0gICAgMjMsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAyMTgsIDY1LCA2NCwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCAKLSAgICAyMywgNjQsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOCwgNjUsIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgMjMsIAotICAgIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgNjUsIDY0LCA3MiwgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTgsIDIzLCAKLSAgICA2NCwgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA2NSwgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCAyMywgCi0gICAgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIDE3MSwgNDIsIDQ0LCAyMDQsIDkzLCAKLSAgICAyMjYsIDE3MSwgMjUwLCA4LCAyMTgsIDY0LCAyNTAsIDgsIDIxOCwgMjIsIDI1MCwgOCwgMjE4LCA2NSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjUwLCA4LCAyMTgsIDIzLCAxNzcsIDEyOCwgMTEyLCAyMTgsIDY1LCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgNzIsIAotICAgIDIxOCwgNjQsIDIxOCwgNjUsIDcyLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgMjUyLCAzOCwgCi0gICAgMjE4LCA2NCwgMjE4LCAyMywgMjUyLCAzOCwgMjIsIDIzNSwgNzEsIDI1MSwgODYsIDI0OCwgMTY1LCAyLCAyMTgsIDY0LCAKLSAgICAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyNDYsIDExMSwgMjI1LCA1MSwgMiwgMjE3LCAxMywgMjE2LCAxNCwgMjE1LCAyNDEsIAotICAgIDIzNSwgMjA1LCAyNDQsIDI5LCAyMjgsIDcwLCAyMTksIDI1MywgNDMsIDIxNywgODgsIDIxOSwgMjUzLCAxMjQsIDIxNywgCi0gICAgODgsIDIxOSwgMjUzLCAxMjAsIDIxNywgODgsIDIyNSwgMTc1LCAyLCAyMjIsIDkzLCA2NywgMjUyLCAxNDksIDIxNSwgMjEyLCAKLSAgICA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0OSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIDE0OSwgNTIsIDQzLCAyMTUsIAotICAgIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDMsIDIxNSwgOTMsIDIwMCwgMjQ4LCAxNjUsIDI0MywgMjUxLCA0MywgMjMxLCAKLSAgICA2OCwgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OSwgMiwgMjI2LCAxMjcsIDIxOSwgMjUzLCAxMjAsIAotICAgIDIxNywgODksIDIsIDIxNCwgMTgzLCAyMTksIDI1MywgMTIwLCAyMTcsIDg5LCA3MiwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OCwgCi0gICAgNTIsIDEyNCwgMjE3LCA4OCwgNTIsIDEyMCwgMjE3LCA4OCwgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjIzLCA1MiwgCi0gICAgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgzLCAyLCAyMjMsIDUyLCAyMjksIAotICAgIDEwNiwgMjE5LCA5NywgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA0OCwgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA1MSwgCi0gICAgMTI0LCAyMTcsIDg5LCAyLCAyNTAsIDQ0LCA1MSwgMjI2LCAxMiwgMiwgMjAzLCA5MSwgMjI2LCAxMiwgMiwgMjE2LCA5MCwgCi0gICAgMjI2LCAxNzEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDI1MSwgMjUyLCAyMjMsIDk0LCAyMTUsIDIxMiwgNjcsIDI1MiwgCi0gICAgMTQ5LCAyLCAyMDMsIDkxLCAyMTUsIDIxMiwgMjQ5LCAyMzUsIDIyNiwgMTcxLCAyMTUsIDIxMiwgMjI5LCA5NiwgMjMzLCAKLSAgICAyMCwgMjE1LCAyMTIsIDIyOSwgOTYsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMjMzLCAyMSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjQ2LCAxMTksIDIxOSwgOTksIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMTUsIDIxMiwgMjE5LCA0OSwgMjUxLCAKLSAgICAyNTIsIDIyMywgOTQsIDIzMywgOTEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDIyNiwgMTcxLCA1MiwgMjE5LCA0OSwgCi0gICAgMjI2LCAxNzEsIDcxLCA2NywgMTMwLCAyMzAsIDI5LCA3MSwgNjcsIDEzMCwgMjI4LCA2MSwgMjQ1LCAyMjgsIDcxLCA3NSwgCi0gICAgMjI4LCA2MSwgMjEyLCA5LCA3MSwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA3MSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzEsIAotICAgIDc1LCA0MywgNDQsIDcxLCA3NSwgMTQwLCA4NSwgNzUsIDIxNCwgMTUzLCA4NSwgNzUsIDI0NiwgMTEyLCA4NSwgNzUsIDIyOCwgCi0gICAgNjEsIDI0NSwgMjI4LCA4NSwgNzUsIDIyOCwgNjEsIDIxMiwgOSwgODUsIDc1LCAyMTksIDMwLCAyNDUsIDIyOCwgODUsIDc1LCAKLSAgICAyMTksIDMwLCAyMTIsIDksIDg1LCA3NSwgNDMsIDQ0LCA4NSwgNzUsIDEyMCwgMTI0LCA4NSwgNzUsIDk3LCA4MCwgMiwgCi0gICAgMjE2LCA3OCwgMjQ2LCAxMTEsIDk3LCA4MCwgMiwgMjE2LCA3OCwgMjE0LCAxNTIsIDE0MCwgODAsIDIsIDIxNiwgNzgsIAotICAgIDI0NiwgMTExLCAxNDAsIDgwLCAyLCAyMTYsIDc4LCAyMTQsIDE1MiwgNDIsIDIsIDIxNiwgMTUsIDE2MywgMjUxLCAyMjksIAotICAgIDQyLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgMjQ4LCA3LCAxNjMsIDI1MSwgCi0gICAgMjI5LCA0MiwgMiwgMjMyLCAxMTQsIDQzLCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDI0OCwgMSwgMiwgNDQsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgMjE2LCAxNSwgMTYzLCAyNTEsIDIyOSwgCi0gICAgMjQ4LCAxLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgMjQ2LCAxMjYsIDIxOCwgMjM2LCA4NSwgMjMzLCA5MSwgMjE4LCAKLSAgICAyMzYsIDcxLCAyMzMsIDkxLCAyMTgsIDIzNiwgODUsIDIxMywgMTg3LCA0LCAyMTgsIDIzNiwgNzEsIDIxMywgMTg3LCA0LCAKLSAgICAyMTgsIDIzNiwgODUsIDIyNSwgMTkzLCA3MSwgMjI1LCAxOTMsIDcxLCAyNDEsIDIwMCwgODUsIDI0MSwgMjAwLCAyMDMsIAotICAgIDg1LCAyNDEsIDIwMCwgODUsIDIzMywgOTEsIDI1MCwgNDMsIDg1LCAyMzEsIDg3LCAyNDgsIDAsIDcxLCAyMzEsIDg3LCAKLSAgICAyNDgsIDAsIDg1LCAyMzEsIDg3LCAyMzIsIDExMCwgNzEsIDIzMSwgODcsIDIzMiwgMTEwLCA4NSwgNCwgMjQ4LCAwLCA4NSwgCi0gICAgNCwgMjMyLCAxMTAsIDcxLCA0LCAyMzIsIDExMCwgODUsIDIwMywgMjQ1LCAxNzIsIDcxLCAyMDMsIDI0NSwgMTcyLCA4NSwgCi0gICAgNjcsIDI0NSwgMTcyLCA3MSwgNjcsIDI0NSwgMTcyLCA0MywgODAsIDIsIDQsIDI1MCwgNDMsIDEzNCwgMTQwLCAyNTMsIAotICAgIDI1NSwgNDMsIDgwLCAyLCAzNywgMjI1LCAyNSwgMjAwLCAxNDAsIDIxOCwgMjMyLCA3NSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgCi0gICAgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAKLSAgICAxNDAsIDIxNSwgNTgsIDIxNSwgMjEyLCAyNDgsIDE2NSwgNzUsIDE0MCwgODAsIDIsIDI0NiwgMTI2LCAyMTgsIDE0MSwgCi0gICAgMTQwLCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCAxNDAsIAotICAgIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIDE0MCwgCi0gICAgMjE1LCA1OCwgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgODAsIDIxNiwgMTQwLCAyMTEsIDE3OCwgMjEyLCAKLSAgICAzNiwgODAsIDIyNSwgMTAsIDI0NywgMjAzLCAyMzMsIDUyLCAyNDUsIDEwNiwgNSwgNzIsIDE0MCwgNzUsIDIyMywgNTMsIAotICAgIDIxNiwgOTAsIDIyNiwgMTcyLCA3MiwgMTQwLCA3NSwgMTQwLCA4MCwgNzIsIDIyMywgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgCi0gICAgOTcsIDgwLCAyMTYsIDE0MCwgMjQyLCAxMzYsIDk3LCA4MCwgMjE2LCAxNDAsIDIxOCwgMjIsIDE0MCwgMjI0LCAyNywgNzUsIAotICAgIDk3LCAyMjQsIDI3LCA3NSwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCA5NywgNzUsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjU0LCAKLSAgICAxNTYsIDEyOCwgMTEyLCAxNDAsIDgwLCA3MiwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDIxNiwgOTAsIDIyNiwgMTcxLCA3MSwgMjMxLCA4NywgMjE4LCAxNTgsIDg1LCA0LCAyMTgsIDE1OCwgNzEsIDQsIAotICAgIDIxOCwgMTU4LCA4NSwgMjIyLCAyNTAsIDIyNSwgMTkzLCA3MSwgMjIyLCAyNTAsIDIyNSwgMTkzLCAxMTQsIDIzMywgOTEsIAotICAgIDI1MCwgNDMsIDExNCwgMjI2LCAxMjgsIDIsIDIyNiwgMTI4LCAyMzUsIDIyMiwgMTE0LCAyNTAsIDQ0LCAyLCAyNTAsIDQ0LCAKLSAgICAyMzUsIDIyMiwgMTE0LCAyNTAsIDQzLCAxMTQsIDM3LCAyMjIsIDAsIDE0NSwgNiwgMSwgMjUzLCAxNjcsIDE0NSwgNiwgMSwgCi0gICAgMjUxLCAxMjUsIDE0NSwgNiwgMSwgMjEzLCAyNTMsIDE0NSwgNiwgMSwgMjQyLCAxOTIsIDE0NSwgNiwgMSwgMjQ3LCAxNDgsIAotICAgIDE0NSwgNiwgMSwgMjExLCAyMSwgMTQ1LCA2LCAxLCAyMTAsIDY4LCAxNDUsIDYsIDEsIDI0NiwgNDIsIDE0NSwgNiwgMSwgCi0gICAgMjEwLCA5MSwgMTQ1LCA2LCAxLCAyMzUsIDE1NCwgMTQ1LCA2LCAxLCA2NSwgMjM1LCAxNTQsIDE0NSwgNiwgMSwgNzQsIAotICAgIDE0NSwgNiwgMSwgMjQ3LCAxNjgsIDE0NSwgNiwgMSwgMjM0LCAyNDYsIDE0NSwgNiwgMSwgMjMyLCAxOTIsIDE0NSwgNiwgMSwgCi0gICAgMjMwLCAzNCwgMTQ1LCA2LCAxLCAyMjksIDE5NiwgMTQ1LCA2LCAxLCAyMjYsIDE4OSwgMTQ1LCA2LCAxLCAyMjUsIDcsIAotICAgIDE0NSwgNiwgMSwgMjIyLCAyMzAsIDE0NSwgNiwgMSwgMjE5LCA4NSwgMTQ1LCA2LCAxLCAyMTUsIDgxLCAxNDUsIDYsIDEsIAotICAgIDIxNCwgMjAxLCAxNDUsIDYsIDEsIDI0MywgMjU0LCAxNDUsIDYsIDEsIDI0MSwgMjA2LCAxNDUsIDYsIDEsIDIyNiwgMTM5LCAKLSAgICAxNDUsIDYsIDEsIDIyNSwgMjI0LCAxNDUsIDYsIDEsIDIxOSwgMjMwLCAxNDUsIDYsIDEsIDIxNSwgMTY4LCAxNDUsIDYsIDEsIAotICAgIDI1MCwgODMsIDE0NSwgNiwgMSwgMjIwLCAxMDQsIDE0NSwgNiwgMSwgMjExLCAyNywgMTQ1LCA2LCAxLCAyMTEsIDI5LCAKLSAgICAxNDUsIDYsIDEsIDIxMSwgNTcsIDE0NSwgNiwgMSwgMjE4LCAyNTUsIDE2MiwgMTQ1LCA2LCAxLCAyMTAsIDIxMiwgMTQ1LCAKLSAgICA2LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3OCwgMTQ1LCA2LCAxLCAyMTAsIAotICAgIDI0NCwgMTQ1LCA2LCAxLCAyMzUsIDE5MSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCAKLSAgICA2LCAxLCAyMzUsIDE5MSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyNDQsIDkwLCAxNDUsIDYsIDEsIDIzNSwgCi0gICAgMTUyLCAxNDUsIDYsIDEsIDIxOSwgMjI5LCAxNDUsIDYsIDEsIDIxNSwgMjAzLCA2MSwgMTQ1LCA2LCAxLCAyMzMsIDgxLCAKLSAgICAyMzAsIDM0LCAxNDUsIDQsIDEsIDI1MywgMTY3LCAxNDUsIDQsIDEsIDI1MSwgMTI1LCAxNDUsIDQsIDEsIDIxMywgMjUzLCAKLSAgICAxNDUsIDQsIDEsIDI0MiwgMTkyLCAxNDUsIDQsIDEsIDI0NywgMTQ4LCAxNDUsIDQsIDEsIDIxMSwgMjEsIDE0NSwgNCwgMSwgCi0gICAgMjEwLCA2OCwgMTQ1LCA0LCAxLCAyNDYsIDQyLCAxNDUsIDQsIDEsIDIxMCwgOTEsIDE0NSwgNCwgMSwgMjM1LCAxNTQsIAotICAgIDE0NSwgNCwgMSwgNjUsIDIzNSwgMTU0LCAxNDUsIDQsIDEsIDc0LCAxNDUsIDQsIDEsIDI0NywgMTY4LCAxNDUsIDQsIDEsIAotICAgIDIzNCwgMjQ2LCAxNDUsIDQsIDEsIDIzMiwgMTkyLCAxNDUsIDQsIDEsIDIzMCwgMzQsIDE0NSwgNCwgMSwgMjI5LCAxOTYsIAotICAgIDE0NSwgNCwgMSwgMjI2LCAxODksIDE0NSwgNCwgMSwgMjI1LCA3LCAxNDUsIDQsIDEsIDIyMiwgMjMwLCAxNDUsIDQsIDEsIAotICAgIDIxOSwgODUsIDE0NSwgNCwgMSwgMjE1LCA4MSwgMTQ1LCA0LCAxLCAyMTQsIDIwMSwgMTQ1LCA0LCAxLCAyNDMsIDI1NCwgCi0gICAgMTQ1LCA0LCAxLCAyNDEsIDIwNiwgMTQ1LCA0LCAxLCAyMjYsIDEzOSwgMTQ1LCA0LCAxLCAyMjUsIDIyNCwgMTQ1LCA0LCAxLCAKLSAgICAyMTksIDIzMCwgMTQ1LCA0LCAxLCAyMTUsIDE2OCwgMTQ1LCA0LCAxLCAyNTAsIDgzLCAxNDUsIDQsIDEsIDIyMCwgMTA0LCAKLSAgICAxNDUsIDQsIDEsIDIxMSwgMjcsIDE0NSwgNCwgMSwgMjExLCAyOSwgMTQ1LCA0LCAxLCAyMTEsIDU3LCAxNDUsIDQsIDEsIAotICAgIDIxOCwgMjU1LCAxNjIsIDE0NSwgNCwgMSwgMjEwLCAyMTIsIDE0NSwgNCwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgNCwgCi0gICAgMjEwLCAxODQsIDIsIDIxNywgNzgsIDE0NSwgNCwgMSwgMjEwLCAyNDQsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDQsIDIxMCwgCi0gICAgMTgzLCAxNDUsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDE0NSwgNCwgMSwgMjQ0LCA5MCwgMTQ1LCA0LCAxLCAyMzUsIDE1MiwgMTQ1LCA0LCAxLCAyMTksIDIyOSwgMTQ1LCA0LCAxLCAKLSAgICAyMTUsIDIwMywgNjEsIDE0NSwgNCwgMSwgMjMzLCA4MSwgMjMwLCAzNCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDUyLCAxMzAsIAotICAgIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1MiwgMTMwLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNiwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjE3LCA3OCwgNywgNCwgMSwgMTE2LCAyLCA5MSwgCi0gICAgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI0OCwgNDcsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCA0NywgNywgCi0gICAgNiwgMSwgMjU0LCAxNTEsIDcsIDYsIDEsIDIzMiwgNTUsIDIsIDEwMywgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIAotICAgIDIxNSwgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgCi0gICAgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDksIDEwOCwgNywgNiwgMSwgCi0gICAgMTYzLCAyNDIsIDY3LCA3LCA0LCAxLCAxNjMsIDI0MiwgNjcsIDcsIDQsIDEsIDIxNywgNzYsIDIyNSwgMTM2LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIyOCwgNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDEyMSwgMjIyLCAyMzcsIDIzNSwgMjIyLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCA3NiwgNywgMjE4LCA2NiwgNCwgMSwgMjM1LCAKLSAgICAxNTAsIDU4LCAxLCA2LCAyMTQsIDEwNSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIAotICAgIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgODEsIDYsIDEsIDI1NCwgMTczLCA4MSwgNCwgMSwgMjU0LCAxNzMsIAotICAgIDgxLCA2LCAxLCAyMTMsIDE3MywgODEsIDQsIDEsIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMTQsIDgxLCA0LCAxLCAKLSAgICAyNDMsIDExNCwgODEsIDYsIDEsIDI0OCwgMTk5LCA4MSwgNCwgMSwgMjQ4LCAxOTksIDgxLCA2LCAxLCAyNDUsIDIwMiwgODEsIAotICAgIDQsIDEsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjE5LCAzNSwgODEsIDQsIDEsIDIxOSwgMzUsIDgxLCA2LCAxLCAyMTAsIDEwMSwgCi0gICAgODEsIDQsIDEsIDIxMCwgMTAxLCA4MSwgNiwgMSwgMjQxLCAyNTUsIDgxLCA0LCAxLCAyNDEsIDI1NSwgODEsIDYsIDEsIAotICAgIDIxNiwgMTc4LCA4MSwgNCwgMSwgMjE2LCAxNzgsIDgxLCA2LCAxLCAyNDAsIDEyMywgODEsIDQsIDEsIDI0MCwgMTIzLCA4MSwgCi0gICAgNiwgMSwgMjM0LCAyMzMsIDgxLCA0LCAxLCAyMzQsIDIzMywgODEsIDYsIDEsIDIzMywgNzgsIDgxLCA0LCAxLCAyMzMsIDc4LCAKLSAgICA4MSwgNiwgMSwgMjMwLCAyMzUsIDgxLCA0LCAxLCAyMzAsIDIzNSwgODEsIDYsIDEsIDIyOCwgMjM4LCA4MSwgNCwgMSwgCi0gICAgMjI4LCAyMzgsIDgxLCA2LCAxLCAyMzMsIDIzOSwgODEsIDQsIDEsIDIzMywgMjM5LCA4MSwgNiwgMSwgNzgsIDgxLCA0LCAxLCAKLSAgICA3OCwgODEsIDYsIDEsIDIyNSwgMTExLCA4MSwgNCwgMSwgMjI1LCAxMTEsIDgxLCA2LCAxLCAyMjIsIDIxMywgODEsIDQsIDEsIAotICAgIDIyMiwgMjEzLCA4MSwgNiwgMSwgMjE5LCAxNjcsIDgxLCA0LCAxLCAyMTksIDE2NywgODEsIDYsIDEsIDIxNywgNDIsIDgxLCAKLSAgICA0LCAxLCAyMTcsIDQyLCA4MSwgNiwgMSwgMjE0LCAyMjksIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgCi0gICAgMTI5LCA4MSwgNCwgMSwgMjQ0LCAxMjksIDgxLCA2LCAxLCAyMzQsIDExOCwgODEsIDQsIDEsIDIzNCwgMTE4LCA4MSwgNiwgCi0gICAgMSwgMjI0LCAxNjQsIDgxLCA0LCAxLCAyMjQsIDE2NCwgODEsIDYsIDEsIDIyNiwgMTgyLCA4MSwgNCwgMSwgMjI2LCAxODIsIAotICAgIDgxLCA2LCAxLCAyNDgsIDUsIDI1NCwgMTc5LCA4MSwgNCwgMSwgMjQ4LCA1LCAyNTQsIDE3OSwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjU0LCAyMDUsIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMjA1LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgCi0gICAgNCwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjQ4LCA1LCAyMzQsIDIzMywgODEsIDQsIDEsIDI0OCwgNSwgCi0gICAgMjM0LCAyMzMsIDgxLCA2LCAxLCAyNDgsIDUsIDIyOCwgMjM4LCA4MSwgNCwgMSwgMjQ4LCA1LCAyMjgsIDIzOCwgODEsIDYsIAotICAgIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjI2LCAxODIsIDgxLCA0LCAxLCA1NSwgODEsIDIyNiwgMTgyLCA4MSwgNiwgMSwgMjIxLCAyNDgsIDgxLCA0LCAxLCAyMjEsIAotICAgIDI0OCwgODEsIDYsIDEsIDI0OSwgMTM2LCAyMjAsIDU3LCA4MSwgNCwgMSwgMjQ5LCAxMzYsIDIyMCwgNTcsIDgxLCA2LCAxLCAKLSAgICA1NSwgODEsIDIyMCwgNTcsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgNTcsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgODMsIAotICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgODMsIDgxLCA2LCAxLCAyNTQsIDE5MSwgMjM0LCAxMjMsIDgxLCA0LCAxLCAyNTQsIAotICAgIDE5MSwgMjM0LCAxMjMsIDgxLCA2LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCA0LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCAKLSAgICA2LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA2LCAxLCA1NSwgODEsIDE2MiwgCi0gICAgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNTQsIDE2MiwgODEsIDQsIDEsIDIzMywgMTU0LCAxNjIsIAotICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIyNCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjQyLCAyLCA4MSwgNCwgMSwgNTUsIDgxLCAyNDIsIDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MywgMTA5LCA4MSwgNCwgMSwgCi0gICAgNTUsIDgxLCAyNDMsIDEwOSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ3LCAxNzEsIDgxLCA0LCAxLCA1NSwgODEsIDI0NywgMTcxLCAKLSAgICA4MSwgNiwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgCi0gICAgMjEyLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAKLSAgICAyMjksIDMyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjksIDMyLCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAyMjcsIAotICAgIDE1MiwgODEsIDQsIDEsIDU1LCAyMjcsIDIxMiwgMjI3LCAxNTIsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIAotICAgIDgxLCA0LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIDgxLCAxNiwgMjM0LCAyNTIsIDgxLCAxNiwgMjMwLCAyMzYsIDIyMiwgCi0gICAgMjEzLCA4MSwgMTYsIDIyNSwgMTEyLCAyMjIsIDIxMywgODEsIDE2LCAyMTgsIDE0OSwgODEsIDE2LCAyMTcsIDQzLCAyMjIsIAotICAgIDIxMywgODEsIDE2LCAyMzQsIDExOSwgMjIyLCAyMTMsIDgxLCAxNiwgMjIwLCAyNSwgMjE5LCAxNjcsIDgxLCA2LCAxLCAKLSAgICAyNDksIDEyMywgMjIwLCA1NywgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjAsIDU3LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0MywgCi0gICAgMTA5LCA4MSwgNCwgMSwgMjQ5LCAxMjMsIDI0MywgMTA5LCA4MSwgMzgsIDIyOCwgMjM5LCA0OCwgODEsIDM4LCAyMTgsIAotICAgIDI0OSwgMjUzLCAyMzIsIDgxLCAzOCwgMjE4LCAyNDksIDIzMywgMjcsIDgxLCA2LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIAotICAgIDgxLCA0LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIDgxLCA1NSwgMjI3LCAyMTIsIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIAotICAgIDU1LCAyMjcsIDIxMiwgMjQ3LCAyMDUsIDIyNCwgMTYsIDc5LCA4MSwgNTUsIDIyNywgMjEyLCAyMzUsIDI0NCwgMjI0LCAxNiwgCi0gICAgNzksIDgxLCA1NSwgMjI3LCAyMTIsIDIxMywgMjQxLCAyNDcsIDE4MCwgODEsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgODEsIAotICAgIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIDIzMCwgMTI5LCAyNDcsIDE4MCwgOTgsIDQsIDEsIDI1NCwgMTMxLCA5OCwgNCwgMSwgCi0gICAgMjUyLCAxNjAsIDk4LCA0LCAxLCAyNDMsIDExMywgOTgsIDQsIDEsIDI0NywgMTM2LCA5OCwgNCwgMSwgMjQ1LCAxNTgsIDk4LCAKLSAgICA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYxLCA5OCwgNCwgMSwgMjM2LCA2LCAKLSAgICA5OCwgNCwgMSwgMjM0LCAyNDAsIDk4LCA0LCAxLCAyMzMsIDg3LCA5OCwgNCwgMSwgMjMxLCAxOTAsIDk4LCA0LCAxLCAyMjksIAotICAgIDIwMCwgOTgsIDQsIDEsIDIyNiwgMjAwLCA5OCwgNCwgMSwgMjI2LCAyMSwgOTgsIDQsIDEsIDIxMCwgNzgsIDk4LCA0LCAxLCAKLSAgICAyMjMsIDE3NCwgOTgsIDQsIDEsIDIyMSwgMjQ1LCA5OCwgNCwgMSwgMjE3LCA1MSwgOTgsIDQsIDEsIDIxNCwgMTkwLCA5OCwgCi0gICAgNCwgMSwgMjI1LCAxNDMsIDk4LCA0LCAxLCAyMzQsIDEyNywgOTgsIDQsIDEsIDI0MiwgMjQ4LCA5OCwgNCwgMSwgMjI0LCAKLSAgICA3NiwgOTgsIDQsIDEsIDIyMCwgMjIsIDk4LCA0LCAxLCAyNTAsIDEwNSwgOTgsIDQsIDEsIDI1MSwgMTUsIDk4LCA0LCAxLCAKLSAgICAyMzUsIDEwNiwgOTgsIDQsIDEsIDI1MCwgNDgsIDk4LCA0LCAxLCAyNTAsIDE1MSwgOTgsIDQsIDEsIDIxMSwgMTYzLCA5OCwgCi0gICAgNCwgMSwgMjM1LCAxMTcsIDk4LCA0LCAxLCAyNDIsIDUwLCA5OCwgNCwgMSwgMjQxLCAyNDUsIDk4LCA0LCAxLCAyNDEsIAotICAgIDE4MiwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDExLCA5OCwgNCwgMSwgMjQxLCA3MiwgOTgsIDQsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgNCwgMSwgMjU0LCAyNDEsIDIxNiwgMTA5LCAxLCAxOTIsIDIxNiwgMTA5LCAxLCAyMTEsIDk5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA5OCwgMjE2LCAxMDksIDEsIDIxMSwgODgsIDIxNiwgMTA5LCAxLCAyMTEsIDg2LCAyMTYsIAotICAgIDEwOSwgMSwgMjUyLCA0MCwgMjU1LCAyNSwgMjExLCA4MSwgMjE2LCAxMDksIDEsIDIxMSwgODEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDk2LCAyMTYsIDEwOSwgMSwgMjExLCA5MywgMjE2LCAxMDksIDEsIDIxMSwgOTUsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDk0LCAyMTYsIDEwOSwgMSwgMjExLCAxMiwgMjE2LCAxMDksIDEsIDIxMSwgOTAsIDIxNiwgMTA5LCAxLCAyMTEsIDc5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgNzksIDIxNiwgMTA5LCAxLCAyMTEsIDc2LCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDI1MiwgNDAsIDI1NSwgMjUsIDIxMSwgODQsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDIxMSwgODMsIDIxNiwgMTA5LCAxLCAyMTEsIDEwMywgMjE2LCAxMDksIDEsIDIxMSwgNzcsIAotICAgIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA3NywgMjE2LCAxMDksIDEsIDIxMSwgNjYsIDIxNiwgMTA5LCAxLCAyMTUsIAotICAgIDExNiwgMjExLCA2NiwgMjE2LCAxMDksIDEsIDIxMSwgOCwgMjE2LCAxMDksIDEsIDIxMSwgNDksIDIxNiwgMTA5LCAxLCAKLSAgICAyNTQsIDIxNiwgMjExLCA0OSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDQ5LCAyMTYsIDEwOSwgMSwgMjExLCA3NSwgCi0gICAgMjE2LCAxMDksIDEsIDIxMSwgNzQsIDIxNiwgMTA5LCAxLCAyMTEsIDcxLCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgCi0gICAgODUsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA2OSwgMjE2LCAxMDksIDEsIDIxMSwgNjcsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTAsIDIxMiwgMjE2LCAxMDksIDEsIDIxMSwgNjQsIDIxNiwgMTA5LCAxLCAyMTEsIDYzLCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NywgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDg3LCAyMTYsIDEwOSwgMSwgMjUzLCAxNzEsIDIxMSwgODcsIDIxNiwgCi0gICAgMTA5LCAxLCAyMTEsIDYyLCAyMTYsIDEwOSwgMSwgMjExLCA2MCwgMjE2LCAxMDksIDEsIDIxMSwgNjEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDU5LCAyMTYsIDEwOSwgMSwgMjExLCA1OCwgMjE2LCAxMDksIDEsIDIxMSwgOTcsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDU2LCAyMTYsIDEwOSwgMSwgMjExLCA1NCwgMjE2LCAxMDksIDEsIDIxMSwgNTMsIDIxNiwgMTA5LCAxLCAyMTEsIDUyLCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA1MCwgMjE2LCAxMDksIDEsIDIxNywgMzUsIDIxMSwgNTAsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDQ4LCAyMTYsIDEwOSwgMSwgMjExLCA0NywgMjE2LCAxMDksIDEsIDIxMCwgMjQ0LCAyMTYsIDEwOSwgNTgsIDEsIDIzMywgCi0gICAgMTMyLCA3OSwgMjE2LCAxMDksIDIyMCwgMTQwLCA3OSwgMjE2LCAxMDksIDExNywgMjM1LCA2OSwgMjksIDMsIDIzMiwgMTYxLCAKLSAgICAyOSwgMywgMjMwLCAxNjUsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIxOSwgNTksIDI5LCAzLCAyMjAsIDgsIDI5LCAzLCAKLSAgICAyNTEsIDIxMiwgMjksIDMsIDIxNiwgNDIsIDI5LCAzLCAyNDksIDI0NSwgMjksIDMsIDIyOCwgNzcsIDI5LCAzLCAyMjcsIAotICAgIDEzNywgMjksIDMsIDI0MiwgMTg3LCAyMjcsIDQsIDI5LCAzLCAyMTAsIDIyLCAyOSwgMywgMjQ3LCAxNTEsIDI5LCAzLCAKLSAgICAyNDgsIDExMiwgMjksIDMsIDIzNSwgNzMsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDI1MCwgOTMsIDI5LCAzLCAyMjUsIAotICAgIDEyMywgMjksIDMsIDIyNSwgMTgsIDI5LCAzLCAyNDMsIDYsIDI5LCAzLCAyNDMsIDIsIDI5LCAzLCAyNDMsIDMsIDI5LCAzLCAKLSAgICAyNDMsIDQsIDI5LCAzLCAyMTgsIDIyNSwgMjksIDMsIDIxOCwgMTgxLCAyOSwgMywgMjE4LCAxOTQsIDI5LCAzLCAyMTgsIAotICAgIDIyNCwgMjksIDMsIDIxOCwgMTk4LCAyOSwgMywgMjE4LCAxOTksIDI5LCAzLCAyMTgsIDE4NiwgMjksIDMsIDI1MCwgMjIxLCAKLSAgICAyOSwgMywgMjUwLCAyMDAsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMjIwLCAyOSwgMywgMjUwLCAyMTgsIDI5LCAKLSAgICAzLCAyNTAsIDIxOSwgMjksIDMsIDI1MCwgMjAxLCAyOSwgMywgMjA5LCAyNDMsIDI5LCAzLCAyMDksIDIyMSwgMjksIDMsIAotICAgIDIwOSwgMjM0LCAyOSwgMywgMjA5LCAyNDIsIDI5LCAzLCAyMDksIDIzNywgMjksIDMsIDIwOSwgMjM4LCAyOSwgMywgMjA5LCAKLSAgICAyMjYsIDI5LCAzLCAyNTAsIDIxNiwgMjksIDMsIDI1MCwgMjAzLCAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDIxNSwgCi0gICAgMjksIDMsIDI1MCwgMjEzLCAyOSwgMywgMjUwLCAyMTQsIDI5LCAzLCAyNTAsIDIwNCwgMjksIDMsIDIyMywgMjM5LCAyOSwgCi0gICAgMywgMjIzLCAyMjksIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyMzYsIDI5LCAzLCAKLSAgICAyMjMsIDIzNywgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjMzLCAxNjUsIDI5LCAzLCAyMzMsIDE1NywgMjksIDMsIDIzMywgCi0gICAgMTYwLCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjMzLCAxNTgsIAotICAgIDI5LCAzLCAyMTEsIDEzMCwgMjksIDMsIDIxMSwgMTIwLCAyOSwgMywgMjExLCAxMjYsIDI5LCAzLCAyMTEsIDEyOSwgMjksIAotICAgIDMsIDIxMSwgMTI3LCAyOSwgMywgMjExLCAxMjgsIDI5LCAzLCAyMTEsIDEyNSwgMjksIDMsIDI0MiwgNzgsIDI5LCAzLCAKLSAgICAyNDIsIDY5LCAyOSwgMywgMjQyLCA3MiwgMjksIDMsIDI0MiwgNzcsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NSwgCi0gICAgMjksIDMsIDI0MiwgNzEsIDM4LCAzMywgMSwgMjUyLCA4MywgMzgsIDMzLCAxLCAyMTMsIDI1NSwgMzgsIDMzLCAxLCAyNDIsIAotICAgIDI0MywgMzgsIDMzLCAxLCAyNDgsIDk4LCAzOCwgMzMsIDEsIDIxMCwgNzQsIDM4LCAzMywgMSwgMjEwLCA5NCwgMzgsIDMzLCAKLSAgICAxLCAxNzYsIDM4LCAzMywgMSwgMjQ1LCAxODIsIDM4LCAzMywgMSwgMjQ1LCAxNjcsIDM4LCAzMywgMSwgMjQ1LCAxNTgsIAotICAgIDM4LCAzMywgMSwgNzgsIDM4LCAzMywgMSwgMjI1LCAyMjQsIDM4LCAzMywgMSwgMjQ1LCAxMDAsIDM4LCAzMywgMSwgMjQ1LCAKLSAgICA5MCwgMzgsIDMzLCAxLCAyMTcsIDIzLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OSwgMzgsIDMzLCAxLCAKLSAgICAyNTAsIDEzOSwgMzgsIDMzLCAxLCAyMjAsIDEwNCwgMzgsIDMzLCAxLCAyMjAsIDY3LCAzOCwgMzMsIDEsIDI0NCwgOTAsIAotICAgIDM4LCAzMywgMSwgMjQ1LCA4OSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDI0NywgCi0gICAgMTY5LCAzOCwgMzMsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCi0gICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTkwLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5OCwgMjEwLCAxODMsIDM4LCAzMywgMSwgCi0gICAgMjUyLCAxLCAyMTAsIDE4MywgMzgsIDMzLCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgNDQsIDI1NCwgMTE4LCAKLSAgICAyMTgsIDYxLCAyMzEsIDE1OSwgNDQsIDI1NCwgMTE4LCAyNDYsIDEyNiwgMjE4LCA2MSwgMjMxLCAxNTksIDQzLCAyMTgsIAotICAgIDYxLCAxMjcsIDQ0LCAyMTgsIDYxLCAxMjcsIDQzLCAyNDYsIDEyNiwgMjE4LCA2MSwgMTI3LCA0NCwgMjQ2LCAxMjYsIDIxOCwgCi0gICAgNjEsIDEyNywgMjIzLCAxNjAsIDIzNSwgMjA5LCAyMzEsIDE1OSwgMjIzLCAxNjAsIDI0NiwgMTI2LCAyMzUsIDIwOSwgMjMxLCAKLSAgICAxNTksIDI0NiwgMTI2LCAyMTUsIDI0MiwgMjMxLCAxNTksIDQzLCAyMTUsIDI0MiwgMTI3LCA0NCwgMjE1LCAyNDIsIDEyNywgCi0gICAgMjIzLCAxNjAsIDIxOCwgMjM2LCA0MywgMjIzLCAxNjAsIDIyNiwgMjAyLCAxMjcsIDQ0LCAyMjMsIDE2MCwgMjI2LCAyMDIsIAotICAgIDEyNywgMjQ1LCAyMTgsIDI0OSwgMTY2LCAyMjYsIDE3LCAyNDQsIDMwLCAyMjYsIDE3LCAyMjMsIDUyLCAyNDQsIDMwLCAKLSAgICAyMjYsIDE3LCAyNDAsIDE3MiwgMjQ2LCAxMjYsIDIyNiwgMjU1LCAyNDYsIDExMiwgMjU0LCAxMjcsIDIxNCwgMTUzLCAyNTQsIAotICAgIDEyNywgMjQ2LCAxMjYsIDIyMiwgMjUwLCAyNTQsIDExNywgNTIsIDIyNiwgMjUyLCAyNDAsIDE3NSwgMjM1LCAyMDAsIDIzNSwgCi0gICAgMjA4LCAyMjYsIDYzLCAyNTEsIDE2MiwgMjQwLCAxNzYsIDIsIDI0OCwgOSwgMjE2LCA5MCwgMiwgMjIyLCAyMzcsIDQ4LCAKLSAgICA0MywgMTIxLCAyMjYsIDksIDEyNywgNDQsIDEyMSwgMjI2LCA5LCAxMjcsIDIxNiwgOTAsIDIsIDU5LCA0OCwgMjE2LCA5MCwgCi0gICAgMiwgNTksIDUxLCA0MywgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCA0NCwgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCAKLSAgICAyMTYsIDE1LCA0MywgMTYzLCAxMjcsIDIxNiwgMTUsIDQ0LCAxNjMsIDEyNywgMjUxLCAxODMsIDQzLCAxNjMsIDEyNywgCi0gICAgMjUxLCAxODMsIDQ0LCAxNjMsIDEyNywgNDMsIDIxOSwgMTg5LCAxMDQsIDEyNywgNDQsIDIxOSwgMTg5LCAxMDQsIDEyNywgCi0gICAgNDMsIDUyLCAyMjYsIDcsIDQ0LCA1MiwgMjI2LCA3LCAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMTIzLCAKLSAgICA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAxNDMsIDkyLCAyNDQsIDE5LCA1OSwgMjI0LCAxNDMsIDI0NCwgODksIDU5LCA3OSwgCi0gICAgMjIzLCA1MiwgMjI0LCAxNiwgNzksIDY3LCAxODQsIDIyMiwgMjM3LCAyMjUsIDEzLCAyMTEsIDIwOSwgMjIwLCAxNDAsIAotICAgIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjE1LCA5NCwgMjQ5LCAyMjcsIDIyMywgMTYwLCAyNDcsIDEyOCwgMjIzLCAxNjAsIDI0OSwgCi0gICAgMjI3LCAyMTUsIDk0LCAyMjAsIDE1MiwgMjQ4LCAyMTQsIDIsIDQzLCAyNDIsIDExNSwgMjQ4LCAyMTQsIDIsIDQ0LCAyNDIsIAotICAgIDExNSwgMjE1LCA5NCwgMjQ4LCAyMTMsIDIxNiwgMTUsIDE2MywgMjIxLCAxNzUsIDUwLCAyMTUsIDU5LCAyNDgsIDE2NCwgCi0gICAgMjE2LCAxNDQsIDI0OCwgMTY0LCAxMCwgMzQsIDIyMywgNzksIDEwLCAzNCwgMjUwLCAxOCwgMTAsIDM0LCAyMjEsIDE3OCwgCi0gICAgMTExLCAxMCwgMzQsIDIyMSwgMTc4LCAxMDUsIDEwLCAzNCwgMjIxLCAxNzgsIDE1OCwgMTAsIDM0LCAyMjUsIDE3MCwgMTAsIAotICAgIDM0LCAyNTEsIDE3MSwgMTAsIDM0LCAyMTcsIDkzLCAxMCwgMzQsIDIzNCwgMzksIDExMSwgMTAsIDM0LCAyMzQsIDM5LCAKLSAgICAxMDUsIDEwLCAzNCwgMjQ3LCAxNzgsIDEwLCAzNCwgMjIxLCAxODEsIDEwLCAzNCwgNCwgMTExLCAxMCwgMzQsIDQsIDEwNSwgCi0gICAgMTAsIDM0LCAyMzMsIDEwMywgMTExLCAxMCwgMzQsIDIzMywgMTAzLCAxMDUsIDEwLCAzNCwgMjMzLCAxMDMsIDE1OCwgMTAsIAotICAgIDM0LCAyMzMsIDEwMywgMTYxLCAxMCwgMzQsIDIxOSwgNzAsIDEwLCAzNCwgMjE2LCAxNDYsIDEwLCAzNCwgMjE5LCA2OCwgCi0gICAgMTExLCAxMCwgMzQsIDIxOSwgNjgsIDEwNSwgMTAsIDM0LCAyNDEsIDIzNSwgMTExLCAxMCwgMzQsIDI0MSwgMjM1LCAxMDUsIAotICAgIDEwLCAzNCwgMjQyLCAyMiwgMTAsIDM0LCAyMjMsIDE1MCwgMTAsIDM0LCAyNTAsIDkwLCAxMCwgMzQsIDIxOCwgMzgsIDEwLCAKLSAgICAzNCwgMjMwLCAxMzMsIDEwLCAzNCwgMjQ4LCA5NiwgMTAsIDM0LCAyMzAsIDEyNSwgMTAsIDM0LCAyNTAsIDMzLCAxMCwgMzQsIAotICAgIDIxMiwgNDEsIDExMSwgMTAsIDM0LCAyMTIsIDQxLCAxMDUsIDEwLCAzNCwgMjQ0LCAxMDQsIDEwLCAzNCwgMjI1LCAyMzYsIAotICAgIDExMSwgMTAsIDM0LCAyMjUsIDIzNiwgMTA1LCAxMCwgMzQsIDIxOSwgMTYyLCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgCi0gICAgMTAsIDM0LCAyNDksIDE1MywgMTAsIDM0LCAyNDcsIDE0NCwgMTAsIDM0LCAyMzUsIDE0MywgMTAsIDM0LCAyNTEsIDIwNiwgCi0gICAgNjQsIDI1MCwgMiwgMTAsIDM0LCAyNDUsIDIzLCAxMCwgMzQsIDIxOCwgMjUxLCAxMTEsIDEwLCAzNCwgMjE4LCAyNTEsIAotICAgIDEwNSwgMTAsIDM0LCAyNTIsIDE2MiwgMTAsIDM0LCAyMTksIDE2OSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDE2OSwgMTAsIAotICAgIDM0LCAyMjksIDk1LCAxMTEsIDEwLCAzNCwgMjI5LCA5NSwgMTA1LCAxMCwgMzQsIDIyOSwgOTUsIDE1OCwgMTAsIDM0LCAKLSAgICAyMjksIDk1LCAxNjEsIDEwLCAzNCwgMjMxLCA1MSwgMTAsIDM0LCAyMjAsIDU5LCAxMCwgMzQsIDIyMywgMTU2LCAxMCwgMzQsIAotICAgIDI0NSwgNDUsIDEwLCAzNCwgMjI2LCAyMTMsIDEwLCAzNCwgMjUxLCAxNDEsIDExMSwgMTAsIDM0LCAyNTEsIDE0MSwgMTA1LCAKLSAgICAxMCwgMzQsIDIzMSwgOTEsIDEwLCAzNCwgMjMwLCAxMjgsIDEwLCAzNCwgMjQyLCAxNDcsIDExMSwgMTAsIDM0LCAyNDIsIAotICAgIDE0NywgMTA1LCAxMCwgMzQsIDI0MiwgMTQ3LCAxNTgsIDEwLCAzNCwgMjE2LCAxMDcsIDEwLCAzNCwgMjUwLCAxLCAxMCwgCi0gICAgMzQsIDIxMiwgOSwgMTExLCAxMCwgMzQsIDIxMiwgOSwgMTA1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMSwgMTcyLCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyNDAsIDI1NSwgMTAsIDM0LCAyNDAsIDI1NSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDQsIDEwLCAzNCwgCi0gICAgMjUxLCA3MSwgMjIwLCA1NCwgMTAsIDM0LCAyNDQsIDQwLCAxMCwgMzQsIDI1MSwgNzEsIDI1MCwgMjM2LCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyMTIsIDU3LCAxMCwgMzQsIDIxMiwgNTgsIDExMSwgMTAsIDM0LCAyMTIsIDU4LCAxMDUsIDEwLCAzNCwgCi0gICAgMjUwLCAzNSwgMTAsIDM0LCAyNTEsIDcxLCAyNDIsIDE3MywgMTAsIDM0LCAyMDAsIDExMSwgMTAsIDM0LCAyMDAsIDEwNSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMzIsIDE0MywgMTAsIDM0LCAyNTEsIDcxLCAyNDMsIDk1LCAxMCwgMzQsIDIzMCwgMTI0LCAKLSAgICAxMTEsIDEwLCAzNCwgMjMwLCAxMjQsIDEwNSwgMTAsIDM0LCAyMjMsIDE2MiwgMTAsIDM0LCAyNTEsIDIxNSwgMTAsIDM0LCAKLSAgICAyNTEsIDcxLCAyMTcsIDU3LCAyMzMsIDU4LCAxMCwgMzQsIDI1MSwgNzEsIDIzMywgNTksIDEwLCAzNCwgMjUxLCA3MSwgCi0gICAgMjExLCAyMzksIDEwLCAzNCwgMjUxLCA3MSwgMjQ0LCA1NCwgMTAsIDM0LCAyNDUsIDIyNiwgMTExLCAxMCwgMzQsIDI0NSwgCi0gICAgMjI2LCAxMDUsIDEwLCAzNCwgMjQ1LCAyMjYsIDE1OCwgMTAsIDM0LCAyNTEsIDcxLCAyNDUsIDIyNSwgMTAsIDM0LCAyNDEsIAotICAgIDI0MiwgMTAsIDM0LCAyNTEsIDcxLCAyNDAsIDI1MiwgMTAsIDM0LCAyNTEsIDIwMiwgMTAsIDM0LCAyNDIsIDIyOSwgMTAsIAotICAgIDM0LCAyNTEsIDcxLCAyNDQsIDk4LCAxMCwgMzQsIDI1MSwgNzEsIDI1MSwgMjQ1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMiwgMywgCi0gICAgMTAsIDM0LCAyMTksIDE2MiwgMjEyLCAyLCAxMCwgMzQsIDIxOSwgMTYyLCAyMTEsIDQxLCAxMCwgMzQsIDI1MSwgNzEsIAotICAgIDI0MywgMjUyLCAxMCwgMzQsIDIzNSwgMTQ5LCAyNDUsIDQ5LCAxMCwgMzQsIDI1MSwgNzEsIDI0NSwgNDksIDEwLCAzNCwgCi0gICAgMjM1LCAxNDksIDIxNiwgMTYsIDEwLCAzNCwgMjUxLCA3MSwgMjE2LCAxNiwgMTAsIDM0LCAyMzUsIDE0OSwgMjQ2LCAxMDQsIAotICAgIDEwLCAzNCwgMjUxLCA3MSwgMjQ2LCAxMDQsIDEwLCAzNCwgMjE1LCA5MSwgMTAsIDM0LCAyMzUsIDE0OSwgMjE1LCA5MSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMTUsIDkxLCA2MCwgMzQsIDExMSwgNjAsIDM0LCAyMzIsIDIxOSwgNjAsIDM0LCAyNDcsIAotICAgIDEyOCwgNjAsIDM0LCAyMTksIDk3LCA2MCwgMzQsIDIyMSwgMTc3LCA2MCwgMzQsIDEwMywgNjAsIDM0LCAxMDUsIDYwLCAzNCwgCi0gICAgMjMyLCAyNDMsIDYwLCAzNCwgMjMxLCAxOTAsIDYwLCAzNCwgMjMzLCAzOSwgNjAsIDM0LCAyNDUsIDEzNywgNjAsIDM0LCAKLSAgICAxOTYsIDYwLCAzNCwgMTI0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDksIDE1NSwgNjAsIDM0LCAyNDAsIDExOCwgNjAsIDM0LCAKLSAgICAyMTcsIDkzLCA2MCwgMzQsIDIwNCwgMjUxLCAxNzEsIDYwLCAzNCwgMjM0LCAzOCwgNjAsIDM0LCAyMjQsIDIyNywgNjAsIAotICAgIDM0LCAyMTEsIDIwMiwgNjAsIDM0LCAyMTgsIDI0NSwgNjAsIDM0LCA0NCwgMjA0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDEsIAotICAgIDE4MywgMjQ1LCAxNTMsIDYwLCAzNCwgMjE2LCAyNDgsIDYwLCAzNCwgMjQ3LCAxNzgsIDYwLCAzNCwgMjIxLCAxODEsIDYwLCAKLSAgICAzNCwgMjUwLCAxOCwgNjAsIDM0LCAyMjQsIDE4NSwgNjAsIDM0LCAyNTQsIDIyNCwgNjAsIDM0LCAyMzAsIDExNSwgNjAsIAotICAgIDM0LCAyNDUsIDE1MywgNjAsIDM0LCAyNDUsIDIzMSwgNjAsIDM0LCAyMjEsIDIwMiwgNjAsIDM0LCAyNDIsIDE4MSwgNjAsIAotICAgIDM0LCAyNDIsIDE4MiwgMjE5LCA4MywgNjAsIDM0LCAyNDUsIDQ4LCA2MCwgMzQsIDI1MiwgMCwgNjAsIDM0LCAyMTEsIDIyMSwgCi0gICAgNjAsIDM0LCAyNTAsIDEwOSwgNjAsIDM0LCAyMjIsIDE5OCwgNjAsIDM0LCAyMzYsIDIsIDYwLCAzNCwgMjE5LCA4MSwgNjAsIAotICAgIDM0LCAyMzMsIDEwMiwgNjAsIDM0LCAyNDksIDE2NCwgNjAsIDM0LCAyMTgsIDIzOSwgNjAsIDM0LCAyMzAsIDEyMCwgNjAsIAotICAgIDM0LCAyMjIsIDIyNywgNjAsIDM0LCAyMTEsIDIwNiwgNjAsIDM0LCAyMjYsIDE5NCwgNjAsIDM0LCAyMTUsIDk4LCA2MCwgCi0gICAgMzQsIDI0NiwgODgsIDYwLCAzNCwgMjE5LCAyNTMsIDIxNiwgMTQ2LCA2MCwgMzQsIDI0NiwgMTI2LCAyNTAsIDE4LCA2MCwgCi0gICAgMzQsIDIwMCwgMjE4LCAxMTAsIDYwLCAzNCwgMTEzLCAyNDIsIDE3LCA2MCwgMzQsIDIyMCwgMiwgNjAsIDM0LCAyNTEsIAotICAgIDE3NywgNjAsIDM0LCAyMTksIDY3LCA2MCwgMzQsIDI1MSwgMTQ1LCA2MCwgMzQsIDIxOCwgMTQwLCA2MCwgMzQsIDI0MSwgCi0gICAgMjM0LCA2MCwgMzQsIDI0MiwgMzUsIDYwLCAzNCwgMjQ3LCAxMzEsIDYwLCAzNCwgMjQyLCAyMiwgNjAsIDM0LCAyNTEsIAotICAgIDE2MiwgNjAsIDM0LCAyMjMsIDE1MCwgNjAsIDM0LCAyMjEsIDE4OSwgNjAsIDM0LCAyNDcsIDIwNywgNjAsIDM0LCAyNTMsIAotICAgIDE3NiwgNjAsIDM0LCAyMTgsIDIzNiwgNjAsIDM0LCAyMjgsIDU2LCA2MCwgMzQsIDIxOCwgMzgsIDYwLCAzNCwgMjIxLCAKLSAgICAyMTMsIDYwLCAzNCwgMjMwLCAxMzMsIDYwLCAzNCwgMjE1LCAyMzYsIDYwLCAzNCwgMjMzLCAxMjgsIDYwLCAzNCwgMjE4LCAKLSAgICAxMzEsIDYwLCAzNCwgMjQ4LCA5NiwgNjAsIDM0LCAyMTIsIDIxLCA2MCwgMzQsIDI0NywgMTU0LCAyMjgsIDU2LCA2MCwgMzQsIAotICAgIDI0OSwgMjIzLCA2MCwgMzQsIDI0MywgMjI5LCA2MCwgMzQsIDI1MCwgMjksIDYwLCAzNCwgMjE4LCAxNDQsIDYwLCAzNCwgCi0gICAgMjEyLCA0MCwgNjAsIDM0LCAyNDQsIDEwNCwgNjAsIDM0LCAyNTAsIDI2LCA2MCwgMzQsIDI0NCwgMTY5LCA2MCwgMzQsIDUyLCAKLSAgICAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgNjAsIDM0LCAyMTksIDkxLCA2MCwgMzQsIDI0NCwgCi0gICAgMTc5LCA2MCwgMzQsIDI0OSwgMTUzLCA2MCwgMzQsIDI0NywgMTQ0LCA2MCwgMzQsIDIyNCwgMTgyLCA2MCwgMzQsIDIzNSwgCi0gICAgMTQzLCA2MCwgMzQsIDIzMSwgNzIsIDYwLCAzNCwgMjE2LCA4OSwgNjAsIDM0LCAyMTcsIDI0NiwgNjAsIDM0LCAyMzIsIAotICAgIDIzNywgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyOCwgNjAsIDM0LCAyNTEsIDIwNiwgNjQsIDI1MCwgMiwgCi0gICAgNjAsIDM0LCAyMTksIDE5MCwgNjAsIDM0LCAyNDYsIDEyNiwgMjE2LCAyNDMsIDYwLCAzNCwgMjExLCAyNTMsIDYwLCAzNCwgCi0gICAgMjE5LCAxMDUsIDYwLCAzNCwgMjQ3LCAxOTUsIDYwLCAzNCwgMjQ1LCAyMywgNjAsIDM0LCAyMTksIDcsIDYwLCAzNCwgNzUsIAotICAgIDYwLCAzNCwgMjE4LCAxMzMsIDYwLCAzNCwgMjE4LCAyNTAsIDYwLCAzNCwgMjE2LCAwLCA2MCwgMzQsIDI0MiwgMTU0LCA2MCwgCi0gICAgMzQsIDI1MCwgMjI2LCA2MCwgMzQsIDIxOCwgMTYyLCA2MCwgMzQsIDI1MiwgMTYyLCA2MCwgMzQsIDIyMywgMzQsIDYwLCAKLSAgICAzNCwgMjE5LCAxNjksIDYwLCAzNCwgMjM1LCAxMzYsIDYwLCAzNCwgMjI5LCA5NCwgNjAsIDM0LCAyMjAsIDU5LCA2MCwgMzQsIAotICAgIDI0NCwgMTU3LCA2MCwgMzQsIDIyNiwgMjEzLCA2MCwgMzQsIDI1NCwgMTI2LCA2MCwgMzQsIDIyNSwgMzIsIDYwLCAzNCwgCi0gICAgMjQ1LCAyMzUsIDYwLCAzNCwgMjUxLCAxNDAsIDYwLCAzNCwgMjMxLCA5MSwgNjAsIDM0LCAyMzAsIDE4OCwgNjAsIDM0LCAKLSAgICAyMjAsIDE1OCwgNjAsIDM0LCAyNTQsIDQsIDYwLCAzNCwgMjMwLCAxMjgsIDYwLCAzNCwgMjE2LCAyMCwgNjAsIDM0LCAyMjYsIAotICAgIDE2OSwgNjAsIDM0LCAyNTEsIDIwOSwgNjAsIDM0LCAyMTgsIDEyOSwgNjAsIDM0LCAyNDksIDIzMywgNjAsIDM0LCAyNDIsIAotICAgIDE0NiwgNjAsIDM0LCAyMTYsIDEwNywgNjAsIDM0LCAyMzUsIDIyNCwgNjAsIDM0LCAyNTEsIDIxOSwgNjAsIDM0LCAyMTIsIAotICAgIDU4LCAyNDUsIDE1MywgNjAsIDM0LCAyNTAsIDEsIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgMTcyLCA2MCwgMzQsIAotICAgIDI0MCwgMjU1LCA2MCwgMzQsIDIxOSwgNCwgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgODAsIDYwLCAzNCwgMjI1LCAKLSAgICA3NiwgNjAsIDM0LCAyNTIsIDE4MiwgNjAsIDM0LCAyMjAsIDU0LCA2MCwgMzQsIDIyMywgMTEzLCA2MCwgMzQsIDIyMiwgCi0gICAgMTI4LCA2MCwgMzQsIDI0NCwgNDAsIDYwLCAzNCwgMjUxLCAyMDgsIDYwLCAzNCwgMjUwLCAyMzYsIDYwLCAzNCwgMjUxLCAKLSAgICAyMzQsIDYwLCAzNCwgMjMwLCAxMzAsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDM1LCA2MCwgMzQsIDIxMSwgCi0gICAgMjM2LCA2MCwgMzQsIDI0NywgMTg4LCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTczLCA2MCwgMzQsIDIzMiwgCi0gICAgMTQzLCA2MCwgMzQsIDI0MywgOTUsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE5LCA5NiwgNjAsIDM0LCAyMTksIAotICAgIDI1MywgMjE3LCA3NywgMjUxLCAyNDUsIDYwLCAzNCwgMjIzLCAxNjIsIDYwLCAzNCwgMjUxLCAyMTUsIDYwLCAzNCwgMjExLCAKLSAgICAxOTcsIDYwLCAzNCwgMjQ0LCAxOTgsIDYwLCAzNCwgMjMzLCA1OCwgNjAsIDM0LCAyMTcsIDU3LCAyMzMsIDU4LCA2MCwgMzQsIAotICAgIDIzMywgNTQsIDYwLCAzNCwgMjE5LCAzMiwgNjAsIDM0LCAyMzMsIDU5LCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgMzQsIDI0NCwgCi0gICAgNTQsIDYwLCAzNCwgMjQ1LCAyMjUsIDYwLCAzNCwgMjQxLCAyNDIsIDYwLCAzNCwgMjQ0LCA4LCA2MCwgMzQsIDI0MCwgMjUyLCAKLSAgICA2MCwgMzQsIDI1MSwgMjAyLCA2MCwgMzQsIDIxNywgNjQsIDYwLCAzNCwgMjQyLCA0MSwgNjAsIDM0LCAyNDQsIDEyMSwgNjAsIAotICAgIDM0LCAyMjIsIDMwLCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIDM0LCAyNDIsIDIyOSwgNjAsIDM0LCAyNDQsIAotICAgIDk4LCA2MCwgMzQsIDI1MSwgMjQ1LCA2MCwgMzQsIDIyMiwgMywgNjAsIDM0LCAyNDgsIDgyLCA2MCwgMzQsIDIxMiwgMiwgCi0gICAgNjAsIDM0LCAyNDEsIDIxNywgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTk3LCA2MCwgMzQsIDI1MSwgMjI5LCAKLSAgICA2MCwgMzQsIDI0NSwgMTYzLCA2MCwgMzQsIDI0MywgMjUyLCA2MCwgMzQsIDIxNSwgMjEwLCA2MCwgMzQsIDI0NiwgOTAsIAotICAgIDYwLCAzNCwgMjIzLCAxNDQsIDYwLCAzNCwgMjI4LCA1OCwgNjAsIDM0LCAyNDUsIDQ5LCA2MCwgMzQsIDIxNiwgMTYsIDYwLCAKLSAgICAzNCwgMjQ2LCAxMDQsIDYwLCAzNCwgMjE1LCA5MSwgNjAsIDM0LCAyNDQsIDU2LCAxMTAsIDI0OCwgNDUsIDEzNSwgNDMsIAotICAgIDIxNiwgNDMsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgNzIsIDIxNiwgNDMsIDUxLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgNDMsIDIxNiwgNDMsIDIzMCwgMjI5LCAyMiwgMjIyLCAyNTQsIDExMCwgMjQ4LCA0NSwgMTM1LCA3MiwgMjE2LCA0MywgMjMwLCAKLSAgICAyMjksIDIyLCA1MSwgMTEwLCAyNDgsIDQ1LCAxMzUsIDI0MywgMjM2LCAyMTgsIDExLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgMjE4LCAxMiwgMjQzLCAyNTEsIDQ4LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDUxLCAxMTAsIAotICAgIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAKLSAgICAyNDMsIDI1MSwgMjE0LCAxNjAsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgMjE0LCAKLSAgICAxNjAsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMiwgMTE0LCAyMzMsIDUyLCAKLSAgICAxMTAsIDI0OCwgNDUsIDEzNSwgMjI2LCAxMjYsIDExMCwgMjE5LCAyMCwgMTEwLCAyNDksIDIyNywgMTEwLCAyNDMsIDIzNiwgCi0gICAgMjE4LCAxMzEsIDI0NywgMTg1LCA3OSwgMjM1LCAxMzcsIDIzNSwgMjQzLCAyMTgsIDE2MSwgODcsIDExMCwgMjM1LCAxNjQsIAotICAgIDc5LCAxMTAsIDI1MCwgNCwgNzksIDExMCwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExOCwgMTI3LCA0NCwgMjU0LCAxMTgsIAotICAgIDEyNywgNDMsIDUyLCAyNTQsIDExOCwgMTI3LCA0NCwgNTIsIDI1NCwgMTE4LCAxMjcsIDQzLCAyNDksIDE2OSwgMTI3LCA0NCwgCi0gICAgMjQ5LCAxNjksIDEyNywgNDMsIDcxLCAyNDksIDE2OSwgMTI3LCA0NCwgNzEsIDI0OSwgMTY5LCAxMjcsIDQzLCA4NSwgMjMzLCAKLSAgICAyNiwgMTI3LCA0NCwgODUsIDIzMywgMjYsIDEyNywgMjI0LCAyNDAsIDc5LCAyNDMsIDM5LCA3OSwgNDMsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMTI3LCA0NCwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCA0NCwgNzEsIAotICAgIDIzMywgMjYsIDEyNywgNDMsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgCi0gICAgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTY0LCAyMjMsIDUyLCA1MiwgMjI0LCAKLSAgICAxOTQsIDIyNCwgMSwgNzksIDUyLCAyMjQsIDE5NCwgMjI0LCAxLCA3OSwgMTIxLCA1MiwgMjI0LCAxOTQsIDIyNCwgMSwgNzksIAotICAgIDIyNCwgMjQwLCAxNjQsIDI0NCwgMTk4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTExLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTA1LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTU4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTYxLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTkwLCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTk1LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk5LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk2LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMjAxLCAxMTAsIDIzMywgOSwgMTM4LCA3OSwgMTEwLCAyMjIsIDIzMSwgMTM4LCA3OSwgCi0gICAgMTEwLCAyNDgsIDUyLCAxMzgsIDc5LCAxMTAsIDI0NSwgMTM2LCAxMzgsIDc5LCAyNCwgMjE5LCAxNTcsIDU5LCAxMzgsIDc5LCAKLSAgICAyNCwgNTIsIDU5LCAxMzgsIDc5LCAyMTIsIDMyLCAyNDgsIDE2NCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCA3OSwgNjcsIAotICAgIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgNzksIDY3LCAyMzQsIDIzOSwgMjIzLCA4MCwgMTY0LCAKLSAgICAyMTQsIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgMTY0LCAyMTQsIAotICAgIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAxNjQsIDIzMiwgMTE0LCAyNDIsIDM0LCAzNywgMjI0LCAKLSAgICAyNDAsIDc5LCAxMTAsIDIxNywgNCwgMjMyLCAyMjAsIDI0NCwgMTU0LCAyMjAsIDE0MCwgODcsIDI0MiwgMTUsIDIyNywgCi0gICAgMjAyLCAyMTYsIDI0OCwgMjQyLCAxNSwgMjI3LCAyMDIsIDIxNSwgNzMsIDI0MiwgMTUsIDIyNywgMjAyLCAyMTYsIDE2MywgCi0gICAgNjcsIDExMCwgMjM1LCAxNjQsIDc5LCAyMzEsIDE0NSwgNzksIDIyNiwgMywgMjU0LCAxNDgsIDc5LCAxMTAsIDQ1LCAyMzUsIAotICAgIDI0NSwgMTEwLCAxNjMsIDI0NCwgMTE0LCAyMTksIDIwLCAxNDEsIDEsIDQsIDYxLCAxNDEsIDEsIDYxLCAxNDEsIDEsIDQsIAotICAgIDc0LCAxNDEsIDEsIDc0LCAxNDEsIDEsIDQsIDY5LCAxNDEsIDEsIDY5LCAxNDEsIDEsIDQsIDc2LCAxNDEsIDEsIDc2LCAKLSAgICAxNDEsIDEsIDQsIDc4LCAxNDEsIDEsIDc4LCAxNDEsIDEsIDE3NiwgMTQxLCAxLCAyNDMsIDE0MiwgMTQxLCAxLCAyMzQsIAotICAgIDk4LCAxNDEsIDEsIDI0MiwgMjIxLCAxNDEsIDEsIDIzMywgMjIzLCAxNDEsIDEsIDI0MiwgMTIwLCAxNDEsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDEsIDEsIDI0MywgNjksIDE0MSwgMSwgMjM0LCAzNCwgMTQxLCAxLCAyNDIsIDE4MSwgMTQxLCAxLCAyMDYsIAotICAgIDE0MSwgMSwgMjEwLCAxMTYsIDE0MSwgMSwgMjE5LCAxOTMsIDE0MSwgMSwgMjEwLCA0NCwgMTQxLCAxLCAyMTgsIDg0LCAKLSAgICAxNDEsIDEsIDIxMCwgMTMsIDE0MSwgMSwgMjIxLCAxODMsIDE0MSwgMSwgMjEwLCA5NCwgMTQxLCAxLCAyMTksIDYwLCAxNDEsIAotICAgIDEsIDIxMCwgMjMsIDE0MSwgMSwgMjE3LCAxMDYsIDE0MSwgMSwgMjQ4LCAyMjksIDE0MSwgMSwgMjE2LCAxMTgsIDE0MSwgMSwgCi0gICAgMjQ4LCAxMSwgMTQxLCAxLCA0LCAyMTUsIDExOSwgMTQxLCAxLCAyMTUsIDExOSwgMTQxLCAxLCAyNDYsIDg2LCAxNDEsIDEsIAotICAgIDIxNywgMjMsIDE0MSwgMSwgMjQ4LCA5OCwgMTQxLCAxLCAxMTIsIDE0MSwgMSwgMjQ3LCAxNTMsIDE0MSwgMSwgMTk4LCAKLSAgICAxNDEsIDEsIDIyOCwgMjM4LCAxNDEsIDEsIDIyNywgMjQyLCAxNDEsIDEsIDIyOSwgMTEyLCAxNDEsIDEsIDIyOCwgNzksIAotICAgIDE0MSwgMSwgMTYyLCAxNDEsIDEsIDI1MiwgMTk5LCAxNDEsIDEsIDE5MSwgMTQxLCAxLCAyNDEsIDE4NywgMTQxLCAxLCAKLSAgICAyNTIsIDE0LCAxNDEsIDEsIDIyNSwgMTExLCAxNDEsIDEsIDI0MCwgMjI5LCAxNDEsIDEsIDI1MSwgMTMzLCAxNDEsIDEsIAotICAgIDIyNCwgMTUzLCAxNDEsIDEsIDI0MSwgMjQ1LCAxNDEsIDEsIDI1MiwgODMsIDE0MSwgMSwgMjI1LCAyMjQsIDE0MSwgMSwgCi0gICAgMjQxLCA3NSwgMTQxLCAxLCAyNTEsIDIxMywgMTQxLCAxLCAyMjUsIDE5LCAxNDEsIDEsIDE4NiwgMTQxLCAxLCAyMzAsIAotICAgIDIzNSwgMTQxLCAxLCAyMzAsIDEwNywgMTQxLCAxLCAyMzEsIDk2LCAxNDEsIDEsIDIzMCwgMTY2LCAxNDEsIDEsIDQsIDE5MiwgCi0gICAgMTQxLCAxLCAxOTIsIDE0MSwgMSwgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIAotICAgIDE0MSwgMSwgMjEwLCAyNDQsIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzgsIDE0MSwgMSwgMjIyLCAxNDIsIDE0MSwgMSwgCi0gICAgMjIzLCAxMzEsIDE0MSwgMSwgMjIyLCAyMTMsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIAotICAgIDIxMSwgMjUwLCAxNDEsIDEsIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAzMCwgMTQxLCAxLCAKLSAgICAyMTIsIDExNiwgMTQxLCAxLCA0LCAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODgsIDM4LCAyMzQsIDIwNywgMjEzLCAxMzUsIAotICAgIDIxOSwgMzMsIDc5LCAzOCwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIxMywgMTM1LCAKLSAgICAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMTQxLCAyMzUsIDE2NCwgNzksIDE0MSwgCi0gICAgMjEzLCAxMzUsIDIzNSwgMTY0LCA3OSwgMTQxLCAyNDcsIDIyOSwgMjEwLCAyMjUsIDIzNCwgMjA3LCA1MiwgMjQwLCAxNzUsIAotICAgIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCA1NiwgMSwgNCwgNzQsIDU2LCAxLCA3NCwgNTYsIDEsIDQsIDY5LCA1NiwgMSwgCi0gICAgNjksIDU2LCAxLCA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgNCwgNzgsIDU2LCAxLCA3OCwgNTYsIDEsIDE3NiwgNTYsIDEsIAotICAgIDI0MywgMTQyLCA1NiwgMSwgMjM0LCA5OCwgNTYsIDEsIDI0MiwgMjIxLCA1NiwgMSwgMjMzLCAyMjMsIDU2LCAxLCAyNDIsIAotICAgIDEyMCwgNTYsIDEsIDIzNCwgMTg4LCA1NiwgMSwgMjQzLCA2OSwgNTYsIDEsIDIzNCwgMzQsIDU2LCAxLCAyNDIsIDE4MSwgCi0gICAgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCA1NiwgMSwgMjE5LCAxOTMsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCAKLSAgICA4NCwgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAyMjEsIDE4MywgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDYwLCA1NiwgCi0gICAgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgMTA2LCA1NiwgMSwgMjQ4LCAyMjksIDU2LCAxLCAyMTYsIDExOCwgNTYsIDEsIAotICAgIDI0OCwgMTEsIDU2LCAxLCA0LCAyMTUsIDExOSwgNTYsIDEsIDIxNSwgMTE5LCA1NiwgMSwgMjQ2LCA4NiwgNTYsIDEsIDIxNywgCi0gICAgMjMsIDU2LCAxLCAyNDgsIDk4LCA1NiwgMSwgMTEyLCA1NiwgMSwgMjQ3LCAxNTMsIDU2LCAxLCAxOTgsIDU2LCAxLCAyMjgsIAotICAgIDIzOCwgNTYsIDEsIDIyNywgMjQyLCA1NiwgMSwgMjI5LCAxMTIsIDU2LCAxLCAyMjgsIDc5LCA1NiwgMSwgMTYyLCA1NiwgMSwgCi0gICAgMjUyLCAxOTksIDU2LCAxLCAxOTEsIDU2LCAxLCAyNDEsIDE4NywgNTYsIDEsIDI1MiwgMTQsIDU2LCAxLCAyMjUsIDExMSwgCi0gICAgNTYsIDEsIDI0MCwgMjI5LCA1NiwgMSwgMjUxLCAxMzMsIDU2LCAxLCAyMjQsIDE1MywgNTYsIDEsIDI0MSwgMjQ1LCA1NiwgCi0gICAgMSwgMjUyLCA4MywgNTYsIDEsIDIyNSwgMjI0LCA1NiwgMSwgMjQxLCA3NSwgNTYsIDEsIDI1MSwgMjEzLCA1NiwgMSwgMjI1LCAKLSAgICAxOSwgNTYsIDEsIDE4NiwgNTYsIDEsIDIzMCwgMjM1LCA1NiwgMSwgMjMwLCAxMDcsIDU2LCAxLCAyMzEsIDk2LCA1NiwgMSwgCi0gICAgMjMwLCAxNjYsIDU2LCAxLCA0LCAxOTIsIDU2LCAxLCAxOTIsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCAKLSAgICA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAyMTAsIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzgsIDU2LCAxLCAKLSAgICAyMjIsIDE0MiwgNTYsIDEsIDIyMywgMTMxLCA1NiwgMSwgMjIyLCAyMTMsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgCi0gICAgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgMSwgMjEyLCAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAKLSAgICAzMCwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgMTc2LCA1NiwgMSwgNCwgMjM0LCAxODgsIDU2LCAxLCAyMTQsIDI3LCAKLSAgICA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIDI1NSwgNTYsIDEsIDIxMywgMTM4LCA1NiwgMjMwLCAyMjksIDI0NywgCi0gICAgMTI4LCAyMzQsIDIwNywgMjI0LCAxNzYsIDIxOSwgMzMsIDc5LCA1NiwgMjM1LCAxNjQsIDc5LCA1NiwgMjEzLCAxMzUsIAotICAgIDIzNSwgMTY0LCA3OSwgNTYsIDI0NywgMjI5LCAyMzQsIDUsIDI1MSwgMTkyLCAxLCAyNTMsIDE2NiwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTA5LCAyNTEsIDE5MiwgMSwgMTk0LCAyNTEsIDE5MiwgMSwgMjQ1LCAxNCwgMjUxLCAxOTIsIDEsIDI0OSwgNjgsIAotICAgIDI1MSwgMTkyLCAxLCAyMTcsIDE1MywgMjUxLCAxOTIsIDEsIDIzMCwgMzAsIDI1MSwgMTkyLCAxLCAxNTYsIDI1MSwgMTkyLCAKLSAgICAxLCAyNDMsIDIwOSwgMjUxLCAxOTIsIDEsIDIzNSwgMjksIDI1MSwgMTkyLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAxNTAsIDI1MSwgMTkyLCAxLCAyMjQsIDk5LCAyNTEsIDE5MiwgMSwgMjExLCAxNzgsIDI1MSwgMTkyLCAxLCAyMTAsIAotICAgIDgzLCAyNTEsIDE5MiwgMSwgMjUwLCAxNjYsIDI1MSwgMTkyLCAxLCAyMjAsIDEwNiwgMjUxLCAxOTIsIDEsIDE1MywgMjUxLCAKLSAgICAxOTIsIDEsIDIxMCwgMTU5LCAyNTEsIDE5MiwgMSwgMjUxLCA3NCwgMjUxLCAxOTIsIDEsIDIyMiwgOTMsIDI1MSwgMTkyLCAKLSAgICAxLCA2MSwgMjUxLCAxOTIsIDEsIDc4LCAyNTEsIDE5MiwgMSwgNzYsIDI1MSwgMTkyLCAxLCAyNDUsIDIwNSwgMjUxLCAxOTIsIAotICAgIDEsIDI1NCwgMjEwLCAyNTEsIDE5MiwgMSwgMjQ1LCAyMDMsIDI1MSwgMTkyLCAxLCAyNTMsIDIwMCwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTM4LCAyNTEsIDE5MiwgMSwgMjU0LCAxMzEsIDI1MSwgMTkyLCAxLCAyNDUsIDE1OCwgMjUxLCAxOTIsIDEsIDI1NCwgCi0gICAgMTIzLCAyNTEsIDE5MiwgMSwgMjQ1LCAxNDYsIDI1MSwgMTkyLCAxLCAyNDUsIDEwMCwgMjUxLCAxOTIsIDEsIDc0LCAyNTEsIAotICAgIDE5MiwgMSwgNjksIDI1MSwgMTkyLCAxLCAyMzUsIDE2MiwgMjUxLCAxOTIsIDEsIDIxNCwgMTA1LCAyNTEsIDE5MiwgMSwgCi0gICAgMjI5LCA4NCwgMjUxLCAxOTIsIDEsIDI0MiwgMTg1LCAyNTEsIDE5MiwgMSwgMjM2LCA0MSwgMjQsIDEsIDIzNCwgNjQsIDI0LCAKLSAgICAxLCAyMTgsIDIxNywgMjQsIDEsIDIzNCwgNTcsIDI0LCAxLCAyMjgsIDIzMSwgMjQsIDEsIDIyOCwgMjI5LCAyNCwgMSwgCi0gICAgMjI4LCAyMjgsIDI0LCAxLCAyMTYsIDEwMiwgMjQsIDEsIDIxOCwgMjA2LCAyNCwgMSwgMjIzLCAyOSwgMjQsIDEsIDIyMywgCi0gICAgMjQsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxNCwgMjQsIDEsIDIyMywgOSwgMjQsIDEsIDIyMywgNCwgMjQsIDEsIAotICAgIDIyMywgMTUsIDI0LCAxLCAyMjMsIDI3LCAyNCwgMSwgMjMwLCAyMjIsIDI0LCAxLCAyMjUsIDk4LCAyNCwgMSwgMjE4LCAKLSAgICAyMTQsIDI0LCAxLCAyMjUsIDg3LCAyNCwgMSwgMjE5LCAxNTAsIDI0LCAxLCAyMTgsIDIxMSwgMjQsIDEsIDIzNiwgNjMsIAotICAgIDI0LCAxLCAyNTAsIDU0LCAyNCwgMSwgMjE4LCAyMjEsIDI0LCAxLCAyNTAsIDExNCwgMjQsIDEsIDIzNCwgMTE2LCAyNCwgMSwgCi0gICAgMjE2LCAxNzQsIDI0LCAxLCAyMjUsIDEzNCwgMjQsIDEsIDI0MSwgMTc5LCAyNCwgMSwgNjEsIDI0LCAxLCAyNTQsIDI1MiwgCi0gICAgMjQsIDEsIDE5MiwgMjQsIDEsIDIxMSwgOTIsIDI0LCAxLCAyNDUsIDEyNSwgMjQsIDEsIDc2LCAyNCwgMSwgMjExLCAzNiwgCi0gICAgMjQsIDEsIDIxMSwgNDcsIDI0LCAxLCA3OCwgMjQsIDEsIDIxMiwgNjUsIDI0LCAxLCAyMTIsIDYyLCAyNCwgMSwgMjI2LCAKLSAgICAyMzgsIDI0LCAxLCAyMTAsIDI0NCwgMjQsIDEsIDY5LCAyNCwgMSwgMjEyLCAxMSwgMjQsIDEsIDIxMiwgMjIsIDI0LCAxLCAKLSAgICAyMTEsIDI1MCwgMjQsIDEsIDIxMCwgMjEyLCAyNCwgMSwgMjQ1LCA2MywgMjQsIDEsIDIxMSwgOCwgMjQsIDEsIDc0LCAyNCwgCi0gICAgMjQ0LCAxMTEsIDI0LCAxLCAyMTgsIDIxNSwgMjQsIDEsIDIyOCwgMjIxLCAyNCwgMSwgMjI4LCAyMjMsIDI0LCAxLCAyMjgsIAotICAgIDIyNiwgMjQsIDEsIDIyMywgMjIsIDI0LCAxLCAyMjMsIDMsIDI0LCAxLCAyMjMsIDExLCAyNCwgMSwgMjIzLCAxNiwgMjQsIAotICAgIDEsIDIyMywgMSwgMjQsIDEsIDIzMCwgMjE1LCAyNCwgMSwgMjMwLCAyMTIsIDI0LCAxLCAyMzAsIDIxNiwgMjQsIDEsIDIzNCwgCi0gICAgMjI3LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzksIDI0LCAxLCAyMjUsIDg1LCAyNCwgMSwgMjI1LCA4MiwgMjQsIAotICAgIDEsIDIyNSwgOTYsIDI0LCAxLCAyMjUsIDgwLCAyNCwgMSwgMjM0LCAyMjUsIDI0LCAxLCAyMzQsIDIyMywgMjQsIDEsIDIxOSwgCi0gICAgMTQzLCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzMywgMjQsIDEsIDIxOSwgMTM4LCAyNCwgMSwgMjE5LCAxNDgsIAotICAgIDI0LCAxLCAyMjYsIDM2LCAyNCwgMSwgMjE4LCAyMTgsIDI0LCAxLCAyMTEsIDI2LCAyNCwgMSwgMjExLCAyMiwgMjQsIDEsIAotICAgIDIxMSwgMjMsIDI0LCAxLCAyMzQsIDIyNiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjExLCAzMiwgMjQsIDEsIDIxMCwgCi0gICAgMjM4LCAyNCwgMSwgMjEwLCAyMzcsIDI0LCAxLCAyMTAsIDI0MCwgMjQsIDEsIDIxMCwgMjAzLCAyNCwgMSwgMjEwLCAyMDQsIAotICAgIDI0LCAxLCAyMTAsIDIwNywgMjQsIDEsIDI1NCwgNDIsIDI0LCAxLCAyNTQsIDM2LCAxMTAsIDI1NCwgMTA3LCAyMzIsIDIwOSwgCi0gICAgNzksIDExMCwgMjU0LCAxMDcsIDIyMywgNTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMjMsIDc5LCAxMTAsIDI1NCwgMTA3LCAKLSAgICAxMTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMzQsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDE5LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNSwgNzksIDExMCwgMjU0LCAxMDcsIDIzMCwgMjI5LCA3OSwgMTEwLCAyNTQsIDEwNywgMjUxLCAxODMsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEwMCwgNzksIDExMCwgMjU0LCAxMDcsIDIyMSwgMTc4LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNzAsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEyLCA3OSwgMTEwLCAyNTQsIDEwNywgMjQxLCAyMzEsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDUsIDIzMiwgNzksIDExMCwgMjU0LCAxMDcsIDIzMSwgMTkxLCA3OSwgMjUxLCAxOTIsIAotICAgIDEsIDI1MSwgMTMzLCAyNTEsIDE5MiwgMSwgMjEwLCA0NCwgMjUxLCAxOTIsIDEsIDIzNSwgMTE0LCAyNTEsIDE5MiwgMSwgCi0gICAgMjQyLCAxMjAsIDI1MSwgMTkyLCAxLCAyNDUsIDIxNywgMjUxLCAxOTIsIDEsIDI0NSwgMTQzLCAyNTEsIDE5MiwgMSwgMjI2LCAKLSAgICAxODcsIDI1MSwgMTkyLCAxLCAyMjYsIDE5MSwgMjUxLCAxOTIsIDEsIDIzNSwgMTg2LCAyNTEsIDE5MiwgMSwgMjU0LCAxMDksIAotICAgIDI1MSwgMTkyLCAxLCAyMzUsIDIzMSwgMjUxLCAxOTIsIDEsIDIxNCwgMTY4LCAyNTEsIDE5MiwgMSwgMjM2LCAyMywgMjUxLCAKLSAgICAxOTIsIDEsIDIyOSwgNjIsIDI1MSwgMTkyLCAxLCAyNTQsIDIwNCwgMjUxLCAxOTIsIDEsIDI1MywgMTk1LCAyNTEsIDE5MiwgCi0gICAgMSwgMjU0LCAxNDQsIDI1MSwgMTkyLCAxLCAyMjYsIDIwOCwgMjUxLCAxOTIsIDEsIDIyNiwgMTkzLCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAyMjgsIDI1MSwgMTkyLCA0MCwgMSwgMjI2LCAxMDksIDI1MSwgMTkyLCA0MCwgMSwgMjE3LCAxNTMsIDI1MSwgMTkyLCAKLSAgICA0MCwgMSwgMjM1LCAyOSwgMjUxLCAxOTIsIDQwLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgMjQzLCAxLCAyNTEsIDE5MiwgCi0gICAgMSwgMjMzLCA1LCAyNTEsIDE5MiwgMSwgMjA5LCAyNTAsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTMsIDEwLCAyMTgsIDEwNSwgCi0gICAgMjEyLCA0LCAxMCwgMjE4LCAxMDUsIDIxMSwgMTU4LCAxMCwgMjE4LCAxMDUsIDI1MSwgODcsIDEwLCAyMTgsIDEwNSwgMjE3LCAKLSAgICAyNTUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjksIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAyMzgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjYsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjQsIDEwLCAyMTgsIDEwNSwgMjQwLCAyMzYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjMsIDEwLCAyMTgsIDEwNSwgMjMwLCAzMCwgMTAsIDIxOCwgMTA1LCAyNDIsIAotICAgIDY3LCAxMCwgMjE4LCAxMDUsIDIyMiwgOTMsIDEwLCAyMTgsIDEwNSwgMjI2LCAxMDksIDEwLCAyMTgsIDEwNSwgMjE5LCAyMywgCi0gICAgMTAsIDIxOCwgMTA1LCAyNDksIDY4LCAxMCwgMjE4LCAxMDUsIDI0MCwgMTcwLCAxMCwgMjE4LCAxMDUsIDI0MSwgMTk3LCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNywgMTY1LCAxMCwgMjE4LCAxMDUsIDIxNywgMjM0LCAxMCwgMjE4LCAxMDUsIDIxOCwgMTcwLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIyMCwgMTEyLCAxMCwgMjE4LCAxMDUsIDIyNSwgMjI4LCAxMCwgMjE4LCAxMDUsIDIyNCwgMTAxLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNiwgNDQsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTUsIDEwLCAyMTgsIDEwNSwgMjE3LCAyNDUsIAotICAgIDEwLCAyMTgsIDEwNSwgMjQwLCAxNzcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjIsIDEwLCAyMTgsIDEwNSwgMjI1LCAxNTIsIAotICAgIDEwLCAyMTgsIDEwNSwgMjI0LCA5OSwgNTYsIDEsIDQsIDIzMywgMjIzLCA1NiwgMSwgNCwgMjE5LCAxOTMsIDU2LCAxLCA0LCAKLSAgICAyMTgsIDg0LCA1NiwgMSwgNCwgMTEyLCA1NiwgMSwgNCwgMjI3LCAyNDIsIDU2LCAxLCA0LCAxNjIsIDU2LCAxLCA0LCAyNDEsIAotICAgIDE4NywgNTYsIDEsIDQsIDI0MCwgMjI5LCA1NiwgMSwgNCwgMjQxLCAyNDUsIDU2LCAxLCA0LCAyNDEsIDc1LCA1NiwgMSwgNCwgCi0gICAgMjMwLCAxMDcsIDU2LCAxLCA0LCAyMDUsIDU2LCAxLCA0LCAyMjMsIDM4LCA1NiwgMSwgNCwgMjIyLCAxNDIsIDU2LCAxLCA0LCAKLSAgICAyMjMsIDEzMSwgNTYsIDEsIDQsIDIyMiwgMjEzLCA4OCwgMjQsIDIzNCwgNjQsIDg4LCAyNCwgMjI4LCAyMzEsIDg4LCAyNCwgCi0gICAgMjE2LCAxMDIsIDg4LCAyNCwgMjIzLCAyOSwgODgsIDI0LCAyMzAsIDIyMiwgODgsIDI0LCAyMjUsIDk4LCA4OCwgMjQsIAotICAgIDIxOSwgMTUwLCA4OCwgMjQsIDIzNiwgNjMsIDg4LCAyNCwgMjUwLCA1NCwgODgsIDI0LCAyNTAsIDExNCwgODgsIDI0LCAKLSAgICAyMzQsIDExNiwgODgsIDI0LCAyMTYsIDE3NCwgODgsIDI0LCAyMjUsIDEzNCwgODgsIDI0LCAyNDEsIDE3OSwgODgsIDI0LCAKLSAgICAyMzQsIDY1LCA2MSwgODgsIDI0LCAyMjgsIDIzMiwgNjEsIDg4LCAyNCwgMjE2LCAxMDMsIDYxLCA4OCwgMjQsIDIyMywgMzAsIAotICAgIDYxLCA4OCwgMjQsIDIzMCwgMjIzLCA2MSwgODgsIDI0LCAyMjUsIDk5LCA2MSwgODgsIDI0LCAyMTksIDE1MSwgNjEsIDg4LCAKLSAgICAyNCwgMjM2LCA2NCwgNjEsIDg4LCAyNCwgMjUwLCA1NSwgNjEsIDg4LCAyNCwgMjUwLCAxMTUsIDYxLCA4OCwgMjQsIDIzNCwgCi0gICAgMTE3LCA2MSwgODgsIDI0LCAyMTYsIDE3NSwgNjEsIDg4LCAyNCwgMjI1LCAxMzUsIDYxLCA4OCwgMjQsIDI0MSwgMTgwLCAKLSAgICA2MSwgODgsIDI0LCAyNTAsIDU1LCA2OSwgODgsIDIzNCwgOSwgMTM1LCAyMjYsIDIyMSwgODgsIDIzNCwgOSwgMTM1LCAxNDQsIAotICAgIDI0MCwgMjI5LCA4OCwgMTU0LCAxMTEsIDg4LCAxNTQsIDEwNSwgODgsIDE1NCwgMTU4LCA4OCwgMTU0LCAxNjEsIDg4LCAKLSAgICAxNTQsIDE5MCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAxOTksIDg4LCAxNTQsIDE5NiwgODgsIDE1NCwgMjAxLCA4OCwgCi0gICAgMTU0LCAyMTYsIDI0OCwgODgsIDE1NCwgMjMwLCAxMzMsIDg4LCAxNTQsIDI0NCwgMTA0LCA4OCwgMTU0LCAyMTIsIDQwLCAKLSAgICA4OCwgMTU0LCAyMTEsIDIxNCwgODgsIDE1NCwgMjMxLCA0NCwgODgsIDE1NCwgMjQ1LCAyMzEsIDg4LCAxNTQsIDIxOCwgMzgsIAotICAgIDg4LCAxNTQsIDIxOCwgMTM0LCA4OCwgMTU0LCAyNDEsIDI1MSwgODgsIDE1NCwgMjE5LCA1NiwgODgsIDE1NCwgMjI5LCAKLSAgICAyMDksIDg4LCAxNTQsIDIxOSwgNiwgODgsIDE1NCwgMjQ0LCAxMTAsIDg4LCAxNTQsIDI0OSwgMjA4LCA4OCwgMTU0LCAyMzMsIAotICAgIDEzMSwgODgsIDE1NCwgMjIzLCA3NCwgODgsIDE1NCwgMjUxLCAyMywgODgsIDE1NCwgMjE4LCA4OCwgODgsIDE1NCwgMjE4LCAKLSAgICAyMSwgODgsIDE1NCwgMjQ1LCAxMzUsIDg4LCAxNTQsIDIyMywgNjYsIDg4LCAxNTQsIDI1NCwgMTU5LCA4OCwgMTU0LCAyNDQsIAotICAgIDEzNiwgODgsIDE1NCwgMjIzLCA2NCwgODgsIDE1NCwgMjIwLCAxNTgsIDg4LCAxNTQsIDIyMywgMTMwLCAzNywgMTU0LCAKLSAgICAyMjQsIDE1LCAzNywgMTU0LCAyMzQsIDg2LCAzNywgMTU0LCAyMjEsIDIwMCwgMzcsIDE1NCwgMjM0LCA1LCAzNywgNTQsIAotICAgIDIxNiwgMjQ5LCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMjAxLCA4NSwgMjE4LCAKLSAgICAyMzYsIDM3LCA1NCwgMjE2LCAxNjQsIDIyNiwgMjAxLCA4NSwgMjE4LCAyMzYsIDM3LCA1NCwgMjQ0LCAyNCwgMjI2LCAyMDEsIAotICAgIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyNDQsIDEyMywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMTksIDExNCwgCi0gICAgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMjAsIDExOSwgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAKLSAgICAyNDUsIDE5MywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMjI1LCAyNTUsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMSwgMzcsIAotICAgIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAKLSAgICAyMTUsIDc0LCAxOTAsIDM3LCA1NCwgMjE1LCA3NCwgMTk1LCAzNywgNTQsIDIxNSwgNzQsIDE5OSwgMzcsIDU0LCAyMTUsIAotICAgIDc0LCAxOTYsIDM3LCA1NCwgMjE1LCA3NCwgMjAxLCAzNywgNTQsIDIxNiwgMTYzLCAzNywgNTQsIDIxNiwgMTY0LCAxMTEsIAotICAgIDM3LCA1NCwgMjE2LCAxNjQsIDEwNSwgMzcsIDU0LCAyMTYsIDE2NCwgMTU4LCAzNywgNTQsIDIxNiwgMTY0LCAxNjEsIDM3LCAKLSAgICA1NCwgMjE2LCAxNjQsIDE5MCwgMzcsIDI0LCAyMzQsIDY0LCAzNywgMjQsIDIyOCwgMjMxLCAzNywgMjQsIDIxNiwgMTAyLCAKLSAgICAzNywgMjQsIDIyMywgMjksIDM3LCAyNCwgMjMwLCAyMjIsIDM3LCAyNCwgMjI1LCA5OCwgMzcsIDI0LCAyMTksIDE1MCwgMzcsIAotICAgIDI0LCAyMzYsIDYzLCAzNywgMjQsIDI1MCwgNTQsIDM3LCAyNCwgMjUwLCAxMTQsIDM3LCAyNCwgMjM0LCAxMTYsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzQsIDM3LCAyNCwgMjI1LCAxMzQsIDM3LCAyNCwgMjQxLCAxNzksIDM3LCAyNCwgMjM0LCA2NSwgNjEsIDM3LCAKLSAgICAyNCwgMjI4LCAyMzIsIDYxLCAzNywgMjQsIDIxNiwgMTAzLCA2MSwgMzcsIDI0LCAyMjMsIDMwLCA2MSwgMzcsIDI0LCAyMzAsIAotICAgIDIyMywgNjEsIDM3LCAyNCwgMjI1LCA5OSwgNjEsIDM3LCAyNCwgMjE5LCAxNTEsIDYxLCAzNywgMjQsIDIzNiwgNjQsIDYxLCAKLSAgICAzNywgMjQsIDI1MCwgNTUsIDYxLCAzNywgMjQsIDI1MCwgMTE1LCA2MSwgMzcsIDI0LCAyMzQsIDExNywgNjEsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzUsIDYxLCAzNywgMjQsIDIyNSwgMTM1LCA2MSwgMzcsIDI0LCAyNDEsIDE4MCwgNjEsIDM3LCAyMzQsIDksIAotICAgIDEzNSwgMjUwLCAxNTYsIDM3LCAyMzQsIDksIDEzNSwgMjM1LCA1MywgMzcsIDI0LCAyMzYsIDY0LCA2OSwgMjM0LCA5LCAKLSAgICAyMTgsIDE2MSwgODcsIDM3LCAxNTQsIDExMSwgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIAotICAgIDE1NCwgMTkwLCAzNywgMTU0LCAxOTUsIDM3LCAxNTQsIDE5OSwgMzcsIDE1NCwgMTk2LCAzNywgMTU0LCAyMDEsIDM3LCAKLSAgICAxNTQsIDIxNiwgMjQ4LCAzNywgMTU0LCAyMzAsIDEzMywgMzcsIDE1NCwgMjQ0LCAxMDQsIDM3LCAxNTQsIDIxMiwgNDAsIAotICAgIDM3LCAxNTQsIDIxMSwgMjE0LCAzNywgMTU0LCAyMzEsIDQ0LCAzNywgMTU0LCAyNDUsIDIzMSwgMzcsIDE1NCwgMjE4LCAzOCwgCi0gICAgMzcsIDE1NCwgMjE4LCAxMzQsIDM3LCAxNTQsIDI0MSwgMjUxLCAzNywgMTU0LCAyMTksIDU2LCAzNywgMTU0LCAyMjksIAotICAgIDIwOSwgMzcsIDE1NCwgMjE5LCA2LCAzNywgMTU0LCAyNDQsIDExMCwgMzcsIDE1NCwgMjQ5LCAyMDgsIDM3LCAxNTQsIDIzMywgCi0gICAgMTMxLCAzNywgMTU0LCAyMjEsIDE3NiwgMzcsIDE1NCwgMjMxLCAxOTQsIDM3LCAxNTQsIDI0NCwgMTQ1LCAzNywgMTU0LCAKLSAgICAyMTgsIDUwLCAzNywgMTU0LCAyNDUsIDQyLCAzNywgMTU0LCAyMjQsIDE5MCwgMzcsIDE1NCwgMjUzLCAyMDQsIDM3LCAxNTQsIAotICAgIDIzNSwgMTY1LCAzNywgMTU0LCAyMjMsIDY0LCAzNywgMTU0LCAyNDksIDE3MiwgMzcsIDE1NCwgMjQ5LCAxNjMsIDM3LCAKLSAgICAxNTQsIDI0MSwgMTcyLCAzNywgMTU0LCAyNTAsIDE4MiwgMzcsIDE1NCwgMjMyLCAxMTYsIDM3LCAxNTQsIDIzMywgNTIsIAotICAgIDM3LCAxNTQsIDIyMiwgMjU0LCAzNywgMTU0LCAyMzEsIDg4LCAzNywgMTU0LCAyMjMsIDkwLCAzNywgMTU0LCAyMTgsIDg4LCAKLSAgICAzNywgMTU0LCAyMTgsIDIxLCAzNywgMTU0LCAyNDUsIDEzNSwgMzcsIDE1NCwgMjIzLCA2NiwgMzcsIDE1NCwgMjU0LCAxNTksIAotICAgIDM3LCAxNTQsIDIyOCwgMjE3LCAzNywgNTQsIDIxNiwgMTY0LCAxOTUsIDM3LCA1NCwgMjE2LCAxNjQsIDE5OSwgMzcsIDU0LCAKLSAgICAyMTYsIDE2NCwgMTk2LCAzNywgNTQsIDIxNiwgMTY0LCAyMDEsIDM3LCA1NCwgMjQ0LCAyMywgMzcsIDU0LCAyNDQsIDI0LCAKLSAgICAxMTEsIDM3LCA1NCwgMjQ0LCAyNCwgMTA1LCAzNywgNTQsIDI0NCwgMjQsIDE1OCwgMzcsIDU0LCAyNDQsIDI0LCAxNjEsIAotICAgIDM3LCA1NCwgMjQ0LCAyNCwgMTkwLCAzNywgNTQsIDI0NCwgMjQsIDE5NSwgMzcsIDU0LCAyNDQsIDI0LCAxOTksIDM3LCA1NCwgCi0gICAgMjQ0LCAyNCwgMTk2LCAzNywgNTQsIDI0NCwgMjQsIDIwMSwgMzcsIDU0LCAyNDQsIDEyMiwgMTEwLCAyMTcsIDQsIDE2LCAKLSAgICAzMSwgMjM1LCAxMzksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0NCwgMTU2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMzEsIAotICAgIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjU0LCA1NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjMxLCAxMzcsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTIsIDExMCwgMjE3LCA0LCAxNiwgCi0gICAgMzEsIDI1MywgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMjAsIDEzOCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjI2LCAKLSAgICAyNDMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIyOCwgNDUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgOTMsIDQyLCAyNDEsIAotICAgIDE5NywgNDIsIDI0NSwgOTYsIDQyLCAyNDUsIDUxLCAyMzIsIDIyNSwgMjMyLCAyNDYsIDUwLCAzNywgNTYsIDYxLCAzNywgCi0gICAgNTYsIDc0LCAzNywgNTYsIDY5LCAzNywgNTYsIDc2LCAzNywgNTYsIDc4LCAzNywgNTYsIDE3NiwgMzcsIDU2LCAyMzQsIDk4LCAKLSAgICAzNywgNTYsIDIzMywgMjIzLCAzNywgNTYsIDIzNCwgMTg4LCAzNywgNTYsIDIzNCwgMzQsIDM3LCA1NiwgMjA2LCAzNywgNTYsIAotICAgIDIxOSwgMTkzLCAzNywgNTYsIDIxOCwgODQsIDM3LCA1NiwgMjIxLCAxODMsIDM3LCA1NiwgMjE5LCA2MCwgMzcsIDU2LCAKLSAgICAyMTcsIDEwNiwgMzcsIDU2LCAyMTYsIDExOCwgMzcsIDU2LCAyMTUsIDExOSwgMzcsIDU2LCAyMTcsIDIzLCAzNywgNTYsIAotICAgIDExMiwgMzcsIDU2LCAxOTgsIDM3LCA1NiwgMjI4LCAyMzgsIDM3LCA1NiwgMjI3LCAyNDIsIDM3LCA1NiwgMjI5LCAxMTIsIAotICAgIDM3LCA1NiwgMjI4LCA3OSwgMzcsIDU2LCAxNjIsIDM3LCA1NiwgMjQxLCAxODcsIDM3LCA1NiwgMjQwLCAyMjksIDM3LCA1NiwgCi0gICAgMjQxLCAyNDUsIDM3LCA1NiwgMjQxLCA3NSwgMzcsIDU2LCAxODYsIDM3LCA1NiwgMjMwLCAyMzUsIDM3LCA1NiwgMjMwLCAKLSAgICAxMDcsIDM3LCA1NiwgMjMxLCA5NiwgMzcsIDU2LCAyMzAsIDE2NiwgMzcsIDU2LCAxOTIsIDM3LCA1NiwgMjEwLCAyMTIsIAotICAgIDM3LCA1NiwgMjEwLCAyNDQsIDM3LCA1NiwgMjA1LCAzNywgNTYsIDIyMywgMzgsIDM3LCA1NiwgMjIyLCAxNDIsIDM3LCA1NiwgCi0gICAgMjIzLCAxMzEsIDM3LCA1NiwgMjIyLCAyMTMsIDM3LCA1NiwgMjEyLCA2NSwgMzcsIDU2LCAyMTEsIDI1MCwgMzcsIDU2LCAKLSAgICAyMTIsIDIyLCAzNywgNTYsIDIxMSwgMjI3LCA0MiwgMjU0LCA3OSwgNDIsIDI1MywgMjQ3LCA0MiwgMjU0LCAxMDMsIDQyLCAKLSAgICAyNTUsIDQwLCA0MiwgMjM1LCAyMzMsIDQyLCAyMzUsIDIwMywgNDIsIDIxNCwgMTY2LCA0MiwgMjQ1LCA3NCwgNDIsIDI0NSwgCi0gICAgMjE0LCA0MiwgMjI2LCAxOTAsIDQyLCAyMjYsIDE4NCwgNDIsIDIzNCwgMjUxLCA0MiwgMjM0LCAyMjAsIDQyLCAyMzQsIAotICAgIDIxNywgNDIsIDI0MywgOTksIDQyLCAyNDMsIDEwOCwgNDIsIDI0MiwgMjExLCA0MiwgMjQyLCAyMDcsIDQyLCAyMzMsIDE1NiwgCi0gICAgNDIsIDI0MiwgMjAwLCA0MiwgMjM0LCA3OCwgNDIsIDIzNCwgNzcsIDQyLCAyMzQsIDc2LCA0MiwgMjM0LCA3NSwgNDIsIAotICAgIDI0MiwgOTMsIDQyLCAyNDIsIDkyLCA0MiwgMjMzLCAxOTksIDQyLCAyMzMsIDIwMSwgNDIsIDIzNCwgMTg0LCA0MiwgMjM0LCAKLSAgICA3LCA0MiwgMjM0LCAxNCwgNDIsIDIyMiwgMTgsIDQyLCAyMjEsIDIzOSwgNDIsIDIxOSwgMTMxLCA0MiwgMjIwLCAxNDMsIAotICAgIDQyLCAyMjAsIDE0MiwgNDIsIDI0OCwgMjI2LCA0MiwgMjQ4LCA0NCwgNDIsIDI0NywgMTI5LCA0MiwgMjE2LCAzMywgNDIsIAotICAgIDIyOSwgMjA1LCA0MiwgMjI4LCA0NiwgNDIsIDI0MiwgMzksIDQyLCAyMjYsIDg4LCA0MiwgMjI2LCA4NywgNDIsIDI1MiwgCi0gICAgMTk2LCA0MiwgMjI1LCAxMDgsIDQyLCAyMjUsIDcyLCA0MiwgMjI1LCA3MywgNDIsIDI1MSwgMjQyLCA0MiwgMjQwLCAyMjgsIAotICAgIDQyLCAyNDAsIDIyNCwgNDIsIDI1MSwgOTksIDQyLCAyNDAsIDIxMSwgNDIsIDI0MSwgMjIyLCA0MiwgMjI1LCAxNjIsIDQyLCAKLSAgICAyMjUsIDE5NywgNDIsIDI0MSwgMjA1LCA0MiwgMjI1LCAxOTQsIDQyLCAyMjUsIDIxMCwgNDIsIDI1MiwgNjksIDQyLCAyMjUsIAotICAgIDksIDQyLCAyNTEsIDE4OCwgNDIsIDI0MSwgNjMsIDQyLCAyMjQsIDI1MywgNDIsIDI0MSwgNTUsIDQyLCAyNDEsIDU3LCA0MiwgCi0gICAgMjMxLCAyMDYsIDQyLCAyMzEsIDIwMiwgNDIsIDIzMSwgMjExLCA0MiwgMjMxLCAxNTUsIDQyLCAyMzEsIDE4MCwgNDIsIAotICAgIDIzMCwgMjAyLCA0MiwgMjMwLCAxODEsIDQyLCAyMzAsIDE4MCwgNDIsIDIzMSwgNzksIDQyLCAyMzEsIDc2LCA0MiwgMjMxLCAKLSAgICA4MCwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIDIwMSwgNDIsIDIyMiwgMjI5LCA0MiwgMjIyLCAyMzMsIAotICAgIDQyLCAyMjIsIDExOSwgNDIsIDIyMiwgMTEzLCA0MiwgMjIzLCA4OCwgNDIsIDIyMywgODUsIDQyLCAyMTIsIDM4LCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjEwLCA4NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDExMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDEwNSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE1OCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE2MSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5MCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5OSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIwMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNiwgMjQ4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgCi0gICAgMjQ1LCAxNzUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDc2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAKLSAgICAyNDAsIDI0NiwgMjE2LCAxNjUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyNDQsIDEzLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDAsIDI0NiwgMjQ0LCAxMjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTksIDEyMSwgMTEwLCAKLSAgICAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIyMCwgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjQ1LCAKLSAgICAxOTgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMjgsIDIwMiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAKLSAgICAyNDYsIDIxNSwgNzMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY3LCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDAsIDI0NiwgMjE1LCA2MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNjQsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY5LCA0MiwgMjQwLCAyMzcsIDQyLCAyNDgsIDIyOSwgNDIsIDI1MywgMjAwLCAKLSAgICA0MiwgMTMwLCA0MiwgMjI2LCAxMjksIDQyLCAyMjUsIDIyOSwgNDIsIDI0NywgMTU1LCA0MiwgMjQ3LCAxNTYsIDIxOCwgCi0gICAgMjM1LCA0MiwgMjQ3LCAxNTYsIDI0OSwgMTE2LCA0MiwgMjM1LCAxNjIsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjQxLCAKLSAgICAyMjMsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCAxNzUsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCA3NSwgNDIsIAotICAgIDI0NSwgOTksIDIyOSwgMjEwLCAyMzEsIDc1LCA0MiwgMjQ5LCAxNjUsIDQyLCAyMjYsIDk0LCAyNTQsIDEzMywgNDIsIDE5OCwgCi0gICAgNDIsIDIzMCwgMTA4LCA2MSwgNDIsIDE4NiwgNDIsIDE3NiwgNDIsIDIzNCwgMTkxLCA0MiwgMjMxLCAxMzQsIDQyLCAyNDMsIAotICAgIDg3LCA0MiwgMjUxLCAyNiwgNDIsIDIzNCwgMTkwLCA0MiwgMjI1LCAxNTMsIDQyLCAyMjksIDg2LCA0MiwgMjMwLCAxMDgsIAotICAgIDI0NSwgMTQsIDQyLCAyMzAsIDEwOCwgMjQzLCAyMDksIDQyLCAyMzEsIDIwLCA0MiwgMjM0LCAxNDAsIDQyLCAyNDAsIDE3MCwgCi0gICAgNDIsIDIzNCwgMTAwLCA0MiwgMjMwLCAyMzcsIDQyLCAyNDIsIDIyMywgNDIsIDIxNiwgMTIwLCA0MiwgMjMwLCAxMDgsIAotICAgIDE1NiwgNDIsIDIzMCwgMTc0LCA0MiwgMjQ3LCAxNjUsIDQyLCAyMzQsIDQ2LCA0MiwgMjQ0LCA1MywgNDIsIDIyOCwgMTE3LCAKLSAgICA0MiwgMjMwLCAxMDgsIDE5NCwgNDIsIDIzMCwgMTcxLCA0MiwgMjQ5LCAyNDcsIDQyLCAyMzQsIDQwLCA0MiwgMjMwLCAxNzIsIAotICAgIDIxOCwgMjM1LCA0MiwgMjQ5LCAyNDgsIDIxOCwgMjM1LCA0MiwgMjMyLCA1NSwgMjE4LCAyMzUsIDQyLCAyMzQsIDQxLCAKLSAgICAyMTgsIDIzNSwgNDIsIDIzMCwgMTcyLCAyNDksIDExNiwgNDIsIDI0OSwgMjQ4LCAyNDksIDExNiwgNDIsIDIzMiwgNTUsIAotICAgIDI0OSwgMTE2LCA0MiwgMjM0LCA0MSwgMjQ5LCAxMTYsIDQyLCAyMzIsIDU1LCAxMTUsIDIyMiwgOTMsIDQyLCAyMzIsIDU1LCAKLSAgICAxMTUsIDIyMiwgOTQsIDIxOCwgMjM1LCA0MiwgMTkxLCA0MiwgMjM0LCAxLCA0MiwgMjMwLCAxMTAsIDQyLCAyNDIsIDE1OCwgCi0gICAgNDIsIDIyMywgMTc5LCA0MiwgMjIzLCAxODAsIDExNSwgMjIyLCA5MywgNDIsIDIyMywgMTgwLCAxMTUsIDIyMiwgOTQsIAotICAgIDIxOCwgMjM1LCA0MiwgMjI0LCAxNjUsIDQyLCAyMjgsIDE4LCA0MiwgMjMwLCAxMDgsIDIyMiwgOTMsIDQyLCAyMzAsIDEwOSwgCi0gICAgNDIsIDIyNCwgMTE5LCA0MiwgMjI3LCAxODAsIDQyLCAyMzAsIDEwOCwgMjE0LCAxMDUsIDQyLCAyMzAsIDU0LCA0MiwgMjMzLCAKLSAgICAxOTEsIDQyLCAyMzAsIDU1LCAyMzEsIDc5LCA0MiwgMjI0LCAxMTgsIDQyLCAyMjcsIDE3OSwgNDIsIDIzMCwgMTA4LCAyMTIsIAotICAgIDk4LCA0MiwgMjMwLCA0OCwgNDIsIDIzMywgMTg5LCA0MiwgMjMwLCA0OSwgMjMxLCA3OSwgNDIsIDIzNSwgMzAsIDIyNiwgCi0gICAgMjI0LCA0MiwgMjMyLCA1NSwgMjI2LCAyMjQsIDQyLCAyNTQsIDE0NCwgNDIsIDI1MSwgMTY4LCA0MiwgMjUwLCAyMjIsIDQyLCAKLSAgICAyNTAsIDE5OSwgNDIsIDI1MSwgNzUsIDExNSwgMjM0LCAxNDAsIDQyLCAyNDksIDI0NiwgNDIsIDI0OCwgMTUwLCA0MiwgCi0gICAgMjQyLCA3OSwgNDIsIDE2MiwgNDIsIDI0MCwgMjM4LCA0MiwgMjM2LCA2LCA0MiwgMjM0LCA1MywgNDIsIDIzNCwgNDEsIAotICAgIDI1MSwgMiwgNDIsIDIzMywgMjI1LCA0MiwgMjMyLCAxNjUsIDQyLCAyMzIsIDE2NCwgNDIsIDIzMiwgMTUzLCA0MiwgMjMyLCAKLSAgICA2OCwgNDIsIDIzMSwgMTM1LCAyMTksIDgxLCA0MiwgMjMwLCAyMDEsIDQyLCAyMzAsIDE1NywgNDIsIDIyNSwgMTUxLCA0MiwgCi0gICAgMjI1LCAyMiwgNDIsIDIyNCwgMjIyLCA0MiwgMjI0LCAyMjAsIDQyLCAyMTgsIDIyOSwgNDIsIDIxOCwgMywgNDIsIDIxMiwgCi0gICAgMjQsIDQyLCAyMTQsIDEwNiwgMTE1LCAxOTQsIDQyLCAxMTYsIDExNSwgMTk0LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTExLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTA1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTU4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTYxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTkwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTk5LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMjAxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAyNDgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIAotICAgIDI0OCwgMTU0LCAyNDUsIDE3NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNzYsIDExMCwgMjE3LCA0LCAKLSAgICAxNiwgMzEsIDI0OCwgMTU0LCAyMTYsIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDI0NCwgMTMsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyNDQsIDEyNiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxOSwgCi0gICAgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjIwLCAxMjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAyNDUsIDE5OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIyOCwgMjAyLCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDgsIDE1NCwgMjE1LCA3MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjcsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDYzLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAKLSAgICAyMTUsIDcwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgCi0gICAgMjQ4LCAxNTQsIDIxNSwgNjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDcyLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNiwgMTYzLCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAxNjIsIDQyLCAyNDMsIDEyNSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgCi0gICAgMjQ5LCAxNDgsIDI0MSwgMjMwLCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMjMsIDEyNSwgMjQ1LCAyMzEsIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ3LCAyMzksIDI1MywgMjE1LCAyMTYsIDE5NywgMjUyLCA2NCwgMjQxLCAxOTksIDMxLCAyMTAsIDIyMywgMjQ0LCAKLSAgICA0NiwgMjQxLCAxOTksIDMxLCAyMTIsIDU5LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjExLCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDExLCAyNDEsIDE5OSwgMzEsIDI0MSwgNjcsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgNCwgMjE3LCA2MiwgCi0gICAgMjQxLCAxOTksIDMxLCAyMTUsIDIzOCwgMjQxLCAxOTksIDMxLCAyMjUsIDIyMiwgMjQxLCAxOTksIDMxLCAyMTgsIDE2MCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNDQsIDE0NywgMjQxLCAxOTksIDMxLCAyNDIsIDEzOSwgMjI0LCAyNDMsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjMwLCAxNjAsIDI0MSwgMTk5LCAzMSwgMjQ1LCAxMzQsIDI0MSwgMTk5LCAzMSwgMjQ0LCA0NywgMjQxLCAxOTksIDMxLCAKLSAgICAyMTEsIDIwNywgMjI2LCAyMDEsIDIxNiwgMTk3LCAyNDgsIDk0LCAyNDEsIDE5OSwgMzEsIDI1NCwgNTksIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ5LCAxOTMsIDI0MSwgMTk5LCAzMSwgMjUxLCAyMzUsIDIxNiwgMTM5LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTU2LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIxOCwgMjQ3LCAyNTQsIDc4LCAyNDEsIDE5OSwgMzEsIDIyMywgNTYsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjM1LCAyMjcsIDI0MSwgMTk5LCAzMSwgMjQyLCAxMzksIDIxNywgNjIsIDI0MSwgMTk5LCAzMSwgMjMwLCAxMTYsIDI0OSwgCi0gICAgMTY3LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTM5LCAyMjQsIDIwMCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjU1LCAyNywgCi0gICAgMjEyLCA0MCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjUwLCAxNiwgMjQ0LCAxMDQsIDI0MSwgMTk5LCAzMSwgMjM1LCAKLSAgICAyNDAsIDI0MSwgMTk5LCAzMSwgMjQ2LCA2NSwgMjQxLCAxOTksIDMxLCAyMjMsIDU5LCAyNDEsIDE5OSwgMzEsIDI0MiwgCi0gICAgMTM5LCAyMjQsIDIyNywgMjQxLCAxOTksIDMxLCAyMjQsIDE4MCwgMjQxLCAxOTksIDMxLCAyNDgsIDE2OSwgNjQsIDIxNiwgCi0gICAgMTk3LCAyMzIsIDIzNiwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjQ0LCAxODIsIDI0MSwgMTk5LCAzMSwgMjI2LCAxNjcsIAotICAgIDI0MSwgMTk5LCAzMSwgMjI2LCAyNDgsIDI0MSwgMTk5LCAzMSwgMjQ4LCA2NywgMjQxLCAxOTksIDMxLCAyNDgsIDg3LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIzNSwgMjU0LCAyNDEsIDE5OSwgMzEsIDI1MSwgMTU3LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjI5LCAKLSAgICAyMTYsIDQzLCAyMzEsIDgxLCAyNDEsIDE5OSwgMzEsIDI0MywgOTQsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgMjI0LCAxMjgsIAotICAgIDIxNCwgMTU0LCAyNDEsIDE5OSwgMzEsIDIyNiwgMTY2LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDEzLCAyNDEsIAotICAgIDE5OSwgMzEsIDIyMywgNDgsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDI1MCwgMjI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDcsIDIxNiwgMTM0LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMzQsIDE4NSwgMjE4LCAxMzYsIDIzMCwgCi0gICAgMTIwLCAyNDEsIDE5OSwgMzEsIDI0OCwgNDAsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIzMSwgMTU3LCAyMzEsIDIwNywgCi0gICAgMjQxLCAxOTksIDMxLCAyNTUsIDI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDU0LCAyNDEsIDE5OSwgMzEsIAotICAgIDIxNiwgMTk3LCAyNDMsIDU0LCAyMTEsIDIzOSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjM1LCA1OCwgMjMzLCAxMTMsIAotICAgIDI0MSwgMTk5LCAzMSwgMjQ3LCAxOTIsIDI0MSwgMTk5LCAzMSwgMjMyLCAyMjYsIDI0MSwgMTk5LCAzMSwgMjM1LCAyMzAsIAotICAgIDIxNSwgMTg4LCAyNDEsIDE5OSwgMzEsIDQsIDIyNCwgMjAwLCAyNDEsIDE5OSwgMzEsIDI1NCwgMjI2LCAyNDksIDIyMCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNTIsIDY3LCAyNDksIDIyMCwgOCwgMywgMjM1LCAxNjYsIDgsIDMsIDIzNSwgMTU5LCA4LCAzLCAKLSAgICA3NCwgOCwgMywgMjM1LCAxODksIDgsIDMsIDIzNiwgNjUsIDgsIDMsIDIzNiwgNDgsIDgsIDMsIDIzNiwgNjcsIDgsIDMsIAotICAgIDIzNiwgNjYsIDgsIDMsIDI1MywgMjE0LCA4LCAzLCAyNTMsIDE3NywgOCwgMywgNjEsIDgsIDMsIDI1NCwgODAsIDgsIDMsIAotICAgIDIxNCwgMTY0LCA4LCAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgMTQ0LCA4LCAzLCAyMjYsIDExOCwgCi0gICAgOCwgMywgNzgsIDgsIDMsIDIyNiwgMTc5LCA4LCAzLCAyNDUsIDQzLCA4LCAzLCA3NiwgOCwgMywgMjExLCAxOTUsIDgsIDMsIAotICAgIDI1MSwgMjM2LCA4LCAzLCAyNTEsIDIzMywgOCwgMywgMjUyLCAxNCwgOCwgMywgMjUxLCAyNDYsIDgsIDMsIDI1MiwgMywgOCwgCi0gICAgMywgMjUyLCAyLCA4LCAzLCAyNTIsIDUsIDgsIDMsIDI1MiwgNCwgOCwgMywgMjUyLCAxMjksIDgsIDMsIDI1MiwgMTIxLCA4LCAKLSAgICAzLCAyNTIsIDE5OSwgOCwgMywgMjUyLCAxNTAsIDgsIDMsIDI1MSwgMTA5LCA4LCAzLCAyNTEsIDExMywgOCwgMywgMjUxLCAKLSAgICAxMTAsIDgsIDMsIDI1MSwgMTg3LCA4LCAzLCAyNTEsIDE3MSwgOCwgMywgMjUxLCAyMTMsIDgsIDMsIDI1MSwgMTkzLCA4LCAKLSAgICAzLCAyNTIsIDI5LCA4LCAzLCAyNTIsIDgzLCA4LCAzLCAyNTIsIDQxLCA4LCAzLCAyNTEsIDk1LCA4LCAzLCAyNTEsIDkyLCAKLSAgICA4LCAzLCAyNTEsIDEzMywgOCwgMywgMjUxLCAxMDgsIDgsIDMsIDI1MSwgMTAyLCA4LCAzLCAyNTEsIDEwNiwgOCwgMywgCi0gICAgMjUxLCA4MCwgOCwgMywgMjUxLCA3OCwgOCwgMywgMjUxLCA4NSwgOCwgMywgMjUxLCA4MywgOCwgMywgMjUxLCA4MSwgOCwgCi0gICAgMywgMjUxLCA4MiwgOCwgMywgMjI1LCA1MiwgOCwgMywgMjI1LCA0OCwgOCwgMywgMjI1LCAxMTEsIDgsIDMsIDIyNSwgNjIsIAotICAgIDgsIDMsIDIyNSwgNzgsIDgsIDMsIDIyNSwgMTA1LCA4LCAzLCAyMjUsIDEwMSwgOCwgMywgMjI1LCAyNDQsIDgsIDMsIDIyNSwgCi0gICAgMjM0LCA4LCAzLCAxOTEsIDgsIDMsIDIyNiwgMjUsIDgsIDMsIDIyNCwgMTM4LCA4LCAzLCAyMjQsIDE0MCwgOCwgMywgMjI0LCAKLSAgICAxMzksIDgsIDMsIDIyNCwgMjM2LCA4LCAzLCAyMjQsIDIyNSwgOCwgMywgMjI1LCAxOSwgOCwgMywgMjI0LCAyNDgsIDgsIDMsIAotICAgIDIyNCwgMTI0LCA4LCAzLCAyMjQsIDEyMCwgOCwgMywgMjI0LCAxNTMsIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEyOSwgCi0gICAgOCwgMywgMjI0LCAxMzUsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyMjQsIDEwMiwgOCwgMywgMjI0LCAxMDcsIDgsIDMsIAotICAgIDIyNCwgMTA2LCA4LCAzLCAyMjQsIDEwNCwgOCwgMywgMjI0LCAxMDUsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIDEwMywgCi0gICAgOCwgMywgMjUyLCAxMTAsIDgsIDMsIDI1MiwgMTA1LCA4LCAzLCAyNTIsIDEwNywgOCwgMywgMjUyLCAxMDYsIDgsIDMsIAotICAgIDI1MiwgMTA5LCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgMjUyLCAxMTYsIDgsIDMsIDI1MiwgMTE1LCA4LCAzLCAyNTIsIDExOSwgCi0gICAgOCwgMywgMjUyLCAxMTcsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgOTcsIDgsIDMsIDI1MiwgOTYsIDgsIDMsIDI1MiwgCi0gICAgMTAwLCA4LCAzLCAyNTIsIDk5LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAKLSAgICAyNTIsIDExNCwgOCwgMywgMjUyLCAxMTIsIDgsIDMsIDI1MiwgOTEsIDgsIDMsIDI1MiwgOTAsIDgsIDMsIDI1MiwgOTgsIDgsIAotICAgIDMsIDI1MiwgOTQsIDgsIDMsIDI1MiwgOTIsIDgsIDMsIDI1MiwgOTMsIDgsIDMsIDI1MiwgODcsIDgsIDMsIDI1MiwgODYsIAotICAgIDgsIDMsIDI1MiwgODksIDgsIDMsIDI1MiwgODgsIDgsIDMsIDIyOSwgMTc0LCA4LCAzLCAyMjksIDE3MywgOCwgMywgMjI5LCAKLSAgICAxNzksIDgsIDMsIDIyOSwgMTc1LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzgsIDgsIDMsIDIyOSwgMTc3LCA4LCAKLSAgICAzLCAyMjksIDE4MiwgOCwgMywgMjI5LCAxODEsIDgsIDMsIDIyOSwgMTg0LCA4LCAzLCAyMjksIDE4MywgOCwgMywgMjI5LCAKLSAgICAxNzAsIDgsIDMsIDIyOSwgMTY5LCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzEsIDgsIDMsIDIyOSwgMTYzLCA4LCAKLSAgICAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIDIyOSwgMTY2LCA4LCAzLCAyMjksIDE2NCwgOCwgMywgMjI5LCAKLSAgICAxNjUsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE1NiwgOCwgMywgMjI5LCAxNjEsIDgsIDMsIDIyOSwgMTYwLCA4LCAKLSAgICAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNTksIDgsIDMsIDI0MSwgMTE3LCA4LCAzLCAyNDEsIDExNiwgOCwgMywgMjQxLCAKLSAgICAxMjIsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExOSwgOCwgMywgMjQxLCAxMjEsIDgsIDMsIDI0MSwgMTIwLCA4LCAKLSAgICAzLCAyNDEsIDEyNSwgOCwgMywgMjQxLCAxMjQsIDgsIDMsIDI0MSwgMTI3LCA4LCAzLCAyNDEsIDEyNiwgOCwgMywgMjQxLCAKLSAgICAxMDgsIDgsIDMsIDI0MSwgMTEwLCA4LCAzLCAyNDEsIDEwOSwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTEyLCA4LCAKLSAgICAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTQsIDgsIDMsIDI0MSwgMTA0LCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAKLSAgICAxMTEsIDgsIDMsIDI0MSwgMTA3LCA4LCAzLCAyNDEsIDEwNSwgOCwgMywgMjQxLCAxMDYsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIAotICAgIDI0MSwgMTAyLCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCA5OSwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDIzMCwgMTc3LCAKLSAgICA4LCAzLCAyMzAsIDE3NiwgOCwgMywgMjMwLCAyMzUsIDgsIDMsIDIzMCwgMTgzLCA4LCAzLCAyMzAsIDIwOCwgOCwgMywgCi0gICAgMjMwLCAyMjYsIDgsIDMsIDIzMCwgMjI0LCA4LCAzLCAyMzEsIDE0NCwgOCwgMywgMjMxLCAxMzksIDgsIDMsIDE4NiwgOCwgCi0gICAgMywgMjMxLCAxNzcsIDgsIDMsIDIzMCwgNzksIDgsIDMsIDIzMCwgNzgsIDgsIDMsIDIzMCwgODIsIDgsIDMsIDIzMCwgODAsIAotICAgIDgsIDMsIDIzMCwgMTI2LCA4LCAzLCAyMzAsIDExMiwgOCwgMywgMjMwLCAxNjYsIDgsIDMsIDIzMCwgMTMxLCA4LCAzLCAKLSAgICAyMzEsIDMxLCA4LCAzLCAyMzEsIDk2LCA4LCAzLCAyMzAsIDYwLCA4LCAzLCAyMzAsIDU2LCA4LCAzLCAyMzAsIDEwNywgOCwgCi0gICAgMywgMjMwLCA3NSwgOCwgMywgMjMwLCA2OCwgOCwgMywgMjMwLCA3MywgOCwgMywgMjMwLCAzMywgOCwgMywgMjMwLCAzMiwgCi0gICAgOCwgMywgMjMwLCAzOCwgOCwgMywgMjMwLCAzNSwgOCwgMywgMjQ0LCA5MSwgOCwgMywgMjQ0LCA4NiwgOCwgMywgMjQ0LCAKLSAgICAxMjksIDgsIDMsIDI0NCwgMTA2LCA4LCAzLCAyNDQsIDE3NSwgOCwgMywgMjQ0LCAxNjYsIDgsIDMsIDI0NCwgMjA0LCA4LCAKLSAgICAzLCAyNDQsIDE3OCwgOCwgMywgMjQ0LCAxMSwgOCwgMywgMjQ0LCA1MSwgOCwgMywgMjQ0LCAzNSwgOCwgMywgMjQzLCAyMjUsIAotICAgIDgsIDMsIDI0MywgMjI0LCA4LCAzLCAyNDMsIDI0MSwgOCwgMywgMjQzLCAyMzAsIDgsIDMsIDI0MywgMjI4LCA4LCAzLCAKLSAgICAyNDMsIDIyOSwgOCwgMywgMjQzLCAyMTIsIDgsIDMsIDI0MywgMjExLCA4LCAzLCAyNDMsIDIxNSwgOCwgMywgMjQzLCAyMTMsIAotICAgIDgsIDMsIDIxMywgMTQ0LCA4LCAzLCAyMTMsIDEzOSwgOCwgMywgMjEzLCAxNzYsIDgsIDMsIDIxMywgMTUzLCA4LCAzLCAKLSAgICAyMTMsIDE2NiwgOCwgMywgMjEzLCAxNjMsIDgsIDMsIDIxMywgMTY4LCA4LCAzLCAyMTMsIDE2NywgOCwgMywgMjE0LCA3LCAKLSAgICA4LCAzLCAyMTQsIDIsIDgsIDMsIDIxNCwgMjcsIDgsIDMsIDIxNCwgMTgsIDgsIDMsIDIxMywgMTI1LCA4LCAzLCAyMTMsIAotICAgIDEyMSwgOCwgMywgMjEzLCAxMzgsIDgsIDMsIDIxMywgMTI2LCA4LCAzLCAyMTMsIDE3OCwgOCwgMywgMjEzLCAyNDQsIDgsIAotICAgIDMsIDIxMiwgMTEwLCA4LCAzLCAyMTIsIDEwOCwgOCwgMywgMjEyLCAxMTYsIDgsIDMsIDIxMiwgMTEzLCA4LCAzLCAyMTIsIAotICAgIDExMSwgOCwgMywgMjEyLCAxMTIsIDgsIDMsIDIxMiwgMTAyLCA4LCAzLCAyMTIsIDEwMSwgOCwgMywgMjEyLCAxMDYsIDgsIAotICAgIDMsIDIxMiwgMTA1LCA4LCAzLCAyMTIsIDEwMywgOCwgMywgMjEyLCAxMDQsIDgsIDMsIDI0NywgMTg2LCA4LCAzLCAyNDcsIAotICAgIDE3NCwgOCwgMywgMjQ4LCAxMSwgOCwgMywgMjQ3LCAyMTEsIDgsIDMsIDI0NywgMjQ0LCA4LCAzLCAyNDcsIDI0OCwgOCwgMywgCi0gICAgMjQ3LCAyNDcsIDgsIDMsIDI0OCwgMTYwLCA4LCAzLCAyNDgsIDE1NSwgOCwgMywgMjQ4LCAyMjksIDgsIDMsIDI0OCwgMTgwLCAKLSAgICA4LCAzLCAyNDYsIDcwLCA4LCAzLCAyNDYsIDcxLCA4LCAzLCAyNDcsIDEyOCwgOCwgMywgMjQ2LCAxMTAsIDgsIDMsIDI0NywgCi0gICAgMTUzLCA4LCAzLCAyNDcsIDEzMCwgOCwgMywgMjQ4LCAzOCwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCA1MywgOCwgMywgCi0gICAgMjQ2LCA2MSwgOCwgMywgMjQ2LCA1OSwgOCwgMywgMjQ2LCA4NiwgOCwgMywgMjQ2LCA2OSwgOCwgMywgMjQ2LCA2NCwgOCwgCi0gICAgMywgMjQ2LCA2NywgOCwgMywgMjE2LCA2OCwgOCwgMywgMjE2LCA2MiwgOCwgMywgMjE2LCAxMTgsIDgsIDMsIDIxNiwgNzcsIAotICAgIDgsIDMsIDIxNiwgMTEwLCA4LCAzLCAyMTYsIDExMiwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNywgNDcsIDgsIDMsIDIxNywgCi0gICAgMzQsIDgsIDMsIDIxNywgMTA2LCA4LCAzLCAyMTcsIDU1LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE1LCAxMDIsIDgsIDMsIAotICAgIDIxNSwgMTA1LCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE2LCA2LCA4LCAzLCAyMTYsIDIsIDgsIDMsIDExMiwgOCwgMywgCi0gICAgMjE2LCAxNCwgOCwgMywgMjE2LCAyMTQsIDgsIDMsIDIxNywgMjMsIDgsIDMsIDIxNiwgMjM4LCA4LCAzLCAyMTUsIDg4LCA4LCAKLSAgICAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOSwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTksIAotICAgIDgsIDMsIDI0OCwgMTE1LCA4LCAzLCAyNDgsIDExNCwgOCwgMywgMjQ4LCAxMjAsIDgsIDMsIDI0OCwgMTE2LCA4LCAzLCAKLSAgICAyNDgsIDExNywgOCwgMywgMjQ4LCAxMTksIDgsIDMsIDI0OCwgMTE4LCA4LCAzLCAyNDgsIDEzNiwgOCwgMywgMjQ4LCAxMzUsIAotICAgIDgsIDMsIDI0OCwgMTQzLCA4LCAzLCAyNDgsIDEzNywgOCwgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTA3LCA4LCAzLCAKLSAgICAyNDgsIDEwNiwgOCwgMywgMjQ4LCAxMTAsIDgsIDMsIDI0OCwgMTA5LCA4LCAzLCAyNDgsIDExMywgOCwgMywgMjQ4LCAxMTEsIAotICAgIDgsIDMsIDI0OCwgMTI4LCA4LCAzLCAyNDgsIDEzMSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIDI0OCwgMTAxLCA4LCAzLCAKLSAgICAyNDgsIDEwMCwgOCwgMywgMjQ4LCAxMDgsIDgsIDMsIDI0OCwgMTA0LCA4LCAzLCAyNDgsIDEwMiwgOCwgMywgMjQ4LCAxMDMsIAotICAgIDgsIDMsIDIyOSwgMTMxLCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxMzgsIDgsIDMsIDIyOSwgMTMzLCA4LCAzLCAKLSAgICAyMjksIDEzNCwgOCwgMywgMjI5LCAxMzUsIDgsIDMsIDIyOSwgMTQ3LCA4LCAzLCAyMjksIDE0NiwgOCwgMywgMjI5LCAxNTMsIAotICAgIDgsIDMsIDIyOSwgMTQ4LCA4LCAzLCAyMjksIDEyMywgOCwgMywgMjI5LCAxMjIsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAKLSAgICAyMjksIDEyNCwgOCwgMywgMjI5LCAxMzksIDgsIDMsIDIyOSwgMTQ1LCA4LCAzLCAyMjksIDE0MywgOCwgMywgMjI5LCAxMTUsIAotICAgIDgsIDMsIDIyOSwgMTE0LCA4LCAzLCAyMjksIDEyMCwgOCwgMywgMjI5LCAxMTgsIDgsIDMsIDIyOSwgMTE2LCA4LCAzLCAKLSAgICAyMjksIDExNywgOCwgMywgMjQxLCA4NCwgOCwgMywgMjQxLCA4MywgOCwgMywgMjQxLCA5MCwgOCwgMywgMjQxLCA4NSwgOCwgCi0gICAgMywgMjQxLCA4NywgOCwgMywgMjQxLCA4NiwgOCwgMywgMjQxLCA4OSwgOCwgMywgMjQxLCA4OCwgOCwgMywgMjQxLCA5NSwgCi0gICAgOCwgMywgMjQxLCA5NCwgOCwgMywgMjQxLCA5NywgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCA3OCwgOCwgMywgMjQxLCAKLSAgICA3OSwgOCwgMywgMjQxLCA4MSwgOCwgMywgMjQxLCA4MCwgOCwgMywgMjQxLCA4MiwgOCwgMywgMjQxLCA5MSwgOCwgMywgCi0gICAgMjQxLCA5MywgOCwgMywgMjQxLCA5MiwgOCwgMywgMjQxLCA3NywgOCwgMywgMjI4LCAxOTQsIDgsIDMsIDIyOCwgMTkyLCA4LCAKLSAgICAzLCAyMjgsIDIzOCwgOCwgMywgMjI4LCAxOTcsIDgsIDMsIDIyOCwgMjIwLCA4LCAzLCAyMjgsIDIzNCwgOCwgMywgMjI4LCAKLSAgICAyMzMsIDgsIDMsIDIyOSwgMTg4LCA4LCAzLCAxOTgsIDgsIDMsIDIyOSwgMjAyLCA4LCAzLCAyMjcsIDE5MCwgOCwgMywgCi0gICAgMjI3LCAxOTIsIDgsIDMsIDIyNywgMTkxLCA4LCAzLCAyMjgsIDU2LCA4LCAzLCAyMjgsIDQzLCA4LCAzLCAyMjgsIDc5LCA4LCAKLSAgICAzLCAyMjgsIDY1LCA4LCAzLCAyMjksIDg4LCA4LCAzLCAyMjksIDExMiwgOCwgMywgMjI5LCA5OSwgOCwgMywgMjI3LCAxODUsIAotICAgIDgsIDMsIDIyNywgMTgxLCA4LCAzLCAyMjcsIDI0MiwgOCwgMywgMjI3LCAxODksIDgsIDMsIDIyNywgMTg3LCA4LCAzLCAKLSAgICAyMjcsIDE4OCwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNDksIAotICAgIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MiwgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTU4LCA4LCAzLCAKLSAgICAyNDEsIDE1NywgOCwgMywgMjQxLCAxNjAsIDgsIDMsIDI0MSwgMTU5LCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgMjQxLCAxNDIsIAotICAgIDgsIDMsIDI0MSwgMTQxLCA4LCAzLCAyNDEsIDE0NCwgOCwgMywgMjQxLCAxNDYsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAKLSAgICAyNDEsIDE1NCwgOCwgMywgMjQxLCAxNTYsIDgsIDMsIDI0MSwgMTU1LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgMjQxLCAxMzUsIAotICAgIDgsIDMsIDI0MSwgMTQzLCA4LCAzLCAyNDEsIDEzOSwgOCwgMywgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTM4LCA4LCAzLCAKLSAgICAyNDEsIDEzMCwgOCwgMywgMjQxLCAxMjksIDgsIDMsIDI0MSwgMTM0LCA4LCAzLCAyNDEsIDEzMywgOCwgMywgMjQxLCAxMzEsIAotICAgIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyMzIsIDIwMSwgOCwgMywgMjMyLCAxOTUsIDgsIDMsIDIzMiwgMjQ3LCA4LCAzLCAKLSAgICAyMzIsIDIwOCwgOCwgMywgMjMyLCAyMzksIDgsIDMsIDIzMiwgMjM4LCA4LCAzLCAyMzIsIDI0MiwgOCwgMywgMjMyLCAyNDAsIAotICAgIDgsIDMsIDIzMywgODUsIDgsIDMsIDIzMywgNzUsIDgsIDMsIDIzMywgMTQxLCA4LCAzLCAyMzMsIDk0LCA4LCAzLCAyMzIsIAotICAgIDg0LCA4LCAzLCAyMzIsIDgzLCA4LCAzLCAyMzIsIDg2LCA4LCAzLCAyMzIsIDg1LCA4LCAzLCAyMzIsIDEyMiwgOCwgMywgCi0gICAgMjMyLCAxMTIsIDgsIDMsIDIzMiwgMTYyLCA4LCAzLCAyMzIsIDEyNiwgOCwgMywgMjMzLCA4LCA4LCAzLCAyMzMsIDY0LCA4LCAKLSAgICAzLCAyMzMsIDIzLCA4LCAzLCAyMzIsIDc5LCA4LCAzLCAyMzIsIDc3LCA4LCAzLCAyMzIsIDEwMywgOCwgMywgMjMyLCA4MiwgCi0gICAgOCwgMywgMjMyLCA4MCwgOCwgMywgMjMyLCA4MSwgOCwgMywgMjMyLCA1OSwgOCwgMywgMjMyLCA1OCwgOCwgMywgMjMyLCAKLSAgICA2NywgOCwgMywgMjMyLCA2MiwgOCwgMywgMjMyLCA2MCwgOCwgMywgMjMyLCA2MSwgOCwgMywgMjQyLCAxOTYsIDgsIDMsIAotICAgIDI0MiwgMTk1LCA4LCAzLCAyNDIsIDIyMSwgOCwgMywgMjQyLCAyMDYsIDgsIDMsIDI0MiwgMjEzLCA4LCAzLCAyNDIsIDIxMiwgCi0gICAgOCwgMywgMjQyLCAyMTUsIDgsIDMsIDI0MiwgMjE0LCA4LCAzLCAyNDMsIDk2LCA4LCAzLCAyNDMsIDkxLCA4LCAzLCAyNDMsIAotICAgIDE0MiwgOCwgMywgMjQzLCAxMDYsIDgsIDMsIDI0MiwgOTgsIDgsIDMsIDI0MiwgOTcsIDgsIDMsIDI0MiwgMTAwLCA4LCAzLCAKLSAgICAyNDIsIDk5LCA4LCAzLCAyNDIsIDE2MSwgOCwgMywgMjQyLCAxNTksIDgsIDMsIDI0MiwgMTgxLCA4LCAzLCAyNDIsIDE2OSwgCi0gICAgOCwgMywgMjQzLCA0MCwgOCwgMywgMjQzLCAzOCwgOCwgMywgMjQzLCA2OSwgOCwgMywgMjQzLCA1MSwgOCwgMywgMjQyLCAKLSAgICA4OCwgOCwgMywgMjQyLCA4NywgOCwgMywgMjQyLCAxMjAsIDgsIDMsIDI0MiwgOTYsIDgsIDMsIDI0MiwgODksIDgsIDMsIAotICAgIDI0MiwgOTUsIDgsIDMsIDIzNCwgNjcsIDgsIDMsIDIzNCwgNjYsIDgsIDMsIDIzNCwgOTgsIDgsIDMsIDIzNCwgODEsIDgsIAotICAgIDMsIDIzNCwgOTEsIDgsIDMsIDIzNCwgOTQsIDgsIDMsIDIzNCwgOTIsIDgsIDMsIDIzNCwgMjA4LCA4LCAzLCAyMzQsIDE5NiwgCi0gICAgOCwgMywgMTc2LCA4LCAzLCAyMzQsIDIzNCwgOCwgMywgMjMzLCAyMDYsIDgsIDMsIDIzMywgMjExLCA4LCAzLCAyMzMsIAotICAgIDIwOCwgOCwgMywgMjM0LCA2LCA4LCAzLCAyMzQsIDIsIDgsIDMsIDIzNCwgMzQsIDgsIDMsIDIzNCwgMTMsIDgsIDMsIDIzNCwgCi0gICAgMTYyLCA4LCAzLCAyMzQsIDE0NiwgOCwgMywgMjM0LCAxODgsIDgsIDMsIDIzNCwgMTY1LCA4LCAzLCAyMzMsIDE5NSwgOCwgCi0gICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMjIzLCA4LCAzLCAyMzMsIDIwNSwgOCwgMywgMjMzLCAxOTgsIDgsIDMsIDIzMywgCi0gICAgMjAyLCA4LCAzLCAyNDMsIDIyLCA4LCAzLCAyNDMsIDIxLCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIDIzLCA4LCAzLCAKLSAgICAyNDMsIDI1LCA4LCAzLCAyNDMsIDI0LCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMyLCA4LCAzLCAyNDMsIDM2LCA4LCAKLSAgICAzLCAyNDMsIDM0LCA4LCAzLCAyNDMsIDEzLCA4LCAzLCAyNDMsIDEyLCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCAKLSAgICA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDIwLCA4LCAzLCAyNDMsIDE5LCA4LCAzLCAyNDMsIAotICAgIDI4LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDgsIDgsIDMsIDI0MywgCi0gICAgNywgOCwgMywgMjQzLCAxNiwgOCwgMywgMjQzLCAxMSwgOCwgMywgMjQzLCA5LCA4LCAzLCAyNDMsIDEwLCA4LCAzLCAyMzAsIAotICAgIDI1NCwgOCwgMywgMjMwLCAyNTUsIDgsIDMsIDIzMSwgMTcsIDgsIDMsIDIzMSwgMTYsIDgsIDMsIDIzMSwgMTksIDgsIDMsIAotICAgIDIzMSwgMTgsIDgsIDMsIDIzMCwgMjQ1LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIDMsIDIzMCwgMjUwLCAKLSAgICA4LCAzLCAyMzAsIDI0OSwgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzEsIDAsIDgsIDMsIDIzMSwgCi0gICAgMiwgOCwgMywgMjMxLCAxLCA4LCAzLCAyMzAsIDI0MSwgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQ4LCA4LCAzLCAKLSAgICAyMzAsIDI0NCwgOCwgMywgMjMwLCAyNDIsIDgsIDMsIDIzMCwgMjQzLCA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODYsIAotICAgIDgsIDMsIDI0MCwgMTkzLCA4LCAzLCAyNDAsIDE4OCwgOCwgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAKLSAgICAyNDAsIDE5MiwgOCwgMywgMjQwLCAxOTEsIDgsIDMsIDI0MCwgMTk4LCA4LCAzLCAyNDAsIDE5NywgOCwgMywgMjQwLCAyMDAsIAotICAgIDgsIDMsIDI0MCwgMTk5LCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxNzgsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAKLSAgICAyNDAsIDE4MCwgOCwgMywgMjQwLCAxODMsIDgsIDMsIDI0MCwgMTgyLCA4LCAzLCAyNDAsIDE4NSwgOCwgMywgMjQwLCAxODQsIAotICAgIDgsIDMsIDI0MCwgMTk0LCA4LCAzLCAyNDAsIDE5NiwgOCwgMywgMjQwLCAxOTUsIDgsIDMsIDIyOSwgMjksIDgsIDMsIDIyOSwgCi0gICAgMzEsIDgsIDMsIDIyOSwgMzAsIDgsIDMsIDIyOSwgNzIsIDgsIDMsIDIyOSwgNzAsIDgsIDMsIDIyOSwgODIsIDgsIDMsIAotICAgIDIyOSwgNzUsIDgsIDMsIDIyOCwgMjQ4LCA4LCAzLCAyMjgsIDI0NywgOCwgMywgMjI4LCAyNDksIDgsIDMsIDIyOSwgMSwgOCwgCi0gICAgMywgMjI4LCAyNTQsIDgsIDMsIDIyOSwgOSwgOCwgMywgMjI5LCAzLCA4LCAzLCAyMjksIDYzLCA4LCAzLCAyMjksIDY5LCA4LCAKLSAgICAzLCAyMjksIDY1LCA4LCAzLCAyNDEsIDE2MywgOCwgMywgMjQxLCAxNzMsIDgsIDMsIDI0MSwgMTgyLCA4LCAzLCAyNDIsIDIsIAotICAgIDgsIDMsIDI0MSwgMjUwLCA4LCAzLCAxNjIsIDgsIDMsIDI0MiwgMTMsIDgsIDMsIDI0MCwgMjEzLCA4LCAzLCAyNDAsIDIxMiwgCi0gICAgOCwgMywgMjQwLCAyMTUsIDgsIDMsIDI0MCwgMjE0LCA4LCAzLCAyNDAsIDI0OSwgOCwgMywgMjQwLCAyNDAsIDgsIDMsIAotICAgIDI0MSwgNzUsIDgsIDMsIDI0MSwgNTQsIDgsIDMsIDI0MSwgMjAxLCA4LCAzLCAyNDEsIDI0NSwgOCwgMywgMjQxLCAyMTMsIAotICAgIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIDIxMSwgCi0gICAgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgOCwgCi0gICAgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAzMCwgCi0gICAgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgMjEwLCAKLSAgICAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAzLCAKLSAgICAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgMywgCi0gICAgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgOCwgCi0gICAgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgOCwgCi0gICAgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAyNTAsIAotICAgIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMzYsIDgsIDMsIDI1MCwgCi0gICAgMzIsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNDUsIDgsIDMsIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIAotICAgIDI1MCwgNTgsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIDI1MCwgMjMyLCA4LCAzLCAyNTAsIDIyNSwgOCwgMywgMjUxLCA0MSwgOCwgCi0gICAgMywgMjUxLCAzLCA4LCAzLCAyNDksIDExMiwgOCwgMywgMjQ5LCAxMTQsIDgsIDMsIDI0OSwgMTEzLCA4LCAzLCAyNDksIAotICAgIDE2MSwgOCwgMywgMjQ5LCAxNTIsIDgsIDMsIDI0OSwgMjQ2LCA4LCAzLCAyNDksIDE3NywgOCwgMywgMjUwLCAxNjgsIDgsIAotICAgIDMsIDI1MCwgMTk4LCA4LCAzLCAyNTAsIDE3MywgOCwgMywgMjQ5LCA5MiwgOCwgMywgMjQ5LCA5MCwgOCwgMywgMjQ5LCAKLSAgICAxMjAsIDgsIDMsIDI0OSwgMTEwLCA4LCAzLCAyNDksIDk3LCA4LCAzLCAyNDksIDEwOSwgOCwgMywgMjQ5LCA3MSwgOCwgMywgCi0gICAgMjQ5LCA3MCwgOCwgMywgMjQ5LCA4MSwgOCwgMywgMjQ5LCA3NywgOCwgMywgMjQ5LCA3MiwgOCwgMywgMjQ5LCA3NCwgOCwgCi0gICAgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgCi0gICAgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgCi0gICAgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgCi0gICAgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgCi0gICAgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgCi0gICAgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgCi0gICAgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIDEwOCwgOCwgMywgMjI3LCAxMDcsIDgsIDMsIDIyNywgCi0gICAgMTEzLCA4LCAzLCAyMjcsIDEwOSwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDExMSwgOCwgCi0gICAgMywgMjI3LCAxMTgsIDgsIDMsIDIyNywgMTE3LCA4LCAzLCAyMjcsIDEyMSwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgCi0gICAgMTAxLCA4LCAzLCAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMDUsIDgsIDMsIDIyNywgMTA2LCA4LCAzLCAyMjcsIDExNCwgOCwgCi0gICAgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTYsIDgsIDMsIDIyNywgMTA0LCA4LCAzLCAyMjcsIDEwMCwgOCwgMywgMjI3LCAKLSAgICA5NywgOCwgMywgMjI3LCA5OCwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA5NSwgOCwgMywgCi0gICAgMjI3LCA5NCwgOCwgMywgMjI3LCA5MiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjE5LCAxMjksIDgsIDMsIDE5NSwgOCwgMywgCi0gICAgMjE5LCAxOTMsIDgsIDMsIDIxOSwgMTMyLCA4LCAzLCAyMTksIDE4NSwgOCwgMywgMjE5LCAxODgsIDgsIDMsIDIxOSwgMTg2LCAKLSAgICA4LCAzLCAyMjEsIDIyOCwgOCwgMywgMjIxLCAyMTYsIDgsIDMsIDIwNiwgOCwgMywgMjIxLCAyMzYsIDgsIDMsIDIxOCwgMjksIAotICAgIDgsIDMsIDIxOCwgMzEsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOSwgMzYsIDgsIDMsIDIxOSwgMjUsIDgsIDMsIDIxOSwgCi0gICAgNjAsIDgsIDMsIDIxOSwgNDAsIDgsIDMsIDIyMCwgMTE2LCA4LCAzLCAyMjEsIDE4MywgOCwgMywgMjIwLCAxNDEsIDgsIDMsIAotICAgIDIxOCwgNiwgOCwgMywgMjE4LCA0LCA4LCAzLCAyMTgsIDg0LCA4LCAzLCAyMTgsIDI4LCA4LCAzLCAyMTgsIDEwLCA4LCAzLCAKLSAgICAyMTgsIDE4LCA4LCAzLCAyMTcsIDE2NywgOCwgMywgMjE3LCAxNjYsIDgsIDMsIDIxNywgMjMzLCA4LCAzLCAyMTcsIDE3NCwgCi0gICAgOCwgMywgMjE3LCAxNjksIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTgsIDE4OCwgOCwgMywgMjE4LCAxODcsIDgsIDMsIAotICAgIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE4OSwgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkzLCA4LCAzLCAyMTgsIDE5MiwgCi0gICAgOCwgMywgMjE4LCAyMDIsIDgsIDMsIDIxOCwgMjAwLCA4LCAzLCAyMTgsIDIyNSwgOCwgMywgMjE4LCAyMDMsIDgsIDMsIAotICAgIDIxOCwgMTgzLCA4LCAzLCAyMTgsIDE4MiwgOCwgMywgMjE4LCAxODYsIDgsIDMsIDIxOCwgMTg0LCA4LCAzLCAyMTgsIDE5NiwgCi0gICAgOCwgMywgMjE4LCAxOTksIDgsIDMsIDIxOCwgMTk3LCA4LCAzLCAyMTgsIDE3OSwgOCwgMywgMjE4LCAxNzcsIDgsIDMsIAotICAgIDIxOCwgMTgxLCA4LCAzLCAyMTgsIDE4MCwgOCwgMywgMjE4LCAxNzIsIDgsIDMsIDIxOCwgMTcxLCA4LCAzLCAyMTgsIDE3NiwgCi0gICAgOCwgMywgMjE4LCAxNzUsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTgsIDE3NCwgOCwgMywgMjEwLCA3NywgOCwgMywgMjEwLCAKLSAgICA3NiwgOCwgMywgMjEwLCA4MiwgOCwgMywgMjEwLCA3OSwgOCwgMywgMjEwLCA1OSwgOCwgMywgMjEwLCA2MSwgOCwgMywgCi0gICAgMjEwLCA2MCwgOCwgMywgMjEwLCA2NCwgOCwgMywgMjEwLCA2MywgOCwgMywgMjEwLCA2NywgOCwgMywgMjEwLCA2NSwgOCwgCi0gICAgMywgMjEwLCA3MSwgOCwgMywgMjEwLCA3MCwgOCwgMywgMjEwLCA3NCwgOCwgMywgMjEwLCA3MiwgOCwgMywgMjEwLCA1NSwgCi0gICAgOCwgMywgMjEwLCA1NCwgOCwgMywgMjEwLCA2MiwgOCwgMywgMjEwLCA1OCwgOCwgMywgMjEwLCA1NiwgOCwgMywgMjEwLCAKLSAgICA1NywgOCwgMywgMjEwLCA0NywgOCwgMywgMjEwLCA0NiwgOCwgMywgMjEwLCA1MSwgOCwgMywgMjEwLCA1MCwgOCwgMywgCi0gICAgMjEwLCA0OCwgOCwgMywgMjEwLCA0OSwgOCwgMywgMjUwLCAxNDQsIDgsIDMsIDI1MCwgMTQxLCA4LCAzLCAyNTAsIDE2NSwgCi0gICAgOCwgMywgMjUwLCAxNTIsIDgsIDMsIDI1MCwgNzMsIDgsIDMsIDI1MCwgNzIsIDgsIDMsIDI1MCwgNzUsIDgsIDMsIDI1MCwgCi0gICAgNzQsIDgsIDMsIDI1MCwgODcsIDgsIDMsIDI1MCwgODYsIDgsIDMsIDI1MCwgOTQsIDgsIDMsIDI1MCwgODksIDgsIDMsIAotICAgIDI1MCwgMTIzLCA4LCAzLCAyNTAsIDEyMSwgOCwgMywgMjUwLCAxMzksIDgsIDMsIDI1MCwgMTI5LCA4LCAzLCAyNTAsIDY3LCAKLSAgICA4LCAzLCAyNTAsIDc3LCA4LCAzLCAyNTAsIDcxLCA4LCAzLCAyNTAsIDY4LCA4LCAzLCAyNTAsIDcwLCA4LCAzLCAyNTAsIAotICAgIDYxLCA4LCAzLCAyNTAsIDYwLCA4LCAzLCAyNTAsIDY1LCA4LCAzLCAyNTAsIDY0LCA4LCAzLCAyNTAsIDYyLCA4LCAzLCAKLSAgICAyNTAsIDYzLCA4LCAzLCAyMjIsIDE3NywgOCwgMywgMjIyLCAxODEsIDgsIDMsIDIyMiwgMTYwLCA4LCAzLCAyMjIsIDE2MSwgCi0gICAgOCwgMywgMjIyLCAxNjQsIDgsIDMsIDIyMiwgMTYzLCA4LCAzLCAyMjIsIDE2NywgOCwgMywgMjIyLCAxNjUsIDgsIDMsIAotICAgIDIyMiwgMTcxLCA4LCAzLCAyMjIsIDE3MCwgOCwgMywgMjIyLCAxNzYsIDgsIDMsIDIyMiwgMTcyLCA4LCAzLCAyMjIsIDE1NiwgCi0gICAgOCwgMywgMjIyLCAxNTQsIDgsIDMsIDIyMiwgMTYyLCA4LCAzLCAyMjIsIDE1OSwgOCwgMywgMjIyLCAxNTcsIDgsIDMsIAotICAgIDIyMiwgMTU4LCA4LCAzLCAyMjIsIDE0OSwgOCwgMywgMjIyLCAxNDgsIDgsIDMsIDIyMiwgMTUzLCA4LCAzLCAyMjIsIDE1MiwgCi0gICAgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyMiwgMTUxLCA4LCAzLCAyMjgsIDM5LCA4LCAzLCAyMjgsIDM4LCA4LCAzLCAyMjgsIAotICAgIDQxLCA4LCAzLCAyMjgsIDQwLCA4LCAzLCAyMjgsIDMxLCA4LCAzLCAyMjgsIDMzLCA4LCAzLCAyMjgsIDMyLCA4LCAzLCAKLSAgICAyMjgsIDM1LCA4LCAzLCAyMjgsIDM0LCA4LCAzLCAyMjgsIDM3LCA4LCAzLCAyMjgsIDM2LCA4LCAzLCAyMjgsIDI2LCA4LCAKLSAgICAzLCAyMjgsIDI1LCA4LCAzLCAyMjgsIDMwLCA4LCAzLCAyMjgsIDI5LCA4LCAzLCAyMjgsIDI3LCA4LCAzLCAyMjgsIDI4LCAKLSAgICA4LCAzLCAyMjgsIDIwLCA4LCAzLCAyMjgsIDE5LCA4LCAzLCAyMjgsIDI0LCA4LCAzLCAyMjgsIDIzLCA4LCAzLCAyMjgsIAotICAgIDIxLCA4LCAzLCAyMjgsIDIyLCA4LCAzLCAyMjAsIDc0LCA4LCAzLCAyMjAsIDY5LCA4LCAzLCAyMjAsIDEwNCwgOCwgMywgCi0gICAgMjIwLCA4NSwgOCwgMywgMjE5LCAyMTcsIDgsIDMsIDIxOSwgMjE5LCA4LCAzLCAyMTksIDIxOCwgOCwgMywgMjE5LCAyMzgsIAotICAgIDgsIDMsIDIxOSwgMjM1LCA4LCAzLCAyMjAsIDksIDgsIDMsIDIyMCwgMCwgOCwgMywgMjIwLCA0NCwgOCwgMywgMjIwLCAzNywgCi0gICAgOCwgMywgMjIwLCA2NSwgOCwgMywgMjIwLCA1MiwgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMjExLCA4LCAzLCAyMTksIAotICAgIDIyNywgOCwgMywgMjE5LCAyMTYsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAxOTYsIDgsIAotICAgIDMsIDIxOSwgMTk1LCA4LCAzLCAyMTksIDIwMiwgOCwgMywgMjE5LCAxOTksIDgsIDMsIDIxOSwgMTk3LCA4LCAzLCAyMTksIAotICAgIDE5OCwgOCwgMywgMjIzLCAxNDQsIDgsIDMsIDIyMywgMTM4LCA4LCAzLCAyMDUsIDgsIDMsIDIyMywgMTUwLCA4LCAzLCAKLSAgICAyMjIsIDEyMiwgOCwgMywgMjIyLCAxMjQsIDgsIDMsIDIyMiwgMTIzLCA4LCAzLCAyMjIsIDE5MCwgOCwgMywgMjIyLCAxODMsIAotICAgIDgsIDMsIDIyMiwgMjEzLCA4LCAzLCAyMjIsIDE5NCwgOCwgMywgMjIzLCA0NiwgOCwgMywgMjIzLCAxMzEsIDgsIDMsIDIyMywgCi0gICAgODQsIDgsIDMsIDIyMiwgMTE1LCA4LCAzLCAyMjIsIDExMiwgOCwgMywgMjIyLCAxNDIsIDgsIDMsIDIyMiwgMTIxLCA4LCAzLCAKLSAgICAyMjIsIDExNywgOCwgMywgMjIyLCAxMTgsIDgsIDMsIDIyMiwgOTcsIDgsIDMsIDIyMiwgOTYsIDgsIDMsIDIyMiwgMTAyLCAKLSAgICA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5OSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIDIzNSwgCi0gICAgMTAzLCA4LCAzLCAyMzUsIDExNCwgOCwgMywgMjM1LCAxMDUsIDgsIDMsIDIzNSwgMTEwLCA4LCAzLCAyMzUsIDEwOSwgOCwgCi0gICAgMywgMjM1LCAxMTIsIDgsIDMsIDIzNSwgMTExLCA4LCAzLCAyMzUsIDQ3LCA4LCAzLCAyMzUsIDQ2LCA4LCAzLCAyMzUsIDQ5LCAKLSAgICA4LCAzLCAyMzUsIDQ4LCA4LCAzLCAyMzUsIDYyLCA4LCAzLCAyMzUsIDYwLCA4LCAzLCAyMzUsIDc0LCA4LCAzLCAyMzUsIAotICAgIDY0LCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDM4LCA4LCAzLCAyMzUsIDU3LCA4LCAzLCAyMzUsIDQ1LCA4LCAzLCAKLSAgICAyMzUsIDQyLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDMyLCA4LCAzLCAyMzUsIDMxLCA4LCAzLCAyMzUsIDM2LCA4LCAKLSAgICAzLCAyMzUsIDM1LCA4LCAzLCAyMzUsIDMzLCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDQ3LCAKLSAgICA4LCAzLCAyMjQsIDU2LCA4LCAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIAotICAgIDU1LCA4LCAzLCAyMjQsIDU0LCA4LCAzLCAyMjQsIDIsIDgsIDMsIDIyMywgMjU1LCA4LCAzLCAyMjQsIDQsIDgsIDMsIDIyNCwgCi0gICAgMywgOCwgMywgMjI0LCAzNiwgOCwgMywgMjI0LCAzNSwgOCwgMywgMjI0LCA0NSwgOCwgMywgMjI0LCAzOSwgOCwgMywgMjIzLCAKLSAgICAyNTAsIDgsIDMsIDIyMywgMjQ2LCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjMsIDI1NCwgOCwgMywgMjIzLCAyNTIsIDgsIDMsIAotICAgIDIyMywgMjUzLCA4LCAzLCAyMjMsIDIzMCwgOCwgMywgMjIzLCAyMjgsIDgsIDMsIDIyMywgMjQwLCA4LCAzLCAyMjMsIDIzMywgCi0gICAgOCwgMywgMjIzLCAyMzEsIDgsIDMsIDIyMywgMjMyLCA4LCAzLCAyMzUsIDkzLCA4LCAzLCAyMzUsIDkyLCA4LCAzLCAyMzUsIAotICAgIDk5LCA4LCAzLCAyMzUsIDk0LCA4LCAzLCAyMzUsIDk2LCA4LCAzLCAyMzUsIDk1LCA4LCAzLCAyMzUsIDk4LCA4LCAzLCAKLSAgICAyMzUsIDk3LCA4LCAzLCAyMzUsIDg0LCA4LCAzLCAyMzUsIDg2LCA4LCAzLCAyMzUsIDg1LCA4LCAzLCAyMzUsIDg5LCA4LCAKLSAgICAzLCAyMzUsIDg4LCA4LCAzLCAyMzUsIDkxLCA4LCAzLCAyMzUsIDkwLCA4LCAzLCAyMzUsIDgwLCA4LCAzLCAyMzUsIDc5LCAKLSAgICA4LCAzLCAyMzUsIDg3LCA4LCAzLCAyMzUsIDgzLCA4LCAzLCAyMzUsIDgxLCA4LCAzLCAyMzUsIDgyLCA4LCAzLCAyMzUsIAotICAgIDc2LCA4LCAzLCAyMzUsIDc1LCA4LCAzLCAyMzUsIDc4LCA4LCAzLCAyMzUsIDc3LCA4LCAzLCAyMjgsIDE2NywgOCwgMywgCi0gICAgMjI4LCAxNjYsIDgsIDMsIDIyOCwgMTc0LCA4LCAzLCAyMjgsIDE2OCwgOCwgMywgMjI4LCAxNzAsIDgsIDMsIDIyOCwgMTY5LCAKLSAgICA4LCAzLCAyMjgsIDE3MywgOCwgMywgMjI4LCAxNzEsIDgsIDMsIDIyOCwgMTU2LCA4LCAzLCAyMjgsIDE1NywgOCwgMywgCi0gICAgMjI4LCAxNjIsIDgsIDMsIDIyOCwgMTYxLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjMsIDgsIDMsIDIyOCwgMTUxLCAKLSAgICA4LCAzLCAyMjgsIDE2MCwgOCwgMywgMjI4LCAxNTUsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1MywgOCwgMywgCi0gICAgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE1MCwgOCwgMywgMjI4LCAxNDksIDgsIDMsIDIyOCwgMTQ3LCAKLSAgICA4LCAzLCAyMjgsIDE0OCwgOCwgMywgMjI3LCAxNDEsIDgsIDMsIDIyNywgMTQwLCA4LCAzLCAyMjcsIDE1MiwgOCwgMywgCi0gICAgMjI3LCAxNDUsIDgsIDMsIDIyNywgMTQ5LCA4LCAzLCAyMjcsIDE0OCwgOCwgMywgMjI3LCAxNTEsIDgsIDMsIDIyNywgMTUwLCAKLSAgICA4LCAzLCAyMjcsIDEyOCwgOCwgMywgMjI3LCAxMzAsIDgsIDMsIDIyNywgMTI5LCA4LCAzLCAyMjcsIDEzNCwgOCwgMywgCi0gICAgMjI3LCAxMzMsIDgsIDMsIDIyNywgMTM4LCA4LCAzLCAyMjcsIDEzNSwgOCwgMywgMjI3LCAxMjYsIDgsIDMsIDIyNywgMTI0LCAKLSAgICA4LCAzLCAyMjcsIDEzMiwgOCwgMywgMjI3LCAxMjcsIDgsIDMsIDIxMSwgMTUwLCA4LCAzLCAyMTEsIDE0OSwgOCwgMywgCi0gICAgMjExLCAxNTcsIDgsIDMsIDIxMSwgMTUyLCA4LCAzLCAyMTEsIDE1NCwgOCwgMywgMjExLCAxNTMsIDgsIDMsIDIxMSwgMTU2LCAKLSAgICA4LCAzLCAyMTEsIDE1NSwgOCwgMywgMjExLCAxMzksIDgsIDMsIDIxMSwgMTQwLCA4LCAzLCAyMTEsIDE0NCwgOCwgMywgCi0gICAgMjExLCAxNDMsIDgsIDMsIDIxMSwgMTQ4LCA4LCAzLCAyMTEsIDE0NiwgOCwgMywgMjExLCAxMjEsIDgsIDMsIDIxMSwgMTE5LCAKLSAgICA4LCAzLCAyMTEsIDEzMSwgOCwgMywgMjExLCAxMjQsIDgsIDMsIDIxMSwgMTIyLCA4LCAzLCAyMTEsIDEyMywgOCwgMywgCi0gICAgMjEwLCAyNTAsIDgsIDMsIDIxMCwgMjQ4LCA4LCAzLCAyMTEsIDgsIDgsIDMsIDIxMCwgMjUxLCA4LCAzLCAyMTEsIDIsIDgsIAotICAgIDMsIDIxMSwgMSwgOCwgMywgMjExLCA1LCA4LCAzLCAyMTEsIDMsIDgsIDMsIDIxMCwgMTkxLCA4LCAzLCAyMTAsIDE5MCwgOCwgCi0gICAgMywgMjEwLCAxOTQsIDgsIDMsIDIxMCwgMTkyLCA4LCAzLCAyMTAsIDIyNCwgOCwgMywgMjEwLCAyMjEsIDgsIDMsIDIxMCwgCi0gICAgMjQ0LCA4LCAzLCAyMTAsIDIyOCwgOCwgMywgMjEwLCAxODIsIDgsIDMsIDIxMCwgMTc4LCA4LCAzLCAyMTAsIDIxMiwgOCwgCi0gICAgMywgMjEwLCAxODksIDgsIDMsIDIxMCwgMTg1LCA4LCAzLCAyMTAsIDE4NiwgOCwgMywgMjEwLCAxNjIsIDgsIDMsIDIxMCwgCi0gICAgMTYxLCA4LCAzLCAyMTAsIDE2OSwgOCwgMywgMjEwLCAxNjUsIDgsIDMsIDIxMCwgMTYzLCA4LCAzLCAyMTAsIDE2NCwgOCwgCi0gICAgMzQsIDIyNCwgMzYsIDgsIDM0LCAyMzIsIDI0NywgOCwgMzQsIDIzNCwgNjcsIDgsIDM0LCAyMjcsIDE0NSwgOCwgMzQsIAotICAgIDI0OSwgNzcsIDgsIDM0LCAyMTgsIDE5NCwgOCwgMzQsIDI0MywgMTksIDgsIDM0LCAyNDMsIDUxLCA4LCAzNCwgMjMwLCAKLSAgICAyMzUsIDgsIDM0LCAyNDAsIDE4NywgOCwgMzQsIDIzMiwgNjEsIDgsIDM0LCAyNTIsIDkxLCA4LCAzNCwgMjMwLCAxMzEsIDgsIAotICAgIDM0LCAyMTAsIDI0NCwgOCwgMzQsIDIyNCwgMTI0LCA4LCAzNCwgMjQwLCAxODEsIDgsIDM0LCAyMTcsIDQ3LCA4LCAzNCwgCi0gICAgMjQzLCAxNDIsIDgsIDM0LCAyMTAsIDUsIDgsIDM0LCAyNDksIDcxLCA4LCAzNCwgMjQ4LCAxMDMsIDgsIDM0LCAyNTEsIAotICAgIDEwNiwgOCwgMzQsIDI0MywgMTUsIDgsIDM0LCAyMjcsIDEzNSwgOCwgMzQsIDIxNSwgMTE5LCA4LCAzNCwgMjI2LCAxNzksIAotICAgIDgsIDM0LCAyMzUsIDgwLCA4LCAzNCwgMjEwLCAxOSwgOCwgMzQsIDIyNCwgMTAzLCA4LCAzNCwgMjQxLCAxMTUsIDgsIDM0LCAKLSAgICAyMTAsIDI1MCwgOCwgMzQsIDIxMiwgMTEyLCA4LCAzNCwgMjE5LCAyMDIsIDgsIDM0LCAyMTMsIDI0NCwgOCwgMzQsIDIxMCwgCi0gICAgMTE2LCA4LCAzNCwgMjM1LCA3NCwgOCwgMzQsIDIyNywgMTAwLCA4LCAzNCwgMjM1LCA3OCwgOCwgMzQsIDI0MiwgMTYxLCA4LCAKLSAgICAzNCwgMjM1LCA5OCwgOCwgMzQsIDIxMSwgMjI3LCA4LCAzNCwgMjQ2LCA4NiwgOCwgMzQsIDIxOSwgMjE1LCA4LCAzNCwgCi0gICAgMjMyLCAyNDIsIDgsIDM0LCAyNDksIDgxLCA4LCAzNCwgMjQ5LCAxMTMsIDgsIDM0LCAyNTAsIDQ1LCA4LCAzNCwgMjQwLCAKLSAgICAxODQsIDgsIDM0LCAyMjAsIDc0LCA4LCAzNCwgMjEwLCA0LCA4LCAzNCwgMjIwLCAwLCA4LCAzNCwgMjUwLCAxMzksIDgsIAotICAgIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTc4LCA4LCAzNCwgMjM0LCAxODgsIDIzMiwgMjAyLCAxLCAyNTIsIDE5OSwgCi0gICAgMjMyLCAyMDIsIDEsIDE5MSwgMjMyLCAyMDIsIDEsIDIyNSwgMTUwLCAyMzIsIDIwMiwgMSwgMjQ4LCAyMjksIDIzMiwgMjAyLCAKLSAgICAxLCAyMTcsIDEwNiwgMjMyLCAyMDIsIDEsIDIxNiwgMjA5LCAyMzIsIDIwMiwgMSwgMjQzLCAxNDIsIDIzMiwgMjAyLCAxLCAKLSAgICAxNzYsIDIzMiwgMjAyLCAxLCAyMzQsIDEzOCwgMjMyLCAyMDIsIDEsIDIzNSwgMTQ3LCAyMzIsIDIwMiwgMSwgMjUxLCA0MSwgCi0gICAgMjMyLCAyMDIsIDEsIDI1MCwgMTY1LCAyMzIsIDIwMiwgMSwgMjQ2LCA0NiwgMjMyLCAyMDIsIDEsIDIxNSwgMTg0LCAyMzIsIAotICAgIDIwMiwgMSwgMjE1LCAxNzYsIDIzMiwgMjAyLCAxLCAxODYsIDIzMiwgMjAyLCAxLCAxOTgsIDIzMiwgMjAyLCAxLCAyMzMsIAotICAgIDE0MSwgMjMyLCAyMDIsIDEsIDIwNiwgMjMyLCAyMDIsIDEsIDIxMCwgODIsIDIzMiwgMjAyLCAxLCAyMTAsIDExNiwgMjMyLCAKLSAgICAyMDIsIDEsIDIyOSwgODIsIDIzMiwgMjAyLCAxLCAxNjIsIDIzMiwgMjAyLCAxLCAyMTEsIDE2NSwgMjMyLCAyMDIsIDEsIAotICAgIDI0MSwgMTk2LCAyMzIsIDIwMiwgMSwgMjQ0LCAyMDQsIDIzMiwgMjAyLCAxLCAyMTIsIDY1LCAyMzIsIDIwMiwgMSwgMjIwLCAKLSAgICAxMDQsIDIzMiwgMjAyLCAxLCAxOTIsIDIzMiwgMjAyLCAxLCAyNDMsIDAsIDIzMiwgMjAyLCAxLCA2MSwgMjMyLCAyMDIsIDEsIAotICAgIDI1NCwgMjUyLCAyMzIsIDIwMiwgMSwgNzYsIDIzMiwgMjAyLCAxLCAyNDUsIDYzLCAyMzIsIDIwMiwgMSwgNzQsIDIzMiwgCi0gICAgMjAyLCAxLCA3OCwgMjMyLCAyMDIsIDEsIDY5LCAyMzIsIDIwMiwgMSwgMjE0LCAyMTQsIDIzMiwgMjAyLCAxLCAyMTQsIAotICAgIDIwOCwgMjMyLCAyMDIsIDEsIDIyNiwgMjM4LCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAyMTYsIDExOCwgMjMyLCAKLSAgICAyMDIsIDEsIDEzOCwgMjI5LCAyMzQsIDIyNSwgMTksIDIzMiwgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI0OSwgODAsIDIzMiwgCi0gICAgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI1MSwgMjEzLCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAxOTgsIDIzMiwgMjAyLCAKLSAgICAxLCAxMzgsIDIzMCwgMzcsIDIzNSwgMTIxLCAyMzIsIDIwMiwgMjI0LCAxNDQsIDI0OSwgMjI3LCAyMzIsIDIwMiwgMjI0LCAKLSAgICAxNDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNDEsIDMsIDI0NSwgMjE3LCA0MSwgMywgMjQ1LCAyMTMsIDQxLCAzLCAyNDEsIAotICAgIDIyNywgNDEsIDMsIDIxMiwgMTcsIDQxLCAzLCAyMTIsIDE2LCA0MSwgMywgMjI1LCAyMTQsIDQxLCAzLCAyNTIsIDIxLCA0MSwgCi0gICAgMywgMjUyLCA3NCwgNDEsIDMsIDIzMSwgMTIxLCA0MSwgMywgMjMzLCAyNTMsIDQxLCAzLCAyMzEsIDExLCA0MSwgMywgMjQzLCAKLSAgICA4MiwgNDEsIDMsIDI0NCwgMTU1LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAzLCAyMTcsIDEyLCA0MSwgMywgMjE2LCAxOTUsIAotICAgIDQxLCAzLCAyNDgsIDI0LCA0MSwgMywgMjQ4LCAyMSwgNDEsIDMsIDIzMywgNTYsIDQxLCAzLCAyMjMsIDExMSwgNDEsIDMsIAotICAgIDI0OCwgODUsIDQxLCAzLCAyMjksIDE0NCwgNDEsIDMsIDIyMSwgMTcyLCA0MSwgMywgMjIwLCA2MywgNDEsIDMsIDIxMCwgCi0gICAgOTIsIDQxLCAzLCAyMTAsIDczLCA0MSwgMywgMjUwLCAxOTAsIDQxLCAzLCAyMzUsIDEzMCwgNDEsIDMsIDIyOCwgMTgxLCAKLSAgICA0MSwgMywgMjExLCA0NCwgNDEsIDMsIDIzNCwgMTg3LCA0MSwgMywgMjI5LCA1NiwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKLSAgICAyMzEsIDg1LCA0MSwgMywgMjI5LCAxMDgsIDQxLCAzLCAyMjcsIDE1OSwgNDEsIDMsIDc0LCA0MSwgMywgMjM2LCA2LCA0MSwgCi0gICAgMywgMjQxLCAxODcsIDQxLCAzLCAyNDEsIDE2NywgNDEsIDMsIDIxMSwgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAKLSAgICAyMjUsIDExMSwgNDEsIDMsIDI1MiwgMTksIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjMxLCAxMTQsIDQxLCAzLCAyMzMsIAotICAgIDI1MCwgNDEsIDMsIDIzMSwgOCwgNDEsIDMsIDI0MywgNzgsIDQxLCAzLCAyNDQsIDEyOSwgNDEsIDMsIDIxMywgMTc2LCA0MSwgCi0gICAgMywgMjE2LCAxMTgsIDQxLCAzLCAyMTYsIDE3NiwgNDEsIDMsIDI0OCwgMTYsIDQxLCAzLCAyNDgsIDIwLCA0MSwgMywgMjMyLCAKLSAgICAyNDcsIDQxLCAzLCAyMjMsIDM4LCA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIyOSwgMTM4LCA0MSwgMywgMjE5LCAxOTMsIAotICAgIDQxLCAzLCAyMjAsIDM0LCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgNjksIDQxLCAzLCAyNTAsIDU5LCA0MSwgMywgCi0gICAgMjM1LCAxMTQsIDQxLCAzLCAyMjgsIDE3NCwgNDEsIDMsIDIxMSwgOCwgNDEsIDMsIDIzNCwgOTgsIDQxLCAzLCAyMjksIDQ4LCAKLSAgICA0MSwgMywgMjQyLCAyMjEsIDQxLCAzLCAyMzAsIDIzNSwgNDEsIDMsIDIyOCwgMjM4LCA0MSwgMywgMjI3LCAxNTIsIDQxLCAKLSAgICAzLCA2MSwgNDEsIDMsIDI1NCwgMTMxLCA0MSwgMywgMjI5LCA3NywgNDEsIDMsIDE2MiwgNDEsIDMsIDI0MiwgMjUsIDQxLCAKLSAgICAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDI1MiwgMjYsIDQxLCAzLCAyNTIsIDE5OSwgCi0gICAgNDEsIDMsIDIzMSwgMTI5LCA0MSwgMywgMjM0LCAxLCA0MSwgMywgMjM0LCAwLCA0MSwgMywgMjMxLCAxNSwgNDEsIDMsIAotICAgIDI0MywgODYsIDQxLCAzLCAyNDQsIDIwNCwgNDEsIDMsIDIxNCwgMjcsIDQxLCAzLCAyMTcsIDEwNiwgNDEsIDMsIDIxNiwgCi0gICAgMjA5LCA0MSwgMywgMjQ4LCAzMywgNDEsIDMsIDI0OCwgMjMsIDQxLCAzLCAyMzMsIDE0MSwgNDEsIDMsIDIwNSwgNDEsIDMsIAotICAgIDI0OCwgMjI5LCA0MSwgMywgMjI5LCAxNTMsIDQxLCAzLCAyMDYsIDQxLCAzLCAyMjAsIDEwNCwgNDEsIDMsIDIxMCwgMTE2LCAKLSAgICA0MSwgMywgMjEwLCA4MiwgNDEsIDMsIDI1MSwgNDEsIDQxLCAzLCAyMzUsIDE0NywgNDEsIDMsIDIyOCwgMTkwLCA0MSwgMywgCi0gICAgMTkyLCA0MSwgMywgMTc2LCA0MSwgMywgMjM0LCAyNDAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgMjQzLCAxNDIsIDQxLCAzLCAKLSAgICAxODYsIDQxLCAzLCAxOTgsIDQxLCAzLCAyMjcsIDE2OSwgNDEsIDMsIDIyNiwgMTg3LCA0MSwgMywgMjI2LCAxODMsIDQxLCAKLSAgICAzLCAyNDEsIDYwLCA0MSwgMywgMjExLCAyMTUsIDQxLCAzLCAyMTEsIDIxMSwgNDEsIDMsIDIyNCwgMjUyLCA0MSwgMywgCi0gICAgMjUyLCAxNywgNDEsIDMsIDI1MSwgMjAxLCA0MSwgMywgMjMxLCAxMDksIDQxLCAzLCAyMzMsIDI0OCwgNDEsIDMsIDIzMSwgCi0gICAgNCwgNDEsIDMsIDI0MywgNzQsIDQxLCAzLCAyNDQsIDQyLCA0MSwgMywgMjEzLCAxMjcsIDQxLCAzLCAyMTYsIDE4LCA0MSwgCi0gICAgMywgMjE2LCAxNTQsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjQ4LCAxOCwgNDEsIDMsIDIzMiwgMTMzLCA0MSwgMywgMjIyLCAKLSAgICAxOTksIDQxLCAzLCAyNDcsIDEzMywgNDEsIDMsIDIyOSwgMTI1LCA0MSwgMywgMjE5LCA0MiwgNDEsIDMsIDIyMCwgMywgNDEsIAotICAgIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIDY2LCA0MSwgMywgMjQ5LCAxODIsIDQxLCAzLCAyMzUsIDY1LCA0MSwgMywgMjI4LCAKLSAgICAxNjQsIDQxLCAzLCAyMTAsIDIyOSwgNDEsIDMsIDIzNCwgMTYsIDQxLCAzLCAyMjksIDQ2LCA0MSwgMywgMjQyLCAxNzEsIAotICAgIDQxLCAzLCAyMzAsIDEzNywgNDEsIDMsIDIyOCwgNjksIDQxLCAzLCAyMjcsIDEzNiwgNDEsIDMsIDY5LCA0MSwgMywgMjE0LCAKLSAgICAxOTAsIDQxLCAzLCAyNDAsIDIyOSwgNDEsIDMsIDI0MCwgMjE5LCA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgCi0gICAgNDEsIDMsIDIyNCwgMTUzLCA0MSwgMywgMjUyLCAxNiwgNDEsIDMsIDI1MSwgMTMzLCA0MSwgMywgMjMxLCAxMDgsIDQxLCAzLCAKLSAgICAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgMywgNDEsIDMsIDI0MywgNzMsIDQxLCAzLCAyNDMsIDI0MSwgNDEsIDMsIDIxMiwgCi0gICAgMTE2LCA0MSwgMywgMjE1LCAxMTksIDQxLCAzLCAyMTYsIDEzNywgNDEsIDMsIDI0OCwgMTIsIDQxLCAzLCAyNDgsIDE3LCAKLSAgICA0MSwgMywgMjMyLCAxMDMsIDQxLCAzLCAyMjIsIDE0MiwgNDEsIDMsIDI0NiwgODYsIDQxLCAzLCAyMjksIDEyMCwgNDEsIDMsIAotICAgIDIxOCwgODQsIDQxLCAzLCAyMTksIDIyNywgNDEsIDMsIDIxMCwgMTMsIDQxLCAzLCAyMTAsIDYyLCA0MSwgMywgMjQ5LCAKLSAgICAxMjAsIDQxLCAzLCAyMzUsIDU3LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDIxMiwgNDEsIDMsIDIzMywgMjIzLCAKLSAgICA0MSwgMywgMjI5LCA0NSwgNDEsIDMsIDI0MiwgMTIwLCA0MSwgMywgMjMwLCAxMDcsIDQxLCAzLCAyMjcsIDI0MiwgNDEsIDMsIAotICAgIDIyNywgMTMyLCA0MSwgMywgNzgsIDQxLCAzLCAyMjYsIDIwMCwgNDEsIDMsIDIyOSwgNSwgNDEsIDMsIDI0MSwgNzUsIDQxLCAKLSAgICAzLCAyNDEsIDYzLCA0MSwgMywgMjExLCAyMjcsIDQxLCAzLCAyMTEsIDIxNiwgNDEsIDMsIDIyNSwgMTksIDQxLCAzLCAyNTIsIAotICAgIDE4LCA0MSwgMywgMjUxLCAyMTMsIDQxLCAzLCAyMzEsIDExMCwgNDEsIDMsIDIzMywgMjQ5LCA0MSwgMywgMjMxLCA2LCA0MSwgCi0gICAgMywgMjQzLCA3NiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDUxLCA0MSwgMywgMjEzLCAxMzgsIDQxLCAzLCAxMTIsIAotICAgIDQxLCAzLCAyMTYsIDE1NywgNDEsIDMsIDI0OCwgMTUsIDQxLCAzLCAyNDgsIDE5LCA0MSwgMywgMjMyLCAxNjIsIDQxLCAzLCAKLSAgICAyMjIsIDIxMywgNDEsIDMsIDI0NywgMTUzLCA0MSwgMywgMjI5LCAxMjksIDQxLCAzLCAyMTksIDYwLCA0MSwgMywgMjIwLCAKLSAgICA5LCA0MSwgMywgMjEwLCAyMywgNDEsIDMsIDIxMCwgNjcsIDQxLCAzLCAyNDksIDI0NiwgNDEsIDMsIDIzNSwgNzQsIDQxLCAKLSAgICAzLCAyMjgsIDE2NSwgNDEsIDMsIDIxMCwgMjQ0LCA0MSwgMywgMjM0LCAzNCwgNDEsIDMsIDIyOSwgNDcsIDQxLCAzLCAyNDIsIAotICAgIDE4MSwgNDEsIDMsIDIzMCwgMTY2LCA0MSwgMywgMjI4LCA3OSwgNDEsIDMsIDIyNywgMTM4LCA0MSwgMywgNzYsIDQxLCAzLCAKLSAgICAyNDUsIDE1OCwgNDEsIDMsIDIyOSwgNjYsIDQxLCAzLCAyNDEsIDI0NSwgNDEsIDMsIDI0MSwgMjE2LCA0MSwgMywgMjEyLCAKLSAgICAyMiwgNDEsIDMsIDIxMiwgMTIsIDQxLCAzLCAyMjUsIDIyNCwgNDEsIDMsIDI1MiwgMjIsIDQxLCAzLCAyNTIsIDgzLCA0MSwgCi0gICAgMywgMjMxLCAxMjIsIDQxLCAzLCAyMzMsIDI1NCwgNDEsIDMsIDIzMywgMjUyLCA0MSwgMywgMjMxLCAxMiwgNDEsIDMsIAotICAgIDI0MywgODMsIDQxLCAzLCAyNDMsIDgxLCA0MSwgMywgMjQ0LCAxNjIsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgCi0gICAgMjMsIDQxLCAzLCAyMTYsIDE5NiwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDIyLCA0MSwgMywgMjMzLCA2NCwgNDEsIAotICAgIDMsIDIyMywgMTMxLCA0MSwgMywgMjQ4LCA5OCwgNDEsIDMsIDIyOSwgMTQ1LCA0MSwgMywgMjIxLCAxODMsIDQxLCAzLCAKLSAgICAyMjAsIDY1LCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgNzQsIDQxLCAzLCAyNTAsIDE5OCwgNDEsIDMsIDIzNSwgCi0gICAgMTMyLCA0MSwgMywgMjI4LCAxODMsIDQxLCAzLCAyMTEsIDQ3LCA0MSwgMywgMjM0LCAxODgsIDQxLCAzLCAyMjksIDU3LCAKLSAgICA0MSwgMywgMjI5LCA1MywgNDEsIDMsIDI0MywgNjksIDQxLCAzLCAyNDMsIDU4LCA0MSwgMywgMjMxLCA5NiwgNDEsIDMsIAotICAgIDIyOSwgMTEyLCA0MSwgMywgMjI3LCAxNjAsIDQxLCAzLCAyMjksIDg0LCA0MSwgMywgMjMzLCAyOCwgNDEsIDI0OSwgMjI3LCAKLSAgICA0MSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA0MSwgMjI0LCAxNiwgNzksIDQxLCAzLCAyMjksIDEyOCwgMjQ0LCAyMDQsIDQxLCAKLSAgICAzLCAyMjksIDEyOCwgMTc2LCA0MSwgMywgMjI5LCAxMjgsIDIxOSwgNDIsIDQxLCAxNiwgMjQ0LCAxNTIsIDQxLCAxNiwgCi0gICAgMjM0LCAxODYsIDQxLCAxNiwgMjE2LCA4MiwgNDEsIDE2LCAyMjgsIDIxMywgNDEsIDE2LCAyNTIsIDE1NSwgNDEsIDE2LCAKLSAgICAyNDQsIDIwMywgNDEsIDE2LCAyMTcsIDEwMiwgNDEsIDE2LCAyNDgsIDE4NCwgNDEsIDE2LCAyNDcsIDEzMiwgNDEsIDE2LCAKLSAgICAyMzMsIDIxMiwgNDEsIDE2LCAyMTYsIDIyLCA0MSwgMTYsIDI0NywgMTUyLCA0MSwgMTYsIDIzNSwgNjYsIDQxLCAyMSwgCi0gICAgMjEwLCA4NiwgNDEsIDIxLCAxMTEsIDQxLCAyMSwgMTA1LCA0MSwgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTkwLCAKLSAgICA0MSwgMjEsIDE5NSwgNDEsIDIxLCAxOTksIDQxLCAyMSwgMTk2LCA0MSwgMjEsIDIwMSwgNDEsIDMsIDIyOSwgMTI4LCAxODYsIAotICAgIDQxLCAzLCAyMjksIDEyOCwgMjQ3LCAxNTMsIDMzLCA2LCAxLCAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIAotICAgIDEsIDI0NiwgNDIsIDMzLCA0LCAxLCAyNDYsIDQyLCAzMywgNiwgMSwgMjIzLCA1MiwgMjQ2LCA0NCwgMzMsIDQsIDEsIDIyMywgCi0gICAgNTIsIDI0NiwgNDQsIDMzLCA2LCAxLCAyMzUsIDE5MiwgMzMsIDQsIDEsIDIzNSwgMTkyLCAzMywgNiwgMSwgMjQ3LCAxNjksIAotICAgIDMzLCA0LCAxLCAyNDcsIDE2OSwgMzMsIDYsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQ1LCAKLSAgICAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIDQsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIyOSwgOTIsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMjksIDkyLCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgCi0gICAgMjUyLCAxOTMsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE5MywgMjExLCAzMSwgMzMsIDYsIDEsIAotICAgIDIzNSwgMTkwLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAxOTAsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDUyLCAyMTAsIAotICAgIDIxMiwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgMjEyLCAzMywgNiwgMSwgMjM1LCAxOTAsIDYxLCAzMywgNCwgMSwgMjM1LCAKLSAgICAxOTAsIDYxLCAzMywgNiwgMSwgMjUwLCA4LCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDgsIDIzMiwgCi0gICAgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjIyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjIyLCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAKLSAgICAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCAKLSAgICA2LCAxLCAyMjMsIDUyLCAyMTUsIDE3OSwgMzMsIDQsIDEsIDIyMywgNTIsIDIxNSwgMTc5LCAzMywgNiwgMSwgMjE5LCA1NCwgCi0gICAgMjQ4LCA5OCwgMzMsIDQsIDEsIDIxOSwgNTQsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMTksIDU0LCAyNDUsIDE4MiwgMzMsIDQsIAotICAgIDEsIDIxOSwgNTQsIDI0NSwgMTgyLCAzMywgNiwgMSwgMjE5LCA1NCwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyMTksIDU0LCAKLSAgICAyNDUsIDE2NywgMzMsIDYsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDQsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDYsIDEsIDI1MSwgCi0gICAgMjQ4LCA3OCwgMzMsIDQsIDEsIDI1MSwgMjQ4LCA3OCwgMzMsIDYsIDEsIDUyLCAyMzAsIDE0OSwgNzgsIDMzLCA0LCAxLCAKLSAgICA1MiwgMjMwLCAxNDksIDc4LCAzMywgMSwgMjMwLCA5MSwgNzgsIDM4LCAzMywgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDksIAotICAgIDIzMCwgMTk2LCA1MCwgMzgsIDMzLCAyNDAsIDIxOCwgMjMwLCAxOTYsIDUwLCAzOCwgMzMsIDIxNiwgMTQ5LCAyMzAsIDE5NiwgCi0gICAgNTAsIDIxOSwgOTUsIDI1MywgMjI0LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDc0LCAzOCwgCi0gICAgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA2OSwgMzgsIDMzLCAxLCAyNDIsIDEwLCA1MCwgMzgsIDMzLCAxLCAyMTEsIDI3LCAKLSAgICAzOCwgMzMsIDEsIDIxOSwgNTQsIDUwLCAzOCwgMzMsIDEsIDIyNiwgMjA1LCAzOCwgMzMsIDIzNCwgMTk4LCAzOCwgMzMsIAotICAgIDIyNSwgMjMxLCAzMywgMjM0LCAxOTgsIDMzLCAyMjUsIDIzMSwgMzMsIDYsIDEsIDI0NiwgNTQsIDMzLCA0LCAxLCAyNDYsIAotICAgIDU0LCAzMywgNiwgMSwgMjQ2LCAzNSwgMzMsIDQsIDEsIDI0NiwgMzUsIDMzLCA2LCAxLCAyMTAsIDUyLCAzMywgNCwgMSwgCi0gICAgMjEwLCA1MiwgMzMsIDYsIDEsIDI1MCwgMjE0LCAzMywgNCwgMSwgMjUwLCAyMTQsIDMzLCA2LCAxLCAyNDYsIDMzLCAzMywgCi0gICAgNCwgMSwgMjQ2LCAzMywgMzMsIDYsIDEsIDIxNywgMjQsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMTcsIDI0LCAyLCAKLSAgICAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjE1LCA3OCwgMzMsIDQsIDEsIDIxNSwgNzgsIDMzLCA2LCAxLCAyMTUsIDE2MSwgCi0gICAgMzMsIDQsIDEsIDIxNSwgMTYxLCAzMywgNiwgMSwgMjE1LCAxNjUsIDMzLCA0LCAxLCAyMTUsIDE2NSwgMzMsIDYsIDEsIAotICAgIDIxNywgMjksIDMzLCA0LCAxLCAyMTcsIDI5LCAzMywgNiwgMSwgMjQwLCAyMDUsIDMzLCA0LCAxLCAyNDAsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIxOSwgMjA4LCAzMywgNCwgMSwgMjE5LCAyMDgsIDM4LCAzMywgMSwgMjM1LCAxOTAsIDc2LCAyMCwgMSwgNjEsIAotICAgIDIwLCAxLCAxNzYsIDIwLCAxLCA2OSwgMjAsIDEsIDIzMywgMjIzLCAyMCwgMSwgMjQ1LCAyMTcsIDIwLCAxLCAyMjMsIDExMSwgCi0gICAgMjAsIDEsIDIxNywgODcsIDIwLCAxLCA3OCwgMjAsIDEsIDIyNywgMTUyLCAyMCwgMSwgNzQsIDIwLCAxLCAyMzMsIDE0MSwgCi0gICAgMjAsIDEsIDE5MSwgMjAsIDEsIDIyMiwgMjQyLCAyMCwgMSwgMjIzLCAzMiwgMjAsIDEsIDIzMywgNTUsIDIwLCAxLCAyMzEsIAotICAgIDg0LCAyMCwgMSwgMjE3LCAxMDIsIDIwLCAxLCAyMjksIDE1MSwgMjAsIDEsIDIyOCwgMTg4LCAyMCwgMSwgMTk0LCAyMCwgMSwgCi0gICAgMjE4LCA1LCAyMCwgMSwgMjMwLCAxMDcsIDIwLCAxLCAyMjAsIDI5LCAyMCwgMSwgMjE5LCAxOTMsIDIwLCAxLCAyMjAsIDM5LCAKLSAgICAyMCwgMSwgMjIwLCAxMjUsIDIwLCAxLCAyMzMsIDE2MSwgMjAsIDEsIDIzNCwgMTYyLCAyMCwgMSwgMjI3LCAyMTMsIDIwLCAKLSAgICAxLCAyMjcsIDI0MiwgMjAsIDEsIDIyOCwgMTU5LCAyMCwgMSwgMjEwLCAyMjYsIDIwLCAxLCAyMTksIDIyNywgMjAsIDEsIAotICAgIDIxMCwgMTg3LCAyMCwgMSwgMTkyLCAyMCwgMSwgMjI4LCAxNCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI1LCAxNTQsIAotICAgIDIwLCAxLCAyMjgsIDE4MSwgMjAsIDEsIDIyNywgMjUxLCAyMCwgMSwgMjI0LCAxNDcsIDIwLCAxLCAyMTEsIDE5MiwgMjAsIAotICAgIDEsIDIyNSwgMjE0LCAyMCwgMSwgMjQ0LCAxNTUsIDIwLCAxLCAyMjIsIDE0MiwgMjAsIDEsIDIzMiwgMTAzLCAyMCwgMSwgCi0gICAgMjMwLCAyMzUsIDIwLCAxLCAyMjgsIDIzOCwgMjAsIDEsIDIyMywgNTQsIDIwLCAxLCAyMjMsIDE3NCwgMjAsIDEsIDIzNCwgCi0gICAgMTcxLCAyMCwgMSwgMjI5LCAxMiwgMjAsIDEsIDIyOSwgNjEsIDIwLCAxLCAyMjksIDgyLCAyMCwgMSwgMjIwLCA5LCAyMCwgCi0gICAgMSwgMjI0LCAxNTAsIDIwLCAxLCAyNDMsIDI0MSwgMjAsIDEsIDI0NCwgNDUsIDIwLCAxLCAyMTIsIDY1LCAyMCwgMSwgMTk4LCAKLSAgICAyMCwgMSwgMjMyLCAyNDcsIDIwLCAxLCAyMjUsIDExMSwgMjAsIDEsIDIzMiwgMTI1LCAyMCwgMSwgMjM0LCAzNCwgMjAsIDEsIAotICAgIDIzMSwgMTE5LCAyMCwgMSwgMjIzLCA4NiwgMjAsIDEsIDIzMSwgNjMsIDIwLCAxLCAxODYsIDIwLCAxLCAyMTYsIDExOCwgCi0gICAgMjAsIDEsIDIzNCwgOTgsIDIwLCAxLCAyMzAsIDE2NiwgMjAsIDEsIDIzMSwgMTI3LCAyMCwgMSwgMjE2LCAyMzEsIDIwLCAxLCAKLSAgICAyMzQsIDEsIDIwLCAxLCAyMTYsIDI0OCwgMjAsIDEsIDIyNywgMjQzLCAyMCwgMSwgMjIxLCAyNTMsIDIwLCAxLCAyNDQsIAotICAgIDIwMCwgMjAsIDEsIDIzNCwgMywgMjAsIDEsIDIzNCwgMzAsIDIwLCAzOCwgMTY0LCAyMzQsIDExLCAyMCwgMzgsIDE2NCwgCi0gICAgMjE1LCAxMTEsIDIwLCAyMjgsIDE4NywgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjAsIDI0OSwgMjM0LCAyMCwgMjQ5LCAKLSAgICAyMjcsIDIwLCAyMjAsIDE1MiwgMjAsIDIyNCwgMTYsIDc5LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyNSwgCi0gICAgNjQsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjUsIDY0LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAKLSAgICAyNTQsIDIyMCwgODYsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjAsIDg2LCA1OCwgMSwgMjUwLCAxMDQsIAotICAgIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzMsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjQsIDMzLCA1OCwgMSwgCi0gICAgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyMiwgMTQyLCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjExLCA3MCwgMjIyLCAKLSAgICAxNDIsIDU4LCAxLCAyNDUsIDI4LCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgMTI2LCAxMzgsIDEzMCwgCi0gICAgNTgsIDEsIDIzMCwgMjMwLCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIAotICAgIDEsIDI0NSwgMjcsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjgsIDI0NiwgMTI2LCAyMzMsIDQ1LCAxMzgsIAotICAgIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDI0NiwgMTI2LCAKLSAgICAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAKLSAgICAyNywgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyOCwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAxMjUsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgCi0gICAgMTIxLCAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgNTksIDY3LCAKLSAgICAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NywgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIDIzMiwgMTE0LCA0NCwgMjQ5LCAKLSAgICAxNjksIDI1NCwgMTE3LCA1OCwgMSwgMjIzLCAxNjAsIDEyMCwgNzUsIDU4LCAxLCAyMjMsIDE2MCwgMTI0LCA3NSwgNTgsIDEsIAotICAgIDIyMywgMTYwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIyMywgMTYwLCAyMzUsIDIwMCwgMjQ1LCAzOSwgNzksIDU4LCAxLCAKLSAgICAxMjEsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIxOCwgMTEzLCAyMiwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgCi0gICAgMjE4LCAxMTMsIDIyLCAxMjEsIDIxNiwgMzEsIDcsIDYsIDEsIDI0NSwgMjA3LCAyNTQsIDE3OSwgNywgNCwgMSwgMjQ1LCAKLSAgICAyMDcsIDI1NCwgMTc5LCA3LCA2LCAxLCAyNDUsIDIwNywgMjU0LCAyMDUsIDcsIDQsIDEsIDI0NSwgMjA3LCAyNTQsIDIwNSwgCi0gICAgNywgNiwgMSwgMjQxLCAyMTQsIDcsIDQsIDEsIDI0MSwgMjE0LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCA0LCAxLCAyMTUsIDQwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDIzMCwgNywgNCwgMSwgMjE1LCAyMzAsIDcsIDYsIDEsIDI0OSwgMTE4LCA3LCA0LCAxLCAyNDksIAotICAgIDExOCwgNywgNiwgMSwgMjQ5LCAxMTksIDIsIDI0OSwgMjI3LCA3LCA0LCAxLCAyNDksIDExOSwgMiwgMjQ5LCAyMjcsIDcsIAotICAgIDEsIDQsIDYsIDI0NSwgMTQsIDcsIDEsIDQsIDYsIDIyMiwgOTMsIDcsIDYsIDEsIDI1NSwgODIsIDcsIDQsIDEsIDI1NSwgCi0gICAgODIsIDcsIDYsIDEsIDI1NCwgODEsIDcsIDQsIDEsIDI1NCwgODEsIDcsIDYsIDEsIDI1MywgMjAwLCA3LCA0LCAxLCAyNTMsIAotICAgIDIwMCwgNywgNiwgMSwgMjUzLCAxODQsIDcsIDQsIDEsIDI1MywgMTg0LCA3LCA2LCAxLCAyNTMsIDE4NSwgMiwgMjAzLCAKLSAgICAxMzAsIDcsIDQsIDEsIDI1MywgMTg1LCAyLCAyMDMsIDEzMCwgNywgNiwgMSwgMjUzLCAxNzUsIDcsIDQsIDEsIDI1MywgCi0gICAgMTc1LCA3LCA2LCAxLCAyMjMsIDUyLCAyNTEsIDc1LCAyLCAyNDcsIDEyOCwgNywgNCwgMSwgMjIzLCA1MiwgMjUxLCA3NSwgCi0gICAgMiwgMjQ3LCAxMjgsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNiwgMSwgMjM1LCAKLSAgICAzMCwgMiwgMjE4LCAxMDUsIDIyLCAyNDgsIDcsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMTgsIDEwNSwgMjIsIDI0OCwgCi0gICAgNywgOTEsIDcsIDYsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDQsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDYsIDEsIDIzMywgMTU1LCAKLSAgICAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgCi0gICAgMTA1LCAyMjYsIDEyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgMTA1LCAyMjYsIDEyNCwgNywgNiwgMSwgMTQ0LCAyLCAKLSAgICAyMzIsIDEyOSwgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyOSwgNywgNiwgMSwgMjI2LCAxODcsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTg3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjYsIAotICAgIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjQ0LCA2MSwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDI0NCwgNjEsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAyMTgsIDIzMSwgMjE3LCA3OCwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDIxOCwgMjMxLCAyMTcsIDc4LCA3LCA2LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgCi0gICAgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAKLSAgICAyMjQsIDEwMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjI0LCAxMDAsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDIyMywgCi0gICAgMjI3LCAyMjIsIDE4OCwgNywgNCwgMSwgMjIzLCAyMjcsIDIyMiwgMTg4LCA3LCA2LCAxLCAyMjIsIDEzMiwgMjIyLCAxODgsIAotICAgIDcsIDQsIDEsIDIyMiwgMTMyLCAyMjIsIDE4OCwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCAyNDgsIDcsIDkxLCA3LCA2LCAxLCAyMTIsIDEwNiwgNywgNCwgMSwgMjEyLCAxMDYsIDcsIDYsIDEsIAotICAgIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNCwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA2LCAxLCAyMTYsIDE1MywgMiwgCi0gICAgOTEsIDcsIDQsIDEsIDIxNiwgMTUzLCAyLCA5MSwgNywgNiwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgMjQ4LCA0NywgNywgNiwgMSwgMjEzLCAKLSAgICAyNDUsIDcsIDQsIDEsIDIxMywgMjQ1LCA3LCA2LCAxLCAyNDUsIDczLCA3LCA0LCAxLCAyNDUsIDczLCA3LCA2LCAxLCAyMzUsIAotICAgIDE3OCwgNywgNCwgMSwgMjM1LCAxNzgsIDcsIDYsIDEsIDI0OSwgMjE1LCA3LCA0LCAxLCAyNDksIDIxNSwgNTgsIDEsIDIxNCwgCi0gICAgMTMzLCA3LCA0LCAxLCAyNDYsIDc3LCA3LCA0LCAxLCAyMzIsIDg5LCA3LCA0LCAxLCAyMzAsIDg1LCA3LCA0LCAxLCAyMjcsIAotICAgIDIwNSwgNywgNCwgMSwgMjIyLCAxMzEsIDcsIDEsIDQsIDYsIDIyMiwgMTMxLCA3LCA0LCAxLCAyMTUsIDEwOSwgNywgNCwgMSwgCi0gICAgMjE0LCAxOTcsIDcsIDYsIDEsIDIzNSwgMjIwLCAyNDksIDY4LCA3LCA0LCAxLCAyMzUsIDIyMCwgMjQ5LCA2OCwgNywgNiwgCi0gICAgMSwgMjM1LCAyMjAsIDI0NSwgMTQsIDcsIDQsIDEsIDIzNSwgMjIwLCAyNDUsIDE0LCA3LCA2LCAxLCAyMzUsIDIyMCwgMjQzLCAKLSAgICAyMDksIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE1LCA5NCwgMjM1LCAyMjAsIAotICAgIDI0MywgMjA5LCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIDE1NiwgNywgNiwgMSwgMjM1LCAKLSAgICAyMjAsIDE1MywgNywgNCwgMSwgMjM1LCAyMjAsIDE1MywgNywgNiwgMSwgMjM1LCAyMjAsIDIyMiwgOTMsIDcsIDQsIDEsIAotICAgIDIzNSwgMjIwLCAyMjIsIDkzLCA3LCA2LCAxLCAyMzUsIDIyMCwgMjE3LCAxNTMsIDcsIDQsIDEsIDIzNSwgMjIwLCAyMTcsIAotICAgIDE1MywgNTgsIDEsIDEyMSwgMjUwLCAzOSwgMjU1LCAyMywgNTgsIDEsIDI0OSwgMjM0LCA1OCwgMSwgMjE5LCAyNTMsIDI0NSwgCi0gICAgMTA2LCA1MCwgNywgNiwgMSwgMjIyLCAxLCA3LCA0LCAxLCAyMjIsIDEsIDcsIDYsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIDcsIAotICAgIDQsIDEsIDIzMywgMTU1LCAyLCAyMjMsIDU4LCAyNDEsIDU5LCAyMiwgMjUyLCA0OSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQ4LCA0NywgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTMwLCA3LCA0LCAxLCAKLSAgICAyNTEsIDc1LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAKLSAgICAyLCAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgCi0gICAgMjI2LCAyNTIsIDkxLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjI2LCAyNTIsIDkxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjgsIDIsIDkxLCA1OCwgMSwgCi0gICAgNCwgMjcsIDIyNiwgMjM4LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTQsIDcsIDI0NSwgMTExLCAxLCAyMjMsIDUyLCAyNDUsIAotICAgIDE0LCA3LCAyNDUsIDExMSwgMSwgMjIzLCA1MiwgMjI2LCAxMDksIDcsIDI0NSwgMTExLCAxLCAyMzUsIDIwMCwgMTk0LCA3LCAKLSAgICAyNDUsIDExMSwgMSwgMjQwLCAxNjEsIDIzMiwgMTM1LCA3LCAyNDUsIDExMSwgMSwgMjU0LCAzMSwgMTk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDYxLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDc0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDUsIDI0NiwgCi0gICAgNTYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNjksIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNzYsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgNzgsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjQyLCA0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIzNCwgCi0gICAgMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM0LCAxMTEsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAxODEsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAyMzEsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjU0LCA4MywgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDksIDI0NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNTAsIDk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDIzNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM1LCAxMTUsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgMjE1LCAxMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE1LCAxNDAsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgCi0gICAgMjQ4LCAxMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQ4LCAxMjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMTEyLCAKLSAgICAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIxNiwgMTU3LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI0NywgMTUzLCAyMTcsIAotICAgIDIzMSwgMjI5LCAyMTksIDEsIDI0OCwgMTUsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjI4LCA3OSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAxLCAyMjUsIDE5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIyNSwgMTI0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIAotICAgIDI1MSwgMjEzLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI1MiwgMTgsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMwLCAKLSAgICAxNjYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAyMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMyLCAxNjIsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAxNjcsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE5LCA2MCwgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDEsIDc1LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCA2MSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAyNSwgNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMjUsIDUsIDY5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCAKLSAgICA3NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyNSwgNSwgMjI2LCAxODcsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgCi0gICAgMjMxLCAxNjMsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAKLSAgICAxNSwgMjMxLCAxNjEsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjAsIDIyOCwgNjEsIDIzNSwgMjQ3LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIyOCwgNjEsIAotICAgIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDIxOSwgCi0gICAgMTE5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjQ0LCAxMCwgMTIzLCAyNDUsIDE5NiwgMjI4LCA2MSwgMjM1LCAyNDcsIDI0NCwgCi0gICAgMTAsIDEzNCwgMjE5LCAxMTgsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyMjQsIDI1LCA3OSwgMjI4LCA2MSwgMjM1LCAyNDcsIAotICAgIDIyNSwgNDMsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjIyLCAxMjAsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjI0LCAyNiwgCi0gICAgNzksIDIyNSwgMTQ3LCAxLCAxNzYsIDIyNSwgMTQ3LCAxLCAyMzQsIDEzOCwgMjI1LCAxNDcsIDEsIDI0MywgMTQyLCAyMjUsIAotICAgIDE0NywgMSwgMjI5LCA4MiwgMjI1LCAxNDcsIDEsIDI1MSwgNDEsIDIyNSwgMTQ3LCAxLCAyNTAsIDE2NSwgMjI1LCAxNDcsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjUsIDE0NywgMSwgMjI3LCAxNjksIDIyNSwgMTQ3LCAxLCAyMTcsIDEwNiwgMjI1LCAxNDcsIDEsIAotICAgIDIxNiwgMjA5LCAyMjUsIDE0NywgMSwgMjQ4LCAyMjksIDIyNSwgMTQ3LCAxLCAxOTgsIDIyNSwgMTQ3LCAxLCAxOTEsIDIyNSwgCi0gICAgMTQ3LCAxLCAyMjUsIDE1MCwgMjI1LCAxNDcsIDEsIDI1MiwgMTk5LCAyMjUsIDE0NywgMSwgMTg2LCAyMjUsIDE0NywgMSwgCi0gICAgMjE1LCAxODQsIDIyNSwgMTQ3LCAxLCAyMTUsIDE3NiwgMjI1LCAxNDcsIDEsIDI0NiwgNDYsIDIyNSwgMTQ3LCAxLCAyMTIsIAotICAgIDY1LCAyMjUsIDE0NywgMSwgMjEwLCA4MiwgMjI1LCAxNDcsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NywgMSwgNCwgNjEsIDIyNSwgCi0gICAgMTQ3LCAxLCAxOTIsIDIyNSwgMTQ3LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAyMzMsIDE0MSwgMjI1LCAxNDcsIDEsIDIyMCwgCi0gICAgMTA0LCAyMjUsIDE0NywgMSwgMjA2LCAyMjUsIDE0NywgMSwgMTYyLCAyMjUsIDE0NywgMSwgNjEsIDIyNSwgMTQ3LCAxLCAKLSAgICA3NCwgMjI1LCAxNDcsIDEsIDY5LCAyMjUsIDE0NywgMSwgNzYsIDIyNSwgMTQ3LCAxLCA3OCwgMjI1LCAxNDcsIDEsIDIyNCwgCi0gICAgOTEsIDIyNSwgMTQ3LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDcsIDEsIDI0NCwgMjA0LCAyMjUsIDE0NywgMSwgMjQzLCAzNiwgCi0gICAgMjI1LCAxNDcsIDEsIDI0NSwgMjE3LCAyMjUsIDE0NywgMjE4LCA3NCwgMSwgMjEyLCA2NSwgMjI1LCAxNDcsIDIxOCwgNzQsIAotICAgIDEsIDE5MiwgMjI1LCAxNDcsIDEsIDIxNSwgMTU3LCAyMjUsIDE0NywgMSwgMjE1LCAxNDUsIDIyNSwgMTQ3LCAxLCAyNDgsIAotICAgIDE0MywgMjI1LCAxNDcsIDEsIDIyOCwgMTE1LCAyMjUsIDE0NywgMSwgMjU0LCAxNDksIDE5MiwgMjI1LCAxNDcsIDEsIDIxMywgCi0gICAgMTM0LCAyMjAsIDEwNCwgMjI1LCAxNDcsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ3LCAxLCAyNTMsIDIzMSwgMjQ0LCAKLSAgICAyMDQsIDIyNSwgMTQ3LCAyMTgsIDc0LCAxLCAyMDUsIDIyNSwgMTQ3LCAyMTgsIDI2LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAKLSAgICAyNTEsIDcsIDIyNSwgMTQ3LCAyMTksIDE1NywgMjQxLCAyNDMsIDc5LCAyMjUsIDE0NywgNTIsIDI0MSwgMjQzLCA3OSwgCi0gICAgMjI1LCAxNDcsIDE2NCwgMjIwLCA5NywgMjI1LCAxNDcsIDE2NCwgNTIsIDIyMCwgOTcsIDE3OSwgNSwgMjU0LCA4MywgMTc5LCAKLSAgICA1LCAyMTMsIDE0NywgMTc5LCAxLCA2MSwgMTc5LCAxLCAyNTUsIDgyLCAxNzksIDEsIDc0LCAxNzksIDEsIDIzNiwgNDAsIAotICAgIDE3OSwgMSwgNjksIDE3OSwgMSwgMjE0LCAxMTgsIDE3OSwgMSwgMTQ5LCAxNTMsIDE3OSwgMSwgMTQ5LCAyMjIsIDE4MiwgCi0gICAgMTc5LCAxLCAxNDksIDE1NiwgMTc5LCAxLCAxNDksIDIzMiwgMTkxLCAxNzksIDEsIDc2LCAxNzksIDEsIDI0NSwgMjE3LCAKLSAgICAxNzksIDEsIDI1NCwgMjEwLCAxNzksIDEsIDc4LCAxNzksIDEsIDIyNiwgMTg3LCAxNzksIDEsIDI1MywgMjAwLCAxNzksIDEsIAotICAgIDE3NiwgMTc5LCAxLCAyMzQsIDEzOCwgMTc5LCAxLCAyNDMsIDE0MiwgMTc5LCAxLCAyNDMsIDAsIDE3OSwgMSwgMjI5LCA4MiwgCi0gICAgMTc5LCAxLCAyNTEsIDQxLCAxNzksIDEsIDI1MCwgMTY1LCAxNzksIDEsIDIzNSwgMTQ3LCAxNzksIDEsIDIzNSwgMTIwLCAKLSAgICAxNzksIDEsIDIyNywgMTY5LCAxNzksIDEsIDIxNSwgMTU3LCAxNzksIDEsIDIxNSwgMTQ1LCAxNzksIDEsIDI0OCwgMTQzLCAKLSAgICAxNzksIDEsIDI0OCwgMTI3LCAxNzksIDEsIDIyOCwgMTE1LCAxNzksIDEsIDIxNywgMTA2LCAxNzksIDEsIDIxNiwgMjA5LCAKLSAgICAxNzksIDEsIDI0OCwgMjI5LCAxNzksIDEsIDI0OCwgMzMsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDE5MSwgMTc5LCAxLCAyMjUsIAotICAgIDE1MCwgMTc5LCAxLCAyNTIsIDE5OSwgMTc5LCAxLCAyNTIsIDI2LCAxNzksIDEsIDE4NiwgMTc5LCAxLCAxOTIsIDE3OSwgMSwgCi0gICAgMjA1LCAxNzksIDEsIDIzMywgMTQxLCAxNzksIDEsIDIxNCwgMjcsIDE3OSwgMSwgMjIwLCAxMDQsIDE3OSwgMSwgMjE4LCAKLSAgICAyMjUsIDE3OSwgMSwgMjA2LCAxNzksIDEsIDE2MiwgMTc5LCAxLCAyMzIsIDE5MCwgMTc5LCAxMTcsIDUsIDI0MiwgNTEsIAotICAgIDE3OSwgMjUsIDUsIDI1NSwgODIsIDE3OSwgMjUsIDUsIDc0LCAxNzksIDI1LCA1LCAyMzYsIDQwLCAxNzksIDI1LCA1LCA2OSwgCi0gICAgMTc5LCAyNSwgNSwgMjE0LCAxMTgsIDE3OSwgMjUsIDUsIDE0OSwgMTUzLCAxNzksIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNzksIDI1LCA1LCAxNDksIDE1NiwgMTc5LCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTc5LCAyNSwgNSwgNzYsIDE3OSwgMjUsIAotICAgIDUsIDI0NSwgMjE3LCAxNzksIDI1LCA1LCAyNTQsIDIxMCwgMTc5LCAyNSwgNSwgNzgsIDE3OSwgMjUsIDUsIDIyNiwgMTg3LCAKLSAgICAxNzksIDI1LCA1LCAyNTMsIDIwMCwgMTc5LCA1LCAyMTMsIDE1MiwgMTc5LCAyNDgsIDE4NiwgMTc5LCA1MiwgMjQ4LCAxODYsIAotICAgIDE3OSwgMjEsIDIxMCwgODYsIDE3OSwgMjEsIDExMSwgMTc5LCAyMSwgMTA1LCAxNzksIDIxLCAxNTgsIDE3OSwgMjEsIDE2MSwgCi0gICAgMTc5LCAyMSwgMTkwLCAxNzksIDIxLCAxOTUsIDE3OSwgMjEsIDE5OSwgMTc5LCAyMSwgMTk2LCAxNzksIDIxLCAyMDEsIDM4LCAKLSAgICA4NCwgMjEsIDIxMCwgODYsIDM4LCA4NCwgMjEsIDExMSwgMzgsIDg0LCAyMSwgMTA1LCAzOCwgODQsIDIxLCAxNTgsIDM4LCAKLSAgICA4NCwgMjEsIDE2MSwgMzgsIDg0LCAyMSwgMTkwLCAzOCwgODQsIDIxLCAxOTUsIDM4LCA4NCwgMjEsIDE5OSwgMzgsIDg0LCAKLSAgICAyMSwgMTk2LCAzOCwgODQsIDIxLCAyMDEsIDM4LCA4NCwgMSwgNjEsIDM4LCA4NCwgMSwgNjksIDM4LCA4NCwgMSwgMTc2LCAKLSAgICAzOCwgODQsIDEsIDE5OCwgMzgsIDg0LCAxLCAxOTEsIDM4LCA4NCwgMSwgMjA1LCAzOCwgODQsIDEsIDIxMywgMTc2LCAzOCwgCi0gICAgODQsIDUsIDI1MywgMTgzLCA4NCwgNSwgMjE5LCAxOSwgMjUxLCA3LCA4NCwgNSwgMjUxLCA4LCAyMTMsIDE1MiwgODQsIDUsIAotICAgIDUyLCAyNTEsIDgsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCA4LCAxMDUsIDg0LCA1LCAyNTEsIDgsIDE1OCwgODQsIDUsIDI1MSwgCi0gICAgOCwgMjUzLCAxODMsIDg0LCA1LCAyMjQsIDEyNywgODQsIDI0MywgMTA3LCAyNDQsIDExMSwgODQsIDI1MCwgMjQ2LCA4NCwgCi0gICAgMjQxLCAyMzcsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDIxMCwgODYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDExMSwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTA1LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxNTgsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMjEsIDE2MSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTkwLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxOTUsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDE5OSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTk2LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDIxLCAyMDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMTc2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIzNCwgCi0gICAgMTM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MywgMTQyLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyOSwgODIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyMCwgMTA0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIxMCwgMTE2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNywgMTY5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDIxNywgMTA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MCwgMjMzLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDE5OCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI1LCAxNTAsIDIzNCwgCi0gICAgMTk0LCAyMzIsIDI0OCwgMSwgMTg2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0OCwgMjI5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDI1MiwgMTk5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIwNSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjMzLCAxNDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjEyLCA2NSwgMjM0LCAKLSAgICAxOTQsIDIzMiwgMjQ4LCAxLCAyMTYsIDIwOSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxNjIsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMSwgMjE0LCAyNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyNTEsIDQxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDYxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNiwgMjM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDc0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIyNiwgMTg3LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyMTQsIDIxNCwgMjM0LCAxOTQsIDIzMiwgCi0gICAgMjQ4LCAyNSwgNzYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjUsIDY5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyNDUsIAotICAgIDIxNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyNSwgNzgsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMTM4LCAyMjUsIDMzLCAyMzQsIAotICAgIDE5NCwgMjMyLCAyNDgsIDEzOCwgMjUxLCAyMCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxMzgsIDI1MSwgMjEsIDIyNSwgMzMsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgNSwgMjQ5LCA4NSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCA1LCAyMTksIDIwMSwgMjIzLCA5NiwgCi0gICAgMSwgMTc2LCAyMjMsIDk2LCAxLCAyNDMsIDE0MiwgMjIzLCA5NiwgMSwgMjI5LCA4MiwgMjIzLCA5NiwgMSwgMjE3LCAxMDYsIAotICAgIDIyMywgOTYsIDEsIDI0OCwgMjI5LCAyMjMsIDk2LCAxLCAxOTgsIDIyMywgOTYsIDEsIDE5MSwgMjIzLCA5NiwgMSwgMjUyLCAKLSAgICAxOTksIDIyMywgOTYsIDEsIDE4NiwgMjIzLCA5NiwgMSwgMjUxLCA0MSwgMjIzLCA5NiwgMSwgMjM1LCAxNDcsIDIyMywgOTYsIAotICAgIDEsIDIyNywgMTY5LCAyMjMsIDk2LCAxLCAyMDYsIDIyMywgOTYsIDEsIDIwNSwgMjIzLCA5NiwgMSwgMjMzLCAxNDEsIDIyMywgCi0gICAgOTYsIDEsIDE5MiwgMjIzLCA5NiwgMSwgMjEyLCA2NSwgMjIzLCA5NiwgMSwgMTYyLCAyMjMsIDk2LCAxLCAyMzEsIDEyOSwgCi0gICAgMjIzLCA5NiwgMSwgMjI5LCA2MSwgMjIzLCA5NiwgMSwgMjI5LCAxNTMsIDIyMywgOTYsIDEsIDIyNywgMTM5LCAyMjMsIDk2LCAKLSAgICAxLCA2MSwgMjIzLCA5NiwgMjUsIDUsIDc0LCAyMjMsIDk2LCAyNSwgNSwgNjksIDIyMywgOTYsIDI1LCA1LCA3NiwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI1NCwgMjEwLCAyMjMsIDk2LCAyNSwgNSwgNzgsIDIyMywgOTYsIDI1LCA1LCAyNTMsIDIwMCwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI0NSwgNjMsIDIyMywgOTYsIDI1LCA1LCAyNDUsIDI0MSwgMjIzLCA5NiwgMTE3LCA1LCAyMjksIDg0LCAKLSAgICAyMjMsIDk2LCAxMTcsIDUsIDIzMCwgMzAsIDIyMywgOTYsIDExNywgNSwgMTUzLCAyMjMsIDk2LCAxMTcsIDUsIDI0MiwgNjcsIAotICAgIDIyMywgOTYsIDIxMywgMTUyLCAyMjMsIDk2LCAyMjEsIDE3NSwgNzksIDI0LCAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIxNiwgCi0gICAgOTcsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDIxNiwgMTAwLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgMTAwLCAyMjMsIAotICAgIDgsIDI0LCAxMDAsIDIyMywgMywgMjQsIDEwMCwgMjIzLCA1LCAyNCwgMTAwLCAyMjMsIDIxLCAyNCwgMTAwLCAyMjMsIDE0LCAKLSAgICAyNCwgMTAwLCAyMjMsIDcsIDI0LCAxMDAsIDIyMywgMjYsIDI0LCAxMDAsIDIyMywgOSwgMjQsIDEwMCwgMjIzLCAyOCwgMjQsIAotICAgIDEwMCwgMjIzLCAyNSwgMjQsIDEwMCwgMjMwLCAyMTgsIDI0LCAxMDAsIDIzMCwgMjA5LCAyNCwgMTAwLCAyMzAsIDIxMiwgCi0gICAgMjQsIDEwMCwgMjI1LCA4MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA5NSwgMjQsIDEwMCwgMjE4LCAyMDksIAotICAgIDI0LCAxMDAsIDIzNiwgNTMsIDI0LCAxMDAsIDIzNiwgNjAsIDI0LCAxMDAsIDIxOCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIwNywgCi0gICAgMjQsIDEwMCwgMjI1LCAxMzMsIDI0LCAxMDAsIDI0MSwgMTc0LCAyNCwgMTAwLCAyMTgsIDIwNCwgMTU1LCA1LCAyMjYsIDMxLCAKLSAgICAxNTUsIDUsIDI1MCwgMTk1LCAxNTUsIDUsIDIzMywgNzIsIDE1NSwgNSwgMjExLCAyNDMsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjQwLCAxNjEsIDIzNCwgMTk3LCAxNTUsIDEsIDc0LCAxNTUsIDEsIDIzNiwgNDAsIDE1NSwgMSwgNjksIDE1NSwgMSwgMjI2LCAKLSAgICA5NCwgMjUwLCAxNzEsIDE1NSwgMSwgMjI5LCA4MywgMjMzLCAzNCwgMTU1LCAxLCAyMjksIDgzLCAyMzMsIDM1LCAyMjMsIAotICAgIDE0NSwgMTU1LCAxLCA3NiwgMTU1LCAxLCAyNTQsIDIxMCwgMTU1LCAxLCA3OCwgMTU1LCAxLCAxNzYsIDE1NSwgMSwgMjM1LCAKLSAgICAxOSwgMjIxLCAyMzAsIDE1NSwgMSwgMjM1LCAxOSwgMjMwLCA3MSwgMTU1LCAxLCAyNDMsIDE0MiwgMTU1LCAxLCAyNDMsIAotICAgIDE0MywgMjMwLCA3MSwgMTU1LCAxLCAyMjksIDgyLCAxNTUsIDEsIDI1MSwgNDEsIDE1NSwgMSwgMjUxLCA0MiwgMjMwLCA3MSwgCi0gICAgMTU1LCAxLCAyMzUsIDE0NywgMTU1LCAxLCAyMjcsIDE3MCwgMjMwLCA3MSwgMTU1LCAxLCAyMzUsIDE0OCwgMjMxLCAyMTIsIAotICAgIDE1NSwgMSwgMjI3LCAxNjksIDE1NSwgMSwgMjE1LCAxNTcsIDE1NSwgMSwgMjE1LCAxNTgsIDIzMSwgMjEyLCAxNTUsIDEsIAotICAgIDI0OCwgMTQzLCAxNTUsIDEsIDI0OCwgMTQ0LCAyMzEsIDIxMiwgMTU1LCAxLCAyMjksIDIzNCwgMjMwLCA3MSwgMTU1LCAxLCAKLSAgICAyMTcsIDEwNiwgMTU1LCAxLCAyMTcsIDEwNywgMjMwLCA3MSwgMTU1LCAxLCAyNDgsIDIyOSwgMTU1LCAxLCAyNDgsIDIzMCwgCi0gICAgMjMxLCAyMTIsIDE1NSwgMSwgMTk4LCAxNTUsIDEsIDE5MSwgMTU1LCAxLCAyMjYsIDk0LCAyMzAsIDcxLCAxNTUsIDEsIAotICAgIDI1MiwgMTk5LCAxNTUsIDEsIDI1MiwgMjAwLCAyMzAsIDcxLCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAxOTIsIDE1NSwgMSwgCi0gICAgMjA1LCAxNTUsIDEsIDIyMywgMTkxLCAyNTQsIDIxOSwgMTU1LCAxLCAyMzMsIDE0MSwgMTU1LCAxLCAyMTIsIDY1LCAxNTUsIAotICAgIDEsIDIyMiwgMzYsIDIzMCwgNzEsIDE1NSwgMSwgMjIyLCAzNiwgMjMxLCAyMTIsIDE1NSwgMSwgMjA2LCAxNTUsIDEsIDE2MiwgCi0gICAgMTU1LCA1LCAyNTAsIDE5NiwgMjE2LCAyNTEsIDE1NSwgMjUsIDUsIDIxNywgNDgsIDE1NSwgMjUsIDUsIDIxNiwgMzYsIAotICAgIDE1NSwgMjUsIDUsIDIxMSwgMTkwLCAxNTUsIDI1LCA1LCAyMTEsIDE5MSwgMjMxLCA3NCwgMTU1LCAyNSwgNSwgMjE4LCA0OCwgCi0gICAgMTU1LCAyNSwgNSwgMjE4LCA0OSwgMjMxLCA2MiwgMTU1LCAyNSwgNSwgMjE3LCA2NiwgMTU1LCAyNSwgNSwgMjQ3LCAyMDIsIAotICAgIDIzMCwgNzAsIDE1NSwgMjUsIDUsIDIyNSwgMTg3LCAxNTUsIDExNywgNSwgMjM0LCAxNjQsIDE1NSwgMTE3LCA1LCAyMjUsIAotICAgIDE5OSwgMTU1LCAxMTcsIDUsIDI1MSwgMjcsIDE1NSwgMjI2LCA0NCwgMTU1LCA0MywgMjIzLCA3MiwgMTU1LCA0NCwgMjIzLCAKLSAgICA3MiwgMTU1LCAyMjYsIDgzLCAyNTQsIDEyNSwgMTU1LCAyMjYsIDgzLCAyMzEsIDIyOSwgMTU1LCAyMjYsIDgzLCAyMzIsIAotICAgIDkzLCAxNTUsIDIyNiwgODMsIDIxMSwgMjM4LCAxNTUsIDIyNiwgODMsIDIyNiwgNDUsIDE1NSwgMjI2LCA4MywgMjMyLCAKLSAgICAyMTEsIDE1NSwgMjI2LCA4MywgMjMyLCA4NywgMTU1LCAyMjYsIDgzLCAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjU1LCAzLCAKLSAgICAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjI1LCA1NCwgMTU1LCAyMTUsIDk0LCAyMjYsIDgzLCAyMjUsIDU0LCAxNTUsIDIyNiwgCi0gICAgNDAsIDE1NSwgMjEsIDIxMCwgODYsIDE1NSwgMjEsIDExMSwgMTU1LCAyMSwgMTA1LCAxNTUsIDIxLCAxNTgsIDE1NSwgMjEsIAotICAgIDE2MSwgMTU1LCAyMSwgMTkwLCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDE5OSwgMTU1LCAyMSwgMTk2LCAxNTUsIDIxLCAKLSAgICAyMDEsIDE1NSwgMjI2LCA4MywgMjE2LCA3MCwgMjE1LCAxMDcsIDE1NSwgMjI2LCA4MywgMjM1LCAxNzQsIDE3MiwgMSwgNjEsIAotICAgIDE3MiwgMSwgNzQsIDE3MiwgMSwgNjksIDE3MiwgMSwgNzYsIDE3MiwgMSwgMjU0LCAyMTAsIDE3MiwgMSwgNzgsIDE3MiwgMSwgCi0gICAgMTc2LCAxNzIsIDEsIDIzNCwgMTM4LCAxNzIsIDEsIDI0MywgMTQyLCAxNzIsIDEsIDI0MywgMCwgMTcyLCAxLCAyMjgsIAotICAgIDI1MCwgMTcyLCAxLCAyMjksIDgyLCAxNzIsIDEsIDI1MCwgMTY1LCAxNzIsIDEsIDI1MCwgMTIwLCAxNzIsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNzIsIDEsIDIzNSwgMTIwLCAxNzIsIDEsIDIyOCwgMjQwLCAxNzIsIDEsIDIyOCwgMjQyLCAxNzIsIDEsIDIyOCwgCi0gICAgMjQxLCAxNzIsIDEsIDIxNywgMTA2LCAxNzIsIDEsIDIxNiwgMjA5LCAxNzIsIDEsIDI0OCwgMjI5LCAxNzIsIDEsIDI0OCwgCi0gICAgMzMsIDE3MiwgMSwgMjI3LCAyMTEsIDE3MiwgMSwgMTk4LCAxNzIsIDEsIDI0OCwgMTQzLCAxNzIsIDEsIDE5MSwgMTcyLCAxLCAKLSAgICAyMjQsIDIyMywgMTcyLCAxLCAyMjUsIDE1MCwgMTcyLCAxLCAyNTIsIDE5OSwgMTcyLCAxLCAyNTIsIDI2LCAxNzIsIDEsIAotICAgIDIzMCwgMTAwLCAxNzIsIDEsIDE4NiwgMTcyLCAxLCAyNTIsIDExOSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjA1LCAxNzIsIAotICAgIDEsIDIzMywgMTQxLCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAyMjUsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgCi0gICAgMTcyLCAyNSwgNSwgMjU1LCA4MiwgMTcyLCAyNSwgNSwgNzQsIDE3MiwgMjUsIDUsIDIzNiwgNDAsIDE3MiwgMjUsIDUsIAotICAgIDI0NSwgMjAzLCAxNzIsIDI1LCA1LCA2OSwgMTcyLCAyNSwgNSwgMjI2LCAyMzgsIDE3MiwgMjUsIDUsIDc4LCAxNzIsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTcyLCAyNSwgNSwgMjUzLCAyMDAsIDE3MiwgMjUsIDUsIDIxNCwgMjE0LCAxNzIsIDExNywgNSwgCi0gICAgMTkyLCAxNzIsIDExNywgNSwgMjA1LCAxNzIsIDExNywgNSwgMjMzLCAxNDEsIDE3MiwgMTE3LCA1LCAyMTIsIDY1LCAxNzIsIAotICAgIDEsIDQwLCAyMzUsIDI5LCAxNzIsIDEsIDQwLCAyNDMsIDIwOSwgMTcyLCAxLCA0MCwgMjI5LCA4NCwgMTcyLCAxMTcsIDUsIAotICAgIDQwLCAyMjksIDg0LCAxNzIsIDEsIDQwLCAyNTAsIDE2NiwgMTcyLCAxLCA0MCwgMjE3LCAxNTMsIDE3MiwgMSwgNDAsIDIzMCwgCi0gICAgMzAsIDE3MiwgMSwgNDAsIDIyNiwgMTA5LCAxNzIsIDEsIDQwLCAyMTEsIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIAotICAgIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI4LCAxNzIsIDExNywgNSwgNDAsIDE5NCwgMTcyLCAxMTcsIDUsIDQwLCAKLSAgICAyNDIsIDY3LCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTEsIDE3MiwgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIAotICAgIDIxLCAxNjEsIDE3MiwgMjEsIDE5MCwgMTcyLCAyMSwgMTk1LCAxNzIsIDIxLCAxOTksIDE3MiwgMjEsIDE5NiwgMTcyLCAyMSwgCi0gICAgMjAxLCAxNzIsIDIyNCwgMTQ0LCAyMTgsIDI1MywgMTcyLCAyMjQsIDE0NCwgMjQ4LCAxODYsIDE3MiwgMjI0LCAxNDQsIDUyLCAKLSAgICAyNDgsIDE4NiwgMTcyLCAyMjQsIDE0NCwgMjE1LCAyMTIsIDI0OCwgMTg2LCA2OCwgMSwgMjM0LCAxMzIsIDI0MywgMTQyLCAKLSAgICA2OCwgMSwgMjM0LCAxMzIsIDI1MSwgNDEsIDY4LCAxLCAyMzQsIDEzMiwgMjUwLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgCi0gICAgMjM1LCAxNDcsIDY4LCAxLCAyMzQsIDEzMiwgMjM1LCAxMjAsIDY4LCAxLCAyMzQsIDEzMiwgMjI3LCAxNjksIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjE1LCAxNTcsIDY4LCAxLCAyMzQsIDEzMiwgMjE1LCAxNDUsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxNDMsIAotICAgIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxMjcsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAzMywgNjgsIDEsIDIzNCwgMTMyLCAKLSAgICAxOTgsIDY4LCAxLCAyMzQsIDEzMiwgMjA2LCA2OCwgMSwgMjM0LCAxMzIsIDE2MiwgNjgsIDEsIDIzNCwgMTMyLCAyNDEsIAotICAgIDE5NiwgNjgsIDEsIDIzNCwgMTMyLCAyNDQsIDIwNCwgNjgsIDU4LCAxLCAyMzQsIDEzMiwgMjIzLCAxMTIsIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgMjEwLCAxMTYsIDY4LCAxLCAyMzQsIDEzMiwgMjA1LCA2OCwgCi0gICAgMjMyLCAxNTEsIDIzNCwgMTMyLCAyMjcsIDEsIDY4LCAyMzIsIDE1MSwgMjM0LCAxMzIsIDIyNCwgNDYsIDY4LCAyMzIsIAotICAgIDE1MSwgMjM0LCAxMzIsIDI0MSwgMTI4LCA2OCwgMTYsIDI1NCwgMTk5LCAyNDUsIDM4LCA2OCwgMTYsIDI1NCwgMTk5LCAKLSAgICAxMTEsIDY4LCAxNiwgMjU0LCAxOTksIDEwNSwgNjgsIDEsIDI1NCwgMTk5LCAyMDUsIDY4LCA1LCAyMjYsIDI3LCAyMzQsIAotICAgIDIxOSwgMjE2LCAzMSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDM0LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgMzQsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAKLSAgICAxMjAsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMjAsIDM5LCAyMDgsIDEsIDEyMSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIDEyMSwgMjI5LCA5LCAzOSwgMjA4LCAxLCAxMjUsIDIyOSwgOSwgMzksIDIwOCwgCi0gICAgMSwgMTIxLCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTI1LCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTIxLCAyNTAsIDk0LCAKLSAgICAzOSwgMjA4LCAxLCAxMjUsIDI1MCwgOTQsIDM5LCAyMDgsIDEsIDEyMSwgMjE5LCA2MCwgMzksIDIwOCwgMSwgMTI1LCAyMTksIAotICAgIDYwLCAzOSwgMjA4LCAxLCAxMjEsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAxMjUsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAKLSAgICAxMjEsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjUsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjEsIDExMiwgMzksIDIwOCwgCi0gICAgMSwgMTI1LCAxMTIsIDM5LCAyMDgsIDEsIDEyMSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEsIDEyNSwgMjE2LCAxNTcsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjI4LCA3OSwgMzksIDIwOCwgMSwgMTI1LCAyMjgsIDc5LCAzOSwgMjA4LCAxLCAxMjEsIDI1MSwgCi0gICAgMjEzLCAzOSwgMjA4LCAxLCAxMjUsIDI1MSwgMjEzLCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTksIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjI1LCAxOSwgMzksIDIwOCwgMSwgMTIxLCAyMjUsIDEyNCwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDEyNCwgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyNDQsIDUxLCAzOSwgMjA4LCAxLCAxMjUsIDI0NCwgNTEsIDM5LCAyMDgsIDEsIDEyMSwgMjMwLCAKLSAgICAxNjYsIDM5LCAyMDgsIDEsIDEyNSwgMjMwLCAxNjYsIDM5LCAyMDgsIDEsIDEyMSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIDEyMSwgMjIyLCAyMTMsIDM5LCAyMDgsIDEsIDEyNSwgMjIyLCAyMTMsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyNSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyMSwgMjEzLCAKLSAgICAxMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjEzLCAxMzgsIDM5LCAyMDgsIDEsIDEyMSwgMjQxLCA3NSwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyNDEsIDc1LCAzOSwgMjA4LCAxLCAxMjEsIDc4LCAzOSwgMjA4LCAxLCAxMjUsIDc4LCAzOSwgMjA4LCAyMzEsIAotICAgIDIwOSwgMjM0LCAyMzYsIDM5LCAyMDgsIDI1LCAyNTUsIDgyLCAzOSwgMjA4LCAyNSwgNzQsIDM5LCAyMDgsIDI1LCAyMTQsIAotICAgIDIxNCwgMzksIDIwOCwgMjUsIDY5LCAzOSwgMjA4LCAyNSwgNzYsIDM5LCAyMDgsIDI1LCA3OCwgMzksIDIwOCwgMjMxLCAKLSAgICAyMDksIDIzNCwgMTE0LCAzOSwgMjA4LCAyNSwgMjQwLCAxMjYsIDM5LCAyMDgsIDI1LCAyMTQsIDIxMywgMzksIDIwOCwgMjUsIAotICAgIDIxNCwgMjI5LCAzOSwgMjA4LCAyNSwgMjUzLCAxOTgsIDM5LCAyMDgsIDI1LCAyNTMsIDE3NSwgMzksIDIwOCwgMjUsIDI1NCwgCi0gICAgMTMxLCAzOSwgMjA4LCAyNSwgMjU0LCAxNDQsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDksIDI0NSwgMTg4LCAzOSwgMjA4LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyMjcsIDIxMCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEzOCwgCi0gICAgMjMxLCAyMDksIDIxOSwgNDQsIDM5LCAyMDgsIDE2LCAyMzQsIDE5LCAzOSwgMjA4LCAxNiwgMjI3LCAyMTAsIDM5LCAyMDgsIAotICAgIDE2LCAyMjEsIDI1NSwgMzksIDIwOCwgMTYsIDI0MSwgNzYsIDI0MSwgNzEsIDM5LCAyMDgsIDE2LCAyMzQsIDI4LCAyMzQsIAotICAgIDI3LCAxODgsIDE4NywgMSwgNzYsIDE4OCwgMTg3LCAxLCA3OCwgMTg4LCAxODcsIDEsIDI1MCwgMTY1LCAxODgsIDE4NywgMSwgCi0gICAgMjI3LCAxNjksIDE4OCwgMTg3LCAxLCAyMTUsIDE1NywgMTg4LCAxODcsIDEsIDIxNSwgMTQ1LCAxODgsIDE4NywgMSwgMjQ4LCAKLSAgICAxNDMsIDE4OCwgMTg3LCAxLCAyNDgsIDEyNywgMTg4LCAxODcsIDEsIDIyOCwgMTE1LCAxODgsIDE4NywgMSwgMjIwLCAxMDQsIAotICAgIDE4OCwgMTg3LCAxLCAyMTgsIDIyNSwgMTg4LCAxODcsIDI1LCA1LCAyMzYsIDQwLCAxODgsIDE4NywgMjUsIDUsIDIxNCwgCi0gICAgMTE4LCAxODgsIDE4NywgMjUsIDUsIDI1NSwgNDYsIDE4OCwgMTg3LCAyNSwgNSwgMjUzLCAyMDAsIDE4OCwgMTg3LCAyNSwgCi0gICAgNSwgMjU1LCAzOSwgMTg4LCAxODcsIDI1MCwgMTMzLCAxODgsIDE4NywgMjU0LCAyMTUsIDIzNCwgMTA0LCAxODgsIDE4NywgCi0gICAgMjU0LCAxMTEsIDE4OCwgMTg3LCAzLCAyMjMsIDc3LCA3OSwgMTg4LCAxODcsIDIxMSwgMjA5LCAyMjMsIDc3LCA3OSwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTMsIDE0NywgMTg4LCAxODcsIDIxMywgMTUyLCAyOSwgMywgMjE1LCAxMzgsIDI5LCAzLCAyMTUsIAotICAgIDE0MSwgMjksIDMsIDIxNSwgMTQ0LCAyOSwgMywgMjE1LCAxNDIsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQwLCAKLSAgICAyOSwgMywgMjQ4LCAxMjEsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTI2LCAyOSwgMywgMjQ4LCAxMjQsIDI5LCAKLSAgICAzLCAyNDgsIDEyNSwgMjksIDMsIDI0OCwgMTIyLCAyOSwgMywgMjQ2LCAzNiwgMjksIDMsIDI0NiwgMzksIDI5LCAzLCAyNDYsIAotICAgIDQ1LCAyOSwgMywgMjQ2LCA0MywgMjksIDMsIDI0NiwgNDQsIDI5LCAzLCAyNDYsIDM3LCAyOSwgMywgMjUwLCAyMTIsIDI5LCAKLSAgICAzLCAyNTAsIDIwNiwgMjksIDMsIDI1MCwgMjA4LCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDIwOSwgMjksIDMsIAotICAgIDI1MCwgMjEwLCAyOSwgMywgMjUwLCAyMDcsIDI5LCAzLCAyNTIsIDExOSwgMjksIDMsIDI1MiwgOTgsIDI5LCAzLCAyNTIsIAotICAgIDExMCwgMjksIDMsIDI1MiwgMTE4LCAyOSwgMywgMjUyLCAxMTMsIDI5LCAzLCAyNTIsIDExNCwgMjksIDMsIDI1MiwgMTAyLCAKLSAgICAxODgsIDE4NywgMSwgMjM0LCAyNSwgMTg4LCAxODcsIDEsIDIyMSwgMjU1LCAxODgsIDE4NywgMSwgMjMzLCAxMTUsIDE4OCwgCi0gICAgMTg3LCAxLCAyMzAsIDE3NywgMTg4LCAxODcsIDEsIDE5MSwgMTg4LCAxODcsIDEsIDE5OCwgMTg4LCAxODcsIDEsIDI1MCwgCi0gICAgMTEwLCAxODgsIDE4NywgMSwgMjE2LCA5MSwgMTg4LCAxODcsIDEsIDIzNCwgMTA3LCAxODgsIDE4NywgMSwgMjI4LCAyNTUsIAotICAgIDE4OCwgMTg3LCAxLCAyMTYsIDE1MSwgMTg4LCAxODcsIDEsIDIxMiwgNjAsIDE4OCwgMTg3LCAxLCAyMTEsIDY5LCAxODgsIAotICAgIDE4NywgMSwgMjQwLCAyMjMsIDE4OCwgMTg3LCAxLCAyMTQsIDE5MCwgMTg4LCAxODcsIDEsIDc0LCAxODgsIDE4NywgMSwgCi0gICAgMjI1LCAxNDUsIDE4OCwgMTg3LCAxLCAyNTMsIDIxMCwgMTg4LCAxODcsIDEsIDI0MiwgMTc0LCAxODgsIDE4NywgMSwgMjM1LCAKLSAgICAxMTgsIDE4OCwgMTg3LCAxLCAyMjMsIDE2OSwgMTg4LCAxODcsIDEsIDI1MiwgMTk5LCAxODgsIDE4NywgMSwgMjM1LCAxMDYsIAotICAgIDE4OCwgMTg3LCAxLCAyNDcsIDIyNywgMTg4LCAxODcsIDEsIDI0MiwgMjI4LCAxODgsIDE4NywgMSwgMjQ4LCAxMywgMTg4LCAKLSAgICAxODcsIDEsIDI1MiwgMjQsIDE4OCwgMTg3LCAxLCAyMzQsIDI2LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMywgMTE2LCAKLSAgICAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMCwgMTc4LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIyNiwgOTQsIDIzMiwgCi0gICAgMTM0LCAxODgsIDE4NywgMSwgMjI5LCAyMzQsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjE2LCA5MiwgMjMyLCAxMzQsIAotICAgIDE4OCwgMTg3LCAxLCAyMjksIDAsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjQwLCAxNjEsIDIzMiwgMTM0LCAxODgsIDE4NywgCi0gICAgMjUsIDUsIDIyNiwgMTk5LCAxODgsIDE4NywgMjUsIDUsIDIzNiwgNCwgMTg4LCAxODcsIDI1LCA1LCAyNTQsIDEzMCwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTEsIDM4LCAxODgsIDE4NywgMjUsIDUsIDIxOSwgMzQsIDE4OCwgMTg3LCAyNSwgNSwgMjE0LCAxODcsIAotICAgIDE4OCwgMTg3LCAyNSwgNSwgMjUwLCAxMzEsIDE4OCwgMTg3LCAyNSwgNSwgMjI3LCAxOTUsIDE4OCwgMTg3LCAyNTAsIDEzMiwgCi0gICAgMTg4LCAxODcsIDIzMiwgOTAsIDIzNSwgMTU2LCAxODgsIDE4NywgMjU0LCA1NCwgMjM1LCAxNTYsIDE4OCwgMTg3LCAyMSwgCi0gICAgMjEwLCA4NiwgMTg4LCAxODcsIDIxLCAxMTEsIDE4OCwgMTg3LCAyMSwgMTA1LCAxODgsIDE4NywgMjEsIDE1OCwgMTg4LCAKLSAgICAxODcsIDIxLCAxNjEsIDE4OCwgMTg3LCAyMSwgMTkwLCAxODgsIDE4NywgMjEsIDE5NSwgMTg4LCAxODcsIDIxLCAxOTksIAotICAgIDE4OCwgMTg3LCAyMSwgMTk2LCAxODgsIDE4NywgMjEsIDIwMSwgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjI3LCA4NiwgCi0gICAgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAKLSAgICAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIAotICAgIDYyLCAyNCwgMTQzLCAyNDUsIDYwLCAyNCwgMTQzLCAyNDUsIDYxLCAyNCwgMTQzLCAyNDUsIDU4LCAyNCwgMTQzLCAyNDAsIAotICAgIDE1MSwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgCi0gICAgMjQwLCAxNTQsIDI0LCAxNDMsIDI0MCwgMTQ3LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTYsIDI0LCAKLSAgICAxNDMsIDI1NCwgNDEsIDI0LCAxNDMsIDI1NCwgNDAsIDI0LCA5MCwgMjI4LCAyMjQsIDI0LCA5MCwgMjI4LCAyMzAsIDI0LCAKLSAgICA5MCwgMjE4LCAyMDYsIDI0LCA5MCwgMjE4LCAyMDUsIDI0LCA5MCwgMjE2LCA5NywgMjQsIDkwLCAyMTYsIDk1LCAyNCwgOTAsIAotICAgIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCAxMDAsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAKLSAgICAyMjMsIDgsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIyMywgCi0gICAgMTAsIDI0LCA5MCwgMjIzLCAxMiwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMjMsIDAsIDI0LCA5MCwgMjM0LCAyMjQsIAotICAgIDI0LCA5MCwgMjMwLCAyMTcsIDI0LCA5MCwgMjMwLCAyMTEsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIAotICAgIDI0LCA5MCwgMjMwLCAyMjAsIDI0LCA5MCwgMjI1LCA3OSwgMjQsIDkwLCAyMjUsIDg4LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCAKLSAgICA5MCwgMjE4LCAyMTQsIDI0LCA5MCwgMjI1LCA4MiwgMjQsIDkwLCAyMjUsIDk2LCAyNCwgOTAsIDIyNSwgOTcsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDIsIDI0LCA5MCwgMjE5LCAxNDUsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCA5MCwgMjE4LCAyMDgsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDAsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE5LCAxNDksIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDcsIDI0LCA5MCwgMjI2LCAzNCwgMjQsIDkwLCAyMjYsIDM1LCAyNCwgOTAsIDIxMSwgMjQsIDI0LCA5MCwgMjExLCAKLSAgICAyNSwgMjQsIDkwLCAyNTAsIDUyLCAyNCwgOTAsIDI1MCwgNTEsIDI0LCA5MCwgMjE4LCAyMjEsIDI0LCA5MCwgMjI1LCAxMzEsIAotICAgIDI0LCA5MCwgMjI1LCAxMzAsIDEwLCAxNCwgMjM4LCAzMSwgMTAsIDE0LCAyMzgsIDMwLCAxMCwgMTQsIDIzOCwgMjksIDEwLCAKLSAgICAxNCwgMjM4LCAyOCwgMTAsIDE0LCAyMzgsIDI3LCAxMCwgMTQsIDIzOCwgMjYsIDEwLCAxNCwgMjM4LCAyNSwgMTAsIDE0LCAKLSAgICAyMzgsIDI0LCAxMCwgMTQsIDIzOCwgMjMsIDEwLCAxNCwgMjM4LCAyMiwgMTAsIDE0LCAyMzgsIDIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAsIDEwLCAxNCwgMjM4LCAxOSwgMTAsIDE0LCAyMzgsIDE4LCAxMCwgMTQsIDIzOCwgMTcsIDEwLCAxNCwgMjM4LCAxNiwgCi0gICAgMTAsIDE0LCAyMzgsIDE1LCAxMCwgMTQsIDIzOCwgMTQsIDEwLCAxNCwgMjM4LCAxMywgMTAsIDE0LCAyMzgsIDEyLCAxMCwgCi0gICAgMTQsIDIzOCwgMTEsIDEwLCAxNCwgMjM4LCAxMCwgMTAsIDE0LCAyMzgsIDksIDEwLCAxNCwgMjM4LCA4LCAxMCwgMTQsIAotICAgIDIzOCwgNywgMTAsIDE0LCAyMzgsIDYsIDEwLCAxNCwgMjM4LCA1LCAxMCwgMTQsIDIzOCwgNCwgMTAsIDE0LCAyMzgsIDMsIAotICAgIDEwLCAxNCwgMjM4LCAyLCAxMCwgMTQsIDIzOCwgMSwgMTAsIDE0LCAyMzgsIDAsIDEwLCAxNCwgMjM3LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTQsIDEwLCAxNCwgMjM3LCAyNTMsIDEwLCAxNCwgMjM3LCAyNTIsIDEwLCAxNCwgMjM3LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTAsIDEwLCAxNCwgMjM3LCAyNDksIDEwLCAxNCwgMjM3LCAyNDgsIDEwLCAxNCwgMjM3LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDYsIDEwLCAxNCwgMjM3LCAyNDUsIDEwLCAxNCwgMjM3LCAyNDQsIDEwLCAxNCwgMjM3LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDIsIDEwLCAxNCwgMjM3LCAyNDEsIDEwLCAxNCwgMjM3LCAyNDAsIDEwLCAxNCwgMjM3LCAyMzksIDEwLCAxNCwgCi0gICAgMjM3LCAyMzgsIDEwLCAxNCwgMjM3LCAyMzcsIDEwLCAxNCwgMjM3LCAyMzYsIDEwLCAxNCwgMjM3LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzQsIDEwLCAxNCwgMjM3LCAyMzMsIDEwLCAxNCwgMjM3LCAyMzIsIDEwLCAxNCwgMjM3LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzAsIDEwLCAxNCwgMjM3LCAyMjksIDEwLCAxNCwgMjM3LCAyMjgsIDEwLCAxNCwgMjM3LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjYsIDEwLCAxNCwgMjM3LCAyMjUsIDEwLCAxNCwgMjM3LCAyMjQsIDEwLCAxNCwgMjM3LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjIsIDEwLCAxNCwgMjM3LCAyMjEsIDEwLCAxNCwgMjM3LCAyMjAsIDEwLCAxNCwgMjM3LCAyMTksIDEwLCAxNCwgCi0gICAgMjM3LCAyMTgsIDEwLCAxNCwgMjM3LCAyMTcsIDEwLCAxNCwgMjM3LCAyMTYsIDEwLCAxNCwgMjM3LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTQsIDEwLCAxNCwgMjM3LCAyMTMsIDEwLCAxNCwgMjM3LCAyMTIsIDEwLCAxNCwgMjM3LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTAsIDEwLCAxNCwgMjM3LCAyMDksIDEwLCAxNCwgMjM3LCAyMDgsIDEwLCAxNCwgMjM3LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDYsIDEwLCAxNCwgMjM3LCAyMDUsIDEwLCAxNCwgMjM3LCAyMDQsIDEwLCAxNCwgMjM3LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDIsIDEwLCAxNCwgMjM3LCAyMDEsIDEwLCAxNCwgMjM3LCAyMDAsIDEwLCAxNCwgMjM3LCAxOTksIDEwLCAxNCwgCi0gICAgMjM3LCAxOTgsIDEwLCAxNCwgMjM3LCAxOTcsIDEwLCAxNCwgMjM3LCAxOTYsIDEwLCAxNCwgMjM3LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTQsIDEwLCAxNCwgMjM3LCAxOTMsIDEwLCAxNCwgMjM3LCAxOTIsIDEwLCAxNCwgMjM3LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTAsIDEwLCAxNCwgMjM3LCAxODksIDEwLCAxNCwgMjM3LCAxODgsIDEwLCAxNCwgMjM3LCAxODcsIDEwLCAxNCwgCi0gICAgMjM3LCAxODYsIDEwLCAxNCwgMjM3LCAxODUsIDEwLCAxNCwgMjM3LCAxODQsIDEwLCAxNCwgMjM3LCAxODMsIDEwLCAxNCwgCi0gICAgMjM3LCAxODIsIDEwLCAxNCwgMjM3LCAxODEsIDEwLCAxNCwgMjM3LCAxODAsIDEwLCAxNCwgMjM3LCAxNzksIDEwLCAxNCwgCi0gICAgMjM3LCAxNzgsIDEwLCAxNCwgMjM3LCAxNzcsIDEwLCAxNCwgMjM3LCAxNzYsIDEwLCAxNCwgMjM3LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzQsIDEwLCAxNCwgMjM3LCAxNzMsIDEwLCAxNCwgMjM3LCAxNzIsIDEwLCAxNCwgMjM3LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzAsIDEwLCAxNCwgMjM3LCAxNjksIDEwLCAxNCwgMjM3LCAxNjgsIDEwLCAxNCwgMjM3LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjYsIDEwLCAxNCwgMjM3LCAxNjUsIDEwLCAxNCwgMjM3LCAxNjQsIDEwLCAxNCwgMjM3LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjIsIDEwLCAxNCwgMjM3LCAxNjEsIDEwLCAxNCwgMjM3LCAxNjAsIDEwLCAxNCwgMjM3LCAxNTksIDEwLCAxNCwgCi0gICAgMjM3LCAxNTgsIDEwLCAxNCwgMjM3LCAxNTcsIDEwLCAxNCwgMjM3LCAxNTYsIDEwLCAxNCwgMjM3LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTQsIDEwLCAxNCwgMjM3LCAxNTMsIDEwLCAxNCwgMjM3LCAxNTIsIDEwLCAxNCwgMjM3LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTAsIDEwLCAxNCwgMjM3LCAxNDksIDEwLCAxNCwgMjM3LCAxNDgsIDEwLCAxNCwgMjM3LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDYsIDEwLCAxNCwgMjM3LCAxNDUsIDEwLCAxNCwgMjM3LCAxNDQsIDEwLCAxNCwgMjM3LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDIsIDEwLCAxNCwgMjM3LCAxNDEsIDEwLCAxNCwgMjM3LCAxNDAsIDEwLCAxNCwgMjM3LCAxMzksIDEwLCAxNCwgCi0gICAgMjM3LCAxMzgsIDEwLCAxNCwgMjM3LCAxMzcsIDEwLCAxNCwgMjM3LCAxMzYsIDEwLCAxNCwgMjM3LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzQsIDEwLCAxNCwgMjM3LCAxMzMsIDEwLCAxNCwgMjM3LCAxMzIsIDEwLCAxNCwgMjM3LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzAsIDEwLCAxNCwgMjM3LCAxMjksIDEwLCAxNCwgMjM3LCAxMjgsIDEwLCAxNCwgMjM3LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjYsIDEwLCAxNCwgMjM3LCAxMjUsIDEwLCAxNCwgMjM3LCAxMjQsIDEwLCAxNCwgMjM3LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjIsIDEwLCAxNCwgMjM3LCAxMjEsIDEwLCAxNCwgMjM3LCAxMjAsIDEwLCAxNCwgMjM3LCAxMTksIDEwLCAxNCwgCi0gICAgMjM3LCAxMTgsIDEwLCAxNCwgMjM3LCAxMTcsIDEwLCAxNCwgMjM3LCAxMTYsIDEwLCAxNCwgMjM3LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTQsIDEwLCAxNCwgMjM3LCAxMTMsIDEwLCAxNCwgMjM3LCAxMTIsIDEwLCAxNCwgMjM3LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTAsIDEwLCAxNCwgMjM3LCAxMDksIDEwLCAxNCwgMjM3LCAxMDgsIDEwLCAxNCwgMjM3LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDYsIDEwLCAxNCwgMjM3LCAxMDUsIDEwLCAxNCwgMjM3LCAxMDQsIDEwLCAxNCwgMjM3LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDIsIDEwLCAxNCwgMjM3LCAxMDEsIDEwLCAxNCwgMjM3LCAxMDAsIDEwLCAxNCwgMjM3LCA5OSwgMTAsIDE0LCAKLSAgICAyMzcsIDk4LCAxMCwgMTQsIDIzNywgOTcsIDEwLCAxNCwgMjM3LCA5NiwgMTAsIDE0LCAyMzcsIDk1LCAxMCwgMTQsIDIzNywgCi0gICAgOTQsIDEwLCAxNCwgMjM3LCA5MywgMTAsIDE0LCAyMzcsIDkyLCAxMCwgMTQsIDIzNywgOTEsIDEwLCAxNCwgMjM3LCA5MCwgCi0gICAgMTAsIDE0LCAyMzcsIDg5LCAxMCwgMTQsIDIzNywgODgsIDEwLCAxNCwgMjM3LCA4NywgMTAsIDE0LCAyMzcsIDg2LCAxMCwgCi0gICAgMTQsIDIzNywgODUsIDEwLCAxNCwgMjM3LCA4NCwgMTAsIDE0LCAyMzcsIDgzLCAxMCwgMTQsIDIzNywgODIsIDEwLCAxNCwgCi0gICAgMjM3LCA4MSwgMTAsIDE0LCAyMzcsIDgwLCAxMCwgMTQsIDIzNywgNzksIDEwLCAxNCwgMjM3LCA3OCwgMTAsIDE0LCAyMzcsIAotICAgIDc3LCAxMCwgMTQsIDIzNywgNzYsIDEwLCAxNCwgMjM3LCA3NSwgMTAsIDE0LCAyMzcsIDc0LCAxMCwgMTQsIDIzNywgNzMsIAotICAgIDEwLCAxNCwgMjM3LCA3MiwgMTAsIDE0LCAyMzcsIDcxLCAxMCwgMTQsIDIzNywgNzAsIDEwLCAxNCwgMjM3LCA2OSwgMTAsIAotICAgIDE0LCAyMzcsIDY4LCAxMCwgMTQsIDIzNywgNjcsIDEwLCAxNCwgMjM3LCA2NiwgMTAsIDE0LCAyMzcsIDY1LCAxMCwgMTQsIAotICAgIDIzNywgNjQsIDEwLCAxNCwgMjM3LCA2MywgMTAsIDE0LCAyMzcsIDYyLCAxMCwgMTQsIDIzNywgNjEsIDEwLCAxNCwgMjM3LCAKLSAgICA2MCwgMTAsIDE0LCAyMzcsIDU5LCAxMCwgMTQsIDIzNywgNTgsIDEwLCAxNCwgMjM3LCA1NywgMTAsIDE0LCAyMzcsIDU2LCAKLSAgICAxMCwgMTQsIDIzNywgNTUsIDEwLCAxNCwgMjM3LCA1NCwgMTAsIDE0LCAyMzcsIDUzLCAxMCwgMTQsIDIzNywgNTIsIDEwLCAKLSAgICAxNCwgMjM3LCA1MSwgMTAsIDE0LCAyMzcsIDUwLCAxMCwgMTQsIDIzNywgNDksIDEwLCAxNCwgMjM3LCA0OCwgMTAsIDE0LCAKLSAgICAyMzcsIDQ3LCAxMCwgMTQsIDIzNywgNDYsIDEwLCAxNCwgMjM3LCA0NSwgMTAsIDE0LCAyMzcsIDQ0LCAxMCwgMTQsIDIzNywgCi0gICAgNDMsIDEwLCAxNCwgMjM3LCA0MiwgMTAsIDE0LCAyMzcsIDQxLCAxMCwgMTQsIDIzNywgNDAsIDEwLCAxNCwgMjM3LCAzOSwgCi0gICAgMTAsIDE0LCAyMzcsIDM4LCAxMCwgMTQsIDIzNywgMzcsIDEwLCAxNCwgMjM3LCAzNiwgMTAsIDE0LCAyMzcsIDM1LCAxMCwgCi0gICAgMTQsIDIzNywgMzQsIDEwLCAxNCwgMjM3LCAzMywgMTAsIDE0LCAyMzcsIDMyLCAxMCwgMTQsIDIzNywgMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAzMCwgMTAsIDE0LCAyMzcsIDI5LCAxMCwgMTQsIDIzNywgMjgsIDEwLCAxNCwgMjM3LCAyNywgMTAsIDE0LCAyMzcsIAotICAgIDI2LCAxMCwgMTQsIDIzNywgMjUsIDEwLCAxNCwgMjM3LCAyNCwgMTAsIDE0LCAyMzcsIDIzLCAxMCwgMTQsIDIzNywgMjIsIAotICAgIDEwLCAxNCwgMjM3LCAyMSwgMTAsIDE0LCAyMzcsIDIwLCAxMCwgMTQsIDIzNywgMTksIDEwLCAxNCwgMjM3LCAxOCwgMTAsIAotICAgIDE0LCAyMzcsIDE3LCAxMCwgMTQsIDIzNywgMTYsIDEwLCAxNCwgMjM3LCAxNSwgMTAsIDE0LCAyMzcsIDE0LCAxMCwgMTQsIAotICAgIDIzNywgMTMsIDEwLCAxNCwgMjM3LCAxMiwgMTAsIDE0LCAyMzcsIDExLCAxMCwgMTQsIDIzNywgMTAsIDEwLCAxNCwgMjM3LCAKLSAgICA5LCAxMCwgMTQsIDIzNywgOCwgMTAsIDE0LCAyMzcsIDcsIDEwLCAxNCwgMjM3LCA2LCAxMCwgMTQsIDIzNywgNSwgMTAsIAotICAgIDE0LCAyMzcsIDQsIDEwLCAxNCwgMjM3LCAzLCAxMCwgMTQsIDIzNywgMiwgMTAsIDE0LCAyMzcsIDEsIDEwLCAxNCwgMjM3LCAKLSAgICAwLCAxMCwgMTQsIDIzNiwgMjU1LCAxMCwgMTQsIDIzNiwgMjU0LCAxMCwgMTQsIDIzNiwgMjUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjUyLCAxMCwgMTQsIDIzNiwgMjUxLCAxMCwgMTQsIDIzNiwgMjUwLCAxMCwgMTQsIDIzNiwgMjQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzNiwgMjQ3LCAxMCwgMTQsIDIzNiwgMjQ2LCAxMCwgMTQsIDIzNiwgMjQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzNiwgMjQzLCAxMCwgMTQsIDIzNiwgMjQyLCAxMCwgMTQsIDIzNiwgMjQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjQwLCAxMCwgMTQsIDIzNiwgMjM5LCAxMCwgMTQsIDIzNiwgMjM4LCAxMCwgMTQsIDIzNiwgMjM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjM2LCAxMCwgMTQsIDIzNiwgMjM1LCAxMCwgMTQsIDIzNiwgMjM0LCAxMCwgMTQsIDIzNiwgMjMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjMyLCAxMCwgMTQsIDIzNiwgMjMxLCAxMCwgMTQsIDIzNiwgMjMwLCAxMCwgMTQsIDIzNiwgMjI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI4LCAxMCwgMTQsIDIzNiwgMjI3LCAxMCwgMTQsIDIzNiwgMjI2LCAxMCwgMTQsIDIzNiwgMjI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI0LCAxMCwgMTQsIDIzNiwgMjIzLCAxMCwgMTQsIDIzNiwgMjIyLCAxMCwgMTQsIDIzNiwgMjIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjIwLCAxMCwgMTQsIDIzNiwgMjE5LCAxMCwgMTQsIDIzNiwgMjE4LCAxMCwgMTQsIDIzNiwgMjE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjE2LCAxMCwgMTQsIDIzNiwgMjE1LCAxMCwgMTQsIDIzNiwgMjE0LCAxMCwgMTQsIDIzNiwgMjEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjEyLCAxMCwgMTQsIDIzNiwgMjExLCAxMCwgMTQsIDIzNiwgMjEwLCAxMCwgMTQsIDIzNiwgMjA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA4LCAxMCwgMTQsIDIzNiwgMjA3LCAxMCwgMTQsIDIzNiwgMjA2LCAxMCwgMTQsIDIzNiwgMjA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA0LCAxMCwgMTQsIDIzNiwgMjAzLCAxMCwgMTQsIDIzNiwgMjAyLCAxMCwgMTQsIDIzNiwgMjAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjAwLCAxMCwgMTQsIDIzNiwgMTk5LCAxMCwgMTQsIDIzNiwgMTk4LCAxMCwgMTQsIDIzNiwgMTk3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTk2LCAxMCwgMTQsIDIzNiwgMTk1LCAxMCwgMTQsIDIzNiwgMTk0LCAxMCwgMTQsIDIzNiwgMTkzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTkyLCAxMCwgMTQsIDIzNiwgMTkxLCAxMCwgMTQsIDIzNiwgMTkwLCAxMCwgMTQsIDIzNiwgMTg5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg4LCAxMCwgMTQsIDIzNiwgMTg3LCAxMCwgMTQsIDIzNiwgMTg2LCAxMCwgMTQsIDIzNiwgMTg1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg0LCAxMCwgMTQsIDIzNiwgMTgzLCAxMCwgMTQsIDIzNiwgMTgyLCAxMCwgMTQsIDIzNiwgMTgxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTgwLCAxMCwgMTQsIDIzNiwgMTc5LCAxMCwgMTQsIDIzNiwgMTc4LCAxMCwgMTQsIDIzNiwgMTc3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTc2LCAxMCwgMTQsIDIzNiwgMTc1LCAxMCwgMTQsIDIzNiwgMTc0LCAxMCwgMTQsIDIzNiwgMTczLCAxMCwgMTQsIDIzNiwgCi0gICAgMTcyLCAxMCwgMTQsIDIzNiwgMTcxLCAxMCwgMTQsIDIzNiwgMTcwLCAxMCwgMTQsIDIzNiwgMTY5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY4LCAxMCwgMTQsIDIzNiwgMTY3LCAxMCwgMTQsIDIzNiwgMTY2LCAxMCwgMTQsIDIzNiwgMTY1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY0LCAxMCwgMTQsIDIzNiwgMTYzLCAxMCwgMTQsIDIzNiwgMTYyLCAxMCwgMTQsIDIzNiwgMTYxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTYwLCAxMCwgMTQsIDIzNiwgMTU5LCAxMCwgMTQsIDIzNiwgMTU4LCAxMCwgMTQsIDIzNiwgMTU3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTU2LCAxMCwgMTQsIDIzNiwgMTU1LCAxMCwgMTQsIDIzNiwgMTU0LCAxMCwgMTQsIDIzNiwgMTUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTUyLCAxMCwgMTQsIDIzNiwgMTUxLCAxMCwgMTQsIDIzNiwgMTUwLCAxMCwgMTQsIDIzNiwgMTQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzNiwgMTQ3LCAxMCwgMTQsIDIzNiwgMTQ2LCAxMCwgMTQsIDIzNiwgMTQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzNiwgMTQzLCAxMCwgMTQsIDIzNiwgMTQyLCAxMCwgMTQsIDIzNiwgMTQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTQwLCAxMCwgMTQsIDIzNiwgMTM5LCAxMCwgMTQsIDIzNiwgMTM4LCAxMCwgMTQsIDIzNiwgMTM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTM2LCAxMCwgMTQsIDIzNiwgMTM1LCAxMCwgMTQsIDIzNiwgMTM0LCAxMCwgMTQsIDIzNiwgMTMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTMyLCAxMCwgMTQsIDIzNiwgMTMxLCAxMCwgMTQsIDIzNiwgMTMwLCAxMCwgMTQsIDIzNiwgMTI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI4LCAxMCwgMTQsIDIzNiwgMTI3LCAxMCwgMTQsIDIzNiwgMTI2LCAxMCwgMTQsIDIzNiwgMTI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI0LCAxMCwgMTQsIDIzNiwgMTIzLCAxMCwgMTQsIDIzNiwgMTIyLCAxMCwgMTQsIDIzNiwgMTIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTIwLCAxMCwgMTQsIDIzNiwgMTE5LCAxMCwgMTQsIDIzNiwgMTE4LCAxMCwgMTQsIDIzNiwgMTE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTE2LCAxMCwgMTQsIDIzNiwgMTE1LCAxMCwgMTQsIDIzNiwgMTE0LCAxMCwgMTQsIDIzNiwgMTEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTEyLCAxMCwgMTQsIDIzNiwgMTExLCAxMCwgMTQsIDIzNiwgMTEwLCAxMCwgMTQsIDIzNiwgMTA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA4LCAxMCwgMTQsIDIzNiwgMTA3LCAxMCwgMTQsIDIzNiwgMTA2LCAxMCwgMTQsIDIzNiwgMTA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA0LCAxMCwgMTQsIDIzNiwgMTAzLCAxMCwgMTQsIDIzNiwgMTAyLCAxMCwgMTQsIDIzNiwgMTAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTAwLCAxMCwgMTQsIDIzNiwgOTksIDEwLCAxNCwgMjM2LCA5OCwgMTAsIDE0LCAyMzYsIDk3LCAxMCwgMTQsIDIzNiwgOTYsIAotICAgIDEwLCAxNCwgMjM2LCA5NSwgMTAsIDE0LCAyMzYsIDk0LCAxMCwgMTQsIDIzNiwgOTMsIDEwLCAxNCwgMjM2LCA5MiwgMTAsIAotICAgIDE0LCAyMzYsIDkxLCAxMCwgMTQsIDIzNiwgOTAsIDEwLCAxNCwgMjM2LCA4OSwgMTAsIDE0LCAyMzYsIDg4LCAxMCwgMTQsIAotICAgIDIzNiwgODcsIDEwLCAxNCwgMjM2LCA4NiwgMTAsIDE0LCAyMzYsIDg1LCAxMCwgMTQsIDIzNiwgODQsIDEwLCAxNCwgMjM2LCAKLSAgICA4MywgMTAsIDE0LCAyMzYsIDgyLCAxMCwgMTQsIDIzNiwgODEsIDEwLCAxNCwgMjM2LCA4MCwgMTAsIDE0LCAyMzYsIDc5LCAKLSAgICAxMCwgMTQsIDIzNiwgNzgsIDEwLCAxNCwgMjM2LCA3NywgMTAsIDE0LCAyMzYsIDc2LCAxMCwgMTQsIDIzNiwgNzUsIDEwLCAKLSAgICAxNCwgMjM2LCA3NCwgMTAsIDE0LCAyMzYsIDczLCAxMCwgMTQsIDIzNiwgNzIsIDcsIDQsIDI3LCAyNDQsIDEzMywgNywgNCwgCi0gICAgMjcsIDI0NCwgMTI5LCA3LCA0LCAyNywgMjQ0LCA4NCwgNywgNCwgMjcsIDI0NCwgMTMyLCA3LCA0LCAyNywgMjQ0LCAxMzEsIAotICAgIDcsIDQsIDI3LCAyMDAsIDIyMiwgOTQsIDIxNywgMTUzLCA3LCA0LCAyNywgMjE4LCAxNzAsIDE1MCwgNCwgMjcsIDIzMSwgCi0gICAgNjQsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDI0NSwgMjIxLCAxNTAsIDQsIDI3LCAyMzEsIDY0LCAyMzUsIAotICAgIDIzNCwgMTUwLCA0LCAyNywgMjEzLCAxODAsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDIxMSwgMTYwLCA5NCwgMSwgCi0gICAgMjEwLCAyMzQsIDIsIDI0MSwgMTY1LCA5NCwgMjI1LCAxNCwgMjM1LCA1NiwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIAotICAgIDIxMCwgMjM0LCAyMTAsIDIzNCwgMjI1LCAyNDMsIDk0LCAxLCAyNTQsIDE0NywgMjUzLCAxNzAsIDk0LCAxLCAyMTEsIDI0NywgCi0gICAgMjU0LCAxNzksIDk0LCAxLCAyMTEsIDI0NywgMjQ4LCAxOTcsIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyNDUsIDk0LCAxLCAKLSAgICAyMTEsIDI0NywgMjM1LCAwLCA5NCwgMSwgMjExLCAyNDcsIDIzMywgMTAwLCA5NCwgMSwgMjExLCAyNDcsIDQwLCAyMzEsIAotICAgIDcwLCA5NCwgMSwgMjExLCAyNDcsIDIyMywgNzAsIDk0LCAxLCAyMTEsIDI0NywgMjE3LCAzOSwgOTQsIDEsIDI1NCwgMTQ3LCAKLSAgICA5NiwgNTAsIDk0LCAxLCAyMjAsIDIzLCAyLCAyMjAsIDIzLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDIxOSwgCi0gICAgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDI0OCwgMjE2LCAyMiwgMjIwLCAyMywgMjQ3LCAxMjgsIDk0LCAxLCAKLSAgICAyMjAsIDIzLCAyLCAyNDgsIDIxNiwgMjIsIDIxOSwgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDEwOSwgMiwgMjI1LCAyNDMsIAotICAgIDk0LCAxLCAxMDksIDIsIDIyNCwgNzksIDk0LCAxLCAxMDksIDIsIDIzMSwgMTc2LCA5NCwgMSwgMjUyLCAzNywgMiwgMjQ4LCAKLSAgICAyMTUsIDk0LCAxLCAyNDIsIDIwOSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyNDgsIDE5OCwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyNDEsIDI0NiwgMiwgMjMxLCAxNzYsIDk0LCAxLCAyMTQsIDQsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjEwLCA5OCwgMiwgCi0gICAgMjQ4LCAyMTUsIDk0LCAxLCAyMTYsIDIzMiwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCA0MCwgMjM1LCAxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIzNSwgMSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzMsIDEwMSwgCi0gICAgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzEsIDcxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIyNywgMTk5LCAyLCAyNDgsIDIxNSwgCi0gICAgOTQsIDEsIDIyMSwgMjUyLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDQwLCAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTUsIDE4MSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMjQsIDQzLCAyLCAKLSAgICAyNDgsIDIxNSwgOTQsIDEsIDIyMywgNzEsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjIwLCAyMywgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCAyMTcsIDQwLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIxNCwgNCwgMiwgMjQxLCA2OCwgOTQsIDEsIDI1MiwgMzcsIDIsIAotICAgIDIyMywgMTcyLCA5NCwgMSwgMjM1LCAxLCAyLCAyMjMsIDE3MiwgOTQsIDEsIDIyNSwgMjI1LCAyLCAyMjMsIDE3MiwgOTQsIAotICAgIDI3LCAxMDksIDIzMywgMTAwLCA5LCAxLCAxMDksIDIxMiwgNDcsIDUzLCAxNywgOSwgMSwgMTA5LCAyMTIsIDQ3LCA0MCwgCi0gICAgMTcsIDksIDEsIDI1MiwgNzMsIDUzLCAxNywgOSwgMSwgMjUyLCA3MywgNDAsIDE3LCA5LCAxLCAyNTIsIDczLCA2NSwgMTcsIAotICAgIDksIDEsIDI1MiwgNzMsIDE0NywgMTcsIDksIDEsIDIyNSwgMjA5LCA1MywgMTcsIDksIDEsIDIyNSwgMjA5LCA0MCwgMTcsIAotICAgIDksIDEsIDIyNSwgMjA5LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA5LCAxNDcsIDE3LCA5LCAxLCAyNTIsIDYxLCA1MywgMTcsIAotICAgIDksIDEsIDI1MiwgNjEsIDQwLCAxNywgOSwgMSwgMjUyLCA2MSwgNjUsIDE3LCA5LCAxLCAyNTIsIDYxLCAxNDcsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgNTMsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNjUsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCA3LCA1MywgMTcsIDksIDEsIDIxNywgNywgNDAsIDE3LCA5LCAxLCAKLSAgICAyMTcsIDcsIDY1LCAxNywgOSwgMSwgMjE3LCA3LCAxNDcsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNTMsIDE3LCA5LCAxLCAyMTUsIAotICAgIDE1MCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNjUsIDE3LCA5LCAxLCAyMTUsIDE1MCwgMTQ3LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDUzLCAxNywgOSwgMSwgMjEzLCAyNDksIDQwLCAxNywgOSwgMSwgMjEzLCAyNDksIDY1LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDE0NywgMTcsIDksIDEsIDIyNSwgMjA3LCA1MywgMTcsIDksIDEsIDIyNSwgMjA3LCA0MCwgMTcsIDksIDEsIDIyNSwgCi0gICAgMjA3LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA3LCAxNDcsIDE3LCA5LCAxLCAyNDYsIDUyLCA1MywgMTcsIDksIDEsIDI0NiwgCi0gICAgNTIsIDQwLCAxNywgOSwgMSwgMjQ2LCA1MiwgNjUsIDE3LCA5LCAxLCAyNDYsIDUyLCAxNDcsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgNTMsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNDAsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNjUsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyOCwgNTMsIDE3LCA5LCAxLCAyMTcsIDI4LCA0MCwgMTcsIDksIDEsIDIxNywgCi0gICAgMjgsIDY1LCAxNywgOSwgMSwgMjE3LCAyOCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyNiwgNTMsIDE3LCA5LCAxLCAyMTcsIDI2LCAKLSAgICA0MCwgMTcsIDksIDEsIDIxNywgMjYsIDY1LCAxNywgOSwgMSwgMjE3LCAyNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAxNDEsIAotICAgIDUzLCAxNywgOSwgMSwgMjQ4LCAxNDEsIDQwLCAxNywgOSwgMSwgMjQ4LCAyMTAsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMTAsIAotICAgIDQwLCAxNywgOSwgMSwgMjQ2LCA3OSwgNTMsIDE3LCA5LCAxLCAyNDYsIDc5LCA0MCwgMTcsIDksIDEsIDI0OCwgMTM5LCA1MywgCi0gICAgMTcsIDksIDEsIDI0OCwgMTM5LCA0MCwgMTcsIDksIDEsIDIzNSwgMTI3LCA1MywgMTcsIDksIDEsIDIzNSwgMTI3LCA0MCwgCi0gICAgMTcsIDksIDEsIDIyMiwgMTc0LCA1MywgMTcsIDksIDEsIDIyMiwgMTc0LCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA1MywgCi0gICAgMTcsIDksIDEsIDIzNCwgMTgxLCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA2NSwgMTcsIDksIDEsIDIzNCwgMTgxLCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgNTMsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNDAsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgMTQ3LCAxNywgOSwgMSwgMjQyLCAxMDksIDUzLCAxNywgOSwgMSwgMjQyLCAxMDksIDQwLCAKLSAgICAxNywgOSwgMSwgMjQyLCAxMDksIDY1LCAxNywgOSwgMSwgMjQyLCAxMDksIDE0NywgMTcsIDksIDEsIDIyOSwgOCwgNTMsIAotICAgIDE3LCA5LCAxLCAyMjksIDgsIDQwLCAxNywgOSwgMSwgMjI5LCA4LCA2NSwgMTcsIDksIDEsIDIyOSwgOCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDUzLCAxNywgOSwgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDQwLCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDUzLCAxNywgOSwgMSwgMjIyLCAyMTcsIDQwLCAxNywgOSwgMSwgMjIyLCAyMTcsIDY1LCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDE0NywgMTcsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNzIsIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDIsIDc3LCAKLSAgICA3MiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAKLSAgICA0MCwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDIsIDE3OSwgNjUsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDE0NywgCi0gICAgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQ3LCAxNTAsIDQwLCAxNywgCi0gICAgOSwgMSwgMjQxLCAyMjYsIDI0NywgMTUwLCA2NSwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgNzcsIDI1MiwgMTQxLCA1MywgMTcsIDksIDEsIDc3LCAyNTIsIDE0MSwgNDAsIDE3LCA5LCAxLCA3NywgMjUyLCAxNDEsIAotICAgIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDE2LCA1OSwgCi0gICAgNDgsIDksIDE2LCA1OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgNDgsIDksIDE2LCAxMTMsIDE3MCwgNTEsIDksIDE2LCAxMzQsIAotICAgIDE3MCwgNDgsIDksIDE2LCAxMzQsIDE3MCwgNTEsIDksIDE2LCAxMzQsIDE3MCwgMjI1LCAxMCwgMjQ2LCAxMTIsIDQ4LCA5LCAKLSAgICAxNiwgMTM0LCAxNzAsIDIyNSwgMTAsIDI0NiwgMTEyLCA1MSwgOSwgMTYsIDI0NCwgMTksIDE3MCwgNDgsIDksIDE2LCAyNDQsIAotICAgIDE5LCAxNzAsIDUxLCA5LCAxNiwgNTIsIDY3LCAyNTIsIDE0OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAKLSAgICA5LCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgOSwgMTYsIDIyMiwgMjM2LCA5LCAxNiwgNCwgMjE3LCA4MiwgNDgsIDksIAotICAgIDE2LCA0LCAyMTcsIDgyLCA1MSwgOSwgMSwgMjI5LCA4NSwgNTMsIDE3LCA5LCAxLCAyMjksIDg1LCA0MCwgMTcsIDksIDEsIAotICAgIDIyOSwgODUsIDY1LCAxNywgOSwgMSwgMjI5LCA4NSwgMTQ3LCAxNywgOSwgMSwgMTA0LCA1MywgMTcsIDksIDEsIDEwNCwgCi0gICAgNDAsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMTAsIDIxMywgCi0gICAgNTMsIDE3LCA5LCAxLCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxMDQsIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgMjE0LCAKLSAgICAwLCA1MywgMTcsIDksIDEsIDIxNCwgMCwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDc5LCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMywgNTMsIDE3LCA5LCAxLCAyMzQsIAotICAgIDc5LCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxNjAsIDUzLCAxNywgOSwgMSwgMTYwLCA0MCwgMTcsIDksIDEsIDE2MCwgCi0gICAgNjUsIDE3LCA5LCAxLCAxNjAsIDE0NywgMTcsIDksIDEsIDIxNCwgMjA3LCAyMzQsIDE5MiwgMjM0LCA3OSwgMTA5LCAyMzEsIAotICAgIDE5OCwgNjUsIDE3LCA5LCAxLCAyMTQsIDIwNywgMjM0LCAxOTIsIDIzNCwgNzksIDEwOSwgMjMxLCAxOTgsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA0MCwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjU0LCAyNTMsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAKLSAgICAyNTQsIDI1MywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIxMiwgMzEsIDUzLCAxNywgOSwgMjcsIDc3LCAKLSAgICAyLCAxODIsIDcyLCAyLCAyMTIsIDMxLCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA1MywgMTcsIDksIAotICAgIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjI2LCAyMzksIAotICAgIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDIxMCwgMjEzLCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEwLCAyMTMsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDQwLCAKLSAgICAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDY1LCAxNywgOSwgMjcsIDIxNCwgMjA3LCAyMzQsIDc5LCA3NywgCi0gICAgMiwgMTgyLCA3MiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjE0LCAyMDcsIDIzNCwgNzksIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTQsIDIwNywgMjM0LCA3OSwgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCA1MywgMTcsIDksIDEsIDI0NCwgMTc2LCAKLSAgICA3NywgNDAsIDE3LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCAxNDcsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEyMiwgNTMsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAKLSAgICAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgCi0gICAgMTk4LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxNTEsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIAotICAgIDI3LCAyMTcsIDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIxNywgOSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIxNiwgCi0gICAgMTk0LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDIxNiwgMTk0LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzQsIDEzNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMzQsIAotICAgIDEzNiwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAKLSAgICAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIAotICAgIDY2LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCA1MywgCi0gICAgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTIyLCA1MywgMTcsIDksIAotICAgIDI3LCAyNDgsIDIyNSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjE3LCA4MiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjEwLCAxMTIsIAotICAgIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjQ0LCAxNTEsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0NCwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNzcsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIyNCwgODUsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyNCwgCi0gICAgODUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzUsIAotICAgIDEsIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTIyLCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIzMywgMTA5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDc3LCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgCi0gICAgMTIyLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCA5LCAKLSAgICAyNywgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIAotICAgIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCAxNTEsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDEwOSwgMjMxLCAKLSAgICAxOTgsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE1MSwgNTMsIDE3LCAKLSAgICA5LCAyNywgNzcsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgCi0gICAgNjYsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCA3NywgMiwgNzcsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNiwgMjA0LCAyLCAyMTgsIDI0LCAxMDksIDUzLCAxNywgOSwgMjcsIDIyMywgOTksIDIsIDIxOCwgMjQsIAotICAgIDEwOSwgNTMsIDE3LCA5LCAyNywgMTA5LCAyMzEsIDE5OCwgMiwgMjE4LCAyNCwgMTA5LCA1MywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyNywgMjIwLCA5NiwgMiwgMjM0LCAyMTAsIDUzLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgOTYsIDIsIDI0NCwgMTc0LCA1MywgMTcsIDksIDI3LCAyMjAsIDk2LCAyLCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNywgMjIwLCAKLSAgICA5NiwgMiwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDIxOCwgMjQsIDEwOSwgNTMsIDE3LCA5LCAyNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMTAsIDEwOSwgCi0gICAgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgCi0gICAgMjI4LCA2OCwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjUyLCA2MywgMiwgMjEwLCAxMDksIDQwLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAyMjgsIDY4LCA0MCwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNTIsIDYzLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIyOCwgCi0gICAgNjgsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyMTAsIAotICAgIDEwOSwgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMjI4LCA2OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgCi0gICAgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA3NywgNDAsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDEwOSwgNDAsIDE3LCA5LCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgCi0gICAgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDEwOSwgCi0gICAgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMDksIDIzMSwgMTk4LCAyLCAKLSAgICAyMTgsIDI0LCAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMjEwLCAKLSAgICAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDE1MSwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIAotICAgIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIxNywgCi0gICAgOSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgCi0gICAgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDY1LCAKLSAgICAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAxMjIsIDIsIAotICAgIDY2LCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxMjIsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIAotICAgIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDY1LCAxNywgOSwgCi0gICAgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAKLSAgICAxNTEsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTUxLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzUsIDEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjM1LCAxLCAyLCAyMzMsIDEwOSwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjMzLCAKLSAgICAxMDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIAotICAgIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMzQsIAotICAgIDEzNiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDI0MSwgMjI2LCAKLSAgICA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDY1LCAxNywgCi0gICAgOSwgMjcsIDI0MSwgMjI2LCAyLCAyMTgsIDI0LCAxMDksIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxNTEsIDY1LCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAKLSAgICA2NSwgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgCi0gICAgMTA5LCAxNDcsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMTQ3LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMTQ3LCAKLSAgICAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgNjYsIDE0NywgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDQsIDE3NCwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDI0OCwgMTkzLCAxNDcsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA5NiwgMiwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIAotICAgIDksIDI3LCAyMTcsIDgyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgCi0gICAgOSwgMjcsIDI1NCwgMjA2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIAotICAgIDE3LCA5LCAyNywgMTIyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIAotICAgIDI3LCAxNTEsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjM0LCAxMzYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0OCwgMjI1LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAKLSAgICAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICA2NiwgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgCi0gICAgOTksIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIAotICAgIDk5LCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgCi0gICAgMjUyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDIyMSwgMTY5LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA2MiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTIyLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDc3LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjM0LCAxMzYsIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgOTksIDQwLCAKLSAgICAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIDk5LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIwLCA2MiwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjEsIDE2OSwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIDksIAotICAgIDI3LCAyMTcsIDgyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgCi0gICAgMTY5LCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjM0LCAxMzYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDYyLCAyLCAxNTEsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgNDAsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgCi0gICAgNTMsIDE3LCAyMjYsIDE1MCwgNDMsIDIyNiwgNywgMjI2LCAxNTAsIDQ0LCAyMjYsIDcsIDksIDI3LCAyMTcsIDksIDIsIAotICAgIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCAxNTEsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgCi0gICAgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCAKLSAgICA5LCAyLCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjE3LCA5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCi0gICAgOSwgMjcsIDEyMiwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCAyLCAxMDksIDIzMSwgMTk4LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIAotICAgIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIxLCAxNjksIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIAotICAgIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMTIyLCAyLCAKLSAgICAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIAotICAgIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgNjIsIDIsIDY2LCAyLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIDIsIDIzNCwgMTM2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAyLCA2NiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ4LCAKLSAgICAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgCi0gICAgNzcsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgCi0gICAgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNTQsIAotICAgIDIwNiwgMiwgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNjYsIDQwLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgCi0gICAgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCAKLSAgICA2NiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgCi0gICAgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAKLSAgICAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAxNTEsIAotICAgIDIsIDY2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDI0MSwgCi0gICAgMjI2LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjUyLCA2MywgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgMiwgNzcsIAotICAgIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIAotICAgIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIAotICAgIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNDgsIDIyNSwgMiwgMTIyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgCi0gICAgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgCi0gICAgNjYsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDY2LCAyLCA3NywgNDAsIAotICAgIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTIyLCAKLSAgICA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTUxLCAKLSAgICAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMTUxLCAKLSAgICAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxNTEsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjU0LCAyMDYsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCA3NywgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIyLCA2LCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIAotICAgIDksIDI3LCAyMjQsIDgxLCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIDksIDI3LCAKLSAgICAyNTQsIDE2MiwgNTMsIDE3LCA5LCAyNywgMjU0LCAxOTIsIDUzLCAxNywgOSwgMjcsIDIzMCwgMTU4LCA1MywgMTcsIDksIAotICAgIDI3LCAyMjIsIDcsIDUzLCAxNywgOSwgMjcsIDIyMywgMTQ2LCA1MywgMTcsIDksIDI3LCAyNTQsIDE4MSwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjEyLCA0OSwgNTMsIDE3LCA5LCAyNywgMjIyLCA2LCA1MywgMTcsIDksIDI3LCAyMjIsIDUsIDI1NCwgMTgxLCAyMTIsIAotICAgIDQ4LCA5LCAyNywgMjM1LCAxNDAsIDIyMywgMzcsIDUwLCA5LCAyNywgMjUxLCAyMzgsIDI1NCwgNDcsIDI1NCwgNDgsIDQ1LCAKLSAgICAyMjEsIDE1OCwgNDUsIDIyMSwgNDcsIDQ1LCAyMjAsIDIzNSwgNDUsIDIyMCwgMjI0LCA0NSwgMjIwLCAyMTMsIDQ1LCAyMjAsIAotICAgIDIwMiwgNDUsIDIyMCwgMTkxLCA0NSwgMjIwLCAxODAsIDQ1LCAyMjAsIDE2OSwgNDUsIDIyMSwgMTU3LCA0NSwgMjIxLCAKLSAgICAxNDYsIDQ1LCAyMjEsIDEzNSwgNDUsIDIyMSwgMTI0LCA0NSwgMjIxLCAxMTMsIDQ1LCAyMjEsIDEwMiwgNDUsIDIyMSwgOTEsIAotICAgIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDI0OSwgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0OSwgCi0gICAgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjI0LCAxOTcsIDI0NCwgCi0gICAgMjgsIDMxLCA2NywgMjQ5LCAyMzQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDIyMCwgMTUyLCAyMjQsIDE5NywgMjQ0LCAKLSAgICAyOCwgMzEsIDY3LCAyNDUsIDM5LCA3OSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjI0LCAxNiwgNzksIDIyNCwgCi0gICAgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAKLSAgICA0NCwgNzEsIDIzMywgMjYsIDI1MSwgMTY0LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyMDMsIDI0NSwgMTcxLCAzOCwgCi0gICAgMjcsIDQzLCAyNDIsIDM0LCAzOCwgMjcsIDQ0LCAyNDIsIDM0LCAzOCwgNTIsIDIxNiwgOTAsIDQzLCAyNDIsIDM0LCAzOCwgCi0gICAgNTIsIDIxNiwgOTAsIDQ0LCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQzLCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQ0LCAKLSAgICAyNDIsIDM0LCAzOCwgMjQ5LCAyMDUsIDIzMSwgMjM3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIAotICAgIDYyLCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyNDUsIDE2OCwgMjQ4LCAxNjQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDI0NSwgMTU5LCAyNDgsIDE2NCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMTIxLCAyMzIsIDIxOSwgMjI0LCAKLSAgICAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgCi0gICAgNDMsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDMsIDI0OSwgMTA3LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCAyNDksIDEwNywgMTI3LCAyMjQsIAotICAgIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDI2LCAKLSAgICAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA4NSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgCi0gICAgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAKLSAgICAxMTgsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIAotICAgIDI4LCAzMSwgNjcsIDQ0LCAyNTQsIDExOCwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjQ5LCAxNjksIAotICAgIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDI0OSwgMTY5LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA3MSwgMjQ5LCAxNjksIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2OSwgCi0gICAgMTI3LCAyMjAsIDEzMywgMjQ3LCAxMjgsIDcxLCAyMjAsIDEzMywgMjQ3LCAxMjgsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNjMsIDIyNiwgCi0gICAgMTIzLCAyNTAsIDE4MCwgMjI2LCAxMjMsIDIxMiwgMzIsIDIyNiwgMTIzLCA1MiwgMjEyLCAzMiwgMjI2LCAxMjMsIDI0OCwgCi0gICAgMTYzLCAxMjEsIDIzMiwgMjE5LCAyNTAsIDE4MCwgMTIxLCAyMzIsIDIxOSwgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgNCwgCi0gICAgMjQ5LCAyMjcsIDQsIDExMCwgMjQ5LCAyMjcsIDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNCwgMjIwLCAxNTIsIDQsIDI0OSwgCi0gICAgMjM0LCA0LCAyMjQsIDE2LCA3OSwgNCwgMjQ1LCAzOSwgNzksIDQsIDI0NSwgMTY4LCAyNDgsIDE2NCwgNCwgNDMsIDIyNiwgCi0gICAgNywgNCwgNDQsIDIyNiwgNywgNCwgNDMsIDI0OSwgMTA3LCAxMjcsIDQsIDQ0LCAyNDksIDEwNywgMTI3LCA0LCA0MywgMjE2LCAKLSAgICA3LCAyMjAsIDU1LCAxMjcsIDQsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEzNCwgNCwgCi0gICAgMjUzLCAyMjQsIDQsIDk2LCA1MCwgNCwgMjQwLCAxNzQsIDQsIDIzMywgMjEsIDUwLCA0LCAyNDIsIDEzNywgNTAsIDQsIAotICAgIDI0NSwgMTA2LCA1MCwgNCwgMjIzLCA1MywgMjE5LCA0OCwgNCwgMjQ3LCAxNDAsIDUwLCA0LCAyMjUsIDE4NSwgNTAsIDQsIAotICAgIDI0OSwgMjI1LCAyNTMsIDIxNCwgOSwgMjQ0LCAxNzIsIDUzLCAxNywgOSwgMjE3LCA0NSwgMiwgMjQ0LCAxNzIsIDQ4LCA5LCAKLSAgICAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyMTcsIDc5LCAyNDQsIDksIDksIDIzNCwgMjEwLCA1MywgMTcsIDksIDI0NCwgMTc0LCAKLSAgICA1MywgMTcsIDksIDI0NCwgMTc0LCAxNDcsIDE3LCA5LCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNDgsIDE5MywgMTQ3LCAxNywgCi0gICAgOSwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDIyMCwgOTYsIDUzLCAxNywgOSwgMjIwLCAKLSAgICA5NiwgMTQ3LCAxNywgOSwgMjE4LCA0NywgNTMsIDE3LCA5LCAyMTgsIDQ3LCAxNDcsIDE3LCA5LCAxLCAxODIsIDUzLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDQwLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDEwOSwgMiwgMTgyLCA3MiwgNDAsIDE3LCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDIxMiwgMzEsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgMTA5LCAyLCAKLSAgICAxODIsIDI1MiwgNTEsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAxODIsIDI1MiwgNTEsIDQwLCAxNywgOSwgMSwgNzcsIDIsIAotICAgIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDY1LCAKLSAgICAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDE0NywgMTcsIDksIDEsIDEwOSwgNTMsIDE3LCA5LCAxLCAxMDksIDQwLCAxNywgCi0gICAgOSwgMSwgMjUyLCA2MywgNTMsIDE3LCA5LCAxLCAyNTIsIDYzLCA0MCwgMTcsIDksIDEsIDI1MiwgNjMsIDY1LCAxNywgOSwgCi0gICAgMSwgMjUyLCA2MywgMTQ3LCAxNywgOSwgMSwgMjE3LCA5LCAyMzEsIDE3MCwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCA0MCwgMTcsIDksIDEsIDIxNywgOSwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDQwLCAxNywgOSwgMSwgMjE3LCA5LCAKLSAgICA2NSwgMTcsIDksIDEsIDIxNywgOSwgMTQ3LCAxNywgOSwgMSwgMjE2LCAxOTQsIDUzLCAxNywgOSwgMSwgMjE2LCAxOTQsIAotICAgIDQwLCAxNywgOSwgMSwgMjE2LCAxOTQsIDY1LCAxNywgOSwgMSwgMjE2LCAxOTQsIDE0NywgMTcsIDksIDEsIDE1MSwgNTMsIAotICAgIDE3LCA5LCAxLCAxNTEsIDQwLCAxNywgOSwgMSwgMTUxLCA2NSwgMTcsIDksIDEsIDE1MSwgMTQ3LCAxNywgOSwgMSwgMTIyLCAKLSAgICA1MywgMTcsIDksIDEsIDEyMiwgNDAsIDE3LCA5LCAxLCAxMjIsIDY1LCAxNywgOSwgMSwgMTIyLCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgNTMsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAyMDQsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMDQsIDQwLCAxNywgOSwgMSwgCi0gICAgMjE2LCAyMDQsIDUzLCAxNywgOSwgMSwgMjE2LCAyMDQsIDQwLCAxNywgOSwgMSwgMjIzLCA5OSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDEsIDIxMCwgMTA5LCA1MywgMTcsIDksIDEsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCA1MywgMTcsIDksIDEsIDIyMSwgMTY5LCA0MCwgMTcsIDksIDEsIDIyMSwgMTY5LCA2NSwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCAxNDcsIDE3LCA5LCAxLCAyMjAsIDYyLCA1MywgMTcsIDksIDEsIDIyMCwgNjIsIDQwLCAxNywgOSwgMSwgCi0gICAgMjIwLCA2MiwgNjUsIDE3LCA5LCAxLCAyMjAsIDYyLCAxNDcsIDE3LCA5LCAxLCAyMjIsIDI5LCA1MywgMTcsIDksIDEsIAotICAgIDIyMiwgMjksIDQwLCAxNywgOSwgMSwgMjIyLCAyOSwgNjUsIDE3LCA5LCAxLCAyMjIsIDI5LCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgNTMsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNDAsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNjUsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgMTQ3LCAxNywgOSwgMSwgMjE3LCA4MiwgNTMsIDE3LCA5LCAxLCAyMTcsIDgyLCA0MCwgMTcsIDksIDEsIAotICAgIDIxNywgODIsIDY1LCAxNywgOSwgMSwgMjE3LCA4MiwgMTQ3LCAxNywgOSwgMSwgMjEwLCAxMTIsIDUzLCAxNywgOSwgMSwgCi0gICAgMjEwLCAxMTIsIDQwLCAxNywgOSwgMSwgMjEwLCAxMTIsIDY1LCAxNywgOSwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCA1MywgMTcsIDksIDEsIDI1NCwgMjA2LCA0MCwgMTcsIDksIDEsIDI1NCwgMjA2LCA2NSwgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCAxNDcsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNTMsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNDAsIDE3LCA5LCAxLCAKLSAgICAyNDIsIDI1MiwgNjUsIDE3LCA5LCAxLCAyNDIsIDI1MiwgMTQ3LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDUzLCAxNywgOSwgMSwgCi0gICAgMjQ0LCAxNTEsIDQwLCAxNywgOSwgMSwgMjQ0LCAxNTEsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDE0NywgMTcsIDksIDEsIAotICAgIDIyNCwgODUsIDUzLCAxNywgOSwgMSwgMjI0LCA4NSwgNDAsIDE3LCA5LCAxLCAyMjQsIDg1LCA2NSwgMTcsIDksIDEsIDIyNCwgCi0gICAgODUsIDE0NywgMTcsIDksIDEsIDIzNSwgMSwgNTMsIDE3LCA5LCAxLCAyMzUsIDEsIDQwLCAxNywgOSwgMSwgMjM1LCAxLCAKLSAgICA2NSwgMTcsIDksIDEsIDIzNSwgMSwgMTQ3LCAxNywgOSwgMSwgMjMzLCAxMDksIDUzLCAxNywgOSwgMSwgMjMzLCAxMDksIAotICAgIDQwLCAxNywgOSwgMSwgMjMzLCAxMDksIDY1LCAxNywgOSwgMSwgMjMzLCAxMDksIDE0NywgMTcsIDksIDEsIDY2LCA1MywgCi0gICAgMTcsIDksIDEsIDY2LCA0MCwgMTcsIDksIDEsIDY2LCA2NSwgMTcsIDksIDEsIDY2LCAxNDcsIDE3LCA5LCAxLCAyMjgsIDY4LCAKLSAgICA1MywgMTcsIDksIDEsIDIyOCwgNjgsIDQwLCAxNywgOSwgMSwgMjI4LCA2OCwgNjUsIDE3LCA5LCAxLCAyMjgsIDY4LCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMSwgMjEyLCAzMSwgNTMsIDE3LCA5LCAxLCAyMTIsIDMxLCA0MCwgCi0gICAgMTcsIDksIDEsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMSwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAxLCA3NywgCi0gICAgNTMsIDE3LCA5LCAxLCA3NywgNDAsIDE3LCA5LCAxLCA3NywgNjUsIDE3LCA5LCAxLCA3NywgMTQ3LCAxNywgOSwgMjcsIAotICAgIDIzMywgMTA5LCAyLCAxMDksIDIsIDIzMSwgMjMzLCA3MiwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgMiwgCi0gICAgMjMxLCAyMzMsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIAotICAgIDI1MiwgNTEsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgMjUyLCA1MSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjMzLCAxMDksIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIAotICAgIDI0NSwgMjI4LCA3OCwgMjE5LCAyMCwgMTI2LCAyNDUsIDM5LCA3OSwgMTI2LCAyMjQsIDEsIDc5LCAxMjYsIDU0LCA1MCwgCi0gICAgMTI2LCAyNDcsIDE0MCwgNTAsIDEyNiwgMjI1LCAxODUsIDUwLCAxMjYsIDI1NCwgMTM0LCAxMjYsIDI1NCwgNjUsIDEyNiwgCi0gICAgNDMsIDIyNiwgNywgMTI2LCA0NCwgMjI2LCA3LCAxMjYsIDI1MywgMjI0LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIyNywgCi0gICAgMTI2LCAyNDAsIDE3NCwgMTI2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDEyNiwgMjE5LCA0OCwgMTI2LCAyMSwgMjEwLCA4NiwgCi0gICAgMTI2LCAyMSwgMTExLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxOTAsIAotICAgIDEyNiwgMjEsIDE5NSwgMTI2LCAyMSwgMTk5LCAxMjYsIDIxLCAxOTYsIDEyNiwgMjEsIDIwMSwgMTI2LCAyNDksIDIzNCwgCi0gICAgMTI2LCAyMjAsIDE1MiwgMTI2LCAyMzMsIDIxLCA1MCwgMTI2LCAyNDUsIDEwNiwgNTAsIDEyNiwgMjQyLCAxMzcsIDUwLCAKLSAgICAxMjYsIDIyNCwgMTYsIDc5LCAxMjYsIDI0OSwgMjI1LCAyNTMsIDIxNCwgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAKLSAgICAxLCAyNTMsIDE2NiwgMTI2LCA3LCA2LCAxLCAyNTEsIDc0LCAxMjYsIDcsIDYsIDEsIDI0OSwgNjgsIDEyNiwgNywgNiwgMSwgCi0gICAgNzYsIDEyNiwgNywgNiwgMSwgMjQ1LCAxNCwgMTI2LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA2LCAxLCAyNDIsIDY3LCAKLSAgICAxMjYsIDcsIDYsIDEsIDc0LCAxMjYsIDcsIDYsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDYsIDEsIDIzNSwgMjksIDEyNiwgNywgCi0gICAgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5NCwgMTI2LCA3LCA2LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDYsIDEsIDc4LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIyNiwgMTA5LCAxMjYsIDcsIDYsIDEsIDIyNCwgOTksIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIAotICAgIDYsIDEsIDIyMiwgOTMsIDEyNiwgNywgNiwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgCi0gICAgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgNDIsIDEyNywgMTI2LCAyMjMsIDUzLCAyMTksIAotICAgIDQ4LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzksIDI1NSwgMjMsIDEyNiwgMTIxLCAyMzIsIDIxOSwgMTI2LCAKLSAgICAyNDIsIDE0NCwgMjU1LCAyMywgMTI2LCA3LCA0LCAxLCA2MSwgMTI2LCA3LCA0LCAxLCAyNTMsIDE2NiwgMTI2LCA3LCA0LCAKLSAgICAxLCAyNTEsIDc0LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjgsIDEyNiwgNywgNCwgMSwgNzYsIDEyNiwgNywgNCwgMSwgMjQ1LCAKLSAgICAxNCwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA0LCAxLCAyNDIsIDY3LCAxMjYsIDcsIDQsIDEsIDc0LCAxMjYsIAotICAgIDcsIDQsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDQsIDEsIDIzNSwgMjksIDEyNiwgNywgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIAotICAgIDEsIDE5NCwgMTI2LCA3LCA0LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDQsIDEsIDc4LCAxMjYsIDcsIDQsIDEsIDIyNiwgMTA5LCAKLSAgICAxMjYsIDcsIDQsIDEsIDIyNCwgOTksIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIDQsIDEsIDIyMiwgOTMsIDEyNiwgNywgCi0gICAgNCwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNCwgMSwgNjksIDEyNiwgNywgNCwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgCi0gICAgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAKLSAgICAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCAxMDcsIDEyNywgMTI2LCA2NywgMjMyLCAyMTksIDEyNiwgNDQsIDI0OSwgMTA3LCAKLSAgICAxMjcsIDEyNiwgMTg0LCAxMjYsIDQzLCA3MSwgMjI2LCA3LCAxMjYsIDQ0LCA3MSwgMjI2LCA3LCAxMDEsIDExMCwgMjQzLCAKLSAgICAyMzYsIDIxOCwgMTMxLCAxMDEsIDQzLCAyNDksIDE2OSwgMTI3LCAxMDEsIDQ0LCAyNDksIDE2OSwgMTI3LCAxMDEsIDExMCwgCi0gICAgMjQ5LCAyMjcsIDEwMSwgNTYsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTAxLCA1NiwgMSwgMjExLCAyMjcsIDEwMSwgNTYsIDEsIAotICAgIDQsIDYxLCAxMDEsIDU2LCAxLCA0LCA3NCwgMTAxLCA1NiwgMSwgNCwgNjksIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA0LCA3OCwgMTAxLCA1NiwgMSwgNCwgMTkyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgNCwgCi0gICAgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDQsIDIxNSwgMTE5LCAxMDEsIDIzNCwgMjA3LCAyMjQsIDE3NiwgMjE5LCAzMywgNzksIAotICAgIDEwMSwgNTYsIDEsIDYxLCAxMDEsIDU2LCAxLCA3NCwgMTAxLCA1NiwgMSwgNjksIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA3OCwgMTAxLCA1NiwgMSwgMTc2LCAxMDEsIDU2LCAxLCAyMzQsIDk4LCAxMDEsIDU2LCAxLCAyMzMsIDIyMywgMTAxLCAKLSAgICA1NiwgMSwgMjM0LCAxODgsIDEwMSwgNTYsIDEsIDIzNCwgMzQsIDEwMSwgNTYsIDEsIDIwNiwgMTAxLCA1NiwgMSwgMjE5LCAKLSAgICAxOTMsIDEwMSwgNTYsIDEsIDIxOCwgODQsIDEwMSwgNTYsIDEsIDIyMSwgMTgzLCAxMDEsIDU2LCAxLCAyMTksIDYwLCAxMDEsIAotICAgIDU2LCAxLCAyMTcsIDEwNiwgMTAxLCA1NiwgMSwgMjE2LCAxMTgsIDEwMSwgNTYsIDEsIDIxNSwgMTE5LCAxMDEsIDU2LCAxLCAKLSAgICAyMTcsIDIzLCAxMDEsIDU2LCAxLCAxMTIsIDEwMSwgNTYsIDEsIDE5OCwgMTAxLCA1NiwgMSwgMjI4LCAyMzgsIDEwMSwgNTYsIAotICAgIDEsIDIyNywgMjQyLCAxMDEsIDU2LCAxLCAyMjksIDExMiwgMTAxLCA1NiwgMSwgMjI4LCA3OSwgMTAxLCA1NiwgMSwgMTYyLCAKLSAgICAxMDEsIDU2LCAxLCAyNDEsIDE4NywgMTAxLCA1NiwgMSwgMjQwLCAyMjksIDEwMSwgNTYsIDEsIDI0MSwgMjQ1LCAxMDEsIAotICAgIDU2LCAxLCAyNDEsIDc1LCAxMDEsIDU2LCAxLCAxODYsIDEwMSwgNTYsIDEsIDIzMCwgMjM1LCAxMDEsIDU2LCAxLCAyMzAsIAotICAgIDEwNywgMTAxLCA1NiwgMSwgMjMxLCA5NiwgMTAxLCA1NiwgMSwgMjMwLCAxNjYsIDEwMSwgNTYsIDEsIDE5MiwgMTAxLCA1NiwgCi0gICAgMSwgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCAyMDUsIDEwMSwgNTYsIDEsIDIyMywgMzgsIAotICAgIDEwMSwgNTYsIDEsIDIyMiwgMTQyLCAxMDEsIDU2LCAxLCAyMjMsIDEzMSwgMTAxLCA1NiwgMSwgMjIyLCAyMTMsIDEwMSwgCi0gICAgNTYsIDEsIDIxMiwgNjUsIDEwMSwgNTYsIDEsIDIzMCwgMzAsIDEwMSwgNTYsIDIxMywgMTM1LCAyMTksIDMzLCA3OSwgMTAxLCAKLSAgICA1NiwgMjIwLCAxNTcsIDIxOSwgMzMsIDc5LCAxMDEsIDI0LCAyNDQsIDExMSwgMTAxLCAyNCwgMSwgMjM0LCA2NCwgMTAxLCAKLSAgICAyNCwgMSwgMjE4LCAyMTcsIDEwMSwgMjQsIDEsIDIzNCwgNTcsIDEwMSwgMjQsIDEsIDIyOCwgMjMxLCAxMDEsIDI0LCAxLCAKLSAgICAyMjgsIDIyOSwgMTAxLCAyNCwgMSwgMjI4LCAyMjgsIDEwMSwgMjQsIDEsIDIxNiwgMTAyLCAxMDEsIDI0LCAxLCAyMTgsIAotICAgIDIwNiwgMTAxLCAyNCwgMSwgMjIzLCAyOSwgMTAxLCAyNCwgMSwgMjIzLCAyNCwgMTAxLCAyNCwgMSwgMjIzLCAyMSwgMTAxLCAKLSAgICAyNCwgMSwgMjIzLCAxNCwgMTAxLCAyNCwgMSwgMjIzLCA5LCAxMDEsIDI0LCAxLCAyMjMsIDQsIDEwMSwgMjQsIDEsIDIyMywgCi0gICAgMTUsIDEwMSwgMjQsIDEsIDIyMywgMjcsIDEwMSwgMjQsIDEsIDIzMCwgMjIyLCAxMDEsIDI0LCAxLCAyMjUsIDk4LCAxMDEsIAotICAgIDI0LCAxLCAyMTgsIDIxNCwgMTAxLCAyNCwgMSwgMjI1LCA4NywgMTAxLCAyNCwgMSwgMjE5LCAxNTAsIDEwMSwgMjQsIDEsIAotICAgIDIxOCwgMjExLCAxMDEsIDI0LCAxLCAyMzYsIDYzLCAxMDEsIDI0LCAxLCAyNTAsIDU0LCAxMDEsIDI0LCAxLCAyMTgsIDIyMSwgCi0gICAgMTAxLCAyNCwgMSwgMjUwLCAxMTQsIDEwMSwgMjQsIDEsIDIzNCwgMTE2LCAxMDEsIDI0LCAxLCAyMTYsIDE3NCwgMTAxLCAKLSAgICAyNCwgMSwgMjI1LCAxMzQsIDEwMSwgMjQsIDEsIDI0MSwgMTc5LCAxMDEsIDI0LCAxLCA2MSwgMTAxLCAyNCwgMSwgMjU0LCAKLSAgICAyNTIsIDEwMSwgMjQsIDEsIDE5MiwgMTAxLCAyNCwgMSwgMjExLCA5MiwgMTAxLCAyNCwgMSwgMjQ1LCAxMjUsIDEwMSwgMjQsIAotICAgIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTEsIDM2LCAxMDEsIDI0LCAxLCAyMTEsIDQ3LCAxMDEsIDI0LCAxLCA3OCwgMTAxLCAyNCwgCi0gICAgMSwgMjEyLCA2NSwgMTAxLCAyNCwgMSwgMjEyLCA2MiwgMTAxLCAyNCwgMSwgMjI2LCAyMzgsIDEwMSwgMjQsIDEsIDIxMCwgCi0gICAgMjQ0LCAxMDEsIDI0LCAxLCA2OSwgMTAxLCAyNCwgMSwgMjEyLCAxMSwgMTAxLCAyNCwgMSwgMjEyLCAyMiwgMTAxLCAyNCwgCi0gICAgMSwgMjExLCAyNTAsIDEwMSwgMjQsIDEsIDIxMCwgMjEyLCAxMDEsIDI0LCAxLCAyNDUsIDYzLCAxMDEsIDI0LCAxLCAyMTEsIAotICAgIDgsIDEwMSwgMjQsIDEsIDc0LCAxMjYsIDI1MCwgMTg0LCA1MCwgMTI2LCAyMjQsIDIzMSwgNTAsIDEyNiwgMjI4LCA1NywgCi0gICAgNTAsIDEyNiwgMjMxLCAyMzcsIDEyNiwgMjUxLCAxNDMsIDEzMCwgMTI2LCAyMTEsIDQwLCA1MCwgMTI2LCAyMTEsIDIxNywgCi0gICAgNTAsIDEwMSwgMjQ0LCAyNiwgMTkzLCAyMTMsIDIzOSwgMTAxLCAxNDAsIDc1LCAxMDEsIDIxNCwgMTUzLCA3NSwgMTAxLCAKLSAgICA5NywgNzUsIDEwMSwgMjQ2LCAxMTIsIDc1LCAxMDEsIDg1LCAyMTgsIDIzNiwgMTAxLCA3MSwgMjUwLCA0MywgMjM1LCAyMTEsIAotICAgIDI1NCwgMTA3LCAyNTQsIDEyOCwgMjM1LCAyMTEsIDI1NCwgMTA3LCAyMjAsIDEzOSwgMjM1LCAyMTEsIDI1NCwgMTA3LCAKLSAgICAyMTYsIDIzNywgMjI2LCAyNTMsIDIyMywgNzUsIDI1MCwgMTUwLCAyMjMsIDc1LCAyNTAsIDE1MCwgNjIsIDU3LCAzLCAyNTMsIAotICAgIDE1MCwgNjEsIDYyLCA1NywgMywgMjUzLCAxMTksIDc2LCA2MiwgNTcsIDMsIDI1MywgMTI4LCA3NCwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDk2LCA3OCwgNjIsIDU3LCAzLCAyNTMsIDE0NiwgNjksIDYyLCA1NywgMywgMjUzLCAxNjUsIDI0OCwgMjI5LCA2MiwgCi0gICAgNTcsIDMsIDI1MywgMTEyLCAyNDgsIDk4LCA2MiwgNTcsIDMsIDI1MywgMTUyLCAyNDgsIDExLCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTQyLCAyNDcsIDE1MywgNjIsIDU3LCAzLCAyNTMsIDEwNiwgMjQ2LCA4NiwgNjIsIDU3LCAzLCAyNTMsIDEwMCwgMjM1LCAKLSAgICAxNDcsIDYyLCA1NywgMywgMjUzLCAxMTEsIDIzNSwgMTMyLCA2MiwgNTcsIDMsIDI1MywgMTIxLCAyMzUsIDc0LCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTIsIDIzNSwgNTcsIDYyLCA1NywgMywgMjUzLCA4MCwgMTc2LCA2MiwgNTcsIDMsIDI1MywgMTEzLCAyMzQsIAotICAgIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDkwLCAyMzQsIDk4LCA2MiwgNTcsIDMsIDI1MywgODcsIDIzNCwgMzQsIDYyLCA1NywgMywgCi0gICAgMjUzLCA3NiwgMjMzLCAyMjMsIDYyLCA1NywgMywgMjUzLCA3NywgMTg2LCA2MiwgNTcsIDMsIDI1MywgMTQzLCAyMzEsIDk2LCAKLSAgICA2MiwgNTcsIDMsIDI1MywgODQsIDIzMCwgMjM1LCA2MiwgNTcsIDMsIDI1MywgMTQxLCAyMzAsIDE2NiwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDEzMywgMjMwLCAxMDcsIDYyLCA1NywgMywgMjUzLCAxNTQsIDE5OCwgNjIsIDU3LCAzLCAyNTMsIDEzMiwgMjI5LCAKLSAgICAxMTIsIDYyLCA1NywgMywgMjUzLCAxMjYsIDIyOCwgMjM4LCA2MiwgNTcsIDMsIDI1MywgMTA1LCAyMjgsIDc5LCA2MiwgNTcsIAotICAgIDMsIDI1MywgMTAyLCAyMjcsIDI0MiwgNjIsIDU3LCAzLCAyNTMsIDE2MSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgODUsIDIyNSwgCi0gICAgMjI0LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjUsIDExMSwgNjIsIDU3LCAzLCAyNTMsIDE0NSwgMjI1LCAxOSwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDEwNywgMjI0LCAxNTMsIDYyLCA1NywgMywgMjUzLCAxNDAsIDIyNCwgOTEsIDYyLCA1NywgMywgMjUzLCA3OSwgCi0gICAgMjI0LCA3MiwgNjIsIDU3LCAzLCAyNTMsIDEzNSwgMjI0LCA1NiwgNjIsIDU3LCAzLCAyNTMsIDEyNCwgMjI0LCA0NSwgNjIsIAotICAgIDU3LCAzLCAyNTMsIDk3LCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjksIDIyMywgMTMxLCA2MiwgNTcsIDMsIDI1MywgMTA0LCAKLSAgICAyMjMsIDM4LCA2MiwgNTcsIDMsIDI1MywgMTYzLCAyMjIsIDIxMywgNjIsIDU3LCAzLCAyNTMsIDEzMCwgMjIyLCAxNDIsIAotICAgIDYyLCA1NywgMywgMjUzLCAxMjUsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0OCwgMjIxLCAxODMsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMTYsIDIxOSwgMTkzLCA2MiwgNTcsIDMsIDI1MywgMTQ0LCAyMTksIDYwLCA2MiwgNTcsIDMsIDI1MywgOTksIDIxOCwgODQsIAotICAgIDYyLCA1NywgMywgMjUzLCA5OCwgMjE3LCAxMDYsIDYyLCA1NywgMywgMjUzLCAxNTksIDIxNywgMjMsIDYyLCA1NywgMywgCi0gICAgMjUzLCAxMjAsIDIxNiwgMTE4LCA2MiwgNTcsIDMsIDI1MywgMTU3LCAxMTIsIDYyLCA1NywgMywgMjUzLCA4OCwgMjE1LCAKLSAgICAxMTksIDYyLCA1NywgMywgMjUzLCAxMDMsIDIxMiwgNjUsIDYyLCA1NywgMywgMjUzLCA4MiwgMjEyLCAyMiwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDExNywgMjExLCAyNTAsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIxMSwgMjI3LCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTM5LCAyMTAsIDExNiwgNjIsIDU3LCAzLCAyNTMsIDgzLCAyMTAsIDk0LCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTAsIDIzLCAKLSAgICA2MiwgNTcsIDMsIDI1MywgMTMxLCAyNTUsIDg0LCA2MiwgNTcsIDMsIDI1MywgMTE0LCAyNTUsIDgzLCA2MiwgNTcsIDMsIAotICAgIDI1MywgNzMsIDI1MywgMjAwLCA2MiwgNTcsIDMsIDI1MywgODYsIDI0NiwgNTQsIDYyLCA1NywgMywgMjUzLCA2OSwgMjQ2LCAKLSAgICA1MywgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjI3LCAxNzgsIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgMTUxLCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTUsIDIyNCwgMTU1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMywgMTg5LCA2MiwgNTcsIDMsIDI1MywgMTIzLCAKLSAgICAyMjMsIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDg5LCAyMjIsIDIxMiwgNjIsIDU3LCAzLCAyNTMsIDkxLCAyMTcsIDEwMywgNjIsIAotICAgIDU3LCAzLCAyNTMsIDcxLCAyMTUsIDc4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDEwNSwgNjIsIDU3LCAxNiwgMjUzLCAxMzgsIAotICAgIDYyLCA1NywgMTYsIDI1MywgMTM3LCA2MiwgNTcsIDE2LCAyNTMsIDEzNCwgNjIsIDU3LCAxNiwgMjUzLCAxMjIsIDYyLCA1NywgCi0gICAgMTYsIDI1MywgMTEwLCA2MiwgNTcsIDE2LCAyNTMsIDEwOCwgNjIsIDU3LCAxNiwgMjUzLCAxMDEsIDYyLCA1NywgMTYsIAotICAgIDI1MywgOTQsIDYyLCA1NywgMTYsIDI1MywgOTMsIDYyLCA1NywgMTYsIDI1MywgNzgsIDYyLCA1NywgMTYsIDI1MywgNzUsIAotICAgIDYyLCA1NywgMTYsIDI1MywgNzQsIDYyLCA1NywgMTYsIDI1MywgNzIsIDYyLCA1NywgMTYsIDI1MywgNzAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDY3LCAyMzEsIDE5MCwgNjIsIDU3LCAxMDYsIDI1MywgNjYsIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA2NSwgMjQ4LCA4MiwgNjIsIDU3LCAxMDYsIDI1MywgNjQsIDI0NSwgMTAzLCA2MiwgNTcsIDEwNiwgMjUzLCA2MywgMjMxLCAKLSAgICAxNjQsIDYyLCA1NywgMTA2LCAyNTMsIDYyLCAyMTgsIDE2NCwgNjIsIDU3LCAxMDYsIDI1MywgNjEsIDI0NSwgNDUsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDYwLCAyMjMsIDE1NiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIyMCwgNjQsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDU4LCAyNDEsIDI0NCwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDIxOSwgMjcsIDYyLCA1NywgMTA2LCAyNTMsIDU2LCAKLSAgICAyNTEsIDIxMSwgNjIsIDU3LCAxMDYsIDI1MywgNTUsIDI0OSwgMTUzLCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjUxLCAxMjMsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDUzLCAyMTIsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyNTIsIDE0NCwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgNTEsIDIyNiwgMjA5LCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjE5LCAwLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA0OSwgMjQ5LCA3NiwgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCA0OCwgMjM0LCAyMzAsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgCi0gICAgNDcsIDIzNCwgMjM4LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjI2LCAyMjIsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTEsIAotICAgIDIzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDQsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgNDMsIDI1NCwgMjUsIDYyLCA1NywgCi0gICAgMjMwLCAxNDcsIDI1MywgNDIsIDIzMSwgNTcsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNTEsIDE0MiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgNDAsIDI0MiwgMTczLCA2MiwgNTcsIDEwNiwgMjUzLCAzOSwgNjIsIDU3LCAxMDYsIDI1MywgMzgsIDIxMSwgMjEyLCAKLSAgICA2MiwgNTcsIDEwNiwgMjUzLCAzNywgNjIsIDU3LCAxMDYsIDI1MywgMzYsIDYyLCA1NywgMTA2LCAyNTMsIDM1LCAyNDAsIAotICAgIDI1NSwgNjIsIDU3LCAxMDYsIDI1MywgMzQsIDYyLCA1NywgMTA2LCAyNTMsIDMzLCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgCi0gICAgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCAzMCwgMjE1LCA5MiwgNjIsIDU3LCAxMDYsIDI1MywgMjksIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDI4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNywgMjUwLCAyLCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCAyNDMsIDEwMCwgNjIsIDU3LCAxMDYsIDI1MywgMjMsIDI1NCwgMTIsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDIyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDE5LCA2MiwgNTcsIDEwNiwgMjUzLCAxOCwgNjIsIDU3LCAxMDYsIDI1MywgMTcsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDE2LCA2MiwgNTcsIDEwNiwgMjUzLCAxNSwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgMTA2LCAyNTMsIAotICAgIDEzLCAyMzAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MywgMTIsIDYyLCA1NywgMTA2LCAyNTMsIDExLCAyMTUsIDIzNiwgNjIsIAotICAgIDU3LCAxMDYsIDI1MywgMTAsIDYyLCA1NywgMTA2LCAyNTMsIDksIDYyLCA1NywgMTA2LCAyNTMsIDgsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDcsIDYyLCA1NywgMTA2LCAyNTMsIDYsIDYyLCA1NywgMTA2LCAyNTMsIDUsIDYyLCA1NywgMTA2LCAyNTMsIDQsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDMsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgMjQxLCAyMTgsIDYyLCA1NywgMTA2LCAyNTIsIDIzNCwgMjQ0LCAKLSAgICAzNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjMxLCAyNTIsIDEyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjI2LCAyMTksIDcsIDYyLCAKLSAgICA1NywgMTA2LCAyNTIsIDIyNSwgNzUsIDYyLCA1NywgMTA2LCAyNTIsIDIyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjIzLCAyMTcsIAotICAgIDIzNywgNjIsIDU3LCAxMDYsIDI1MiwgMjIyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjEsIDYyLCA1NywgMTA2LCAyNTIsIDIyMCwgCi0gICAgMjExLCAyNTQsIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTksIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTgsIDI1MCwgMTQ4LCAyNDQsIDcsIDYyLCA1NywgMTA2LCAyNTIsIDIxNywgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgNjIsIDU3LCAyMzAsIDE0NywgMjUyLCAyMTQsIDI0NywgMjA2LCA2MiwgNTcsIAotICAgIDEwNiwgMjUyLCAyMTMsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCA2MiwgNTcsIDEwNiwgCi0gICAgMjUyLCAyMDksIDYyLCA1NywgMTA2LCAyNTIsIDIwOCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA3LCAyNDgsIDE2NywgNjIsIDU3LCAKLSAgICAxMDYsIDI1MiwgMjA2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MiwgMjAzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAzMSwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI1NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MywgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MSwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDI1MCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDI0OCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NCwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MiwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOSwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIxMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIwMSwgMjU0LCAyNDUsIDIxMSwgCi0gICAgMjA5LCAyMjAsIDE0MCwgMjMyLCAyMTksIDI1NCwgMjQ1LCAyMTEsIDIwOSwgMjIwLCAxNDAsIDI0NywgMTI4LCAyNTQsIAotICAgIDI0NSwgMjUwLCAxMzgsIDc5LCAyNTQsIDI0NSwgNTQsIDExMSwgMjU0LCAyNDUsIDU0LCAxMDUsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMTU4LCAyNTQsIDI0NSwgNTQsIDE2MSwgMjU0LCAyNDUsIDU0LCAxOTAsIDI1NCwgMjQ1LCA1NCwgMTk1LCAyNTQsIDI0NSwgCi0gICAgNTQsIDE5OSwgMjU0LCAyNDUsIDU0LCAxOTYsIDI1NCwgMjQ1LCA1NCwgMjAxLCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxNSwgNzMsIDI1NCwgMjQ1LCA1NCwgMjE2LCAxNjMsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyMywgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDQsIDEyMiwgMjU0LCAyNDUsIDU0LCAyMTksIDExMywgMjU0LCAyNDUsIDU0LCAyMjAsIDExOCwgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDUsIDE5MiwgMjU0LCAyNDUsIDU0LCAyMjgsIDIwMCwgMjU0LCAyNDUsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyNTQsIDI0NSwgNTQsIDExMywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTM0LCAyNDAsIDIxNywgMjU0LCAyNDUsIAotICAgIDU0LCAyNDQsIDE5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyNDQsIDg5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAKLSAgICAyMTksIDEyNywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMjIwLCAxMjQsIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIDI0NSwgCi0gICAgMjAxLCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyMjgsIDIwNSwgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTIzLCAyMTYsIAotICAgIDE0OCwgMjU0LCAyNDUsIDU0LCAxMTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDEzNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCAKLSAgICA1NCwgMjQ0LCAxOSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCA4OSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMjE5LCAxMjcsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyMCwgMTI0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDUsIAotICAgIDIwMSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjI4LCAyMDUsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ5LCAKLSAgICAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTUsIDc0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTYsIDE2NCwgMjE2LCAKLSAgICAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAxMjMsIDIxNiwgMTQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxOSwgMTE0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMjAsIDExOSwgMjE2LCAxNDgsIDI1NCwgCi0gICAgMjQ1LCA1NCwgMjQ1LCAxOTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyOCwgMjAxLCAyMTYsIDE0OCwgMjU0LCAyNDUsIAotICAgIDIxMiwgMTQsIDI1MiwgMTM2LCAyMTQsIDE3MywgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTAwLCAyMTgsIDYwLCAyNTQsIAotICAgIDI0NSwgMjEyLCAxNCwgMjIxLCAxNzgsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyMTIsIDE0LCAyMTYsIDE3MCwgMjE4LCA2MCwgCi0gICAgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTIsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyNDYsIDg5LCAyMzEsIDk1LCAyNDQsIAotICAgIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIDIzMiwgMjA1LCAyMzEsIDk1LCAyNDQsIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIAotICAgIDIzMSwgOTUsIDIyMSwgMTc4LCAyMTgsIDYwLCAyNTQsIDI0NSwgMjMxLCA5NSwgMjE2LCAxNzAsIDIxOCwgNjAsIDI2LCAKLSAgICAyNTUsIDE1LCAyNTMsIDIwMiwgMTIzLCAyMjQsIDI0LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjQyLCAzNCwgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0NiwgMTA4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDE5MCwgMjYsIDI1NSwgCi0gICAgMTUsIDI1MywgMjAyLCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAKLSAgICAyMTYsIDI0OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIAotICAgIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDI0MCwgCi0gICAgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAKLSAgICAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgCi0gICAgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAxNSwgMjUzLCAKLSAgICAyMDIsIDI0NCwgMTIzLCAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTgsIDE1MiwgCi0gICAgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxOCwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIAotICAgIDIwMiwgMTIzLCAyMTYsIDE0OSwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ5LCAKLSAgICAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE2LCAxNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAKLSAgICAxNSwgMjUzLCAyMDIsIDIxNiwgMjQ5LCAyMzAsIDE2OSwgMjYsIDI1NSwgMTUsIDI0MSwgMjEyLCAxMjMsIDIyNSwgMzQsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTExLCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDExMSwgMjYsIDI1NSwgMTUsIDI0NSwgCi0gICAgMTEyLCAxMDUsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTA1LCAyNiwgMjU1LCAxNSwgMjQ5LCA3MywgMTEzLCAyNDYsIAotICAgIDEwNywgMjYsIDI1NSwgMTUsIDI0NSwgMTEyLCAxMTMsIDI0NiwgMTA3LCAyNiwgMjU1LCAxNSwgMjE1LCAyMDQsIDE5MCwgCi0gICAgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OCwgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OSwgMjU0LCAKLSAgICAxNDksIDE3LCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDIxNiwgMjQ4LCAyNiwgMjU1LCAxNSwgMjMxLCA0NiwgMjE2LCAyNDgsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAyNDgsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAxNjMsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjIsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjMsIDI1NCwgMTQ5LCAKLSAgICAxNywgMjYsIDI1NSwgMTUsIDI0MSwgMjA4LCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDEyMiwgMjYsIAotICAgIDI1NSwgMTUsIDIxNiwgMTgyLCAxMjMsIDI0MCwgMjE3LCAyNiwgMjU1LCAxNSwgMjE2LCAxODIsIDEzNCwgMjQwLCAyMTcsIAotICAgIDI2LCAyNTUsIDE1LCAyNDUsIDExMiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCA4OSwgCi0gICAgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyNTAsIAotICAgIDIzNSwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMjksIDE4NywgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTYsIDE4MiwgMTIzLCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDg5LCAyMTYsIAotICAgIDE0OCwgMjYsIDI1NSwgMTUsIDI0OCwgNjUsIDI0NCwgODksIDIzMCwgMTY5LCAyNiwgMjU1LCAxNSwgMjE4LCAxMjAsIDI0NCwgCi0gICAgMTIzLCAyMzAsIDE2OSwgMjYsIDEyMywgMTYzLCA1MCwgMjYsIDEyMywgMTYzLCA1LCAyNTQsIDE0OSwgMTcsIDI2LCAxMTMsIAotICAgIDIxNiwgMTY4LCA1MCwgMjYsIDEzNCwgMjI0LCAyMywgNTAsIDI2LCAyMTEsIDQ1LCA1MCwgMjYsIDIxNywgNjksIDUwLCAyNiwgCi0gICAgMjQ2LCAxMDksIDUwLCAyNiwgMjI2LCAyNTAsIDUwLCAyNiwgMTEzLCAyMjYsIDI0OSwgNTAsIDI2LCAxMzQsIDIyNiwgMjQ5LCAKLSAgICA1MCwgMjYsIDI0NCwgMTksIDIyNiwgMjQ5LCA1MCwgMjYsIDI0NCwgODksIDIyNiwgMjQ5LCA1MCwgMjYsIDIzMSwgNDAsIAotICAgIDUwLCAyNiwgMjMzLCAxNjMsIDI1MiwgMTM2LCA1MCwgMjYsIDIzMiwgMjAwLCA1MCwgMjYsIDIyNiwgMTM1LCA1MCwgMjYsIAotICAgIDIxMSwgMTU5LCA1MCwgMjYsIDI1MywgMjUxLCA1MCwgMjYsIDI1NCwgOCwgNTAsIDI2LCAyNDIsIDE1MSwgNTAsIDI2LCAKLSAgICAyMTUsIDE4NywgMjUyLCAxMzYsIDUwLCAyNiwgMjEwLCA4NywgNTAsIDIyMiwgMjAwLCAyMjAsIDExNSwgNTAsIDIyMiwgCi0gICAgMjAwLCAyMTQsIDE4NSwgNTAsIDIyMiwgMjAwLCAyMjAsIDE0NCwgNTAsIDIyMiwgMjAwLCAyMjAsIDExMywgNTAsIDIyMiwgCi0gICAgMjAwLCAyNDcsIDIyMSwgMjIwLCAxMTMsIDUwLCAyMjIsIDIwMCwgMjE5LCAxNzAsIDUwLCAyMjIsIDIwMCwgMjQ4LCA2MSwgCi0gICAgNTAsIDIyMiwgMjAwLCAyMjQsIDksIDUwLCAyMjIsIDIwMCwgMjIwLCAxMzEsIDUwLCAyMjIsIDIwMCwgMjQ2LCA2OCwgNTAsIAotICAgIDIyMiwgMjAwLCAyNTMsIDI0NiwgNTAsIDIyMiwgMjAwLCAyNTAsIDE3OSwgNTAsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAyMTYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjI1LCAyNywgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjE3LCA0NiwgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUwLCAyNTUsIDIyNSwgMTQ2LCAyNDcsIAotICAgIDE5OSwgNSwgMjUwLCAxMDksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjExLCAyMjEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQxLCAyMTgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQzLCA5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTYsIAotICAgIDExNywgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA3NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNTEsIDE3NywgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjUyLCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDIzMSwgMTg5LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMSwgMTQxLCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIyMSwgMjE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMiwgMjQzLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIAotICAgIDI1MSwgMTk2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjM5LCAyMjUsIDM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIAotICAgIDUsIDI0NywgMTQxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxOSwgCi0gICAgODksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ5LCAyMzIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUyLCA3MSwgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0MCwgMjU1LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0MSwgMTg1LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MSwgMTIwLCAyMzMsIDQyLCAyMjUsIAotICAgIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjMyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIyMywgMTU2LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0NSwgMjM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0NiwgMTE1LCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIxNSwgMTA2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MiwgNzQsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAzOSwgMjE1LCAyMzYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjEzLCAxNTksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjI2LCAyMiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjIsIDE5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMzIsIAotICAgIDIzMCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjYsIDExOSwgMjUyLCAxOTIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQ0LCA1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNDIsIDE0NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTgsIAotICAgIDEyMSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA0LCAyNTMsIDE3NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTIsIDMyLCAKLSAgICAyNTIsIDE1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAzOCwgMjI2LCAyNTIsIDkxLCAyMzIsIDY1LCAxLCA2MSwgMjMyLCAKLSAgICA2NSwgMSwgNzYsIDIzMiwgNjUsIDEsIDI1MywgMTY2LCAyMzIsIDY1LCAxLCAyNTIsIDI3LCAyMzIsIDY1LCAxLCAyNDMsIAotICAgIDIwOSwgMjMyLCA2NSwgMSwgMjQ5LCA2OCwgMjMyLCA2NSwgMSwgNzQsIDIzMiwgNjUsIDEsIDIxMiwgOTgsIDIzMiwgNjUsIAotICAgIDEsIDIxMCwgMTU5LCAyMzIsIDY1LCAxLCAyMTYsIDIxMSwgMjMyLCA2NSwgMSwgMjM1LCAxNTAsIDIzMiwgNjUsIDEsIDIzNSwgCi0gICAgMjksIDIzMiwgNjUsIDEsIDIyNCwgOTksIDIzMiwgNjUsIDEsIDE1NiwgMjMyLCA2NSwgMSwgMTk0LCAyMzIsIDY1LCAxLCAKLSAgICAyMzAsIDMwLCAyMzIsIDY1LCAxLCAyMzAsIDE3MSwgMjMyLCA2NSwgMSwgMjI4LCAxMTYsIDIzMiwgNjUsIDEsIDY5LCAyMzIsIAotICAgIDY1LCAxLCAyMjYsIDEwOSwgMjMyLCA2NSwgMSwgMjM0LCA1MywgMjMyLCA2NSwgMSwgMTUzLCAyMzIsIDY1LCAxLCAyMjIsIAotICAgIDkzLCAyMzIsIDY1LCAxLCAyMTcsIDE1MywgMjMyLCA2NSwgMSwgMjE1LCAxNjAsIDIzMiwgNjUsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY1LCAxLCAyNDUsIDE1OCwgMjMyLCA2NSwgMSwgMjQyLCA2NywgMjMyLCA2NSwgMSwgMjExLCAxNzgsIDI1MCwgCi0gICAgMjQ1LCAxLCA2MSwgMjUwLCAyNDUsIDEsIDIyNiwgOTUsIDI1MCwgMjQ1LCAxLCAyNDksIDY4LCAyNTAsIDI0NSwgMSwgMTU2LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE0LCAxMTYsIDI1MCwgMjQ1LCAxLCAxNTMsIDI1MCwgMjQ1LCAxLCAyMzMsIDY4LCAyNTAsIDI0NSwgCi0gICAgMSwgMjU1LCA4NCwgMjUwLCAyNDUsIDEsIDIyNCwgOTksIDI1MCwgMjQ1LCAxLCAyNTMsIDE2NiwgMjUwLCAyNDUsIDEsIAotICAgIDE5NCwgMjUwLCAyNDUsIDEsIDc4LCAyNTAsIDI0NSwgMSwgMjQ4LCAyMzEsIDI1MCwgMjQ1LCAxLCAyMTcsIDE1MywgMjUwLCAKLSAgICAyNDUsIDEsIDIyMCwgMTA2LCAyNTAsIDI0NSwgMSwgMjIwLCAxMDUsIDI1MCwgMjQ1LCAxLCAyMjIsIDkzLCAyNTAsIDI0NSwgCi0gICAgMSwgMjUxLCA3MywgMjUwLCAyNDUsIDEsIDY5LCAyNTAsIDI0NSwgMSwgMjI4LCAxMTYsIDI1MCwgMjQ1LCAxLCAyMTEsIAotICAgIDE3OCwgMjUwLCAyNDUsIDEsIDIzMCwgMzAsIDI1MCwgMjQ1LCAxLCAyMTUsIDE1OSwgMjUwLCAyNDUsIDEsIDIyNiwgMTA5LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAyMjgsIDI1MCwgMjQ1LCAxLCA3NCwgMjUwLCAyNDUsIDEsIDc2LCAyNTAsIDI0NSwgMSwgCi0gICAgMjE0LCAxMTMsIDI1MCwgMjQ1LCAxLCAyMzUsIDI5LCAyNTAsIDI0NSwgMSwgMjM1LCAyMCwgMjUwLCAyNDUsIDEsIDIyOSwgCi0gICAgMTU1LCAyNTAsIDI0NSwgMSwgMjE0LCAxMTgsIDI1MCwgMjQ1LCAxLCAyNDMsIDIwOSwgMjUwLCAyNDUsIDEsIDI0MywgMTQ0LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAxNzAsIDI1MCwgMjQ1LCAxLCAyMTgsIDE2OSwgMjUwLCAyNDUsIDEsIDIyOSwgODQsIDI1MCwgCi0gICAgMjQ1LCAxLCAyMzYsIDQwLCAyNTAsIDI0NSwgMSwgMjUxLCA3MiwgMjUwLCAyNDUsIDEsIDIxNSwgMTYwLCAyNTAsIDI0NSwgCi0gICAgMSwgMjE0LCAxMTUsIDI1MCwgMjQ1LCAxLCAyMjIsIDE4MiwgMjUwLCAyNDUsIDEsIDIzMSwgMTM0LCAyNTAsIDI0NSwgMSwgCi0gICAgMjMxLCAxMzMsIDI1MCwgMjQ1LCAxLCAyMzEsIDEzMiwgMjUwLCAyNDUsIDEsIDIzMSwgMTMxLCAyNTAsIDI0NSwgMSwgMjMzLCAKLSAgICA2NywgMjUwLCAyNDUsIDEsIDI0NSwgMjQyLCAyNTAsIDI0NSwgMSwgMjE0LCAxMTQsIDU1LCAzMiwgMSwgNjEsIDU1LCAzMiwgCi0gICAgMSwgMjUyLCA4MywgNTUsIDMyLCAxLCAyMzQsIDE4OCwgNTUsIDMyLCAxLCAyNDgsIDk4LCA1NSwgMzIsIDEsIDc2LCA1NSwgCi0gICAgMzIsIDEsIDIxMywgMjU1LCA1NSwgMzIsIDEsIDIxMCwgOTQsIDU1LCAzMiwgMSwgMjQxLCAyNDUsIDU1LCAzMiwgMSwgMjE2LCAKLSAgICAxOTYsIDU1LCAzMiwgMSwgNzQsIDU1LCAzMiwgMSwgMTc2LCA1NSwgMzIsIDEsIDI0NSwgMTgyLCA1NSwgMzIsIDEsIDI0NSwgCi0gICAgMTY3LCA1NSwgMzIsIDEsIDI0NSwgMTU4LCA1NSwgMzIsIDEsIDI0NSwgODMsIDU1LCAzMiwgMSwgNzgsIDU1LCAzMiwgMSwgCi0gICAgMjI1LCAyMjQsIDU1LCAzMiwgMSwgMjIwLCA2NSwgNTUsIDMyLCAxLCAyMzMsIDIyMywgNTUsIDMyLCAxLCAyNDUsIDEwMCwgCi0gICAgNTUsIDMyLCAxLCAyNDUsIDkwLCA1NSwgMzIsIDEsIDIxNywgMjMsIDU1LCAzMiwgMSwgNjksIDU1LCAzMiwgMSwgMjQ1LCAKLSAgICAxODUsIDU1LCAzMiwgMSwgMjI1LCAxMzksIDU1LCAzMiwgMSwgMjM0LCAxMjUsIDU1LCAzMiwgMSwgMjQ1LCAyMTAsIDU1LCAKLSAgICAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNTAsIDEzOSwgNTUsIDMyLCAxLCAyMzYsIDQwLCA1NSwgMzIsIDEsIDIxNCwgCi0gICAgMTE4LCA1NSwgMzIsIDIyNywgMjAyLCAxMTEsIDU1LCAzMiwgMjI3LCAyMDIsIDE5MCwgNTUsIDMyLCAyMjcsIDIwMiwgMjE2LCAKLSAgICAyNDgsIDU1LCAzMiwgMjI3LCAyMDIsIDI0NCwgMTIyLCAyNDIsIDE2MCwgMSwgMjU0LCAyMTMsIDI0MiwgMTYwLCAxLCAyNTIsIAotICAgIDE3MSwgMjQyLCAxNjAsIDEsIDI0MiwgMjE4LCAyNDIsIDE2MCwgMSwgMjQ4LCAyMTIsIDI0MiwgMTYwLCAxLCAyNTQsIDIwOSwgCi0gICAgMjQyLCAxNjAsIDEsIDIyNCwgODIsIDI0MiwgMTYwLCAxLCAyMzUsIDE2MSwgMjQyLCAxNjAsIDEsIDI0MiwgNDYsIDI0MiwgCi0gICAgMTYwLCAxLCAyMTYsIDE1OSwgMjQyLCAxNjAsIDEsIDI0NSwgMTkxLCAyNDIsIDE2MCwgMSwgMjMzLCAxOTYsIDI0MiwgMTYwLCAKLSAgICAxLCAyMzMsIDExOSwgMjQyLCAxNjAsIDEsIDIzMSwgMTg0LCAyNDIsIDE2MCwgMSwgMjI5LCAxODksIDI0MiwgMTYwLCAxLCAKLSAgICAyMzUsIDEyNSwgMjQyLCAxNjAsIDEsIDIxNCwgMTM2LCAyNDIsIDE2MCwgMSwgMjI2LCA3MywgMjQyLCAxNjAsIDEsIDIyOCwgCi0gICAgMjAwLCAyNDIsIDE2MCwgMSwgMjIzLCAxNjgsIDI0MiwgMTYwLCAxLCAyMjEsIDIyMCwgMjQyLCAxNjAsIDEsIDIxNywgNSwgCi0gICAgMjQyLCAxNjAsIDEsIDIxMSwgMjM0LCAyNDIsIDE2MCwgMSwgMjQ0LCAxODYsIDI0MiwgMTYwLCAxLCAyMzYsIDQ0LCAyNDIsIAotICAgIDE2MCwgMSwgMjQwLCAyMDYsIDI0MiwgMTYwLCAxLCAyMjYsIDE0MywgMjQyLCAxNjAsIDEsIDIyOCwgMjA1LCAyNDAsIDIxNywgCi0gICAgMjE0LCAyMDksIDEsIDI1NCwgMTU1LCAyMTQsIDIwOSwgMSwgMjUyLCAzNCwgMjE0LCAyMDksIDEsIDI0MywgMTE1LCAyMTQsIAotICAgIDIwOSwgMSwgMjM0LCAxMzgsIDIxNCwgMjA5LCAxLCAyNDgsIDYyLCAyMTQsIDIwOSwgMSwgMjQxLCA3NSwgMjE0LCAyMDksIAotICAgIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgMjE0LCAyMDksIDEsIDI0MCwgMjQ4LCAyMTQsIDIwOSwgMSwgCi0gICAgMjE2LCAyMzEsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAyMDksIDEsIDIzNSwgMCwgMjE0LCAyMDksIDEsIDIyMCwgCi0gICAgMjIsIDIxNCwgMjA5LCAxLCAyMzMsIDEwNCwgMjE0LCAyMDksIDEsIDIzMSwgNzAsIDIxNCwgMjA5LCAxLCAyNDgsIDI5LCAKLSAgICAyMTQsIDIwOSwgMSwgMjI3LCAxOTgsIDIxNCwgMjA5LCAxLCAyMTAsIDEzLCAyMTQsIDIwOSwgMSwgMjIxLCAyNTAsIDIxNCwgCi0gICAgMjA5LCAxLCAyNTQsIDIwNSwgMjE0LCAyMDksIDEsIDIyNCwgMTUzLCAyMTQsIDIwOSwgMSwgMjIyLCAyNywgMjE0LCAyMDksIAotICAgIDEsIDIyNCwgMzgsIDIxNCwgMjA5LCAxLCAyMjMsIDE0NywgMjE0LCAyMDksIDEsIDIxNiwgMjAwLCAyMTQsIDIwOSwgMSwgCi0gICAgMjQyLCAyNTEsIDIxNCwgMjA5LCAxLCAxMTIsIDIxNCwgMjA5LCAxLCA3NCwgMjE0LCAyMDksIDEsIDY5LCAyMTQsIDIwOSwgCi0gICAgMSwgMjE4LCAxODEsIDIxNCwgMjA5LCAyMTEsIDIwOSwgMjQ3LCAxODAsIDU1LCAyMjUsIDE3MiwgNSwgNjEsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgNzQsIDU1LCAyMjUsIDE3MiwgNSwgNjksIDU1LCAyMjUsIDE3MiwgNSwgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIAotICAgIDIzMywgMjIzLCA1NSwgMjI1LCAxNzIsIDUsIDI0MywgMTQyLCA1NSwgMjI1LCAxNzIsIDUsIDI0MiwgMTIwLCA1NSwgMjI1LCAKLSAgICAxNzIsIDUsIDIxMSwgMTY1LCA1NSwgMjI1LCAxNzIsIDUsIDI1MSwgNDEsIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxNDcsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxMTQsIDU1LCAyMjUsIDE3MiwgNSwgMjE3LCAxMDYsIDU1LCAyMjUsIDE3MiwgNSwgCi0gICAgMjE1LCAxMTksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAyMjksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAxMSwgNTUsIDIyNSwgCi0gICAgMTcyLCA1LCAyNDYsIDg2LCA1NSwgMjI1LCAxNzIsIDUsIDIxNiwgMjA5LCA1NSwgMjI1LCAxNzIsIDUsIDE5MSwgNTUsIAotICAgIDIyNSwgMTcyLCA1LCAyNTIsIDE5OSwgNTUsIDIyNSwgMTcyLCA1LCAyNDQsIDIwNCwgNTUsIDIyNSwgMTcyLCA1LCAxOTgsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjI3LCAyNDIsIDU1LCAyMjUsIDE3MiwgNSwgMTg2LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgCi0gICAgMjM1LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgMTA3LCA1NSwgMjI1LCAxNzIsIDUsIDE5MiwgNTUsIDIyNSwgMTcyLCA1LCAKLSAgICAyMTQsIDI3LCA1NSwgMjI1LCAxNzIsIDUsIDIxMywgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIDIwNSwgNTUsIDIyNSwgMTcyLCAKLSAgICA1LCAyMjIsIDE0MiwgNTUsIDIyNSwgMTcyLCA1LCAyMzMsIDE0MSwgNTUsIDIyNSwgMTcyLCA1LCAyMDYsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE3MiwgNSwgMjIwLCAxMDQsIDU1LCAyMjUsIDE3MiwgNSwgMjE4LCAyMjUsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMTYyLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTk0LCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgCi0gICAgMTkzLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTkyLCA1NSwgMjI1LCAxNzIsIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNzIsIAotICAgIDUsIDI0OCwgMjA4LCA1NSwgMjI1LCAxNzIsIDUsIDI0OCwgMjA3LCA1NSwgMjI1LCAxNzIsIDUsIDI1MiwgMTc4LCA1NSwgCi0gICAgMjI1LCAxNzIsIDUsIDI1MSwgOTMsIDU1LCAyMjUsIDE3MiwgMjExLCAyMDksIDI0NywgMTgwLCA1NSwgMjI1LCAxNzIsIDU0LCAKLSAgICAxMTEsIDU1LCAyMjUsIDE3MiwgNTQsIDEwNSwgNTUsIDIyNSwgMTcyLCA1NCwgMjE2LCAyNDgsIDU1LCAyMjUsIDE3MiwgNTQsIAotICAgIDIxNSwgNzMsIDU1LCAyMjUsIDE3MiwgNTQsIDI0MCwgMjE3LCAxODEsIDYsIDEsIDIwMCwgNzQsIDE4MSwgNiwgMSwgMjAwLCAKLSAgICA3NiwgMTgxLCA2LCAxLCAyMDAsIDYxLCAxODEsIDYsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNiwgMSwgMjAwLCA3OCwgCi0gICAgMTgxLCA2LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA2LCAxLCAyMTksIDI1MywgCi0gICAgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDYsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA2LCAxLCAKLSAgICAyMTksIDI1MywgNzgsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDI1MywgMTc1LCAxODEsIDYsIAotICAgIDEsIDIyNiwgMTIwLCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2NywgCi0gICAgMTgxLCA2LCAxLCAyMjUsIDIxNCwgMTgxLCA2LCAxLCAyNTIsIDc0LCAxODEsIDYsIDEsIDIxNywgMTIsIDE4MSwgNiwgMSwgCi0gICAgMjQ4LCA4NSwgMTgxLCA2LCAxLCAyNTAsIDEzNiwgMTgxLCA2LCAxLCAyMzUsIDEzMCwgMTgxLCA2LCAxLCAyMzQsIDE5NSwgCi0gICAgMTgxLCA2LCAxLCAyNDMsIDkwLCAxODEsIDYsIDEsIDI0NSwgMjEwLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIAotICAgIDI0NSwgNjcsIDE4MSwgNiwgMSwgMjE2LCAxOTUsIDE4MSwgNiwgMSwgMjQ1LCA5MCwgMTgxLCA2LCAxLCAyMTAsIDkyLCAKLSAgICAxODEsIDYsIDEsIDI0NSwgODMsIDE4MSwgNiwgMSwgMjEwLCA3MywgMTgxLCA2LCAxLCAyNDUsIDEwMCwgMTgxLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMTgxLCA2LCAxLCAyNDUsIDE2NywgMTgxLCA2LCAxLCAyNDUsIDE1OCwgMTgxLCA2LCAxLCAyNDUsIDE0NiwgCi0gICAgMTgxLCA2LCAxLCAyMjYsIDIyMywgMTgxLCA2LCAxLCAyNDUsIDQ2LCAxODEsIDQsIDEsIDIwMCwgNzQsIDE4MSwgNCwgMSwgCi0gICAgMjAwLCA3NiwgMTgxLCA0LCAxLCAyMDAsIDYxLCAxODEsIDQsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNCwgMSwgMjAwLCAKLSAgICA3OCwgMTgxLCA0LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA0LCAxLCAyMTksIAotICAgIDI1MywgNzYsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDQsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA0LCAKLSAgICAxLCAyMTksIDI1MywgNzgsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDI1MywgMTc1LCAxODEsIAotICAgIDQsIDEsIDIyNiwgMTIwLCAxODEsIDQsIDEsIDIxMSwgMTk1LCAxODEsIDQsIDEsIDIxMSwgNDQsIDE4MSwgNCwgMSwgMjQyLCAKLSAgICA2NywgMTgxLCA0LCAxLCAyMjUsIDIxNCwgMTgxLCA0LCAxLCAyNTIsIDc0LCAxODEsIDQsIDEsIDIxNywgMTIsIDE4MSwgNCwgCi0gICAgMSwgMjQ4LCA4NSwgMTgxLCA0LCAxLCAyNTAsIDEzNiwgMTgxLCA0LCAxLCAyMzUsIDEzMCwgMTgxLCA0LCAxLCAyMzQsIAotICAgIDE5NSwgMTgxLCA0LCAxLCAyNDMsIDkwLCAxODEsIDQsIDEsIDI0NSwgMjEwLCAxODEsIDQsIDEsIDIxMywgMjUwLCAxODEsIAotICAgIDQsIDEsIDI0NSwgNjcsIDE4MSwgNCwgMSwgMjE2LCAxOTUsIDE4MSwgNCwgMSwgMjQ1LCA5MCwgMTgxLCA0LCAxLCAyMTAsIAotICAgIDkyLCAxODEsIDQsIDEsIDI0NSwgODMsIDE4MSwgNCwgMSwgMjEwLCA3MywgMTgxLCA0LCAxLCAyNDUsIDEwMCwgMTgxLCA0LCAKLSAgICAxLCAyNDUsIDE4MiwgMTgxLCA0LCAxLCAyNDUsIDE2NywgMTgxLCA0LCAxLCAyNDUsIDE1OCwgMTgxLCA0LCAxLCAyNDUsIAotICAgIDE0NiwgMTgxLCA0LCAxLCAyMjYsIDIyMywgMTgxLCA0LCAxLCAyNDUsIDQ2LCAyMjAsIDcxLCAxLCAyMjUsIDIxMiwgMjIwLCAKLSAgICA3MSwgMSwgMjE2LCA2LCAyMjAsIDcxLCAxLCAyMzQsIDk3LCAyMjAsIDcxLCAxLCAyNDQsIDE1NSwgMjIwLCA3MSwgMSwgCi0gICAgMjE2LCAxNzMsIDIyMCwgNzEsIDEsIDIxOSwgNjAsIDIyMCwgNzEsIDEsIDIxOCwgMTUsIDIyMCwgNzEsIDEsIDI1MCwgNjksIAotICAgIDIyMCwgNzEsIDEsIDIxMSwgNDYsIDIyMCwgNzEsIDEsIDI0MCwgMjE2LCAyMjAsIDcxLCAxLCAyNTIsIDEzLCAyMjAsIDcxLCAKLSAgICAxLCAyNDgsIDk3LCAyMjAsIDcxLCAxLCAyNDMsIDEyOCwgMjIwLCA3MSwgMSwgMjEzLCAxMjMsIDIyMCwgNzEsIDEsIDIxNiwgCi0gICAgMTc3LCAyMjAsIDcxLCAxLCAyMTAsIDIxLCAyMjAsIDcxLCAxLCAyMzEsIDk0LCAyMjAsIDcxLCAxLCAyMzUsIDU1LCAyMjAsIAotICAgIDcxLCAxLCAyMTEsIDIyNSwgMjIwLCA3MSwgMSwgMjQyLCA1NSwgMjIwLCA3MSwgMSwgMjMyLCAxNDgsIDIyMCwgNzEsIDEsIAotICAgIDIzMCwgMTk0LCAyMjAsIDcxLCAxLCAyMzYsIDQ3LCAyMjAsIDcxLCAxLCAyNDUsIDIwOSwgMjIwLCA3MSwgMSwgMjUzLCAKLSAgICAyMzksIDIyMCwgNzEsIDEsIDI1NSwgMCwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIDIyMCwgNzEsIDEsIDIxMSwgMjEyLCAyMjAsIAotICAgIDcxLCAxLCAyMjYsIDEzNCwgMjIwLCA3MSwgMSwgMjU0LCAyMTgsIDIyMCwgNzEsIDEsIDIyMiwgMjEwLCAyMjAsIDcxLCAxLCAKLSAgICAyMjcsIDE5OCwgMjIwLCA3MSwgMSwgMjQ1LCAyMjUsIDIyMCwgNzEsIDEsIDI1NCwgMjIzLCAyMjAsIDcxLCAxLCAyNDAsIAotICAgIDExOCwgMjIwLCA3MSwgMSwgMjE0LCAxNjMsIDIyMCwgNzEsIDEsIDIyNywgMiwgMjIwLCA3MSwgMSwgMjI2LCAxODAsIDIyMCwgCi0gICAgNzEsIDEsIDIyNiwgMjIyLCAyMjAsIDcxLCAxLCAyNTMsIDE3OCwgMjIwLCA3MSwgMSwgMjU0LCAyNywgMjIwLCA3MSwgMSwgCi0gICAgMjI2LCAxNjIsIDIyMCwgNzEsIDEsIDI1NCwgMjAxLCAyMjAsIDcxLCAxLCAyNDUsIDk0LCAyMjAsIDcxLCAxLCAyNTQsIDUsIAotICAgIDIyMCwgNzEsIDEsIDI0NSwgMjM1LCAyMjAsIDcxLCAxLCAyNDAsIDEyNSwgMjIwLCA3MSwgMSwgMjExLCAxMywgMjI2LCAKLSAgICAxNDUsIDEsIDI1NCwgMTc5LCAyMjYsIDE0NSwgMSwgMjUyLCAxOTksIDIyNiwgMTQ1LCAxLCAyMTcsIDEwNiwgMjI2LCAxNDUsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjYsIDE0NSwgMSwgMjExLCAxNjUsIDIyNiwgMTQ1LCAxLCAyMzQsIDEzOCwgMjI2LCAxNDUsIDEsIAotICAgIDI0OCwgODQsIDIyNiwgMTQ1LCAxLCAyMDUsIDIyNiwgMTQ1LCAxLCAyMDYsIDIyNiwgMTQ1LCAxLCAyMjAsIDI4LCAyMjYsIAotICAgIDE0NSwgMSwgMjQ4LCAzMywgMjI2LCAxNDUsIDEsIDI1MCwgMjIzLCAyMjYsIDE0NSwgMSwgMjQzLCAxNDIsIDIyNiwgMTQ1LCAKLSAgICAxLCAyNDQsIDIwNCwgMjI2LCAxNDUsIDEsIDIyNCwgODksIDIyNiwgMTQ1LCAxLCAyMzUsIDE1LCAyMjYsIDE0NSwgMSwgCi0gICAgMjMzLCAxMzYsIDIyNiwgMTQ1LCAxLCAyMzAsIDIwNSwgMjI2LCAxNDUsIDEsIDIyNywgMTgyLCAyMjYsIDE0NSwgMSwgMjEyLCAKLSAgICAzMCwgMjI2LCAxNDUsIDEsIDE2MiwgMjI2LCAxNDUsIDEsIDE5MiwgMjI2LCAxNDUsIDEsIDYxLCAyMjYsIDE0NSwgMSwgNzYsIAotICAgIDIyNiwgMTQ1LCAxLCA3NCwgMjI2LCAxNDUsIDEsIDc4LCAyMjYsIDE0NSwgMSwgNjksIDIyNiwgMTQ1LCAxLCAyNTUsIDgyLCAKLSAgICAyMjYsIDE0NSwgMSwgMjQ1LCAyMTcsIDIyNiwgMTQ1LCAxLCAyMjYsIDE4NywgMjI2LCAxNDUsIDIxLCAyMTAsIDg2LCAyMjYsIAotICAgIDE0NSwgMjEsIDExMSwgMjI2LCAxNDUsIDIxLCAxMDUsIDIyNiwgMTQ1LCAyMSwgMTU4LCAyMjYsIDE0NSwgMjEsIDE2MSwgCi0gICAgMjI2LCAxNDUsIDIxLCAxOTAsIDIyNiwgMTQ1LCAyMSwgMTk1LCAyMjYsIDE0NSwgMjEsIDE5OSwgMjI2LCAxNDUsIDIxLCAKLSAgICAxOTYsIDIyNiwgMTQ1LCAyMSwgMjAxLCAyNDksIDc1LCAzLCA2MSwgMjQ5LCA3NSwgMywgNzYsIDI0OSwgNzUsIDMsIDc0LCAKLSAgICAyNDksIDc1LCAzLCA3OCwgMjQ5LCA3NSwgMywgNjksIDI0OSwgNzUsIDMsIDIzNSwgMTQ3LCAyNDksIDc1LCAzLCAyMzUsIAotICAgIDc0LCAyNDksIDc1LCAzLCAxNzYsIDI0OSwgNzUsIDMsIDIzNCwgMTg4LCAyNDksIDc1LCAzLCAyMzQsIDk4LCAyNDksIDc1LCAKLSAgICAzLCAyMzQsIDM0LCAyNDksIDc1LCAzLCAyMzMsIDIyMywgMjQ5LCA3NSwgMywgMjMzLCAxNDEsIDI0OSwgNzUsIDMsIDIzMywgCi0gICAgNjQsIDI0OSwgNzUsIDMsIDIzMiwgMjQ3LCAyNDksIDc1LCAzLCAyMzIsIDE2MiwgMjQ5LCA3NSwgMywgMjMyLCAxMDMsIAotICAgIDI0OSwgNzUsIDMsIDE4NiwgMjQ5LCA3NSwgMywgMjMxLCA5NiwgMjQ5LCA3NSwgMywgMjMwLCAyMzUsIDI0OSwgNzUsIDMsIAotICAgIDIzMCwgMTY2LCAyNDksIDc1LCAzLCAyMzAsIDEwNywgMjQ5LCA3NSwgMywgMTk4LCAyNDksIDc1LCAzLCAyMjksIDExMiwgCi0gICAgMjQ5LCA3NSwgMywgMjI4LCAyMzgsIDI0OSwgNzUsIDMsIDIyOCwgNzksIDI0OSwgNzUsIDMsIDIyNywgMjQyLCAyNDksIDc1LCAKLSAgICAzLCAxOTEsIDI0OSwgNzUsIDMsIDIyNSwgMjI0LCAyNDksIDc1LCAzLCAyMjUsIDExMSwgMjQ5LCA3NSwgMywgMjI1LCAxOSwgCi0gICAgMjQ5LCA3NSwgMywgMjI0LCAxNTMsIDI0OSwgNzUsIDMsIDIwNSwgMjQ5LCA3NSwgMywgMjIzLCAxMzEsIDI0OSwgNzUsIDMsIAotICAgIDIyMywgMzgsIDI0OSwgNzUsIDMsIDIyMiwgMjEzLCAyNDksIDc1LCAzLCAyMjIsIDE0MiwgMjQ5LCA3NSwgMywgMjA2LCAKLSAgICAyNDksIDc1LCAzLCAyMjEsIDE4MywgMjQ5LCA3NSwgMywgMjE5LCAxOTMsIDI0OSwgNzUsIDMsIDIxOSwgNjAsIDI0OSwgNzUsIAotICAgIDMsIDIxOCwgODQsIDI0OSwgNzUsIDMsIDIxNywgMTA2LCAyNDksIDc1LCAzLCAyMTcsIDIzLCAyNDksIDc1LCAzLCAyMTYsIAotICAgIDExOCwgMjQ5LCA3NSwgMywgMTEyLCAyNDksIDc1LCAzLCAyMTUsIDExOSwgMjQ5LCA3NSwgMywgMjEyLCA2NSwgMjQ5LCA3NSwgCi0gICAgMywgMjEyLCAyMiwgMjQ5LCA3NSwgMywgMjExLCAyNTAsIDI0OSwgNzUsIDMsIDIxMSwgMjI3LCAyNDksIDc1LCAzLCAyMTEsIAotICAgIDE2NSwgMjQ5LCA3NSwgMywgMjExLCAxNjIsIDI0OSwgNzUsIDMsIDIxMCwgMTE2LCAyNDksIDc1LCAzLCAyMTAsIDIzLCAKLSAgICAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1NCwgMTc3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1MiwgMzMsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjQyLCAyMDgsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQ4LCAxOTYsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQxLCAKLSAgICAyNDUsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjEyLCAzMCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMTAsIDk3LCAyMzYsIDgsIAotICAgIDI1NCwgMzUsIDEsIDI0MSwgMjAyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNiwgMjI3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIAotICAgIDIxMCwgMjMyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzNCwgMjMxLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzMywgOTksIDIzNiwgCi0gICAgOCwgMjU0LCAzNSwgMSwgMjMxLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjcsIDE5OCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAKLSAgICAyMjEsIDI1MSwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyNTMsIDE3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjUsIDIyNCwgCi0gICAgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjIsIDI2LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyNCwgMzcsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjIzLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjAsIDIyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNywgMzcsIAotICAgIDIzNiwgOCwgMjU0LCAzNSwgMjIxLCAxNzUsIDUwLCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAxMTEsIDIzNiwgOCwgMjU0LCAzNSwgCi0gICAgNTQsIDEwNSwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTU4LCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAyMTYsIDI0OCwgMjM2LCA4LCAKLSAgICAyNTQsIDM1LCA1NCwgMjE1LCA3MywgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTIzLCAyNDAsIDIxNywgMjM2LCA4LCAyNTQsIAotICAgIDM1LCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjUsIDEyMiwgCi0gICAgMSwgMjU0LCAxNzQsIDIyNSwgMTIyLCAxLCAyNTIsIDM2LCAyMjUsIDEyMiwgMSwgMjQzLCAxMTYsIDIyNSwgMTIyLCAxLCAKLSAgICAyNDgsIDY0LCAyMjUsIDEyMiwgMSwgMjQxLCAyNDUsIDIyNSwgMTIyLCAxLCAyMTIsIDM3LCAyMjUsIDEyMiwgMSwgMjEwLCAKLSAgICAxMTAsIDIyNSwgMTIyLCAxLCAyNDEsIDIwNCwgMjI1LCAxMjIsIDEsIDIxNiwgMjMxLCAyMjUsIDEyMiwgMSwgMjEwLCAyMzMsIAotICAgIDIyNSwgMTIyLCAxLCAyMzUsIDAsIDIyNSwgMTIyLCAxLCAyMzMsIDEwNSwgMjI1LCAxMjIsIDEsIDIzMSwgNzAsIDIyNSwgCi0gICAgMTIyLCAxLCAyMjcsIDE5OCwgMjI1LCAxMjIsIDEsIDIyMCwgMTQ2LCAyMjUsIDEyMiwgMSwgMjU0LCAyMDUsIDIyNSwgMTIyLCAKLSAgICAxLCAyMjUsIDIyNCwgMjI1LCAxMjIsIDEsIDIyMiwgMjcsIDIyNSwgMTIyLCAxLCAyMjQsIDQyLCAyMjUsIDEyMiwgMSwgCi0gICAgMjIyLCAxOTEsIDIyNSwgMTIyLCAxLCAyMjAsIDIyLCAyMjUsIDEyMiwgMSwgMjE3LCA0MiwgMjI1LCAxMjIsIDU0LCAxMTEsIAotICAgIDIyNSwgMTIyLCA1NCwgMjE2LCAyNDgsIDIyNSwgMTIyLCA1NCwgMjE1LCA3MywgMjI1LCAxMjIsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyMjUsIDEyMiwgNTQsIDEwNSwgMjI1LCAxMjIsIDU0LCAxNTgsIDIyNSwgMTIyLCAyMTEsIDIwOSwgMjIwLCAxMzksIAotICAgIDIzMiwgNjQsIDEsIDYxLCAyMzIsIDY0LCAxLCAyNTMsIDE2NiwgMjMyLCA2NCwgMSwgMjQzLCAyMDksIDIzMiwgNjQsIDEsIAotICAgIDI0OSwgNjgsIDIzMiwgNjQsIDEsIDc2LCAyMzIsIDY0LCAxLCAyMTQsIDEwNSwgMjMyLCA2NCwgMSwgNzQsIDIzMiwgNjQsIAotICAgIDEsIDIxMSwgMTE3LCAyMzIsIDY0LCAxLCAyMzUsIDI5LCAyMzIsIDY0LCAxLCAxNTYsIDIzMiwgNjQsIDEsIDE5NCwgMjMyLCAKLSAgICA2NCwgMSwgMjMwLCAzMCwgMjMyLCA2NCwgMSwgNzgsIDIzMiwgNjQsIDEsIDE1MywgMjMyLCA2NCwgMSwgMjE4LCAyMjgsIAotICAgIDIzMiwgNjQsIDEsIDIxNywgMTUzLCAyMzIsIDY0LCAxLCA2OSwgMjMyLCA2NCwgMSwgMjQ1LCAxNCwgMjMyLCA2NCwgMSwgCi0gICAgMjI0LCA5OSwgMjMyLCA2NCwgMSwgMjIyLCA5MywgMjMyLCA2NCwgMSwgMjE1LCAxNjAsIDIzMiwgNjQsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY0LCAxLCAyNDUsIDE1OCwgMjMyLCA2NCwgMSwgMjMyLCA2NywgMjMyLCA2NCwgMSwgMjI4LCAxMTYsIDIzMiwgNjQsIAotICAgIDEsIDI1MSwgNzQsIDIzMiwgNjQsIDIxNSwgMjIzLCA3OSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDYxLCAyMzEsIDUzLCAKLSAgICAyNDEsIDE4MSwgMSwgNzYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCA3NCwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDc4LCAyMzEsIAotICAgIDUzLCAyNDEsIDE4MSwgMSwgMTkyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjEyLCA2NSwgMjMxLCA1MywgMjQxLCAxODEsIAotICAgIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjUyLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTEsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxODYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyMjksIDIzMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyOSwgMTEyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjI5LCAKLSAgICAxMTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMDUsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjMsIDE5MCwgMjMxLCA1MywgCi0gICAgMjQxLCAxODEsIDEsIDIzMywgMTQxLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjM0LCAxMzgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyNDEsIDE5NiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyMiwgMzUsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjEsIDE4MywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE3NiwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIAotICAgIDIxNywgMTA1LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjE3LCAyMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIxNywgMjIsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxMTIsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDE2LCAyMTMsIDE3MCwgMjMxLCA1MywgMjQxLCAxODEsIDE2LCAyMTMsIDE2OSwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIAotICAgIDYxLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgNzYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCA3NCwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDc4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkyLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjEyLCA2NSwgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkxLCAyMzEsIDUzLCAyNDksIAotICAgIDEwMiwgMSwgMTg2LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTk4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjI5LCAxMTIsIAotICAgIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMDUsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMzMsIDE0MSwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDIzNCwgMTM4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjQxLCAxOTYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNTQsIDMxLCAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMjEsIDE4MywgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDE3NiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0OSwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIxNywgMjMsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAxMTIsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMjIsIAotICAgIDIxOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMzYsIDEzLCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAyNSwgCi0gICAgNSwgNzQsIDIzNCwgMTI2LCAyNSwgNSwgNjksIDIzNCwgMTI2LCAyNSwgNSwgMTQ5LCAxNTMsIDIzNCwgMTI2LCAyNSwgNSwgCi0gICAgNzYsIDIzNCwgMTI2LCAyNSwgNSwgNzgsIDIzNCwgMTI2LCAyNSwgMjMzLCAyOSwgNzksIDIzNCwgMTI2LCA1LCA1MiwgMjIyLCAKLSAgICAyMzcsIDUxLCAyMzQsIDEyNiwgNSwgMjU0LCA4MywgMjM0LCAxMjYsIDUsIDIxMywgMTQ3LCAyMzQsIDEyNiwgMSwgMTc2LCAKLSAgICAyMzQsIDEyNiwgMSwgMjM0LCAxMzgsIDIzNCwgMTI2LCAxLCAyNDMsIDE0MiwgMjM0LCAxMjYsIDEsIDI0MywgMCwgMjM0LCAKLSAgICAxMjYsIDEsIDI1MSwgNDEsIDIzNCwgMTI2LCAxLCAyNTAsIDE2NSwgMjM0LCAxMjYsIDEsIDIzNSwgMTQ3LCAyMzQsIDEyNiwgCi0gICAgMSwgMjI3LCAxNjksIDIzNCwgMTI2LCAxLCAyMTUsIDE1NywgMjM0LCAxMjYsIDEsIDIxNSwgMTQ1LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQ4LCAxNDMsIDIzNCwgMTI2LCAxLCAyNDgsIDEyNywgMjM0LCAxMjYsIDEsIDIyOCwgMTE1LCAyMzQsIDEyNiwgMSwgMjE3LCAKLSAgICAxMDYsIDIzNCwgMTI2LCAxLCAyMTYsIDIwOSwgMjM0LCAxMjYsIDEsIDI0OCwgMjI5LCAyMzQsIDEyNiwgMSwgMjQ4LCAzMywgCi0gICAgMjM0LCAxMjYsIDEsIDE5OCwgMjM0LCAxMjYsIDEsIDE5MSwgMjM0LCAxMjYsIDEsIDIyNSwgMTUwLCAyMzQsIDEyNiwgMSwgCi0gICAgMjUyLCAxOTksIDIzNCwgMTI2LCAxLCAyNTIsIDI2LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMTkyLCAyMzQsIAotICAgIDEyNiwgMSwgMjA1LCAyMzQsIDEyNiwgMSwgMjMzLCAxNDEsIDIzNCwgMTI2LCAxLCAyMTQsIDI3LCAyMzQsIDEyNiwgMSwgCi0gICAgMjIwLCAxMDQsIDIzNCwgMTI2LCAxLCAyMTgsIDIyNSwgMjM0LCAxMjYsIDEsIDIwNiwgMjM0LCAxMjYsIDEsIDIxMCwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMSwgMTYyLCAyMzQsIDEyNiwgMSwgMjM0LCA1MiwgMjM0LCAxMjYsIDEsIDIxNSwgMTI1LCAyMzQsIDEyNiwgCi0gICAgNSwgMjUyLCAxNDksIDQ4LCAyMzQsIDEyNiwgNSwgMjUwLCAyMjksIDIzNCwgMTI2LCA1LCA1OSwgNTEsIDIzNCwgMTI2LCAKLSAgICAyMTMsIDE1MiwgMjM0LCAxMjYsIDIxLCAxMTEsIDIzNCwgMTI2LCAyMSwgMTA1LCAyMzQsIDEyNiwgMjEsIDE1OCwgMjM0LCAKLSAgICAxMjYsIDIxLCAxNjEsIDIzNCwgMTI2LCA1NCwgMjE2LCAyNDgsIDIzNCwgMTI2LCA1NCwgMjE1LCA3MywgMjM0LCAxMjYsIAotICAgIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzQsIDEyNiwgNTQsIDEyMywgMjE2LCAxNDgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ3LCAKLSAgICAxMjgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNCwgMjUwLCA0MywgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyNTAsIDQzLCAyMzQsIAotICAgIDEyNiwgMjI0LCAxNDQsIDI0OSwgMTQ1LCAxMzAsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjMxLCAxODUsIDIzNCwgMTI2LCAKLSAgICAyMjQsIDE0NCwgMjMyLCAxMjEsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ4LCAxODYsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNTIsIAotICAgIDI0OCwgMTg2LCAyMzQsIDEyNiwgMjI0LCAxNDQsIDIzMiwgMjEzLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAKLSAgICAyNDUsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzMsIDk5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAyMDIsIAotICAgIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzEsIDcwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjI0LCAzNywgNTUsIAotICAgIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjAsIDIyLCA1NSwgMjE5LCAKLSAgICAzMCwgMjU0LCA0NiwgMSwgMjIzLCA3MCwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI1MiwgMzMsIDU1LCAyMTksIDMwLCAKLSAgICAyNTQsIDQ2LCAxLCAyMTcsIDM3LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjIxLCAyMjgsIDU1LCAyMTksIDMwLCAyNTQsIAotICAgIDQ2LCAxLCAyMzQsIDIzMSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIyNywgMTk4LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgCi0gICAgMSwgMjM0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjIsIDI2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgCi0gICAgMjIxLCAyNTEsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDQsIDE2MiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIAotICAgIDI1NCwgMTc5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjUzLCAxNjksIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAKLSAgICAyNDgsIDMwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQyLCAyMDgsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDgsIAotICAgIDE5NiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI0MiwgMjQ1LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAKLSAgICAyMjcsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQ4LCAyNywgCi0gICAgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAxOTgsIDU1LCAKLSAgICAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTYsIDE3OSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDU0LCAxMTEsIDU1LCAyMTksIAotICAgIDMwLCAyNTQsIDQ2LCA1NCwgMjQ0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxMzIsIDIzNSwgMjQ1LCAyNTMsIDE4MCwgCi0gICAgMSwgNjEsIDI1MywgMTgwLCAxLCAyNTUsIDgyLCAyNTMsIDE4MCwgMSwgMjU0LCA4MSwgMjUzLCAxODAsIDEsIDI1NSwgNDEsIAotICAgIDI1MywgMTgwLCAxLCAyNTQsIDEzMSwgMjUzLCAxODAsIDEsIDI1NSwgNDIsIDI1MywgMTgwLCAxLCAyNTQsIDI1MiwgMjUzLCAKLSAgICAxODAsIDEsIDI1NCwgMjQ4LCAyNTMsIDE4MCwgMSwgNzYsIDI1MywgMTgwLCAxLCAyNDUsIDIxNywgMjUzLCAxODAsIDEsIAotICAgIDc4LCAyNTMsIDE4MCwgMSwgMjI2LCAxODcsIDI1MywgMTgwLCAxLCA3NCwgMjUzLCAxODAsIDEsIDIzNiwgNDAsIDI1MywgCi0gICAgMTgwLCAxLCA2OSwgMjUzLCAxODAsIDEsIDIxNCwgMTE4LCAyNTMsIDE4MCwgMSwgMjM0LCAxODgsIDI1MywgMTgwLCAxLCAKLSAgICAyMTEsIDE2MiwgMjUzLCAxODAsIDEsIDIxMSwgMTI4LCAyNTMsIDE4MCwgMSwgMjExLCAxMzcsIDI1MywgMTgwLCAxLCAyNDMsIAotICAgIDY5LCAyNTMsIDE4MCwgMSwgMjQzLCAzMSwgMjUzLCAxODAsIDEsIDI0MiwgMjQzLCAyNTMsIDE4MCwgMSwgMjUwLCAxOTgsIAotICAgIDI1MywgMTgwLCAxLCAyMzUsIDEzMiwgMjUzLCAxODAsIDEsIDIxNywgMjMsIDI1MywgMTgwLCAxLCAyMTYsIDE5NiwgMjUzLCAKLSAgICAxODAsIDEsIDI0OCwgOTgsIDI1MywgMTgwLCAxLCAyNDgsIDI1LCAyNTMsIDE4MCwgMSwgMjE1LCAxNTIsIDI1MywgMTgwLCAKLSAgICAxLCAyMjUsIDIyNCwgMjUzLCAxODAsIDEsIDI0NCwgMTYyLCAyNTMsIDE4MCwgMSwgMjUyLCA4MywgMjUzLCAxODAsIDEsIAotICAgIDI1MiwgMjIsIDI1MywgMTgwLCAxLCAyMjksIDY5LCAyNTMsIDE4MCwgMSwgMjI4LCAyNDQsIDI1MywgMTgwLCAxLCAyMjgsIAotICAgIDI0NSwgMjUzLCAxODAsIDEsIDIyOSwgMTEyLCAyNTMsIDE4MCwgMSwgMjI3LCAxNjAsIDI1MywgMTgwLCAxLCAyMjgsIDExMCwgCi0gICAgMjUzLCAxODAsIDEsIDIzMSwgOTYsIDI1MywgMTgwLCAxLCAyNDEsIDEyMywgMjUzLCAxODAsIDEsIDIxMCwgMTY2LCAyNTMsIAotICAgIDE4MCwgMSwgMjExLCA0NywgMjUzLCAxODAsIDEsIDIxMywgMjU1LCAyNTMsIDE4MCwgMSwgMjIzLCAxMzEsIDI1MywgMTgwLCAKLSAgICAxLCAyMzMsIDY0LCAyNTMsIDE4MCwgMSwgMjIxLCAxODMsIDI1MywgMTgwLCAxLCAyMTAsIDk0LCAyNTMsIDE4MCwgMSwgCi0gICAgMjIwLCA2NSwgMjUzLCAxODAsIDEsIDIxMCwgNzQsIDI1MywgMTgwLCAxLCAyMTksIDIwMCwgMjUzLCAxODAsIDEsIDIxOCwgCi0gICAgMTk1LCAyNTMsIDE4MCwgMSwgMjQxLCAyNDUsIDI1MywgMTgwLCAyNTUsIDMwLCA3OSwgMjE2LCA4MCwgMTEzLCAxNzAsIAotICAgIDExNSwgMTIzLCA1OSwgMjI0LCAxNDMsIDQsIDExMywgMTcwLCAxMTUsIDEyMywgNTksIDIyNCwgMTQzLCAyMzMsIDkxLCAKLSAgICAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMjMzLCA5MSwgMTIzLCA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAKLSAgICAxNDMsIDIzMywgOTEsIDExMywgMjIyLCAyMzUsIDExNSwgMTIzLCAyMjIsIDIzNywgMjI0LCAxNDMsIDIzMywgOTEsIDEyMywgCi0gICAgMjIyLCAyMzcsIDExNSwgMTEzLCAyMjIsIDIzNSwgMjI0LCAxNDMsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI1NCwgMTc3LCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTIsIDMzLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDIsIDIwOCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgMSwgMjQ4LCAxOTYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI0MSwgMjQ1LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAKLSAgICAyMTIsIDMwLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDEsIDIwMiwgCi0gICAgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjE2LCAyMjcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgCi0gICAgMjI2LCAyLCAxLCAyMzQsIDIzMSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjMzLCA5OSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgCi0gICAgMjMxLCA3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI3LCAxOTgsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMSwgMjUxLCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTMsIDE3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI1LCAyMjQsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDIsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyNCwgMzcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIAotICAgIDIyMywgNzAsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMCwgMjIsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxNywgMzcsIDIzNSwgCi0gICAgMjI1LCAyMjYsIDIsIDU0LCAxMTEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMDUsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAKLSAgICAxNTgsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAyMTYsIDI0OCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgNTQsIDIxNSwgNzMsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCAKLSAgICAyLCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI1NCwgMTc3LCAyMzUsIDIyNSwgMjI2LCA3NiwgCi0gICAgMSwgMjUyLCAzMywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI0MiwgMjA4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQ4LCAKLSAgICAxOTYsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyNDEsIDI0NSwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMiwgMjksIDIzNSwgCi0gICAgMjI1LCAyMjYsIDc2LCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQxLCAyMDIsIDIzNSwgMjI1LCAyMjYsIAotICAgIDc2LCAxLCAyMTYsIDIyNywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgCi0gICAgMjM0LCAyMzEsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMzMsIDk5LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjMxLCA2OSwgCi0gICAgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyNywgMTk4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjIxLCAyNTEsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDc2LCAxLCAyMjUsIDIyNCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDc2LCAKLSAgICAxLCAyMjAsIDIyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjE3LCAzNywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMTEsIAotICAgIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMTA1LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDE1OCwgMjM1LCAyMjUsIDIyNiwgCi0gICAgNzYsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE2LCAyNDgsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE1LCAKLSAgICA3MywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCA2MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI1NCwgMjUyLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgNzQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDc0LCA1NSwgCi0gICAgMjAyLCAxLCAyMTEsIDM3LCA3NiwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDc4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAKLSAgICAyMzgsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU1LCAzNCwgNTUsIAotICAgIDIwMiwgMSwgMjExLCAzNywgMjU1LCAzNCwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjUxLCA1NSwgMjAyLCAxLCAKLSAgICAyMTEsIDM3LCAyNTQsIDI1MSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjI1LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDIyNSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjQ2LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNTQsIDI0NiwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NSwgOCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU1LCA4LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAyNTAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjUzLCAxNzUsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMTc1LCAKLSAgICA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzMsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjMzLCA1NSwgMjAyLCAKLSAgICAxLCAyMjYsIDE1MywgMjU0LCAyNDQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjQ0LCA1NSwgMjAyLCAxLCAyMjYsIAotICAgIDE1MywgMjI2LCAyMzcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAKLSAgICAxODcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMTg3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyNDMsIDU1LCAKLSAgICAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE2OSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTY3LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAxMzEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDI0MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCAyNDEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDEzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMzksIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE1NSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxNTUsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDEyNiwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMjYsIDU1LCAyMDIsIDEsIDIxMSwgCi0gICAgMzcsIDI1NCwgMTIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxNDYsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgCi0gICAgMjQwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxMTYsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyMjYsIDE3OSwgNTUsIAotICAgIDIwMiwgMSwgMjI2LCAxNTMsIDI0MCwgMTIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAyMjMsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI0NSwgMjIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIzNSwgMTg4LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMzUsIDE4OCwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIyNiwgMTYzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMjYsIDE2MywgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAKLSAgICAyNTQsIDIzOSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1MywgMjQ1LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzcsIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTMsIDIzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjUzLCAyMzksIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgCi0gICAgMjUzLCAyMTQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMjE0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzQsIAotICAgIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjM0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAxNDQsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNTIsIDEzMywgMjIyLCAxMjksIDIxLCAxMTEsIDIyMiwgMTI5LCAyMSwgMTA1LCAyMjIsIDEyOSwgCi0gICAgMjEsIDE1OCwgMjIyLCAxMjksIDIxLCAxNjEsIDIyMiwgMTI5LCAyMSwgMTkwLCAyMjIsIDEyOSwgMjEsIDE5NSwgMjIyLCAKLSAgICAxMjksIDIxLCAxOTksIDIyMiwgMTI5LCAyMSwgMTk2LCAyMjIsIDEyOSwgMjEsIDIwMSwgMjIyLCAxMjksIDU0LCAyMTYsIAotICAgIDI0OCwgMjIyLCAxMjksIDU0LCAyMTUsIDczLCAyMjIsIDEyOSwgNTQsIDIxNiwgMTYzLCAyMjIsIDEyOSwgNTQsIDI0NCwgCi0gICAgMjMsIDIyMiwgMTI5LCA1NCwgMjQ0LCAxMjIsIDIyMiwgMTI5LCA1NCwgMjE5LCAxMTMsIDIyMiwgMTI5LCA1NCwgMjIwLCAKLSAgICAxMTgsIDIyMiwgMTI5LCA1NCwgMjQ1LCAxOTIsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDAsIDIyMiwgMTI5LCA1NCwgMTIzLCAKLSAgICAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAxMTMsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDEzNCwgMjQwLCAyMTcsIDIyMiwgCi0gICAgMTI5LCA1NCwgMjQ0LCAxOSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjQ0LCA4OSwgMjQwLCAyMTcsIDIyMiwgMTI5LCAKLSAgICA1NCwgMjE5LCAxMjcsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDIyMCwgMTI0LCAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAKLSAgICAyNDUsIDIwMSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDUsIDI0MCwgMjE3LCAyMjIsIDEyOSwgMjQ0LCAxMCwgCi0gICAgMTIzLCAyNDIsIDM0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAKLSAgICAyMTYsIDE2OSwgMjIyLCAxMjksIDI0NCwgMTAsIDExMywgMjE2LCAxNjcsIDExOCwgNSwgMjUxLCA3LCAxMTgsIDUsIDI1NCwgCi0gICAgODMsIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDgsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIAotICAgIDExOCwgMSwgMjU1LCA4MiwgMTE4LCAxLCA3NCwgMTE4LCAxLCAyMzYsIDQwLCAxMTgsIDEsIDY5LCAxMTgsIDEsIDIxNCwgCi0gICAgMTE4LCAxMTgsIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODIsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgCi0gICAgMTQ5LCAyMzIsIDE5MSwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTQsIDIxMCwgMTE4LCAxLCA3OCwgMTE4LCAxLCAyNTMsIAotICAgIDIwMCwgMTE4LCAxLCAxNzYsIDExOCwgMSwgMjM0LCAxMzgsIDExOCwgMSwgMjQzLCAxNDIsIDExOCwgMSwgMjQzLCAwLCAKLSAgICAxMTgsIDEsIDIyOSwgODIsIDExOCwgMSwgMjUxLCA0MSwgMTE4LCAxLCAyNTAsIDE2NSwgMTE4LCAxLCAyMzUsIDE0NywgCi0gICAgMTE4LCAxLCAyMzUsIDEyMCwgMTE4LCAxLCAyMjcsIDE2OSwgMTE4LCAxLCAyMTUsIDE1NywgMTE4LCAxLCAyMTUsIDE0NSwgCi0gICAgMTE4LCAxLCAyNDgsIDE0MywgMTE4LCAxLCAyNDgsIDEyNywgMTE4LCAxLCAyMjgsIDExNSwgMTE4LCAxLCAyMTcsIDEwNiwgCi0gICAgMTE4LCAxLCAyMTYsIDIwOSwgMTE4LCAxLCAyNDgsIDIyOSwgMTE4LCAxLCAyNDgsIDMzLCAxMTgsIDEsIDE5OCwgMTE4LCAxLCAKLSAgICAxOTEsIDExOCwgMSwgMjI1LCAxNTAsIDExOCwgMSwgMjUyLCAxOTksIDExOCwgMSwgMjUyLCAyNiwgMTE4LCAxLCAxODYsIAotICAgIDExOCwgMSwgMTkyLCAxMTgsIDEsIDIwNSwgMTE4LCAxLCAyMzMsIDE0MSwgMTE4LCAxLCAyMTQsIDI3LCAxMTgsIDEsIDIyMCwgCi0gICAgMTA0LCAxMTgsIDEsIDIxOCwgMjI1LCAxMTgsIDEsIDIwNiwgMTE4LCAxLCAxNjIsIDExOCwgMSwgMjMyLCAxOTAsIDExOCwgCi0gICAgMSwgNTUsIDM2LCAyMzIsIDE4MSwgMTE4LCAxLCA1NSwgMzYsIDIyMiwgMTgxLCAxMTgsIDEsIDU1LCAzNiwgMjI4LCA5NywgCi0gICAgMTE4LCAyNSwgNSwgMjU1LCA4MiwgMTE4LCAyNSwgNSwgMjUyLCAyMywgMjU1LCA4MiwgMTE4LCAyNSwgNSwgNzQsIDExOCwgCi0gICAgMjUsIDUsIDIzNiwgNDAsIDExOCwgMjUsIDUsIDY5LCAxMTgsIDI1LCA1LCAyMTQsIDExOCwgMTE4LCAyNSwgNSwgMTQ5LCAKLSAgICAxNTMsIDExOCwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDExOCwgMjUsIDUsIDE0OSwgMTU2LCAxMTgsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjU0LCAyMTAsIDExOCwgMjUsIDUsIDc4LCAxMTgsIDI1LCAKLSAgICA1LCAyNTMsIDIwMCwgMTE4LCAyMTMsIDE1MiwgMTE4LCAyNDgsIDE4NiwgMTE4LCA1MiwgMjQ4LCAxODYsIDExOCwgMjI0LCAKLSAgICAxNDQsIDI0NywgMTI4LCAxMTgsIDIyNCwgMTQ0LCA1MiwgMjQ3LCAxMjgsIDExOCwgMjI0LCAxNDQsIDIzMiwgMjE5LCAxMTgsIAotICAgIDIyNCwgMTQ0LCAyNDksIDE0NSwgMTMwLCAxMTgsIDIyNCwgMTQ0LCAyMzIsIDEyMSwgMTE4LCA1NCwgMTExLCAxMTgsIDU0LCAKLSAgICAxMDUsIDExOCwgNTQsIDE1OCwgMTE4LCA1NCwgMTYxLCAxMTgsIDU0LCAxOTAsIDExOCwgNTQsIDE5NSwgMTE4LCA1NCwgCi0gICAgMTk5LCAxMTgsIDU0LCAxOTYsIDExOCwgNTQsIDIwMSwgMTE4LCA1NCwgMjE2LCAyNDgsIDExOCwgNTQsIDIxNSwgNzMsIAotICAgIDExOCwgNTQsIDIxNiwgMTYzLCAxMTgsIDU0LCAyNDQsIDIzLCAxMTgsIDU0LCAyNDQsIDEyMiwgMTE4LCA1NCwgMjE5LCAKLSAgICAxMTMsIDExOCwgNTQsIDIyMCwgMTE4LCAxMTgsIDU0LCAyNDUsIDE5MiwgMTE4LCA1NCwgMjI4LCAyMDAsIDExOCwgNTQsIAotICAgIDEyMywgMjQwLCAyMTcsIDExOCwgNTQsIDEyMywgMjE2LCAxNDgsIDExOCwgMjEsIDIxMCwgODYsIDExOCwgMjEsIDExMSwgCi0gICAgMTE4LCAyMSwgMTA1LCAxMTgsIDIxLCAxNTgsIDExOCwgMjEsIDE2MSwgMTE4LCAyMSwgMTkwLCAxMTgsIDIxLCAxOTUsIAotICAgIDExOCwgMjEsIDE5OSwgMTE4LCAyMSwgMTk2LCAxMTgsIDIxLCAyMDEsIDIzNCwgMjUwLCA1LCAyNTEsIDcsIDIzNCwgMjUwLCAKLSAgICA1LCAyNTQsIDgzLCAyMzQsIDI1MCwgNSwgMjEzLCAxNDcsIDIzNCwgMjUwLCAxLCA2MSwgMjM0LCAyNTAsIDEsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAxLCA3NCwgMjM0LCAyNTAsIDEsIDIzNiwgNDAsIDIzNCwgMjUwLCAxLCA2OSwgMjM0LCAyNTAsIDEsIDIxNCwgCi0gICAgMTE4LCAyMzQsIDI1MCwgMSwgNzYsIDIzNCwgMjUwLCAxLCAyNTQsIDIxMCwgMjM0LCAyNTAsIDEsIDc4LCAyMzQsIDI1MCwgCi0gICAgMSwgMjUzLCAyMDAsIDIzNCwgMjUwLCAxLCAxNzYsIDIzNCwgMjUwLCAxLCAyMzQsIDEzOCwgMjM0LCAyNTAsIDEsIDI0MywgCi0gICAgMTQyLCAyMzQsIDI1MCwgMSwgMjQzLCAwLCAyMzQsIDI1MCwgMSwgMjI5LCA4MiwgMjM0LCAyNTAsIDEsIDI1MSwgNDEsIAotICAgIDIzNCwgMjUwLCAxLCAyNTAsIDE2NSwgMjM0LCAyNTAsIDEsIDIzNSwgMTQ3LCAyMzQsIDI1MCwgMSwgMjM1LCAxMjAsIDIzNCwgCi0gICAgMjUwLCAxLCAyMjcsIDE2OSwgMjM0LCAyNTAsIDEsIDIxNSwgMTU3LCAyMzQsIDI1MCwgMSwgMjE1LCAxNDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyNDgsIDE0MywgMjM0LCAyNTAsIDEsIDI0OCwgMTMyLCAyMzQsIDI1MCwgMSwgMjQ4LCAxMjcsIDIzNCwgMjUwLCAxLCAKLSAgICAyMjMsIDQyLCAyMzQsIDI1MCwgMSwgMjI4LCAxMTUsIDIzNCwgMjUwLCAxLCAyMTcsIDEwNiwgMjM0LCAyNTAsIDEsIDIxNiwgCi0gICAgMjA5LCAyMzQsIDI1MCwgMSwgMjQ4LCAyMjksIDIzNCwgMjUwLCAxLCAyNDgsIDMzLCAyMzQsIDI1MCwgMSwgMTk4LCAyMzQsIAotICAgIDI1MCwgMSwgMTkxLCAyMzQsIDI1MCwgMSwgMjI1LCAxNTAsIDIzNCwgMjUwLCAxLCAyNTIsIDE5OSwgMjM0LCAyNTAsIDEsIAotICAgIDI1MiwgMjYsIDIzNCwgMjUwLCAxLCAxODYsIDIzNCwgMjUwLCAxLCAxOTIsIDIzNCwgMjUwLCAxLCAyMDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyMzMsIDE0MSwgMjM0LCAyNTAsIDEsIDIxNCwgMjcsIDIzNCwgMjUwLCAxLCAyMjAsIDEwNCwgMjM0LCAyNTAsIDEsIAotICAgIDIxOCwgMjI1LCAyMzQsIDI1MCwgMSwgMjA2LCAyMzQsIDI1MCwgMSwgMTYyLCAyMzQsIDI1MCwgMjUsIDUsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAyNSwgNSwgNzQsIDIzNCwgMjUwLCAyNSwgNSwgMjM2LCA0MCwgMjM0LCAyNTAsIDI1LCA1LCA2OSwgMjM0LCAKLSAgICAyNTAsIDI1LCA1LCAyMTQsIDExOCwgMjM0LCAyNTAsIDI1LCA1LCA3NiwgMjM0LCAyNTAsIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMjM0LCAyNTAsIDI1LCA1LCA3OCwgMjM0LCAyNTAsIDI1LCA1LCAyNTMsIDIwMCwgMjM0LCAyNTAsIDUsIDIxMywgMTUyLCAKLSAgICAyMzQsIDI1MCwgNSwgMjI3LCAyMDksIDIzNCwgMjUwLCAyNTUsIDMwLCA1MCwgMjM0LCAyNTAsIDI0NSwgMTI5LCA1MCwgCi0gICAgMjM0LCAyNTAsIDU0LCA1MCwgMjM0LCAyNTAsIDIyMSwgMTc1LCA3OSwgMjM0LCAyNTAsIDUyLCAyMjEsIDE3NSwgNzksIAotICAgIDIzNCwgMjUwLCAyNDgsIDE4NiwgMjM0LCAyNTAsIDUyLCAyNDgsIDE4NiwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIyLCAyMCwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE3LCA4MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjUyLCAxNzYsIDIxOSwgMzgsIAotICAgIDIxOSwgNDYsIDEsIDI1MSwgMzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0OCwgMjExLCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDMsIDEyNywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjMxLCAyMTUsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyOSwgNzksIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzMywgMTE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjksIDIxOCwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjE0LCAyNCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjI2LCA3NywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgCi0gICAgMjExLCA4NCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIzLCAxNzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0MiwgNDQsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzNCwgMjU0LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMzUsIDE0MiwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjI3LCAxNjYsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI1NCwgMjE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDUsIDIxNSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjM2LCA0MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE0LCAyMDgsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyNiwgMjI2LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyNDUsIDIwNSwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjMxLCAyMjgsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMTExLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTA1LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTU4LCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAyMSwgMTYxLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTkwLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk1LCAKLSAgICAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk5LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMjAxLCAyNTAsIDE1OSwgNSwgMjUxLCA3LCAyNTAsIDE1OSwgNSwgMjU0LCA4MywgMjUwLCAxNTksIDUsIDIxMywgCi0gICAgMTQ3LCAyNTAsIDE1OSwgMSwgMjU1LCA4MiwgMjUwLCAxNTksIDEsIDc0LCAyNTAsIDE1OSwgMSwgNjksIDI1MCwgMTU5LCAxLCAKLSAgICA3NiwgMjUwLCAxNTksIDEsIDIzNSwgMTYsIDI1MCwgMTU5LCAxLCAyMzQsIDEzNywgMjUwLCAxNTksIDEsIDI0MywgMTM5LCAKLSAgICAyNTAsIDE1OSwgMSwgMjQyLCAyNTUsIDI1MCwgMTU5LCAxLCAyMjksIDgxLCAyNTAsIDE1OSwgMSwgMjUxLCA0MCwgMjUwLCAKLSAgICAxNTksIDEsIDI1MCwgMTY0LCAyNTAsIDE1OSwgMSwgMjM1LCAxNDYsIDI1MCwgMTU5LCAxLCAyMzUsIDExOSwgMjUwLCAxNTksIAotICAgIDEsIDIyNywgMTY4LCAyNTAsIDE1OSwgMSwgMjE1LCAxNTYsIDI1MCwgMTU5LCAxLCAyMTUsIDE0NCwgMjUwLCAxNTksIDEsIAotICAgIDI0OCwgMTQyLCAyNTAsIDE1OSwgMSwgMjQ4LCAxMjYsIDI1MCwgMTU5LCAxLCAyMjgsIDExNCwgMjUwLCAxNTksIDEsIDIxNywgCi0gICAgMTAyLCAyNTAsIDE1OSwgMSwgMjE2LCAyMDgsIDI1MCwgMTU5LCAxLCAyNDgsIDIyOCwgMjUwLCAxNTksIDEsIDI0OCwgMzIsIAotICAgIDI1MCwgMTU5LCAxLCAyMjksIDIzMCwgMjUwLCAxNTksIDEsIDIyNiwgOTMsIDI1MCwgMTU5LCAxLCAyMjUsIDE0OSwgMjUwLCAKLSAgICAxNTksIDEsIDI1MiwgMTk3LCAyNTAsIDE1OSwgMSwgMjUyLCAyNSwgMjUwLCAxNTksIDEsIDIzMSwgMjQyLCAyNTAsIDE1OSwgCi0gICAgMSwgMjEwLCAxNjcsIDI1MCwgMTU5LCAxLCAyMTEsIDEwMywgMjUwLCAxNTksIDEsIDIyMywgMTg3LCAyNTAsIDE1OSwgMSwgCi0gICAgMjMzLCAxNDAsIDI1MCwgMTU5LCAxLCAyMTIsIDY0LCAyNTAsIDE1OSwgMSwgMjIyLCAzMywgMjUwLCAxNTksIDEsIDI0MiwgCi0gICAgNTMsIDI1MCwgMTU5LCAyNSwgNSwgNjEsIDI1MCwgMTU5LCAyNSwgNSwgNzQsIDI1MCwgMTU5LCAyNSwgNSwgMjM2LCA0MCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCA2OSwgMjUwLCAxNTksIDI1LCA1LCAyMTQsIDExOCwgMjUwLCAxNTksIDI1LCA1LCA3NiwgMjUwLCAKLSAgICAxNTksIDI1LCA1LCAyNTQsIDIxMCwgMjUwLCAxNTksIDI1LCA1LCA3OCwgMjUwLCAxNTksIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCAyMjYsIDIyMywgMjUwLCAxNTksIDE0NCwgNzksIDI1MCwgMTU5LCAyNTMsIDIwMSwgNzksIAotICAgIDI1MCwgMTU5LCAyMTMsIDE1MiwgMjUwLCAxNTksIDIzMSwgMjQwLCAyNTAsIDE1OSwgMjEsIDIxMCwgODYsIDI1MCwgMTU5LCAKLSAgICAyMSwgMTExLCAyNTAsIDE1OSwgMjEsIDEwNSwgMjUwLCAxNTksIDIxLCAxNTgsIDI1MCwgMTU5LCAyMSwgMTYxLCAyNTAsIAotICAgIDE1OSwgMjEsIDE5MCwgMjUwLCAxNTksIDIxLCAxOTUsIDI1MCwgMTU5LCAyMSwgMTk5LCAyNTAsIDE1OSwgMjEsIDE5NiwgCi0gICAgMjUwLCAxNTksIDIxLCAyMDEsIDI1MCwgMTU5LCAyMjEsIDE3NSwgNzksIDI1MCwgMTU5LCAyNDgsIDE4NiwgMjUwLCAxNTksIAotICAgIDUyLCAyNDgsIDE4NiwgMjUwLCAxNTksIDIyNCwgMTYsIDc5LCAxNzQsIDUsIDI1MSwgNywgMTc0LCA1LCAyNTQsIDgzLCAKLSAgICAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAxNzQsIDEsIDI1NSwgODIsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjM2LCAKLSAgICA0MCwgMTc0LCAxLCA2OSwgMTc0LCAxLCAyMTQsIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgCi0gICAgMTgyLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIDE0OSwgMjMyLCAxOTEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjU0LCAKLSAgICAyMTAsIDE3NCwgMSwgNzgsIDE3NCwgMSwgMjUzLCAyMDAsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTM4LCAxNzQsIDEsIAotICAgIDI0MywgMTQyLCAxNzQsIDEsIDI0MywgMCwgMTc0LCAxLCAyMjksIDgyLCAxNzQsIDEsIDI1MSwgNDEsIDE3NCwgMSwgMjUwLCAKLSAgICAxNjUsIDE3NCwgMSwgMjM1LCAxNDcsIDE3NCwgMSwgMjM1LCAxMjAsIDE3NCwgMSwgMjI3LCAxNjksIDE3NCwgMSwgMjE1LCAKLSAgICAxNTcsIDE3NCwgMSwgMjE1LCAxNDUsIDE3NCwgMSwgMjQ4LCAxNDMsIDE3NCwgMSwgMjQ4LCAxMjcsIDE3NCwgMSwgMjI4LCAKLSAgICAxMTUsIDE3NCwgMSwgMjE3LCAxMDYsIDE3NCwgMSwgMjE2LCAyMDksIDE3NCwgMSwgMjQ4LCAyMjksIDE3NCwgMSwgMjQ4LCAKLSAgICAzMywgMTc0LCAxLCAxOTgsIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIyNSwgMTUwLCAxNzQsIDEsIDI1MiwgMTk5LCAxNzQsIDEsIAotICAgIDI1MiwgMjYsIDE3NCwgMSwgMTg2LCAxNzQsIDEsIDE5MiwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxNDEsIDE3NCwgMSwgCi0gICAgMjMyLCAxOTAsIDE3NCwgMSwgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwNCwgMTc0LCAxLCAyMTgsIDIyNSwgMTc0LCAxLCAKLSAgICAyMDYsIDE3NCwgMSwgMTYyLCAxNzQsIDI1LCA1LCAyNTUsIDgyLCAxNzQsIDI1LCA1LCA3NCwgMTc0LCAyNSwgNSwgMjM2LCAKLSAgICA0MCwgMTc0LCAyNSwgNSwgNjksIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgCi0gICAgNSwgMTQ5LCAyMjIsIDE4MiwgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDE3NCwgCi0gICAgMjUsIDUsIDc2LCAxNzQsIDI1LCA1LCAyNTQsIDIxMCwgMTc0LCAyNSwgNSwgNzgsIDE3NCwgMjUsIDUsIDI1MywgMjAwLCAKLSAgICAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIDUsIDI1MywgMTgzLCAxNzQsIDUsIDIzNSwgMTA4LCAxNzQsIDUsIDIxNCwgMTYxLCAKLSAgICAxNzQsIDIyNiwgMjA4LCAxNzQsIDI0OCwgMTg2LCAxNzQsIDUyLCAyNDgsIDE4NiwgMTc0LCAyNTUsIDMwLCA1MCwgMTc0LCAKLSAgICAyMjAsIDEzOSwgMTc0LCAyMSwgMjEwLCA4NiwgMTc0LCAyMSwgMTExLCAxNzQsIDIxLCAxMDUsIDE3NCwgMjEsIDE1OCwgCi0gICAgMTc0LCAyMSwgMTYxLCAxNzQsIDIxLCAxOTAsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMTk5LCAxNzQsIDIxLCAxOTYsIAotICAgIDE3NCwgMjEsIDIwMSwgMjE3LCA3MCwgMSwgNjEsIDIxNywgNzAsIDEsIDI1NSwgODIsIDIxNywgNzAsIDEsIDc0LCAyMTcsIAotICAgIDcwLCAxLCAyMzYsIDQwLCAyMTcsIDcwLCAxLCA2OSwgMjE3LCA3MCwgMSwgMjE0LCAxMTgsIDIxNywgNzAsIDEsIDc2LCAKLSAgICAyMTcsIDcwLCAxLCAyNTQsIDIxMCwgMjE3LCA3MCwgMSwgNzgsIDIxNywgNzAsIDEsIDI1MywgMjAwLCAyMTcsIDcwLCAxLCAKLSAgICAxNzYsIDIxNywgNzAsIDEsIDIzNCwgMTM4LCAyMTcsIDcwLCAxLCAyNDMsIDE0MiwgMjE3LCA3MCwgMSwgMjQzLCAwLCAyMTcsIAotICAgIDcwLCAxLCAyMjksIDgyLCAyMTcsIDcwLCAxLCAyNTEsIDQxLCAyMTcsIDcwLCAxLCAyNTAsIDE2NSwgMjE3LCA3MCwgMSwgCi0gICAgMjM1LCAxNDcsIDIxNywgNzAsIDEsIDIzNSwgMTIwLCAyMTcsIDcwLCAxLCAyMjcsIDE2OSwgMjE3LCA3MCwgMSwgMjE1LCAKLSAgICAxNTcsIDIxNywgNzAsIDEsIDIxNSwgMTQ1LCAyMTcsIDcwLCAxLCAyNDgsIDE0MywgMjE3LCA3MCwgMSwgMjQ4LCAxMjcsIAotICAgIDIxNywgNzAsIDEsIDIyOCwgMTE1LCAyMTcsIDcwLCAxLCAyMTcsIDEwNiwgMjE3LCA3MCwgMSwgMjE2LCAyMDksIDIxNywgCi0gICAgNzAsIDEsIDI0OCwgMjI5LCAyMTcsIDcwLCAxLCAyNDgsIDMzLCAyMTcsIDcwLCAxLCAxOTgsIDIxNywgNzAsIDEsIDE5MSwgCi0gICAgMjE3LCA3MCwgMSwgMjI1LCAxNTAsIDIxNywgNzAsIDEsIDI1MiwgMTk5LCAyMTcsIDcwLCAxLCAyNTIsIDI2LCAyMTcsIDcwLCAKLSAgICAxLCAxODYsIDIxNywgNzAsIDEsIDE5MiwgMjE3LCA3MCwgMSwgMjA1LCAyMTcsIDcwLCAxLCAyMzMsIDE0MSwgMjE3LCA3MCwgCi0gICAgMSwgMjE0LCAyNywgMjE3LCA3MCwgMSwgMjIwLCAxMDQsIDIxNywgNzAsIDEsIDIwNiwgMjE3LCA3MCwgMSwgMTYyLCAyMTcsIAotICAgIDcwLCAxLCAyMjIsIDE4MSwgMjE3LCA3MCwgNSwgMjU0LCA4MywgMjE3LCA3MCwgNSwgMjEzLCAxNDcsIDIxNywgNzAsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCAyMTcsIDcwLCAyNSwgNSwgNzQsIDIxNywgNzAsIDI1LCA1LCAyMzYsIDQwLCAyMTcsIDcwLCAyNSwgNSwgCi0gICAgNjksIDIxNywgNzAsIDI1LCA1LCAyMTQsIDExOCwgMjE3LCA3MCwgMjUsIDUsIDc2LCAyMTcsIDcwLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDIxNywgNzAsIDI1LCA1LCA3OCwgMjE3LCA3MCwgMjUsIDUsIDI1MywgMjAwLCAyMTcsIDcwLCA1LCAyMTMsIDE1MiwgCi0gICAgMjE3LCA3MCwgNSwgMjI3LCAyMDksIDIxNywgNzAsIDIxLCAyMTAsIDg2LCAyMTcsIDcwLCAyMSwgMTExLCAyMTcsIDcwLCAKLSAgICAyMSwgMTA1LCAyMTcsIDcwLCAyMSwgMTU4LCAyMTcsIDcwLCAyMSwgMTYxLCAyMTcsIDcwLCAyMSwgMTkwLCAyMTcsIDcwLCAKLSAgICAyMSwgMTk1LCAyMTcsIDcwLCAyMSwgMTk5LCAyMTcsIDcwLCAyMSwgMTk2LCAyMTcsIDcwLCAyMSwgMjAxLCAxNSwgNSwgNjEsIAotICAgIDE1LCA1LCAxMTYsIDMwLCA2MSwgMTUsIDUsIDExNiwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMTE2LCAzMCwgMjQzLCAxMTIsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMTE2LCAzMCwgMTYyLCAxNSwgNSwgMTE2LCAzMCwgMjM2LCA0MiwgMTUsIDUsIDExNiwgMzAsIAotICAgIDIzMywgMTIyLCAyNDIsIDEwMSwgMTUsIDUsIDExNiwgMzAsIDIzMCwgNjYsIDE1LCA1LCAxMTYsIDMwLCAyMjIsIDIzLCAxNSwgCi0gICAgNSwgMjU1LCA4NCwgMTUsIDUsIDI1NSwgMzQsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNTUsIDM1LCAKLSAgICAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAyNTUsIDM1LCAzMCwgCi0gICAgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzNSwgMzAsIDE2MiwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDQzLCAKLSAgICAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjU1LCAzNSwgMzAsIDIzMywgMTIzLCAxNSwgCi0gICAgNSwgMjU1LCAzNSwgMzAsIDIyMCwgNTAsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNjksIDE1LCA1LCAKLSAgICAyNTUsIDM1LCAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzIsIDE1LCA1LCAyNTUsIDMzLCAzMCwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAyNTUsIDMzLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzMywgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIAotICAgIDE1OCwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMjAsIDEwMiwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjU1LCA4LCAxNSwgNSwgMjU0LCAxOTUsIDE1LCA1LCAyNTQsIDE5NiwgMzAsIDI0NSwgOTUsIDE1LCA1LCAyNTQsIDE5NiwgCi0gICAgMzAsIDIyMCwgMTIsIDk2LCAyNDIsIDE5NywgMTUsIDUsIDI1NCwgMTg3LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyNTQsIAotICAgIDE4NywgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjQ3LCAyMjQsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDI0MiwgMTk3LCAxNSwgNSwgCi0gICAgMjU0LCAxODgsIDMwLCAxNjIsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDIzNSwgNSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjM0LCAKLSAgICA5OCwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAKLSAgICAyNTQsIDE4NCwgMTUsIDUsIDI1NCwgMTc3LCAxNSwgNSwgMjU0LCAxNDAsIDE1LCA1LCAyNTQsIDE0MSwgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyNTQsIDEzMSwgMTUsIDUsIDI1NCwgMTMyLCAxMTUsIDI1NCwgMTMxLCAxNSwgNSwgMjU0LCAxMzIsIDEzNCwgCi0gICAgMjE2LCA4NiwgMTUsIDUsIDI1NCwgMTMyLCA5NiwgMjI5LCAyMjIsIDIyNiwgMTY4LCAyNTQsIDEzMiwgOTYsIDIyOSwgMjIxLCAKLSAgICAxNSwgNSwgMjU0LCAxMzIsIDk2LCAyMjksIDIyMiwgMjE4LCAyMzUsIDE1LCA1LCAyNTQsIDEwMiwgMTUsIDUsIDI1NCwgNzUsIAotICAgIDE1LCA1LCAyNTQsIDQzLCAxNSwgNSwgMjU0LCA0NCwgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjU0LCAxNiwgMTUsIDUsIDI1MywgCi0gICAgMjQ0LCAxNSwgNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDI0MCwgMjEwLCA0MCwgMjE2LCAyNDAsIDE1LCA1LCAyNTMsIAotICAgIDI0MCwgMjM1LCA5LCAyMTYsIDI0MCwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyMTUsIDExNSwgMTE1LCAKLSAgICAyMTUsIDExNSwgMjE1LCAxMTUsIDExNSwgMjE1LCAxMTUsIDIyNiwgMjUsIDE1LCA1LCAyNTMsIDI0MCwgMTE1LCAyNTMsIAotICAgIDI0MCwgMTE1LCAyNTMsIDIzOSwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyNDksIAotICAgIDEzMywgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDIzNywgMTUsIDUsIDI1MywgCi0gICAgMjM0LCAxNSwgNSwgMjUyLCAxOTksIDE1LCA1LCAyNTIsIDE4NCwgMTUsIDUsIDI1MiwgMTc5LCAxNSwgNSwgMjUyLCAxNzUsIAotICAgIDE1LCA1LCAyNTIsIDE2OSwgMTUsIDUsIDI1MiwgMTcwLCAxMTUsIDI1MiwgMTY5LCAxNSwgNSwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAxMzAsIDE1LCA1LCAyNTIsIDE0OCwgMTUsIDUsIDI1MiwgMTQsIDE1LCA1LCAyNTIsIDE1LCAzMCwgNjEsIDE1LCA1LCAyNTIsIAotICAgIDE1LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNTIsIDE1LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyNTEsIDEzMywgCi0gICAgMTUsIDUsIDI1MSwgMTM0LCAxMTUsIDI1MSwgMTM0LCAyNTUsIDM0LCAxNSwgNSwgMjUxLCAxMzQsIDExNSwgMjUxLCAxMzQsIAotICAgIDIxNCwgMTkwLCAxNSwgNSwgMjUxLCAxMzQsIDI0OSwgMTMzLCAyNTEsIDEzMywgMTUsIDUsIDI1MSwgMTE3LCAxNSwgNSwgCi0gICAgMjUxLCAxMTgsIDExNSwgMjUxLCAxMTcsIDE1LCA1LCAyNTEsIDEwNiwgMTUsIDUsIDI1MSwgMTA1LCAxNSwgNSwgMjQ4LCAKLSAgICAyMjksIDE1LCA1LCAyNDgsIDIyMCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMTE2LCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI1NCwgMTQwLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNTIsIDE2OCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjUyLCAxNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIAotICAgIDcyLCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MywgMTQzLCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MiwgMjIxLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNDIsIDIwNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjQyLCAxMTAsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCAKLSAgICA3MiwgMzAsIDE2MiwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjM1LCAxODYsIDE1LCA1LCAyNDgsIDIyMSwgCi0gICAgMjM0LCA3MiwgMzAsIDIzNSwgMTg3LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzNCwgCi0gICAgMjQ4LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMzMsIDE0MSwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAKLSAgICAzMCwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgMTA0LCA5NiwgMjMxLCAxNTEsIDE1LCAKLSAgICA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgODksIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIyOSwgCi0gICAgMTEyLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMjYsIDI2LCA5NiwgMjI2LCAyNSwgMTUsIDUsIDI0OCwgMjIxLCAKLSAgICAyMzQsIDcyLCAzMCwgMjE5LCAxOTMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIxNywgNzMsIDE1LCA1LCAyNDgsIAotICAgIDIyMSwgMjM0LCA3MiwgMzAsIDIxNCwgMjMxLCA5NiwgMjQyLCAyMDQsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIAotICAgIDIxNCwgMTI2LCAxNSwgNSwgMjQ4LCAxOTUsIDE1LCA1LCAyNDgsIDE3NCwgMTUsIDUsIDI0OCwgMTczLCAxNSwgNSwgMjQ4LCAKLSAgICAxNzIsIDE1LCA1LCAyNDgsIDExLCAxNSwgNSwgMjQ3LCAyNTAsIDE1LCA1LCAyNDcsIDIyNSwgMTUsIDUsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0NywgMjI0LCAxNSwgNSwgMjQ3LCAyMTQsIDE1LCA1LCAyNDcsIDIxNSwgMjM0LCAyMTQsIAotICAgIDEwNCwgMjQyLCAxMDIsIDI0NywgMTk1LCAxNSwgNSwgMjQ3LCAxOTUsIDE1LCA1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgCi0gICAgMTE1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDg3LCAyMjAsIDQ3LCAxNSwgNSwgCi0gICAgMjQ2LCA4NCwgMTUsIDUsIDI0NiwgODUsIDMwLCAyNDUsIDgwLCAxNSwgNSwgMjQ2LCA4MywgMTUsIDUsIDI0NiwgODIsIDE1LCAKLSAgICA1LCAyNDYsIDgxLCAxNSwgNSwgMjQ2LCA4MCwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCAKLSAgICA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDc1LCAyNDIsIDEwMiwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgCi0gICAgMjQ2LCA2NiwgMTUsIDUsIDc2LCAxNSwgNSwgMTYwLCAzMCwgMjI2LCAyNSwgMTUsIDUsIDE2MCwgMTE1LCAxNjAsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjQ1LCAyNDIsIDE1LCA1LCAyNDUsIDI0MywgMzAsIDExNiwgOTYsIDI0MiwgCi0gICAgNTYsIDk2LCAyNDgsIDIyOSwgMTUsIDUsIDI0NSwgMjQzLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNDUsIDI0MywgMzAsIAotICAgIDIzMCwgMjM1LCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjIsIDEwLCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjAsIDY1LCAxNSwgCi0gICAgNSwgMjQ1LCAyNDMsIDMwLCA2OSwgMTUsIDUsIDI0NSwgMjE5LCAxNSwgNSwgMjQ1LCAyMDgsIDE1LCA1LCAyNDUsIDE4MiwgCi0gICAgMTUsIDUsIDI0NSwgMTU4LCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyNDMsIDExMSwgMTUsIDUsIDI0NSwgMTU5LCAzMCwgMjQzLCAKLSAgICAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyMzEsIDk2LCAxNSwgNSwgMjQ1LCAxNTksIDI0OSwgMTMzLCAKLSAgICAyNDUsIDE1OCwgMTUsIDUsIDI0NSwgMTU5LCAyMjYsIDE2OCwgMjQ1LCAxNTgsIDE1LCA1LCAyNDUsIDE1OSwgMjE4LCAyMzUsIAotICAgIDE1LCA1LCAyNDUsIDk3LCAxNSwgNSwgMjQ1LCA5NSwgMTUsIDUsIDI0NSwgODAsIDE1LCA1LCAyNDUsIDE4LCAxNSwgNSwgCi0gICAgMjQ1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDExNiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgMjQ1LCAxOSwgCi0gICAgMzAsIDExNiwgOTYsIDIzMywgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDUsIAotICAgIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDIsIDI0MiwgMTAxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgCi0gICAgMTksIDMwLCAyNDIsIDU2LCAyNDIsIDEwMSwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIDUsIAotICAgIDI0NSwgMTksIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzQsIDIxNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjMzLCAyMjEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgCi0gICAgMjMzLCAxMTEsIDMwLCAyMzMsIDExMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzIsIDI0NywgMTUsIDUsIDI0NSwgMTksIDMwLCAKLSAgICAyMzIsIDEwMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDI0MywgMTQyLCAxNSwgNSwgMjQzLCAxNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDAsIDE1LCA1LCAyNDMsIDE0MSwgCi0gICAgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxMTYsIDk2LCAxNjIsIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDExNiwgOTYsIDIzNiwgNDIsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1NSwgMzMsIDIxNiwgMjQxLCAKLSAgICA5NiwgMjE3LCA5NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1MywgCi0gICAgMjM5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTMsIDIzOCwgOTYsIDI0MywgMTI1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjUyLCAxNDksIDk2LCAyMDUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDI1MSwgMTA2LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTEsIDEwNywgOTYsIDIwNSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjQ4LCAyMjksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0OCwgMTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ2LCA4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ1LCAxODIsIAotICAgIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgMTgzLCA5NiwgMjMzLCAxNDEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgCi0gICAgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDUsIDE1OSwgMzAsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQyLCAyMjEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNDIsIDIyMCwgOTYsIDYxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDIsIDIwNSwgOTYsIDIxOCwgODQsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDI0MiwgNTYsIDk2LCAyMzIsIDEwNCwgOTYsIDI0NSwgODAsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgCi0gICAgMzcsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMzgsIDk2LCAyMzMsIDE0MSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQxLCAKLSAgICAxODgsIDk2LCAyMzIsIDI0NywgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQwLCAyMjUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzUsIDE3MywgOTYsIDI0MCwgMjMwLCA5NiwgMjUzLCAKLSAgICAyMzksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzQsIDIxMywgMTUsIDUsIAotICAgIDI0MywgMTQxLCAzMCwgMjM0LCA5NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjM0LCA5NiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgCi0gICAgMjQzLCAxNDEsIDMwLCAyMzMsIDIyMiwgOTYsIDI1NCwgMTMxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzMsIDE0MSwgMTUsIAotICAgIDUsIDI0MywgMTQxLCAzMCwgMjMxLCA5NywgOTYsIDI0NSwgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyNywgMTk5LCAxMTUsIDIyNywgCi0gICAgMTk4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxOTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDIyMSwgMjMzLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjE1LCA5OSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjIwLCAzMiwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjE4LCA0NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0MywgMTQxLCAzMCwgNjksIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMTQsIDIyMCwgOTYsIDI0NiwgODYsIDE1LCAKLSAgICA1LCAyNDMsIDE0MSwgMTE1LCAyNDMsIDE0MCwgMTUsIDUsIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzYsIDI0OSwgMTMzLCAKLSAgICAyNDMsIDEzNSwgMTUsIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgMTA0LCAxMTUsIAotICAgIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjUsIDE1LCA1LCAyNDMsIDEyNiwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgCi0gICAgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjQsIDE1LCA1LCAyNDMsIDEyMiwgMTUsIDUsIDI0MywgMTEzLCAKLSAgICAxNSwgNSwgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDMsIDExMiwgMTE1LCAyNDMsIAotICAgIDExMSwgMTUsIDUsIDI0MywgMTEyLCAyNDksIDEzMywgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTAyLCAxNSwgNSwgMjQzLCA5NywgMTUsIDUsIDI0MywgNDMsIDE1LCA1LCAyNDMsIDQ0LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjIyLCAzMCwgNzYsIDE1LCA1LCAyNDIsIDIyMiwgMzAsIDY5LCAxNSwgNSwgMjQyLCAKLSAgICAyMjIsIDI0OSwgMTMzLCAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMjAsIDExNSwgMjQyLCAyMTksIAotICAgIDE1LCA1LCAyNDIsIDIyMCwgMjQ5LCAxMzMsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMTYsIDE1LCA1LCAyNDIsIDIwNCwgCi0gICAgMTUsIDUsIDI0MiwgMjA1LCAyNDIsIDEwMSwgMTUsIDUsIDI0MiwgMjAyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAxMTYsIDk2LCAKLSAgICAyMzYsIDQyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDIsIDIwMywgMzAsIAotICAgIDIzNiwgNDIsIDE1LCA1LCAyNDIsIDIwMywgMzAsIDIzMiwgMTA0LCA5NiwgMjM2LCA0MiwgMTUsIDUsIDI0MiwgMjAzLCAzMCwgCi0gICAgMTkxLCAxNSwgNSwgMjQyLCAxOTksIDE1LCA1LCAyNDIsIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAKLSAgICAxOTcsIDE1LCA1LCAyNDIsIDE5OCwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMjQyLCAxOTgsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjQyLCAxOTgsIDIxNiwgMjQwLCAxNSwgNSwgMjQyLCAxMjAsIDE1LCA1LCAyNDIsIDEyMSwgMjQ5LCAxMzMsIDI0MiwgMTIwLCAKLSAgICAxNSwgNSwgMjQyLCAxMTgsIDE1LCA1LCAyNDIsIDExOSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMzQsIAotICAgIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDI0MiwgCi0gICAgMTE5LCAzMCwgMjIyLCAxMSwgOTYsIDIxNSwgMTE0LCAxNSwgNSwgMjQyLCAxMTksIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAKLSAgICAxMTAsIDE1LCA1LCAyNDIsIDExMSwgMzAsIDExNiwgOTYsIDIzMywgMjAyLCAxNSwgNSwgMjQyLCAxMTEsIDMwLCAyMzMsIAotICAgIDIwMiwgMTUsIDUsIDI0MiwgMTExLCAxMTUsIDI0MiwgMTExLCAyMzIsIDk2LCAxNSwgNSwgMjQyLCAxMDUsIDE1LCA1LCAKLSAgICAyNDIsIDEwMywgMTUsIDUsIDI0MiwgMTA0LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MiwgOTUsIDE1LCA1LCAyNDIsIDk0LCAKLSAgICAxNSwgNSwgMjQyLCA5MSwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDU2LCAyMTYsIDI0MCwgMTUsIAotICAgIDUsIDI0MiwgNTYsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAzNywgMTUsIDUsIDI0MSwgMTg3LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyNTMsIDIzOSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjQxLCAxODgsIDMwLCAyNDcsIDE5NSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjQzLCAxMzMsIDE1LCA1LCAKLSAgICAyNDEsIDE4OCwgMzAsIDIzNCwgODcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDIyNywgMTk4LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQxLCAxODgsIDMwLCA2OSwgMTUsIDUsIDI0MCwgMjI5LCAxNSwgNSwgMjQwLCAyMjUsIAotICAgIDE1LCA1LCAyNDAsIDIyNiwgMzAsIDI1NCwgMTMxLCAxNSwgNSwgMjQwLCAyMjYsIDMwLCAyNDIsIDM3LCAxNSwgNSwgMjQwLCAKLSAgICAyMjYsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0MCwgMjI2LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyNDAsIDIyNiwgMzAsIAotICAgIDIxNCwgMjE5LCAxNSwgNSwgMjQwLCAyMjIsIDE1LCA1LCA3NCwgMTUsIDUsIDI0MCwgMTYxLCA2MSwgMTUsIDUsIDI0MCwgCi0gICAgMTIyLCAxNSwgNSwgMjM2LCA3MCwgMTUsIDUsIDIzNiwgNzEsIDExNSwgMjM2LCA3MSwgMjUxLCAxMDYsIDE1LCA1LCAyMzYsIAotICAgIDcxLCAxMTUsIDIzNiwgNzEsIDIxOCwgMjM1LCAxNSwgNSwgMjM2LCA0NSwgMTUsIDUsIDIzNiwgNDIsIDE1LCA1LCAyMzYsIAotICAgIDQzLCAyNDcsIDI1MCwgMTUsIDUsIDIzNiwgNDMsIDIyMywgMzgsIDE1LCA1LCAyMzYsIDQzLCAxMTUsIDIzNiwgNDMsIDIyMCwgCi0gICAgMTYsIDExNSwgMjIwLCAxNiwgMjE0LCAyMjAsIDExNSwgMjE0LCAyMTksIDE1LCA1LCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIAotICAgIDUsIDIzNiwgMzQsIDE1LCA1LCAyMzYsIDM1LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM2LCAzMywgMTUsIAotICAgIDUsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAzMCwgMjE3LCA3MywgMTUsIDUsIDIzNiwgMjQsIDI0OSwgMTMzLCAyMzYsIAotICAgIDIzLCAxNSwgNSwgMjM2LCAyNCwgMjI2LCAxNjgsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAyMTgsIDIzNSwgMTUsIDUsIAotICAgIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDYsIDE1LCA1LCAyMzUsIDE4NiwgMTUsIDUsIDIzNSwgMTcyLCAxNSwgNSwgMTc2LCAxNSwgCi0gICAgNSwgMjM1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1NSwgOCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTUsIAotICAgIDksIDk2LCAyMzMsIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIAotICAgIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIDE2OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAxMzAsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjUyLCAxNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDUsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0NSwgCi0gICAgODAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MywgMTAzLCAxNSwgNSwgCi0gICAgMjM1LCAxOSwgMzAsIDI0MywgMTA0LCA5NiwgMjIwLCAxMDMsIDk2LCA2MSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIAotICAgIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDIwNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDE5OCwgOTYsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDE5LCAKLSAgICAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQyLCA5NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzNiwgMjMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjM0LCAyNDgsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzQsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgCi0gICAgMjQ3LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgMTAzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0NiwgODYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0MiwgCi0gICAgMjIxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTcsIDk2LCAyMTcsIDIzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgCi0gICAgMjM1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgMjM2LCA5NiwgMjI3LCAxOTMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI5LCAKLSAgICAxMTIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI1LCAxMTEsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIyLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgMTA0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTksIDIyNywgMTUsIDUsIDIzNSwgMTksIDMwLCAKLSAgICAyMTksIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTgsIDUyLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIxNywgNTEsIDE1LCAKLSAgICA1LCAyMzUsIDE5LCAzMCwgNjksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgCi0gICAgMjE0LCAyMTksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAxOTMsIDMwLCAxOTEsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAKLSAgICAxMjYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTcsIDE1LCA1LCAyMzUsIDE4LCAyNDksIAotICAgIDEzMywgMjM1LCAxNywgMTUsIDUsIDIzNSwgMTAsIDE1LCA1LCAyMzUsIDcsIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIAotICAgIDQsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDMsIDExNSwgMjM1LCAyLCAxNSwgNSwgMjM0LCAyNDgsIDE1LCA1LCAKLSAgICAyMzQsIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjM0LCAyNDQsIDE1LCA1LCAyMzQsIDI0NSwgMzAsIAotICAgIDI1MiwgMTg0LCAxNSwgNSwgMjM0LCAyNDUsIDI0OSwgMTMzLCAyMzQsIDI0NCwgMTUsIDUsIDIzNCwgMjQyLCAxNSwgNSwgCi0gICAgMjM0LCAyNDEsIDE1LCA1LCAyMzQsIDIxMywgMTUsIDUsIDIzNCwgMjE0LCAyMzMsIDEyNCwgMzAsIDEwNCwgMTE1LCAyMzMsIAotICAgIDEyNCwgMzAsIDY5LCAxNSwgNSwgMjM0LCAyMTQsIDExNSwgMjM0LCAyMTQsIDIzMywgMTI0LCAzMCwgMTA0LCAxMTUsIDIzMywgCi0gICAgMTI0LCAzMCwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIDIzNCwgOTgsIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjUyLCAKLSAgICAxODQsIDE1LCA1LCAyMzQsIDk5LCAzMCwgNjksIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzQsIAotICAgIDk1LCAxNSwgNSwgMjM0LCA4NywgMTUsIDUsIDIzNCwgNzQsIDE1LCA1LCAyMzQsIDczLCAxNSwgNSwgMjM0LCA3MSwgMTUsIAotICAgIDUsIDIzNCwgNzIsIDExNSwgMjM0LCA3MSwgMTUsIDUsIDIzMywgMjIzLCAxNSwgNSwgMjMzLCAyMjQsIDExNSwgMjQxLCAKLSAgICAxODgsIDMwLCAyNTMsIDIzOCwgMjMzLCAyMjQsIDExNSwgMjQxLCAxODgsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzMywgCi0gICAgMjIxLCAxNSwgNSwgMjMzLCAyMTksIDE1LCA1LCAyMzMsIDIyMCwgMjE0LCAxMiwgMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTUsIAotICAgIDUsIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAyMTYsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAyMTQsIDE1LCA1LCAyMzMsIDIwMiwgCi0gICAgMTUsIDUsIDIzMywgMjAzLCAyMjYsIDE2OCwgMjMzLCAyMDIsIDE1LCA1LCAyMzMsIDE5NywgMTUsIDUsIDIzMywgMTc4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDE1LCA1LCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgNjEsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAxMTYsIDk2LCAyNDMsIAotICAgIDEwMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMTE2LCA5NiwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI1NCwgCi0gICAgMTg3LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUzLCAyNDAsIDIxMCwgCi0gICAgNDAsIDIxNiwgMjQwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUyLCAKLSAgICAxNCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQ4LCAxNzQsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0NSwgMTU4LCAxNSwgNSwgCi0gICAgMjMzLCAxMjQsIDMwLCAyNDMsIDE0MiwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNDIsIDExMSwgOTYsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAxNjIsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MiwgMzcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MSwgCi0gICAgMTg4LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzYsIDI0LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIAotICAgIDMwLCAyMzYsIDI0LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIzNCwgODcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMywgMjIxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzMsIAotICAgIDIxNSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNDEsIDE4OCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIAotICAgIDIzMiwgMTAzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzIsIDkxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk2LCAxNSwgCi0gICAgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk3LCA5NiwgMjQ1LCAxNTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMCwgNjYsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMjAsIDY2LCA5NiwgMjE4LCA0NCwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCA5NiwgMjQ1LCA5NSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgCi0gICAgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCAyMTYsIDI0MCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAKLSAgICAyMzMsIDEyNCwgMzAsIDIxOSwgMjI2LCA5NiwgMjE5LCAyMjUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxOCwgNDQsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIxNywgODUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxNywgNzMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIxNywgMjQsIDk2LCAxMTYsIDk2LCAyMTgsIDg1LCA5NiwgMTk4LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDY5LCAKLSAgICAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIAotICAgIDIxOSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzMsIDEyNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyMzMsIDEyMSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NiwgOTYsIAotICAgIDIxOCwgNDQsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDEsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDIsIDExNSwgMjMzLCAKLSAgICAxMjIsIDI0MiwgMTAyLCAyMjAsIDY1LCAxNSwgNSwgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExMCwgMTUsIDUsIDIzMywgCi0gICAgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEwOCwgMTUsIDUsIDIzMywgMTA5LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyMzMsIDEwOSwgMzAsIDIzMywgMjAzLCA5NiwgMjIyLCAxNDIsIDE1LCA1LCAyMzIsIDI0NywgMTUsIDUsIDIzMiwgMjMyLCAKLSAgICAxNSwgNSwgMjMyLCAyMjIsIDE1LCA1LCAyMzIsIDIwMywgMTUsIDUsIDIzMiwgMTAzLCAxNSwgNSwgMjMyLCAxMDQsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNTQsIDE4NywgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDI0NSwgODAsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIAotICAgIDI0NSwgODEsIDIxNiwgMjQwLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDI0MSwgMTg4LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDIzNiwgMjMsIDE1LCA1LCAKLSAgICAyMzIsIDEwMiwgMzAsIDIzNSwgNywgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM1LCA1LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAKLSAgICAyMzUsIDYsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgCi0gICAgMjMzLCAxNDIsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjMzLCAxMjMsIDE1LCA1LCAyMzIsIDEwMiwgCi0gICAgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIDE1OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjI5LCAxMTIsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDIyNywgMjQyLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTksIDE5NCwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjMyLCAxMDIsIDMwLCAyMTksIDE3NiwgOTYsIDI1MSwgMTMzLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTUsIDExNCwgMTUsIAotICAgIDUsIDIzMiwgMTAyLCAyMTYsIDI0MCwgMTUsIDUsIDIzMiwgMTAyLCAyNDksIDEzMywgMjMyLCAxMDEsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMjI2LCAxNjgsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDIxOCwgMjM1LCAxNSwgNSwgMjMyLCAxMDIsIDIyMCwgCi0gICAgNDcsIDE1LCA1LCAyMzIsIDEwMCwgMTUsIDUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAxMTUsIDIzMiwgOTYsIDE1LCA1LCAKLSAgICAyMzIsIDk3LCAyMjYsIDE2OCwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyMCwgNDcsIDE1LCA1LCAyMzIsIDk0LCAxNSwgCi0gICAgNSwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAxMTUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAKLSAgICAxMTUsIDIzMiwgOTAsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMTg2LCAxNSwgNSwgMjMxLCAyNDQsIDMwLCAKLSAgICAyMTcsIDczLCAxNSwgNSwgMjMxLCAyNDQsIDI0MiwgMTAxLCAxNSwgNSwgMjMxLCAyNDMsIDE1LCA1LCAyMzEsIDIxNSwgMTUsIAotICAgIDUsIDIzMSwgMTcxLCAxNSwgNSwgMjMxLCAxNTIsIDE1LCA1LCAyMzEsIDE1MSwgMTUsIDUsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzEsIDUyLCAxNSwgNSwgMjMwLCAyMzUsIDE1LCA1LCAyMzAsIDE5MywgMTUsIDUsIDIzMCwgMTA3LCAxNSwgNSwgMjMwLCAKLSAgICAxMDgsIDExNSwgMjMwLCAxMDcsIDE1LCA1LCAyMzAsIDk4LCAxNSwgNSwgMjMwLCA5OSwgMjQyLCAxMDEsIDE1LCA1LCAyMzAsIAotICAgIDgzLCAxNSwgNSwgMjMwLCA2OSwgMTUsIDUsIDIzMCwgNjYsIDE1LCA1LCAyMzAsIDY3LCAzMCwgNjEsIDE1LCA1LCAyMzAsIAotICAgIDY3LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMzAsIDY3LCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgCi0gICAgNjYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgNjcsIDMwLCAxMTYsIDk2LCAxOTgsIDE1LCA1LCAyMzAsIDY3LCAyNDksIAotICAgIDEzMywgMjMwLCA2NiwgMTUsIDUsIDIzMCwgNjQsIDE1LCA1LCAyMzAsIDY1LCAzMCwgNjEsIDE1LCA1LCAyMzAsIDY1LCAzMCwgCi0gICAgMTE2LCA5NiwgMjQ4LCAxMSwgMTUsIDUsIDIzMCwgNjUsIDMwLCAyNDgsIDExLCAxNSwgNSwgMjMwLCA2NSwgMjQyLCAxMDEsIAotICAgIDE1LCA1LCAxOTgsIDE1LCA1LCAyMjksIDIzMiwgMTUsIDUsIDIyOSwgMjIxLCAxNSwgNSwgMjI5LCAyMjIsIDIzNSwgMTk5LCAKLSAgICAxNSwgNSwgMjI5LCAyMjIsIDMwLCAyMTksIDIyOCwgMjE2LCAyNDAsIDE1LCA1LCAyMjksIDIyMiwgMjI2LCAxNjgsIDIyOSwgCi0gICAgMjIxLCAxNSwgNSwgMjI5LCAyMjAsIDE1LCA1LCAyMjksIDIxMywgMjI3LCAxODQsIDE1LCA1LCAyMjksIDIxMiwgMTUsIDUsIAotICAgIDIyOSwgMjExLCAxNSwgNSwgMjI5LCAxMTIsIDE1LCA1LCAyMjksIDExMywgMzAsIDYxLCAxNSwgNSwgMjI5LCAxMTMsIDMwLCAKLSAgICAyMTQsIDIxOSwgMTUsIDUsIDIyOSwgMTEzLCAyMjAsIDQ3LCAxNSwgNSwgMjI4LCAyMzgsIDE1LCA1LCAyMjgsIDIzOSwgMzAsIAotICAgIDc2LCAxNSwgNSwgMjI4LCAyMzcsIDE1LCA1LCAyMjgsIDIwOCwgMTUsIDUsIDIyOCwgMjA5LCAzMCwgMjQzLCAxMTIsIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjI4LCAyMDksIDMwLCAyNDMsIDEwNCwgOTYsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDIyOCwgCi0gICAgMjA2LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjUzLCAyMzksIDE1LCA1LCAKLSAgICAyMjgsIDIwNywgMzAsIDI1MywgMjQwLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDI0MiwgMTEwLCAxNSwgCi0gICAgNSwgMjI4LCAyMDcsIDMwLCAyMzEsIDk3LCA5NiwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjksIDExMiwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAxMTYsIDI1NCwgMTMxLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAyNTMsIDI0MCwgOTYsIAotICAgIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIAotICAgIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyOCwgMTk1LCAxNSwgNSwgMjI3LCAyNDIsIDE1LCA1LCAyMjcsIDIxNCwgMTUsIDUsIAotICAgIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDIzMywgMTIyLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMjcsIDE5OSwgMjMzLCAKLSAgICAxMjIsIDMwLCAyMzEsIDE1MiwgMTUsIDUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjcsIAotICAgIDE5OSwgMjMzLCAxMjIsIDMwLCAyMjIsIDExLCAxMTUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAKLSAgICAyMjcsIDE5OSwgMjMzLCAxMjIsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk5LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDI0OSwgMTMzLCAyMjcsIDE5OCwgMTUsIDUsIDIyNywgMTk5LCAKLSAgICAyNDksIDEzMywgMjI3LCAxOTksIDIzMywgMTIyLCAxMTUsIDIzMywgMTIxLCAxNSwgNSwgMjI3LCAxOTMsIDE1LCA1LCAyMjcsIAotICAgIDE5NCwgMjU1LCAzMywgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNTIsIDE0LCAxNSwgNSwgCi0gICAgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDYsIDgyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAKLSAgICAzMywgMzAsIDIzNSwgNSwgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyMjcsIDE5NCwgCi0gICAgMjU1LCAzMywgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMTksIDE3MywgMTUsIDUsIAotICAgIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTQsIAotICAgIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTUsIDY5LCAxNSwgNSwgMTkxLCAxNSwgNSwgMjI2LCA4NCwgCi0gICAgMTUsIDUsIDIyNiwgNTEsIDE1LCA1LCAyMjYsIDI1LCAxNSwgNSwgMjI1LCAxNjQsIDE1LCA1LCAyMjUsIDExMSwgMTUsIDUsIAotICAgIDIyNSwgMTEyLCAzMCwgNjEsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1NSwgMzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MiwgCi0gICAgMTQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MSwgMTMzLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA3NiwgMTUsIDUsIDIyNSwgCi0gICAgMTEyLCAzMCwgNzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI0MCwgMTIyLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIyNSwgMTEyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDExMiwgMjQ5LCAxMzMsIDIyNSwgMTExLCAxNSwgNSwgCi0gICAgMjI1LCA1NiwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMzQsIDI0NCwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDIyNSwgNTcsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTcsIDIyNiwgMTY4LCAyMjUsIDU2LCAxNSwgNSwgMjA1LCAKLSAgICAxNSwgNSwgMjIzLCAxODUsIDE1LCA1LCAyMjMsIDM4LCAxNSwgNSwgMjIyLCAxNDIsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIAotICAgIDI0LCAyMjcsIDE4NCwgMTUsIDUsIDIyMiwgMjMsIDE1LCA1LCAyMjIsIDI0LCAzMCwgNjEsIDE1LCA1LCAyMjIsIDI0LCAzMCwgCi0gICAgMjQ2LCA4NiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyNDYsIDg0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDE2MiwgMTUsIDUsIAotICAgIDIyMiwgMjQsIDMwLCAyMzQsIDI0OCwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMzIsIDg5LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIzMCwgMjM1LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIyNywgMTk4LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMTcsIDk0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjI1LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTUwLCAxNSwgNSwgMjIyLCAyNCwgCi0gICAgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjIyLCAyNCwgMTE1LCAyMjIsIDIzLCAxNSwgNSwgMjIyLCAyNCwgMjQyLCAxMDEsIDE1LCAKLSAgICA1LCAyMjIsIDEwLCAxNSwgNSwgMjIyLCAxMSwgMjMzLCAxMjQsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIyMSwgMjQxLCAxNSwgCi0gICAgNSwgMjIxLCAyMzMsIDE1LCA1LCAyMjAsIDEwNCwgMTUsIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMjAsIDEwMywgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjIwLCAKLSAgICAxMDMsIDMwLCAyMjksIDExMiwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAyMjAsIDEwMywgMzAsIAotICAgIDIxNSwgOTksIDE1LCA1LCAyMjAsIDEwMywgMzAsIDY5LCAxNSwgNSwgMjIwLCAxMDMsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMTAxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIDUsIDIyMCwgODAsIDE1LCA1LCAyMjAsIDY1LCAxNSwgNSwgMjIwLCAKLSAgICA2NiwgMjQwLCAyMjksIDE1LCA1LCAyMjAsIDY2LCAxMTUsIDIyMCwgNjYsIDI0MywgMTM0LCAxMTUsIDI0MywgMTM0LCAyNDMsIAotICAgIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNjYsIDExNSwgMjIwLCA2NiwgMjE3LCA5NSwgMTE1LCAyMTcsIDk1LCAKLSAgICAyNDMsIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNTgsIDE1LCA1LCAyMjAsIDUzLCAxNSwgNSwgMjIwLCA1MCwgCi0gICAgMTUsIDUsIDIyMCwgNDksIDE1LCA1LCAyMjAsIDQ2LCAxNSwgNSwgMjIwLCAzMiwgMTUsIDUsIDIyMCwgMzMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMzMsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjIwLCAyNiwgMTUsIDUsIDIyMCwgMjcsIDMwLCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMjcsIDMwLCAyNTIsIDE2OSwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNTEsIDExNywgMTUsIDUsIDIyMCwgMjcsIAotICAgIDMwLCAyNDcsIDIxNCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgMjcsIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjIwLCAyNywgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjIwLCAyNywgMzAsIDIzMywgMTk3LCAxNSwgCi0gICAgNSwgMjIwLCAyNywgMzAsIDIzMiwgOTEsIDE1LCA1LCAyMjAsIDI3LCAzMCwgMjMwLCA5OCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAKLSAgICAyMjIsIDEwLCAxNSwgNSwgMjIwLCAyMCwgMTUsIDUsIDIyMCwgMTUsIDE1LCA1LCAyMjAsIDE2LCAyMTYsIDI0MCwgMTUsIDUsIAotICAgIDIyMCwgMTYsIDExNSwgMjIwLCAxNiwgMjUxLCAxMDcsIDExNSwgMjUxLCAxMDYsIDE1LCA1LCAyMjAsIDExLCAxNSwgNSwgCi0gICAgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyOCwgMTE1LCAyMzUsIDIwMCwgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyNSwgMTUsIAotICAgIDUsIDIxOSwgMjI0LCAxNSwgNSwgMjE5LCAxOTMsIDE1LCA1LCAyMTksIDE5NCwgMjQyLCAxMDEsIDE1LCA1LCAyMTksIDE4NCwgCi0gICAgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODMsIDExNSwgMjE5LCAxODMsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAKLSAgICAxNzUsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOCwgODQsIDE1LCA1LCAyMTgsIDg1LCAxMTUsIDIxOCwgODQsIDE1LCAKLSAgICA1LCAyMTgsIDU1LCAxNSwgNSwgMjE4LCA1NCwgMTUsIDUsIDIxOCwgNTIsIDE1LCA1LCAyMTgsIDQ0LCAxNSwgNSwgMjE4LCAKLSAgICA0MywgMTUsIDUsIDIxOCwgMTgsIDE1LCA1LCAyMTgsIDE3LCAxNSwgNSwgMjE3LCAxMDYsIDE1LCA1LCAyMTcsIDEwNywgCi0gICAgMjUzLCAyMjQsIDE1LCA1LCAyMTcsIDEwNywgMzAsIDI0MSwgMTg3LCAxNSwgNSwgMjE3LCAxMDcsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDIxNywgMTA3LCAyNDIsIDEwMSwgMTUsIDUsIDIxNywgOTQsIDE1LCA1LCAyMTcsIDk1LCAxMTUsIDIxNywgOTUsIAotICAgIDIyOCwgMjM5LCAxMTUsIDIyOCwgMjM5LCAyNDcsIDE5NiwgMTE1LCAyNDcsIDE5NSwgMTUsIDUsIDIxNywgOTUsIDIxOCwgCi0gICAgMjM1LCAxNSwgNSwgMjE3LCA4NSwgMTUsIDUsIDEyOSwgMzAsIDI1MiwgMTQsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAxMjksIDMwLCAyMTksIDIyNywgMTUsIDUsIDEyOSwgMzAsIDIxNSwgCi0gICAgMTE0LCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMTcsIDczLCAxNSwgNSwgMjE3LCA1MSwgMTUsIDUsIAotICAgIDIxNywgMjMsIDE1LCA1LCAyMTcsIDI0LCAyNDIsIDEwMSwgMTUsIDUsIDIxNiwgMTE4LCAxNSwgNSwgMjE2LCAxMTksIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjE2LCA5MSwgMTUsIDUsIDIxNiwgNzMsIDE1LCA1LCAyMTYsIDc0LCAzMCwgMjE3LCA3MywgMTUsIDUsIAotICAgIDIxNiwgNzQsIDExNSwgMjE2LCA3MywgMTUsIDUsIDIxNiwgNzQsIDExNSwgMjE2LCA3NCwgMjQzLCAxMzQsIDExNSwgMjQzLCAKLSAgICAxMzQsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjE1LCAxMTksIDE1LCA1LCAyMTUsIDExNCwgMTUsIDUsIAotICAgIDIxNSwgMTEyLCAxNSwgNSwgMjE1LCAxMDksIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCAxMDAsIDExNSwgMjE1LCAKLSAgICAxMDAsIDIxMCwgMTE3LCAxMTUsIDIxMCwgMTE2LCAxNSwgNSwgNjksIDE1LCA1LCAxMDQsIDI0MiwgMTEwLCAxNSwgNSwgCi0gICAgMTA0LCAxMDQsIDY5LCAxNSwgNSwgMTA0LCAxMTUsIDEwNCwgMjI2LCA5NCwgMTE1LCAyMjYsIDk0LCAyNDMsIDEwNCwgMTE1LCAKLSAgICAyNDMsIDEwMywgMTUsIDUsIDEwNCwgMTE1LCAxMDQsIDIxOCwgMTksIDExNSwgMjE4LCAxOCwgMTUsIDUsIDEwNCwgMTE1LCAKLSAgICAxMDQsIDEwNCwgMjIzLCA1MiwgMTE1LCAxMDQsIDIyMywgNTEsIDE1LCA1LCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMjI1LCAKLSAgICAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTcsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzNSwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCAKLSAgICA5NiwgNjksIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDEwNCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIAotICAgIDIyMCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ4LCAzMCwgCi0gICAgMjUyLCAxODQsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzMsIAotICAgIDEyMywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5NywgOTYsIDI0OCwgMjI5LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAKLSAgICAyMjAsIDEwMiwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNjksIDE1LCA1LCAyMTQsIDE5NiwgMTUsIDUsIDIxNCwgMTkyLCAxNSwgCi0gICAgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkxLCAxNSwgNSwgMjE0LCAxOTAsIDE1LCAKLSAgICA1LCAyMTQsIDE5MSwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyNDksIDEzMywgMjE0LCAKLSAgICAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxMTYsIAotICAgIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNiwgOTYsIDE5OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjU0LCAKLSAgICAxODcsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMTQsIAotICAgIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgMTQsIDE1LCA1LCAyMTQsIDE0NywgMTUsIDUsIDIxNCwgMTQ0LCAKLSAgICAxNSwgNSwgMjE0LCAxNDMsIDE1LCA1LCAyMTQsIDEzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgNjEsIDE1LCA1LCAyMTQsIAotICAgIDE0MCwgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMzAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0NiwgCi0gICAgNzYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTQyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEyNSwgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwMywgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCi0gICAgMjM2LCA0MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAyMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM1LCAxNzIsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODksIDE1LCA1LCAyMTQsIDE0MCwgCi0gICAgMzAsIDIzMCwgMTkzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTEsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIyMCwgNjUsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOSwgMTUsIDUsIDIxNCwgCi0gICAgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjE0LCAKLSAgICAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA2OSwgMTUsIDUsIDIxNCwgCi0gICAgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMjMsIDE1LCA1LCAyMTQsIAotICAgIDEyNywgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjE0LCAxMjIsIDE1LCA1LCAKLSAgICAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgMTUsIDUsIDIxNCwgCi0gICAgMTA5LCAzMCwgMjM0LCAyMTMsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgMjEwLCAxMTcsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMTAsIDExMywgMTUsIDUsIDIxMCwgCi0gICAgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTUsIDIxMCwgNDQsIDE1LCA1LCAKLSAgICAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgOSwgMjE2LCAyNDAsIDE1LCA1LCAyMTAsIAotICAgIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgNSwgMjEwLCAxMiwgMzAsIAotICAgIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MywgCi0gICAgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNTMsIDIzOSwgMTUsIAotICAgIDEzMiwgNSwgMjQ1LCAyMDEsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIAotICAgIDEzNCwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNDcsIAotICAgIDE5NSwgMTUsIDEzMiwgNSwgMjE5LCAxMjcsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjQ3LCAxOTUsIDE1LCAKLSAgICAxMzIsIDUsIDI0NSwgMjAxLCAyNDcsIDE5NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAKLSAgICAyNDQsIDE5LCA2OSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgNjksIDE1LCAxMzIsIDUsIDIxOSwgMTI3LCA2OSwgMTUsIDEzMiwgCi0gICAgNSwgMjIwLCAxMjQsIDY5LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgNjksIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCA2OSwgMTUsIAotICAgIDEzMiwgNSwgMTIzLCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCA0NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgCi0gICAgMjE5LCAxMjcsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgCi0gICAgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEyMywgMjQzLCA0MiwgMTUsIAotICAgIDEzMiwgNSwgMTEzLCAyNDMsIDQyLCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgNDIsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0MywgCi0gICAgNDIsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI0MywgNDIsIDE1LCAxMzIsIDUsIDExMywgMjIwLCA4MCwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgODEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAKLSAgICAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjIwLCA4MCwgMTUsIAotICAgIDEzMiwgNSwgMjIwLCAxMjQsIDIyMCwgODAsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAKLSAgICAyMjgsIDIwNSwgMjIwLCA4MCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAxMTMsIDIyMCwgNzUsIAotICAgIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc2LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCi0gICAgNSwgMjQ0LCAxOSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjIwLCA4MSwgCi0gICAgMzAsIDI0MywgMTI2LCA5NiwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDIyMCwgODEsIDMwLCAyNDMsIDEyNiwgOTYsIDIzMCwgCi0gICAgMTkzLCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMTMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAKLSAgICAxMzQsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgMTA0LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDIxNCwgMTIsIAotICAgIDI0NCwgMjgsIDI0NSwgODIsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjQ1LCA3OSwgMTUsIDEzMiwgNSwgCi0gICAgMjQ0LCAxOSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjMyLCAyMjMsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgCi0gICAgMjgsIDIzMiwgMjIxLCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzIsIDIyNCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgMjgsIDIzMiwgMjI0LCAyNTMsIDE2NiwgMTUsIDEzMiwgNSwgMjE5LCAKLSAgICAxMjcsIDIxNCwgMTIsIDI0NCwgMjgsIDI1MywgMjM2LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgCi0gICAgMjM2LCAxNSwgMTUsIDEzMiwgNSwgMjIwLCAxMjQsIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMTcsIDYxLCAxNSwgMTMyLCA1LCAKLSAgICAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAxNywgMjUzLCAxNjYsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCAyMTQsIDEyMSwgMTUsIDEzMiwgNSwgMjQ1LCAyMDEsIDIxNCwgMTIsIDI0NCwgMjgsIDIxNCwgMTIwLCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIAotICAgIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMzAsIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIAotICAgIDI5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMiwgNjEsIDE1LCAxMzIsIDUsIDExMywgCi0gICAgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjQwLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIAotICAgIDUsIDIxOSwgMTI3LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIDUsIDEyMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIAotICAgIDExMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDEzNCwgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI1MiwgMTU4LCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MiwgCi0gICAgMTU4LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDIyOCwgMjE1LCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIxNiwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDc4LCAxNSwgMTMyLCA1LCAxMTMsIDI0NSwgNzgsIAotICAgIDE1LCAxMzIsIDUsIDEyMywgMjE2LCAxNzAsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY4LCAyNDcsIDE5NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjE5LCAxMTYsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTcwLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCA2MSwgMTUsIDEzMiwgNSwgMTEzLCAyMTYsIDE2OCwgMjE0LCAxMiwgMjQ0LCAyOCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDEyMywgMjQ1LCAxOTcsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDIyNCwgMjUsIDI1MywgMjM5LCAxNSwgCi0gICAgMTMyLCA1LCA1NSwgMjUzLCAyMjcsIDEyMywgMjE5LCAxMTcsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIyNywgMTIzLCAyMjQsIAotICAgIDI0LCAxNSwgMjI0LCAxNDQsIDUsIDU1LCAyNTMsIDIyNywgMjExLCAyMDksIDI0NywgMTgwLCAxNSwgMjI0LCAxNDQsIDUsIAotICAgIDY3LCAyNDksIDIzNCwgMTUsIDIyNCwgMTQ0LCA1LCAyNDgsIDcsIDI0OSwgMjM0LCAxNSwgMjI0LCAxNDQsIDUsIDI0OCwgNywgCi0gICAgMjE1LCAyMjIsIDEyLCAxMywgMjU1LCAxNjQsIDEyLCAxMywgMjU1LCAxNjMsIDEyLCAxMywgMjU1LCAxNjIsIDEyLCAxMywgCi0gICAgMjU1LCAxNjEsIDEyLCAxMywgMjU1LCAxNjAsIDEyLCAxMywgMjU1LCAxNTksIDEyLCAxMywgMjU1LCAxNTgsIDEyLCAxMywgCi0gICAgMjU1LCAxNTcsIDEyLCAxMywgMjU1LCAxNTYsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAxNTQsIDEyLCAxMywgCi0gICAgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAxNTAsIDEyLCAxMywgCi0gICAgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAxNDYsIDEyLCAxMywgCi0gICAgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAxNDIsIDEyLCAxMywgCi0gICAgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAxMzgsIDEyLCAxMywgCi0gICAgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAxMzQsIDEyLCAxMywgCi0gICAgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAxMzAsIDEyLCAxMywgCi0gICAgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAxMjYsIDEyLCAxMywgCi0gICAgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAxMjIsIDEyLCAxMywgCi0gICAgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAxMTgsIDEyLCAxMywgCi0gICAgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAxMTQsIDEyLCAxMywgCi0gICAgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAxMTAsIDEyLCAxMywgCi0gICAgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAxMDYsIDEyLCAxMywgCi0gICAgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAxMDIsIDEyLCAxMywgCi0gICAgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIDk4LCAxMiwgMTMsIAotICAgIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIDEyLCAxMywgMjU1LCAKLSAgICA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIDEzLCAyNTUsIDg5LCAKLSAgICAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIDI1NSwgODUsIDEyLCAKLSAgICAxMywgMjUzLCAxNjQsIDEyLCAxMywgMjUzLCAxNjIsIDEyLCAxMywgMjUzLCAxNjAsIDEyLCAxMywgMjUzLCAxNTgsIDEyLCAKLSAgICAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTUsIDEyLCAxMywgMjUzLCAxNTMsIDEyLCAxMywgMjUzLCAxNTEsIDEyLCAKLSAgICAxMywgMjUzLCAxNDksIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUxLCA3MCwgMTIsIDEzLCAyNTEsIDY5LCAxMiwgMTMsIAotICAgIDI1MSwgNjgsIDEyLCAxMywgMjUxLCA2NywgMTIsIDEzLCAyNTEsIDY2LCAxMiwgMTMsIDI1MSwgNjUsIDEyLCAxMywgMjUxLCAKLSAgICA2NCwgMTIsIDEzLCAyNTEsIDYzLCAxMiwgMTMsIDI1MSwgNjIsIDEyLCAxMywgMjUxLCA2MSwgMTIsIDEzLCAyNTEsIDYwLCAKLSAgICAxMiwgMTMsIDI1MSwgNTksIDEyLCAxMywgMjUxLCA1OCwgMTIsIDEzLCAyNTEsIDU3LCAxMiwgMTMsIDI1MSwgNTYsIDEyLCAKLSAgICAxMywgMjUxLCA1NSwgMTIsIDEzLCAyNTEsIDU0LCAxMiwgMTMsIDI1MSwgNTMsIDEyLCAxMywgMjUxLCA1MiwgMTIsIDEzLCAKLSAgICAyNTEsIDUxLCAxMiwgMTMsIDI1MSwgNTAsIDEyLCAxMywgMjUxLCA0OSwgMTIsIDEzLCAyNTEsIDQ4LCAxMiwgMTMsIDI1MSwgCi0gICAgNDcsIDEyLCAxMywgMjUxLCA0NiwgMTIsIDEzLCAyNTEsIDQ1LCAxMiwgMTMsIDI1MSwgNDQsIDEyLCAxMywgMjUxLCA0MywgCi0gICAgMTIsIDEzLCAyNDksIDY3LCAxMiwgMTMsIDI0OSwgNjYsIDEyLCAxMywgMjQ5LCA2NSwgMTIsIDEzLCAyNDksIDY0LCAxMiwgCi0gICAgMTMsIDI0OSwgNjMsIDEyLCAxMywgMjQ5LCA2MiwgMTIsIDEzLCAyNDksIDYxLCAxMiwgMTMsIDI0OSwgNjAsIDEyLCAxMywgCi0gICAgMjQ5LCA1OSwgMTIsIDEzLCAyNDksIDU4LCAxMiwgMTMsIDI0OSwgNTcsIDEyLCAxMywgMjQ5LCA1NiwgMTIsIDEzLCAyNDksIAotICAgIDU1LCAxMiwgMTMsIDI0OSwgNTQsIDEyLCAxMywgMjQ5LCA1MywgMTIsIDEzLCAyNDksIDUyLCAxMiwgMTMsIDI0OSwgNTEsIAotICAgIDEyLCAxMywgMjQ5LCA1MCwgMTIsIDEzLCAyNDksIDQ5LCAxMiwgMTMsIDI0OSwgNDgsIDEyLCAxMywgMjQ5LCA0NywgMTIsIAotICAgIDEzLCAyNDksIDQ2LCAxMiwgMTMsIDI0OSwgNDUsIDEyLCAxMywgMjQ5LCA0NCwgMTIsIDEzLCAyNDksIDQzLCAxMiwgMTMsIAotICAgIDI0OSwgNDIsIDEyLCAxMywgMjQ5LCA0MSwgMTIsIDEzLCAyNDksIDQwLCAxMiwgMTMsIDI0OSwgMzksIDEyLCAxMywgMjQ5LCAKLSAgICAzOCwgMTIsIDEzLCAyNDksIDM3LCAxMiwgMTMsIDI0OSwgMzYsIDEyLCAxMywgMjQ5LCAzNSwgMTIsIDEzLCAyNDksIDM0LCAKLSAgICAxMiwgMTMsIDI0OSwgMzMsIDEyLCAxMywgMjQ5LCAzMiwgMTIsIDEzLCAyNDksIDMxLCAxMiwgMTMsIDI0OSwgMzAsIDEyLCAKLSAgICAxMywgMjQ5LCAyOSwgMTIsIDEzLCAyNDksIDI4LCAxMiwgMTMsIDI0OSwgMjcsIDEyLCAxMywgMjQ5LCAyNiwgMTIsIDEzLCAKLSAgICAyNDksIDI1LCAxMiwgMTMsIDI0OSwgMjQsIDEyLCAxMywgMjQ5LCAyMywgMTIsIDEzLCAyNDksIDIyLCAxMiwgMTMsIDI0OSwgCi0gICAgMjEsIDEyLCAxMywgMjQ5LCAyMCwgMTIsIDEzLCAyNDksIDE5LCAxMiwgMTMsIDI0OSwgMTgsIDEyLCAxMywgMjQ5LCAxNywgCi0gICAgMTIsIDEzLCAyNDksIDE2LCAxMiwgMTMsIDI0OSwgMTUsIDEyLCAxMywgMjQ5LCAxNCwgMTIsIDEzLCAyNDksIDEzLCAxMiwgCi0gICAgMTMsIDI0OSwgMTIsIDEyLCAxMywgMjQ5LCAxMSwgMTIsIDEzLCAyNDksIDEwLCAxMiwgMTMsIDI0OSwgOSwgMTIsIDEzLCAKLSAgICAyNDksIDgsIDEyLCAxMywgMjQ5LCA3LCAxMiwgMTMsIDI0OSwgNiwgMTIsIDEzLCAyNDksIDUsIDEyLCAxMywgMjQ5LCA0LCAKLSAgICAxMiwgMTMsIDI0OSwgMywgMTIsIDEzLCAyNDksIDIsIDEyLCAxMywgMjQ5LCAxLCAxMiwgMTMsIDI0OSwgMCwgMTIsIDEzLCAKLSAgICAyNDgsIDI1NSwgMTIsIDEzLCAyNDgsIDI1NCwgMTIsIDEzLCAyNDgsIDI1MywgMTIsIDEzLCAyNDgsIDI1MiwgMTIsIDEzLCAKLSAgICAyNDgsIDI1MSwgMTIsIDEzLCAyNDgsIDI1MCwgMTIsIDEzLCAyNDgsIDI0OSwgMTIsIDEzLCAyNDgsIDI0OCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0NywgMTIsIDEzLCAyNDgsIDI0NiwgMTIsIDEzLCAyNDgsIDI0NSwgMTIsIDEzLCAyNDgsIDI0NCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0MywgMTIsIDEzLCAyNDgsIDI0MiwgMTIsIDEzLCAyNDgsIDI0MSwgMTIsIDEzLCAyNDgsIDI0MCwgMTIsIDEzLCAKLSAgICAyNDgsIDIzOSwgMTIsIDEzLCAyNDgsIDIzOCwgMTIsIDEzLCAyNDgsIDIzNywgMTIsIDEzLCAyNDgsIDIzNiwgMTIsIDEzLCAKLSAgICAyNDgsIDIzNSwgMTIsIDEzLCAyNDgsIDIzNCwgMTIsIDEzLCAyNDgsIDIzMywgMTIsIDEzLCAyNDgsIDIzMiwgMTIsIDEzLCAKLSAgICAyNDYsIDMxLCAxMiwgMTMsIDI0NiwgMzAsIDEyLCAxMywgMjQ2LCAyOSwgMTIsIDEzLCAyNDYsIDI4LCAxMiwgMTMsIDI0NiwgCi0gICAgMjcsIDEyLCAxMywgMjQ2LCAyNiwgMTIsIDEzLCAyNDYsIDI1LCAxMiwgMTMsIDI0NiwgMjQsIDEyLCAxMywgMjQ2LCAyMywgCi0gICAgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgCi0gICAgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgCi0gICAgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIAotICAgIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIAotICAgIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAKLSAgICAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgCi0gICAgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIDEzLCAxMiwgMTMsIDI0NSwgMTIsIDEyLCAxMywgMjQ1LCAxMSwgMTIsIAotICAgIDEzLCAyNDUsIDEwLCAxMiwgMTMsIDI0NSwgOSwgMTIsIDEzLCAyNDUsIDgsIDEyLCAxMywgMjQ1LCA3LCAxMiwgMTMsIDI0NSwgCi0gICAgNiwgMTIsIDEzLCAyNDUsIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAKLSAgICAxMywgMjQ1LCAxLCAxMiwgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAKLSAgICAyNDQsIDI1MywgMTIsIDEzLCAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAKLSAgICAyNDQsIDI0OSwgMTIsIDEzLCAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0NSwgMTIsIDEzLCAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0MSwgMTIsIDEzLCAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzNywgMTIsIDEzLCAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzMywgMTIsIDEzLCAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIyOSwgMTIsIDEzLCAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyNSwgMTIsIDEzLCAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyMSwgMTIsIDEzLCAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxNywgMTIsIDEzLCAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxMywgMTIsIDEzLCAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIwOSwgMTIsIDEzLCAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIwNSwgMTIsIDEzLCAyNDMsIDIwOCwgMTIsIDEzLCAyNDMsIDIwNywgMTIsIDEzLCAyNDMsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwNSwgMTIsIDEzLCAyNDMsIDIwNCwgMTIsIDEzLCAyNDMsIDIwMywgMTIsIDEzLCAyNDMsIDIwMiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDIsIDY1LCAxMiwgMTMsIDI0MiwgNjQsIDEyLCAxMywgMjQyLCA2MywgMTIsIDEzLCAyNDIsIAotICAgIDYyLCAxMiwgMTMsIDI0MiwgNjEsIDEyLCAxMywgMjQyLCA2MCwgMTIsIDEzLCAyNDIsIDU5LCAxMiwgMTMsIDI0MiwgNTgsIAotICAgIDEyLCAxMywgMjQyLCA1NywgMTIsIDEzLCAyNDAsIDE0NSwgMTIsIDEzLCAyNDAsIDE0NCwgMTIsIDEzLCAyNDAsIDE0MywgCi0gICAgMTIsIDEzLCAyNDAsIDE0MiwgMTIsIDEzLCAyNDAsIDE0MSwgMTIsIDEzLCAyNDAsIDE0MCwgMTIsIDEzLCAyNDAsIDEzOSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCi0gICAgMTIsIDEzLCAyMzUsIDI4LCAxMiwgMTMsIDIzNSwgMjcsIDEyLCAxMywgMjM1LCAyNiwgMTIsIDEzLCAyMzUsIDI1LCAxMiwgCi0gICAgMTMsIDIzNSwgMjQsIDEyLCAxMywgMjM1LCAyMywgMTIsIDEzLCAyMzUsIDIyLCAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgCi0gICAgMjMzLCAxNTIsIDEyLCAxMywgMjMzLCAxNTEsIDEyLCAxMywgMjMzLCAxNTAsIDEyLCAxMywgMjMzLCAxNDksIDEyLCAxMywgCi0gICAgMjMzLCAxNDgsIDEyLCAxMywgMjMzLCAxNDcsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgMjMzLCAxNDUsIDEyLCAxMywgCi0gICAgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMyLCA1NCwgMTIsIDEzLCAyMzIsIDUzLCAxMiwgMTMsIAotICAgIDIzMiwgNTIsIDEyLCAxMywgMjMyLCA1MSwgMTIsIDEzLCAyMzIsIDUwLCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCAKLSAgICA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAKLSAgICAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAKLSAgICAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAKLSAgICAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgCi0gICAgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgCi0gICAgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgCi0gICAgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgCi0gICAgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIAotICAgIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIAotICAgIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIAotICAgIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIAotICAgIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgCi0gICAgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgCi0gICAgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgCi0gICAgMTMsIDIzMCwgMjcsIDEyLCAxMywgMjMwLCAyNiwgMTIsIDEzLCAyMzAsIDI1LCAxMiwgMTMsIDIzMCwgMjQsIDEyLCAxMywgCi0gICAgMjMwLCAyMywgMTIsIDEzLCAyMzAsIDIyLCAxMiwgMTMsIDIzMCwgMjEsIDEyLCAxMywgMjMwLCAyMCwgMTIsIDEzLCAyMzAsIAotICAgIDE5LCAxMiwgMTMsIDIzMCwgMTgsIDEyLCAxMywgMjMwLCAxNywgMTIsIDEzLCAyMzAsIDE2LCAxMiwgMTMsIDIzMCwgMTUsIAotICAgIDEyLCAxMywgMjMwLCAxNCwgMTIsIDEzLCAyMzAsIDEzLCAxMiwgMTMsIDIzMCwgMTIsIDEyLCAxMywgMjMwLCAxMSwgMTIsIAotICAgIDEzLCAyMzAsIDEwLCAxMiwgMTMsIDIzMCwgOSwgMTIsIDEzLCAyMzAsIDgsIDEyLCAxMywgMjMwLCA3LCAxMiwgMTMsIDIzMCwgCi0gICAgNiwgMTIsIDEzLCAyMzAsIDUsIDEyLCAxMywgMjMwLCA0LCAxMiwgMTMsIDIzMCwgMywgMTIsIDEzLCAyMzAsIDIsIDEyLCAKLSAgICAxMywgMjMwLCAxLCAxMiwgMTMsIDIzMCwgMCwgMTIsIDEzLCAyMjksIDI1NSwgMTIsIDEzLCAyMjksIDI1NCwgMTIsIDEzLCAKLSAgICAyMjksIDI1MywgMTIsIDEzLCAyMjksIDI1MiwgMTIsIDEzLCAyMjksIDI1MSwgMTIsIDEzLCAyMjksIDI1MCwgMTIsIDEzLCAKLSAgICAyMjksIDI0OSwgMTIsIDEzLCAyMjksIDI0OCwgMTIsIDEzLCAyMjksIDI0NywgMTIsIDEzLCAyMjksIDI0NiwgMTIsIDEzLCAKLSAgICAyMjksIDI0NSwgMTIsIDEzLCAyMjksIDI0NCwgMTIsIDEzLCAyMjksIDI0MywgMTIsIDEzLCAyMjksIDI0MiwgMTIsIDEzLCAKLSAgICAyMjksIDI0MSwgMTIsIDEzLCAyMjksIDI0MCwgMTIsIDEzLCAyMjksIDIzOSwgMTIsIDEzLCAyMjksIDIzOCwgMTIsIDEzLCAKLSAgICAyMjksIDIzNywgMTIsIDEzLCAyMjksIDIzNiwgMTIsIDEzLCAyMjksIDIzNSwgMTIsIDEzLCAyMjgsIDEzOSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzOCwgMTIsIDEzLCAyMjgsIDEzNywgMTIsIDEzLCAyMjgsIDEzNiwgMTIsIDEzLCAyMjgsIDEzNSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzNCwgMTIsIDEzLCAyMjgsIDEzMywgMTIsIDEzLCAyMjgsIDEzMiwgMTIsIDEzLCAyMjgsIDEzMSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzMCwgMTIsIDEzLCAyMjgsIDEyOSwgMTIsIDEzLCAyMjgsIDEyOCwgMTIsIDEzLCAyMjgsIDEyNywgMTIsIDEzLCAKLSAgICAyMjgsIDEyNiwgMTIsIDEzLCAyMjgsIDEyNSwgMTIsIDEzLCAyMjgsIDEyNCwgMTIsIDEzLCAyMjgsIDEyMywgMTIsIDEzLCAKLSAgICAyMjgsIDEyMiwgMTIsIDEzLCAyMjgsIDEyMSwgMTIsIDEzLCAyMjgsIDEyMCwgMTIsIDEzLCAyMjgsIDExOSwgMTIsIDEzLCAKLSAgICAyMjgsIDExOCwgMTIsIDEzLCAyMjcsIDI0MSwgMTIsIDEzLCAyMjcsIDI0MCwgMTIsIDEzLCAyMjcsIDIzOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzOCwgMTIsIDEzLCAyMjcsIDIzNywgMTIsIDEzLCAyMjcsIDIzNiwgMTIsIDEzLCAyMjcsIDIzNSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzNCwgMTIsIDEzLCAyMjcsIDIzMywgMTIsIDEzLCAyMjcsIDIzMiwgMTIsIDEzLCAyMjcsIDIzMSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzMCwgMTIsIDEzLCAyMjcsIDIyOSwgMTIsIDEzLCAyMjcsIDIyOCwgMTIsIDEzLCAyMjcsIDIyNywgMTIsIDEzLCAKLSAgICAyMjcsIDIyNiwgMTIsIDEzLCAyMjcsIDIyNSwgMTIsIDEzLCAyMjcsIDIyNCwgMTIsIDEzLCAyMjcsIDIyMywgMTIsIDEzLCAKLSAgICAyMjcsIDIyMiwgMTIsIDEzLCAyMjcsIDIyMSwgMTIsIDEzLCAyMjcsIDIyMCwgMTIsIDEzLCAyMjcsIDIxOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIxOCwgMTIsIDEzLCAyMjcsIDIxNywgMTIsIDEzLCAyMjcsIDIxNiwgMTIsIDEzLCAyMjcsIDgwLCAxMiwgMTMsIAotICAgIDIyNywgNzksIDEyLCAxMywgMjI3LCA3OCwgMTIsIDEzLCAyMjcsIDc3LCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCAKLSAgICA3NSwgMTIsIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAKLSAgICAxMiwgMTMsIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAKLSAgICAxMywgMjI3LCA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAKLSAgICAyMjcsIDYyLCAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgCi0gICAgNTgsIDEyLCAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgCi0gICAgMTIsIDEzLCAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgCi0gICAgMTMsIDIyNywgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgCi0gICAgMjI3LCA0NSwgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIAotICAgIDQxLCAxMiwgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIAotICAgIDEyLCAxMywgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIAotICAgIDEzLCAyMjcsIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIAotICAgIDIyNywgMjgsIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAKLSAgICAyNCwgMTIsIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAKLSAgICAxMiwgMTMsIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAKLSAgICAxMywgMjI3LCAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAKLSAgICAyMjcsIDExLCAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIAotICAgIDEyLCAxMywgMjI3LCA2LCAxMiwgMTMsIDIyNiwgMTA4LCAxMiwgMTMsIDIyNiwgMTA3LCAxMiwgMTMsIDIyNiwgMTA2LCAxMiwgCi0gICAgMTMsIDIyNiwgMTA1LCAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgCi0gICAgMTMsIDIyNiwgMTAxLCAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAKLSAgICAyMjYsIDk3LCAxMiwgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI0LCA5OCwgMTIsIDEzLCAyMjQsIDk3LCAxMiwgMTMsIDIyNCwgCi0gICAgOTYsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCA5MiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyNSwgMTIsIDEzLCAyMjMsIDIyNCwgMTIsIDEzLCAyMjMsIDIyMywgMTIsIDEzLCAyMjMsIDIyMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCi0gICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjIsIDkwLCAxMiwgMTMsIDIyMiwgODksIDEyLCAKLSAgICAxMywgMjIyLCA4OCwgMTIsIDEzLCAyMjIsIDg3LCAxMiwgMTMsIDIyMiwgODYsIDEyLCAxMywgMjIyLCA4NSwgMTIsIDEzLCAKLSAgICAyMjIsIDg0LCAxMiwgMTMsIDIyMiwgODMsIDEyLCAxMywgMjIyLCA4MiwgMTIsIDEzLCAyMjIsIDgxLCAxMiwgMTMsIDIyMiwgCi0gICAgODAsIDEyLCAxMywgMjIyLCA3OSwgMTIsIDEzLCAyMjIsIDc4LCAxMiwgMTMsIDIyMiwgNzcsIDEyLCAxMywgMjIyLCA3NiwgCi0gICAgMTIsIDEzLCAyMjIsIDc1LCAxMiwgMTMsIDIyMiwgNzQsIDEyLCAxMywgMjIyLCA3MywgMTIsIDEzLCAyMjIsIDcyLCAxMiwgCi0gICAgMTMsIDIyMiwgNzEsIDEyLCAxMywgMjIyLCA3MCwgMTIsIDEzLCAyMjIsIDY5LCAxMiwgMTMsIDIyMiwgNjgsIDEyLCAxMywgCi0gICAgMjIyLCA2NywgMTIsIDEzLCAyMjIsIDY2LCAxMiwgMTMsIDIyMiwgNjUsIDEyLCAxMywgMjIyLCA2NCwgMTIsIDEzLCAyMjIsIAotICAgIDYzLCAxMiwgMTMsIDIyMiwgNjIsIDEyLCAxMywgMjIyLCA2MSwgMTIsIDEzLCAyMjIsIDYwLCAxMiwgMTMsIDIyMiwgNTksIAotICAgIDEyLCAxMywgMjIyLCA1OCwgMTIsIDEzLCAyMjIsIDU3LCAxMiwgMTMsIDIyMiwgNTYsIDEyLCAxMywgMjIyLCA1NSwgMTIsIAotICAgIDEzLCAyMjIsIDU0LCAxMiwgMTMsIDIyMiwgNTMsIDEyLCAxMywgMjIyLCA1MiwgMTIsIDEzLCAyMjIsIDUxLCAxMiwgMTMsIAotICAgIDIyMiwgNTAsIDEyLCAxMywgMjIyLCA0OSwgMTIsIDEzLCAyMjIsIDQ4LCAxMiwgMTMsIDIyMiwgNDcsIDEyLCAxMywgMjIyLCAKLSAgICA0NiwgMTIsIDEzLCAyMjIsIDQ1LCAxMiwgMTMsIDIyMiwgNDQsIDEyLCAxMywgMjIyLCA0MywgMTIsIDEzLCAyMjIsIDQyLCAKLSAgICAxMiwgMTMsIDIyMiwgNDEsIDEyLCAxMywgMjIyLCA0MCwgMTIsIDEzLCAyMjIsIDM5LCAxMiwgMTMsIDIyMiwgMzgsIDEyLCAKLSAgICAxMywgMjIyLCAzNywgMTIsIDEzLCAyMTcsIDE1MSwgMTIsIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIAotICAgIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIAotICAgIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIAotICAgIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIAotICAgIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIAotICAgIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIAotICAgIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIAotICAgIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIAotICAgIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIAotICAgIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIAotICAgIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIAotICAgIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAKLSAgICAyMTUsIDE5LCAxMiwgMTMsIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgCi0gICAgMTUsIDEyLCAxMywgMjE1LCAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgCi0gICAgMTIsIDEzLCAyMTUsIDEwLCAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIAotICAgIDIxNSwgNiwgMTIsIDEzLCAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIAotICAgIDEyLCAxMywgMjE1LCAxLCAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIAotICAgIDEzLCAyMTQsIDI1MywgMTIsIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIAotICAgIDEzLCAyMTQsIDI0OSwgMTIsIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIAotICAgIDEzLCAyMTQsIDI0NSwgMTIsIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIAotICAgIDEzLCAyMTQsIDI0MSwgMTIsIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIAotICAgIDEzLCAyMTQsIDIzNywgMTIsIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIAotICAgIDEzLCAyMTQsIDIzMywgMTIsIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIAotICAgIDEzLCAyMTQsIDEwMiwgMTIsIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgCi0gICAgMTMsIDIxNCwgOTgsIDEyLCAxMywgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgCi0gICAgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIAotICAgIDkwLCAxMiwgMTMsIDIxNCwgODksIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIAotICAgIDEyLCAxMywgMjE0LCA4NSwgMTIsIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIAotICAgIDEzLCAyMTQsIDgxLCAxMiwgMTMsIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIAotICAgIDIxNCwgNzcsIDEyLCAxMywgMjE0LCA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCAKLSAgICA3MywgMTIsIDEzLCAyMTQsIDcyLCAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAKLSAgICAxMiwgMTMsIDIxNCwgNjgsIDEyLCAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAKLSAgICAxMywgMjE0LCA2NCwgMTIsIDEzLCAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAKLSAgICAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgCi0gICAgNTYsIDEyLCAxMywgMjE0LCA1NSwgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgCi0gICAgMTIsIDEzLCAyMTQsIDUxLCAxMiwgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgCi0gICAgMTMsIDIxNCwgNDcsIDEyLCAxMywgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgCi0gICAgMjE0LCA0MywgMTIsIDEzLCAyMTQsIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIAotICAgIDM5LCAxMiwgMTMsIDIxNCwgMzgsIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIAotICAgIDEyLCAxMywgMjE0LCAzNCwgMTIsIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIAotICAgIDEzLCAyMTQsIDMwLCAxMiwgMTMsIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIAotICAgIDIxMiwgOTYsIDEyLCAxMywgMjEyLCA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCAKLSAgICA5MiwgMTIsIDEzLCAyMTIsIDkxLCAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAKLSAgICAxMiwgMTMsIDIxMiwgODcsIDEyLCAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAKLSAgICAxMywgMjEyLCA4MywgMTIsIDEzLCAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAKLSAgICAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgCi0gICAgNzUsIDEyLCAxMywgMjEyLCA3NCwgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgCi0gICAgMTIsIDEzLCAyMTIsIDcwLCAxMiwgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgCi0gICAgMTMsIDIxMiwgNjYsIDEyLCAxMywgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAKLSAgICAxMywgMjExLCAxNzQsIDEyLCAxMywgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAKLSAgICAxMywgMjExLCAxNzAsIDEyLCAxMywgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAKLSAgICAxMywgMjExLCAxNjYsIDEyLCAxMywgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAKLSAgICAxMywgMjExLCAxMTIsIDEyLCAxMywgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAKLSAgICAxMywgMjExLCAxMDgsIDEyLCAxMywgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAKLSAgICAxMywgMjEwLCAxNTYsIDEyLCAxMywgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAKLSAgICAxMywgMjEwLCAxNTIsIDEyLCAxMywgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAKLSAgICAxMywgMjEwLCAxNDgsIDEyLCAxMywgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAKLSAgICAxMywgMjEwLCAxNDQsIDEyLCAxMywgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAKLSAgICAxMywgMjEwLCAxNDAsIDEyLCAxMywgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAKLSAgICAxMywgMjEwLCAxMzYsIDEyLCAxMywgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAKLSAgICAxMywgMjEwLCAxMzIsIDEyLCAxMywgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAKLSAgICAxMywgMjEwLCAxMjgsIDEyLCAxMywgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAKLSAgICAxMywgMjEwLCAxMjQsIDEyLCAxMywgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAKLSAgICAxMywgMjEwLCAxMjAsIDEyLCAxMywgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA4MSwgMTIsIAotICAgIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAxMiwgMTMsIAotICAgIDI1NSwgNzYsIDEyLCAxMywgMjU1LCA3NSwgMTIsIDEzLCAyNTUsIDc0LCAxMiwgMTMsIDI1NSwgNzMsIDEyLCAxMywgMjU1LCAKLSAgICA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAKLSAgICAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAKLSAgICAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAKLSAgICAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgCi0gICAgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgCi0gICAgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgNDksIDEyLCAxMywgMjU1LCA0OCwgMjAsIDEsIDE2NywgMjI5LCAxNywgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjQzLCA3NywgMjQ0LCA0NCwgMjAsIDEsIDE2NywgMjI0LCAyNTQsIDIzMSwgMjIsIAotICAgIDIyNSwgNjAsIDIwLCAxLCAxNjcsIDIyNCwgMjU0LCAyMzEsIDIyLCAyMjUsIDYxLCAyMCwgMSwgMTY3LCAyMjksIDIzMSwgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjE5LCAyMjMsIDIwLCAxLCAxNjcsIDIxNiwgNjcsIDIzMSwgMjEsIDIwLCAxLCAxNjcsIAotICAgIDIyNywgMTIyLCAyMzEsIDIxLCAyMCwgMSwgMTY3LCAyMjAsIDIxLCAyMjYsIDk0LCAyMjgsIDE3NCwgMjAsIDEsIDE2NywgCi0gICAgMjI0LCAyNTQsIDIyNiwgOTQsIDIyOCwgMTc1LCAyMjUsIDYwLCAyMCwgMSwgMTY3LCAyMjQsIDI1NCwgMjI2LCA5NCwgMjI4LCAKLSAgICAxNzUsIDIyNSwgNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIzLCAyMCwgMSwgMTY3LCAyMTUsIDEyMCwgMjMxLCAyMjQsIDIwLCAKLSAgICAxLCAxNjcsIDIyOSwgNzYsIDIwLCAxLCAxNjcsIDIzMSwgMjIwLCAyMCwgMSwgMTY3LCAyMzEsIDE4MSwgMjAsIDEsIDE2NywgCi0gICAgMjMwLCA1MywgMjAsIDEsIDE2NywgMjIwLCAxMjYsIDIwLCAxLCAxNjcsIDIyNywgMjQ2LCAyMCwgMSwgMTY3LCAyMzQsIAotICAgIDE1NSwgMjAsIDEsIDE2NywgMjI4LCAxNDMsIDIwLCAxLCAxNjcsIDIxOCwgNSwgMjAsIDEsIDE2NywgMjI5LCAxNiwgMjAsIAotICAgIDEsIDE2NywgMjMzLCA5MywgMjAsIDEsIDE2NywgMjMzLCAxOCwgMjMzLCAxOTUsIDIwLCAxLCAxNjcsIDIyNywgMjUzLCAKLSAgICAyMzEsIDI5LCAyMCwgMSwgMTY3LCAyMzEsIDIyNywgMjAsIDEsIDE2NywgMjI1LCAyNTAsIDIwLCAxLCAxNjcsIDI0MiwgCi0gICAgMjM4LCAyMCwgMSwgMTY3LCAyMjYsIDU0LCAyMCwgMSwgMTY3LCAyMzAsIDE1NiwgMjI5LCA1MCwgMjAsIDEsIDE2NywgMjI3LCAKLSAgICAxMDMsIDIzMSwgMzIsIDIwLCAxLCAxNjcsIDEwNCwgMjEwLCAxODgsIDIyOSwgMjI1LCAyMCwgMSwgMTY3LCAyNDIsIDIzOSwgCi0gICAgMjAsIDEsIDE2NywgMjI3LCAyNTMsIDIyNywgMjU0LCAyMCwgMSwgMTY3LCAyMTksIDEzMCwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxNCwgMjAsIDEsIDE2NywgMjMxLCAzNSwgMjAsIDEsIDE2NywgMjMwLCAxMzUsIDIwLCAxLCAxNjcsIDIzNCwgMjU1LCAyMCwgCi0gICAgMSwgMTY3LCAyMjYsIDk0LCAyMzMsIDUzLCAyMCwgMSwgMTY3LCAyMjksIDE1NCwgMjMzLCA1MywgMjAsIDEsIDE2NywgMjI1LCAKLSAgICAxNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIxLCAyMCwgMSwgMTY3LCAyMjgsIDIxMiwgMjAsIDEsIDE2NywgMjI0LCAxMzcsIAotICAgIDIwLCAxLCAxNjcsIDIxNSwgMTE3LCAyMCwgMSwgMTY3LCAyMzIsIDk5LCAyMCwgMSwgMTY3LCAyMTksIDQzLCAyMCwgMSwgCi0gICAgMTY3LCAyMTYsIDIxNywgMjAsIDEsIDE2NywgMjMxLCAyMTgsIDIwLCAxLCAxNjcsIDIzNCwgMTYyLCAyMCwgMSwgMTY3LCAKLSAgICAyMjksIDE1MCwgMjAsIDEsIDE2NywgMjMzLCAyMDcsIDIwLCAxLCAxNjcsIDIzMCwgMTM2LCAyMCwgMSwgMTY3LCAyMTksIAotICAgIDIyMCwgMjAsIDEsIDE2NywgMjMyLCAxNDQsIDIwLCAxLCAxNjcsIDI0NCwgMTAxLCAyMCwgMSwgMTY3LCAyMjIsIDIwMSwgCi0gICAgMjAsIDEsIDE2NywgMjMzLCAyNDcsIDIwLCAxLCAxNjcsIDIxOSwgMzksIDIwLCAxLCAxNjcsIDIzMSwgMTc4LCAyMjUsIAotICAgIDEwMiwgMjAsIDEsIDE2NywgMjIwLCAxNCwgMjAsIDEsIDE2NywgMjI3LCAyNTIsIDIwLCAxLCAxNjcsIDIxOSwgMjU1LCAKLSAgICAyMjgsIDcsIDIxMCwgMTk2LCAyMCwgMSwgMTY3LCAyMjcsIDE0MiwgMjMwLCAxNTMsIDIwLCAxLCAxNjcsIDIyNiwgODksIAotICAgIDIwLCAxLCAxNjcsIDIyOCwgMTQ0LCAyMCwgMSwgMTY3LCAyMTQsIDE3MCwgMjAsIDEsIDE2NywgMjI5LCA1MywgMjAsIDEsIAotICAgIDE2NywgMjMxLCAyMTcsIDIwLCAxLCAxNjcsIDIyOCwgMTg2LCAyMCwgMSwgMTY3LCAyMzEsIDEyNCwgMjAsIDEsIDE2NywgCi0gICAgMjI3LCAxNTUsIDIwLCAxLCAxNjcsIDIxNiwgMjIxLCAyMCwgMSwgMTY3LCAyMTksIDM2LCAyMCwgMSwgMTY3LCAyMjYsIDkwLCAKLSAgICAyMCwgMSwgMTY3LCAyMjgsIDExLCAyMCwgMSwgMTY3LCAyMzEsIDIyNSwgMjAsIDEsIDE2NywgMjI3LCAxNTIsIDIwLCAxLCAKLSAgICAxNjcsIDIzNCwgMjIyLCAyMCwgMSwgMTY3LCAyMjgsIDE0LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgCi0gICAgMjMyLCAxMDMsIDIwLCAxLCAxNjcsIDIyOSwgMTAzLCAyMCwgMSwgMTY3LCAyMjksIDIwMSwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxMjMsIDIwLCAxLCAyMjUsIDE0MSwgMjI4LCA5LCAyMCwgMSwgMjI1LCAxNDEsIDIxNSwgMTIwLCAyMzEsIDIyMiwgMjAsIDEsIAotICAgIDIyNSwgMTQxLCAyMTksIDE4NywgMjAsIDEsIDIyNSwgMTQxLCAyMjAsIDEzMCwgMjE1LCAxMTksIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMyLCAxNDYsIDIyNywgMjQ5LCAyMCwgMSwgMjI1LCAxNDEsIDIzMSwgMTMwLCAyMzEsIDIyNiwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMzQsIDkzLCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTUsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMjUsIDIwLCAxLCAyMjUsIAotICAgIDE0MSwgMjM0LCAyNDMsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCAyMTEsIDIwLCAxLCAyMjUsIDE0MSwgMjExLCA4OSwgMjMzLCAKLSAgICA1MywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEwOSwgMjI4LCA3LCAyMjcsIDE2NCwgMjAsIDEsIDIyNSwgMTQxLCAyMjcsIAotICAgIDI0NywgMjIwLCA0MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDEyMSwgMjI4LCAxODksIDIwLCAxLCAyMjUsIDE0MSwgMjQyLCAKLSAgICAyMzYsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCA1MiwgMjAsIDEsIDIyNSwgMTQxLCAyMTUsIDEyMCwgMjI4LCA1LCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMCwgNDUsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxNDEsIDIyMCwgNDEsIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMxLCAyMiwgMjE2LCAyMjAsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTIsIDIzMSwgMTI2LCAyMCwgMSwgMjI1LCAxNDEsIAotICAgIDIyNywgMTUzLCAyMjcsIDI0OSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1MSwgMjAsIDEsIDIyNSwgMTQxLCAyNDIsIDIzNywgCi0gICAgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE0NywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEzNSwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMjUsIDI1MywgMjAsIDEsIDIyNSwgMTQxLCAyMTMsIDE4MiwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDE4LCAyMzAsIDUxLCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNTIsIDIzMSwgMTA4LCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTkzLCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMiwgMTMsIDIwLCAxLCAyMjUsIDE0MSwgMjE3LCA5OCwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDM0LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgMzcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCAzOCwgMjMzLCA5MCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDI0LCAyMCwgMSwgMjI1LCAxNDEsIDIxOCwgNTMsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTYsIDIwLCAxLCAKLSAgICAyMjUsIDE0MSwgMjMwLCAxMzgsIDIwLCAxLCAyMjUsIDE0MSwgMjI3LCAxNjcsIDIwLCAxLCAyMjUsIDE0MSwgMjI0LCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAzMywgMjI5LCA1NCwgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDEzNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDE1NSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1OSwgMjAsIAotICAgIDEsIDIyNSwgMTQxLCAyMzEsIDI0NCwgMjI4LCAxNzgsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAyNDQsIDIyOCwgMTU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDEsIDIzMywgMTcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCA2MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjgsIDE2LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDE4NiwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDgwLCAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNiwgCi0gICAgMjAsIDEsIDEzNywgMjI5LCAxNywgMjMxLCAyMjQsIDIwLCAxLCAxMzcsIDIyNywgMTIxLCAyMCwgMSwgMTM3LCAyMTAsIAotICAgIDE5NiwgMjAsIDEsIDEzNywgMjEyLCA1MywgMjAsIDEsIDEzNywgMjI5LCA1MywgMjAsIDEsIDEzNywgMjI5LCAxNDIsIDIwLCAKLSAgICAxLCAxMzcsIDIyOSwgMjQsIDIwLCAxLCAxMzcsIDI0MiwgMjQ2LCAyMCwgMSwgMTM3LCAyMzEsIDEyMCwgMjAsIDEsIDEzNywgCi0gICAgMjQzLCA4NCwgMjAsIDEsIDEzNywgMjI3LCAxNDQsIDIzMCwgMTc1LCAyMzEsIDM2LCAyMCwgMSwgMTM3LCAyMjcsIDI0NSwgCi0gICAgMjMxLCAxMTEsIDIwLCAxLCAxMzcsIDIzMSwgMTE3LCAyMCwgMSwgMTM3LCAyMjUsIDU4LCAyMCwgMSwgMTM3LCAyMjksIAotICAgIDEyNywgMjAsIDEsIDEzNywgMjMxLCAxMjgsIDI1MSwgMzcsIDIwLCAxLCAxMzcsIDIzNCwgMTQ5LCAyMCwgMSwgMTM3LCAKLSAgICAyNDIsIDI0NywgMjAsIDEsIDEzNywgMjM0LCAxNTYsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDgxLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDExNSwgMjAsIDEsIDEzNywgMjMxLCAxMDUsIDIwLCAxLCAxMzcsIDIyOCwgMTUsIDIwLCAxLCAxMzcsIAotICAgIDIzMSwgMTExLCAyMCwgMSwgMTM3LCAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI1NSwgMjAsIDEsIDEzNywgMjM1LCAxNiwgCi0gICAgMjAsIDEsIDEzNywgMjIwLCAxMjUsIDIwLCAxLCAxMzcsIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMTcsIDk2LCAyMCwgMSwgCi0gICAgMTM3LCAyMjgsIDE1OCwgMjAsIDEsIDEzNywgMjE2LCA2NywgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgODAsIDIwLCAxLCAKLSAgICAxMzcsIDIyOSwgNDQsIDIyNywgMTY0LCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAyMDQsIDIwLCAKLSAgICAxLCAxMzcsIDIzMSwgMjQ0LCAyMzQsIDE1OCwgMjAsIDEsIDEzNywgMjI3LCAyNTQsIDIwLCAxLCAxMzcsIDIyOSwgMzksIAotICAgIDIwLCAxLCAxMzcsIDIzMywgOTQsIDIwLCAxLCAxMzcsIDIzMSwgMTEzLCAyMCwgMSwgMTM3LCAyMzEsIDEzLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDI0OCwgMjAsIDEsIDEzNywgMjE2LCAyMTYsIDIwLCAxLCAxMzcsIDIyOSwgNDEsIDIwLCAxLCAxMzcsIAotICAgIDI0MywgMjQwLCAyMCwgMSwgMTM3LCAyMjksIDE0MSwgMjAsIDEsIDEzNywgMjI4LCAxNywgMjAsIDEsIDEzNywgMjI4LCAxMywgCi0gICAgMjAsIDEsIDEzNywgMjUxLCAxMTUsIDIwLCAxLCAxMzcsIDIxMywgMTgzLCAyMCwgMSwgMTM3LCAyMzEsIDExOCwgMjAsIDEsIAotICAgIDEzNywgMjIyLCAxNDIsIDIwLCAxLCAxMzcsIDIyOCwgMTg4LCAyMCwgMSwgMTM3LCAyMzMsIDEwOCwgMjAsIDEsIDEzNywgCi0gICAgMjE2LCA2NSwgMjAsIDEsIDEzNywgMjI3LCAyNTUsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjI4LCAxODAsIDIwLCAxLCAxMzcsIAotICAgIDIzNCwgMTYyLCAyMCwgMSwgMTM3LCAyMjksIDQ1LCAyMCwgMSwgMTM3LCAyMzEsIDIxNywgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMDYsIDIwLCAxLCAxMzcsIDIzMiwgMTAzLCAyMCwgMSwgMTM3LCAyMzMsIDE5NSwgMjAsIDEsIDEzNywgMjI4LCAxODYsIAotICAgIDIwLCAxLCAxMzcsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgNDIsIDIwLCAxLCAKLSAgICAxMzcsIDIyOCwgMiwgMjAsIDEsIDEzNywgMjI3LCAyNTAsIDIwLCAxLCAxMzcsIDIzMywgMjA5LCAyMjgsIDE0NCwgMjAsIDEsIAotICAgIDEzNywgMjI4LCAwLCAyMCwgMSwgMTM3LCAyMjksIDE0OSwgMjAsIDEsIDEzNywgMjMxLCAyNDQsIDIyOCwgNSwgMjAsIDEsIAotICAgIDEzNywgMjExLCAxMDMsIDIwLCAxLCAxMzcsIDIyOSwgMTQ4LCAyMCwgMSwgMTM3LCAyMTksIDIyMiwgMjAsIDEsIDEzNywgCi0gICAgMjIwLCAxMjgsIDIwLCAxLCAxMzcsIDIzMSwgMTE0LCAyMCwgMSwgMTM3LCAyMzEsIDIyNCwgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMjQsIDIwLCAxLCAxMzcsIDIzNCwgMTUwLCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjM0LCAxNTQsIAotICAgIDIwLCAxLCAxMzcsIDIzMSwgMTI4LCAyMjUsIDEwNiwgMjAsIDEsIDEzNywgMjEwLCAxNzksIDIwLCAxLCAxMzcsIDIyOCwgCi0gICAgMTc2LCAyMCwgMSwgMTM3LCAyMzAsIDIyNSwgMjAsIDEsIDEzNywgMjMwLCAxMDUsIDIwLCAxLCAxMzcsIDIyMCwgMTcsIDIwLCAKLSAgICAxLCAxMzcsIDIzNCwgMTcyLCAyMzMsIDc2LCAyMCwgMSwgMTM3LCAyMzQsIDE3MiwgMjQ0LCAxNjgsIDIwLCAxLCAxMzcsIAotICAgIDIyOSwgNzQsIDIwLCAxLCAxMzcsIDIyOSwgMjAxLCAyMCwgMSwgMTM3LCAyMzIsIDIwNiwgMjAsIDEsIDEzNywgMjI1LCA2OCwgCi0gICAgMjAsIDEsIDEzNywgMjI1LCAyMDIsIDIwLCAxLCAxMzcsIDIxNiwgMjMxLCAyMCwgMSwgMTA3LCAyMzEsIDEwNCwgMjAsIDEsIAotICAgIDEwNywgMjEyLCA1MSwgMjAsIDEsIDEwNywgMjI4LCAxNzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOCwgCi0gICAgMTcyLCAyMCwgMSwgMTA3LCAyMzIsIDI0MSwgMjAsIDEsIDEwNywgMjI4LCAxNzcsIDIwLCAxLCAxMDcsIDIyOCwgMTIsIDIwLCAKLSAgICAxLCAxMDcsIDIyOSwgNTksIDIwLCAxLCAxMDcsIDIyNywgMTY0LCAyMCwgMSwgMTA3LCAyMTEsIDE5NCwgMjAsIDEsIDEwNywgCi0gICAgMjI5LCAxNCwgMjAsIDEsIDEwNywgMjIwLCA2MywgMjAsIDEsIDEwNywgMjI5LCAyNSwgMjAsIDEsIDEwNywgMjM0LCAxNTcsIAotICAgIDIwLCAxLCAxMDcsIDIxNiwgMjE4LCAyMCwgMSwgMTA3LCAyMjAsIDQzLCAyMCwgMSwgMTA3LCAyMjgsIDE4NSwgMjAsIDEsIAotICAgIDEwNywgMjE4LCA1MywgMjAsIDEsIDEwNywgMjM0LCAxNjIsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgCi0gICAgMjEwLCAyMCwgMSwgMTA3LCAyMjEsIDIzNiwgMjAsIDEsIDEwNywgMjMxLCAyNiwgMjAsIDEsIDEwNywgMjI5LCAxNDAsIDIwLCAKLSAgICAxLCAxMDcsIDIzMSwgMTkzLCAyMCwgMSwgMTA3LCAyMzEsIDMyLCAyMCwgMSwgMTA3LCAyMjAsIDEyNywgMjAsIDEsIDEwNywgCi0gICAgMjExLCAzOSwgMjAsIDEsIDEwNywgMjI4LCAxNzksIDIwLCAxLCAxMDcsIDIzNCwgMTUzLCAyMzEsIDEwNywgMjAsIDEsIAotICAgIDEwNywgMjI5LCAyMSwgMjAsIDEsIDEwNywgMjE1LCAxMTksIDIwLCAxLCAxMDcsIDI0MiwgMjU1LCAyMCwgMSwgMTA3LCAKLSAgICAyMjksIDExLCAyMCwgMSwgMTA3LCAyNDQsIDEzNSwgMjAsIDEsIDEwNywgMjI5LCAxNDQsIDIwLCAxLCAxMDcsIDIzMSwgNSwgCi0gICAgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCAxMjYsIDIwLCAxLCAxMDcsIDIzMCwgMTUyLCAyMCwgMSwgCi0gICAgMTA3LCAyMzEsIDksIDIwLCAxLCAxMDcsIDIyNCwgMTIxLCAyMCwgMSwgMTA3LCAyMzEsIDcsIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjMsIDIwLCAxLCAxMDcsIDIzMiwgODksIDIwLCAxLCAxMDcsIDIyOCwgNCwgMjAsIDEsIDEwNywgMjMxLCAxMjcsIDIwLCAxLCAKLSAgICAxMDcsIDIzMywgMTg2LCAyMCwgMSwgMTA3LCAyMjcsIDE1NSwgMjAsIDEsIDEwNywgMjE2LCAyMjEsIDIwLCAxLCAxMDcsIAotICAgIDIxOSwgMzYsIDIwLCAxLCAxMDcsIDIxMCwgMTc5LCAyMCwgMSwgMTA3LCAyMzQsIDE1NCwgMjAsIDEsIDEwNywgMjIzLCAKLSAgICAxNzMsIDIwLCAxLCAxMDcsIDIxNywgMTEsIDIwLCAxLCAxMDcsIDIyOSwgMjIsIDIwLCAxLCAxMDcsIDIzMSwgMjgsIDIwLCAKLSAgICAxLCAxMDcsIDIyOCwgMywgMjAsIDEsIDEwNywgMjM0LCAxNTIsIDIwLCAxLCAxMDcsIDIyNSwgNjIsIDIwLCAxLCAxMDcsIAotICAgIDIyNSwgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDEzMSwgMjAsIDEsIDEwNywgMjMzLCAxNywgMjAsIDEsIDEwNywgMjI5LCA2MCwgCi0gICAgMjAsIDEsIDEwNywgMjMxLCAyNSwgMjAsIDEsIDEwNywgMjI5LCAzNCwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAKLSAgICAxMDcsIDIyNiwgMjUsIDIwLCAxLCAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0OSwgMjAsIDEsIDEwNywgCi0gICAgMjI3LCAyNDksIDIwLCAxLCAxMDcsIDIxOCwgODIsIDIwLCAxLCAxMDcsIDIzMywgMjE0LCAyMCwgMSwgMTA3LCAyMjksIDQ5LCAKLSAgICAyMCwgMSwgMTA3LCAyMjksIDE5LCAyMCwgMSwgMTA3LCAyMTUsIDEwMywgMjAsIDEsIDEwNywgMjMxLCAzNiwgMjAsIDEsIAotICAgIDEwNywgMjMzLCAyMDQsIDIwLCAxLCAxMDcsIDIyOCwgMSwgMjAsIDEsIDEwNywgMjE2LCAyMTksIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjE5LCAyMCwgMSwgMTA3LCAyMjksIDU4LCAyMCwgMSwgMTA3LCAyMzMsIDEwLCAyMCwgMSwgMTA3LCAyMjksIDQwLCAyMCwgCi0gICAgMSwgMTA3LCAyMjgsIDYsIDIwLCAxLCAxMDcsIDIyOCwgMTU4LCAyMCwgMSwgMTA3LCAyNDIsIDI0MCwgMjAsIDEsIDEwNywgCi0gICAgMjMzLCAyMjMsIDIwLCAxLCAxMDcsIDIyMywgODcsIDIyNiwgMjEzLCAyMCwgMSwgMTA3LCAyMTcsIDg3LCAyMCwgMSwgMTA3LCAKLSAgICAyMTYsIDExLCAyMCwgMSwgMTA3LCAyMjcsIDE1MiwgMjAsIDEsIDEwNywgMjIyLCAyNDIsIDIwLCAxLCAxMDcsIDIzMywgNTUsIAotICAgIDIwLCAxLCAxMDcsIDIzMSwgODQsIDIwLCAxLCAxMDcsIDE5NCwgMjAsIDEsIDEwNywgMjE4LCA1LCAyMCwgMSwgMTA3LCAKLSAgICAyMzAsIDEwNywgMjAsIDEsIDEwNywgMjIwLCAyOSwgMjAsIDEsIDEwNywgMjIwLCAzOSwgMjAsIDEsIDEwNywgMjMzLCAxNjEsIAotICAgIDIwLCAxLCAxMDcsIDIyNywgMjQyLCAyMCwgMSwgMTA3LCAyMTksIDIyNywgMjAsIDEsIDEwNywgMjI3LCAyNTEsIDIwLCAxLCAKLSAgICAxMDcsIDIyNSwgMjE0LCAyMCwgMSwgMTA3LCAyMjgsIDIzOCwgMjAsIDEsIDEwNywgMjE5LCAyNTQsIDIwLCAxLCAxMDcsIAotICAgIDIyNCwgMTM2LCAyMCwgMSwgMTA3LCAyMzAsIDUxLCAyMCwgMSwgMTA3LCAyMzIsIDEyNSwgMjAsIDEsIDEwNywgMjIzLCA4NywgCi0gICAgMjMwLCAxMDEsIDIwLCAxLCAxMDcsIDIxNiwgMTE4LCAyMCwgMSwgMTA3LCAyMjcsIDI0MywgMjAsIDEsIDEwNywgMjMxLCAKLSAgICAxMjgsIDE5OSwgMjAsIDEsIDEwNywgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDI0NCwgMjAzLCAyMCwgMSwgODIsIDIyOSwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIxNiwgMTcsIDIwLCAxLCA4MiwgMjMxLCAxMTcsIDIwLCAxLCA4MiwgMjMzLCA5NCwgMjAsIDEsIAotICAgIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAyMzIsIDEzMSwgMjAsIDEsIDgyLCAyMjYsIDkzLCAyMCwgMSwgODIsIDIxOSwgCi0gICAgNDcsIDIwLCAxLCA4MiwgMjIzLCAxNDgsIDIwLCAxLCA4MiwgMjI4LCA4LCAyMCwgMSwgODIsIDIyOSwgMTE5LCAyMCwgMSwgCi0gICAgODIsIDIyNCwgMTUwLCAyMCwgMSwgODIsIDIxNywgNjMsIDIwLCAxLCA4MiwgMjI5LCAyNywgMjAsIDEsIDgyLCAyMzMsIAotICAgIDI1MSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgMjAsIDEsIDgyLCAyMjEsIDE3MiwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgCi0gICAgODIsIDIyNiwgOTAsIDIwLCAxLCA4MiwgMjE2LCAxOCwgMjAsIDEsIDgyLCAyMzMsIDIwOCwgMjAsIDEsIDgyLCAyMzIsIAotICAgIDE0NSwgMjAsIDEsIDgyLCAyMjgsIDExLCAyMCwgMSwgODIsIDIyOSwgMywgMjAsIDEsIDgyLCAyMzEsIDIyNSwgMjAsIDEsIAotICAgIDgyLCAyMjksIDIwLCAyMCwgMSwgODIsIDIyOSwgMiwgMjAsIDEsIDgyLCAyMjgsIDEwLCAyMCwgMSwgODIsIDIyMiwgMjQwLCAKLSAgICAyMCwgMSwgODIsIDIyOCwgMTc2LCAyMCwgMSwgODIsIDIyNSwgMjEzLCAyMCwgMSwgODIsIDIyMiwgMzMsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCAzNSwgMjAsIDEsIDgyLCAyMzEsIDE1LCAyMCwgMSwgODIsIDI0MiwgMjM0LCAyMCwgMSwgODIsIDIyOSwgMjMsIDIwLCAKLSAgICAxLCA4MiwgMjI4LCAxODcsIDIwLCAxLCA4MiwgMjMxLCAxNzcsIDIwLCAxLCA4MiwgMjMyLCAxMjcsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCA1NSwgMjAsIDEsIDgyLCAyMjksIDEzMiwgMjAsIDEsIDgyLCAyMTcsIDg2LCAyMjcsIDI0OSwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDEyOSwgMjAsIDEsIDgyLCAyMjQsIDE0NiwgMjAsIDEsIDgyLCAyMjksIDE1MiwgMjE5LCA1MywgMjAsIDEsIDgyLCAKLSAgICAyMjksIDQzLCAyMjcsIDE2NCwgMjAsIDEsIDgyLCAyMTEsIDQsIDIwLCAxLCA4MiwgMjQyLCAyMzUsIDIwLCAxLCA4MiwgCi0gICAgMjE1LCAxMTgsIDIwLCAxLCA4MiwgMjExLCAxOSwgMjAsIDEsIDgyLCAyMjUsIDE5LCAyMCwgMSwgODIsIDIxNSwgMTA4LCAKLSAgICAyMCwgMSwgODIsIDIzNCwgMTYwLCAyMCwgMSwgODIsIDIxOCwgODEsIDIwLCAxLCA4MiwgMjE2LCAyMjAsIDIwLCAxLCA4MiwgCi0gICAgMjEzLCAxODQsIDIwLCAxLCA4MiwgMjEyLCA2LCAyMCwgMSwgODIsIDIzMywgMTM4LCAyMCwgMSwgODIsIDIyNCwgMTUzLCAKLSAgICAyMCwgMSwgODIsIDIxNywgOTcsIDIwLCAxLCA4MiwgMjQyLCAyNTQsIDIwLCAxLCA4MiwgMjI5LCA2NCwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDQyLCAyMCwgMSwgODIsIDIzMSwgMTAsIDIwLCAxLCA4MiwgMjMxLCAxMjEsIDIwLCAxLCA4MiwgMjI3LCAxMTksIAotICAgIDIwLCAxLCA4MiwgMjI4LCAxNDEsIDIwLCAxLCA4MiwgMjQzLCA4MCwgMjAsIDEsIDgyLCAyMTUsIDEwOSwgMjAsIDEsIDgyLCAKLSAgICAyMzMsIDIxNywgMjAsIDEsIDgyLCAyMTEsIDY3LCAyMCwgMSwgODIsIDIyNywgMTUzLCAyNTAsIDI0LCAyMCwgMSwgODIsIAotICAgIDIxMCwgMjUwLCAyMCwgMSwgODIsIDIzMSwgMjcsIDIwLCAxLCA4MiwgMjI5LCAxMzcsIDIwLCAxLCA4MiwgMjI1LCAxMDMsIAotICAgIDIwLCAxLCA4MiwgMjEwLCAxOTcsIDIwLCAxLCA4MiwgMjMzLCAxMiwgMjAsIDEsIDgyLCAyNDMsIDI0MCwgMjAsIDEsIDgyLCAKLSAgICAyNDMsIDc5LCAyMCwgMSwgODIsIDIyOSwgMTMsIDIwLCAxLCA4MiwgMjM0LCAxNjIsIDIwLCAxLCA4MiwgMjMxLCAyMjgsIAotICAgIDIwLCAxLCA4MiwgMjI5LCAyNiwgMjAsIDEsIDgyLCAyNDIsIDI0MSwgMjAsIDEsIDgyLCAyNDQsIDIwNCwgMjAsIDEsIDgyLCAKLSAgICAyMjcsIDI0NCwgMjAsIDEsIDgyLCAyMjUsIDE1NiwgMjAsIDEsIDgyLCAyMTEsIDE3LCAyMCwgMSwgODIsIDIyOSwgNTEsIAotICAgIDIwLCAxLCA4MiwgMjI3LCAxNTMsIDI1MiwgMzEsIDIwLCAxLCA4MiwgMjI3LCA5OSwgMjAsIDEsIDgyLCAyMjQsIDI1MCwgCi0gICAgMjAsIDEsIDgyLCAyMzAsIDIyNSwgMjAsIDEsIDgyLCAyNDMsIDIzOCwgMjAsIDEsIDgyLCAyMjksIDIyNSwgMjAsIDEsIDgyLCAKLSAgICAyMzAsIDEwNSwgMjAsIDEsIDgyLCAyNDIsIDI0MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgNzQsIDIwLCAxLCA4MiwgMjMwLCAKLSAgICA1MiwgMjAsIDEsIDgyLCAyMjQsIDE0OSwgMjAsIDEsIDgyLCAyMjksIDE1LCAyMCwgMSwgODIsIDIzMywgMTk1LCAyMCwgMSwgCi0gICAgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIyNywgMjUyLCAyMCwgMSwgODIsIDIxMSwgMTgsIDIwLCAxLCA4MiwgMjI5LCAKLSAgICAzNiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIDE5MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgMjUxLCAyMywgMjAsIDEsIAotICAgIDgyLCAyNDQsIDQ1LCAyMCwgMSwgODIsIDIyOCwgMTgxLCAyMCwgMSwgODIsIDYxLCAyMCwgMSwgODIsIDIxNiwgMTEsIDIwLCAKLSAgICAxLCA4MiwgNzgsIDIwLCAxLCA4MiwgNzQsIDIwLCAxLCA4MiwgMjMzLCA5MiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIAotICAgIDI2LCAyMCwgMSwgODIsIDIxNywgMTAyLCAyMCwgMSwgODIsIDIxNywgNTIsIDIwLCAxLCA4MiwgMjI5LCAxNTIsIDIzMCwgCi0gICAgMzksIDI0MCwgMjQxLCAyMCwgMSwgODIsIDIyMCwgMTcsIDIwLCAxLCA4MiwgMjExLCAxNCwgMjAsIDEsIDgyLCAyMjgsIAotICAgIDI1MiwgMjAsIDEsIDgyLCAyMTAsIDIwMiwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjE3LCAyNDEsIDIwLCAxLCA4MiwgMjEwLCAKLSAgICAyMjcsIDI0OSwgMTU1LCAyMCwgMSwgODIsIDIxMCwgMTg3LCAyMCwgMSwgODIsIDIxMCwgMTk1LCAyMCwgMSwgODIsIDIzNCwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIyNSwgMTU0LCAyMCwgMSwgODIsIDIyOCwgMTgyLCAyNDUsIDExMCwgMjAsIDEsIDgyLCAyMjQsIAotICAgIDE0NywgMjAsIDEsIDgyLCAyMTEsIDE5MiwgMjAsIDEsIDgyLCAyNDQsIDE1NSwgMjAsIDEsIDgyLCAyMTMsIDI1MCwgMjAsIAotICAgIDEsIDgyLCAyMzIsIDEwMywgMjAsIDEsIDgyLCAyMzAsIDIzNSwgMjAsIDEsIDgyLCAyMjMsIDU0LCAyMCwgMSwgODIsIDIyMywgCi0gICAgMTc0LCAyMCwgMSwgODIsIDIyOCwgMjUxLCAyMCwgMSwgODIsIDIyOSwgODIsIDIwLCAxLCA4MiwgMjIwLCA5LCAyMCwgMSwgCi0gICAgODIsIDIxOSwgMjU0LCAyMCwgMSwgODIsIDI0MywgMjQyLCAyMjMsIDg5LCAyMCwgMSwgODIsIDE5OCwgMjAsIDEsIDgyLCAKLSAgICAyMjUsIDExMSwgMjAsIDEsIDgyLCAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMzQsIDM0LCAyMCwgMSwgODIsIDIzMSwgNjMsIAotICAgIDIwLCAxLCA4MiwgMTg2LCAyMCwgMSwgODIsIDIzMSwgMTc0LCAyMCwgMSwgODIsIDIxNiwgMjIyLCAyMCwgMSwgODIsIDIzNCwgCi0gICAgOTgsIDIwLCAxLCA4MiwgMjMwLCAxNTUsIDIwLCAxLCA4MiwgMjE2LCAyNDgsIDIwLCAxLCA4MiwgMjQ0LCAxNzcsIDIwLCAxLCAKLSAgICA4MiwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDE0MCwgMTc2LCAyMCwgMSwgMjI1LCAxNDAsIDY5LCAyMCwgMSwgMjI1LCAxNDAsIAotICAgIDIzMywgMjIzLCAyMCwgMSwgMjI1LCAxNDAsIDI0NSwgMjE3LCAyMCwgMSwgMjI1LCAxNDAsIDIyMywgMTExLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIxNywgODcsIDIwLCAxLCAyMjUsIDE0MCwgMjI3LCAxNTIsIDIwLCAxLCAyMjUsIDE0MCwgMjMzLCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjIyLCAyNDIsIDIwLCAxLCAyMjUsIDE0MCwgMjIzLCAzMiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMzEsIDg0LCAyMCwgMSwgMjI1LCAxNDAsIDIxNywgMTAyLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTUxLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIyOCwgMTg4LCAyMCwgMSwgMjI1LCAxNDAsIDE5NCwgMjAsIDEsIDIyNSwgMTQwLCAyMTgsIDUsIDIwLCAxLCAKLSAgICAyMjUsIDE0MCwgMjIwLCAyOSwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDE5MywgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDEyNSwgCi0gICAgMjAsIDEsIDIyNSwgMTQwLCAyMzMsIDE2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMzQsIDE2MiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMjcsIDIxMywgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIDI0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDE1OSwgMjAsIDEsIAotICAgIDIyNSwgMTQwLCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDIyNywgMjAsIDEsIDIyNSwgMTQwLCAxOTIsIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjI4LCAxNCwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDE1NCwgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIAotICAgIDI1MSwgMjAsIDEsIDIyNSwgMTQwLCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDIxNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQwLCAyMjIsIDE0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDIzOCwgMjAsIDEsIDIyNSwgMTQwLCAyMjMsIDU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDAsIDIzNCwgMTcxLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTIsIDIwLCAxLCAyMjUsIDE0MCwgMjI5LCAKLSAgICA2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDksIDIwLCAxLCAyMjUsIDE0MCwgMjI0LCAxNTAsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjQ0LCA0NSwgMjAsIDEsIDIyNSwgMTQwLCAyMTIsIDY1LCAyMCwgMSwgMjI1LCAxNDAsIDIzMiwgMjQ3LCAyMCwgMSwgMjI1LCAKLSAgICAxNDAsIDIzMiwgMTI1LCAyMCwgMSwgMjI1LCAxNDAsIDIzNCwgMzQsIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMTksIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjIzLCA4NiwgMjAsIDEsIDIyNSwgMTQwLCAxODYsIDIwLCAxLCAyMjUsIDE0MCwgMjMwLCAxNjYsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMjcsIDIwLCAxLCAyMjUsIDE0MCwgMjE2LCAyMzEsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjM0LCAxLCAyMCwgMSwgMjI1LCAxNDAsIDIyMSwgMjUzLCAyMCwgMSwgMjI1LCAxNDAsIDIxMiwgMTE1LCA5NSwgMSwgMTkxLCAKLSAgICA5NSwgMSwgMjUyLCAxOTksIDk1LCAxLCA4LCAxOTEsIDk1LCAxLCAyMjUsIDQ1LCA5NSwgMSwgMTg2LCA5NSwgMSwgMjMwLCAKLSAgICAyMzgsIDk1LCAxLCAyNTQsIDMxLCAxODYsIDk1LCAxLCAyNDQsIDIwNCwgOTUsIDEsIDIxNCwgMjcsIDk1LCAxLCAyMTMsIAotICAgIDE3NywgOTUsIDEsIDIxNywgMTA2LCA5NSwgMSwgMjQ4LCAyMjksIDk1LCAxLCA4LCAyMTUsIDE1NywgOTUsIDEsIDgsIDIxNywgCi0gICAgMTA2LCA5NSwgMSwgMjE1LCAxNTcsIDk1LCAxLCAyNDgsIDE0MywgOTUsIDEsIDE5OCwgOTUsIDEsIDIyOCwgMjQyLCA5NSwgCi0gICAgMSwgOCwgMjI4LCAxMTUsIDk1LCAxLCAyNTQsIDMxLCAxOTgsIDk1LCAxLCAyMjgsIDExNSwgOTUsIDEsIDIyOCwgMTAxLCAKLSAgICA5NSwgMSwgMjMzLCAxNDEsIDk1LCAxLCAyMzIsIDY2LCA5NSwgMSwgMjMzLCA0LCA5NSwgMSwgMjMyLCAyNDksIDk1LCAxLCAKLSAgICAyMTYsIDU3LCA5NSwgMSwgMjQ3LCAxNjEsIDk1LCAxLCAyMTYsIDQ5LCA5NSwgMSwgMjQ3LCAxNjAsIDk1LCAxLCAxNzYsIAotICAgIDk1LCAxLCAyNDMsIDE0MiwgOTUsIDEsIDgsIDE3NiwgOTUsIDEsIDIyNCwgOTEsIDk1LCAxLCAyMjQsIDY5LCA5NSwgMSwgCi0gICAgMjI5LCA4MiwgOTUsIDEsIDIyOSwgMzMsIDk1LCAxLCAyNTQsIDMxLCAyMjksIDgyLCA5NSwgMSwgMTYyLCA5NSwgMSwgMjExLCAKLSAgICAxNjUsIDk1LCAxLCAyNDMsIDAsIDk1LCAxLCAyNDIsIDIzMywgOTUsIDEsIDIxNSwgMTY2LCA5NSwgMSwgMjQ2LCAzNCwgOTUsIAotICAgIDEsIDIyNywgMTY5LCA5NSwgMSwgMjI3LCAxNTQsIDk1LCAxLCAyMTUsIDE3NiwgOTUsIDEsIDI0NiwgNDEsIDk1LCAxLCA4LCAKLSAgICAyMTUsIDE3NiwgOTUsIDEsIDgsIDI0NiwgNDEsIDk1LCAxLCAyMjMsIDEwOSwgMjE1LCAxNzYsIDk1LCAxLCAyMjAsIDEwNCwgCi0gICAgOTUsIDEsIDIxOCwgMjI1LCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgMTQsIDk1LCAxLCAyMTUsIDE4NCwgOTUsIDEsIAotICAgIDI0NiwgNDYsIDk1LCAxLCA4LCAyMTUsIDE4NCwgOTUsIDEsIDIwNiwgOTUsIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgCi0gICAgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAyNTQsIDMxLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgCi0gICAgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgMSwgMjU0LCAyMTgsIDk1LCAxLCAyNDEsIDE5NiwgCi0gICAgOTUsIDEsIDIyOSwgMTk3LCA5NSwgNSwgMjUzLCAyMzAsIDk1LCA1LCAyMjMsIDEwOSwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIAotICAgIDEwOSwgMjUzLCAyMzAsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgMjU1LCA4MiwgOTUsIDI1LCA1LCAyNTQsIDIxNCwgCi0gICAgOTUsIDI1LCA1LCAyNTQsIDEzMSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCA3OCwgOTUsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIDk4LCA5NSwgMjUsIDUsIDc2LCA5NSwgMjUsIDUsIAotICAgIDI0NSwgMTU4LCA5NSwgMjUsIDUsIDI0NSwgMTQ2LCA5NSwgMjUsIDUsIDIyNiwgMjM2LCA5NSwgMjUsIDUsIDc0LCA5NSwgCi0gICAgMjUsIDUsIDI0MCwgMTI2LCA5NSwgMjUsIDUsIDI0MCwgMTI1LCA5NSwgMjUsIDUsIDI0MCwgMTI0LCA5NSwgMjUsIDUsIAotICAgIDIzNSwgMTk2LCA5NSwgMjUsIDUsIDIzNiwgNjcsIDk1LCAyNSwgNSwgMjM2LCA0MCwgOTUsIDI1LCA1LCAyMzUsIDE2MiwgCi0gICAgOTUsIDI1LCA1LCAyMzUsIDIzOCwgOTUsIDI1LCA1LCA2OSwgOTUsIDI1LCA1LCAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIAotICAgIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIAotICAgIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyNTIsIDk1LCAyNSwgNSwgMjU0LCAyNDgsIDk1LCAyNSwgNSwgMjQ1LCA5NCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAKLSAgICA5NCwgOTUsIDI1LCA1LCAyNDUsIDEwMCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAxMDAsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDk1LCAyNSwgNSwgMjQ1LCAyMDMsIDk1LCAyNSwgNSwgMjUzLCAyMDAsIDk1LCAyNSwgNSwgMjI2LCAxMzgsIDk1LCAKLSAgICAyNSwgNSwgMjMwLCAzMCwgOTUsIDI1LCA1LCAyMjksIDg0LCA5NSwgMTM4LCAyMjIsIDI1NCwgOTUsIDEzOCwgMjE2LCAxNSwgCi0gICAgMjIyLCAyNTQsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgMjksIDk1LCAxLCAyMTYsIDI4LCA5NSwgCi0gICAgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIDEsIDIxNiwgCi0gICAgMjMsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAzMCwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDksIAotICAgIDIxNiwgMjcsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAyNiwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAKLSAgICAxMDksIDIxNiwgMjMsIDU2LCAxLCAyNTQsIDMxLCA3NiwgMTQxLCAxLCAyNTQsIDMxLCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjQ4LCAxNjYsIDQ5LCAyOCwgMTYsIDIyNSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIAotICAgIDExNywgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIyNiwgMTE3LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAKLSAgICAxODYsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMzQsIDIwMywgNDksIDI4LCAxNiwgCi0gICAgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDIyNiwgMTMsIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCA0OSwgMjgsIDE2LCAyMTAsIAotICAgIDIxOCwgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDIzMywgMjQwLCA0OSwgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDE4NiwgNDksIAotICAgIDI4LCAxNiwgMjQ1LCAzNCwgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIxNywgMywgNDksIDI4LCAxNiwgMjM0LCAxNjcsIDQ5LCAKLSAgICAyOCwgMTYsIDI1NCwgNjYsIDQ5LCAyOCwgMTYsIDI1NCwgNjcsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMTcsIDE3NiwgNDksIAotICAgIDI4LCAxNiwgMjE2LCAxNjAsIDQ5LCAyOCwgMTYsIDIyNiwgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NiwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjI0LCAxNTYsIDQ5LCAyOCwgMTYsIDI1MCwgMTU3LCA0OSwgMjgsIDE2LCAyMTQsIDYsIAotICAgIDQ5LCAyOCwgMTYsIDIzNSwgMTcwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDE2OSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjgsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyMSwgMjE1LCA0OSwgMjgsIDE2LCAyMjYsIDQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOCwgMTQ4LCAyNTQsIDY5LCA0OSwgMjgsIDE2LCAyMjYsIDExNiwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjE0LCAxNSwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA3MCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCA0MywgNDksIDI4LCAxNiwgMjIzLCA0OSwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIAotICAgIDIxNiwgODQsIDQ5LCAyOCwgMTYsIDI1NCwgMTI5LCA0OSwgMjgsIDE2LCAyMjEsIDE2MSwgNDksIDI4LCAxNiwgMjE3LCAKLSAgICAxNzksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNywgMTc5LCAyMzEsIDQ1LCAyMTgsIDE0NiwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxMTEsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCA0OSwgMjgsIDE2LCAyMzMsIDMzLCA0OSwgMjgsIDE2LCAyNDYsIAotICAgIDQ5LCA0OSwgMjgsIDE2LCAyMTUsIDIyOCwgNDksIDI4LCAxNiwgMjE2LCAyMzMsIDQ5LCAyOCwgMTYsIDIzMywgMjQzLCA0OSwgCi0gICAgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDM0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI1NCwgMjksIDQ5LCAKLSAgICAyOCwgMTYsIDIzNiwgMTksIDQ5LCAyOCwgMTYsIDIxNSwgMjAwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDIwNiwgCi0gICAgMjE1LCAxOTksIDQ5LCAyOCwgMTYsIDIyNSwgMjAzLCA0OSwgMjgsIDE2LCAyMjQsIDE2MSwgNDksIDI4LCAxNiwgMjM0LCAKLSAgICAxNywgNDksIDI4LCAxNiwgMjUwLCA4OCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjIzLCAxNDksIDQ5LCAyOCwgMTYsIDIyNiwgCi0gICAgMTYsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyNiwgMTQsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDI0MCwgMTE2LCA0OSwgMjgsIAotICAgIDE2LCAyMjksIDIwOCwgNDksIDI4LCAxNiwgMjI1LCAxNTksIDQ5LCAyOCwgMTYsIDIzNCwgMTgsIDI1NCwgMTU4LCA0OSwgCi0gICAgMjgsIDE2LCAyMTUsIDIwMCwgMjU0LCAxNTgsIDQ5LCAyOCwgMTYsIDIxOCwgMTI1LCA0OSwgMjgsIDE2LCAyNDIsIDEzMCwgCi0gICAgNDksIDI4LCAxNiwgMjM1LCAxNzAsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjYsIDIxMCwgMjI5LCAxMDAsIDQ5LCAyOCwgCi0gICAgMTYsIDIyNiwgMTE3LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxNTgsIDQ5LCAyOCwgMTYsIDIzNCwgNCwgNDksIDI4LCAKLSAgICAxNiwgMjI1LCAxNTcsIDQ5LCAyOCwgMTYsIDIzMywgMjQyLCA0OSwgMjgsIDE2LCAyMjUsIDIwNCwgMjI5LCAxMDAsIDQ5LCAKLSAgICAyOCwgMTYsIDIzNCwgMTY4LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAyMjksIDEwMSwgCi0gICAgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIxMCwgMjE1LCA0OSwgMjgsIDE2LCAyNTQsIDY3LCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjU0LCA2OCwgMjE3LCAxNzcsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgMjMzLCAKLSAgICAyNDEsIDQ5LCAyOCwgMTYsIDI0NSwgMTgxLCA0OSwgMjgsIDE2LCAyNTAsIDE1OCwgNDksIDI4LCAxNiwgMjMwLCAyMDMsIAotICAgIDIzNSwgMTY5LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDIyOSwgMTAwLCAKLSAgICA0OSwgMjgsIDE2LCAyMjQsIDE2MiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIyNiwgMjA3LCA0OSwgMjgsIDE2LCAyNTQsIAotICAgIDkyLCA0OSwgMjgsIDE2LCAyMzIsIDYzLCA0OSwgMjgsIDE2LCAyMjYsIDE0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxNiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgNjgsIDIyNiwgMTUsIDQ5LCAyOCwgMTYsIDIzMywgMTU5LCA0OSwgMjgsIAotICAgIDE2LCAyNTQsIDkzLCA0OSwgMjgsIDE2LCAyMTUsIDIwMCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTg0LCA0OSwgCi0gICAgMjgsIDE2LCAyMTcsIDE3OSwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIxNywgMTcxLCA0OSwgMjgsIDE2LCAyNTAsIDg4LCAKLSAgICAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQ1LCAxMTQsIDQ5LCAyOCwgMTYsIDIyMSwgMTYyLCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjExLCAxNTEsIDIzNCwgNDMsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE2MywgNDksIAotICAgIDI4LCAxNiwgMjE1LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCi0gICAgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTU5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NSwgNDksIDI4LCAxNiwgMjU0LCAKLSAgICAyMiwgNDksIDI4LCAxNiwgMjQ1LCA2OCwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjI2LCAxMTEsIDIyOSwgMTAwLCA0OSwgMjgsIAotICAgIDE2LCAyMTYsIDE5MCwgMjQ1LCA3NywgNDksIDI4LCAxNiwgMjE2LCAxOTAsIDI0NSwgMzMsIDQ5LCAyOCwgMTYsIDIxNiwgCi0gICAgMTkyLCAyNTQsIDcxLCA0OSwgMjgsIDE2LCAyMTYsIDE4NSwgMjM0LCAyNTMsIDI1NCwgNjMsIDQ5LCAyOCwgMTYsIDIzNCwgCi0gICAgMjA1LCA0OSwgMjgsIDE2LCAyNDUsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDIxMSwgMTEsIDI1NCwgMTA0LCA0OSwgMjgsIDE2LCAyMTgsIDE0NywgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjU0LCAxMDQsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjMzLCAyNDQsIDI1NCwgMTU4LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI1NCwgNzAsIAotICAgIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyNTQsIDcyLCA0OSwgMjgsIDE2LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE1LCAKLSAgICAyMTEsIDQ5LCAyOCwgMTYsIDIxNiwgMjI1LCA0OSwgMjgsIDE2LCAyMzQsIDgsIDQ5LCAyOCwgMTYsIDIzMywgMzgsIDI0NSwgCi0gICAgMTQyLCAyNTAsIDc5LCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAyNDYsIDUwLCAyNTAsIDgwLCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAKLSAgICAyMTUsIDIxMywgMjUwLCA4MCwgNDksIDI4LCAxNiwgMjMzLCAzOCwgMjE2LCAyMzUsIDI1MCwgODAsIDQ5LCAyOCwgMTYsIAotICAgIDIzMywgMzgsIDIzNiwgMTQsIDI1MCwgNzksIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAKLSAgICAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI1NCwgMTgsIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI0OCwgMzcsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMzLCA0OSwgMjgsIDE2LCAyNDcsIDIzNCwgMjI2LCA1LCAyNTQsIDE5LCAyMzQsIDIwMiwgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzQsIDIyNiwgNSwgMjU0LCAxOSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjM0LCAKLSAgICAyMjYsIDUsIDI0OCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyNTQsIDIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMzYsIDIxLCA0OSwgMjgsIDE2LCAyNDcsIDI1NCwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIyNSwgMywgMjU0LCAyNCwgNDksIAotICAgIDI4LCAxNiwgMjU0LCAyMjAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAyNTQsIDI0LCA0OSwgMjgsIDE2LCAKLSAgICAyNTQsIDIyMCwgMjMxLCAzOSwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIzMSwgNTAsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDI0MiwgMTY0LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjI1LCAzLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIyNCwgMTY4LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDI1NCwgMTYwLCAyMjQsIDE2OCwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyNDgsIDM2LCAyNDAsIDExNCwgCi0gICAgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDI1NCwgMTYwLCAyNDgsIDM2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDIxNSwgMjA2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIxNSwgMjE4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgCi0gICAgMjE2LCAyMjksIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE2LCAyMjksIDIzMywgNDEsIDI0MCwgMTE0LCAKLSAgICA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjMzLCA0MSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjUsIDQyLCAKLSAgICAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjM1LCAxNzYsIDIxNiwgMjUyLCAyNDAsIDExNSwgNDksIDI4LCAxNiwgMjU0LCA2OCwgCi0gICAgMjE2LCAyNTIsIDI0MCwgMTE1LCA0OSwgMjgsIDE2LCAyNDQsIDE4MCwgMjE2LCAyMjYsIDQ5LCAyOCwgMTYsIDI0NCwgMTgwLCAKLSAgICAyMzAsIDE0OCwgNDksIDI4LCAxNiwgMjQ0LCAxODAsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE0LCAxMCwgCi0gICAgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjQsIDE2NywgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAKLSAgICAyMjUsIDQyLCAyMTYsIDIyOSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDI0MiwgMTYyLCAyMzAsIDMxLCAyNTQsIDcxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDIsIDE2MiwgMjMwLCAzMSwgMjQ3LCAyMDgsIDQ5LCAyOCwgMTYsIDI0NSwgMTU2LCAyMzQsIDI1MywgMjQzLCAKLSAgICAyNDMsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDIwLCA0OSwgMjgsIDE2LCAyMzYsIDE4LCA0OSwgMjgsIDE2LCAyNDMsIAotICAgIDI0MywgMjU0LCAzMCwgMjQ4LCAzNSwgMjQwLCAxMTMsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMTkxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDIyOSwgMjA4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjI5LCAyMDMsIAotICAgIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAKLSAgICAyMTksIDEwNCwgMjQ3LCAyNTEsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjM0LCAxODgsIAotICAgIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAKLSAgICAyMjgsIDIzOSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjI4LCAyMzksIDI1NCwgMTA0LCAKLSAgICA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjMxLCAxOTYsIDI1MCwgODEsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgCi0gICAgMjMxLCAxOTYsIDI1MCwgODEsIDIzMCwgMTQ4LCA0OSwgMjgsIDE2LCAyNDQsIDEzMCwgMjE5LCAxMDQsIDI1MCwgODEsIAotICAgIDIxNCwgOSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTcsIDE4MCwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyNDMsIDIyOSwgMTAyLCA0OSwgMjgsIDE2LCAyNTAsIDgyLCAyMDksIDI0OSwgNDksIDI4LCAxNiwgMjUwLCA4MiwgCi0gICAgMjM0LCA0MiwgNDksIDI4LCAxNiwgMjUwLCA4MiwgMjE5LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0MCwgMTYxLCAKLSAgICAyMTEsIDEwLCAyMTYsIDIzMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NSwgMTU3LCAyNTQsIDk0LCA0OSwgMjgsIDE2LCAKLSAgICAyMTEsIDEwLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAyNDcsIDI0NiwgCi0gICAgMjE2LCAyMzAsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyNDYsIDIzMCwgMTQ2LCAyMTYsIDIzNCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNDcsIDIzMCwgCi0gICAgMjQ1LCA0NCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCAKLSAgICA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgCi0gICAgMjMwLCAxNDYsIDIxNiwgMjM0LCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgMjQ3LCAyMzAsIDI0NSwgNDQsIAotICAgIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyNDMsIDU2LCAyNDcsIDI0NSwgNDksIDI4LCAxNiwgMjQzLCA1NiwgMjExLCA5LCA0OSwgMjgsIDE2LCAyNDcsIDI1MywgCi0gICAgMjU0LCA3MywgMjMwLCAyMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyNTQsIDczLCAyMzEsIDc4LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDI1MywgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyMTYsIDE4MywgNDksIDI4LCAxNiwgMjE5LCAxNjUsIAotICAgIDIxNiwgMTgzLCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDI0NywgMTk0LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgCi0gICAgMjE2LCAxODQsIDIxNSwgMjA4LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDIxNiwgMjIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMTksIDE2NSwgMjUzLCAyNTIsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjQ3LCAxOTQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE1LCAyMDgsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE2LCAyMjMsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMxLCAyNDMsIDM3LCA0OSwgMjgsIDE2LCAyNDcsIDIzNywgMjI2LCAxMzgsIDQ5LCAyOCwgCi0gICAgMTYsIDIxOCwgMTM5LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCAxOTEsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMywgMTI0LCAKLSAgICA0OSwgMjgsIDE2LCAyNTQsIDE1LCAyNDMsIDE0MiwgNDksIDI4LCAxNiwgMjU0LCAxNSwgMjQ4LCAxMSwgNDksIDI4LCAxNiwgCi0gICAgMjU0LCAxNSwgMjM0LCAxODgsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIAotICAgIDIyOCwgMjM4LCA0OSwgMjgsIDE2LCAyMzQsIDE2OCwgMjI5LCAxMDEsIDIzMSwgNDksIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAKLSAgICAyMjksIDEwMSwgMjMxLCA0OSwgNDksIDI4LCAxNiwgMjM0LCAxNjgsIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjksIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDI0MiwgMTY2LCAyMjksIDEwMSwgMjM0LCAyMDIsIDI4LCAxNiwgMjE5LCAxNTcsIDI1MiwgMTQzLCAyOCwgMTYsIDUyLCAKLSAgICAyNTIsIDE0MywgMjgsIDE2LCA0MCwgMjUyLCAxNDMsIDI4LCAxNiwgMjIzLCA1MywgNDAsIDI1MiwgMTQzLCAyOCwgMTYsIAotICAgIDI0OCwgMTYzLCAyNTIsIDE0MywgMjgsIDE2LCAyMTksIDI1MywgMjUyLCAxNDMsIDI4LCAxNiwgNDMsIDIyMywgODAsIDUwLCAKLSAgICAyOCwgMTYsIDQ0LCAyMjMsIDgwLCA1MCwgMjgsIDE2LCAyMjMsIDgwLCAyNDcsIDEyNiwgMjgsIDE2LCAyNDgsIDIwNCwgCi0gICAgMjIxLCAxNjUsIDI4LCAxNiwgMjQ4LCAyMzAsIDI1MSwgMSwgMjgsIDE2LCAyMjEsIDE2NSwgMjgsIDE2LCAyNDksIDI0MiwgCi0gICAgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOSwgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOCwgMjgsIDE2LCAyMjMsIDc4LCAKLSAgICAyNDQsIDExNywgMjgsIDE2LCAyNDQsIDEzOSwgMjgsIDE2LCAyNDQsIDE0MCwgNTEsIDI4LCAxNiwgMjUxLCAxNTYsIDc5LCAKLSAgICAyOCwgMTYsIDI1MSwgMzIsIDI4LCAxNiwgMjUxLCAxNjcsIDI4LCAxNiwgMTI3LCAyOCwgMTYsIDIyNiwgMTk3LCAyMTgsIAotICAgIDE2NSwgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2NSwgMjgsIDE2LCAyMTYsIDE0MywgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCAKLSAgICAxOCwgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCA4OCwgMjE4LCAxNjUsIDI4LCAxNiwgMjE5LCAxMjYsIDIxOCwgMTY1LCAyOCwgCi0gICAgMTYsIDIxOSwgMTI0LCAyNDQsIDIsIDI4LCAxNiwgMjQ0LCAxNiwgMjQ0LCAyLCAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIyLCAKLSAgICAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIzLCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjQzLCAyMTAsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNTEsIDc1LCAyNTAsIDIyLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjIsIAotICAgIDI4LCAxNiwgMjQ1LCAxNSwgMjUwLCAyMywgMjI2LCAxNDAsIDI1NCwgMTUwLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNDYsIDkxLCAyNTAsIDIxLCAyOCwgMTYsIDI0NiwgOTEsIDI1MCwgMjAsIAotICAgIDI4LCAxNiwgMjMwLCA5MCwgMjMxLCA5NSwgMjIzLCA2NCwgMjgsIDE2LCA1MiwgMjIwLCA3NywgMjgsIDE2LCA1MiwgMjQ0LCAKLSAgICA3MywgMjgsIDE2LCAyNDQsIDc0LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDc0LCAyNDYsIDExNCwgMjgsIDE2LCAyMjksIAotICAgIDE5MywgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxOTMsIDI0NiwgMTE0LCAyOCwgMTYsIDIyMCwgNzgsIDIxNCwgMTYzLCAyOCwgCi0gICAgMTYsIDIyMCwgNzgsIDI0NiwgMTE0LCAyOCwgMTYsIDIyNCwgMjUsIDEzOCwgMjIwLCA3NywgMjgsIDE2LCAyMjQsIDI1LCAKLSAgICAxMzgsIDI0NCwgNzMsIDI4LCAxNiwgMjQ5LCAyMjQsIDIxNiwgODgsIDI4LCAxNiwgMjQ5LCA5MywgMjE2LCA4OCwgMjgsIAotICAgIDE2LCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjI2LCAxNDAsIDI1MiwgMTMwLCAyOCwgMTYsIDIyNCwgNywgMjU0LCAKLSAgICAxNTAsIDI4LCAxNiwgMjI0LCA3LCAyNTIsIDEzMCwgMjgsIDE2LCAyMzAsIDkzLCAyMjMsIDY0LCAyOCwgMTYsIDIxMSwgCi0gICAgMjUxLCAyMjMsIDY0LCAyOCwgMTYsIDE2MywgMjIzLCA2NCwgMjgsIDE2LCAyMjQsIDI1LCAyMjMsIDY0LCAyOCwgMTYsIAotICAgIDI0NSwgMTk3LCAyMjMsIDY0LCAyOCwgMTYsIDIxOSwgMTIwLCAyMjMsIDY0LCAyOCwgMTYsIDIxNiwgMTYxLCAyMjMsIDY0LCAKLSAgICAyOCwgMTYsIDIxOSwgMTEyLCAyMjMsIDY0LCAyOCwgMTYsIDEyMywgMjQwLCAyMTgsIDIxNSwgNzEsIDIyMywgNjQsIDI4LCAKLSAgICAxNiwgMjExLCAxNzksIDIyOCwgNDgsIDI4LCAxNiwgOTYsIDIyOCwgNDgsIDI4LCAxNiwgMjUwLCA0NCwgMjExLCAxNzksIAotICAgIDIyOCwgNDgsIDI4LCAxNiwgNDIsIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ5LCAyNTEsIDIyOSwgCi0gICAgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIAotICAgIDQ5LCA0MywgMjUxLCAyMjksIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIAotICAgIDIyNywgMjI4LCA0OSwgNDQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDIxMSwgMjUzLCAyOCwgCi0gICAgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIDQ0LCAKLSAgICAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCA0NCwgMjUxLCAyMjksIDI4LCAxNiwgMjMwLCAxMzQsIAotICAgIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTM0LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNCwgCi0gICAgMjI4LCA0OSwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNCwgMjI4LCA0OSwgMTI0LCAyNTEsIDIyOSwgMjgsIDE2LCAKLSAgICAyMjYsIDgsIDIyOCwgNDgsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDgsIDI4LCAxNiwgMjI4LCA0OSwgMjUxLCAyMjksIAotICAgIDI4LCAxNiwgMjI3LCAyMDcsIDIyOCwgNDgsIDI4LCAxNiwgMjQ5LCAyNDksIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIAotICAgIDI0OSwgMjQ5LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyNTEsIDE1NCwgMjgsIDE2LCAyMTEsIDI1MSwgMjI4LCA1MiwgCi0gICAgMjgsIDE2LCAxNjMsIDIyOCwgNTIsIDI4LCAxNiwgMjI0LCAyNSwgMjI4LCA1MiwgMjgsIDE2LCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjgsIDE2LCAyMTksIDEyMCwgMjI4LCA1MiwgMjgsIDE2LCAyMTYsIDE2MSwgMjI4LCA1MiwgMjgsIDE2LCAyMTksIAotICAgIDExMiwgMjI4LCA1MiwgMjgsIDE2LCAxMjMsIDI0MCwgMjE4LCAyMTUsIDcxLCAyMjgsIDUyLCAyOCwgMTYsIDM4LCAyMTgsIAotICAgIDE0MSwgMjgsIDE2LCAzOCwgMjE4LCAyNDIsIDIxOCwgMTQxLCAyOCwgMTYsIDM4LCAyMTUsIDIzNSwgMjgsIDE2LCAzOCwgCi0gICAgMjE1LCAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTA5LCAyMTUsIDIzNSwgMjgsIDE2LCAyNDQsIAotICAgIDEwOSwgMjE1LCAyMzQsIDI4LCAxNiwgMjQ0LCAxMDksIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAyNTMsIDE5NywgMjQ3LCAKLSAgICAxMjgsIDI4LCAxNiwgMzgsIDI0NCwgODAsIDI4LCAxNiwgMzgsIDI0NCwgNzksIDI4LCAxNiwgMzgsIDI0NCwgNzgsIDI4LCAKLSAgICAxNiwgMzgsIDI0NCwgNzcsIDI4LCAxNiwgMzgsIDI0NCwgNzYsIDI4LCAxNiwgMjUyLCA2NiwgMjUyLCA4MiwgMjgsIDE2LCAKLSAgICAyNDUsIDE1MSwgMjUyLCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAyMTYsIDExMiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE2LCAxMTIsIAotICAgIDI4LCAxNiwgMjUyLCA2NiwgMjE5LCA4MiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE5LCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAKLSAgICAyMjUsIDExOCwgMjgsIDE2LCAyNDUsIDE1MSwgMjI1LCAxMTgsIDI4LCAxNiwgMzgsIDI1NSwgMjMsIDI4LCAxNiwgMzgsIAotICAgIDIxOCwgMTY3LCAyOCwgMTYsIDM4LCAyMTYsIDIzOSwgMjgsIDE2LCAzOCwgMjE4LCAxNjgsIDI4LCAxNiwgMzgsIDIzMSwgCi0gICAgMTY3LCAyOCwgMTYsIDM4LCAyMzEsIDE2NiwgMjgsIDE2LCAzOCwgMjU1LCAyMiwgMjgsIDE2LCAzOCwgMjMyLCAxMTgsIDI4LCAKLSAgICAxNiwgMjU0LCA2LCAyMTQsIDE2MywgMjgsIDE2LCAyNTQsIDYsIDI0NiwgMTE0LCAyOCwgMTYsIDM4LCAyNDcsIDE0MywgMjgsIAotICAgIDE2LCAzOCwgMjIyLCAyMzQsIDI4LCAxNiwgMzgsIDI0NCwgNjYsIDI4LCAxNiwgMzgsIDIxOSwgNzgsIDI4LCAxNiwgMzgsIAotICAgIDI1MiwgNDYsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDIwLCAyOCwgMTYsIDM4LCAyMTUsIDIxMiwgMjE2LCAyMCwgMjgsIDE2LCAKLSAgICAyMjIsIDIzOCwgMjgsIDE2LCAyMTgsIDc2LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgMTEwLCAyOCwgMTYsIAotICAgIDIzMSwgMzAsIDI4LCAxNiwgMjQ0LCAyNSwgMjgsIDE2LCAyNDksIDE0NiwgMjgsIDE2LCAyNDgsIDg2LCAyOCwgMTYsIDI0MiwgCi0gICAgMTU3LCAyMjgsIDUzLCAyMTksIDk3LCAyOCwgMTYsIDI0MiwgMTU3LCAyMjgsIDUzLCAyMjgsIDgwLCAyMTksIDk3LCAyOCwgCi0gICAgMTYsIDIxNiwgMSwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMjAwLCAyMTUsIDk1LCAyOCwgMTYsIDIxNSwgOTYsIAotICAgIDIxOSwgOTcsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgMTA0LCAyOCwgMTYsIAotICAgIDIyNiwgMTUyLCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCAxMDAsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgCi0gICAgOTksIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAKLSAgICAxNTIsIDIxOCwgOTYsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTUsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTQsIDI4LCAKLSAgICAxNiwgMjI2LCAxNTIsIDIxOCwgMTAzLCAyOCwgMTYsIDIyNiwgMTUyLCAyMTgsIDEwMiwgMjgsIDE2LCAyNDEsIDI1MiwgMjgsIAotICAgIDE2LCAyMjksIDExMCwgMjgsIDE2LCAyNDUsIDE1MSwgNjQsIDIxOCwgMTM1LCAyOCwgMTYsIDI0OCwgNzksIDIxOSwgOTcsIAotICAgIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDI0MiwgNywgCi0gICAgMjgsIDE2LCAzOCwgMjE5LCA2OSwgMjI1LCA0NiwgMjgsIDE2LCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjI1LCAyMTksIAotICAgIDEyMCwgNzksIDI4LCAxNiwgMTYzLCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjQyLCAxODksIDIxNCwgMTYzLCAyOCwgMTYsIAotICAgIDI0MiwgMTg5LCAyNDYsIDExNCwgMjgsIDE2LCAyLCAyNDQsIDEwOCwgMjgsIDE2LCAyNDgsIDE4OCwgMjgsIDE2LCAyNDgsIAotICAgIDE4OSwgMjU0LCAxNjMsIDI4LCAxNiwgMjMxLCAxMzgsIDI4LCAxNiwgMjMyLCAxMzUsIDI4LCAxNiwgMjUxLCAxNTEsIDI4LCAKLSAgICAxNiwgMjIwLCAxNTYsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU2LCAyNTEsIDIyOSwgMjgsIDE2LCAyMzAsIDE4OSwgMjgsIAotICAgIDE2LCAyMzAsIDE5MCwgMjUxLCAyMjksIDI4LCAxNiwgMjIwLCAxNTAsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTUwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyNDMsIDIyNywgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjcsIDI1MSwgMjI5LCAyOCwgMTYsIAotICAgIDIzMiwgMTM2LCAyMjUsIDE4MywgMjIzLCA2NCwgMjgsIDE2LCAyMzIsIDEzNiwgMjM2LCAxMSwgMjIzLCA2NCwgMjgsIDE2LCAKLSAgICAyNTEsIDE1MiwgMjIzLCA2NCwgMjgsIDE2LCAyMjAsIDE1NiwgMjIzLCA2NCwgMjgsIDE2LCAyMzAsIDE5MCwgMjIzLCA2NCwgCi0gICAgMjgsIDE2LCAyMjAsIDE1MCwgMjIzLCA2NCwgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxODEsIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjI1LCAxODIsIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIzNiwgMTAsIAotICAgIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgzLCAyNDcsIDIxOSwgMjgsIAotICAgIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgyLCAyOCwgMTYsIDIxNiwgMjUwLCAKLSAgICAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIDE3NywgMjM2LCAxMCwgMjgsIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgCi0gICAgMjI0LCAxNzcsIDIzNiwgMTEsIDI0NywgMjE5LCAyOCwgMTYsIDIxNiwgMjUwLCAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjM2LCAxMSwgMjQ3LCAyMTgsIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgOSwgMjQ5LCAxMTUsIDIyNCwgMTc3LCAKLSAgICAyMzYsIDExLCAyNDcsIDIxNywgMjgsIDE2LCAyNDksIDE0MSwgMjgsIDE2LCAyNDIsIDEzMywgMjUxLCA3NSwgMjUwLCAyMiwgCi0gICAgMjgsIDE2LCAyNDIsIDEzMywgMjQ1LCAxNSwgMjUwLCAyMiwgMjgsIDE2LCA0MiwgMjUzLCAxNjYsIDI4LCAxNiwgMjEzLCAKLSAgICAxNTEsIDI4LCAxNiwgMjI1LCAxNywgMjgsIDE2LCAyNTAsIDEzLCAyOCwgMTYsIDIyMSwgMjA1LCAyOCwgMTYsIDI1MCwgMTcsIAotICAgIDI4LCAxNiwgMjE2LCA4LCAyOCwgMTYsIDIyNCwgMjQ1LCAyOCwgMTYsIDIyNCwgMjQ2LCAyNDQsIDY4LCAyOCwgMTYsIDIyMSwgCi0gICAgMjA2LCAyNDQsIDY4LCAyOCwgMTYsIDIxNiwgOSwgMjIzLCA2MSwgMjgsIDE2LCAyMjUsIDE2NiwgMjE4LCA2NywgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjMwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTksIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIwOSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjAyLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTQsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDE4OCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTg3LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAxODYsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE4NSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjI5LCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjgsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNywgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMjI2LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNCwgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjIzLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjIsIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIyMSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjIwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTgsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNywgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjE2LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAyMTUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTkzLCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTIsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE5MSwgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMTkwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxODksIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIzMCwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjE5LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDIsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5NCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTg3LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxODYsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyOCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjI3LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMjYsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyNSwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjIyLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMjEsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyMCwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMjE1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIxMywgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjEyLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTEsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDIxMCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDcsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwNiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA1LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMDQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwMywgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjAxLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDAsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5OSwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMTk4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTcsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5NiwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMTk1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTMsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5MiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTkxLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTAsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDE4OSwgMzgsIDI2LCAyOCwgMjE1LCAyMDksIDM4LCAyNiwgMjgsIDIxNiwgMjI0LCAzOCwgCi0gICAgMjYsIDI4LCAyMjUsIDE5MSwgMjYsIDI4LCAyMzMsIDM3LCAyMzAsIDE0NywgMzEsIDI0NSwgMjMxLCAyNDcsIDIzMiwgMzEsIAotICAgIDI0MSwgMjI5LCAyNDUsIDIzMSwgMjQ3LCAyMzIsIDMxLCAyNDAsIDIyMSwgMjQ1LCAyMzEsIDI0NywgMjMyLCAzMSwgMjQ1LCAKLSAgICAyMzAsIDI0MSwgMjMwLCAyNDcsIDIzMiwgMzEsIDI0NSwgMjMwLCAyNDAsIDIyMCwgMjQ3LCAyMzIsIDMxLCAyNDUsIDIzMSwgCi0gICAgMTgwLCAzMSwgMjUwLCAxODIsIDE4MCwgMzEsIDI0MywgMjM2LCAyNTAsIDQzLCAxODAsIDMxLCAyMzAsIDE4MiwgMTgwLCAKLSAgICAzMSwgMjUyLCAxMzgsIDE4MCwgMzEsIDIzNCwgMTg1LCAyMTksIDgxLCAxODAsIDMxLCAyNDksIDE4NywgMTgwLCAzMSwgCi0gICAgMjUzLCAyNDEsIDE4MCwgMzEsIDIyNiwgMTY3LCAxODAsIDMxLCAyNTEsIDE2MSwgMjI2LCAxMzQsIDE4MCwgMzEsIDI0OCwgCi0gICAgODEsIDE3NywgMjQ3LCAxODcsIDE4MCwgMzEsIDI0NywgMTg0LCAxODAsIDMxLCAyMTAsIDIyMiwgMTgwLCAzMSwgMjM1LCAKLSAgICAyNTQsIDE4MCwgMzEsIDIyNSwgMjAwLCAxODAsIDMxLCAyMjMsIDEzMCwgMTgwLCAzMSwgMjQ5LCAxOTcsIDE4MCwgMzEsIAotICAgIDI0MSwgNjcsIDI1MiwgMTkyLCAxODAsIDMxLCAyMTIsIDU5LCAxODAsIDMxLCAyNDQsIDQ3LCAxODAsIDMxLCAyNTQsIDI1NSwgCi0gICAgMTgwLCAzMSwgMjIzLCA5MiwgMTgwLCAzMSwgMjIzLCA2OCwgMTgwLCAzMSwgMjQ1LCAyMjksIDE4MCwgMzEsIDIzNSwgNTksIAotICAgIDE4MCwgMzEsIDI0OSwgMTkyLCAxODAsIDMxLCAyNDUsIDE1MCwgMTgwLCAzMSwgMjQ2LCA2MCwgMTgwLCAzMSwgMjUwLCAKLSAgICAxNTMsIDE4MCwgMzEsIDI0OCwgOTAsIDE4MCwgMzEsIDIzLCAyMjMsIDY3LCAxODAsIDMxLCAyMjYsIDg1LCAxODAsIDMxLCAKLSAgICAyMzMsIDQwLCAxODAsIDMxLCAyNTAsIDYsIDE4MCwgMzEsIDIzNCwgODMsIDE4MCwgMzEsIDI0MywgOTMsIDE4MCwgMzEsIAotICAgIDIxOCwgMTE0LCAxODAsIDMxLCAyMjQsIDEzMywgMTgwLCAzMSwgMjQzLCAyMzUsIDE4MCwgMzEsIDIyMywgNjksIDE4MCwgCi0gICAgMzEsIDIzMywgNzcsIDE3NywgMjMwLCAxNjIsIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0MiwgMTc1LCAyMTYsIDQzLCAKLSAgICAyMzEsIDgxLCAxODAsIDMxLCAyNDUsIDE1MiwgMTgwLCAzMSwgMjE4LCAxMjYsIDE4MCwgMzEsIDI0MiwgMTM1LCAxODAsIAotICAgIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjI1LCAyMzksIDE4MCwgMzEsIDIyMiwgMjI4LCAxODAsIDMxLCAyNDQsIDY3LCAKLSAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAyMDEsIDE4MCwgMzEsIDIzMSwgOTQsIDE4MCwgCi0gICAgMzEsIDI0NSwgNjksIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIyMCwgMTgwLCAzMSwgMjUwLCA4LCAyMzAsIAotICAgIDExNSwgMTgwLCAzMSwgMjQyLCAxMTMsIDE4MCwgMzEsIDI0MywgOTQsIDIzNiwgNiwgMTgwLCAzMSwgMjMxLCAxNDYsIDE4MCwgCi0gICAgMzEsIDI1NSwgMTksIDE4MCwgMzEsIDI0NSwgMTY1LCAxODAsIDMxLCAyNDYsIDExNywgMTgwLCAzMSwgMjEyLCA0MiwgMTgwLCAKLSAgICAzMSwgMjE5LCAxNTIsIDE4MCwgMzEsIDIzNSwgMjI5LCAxODAsIDMxLCAyNDgsIDUwLCAxODAsIDMxLCAyNDgsIDE2OCwgCi0gICAgMTgwLCAzMSwgMjQ3LCAyMTYsIDE4MCwgMzEsIDI0NSwgMzcsIDE4MCwgMzEsIDIyMCwgMTE3LCAxODAsIDMxLCAyMTgsIAotICAgIDEzMCwgMTgwLCAzMSwgMjQyLCA5LCAxODAsIDMxLCAyNDksIDIyMCwgMTgwLCAzMSwgMjUwLCAzLCAxODAsIDMxLCAyNDQsIAotICAgIDE4NSwgMTgwLCAzMSwgMjU0LCAyMjEsIDE4MCwgMzEsIDI0OSwgMjE5LCAxODAsIDMxLCAyMjYsIDIwMSwgMjE2LCAxOTcsIAotICAgIDIxMywgMjQyLCAxODAsIDMxLCAyNDcsIDI0MCwgMTgwLCAzMSwgMjMzLCAxMzAsIDE4MCwgMzEsIDI0NCwgMjEsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMDUsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAKLSAgICAxNjEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIAotICAgIDIxLCAxOTUsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAKLSAgICAxNzQsIDIxLCAxOTYsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAyMDEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgCi0gICAgMjE2LCAyNDQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxMDUsIDI0OSwgMTU3LCAyMjIsIAotICAgIDIwNCwgMjE2LCAyNDQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxNjEsIDI0OSwgMTU3LCAKLSAgICAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTUsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTYsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAyMDEsIDExLCAyMywgNiwgNjEsIDExLCAyMywgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgNiwgMjUxLCA3NCwgMTEsIDIzLCA2LCAyNDksIDY4LCAxMSwgMjMsIDYsIDc2LCAxMSwgMjMsIDYsIAotICAgIDI0NSwgMTQsIDExLCAyMywgNiwgMjQzLCAyMDksIDExLCAyMywgNiwgMjQyLCA2NywgMTEsIDIzLCA2LCA3NCwgMTEsIDIzLCAKLSAgICA2LCAyMzUsIDE1MCwgMTEsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTQsIDExLCAyMywgCi0gICAgNiwgMjMwLCAzMCwgMTEsIDIzLCA2LCA3OCwgMTEsIDIzLCA2LCAyMjYsIDEwOSwgMTEsIDIzLCA2LCAyMjQsIDk5LCAxMSwgCi0gICAgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkzLCAxMSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDYsIDY5LCAxMSwgCi0gICAgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgMjExLCAKLSAgICAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNjYsIDExLCAyMywgNCwgCi0gICAgMjUxLCA3NCwgMTEsIDIzLCA0LCAyNDksIDY4LCAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDI0NSwgMTQsIDExLCAyMywgCi0gICAgNCwgMjQzLCAyMDksIDExLCAyMywgNCwgMjQyLCA2NywgMTEsIDIzLCA0LCA3NCwgMTEsIDIzLCA0LCAyMzUsIDE1MCwgMTEsIAotICAgIDIzLCA0LCAyMzUsIDI5LCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTQsIDExLCAyMywgNCwgMjMwLCAzMCwgMTEsIAotICAgIDIzLCA0LCA3OCwgMTEsIDIzLCA0LCAyMjYsIDEwOSwgMTEsIDIzLCA0LCAyMjQsIDk5LCAxMSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDIzLCA0LCAyMjIsIDkzLCAxMSwgMjMsIDQsIDIxNywgMTUzLCAxMSwgMjMsIDQsIDY5LCAxMSwgMjMsIDQsIDIxNCwgMTA1LCAKLSAgICAxMSwgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAyMywgNCwgCi0gICAgMjEwLCAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNjYsIDExLCAzMiwgNiwgMjUxLCA3NCwgMTEsIDMyLCAKLSAgICA2LCAyNDksIDY4LCAxMSwgMzIsIDYsIDc2LCAxMSwgMzIsIDYsIDI0NSwgMTQsIDExLCAzMiwgNiwgMjQzLCAyMDksIDExLCAKLSAgICAzMiwgNiwgMjQyLCA2NywgMTEsIDMyLCA2LCA3NCwgMTEsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDMyLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMzIsIDYsIDE1NiwgMTEsIDMyLCA2LCAxOTQsIDExLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDMyLCA2LCA3OCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMzIsIDYsIDE1MywgMTEsIDMyLCA2LCAyMjIsIDkzLCAKLSAgICAxMSwgMzIsIDYsIDIxNywgMTUzLCAxMSwgMzIsIDYsIDY5LCAxMSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzIsIDYsIDIxMiwgCi0gICAgOTgsIDExLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzMiwgNiwgMjEwLCAxNTksIDExLCAKLSAgICAzMiwgNCwgNjEsIDExLCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDMyLCA0LCAyNDksIDY4LCAKLSAgICAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDI0NSwgMTQsIDExLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzMiwgNCwgNzQsIAotICAgIDExLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAzMiwgNCwgMjM1LCAyOSwgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgNCwgMTk0LCAKLSAgICAxMSwgMzIsIDQsIDIzMCwgMzAsIDExLCAzMiwgNCwgNzgsIDExLCAzMiwgNCwgMjI2LCAxMDksIDExLCAzMiwgNCwgMjI0LCAKLSAgICA5OSwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MywgMTEsIDMyLCA0LCAyMTcsIDE1MywgMTEsIDMyLCA0LCAKLSAgICA2OSwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzIsIAotICAgIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgMzIsIDYsIDI1MSwgNzQsIDExLCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAyMywgMzIsIDYsIDc2LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyNDUsIDE0LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAzMiwgNiwgMjQyLCA2NywgCi0gICAgMTEsIDIzLCAzMiwgNiwgNzQsIDExLCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDI5LCAxMSwgCi0gICAgMjMsIDMyLCA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5NCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDIzLCAzMiwgCi0gICAgNiwgNzgsIDExLCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAxNTMsIDExLCAyMywgMzIsIDYsIDIyMiwgOTMsIDExLCAyMywgMzIsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDMyLCA2LCA2OSwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTc4LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIDQsIDYxLCAxMSwgCi0gICAgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDIzLCAzMiwgNCwgMjQ5LCA2OCwgMTEsIAotICAgIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDI0NSwgMTQsIDExLCAyMywgMzIsIDQsIDI0MywgMjA5LCAxMSwgMjMsIAotICAgIDMyLCA0LCAyNDIsIDY3LCAxMSwgMjMsIDMyLCA0LCA3NCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAyMywgMzIsIAotICAgIDQsIDIzNSwgMjksIDExLCAyMywgMzIsIDQsIDE1NiwgMTEsIDIzLCAzMiwgNCwgMTk0LCAxMSwgMjMsIDMyLCA0LCAyMzAsIAotICAgIDMwLCAxMSwgMjMsIDMyLCA0LCA3OCwgMTEsIDIzLCAzMiwgNCwgMjI2LCAxMDksIDExLCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAyMywgMzIsIDQsIDE1MywgMTEsIDIzLCAzMiwgNCwgMjIyLCA5MywgMTEsIDIzLCAzMiwgNCwgMjE3LCAxNTMsIDExLCAKLSAgICAyMywgMzIsIDQsIDY5LCAxMSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIAotICAgIDExOSwgNiwgNjEsIDExLCAxMTksIDYsIDI1MSwgNzQsIDExLCAxMTksIDYsIDI0OSwgNjgsIDExLCAxMTksIDYsIDI0MywgCi0gICAgMjA5LCAxMSwgMTE5LCA2LCAyMzUsIDE1MCwgMTEsIDExOSwgNiwgMjM1LCAyOSwgMTEsIDExOSwgNiwgMjMwLCAzMCwgMTEsIAotICAgIDExOSwgNiwgNzgsIDExLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMTE5LCA2LCAyMjQsIDk5LCAxMSwgMTE5LCA2LCAyMjIsIAotICAgIDkzLCAxMSwgMTE5LCA2LCAyMTcsIDE1MywgMTEsIDExOSwgNiwgNjksIDExLCAxMTksIDYsIDIxNCwgMTA1LCAxMSwgMTE5LCAKLSAgICA2LCAyMTIsIDk4LCAxMSwgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDExOSwgNiwgMjExLCAxMTcsIDExLCAxMTksIDYsIDIxMCwgCi0gICAgMTU5LCAxMSwgMTE5LCA0LCA2MSwgMTEsIDExOSwgNCwgMjUzLCAxNjYsIDExLCAxMTksIDQsIDI1MSwgNzQsIDExLCAxMTksIAotICAgIDQsIDI0OSwgNjgsIDExLCAxMTksIDQsIDI0NSwgMTQsIDExLCAxMTksIDQsIDI0MiwgNjcsIDExLCAxMTksIDQsIDc0LCAxMSwgCi0gICAgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDExOSwgNCwgMjM1LCAyOSwgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCA0LCAxOTQsIAotICAgIDExLCAxMTksIDQsIDIzMCwgMzAsIDExLCAxMTksIDQsIDIyNiwgMTA5LCAxMSwgMTE5LCA0LCAyMjQsIDk5LCAxMSwgMTE5LCAKLSAgICA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTMsIDExLCAxMTksIDQsIDIxNywgMTUzLCAxMSwgMTE5LCA0LCA2OSwgMTEsIAotICAgIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgMTE5LCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIDYsIDI1MywgCi0gICAgMTY2LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA3NCwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjgsIDExLCAyMywgMTE5LCA2LCAKLSAgICA3NiwgMTEsIDIzLCAxMTksIDYsIDI0NSwgMTQsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAxMTksIDYsIAotICAgIDI0MiwgNjcsIDExLCAyMywgMTE5LCA2LCA3NCwgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjM1LCAyOSwgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5NCwgMTEsIDIzLCAxMTksIDYsIDIzMCwgCi0gICAgMzAsIDExLCAyMywgMTE5LCA2LCA3OCwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDExOSwgNiwgMjI0LCAKLSAgICA5OSwgMTEsIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTMsIDExLCAyMywgMTE5LCA2LCAyMTcsIAotICAgIDE1MywgMTEsIDIzLCAxMTksIDYsIDY5LCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAyMTIsIAotICAgIDk4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDYsIAotICAgIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAxMTksIDQsIAotICAgIDI1MSwgNzQsIDExLCAyMywgMTE5LCA0LCAyNDksIDY4LCAxMSwgMjMsIDExOSwgNCwgNzYsIDExLCAyMywgMTE5LCA0LCAKLSAgICAyNDUsIDE0LCAxMSwgMjMsIDExOSwgNCwgMjQzLCAyMDksIDExLCAyMywgMTE5LCA0LCAyNDIsIDY3LCAxMSwgMjMsIDExOSwgCi0gICAgNCwgNzQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMjksIDExLCAyMywgMTE5LCA0LCAKLSAgICAxNTYsIDExLCAyMywgMTE5LCA0LCAxOTQsIDExLCAyMywgMTE5LCA0LCAyMzAsIDMwLCAxMSwgMjMsIDExOSwgNCwgNzgsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjYsIDEwOSwgMTEsIDIzLCAxMTksIDQsIDIyNCwgOTksIDExLCAyMywgMTE5LCA0LCAxNTMsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjIsIDkzLCAxMSwgMjMsIDExOSwgNCwgMjE3LCAxNTMsIDExLCAyMywgMTE5LCA0LCA2OSwgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgCi0gICAgMTc4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxMTcsIDExLCAyMywgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDEzMywgNiwgNjEsIAotICAgIDExLCAxMzMsIDYsIDI1MywgMTY2LCAxMSwgMTMzLCA2LCAyNDksIDY4LCAxMSwgMTMzLCA2LCA3NiwgMTEsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzMywgNiwgMjQzLCAyMDksIDExLCAxMzMsIDYsIDIzNSwgMTUwLCAxMSwgMTMzLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5NCwgMTEsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDEzMywgNiwgNzgsIAotICAgIDExLCAxMzMsIDYsIDIyNiwgMTA5LCAxMSwgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMTMzLCA2LCAyMjIsIDkzLCAxMSwgMTMzLCAKLSAgICA2LCAyMTcsIDE1MywgMTEsIDEzMywgNiwgNjksIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKLSAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKLSAgICAyNTMsIDE2NiwgMTEsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDEzMywgNCwgMjQ5LCA2OCwgMTEsIDEzMywgNCwgNzYsIDExLCAKLSAgICAxMzMsIDQsIDI0NSwgMTQsIDExLCAxMzMsIDQsIDI0MywgMjA5LCAxMSwgMTMzLCA0LCAyNDIsIDY3LCAxMSwgMTMzLCA0LCAKLSAgICA3NCwgMTEsIDEzMywgNCwgMjM1LCAxNTAsIDExLCAxMzMsIDQsIDIzNSwgMjksIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgCi0gICAgNCwgMTk0LCAxMSwgMTMzLCA0LCAyMzAsIDMwLCAxMSwgMTMzLCA0LCA3OCwgMTEsIDEzMywgNCwgMjI2LCAxMDksIDExLCAKLSAgICAxMzMsIDQsIDIyNCwgOTksIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MywgMTEsIDEzMywgNCwgMjE3LCAKLSAgICAxNTMsIDExLCAxMzMsIDQsIDY5LCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgCi0gICAgNCwgMjExLCAxNzgsIDExLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIAotICAgIDExLCAxMzksIDYsIDI1MywgMTY2LCAxMSwgMTM5LCA2LCAyNDksIDY4LCAxMSwgMTM5LCA2LCA3NiwgMTEsIDEzOSwgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzOSwgNiwgMjQzLCAyMDksIDExLCAxMzksIDYsIDc0LCAxMSwgMTM5LCA2LCAyMzUsIDE1MCwgMTEsIAotICAgIDEzOSwgNiwgMjM1LCAyOSwgMTEsIDEzOSwgNiwgMTU2LCAxMSwgMTM5LCA2LCAxOTQsIDExLCAxMzksIDYsIDc4LCAxMSwgCi0gICAgMTM5LCA2LCAyMjIsIDkzLCAxMSwgMTM5LCA2LCAyMTcsIDE1MywgMTEsIDEzOSwgNiwgNjksIDExLCAxMzksIDYsIDIxNCwgCi0gICAgMTA1LCAxMSwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMTM5LCA2LCAyMTEsIDE3OCwgMTEsIDEzOSwgNiwgMjExLCAxMTcsIDExLCAKLSAgICAxMzksIDQsIDYxLCAxMSwgMTM5LCA0LCAyNTMsIDE2NiwgMTEsIDEzOSwgNCwgMjUxLCA3NCwgMTEsIDEzOSwgNCwgMjQ5LCAKLSAgICA2OCwgMTEsIDEzOSwgNCwgNzYsIDExLCAxMzksIDQsIDI0NSwgMTQsIDExLCAxMzksIDQsIDI0MywgMjA5LCAxMSwgMTM5LCAKLSAgICA0LCAyNDIsIDY3LCAxMSwgMTM5LCA0LCA3NCwgMTEsIDEzOSwgNCwgMjM1LCAxNTAsIDExLCAxMzksIDQsIDIzNSwgMjksIAotICAgIDExLCAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTk0LCAxMSwgMTM5LCA0LCAyMzAsIDMwLCAxMSwgMTM5LCA0LCA3OCwgCi0gICAgMTEsIDEzOSwgNCwgMjI2LCAxMDksIDExLCAxMzksIDQsIDIyNCwgOTksIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgCi0gICAgMjIyLCA5MywgMTEsIDEzOSwgNCwgMjE3LCAxNTMsIDExLCAxMzksIDQsIDY5LCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIAotICAgIDEzOSwgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAKLSAgICAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNjYsIDExLCAyMywgMTMzLCA2LCAKLSAgICAyNTEsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2OCwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDIzLCAxMzMsIDYsIDI0MywgMjA5LCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2NywgMTEsIDIzLCAxMzMsIAotICAgIDYsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjM1LCAxNTAsIDExLCAyMywgMTMzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMTU2LCAxMSwgMjMsIDEzMywgNiwgMTk0LCAxMSwgMjMsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDIzLCAxMzMsIDYsIDc4LCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjI2LCAxMDksIDExLCAyMywgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjIyLCA5MywgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDEzMywgNiwgNjksIAotICAgIDExLCAyMywgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIAotICAgIDE3OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCAKLSAgICA2MSwgMTEsIDIzLCAxMzMsIDQsIDI1MywgMTY2LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDI0OSwgNjgsIDExLCAyMywgMTMzLCA0LCA3NiwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgMTQsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyNDMsIDIwOSwgMTEsIDIzLCAxMzMsIDQsIDI0MiwgNjcsIDExLCAyMywgMTMzLCA0LCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDIzNSwgMTUwLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAyOSwgMTEsIDIzLCAxMzMsIDQsIDE1NiwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDE5NCwgMTEsIDIzLCAxMzMsIDQsIDIzMCwgMzAsIDExLCAyMywgMTMzLCA0LCA3OCwgMTEsIDIzLCAxMzMsIDQsIDIyNiwgCi0gICAgMTA5LCAxMSwgMjMsIDEzMywgNCwgMjI0LCA5OSwgMTEsIDIzLCAxMzMsIDQsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDIyMiwgCi0gICAgOTMsIDExLCAyMywgMTMzLCA0LCAyMTcsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDY5LCAxMSwgMjMsIDEzMywgNCwgMjE0LCAKLSAgICAxMDUsIDExLCAyMywgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxNzgsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDIzLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDYsIDYxLCAxMSwgMzUsIDYsIDI1MywgMTY2LCAKLSAgICAxMSwgMzUsIDYsIDI1MSwgNzQsIDExLCAzNSwgNiwgMjQ5LCA2OCwgMTEsIDM1LCA2LCA3NiwgMTEsIDM1LCA2LCAyNDUsIAotICAgIDE0LCAxMSwgMzUsIDYsIDI0MywgMjA5LCAxMSwgMzUsIDYsIDI0MiwgNjcsIDExLCAzNSwgNiwgNzQsIDExLCAzNSwgNiwgCi0gICAgMjM1LCAxNTAsIDExLCAzNSwgNiwgMjM1LCAyOSwgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTk0LCAxMSwgMzUsIDYsIAotICAgIDIzMCwgMzAsIDExLCAzNSwgNiwgNzgsIDExLCAzNSwgNiwgMjI2LCAxMDksIDExLCAzNSwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICA2LCAxNTMsIDExLCAzNSwgNiwgMjIyLCA5MywgMTEsIDM1LCA2LCAyMTcsIDE1MywgMTEsIDM1LCA2LCA2OSwgMTEsIDM1LCAKLSAgICA2LCAyMTQsIDEwNSwgMTEsIDM1LCA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgCi0gICAgMTE3LCAxMSwgMzUsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTY2LCAxMSwgMzUsIDQsIAotICAgIDI1MSwgNzQsIDExLCAzNSwgNCwgMjQ5LCA2OCwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAyNDUsIDE0LCAxMSwgMzUsIAotICAgIDQsIDI0MywgMjA5LCAxMSwgMzUsIDQsIDI0MiwgNjcsIDExLCAzNSwgNCwgNzQsIDExLCAzNSwgNCwgMjM1LCAxNTAsIDExLCAKLSAgICAzNSwgNCwgMjM1LCAyOSwgMTEsIDM1LCA0LCAxNTYsIDExLCAzNSwgNCwgMTk0LCAxMSwgMzUsIDQsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgNCwgNzgsIDExLCAzNSwgNCwgMjI2LCAxMDksIDExLCAzNSwgNCwgMjI0LCA5OSwgMTEsIDM1LCA0LCAxNTMsIDExLCAKLSAgICAzNSwgNCwgMjIyLCA5MywgMTEsIDM1LCA0LCAyMTcsIDE1MywgMTEsIDM1LCA0LCA2OSwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgCi0gICAgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgMzUsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIAotICAgIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCA2MSwgMTEsIDM1LCAyMywgNiwgMjUzLCAxNjYsIDExLCAzNSwgMjMsIDYsIDI1MSwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDE0LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgNiwgMjQyLCA2NywgMTEsIDM1LCAyMywgNiwgNzQsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMzUsIDIzLCA2LCAxNTYsIDExLCAzNSwgCi0gICAgMjMsIDYsIDE5NCwgMTEsIDM1LCAyMywgNiwgMjMwLCAzMCwgMTEsIDM1LCAyMywgNiwgNzgsIDExLCAzNSwgMjMsIDYsIAotICAgIDIyNiwgMTA5LCAxMSwgMzUsIDIzLCA2LCAyMjQsIDk5LCAxMSwgMzUsIDIzLCA2LCAxNTMsIDExLCAzNSwgMjMsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDIzLCA2LCA2OSwgMTEsIDM1LCAyMywgNiwgMjE0LCAxMDUsIAotICAgIDExLCAzNSwgMjMsIDYsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDExNywgCi0gICAgMTEsIDM1LCAyMywgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDQsIDYxLCAxMSwgMzUsIDIzLCA0LCAyNTMsIDE2NiwgMTEsIAotICAgIDM1LCAyMywgNCwgMjUxLCA3NCwgMTEsIDM1LCAyMywgNCwgMjQ5LCA2OCwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgCi0gICAgMjMsIDQsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDQsIDI0MywgMjA5LCAxMSwgMzUsIDIzLCA0LCAyNDIsIDY3LCAxMSwgMzUsIAotICAgIDIzLCA0LCA3NCwgMTEsIDM1LCAyMywgNCwgMjM1LCAxNTAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgMTk0LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDMwLCAxMSwgMzUsIDIzLCA0LCA3OCwgCi0gICAgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDksIDExLCAzNSwgMjMsIDQsIDIyNCwgOTksIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDM1LCAyMywgNCwgMjIyLCA5MywgMTEsIDM1LCAyMywgNCwgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDQsIDY5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIAotICAgIDYsIDI1MywgMTY2LCAxMSwgMzUsIDMyLCA2LCAyNTEsIDc0LCAxMSwgMzUsIDMyLCA2LCAyNDksIDY4LCAxMSwgMzUsIDMyLCAKLSAgICA2LCA3NiwgMTEsIDM1LCAzMiwgNiwgMjQ1LCAxNCwgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDksIDExLCAzNSwgMzIsIDYsIAotICAgIDI0MiwgNjcsIDExLCAzNSwgMzIsIDYsIDc0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDM1LCAzMiwgNiwgMjM1LCAKLSAgICAyOSwgMTEsIDM1LCAzMiwgNiwgMTU2LCAxMSwgMzUsIDMyLCA2LCAxOTQsIDExLCAzNSwgMzIsIDYsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgMzIsIDYsIDc4LCAxMSwgMzUsIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCA2LCAyMjIsIDkzLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAzMiwgCi0gICAgNiwgNjksIDExLCAzNSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAKLSAgICAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzNSwgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMzIsIDQsIAotICAgIDI0OSwgNjgsIDExLCAzNSwgMzIsIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyNDUsIDE0LCAxMSwgMzUsIDMyLCA0LCAyNDMsIAotICAgIDIwOSwgMTEsIDM1LCAzMiwgNCwgMjQyLCA2NywgMTEsIDM1LCAzMiwgNCwgNzQsIDExLCAzNSwgMzIsIDQsIDIzNSwgMTUwLCAKLSAgICAxMSwgMzUsIDMyLCA0LCAyMzUsIDI5LCAxMSwgMzUsIDMyLCA0LCAxNTYsIDExLCAzNSwgMzIsIDQsIDE5NCwgMTEsIDM1LCAKLSAgICAzMiwgNCwgMjMwLCAzMCwgMTEsIDM1LCAzMiwgNCwgNzgsIDExLCAzNSwgMzIsIDQsIDIyNiwgMTA5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCAyMjQsIDk5LCAxMSwgMzUsIDMyLCA0LCAxNTMsIDExLCAzNSwgMzIsIDQsIDIyMiwgOTMsIDExLCAzNSwgMzIsIDQsIAotICAgIDIxNywgMTUzLCAxMSwgMzUsIDMyLCA0LCA2OSwgMTEsIDM1LCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIxMiwgCi0gICAgOTgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNCwgMjEwLCAKLSAgICAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCA2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MywgMTY2LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjUxLCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDMyLCA2LCA3NiwgMTEsIDM1LCAKLSAgICAyMywgMzIsIDYsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgCi0gICAgNjcsIDExLCAzNSwgMjMsIDMyLCA2LCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjM1LCAyOSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5NCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDYsIDIzMCwgMzAsIDExLCAzNSwgMjMsIDMyLCA2LCA3OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDY5LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAyNDksIDY4LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDE0LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzNSwgMjMsIDMyLCA0LCAyNDIsIDY3LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE1MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxOTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDMwLCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDEwOSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjIsIDkzLCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCA2OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA2LCA2MSwgMTEsIDIzMCwgMTQzLCA2LCAyNTMsIAotICAgIDE2NiwgMTEsIDIzMCwgMTQzLCA2LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgNzYsIDExLCAyMzAsIDE0MywgNiwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA2LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDYsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNiwgMTU2LCAxMSwgMjMwLCAxNDMsIDYsIDE5NCwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDYsIDc4LCAxMSwgMjMwLCAxNDMsIDYsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNiwgMTUzLCAxMSwgMjMwLCAxNDMsIDYsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNiwgNjksIDExLCAyMzAsIDE0MywgNiwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNiwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA2LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA0LCA2MSwgMTEsIDIzMCwgMTQzLCA0LCAyNTMsIDE2NiwgCi0gICAgMTEsIDIzMCwgMTQzLCA0LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNCwgNzYsIAotICAgIDExLCAyMzAsIDE0MywgNCwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA0LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDQsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNCwgMTU2LCAxMSwgMjMwLCAxNDMsIDQsIDE5NCwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDQsIDc4LCAxMSwgMjMwLCAxNDMsIDQsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNCwgMTUzLCAxMSwgMjMwLCAxNDMsIDQsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNCwgNjksIDExLCAyMzAsIDE0MywgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNCwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDEyNywgNzQsIDExLCAzMiwgNCwgMjQ3LCAxMjcsIDIzNSwgCi0gICAgMTUwLCAxMSwgMjMsIDYsIDI1NCwgMTUxLCAxMSwgMjMsIDYsIDI1MiwgMzQsIDExLCAyMywgNiwgMjQzLCAxMTQsIDExLCAKLSAgICAyMywgNiwgMjQ4LCA2MiwgMTEsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgCi0gICAgNzEsIDExLCAyMywgNiwgMjE2LCAxODAsIDExLCAyMywgNiwgMjM1LCAxOTIsIDExLCAyMywgNiwgMjM0LCAyMjgsIDExLCAKLSAgICAyMywgNiwgMjMzLCAxMDQsIDExLCAyMywgNiwgMjMwLCAxMDcsIDExLCAyMywgNiwgMjI3LCAyNDIsIDExLCAyMywgNiwgCi0gICAgMjExLCAxNTcsIDExLCAyMywgNiwgMjI2LCAyMDMsIDExLCAyMywgNiwgMjI1LCAxMTEsIDExLCAyMywgNiwgMjIzLCA0MCwgCi0gICAgMTEsIDIzLCA2LCAyMTYsIDE4MSwgODcsIDExLCAyMywgNiwgMjE5LCAxNzksIDExLCAyMywgNiwgMjE3LCA0MiwgMTEsIDIzLCAKLSAgICA2LCAyMTQsIDE1NywgMTEsIDIzLCA2LCAyMjUsIDEzNiwgMTEsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDIzLCA2LCAyMjQsIAotICAgIDE2NCwgMTEsIDIzLCA2LCAyMjYsIDIwNSwgMTEsIDIzLCAyMjksIDIyNiwgMTEsIDIzLCA0LCAyNTQsIDE1MSwgMTEsIDIzLCAKLSAgICA0LCAyNTIsIDM0LCAxMSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMjMsIDQsIDI0OCwgNjIsIDExLCAyMywgNCwgMjQ1LCAxMDgsIAotICAgIDExLCAyMywgNCwgMjEwLCA4NSwgMTEsIDIzLCA0LCAyNDUsIDcxLCAxMSwgMjMsIDQsIDIxNiwgMTgwLCAxMSwgMjMsIDQsIAotICAgIDIzNSwgMTkyLCAxMSwgMjMsIDQsIDIzNCwgMjI4LCAxMSwgMjMsIDQsIDIzMywgMTA0LCAxMSwgMjMsIDQsIDIzMCwgMTA3LCAKLSAgICAxMSwgMjMsIDQsIDIyNywgMjQyLCAxMSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMjMsIDQsIAotICAgIDIyNSwgMTExLCAxMSwgMjMsIDQsIDIyMywgNDAsIDExLCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMjMsIDQsIDIxOSwgCi0gICAgMTc5LCAxMSwgMjMsIDQsIDIxNywgNDIsIDExLCAyMywgNCwgMjE0LCAxNTcsIDExLCAyMywgNCwgMjI1LCAxMzYsIDExLCAKLSAgICAyMywgNCwgMjUwLCAxMTgsIDExLCAyMywgNCwgMjI0LCAxNjQsIDExLCAyMywgNCwgMjI2LCAyMDUsIDExLCAyMywgMjI2LCAKLSAgICAxLCAyNDcsIDI0MSwgMTEsIDIzLCAyNDUsIDEwOSwgODcsIDExLCAyMywgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDIzNCwgCi0gICAgMjI5LCA4NywgMTEsIDIzLCAyMjUsIDEzNywgODcsIDExLCAyMywgMjIzLCA0MSwgODcsIDExLCAyMywgMjI1LCAxMTIsIDg3LCAKLSAgICAxMSwgMzIsIDYsIDI1NCwgMTUxLCAxMSwgMzIsIDYsIDI1MiwgMzQsIDExLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAzMiwgNiwgCi0gICAgMjQ4LCA2MiwgMTEsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNzEsIDExLCAKLSAgICAzMiwgNiwgMjE2LCAxODAsIDExLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAzMiwgNiwgMjM0LCAyMjgsIDExLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAzMiwgNiwgMjI3LCAyNDIsIDExLCAzMiwgNiwgMjExLCAxNTcsIAotICAgIDExLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAzMiwgNiwgMjI1LCAxMTEsIDExLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDMyLCA2LCAKLSAgICAyMTYsIDE4MSwgODcsIDExLCAzMiwgNiwgMjE5LCAxNzksIDExLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDMyLCA2LCAyMTQsIAotICAgIDE1NywgMTEsIDMyLCA2LCAyMjUsIDEzNiwgMTEsIDMyLCA2LCAyNTAsIDExOCwgMTEsIDMyLCA2LCAyMjQsIDE2NCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDIwNSwgMTEsIDMyLCAyMjksIDIyNiwgMTEsIDMyLCA0LCAyNTQsIDE1MSwgMTEsIDMyLCA0LCAyNTIsIAotICAgIDM0LCAxMSwgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzIsIDQsIDI0OCwgNjIsIDExLCAzMiwgNCwgMjQ1LCAxMDgsIDExLCAzMiwgCi0gICAgNCwgMjEwLCA4NSwgMTEsIDMyLCA0LCAyNDUsIDcxLCAxMSwgMzIsIDQsIDIxNiwgMTgwLCAxMSwgMzIsIDQsIDIzNSwgMTkyLCAKLSAgICAxMSwgMzIsIDQsIDIzNCwgMjI4LCAxMSwgMzIsIDQsIDIzMywgMTA0LCAxMSwgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzIsIDQsIDIyNiwgMjAzLCAxMSwgMzIsIDQsIDIyNSwgMTExLCAKLSAgICAxMSwgMzIsIDQsIDIyMywgNDAsIDExLCAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMzIsIAotICAgIDQsIDIxNywgNDIsIDExLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzMiwgNCwgMjI1LCAxMzYsIDExLCAzMiwgNCwgMjUwLCAKLSAgICAxMTgsIDExLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAzMiwgMjI2LCAxLCAyNDcsIDI0MSwgCi0gICAgMTEsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMzIsIDIzNCwgMjI5LCA4NywgMTEsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzMiwgMjIzLCA0MSwgODcsIDExLCAzMiwgMjI1LCAxMTIsIDg3LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNTQsIDE1MSwgMTEsIDIzLCAzMiwgNiwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDYsIAotICAgIDI0OCwgNjIsIDExLCAyMywgMzIsIDYsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNDUsIDcxLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDYsIAotICAgIDIzNCwgMjI4LCAxMSwgMjMsIDMyLCA2LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAyMywgMzIsIAotICAgIDYsIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAyMywgCi0gICAgMzIsIDYsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA2LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MSwgODcsIDExLCAKLSAgICAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA2LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIAotICAgIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDYsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2NCwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyOSwgMjI2LCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE1MSwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNCwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDQsIDI0OCwgNjIsIAotICAgIDExLCAyMywgMzIsIDQsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDcxLCAKLSAgICAxMSwgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDQsIDIzNCwgCi0gICAgMjI4LCAxMSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNCwgMjMwLCAxMDcsIDExLCAyMywgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNCwgMjI2LCAyMDMsIDExLCAyMywgMzIsIAotICAgIDQsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzksIDExLCAyMywgCi0gICAgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA0LCAyMjQsIDE2NCwgMTEsIAotICAgIDIzLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAyMywgMzIsIDI0NSwgMTA5LCAKLSAgICA4NywgMTEsIDIzLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAyMywgMzIsIDIyNSwgCi0gICAgMTM3LCA4NywgMTEsIDIzLCAzMiwgMjIzLCA0MSwgODcsIDExLCAyMywgMzIsIDIyNSwgMTEyLCA4NywgMTEsIDM1LCAyMywgCi0gICAgNiwgMjU0LCAxNTEsIDExLCAzNSwgMjMsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDYsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyNDgsIDYyLCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgCi0gICAgNiwgMjQ1LCA3MSwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDYsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyMzQsIDIyOCwgMTEsIDM1LCAyMywgNiwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDYsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCA2LCAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjAzLCAxMSwgCi0gICAgMzUsIDIzLCA2LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODEsIDg3LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIAotICAgIDExLCAzNSwgMjMsIDYsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNiwgMjI0LCAKLSAgICAxNjQsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjksIDIyNiwgMTEsIDM1LCAyMywgNCwgMjU0LCAKLSAgICAxNTEsIDExLCAzNSwgMjMsIDQsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCA0LCAyNDgsIAotICAgIDYyLCAxMSwgMzUsIDIzLCA0LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCAKLSAgICA3MSwgMTEsIDM1LCAyMywgNCwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCA0LCAyMzQsIAotICAgIDIyOCwgMTEsIDM1LCAyMywgNCwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIDIzLCA0LCAKLSAgICAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMzUsIDIzLCAKLSAgICA0LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNCwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNCwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNCwgMjE0LCAxNTcsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA0LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNCwgMjI0LCAxNjQsIDExLCAKLSAgICAzNSwgMjMsIDQsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjYsIDEsIDI0NywgMjQxLCAxMSwgMzUsIDIzLCAyNDUsIDEwOSwgCi0gICAgODcsIDExLCAzNSwgMjMsIDIxNiwgMTgxLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjksIDg3LCAxMSwgMzUsIDIzLCAyMjUsIAotICAgIDEzNywgODcsIDExLCAzNSwgMjMsIDIyMywgNDEsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDExMiwgODcsIDExLCAzNSwgMjMsIAotICAgIDMyLCA2LCAyNTQsIDE1MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDExNCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDI0OCwgNjIsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDcxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMzUsIDE5MiwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjI4LCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwNywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjQyLCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMywgMTEsIDM1LCAyMywgMzIsIDYsIAotICAgIDIyNSwgMTExLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgxLCA4NywgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTAsIDExOCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgMTY0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjksIDIyNiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTUxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIAotICAgIDM1LCAyMywgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCA2MiwgMTEsIDM1LCAyMywgMzIsIDQsIAotICAgIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNzEsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAKLSAgICAyMjgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgMjI3LCAyNDIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgCi0gICAgMjAzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE5LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIAotICAgIDQyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEzNiwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIAotICAgIDIwNSwgMTEsIDM1LCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAKLSAgICAzNSwgMjMsIDMyLCAyMTYsIDE4MSwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDQxLCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTEyLCA4NywgCi0gICAgMTEsIDIzLCA2LCAyNDcsIDIzNSwgMTEsIDIzLCA0LCAyNDcsIDIzNSwgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAKLSAgICAyMSwgMTExLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAKLSAgICAxOTAsIDExLCAyMywgMjEsIDE5NSwgMTEsIDIzLCAyMSwgMTk5LCAxMSwgMjMsIDIxLCAxOTYsIDExLCAyMywgMjEsIDIwMSwgCi0gICAgMTEsIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTEsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAKLSAgICAxNTgsIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxOTAsIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAKLSAgICAxOTksIDExLCAxMzksIDIxLCAxOTYsIDExLCAxMzksIDIxLCAyMDEsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIAotICAgIDExMSwgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTkwLCAKLSAgICAxMSwgMzUsIDIxLCAxOTUsIDExLCAzNSwgMjEsIDE5OSwgMTEsIDM1LCAyMSwgMTk2LCAxMSwgMzUsIDIxLCAyMDEsIDExLCAKLSAgICAzNSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTExLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIAotICAgIDIzLCAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTkwLCAxMSwgMzUsIDIzLCAyMSwgCi0gICAgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMTk5LCAxMSwgMzUsIDIzLCAyMSwgMTk2LCAxMSwgMzUsIDIzLCAyMSwgMjAxLCAxMSwgCi0gICAgMjMwLCAxNDMsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxNDMsIDIxLCAxMTEsIDExLCAyMzAsIDE0MywgMjEsIDEwNSwgMTEsIAotICAgIDIzMCwgMTQzLCAyMSwgMTU4LCAxMSwgMjMwLCAxNDMsIDIxLCAxNjEsIDExLCAyMzAsIDE0MywgMjEsIDE5MCwgMTEsIDIzMCwgCi0gICAgMTQzLCAyMSwgMTk1LCAxMSwgMjMwLCAxNDMsIDIxLCAxOTksIDExLCAyMzAsIDE0MywgMjEsIDE5NiwgMTEsIDIzMCwgMTQzLCAKLSAgICAyMSwgMjAxLCA5LCAxMSwgMjU0LCAxNzksIDksIDExLCAyNTIsIDYyLCA5LCAxMSwgMjM1LCAxMjksIDksIDExLCAyNDgsIAotICAgIDIwMywgOSwgMTEsIDIxMiwgMzAsIDksIDExLCAyMTAsIDEwOCwgOSwgMTEsIDI0MiwgNDQsIDksIDExLCAyMTcsIDgxLCA5LCAKLSAgICAxMSwgMjExLCA0MywgOSwgMTEsIDIzNSwgMCwgOSwgMTEsIDIzMywgMTA4LCA5LCAxMSwgMjMxLCA4MywgOSwgMTEsIDIyOCwgCi0gICAgNjcsIDksIDExLCAyMjEsIDE2OCwgOSwgMTEsIDI1NCwgMjA1LCA5LCAxMSwgMjQ0LCAxNTAsIDksIDExLCAyMjIsIDI4LCA5LCAKLSAgICAxMSwgMjI0LCA4NCwgOSwgMTEsIDIyMywgOTgsIDksIDExLCAyMjAsIDYxLCA5LCAxMSwgMjE3LCA4LCA5LCAxMSwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMzQsIDEzNSwgOSwgMTEsIDIxNiwgMjAzLCA5LCAxMSwgMjQ4LCAyMjQsIDksIDExLCAyMTAsIDExMSwgCi0gICAgOSwgMTEsIDI0MiwgMjUxLCA5LCAxMSwgMjQ3LCAxMjcsIDI1MiwgNjIsIDksIDExLCAyNDcsIDEyNywgMjI4LCA2NywgOSwgCi0gICAgMTEsIDI0NywgMTI3LCAyNDQsIDE1MCwgOSwgMTEsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDI1MiwgNjIsIDksIAotICAgIDExLCA2NSwgMjM1LCAxMjksIDksIDExLCA2NSwgMjQxLCAyMjUsIDksIDExLCA2NSwgMjQyLCA0NCwgOSwgMTEsIDY1LCAKLSAgICAyMTEsIDQzLCA5LCAxMSwgNjUsIDIzNSwgMCwgOSwgMTEsIDY1LCAyMzMsIDEwOCwgOSwgMTEsIDY1LCAyMzEsIDgzLCA5LCAKLSAgICAxMSwgNjUsIDIyOCwgNjcsIDksIDExLCA2NSwgMjIxLCAxNjgsIDksIDExLCA2NSwgMjU0LCAyMDUsIDksIDExLCA2NSwgCi0gICAgMjQ0LCAxNTAsIDksIDExLCA2NSwgMjIyLCAyOCwgOSwgMTEsIDY1LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDIyMCwgNjEsIDksIAotICAgIDExLCA2NSwgMjE3LCA4LCA5LCAxMSwgNjUsIDIxNiwgMTkzLCA5LCAxMSwgNjUsIDIzNCwgMTM1LCA5LCAxMSwgNjUsIDI0OCwgCi0gICAgMjI0LCA5LCAxMSwgNjUsIDI0MiwgMjUxLCA5LCAxMSwgMjE3LCA3NywgMjM1LCAxMjksIDksIDExLCAyMTcsIDc3LCAyNDIsIAotICAgIDQ0LCA5LCAxMSwgMjE3LCA3NywgMjExLCA0MywgOSwgMTEsIDIxNywgNzcsIDIzMywgMTA4LCA5LCAxMSwgMjE3LCA3NywgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDIyMSwgMTY4LCA5LCAxMSwgMjE3LCA3NywgMjU0LCAyMDUsIDksIDExLCAyMTcsIAotICAgIDc3LCAyMjIsIDI4LCA5LCAxMSwgMjE3LCA3NywgMjI0LCA4NCwgOSwgMTEsIDIxNywgNzcsIDIyMCwgNjEsIDksIDExLCAKLSAgICAyMTcsIDc3LCAyMzQsIDEzNSwgOSwgMTEsIDIxNywgNzcsIDI0OCwgMjI0LCA5LCAxMSwgMjE3LCA3NywgMjQyLCAyNTEsIDksIAotICAgIDExLCAyMTcsIDc3LCAyNDcsIDEyNywgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgCi0gICAgMjE4LCAxMTIsIDI1MiwgNjIsIDksIDExLCAyMTgsIDExMiwgMjM1LCAxMjksIDksIDExLCAyMTgsIDExMiwgMjQxLCAyMjUsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjQyLCA0NCwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgxLCA5LCAxMSwgMjE4LCAxMTIsIDIxMSwgCi0gICAgNDMsIDksIDExLCAyMTgsIDExMiwgMjM1LCAwLCA5LCAxMSwgMjE4LCAxMTIsIDIzMSwgODMsIDksIDExLCAyMTgsIDExMiwgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxOCwgMTEyLCAyMjEsIDE2OCwgOSwgMTEsIDIxOCwgMTEyLCAyNTQsIDIwNSwgOSwgMTEsIAotICAgIDIxOCwgMTEyLCAyNDQsIDE1MCwgOSwgMTEsIDIxOCwgMTEyLCAyMjIsIDI4LCA5LCAxMSwgMjE4LCAxMTIsIDIyNCwgODQsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjIwLCA2MSwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgsIDksIDExLCAyMTgsIDExMiwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMTgsIDExMiwgMjM0LCAxMzUsIDksIDExLCAyMTgsIDExMiwgMjQ4LCAyMjQsIDksIDExLCAyMTgsIAotICAgIDExMiwgMjEwLCAxMTEsIDksIDExLCAyMTgsIDExMiwgMjQyLCAyNTEsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI1MiwgCi0gICAgNjIsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxMSwgMjMyLCAxMjgsIDI1NCwgMTc5LCA5LCAKLSAgICAxMSwgMjMyLCAxMjgsIDI1MiwgNjIsIDksIDExLCAyMzIsIDEyOCwgMjM1LCAxMjksIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAKLSAgICAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQxLCAyMjUsIDksIDExLCAyMzIsIDEyOCwgMjEyLCAzMCwgOSwgMTEsIDIzMiwgCi0gICAgMTI4LCAyMTAsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyNDIsIDQ0LCA5LCAxMSwgMjMyLCAxMjgsIDIxNywgODEsIDksIDExLCAKLSAgICAyMzIsIDEyOCwgMjExLCA0MywgOSwgMTEsIDIzMiwgMTI4LCAyMzMsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyMzEsIDgzLCAKLSAgICA5LCAxMSwgMjMyLCAxMjgsIDIyOCwgNjcsIDksIDExLCAyMzIsIDEyOCwgMjIxLCAxNjgsIDksIDExLCAyMzIsIDEyOCwgCi0gICAgMjU0LCAyMDUsIDksIDExLCAyMzIsIDEyOCwgMjQ0LCAxNTAsIDksIDExLCAyMzIsIDEyOCwgMjIyLCAyOCwgOSwgMTEsIAotICAgIDIzMiwgMTI4LCAyMjQsIDg0LCA5LCAxMSwgMjMyLCAxMjgsIDIyMywgOTgsIDksIDExLCAyMzIsIDEyOCwgMjIwLCA2MSwgOSwgCi0gICAgMTEsIDIzMiwgMTI4LCAyMTcsIDgsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAxOTMsIDksIDExLCAyMzIsIDEyOCwgMjM0LCAKLSAgICAxMzUsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAyMjQsIDksIDExLCAyMzIsIAotICAgIDEyOCwgMjEwLCAxMTEsIDksIDExLCAyMzIsIDEyOCwgMjQyLCAyNTEsIDksIDExLCAxMzksIDI1MiwgNjIsIDksIDExLCAKLSAgICAxMzksIDIzNSwgMTI5LCA5LCAxMSwgMTM5LCAyNDgsIDIwMywgOSwgMTEsIDEzOSwgMjEyLCAzMCwgOSwgMTEsIDEzOSwgCi0gICAgMjEwLCAxMDgsIDksIDExLCAxMzksIDI0MiwgNDQsIDksIDExLCAxMzksIDIxNywgODEsIDksIDExLCAxMzksIDIxMSwgNDMsIAotICAgIDksIDExLCAxMzksIDIzMywgMTA4LCA5LCAxMSwgMTM5LCAyMzEsIDgzLCA5LCAxMSwgMTM5LCAyMjgsIDY3LCA5LCAxMSwgCi0gICAgMTM5LCAyMjEsIDE2OCwgOSwgMTEsIDEzOSwgMjU0LCAyMDUsIDksIDExLCAxMzksIDI0NCwgMTUwLCA5LCAxMSwgMTM5LCAKLSAgICAyMjIsIDI4LCA5LCAxMSwgMTM5LCAyMjQsIDg0LCA5LCAxMSwgMTM5LCAyMjMsIDk4LCA5LCAxMSwgMTM5LCAyMjAsIDYxLCAKLSAgICA5LCAxMSwgMTM5LCAyMTcsIDgsIDksIDExLCAxMzksIDIxNiwgMTkzLCA5LCAxMSwgMTM5LCAyMzQsIDEzNSwgOSwgMTEsIAotICAgIDEzOSwgMjE2LCAyMDMsIDksIDExLCAxMzksIDI0OCwgMjI0LCA5LCAxMSwgMTM5LCAyMTAsIDExMSwgOSwgMTEsIDEzOSwgCi0gICAgMjQyLCAyNTEsIDksIDExLCAyMjYsIDE3MiwgNjYsIDIsIDEyMiwgMiwgMjE3LCA0NCwgOSwgMTEsIDIyNiwgMTcyLCAxMjIsIAotICAgIDIsIDI0OCwgMjAzLCAyMzEsIDIxMCwgODYsIDI0NSwgMjI4LCAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTksIDMwLCAKLSAgICAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIxMCwgODYsIDIyOCwgNjEsIDIxMSwgCi0gICAgMjM5LCAyMzEsIDIxMCwgODYsIDIyMywgMTE0LCAyNDYsIDEwNCwgMjMxLCAyMTAsIDg2LCAyNDIsIDEzNCwgMjQ2LCAxMDQsIAotICAgIDIzMSwgMjEwLCA4NiwgNzEsIDI0NiwgMTA0LCAyMzEsIDIxMCwgODYsIDEyMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDExMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIAotICAgIDI0NCwgMTksIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyNDQsIDg5LCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyMjAsIDEyNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDI0NSwgMjAxLCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDE0OSwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMjMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAxMTMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIAotICAgIDg2LCAxMzQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDQsIDE5LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCA4OSwgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDIxOSwgMTI3LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCAKLSAgICA4NiwgMjIwLCAxMjQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDUsIDIwMSwgNjQsIDI1MiwgMTYxLCAyMzEsIAotICAgIDIxMCwgODYsIDIyOCwgMjA1LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgMTIzLCA2NCwgMjUwLCA0MiwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMTMsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCAxOSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjQ0LCA4OSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDIyMCwgMTI0LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNDUsIDIwMSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIAotICAgIDIyNSwgMjgsIDIzMSwgMjEwLCA4NiwgMjI2LCAxNjAsIDIzMSwgMjEwLCA4NiwgMjUyLCAxNjIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUwLCA3OCwgMjMxLCAyMTAsIDg2LCAyMTgsIDI0MSwgMjMxLCAyMTAsIDg2LCAyMTgsIDQwLCAyMzEsIDIxMCwgODYsIAotICAgIDI1MywgMTg3LCAyMzEsIDIxMCwgODYsIDIxMSwgMjMyLCAyMzEsIDIxMCwgODYsIDIzNSwgNjgsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUyLCAxOTIsIDEzMSwgODYsIDIwMywgMjUyLCAxOTIsIDEzMSwgODYsIDI0MSwgNTAsIDEzMSwgODYsIDI0MSwgNDksIAotICAgIDEzMSwgODYsIDI0MSwgNDgsIDEzMSwgODYsIDI0MSwgNDcsIDEzMSwgODYsIDI0MSwgNDYsIDEzMSwgODYsIDI0MSwgNDUsIAotICAgIDEzMSwgODYsIDI0MSwgNDQsIDEzMSwgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIAotICAgIDEzMSwgODYsIDI0MSwgNDAsIDEzMSwgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIAotICAgIDEzMSwgODYsIDI0MSwgMzYsIDEzMSwgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIAotICAgIDEzMSwgODYsIDI0MSwgMzIsIDEzMSwgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIAotICAgIDEzMSwgODYsIDI0MSwgMjgsIDEzMSwgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIAotICAgIDEzMSwgODYsIDI0MSwgMjQsIDEzMSwgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIAotICAgIDEzMSwgODYsIDI0MSwgMjAsIDEzMSwgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIAotICAgIDEzMSwgODYsIDI0MSwgMTYsIDEzMSwgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIAotICAgIDEzMSwgODYsIDI0MSwgMTIsIDEzMSwgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgCi0gICAgMTMxLCA4NiwgMjQxLCA4LCAxMzEsIDg2LCAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIAotICAgIDg2LCAyNDEsIDQsIDEzMSwgODYsIDI0MSwgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCA2NywgMjUyLCAxOTIsIDEzMSwgCi0gICAgODYsIDIxMywgMjM4LCAxMzEsIDg2LCAyMTMsIDIzNywgMTMxLCA4NiwgMjEzLCAyMzYsIDEzMSwgODYsIDIxMywgMjM1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIzNCwgMTMxLCA4NiwgMjEzLCAyMzMsIDEzMSwgODYsIDIxMywgMjMyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIzMSwgMTMxLCA4NiwgMjEzLCAyMzAsIDEzMSwgODYsIDIxMywgMjI5LCAxMzEsIDg2LCAyMTMsIDIyOCwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMjcsIDEzMSwgODYsIDIxMywgMjI2LCAxMzEsIDg2LCAyMTMsIDIyNSwgMTMxLCA4NiwgMjEzLCAyMjQsIDEzMSwgCi0gICAgODYsIDIxMywgMjIzLCAxMzEsIDg2LCAyMTMsIDIyMiwgMTMxLCA4NiwgMjEzLCAyMjEsIDEzMSwgODYsIDIxMywgMjIwLCAKLSAgICAxMzEsIDg2LCAyMTMsIDIxOSwgMTMxLCA4NiwgMjEzLCAyMTgsIDEzMSwgODYsIDIxMywgMjE3LCAxMzEsIDg2LCAyMTMsIAotICAgIDIxNiwgMTMxLCA4NiwgMjEzLCAyMTUsIDEzMSwgODYsIDIxMywgMjE0LCAxMzEsIDg2LCAyMTMsIDIxMywgMTMxLCA4NiwgCi0gICAgMjEzLCAyMTIsIDEzMSwgODYsIDIxMywgMjExLCAxMzEsIDg2LCAyMTMsIDIxMCwgMTMxLCA4NiwgMjEzLCAyMDksIDEzMSwgCi0gICAgODYsIDIxMywgMjA4LCAxMzEsIDg2LCAyMTMsIDIwNywgMTMxLCA4NiwgMjEzLCAyMDYsIDEzMSwgODYsIDIxMywgMjA1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIwNCwgMTMxLCA4NiwgMjEzLCAyMDMsIDEzMSwgODYsIDIxMywgMjAyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIwMSwgMTMxLCA4NiwgMjEzLCAyMDAsIDEzMSwgODYsIDIxMywgMTk5LCAxMzEsIDg2LCAyMTMsIDE5OCwgMTMxLCA4NiwgCi0gICAgMjEzLCAxOTcsIDEzMSwgODYsIDIxMywgMTk2LCAxMzEsIDg2LCAyMTMsIDE5NSwgMTMxLCA4NiwgMjEzLCAxOTQsIDEzMSwgCi0gICAgODYsIDIxMywgMTkzLCAxMzEsIDg2LCAyMTMsIDE5MiwgMTMxLCA4NiwgMjEzLCAxOTEsIDEzMSwgODYsIDIxMywgMTkwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjUyLCAxOTIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjE5LCAxNywgCi0gICAgMjI1LCAzNiwgMjUwLCAyNTEsIDExMywgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAxMzQsIDY0LCAyMTksIDE3LCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgCi0gICAgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxOSwgMTI3LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIAotICAgIDIyMCwgMTI0LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyOCwgMjA1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjE5LCAKLSAgICAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNCwgMzcsIAotICAgIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAyMzQsIDg1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDExMywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMTM0LCA2NCwgMjQxLCAyMzIsIDIyNSwgCi0gICAgMzYsIDI1MCwgMjUxLCAyNDQsIDE5LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgMjQxLCAKLSAgICAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTksIDEyNywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjIwLCAKLSAgICAxMjQsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIAotICAgIDI1MCwgMjUxLCAyMjgsIDIwNSwgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAyNDksIDY0LCAyNDEsIAotICAgIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzQsIAotICAgIDM3LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyMzQsIDg1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ3LCAyNTUsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAxMTMsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAKLSAgICA4OSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyMCwgMTI0LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgCi0gICAgMjQ5LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMjM0LCAzNywgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCA4NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgODUsIAotICAgIDIzNSwgNjgsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAxMTMsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjQ0LCAxOSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCA4OSwgNjQsIDI0OSwgMjUwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIyMCwgMTI0LCAKLSAgICA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjQ5LCAyNTAsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCAzNywgCi0gICAgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjM0LCA4NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgNzEsIDIzNSwgNjgsIDIxLCAyMTAsIDg3LCAKLSAgICAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTAsIDg3LCAyNDksIDIyNywgMjEsIDEyMywgMjQ5LCAyMjcsIDIxLCAxMTMsIAotICAgIDI0OSwgMjI3LCAyMSwgMTM0LCAyNDksIDIyNywgMjEsIDI0NCwgMTksIDI0OSwgMjI3LCAyMSwgMjQ0LCA4OSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMTksIDEyNywgMjQ5LCAyMjcsIDIxLCAyMjAsIDEyNCwgMjQ5LCAyMjcsIDIxLCAyNDUsIDIwMSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMjgsIDIwNSwgMjQ5LCAyMjcsIDg4LCA3LCA2LCAxLCA2MSwgODgsIDcsIDYsIDEsIDI1MywgMTY2LCA4OCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NCwgODgsIDcsIDYsIDEsIDI0OSwgNjgsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIDYsIDEsIAotICAgIDI0NSwgMTQsIDg4LCA3LCA2LCAxLCAyNDMsIDIwOSwgODgsIDcsIDYsIDEsIDI0MiwgNjcsIDg4LCA3LCA2LCAxLCA3NCwgCi0gICAgODgsIDcsIDYsIDEsIDIzNSwgMTUwLCA4OCwgNywgNiwgMSwgMjM1LCAyOSwgODgsIDcsIDYsIDEsIDE1NiwgODgsIDcsIDYsIAotICAgIDEsIDE5NCwgODgsIDcsIDYsIDEsIDIzMCwgMzAsIDg4LCA3LCA2LCAxLCA3OCwgODgsIDcsIDYsIDEsIDIyNiwgMTA5LCA4OCwgCi0gICAgNywgNiwgMSwgMjI0LCA5OSwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgOTMsIDg4LCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1MywgODgsIDcsIDYsIDEsIDY5LCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCA2LCAxLCAyMTIsIDk4LCAKLSAgICA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgMzIsIDcsIDYsIDEsIDI1MSwgNzQsIDM3LCAzMiwgCi0gICAgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTksIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIDYxLCA5MiwgNywgNiwgMSwgCi0gICAgMjUzLCAxNjYsIDkyLCA3LCA2LCAxLCAyNTEsIDc0LCA5MiwgNywgNiwgMSwgMjQ5LCA2OCwgOTIsIDcsIDYsIDEsIDc2LCAKLSAgICA5MiwgNywgNiwgMSwgMjQ1LCAxNCwgOTIsIDcsIDYsIDEsIDI0MywgMjA5LCA5MiwgNywgNiwgMSwgMjQyLCA2NywgOTIsIDcsIAotICAgIDYsIDEsIDc0LCA5MiwgNywgNiwgMSwgMjM1LCAxNTAsIDkyLCA3LCA2LCAxLCAyMzUsIDI5LCA5MiwgNywgNiwgMSwgMTU2LCAKLSAgICA5MiwgNywgNiwgMSwgMTk0LCA5MiwgNywgNiwgMSwgMjMwLCAzMCwgOTIsIDcsIDYsIDEsIDc4LCA5MiwgNywgNiwgMSwgCi0gICAgMjI2LCAxMDksIDkyLCA3LCA2LCAxLCAyMjQsIDk5LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgNiwgMSwgMjIyLCA5MywgCi0gICAgOTIsIDcsIDYsIDEsIDIxNywgMTUzLCA5MiwgNywgNiwgMSwgNjksIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgOTIsIDcsIDYsIAotICAgIDEsIDIxMiwgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCA5MiwgNywgNiwgMSwgCi0gICAgMjEwLCAxNTksIDkyLCAyNDAsIDIwOCwgOTIsIDIzMCwgNTQsIDkyLCAyMjEsIDE4NSwgOTIsIDIxOCwgMjI4LCA5MiwgMjI0LCAKLSAgICAyMjEsIDkyLCAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgMjUzLCAxNjYsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjgsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAKLSAgICAxNTIsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTUyLCAzNywgNywgNiwgMSwgCi0gICAgMjQyLCA2NywgMTUyLCAzNywgNywgNiwgMSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMTUwLCAxNTIsIDM3LCA3LCA2LCAKLSAgICAxLCAyMzUsIDI5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE5NCwgMTUyLCAzNywgNywgNiwgCi0gICAgMSwgMjMwLCAzMCwgMTUyLCAzNywgNywgNiwgMSwgNzgsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNiwgMTA5LCAxNTIsIDM3LCA3LCAKLSAgICA2LCAxLCAyMjQsIDk5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIDIyMiwgOTMsIDE1MiwgMzcsIAotICAgIDcsIDYsIDEsIDIxNywgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCA2OSwgMTUyLCAzNywgNywgNiwgMSwgMjE0LCAxMDUsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIAotICAgIDExNywgMTUyLCAzNywgNywgNiwgMSwgMjEwLCAxNTksIDIyMywgMTYwLCAyMzEsIDEwMiwgNTAsIDIyMywgMTYwLCAyMzEsIAotICAgIDk5LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTY2LCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyNTEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDY4LCAxNTIsIDkyLCA3LCA2LCAxLCA3NiwgMTUyLCA5MiwgNywgCi0gICAgNiwgMSwgMjQ1LCAxNCwgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDksIDE1MiwgOTIsIDcsIDYsIDEsIDI0MiwgNjcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE1MCwgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAKLSAgICAyOSwgMTUyLCA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTQsIDE1MiwgOTIsIDcsIDYsIDEsIDIzMCwgCi0gICAgMzAsIDE1MiwgOTIsIDcsIDYsIDEsIDc4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwOSwgMTUyLCA5MiwgNywgNiwgMSwgCi0gICAgMjI0LCA5OSwgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkzLCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyMTcsIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgNjksIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAxNTIsIDkyLCAKLSAgICA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEzNiwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDksIDE1MiwgCi0gICAgOTIsIDI0MCwgMTIwLCAxNTIsIDkyLCAxOTEsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAzNCwgMTUyLCA5MiwgMjEyLCAKLSAgICAyMywgNDIsIDI0NywgMTcyLCA5MiwgMjUwLCAzMSwgOTIsIDI0OSwgMTc4LCA5MiwgMjQ0LCA0LCA5MiwgMjQwLCAxMTIsIAotICAgIDkyLCAyMjksIDkxLCA5MiwgMjI5LCA4NCwgOTIsIDIyNiwgMjE4LCA5MiwgMjE5LCAzNywgOTIsIDEyMCwgMiwgMjQ1LCAzOSwgCi0gICAgNzksIDkyLCAyMTMsIDExOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgNjEsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIAotICAgIDEsIDI1MywgMTY2LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyNTEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAKLSAgICAxLCAyNDksIDY4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCA3NiwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgCi0gICAgMjQ1LCAxNCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjQzLCAyMDksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIAotICAgIDI0MiwgNjcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMzUsIAotICAgIDE1MCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjM1LCAyOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTU2LCAKLSAgICAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAxOTQsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIzMCwgMzAsIDIyMywgCi0gICAgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMjYsIDEwOSwgMjIzLCAxMDYsIAotICAgIDIzNSwgMjQ2LCAxNiwgMSwgMjI0LCA5OSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTUzLCAyMjMsIDEwNiwgMjM1LCAKLSAgICAyNDYsIDE2LCAxLCAyMjIsIDkzLCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTcsIDE1MywgMjIzLCAxMDYsIDIzNSwgCi0gICAgMjQ2LCAxNiwgMSwgNjksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxNCwgMTA1LCAyMjMsIDEwNiwgMjM1LCAyNDYsIAotICAgIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTEsIDE3OCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAKLSAgICAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxMCwgMTU5LCA0MiwgMTQxLCAyNDEsIDcwLCAKLSAgICA5MiwgNTYsIDIzNCwgMjQsIDkyLCA1NiwgMjA2LCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDU3LCA5MiwgMTAsIDIxNCwgCi0gICAgMTc3LCAyMzgsIDYxLCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDY5LCA5MiwgNTYsIDI0OCwgOTgsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzUsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNjIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNDksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTEsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgMzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzIsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNTksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjgsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNTYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzcsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDcsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNDgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjUsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgCi0gICAgMjM4LCA0NiwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDc4LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNzYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA2MCwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDQzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAKLSAgICAyMTQsIDE3NywgMjM4LCAzOSwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDcwLCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTIsIDM3LCAxNTQsIDI1NCwgMjU0LCAzNywgMTU0LCAKLSAgICAyNTUsIDIxLCAyNDksIDc5LCAyNDQsIDUwLCAyNTAsIDgsIDIxNCwgMTk0LCAyMjgsIDIxOCwgMiwgMjE4LCAxNTUsIDIxOCwgCi0gICAgMzQsIDExNSwgMjMwLCAxMTksIDIxOCwgMzMsIDI1MCwgMzQsIDI1MywgMjE1LCAyNDYsIDYyLCAyMTgsIDMyLCAxMTUsIAotICAgIDI1MSwgMTI2LCAyMjMsIDE2MSwgMjUxLCAxNDgsIDI1MywgMjE1LCAyMjgsIDIxNywgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAKLSAgICAxMzEsIDIzMCwgMjAwLCAyMTIsIDI1LCAyNDUsIDIzMiwgMjQyLCAxODgsIDI0NSwgNTMsIDI0NSwgMjMyLCAyNDIsIDE4OCwgCi0gICAgMjU0LCAxMzYsIDI0NSwgMjMyLCAyNDIsIDE4OCwgMjUzLCAyMzMsIDI0MiwgMTg4LCAyLCAyMzEsIDU2LCAxNjYsIDIzMCwgCi0gICAgMTM0LCA4NywgMjEyLCAyNywgMjQ5LCAxNDUsIDIzMCwgMTM0LCA4NywgMjQ0LCAxMDAsIDIyNCwgMjUsIDIzMCwgMTM0LCAKLSAgICA4NywgMjEyLCAyNywgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjQzLCAyMzYsIDIzMCwgMTM0LCA4NywgMjEyLCA1MiwgCi0gICAgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjMzLCA4NiwgMjI0LCAyNSwgMjMwLCAxMzQsIDg3LCAyMTIsIDUyLCAyNDksIAotICAgIDE0NSwgMjMwLCAxMzQsIDg3LCAyNDksIDE0NSwgMjMwLCAxMzMsIDE2NiwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyNDQsIAotICAgIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyMzMsIDg2LCAyMjQsIDI1LCAyMzAsIDEzNCwgMiwgMjQ0LCAKLSAgICAxOTgsIDI0MywgMjM2LCAyMzAsIDEzNCwgMiwgMjQ0LCAxOTgsIDIxOCwgMzksIDIsIDI0NCwgMTk4LCAyNDIsIDE4NiwgCi0gICAgMjE4LCAxNTgsIDIyMCwgMSwgMjE4LCAxNTgsIDI1MCwgMTI0LCAyMjEsIDE3MCwgMjQ1LCA0NywgMjE1LCAyMzYsIDI0OCwgCi0gICAgOTIsIDIxNSwgMjM2LCAyMjYsIDYzLCAyMTUsIDIzNiwgMjUxLCAzNSwgMjE1LCAxMTAsIDI1MCwgMTI2LCAyNTEsIDIxOCwgCi0gICAgMjIyLCAxOTMsIDI0MSwgMTg2LCAyMTgsIDM3LCAyNTEsIDIxOCwgMjQ1LCAyMzYsIDY0LCAyMzEsIDE5OSwgMjQ1LCAyMzYsIAotICAgIDY0LCAyMjMsIDM0LCAyNDEsIDIxMSwgMjQ0LCAxOSwgMjMzLCA2MCwgMjQ5LCAyNTQsIDIzMSwgMTc1LCAyMzMsIDU5LCAKLSAgICAyNDQsIDE4NCwgMjMzLCA1OSwgMjMzLCA2MCwgMjQ0LCA1NSwgMjM2LCA3LCAyMTEsIDIzOSwgMjMwLCA2MywgMjE2LCAzNSwgCi0gICAgMjUzLCAxOTksIDI0MiwgMTUwLCAyMzEsIDcyLCAyMTIsIDM5LCAyMTcsIDU4LCAyMzMsIDMyLCAyNTIsIDE1NywgMjI1LCAKLSAgICA2NSwgMjIzLCAxMTQsIDI1NCwgNjIsIDI0MiwgMTM0LCAyNTQsIDYyLCAyMjUsIDIyMCwgMjI1LCAyMjEsIDI1MCwgMTI3LCAKLSAgICAyMTgsIDExNiwgMjQyLCAzMCwgMjE5LCA5MiwgNjQsIDIyNSwgNDcsIDIzMSwgOTIsIDIyNiwgMjAxLCAyNTEsIDIwMiwgCi0gICAgMjI0LCAyMzIsIDIzMywgNDIsIDIyMywgMzUsIDI0OSwgMTUwLCAyMjMsIDM1LCAyNTIsIDE2NywgMjQ5LCAxODEsIDIyMywgCi0gICAgMzQsIDI0OSwgMTAzLCAyMiwgMjIzLCAzNCwgMjE4LCAxNDMsIDI1MSwgMTc1LCAyMTksIDE2LCAyNTEsIDE1OSwgMjQ0LCAzLCAKLSAgICAyNDMsIDI1NSwgMjIyLCAyMDksIDIxNywgMjQ3LCAyMjQsIDIzNCwgMjQ4LCAxODMsIDIyNiwgMjQwLCAyMTgsIDgsIDI0NCwgCi0gICAgMCwgMjE5LCAyMzIsIDI0NCwgOTksIDI1MSwgMjksIDIsIDIxNywgMjQwLCAyNDgsIDQzLCAyMTksIDU0LCAyNDAsIDExOSwgCi0gICAgMjQ5LCAxNDksIDIyMCwgNzIsIDI0MCwgMTE4LCAyNDAsIDExOSwgMjQ5LCAxNDksIDI0NiwgMTE2LCAyNDksIDE4MCwgMjUwLCAKLSAgICA5MiwgMTMwLCAyNTEsIDYsIDIzMiwgMTQ3LCAyNDksIDk2LCAyNDEsIDYyLCAyMjQsIDIzNiwgMjE5LCAyNDIsIDI1MiwgNDQsIAotICAgIDI1MSwgMTcxLCAyMjQsIDIzNywgNjQsIDI0NCwgNDEsIDI0OSwgMTc5LCAyNDQsIDMyLCAyMiwgMjM0LCAzOCwgMjE3LCAyMCwgCi0gICAgMjExLCAyMzAsIDI0MiwgMjAsIDIyMiwgMTQsIDI1MSwgMTg1LCAyMiwgMjQ5LCAxMTAsIDIxMSwgMjM3LCAyNDIsIDE5MSwgCi0gICAgMjQ5LCAyNDMsIDI0MiwgMTkxLCAyMTUsIDE5NCwgMjQ2LCA5OCwgMjUyLCA3MCwgMjMwLCA5OCwgMjUwLCAxNSwgMjUyLCAKLSAgICA3MCwgMjMwLCA5NywgMjUyLCAxOTUsIDI1MSwgMTg0LCAyMjMsIDM2LCAyMTEsIDIwMSwgMjI0LCAxOTgsIDI1MSwgMjQzLCAKLSAgICAyNTEsIDI4LCAyMzUsIDE0NCwgMjUwLCA4NSwgMjE1LCAyMzYsIDI0NCwgMTcwLCAyNTAsIDg0LCAyNDQsIDEwMiwgMjQ0LCAKLSAgICAxMDMsIDIxOSwgMTQsIDI1MiwgMTY2LCAyMjUsIDI1NCwgMjI0LCAyNDcsIDI0OSwgMjEyLCAyNTIsIDE2NywgMjE3LCA2MCwgCi0gICAgMjE1LCAyMzYsIDI0OSwgMTM2LCAyNDQsIDc1LCAyMjUsIDY2LCAyNDgsIDg5LCAyMzUsIDEzNywgMjQ3LCAxMzksIDI1MCwgCi0gICAgMjQwLCAyMTgsIDExNSwgMjExLCAyNDAsIDI1MCwgMTA2LCAyMzAsIDEzNCwgMjEzLCAxNjQsIDI1MCwgMTcwLCAyMjEsIAotICAgIDIwMSwgMjIxLCAyMjYsIDI0MiwgMTU1LCAyNTEsIDMsIDI1MCwgMjQxLCAyNDAsIDI1MiwgMjQ0LCAxMzgsIDIxMiwgMCwgCi0gICAgMjIyLCAyMDIsIDI0OSwgMjQ0LCAyNDQsIDk0LCAyMjUsIDUsIDIyLCAyNDQsIDk4LCAyMzAsIDIzMiwgMjMwLCAxMTMsIAotICAgIDI1MSwgMTgsIDI1MCwgNDcsIDI0MSwgMjM5LCAyNTMsIDI0OSwgMjI2LCA2NiwgMjE2LCAxNSwgMjQyLCAyLCAyNTAsIDM3LCAKLSAgICAyMTYsIDI0MywgMjE2LCAxMTQsIDI1MCwgMjgsIDI1MSwgMjEwLCAyMjUsIDE4MCwgMjUzLCAyNDgsIDIxMywgMTcyLCAyNDMsIAotICAgIDExNywgMjQ3LCAyMDUsIDI0MSwgMTYzLCAyMTksIDg2LCAyMzEsIDIzOSwgMjUxLCAyNTMsIDI0MywgMTE4LCAyNDcsIDI0OCwgCi0gICAgMjUxLCAxNzQsIDI0NCwgNjAsIDIyNSwgMzYsIDI1MCwgMjQ5LCAyOCwgMjI4LCA1MiwgMjMwLCA5MCwgMjgsIDIyOCwgNDcsIAotICAgIDIyMSwgMjE0LCAyNDIsIDEwNiwgMjgsIDIzNCwgMTQzLCAyMTUsIDE5MSwgMjEzLCAxNTQsIDI4LCAyMjEsIDE5NCwgMjIyLCAKLSAgICAxMjYsIDIyMCwgMTMsIDIsIDIyMSwgMjI5LCAyMTYsIDI0NSwgMjIzLCAxODEsIDIyLCAyNTIsIDE2NywgMjE5LCAxMDcsIAotICAgIDIyLCAyMTksIDEwNywgMjUxLCAxOTUsIDI1MiwgMTMxLCAyMiwgMjQxLCA1NiwgMjUwLCAxMjgsIDI0NCwgODEsIDIxOSwgCi0gICAgNjUsIDIyMiwgMTI3LCAyMTgsIDEzLCAyMTUsIDE5NSwgMjQwLCAyNTMsIDIyMywgMTgyLCAyNTQsIDEzNywgMjQ0LCAzOSwgCi0gICAgMjIyLCAxMzgsIDI0NCwgMzksIDIxNywgMjQyLCAyNDAsIDI0MiwgMjUxLCAxMjcsIDI0MCwgMjQyLCAyLCAyNDMsIDEwMSwgCi0gICAgMjI2LCAyMzMsIDI1MSwgMTI3LCAyMzUsIDEzNywgMjI0LCAyNDIsIDIyNiwgMjMyLCAyNDUsIDUyLCAyMjQsIDI0MiwgMjI2LCAKLSAgICAyMzIsIDI0MCwgMjUxLCAyNTIsIDE1MywgMjUzLCAxODksIDIxNiwgMjUzLCAyMzEsIDIzOSwgMjQwLCAyNDcsIDIzMiwgCi0gICAgMTE3LCAyNDAsIDI0NywgMjQ5LCAxODQsIDIxOCwgMTI3LCAyMjEsIDIwMCwgMjQ4LCA1MSwgMjE4LCAxMjcsIDI0NCwgMTg4LCAKLSAgICAyMzUsIDE1NSwgMjMzLCA5NSwgMjM1LCAxMzcsIDI1MCwgMjM0LCAyNDUsIDUyLCAyNTAsIDIzNCwgMjIzLCAxNDQsIDIzMCwgCi0gICAgMTE3LCAyMjYsIDExOCwgMjEyLCA0MSwgMjUxLCAxMzEsIDI0OSwgMTUzLCAyMTYsIDEwNywgMjMzLCAyNCwgMjIzLCAxODMsIAotICAgIDI1MCwgMjMyLCAyNDYsIDEwNCwgMjQ5LCAxNDMsIDIxMiwgMywgMjE5LCA3MiwgMjE5LCA3MCwgMjQwLCAyNTIsIDIyMywgCi0gICAgMTU2LCAyNDIsIDE3NywgMjIwLCA1OSwgMjMwLCAxNTAsIDIyMiwgMTk2LCAyNTAsIDExNiwgMjQ3LCAxNDQsIDIyNSwgNzYsIAotICAgIDI1MSwgMjExLCAyNDUsIDE3NywgMjI2LCAyNDIsIDIxOCwgMjU0LCAyMjAsIDU0LCAyNTEsIDEzMCwgMjU0LCAxMDAsIDI0MSwgCi0gICAgNjEsIDIzMywgMTI3LCAyNTIsIDY4LCAyNDQsIDk4LCAyMTUsIDE5NCwgMjQ0LCA5OCwgMjUxLCAyMTcsIDIxNSwgOTEsIAotICAgIDI0MiwgMCwgMjUwLCAxMTcsIDI1MiwgMTk1LCAyNTAsIDExNywgMjQzLCAyNTAsIDI1MiwgMTk1LCAyNTAsIDExNywgMjUxLCAKLSAgICAyNDUsIDIyNSwgMTk4LCAyMzQsIDMyLCAyMjQsIDI1MSwgMjQ2LCA5NSwgMjUxLCAxOSwgMjUyLCAxODUsIDI1MSwgMTksIAotICAgIDI0NywgMTM4LCAyMzAsIDExOCwgMjQ0LCAxOTgsIDI0OSwgMTU0LCAyNDQsIDE5OCwgMjE2LCAxMDgsIDI0NCwgMTk4LCAKLSAgICAyMjMsIDE4NCwgMjQ0LCAxOTgsIDI1MCwgMjMzLCAyNDQsIDE5OCwgMjQ2LCAxMDUsIDI0NCwgMTk4LCAyMTgsIDI0MywgCi0gICAgMjEyLCAzLCAyNDAsIDI1MywgMjQ0LCAxOTgsIDIzMCwgMTUxLCAyNDQsIDE5OCwgMjQ3LCAxNDUsIDI0NCwgMTk4LCAyMjUsIAotICAgIDc3LCAyNDQsIDE5OCwgMjQzLCAyNTMsIDI0NCwgMTk4LCAyNDIsIDI3LCAyNDQsIDE5OCwgMjExLCAyMjQsIDI0NCwgMTk4LCAKLSAgICAyNTIsIDc5LCAyNDQsIDE5OCwgMjI2LCA0OSwgMjQ0LCAxOTgsIDIyNSwgNzcsIDIyOCwgNTgsIDIyNSwgMjM2LCAyMjQsIAotICAgIDE4OSwgMjQ1LCAyMSwgMjQ1LCAyMzUsIDIyOCwgNTgsIDIzMCwgMTE1LCAyMTYsIDIwLCA3MSwgMTIwLCAyMjUsIDEwLCAKLSAgICAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDI1MiwgMTkwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIAotICAgIDEwLCAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjUyLCAxOTAsIDIzNSwgMjQ5LCAyNDQsIDkyLCAKLSAgICAyNDIsIDIzLCA1MCwgMjEyLCAzMywgMjQyLCAyMywgNTAsIDIyNiwgMjE5LCAyNDIsIDIzLCA1MCwgMjE2LCAxMzYsIDEyMCwgCi0gICAgNTAsIDIxNiwgMTM2LCAxMjQsIDUwLCAyNTAsIDI3LCAyNDIsIDE4LCA1MCwgMjA0LCAyNDIsIDE4LCA1MCwgMjQ5LCAxMzEsIAotICAgIDIxMSwgMjIwLCAyNDIsIDIsIDI0NSwgMjIsIDIyOSwgMTA5LCAyMTcsIDE1MiwgMjM1LCAxMzEsIDI0NiwgMTAwLCAyMzQsIAotICAgIDg4LCAyNTEsIDI1NSwgMjExLCAyMjAsIDI1MCwgMSwgMjI0LCAxMzAsIDI0MiwgMjEsIDIyNCwgMjMzLCAyMzEsIDE4MiwgCi0gICAgMjIwLCA2LCAyNTMsIDIxMSwgMjIwLCA2LCAyNDEsIDE3MSwgMjIwLCA2LCAyMTEsIDIyMCwgMjIxLCAyNDIsIDIxMSwgMjIwLCAKLSAgICAyNTEsIDE5NCwgMjQ0LCAzNywgMjUxLCA5OCwgMjM2LCA3LCAyMTksIDE3MSwgMjUxLCA5NywgMjM2LCA3LCAyMTksIDE3MSwgCi0gICAgMjUxLCAxNzAsIDI0MiwgMjAxLCAyMzEsIDE5MCwgMjExLCAyMjEsIDI0NCwgMTgyLCAyMzEsIDE5MSwgMjIsIDIxMSwgMjIyLCAKLSAgICAyNDEsIDY3LCAyNDIsIDE3LCAxMTMsIDIzMSwgNjQsIDI0MSwgNjcsIDI0MiwgMTcsIDExMywgMjExLCAyMTksIDI0MSwgNjcsIAotICAgIDI0MiwgMTcsIDIyNSwgMiwgMjI2LCAyMzEsIDIxMSwgMjIyLCAyLCAyNTEsIDExNCwgMjQ1LCAyMzMsIDI1MSwgMTQ5LCAyLCAKLSAgICAyMTMsIDI0NiwgMjI1LCAxNzEsIDIsIDI1MSwgMjIwLCAyNDIsIDQxLCAyMzEsIDE5MSwgMiwgMjQyLCAxMTcsIDIyNSwgCi0gICAgMTEyLCAyMzEsIDE3OSwgMjMxLCAxOTEsIDIsIDIxNSwgOTgsIDIyNiwgMjEyLCAyMzEsIDE5MCwgMjI2LCAyMTIsIDIxMSwgCi0gICAgMjIxLCAyNTIsIDE5NCwgMjQ5LCAxOTgsIDIxMSwgMjA1LCAyMjQsIDE5MiwgMjM1LCAxMzcsIDIyNiwgMjI3LCAyMzUsIAotICAgIDEzNywgMjQyLCAxNzYsIDI0MiwgMjI5LCAyNTIsIDE5NSwgMjU0LCAxMjEsIDI0NSwgMjYsIDI1NCwgMTY5LCAyNTQsIDE3MCwgCi0gICAgMjMwLCAxNDEsIDIzNiwgMTIsIDIxOSwgMTAyLCAyMzUsIDIzOSwgMjQ4LCA0MiwgMjI1LCAxNzAsIDI0MiwgMTEyLCAyNDgsIAotICAgIDE4NywgMjMyLCAyMDcsIDIyOSwgMjE2LCAyMjUsIDEsIDI0NCwgMTk5LCAyMzEsIDE0NywgMjQyLCA0MCwgMjUyLCAxNDYsIAotICAgIDIyNSwgNCwgMjE3LCAxNzIsIDIyNSwgNjksIDIzNCwgNzAsIDc5LCAyMzIsIDExNywgMjMzLCAxNiwgMjIyLCAyMzYsIDI0MywgCi0gICAgNjEsIDIxOCwgMTMzLCAyMzQsIDY5LCAyNTEsIDE3OSwgMjQ5LCAxNTYsIDIsIDI0MSwgMjM0LCAyMTIsIDE5LCAyNTIsIDc3LCAKLSAgICAyNDEsIDIzNCwgMjUxLCAxNDMsIDI0MSwgMjM0LCAxMTMsIDI0MSwgMjMyLCAyMTksIDEyLCAyNDEsIDIzNCwgMjQyLCAxMjcsIAotICAgIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgNzUsIDI1MSwgMjE2LCAyNDEsIDIzNCwgMjQyLCAxMzQsIDI0MSwgMjM0LCAyMTEsIAotICAgIDQyLCAyNDEsIDIzNCwgMjI0LCAxMzEsIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgMjIzLCAzNiwgMjIzLCA0NywgMjQxLCAKLSAgICAyMzIsIDI0MSwgMjM1LCAyNDgsIDg5LCAyNDgsIDEsIDIyMCwgODQsIDIsIDExNiwgNTksIDIzNSwgMjIyLCAyNDUsIDE4MCwgCi0gICAgMTkzLCAyNTEsIDEyNCwgMjU0LCAxMjAsIDg3LCAyNTEsIDIwMywgMjE5LCA5NCwgODcsIDI0OSwgMjM2LCA4NywgMjE4LCAKLSAgICAyNDgsIDIxNywgMjQ5LCA4NywgMjQ2LCA5MywgMjQ4LCAxNjUsIDg3LCAyMjUsIDcwLCA2NCwgMjI0LCAyNTIsIDI0NCwgNjksIAotICAgIDI1MiwgMTEsIDI0NywgMTczLCA4NywgMjE5LCA1LCAyNTIsIDE2NiwgMjE2LCAxNTAsIDI1MiwgMTY2LCA3MSwgMjQ0LCA1OSwgCi0gICAgMjQwLCAyMTgsIDIyNSwgOCwgODcsIDIzMCwgMTU0LCAyNTIsIDE4MCwgMjQ5LCAxMDYsIDI0NSwgNDAsIDExNCwgMjQ3LCAKLSAgICAxNDAsIDUwLCAyNDksIDE0NywgMjUwLCAyNTAsIDI1MiwgMTUyLCAyLCAyMTEsIDQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NywgCi0gICAgMTQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NSwgNTUsIDUwLCAyNTIsIDE1MiwgMiwgMjI0LCAyMzEsIDUwLCAyMzAsIDE1NCwgCi0gICAgMiwgMjExLCAyMzUsIDI1MCwgMTQ2LCAyLCAyMTQsIDE1MywgMjE1LCAyMzIsIDIyLCAyMTEsIDQwLCA1MCwgMjIxLCAxODAsIAotICAgIDIyNSwgMTY5LCAyNDksIDIxNiwgMjUxLCAxNDcsIDIzMCwgMTkxLCAyNDQsIDY0LCAyNDcsIDE5MywgMjI2LCAxNjUsIDI0NywgCi0gICAgMTk4LCAyNDYsIDU3LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjA0LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjI2LCA4MCwgMiwgMjQ5LCAKLSAgICAxMDgsIDIyNiwgODAsIDI0NCwgMTkxLCAyMTQsIDE2MywgMjUxLCAyNCwgMjE3LCAxOSwgMjUxLCAyNCwgMjUwLCAyNTEsIAotICAgIDIzNSwgMjQ5LCAyNTAsIDE0NiwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyNTAsIDE0NiwgMiwgMjQ2LCAxMTIsIDIxNSwgCi0gICAgMjMxLCAyNTIsIDE0OSwgMjUwLCAxNDUsIDI1MCwgMTQsIDIyNCwgMTI2LCAyMjIsIDE4NywgMjI0LCAxMjYsIDIyNiwgMjMsIAotICAgIDIxOCwgMTIzLCAyMjIsIDEzMywgMjE1LCAyMjMsIDIyMiwgMTMzLCAyNTEsIDE5OSwgMjE3LCA5MiwgMjMzLCA1NywgMjI4LCAKLSAgICA1MCwgMjI4LCA1MSwgMiwgMjQ4LCA4OCwgMjQ5LCAxNTUsIDI1MCwgOCwgMjUxLCAyMDAsIDIwNCwgMjUxLCAyMDAsIDI0MiwgCi0gICAgMTM0LCAyNTEsIDIwMCwgMjUxLCAyMTYsIDI1MSwgMjAwLCAyMjYsIDE2MSwgMjUxLCAyMDAsIDI1MSwgMTk3LCAyMjksIAotICAgIDIxMCwgMjUyLCAxODMsIDIyMSwgMTg4LCAyMzEsIDY1LCAyMTcsIDIsIDIyMywgMTI2LCAyMjYsIDc4LCAyNDQsIDE2NywgCi0gICAgMjMxLCAyMzksIDIyMSwgMjI1LCAyNTQsIDk3LCAyMjQsIDE0OCwgMjU1LCA1LCAyMzIsIDExOSwgMjUwLCAxMzUsIDIzMSwgCi0gICAgNzcsIDIyNiwgMTMzLCAyMTUsIDIzOSwgMjM2LCAzLCAyMTUsIDIzOSwgMjI2LCA4NiwgMjQ2LCAzMiwgODcsIDIzNiwgMCwgCi0gICAgMjQ1LCAxMjcsIDI0NSwgMTI4LCAyLCAyNDYsIDExMiwgODAsIDQ4LCAyNTAsIDgsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgCi0gICAgMjQ0LCA4MSwgMjUwLCA4LCAyMzEsIDIwNSwgMiwgMjIzLCAxNjAsIDI0NCwgODEsIDIwNCwgMjMxLCAyMDUsIDIsIDIyMywgCi0gICAgMTYwLCAyNDQsIDgxLCAyMDQsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgMjQ0LCA4MSwgMjI0LCAyMzksIDIyNCwgMjQwLCAKLSAgICAyNDAsIDI1NSwgMjI5LCA4OSwgMjMwLCAxNjQsIDIyNSwgMTIwLCAyMzAsIDE2NCwgMjI1LCAxMjEsIDIsIDk3LCA4MCwgCi0gICAgMjUzLCAyMTUsIDIzMywgNTIsIDIxMywgMTc1LCAyMzAsIDE2MywgMjMwLCAxNjQsIDIyNSwgMTIxLCAyMjYsIDIzNCwgMjI4LCAKLSAgICA4MCwgMjMwLCAxNjQsIDIyNSwgMTE5LCAyNTQsIDk4LCAyLCAyNTIsIDEzNywgMjUxLCAxOCwgMjEzLCAxNzIsIDI1MSwgMTgsIAotICAgIDIxNiwgMjU1LCAyMjMsIDE3NiwgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI1NSwgMjUwLCAxMCwgOTcsIDIyLCAKLSAgICAxNDAsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDI1MCwgMTAsIDk3LCAyMiwgMTQwLCAyMDQsIDI1MCwgNDQsIDI1NCwgMCwgCi0gICAgMiwgMzcsIDEyMywgMjI2LCAxMjQsIDI1MCwgMTAsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAKLSAgICAyNTUsIDI1NCwgOTYsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDEyMSwgMjUxLCAKLSAgICAxNDYsIDg3LCAxMjUsIDI1MSwgMTQ2LCA4NywgMjE5LCA5LCAyLCAyNTEsIDEyLCA5MSwgMjE5LCA4LCAyMTksIDksIDIsIAotICAgIDEyMywgMjE5LCAzMywgMjEyLCAzNSwgMjE5LCA5LCAyLCAxMzQsIDIxOSwgMzMsIDIxMiwgMzQsIDI1MiwgMTIzLCAyNDUsIAotICAgIDE4MCwgMjI1LCAzMCwgMjMzLCA0OCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAyMjIsIDI1MCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAKLSAgICAyMzIsIDE1OCwgMiwgMjM1LCAyMzIsIDIyNSwgMjAyLCAyNTAsIDgsIDIzMiwgMTU4LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIAotICAgIDIzMiwgMTU3LCAyMDQsIDIzMiwgMTU3LCAyNTIsIDUyLCAyNTIsIDUzLCAyLCAyNTEsIDEyLCA5MSwgMjUxLCAxOTgsIDIzMiwgCi0gICAgMjEwLCA4NywgMjIzLCAxNzcsIDI1MSwgOTQsIDI1MiwgMTkzLCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNTEsIDIsIDE0MCwgCi0gICAgODAsIDQ4LCAyMjYsIDIwMSwgMiwgMjQ1LCAzOSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCA0MSwgMiwgOTcsIDgwLCAKLSAgICA0OCwgMjE2LCAxNSwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA4MCwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAxOTksIDg3LCAKLSAgICAyMzQsIDE0MiwgMjE2LCAyNDgsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIDYsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIAotICAgIDQsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDIyNywgMjAzLCAyMzUsIDIyNiwgMTYsIDMxLCAyMTcsIDE4NCwgMjM1LCAKLSAgICAyMjYsIDE2LCAzMSwgNywgMjMzLCAxNSwgMjQ0LCAxMDQsIDI0NSwgMTgwLCAyMTYsIDEwLCAyMTEsIDE5OSwgMjQyLCAyOCwgCi0gICAgMjI3LCAxODYsIDIyLCAyNTEsIDIwNSwgMjQxLCA3MywgMjI1LCA1MywgMjMwLCAyMzEsIDIxNywgMCwgMjQ5LCAxMjIsIAotICAgIDI1MiwgMTY3LCAyMTksIDEyNywgMjI1LCAxMiwgMjE4LCAxNTksIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAxMzcsIAotICAgIDE2LCAzMSwgMjUyLCA2NSwgMjE1LCAyMjEsIDI0NSwgMTY0LCA4NSwgNDIsIDI1MSwgOTQsIDcxLCA0MiwgMjUxLCA5NCwgCi0gICAgMjMzLCA5MSwgMjIzLCAxMTQsIDI1MCwgNDMsIDIzMywgOTEsIDI1MSwgMjE2LCAyNTAsIDQzLCAyMzMsIDkxLCAyMjYsIAotICAgIDE2MSwgMjQ4LCAwLCAyMzMsIDkxLCAyNTEsIDIxNiwgMjQ4LCAwLCA0LCAyMjYsIDE2MSwgMjQ4LCAwLCA0LCAyNTEsIDIxNiwgCi0gICAgMjQ4LCAwLCAyMTQsIDE2MiwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgMjIzLCAxMTQsIDIxNSwgMjI2LCAyMTQsIAotICAgIDE2MiwgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAzNywgMjQ5LCAKLSAgICAxMzksIDIyNCwgMjU1LCAyNDksIDEzOSwgMjI1LCAwLCAyLCAyNDIsIDMzLCA1MSwgMjQ5LCAxMzksIDIyNCwgMjU1LCAyMjgsIAotICAgIDU0LCA0MywgMjIwLCAxNTUsIDIsIDEzNCwgMjQ3LCAxMjYsIDI1MCwgMTIsIDI0NCwgMTk5LCAxMjMsIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMTEzLCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDEzNCwgMjI2LCAyNDYsIDI1MCwgCi0gICAgMTIsIDI0NCwgMTk5LCAyNDQsIDE5LCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NCwgODksIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMjE5LCAxMjcsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjIwLCAxMjQsIDIyNiwgCi0gICAgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAyMDEsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDUsIAotICAgIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE2LCAyNDksIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAKLSAgICAxNzYsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NywgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAKLSAgICAyMjYsIDE5NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDIxNSwgNTYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDE0MSwgMjUwLCAKLSAgICAxMiwgMjQ0LCAxOTksIDI0NCwgMTUsIDI1MCwgMTIsIDI0NCwgMTk5LCAyNDQsIDg3LCAyNTAsIDEyLCAyNDQsIDE5OSwgCi0gICAgMjE5LCAxMjMsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMjAsIDEyMywgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NSwgMjAwLCAyNTAsIAotICAgIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDQsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDI0NywgMjUwLCAxMiwgMjQ0LCAxOTksIAotICAgIDI0NSwgMTc0LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NSwgMjMwLCAxMjIsIDI0MywgMjM3LCAyMTYsIDM3LCAyMTYsIAotICAgIDMsIDIxOCwgMTUwLCA2NCwgMjMyLCAyNDUsIDIxOSwgMTcyLCA2NCwgMjM1LCAxMzgsIDIzMCwgMTExLCAyNDIsIDEzMSwgCi0gICAgMjQ0LCAxOTgsIDI0MiwgMTMxLCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAxOTksIDIsIDIxNywgMTUsIAotICAgIDY0LCAyMzUsIDU5LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTksIDc2LCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNiwgCi0gICAgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTYsIAotICAgIDEwNSwgMjQ1LCAyMSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDI0MiwgMzIsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyNDAsIAotICAgIDI1NCwgMjExLCAyMzMsIDI0NCwgMTk4LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAKLSAgICAxOTksIDIyMSwgMjE5LCAyNDgsIDcwLCAyNDQsIDQxLCAyMjMsIDkxLCAyNDQsIDE5OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDI0MSwgMjMzLCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE4LCAzNSwgMjE5LCA3NSwgMjQ0LCAxOTgsIDIyOSwgCi0gICAgOTIsIDI0NCwgMTk4LCAyNDUsIDMxLCAyNDQsIDE5OCwgMjE0LCAxODgsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjQ5LCAKLSAgICAyMzgsIDIxNywgMjQ4LCAyMjUsIDE5NSwgMjQ0LCAxOTgsIDI0OSwgMjA5LCAyNDQsIDE5OCwgMjQ5LCAyMTAsIDI0NCwgCi0gICAgMTk4LCAyMzQsIDY4LCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIxNiwgMTM4LCAxMTYsIDIzNCwgNjksIDIzNCwgNjgsIDI0NCwgCi0gICAgMTk5LCAyLCAyMTksIDc2LCAyNDUsIDIxLCAyMzQsIDY4LCAyNDQsIDE5OSwgMiwgMjUwLCA4LCAyNDUsIDIxLCAyNDQsIAotICAgIDE5OSwgMiwgMjE4LCA4OSwgMjE2LCAyMCwgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTEsIDIzMywgCi0gICAgMjQ1LCAyMywgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTYsIDEwNSwgMjQ1LCAyMSwgMjQ3LCAyMDAsIAotICAgIDI0NCwgMTk4LCAyMTEsIDIwNCwgMjQ0LCAxOTgsIDI1NCwgMTE2LCAyNDQsIDE5OCwgMjI0LCAyMzAsIDI0NCwgMTk4LCAKLSAgICAyNDksIDEyNCwgMjQ0LCAxOTgsIDIyNSwgMTczLCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIsIDIzMiwgMTMyLCA2NCwgMjE1LCAKLSAgICAyMDUsIDI0NywgMjAwLCAyNTEsIDk2LCAyMjMsIDkxLCAyNDQsIDE5OCwgMjQzLCAyNDcsIDI0NCwgMTk5LCAyLCAyMDQsIAotICAgIDIzMCwgMTE1LCAyNTQsIDExNCwgMjQ0LCAxOTgsIDI0NCwgMTYwLCAyNDQsIDE5OCwgMjEyLCAyMCwgMjQ0LCAxOTgsIDIxOSwgCi0gICAgOTMsIDI0NCwgMTk4LCAyMTYsIDcyLCAyNDQsIDE5OCwgMjQyLCAxMzIsIDI0NCwgMTk4LCAyMzIsIDEyMCwgMjQ5LCAxMjQsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjQwLCAyMTAsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgCi0gICAgMjA0LCAyMzAsIDExNiwgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjQ0LCAxOTksIDIyMSwgMTkyLCAyMzYsIDcsIDI0NCwgCi0gICAgMTYxLCAyNTMsIDIyMSwgMjQ0LCAxOTgsIDI0NCwgNTcsIDI0NCwgMTk4LCAyMTksIDk0LCAyNDQsIDE5OCwgMjQ3LCAxNzMsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMjExLCAyMzAsIDIzMCwgMTE1LCAyNDQsIDE5OSwgMiwgMjMxLCA4OSwgMjMxLCAxNDksIAotICAgIDI0MiwgMTMxLCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDIxOSwgNzYsIDI0NSwgMjEsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgCi0gICAgMjE3LCAxNSwgNjQsIDIzNSwgNTksIDIxOSwgNzYsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCAKLSAgICA3NiwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNDEsIDIzMywgMjQ1LCAyMSwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyMTEsIAotICAgIDE5NiwgMjE5LCA3NywgMjM0LCA2OCwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNTAsIDgsIDI0NSwgMjEsIDIyNCwgMjMwLCAKLSAgICAyNTAsIDIzMywgMjQ0LCAxOTgsIDI0OSwgMTI0LCAyNTAsIDIzMywgMjQ0LCAxOTgsIDIxMiwgMjAsIDI1MCwgMjMzLCAyNDQsIAotICAgIDE5OCwgMjQ0LCAxOTksIDIsIDIyOCwgODAsIDI0MiwgMTcwLCAyNDMsIDQxLCAyNDQsIDE5OSwgMiwgMjI2LCAyMTksIDI0MywgCi0gICAgNDEsIDIyNSwgMTcxLCAyNTEsIDE3NiwgMjQ4LCA4MywgMjIxLCAxNzEsIDIzMCwgMTUwLCAyNDEsIDIzNiwgMjMwLCAxNTAsIAotICAgIDIxOSwgMTAsIDIzMCwgMTUwLCAyNDIsIDEyLCAyMjUsIDE3MSwgMjIzLCAxNTksIDEyMywgMjQyLCAyMiwgMjI1LCAxNzEsIAotICAgIDIyMywgMTU5LCAyNTEsIDE4NiwgMjQyLCAxOCwgMjM2LCA3LCAyNTAsIDE4NywgMjI1LCAxNzEsIDI0MywgMjQ2LCAyMjUsIAotICAgIDE3MSwgMiwgMjI0LCAyMzAsIDI0NCwgMTk4LCAyMjUsIDE3MSwgMiwgMjQ0LCA0OSwgMjQyLCAxNywgMjIyLCAyMDUsIDI0MSwgCi0gICAgMjIxLCAyMTgsIDE0NSwgMjMyLCAxNTUsIDIyMywgMTY1LCAyNTAsIDI1MiwgMjQxLCAxNjksIDIxNSwgMjQ5LCAyNDEsIAotICAgIDE2OSwgMjE1LCAyNTAsIDIsIDI1MSwgMTIyLCAyMjgsIDU4LCAyMTUsIDI0OSwgMjMxLCAzNywgMTkzLCAyMjMsIDE2NiwgCi0gICAgMjE4LCAxNTEsIDIxNSwgMjQ3LCAyMTUsIDI0OCwgMjUwLCAyNTIsIDI1MSwgMTAwLCAyMjYsIDE5OCwgMjUxLCAxMDAsIAotICAgIDIxNSwgMjAyLCAyNTEsIDEwMSwgMjE4LCAxMzEsIDIzMCwgMTkyLCAyNTQsIDEzOCwgMjQ0LCAxMDUsIDI0NSwgMTQ1LCAKLSAgICAyMjUsIDIsIDI1MCwgMjUyLCAyMjYsIDE5OCwgMjI1LCAyLCAyNTAsIDI1MiwgMjE3LCAzMywgMjI2LCAxOTgsIDIxNywgMzMsIAotICAgIDI1MywgMTg4LCAyMjYsIDE5OCwgMjUzLCAxODgsIDIyMywgMTIxLCAyMTMsIDI0NywgMjQ4LCA2NiwgMjE1LCAxOTMsIDI1MywgCi0gICAgMjUwLCAyMzIsIDEyMywgMjE1LCAyNTUsIDIzMCwgMTQ0LCAyMzAsIDEyMSwgMjIzLCAxNjQsIDIxOCwgNywgMjIzLCAxNjQsIAotICAgIDIzMCwgMTIxLCAyNTEsIDM2LCAyNTQsIDIzOCwgMjE1LCAyNDYsIDIyMCwgMTgsIDIyMiwgMTg0LCAyMTksIDMsIDIwMywgCi0gICAgMjE1LCAyNTMsIDIzMiwgMjM2LCA2NywgMjE1LCAyNTMsIDIzMiwgMjM2LCAyNDksIDE5OCwgNTAsIDIyNSwgMiwgMjUwLCAKLSAgICAyMzcsIDIyMywgNDcsIDIzMiwgMjM2LCAyMTUsIDIyMywgMjQ0LCA4MiwgMjI2LCAyMDEsIDIyNCwgMjQxLCAyNDcsIDEzMSwgCi0gICAgMjI4LCA4MCwgMjQ1LCAxMzMsIDUwLCAyMTksIDc0LCA4NywgMjI4LCA4MCwgMjE5LCA3NCwgODcsIDIyNCwgMTI1LCAyMzIsIAotICAgIDE5OSwgMjM2LCA3LCAyMzUsIDE2MywgMjI1LCA0NCwgODcsIDI0NywgMTU0LCAyMjgsIDU3LCAyMzIsIDE5OSwgODcsIDIyNCwgCi0gICAgMjM1LCAyMTIsIDQxLCA4NywgMjI4LCA3MSwgMjEyLCA0MSwgODcsIDI1MiwgMTAsIDIyOCwgODAsIDI1MiwgOSwgMjUyLCA4LCAKLSAgICAyMzAsIDEyMSwgMjUyLCA4LCAyMjUsIDIxNiwgMjI4LCA4MCwgMjI1LCAyMTUsIDI1MCwgMTA4LCAyNDksIDEzMiwgMjMxLCAKLSAgICA2MSwgODcsIDIxMSwgMjE4LCA4NywgMjIzLCA2MiwgMjUyLCAxOTUsIDg3LCAyMTYsIDM4LCAyMTIsIDQxLCAyNTAsIDUsIAotICAgIDIxOSwgMjM2LCAyNTIsIDEyNiwgMjUyLCAxMjQsIDIyNSwgMjQ2LCAyNDksIDE4NSwgMjQ5LCA5NCwgMjUyLCAxNzcsIDI1MCwgCi0gICAgMzAsIDQzLCAyMzIsIDk1LCAxMDgsIDE2LCAzMSwgMjI0LCA2LCAxMDgsIDE2LCAzMSwgMjU0LCAyMDEsIDEwOCwgMTYsIDMxLCAKLSAgICAyNDQsIDEwNCwgMTA4LCAxNiwgMzEsIDI0NSwgMjMxLCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCi0gICAgNTEsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMjMsIDEwOCwgMTA4LCAxNiwgMzEsIDI1NCwgNTIsIDIyMywgMTA3LCAxMDgsIAotICAgIDE2LCAzMSwgMjU0LCA1MiwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAotICAgIDIxMywgMTU3LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTYsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NSwgMTA4LCAxNiwgMzEsIDIxOCwgCi0gICAgNDUsIDEwOCwgMTYsIDMxLCAyMjUsIDEyOCwgMjE4LCA0NSwgMTA4LCAxNiwgMzEsIDg1LCAyMTgsIDQ1LCAxMDgsIDE2LCAKLSAgICAzMSwgMjMxLCA2MCwgMjE4LCA3MiwgMTA4LCAxNiwgMzEsIDIzMSwgNjAsIDIxOCwgNzEsIDEwOCwgMTYsIDMxLCAyMzEsIAotICAgIDYwLCAyMTgsIDcwLCAxMDgsIDE2LCAzMSwgMjUwLCA0NiwgMTA4LCAxNiwgMzEsIDIyMiwgMywgMTA4LCAxNiwgMzEsIDIyOCwgCi0gICAgMTkzLCAxMDgsIDE2LCAzMSwgMjEzLCAxNDEsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MCwgMTA4LCAxNiwgMzEsIDIyMiwgMjA2LCAKLSAgICAyMjIsIDMsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNiwgMjIyLCAyLCAxMDgsIDE2LCAzMSwgMjQyLCAxNzMsIDEwOCwgMTYsIAotICAgIDMxLCAyMTksIDE2OCwgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAyMjYsIDE1NywgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAKLSAgICAyMjYsIDE1NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjM1LCAxODMsIDEwOCwgMTYsIDMxLCAyMjMsIDEwNCwgNjQsIAotICAgIDIzNSwgMTgzLCAxMDgsIDE2LCAzMSwgMjQ5LCAxNzYsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjM1LCAxODIsIDIyNiwgCi0gICAgMTU3LCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNDIsIDY0LCAyNDksIAotICAgIDE3NSwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjQ5LCAxNzQsIDEwOCwgMTYsIDMxLCAyNDksIDE3NiwgMjU0LCA5MSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI0OSwgMTc2LCAyNTQsIDkxLCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIAotICAgIDIyMiwgNCwgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjEzLCAyNDMsIDEwOCwgMTYsIDMxLCAyMTYsIDg1LCAyMjYsIAotICAgIDE1NywgMTA4LCAxNiwgMzEsIDIzMywgNjMsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjU0LCA5MCwgMjI2LCAxNTcsIDEwOCwgCi0gICAgMTYsIDMxLCAyMTgsIDczLCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI1NCwgODksIDEwOCwgMTYsIAotICAgIDMxLCAyMTgsIDczLCA2NCwgMjIyLCA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIxMywgMTU4LCA2NCwgMjU0LCA4OSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OCwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTAzLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDIsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgMTA4LCAKLSAgICAxNiwgMzEsIDIyMywgMTAwLCAxMDgsIDE2LCAzMSwgMjU0LCAxNjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE2NSwgMTA4LCAxNiwgCi0gICAgMzEsIDIzMSwgMTY4LCAxMDgsIDE2LCAzMSwgMjIyLCA5LCAxMDgsIDE2LCAzMSwgMjUzLCAyNTQsIDEwOCwgMTYsIDMxLCAKLSAgICAyMjMsIDEyOCwgMTA4LCAxNiwgMzEsIDIyMywgMTI3LCAxMDgsIDE2LCAzMSwgMjUzLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIAotICAgIDIzNywgMjI2LCAxNTcsIDEwOCwgMTYsIDMxLCAyMTcsIDUwLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIAotICAgIDIyNCwgMTEsIDIzMiwgMjI4LCAxMDgsIDE2LCAzMSwgMjUxLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIDE5MCwgMTA4LCAxNiwgCi0gICAgMzEsIDI1MSwgMTg5LCAxMDgsIDE2LCAzMSwgMjU0LCAxNDYsIDEwOCwgMTYsIDMxLCAyMjYsIDIyMiwgMTA4LCAxNiwgMzEsIAotICAgIDIxOCwgMjUwLCAxMDgsIDE2LCAzMSwgMjE2LCA4MywgMTA4LCAxNiwgMzEsIDI0MiwgMTAzLCAxMDgsIDE2LCAzMSwgMjEyLCAKLSAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI5LCAxMDgsIDE2LCAzMSwgMjUxLCAyMiwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAotICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI1NCwgMjMwLCAxMjcsIDEwOCwgMTYsIDMxLCAyMjEsIDIwNCwgNjQsIDIzNSwgNjEsIDEwOCwgCi0gICAgMTYsIDMxLCAyNTEsIDMzLCAxMDgsIDE2LCAzMSwgMjE1LCAyMjAsIDEwOCwgMTYsIDMxLCAyMTgsIDE1NiwgMjE1LCAyMjAsIAotICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE1NCwgMTA4LCAxNiwgMzEsIDIxOSwgNTgsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKLSAgICAxNiwgMzEsIDI0MCwgMjUzLCAyNDYsIDcyLCAxMDgsIDE2LCAzMSwgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNywgCi0gICAgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyNTEsIDE1MCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI4LCAyNTEsIDE1MCwgMTA4LCAKLSAgICAxNiwgMzEsIDI1NCwgMTQzLCAxMDgsIDE2LCAzMSwgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE4LCAxMDgsIDE2LCAzMSwgCi0gICAgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE3LCAxMDgsIDE2LCAzMSwgMjE4LCA2OSwgMTA4LCAxNiwgMzEsIDIyNCwgMjAzLCAKLSAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODksIDEwOCwgMTYsIDMxLCAyNDcsIDE5MSwgMTA4LCAxNiwgMzEsIDI0NywgMTkwLCAxMDgsIAotICAgIDE2LCAzMSwgMjI0LCAxMzQsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMywgMTA4LCAxNiwgMzEsIDI0OSwgMTMwLCAxMDgsIDE2LCAKLSAgICAzMSwgMjQ5LCAxMjksIDEwOCwgMTYsIDMxLCAyNDksIDEyOCwgMTA4LCAxNiwgMzEsIDI0OSwgMTI3LCAxMDgsIDE2LCAzMSwgCi0gICAgMjQ5LCAxMjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE3OCwgMTA4LCAxNiwgMzEsIDI1MiwgMTI3LCA2NCwgMjMxLCAxNTQsIAotICAgIDEwOCwgMTYsIDMxLCAyNTIsIDEyNywgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDYwLCAxMDgsIDE2LCAzMSwgCi0gICAgMjQwLCAyNDUsIDEwOCwgMTYsIDMxLCAyMjgsIDIxNywgMTA4LCAxNiwgMzEsIDI0OCwgMTUzLCAxMDgsIDE2LCAzMSwgMjMwLCAKLSAgICAxMzksIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgMTAyLCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwOSwgMTAsIDE0LCAyNDAsIDEwOCwgMTAsIDE0LCAyNDAsIDEwNywgMTAsIDE0LCAyNDAsIDEwNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwNSwgMTAsIDE0LCAyNDAsIDEwNCwgMTAsIDE0LCAyNDAsIDEwMywgMTAsIDE0LCAyNDAsIDEwMiwgMTAsIDE0LCAyNDAsIAotICAgIDEwMSwgMTAsIDE0LCAyNDAsIDEwMCwgMTAsIDE0LCAyNDAsIDk5LCAxMCwgMTQsIDI0MCwgOTgsIDEwLCAxNCwgMjQwLCA5NywgCi0gICAgMTAsIDE0LCAyNDAsIDk2LCAxMCwgMTQsIDI0MCwgOTUsIDEwLCAxNCwgMjQwLCA5NCwgMTAsIDE0LCAyNDAsIDkzLCAxMCwgCi0gICAgMTQsIDI0MCwgOTIsIDEwLCAxNCwgMjQwLCA5MSwgMTAsIDE0LCAyNDAsIDkwLCAxMCwgMTQsIDI0MCwgODksIDEwLCAxNCwgCi0gICAgMjQwLCA4OCwgMTAsIDE0LCAyNDAsIDg3LCAxMCwgMTQsIDI0MCwgODYsIDEwLCAxNCwgMjQwLCA4NSwgMTAsIDE0LCAyNDAsIAotICAgIDg0LCAxMCwgMTQsIDI0MCwgODMsIDEwLCAxNCwgMjQwLCA4MiwgMTAsIDE0LCAyNDAsIDgxLCAxMCwgMTQsIDI0MCwgODAsIAotICAgIDEwLCAxNCwgMjQwLCA3OSwgMTAsIDE0LCAyNDAsIDc4LCAxMCwgMTQsIDI0MCwgNzcsIDEwLCAxNCwgMjQwLCA3NiwgMTAsIAotICAgIDE0LCAyNDAsIDc1LCAxMCwgMTQsIDI0MCwgNzQsIDEwLCAxNCwgMjQwLCA3MywgMTAsIDE0LCAyNDAsIDcyLCAxMCwgMTQsIAotICAgIDI0MCwgNzEsIDEwLCAxNCwgMjQwLCA3MCwgMTAsIDE0LCAyNDAsIDY5LCAxMCwgMTQsIDI0MCwgNjgsIDEwLCAxNCwgMjQwLCAKLSAgICA2NywgMTAsIDE0LCAyNDAsIDY2LCAxMCwgMTQsIDI0MCwgNjUsIDEwLCAxNCwgMjQwLCA2NCwgMTAsIDE0LCAyNDAsIDYzLCAKLSAgICAxMCwgMTQsIDI0MCwgNjIsIDEwLCAxNCwgMjQwLCA2MSwgMTAsIDE0LCAyNDAsIDYwLCAxMCwgMTQsIDI0MCwgNTksIDEwLCAKLSAgICAxNCwgMjQwLCA1OCwgMTAsIDE0LCAyNDAsIDU3LCAxMCwgMTQsIDI0MCwgNTYsIDEwLCAxNCwgMjQwLCA1NSwgMTAsIDE0LCAKLSAgICAyNDAsIDU0LCAxMCwgMTQsIDI0MCwgNTMsIDEwLCAxNCwgMjQwLCA1MiwgMTAsIDE0LCAyNDAsIDUxLCAxMCwgMTQsIDI0MCwgCi0gICAgNTAsIDEwLCAxNCwgMjQwLCA0OSwgMTAsIDE0LCAyNDAsIDQ4LCAxMCwgMTQsIDI0MCwgNDcsIDEwLCAxNCwgMjQwLCA0NiwgCi0gICAgMTAsIDE0LCAyNDAsIDQ1LCAxMCwgMTQsIDI0MCwgNDQsIDEwLCAxNCwgMjQwLCA0MywgMTAsIDE0LCAyNDAsIDQyLCAxMCwgCi0gICAgMTQsIDI0MCwgNDEsIDEwLCAxNCwgMjQwLCA0MCwgMTAsIDE0LCAyNDAsIDM5LCAxMCwgMTQsIDI0MCwgMzgsIDEwLCAxNCwgCi0gICAgMjQwLCAzNywgMTAsIDE0LCAyNDAsIDM2LCAxMCwgMTQsIDI0MCwgMzUsIDEwLCAxNCwgMjQwLCAzNCwgMTAsIDE0LCAyNDAsIAotICAgIDMzLCAxMCwgMTQsIDI0MCwgMzIsIDEwLCAxNCwgMjQwLCAzMSwgMTAsIDE0LCAyNDAsIDMwLCAxMCwgMTQsIDI0MCwgMjksIAotICAgIDEwLCAxNCwgMjQwLCAyOCwgMTAsIDE0LCAyNDAsIDI3LCAxMCwgMTQsIDI0MCwgMjYsIDEwLCAxNCwgMjQwLCAyNSwgMTAsIAotICAgIDE0LCAyNDAsIDI0LCAxMCwgMTQsIDI0MCwgMjMsIDEwLCAxNCwgMjQwLCAyMiwgMTAsIDE0LCAyNDAsIDIxLCAxMCwgMTQsIAotICAgIDI0MCwgMjAsIDEwLCAxNCwgMjQwLCAxOSwgMTAsIDE0LCAyNDAsIDE4LCAxMCwgMTQsIDI0MCwgMTcsIDEwLCAxNCwgMjQwLCAKLSAgICAxNiwgMTAsIDE0LCAyNDAsIDE1LCAxMCwgMTQsIDI0MCwgMTQsIDEwLCAxNCwgMjQwLCAxMywgMTAsIDE0LCAyNDAsIDEyLCAKLSAgICAxMCwgMTQsIDI0MCwgMTEsIDEwLCAxNCwgMjQwLCAxMCwgMTAsIDE0LCAyNDAsIDksIDEwLCAxNCwgMjQwLCA4LCAxMCwgMTQsIAotICAgIDI0MCwgNywgMTAsIDE0LCAyNDAsIDYsIDEwLCAxNCwgMjQwLCA1LCAxMCwgMTQsIDI0MCwgNCwgMTAsIDE0LCAyNDAsIDMsIAotICAgIDEwLCAxNCwgMjQwLCAyLCAxMCwgMTQsIDI0MCwgMSwgMTAsIDE0LCAyNDAsIDAsIDEwLCAxNCwgMjM5LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTQsIDEwLCAxNCwgMjM5LCAyNTMsIDEwLCAxNCwgMjM5LCAyNTIsIDEwLCAxNCwgMjM5LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTAsIDEwLCAxNCwgMjM5LCAyNDksIDEwLCAxNCwgMjM5LCAyNDgsIDEwLCAxNCwgMjM5LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDYsIDEwLCAxNCwgMjM5LCAyNDUsIDEwLCAxNCwgMjM5LCAyNDQsIDEwLCAxNCwgMjM5LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDIsIDEwLCAxNCwgMjM5LCAyNDEsIDEwLCAxNCwgMjM5LCAyNDAsIDEwLCAxNCwgMjM5LCAyMzksIDEwLCAxNCwgCi0gICAgMjM5LCAyMzgsIDEwLCAxNCwgMjM5LCAyMzcsIDEwLCAxNCwgMjM5LCAyMzYsIDEwLCAxNCwgMjM5LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzQsIDEwLCAxNCwgMjM5LCAyMzMsIDEwLCAxNCwgMjM5LCAyMzIsIDEwLCAxNCwgMjM5LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzAsIDEwLCAxNCwgMjM5LCAyMjksIDEwLCAxNCwgMjM5LCAyMjgsIDEwLCAxNCwgMjM5LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjYsIDEwLCAxNCwgMjM5LCAyMjUsIDEwLCAxNCwgMjM5LCAyMjQsIDEwLCAxNCwgMjM5LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjIsIDEwLCAxNCwgMjM5LCAyMjEsIDEwLCAxNCwgMjM5LCAyMjAsIDEwLCAxNCwgMjM5LCAyMTksIDEwLCAxNCwgCi0gICAgMjM5LCAyMTgsIDEwLCAxNCwgMjM5LCAyMTcsIDEwLCAxNCwgMjM5LCAyMTYsIDEwLCAxNCwgMjM5LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTQsIDEwLCAxNCwgMjM5LCAyMTMsIDEwLCAxNCwgMjM5LCAyMTIsIDEwLCAxNCwgMjM5LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTAsIDEwLCAxNCwgMjM5LCAyMDksIDEwLCAxNCwgMjM5LCAyMDgsIDEwLCAxNCwgMjM5LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDYsIDEwLCAxNCwgMjM5LCAyMDUsIDEwLCAxNCwgMjM5LCAyMDQsIDEwLCAxNCwgMjM5LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDIsIDEwLCAxNCwgMjM5LCAyMDEsIDEwLCAxNCwgMjM5LCAyMDAsIDEwLCAxNCwgMjM5LCAxOTksIDEwLCAxNCwgCi0gICAgMjM5LCAxOTgsIDEwLCAxNCwgMjM5LCAxOTcsIDEwLCAxNCwgMjM5LCAxOTYsIDEwLCAxNCwgMjM5LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTQsIDEwLCAxNCwgMjM5LCAxOTMsIDEwLCAxNCwgMjM5LCAxOTIsIDEwLCAxNCwgMjM5LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTAsIDEwLCAxNCwgMjM5LCAxODksIDEwLCAxNCwgMjM5LCAxODgsIDEwLCAxNCwgMjM5LCAxODcsIDEwLCAxNCwgCi0gICAgMjM5LCAxODYsIDEwLCAxNCwgMjM5LCAxODUsIDEwLCAxNCwgMjM5LCAxODQsIDEwLCAxNCwgMjM5LCAxODMsIDEwLCAxNCwgCi0gICAgMjM5LCAxODIsIDEwLCAxNCwgMjM5LCAxODEsIDEwLCAxNCwgMjM5LCAxODAsIDEwLCAxNCwgMjM5LCAxNzksIDEwLCAxNCwgCi0gICAgMjM5LCAxNzgsIDEwLCAxNCwgMjM5LCAxNzcsIDEwLCAxNCwgMjM5LCAxNzYsIDEwLCAxNCwgMjM5LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzQsIDEwLCAxNCwgMjM5LCAxNzMsIDEwLCAxNCwgMjM5LCAxNzIsIDEwLCAxNCwgMjM5LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzAsIDEwLCAxNCwgMjM5LCAxNjksIDEwLCAxNCwgMjM5LCAxNjgsIDEwLCAxNCwgMjM5LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjYsIDEwLCAxNCwgMjM5LCAxNjUsIDEwLCAxNCwgMjM5LCAxNjQsIDEwLCAxNCwgMjM5LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjIsIDEwLCAxNCwgMjM5LCAxNjEsIDEwLCAxNCwgMjM5LCAxNjAsIDEwLCAxNCwgMjM5LCAxNTksIDEwLCAxNCwgCi0gICAgMjM5LCAxNTgsIDEwLCAxNCwgMjM5LCAxNTcsIDEwLCAxNCwgMjM5LCAxNTYsIDEwLCAxNCwgMjM5LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTQsIDEwLCAxNCwgMjM5LCAxNTMsIDEwLCAxNCwgMjM5LCAxNTIsIDEwLCAxNCwgMjM5LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTAsIDEwLCAxNCwgMjM5LCAxNDksIDEwLCAxNCwgMjM5LCAxNDgsIDEwLCAxNCwgMjM5LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDYsIDEwLCAxNCwgMjM5LCAxNDUsIDEwLCAxNCwgMjM5LCAxNDQsIDEwLCAxNCwgMjM5LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDIsIDEwLCAxNCwgMjM5LCAxNDEsIDEwLCAxNCwgMjM5LCAxNDAsIDEwLCAxNCwgMjM5LCAxMzksIDEwLCAxNCwgCi0gICAgMjM5LCAxMzgsIDEwLCAxNCwgMjM5LCAxMzcsIDEwLCAxNCwgMjM5LCAxMzYsIDEwLCAxNCwgMjM5LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzQsIDEwLCAxNCwgMjM5LCAxMzMsIDEwLCAxNCwgMjM5LCAxMzIsIDEwLCAxNCwgMjM5LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzAsIDEwLCAxNCwgMjM5LCAxMjksIDEwLCAxNCwgMjM5LCAxMjgsIDEwLCAxNCwgMjM5LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjYsIDEwLCAxNCwgMjM5LCAxMjUsIDEwLCAxNCwgMjM5LCAxMjQsIDEwLCAxNCwgMjM5LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjIsIDEwLCAxNCwgMjM5LCAxMjEsIDEwLCAxNCwgMjM5LCAxMjAsIDEwLCAxNCwgMjM5LCAxMTksIDEwLCAxNCwgCi0gICAgMjM5LCAxMTgsIDEwLCAxNCwgMjM5LCAxMTcsIDEwLCAxNCwgMjM5LCAxMTYsIDEwLCAxNCwgMjM5LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTQsIDEwLCAxNCwgMjM5LCAxMTMsIDEwLCAxNCwgMjM5LCAxMTIsIDEwLCAxNCwgMjM5LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTAsIDEwLCAxNCwgMjM5LCAxMDksIDEwLCAxNCwgMjM5LCAxMDgsIDEwLCAxNCwgMjM5LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDYsIDEwLCAxNCwgMjM5LCAxMDUsIDEwLCAxNCwgMjM5LCAxMDQsIDEwLCAxNCwgMjM5LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDIsIDEwLCAxNCwgMjM5LCAxMDEsIDEwLCAxNCwgMjM5LCAxMDAsIDEwLCAxNCwgMjM5LCA5OSwgMTAsIDE0LCAKLSAgICAyMzksIDk4LCAxMCwgMTQsIDIzOSwgOTcsIDEwLCAxNCwgMjM5LCA5NiwgMTAsIDE0LCAyMzksIDk1LCAxMCwgMTQsIDIzOSwgCi0gICAgOTQsIDEwLCAxNCwgMjM5LCA5MywgMTAsIDE0LCAyMzksIDkyLCAxMCwgMTQsIDIzOSwgOTEsIDEwLCAxNCwgMjM5LCA5MCwgCi0gICAgMTAsIDE0LCAyMzksIDg5LCAxMCwgMTQsIDIzOSwgODgsIDEwLCAxNCwgMjM5LCA4NywgMTAsIDE0LCAyMzksIDg2LCAxMCwgCi0gICAgMTQsIDIzOSwgODUsIDEwLCAxNCwgMjM5LCA4NCwgMTAsIDE0LCAyMzksIDgzLCAxMCwgMTQsIDIzOSwgODIsIDEwLCAxNCwgCi0gICAgMjM5LCA4MSwgMTAsIDE0LCAyMzksIDgwLCAxMCwgMTQsIDIzOSwgNzksIDEwLCAxNCwgMjM5LCA3OCwgMTAsIDE0LCAyMzksIAotICAgIDc3LCAxMCwgMTQsIDIzOSwgNzYsIDEwLCAxNCwgMjM5LCA3NSwgMTAsIDE0LCAyMzksIDc0LCAxMCwgMTQsIDIzOSwgNzMsIAotICAgIDEwLCAxNCwgMjM5LCA3MiwgMTAsIDE0LCAyMzksIDcxLCAxMCwgMTQsIDIzOSwgNzAsIDEwLCAxNCwgMjM5LCA2OSwgMTAsIAotICAgIDE0LCAyMzksIDY4LCAxMCwgMTQsIDIzOSwgNjcsIDEwLCAxNCwgMjM5LCA2NiwgMTAsIDE0LCAyMzksIDY1LCAxMCwgMTQsIAotICAgIDIzOSwgNjQsIDEwLCAxNCwgMjM5LCA2MywgMTAsIDE0LCAyMzksIDYyLCAxMCwgMTQsIDIzOSwgNjEsIDEwLCAxNCwgMjM5LCAKLSAgICA2MCwgMTAsIDE0LCAyMzksIDU5LCAxMCwgMTQsIDIzOSwgNTgsIDEwLCAxNCwgMjM5LCA1NywgMTAsIDE0LCAyMzksIDU2LCAKLSAgICAxMCwgMTQsIDIzOSwgNTUsIDEwLCAxNCwgMjM5LCA1NCwgMTAsIDE0LCAyMzksIDUzLCAxMCwgMTQsIDIzOSwgNTIsIDEwLCAKLSAgICAxNCwgMjM5LCA1MSwgMTAsIDE0LCAyMzksIDUwLCAxMCwgMTQsIDIzOSwgNDksIDEwLCAxNCwgMjM5LCA0OCwgMTAsIDE0LCAKLSAgICAyMzksIDQ3LCAxMCwgMTQsIDIzOSwgNDYsIDEwLCAxNCwgMjM5LCA0NSwgMTAsIDE0LCAyMzksIDQ0LCAxMCwgMTQsIDIzOSwgCi0gICAgNDMsIDEwLCAxNCwgMjM5LCA0MiwgMTAsIDE0LCAyMzksIDQxLCAxMCwgMTQsIDIzOSwgNDAsIDEwLCAxNCwgMjM5LCAzOSwgCi0gICAgMTAsIDE0LCAyMzksIDM4LCAxMCwgMTQsIDIzOSwgMzcsIDEwLCAxNCwgMjM5LCAzNiwgMTAsIDE0LCAyMzksIDM1LCAxMCwgCi0gICAgMTQsIDIzOSwgMzQsIDEwLCAxNCwgMjM5LCAzMywgMTAsIDE0LCAyMzksIDMyLCAxMCwgMTQsIDIzOSwgMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAzMCwgMTAsIDE0LCAyMzksIDI5LCAxMCwgMTQsIDIzOSwgMjgsIDEwLCAxNCwgMjM5LCAyNywgMTAsIDE0LCAyMzksIAotICAgIDI2LCAxMCwgMTQsIDIzOSwgMjUsIDEwLCAxNCwgMjM5LCAyNCwgMTAsIDE0LCAyMzksIDIzLCAxMCwgMTQsIDIzOSwgMjIsIAotICAgIDEwLCAxNCwgMjM5LCAyMSwgMTAsIDE0LCAyMzksIDIwLCAxMCwgMTQsIDIzOSwgMTksIDEwLCAxNCwgMjM5LCAxOCwgMTAsIAotICAgIDE0LCAyMzksIDE3LCAxMCwgMTQsIDIzOSwgMTYsIDEwLCAxNCwgMjM5LCAxNSwgMTAsIDE0LCAyMzksIDE0LCAxMCwgMTQsIAotICAgIDIzOSwgMTMsIDEwLCAxNCwgMjM5LCAxMiwgMTAsIDE0LCAyMzksIDExLCAxMCwgMTQsIDIzOSwgMTAsIDEwLCAxNCwgMjM5LCAKLSAgICA5LCAxMCwgMTQsIDIzOSwgOCwgMTAsIDE0LCAyMzksIDcsIDEwLCAxNCwgMjM5LCA2LCAxMCwgMTQsIDIzOSwgNSwgMTAsIAotICAgIDE0LCAyMzksIDQsIDEwLCAxNCwgMjM5LCAzLCAxMCwgMTQsIDIzOSwgMiwgMTAsIDE0LCAyMzksIDEsIDEwLCAxNCwgMjM5LCAKLSAgICAwLCAxMCwgMTQsIDIzOCwgMjU1LCAxMCwgMTQsIDIzOCwgMjU0LCAxMCwgMTQsIDIzOCwgMjUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjUyLCAxMCwgMTQsIDIzOCwgMjUxLCAxMCwgMTQsIDIzOCwgMjUwLCAxMCwgMTQsIDIzOCwgMjQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzOCwgMjQ3LCAxMCwgMTQsIDIzOCwgMjQ2LCAxMCwgMTQsIDIzOCwgMjQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzOCwgMjQzLCAxMCwgMTQsIDIzOCwgMjQyLCAxMCwgMTQsIDIzOCwgMjQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjQwLCAxMCwgMTQsIDIzOCwgMjM5LCAxMCwgMTQsIDIzOCwgMjM4LCAxMCwgMTQsIDIzOCwgMjM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjM2LCAxMCwgMTQsIDIzOCwgMjM1LCAxMCwgMTQsIDIzOCwgMjM0LCAxMCwgMTQsIDIzOCwgMjMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjMyLCAxMCwgMTQsIDIzOCwgMjMxLCAxMCwgMTQsIDIzOCwgMjMwLCAxMCwgMTQsIDIzOCwgMjI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI4LCAxMCwgMTQsIDIzOCwgMjI3LCAxMCwgMTQsIDIzOCwgMjI2LCAxMCwgMTQsIDIzOCwgMjI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI0LCAxMCwgMTQsIDIzOCwgMjIzLCAxMCwgMTQsIDIzOCwgMjIyLCAxMCwgMTQsIDIzOCwgMjIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjIwLCAxMCwgMTQsIDIzOCwgMjE5LCAxMCwgMTQsIDIzOCwgMjE4LCAxMCwgMTQsIDIzOCwgMjE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjE2LCAxMCwgMTQsIDIzOCwgMjE1LCAxMCwgMTQsIDIzOCwgMjE0LCAxMCwgMTQsIDIzOCwgMjEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjEyLCAxMCwgMTQsIDIzOCwgMjExLCAxMCwgMTQsIDIzOCwgMjEwLCAxMCwgMTQsIDIzOCwgMjA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA4LCAxMCwgMTQsIDIzOCwgMjA3LCAxMCwgMTQsIDIzOCwgMjA2LCAxMCwgMTQsIDIzOCwgMjA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA0LCAxMCwgMTQsIDIzOCwgMjAzLCAxMCwgMTQsIDIzOCwgMjAyLCAxMCwgMTQsIDIzOCwgMjAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAwLCAxMCwgMTQsIDIzOCwgMTk5LCAxMCwgMTQsIDIzOCwgMTk4LCAxMCwgMTQsIDIzOCwgMTk3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTk2LCAxMCwgMTQsIDIzOCwgMTk1LCAxMCwgMTQsIDIzOCwgMTk0LCAxMCwgMTQsIDIzOCwgMTkzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTkyLCAxMCwgMTQsIDIzOCwgMTkxLCAxMCwgMTQsIDIzOCwgMTkwLCAxMCwgMTQsIDIzOCwgMTg5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg4LCAxMCwgMTQsIDIzOCwgMTg3LCAxMCwgMTQsIDIzOCwgMTg2LCAxMCwgMTQsIDIzOCwgMTg1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg0LCAxMCwgMTQsIDIzOCwgMTgzLCAxMCwgMTQsIDIzOCwgMTgyLCAxMCwgMTQsIDIzOCwgMTgxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTgwLCAxMCwgMTQsIDIzOCwgMTc5LCAxMCwgMTQsIDIzOCwgMTc4LCAxMCwgMTQsIDIzOCwgMTc3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTc2LCAxMCwgMTQsIDIzOCwgMTc1LCAxMCwgMTQsIDIzOCwgMTc0LCAxMCwgMTQsIDIzOCwgMTczLCAxMCwgMTQsIDIzOCwgCi0gICAgMTcyLCAxMCwgMTQsIDIzOCwgMTcxLCAxMCwgMTQsIDIzOCwgMTcwLCAxMCwgMTQsIDIzOCwgMTY5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY4LCAxMCwgMTQsIDIzOCwgMTY3LCAxMCwgMTQsIDIzOCwgMTY2LCAxMCwgMTQsIDIzOCwgMTY1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY0LCAxMCwgMTQsIDIzOCwgMTYzLCAxMCwgMTQsIDIzOCwgMTYyLCAxMCwgMTQsIDIzOCwgMTYxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTYwLCAxMCwgMTQsIDIzOCwgMTU5LCAxMCwgMTQsIDIzOCwgMTU4LCAxMCwgMTQsIDIzOCwgMTU3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTU2LCAxMCwgMTQsIDIzOCwgMTU1LCAxMCwgMTQsIDIzOCwgMTU0LCAxMCwgMTQsIDIzOCwgMTUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTUyLCAxMCwgMTQsIDIzOCwgMTUxLCAxMCwgMTQsIDIzOCwgMTUwLCAxMCwgMTQsIDIzOCwgMTQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzOCwgMTQ3LCAxMCwgMTQsIDIzOCwgMTQ2LCAxMCwgMTQsIDIzOCwgMTQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzOCwgMTQzLCAxMCwgMTQsIDIzOCwgMTQyLCAxMCwgMTQsIDIzOCwgMTQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTQwLCAxMCwgMTQsIDIzOCwgMTM5LCAxMCwgMTQsIDIzOCwgMTM4LCAxMCwgMTQsIDIzOCwgMTM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTM2LCAxMCwgMTQsIDIzOCwgMTM1LCAxMCwgMTQsIDIzOCwgMTM0LCAxMCwgMTQsIDIzOCwgMTMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTMyLCAxMCwgMTQsIDIzOCwgMTMxLCAxMCwgMTQsIDIzOCwgMTMwLCAxMCwgMTQsIDIzOCwgMTI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI4LCAxMCwgMTQsIDIzOCwgMTI3LCAxMCwgMTQsIDIzOCwgMTI2LCAxMCwgMTQsIDIzOCwgMTI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI0LCAxMCwgMTQsIDIzOCwgMTIzLCAxMCwgMTQsIDIzOCwgMTIyLCAxMCwgMTQsIDIzOCwgMTIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTIwLCAxMCwgMTQsIDIzOCwgMTE5LCAxMCwgMTQsIDIzOCwgMTE4LCAxMCwgMTQsIDIzOCwgMTE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTE2LCAxMCwgMTQsIDIzOCwgMTE1LCAxMCwgMTQsIDIzOCwgMTE0LCAxMCwgMTQsIDIzOCwgMTEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTEyLCAxMCwgMTQsIDIzOCwgMTExLCAxMCwgMTQsIDIzOCwgMTEwLCAxMCwgMTQsIDIzOCwgMTA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA4LCAxMCwgMTQsIDIzOCwgMTA3LCAxMCwgMTQsIDIzOCwgMTA2LCAxMCwgMTQsIDIzOCwgMTA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA0LCAxMCwgMTQsIDIzOCwgMTAzLCAxMCwgMTQsIDIzOCwgMTAyLCAxMCwgMTQsIDIzOCwgMTAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTAwLCAxMCwgMTQsIDIzOCwgOTksIDEwLCAxNCwgMjM4LCA5OCwgMTAsIDE0LCAyMzgsIDk3LCAxMCwgMTQsIDIzOCwgOTYsIAotICAgIDEwLCAxNCwgMjM4LCA5NSwgMTAsIDE0LCAyMzgsIDk0LCAxMCwgMTQsIDIzOCwgOTMsIDEwLCAxNCwgMjM4LCA5MiwgMTAsIAotICAgIDE0LCAyMzgsIDkxLCAxMCwgMTQsIDIzOCwgOTAsIDEwLCAxNCwgMjM4LCA4OSwgMTAsIDE0LCAyMzgsIDg4LCAxMCwgMTQsIAotICAgIDIzOCwgODcsIDEwLCAxNCwgMjM4LCA4NiwgMTAsIDE0LCAyMzgsIDg1LCAxMCwgMTQsIDIzOCwgODQsIDEwLCAxNCwgMjM4LCAKLSAgICA4MywgMTAsIDE0LCAyMzgsIDgyLCAxMCwgMTQsIDIzOCwgODEsIDEwLCAxNCwgMjM4LCA4MCwgMjMzLCA5NiwgMjE3LCA4NSwgCi0gICAgMTI5LCAyMTksIDIwLCAxMjksIDI0NSwgMzksIDc5LCAxMjksIDIyNCwgMSwgNzksIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgCi0gICAgMTQwLCA1MCwgMTI5LCAyMjUsIDE4NSwgNTAsIDEyOSwgMjU0LCAxMzQsIDEyOSwgMjU0LCA2NSwgMTI5LCA0MywgMjI2LCA3LCAKLSAgICAxMjksIDQ0LCAyMjYsIDcsIDEyOSwgMjUzLCAyMjQsIDEyOSwgOTYsIDUwLCAxMjksIDI0OSwgMjI3LCAxMjksIDI0MCwgCi0gICAgMTc0LCAxMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTI5LCAyMTksIDQ4LCAxMjksIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAKLSAgICAxMTEsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIDIxLCAxNjEsIDEyOSwgMjEsIDE5MCwgMTI5LCAyMSwgCi0gICAgMTk1LCAxMjksIDIxLCAxOTksIDEyOSwgMjEsIDE5NiwgMTI5LCAyMSwgMjAxLCAxMjksIDI0OSwgMjM0LCAxMjksIDIyMCwgCi0gICAgMTUyLCAxMjksIDIzMywgMjEsIDUwLCAxMjksIDI0NSwgMTA2LCA1MCwgMTI5LCAyNDIsIDEzNywgNTAsIDEyOSwgMjI0LCAKLSAgICAxNiwgNzksIDEyOSwgMjQ5LCAyMjUsIDI1MywgMjE0LCAxMjksIDcsIDYsIDEsIDYxLCAxMjksIDcsIDYsIDEsIDI1MywgCi0gICAgMTY2LCAxMjksIDcsIDYsIDEsIDI1MSwgNzQsIDEyOSwgNywgNiwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCAKLSAgICA3LCA2LCAxLCAyNDUsIDE0LCAxMjksIDcsIDYsIDEsIDI0MywgMjA5LCAxMjksIDcsIDYsIDEsIDI0MiwgNjcsIDEyOSwgNywgCi0gICAgNiwgMSwgNzQsIDEyOSwgNywgNiwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNiwgMSwgMjM1LCAyOSwgMTI5LCA3LCA2LCAxLCAKLSAgICAxNTYsIDEyOSwgNywgNiwgMSwgMTk0LCAxMjksIDcsIDYsIDEsIDIzMCwgMzAsIDEyOSwgNywgNiwgMSwgNzgsIDEyOSwgNywgCi0gICAgNiwgMSwgMjI2LCAxMDksIDEyOSwgNywgNiwgMSwgMjI0LCA5OSwgMTI5LCA3LCA2LCAxLCAxNTMsIDEyOSwgNywgNiwgMSwgCi0gICAgMjIyLCA5MywgMTI5LCA3LCA2LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA2LCAxLCA2OSwgMTI5LCA3LCA2LCAxLCAyMTQsIAotICAgIDEwNSwgMTI5LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjksIDcsIDYsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDYsIDEsIDIxMSwgCi0gICAgMTE3LCAxMjksIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCA0MiwgMTI3LCAxMjksIDIyMywgNTMsIDIxOSwgNDgsIAotICAgIDEyOSwgNDQsIDQyLCAxMjcsIDEyOSwgMjUwLCAzOSwgMjU1LCAyMywgMTI5LCAxMjEsIDIzMiwgMjE5LCAxMjksIDI0MiwgCi0gICAgMTQ0LCAyNTUsIDIzLCAxMjksIDcsIDQsIDEsIDYxLCAxMjksIDcsIDQsIDEsIDI1MywgMTY2LCAxMjksIDcsIDQsIDEsIAotICAgIDI1MSwgNzQsIDEyOSwgNywgNCwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA0LCAxLCA3NiwgMTI5LCA3LCA0LCAxLCAyNDUsIDE0LCAKLSAgICAxMjksIDcsIDQsIDEsIDI0MywgMjA5LCAxMjksIDcsIDQsIDEsIDI0MiwgNjcsIDEyOSwgNywgNCwgMSwgNzQsIDEyOSwgNywgCi0gICAgNCwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNCwgMSwgMjM1LCAyOSwgMTI5LCA3LCA0LCAxLCAxNTYsIDEyOSwgNywgNCwgMSwgCi0gICAgMTk0LCAxMjksIDcsIDQsIDEsIDIzMCwgMzAsIDEyOSwgNywgNCwgMSwgNzgsIDEyOSwgNywgNCwgMSwgMjI2LCAxMDksIAotICAgIDEyOSwgNywgNCwgMSwgMjI0LCA5OSwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgMjIyLCA5MywgMTI5LCA3LCAKLSAgICA0LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA0LCAxLCA2OSwgMTI5LCA3LCA0LCAxLCAyMTQsIDEwNSwgMTI5LCA3LCA0LCAxLCAKLSAgICAyMTIsIDk4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTE3LCAxMjksIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDEwNywgMTI3LCAxMjksIDY3LCAyMzIsIDIxOSwgMTI5LCA0NCwgMjQ5LCAxMDcsIAotICAgIDEyNywgMTI5LCAxODQsIDI1MSwgMTQsIDIxNywgODUsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNTgsIAotICAgIDQ1LCAyMjEsIDQ2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDEzLCA0NSwgMjIxLCAyLCA0NSwgMjIwLCAKLSAgICAyNDcsIDQ1LCAyMjAsIDIzOSwgNDUsIDIyMCwgMjM4LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgCi0gICAgMjM0LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIAotICAgIDIyOSwgNDUsIDIyMCwgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAKLSAgICAyMjMsIDQ1LCAyMjAsIDIyMiwgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgCi0gICAgMjE4LCA0NSwgMjIwLCAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIAotICAgIDIxMiwgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAKLSAgICAyMDcsIDQ1LCAyMjAsIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgCi0gICAgMjAxLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIAotICAgIDE5NiwgNDUsIDIyMCwgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAKLSAgICAxOTAsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgCi0gICAgMTg1LCA0NSwgMjIwLCAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIAotICAgIDE3OSwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAKLSAgICAxNzQsIDQ1LCAyMjAsIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgCi0gICAgMTY4LCA0NSwgMjIwLCAxNjcsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIAotICAgIDE2MywgNDUsIDIyMCwgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIxLCAKLSAgICAxNTYsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgCi0gICAgMTUxLCA0NSwgMjIxLCAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIAotICAgIDE0NSwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAKLSAgICAxNDAsIDQ1LCAyMjEsIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgCi0gICAgMTM0LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIAotICAgIDEyOSwgNDUsIDIyMSwgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAKLSAgICAxMjMsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgCi0gICAgMTE4LCA0NSwgMjIxLCAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIAotICAgIDExMiwgNDUsIDIyMSwgMTExLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAKLSAgICAxMDcsIDQ1LCAyMjEsIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgCi0gICAgMTAxLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCAKLSAgICA0NSwgMjIxLCA5NSwgNDUsIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTAsIDQ1LCAyMjEsIAotICAgIDg5LCA0NSwgMjIxLCA4OCwgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAKLSAgICAyMjEsIDgzLCA0NSwgMjIxLCA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDc5LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgNzcsIAotICAgIDQ1LCAyMjEsIDc2LCA0NSwgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgCi0gICAgNzEsIDQ1LCAyMjEsIDcwLCA0NSwgMjIxLCA2OCwgNDUsIDIyMSwgNjcsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIAotICAgIDIyMSwgNjQsIDQ1LCAyMjEsIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgCi0gICAgNDUsIDIyMSwgNTcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCAKLSAgICA1MiwgNDUsIDIyMSwgNTEsIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ1LCA0NSwgCi0gICAgMjIxLCA0NCwgNDUsIDIyMSwgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCAKLSAgICA0NSwgMjIxLCAzOCwgNDUsIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIAotICAgIDMyLCA0NSwgMjIxLCAzMSwgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAKLSAgICAyMjEsIDI2LCA0NSwgMjIxLCAyNSwgNDUsIDIyMSwgMjMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIAotICAgIDQ1LCAyMjEsIDE5LCA0NSwgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgCi0gICAgMTQsIDQ1LCAyMjEsIDEyLCA0NSwgMjIxLCAxMSwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAKLSAgICAyMjEsIDcsIDQ1LCAyMjEsIDYsIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDEsIDQ1LCAKLSAgICAyMjEsIDAsIDQ1LCAyMjAsIDI1NSwgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgCi0gICAgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDYsIDQ1LCAyMjAsIAotICAgIDI0NSwgNDUsIDIyMCwgMjQ0LCA0NSwgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAKLSAgICAyNDAsIDIyNywgMjA2LCAyMjcsIDIwOCwgMjE4LCAxNTQsIDY0LCAyNDEsIDI0MCwgMjE5LCA1MCwgMjE4LCAxNTQsIDY0LCAKLSAgICAyMTYsIDIxMywgMjE4LCA4NiwgMjQ1LCAxNTEsIDY0LCAyMTYsIDIxMywgMjQ1LCA2NCwgMjQ1LCAxNTEsIDY0LCAyMTUsIAotICAgIDI0NCwgMjQ1LCAxMTcsIDI0NSwgMTQwLCAyNDUsIDE0MSwgMjU1LCAxNiwgMjU1LCAxNywgMjU0LCAxNzYsIDI1MiwgNTUsIAotICAgIDI1MiwgMTg3LCAyNTEsIDEzOSwgMTM1LCAyMTcsIDkwLCAyMDMsIDIxNywgOTAsIDI0MCwgMjM0LCAyMTcsIDk0LCAyMzIsIAotICAgIDIyMCwgMjQ0LCAxNTMsIDE2NiwgMjMyLCAyMTksIDI0NSwgMTUxLCA2NCwgMjMyLCAyMTksIDIzMywgNiwgMjI4LCAxNDAsIAotICAgIDI0NSwgMTIwLCAyMzIsIDIyMCwgMjE3LCA5MCwgNjcsIDIxNywgOTAsIDIxMiwgMTE4LCAyNDQsIDI4LCAyNDQsIDE1MywgCi0gICAgMjQ0LCAxMzMsIDI1MCwgMjM4LCAyMjMsIDU2LCAyNDksIDE1MSwgMjIwLCAzMCwgMjI2LCAxMzQsIDIzMiwgMTU2LCAxMTEsIAotICAgIDIxOSwgNjAsIDIyMCwgMzAsIDIzNiwgNiwgMjMyLCAxNTYsIDIxMCwgODYsIDIxOSwgMTkzLCAyNDgsIDE1OSwgMjMyLCAKLSAgICAyMTAsIDI0NSwgODUsIDI0NywgMTYzLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAyNDgsIDE0OSwgMjQ4LCAzOSwgMjQ5LCAKLSAgICAxODYsIDEwNSwgMjQ4LCAxNDgsIDI0OCwgMzksIDI0OSwgMTg2LCAxNTgsIDI0OCwgMTQ3LCAyNDgsIDM5LCAyNDksIDE4NiwgCi0gICAgMTYxLCAyNDgsIDE0NiwgMTUyLCAyNTUsIDE2LCAyMjksIDIxNCwgMjE3LCAxNzgsIDIzNiwgNjksIDIxNywgMTgxLCAyNDUsIAotICAgIDE1MSwgNjQsIDIxNSwgMjQ1LCAyNTEsIDIyMSwgMjQ1LCA3MCwgMjUxLCAxMywgMjUxLCAxNSwgMjQ1LCAxNTEsIDY0LCAKLSAgICAyMzEsIDg2LCAyNDUsIDExOCwgMjE4LCA2MiwgMjE4LCA3OSwgMjQ1LCA4NSwgMjQ1LCA4NiwgMjM1LCAyMzksIDIyMCwgCi0gICAgMTQwLCAxNjEsIDI0NCwgMTE1LCAyMjAsIDEzOSwgMjQzLCAyNDUsIDIzNSwgMjM5LCAyMjAsIDE0MCwgMTU4LCAyNDIsIAotICAgIDEyOCwgMjIwLCAxMzksIDI0MiwgMTI1LCAyMzUsIDIzOSwgMjIwLCAxNDAsIDEwNSwgMjIzLCAxMjQsIDIyMCwgMTM5LCAKLSAgICAyMjIsIDE0NywgMjM1LCAyMzksIDIyMCwgMTQwLCAxMTEsIDIxNCwgMTc0LCAyMjAsIDEzOSwgMjE0LCAxMzMsIDIxOSwgMjMsIAotICAgIDI0OCwgNzEsIDI0OCwgNzMsIDIyNiwgODIsIDI1MCwgMTUwLCAyMjYsIDg0LCAxMjUsIDIyNiwgMjQ0LCAyMjQsIDE5NiwgCi0gICAgMjQxLCA1NCwgMjUxLCAxNTgsIDIyNSwgMTc2LCAyNDEsIDIxMCwgMjUxLCAxNjksIDIyOCwgODAsIDI1MSwgMTU4LCAyNDEsIAotICAgIDIxMCwgMjI5LCAxODAsIDIzNSwgMjQ5LCAyMzUsIDI1MSwgMjI5LCA4NywgMjMyLCAyMTksIDIyOSwgMTA0LCAyMTgsIDE1NCwgCi0gICAgNjQsIDIyMSwgMTYwLCAyNTQsIDI2LCAyMTgsIDIyNSwgMjQ1LCAxNTEsIDY0LCAyMjEsIDE2MCwgMjU0LCAyNiwgMjQ1LCAKLSAgICA4OCwgMTM1LCAyMTcsIDkxLCAyMjAsIDEyOSwgMjAzLCAyMTcsIDkxLCAyMjAsIDEyOSwgMjQwLCAyMzEsIDEzNSwgMjE3LCAKLSAgICA5MSwgMiwgMjM1LCA0MSwgMjAzLCAyMTcsIDkxLCAyLCAyMzUsIDQxLCAyNDAsIDIzMiwgMjMyLCAyMjAsIDIxNywgOTEsIAotICAgIDIyMCwgMTI5LCA2NywgMjE3LCA5MSwgMjIwLCAxMjksIDIxMiwgMTE3LCAyMjYsIDEsIDIzMiwgMjIwLCAyNDQsIDIyLCAKLSAgICAyMjYsIDEsIDIzMiwgMjIwLCAyNDYsIDExNCwgMjI1LCAzNSwgMjI2LCAxLCAyMzIsIDIyMCwgMjUyLCAxODYsIDIyNiwgMSwgCi0gICAgMjMyLCAyMjAsIDIxNCwgMTYzLCAyMjUsIDMxLCAyMjMsIDUzLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDIyMywgNTMsIDIzNSwgCi0gICAgMjQ5LCAyMjMsIDM4LCAyMTksIDE1NywgMjIwLCAzMCwgMTA1LCAyMTksIDE1NCwgMjE4LCAyMjcsIDIxOSwgMTU3LCAyMjAsIAotICAgIDMwLCAxNTgsIDIxOSwgMTUzLCAyMTgsIDIyNiwgMjQ4LCAzOSwgMjQ5LCAxODYsIDIxOCwgMTA3LCAyNDgsIDE0NSwgMjI0LCAKLSAgICAxODYsIDIxNCwgMTMyLCAxMTEsIDIyNCwgMTg2LCAyMTQsIDEzMCwgMjI0LCAxNTIsIDIyNCwgMTg2LCAyMTQsIDEzMiwgCi0gICAgMTA1LCAyMjQsIDE4NiwgMjE0LCAxMjksIDIyNCwgMTUxLCAyMjAsIDEzMCwgMjE1LCAyNDMsIDIxOCwgMTUzLCAyMTgsIDkwLCAKLSAgICAyNTEsIDE0LCAyNTAsIDE1MCwgMjUwLCAyMTcsIDIzMSwgNDgsIDIxMiwgNTksIDIzMCwgNDgsIDIxOCwgMTU0LCA2NCwgCi0gICAgMjQyLCAxMTQsIDI1NCwgMjYsIDIxOCwgMTU0LCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDIxOSwgMjIsIDI0NSwgMTUxLCAKLSAgICA2NCwgMjQyLCAxMTQsIDI1NCwgMjYsIDI0NSwgMTUxLCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDI0NSwgMTE1LCAyMTgsIAotICAgIDE1NCwgNjQsIDIxOCwgMTA3LCAyMTksIDM3LCAyMTksIDE1NywgMjQyLCAxNDgsIDEzNSwgMjM1LCAyMDIsIDIyMCwgMTA5LCAKLSAgICAyMTksIDE1NywgMTM1LCAyMzUsIDIwMiwgMjIxLCAxOTYsIDI0OSwgMTg2LCAyMjAsIDEzNywgMjM1LCAyMDIsIDI0OSwgCi0gICAgMTIxLCAyMTgsIDEwOCwgMjE2LCAyMzcsIDIxOCwgMTcwLCAyMjYsIDE3MywgMjE3LCAxNjgsIDI0OSwgMjI2LCAyMjYsIAotICAgIDE0NiwgMjI0LCAxODcsIDIzMSwgNDcsIDIyNSwgMjIsIDI1NCwgNjEsIDIyNCwgMTgxLCAyNDksIDIyNiwgMjU0LCA3NywgCi0gICAgMjI5LCAxNjgsIDIxOSwgMjAyLCA3LCA2LCAxLCAyNDMsIDAsIDcsIDQsIDEsIDI0MywgMCwgMjUwLCAxNjcsIDI1NCwgMTU3LCAKLSAgICAxODMsIDIxOCwgNjgsIDI0OSwgMjM1LCAyMTksIDEwOCwgMjMzLCA1MiwgMTY1LCAxLCAyMzIsIDE4MSwgMjA5LCAyMDksIDEsIAotICAgIDI0NCwgNTIsIDI0NCwgNDQsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyNDQsIDE2NSwgMjA5LCAyMDksIDEsIDIyMiwgMjEzLCAKLSAgICAyMDksIDIwOSwgMSwgMjMyLCAxNjIsIDYzLCAxNjQsIDI1MSwgMjMxLCAyMjAsIDUsIDI0MiwgMjIyLCAyMzAsIDI1MywgCi0gICAgMjIzLCA0NCwgMjQzLCAyMjMsIDI0MywgMjIyLCAyNDMsIDIyMSwgMjMwLCA1MCwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIAotICAgIDI1NCwgMjMyLCAxMDcsIDIyMiwgMjIxLCAyMzIsIDEwOSwgMjIyLCAyMjMsIDIyNSwgMjI3LCAyMzIsIDEwNiwgMjIyLCAKLSAgICAyMjAsIDIyOCwgMTExLCAyMzAsIDE3MCwgMjExLCAyMjksIDIzMiwgMTA4LCAyMjIsIDIyMiwgMjQzLCAyNDQsIDIyNSwgCi0gICAgMjI2LCAyMTIsIDE1LCAyNDUsIDE3MCwgMjQzLCAyMzMsIDIzMCwgMjM0LCAyMjYsIDIwMSwgMjE0LCAxMzQsIDg3LCAyMzAsIAotICAgIDIzNCwgMjQ4LCAxNjUsIDg3LCA4LCAzLCAyMzUsIDE2NCwgNzksIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA3MSwgCi0gICAgMjMzLCAyNiwgMTI3LCAyMTMsIDExOCwgMjEzLCA3LCAyMTIsIDE5NSwgMjEyLCAxODQsIDIxMiwgMTczLCAyMTIsIDE2MiwgCi0gICAgMjEyLCAxNTEsIDIxMiwgMTQwLCAyMTIsIDEyOSwgMjEzLCAxMTcsIDIxMywgMTA2LCAyMTMsIDk1LCAyMTMsIDg0LCAyMTMsIAotICAgIDczLCAyMTMsIDYyLCAyMTMsIDUxLCAyNTEsIDc5LCAyMjYsIDE1OSwgNzksIDI1MSwgMjA0LCAyMDksIDI1MywgMTUsIDUsIAotICAgIDIyNywgMjE1LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgMjE1LCAxMTUsIDIyNywgMjE1LCAyNTEsIDEwNywgMTE1LCAyNTEsIAotICAgIDEwNiwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTQsIDksIDIxMywgNDAsIDIxMywgMjksIAotICAgIDIxMywgMTgsIDIxMywgNiwgMjEyLCAyNTEsIDIxMiwgMjQwLCAyMTIsIDIyOSwgMjEyLCAyMTgsIDIxMiwgMjA3LCAyMTIsIAotICAgIDE5OSwgMjEyLCAxOTgsIDIxMiwgMTk3LCAyMTIsIDE5NiwgMjEyLCAxOTQsIDIxMiwgMTkzLCAyMTIsIDE5MiwgMjEyLCAKLSAgICAxOTEsIDIxMiwgMTkwLCAyMTIsIDE4OSwgMjEyLCAxODgsIDIxMiwgMTg3LCAyMTIsIDE4NiwgMjEyLCAxODUsIDIxMiwgCi0gICAgMTgzLCAyMTIsIDE4MiwgMjEyLCAxODEsIDIxMiwgMTgwLCAyMTIsIDE3OSwgMjEyLCAxNzgsIDIxMiwgMTc3LCAyMTIsIAotICAgIDE3NiwgMjEyLCAxNzUsIDIxMiwgMTc0LCAyMTIsIDE3MiwgMjEyLCAxNzEsIDIxMiwgMTcwLCAyMTIsIDE2OSwgMjEyLCAKLSAgICAxNjgsIDIxMiwgMTY3LCAyMTIsIDE2NiwgMjEyLCAxNjUsIDIxMiwgMTY0LCAyMTIsIDE2MywgMjEyLCAxNjEsIDIxMiwgCi0gICAgMTYwLCAyMTIsIDE1OSwgMjEyLCAxNTgsIDIxMiwgMTU3LCAyMTIsIDE1NiwgMjEyLCAxNTUsIDIxMiwgMTU0LCAyMTIsIAotICAgIDE1MywgMjEyLCAxNTIsIDIxMiwgMTUwLCAyMTIsIDE0OSwgMjEyLCAxNDgsIDIxMiwgMTQ3LCAyMTIsIDE0NiwgMjEyLCAKLSAgICAxNDUsIDIxMiwgMTQ0LCAyMTIsIDE0MywgMjEyLCAxNDIsIDIxMiwgMTQxLCAyMTIsIDEzOSwgMjEyLCAxMzgsIDIxMiwgCi0gICAgMTM3LCAyMTIsIDEzNiwgMjEyLCAxMzUsIDIxMiwgMTM0LCAyMTIsIDEzMywgMjEyLCAxMzIsIDIxMiwgMTMxLCAyMTIsIAotICAgIDEzMCwgMjEyLCAxMjgsIDIxMiwgMTI3LCAyMTIsIDEyNiwgMjEyLCAxMjUsIDIxMiwgMTI0LCAyMTIsIDEyMywgMjEyLCAKLSAgICAxMjIsIDIxMiwgMTIxLCAyMTIsIDEyMCwgMjEyLCAxMTksIDIxMywgMTE2LCAyMTMsIDExNSwgMjEzLCAxMTQsIDIxMywgCi0gICAgMTEzLCAyMTMsIDExMiwgMjEzLCAxMTEsIDIxMywgMTEwLCAyMTMsIDEwOSwgMjEzLCAxMDgsIDIxMywgMTA3LCAyMTMsIAotICAgIDEwNSwgMjEzLCAxMDQsIDIxMywgMTAzLCAyMTMsIDEwMiwgMjEzLCAxMDEsIDIxMywgMTAwLCAyMTMsIDk5LCAyMTMsIDk4LCAKLSAgICAyMTMsIDk3LCAyMTMsIDk2LCAyMTMsIDk0LCAyMTMsIDkzLCAyMTMsIDkyLCAyMTMsIDkxLCAyMTMsIDkwLCAyMTMsIDg5LCAKLSAgICAyMTMsIDg4LCAyMTMsIDg3LCAyMTMsIDg2LCAyMTMsIDg1LCAyMTMsIDgzLCAyMTMsIDgyLCAyMTMsIDgxLCAyMTMsIDgwLCAKLSAgICAyMTMsIDc5LCAyMTMsIDc4LCAyMTMsIDc3LCAyMTMsIDc2LCAyMTMsIDc1LCAyMTMsIDc0LCAyMTMsIDcyLCAyMTMsIDcxLCAKLSAgICAyMTMsIDcwLCAyMTMsIDY5LCAyMTMsIDY4LCAyMTMsIDY3LCAyMTMsIDY2LCAyMTMsIDY1LCAyMTMsIDY0LCAyMTMsIDYzLCAKLSAgICAyMTMsIDYxLCAyMTMsIDYwLCAyMTMsIDU5LCAyMTMsIDU4LCAyMTMsIDU3LCAyMTMsIDU2LCAyMTMsIDU1LCAyMTMsIDU0LCAKLSAgICAyMTMsIDUzLCAyMTMsIDUyLCAyMTMsIDUwLCAyMTMsIDQ5LCAyMTMsIDQ4LCAyMTMsIDQ3LCAyMTMsIDQ2LCAyMTMsIDQ1LCAKLSAgICAyMTMsIDQ0LCAyMTMsIDQzLCAyMTMsIDQyLCAyMTMsIDQxLCAyMTMsIDM5LCAyMTMsIDM4LCAyMTMsIDM3LCAyMTMsIDM2LCAKLSAgICAyMTMsIDM1LCAyMTMsIDM0LCAyMTMsIDMzLCAyMTMsIDMyLCAyMTMsIDMxLCAyMTMsIDMwLCAyMTMsIDI4LCAyMTMsIDI3LCAKLSAgICAyMTMsIDI2LCAyMTMsIDI1LCAyMTMsIDI0LCAyMTMsIDIzLCAyMTMsIDIyLCAyMTMsIDIxLCAyMTMsIDIwLCAyMTMsIDE5LCAKLSAgICAyMTMsIDE3LCAyMTMsIDE2LCAyMTMsIDE1LCAyMTMsIDE0LCAyMTMsIDEzLCAyMTMsIDEyLCAyMTMsIDExLCAyMTMsIDEwLCAKLSAgICAyMTMsIDksIDIxMywgOCwgMjEzLCA1LCAyMTMsIDQsIDIxMywgMywgMjEzLCAyLCAyMTMsIDEsIDIxMywgMCwgMjEyLCAyNTUsIAotICAgIDIxMiwgMjU0LCAyMTIsIDI1MywgMjEyLCAyNTIsIDIxMiwgMjUwLCAyMTIsIDI0OSwgMjEyLCAyNDgsIDIxMiwgMjQ3LCAKLSAgICAyMTIsIDI0NiwgMjEyLCAyNDUsIDIxMiwgMjQ0LCAyMTIsIDI0MywgMjEyLCAyNDIsIDIxMiwgMjQxLCAyMTIsIDIzOSwgCi0gICAgMjEyLCAyMzgsIDIxMiwgMjM3LCAyMTIsIDIzNiwgMjEyLCAyMzUsIDIxMiwgMjM0LCAyMTIsIDIzMywgMjEyLCAyMzIsIAotICAgIDIxMiwgMjMxLCAyMTIsIDIzMCwgMjEyLCAyMjgsIDIxMiwgMjI3LCAyMTIsIDIyNiwgMjEyLCAyMjUsIDIxMiwgMjI0LCAKLSAgICAyMTIsIDIyMywgMjEyLCAyMjIsIDIxMiwgMjIxLCAyMTIsIDIyMCwgMjEyLCAyMTksIDIxMiwgMjE3LCAyMTIsIDIxNiwgCi0gICAgMjEyLCAyMTUsIDIxMiwgMjE0LCAyMTIsIDIxMywgMjEyLCAyMTIsIDIxMiwgMjExLCAyMTIsIDIxMCwgMjEyLCAyMDksIAotICAgIDIxMiwgMjA4LCAyMTIsIDIwNiwgMjEyLCAyMDUsIDIxMiwgMjA0LCAyMTIsIDIwMywgMjEyLCAyMDIsIDIxMiwgMjAxLCAKLSAgICAyMTIsIDIwMCwgNywgNiwgMSwgMTE2LCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMTYwLCAyLCAKLSAgICA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDIyOSwgODUsIDIsIDIxNiwgOTAsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIAotICAgIDIyMCwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAKLSAgICAyMjAsIDI1MiwgNTEsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgCi0gICAgMiwgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDcyLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3MiwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNzIsIDIyLCAxODQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgNzIsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDU5LCA3MiwgMjIsIDE4NCwgNywgNiwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjksIDIyLCA1OSwgNzIsIDIyLCAKLSAgICAxNDIsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMTg0LCA3LCA0LCAxLCAyMzUsIDE1MSwgCi0gICAgMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCAKLSAgICA3LCA2LCAxLCAyMzIsIDU1LCAyLCAxODQsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDE4NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDE4NCwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAyMDQsIDE0NCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgCi0gICAgMTA2LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjIxLCAxOTgsIAotICAgIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMjEsIDE5OCwgMiwgMTQyLCA3LCA0LCAxLCAyNDEsIDU4LCAyMjEsIDE5OCwgMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MSwgNTgsIDIyMSwgMTk4LCAyLCAxNDIsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMjU0LCAxNzksIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEyLCAzMCwgOSwgMjIwLCAxMzcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk3LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIyNiwgCi0gICAgMjM4LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY5LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIAotICAgIDIxMCwgMjEyLCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc2LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDI1NCwgMjUyLCA5LCAyMjAsIDEzNywgMjI4LCA2OCwgMiwgMjM0LCAxODAsIDE0NiwgMSwgMjM0LCAxMTUsIDM2LCAKLSAgICAxMTcsIDIzNSwgMjksIDM2LCAxMTcsIDIyOSwgODQsIDM2LCAxMTcsIDI1MSwgNzQsIDM2LCAxMTcsIDIyNywgMTcxLCAzNiwgCi0gICAgMTE3LCAyMTUsIDE2MCwgMzYsIDExNywgMjI4LCAxMTYsIDM2LCAxMTcsIDIxNywgMTUzLCAzNiwgMTE3LCAyMzAsIDMwLCAKLSAgICAzNiwgMTE3LCAyMjYsIDEwOSwgMzYsIDExNywgMTk0LCAzNiwgMTE3LCAyMTEsIDExNywgMzYsIDExNywgMTUzLCAzNiwgCi0gICAgMTE3LCAxNTYsIDM2LCAxMTcsIDIxNCwgMTA1LCAzNiwgMTE3LCAyMzIsIDE4MiwgMzYsIDExNywgMjMyLCAxOTEsIDM2LCAKLSAgICAxMTcsIDIyMiwgMTgyLCAzNiwgMTE3LCAyMjgsIDk4LCAzNiwgMTE3LCAyMzUsIDE1MCwgMzYsIDExNywgMjIwLCAxMDYsIAotICAgIDM2LCAxMTcsIDIxOCwgMjI4LCAzNiwgMTE3LCAyMjIsIDkzLCAzNiwgMTE3LCAyNDIsIDY3LCAzNiwgMTE3LCAyMzMsIDIzOCwgCi0gICAgMzYsIDMsIDIzNSwgMTYsIDM2LCAzLCAyMzQsIDk4LCAzNiwgMywgMjM0LCA4OSwgMzYsIDMsIDIzMywgMjIzLCAzNiwgMywgCi0gICAgMjMzLCAxOTQsIDM2LCAzLCAyMzQsIDE4OCwgMzYsIDMsIDIzNCwgMTg3LCAzNiwgMywgMjM0LCAyNTIsIDM2LCAzLCAyMzQsIAotICAgIDM0LCAzNiwgMywgMjM0LCAxNiwgMzYsIDMsIDIzNCwgMjAxLCAzNiwgMywgMjI5LCA4MSwgMzYsIDMsIDIyOSwgMzIsIDM2LCAKLSAgICAzLCAyMjksIDI4LCAzNiwgMywgMjI4LCAyNTMsIDM2LCAzLCAyMjgsIDI0NiwgMzYsIDMsIDIyOSwgNjksIDM2LCAzLCAyMjksIAotICAgIDY3LCAzNiwgMywgMjI5LCA3OCwgMzYsIDMsIDIyOSwgOSwgMzYsIDMsIDIyOSwgNCwgMzYsIDMsIDIyOSwgNzEsIDM2LCAzLCAKLSAgICAyNTEsIDQwLCAzNiwgMywgMjUwLCA1OSwgMzYsIDMsIDI1MCwgNDksIDM2LCAzLCAyNDksIDEyMCwgMzYsIDMsIDI0OSwgOTEsIAotICAgIDM2LCAzLCAyNTAsIDE5OCwgMzYsIDMsIDI1MCwgMTkwLCAzNiwgMywgMjUxLCAzMCwgMzYsIDMsIDI0OSwgMjQ2LCAzNiwgMywgCi0gICAgMjQ5LCAxODIsIDM2LCAzLCAyNTAsIDIzMCwgMzYsIDMsIDIyNywgMTY4LCAzNiwgMywgMjI3LCAxNTIsIDM2LCAzLCAyMjcsIAotICAgIDE0NywgMzYsIDMsIDIyNywgMTMyLCAzNiwgMywgMjI3LCAxMjUsIDM2LCAzLCAyMjcsIDE2MCwgMzYsIDMsIDIyNywgMTU5LCAKLSAgICAzNiwgMywgMjI3LCAxNjUsIDM2LCAzLCAyMjcsIDEzOCwgMzYsIDMsIDIyNywgMTM2LCAzNiwgMywgMjI3LCAxNjMsIDM2LCAKLSAgICAzLCAyMTUsIDE1NiwgMzYsIDMsIDIxNSwgMTM2LCAzNiwgMywgMjE1LCAxMzUsIDM2LCAzLCAyMTUsIDEyNCwgMzYsIDMsIAotICAgIDIxNSwgMTIxLCAzNiwgMywgMjE1LCAxNTIsIDM2LCAzLCAyMTUsIDE1MSwgMzYsIDMsIDIxNSwgMTU1LCAzNiwgMywgMjE1LCAKLSAgICAxMzQsIDM2LCAzLCAyMTUsIDEzMywgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjI4LCAxMTQsIDM2LCAzLCAyMjgsIDEwMCwgCi0gICAgMzYsIDMsIDIyOCwgOTksIDM2LCAzLCAyMjgsIDgzLCAzNiwgMywgMjI4LCA4MiwgMzYsIDMsIDIyOCwgMTEwLCAzNiwgMywgCi0gICAgMjI4LCAxMDksIDM2LCAzLCAyMjgsIDExMywgMzYsIDMsIDIyOCwgODUsIDM2LCAzLCAyMjgsIDg0LCAzNiwgMywgMjI4LCAKLSAgICAxMTIsIDM2LCAzLCAyMTcsIDEwMiwgMzYsIDMsIDIxNiwgMTE4LCAzNiwgMywgMjE2LCAxMDQsIDM2LCAzLCAyMTUsIDExOSwgCi0gICAgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIDIzLCAzNiwgMywgMjE3LCAxMiwgMzYsIDMsIDIxNywgODAsIDM2LCAzLCAKLSAgICAxMTIsIDM2LCAzLCAyMTYsIDE4LCAzNiwgMywgMjE3LCA0MiwgMzYsIDMsIDIyOSwgMjMwLCAzNiwgMywgMjI4LCAyMzgsIAotICAgIDM2LCAzLCAyMjgsIDIxMywgMzYsIDMsIDIyNywgMjQyLCAzNiwgMywgMjI3LCAxODMsIDM2LCAzLCAyMjksIDExMiwgMzYsIAotICAgIDMsIDIyOSwgMTA4LCAzNiwgMywgMjI5LCAyMTcsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCA2OSwgMzYsIDMsIDIyOSwgCi0gICAgMTkyLCAzNiwgMywgMjI2LCA5MywgMzYsIDMsIDIyNSwgMTExLCAzNiwgMywgMjI1LCA3NCwgMzYsIDMsIDIyNCwgMTUzLCAKLSAgICAzNiwgMywgMjI0LCAxMjIsIDM2LCAzLCAyMjUsIDIyNCwgMzYsIDMsIDIyNSwgMjE0LCAzNiwgMywgMjI2LCA3NSwgMzYsIDMsIAotICAgIDIyNSwgMTksIDM2LCAzLCAyMjQsIDI1MiwgMzYsIDMsIDIyNSwgMjM4LCAzNiwgMywgMjMxLCAyNDIsIDM2LCAzLCAyMzAsIAotICAgIDIzNSwgMzYsIDMsIDIzMCwgMjA2LCAzNiwgMywgMjMwLCAxMDcsIDM2LCAzLCAyMzAsIDU5LCAzNiwgMywgMjMxLCA5NiwgCi0gICAgMzYsIDMsIDIzMSwgODUsIDM2LCAzLCAyMzEsIDIwOCwgMzYsIDMsIDIzMCwgMTY2LCAzNiwgMywgMjMwLCAxMzcsIDM2LCAzLCAKLSAgICAyMzEsIDE0MCwgMzYsIDMsIDIxMSwgMTAzLCAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIAotICAgIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgCi0gICAgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NywgMzYsIDMsIAotICAgIDIyMywgMzgsIDM2LCAzLCAyMjIsIDI0MiwgMzYsIDMsIDIyMiwgMTQyLCAzNiwgMywgMjIyLCAxMTQsIDM2LCAzLCAyMjMsIAotICAgIDEzMSwgMzYsIDMsIDIyMywgMTExLCAzNiwgMywgMjIzLCAxNjksIDM2LCAzLCAyMjIsIDIxMywgMzYsIDMsIDIyMiwgMTk5LCAKLSAgICAzNiwgMywgMjIzLCAxMzksIDM2LCAzLCAyMzMsIDE0MCwgMzYsIDMsIDIzMiwgMjQ3LCAzNiwgMywgMjMyLCAyMzMsIDM2LCAKLSAgICAzLCAyMzIsIDEwMywgMzYsIDMsIDIzMiwgNzgsIDM2LCAzLCAyMzMsIDY0LCAzNiwgMywgMjMzLCA1NiwgMzYsIDMsIDIzMywgCi0gICAgMTE1LCAzNiwgMywgMjMyLCAxNjIsIDM2LCAzLCAyMzIsIDEzMywgMzYsIDMsIDIzMywgODAsIDM2LCAzLCAyMTQsIDI2LCAKLSAgICAzNiwgMywgMjEzLCAxNzYsIDM2LCAzLCAyMTMsIDE2MiwgMzYsIDMsIDIxMiwgMTE2LCAzNiwgMywgMjEyLCAxMDksIDM2LCAKLSAgICAzLCAyMTMsIDI1NSwgMzYsIDMsIDIxMywgMjUwLCAzNiwgMywgMjE0LCAyMywgMzYsIDMsIDIxMywgMTM4LCAzNiwgMywgCi0gICAgMjEzLCAxMjcsIDM2LCAzLCAyMTQsIDUsIDM2LCAzLCAyMzIsIDE4MCwgMzYsIDMsIDIzMiwgMTc1LCAzNiwgMywgMjMyLCAKLSAgICAxNzQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE3NiwgCi0gICAgMzYsIDMsIDIzMiwgMTc5LCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE3MiwgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCi0gICAgMywgMjMyLCAxODksIDM2LCAzLCAyMzIsIDE4NCwgMzYsIDMsIDIzMiwgMTgzLCAzNiwgMywgMjMyLCAxNjcsIDM2LCAzLCAKLSAgICAyMzIsIDE2NiwgMzYsIDMsIDIzMiwgMTg2LCAzNiwgMywgMjMyLCAxODUsIDM2LCAzLCAyMzIsIDE4OCwgMzYsIDMsIDIzMiwgCi0gICAgMTY5LCAzNiwgMywgMjMyLCAxNjgsIDM2LCAzLCAyMzIsIDE4NywgMzYsIDMsIDIyMiwgMTgwLCAzNiwgMywgMjIyLCAxNjksIAotICAgIDM2LCAzLCAyMjIsIDE2OCwgMzYsIDMsIDIyMiwgMTYyLCAzNiwgMywgMjIyLCAxNTUsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIAotICAgIDMsIDIyMiwgMTc1LCAzNiwgMywgMjIyLCAxNzksIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgCi0gICAgMjIyLCAxNzgsIDM2LCAzLCAyMjgsIDk2LCAzNiwgMywgMjI4LCA5MSwgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMjgsIDg3LCAKLSAgICAzNiwgMywgMjI4LCA4NiwgMzYsIDMsIDIyOCwgOTMsIDM2LCAzLCAyMjgsIDkyLCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIAotICAgIDIyOCwgODksIDM2LCAzLCAyMjgsIDg4LCAzNiwgMywgMjI4LCA5NCwgMzYsIDMsIDIzNSwgMTQ2LCAzNiwgMywgMjM1LCAKLSAgICAxMTQsIDM2LCAzLCAyMzUsIDEwNywgMzYsIDMsIDIzNSwgNTcsIDM2LCAzLCAyMzUsIDM5LCAzNiwgMywgMjM1LCAxMzIsIAotICAgIDM2LCAzLCAyMzUsIDEzMCwgMzYsIDMsIDIzNSwgMTQxLCAzNiwgMywgMjM1LCA3NCwgMzYsIDMsIDIzNSwgNjUsIDM2LCAzLCAKLSAgICAyMzUsIDEzNSwgMzYsIDMsIDIyMCwgMTAwLCAzNiwgMywgMjIwLCAzNCwgMzYsIDMsIDIyMCwgMjksIDM2LCAzLCAyMTksIAotICAgIDIyNywgMzYsIDMsIDIxOSwgMjEyLCAzNiwgMywgMjIwLCA2NSwgMzYsIDMsIDIyMCwgNjMsIDM2LCAzLCAyMjAsIDkyLCAzNiwgCi0gICAgMywgMjIwLCA5LCAzNiwgMywgMjIwLCAzLCAzNiwgMywgMjIwLCA3MywgMzYsIDMsIDIxOCwgMjI0LCAzNiwgMywgMjE4LCAKLSAgICAxOTQsIDM2LCAzLCAyMTgsIDE5MCwgMzYsIDMsIDIxOCwgMTgxLCAzNiwgMywgMjE4LCAxNzgsIDM2LCAzLCAyMTgsIDE5OSwgCi0gICAgMzYsIDMsIDIxOCwgMTk4LCAzNiwgMywgMjE4LCAyMjMsIDM2LCAzLCAyMTgsIDE4NiwgMzYsIDMsIDIxOCwgMTg1LCAzNiwgCi0gICAgMywgMjE4LCAyMDEsIDM2LCAzLCAyMjIsIDMzLCAzNiwgMywgMjE5LCAxOTMsIDM2LCAzLCAyMTksIDE3NywgMzYsIDMsIAotICAgIDIxOCwgODQsIDM2LCAzLCAyMTgsIDUsIDM2LCAzLCAyMjEsIDE4MywgMzYsIDMsIDIyMSwgMTcyLCAzNiwgMywgMjIyLCAxOSwgCi0gICAgMzYsIDMsIDIxOSwgNjAsIDM2LCAzLCAyMTksIDQyLCAzNiwgMywgMjIxLCAyMjEsIDM2LCAzLCAyNDIsIDUzLCAzNiwgMywgCi0gICAgMjQxLCAxODcsIDM2LCAzLCAyNDEsIDE2OCwgMzYsIDMsIDI0MCwgMjI5LCAzNiwgMywgMjQwLCAyMDksIDM2LCAzLCAyNDEsIAotICAgIDI0NSwgMzYsIDMsIDI0MSwgMjI3LCAzNiwgMywgMjQyLCA0MywgMzYsIDMsIDI0MSwgNzUsIDM2LCAzLCAyNDEsIDYwLCAzNiwgCi0gICAgMywgMjQxLCAyNTMsIDM2LCAzLCAyMzMsIDIzNywgMzYsIDMsIDIzMywgMjM2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAzLCAKLSAgICAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI3LCAzNiwgMywgMjMzLCAyMjYsIDM2LCAzLCAyMzMsIDIzMywgMzYsIDMsIDIzMywgCi0gICAgMjMyLCAzNiwgMywgMjMzLCAyMzUsIDM2LCAzLCAyMzMsIDIyOSwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjMzLCAyMzQsIAotICAgIDM2LCAzLCAyMTksIDIzMywgMTc1LCAxMTcsIDUsIDIxMSwgNjgsIDE3NSwgMTE3LCA1LCAyMjMsIDE1OCwgMTc1LCAxMTcsIAotICAgIDUsIDIyMywgODEsIDk4LCAxLCAyMTUsIDI4LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTc2LCA3MCwgMTE3LCA1LCAyNDksIAotICAgIDI0MSwgMjM0LCAxMzgsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzQsIDM0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjM0LCAKLSAgICAxMTEsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjksIDksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNTEsIDQxLCA3MCwgCi0gICAgMTE3LCA1LCAyNDksIDI0MSwgMjUwLCAxNjUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDksIDI0NiwgNzAsIDExNywgNSwgCi0gICAgMjQ5LCAyNDEsIDI1MCwgOTQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjcsIDEzOCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDI0OCwgMjI5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjE1LCAxNDUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDcsIDE1MywgCi0gICAgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNSwgMTQwLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTk4LCA3MCwgMTE3LCA1LCAKLSAgICAyNDksIDI0MSwgMjE3LCAxMDYsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTYsIDIwOSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDExMiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNiwgMTU3LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI4LCA3OSwgNzAsIAotICAgIDExNywgNSwgMjQ5LCAyNDEsIDI1MiwgMTk5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxNTAsIDcwLCAxMTcsIDUsIAotICAgIDI0OSwgMjQxLCAyMjUsIDE5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxMjQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAKLSAgICAyMzAsIDE2NiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMCwgMjQ0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjIyLCAyMTMsIAotICAgIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzIsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMywgMTM4LCA3MCwgMTE3LCAKLSAgICA1LCAyNDksIDI0MSwgMjIwLCAxMDQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTgsIDIyNSwgNzAsIDExNywgNSwgMjQ5LCAKLSAgICAyNDEsIDIwNiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIzMywgMTQxLCA3MCwgCi0gICAgMjUsIDUsIDI0OSwgMjQxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjI0LCAzMywgNzAsIAotICAgIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyMiwgMTAyLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjIyLCAKLSAgICA5NSwgNzAsIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyNCwgNzIsIDcwLCAyNSwgNSwgMjI2LCAyMDgsIDcwLCAyNSwgCi0gICAgNSwgMjU1LCA0MywgMTQxLCAxLCAyNTIsIDcsIDIyOSwgODIsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDMyLCAxNDEsIDEsIAotICAgIDI1MiwgNywgMjI4LCAyNTMsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDY5LCAxNDEsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgCi0gICAgMjUyLCA3LCAyMjksIDgyLCA1NiwgMSwgMjUyLCA3LCAyMjksIDMyLCA1NiwgMSwgMjUyLCA3LCAyMjgsIDI1MywgNTYsIDEsIAotICAgIDI1MiwgNywgMjI5LCA2OSwgNTYsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgMjU0LCAyMDMsIDI1MCwgMTk4LCA1NiwgMSwgCi0gICAgMjU0LCAyMDMsIDIxNSwgMTE5LCA1NiwgMSwgMjU0LCAyMDMsIDExMiwgNTYsIDEsIDI1NCwgMjAzLCAyMjYsIDEwOSwgNTgsIAotICAgIDEsIDI0NSwgMjgsIDI0NSwgMjcsIDI0OSwgMTkwLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDI0NSwgMjgsIDI0OSwgCi0gICAgMTkwLCAxMzgsIDEzMCwgCisgICAgMCwgMjE0LCAxNTMsIDI0MiwgMTY4LCA4MywgMjE5LCAxODAsIDgzLCA0MywgNTMsIDI0NSwgMzUsIDUzLCAyMjEsIDEzMSwgCisgICAgNTMsIDI1MiwgMTI1LCAyNTIsIDUzLCA0NywgMjIxLCAyMTYsIDQ4LCAyMjEsIDIxNiwgMjUxLCAyMDksIDEwMSwgNTMsIAorICAgIDI0NywgMTU1LCAyMzcsIDIzOCwgMjQxLCA4MiwgMjEzLCAyNTEsIDIxNCwgMTgwLCAxOCwgMjA1LCA4NSwgMTgsIDEwMiwgCisgICAgMTgsIDEwNSwgMTgsIDE0MiwgMTgsIDEzOSwgMTgsIDE2OCwgMTgsIDE4NCwgMTgsIDE5NSwgMTgsIDE5MywgMTgsIDIwMCwgCisgICAgMjQ3LCAxNjIsIDIxNiwgNTIsIDIzMCwgMTAsIDUzLCAyNDIsIDI0MiwgNTMsIDIzOSwgMjMwLCA1MywgMjE5LCAxOTYsIDgzLCAKKyAgICAyNDcsIDE1MywgMjUxLCAxOTksIDcsIDYsIDEsIDYyLCA3LCA2LCAxLCAyNTEsIDE1MCwgNywgNiwgMSwgMjQ5LCAzNCwgNywgCisgICAgNiwgMSwgMjQ2LCAyNDAsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyNDIsIDEzOSwgNywgNiwgMSwgMjQxLCA1NSwgNywgNiwgCisgICAgMSwgMjM5LCAxNTUsIDcsIDYsIDEsIDc0LCA3LCA2LCAxLCAyMzIsIDIwMywgNywgNiwgMSwgMjMyLCA3NiwgNywgNiwgMSwgCisgICAgMTQ5LCA3LCA2LCAxLCAyMjksIDI4LCA3LCA2LCAxLCAyMjYsIDMzLCA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjIyLCA2NywgCisgICAgNywgNiwgMSwgMjIwLCAyNywgNywgNiwgMSwgMTM3LCA3LCA2LCAxLCAxODIsIDcsIDYsIDEsIDIxMywgMTAsIDcsIDYsIDEsIAorICAgIDcxLCA3LCA2LCAxLCAyMDksIDE0OCwgNywgNiwgMSwgMjA3LCAxMjksIDcsIDYsIDEsIDIwNiwgMTk1LCA3LCA2LCAxLCAKKyAgICAyMDYsIDEyMywgNywgNiwgMSwgMjA1LCAxNTksIDQ3LCA0OSwgMTQ1LCAyMTgsIDIyNSwgMjE0LCAxODAsIDQ4LCA0OSwgCisgICAgMTQ1LCAyNDcsIDIyOCwgMjUzLCAyMSwgMTE0LCAyMjksIDIwNSwgMjM5LCAyMzcsIDI1MywgMjEsIDcsIDUsIDEsIDYyLCA3LCAKKyAgICA1LCAxLCAyNTEsIDE1MCwgNywgNSwgMSwgMjQ5LCAzNCwgNywgNSwgMSwgMjQ2LCAyNDAsIDcsIDUsIDEsIDc1LCA3LCA1LCAKKyAgICAxLCAyNDIsIDEzOSwgNywgNSwgMSwgMjQxLCA1NSwgNywgNSwgMSwgMjM5LCAxNTUsIDcsIDUsIDEsIDc0LCA3LCA1LCAxLCAKKyAgICAyMzIsIDIwMywgNywgNSwgMSwgMjMyLCA3NiwgNywgNSwgMSwgMTQ5LCA3LCA1LCAxLCAyMjksIDI4LCA3LCA1LCAxLCAyMjYsIAorICAgIDMzLCA3LCA1LCAxLCA3NiwgNywgNSwgMSwgMjIyLCA2NywgNywgNSwgMSwgMjIwLCAyNywgNywgNSwgMSwgMTM3LCA3LCA1LCAKKyAgICAxLCAxODIsIDcsIDUsIDEsIDIxMywgMTAsIDcsIDUsIDEsIDcxLCA3LCA1LCAxLCAyMDksIDE0OCwgNywgNSwgMSwgMjA3LCAKKyAgICAxMjksIDcsIDUsIDEsIDIwNiwgMTk1LCA3LCA1LCAxLCAyMDYsIDEyMywgNywgNSwgMSwgMjA1LCAxNTksIDQ3LCAyNDcsIAorICAgIDI2LCAxNDUsIDc5LCAyMjksIDIwNSwgNDgsIDI0NywgMjYsIDE0NSwgMjExLCAxODAsIDIyNCwgNjYsIDIxNCwgMTUzLCAKKyAgICAyMzMsIDIsIDI0MiwgMTY4LCA4MywgMjQ4LCAxMzEsIDUzLCAyMjAsIDE2NSwgNTMsIDI0NywgMjUsIDUzLCAyMDYsIDQzLCAKKyAgICA1MywgMjQ5LCAxMTEsIDEzNCwgMjE3LCA3NywgNTMsIDI0NSwgMTY2LCAyNDcsIDk0LCA1MywgMjQyLCA5LCAyMjIsIDExOCwgCisgICAgMjMzLCA0OSwgMjMwLCA0MSwgNTAsIDI1MiwgMTA5LCAyMTksIDE4MCwgODMsIDIyNCwgNDMsIDUzLCAyMTQsIDE4NywgMjM3LCAKKyAgICAyMzksIDIxOSwgMjMsIDUzLCAyMjgsIDEzLCAyNDUsIDI0NSwgNTMsIDIyMCwgMjE3LCA1MywgMjEzLCAxMzksIDEwNSwgCisgICAgMjEzLCAxMzksIDE0MiwgMjUzLCA5LCAyNTMsIDIxLCAyMjYsIDI1MiwgNTMsIDIyMSwgMTIsIDUzLCAyMjYsIDI0NywgMjQ1LCAKKyAgICAyMywgMjQ4LCAxNDEsIDIxMywgMTM5LCAxMDIsIDIyNywgMTc5LCAyMjIsIDExOCwgMjMzLCA0OSwgMjE4LCAxNjIsIDUwLCAKKyAgICAyNTIsIDEwOSwgMjE5LCAxODAsIDgzLCAyMDcsIDE0NiwgMjQxLCAxMTYsIDExOSwgMjE5LCAyMDQsIDIwNywgMTQ2LCAyNDEsIAorICAgIDExNiwgMTE5LCAyMzksIDEyMSwgMjA3LCAxNDYsIDI0MSwgMTE2LCAxMjksIDIxOSwgMjAyLCAyMzMsIDIsIDIxOSwgMTk2LCAKKyAgICA4MywgNywgNiwgMSwgMzIsIDIsIDIzOSwgMjM2LCA3LCA2LCAxLCAzMiwgMiwgMTUzLCA3LCA2LCAxLCAzMiwgMiwgMjQ3LCAKKyAgICAyMjcsIDcsIDYsIDEsIDMyLCAyLCAyMTEsIDE4MCwgNywgNiwgMSwgMzIsIDIsIDI0NSwgMTY2LCA3LCA2LCAxLCAzMiwgMiwgCisgICAgMjE4LCAxNDksIDUyLCA3LCA2LCAxLCAyNTIsIDI0OCwgNywgNiwgMSwgMjQ5LCAzNSwgMiwgMjQ4LCAxNDEsIDcsIDYsIDEsIAorICAgIDE3NCwgMiwgMjM5LCAyMzYsIDcsIDYsIDEsIDE3NCwgMiwgMTUzLCA3LCA2LCAxLCAxNzQsIDIsIDI0NywgMjI3LCA3LCA2LCAKKyAgICAxLCAxNzQsIDIsIDI0NSwgMTY2LCA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjM5LCAyMzYsIDcsIDYsIDEsIDIzNywgMjI1LCAKKyAgICAyLCAxNTMsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAyNDcsIDIyNywgNywgNiwgMSwgMjM3LCAyMjUsIDIsIDI0NSwgMTY2LCAKKyAgICA3LCA2LCAxLCAyNDIsIDE5NiwgNywgNiwgMSwgMjI2LCAzNCwgMiwgMjExLCAxODAsIDcsIDYsIDEsIDE0OCwgMiwgMjM5LCAKKyAgICAyMzYsIDcsIDYsIDEsIDE0OCwgMiwgMTUzLCA3LCA2LCAxLCAxNDgsIDIsIDI0NywgMjI3LCA3LCA2LCAxLCAxNDgsIDIsIAorICAgIDIxMSwgMTgwLCA3LCA2LCAxLCAxNDgsIDIsIDI0NSwgMTY2LCAyMjYsIDk0LCA1MywgNywgNiwgMSwgMTQ4LCAyLCA5MSwgNywgCisgICAgNiwgMSwgMTA2LCAyLCAyMzksIDIzNiwgNywgNiwgMSwgMTA2LCAyLCAxNTMsIDcsIDYsIDEsIDEwNiwgMiwgMjQ3LCAyMjcsIAorICAgIDcsIDYsIDEsIDEwNiwgMiwgMjQ1LCAxNjYsIDcsIDYsIDEsIDIwNiwgMTI0LCAyLCAxNTMsIDcsIDYsIDEsIDIxMSwgMjQ2LCAKKyAgICA3LCA1LCAxLCAyMTUsIDIyOCwgMTgyLCA3LCA1LCAxLCAzMiwgMiwgMjM5LCAyMzYsIDcsIDUsIDEsIDMyLCAyLCAxNTMsIDcsIAorICAgIDUsIDEsIDMyLCAyLCAyNDcsIDIyNywgNywgNSwgMSwgMzIsIDIsIDIxMSwgMTgwLCA3LCA1LCAxLCAzMiwgMiwgMjQ1LCAKKyAgICAxNjYsIDcsIDUsIDEsIDMyLCAyLCAyMTgsIDE0OSwgNTIsIDcsIDUsIDEsIDI1MiwgMjQ4LCA3LCA1LCAxLCAyNDksIDM1LCAKKyAgICAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMTc0LCAyLCAyMzksIDIzNiwgNywgNSwgMSwgMTc0LCAyLCAxNTMsIDcsIDUsIDEsIAorICAgIDE3NCwgMiwgMjQ3LCAyMjcsIDcsIDUsIDEsIDE3NCwgMiwgMjQ1LCAxNjYsIDcsIDUsIDEsIDIzNywgMjI1LCAyLCAyMzksIAorICAgIDIzNiwgNywgNSwgMSwgMjM3LCAyMjUsIDIsIDE1MywgNywgNSwgMSwgMjM3LCAyMjUsIDIsIDI0NywgMjI3LCA3LCA1LCAxLCAKKyAgICAyMzcsIDIyNSwgMiwgMjQ1LCAxNjYsIDcsIDUsIDEsIDI0MiwgMTk2LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyMTEsIDE4MCwgCisgICAgNywgNSwgMSwgMTQ4LCAyLCAyMzksIDIzNiwgNywgNSwgMSwgMTQ4LCAyLCAxNTMsIDcsIDUsIDEsIDE0OCwgMiwgMjQ3LCAKKyAgICAyMjcsIDcsIDUsIDEsIDE0OCwgMiwgMjExLCAxODAsIDcsIDUsIDEsIDE0OCwgMiwgMjQ1LCAxNjYsIDI0NSwgNzUsIDUzLCAKKyAgICA3LCA1LCAxLCAxNDgsIDIsIDkxLCA3LCA1LCAxLCAxMDYsIDIsIDIzOSwgMjM2LCA3LCA1LCAxLCAxMDYsIDIsIDE1MywgNywgCisgICAgNSwgMSwgMTA2LCAyLCAyNDcsIDIyNywgNywgNSwgMSwgMTA2LCAyLCAyNDUsIDE2NiwgNywgNSwgMSwgMjA2LCAxMjQsIDIsIAorICAgIDE1MywgNywgNSwgMSwgMjExLCAyNDYsIDcsIDUsIDEsIDIwNiwgMTI0LCAyLCAyNDUsIDE2NiwgNywgNiwgMSwgMzIsIDIsIAorICAgIDIyOCwgMTMsIDcsIDUsIDEsIDMyLCAyLCAyMjgsIDEzLCA3LCA2LCAxLCAzMiwgMiwgMjQ5LCAxMjIsIDcsIDUsIDEsIDMyLCAKKyAgICAyLCAyNDksIDEyMiwgNywgNiwgMSwgMzIsIDIsIDIyMiwgMTk2LCA3LCA1LCAxLCAzMiwgMiwgMjIyLCAxOTYsIDcsIDYsIDEsIAorICAgIDI0OSwgMzUsIDIsIDE1MywgNywgNSwgMSwgMjQ5LCAzNSwgMiwgMTUzLCA3LCA2LCAxLCAyNDksIDM1LCAyLCAyNDcsIDIyNywgCisgICAgNywgNSwgMSwgMjQ5LCAzNSwgMiwgMjQ3LCAyMjcsIDcsIDYsIDEsIDI0OSwgMzUsIDIsIDY3LCA1MiwgNywgNSwgMSwgMjQ5LCAKKyAgICAzNSwgMiwgNjcsIDUyLCA3LCA2LCAxLCAyNDksIDM1LCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMjQ5LCAzNSwgMiwgMjQ4LCAKKyAgICAxOTUsIDcsIDYsIDEsIDI0NiwgMjQxLCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDI0OCwgMTk1LCA3LCAKKyAgICA2LCAxLCAyNDYsIDI0MSwgMiwgOTEsIDcsIDUsIDEsIDI0NiwgMjQxLCAyLCA5MSwgNywgNiwgMSwgMTc0LCAyLCAyMjgsIAorICAgIDEzLCA3LCA1LCAxLCAxNzQsIDIsIDIyOCwgMTMsIDcsIDYsIDEsIDE3NCwgMiwgMjQ5LCAxMjIsIDcsIDUsIDEsIDE3NCwgMiwgCisgICAgMjQ5LCAxMjIsIDcsIDYsIDEsIDE3NCwgMiwgNjcsIDUyLCA3LCA1LCAxLCAxNzQsIDIsIDY3LCA1MiwgNywgNiwgMSwgMTc0LCAKKyAgICAyLCAyMjIsIDE5NiwgNywgNSwgMSwgMTc0LCAyLCAyMjIsIDE5NiwgNywgNiwgMSwgMTc0LCAyLCAyNDgsIDE5NSwgNywgNSwgCisgICAgMSwgMTc0LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMjQxLCA1NiwgMiwgMjQ3LCAyMjcsIDcsIDUsIDEsIDI0MSwgNTYsIDIsIAorICAgIDI0NywgMjI3LCA3LCA2LCAxLCAyNDEsIDU2LCAyLCAyNDksIDEyMiwgNywgNSwgMSwgMjQxLCA1NiwgMiwgMjQ5LCAxMjIsIAorICAgIDcsIDYsIDEsIDI0MSwgNTYsIDIsIDY3LCA1MiwgNywgNSwgMSwgMjQxLCA1NiwgMiwgNjcsIDUyLCA3LCA2LCAxLCAyNDEsIAorICAgIDU2LCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjQxLCA1NiwgMiwgMjQ4LCAxNDEsIDcsIDYsIDEsIDIzOSwgMTU2LCAyLCAKKyAgICAyNDcsIDIyNywgNywgNSwgMSwgMjM5LCAxNTYsIDIsIDI0NywgMjI3LCA3LCA2LCAxLCAyMzksIDE1NiwgMiwgOTEsIDcsIDUsIAorICAgIDEsIDIzOSwgMTU2LCAyLCA5MSwgNywgNiwgMSwgMjM3LCAyMjUsIDIsIDIxMSwgMTgwLCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgCisgICAgMjExLCAxODAsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAyMjgsIDEzLCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgMjI4LCAxMywgCisgICAgNywgNiwgMSwgMjM3LCAyMjUsIDIsIDI0OSwgMTIyLCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgMjQ5LCAxMjIsIDcsIDYsIDEsIAorICAgIDIzNywgMjI1LCAyLCAyMjIsIDE5NiwgNywgNSwgMSwgMjM3LCAyMjUsIDIsIDIyMiwgMTk2LCA3LCA2LCAxLCAyMzcsIDIyNSwgCisgICAgMiwgNjcsIDUyLCA3LCA1LCAxLCAyNDUsIDIyLCA3NCwgNywgNiwgMjgsIDIzMywgMTAwLCA3LCA1LCAyOCwgMjMzLCAxMDAsIAorICAgIDcsIDYsIDEsIDIzMiwgMjA0LCAyLCAyNDcsIDIyNywgNywgNSwgMSwgMjMyLCAyMDQsIDIsIDI0NywgMjI3LCA3LCA2LCAxLCAKKyAgICAyMzIsIDc3LCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjMyLCA3NywgMiwgMjQ4LCAxNDEsIDcsIDUsIDEsIDIzMSwgMiwgNywgCisgICAgNiwgMSwgMjMwLCAxNTksIDIsIDE1MywgNywgNSwgMSwgMjMwLCAxNTksIDIsIDE1MywgNywgNiwgMSwgMjMwLCAxNTksIDIsIAorICAgIDI0OCwgMTQxLCA3LCA1LCAxLCAyMzAsIDE1OSwgMiwgMjQ4LCAxNDEsIDcsIDYsIDEsIDIzMCwgMTU5LCAyLCAyNDgsIDE5NSwgCisgICAgNywgNSwgMSwgMjMwLCAxNTksIDIsIDI0OCwgMTk1LCA3LCA2LCAxLCAyMzAsIDE1OSwgMiwgMjI2LCAyNDcsIDI0NSwgMjMsIAorICAgIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCAyMjYsIDI0NywgMjQ1LCAyMywgNywgNiwgMSwgMjMwLCAxNTksIDIsIDkxLCA3LCA1LCAKKyAgICAxLCAyMzAsIDE1OSwgMiwgOTEsIDcsIDYsIDEsIDIyNiwgMzQsIDIsIDE1MywgNywgNSwgMSwgMjI2LCAzNCwgMiwgMTUzLCAKKyAgICA3LCA2LCAxLCAyMjYsIDM0LCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjI2LCAzNCwgMiwgMjQ4LCAxNDEsIDcsIDYsIDEsIAorICAgIDIyNiwgMzQsIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMjI2LCAzNCwgCisgICAgMjIwLCAxNDEsIDI0OSwgNDYsIDI1MiwgNTMsIDcsIDYsIDEsIDI0MywgMjgsIDcsIDUsIDEsIDI0MywgMjgsIDcsIDYsIDEsIAorICAgIDE0OCwgMiwgMjI4LCAxMywgNywgNSwgMSwgMTQ4LCAyLCAyMjgsIDEzLCA3LCA2LCAxLCAxNDgsIDIsIDI0OSwgMTIyLCA3LCAKKyAgICA1LCAxLCAxNDgsIDIsIDI0OSwgMTIyLCA3LCA2LCAxLCAxNDgsIDIsIDUwLCAxNTMsIDcsIDUsIDEsIDE0OCwgMiwgNTAsIAorICAgIDE1MywgNywgNiwgMjgsIDIyMiwgMjA2LCA3LCA1LCAyOCwgMjIyLCAyMDYsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCAxNTMsIAorICAgIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAxNTMsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjE5LCAKKyAgICAxNTAsIDIsIDI0OCwgMTQxLCA3LCA2LCAxLCAyMTksIDE1MCwgMiwgMjQ4LCAxOTUsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAKKyAgICAyNDgsIDE5NSwgNywgNiwgMSwgMjE4LCAxLCAyLCAxNTMsIDcsIDUsIDEsIDIxOCwgMSwgMiwgMTUzLCA3LCA2LCAxLCAyMTgsIAorICAgIDEsIDIsIDI0NywgMjI3LCA3LCA1LCAxLCAyMTgsIDEsIDIsIDI0NywgMjI3LCA3LCA2LCAxLCAyMTgsIDEsIDIsIDI0OCwgCisgICAgMTQxLCA3LCA1LCAxLCAyMTgsIDEsIDIsIDI0OCwgMTQxLCA3LCA2LCAxLCAyMTgsIDEsIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAKKyAgICAyMTgsIDEsIDIsIDI0OCwgMTk1LCA3LCA2LCAxLCAyMTMsIDExLCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjEzLCAxMSwgMiwgCisgICAgMjQ4LCAxNDEsIDcsIDYsIDEsIDIxMywgMTEsIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAyMTMsIDExLCAyLCAyNDgsIDE5NSwgCisgICAgNywgNiwgMSwgMjEzLCAxMSwgMiwgOTEsIDcsIDUsIDEsIDIxMywgMTEsIDIsIDkxLCA3LCA2LCAxLCAxMDYsIDIsIDIxMSwgCisgICAgMTgwLCA3LCA1LCAxLCAxMDYsIDIsIDIxMSwgMTgwLCA3LCA2LCAxLCAxMDYsIDIsIDIyOCwgMTMsIDcsIDUsIDEsIDEwNiwgCisgICAgMiwgMjI4LCAxMywgNywgNiwgMSwgMTA2LCAyLCAyNDksIDEyMiwgNywgNSwgMSwgMTA2LCAyLCAyNDksIDEyMiwgNywgNiwgCisgICAgMSwgMTA2LCAyLCAyMTgsIDE0OSwgNTIsIDcsIDUsIDEsIDEwNiwgMiwgMjE4LCAxNDksIDUyLCA3LCA2LCAxLCAxMDYsIDIsIAorICAgIDUwLCAxNTMsIDcsIDUsIDEsIDEwNiwgMiwgNTAsIDE1MywgNywgNiwgMSwgMTA2LCAyLCAyMjIsIDE5NiwgNywgNSwgMSwgCisgICAgMTA2LCAyLCAyMjIsIDE5NiwgNywgNiwgMSwgMjA3LCAxMzAsIDIsIDI0NywgMjI3LCA3LCA1LCAxLCAyMDcsIDEzMCwgMiwgCisgICAgMjQ3LCAyMjcsIDcsIDYsIDEsIDIwNiwgMTI0LCAyLCAyNDcsIDIyNywgNywgNSwgMSwgMjA2LCAxMjQsIDIsIDI0NywgMjI3LCAKKyAgICA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgMjQ1LCAxNjYsIDcsIDYsIDEsIDIwNSwgMTYwLCAyLCAxNTMsIDcsIDUsIDEsIDIwNSwgCisgICAgMTYwLCAyLCAxNTMsIDcsIDYsIDEsIDIwNSwgMTYwLCAyLCA2NywgNTIsIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCA2NywgNTIsIAorICAgIDcsIDYsIDEsIDIwNSwgMTYwLCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMjA1LCAxNjAsIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAKKyAgICAxNTIsIDE4MiwgNywgNSwgMSwgNjMsIDIsIDkxLCA3LCA2LCAxLCA2MywgMiwgMTA5LCA3LCA2LCAxLCA2MywgMiwgMjExLCAKKyAgICA5OSwgNywgNSwgMSwgNjMsIDIsIDIxMSwgOTksIDcsIDYsIDEsIDEzNSwgMTg0LCA3LCA1LCAxLCAxMzUsIDE4NCwgNywgNiwgCisgICAgMSwgMjIyLCAxNDIsIDc2LCA3LCA2LCAxLCAyNDksIDM1LCAyLCAxMDksIDcsIDUsIDEsIDI0OSwgMzUsIDIsIDEwOSwgNywgCisgICAgNiwgMSwgMjUyLCAyMjMsIDI0NiwgMjQwLCA3LCA2LCAxLCAyNDYsIDI0MSwgMiwgMTA5LCA3LCA2LCAxLCAyNDYsIDI0MSwgCisgICAgMiwgMjExLCA5OSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDIxMSwgOTksIDcsIDUsIDEsIDIwMSwgMjQ1LCAyMjcsIDcsIDYsIAorICAgIDEsIDIxOCwgMjI0LCA3NSwgNywgNiwgMSwgMjE3LCAxMDAsIDcsIDYsIDEsIDIyMiwgMTQyLCA3NSwgNywgNiwgMSwgMjQyLCAKKyAgICAxNDAsIDIsIDEwOSwgNywgNSwgMSwgMjQyLCAxNDAsIDIsIDEwOSwgNywgNiwgMSwgMjQxLCA1NiwgMiwgMTA5LCA3LCA2LCAKKyAgICAxLCAyNDAsIDIxNSwgNywgNSwgMSwgMjM4LCAxNywgNywgNiwgMSwgMjMyLCAyNDksIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAKKyAgICA5MSwgNywgNiwgMSwgMjMyLCA3NywgMiwgMTA5LCA3LCA1LCAxLCAyMzIsIDc3LCAyLCAxMDksIDcsIDUsIDEsIDIzMCwgCisgICAgMTU5LCAyLCAxMzQsIDcsIDUsIDEsIDIzMCwgMTA0LCAyLCA5MSwgNywgNiwgMSwgMjAxLCAyMjksIDI4LCA3LCA2LCAxLCAKKyAgICAyMjYsIDM0LCAyLCA0NywgMTA5LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAxNTIsIDQ4LCAyMzAsIDM0LCA3LCA2LCAxLCAxNDgsIAorICAgIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgNywgNiwgMSwgMTQ4LCAyLCAyMzgsIDY5LCA3LCA1LCAxLCAxNDgsIDIsIDIzOCwgCisgICAgNjksIDcsIDYsIDEsIDIyMiwgMTkxLCA3LCA1LCAxLCAyMjIsIDE5MSwgNywgNiwgMSwgMjIyLCA2OCwgMiwgMTA5LCA3LCA1LCAKKyAgICAxLCAyMjIsIDY4LCAyLCAxMDksIDcsIDEsIDIwNSwgMjE2LCA3LCA2LCAxLCAxMzUsIDEwNSwgNywgNSwgMSwgMTM1LCAxMDUsIAorICAgIDcsIDYsIDEsIDI0MiwgMjE1LCA3LCAxLCAyMTgsIDIyNCwgMjQyLCAyMTYsIDIyOSwgMTExLCA3LCA1LCAxLCAyMTMsIDExLCAKKyAgICAyLCAyMjIsIDI2LCAxMDksIDcsIDYsIDEsIDIxMywgMTEsIDIsIDEwOSwgNywgNSwgMSwgMjEzLCAxMSwgMiwgMTA5LCA3LCAKKyAgICA2LCAxLCAyMTMsIDExLCAyLCAyMTgsIDIzMCwgMTA5LCA3LCA2LCAxLCAxMDYsIDIsIDIzOCwgNjksIDcsIDUsIDEsIDEwNiwgCisgICAgMiwgMjM4LCA2OSwgNywgNiwgMSwgMjA5LCAyMDAsIDcsIDYsIDEsIDIwOSwgMTQ5LCAyLCAxMDksIDcsIDYsIDEsIDIwNiwgCisgICAgMTI0LCAyLCAxMDksIDcsIDUsIDEsIDIwNiwgMTI0LCAyLCAxMDksIDcsIDYsIDEsIDIwNSwgMTYwLCAyLCA5MSwgNywgNSwgCisgICAgMSwgMjA1LCAxNjAsIDIsIDkxLCA3LCA2LCAxLCAyNDIsIDE0MSwgNywgNiwgMSwgMjQyLCAxNDIsIDIxOCwgMjIzLCA3LCA1LCAKKyAgICAxLCAyNDIsIDE0MiwgMjE4LCAyMjMsIDcsIDUsIDEsIDI0MiwgMTQyLCAyLCAyMTIsIDE5MSwgNywgMSwgMTE4LCAyLCA5MSwgCisgICAgNywgNiwgMSwgMTM1LCAxNjgsIDcsIDUsIDEsIDEzNSwgMTY4LCA3LCAxLCAyMzMsIDIsIDI0MCwgMjUsIDIxMywgMjUyLCAyLCAKKyAgICA5MSwgNywgMSwgMjA2LCAxOTgsIDcsIDEsIDI0NSwgMjIwLCAyNDcsIDIwMywgNywgMSwgMjMwLCA3OCwgMjQ3LCAyMDMsIDcsIAorICAgIDEsIDI1MiwgMTM3LCAyNDcsIDIwMywgNywgMSwgMjE4LCAyMzAsIDI0NywgMjAzLCA3LCA2LCAxLCAyNDMsIDE5OCwgMiwgCisgICAgMjQ4LCAxOTUsIDcsIDYsIDEsIDI0NiwgMjQxLCAyLCA1LCAxLCAyMDUsIDE2MCwgMiwgMjQ4LCAxOTUsIDcsIDUsIDEsIAorICAgIDI0MywgMTk4LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMjI5LCAxNzYsIDcsIDYsIDEsIDIzMCwgMTU5LCAyLCA1LCAxLCAKKyAgICAyMzIsIDIwMywgNywgNSwgMSwgMjI5LCAxNzYsIDcsIDYsIDEsIDIyNCwgMTgxLCA3LCA2LCAxLCAyMjYsIDM0LCAyLCA1LCAKKyAgICAxLCAyMzIsIDIwMywgNywgNSwgMSwgMjI0LCAxODEsIDcsIDYsIDEsIDMyLCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMzIsIDIsIAorICAgIDI0OCwgMTk1LCA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjQ4LCAxOTUsIDcsIDUsIDEsIDIzNywgMjI1LCAyLCAyNDgsIDE5NSwgCisgICAgNywgNiwgMSwgMTQ4LCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMTQ4LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMTA2LCAyLCAKKyAgICAyNDgsIDE5NSwgNywgNSwgMSwgMTA2LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMTA2LCAyLCAyNDUsIDE2NywgMjMsIDIyOCwgCisgICAgMTMsIDcsIDUsIDEsIDEwNiwgMiwgMjQ1LCAxNjcsIDIzLCAyMjgsIDEzLCA3LCA2LCAxLCAxMDYsIDIsIDI0NSwgMTY3LCAKKyAgICAyMywgMTUzLCA3LCA1LCAxLCAxMDYsIDIsIDI0NSwgMTY3LCAyMywgMTUzLCA3LCA2LCAxLCAxMDYsIDIsIDI0NSwgMTY3LCAKKyAgICAyMywgMjQ4LCAxOTUsIDcsIDUsIDEsIDEwNiwgMiwgMjQ1LCAxNjcsIDIzLCAyNDgsIDE5NSwgNywgNiwgMSwgMTA2LCAyLCAKKyAgICAyNDUsIDE2NywgMjMsIDIzOSwgMjM2LCA3LCA1LCAxLCAxMDYsIDIsIDI0NSwgMTY3LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIAorICAgIDIwMSwgNzUsIDcsIDYsIDEsIDMyLCAyLCAyNDUsIDE2NywgMjMsIDIyOCwgMTMsIDcsIDUsIDEsIDMyLCAyLCAyNDUsIDE2NywgCisgICAgMjMsIDIyOCwgMTMsIDcsIDYsIDEsIDMyLCAyLCA2NywgODQsIDIzLCAyMjgsIDEzLCA3LCA1LCAxLCAzMiwgMiwgNjcsIDg0LCAKKyAgICAyMywgMjI4LCAxMywgNywgNiwgMSwgMjUyLCAyNDksIDIsIDIyOCwgMTMsIDcsIDUsIDEsIDI1MiwgMjQ5LCAyLCAyMjgsIAorICAgIDEzLCA3LCA2LCAxLCAyNDEsIDU2LCAyLCA5MSwgNywgNSwgMSwgMjQxLCA1NiwgMiwgOTEsIDcsIDYsIDEsIDI0MSwgNTYsIAorICAgIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAyNDEsIDU2LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMjMyLCA3NywgMiwgMjQ4LCAKKyAgICAxOTUsIDcsIDUsIDEsIDIzMiwgNzcsIDIsIDI0OCwgMTk1LCA3LCA2LCAxLCAxNDgsIDIsIDIyMiwgMTk2LCA3LCA1LCAxLCAKKyAgICAxNDgsIDIsIDIyMiwgMTk2LCA3LCA2LCAxLCAxNDgsIDIsIDIyMiwgMTk3LCAyMywgMjI4LCAxMywgNywgNSwgMSwgMTQ4LCAKKyAgICAyLCAyMjIsIDE5NywgMjMsIDIyOCwgMTMsIDcsIDYsIDEsIDI0MiwgMTQyLCAyLCAyNDgsIDE5NSwgNywgNSwgMSwgMjQyLCAKKyAgICAxNDIsIDIsIDI0OCwgMTk1LCA3LCA1LCAxLCAyMzIsIDIwNCwgMiwgMjQ4LCAxOTUsIDcsIDYsIDEsIDI0MywgMTk3LCA3LCAKKyAgICA2LCAxLCAyNDYsIDI0MSwgMiwgNSwgMSwgMjA1LCAxNTksIDcsIDUsIDEsIDI0MywgMTk3LCA3LCA2LCAxLCAyNDEsIDU2LCAKKyAgICAyLCAxNTMsIDcsIDUsIDEsIDI0MSwgNTYsIDIsIDE1MywgNywgNiwgMSwgMjM4LCAxNCwgNywgNiwgMSwgMjA2LCAxOTgsIDcsIAorICAgIDYsIDEsIDIyNiwgMzQsIDIsIDIzOSwgMjM2LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyMzksIDIzNiwgNywgNiwgMSwgMzIsIAorICAgIDIsIDIxOCwgMTQ5LCA4NCwgMjMsIDE1MywgNywgNSwgMSwgMzIsIDIsIDIxOCwgMTQ5LCA4NCwgMjMsIDE1MywgNywgNiwgMSwgCisgICAgMjUyLCAyNDksIDIsIDE1MywgNywgNSwgMSwgMjUyLCAyNDksIDIsIDE1MywgNywgNiwgMSwgMTQ4LCAyLCAyMTMsIDIyNSwgCisgICAgMjMsIDE1MywgNywgNSwgMSwgMTQ4LCAyLCAyMTMsIDIyNSwgMjMsIDE1MywgNywgNiwgMSwgMzIsIDIsIDUwLCAyMzksIAorICAgIDIzNiwgNywgNSwgMSwgMzIsIDIsIDUwLCAyMzksIDIzNiwgNywgNiwgMSwgMzIsIDIsIDIzMywgMiwgMjQ5LCAxMjIsIDcsIAorICAgIDUsIDEsIDMyLCAyLCAyMzMsIDIsIDI0OSwgMTIyLCA3LCA2LCAxLCAxNzQsIDIsIDUwLCAyMzksIDIzNiwgNywgNSwgMSwgCisgICAgMTc0LCAyLCA1MCwgMjM5LCAyMzYsIDcsIDYsIDEsIDE3NCwgMiwgMjMzLCAyLCAyNDksIDEyMiwgNywgNSwgMSwgMTc0LCAyLCAKKyAgICAyMzMsIDIsIDI0OSwgMTIyLCA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgNTAsIDIzOSwgMjM2LCA3LCA1LCAxLCAyMzcsIDIyNSwgCisgICAgMiwgNTAsIDIzOSwgMjM2LCA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjMzLCAyLCAyNDksIDEyMiwgNywgNSwgMSwgMjM3LCAKKyAgICAyMjUsIDIsIDIzMywgMiwgMjQ5LCAxMjIsIDcsIDYsIDEsIDE0OCwgMiwgNTAsIDIzOSwgMjM2LCA3LCA1LCAxLCAxNDgsIDIsIAorICAgIDUwLCAyMzksIDIzNiwgNywgNiwgMSwgMTQ4LCAyLCAyMzMsIDIsIDI0OSwgMTIyLCA3LCA1LCAxLCAxNDgsIDIsIDIzMywgMiwgCisgICAgMjQ5LCAxMjIsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCA1MCwgMjM5LCAyMzYsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCA1MCwgCisgICAgMjM5LCAyMzYsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCAyMzMsIDIsIDI0OSwgMTIyLCA3LCA1LCAxLCAyMTksIDE1MCwgMiwgCisgICAgMjMzLCAyLCAyNDksIDEyMiwgNywgNiwgMSwgMTA2LCAyLCA1MCwgMjM5LCAyMzYsIDcsIDUsIDEsIDEwNiwgMiwgNTAsIAorICAgIDIzOSwgMjM2LCA3LCA2LCAxLCAxMDYsIDIsIDIzMywgMiwgMjQ5LCAxMjIsIDcsIDUsIDEsIDEwNiwgMiwgMjMzLCAyLCAKKyAgICAyNDksIDEyMiwgNywgNiwgMSwgMjE4LCAxLCAyLCAyNDcsIDE1NiwgNTUsIDcsIDUsIDEsIDIxOCwgMSwgMiwgMjQ3LCAxNTYsIAorICAgIDU1LCA3LCA2LCAxLCAyMTMsIDExLCAyLCAyNDcsIDE1NiwgNTUsIDcsIDUsIDEsIDIxMywgMTEsIDIsIDI0NywgMTU2LCA1NSwgCisgICAgNywgNiwgMSwgMjA1LCAyMzQsIDcsIDUsIDEsIDIwNSwgMjM0LCA3LCA2LCAxLCAyMzksIDE1NiwgMiwgMjQ4LCAxOTUsIDcsIAorICAgIDUsIDEsIDIzOSwgMTU2LCAyLCAyNDgsIDE5NSwgNywgNiwgMSwgMjI2LCAzNCwgMiwgMTUyLCA0OCwgMjMwLCAzNCwgNywgNSwgCisgICAgMSwgMjQ2LCAyNDEsIDIsIDI0NywgMjcsIDcsIDYsIDEsIDIyMiwgOTcsIDcsIDUsIDEsIDIyMiwgOTcsIDcsIDYsIDEsIAorICAgIDIwNSwgMTYwLCAyLCAxMDksIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCAxMDksIDcsIDYsIDEsIDMyLCAyLCA2NywgNTIsIDcsIAorICAgIDUsIDEsIDMyLCAyLCA2NywgNTIsIDcsIDYsIDEsIDE3NCwgMiwgMjQ4LCAxNDEsIDcsIDUsIDEsIDE3NCwgMiwgMjQ4LCAKKyAgICAxNDEsIDcsIDYsIDEsIDE0OCwgMiwgMjQ1LCAxNjcsIDIzLCAyMjgsIDEzLCA3LCA1LCAxLCAxNDgsIDIsIDI0NSwgMTY3LCAKKyAgICAyMywgMjI4LCAxMywgNywgNiwgMSwgMTQ4LCAyLCAyMTEsIDE4MSwgMjMsIDIyOCwgMTMsIDcsIDUsIDEsIDE0OCwgMiwgCisgICAgMjExLCAxODEsIDIzLCAyMjgsIDEzLCA3LCA2LCAxLCAxNDgsIDIsIDY3LCA1MiwgNywgNSwgMSwgMTQ4LCAyLCA2NywgNTIsIAorICAgIDcsIDYsIDEsIDE0OCwgMiwgNjcsIDg0LCAyMywgMjI4LCAxMywgNywgNSwgMSwgMTQ4LCAyLCA2NywgODQsIDIzLCAyMjgsIAorICAgIDEzLCA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgMjI4LCAxMywgNywgNSwgMSwgMjA2LCAxMjQsIDIsIDIyOCwgMTMsIDcsIDUsIAorICAgIDEsIDIzMCwgMTU5LCAyLCAyNDcsIDI3LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyNDcsIDI3LCA3LCA1LCAxLCAyMTMsIDExLCAKKyAgICAyLCAyNDcsIDI3LCA3LCA1LCAxLCAyNDUsIDIyLCAyMzIsIDIwMywgNywgNSwgMSwgMjQ2LCA2NCwgMjQ1LCAxMjcsIDcsIDUsIAorICAgIDEsIDIxOSwgMjE1LCAyNDUsIDEyNywgNywgNiwgMSwgMzIsIDIsIDkxLCA3LCA2LCAxLCAyNDksIDM1LCAyLCA5MSwgNywgNSwgCisgICAgMSwgMjQ5LCAzNSwgMiwgOTEsIDcsIDYsIDEsIDIzMCwgMTU5LCAyLCAxMzQsIDcsIDYsIDEsIDIxMywgMTEsIDIsIDI0NSwgCisgICAgMTYzLCA5MSwgNywgNSwgMSwgMjE4LCAxLCAyLCAyMTMsIDEwOSwgMjEyLCAxOTEsIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCAKKyAgICAyMTMsIDEwOSwgMjEyLCAxOTEsIDcsIDYsIDEsIDI0MCwgMjUsIDIxMywgMjUxLCA3LCA1LCAxLCAyNDAsIDI1LCAyMTMsIAorICAgIDI1MSwgNywgNiwgMSwgNjMsIDIsIDkxLCA3LCA2LCAxLCAxMDYsIDEzNCwgNywgNiwgMSwgMjAxLCAyMDksIDE0OCwgNywgNiwgCisgICAgMSwgMTc0LCAyLCA5MSwgNywgNSwgMSwgMTc0LCAyLCA5MSwgNywgNiwgMSwgMjMyLCAyMDQsIDIsIDkxLCA3LCA1LCAxLCAKKyAgICAyMzIsIDIwNCwgMiwgOTEsIDcsIDYsIDEsIDUsIDIyMCwgMjgsIDIsIDIzOCwgMTMwLCAyMTIsIDE5MSwgNywgNSwgMSwgCisgICAgMjIwLCAyOCwgMiwgMjM4LCAxMzAsIDIxMiwgMTkxLCA3LCA2LCAxLCAyMTksIDE1MCwgMiwgOTEsIDcsIDUsIDEsIDIxOSwgCisgICAgMTUwLCAyLCA5MSwgNywgNiwgMSwgMjA2LCAxMjQsIDIsIDkxLCA3LCA1LCAxLCAyMDYsIDEyNCwgMiwgOTEsIDcsIDUsIDEsIAorICAgIDIwMSwgNjIsIDcsIDUsIDEsIDI1MiwgMTQ0LCA3LCA1LCAxLCAyMDEsIDI1MiwgMTQ0LCA3LCA1LCAxLCA2MywgMiwgMTA5LCAKKyAgICA3LCA1LCAxLCAyMjIsIDE0MiwgNzYsIDcsIDUsIDEsIDI0OSwgMzUsIDIsIDI0NywgMjcsIDcsIDUsIDEsIDI0NiwgMjQxLCAKKyAgICAyLCAyMTIsIDE5MSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDEwOSwgNywgNSwgMSwgMjE4LCAyMjQsIDc1LCA3LCA1LCAxLCAKKyAgICAyMTcsIDEwMCwgNywgNSwgMSwgMjE3LCAxMDEsIDIsIDEwOSwgNywgNSwgMSwgMjIyLCAxNDIsIDc1LCA3LCA1LCAxLCAyMTgsIAorICAgIDIyNCwgMjIyLCAxNDIsIDc1LCA3LCA1LCAxLCAyMTgsIDIyNCwgMjIyLCAxNDIsIDE3NCwgMiwgMTA5LCA3LCA1LCAxLCAKKyAgICAyNDcsIDE5MiwgMjE4LCAyMjQsIDIyMiwgMTQyLCA3NSwgNywgNSwgMSwgMjQ1LCAyMiwgMjMyLCAyMDQsIDIsIDkxLCA3LCAKKyAgICA1LCAxLCAyNDEsIDU2LCAyLCAxMDksIDcsIDUsIDEsIDEyMSwgMjQxLCA1NSwgNywgMSwgNSwgNiwgMjQxLCA1NSwgNywgNSwgCisgICAgMSwgMjQwLCAyMTUsIDcsIDUsIDEsIDIxOSwgNzUsIDIzOCwgNjksIDcsIDUsIDEsIDIwMSwgMjM5LCAxNTUsIDcsIDUsIDEsIAorICAgIDIzOSwgMTU2LCAyLCAxMDksIDcsIDUsIDEsIDIzOSwgNDAsIDIsIDEwOSwgNywgNSwgMSwgMjM3LCAyMjUsIDIsIDkxLCA3LCAKKyAgICA1LCAxLCAyMzIsIDI0OSwgNywgMSwgNSwgNiwgNzQsIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCAyMjYsIDI0NywgMjExLCAxODAsIAorICAgIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCAyNTAsIDI0LCA3LCA1LCAxLCAyMzAsIDE1OSwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgCisgICAgMSwgMjI5LCAyNTEsIDcsIDUsIDEsIDIwMSwgMjI5LCAyOCwgNywgNSwgMSwgMjAxLCAyMjksIDI5LCAyLCAxNTIsIDIzMCwgCisgICAgMzQsIDcsIDUsIDEsIDIyOSwgMjksIDIsIDEwOSwgNywgNSwgMSwgMjI2LCAzNCwgMiwgNDcsIDEwOSwgNywgNSwgMSwgMjI2LCAKKyAgICAzNCwgMiwgMjE4LCAyMzAsIDEwOSwgNywgMSwgNSwgNiwgMjI2LCAzMywgNywgNSwgMSwgMjUwLCAxMjMsIDc2LCA3LCAxLCAKKyAgICA1LCA2LCAyMjIsIDIwNiwgNywgNSwgMSwgMjQ3LCAxOTIsIDIyMiwgMTcwLCA3LCA1LCAxLCAyMjEsIDc4LCA3LCA1LCAxLCAKKyAgICAyMDEsIDEzNywgNywgNSwgMSwgMjAxLCAyMTksIDE1MCwgMiwgMTUyLCAyMzAsIDM0LCA3LCA1LCAxLCAyMDEsIDIxOSwgCisgICAgMTUwLCAyLCAxMDksIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAxNTIsIDIzMCwgMzQsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAKKyAgICAyMTIsIDE5MSwgNywgNSwgMSwgMjE5LCAxNTAsIDIsIDI0MSwgMjEwLCA3LCA1LCAxLCAyMTgsIDIyNCwgMjE5LCAxNTAsIDIsIAorICAgIDI0MSwgMjEwLCA3LCAxLCA1LCA2LCAxMzcsIDcsIDEsIDUsIDYsIDIzMywgMiwgMTM3LCA3LCA1LCAxLCAyMTgsIDEsIDIsIAorICAgIDEwOSwgNywgNSwgMSwgMjQyLCAyMTUsIDcsIDUsIDEsIDI0NSwgMjIsIDIzMiwgMjA0LCAyLCAyMTMsIDIyNSwgMjMsIDEwOSwgCisgICAgNywgNSwgMSwgMjE0LCAxMDQsIDIxOCwgMjI0LCAyNDIsIDIxNSwgNywgNSwgMSwgMjQyLCAyMTYsIDIsIDI0NywgMjcsIDcsIAorICAgIDUsIDEsIDIwMSwgMjEzLCAxMCwgNywgNSwgMSwgMjEzLCAxMSwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMTA2LCAKKyAgICAxMzQsIDcsIDUsIDEsIDIwOSwgMjAwLCA3LCA1LCAxLCAyMDksIDE0OSwgMiwgMTA5LCA3LCA1LCAxLCAyMDEsIDIwOSwgCisgICAgMTQ4LCA3LCA1LCAxLCAyMDEsIDIwNywgMTI5LCA3LCA1LCAxLCAyMDEsIDIwNiwgMTIzLCA3LCAxLCA1LCA2LCAyMDYsIAorICAgIDEyMywgNywgNSwgMSwgMjA1LCAxNjAsIDIsIDIxOCwgMjMwLCAxMDksIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCAyNDcsIDI3LCAKKyAgICA3LCA1LCAxLCAyNDIsIDE0MSwgNywgNSwgMSwgMjQyLCAxNDIsIDIsIDI0NywgMjcsIDcsIDEsIDI0MCwgMjUsIDIxMywgCisgICAgMjUxLCA3LCAxLCAyMjEsIDg0LCAyMDgsIDE3MCwgMjQxLCAxMDQsIDcsIDEsIDIzMywgMiwgMjQwLCAyNSwgMjEzLCAyNTEsIAorICAgIDcsIDEsIDIxMywgMjMyLCAyNDksIDM0LCA3LCAxLCAyNDksIDIyOCwgMjQ3LCAyMDMsIDcsIDEsIDUsIDYsIDI1MSwgMTUwLCAKKyAgICA3LCA1LCAxLCAyNDcsIDE5MiwgMjIyLCAxNDIsIDc1LCA3LCAxLCA1LCA2LCAyNDEsIDU2LCAyLCAxMDksIDcsIDEsIDUsIDYsIAorICAgIDIzOSwgMTU1LCA3LCA1LCAxLCAyMzIsIDIwNCwgMiwgMjQ3LCA1NiwgNywgNSwgMSwgMjAxLCAyMzIsIDc2LCA3LCAxLCA1LCAKKyAgICA2LCAxNDksIDcsIDUsIDEsIDIyMCwgMjgsIDIsIDEwOSwgNywgMSwgMjQwLCAyNSwgMjEzLCAyNTIsIDIsIDkxLCA3LCAxLCAKKyAgICAyMTgsIDIyNCwgMjQwLCAyNSwgMjEzLCAyNTIsIDIsIDkxLCA3LCA1LCAxLCAyNDMsIDE5OCwgMjQ1LCAxMjcsIDcsIDUsIDEsIAorICAgIDI0NSwgMTk0LCAyNDUsIDEyNywgNywgNSwgMSwgMjQzLCAxOTgsIDI0NSwgMTI4LCAyLCAyNDcsIDI3LCA3LCA1LCAxLCAKKyAgICAyMTAsIDI0NSwgMjQ1LCAxMjcsIDcsIDUsIDEsIDIxMiwgODUsIDI0NSwgMTI3LCA3LCA1LCAxLCAyMTIsIDEzOCwgMjQ1LCAKKyAgICAxMjgsIDIsIDI0NywgMjcsIDcsIDUsIDEsIDI0MiwgNywgMjQ1LCAxMjcsIDcsIDUsIDEsIDIyOSwgODMsIDI0NSwgMTI3LCAKKyAgICA3LCA1LCAxLCAyMjksIDMwLCAyNDUsIDEyNywgNywgMSwgMjQ5LCAyMjgsIDIyMSwgMTMwLCA3LCAxLCAyNDksIDIzNiwgCisgICAgMjIxLCAxMzAsIDcsIDUsIDEsIDIwMSwgMjM5LCAxNTYsIDIsIDI0MSwgMjEwLCA3LCA1LCAxLCAyMDEsIDIzOSwgMTU2LCAyLCAKKyAgICAyNDEsIDIxMSwgMjMsIDIxMiwgMTkxLCA2NSwgMSwgNSwgMjM5LCAxNTUsIDY1LCAxLCA1LCAyMzksIDE1NiwgMiwgMTA5LCAKKyAgICA2NSwgMSwgNSwgMjMyLCAyMDMsIDY1LCAxLCA1LCAxMzcsIDY1LCAxLCA1LCAyMDEsIDEzNywgNjUsIDEsIDUsIDIwMSwgCisgICAgMjE5LCAxNTAsIDIsIDEwOSwgNjUsIDEsIDUsIDYsIDIzMywgMiwgMTM3LCA2NSwgMSwgNSwgMjA3LCAxMjksIDY1LCAxLCA1LCAKKyAgICAyMDYsIDEyMywgNjUsIDEsIDIyMCwgMTI3LCA2NSwgMSwgNTAsIDIyMCwgMTI3LCA2NSwgMSwgMjAxLCAyNDcsIDE1NSwgNjUsIAorICAgIDEsIDI1MiwgNTMsIDY1LCAxLCAyMTgsIDIyNCwgMjQ3LCAxNTUsIDY1LCAxLCA0OCwgMTYwLCAyMTgsIDE0OCwgNjUsIDEsIAorICAgIDQ3LCAxNjAsIDIxOCwgMTQ4LCA2NSwgMSwgMjQwLCAyNSwgMjEzLCAyNTEsIDY1LCAxLCAyMTgsIDIyNCwgMjQwLCAyNSwgCisgICAgMjEzLCAyNTEsIDY1LCAxLCA0NywgMjUxLCAyNDMsIDY1LCAxLCA0OCwgMjUxLCAyNDMsIDY1LCAxLCAxMjAsIDI1MSwgMjQzLCAKKyAgICA2NSwgMSwgMTMwLCAyNTEsIDI0MywgNjUsIDEsIDI0NywgMjI4LCAyNTMsIDIxLCAyNDgsIDE5NSwgNjUsIDEsIDc5LCAyMjksIAorICAgIDIwNSwgNjUsIDEsIDIyOCwgMTMsIDY1LCAxLCAyNTMsIDksIDI1MywgMjEsIDY1LCAxLCAyMzksIDIzNywgMjUzLCAyMSwgCisgICAgNjUsIDEsIDExNCwgNzksIDIyOSwgMjA1LCA2NSwgMSwgMTE0LCAyMjgsIDEzLCA2NSwgMSwgMTE0LCAyMzksIDIzNywgMjUzLCAKKyAgICAyMSwgNjUsIDEsIDExNCwgMjUzLCA5LCAyNTMsIDIxLCA2NSwgMSwgMjExLCA0OCwgMjQ3LCAxNjIsIDY1LCAxLCAxNjAsIAorICAgIDIxMSwgNDgsIDI0NywgMTYyLCA2NSwgMSwgMjQ4LCAxMjcsIDQ4LCAxNjAsIDIxOCwgMTQ4LCA2NSwgMSwgMjQ4LCAxMjcsIAorICAgIDQ3LCAxNjAsIDIxOCwgMTQ4LCA2NSwgMSwgMTIwLCAyMTIsIDIwMSwgNjUsIDEsIDEzMCwgMjEyLCAyMDEsIDY1LCAxLCAKKyAgICAxMDEsIDUzLCA2NSwgMSwgMjI2LCAyMDIsIDUzLCAyNDksIDEyMiwgNjcsIDUyLCAyMTgsIDE0OSwgNTIsIDIyMiwgMTk2LCAKKyAgICA1LCAyMTEsIDE4MCwgNTAsIDI1MywgOSwgMjUzLCAyMSwgNjUsIDEsIDIxOCwgMjA5LCAxMDksIDY1LCAxLCAyNDcsIDYwLCAKKyAgICAyNTMsIDIxLCA2NSwgMSwgNSwgMjQwLCAyMTUsIDY1LCAxLCA1LCAxNDksIDY1LCAxLCA1LCAxODIsIDY1LCAxLCA1LCAyMDYsIAorICAgIDE5NSwgNjUsIDEsIDUsIDIxOCwgMjI0LCAyNDAsIDI1LCAyMTMsIDI1MSwgNjUsIDEsIDI0MiwgMTU2LCAxMzUsIDEzNCwgCisgICAgNjUsIDEsIDEyNywgMTM1LCAxMzQsIDY1LCAxLCAyMjYsIDI0OSwgMTM1LCAxMzQsIDY1LCAxLCAxMTQsIDEzNSwgMTM0LCAKKyAgICA2NSwgMSwgMjQyLCAxNTUsIDEzNSwgMTM0LCA2NSwgMSwgMjA2LCAxLCAyNDUsIDIxNywgMTM1LCA4MywgNjUsIDEsIDIwNiwgCisgICAgNzYsIDI0NSwgMjE3LCAxMzUsIDgzLCA2NSwgMSwgMjA4LCAxNjgsIDY1LCAxLCAyMDksIDIzMCwgNjUsIDEsIDUwLCAyNTIsIAorICAgIDUzLCA2NSwgMSwgMTE0LCAxMzAsIDI1MSwgMjQzLCA2NSwgMSwgMTE0LCAxMjAsIDI1MSwgMjQzLCA2NSwgMSwgMTE0LCA0NywgCisgICAgMjUxLCAyNDMsIDY1LCAxLCAxMTQsIDQ4LCAyNTEsIDI0MywgNjUsIDEsIDExNCwgMjE4LCAxNDgsIDY1LCAxLCAyMjYsIAorICAgIDI0NywgMjM5LCAyMzcsIDI1MywgMjEsIDY1LCAxLCAyMjYsIDI0NywgNTAsIDIzOSwgMjM3LCAyNTMsIDIxLCA2NSwgMSwgCisgICAgMjI2LCAyNDcsIDUwLCAyNTMsIDksIDI1MywgMjEsIDY1LCAxLCAxMTQsIDIxMSwgMTgwLCA2NSwgMSwgMjE5LCA4MSwgMjQ3LCAKKyAgICAxNjIsIDY1LCAxLCAyNTAsIDQyLCAxMjcsIDIxMSwgMTE4LCA2NSwgMSwgMjQzLCAzNCwgMTI3LCAyMTEsIDExOCwgNjUsIDEsIAorICAgIDI1MCwgNDIsIDExNCwgMjExLCAxMTgsIDY1LCAxLCAyNDMsIDM0LCAxMTQsIDIxMSwgMTE4LCA2NSwgMSwgMjE1LCAyMDUsIAorICAgIDY1LCAxLCAyMjIsIDE0MiwgMjE1LCAyMDUsIDY1LCAxLCAxMTQsIDQ3LCA0NSwgMzYsIDIzOSwgMjM3LCAyNTMsIDIxLCAzNiwgCisgICAgMjUzLCA5LCAyNTMsIDIxLCAzNiwgMjQ3LCAyMjgsIDI1MywgMjEsIDM2LCAyMTEsIDE4MCwgMzYsIDIyOCwgMTMsIDM2LCAKKyAgICAyMjIsIDgxLCAzNiwgMjQ5LCAxMjIsIDM2LCA2NywgNTIsIDM2LCAyNDUsIDE2NiwgMzYsIDIzOCwgMTMwLCA1MiwgMzYsIAorICAgIDIxOCwgMTQ5LCA1MiwgMzYsIDUwLCAyNTMsIDksIDI1MywgMjEsIDM2LCAyNDgsIDE5NSwgMzYsIDc5LCAyMjksIDIwNiwgCisgICAgNTIsIDM2LCA1MCwgNzksIDIyOSwgMjA2LCA1MiwgMzYsIDUwLCAyMzksIDIzNywgMjUzLCAyMSwgMzYsIDI0OCwgMjE3LCAKKyAgICAzNiwgMjMzLCAyLCAyNDksIDEyMiwgMzYsIDIwMSwgMjQ3LCAxNTYsIDUyLCAzNiwgMjQ3LCAxNTYsIDUyLCAzNiwgMjE4LCAKKyAgICAyMjQsIDI0NywgMTU2LCA1MiwgMzYsIDI0NywgMTU2LCA4NCwgMjE4LCAxNjcsIDM2LCAyMzksIDIzNywgMjUzLCAyMiwgNTUsIAorICAgIDM2LCAyNTMsIDksIDI1MywgMjIsIDU1LCAzNiwgNDcsIDIxMiwgMjAyLCA1NSwgMzYsIDQ4LCAyMTIsIDIwMiwgNTUsIDM2LCAKKyAgICA0NywgMjUyLCAxMDksIDUyLCAzNiwgMjM4LCA2OSwgMzYsIDQ3LCAxNjAsIDIxOCwgMTQ5LCA1NSwgMzYsIDEyMCwgMjEyLCAKKyAgICAyMDIsIDU1LCAzNiwgMTMwLCAyMTIsIDIwMiwgNTUsIDM2LCAxMDEsIDMsIDU1LCAzNiwgMjI2LCAyMDIsIDMsIDU1LCAzNiwgCisgICAgMjIyLCAyNCwgMjM4LCAxMzAsIDU1LCAzNiwgMjE4LCAyMzAsIDIzOCwgMTMwLCA1NSwgMzYsIDY3LCA1NSwgMzYsIDI0NSwgCisgICAgMTY3LCA1NSwgMzYsIDIxOCwgMTQ5LCA1NSwgMzYsIDI0NywgMTU2LCA1NSwgMzYsIDI0OCwgMTQxLCAzNiwgMjIyLCAxOTYsIAorICAgIDM2LCA3OSwgMjI5LCAyMDYsIDU1LCAzNiwgMjQ5LCAxMTYsIDU1LCAzNiwgMjMzLCAyLCA1MCwgMjUyLCAyMCwgNTUsIDM2LCAKKyAgICAyNDgsIDE5NiwgNTUsIDM2LCAyNDcsIDIyOCwgMjUzLCAyMiwgNTUsIDM2LCAyNDksIDEyMywgNTUsIDM2LCAyMzMsIDIsIAorICAgIDI0OSwgMTIzLCA1NSwgMzYsIDIxMSwgMTgxLCA1NSwgMzYsIDIyOCwgMTQsIDU1LCAzNiwgMTE0LCAyMjksIDIwNSwgMzYsIAorICAgIDUwLCAxMTQsIDIyOSwgMjA1LCAzNiwgMjExLCAxODEsIDIyMiwgODIsIDM2LCAyMTUsIDE0NCwgMjEzLCAyMjUsIDIyMiwgCisgICAgODIsIDM2LCAxNTIsIDIxMywgMjI1LCAyMjIsIDgyLCAzNiwgMjE1LCAxNDQsIDIxNCwgMTgxLCAyMjIsIDgyLCAzNiwgMTUyLCAKKyAgICAyMTQsIDE4MSwgMjIyLCA4MiwgMzYsIDQ4LCAxNjAsIDIxOCwgMTQ5LCA1NSwgMzYsIDIzMywgMiwgMjQ5LCAxMTYsIDU1LCAKKyAgICAzNiwgNDksIDU1LCAzNiwgMjE3LCA4NSwgNTUsIDM2LCAyMDYsIDE5NiwgNTIsIDM2LCA3OSwgMjExLCAxODAsIDM2LCA1MCwgCisgICAgMjIyLCA4MSwgMzYsIDIzOSwgMjM3LCAxMzUsIDgzLCAzNiwgMjUzLCA5LCAxMzUsIDgzLCAzNiwgMjcsIDIyMSwgMTI0LCAKKyAgICAzNiwgMjcsIDIzMSwgMjMsIDM2LCAyNywgMjQ1LCAxNjAsIDIxMSwgMTA2LCAzNiwgMjcsIDIwNSwgMjIxLCAzNiwgMjQ5LCAKKyAgICAxMTYsIDUyLCAzNiwgMjQyLCAyNDIsIDMsIDU1LCAzNiwgNTAsIDc5LCAyMjksIDIwNiwgNTUsIDM2LCA0NywgMjUyLCAxMDksIAorICAgIDU1LCAzNiwgMjI0LCA0MywgMjExLCAxODEsIDUyLCAzNiwgMjM4LCAxMzYsIDUyLCAzNiwgMjUyLCAxNDksIDE0NiwgMjExLCAKKyAgICAxMzAsIDUyLCAzNiwgNDcsIDQ4LCA1MSwgNTUsIDM2LCAxNjcsIDUxLCA1NSwgMzYsIDIzOSwgMjQyLCAyMzIsIDExNywgMzYsIAorICAgIDQ4LCAyNTEsIDI0NCwgNTIsIDM2LCA0NywgMTYwLCAyMTgsIDE0OSwgNTIsIDM2LCAyNDIsIDQsIDM2LCAyMDYsIDE5NiwgCisgICAgNTUsIDM2LCA0NywgMjUxLCAyNDQsIDU1LCAzNiwgNDgsIDI1MSwgMjQ0LCA1NSwgMzYsIDQ4LCAyNTEsIDI0NCwgMjMsIAorICAgIDEyMCwgMjUxLCAyNDQsIDU1LCAzNiwgNDgsIDE2MCwgMjE4LCAxNDksIDUyLCAzNiwgNjcsIDg0LCAyMTgsIDE2NywgMzYsIAorICAgIDI1MSwgMjEwLCA1NSwgMzYsIDUwLCAyMTgsIDE0OSwgNTUsIDM2LCAyMDUsIDMxLCA1MiwgMzYsIDUwLCAyNDksIDEyMywgCisgICAgNTUsIDM2LCA1MCwgMjQ5LCAxMjIsIDM2LCA1MCwgMjI4LCAxMywgMzYsIDUwLCAyMjgsIDE0LCA1NSwgMzYsIDUwLCAyMTEsIAorICAgIDE4MCwgMzYsIDUwLCAyMzMsIDIsIDI0OSwgMTIyLCAzNiwgNTAsIDg2LCA1MSwgNTUsIDM2LCA3LCA1LCAxLCA2MiwgMzYsIAorICAgIDcsIDUsIDEsIDc1LCAzNiwgNywgNSwgMSwgNzQsIDM2LCA3LCA1LCAxLCA3NiwgMzYsIDcsIDUsIDEsIDcxLCAzNiwgNywgNSwgCisgICAgMSwgMjQ5LCAzNCwgMzYsIDcsIDUsIDEsIDI0NiwgMjQwLCAzNiwgNywgNSwgMSwgMjM5LCAxNTUsIDM2LCA3LCA1LCAxLCAKKyAgICAyMjksIDI4LCAzNiwgNywgNSwgMSwgMTM3LCAzNiwgNywgNSwgMSwgMjEzLCAxMCwgMzYsIDcsIDUsIDEsIDIwOSwgMTQ4LCAKKyAgICAzNiwgNywgNSwgMSwgMjA2LCAxOTUsIDI3LCA2LCAxLCAyMzksIDI4LCAyNywgNSwgMSwgMjM5LCAyOCwgMjcsIDYsIDEsIAorICAgIDI1MiwgMTksIDIxNywgMTU0LCAyNywgNSwgMSwgMjUyLCAxOSwgMjE3LCAxNTQsIDI3LCAyMjMsIDE3NywgNTMsIDI3LCAKKyAgICAyMjksIDkyLCAyMjMsIDE3NywgNTMsIDI3LCA2LCAxLCAyMjIsIDEwLCAyNDUsIDEzNCwgMjcsIDUsIDEsIDIyMiwgMTAsIAorICAgIDI0NSwgMTM0LCAyNywgMjA1LCAyMjEsIDI3LCA1LCAyMTgsIDIyNCwgMjI5LCA2NCwgMjE1LCA2NCwgOTMsIDI3LCA1LCAKKyAgICAyNDQsIDIxLCAyMjksIDY0LCAyMTUsIDY0LCA5MywgMjcsIDUsIDIxOCwgMjI0LCAyNDQsIDIxLCAyMjksIDY0LCAyMTUsIAorICAgIDY0LCA5MywgMjcsIDIxOSwgMTk2LCA4MywgMjcsIDYsIDEsIDIwNSwgMjI3LCAyNywgMjExLCAxMDYsIDI3LCAyNDUsIDE2MCwgCisgICAgMjExLCAxMDYsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjExLCAxMDYsIDI3LCAyNTIsIDk2LCAyMTIsIDEwOSwgMjcsIDYsIAorICAgIDEsIDI0MiwgMjQ1LCAyLCAyMTEsIDEwNiwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyMTEsIDEwNiwgMjcsIDYsIDEsIDIzMiwgCisgICAgMjUwLCAyLCAyMTEsIDEwNiwgMjcsIDYsIDEsIDIyMiwgMTY5LCAyLCAyMTEsIDEwNiwgMjcsIDYsIDEsIDIwOSwgMjAxLCAyLCAKKyAgICAyMTEsIDEwNiwgMjcsIDYsIDEsIDIyMiwgMTcxLCAyLCAyMTEsIDEwNiwgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyNDUsIAorICAgIDE2MCwgMjMsIDIxMSwgMTA2LCAyNywgNiwgMSwgMjUyLCAxNDQsIDI3LCA2LCAxLCAyNTAsIDgsIDI3LCA2LCAxLCAyNDAsIAorICAgIDIxNSwgMjcsIDYsIDEsIDI0NSwgMjI3LCAyNywgNiwgMSwgMjQyLCAyNDQsIDI3LCA2LCAxLCAyMDUsIDg0LCAyNywgNiwgMSwgCisgICAgMjQyLCAyMDEsIDI3LCA2LCAxLCAyMTIsIDIzLCAyNywgNiwgMSwgMjMyLCAyNDksIDI3LCA2LCAxLCAyMzIsIDE0LCAyNywgCisgICAgNiwgMSwgMjMwLCAxMDIsIDI3LCA2LCAxLCAyMjYsIDExNCwgMjcsIDYsIDEsIDIyMywgMjE3LCAyNywgNiwgMSwgMjA2LCAKKyAgICAxNjksIDI3LCA2LCAxLCAyMjIsIDE2OCwgMjcsIDYsIDEsIDIyMSwgNTMsIDI3LCA2LCAxLCAyMTgsIDIxMCwgMjcsIDYsIDEsIAorICAgIDIxNSwgNjMsIDI3LCA2LCAxLCAyMTIsIDE1MSwgMjcsIDYsIDEsIDIwOSwgMjAwLCAyNywgNiwgMSwgMjIxLCA3OCwgMjcsIAorICAgIDYsIDEsIDI0OCwgNTgsIDI3LCA2LCAxLCAyMjAsIDkzLCAyNywgNiwgMSwgMjIyLCAxNzAsIDI3LCA2LCAxLCAyMzIsIDI1MCwgCisgICAgMiwgMjQ1LCAxNTksIDI3LCA2LCAxLCAyMDksIDIwMSwgMiwgMjQ1LCAxNTksIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjExLCAKKyAgICAxMDYsIDI3LCA1LCAxLCAyNDIsIDI0NSwgMiwgMjExLCAxMDYsIDI3LCA1LCAxLCAyNDIsIDIwMiwgMiwgMjExLCAxMDYsIAorICAgIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgMjExLCAxMDYsIDI3LCA1LCAxLCAyMDksIDIwMSwgMiwgMjQ1LCAxNjAsIDIzLCAKKyAgICAyMTEsIDEwNiwgMjcsIDUsIDEsIDI1MiwgMTQ0LCAyNywgNSwgMSwgMjUwLCA4LCAyNywgNSwgMSwgMjQwLCAyMTUsIDI3LCAKKyAgICA1LCAxLCAyNDUsIDIyNywgMjcsIDUsIDEsIDI0MiwgMjQ0LCAyNywgNSwgMSwgMjA1LCA4NCwgMjcsIDUsIDEsIDI0MiwgCisgICAgMjAxLCAyNywgNSwgMSwgMjEyLCAyMywgMjcsIDUsIDEsIDIzMiwgMjQ5LCAyNywgNSwgMSwgMjMyLCAxNCwgMjcsIDUsIDEsIAorICAgIDIzMCwgMTAyLCAyNywgNSwgMSwgMjI2LCAxMTQsIDI3LCA1LCAxLCAyMjMsIDIxNywgMjcsIDUsIDEsIDIwNiwgMTY5LCAyNywgCisgICAgNSwgMSwgMjIyLCAxNjgsIDI3LCA1LCAxLCAyMjEsIDUzLCAyNywgNSwgMSwgMjE4LCAyMTAsIDI3LCA1LCAxLCA0MiwgMjE1LCAKKyAgICA2MywgMjcsIDUsIDEsIDIxNSwgNjMsIDI3LCA1LCAxLCAyMTIsIDE1MSwgMjcsIDUsIDEsIDIwOSwgMjAwLCAyNywgNSwgMSwgCisgICAgMjIxLCA3OCwgMjcsIDUsIDEsIDI0OCwgNTgsIDI3LCA1LCAxLCAyMjAsIDkzLCAyNywgNSwgMSwgMjIyLCAxNzAsIDI3LCA1LCAKKyAgICAxLCAyMzIsIDI1MCwgMiwgMjQ1LCAxNTksIDI3LCA1LCAxLCAyMDksIDIwMSwgMiwgMjQ1LCAxNTksIDI3LCA1LCAxLCAyMjIsIAorICAgIDE2OSwgMiwgMjExLCAxMDYsIDI3LCA1LCAxLCAyMDksIDIwMSwgMiwgMjExLCAxMDYsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgCisgICAgMjExLCAxMDYsIDI3LCA2LCAyMzIsIDQyLCA5MywgMjcsIDI1MCwgOSwgOTMsIDI3LCAyMTIsIDI0LCA5MywgMjcsIDIwOSwgCisgICAgMjAxLCAyLCAyMzgsIDEzMCwgOTMsIDI3LCAyMDksIDIwMSwgMiwgMjUzLCA5LCAyMywgMjM4LCAxMzAsIDkzLCAyNywgMjA5LCAKKyAgICAyMDEsIDIsIDI0NSwgMTY3LCAyMywgMjM4LCAxMzAsIDkzLCAyNywgMjIxLCA3OSwgOTMsIDI3LCAyMjEsIDU0LCA5MywgMjcsIAorICAgIDIzMiwgNDIsIDkzLCAyNywgMSwgMjUyLCAxOSwgMjMxLCAyNywgMjcsIDUsIDEsIDI1MiwgMTksIDIzMSwgMjcsIDI3LCAxLCAKKyAgICAyMTQsIDUsIDI3LCA1LCAxLCAyMTQsIDUsIDI3LCAxLCAyNDUsIDEzNCwgMjcsIDUsIDEsIDI0NSwgMTM0LCAyNywgMSwgCisgICAgMjMxLCAyNywgMjcsIDUsIDEsIDIzMSwgMjcsIDI3LCAxLCAyMTcsIDE1NCwgMjcsIDUsIDEsIDIxNywgMTU0LCA4MSwgNiwgCisgICAgMSwgMjE1LCAyMDYsIDgxLCA1LCAxLCAyMTUsIDIwNiwgODEsIDYsIDEsIDI0MiwgMTMsIDgxLCA1LCAxLCAyNDIsIDEzLCAKKyAgICA4MSwgNiwgMSwgMjMxLCAxNTAsIDgxLCA1LCAxLCAyMzEsIDE1MCwgODEsIDYsIDEsIDIzOCwgMTIyLCA4MSwgNSwgMSwgCisgICAgMjM4LCAxMjIsIDgxLCA2LCAxLCAyNDAsIDIxMCwgODEsIDUsIDEsIDI0MCwgMjEwLCA4MSwgNiwgMSwgMjE1LCAxNzMsIDgxLCAKKyAgICA1LCAxLCAyMTUsIDE3MywgODEsIDYsIDEsIDI0NSwgMjQyLCA4MSwgNSwgMSwgMjQ1LCAyNDIsIDI3LCAyMzIsIDE1LCA5MywgCisgICAgMjcsIDIxOCwgMjExLCA5MywgMjcsIDIyOSwgNjQsIDIxNSwgNjQsIDkzLCAyNywgMSwgMjA1LCAyMjcsIDI3LCA2LCAyMTIsIAorICAgIDI0LCA5MywgMjcsIDIyOSwgNjQsIDI0MiwgMjQ1LCA5MywgMjcsIDIxOCwgMjI0LCAyMjksIDY0LCAyNDIsIDI0NSwgOTMsIAorICAgIDI3LCA2LCAxLCAyMTUsIDE1OCwgMjcsIDUsIDEsIDIxNSwgMTU4LCAyNywgNiwgMjI5LCA2NCwgMjE1LCA2NCwgOTMsIDI3LCAKKyAgICA2LCAxLCAyMTcsIDE1MSwgMjcsIDUsIDEsIDIxNywgMTUxLCAyNywgMjE4LCAyMTEsIDIsIDIxMywgMjI1LCA5MywgMjcsIDYsIAorICAgIDIxOCwgMjI0LCAyMjksIDY0LCAyMTUsIDY0LCA5MywgMjcsIDYsIDI0NCwgMjEsIDIyOSwgNjQsIDIxNSwgNjQsIDkzLCAyNywgCisgICAgNiwgMjE4LCAyMjQsIDI0NCwgMjEsIDIyOSwgNjQsIDIxNSwgNjQsIDkzLCAzNCwgNiwgMSwgMjMzLCAxMzAsIDIsIDIzOSwgCisgICAgMjM2LCAzNCwgNiwgMSwgMjMyLCAyNTMsIDM0LCA2LCAxLCAyNDUsIDY4LCAzNCwgNiwgMSwgMjQwLCAzMiwgMzQsIDYsIDEsIAorICAgIDIwOSwgMjQ2LCAyMzMsIDEyOSwgMzQsIDYsIDEsIDI0MywgMTkzLCAzNCwgNiwgMSwgMjQ5LCA0NCwgNzQsIDM0LCA2LCAxLCAKKyAgICAyMDYsIDExLCAzNCwgNiwgMSwgMjMyLCAxODIsIDM0LCA2LCAxLCAyMjksIDE3NSwgMzQsIDYsIDEsIDIyNCwgMTczLCAzNCwgCisgICAgNiwgMSwgMjEwLCAyMzEsIDM0LCA2LCAxLCAyMzEsIDc0LCAzNCwgNiwgMSwgMjM3LCAyMjUsIDIsIDIzOSwgMjM2LCAzNCwgCisgICAgNiwgMSwgMjE1LCAxNDQsIDcxLCAzNCwgNiwgMSwgMjQzLCAxODksIDM0LCA2LCAxLCA2MiwgMzQsIDYsIDEsIDI1MCwgNjEsIAorICAgIDM0LCA2LCAxLCAyMDksIDM5LCAzNCwgNiwgMSwgMjQwLCA4NSwgMzQsIDYsIDEsIDI0NiwgOSwgMzQsIDYsIDEsIDIzMywgCisgICAgMTI5LCAzNCwgNiwgMSwgMjA1LCA3MiwgMzQsIDYsIDEsIDIwNSwgOTMsIDM0LCA2LCAxLCA3NCwgMzQsIDYsIDEsIDIxNSwgCisgICAgMTQ0LCA3NCwgMzQsIDYsIDEsIDE3MiwgMzQsIDYsIDEsIDI0MywgNjgsIDM0LCA2LCAxLCAyNDMsIDUwLCAzNCwgNiwgMSwgCisgICAgMjQzLCA0MSwgMzQsIDYsIDEsIDc2LCAzNCwgNiwgMSwgMjIxLCAxNzQsIDM0LCA2LCAxLCAyNDIsIDIzNSwgMzQsIDYsIDEsIAorICAgIDI0MiwgMjI1LCAzNCwgNiwgMSwgMjEyLCAxMzEsIDM0LCA2LCAxLCA3MSwgMzQsIDYsIDEsIDI0MywgOTcsIDM0LCA2LCAxLCAKKyAgICAxNTUsIDM0LCA2LCAxLCAyMTAsIDIzNywgMzQsIDYsIDEsIDI0OCwgODIsIDM0LCA2LCAxLCAyMTYsIDIsIDM0LCA2LCAxLCAKKyAgICAyMTUsIDIxNywgMzQsIDYsIDEsIDIzOSwgOTQsIDUzLCAzNCwgNiwgMSwgMjA2LCAzMCwgMzQsIDYsIDEsIDIxNCwgMTg3LCAKKyAgICA1MywgMzQsIDYsIDEsIDc1LCAzNCwgNiwgMSwgMjA1LCAyMTMsIDM0LCA2LCAxLCAxOTAsIDM0LCA1LCAxLCA2MiwgMzQsIDUsIAorICAgIDEsIDI1MCwgNjEsIDM0LCA1LCAxLCAyMDksIDM5LCAzNCwgNSwgMSwgMjQwLCA4NSwgMzQsIDUsIDEsIDI0NiwgOSwgMzQsIAorICAgIDUsIDEsIDIzMywgMTI5LCAzNCwgNSwgMSwgMjA1LCA3MiwgMzQsIDUsIDEsIDIwNSwgOTMsIDM0LCA1LCAxLCA3NCwgMzQsIAorICAgIDUsIDEsIDIxNSwgMTQ0LCA3NCwgMzQsIDUsIDEsIDE3MiwgMzQsIDUsIDEsIDI0MywgNjgsIDM0LCA1LCAxLCAyNDMsIDUwLCAKKyAgICAzNCwgNSwgMSwgMjQzLCA0MSwgMzQsIDUsIDEsIDc2LCAzNCwgNSwgMSwgMjIxLCAxNzQsIDM0LCA1LCAxLCAyNDIsIDIzNSwgCisgICAgMzQsIDUsIDEsIDI0MiwgMjI1LCAzNCwgNSwgMSwgMjEyLCAxMzEsIDM0LCA1LCAxLCA3MSwgMzQsIDUsIDEsIDI0MywgOTcsIAorICAgIDM0LCA1LCAxLCAxNTUsIDM0LCA1LCAxLCAyMTAsIDIzNywgMzQsIDUsIDEsIDI0OCwgODIsIDM0LCA1LCAxLCAyMTYsIDIsIAorICAgIDM0LCA1LCAxLCAyMTUsIDIxNywgMzQsIDUsIDEsIDIzOSwgOTQsIDUzLCAzNCwgNSwgMSwgMjA2LCAzMCwgMzQsIDUsIDEsIAorICAgIDIxNCwgMTg3LCA1MywgMzQsIDUsIDEsIDc1LCAzNCwgNSwgMSwgMjA1LCAyMTMsIDM0LCA1LCAxLCAxOTAsIDM0LCA1LCAxLCAKKyAgICAyMzMsIDEzMCwgMiwgMjM5LCAyMzYsIDM0LCA1LCAxLCAyMzIsIDI1MywgMzQsIDUsIDEsIDI0NSwgNjgsIDM0LCA1LCAxLCAKKyAgICAyNDAsIDMyLCAzNCwgNSwgMSwgMjA5LCAyNDYsIDIzMywgMTI5LCAzNCwgNSwgMSwgMjQzLCAxOTMsIDM0LCA1LCAxLCAyNDksIAorICAgIDQ0LCA3NCwgMzQsIDUsIDEsIDIwNiwgMTEsIDM0LCA1LCAxLCAyMzIsIDE4MiwgMzQsIDUsIDEsIDIyOSwgMTc1LCAzNCwgNSwgCisgICAgMSwgMjI0LCAxNzMsIDM0LCA1LCAxLCAyMTAsIDIzMSwgMzQsIDUsIDEsIDIzMSwgNzQsIDM0LCA1LCAxLCAyMzcsIDIyNSwgCisgICAgMiwgMjM5LCAyMzYsIDM0LCA1LCAxLCAyMTUsIDE0NCwgNzEsIDM0LCA1LCAxLCAyNDMsIDE4OSwgMzQsIDYsIDEsIDIyMiwgCisgICAgMTcwLCAzNCwgNSwgMSwgMjIyLCAxNzAsIDM0LCA2LCAxLCAyMDYsIDY1LCAzNCwgNSwgMSwgMjA2LCA2NSwgMzQsIDYsIDEsIAorICAgIDIzMiwgMjQ3LCA3NSwgMzQsIDUsIDEsIDIzMiwgMjQ3LCA3NSwgMzQsIDYsIDEsIDIyOSwgMTgwLCAyMDUsIDE4MywgMzQsIAorICAgIDUsIDEsIDIyOSwgMTgwLCAyMDUsIDE4MywgMzQsIDYsIDEsIDIzMiwgMjQ3LCAyMjksIDE4MCwgMjA1LCAxODMsIDM0LCA1LCAKKyAgICAxLCAyMzIsIDI0NywgMjI5LCAxODAsIDIwNSwgMTgzLCAzNCwgNiwgMSwgMjQ5LCAyMzEsIDIwNSwgMTgzLCAzNCwgNSwgMSwgCisgICAgMjQ5LCAyMzEsIDIwNSwgMTgzLCAzNCwgNiwgMSwgMjMyLCAyNDcsIDI0OSwgMjMxLCAyMDUsIDE4MywgMzQsIDUsIDEsIAorICAgIDIzMiwgMjQ3LCAyNDksIDIzMSwgMjA1LCAxODMsIDM0LCA2LCAxLCAyMzAsIDI1MiwgMzQsIDUsIDEsIDIzMCwgMjUyLCAzNCwgCisgICAgNiwgMSwgMjIwLCA5MywgMzQsIDUsIDEsIDIyMCwgOTMsIDM0LCA2LCAxLCAyNDEsIDIwNSwgMzQsIDUsIDEsIDI0MSwgMjA1LCAKKyAgICAzNCwgNiwgMSwgMjMyLCAyMDUsIDM0LCA1LCAxLCAyMzIsIDIwNSwgMzQsIDYsIDEsIDIzMiwgMjA2LCAyLCA1MCwgMjM5LCAKKyAgICAyMzcsIDI1MywgMjEsIDM0LCA1LCAxLCAyMzIsIDIwNiwgMiwgNTAsIDIzOSwgMjM3LCAyNTMsIDIxLCAzNCwgNiwgMSwgCisgICAgMjA5LCAyNDksIDM0LCA1LCAxLCAyMDksIDI0OSwgMzQsIDYsIDEsIDIxOCwgOTUsIDIyMiwgMTcwLCAzNCwgNSwgMSwgMjE4LCAKKyAgICA5NSwgMjIyLCAxNzAsIDM0LCA2LCAxLCAyMjIsIDE3MSwgMiwgMjExLCAxNTQsIDM0LCA1LCAxLCAyMjIsIDE3MSwgMiwgCisgICAgMjExLCAxNTQsIDM0LCA2LCAxLCAyMjIsIDEwMywgMzQsIDUsIDEsIDIyMiwgMTAzLCAzNCwgNiwgMSwgMjMxLCAyNywgMzQsIAorICAgIDUsIDEsIDIzMSwgMjcsIDM0LCAyMTEsIDI0MSwgNTMsIDM2LCAzNCwgMjExLCAxNTQsIDM2LCAzNCwgMjIyLCAyNSwgMzYsIAorICAgIDM0LCAyNDYsIDc2LCAyMjAsIDIxMywgMzYsIDM0LCAyMjAsIDg3LCAyMjAsIDIxMywgMzYsIDM0LCAyMjAsIDE5NywgMzYsIAorICAgIDM0LCAyMzgsIDMwLCAyMTEsIDI0MSwgNTMsIDM2LCAzNCwgMjI2LCAyMTMsIDUzLCAzNCwgNiwgMSwgMjE1LCAxNDQsIDIzNywgCisgICAgMjI1LCAyLCAyMTIsIDE5MSwgMzQsIDUsIDEsIDIxNSwgMTQ0LCAyMzcsIDIyNSwgMiwgMjEyLCAxOTEsIDM0LCA2LCAxLCAKKyAgICAyMTYsIDQ4LCA1MywgMzQsIDUsIDEsIDIxNiwgNDgsIDUzLCAzNCwgNiwgMSwgMjQyLCAyMzYsIDIsIDIxMSwgMjA3LCAzNCwgCisgICAgNSwgMSwgMjQyLCAyMzYsIDIsIDIxMSwgMjA3LCAzNCwgNiwgMSwgMjQwLCA4NiwgMiwgMjA5LCAxOTksIDM0LCA1LCAxLCAKKyAgICAyNDAsIDg2LCAyLCAyMDksIDE5OSwgMzQsIDYsIDEsIDI0MCwgODYsIDIsIDkxLCAzNCwgNSwgMSwgMjQwLCA4NiwgMiwgOTEsIAorICAgIDM0LCA2LCAxLCAyNDAsIDg2LCAyLCAyMjYsIDI0NywgMTA5LCAzNCwgNSwgMSwgMjQwLCA4NiwgMiwgMjI2LCAyNDcsIDEwOSwgCisgICAgMzQsIDYsIDEsIDIwNSwgNzMsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgMjA1LCA3MywgMiwgMjQ1LCAyMTEsIDM0LCA2LCAxLCAKKyAgICAyMDUsIDk0LCAyLCAyNDUsIDIxMSwgMzQsIDUsIDEsIDIwNSwgOTQsIDIsIDI0NSwgMjExLCAzNCwgNiwgMSwgMjMyLCA2NiwgCisgICAgMiwgMjQ1LCAyMTEsIDM0LCA1LCAxLCAyMzIsIDY2LCAyLCAyNDUsIDIxMSwgMzQsIDYsIDEsIDIzMiwgNjYsIDIsIDc5LCAKKyAgICA5MSwgMzQsIDUsIDEsIDIzMiwgNjYsIDIsIDc5LCA5MSwgMzQsIDYsIDEsIDIzMiwgNjYsIDIsIDkxLCAzNCwgNSwgMSwgCisgICAgMjMyLCA2NiwgMiwgOTEsIDM0LCA2LCAxLCAyNTAsIDExMiwgMTcyLCAzNCwgNSwgMSwgMjUwLCAxMTIsIDE3MiwgMzQsIDYsIAorICAgIDEsIDI0MywgNDIsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgMjQzLCA0MiwgMiwgMjQ1LCAyMTEsIDM0LCA2LCAyOCwgMjQzLCAKKyAgICA0MiwgMjQwLCA4NSwgMzQsIDUsIDI4LCAyNDMsIDQyLCAyNDAsIDg1LCAzNCwgNiwgMSwgMjIxLCAxNzUsIDIsIDIyNiwgCisgICAgMjQ3LCAxMDksIDM0LCA1LCAxLCAyMjEsIDE3NSwgMiwgMjI2LCAyNDcsIDEwOSwgMzQsIDYsIDEsIDI1MywgMjgsIDE1NSwgCisgICAgMzQsIDUsIDEsIDI1MywgMjgsIDE1NSwgMzQsIDYsIDEsIDI0MiwgMjI2LCAyLCAyNDUsIDIxMSwgMzQsIDUsIDEsIDI0MiwgCisgICAgMjI2LCAyLCAyNDUsIDIxMSwgMzQsIDYsIDEsIDIxMiwgMTMyLCAyLCAyNDUsIDIxMSwgMzQsIDUsIDEsIDIxMiwgMTMyLCAyLCAKKyAgICAyNDUsIDIxMSwgMzQsIDYsIDEsIDIxMywgMjQzLCA3MSwgMzQsIDUsIDEsIDIxMywgMjQzLCA3MSwgMzQsIDYsIDEsIDIxMywgCisgICAgMjQzLCAxMDYsIDIsIDkxLCAzNCwgNSwgMSwgMjEzLCAyNDMsIDEwNiwgMiwgOTEsIDM0LCA2LCAxLCAyMzksIDE0NCwgMiwgCisgICAgMjQ1LCAyMTEsIDM0LCA1LCAxLCAyMzksIDE0NCwgMiwgMjQ1LCAyMTEsIDM0LCA2LCAyOCwgMjEyLCAxMzIsIDIxMCwgMjM3LCAKKyAgICAzNCwgNSwgMjgsIDIxMiwgMTMyLCAyMTAsIDIzNywgMzQsIDYsIDEsIDI0OCwgODMsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgCisgICAgMjQ4LCA4MywgMiwgMjQ1LCAyMTEsIDM0LCA2LCAxLCAyNDgsIDgzLCAyLCA3OSwgOTEsIDM0LCA1LCAxLCAyNDgsIDgzLCAyLCAKKyAgICA3OSwgOTEsIDM0LCA2LCAxLCAyMTUsIDE4NCwgMzQsIDUsIDEsIDIxNSwgMTg0LCAzNCwgNiwgMSwgMjUzLCAyOCwgMjQ4LCAKKyAgICA4MiwgMzQsIDUsIDEsIDI1MywgMjgsIDI0OCwgODIsIDM0LCA2LCAxLCAyNTMsIDI4LCAyNDgsIDgzLCAyLCAyNDUsIDIxMSwgCisgICAgMzQsIDUsIDEsIDI1MywgMjgsIDI0OCwgODMsIDIsIDI0NSwgMjExLCAzNCwgMSwgMjIyLCAxNywgMzQsIDYsIDEsIDIwNSwgCisgICAgNzMsIDIsIDI0OSwgMTIyLCAzNCwgNSwgMSwgMjA1LCA3MywgMiwgMjQ5LCAxMjIsIDM0LCA2LCAxLCAyMzIsIDY2LCAyLCAKKyAgICAxMDksIDM0LCA1LCAxLCAyMzIsIDY2LCAyLCAxMDksIDM0LCA2LCAxLCAyNDMsIDY5LCAyLCAyMTIsIDE5MSwgMzQsIDUsIDEsIAorICAgIDI0MywgNjksIDIsIDIxMiwgMTkxLCAzNCwgNiwgMSwgMjQzLCA0MiwgMiwgMTA5LCAzNCwgNSwgMSwgMjQzLCA0MiwgMiwgCisgICAgMTA5LCAzNCwgNiwgMSwgMjQzLCA0MiwgMiwgMjEyLCAxOTEsIDM0LCA1LCAxLCAyNDMsIDQyLCAyLCAyMTIsIDE5MSwgMzQsIAorICAgIDYsIDEsIDIzMSwgMTYxLCAyNDgsIDgyLCAzNCwgNSwgMSwgMjMxLCAxNjEsIDI0OCwgODIsIDM0LCA2LCAxLCAyNDMsIDUxLCAKKyAgICAyLCAyMTIsIDE5MSwgMzQsIDUsIDEsIDI0MywgNTEsIDIsIDIxMiwgMTkxLCAzNCwgNSwgMSwgMjIyLCAxNywgMzQsIDYsIDEsIAorICAgIDMyLCAyLCAyNDksIDEyMiwgMzQsIDUsIDEsIDMyLCAyLCAyNDksIDEyMiwgMzQsIDYsIDEsIDMyLCAyLCAyNDUsIDE2NiwgCisgICAgMzQsIDUsIDEsIDMyLCAyLCAyNDUsIDE2NiwgMzQsIDYsIDI4LCAzMiwgMjMzLCAxMjksIDM0LCA1LCAyOCwgMzIsIDIzMywgCisgICAgMTI5LCAzNCwgNiwgMSwgMjMzLCAxMzAsIDIsIDI0OSwgMTIyLCAzNCwgNSwgMSwgMjMzLCAxMzAsIDIsIDI0OSwgMTIyLCAKKyAgICAzNCwgNiwgMSwgMjE3LCAxMDAsIDM0LCA1LCAxLCAyMTcsIDEwMCwgMzQsIDYsIDEsIDIxNywgMTAxLCAyLCAyNDUsIDE2NiwgCisgICAgMzQsIDUsIDEsIDIxNywgMTAxLCAyLCAyNDUsIDE2NiwgMzQsIDYsIDEsIDIwNSwgNzMsIDIsIDI0NSwgMTY2LCAzNCwgNSwgCisgICAgMSwgMjA1LCA3MywgMiwgMjQ1LCAxNjYsIDM0LCA2LCAxLCAyMDUsIDk0LCAyLCAyNDUsIDE2NiwgMzQsIDUsIDEsIDIwNSwgCisgICAgOTQsIDIsIDI0NSwgMTY2LCAzNCwgNiwgMSwgMjUzLCAyOCwgMjQzLCAxOTMsIDM0LCA1LCAxLCAyNTMsIDI4LCAyNDMsIAorICAgIDE5MywgMzQsIDYsIDEsIDIzNywgMjI1LCAyLCAyMjgsIDEzLCAzNCwgNSwgMSwgMjM3LCAyMjUsIDIsIDIyOCwgMTMsIDM0LCAKKyAgICA2LCAxLCAyMzcsIDIyNSwgMiwgMjQ1LCAxNjYsIDM0LCA1LCAxLCAyMzcsIDIyNSwgMiwgMjQ1LCAxNjYsIDM0LCA2LCAxLCAKKyAgICAxNDgsIDIsIDI0NSwgMTY2LCAzNCwgNSwgMSwgMTQ4LCAyLCAyNDUsIDE2NiwgMzQsIDYsIDEsIDI1MCwgMTIzLCA3NiwgMzQsIAorICAgIDUsIDEsIDI1MCwgMTIzLCA3NiwgMzQsIDYsIDEsIDI1MCwgMTIzLCAxNDgsIDIsIDI0NSwgMTY2LCAzNCwgNSwgMSwgMjUwLCAKKyAgICAxMjMsIDE0OCwgMiwgMjQ1LCAxNjYsIDM0LCA2LCAxLCAxNzQsIDIsIDI0NSwgMTY2LCAzNCwgNSwgMSwgMTc0LCAyLCAyNDUsIAorICAgIDE2NiwgMzQsIDYsIDEsIDEwNiwgMiwgMjI4LCAxMywgMzQsIDUsIDEsIDEwNiwgMiwgMjI4LCAxMywgMzQsIDYsIDEsIDEwNiwgCisgICAgMiwgMjQ1LCAxNjYsIDM0LCA1LCAxLCAxMDYsIDIsIDI0NSwgMTY2LCAzNCwgNiwgMSwgMTA2LCAyLCA1MCwgMTUzLCAzNCwgCisgICAgNSwgMSwgMTA2LCAyLCA1MCwgMTUzLCAzNCwgNiwgMSwgMjQ4LCA4MywgMiwgMjQ1LCAxNjYsIDM0LCA1LCAxLCAyNDgsIDgzLCAKKyAgICAyLCAyNDUsIDE2NiwgMzQsIDYsIDEsIDI0MCwgODYsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgMjQwLCA4NiwgMiwgMjQ1LCAKKyAgICAyMTEsIDM0LCA2LCAxLCAyMDYsIDMxLCAyLCAyNDUsIDE2NiwgMzQsIDUsIDEsIDIwNiwgMzEsIDIsIDI0NSwgMTY2LCAzNCwgCisgICAgNiwgMSwgMjQwLCA4NiwgMiwgMjEzLCAyMjUsIDIzLCAxMDksIDM0LCA1LCAxLCAyNDAsIDg2LCAyLCAyMTMsIDIyNSwgMjMsIAorICAgIDEwOSwgMzQsIDYsIDEsIDIzOSwgMTQ0LCAyLCAxMDksIDM0LCA1LCAxLCAyMzksIDE0NCwgMiwgMTA5LCAzNCwgNiwgMSwgCisgICAgMjM5LCAxNDQsIDIsIDkxLCAzNCwgNSwgMSwgMjM5LCAxNDQsIDIsIDkxLCAzNCwgNiwgMSwgMjMxLCAzNywgMjQ2LCA5LCAKKyAgICAzNCwgNSwgMSwgMjMxLCAzNywgMjQ2LCA5LCAzNCwgNiwgMSwgMjMxLCAzNywgMjQ1LCA2OCwgMzQsIDUsIDEsIDIzMSwgMzcsIAorICAgIDI0NSwgNjgsIDM0LCA2LCAxLCAyMzEsIDM3LCAyMDUsIDIzLCAzNCwgNSwgMSwgMjMxLCAzNywgMjA1LCAyMywgMzQsIDYsIAorICAgIDEsIDIzMSwgMzcsIDI0MywgMTg1LCAzNCwgNSwgMSwgMjMxLCAzNywgMjQzLCAxODUsIDM0LCA2LCAxLCAyMzEsIDM3LCAKKyAgICAyMjksIDE3NSwgMzQsIDUsIDEsIDIzMSwgMzcsIDIyOSwgMTc1LCAzNCwgNiwgMSwgMjMxLCAzNywgMjI0LCAxNzMsIDM0LCAKKyAgICA1LCAxLCAyMzEsIDM3LCAyMjQsIDE3MywgMzQsIDYsIDEsIDIzMSwgMzcsIDIxNCwgMjQ5LCAzNCwgNSwgMSwgMjMxLCAzNywgCisgICAgMjE0LCAyNDksIDM0LCA2LCAxLCAyMzEsIDM3LCAyMTEsIDE0OCwgMzQsIDUsIDEsIDIzMSwgMzcsIDIxMSwgMTQ4LCAzNCwgCisgICAgNiwgMSwgMjE4LCAyMjQsIDIwNSwgOTMsIDM0LCA1LCAxLCAyMTgsIDIyNCwgMjA1LCA5MywgMzQsIDYsIDEsIDI0MywgNjksIAorICAgIDIsIDEwOSwgMzQsIDUsIDEsIDI0MywgNjksIDIsIDEwOSwgMzQsIDYsIDEsIDIyOSwgMjQ4LCAzNCwgNSwgMSwgMjI5LCAKKyAgICAyNDgsIDM0LCA2LCAxLCAyMTgsIDIxMiwgMzQsIDUsIDEsIDIxOCwgMjEyLCAzNCwgNiwgMSwgMjA2LCA5OCwgMzQsIDUsIDEsIAorICAgIDIwNiwgOTgsIDM0LCA2LCAxLCAyMjAsIDE5LCAzNCwgNSwgMSwgMjIwLCAxOSwgMzQsIDYsIDEsIDIwNywgNTEsIDM0LCA1LCAKKyAgICAxLCAyMDcsIDUxLCAzNCwgNiwgMSwgMjUyLCAxNjgsIDE3MiwgMzQsIDUsIDEsIDI1MiwgMTY4LCAxNzIsIDM0LCA2LCAxLCAKKyAgICAyNDMsIDY5LCAyLCAyMjYsIDI0NywgMTA5LCAzNCwgNSwgMSwgMjQzLCA2OSwgMiwgMjI2LCAyNDcsIDEwOSwgMzQsIDYsIDEsIAorICAgIDI0MywgNDIsIDIsIDIyNiwgMjQ3LCAxMDksIDM0LCA1LCAxLCAyNDMsIDQyLCAyLCAyMjYsIDI0NywgMTA5LCAzNCwgNiwgMSwgCisgICAgMjIxLCAxNzUsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgMjIxLCAxNzUsIDIsIDI0NSwgMjExLCAzNCwgNiwgMSwgMjE1LCAKKyAgICAxODUsIDIsIDI0NSwgMjExLCAzNCwgNSwgMSwgMjE1LCAxODUsIDIsIDI0NSwgMjExLCAzNCwgNiwgMSwgMjQzLCA0MiwgMiwgCisgICAgNDcsIDEwOSwgMzQsIDUsIDEsIDI0MywgNDIsIDIsIDQ3LCAxMDksIDM0LCA2LCAxLCAyNDMsIDE3OCwgMzQsIDUsIDEsIAorICAgIDI0MywgMTc4LCAzNCwgNiwgMSwgMjQ2LCA1OCwgMzQsIDUsIDEsIDI0NiwgNTgsIDM0LCA2LCAxLCAyNDMsIDY5LCAyLCAKKyAgICAyNDUsIDIxMSwgMzQsIDUsIDEsIDI0MywgNjksIDIsIDI0NSwgMjExLCAxNjQsIDYsIDEsIDI1MSwgMTU2LCAxNjQsIDYsIDEsIAorICAgIDI1MCwgMjIsIDE2NCwgNiwgMSwgMjQwLCA0OSwgMTY0LCA2LCAxLCAyNDYsIDE0NSwgMTY0LCA2LCAxLCAyNDMsIDEwOCwgCisgICAgMTY0LCA2LCAxLCAyMDUsIDExNiwgMTY0LCA2LCAxLCAyNDMsIDkyLCAxNjQsIDYsIDEsIDI0MiwgMjAzLCAxNjQsIDYsIDEsIAorICAgIDEyNCwgMTY0LCA2LCAxLCAyMDUsIDcyLCAxNjQsIDYsIDEsIDIzMywgMzgsIDE2NCwgNiwgMSwgMjI5LCAxNzgsIDE2NCwgNiwgCisgICAgMSwgMjA2LCAxNzMsIDE2NCwgNiwgMSwgMjQ5LCAxLCAxNjQsIDYsIDEsIDIzMSwgMjAzLCAxNjQsIDYsIDEsIDIzOCwgMTQ5LCAKKyAgICAxNjQsIDYsIDEsIDIzMiwgMjAwLCAxNjQsIDYsIDEsIDI0MCwgOTYsIDE2NCwgNiwgMSwgMjQ4LCA3NSwgMTY0LCA2LCAxLCAKKyAgICAyMjcsIDgzLCAxNjQsIDYsIDEsIDIwNiwgMTEsIDE2NCwgNiwgMSwgMjI0LCAyOSwgMTY0LCA2LCAxLCAyMTYsIDIsIDE2NCwgCisgICAgNiwgMSwgMjA4LCAxNzMsIDE2NCwgNiwgMSwgMjQ4LCAxMTAsIDE2NCwgNiwgMSwgMjIxLCAxNTcsIDE2NCwgNiwgMSwgMjMyLCAKKyAgICAxNjUsIDE2NCwgNiwgMSwgMjE5LCAxMTMsIDE2NCwgNiwgMSwgMjE3LCA2NCwgMTY0LCA2LCAxLCAyMDgsIDIxOCwgMTY0LCAKKyAgICA2LCAxLCAyMTEsIDE1MSwgMTY0LCA2LCAxLCAyMTksIDE2LCAxNjQsIDYsIDEsIDI0NywgMTc0LCAxNjQsIDYsIDEsIDIwNSwgCisgICAgMjUyLCAxNjQsIDYsIDEsIDIyMCwgMjQ0LCAxNjQsIDYsIDEsIDIzMSwgMjE0LCAxNjQsIDYsIDEsIDIyMiwgMTk0LCAxNjQsIAorICAgIDYsIDEsIDI0MiwgMTUsIDE2NCwgNjUsIDEsIDQ3LCAxNjAsIDIxOCwgMTQ4LCAxNjQsIDI1MiwgNTMsIDE2NCwgMjQzLCA0NSwgCisgICAgODMsIDE2NCwgMjQyLCAxNjgsIDgzLCAxNjQsIDI0NywgMTU1LCAxNjQsIDIxOSwgMTk2LCA4MywgMTY0LCAyNTMsIDI5LCAKKyAgICA4MywgMTY0LCA1LCAxLCAyNTEsIDE1NiwgMTY0LCA1LCAxLCAyNTAsIDIyLCAxNjQsIDUsIDEsIDI0MCwgNDksIDE2NCwgNSwgCisgICAgMSwgMjQ2LCAxNDUsIDE2NCwgNSwgMSwgMjQzLCAxMDgsIDE2NCwgNSwgMSwgMjA1LCAxMTYsIDE2NCwgNSwgMSwgMjQzLCAKKyAgICA5MiwgMTY0LCA1LCAxLCAyNDIsIDIwMywgMTY0LCA1LCAxLCAxMjQsIDE2NCwgNSwgMSwgMjA1LCA3MiwgMTY0LCA1LCAxLCAKKyAgICAyMzMsIDM4LCAxNjQsIDUsIDEsIDIyOSwgMTc4LCAxNjQsIDUsIDEsIDIwNiwgMTczLCAxNjQsIDUsIDEsIDI0OSwgMSwgCisgICAgMTY0LCA1LCAxLCAyMzEsIDIwMywgMTY0LCA1LCAxLCAyMzgsIDE0OSwgMTY0LCA1LCAxLCAyMzIsIDIwMCwgMTY0LCA1LCAxLCAKKyAgICAyNDAsIDk2LCAxNjQsIDUsIDEsIDI0OCwgNzUsIDE2NCwgNSwgMSwgMjI3LCA4MywgMTY0LCA1LCAxLCAyMDYsIDExLCAxNjQsIAorICAgIDUsIDEsIDIyNCwgMjksIDE2NCwgNSwgMSwgMjE2LCAyLCAxNjQsIDUsIDEsIDIwOCwgMTczLCAxNjQsIDUsIDEsIDI0OCwgCisgICAgMTEwLCAxNjQsIDUsIDEsIDIyMSwgMTU3LCAxNjQsIDUsIDEsIDIzMiwgMTY1LCAxNjQsIDUsIDEsIDIxOSwgMTEzLCAxNjQsIAorICAgIDUsIDEsIDIxNywgNjQsIDE2NCwgNSwgMSwgMjA4LCAyMTgsIDE2NCwgNSwgMSwgMjExLCAxNTEsIDE2NCwgNSwgMSwgMjE5LCAKKyAgICAxNiwgMTY0LCA1LCAxLCAyNDcsIDE3NCwgMTY0LCA1LCAxLCAyMDUsIDI1MiwgMTY0LCA1LCAxLCAyMjAsIDI0NCwgMTY0LCAKKyAgICA1LCAxLCAyMzEsIDIxNCwgMTY0LCA1LCAxLCAyMjIsIDE5NCwgMTY0LCA1LCAxLCAyNDIsIDE1LCAxNjQsIDUsIDI4LCAyNDMsIAorICAgIDEwOSwgMjA1LCAyNTIsIDE2NCwgMjQxLCA4MiwgMjEzLCAyNTEsIDE2NCwgMjM3LCAyMzksIDIxOCwgMTY2LCAxNjQsIDI0MiwgCisgICAgMTk5LCA1MywgMjMwLCA0NSwgMTY0LCAyNDIsIDE5OSwgNTMsIDE2NCwgMjQzLCAyNTQsIDUzLCAxMDMsIDI1MywgMjIsIAorICAgIDI0MiwgMTk0LCAxMDMsIDI1MywgMjIsIDIxNywgNjUsIDEwMywgMjUzLCAyMiwgMjE1LCAyNDAsIDEwMywgMjUzLCAyMiwgCisgICAgMjA1LCAxMDQsIDIyMCwgMiwgMTAzLCAyNTMsIDIyLCAyMDUsIDEwNCwgMjQwLCAyMzQsIDEwMywgMjUzLCAyMiwgMjExLCAKKyAgICAxNjUsIDEwMywgMjUzLCAyMiwgMjE4LCAyMjEsIDEwMywgMjUzLCAyMiwgMjA1LCAxMDIsIDEwMywgMjUzLCAyMiwgMjIxLCAKKyAgICAyMDEsIDEwMywgMjUzLCAyMiwgMjA2LCAyMywgMTAzLCAyNTMsIDIyLCAyMTIsIDYzLCAxMDMsIDI1MywgMjIsIDI0MCwgCisgICAgMTQ3LCAxMDMsIDI1MywgMjIsIDI0MCwgMTQ4LCAyMjYsIDc4LCAxMDMsIDI1MywgMjIsIDI0MCwgMTQ1LCAxMDMsIDI1MywgCisgICAgMjIsIDIyMCwgMywgMjIxLCAyMzAsIDEwMywgMjUzLCAyMiwgMjEyLCAxMDQsIDI0MCwgMTYzLCAxMDMsIDI1MywgMjIsIAorICAgIDIyMSwgMTgwLCAxMDMsIDI1MywgMjIsIDI1MSwgMTkzLCAyMzksIDEzNiwgMTAzLCAyNTMsIDIyLCAyMjYsIDg4LCAxMDMsIAorICAgIDI1MywgMjIsIDIyNywgMjQ0LCAxMDMsIDI1MywgMjIsIDIyNywgNzMsIDEwMywgMjUzLCAyMiwgMjI3LCA3NCwgMjMxLCAKKyAgICAyMTUsIDEwMywgMjUzLCAyMiwgMjQ2LCA4NSwgMTAzLCAyNTMsIDIyLCAyMjAsIDE0LCAxMDMsIDI1MywgMjIsIDIxMiwgCisgICAgMTA0LCAyMTksIDI1MywgMTAzLCAyNTMsIDIyLCAyMDYsIDMzLCAyNTAsIDIzLCAyMDUsIDIzMywgMTAzLCAyNTMsIDIyLCAKKyAgICAyMjIsIDE3NywgMTAzLCAyNTMsIDIyLCAyMzMsIDg4LCAxMDMsIDI1MywgMjIsIDI0NSwgMjQzLCAxMDMsIDI1MywgMjIsIAorICAgIDIwNSwgMjksIDEwMywgMTQxLCAyMjcsIDE3NCwgMjQ3LCAyMzMsIDEwMywgMjIwLCAyMDUsIDIxNSwgMTg3LCAxMDMsIDIyMCwgCisgICAgMjA1LCAyMzksIDg1LCAyMTcsIDY1LCAxMDMsIDIyMCwgMjA1LCAyMzksIDg1LCAyMjEsIDE5NCwgMTAzLCAyMjAsIDIwNSwgCisgICAgMjM5LCA4NSwgMjIwLCA3LCAxMDMsIDIyMCwgMjA1LCAyMzgsIDI0NCwgMTAzLCAyMjAsIDIwNSwgMjEwLCAyMzQsIDEwMywgCisgICAgMjIwLCAyMDUsIDIxNywgNjUsIDEwMywgMjIwLCAyMDUsIDIyMSwgMTk0LCAxMDMsIDIyMCwgMjA1LCAyMjAsIDcsIDEwMywgCisgICAgMjIwLCAyMDUsIDIzOCwgMTQyLCAxMDMsIDIyMCwgMjA1LCAyMzgsIDE0MywgMjM5LCA4NywgMzMsIDIwOSwgNDMsIDEwMywgCisgICAgMjIwLCAyMDUsIDIxOSwgMjAwLCAxMDMsIDIyMCwgMjA1LCAyNDYsIDEzMSwgMjIyLCAxMjMsIDIyNywgMjA0LCAxMDMsIAorICAgIDIyMCwgMjA1LCAyMjcsIDYyLCAxMDMsIDIyMCwgNzIsIDIyNywgMjAxLCAxMDMsIDIyMCwgMjA1LCAyMTksIDkzLCAxMDMsIAorICAgIDIyMCwgNzIsIDIyMSwgMjAzLCAxMDMsIDIyMCwgMjA1LCAyMTUsIDE3MiwgMjQ1LCAyMywgMTAzLCAyMjAsIDIwNSwgMjE1LCAKKyAgICA0NSwgMjQ1LCAyMywgMTAzLCAyMjAsIDcyLCAyMTQsIDE4OCwgMjIxLCAxOTYsIDEwMywgMTQxLCAyMDksIDIwMywgMjQ1LCAKKyAgICAyMywgMTAzLCAxNDEsIDIyOSwgOTIsIDI0NSwgMjMsIDEwMywgMjIwLCA3MiwgMjIzLCAxNzQsIDIzOSwgMTM1LCAxMDMsIAorICAgIDIyMCwgMjA1LCAyMjAsIDgsIDIyMCwgMiwgMTAzLCAxLCAyNTIsIDE3MiwgMTAzLCAxLCAyNTAsIDEwLCAxMDMsIDEsIDI0MCwgCisgICAgNDcsIDEwMywgMSwgMjQ2LCAxMTEsIDEwMywgMSwgMjM5LCA3MSwgMTAzLCAxLCAyMDksIDQzLCAxMDMsIDEsIDIwNSwgOTYsIAorICAgIDEwMywgMSwgMjM5LCAyOSwgMTAzLCAxLCAyMTIsIDgwLCAxMDMsIDEsIDIwNSwgMjM2LCAxMDMsIDEsIDQyLCAyMzIsIDQ1LCAKKyAgICAxMDMsIDEsIDIzMiwgNDUsIDEwMywgMSwgMjMwLCA5OCwgMTAzLCAxLCA0MiwgMjI3LCA5MCwgMTAzLCAxLCAyMjcsIDkwLCAKKyAgICAxMDMsIDEsIDQyLCAyMjMsIDE3MywgMTAzLCAxLCAyMjMsIDE3MywgMTAzLCAxLCAyMTcsIDE1NywgMTAzLCAxLCAyNTEsIAorICAgIDE1NCwgMTAzLCAxLCA0MiwgMjIxLCAxNzQsIDEwMywgMSwgMjIxLCAxNzQsIDEwMywgMSwgNDIsIDIxMCwgMjM4LCAxMDMsIAorICAgIDEsIDIxMCwgMjM4LCAxMDMsIDEsIDIxOSwgMjIzLCAxMDMsIDEsIDIxOCwgMjQyLCAxMDMsIDEsIDIxNSwgMTcxLCAxMDMsIAorICAgIDEsIDIxMiwgMTQ3LCAxMDMsIDI4LCAyMDYsIDksIDUwLCAyMDksIDQzLCAxMDMsIDI4LCAyMDYsIDksIDIwOSwgNDQsIDIwNSwgCisgICAgMjM2LCAxMDMsIDI4LCAyMDYsIDksIDUwLCAyMDUsIDIzNiwgMTAzLCAyMjAsIDcyLCAyNDAsIDE0NywgMTAzLCAyMjAsIDcyLCAKKyAgICAyNDAsIDE0NSwgOCwgNDMsIDUzLCA4LCAzLCAyMTcsIDE1MCwgOCwgMjQxLCAxNDYsIDIyNywgMTg3LCA4LCAzLCAyMTcsIAorICAgIDE4NywgOCwgMywgMjE3LCAxNTMsIDgsIDQzLCAxNDEsIDUyLCAyNTIsIDMzLCAyNDcsIDM2LCAyMTgsIDEwMywgMjUyLCAzMywgCisgICAgMjQxLCAxMTgsIDIxOCwgMTAzLCA4LCAyMTksIDU4LCAyNTIsIDMzLCAyMjEsIDEzMiwgMjI2LCAyMTUsIDUzLCAyNTIsIDMzLCAKKyAgICAyMjEsIDEzMiwgMjEyLCA5OSwgMjExLCAyNDMsIDUzLCAyNTIsIDIyNSwgNTMsIDgsIDI0NywgMTU1LCA4LCAyNDYsIDcyLCAKKyAgICAyMTYsIDM5LCA4LCAyMjAsIDIwNywgMjA5LCAyNCwgNTMsIDgsIDMsIDIyNiwgMTk0LCA4LCAzLCAyMTcsIDE2NywgMjUyLCAKKyAgICAxNzUsIDIwNywgNzUsIDgsIDMsIDI1MiwgMTc1LCAyNTEsIDIxNCwgOCwgMywgMjE5LCA5MSwgMjUyLCAxNzQsIDgsIDMsIAorICAgIDIxOSwgOTksIDI1MiwgMTU0LCAyNTIsIDEwMywgOCwgMywgMjEyLCAxODQsIDgsIDUsIDEyNywgMjEyLCAxOTQsIDgsIDUsIAorICAgIDEyNywgMjgsIDEyNiwgMiwgMjMwLCAxMDcsIDIsIDIwNiwgNDcsIDgsIDUsIDEyNywgMjA1LCAxMDgsIDgsIDUsIDI0MiwgCisgICAgMzksIDgsIDUsIDI0NiwgMTA2LCA4LCA1LCAyMzEsIDI1MiwgOCwgMjE2LCA1MiwgOCwgMSwgODMsIDgsIDIxMSwgMzYsIDY3LCAKKyAgICAyMjAsIDcyLCA4MywgOCwgMjE5LCAxOTYsIDgzLCA4LCAxLCAyMzIsIDAsIDIwNiwgNDcsIDgsIDEsIDIzOSwgMTExLCA4LCAKKyAgICAxLCAxMjYsIDIsIDIyOCwgOSwgNTIsIDgsIDEsIDEyNiwgMiwgMjM5LCAxMTIsIDUyLCA4LCAxLCAyMDcsIDYwLCAyLCAyMzksIAorICAgIDExMiwgNTIsIDgsIDEsIDEyNiwgMiwgMjM5LCAxMTIsIDU1LCA4LCAxLCA4NywgMiwgMjM5LCAxMTIsIDUyLCA4LCAxLCAKKyAgICAyNTIsIDE3MiwgOCwgMSwgMjUwLCAzOCwgOCwgMSwgMjEyLCAxMTYsIDIyNywgMTk3LCA4LCAxLCAyMTIsIDExNSwgOCwgMSwgCisgICAgMjEyLCAzNywgOCwgMSwgMjMyLCAxNzksIDgsIDEsIDIzOSwgMTMyLCA4LCAxLCAyMzEsIDE2MywgOCwgMSwgMjQ2LCAxMTcsIAorICAgIDgsIDEsIDIxMiwgNDksIDgsIDEsIDIxOSwgMTYsIDgsIDEsIDIwNSwgMTA4LCA4LCAxLCAyMTcsIDcwLCA4LCAxLCAyMTUsIAorICAgIDIxMCwgOCwgMSwgMjE3LCAxOTEsIDgsIDEsIDI0NiwgMTQwLCA4LCAxLCAyMTIsIDE5NCwgOCwgMSwgMjA1LCAxMTEsIDgsIAorICAgIDEsIDI1MiwgMjAwLCA4LCAxLCAyNDAsIDk0LCA4LCAxLCAyMzEsIDIxMywgMiwgMTE4LCAxNzcsIDUyLCA4LCAxLCAyMzEsIAorICAgIDIxMywgMiwgMTI5LCAxNzcsIDU1LCA4LCAxLCAyNDIsIDQyLCA4NywgMiwgMjMzLCAyLCAyMDksIDE0OCwgOCwgMSwgMjQyLCAKKyAgICA0MiwgODcsIDIsIDExOCwgMTc3LCA1MiwgOCwgMSwgMjQyLCA0MiwgODcsIDIsIDEyOSwgMTc3LCA1MiwgOCwgMjEyLCAxNTMsIAorICAgIDgsIDEsIDI0MiwgMTUsIDgsIDEsIDIyMCwgMTIsIDgsIDEsIDIzMiwgNDUsIDgsIDEsIDIzMCwgMTA2LCA4LCAxLCAyMjcsIAorICAgIDEwNCwgOCwgMSwgMjI0LCA1NCwgOCwgMSwgMjM5LCA1MCwgOCwgMSwgMjA3LCA1OSwgOCwgMSwgMTI2LCAyMjcsIDIyOCwgOCwgCisgICAgMSwgMjA2LCA0NywgOCwgMjQyLCAzNywgOCwgMjQ2LCAxMDQsIDgsIDIzMSwgMjUwLCA4LCAyNDIsIDM5LCA4LCAyNDYsIAorICAgIDEwNiwgOCwgMjMxLCAyNTIsIDgsIDIxNSwgMjQ5LCA4LCAyMTMsIDE2MiwgOCwgMjI4LCA3LCA1MiwgOCwgMjM5LCAxMTIsIAorICAgIDUyLCA4LCAyMzksIDExMiwgNTUsIDgsIDIxMywgMTgzLCAyNTIsIDE3MiwgOCwgMjMzLCAyLCAyNDYsIDEwNiwgOCwgMTQxLCAKKyAgICAyMjQsIDU1LCAyNDAsIDY1LCA4LCAyMDQsIDI1MSwgOCwgMjIsIDMsIDUsIDIwOSwgMTQ5LCA1MiwgOCwgMjIsIDMsIDIzMywgCisgICAgMiwgNSwgMjA5LCAxNDksIDUyLCA4LCAyMiwgMywgNjcsIDU1LCA4LCAyMTgsIDIyNCwgMjQ2LCAxMDYsIDgsIDI0MiwgNDAsIAorICAgIDIsIDExOCwgMjQ1LCAyMSwgOCwgMjA3LCA2MSwgMjM5LCAxMTIsIDU1LCAyNTIsIDMzLCAxOCwgMjA1LCA4NSwgMjUyLCAzMywgCisgICAgMTgsIDEwMiwgMjUyLCAzMywgMTgsIDEwNSwgMjUyLCAzMywgMTgsIDE0MiwgMjUyLCAzMywgMTgsIDEzOSwgMjUyLCAzMywgCisgICAgMTgsIDE2OCwgMjUyLCAzMywgMTgsIDE4NCwgMjUyLCAzMywgMTgsIDE5NSwgMjUyLCAzMywgMTgsIDE5MywgMjUyLCAzMywgCisgICAgMTgsIDIwMCwgOCwgMjIxLCAxMzEsIDUzLCA4LCAyNDYsIDIsIDIxNiwgMzksIDgsIDIxMSwgMjQxLCAyMTYsIDM5LCA4LCAKKyAgICAyNDEsIDIwNCwgMjIwLCAyMDMsIDIxNCwgMjYsIDgsIDEsIDI0NSwgMjIsIDI1MCwgMzgsIDgsIDEsIDI0NSwgMjIsIDIyMCwgCisgICAgMTIsIDgsIDEsIDIxMywgMTM5LCAyNTIsIDE3MiwgOCwgMSwgMTI2LCAyMDcsIDc2LCA4LCAxLCAxMjYsIDIsIDIwNywgNjEsIAorICAgIDIzOSwgMTEyLCA1MiwgOCwgMSwgMTI2LCAyLCAyMDcsIDYxLCAyMzksIDExMiwgNTUsIDgsIDEsIDEyNywgMjM5LCAxMTEsIAorICAgIDgsIDEsIDEyNywgMjM5LCAxMTIsIDI1MiwgMTcyLCA4LCAxLCAxMjcsIDIzOSwgMTEyLCAyMDcsIDU5LCA4LCAxLCAxMDYsIAorICAgIDIsIDIzOSwgMTEyLCA1MiwgOCwgMSwgMTI3LCAyMzksIDExMiwgMjA2LCA0NywgOCwgMSwgMjEwLCAyMDAsIDgsIDEsIDIxMCwgCisgICAgMTk4LCA4LCAxLCAyNTAsIDQ4LCA4LCAxLCAyMTIsIDExNiwgMiwgMjE4LCAxNDgsIDgsIDEsIDIxMiwgMTE2LCAyLCAxMjksIAorICAgIDE3NywgODQsIDI0NCwgNiwgOCwgMSwgMjIxLCAxNTcsIDgsIDEsIDIxMiwgMTEzLCA4LCAxLCAyNTAsIDM2LCA4LCAxLCAKKyAgICAxNDAsIDIsIDIzOSwgMTEyLCA1MiwgOCwgMSwgMTQwLCAyLCAxMTgsIDE3NywgNzksIDUyLCA4LCAxLCAyMjMsIDEzMSwgOCwgCisgICAgMSwgMjQzLCAyMDEsIDgsIDEsIDE0MCwgMiwgMTI5LCAxNzcsIDUyLCA4LCAxLCAyMTIsIDEzNSwgOCwgMSwgMjEyLCAxMzMsIAorICAgIDgsIDEsIDI0NiwgNDksIDgsIDEsIDI0NiwgMTE4LCAyLCAyMTgsIDE0OCwgOCwgMSwgMjQ2LCAxMTgsIDIsIDY3LCA1NSwgOCwgCisgICAgMSwgMjQ2LCAxMTgsIDIsIDY3LCAyNTAsIDI2LCAyMywgNSwgMjEyLCAxOTQsIDgsIDEsIDI0NiwgMTI0LCA4LCAxLCAyNDYsIAorICAgIDUxLCA4LCAxLCAyNDMsIDIyOSwgOCwgMSwgMjQ2LCAxMTgsIDIsIDEyOSwgMTc3LCA4NCwgMjQ0LCA2LCA4LCAxLCAyNDYsIAorICAgIDExOCwgMiwgMjQxLCAxMjUsIDE3NywgNTIsIDgsIDEsIDIxOCwgODEsIDgsIDEsIDIxOSwgMTcsIDIsIDUsIDIwOSwgMTQ4LCAKKyAgICA4LCAxLCAyMTksIDE3LCAyLCAyMTgsIDE0OCwgOCwgMSwgMjE5LCAxNywgMiwgNjcsIDU1LCA4LCAxLCAyMTksIDE3LCAyLCAKKyAgICA1LCAyMDksIDE0OSwgNTUsIDgsIDEsIDIxOSwgMTcsIDIsIDY3LCAyNTAsIDI2LCAyMywgNjcsIDUyLCA4LCAxLCAyMTksIAorICAgIDE3LCAyLCAxMTgsIDE3NywgNTIsIDgsIDEsIDIzMiwgMTc2LCA4LCAxLCAyMTksIDE3LCAyLCAyNDEsIDEyNSwgMTc3LCA1MiwgCisgICAgOCwgMSwgMjE3LCA3MSwgMiwgNjcsIDI1MCwgMjYsIDIzLCA2NywgNTIsIDgsIDEsIDIxNywgNzEsIDIsIDEyOSwgMTc3LCAKKyAgICA1NSwgOCwgMSwgMjE3LCA3MSwgMiwgMTI5LCAxNzcsIDI1MCwgMjYsIDIzLCAxMjksIDE3NywgNTIsIDgsIDEsIDIxNywgCisgICAgMTkyLCAyLCAxMTgsIDE3NywgNTUsIDgsIDEsIDIxNywgMTkyLCAyLCAxMjksIDE3NywgNTIsIDgsIDEsIDIxMiwgMTk1LCAyLCAKKyAgICAxMjksIDE3NywgNTIsIDgsIDEsIDI1MiwgMjAxLCAyLCAxMjksIDE3NywgNTIsIDgsIDEsIDI0NSwgMjIsIDI0MiwgMTUsIDgsIAorICAgIDEsIDI0MiwgMTYsIDIsIDY3LCAyMjYsIDEyMiwgNTUsIDgsIDEsIDI0MiwgMTYsIDIsIDY3LCA1NSwgOCwgMSwgMjA5LCAzMiwgCisgICAgOCwgMSwgMjQyLCAxNiwgMiwgMTI5LCAxNzcsIDU1LCA4LCAxLCAyMjEsIDE1NSwgOCwgMSwgMjIwLCAxMywgMiwgNjcsIDUyLCAKKyAgICA4LCAxLCAyMjAsIDEzLCAyLCAxMjksIDE3NywgNTIsIDgsIDEsIDIzMSwgMjEyLCA4LCAxLCAyMTMsIDEwOSwgMjMyLCA0NSwgCisgICAgOCwgMSwgMjMyLCA0NiwgMiwgMjE4LCAxNDgsIDgsIDEsIDIzMiwgNDYsIDIsIDY3LCA1MiwgOCwgMSwgMjI1LCA3OSwgOCwgCisgICAgMSwgMjMyLCA0NiwgMiwgMTI5LCAxNzcsIDU1LCA4LCAxLCAyNDAsIDIzMSwgOCwgMSwgMjQwLCAyMzIsIDIsIDIxOCwgMTQ4LCAKKyAgICA4LCAxLCAyMjUsIDAsIDgsIDEsIDI0MCwgMjMyLCAyLCAxMTgsIDE3NywgNTUsIDgsIDEsIDIzOSwgMjAwLCA4LCAxLCAyNDAsIAorICAgIDIzMiwgMiwgMTI5LCAxNzcsIDUyLCA4LCAxLCAyMzAsIDEwNywgMiwgNSwgMjA5LCAxNDgsIDgsIDEsIDIzMCwgMTA3LCAyLCAKKyAgICA2NywgNTIsIDgsIDEsIDIzMCwgMTA3LCAyLCAxMjksIDE3NywgNTIsIDgsIDEsIDIzMCwgMTA3LCAyLCAxMjksIDE3NywgNTUsIAorICAgIDgsIDEsIDIyNCwgNTUsIDIsIDY3LCA1NSwgOCwgMSwgMjI0LCA1NSwgMjQwLCA2NSwgOCwgMSwgMjE4LCAxMjcsIDgsIDEsIAorICAgIDIyNCwgNTUsIDIsIDIxOCwgMTQ4LCA4LCAxLCAyMjQsIDU1LCAyLCAxMjksIDE3NywgNTIsIDgsIDEsIDIzOSwgNTEsIDI0NSwgCisgICAgNDcsIDgsIDEsIDIxMiwgMTM2LCAyLCA2NywgNTIsIDgsIDEsIDIzOSwgNTEsIDIsIDg3LCA1MiwgOCwgMSwgMjM5LCA1MSwgCisgICAgMjQwLCAxNiwgOCwgMSwgMjM5LCA1MSwgMjQwLCAxNywgMiwgMjM5LCAxMTIsIDUyLCA4LCAxLCAyMTIsIDExNiwgMjI3LCAKKyAgICAxOTgsIDI0MCwgMTYsIDgsIDEsIDIwNywgNjAsIDIsIDIxOCwgMTQ4LCA4LCAxLCAyMzEsIDEwMSwgMjIyLCAyMDYsIDgsIDEsIAorICAgIDIyMiwgMjA2LCA4LCAxLCA3MSwgOCwgMSwgMjA1LCAyMTMsIDgsIDEsIDIzMSwgMTAxLCAyMDUsIDIxMywgOCwgMSwgMjA3LCAKKyAgICA2MCwgMiwgMTE4LCAxNzcsIDUyLCA4LCAxLCAyMDksIDM5LCA4LCAxLCAyNDIsIDQyLCAyMDYsIDQ3LCA4LCAxLCA4NywgMiwgCisgICAgMjEyLCAxOTEsIDgsIDEsIDg3LCAyLCA1LCAyMDksIDE0OCwgOCwgMSwgMjA3LCA2MCwgMiwgNjcsIDUyLCA4LCAxLCA3NSwgCisgICAgOCwgMSwgODcsIDIsIDEyOSwgMTc3LCA1NSwgOCwgMSwgODcsIDI1MCwgMTIxLCA4LCAxLCA4NywgMjUwLCAxMjIsIDIsIAorICAgIDIzOSwgMTEyLCA1MiwgOCwgMjQxLCA4MiwgMjEzLCAyNTEsIDgsIDEsIDI1MiwgMjQ4LCA4LCA1LCAxMjcsIDI4LCAyMTcsIAorICAgIDE5MiwgMiwgMjMwLCAxMDcsIDIsIDEyNiwgMjI3LCAyMjgsIDgsIDUsIDEyNywgMjgsIDIyMCwgMTMsIDIsIDIzMCwgMTA3LCAKKyAgICAyLCAxMjYsIDIyNywgMjI4LCA4LCA1LCAxMjcsIDgwLCA3OCwgMTcsIDgsIDUsIDEyNywgMjMwLCAxMDcsIDI1MiwgMTcyLCAKKyAgICA4LCA1LCAxMjcsIDIzMiwgMTc5LCA4LCA1LCAxMjcsIDEyOSwgMjQ1LCAyMSwgOCwgNSwgMTI3LCAyMTcsIDcwLCA4LCAyNDMsIAorICAgIDM0LCA3MywgMjUxLCAxNTgsIDgsIDIxNCwgMjIsIDczLCAyMTgsIDQ4LCAyNDMsIDY5LCAyMzgsIDI0MCwgOCwgNSwgMTI3LCAKKyAgICAyMTgsIDkzLCAyMDUsIDg1LCA4LCA1LCAxMjcsIDIwOSwgMjAyLCAyMTksIDM2LCAyMDUsIDg1LCA4LCA1LCAxMjcsIDI0NSwgCisgICAgMjIsIDIzOSwgNjksIDczLCAyMzEsIDE2MywgOCwgNSwgMTI3LCA4MCwgNjEsIDE3LCA4LCA1LCAxMTQsIDIxNywgNzAsIDgsIAorICAgIDUsIDEyNywgMjI4LCA4LCA4LCA1LCAyMDcsIDU5LCA4LCA1LCAyMDYsIDQ3LCA4LCA1LCAxMjcsIDIwNiwgNDcsIDgsIDUsIAorICAgIDEyNywgMjI0LCA1NCwgOCwgMjIwLCAyMzksIDczLCAyMTcsIDE3NywgOCwgMjQzLCA0MywgMjQ4LCAxMjksIDExNCwgMjEzLCAKKyAgICAyNTEsIDgsIDI0MywgNDMsIDI0OCwgMTI5LCAxMjcsIDIxMywgMjUxLCA4LCAyMTgsIDkzLCAxMjcsIDIxMywgMjUyLCAyLCAKKyAgICAyNDEsIDIzMywgMjQ4LCAxMjgsIDgsIDUsIDExNCwgMjI3LCAxMDQsIDgsIDEsIDI0NiwgMTE4LCAyLCAyMzMsIDIsIDIwOSwgCisgICAgMTQ4LCA4LCAxLCAyMTksIDE3LCAyLCAyMzMsIDIsIDIwOSwgMTQ4LCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIDIwNSwgODUsIAorICAgIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgMTAyLCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIDEwNSwgMjQyLCAxNTksIDI1MiwgCisgICAgMzMsIDE4LCAxNDIsIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgMTM5LCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIDE2OCwgMjQyLCAKKyAgICAxNTksIDI1MiwgMzMsIDE4LCAxODQsIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgMTk1LCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIAorICAgIDE5MywgMjQyLCAxNTksIDI1MiwgMzMsIDE4LCAyMDAsIDgsIDEsIDIxNSwgMjExLCAyLCA2NywgNTUsIDgsIDEsIDI0NiwgCisgICAgMTQxLCAyLCA2NywgNTUsIDgsIDEsIDI0MCwgOTUsIDIsIDY3LCA1NSwgOCwgMywgMjE1LCA0NCwgMjUyLCAxMjUsIDgsIDMsIAorICAgIDIxNSwgNDQsIDIyMCwgMTcyLCAyMjcsIDgzLCA4LCAxLCAyMzksIDUxLCAyLCAyMzMsIDIsIDIwOSwgMTQ4LCAyMTMsIDMwLCAKKyAgICAyNDMsIDM0LCA3MywgMjIxLCAyMjgsIDIxMywgMzAsIDIxMywgMTM1LCAyNDEsIDgyLCAyMTMsIDI1MSwgMjEzLCAzMCwgCisgICAgMjEzLCAxODUsIDI0MSwgODIsIDIxMywgMjUxLCAyMTMsIDMwLCAyMTMsIDEzNSwgMjQ3LCAxNjIsIDIxMywgMzAsIDIxMywgCisgICAgMTg1LCAyNDcsIDE2MiwgMjEzLCAzMCwgMTk0LCAyNDcsIDE2MiwgMjEzLCAzMCwgMjQ3LCAxNjMsIDIxNCwgMjQ2LCAyMzAsIAorICAgIDQ2LCAyMTMsIDMwLCAyNDcsIDE2MywgMjE0LCAyNDYsIDIxOCwgMTY3LCAyMTMsIDMwLCAyMTMsIDEzNSwgMjQ3LCAxNjMsIAorICAgIDIxNCwgMjQ2LCAyMzAsIDQ2LCAyMTMsIDMwLCAyMTMsIDE4NSwgMjQ3LCAxNjMsIDIxNCwgMjQ2LCAyMTgsIDE2NywgMjEzLCAKKyAgICAzMCwgMjQ3LCAxMTEsIDIxMywgMzAsIDIzOSwgOTIsIDIyMiwgMjI0LCAyMTMsIDMwLCAyMzksIDkyLCAyMjcsIDYwLCAyMTMsIAorICAgIDMwLCAyMzksIDkyLCAyNTEsIDIxMSwgMjEzLCAzMCwgMjUzLCAyOSwgODMsIDIxMywgMzAsIDEsIDI1MiwgMTc3LCAyMTMsIAorICAgIDMwLCAxLCAyMTMsIDEzOSwgMjUyLCAxNzcsIDIxMywgMzAsIDEsIDI1MCwgNywgMjEzLCAzMCwgMSwgMjQwLCAyMjEsIDIxMywgCisgICAgMzAsIDEsIDI0MCwgMjIyLCAyNDAsIDE5OSwgMjEzLCAzMCwgMSwgMjQ2LCAxMTQsIDIxMywgMzAsIDEsIDI0NSwgMjIsIAorICAgIDI0NiwgMTE1LCAyMTgsIDE0MywgMjEzLCAzMCwgMSwgMjM5LCA3MSwgMjEzLCAzMCwgMSwgMjA3LCA1OSwgMjEzLCAzMCwgMSwgCisgICAgMjA1LCAxMDgsIDIxMywgMzAsIDEsIDIzOSwgMjcsIDIxMywgMzAsIDEsIDIxMiwgNzYsIDIxMywgMzAsIDEsIDIxMiwgNzcsIAorICAgIDI0MCwgMTk5LCAyMTMsIDMwLCAxLCAyMDUsIDIwMCwgMjEzLCAzMCwgMSwgMjA1LCAyMDEsIDIzOSwgNzEsIDIxMywgMzAsIAorICAgIDEsIDIzMiwgMTcsIDIxMywgMzAsIDEsIDIzMCwgMTA1LCAyMTMsIDMwLCAxLCAyMjYsIDIxMSwgMjEzLCAzMCwgMSwgMjIzLCAKKyAgICAxNzMsIDIxMywgMzAsIDEsIDIxNiwgNDUsIDIxMywgMzAsIDEsIDQyLCAyMTYsIDQ1LCAyMTMsIDMwLCAxLCA3NSwgMjEzLCAKKyAgICAzMCwgMSwgMjIxLCAxNzQsIDIxMywgMzAsIDEsIDIxOCwgMjI0LCAyMjEsIDE3NCwgMjEzLCAzMCwgMSwgMjE3LCAxODksIAorICAgIDIxMywgMzAsIDEsIDIyMCwgNiwgMjEzLCAzMCwgMSwgMjE4LCAxNDMsIDIxMywgMzAsIDEsIDIxNSwgMTcxLCAyMTMsIDMwLCAKKyAgICAxLCAyMTIsIDE0NSwgMjEzLCAzMCwgMSwgMjIxLCAxMTYsIDI0OSwgMjUwLCAyMTMsIDMwLCAxLCAyMjEsIDExNiwgMjQwLCAKKyAgICA5MiwgMjEzLCAzMCwgMSwgMjIxLCAxMTYsIDI0NSwgMTg3LCAyMTMsIDMwLCAyMjAsIDgzLCA1MiwgMjEzLCAzMCwgMjIwLCAKKyAgICA4MywgNTUsIDIxMywgMzAsIDIyMCwgODMsIDI0NCwgMjAsIDIxMywgMzAsIDIwNSwgMTMsIDUyLCAyMTMsIDMwLCAyMDUsIAorICAgIDEzLCA1NSwgMjEzLCAzMCwgMjA1LCAxMywgMjQ0LCAyMCwgMjEzLCAzMCwgMjE5LCA1NCwgNTIsIDIxMywgMzAsIDIxOSwgCisgICAgNTQsIDU1LCAyMTMsIDMwLCAyNDQsIDIxLCAyMDUsIDIwLCAyMzgsIDEyMSwgMjEzLCAzMCwgMjQ0LCAyMSwgMjA1LCAyMCwgCisgICAgMjUyLCAxMDQsIDIxMywgMzAsIDIzOSwgNzQsIDUyLCAyMTMsIDMwLCAyMzksIDc0LCA1NSwgMjEzLCAzMCwgMjM5LCA3MywgCisgICAgMjQ0LCAyMCwgMjEzLCAzMCwgMjQyLCAyMTksIDUyLCAyMTMsIDMwLCAyNDIsIDIxOSwgNTUsIDIxMywgMzAsIDIxOCwgMTYsIAorICAgIDIxMywgMzAsIDI0MiwgOSwgMjQ1LCAyMywgMjEzLCAzMCwgMjE5LCAxNzQsIDIxMywgMzAsIDIxOCwgNDMsIDIxMywgMzAsIAorICAgIDExOCwgNzksIDE3NywgNTIsIDIxMywgMzAsIDExOCwgNzksIDE3NywgNTUsIDIxMywgMzAsIDEyOSwgMTc3LCA1MiwgMjEzLCAKKyAgICAzMCwgMTI5LCAxNzcsIDU1LCAyMTMsIDMwLCAyMjIsIDIyMiwgMjI5LCAyMDYsIDUyLCAyMTMsIDMwLCAyMjIsIDIyMiwgCisgICAgMjI5LCAyMDYsIDU1LCAyMTMsIDMwLCAyMjYsIDY0LCAyMTMsIDMwLCAyNTAsIDEyMCwgMjEzLCAzMCwgMSwgMjE0LCAxODQsIAorICAgIDIwNSwgNzksIDIxMywgMzAsIDEsIDIxNCwgMTg0LCAyMzEsIDE1NiwgMjEzLCAzMCwgMSwgMjE0LCAxODQsIDI0MiwgMjgsIAorICAgIDgsIDEsIDI1MCwgMzksIDIsIDEyOSwgMTc3LCAyMzgsIDcxLCA1NSwgOCwgMSwgMjUwLCAzOSwgMiwgNjcsIDI1MCwgMjYsIAorICAgIDIzLCAxMjksIDE3NywgNTIsIDgsIDEsIDI1MCwgMzksIDIsIDEyOSwgMTc3LCAyMjAsIDIwMSwgMTY3LCA1NSwgOCwgMSwgCisgICAgMjUwLCAzOSwgMiwgMTI5LCAxNzcsIDIyMCwgMjAxLCAxNjcsIDI1MCwgMjYsIDIzLCAxMTgsIDE3NywgNTIsIDgsIDEsIAorICAgIDI1MCwgMzksIDIsIDExOCwgMTc3LCAyNTAsIDI2LCAyMywgNjcsIDUyLCA4LCAxLCAyNTAsIDM5LCAyLCAyMzMsIDIsIDUsIAorICAgIDIwOSwgMTQ5LCA1NSwgOCwgMSwgMjUwLCAzOSwgMiwgNSwgMjA5LCAxNDgsIDgsIDEsIDE0MCwgMiwgMTE4LCAxNzcsIDUyLCAKKyAgICA4LCAxLCAxNDAsIDIsIDEyOSwgMTc3LCAyMjAsIDIwMSwgMTY3LCA1NSwgOCwgMSwgMjQ2LCAxMTgsIDIsIDExOCwgMTc3LCAKKyAgICAyMDgsIDIyOCwgMjUwLCAyNiwgMjMsIDUsIDIxMiwgMTk0LCA4LCAxLCAyNDYsIDExOCwgMiwgMjMzLCAyLCA1LCAyMDksIAorICAgIDE0OSwgNTUsIDgsIDEsIDIxOSwgMTcsIDIsIDkxLCA4LCAxLCAyMTcsIDcxLCAyLCAyNDEsIDEyNSwgMTc3LCA1MiwgOCwgMSwgCisgICAgMjUyLCAyMDEsIDIsIDExOCwgMTc3LCA1MiwgOCwgMSwgMjUyLCAyMDEsIDIsIDEyOSwgMTc3LCAyMjAsIDIwMSwgMTczLCAKKyAgICA1MiwgOCwgMSwgMjUyLCAyMDEsIDIsIDExOCwgMTc3LCAyMDgsIDIyOCwgNTIsIDgsIDEsIDI0MiwgMTYsIDIsIDExOCwgCisgICAgMTc3LCA1NSwgOCwgMSwgMjQyLCAxNiwgMiwgMTI5LCAxNzcsIDIyMCwgMjAxLCAxNjcsIDU1LCA4LCAxLCAyMzEsIDIxMywgCisgICAgMiwgNjcsIDUyLCA4LCAxLCAyMzEsIDIxMywgMiwgMTI5LCAxNzcsIDUyLCA4LCAxLCAyMzEsIDIxMywgMiwgMTI5LCAxNzcsIAorICAgIDIyMCwgMjAxLCAxNjcsIDU1LCA4LCAxLCA4MCwgMiwgNjcsIDUyLCA4LCAxLCA4MCwgMiwgNjcsIDU1LCA4LCAxLCAyMjQsIAorICAgIDU1LCAyLCAxMTgsIDE3NywgNTUsIDgsIDEsIDIyNCwgNTUsIDIsIDUsIDIxMiwgMTk0LCA4LCAxLCAyMjQsIDU1LCAyLCA1LCAKKyAgICAyMDksIDE0OCwgOCwgMSwgMjMwLCAxMDcsIDIsIDEzNCwgOCwgMSwgMjE5LCAxNywgMiwgMTE4LCAxNzcsIDIwOCwgMjI4LCAKKyAgICA1MiwgOCwgMSwgMjE5LCAxNywgMiwgMjM5LCAxMTIsIDUyLCA4LCAxLCAyMTcsIDcxLCAyLCAxMTgsIDE3NywgMjA4LCAyMjgsIAorICAgIDUyLCA4LCAxLCAxNDAsIDIsIDUsIDgsIDEsIDIxMiwgMTk1LCA1NSwgOCwgMSwgMTQwLCAyLCA1LCA4LCAxLCAyMTIsIDE5NSwgCisgICAgMjMsIDExOCwgMjQ1LCAyMSwgOCwgMSwgMjE3LCA3MSwgMiwgNSwgOCwgMSwgMjEyLCAxOTUsIDIzLCAxMTgsIDI0NSwgMjEsIAorICAgIDgsIDEsIDIxOSwgMTcsIDIsIDUsIDgsIDEsIDIxMiwgMTk1LCAyMywgMTE4LCAyNDUsIDIxLCA4LCAxLCAxNDAsIDIsIDUsIAorICAgIDgsIDEsIDIxMiwgMTk1LCA1MiwgOCwgMSwgMTI2LCAyLCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIDExOCwgNTIsIDgsIDEsIAorICAgIDEyNiwgMiwgMjQyLCAxNTksIDI1MiwgMzMsIDE4LCAxMjksIDUyLCA4LCAxLCAyNDIsIDQyLCA4NywgMiwgMjQyLCAxNTksIAorICAgIDI1MiwgMzMsIDE4LCAxMTgsIDUyLCA4LCAxLCAyNDIsIDQyLCA4NywgMiwgMjQyLCAxNTksIDI1MiwgMzMsIDE4LCAxMjksIAorICAgIDUyLCA4LCAxLCAyNDIsIDQyLCA4NywgMiwgMjQyLCAxNTksIDI1MiwgMzMsIDE4LCAyNDEsIDEyNSwgNTUsIDgsIDEsIDIwNywgCisgICAgNjAsIDIsIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgMTE4LCA1MiwgOCwgMSwgMjA3LCA2MCwgMiwgMjQyLCAxNTksIDI1MiwgCisgICAgMzMsIDE4LCAxMjksIDUyLCA4LCAxLCA4NywgMjUwLCAxMjIsIDIsIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgMTE4LCA1MiwgCisgICAgOCwgMSwgODcsIDI1MCwgMTIyLCAyLCAyNDIsIDE1OSwgMjUyLCAzMywgMTgsIDEyOSwgNTIsIDgsIDEsIDE0MCwgMiwgMjQyLCAKKyAgICAxNTksIDI1MiwgMzMsIDE4LCAyNDEsIDEyNSwgNTUsIDgsIDEsIDIxNywgNzEsIDIsIDI0MiwgMTU5LCAyNTIsIDMzLCAxOCwgCisgICAgMjQxLCAxMjUsIDUyLCA4LCAxLCAyMTcsIDcxLCAyLCAyMzMsIDIsIDIwOSwgMTQ4LCA4LCAxLCAyMzIsIDQ2LCAyLCAxMTgsIAorICAgIDE3NywgNTIsIDIxMiwgNTMsIDEsIDIzOSwgMTQxLCAyMTIsIDUzLCAxLCAyMTUsIDIyMCwgMjEyLCA1MywgMSwgMjI0LCA1MywgCisgICAgMjEyLCA1MywgMSwgMjE5LCAxMDksIDIxMiwgNTMsIDEsIDI1MCwgMTgxLCAyMTIsIDUzLCAxLCAyMjksIDI0NSwgMjEyLCAKKyAgICA1MywgMSwgMjMyLCA2MCwgMjEyLCA1MywgMSwgMjUyLCAxNjEsIDIxMiwgNTMsIDEsIDIwOSwgNjgsIDIxMiwgNTMsIDEsIAorICAgIDIyNywgMTAzLCAyMTIsIDUzLCAxLCAyNDIsIDcxLCAyMTIsIDUzLCAxLCAyNDUsIDE5MCwgMjEyLCA1MywgMSwgMjEyLCA1NSwgCisgICAgMjEyLCA1MywgMSwgMjMwLCAxMzcsIDIxMiwgNTMsIDEsIDI0MCwgMjQwLCAyMTIsIDUzLCAxLCAyNDAsIDIyLCAyMTIsIDUzLCAKKyAgICAxLCAyMTcsIDY5LCAyMTIsIDUzLCAxLCAyNDYsIDcwLCAyMTIsIDUzLCAxLCAyMDUsIDk5LCAyMTIsIDUzLCAxLCAyMTIsIAorICAgIDE0NiwgMjEyLCA1MywgMSwgMjA2LCAxMDksIDIxMiwgNTMsIDEsIDIyMSwgMTg3LCAyMTIsIDUzLCAxLCAyMzIsIDE4NiwgCisgICAgMjEyLCA1MywgMSwgMjQ4LCA4NSwgMjEyLCA1MywgMSwgMjEwLCAyMDcsIDIxMiwgNTMsIDEsIDIzOSwgMTksIDIxMiwgNTMsIAorICAgIDEsIDIzMSwgMTY2LCAyMTIsIDUzLCAxLCAyMTIsIDU0LCAyMTIsIDUzLCAxLCAyMDUsIDExNSwgMjEyLCA1MywgMSwgMjE1LCAKKyAgICAyMDksIDIxMiwgNTMsIDEsIDIxNywgMTk1LCAyMTIsIDUzLCAxLCAyNDYsIDE0MywgMjEyLCA1MywgMSwgMTI0LCAyMTIsIAorICAgIDUzLCAxLCAyMDUsIDE5LCAyMTIsIDUzLCAxLCAyNTIsIDE5NywgMjEyLCA1MywgMSwgMjQwLCA5MywgMjEyLCA1MywgMSwgCisgICAgMjIwLCAxNiwgMjEyLCA1MywgMSwgMjA3LCA5NCwgMjEyLCA1MywgMjUzLCAzMSwgMjEyLCA1MywgMjUzLCAxMjksIDIxMiwgCisgICAgNTMsIDIzNywgMTg0LCAyMTIsIDUzLCAyNDMsIDEwMywgMjEyLCA1MywgMjEwLCAxMSwgMjEyLCA1MywgMjIyLCAxNTEsIAorICAgIDIxMiwgNTMsIDI0MywgMTExLCAyMTIsIDUzLCAyNDIsIDE1MSwgMjEyLCA1MywgMjIyLCAyMjEsIDIxMiwgNTMsIDIyMiwgCisgICAgMjI5LCAyMTIsIDUzLCAyMTMsIDE2MiwgMjEyLCA1MywgMSwgMjI1LCAyMzIsIDIyNCwgMTMxLCAxOCwgMjA1LCA4NSwgMjI0LCAKKyAgICAxMzEsIDE4LCAxMDIsIDIyNCwgMTMxLCAxOCwgMTA1LCAyMjQsIDEzMSwgMTgsIDE0MiwgMjI0LCAxMzEsIDE4LCAxMzksIAorICAgIDIyNCwgMTMxLCAxOCwgMTY4LCAyMjQsIDEzMSwgMTgsIDE4NCwgMjI0LCAxMzEsIDE4LCAxOTUsIDIyNCwgMTMxLCAxOCwgCisgICAgMTkzLCAyMjQsIDEzMSwgMTgsIDIwMCwgMjI0LCAxMzEsIDEsIDYyLCAyMjQsIDEzMSwgMSwgMjQzLCAxMDQsIDIyNCwgMTMxLCAKKyAgICAxLCA3NCwgMjI0LCAxMzEsIDEsIDc1LCAyMjQsIDEzMSwgMSwgNzEsIDIyNCwgMTMxLCAxLCAyMjIsIDE1MiwgMjI0LCAxMzEsIAorICAgIDEsIDc2LCAyMjQsIDEzMSwgMSwgMjQ2LCAxMzIsIDIyNCwgMTMxLCAxLCAyMjYsIDMzLCAyMjQsIDEzMSwgMSwgMjUwLCAKKyAgICAxODMsIDIyNCwgMTMxLCAxLCAxNzksIDIyNCwgMTMxLCAxLCAyMTIsIDIxOSwgMjI0LCAxMzEsIDEsIDIzMiwgMjAwLCAyMjQsIAorICAgIDEzMSwgMSwgMjQ4LCAxMTAsIDIyNCwgMTMxLCAxLCAyNDYsIDE0NSwgMjI0LCAxMzEsIDEsIDIxOSwgMTEzLCAyMjQsIDEzMSwgCisgICAgMSwgMjE4LCA4OSwgMjI0LCAxMzEsIDEsIDIxNywgMTk5LCAyMjQsIDEzMSwgMSwgMjQwLCAxODcsIDIyNCwgMTMxLCAxLCAKKyAgICAyNDIsIDczLCAyMjQsIDEzMSwgMSwgMTcyLCAyMjQsIDEzMSwgMSwgMjMwLCAxNDEsIDIyNCwgMTMxLCAxLCAyMjUsIDIzNywgCisgICAgMjA2LCAyNDYsIDIyNCwgMTMxLCAxLCAxODUsIDIyNCwgMTMxLCAxLCAyMjMsIDE0NCwgMjI0LCAxMzEsIDEsIDE5OSwgMjI0LCAKKyAgICAxMzEsIDEsIDE1NSwgMjI0LCAxMzEsIDEsIDIwNywgOTYsIDIyNCwgMTMxLCAxLCAxOTAsIDIyNCwgMTMxLCAxLCAyMjMsIAorICAgIDE0NSwgMjA2LCAyNDYsIDIyNCwgMTMxLCAxLCAyMzIsIDExNSwgMjMyLCAyMDAsIDIyNCwgMTMxLCAxLCAyMzIsIDExNSwgCisgICAgMjQ4LCAxMTAsIDIyNCwgMTMxLCAxLCAyMzIsIDExNSwgMjE5LCAxMTMsIDIyNCwgMTMxLCAzNiwgMjE1LCAxNDQsIDEyNywgCisgICAgMjExLCAxMTgsIDIyNCwgMTMxLCAzNiwgMjE1LCAxNDQsIDExNCwgMjExLCAxMTgsIDIyNCwgMTMxLCAzNiwgMjE1LCAxNDQsIAorICAgIDIxOCwgMTQyLCAyMTEsIDExOCwgMjI0LCAxMzEsIDM2LCAxNTIsIDI0NSwgMjEwLCAyMTEsIDExOCwgMjI0LCAxMzEsIDM2LCAKKyAgICAxNTIsIDEyNywgMjExLCAxMTgsIDIyNCwgMTMxLCAzNiwgMTUyLCAxMTQsIDIxMSwgMTE4LCAyMjQsIDEzMSwgMzYsIDE1MiwgCisgICAgMjE4LCAxNDIsIDIxMSwgMTE4LCAyMjQsIDEzMSwgMzYsIDIyNSwgMTk3LCA4MywgMjI0LCAxMzEsIDM2LCA1MCwgNjcsIDUyLCAKKyAgICAyMjQsIDEzMSwgMTI3LCAxMzUsIDI1MiwgNTMsIDIyNCwgMTMxLCAxMTQsIDEzNSwgMjUyLCA1MywgMjI0LCAxMzEsIDE2LCAKKyAgICAyMjIsIDE1MywgMjQ1LCAyMjMsIDIyNCwgMTMxLCAxNiwgMjQwLCAxODYsIDIyNCwgMTMxLCAyNDcsIDE1NSwgMjI0LCAxMzEsIAorICAgIDI0MiwgMTY4LCA4MywgMjI0LCAxMzEsIDIzMCwgMTEyLCAyMTcsIDE2MCwgMSwgMjUyLCAxNzksIDIxNywgMTYwLCAxLCAKKyAgICAyNDksIDIwOSwgMjE3LCAxNjAsIDEsIDI0MCwgMjIwLCAyMTcsIDE2MCwgMSwgMjQ2LCAxMTYsIDIxNywgMTYwLCAxLCAyMzIsIAorICAgIDIxMSwgMjE3LCAxNjAsIDEsIDI1MCwgMTgxLCAyMTcsIDE2MCwgMSwgMjA1LCA4OCwgMjE3LCAxNjAsIDEsIDIzMiwgMjIwLCAKKyAgICAyMTcsIDE2MCwgMSwgMjExLCAxNTYsIDIxNywgMTYwLCAxLCAyMDUsIDE4MiwgMjE3LCAxNjAsIDEsIDIzMiwgNjEsIDIxNywgCisgICAgMTYwLCAxLCAyMzAsIDEzNCwgMjE3LCAxNjAsIDEsIDIyNiwgMjExLCAyMTcsIDE2MCwgMSwgMjIzLCAxNzMsIDIxNywgMTYwLCAKKyAgICAxLCAyMTUsIDQyLCAyMTcsIDE2MCwgMSwgMjMzLCA2OCwgMjE3LCAxNjAsIDEsIDI0MSwgMjUwLCAyMTcsIDE2MCwgMSwgCisgICAgMjEwLCAyNDEsIDIxNywgMTYwLCAxLCAyMTksIDE5MywgMjE3LCAxNjAsIDEsIDIxOCwgMTQzLCAyMTcsIDE2MCwgMSwgMjE1LCAKKyAgICAyMzcsIDIxNywgMTYwLCAxLCAyMTIsIDIxNCwgMjE3LCAxNjAsIDE0MSwgMjMzLCA2OCwgMjE3LCAxNjAsIDE0MSwgMjMzLCAKKyAgICA2NywgMjE3LCAxNjAsIDE0MSwgMjIyLCAyMTcsIDIxNywgMTYwLCAxNDEsIDI0NiwgMTMwLCAyMTcsIDE2MCwgNjUsIDEsIAorICAgIDI0MiwgMjQ5LCAyMDUsIDE4MiwgMjE3LCAxNjAsIDE0MSwgMjQyLCAyNDksIDIwNSwgMTgyLCAyMTcsIDE2MCwgMjIsIDMsIAorICAgIDE1MiwgNzUsIDIxNywgMTYwLCAyMiwgMywgNzUsIDIxNywgMTYwLCAyMiwgMywgMjIyLCA4MCwgMjUzLCAxNjQsIDIxNywgCisgICAgMTYwLCAyMiwgMywgMTUyLCAyNTMsIDE2NCwgMjE3LCAxNjAsIDIyLCAzLCAyNTMsIDE2NCwgMjE3LCAxNjAsIDIyLCAzLCAKKyAgICAyMjIsIDgwLCA2MiwgMjE3LCAxNjAsIDIyLCAzLCAxNTIsIDYyLCAyMTcsIDE2MCwgMjIsIDMsIDYyLCAyMTcsIDE2MCwgNjUsIAorICAgIDEsIDIxNSwgMTQ0LCA2MiwgMjE3LCAxNjAsIDIyLCAzLCAyMTUsIDE0NCwgNjIsIDIxNywgMTYwLCAyMiwgMywgMTUyLCA3MSwgCisgICAgMjE3LCAxNjAsIDIyLCAzLCA3MSwgMjE3LCAxNjAsIDY1LCAxLCA3NCwgMjE3LCAxNjAsIDIyLCAzLCAxNTIsIDc0LCAyMTcsIAorICAgIDE2MCwgMjIsIDMsIDc0LCAyMTcsIDE2MCwgMjIsIDMsIDc2LCAyMTcsIDE2MCwgMjIsIDMsIDIxMywgMTYyLCAyMTcsIDE2MCwgCisgICAgMTQxLCAyMjUsIDk0LCAyMTcsIDE2MCwgMjIwLCA3MiwgMjI1LCA5NCwgMjE3LCAxNjAsIDIyMCwgNzIsIDI1MiwgMjIyLCAKKyAgICAyMTcsIDE2MCwgMjIwLCA3MiwgMjUyLCAxMTMsIDIxNywgMTYwLCAyMjAsIDcyLCAyNTAsIDEwMSwgMjE3LCAxNjAsIDIyMCwgCisgICAgNzIsIDI1MSwgMTk0LCAyMTcsIDE2MCwgMjIwLCA3MiwgMjE1LCAxNTksIDIxNywgMTYwLCAyNTMsIDI5LCA4MywgMjE3LCAKKyAgICAxNjAsIDIyMCwgNzIsIDIyNywgOTMsIDIxOSwgMjI5LCAyMTcsIDE2MCwgMjIwLCA3MiwgMjA1LCAyNywgMjE3LCAxNjAsIAorICAgIDIyMCwgNzIsIDIxOSwgMjI5LCAyMTcsIDE2MCwgMjIwLCA3MiwgMjA1LCAxMTQsIDIxNywgMTYwLCAyMjAsIDcyLCAyMTAsIAorICAgIDE0MCwgMjE3LCAxNjAsIDIyMCwgNzIsIDI1MiwgNCwgMjE3LCAxNjAsIDIyMCwgNzIsIDIxNCwgMTg4LCAyMjcsIDE3NiwgCisgICAgMjE3LCAxNjAsIDIyMCwgNzIsIDI1MiwgOTksIDIyNywgMjE3LCAxLCAyMzksIDExOCwgMjI3LCAyMTcsIDEsIDI1MywgMTE1LCAKKyAgICAyMjcsIDIxNywgMSwgMjUyLCAyMjAsIDIyNywgMjE3LCAxLCAyNTMsIDUsIDIyNywgMjE3LCAxLCAyNTIsIDIxMywgMjI3LCAKKyAgICAyMTcsIDEsIDIwOSwgMTY4LCAyMjcsIDIxNywgMSwgMjUxLCAxNTIsIDIyNywgMjE3LCAxLCAyMzIsIDIyMCwgMjI3LCAyMTcsIAorICAgIDEsIDI1MSwgMTkxLCAyMjcsIDIxNywgMSwgMjUyLCAxODQsIDIyNywgMjE3LCAxLCAyNTIsIDE4OSwgMjI3LCAyMTcsIDEsIAorICAgIDI1MiwgMTgxLCAyMjcsIDIxNywgMSwgMjUyLCAxMzYsIDIyNywgMjE3LCAxLCAyNTIsIDEyMiwgMjI3LCAyMTcsIDEsIDI1MSwgCisgICAgMjMxLCAyMjcsIDIxNywgMSwgMjMzLCA2OCwgMjI3LCAyMTcsIDEsIDI1MiwgNjgsIDIyNywgMjE3LCAxLCAyNTEsIDIwMSwgCisgICAgMjI3LCAyMTcsIDEsIDI1MiwgNDEsIDIyNywgMjE3LCAxLCAyNTIsIDM3LCAyMjcsIDIxNywgMSwgMjUxLCAyMjUsIDIyNywgCisgICAgMjE3LCAxLCAyNTEsIDE5OSwgMjI3LCAyMTcsIDEsIDI0MywgMjE0LCAyMjcsIDIxNywgMSwgMjMyLCA1MywgMjI3LCAyMTcsIAorICAgIDEsIDI1MiwgMjAwLCAyMjcsIDIxNywgMjUyLCAyMjYsIDgzLCAyMjcsIDIxNywgMjA4LCAxNzEsIDgzLCAyMjcsIDIxNywgCisgICAgMjQwLCAxNTksIDgzLCAyMjcsIDIxNywgMjIwLCA3MSwgOCwgMSwgMjUwLCAzOSwgMiwgNSwgMjA5LCAxNDksIDU1LCA4LCAxLCAKKyAgICAyNTAsIDM5LCAyLCAyMzksIDExMiwgNTIsIDgsIDEsIDE3MSwgMiwgMTE4LCAxNzcsIDUyLCA4LCAxLCAyMTIsIDE5NSwgMiwgCisgICAgMTE4LCAxNzcsIDUyLCA4LCAxLCAyNDIsIDE2LCAyLCA2NywgMjUwLCAyNiwgMjMsIDEyOSwgMTc3LCA1MiwgOCwgMSwgMjIwLCAKKyAgICAxMywgMiwgNjcsIDU1LCA4LCAxLCAyMzAsIDEwNywgMiwgNTAsIDEzNCwgOCwgMSwgODAsIDIsIDEyOSwgMTc3LCA1MiwgOCwgCisgICAgMSwgODcsIDIsIDExOCwgMTc3LCAyNTAsIDI2LCAyMywgMjM5LCAxMTIsIDUyLCA4LCAxLCA4NywgMiwgMTE4LCAxNzcsIAorICAgIDI1MCwgMjYsIDIzLCA2NywgNTIsIDgsIDEsIDIxOSwgMTcsIDIsIDIyOSwgMTExLCA4LCAxLCAyMDcsIDYwLCAyLCA2NywgCisgICAgMjA2LCAyNTQsIDgsIDEsIDIxOCwgMTEzLCAyMDYsIDQ3LCA4LCAxLCAxMTQsIDI1MiwgMTcyLCA4LCAxLCAyNDYsIDExOCwgCisgICAgMiwgMTI5LCAxNzcsIDU1LCA4LCAxLCAyMTcsIDE5MiwgMiwgMTI5LCAxNzcsIDU1LCA4LCAxLCAyNDAsIDIzMiwgMiwgMjMzLCAKKyAgICAyLCA5MSwgOCwgMSwgMjEzLCAyNDMsIDIwNywgNTksIDgsIDEsIDIwNSwgMTA5LCAyLCAyMzMsIDIsIDIwOSwgMTQ5LCA1MiwgCisgICAgOCwgMjQ3LCAyNiwgMjQyLCAzOSwgOCwgMjQ3LCAyNiwgMjQ2LCAxMDYsIDgsIDI0NywgMjYsIDIzMSwgMjUyLCA4LCAyNDcsIAorICAgIDI2LCAyNDIsIDM3LCA4LCAyNDcsIDI2LCAyNDYsIDEwNCwgOCwgMjQ3LCAyNiwgMjMxLCAyNTAsIDgsIDEzNSwgMTE5LCA2NywgCisgICAgNTIsIDgsIDEzNSwgMTE4LCAxNzcsIDUyLCA4LCAxMzUsIDIyOSwgMTEyLCA1MiwgOCwgMTM1LCAxMTksIDY3LCA1NSwgOCwgCisgICAgMTM1LCAxMTgsIDE3NywgNTUsIDgsIDEzNSwgMjI5LCAxMTIsIDU1LCA4LCAyMjIsIDE0MiwgMjQyLCAzNywgOCwgMjIyLCAKKyAgICAxNDIsIDI0NiwgMTA0LCA4LCAyMjIsIDE0MiwgMjMxLCAyNTAsIDgsIDUsIDEyNywgMjA3LCA1OSwgOCwgMjQyLCA0MCwgMiwgCisgICAgMjE4LCAxNDgsIDgsIDI0MiwgNDAsIDIsIDY3LCA1MiwgOCwgMjMxLCAyNTMsIDIsIDY3LCA1NSwgOCwgNDcsIDI1MSwgMjQ0LCAKKyAgICA1MiwgOCwgNDgsIDI1MSwgMjQ0LCA1MiwgOCwgNDcsIDI1MSwgMjQ0LCA1NSwgOCwgNDgsIDI1MSwgMjQ0LCA1NSwgOCwgNTAsIAorICAgIDQ4LCAyNTEsIDI0NCwgNTIsIDgsIDUwLCA0OCwgMjUxLCAyNDQsIDg0LCAyLCAyNDUsIDIzLCA4LCA0OCwgMjUxLCAyNDQsIAorICAgIDg0LCAyLCAyNDUsIDIzLCA4LCAyNDYsIDEwNywgMiwgMjQ1LCAyMywgOCwgMTQxLCAyMTUsIDczLCAyMjQsIDU1LCAyNDAsIAorICAgIDY1LCA4OSwgMywgMjMzLCAyLCAyNDgsIDIxNywgODksIDMsIDI0OCwgMjE3LCA4OSwgMywgMjUyLCA3MywgODksIDMsIDIwOCwgCisgICAgMTgzLCA4OSwgMSwgMjE1LCAxNDQsIDYyLCA4OSwgMSwgNjIsIDg5LCAxLCAyNTMsIDE2NCwgODksIDEsIDc0LCA4OSwgMSwgCisgICAgMjMzLCAxMDIsIDg5LCAxLCA3MSwgODksIDEsIDIwOSwgMTYyLCA4OSwgMSwgMTE1LCAxMzcsIDg5LCAxLCAxMTUsIDE0OSwgCisgICAgODksIDEsIDI0OCwgMjIwLCA3NSwgODksIDEsIDIxNSwgMTQ0LCA3NSwgODksIDEsIDc1LCA4OSwgMSwgMjUyLCAyMDUsIDg5LCAKKyAgICAxLCAyNDgsIDIyMCwgNzYsIDg5LCAxLCAyMTUsIDE0NCwgNzYsIDg5LCAxLCA3NiwgODksIDEsIDI1MSwgMTg0LCA4OSwgMSwgCisgICAgMTcyLCA4OSwgMSwgMjMxLCAxNjcsIDg5LCAxLCAyNDAsIDI0NCwgODksIDEsIDI0MCwgOTksIDg5LCAxLCAyMjUsIDc3LCAKKyAgICA4OSwgMSwgMjQ5LCAxLCA4OSwgMSwgMjQ4LCAxMTAsIDg5LCAxLCAyMzIsIDIwMCwgODksIDEsIDIzMiwgMTcwLCA4OSwgMSwgCisgICAgMjIzLCAxNDQsIDg5LCAxLCAyMTAsIDIwOCwgODksIDEsIDIxMCwgMTk2LCA4OSwgMSwgMjQ2LCA1NCwgODksIDEsIDI0NiwgCisgICAgMzgsIDg5LCAxLCAyMjQsIDEwMywgODksIDEsIDIxMiwgMjE5LCA4OSwgMSwgMjEyLCA1NiwgODksIDEsIDI0NiwgMTQ1LCAKKyAgICA4OSwgMSwgMjQ1LCAxOTIsIDg5LCAxLCAxOTksIDg5LCAxLCAyMjQsIDg1LCA4OSwgMSwgMTc5LCA4OSwgMSwgMjIxLCA5MywgCisgICAgODksIDEsIDI1MCwgMTgzLCA4OSwgMSwgMjUwLCAwLCA4OSwgMSwgMTg1LCA4OSwgMSwgMTkwLCA4OSwgMSwgMjE5LCAxMTMsIAorICAgIDg5LCAxLCAyMTgsIDg5LCA4OSwgMSwgMjMwLCAxNDEsIDg5LCAxLCAyMjksIDE3MiwgODksIDEsIDIyOSwgMTYzLCA4OSwgMSwgCisgICAgMjA5LCA3MCwgODksIDEsIDIxNiwgMiwgODksIDEsIDIxNCwgOTYsIDg5LCAxLCAyMTcsIDE5OSwgODksIDEsIDE1NSwgODksIAorICAgIDIyLCAzLCAyMjIsIDIwNiwgODksIDIyLCAzLCAyMjIsIDE1MCwgODksIDMsIDIyMywgMTg0LCA4OSwgMywgMjUxLCAxNjcsIAorICAgIDg5LCAyMiwgMywgMjUzLCAxNjQsIDg5LCAyMiwgMywgNzQsIDg5LCAyMiwgMywgMjMzLCAxMDIsIDg5LCAyMiwgMywgNzEsIAorICAgIDg5LCAyMiwgMywgMjA5LCAxNjIsIDg5LCAyMiwgMywgMTE1LCAxMzcsIDg5LCAyMiwgMywgMTE1LCAyMTgsIDkwLCA4OSwgCisgICAgMjIsIDMsIDI0OCwgMjIwLCA3NSwgODksIDIyLCAzLCAyMTUsIDE0NCwgNzUsIDg5LCAyMiwgMywgNzUsIDg5LCAyMiwgMywgCisgICAgMjUyLCAyMDUsIDg5LCAyMiwgMywgMjQ4LCAyMjAsIDc2LCA4OSwgMjIsIDMsIDIxNSwgMTQ0LCA3NiwgODksIDIyLCAzLCAKKyAgICA3NiwgODksIDIyLCAzLCAyNTEsIDE4NCwgODksIDMsIDIwOCwgMTg4LCA4OSwgMjIsIDMsIDIyMCwgMTIwLCA3NSwgODksIAorICAgIDIyLCAzLCAyNTEsIDE2MywgODksIDIyMiwgMTczLCA4OSwgMjEzLCAyMzMsIDMsIDIxMCwgNSwgODksIDIxMywgMjMzLCAzLCAKKyAgICAyNTIsIDc1LCA4OSwgMjM5LCAyMzcsIDI1MywgMjEsIDg5LCAyNTMsIDksIDI1MywgMjEsIDg5LCAyMiwgMywgMjQ4LCAyMjAsIAorICAgIDE1MiwgNzUsIDg5LCAyMiwgMywgMjEwLCAzLCA4OSwgMjIsIDMsIDIwOSwgMTYxLCA4OSwgMSwgMjIwLCAxOSwgODksIDEsIAorICAgIDIzMSwgMTQ4LCA4OSwgMSwgMjQwLCA3NCwgODksIDEsIDIwNSwgMTE2LCA4OSwgMSwgMjQ2LCA0MywgODksIDEsIDIxOCwgCisgICAgMjEyLCA4OSwgMSwgMjQyLCA3MywgODksIDEsIDIwNSwgMTY4LCA4OSwgMSwgMTE1LCAyMTgsIDkwLCA4OSwgMSwgMTE1LCAKKyAgICAyMjksIDE3MywgODksIDIyLCAzLCAxMTUsIDE0OSwgODksIDIyLCAzLCAxMTUsIDIyOSwgMTczLCA4OSwgMjQ2LCAxMDAsIAorICAgIDg5LCA1MCwgMjQ2LCAxMDAsIDg5LCAxOCwgMjA1LCA4NSwgODksIDE4LCAxMDIsIDg5LCAxOCwgMTA1LCA4OSwgMTgsIDE0MiwgCisgICAgODksIDE4LCAxMzksIDg5LCAxOCwgMTY4LCA4OSwgMTgsIDE4NCwgODksIDE4LCAxOTUsIDg5LCAxOCwgMTkzLCA4OSwgMTgsIAorICAgIDIwMCwgODksIDI1MywgMjksIDUzLCA4OSwgMywgMTI3LCAyMTQsIDE1MiwgMjQ1LCAyMywgODksIDEsIDI0OCwgMjIwLCA2MiwgCisgICAgODksIDEsIDIyMiwgMjA2LCA4OSwgMSwgMjIyLCAxNTAsIDg5LCAxLCAyNTEsIDE2MywgODksIDEsIDIxMCwgMywgODksIDEsIAorICAgIDIwOSwgMTYxLCA4OSwgMSwgMjI3LCAxODEsIDI0NiwgNTQsIDg5LCAxLCAyMDUsIDgxLCA4OSwgMSwgNzcsIDE5MCwgODksIAorICAgIDEsIDI0MCwgMTM1LCA4OSwgMSwgMjMyLCAxNTAsIDg5LCAxLCAyNDAsIDI1LCAyMTMsIDI1MSwgODksIDEsIDI0NiwgNDQsIAorICAgIDg5LCAxLCAyNTAsIDk3LCAxNjUsIDI1MiwgMTAyLCAxNjUsIDMsIDI0OCwgMjE3LCAxNjUsIDMsIDI1MiwgNzMsIDE2NSwgMywgCisgICAgMjA4LCAxODMsIDE2NSwgMSwgNjIsIDE2NSwgMSwgMjUzLCAxNjQsIDE2NSwgMSwgNzQsIDE2NSwgMSwgMjMzLCAxMDIsIAorICAgIDE2NSwgMSwgNzEsIDE2NSwgMSwgMjA5LCAxNjIsIDE2NSwgMSwgMTE1LCAxMzcsIDE2NSwgMSwgMTE1LCAxNDksIDE2NSwgMSwgCisgICAgNzUsIDE2NSwgMSwgMjUyLCAyMDUsIDE2NSwgMSwgNzYsIDE2NSwgMSwgMjUxLCAxODQsIDE2NSwgMSwgMTcyLCAxNjUsIDEsIAorICAgIDIzMSwgMTY3LCAxNjUsIDEsIDI0MCwgMjQ0LCAxNjUsIDEsIDI0MCwgOTksIDE2NSwgMSwgMjI1LCA3NywgMTY1LCAxLCAKKyAgICAyNDksIDEsIDE2NSwgMSwgMjQ4LCAxMTAsIDE2NSwgMSwgMjMyLCAyMDAsIDE2NSwgMSwgMjMyLCAxNzAsIDE2NSwgMSwgCisgICAgMjIzLCAxNDQsIDE2NSwgMSwgMjEwLCAyMDgsIDE2NSwgMSwgMjEwLCAxOTYsIDE2NSwgMSwgMjQ2LCA1NCwgMTY1LCAxLCAKKyAgICAyNDYsIDM4LCAxNjUsIDEsIDIyNCwgMTAzLCAxNjUsIDEsIDIxMiwgMjE5LCAxNjUsIDEsIDIxMiwgNTYsIDE2NSwgMSwgCisgICAgMjQ2LCAxNDUsIDE2NSwgMSwgMjQ1LCAxOTIsIDE2NSwgMSwgMTk5LCAxNjUsIDEsIDE3OSwgMTY1LCAxLCAyMjEsIDkzLCAKKyAgICAxNjUsIDEsIDI1MCwgMTgzLCAxNjUsIDEsIDI1MCwgMCwgMTY1LCAxLCAxODUsIDE2NSwgMSwgMTkwLCAxNjUsIDEsIDIxOSwgCisgICAgMTEzLCAxNjUsIDEsIDIzMCwgMTQxLCAxNjUsIDEsIDIxNiwgMiwgMTY1LCAxLCAyMTQsIDk2LCAxNjUsIDEsIDIxNywgMTk5LCAKKyAgICAxNjUsIDEsIDE1NSwgMTY1LCAzLCAyMjMsIDE4NCwgMTY1LCAzLCAyNTEsIDE2NywgMTY1LCAyMiwgMywgMjUzLCAxNjQsIAorICAgIDE2NSwgMjIsIDMsIDc0LCAxNjUsIDIyLCAzLCAyMzMsIDEwMiwgMTY1LCAyMiwgMywgNzEsIDE2NSwgMjIsIDMsIDIwOSwgCisgICAgMTYyLCAxNjUsIDIyLCAzLCAxMTUsIDEzNywgMTY1LCAyMiwgMywgMTE1LCAyMTgsIDkwLCAxNjUsIDIyLCAzLCA3NSwgMTY1LCAKKyAgICAyMiwgMywgMjUyLCAyMDUsIDE2NSwgMjIsIDMsIDc2LCAxNjUsIDIyLCAzLCAyNTEsIDE4NCwgMTY1LCAzLCAyMDgsIDE4OCwgCisgICAgMTY1LCAxLCAyMzEsIDE1OCwgMjEyLCAyMTksIDE2NSwgMjUxLCAxODUsIDIzMCwgMjAsIDgzLCAxNjUsIDEsIDIxOCwgODksIAorICAgIDE2NSwgMSwgMjE4LCAyMTIsIDE2NSwgMSwgMjA1LCAxNjgsIDE2NSwgMSwgMTE1LCAyMTgsIDkwLCAxNjUsIDEsIDExNSwgCisgICAgMjI5LCAxNzMsIDE2NSwgMjIsIDMsIDExNSwgMTQ5LCAxNjUsIDIyLCAzLCAxMTUsIDIyOSwgMTczLCAxNjUsIDE4LCAyMDUsIAorICAgIDg1LCAxNjUsIDE4LCAxMDIsIDE2NSwgMTgsIDEwNSwgMTY1LCAxOCwgMTQyLCAxNjUsIDE4LCAxMzksIDE2NSwgMTgsIDE2OCwgCisgICAgMTY1LCAxOCwgMTg0LCAxNjUsIDE4LCAxOTUsIDE2NSwgMTgsIDE5MywgMTY1LCAxOCwgMjAwLCAxNjUsIDEsIDIxOSwgMTE0LCAKKyAgICAyLCAyMjYsIDI0NywgMjQ1LCAxNjIsIDE2NSwgMSwgMjE5LCAxMTQsIDIsIDIyOSwgOTIsIDI0NSwgMTYyLCAxNjUsIDIxOCwgCisgICAgMjcsIDgzLCAxNjUsIDIxOCwgMjcsIDUzLCAxNjUsIDI0NywgMjUsIDIyMywgMTc2LCAxMDIsIDE2NSwgMjQ3LCAyNSwgMjIzLCAKKyAgICAxNzYsIDEwNSwgMTY1LCAyNDcsIDI1LCAyMjMsIDE3NiwgMTQyLCAxNjUsIDI0NywgMjUsIDIyMywgMTc2LCAxMzksIDE2NSwgCisgICAgMjQ3LCAyNSwgMjIzLCAxNzYsIDExOSwgMjMwLCAxMSwgMjEyLCA0NywgMjEyLCA0MiwgMjQ1LCAyMjEsIDE2NSwgMjQ3LCAKKyAgICAyNSwgMjQ1LCAyMjIsIDIxNSwgNCwgMTY1LCAyMzIsIDIyMSwgMTY1LCAyNDAsIDIxMSwgODMsIDIzOSwgMTgyLCAzLCAyNTMsIAorICAgIDQsIDI0OSwgMjI0LCAyMzksIDE4MiwgMywgMjQ5LCAyMjQsIDIzOSwgMTgyLCAzLCAyMDgsIDE4MywgMjM5LCAxODIsIDEsIAorICAgIDYyLCAyMzksIDE4MiwgMSwgMjUzLCAxNjQsIDIzOSwgMTgyLCAxLCA3NCwgMjM5LCAxODIsIDEsIDIzMywgMTAyLCAyMzksIAorICAgIDE4MiwgMSwgNzEsIDIzOSwgMTgyLCAxLCAyMDksIDE2MiwgMjM5LCAxODIsIDEsIDI0MywgMTA0LCAyMzksIDE4MiwgMSwgCisgICAgMjUyLCAyMDUsIDIzOSwgMTgyLCAxLCAyMjIsIDE1MiwgMjM5LCAxODIsIDEsIDI1MSwgMTg0LCAyMzksIDE4MiwgMSwgMTcyLCAKKyAgICAyMzksIDE4MiwgMSwgMjMxLCAxNjcsIDIzOSwgMTgyLCAxLCAyNDAsIDI0NCwgMjM5LCAxODIsIDEsIDI0MCwgOTksIDIzOSwgCisgICAgMTgyLCAxLCAyMjUsIDc3LCAyMzksIDE4MiwgMSwgMjQ5LCAxLCAyMzksIDE4MiwgMSwgMjQ4LCAxMTAsIDIzOSwgMTgyLCAxLCAKKyAgICAyMzIsIDIwMCwgMjM5LCAxODIsIDEsIDIzMiwgMTcwLCAyMzksIDE4MiwgMSwgMjIzLCAxNDQsIDIzOSwgMTgyLCAxLCAyMTAsIAorICAgIDIwOCwgMjM5LCAxODIsIDEsIDIxMCwgMTk2LCAyMzksIDE4MiwgMSwgMjQ2LCA1NCwgMjM5LCAxODIsIDEsIDI0NiwgMzgsIAorICAgIDIzOSwgMTgyLCAxLCAyMjQsIDEwMywgMjM5LCAxODIsIDEsIDIxMiwgMjE5LCAyMzksIDE4MiwgMSwgMjEyLCA1NiwgMjM5LCAKKyAgICAxODIsIDEsIDI0NiwgMTQ1LCAyMzksIDE4MiwgMSwgMjQ1LCAxOTIsIDIzOSwgMTgyLCAxLCAxOTksIDIzOSwgMTgyLCAxLCAKKyAgICAxNzksIDIzOSwgMTgyLCAxLCAyMjEsIDkzLCAyMzksIDE4MiwgMSwgMjUwLCAxODMsIDIzOSwgMTgyLCAxLCAyNTAsIDAsIAorICAgIDIzOSwgMTgyLCAxLCAxODUsIDIzOSwgMTgyLCAxLCAxOTAsIDIzOSwgMTgyLCAxLCAyMTksIDExMywgMjM5LCAxODIsIDEsIAorICAgIDIzMCwgMTQxLCAyMzksIDE4MiwgMSwgMjI5LCAxNzIsIDIzOSwgMTgyLCAxLCAyMDksIDcwLCAyMzksIDE4MiwgMSwgMjE2LCAKKyAgICAyLCAyMzksIDE4MiwgMSwgMjE3LCAxOTksIDIzOSwgMTgyLCAxLCAxNTUsIDIzOSwgMTgyLCAzLCAyMjMsIDE4NCwgMjM5LCAKKyAgICAxODIsIDIyLCAzLCAyNTMsIDE2NCwgMjM5LCAxODIsIDIyLCAzLCA3NCwgMjM5LCAxODIsIDIyLCAzLCAyMzMsIDEwMiwgCisgICAgMjM5LCAxODIsIDIyLCAzLCA3MSwgMjM5LCAxODIsIDIyLCAzLCAyMDksIDE2MiwgMjM5LCAxODIsIDIyLCAzLCAyNDMsIAorICAgIDEwNCwgMjM5LCAxODIsIDIyLCAzLCAyNTIsIDIwNSwgMjM5LCAxODIsIDIyLCAzLCAyMjIsIDE1MiwgMjM5LCAxODIsIDIyLCAKKyAgICAzLCAyNTEsIDE4NCwgMjM5LCAxODIsIDMsIDIwOCwgMTg4LCAyMzksIDE4MiwgMywgMjEwLCA3LCAyMzksIDE4MiwgMSwgCisgICAgMjMxLCAxNDgsIDIzOSwgMTgyLCAxLCAyNDAsIDc0LCAyMzksIDE4MiwgMSwgMjA1LCAxMTYsIDIzOSwgMTgyLCAxLCAyMTgsIAorICAgIDg5LCAyMzksIDE4MiwgMSwgMjQyLCA3MywgMjM5LCAxODIsIDE4LCAyMDUsIDg1LCAyMzksIDE4MiwgMTgsIDEwMiwgMjM5LCAKKyAgICAxODIsIDE4LCAxMDUsIDIzOSwgMTgyLCAxOCwgMTQyLCAyMzksIDE4MiwgMTgsIDEzOSwgMjM5LCAxODIsIDE4LCAxNjgsIAorICAgIDIzOSwgMTgyLCAxOCwgMTg0LCAyMzksIDE4MiwgMTgsIDE5NSwgMjM5LCAxODIsIDE4LCAxOTMsIDIzOSwgMTgyLCAxOCwgCisgICAgMjAwLCAyMzksIDE4MiwgMjExLCAxNjQsIDIzOSwgMTgyLCAyNTMsIDMsIDIzOSwgMTgyLCAyMzIsIDI0MSwgMjM5LCAxODIsIAorICAgIDIwOSwgMTkwLCAyMzksIDE4MiwgMjQzLCA3NiwgMjIyLCAxNTcsIDIzOSwgMTgyLCAzLCAyMDYsIDg0LCAxOTgsIDMsIDI0OCwgCisgICAgMjE3LCAxOTgsIDMsIDI1MiwgNzMsIDE5OCwgMywgMjA4LCAxODMsIDE5OCwgMSwgNjIsIDE5OCwgMSwgMjUzLCAxNjQsIAorICAgIDE5OCwgMSwgNzQsIDE5OCwgMSwgMjMzLCAxMDIsIDE5OCwgMSwgNzEsIDE5OCwgMSwgMjA5LCAxNjIsIDE5OCwgMSwgMTE1LCAKKyAgICAxMzcsIDE5OCwgMSwgMTE1LCAxNDksIDE5OCwgMjIsIDI0OCwgMjIwLCA3NSwgMTk4LCAxLCA3NSwgMTk4LCAxLCAyNTIsIAorICAgIDIwNSwgMTk4LCAyMiwgMjQ4LCAyMjAsIDc2LCAxOTgsIDEsIDc2LCAxOTgsIDEsIDI1MSwgMTg0LCAxOTgsIDEsIDE3MiwgCisgICAgMTk4LCAxLCAyMzEsIDE2NywgMTk4LCAxLCAyNDAsIDI0NCwgMTk4LCAxLCAyNDAsIDk5LCAxOTgsIDEsIDIyNSwgNzcsIAorICAgIDE5OCwgMSwgMjQ5LCAxLCAxOTgsIDEsIDI0OCwgMTEwLCAxOTgsIDEsIDIzMiwgMjAwLCAxOTgsIDEsIDIzMiwgMTcwLCAKKyAgICAxOTgsIDEsIDIyMywgMTQ0LCAxOTgsIDEsIDIxMCwgMjA4LCAxOTgsIDEsIDIxMCwgMTk2LCAxOTgsIDEsIDI0NiwgNTQsIAorICAgIDE5OCwgMSwgMjQ2LCAzOCwgMTk4LCAxLCAyMjQsIDEwMywgMTk4LCAxLCAyMTIsIDIxOSwgMTk4LCAxLCAyMTIsIDU2LCAKKyAgICAxOTgsIDEsIDI0NiwgMTQ1LCAxOTgsIDEsIDI0NSwgMTkyLCAxOTgsIDEsIDE5OSwgMTk4LCAxLCAxNzksIDE5OCwgMSwgCisgICAgMjIxLCA5MywgMTk4LCAxLCAyNTAsIDE4MywgMTk4LCAxLCAyNTAsIDAsIDE5OCwgMSwgMTg1LCAxOTgsIDEsIDE5MCwgMTk4LCAKKyAgICAxLCAyMTksIDExMywgMTk4LCAxLCAyMzAsIDE0MSwgMTk4LCAxLCAyMjksIDE3MiwgMTk4LCAxLCAyMDksIDcwLCAxOTgsIDEsIAorICAgIDIxNiwgMiwgMTk4LCAxLCAyMTQsIDk2LCAxOTgsIDEsIDIxNywgMTk5LCAxOTgsIDEsIDE1NSwgMTk4LCAzLCAyMjMsIDE4NCwgCisgICAgMTk4LCAzLCAyNTEsIDE2NywgMTk4LCAyMiwgMywgMjUzLCAxNjQsIDE5OCwgMjIsIDMsIDc0LCAxOTgsIDIyLCAzLCAyMzMsIAorICAgIDEwMiwgMTk4LCAyMiwgMywgNzEsIDE5OCwgMjIsIDMsIDIwOSwgMTYyLCAxOTgsIDIyLCAzLCAxMTUsIDEzNywgMTk4LCAyMiwgCisgICAgMywgMTE1LCAyMTgsIDkwLCAxOTgsIDIyLCAzLCAyNDgsIDIyMCwgNzUsIDE5OCwgMjIsIDMsIDc1LCAxOTgsIDIyLCAzLCAKKyAgICAyNTIsIDIwNSwgMTk4LCAyMiwgMywgMjQ4LCAyMjAsIDc2LCAxOTgsIDIyLCAzLCA3NiwgMTk4LCAyMiwgMywgMjUxLCAxODQsIAorICAgIDE5OCwgMywgMjA4LCAxODgsIDE5OCwgMjIyLCAxNzMsIDE5OCwgMSwgMTE1LCAyMTgsIDkwLCAxOTgsIDEsIDExNSwgMjI5LCAKKyAgICAxNzMsIDE5OCwgMjIsIDMsIDExNSwgMTQ5LCAxOTgsIDIyLCAzLCAxMTUsIDIyOSwgMTczLCAxOTgsIDE4LCAyMDUsIDg1LCAKKyAgICAxOTgsIDE4LCAxMDIsIDE5OCwgMTgsIDEwNSwgMTk4LCAxOCwgMTQyLCAxOTgsIDE4LCAxMzksIDE5OCwgMTgsIDE2OCwgCisgICAgMTk4LCAxOCwgMTg0LCAxOTgsIDE4LCAxOTUsIDE5OCwgMTgsIDE5MywgMTk4LCAxOCwgMjAwLCAxOTgsIDI1MywgMjksIDUzLCAKKyAgICAxOTgsIDIxOCwgMjcsIDUzLCAxNzgsIDMsIDI0OCwgMjE3LCAxNzgsIDMsIDI1MiwgNzMsIDE3OCwgMywgMjA4LCAxODMsIAorICAgIDE3OCwgMSwgNjIsIDE3OCwgMSwgMjUzLCAxNjQsIDE3OCwgMSwgNzQsIDE3OCwgMSwgMjMzLCAxMDIsIDE3OCwgMSwgNzEsIAorICAgIDE3OCwgMSwgMjA5LCAxNjIsIDE3OCwgMSwgMTE1LCAxMzcsIDE3OCwgMSwgMTE1LCAxNDksIDE3OCwgMSwgNzUsIDE3OCwgMSwgCisgICAgMjUyLCAyMDUsIDE3OCwgMSwgNzYsIDE3OCwgMSwgMjUxLCAxODQsIDE3OCwgMSwgMTcyLCAxNzgsIDEsIDIzMSwgMTY3LCAKKyAgICAxNzgsIDEsIDI0MCwgMjQ0LCAxNzgsIDEsIDI0MCwgOTksIDE3OCwgMSwgMjI1LCA3NywgMTc4LCAxLCAyNDksIDEsIDE3OCwgCisgICAgMSwgMjQ4LCAxMTAsIDE3OCwgMSwgMjMyLCAyMDAsIDE3OCwgMSwgMjMyLCAxNzAsIDE3OCwgMSwgMjIzLCAxNDQsIDE3OCwgCisgICAgMSwgMjEwLCAyMDgsIDE3OCwgMSwgMjEwLCAxOTYsIDE3OCwgMSwgMjQ2LCA1NCwgMTc4LCAxLCAyNDYsIDM4LCAxNzgsIDEsIAorICAgIDIyNCwgMTAzLCAxNzgsIDEsIDIxMiwgMjE5LCAxNzgsIDEsIDIxMiwgNTYsIDE3OCwgMSwgMjQ2LCAxNDUsIDE3OCwgMSwgCisgICAgMjQ1LCAxOTIsIDE3OCwgMSwgMTk5LCAxNzgsIDEsIDE3OSwgMTc4LCAxLCAyMjEsIDkzLCAxNzgsIDEsIDI1MCwgMTgzLCAKKyAgICAxNzgsIDEsIDI1MCwgMCwgMTc4LCAxLCAxODUsIDE3OCwgMSwgMTkwLCAxNzgsIDEsIDIxOSwgMTEzLCAxNzgsIDEsIDIzMCwgCisgICAgMTQxLCAxNzgsIDEsIDIyOSwgMTcyLCAxNzgsIDEsIDIwOSwgNzAsIDE3OCwgMSwgMjE2LCAyLCAxNzgsIDEsIDIxNCwgOTYsIAorICAgIDE3OCwgMSwgMjE3LCAxOTksIDE3OCwgMSwgMTU1LCAxNzgsIDMsIDIyMywgMTg0LCAxNzgsIDMsIDI1MSwgMTY3LCAxNzgsIAorICAgIDIyLCAzLCAyNTMsIDE2NCwgMTc4LCAyMiwgMywgNzQsIDE3OCwgMjIsIDMsIDIzMywgMTAyLCAxNzgsIDIyLCAzLCA3MSwgCisgICAgMTc4LCAyMiwgMywgMjA5LCAxNjIsIDE3OCwgMjIsIDMsIDExNSwgMTM3LCAxNzgsIDIyLCAzLCAxMTUsIDIxOCwgOTAsIAorICAgIDE3OCwgMjIsIDMsIDc1LCAxNzgsIDIyLCAzLCAyNTIsIDIwNSwgMTc4LCAyMiwgMywgNzYsIDE3OCwgMjIsIDMsIDI1MSwgCisgICAgMTg0LCAxNzgsIDMsIDIwOCwgMTg4LCAxNzgsIDI1MiwgMjA2LCAyMzAsIDIwLCA4MywgMTc4LCAyNTEsIDE4NSwgMjMwLCAKKyAgICAyMCwgODMsIDE3OCwgMSwgMjE4LCA4OSwgMTc4LCAxLCAyMTgsIDIxMiwgMTc4LCAxLCAyMDUsIDE2OCwgMTc4LCAxLCAxMTUsIAorICAgIDIxOCwgOTAsIDE3OCwgMSwgMTE1LCAyMjksIDE3MywgMTc4LCAyMiwgMywgMTE1LCAxNDksIDE3OCwgMjIsIDMsIDExNSwgCisgICAgMjI5LCAxNzMsIDE3OCwgMTgsIDIwNSwgODUsIDE3OCwgMTgsIDEwMiwgMTc4LCAxOCwgMTA1LCAxNzgsIDE4LCAxNDIsIAorICAgIDE3OCwgMTgsIDEzOSwgMTc4LCAxOCwgMTY4LCAxNzgsIDE4LCAxODQsIDE3OCwgMTgsIDE5NSwgMTc4LCAxOCwgMTkzLCAKKyAgICAxNzgsIDE4LCAyMDAsIDE3OCwgMjMyLCAyMjEsIDE3OCwgMSwgMjA3LCA5NiwgMTc4LCAyNDEsIDExNiwgMTE5LCAyMTksIAorICAgIDIwNCwgMTc4LCAyNDEsIDExNiwgMTE5LCAyMzksIDEyMSwgMTc4LCAyNDEsIDExNiwgMTI5LCAyMTksIDIwMiwgMTc4LCAKKyAgICAyNDEsIDExNiwgMTE5LCAyMTUsIDIsIDE3OCwgMjQxLCAxMTYsIDExOSwgMjQzLCA4MywgMTc4LCAyNDEsIDExNiwgMTI5LCAKKyAgICAyMTUsIDEsIDQwLCAzLCAyNTIsIDczLCA0MCwgMywgMjA4LCAxODMsIDQwLCAxLCA2MiwgNDAsIDEsIDI1MywgMTY0LCA0MCwgCisgICAgMSwgNzQsIDQwLCAxLCAyMzMsIDEwMiwgNDAsIDEsIDcxLCA0MCwgMSwgMjA5LCAxNjIsIDQwLCAxLCA3NSwgNDAsIDEsIAorICAgIDI0MywgMTA0LCA0MCwgMSwgMjUyLCAyMDUsIDQwLCAxLCA3NiwgNDAsIDEsIDIyMiwgMTUyLCA0MCwgMSwgMjUxLCAxODQsIAorICAgIDQwLCAxLCAxNzIsIDQwLCAxLCAyMjUsIDc3LCA0MCwgMSwgMjQ5LCAxLCA0MCwgMSwgMjMyLCAyMDAsIDQwLCAxLCAyMjMsIAorICAgIDE0NCwgNDAsIDEsIDIxMCwgMjA4LCA0MCwgMSwgMjI0LCAxMDMsIDQwLCAxLCAyMTIsIDIxOSwgNDAsIDEsIDE5OSwgNDAsIAorICAgIDEsIDIyNCwgODUsIDQwLCAxLCAxNzksIDQwLCAxLCAxODUsIDQwLCAxLCAxOTAsIDQwLCAxLCAyMTksIDExMywgNDAsIDEsIAorICAgIDIxOCwgODksIDQwLCAxLCAyMzAsIDE0MSwgNDAsIDEsIDIyOSwgMTcyLCA0MCwgMSwgMjI5LCAxNjMsIDQwLCAxLCAyMDksIAorICAgIDcwLCA0MCwgMSwgMjE2LCAyLCA0MCwgMSwgMjE0LCA5NiwgNDAsIDEsIDIxNywgMTk5LCA0MCwgMSwgMTU1LCA0MCwgMjIsIAorICAgIDMsIDI1MywgMTY0LCA0MCwgMjIsIDMsIDc0LCA0MCwgMjIsIDMsIDIzMywgMTAyLCA0MCwgMjIsIDMsIDcxLCA0MCwgMjIsIAorICAgIDMsIDIwOSwgMTYyLCA0MCwgMjIsIDMsIDc1LCA0MCwgMjIsIDMsIDI0MywgMTA0LCA0MCwgMjIsIDMsIDI1MiwgMjA1LCA0MCwgCisgICAgMjIsIDMsIDc2LCA0MCwgMjIsIDMsIDIyMiwgMTUyLCA0MCwgMjIsIDMsIDI1MSwgMTg0LCA0MCwgMywgMjA4LCAxODgsIDQwLCAKKyAgICAyMjIsIDE3MywgNDAsIDI1MSwgMTg1LCAyMzAsIDIwLCA4MywgNDAsIDE4LCAyMDUsIDg1LCA0MCwgMTgsIDEwMiwgNDAsIAorICAgIDE4LCAxMDUsIDQwLCAxOCwgMTQyLCA0MCwgMTgsIDEzOSwgNDAsIDE4LCAxNjgsIDQwLCAxOCwgMTg0LCA0MCwgMTgsIDE5NSwgCisgICAgNDAsIDE4LCAxOTMsIDQwLCAxOCwgMjAwLCA0MCwgNDMsIDIxMiwgOTgsIDQwLCA0MywgMTE5LCAyMzgsIDI5LCA0MCwgNDMsIAorICAgIDExOSwgMjExLCAyNDIsIDQwLCAyNDYsIDY3LCA1MywgNDAsIDIyNiwgMTUzLCA1MywgNDAsIDIwNiwgNTAsIDUzLCA0MCwgCisgICAgMjQ2LCA2LCA1MywgNDAsIDI0NywgNjgsIDUzLCA0MCwgMjUxLCAyMzIsIDg0LCA1MywgNDAsIDIxOCwgMjcsIDUzLCA0MCwgCisgICAgNDMsIDUzLCAxNjMsIDMsIDM2LCAyNDgsIDIxOCwgNTIsIDE2MywgMywgMjQ4LCAyMTcsIDE2MywgMywgMjUyLCA3MywgMTYzLCAKKyAgICAzLCAyMDgsIDE4MywgMTYzLCAxLCA2MiwgMTYzLCAxLCAyNTMsIDE2NCwgMTYzLCAxLCA3NCwgMTYzLCAxLCAyMzMsIDEwMiwgCisgICAgMTYzLCAxLCA3MSwgMTYzLCAxLCAyMDksIDE2MiwgMTYzLCAxLCAxMTUsIDEzNywgMTYzLCAxLCAxMTUsIDE0OSwgMTYzLCAxLCAKKyAgICA3NSwgMTYzLCAxLCAyNDMsIDEwNCwgMTYzLCAxLCAyNTIsIDIwNSwgMTYzLCAxLCA3NiwgMTYzLCAxLCAyMjIsIDE1MiwgCisgICAgMTYzLCAxLCAyNTEsIDE4NCwgMTYzLCAxLCAxNzIsIDE2MywgMSwgMjMxLCAxNjcsIDE2MywgMSwgMjQwLCAyNDQsIDE2MywgCisgICAgMSwgMjQwLCA5OSwgMTYzLCAxLCAyMjUsIDc3LCAxNjMsIDEsIDI0OSwgMSwgMTYzLCAxLCAyNDgsIDExMCwgMTYzLCAxLCAKKyAgICAyMzIsIDIwMCwgMTYzLCAxLCAyMzIsIDE3MCwgMTYzLCAxLCAyMjMsIDE0NCwgMTYzLCAxLCAyMTAsIDIwOCwgMTYzLCAxLCAKKyAgICAyMTAsIDE5NiwgMTYzLCAxLCAyNDYsIDU0LCAxNjMsIDEsIDI0NiwgMzgsIDE2MywgMSwgMjI0LCAxMDMsIDE2MywgMSwgCisgICAgMjEyLCAyMTksIDE2MywgMSwgMjEyLCA1NiwgMTYzLCAxLCAyNDYsIDE0NSwgMTYzLCAxLCAyNDUsIDE5MiwgMTYzLCAxLCAKKyAgICAxOTksIDE2MywgMSwgMTc5LCAxNjMsIDEsIDIyMSwgOTMsIDE2MywgMSwgMjUwLCAxODMsIDE2MywgMSwgMjUwLCAwLCAxNjMsIAorICAgIDEsIDE4NSwgMTYzLCAxLCAxOTAsIDE2MywgMSwgMjE5LCAxMTMsIDE2MywgMSwgMjE4LCA4OSwgMTYzLCAxLCAyMzAsIDE0MSwgCisgICAgMTYzLCAxLCAyMjksIDE3MiwgMTYzLCAxLCAyMjksIDE2MywgMTYzLCAxLCAyMDksIDcwLCAxNjMsIDEsIDIxNiwgMiwgMTYzLCAKKyAgICAxLCAyMTQsIDk2LCAxNjMsIDEsIDIxNywgMTk5LCAxNjMsIDEsIDE1NSwgMTYzLCAzLCAyNTEsIDE2NywgMTYzLCAyMiwgMywgCisgICAgMjUzLCAxNjQsIDE2MywgMjIsIDMsIDc0LCAxNjMsIDIyLCAzLCAyMzMsIDEwMiwgMTYzLCAyMiwgMywgNzEsIDE2MywgMjIsIAorICAgIDMsIDIwOSwgMTYyLCAxNjMsIDIyLCAzLCAxMTUsIDEzNywgMTYzLCAyMiwgMywgMTE1LCAyMTgsIDkwLCAxNjMsIDIyLCAzLCAKKyAgICA3NSwgMTYzLCAyMiwgMywgMjQzLCAxMDQsIDE2MywgMjIsIDMsIDI1MiwgMjA1LCAxNjMsIDIyLCAzLCA3NiwgMTYzLCAyMiwgCisgICAgMywgMjIyLCAxNTIsIDE2MywgMjIsIDMsIDI1MSwgMTg0LCAxNjMsIDMsIDIwOCwgMTg4LCAxNjMsIDIzMCwgMjAsIDgzLCAKKyAgICAxNjMsIDI1MiwgMjA2LCAyMzAsIDIwLCA4MywgMTYzLCAxLCAyMTAsIDI0MywgMTYzLCAxLCAyNDMsIDE5NiwgMTYzLCAxLCAKKyAgICAxMTUsIDIxOCwgOTAsIDE2MywgMSwgMTE1LCAyMjksIDE3MywgMTYzLCAyMiwgMywgMTE1LCAxNDksIDE2MywgMjIsIDMsIAorICAgIDExNSwgMjI5LCAxNzMsIDE2MywgMTgsIDIwNSwgODUsIDE2MywgMTgsIDEwMiwgMTYzLCAxOCwgMTA1LCAxNjMsIDE4LCAKKyAgICAxNDIsIDE2MywgMTgsIDEzOSwgMTYzLCAxOCwgMTY4LCAxNjMsIDE4LCAxODQsIDE2MywgMTgsIDE5NSwgMTYzLCAxOCwgCisgICAgMTkzLCAxNjMsIDE4LCAyMDAsIDE2MywgMjQxLCAxMTYsIDE4LCAyMDUsIDg2LCAzMywgMjIyLCAyMTAsIDIyMCwgMTYwLCAKKyAgICA3MywgMTM5LCAxNjMsIDI0MSwgMTE2LCAxOCwgMTE5LCAzMywgMjIyLCAyMTAsIDIyMCwgMTYwLCA3MywgMTM5LCAxNjMsIAorICAgIDI0MSwgMTE2LCAxOCwgMTE4LCAzMywgMjIyLCAyMTAsIDIyMCwgMTYwLCA3MywgMTM5LCAxNjMsIDI0MSwgMTE2LCAxOCwgCisgICAgMTI5LCAzMywgMjIyLCAyMTAsIDIyMCwgMTYwLCA3MywgMTM5LCAxNjMsIDI0MSwgMTE2LCAxOCwgMTE5LCAzMywgMjQyLCAKKyAgICAxNzksIDIyMCwgMTYwLCA3MywgMTM5LCAxNjMsIDI0MSwgMTE2LCAxOCwgMTE4LCAzMywgMjQyLCAxNzksIDIyMCwgMTYwLCAKKyAgICA3MywgMTM5LCAxNjMsIDI0MSwgMTE2LCAxOCwgMTI5LCAzMywgMjQyLCAxNzksIDIyMCwgMTYwLCA3MywgMTM5LCAxNjMsIDMsIAorICAgIDIxMCwgMTM0LCAxODMsIDMsIDI0OCwgMjE3LCAxODMsIDMsIDI1MiwgNzMsIDE4MywgMywgMjA4LCAxODMsIDE4MywgMSwgCisgICAgNjIsIDE4MywgMSwgMjUzLCAxNjQsIDE4MywgMSwgNzQsIDE4MywgMSwgMjMzLCAxMDIsIDE4MywgMSwgNzEsIDE4MywgMSwgCisgICAgMjA5LCAxNjIsIDE4MywgMSwgMTE1LCAxMzcsIDE4MywgMSwgMTE1LCAxNDksIDE4MywgMSwgNzUsIDE4MywgMSwgMjQzLCAKKyAgICAxMDQsIDE4MywgMSwgMjUyLCAyMDUsIDE4MywgMSwgNzYsIDE4MywgMSwgMjIyLCAxNTIsIDE4MywgMSwgMjUxLCAxODQsIAorICAgIDE4MywgMSwgMTcyLCAxODMsIDEsIDIzMSwgMTY3LCAxODMsIDEsIDI0MCwgMjQ0LCAxODMsIDEsIDI0MCwgOTksIDE4MywgMSwgCisgICAgMjI1LCA3NywgMTgzLCAxLCAyNDksIDEsIDE4MywgMSwgMjQ4LCAxMTAsIDE4MywgMSwgMjMyLCAyMDAsIDE4MywgMSwgMjMyLCAKKyAgICAxNzAsIDE4MywgMSwgMjIzLCAxNDQsIDE4MywgMSwgMjEwLCAyMDgsIDE4MywgMSwgMjEwLCAxOTYsIDE4MywgMSwgMjQ2LCAKKyAgICA1NCwgMTgzLCAxLCAyNDYsIDM4LCAxODMsIDEsIDIyNCwgMTAzLCAxODMsIDEsIDIxMiwgMjE5LCAxODMsIDEsIDIxMiwgNTYsIAorICAgIDE4MywgMSwgMjQ2LCAxNDUsIDE4MywgMSwgMjQ1LCAxOTIsIDE4MywgMSwgMTk5LCAxODMsIDEsIDE3OSwgMTgzLCAxLCAKKyAgICAyMjEsIDkzLCAxODMsIDEsIDI1MCwgMTgzLCAxODMsIDEsIDI1MCwgMCwgMTgzLCAxLCAxODUsIDE4MywgMSwgMTkwLCAxODMsIAorICAgIDEsIDIxOSwgMTEzLCAxODMsIDEsIDIxOCwgODksIDE4MywgMSwgMjMwLCAxNDEsIDE4MywgMSwgMjI5LCAxNzIsIDE4MywgMSwgCisgICAgMjA5LCA3MCwgMTgzLCAxLCAyMTYsIDIsIDE4MywgMSwgMjE0LCA5NiwgMTgzLCAxLCAyMTcsIDE5OSwgMTgzLCAxLCAxNTUsIAorICAgIDE4MywgMywgMjIzLCAxODQsIDE4MywgMywgMjUxLCAxNjcsIDE4MywgMjIsIDMsIDI1MywgMTY0LCAxODMsIDIyLCAzLCA3NCwgCisgICAgMTgzLCAyMiwgMywgMjMzLCAxMDIsIDE4MywgMjIsIDMsIDcxLCAxODMsIDIyLCAzLCAyMDksIDE2MiwgMTgzLCAyMiwgMywgCisgICAgMTE1LCAxMzcsIDE4MywgMjIsIDMsIDExNSwgMjE4LCA5MCwgMTgzLCAyMiwgMywgNzUsIDE4MywgMjIsIDMsIDI0MywgMTA0LCAKKyAgICAxODMsIDIyLCAzLCAyNTIsIDIwNSwgMTgzLCAyMiwgMywgNzYsIDE4MywgMjIsIDMsIDIyMiwgMTUyLCAxODMsIDIyLCAzLCAKKyAgICAyNTEsIDE4NCwgMTgzLCAzLCAyMDgsIDE4OCwgMTgzLCAyMzAsIDIwLCA4MywgMTgzLCAyNTIsIDIwNiwgMjMwLCAyMCwgODMsIAorICAgIDE4MywgMSwgMjQyLCA3MywgMTgzLCAxLCAxMTUsIDIxOCwgOTAsIDE4MywgMSwgMTE1LCAyMjksIDE3MywgMTgzLCAyMiwgMywgCisgICAgMTE1LCAxNDksIDE4MywgMjIsIDMsIDExNSwgMjI5LCAxNzMsIDE4MywgMTgsIDIwNSwgODUsIDE4MywgMTgsIDEwMiwgMTgzLCAKKyAgICAxOCwgMTA1LCAxODMsIDE4LCAxNDIsIDE4MywgMTgsIDEzOSwgMTgzLCAxOCwgMTY4LCAxODMsIDE4LCAxODQsIDE4MywgMTgsIAorICAgIDE5NSwgMTgzLCAxOCwgMTkzLCAxODMsIDE4LCAyMDAsIDE4MywgMywgMjMyLCAxNTYsIDE4MywgMywgMjA5LCAyMDQsIDE1NiwgCisgICAgMywgMjQ4LCAyMTcsIDE1NiwgMywgMjUyLCA3MywgMTU2LCAzLCAyMDgsIDE4MywgMTU2LCAxLCA2MiwgMTU2LCAxLCAyNTMsIAorICAgIDE2NCwgMTU2LCAxLCA3NCwgMTU2LCAxLCAyMzMsIDEwMiwgMTU2LCAxLCA3MSwgMTU2LCAxLCAyMDksIDE2MiwgMTU2LCAxLCAKKyAgICAxMTUsIDEzNywgMTU2LCAxLCAxMTUsIDE0OSwgMTU2LCAxLCA3NSwgMTU2LCAxLCAyNDMsIDEwNCwgMTU2LCAxLCAyNTIsIAorICAgIDIwNSwgMTU2LCAxLCA3NiwgMTU2LCAxLCAyMjIsIDE1MiwgMTU2LCAxLCAyNTEsIDE4NCwgMTU2LCAxLCAxNzIsIDE1NiwgMSwgCisgICAgMjMxLCAxNjcsIDE1NiwgMSwgMjQwLCAyNDQsIDE1NiwgMSwgMjQwLCA5OSwgMTU2LCAxLCAyMjUsIDc3LCAxNTYsIDEsIAorICAgIDI0OSwgMSwgMTU2LCAxLCAyNDgsIDExMCwgMTU2LCAxLCAyMzIsIDIwMCwgMTU2LCAxLCAyMzIsIDE3MCwgMTU2LCAxLCAKKyAgICAyMjMsIDE0NCwgMTU2LCAxLCAyMTAsIDIwOCwgMTU2LCAxLCAyMTAsIDE5NiwgMTU2LCAxLCAyNDYsIDU0LCAxNTYsIDEsIAorICAgIDI0NiwgMzgsIDE1NiwgMSwgMjI0LCAxMDMsIDE1NiwgMSwgMjEyLCAyMTksIDE1NiwgMSwgMjEyLCA1NiwgMTU2LCAxLCAKKyAgICAyNDYsIDE0NSwgMTU2LCAxLCAyNDUsIDE5MiwgMTU2LCAxLCAxOTksIDE1NiwgMSwgMjI0LCA4NSwgMTU2LCAxLCAxNzksIAorICAgIDE1NiwgMSwgMjIxLCA5MywgMTU2LCAxLCAyNTAsIDE4MywgMTU2LCAxLCAyNTAsIDAsIDE1NiwgMSwgMTg1LCAxNTYsIDEsIAorICAgIDE5MCwgMTU2LCAxLCAyMTksIDExMywgMTU2LCAxLCAyMTgsIDg5LCAxNTYsIDEsIDIzMCwgMTQxLCAxNTYsIDEsIDIyOSwgCisgICAgMTcyLCAxNTYsIDEsIDIyOSwgMTYzLCAxNTYsIDEsIDIwOSwgNzAsIDE1NiwgMSwgMjE2LCAyLCAxNTYsIDEsIDIxNCwgOTYsIAorICAgIDE1NiwgMSwgMjE3LCAxOTksIDE1NiwgMSwgMTU1LCAxNTYsIDEsIDIxMCwgMTc3LCAxNTYsIDMsIDI1MSwgMTY3LCAxNTYsIAorICAgIDIyLCAzLCAyNTMsIDE2NCwgMTU2LCAyMiwgMywgNzQsIDE1NiwgMjIsIDMsIDIzMywgMTAyLCAxNTYsIDIyLCAzLCA3MSwgCisgICAgMTU2LCAyMiwgMywgMjA5LCAxNjIsIDE1NiwgMjIsIDMsIDExNSwgMTM3LCAxNTYsIDIyLCAzLCAxMTUsIDIxOCwgOTAsIAorICAgIDE1NiwgMjIsIDMsIDc1LCAxNTYsIDIyLCAzLCAyNDMsIDEwNCwgMTU2LCAyMiwgMywgMjUyLCAyMDUsIDE1NiwgMjIsIDMsIAorICAgIDc2LCAxNTYsIDIyLCAzLCAyMjIsIDE1MiwgMTU2LCAyMiwgMywgMjUxLCAxODQsIDE1NiwgMywgMjA4LCAxODgsIDE1NiwgMSwgCisgICAgNjcsIDIxOCwgMjQ4LCAxNTYsIDI1MSwgMTg1LCAyMzAsIDIwLCA4MywgMTU2LCAxLCAxMTUsIDIxOCwgOTAsIDE1NiwgMSwgCisgICAgMTE1LCAyMjksIDE3MywgMTU2LCAyMiwgMywgMTE1LCAxNDksIDE1NiwgMjIsIDMsIDExNSwgMjI5LCAxNzMsIDE1NiwgMTgsIAorICAgIDIwNSwgODUsIDE1NiwgMTgsIDEwMiwgMTU2LCAxOCwgMTA1LCAxNTYsIDE4LCAxNDIsIDE1NiwgMTgsIDEzOSwgMTU2LCAxOCwgCisgICAgMTY4LCAxNTYsIDE4LCAxODQsIDE1NiwgMTgsIDE5NSwgMTU2LCAxOCwgMTkzLCAxNTYsIDE4LCAyMDAsIDE1NiwgNDMsIAorICAgIDIxMiwgOTgsIDE1NiwgNDMsIDExOSwgMjM4LCAyOSwgMTU2LCA0MywgMTE5LCAyMTEsIDI0MiwgMTU2LCAyNDEsIDExNiwgCisgICAgMTE5LCAyMTksIDIwNCwgMTU2LCAyNDEsIDExNiwgMTE5LCAyMzksIDEyMSwgMTU2LCAyNDEsIDExNiwgMTI5LCAyMTksIAorICAgIDIwMiwgMTU2LCAyNDYsIDcyLCA4MywgMTU2LCAxLCAyNDgsIDQ3LCAyMjQsIDEwNCwgMTU2LCAxLCAyNDgsIDQ3LCAyMjYsIAorICAgIDMzLCAxNTYsIDEsIDI0OCwgNDcsIDIxOCwgOTAsIDE1NiwgMSwgMjQ4LCA0NywgMTQ5LCAxNTYsIDEsIDI0OCwgNDcsIDIyOSwgCisgICAgMTczLCAxNTYsIDEsIDI0OCwgNDcsIDIzMiwgNzYsIDEzMiwgMywgMjUyLCA3MiwgMTMyLCAzLCAyMDgsIDE4MiwgMTMyLCAxLCAKKyAgICAyNTEsIDE1NywgMTMyLCAxLCAyNTMsIDExOCwgMTMyLCAxLCAyNTIsIDIyOCwgMTMyLCAxLCAyNTIsIDI0MywgMTMyLCAxLCAKKyAgICAyMzIsIDIxMCwgMTMyLCAxLCAyMzMsIDEwMSwgMTMyLCAxLCAyMDksIDE1MywgMTMyLCAxLCAyMDksIDE1NiwgMTMyLCAxLCAKKyAgICAyMzIsIDIzNiwgMTMyLCAxLCAyMzIsIDIzNywgMTMyLCAxLCAyMzMsIDg3LCAxMzIsIDEsIDIzMywgODksIDEzMiwgMSwgCisgICAgMjQyLCAxNTIsIDEzMiwgMSwgMjQzLCA5OSwgMTMyLCAxLCAyNTIsIDE5MSwgMTMyLCAxLCAyMjIsIDcwLCAxMzIsIDEsIAorICAgIDIyMiwgMTQ1LCAxMzIsIDEsIDI1MSwgMTcwLCAxMzIsIDEsIDI1MiwgMTQ3LCAyMzEsIDIyOSwgMTMyLCAxLCAyMjcsIDI0NiwgCisgICAgMjMxLCAyMjksIDEzMiwgMSwgMjUyLCAxNDcsIDI0MCwgMTkwLCAxMzIsIDEsIDIyNywgMjQ2LCAyNDAsIDE5MCwgMTMyLCAxLCAKKyAgICAyMzIsIDIyLCAyMjUsIDIyOSwgMTMyLCAxLCAyMTcsIDE0MywgMjQwLCAxOTAsIDEzMiwgMSwgMjUyLCAxNDcsIDI0OCwgCisgICAgMTc0LCAxMzIsIDEsIDIyNywgMjQ2LCAyNDgsIDE3NCwgMTMyLCAxLCAyNTIsIDE0NywgMjMyLCAxODUsIDEzMiwgMSwgMjI3LCAKKyAgICAyNDYsIDIzMiwgMTg1LCAxMzIsIDEsIDIxMiwgMjEyLCAyMjUsIDIyOSwgMTMyLCAxLCAyMTIsIDIxMiwgMjE3LCAxNDIsIAorICAgIDIyNSwgMjMwLCAxMzIsIDEsIDIxNywgMTQzLCAyMzIsIDE4NSwgMTMyLCAxLCAyNTIsIDE0NywgMjEwLCAyMDQsIDEzMiwgMSwgCisgICAgMjI3LCAyNDYsIDIxMCwgMjA0LCAxMzIsIDEsIDI1MiwgMTQ3LCAyNDYsIDQ1LCAxMzIsIDEsIDIyNywgMjQ2LCAyNDYsIDQ1LCAKKyAgICAxMzIsIDEsIDIyNiwgNjEsIDIyNSwgMTg0LCAxMzIsIDEsIDIxNywgMTQzLCAyNDYsIDQ1LCAxMzIsIDEsIDI1MiwgMTQ3LCAKKyAgICAyMTIsIDEzOSwgMTMyLCAxLCAyMjcsIDI0NiwgMjEyLCAxMzksIDEzMiwgMSwgMjUyLCAxNDcsIDI0NiwgNjUsIDEzMiwgMSwgCisgICAgMjI3LCAyNDYsIDI0NiwgNjUsIDEzMiwgMSwgMjQ2LCA5NiwgMjI1LCAxODQsIDEzMiwgMSwgMjE3LCAxNDMsIDI0NiwgNjUsIAorICAgIDEzMiwgMSwgMjUyLCAxNDcsIDIyMSwgMTgyLCAxMzIsIDEsIDIyNywgMjQ2LCAyMjEsIDE4MiwgMTMyLCAxLCAyNTIsIDE0NywgCisgICAgMjUwLCA5OSwgMTMyLCAxLCAyMjcsIDI0NiwgMjUwLCA5OSwgMTMyLCAxLCAyMjcsIDE2MSwgMTMyLCAxLCAyNTIsIDEzMSwgCisgICAgMjUwLCA5OSwgMTMyLCAxLCAyMDYsIDU3LCAxMzIsIDEsIDIxOSwgNTcsIDEzMiwgMSwgMjQ2LCA5NiwgMjMwLCA2NywgMTMyLCAKKyAgICAxLCAyMDksIDQxLCAxMzIsIDEsIDIxMiwgMjEyLCAyMTcsIDExNSwgMTMyLCAxLCAyMjYsIDYxLCAyMTcsIDExNSwgMTMyLCAKKyAgICAxLCAyNDYsIDk2LCAyMTcsIDExNSwgMTMyLCAxLCAyMzksIDc1LCAxMzIsIDEsIDIyNiwgNjEsIDIzMCwgNjcsIDEzMiwgMSwgCisgICAgMjQyLCAzMCwgMTMyLCAzLCAyNTIsIDE4MCwgMTMyLCAyMiwgMywgMjUyLCAyMzgsIDEzMiwgMjIsIDMsIDIzMSwgMTkyLCAKKyAgICAyNTIsIDI0NSwgMTMyLCAyMiwgMywgMjQ1LCAxMzUsIDI1MiwgMjQ1LCAxMzIsIDIyLCAzLCAyMzEsIDE5MiwgMjMyLCAyMzMsIAorICAgIDEzMiwgMjIsIDMsIDI0NSwgMTM1LCAyMzIsIDIzMywgMTMyLCAyMiwgMywgMjMxLCAxOTIsIDIyMiwgNTAsIDEzMiwgMjIsIAorICAgIDMsIDI0NSwgMTM1LCAyMjIsIDUwLCAxMzIsIDIyLCAzLCAyNDAsIDIzMywgMTMyLCAyMiwgMywgMjMxLCAzOCwgMTMyLCAyMiwgCisgICAgMywgMjQ1LCAxMzUsIDIzMSwgMzgsIDEzMiwgMjIsIDMsIDIzMSwgNDAsIDI0NSwgMjQwLCAxMzIsIDIyLCAzLCAyMzEsIDM5LCAKKyAgICAyMzksIDE0MiwgMjUyLCAyMzgsIDEzMiwgMjIsIDMsIDIzMSwgMzksIDIzOSwgMTQyLCAyNDUsIDEzNSwgMjUyLCAyMzgsIAorICAgIDEzMiwgMjIsIDMsIDIzMSwgMzksIDIzOSwgMTQyLCAyNDAsIDE4OSwgMTMyLCAyMiwgMywgMjQwLCAxODksIDEzMiwgMjI5LCAKKyAgICAxODMsIDE4LCAyMDUsIDg1LCAxMzIsIDIyOSwgMTgzLCAxOCwgMTAyLCAxMzIsIDIyOSwgMTgzLCAxOCwgMTA1LCAxMzIsIAorICAgIDIyOSwgMTgzLCAxOCwgMTQyLCAxMzIsIDIyOSwgMTgzLCAxOCwgMTM5LCAxMzIsIDIyOSwgMTgzLCAxOCwgMTY4LCAxMzIsIAorICAgIDIyOSwgMTgzLCAxOCwgMTg0LCAxMzIsIDIyOSwgMTgzLCAxOCwgMTk1LCAxMzIsIDIyOSwgMTgzLCAxOCwgMTkzLCAxMzIsIAorICAgIDIyOSwgMTgzLCAxOCwgMjAwLCAxMzIsIDIyLCAzLCAyNDUsIDEzNSwgMjQwLCAyMzMsIDEzMiwgMjIsIDMsIDI0NSwgMTM1LCAKKyAgICAyNDAsIDE4OSwgMTMyLCAyMjAsIDcyLCAyMzAsIDIyMSwgMTg5LCAxNTcsIDIzMSwgNTQsIDIzMiwgNDEsIDE4OSwgMTU3LCAKKyAgICAyMzEsIDEzOSwgMjMxLCAxNjIsIDE4OSwgMTU3LCAyMzEsIDEzOSwgMjMxLCAxMzEsIDE4OSwgMTU3LCAyMzEsIDEzOSwgCisgICAgMjMxLCAxMjYsIDE4OSwgMTU3LCAyMzEsIDEzOSwgMjMxLCAxMzUsIDE4OSwgMTU3LCAyMzEsIDEzOSwgMjE5LCA3OCwgMTg5LCAKKyAgICAxNTcsIDIyNSwgMywgMjI0LCAyNDYsIDE4OSwgMTU3LCAyNDgsIDMzLCAyNDgsIDEwMCwgMTg5LCAxNTcsIDI0OCwgMzMsIAorICAgIDI0OCwgNDMsIDE4OSwgMTU3LCAyNDgsIDMzLCAyNDgsIDk5LCAxODksIDE1NywgMjE0LCAxOTQsIDIxNCwgMTkzLCAxODksIAorICAgIDE1NywgMjQ4LCAzMywgMjQ4LCAyOSwgMTg5LCAxNTcsIDIwNSwgMjQ4LCAyMDUsIDI1NSwgMTg5LCAxNTcsIDI0NSwgNTIsIAorICAgIDI0OCwgMTA3LCAxODksIDE1NywgMjExLCAxMzAsIDIyMSwgMTkzLCAxODksIDE1NywgMjExLCAyNTQsIDIxMiwgNDYsIDE4OSwgCisgICAgMTU3LCAyMTEsIDI1NCwgMjI1LCAyMDYsIDE4OSwgMTU3LCAyMTEsIDI1NCwgMjIxLCA1NiwgMTg5LCAxNTcsIDIyNCwgNjgsIAorICAgIDIyNSwgMTAxLCAxODksIDE1NywgMjQ1LCA1MiwgMjQ1LCAyNDEsIDE4OSwgMTU3LCAyMTEsIDEzMCwgMjEyLCAxNjcsIDE4OSwgCisgICAgMTU3LCAyMTEsIDI1NCwgMjExLCAyMjUsIDE4OSwgMTU3LCAyMTEsIDI1NCwgMjEyLCA1MiwgMTg5LCAxNTcsIDIxMSwgMjU0LCAKKyAgICAyMTEsIDI0OSwgMTg5LCAxNTcsIDIyNCwgNjgsIDIyMywgMjE3LCAxODksIDE1NywgMjQ5LCAxODUsIDI1MCwgMTU0LCAxODksIAorICAgIDE1NywgMjIwLCAyMTIsIDIyMCwgMjQwLCAxODksIDE1NywgMjIxLCA2NywgMjIxLCA1OCwgMTg5LCAxNTcsIDI0MSwgMTYzLCAKKyAgICAyNDIsIDczLCAxODksIDE1NywgMjIxLCA2NywgMjIxLCA4NiwgMTg5LCAxNTcsIDI0MSwgMTYzLCAyNDIsIDQ3LCAxODksIAorICAgIDE1NywgMjIxLCA2NywgMjE3LCAxNTUsIDE4OSwgMTU3LCAyMjYsIDE4MiwgMTg1LCAxODksIDE1NywgMjA1LCAyNDgsIDIwNiwgCisgICAgODUsIDE4OSwgMTU3LCAyMTgsIDEyNSwgMjE4LCA0OSwgMTg5LCAxNTcsIDIxOCwgNTAsIDE4OSwgMTU3LCAyMjksIDE0NSwgCisgICAgMjI5LCAxOTgsIDE4OSwgMTU3LCAyMjksIDgxLCAxODksIDE1NywgMjA2LCAyNTEsIDIwNywgOTEsIDE4OSwgMTU3LCAyMTQsIAorICAgIDE5NCwgMjE3LCAxNzAsIDE4OSwgMTU3LCAyMTQsIDE5NCwgMjE4LCAyMywgMTg5LCAxNTcsIDIxNCwgMTk0LCAyMTMsIDIwMiwgCisgICAgMTg5LCAxNTcsIDIzOCwgMTUwLCAyMzgsIDI0NSwgMTg5LCAxNTcsIDIyOSwgMTQ1LCAyNDgsIDEzLCAxODksIDE1NywgMTQ4LCAKKyAgICAyNTIsIDExNCwgMTg5LCAxNTcsIDIzOCwgMTUwLCAyMjQsIDYzLCAxODksIDE1NywgMjIyLCAyOCwgMTg5LCAxNTcsIDIxNywgCisgICAgMTM3LCA2MiwgMTg5LCAxNTcsIDIyNywgMjQwLCAyMzksIDEwOSwgMTg5LCAxNTcsIDIxNywgMTM3LCAyNTMsIDE2NCwgMTg5LCAKKyAgICAxNTcsIDIxNywgMTM3LCAyNTIsIDEzNiwgMTg5LCAxNTcsIDIxNywgMTM3LCA3NCwgMTg5LCAxNTcsIDIxNywgMTM3LCAyMzMsIAorICAgIDEwMiwgMTg5LCAxNTcsIDIxNywgMTM3LCAyMTAsIDMsIDE4OSwgMTU3LCAyMTcsIDEzNywgMjEwLCAxLCAxODksIDE1NywgCisgICAgMjE3LCAxMzcsIDcxLCAxODksIDE1NywgMjE3LCAxMzcsIDIwOSwgMTYyLCAxODksIDE1NywgMjIxLCA2OSwgMTg5LCAyNDcsIAorICAgIDI1LCAxNiwgMjUwLCAxNTUsIDE4OSwgMTU3LCAyMTcsIDEzNywgNzUsIDE4OSwgMTU3LCAyMTcsIDEzNywgMjUyLCAyNDgsIAorICAgIDE4OSwgMTU3LCAyMTcsIDEzNywgNzYsIDE4OSwgMTU3LCAyMTcsIDEzNywgMjUyLCAyMDYsIDIyNywgMjM0LCAxODksIDE1NywgCisgICAgMjE3LCAxMzcsIDI1MiwgMjA2LCAyMjcsIDIzNSwgMTg5LCAxNTcsIDIzMCwgMTEwLCAxODksIDE1NywgMjI3LCAyMzEsIAorICAgIDE4OSwgMTU3LCAyMjcsIDIzMiwgMTg5LCAxNTcsIDIyNywgMjQwLCAyNDMsIDc1LCAxODksIDE1NywgMjI3LCAyNDAsIDIxMSwgCisgICAgMjUzLCAxODksIDE1NywgMjI3LCAyNDAsIDIxMSwgNTQsIDE4OSwgMTU3LCAyMjcsIDI0MCwgMjQ4LCA4NywgMTg5LCAxNTcsIAorICAgIDIxMiwgNDQsIDE4OSwgMTU3LCAyMjQsIDIwMiwgMTg5LCAxNTcsIDIwNiwgNzksIDE4OSwgMTU3LCAyNDEsIDE1MywgMTg5LCAKKyAgICAxOCwgMjA1LCA4NSwgMTg5LCAxOCwgMTAyLCAxODksIDE4LCAxMDUsIDE4OSwgMTgsIDE0MiwgMTg5LCAxOCwgMTM5LCAxODksIAorICAgIDE4LCAxNjgsIDE4OSwgMTgsIDE4NCwgMTg5LCAxOCwgMTk1LCAxODksIDE4LCAxOTMsIDE4OSwgMTgsIDIwMCwgMTg5LCAKKyAgICAxNTcsIDI1MiwgMTEwLCAxODksIDE1NywgMjMxLCAxMzYsIDIzMCwgOTAsIDEsIDIzMSwgNTMsIDIzMCwgOTAsIDEsIDIzMSwgCisgICAgMTM5LCAyMTMsIDE1MSwgMjMwLCA5MCwgMSwgMjMxLCAxMzksIDIxMiwgMTc2LCAyMzAsIDkwLCAxLCAyMjUsIDIsIDIzMCwgCisgICAgOTAsIDEsIDI0NywgMTc0LCAyMzAsIDkwLCAxLCAyMTQsIDE5NCwgMjEyLCAxNzYsIDIzMCwgOTAsIDEsIDIyMywgMTEwLCAKKyAgICAyMzAsIDkwLCAxLCAyNDUsIDUxLCAyMzAsIDkwLCAxLCAxMjQsIDIzMCwgOTAsIDEsIDIxMSwgMjU0LCAyMTMsIDE1MSwgCisgICAgMjMwLCA5MCwgMSwgMjExLCAyNTQsIDIxMiwgMTc2LCAyMzAsIDkwLCAxLCAyMjQsIDY3LCAyMzAsIDkwLCAxLCAyNDksIAorICAgIDE4NCwgMjMwLCA5MCwgMSwgMjIwLCAyMTEsIDIzMCwgOTAsIDEsIDIyMSwgNjcsIDIxMywgMTUxLCAyMzAsIDkwLCAxLCAKKyAgICAyNDEsIDE2MywgMjEyLCAxNzYsIDIzMCwgOTAsIDEsIDIyMSwgNjcsIDIxMiwgMTc2LCAyMzAsIDkwLCAxLCAyNDEsIDE2MywgCisgICAgMjEzLCAxNTEsIDIzMCwgOTAsIDEsIDIyNiwgMTgxLCAyMzAsIDkwLCAxLCAyMDUsIDI0NywgMjMwLCA5MCwgMSwgMjI5LCAKKyAgICAxNDUsIDIyOSwgMTk4LCAyMzAsIDkwLCAxLCAyMjksIDE0NSwgMjI5LCAxMDksIDIzMCwgOTAsIDEsIDIwNiwgMjUwLCAyMzAsIAorICAgIDkwLCAxLCAyMTQsIDE5NCwgMjEzLCAxNTEsIDIzMCwgOTAsIDEsIDIzOCwgMTUwLCAyMTMsIDE1MSwgMjMwLCA5MCwgMSwgCisgICAgNzYsIDIzMCwgOTAsIDEsIDIzOCwgMTUwLCAyMTIsIDE3NiwgMjMwLCA5MCwgMjQzLCA1NCwgMjMwLCA5MCwgMjIsIDMsIDYyLCAKKyAgICAyMzAsIDkwLCAyMiwgMywgMjI3LCAyNDAsIDIzMiwgMjcsIDIzMCwgOTAsIDIyLCAzLCAyNTMsIDE2NCwgMjMwLCA5MCwgMjIsIAorICAgIDMsIDI1MiwgMTM2LCAyMzAsIDkwLCAyMiwgMywgNzQsIDIzMCwgOTAsIDIyLCAzLCAyMzMsIDEwMiwgMjMwLCA5MCwgMjIsIAorICAgIDMsIDIwNiwgMTIzLCAyMzAsIDkwLCAyMiwgMywgMjA1LCAxNjksIDIzMCwgOTAsIDIyLCAzLCA3MSwgMjMwLCA5MCwgMjIsIAorICAgIDMsIDIwOSwgMTYyLCAyMzAsIDkwLCAyMiwgMywgMjI3LCAyNDAsIDIzMSwgMzYsIDIzMCwgOTAsIDIxNiwgNDcsIDMsIDIyOSwgCisgICAgMTQ0LCAyMzAsIDkwLCAyMTYsIDQ3LCAzLCAyMjMsIDExMCwgMjMwLCA5MCwgMjIsIDMsIDc1LCAyMzAsIDkwLCAyMiwgMywgCisgICAgMjQzLCA5MCwgMjMwLCA5MCwgMjIsIDMsIDc2LCAyMzAsIDkwLCAyMiwgMywgMjUxLCAxNTksIDIzMCwgOTAsIDIyLCAzLCAKKyAgICAyNTIsIDIwNSwgMjMwLCA5MCwgMjMxLCA1NCwgMjMwLCAxNDEsIDIzMCwgOTAsIDEzNSwgMjI3LCAyNDAsIDI0MywgNzUsIAorICAgIDIzMCwgOTAsIDEzNSwgMjI3LCAyNDAsIDIxMSwgMjUzLCAyMzAsIDkwLCAxMzUsIDIyNywgMjQwLCAyMTEsIDIxMSwgMjMwLCAKKyAgICA5MCwgMTM1LCAyMjcsIDI0MCwgMjQ4LCAxODIsIDIzMCwgOTAsIDI0OCwgMjIzLCA4MywgMjMwLCA5MCwgMjI0LCAyMTEsIAorICAgIDIzMCwgOTAsIDE4LCAyMDUsIDg1LCAyMzAsIDkwLCAxOCwgMTAyLCAyMzAsIDkwLCAxOCwgMTA1LCAyMzAsIDkwLCAxOCwgCisgICAgMTQyLCAyMzAsIDkwLCAxOCwgMTM5LCAyMzAsIDkwLCAxOCwgMTY4LCAyMzAsIDkwLCAxOCwgMTg0LCAyMzAsIDkwLCAxOCwgCisgICAgMTk1LCAyMzAsIDkwLCAxOCwgMTkzLCAyMzAsIDkwLCAxOCwgMjAwLCAyMzAsIDkwLCAyMzgsIDE1MCwgMjI0LCA2NywgMjMwLCAKKyAgICA5MCwgMjM4LCAxNTAsIDIyNiwgMTgxLCAyMzAsIDkwLCAxLCAyMzEsIDE0MCwgMjQwLCAxOSwgMjMwLCA5MCwgMSwgMjMxLCAKKyAgICAxNDAsIDIyMywgMTEwLCA3MiwgNCwgMjIyLCAxNzMsIDcyLCAxNDEsIDIzOSwgMjE1LCAyMDYsIDMsIDIyNywgMTYsIDIxMCwgCisgICAgMjQ5LCA2MiwgNzIsIDE0MSwgMjM5LCAyMTUsIDIwNiwgMywgMjI3LCAxNiwgMjU0LCAyNTQsIDIxOCwgMTI5LCAyNTAsIDYzLCAKKyAgICAxODUsIDcyLCAxNDEsIDIzOSwgMjE1LCAyMDYsIDMsIDIyNywgMTYsIDI1NCwgMjU0LCAyMzksIDIxNSwgMjEwLCAyMjksIAorICAgIDE4NSwgNzIsIDE0MSwgNzgsIDIwNiwgMywgMjI3LCAxNiwgMjI3LCAxMjEsIDE4NSwgNzIsIDE0MSwgMjQ3LCAxODgsIDIwNiwgCisgICAgMywgMjI3LCAxNiwgMjE2LCA5LCAxODUsIDcyLCAxNDEsIDI0OCwgMjAwLCAyMDYsIDMsIDIyNywgMTYsIDIyMSwgNTcsIAorICAgIDIxNSwgMjUyLCAxODUsIDcyLCAxNDEsIDIwNiwgMywgMjI3LCAxNiwgMjEwLCAyMjksIDIxNSwgMjUyLCAxODUsIDcyLCAKKyAgICAxNDEsIDIxNywgMTEzLCAyMTUsIDI1MSwgNzIsIDE0MSwgMjQ5LCAxMDQsIDIwNiwgMywgMjI3LCAxNSwgNzIsIDE0MSwgCisgICAgMjQ5LCAyMDQsIDIxNSwgMTU0LCAyMDYsIDMsIDIyNywgMTUsIDcyLCAxNDEsIDIzMywgNiwgMjEwLCAyMjgsIDcyLCAxNDEsIAorICAgIDI0NSwgMjM0LCAyMTAsIDIyOSwgMjQ5LCAxMDMsIDcyLCAxNDEsIDIxNSwgMjUxLCA3MiwgMTQxLCAyMjMsIDExNSwgMjE1LCAKKyAgICAyNTEsIDcyLCAxNDEsIDIxMCwgMjI5LCAyMTUsIDI1MSwgNzIsIDE0MSwgMjIzLCAxMTUsIDIxMCwgMjI5LCAyMTUsIDI1MSwgCisgICAgNzIsIDE0MSwgMjE4LCAxNTEsIDI0OCwgNzEsIDIxNCwgMTEwLCAyMTUsIDI1MSwgNzIsIDE0MSwgMjE4LCAyMTYsIDIzOSwgCisgICAgMjQ2LCAyMTUsIDI1MSwgNzIsIDE0MSwgMjQ4LCAyMDAsIDI1NSwgMiwgMjE4LCA1NCwgMjI3LCAxMjAsIDE1MiwgMjQ4LCAKKyAgICAyMjYsIDcyLCAxNDEsIDIzOSwgMjE1LCAyMTAsIDIyOCwgNzIsIDIyOSwgMTMyLCAzLCAyNDgsIDEwOCwgMjE4LCA1MywgNzIsIAorICAgIDIyOSwgMTMyLCAzLCAyMjksIDI0NiwgMjE4LCA1MywgNzIsIDI1MSwgMjA1LCAzLCAyMTYsIDUsIDI0MCwgMTczLCAyNTUsIAorICAgIDMsIDIxOCwgNTMsIDcyLCAyNTEsIDIwNSwgMywgMjU1LCAwLCAxNzksIDcyLCAyNTEsIDIwNSwgMywgMjE3LCA4NywgMjEwLCAKKyAgICAyMjMsIDcyLCAzLCAyMTksIDUzLCAyNDUsIDY1LCAyNDAsIDE3MiwgNzIsIDMsIDIxOSwgNTMsIDI0NSwgNjUsIDI0MCwgMjEsIAorICAgIDcyLCAzLCAyMTksIDUzLCAyNDUsIDY1LCAyMzksIDIxNiwgNzIsIDMsIDIxOSwgNTMsIDIyNSwgMjI1LCAyNDAsIDE3MiwgCisgICAgNzIsIDMsIDIxOSwgNTMsIDIyNSwgMjI1LCAyNDAsIDIxLCA3MiwgMywgMjE5LCA1MywgMjQ1LCA2NSwgMjE5LCA1MywgMjI1LCAKKyAgICAyMjQsIDcyLCAxOCwgMjA1LCA4NSwgNzIsIDE4LCAxMDIsIDcyLCAxOCwgMTA1LCA3MiwgMTgsIDE0MiwgNzIsIDE4LCAxMzksIAorICAgIDcyLCAxOCwgMTY4LCA3MiwgMTgsIDE4NCwgNzIsIDE4LCAxOTUsIDcyLCAxOCwgMTkzLCA3MiwgMTgsIDIwMCwgNzIsIDE4LCAKKyAgICAxNjAsIDEwMiwgNzIsIDE4LCAxNjAsIDEwNSwgNzIsIDE4LCAxNjAsIDE0MiwgNzIsIDE4LCAxNjAsIDEzOSwgNzIsIDE4LCAKKyAgICAxNjAsIDE2OCwgNzIsIDE4LCAxNjAsIDE4NCwgNzIsIDE4LCAxNjAsIDE5NSwgNzIsIDE4LCAxNjAsIDE5MywgNzIsIDE4LCAKKyAgICAxNjAsIDIwMCwgNzIsIDE4LCAxNjAsIDIwNSwgODUsIDcyLCAxNDEsIDI0OSwgMTA2LCAyMTgsIDUzLCA3MiwgMTQxLCAyMjUsIAorICAgIDY4LCAyNDksIDM2LCAyMjMsIDEyNiwgMjA1LCAyMSwgNzIsIDE0MSwgMjQ4LCAyMDAsIDI1NSwgMiwgMjE4LCA1NCwgMjQ5LCAKKyAgICAzNywgMjI2LCAyMjUsIDI0OCwgMjI2LCA3MiwgMTQxLCAyMjUsIDY4LCAyNDksIDM2LCAyMTYsIDYsIDIxOCwgNTMsIDcyLCAKKyAgICAxNDEsIDI0OCwgODMsIDIyNywgMTUsIDcyLCAxNDEsIDIxMCwgMjQ0LCAyNTQsIDI1NSwgNzIsIDE0MSwgMjM5LCAxOTgsIAorICAgIDIxOCwgNTQsIDIzOSwgMTU4LCA3MiwgMTQxLCAyMzksIDE5OCwgMjE4LCA1NCwgMjM5LCAxNjQsIDcyLCAxNDEsIDI1MiwgCisgICAgMTE1LCAyMzEsIDE1NywgMjM5LCAxNTgsIDcyLCAxNDEsIDI1MiwgMTE1LCAyMzEsIDE1NywgMjM5LCAxNjQsIDcyLCAzLCAKKyAgICAyMDYsIDcxLCAyMTAsIDIyNywgNzIsIDMsIDIyNywgMjAwLCAyMTAsIDIyNywgNzIsIDEsIDE3MiwgNzIsIDEsIDIzMSwgCisgICAgMTY3LCA3MiwgMSwgMjQwLCAyNDQsIDcyLCAxLCAyNDAsIDk5LCA3MiwgMSwgMjI1LCA3NywgNzIsIDEsIDI0OSwgMSwgNzIsIAorICAgIDEsIDI0OCwgMTEwLCA3MiwgMSwgMjMyLCAyMDAsIDcyLCAxLCAyMjMsIDE0NCwgNzIsIDEsIDIxMCwgMjA4LCA3MiwgMSwgCisgICAgMjEwLCAxOTYsIDcyLCAxLCAyNDYsIDU0LCA3MiwgMSwgMjQ2LCAzOCwgNzIsIDEsIDIyNCwgMTAzLCA3MiwgMSwgMjEyLCAKKyAgICAyMTksIDcyLCAxLCAyMTIsIDU2LCA3MiwgMSwgMjQ2LCAxNDUsIDcyLCAxLCAyNDUsIDE5MiwgNzIsIDEsIDE5OSwgNzIsIDEsIAorICAgIDE3OSwgNzIsIDEsIDIyMSwgOTMsIDcyLCAxLCAyNTAsIDE4MywgNzIsIDEsIDI1MCwgMCwgNzIsIDEsIDE4NSwgNzIsIDEsIAorICAgIDIxMCwgMjQzLCA3MiwgMSwgMjEwLCAyMzMsIDcyLCAxLCAyNDMsIDE5NiwgNzIsIDEsIDI0MywgMTkwLCA3MiwgMSwgMjA3LCAKKyAgICA5NiwgNzIsIDEsIDIwNSwgODEsIDcyLCAxLCAyMDUsIDExNiwgNzIsIDEsIDI1NSwgNSwgNzIsIDEsIDE5MCwgNzIsIDEsIAorICAgIDIxOSwgMTEzLCA3MiwgMSwgMjMwLCAxNDEsIDcyLCAxLCAyMTYsIDIsIDcyLCAxLCAyMTQsIDk2LCA3MiwgMSwgMjE3LCAKKyAgICAxOTksIDcyLCAxLCAxNTUsIDcyLCAxLCA2MiwgNzIsIDEsIDIzMCwgMjUwLCA3MiwgMSwgMjQxLCAyMDAsIDIxOSwgMTEzLCAKKyAgICA3MiwgMSwgMjMxLCA3MiwgNzIsIDEsIDIxOCwgODksIDcyLCAyMiwgMywgMjUzLCAxNjQsIDcyLCAyMiwgMywgNzQsIDcyLCAKKyAgICAyMiwgMywgMjMzLCAxMDIsIDcyLCAyMiwgMywgNzEsIDcyLCAyMiwgMywgMjA5LCAxNjIsIDcyLCAyMiwgMywgMTE1LCAxMzcsIAorICAgIDcyLCAyMiwgMywgMTE1LCAyMTgsIDkwLCA3MiwgMjIsIDMsIDExNSwgMTQ5LCA3MiwgMjIsIDMsIDExNSwgMjI5LCAxNzMsIAorICAgIDcyLCAyMiwgMywgNzUsIDcyLCAyMiwgMywgMjQzLCAxMDQsIDcyLCAyMiwgMywgNzYsIDcyLCAyMiwgMywgMjIyLCAxNTIsIAorICAgIDcyLCAzLCAyMTgsIDEzNSwgMjEzLCAyMDQsIDIyNSwgNzgsIDIxOCwgMTI0LCA3MiwgMywgMjE4LCAxMjksIDI1MCwgNjIsIAorICAgIDcyLCAyMiwgMywgMjE4LCAyMjQsIDc0LCA3MiwgMjIsIDMsIDIxOCwgMjI0LCAyMzMsIDEwMiwgNzIsIDMsIDIyMywgMTI2LCAKKyAgICAyMDUsIDIyLCAyMjUsIDIzMywgMjQ2LCAxNDUsIDcyLCAzLCAyMTQsIDIwNywgMjMwLCA2MCwgNzIsIDE0MSwgMjM5LCAxMjMsIAorICAgIDcyLCAxNDEsIDIyMiwgMTYsIDcyLCAzLCAyMzAsIDYzLCAyMTgsIDUzLCA3MiwgMywgMjA2LCA3NiwgMjE4LCA1MywgNzIsIAorICAgIDMsIDIzMCwgNjQsIDIxMCwgMjQ0LCAyNDgsIDIyNiwgNzIsIDMsIDIyNywgMTIzLCAyNDgsIDIyNiwgNzIsIDMsIDIzOSwgCisgICAgMjE5LCAyNDgsIDIyNywgMjE4LCAyMTQsIDcyLCAzLCAyMzksIDIxOSwgMjI3LCAxMTMsIDIxOCwgMjE0LCA3MiwgMywgMjMzLCAKKyAgICAyLCAyMjcsIDEyMywgMjQ4LCAyMjYsIDcyLCAyMTMsIDE5MSwgMywgMjMwLCA2NCwgMjEwLCAyNDQsIDI0OCwgMjI2LCA3MiwgCisgICAgMjEzLCAxOTEsIDMsIDIyNywgMTIzLCAyNDgsIDIyNiwgNzIsIDIxMywgMTkxLCAzLCAyMzMsIDIsIDIyNywgMTIzLCAyNDgsIAorICAgIDIyNiwgNzIsIDIxMywgMTkxLCAxLCAxNzIsIDcyLCAyMTMsIDE5MSwgMSwgMjMxLCAxNjcsIDcyLCAyMTMsIDE5MSwgMSwgCisgICAgMjQwLCAyNDQsIDcyLCAyMTMsIDE5MSwgMSwgMjQwLCA5OSwgNzIsIDIxMywgMTkxLCAxLCAyMjUsIDc3LCA3MiwgMjEzLCAKKyAgICAxOTEsIDEsIDI0OSwgMSwgNzIsIDIxMywgMTkxLCAxLCAyNDgsIDExMCwgNzIsIDIxMywgMTkxLCAxLCAyMzIsIDIwMCwgNzIsIAorICAgIDIxMywgMTkxLCAxLCAyMjMsIDE0NCwgNzIsIDIxMywgMTkxLCAxLCAyMTAsIDIwOCwgNzIsIDIxMywgMTkxLCAxLCAyMTAsIAorICAgIDE5NiwgNzIsIDIxMywgMTkxLCAxLCAyNDYsIDU0LCA3MiwgMjEzLCAxOTEsIDEsIDI0NiwgMzgsIDcyLCAyMTMsIDE5MSwgMSwgCisgICAgMjI0LCAxMDMsIDcyLCAyMTMsIDE5MSwgMSwgMjEyLCAyMTksIDcyLCAyMTMsIDE5MSwgMSwgMjEyLCA1NiwgNzIsIDIxMywgCisgICAgMTkxLCAxLCAyNDYsIDE0NSwgNzIsIDIxMywgMTkxLCAxLCAyNDUsIDE5MiwgNzIsIDIxMywgMTkxLCAxLCAxOTksIDcyLCAKKyAgICAyMTMsIDE5MSwgMSwgMTc5LCA3MiwgMjEzLCAxOTEsIDEsIDIyMSwgOTMsIDcyLCAyMTMsIDE5MSwgMSwgMjUwLCAxODMsIAorICAgIDcyLCAyMTMsIDE5MSwgMSwgMjUwLCAwLCA3MiwgMjEzLCAxOTEsIDEsIDE4NSwgNzIsIDIxMywgMTkxLCAxLCAyMTAsIDI0MywgCisgICAgNzIsIDIxMywgMTkxLCAxLCAyMTAsIDIzMywgNzIsIDIxMywgMTkxLCAxLCAyNDMsIDE5NiwgNzIsIDIxMywgMTkxLCAxLCAKKyAgICAyNDMsIDE5MCwgNzIsIDIxMywgMTkxLCAxLCAyMDcsIDk2LCA3MiwgMjEzLCAxOTEsIDEsIDIwNSwgODEsIDcyLCAyMTMsIAorICAgIDE5MSwgMSwgMjA1LCAxMTYsIDcyLCAyMTMsIDE5MSwgMSwgMjU1LCA1LCA3MiwgMjEzLCAxOTEsIDEsIDE5MCwgNzIsIDIxMywgCisgICAgMTkxLCAxLCAyMTksIDExMywgNzIsIDIxMywgMTkxLCAxLCAyMzAsIDE0MSwgNzIsIDIxMywgMTkxLCAxLCAyMTYsIDIsIDcyLCAKKyAgICAyMTMsIDE5MSwgMSwgMjE0LCA5NiwgNzIsIDIxMywgMTkxLCAxLCAyMTcsIDE5OSwgNzIsIDIxMywgMTkxLCAxLCAxNTUsIAorICAgIDcyLCAyMTMsIDE5MSwgMSwgNjIsIDcyLCAyMTMsIDE5MSwgMSwgMjMwLCAyNTAsIDcyLCAyMTMsIDE5MSwgMSwgMjQxLCAKKyAgICAyMDAsIDIwNywgOTYsIDcyLCAyMTMsIDE5MSwgMSwgMjQxLCAyMDAsIDE5MCwgNzIsIDIxMywgMTkxLCAxLCAyNDEsIDIwMCwgCisgICAgMjE5LCAxMTMsIDcyLCAyMzAsIDIzNywgMjE4LCA1MSwgMjMxLCAxNjcsIDcyLCAyMzAsIDIzNywgMjE4LCA1MSwgMjMxLCAKKyAgICAxNjgsIDI0OSwgMzcsIDIyNiwgMjI1LCAyNDgsIDIyNiwgNzIsIDI0OCwgMjE0LCAzLCA3NywgMjUwLCA1NSwgNzIsIDI0OCwgCisgICAgMjE0LCAzLCAxNDcsIDI1MCwgNTUsIDcyLCAyNDgsIDIxNCwgMywgMjQ4LCAyMTUsIDIxMiwgMTI5LCA3MiwgMjQ4LCAyMTQsIAorICAgIDMsIDIxNywgMTEyLCAyNTUsIDQsIDcyLCAxNiwgMjQzLCAyNTAsIDI0OSwgMTAxLCA3MiwgMTYsIDIxOSwgNTIsIDIxOCwgCisgICAgMTM2LCA3MiwgMTYsIDIyMiwgMzksIDI0MCwgMTcxLCA3MiwgMTYsIDIxOSwgNTIsIDIxOCwgMTM3LCAyMTgsIDIxNiwgMjM5LCAKKyAgICAyNDUsIDcyLCAxNiwgMjIxLCA1NywgMTc5LCA3MiwgMTYsIDIyNCwgNTEsIDI0OSwgMTAxLCA3MiwgMTYsIDIyNCwgNTEsIAorICAgIDI0OSwgMTAyLCAyMjMsIDExNSwgMjU1LCAxLCA3MiwgMTYsIDIyNCwgNTEsIDI0OSwgMTAyLCAyMzksIDIxNywgMjU1LCAxLCAKKyAgICA3MiwgMTYsIDIyNCwgNTEsIDI0OSwgMTAyLCAyNDksIDM3LCAyNTUsIDEsIDcyLCAzLCAyMTksIDUzLCAyMjUsIDIyNSwgCisgICAgMjE5LCA1MywgMjQ1LCA2NCwgNzIsIDMsIDIxOSwgNTMsIDIyNSwgMjI1LCAyMzksIDIxNiwgNzIsIDE0MSwgMjQ5LCAxMDUsIAorICAgIDIxNSwgMTU0LCAyNDAsIDYyLCAyMjcsIDE2LCAyMTgsIDIxNSwgNzIsIDE0MSwgMjI2LCAxODMsIDIwNiwgMywgMjQwLCA2MiwgCisgICAgMjI3LCAxNiwgMjE4LCAyMTUsIDcyLCAxNDEsIDIyMywgMTE1LCAyMTAsIDIyOCwgNzIsIDE0MSwgNzgsIDI0OSwgMTI4LCAKKyAgICAyMTgsIDEyNiwgMjA2LCAzLCAyMjcsIDE2LCAyMjcsIDEyMSwgMTg1LCA3MiwgMTQxLCAyNDcsIDE4OCwgMjQ5LCAxMjgsIAorICAgIDIxOCwgMTI2LCAyMDYsIDMsIDIyNywgMTYsIDIxNiwgOSwgMTg1LCAyMTgsIDE2NiwgMjEzLCAxMTQsIDUzLCAyMzAsIDQ1LCAKKyAgICAyMTMsIDExNCwgNTMsIDIxOCwgMTY2LCAyMTMsIDExNCwgMywgMiwgMjQ1LCAyMSwgMjMwLCA0NSwgMjEzLCAxMTQsIDMsIDIsIAorICAgIDI0NSwgMjEsIDcyLCAxNDEsIDIzMCwgNTUsIDIyNywgMTI0LCAyMTgsIDUzLCA3MiwgMTQxLCAyMTEsIDc2LCAyMjcsIDEyNCwgCisgICAgMjE4LCA1MywgNjYsIDEsIDE3MiwgNjYsIDEsIDIzMSwgMTY3LCA2NiwgMSwgMjQwLCAyNDQsIDY2LCAxLCAyNDAsIDk5LCAKKyAgICA2NiwgMSwgMjI1LCA3NywgNjYsIDEsIDI0OSwgMSwgNjYsIDEsIDI0OCwgMTEwLCA2NiwgMSwgMjMyLCAyMDAsIDY2LCAxLCAKKyAgICAyMzIsIDE3MCwgNjYsIDEsIDIyMywgMTQ0LCA2NiwgMSwgMjI0LCA2OSwgNjYsIDEsIDIxMCwgMjA4LCA2NiwgMSwgMjEwLCAKKyAgICAxOTYsIDY2LCAxLCAyNDYsIDU0LCA2NiwgMSwgMjQ2LCAzOCwgNjYsIDEsIDIyNCwgMTAzLCA2NiwgMSwgMjEyLCAyMTksIAorICAgIDY2LCAxLCAyMTIsIDU2LCA2NiwgMSwgMjQ2LCAxNDUsIDY2LCAxLCAyNDUsIDE5MiwgNjYsIDEsIDE5OSwgNjYsIDEsIDE3OSwgCisgICAgNjYsIDEsIDIyMSwgOTMsIDY2LCAxLCAyNTAsIDE4MywgNjYsIDEsIDI1MCwgMCwgNjYsIDEsIDE4NSwgNjYsIDEsIDE5MCwgCisgICAgNjYsIDEsIDIxOSwgMTEzLCA2NiwgMSwgMjMwLCAxNDEsIDY2LCAxLCAyMDcsIDk2LCA2NiwgMSwgMjE3LCAxOTksIDY2LCAxLCAKKyAgICAxNTUsIDY2LCAxLCAyMjksIDE3MiwgNjYsIDEsIDYyLCA2NiwgMSwgMjE1LCAyMzgsIDYyLCA2NiwgMSwgNzQsIDY2LCAxLCAKKyAgICAyMzMsIDEwMiwgNjYsIDEsIDcxLCA2NiwgMSwgMjA5LCAxNjIsIDY2LCAxLCA3NSwgNjYsIDEsIDIyNiwgMTY5LCA3NSwgNjYsIAorICAgIDEsIDc2LCA2NiwgMSwgMjUxLCAxODQsIDY2LCAyMiwgMywgMjEyLCAxNzgsIDI1MywgMTY0LCA2NiwgMjIsIDMsIDI1MywgCisgICAgMTY0LCA2NiwgMjIsIDMsIDc0LCA2NiwgMjIsIDMsIDIzMywgMTAyLCA2NiwgMjIsIDMsIDcxLCA2NiwgMjIsIDMsIDIwOSwgCisgICAgMTYyLCA2NiwgMjIsIDMsIDc1LCA2NiwgMjIsIDMsIDI1MiwgMjA1LCA2NiwgMjIsIDMsIDIyNiwgMTY5LCAyMzMsIDEwMiwgCisgICAgNjYsIDIyLCAzLCAyMjYsIDE2OSwgNzYsIDY2LCAyMiwgMywgMTc0LCA1MiwgNjYsIDMsIDI1MiwgNzMsIDY2LCAzLCA2NywgCisgICAgNTUsIDY2LCAzLCAyMDgsIDE4MywgNjYsIDMsIDIwOCwgMTg4LCA2NiwgMywgMjUxLCAyMjksIDY2LCAxMDcsIDMsIDE2OSwgCisgICAgMTkwLCA2NiwgMTA3LCAzLCAxNjksIDIxOSwgMTEzLCA2NiwgMTA3LCAzLCAxNjksIDIwNywgOTYsIDY2LCAxMDcsIDMsIAorICAgIDE2OSwgMTU1LCA2NiwgMSwgMjM5LCAyMzIsIDIxNywgMTk5LCA2NiwgMTgsIDIwNSwgODUsIDY2LCAxOCwgMTAyLCA2NiwgCisgICAgMTgsIDEwNSwgNjYsIDE4LCAxNDIsIDY2LCAxOCwgMTM5LCA2NiwgMTgsIDE2OCwgNjYsIDE4LCAxODQsIDY2LCAxOCwgMTk1LCAKKyAgICA2NiwgMTgsIDE5MywgNjYsIDE4LCAyMDAsIDY2LCAzLCAyMjksIDE4MCwgMjE3LCA3NiwgNjYsIDMsIDIxNywgNzYsIDY2LCAKKyAgICAxNiwgMjI5LCAxNDEsIDY2LCAxNiwgMjQ3LCAxNDksIDY2LCAxNiwgMjUyLCAyMjQsIDY2LCAxNiwgMjQwLCAxNTQsIDY2LCAKKyAgICAxLCAyMTYsIDIsIDY2LCAxLCAyMTQsIDk2LCA2NiwgMSwgMTE1LCAxMzcsIDY2LCAxLCAxMTUsIDIxOCwgOTAsIDY2LCAxLCAKKyAgICAxMTUsIDE0OSwgNjYsIDEsIDExNSwgMjI5LCAxNzMsIDY2LCAyMiwgMywgMTE1LCAxMzcsIDY2LCAyMiwgMywgMTE1LCAyMTgsIAorICAgIDkwLCA2NiwgMjIsIDMsIDExNSwgMTQ5LCA2NiwgMjIsIDMsIDExNSwgMjI5LCAxNzMsIDY2LCAxLCAyMjYsIDE2OSwgMjI1LCAKKyAgICA3NywgNjYsIDEsIDIyNiwgMTY5LCAyMzIsIDE3MCwgNjYsIDEsIDIyNiwgMTY5LCAyNTAsIDk3LCA2NiwgMSwgMjI2LCAxNjksIAorICAgIDI1MCwgOTIsIDY2LCAxMDcsIDMsIDIyNiwgMTY5LCAxNjksIDE5OSwgNjYsIDEwNywgMywgMjI2LCAxNjksIDE2OSwgMTg1LCAKKyAgICA2NiwgMTA3LCAzLCAyMjYsIDE2OSwgMTY5LCAyMzAsIDE0MSwgNjYsIDEsIDIxNiwgOCwgMjMyLCA0LCAyMTYsIDIsIDY2LCAKKyAgICAyMiwgMywgMjE2LCA4LCAyMzIsIDQsIDI0MiwgMTkyLCA2NiwgMTM1LCAxNDEsIDIxNiwgOCwgMjMyLCA0LCAyMzksIDgyLCAKKyAgICA2NiwgMTM1LCAxNDEsIDIxNiwgOCwgMjMyLCA0LCAyMzEsIDIyNSwgMjIxLCA2NiwgNjYsIDEsIDIwNywgMzQsIDIyMCwgMzksIAorICAgIDIzMiwgNCwgMjEyLCA1NiwgNjYsIDEsIDIwNywgMzQsIDIyMCwgMzksIDIzMiwgNCwgMjIwLCA0NSwgNjYsIDIyLCAzLCAKKyAgICAyMDcsIDM0LCAyMjAsIDM5LCAyMzIsIDQsIDI0MiwgMTkyLCA2NiwgMjIsIDMsIDIwNywgMzQsIDIyMCwgMzksIDIzMiwgNCwgCisgICAgMjEwLCAzLCA2NiwgMywgMjA3LCAzNCwgMjIwLCAzOSwgMjMyLCA0LCAyMTEsIDExNywgNjYsIDMsIDIwNywgMzQsIDIyMCwgCisgICAgMzksIDIzMiwgNCwgMjExLCAxMTYsIDY2LCAzLCAyMDcsIDM0LCAyMjAsIDM5LCAyMzIsIDQsIDIxMSwgMTE1LCA2NiwgMywgCisgICAgMjA3LCAzNCwgMjIwLCAzOSwgMjMyLCA0LCAyMTEsIDExNCwgNjYsIDMsIDIwNywgMzQsIDIyMCwgMzksIDIzMiwgNCwgMjExLCAKKyAgICAxMTMsIDY2LCAxLCAyNDMsIDExNSwgMjIwLCAzOSwgMjMyLCA0LCAyMjQsIDEwMywgNjYsIDEsIDI0MywgMTE1LCAyMjAsIAorICAgIDM5LCAyMzIsIDQsIDIwNSwgMTc2LCA2NiwgMSwgMjQzLCAxMTUsIDIyMCwgMzksIDIzMiwgNCwgMjQwLCA2NCwgNjYsIDIyLCAKKyAgICAzLCAyNDAsIDE2NiwgMjMyLCA0LCA3NCwgNjYsIDIyLCAzLCAyMzEsIDIzMCwgMjIyLCAyMDYsIDY2LCAyMiwgMywgMjMxLCAKKyAgICAyMzAsIDcxLCA2NiwgMjIsIDMsIDIzMSwgMjMwLCAyNDMsIDEwNCwgNjYsIDEsIDIxNSwgMjM4LCAxNzIsIDY2LCAxLCAyMTUsIAorICAgIDIzOCwgMjMxLCAxNjcsIDY2LCAxLCAyMTUsIDIzOCwgMjQwLCAyNDQsIDY2LCAxLCAyMTUsIDIzOCwgMjQ5LCAxLCA2NiwgMSwgCisgICAgMjE1LCAyMzgsIDIwNSwgMTE2LCA2NiwgMSwgMjE1LCAyMzgsIDIyMywgMTQ0LCA2NiwgMSwgMjE1LCAyMzgsIDI0NiwgMTQ1LCAKKyAgICA2NiwgMSwgMjE1LCAyMzgsIDE5OSwgNjYsIDEsIDIxNSwgMjM4LCAyMjEsIDkzLCA2NiwgMSwgMjE1LCAyMzgsIDI0MiwgNzMsIAorICAgIDY2LCAxLCAyMTUsIDIzOCwgMjUwLCAxODMsIDY2LCAxLCAyMTUsIDIzOCwgMjEyLCA1NiwgNjYsIDEsIDIxNSwgMjM4LCAKKyAgICAxNTUsIDY2LCAxMDcsIDMsIDIxNSwgMjM4LCAxNjksIDIwNywgOTYsIDY2LCAyMiwgMywgMjE1LCAyMzgsIDI1MywgMTY0LCAKKyAgICA2NiwgMjIsIDMsIDIxNSwgMjM4LCA3NSwgNjYsIDIyLCAzLCAyMTUsIDIzOCwgMTc0LCA1MiwgNjYsIDIyLCAzLCAyMTUsIAorICAgIDIzOCwgNDIsIDIwNiwgMTIzLCA2NiwgMywgMjE1LCAyMzgsIDIxMSwgMTE2LCA2NiwgMywgMjE1LCAyMzgsIDIxMSwgMTE1LCAKKyAgICA2NiwgMywgMjE1LCAyMzgsIDIxMSwgMTEzLCA2NiwgMywgMjE1LCAyMzgsIDIxMSwgMTEyLCA2NiwgMywgMjE1LCAyMzgsIAorICAgIDI0NywgODIsIDIxMSwgMTE2LCA2NiwgMywgMjE1LCAyMzgsIDI0NywgODIsIDIxMSwgMTE1LCA2NiwgMywgMjE1LCAyMzgsIAorICAgIDI0NywgODIsIDI0MywgNDQsIDIxMSwgMTE4LCA2NiwgMSwgMjE4LCAzNywgMjIyLCAyMywgMjQyLCA3MywgNjYsIDMsIDIxOCwgCisgICAgMzcsIDIyMiwgMjMsIDIxMSwgMTEzLCA2NiwgMjE1LCAyMzgsIDE4LCAyMDUsIDg1LCA2NiwgMjE1LCAyMzgsIDE4LCAxMDIsIAorICAgIDY2LCAyMTUsIDIzOCwgMTgsIDEwNSwgNjYsIDIxNSwgMjM4LCAxOCwgMTQyLCA2NiwgMjE1LCAyMzgsIDE4LCAxMzksIDY2LCAKKyAgICAyMTUsIDIzOCwgMTgsIDE2OCwgNjYsIDIxNSwgMjM4LCAxOCwgMTg0LCA2NiwgMjE1LCAyMzgsIDE4LCAxOTUsIDY2LCAyMTUsIAorICAgIDIzOCwgMTgsIDE5MywgNjYsIDIxNSwgMjM4LCAxOCwgMjAwLCA2NiwgMywgMjMxLCAxNjAsIDIxMSwgMTE3LCA2NiwgMywgCisgICAgMjMxLCAxNjAsIDIxMSwgMTE1LCA2NiwgMjIsIDMsIDI1MiwgMTkzLCA2MiwgNjYsIDIyLCAzLCAyNTIsIDE5MywgMjUyLCAKKyAgICAyMDUsIDY2LCAxNiwgMjE1LCAyMzgsIDEwMiwgNjYsIDE2LCAyMTUsIDIzOCwgMjQyLCAxNjcsIDEwOCwgNiwgMSwgMjUyLCAKKyAgICAxMjIsIDEwOCwgNiwgMSwgMjUwLCAxNDAsIDEwOCwgNiwgMSwgMjQwLCAyMTQsIDEwOCwgNiwgMSwgMjQ1LCAzMSwgMTA4LCAKKyAgICA2LCAxLCAyNDMsIDQxLCAxMDgsIDYsIDEsIDIwOCwgMTk3LCAxMDgsIDYsIDEsIDIwNSwgODgsIDEwOCwgNiwgMSwgMjEyLCAKKyAgICAxNzQsIDEwOCwgNiwgMSwgMjMzLCA2OCwgMTA4LCA2LCAxLCAyMzIsIDI3LCAxMDgsIDYsIDEsIDIzMCwgODIsIDEwOCwgNiwgCisgICAgMSwgMjI3LCAyMjEsIDEwOCwgNiwgMSwgMjI1LCAyMDAsIDEwOCwgNiwgMSwgMjIyLCAxNjUsIDEwOCwgNiwgMSwgMjIxLCAKKyAgICAyMzEsIDEwOCwgNiwgMSwgMjA1LCA3NywgMTA4LCA2LCAxLCAyMTksIDk1LCAxMDgsIDYsIDEsIDIxNywgMTUxLCAxMDgsIDYsIAorICAgIDEsIDIxMiwgMTYyLCAxMDgsIDYsIDEsIDIwOSwgMjM0LCAxMDgsIDYsIDEsIDIyMSwgODUsIDEwOCwgNiwgMSwgMjMxLCAKKyAgICAxNTUsIDEwOCwgNiwgMSwgMjQwLCA5MCwgMTA4LCA2LCAxLCAyMjAsIDQsIDEwOCwgNiwgMSwgMjE1LCAxNzEsIDEwOCwgNiwgCisgICAgMSwgMjQ4LCA0NSwgMTA4LCA2LCAxLCAyNDgsIDIyNiwgMTA4LCA2LCAxLCAyMzIsIDE1NCwgMTA4LCA2LCAxLCAyNDcsIAorICAgIDI0MCwgMTA4LCA2LCAxLCAyNDgsIDk1LCAxMDgsIDYsIDEsIDIwNiwgMTc5LCAxMDgsIDYsIDEsIDIzMiwgMTY3LCAxMDgsIAorICAgIDYsIDEsIDIzOSwgMTM4LCAxMDgsIDYsIDEsIDIzOSwgNzEsIDEwOCwgNiwgMSwgMjM5LCA2LCAxMDgsIDYsIDEsIDIwNywgCisgICAgNTEsIDEwOCwgNiwgMSwgMjM5LCA5NSwgMTA4LCA2LCAxLCAyMzgsIDE0NiwgMTA4LCA2LCAxLCAyMDUsIDI0OSwgMTA4LCA2LCAKKyAgICAxLCAyNTIsIDIzNywgMTA4LCAxLCAyNTIsIDEyMiwgMTA4LCAxLCAyNTAsIDE0MCwgMTA4LCAxLCAyNDAsIDIxNCwgMTA4LCAKKyAgICAxLCAyNDUsIDMxLCAxMDgsIDEsIDI0MywgNDEsIDEwOCwgMSwgMjA4LCAxOTcsIDEwOCwgMSwgMjA1LCA4OCwgMTA4LCAxLCAKKyAgICAyMTIsIDE3NCwgMTA4LCAxLCAyMzMsIDY4LCAxMDgsIDEsIDIzMiwgMjcsIDEwOCwgMSwgMjMwLCA4MiwgMTA4LCAxLCAyMjcsIAorICAgIDIyMSwgMTA4LCAxLCAyMjUsIDIwMCwgMTA4LCAxLCAyMjIsIDE2NSwgMTA4LCAxLCAyMjEsIDIzMSwgMTA4LCAxLCAyMDUsIAorICAgIDc3LCAxMDgsIDEsIDIxOSwgOTUsIDEwOCwgMSwgMjE3LCAxNTEsIDEwOCwgMSwgMjEyLCAxNjIsIDEwOCwgMSwgMjA5LCAKKyAgICAyMzQsIDEwOCwgMSwgMjIxLCA4NSwgMTA4LCAxLCAyMzEsIDE1NSwgMTA4LCAxLCAyNDAsIDkwLCAxMDgsIDEsIDIyMCwgNCwgCisgICAgMTA4LCAxLCAyMTUsIDE3MSwgMTA4LCAxLCAyNDgsIDQ1LCAxMDgsIDEsIDI0OCwgMjI2LCAxMDgsIDEsIDIzMiwgMTU0LCAKKyAgICAxMDgsIDEsIDI0NywgMjQwLCAxMDgsIDEsIDI0OCwgOTUsIDEwOCwgMSwgMjA2LCAxNzksIDEwOCwgMSwgMjMyLCAxNjcsIAorICAgIDEwOCwgMSwgMjM5LCAxMzgsIDEwOCwgMSwgMjM5LCA3MSwgMTA4LCAxLCAyMzksIDYsIDEwOCwgMSwgMjA3LCA1MSwgMTA4LCAKKyAgICAxLCAyMzksIDk1LCAxMDgsIDEsIDIzOCwgMTQ2LCAxMDgsIDEsIDI0MSwgMjUwLCAxMDgsIDEsIDIwNSwgMjQ5LCAxMDgsIDEsIAorICAgIDI0MywgNTYsIDEwOCwgMSwgMjAxLCAyNDAsIDIxNCwgMTA4LCAxLCAyNTIsIDIwMCwgMTA4LCAyMjEsIDIyOSwgMjE2LCAzOSwgCisgICAgNjUsIDEsIDEwOCwgMjI1LCAyMDAsIDEwOCwgMSwgMjUyLCAyMzcsIDEwOCwgMSwgMjM5LCA5NCwgNTMsIDEwOCwgMSwgMjMwLCAKKyAgICAxMzIsIDUzLCAyNSwgMTEzLCAyMzEsIDg0LCAyNSwgMTEzLCAyMTQsIDg4LCAyNSwgMTEzLCAyMjQsIDIyMywgMjUsIDExMywgCisgICAgMjExLCAxOTMsIDI1LCAxMTMsIDIxNCwgNzcsIDI1LCAxMTMsIDIxOCwgMTk4LCAyNSwgMTEzLCAyMjYsIDI0MCwgMjUsIAorICAgIDExMywgMjIxLCAzOSwgMjUsIDExMywgMjE0LCA4NSwgMjUsIDExMywgMjE1LCAzMywgMjUsIDExMywgMjE0LCA4MiwgMjUsIAorICAgIDExMywgMjMzLCAxMjUsIDI1LCAxMTMsIDI0NywgMjQ2LCAyNSwgMTEzLCAyMTQsIDkyLCAyNSwgMTEzLCAyNDgsIDU0LCAyNSwgCisgICAgMTEzLCAyMzEsIDE0MywgMjUsIDExMywgMjEyLCAxNSwgMjUsIDExMywgMjIxLCA3NiwgMjUsIDExMywgMjM5LCAzLCAyNSwgCisgICAgMTEzLCAyMjQsIDIxOSwgMjUsIDExMywgMjE0LCA4NiwgMjUsIDExMywgMjI0LCAyMTMsIDI1LCAxMTMsIDIyNCwgMjE3LCAKKyAgICAyNSwgMTEzLCAyMTEsIDE5MCwgMjUsIDExMywgMjE4LCAxODYsIDI1LCAxMTMsIDIxNCwgODQsIDI1LCAxMTMsIDIxOCwgCisgICAgMTk2LCAyNSwgMTEzLCAyMzIsIDEwLCAyNSwgMTEzLCAyMjYsIDIzMywgMjUsIDExMywgMjMyLCAxMywgMjUsIDExMywgMjIxLCAKKyAgICAzNCwgMjUsIDExMywgMjIxLCAzMiwgMjUsIDExMywgMjIxLCAyMCwgMjUsIDExMywgMjIxLCAyOCwgMjUsIDExMywgMjIxLCAKKyAgICAyNiwgMjUsIDExMywgMjIxLCAyMywgMjUsIDExMywgMjIxLCAyNSwgMjUsIDExMywgMjIxLCAyMiwgMjUsIDExMywgMjIxLCAKKyAgICAyNywgMjUsIDExMywgMjIxLCAzNywgMjUsIDExMywgMjIxLCAzOCwgMjUsIDExMywgMjIxLCAyMSwgMjUsIDExMywgMjIxLCAKKyAgICAzMSwgMjUsIDExMywgMjMyLCAxMSwgMjUsIDExMywgMjMyLCA5LCAyNSwgMTEzLCAyMTUsIDI2LCAyNSwgMTEzLCAyMTUsIAorICAgIDI0LCAyNSwgMTEzLCAyMTUsIDE2LCAyNSwgMTEzLCAyMTUsIDE5LCAyNSwgMTEzLCAyMTUsIDI1LCAyNSwgMTEzLCAyMTUsIAorICAgIDIxLCAyNSwgMTEzLCAyMTUsIDIwLCAyNSwgMTEzLCAyMTUsIDE4LCAyNSwgMTEzLCAyMTUsIDI5LCAyNSwgMTEzLCAyMTUsIAorICAgIDMxLCAyNSwgMTEzLCAyMTUsIDMyLCAyNSwgMTEzLCAyMTUsIDI3LCAyNSwgMTEzLCAyMTUsIDE3LCAyNSwgMTEzLCAyMTUsIAorICAgIDIyLCAyNSwgMTEzLCAyMTUsIDMwLCAyNSwgMTEzLCAyNDgsIDM2LCAyNSwgMTEzLCAyNDgsIDM0LCAyNSwgMTEzLCAyNDgsIAorICAgIDEyMSwgMjUsIDExMywgMjQ4LCAxMTksIDI1LCAxMTMsIDIyMSwgMjQ3LCAyNSwgMTEzLCAyMzMsIDEyMCwgMjUsIDExMywgCisgICAgMjMzLCAxMTEsIDI1LCAxMTMsIDIzMywgMTE5LCAyNSwgMTEzLCAyMzMsIDExNiwgMjUsIDExMywgMjMzLCAxMTQsIDI1LCAKKyAgICAxMTMsIDIzMywgMTE4LCAyNSwgMTEzLCAyMTQsIDg5LCAyNSwgMTEzLCAyMzMsIDEyMywgMjUsIDExMywgMjMzLCAxMjQsIAorICAgIDI1LCAxMTMsIDIzMywgMTEyLCAyNSwgMTEzLCAyMzMsIDExNywgMjUsIDExMywgMjA2LCAyOSwgMjUsIDExMywgMjQ3LCAKKyAgICAyNDUsIDI1LCAxMTMsIDI0OCwgMzcsIDI1LCAxMTMsIDI0OCwgMzUsIDI1LCAxMTMsIDI0OCwgMTIyLCAyNSwgMTEzLCAyNDgsIAorICAgIDEyMCwgMjUsIDExMywgMjQ4LCA1MiwgMjUsIDExMywgMjQ4LCA1MywgMjUsIDExMywgMjQ4LCAzOCwgMjUsIDExMywgMjQ4LCAKKyAgICAxMjMsIDI1LCAxMTMsIDIyMSwgNzQsIDI1LCAxMTMsIDIzMiwgMTIsIDI1LCAxMTMsIDIxNCwgOTAsIDI1LCAxMTMsIDIwNiwgCisgICAgMzUsIDI1LCAxMTMsIDIzMSwgNzUsIDI1LCAxMTMsIDIyNCwgMjE1LCAyNSwgMTEzLCAyMjQsIDIyMSwgMjUsIDExMywgMjI0LCAKKyAgICAyMjAsIDI1LCAxMTMsIDIxMSwgMTg3LCAyNSwgMTEzLCAyNDEsIDIzMiwgMjUsIDE2MiwgMjQxLCAyMzIsIDI1LCAxNjIsIAorICAgIDYyLCAyNSwgMTYyLCAyNTIsIDI0OCwgMjUsIDE2MiwgMTkwLCAyNSwgMTYyLCAyMDYsIDk4LCAyNSwgMTYyLCAyNDMsIDYsIAorICAgIDI1LCAxNjIsIDc1LCAyNSwgMTYyLCAyMDYsIDM5LCAyNSwgMTYyLCAyMDYsIDUyLCAyNSwgMTYyLCA3NiwgMjUsIDE2MiwgCisgICAgMjA3LCA5NiwgMjUsIDE2MiwgMjA3LCA5MiwgMjUsIDE2MiwgMjIyLCAyMDYsIDI1LCAxNjIsIDIwNSwgMjQ3LCAyNSwgMTYyLCAKKyAgICA3MSwgMjUsIDE2MiwgMjA3LCAzOCwgMjUsIDE2MiwgMjA3LCA1MSwgMjUsIDE2MiwgMjA3LCAyMCwgMjUsIDE2MiwgMjA1LCAKKyAgICAyMTMsIDI1LCAxNjIsIDI0MiwgMTkyLCAyNSwgMTYyLCAyMDYsIDExLCAyNSwgMTYyLCA3NCwgMjUsIDE2MiwgMjU0LCAyNTIsIAorICAgIDI1LCAxNjIsIDI1NCwgMjUxLCAyNSwgMTYyLCAyMDYsIDExMiwgMjUsIDE2MiwgMjA2LCAxMTAsIDI1LCAxNjIsIDI0MywgNCwgCisgICAgMjUsIDE2MiwgMjQzLCAzLCAyNSwgMTYyLCAyNDMsIDUsIDI1LCAxNjIsIDIwNiwgMzgsIDI1LCAxNjIsIDIwNiwgMzcsIDI1LCAKKyAgICAxNjIsIDIyMywgNTgsIDI1LCAxNjIsIDIyMywgNTksIDI1LCAxNjIsIDIyMywgNTIsIDI1LCAxNjIsIDIyMywgNTcsIDI1LCAKKyAgICAxNjIsIDIyMywgNTUsIDI1LCAxNjIsIDIwNSwgMjQxLCAyNSwgMTYyLCAyMDUsIDI0MCwgMjUsIDE2MiwgMjA1LCAyMzksIAorICAgIDI1LCAxNjIsIDIwNSwgMjQyLCAyNSwgMTYyLCAyMDUsIDI0MywgMjUsIDE2MiwgMjEwLCA3NiwgMjUsIDE2MiwgMjEwLCA3NSwgCisgICAgMjUsIDE2MiwgMjEwLCA3MywgMjUsIDE2MiwgMjEwLCA2OSwgMjUsIDE2MiwgMjEwLCA3MCwgMjUsIDE2MiwgMjA1LCAyMTIsIAorICAgIDI1LCAxNjIsIDIwNSwgMjA5LCAyNSwgMTYyLCAyMDUsIDIxMCwgMjUsIDE2MiwgMjA1LCAyMDQsIDI1LCAxNjIsIDIwNSwgCisgICAgMjA1LCAyNSwgMTYyLCAyMDUsIDIwNiwgMjUsIDE2MiwgMjA1LCAyMDgsIDI1LCAxNjIsIDI0MiwgMTg2LCAyNSwgMTYyLCAKKyAgICAyNDIsIDE4OCwgMjUsIDE2MiwgMjA2LCAxMCwgMjUsIDE2MiwgMjM3LCAyMjQsIDI1LCAxNjIsIDIzNywgMjE2LCAyNSwgCisgICAgMTYyLCAyMzcsIDIxOSwgMjUsIDE2MiwgMjM3LCAyMTcsIDI1LCAxNjIsIDIzNywgMjIxLCAyNSwgMTYyLCAyMzcsIDIyMywgCisgICAgMjUsIDE2MiwgMjUyLCAzMCwgMjUsIDE2MiwgMjUyLCAyNywgMjUsIDE2MiwgMjUyLCAyNSwgMjUsIDE2MiwgMjUyLCAyNiwgCisgICAgMjUsIDE2MiwgMjE0LCA5MywgMjUsIDE2MiwgMjU0LCAyNTMsIDI1LCAxNjIsIDIwNiwgMTExLCAyNSwgMTYyLCAyMDYsIDM2LCAKKyAgICAyNSwgMTYyLCAyMjMsIDU0LCAyNSwgMTYyLCAyMjMsIDUzLCAyNSwgMTAwLCAyMzEsIDg0LCAyNSwgMTAwLCAyMTQsIDg4LCAKKyAgICAyNSwgMTAwLCAyMzEsIDc3LCAyNSwgMTAwLCAyMjQsIDIyMywgMjUsIDEwMCwgMjI0LCAyMjEsIDI1LCAxMDAsIDIyNCwgCisgICAgMjIwLCAyNSwgMTAwLCAyMTEsIDE5MywgMjUsIDEwMCwgMjE4LCAxOTgsIDI1LCAxMDAsIDIxOCwgMTkzLCAyNSwgMTAwLCAKKyAgICAyMTgsIDE5MCwgMjUsIDEwMCwgMjE4LCAxODMsIDI1LCAxMDAsIDIxOCwgMTc4LCAyNSwgMTAwLCAyMTgsIDE3MywgMjUsIAorICAgIDEwMCwgMjE4LCAxODQsIDI1LCAxMDAsIDIxOCwgMTk2LCAyNSwgMTAwLCAyMjYsIDI0MCwgMjUsIDEwMCwgMjIxLCAzOSwgCisgICAgMjUsIDEwMCwgMjIxLCAyOCwgMjUsIDEwMCwgMjE1LCAzMywgMjUsIDEwMCwgMjE0LCA4MiwgMjUsIDEwMCwgMjMzLCAxMjUsIAorICAgIDI1LCAxMDAsIDI0NywgMjQ2LCAyNSwgMTAwLCAyNDgsIDU0LCAyNSwgMTAwLCAyMzEsIDE0MywgMjUsIDEwMCwgMjEyLCAxNSwgCisgICAgMjUsIDEwMCwgMjIxLCA3NiwgMjUsIDEwMCwgMjM5LCAzLCAyNSwgMTAwLCAyMzEsIDc4LCAyNSwgMTAwLCAyMzEsIDc2LCAKKyAgICAyNSwgMTAwLCAyMjQsIDIxOSwgMjUsIDEwMCwgMjI0LCAyMTMsIDI1LCAxMDAsIDIyNCwgMjE1LCAyNSwgMTAwLCAyMjQsIAorICAgIDIxOCwgMjUsIDEwMCwgMjI0LCAyMTQsIDI1LCAxMDAsIDIxMSwgMTkwLCAyNSwgMTAwLCAyMTEsIDE4NywgMjUsIDEwMCwgCisgICAgMjE4LCAxOTEsIDI1LCAxMDAsIDIxOCwgMTg2LCAyNSwgMTAwLCAyMTgsIDE3MiwgMjUsIDEwMCwgMjE4LCAxNzEsIDI1LCAKKyAgICAxMDAsIDIxNCwgODQsIDI1LCAxMDAsIDIxOCwgMTg4LCAyNSwgMTAwLCAyMTgsIDE4NywgMjUsIDEwMCwgMjE4LCAxODAsIAorICAgIDI1LCAxMDAsIDIxOCwgMTgyLCAyNSwgMTAwLCAyMTgsIDE5NSwgMjUsIDEwMCwgMjE4LCAxNzUsIDI1LCAxMDAsIDIxOCwgCisgICAgMTg1LCAyNSwgMTAwLCAyMTgsIDE5NCwgMjUsIDEwMCwgMjE4LCAxNzAsIDI1LCAxMDAsIDIyNiwgMjM2LCAyNSwgMTAwLCAKKyAgICAyMjYsIDIzMSwgMjUsIDEwMCwgMjI2LCAyMzMsIDI1LCAxMDAsIDIyNiwgMjMwLCAyNSwgMTAwLCAyMjYsIDIyOCwgMjUsIAorICAgIDEwMCwgMjI2LCAyMzQsIDI1LCAxMDAsIDIyNiwgMjM5LCAyNSwgMTAwLCAyMjYsIDIzNywgMjUsIDEwMCwgMjMyLCAxMywgCisgICAgMjUsIDEwMCwgMjIxLCAzMCwgMjUsIDEwMCwgMjIxLCAzMSwgMjUsIDEwMCwgMjIxLCAzNiwgMjUsIDEwMCwgMjMyLCAxMSwgCisgICAgMjUsIDEwMCwgMjE1LCAyNiwgMjUsIDEwMCwgMjE1LCAxNiwgMjUsIDEwMCwgMjE1LCAxOSwgMjUsIDEwMCwgMjE1LCAyMSwgCisgICAgMjUsIDEwMCwgMjIxLCAyNDcsIDI1LCAxMDAsIDIzMywgMTIwLCAyNSwgMTAwLCAyMzMsIDExMywgMjUsIDEwMCwgMjE0LCAKKyAgICA4OSwgMjUsIDEwMCwgMjMzLCAxMjEsIDI1LCAxMDAsIDIwNiwgMjksIDI1LCAxMDAsIDIwNiwgMjUsIDI1LCAxMDAsIDIwNiwgCisgICAgMjYsIDI1LCAxMDAsIDIyMSwgNzQsIDI1LCAxMDAsIDIzMiwgMTIsIDI1LCAxMDAsIDIzOSwgMSwgMjUsIDEwMCwgMjM4LCAKKyAgICAyNTUsIDI1LCAxMDAsIDIzOSwgMiwgMjUsIDEwMCwgMjM5LCAwLCAyNSwgMTAwLCAyMDYsIDM1LCAyNSwgMTAwLCAyMzEsIAorICAgIDgwLCAyNSwgMTAwLCAyMzEsIDc5LCAyNSwgMTAwLCAyMzEsIDgzLCAyNSwgMTAwLCAyMzEsIDgxLCAyNSwgMTAwLCAyMzEsIAorICAgIDgyLCAyNSwgMTAwLCAyMTQsIDg2LCAzMSwgNCwgMTU1LCAzMSwgNCwgMjM4LCA0MiwgMzEsIDQsIDIzOSwgMTEsIDMxLCA0LCAKKyAgICAyMzksIDE0MSwgMzEsIDQsIDIzOSwgNTMsIDMxLCA0LCAyMzksIDcxLCAzMSwgNCwgMjM4LCAxNDksIDMxLCA0LCAyMzgsIAorICAgIDE0OCwgMzEsIDQsIDIzMCwgMTQxLCAzMSwgNCwgMjI5LCA4MSwgMzEsIDQsIDIyOSwgMjM1LCAzMSwgNCwgMjMwLCAxNDAsIAorICAgIDMxLCA0LCAyMzAsIDUwLCAzMSwgNCwgMjMwLCA1OCwgMzEsIDQsIDIyOSwgMTQ0LCAzMSwgNCwgMjI5LCA1MCwgMzEsIDQsIAorICAgIDIzOSwgMjAsIDMxLCA0LCAyMzksIDE0LCAzMSwgNCwgMjM5LCAxNiwgMzEsIDQsIDIzOSwgMTksIDMxLCA0LCAyMzksIDE3LCAKKyAgICAzMSwgNCwgMjM5LCAxOCwgMzEsIDQsIDIzOSwgMTUsIDMxLCA0LCAyMzksIDEzLCAzMSwgNCwgMTg1LCAzMSwgNCwgMjI2LCAKKyAgICAxMTQsIDMxLCA0LCAyMjYsIDI1NCwgMzEsIDQsIDIyOCwgMTgsIDMxLCA0LCAyMjcsIDEwNywgMzEsIDQsIDIyNywgMTE5LCAKKyAgICAzMSwgNCwgMjI2LCAxODEsIDMxLCA0LCAyMjYsIDUwLCAzMSwgNCwgMjEzLCAyMSwgMzEsIDQsIDIxMywgMTUsIDMxLCA0LCAKKyAgICAyMTMsIDE3LCAzMSwgNCwgMjEzLCAyMCwgMzEsIDQsIDIxMywgMTgsIDMxLCA0LCAyMTMsIDE5LCAzMSwgNCwgMjEzLCAxNiwgCisgICAgMzEsIDQsIDIxMywgMTQsIDMxLCA0LCAyMTksIDExMywgMzEsIDQsIDIxOCwgNTAsIDMxLCA0LCAyMTgsIDIwOCwgMzEsIDQsIAorICAgIDIxOSwgMTA5LCAzMSwgNCwgMjE5LCAyOSwgMzEsIDQsIDIxOSwgNTEsIDMxLCA0LCAyMTgsIDEyNCwgMzEsIDQsIDIxOCwgCisgICAgMTgsIDMxLCA0LCAyMTcsIDE5OSwgMzEsIDQsIDIxMywgMjAzLCAzMSwgNCwgMjE1LCA4MCwgMzEsIDQsIDIxNywgMTk2LCAKKyAgICAzMSwgNCwgMjE3LCA3NCwgMzEsIDQsIDIxNywgODYsIDMxLCA0LCAyMTQsIDE5MywgMzEsIDQsIDIxMywgMTEyLCAzMSwgNCwgCisgICAgMjE2LCAyLCAzMSwgNCwgMjE1LCAxMTYsIDMxLCA0LCAyMTUsIDE4MywgMzEsIDQsIDIxNSwgMjU0LCAzMSwgNCwgMjE1LCAKKyAgICAyMTIsIDMxLCA0LCAyMTUsIDIxNCwgMzEsIDQsIDIxNSwgMTU4LCAzMSwgNCwgMjE1LCA5OCwgMzEsIDQsIDIyMCwgMTksIAorICAgIDMxLCA0LCAyMTksIDIxNCwgMzEsIDQsIDIxOSwgMjM3LCAzMSwgNCwgMjIwLCAxOCwgMzEsIDQsIDIxOSwgMjU0LCAzMSwgNCwgCisgICAgMjE5LCAyNTUsIDMxLCA0LCAyMTksIDIyNiwgMzEsIDQsIDIxOSwgMjI1LCAzMSwgNCwgMjE5LCAxNjgsIDMxLCA0LCAyMTksIAorICAgIDE2NCwgMzEsIDQsIDIxOSwgMTY3LCAzMSwgNCwgMjE5LCAxNjUsIDMxLCA0LCAyMTksIDE2NiwgMzEsIDQsIDIxOSwgMjUxLCAKKyAgICAzMSwgNCwgMjE5LCAyNDMsIDMxLCA0LCAyMTksIDI0NiwgMzEsIDQsIDIxOSwgMjUwLCAzMSwgNCwgMjE5LCAyNDcsIDMxLCAKKyAgICA0LCAyMTksIDI0OCwgMzEsIDQsIDIxOSwgMjQ1LCAzMSwgNCwgMjE5LCAyNDIsIDMxLCA0LCAyMTksIDIzOCwgMzEsIDQsIAorICAgIDIxOSwgMjQxLCAzMSwgNCwgMjE5LCAyMzksIDMxLCA0LCAyMTksIDI0MCwgMzEsIDQsIDI1MCwgMTgzLCAzMSwgNCwgMjQ5LCAKKyAgICAxMDEsIDMxLCA0LCAyNDksIDI0NCwgMzEsIDQsIDI1MCwgMTgxLCAzMSwgNCwgMjUwLCA1MCwgMzEsIDQsIDI1MCwgNjEsIAorICAgIDMxLCA0LCAyNDksIDE4NCwgMzEsIDQsIDI0OSwgNTEsIDMxLCA0LCAyMDksIDcwLCAzMSwgNCwgMjA3LCAxNDgsIDMxLCA0LCAKKyAgICAyMDgsIDIxNCwgMzEsIDQsIDIwOSwgNjksIDMxLCA0LCAyMDksIDM0LCAzMSwgNCwgMjA5LCAzOSwgMzEsIDQsIDIwOCwgCisgICAgMTczLCAzMSwgNCwgMjA3LCAxMzksIDMxLCA0LCAyMTIsIDIxOSwgMzEsIDQsIDIxMCwgMTcwLCAzMSwgNCwgMjExLCAyMTEsIAorICAgIDMxLCA0LCAyMTIsIDIxNSwgMzEsIDQsIDIxMiwgMTIwLCAzMSwgNCwgMjEyLCAxMzEsIDMxLCA0LCAxMjQsIDMxLCA0LCAKKyAgICAyMTAsIDEzMCwgMzEsIDQsIDI0OSwgMSwgMzEsIDQsIDI0NywgNDAsIDMxLCA0LCAyNDcsIDI1MSwgMzEsIDQsIDI0OSwgMCwgCisgICAgMzEsIDQsIDI0OCwgMTQwLCAzMSwgNCwgMjQ4LCAxNDgsIDMxLCA0LCAyNDcsIDE3NCwgMzEsIDQsIDI0NywgNywgMzEsIDQsIAorICAgIDIwNiwgMTgxLCAzMSwgNCwgMjA2LCAxNTEsIDMxLCA0LCAyMDYsIDE2OSwgMzEsIDQsIDIwNiwgMTgwLCAzMSwgNCwgMjA2LCAKKyAgICAxNzQsIDMxLCA0LCAyMDYsIDE3NSwgMzEsIDQsIDIwNiwgMTU5LCAzMSwgNCwgMjA2LCAxNTgsIDMxLCA0LCAyMDYsIDE0NSwgCisgICAgMzEsIDQsIDIwNiwgMTQxLCAzMSwgNCwgMjA2LCAxNDQsIDMxLCA0LCAyMDYsIDE0MiwgMzEsIDQsIDIwNiwgMTQzLCAzMSwgCisgICAgNCwgMTk5LCAzMSwgNCwgMjIzLCAyMTcsIDMxLCA0LCAyMjQsIDIzMCwgMzEsIDQsIDIyNSwgMjMyLCAzMSwgNCwgMjI1LCAKKyAgICAxMDYsIDMxLCA0LCAyMjUsIDExMCwgMzEsIDQsIDIyNCwgNjcsIDMxLCA0LCAyMjMsIDE1MywgMzEsIDQsIDIyMywgMTQ0LCAKKyAgICAzMSwgNCwgMjIzLCAxMDMsIDMxLCA0LCAyMjMsIDEyNSwgMzEsIDQsIDIyMywgMTQzLCAzMSwgNCwgMjIzLCAxMzMsIDMxLCAKKyAgICA0LCAyMjMsIDEzNCwgMzEsIDQsIDIyMywgMTEwLCAzMSwgNCwgMjIzLCA5MywgMzEsIDQsIDI0MCwgMjUsIDYyLCAzMSwgNCwgCisgICAgMjQwLCAyNSwgNzEsIDMxLCA0LCAyNDAsIDI1LCA3NCwgMzEsIDQsIDI0MCwgMjUsIDI1MywgMTY0LCAzMSwgNCwgMjQwLCAKKyAgICAyNSwgMjQzLCAxMDQsIDMxLCA0LCAyNDAsIDI1LCA3NSwgMzEsIDQsIDI0MCwgMjUsIDc2LCAzMSwgNCwgMjQwLCAyNSwgCisgICAgMjA3LCA5NiwgMzEsIDQsIDE3MiwgMzEsIDQsIDIzMCwgMjM2LCAzMSwgNCwgMjMxLCAxMjMsIDMxLCA0LCAyMzIsIDYzLCAKKyAgICAzMSwgNCwgMjMxLCAyMjEsIDMxLCA0LCAyMzEsIDIyNCwgMzEsIDQsIDIzMSwgNTMsIDMxLCA0LCAyMzEsIDUyLCAzMSwgNCwgCisgICAgMjMwLCAxOTUsIDMxLCA0LCAyMzAsIDE4OCwgMzEsIDQsIDIzMCwgMTk0LCAzMSwgNCwgMjMwLCAxODksIDMxLCA0LCAyMzAsIAorICAgIDE5MCwgMzEsIDQsIDIzMCwgMTgxLCAzMSwgNCwgMjMwLCAxNzUsIDMxLCA0LCAyMzAsIDE3NywgMzEsIDQsIDIzMCwgMTgwLCAKKyAgICAzMSwgNCwgMjMwLCAxNzgsIDMxLCA0LCAyMzAsIDE3OSwgMzEsIDQsIDIzMCwgMTc2LCAzMSwgNCwgMjMwLCAxNzQsIDMxLCAKKyAgICA0LCAyMzAsIDE3MCwgMzEsIDQsIDIzMCwgMTczLCAzMSwgNCwgMjMwLCAxNzEsIDMxLCA0LCAyMzAsIDE3MiwgMzEsIDQsIAorICAgIDIwNywgOTYsIDMxLCA0LCAyMDYsIDIxNiwgMzEsIDQsIDIwNywgMjAsIDMxLCA0LCAyMDcsIDk1LCAzMSwgNCwgMjA3LCA0NSwgCisgICAgMzEsIDQsIDIwNywgNTEsIDMxLCA0LCAyMDYsIDI1MCwgMzEsIDQsIDIwNiwgMjQ5LCAzMSwgNCwgMjIxLCA4NCwgNjIsIDMxLCAKKyAgICA0LCAyMjEsIDg0LCA3MSwgMzEsIDQsIDIyMSwgODQsIDc0LCAzMSwgNCwgMjIxLCA4NCwgMjUzLCAxNjQsIDMxLCA0LCAyMjEsIAorICAgIDg0LCAyNDMsIDEwNCwgMzEsIDQsIDIyMSwgODQsIDc1LCAzMSwgNCwgMjIxLCA4NCwgNzYsIDMxLCA0LCAyMDUsIDExNiwgCisgICAgMzEsIDQsIDIwNSwgOSwgMzEsIDQsIDIwNSwgNDAsIDMxLCA0LCAyMDUsIDExNSwgMzEsIDQsIDIwNSwgOTEsIDMxLCA0LCAKKyAgICAyMDUsIDkzLCAzMSwgNCwgMjA1LCAxOSwgMzEsIDQsIDIwNCwgMjUyLCAzMSwgNCwgMjA1LCA4MSwgMzEsIDQsIDIwNSwgNTgsIAorICAgIDMxLCA0LCAyMDUsIDY3LCAzMSwgNCwgMjA1LCA4MCwgMzEsIDQsIDIwNSwgNzEsIDMxLCA0LCAyMDUsIDcyLCAzMSwgNCwgCisgICAgMjA1LCA2NCwgMzEsIDQsIDIwNSwgNDksIDMxLCA0LCAxOTAsIDMxLCA0LCAyMDUsIDIxMywgMzEsIDQsIDIwNiwgMTEsIDMxLCAKKyAgICA0LCAyMDYsIDEwOSwgMzEsIDQsIDIwNiwgNDksIDMxLCA0LCAyMDYsIDUyLCAzMSwgNCwgMjA1LCAyNDcsIDMxLCA0LCAyMDUsIAorICAgIDIzOCwgMzEsIDQsIDI0NiwgMTQ1LCAzMSwgNCwgMjQzLCAyMzcsIDMxLCA0LCAyNDUsIDE2OCwgMzEsIDQsIDI0NiwgMTQ0LCAKKyAgICAzMSwgNCwgMjQ1LCAyNTEsIDMxLCA0LCAyNDYsIDksIDMxLCA0LCAyNDUsIDUxLCAzMSwgNCwgMjQzLCAyMDYsIDMxLCA0LCAKKyAgICAyNDYsIDU0LCAzMSwgNCwgMjQ2LCAxOSwgMzEsIDQsIDI0NiwgMzEsIDMxLCA0LCAyNDYsIDUzLCAzMSwgNCwgMjQ2LCA0MSwgCisgICAgMzEsIDQsIDI0NiwgNDIsIDMxLCA0LCAyNDYsIDI0LCAzMSwgNCwgMjQ2LCAxMCwgMzEsIDQsIDIzMiwgMjAwLCAzMSwgNCwgCisgICAgMjMyLCAxMDQsIDMxLCA0LCAyMzIsIDE2MiwgMzEsIDQsIDIzMiwgMTk5LCAzMSwgNCwgMjMyLCAxODAsIDMxLCA0LCAyMzIsIAorICAgIDE4MiwgMzEsIDQsIDIzMiwgMTIyLCAzMSwgNCwgMjMyLCA4NCwgMzEsIDQsIDI0MCwgMjQ0LCAzMSwgNCwgMjM5LCAyMTMsIAorICAgIDMxLCA0LCAyNDAsIDYxLCAzMSwgNCwgMjQwLCAyNDEsIDMxLCA0LCAyNDAsIDE2MiwgMzEsIDQsIDI0MCwgMTcwLCAzMSwgNCwgCisgICAgMjQwLCAxOSwgMzEsIDQsIDI0MCwgMTgsIDMxLCA0LCAyMzksIDE3NCwgMzEsIDQsIDIzOSwgMTcwLCAzMSwgNCwgMjM5LCAKKyAgICAxNzMsIDMxLCA0LCAyMzksIDE3MSwgMzEsIDQsIDIzOSwgMTcyLCAzMSwgNCwgMjQwLCAxMzUsIDMxLCA0LCAyNDAsIDExNSwgCisgICAgMzEsIDQsIDI0MCwgMTI1LCAzMSwgNCwgMjQwLCAxMzQsIDMxLCA0LCAyNDAsIDEyOSwgMzEsIDQsIDI0MCwgMTMwLCAzMSwgCisgICAgNCwgMjQwLCAxMTksIDMxLCA0LCAyNDAsIDEwNCwgMzEsIDQsIDIxMiwgNTYsIDMxLCA0LCAyMTEsIDIzMCwgMzEsIDQsIAorICAgIDIxMiwgMTksIDMxLCA0LCAyMTIsIDU1LCAzMSwgNCwgMjEyLCAzOSwgMzEsIDQsIDIxMiwgNDEsIDMxLCA0LCAyMTEsIDI1MywgCisgICAgMzEsIDQsIDIxMSwgMjIyLCAzMSwgNCwgMjQ4LCAxMTAsIDMxLCA0LCAyNDgsIDE0LCAzMSwgNCwgMjQ4LCA1OCwgMzEsIDQsIAorICAgIDI0OCwgMTA5LCAzMSwgNCwgMjQ4LCA3OCwgMzEsIDQsIDI0OCwgODIsIDMxLCA0LCAyNDgsIDMyLCAzMSwgNCwgMjQ4LCAzLCAKKyAgICAzMSwgNCwgMjIxLCA5MywgMzEsIDQsIDIyMSwgNTksIDMxLCA0LCAyMjEsIDc4LCAzMSwgNCwgMjIxLCA5MiwgMzEsIDQsIAorICAgIDIyMSwgODAsIDMxLCA0LCAyMjEsIDgxLCAzMSwgNCwgMjIxLCA2NiwgMzEsIDQsIDIyMSwgNTUsIDMxLCA0LCAyMTAsIDI0MywgCisgICAgMzEsIDQsIDIxMCwgMjE2LCAzMSwgNCwgMjEwLCAyMjIsIDMxLCA0LCAyMTAsIDI0MiwgMzEsIDQsIDIxMCwgMjM2LCAzMSwgCisgICAgNCwgMjEwLCAyMzcsIDMxLCA0LCAyMTAsIDIyMCwgMzEsIDQsIDIxMCwgMjE0LCAzMSwgNCwgMjEwLCA4NSwgMzEsIDQsIAorICAgIDIxMCwgNzcsIDMxLCA0LCAyMTAsIDgxLCAzMSwgNCwgMjEwLCA4NCwgMzEsIDQsIDIxMCwgODIsIDMxLCA0LCAyMTAsIDgzLCAKKyAgICAzMSwgNCwgMjEwLCA3OSwgMzEsIDQsIDIxMCwgNzgsIDMxLCA0LCAyNDIsIDczLCAzMSwgNCwgMjQxLCA4OCwgMzEsIDQsIAorICAgIDI0MSwgMjUwLCAzMSwgNCwgMjQyLCA3MiwgMzEsIDQsIDI0MiwgMjEsIDMxLCA0LCAyNDIsIDI4LCAzMSwgNCwgMjQxLCAKKyAgICAxNjIsIDMxLCA0LCAyNDEsIDY2LCAzMSwgNCwgMTc5LCAzMSwgNCwgMjIwLCA4MiwgMzEsIDQsIDIyMSwgNTMsIDMxLCA0LCAKKyAgICAyMjIsIDUxLCAzMSwgNCwgMjIxLCAxNjQsIDMxLCA0LCAyMjEsIDE3NCwgMzEsIDQsIDIyMCwgMjExLCAzMSwgNCwgMjIwLCAKKyAgICA0NSwgMzEsIDQsIDIxOCwgOCwgMzEsIDQsIDIyNiwgMzksIDMxLCA0LCAyNDEsIDYwLCAzMSwgMzYsIDI0MCwgMTU5LCAyMywgCisgICAgMjIsIDIzMCwgMjAsIDgzLCAzMSwgMzYsIDIyLCAyMzAsIDIwLCA4MywgMzEsIDM2LCAyNDAsIDE1OSwgODMsIDMxLCAyMTcsIAorICAgIDc3LCA4MywgMzEsIDIwNiwgMjMxLCAzMSwgMjQxLCA4MiwgMjEzLCAyNTEsIDMxLCAyNDcsIDE1NSwgMzEsIDIxNiwgNTIsIAorICAgIDMxLCAyNDcsIDE2MiwgMzEsIDIyMCwgMTM2LCAyNDcsIDE2MiwgMzEsIDIxOSwgMTk2LCA4MywgMzEsIDIyMSwgMjI5LCAKKyAgICAyMTYsIDM5LCAzMSwgMTgsIDEwMiwgMzEsIDE4LCAxMDUsIDMxLCAxOCwgMTQyLCAzMSwgMTgsIDEzOSwgMzEsIDE4LCAxNjgsIAorICAgIDMxLCAxOCwgMTg0LCAzMSwgMTgsIDE5NSwgMzEsIDE4LCAxOTMsIDMxLCAxOCwgMjAwLCAzMSwgNDMsIDIxMiwgOTgsIDMxLCAKKyAgICA0MywgMjEwLCAxMjMsIDMxLCA0MywgMjEyLCAzLCAzMSwgNDMsIDI0MSwgMTMwLCAzMSwgNDMsIDI0MSwgMjQzLCAzMSwgNDMsIAorICAgIDIxNCwgMjUyLCAzMSwgNDMsIDIxNiwgMTcsIDMxLCA0MywgMjQzLCA3OSwgMzEsIDQzLCAyMjQsIDE5MCwgMzEsIDQzLCAKKyAgICAyMzgsIDI5LCAzMSwgNDMsIDIxMiwgOTksIDIxMSwgMjQyLCAzMSwgNCwgMjE3LCA4MiwgMjI2LCA1MCwgMzEsIDQsIDIyNiwgCisgICAgNDYsIDMxLCA0LCAyMjYsIDQ3LCAzMSwgNCwgMjI2LCA0OCwgMzEsIDQsIDIxNywgODIsIDI0OSwgNTEsIDMxLCA0LCAyNDksIAorICAgIDQ4LCAzMSwgNCwgMjQ5LCA0OSwgMzEsIDQsIDI0OSwgNTAsIDMxLCA0LCAyMTcsIDgyLCAyNDEsIDY2LCAzMSwgNCwgMjQxLCAKKyAgICA2MiwgMzEsIDQsIDI0MSwgNjMsIDMxLCA0LCAyNDEsIDY0LCAzMSwgNCwgMjE3LCA4MiwgMjIwLCA0NSwgMzEsIDQsIDIyMCwgCisgICAgNDEsIDMxLCA0LCAyMjAsIDQyLCAzMSwgNCwgMjIwLCA0MywgMzEsIDIxMSwgMTE5LCAxNDEsIDIwNSwgMjUwLCAzMSwgMjExLCAKKyAgICAxMTksIDE0MSwgMjQ1LCAyMTMsIDMxLCAyMTEsIDExOSwgMTQxLCAyMTgsIDE1MywgMzEsIDIxMSwgMTE5LCAxNDEsIDIxNSwgCisgICAgMTQ0LCAyMTgsIDE1MywgMzEsIDIxMSwgMTE5LCAxNDEsIDI0NSwgMTQyLCAzMSwgMjExLCAxMTksIDE0MSwgMjMxLCAyMDIsIAorICAgIDMxLCAyMTEsIDExOSwgMTQxLCAyNDgsIDQwLCAzMSwgMjExLCAxMTksIDE0MSwgMjM5LCA4LCAzMSwgMjExLCAxMTksIDE0MSwgCisgICAgMjQ1LCAyMTIsIDMxLCAyMTEsIDExOSwgMTQxLCAyMzAsIDIwOCwgMTkyLCAxLCA2MiwgMTkyLCAxLCA3NSwgMTkyLCAxLCAKKyAgICA3NCwgMTkyLCAxLCA3NiwgMTkyLCAxLCA3MSwgMTkyLCAxLCAyMDksIDE0OCwgMTkyLCAxLCAyNDAsIDI0NCwgMTkyLCAxLCAKKyAgICAxNzIsIDE5MiwgMSwgMjQwLCAxNzAsIDE5MiwgMSwgMjQwLCA2MSwgMTkyLCAxLCAyNDAsIDE5LCAxOTIsIDEsIDIzOSwgCisgICAgMjEzLCAxOTIsIDEsIDIzOSwgMTc2LCAxOTIsIDEsIDE1NSwgMTkyLCAxLCAyMzksIDcxLCAxOTIsIDEsIDIzOSwgMTEsIAorICAgIDE5MiwgMSwgMjM4LCAxNDksIDE5MiwgMSwgMjM4LCA0MiwgMTkyLCAxLCAyMzgsIDE3LCAxOTIsIDEsIDIzMCwgMTQxLCAKKyAgICAxOTIsIDEsIDIzMCwgNTgsIDE5MiwgMSwgMjI5LCAyMzUsIDE5MiwgMSwgMjI5LCAxNDQsIDE5MiwgMSwgMjI5LCA4MSwgCisgICAgMTkyLCAxLCAyMjksIDUxLCAxOTIsIDEsIDE4NSwgMTkyLCAxLCAyMjcsIDExOSwgMTkyLCAxLCAyMjYsIDI1NCwgMTkyLCAxLCAKKyAgICAyMjYsIDE4MSwgMTkyLCAxLCAyMjYsIDExNCwgMTkyLCAxLCAxOTksIDE5MiwgMSwgMjM4LCAxNzMsIDE5MiwgMSwgMjI1LCAKKyAgICAyMTksIDE5MiwgMSwgMjI1LCAxMTAsIDE5MiwgMSwgMjI0LCAyMzAsIDE5MiwgMSwgMjI0LCA2NywgMTkyLCAxLCAyMjMsIAorICAgIDIxNywgMTkyLCAxLCAyMjMsIDE1NSwgMTkyLCAxLCAyMTksIDIxMywgMTkyLCAxLCAyMTksIDE5OSwgMTkyLCAxLCAyMTksIAorICAgIDE5MiwgMTkyLCAxLCAyMTksIDE4MywgMTkyLCAxLCAyMTksIDE3MiwgMTkyLCAxLCAyMTksIDE3MCwgMTkyLCAxLCAyMTcsIAorICAgIDE5OSwgMTkyLCAxLCAxODIsIDE5MiwgMSwgMjE3LCA4NiwgMTkyLCAxLCAyMTUsIDgwLCAxOTIsIDEsIDIxNCwgMTkzLCAKKyAgICAxOTIsIDEsIDIxMywgMjAzLCAxOTIsIDEsIDIxMywgMTE3LCAxOTIsIDEsIDI0NiwgMTQ1LCAxOTIsIDEsIDIxMiwgMjE5LCAKKyAgICAxOTIsIDEsIDI0NiwgOSwgMTkyLCAxLCAyMTIsIDEzMSwgMTkyLCAxLCAyNDUsIDE2OCwgMTkyLCAxLCAyMTEsIDIxMSwgCisgICAgMTkyLCAxLCAyNDUsIDUxLCAxOTIsIDEsIDI0MywgMjM3LCAxOTIsIDEsIDI0MywgMjA5LCAxOTIsIDEsIDI0NSwgNjIsIAorICAgIDE5MiwgMSwgMjExLCAxNDcsIDE5MiwgMSwgMjExLCAxNDYsIDE5MiwgMSwgMjExLCAxMzUsIDE5MiwgMSwgMjExLCAxMzQsIAorICAgIDE5MiwgMSwgMjExLCAxMzMsIDE5MiwgMSwgMjExLCAxMzIsIDE5MiwgMSwgMjEwLCAyNDMsIDE5MiwgMSwgMjEwLCAyMzcsIAorICAgIDE5MiwgMSwgMjEwLCAyMjIsIDE5MiwgMSwgMjEwLCAyMjAsIDE5MiwgMSwgMjEwLCAyMTYsIDE5MiwgMSwgMjEwLCAyMTUsIAorICAgIDE5MiwgMSwgMjA3LCA5NiwgMTkyLCAxLCAyMDcsIDUxLCAxOTIsIDEsIDIwNywgMjAsIDE5MiwgMSwgMjA2LCAyNTAsIDE5MiwgCisgICAgMSwgMjA2LCAyMTYsIDE5MiwgMSwgMjA2LCAyMDMsIDE5MiwgMSwgMTkwLCAxOTIsIDEsIDIwNiwgNTIsIDE5MiwgMSwgMjA2LCAKKyAgICAxMSwgMTkyLCAxLCAyMDUsIDI0NywgMTkyLCAxLCAyMDUsIDIxMywgMTkyLCAxLCAyMDUsIDE3NywgMTksIDIwLCAyMzcsIAorICAgIDIzOSwgMTksIDIwLCA3NSwgMTksIDIwLCAyNTMsIDEyOCwgMTksIDIwLCA3NCwgMTksIDIwLCAyMzMsIDEwMiwgMTksIDIwLCAKKyAgICA3NiwgMTksIDIwLCAyMjIsIDE1MiwgMTksIDIwLCAyMDYsIDEyMiwgMjIyLCAxNTIsIDE5LCAyMCwgODUsIDI0MywgMTA0LCAKKyAgICAxOSwgMjAsIDg1LCA3NCwgMTksIDIwLCA2MiwgMTksIDIwLCAyNTMsIDE2NCwgMTksIDIwLCAyMDcsIDUxLCAxOSwgMjAsIAorICAgIDE4MCwgMjA3LCA1MSwgMTksIDIwLCAyMDcsIDIwLCAxOSwgMjAsIDE4MCwgMjA3LCAyMCwgMTksIDIwLCAyMDcsIDEyLCAxOSwgCisgICAgMjAsIDE4MCwgMjA3LCAxMiwgMTksIDIwLCAyMDYsIDI1MCwgMTksIDIwLCAxODAsIDIwNiwgMjUwLCAxOSwgMjAsIDIwNiwgCisgICAgMjM4LCAxOSwgMjAsIDE4MCwgMjA2LCAyMzgsIDE5LCAyMCwgMjI1LCAxOTQsIDIwNiwgMjM4LCAxOSwgMjAsIDIwNywgOTYsIAorICAgIDE5LCAyMCwgMTgwLCAyMDcsIDk2LCAxOSwgMjAsIDIwNywgOTUsIDE5LCAyMCwgMTgwLCAyMDcsIDk1LCAxOSwgMjAsIDIyNSwgCisgICAgMTk0LCAyMDcsIDk1LCAxOSwgMjAsIDI1MiwgMjA1LCAxOSwgMjAsIDIwNiwgMTIyLCAyMDcsIDEyOSwgMTksIDIwLCAyNDAsIAorICAgIDI1LCAyMTMsIDI1MSwgMTksIDIwLCA0MiwgMTUzLCAxOSwgMjAsIDQyLCAyMzksIDIzNiwgMTksIDIwLCA0MiwgMjQ5LCAKKyAgICAxNTQsIDE2MCwgMjE4LCAxNDgsIDE5LCAyMCwgNDIsIDIxMSwgMTAyLCAxNjAsIDIxOCwgMTQ4LCAxOSwgMjAsIDQyLCA0OCwgCisgICAgMTYwLCAyMTgsIDE0OCwgMTksIDIwLCA0MiwgMjE4LCAxNDgsIDE5LCAyMCwgNDIsIDUwLCAxNTMsIDE5LCAyMCwgNDIsIDUwLCAKKyAgICAyMTUsIDE0NCwgNzksIDIxMywgMjEyLCAxOSwgMjAsIDQyLCAyMjYsIDI0NywgMjQ1LCAyMywgMTksIDIwLCA0MiwgMjE1LCAKKyAgICAxNDQsIDE5NCwgOTEsIDE5LCAyMCwgNDIsIDIyMCwgMjE4LCAxOSwgMjAsIDQyLCAxMzAsIDIxMiwgMjAxLCAxOSwgMjAsIAorICAgIDI0MywgNDEsIDE5LCAyMCwgMjMzLCA2OCwgMTksIDIwLCAyMjIsIDE2NSwgMTksIDIwLCAyNTIsIDEyMiwgMTksIDIwLCAKKyAgICAyMjEsIDE3NCwgMTksIDIwLCAyMjIsIDQ5LCAxOSwgMjAsIDIyMSwgNTMsIDE5LCAyMCwgMjIxLCAxNSwgMTksIDIwLCAyMjAsIAorICAgIDIxMSwgMTksIDIwLCAyMjAsIDE4NywgMTksIDIwLCAyMDYsIDEyMiwgMjIwLCAxODcsIDE5LCAyMCwgODUsIDIzOSwgNTMsIAorICAgIDE5LCAyMCwgODUsIDIzOSwgMTEsIDE5LCAyMCwgMTc5LCAxOSwgMjAsIDIyMiwgNTEsIDE5LCAyMCwgMjIwLCA0MywgMTksIAorICAgIDIwLCAxODAsIDIyMCwgNDMsIDE5LCAyMCwgMjIwLCA0MSwgMTksIDIwLCAxODAsIDIyMCwgNDEsIDE5LCAyMCwgMjIwLCA0MCwgCisgICAgMTksIDIwLCAxODAsIDIyMCwgNDAsIDE5LCAyMCwgMjIwLCAzOCwgMTksIDIwLCAxODAsIDIyMCwgMzgsIDE5LCAyMCwgMjIwLCAKKyAgICAzNywgMTksIDIwLCAxODAsIDIyMCwgMzcsIDE5LCAyMCwgMjIwLCA0NSwgMTksIDIwLCAxODAsIDIyMCwgNDUsIDE5LCAyMCwgCisgICAgMjIwLCA0NCwgMTksIDIwLCAxODAsIDIyMCwgNDQsIDE5LCAyMCwgMjA2LCAxMjIsIDIyMCwgNDQsIDE5LCAyMCwgMjIyLCAKKyAgICA2NywgMTksIDIwLCAxODAsIDIyMiwgNjcsIDE5LCAyMCwgODUsIDIzOSwgMTU1LCAxOSwgMjAsIDIxMiwgMTMxLCAxOSwgMjAsIAorICAgIDIxMiwgMjEzLCAxOSwgMjAsIDIxMSwgMjExLCAxOSwgMjAsIDIxMSwgMTk1LCAxOSwgMjAsIDEyNCwgMTksIDIwLCAyMTEsIAorICAgIDEwNSwgMTksIDIwLCAyMDYsIDEyMiwgMjExLCAxMDUsIDE5LCAyMCwgODUsIDI0NSwgMjUxLCAxOSwgMjAsIDg1LCAyNDUsIAorICAgIDE2OCwgMTksIDIwLCAyMTIsIDIxOSwgMTksIDIwLCAyMTIsIDIxNSwgMTksIDIwLCAyMTAsIDEyOCwgMTksIDIwLCAxODAsIAorICAgIDIxMCwgMTI4LCAxOSwgMjAsIDIxMCwgMTEyLCAxOSwgMjAsIDE4MCwgMjEwLCAxMTIsIDE5LCAyMCwgMjEwLCAxMTEsIDE5LCAKKyAgICAyMCwgMTgwLCAyMTAsIDExMSwgMTksIDIwLCAxMDUsIDE5LCAyMCwgMTgwLCAxMDUsIDE5LCAyMCwgMjEwLCAxMDQsIDE5LCAKKyAgICAyMCwgMTgwLCAyMTAsIDEwNCwgMTksIDIwLCAyMTAsIDEzMCwgMTksIDIwLCAxODAsIDIxMCwgMTMwLCAxOSwgMjAsIDIxMCwgCisgICAgMTI5LCAxOSwgMjAsIDE4MCwgMjEwLCAxMjksIDE5LCAyMCwgMjI1LCAxOTQsIDIxMCwgMTI5LCAxOSwgMjAsIDIxMywgMTAsIAorICAgIDE5LCAyMCwgMjEwLCAyMDMsIDE5LCAyMCwgMjEwLCAxODcsIDE5LCAyMCwgMjEwLCAxODUsIDE5LCAyMCwgMjEwLCAyMDgsIAorICAgIDE5LCAyMCwgMjMxLCAyMjQsIDE5LCAyMCwgMjMyLCA1OSwgMTksIDIwLCAyMzEsIDEyMywgMTksIDIwLCAyMzEsIDExMSwgCisgICAgMTksIDIwLCAyMzEsIDUzLCAxOSwgMjAsIDIzMSwgMzMsIDE5LCAyMCwgMjA2LCAxMjIsIDIzMSwgMzMsIDE5LCAyMCwgMTcyLCAKKyAgICAxOSwgMjAsIDIzMiwgNjMsIDE5LCAyMCwgMjMwLCAxOTAsIDE5LCAyMCwgMTgwLCAyMzAsIDE5MCwgMTksIDIwLCAyMzAsIAorICAgIDE4OCwgMTksIDIwLCAxODAsIDIzMCwgMTg4LCAxOSwgMjAsIDIzMCwgMTg3LCAxOSwgMjAsIDE4MCwgMjMwLCAxODcsIDE5LCAKKyAgICAyMCwgMjMwLCAxODUsIDE5LCAyMCwgMTgwLCAyMzAsIDE4NSwgMTksIDIwLCAyMzAsIDE4NCwgMTksIDIwLCAxODAsIDIzMCwgCisgICAgMTg0LCAxOSwgMjAsIDIzMCwgMTk1LCAxOSwgMjAsIDE4MCwgMjMwLCAxOTUsIDE5LCAyMCwgMjMwLCAxOTQsIDE5LCAyMCwgCisgICAgMTgwLCAyMzAsIDE5NCwgMTksIDIwLCAyMjUsIDE5NCwgMjMwLCAxOTQsIDE5LCAyMCwgMjMyLCA3NiwgMTksIDIwLCAyMzAsIAorICAgIDE5NiwgMTksIDIwLCAyMTQsIDE2MiwgMjMxLCAyMTQsIDE5LCAyMCwgMjE0LCAxNjIsIDIzMSwgMTEyLCAxOSwgMjAsIDIxNCwgCisgICAgMTYyLCAyMzEsIDQ3LCAxOSwgMjAsIDIxNCwgMTYyLCAyMzIsIDQzLCAxOSwgMjAsIDI0OCwgMTQ4LCAxOSwgMjAsIDI0OCwgCisgICAgMjU1LCAxOSwgMjAsIDI0NywgMjUxLCAxOSwgMjAsIDI0NywgMjQxLCAxOSwgMjAsIDI0NywgMTc0LCAxOSwgMjAsIDI0NywgCisgICAgMTA1LCAxOSwgMjAsIDIwNiwgMTIyLCAyNDcsIDEwNSwgMTksIDIwLCAyNDksIDEsIDE5LCAyMCwgMjQ5LCAwLCAxOSwgMjAsIAorICAgIDI0NywgNSwgMTksIDIwLCAxODAsIDI0NywgNSwgMTksIDIwLCAyNDcsIDMsIDE5LCAyMCwgMTgwLCAyNDcsIDMsIDE5LCAyMCwgCisgICAgMjQ3LCAyLCAxOSwgMjAsIDE4MCwgMjQ3LCAyLCAxOSwgMjAsIDI0NywgMSwgMTksIDIwLCAxODAsIDI0NywgMSwgMTksIDIwLCAKKyAgICAyNDcsIDAsIDE5LCAyMCwgMTgwLCAyNDcsIDAsIDE5LCAyMCwgMjQ3LCA3LCAxOSwgMjAsIDE4MCwgMjQ3LCA3LCAxOSwgMjAsIAorICAgIDI0NywgNiwgMTksIDIwLCAxODAsIDI0NywgNiwgMTksIDIwLCAyMjUsIDE5NCwgMjQ3LCA2LCAxOSwgMjAsIDI0OSwgMzQsIAorICAgIDE5LCAyMCwgMjE3LCAxMTQsIDIxMiwgNTgsIDE5LCAyMCwgMjI3LCAxMTksIDE5LCAyMCwgMjI4LCAxNywgMTksIDIwLCAKKyAgICAyMjYsIDI1NCwgMTksIDIwLCAyMjYsIDIyNCwgMTksIDIwLCAyMjYsIDE4MSwgMTksIDIwLCAyMjYsIDE1MCwgMTksIDIwLCAKKyAgICAyMDYsIDEyMiwgMjI2LCAxNTAsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIyOCwgMTgsIDE5LCAyMCwgMjI2LCA0OCwgMTksIAorICAgIDIwLCAxODAsIDIyNiwgNDgsIDE5LCAyMCwgMjI2LCA0NiwgMTksIDIwLCAxODAsIDIyNiwgNDYsIDE5LCAyMCwgMjI2LCA0NSwgCisgICAgMTksIDIwLCAxODAsIDIyNiwgNDUsIDE5LCAyMCwgMjI2LCA0NCwgMTksIDIwLCAxODAsIDIyNiwgNDQsIDE5LCAyMCwgMjI2LCAKKyAgICA0MywgMTksIDIwLCAxODAsIDIyNiwgNDMsIDE5LCAyMCwgMjI2LCA1MCwgMTksIDIwLCAxODAsIDIyNiwgNTAsIDE5LCAyMCwgCisgICAgMjI2LCA0OSwgMTksIDIwLCAxODAsIDIyNiwgNDksIDE5LCAyMCwgMjI1LCAxOTQsIDIyNiwgNDksIDE5LCAyMCwgMjI5LCAKKyAgICAyOCwgMTksIDIwLCAxODAsIDIyOSwgMjgsIDE5LCAyMCwgMjI3LCAyLCAxOSwgMjAsIDI1MSwgMTk4LCAyMjksIDI4LCAxOSwgCisgICAgMjAsIDIxNywgMTE0LCAyMjksIDI4LCAxOSwgMjAsIDIyNSwgMTEwLCAxOSwgMjAsIDIyNSwgMjMxLCAxOSwgMjAsIDIyNCwgCisgICAgMjMwLCAxOSwgMjAsIDIyNCwgMjA1LCAxOSwgMjAsIDIyNCwgNjcsIDE5LCAyMCwgMjI0LCA1NiwgMTksIDIwLCAyMDYsIAorICAgIDEyMiwgMjI0LCA1NiwgMTksIDIwLCAxOTksIDE5LCAyMCwgMjI1LCAyMzIsIDE5LCAyMCwgMjIzLCAxNTEsIDE5LCAyMCwgCisgICAgMTgwLCAyMjMsIDE1MSwgMTksIDIwLCAyMjMsIDE1MywgMTksIDIwLCAxODAsIDIyMywgMTUzLCAxOSwgMjAsIDIyMywgMTUyLCAKKyAgICAxOSwgMjAsIDE4MCwgMjIzLCAxNTIsIDE5LCAyMCwgMjI1LCAxOTQsIDIyMywgMTUyLCAxOSwgMjAsIDIyNiwgMzMsIDE5LCAKKyAgICAyMCwgODUsIDIyNSwgNzksIDE5LCAyMCwgMjI0LCAyMzUsIDE5LCAyMCwgMjMwLCA1OCwgMTksIDIwLCAyMzAsIDEzOSwgMTksIAorICAgIDIwLCAyMjksIDIzNSwgMTksIDIwLCAyMjksIDIxOSwgMTksIDIwLCAyMjksIDE0NCwgMTksIDIwLCAyMjksIDExNSwgMTksIAorICAgIDIwLCAyMDYsIDEyMiwgMjI5LCAxMTUsIDE5LCAyMCwgMjMwLCAxNDEsIDE5LCAyMCwgMjMwLCAxNDAsIDE5LCAyMCwgMjI5LCAKKyAgICA0OCwgMTksIDIwLCAxODAsIDIyOSwgNDgsIDE5LCAyMCwgMjI5LCA0NywgMTksIDIwLCAxODAsIDIyOSwgNDcsIDE5LCAyMCwgCisgICAgMjI5LCA0NiwgMTksIDIwLCAxODAsIDIyOSwgNDYsIDE5LCAyMCwgMjI5LCA0NSwgMTksIDIwLCAxODAsIDIyOSwgNDUsIDE5LCAKKyAgICAyMCwgMjI5LCA0NCwgMTksIDIwLCAxODAsIDIyOSwgNDQsIDE5LCAyMCwgMjI5LCA1MCwgMTksIDIwLCAxODAsIDIyOSwgNTAsIAorICAgIDE5LCAyMCwgMjI5LCA0OSwgMTksIDIwLCAxODAsIDIyOSwgNDksIDE5LCAyMCwgMTQ5LCAxOSwgMjAsIDE4MCwgMTQ5LCAxOSwgCisgICAgMjAsIDE2OSwgMTQ5LCAxOSwgMjAsIDIxNywgODYsIDE5LCAyMCwgMjE3LCAxOTQsIDE5LCAyMCwgMjE1LCA4MCwgMTksIDIwLCAKKyAgICAyMTUsIDYxLCAxOSwgMjAsIDIxNCwgMTkzLCAxOSwgMjAsIDIxNCwgMTc0LCAxOSwgMjAsIDIwNiwgMTIyLCAyMTQsIDE3NCwgCisgICAgMTksIDIwLCAyMTcsIDE5OSwgMTksIDIwLCAyMTcsIDE5NiwgMTksIDIwLCAyMTMsIDEwOCwgMTksIDIwLCAxODAsIDIxMywgCisgICAgMTA4LCAxOSwgMjAsIDIxMywgMTAyLCAxOSwgMjAsIDE4MCwgMjEzLCAxMDIsIDE5LCAyMCwgMjEzLCAxMDEsIDE5LCAyMCwgCisgICAgMTgwLCAyMTMsIDEwMSwgMTksIDIwLCAyMTMsIDk3LCAxOSwgMjAsIDE4MCwgMjEzLCA5NywgMTksIDIwLCAyMTMsIDk2LCAKKyAgICAxOSwgMjAsIDE4MCwgMjEzLCA5NiwgMTksIDIwLCAyMTMsIDExMiwgMTksIDIwLCAxODAsIDIxMywgMTEyLCAxOSwgMjAsIAorICAgIDIxMywgMTExLCAxOSwgMjAsIDE4MCwgMjEzLCAxMTEsIDE5LCAyMCwgMjI1LCAxOTQsIDIxMywgMTExLCAxOSwgMjAsIDE4MiwgCisgICAgMTksIDIwLCAyNTEsIDE5OCwgMTgyLCAxOSwgMjAsIDIxMywgMTEzLCAxOSwgMjAsIDI0OSwgMTk5LCAxODIsIDE5LCAyMCwgCisgICAgMjI2LCAxNDMsIDIxNCwgMjQ4LCAxOSwgMjAsIDIyNSwgMTk0LCAyMTQsIDIzOSwgMTksIDIwLCAyMjUsIDE5NCwgMjE3LCAKKyAgICAyNTUsIDE5LCAyMCwgMjI1LCAxOTQsIDIxNCwgMTA5LCAxOSwgMjAsIDIyNSwgMTk0LCAyMTMsIDIwNiwgMTksIDIwLCAyMjUsIAorICAgIDE5NCwgMjE0LCAyMzgsIDE5LCAyMCwgMjI1LCAxOTQsIDIxNywgODksIDE5LCAyMCwgMjE1LCAyMTQsIDE5LCAyMCwgMjE1LCAKKyAgICAxODMsIDE5LCAyMCwgMjE1LCAxNzgsIDE5LCAyMCwgMjE1LCAxNTgsIDE5LCAyMCwgMjE1LCAxNTIsIDE5LCAyMCwgMjE2LCAKKyAgICAyLCAxOSwgMjAsIDIxNSwgMjU0LCAxOSwgMjAsIDIxNSwgOTUsIDE5LCAyMCwgMTgwLCAyMTUsIDk1LCAxOSwgMjAsIDIxNSwgCisgICAgOTQsIDE5LCAyMCwgMTgwLCAyMTUsIDk0LCAxOSwgMjAsIDIxNSwgOTMsIDE5LCAyMCwgMTgwLCAyMTUsIDkzLCAxOSwgMjAsIAorICAgIDIxNSwgOTIsIDE5LCAyMCwgMTgwLCAyMTUsIDkyLCAxOSwgMjAsIDIxNSwgOTEsIDE5LCAyMCwgMTgwLCAyMTUsIDkxLCAxOSwgCisgICAgMjAsIDIxNSwgOTgsIDE5LCAyMCwgMTgwLCAyMTUsIDk4LCAxOSwgMjAsIDIxNSwgOTcsIDE5LCAyMCwgMTgwLCAyMTUsIDk3LCAKKyAgICAxOSwgMjAsIDIxNiwgNCwgMTksIDIwLCAyMDYsIDUyLCAxOSwgMjAsIDIwNiwgMTA3LCAxOSwgMjAsIDIwNiwgMTEsIDE5LCAKKyAgICAyMCwgMjA2LCAyLCAxOSwgMjAsIDIwNSwgMjQ3LCAxOSwgMjAsIDIwNSwgMjMyLCAxOSwgMjAsIDIwNiwgMTIyLCAyMDUsIAorICAgIDIzMiwgMTksIDIwLCAxOTAsIDE5LCAyMCwgMjA2LCAxMDksIDE5LCAyMCwgMjA1LCAxNzQsIDE5LCAyMCwgMTgwLCAyMDUsIAorICAgIDE3NCwgMTksIDIwLCAyMDUsIDE3MywgMTksIDIwLCAxODAsIDIwNSwgMTczLCAxOSwgMjAsIDIwNSwgMTcyLCAxOSwgMjAsIAorICAgIDE4MCwgMjA1LCAxNzIsIDE5LCAyMCwgMjA1LCAxNzEsIDE5LCAyMCwgMTgwLCAyMDUsIDE3MSwgMTksIDIwLCAyMDUsIDE3MCwgCisgICAgMTksIDIwLCAxODAsIDIwNSwgMTcwLCAxOSwgMjAsIDIwNSwgMTc2LCAxOSwgMjAsIDE4MCwgMjA1LCAxNzYsIDE5LCAyMCwgCisgICAgMjA1LCAxNzUsIDE5LCAyMCwgMTgwLCAyMDUsIDE3NSwgMTksIDIwLCAyMjUsIDE5NCwgMjA1LCAxNzUsIDE5LCAyMCwgMjA2LCAKKyAgICAxMjMsIDE5LCAyMCwgMjQ5LCAyNDIsIDIwNiwgMTIzLCAxOSwgMjAsIDE4MCwgMjA2LCAxMjMsIDE5LCAyMCwgMjE3LCAxMTQsIAorICAgIDIwNiwgMTEsIDE5LCAyMCwgMjE5LCA1MSwgMTksIDIwLCAyMTksIDE0OSwgMjE5LCA1MSwgMTksIDIwLCAxODAsIDIzMCwgCisgICAgNTgsIDE5LCAyMCwgMjE5LCAxMDgsIDE5LCAyMCwgMjE4LCAyMDgsIDE5LCAyMCwgMjE4LCAxNTQsIDE5LCAyMCwgMjE4LCAKKyAgICAxMjQsIDE5LCAyMCwgMjE4LCAxMDcsIDE5LCAyMCwgMTgwLCAyMjksIDE0NCwgMTksIDIwLCAyMTksIDExMywgMTksIDIwLCAKKyAgICAyMTksIDEwOSwgMTksIDIwLCAxODAsIDIzMCwgMTQxLCAxOSwgMjAsIDIxOCwgMTcsIDE5LCAyMCwgMTgwLCAyMTgsIDE3LCAKKyAgICAxOSwgMjAsIDEzNywgMTksIDIwLCAxODAsIDEzNywgMTksIDIwLCAxNjksIDEzNywgMTksIDIwLCAyNDIsIDI4LCAxOSwgMjAsIAorICAgIDI0MiwgNzAsIDE5LCAyMCwgMjQxLCAyNTAsIDE5LCAyMCwgMjQxLCAyMzcsIDE5LCAyMCwgMjQxLCAxNjIsIDE5LCAyMCwgCisgICAgMjQxLCAxNTEsIDE5LCAyMCwgMjQyLCA3MywgMTksIDIwLCAyNDIsIDcyLCAxOSwgMjAsIDI0MSwgNjUsIDE5LCAyMCwgMTgwLCAKKyAgICAyNDEsIDY1LCAxOSwgMjAsIDI0MiwgMTM5LCAxOSwgMjAsIDIxMiwgNDEsIDE5LCAyMCwgMjI2LCAzMSwgMjEyLCA0MSwgMTksIAorICAgIDIwLCAyMTIsIDE5LCAxOSwgMjAsIDIyNiwgMzEsIDIxMiwgMTksIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMjYsIDMxLCAKKyAgICAyMTIsIDEzLCAxOSwgMjAsIDIxMSwgMjUzLCAxOSwgMjAsIDIxMSwgMjQ4LCAxOSwgMjAsIDIxMiwgNTYsIDE5LCAyMCwgCisgICAgMjEyLCA1NSwgMTksIDIwLCAyMTEsIDIyMSwgMTksIDIwLCAxODAsIDIxMSwgMjIxLCAxOSwgMjAsIDIxMiwgNTgsIDE5LCAKKyAgICAyMCwgMjEwLCAxOTQsIDE5LCAyMCwgMjEwLCAxOTIsIDE5LCAyMCwgMjEwLCAxOTEsIDE5LCAyMCwgMjEwLCAxOTYsIDE5LCAKKyAgICAyMCwgMjEwLCAxOTcsIDE5LCAyMCwgMjEwLCA5OCwgMTksIDIwLCAyMTAsIDk3LCAxOSwgMjAsIDIxMCwgOTYsIDE5LCAyMCwgCisgICAgMjEwLCAxMDAsIDE5LCAyMCwgMjIzLCAxNzIsIDIzOSwgNzEsIDE5LCAyMCwgMjIzLCAxNzIsIDIzOSwgMTEsIDE5LCAyMCwgCisgICAgMjIzLCAxNzIsIDIzOCwgMjQ3LCAxOSwgMjAsIDIyMywgMTcyLCAyMzgsIDE0OSwgMTksIDIwLCAyMjMsIDE3MiwgMjM4LCAKKyAgICAxMzEsIDE5LCAyMCwgMjIzLCAxNzIsIDE1NSwgMTksIDIwLCAyMjMsIDE3MiwgMjM5LCAxNDEsIDE5LCAyMCwgMjIzLCAxNzIsIAorICAgIDIzOSwgMTU1LCAxOSwgMjAsIDIyMywgMTcxLCAyMzksIDE1NSwgMTksIDIwLCAyMzgsIDIzOSwgMTksIDIwLCAyMjAsIDE1LCAKKyAgICAxOSwgMjAsIDIxOSwgMjM3LCAxOSwgMjAsIDIxOSwgMjMyLCAxOSwgMjAsIDIxOSwgMjI2LCAxOSwgMjAsIDIxOSwgMjIxLCAKKyAgICAxOSwgMjAsIDIyMCwgMTksIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMjAsIDI3LCAxOSwgMjAsIDIxMSwgMTQzLCAxOSwgCisgICAgMjAsIDIxMSwgMTQxLCAxOSwgMjAsIDIxMSwgMTQwLCAxOSwgMjAsIDIxMSwgMTQ0LCAxOSwgMjAsIDE4MCwgMjE5LCA1MSwgCisgICAgMTksIDIwLCAxODAsIDIxOCwgMjA4LCAxOSwgMjAsIDE4MCwgMjE4LCAxMjQsIDE5LCAyMCwgMTgwLCAyMTksIDExMywgMTksIAorICAgIDIwLCAyMjUsIDc1LCAxOSwgMjAsIDIyNSwgMjUsIDE5LCAyMCwgMjI1LCAyMSwgMTksIDIwLCAyMjUsIDIsIDE5LCAyMCwgCisgICAgMjI0LCAyNTMsIDE5LCAyMCwgMjI1LCA3NywgMTksIDIwLCAyMjUsIDc2LCAxOSwgMjAsIDIyNSwgNzksIDE5LCAyMCwgMjI0LCAKKyAgICA5NiwgMTksIDIwLCAyMTcsIDExNCwgMjE1LCAyMTQsIDE5LCAyMCwgMjE3LCAxMTQsIDIxNSwgMTgzLCAxOSwgMjAsIDIxNywgCisgICAgMTE0LCAyMTUsIDE1OCwgMTksIDIwLCAyMTcsIDExNCwgMjE2LCAyLCAxOSwgMjAsIDIwNiwgMjM2LCAyMTIsIDQxLCAxOSwgCisgICAgMjAsIDIwNiwgMjM2LCAyMTIsIDE5LCAxOSwgMjAsIDIwNiwgMjM2LCAyMTEsIDI1MywgMTksIDIwLCAyMDYsIDIzNiwgMjEyLCAKKyAgICA1NiwgMTksIDIwLCAyMDYsIDIzNiwgMjEyLCA1OCwgMTksIDIwLCAyMjksIDI0MiwgMTksIDIwLCAyMjksIDI0MSwgMTksIAorICAgIDIwLCAyMjksIDI0MCwgMTksIDIwLCAyMjksIDIzOSwgMTksIDIwLCAyMjksIDI0OCwgMTksIDIwLCAyMjksIDI0NywgMTksIAorICAgIDIwLCAyMjksIDI0OSwgMTksIDIwLCAyMTIsIDU3LCAyMTIsIDQxLCAxOSwgMjAsIDIxMiwgNTcsIDIxMiwgMTksIDE5LCAyMCwgCisgICAgMjEyLCA1NywgMjEyLCAxMywgMTksIDIwLCAyMTIsIDU3LCAyMTEsIDI1MywgMTksIDIwLCAyMTIsIDU3LCAyMTEsIDI0OCwgCisgICAgMTksIDIwLCAyMTIsIDU3LCAyMTIsIDU2LCAxOSwgMjAsIDIxMiwgNTcsIDIxMiwgNTUsIDE5LCAyMCwgMjEyLCA1NywgMjEyLCAKKyAgICA1OCwgMTksIDIwLCAyNTIsIDE5MiwgMjUxLCAxNTAsIDE5LCAyMCwgMjQ5LCAxOTksIDc1LCAxOSwgMjAsIDI0OSwgMTk5LCAKKyAgICA3NCwgMTksIDIwLCAyNDksIDE5OSwgNzYsIDE5LCAyMCwgMjQ5LCAxOTksIDYyLCAxOSwgMjAsIDI0OSwgMTk5LCAyMDcsIAorICAgIDUxLCAxOSwgMjAsIDI0OSwgMTk5LCAyMDcsIDIwLCAxOSwgMjAsIDI0OSwgMTk5LCAyMDYsIDI1MCwgMTksIDIwLCAyNDksIAorICAgIDE5OSwgMjA3LCA5NiwgMTksIDIwLCAyNDksIDE5OSwgMjI1LCAxMTAsIDE5LCAyMCwgMjQ5LCAxOTksIDIyNCwgMjMwLCAxOSwgCisgICAgMjAsIDI0OSwgMTk5LCAyMjQsIDY3LCAxOSwgMjAsIDI0OSwgMTk5LCAxOTksIDE5LCAyMCwgMjQ5LCAxOTksIDIzMSwgMjI0LCAKKyAgICAxOSwgMjAsIDI0OSwgMTk5LCAyMzEsIDEyMywgMTksIDIwLCAyNDksIDE5OSwgMjMxLCA1MywgMTksIDIwLCAyNDksIDE5OSwgCisgICAgMTcyLCAxOSwgMjAsIDIxNywgMTE0LCAyMzksIDcxLCAxOSwgMjAsIDIxNywgMTE0LCAyMzksIDExLCAxOSwgMjAsIDIxNywgCisgICAgMTE0LCAyMzgsIDE0OSwgMTksIDIwLCAyMTcsIDExNCwgMTU1LCAxOSwgMjAsIDg1LCAyNDAsIDY3LCAxOSwgMjAsIDg1LCAKKyAgICAyNDAsIDcxLCAxOSwgMjAsIDg1LCAyNDAsIDg1LCAxOSwgMjAsIDg1LCAyNDAsIDg0LCAxOSwgMjAsIDg1LCAyNDAsIDczLCAKKyAgICAxOSwgMjAsIDg1LCAyNDAsIDk5LCAxOSwgMjAsIDg1LCAyMTgsIDUwLCAxOSwgMjAsIDg1LCAyMTgsIDEyNCwgMTksIDIwLCAKKyAgICA4NSwgMjE5LCA1MSwgMTksIDIwLCA4NSwgMjE5LCAyOSwgMTksIDIwLCA4NSwgMjE4LCAyMDgsIDE5LCAyMCwgODUsIDIxOSwgCisgICAgMTEzLCAxOSwgMjAsIDg1LCAyMDYsIDIxNiwgMTksIDIwLCA4NSwgMjA2LCAyNTAsIDE5LCAyMCwgODUsIDIwNywgNTEsIDE5LCAKKyAgICAyMCwgODUsIDIwNywgNDUsIDE5LCAyMCwgODUsIDIwNywgMjAsIDE5LCAyMCwgODUsIDIwNywgOTYsIDE5LCAyMCwgODUsIAorICAgIDIzOCwgOSwgMTksIDIwLCA4NSwgMjM4LCAxMCwgMTksIDIwLCA4NSwgMjM4LCAxMywgMTksIDIwLCA4NSwgMjM4LCAxMiwgCisgICAgMTksIDIwLCA4NSwgMjM4LCAxMSwgMTksIDIwLCA4NSwgMjM4LCAxNiwgMTksIDIwLCA4NSwgMjExLCAyMzAsIDE5LCAyMCwgCisgICAgODUsIDIxMSwgMjUzLCAxOSwgMjAsIDg1LCAyMTIsIDQxLCAxOSwgMjAsIDg1LCAyMTIsIDM5LCAxOSwgMjAsIDg1LCAyMTIsIAorICAgIDE5LCAxOSwgMjAsIDg1LCAyMTIsIDU2LCAxOSwgMjAsIDg1LCAyMTAsIDE3NSwgMTksIDIwLCA4NSwgMjEwLCAxODUsIDE5LCAKKyAgICAyMCwgODUsIDIxMCwgMjAzLCAxOSwgMjAsIDg1LCAyMTAsIDIwMiwgMTksIDIwLCA4NSwgMjEwLCAxODcsIDE5LCAyMCwgODUsIAorICAgIDIxMCwgMjA4LCAxOSwgMjAsIDg1LCAyMjAsIDgyLCAxOSwgMjAsIDg1LCAyMjAsIDIxMSwgMTksIDIwLCA4NSwgMjIxLCAKKyAgICAxNzQsIDE5LCAyMCwgODUsIDIyMSwgMTY0LCAxOSwgMjAsIDg1LCAyMjEsIDUzLCAxOSwgMjAsIDg1LCAxNzksIDE5LCAyMCwgCisgICAgODUsIDIyMiwgNjcsIDE5LCAyMCwgODUsIDIzOSwgMjEzLCAxOSwgMjAsIDg1LCAyNDAsIDE5LCAxOSwgMjAsIDg1LCAyNDAsIAorICAgIDE3MCwgMTksIDIwLCA4NSwgMjQwLCAxNjIsIDE5LCAyMCwgODUsIDI0MCwgNjEsIDE5LCAyMCwgODUsIDI0MCwgMjQ0LCAxOSwgCisgICAgMjAsIDg1LCAyMzEsIDEzMiwgMTksIDIwLCA4NSwgMjMxLCAxMzgsIDE5LCAyMCwgODUsIDIzMSwgMTUyLCAxOSwgMjAsIDg1LCAKKyAgICAyMzEsIDE1MSwgMTksIDIwLCA4NSwgMjMxLCAxNDUsIDE5LCAyMCwgODUsIDIzMSwgMTY3LCAxOSwgMjAsIDg1LCAyMzEsIAorICAgIDY3LCAxOSwgMjAsIDg1LCAyMzEsIDY4LCAxOSwgMjAsIDg1LCAyMzEsIDcxLCAxOSwgMjAsIDg1LCAyMzEsIDcwLCAxOSwgCisgICAgMjAsIDg1LCAyMzEsIDY5LCAxOSwgMjAsIDg1LCAyMzEsIDcyLCAxOSwgMjAsIDg1LCAyMzEsIDczLCAxOSwgMjAsIDg1LCAKKyAgICAyMjMsIDIxNywgMTksIDIwLCA4NSwgMjI0LCA2NywgMTksIDIwLCA4NSwgMjI1LCAxMTAsIDE5LCAyMCwgODUsIDIyNSwgCisgICAgMTA2LCAxOSwgMjAsIDg1LCAyMjQsIDIzMCwgMTksIDIwLCA4NSwgMTk5LCAxOSwgMjAsIDg1LCAyMjYsIDExNCwgMTksIDIwLCAKKyAgICA4NSwgMjI2LCAxODEsIDE5LCAyMCwgODUsIDIyNywgMTE5LCAxOSwgMjAsIDg1LCAyMjcsIDEwNywgMTksIDIwLCA4NSwgCisgICAgMjI2LCAyNTQsIDE5LCAyMCwgODUsIDE4NSwgMTksIDIwLCA4NSwgMjA1LCAyMTMsIDE5LCAyMCwgODUsIDIwNSwgMjQ3LCAKKyAgICAxOSwgMjAsIDg1LCAyMDYsIDUyLCAxOSwgMjAsIDg1LCAyMDYsIDQ5LCAxOSwgMjAsIDg1LCAyMDYsIDExLCAxOSwgMjAsIAorICAgIDg1LCAxOTAsIDE5LCAyMCwgODUsIDIzMiwgMTA0LCAxOSwgMjAsIDIxNywgMTE0LCAyMzIsIDEwNCwgMTksIDIwLCA4NSwgCisgICAgMjMyLCAxMjIsIDE5LCAyMCwgODUsIDIzMiwgMTgyLCAxOSwgMjAsIDg1LCAyMzIsIDE4MCwgMTksIDIwLCA4NSwgMjMyLCAKKyAgICAxNjIsIDE5LCAyMCwgMjE3LCAxMTQsIDIzMiwgMTYyLCAxOSwgMjAsIDg1LCAyMzIsIDIwMCwgMTksIDIwLCA4NSwgMjMyLCAKKyAgICAxMzUsIDE5LCAyMCwgODUsIDIzMiwgMTM5LCAxOSwgMjAsIDg1LCAyMzIsIDE0OSwgMTksIDIwLCA4NSwgMjMyLCAxNDgsIAorICAgIDE5LCAyMCwgODUsIDIzMiwgMTQ3LCAxOSwgMjAsIDg1LCAyMzIsIDE1MCwgMTksIDIwLCA4NSwgMjI5LCA4MSwgMTksIDIwLCAKKyAgICA4NSwgMjI5LCAxNDQsIDE5LCAyMCwgODUsIDIzMCwgNTgsIDE5LCAyMCwgODUsIDIzMCwgNTAsIDE5LCAyMCwgODUsIDIyOSwgCisgICAgMjM1LCAxOSwgMjAsIDg1LCAyMzAsIDE0MSwgMTksIDIwLCA4NSwgMjQ1LCA1NSwgMTksIDIwLCA4NSwgMjQ1LCA1NiwgMTksIAorICAgIDIwLCA4NSwgMjQ1LCA2MSwgMTksIDIwLCA4NSwgMjQ1LCA2MCwgMTksIDIwLCA4NSwgMjQ1LCA1NywgMTksIDIwLCA4NSwgCisgICAgMjQ1LCA2MiwgMTksIDIwLCA4NSwgMjI5LCAyMzgsIDE5LCAyMCwgODUsIDIyOSwgMjQwLCAxOSwgMjAsIDg1LCAyMjksIAorICAgIDI0NCwgMTksIDIwLCA4NSwgMjI5LCAyNDMsIDE5LCAyMCwgODUsIDIyOSwgMjQyLCAxOSwgMjAsIDg1LCAyMjksIDI0OCwgCisgICAgMTksIDIwLCA4NSwgMjExLCAxMzgsIDE5LCAyMCwgODUsIDIxMSwgMTQwLCAxOSwgMjAsIDg1LCAyMTEsIDE0MywgMTksIDIwLCAKKyAgICA4NSwgMjExLCAxNDIsIDE5LCAyMCwgODUsIDIxMSwgMTQxLCAxOSwgMjAsIDg1LCAyMTEsIDE0NCwgMTksIDIwLCA4NSwgCisgICAgMjExLCAxMzMsIDE5LCAyMCwgODUsIDIxMSwgMTM0LCAxOSwgMjAsIDg1LCAyMTEsIDE0NiwgMTksIDIwLCA4NSwgMjExLCAKKyAgICAxNDUsIDE5LCAyMCwgODUsIDIxMSwgMTM1LCAxOSwgMjAsIDg1LCAyMTEsIDE0NywgMTksIDIwLCA4NSwgMjA1LCA5LCAxOSwgCisgICAgMjAsIDg1LCAyMDUsIDE5LCAxOSwgMjAsIDg1LCAyMDUsIDkzLCAxOSwgMjAsIDg1LCAyMDUsIDkxLCAxOSwgMjAsIDg1LCAKKyAgICAyMDUsIDQwLCAxOSwgMjAsIDg1LCAyMDUsIDExNiwgMTksIDIwLCA4NSwgMjA1LCAxNTksIDE5LCAyMCwgODUsIDc4LCAyMDUsIAorICAgIDE1OSwgMTksIDIwLCA4NSwgMjQzLCAxODMsIDE5LCAyMCwgODUsIDI0MywgMTg0LCAxOSwgMjAsIDg1LCAyNDMsIDE5MywgCisgICAgMTksIDIwLCA4NSwgMjQzLCAxOTIsIDE5LCAyMCwgODUsIDI0MywgMTg3LCAxOSwgMjAsIDg1LCAyNDMsIDE5NiwgMTksIDIwLCAKKyAgICA4NSwgMjEzLCAyMDMsIDE5LCAyMCwgODUsIDIxNCwgMTkzLCAxOSwgMjAsIDg1LCAyMTcsIDg2LCAxOSwgMjAsIDg1LCAyMTcsIAorICAgIDc0LCAxOSwgMjAsIDg1LCAyMTUsIDgwLCAxOSwgMjAsIDg1LCAyMTcsIDE5OSwgMTksIDIwLCA4NSwgMjE1LCAxMTYsIDE5LCAKKyAgICAyMCwgODUsIDIxNSwgMTU4LCAxOSwgMjAsIDg1LCAyMTUsIDIxNCwgMTksIDIwLCA4NSwgMjE1LCAyMTIsIDE5LCAyMCwgODUsIAorICAgIDIxNSwgMTgzLCAxOSwgMjAsIDg1LCAyMTYsIDIsIDE5LCAyMCwgODUsIDIxNiwgNCwgMTksIDIwLCA4NSwgMjEwLCAyMTYsIAorICAgIDE5LCAyMCwgODUsIDIxMCwgMjIwLCAxOSwgMjAsIDg1LCAyMTAsIDIzNywgMTksIDIwLCA4NSwgMjEwLCAyMzYsIDE5LCAyMCwgCisgICAgODUsIDIxMCwgMjIyLCAxOSwgMjAsIDg1LCAyMTAsIDI0MywgMTksIDIwLCA4NSwgMjQ4LCAxNCwgMTksIDIwLCA4NSwgMjQ4LCAKKyAgICAzMiwgMTksIDIwLCA4NSwgMjQ4LCA4MiwgMTksIDIwLCA4NSwgMjQ4LCA3OCwgMTksIDIwLCA4NSwgMjQ4LCA1OCwgMTksIAorICAgIDIwLCA4NSwgMjQ4LCAxMTAsIDE5LCAyMCwgODUsIDIxMCwgMTc4LCAxOSwgMjAsIDg1LCAyMTAsIDE3OSwgMTksIDIwLCA4NSwgCisgICAgMjEwLCAxODIsIDE5LCAyMCwgODUsIDIxMCwgMTgxLCAxOSwgMjAsIDg1LCAyMTAsIDE4MCwgMTksIDIwLCA4NSwgMjEwLCAKKyAgICAxODMsIDE5LCAyMCwgMjQ4LCA1OSwgNTMsIDE5LCAyMCwgMjQxLCA4MiwgMjEzLCAyNTEsIDE5LCAyMCwgMjIwLCAxMSwgMTksIAorICAgIDIwLCAyMjUsIDczLCAxOSwgMjAsIDIyNCwgOTMsIDE5LCAyMCwgMjI0LCA5MiwgMTksIDIwLCAyMjQsIDkxLCAxOSwgMjAsIAorICAgIDIyNCwgOTAsIDE5LCAyMCwgMjI0LCA5NSwgMTksIDIwLCAyMjQsIDk0LCAxOSwgMjAsIDIwNiwgMjM2LCAyMTEsIDIxOSwgCisgICAgMTksIDIwLCAyMDYsIDIzNiwgMjExLCAyMTgsIDE5LCAyMCwgMjA2LCAyMzYsIDIxMSwgMjE3LCAxOSwgMjAsIDIwNiwgMjM2LCAKKyAgICAyMTEsIDIxNiwgMTksIDIwLCAyMDYsIDIzNiwgMjExLCAyMTUsIDE5LCAyMCwgMjA2LCAyMzYsIDIxMSwgMjIyLCAxOSwgMjAsIAorICAgIDIwNiwgMjM2LCAyMTEsIDIyMSwgMTksIDIwLCAyMDYsIDIzNiwgNDIsIDIxMiwgNTgsIDE5LCAyMCwgMjQ5LCAxOTksIDIwNywgCisgICAgMTI5LCAyMjIsIDE5OCwgMjE0LCAxNTQsIDgzLCAyMjIsIDE5OCwgMSwgMjUwLCAzMiwgMjIyLCAxOTgsIDEsIDIyOSwgNjgsIAorICAgIDIyMiwgMTk4LCAxLCAyNDIsIDI1LCAyMjIsIDE5OCwgMSwgMjE3LCAxNzksIDIyMiwgMTk4LCAxLCAyMjQsIDE4OCwgMjIyLCAKKyAgICAxOTgsIDEsIDIxMCwgMTUsIDIyMiwgMTk4LCAxLCAyNDYsIDExOSwgMjIyLCAxOTgsIDEsIDIxMSwgMTcwLCAyMjIsIDE5OCwgCisgICAgMSwgMjQ3LCAxNjUsIDIyMiwgMTk4LCAxLCAyNDgsIDEzNiwgMjIyLCAxOTgsIDEsIDIyNiwgMTAxLCAyMjIsIDE5OCwgMSwgCisgICAgMjQwLCAwLCAyMjIsIDE5OCwgMSwgMjI1LCA2MywgMjIyLCAxOTgsIDEsIDIxMywgMjQ0LCAyMjIsIDE5OCwgMSwgMjE4LCAKKyAgICA0NCwgMjIyLCAxOTgsIDEsIDI1MiwgMjAyLCAyMjIsIDE5OCwgMSwgMjIyLCAxNTYsIDIyMiwgMTk4LCAxLCAyMDksIDE5NCwgCisgICAgMjIyLCAxOTgsIDEsIDI0MywgMTI4LCAyMjIsIDE5OCwgMSwgMjMyLCAyNTIsIDIyMiwgMTk4LCAxLCAyNDMsIDEyOSwgMjIyLCAKKyAgICAxOTgsIDEsIDIyMiwgMTIyLCAyMjIsIDE5OCwgMSwgMjA5LCAyNTAsIDIyMiwgMTk4LCAxLCAyMzMsIDEwOCwgMjIyLCAxOTgsIAorICAgIDEsIDI0MywgMTI2LCAyMjIsIDE5OCwgMSwgMjIxLCAxNTQsIDIyMiwgMTk4LCAyNDIsIDI0LCA4MywgMjIyLCAxOTgsIDIxOCwgCisgICAgMjI0LCAyNDIsIDI0LCA4MywgMTgxLCAxLCAyNDIsIDE0LCAyNDIsIDYsIDI0MiwgMjksIDI0MiwgMTM5LCAxODEsIDEsIAorICAgIDIwOSwgMTQ4LCAxODEsIDEsIDIwOSwgMTc5LCAyMDksIDE5NSwgNzEsIDE4MSwgMSwgMjA1LCAyMTYsIDE4MSwgMSwgMjA2LCAKKyAgICAxMjMsIDE4MSwgMSwgMjA3LCAxMjksIDE4MSwgMSwgMjExLCAyMjQsIDIxMSwgMjIzLCAyMTEsIDI0NiwgMTgxLCAxLCAyNDIsIAorICAgIDE5NiwgMTgxLCAxLCAyNTIsIDkyLCA2MiwgMTgxLCAxLCAyMjIsIDEwNywgNzYsIDE4MSwgMSwgMjUzLCAyNSwgNjIsIDE4MSwgCisgICAgMSwgMjUyLCAyMzIsIDE4MSwgMSwgMjI5LCAxMjEsIDc2LCAxODEsIDEsIDIxNSwgMTM3LCA3NiwgMTgxLCAxLCA3NiwgMTgxLCAKKyAgICAxLCAyMjIsIDIwNiwgMTgxLCAxLCAyMjIsIDE2NSwgMTgxLCAxLCAyMTksIDg4LCAyMTksIDEwMSwgMjE5LCAxNCwgMTM3LCAKKyAgICAxODEsIDEsIDIzMSwgMjM5LCAxODEsIDEsIDI0OCwgMTMyLCAxODEsIDEsIDIzMSwgMjQwLCAyMzIsIDc2LCAxODEsIDEsIAorICAgIDI0MSwgNTUsIDE4MSwgMSwgMjQzLCAyOCwgMTgxLCAxLCAyNDAsIDE2NSwgMjM5LCAxNjEsIDI0MSwgNTUsIDE4MSwgMSwgCisgICAgMjQwLCAyMDQsIDE4MSwgMSwgMjA2LCAyMDgsIDIwNiwgMTk5LCAyMDcsIDEyOSwgMTgxLCAxLCAyMzksIDEzMywgMjM5LCAKKyAgICAxNTUsIDE4MSwgMSwgMjM5LCAxMzcsIDIzOSwgMTU1LCAxODEsIDEsIDIyOSwgMTIzLCAyMzksIDE1NSwgMTgxLCAxLCAyMTUsIAorICAgIDE0MCwgMjM5LCAxNTUsIDE4MSwgMSwgMjI1LCAxODksIDIyMywgMTM1LCAyMjUsIDE5MCwgMjI2LCAzMywgMTgxLCAxLCAKKyAgICAyMTUsIDEzOCwgMjI2LCAzMywgMTgxLCAxLCAyNDQsIDE4LCAxODEsIDEsIDIzMiwgMjMxLCAyMzIsIDIzNSwgMjMyLCAyMjIsIAorICAgIDc0LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMiwgMTczLCAyMzIsIDIwMywgMTgxLCAxLCAyNDAsIDE0OSwgMTgxLCAxLCAKKyAgICAyMjksIDEyNCwgMjUyLCAyNDgsIDE4MSwgMSwgMjE1LCAxNDIsIDYyLCAxODEsIDEsIDIzMiwgMjE0LCAyNDMsIDIsIDE4MSwgCisgICAgMSwgMjIxLCAxMTEsIDIyMSwgMTM2LCAyMjIsIDY3LCAxODEsIDEsIDI1MiwgMTY1LCAyNDMsIDAsIDE4MSwgMSwgMjE0LCAKKyAgICAxNTksIDE4MiwgMTgxLCAxLCAyMTUsIDY1LCAyMjksIDEyMCwgMTgyLCAxODEsIDEsIDIxNSwgMTM2LCAxODIsIDE4MSwgMSwgCisgICAgMjQ5LCAzNCwgMTgxLCAxLCAyMDUsIDE1OSwgMTgxLCAxLCAyMTEsIDE1MiwgMjExLCAxNjMsIDIxMCwgODcsIDIxMywgMTAsIAorICAgIDE4MSwgMSwgMjE1LCAxMzUsIDIxMywgMTAsIDE4MSwgMSwgMjQ2LCAyNDAsIDE4MSwgMSwgMjUwLCAxMywgMjUwLCAxNiwgCisgICAgMjQ5LCAyMDUsIDI1MSwgMTUwLCAxODEsIDEsIDIxNSwgMTQxLCAyNTEsIDE1MCwgMTgxLCAxLCAyNDQsIDE3LCAxODEsIDEsIAorICAgIDIyMiwgMTM2LCAxODEsIDEsIDI0MywgOTEsIDI0MywgOTMsIDc1LCAxODEsIDEsIDIyNywgMjEyLCAyMjcsIDIyMiwgMjI5LCAKKyAgICAyOCwgMTgxLCAxLCAyMjksIDEyMiwgMjI5LCAyOCwgMTgxLCAxLCAyMTUsIDEzOSwgMjI5LCAyOCwgMTgxLCAxLCAyMzAsIAorICAgIDczLCAyMzAsIDExOSwgMjI5LCAxMzEsIDE0OSwgMTgxLCAxLCAyNDQsIDE5LCAxODEsIDEsIDIzMywgNDEsIDE4MSwgMSwgCisgICAgMjMzLCA0MiwgMTgxLCAxLCAyNDYsIDEzMywgMjQ2LCAxMzksIDI0NiwgMjQwLCAxODEsIDEsIDIyMiwgMTAxLCAyNDIsIAorICAgIDE5NSwgNzYsIDE4MSwgMSwgMjQzLCAxMjQsIDE4MSwgMSwgMjMyLCAyNTEsIDE4MSwgMSwgMjQ3LCA0LCAxODEsIDEsIDI0OCwgCisgICAgMjQwLCAxODEsIDEsIDI0OCwgMTQ3LCAxODEsIDEsIDIxNCwgMzEsIDE4MSwgMSwgMjI5LCAxMTksIDE4MSwgMSwgMjE1LCAKKyAgICAxMzQsIDE4MSwgMSwgMjM3LCAxODAsIDE4MSwgMSwgMjIwLCAyNywgMTgxLCAxLCAyMDYsIDE5NSwgMTgxLCAyMTUsIDQxLCAKKyAgICAyMjAsIDcxLCAxODEsIDIyNiwgOTUsIDIyMCwgNzEsIDE4MSwgMjQ3LCA2MCwgMjIwLCA3MSwgMTgxLCAyNTIsIDEsIDkzLCAKKyAgICAxODEsIDIxMCwgMTMyLCA5MywgMTgxLCAyNTAsIDMwLCA5MywgMTgxLCAxLCAyMzIsIDc2LCAxODEsIDEsIDIxNiwgNCwgCisgICAgMTgxLCAxLCAyMjIsIDE1MiwgMTgxLCAxLCAyNDEsIDEwOSwgMjQ4LCAxODYsIDIyMiwgMTA2LCAxODEsIDEsIDI0MSwgMTA5LCAKKyAgICAyNDgsIDE4NiwgMjMyLCAyMzQsIDE4MSwgMSwgMjQxLCAxMDksIDI0OCwgMTg2LCAyNDMsIDkyLCAxODEsIDEsIDI0MSwgCisgICAgMTA5LCAyNDgsIDE4NiwgMjUzLCAyNCwgMTgxLCAxLCAyNDEsIDEwOSwgMjQ4LCAxODYsIDI1MiwgMjMyLCAyMTIsIDE5NywgCisgICAgMSwgNjIsIDIxMiwgMTk3LCAxLCA3NCwgMjEyLCAxOTcsIDEsIDcxLCAyMTIsIDE5NywgMSwgMTcyLCAyMTIsIDE5NywgMSwgCisgICAgMjQwLCAyNDQsIDIxMiwgMTk3LCAxLCAyMjUsIDc3LCAyMTIsIDE5NywgMSwgMjEyLCAyMTksIDIxMiwgMTk3LCAxLCAyNDYsIAorICAgIDE0NSwgMjEyLCAxOTcsIDEsIDE5OSwgMjEyLCAxOTcsIDEsIDE3OSwgMjEyLCAxOTcsIDEsIDI1MCwgMTgzLCAyMTIsIDE5NywgCisgICAgMSwgMTg1LCAyMTIsIDE5NywgMSwgMTkwLCAyMTIsIDE5NywgMSwgMjMwLCAxNDEsIDIxMiwgMTk3LCAxLCAyMDcsIDk2LCAKKyAgICAyMTIsIDE5NywgMSwgMjE3LCAxOTksIDIxMiwgMTk3LCAxLCAxNTUsIDIxMiwgMTk3LCAyMiwgMywgNzQsIDIxMiwgMTk3LCAKKyAgICAyMiwgMywgNzEsIDIxMiwgMTk3LCAzLCAyMDgsIDE4OCwgMjM5LCA5OSwgMSwgNjIsIDIzOSwgOTksIDEsIDc0LCAyMzksIAorICAgIDk5LCAxLCA3MSwgMjM5LCA5OSwgMSwgMTcyLCAyMzksIDk5LCAxLCAyNDAsIDI0NCwgMjM5LCA5OSwgMSwgMjI1LCA3NywgCisgICAgMjM5LCA5OSwgMSwgMjEyLCAyMTksIDIzOSwgOTksIDEsIDI0NiwgMTQ1LCAyMzksIDk5LCAxLCAxOTksIDIzOSwgOTksIDEsIAorICAgIDE3OSwgMjM5LCA5OSwgMSwgMjUwLCAxODMsIDIzOSwgOTksIDEsIDE4NSwgMjM5LCA5OSwgMSwgMTkwLCAyMzksIDk5LCAxLCAKKyAgICAyMTksIDExMywgMjM5LCA5OSwgMSwgMjMwLCAxNDEsIDIzOSwgOTksIDEsIDIwNywgOTYsIDIzOSwgOTksIDEsIDIxNywgCisgICAgMTk5LCAyMzksIDk5LCAxLCAxNTUsIDIzOSwgOTksIDIyLCAzLCA3NCwgMjM5LCA5OSwgMjIsIDMsIDcxLCAyMzksIDk5LCAzLCAKKyAgICAyMjIsIDgsIDIyMSwgNzEsIDIxNSwgNDEsIDIyMCwgNzEsIDIyMSwgNzEsIDUwLCAyMjAsIDcxLCAyNDksIDkzLCAxLCA2MiwgCisgICAgMjQ5LCA5MywgMSwgNzQsIDI0OSwgOTMsIDEsIDcxLCAyNDksIDkzLCAxLCAxNzIsIDI0OSwgOTMsIDEsIDI0MCwgMjQ0LCAKKyAgICAyNDksIDkzLCAxLCAyMjUsIDc3LCAyNDksIDkzLCAxLCAyMTIsIDIxOSwgMjQ5LCA5MywgMSwgMjQ2LCAxNDUsIDI0OSwgOTMsIAorICAgIDEsIDE5OSwgMjQ5LCA5MywgMSwgMTc5LCAyNDksIDkzLCAxLCAyNTAsIDE4MywgMjQ5LCA5MywgMSwgMTg1LCAyNDksIDkzLCAKKyAgICAxLCAxOTAsIDI0OSwgOTMsIDEsIDIxOSwgMTEzLCAyNDksIDkzLCAxLCAyMzAsIDE0MSwgMjQ5LCA5MywgMSwgMjA3LCA5NiwgCisgICAgMjQ5LCA5MywgMSwgMjE3LCAxOTksIDI0OSwgOTMsIDEsIDE1NSwgMjQ5LCA5MywgMjIsIDMsIDc0LCAyNDksIDkzLCAyMiwgCisgICAgMywgNzEsIDIxMiwgMTk2LCAxLCA2MiwgMjEyLCAxOTYsIDEsIDc0LCAyMTIsIDE5NiwgMSwgNzEsIDIxMiwgMTk2LCAxLCAKKyAgICAxNzIsIDIxMiwgMTk2LCAxLCAyNDAsIDI0NCwgMjEyLCAxOTYsIDEsIDIyNSwgNzcsIDIxMiwgMTk2LCAxLCAyMTIsIDIxOSwgCisgICAgMjEyLCAxOTYsIDEsIDI0NiwgMTQ1LCAyMTIsIDE5NiwgMSwgMTk5LCAyMTIsIDE5NiwgMSwgMTc5LCAyMTIsIDE5NiwgMSwgCisgICAgMjUwLCAxODMsIDIxMiwgMTk2LCAxLCAxODUsIDIxMiwgMTk2LCAxLCAxOTAsIDIxMiwgMTk2LCAxLCAyMzAsIDE0MSwgMjEyLCAKKyAgICAxOTYsIDEsIDIwNywgOTYsIDIxMiwgMTk2LCAxLCAyMTcsIDE5OSwgMjEyLCAxOTYsIDIyLCAzLCA3NCwgMjEyLCAxOTYsIAorICAgIDIyLCAzLCA3MSwgODIsIDEsIDE3MiwgODIsIDEsIDIzMSwgMTY3LCA4MiwgMSwgMjMxLCA1MywgODIsIDEsIDIzMSwgMTM4LCAKKyAgICA4MiwgMSwgMjI1LCAyLCA4MiwgMSwgMjQ5LCAxLCA4MiwgMSwgMjQ4LCAxMTAsIDgyLCAxLCAyNDcsIDE3NCwgODIsIDEsIAorICAgIDI0OCwgMzIsIDgyLCAxLCAyMjMsIDExMCwgODIsIDEsIDI0NiwgMTQ1LCA4MiwgMSwgMjEwLCAxOTYsIDgyLCAxLCAyNDUsIAorICAgIDUxLCA4MiwgMSwgMjEwLCAxOTEsIDgyLCAxLCAyMjQsIDczLCA4MiwgMSwgMjEyLCAyMTksIDgyLCAxLCAyMTIsIDU2LCA4MiwgCisgICAgMSwgMTI0LCA4MiwgMSwgMjExLCAyNTMsIDgyLCAxLCAyMjQsIDY3LCA4MiwgMSwgMjUwLCAxODMsIDgyLCAxLCAyMjEsIDkzLCAKKyAgICA4MiwgMSwgMjIwLCAyMTEsIDgyLCAxLCAyMjEsIDY2LCA4MiwgMSwgMjI2LCAxODEsIDgyLCAxLCAyMDUsIDI0NywgODIsIDEsIAorICAgIDIxOCwgMTI0LCA4MiwgMSwgMjI5LCAxNDQsIDgyLCAxLCAyMDgsIDE3MywgODIsIDEsIDIxNiwgMiwgODIsIDEsIDIxNCwgCisgICAgNTYsIDgyLCAxLCAyMTcsIDE5OSwgODIsIDEsIDE1NSwgODIsIDEsIDIzMCwgMTQxLCA4MiwgMSwgMjIwLCAxOSwgODIsIAorICAgIDIzMywgNTUsIDIyLCAyMjAsIDUsIDgyLCAyMzMsIDU1LCAyMiwgMjIwLCAxOCwgODIsIDIzMywgNTUsIDIyLCAyMTksIDIzNywgCisgICAgODIsIDIzMywgNTUsIDIyLCAyMTksIDIzMiwgODIsIDIzMywgNTUsIDIyLCAyMTksIDIxNCwgODIsIDIzMywgNTUsIDIyLCAKKyAgICAyMTksIDE4NCwgODIsIDIzMywgNTUsIDIyLCAyMTksIDE3MiwgODIsIDIzMywgNTUsIDIyLCAyMTksIDE3MSwgODIsIDIzMywgCisgICAgNTUsIDIyLCAyMTgsIDksIDgyLCAyMzMsIDU1LCAyMiwgMjE4LCAyLCA4MiwgMjMzLCA1NSwgMjIsIDIyOSwgNDIsIDgyLCAKKyAgICAyMzMsIDU1LCAyMiwgMjI5LCAzMSwgODIsIDIzMywgNTUsIDIyLCAyMTksIDI1NSwgODIsIDIzMywgNTUsIDIyLCAyMjAsIAorICAgIDExLCA4MiwgMjMzLCA1NSwgMjIsIDIxOSwgMjIyLCAyMTAsIDk1LCAxMDIsIDgyLCAyMzMsIDU1LCAyMiwgMjE5LCAyMjIsIAorICAgIDIxMCwgOTUsIDEwNSwgODIsIDIzMywgNTUsIDIyLCAyMjAsIDEsIDgyLCAyMiwgMjMzLCA0MCwgMjUyLCA0MSwgODIsIDIyLCAKKyAgICAyMzMsIDQwLCAyNTMsIDE2NCwgODIsIDIyLCAzLCAyNTMsIDE2NCwgODIsIDIyLCAzLCA3NCwgODIsIDIyLCAzLCAyMzMsIAorICAgIDEwMiwgODIsIDIyLCAzLCAyMDYsIDEyMywgODIsIDIyLCAzLCAyMDUsIDE2OSwgODIsIDIyLCAzLCA3MSwgODIsIDIyLCAzLCAKKyAgICAyMDksIDE2MiwgODIsIDIyLCAzLCAyMTAsIDE4LCA4MiwgMjIsIDMsIDIyMiwgMjA2LCA4MiwgMjIsIDMsIDE5MCwgODIsIAorICAgIDIyLCAzLCAyMzMsIDEyOSwgODIsIDIyLCAzLCA3NSwgODIsIDIyLCAzLCAyNTIsIDI0OCwgODIsIDIyLCAzLCAyNTIsIDIwNSwgCisgICAgODIsIDIyLCAzLCAyMjIsIDE1MiwgODIsIDIyLCAzLCAyNTEsIDE4NCwgODIsIDMsIDIyNCwgMjAzLCA4MiwgMywgMjE5LCAKKyAgICA0OSwgODIsIDMsIDIwNSwgMTgwLCA4MiwgMywgMjI2LCA2MCwgODIsIDMsIDIxMSwgMzksIDgyLCAzLCAyNTAsIDEzMSwgODIsIAorICAgIDMsIDIxOCwgMTE5LCA4MiwgMywgMjExLCAxMjgsIDgyLCAzLCAyMzIsIDM0LCA4MiwgMywgMjUyLCAyMDcsIDgyLCAzLCAKKyAgICAyMTcsIDE1MiwgMjE3LCAxNDUsIDgyLCAzLCAyMDgsIDE4NSwgODIsIDMsIDI0NywgMTY4LCA4MiwgMywgMjUwLCAxMDQsIAorICAgIDgyLCAzLCAyMzEsIDE1OSwgODIsIDMsIDI1MCwgMTI2LCA4MiwgMywgMjQ4LCAyMjksIDIyMSwgMTYsIDIzMCwgMjAxLCA4MiwgCisgICAgMywgMjMwLCAyNywgMjExLCAxMDUsIDgyLCAzLCAyNTAsIDIsIDgyLCAzLCAyMjEsIDY4LCAyMjYsIDExMSwgODIsIDMsIAorICAgIDIzMSwgMzEsIDgyLCAyNDcsIDI1LCAxNiwgMjE4LCAyMDAsIDgyLCAzLCAyNTEsIDE2NiwgODIsIDMsIDI1MSwgMTg3LCA4MiwgCisgICAgMTgsIDIwNSwgODUsIDgyLCAxOCwgMTAyLCA4MiwgMTgsIDEwNSwgODIsIDE4LCAxNDIsIDgyLCAxOCwgMTM5LCA4MiwgMTgsIAorICAgIDE2OCwgODIsIDE4LCAxODQsIDgyLCAxOCwgMTk1LCA4MiwgMTgsIDE5MywgODIsIDE4LCAyMDAsIDgyLCAxNiwgMjMwLCAyNywgCisgICAgMjUxLCAxODksIDIxNCwgMTc3LCA4MiwgMTYsIDIzMCwgMjcsIDI1MSwgMTg5LCAyMjYsIDgwLCA4MiwgMTYsIDIzMCwgMjcsIAorICAgIDI1MSwgMTg5LCAyMjEsIDE1LCA4MiwgMTYsIDIzMCwgMjcsIDI1MSwgMTg5LCAyNTAsIDMzLCA4MiwgMTYsIDIzMCwgMjcsIAorICAgIDI1MSwgMTg5LCAyNDksIDczLCA4MiwgMTYsIDIzMCwgMjcsIDI1MSwgMTg5LCAyMjAsIDE1MiwgODIsIDE2LCAyMzAsIDI3LCAKKyAgICAyNTEsIDE4OSwgMjIwLCAxNDYsIDgyLCAxNiwgMjMwLCAyNywgMjUxLCAxODksIDIyMCwgMTQ0LCA4MiwgMTYsIDIzMCwgMjcsIAorICAgIDI1MSwgMTg5LCAyMjAsIDE1MCwgODIsIDE2LCAyMzAsIDI3LCAyNTEsIDE4OSwgMjIwLCAxNDgsIDkwLCAyNDksIDIxNywgCisgICAgOTAsIDI0MywgNTQsIDkwLCAyNDcsIDE1NSwgOTAsIDI0MSwgODIsIDIxMywgMjUxLCA5MCwgMjQ3LCAxNjIsIDkwLCAyNDEsIAorICAgIDEyNSwgMjQ1LCAyMSwgOTAsIDIxMSwgMTI3LCAyMTQsIDE4NywgMjM3LCAyMzksIDkwLCAyMTUsIDc4LCA0LCAyNDksIDE1MCwgCisgICAgMjI3LCAxODcsIDkwLCAyMjcsIDIxOCwgMjQ3LCAxNTUsIDkwLCAyMjcsIDIxOCwgMjQxLCA4MiwgMjEzLCAyNTEsIDkwLCAKKyAgICAyMjQsIDE4NiwgOTAsIDI0MSwgMTA4LCA1NCwgMjE3LCA2MCwgMTAyLCA5MCwgMjQxLCAxMDgsIDU0LCAyMTcsIDYwLCAxMDUsIAorICAgIDkwLCAyNDEsIDEwOCwgNTQsIDIxNywgNjAsIDE0MiwgOTAsIDIyLCAyMTYsIDM5LCA5MCwgMTgsIDIwNSwgODUsIDkwLCAxOCwgCisgICAgMTAyLCA5MCwgMTgsIDEwNSwgOTAsIDE4LCAxNDIsIDkwLCAxOCwgMTM5LCA5MCwgMTgsIDE2OCwgOTAsIDE4LCAxODQsIDkwLCAKKyAgICAxOCwgMTk1LCA5MCwgMTgsIDE5MywgOTAsIDE4LCAyMDAsIDkwLCAxLCA2MiwgOTAsIDEsIDc1LCA5MCwgMSwgNzQsIDkwLCAKKyAgICAxLCA3NiwgOTAsIDEsIDcxLCA5MCwgMSwgMjIyLCAyMDYsIDkwLCAxLCAyMTAsIDMsIDkwLCAxLCAyNDMsIDEwNCwgOTAsIDEsIAorICAgIDE5OSwgOTAsIDEsIDI1MiwgMTE0LCA5MCwgMSwgMjUwLCAxODMsIDkwLCAxLCAxNzksIDkwLCAxLCAyMjAsIDE5LCA5MCwgMSwgCisgICAgMjQwLCAyNDQsIDkwLCAxLCAxODUsIDkwLCAxLCAyMzAsIDE0MSwgOTAsIDEsIDIxNywgMTk5LCA5MCwgMSwgMjE2LCAyLCAKKyAgICA5MCwgMSwgMjEyLCAyMTksIDkwLCAxLCAyNDYsIDE0NSwgOTAsIDEsIDI0OCwgMTEwLCA5MCwgMSwgMjMyLCAyMDAsIDkwLCAKKyAgICAxLCAxOTAsIDkwLCAxLCAyMTksIDExMywgOTAsIDEsIDIwNywgOTYsIDkwLCAxLCAyNDIsIDczLCA5MCwgMSwgMTcyLCA5MCwgCisgICAgMSwgMjMxLCAxNjcsIDkwLCAxLCAyMTAsIDI0MywgOTAsIDEsIDIwNSwgMTE2LCA5MCwgMSwgMjM5LCAxNDEsIDkwLCAxLCAKKyAgICAyMDUsIDEyLCA5MCwgMSwgMjI5LCAyNDgsIDkwLCAxLCAyMDUsIDY3LCA5MCwgMSwgMjQ4LCA1OCwgOTAsIDEsIDIxMSwgCisgICAgMTI3LCAxNTIsIDIyLCA1MywgOTAsIDEsIDIxMSwgMTI3LCA3NSwgOTAsIDEsIDIxMSwgMTI3LCA3NCwgOTAsIDEsIDIxMSwgCisgICAgMTI3LCA3NiwgOTAsIDEsIDIxMSwgMTI3LCA3MSwgOTAsIDEsIDIxMSwgMTI3LCAyMjIsIDIwNiwgOTAsIDEsIDIxMSwgMTI3LCAKKyAgICAyMTAsIDMsIDkwLCAxLCAyMTEsIDEyNywgMjUyLCAxMTQsIDkwLCAxLCAyMTEsIDEyNywgMjUwLCAxODMsIDkwLCAxLCAyMTEsIAorICAgIDEyNywgMTc5LCA5MCwgMSwgMjExLCAxMjcsIDIyMCwgMTksIDkwLCAxLCAyMTEsIDEyNywgMjQwLCAyNDQsIDkwLCAxLCAKKyAgICAyMTEsIDEyNywgMTg1LCA5MCwgMSwgMjExLCAxMjcsIDIxMiwgMjE5LCA5MCwgMSwgMjExLCAxMjcsIDI0NiwgMTQ1LCA5MCwgCisgICAgMSwgMjExLCAxMjcsIDI0OCwgMTEwLCA5MCwgMSwgMjExLCAxMjcsIDIzMiwgMjAwLCA5MCwgMSwgMjExLCAxMjcsIDIxMCwgCisgICAgMjQzLCA5MCwgMSwgMjExLCAxMjcsIDE5MCwgOTAsIDEsIDIxMSwgMTI3LCAyMDcsIDk2LCA5MCwgMSwgMjExLCAxMjcsIAorICAgIDE3MiwgOTAsIDEsIDIxMSwgMTI3LCAyNDAsIDI0MSwgOTAsIDEsIDIxMSwgMTI3LCAyMzksIDE0MSwgOTAsIDEsIDIxMSwgCisgICAgMTI3LCAyMzIsIDE2MSwgOTAsIDEsIDIxMSwgMTI3LCAyMjQsIDIyOCwgOTAsIDEsIDIxMSwgMTI3LCAyNDMsIDE5NiwgOTAsIAorICAgIDEsIDIxNSwgNzgsIDc1LCA5MCwgMSwgMjE1LCA3OCwgNzQsIDkwLCAxLCAyMTUsIDc4LCAyMzIsIDIxMSwgOTAsIDEsIDIxNSwgCisgICAgNzgsIDIxMCwgMywgOTAsIDEsIDIxNSwgNzgsIDcxLCA5MCwgMSwgMjE1LCA3OCwgMjUyLCAxMTQsIDkwLCAxLCAyMTUsIDc4LCAKKyAgICAxNzIsIDkwLCAxLCAyMTUsIDc4LCAyNDAsIDI0NCwgOTAsIDEsIDIxNSwgNzgsIDE1NSwgOTAsIDEsIDIxNSwgNzgsIDE3OSwgCisgICAgOTAsIDEsIDIxNSwgNzgsIDIxNiwgMiwgOTAsIDEsIDIxNSwgNzgsIDIxMiwgMjE5LCA5MCwgMSwgMjE1LCA3OCwgMjQ2LCAKKyAgICAxNDUsIDkwLCAxLCAyMTUsIDc4LCAyMzIsIDIwMCwgOTAsIDEsIDIxNSwgNzgsIDI0MiwgNzMsIDkwLCAxLCAyMTUsIDc4LCAKKyAgICAyNDAsIDI0MSwgOTAsIDEsIDIxNSwgNzgsIDIzOSwgMTQxLCA5MCwgMSwgMjE1LCA3OCwgMjEwLCAyNDMsIDkwLCAxLCAyMTUsIAorICAgIDc4LCAyMDUsIDExNiwgOTAsIDEsIDIxNSwgNzgsIDIxOSwgMTA5LCA5MCwgMSwgMjE1LCA3OCwgMjQ4LCAxMTAsIDkwLCAxLCAKKyAgICAyMTUsIDc4LCAyMDUsIDgxLCA5MCwgMSwgMjI3LCAyMTgsIDc0LCA5MCwgMSwgMjI3LCAyMTgsIDE3MiwgOTAsIDEsIDIyNywgCisgICAgMjE4LCAyMTksIDExMywgOTAsIDEsIDIyNywgMjE4LCAyNDIsIDczLCA5MCwgMSwgMjI3LCAyMTgsIDIwNSwgODEsIDkwLCAxLCAKKyAgICAyNTIsIDE2NCwgMjQwLCAyMjQsIDI1MiwgNzQsIDEwMiwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjA4LCAxODQsIAorICAgIDEwMiwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjQ2LCAxMDgsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIxMCwgCisgICAgMTMsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIzMywgMiwgMjEwLCAxMywgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIAorICAgIDIyNCwgMjUwLCAxNDMsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIDEyOSwgMjUwLCAxNDMsIDkwLCAxLCAyNTIsIDE2NCwgCisgICAgMjQwLCAyMjQsIDYyLCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCA3NCwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgCisgICAgMTcyLCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMjUsIDc3LCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNDksIAorICAgIDEsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIxMCwgMjA4LCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMTAsIAorICAgIDE5NiwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjQ2LCA1NCwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjI0LCAKKyAgICAxMDMsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIxMiwgMjE5LCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNDYsIAorICAgIDE0NSwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMTc5LCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMjEsIDkzLCAKKyAgICA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMTQsIDk2LCA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMDUsIDgxLCAKKyAgICA5MCwgMSwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMDUsIDExNiwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjUyLCAyMTMsIAorICAgIDkwLCAxLCAyMTEsIDEyNywgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMTIsIDIxOSwgOTAsIDEsIDIxMSwgMTI3LCAyNTIsIDE2NCwgCisgICAgMjQwLCAyMjQsIDIwNSwgODEsIDkwLCAxLCAyMjcsIDIxOCwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNDAsIDk5LCA5MCwgMSwgCisgICAgMjI3LCAyMTgsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjI1LCA3NywgOTAsIDEsIDIyNywgMjE4LCAyNTIsIDE2NCwgMjQwLCAKKyAgICAyMjQsIDI0OSwgMSwgOTAsIDEsIDIyNywgMjE4LCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIzMiwgMTcwLCA5MCwgMSwgMjI3LCAKKyAgICAyMTgsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjEwLCAyMDgsIDkwLCAxLCAyMjcsIDIxOCwgMjUyLCAxNjQsIDI0MCwgMjI0LCAKKyAgICAyNDYsIDM4LCA5MCwgMSwgMjI3LCAyMTgsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjEyLCAyMTksIDkwLCAxLCAyMjcsIDIxOCwgCisgICAgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNDUsIDE5MiwgOTAsIDEsIDIyNywgMjE4LCAyNTIsIDE2NCwgMjQwLCAyMjQsIDIxNCwgCisgICAgOTYsIDkwLCAxLCAyMjcsIDIxOCwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNDYsIDI1NCwgOTAsIDEsIDIyNywgMjE4LCAyNTIsIAorICAgIDE2NCwgMjQwLCAyMjQsIDIwNSwgODEsIDkwLCAxLCAyMjcsIDIxOCwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyMDUsIDExNiwgCisgICAgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMTYwLCA3MSwgOTAsIDEsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMTYwLCAxOTAsIAorICAgIDkwLCAxLCAyMjcsIDIxOCwgMjUyLCAxNjQsIDI0MCwgMjI0LCAyNTAsIDAsIDkwLCAxLCAyNTIsIDE2NCwgMjQwLCAyMjQsIAorICAgIDI0NiwgMTM0LCA5MCwgMSwgMjI3LCAyMTgsIDI1MiwgMTY0LCAyNDAsIDIyNCwgMjI5LCAyNDgsIDE5LCAyMCwgMjIyLCA3MSwgCisgICAgMTksIDIwLCAyNTEsIDE1OSwgMTksIDIwLCAyNTMsIDExOSwgMTksIDIwLCAyMDcsIDU0LCAxOSwgMjAsIDIyMCwgMTU4LCAKKyAgICAxOSwgMjAsIDIyMSwgMTgzLCAxOSwgMjAsIDIyMCwgMzYsIDE5LCAyMCwgMjEyLCAxNDAsIDE5LCAyMCwgMjMxLCAyMzEsIAorICAgIDE5LCAyMCwgMjMwLCAxOTIsIDE5LCAyMCwgMjI3LCAxNjIsIDE5LCAyMCwgMjI0LCAyNiwgMTksIDIwLCAyMjUsIDE4NSwgCisgICAgMTksIDIwLCAyMzAsIDY4LCAxOSwgMjAsIDIxNCwgMTU3LCAxOSwgMjAsIDIxNywgMTE2LCAxOSwgMjAsIDIxNSwgMTI0LCAKKyAgICAxOSwgMjAsIDIxNSwgMjE4LCAxOSwgMjAsIDIxNSwgOTAsIDE5LCAyMCwgMjA1LCAyMjIsIDE5LCAyMCwgMjA2LCA1OCwgMTksIAorICAgIDIwLCAyMTksIDU4LCAxOSwgMjAsIDIyMywgMTUwLCAxOSwgMjAsIDIyMiwgMTg3LCAyMjMsIDE1MCwgMTksIDIwLCAyMjMsIAorICAgIDE0OSwgMTksIDIwLCAyMjIsIDE4NywgMjIzLCAxNDksIDE5LCAyMCwgMjIzLCAxNDgsIDE5LCAyMCwgMjIyLCAxODcsIDIyMywgCisgICAgMTQ4LCAxOSwgMjAsIDIyMywgMTQ3LCAxOSwgMjAsIDIyMiwgMTg3LCAyMjMsIDE0NywgMTksIDIwLCAyMTgsIDE0LCAxOSwgCisgICAgMjAsIDIxOCwgMTMsIDE5LCAyMCwgMjE4LCAxMiwgMTksIDIwLCAyMTgsIDExLCAxOSwgMjAsIDIxOCwgMTAsIDE5LCAyMCwgCisgICAgMjE4LCAxOCwgMTksIDIwLCAyMjIsIDE4NywgMjIyLCA2NywgMTksIDIwLCAyMjIsIDE4NywgMjEzLCAxMCwgMTksIDIwLCAKKyAgICAyMjIsIDE4NywgMjMyLCA3NiwgMTksIDIwLCAyMjIsIDE4NywgMjQ5LCAzNCwgMTksIDIwLCAyMjIsIDE4NywgMjI5LCAyOCwgCisgICAgMTksIDIwLCAyMjIsIDE4NywgMjI2LCAzMywgMTksIDIwLCAyMjIsIDE4NywgMTgyLCAxOSwgMjAsIDIyMiwgMTg3LCAyMTYsIAorICAgIDQsIDE5LCAyMCwgMjQzLCAxMTUsIDIwNywgMTI5LCAxOSwgMjAsIDIwNywgMzQsIDIwNywgMTI5LCAxOSwgMjAsIDQyLCA1LCAKKyAgICAyMTgsIDE0OCwgMTksIDIwLCA0MiwgMjE5LCA4MSwgMjQ1LCAyMywgMTksIDIwLCAyMTksIDE0OSwgMjE4LCAxNSwgMTksIAorICAgIDIwLCAxODAsIDIyOSwgMTE1LCAxOSwgMjAsIDE4MCwgMjMwLCAxNDAsIDE5LCAyMCwgMjExLCAyMjAsIDE5LCAyMCwgMjExLCAKKyAgICAyMjIsIDE5LCAyMCwgMjEwLCAxODgsIDE5LCAyMCwgMjEwLCAxOTAsIDE5LCAyMCwgMjEwLCAxOTUsIDE5LCAyMCwgMjExLCAKKyAgICAxMzcsIDE5LCAyMCwgMjExLCAxMzksIDE5LCAyMCwgMjE3LCAxMTQsIDIxNSwgOTUsIDE5LCAyMCwgMjE3LCAxMTQsIDIxNSwgCisgICAgMTUyLCAxOSwgMjAsIDIxNywgMTE0LCAyMzgsIDEzMSwgMTksIDIwLCA4NSwgMjM5LCAxNjksIDE5LCAyMCwgODUsIDI0NSwgCisgICAgMjI1LCAyNDAsIDE2MiwgMTksIDIwLCA4NSwgMjQwLCAyNDEsIDE5LCAyMCwgODUsIDIzOSwgMTc0LCAxOSwgMjAsIDIxNywgCisgICAgMTE0LCAyMzIsIDg2LCAxOSwgMjAsIDg1LCAyMzIsIDg0LCAxOSwgMjAsIDI1MCwgNTMsIDI0NSwgMjI1LCAxNDksIDE5LCAKKyAgICAyMCwgMjUwLCA1MywgMjQ1LCAyMjUsIDEzNywgMTksIDIwLCA4NSwgMjQ1LCAyMjAsIDE4MiwgMjI5LCAyMTUsIDIwOCwgCisgICAgMTU0LCAyMzAsIDUsIDIyOSwgMjE1LCAxLCAxNzIsIDIyOSwgMjE1LCAxLCAyMzEsIDE2NywgMjI5LCAyMTUsIDEsIDI0MCwgCisgICAgMjQ0LCAyMjksIDIxNSwgMSwgMjQwLCA5OSwgMjI5LCAyMTUsIDEsIDIyNSwgNzcsIDIyOSwgMjE1LCAxLCAyNDksIDEsIAorICAgIDIyOSwgMjE1LCAxLCAyNDgsIDExMCwgMjI5LCAyMTUsIDEsIDIzMiwgMjAwLCAyMjksIDIxNSwgMSwgMjMyLCAxNzAsIDIyOSwgCisgICAgMjE1LCAxLCAyMDYsIDc3LCAyMjksIDIxNSwgMSwgMjEyLCAyMTksIDIyOSwgMjE1LCAxLCAyMTIsIDU2LCAyMjksIDIxNSwgCisgICAgMSwgMjQ2LCAxNDUsIDIyOSwgMjE1LCAxLCAyNDUsIDE5MiwgMjI5LCAyMTUsIDEsIDE5OSwgMjI5LCAyMTUsIDEsIDE3OSwgCisgICAgMjI5LCAyMTUsIDEsIDIyMSwgOTMsIDIyOSwgMjE1LCAxLCAyNTAsIDE4MywgMjI5LCAyMTUsIDEsIDI1MCwgMCwgMjI5LCAKKyAgICAyMTUsIDEsIDE4NSwgMjI5LCAyMTUsIDEsIDE5MCwgMjI5LCAyMTUsIDEsIDIxOSwgMTEzLCAyMjksIDIxNSwgMSwgMjMwLCAKKyAgICAxNDEsIDIyOSwgMjE1LCAxLCAyMDcsIDk2LCAyMjksIDIxNSwgMSwgMjE2LCAyLCAyMjksIDIxNSwgMSwgMjE0LCA5NiwgCisgICAgMjI5LCAyMTUsIDEsIDIxNywgMTk5LCAyMjksIDIxNSwgMSwgMTU1LCAyMjksIDIxNSwgMSwgMjM5LCAxNjUsIDIyOSwgMjE1LCAKKyAgICAxLCAyMTEsIDgzLCAyMjksIDIxNSwgMjIsIDMsIDYyLCAyMjksIDIxNSwgMjIsIDMsIDc0LCAyMjksIDIxNSwgMjIsIDMsIAorICAgIDcxLCAyMjksIDIxNSwgMjIsIDMsIDI0MywgMTA0LCAyMjksIDIxNSwgMjIsIDMsIDI1MiwgMjA1LCAyMjksIDIxNSwgMjIsIAorICAgIDMsIDIyMiwgMTUyLCAyMjksIDIxNSwgMjIsIDMsIDI1MSwgMTg0LCAyMjksIDIxNSwgMjIsIDMsIDc1LCAyMjksIDIxNSwgCisgICAgMjIsIDMsIDc2LCAyMjksIDIxNSwgMjEzLCAxOTEsIDEsIDE5MCwgMjI5LCAyMTUsIDIxMywgMTkxLCAxLCAyMTksIDExMywgCisgICAgMjI5LCAyMTUsIDIxMywgMTkxLCAxLCAyMDcsIDk2LCAyMjksIDIxNSwgNSwgMSwgMTcyLCAyMjksIDIxNSwgNSwgMSwgMjI1LCAKKyAgICA3NywgMjI5LCAyMTUsIDUsIDEsIDI1MiwgNzMsIDIyOSwgMjE1LCA1LCAxLCAyMTIsIDIxOSwgMjI5LCAyMTUsIDUsIDEsIAorICAgIDE5OSwgMjI5LCAyMTUsIDUsIDEsIDE3OSwgMjI5LCAyMTUsIDUsIDEsIDE4NSwgMjI5LCAyMTUsIDUsIDEsIDIxOSwgMTEzLCAKKyAgICAyMjksIDIxNSwgNSwgMSwgMjMwLCAxNDEsIDIyOSwgMjE1LCAzLCAyMjYsIDk5LCAyMjksIDIxNSwgMywgMjMxLCAyMDksIAorICAgIDIyOSwgMjE1LCAzLCAyMTcsIDE5NywgMjI5LCAyMTUsIDMsIDIyOSwgMTE1LCAyMjksIDIxNSwgMjQyLCAxNjgsIDgzLCAKKyAgICAyMjksIDIxNSwgMjE5LCAxOTYsIDgzLCAyMjksIDIxNSwgMTgsIDIwNSwgODUsIDIyOSwgMjE1LCAxOCwgMTAyLCAyMjksIAorICAgIDIxNSwgMTgsIDEwNSwgMjI5LCAyMTUsIDE4LCAxNDIsIDIyOSwgMjE1LCAxOCwgMTM5LCAyMjksIDIxNSwgMTgsIDE2OCwgCisgICAgMjI5LCAyMTUsIDE4LCAxODQsIDIyOSwgMjE1LCAxOCwgMTk1LCAyMjksIDIxNSwgMTgsIDE5MywgMjI5LCAyMTUsIDE4LCAKKyAgICAyMDAsIDQxLCAyMzAsIDU5LCAxLCAxNzIsIDQxLCAyMzAsIDU5LCAxLCAyMDYsIDE4MSwgNDEsIDIzMCwgNTksIDEsIDIyNSwgCisgICAgNzcsIDQxLCAyMzAsIDU5LCAxLCAyMTAsIDI0MywgNDEsIDIzMCwgNTksIDEsIDIxNywgMTk5LCA0MSwgMjMwLCA1OSwgMSwgCisgICAgMTkwLCA0MSwgMjMwLCA1OSwgMSwgMjEyLCAyMTksIDQxLCAyMzAsIDU5LCAxLCAyMTIsIDU2LCA0MSwgMjMwLCA1OSwgMSwgCisgICAgMjMwLCAxNDEsIDQxLCAyMzAsIDU5LCAxLCAxNzksIDQxLCAyMzAsIDU5LCAxLCAyMjEsIDkzLCA0MSwgMjMwLCA1OSwgMSwgCisgICAgMTg1LCA0MSwgMjMwLCA1OSwgMSwgMjQyLCA3MywgNDEsIDIzMCwgNTksIDEsIDIwOSwgNzAsIDQxLCAyMzAsIDU5LCAxLCAKKyAgICAxNTUsIDQxLCAyMzAsIDU5LCAxLCAyMjAsIDE5LCA0MSwgMjMwLCA1OSwgMSwgMjMxLCAxNjcsIDQxLCAyMzAsIDU5LCAxLCAKKyAgICAyMTAsIDIzMywgNDEsIDIzMCwgNTksIDEsIDE5OSwgNDEsIDIzMCwgNTksIDEsIDYyLCA0MSwgMjMwLCA1OSwgMSwgNzQsIAorICAgIDQxLCAyMzAsIDU5LCAxLCAyNDMsIDEwNCwgNDEsIDIzMCwgNTksIDEsIDI0MywgOTIsIDQxLCAyMzAsIDU5LCAxLCA3MSwgCisgICAgNDEsIDIzMCwgNTksIDEsIDIyMiwgMTUyLCA0MSwgMjMwLCA1OSwgMSwgNzYsIDQxLCAyMzAsIDU5LCAxLCAyMTAsIDMsIDQxLCAKKyAgICAyMzAsIDU5LCAxLCA3NSwgNDEsIDIzMCwgNTksIDEsIDI1MSwgMTgyLCA0MSwgMjMwLCA1OSwgMSwgMjUyLCAyMDUsIDQxLCAKKyAgICAyMzAsIDU5LCAxLCAyMTEsIDExNiwgNDEsIDIzMCwgNTksIDEsIDIxMSwgMTE1LCA0MSwgMjMwLCA1OSwgMSwgMjExLCAxMTQsIAorICAgIDQxLCAyMzAsIDU5LCAxLCAyMTEsIDExMywgNDEsIDIzMCwgNTksIDEsIDIxMSwgMTEyLCAxODYsIDQxLCAyMjksIDc1LCAxLCAKKyAgICAxMjcsIDIyMCwgMTksIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjIwLCAxOSwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgCisgICAgMTI3LCAxNzIsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDEyNywgMjA2LCAxODEsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDEyNywgCisgICAgMjI1LCA3NywgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTE0LCAxNzIsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjA2LCAKKyAgICAxODEsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjI1LCA3NywgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTI3LCAyMTAsIAorICAgIDI0MywgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTI3LCAyMTcsIDE5OSwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTI3LCAxOTAsIAorICAgIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjEwLCAyNDMsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjE3LCAxOTksIAorICAgIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMTkwLCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMjcsIDIxMiwgMjE5LCAxODYsIAorICAgIDQxLCAyMjksIDc1LCAxLCAxMjcsIDIxMiwgNTYsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDEyNywgMTk5LCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAxLCAxMTQsIDIxMiwgMjE5LCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMTQsIDIxMiwgNTYsIDE4NiwgNDEsIAorICAgIDIyOSwgNzUsIDEsIDExNCwgMTk5LCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMjcsIDE3OSwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgCisgICAgMTI3LCAyMjEsIDkzLCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMjcsIDE4NSwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTE0LCAKKyAgICAxNzksIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjIxLCA5MywgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTE0LCAxODUsIAorICAgIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDEyNywgMjQyLCA3MywgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTI3LCAyMDksIDcwLCAKKyAgICAxODYsIDQxLCAyMjksIDc1LCAxLCAxMjcsIDIzMCwgMTQxLCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMTQsIDI0MiwgNzMsIAorICAgIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMjA5LCA3MCwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTE0LCAyMzAsIDE0MSwgCisgICAgMTg2LCA0MSwgMjI5LCA3NSwgMSwgMTI3LCAxNTUsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDEyNywgMjQ2LCAxNDUsIDE4NiwgCisgICAgNDEsIDIyOSwgNzUsIDEsIDEyNywgMjUwLCAxODMsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDExNCwgMTU1LCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAxLCAxMTQsIDI0NiwgMTQ1LCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMTQsIDI1MCwgMTgzLCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAxLCAxMjcsIDIzMCwgMTk3LCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMjcsIDIwNiwgMTQ4LCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAxLCAxMTQsIDIzMCwgMTk3LCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMTQsIDIwNiwgMTQ4LCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAxLCAxMjcsIDIxMywgMjAyLCAxODYsIDQxLCAyMjksIDc1LCAxLCAxMTQsIDIxMywgMjAyLCAxODYsIDQxLCAKKyAgICAyMjksIDc1LCAyMiwgMywgMjIsIDIxNSwgMTMyLCAxODYsIDQxLCAyMjksIDc1LCAyMiwgMywgMjUzLCAxNjQsIDE4NiwgNDEsIAorICAgIDIyOSwgNzUsIDIyLCAzLCAyMzMsIDEwMiwgMTg2LCA0MSwgMjI5LCA3NSwgMjIsIDMsIDcxLCAxODYsIDQxLCAyMjksIDc1LCAKKyAgICAyMiwgMywgMjA5LCAxNjIsIDE4NiwgNDEsIDIyOSwgNzUsIDIyLCAzLCA3NSwgMTg2LCA0MSwgMjI5LCA3NSwgMjIsIDMsIAorICAgIDI1MiwgMjQ4LCAxODYsIDQxLCAyMjksIDc1LCAyMiwgMywgNzYsIDE4NiwgNDEsIDIyOSwgNzUsIDIyLCAzLCAyMjIsIDIzMCwgCisgICAgMTg2LCA0MSwgMjI5LCA3NSwgMjIsIDMsIDIxMCwgMywgMTg2LCA0MSwgMjI5LCA3NSwgMjIsIDMsIDI1MSwgMTU5LCAxODYsIAorICAgIDQxLCAyMjksIDc1LCAyMiwgMywgMjUzLCAxMTksIDE4NiwgNDEsIDIyOSwgNzUsIDIyLCAzLCAyMDksIDE1NCwgMTg2LCA0MSwgCisgICAgMjI5LCA3NSwgMjIsIDMsIDIyMiwgNzEsIDE4NiwgNDEsIDIyOSwgNzUsIDIyLCAzLCAyMjIsIDIyNywgMTg2LCA0MSwgMjI5LCAKKyAgICA3NSwgMjIsIDMsIDIwOSwgMjU1LCAxODYsIDQxLCAyMjksIDc1LCAyMiwgMywgMjMyLCAyMTEsIDE4NiwgNDEsIDIyOSwgNzUsIAorICAgIDEsIDQyLCAyMDksIDE0OCwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgNDIsIDIyNSwgNzksIDE4NiwgNDEsIDIyOSwgNzUsIDEsIAorICAgIDQyLCAyMjYsIDMzLCAxODYsIDQxLCAyMjksIDc1LCAxLCA0MiwgMjI5LCAyOCwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgNDIsIAorICAgIDIzMiwgNzYsIDE4NiwgNDEsIDIyOSwgNzUsIDEsIDQyLCAyNDYsIDI0MCwgMTg2LCA0MSwgMjI5LCA3NSwgMSwgNDIsIDI1MSwgCisgICAgMTUwLCAxODYsIDQxLCAyMjksIDc1LCAxMzUsIDIyNywgMTkxLCAxODYsIDQxLCAyMjksIDc1LCAxMzUsIDIyNywgMTkwLCAKKyAgICAxODYsIDQxLCAyMjksIDc1LCAxOCwgMjA1LCA4NSwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDEwMiwgMTg2LCA0MSwgMjI5LCAKKyAgICA3NSwgMTgsIDEwNSwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDE0MiwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDEzOSwgMTg2LCAKKyAgICA0MSwgMjI5LCA3NSwgMTgsIDE2OCwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDE4NCwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIAorICAgIDE5NSwgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDE5MywgMTg2LCA0MSwgMjI5LCA3NSwgMTgsIDIwMCwgMTg2LCA0MSwgMjI5LCAKKyAgICA3NSwgOTksIDE4LCAxMDIsIDE4NiwgNDEsIDIyOSwgNzUsIDMsIDIzMCwgMTI1LCAxODYsIDQxLCAyMjksIDc1LCAzLCAyMzAsIAorICAgIDEyNCwgODIsIDE2LCAyMjEsIDE5MSwgODIsIDE2LCAyMjYsIDgxLCAyMzEsIDQ5LCA4MiwgMTYsIDIyMSwgMTYsIDIzMSwgCisgICAgNDksIDgyLCAxNiwgMjUwLCAzNCwgMjMxLCA0OSwgODIsIDE2LCAyNDksIDc0LCAyMzEsIDQ5LCA4MiwgMTYsIDIyMCwgMTUzLCAKKyAgICAyMzEsIDQ5LCA4MiwgMTYsIDIyMCwgMTQ3LCAyMzEsIDQ5LCA4MiwgMTYsIDIyMCwgMTQ1LCAyMzEsIDQ5LCA4MiwgMTYsIAorICAgIDIyMCwgMTUxLCAyMzEsIDQ5LCA4MiwgMTYsIDIyMCwgMTQ5LCAyMzEsIDQ5LCA4MiwgMTYsIDI0NiwgOTUsIDIzMSwgNDksIAorICAgIDgyLCAxNiwgMjQ2LCA5MSwgMjMxLCA0OSwgODIsIDE2LCAyNDYsIDkwLCAyMzEsIDQ5LCA4MiwgMTYsIDI0NiwgOTMsIDIzMSwgCisgICAgNDksIDgyLCAxNiwgMjQ2LCA5MiwgMjMxLCA0OSwgODIsIDE2LCAyNDYsIDg5LCAyMzEsIDQ5LCA4MiwgMTYsIDIxMCwgMTM3LCAKKyAgICA4MiwgMTYsIDIyNiwgODEsIDIxOCwgMTE4LCA4MiwgMTYsIDIyMSwgMTYsIDIxOCwgMTE4LCA4MiwgMTYsIDI1MCwgMzQsIAorICAgIDIxOCwgMTE4LCA4MiwgMTYsIDI0OSwgNzQsIDIxOCwgMTE4LCA4MiwgMTYsIDIyMCwgMTUzLCAyMTgsIDExOCwgODIsIDE2LCAKKyAgICAyMjAsIDE0NywgMjE4LCAxMTgsIDgyLCAxNiwgMjIwLCAxNDUsIDIxOCwgMTE4LCA4MiwgMTYsIDIyMCwgMTUxLCAyMTgsIAorICAgIDExOCwgODIsIDE2LCAyMjAsIDE0OSwgMjE4LCAxMTgsIDgyLCAxNiwgMjQ2LCA5NSwgMjE4LCAxMTgsIDgyLCAxNiwgMjQ2LCAKKyAgICA5MSwgMjE4LCAxMTgsIDgyLCAxNiwgMjQ2LCA5MCwgMjE4LCAxMTgsIDgyLCAxNiwgMjQ2LCA5MywgMjE4LCAxMTgsIDgyLCAKKyAgICAxNiwgMjQ2LCA5MiwgMjE4LCAxMTgsIDgyLCAxNiwgMjQ2LCA4OSwgMjE4LCAxMTgsIDI0OSwgOTQsIDEsIDE3MiwgMjQ5LCAKKyAgICA5NCwgMSwgMjQwLCAyNDQsIDI0OSwgOTQsIDEsIDIyNSwgNzcsIDI0OSwgOTQsIDEsIDIyNSwgMjAsIDI0OSwgOTQsIDEsIAorICAgIDE3OSwgMjQ5LCA5NCwgMSwgMjUwLCAxODMsIDI0OSwgOTQsIDEsIDE4NSwgMjQ5LCA5NCwgMSwgMjI2LCAxMTgsIDI0OSwgCisgICAgOTQsIDEsIDIxMiwgMjE5LCAyNDksIDk0LCAxLCAyNDYsIDE0NSwgMjQ5LCA5NCwgMSwgMTk5LCAyNDksIDk0LCAxLCAyMjQsIAorICAgIDI0LCAyNDksIDk0LCAxLCAyNDksIDEsIDI0OSwgOTQsIDEsIDIzMiwgMjAwLCAyNDksIDk0LCAxLCAyMjMsIDE0NCwgMjQ5LCAKKyAgICA5NCwgMSwgMjIzLCAxMzYsIDI0OSwgOTQsIDEsIDE5MCwgMjQ5LCA5NCwgMSwgMjE5LCAxMTMsIDI0OSwgOTQsIDEsIDIzMCwgCisgICAgMTQxLCAyNDksIDk0LCAxLCAyMDksIDcwLCAyNDksIDk0LCAxLCAyMTcsIDE5OSwgMjQ5LCA5NCwgMSwgNjIsIDI0OSwgOTQsIAorICAgIDEsIDE1NSwgMjQ5LCA5NCwgMjIsIDMsIDc0LCAyNDksIDk0LCAyMiwgMywgNzEsIDI0OSwgOTQsIDIyLCAzLCA3NSwgMjQ5LCAKKyAgICA5NCwgMjIsIDMsIDc2LCAyNDksIDk0LCAyMiwgMywgMjUyLCAyNDgsIDI0OSwgOTQsIDIyMiwgMjAsIDI0OSwgOTQsIDI0MywgCisgICAgMzQsIDczLCAyMTcsIDc2LCA0MSwgOTksIDEsIDEyNywgMTcyLCA0MSwgOTksIDEsIDEyNywgMjMxLCAxNjcsIDQxLCA5OSwgCisgICAgMSwgMTI3LCAyMzAsIDE4MSwgNDEsIDk5LCAxLCAxMTQsIDE3MiwgNDEsIDk5LCAxLCAxMTQsIDIzMCwgMTgxLCA0MSwgOTksIAorICAgIDEsIDExNCwgMjMxLCAxNjcsIDQxLCA5OSwgMSwgMjI1LCA3NywgNDEsIDk5LCAxLCAxMjcsIDI0OSwgMSwgNDEsIDk5LCAxLCAKKyAgICAxMjcsIDI0OCwgMTEwLCA0MSwgOTksIDEsIDExNCwgMjQ5LCAxLCA0MSwgOTksIDEsIDExNCwgMjE3LCAxOTksIDQxLCA5OSwgCisgICAgMSwgMTE0LCAyNDgsIDExMCwgNDEsIDk5LCAxLCAyMjMsIDE0NCwgNDEsIDk5LCAxLCAyMTksIDY0LCA0MSwgOTksIDEsIAorICAgIDEyNywgMjE5LCA2MiwgNDEsIDk5LCAxLCAyNDYsIDE0NSwgNDEsIDk5LCAxLCAxMTQsIDIxOSwgNjIsIDQxLCA5OSwgMSwgCisgICAgMjE5LCA3MywgNDEsIDk5LCAxLCAxMjcsIDIxMiwgMjE5LCA0MSwgOTksIDEsIDEyNywgMjEyLCA1NiwgNDEsIDk5LCAxLCAKKyAgICAxMTQsIDIxMiwgMjE5LCA0MSwgOTksIDEsIDExNCwgMjEyLCA1NiwgNDEsIDk5LCAxLCAxOTksIDQxLCA5OSwgMSwgMjUwLCAKKyAgICAxODMsIDQxLCA5OSwgMSwgMTI3LCAxNzksIDQxLCA5OSwgMSwgMTI3LCAyMjEsIDkzLCA0MSwgOTksIDEsIDEyNywgMjQyLCAKKyAgICA3MywgNDEsIDk5LCAxLCAxMTQsIDE3OSwgNDEsIDk5LCAxLCAxMTQsIDI0MiwgNzMsIDQxLCA5OSwgMSwgMTE0LCAyMjEsIAorICAgIDkzLCA0MSwgOTksIDEsIDE4NSwgNDEsIDk5LCAxLCAxMTQsIDE5MCwgNDEsIDk5LCAxLCAxMjcsIDE5MCwgNDEsIDk5LCAxLCAKKyAgICAyMTksIDExMywgNDEsIDk5LCAxLCAyMTgsIDQ2LCA0MSwgOTksIDEsIDIzMCwgMTQxLCA0MSwgOTksIDEsIDIyOSwgNzQsIAorICAgIDQxLCA5OSwgMSwgMjA3LCA5NiwgNDEsIDk5LCAxLCAxMjcsIDIxNiwgMiwgNDEsIDk5LCAxLCAxMjcsIDIxNCwgOTYsIDQxLCAKKyAgICA5OSwgMSwgMTI3LCAyMTcsIDE5OSwgNDEsIDk5LCAxLCAxMjcsIDE1NSwgNDEsIDk5LCAxLCAyMjksIDE3MiwgNDEsIDk5LCAKKyAgICAxLCA2MiwgNDEsIDk5LCAxLCAxMTQsIDE1NSwgNDEsIDk5LCAxLCA3NCwgNDEsIDk5LCAxLCAyMzMsIDEwMiwgNDEsIDk5LCAKKyAgICAxLCA3MSwgNDEsIDk5LCAxLCAyMDksIDE2MiwgNDEsIDk5LCAxLCAyNDMsIDEwNCwgNDEsIDk5LCAxLCAyMjIsIDE1MiwgNDEsIAorICAgIDk5LCAxLCAyMzAsIDEyNSwgNDEsIDk5LCAxLCAyMzksIDIzMiwgMjE3LCAxOTksIDQxLCA5OSwgMTA3LCAzLCAxNjksIDIxOSwgCisgICAgMTEzLCA0MSwgOTksIDEwNywgMywgMTY5LCAyMzAsIDE0MSwgNDEsIDk5LCAxMDcsIDMsIDIzMCwgMTQyLCAyMTIsIDE3MiwgCisgICAgMjMwLCAxMTQsIDQxLCA5OSwgMywgMjI3LCAyNDAsIDIzMiwgMjQsIDIzMCwgMTE0LCA0MSwgOTksIDEwNywgMywgNDIsIAorICAgIDIyNSwgNzcsIDQxLCA5OSwgMTA3LCAzLCAxMTQsIDE3OSwgNDEsIDk5LCAxMDcsIDMsIDEyNywgMjE5LCA2MywgMjIyLCAKKyAgICAxMjMsIDExNCwgMTc5LCA0MSwgOTksIDEwNywgMywgMTg1LCA0MSwgOTksIDEwNywgMywgMjUwLCAxODMsIDQxLCA5OSwgCisgICAgMTA3LCAzLCAyMTcsIDE5OSwgNDEsIDk5LCAzLCAyMTcsIDE3NCwgNDEsIDk5LCAyMiwgMywgNjIsIDQxLCA5OSwgMjIsIDMsIAorICAgIDIyNywgMjQwLCAyMTcsIDEzMywgNDEsIDk5LCAyMiwgMywgMjUzLCAxNjQsIDQxLCA5OSwgMjIsIDMsIDIxMiwgMTc4LCAKKyAgICAyNTMsIDE2NCwgNDEsIDk5LCAyMiwgMywgNzQsIDQxLCA5OSwgMjIsIDMsIDIzMywgMTAyLCA0MSwgOTksIDIyLCAzLCAyMTAsIAorICAgIDMsIDQxLCA5OSwgMjIsIDMsIDIwOSwgMTYxLCA0MSwgOTksIDIyLCAzLCA3MSwgNDEsIDk5LCAyMiwgMywgMjA5LCAxNjIsIAorICAgIDQxLCA5OSwgMjIsIDMsIDc2LCA0MSwgOTksIDIyLCAzLCAyMjIsIDIzMSwgNTUsIDQxLCA5OSwgMjIsIDMsIDIyMiwgNzEsIAorICAgIDQxLCA5OSwgMjIsIDMsIDc1LCA0MSwgOTksIDIyLCAzLCAyNTIsIDI0OCwgNDEsIDk5LCAyMiwgMywgMjIyLCAxNTIsIDQxLCAKKyAgICA5OSwgMjIsIDMsIDI1MiwgMjA1LCA0MSwgOTksIDIyLCAzLCA5OSwgMjUyLCAyMDUsIDQxLCA5OSwgMjIsIDMsIDIyMiwgCisgICAgMjMxLCA1MiwgNDEsIDk5LCAzLCAyMjcsIDI0MCwgMjMyLCAyMywgNDEsIDk5LCAzLCAyMTEsIDExNywgNDEsIDk5LCAzLCAKKyAgICAyMTEsIDExNiwgNDEsIDk5LCAzLCAyMzEsIDEyOCwgMjExLCAxMTUsIDQxLCA5OSwgMywgMjMxLCAxMjgsIDIxMSwgMTE0LCAKKyAgICA0MSwgOTksIDMsIDIzMSwgMTI4LCAyMTEsIDExMywgNDEsIDk5LCAzLCAyMTksIDExNCwgMjM5LCAxNDAsIDQxLCA5OSwgMywgCisgICAgMjI3LCAyNDAsIDIxNywgMTYxLCA0MSwgOTksIDMsIDIzMSwgMTI3LCAyMzIsIDYsIDQxLCA5OSwgMzYsIDI0NywgNDMsIAorICAgIDI0NSwgMjMsIDQxLCA5OSwgMjM4LCAxMjMsIDE4LCAyMDUsIDg1LCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMTAyLCA0MSwgCisgICAgOTksIDIzOCwgMTIzLCAxOCwgMTA1LCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMTQyLCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgCisgICAgMTM5LCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMTY4LCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMTg0LCA0MSwgOTksIDIzOCwgCisgICAgMTIzLCAxOCwgMTk1LCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMTkzLCA0MSwgOTksIDIzOCwgMTIzLCAxOCwgMjAwLCA0MSwgCisgICAgOTksIDk5LCAxOCwgMjA1LCA4NSwgNDEsIDk5LCA5OSwgMTgsIDEwMiwgNDEsIDk5LCA5OSwgMTgsIDEwNSwgNDEsIDk5LCAKKyAgICA5OSwgMTgsIDE0MiwgNDEsIDk5LCA5OSwgMTgsIDEzOSwgNDEsIDk5LCA5OSwgMTgsIDE2OCwgNDEsIDk5LCA5OSwgMTgsIAorICAgIDE4NCwgNDEsIDk5LCA5OSwgMTgsIDE5NSwgNDEsIDk5LCA5OSwgMTgsIDE5MywgNDEsIDk5LCA5OSwgMTgsIDIwMCwgNDEsIAorICAgIDk5LCAzLCAyMDcsIDE5LCA0MSwgOTksIDMsIDIwNywgMTgsIDQxLCA5OSwgMywgMjE3LCAxMjAsIDQxLCA5OSwgMywgMjMxLCAKKyAgICAxOTgsIDQxLCA5OSwgMywgMjM4LCA1MiwgNDEsIDk5LCAzLCAyNDUsIDM3LCA0MSwgOTksIDMsIDIxOCwgMjI0LCAyMTgsIAorICAgIDk3LCAyMTksIDczLCA0MSwgOTksIDMsIDIyNywgMjQwLCAyMDYsIDc4LCA0MSwgOTksIDMsIDIzMiwgNTgsIDQxLCA5OSwgMywgCisgICAgMjMyLCA1NywgNDEsIDk5LCAzLCAyMTcsIDEyOCwgNDEsIDk5LCAzLCAyMTcsIDEyNywgNDEsIDk5LCAzLCAyMzksIDEwMSwgCisgICAgNDEsIDk5LCAzLCAyNDgsIDI1NCwgMzYsIDI0NCwgMTMsIDI0NywgMjI4LCAyNTMsIDIxLCAzNiwgMjQ1LCAxNjUsIDM2LCAKKyAgICAyMzMsIDQ1LCAzNiwgMTczLCA0NSwgMzYsIDIxMSwgMzYsIDI0NSwgMjMsIDM2LCAyMDYsIDE5NCwgNTUsIDM2LCAyMDcsIAorICAgIDE0LCAyMjksIDIwNiwgNTUsIDM2LCAyMjIsIDE0MiwgMTQxLCA1NSwgMzYsIDUwLCAyMjIsIDE0MiwgMTQxLCA1NSwgMzYsIAorICAgIDE0NywgMjQ4LCAxMzAsIDIxMywgMjI1LCA1NSwgMzYsIDIxMywgMjExLCAyNDgsIDEzMCwgMjEzLCAyMjUsIDU1LCAzNiwgCisgICAgMjIxLCAyMTgsIDUyLCAzNiwgNTAsIDIyMSwgMjE4LCA1MiwgMzYsIDIyMSwgMjE4LCA1NSwgMzYsIDIyMSwgMjE4LCAyMjIsIAorICAgIDgyLCAxMTcsIDMsIDIwOSwgMjQ0LCAyMTgsIDIwMiwgMTE3LCAzLCAyMDksIDI0NCwgMjQ4LCAyMTksIDExNywgMywgMjQ4LCAKKyAgICAxNDQsIDExNywgMywgMjEzLCAxMzEsIDExNywgMywgMjQ5LCAyMTQsIDExNywgMSwgMjUyLCAxODcsIDExNywgMSwgMjUyLCAKKyAgICAxODgsIDIxMiwgMTIyLCAxMTcsIDEsIDIzMywgOTgsIDExNywgMSwgMjMzLCA5OSwgMjEyLCAxMjIsIDExNywgMSwgMjA5LCAKKyAgICAyNDcsIDExNywgMSwgMjA5LCAyNDgsIDIxMiwgMTIyLCAxMTcsIDEsIDIxOSwgMTE0LCAyMTgsIDI1NCwgMTE3LCAxLCAyMTksIAorICAgIDExNCwgMjE4LCAyNTUsIDIxMiwgMTIyLCAxMTcsIDEsIDIzMCwgMTQyLCAyMzAsIDIxLCAxMTcsIDEsIDIzMCwgMTQyLCAKKyAgICAyMzAsIDIyLCAyMTIsIDEyMiwgMTE3LCAxLCAyNDMsIDczLCAxMTcsIDEsIDI1MiwgMjAzLCAxMTcsIDEsIDIyMiwgMTgzLCAKKyAgICAxMTcsIDEsIDIyMiwgMTg0LCAyMTIsIDEyMiwgMTE3LCAxLCAxNzIsIDExNywgMSwgMjMyLCA2NiwgMjI3LCAyNDMsIDExNywgCisgICAgMSwgMjQwLCAyNDQsIDExNywgMSwgMjQwLCAyNDUsIDI0MCwgNSwgMTE3LCAxLCAyMjUsIDc3LCAxMTcsIDEsIDI0OSwgMSwgCisgICAgMTE3LCAxLCAyNDksIDIsIDIzMCwgMTI4LCAxMTcsIDEsIDIzMiwgMjAwLCAxMTcsIDEsIDIzMiwgMjAxLCAyMzIsIDE3NCwgCisgICAgMTE3LCAxLCAyMjMsIDE0NCwgMTE3LCAxLCAyMTIsIDIyMCwgMjMwLCA3NywgMTE3LCAxLCAyMTIsIDIyMCwgMjI2LCA3NiwgCisgICAgMjI3LCAyNDMsIDExNywgMSwgMjQ2LCAxNDYsIDIyNiwgNzYsIDI1MiwgMTQ2LCAxMTcsIDEsIDI0NiwgMTQ2LCAyMjYsIDc2LCAKKyAgICAyMjcsIDI0MywgMTE3LCAxLCAyMjUsIDIzNywgMjE5LCA3NiwgMTE3LCAxLCAyMTIsIDIxOSwgMTE3LCAxLCAyMTIsIDIyMCwgCisgICAgMjEyLCAxNDQsIDExNywgMSwgMjQ2LCAxNDUsIDExNywgMSwgMjQ2LCAxNDYsIDIyOCwgNiwgMTE3LCAxLCAxOTksIDExNywgCisgICAgMSwgMTc5LCAxMTcsIDEsIDIyMiwgNTIsIDIzMiwgMTgsIDExNywgMSwgMjUwLCAxODMsIDExNywgMSwgMjUwLCAxODQsIAorICAgIDIzMSwgMjEwLCAxMTcsIDEsIDE4NSwgMTE3LCAxLCAxOTAsIDExNywgMSwgMjE5LCAxMTMsIDExNywgMSwgMjMwLCAxNDEsIAorICAgIDExNywgMSwgMjA3LCA5NiwgMTE3LCAxLCAyMTcsIDIwMCwgMjE3LCAxODQsIDExNywgMSwgMjE3LCAyMDAsIDIxNywgMTQwLCAKKyAgICAxMTcsIDEsIDIxNywgMTk5LCAxMTcsIDEsIDE1NSwgMTE3LCAzLCAyMTgsIDI0NSwgMTE3LCAyMiwgMywgMjEyLCAxMjIsIAorICAgIDExNywgMjIsIDMsIDIwOSwgMjQzLCAxMTcsIDIyLCAzLCAyMDksIDI0NCwgMjE3LCAxMzYsIDExNywgMjIsIDMsIDIxMywgCisgICAgMTY0LCAxMTcsIDIyLCAzLCAyMTMsIDE2NSwgMjMzLCA5MCwgMTE3LCAyMiwgMywgMjE5LCAxMTQsIDIxOCwgMjU0LCAxMTcsIAorICAgIDIyLCAzLCAyMTksIDExNCwgMjE4LCAyNTUsIDIxMiwgMTIyLCAxMTcsIDIyLCAzLCAyMzAsIDE0MiwgMjMwLCAyMSwgMTE3LCAKKyAgICAyMiwgMywgMjMwLCAxNDIsIDIzMCwgMjIsIDIxMiwgMTIyLCAxMTcsIDIyLCAzLCAyMTIsIDE3OSwgMTE3LCAyMiwgMywgCisgICAgMjEyLCAxODAsIDIxOCwgMjU0LCAxMTcsIDIyLCAzLCAyMTIsIDE4MCwgMjEyLCAxMjIsIDExNywgMjIsIDMsIDIxMiwgMTgwLCAKKyAgICAyMTgsIDI1NSwgMjEyLCAxMjIsIDExNywgMjIsIDMsIDIyMSwgMTM0LCAxMTcsIDIyLCAzLCAyMjEsIDEzNSwgMjEyLCAxMjIsIAorICAgIDExNywgMjUzLCAwLCAyNTIsIDI1NSwgMTE3LCAxLCAyMzIsIDQ2LCAyMTcsIDEzNSwgMTE3LCAxLCAyMzEsIDEzNCwgMjE3LCAKKyAgICAxMzUsIDExNywgMSwgMjEwLCA4MCwgMjE3LCAxMzUsIDExNywgMSwgMjQzLCA5OCwgMjE3LCAxMzUsIDExNywgMSwgMjA5LCAKKyAgICA0MCwgMjE3LCAxMzUsIDExNywgMSwgMjA1LCAxMDcsIDIxNywgMTM1LCAxMTcsIDEsIDI1MSwgMjAyLCAyMTcsIDEzNSwgCisgICAgMTE3LCAxOCwgMjA1LCA4NSwgMTE3LCAxOCwgMTAyLCAxMTcsIDE4LCAxMDUsIDExNywgMTgsIDE0MiwgMTE3LCAxOCwgMTM5LCAKKyAgICAxMTcsIDE4LCAxNjgsIDExNywgMTgsIDE4NCwgMTE3LCAxOCwgMTk1LCAxMTcsIDE4LCAxOTMsIDExNywgMTgsIDIwMCwgCisgICAgMTE3LCAyMjEsIDI0NCwgMTE3LCAyMjIsIDE0LCAxMTcsIDIwNywgNywgMTE3LCAyNDgsIDE5NywgMjIyLCA3LCAxMTcsIAorICAgIDI0OCwgMTk3LCAyMTUsIDU4LCAxMTcsIDI0OCwgMTk3LCAyMjEsIDIxNSwgMTE3LCAyMjIsIDEzLCAxMTcsIDMwLCAxNiwgCisgICAgMjQ1LCAyOSwgMTE3LCAzMCwgMTYsIDI0NSwgMjI0LCAxMTcsIDMwLCAxNiwgMjQzLCAyMjMsIDExNywgMzAsIDE2LCAyNDYsIAorICAgIDk4LCAxMTcsIDMwLCAxNiwgMjQ2LCA5OSwgMjEzLCAxMzEsIDExNywgMzAsIDE2LCAyNDUsIDExMiwgMTE3LCAzMCwgMTYsIAorICAgIDI0NiwgMTM4LCAxMTcsIDMwLCAxNiwgMjQ1LCAyMDEsIDExNywgMzAsIDE2LCAyNDYsIDEyMCwgMTE3LCAzMCwgMTYsIDI0NiwgCisgICAgOTksIDI0MCwgMTY0LCAxMTcsIDMwLCAxNiwgMzYsIDIxMiwgMTE3LCAxMTcsIDMwLCAxNiwgMzYsIDI0MywgMzIsIDExNywgCisgICAgMzAsIDE2LCAzNiwgMjMxLCAyMDUsIDExNywgMzAsIDE2LCAzNiwgMjMxLCAyMDcsIDExNywgMzAsIDE2LCAzNiwgMjMyLCAKKyAgICAxNzgsIDExNywgMzAsIDE2LCAzNiwgMjMxLCAyMDYsIDIsIDIzMiwgMTc4LCAxMTcsIDMwLCAxNiwgMzYsIDIzMSwgMjA4LCAKKyAgICAyLCAyMzIsIDE3OCwgMTE3LCAzMCwgMTYsIDM2LCAyNTAsIDIwLCAxMTcsIDMwLCAxNiwgMzYsIDI0MCwgOSwgMTE3LCAzMCwgCisgICAgMTYsIDIxOCwgMTY1LCAyMjIsIDE0MiwgMjQzLCAyMzMsIDExNywgMzAsIDE2LCAyMTgsIDE2NSwgMjIyLCAxNDIsIDI0NiwgCisgICAgMTM2LCAxMTcsIDMwLCAxNiwgMjE4LCAxNjUsIDI0NywgMTkyLCAyMTAsIDE2MiwgMTE3LCAzMCwgMTYsIDIxOCwgMTY1LCAKKyAgICAyNDcsIDE5MiwgMjEyLCAxODcsIDExNywgMzAsIDE2LCAyMzAsIDQ0LCAyMjIsIDE0MiwgMjIyLCAyLCAxMTcsIDMwLCAxNiwgCisgICAgMjMwLCA0NCwgMjIyLCAxNDIsIDIyMCwgNzAsIDExNywgMzAsIDE2LCAyMzAsIDQ0LCAyNDcsIDE5MiwgMjIwLCAyMzYsIAorICAgIDExNywgMzAsIDE2LCAyMzAsIDQ0LCAyNDcsIDE5MiwgMjIwLCAyMjIsIDExNywgMzAsIDE2LCAyMzAsIDQ0LCAyMjIsIDE0MiwgCisgICAgMjIxLCA1LCAyMTMsIDE1MywgMywgMjIxLCAyNDEsIDIxMywgMTUzLCAzLCAyMjEsIDI1NCwgMjEzLCAxNTMsIDMsIDIyMSwgCisgICAgMjUwLCAyMTMsIDE1MywgMSwgNjIsIDIxMywgMTUzLCAxLCA3NCwgMjEzLCAxNTMsIDEsIDcxLCAyMTMsIDE1MywgMSwgMjUyLCAKKyAgICAyNDgsIDIxMywgMTUzLCAxLCA3NiwgMjEzLCAxNTMsIDEsIDc1LCAyMTMsIDE1MywgMSwgMjQyLCAxOTIsIDIxMywgMTUzLCAKKyAgICAxLCAxNzIsIDIxMywgMTUzLCAxLCAyMjAsIDE5LCAyMTMsIDE1MywgMSwgMjQwLCAyNDQsIDIxMywgMTUzLCAxLCAyMjUsIAorICAgIDc3LCAyMTMsIDE1MywgMSwgMjQ5LCAxLCAyMTMsIDE1MywgMSwgMjMyLCAyMDAsIDIxMywgMTUzLCAxLCAyMDUsIDExNiwgCisgICAgMjEzLCAxNTMsIDEsIDIyMywgMTQ0LCAyMTMsIDE1MywgMSwgMjEyLCAyMTksIDIxMywgMTUzLCAxLCAyNDYsIDE0NSwgMjEzLCAKKyAgICAxNTMsIDEsIDE5OSwgMjEzLCAxNTMsIDEsIDE3OSwgMjEzLCAxNTMsIDEsIDI0MiwgNzMsIDIxMywgMTUzLCAxLCAyMDksIAorICAgIDcwLCAyMTMsIDE1MywgMSwgMjUwLCAxODMsIDIxMywgMTUzLCAxLCAxODUsIDIxMywgMTUzLCAxLCAxOTAsIDIxMywgMTUzLCAKKyAgICAxLCAyMTksIDExMywgMjEzLCAxNTMsIDEsIDIzMCwgMTQxLCAyMTMsIDE1MywgMSwgMjA3LCA5NiwgMjEzLCAxNTMsIDEsIAorICAgIDIxNywgMTk5LCAyMTMsIDE1MywgMSwgMjA2LCAxODEsIDIxMywgMTUzLCAxLCAxNTUsIDIxMywgMTUzLCAxMDcsIDMsIDIyMiwgCisgICAgMTEsIDIxMywgMTUzLCAxMDcsIDMsIDIyMSwgMjQzLCAyMTMsIDE1MywgMTA3LCAzLCAyMjEsIDI0MCwgMjEzLCAxNTMsIDIyLCAKKyAgICAzLCAyMjIsIDEsIDIxMywgMTUzLCAyMiwgMywgMjIxLCAyMzksIDIxMywgMTUzLCAyMiwgMywgMjIyLCA1LCAyMTMsIDE1MywgCisgICAgMjIsIDMsIDIyMSwgMjQ5LCAyMTMsIDE1MywgMjIsIDMsIDIyMiwgMTIsIDIxMywgMTUzLCAyMiwgMywgMjIyLCAzLCAyMTMsIAorICAgIDE1MywgMywgMjIyLCAxNSwgMjEzLCAxNTMsIDMsIDIwOCwgMTg4LCAyMTMsIDE1MywgMTA3LCAzLCAyMjEsIDIwNCwgMTg1LCAKKyAgICAyMTMsIDE1MywgMTA3LCAzLCAyMjEsIDIwNCwgMjA3LCA5NiwgMjEzLCAxNTMsIDEsIDIzMSwgMTY3LCAyMTMsIDE1MywgMSwgCisgICAgMjEzLCA5MCwgMjEzLCAxNTMsIDE4LCAyMDUsIDg1LCAyMTMsIDE1MywgMTgsIDEwMiwgMjEzLCAxNTMsIDE4LCAxMDUsIAorICAgIDIxMywgMTUzLCAxOCwgMTQyLCAyMTMsIDE1MywgMTgsIDEzOSwgMjEzLCAxNTMsIDE4LCAxNjgsIDIxMywgMTUzLCAxOCwgCisgICAgMTg0LCAyMTMsIDE1MywgMTgsIDE5NSwgMjEzLCAxNTMsIDE4LCAxOTMsIDIxMywgMTUzLCAxOCwgMjAwLCAyMTMsIDE1MywgCisgICAgMjUxLCAxNjcsIDIxMywgMTUzLCAxLCAyMTgsIDIyNywgMjEzLCAxNTMsIDEsIDIzMCwgMiwgMjEzLCAxNTMsIDEsIDI1MCwgCisgICAgMCwgMjEzLCAxNTMsIDEsIDQyLCAyMzIsIDc2LCAyMTMsIDE1MywgMSwgNDIsIDIyOSwgMjgsIDI1MCwgMTA3LCAxLCA2MiwgCisgICAgMjUwLCAxMDcsIDEsIDIxNSwgNTAsIDYyLCAyNTAsIDEwNywgMSwgMTU1LCAyNTAsIDEwNywgMSwgMjE1LCA1MCwgMTU1LCAKKyAgICAyNTAsIDEwNywgMSwgMjI3LCAyMTYsIDE1NSwgMjUwLCAxMDcsIDEsIDI1MCwgMTgzLCAyNTAsIDEwNywgMSwgMjMyLCAzLCAKKyAgICAyNTAsIDE4MywgMjUwLCAxMDcsIDEsIDE3OSwgMjUwLCAxMDcsIDEsIDIxNSwgNTAsIDE3OSwgMjUwLCAxMDcsIDEsIDE5OSwgCisgICAgMjUwLCAxMDcsIDEsIDIyNywgMjE2LCAxOTksIDI1MCwgMTA3LCAxLCAyMDcsIDk2LCAyNTAsIDEwNywgMSwgMjE1LCA1MCwgCisgICAgMjA3LCA5NiwgMjUwLCAxMDcsIDEsIDIyMiwgMjcsIDIwNywgOTYsIDI1MCwgMTA3LCAxLCAyNDAsIDI0NCwgMjUwLCAxMDcsIAorICAgIDEsIDIxNSwgNTAsIDI0MCwgMjQ0LCAyNTAsIDEwNywgMSwgMjMyLCAyMDAsIDI1MCwgMTA3LCAxLCAyNDYsIDE0NSwgMjUwLCAKKyAgICAxMDcsIDEsIDIxOSwgMTEzLCAyNTAsIDEwNywgMSwgMjE1LCA1MCwgMjE5LCAxMTMsIDI1MCwgMTA3LCAxLCAxODUsIDI1MCwgCisgICAgMTA3LCAxLCAyMTUsIDUwLCAxODUsIDI1MCwgMTA3LCAxLCAyMTQsIDE2MSwgMjEyLCAyMTksIDI1MCwgMTA3LCAxLCAyMjQsIAorICAgIDQ2LCAyMTIsIDIxOSwgMjUwLCAxMDcsIDEsIDIxNywgMTk5LCAyNTAsIDEwNywgMSwgMjE1LCA1MCwgMjE3LCAxOTksIDI1MCwgCisgICAgMTA3LCAxLCAyMjcsIDIxNiwgMjE3LCAxOTksIDI1MCwgMTA3LCAxLCAxOTAsIDI1MCwgMTA3LCAxLCAyMTUsIDUwLCAxOTAsIAorICAgIDI1MCwgMTA3LCAxLCAyMjUsIDc3LCAyNTAsIDEwNywgMSwgMjMwLCAxNDEsIDI1MCwgMTA3LCAxLCAyMTUsIDUwLCAyMzAsIAorICAgIDE0MSwgMjUwLCAxMDcsIDEsIDIyMywgMTQ0LCAyNTAsIDEwNywgMSwgMjQ5LCAxLCAyNTAsIDEwNywgMSwgMjI1LCAxNTEsIAorICAgIDI1MCwgMTA3LCAxLCAyMjcsIDE1MywgMjUwLCAxMDcsIDEsIDc0LCAyNTAsIDEwNywgMSwgNzEsIDI1MCwgMTA3LCAzLCAKKyAgICAyMTEsIDEyMSwgMjUwLCAxMDcsIDIyLCAzLCA3NSwgMjUwLCAxMDcsIDIyLCAzLCAyMjIsIDI3LCA3NSwgMjUwLCAxMDcsIAorICAgIDIyLCAzLCAyNDMsIDEwNCwgMjUwLCAxMDcsIDIyLCAzLCA3NCwgMjUwLCAxMDcsIDIyLCAzLCAyMzIsIDMsIDc0LCAyNTAsIAorICAgIDEwNywgMjIsIDMsIDc2LCAyNTAsIDEwNywgMjIsIDMsIDIzMiwgMywgNzYsIDI1MCwgMTA3LCAyMiwgMywgNzEsIDI1MCwgCisgICAgMTA3LCAyMiwgMywgMTA2LCAzMywgMjE1LCA1MCwgMjE3LCAxOTksIDI1MCwgMTA3LCAxMDcsIDMsIDIyNSwgNzksIDI1MCwgCisgICAgMTA3LCAxMDcsIDMsIDIzOSwgMTU1LCAyNTAsIDEwNywgMjIxLCAyNTIsIDI1MCwgMTA3LCAyMjEsIDI0OCwgMjUwLCAxMDcsIAorICAgIDE2LCAyNDksIDIyMiwgMjI1LCAyMzcsIDIyNywgNjEsIDI1MCwgMTA3LCAxNiwgMjQ5LCAyMjIsIDIyMSwgOCwgMjUwLCAKKyAgICAxMDcsIDE2LCAyNDksIDIyMiwgMjMyLCAxMDEsIDI1MCwgMTA3LCAxNiwgMjQ5LCAyMjIsIDIyMSwgMjUyLCAyMzAsIDEyLCAKKyAgICAxLCAxNzIsIDIzMCwgMTIsIDEsIDIzMSwgNjUsIDIzMCwgMTIsIDEsIDIzMSwgMTY3LCAyMzAsIDEyLCAxLCAyNDAsIDI0NCwgCisgICAgMjMwLCAxMiwgMSwgMjQwLCAzMSwgMjMwLCAxMiwgMSwgMjI1LCA3NywgMjMwLCAxMiwgMSwgMjQ5LCAxLCAyMzAsIDEyLCAxLCAKKyAgICAyNDgsIDExMCwgMjMwLCAxMiwgMSwgMjMyLCAyMDAsIDIzMCwgMTIsIDEsIDIyMywgMTQ0LCAyMzAsIDEyLCAxLCAyMTIsIAorICAgIDIxOSwgMjMwLCAxMiwgMSwgMjEyLCA1NiwgMjMwLCAxMiwgMSwgMjQ2LCAxNDUsIDIzMCwgMTIsIDEsIDE5OSwgMjMwLCAxMiwgCisgICAgMSwgMTc5LCAyMzAsIDEyLCAxLCAyMjAsIDI0MCwgMjMwLCAxMiwgMSwgMjIxLCA5MywgMjMwLCAxMiwgMSwgMjQyLCA3MywgCisgICAgMjMwLCAxMiwgMSwgMjQxLCAxOTgsIDIzMCwgMTIsIDEsIDI1MCwgMTgzLCAyMzAsIDEyLCAxLCAyNDksIDIwMywgMjMwLCAKKyAgICAxMiwgMSwgMTg1LCAyMzAsIDEyLCAxLCAyMjYsIDE4OCwgMjMwLCAxMiwgMSwgMjEwLCAyNDMsIDIzMCwgMTIsIDEsIDIxMCwgCisgICAgMjMzLCAyMzAsIDEyLCAxLCAyNDMsIDE5NiwgMjMwLCAxMiwgMSwgMTkwLCAyMzAsIDEyLCAxLCAyMTksIDExMywgMjMwLCAKKyAgICAxMiwgMSwgMjMwLCAxNDEsIDIzMCwgMTIsIDEsIDE1NSwgMjMwLCAxMiwgMSwgMjM4LCAyMzcsIDIzMCwgMTIsIDEsIDIwOSwgCisgICAgNzAsIDIzMCwgMTIsIDEsIDIxNywgMTk5LCAyMzAsIDEyLCAxLCAyMTYsIDIsIDIzMCwgMTIsIDEsIDIwNywgOTYsIDIzMCwgCisgICAgMTIsIDEsIDYyLCAyMzAsIDEyLCAyMTMsIDE5MSwgMSwgMTkwLCAyMzAsIDEyLCAyMTMsIDE5MSwgMSwgMjE5LCAxMTMsIAorICAgIDIzMCwgMTIsIDIyLCAzLCAyNTMsIDE2NCwgMjMwLCAxMiwgMjIsIDMsIDc0LCAyMzAsIDEyLCAyMiwgMywgNzYsIDIzMCwgCisgICAgMTIsIDIyLCAzLCAyMjIsIDE1MiwgMjMwLCAxMiwgMjIsIDMsIDcxLCAyMzAsIDEyLCAyMiwgMywgMjA5LCAxNjIsIDIzMCwgCisgICAgMTIsIDIyLCAzLCA3NSwgMjMwLCAxMiwgMTA3LCAzLCAyMzIsIDc2LCAyMzAsIDEyLCAxMDcsIDMsIDIyOSwgMjgsIDIzMCwgCisgICAgMTIsIDEwNywgMywgMTQ5LCAyMzAsIDEyLCAxMDcsIDMsIDIyNiwgMzMsIDIzMCwgMTIsIDEwNywgMywgMjIyLCA2NywgMjMwLCAKKyAgICAxMiwgMTA3LCAzLCAxMzcsIDIzMCwgMTIsIDEwNywgMywgMjEzLCAxMCwgMjMwLCAxMiwgMTA3LCAzLCAyMjMsIDExOCwgCisgICAgMjMwLCAxMiwgMTA3LCAzLCAyMzIsIDIzLCAyMzAsIDEyLCAzLCAyMTksIDc0LCAyMzAsIDEyLCAzLCAyMjMsIDE4NCwgMjMwLCAKKyAgICAxMiwgMjIwLCA3MiwgMjEyLCAyMTcsIDIzMCwgMTIsIDIyMCwgNzIsIDIyMywgMTI5LCAyMTEsIDIxNCwgMjEyLCAyMTcsIAorICAgIDIzMCwgMTIsIDIyMCwgNzIsIDI0OCwgMTE3LCAyMzAsIDEyLCAyMjAsIDcyLCAyMTAsIDIyNSwgMjQ4LCAxMTcsIDIzMCwgCisgICAgMTIsIDIyMCwgNzIsIDIxMCwgMjI0LCAyMzAsIDEyLCAxOCwgMjA1LCA4NSwgMjMwLCAxMiwgMTgsIDEwMiwgMjMwLCAxMiwgCisgICAgMTgsIDEwNSwgMjMwLCAxMiwgMTgsIDE0MiwgMjMwLCAxMiwgMTgsIDEzOSwgMjMwLCAxMiwgMTgsIDE2OCwgMjMwLCAxMiwgCisgICAgMTgsIDE4NCwgMjMwLCAxMiwgMTgsIDE5NSwgMjMwLCAxMiwgMTgsIDE5MywgMjMwLCAxMiwgMTgsIDIwMCwgMjMwLCAxMiwgCisgICAgMSwgMjEwLCAyMDgsIDIzMCwgMTIsIDEsIDIxMCwgMTk2LCAyMzAsIDEyLCAxLCAyNDYsIDU0LCAyMjIsIDE4MSwgMjQ4LCAKKyAgICA1MSwgMTgsIDIwNSwgODUsIDIyMiwgMTgxLCAyNDgsIDUxLCAxOCwgMTAyLCAyMjIsIDE4MSwgMjQ4LCA1MSwgMTgsIDEwNSwgCisgICAgMjIyLCAxODEsIDI0OCwgNTEsIDE4LCAxNDIsIDIyMiwgMTgxLCAyNDgsIDUxLCAxOCwgMTM5LCAyMjIsIDE4MSwgMjQ4LCAKKyAgICA1MSwgMTgsIDE2OCwgMjIyLCAxODEsIDI0OCwgNTEsIDE4LCAxODQsIDIyMiwgMTgxLCAyNDgsIDUxLCAxOCwgMTk1LCAyMjIsIAorICAgIDE4MSwgMjQ4LCA1MSwgMTgsIDE5MywgMjIyLCAxODEsIDI0OCwgNTEsIDE4LCAyMDAsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAKKyAgICAyMzAsIDE0MSwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDI1MSwgMTk5LCAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgMjUyLCAyMjAsIAorICAgIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyNTIsIDExNCwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDI1MiwgMTgxLCAyMjIsIDE4MSwgCisgICAgMjQ4LCA1MSwgMSwgMjMwLCAxNDAsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyNTMsIDEyNiwgMjIyLCAxODEsIDI0OCwgNTEsIAorICAgIDEsIDI1MywgMTI3LCAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgMjUzLCAxMjUsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyNTMsIAorICAgIDEyMCwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDIyOSwgMjM1LCAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgMjMyLCAyMzQsIDIyMiwgCisgICAgMTgxLCAyNDgsIDUxLCAxLCAyMzMsIDEwMywgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDIzMiwgMjU1LCAyMjIsIDE4MSwgMjQ4LCAKKyAgICA1MSwgMSwgMjMyLCAyNDMsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyMjksIDgxLCAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgCisgICAgMjEwLCAxMCwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDIxMCwgOCwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDIwOSwgMjExLCAKKyAgICAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgMjA5LCAxNTQsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyMzAsIDU4LCAyMjIsIDE4MSwgCisgICAgMjQ4LCA1MSwgMSwgMjQyLCAyNTMsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyNDMsIDEwNywgMjIyLCAxODEsIDI0OCwgNTEsIAorICAgIDEsIDI0MywgNDEsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyNDIsIDIyOSwgMjIyLCAxODEsIDI0OCwgNTEsIDEsIDIyOSwgCisgICAgMTQ0LCAyMjIsIDE4MSwgMjQ4LCA1MSwgMSwgMjIyLCAxMDAsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyMjIsIDIyNiwgMjIyLCAKKyAgICAxODEsIDI0OCwgNTEsIDEsIDIyMiwgODgsIDIyMiwgMTgxLCAyNDgsIDUxLCAxLCAyMjIsIDE5NCwgMjIyLCAxODEsIDI0OCwgCisgICAgNTEsIDIyNiwgMTE1LCAyMTAsIDE3MywgMjIyLCAxODEsIDI0OCwgNTEsIDI0MCwgMjM5LCAyMTAsIDE3NCwgMjIyLCAxODEsIAorICAgIDI0OCwgNTEsIDIyNiwgMTEzLCAyMTAsIDE3NCwgMjIyLCAxODEsIDI0OCwgNTEsIDIxOSwgMTIsIDIyMiwgMTgxLCAyNDgsIAorICAgIDUxLCAyMjEsIDkxLCAyMjIsIDE4MSwgMjQ4LCA1MSwgMjUyLCAyMTIsIDIyMiwgMTgxLCAyNDgsIDUxLCAyMjAsIDcyLCAKKyAgICAyMjYsIDEwOSwgMjIyLCAxODEsIDI0OCwgNTEsIDIyMCwgNzIsIDUwLCAyMjYsIDEwOSwgMjEzLCAxNTMsIDIyMCwgNzIsIAorICAgIDI0OSwgMjIyLCAyMTMsIDEyNCwgMjEzLCAxNTMsIDIyMCwgNzIsIDI0OSwgMjIyLCAyMjEsIDI1MywgMjEzLCAxNTMsIDIyMCwgCisgICAgNzIsIDI0OSwgMjIyLCAyMjAsIDYwLCAyMTMsIDE1MywgMjIwLCA3MiwgMjQ5LCAyMjIsIDI0OCwgMjQyLCAyMTMsIDE1MywgCisgICAgMjIwLCA3MiwgMjQ5LCAyMjIsIDIzMCwgMywgMjE3LCAxMzIsIDIxMywgMTUzLCAyMjAsIDcyLCAyNDksIDIyMiwgMjMyLCAKKyAgICA2NiwgMjE3LCAxMzIsIDIxMywgMTUzLCAyMjAsIDcyLCAyNDksIDIyMiwgMjQ2LCAxNDYsIDIxNywgMTMyLCAyMTMsIDE1MywgCisgICAgMjIwLCA3MiwgMjQ5LCAyMjIsIDI1MCwgMTg0LCAyMTcsIDEzMiwgMjA5LCAzNiwgMTM1LCAyMzIsIDEsIDIwOSwgMzYsIAorICAgIDEzNSwgMjE1LCAyMjksIDIwOSwgMzYsIDEzNSwgMjIwLCAxMzUsIDIwOSwgMzYsIDMsIDIyNCwgMjA2LCAyMDksIDM2LCAzLCAKKyAgICAyMDYsIDg2LCAyMjYsIDI0NSwgMjEzLCAxMTUsIDIwOSwgMzYsIDEzNSwgMjA2LCA4NiwgMjUyLCAyMTcsIDIzMywgNTUsIAorICAgIDIxMywgMTE1LCAyMDksIDM2LCAxMzUsIDIwNiwgODYsIDIzMywgNTUsIDIxMywgMTE1LCAyMDksIDM2LCAxMzUsIDIwNiwgCisgICAgODYsIDIzMSwgMjQ1LCAyMzMsIDU1LCAyMTMsIDExNSwgMjA5LCAzNiwgMTM1LCAyNDgsIDIyMCwgNTUsIDIwOSwgMzYsIAorICAgIDEzNSwgMjA2LCA4NiwgMjMxLCAyNDUsIDIzMywgNTUsIDIxMywgMTE2LCAyMTcsIDEwMiwgMjA5LCAzNiwgMTM1LCA1MCwgCisgICAgMjEzLCAxMTUsIDIwOSwgMzYsIDEzNSwgMjExLCAzNiwgMjEzLCAxMTUsIDIwOSwgMzYsIDEzNSwgMjMxLCAyNDUsIDI1MiwgCisgICAgNzUsIDIwOSwgMzYsIDEzNSwgNjcsIDU1LCAyMDksIDM2LCAxMzUsIDExOCwgMTc3LCA1NSwgMjA5LCAzNiwgMTM1LCAxMjksIAorICAgIDE3NywgNTUsIDIwOSwgMzYsIDEzNSwgMjE4LCAxNTUsIDIzMiwgMCwgMjMzLCA1NSwgMjEzLCAxMTUsIDIwOSwgMzYsIDEzNSwgCisgICAgMjUxLCAxOTcsIDIzMywgNTUsIDIxMywgMTE1LCAyMDksIDM2LCAzLCAyMDgsIDE4NCwgMjEzLCAxMTUsIDIwOSwgMzYsIDMsIAorICAgIDIwOCwgMTg0LCAyMTAsIDUsIDIwOSwgMzYsIDMsIDIxOCwgMjI0LCAyMDgsIDE4NCwgMjEwLCA1LCAyMDksIDM2LCAzLCAKKyAgICAyMDgsIDE4NCwgMjUyLCA3NSwgMjA5LCAzNiwgMywgMjE4LCAyMjQsIDIwOCwgMTg0LCAyNTIsIDc1LCAyMDksIDM2LCAzLCAKKyAgICAyMDgsIDE4NCwgMjEwLCA2LCAyLCAyMTIsIDE5MSwgMjA5LCAzNiwgMywgMjA4LCAxODQsIDI1MiwgNzYsIDIsIDIxMiwgCisgICAgMTkxLCAyMDksIDM2LCAzLCAyNTIsIDc0LCAyNTIsIDkwLCAyMDksIDM2LCAzLCAyNTIsIDc0LCAyNTAsIDE1NiwgMjA5LCAKKyAgICAzNiwgMywgMjUyLCA3NCwgMjA5LCA2MSwgMjA5LCAzNiwgMywgMjUyLCA3NCwgMjA5LCA2MiwgMiwgMjEyLCAxOTEsIDIwOSwgCisgICAgMzYsIDMsIDIxMSwgMTU3LCAyMDksIDM2LCAzLCAyMzksIDIzLCAxNTIsIDI1MiwgNzMsIDIwOSwgMzYsIDMsIDE1MiwgMjUyLCAKKyAgICA3MywgMjA5LCAzNiwgMywgMjE4LCA1MiwgMTUyLCAyNTIsIDczLCAyMDksIDM2LCAzLCAyNTIsIDc0LCAyMTAsIDEyLCAyMjYsIAorICAgIDEwMCwgMjA5LCAzNiwgMywgMjUyLCAxNSwgMjA5LCAzNiwgMywgMjE4LCA5NywgMjUyLCAxNSwgMjA5LCAzNiwgMTM1LCAKKyAgICAyNDgsIDIyMCwgNTIsIDIwOSwgMzYsIDMsIDIzMiwgMTU2LCAyMDksIDM2LCAzLCAyMDksIDIwNCwgMjA5LCAzNiwgMTM1LCAKKyAgICAyMTgsIDE0OSwgNTIsIDIwOSwgMzYsIDEzNSwgNTAsIDIxOCwgMTQ5LCA1MiwgNywgMSwgNSwgNiwgNjIsIDcsIDEsIDUsIDYsIAorICAgIDI1MiwgMjQ4LCA3LCA1LCAxLCAyMDEsIDI1MiwgMjQ4LCA3LCAxLCA1LCA2LCAyNTAsIDEyMywgMjUxLCAxNTAsIDcsIDEsIAorICAgIDUsIDYsIDI0OSwgMzQsIDcsIDEsIDUsIDYsIDI0NiwgMjQwLCA3LCAxLCA1LCA2LCAyNDIsIDE5NiwgNywgMSwgNSwgNiwgCisgICAgNzUsIDcsIDUsIDEsIDIwMSwgMjIyLCAxNDIsIDc1LCA3LCA1LCAxLCAyMDEsIDc0LCA3LCAxLCA1LCA2LCAyMzIsIDIwMywgCisgICAgNywgMSwgNSwgNiwgMjMyLCA3NiwgNywgMSwgNSwgNiwgMjMwLCAxNTksIDIsIDkxLCA3LCAxLCA1LCA2LCAyMjksIDI4LCA3LCAKKyAgICAxLCA1LCA2LCAyMTgsIDIyNCwgMjI2LCAzMywgNywgMSwgNSwgNiwgNzYsIDcsIDEsIDUsIDYsIDIyMiwgMTQyLCA3NiwgNywgCisgICAgNSwgMSwgMjE1LCA3MywgNzYsIDcsIDUsIDEsIDIxNSwgNzMsIDIyMiwgMTQyLCA3NiwgNywgNSwgMSwgMjE1LCA3MywgMTQ4LCAKKyAgICAyLCA5MSwgNywgNSwgMSwgMjAxLCAyMjIsIDIwNiwgNywgMSwgNSwgNiwgMjIyLCA5NywgNywgNSwgMSwgMjExLCAxMDIsIAorICAgIDE2MCwgNzYsIDcsIDUsIDEsIDI0OSwgMTU0LCAxNjAsIDc2LCA3LCAxLCA1LCA2LCAyMjIsIDY3LCA3LCAxLCA1LCA2LCAKKyAgICAyMTgsIDIyNCwgMTM3LCA3LCAxLCA1LCA2LCAyMDEsIDEzNywgNywgMSwgNSwgNiwgMjEzLCAxMCwgNywgMSwgNSwgNiwgNzEsIAorICAgIDcsIDUsIDEsIDIxNSwgNzMsIDcxLCA3LCA1LCAxLCAyMTUsIDczLCAyNDUsIDE2NCwgNzEsIDcsIDUsIDEsIDIxNSwgNzMsIAorICAgIDIwMSwgMjI5LCAyOCwgNywgMSwgNSwgNiwgMjA5LCAxNDgsIDcsIDEsIDUsIDYsIDIwNywgMTI5LCA3LCAxLCA1LCA2LCAKKyAgICAyMDUsIDE1OSwgNywgMSwgNSwgNiwgMjQyLCAxNDEsIDcsIDEsIDIwOCwgMTcwLCAyMzAsIDgzLCAyMTQsIDEyNiwgNywgMSwgCisgICAgMjUyLCAyMDAsIDI3LCAxLCA1LCA2LCAyNDAsIDIxNSwgMjcsIDEsIDUsIDYsIDIzMCwgMTAyLCAyNywgMSwgNSwgNiwgMjIxLCAKKyAgICA1MywgMjcsIDEsIDUsIDYsIDIxOCwgMjEwLCAyNywgMSwgNSwgNiwgMjIwLCA5MywgMzQsIDEsIDUsIDYsIDI0MywgNjgsIAorICAgIDY1LCAxLCA2LCA2MiwgNjUsIDEsIDYsIDI1MiwgMjQ4LCA2NSwgMSwgNiwgMjUxLCAxNTAsIDY1LCAxLCA2LCAyNTAsIDEyMywgCisgICAgMjUxLCAxNTAsIDY1LCAxLCA2LCAyNDYsIDI0MCwgNjUsIDEsIDYsIDc1LCA2NSwgMSwgNiwgMjE4LCAyMjQsIDc1LCA2NSwgCisgICAgMSwgNiwgMjQxLCA1NSwgNjUsIDEsIDYsIDIzOSwgMTU1LCA2NSwgMSwgNiwgNzQsIDY1LCAxLCA2LCAyMzIsIDIwMywgNjUsIAorICAgIDEsIDYsIDIzMiwgNzYsIDY1LCAxLCA2LCAxNDksIDY1LCAxLCA2LCAyMjksIDI4LCA2NSwgMSwgNiwgMjI2LCAzMywgNjUsIAorICAgIDEsIDYsIDIxOCwgMjI0LCAyMjYsIDMzLCA2NSwgMSwgNiwgNzYsIDY1LCAxLCA2LCAyMjIsIDk3LCA2NSwgMSwgNiwgMjIyLCAKKyAgICA2NywgNjUsIDEsIDYsIDEzNywgNjUsIDEsIDYsIDIxMywgMTAsIDY1LCAxLCA2LCA3MSwgNjUsIDEsIDYsIDIwNywgMTI5LCAKKyAgICA2NSwgMSwgNSwgNjIsIDY1LCAxLCA1LCAyMDEsIDYyLCA2NSwgMSwgNSwgMjUyLCAxNDQsIDY1LCAxLCA1LCAyMDEsIDI1MiwgCisgICAgMjQ4LCA2NSwgMSwgNSwgMjUxLCAxNTAsIDY1LCAxLCA1LCAyNDYsIDI0MCwgNjUsIDEsIDUsIDc1LCA2NSwgMSwgNSwgMjE3LCAKKyAgICAxMDAsIDY1LCAxLCA1LCAyMjIsIDE0MiwgNzUsIDY1LCAxLCA1LCAyMDEsIDIyMiwgMTQyLCA3NSwgNjUsIDEsIDUsIDI0MSwgCisgICAgNTUsIDY1LCAxLCA1LCAyMDEsIDc0LCA2NSwgMSwgNSwgMjMyLCA3NiwgNjUsIDEsIDUsIDIyOSwgMjgsIDY1LCAxLCA1LCAKKyAgICAyNDMsIDI4LCA2NSwgMSwgNSwgNzYsIDY1LCAxLCA1LCAyMjIsIDE0MiwgNzYsIDY1LCAxLCA1LCAyMTEsIDEwMiwgMTYwLCAKKyAgICA3NiwgNjUsIDEsIDUsIDI0OSwgMTU0LCAxNjAsIDc2LCA2NSwgMSwgNSwgMjIyLCA2NywgNjUsIDEsIDUsIDIxMywgMTAsIAorICAgIDY1LCAxLCA1LCA3MSwgNjUsIDEsIDUsIDIxNSwgNzMsIDcxLCA2NSwgMSwgNSwgMjAxLCAyMjksIDI4LCA2NSwgMSwgNSwgCisgICAgMjA5LCAxNDgsIDY1LCAxLCA1LCAyNTIsIDIwMCwgNjUsIDEsIDUsIDI1MCwgOCwgNjUsIDEsIDUsIDI3LCAyNDAsIDIxNSwgCisgICAgNjUsIDEsIDUsIDI0NSwgMjI3LCA2NSwgMSwgNSwgMjcsIDIyMSwgNzgsIDY1LCAxLCA1LCAyNDgsIDU4LCA3LCAyMTMsIAorICAgIDE4MywgNSwgMSwgNzQsIDcsIDIxMywgMTgzLCA1LCAxLCAxMzcsIDcsIDIxMywgMTgzLCA1LCAxLCA3MSwgNywgMjEzLCAKKyAgICAxODMsIDUsIDEsIDIwOSwgMTQ4LCAyNywgMjEzLCAxODMsIDUsIDEsIDI1MCwgOCwgMjcsIDIxMywgMTgzLCA1LCAxLCAyNDAsIAorICAgIDIxNSwgMjcsIDIxMywgMTgzLCA1LCAxLCAyMTgsIDIxMCwgMjcsIDIxMywgMTgzLCA1LCAxLCAyMjEsIDc4LCAyNywgMjEzLCAKKyAgICAxODMsIDUsIDEsIDI0OCwgNTgsIDcsIDUsIDEsIDIxMCwgMywgNywgNSwgMSwgNjMsIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgCisgICAgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgNywgNSwgMSwgMjQyLCAxNDAsIDIsIDIyNiwgMjQ3LCAKKyAgICAyMTEsIDE4MCwgNywgNSwgMSwgMjI5LCAyOSwgMiwgMjI2LCAyNDcsIDIxMSwgMTgwLCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAKKyAgICAyMjYsIDI0NywgMjExLCAxODAsIDcsIDUsIDEsIDIyMiwgNjgsIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgNywgNSwgMSwgCisgICAgMjE5LCAxNTAsIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgNywgNSwgMSwgMjE5LCAxNTAsIDIsIDI0MSwgMjExLCAyMywgMjI2LCAKKyAgICAyNDcsIDIxMSwgMTgwLCA3LCA1LCAxLCAyMTgsIDEsIDIsIDIyNiwgMjQ3LCAyMTEsIDE4MCwgNywgNSwgMSwgMjEzLCAxMSwgCisgICAgMiwgMjI2LCAyNDcsIDIxMSwgMTgwLCA3LCA1LCAxLCAyMDUsIDE2MCwgMiwgMjI2LCAyNDcsIDIxMSwgMTgwLCA3LCA1LCAxLCAKKyAgICAyMDEsIDI0MSwgNTUsIDY1LCAxLCAzNCwgMjQzLCA0MSwgNywgNSwgMSwgMjMzLCAyMywgMjQxLCA1NSwgNywgNSwgMSwgCisgICAgMjEyLCA1OSwgMiwgMjEzLCAyMjksIDcsIDUsIDYsIDEsIDIzNywgMjI1LCAyLCA5MSwgNywgNSwgMSwgMjMyLCAyNTAsIDIsIAorICAgIDkxLCA3LCA1LCAxLCAyMjIsIDY4LCAyLCA5MSwgNywgNSwgNiwgMSwgMTA2LCAyLCA5MSwgNywgNSwgMSwgMjA5LCAyMDEsIAorICAgIDIsIDkxLCA3LCA1LCAxLCA2MywgMiwgMjIyLCAyNiwgMTA5LCA3LCA1LCAxLCAyNDYsIDI0MSwgMiwgMjIyLCAyNiwgMTA5LCAKKyAgICA3LCA1LCAxLCAyNDIsIDE0MCwgMiwgMjIyLCAyNiwgMTA5LCA3LCA1LCAxLCAyNDEsIDU2LCAyLCAyMjIsIDI2LCAxMDksIDcsIAorICAgIDUsIDEsIDIzMiwgNzcsIDIsIDIyMiwgMjYsIDEwOSwgNywgNSwgMSwgMjMwLCAxNTksIDIsIDIyMiwgMjYsIDEwOSwgNywgNSwgCisgICAgMSwgMjI5LCAyOSwgMiwgMjIyLCAyNiwgMTA5LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIAorICAgIDIyMiwgNjgsIDIsIDIyMiwgMjYsIDEwOSwgNywgNSwgMSwgMjE5LCAxNTAsIDIsIDIyMiwgMjYsIDEwOSwgNywgNSwgMSwgCisgICAgMjE4LCAxLCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIDI0MiwgMjE2LCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIAorICAgIDIwOSwgMTQ5LCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIDIwNiwgMTk2LCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIAorICAgIDIwNSwgMTYwLCAyLCAyMjIsIDI2LCAxMDksIDcsIDUsIDEsIDMyLCAyLCAyMTgsIDIzMCwgMTA5LCA3LCA1LCAxLCAyNTIsIAorICAgIDE0NSwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDIzOCwgMTMwLCAyMywgMjEyLCAxOTEsIDcsIAorICAgIDUsIDEsIDE3NCwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMjIyLCAxNDIsIDE3NCwgMiwgMjE4LCAyMzAsIDEwOSwgNywgCisgICAgNSwgMSwgMjE4LCAyMjQsIDIyMiwgMTQyLCAxNzQsIDIsIDIxOCwgMjMwLCAxMDksIDcsIDUsIDEsIDIxNywgMTAxLCAyLCAKKyAgICAyMTgsIDIzMCwgMTA5LCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMjIyLCAxNDIsIAorICAgIDE0OCwgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMjQyLCAyMTYsIDIsIDIxOCwgMjMwLCAxMDksIDcsIDUsIDEsIDEwNiwgCisgICAgMiwgMjE4LCAyMzAsIDEwOSwgNywgNSwgMSwgMjQyLCAxNDIsIDIsIDIxOCwgMjMwLCAxMDksIDY1LCAxLCA1LCAyMDEsIAorICAgIDI1MiwgMTQ0LCA2NSwgMSwgNSwgMjQ5LCAzNCwgNjUsIDEsIDUsIDI0OSwgMzUsIDIsIDI0NywgMjcsIDY1LCAxLCA1LCAKKyAgICAyNDIsIDE5NiwgNjUsIDEsIDUsIDIxOCwgMjI0LCAyMjIsIDE0MiwgNzUsIDY1LCAxLCA1LCAyNDIsIDEzOSwgNjUsIDEsIDUsIAorICAgIDI0NSwgMjIsIDIzMiwgMjA0LCAyLCA5MSwgNjUsIDEsIDUsIDEyMSwgMjQxLCA1NSwgNjUsIDEsIDUsIDIwMSwgMjM5LCAKKyAgICAxNTUsIDY1LCAxLCA1LCAyMzcsIDIyNSwgMiwgOTEsIDY1LCAxLCA1LCAyMzIsIDI0OSwgNjUsIDEsIDUsIDYsIDc0LCA2NSwgCisgICAgMSwgNSwgNiwgMjM3LCAyMjUsIDIsIDkxLCA2NSwgMSwgNSwgMjMyLCAyMDQsIDIsIDI0NywgNTYsIDY1LCAxLCA1LCAyMzAsIAorICAgIDE1OSwgMiwgMjE4LCAyMzAsIDEwOSwgNjUsIDEsIDUsIDIzMCwgMTU5LCAyLCAyMjIsIDI2LCAxMDksIDY1LCAxLCA1LCA2LCAKKyAgICAxNDksIDY1LCAxLCA1LCAyMjksIDI5LCAyLCAxMDksIDY1LCAxLCA1LCAyMDEsIDIyOSwgMjksIDIsIDE1MiwgMjMwLCAzNCwgCisgICAgNjUsIDEsIDUsIDIyNiwgMzQsIDIsIDQ3LCAxMDksIDY1LCAxLCA1LCAyMjYsIDM0LCAyLCAyMTgsIDIzMCwgMTA5LCA2NSwgCisgICAgMSwgNSwgNiwgMjI2LCAzMywgNjUsIDEsIDUsIDI1MCwgMTIzLCA3NiwgNjUsIDEsIDUsIDIyMSwgNzgsIDY1LCAxLCA1LCAKKyAgICAyMTgsIDEsIDIsIDEwOSwgNjUsIDEsIDUsIDI0MiwgMjE1LCA2NSwgMSwgNSwgMjEzLCAxMSwgMiwgMjIyLCAyNiwgMTA5LCAKKyAgICA2NSwgMSwgNSwgMTA2LCAxMzQsIDY1LCAxLCA1LCAyMDksIDIwMCwgNjUsIDEsIDUsIDYsIDcxLCA2NSwgMSwgNSwgMjA5LCAKKyAgICAxNDksIDIsIDEwOSwgNjUsIDEsIDUsIDIwMSwgMjA5LCAxNDgsIDY1LCAxLCA1LCAyMDUsIDE1OSwgNjUsIDEsIDUsIDIwNSwgCisgICAgMTYwLCAyLCAyMTgsIDIzMCwgMTA5LCA2NSwgMSwgNSwgMjA1LCAxNjAsIDIsIDI0NywgMjcsIDY1LCAxLCA1LCAyNDIsIAorICAgIDE0MSwgNjUsIDEsIDUsIDIxMiwgMjMsIDM2LCAyNDQsIDIxLCAyMzksIDIzNywgMjUzLCAyMSwgMzYsIDI0NCwgMjEsIDI1MywgCisgICAgOSwgMjUzLCAyMSwgMzYsIDIxNCwgMjA1LCA1NSwgMzYsIDIxMywgMTIyLCA4MywgMzYsIDIyOCwgMTIsIDM2LCAyMzksIAorICAgIDIzNCwgMzYsIDIyOCwgMTAsIDM2LCAyNTMsIDcsIDM2LCAyMzksIDIzNSwgMzYsIDI1MywgOCwgMzYsIDcsIDUsIDEsIDIxOSwgCisgICAgMTUwLCA1NSwgMzYsIDI0OSwgMTIxLCAzNiwgMjI4LCAxMSwgMzYsIDUwLCAyNDcsIDIyOCwgNTIsIDM2LCAyMjIsIDE5NywgCisgICAgNTIsIDM2LCAyMDUsIDMxLCA1NSwgMzYsIDIzMiwgMjM1LCA1NSwgMzYsIDIwOSwgMTk1LCA1MiwgMzYsIDIwOSwgMTc4LCAKKyAgICA1MiwgMzYsIDcsIDUsIDEsIDI0MSwgMTg1LCAyMjIsIDE0MiwgMzIsIDUyLCAzNiwgNywgNSwgMSwgMjUyLCAyNDgsIDM2LCAKKyAgICA3LCA1LCAxLCAyNTIsIDcxLCAzNiwgNywgNSwgMSwgMjUxLCAxNjgsIDM2LCA3LCA1LCAxLCAyNDksIDM1LCAyNDgsIDE0MSwgCisgICAgMzYsIDcsIDUsIDEsIDIzMywgMjMsIDI0NiwgMjQwLCAzNiwgNywgNSwgMSwgMjQyLCAxOTYsIDM2LCA3LCA1LCAxLCAyNDEsIAorICAgIDU1LCAzNiwgNywgMSwgNSwgNiwgMjQxLCA1NSwgMzYsIDcsIDUsIDEsIDIzMiwgNzYsIDM2LCA3LCA1LCAxLCAxNDksIDM2LCAKKyAgICA3LCAxLCA1LCA2LCAxNDksIDM2LCA3LCAxLCA1LCA2LCAyMjksIDI4LCAzNiwgNywgNSwgMSwgMjI2LCAzMywgMzYsIDcsIDEsIAorICAgIDUsIDYsIDIyNiwgMzMsIDM2LCA3LCAxLCA1LCA2LCAxMzcsIDM2LCA3LCA1LCAxLCAyMTksIDE1MCwgMjE4LCA5NiwgMzYsIAorICAgIDcsIDUsIDEsIDE4MiwgMzYsIDcsIDUsIDEsIDE1MiwgMTgyLCAzNiwgNywgNSwgMSwgMjA1LCAxNTksIDM2LCA3LCA1LCAxLCAKKyAgICAyNTIsIDE0NCwgMzYsIDcsIDUsIDEsIDI1MSwgMTUwLCAzNiwgNywgNSwgMSwgMjUwLCA4LCAzNiwgNywgNSwgMSwgMjE3LCAKKyAgICAxMDAsIDM2LCA3LCA1LCAxLCAyNDIsIDEzOSwgMzYsIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCA1MCwgMjI2LCAyNDcsIDIxMSwgCisgICAgMTgwLCAzNiwgNywgNSwgMSwgMTQ4LCAyLCAxNDcsIDI0OCwgMTMwLCA5MSwgMzYsIDcsIDUsIDEsIDIyMiwgNjcsIDM2LCA3LCAKKyAgICA1LCAxLCAyNDIsIDIxNSwgMzYsIDcsIDUsIDEsIDEwNiwgMiwgMTQ3LCAyNDgsIDEzMCwgOTEsIDM2LCA3LCA1LCAxLCAyMDcsIAorICAgIDEyOSwgMzYsIDcsIDUsIDEsIDMyLCAyLCAyNDUsIDE2NiwgMzYsIDcsIDUsIDEsIDE0OCwgMiwgMjQ1LCAxNjYsIDM2LCA3LCAKKyAgICA1LCAxLCAxMDYsIDIsIDI0NSwgMTY2LCAzNiwgMTIwLCAyMTIsIDIwMiwgNTIsIDM2LCA1MCwgMjMzLCAyLCAyNDksIDEyMywgCisgICAgNTUsIDM2LCAyNTIsIDE0OSwgMTQ2LCAyMTEsIDEzMCwgNTUsIDM2LCA0NywgMjUxLCAyNDQsIDUyLCAzNiwgNDgsIDI1MSwgCisgICAgMjQ0LCAyMywgMTMwLCAyNTEsIDI0NCwgNTUsIDcsIDYsIDEsIDMyLCAyLCAyMTgsIDE0OSwgNTUsIDcsIDUsIDEsIDMyLCAyLCAKKyAgICAyMTgsIDE0OSwgNTUsIDcsIDYsIDEsIDYzLCAyLCA2NywgNTIsIDcsIDUsIDEsIDYzLCAyLCA2NywgNTIsIDcsIDYsIDEsIAorICAgIDYzLCAyLCA2NywgNTUsIDcsIDUsIDEsIDYzLCAyLCA2NywgNTUsIDcsIDYsIDEsIDYzLCAyLCAyMjksIDIwNiwgNTUsIDcsIAorICAgIDUsIDEsIDYzLCAyLCAyMjksIDIwNiwgNTUsIDcsIDYsIDEsIDI0OSwgMzUsIDIsIDI0OCwgMTQyLCAyMywgMTUzLCA3LCA1LCAKKyAgICAxLCAyNDksIDM1LCAyLCAyNDgsIDE0MiwgMjMsIDE1MywgNywgNiwgMSwgMjQ2LCAyNDEsIDIsIDY3LCA1MiwgNywgNSwgMSwgCisgICAgMjQ2LCAyNDEsIDIsIDY3LCA1MiwgNywgNiwgMSwgMjQ2LCAyNDEsIDIsIDY3LCA1NSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIAorICAgIDY3LCA1NSwgNywgNiwgMSwgMjQ2LCAyNDEsIDIsIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgMjQ2LCAyNDEsIDIsIDIyOSwgCisgICAgMjA2LCA1NSwgNywgNiwgMSwgMjQ2LCAyNDEsIDIsIDI0OCwgMTQxLCA3LCA1LCAxLCAyNDYsIDI0MSwgMiwgMjQ4LCAxNDEsIAorICAgIDcsIDYsIDEsIDI0NiwgMjQxLCAyLCAyNDcsIDIyOCwgNTUsIDcsIDUsIDEsIDI0NiwgMjQxLCAyLCAyNDcsIDIyOCwgNTUsIAorICAgIDcsIDYsIDEsIDE3NCwgMiwgMjI4LCAxNCwgMjMsIDIzOSwgMjM2LCA3LCA1LCAxLCAxNzQsIDIsIDIyOCwgMTQsIDIzLCAKKyAgICAyMzksIDIzNiwgNywgNiwgMSwgMTc0LCAyLCAyMjgsIDE0LCAyMywgMTUzLCA3LCA1LCAxLCAxNzQsIDIsIDIyOCwgMTQsIAorICAgIDIzLCAxNTMsIDcsIDYsIDEsIDE3NCwgMiwgMjQ3LCAyMjgsIDU1LCA3LCA1LCAxLCAxNzQsIDIsIDI0NywgMjI4LCA1NSwgNywgCisgICAgNiwgMSwgMTc0LCAyLCAyMTEsIDE4MSwgNTUsIDcsIDUsIDEsIDE3NCwgMiwgMjExLCAxODEsIDU1LCA3LCA2LCAxLCAxNzQsIAorICAgIDIsIDI0OCwgMTQyLCAyMywgMjQ5LCAxMjIsIDcsIDUsIDEsIDE3NCwgMiwgMjQ4LCAxNDIsIDIzLCAyNDksIDEyMiwgNywgNiwgCisgICAgMSwgMjQyLCAxNDAsIDIsIDY3LCA1MiwgNywgNSwgMSwgMjQyLCAxNDAsIDIsIDY3LCA1MiwgNywgNiwgMSwgMjQxLCA1NiwgCisgICAgMiwgMjI4LCAxMywgNywgNSwgMSwgMjQxLCA1NiwgMiwgMjI4LCAxMywgNywgNiwgMSwgMjM5LCAxNTYsIDIsIDY3LCA1MiwgCisgICAgNywgNSwgMSwgMjM5LCAxNTYsIDIsIDY3LCA1MiwgNywgNiwgMSwgMjM5LCAxNTYsIDIsIDY3LCA1NSwgNywgNSwgMSwgMjM5LCAKKyAgICAxNTYsIDIsIDY3LCA1NSwgNywgNiwgMSwgMjM5LCAxNTYsIDIsIDI0NSwgMTY2LCA3LCA1LCAxLCAyMzksIDE1NiwgMiwgCisgICAgMjQ1LCAxNjYsIDcsIDYsIDEsIDIzOSwgMTU2LCAyLCAyNDgsIDE0MSwgNywgNSwgMSwgMjM5LCAxNTYsIDIsIDI0OCwgMTQxLCAKKyAgICA3LCA2LCAxLCAyMzksIDE1NiwgMiwgMjQ5LCAxMjMsIDU1LCA3LCA1LCAxLCAyMzksIDE1NiwgMiwgMjQ5LCAxMjMsIDU1LCAKKyAgICA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjExLCAxODEsIDU1LCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgMjExLCAxODEsIDU1LCAKKyAgICA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjQ1LCAxNjcsIDIzLCAxNTMsIDcsIDUsIDEsIDIzNywgMjI1LCAyLCAyNDUsIDE2NywgCisgICAgMjMsIDE1MywgNywgNiwgMSwgMjMyLCA3NywgMiwgMTUzLCA3LCA1LCAxLCAyMzIsIDc3LCAyLCAxNTMsIDcsIDYsIDEsIAorICAgIDIzMiwgNzcsIDIsIDY3LCA1NSwgNywgNSwgMSwgMjMyLCA3NywgMiwgNjcsIDU1LCA3LCA2LCAxLCAyMzIsIDc3LCAyLCAKKyAgICAyMjksIDIwNiwgNTUsIDcsIDUsIDEsIDIzMiwgNzcsIDIsIDIyOSwgMjA2LCA1NSwgNywgNiwgMSwgMjMwLCAxNTksIDIsIAorICAgIDY3LCA1NSwgNywgNSwgMSwgMjMwLCAxNTksIDIsIDY3LCA1NSwgNywgNiwgMSwgMjMwLCAxNTksIDIsIDY3LCAyNTAsIDI2LCAKKyAgICAyMywgMjI4LCAxMywgNywgNSwgMSwgMjMwLCAxNTksIDIsIDY3LCAyNTAsIDI2LCAyMywgMjI4LCAxMywgNywgNiwgMSwgCisgICAgMjMwLCAxNTksIDIsIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgMjMwLCAxNTksIDIsIDIyOSwgMjA2LCA1NSwgNywgNiwgMSwgCisgICAgMjMwLCAxNTksIDIsIDI0NywgMjI4LCA1NSwgNywgNSwgMSwgMjMwLCAxNTksIDIsIDI0NywgMjI4LCA1NSwgNywgNiwgMSwgCisgICAgMjI5LCAyOSwgMiwgMTUzLCA3LCA1LCAxLCAyMjksIDI5LCAyLCAxNTMsIDcsIDYsIDEsIDIyOSwgMjksIDIsIDY3LCA1MiwgCisgICAgNywgNSwgMSwgMjI5LCAyOSwgMiwgNjcsIDUyLCA3LCA2LCAxLCAyMjksIDI5LCAyLCA2NywgNTUsIDcsIDUsIDEsIDIyOSwgCisgICAgMjksIDIsIDY3LCA1NSwgNywgNiwgMSwgMjI2LCAzNCwgMiwgNjcsIDUyLCA3LCA1LCAxLCAyMjYsIDM0LCAyLCA2NywgNTIsIAorICAgIDcsIDYsIDEsIDIyNiwgMzQsIDIsIDY3LCA1NSwgNywgNSwgMSwgMjI2LCAzNCwgMiwgNjcsIDU1LCA3LCA2LCAxLCAyMjYsIAorICAgIDM0LCAyLCAyMjksIDIwNiwgNTUsIDcsIDUsIDEsIDIyNiwgMzQsIDIsIDIyOSwgMjA2LCA1NSwgNywgNiwgMSwgMjI2LCAzNCwgCisgICAgMiwgMjQ3LCAyMjgsIDU1LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyNDcsIDIyOCwgNTUsIDcsIDYsIDEsIDE0OCwgMiwgMjExLCAKKyAgICAxODEsIDIzLCAxNTMsIDcsIDUsIDEsIDE0OCwgMiwgMjExLCAxODEsIDIzLCAxNTMsIDcsIDYsIDEsIDE0OCwgMiwgMjExLCAKKyAgICAxODEsIDIzLCAyNDUsIDE2NiwgNywgNSwgMSwgMTQ4LCAyLCAyMTEsIDE4MSwgMjMsIDI0NSwgMTY2LCA3LCA2LCAxLCAxNDgsIAorICAgIDIsIDIyOCwgMTQsIDIzLCAyMzksIDIzNiwgNywgNSwgMSwgMTQ4LCAyLCAyMjgsIDE0LCAyMywgMjM5LCAyMzYsIDcsIDYsIAorICAgIDEsIDE0OCwgMiwgMjI4LCAxNCwgMjMsIDE1MywgNywgNSwgMSwgMTQ4LCAyLCAyMjgsIDE0LCAyMywgMTUzLCA3LCA2LCAxLCAKKyAgICAyMjIsIDY4LCAyLCAxNTMsIDcsIDUsIDEsIDIyMiwgNjgsIDIsIDE1MywgNywgNiwgMSwgMjIyLCA2OCwgMiwgNjcsIDUyLCAKKyAgICA3LCA1LCAxLCAyMjIsIDY4LCAyLCA2NywgNTIsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCA2NywgNTIsIDcsIDUsIDEsIDIxOSwgCisgICAgMTUwLCAyLCA2NywgNTIsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCA2NywgNTUsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCA2NywgCisgICAgNTUsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCA2NywgMjUwLCAyNiwgMjMsIDIyOCwgMTMsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAKKyAgICA2NywgMjUwLCAyNiwgMjMsIDIyOCwgMTMsIDcsIDYsIDEsIDIxOSwgMTUwLCAyLCAyMjksIDIwNiwgNTUsIDcsIDUsIDEsIAorICAgIDIxOSwgMTUwLCAyLCAyMjksIDIwNiwgNTUsIDcsIDYsIDEsIDIxOCwgMSwgMiwgNjcsIDUyLCA3LCA1LCAxLCAyMTgsIDEsIAorICAgIDIsIDY3LCA1MiwgNywgNiwgMSwgMjE4LCAxLCAyLCA2NywgNTUsIDcsIDUsIDEsIDIxOCwgMSwgMiwgNjcsIDU1LCA3LCA2LCAKKyAgICAxLCAyMTgsIDEsIDIsIDI1MywgOSwgMjMsIDY3LCA1MiwgNywgNSwgMSwgMjE4LCAxLCAyLCAyNTMsIDksIDIzLCA2NywgNTIsIAorICAgIDcsIDYsIDEsIDIxOCwgMSwgMiwgMjQ4LCAxOTYsIDIzLCA2NywgNTIsIDcsIDUsIDEsIDIxOCwgMSwgMiwgMjQ4LCAxOTYsIAorICAgIDIzLCA2NywgNTIsIDcsIDYsIDEsIDIxOCwgMSwgMiwgNjcsIDI1MCwgMjYsIDIzLCA2NywgNTIsIDcsIDUsIDEsIDIxOCwgMSwgCisgICAgMiwgNjcsIDI1MCwgMjYsIDIzLCA2NywgNTIsIDcsIDYsIDEsIDIxMywgMTEsIDIsIDY3LCA1MiwgNywgNSwgMSwgMjEzLCAKKyAgICAxMSwgMiwgNjcsIDUyLCA3LCA2LCAxLCAyMTMsIDExLCAyLCA2NywgNTUsIDcsIDUsIDEsIDIxMywgMTEsIDIsIDY3LCA1NSwgCisgICAgNywgNiwgMSwgMjEzLCAxMSwgMiwgMjI5LCAyMDYsIDU1LCA3LCA1LCAxLCAyMTMsIDExLCAyLCAyMjksIDIwNiwgNTUsIDcsIAorICAgIDYsIDEsIDIxMywgMTEsIDIsIDI0NywgMjI4LCA1NSwgNywgNSwgMSwgMjEzLCAxMSwgMiwgMjQ3LCAyMjgsIDU1LCA3LCA2LCAKKyAgICAxLCAxMDYsIDIsIDI0NSwgMTY3LCA1NSwgNywgNSwgMSwgMTA2LCAyLCAyNDUsIDE2NywgNTUsIDcsIDYsIDEsIDEwNiwgMiwgCisgICAgMjExLCAxODEsIDU1LCA3LCA1LCAxLCAxMDYsIDIsIDIxMSwgMTgxLCA1NSwgNywgNiwgMSwgMTA2LCAyLCAyNDcsIDIyOCwgCisgICAgNTUsIDcsIDUsIDEsIDEwNiwgMiwgMjQ3LCAyMjgsIDU1LCA3LCA2LCAxLCAxMDYsIDIsIDIxMSwgMTgxLCAyMywgMTUzLCA3LCAKKyAgICA1LCAxLCAxMDYsIDIsIDIxMSwgMTgxLCAyMywgMTUzLCA3LCA2LCAxLCAxMDYsIDIsIDIyOCwgMTQsIDIzLCAyNDUsIDE2NiwgCisgICAgNywgNSwgMSwgMTA2LCAyLCAyMjgsIDE0LCAyMywgMjQ1LCAxNjYsIDcsIDYsIDEsIDIwOSwgMTQ5LCAyLCAyMTEsIDE4MCwgCisgICAgNywgNSwgMSwgMjA5LCAxNDksIDIsIDIxMSwgMTgwLCA3LCA2LCAxLCAyMDksIDE0OSwgMiwgNjcsIDU1LCA3LCA1LCAxLCAKKyAgICAyMDksIDE0OSwgMiwgNjcsIDU1LCA3LCA2LCAxLCAyMDcsIDEzMCwgMiwgMjM5LCAyMzYsIDcsIDUsIDEsIDIwNywgMTMwLCAKKyAgICAyLCAyMzksIDIzNiwgNywgNiwgMSwgMjA3LCAxMzAsIDIsIDE1MywgNywgNSwgMSwgMjA3LCAxMzAsIDIsIDE1MywgNywgNiwgCisgICAgMSwgMjA3LCAxMzAsIDIsIDI0NSwgMTY2LCA3LCA1LCAxLCAyMDcsIDEzMCwgMiwgMjQ1LCAxNjYsIDcsIDYsIDEsIDIwNywgCisgICAgMTMwLCAyLCA2NywgNTIsIDcsIDUsIDEsIDIwNywgMTMwLCAyLCA2NywgNTIsIDcsIDYsIDEsIDIwNywgMTMwLCAyLCA2NywgCisgICAgNTUsIDcsIDUsIDEsIDIwNywgMTMwLCAyLCA2NywgNTUsIDcsIDYsIDEsIDIwNiwgMTk2LCAyLCA2NywgNTIsIDcsIDUsIDEsIAorICAgIDIwNiwgMTk2LCAyLCA2NywgNTIsIDcsIDYsIDEsIDIwNiwgMTk2LCAyLCAyNDUsIDE2NiwgNywgNSwgMSwgMjA2LCAxOTYsIAorICAgIDIsIDI0NSwgMTY2LCA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgNjcsIDUyLCA3LCA1LCAxLCAyMDYsIDEyNCwgMiwgNjcsIDUyLCAKKyAgICA3LCA2LCAxLCAyMDUsIDE2MCwgMiwgMjQ3LCAyMjcsIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCAyNDcsIDIyNywgNywgNiwgMSwgCisgICAgMjA1LCAxNjAsIDIsIDY3LCA1NSwgNywgNSwgMSwgMjA1LCAxNjAsIDIsIDY3LCA1NSwgNywgNiwgMSwgMjA1LCAxNjAsIDIsIAorICAgIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgMjA1LCAxNjAsIDIsIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgMjM5LCAxNTYsIDIsIAorICAgIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgMjEzLCAxMSwgMiwgMjQ1LCAxNjYsIDcsIDUsIDEsIDIwNywgMTMwLCAyLCAyMTgsIAorICAgIDE0OSwgNTIsIDcsIDUsIDEsIDIwNiwgMTI0LCAyLCAyMTgsIDE0OSwgNTIsIDcsIDUsIDEsIDMyLCAyLCA0OCwgMTYwLCAKKyAgICAyMTgsIDE0OCwgNywgNSwgMSwgMTUyLCAyMTgsIDEsIDIsIDY3LCA1MiwgNywgNSwgMSwgMTUyLCAyMTgsIDEsIDIsIDI0NSwgCisgICAgMTYzLCA5MSwgNywgNSwgMSwgMTUyLCAyMTgsIDEsIDIsIDEyNywgOTEsIDcsIDYsIDEsIDIxNSwgMjI4LCAxODIsIDcsIDUsIAorICAgIDEsIDI0NSwgMjI3LCA3LCA2LCAxLCAzMiwgMiwgNjcsIDU1LCA3LCA1LCAxLCAzMiwgMiwgNjcsIDU1LCA3LCA2LCAxLCAzMiwgCisgICAgMiwgMjM4LCAxMzAsIDUyLCA3LCA1LCAxLCAzMiwgMiwgMjM4LCAxMzAsIDUyLCA3LCA2LCAxLCAzMiwgMiwgMjQ3LCAyMjgsIAorICAgIDIzLCAxNTMsIDcsIDUsIDEsIDMyLCAyLCAyNDcsIDIyOCwgMjMsIDE1MywgNywgNiwgMSwgMzIsIDIsIDI0NywgMjI4LCAyMywgCisgICAgMjM5LCAyMzYsIDcsIDUsIDEsIDMyLCAyLCAyNDcsIDIyOCwgMjMsIDIzOSwgMjM2LCA3LCA2LCAxLCAzMiwgMiwgMjQ3LCAKKyAgICAyMjgsIDIzLCAyMzgsIDEzMCwgNTIsIDcsIDUsIDEsIDMyLCAyLCAyNDcsIDIyOCwgMjMsIDIzOCwgMTMwLCA1MiwgNywgNiwgCisgICAgMSwgMzIsIDIsIDI0NywgMjI4LCAyMywgMjExLCAxODAsIDcsIDUsIDEsIDMyLCAyLCAyNDcsIDIyOCwgMjMsIDIxMSwgMTgwLCAKKyAgICA3LCA2LCAxLCAzMiwgMiwgMjQ3LCAyMjgsIDIzLCA2NywgNTUsIDcsIDUsIDEsIDMyLCAyLCAyNDcsIDIyOCwgMjMsIDY3LCAKKyAgICA1NSwgNywgNiwgMSwgMzIsIDIsIDI0OSwgMTIzLCAyMywgMTUzLCA3LCA1LCAxLCAzMiwgMiwgMjQ5LCAxMjMsIDIzLCAxNTMsIAorICAgIDcsIDYsIDEsIDMyLCAyLCAyNDksIDEyMywgMjMsIDIzOSwgMjM2LCA3LCA1LCAxLCAzMiwgMiwgMjQ5LCAxMjMsIDIzLCAKKyAgICAyMzksIDIzNiwgNywgNiwgMSwgMzIsIDIsIDI0OSwgMTIzLCAyMywgMjM4LCAxMzAsIDUyLCA3LCA1LCAxLCAzMiwgMiwgCisgICAgMjQ5LCAxMjMsIDIzLCAyMzgsIDEzMCwgNTIsIDcsIDYsIDEsIDMyLCAyLCAyNDksIDEyMywgMjMsIDIxMSwgMTgwLCA3LCA1LCAKKyAgICAxLCAzMiwgMiwgMjQ5LCAxMjMsIDIzLCAyMTEsIDE4MCwgNywgNiwgMSwgMzIsIDIsIDI0OSwgMTIzLCAyMywgNjcsIDU1LCAKKyAgICA3LCA1LCAxLCAzMiwgMiwgMjQ5LCAxMjMsIDIzLCA2NywgNTUsIDcsIDYsIDEsIDE3NCwgMiwgNjcsIDU1LCA3LCA1LCAxLCAKKyAgICAxNzQsIDIsIDY3LCA1NSwgNywgNiwgMSwgMTc0LCAyLCAyMzgsIDEzMCwgNTIsIDcsIDUsIDEsIDE3NCwgMiwgMjM4LCAxMzAsIAorICAgIDUyLCA3LCA2LCAxLCAxNzQsIDIsIDIxMSwgMTgwLCA3LCA1LCAxLCAxNzQsIDIsIDIxMSwgMTgwLCA3LCA2LCAxLCAxNzQsIAorICAgIDIsIDI0NywgMjI4LCAyMywgMTUzLCA3LCA1LCAxLCAxNzQsIDIsIDI0NywgMjI4LCAyMywgMTUzLCA3LCA2LCAxLCAxNzQsIAorICAgIDIsIDI0NywgMjI4LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIDE3NCwgMiwgMjQ3LCAyMjgsIDIzLCAyMzksIDIzNiwgNywgNiwgCisgICAgMSwgMTc0LCAyLCAyNDcsIDIyOCwgMjMsIDIzOCwgMTMwLCA1MiwgNywgNSwgMSwgMTc0LCAyLCAyNDcsIDIyOCwgMjMsIAorICAgIDIzOCwgMTMwLCA1MiwgNywgNiwgMSwgMTc0LCAyLCAyNDcsIDIyOCwgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAxNzQsIDIsIAorICAgIDI0NywgMjI4LCAyMywgMjExLCAxODAsIDcsIDYsIDEsIDE3NCwgMiwgMjQ3LCAyMjgsIDIzLCA2NywgNTUsIDcsIDUsIDEsIAorICAgIDE3NCwgMiwgMjQ3LCAyMjgsIDIzLCA2NywgNTUsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAyMzgsIDEzMCwgNTIsIDcsIDUsIAorICAgIDEsIDIzNywgMjI1LCAyLCAyMzgsIDEzMCwgNTIsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCA2NywgNTUsIDcsIDUsIDEsIDIzNywgCisgICAgMjI1LCAyLCA2NywgNTUsIDcsIDYsIDEsIDE0OCwgMiwgNjcsIDU1LCA3LCA1LCAxLCAxNDgsIDIsIDY3LCA1NSwgNywgNiwgCisgICAgMSwgMTQ4LCAyLCAyMzgsIDEzMCwgNTIsIDcsIDUsIDEsIDE0OCwgMiwgMjM4LCAxMzAsIDUyLCA3LCA2LCAxLCAxNDgsIDIsIAorICAgIDI0NywgMjI4LCAyMywgMTUzLCA3LCA1LCAxLCAxNDgsIDIsIDI0NywgMjI4LCAyMywgMTUzLCA3LCA2LCAxLCAxNDgsIDIsIAorICAgIDI0NywgMjI4LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIDE0OCwgMiwgMjQ3LCAyMjgsIDIzLCAyMzksIDIzNiwgNywgNiwgMSwgCisgICAgMTQ4LCAyLCAyNDcsIDIyOCwgMjMsIDIzOCwgMTMwLCA1MiwgNywgNSwgMSwgMTQ4LCAyLCAyNDcsIDIyOCwgMjMsIDIzOCwgCisgICAgMTMwLCA1MiwgNywgNiwgMSwgMTQ4LCAyLCAyNDcsIDIyOCwgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAxNDgsIDIsIDI0NywgCisgICAgMjI4LCAyMywgMjExLCAxODAsIDcsIDYsIDEsIDE0OCwgMiwgMjQ3LCAyMjgsIDIzLCA2NywgNTUsIDcsIDUsIDEsIDE0OCwgCisgICAgMiwgMjQ3LCAyMjgsIDIzLCA2NywgNTUsIDcsIDYsIDEsIDE0OCwgMiwgMjM4LCA3MCwgMjMsIDE1MywgNywgNSwgMSwgMTQ4LCAKKyAgICAyLCAyMzgsIDcwLCAyMywgMTUzLCA3LCA2LCAxLCAxNDgsIDIsIDIzOCwgNzAsIDIzLCAyMzksIDIzNiwgNywgNSwgMSwgCisgICAgMTQ4LCAyLCAyMzgsIDcwLCAyMywgMjM5LCAyMzYsIDcsIDYsIDEsIDE0OCwgMiwgMjM4LCA3MCwgMjMsIDIzOCwgMTMwLCAKKyAgICA1MiwgNywgNSwgMSwgMTQ4LCAyLCAyMzgsIDcwLCAyMywgMjM4LCAxMzAsIDUyLCA3LCA2LCAxLCAxNDgsIDIsIDIzOCwgNzAsIAorICAgIDIzLCAyMTEsIDE4MCwgNywgNSwgMSwgMTQ4LCAyLCAyMzgsIDcwLCAyMywgMjExLCAxODAsIDcsIDYsIDEsIDE0OCwgMiwgCisgICAgMjM4LCA3MCwgMjMsIDY3LCA1NSwgNywgNSwgMSwgMTQ4LCAyLCAyMzgsIDcwLCAyMywgNjcsIDU1LCA3LCA2LCAxLCAxMDYsIAorICAgIDIsIDY3LCA1NSwgNywgNSwgMSwgMTA2LCAyLCA2NywgNTUsIDcsIDYsIDEsIDEwNiwgMiwgMjM4LCAxMzAsIDUyLCA3LCA1LCAKKyAgICAxLCAxMDYsIDIsIDIzOCwgMTMwLCA1MiwgNywgNiwgMSwgMTA2LCAyLCAyMzgsIDcwLCAyMywgMTUzLCA3LCA1LCAxLCAxMDYsIAorICAgIDIsIDIzOCwgNzAsIDIzLCAxNTMsIDcsIDYsIDEsIDEwNiwgMiwgMjM4LCA3MCwgMjMsIDIzOSwgMjM2LCA3LCA1LCAxLCAKKyAgICAxMDYsIDIsIDIzOCwgNzAsIDIzLCAyMzksIDIzNiwgNywgNiwgMSwgMTA2LCAyLCAyMzgsIDcwLCAyMywgMjM4LCAxMzAsIAorICAgIDUyLCA3LCA1LCAxLCAxMDYsIDIsIDIzOCwgNzAsIDIzLCAyMzgsIDEzMCwgNTIsIDcsIDYsIDEsIDEwNiwgMiwgMjM4LCA3MCwgCisgICAgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAxMDYsIDIsIDIzOCwgNzAsIDIzLCAyMTEsIDE4MCwgNywgNiwgMSwgMTA2LCAyLCAKKyAgICAyMzgsIDcwLCAyMywgNjcsIDU1LCA3LCA1LCAxLCAxMDYsIDIsIDIzOCwgNzAsIDIzLCA2NywgNTUsIDcsIDYsIDEsIDIwNiwgCisgICAgMTI0LCAyLCAyMzksIDIzNiwgNywgNSwgMSwgMjA2LCAxMjQsIDIsIDIzOSwgMjM2LCA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgCisgICAgNjcsIDU1LCA3LCA1LCAxLCAyMDYsIDEyNCwgMiwgNjcsIDU1LCA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgMjM4LCAxMzAsIDUyLCAKKyAgICA3LCA1LCAxLCAyMDYsIDEyNCwgMiwgMjM4LCAxMzAsIDUyLCA3LCA2LCAxLCAyMDYsIDEyNCwgMiwgMjExLCAxODAsIDcsIDUsIAorICAgIDEsIDIwNiwgMTI0LCAyLCAyMTEsIDE4MCwgNywgNiwgMSwgMjI2LCAyNDYsIDIyOSwgMTczLCA3LCA1LCAxLCAyMjYsIDI0NiwgCisgICAgMjI5LCAxNzMsIDcsIDYsIDEsIDIyNiwgMjQ2LCAyMDksIDE0OCwgNywgNSwgMSwgMjI2LCAyNDYsIDIwOSwgMTQ4LCA3LCA2LCAKKyAgICAxLCAyMDYsIDEyNCwgMiwgMjI5LCAxMTEsIDcsIDUsIDEsIDIwNiwgMTI0LCAyLCAyMjksIDExMSwgMjcsIDUsIDEsIDI1MiwgCisgICAgMTQ1LCAyLCAyMjAsIDg2LCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDI0NiwgNzUsIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgCisgICAgMjIwLCA4NywgMjMsIDIwOSwgNTQsIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIwOSwgNTQsIDI3LCA1LCAKKyAgICAxLCAyNTIsIDE0NSwgMiwgMjIwLCA4NywgMjMsIDIyMiwgNzIsIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIAorICAgIDIyMiwgNzIsIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjIwLCA4NywgMjMsIDIyMSwgMTI0LCAyNywgNSwgMSwgMjUyLCAKKyAgICAxNDUsIDIsIDI0NiwgNzYsIDIzLCAyMjEsIDEyNCwgMjcsIDYsIDEsIDI1MiwgMTQ1LCAyLCAyMjAsIDg2LCAyNywgNiwgMSwgCisgICAgMjUyLCAxNDUsIDIsIDI0NiwgNzUsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjIwLCA4NywgMjMsIDIwOSwgNTQsIDI3LCA2LCAKKyAgICAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIwOSwgNTQsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjIwLCA4NywgMjMsIAorICAgIDIyMiwgNzIsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIyMiwgNzIsIDI3LCA2LCAxLCAyNTIsIDE0NSwgCisgICAgMiwgMjIwLCA4NywgMjMsIDIyMSwgMTI0LCAyNywgNiwgMSwgMjUyLCAxNDUsIDIsIDI0NiwgNzYsIDIzLCAyMjEsIDEyNCwgCisgICAgMjcsIDUsIDEsIDI0MiwgMjQ1LCAyLCAyMjAsIDg2LCAyNywgNSwgMSwgMjQyLCAyNDUsIDIsIDI0NiwgNzUsIDI3LCA1LCAxLCAKKyAgICAyNDIsIDI0NSwgMiwgMjIwLCA4NywgMjMsIDIwOSwgNTQsIDI3LCA1LCAxLCAyNDIsIDI0NSwgMiwgMjQ2LCA3NiwgMjMsIAorICAgIDIwOSwgNTQsIDI3LCA1LCAxLCAyNDIsIDI0NSwgMiwgMjIwLCA4NywgMjMsIDIyMiwgNzIsIDI3LCA1LCAxLCAyNDIsIDI0NSwgCisgICAgMiwgMjQ2LCA3NiwgMjMsIDIyMiwgNzIsIDI3LCA2LCAxLCAyNDIsIDI0NSwgMiwgMjIwLCA4NiwgMjcsIDYsIDEsIDI0MiwgCisgICAgMjQ1LCAyLCAyNDYsIDc1LCAyNywgNiwgMSwgMjQyLCAyNDUsIDIsIDIyMCwgODcsIDIzLCAyMDksIDU0LCAyNywgNiwgMSwgCisgICAgMjQyLCAyNDUsIDIsIDI0NiwgNzYsIDIzLCAyMDksIDU0LCAyNywgNiwgMSwgMjQyLCAyNDUsIDIsIDIyMCwgODcsIDIzLCAKKyAgICAyMjIsIDcyLCAyNywgNiwgMSwgMjQyLCAyNDUsIDIsIDI0NiwgNzYsIDIzLCAyMjIsIDcyLCAyNywgNSwgMSwgMjQyLCAyMDIsIAorICAgIDIsIDIyMCwgODYsIDI3LCA1LCAxLCAyNDIsIDIwMiwgMiwgMjQ2LCA3NSwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyMjAsIAorICAgIDg3LCAyMywgMjA5LCA1NCwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDUsIDEsIAorICAgIDI0MiwgMjAyLCAyLCAyMjAsIDg3LCAyMywgMjIyLCA3MiwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgCisgICAgMjIyLCA3MiwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyMjAsIDg3LCAyMywgMjIxLCAxMjQsIDI3LCA1LCAxLCAyNDIsIAorICAgIDIwMiwgMiwgMjQ2LCA3NiwgMjMsIDIyMSwgMTI0LCAyNywgNiwgMSwgMjQyLCAyMDIsIDIsIDIyMCwgODYsIDI3LCA2LCAxLCAKKyAgICAyNDIsIDIwMiwgMiwgMjQ2LCA3NSwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyMjAsIDg3LCAyMywgMjA5LCA1NCwgMjcsIDYsIAorICAgIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyMjAsIDg3LCAyMywgCisgICAgMjIyLCA3MiwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjIyLCA3MiwgMjcsIDYsIDEsIDI0MiwgMjAyLCAKKyAgICAyLCAyMjAsIDg3LCAyMywgMjIxLCAxMjQsIDI3LCA2LCAxLCAyNDIsIDIwMiwgMiwgMjQ2LCA3NiwgMjMsIDIyMSwgMTI0LCAKKyAgICAyNywgNSwgMSwgMjMyLCAyNTAsIDIsIDIyMCwgODYsIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgMjQ2LCA3NSwgMjcsIDUsIDEsIAorICAgIDIzMiwgMjUwLCAyLCAyMjAsIDg3LCAyMywgMjA5LCA1NCwgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyNDYsIDc2LCAyMywgCisgICAgMjA5LCA1NCwgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyMjAsIDg3LCAyMywgMjIyLCA3MiwgMjcsIDUsIDEsIDIzMiwgMjUwLCAKKyAgICAyLCAyNDYsIDc2LCAyMywgMjIyLCA3MiwgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyMjAsIDg3LCAyMywgMjIxLCAxMjQsIAorICAgIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgMjQ2LCA3NiwgMjMsIDIyMSwgMTI0LCAyNywgNiwgMSwgMjMyLCAyNTAsIDIsIDIyMCwgCisgICAgODYsIDI3LCA2LCAxLCAyMzIsIDI1MCwgMiwgMjQ2LCA3NSwgMjcsIDYsIDEsIDIzMiwgMjUwLCAyLCAyMjAsIDg3LCAyMywgCisgICAgMjA5LCA1NCwgMjcsIDYsIDEsIDIzMiwgMjUwLCAyLCAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDYsIDEsIDIzMiwgMjUwLCAKKyAgICAyLCAyMjAsIDg3LCAyMywgMjIyLCA3MiwgMjcsIDYsIDEsIDIzMiwgMjUwLCAyLCAyNDYsIDc2LCAyMywgMjIyLCA3MiwgMjcsIAorICAgIDYsIDEsIDIzMiwgMjUwLCAyLCAyMjAsIDg3LCAyMywgMjIxLCAxMjQsIDI3LCA2LCAxLCAyMzIsIDI1MCwgMiwgMjQ2LCA3NiwgCisgICAgMjMsIDIyMSwgMTI0LCAyNywgNSwgMSwgMjIyLCAxNjksIDIsIDIyMCwgODYsIDI3LCA1LCAxLCAyMjIsIDE2OSwgMiwgMjQ2LCAKKyAgICA3NSwgMjcsIDUsIDEsIDIyMiwgMTY5LCAyLCAyMjAsIDg3LCAyMywgMjA5LCA1NCwgMjcsIDUsIDEsIDIyMiwgMTY5LCAyLCAKKyAgICAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDUsIDEsIDIyMiwgMTY5LCAyLCAyMjAsIDg3LCAyMywgMjIyLCA3MiwgMjcsIDUsIAorICAgIDEsIDIyMiwgMTY5LCAyLCAyNDYsIDc2LCAyMywgMjIyLCA3MiwgMjcsIDYsIDEsIDIyMiwgMTY5LCAyLCAyMjAsIDg2LCAyNywgCisgICAgNiwgMSwgMjIyLCAxNjksIDIsIDI0NiwgNzUsIDI3LCA2LCAxLCAyMjIsIDE2OSwgMiwgMjIwLCA4NywgMjMsIDIwOSwgNTQsIAorICAgIDI3LCA2LCAxLCAyMjIsIDE2OSwgMiwgMjQ2LCA3NiwgMjMsIDIwOSwgNTQsIDI3LCA2LCAxLCAyMjIsIDE2OSwgMiwgMjIwLCAKKyAgICA4NywgMjMsIDIyMiwgNzIsIDI3LCA2LCAxLCAyMjIsIDE2OSwgMiwgMjQ2LCA3NiwgMjMsIDIyMiwgNzIsIDI3LCA1LCAxLCAKKyAgICAyMDksIDIwMSwgMiwgMjIwLCA4NiwgMjcsIDUsIDEsIDIwOSwgMjAxLCAyLCAyNDYsIDc1LCAyNywgNSwgMSwgMjA5LCAyMDEsIAorICAgIDIsIDIyMCwgODcsIDIzLCAyMDksIDU0LCAyNywgNSwgMSwgMjA5LCAyMDEsIDIsIDI0NiwgNzYsIDIzLCAyMDksIDU0LCAyNywgCisgICAgNSwgMSwgMjA5LCAyMDEsIDIsIDIyMCwgODcsIDIzLCAyMjIsIDcyLCAyNywgNSwgMSwgMjA5LCAyMDEsIDIsIDI0NiwgNzYsIAorICAgIDIzLCAyMjIsIDcyLCAyNywgNSwgMSwgMjA5LCAyMDEsIDIsIDIyMCwgODcsIDIzLCAyMjEsIDEyNCwgMjcsIDUsIDEsIDIwOSwgCisgICAgMjAxLCAyLCAyNDYsIDc2LCAyMywgMjIxLCAxMjQsIDI3LCA2LCAxLCAyMDksIDIwMSwgMiwgMjQ2LCA3NSwgMjcsIDYsIDEsIAorICAgIDIwOSwgMjAxLCAyLCAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDYsIDEsIDIwOSwgMjAxLCAyLCAyNDYsIDc2LCAyMywgCisgICAgMjIyLCA3MiwgMjcsIDYsIDEsIDIwOSwgMjAxLCAyLCAyNDYsIDc2LCAyMywgMjIxLCAxMjQsIDI3LCA1LCAxLCAyMjIsIAorICAgIDE3MSwgMiwgMjIwLCA4NiwgMjcsIDUsIDEsIDIyMiwgMTcxLCAyLCAyNDYsIDc1LCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIAorICAgIDIyMCwgODcsIDIzLCAyMDksIDU0LCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAyMDksIDU0LCAyNywgNSwgCisgICAgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAyMjIsIDcyLCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAKKyAgICAyMjIsIDcyLCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAyMjEsIDEyNCwgMjcsIDUsIDEsIDIyMiwgCisgICAgMTcxLCAyLCAyNDYsIDc2LCAyMywgMjIxLCAxMjQsIDI3LCA2LCAxLCAyMjIsIDE3MSwgMiwgMjIwLCA4NiwgMjcsIDYsIDEsIAorICAgIDIyMiwgMTcxLCAyLCAyNDYsIDc1LCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAyMDksIDU0LCAyNywgNiwgCisgICAgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAyMDksIDU0LCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAKKyAgICAyMjIsIDcyLCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAyMjIsIDcyLCAyNywgNiwgMSwgMjIyLCAxNzEsIAorICAgIDIsIDIyMCwgODcsIDIzLCAyMjEsIDEyNCwgMjcsIDYsIDEsIDIyMiwgMTcxLCAyLCAyNDYsIDc2LCAyMywgMjIxLCAxMjQsIAorICAgIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjA5LCA1NCwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAyMjIsIDcyLCAyNywgNSwgMSwgCisgICAgMjQyLCAyNDUsIDIsIDIwOSwgNTQsIDI3LCA1LCAxLCAyNDIsIDI0NSwgMiwgMjIyLCA3MiwgMjcsIDUsIDEsIDI0MiwgMjAyLCAKKyAgICAyLCAyMDksIDU0LCAyNywgNSwgMSwgMjQyLCAyMDIsIDIsIDIyMiwgNzIsIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgMjA5LCAKKyAgICA1NCwgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyMjIsIDcyLCAyNywgNSwgMSwgMjIyLCAxNjksIDIsIDIwOSwgNTQsIDI3LCAKKyAgICA1LCAxLCAyMjIsIDE2OSwgMiwgMjIyLCA3MiwgMjcsIDUsIDEsIDIwOSwgMjAxLCAyLCAyMDksIDU0LCAyNywgNSwgMSwgCisgICAgMjA5LCAyMDEsIDIsIDIyMiwgNzIsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgMjA5LCA1NCwgMjcsIDUsIDEsIDIyMiwgMTcxLCAKKyAgICAyLCAyMjIsIDcyLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIyMCwgODcsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI1MiwgCisgICAgMTQ1LCAyLCAyNDYsIDc2LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyNTIsIDE0NSwgMiwgMjIwLCA4NywgMjMsIDIwOSwgCisgICAgNTUsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAyNDYsIDc2LCAyMywgMjA5LCA1NSwgMjMsIDIwNSwgCisgICAgMjIxLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIyMCwgODcsIDIzLCAyMjIsIDczLCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAKKyAgICAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIyMiwgNzMsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAKKyAgICAyMjAsIDg3LCAyMywgMjIxLCAxMjUsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAyNDYsIDc2LCAyMywgCisgICAgMjIxLCAxMjUsIDIzLCAyMDUsIDIyMSwgMjcsIDYsIDEsIDI1MiwgMTQ1LCAyLCAyMjAsIDg3LCAyMywgMjIwLCAxMDAsIDI3LCAKKyAgICA2LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIyMCwgMTAwLCAyNywgNiwgMSwgMjUyLCAxNDUsIDIsIDIyMCwgODcsIAorICAgIDIzLCAyMDksIDU1LCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCA3NiwgMjMsIDIwOSwgNTUsIAorICAgIDIzLCAyMjAsIDEwMCwgMjcsIDYsIDEsIDI1MiwgMTQ1LCAyLCAyMjAsIDg3LCAyMywgMjIyLCA3MywgMjMsIDIyMCwgMTAwLCAKKyAgICAyNywgNiwgMSwgMjUyLCAxNDUsIDIsIDI0NiwgNzYsIDIzLCAyMjIsIDczLCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAyNTIsIAorICAgIDE0NSwgMiwgMjIwLCA4NywgMjMsIDIyMSwgMTI1LCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgMjQ2LCAKKyAgICA3NiwgMjMsIDIyMSwgMTI1LCAyMywgMjIwLCAxMDAsIDI3LCA1LCAxLCAyNDIsIDIwMiwgMiwgMjIwLCA4NywgMjMsIDIwNSwgCisgICAgMjIxLCAyNywgNSwgMSwgMjQyLCAyMDIsIDIsIDI0NiwgNzYsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAKKyAgICAyMjAsIDg3LCAyMywgMjA5LCA1NSwgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgMjQyLCAyMDIsIDIsIDI0NiwgNzYsIDIzLCAKKyAgICAyMDksIDU1LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyNDIsIDIwMiwgMiwgMjIwLCA4NywgMjMsIDIyMiwgNzMsIDIzLCAKKyAgICAyMDUsIDIyMSwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjIyLCA3MywgMjMsIDIwNSwgMjIxLCAyNywgCisgICAgNSwgMSwgMjQyLCAyMDIsIDIsIDIyMCwgODcsIDIzLCAyMjEsIDEyNSwgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgMjQyLCAKKyAgICAyMDIsIDIsIDI0NiwgNzYsIDIzLCAyMjEsIDEyNSwgMjMsIDIwNSwgMjIxLCAyNywgNiwgMSwgMjQyLCAyMDIsIDIsIDIyMCwgCisgICAgODcsIDIzLCAyMjAsIDEwMCwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAKKyAgICAyNDIsIDIwMiwgMiwgMjIwLCA4NywgMjMsIDIwOSwgNTUsIDIzLCAyMjAsIDEwMCwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAKKyAgICAyNDYsIDc2LCAyMywgMjA5LCA1NSwgMjMsIDIyMCwgMTAwLCAyNywgNiwgMSwgMjQyLCAyMDIsIDIsIDIyMCwgODcsIDIzLCAKKyAgICAyMjIsIDczLCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAyNDIsIDIwMiwgMiwgMjQ2LCA3NiwgMjMsIDIyMiwgNzMsIDIzLCAKKyAgICAyMjAsIDEwMCwgMjcsIDYsIDEsIDI0MiwgMjAyLCAyLCAyMjAsIDg3LCAyMywgMjIxLCAxMjUsIDIzLCAyMjAsIDEwMCwgMjcsIAorICAgIDYsIDEsIDI0MiwgMjAyLCAyLCAyNDYsIDc2LCAyMywgMjIxLCAxMjUsIDIzLCAyMjAsIDEwMCwgMjcsIDUsIDEsIDIyMiwgCisgICAgMTcxLCAyLCAyMjAsIDg3LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgMjQ2LCA3NiwgMjMsIDIwNSwgCisgICAgMjIxLCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAyMDksIDU1LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAKKyAgICAyMjIsIDE3MSwgMiwgMjQ2LCA3NiwgMjMsIDIwOSwgNTUsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDIyMiwgMTcxLCAyLCAKKyAgICAyMjAsIDg3LCAyMywgMjIyLCA3MywgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAKKyAgICAyMjIsIDczLCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgMjIwLCA4NywgMjMsIDIyMSwgMTI1LCAyMywgCisgICAgMjA1LCAyMjEsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgMjQ2LCA3NiwgMjMsIDIyMSwgMTI1LCAyMywgMjA1LCAyMjEsIDI3LCAKKyAgICA2LCAxLCAyMjIsIDE3MSwgMiwgMjIwLCA4NywgMjMsIDIyMCwgMTAwLCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIAorICAgIDIzLCAyMjAsIDEwMCwgMjcsIDYsIDEsIDIyMiwgMTcxLCAyLCAyMjAsIDg3LCAyMywgMjA5LCA1NSwgMjMsIDIyMCwgMTAwLCAKKyAgICAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAyMDksIDU1LCAyMywgMjIwLCAxMDAsIDI3LCA2LCAxLCAyMjIsIAorICAgIDE3MSwgMiwgMjIwLCA4NywgMjMsIDIyMiwgNzMsIDIzLCAyMjAsIDEwMCwgMjcsIDYsIDEsIDIyMiwgMTcxLCAyLCAyNDYsIAorICAgIDc2LCAyMywgMjIyLCA3MywgMjMsIDIyMCwgMTAwLCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDIyMCwgODcsIDIzLCAyMjEsIAorICAgIDEyNSwgMjMsIDIyMCwgMTAwLCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDI0NiwgNzYsIDIzLCAyMjEsIDEyNSwgMjMsIDIyMCwgCisgICAgMTAwLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIwOCwgMTUyLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIyOCwgMTMsIDI3LCAKKyAgICA1LCAxLCAyNTIsIDE0NSwgMiwgMjA5LCA1NSwgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIwNSwgCisgICAgMjIxLCAyNywgNSwgMSwgMjUyLCAxNDUsIDIsIDIyMiwgNzMsIDIzLCAyMDUsIDIyMSwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAKKyAgICAyMjEsIDEyNCwgMjcsIDUsIDEsIDI1MiwgMTQ1LCAyLCAyMjEsIDEyNSwgMjMsIDIwNSwgMjIxLCAyNywgNiwgMSwgMjUyLCAKKyAgICAxNDUsIDIsIDIwOCwgMTUyLCAyNywgNiwgMSwgMjUyLCAxNDUsIDIsIDIyOCwgMTMsIDI3LCA2LCAxLCAyNTIsIDE0NSwgMiwgCisgICAgMjA5LCA1NCwgMjcsIDYsIDEsIDI1MiwgMTQ1LCAyLCAyMjIsIDcyLCAyNywgNiwgMSwgMjUyLCAxNDUsIDIsIDIyMCwgMTAwLCAKKyAgICAyNywgMjMxLCAyMywgMjcsIDIyMCwgMTAwLCAyNywgMjIwLCA4NiwgMjcsIDIyMSwgMTI0LCAyNywgMjQ1LCAxNjAsIDIzLCAKKyAgICAyMjEsIDEyNCwgMjcsIDUsIDEsIDI0MiwgMjAyLCAyLCAyMDksIDU1LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyNDIsIAorICAgIDIwMiwgMiwgMjA1LCAyMjEsIDI3LCA1LCAxLCAyNDIsIDIwMiwgMiwgMjIyLCA3MywgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgCisgICAgMjQyLCAyMDIsIDIsIDIyMSwgMTI0LCAyNywgNSwgMSwgMjQyLCAyMDIsIDIsIDIyMSwgMTI1LCAyMywgMjA1LCAyMjEsIDI3LCAKKyAgICA2LCAxLCAyNDIsIDI0NSwgMiwgMjA5LCA1NCwgMjcsIDYsIDEsIDI0MiwgMjQ1LCAyLCAyMjIsIDcyLCAyNywgNiwgMSwgCisgICAgMjQyLCAyMDIsIDIsIDIwOSwgNTQsIDI3LCA2LCAxLCAyNDIsIDIwMiwgMiwgMjIyLCA3MiwgMjcsIDYsIDEsIDI0MiwgMjAyLCAKKyAgICAyLCAyMjAsIDEwMCwgMjcsIDIyMCwgODcsIDIzLCAyMDksIDU0LCAyNywgMjIwLCA4NywgMjMsIDIyMiwgNzIsIDI3LCAyMjAsIAorICAgIDg3LCAyMywgMjIxLCAxMjQsIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgMjA4LCAxNTIsIDI3LCA1LCAxLCAyMzIsIDI1MCwgMiwgCisgICAgMjI4LCAxMywgMjcsIDUsIDEsIDIzMiwgMjUwLCAyLCAyNDUsIDE2MCwgMjMsIDIwOSwgNTQsIDI3LCA1LCAxLCAyMzIsIAorICAgIDI1MCwgMiwgMjQ1LCAxNjAsIDIzLCAyMjIsIDcyLCAyNywgNSwgMSwgMjMyLCAyNTAsIDIsIDIyMSwgMTI0LCAyNywgNSwgMSwgCisgICAgMjMyLCAyNTAsIDIsIDI0NSwgMTYwLCAyMywgMjIxLCAxMjQsIDI3LCA2LCAxLCAyMzIsIDI1MCwgMiwgMjA4LCAxNTIsIDI3LCAKKyAgICA2LCAxLCAyMzIsIDI1MCwgMiwgMjI4LCAxMywgMjcsIDYsIDEsIDIzMiwgMjUwLCAyLCAyMDksIDU0LCAyNywgNiwgMSwgCisgICAgMjMyLCAyNTAsIDIsIDIyMiwgNzIsIDI3LCAyNDYsIDc2LCAyMywgMjA5LCA1NCwgMjcsIDI0NiwgNzYsIDIzLCAyMjIsIDcyLCAKKyAgICAyNywgMjQ2LCA3NiwgMjMsIDIyMSwgMTI0LCAyNywgNSwgMSwgMjA5LCAyMDEsIDIsIDIwOCwgMTUyLCAyNywgNSwgMSwgCisgICAgMjA5LCAyMDEsIDIsIDIyOCwgMTMsIDI3LCA1LCAxLCAyMDksIDIwMSwgMiwgMjQ1LCAxNjAsIDIzLCAyMDksIDU0LCAyNywgCisgICAgNSwgMSwgMjA5LCAyMDEsIDIsIDI0NSwgMTYwLCAyMywgMjIyLCA3MiwgMjcsIDUsIDEsIDIxOCwgMjExLCAyLCAyMjAsIDg2LCAKKyAgICAyNywgNSwgMSwgMjE4LCAyMTEsIDIsIDI0NiwgNzUsIDI3LCA1LCAxLCAyMDksIDIwMSwgMiwgMjIxLCAxMjQsIDI3LCA1LCAKKyAgICAxLCAyMDksIDIwMSwgMiwgMjQ1LCAxNjAsIDIzLCAyMjEsIDEyNCwgMjcsIDYsIDEsIDIwOSwgMjAxLCAyLCAyMDgsIDE1MiwgCisgICAgMjcsIDYsIDEsIDIwOSwgMjAxLCAyLCAyMjgsIDEzLCAyNywgNiwgMSwgMjA5LCAyMDEsIDIsIDIwOSwgNTQsIDI3LCA2LCAxLCAKKyAgICAyMDksIDIwMSwgMiwgMjIyLCA3MiwgMjcsIDYsIDEsIDIxOCwgMjExLCAyLCAyNDYsIDc1LCAyNywgMjQ1LCAxNjAsIDIzLCAKKyAgICAyMDksIDU0LCAyNywgMjQ1LCAxNjAsIDIzLCAyMjIsIDcyLCAyNywgMjA5LCA1NCwgMjcsIDUsIDEsIDIyMiwgMTcxLCAyLCAKKyAgICAyMDksIDU1LCAyMywgMjA1LCAyMjEsIDI3LCA1LCAxLCAyMjIsIDE3MSwgMiwgMjA1LCAyMjEsIDI3LCA1LCAxLCAyMjIsIAorICAgIDE3MSwgMiwgMjIyLCA3MywgMjMsIDIwNSwgMjIxLCAyNywgNSwgMSwgMjIyLCAxNzEsIDIsIDIyMSwgMTI0LCAyNywgNSwgMSwgCisgICAgMjIyLCAxNzEsIDIsIDIyMSwgMTI1LCAyMywgMjA1LCAyMjEsIDI3LCA2LCAxLCAyMjIsIDE2OSwgMiwgMjA5LCA1NCwgMjcsIAorICAgIDYsIDEsIDIyMiwgMTY5LCAyLCAyMjIsIDcyLCAyNywgNiwgMSwgMjIyLCAxNzEsIDIsIDIwOSwgNTQsIDI3LCA2LCAxLCAKKyAgICAyMjIsIDE3MSwgMiwgMjIyLCA3MiwgMjcsIDYsIDEsIDIyMiwgMTcxLCAyLCAyMjAsIDEwMCwgMjcsIDIyMiwgNzIsIDI3LCAKKyAgICAyNDYsIDc1LCAyNDMsIDQyLCAyMTksIDIxMSwgMjQzLCA1MSwgMjE5LCAyMTEsIDI0MywgNDIsIDIxNCwgMTUzLCAyNDMsIAorICAgIDUxLCAyMTQsIDE1MywgMjExLCAyMzUsIDIxNCwgMTUzLCAyNDEsIDEyMywgMjE0LCAxNTMsIDIxNSwgOCwgMjE0LCAxNTMsIAorICAgIDI0MSwgMjQxLCAyMTQsIDE1MywgMjIwLCA3MiwgMjE0LCAxNTMsIDIxMiwgMTIsIDIxNCwgMTUzLCAyMzksIDEzMCwgMjE0LCAKKyAgICAxNTMsIDIwNSwgODYsIDIwNywgMTUsIDIxNCwgMTUzLCAyMDUsIDg2LCAyMDcsIDE1LCAyMjQsIDU5LCAyMDUsIDg2LCAyMDcsIAorICAgIDE1LCAyMzIsIDExNywgMjMwLCAzNywgODMsIDIxOCwgMTU4LCA4MywgMjM3LCAyMzksIDIyNCwgNjAsIDIzNywgMjM5LCAKKyAgICAyNDEsIDI0MSwgMjQ2LCA3OCwgMjQzLCA0MiwgMjQ2LCA3OCwgMjQzLCA1MSwgMjQ2LCA3OCwgMTk0LCAxMzQsIDUwLCA3OSwgCisgICAgMjI5LCAyMDUsIDUwLCAxMTQsIDIyOSwgMjA1LCA0NywgMjE1LCA0MSwgMjE5LCAxODAsIDgzLCA0OCwgMjE1LCA0MSwgMjE5LCAKKyAgICAxODAsIDgzLCAyMTUsIDQxLCAyMjksIDk2LCAyMTksIDE4MCwgODMsIDIxNSwgNDEsIDIzOCwgMjQ5LCAyMTksIDE4MCwgODMsIAorICAgIDQ3LCA1MCwgMjE5LCAxODAsIDgzLCA0OCwgNTAsIDIxOSwgMTgwLCA4MywgNTAsIDIyOSwgOTYsIDIxOSwgMTgwLCA4MywgCisgICAgNTAsIDIzOCwgMjQ5LCAyMTksIDE4MCwgODMsIDI0NiwgMTI4LCA1MCwgMjQ2LCAxMjgsIDI0OSwgODUsIDIxMSwgNDgsIAorICAgIDI0OSwgODUsIDExOSwgNjcsIDIzMCwgNTYsIDExOCwgNjcsIDIzMCwgNTYsIDE5NCwgMjQzLCA1NCwgMjM3LCAyMzcsIDIyMCwgCisgICAgMjA0LCAyMjksIDIwNiwgMjE2LCAzOSwgMjIxLCAyMjksIDIxNiwgMzksIDIzMCwgMzcsIDI0MywgNDksIDIxOCwgMTU4LCAKKyAgICAyNDMsIDQ5LCAyMjAsIDE4NCwgMjQ1LCAxMDMsIDI0MSwgMTM0LCAyMzAsIDM3LCAyMjIsIDc5LCAyMTgsIDE1OCwgMjIyLCAKKyAgICA3OSwgMjI1LCAxOTksIDIyNCwgNjYsIDIxNCwgMTUzLCAyMjEsIDEzMiwgMjI2LCAyMTUsIDUzLCAyMjEsIDEzMiwgMjEyLCAKKyAgICA5OSwgMjExLCAyNDMsIDUzLCAyMjAsIDEyNywgNTAsIDIyMCwgMTI3LCAyMTEsIDM2LCAyMjAsIDEyNywgMjE4LCAyMjQsIAorICAgIDIyMCwgMTI3LCAyMTgsIDIyNCwgNTAsIDIyMCwgMTI3LCAyMTgsIDIyNCwgMjExLCAzNiwgMjIwLCAxMjcsIDI0OCwgMTk5LCAKKyAgICAyMTUsIDQxLCAyMzAsIDQxLCAyNTIsIDEwOSwgMjE5LCAxODAsIDgzLCAyMTUsIDQxLCAyMTgsIDE2MiwgMjUyLCAxMDksIAorICAgIDIxOSwgMTgwLCA4MywgMjE5LCAyOCwgODMsIDUwLCAyNDIsIDE2OCwgODMsIDIzMywgMTAsIDIyMiwgODEsIDIwOSwgMjIzLCAKKyAgICAxNTcsIDIxMSwgMjAzLCAyNDgsIDIwMCwgMjMzLCAyNywgMjIwLCAyMDQsIDI1MSwgMjA3LCAyMzcsIDI0MCwgMjQ5LCA4NSwgCisgICAgMjQxLCAxMTYsIDIxNCwgMjM1LCA0NywgNDksIDI0OSwgMTM0LCAyLCAyMTksIDE5MCwgNDgsIDQ5LCAyNDksIDEzNCwgMiwgCisgICAgMjE5LCAxOTAsIDUwLCAyMTksIDE5NiwgODMsIDIxOSwgMTk2LCAyNDIsIDE2OCwgODMsIDI0MiwgMTY4LCAyMTksIDE5NiwgCisgICAgODMsIDIxMSwgMTU5LCAzLCAyNDIsIDIwMywgMjE4LCAyMjQsIDIyMSwgMTIsIDUzLCA2MCwgOTIsIDI0OSwgODUsIDYwLCAKKyAgICA4NiwgMjQ5LCA4NSwgMTE0LCAyNTEsIDIwOSwgMjE4LCAyMjQsIDIxNiwgNTIsIDI0NywgMTkzLCAyMDksIDIwNiwgMTE4LCAKKyAgICAyNTEsIDIwOCwgMjUyLCAxNjAsIDIwOCwgMjI3LCAyNDcsIDE1MywgMjI2LCAyMDIsIDUzLCAyMTMsIDkzLCAyNDYsIDc4LCAKKyAgICAyMzMsIDIsIDIwOSwgMjIzLCAyNDEsIDE3MywgMjIwLCA3MiwgODMsIDEyOSwgNjcsIDIyMCwgNzEsIDIxOSwgMjA3LCAyMjAsIAorICAgIDEyNywgMjQxLCAxMjUsIDY3LCAyMjAsIDcxLCAyNDEsIDIwNCwgNjcsIDIyMCwgNzEsIDExOCwgNjcsIDIyMCwgNzEsIDI0MSwgCisgICAgMTI1LCA2NywgODMsIDI0NCwgMjEsIDI0NywgNTksIDIxMSwgNDcsIDc5LCAyNDEsIDEyNSwgMjQ1LCAyMSwgMjI3LCAxMDksIAorICAgIDExLCAyMTQsIDE1MywgMjA2LCAyMzIsIDIzMiwgMTE3LCAyNDEsIDgwLCAyNTIsIDQ4LCAyMzMsIDAsIDIxMSwgMTc1LCAKKyAgICAyMzMsIDAsIDIxNiwgMzksIDIzMywgMCwgMjIwLCAyMTgsIDIzMCwgMzcsIDIzMiwgMjI2LCAyMTgsIDE1OCwgMjMyLCAyMjYsIAorICAgIDI0MSwgMjE1LCAyMTMsIDIxMSwgMjMyLCAyMjYsIDIyMCwgMTg0LCAyNDUsIDEwMywgMjMyLCAyMjYsIDIzMywgMzksIDIxMywgCisgICAgNDEsIDIxMywgMTEwLCAyNTMsIDExLCAyMTMsIDQxLCAyMTMsIDExMCwgMjMzLCAzOSwgOCwgMjQxLCAxMzYsIDIxNSwgMjMyLCAKKyAgICAyNTMsIDExLCA4LCAyNDEsIDEzNiwgMjE1LCAyMzIsIDIyNSwgMTkzLCAxOCwgMjE1LCAyMzMsIDIyNCwgNjIsIDE4LCAyMTUsIAorICAgIDIzMywgMjEzLCAxMzksIDIwNSwgODUsIDIxMywgMTM5LCA3LCA1LCAxLCA3NCwgMjEzLCAxMzksIDEzOSwgMjEzLCAxMzksIAorICAgIDE2OCwgMjEzLCAxMzksIDE4NCwgMjEzLCAxMzksIDE5NSwgMjEzLCAxMzksIDE5MywgMjEzLCAxMzksIDIwMCwgMjEzLCAKKyAgICAxMzksIDEwMSwgNTMsIDIxMywgMTM5LCAyMjYsIDIwMSwgMjEzLCAxMzksIDI0MiwgMjQyLCA1MywgMjEzLCAxMzksIDQ3LCAKKyAgICAyMjEsIDIxNiwgMjEzLCAxMzksIDQ4LCAyMjEsIDIxNiwgMjEzLCAxMzksIDcsIDUsIDEsIDIyNiwgMzMsIDIxMywgMTgzLCAKKyAgICAyMDUsIDg1LCAyMTMsIDE4MywgMTAyLCAyMTMsIDE4MywgMTA1LCAyMTMsIDE4MywgMTQyLCAyMTMsIDE4MywgMTM5LCAyMTMsIAorICAgIDE4MywgMTY4LCAyMTMsIDE4MywgMTg0LCAyMTMsIDE4MywgMTk1LCAyMTMsIDE4MywgMTkzLCAyMTMsIDE4MywgMjAwLCAKKyAgICAyMTMsIDE4MywgMTAxLCA1MywgMjEzLCAxODMsIDIyNiwgMjAxLCAyMTMsIDE4MywgMjQyLCAyNDIsIDUzLCAyMTMsIDE4MywgCisgICAgNDcsIDIyMSwgMjE2LCAyMTMsIDE4MywgNDgsIDIyMSwgMjE2LCA3LCAyMTMsIDE4MywgNSwgMSwgNjIsIDcsIDIxMywgMTgzLCAKKyAgICA1LCAxLCA3NSwgNywgMjEzLCAxODMsIDUsIDEsIDc2LCA3LCAyMTMsIDE4MywgNSwgMSwgMjA2LCAxOTUsIDcsIDIxMywgCisgICAgMTgzLCA1LCAxLCAyMTcsIDEwMCwgNywgMjEzLCAxODMsIDUsIDEsIDIzOSwgMTU1LCA3LCAyMTMsIDE4MywgNSwgMSwgMjMyLCAKKyAgICA3NiwgNywgMjEzLCAxODMsIDUsIDEsIDE0OSwgNywgMjEzLCAxODMsIDUsIDEsIDIyOSwgMjgsIDcsIDIxMywgMTgzLCA1LCAKKyAgICAxLCAyMjYsIDMzLCA3LCAyMTMsIDE4MywgNSwgMSwgMjIyLCA2NywgNywgMjEzLCAxODMsIDUsIDEsIDE4MiwgNywgMjEzLCAKKyAgICAxODMsIDUsIDEsIDIxMywgMTAsIDI0MiwgMTgzLCA1MywgMjQ3LCAxNjMsIDUzLCAyNDcsIDQ1LCA1MywgMjQxLCAxMDYsIAorICAgIDI0MSwgMTEwLCA1MywgMjI5LCAxODgsIDUzLCAyMjYsIDIxNiwgNTMsIDIyNSwgMjE2LCA1MywgMjIxLCAxMDksIDUzLCAKKyAgICAyMTgsIDI3LCA1MywgMjA2LCAyNDAsIDUzLCAxODYsIDIxNSwgMjAwLCA1MywgMjQ1LCAzMCwgNTMsIDI0MiwgMTg0LCA1MywgCisgICAgMjMxLCAxMDQsIDUzLCAyMTAsIDE2MywgNTMsIDI0NCwgNCwgNTMsIDI0MCwgMTQ2LCAyMjEsIDE0MywgNTMsIDIyMSwgMTA2LCAKKyAgICA1MywgMjM5LCAyMDgsIDUzLCAyNTEsIDE3NCwgNTMsIDIzOCwgNDgsIDUzLCAyNDgsIDE0MywgNTMsIDIyOSwgMTc5LCAyMTEsIAorICAgIDg4LCA1MywgMjE0LCAxMzQsIDUzLCAyMTIsIDk2LCA1MywgMjMzLCA1MiwgMjE4LCAyNywgNTMsIDIxMCwgMTQ2LCAyMjksIAorICAgIDE4OCwgNTMsIDIyNCwgNDksIDE0MSwgNTMsIDIyNywgMjE5LCA1MywgMjE4LCA0NywgNTMsIDM2LCA0NywgMjM5LCA5MCwgCisgICAgNTIsIDM2LCA0OCwgMjM5LCA5MCwgNTIsIDM2LCAxNTIsIDc5LCAyMjksIDIwNiwgMjIyLCA4MiwgMzYsIDIxNSwgMTQ0LCAKKyAgICA3OSwgMjI5LCAyMDYsIDIyMiwgODIsIDM2LCAyNTIsIDg3LCA1MSwgNTIsIDM2LCAyNDcsIDE5NCwgNTEsIDUyLCAzNiwgNDcsIAorICAgIDUxLCA1MiwgMzYsIDQ4LCA1MSwgNTIsIDM2LCAyMTgsIDE0OSwgMjIyLCA4MiwgMzYsIDI0NywgMTk0LCAyMTgsIDE0OSwgCisgICAgMjIyLCA4MiwgMzYsIDI1MiwgODcsIDIxOCwgMTQ5LCAyMjIsIDgyLCAzNiwgMTI5LCAxNzcsIDUyLCAzNiwgMjQxLCAxMjUsIAorICAgIDE3NywgNTIsIDM2LCAyNDMsIDM3LCAyNDcsIDIzMywgMzYsIDI0MywgMzcsIDIxNCwgMTA3LCAzNiwgMjQzLCAzNywgMjQ1LCAKKyAgICAxNTYsIDM2LCAyNDMsIDM3LCAyNDcsIDIzNCwgMjUwLCAxNzEsIDM2LCA0NywgNDgsIDUxLCA1MiwgMzYsIDI0MywgMzcsIAorICAgIDIxNywgOTMsIDM2LCAyNDMsIDM3LCAyMzEsIDE3MCwgMzYsIDI0MywgMzcsIDIwOSwgMTk4LCAyMjAsIDIwMSwgMjExLCA1MSwgCisgICAgMzYsIDIxOCwgMjI1LCAyMTQsIDE4MSwgMjIyLCA4MiwgMzYsIDUwLCA3OSwgMjEzLCAyMjUsIDIyMiwgODIsIDM2LCAyNTIsIAorICAgIDk3LCA5MywgMzYsIDIxMSwgMzYsIDIwOSwgMjI1LCAzNiwgMjA3LCAxNywgMjQ5LCAxMTYsIDUyLCAzNiwgOTIsIDUxLCAKKyAgICAyMjIsIDgyLCAzNiwgMTUyLCA1MCwgMjE0LCAxODEsIDIyMiwgODIsIDM2LCA4NiwgMjM5LCA5MCwgMiwgMTM4LCAyNDQsIDYsIAorICAgIDM2LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAyNDQsIDYsIDM2LCA0NywgNTEsIDU1LCAzNiwgNDgsIDUxLCA1NSwgMzYsIDI1MSwgCisgICAgMjEwLCA1MiwgMjUzLCAxNywgMjIyLCAyMDMsIDI1MywgMSwgMjExLCAxMzAsIDIxMiwgNDIsIDIxMywgMTkyLCAxNTksIDYsIAorICAgIDI0OSwgMzQsIDI0NSwgMjQ1LCAyNDgsIDEzNCwgMjQ4LCAxMjksIDIyOSwgMjA2LCA5MywgMjQ4LCAyMDEsIDIyMiwgMjAzLCAKKyAgICAyNDgsIDI0OSwgMjA5LCAyMzMsIDI0MiwgMTg1LCAyNDcsIDEyNCwgMjE3LCA5MCwgMjQ1LCAyNDUsIDI0MiwgNTYsIDEyMSwgCisgICAgNSwgMjQxLCA1NSwgMTIxLCA2LCAyMzksIDE1NSwgMjQ5LCAyMDAsIDYsIDIzOSwgMTU1LCAxNTksIDYsIDIzOSwgMTU1LCAKKyAgICAyMjAsIDIzNSwgMjQ3LCAxMjQsIDIyMCwgMjM1LCAyNDcsIDEyNSwgMTMxLCAxMTgsIDIyMSwgNTMsIDEyMSwgNiwgNzQsIAorICAgIDI0OSwgMjAwLCA2LCA3NCwgMTIxLCA2LCAxNDksIDEyMSwgNSwgMTQ5LCAyMzAsIDE1OSwgNjMsIDI1MCwgMTI5LCA5MywgCisgICAgMTU5LCA2LCAyMjYsIDMzLCAyMjMsIDE3NSwgNTMsIDIxNCwgMTY1LCAyMTksIDQwLCAyNDcsIDkzLCAxMjEsIDYsIDIyMiwgCisgICAgNjcsIDE1OSwgNiwgMjIyLCA2NywgMTU5LCA2LCAyMjAsIDI3LCAxMjEsIDYsIDEzNywgMjQ5LCAyMDAsIDYsIDEzNywgMTU5LCAKKyAgICA2LCAxMzcsIDIyMCwgMTMzLCAyMTIsIDE4NSwgMjE4LCAyMzcsIDIxNiwgMzMsIDgzLCAyMTIsIDEwOCwgNTMsIDIxMSwgNzksIAorICAgIDE0MSwgNTMsIDIwOSwgMjMsIDE1OSwgNiwgMjA1LCAxNTksIDIyMiwgOTYsIDUzLCAyMjIsIDE5MywgNTMsIDIzMywgMiwgCisgICAgMjIyLCAxOTMsIDUzLCAyNDksIDIwMCwgNiwgMjA1LCAxNTksIDIwMSwgMjcsIDUsIDEsIDIzMiwgMjQ5LCAyMzEsIDIxMSwgCisgICAgNTMsIDI1MiwgMTA2LCA1MywgMTIxLCA2LCAyNTEsIDE1MCwgMjQ5LCAyMDAsIDYsIDI0OSwgMzQsIDI0MiwgMjA3LCA5MywgCisgICAgMTIxLCA1LCA3NSwgMTIxLCA2LCA3NSwgMTIxLCA2LCAyNDIsIDEzOSwgMjAxLCA2LCAyNDIsIDEzOSwgMTIxLCA2LCAyMjksIAorICAgIDI4LCAxMjEsIDUsIDc2LCAxMjYsIDkzLCAyNTAsIDExLCA5MywgMjQwLCA0OCwgOTMsIDI0NiwgMTEyLCA5MywgMjMzLCA0MywgCisgICAgMjE0LCAxNjMsIDIxOCwgOTcsIDYsIDIyMCwgMjcsIDI0MiwgNTksIDUzLCAxNTksIDUsIDIyMSwgNTMsIDE1OSwgNSwgMjQwLCAKKyAgICAyMTUsIDE1OSwgNiwgMjQwLCAyMTUsIDE1OSwgNiwgMjIxLCA1MywgMTU5LCAyMjYsIDMyLCAyMTMsIDE1NywgMjAxLCAzOCwgCisgICAgNiwgMjQxLCA1NSwgMjAxLCAzOCwgNiwgMTQ5LCAyMTgsIDIyNCwgMzgsIDYsIDE0OSwgMjAxLCAzOCwgNiwgMjA2LCAxMjMsIAorICAgIDE1OSwgMzUsIDYsIDI0NiwgMjQwLCAxNTksIDM1LCA1LCAyNDYsIDI0MCwgMTU5LCAzNSwgNSwgNzUsIDE1OSwgMzUsIDUsIAorICAgIDc0LCAxNTksIDM1LCA1LCAyMzIsIDIwMywgMjIwLCAxMDMsIDIyOSwgMjA1LCAyMDEsIDI1MiwgMTI1LCAyMjEsIDEzMiwgCisgICAgNTMsIDI1MiwgMTgzLCAyMDEsIDUsIDI0MiwgMTM5LCAxNiwgMzMsIDIxNywgMTYwLCAyMTQsIDE2MywgMjA3LCAxNDYsIAorICAgIDI0MSwgMTE2LCAxMTksIDIxNiwgMTksIDIwNywgMTQ2LCAyNDEsIDExNiwgMTE5LCAyMjQsIDE4OSwgMjA3LCAxNDYsIDI0MSwgCisgICAgMTE2LCAxMTksIDIxMiwgOTEsIDIwNywgMTQ2LCAyNDEsIDExNiwgMTE5LCAyMTIsIDEwLCAyMDcsIDE0NiwgMjQxLCAxMTYsIAorICAgIDExOCwgMjEyLCA3LCAyMDcsIDE0NiwgMjQxLCAxMTYsIDExOSwgMjQxLCAyNDYsIDIwNywgMTQ2LCAyNDEsIDExNiwgMTE4LCAKKyAgICAyNDEsIDI0NSwgMjA3LCAxNDYsIDI0MSwgMTE2LCAxMjksIDI0MSwgMjQ1LCAyMDcsIDE0NiwgMjQxLCAxMTYsIDI0MSwgCisgICAgMTI1LCAyNDEsIDI0NSwgMjA3LCAxNDYsIDI0MSwgMTE2LCAxMTksIDIxNSwgMCwgMjA3LCAxNDYsIDI0MSwgMTE2LCAyNDEsIAorICAgIDIwNCwgMjE0LCAyNTQsIDIwNywgMTQ2LCAyNDEsIDExNiwgMTE5LCAyNDMsIDgzLCAyMDcsIDE0NiwgMjQxLCAxMTYsIDEyOSwgCisgICAgMjQzLCA4MSwgMjA3LCAxNDYsIDI0MSwgMTE2LCAyNDEsIDIwNCwgMjQzLCA4MSwgMjA3LCAxNDYsIDI0MSwgMTE2LCAyMTYsIAorICAgIDIzLCAyNDMsIDgxLCAyNDEsIDExNiwgMjIzLCAxNzYsIDEwMiwgMjE4LCAxMDksIDIyMywgMTc3LCAxMDIsIDIxOCwgMTA5LCAKKyAgICAyMjMsIDE3NywgMTA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDE0MiwgMjE4LCAxMDksIDIyMywgMTc3LCAxMzksIDIxOCwgCisgICAgMTA5LCAyMjMsIDE3NywgMTY4LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDE4NCwgMjE4LCAxMDksIDIyMywgMTc3LCAxOTUsIAorICAgIDIxOCwgMTA5LCAyMjMsIDE3NywgMTkzLCAyMTgsIDEwOSwgMjIzLCAxNzcsIDIwMCwgMjE4LCAxMDksIDIyMywgMTc3LCAKKyAgICAyMTIsIDk4LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDI0MywgNTgsIDIxOCwgMTA5LCAyMjMsIDE3NywgMjEwLCAxMjYsIDIxOCwgCisgICAgMTA5LCAyMjMsIDE3NywgMjQxLCAyNDMsIDIxOCwgMTA5LCAyMjMsIDE3NywgMTE5LCAyMzgsIDI5LCAyMTgsIDEwOSwgMjIzLCAKKyAgICAxNzcsIDI0MSwgMjA0LCAyMzgsIDI5LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDExOSwgMjExLCAyNDIsIDUsIDIxOCwgMTA5LCAKKyAgICAyMjMsIDE3NywgMTAyLCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDEwNSwgNSwgMjE4LCAxMDksIDIyMywgMTc3LCAxNDIsIDUsIAorICAgIDIxOCwgMTA5LCAyMjMsIDE3NywgMTM5LCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDE2OCwgNSwgMjE4LCAxMDksIDIyMywgCisgICAgMTc3LCAxODQsIDUsIDIxOCwgMTA5LCAyMjMsIDE3NywgMTk1LCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDE5MywgNSwgMjE4LCAKKyAgICAxMDksIDIyMywgMTc3LCAyMDAsIDUsIDIxOCwgMTA5LCAyMjMsIDE3NywgMjEyLCA5OCwgNSwgMjE4LCAxMDksIDIyMywgCisgICAgMTc3LCAyNDMsIDU4LCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDIxMCwgMTI2LCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIAorICAgIDI0MSwgMjQzLCA1LCAyMTgsIDEwOSwgMjIzLCAxNzcsIDExOSwgMjM4LCAyOSwgNSwgMjE4LCAxMDksIDIyMywgMTc3LCAKKyAgICAyNDEsIDIwNCwgMjM4LCAyOSwgNSwgMjE4LCAxMDksIDIyMywgMTc3LCAxMTksIDIxMSwgMjQyLCAyMTgsIDEwOSwgMjIzLCAKKyAgICAxNzcsIDExOSwgMjExLCAyNDMsIDI0OSwgMzUsIDI0NiwgMjQwLCAyMTgsIDEwOSwgMjIzLCAxNzcsIDI0MSwgMjA0LCAyMTEsIAorICAgIDI0MiwgMjE4LCAxMDksIDIyMywgMTc3LCAyMTIsIDk5LCAyMTEsIDI0MiwgMjE4LCAxMDksIDIyMywgMTc3LCAyMTgsIDIyNCwgCisgICAgMTE5LCAyMzgsIDI5LCA3LCA1LCAxLCAyMTgsIDIyNCwgMjQ5LCAzNCwgMjE4LCAxMDksIDIyMywgMTc3LCAyMTUsIDEwLCAKKyAgICAyMzAsIDc5LCAxNywgMjE4LCAxMDksIDIyMywgMTc3LCAyNDEsIDI0NCwgMjQzLCAxMjMsIDE3LCAyMTgsIDEwOSwgMjIzLCAKKyAgICAxNzcsIDI0MSwgMjQ0LCAyMTEsIDI0MiwgMjE4LCAxMDksIDIyMywgMTc3LCAxMTksIDIzOCwgMzAsIDIxMSwgMjQyLCAyMDcsIAorICAgIDE0NiwgMjQxLCAxMTYsIDIwNSwgODYsIDIxMiwgNywgOTIsIDQ1LCAxNjcsIDQ1LCA4NiwgNDUsIDE3MywgNDUsIDQ3LCA0OCwgCisgICAgNDUsIDEyMCwgMTMwLCA0NSwgMTQzLCAyMDcsIDM2LCA0NSwgMTQzLCAyNDMsIDExNywgNDUsIDE4OCwgMjQzLCAxMTcsIDQ1LCAKKyAgICAxODgsIDIwNywgMzYsIDQ1LCA5MiwgNTEsIDIsIDkxLCA4NiwgNTEsIDIsIDkxLCA5MiwgMjA3LCA2NSwgNDUsIDg2LCAyMDcsIAorICAgIDY1LCA0NSwgOTIsIDExOCwgMjM5LCA2NywgNDUsIDE2NywgMTE4LCAyMzksIDY3LCA0NSwgODYsIDExOCwgMjM5LCA2NywgCisgICAgNDUsIDE3MywgMTE4LCAyMzksIDY3LCA0NSwgOTIsIDUxLCAyLCAyMTIsIDE5MSwgODYsIDUxLCAyLCAyMTIsIDE5MSwgOTIsIAorICAgIDUxLCAyNDEsIDk4LCAxMzQsIDE2NywgNTEsIDI0MSwgOTgsIDEzNCwgODYsIDUxLCAyNDEsIDk4LCAxMzQsIDE3MywgNTEsIAorICAgIDI0MSwgOTgsIDEzNCwgMTIwLCAxMzAsIDUxLCAyLCAyNTAsIDExNiwgOTIsIDUxLCAyLCAxMDksIDg2LCA1MSwgMiwgMTA5LCAKKyAgICA5MiwgNTEsIDIsIDIyOSwgMTExLCA4NiwgNTEsIDIsIDIyOSwgMTExLCA0NywgNDgsIDIwNywgNjUsIDQ1LCA0NywgNDgsIAorICAgIDUxLCAyLCA5MSwgMTczLCAyMDUsIDMxLCA0NSwgMTY3LCA1MSwgMiwgMjExLCAxNjcsIDIzMCwgMzYsIDE2NywgNTEsIDIsIAorICAgIDIxMSwgMTY3LCAyMTgsIDE1NiwgMTczLCA1MSwgMiwgMjExLCAxNjcsIDIzMCwgMzYsIDE3MywgNTEsIDIsIDIxMSwgMTY3LCAKKyAgICAyMTgsIDE1NiwgODYsIDUxLCAyLCAyNDcsIDkyLCAyNDQsIDYsIDE3MywgNTEsIDIsIDI0NywgOTIsIDIzMCwgMzYsIDI1MiwgCisgICAgODcsIDIxMSwgMTAyLCAyMTYsIDU1LCA0NSwgMjQ3LCAxOTQsIDIxMSwgMTAyLCAyMTYsIDU1LCA0NSwgMTQzLCAyMDcsIDM2LCAKKyAgICA1MSwgMjExLCAxMzAsIDE1MiwgMTM0LCA5MiwgNTEsIDIxMSwgMTMwLCAyNTAsIDEyOSwgMTMxLCA4NiwgNTEsIDIxMSwgCisgICAgMTMwLCAxMzQsIDI1MiwgODcsIDIyMiwgMTQyLCAyNDcsIDIzNCwgNDUsIDI0NywgMTk0LCAyMjIsIDE0MiwgMjQ3LCAyMzQsIAorICAgIDQ1LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAyMDksIDE5NiwgOTIsIDIzOSwgOTAsIDIsIDEzOCwgMjQ0LCA2LCAxNjcsIDIzOSwgCisgICAgOTAsIDIsIDEzOCwgMjE4LCAxNTYsIDE2NywgMjM5LCA5MCwgMiwgMTM4LCAyMzAsIDM2LCA4NiwgMjM5LCA5MCwgMiwgMTM4LCAKKyAgICAyMDksIDE5NiwgODYsIDIzOSwgOTAsIDIsIDEzOCwgMjQ0LCA2LCAxNzMsIDIzOSwgOTAsIDIsIDEzOCwgMjE4LCAxNTYsIAorICAgIDE3MywgMjM5LCA5MCwgMiwgMTM4LCAyMzAsIDM2LCA4NiwgNTEsIDEzMSwgOTIsIDQ1LCAxNjcsIDUxLCA5MiwgNzMsIDE3MywgCisgICAgNDUsIDkyLCA1MSwgMTMxLCA4NiwgNDUsIDkyLCAyMjIsIDMwLCAyNTEsIDI0MSwgMTY3LCAyMjIsIDMwLCAyNTEsIDI0MSwgCisgICAgODYsIDIyMiwgMzAsIDI1MSwgMjQxLCAxNzMsIDIyMiwgMzAsIDI1MSwgMjQxLCA5MiwgMjM5LCA5MCwgMTMxLCA4NiwgMjM5LCAKKyAgICA4OSwgODYsIDIzOSwgOTAsIDEzMSwgOTIsIDIzOSwgODksIDkyLCA1MCwgNTEsIDIsIDkxLCA0NywgNDgsIDUwLCA1MSwgMiwgCisgICAgOTEsIDg2LCA1MCwgNTEsIDIsIDkxLCA5MiwgNTAsIDQ1LCAxNjcsIDUwLCA0NSwgODYsIDUwLCA0NSwgMTczLCA1MCwgNDUsIAorICAgIDQ3LCA0OCwgNTAsIDQ1LCAxMjAsIDEzMCwgNTAsIDQ1LCAxNDMsIDIwNywgMzYsIDUwLCA0NSwgMTQzLCAyNDMsIDExNywgCisgICAgNTAsIDQ1LCAxODgsIDI0MywgMTE3LCA1MCwgNDUsIDE4OCwgMjA3LCAzNiwgNTAsIDQ1LCA5MiwgMjExLCAzNiwgNDUsIDg2LCAKKyAgICAyMTEsIDM2LCA0NSwgOTIsIDIxNCwgMTAzLCA0NSwgODYsIDIxNCwgMTAzLCA0NSwgMTY3LCA1MSwgMiwgNTAsIDkxLCAxNzMsIAorICAgIDUxLCAyLCA1MCwgOTEsIDkyLCAyNDYsIDc3LCA0NSwgMTY3LCAyNDYsIDc3LCA0NSwgODYsIDI0NiwgNzcsIDQ1LCAxNzMsIAorICAgIDI0NiwgNzcsIDQ1LCA5MiwgNTEsIDIxMSwgMTMwLCAxMzQsIDg2LCA1MSwgMjExLCAxMzAsIDEzNCwgOTIsIDU5LCA0NSwgCisgICAgMTY3LCA1OSwgNDUsIDg2LCA1OSwgNDUsIDE3MywgNTksIDQ1LCAxNjcsIDU5LCA1MSwgMjQxLCA5OCwgMTM0LCAxNjcsIDU5LCAKKyAgICA1MSwgMjIyLCAxNjYsIDIyMSwgMTY3LCAxNjcsIDU5LCA1MSwgMjIyLCAxNjYsIDIyMSwgMTY4LCAyLCAxOTQsIDEzNCwgCisgICAgMTY3LCA1OSwgNTEsIDIyMiwgMTY2LCAyMjEsIDE2OCwgMiwgNzksIDEzNCwgMTY3LCA1OSwgNTAsIDQ1LCAxNjcsIDU5LCAKKyAgICA1MCwgNTEsIDIyMiwgMTY2LCAyMjEsIDE2NywgODYsIDU5LCA1MSwgMjQxLCA5OCwgMjA3LCA4NiwgMTQzLCAyMDcsIDM2LCAKKyAgICA1MSwgMjExLCAxMzAsIDI0NywgOTEsIDE4OCwgMjQzLCAxMTcsIDUxLCAyMTEsIDEzMCwgMjQ3LCA5MSwgMTIwLCAxMzAsIAorICAgIDU5LCA0NSwgNDgsIDUxLCAyLCA1LCAyNDcsIDIzMywgMTczLCA1MSwgOTIsIDczLCAxNjcsIDQ1LCAxMjksIDg2LCAyNTEsIAorICAgIDI0MSwgOTIsIDUxLCAyLCA3OSwgOTEsIDg2LCA1MSwgMiwgNzksIDkxLCA0NywgNDgsIDUxLCAyLCA3OSwgOTEsIDkyLCA1MSwgCisgICAgMiwgNTAsIDc5LCA5MSwgODYsIDUxLCAyLCA1MCwgNzksIDkxLCA0NywgNDgsIDUxLCAyLCA1MCwgNzksIDkxLCA5MiwgMjIyLCAKKyAgICAxNDAsIDQ1LCA4NiwgMjIyLCAxNDAsIDQ1LCA0NywgNDgsIDIyMiwgMTQwLCA0NSwgMzMsIDI1MiwgMTU2LCAyNDcsIDE1MCwgCisgICAgMjIxLCAyMDksIDI0NSwgMTQwLCAyMTIsIDMyLCAyNDIsIDE2NCwgMjEyLCAzMiwgMjQ1LCA0MiwgMjI0LCA0MywgMjQyLCAKKyAgICAxNjUsIDI0MywgNDMsIDIxNiwgMjgsIDIzMywgNTcsIDIyNSwgMjI3LCAyNDMsIDYxLCAyMjIsIDIwMywgMjI0LCA0MywgCisgICAgMjUyLCAxMjMsIDI0MywgNjEsIDIyMiwgMjAzLCA1LCAyNDMsIDYxLCAyMjIsIDIwMywgMjQ3LCAxMTgsIDI1MSwgMjMyLCAKKyAgICAyMjcsIDg3LCAyNDUsIDQyLCAyMjQsIDQzLCAyNDcsIDEyMCwgMjUxLCAyMzIsIDIyNywgODcsIDUsIDI0NywgMTE4LCAyNTEsIAorICAgIDIzMiwgMjI3LCA4NywgMjQzLCAzNCwgNzMsIDIyMCwgMTA1LCAyMjYsIDMyLCAyMjAsIDExNSwgMjI2LCAzMiwgMjQ3LCA5NiwgCisgICAgMjI2LCAzMiwgMjEzLCAxNTcsIDIyNiwgMjAyLCA1MywgMjI2LCAyMDAsIDUzLCA2NywgMjIwLCAyMTgsIDI0NSwgNzUsIAorICAgIDIxNCwgMjM1LCAyMTYsIDI5LCAyMjYsIDIwMSwgMjUxLCAyMTAsIDIyMiwgMTMyLCAyMTgsIDE0OSwgMjIyLCAxMzIsIDI0OSwgCisgICAgODYsIDIyMiwgMTMyLCA0OSwgMjE4LCAxMDMsIDI0NywgMzYsIDIxOCwgMTAzLCAyNDEsIDExOCwgMjE4LCAxMDMsIDIyMCwgCisgICAgMTAxLCAxMjQsIDIzMywgNDUsIDQ4LCAyNTIsIDEwOCwgMjUyLCAxMDgsIDIyNywgMTE2LCAyNTIsIDEwOCwgMjE0LCAxMzMsIAorICAgIDI1MiwgMTA4LCAyNDUsIDc3LCAyNDUsIDQyLCAyMjQsIDQzLCAyNDUsIDgxLCAyMjEsIDIyMiwgMTI0LCAyMjQsIDQzLCAKKyAgICAyMjEsIDIyMiwgMTI0LCAyMjksIDEzNCwgMjUyLCAxMTcsIDIyOSwgMTM0LCAyMjIsIDEyMiwgMjMzLCA3LCAyMDksIDIxOCwgCisgICAgMjMzLCAyMSwgNTAsIDIzMywgMjEsIDIxMSwgMzYsIDIzMywgMjEsIDI0NywgMTEzLCAyMzMsIDIxLCAyMTMsIDEyOSwgMjMzLCAKKyAgICAyMSwgMjA4LCAxNjMsIDIzMywgMjEsIDI0NywgMTk0LCAyMzMsIDIxLCAyNDcsIDE5NCwgMjQ3LCAxMTMsIDIzMywgMjEsIAorICAgIDI1MiwgODcsIDI0NywgMTEzLCAyMzMsIDIxLCAyMTIsIDMxLCAyNTAsIDUyLCAyMTksIDYxLCAyMjAsIDEwMiwgNjcsIDIyNiwgCisgICAgMjAxLCAyNDIsIDE3MCwgMjQwLCAxNTIsIDIyMCwgMTAyLCAyMzgsIDEzNSwgMjExLCAxODEsIDIyMiwgMTMyLCAyMTgsIAorICAgIDIyNCwgMjExLCAxODAsIDIzMywgMiwgMjMwLCA2NSwgMTgyLCAyMTUsIDQzLCAyMDcsIDY0LCAyMDYsIDIyMSwgMjIwLCAKKyAgICAxMTUsIDIyNCwgNDMsIDIxMSwgMTgwLCAyMjYsIDIwMiwgMjExLCAxODAsIDI1MSwgMjAzLCAxNDYsIDEyNCwgMjI0LCA0MywgCisgICAgMjUxLCAyMDMsIDE0NiwgMTI0LCAyNTIsIDQ0LCAxNDYsIDEyNCwgMjUyLCA0NCwgMjQ5LCA1NywgMjI0LCA0MywgMjUzLCAKKyAgICAxMCwgMTQ2LCAxMjQsIDIyNSwgMTAzLCAyNTIsIDQ0LCAyMjQsIDUxLCAyNTMsIDEwLCAxNDYsIDEyNCwgMjUyLCAxNDksIAorICAgIDE0NiwgMTI0LCAyMjQsIDQzLCAyNTIsIDE0OSwgMTQ2LCAxMjQsIDI1MiwgMTQ5LCAxNDYsIDIyMiwgMTIzLCAxNDYsIDEyNCwgCisgICAgMjExLCAzNiwgMjExLCAxODAsIDI1MiwgMTU3LCAxNDYsIDEyNCwgMjQyLCAyMzcsIDEyNCwgMjQwLCAxNTEsIDI0MiwgMjM3LCAKKyAgICAxMjQsIDI0NSwgMTQxLCAyNTAsIDUsIDI1MiwgNDYsIDIxMiwgNDIsIDIyOSwgMjEzLCAyNDAsIDE1MSwgMTQ2LCAxMjQsIAorICAgIDI1MiwgNDQsIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAyMTIsIDQyLCAyMzMsIDg0LCAyMjIsIDIwMywgMjMzLCA4NCwgCisgICAgNzMsIDIyMiwgMTIzLCAyNTIsIDQ0LCAxNDYsIDEyNCwgMjQ3LCAxNjMsIDI0MiwgMjQxLCAyNDIsIDI0MiwgMjQ3LCAxNjIsIAorICAgIDIxOCwgMTQ5LCAyMzMsIDY5LCAxNDYsIDEyNCwgMjE4LCAxNDksIDE0NiwgMTI0LCAyNDcsIDg1LCAxMjQsIDI0MiwgMjA2LCAKKyAgICAyNDIsIDI0MCwgMTI0LCAyMTQsIDI3LCAyNDIsIDI0MSwgMjQ1LCAyMjgsIDE0NiwgMTI0LCAxNDYsIDIxMSwgMTMwLCAyNDksIAorICAgIDQ2LCAyNDUsIDI0NiwgMjI3LCAxMTYsIDI0OSwgNDUsIDIxOSwgMTk0LCAxNDYsIDEyNCwgMjI0LCA0MywgMTQ2LCAxMjQsIAorICAgIDIzNywgMTczLCAxMjQsIDIyNCwgNDMsIDIzNywgMTczLCAxMjQsIDIxMywgMjMxLCAyNDIsIDIzNywgMTI0LCAyMzAsIDEwLCAKKyAgICAyMjIsIDEyMywgMTQ2LCAxMjQsIDIzOSwgMjMwLCAyMjIsIDEyMywgMTQ2LCAxMjQsIDIzMCwgMTAsIDEzMSwgMTQ2LCAxMjQsIAorICAgIDIzOSwgMjMwLCAxMzEsIDE0NiwgMTI0LCAyMzAsIDEwLCAyNDksIDU3LCAyMjQsIDQzLCAxNDYsIDEyNCwgMjM5LCAyMzAsIAorICAgIDI0OSwgNTcsIDIyNCwgNDMsIDE0NiwgMTI0LCAyMjYsIDEwOCwgMjMwLCA5LCAyMjYsIDEwOCwgMjM5LCAyMjksIDI1MCwgNSwgCisgICAgMjI0LCA0MywgMjQyLCAyMzcsIDEyNCwgMjI0LCA0MywgMjMwLCA5LCAyMjQsIDQzLCAyMzksIDIyOSwgMjI1LCAxMDMsIAorICAgIDIzMCwgMTAsIDIyNCwgNTEsIDE0NiwgMTI0LCAyMjUsIDEwMywgMjM5LCAyMzAsIDIyNCwgNTEsIDE0NiwgMTI0LCAyMzAsIAorICAgIDEwLCAyMjIsIDEyMywgMjQyLCAyMzcsIDEyNCwgMjM5LCAyMzAsIDIyMiwgMTIzLCAyNDIsIDIzNywgMTI0LCAyMjUsIDEwMywgCisgICAgMjMwLCAxMCwgMjI0LCA1MSwgMjQyLCAyMzcsIDEyNCwgMjI1LCAxMDMsIDIzOSwgMjMwLCAyMjQsIDUxLCAyNDIsIDIzNywgCisgICAgMTI0LCAyMzAsIDEwLCAyMjIsIDEyMywgMjM5LCAyMjksIDIzOSwgMjMwLCAyMjIsIDEyMywgMjMwLCA5LCAyMjUsIDEwMywgCisgICAgMjMwLCAxMCwgMjI0LCA1MSwgMjM5LCAyMjksIDIyNSwgMTAzLCAyMzksIDIzMCwgMjI0LCA1MSwgMjMwLCA5LCAyMjAsIAorICAgIDEzOSwgMjEzLCAxNzMsIDIyMCwgMTQwLCAyMjIsIDEyMywgMTQ2LCAxMjQsIDIxMywgMTc0LCAyMjIsIDEyMywgMTQ2LCAKKyAgICAxMjQsIDIyMCwgMTQwLCAyMjIsIDEyMywgMjQyLCAyMzcsIDEyNCwgMjEzLCAxNzQsIDIyMiwgMTIzLCAyNDIsIDIzNywgCisgICAgMTI0LCAyNDUsIDQyLCAyMjQsIDQzLCAyMjAsIDE0MiwgMjQ1LCA0MiwgMjI0LCA0MywgMjEzLCAxNzUsIDIxMywgMTgyLCAKKyAgICAyMjIsIDIwMywgMjEzLCAxMzgsIDIyMiwgMjAzLCAyMjQsIDQzLCAzMiwgMjEzLCAxODIsIDIyMiwgMjAzLCAyMjQsIDQzLCAKKyAgICAzMiwgMjEzLCAxMzgsIDIyMiwgMjAzLCAyMTMsIDE4MiwgNzMsIDIyMiwgMTIzLCAxNDYsIDEyNCwgMjEzLCAxMzgsIDczLCAKKyAgICAyMjIsIDEyMywgMTQ2LCAxMjQsIDIyNSwgMTAzLCAzMiwgMjEzLCAxODIsIDczLCAyMjQsIDUxLCAxNDYsIDEyNCwgMjI1LCAKKyAgICAxMDMsIDMyLCAyMTMsIDEzOCwgNzMsIDIyNCwgNTEsIDE0NiwgMTI0LCAyMTMsIDE4MiwgNzMsIDIsIDIyNCwgNDMsIDE0NiwgCisgICAgMTI0LCAyMTMsIDEzOCwgNzMsIDIsIDIyNCwgNDMsIDE0NiwgMTI0LCAyMjYsIDkxLCAyMjYsIDkyLCAyMjYsIDkzLCAyMjYsIAorICAgIDkyLCAyMDksIDIxOCwgNDksIDIzMywgODQsIDIyMiwgMjAzLCA0OSwgMjIyLCAxMTQsIDIyMiwgMjAzLCA0OSwgMjMzLCA4NCwgCisgICAgNzMsIDIyMiwgMTIzLCAxNDYsIDEyNCwgNDksIDIyMiwgMTE0LCA3MywgMjIyLCAxMjMsIDE0NiwgMTI0LCA0OSwgMjQ4LCAKKyAgICAyMTMsIDQ5LCAyNDcsIDI5LCAzOSwgMjIwLCAyMTgsIDM5LCAyMjYsIDIwMSwgMzksIDIxMSwgMTc1LCAzOSwgMjQ1LCA3NSwgCisgICAgMjE0LCAyMzUsIDM5LCA2NywgMjIyLCAxMzIsIDM5LCAyMTgsIDE0OSwgMjIyLCAxMzIsIDM5LCAyNTEsIDIxMCwgMjIyLCAKKyAgICAxMzIsIDM5LCAyNDIsIDI0MSwgMzksIDI0NiwgNzgsIDk4LCAyMjAsIDIxOCwgOTgsIDIyNiwgMjAxLCA5OCwgMjExLCAxNzUsIAorICAgIDk4LCA2NywgMjIyLCAxMzIsIDQ4LCAyMTIsIDIwMSwgNDcsIDIxMiwgMjAxLCAxMzAsIDIxMiwgMjAxLCAxMjAsIDIxMiwgCisgICAgMjAxLCAyNTEsIDIxMywgMjI2LCAxNzYsIDIxMSwgMTYsIDI0MSwgMTQxLCAyMTEsIDM2LCA3OSwgMjUwLCAxMjksIDQ4LCAKKyAgICAyMTAsIDE0MywgNTAsIDc5LCAyNTAsIDEyOSwgNTAsIDQ4LCAyMTAsIDE0MywgMjQ1LCA0MiwgMjI0LCA0MywgMjIwLCA5NiwgCisgICAgMjI0LCA0MywgMjExLCAxNiwgMjQ1LCA0MiwgMjI0LCA0MywgMjQxLCAxNDIsIDIyNSwgMTA1LCA1MCwgNzksIDI1MCwgMTI5LCAKKyAgICA1MCwgNDgsIDIxMCwgMTQzLCAyMjAsIDE0MCwgMjA5LCAyMjcsIDIxOSwgMTEsIDIxMywgMTc0LCAyMDksIDIyNywgMjE5LCAKKyAgICAxMSwgMjI0LCA0OCwgMjEzLCAxOTUsIDIyMiwgMjAzLCAyNDcsIDExOCwgMjUxLCAyMzIsIDIyNCwgNDgsIDIxMywgMTk0LCAKKyAgICAyMjQsIDQ4LCAyMTMsIDE5NSwgNzMsIDIyMiwgMTIzLCAxNDYsIDEyNCwgMjQ3LCAxMTgsIDI1MSwgMjMyLCAyMjQsIDQ4LCAKKyAgICAyMTMsIDE5NSwgMjIyLCAxMjMsIDE0NiwgMTI0LCAyMjIsIDExNCwgMjIyLCAyMDMsIDIzMywgODQsIDIyMiwgMjAzLCAyMjYsIAorICAgIDk3LCAyMzksIDMyLCAyNDcsIDEyOSwgMjI3LCAxNjgsIDIzMywgMTgsIDIwNiwgMTU1LCAyMjUsIDIwNywgMjI0LCA1MCwgCisgICAgNDgsIDI1MiwgMTA5LCAyLCAyNTIsIDIxLCA0OCwgMjExLCA1MSwgMjI2LCAzMiwgMjI5LCAxMzQsIDI1MiwgMTE3LCAyMjYsIAorICAgIDMyLCAyMjksIDEzNCwgMjIyLCAxMjIsIDIyNiwgMzIsIDIzMywgNywgMjI2LCAzMiwgMjA5LCAyMTgsIDI0NSwgMTU3LCAKKyAgICAyMjIsIDEzMiwgNjcsIDIyMiwgMTMyLCAyMTQsIDI3LCAyMjIsIDEzMiwgMjQ1LCA3NSwgMjExLCAxNzUsIDI0OSwgMTQxLCAKKyAgICA0NywgMjI0LCA0OCwgMjQyLCA1OCwgMjE2LCA1MSwgMjIwLCAxMTUsIDQ4LCAyMjQsIDQ4LCAyNDIsIDU4LCAyMTYsIDUxLCAKKyAgICAyMjAsIDExNSwgNDcsIDIxNiwgNTEsIDIyMCwgMTE1LCA0OCwgMjE2LCA1MSwgMjIwLCAxMTUsIDIxOCwgMjI0LCAyMTEsIAorICAgIDE4MSwgMjQyLCAyNDEsIDI0NywgMjYsIDIyOSwgMTM0LCAyMjIsIDEyMiwgMjQ3LCAyNiwgMjI5LCAxMzQsIDI1MiwgMTE3LCAKKyAgICA1MCwgMjEzLCAxODEsIDUwLCAyMTMsIDEzNywgNTAsIDIzMywgNywgNTAsIDIwOSwgMjE4LCAyMjAsIDI0NSwgMTQ2LCAyMywgCisgICAgMjIxLCAyMjIsIDEyNCwgMjMwLCAxMCwgMiwgMjQ1LCAyMywgMjM5LCAyMzAsIDIsIDI0NSwgMjMsIDIwOCwgMjI2LCAyMjYsIAorICAgIDEwOCwgMjMwLCA5LCAyMDgsIDIyNiwgMjI2LCAxMDgsIDIzOSwgMjI5LCAyMzAsIDEwLCAxNDYsIDIxMSwgMTMwLCAyMjIsIAorICAgIDEyMywgMjM5LCAyMjksIDIzOSwgMjMwLCAxNDYsIDIxMSwgMTMwLCAyMjIsIDEyMywgMjMwLCA5LCAxNDYsIDIxMSwgMTMwLCAKKyAgICAyMjIsIDEyMywgMjMwLCA5LCAxNDYsIDIxMSwgMTMwLCAyMjIsIDEyMywgMjM5LCAyMjksIDE0NiwgMjExLCAxMzAsIDIyMiwgCisgICAgMTIzLCAyMjAsIDEzOSwgMTQ2LCAyMTEsIDEzMCwgMjIyLCAxMjMsIDIxMywgMTczLCAyNDUsIDQyLCAyMjQsIDQzLCAyMjAsIAorICAgIDE0MywgMjIyLCAxMjMsIDI0MiwgMjQzLCAyNDUsIDQyLCAyMjQsIDQzLCAyMTMsIDE3NiwgMjIyLCAxMjMsIDI0MiwgMjQzLCAKKyAgICAyMjQsIDQzLCA0OSwgMjMzLCA4NCwgNzMsIDIyMiwgMTIzLCAxNDYsIDEyNCwgMjI0LCA0MywgNDksIDIyMiwgMTE0LCA3MywgCisgICAgMjIyLCAxMjMsIDE0NiwgMTI0LCA0OSwgMjMzLCA4NCwgNzMsIDIyMiwgMTIzLCAyMjQsIDQzLCAxNDYsIDEyNCwgNDksIAorICAgIDIyMiwgMTE0LCA3MywgMjIyLCAxMjMsIDIyNCwgNDMsIDE0NiwgMTI0LCAyMzAsIDEwLCAyNDksIDU3LCAyMjQsIDQzLCAKKyAgICAyNDIsIDIzNywgMTI0LCAyMzksIDIzMCwgMjQ5LCA1NywgMjI0LCA0MywgMjQyLCAyMzcsIDEyNCwgMjIwLCAxNDAsIDI0OSwgCisgICAgNTcsIDIyNCwgNDMsIDI0MiwgMjM3LCAxMjQsIDIxMywgMTc0LCAyNDksIDU3LCAyMjQsIDQzLCAyNDIsIDIzNywgMTI0LCAKKyAgICAyMjQsIDQzLCAyMjQsIDQ4LCAyMTMsIDE5NSwgMjIyLCAyMDMsIDI0NSwgNDIsIDIyNCwgNDMsIDI0NywgMTIwLCAyNTEsIAorICAgIDIzMiwgMjI0LCA0OCwgMjEzLCAxOTQsIDIyNCwgNDMsIDIyNCwgNDgsIDIxMywgMTk1LCA3MywgMjIyLCAxMjMsIDE0NiwgCisgICAgMTI0LCAyNDUsIDQyLCAyMjQsIDQzLCAyNDcsIDEyMCwgMjUxLCAyMzIsIDIyNCwgNDgsIDIxMywgMTk1LCAyMjIsIDEyMywgCisgICAgMjQyLCAyNDMsIDc5LCAyNDMsIDU0LCAyMjYsIDI0NSwgMTk0LCAyNDMsIDU0LCAxMjAsIDQ4LCAyNDUsIDE2MywgMjQzLCAKKyAgICA1NCwgMTMwLCA0OCwgMjQ1LCAxNjMsIDI0MywgNTQsIDI0MywgNjEsIDczLCAyLCAxNTIsIDE5NCwgOTEsIDI0MywgNjEsIAorICAgIDczLCAyLCA3OSwgMjUwLCAxMjksIDI1MSwgMjAwLCAyNDMsIDM0LCA3MywgMTk0LCA5MSwgNSwgMjQzLCA2MSwgNzMsIDIsIAorICAgIDc5LCAyNTAsIDEyOSwgMjUxLCAyMDAsIDI0MywgMzQsIDczLCAxOTQsIDkxLCAyNDMsIDYxLCA3MywgMiwgNjcsIDUyLCAKKyAgICAyNDMsIDYxLCA3MywgMiwgMjIyLCA4NiwgNSwgMjQzLCA2MSwgNzMsIDIsIDIyMiwgODYsIDI0MywgNjEsIDczLCAyLCAyMDksIAorICAgIDIyNiwgMjQzLCA2MSwgNzMsIDIsIDExOCwgMTk0LCAyMTMsIDIxMiwgMjQ3LCAxMTgsIDIsIDE1MiwgMTk0LCA5MSwgMjQ3LCAKKyAgICAxMTgsIDIsIDc5LCAyNTAsIDEyOSwgMjUxLCAyMDAsIDI0MywgMzQsIDczLCAxOTQsIDkxLCA1LCAyNDcsIDExOCwgMiwgNzksIAorICAgIDI1MCwgMTI5LCAyNTEsIDIwMCwgMjQzLCAzNCwgNzMsIDE5NCwgOTEsIDI0NywgMTE4LCAyLCAyMjIsIDg2LCA1LCAyNDcsIAorICAgIDExOCwgMiwgMjIyLCA4NiwgMjA1LCAxNjAsIDIyNCwgNDEsIDI1MCwgMTY0LCAyMjcsIDg2LCAyNDUsIDE1OCwgNTMsIDI0MywgCisgICAgNjMsIDQ1LCAyMzgsIDU0LCAxMjAsIDI1MSwgMjQzLCAxMzAsIDI1MSwgMjQzLCAyMjAsIDEwOSwgMjIxLCAxMTIsIDIwNywgCisgICAgNjEsIDIyOSwgMjA1LCA0NywgMjQ4LCAxMzcsIDQ4LCAyNDgsIDEzNywgNDcsIDI0MSwgMTc4LCA0OCwgMjQxLCAxNzgsIAorICAgIDI0OSwgMTU0LCA0OCwgMjQ3LCA2MSwgMjQ5LCAxNTQsIDQ3LCAyNDcsIDYxLCAyMTEsIDEwMiwgNDgsIDI0NywgNjEsIDIxMSwgCisgICAgMTAyLCA0NywgMjQ3LCA2MSwgMjE4LCAyMjQsIDIyNCwgNDMsIDUzLCA0OSwgMjI5LCA4OCwgMjUyLCAyMSwgMjE3LCA2NywgCisgICAgMjE3LCA3NSwgMjEyLCAxMDgsIDIxOSwgNDEsIDIyMCwgMTc4LCAyMzMsIDQ5LCAyMDgsIDIwMiwgMjE0LCAxMDcsIDIyMCwgCisgICAgMjM5LCA3MywgMjMzLCAxNywgNTMsIDIwMSwgMjI0LCA0MywgNTMsIDIwNywgNzEsIDIzOCwgNTYsIDIxMSwgMTAyLCA0NywgCisgICAgMjQ3LCA5MSwgMjExLCAxMDIsIDQ4LCAyNDcsIDkxLCAyNDksIDE1NCwgNDcsIDI0NywgOTEsIDI0OSwgMTU0LCA0OCwgMjQ3LCAKKyAgICA5MSwgMjExLCAxMDIsIDE2MCwgMjMzLCAyMSwgMjQ5LCAxNTQsIDE2MCwgMjMzLCAyMSwgMjQxLCA5NSwgMjE0LCAyMTEsIAorICAgIDEyMCwgMjUxLCAyNDQsIDI1MCwgNiwgMTE4LCAxOTQsIDI1MCwgMTE4LCAyMjIsIDEyNSwgMjMxLCAxNzQsIDI0MiwgMjMzLCAKKyAgICAyMTEsIDEzMCwgMjEyLCA0MiwgMjE4LCAxNjcsIDIwNiwgMTk2LCAyMzMsIDY5LCAzMiwgMjE5LCAzOCwgMjQ5LCAxNDAsIAorICAgIDIzMSwgMTcyLCAyMzAsIDQxLCAyNTIsIDEwOSwgMTQ1LCAyMTgsIDE2MiwgMjUyLCAxMDksIDE0NSwgMjQyLCAyMzMsIDIxMSwgCisgICAgMTMwLCAyMTIsIDQyLCAyMzAsIDQ2LCAyNTAsIDE3LCAyMTgsIDE0OCwgMjQ2LCAyNTAsIDI1MiwgMTU3LCAyNTEsIDI1MiwgCisgICAgMjEzLCA0MCwgMjExLCA5MCwgMjE4LCAzMiwgMjQ1LCAxMjIsIDIyMiwgMTE1LCAyNDcsIDEzMSwgMjEyLCAxNjQsIDIxNCwgCisgICAgMjIyLCAyNDcsIDgxLCAyNDcsIDgwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjM3LCAyMjIsIDI1MiwgNjIsIDI0MSwgNzgsIAorICAgIDE2LCAyMTQsIDEwMSwgMjE5LCAyMTEsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTksIDIxMiwgMjQyLCAyNDMsIDI1MiwgCisgICAgNjIsIDI0MSwgNzgsIDE2LCAyMTksIDIxMiwgMjQ1LCA4MSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyNDUsIAorICAgIDE1NiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyMzIsIDExMCwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgCisgICAgMjEyLCAyNDcsIDIzMywgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDI0NywgMjM0LCAyMTQsIDMsIDI1MiwgNjIsIDI0MSwgNzgsIAorICAgIDE2LCAyNDcsIDIzNCwgMjMyLCAxMTAsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTQsIDIzNiwgMTM0LCAyNTIsIDYyLCAKKyAgICAyNDEsIDc4LCAxNiwgMjUwLCAxNzIsIDEzNCwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyMTQsIDIzNSwgCisgICAgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyNTAsIDE3MSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAKKyAgICAyMzAsIDksIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTksIDIxMiwgMjM5LCAyMjksIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAKKyAgICA5MiwgMjA5LCA2MCwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDg2LCAyMDksIDYwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgCisgICAgMjE5LCAyMTIsIDkyLCA0NSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCA4NiwgNDUsIDI1MiwgNjIsIDI0MSwgCisgICAgNzgsIDE2LCAyNDcsIDIzNCwgMjUwLCAxNzEsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAxMzAsIDIxMiwgMjAyLCAyMDksIAorICAgIDIyNiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDI0NSwgMjI4LCAyMTQsIDMsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTksIAorICAgIDIxMiwgMTMwLCAyNDgsIDE5OSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyNDUsIDIyNywgMjUyLCA2MiwgCisgICAgMjQxLCA3OCwgMTYsIDEzMCwgMjEyLCAyMDIsIDIzMiwgMTEwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMTY3LCAyMDksIDYwLCAKKyAgICAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjE5LCAyMTIsIDE2NywgNDUsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAxMjAsIDIxMiwgCisgICAgMjAyLCAyMjIsIDg2LCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjQ1LCAyMzksIDIxNCwgMywgMjUyLCA2MiwgMjQxLCA3OCwgCisgICAgMTYsIDIxOSwgMjEyLCAxMjAsIDI0OCwgMTk5LCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjE5LCAyMTIsIDI0NSwgMjM4LCAKKyAgICAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMTIwLCAyMTIsIDIwMiwgMjMyLCAxMTAsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAxNzMsIAorICAgIDIwOSwgNjAsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTksIDIxMiwgMTczLCA0NSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIAorICAgIDIxOSwgMTc5LCAyMDksIDIyNiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDI0NSwgMjI4LCAyMDksIDIyNiwgMjUyLCA2MiwgCisgICAgMjQxLCA3OCwgMTYsIDI0NSwgMTU3LCAyMDksIDIyNiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIzMiwgMTExLCAyMDksIAorICAgIDIyNiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDI0NywgMjM0LCAyMDksIDIyNiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDEyMCwgCisgICAgMjE1LCAxNTYsIDIzMiwgMTEwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjE5LCAxNzksIDIxOSwgMjExLCAyNTIsIDYyLCAKKyAgICAyNDEsIDc4LCAxNiwgMjQ3LCAyMzQsIDIxNCwgMjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTksIDIxMiwgMjQ3LCAxNjIsIAorICAgIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAxMjAsIDIxMiwgMjAyLCAyNDUsIDE2NiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDI0NSwgCisgICAgMjM5LCAyNDUsIDE2NiwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxNCwgMjcsIDI0NSwgMTY2LCAyNTIsIDYyLCAyNDEsIDc4LCAKKyAgICAxNiwgMjMyLCAxMTEsIDI0NSwgMTY2LCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjQ3LCAyMzQsIDI0NSwgMTY2LCAyNTIsIAorICAgIDYyLCAyNDEsIDc4LCAxNiwgMTMwLCAyMTUsIDE1NiwgMjE0LCAzLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgNDcsIDIxNSwgCisgICAgMTU2LCAyMTQsIDMsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTEsIDE4MSwgMjQ1LCAxNjYsIDI1MiwgNjIsIDI0MSwgNzgsIAorICAgIDE2LCAyMzksIDIzMCwgMjQ1LCAxNjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyNDcsIDE1NiwgMTM0LCAyNTIsIDYyLCAKKyAgICAyNDEsIDc4LCAxNiwgMjQ1LCAyMzksIDIxMSwgMTgwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjA1LCAzMCwgMjUyLCA2MiwgCisgICAgMjQxLCA3OCwgMTYsIDIxNCwgNCwgMjExLCAxODAsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMTYsIDUzLCAyMDksIDIyNiwgCisgICAgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOSwgMjEyLCAyMjQsIDQzLCAyNDIsIDI0MywgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIAorICAgIDIxOSwgMjEyLCAyMTksIDE5NSwgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDEzMCwgMjQ4LCAyMDAsIDIxMSwgMTgwLCAyNTIsIAorICAgIDYyLCAyNDEsIDc4LCAxNiwgMTIwLCAyNDgsIDIwMCwgMjExLCAxODAsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMzIsIDI0OSwgCisgICAgMjUyLCA2MiwgMjQxLCA3OCwgMTYsIDIxOCwgMjEwLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjIyLCAxNzAsIDI1MiwgNjIsIAorICAgIDI0MSwgNzgsIDE2LCAyNTIsIDE0NSwgMjA5LCAyMjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyNDIsIDI0NSwgMjA5LCAKKyAgICAyMjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMzIsIDI1MCwgMjA5LCAyMjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyMjIsIAorICAgIDE3MSwgMjA5LCAyMjYsIDI1MiwgNjIsIDI0MSwgNzgsIDE2LCAyNTIsIDE0NCwgMjI0LCA0MywgMjQ4LCA4MSwgODMsIDQ4LCAKKyAgICAyNTIsIDEwOSwgMiwgMTczLCAyMDUsIDMxLCA0NSwgMjE1LCAxMjcsIDIyMiwgMTQyLCAyNDksIDE0MCwgMjUwLCAyOSwgOTMsIAorICAgIDc5LCAyMjksIDIwNiwgMiwgMjI2LCAyNDcsIDI0NSwgMjMsIDIzMywgMjcsIDkzLCAyNDcsIDExNCwgMjA5LCAyMjQsIDkzLCAKKyAgICAyNDUsIDk2LCAyMDksIDIyNCwgOTMsIDI0MywgNDUsIDkzLCAyNDcsIDE0NiwgOTMsIDU5LCA0OSwgMiwgMjQ4LCAxMjksIAorICAgIDc5LCAyMjksIDIwNSwgMjQzLCAxOSwgOTMsIDI1MiwgMTM5LCAyMzEsIDE3NSwgOTMsIDIzOSwgNDUsIDkzLCAzOSwgMTk0LCAKKyAgICAyNTAsIDEyOSwgMiwgMjI0LCA0MCwgMzksIDIxMSwgNTIsIDI0NCwgOCwgMjQ5LCAxMTEsIDI0NywgMjM0LCAyLCAyMjQsIAorICAgIDQ1LCA0NSwgMjA5LCAyMjIsIDkzLCAyMjYsIDE1NSwgOTMsIDIzNywgMjM1LCA5MywgMjIyLCAxNDEsIDIzOSwgMTU0LCA5MywgCisgICAgMjIyLCAxNDEsIDIzMCwgMTU3LCA5MywgMjIxLCAxOTksIDkzLCAyMjEsIDE5OCwgOTMsIDI0NSwgMTA0LCAyNDcsIDI0LCAKKyAgICAxNiwgMjQxLCAxMzYsIDEwNSwgMjE0LCAxODUsIDkzLCAyNTIsIDYyLCAyNDEsIDc4LCAxNiwgMjE5LCAyMTEsIDI0NiwgMiwgCisgICAgMjE2LCA0MCwgMjMxLCAxNzUsIDkzLCAyMjAsIDEyOSwgMjIyLCAzNywgMjI1LCA4MiwgMjIyLCAzNywgMjIwLCAxMjUsIAorICAgIDIxNywgOTQsIDkzLCAyNDcsIDIwOSwgMjE3LCA5NCwgOTMsIDQ3LCAyMjEsIDIxNywgMjA5LCAyMDMsIDEwOSwgNDcsIDIyMSwgCisgICAgMjE3LCAyNDIsIDE1NywgNDcsIDIyMSwgMjE3LCAyMjksIDkyLCAxMDksIDQ4LCAyMjEsIDIxNywgMjA5LCAyMDMsIDEwOSwgCisgICAgNDgsIDIyMSwgMjE3LCAyNDIsIDE1NywgNDgsIDIyMSwgMjE3LCAyMjksIDkyLCAxMDksIDQ3LCA0OSwgMjQ5LCAxMzQsIAorICAgIDIwOSwgMjAzLCAyNDcsIDkxLCA0NywgNDksIDI0OSwgMTM0LCAyNDIsIDE1NywgNDcsIDQ5LCAyNDksIDEzNCwgMjI5LCA5MiwgCisgICAgMjQ3LCA5MSwgNDgsIDQ5LCAyNDksIDEzNCwgMjA5LCAyMDMsIDI0NywgOTEsIDQ4LCA0OSwgMjQ5LCAxMzQsIDI0MiwgMTU3LCAKKyAgICA0OCwgNDksIDI0OSwgMTM0LCAyMjksIDkyLCAyNDcsIDkxLCA0NywgMjQ3LCAyNiwgMjQ5LCAxMzQsIDIwOSwgMjAzLCAxMDksIAorICAgIDQ3LCAyNDcsIDI2LCAyNDksIDEzNCwgMjI2LCAyNDcsIDIyMSwgNDUsIDQ3LCAyNDcsIDI2LCAyNDksIDEzNCwgMjI5LCA5MiwgCisgICAgMTA5LCAyNDcsIDI2LCAyNDksIDEzNCwgMjQyLCAxNTcsIDQ4LCAyNDcsIDI2LCAyNDksIDEzNCwgMjA5LCAyMDMsIDEwOSwgCisgICAgNDgsIDI0NywgMjYsIDI0OSwgMTM0LCAyMjYsIDI0NywgMjIxLCA0NSwgNDgsIDI0NywgMjYsIDI0OSwgMTM0LCAyMjksIDkyLCAKKyAgICAxMDksIDIzMywgMjIsIDI0MiwgMTU3LCAxOTQsIDIyOSwgMjA2LCAyNDIsIDE1NywgMjA5LCAyMDMsIDQ3LCAyMjIsIDEyMywgCisgICAgMjI5LCA5MiwgNDgsIDI0NywgMjYsIDI0OSwgMTM0LCAyMTcsIDc2LCAyMDksIDIwMywgNDgsIDIyMiwgMTIzLCAyMjksIDkyLCAKKyAgICA0NywgMjQ3LCAyNiwgMjQ5LCAxMzQsIDIxNywgNzYsIDIxMywgMTU4LCAyMTEsIDEwMSwgMjEzLCAxNTgsIDI0OSwgMTUzLCAKKyAgICAyMTEsIDEwMiwgNDksIDE0NSwgMjQ5LCAxNTQsIDQ5LCAxNDUsIDI0OSwgMTU0LCA0OSwgMjQ5LCAxMzQsIDEzMSwgMjExLCAKKyAgICAxMDIsIDQ5LCAxNDUsIDM3LCAxNiwgMjQ5LCAxNTMsIDQ3LCA3OSwgOTYsIDIyOSwgMjA1LCA0OCwgNzksIDk2LCAyMjksIAorICAgIDIwNSwgMTk0LCAyMTcsIDExMCwgMjI5LCAyMDQsIDE5NCwgMjE3LCAxMTAsIDIyOSwgMjAzLCAxOTQsIDIxNywgMTEwLCAKKyAgICAyMjksIDIwMiwgMTk0LCAyMTcsIDExMCwgMjI5LCAyMDEsIDI0NSwgMjE5LCAxNiwgMTQ3LCA3OSwgMjMsIDIxMSwgMTAyLCAKKyAgICAyMTgsIDE2NywgMjQ1LCAyMTksIDE2LCAxNDcsIDc5LCAyMywgMjQ5LCAxNTQsIDIxOCwgMTY3LCAyNDUsIDIxOSwgMTYsIAorICAgIDE0NywgNzksIDIsIDI0NywgMjMzLCAyNDUsIDIxOSwgMTYsIDE0NywgMTMwLCAyMywgMTk0LCAyLCAyNDcsIDIzMywgMjQ1LCAKKyAgICAyMTksIDE2LCAxNDcsIDEyMCwgMjMsIDE5NCwgMiwgMjQ3LCAyMzMsIDI0NSwgMjE5LCAxNiwgMTQ3LCA3OSwgMiwgMjExLCAKKyAgICA1MSwgMjQ1LCAyMTksIDE2LCAxNDcsIDEzMCwgMjMsIDE5NCwgMiwgMjExLCA1MSwgMjQ1LCAyMTksIDE2LCAxNDcsIDEyMCwgCisgICAgMjMsIDE5NCwgMiwgMjExLCA1MSwgMjQ1LCAyMTksIDE2LCAxNDcsIDc5LCAyMywgMjA3LCA2NCwgMjQ1LCAyMTksIDE2LCAKKyAgICAxNDcsIDEzMCwgMjMsIDE5NCwgMiwgMjA3LCA2NCwgMjQ1LCAyMTksIDE2LCAxNDcsIDEyMCwgMjMsIDE5NCwgMiwgMjA3LCAKKyAgICA2NCwgMjQ1LCAyMTksIDE2LCAxNDcsIDEzMCwgMjMsIDIzOCwgMTIxLCAyNDUsIDIxOSwgMTYsIDE0NywgMTIwLCAyMywgCisgICAgMjM4LCAxMjEsIDI0NSwgMjE5LCAxNiwgMTQ3LCA3OSwgMjMsIDIxMSwgMTAyLCAyMzAsIDQ2LCAyNDUsIDIxOSwgMTYsIAorICAgIDE0NywgNzksIDIzLCAyNDksIDE1NCwgMjMwLCA0NiwgNDksIDI0MSwgMTQ4LCAyMTgsIDIyOSwgOTMsIDI0MywgNzcsIDkzLCAKKyAgICA3OSwgMjI5LCAyMDYsIDI0MiwgMTU3LCAyMjcsIDU3LCAyNDksIDEyMiwgMjI3LCA1NywgMTUyLCAxMzEsIDIxNSwgMTQzLCAKKyAgICAyMjcsIDU3LCAyMTUsIDE0NCwgMTMxLCAyMjksIDEyNSwgMjI3LCA1NywgMTUyLCAxMzEsIDExOCwgMjE1LCAxMjksIDIyNywgCisgICAgNTcsIDExOCwgMjE1LCAxMzAsIDEzMSwgMjI5LCAxMjUsIDIyNywgNTcsIDExOCwgMjE1LCAxMzAsIDIzMiwgMTE4LCAyMjcsIAorICAgIDU3LCAyMTEsIDMzLCAyMjcsIDU3LCAyMTIsIDcyLCAyMjcsIDU3LCAyMjEsIDEzOCwgMjQzLCAxMjEsIDIzOSwgMjIyLCAKKyAgICAyNDEsIDcyLCAyMTEsIDEwMiwgMjIxLCAyMTYsIDI0OSwgMTU0LCAyMjEsIDIxNiwgMjExLCAxMDIsIDI0NywgMjYsIDE0NSwgCisgICAgMjQ5LCAxNTQsIDI0NywgMjYsIDE0NSwgMjExLCAxMDIsIDIxMSwgOTMsIDIxNSwgMjA0LCAxNDUsIDI0OSwgMTU0LCAyMTEsIAorICAgIDkzLCAyMTUsIDIwNCwgMTQ1LCA1OSwgMjExLCA2NSwgMjUwLCAxNywgMjE4LCAxNDksIDIsIDI0NywgMjMzLCAyMTMsIDI0MiwgCisgICAgMjQxLCAxODYsIDI1MywgMjUsIDI0NywgMjMsIDI0MywgNjIsIDIzMywgNywgMjQ2LCAyLCAyNDIsIDE2MSwgOTMsIDYwLCAKKyAgICAyMTgsIDE2MiwgNTAsIDIxMSwgNTEsIDYwLCAyMzAsIDQxLCA1MCwgMjExLCA1MSwgNjAsIDIwOSwgMjA1LCA1MCwgMjExLCAKKyAgICA1MSwgNjAsIDI0NCwgNywgNTAsIDIxMSwgNTEsIDYwLCAyMTgsIDE2MiwgNTAsIDIxMSwgNTIsIDIsIDc5LCAxMzQsIDYwLCAKKyAgICAyMzAsIDQxLCA1MCwgMjExLCA1MiwgMiwgNzksIDEzNCwgNjAsIDIxOCwgMTYyLCAyMTEsIDUyLCAyLCA1MCwgNzksIDEzNCwgCisgICAgMjUyLCAxNzYsIDI0NywgMTk1LCAyMTMsIDI0OCwgMjExLCAxNzYsIDI0NywgMTk1LCAyMzgsIDU3LCAyLCAyNDEsIDE3MCwgCisgICAgMjE3LCAxNDksIDYwLCAyMjcsIDEwOSwgMjMwLCA0MSwgMjExLCA1MSwgNjAsIDIyNywgMTA5LCAyMTgsIDE2MiwgMjExLCAKKyAgICA1MSwgNjAsIDIyNywgMTA5LCAyMDksIDIwNSwgMjExLCA1MSwgNjAsIDIyNywgMTA5LCAyNDQsIDcsIDIxMSwgNTEsIDUwLCAKKyAgICA3OSwgMTM0LCA2MCwgNDksIDMzLCAyMTMsIDI1MSwgNjAsIDI0NywgMjM0LCAzMywgMjE5LCA0MiwgMTYsIDMzLCAyMjMsIAorICAgIDE4MSwgMTYsIDMzLCAyMTQsIDIyLCA3MywgMjM5LCA2NiwgMTYsIDMzLCAyMTQsIDIyLCA3MywgMjEyLCA2MCwgMTYsIDMzLCAKKyAgICAyNDMsIDM0LCA3MywgMjEyLCA2MCwgMTYsIDMzLCAyNDMsIDM0LCA3MywgMjExLCA2OSwgMTYsIDMzLCAyNDMsIDIxLCAxNiwgCisgICAgMzMsIDI1MywgMTMsIDE2LCAzMywgMjUwLCAyOCwgMTYsIDMzLCAyNTAsIDE3MCwgMTYsIDMzLCAxOTQsIDIxMiwgMjAzLCAKKyAgICAxNiwgMzMsIDIyOSwgMjA2LCAyNDIsIDE5LCAxNiwgMzMsIDc5LCAyMTIsIDIwMywgMTYsIDMzLCAyNDEsIDEzNiwgMjQyLCAKKyAgICAxOSwgMTYsIDMzLCAyNDgsIDE5MSwgMjE4LCAyMjgsIDE2LCAzMywgMjE1LCAxNzksIDIyMiwgOTMsIDE2LCAzMywgMjE1LCAKKyAgICAxNzksIDIzMywgNjgsIDE2LCAzMywgMjQ2LCA3MywgMjI5LCAxOTYsIDI0MiwgMjE3LCAxNiwgMzMsIDI0NSwgMTk5LCAyNDcsIAorICAgIDEwOSwgMTAyLCAxNiwgMzMsIDI0NSwgMTk5LCAyNDcsIDEwOSwgMTA1LCAxNiwgMzMsIDI0NSwgMTk5LCAyNDcsIDEwOSwgCisgICAgMTQyLCAxNiwgMzMsIDI0NSwgMTk5LCAyNDcsIDEwOSwgMTM5LCAxNiwgMzMsIDE3MCwgMjUzLCAxMywgMTYsIDMzLCAyMTMsIAorICAgIDM2LCAyMzMsIDEzMSwgMTYsIDMzLCAyNDMsIDM0LCA3MywgMjExLCA3MCwgMjQ5LCAxOTMsIDE2LCAzMywgMjQ4LCAyMjQsIAorICAgIDE2LCAzMywgMjQzLCAzNCwgNzMsIDIyNywgMTA4LCAxNiwgMzMsIDIxMywgMTc5LCAxNiwgMzMsIDI0MiwgMjE3LCAxNiwgCisgICAgMzMsIDI0MSwgMjM2LCAyMTYsIDM5LCAxNiwgMzMsIDIzOSwgMjIxLCAyMTYsIDM5LCAxNiwgMzMsIDIxOSwgNDMsIDIxNiwgCisgICAgMzksIDE2LCAzMywgMjA5LCAyMTcsIDIxNiwgMzksIDE2LCAzMywgMjE0LCAxNTMsIDE2LCAzMywgMjQ1LCAyMzYsIDI0OSwgCisgICAgMTk2LCA5MywgMjIyLCAxNDIsIDI0OSwgMTQwLCAxNiwgMzMsIDIyNSwgODUsIDE2LCAzMywgMjQ1LCAyMzcsIDI0MSwgMTM2LCAKKyAgICAxMDUsIDE2LCAzMywgMjEzLCAxODAsIDI0MSwgMTM2LCAxMDUsIDIyMiwgMjE1LCAxMDksIDIyMiwgMjE1LCAyNDgsIDEwNSwgCisgICAgMjIyLCAyMTUsIDI0MSwgMTM5LCAyMjIsIDIxNSwgMjMzLCAyLCAyNDEsIDEzOSwgMjIyLCAyMTUsIDI1MCwgMjUsIDI0OSwgCisgICAgOTgsIDIyMiwgMjE1LCAyNDksIDE0NywgMjExLCAyMDMsIDIyMiwgMjE1LCAyNDksIDEzMSwgMjUwLCAxMzQsIDIzNywgMTcyLCAKKyAgICAyMjIsIDIxNSwgMjUyLCAxMjcsIDczLCAyNDgsIDgwLCAyMjIsIDIxNSwgMjQ2LCA3OCwgMjIyLCAyMTUsIDI0NywgMTMsIAorICAgIDI1MywgMTcsIDIyMywgMTc5LCAyMjIsIDIxNSwgNTAsIDI1MCwgMTcxLCAzOSwgMTgsIDEwMiwgMzksIDE4LCAxMDUsIDM5LCAKKyAgICAxOCwgMTQyLCAzOSwgMTgsIDEzOSwgMzksIDE4LCAxNjgsIDM5LCAxOCwgMTg0LCAzOSwgMTgsIDE5NSwgMzksIDE4LCAxOTMsIAorICAgIDM5LCAxOCwgMjAwLCAzOSwgNDMsIDIxMiwgOTgsIDM5LCA0MywgMjQzLCA1OCwgMzksIDQzLCAyMTAsIDEyNiwgMzksIDQzLCAKKyAgICAyMTIsIDUsIDM5LCA0MywgMjQxLCAxMTksIDM5LCA0MywgMjQxLCAyNDcsIDM5LCA0MywgMjE1LCA0LCAzOSwgNDMsIDIxNiwgCisgICAgMjAsIDM5LCA0MywgMjQzLCA4NSwgMzksIDQzLCAyMjQsIDE5MiwgMzksIDQzLCAyMTAsIDEyMywgOTcsIDE4LCAxMDIsIDk3LCAKKyAgICAxOCwgMTA1LCA5NywgMTgsIDE0MiwgOTcsIDE4LCAxMzksIDk3LCAxOCwgMTY4LCA5NywgMTgsIDE4NCwgOTcsIDE4LCAxOTUsIAorICAgIDk3LCAxOCwgMTkzLCA5NywgMTgsIDIwMCwgOTcsIDQzLCAyMTIsIDk4LCA5NywgNDMsIDI0MywgNTgsIDk3LCA0MywgMjEwLCAKKyAgICAxMjYsIDk3LCA0MywgMjEyLCA1LCA5NywgNDMsIDI0MSwgMTE5LCA5NywgNDMsIDI0MSwgMjQ3LCA5NywgNDMsIDIxNSwgNCwgCisgICAgOTcsIDQzLCAyMTYsIDIwLCA5NywgNDMsIDI0MywgODUsIDk3LCA0MywgMjI0LCAxOTIsIDk3LCA0MywgMjEwLCAxMjMsIDE4LCAKKyAgICAxMTksIDI0MSwgODIsIDIxMywgMjUxLCAxOCwgMTE4LCAyNDEsIDgyLCAyMTMsIDI1MSwgMTgsIDEyOSwgMjQxLCA4MiwgCisgICAgMjEzLCAyNTEsIDE4LCAyNDEsIDEyNSwgMjQxLCA4MiwgMjEzLCAyNTEsIDE4LCAyNDEsIDIwNCwgMjQxLCA4MiwgMjEzLCAKKyAgICAyNTEsIDE4LCAyMTUsIDEwLCAyNDEsIDgyLCAyMTMsIDI1MSwgMTgsIDIxNiwgMjMsIDI0MSwgODIsIDIxMywgMjUxLCAxOCwgCisgICAgMjQzLCA4OCwgMjQxLCA4MiwgMjEzLCAyNTEsIDE4LCAyMjQsIDE5NSwgMjQxLCA4MiwgMjEzLCAyNTEsIDQzLCAyMTIsIDk5LCAKKyAgICAyNDEsIDgyLCAyMTMsIDI1MSwgNDMsIDI0MywgNTksIDI0MSwgODIsIDIxMywgMjUxLCA0MywgMjEwLCAxMjcsIDI0MSwgODIsIAorICAgIDIxMywgMjUxLCA0MywgMjEyLCA2LCAyNDEsIDgyLCAyMTMsIDI1MSwgNDMsIDI0MSwgMTIwLCAyNDEsIDgyLCAyMTMsIDI1MSwgCisgICAgNDMsIDI0MSwgMjQ4LCAyNDEsIDgyLCAyMTMsIDI1MSwgNDMsIDIxNSwgNSwgMjQxLCA4MiwgMjEzLCAyNTEsIDQzLCAyMTYsIAorICAgIDIxLCAyNDEsIDgyLCAyMTMsIDI1MSwgNDMsIDI0MywgODYsIDI0MSwgODIsIDIxMywgMjUxLCA0MywgMjI0LCAxOTMsIDI0MSwgCisgICAgODIsIDIxMywgMjUxLCA0MywgMjEwLCAxMjQsIDI0MSwgODIsIDIxMywgMjUxLCA5NywgNywgNSwgMSwgNjIsIDk3LCA3LCA1LCAKKyAgICAxLCAyNTEsIDE1MCwgOTcsIDcsIDUsIDEsIDI0OSwgMzQsIDk3LCA3LCA1LCAxLCAyNDYsIDI0MCwgOTcsIDcsIDUsIDEsIAorICAgIDc1LCA5NywgNywgNSwgMSwgMjQyLCAxMzksIDk3LCA3LCA1LCAxLCAyNDEsIDU1LCA5NywgNywgNSwgMSwgMjM5LCAxNTUsIAorICAgIDk3LCA3LCA1LCAxLCA3NCwgOTcsIDcsIDUsIDEsIDIzMiwgMjAzLCA5NywgNywgNSwgMSwgMjMyLCA3NiwgOTcsIDcsIDUsIAorICAgIDEsIDE0OSwgOTcsIDcsIDUsIDEsIDIyOSwgMjgsIDk3LCA3LCA1LCAxLCAyMjYsIDMzLCA5NywgNywgNSwgMSwgNzYsIDk3LCAKKyAgICA3LCA1LCAxLCAyMjIsIDY3LCA5NywgNywgNSwgMSwgMjIwLCAyNywgOTcsIDcsIDUsIDEsIDEzNywgOTcsIDcsIDUsIDEsIAorICAgIDE4MiwgOTcsIDcsIDUsIDEsIDIxMywgMTAsIDk3LCA3LCA1LCAxLCA3MSwgOTcsIDcsIDUsIDEsIDIwOSwgMTQ4LCA5NywgNywgCisgICAgNSwgMSwgMjA3LCAxMjksIDk3LCA3LCA1LCAxLCAyMDYsIDE5NSwgOTcsIDcsIDUsIDEsIDIwNiwgMTIzLCA5NywgNywgNSwgCisgICAgMSwgMjA1LCAxNTksIDM5LCA3LCA2LCAxLCA2MiwgMzksIDcsIDYsIDEsIDI1MSwgMTUwLCAzOSwgNywgNiwgMSwgMjQ5LCAKKyAgICAzNCwgMzksIDcsIDYsIDEsIDI0NiwgMjQwLCAzOSwgNywgNiwgMSwgNzUsIDM5LCA3LCA2LCAxLCAyNDIsIDEzOSwgMzksIDcsIAorICAgIDYsIDEsIDI0MSwgNTUsIDM5LCA3LCA2LCAxLCAyMzksIDE1NSwgMzksIDcsIDYsIDEsIDc0LCAzOSwgNywgNiwgMSwgMjMyLCAKKyAgICAyMDMsIDM5LCA3LCA2LCAxLCAyMzIsIDc2LCAzOSwgNywgNiwgMSwgMTQ5LCAzOSwgNywgNiwgMSwgMjI5LCAyOCwgMzksIDcsIAorICAgIDYsIDEsIDIyNiwgMzMsIDM5LCA3LCA2LCAxLCA3NiwgMzksIDcsIDYsIDEsIDIyMiwgNjcsIDM5LCA3LCA2LCAxLCAyMjAsIAorICAgIDI3LCAzOSwgNywgNiwgMSwgMTM3LCAzOSwgNywgNiwgMSwgMTgyLCAzOSwgNywgNiwgMSwgMjEzLCAxMCwgMzksIDcsIDYsIAorICAgIDEsIDcxLCAzOSwgNywgNiwgMSwgMjA5LCAxNDgsIDM5LCA3LCA2LCAxLCAyMDcsIDEyOSwgMzksIDcsIDYsIDEsIDIwNiwgCisgICAgMTk1LCAzOSwgNywgNiwgMSwgMjA2LCAxMjMsIDM5LCA3LCA2LCAxLCAyMDUsIDE1OSwgMzksIDcsIDUsIDEsIDYyLCAzOSwgCisgICAgNywgNSwgMSwgMjUxLCAxNTAsIDM5LCA3LCA1LCAxLCAyNDksIDM0LCAzOSwgNywgNSwgMSwgMjQ2LCAyNDAsIDM5LCA3LCA1LCAKKyAgICAxLCA3NSwgMzksIDcsIDUsIDEsIDI0MiwgMTM5LCAzOSwgNywgNSwgMSwgMjQxLCA1NSwgMzksIDcsIDUsIDEsIDIzOSwgCisgICAgMTU1LCAzOSwgNywgNSwgMSwgNzQsIDM5LCA3LCA1LCAxLCAyMzIsIDIwMywgMzksIDcsIDUsIDEsIDIzMiwgNzYsIDM5LCA3LCAKKyAgICA1LCAxLCAxNDksIDM5LCA3LCA1LCAxLCAyMjksIDI4LCAzOSwgNywgNSwgMSwgMjI2LCAzMywgMzksIDcsIDUsIDEsIDc2LCAKKyAgICAzOSwgNywgNSwgMSwgMjIyLCA2NywgMzksIDcsIDUsIDEsIDIyMCwgMjcsIDM5LCA3LCA1LCAxLCAxMzcsIDM5LCA3LCA1LCAKKyAgICAxLCAxODIsIDM5LCA3LCA1LCAxLCAyMTMsIDEwLCAzOSwgNywgNSwgMSwgNzEsIDM5LCA3LCA1LCAxLCAyMDksIDE0OCwgMzksIAorICAgIDcsIDUsIDEsIDIwNywgMTI5LCAzOSwgNywgNSwgMSwgMjA2LCAxOTUsIDM5LCA3LCA1LCAxLCAyMDYsIDEyMywgMzksIDcsIAorICAgIDUsIDEsIDIwNSwgMTU5LCAzOSwgMTgsIDIwNSwgODUsIDE3MCwgMzksIDQzLCAyNDMsIDU4LCAxNzAsIDM5LCA0MywgMjEwLCAKKyAgICAxMjYsIDE3MCwgMzksIDQzLCAyMTIsIDUsIDE3MCwgMzksIDQzLCAyNDEsIDExOSwgMTcwLCAzOSwgNDMsIDI0MSwgMjQ3LCAKKyAgICAxNzAsIDM5LCA0MywgMjE1LCA0LCAxNzAsIDM5LCA0MywgMjE2LCAyMCwgMTcwLCAzOSwgNDMsIDI0MywgODUsIDE3MCwgMzksIAorICAgIDQzLCAyMjQsIDE5MiwgMTcwLCAzOSwgNDMsIDIxMCwgMTIzLCA1MCwgMzksIDE4LCAxMDIsIDUwLCAzOSwgMTgsIDEwNSwgCisgICAgNTAsIDM5LCAxOCwgMTQyLCA1MCwgMzksIDE4LCAxMzksIDUwLCAzOSwgMTgsIDE2OCwgNTAsIDM5LCAxOCwgMTg0LCA1MCwgCisgICAgMzksIDE4LCAxOTUsIDUwLCAzOSwgMTgsIDE5MywgNTAsIDM5LCAxOCwgMjAwLCA1MCwgMzksIDQzLCAyMTIsIDk4LCAxNzAsIAorICAgIDM5LCAxOCwgMjA1LCA4NSwgOTYsIDExMCwgMTQ3LCAyMzgsIDEyMSwgOTYsIDExMCwgNzcsIDIzOCwgMTIxLCA5NiwgMTEwLCAKKyAgICAxNDcsIDIwOSwgMjIsIDk2LCAxMTAsIDc3LCAyMDksIDIyLCA5NiwgMTEwLCAxNDcsIDIxMSwgMzYsIDI0NiwgNzksIDIzOCwgCisgICAgMTIxLCA5NiwgMTEwLCA3NywgMjExLCAzNiwgMjQ2LCA3OSwgMjM4LCAxMjEsIDk2LCAxMTAsIDE0NywgMjExLCAzNiwgMjQ2LCAKKyAgICA3OSwgMjA5LCAyMiwgOTYsIDExMCwgNzcsIDIxMSwgMzYsIDI0NiwgNzksIDIwOSwgMjIsIDk2LCAxMTAsIDE0NywgMjE5LCAKKyAgICAyMDcsIDI0NiwgNzksIDIzOCwgMTIxLCA5NiwgMTEwLCA3NywgMjE5LCAyMDcsIDI0NiwgNzksIDIzOCwgMTIxLCA5NiwgCisgICAgMTEwLCAxNDcsIDIxOSwgMjA3LCAyNDYsIDc5LCAyMDksIDIyLCA5NiwgMTEwLCA3NywgMjE5LCAyMDcsIDI0NiwgNzksIAorICAgIDIwOSwgMjIsIDk2LCAxMTAsIDE0NywgMTMwLCAyMywgMjE4LCAxNjcsIDk2LCAxMTAsIDEzMCwgMTQ3LCAyMywgNDgsIDIzOSwgCisgICAgNTQsIDk2LCAxMTAsIDEzMCwgNzcsIDIzLCA0OCwgMjI5LCAyMjMsIDk2LCAxMTAsIDc3LCAxMzAsIDIzLCAyMTgsIDE2NywgCisgICAgOTYsIDExMCwgMTQ3LCAxMzAsIDIzLCAyMzAsIDQ2LCA5NiwgMTEwLCAxMzAsIDE0NywgMjMsIDQ3LCAyMzksIDU0LCA5NiwgCisgICAgMTEwLCAxMzAsIDc3LCAyMywgNDcsIDIyOSwgMjIzLCA5NiwgMTEwLCA3NywgMTMwLCAyMywgMjMwLCA0NiwgOTYsIDExMCwgCisgICAgMTQ3LCAxMjAsIDIzLCAyMTgsIDE2NywgOTYsIDExMCwgMTIwLCAxNDcsIDIzLCA0OCwgMjM5LCA1NCwgOTYsIDExMCwgMTIwLCAKKyAgICA3NywgMjMsIDQ4LCAyMjksIDIyMywgOTYsIDExMCwgNzcsIDEyMCwgMjMsIDIxOCwgMTY3LCA5NiwgMTEwLCAxNDcsIDEyMCwgCisgICAgMjMsIDIzMCwgNDYsIDk2LCAxMTAsIDEyMCwgMTQ3LCAyMywgNDcsIDIzOSwgNTQsIDk2LCAxMTAsIDEyMCwgNzcsIDIzLCAKKyAgICA0NywgMjI5LCAyMjMsIDk2LCAxMTAsIDc3LCAxMjAsIDIzLCAyMzAsIDQ2LCA5NiwgMTEwLCAxNDcsIDc5LCAyMywgMjE4LCAKKyAgICAxNjcsIDk2LCAxMTAsIDc5LCAxNDcsIDIzLCA0OCwgMjM5LCA1NCwgOTYsIDExMCwgMTIwLCA3NywgMjMsIDQ4LCAxMzAsIAorICAgIDIyOSwgMjIzLCA5NiwgMTEwLCAxMzAsIDc3LCAyMywgNDgsIDEyMCwgMjI5LCAyMjMsIDk2LCAxMTAsIDc5LCA3NywgMjMsIAorICAgIDQ4LCAyMjksIDIyMywgOTYsIDExMCwgMTMwLCAxNDcsIDIzLCA0OCwgMTIwLCAyMzksIDU0LCA5NiwgMTEwLCAxMjAsIDE0NywgCisgICAgMjMsIDQ4LCAxMzAsIDIzOSwgNTQsIDk2LCAxMTAsIDc3LCA3OSwgMjMsIDIxOCwgMTY3LCA5NiwgMTEwLCAxNDcsIDc5LCAKKyAgICAyMywgMjMwLCA0NiwgOTYsIDExMCwgNzksIDE0NywgMjMsIDQ3LCAyMzksIDU0LCA5NiwgMTEwLCAxMjAsIDc3LCAyMywgNDcsIAorICAgIDEzMCwgMjI5LCAyMjMsIDk2LCAxMTAsIDEzMCwgNzcsIDIzLCA0NywgMTIwLCAyMjksIDIyMywgOTYsIDExMCwgNzksIDc3LCAKKyAgICAyMywgNDcsIDIyOSwgMjIzLCA5NiwgMTEwLCAxMzAsIDE0NywgMjMsIDQ3LCAxMjAsIDIzOSwgNTQsIDk2LCAxMTAsIDEyMCwgCisgICAgMTQ3LCAyMywgNDcsIDEzMCwgMjM5LCA1NCwgOTYsIDExMCwgNzcsIDc5LCAyMywgMjMwLCA0NiwgOTYsIDExMCwgMTQ3LCAKKyAgICAxMzAsIDIzLCAyMzgsIDEyMSwgOTYsIDExMCwgNDcsIDc3LCAyMywgNDgsIDEzMCwgMjI5LCAyMjMsIDk2LCAxMTAsIDQ4LCAKKyAgICA3NywgMjMsIDQ3LCAxMzAsIDIyOSwgMjIzLCA5NiwgMTEwLCAxMzAsIDE0NywgMjMsIDE5NCwgMjM5LCA1NCwgOTYsIDExMCwgCisgICAgMTMwLCA3NywgMjMsIDE5NCwgMjI5LCAyMjMsIDk2LCAxMTAsIDQ4LCAxNDcsIDIzLCA0NywgMTMwLCAyMzksIDU0LCA5NiwgCisgICAgMTEwLCA0NywgMTQ3LCAyMywgNDgsIDEzMCwgMjM5LCA1NCwgOTYsIDExMCwgNzcsIDEzMCwgMjMsIDIzOCwgMTIxLCA5NiwgCisgICAgMTEwLCAxNDcsIDEyMCwgMjMsIDIzOCwgMTIxLCA5NiwgMTEwLCA0NywgNzcsIDIzLCA0OCwgMTIwLCAyMjksIDIyMywgOTYsIAorICAgIDExMCwgNDgsIDc3LCAyMywgNDcsIDEyMCwgMjI5LCAyMjMsIDk2LCAxMTAsIDEyMCwgMTQ3LCAyMywgMTk0LCAyMzksIDU0LCAKKyAgICA5NiwgMTEwLCAxMjAsIDc3LCAyMywgMTk0LCAyMjksIDIyMywgOTYsIDExMCwgNDgsIDE0NywgMjMsIDQ3LCAxMjAsIDIzOSwgCisgICAgNTQsIDk2LCAxMTAsIDQ3LCAxNDcsIDIzLCA0OCwgMTIwLCAyMzksIDU0LCA5NiwgMTEwLCA3NywgMTIwLCAyMywgMjM4LCAKKyAgICAxMjEsIDk2LCAxMTAsIDE0NywgNzksIDIzLCAyMzgsIDEyMSwgOTYsIDExMCwgNDcsIDc3LCAyMywgNDgsIDc5LCAyMjksIAorICAgIDIyMywgOTYsIDExMCwgNDgsIDc3LCAyMywgNDcsIDc5LCAyMjksIDIyMywgOTYsIDExMCwgNzksIDE0NywgMjMsIDE5NCwgCisgICAgMjM5LCA1NCwgOTYsIDExMCwgMTIwLCA3NywgMjMsIDEzMCwgMTk0LCAyMjksIDIyMywgOTYsIDExMCwgMTMwLCA3NywgMjMsIAorICAgIDEyMCwgMTk0LCAyMjksIDIyMywgOTYsIDExMCwgNzksIDc3LCAyMywgMTk0LCAyMjksIDIyMywgOTYsIDExMCwgNDcsIDEyMCwgCisgICAgNzcsIDIzLCA0OCwgMTMwLCAyMjksIDIyMywgOTYsIDExMCwgNDgsIDEyMCwgNzcsIDIzLCA0NywgMTMwLCAyMjksIDIyMywgCisgICAgOTYsIDExMCwgNDcsIDEzMCwgNzcsIDIzLCA0OCwgMTIwLCAyMjksIDIyMywgOTYsIDExMCwgNDgsIDEzMCwgNzcsIDIzLCAKKyAgICA0NywgMTIwLCAyMjksIDIyMywgOTYsIDExMCwgMTMwLCAxNDcsIDIzLCAxMjAsIDE5NCwgMjM5LCA1NCwgOTYsIDExMCwgCisgICAgMTIwLCAxNDcsIDIzLCAxMzAsIDE5NCwgMjM5LCA1NCwgOTYsIDExMCwgNDgsIDE0NywgMjMsIDQ3LCA3OSwgMjM5LCA1NCwgCisgICAgOTYsIDExMCwgNDcsIDE0NywgMjMsIDQ4LCA3OSwgMjM5LCA1NCwgOTYsIDExMCwgNzcsIDc5LCAyMywgMjM4LCAxMjEsIDk2LCAKKyAgICAxMTAsIDE0NywgNTAsIDI0NiwgNzksIDIzOCwgMTIxLCA5NiwgMTEwLCA3NywgNTAsIDI0NiwgNzksIDIzOCwgMTIxLCA5NiwgCisgICAgMTEwLCAxNDcsIDUwLCAyNDYsIDc5LCAyMDksIDIyLCA5NiwgMTEwLCA3NywgNTAsIDI0NiwgNzksIDIwOSwgMjIsIDk2LCAKKyAgICAxMTAsIDUwLCAyMzgsIDEyMSwgOTYsIDExMCwgNTAsIDIwOSwgMjIsIDk2LCAxMTAsIDEzMCwgMjE1LCA0MSwgMjMsIDQ4LCAKKyAgICAyNDQsIDE2LCA5NiwgMTEwLCAxMzAsIDUwLCAyMywgNDgsIDIxNSwgNDAsIDk2LCAxMTAsIDUwLCAxMzAsIDIzLCAyMTgsIAorICAgIDE2NywgOTYsIDExMCwgMTMwLCAyMTUsIDQxLCAyMywgNDcsIDI0NCwgMTYsIDk2LCAxMTAsIDEzMCwgNTAsIDIzLCA0NywgCisgICAgMjE1LCA0MCwgOTYsIDExMCwgNTAsIDEzMCwgMjMsIDIzMCwgNDYsIDk2LCAxMTAsIDEyMCwgMjE1LCA0MSwgMjMsIDQ4LCAKKyAgICAyNDQsIDE2LCA5NiwgMTEwLCAxMjAsIDUwLCAyMywgNDgsIDIxNSwgNDAsIDk2LCAxMTAsIDUwLCAxMjAsIDIzLCAyMTgsIAorICAgIDE2NywgOTYsIDExMCwgMTIwLCAyMTUsIDQxLCAyMywgNDcsIDI0NCwgMTYsIDk2LCAxMTAsIDEyMCwgNTAsIDIzLCA0NywgCisgICAgMjE1LCA0MCwgOTYsIDExMCwgNTAsIDEyMCwgMjMsIDIzMCwgNDYsIDk2LCAxMTAsIDc5LCAyMTUsIDQxLCAyMywgNDgsIAorICAgIDI0NCwgMTYsIDk2LCAxMTAsIDc5LCA1MCwgMjMsIDQ4LCAyMTUsIDQwLCA5NiwgMTEwLCA1MCwgNzksIDIzLCAyMTgsIDE2NywgCisgICAgOTYsIDExMCwgNzksIDIxNSwgNDEsIDIzLCA0NywgMjQ0LCAxNiwgOTYsIDExMCwgNzksIDUwLCAyMywgNDcsIDIxNSwgNDAsIAorICAgIDk2LCAxMTAsIDUwLCA3OSwgMjMsIDIzMCwgNDYsIDk2LCAxMTAsIDEzMCwgMjE1LCA0MSwgMjMsIDE5NCwgMjQ0LCAxNiwgCisgICAgOTYsIDExMCwgMTMwLCA1MCwgMjMsIDE5NCwgMjE1LCA0MCwgOTYsIDExMCwgNTAsIDEzMCwgMjMsIDIzOCwgMTIxLCA5NiwgCisgICAgMTEwLCAxMjAsIDIxNSwgNDEsIDIzLCAxOTQsIDI0NCwgMTYsIDk2LCAxMTAsIDEyMCwgNTAsIDIzLCAxOTQsIDIxNSwgNDAsIAorICAgIDk2LCAxMTAsIDUwLCAxMjAsIDIzLCAyMzgsIDEyMSwgOTYsIDExMCwgNzksIDIxNSwgNDEsIDIzLCAxOTQsIDI0NCwgMTYsIAorICAgIDk2LCAxMTAsIDc5LCA1MCwgMjMsIDE5NCwgMjE1LCA0MCwgOTYsIDExMCwgNTAsIDc5LCAyMywgMjM4LCAxMjEsIDk2LCAKKyAgICAxMTAsIDE0NywgMjUyLCAyMiwgMTMwLCAyMywgMjE4LCAxNjcsIDk2LCAxMTAsIDE0NywgMjUyLCAyMiwgMTMwLCAyMywgCisgICAgMjMwLCA0NiwgOTYsIDExMCwgMTQ3LCAyNTIsIDIyLCAxMjAsIDIzLCAyMzAsIDQ2LCA5NiwgMTEwLCAxNDcsIDI1MiwgMjIsIAorICAgIDEyMCwgMjMsIDIxOCwgMTY3LCA5NiwgMTEwLCAxNDcsIDI0NSwgMTYzLCAyMDksIDIwMywgNDgsIDIxMSwgMTMwLCAyMjksIAorICAgIDkyLCAyMzAsIDQ2LCA5NiwgMTEwLCAxNDcsIDI0NSwgMTYzLCAyMDksIDIwMywgNDcsIDIxMSwgMTMwLCAyMjksIDkyLCAKKyAgICAyMTgsIDE2NywgOTYsIDExMCwgMTQ3LCAyNDUsIDE2MywgMjQ3LCA1OSwgOTYsIDExMCwgMTQ3LCAyMzAsIDQ2LCA5NiwgCisgICAgMTEwLCAxNDcsIDIwOSwgMjA2LCA5NiwgMTEwLCAxNDcsIDIxOCwgMTY3LCA5NiwgMTEwLCAxNDcsIDI0NCwgOCwgOTYsIAorICAgIDExMCwgNzcsIDIzMCwgNDYsIDk2LCAxMTAsIDc3LCAyMDksIDIwNiwgOTYsIDExMCwgNzcsIDIxOCwgMTY3LCA5NiwgMTEwLCAKKyAgICA3NywgMjQ0LCA4LCA5NiwgMTEwLCAxNDcsIDQ3LCAyMywgNzcsIDIxOCwgMTY3LCA5NiwgMTEwLCAxNDcsIDEyMCwgMjMsIAorICAgIDc3LCAyNDQsIDgsIDk2LCAxMTAsIDc3LCA0NywgMjMsIDE0NywgMjE4LCAxNjcsIDk2LCAxMTAsIDc3LCAxMjAsIDIzLCAKKyAgICAxNDcsIDI0NCwgOCwgMjA5LCAyMDMsIDE2MCwgMjQ5LCAxOTMsIDIyOSwgOTIsIDExOSwgMjQzLCA4NCwgMjQ5LCAxOTMsIAorICAgIDIyOSwgOTIsIDExOSwgMjE5LCAyMDUsIDI0OSwgMTkzLCAyMjksIDkyLCAxMjksIDI0MywgODIsIDI0OSwgMTkzLCAyMjksIAorICAgIDkyLCAxNjAsIDI0OSwgMTkzLCAyMjksIDkyLCAyNDEsIDIwNCwgMjQzLCA4MiwgMjQ5LCAxOTMsIDIyOSwgOTIsIDEyOSwgCisgICAgMjE5LCAyMDMsIDI0OSwgMTkzLCAyMjksIDkyLCAyMTYsIDIzLCAyNDMsIDgyLCAyNDksIDE5MywgMjQxLCA4MiwgMjQ5LCAKKyAgICAxOTMsIDQ3LCAyMTYsIDIzLCAyNDMsIDgyLCAyNDksIDE5MywgNDcsIDEyOSwgMjE5LCAyMDMsIDI0OSwgMTkzLCA0NywgCisgICAgMjQxLCAyMDQsIDI0MywgODIsIDI0OSwgMTkzLCA0NywgMTYwLCAyNDksIDE5MywgNDcsIDEyOSwgMjQzLCA4MiwgMjQ5LCAKKyAgICAxOTMsIDQ3LCAxMTksIDIxOSwgMjA1LCAyNDksIDE5MywgNDcsIDExOSwgMjQzLCA4NCwgMjQ5LCAxOTMsIDQ4LCAxNjAsIAorICAgIDI0OSwgMTkzLCAxNDcsIDIxNSwgMjQ4LCAyMjcsIDEwOSwgMjE1LCAyNDgsIDI0NiwgODQsIDIxNSwgMjQ4LCAyMDksIDIwMywgCisgICAgMTE5LCAyNDMsIDg0LCAyNDksIDE5MywgNDgsIDExOSwgMjQzLCA4NCwgMjQ5LCAxOTMsIDIxOSwgMjA5LCAyMjksIDkyLCAKKyAgICAyMzAsIDQ2LCAyMTksIDIwOSwgMjI5LCA5MiwgMjE4LCAxNjcsIDIxOSwgMjA5LCAyMDksIDIwMywgMjMwLCA0NiwgMjE5LCAKKyAgICAyMDksIDIwOSwgMjAzLCA0NywgMjMsIDIyOSwgOTIsIDQ3LCAyMywgMjI5LCA5MiwgMjE4LCAxNjcsIDIxOSwgMjA5LCAyMDksIAorICAgIDIwMywgNDcsIDIzLCAyMjksIDkyLCAyMTgsIDE2NywgMjE5LCAyMDksIDIwOSwgMjAzLCA0NywgMjMsIDIwOSwgMjAzLCA0OCwgCisgICAgMjMsIDIyOSwgOTIsIDIzMCwgNDYsIDIxOSwgMjA5LCAyMDksIDIwMywgNDcsIDIzLCAyMDksIDIwMywgNDgsIDIzLCAyMjksIAorICAgIDkyLCAyMTgsIDE2NywgMjE5LCAyMDksIDIwOSwgMjAzLCAyMTgsIDE2NywgMjE5LCAyMDksIDIwOSwgMjAzLCA0OCwgMjMsIAorICAgIDIyOSwgOTIsIDIzMCwgNDYsIDIxOSwgMjA5LCAyMDksIDIwMywgNDgsIDIzLCAyMjksIDkyLCA0NywgMjMsIDIyOSwgOTIsIAorICAgIDIxOCwgMTY3LCA2MCwgMjE0LCAxMDcsIDU5LCAyMTQsIDEwNywgNTksIDQ5LCAyLCAyMTgsIDkzLCAyNDcsIDkwLCA1OSwgCisgICAgNDksIDI0NywgMTE5LCA2MCwgNSwgMjE0LCAxMDcsIDQ5LCAyLCAxOTQsIDI0MSwgMjM0LCA0OSwgMiwgNzksIDI0MSwgMjM0LCAKKyAgICA0OSwgMiwgMjIyLCAxMDgsIDI0NywgNTUsIDI0MSwgMjM0LCA0OSwgMiwgMjA5LCAyMDMsIDQ3LCAyMTEsIDEzMCwgMjI5LCAKKyAgICA5MiwgNDgsIDI0MSwgMjM0LCA0OSwgMiwgMjA5LCAyMDMsIDQ4LCAyMTEsIDEzMCwgMjI5LCA5MiwgNDcsIDI0MSwgMjM0LCAKKyAgICA0OSwgMiwgMjQ1LCAxNjMsIDI0NywgNTUsIDI0MSwgMjM0LCA2MCwgNSwgMjE0LCAxMDcsIDU5LCA1LCAyMTQsIDEwNywgNjAsIAorICAgIDIxOSwgMzcsIDU5LCAyMTksIDM3LCA2MCwgNzksIDIxOSwgMzcsIDU5LCA3OSwgMjE5LCAzNywgNjAsIDIyMSwgMjIwLCA1OSwgCisgICAgMjIxLCAyMjAsIDYwLCAyMDksIDIwNSwgMjExLCA1MSwgNTksIDIwOSwgMjA1LCAyMTEsIDUxLCA2MCwgMjA5LCAyMDUsIDUsIAorICAgIDIxMSwgNTEsIDU5LCAyMDksIDIwNSwgNSwgMjExLCA1MSwgNjAsIDIxOCwgMTYyLCAyMTEsIDUxLCA1OSwgMjE4LCAxNjIsIAorICAgIDIxMSwgNTEsIDYwLCAyMTgsIDE2MiwgNSwgMjExLCA1MSwgNTksIDIxOCwgMTYyLCA1LCAyMTEsIDUxLCA2MCwgMjE4LCAKKyAgICAxNjIsIDIyMCwgMjAyLCA1OSwgMjE4LCAxNjIsIDIyMCwgMjAyLCA2MCwgMjQ0LCA3LCAyMTEsIDUxLCA1OSwgMjQ0LCA3LCAKKyAgICAyMTEsIDUxLCA2MCwgMjQ0LCA3LCA1LCAyMTEsIDUxLCA1OSwgMjQ0LCA3LCA1LCAyMTEsIDUxLCA2MCwgMjMwLCA0MSwgCisgICAgMjExLCA1MSwgNTksIDIzMCwgNDEsIDIxMSwgNTEsIDYwLCAyMzAsIDQxLCA1LCAyMTEsIDUxLCA1OSwgMjMwLCA0MSwgNSwgCisgICAgMjExLCA1MSwgNjAsIDIzMCwgNDEsIDIyMCwgMjAyLCA1OSwgMjMwLCA0MSwgMjIwLCAyMDIsIDYwLCAyNDUsIDE1NiwgNTksIAorICAgIDI0NSwgMTU2LCA1OSwgMjQ1LCAxNTcsIDI0NywgMTE5LCA2MCwgNSwgMjQ1LCAxNTYsIDI0MSwgMjEyLCAyMjksIDg4LCA1OSwgCisgICAgMjQ3LCAyMzMsIDI0NCwgMjEsIDI0NywgMjMzLCAyNDcsIDIzNCwgMiwgNzksIDI0MSwgMjM0LCAyNDksIDgxLCA2MCwgMjQ3LCAKKyAgICAyMzMsIDI0NywgMjM0LCAyLCA0NywgMTYwLCAyNDksIDIwMiwgMjQ3LCAyMzQsIDIsIDQ4LCAxNjAsIDI0OSwgMjAyLCAyNDcsIAorICAgIDIzNCwgMiwgMjI5LCA5MiwgMTYwLCAyNDksIDIwMiwgMjQ3LCAyMzQsIDIsIDIwOSwgMjAzLCAxNjAsIDI0OSwgMjAyLCAKKyAgICAyNDcsIDIzNCwgMiwgMjA5LCAyMDMsIDQ4LCAyMTksIDIwOSwgMjQ5LCAyMDIsIDI0NywgMjM0LCAyLCAyNTIsIDE1NywgCisgICAgMjQ5LCA1NywgMjA5LCAyMDMsIDQ3LCAyMTksIDIwOSwgMjQ5LCAyMDIsIDQ3LCAxNjAsIDYwLCAyNDcsIDIzMywgNDgsIAorICAgIDE2MCwgNjAsIDI0NywgMjMzLCAyMzMsIDMsIDI0OSwgODUsIDIzMywgMywgNTksIDI0NywgMjMzLCAyMDksIDIwMywgMTYwLCAKKyAgICAyMzMsIDMsIDU5LCAyNDcsIDIzMywgMjI5LCA5MiwgMTYwLCAyMzMsIDMsIDU5LCAyNDcsIDIzMywgMjA5LCAyMDMsIDQ3LCAKKyAgICAyMTksIDIwOSwgMjQ3LCAyMzAsIDI1MiwgMjEsIDIwOSwgMjAzLCA0OCwgMjE5LCAyMDksIDI0NywgMjMwLCAyNTIsIDIxLCAKKyAgICAyMjksIDkyLCA0OCwgMjE5LCAyMDksIDI0NywgMjMwLCAyNTIsIDIxLCAyMjksIDkyLCA0NywgMjE5LCAyMDksIDI0NywgCisgICAgMjMwLCAyNTIsIDIxLCAyMDksIDIwMywgMTYwLCAyNDcsIDIzMywgMjI5LCA5MiwgMTYwLCAyNDcsIDIzMywgNjAsIDIyOSwgCisgICAgOTIsIDQ4LCAyMTEsIDUxLCA2MCwgMjI5LCA5MiwgNDcsIDIxMSwgNTEsIDYwLCAyMDksIDIwMywgNDcsIDIxMSwgNTEsIDYwLCAKKyAgICAyMDksIDIwMywgNDgsIDIxMSwgNTEsIDU5LCAyNDksIDg1LCA0OSwgMiwgNDcsIDE2MCwgMjQ5LCAyMDIsIDQ5LCAyLCA0OCwgCisgICAgMTYwLCAyNDksIDIwMiwgNDksIDIsIDIwOSwgMjAzLCA0NywgMjQ1LCAxNjMsIDE2MCwgMjQ5LCAyMDIsIDQ5LCAyLCAyMjksIAorICAgIDkyLCA0OCwgMjQ1LCAxNjMsIDE2MCwgMjQ5LCAyMDIsIDU5LCA0OSwgMiwgNzksIDI0OSwgMjEzLCAyMjksIDIwNSwgNTksIAorICAgIDIwOSwgMjA1LCAyMTEsIDUyLCAyLCAyNDUsIDIzLCAyMDksIDIwNSwgMjExLCA1MiwgMiwgNDcsIDE2MCwgMjQ5LCAyMDIsIAorICAgIDIwOSwgMjA1LCAyMTEsIDUyLCAyLCA0OCwgMTYwLCAyNDksIDIwMiwgMjMwLCA4NiwgMjQ3LCAyMzMsIDU5LCA0OSwgMiwgCisgICAgMjA5LCAyMDMsIDQ3LCAyMTksIDIwOCwgNTksIDQ5LCAyLCAyMjksIDkyLCA0NywgMjE5LCAyMDgsIDU5LCA0OSwgMiwgMjI5LCAKKyAgICA5MiwgNDgsIDIxOSwgMjA4LCA1OSwgNDksIDIsIDIwOSwgMjAzLCA0OCwgMjE5LCAyMDgsIDU5LCAyNDcsIDIzNCwgMiwgCisgICAgMjA5LCAyMDMsIDQ3LCAyMTksIDIwOCwgNTksIDI0NywgMjM0LCAyLCAyMjksIDkyLCA0NywgMjE5LCAyMDgsIDU5LCAyNDcsIAorICAgIDIzNCwgMiwgMjI5LCA5MiwgNDgsIDIxOSwgMjA4LCA1OSwgMjQ3LCAyMzQsIDIsIDIwOSwgMjAzLCA0OCwgMjE5LCAyMDgsIAorICAgIDIwOSwgMjAzLCA0NywgMjExLCA1MSwgMjA5LCAyMDMsIDQ4LCAyMTEsIDUxLCAyMjksIDkyLCA0NywgMjExLCA1MSwgNTksIAorICAgIDIyNywgMTA5LCAyMTQsIDEwNywgNjAsIDIyNywgMTA5LCAyMTQsIDEwNywgNTksIDIyNywgMTA5LCA1LCAyMTQsIDEwNywgCisgICAgNjAsIDIyNywgMTA5LCA1LCAyMTQsIDEwNywgMjI5LCA5MiwgNDgsIDIxMSwgNTEsIDYwLCAyMTMsIDE1NSwgMiwgMjE5LCAKKyAgICA1NSwgMjQ3LCAxODMsIDIwOSwgMjM4LCAyMTQsIDE5NSwgMjQ3LCAxNTgsIDYwLCAyMTQsIDI2LCA1OSwgMjE0LCAyNiwgCisgICAgMjI5LCAyMjAsIDIxMSwgMjI2LCAyMTMsIDE1NCwgMjUxLCAyMjgsIDIyNCwgNjQsIDI0NSwgMjEwLCAyMjQsIDY0LCAyNDcsIAorICAgIDEyOCwgMjIyLCAxMjgsIDYwLCAyMTIsIDEwNywgNTksIDIxMiwgMTA3LCAyNTAsIDE0NiwgMjQ5LCAxNDAsIDI1MCwgMTQ2LCAKKyAgICA5NiwgMiwgMjQ4LCA4MCwgMjUwLCAxNDYsIDk2LCAyLCAyMDYsIDE5NSwgMjE3LCAxNjIsIDIwOSwgMjM5LCAyLCAyMTksIAorICAgIDg0LCAyNDMsIDI0MywgMjM4LCA2MywgMjUwLCA0LCA1OSwgMjE1LCAxNTMsIDIyMSwgNDUsIDYwLCAyMTUsIDE1MywgMjIxLCAKKyAgICA0NSwgMjE1LCAyMzksIDIxOCwgMjI0LCAyMTgsIDk3LCAyNDEsIDE3NiwgMjM5LCA2MSwgMjQ5LCA4NSwgNjAsIDQ3LCAyMjAsIAorICAgIDIwMSwgMjMzLCA1MywgNjAsIDQ4LCAyMjAsIDIwMSwgMjMzLCA1MywgNTksIDQ3LCAyMjAsIDIwMSwgMjMzLCA1MywgNTksIAorICAgIDEyMCwgMjIwLCAyMDEsIDIzMywgNTMsIDU5LCA0OCwgMjIwLCAyMDEsIDIzMywgNTMsIDU5LCAxMzAsIDIyMCwgMjAxLCAKKyAgICAyMzMsIDUzLCAyMTQsIDI0MSwgMjMsIDI0NywgNTgsIDI0OCwgMTc3LCA1MywgMjE5LCA5NiwgNTMsIDI0OSwgMjIwLCA1MywgCisgICAgMjQ4LCAyNDgsIDI1MiwgMTAxLCAyMjIsIDEwOSwgMjQ3LCA1OSwgMjQ4LCA1OSwgMjE4LCAyMTAsIDI0NywgNjAsIDczLCAKKyAgICAyMjksIDEwNiwgMjQ3LCA2MCwgNzMsIDIzMiwgMTcyLCAyMTQsIDI3LCAyMywgMjQ3LCA2NSwgMjQyLCA0MiwgOTMsIDI1MiwgCisgICAgMjU0LCAyMTUsIDI0MSwgMjM5LCAxMTUsIDIzLCAyMTUsIDc3LCAyMjEsIDE3MywgOTMsIDIwNiwgMSwgMjA2LCA3NSwgMjExLCAKKyAgICA0MSwgMzMsIDIzOSwgNTYsIDIxMSwgNDEsIDMzLCAyMzAsIDExMSwgMjExLCA0MSwgMzMsIDI0MSwgMjE5LCAyMTEsIDQxLCAKKyAgICAzMywgMjExLCAyMjcsIDIxMSwgNDEsIDMzLCAyMDcsIDksIDIxMSwgNDEsIDMzLCAyMDcsIDY5LCAyMTEsIDQxLCAzMywgCisgICAgMjI2LCAxMjgsIDIxMSwgNDEsIDMzLCAyNDMsIDEyMCwgMjA3LCAyNywgNzMsIDI0NSwgMTg0LCA1OSwgMjQxLCA5NCwgMjQyLCAKKyAgICA2NywgNTksIDIxNCwgMjEwLCAyNDIsIDY3LCA2MCwgMjE0LCAyMTAsIDI0MiwgNjcsIDU5LCAyMTMsIDE1NSwgMiwgMjE5LCAKKyAgICA1NSwgMjQxLCAyMTUsIDIxOSwgMjA1LCAyMjYsIDE0NCwgMjMwLCA4MSwgMjE5LCAyMDUsIDIyNiwgMTQ0LCAyMjcsIDc4LCAKKyAgICAyNDIsIDExLCA1MywgMjQzLCAxMjAsIDIyNywgMjI2LCA1MywgMjMyLCA5MSwgMjE3LCAxMjYsIDIwOSwgMTg5LCAyMjUsIAorICAgIDk1LCAyMjAsIDIxNSwgMjUyLCA3LCAyMTIsIDE0OSwgMjQwLCAxNTgsIDI0OCwgMjIyLCAyMzAsIDE1LCAyMDgsIDE4NiwgCisgICAgMjI5LCAyMzIsIDIxNywgOTYsIDIxNywgMTgzLCAyNDgsIDIwOCwgMjUyLCAzOCwgMjIwLCAyNTAsIDU5LCAyNDgsIDY1LCAKKyAgICAyMzEsIDEwNiwgNTksIDI0OCwgNjUsIDIxOSwgMTk3LCA1OSwgMjQ4LCA2NSwgMjE4LCAxMDUsIDU5LCAyNDgsIDY1LCAyNDksIAorICAgIDIxMiwgNTksIDI0OCwgNjUsIDIzMSwgNTYsIDU5LCAyNDgsIDY1LCAyMjEsIDE4NSwgNjAsIDI0OCwgNjUsIDIzMSwgMTA2LCAKKyAgICA2MCwgMjQ4LCA2NSwgMjE5LCAxOTcsIDYwLCAyNDgsIDY1LCAyMTgsIDEwNSwgNjAsIDI0OCwgNjUsIDI0OSwgMjEyLCA2MCwgCisgICAgMjQ4LCA2NSwgMjMxLCA1NiwgNjAsIDI0OCwgNjUsIDIyMSwgMTg1LCA2MCwgMjE0LCAxNTEsIDIxMywgMTY3LCA1OSwgMjM5LCAKKyAgICA2MSwgMjEzLCAxNjcsIDU5LCAyNDUsIDE1NywgMjEzLCAxNjcsIDYwLCAyNDcsIDE4MSwgMjEzLCAxNjcsIDU5LCAyMTQsIAorICAgIDE1MSwgMjEzLCAxNjcsIDYwLCAyMzksIDYxLCAyMTMsIDE2NywgNjAsIDI0NSwgMTU3LCAyMTMsIDE2NywgNTksIDI0NywgCisgICAgMTgxLCAyMTMsIDE2NywgMjM4LCA2MywgMjE0LCAxMTIsIDIxOSwgMjA1LCAyMjQsIDM3LCAyNDMsIDg0LCAyMjQsIDM3LCAKKyAgICAyNTAsIDU4LCAyNDMsIDg0LCAyMjQsIDMyLCAyNTAsIDU4LCAyMTUsIDMsIDIyNCwgMzIsIDIyNiwgNjUsIDI0MSwgMTg4LCAKKyAgICA1MywgMjI2LCA2NSwgMjI1LCAxOTIsIDUzLCAyMjYsIDY1LCAyMTUsIDIyOCwgNTMsIDIwNywgMzYsIDIxMywgMzAsIDI0NywgCisgICAgNTksIDI0MywgMTE3LCAyMTMsIDMwLCAyNDcsIDU5LCAyMDksIDIxNCwgMjE5LCAzMywgOTMsIDIxOSwgMzMsIDE2LCAzMywgCisgICAgMjEwLCA5NCwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgMjEwLCA5MywgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgCisgICAgMjEwLCA5MiwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgMjEwLCA5MSwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgCisgICAgMjEwLCA5MCwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgMjEwLCA4OSwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgCisgICAgMjEwLCA4OCwgMjIwLCAyMzIsIDIxOSwgMzMsIDE2LCAzMywgMjQwLCAxNTYsIDIyNywgMTY5LCA2MCwgMjA5LCAyMTQsIAorICAgIDIxOSwgMzMsIDkzLCAyMTksIDM0LCAyMjEsIDIzNSwgOTMsIDIyMSwgMjA4LCAyMjEsIDIzNSwgOTMsIDIyMSwgMTIzLCAKKyAgICAyMjEsIDIzNSwgNTMsIDIwNywgMjUsIDkzLCAyNDUsIDE0OSwgMjQyLCA2NiwgMjQ1LCAxNDksIDI0MiwgNjUsIDI0NSwgCisgICAgMTQ5LCAyNDIsIDY0LCAyNDUsIDE0OSwgMjQyLCA2MywgMjQ1LCAxNDksIDI0MiwgNjIsIDI0NSwgMTQ5LCAyNDIsIDYxLCAKKyAgICA1OSwgMjQ3LCAyMzQsIDIsIDY3LCAyMTgsIDE2NywgNTksIDI0NywgMjM0LCAyLCAxMTgsIDI0NSwgMjEsIDYwLCAyNDcsIAorICAgIDIzNCwgMiwgNTksIDY3LCAyMTgsIDE2NywgNjAsIDI0NywgMjM0LCAyLCAxMTgsIDU5LCAyNDUsIDIxLCAyMjYsIDE2MCwgCisgICAgMzMsIDIwNiwgNzUsIDIyNiwgMTYwLCAzMywgMjA2LCAwLCAyNDUsIDEzMSwgMzMsIDIzOSwgMjMxLCAyMDYsIDc1LCAyNDUsIAorICAgIDEzMSwgMzMsIDIzMCwgOCwgMjA2LCAwLCAyNDUsIDEzMSwgMzMsIDIzMCwgOCwgMjA2LCA3NSwgMjQ1LCAxMzEsIDMzLCAKKyAgICAyMzksIDIzMSwgMjA2LCAwLCA1OSwgMjQxLCAxOTYsIDYwLCAyNDEsIDE5NiwgMjM5LCAxMTUsIDIzLCAyMjEsIDQ5LCAyNTIsIAorICAgIDExOSwgMjQ3LCA1NywgMjEzLCA5NCwgMjE0LCAzNSwgNzMsIDI1MiwgMjMxLCAyMTcsIDExMSwgMjUyLCAxNzEsIDI0MSwgCisgICAgMTcyLCAyNDAsIDE2NywgMjE0LCAzNSwgNzMsIDIzOSwgMzQsIDI1MSwgMTkyLCA5MywgMjQxLCAxODQsIDIyMiwgODksIDU5LCAKKyAgICAyMTQsIDI2LCAxMjksIDIyOSwgMjAwLCAyNDcsIDEwNiwgMjE4LCAxNjcsIDEyOSwgMjI5LCAyMDAsIDI0NywgMTA2LCAyMzAsIAorICAgIDQ2LCAyMDcsIDgwLCA1MywgMTI3LCAyMDgsIDE2NCwgNTMsIDI0NCwgMTMsIDI0MiwgMTEsIDUzLCAyNDQsIDEzLCAyMjcsIAorICAgIDIyNiwgNTMsIDIzMywgMTMsIDI0MiwgMTEsIDIzLCAyMjcsIDIyNiwgNTMsIDIyNywgMjI2LCAyMywgMjQyLCAxMSwgNTMsIAorICAgIDIyNywgMjI2LCAyLCAyMTMsIDIyNSwgNTMsIDIyNywgMjI2LCAyLCAyMTMsIDIyNSwgMjMsIDIyNywgMjI2LCAyMywgMjQyLCAKKyAgICAxMSwgNTMsIDc5LCAyMjcsIDIyNiwgMiwgMjEzLCAyMjUsIDUzLCAxOTQsIDIyNywgMjI2LCAyLCAyMTMsIDIyNSwgNTMsIAorICAgIDIyNywgMTA5LCA1OSwgMjQ3LCAyMzMsIDIyNywgMTA5LCA2MCwgMjQ3LCAyMzMsIDIyNywgMTA5LCA1LCA1OSwgMjQ3LCAKKyAgICAyMzMsIDIyNywgMTg1LCA5MywgMjQ1LCA3MywgOTMsIDIwOSwgMjEyLCAyMjEsIDIwNywgOTMsIDI0NywgMTY3LCAyNDEsIAorICAgIDc3LCAyMDksIDE4NSwgMjI1LCA4OSwgMjQ4LCAxMTQsIDIyMiwgMjEsIDIzMiwgOTcsIDIwOCwgMjI0LCAyNDgsIDM5LCA2MCwgCisgICAgMjI2LCAxNDUsIDIyOSwgMjE3LCAyMTYsIDEzLCAyMTYsIDQ5LCAyMTksIDE4NywgMjE2LCAzMSwgMjE0LCAxOTAsIDI1MCwgCisgICAgMTQ5LCAyNTAsIDExNSwgOTgsIDIzMSwgMTc0LCA1OSwgMjQzLCAyNTIsIDIyNywgMjIxLCA1OSwgMjQzLCAyNTIsIDIzMSwgCisgICAgMTA2LCA2MCwgMjQzLCAyNTIsIDIyNywgMjIxLCA2MCwgMjQzLCAyNTIsIDIzMSwgMTA2LCAyMTQsIDE5NiwgMjA2LCAyNTMsIAorICAgIDIxNCwgMTk5LCAyMTMsIDE1NSwgMjUwLCAzNSwgMjQ3LCAxODMsIDIxOSwgODMsIDYwLCAyMTQsIDE5NSwgMjExLCAyMjgsIAorICAgIDI0NywgMTg0LCAyMywgMjE5LCA4MywgMjAxLCA1OSwgMjE1LCAxNTMsIDIyMSwgNDUsIDIwMSwgNjAsIDIxNSwgMTUzLCAKKyAgICAyMjEsIDQ1LCA1OSwgMjQ1LCAxNTcsIDIzMywgNjksIDIxNCwgMTA3LCAyNDcsIDU0LCAyMzAsIDkzLCAyNDUsIDEwMCwgCisgICAgMjQ4LCAyMDQsIDIyMiwgMTMxLCAyMjEsIDQ5LCAyNDgsIDIwNSwgMjE0LCAyMjYsIDIzOSwgNDQsIDIsIDU5LCAyNDcsIDU5LCAKKyAgICAzOSwgMjQ3LCA1NCwgMjMwLCA5MywgMjQ4LCAxMDYsIDIyNCwgNjgsIDI0MywgMTMsIDI1MiwgMTQxLCAyMjIsIDE2MCwgNDcsIAorICAgIDIwNywgNTUsIDIxMSwgNzcsIDYwLCAyMTAsIDEwNSwgNDcsIDIwNywgNTUsIDIxMSwgNzcsIDU5LCAyMTAsIDEwNSwgNDcsIAorICAgIDIwNywgNTUsIDIxMSwgNzcsIDYwLCA0NywgMjMwLCA5NCwgMjI3LCA3NywgNTksIDQ3LCAyMzAsIDk0LCAyMjcsIDc3LCAKKyAgICAyNDMsIDI0OCwgMjE0LCAyMTgsIDUzLCA3NywgNTksIDI0NCwgNywgMjExLCA1MSwgNDcsIDI0NywgMTkyLCAyNDMsIDEzLCAKKyAgICA5OCwgMjE3LCAxNjIsIDI0MiwgNTAsIDI0NSwgMTYzLCAyMzMsIDY5LCA1OSwgMjQ3LCAyMzQsIDIzMywgNjksIDYwLCAyMTQsIAorICAgIDEwNywgNjAsIDIxMSwgMTcsIDIxOCwgMjM1LCA0NywgMjQzLCAxMiwgMjE4LCAyMzUsIDQ3LCAyNDMsIDExLCAyNTEsIDIwNCwgCisgICAgMTYsIDMzLCAyMDksIDE4OSwgNzcsIDI0NywgMjM0LCAyLCAyMTMsIDIyNSwgMjMsIDExOCwgMTc3LCA1MiwgMjIxLCAxMzksIAorICAgIDIxOCwgMTY0LCAyMzMsIDE1LCAyMjEsIDEzOSwgMjMwLCA0MywgMjMzLCAxNSwgMjIxLCAxMzksIDIzMywgMiwgMjIxLCAKKyAgICAxMzksIDYwLCAyNDcsIDYwLCAyMjIsIDE2NiwgMjE1LCAxODAsIDIxNSwgMTY4LCAyMTUsIDEyMCwgMjQ4LCA2LCAyNDgsIAorICAgIDE4NSwgMjM4LCAyNDMsIDIxNSwgMTEsIDI0MCwgMTY4LCAyMDYsIDI1MywgMjM4LCAzOSwgMjQwLCAxNjgsIDIsIDIzOSwgCisgICAgMTA0LCAyMjcsIDIwNiwgMTYsIDMzLCAyMjksIDIyMiwgMjI2LCAxMjgsIDIwOSwgMjM5LCAyMjIsIDE2NiwgMjM5LCAyMjIsIAorICAgIDI0MSwgMTI2LCAyNDEsIDE5NywgMjMzLCA2OSwgMjM4LCAxNDAsIDI0MiwgMiwgMjE3LCAxNzgsIDQ5LCAyNDEsIDEyNSwgCisgICAgMjQ3LCA5MCwgMjE0LCAyNDQsIDIzNywgMTgyLCAyMTQsIDI0NywgMjIxLCAxMTUsIDIsIDI1MCwgMTQ5LCAyMTIsIDkyLCAKKyAgICAyMzIsIDE4OSwgMjUwLCAxMzQsIDkzLCAyMzksIDY0LCAyMzksIDIzMywgOTMsIDI0MSwgODUsIDIyMCwgNzMsIDI0NywgMzAsIAorICAgIDIyMiwgMTY2LCA2MCwgMjE0LCAxMDcsIDU5LCAyNDEsIDE5NywgMiwgMTk0LCAyMjYsIDI0NywgNjAsIDIxMywgMjI2LCA2MCwgCisgICAgMjE3LCAxODgsIDIxNywgOTgsIDIwOSwgMjAzLCAyNDksIDE5NywgMjE3LCA5OCwgNjAsIDIxNywgOTgsIDIyOSwgOTIsIAorICAgIDI0OSwgMTk3LCAyMTcsIDk4LCA1OSwgMjE3LCA5OCwgNTksIDc3LCAyNDgsIDgxLCA4MywgMjEyLCAxMDgsIDIyOSwgMTQyLCAKKyAgICA1MywgMjEyLCAxNjUsIDI0MywgMjQ3LCAyNTIsIDE5NCwgMjQzLCA4LCAyMTksIDgxLCAyNDEsIDIwOCwgMjE5LCA4MSwgCisgICAgMjM5LCAxMDcsIDIwOCwgMjEyLCAyMzksIDEwNywgMjA2LCAyMTksIDIzOSwgMTA3LCAyMjksIDkyLCA0OCwgMjIxLCAxNDksIAorICAgIDIyMSwgMTQ5LCAyMDksIDIwMywgNDgsIDIyMSwgMTQ5LCA1OSwgMjI0LCAyMjcsIDYwLCAyMjQsIDIyNywgMjQ4LCA4MSwgCisgICAgODMsIDc3LCAyNDgsIDgxLCA4MywgMjI2LCA5NCwgMjA2LCAxOTUsIDc3LCAyMjYsIDk0LCAyMDYsIDE5NSwgMjUwLCAxNDYsIAorICAgIDIwNiwgMTk1LCA3NywgMjUwLCAxNDYsIDIwNiwgMTk1LCAyMjIsIDg5LCAyNywgMjQ3LCA1OSwgNzcsIDI3LCAyNDcsIDU5LCAKKyAgICAyMjIsIDE0MiwgMjQ4LCAxMjksIDI0NywgNTksIDc3LCAyMjIsIDE0MiwgMjQ4LCAxMjksIDI0NywgNTksIDcsIDI0NywgNTksIAorICAgIDIxNSwgMjQ2LCA1OSwgNywgMjQ3LCA1OSwgMjIyLCA4OSwgNywgMjQ3LCA1OSwgMjI3LCAyMjMsIDI0NywgNTksIDIxNCwgCisgICAgMjcsIDczLCAyNDYsIDcxLCAyNDEsIDEyNSwgMjEyLCAxMjQsIDI1MSwgMjA5LCAyNDEsIDEyNSwgMjUwLCAxNDcsIDI1MSwgCisgICAgMjA5LCA3NywgMjQxLCAxMjUsIDI1MCwgMTQ3LCAyNTEsIDIwOSwgMjQxLCAxMjUsIDI0NywgMTc5LCAyNTEsIDIwOSwgNjAsIAorICAgIDI0MSwgMTI1LCAyMjAsIDIwMywgMjE0LCAyNiwgNTksIDI0MSwgMTI1LCAyMjAsIDIwMywgMjE0LCAyNiwgMjE0LCAxNDYsIAorICAgIDIxMywgMjMzLCAyMjIsIDg5LCA1OSwgMjE0LCAyNiwgMzksIDU5LCAyMTQsIDI2LCAyMjIsIDE0MiwgMjQ4LCAxMjksIDYwLCAKKyAgICAyMTQsIDI2LCA2MCwgMjQ4LCAxMjksIDU5LCAyMTQsIDI2LCAyMjIsIDg5LCA2MCwgMjE0LCAyNiwgNzcsIDIyMiwgODksIAorICAgIDYwLCAyMTQsIDI2LCAyMjEsIDQsIDIxNCwgMjYsIDIxNSwgMjQ2LCA1OSwgMjE0LCAyNiwgNzcsIDI1MSwgMjA5LCAyMjIsIAorICAgIDE0MiwgMjQ4LCAxMjksIDI1MSwgMjA5LCAyNDMsIDg4LCAyMTQsIDExOSwgMjUxLCAyMDksIDI0MywgODgsIDIyMCwgMjAzLCAKKyAgICA2MCwgMjE0LCAyNiwgMjQzLCA4OCwgMjIwLCAyMDMsIDIyMSwgNCwgMjE0LCAyNiwgMjE1LCAxMCwgMjIwLCAyMDMsIDYwLCAKKyAgICAyMTQsIDI2LCAyNDMsIDg4LCAyMjAsIDIwMywgMjE5LCAzNSwgNjAsIDIxNCwgMjYsIDc3LCAyNDMsIDg4LCAyMjAsIDIwMywgCisgICAgMjE5LCAzNSwgNjAsIDIxNCwgMjYsIDIxMCwgMTI3LCAyMjAsIDIwMywgNjAsIDIxNCwgMjYsIDIxNSwgNSwgMjIwLCAyMDMsIAorICAgIDI1MSwgMjA5LCAyMTIsIDEyNCwgMjUxLCAyMDksIDIyMiwgMTQyLCAyNDgsIDEyOSwgMjEyLCAxMjQsIDI1MSwgMjA5LCA3NywgCisgICAgMjEyLCAxMjQsIDI1MSwgMjA5LCAyMTUsIDEwLCAyMjEsIDEwMywgNjAsIDIzLCA1OSwgMjQxLCAxNzUsIDYwLCAyNDEsIAorICAgIDE3NSwgNTksIDI0MSwgMTc1LCAyNDMsIDg4LCAyMjEsIDEwMywgMjIyLCA4OSwgNjAsIDI0MSwgMTc1LCAzOSwgMjIyLCAKKyAgICAxNDIsIDI0OCwgMTI5LCAyNDMsIDg4LCAyMjAsIDIwMywgMjE0LCAyNiwgNzcsIDIxMiwgMTI0LCAyMjEsIDQsIDI1MSwgCisgICAgMjA5LCAyMTQsIDE5NywgMjExLCAxOTcsIDIxMSwgNDQsIDIxNCwgMTk3LCA3NywgMjQ4LCA2MiwgMjE0LCAxOTcsIDIxNCwgCisgICAgMTQ4LCA3NywgMjE0LCAxNDgsIDI1MCwgMTQ3LCAyNTEsIDIwOSwgMjQzLCA4OCwgMjEyLCAxMjQsIDIyMCwgMTA0LCAyNTEsIAorICAgIDIwOSwgNzcsIDI0MywgODgsIDIxMiwgMTI0LCAyMjAsIDEwNCwgMjUxLCAyMDksIDI0NywgNjAsIDgzLCAyMTUsIDI0NiwgCisgICAgNTksIDI0NywgMjMzLCAxNzAsIDk4LCAyNDcsIDYwLCA4MywgMjI5LCA5MiwgNDgsIDI0MywgMjQ1LCA1OSwgMjE0LCAxMDcsIAorICAgIDIwOSwgMjAzLCA0OCwgMjQzLCAyNDUsIDU5LCAyMTQsIDEwNywgMjI5LCA5MiwgNDgsIDIxNSwgMjQ2LCA1OSwgMjE0LCAKKyAgICAxMDcsIDIwOSwgMjAzLCA0OCwgMjE1LCAyNDYsIDU5LCAyMTQsIDEwNywgNjAsIDIxOSwgMTk2LCAxNDEsIDIyMiwgMTExLCAKKyAgICA1OSwgMjE5LCAxOTYsIDE0MSwgMjIyLCAxMTEsIDU5LCAyNDIsIDE2OCwgMTQxLCAyMjIsIDExMSwgNjAsIDI0NSwgMTU3LCAKKyAgICAyMjYsIDIwMiwgNTksIDIwNiwgMTk1LCA3NywgMjQyLCAxNjgsIDE0MSwgOTMsIDE0NywgNzksIDEzNCwgMjI3LCAxMDksIAorICAgIDc5LCAxMzQsIDc3LCA3OSwgMTM0LCA3NywgMjE1LCA0MSwgMjAxLCAyNDcsIDE1NiwgMjE5LCAxODAsIDE0MSwgMjIyLCAKKyAgICAxMTEsIDc3LCAyMTUsIDQxLCAyNDcsIDE1NiwgMjE5LCAxODAsIDE0MSwgMjIyLCAxMTEsIDc3LCA1MCwgMjAxLCAyNDcsIAorICAgIDE1NiwgMjE5LCAxODAsIDE0MSwgMjIyLCAxMTEsIDc3LCA1MCwgMjQ3LCAxNTYsIDIxOSwgMTgwLCAxNDEsIDIyMiwgMTExLCAKKyAgICA3NywgMTE0LCAyMTUsIDQxLCAyNDcsIDE1NiwgMjE5LCAxODAsIDE0MSwgMjIyLCAxMTEsIDc3LCAxMTQsIDUwLCAyNDcsIAorICAgIDE1NiwgMjE5LCAxODAsIDE0MSwgMjIyLCAxMTEsIDI0NywgMTgsIDIxNCwgMTAsIDIyMSwgMjI5LCAzLCAyMjIsIDExMSwgCisgICAgNzcsIDI0MiwgMTY4LCAxNDEsIDIyMiwgMTExLCA3NywgMjM5LCA2MSwgMjQyLCAxNjgsIDE0MSwgMjIyLCAxMTEsIDc3LCAKKyAgICA2MCwgMjM5LCA2MCwgMjE4LCA5NywgNzcsIDYwLCAyMzksIDYxLCAyNDksIDg1LCAyNDEsIDE3NiwgMjM5LCA2MCwgMjE4LCAKKyAgICA5NywgMjQxLCAxNzYsIDIzOSwgNjEsIDI0OSwgODUsIDIyNywgMTA5LCA0NywgMjIxLCAyMTcsIDIyMiwgMTExLCAyMjcsIAorICAgIDEwOSwgNDgsIDIyMSwgMjE3LCAyMjIsIDExMSwgMjI3LCAxMDksIDI0MSwgMTg1LCA0NywgMjIxLCAyMTcsIDIyMiwgMTExLCAKKyAgICAyMjcsIDEwOSwgMjQxLCAxODUsIDQ4LCAyMjEsIDIxNywgMjIyLCAxMTEsIDIyNywgMTA5LCAyMzAsIDQxLCAyNTIsIDEwOSwgCisgICAgMjQ5LCAxMzQsIDIyMiwgMTExLCAyMjcsIDEwOSwgMjE4LCAxNjIsIDI1MiwgMTA5LCAyNDksIDEzNCwgMjIyLCAxMTEsIDc3LCAKKyAgICAyMzAsIDQxLCAyNTIsIDEwOSwgMjE5LCAxODAsIDE0MSwgMjIyLCAxMTEsIDc3LCAyMTgsIDE2MiwgMjUyLCAxMDksIDIxOSwgCisgICAgMTgwLCAxNDEsIDIyMiwgMTExLCA3NywgMjMwLCA0MSwgMjUyLCAxMDksIDI0OSwgMTM0LCAyMjIsIDExMSwgNzcsIDIxOCwgCisgICAgMTYyLCAyNTIsIDEwOSwgMjQ5LCAxMzQsIDIyMiwgMTExLCAxNDcsIDQ3LCAyMTEsIDkzLCAyMTUsIDIwNCwgMjQ5LCAxMzQsIAorICAgIDIyMiwgMTExLCAxNDcsIDQ4LCAyMTEsIDkzLCAyMTUsIDIwNCwgMjQ5LCAxMzQsIDIyMiwgMTExLCAyMjcsIDEwOSwgNDcsIAorICAgIDI0NywgMjYsIDI0OSwgMTM0LCAyMjIsIDExMSwgMjI3LCAxMDksIDQ4LCAyNDcsIDI2LCAyNDksIDEzNCwgMjIyLCAxMTEsIAorICAgIDI0NSwgMTExLCAxNzAsIDM5LCAxOCwgMTAyLCAyNDUsIDExMSwgMTcwLCAzOSwgMTgsIDEwNSwgMjQ1LCAxMTEsIDE3MCwgCisgICAgMzksIDE4LCAxNDIsIDI0NSwgMTExLCAxNzAsIDM5LCAxOCwgMTM5LCAyNDUsIDExMSwgMTcwLCAzOSwgMTgsIDE2OCwgMjQ1LCAKKyAgICAxMTEsIDE3MCwgMzksIDE4LCAxODQsIDI0NSwgMTExLCAxNzAsIDM5LCAxOCwgMTk1LCAyNDUsIDExMSwgMTcwLCAzOSwgMTgsIAorICAgIDE5MywgMjQ1LCAxMTEsIDE3MCwgMzksIDE4LCAyMDAsIDI0NSwgMTExLCAxNzAsIDM5LCA0MywgMjEyLCA5OCwgMjQ1LCAKKyAgICAxMTEsIDM5LCAzOCwgMTgsIDEwMiwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIDEwNSwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIAorICAgIDE0MiwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIDEzOSwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIDE2OCwgMjQ1LCAxMTEsIDM5LCAKKyAgICAzOCwgMTgsIDE4NCwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIDE5NSwgMjQ1LCAxMTEsIDM5LCAzOCwgMTgsIDE5MywgMjQ1LCAKKyAgICAxMTEsIDM5LCAzOCwgMTgsIDIwMCwgMjQ1LCAxMTEsIDM5LCAzOCwgNDMsIDIxMiwgOTgsIDI0NSwgMTExLCAxNzAsIDM5LCAKKyAgICAzOCwgMTgsIDEwMiwgMjQ1LCAxMTEsIDE3MCwgMzksIDM4LCAxOCwgMTA1LCAyNDUsIDExMSwgMTcwLCAzOSwgMzgsIDE4LCAKKyAgICAxNDIsIDI0NSwgMTExLCAxNzAsIDM5LCAzOCwgMTgsIDEzOSwgMjQ1LCAxMTEsIDE3MCwgMzksIDM4LCAxOCwgMTY4LCAyNDUsIAorICAgIDExMSwgMTcwLCAzOSwgMzgsIDE4LCAxODQsIDI0NSwgMTExLCAxNzAsIDM5LCAzOCwgMTgsIDE5NSwgMjQ1LCAxMTEsIDE3MCwgCisgICAgMzksIDM4LCAxOCwgMTkzLCAyNDUsIDExMSwgMTcwLCAzOSwgMzgsIDE4LCAyMDAsIDI0NSwgMTExLCAxNzAsIDM5LCAzOCwgCisgICAgNDMsIDIxMiwgOTgsIDc3LCAyMDcsIDE2LCA4NiwgNDUsIDc3LCAxMDEsIDUzLCA3NywgMjI2LCAyMDIsIDUzLCA3NywgMjQ1LCAKKyAgICA3NSwgNTMsIDc3LCAxODgsIDI0MywgMTE3LCA0NSwgNzcsIDg2LCA0NSwgNzcsIDE0MywgMjQzLCAxMTcsIDQ1LCAyNDQsIDEsIAorICAgIDIyMCwgMjA1LCA4NiwgNDUsIDc3LCAyMTgsIDk0LCA4NiwgNDUsIDIxMSwgNTAsIDg2LCA0NSwgNzcsIDIxMSwgNTAsIDg2LCAKKyAgICA0NSwgMjQ2LCA3NywgMjExLCA1MCwgODYsIDQ1LCA3NywgMjQ2LCA3NywgMjExLCA1MCwgODYsIDQ1LCA2MCwgODYsIDQ1LCAKKyAgICAyMTEsIDIzOCwgMjExLCAxMDAsIDg2LCAyNTEsIDI0MywgMjExLCAyMzgsIDI0OSwgMTUyLCA4NiwgMjUxLCAyNDMsIDYwLCAKKyAgICA4NiwgMjUxLCAyNDMsIDc3LCA2MCwgMjQ3LCAxOCwgMTczLCAyMywgODYsIDQ1LCA3NywgNjAsIDI0NywgMTgsIDE2NywgMjMsIAorICAgIDg2LCA0NSwgMjE0LCAxMDQsIDYwLCA4NiwgNDUsIDc3LCAyNDcsIDEzOSwgNjAsIDg2LCA0NSwgMjE4LCAxNjEsIDU5LCA4NiwgCisgICAgNDUsIDIzMCwgNDAsIDU5LCA4NiwgNDUsIDI1MCwgMTc1LCAyMTUsIDI0NiwgNTksIDg2LCA0NSwgMjQxLCA5NiwgMjE1LCAKKyAgICAyNDYsIDU5LCA4NiwgNDUsIDc3LCAyMjksIDkyLCAyMTgsIDE2MCwgNTksIDg2LCA0NSwgNzcsIDIwOSwgMjAzLCAyMTgsIAorICAgIDE2MCwgNTksIDg2LCA0NSwgMjI0LCAzOSwgMjI5LCA5MiwgMjE4LCAxNjAsIDU5LCA4NiwgNDUsIDI0NywgMjYsIDIyOSwgCisgICAgMTExLCAyMjQsIDM5LCAyMDksIDIwMywgMjE4LCAxNjAsIDU5LCA4NiwgNDUsIDM5LCA3NywgNTksIDg2LCA0NSwgMjA3LCAKKyAgICAyMiwgODYsIDQ1LCAyNDksIDIwMSwgMTg4LCAyNDMsIDExNywgNDUsIDI0OSwgMjAxLCA4NiwgNDUsIDI0OSwgMjAxLCAxNDMsIAorICAgIDI0MywgMTE3LCA0NSwgNzcsIDI0OSwgMjAxLCAxODgsIDI0MywgMTE3LCA0NSwgNzcsIDI0OSwgMjAxLCA4NiwgNDUsIDc3LCAKKyAgICAyNDksIDIwMSwgMTQzLCAyNDMsIDExNywgNDUsIDIxMiwgMTI2LCA4NiwgNDUsIDc3LCAyMTIsIDEyNSwgODYsIDQ1LCAyMDcsIAorICAgIDQ2LCA4NiwgNDUsIDc3LCAyMDcsIDQ2LCA4NiwgNDUsIDIyMiwgMTM3LCA4NiwgNDUsIDUwLCAyNDcsIDI2LCAyMjksIDExMSwgCisgICAgMTI5LCAyNDUsIDEyMSwgMjUyLCAxMDgsIDU5LCAyMTEsIDUyLCAyNDcsIDExOSwgNSwgNTksIDIxMSwgNTEsIDIyMSwgMTE4LCAKKyAgICAyMjIsIDE0MiwgMjEzLCAxODEsIDIyMiwgMTQyLCAyMTMsIDEzNywgNDcsIDIxOCwgMCwgMjUwLCAxNjQsIDI0NSwgMjMzLCAKKyAgICA0OCwgMjE4LCAwLCAyNTAsIDE2NCwgMjQ1LCAyMzMsIDIyMiwgMTIzLCAyLCA2NywgMjMzLCAyNSwgMjE4LCAyMjUsIDIxNCwgCisgICAgMTgxLCAyMjAsIDEzOCwgMjEzLCAxODEsIDIxMywgMTM4LCAyMjAsIDEzOCwgMjE0LCAxODAsIDc5LCAyNTAsIDEyOSwgMiwgCisgICAgMTk0LCA5MSwgMTEsIDIxOCwgMTQyLCAyNDUsIDE2MiwgMTUyLCAyNDUsIDc0LCAxMSwgMjQyLCA1MCwgMjQ1LCAxNjIsIDk4LCAKKyAgICAyMjksIDEzNCwgMjUyLCAxMTcsIDk4LCAyMjksIDEzNCwgMjIyLCAxMjIsIDU5LCAyNDUsIDE1NywgMiwgMjQ4LCAxMjcsIAorICAgIDI0NSwgMjMsIDIzLCAyLCAyNDUsIDIzLCAyNDMsIDYxLCA3MywgMjIyLCAxMzUsIDIwOSwgMTk2LCAyMjksIDkyLCA0OCwgCisgICAgMjQ3LCA5MiwgMiwgMjQ1LCAyMywgMjA5LCAyMDMsIDQ3LCAyNDcsIDkyLCAyLCAyNDUsIDIzLCA0NywgMjIyLCA5MSwgMjMyLCAKKyAgICAxMjAsIDQ4LCAyMjIsIDkxLCAyMzIsIDEyMCwgMjQxLCA4MiwgMjIyLCA5MSwgMjMyLCAxMjAsIDIzMCwgODYsIDEyMCwgCisgICAgMjEyLCAyMDEsIDIzMCwgODYsIDEzMCwgMjEyLCAyMDEsIDQ3LCAyMywgNDgsIDUwLCAyMTAsIDE0MywgNDcsIDIzLCA0OCwgCisgICAgMjEyLCAyMDEsIDQ3LCAyMjYsIDk3LCAxNTIsIDQ4LCAyMTIsIDIwMSwgMTUyLCA0NywgMjEyLCAyMDEsIDEyMCwgMjEyLCAKKyAgICAyMDIsIDIsIDI0NywgMjM0LCA1MiwgMjI5LCA4OSwgMjQ1LCA4MCwgMjQ5LCA0NiwgMTk0LCAyMTgsIDQyLCA1OSwgMjQ3LCAKKyAgICAxMzgsIDI0NSwgMTU2LCA1OSwgMjQ3LCAxMzgsIDI0NSwgMTU3LCAyLCA5MiwgMjExLCAyMDcsIDU5LCAyNDcsIDEzOCwgCisgICAgMjQ1LCAxNTcsIDIsIDg2LCAyMTEsIDIwNywgNTksIDQ5LCAyLCA5MiwgMjExLCAyMDcsIDU5LCA0OSwgMiwgODYsIDIxMSwgCisgICAgMjA3LCAxMSwgNDcsIDU5LCA0OSwgMTQ1LCAxMSwgNDgsIDU5LCA0OSwgMTQ1LCAxMSwgNDcsIDI1MiwgMTA5LCAxNDUsIDExLCAKKyAgICA0OCwgMjUyLCAxMDksIDE0NSwgMTEsIDQ3LCA1MCwgMjUyLCAxMDksIDE0NSwgMTEsIDQ4LCA1MCwgMjUyLCAxMDksIDE0NSwgCisgICAgMTEsIDQ3LCA1OSwgMjExLCA5MywgMjE1LCAyMDQsIDE0NSwgMTEsIDQ4LCA1OSwgMjExLCA5MywgMjE1LCAyMDQsIDE0NSwgCisgICAgMTEsIDQ3LCAyNDEsIDE4NSwgMjIxLCAyMTYsIDExLCA0OCwgMjQxLCAxODUsIDIyMSwgMjE2LCAxNjcsIDIxOSwgMjA3LCAKKyAgICA0NSwgMTczLCAyMTksIDIwNywgNDUsIDI1MiwgODcsIDI0MCwgMjA2LCAyNDcsIDIzNCwgNDUsIDI0NywgMTk0LCAyNDAsIAorICAgIDIwNiwgMjQ3LCAyMzQsIDQ1LCA0OCwgNTEsIDIsIDM5LCAyMjAsIDIxOCwgMTUyLCA5MiwgNDUsIDE1MiwgODYsIDQ1LCAKKyAgICAxNTIsIDQ3LCA0OCwgNDUsIDE1MiwgOTIsIDUwLCA0NSwgMTUyLCA4NiwgNTAsIDQ1LCAxNTIsIDQ3LCA0OCwgNTAsIDQ1LCAKKyAgICAxNTIsIDkyLCA1MSwgMjQxLCA5OCwgMTM0LCAxNTIsIDg2LCA1MSwgMjQxLCA5OCwgMTM0LCAxNTIsIDkyLCA1MCwgNTEsIAorICAgIDI0MSwgOTgsIDEzNCwgMTUyLCA4NiwgNTAsIDUxLCAyNDEsIDk4LCAxMzQsIDE1MiwgODYsIDIxNCwgMTAzLCA0NSwgNTYsIAorICAgIDU3LCAyNDksIDE5NSwgNTYsIDU3LCAyNDUsIDIwLCA1NiwgNTcsIDI0NCwgMTQ4LCA1NiwgNTcsIDI0NSwgMTksIDU2LCA1NywgCisgICAgMjQ0LCA4NCwgNTYsIDU3LCAyNDQsIDIxMSwgNTYsIDU3LCAyNDQsIDE0NywgNTYsIDU3LCAyNDUsIDE4LCA1NiwgNTcsIAorICAgIDI0NCwgNTIsIDU2LCA1NywgMjQ0LCAxNzksIDU2LCA1NywgMjQ0LCAxMTUsIDU2LCA1NywgMjQ0LCAyNDIsIDU2LCA1NywgCisgICAgMjQ0LCA4MywgNTYsIDU3LCAyNDQsIDIxMCwgNTYsIDU3LCAyNDQsIDE0NiwgNTYsIDU3LCAyNDUsIDE3LCA1NiwgNTcsIAorICAgIDI0NCwgMzYsIDU2LCA1NywgMjQ0LCAxNjMsIDU2LCA1NywgMjQ0LCA5OSwgNTYsIDU3LCAyNDQsIDIyNiwgNTYsIDU3LCAKKyAgICAyNDQsIDY3LCA1NiwgNTcsIDI0NCwgMTk0LCA1NiwgNTcsIDI0NCwgMTMwLCA1NiwgNTcsIDI0NSwgMSwgNTYsIDU3LCAyNDQsIAorICAgIDUxLCA1NiwgNTcsIDI0NCwgMTc4LCA1NiwgNTcsIDI0NCwgMTE0LCA1NiwgNTcsIDI0NCwgMjQxLCA1NiwgNTcsIDI0NCwgCisgICAgODIsIDU2LCA1NywgMjQ0LCAyMDksIDU2LCA1NywgMjQ0LCAxNDUsIDU2LCA1NywgMjQ1LCAxNiwgNTYsIDU3LCAyNDQsIDI4LCAKKyAgICA1NiwgNTcsIDI0NCwgMTU1LCA1NiwgNTcsIDI0NCwgOTEsIDU2LCA1NywgMjQ0LCAyMTgsIDU2LCA1NywgMjQ0LCA1OSwgNTYsIAorICAgIDU3LCAyNDQsIDE4NiwgNTYsIDU3LCAyNDQsIDEyMiwgNTYsIDU3LCAyNDQsIDI0OSwgNTYsIDU3LCAyNDQsIDQzLCA1NiwgCisgICAgNTcsIDI0NCwgMTcwLCA1NiwgNTcsIDI0NCwgMTA2LCA1NiwgNTcsIDI0NCwgMjMzLCA1NiwgNTcsIDI0NCwgNzQsIDU2LCAKKyAgICA1NywgMjQ0LCAyMDEsIDU2LCA1NywgMjQ0LCAxMzcsIDU2LCA1NywgMjQ1LCA4LCA1NiwgNTcsIDI0NCwgMzUsIDU2LCA1NywgCisgICAgMjQ0LCAxNjIsIDU2LCA1NywgMjQ0LCA5OCwgNTYsIDU3LCAyNDQsIDIyNSwgNTYsIDU3LCAyNDQsIDY2LCA1NiwgNTcsIAorICAgIDI0NCwgMTkzLCA1NiwgNTcsIDI0NCwgMTI5LCA1NiwgNTcsIDI0NSwgMCwgNTYsIDU3LCAyNDQsIDUwLCA1NiwgNTcsIDI0NCwgCisgICAgMTc3LCA1NiwgNTcsIDI0NCwgMTEzLCA1NiwgNTcsIDI0NCwgMjQwLCA1NiwgNTcsIDI0NCwgODEsIDU2LCA1NywgMjQ0LCAKKyAgICAyMDgsIDU2LCA1NywgMjQ0LCAxNDQsIDU2LCA1NywgMjQ1LCAxNSwgNTYsIDU3LCAyNDQsIDI0LCA1NiwgNTcsIDI0NCwgCisgICAgMTUxLCA1NiwgNTcsIDI0NCwgODcsIDU2LCA1NywgMjQ0LCAyMTQsIDU2LCA1NywgMjQ0LCA1NSwgNTYsIDU3LCAyNDQsIAorICAgIDE4MiwgNTYsIDU3LCAyNDQsIDExOCwgNTYsIDU3LCAyNDQsIDI0NSwgNTYsIDU3LCAyNDQsIDM5LCA1NiwgNTcsIDI0NCwgCisgICAgMTY2LCA1NiwgNTcsIDI0NCwgMTAyLCA1NiwgNTcsIDI0NCwgMjI5LCA1NiwgNTcsIDI0NCwgNzAsIDU2LCA1NywgMjQ0LCAKKyAgICAxOTcsIDU2LCA1NywgMjQ0LCAxMzMsIDU2LCA1NywgMjQ1LCA0LCA1NiwgNTcsIDI0NCwgMzEsIDU2LCA1NywgMjQ0LCAxNTgsIAorICAgIDU2LCA1NywgMjQ0LCA5NCwgNTYsIDU3LCAyNDQsIDIyMSwgNTYsIDU3LCAyNDQsIDYyLCA1NiwgNTcsIDI0NCwgMTg5LCA1NiwgCisgICAgNTcsIDI0NCwgMTI1LCA1NiwgNTcsIDI0NCwgMjUyLCA1NiwgNTcsIDI0NCwgNDYsIDU2LCA1NywgMjQ0LCAxNzMsIDU2LCAKKyAgICA1NywgMjQ0LCAxMDksIDU2LCA1NywgMjQ0LCAyMzYsIDU2LCA1NywgMjQ0LCA3NywgNTYsIDU3LCAyNDQsIDIwNCwgNTYsIAorICAgIDU3LCAyNDQsIDE0MCwgNTYsIDU3LCAyNDUsIDExLCA1NiwgNTcsIDI0NCwgMjcsIDU2LCA1NywgMjQ0LCAxNTQsIDU2LCA1NywgCisgICAgMjQ0LCA5MCwgNTYsIDU3LCAyNDQsIDIxNywgNTYsIDU3LCAyNDQsIDU4LCA1NiwgNTcsIDI0NCwgMTg1LCA1NiwgNTcsIAorICAgIDI0NCwgMTIxLCA1NiwgNTcsIDI0NCwgMjQ4LCA1NiwgNTcsIDI0NCwgNDIsIDU2LCA1NywgMjQ0LCAxNjksIDU2LCA1NywgCisgICAgMjQ0LCAxMDUsIDU2LCA1NywgMjQ0LCAyMzIsIDU2LCA1NywgMjQ0LCA3MywgNTYsIDU3LCAyNDQsIDIwMCwgNTYsIDU3LCAKKyAgICAyNDQsIDEzNiwgNTYsIDU3LCAyNDUsIDcsIDU2LCA1NywgMjQ0LCAzNCwgNTYsIDU3LCAyNDQsIDE2MSwgNTYsIDU3LCAyNDQsIAorICAgIDk3LCA1NiwgNTcsIDI0NCwgMjI0LCA1NiwgNTcsIDI0NCwgNjUsIDU2LCA1NywgMjQ0LCAxOTIsIDU2LCA1NywgMjQ0LCAKKyAgICAxMjgsIDU2LCA1NywgMjQ0LCAyNTUsIDU2LCA1NywgMjQ0LCA0OSwgNTYsIDU3LCAyNDQsIDE3NiwgNTYsIDU3LCAyNDQsIAorICAgIDExMiwgNTYsIDU3LCAyNDQsIDIzOSwgNTYsIDU3LCAyNDQsIDgwLCA1NiwgNTcsIDI0NCwgMjA3LCA1NiwgNTcsIDI0NCwgCisgICAgMTQzLCA1NiwgNTcsIDI0NSwgMTQsIDU2LCA1NywgMjQ0LCAyMiwgNTYsIDU3LCAyNDQsIDE0OSwgNTYsIDU3LCAyNDQsIDg1LCAKKyAgICA1NiwgNTcsIDI0NCwgMjEyLCA1NiwgNTcsIDI0NCwgNTMsIDU2LCA1NywgMjQ0LCAxODAsIDU2LCA1NywgMjQ0LCAxMTYsIAorICAgIDU2LCA1NywgMjQ0LCAyNDMsIDU2LCA1NywgMjQ0LCAzNywgNTYsIDU3LCAyNDQsIDE2NCwgNTYsIDU3LCAyNDQsIDEwMCwgCisgICAgNTYsIDU3LCAyNDQsIDIyNywgNTYsIDU3LCAyNDQsIDY4LCA1NiwgNTcsIDI0NCwgMTk1LCA1NiwgNTcsIDI0NCwgMTMxLCAKKyAgICA1NiwgNTcsIDI0NSwgMiwgNTYsIDU3LCAyNDQsIDI5LCA1NiwgNTcsIDI0NCwgMTU2LCA1NiwgNTcsIDI0NCwgOTIsIDU2LCAKKyAgICA1NywgMjQ0LCAyMTksIDU2LCA1NywgMjQ0LCA2MCwgNTYsIDU3LCAyNDQsIDE4NywgNTYsIDU3LCAyNDQsIDEyMywgNTYsIAorICAgIDU3LCAyNDQsIDI1MCwgNTYsIDU3LCAyNDQsIDQ0LCA1NiwgNTcsIDI0NCwgMTcxLCA1NiwgNTcsIDI0NCwgMTA3LCA1NiwgCisgICAgNTcsIDI0NCwgMjM0LCA1NiwgNTcsIDI0NCwgNzUsIDU2LCA1NywgMjQ0LCAyMDIsIDU2LCA1NywgMjQ0LCAxMzgsIDU2LCAKKyAgICA1NywgMjQ1LCA5LCA1NiwgNTcsIDI0NCwgMjUsIDU2LCA1NywgMjQ0LCAxNTIsIDU2LCA1NywgMjQ0LCA4OCwgNTYsIDU3LCAKKyAgICAyNDQsIDIxNSwgNTYsIDU3LCAyNDQsIDU2LCA1NiwgNTcsIDI0NCwgMTgzLCA1NiwgNTcsIDI0NCwgMTE5LCA1NiwgNTcsIAorICAgIDI0NCwgMjQ2LCA1NiwgNTcsIDI0NCwgNDAsIDU2LCA1NywgMjQ0LCAxNjcsIDU2LCA1NywgMjQ0LCAxMDMsIDU2LCA1NywgCisgICAgMjQ0LCAyMzAsIDU2LCA1NywgMjQ0LCA3MSwgNTYsIDU3LCAyNDQsIDE5OCwgNTYsIDU3LCAyNDQsIDEzNCwgNTYsIDU3LCAKKyAgICAyNDUsIDUsIDU2LCA1NywgMjQ0LCAzMiwgNTYsIDU3LCAyNDQsIDE1OSwgNTYsIDU3LCAyNDQsIDk1LCA1NiwgNTcsIDI0NCwgCisgICAgMjIyLCA1NiwgNTcsIDI0NCwgNjMsIDU2LCA1NywgMjQ0LCAxOTAsIDU2LCA1NywgMjQ0LCAxMjYsIDU2LCA1NywgMjQ0LCAKKyAgICAyNTMsIDU2LCA1NywgMjQ0LCA0NywgNTYsIDU3LCAyNDQsIDE3NCwgNTYsIDU3LCAyNDQsIDExMCwgNTYsIDU3LCAyNDQsIAorICAgIDIzNywgNTYsIDU3LCAyNDQsIDc4LCA1NiwgNTcsIDI0NCwgMjA1LCA1NiwgNTcsIDI0NCwgMTQxLCA1NiwgNTcsIDI0NSwgCisgICAgMTIsIDU2LCA1NywgMjQ0LCAyMywgNTYsIDU3LCAyNDQsIDE1MCwgNTYsIDU3LCAyNDQsIDg2LCA1NiwgNTcsIDI0NCwgMjEzLCAKKyAgICA1NiwgNTcsIDI0NCwgNTQsIDU2LCA1NywgMjQ0LCAxODEsIDU2LCA1NywgMjQ0LCAxMTcsIDU2LCA1NywgMjQ0LCAyNDQsIAorICAgIDU2LCA1NywgMjQ0LCAzOCwgNTYsIDU3LCAyNDQsIDE2NSwgNTYsIDU3LCAyNDQsIDEwMSwgNTYsIDU3LCAyNDQsIDIyOCwgCisgICAgNTYsIDU3LCAyNDQsIDY5LCA1NiwgNTcsIDI0NCwgMTk2LCA1NiwgNTcsIDI0NCwgMTMyLCA1NiwgNTcsIDI0NSwgMywgNTYsIAorICAgIDU3LCAyNDQsIDMwLCA1NiwgNTcsIDI0NCwgMTU3LCA1NiwgNTcsIDI0NCwgOTMsIDU2LCA1NywgMjQ0LCAyMjAsIDU2LCA1NywgCisgICAgMjQ0LCA2MSwgNTYsIDU3LCAyNDQsIDE4OCwgNTYsIDU3LCAyNDQsIDEyNCwgNTYsIDU3LCAyNDQsIDI1MSwgNTYsIDU3LCAKKyAgICAyNDQsIDQ1LCA1NiwgNTcsIDI0NCwgMTcyLCA1NiwgNTcsIDI0NCwgMTA4LCA1NiwgNTcsIDI0NCwgMjM1LCA1NiwgNTcsIAorICAgIDI0NCwgNzYsIDU2LCA1NywgMjQ0LCAyMDMsIDU2LCA1NywgMjQ0LCAxMzksIDU2LCA1NywgMjQ1LCAxMCwgNTYsIDU3LCAKKyAgICAyNDQsIDI2LCA1NiwgNTcsIDI0NCwgMTUzLCA1NiwgNTcsIDI0NCwgODksIDU2LCA1NywgMjQ0LCAyMTYsIDU2LCA1NywgCisgICAgMjQ0LCA1NywgNTYsIDU3LCAyNDQsIDE4NCwgNTYsIDU3LCAyNDQsIDEyMCwgNTYsIDU3LCAyNDQsIDI0NywgNTYsIDU3LCAKKyAgICAyNDQsIDQxLCA1NiwgNTcsIDI0NCwgMTY4LCA1NiwgNTcsIDI0NCwgMTA0LCA1NiwgNTcsIDI0NCwgMjMxLCA1NiwgNTcsIAorICAgIDI0NCwgNzIsIDU2LCA1NywgMjQ0LCAxOTksIDU2LCA1NywgMjQ0LCAxMzUsIDU2LCA1NywgMjQ1LCA2LCA1NiwgNTcsIDI0NCwgCisgICAgMzMsIDU2LCA1NywgMjQ0LCAxNjAsIDU2LCA1NywgMjQ0LCA5NiwgNTYsIDU3LCAyNDQsIDIyMywgNTYsIDU3LCAyNDQsIDY0LCAKKyAgICA1NiwgNTcsIDI0NCwgMTkxLCA1NiwgNTcsIDI0NCwgMTI3LCA1NiwgNTcsIDI0NCwgMjU0LCA1NiwgNTcsIDI0NCwgNDgsIAorICAgIDU2LCA1NywgMjQ0LCAxNzUsIDU2LCA1NywgMjQ0LCAxMTEsIDU2LCA1NywgMjQ0LCAyMzgsIDU2LCA1NywgMjQ0LCA3OSwgCisgICAgNTYsIDU3LCAyNDQsIDIwNiwgNTYsIDU3LCAyNDQsIDE0MiwgNTYsIDU3LCAyNDUsIDEzLCA4NiwgMjEwLCAxMDgsIDUxLCAyLCAKKyAgICA3OSwgOTEsIDg2LCAyMTAsIDEwOCwgNTEsIDIsIDUwLCA3OSwgOTEsIDkyLCA1MCwgNTEsIDIsIDc5LCA5MSwgODYsIDUwLCAKKyAgICA1MSwgMiwgNzksIDkxLCA0NywgNDgsIDUwLCA1MSwgMiwgNzksIDkxLCA4NiwgMjEwLCAxMDgsIDUxLCAyNDEsIDk4LCAxMzQsIAorICAgIDkyLCA1MCwgNTEsIDI0MSwgOTgsIDEzNCwgODYsIDUwLCA1MSwgMjQxLCA5OCwgMTM0LCAxNzMsIDUxLCAyLCAxOTQsIDkxLCAKKyAgICAxNjcsIDUxLCAyLCAxOTQsIDkxLCAxNjcsIDIxMSwgMzYsIDQ1LCAxNzMsIDIxMSwgMzYsIDQ1LCA5MiwgNTAsIDI0NiwgNzksIAorICAgIDQ1LCA4NiwgNTAsIDI0NiwgNzksIDQ1LCA5MiwgMjExLCAzNiwgMjQ2LCA3OSwgNDUsIDg2LCAyMTEsIDM2LCAyNDYsIDc5LCAKKyAgICA0NSwgODYsIDIxMCwgMTA4LCAyMTEsIDM2LCAyNDYsIDc5LCA0NSwgODYsIDUxLCAyLCAyNDQsIDIxLCAyMTQsIDksIDE2NywgCisgICAgNTEsIDIxMSwgMTMwLCAxMzQsIDE3MywgNTEsIDIxMSwgMTMwLCAxMzQsIDg2LCA1MSwgMiwgMjEyLCAxOTIsIDIsIDc5LCAKKyAgICA5MSwgODYsIDUxLCAyLCAyMTIsIDE5MiwgMiwgNTAsIDc5LCA5MSwgODYsIDIxMCwgMTA4LCA1MSwgMiwgMjEyLCAxOTEsIAorICAgIDg2LCAyMTAsIDEwOCwgNTEsIDIsIDIxMiwgMTkyLCAyLCA3OSwgOTEsIDg2LCAyMTAsIDEwOCwgNTEsIDIsIDIxMiwgMTkyLCAKKyAgICAyLCA1MCwgNzksIDkxLCA5MiwgMjUxLCAyNDUsIDg2LCAyNTEsIDI0NSwgOTIsIDUwLCAyNTEsIDI0NSwgODYsIDUwLCAyNTEsIAorICAgIDI0NSwgOTIsIDUxLCAyMTEsIDEzMCwgNjAsIDI0NSwgMTU2LCA4NiwgNTEsIDIxMSwgMTMwLCA2MCwgMjQ1LCAxNTYsIDkyLCAKKyAgICA1MSwgMjQxLCA5OCwgMjUwLCAxMjksIDIxMSwgMTMwLCA2MCwgMjQ1LCAxNTYsIDg2LCA1MSwgMjQxLCA5OCwgMjUwLCAxMjksIAorICAgIDIxMSwgMTMwLCA2MCwgMjQ1LCAxNTYsIDE0MywgMjA3LCAzNiwgMjMsIDE4OCwgMjQzLCAxMTcsIDQ1LCAxNDMsIDI0MywgCisgICAgMTE3LCAyMywgMTg4LCAyMDcsIDM2LCA0NSwgMTQzLCAyMDcsIDM2LCA1MSwgMiwgMTA5LCAxNDMsIDI0MywgMTE3LCA1MSwgCisgICAgMiwgMTA5LCAxODgsIDI0MywgMTE3LCA1MSwgMiwgMTA5LCAxODgsIDIwNywgMzYsIDUxLCAyLCAxMDksIDE0MywgMjA3LCAKKyAgICAzNiwgNTEsIDIzLCAxNDMsIDI0MywgMTE3LCA0NSwgMTQzLCAyNDMsIDExNywgNTEsIDIzLCAxODgsIDI0MywgMTE3LCA0NSwgCisgICAgMTg4LCAyNDMsIDExNywgNTEsIDIzLCAxODgsIDIwNywgMzYsIDQ1LCAxODgsIDIwNywgMzYsIDUxLCAyMywgMTQzLCAyMDcsIAorICAgIDM2LCA0NSwgMjE4LCAxNDIsIDI0NSwgMTYzLCAyNDcsIDU0LCAyNDIsIDUwLCAyNDUsIDE2MiwgMjQyLCA1MCwgMjQ1LCAKKyAgICAxNjMsIDI0NywgNTQsIDIxOCwgMTQyLCAyNDUsIDE2MiwgMTg4LCAyNDMsIDExNywgNTEsIDI0NywgNTQsIDE0MywgMjQzLCAKKyAgICAxMTcsIDQ1LCAxNDMsIDI0MywgMTE3LCA1MSwgMjQ3LCA1NCwgMTg4LCAyNDMsIDExNywgNDUsIDI0MiwgNTAsIDI0NSwgCisgICAgMTYzLCAyNDcsIDU0LCAxNDMsIDI0MywgMTE3LCA0NSwgMjE4LCAxNDIsIDI0NSwgMTYzLCAyNDcsIDU0LCAxODgsIDI0MywgCisgICAgMTE3LCA0NSwgMTQzLCAyNDMsIDExNywgNTEsIDI0NywgNTQsIDE0MywgMjA3LCAzNiwgNDUsIDE0MywgMjA3LCAzNiwgNTEsIAorICAgIDI0NywgNTQsIDE0MywgMjQzLCAxMTcsIDQ1LCAyMDcsIDY1LCA1MSwgMjIwLCAyMDEsIDI0NSwgMTAyLCAyMTgsIDE2NywgCisgICAgNTEsIDIyMCwgMjAxLCA4NiwgMjEyLCAzMywgMjQ3LCAxNywgMjA5LCAxOTYsIDUxLCAyMjAsIDIwMSwgODYsIDIxMiwgMzMsIAorICAgIDI0NywgMTcsIDI0NCwgNiwgNTEsIDIyMCwgMjAxLCAxNzMsIDIxMiwgMzMsIDI0NywgMTcsIDIzMCwgMzYsIDUxLCAyMjAsIAorICAgIDIwMSwgMTczLCAyMTIsIDMzLCAyNDcsIDE3LCAyMTgsIDE1NiwgMjE4LCAxNTksIDI1MiwgMjIsIDI0NywgMTk0LCA0NSwgCisgICAgMjMwLCAzOSwgMjUyLCAyMiwgMjUyLCA4NywgNDUsIDIxMSwgMTAyLCAyNTIsIDIyLCAyNTIsIDg3LCA0NSwgMjQ5LCAxNTQsIAorICAgIDI1MiwgMjIsIDI1MiwgODcsIDQ1LCAyMTEsIDEwMiwgMjUyLCAyMiwgMjQ3LCAxOTQsIDUxLCAyLCAyMjYsIDIwMSwgMjExLCAKKyAgICAxMDIsIDI1MiwgMjIsIDI1MiwgODcsIDUxLCAyLCAyMjAsIDIxOCwgMjI5LCA5MiwgNDgsIDIxNiwgNTQsIDI0NywgMTk0LCAKKyAgICA0NSwgMjI5LCA5MiwgNDcsIDIxNiwgNTQsIDI1MiwgODcsIDQ1LCAyNTIsIDg3LCAyNDcsIDE5MiwgMjQ3LCAyMzQsIDQ1LCAKKyAgICAyNDcsIDE5NCwgMjQ3LCAxOTIsIDI0NywgMjM0LCA0NSwgODYsIDUxLCA4NCwgMjE1LCAxNDQsIDkyLCA0NSwgOTIsIDUxLCAKKyAgICA4NCwgMjE1LCAxNDQsIDg2LCA0NSwgMjE1LCAxNDQsIDg2LCA1MSwgODQsIDkyLCA0NSwgODYsIDUxLCAyLCAxMDEsIDU1LCAKKyAgICA5MiwgNTEsIDIsIDEwMSwgNTUsIDg2LCA1MSwgMjExLCAyMzMsIDIwNiwgMTk1LCA0NywgNDgsIDUxLCAyMTEsIDIzMywgNSwgCisgICAgMjQ3LCAyMzMsIDE2NywgMjEwLCAxMDgsIDUxLCAyNDEsIDk4LCA1LCAyNDcsIDIzMywgNDcsIDEzOCwgMTIwLCA0OCwgMTM4LCAKKyAgICAxMzAsIDIzOSwgODksIDQ3LCAxMzgsIDEzMCwgNDgsIDEzOCwgMTIwLCAyMzksIDg5LCAxMjAsIDEzOCwgNDgsIDEzMCwgCisgICAgMTM4LCA0NywgMjM5LCA4OSwgMTIwLCAxMzgsIDQ3LCAxMzAsIDEzOCwgNDgsIDIzOSwgODksIDQ3LCAxMzgsIDEyMCwgNDgsIAorICAgIDEzOCwgMTIwLCAyMzksIDg5LCAxMjAsIDEzOCwgNDgsIDEzMCwgMTM4LCA0OCwgMjM5LCA4OSwgNDcsIDEzOCwgMTMwLCA0OCwgCisgICAgMTM4LCAxMzAsIDIzOSwgODksIDEyMCwgMTM4LCA0NywgMTMwLCAxMzgsIDQ3LCAyMzksIDg5LCA5MiwgMjM5LCA5MCwgMiwgCisgICAgMTM4LCAxMjAsIDIxMSwgMTMwLCAxMzQsIDg2LCAyMzksIDkwLCAyLCAxMzgsIDEyMCwgMjExLCAxMzAsIDEzNCwgMTY3LCAKKyAgICAyMzksIDkwLCAyLCAxMzgsIDQ4LCAyMTEsIDEzMCwgMTM0LCAxNzMsIDIzOSwgOTAsIDIsIDEzOCwgNDgsIDIxMSwgMTMwLCAKKyAgICAxMzQsIDkyLCAyMzksIDkwLCAyLCAxMzgsIDEzMCwgMjExLCAxMzAsIDEzNCwgODYsIDIzOSwgOTAsIDIsIDEzOCwgMTMwLCAKKyAgICAyMTEsIDEzMCwgMTM0LCAxNjcsIDIzOSwgOTAsIDIsIDEzOCwgNDcsIDIxMSwgMTMwLCAxMzQsIDE3MywgMjM5LCA5MCwgMiwgCisgICAgMTM4LCA0NywgMjExLCAxMzAsIDEzNCwgOTIsIDIzOSwgOTAsIDIsIDEzOCwgMTIwLCAyNDEsIDk4LCAxMzQsIDg2LCAyMzksIAorICAgIDkwLCAyLCAxMzgsIDEyMCwgMjQxLCA5OCwgMTM0LCAxNjcsIDIzOSwgOTAsIDIsIDEzOCwgNDgsIDI0MSwgOTgsIDEzNCwgCisgICAgMTczLCAyMzksIDkwLCAyLCAxMzgsIDQ4LCAyNDEsIDk4LCAxMzQsIDkyLCAyMzksIDkwLCAyLCAxMzgsIDEzMCwgMjQxLCAKKyAgICA5OCwgMTM0LCA4NiwgMjM5LCA5MCwgMiwgMTM4LCAxMzAsIDI0MSwgOTgsIDEzNCwgMTY3LCAyMzksIDkwLCAyLCAxMzgsIAorICAgIDQ3LCAyNDEsIDk4LCAxMzQsIDE3MywgMjM5LCA5MCwgMiwgMTM4LCA0NywgMjQxLCA5OCwgMTM0LCA5MiwgMjM5LCA5MCwgMiwgCisgICAgMTM4LCAxMjAsIDg0LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAyNDQsIDgsIDE2NywgMjM5LCA5MCwgMiwgMTM4LCA0NywgMjUwLCAKKyAgICAxMiwgMTY3LCAyMzksIDkwLCAyLCAxMzgsIDIxOCwgMTY3LCA4NiwgMjM5LCA5MCwgMiwgMTM4LCAxMjAsIDg0LCA4NiwgCisgICAgMjM5LCA5MCwgMiwgMTM4LCAyNDQsIDgsIDE3MywgMjM5LCA5MCwgMiwgMTM4LCA0NywgMjUwLCAxMiwgMTczLCAyMzksIDkwLCAKKyAgICAyLCAxMzgsIDIxOCwgMTY3LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAxMjAsIDg0LCA4NiwgMjM5LCA5MCwgMiwgMTM4LCAyMDksIAorICAgIDIwNiwgOTIsIDIzOSwgOTAsIDIsIDEzOCwgMTMwLCA4NCwgODYsIDIzOSwgOTAsIDIsIDEzOCwgMjQ0LCA4LCA4NiwgMjM5LCAKKyAgICA5MCwgMiwgMTM4LCAxMjAsIDg0LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAyMDksIDIwNiwgODYsIDIzOSwgOTAsIDIsIDEzOCwgCisgICAgMTMwLCA4NCwgOTIsIDIzOSwgOTAsIDIsIDEzOCwgMjQ0LCA4LCA5MiwgMjM5LCA5MCwgMiwgMTM4LCAxMjAsIDg0LCAxNTIsIAorICAgIDI0NiwgNzgsIDkyLCAyMzksIDkwLCAyLCAxMzgsIDEzMCwgMjUwLCAyNiwgMTUyLCAyNDYsIDc4LCA4NiwgMjM5LCA5MCwgMiwgCisgICAgMTM4LCAxMjAsIDg0LCAxNTIsIDI0NiwgNzgsIDg2LCAyMzksIDkwLCAyLCAxMzgsIDEzMCwgMjUwLCAyNiwgMTUyLCAyNDYsIAorICAgIDc4LCAxNjcsIDIzOSwgOTAsIDIsIDEzOCwgNDcsIDI1MCwgMTIsIDE3MywgMjM5LCA5MCwgMiwgMTM4LCAyMTgsIDE2NywgCisgICAgMTczLCAyMzksIDkwLCAyLCAxMzgsIDQ3LCAyNTAsIDEyLCAxNjcsIDIzOSwgOTAsIDIsIDEzOCwgMjE4LCAxNjcsIDQ4LCAKKyAgICA1MCwgNTEsIDIsIDIxOCwgOTMsIDIzOSwgNjgsIDI0MiwgMjQyLCAzLCA4NCwgODYsIDQ1LCAyMTEsIDE4MSwgMjIyLCAxMzMsIAorICAgIDg0LCA4NiwgNDUsIDkyLCA1MSwgODQsIDIxMSwgMTgxLCAyMjIsIDEzMiwgODYsIDUxLCA4NCwgMjExLCAxODEsIDIyMiwgCisgICAgMTMyLCA4NiwgNTEsIDg0LCAyNTIsIDE0OSwgMTQ2LCAxMjQsIDIzMCwgMTAsIDg0LCA5MiwgNDUsIDkyLCA1MSwgMjExLCAKKyAgICAyMzMsIDIzMCwgOSwgMjM5LCAyMzAsIDg0LCA4NiwgNDUsIDIxMywgMTgyLCA4NCwgODYsIDQ1LCA5MiwgNTEsIDIxMSwgCisgICAgMjMzLCAyMTMsIDE4MSwgMjEzLCAxMzgsIDg0LCA5MiwgNDUsIDQ3LCAyNDEsIDIxNCwgMjEyLCAxOTEsIDQ4LCAyNDEsIAorICAgIDIxNCwgMjEyLCAxOTEsIDEyMCwgMjQxLCAyMTQsIDIxMiwgMTkxLCAxMzAsIDI0MSwgMjE0LCAyMTIsIDE5MSwgMjExLCAzNiwgCisgICAgNzksIDI1MCwgMTI5LCAyNDUsIDIzMywgMjA1LCAxNjAsIDIyNCwgNDEsIDIxNCwgMTE2LCAyMDUsIDE2MCwgMjI0LCA0MSwgCisgICAgMjEwLCA5NSwgMjQ3LCAxNjIsIDQ3LCA1OSwgMjQ3LCAyNiwgMTQ1LCA0OCwgNTksIDI0NywgMjYsIDE0NSwgNDcsIDU5LCAKKyAgICAyMjEsIDIxNiwgNDgsIDU5LCAyMjEsIDIxNiwgMjA1LCAxNjAsIDIyNCwgNDEsIDQ3LCAyMzMsIDg0LCAxNDUsIDIwNSwgCisgICAgMTYwLCAyMjQsIDQxLCA0OCwgMjMzLCA4NCwgMTQ1LCAyMDUsIDE2MCwgMjI0LCA0MSwgNDcsIDI0OSwgMjIzLCAxNDUsIAorICAgIDIwNSwgMTYwLCAyMjQsIDQxLCA0OCwgMjQ5LCAyMjMsIDE0NSwgNDcsIDQ5LCAyNDksIDEzNCwgMiwgMjA5LCAyMjYsIDQ4LCAKKyAgICA0OSwgMjQ5LCAxMzQsIDIsIDIwOSwgMjI2LCA0NywgNDksIDI0OSwgMTM0LCAyLCAyMTEsIDIwOCwgMjMzLCA2OSwgMjExLCAKKyAgICAxMDIsIDI0NywgOTEsIDQ4LCA0OSwgMjQ5LCAxMzQsIDIsIDIxMSwgMjA4LCAyMzMsIDY5LCAyNDksIDE1NCwgMjQ3LCA5MSwgCisgICAgNDcsIDQ5LCAyNDksIDEzNCwgMiwgMjExLCAyMDgsIDIzMywgNjksIDI0OSwgMTU0LCAyNDcsIDkxLCA0OCwgNDksIDI0OSwgCisgICAgMTM0LCAyLCAyMTEsIDIwOCwgMjMzLCA2OSwgMjExLCAxMDIsIDI0NywgOTEsIDQ3LCAyNTIsIDEwOSwgMjQ5LCAxMzQsIDIsIAorICAgIDI0NSwgMjMsIDQ4LCAyNTIsIDEwOSwgMjQ5LCAxMzQsIDIsIDI0NSwgMjMsIDQ3LCAyNTIsIDIyLCAyMzAsIDEwLCAxNDUsIAorICAgIDQ4LCAyNTIsIDIyLCAyMzksIDIzMCwgMTQ1LCA1MCwgNDcsIDI1MiwgMjIsIDIzOSwgMjMwLCAxNDUsIDUwLCA0OCwgMjUyLCAKKyAgICAyMiwgMjMwLCAxMCwgMTQ1LCA0NywgNjAsIDIxMSwgOTMsIDIxNSwgMjA0LCAxNDUsIDQ4LCA2MCwgMjExLCA5MywgMjE1LCAKKyAgICAyMDQsIDE0NSwgMjQ0LCAyMSwgMjQyLCA4LCA3OSwgMjA1LCAzMSwgMjI5LCAyMDUsIDIyNywgMTE2LCAyNTIsIDEwOSwgCisgICAgMjIyLCAxMzUsIDIzMCwgNDYsIDQ4LCAyNTIsIDEwOSwgMjA5LCA1MywgMiwgMjE0LCAxMDcsIDIyNywgMTE2LCA0OCwgMjUyLCAKKyAgICAxMDksIDIsIDI0NSwgMjMsIDI1MiwgMTA5LCAyLCAyMTgsIDEsIDIzMywgMjUsIDI1MywgOSwgMjUyLCAxMDgsIDIxNCwgCisgICAgMTMzLCAyNTIsIDEwOSwgMjIyLCAxMzUsIDIzMCwgNDYsIDIxNCwgMTMzLCAyNTIsIDEwOSwgMjIyLCAxMzUsIDIwOSwgMjA2LCAKKyAgICAyMDEsIDI1MiwgMTA4LCAyMTgsIDIyNCwgMjUyLCAxMDgsIDI1MiwgMTA5LCAyLCAyMDksIDIyNiwgMjE4LCAyMjQsIDI1MiwgCisgICAgMTA5LCAyLCAyMDksIDIyNiwgMjIyLCAyMjIsIDI1MiwgMTA5LCAyMjIsIDEzNSwgMjA5LCAyMDYsIDIyMiwgMjIyLCAyNTIsIAorICAgIDEwOSwgMjIyLCAxMzUsIDI0NCwgOCwgMjI3LCAxMTYsIDI1MiwgMTA5LCAyLCAyMjIsIDE0MiwgMjUyLCAwLCAyNDMsIDMxLCAKKyAgICAyMzMsIDY5LCA1MSwgMjIwLCAyMDEsIDEyMCwgMjMsIDIxOCwgMTY3LCAyMjcsIDExNiwgMjUyLCAxMDksIDIsIDIyMiwgCisgICAgMTQyLCAyNTIsIDAsIDI0MywgMzEsIDIzMywgNjksIDUxLCAyMjAsIDIwMSwgMTIwLCAyMywgMjMwLCA0NiwgMjI3LCAxMTYsIAorICAgIDI1MiwgMTA5LCAyLCAyMjIsIDE0MiwgMjUyLCAwLCAyNDMsIDMxLCAyMzMsIDY5LCA1MSwgMjIwLCAyMDEsIDEzMCwgMjMsIAorICAgIDIxOCwgMTY3LCAyMjcsIDExNiwgMjUyLCAxMDksIDIsIDIyMiwgMTQyLCAyNTIsIDAsIDI0MywgMzEsIDIzMywgNjksIDUxLCAKKyAgICAyMjAsIDIwMSwgMTMwLCAyMywgMjMwLCA0NiwgMjI3LCAxMTYsIDI1MiwgMTA5LCAyLCAyMjIsIDE0MiwgMjUyLCAwLCAyNDMsIAorICAgIDMxLCAyMzMsIDY5LCA1MSwgMjIwLCAyMDEsIDQ4LCAyMywgMjA5LCAyMDYsIDIyNywgMTE2LCAyNTIsIDEwOSwgMiwgMjIyLCAKKyAgICAxNDIsIDI1MiwgMCwgMjQzLCAzMSwgMjMzLCA2OSwgNTEsIDIyMCwgMjAxLCA0NywgMjMsIDIwOSwgMjA2LCAyMjcsIDExNiwgCisgICAgMjUyLCAxMDksIDIsIDIyMiwgMTQyLCAyNTIsIDAsIDI0MywgMzEsIDIzMywgNjksIDUxLCAyMjAsIDIwMSwgNDgsIDIzLCAKKyAgICAyNDQsIDgsIDIyNywgMTE2LCAyNTIsIDEwOSwgMiwgMjIyLCAxNDIsIDI1MiwgMCwgMjQzLCAzMSwgMjMzLCA2OSwgNTEsIAorICAgIDIyMCwgMjAxLCA0NywgMjMsIDI0NCwgOCwgMjE4LCAyMjQsIDI0MywgNDMsIDIxNiwgMjgsIDI0MywgNDMsIDIxNiwgMjksIAorICAgIDIsIDIyMiwgODYsIDI0MywgNDMsIDIxNiwgMjksIDIsIDUsIDI0NywgMjM0LCA1MiwgMjQzLCA0MywgMjE2LCAyOSwgMiwgCisgICAgNDgsIDUxLCA1MiwgMjQzLCA0MywgMjE2LCAyOSwgMiwgNDcsIDUxLCA1MiwgMjQ3LCAyMzQsIDIsIDE5NCwgMTM0LCAzOSwgCisgICAgNzksIDEzNCwgMzksIDIyMSwgMjIxLCAzOSwgMjE4LCAyMjUsIDIxNCwgMTgwLCAzOSwgMjIxLCAxMTgsIDI0NywgMjM0LCAKKyAgICAyNDUsIDgwLCAyNDksIDQ2LCAxOTQsIDI1MCwgMTI5LCAyMywgMjExLCAxMDIsIDE2MCwgMjQ1LCA4MCwgMjQ5LCA0NiwgNzksIAorICAgIDEzNCwgMjQ3LCAyMzQsIDIsIDIxMywgMTQwLCAyMDYsIDE5NSwgMzksIDI1MiwgODUsIDI0NSwgNzUsIDUzLCAxMjAsIDUxLCAKKyAgICAyMTEsIDIzMywgMjQ3LCAyMzMsIDM5LCA1OSwgMjQ5LCA4NSwgMzksIDI0OSwgODUsIDM5LCAyMzAsIDksIDM5LCAyMzksIAorICAgIDIyOSwgMjQ3LCAyMzQsIDIsIDUsIDI0NywgMjM0LCAyMTEsIDEzMCwgMjEyLCA0MiwgMjE4LCAxNjcsIDI0NywgMjM0LCAyLCAKKyAgICAxMTgsIDE5NCwgMjEzLCAyMTMsIDIxMSwgMTMwLCAyMTIsIDQyLCAyMTgsIDE2NywgOTgsIDIxOCwgMTQyLCAyNDUsIDE2MywgCisgICAgMjE0LCAyMzUsIDk4LCAyNDIsIDUwLCAyNDUsIDE2MywgMjE0LCAyMzUsIDk4LCAyNTEsIDIwOSwgOTgsIDUsIDI0NywgMjMzLCAKKyAgICA5OCwgMjE0LCAxMDcsIDExOCwgMjMyLCAxMTksIDIxNCwgMTA1LCAyMTEsIDUyLCAyLCA2NywgNTIsIDIxMSwgNTIsIDIsIAorICAgIDIwOSwgMjI2LCAyMTgsIDEsIDIzMywgNjksIDIxMSwgNTEsIDIxMSwgNTIsIDIsIDIxNiwgMzUsIDI1MSwgMjAwLCAyNDksIAorICAgIDE1MywgNDgsIDIxMSwgNTIsIDg0LCA0NywgMjExLCA1MSwgNDcsIDIxMSwgNTIsIDI1MCwgMTIsIDc5LCAxMzQsIDc5LCAKKyAgICAyNTAsIDEyOSwgMjUwLCAxMiwgNDgsIDIxMSwgNTEsIDI0OSwgMTQyLCAyLCA0NywgMTYwLCAyNDksIDIwMiwgMjQ5LCAxNDIsIAorICAgIDIsIDQ4LCAxNjAsIDI0OSwgMjAyLCA2MCwgMjQ5LCAxNDEsIDI5LCAyLCA0NywgMTYwLCAyNDksIDIwMiwgMjksIDIsIDQ4LCAKKyAgICAxNjAsIDI0OSwgMjAyLCA1OSwgMjM4LCA1NiwgNjAsIDIzOCwgNTYsIDQ3LCAyMDcsIDE0LCAyNDIsIDgsIDQ4LCAyMDcsIAorICAgIDE0LCAyNDIsIDgsIDQ3LCA1MCwgMjA3LCAxNCwgMjQyLCA4LCA0OCwgNTAsIDIwNywgMTQsIDI0MiwgOCwgMjMzLCA2MSwgCisgICAgMjMzLCA0NSwgMjExLCAyMDQsIDEzMSwgMjMzLCA0NSwgMjMzLCA0NiwgMjI1LCAxMDUsIDIsIDc5LCAxMzQsIDI0NCwgMTUsIAorICAgIDIyNiwgOTcsIDQ5LCAyLCAyNDcsIDExMiwgMjIyLCA5MCwgMjMzLCA1OCwgMjUxLCAyMzEsIDIxNSwgMTEwLCAyMjAsIDExNSwgCisgICAgMjQyLCAyNDIsIDMsIDIzLCAyMTQsIDIzNywgMjIxLCAyMjEsIDI0MiwgMjQyLCAzLCAyMywgMjE0LCAyMzcsIDIyMSwgMjIyLCAKKyAgICAyLCAyMTEsIDE4MSwgNTIsIDIzNywgMTczLCAyMTEsIDEzMCwgMjMsIDIxNCwgMjM3LCAyMjEsIDIyMSwgMjQwLCAyOCwgCisgICAgMjE0LCAyNSwgMjEyLCAzMCwgMjQ0LCA3LCAyMTEsIDUyLCAyLCA0NywgMTYwLCAyNDksIDIwMiwgMjQ0LCA3LCAyMTEsIDUyLCAKKyAgICAyLCA0OCwgMTYwLCAyNDksIDIwMiwgNjAsIDI0NSwgMTU3LCAyLCAxMzAsIDQ1LCA2MCwgMjI5LCA4OCwgNTksIDI0NywgCisgICAgMjM0LCAyLCAxMzAsIDQ1LCA2MCwgMjQ3LCAyMzQsIDIsIDEzMCwgNDUsIDI0MiwgMjI4LCA1OSwgMjE0LCAxMDcsIDI0MiwgCisgICAgMjI4LCA2MCwgMjE0LCAxMDcsIDI0MiwgMjI4LCA1OSwgMjQ1LCAxNTYsIDI0MiwgMjI4LCA2MCwgMjQ1LCAxNTYsIDI0MiwgCisgICAgMjI4LCA1OSwgMjQ3LCAyMzMsIDI0MiwgMjI4LCA2MCwgMjQ3LCAyMzMsIDIxOCwgNDEsIDIxOCwgMjI1LCAyMTQsIDE4MSwgCisgICAgMjIyLCAxMzIsIDIxNCwgMTgxLCAyLCAyMjIsIDg2LCAyMTgsIDIyNSwgMjE0LCAxODEsIDIsIDE5NCwgOTEsIDI0OSwgMjMxLCAKKyAgICAyMTQsIDE4MCwgMjQ5LCAyMzEsIDIxOCwgMjI1LCAyMTQsIDE4MCwgNTAsIDIyMCwgMjE4LCAyMTEsIDM2LCAyMjAsIDIxOCwgCisgICAgMjMwLCA0MSwgMjQ3LCAxOCwgMjUyLCAxMDksIDE0NSwgMjE4LCAxNjIsIDI0NywgMTgsIDI1MiwgMTA5LCAxNDUsIDIxMSwgCisgICAgMTY4LCAyMjYsIDE5OSwgMjI2LCAzMiwgMzksIDY3LCAyMjIsIDEzMiwgMjI2LCAzMiwgMzksIDEwMSwgMjIyLCAxMzIsIAorICAgIDIyNiwgMzIsIDM5LCAyOSwgMjIyLCAxMzIsIDIyNiwgMzIsIDIwOSwgMjE5LCAyMjIsIDEzMywgMiwgMjQ1LCAyMywgMjI2LCAKKyAgICAzMiwgMjA5LCAyMTksIDIyMiwgMTMzLCAyLCAyMjAsIDIxOCwgMjI2LCAzMiwgNDksIDIzMywgOCwgMjIyLCAxMzIsIDIyNiwgCisgICAgMzIsIDQ5LCAyMDksIDIxOSwgMjIyLCAxMzIsIDExOCwgMjI5LCAxMzQsIDIzLCAyMjIsIDEzMiwgMTE4LCAyMjksIDEzNCwgCisgICAgMjIyLCAxMjMsIDIyMiwgMTMyLCAyMjYsIDMyLCAyOSwgMjIyLCAxMzIsIDIyNiwgMTcyLCAxMTgsIDIxMywgMTYwLCAyMTMsIAorICAgIDE1OCwgMiwgMjMzLCAyMSwgMjE5LCAyMDcsIDIzMywgMjIsIDIyMiwgMTMyLCAyNDEsIDIyMiwgMjIxLCAyMTEsIDIzMywgCisgICAgMjEsIDIzMywgMjIsIDIsIDUwLCA5MSwgMjMzLCAyMiwgMjUxLCAxNjUsIDIsIDIxNCwgMjM1LCAyNDcsIDIyOSwgMjQxLCAKKyAgICA3OSwgMjUyLCA4NywgMjMzLCAxOSwgMjI5LCAyMDYsIDIzMywgMjAsIDIsIDIxOSwgMzYsIDIyMSwgMTkyLCAyNTEsIDI1MywgCisgICAgMjIwLCAxOTUsIDIyOSwgMjA2LCAyMzMsIDIwLCAyLCAyMTYsIDU0LCAyMjEsIDE5MiwgMjUxLCAyNTMsIDIyMCwgMTk1LCAKKyAgICAyMjksIDIwNiwgMjMzLCAyMCwgMjI0LCA0MywgMjMzLCA2MywgMjEyLCA0MiwgMjIwLCAxOTUsIDIzMywgMjIsIDI1MSwgCisgICAgMjUzLCAzMiwgMjIwLCAyMDUsIDIyMiwgMTMyLCAyMTksIDIwMSwgMjMzLCAyMiwgMjIyLCAxMzIsIDIzMywgMjIsIDIsIDkyLCAKKyAgICA1MSwgMiwgMTA5LCAyMzMsIDIyLCAyLCAyOSwgNTMsIDIzMywgMjIsIDIsIDIzMywgNywgMjMzLCAyMiwgMiwgMjA5LCAyMTgsIAorICAgIDIzMywgMjIsIDIsIDIyMiwgODYsIDIzMywgMjIsIDIsIDIwOSwgMjI2LCAyMzIsIDEyMCwgMjMwLCA4NiwgNDcsIDIxMSwgCisgICAgNTIsIDIyMiwgMTMyLCAyMDUsIDE2MCwgMjI0LCA0MSwgMjE3LCAxMDYsIDI0NywgMTQ1LCAyMDUsIDE2MCwgMjI0LCA0MSwgCisgICAgMjE3LCAxMDYsIDIyMSwgMCwgMjA1LCAxNjAsIDIyNCwgNDEsIDIxNywgMTA2LCAyMjAsIDExMCwgMTAxLCAzLCAyLCA1LCAKKyAgICAyNDcsIDIzNCwgNTIsIDEwMSwgMywgMiwgMjQ3LCAyMjgsIDI1MywgMjIsIDUyLCAxMDEsIDMsIDIsIDIxMSwgMTgxLCA1MiwgCisgICAgMTAxLCAzLCAyLCA2NywgNTUsIDEwMSwgMywgMiwgMjExLCAxODEsIDU1LCAxMDEsIDMsIDIsIDIxMywgMTgzLCAxMDUsIAorICAgIDEwMSwgMywgMiwgNjAsIDIxMSwgNTEsIDIyNiwgMjAyLCAzLCAyLCAyNDcsIDE1NiwgNTIsIDIyNiwgMjAyLCAzLCAyLCA2NywgCisgICAgNTUsIDIyNiwgMjAyLCAzLCAyLCAyNDIsIDUwLCAyNDUsIDIxLCAyMjYsIDIwMiwgMywgMiwgMjE4LCAxNDIsIDI0NSwgMjEsIAorICAgIDEwMSwgMywgMjMzLCA2OSwgNDcsIDE2MCwgMjQ3LCAyMzMsIDEwMSwgMywgMjMzLCA2OSwgNDgsIDE2MCwgMjQ3LCAyMzMsIAorICAgIDIwOSwgMzgsIDIyMiwgMTIzLCAyNDcsIDYwLCAyMjAsIDExNSwgMjI2LCA5NCwgMywgMiwgNjcsIDUyLCAyMjYsIDk0LCAzLCAKKyAgICAyLCAyMDksIDIyNiwgMjE2LCA1MSwgMjIwLCAxMTYsIDIsIDI0OSwgMTU0LCAyNDcsIDE5MSwgMjE0LCAyMTMsIDIyMCwgCisgICAgMTE1LCAyMjYsIDk0LCAzLCAyMzMsIDY5LCA0NywgMTYwLCAyNDcsIDIzMywgMjI2LCA5NCwgMywgMjMzLCA2OSwgNDgsIAorICAgIDE2MCwgMjQ3LCAyMzMsIDM5LCAyMjYsIDk0LCAzLCAyLCAyNDcsIDIyOCwgMjUzLCAyMSwgMjI2LCA5NCwgMywgMjMzLCA2OSwgCisgICAgNTAsIDI0NywgMjMzLCAzOSwgMjQ1LCA3NSwgNTMsIDEwMSwgMywgMjMzLCA2OSwgMjExLCA1MSwgMjI2LCAyMDIsIDMsIAorICAgIDIzMywgNjksIDIxMSwgNTEsIDIyNiwgOTQsIDMsIDIzMywgNjksIDIxMSwgNTEsIDIzMywgMTYsIDIyMCwgMTE1LCAyMTgsIAorICAgIDE1NywgMjMzLCAxNiwgMjIwLCAxMTUsIDIwNSwgMTYwLCAyMjQsIDQxLCAyMTksIDEwLCAyNDcsIDE0NSwgMjUyLCAxMzQsIAorICAgIDIyMiwgMTIzLCAyNDcsIDk2LCAyMzMsIDgsIDIsIDI0NSwgMjMsIDIwOSwgMjE5LCAyLCAyMjYsIDIwMiwgNTMsIDIwOSwgCisgICAgMjE5LCAyLCAyMjIsIDg2LCAyMzMsIDgsIDIsIDIyMiwgODYsIDIzMywgOCwgMiwgMjI5LCAxMzQsIDI1MiwgMTE3LCAyMDksIAorICAgIDIxOSwgMiwgMjI5LCAxMzQsIDIyMiwgMTIyLCAyMDksIDIxOSwgODQsIDIzMywgNywgMjMzLCA4LCA4NCwgMjA5LCAyMTgsIAorICAgIDIwOSwgMjE5LCA4NCwgMjUwLCAxMjksIDg0LCAyMzMsIDcsIDIzMywgOCwgODQsIDI1MCwgMTI5LCA4NCwgMjA5LCAyMTgsIAorICAgIDIwOSwgMjE5LCAyNTAsIDEyLCAyMywgMjMyLCAxMTksIDIsIDIwOSwgMjE4LCAyMzMsIDgsIDI1MCwgMTIsIDIzLCAyMzIsIAorICAgIDExOSwgMiwgMjMzLCA3LCAyNDcsIDE5MiwgMjA5LCAyMTksIDIsIDIxNiwgMzQsIDI0NywgMTkyLCAyMzMsIDgsIDIsIDIxNiwgCisgICAgMzQsIDUwLCA0OSwgMjMzLCA3LCA1MCwgNDksIDIwOSwgMjE4LCAyNDcsIDE5MiwgMjA5LCAyMTksIDIsIDIxNiwgMzUsIDIzLCAKKyAgICAyMTQsIDIxMywgMjIwLCAxMTUsIDIyOSwgMTM0LCAyMywgMiwgNjcsIDUyLCAyMjksIDEzNCwgMjIyLCAxMjMsIDIsIDY3LCAKKyAgICA1MiwgNTAsIDIyOSwgMTM0LCAyNTIsIDExNywgNTAsIDIyOSwgMTM0LCAyMjIsIDEyMiwgMTE4LCAyMzMsIDksIDIyOSwgCisgICAgMTM0LCAyNTIsIDExNywgMTE4LCAyMzMsIDksIDIyOSwgMTM0LCAyMjIsIDEyMiwgMjE0LCAyMjEsIDIzMCwgODYsIDIyMiwgCisgICAgMTIyLCAyMTQsIDIyMSwgMjMwLCA4NiwgMjUyLCAxMTcsIDIyOSwgMTM0LCAyMjIsIDEyMywgMjIyLCA4MywgMjI5LCAxMzQsIAorICAgIDI1MiwgMTE3LCAyMjksIDEzNCwgMjMsIDIsIDIyNiwgMjQ3LCAyMTQsIDksIDIyOSwgMTM0LCAyMjIsIDEyMywgMiwgMjI2LCAKKyAgICAyNDcsIDIxNCwgOSwgMjI5LCAxMzQsIDIzLCAyLCAxOTQsIDI0NiwgNzgsIDIyOSwgMTM0LCAyMjIsIDEyMywgMiwgMTk0LCAKKyAgICAyNDYsIDc4LCAyMjksIDEzNCwgMjMsIDIsIDUwLCAyMjIsIDg2LCAyMjksIDEzNCwgMjMsIDIsIDIwOSwgMjI2LCAyMjksIAorICAgIDEzNCwgMjMsIDIsIDUwLCAyMDksIDIyNiwgNSwgMjA5LCAzNSwgMiwgMjA5LCAyMjYsIDIyOSwgMTM0LCAyMjIsIDEyMywgMiwgCisgICAgNTAsIDIyMiwgODYsIDIyOSwgMTM0LCAyMjIsIDEyMywgMiwgNTAsIDIwOSwgMjI2LCAyMDUsIDE2MCwgMjI0LCA0MSwgMjQ1LCAKKyAgICAzMiwgMjUyLCA3NywgMjA1LCAxNjAsIDIyNCwgNDEsIDIxOSwgNzIsIDI1MiwgNzcsIDI0MiwgMjQyLCAzLCAyLCA2NywgNTUsIAorICAgIDIzNywgMTczLCAyLCA2NywgNTIsIDIxMSwgMzYsIDE5NCwgMjUwLCAxMjksIDIsIDUwLCA3OSwgOTEsIDIxMSwgMzYsIDE5NCwgCisgICAgMjUwLCAxMjksIDIsIDIxMSwgMzYsIDc5LCA5MSwgMjExLCAxODEsIDIyMiwgMTMzLCAyLCA2NywgNTIsIDIxMSwgMTgxLCAKKyAgICAyMjIsIDEzMywgMiwgMjE4LCAxNDIsIDI0NSwgMjEsIDIxNSwgNDgsIDIyNiwgMjAyLCAyMTUsIDQ3LCAyNDcsIDEzMiwgMiwgCisgICAgNjcsIDUyLCAyNDIsIDI0MiwgMiwgMjUxLCAyMDksIDI1MiwgMTQ5LCAxNDYsIDIxMSwgMTMwLCAyLCAyNDcsIDIyOCwgMjUzLCAKKyAgICAyMSwgMjUyLCA0NCwgMTQ2LCAyMjIsIDEyMywgMTQ2LCAxMjQsIDI0MiwgMjQyLCAzLCA4NCwgMTAxLCA1MywgMTAxLCAzLCAKKyAgICA4NCwgMjQyLCAyNDIsIDUzLCAyNDIsIDI0MiwgMywgODQsIDIxMSwgMTgxLCAyMjIsIDEzMiwgNTAsIDI0NywgMTYzLCAyNDIsIAorICAgIDI0MywgMTE4LCAyNDcsIDEyNywgMjQyLCAyNDIsIDIxNSwgNjIsIDEyOSwgMjQ3LCAxMjcsIDI0MiwgMjQyLCAyMTUsIDYyLCAKKyAgICAyNDIsIDI0MiwgMywgMiwgMTE4LCAxNzcsIDg0LCAyMywgMTE4LCAxNzcsIDU1LCAyNDIsIDIzNywgMiwgMjQxLCAxMjUsIAorICAgIDE3NywgNTIsIDIzMCwgMTAsIDIsIDI0NywgMjM0LCAyMzMsIDI1LCAyMzksIDIzMCwgMiwgMjQ3LCAyMzQsIDIzMywgMjUsIAorICAgIDIzMCwgMTAsIDIsIDIxOSwgMTk2LCAxNDEsIDUyLCAyMzksIDIzMCwgMiwgMjE5LCAxOTYsIDE0MSwgNTIsIDIzMCwgMTAsIAorICAgIDIyMiwgMTIzLCAyMTQsIDIzNywgMTQ2LCAxMjQsIDIzOSwgMjMwLCAyMjIsIDEyMywgMjE0LCAyMzcsIDE0NiwgMTI0LCAKKyAgICAyMzAsIDEwLCAyMjIsIDEyMywgMjE0LCAyMzcsIDE0NiwgMjExLCAxMzAsIDIsIDY3LCAyMzMsIDI1LCAyMzksIDIzMCwgCisgICAgMjIyLCAxMjMsIDIxNCwgMjM3LCAxNDYsIDIxMSwgMTMwLCAyLCA2NywgMjMzLCAyNSwgMjMwLCAxMCwgMjIyLCAxMjMsIAorICAgIDIxNCwgMjM3LCAxNDYsIDIxMSwgMTMwLCAyLCA2NywgNTIsIDIzOSwgMjMwLCAyMjIsIDEyMywgMjE0LCAyMzcsIDE0NiwgCisgICAgMjExLCAxMzAsIDIsIDY3LCA1MiwgMjMwLCAxMCwgMjIyLCAxMjMsIDIxNCwgMjM3LCAxNDYsIDIxMSwgMTMwLCAyLCA2NywgCisgICAgODQsIDIxOCwgMTY3LCAyMzksIDIzMCwgMjIyLCAxMjMsIDIxNCwgMjM3LCAxNDYsIDIxMSwgMTMwLCAyLCA2NywgODQsIAorICAgIDIzMCwgNDYsIDIzMCwgMTAsIDIyMiwgMTIzLCAyNTIsIDQ1LCAyMzksIDIzMCwgMjIyLCAxMjMsIDI1MiwgNDUsIDIzMCwgCisgICAgMTAsIDIzLCAyMTUsIDM5LCAyMjQsIDQzLCAxNDYsIDEyNCwgMjM5LCAyMzAsIDIzLCAyMTUsIDM5LCAyMjQsIDQzLCAxNDYsIAorICAgIDEyNCwgMjMwLCAxMCwgMjMsIDIyNCwgNDMsIDI1MiwgNDUsIDIzOSwgMjMwLCAyMywgMjI0LCA0MywgMjUyLCA0NSwgMjMwLCAKKyAgICAxMCwgODQsIDI0NCwgMTQsIDE0NiwgODQsIDIzOSwgMjI5LCAyMzksIDIzMCwgODQsIDI0NCwgMTQsIDE0NiwgODQsIDIzMCwgCisgICAgOSwgMjMwLCAxMCwgODQsIDIxNSwgNDgsIDIyMiwgMTIzLCAyNDIsIDI0MywgMjM5LCAyMzAsIDg0LCAyMTUsIDQ4LCAyMjIsIAorICAgIDEyMywgMjQyLCAyNDMsIDIzMCwgMTAsIDg0LCAyMTUsIDQ4LCA4NCwgMjM5LCAyMjksIDIzOSwgMjMwLCA4NCwgMjE1LCA0OCwgCisgICAgODQsIDIzMCwgOSwgMjMwLCAxMCwgODQsIDIzOSwgMjMwLCA4NCwgMjQ0LCAxNCwgMjQyLCAyNDMsIDIzOSwgMjMwLCA4NCwgCisgICAgMjMwLCAxMCwgODQsIDI0NCwgMTQsIDI0MiwgMjQzLCAyMzAsIDEwLCA4NCwgMjE0LCAyMzcsIDE0NiwgODQsIDIzOSwgMjMwLCAKKyAgICA4NCwgMjE0LCAyMzcsIDI0MiwgMjQzLCAyMzksIDIzMCwgODQsIDIxNCwgMjM3LCAxNDYsIDg0LCAyMzAsIDEwLCA4NCwgCisgICAgMjE0LCAyMzcsIDI0MiwgMjQzLCAyMTQsIDIzNywgMTQ2LCAyMTEsIDEzMCwgMjIyLCAxMjMsIDIzMCwgOSwgMjE0LCAyMzcsIAorICAgIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAyMzksIDIyOSwgMjE0LCAyMzcsIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAKKyAgICAyMzAsIDEwLCAyLCA2NywgMjMzLCAyNSwgMjE0LCAyMzcsIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAyMzksIDIzMCwgMiwgCisgICAgNjcsIDIzMywgMjUsIDI0NCwgMTQsIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAyMzAsIDksIDI0NCwgMTQsIDE0NiwgMjExLCAKKyAgICAxMzAsIDIyMiwgMTIzLCAyMzksIDIyOSwgMjQ0LCAxNCwgMjE0LCAyMzcsIDE0NiwgMjExLCAxMzAsIDIyMiwgMTIzLCAyMzAsIAorICAgIDksIDI0NCwgMTQsIDIxNCwgMjM3LCAxNDYsIDIxMSwgMTMwLCAyMjIsIDEyMywgMjM5LCAyMjksIDIxNSwgNDgsIDIyMiwgCisgICAgMTIzLCAyMzAsIDksIDIxNSwgNDgsIDIyMiwgMTIzLCAyMzksIDIyOSwgMjE1LCA0OCwgODQsIDIzMCwgMTAsIDg0LCAyNDIsIAorICAgIDI0MiwgNTMsIDIxNSwgNDgsIDg0LCAyMzksIDIzMCwgODQsIDI0MiwgMjQyLCA1MywgNTAsIDIyNSwgOTMsIDIzMCwgOSwgCisgICAgNTAsIDIyNSwgOTMsIDIzOSwgMjI5LCA1MCwgMjI1LCA5MywgMjMwLCAxMCwgMiwgMjA5LCAyMjYsIDIzOSwgMjMwLCAyMjIsIAorICAgIDgzLCAyMzAsIDksIDIzOSwgMjMwLCAyNTAsIDEyLCAyMzAsIDksIDIzMCwgMTAsIDI0NywgMTkyLCAyNDksIDQ2LCAyNDcsIAorICAgIDE5LCAyMzksIDIzMCwgMjQ3LCAxOTIsIDI0OSwgNDYsIDI0NywgMTksIDIzMCwgMTAsIDI0NywgMTkyLCAyNDksIDQ2LCAKKyAgICAyNDcsIDIwLCA4NCwgMjE0LCAyMzcsIDI0MiwgMjQzLCAyMzksIDIzMCwgMjQ3LCAxOTIsIDI0OSwgNDYsIDI0NywgMjAsIAorICAgIDg0LCAyMTQsIDIzNywgMjQyLCAyNDMsIDIxNCwgMjE0LCAyMTIsIDQ2LCAyMzAsIDg0LCAyMTIsIDQ2LCAyMTQsIDIxNCwgCisgICAgMjEyLCA0NywgMjIyLCAxMjMsIDE0NiwgMTI0LCAyMzAsIDg0LCAyMTIsIDQ3LCAyMjIsIDEyMywgMTQ2LCAxMjQsIDI0MiwgCisgICAgMjQyLCAzLCAyLCAyNDksIDc4LCA1MiwgMjIwLCAxNDAsIDg0LCAyMTUsIDM5LCAyNDIsIDI0MiwgNTMsIDIxMywgMTc0LCAKKyAgICA4NCwgMjE1LCAzOSwgMjQyLCAyNDIsIDUzLCAyMjAsIDE0MCwgODQsIDIxNSwgMzksIDIyNCwgNDMsIDE0NiwgMTI0LCAyMTMsIAorICAgIDE3NCwgODQsIDIxNSwgMzksIDIyNCwgNDMsIDE0NiwgMTI0LCAyMjAsIDE0MCwgODQsIDI0MiwgMjQyLCA1MywgMjEzLCAKKyAgICAxNzQsIDg0LCAyNDIsIDI0MiwgNTMsIDIyMCwgMTQwLCA4NCwgMjI0LCA0MywgMTQ2LCAxMjQsIDIxMywgMTc0LCA4NCwgCisgICAgMjI0LCA0MywgMTQ2LCAxMjQsIDIyMCwgMTQwLCA4NCwgMjUyLCAxNDksIDE0NiwgMTI0LCAyMTMsIDE3NCwgODQsIDI1MiwgCisgICAgMTQ5LCAxNDYsIDEyNCwgMjIwLCAxNDAsIDg0LCAyMjQsIDQzLCAyNTIsIDE0OSwgMTQ2LCAxMjQsIDIxMywgMTc0LCA4NCwgCisgICAgMjI0LCA0MywgMjUyLCAxNDksIDE0NiwgMTI0LCA1MCwgMjIwLCAxMzksIDUwLCAyMTMsIDE3MywgMjEzLCAxODIsIDIsIAorICAgIDI0NSwgMjMsIDIxMywgMTM4LCAyLCAyNDUsIDIzLCAyMTMsIDE4MiwgMiwgMTAxLCAzLCA1NSwgMjEzLCAxMzgsIDIsIDEwMSwgCisgICAgMywgNTUsIDIxMywgMTgyLCAyLCAyMjYsIDk0LCAzLCA1NSwgMjEzLCAxMzgsIDIsIDIyNiwgOTQsIDMsIDU1LCAyMTMsIAorICAgIDE4MiwgNzMsIDIyMiwgMTIzLCAxNDYsIDIxMSwgMTMwLCAyLCA2NywgNTIsIDIxMywgMTM4LCA3MywgMjIyLCAxMjMsIDE0NiwgCisgICAgMjExLCAxMzAsIDIsIDY3LCA1MiwgMjEzLCAxODIsIDczLCA4NCwgMjQyLCAyNDIsIDUzLCAyMTMsIDEzOCwgNzMsIDg0LCAKKyAgICAyNDIsIDI0MiwgNTMsIDIxMywgMTgyLCA3MywgODQsIDIxMSwgMTgxLCAyMjIsIDEzMiwgMjEzLCAxMzgsIDczLCA4NCwgCisgICAgMjExLCAxODEsIDIyMiwgMTMyLCAyMTMsIDE4MiwgNzMsIDg0LCAyNTIsIDE0OSwgMTQ2LCAxMjQsIDIxMywgMTM4LCA3MywgCisgICAgODQsIDI1MiwgMTQ5LCAxNDYsIDEyNCwgMjEzLCAxODIsIDczLCA4NCwgMjI0LCA0MywgMTQ2LCAxMjQsIDIxMywgMTM4LCAKKyAgICA3MywgODQsIDIyNCwgNDMsIDE0NiwgMTI0LCA0OSwgNDcsIDIyMiwgMTQyLCA5NiwgMjIyLCAxMzIsIDQ5LCA0OCwgMjIyLCAKKyAgICAxNDIsIDk2LCAyMjIsIDEzMiwgMjQ3LCAxOTIsIDIxMywgMTgxLCAyNDcsIDE5MiwgMjEzLCAxMzcsIDI0NywgMTkyLCAyMTMsIAorICAgIDE4MiwgMjIyLCAxMjMsIDE0NiwgMTI0LCAyNDcsIDE5MiwgMjEzLCAxMzgsIDIyMiwgMTIzLCAxNDYsIDEyNCwgMjEzLCAKKyAgICAxODIsIDg0LCAyMTMsIDEzNywgMjEzLCAxMzgsIDg0LCAyMTMsIDE4MSwgMjEzLCAxODIsIDg0LCAyMTMsIDE4MSwgMjEzLCAKKyAgICAxMzgsIDg0LCAyMTMsIDEzNywgMjEzLCAxMzgsIDI1MCwgMTIsIDIxMywgMTgxLCAyMTMsIDEzOCwgMjUwLCAxMiwgMjMsIAorICAgIDIzMiwgMTE5LCAyNDksIDQ2LCAyNDYsIDc5LCAyLCAyMTMsIDE4MSwgMjQzLCA2MSwgNzMsIDIyMiwgMTM1LCAyNDQsIDYsIAorICAgIDIyMCwgMjQ2LCAyLCAyMTIsIDEyMSwgMjExLCAxMDEsIDIxMSwgNjYsIDIzMywgNywgMjQxLCAxMzcsIDIyNCwgNTcsIDIxNSwgCisgICAgMTQ0LCA0NywgMjEyLCAyMDEsIDIxNSwgMTQ0LCAxMzAsIDIxMiwgMjAxLCAyMTUsIDE0NCwgMTIwLCAyMTIsIDIwMSwgMjIxLCAKKyAgICAxMTksIDIsIDE4MiwgNzksIDI1MCwgMTI5LCAyMTEsIDM2LCA0OCwgMjEwLCAxNDMsIDUwLCA3OSwgMjUwLCAxMjksIDQ3LCAKKyAgICAyMTAsIDE0MywgNzksIDI1MCwgMTI5LCA1MCwgNDcsIDIxMCwgMTQzLCA1MCwgNzksIDI1MCwgMTI5LCA1MCwgNDcsIDIxMCwgCisgICAgMTQzLCAxNTIsIDI0NiwgNzksIDI0MSwgOTgsIDQ3LCAyMjcsIDg4LCA3MywgNTAsIDIwOSwgMjIsIDIxNSwgMTQ0LCAxMzAsIAorICAgIDIxMiwgMjAyLCAyLCAyMjIsIDg2LCAyMTUsIDE0NCwgMTIwLCAyMTIsIDIwMiwgMiwgMjA5LCAyMjYsIDIxNSwgMTQ0LCAKKyAgICAxMjAsIDIxMiwgMjAyLCA4NCwgMjE1LCAxNDQsIDEzMCwgMjEyLCAyMDEsIDUwLCAxMzAsIDIxMiwgMjAxLCA1MCwgMTIwLCAKKyAgICAyMTIsIDIwMSwgNTAsIDIxMywgMjI1LCAyMjQsIDQzLCA1MywgMjE4LCAyMjQsIDUwLCAyMTMsIDIyNSwgMjI0LCA0MywgNTMsIAorICAgIDI0NSwgNDIsIDIyNCwgNDMsIDI0NSwgODIsIDIsIDIxOCwgMjI0LCAyMjUsIDEwNCwgMjE0LCAyMzUsIDc5LCAyMjksIDIwNiwgCisgICAgMiwgMjQ3LCAyMzQsIDUyLCA3OSwgMjI5LCAyMDYsIDIsIDI0NywgMjM0LCA1NSwgMTMwLCAyMTIsIDIwMiwgMiwgMjQ3LCAKKyAgICAyMzQsIDU1LCAyMjEsIDIyMiwgMiwgMTk0LCA5MSwgMjIxLCAyMjIsIDIsIDIxMSwgMTgxLCAyMjIsIDEzMiwgMjExLCAzNiwgCisgICAgNzksIDI1MCwgMTI5LCAyNDksIDIyNSwgMjE5LCAxMSwgMjExLCAzNiwgNzksIDI1MCwgMTI5LCAyLCAxOTQsIDkxLCAyMTEsIAorICAgIDM2LCAyNDcsIDE2MywgMjIyLCAxMzIsIDIxMSwgMzYsIDIyNSwgOTMsIDIzMCwgOSwgMjExLCAzNiwgMjI1LCA5MywgMjM5LCAKKyAgICAyMjksIDI0NCwgMTQsIDIxNCwgMjM3LCAyMzAsIDEwLCAyMjIsIDEyMywgMTQ2LCAxMjQsIDI0NCwgMTQsIDIxNCwgMjM3LCAKKyAgICAyMzksIDIzMCwgMjIyLCAxMjMsIDE0NiwgMTI0LCAyMTEsIDM2LCAyMTQsIDE4MSwgMjQ5LCAyMjUsIDIxOSwgMTEsIDIzMCwgCisgICAgODYsIDIxMSwgMzYsIDc5LCAyNTAsIDEyOSwgMjIyLCAxMzIsIDUwLCAyMTQsIDE4MSwgMjIyLCAxMzIsIDU5LCA3OSwgMTM0LCAKKyAgICAyMjYsIDMyLCA1OSwgNzksIDEzNCwgMTQzLCAyNDMsIDExNywgNTksIDQ1LCAxNDMsIDIwNywgMzYsIDU5LCA0NSwgMTg4LCAKKyAgICAyNDMsIDExNywgNTksIDQ1LCAxODgsIDIwNywgMzYsIDU5LCA0NSwgNDcsIDQ4LCA1OSwgNDUsIDkyLCA2MCwgNDUsIDE2NywgCisgICAgNjAsIDQ1LCAxNzMsIDYwLCA0NSwgMTQzLCAyNDMsIDExNywgNjAsIDQ1LCAxNDMsIDIwNywgMzYsIDYwLCA0NSwgMTg4LCAKKyAgICAyNDMsIDExNywgNjAsIDQ1LCAxODgsIDIwNywgMzYsIDYwLCA0NSwgNDcsIDQ4LCA2MCwgNDUsIDEyMCwgMTMwLCA2MCwgNDUsIAorICAgIDg2LCA1MSwgMiwgMjExLCAxNjcsIDI0NCwgNiwgODYsIDUxLCAyLCAyMTEsIDE2NywgMjA5LCAxOTYsIDkyLCA1MSwgMiwgCisgICAgMjExLCAxNjcsIDI0NCwgNiwgOTIsIDUxLCAyLCAyMTEsIDE2NywgMjA5LCAxOTYsIDQ5LCAyLCAyMTEsIDEwMiwgMTYwLCAKKyAgICAyNDksIDIwMiwgNDksIDIsIDI0OSwgMTU0LCAxNjAsIDI0OSwgMjAyLCA0OSwgMiwgMjA5LCAyMDMsIDQ4LCAyNDUsIDE2MywgCisgICAgMTYwLCAyNDksIDIwMiwgNDksIDIsIDIyOSwgOTIsIDQ3LCAyNDUsIDE2MywgMTYwLCAyNDksIDIwMiwgMjQ1LCAxNTcsIDIsIAorICAgIDQ3LCAxNjAsIDI0OSwgMjAyLCAyNDUsIDE1NywgMiwgNDgsIDE2MCwgMjQ5LCAyMDIsIDI0NSwgMTU3LCAyLCAyMTEsIDEwMiwgCisgICAgMTYwLCAyNDksIDIwMiwgMjQ1LCAxNTcsIDIsIDI0OSwgMTU0LCAxNjAsIDI0OSwgMjAyLCAyNDQsIDIxLCAyMTQsIDEwNywgCisgICAgNjAsIDIzMCwgODYsIDIxNCwgMTA3LCA1OSwgMjMwLCA4NiwgMjE0LCAxMDcsIDYwLCAyMDgsIDIyNiwgNSwgMjE0LCAxMDcsIAorICAgIDU5LCAyMDgsIDIyNiwgNSwgMjE0LCAxMDcsIDYwLCAyMjEsIDE0MCwgNTksIDIyMSwgMTQwLCA1OSwgMjM5LCAyNSwgNjAsIAorICAgIDIzOSwgMjUsIDE5NCwgNjAsIDIzOSwgMjUsIDYwLCAyMzAsIDg2LCAyNDcsIDIzMywgNjAsIDIyNywgMTA5LCAyNDUsIDE1NiwgCisgICAgNTksIDIyNywgMTA5LCAyNDUsIDE1NiwgNjAsIDIyNywgMTA5LCAyMjksIDg4LCA1OSwgMjI3LCAxMDksIDIyOSwgODgsIDYwLCAKKyAgICA1LCAyNDUsIDE1NiwgNjAsIDUsIDIyOSwgODgsIDU5LCA1LCAyMjksIDg4LCA2MCwgMTk0LCAyNDMsIDU1LCA1OSwgMTk0LCAKKyAgICAyNDMsIDU1LCA2MCwgNzksIDI0MywgNTUsIDU5LCA3OSwgMjQzLCA1NSwgNDcsIDUxLCAyLCA1LCAyNDcsIDIzMywgMTI5LCAKKyAgICA5MiwgMjUxLCAyNDEsIDQ3LCA1MSwgMiwgMzksIDIyMCwgMjE4LCAxNTIsIDkyLCAyMTQsIDEwMywgNDUsIDkyLCAyMTAsIAorICAgIDEwOCwgNTEsIDIsIDc5LCA5MSwgOTIsIDIxMCwgMTA4LCA1MSwgMiwgNTAsIDc5LCA5MSwgOTIsIDIxMCwgMTA4LCA1MSwgCisgICAgMjQxLCA5OCwgMTM0LCA5MiwgMjEwLCAxMDgsIDIxMSwgMzYsIDI0NiwgNzksIDQ1LCA5MiwgNTEsIDIsIDI0NCwgMjEsIAorICAgIDIxNCwgOSwgOTIsIDUxLCAyLCAyMTIsIDE5MiwgMiwgNzksIDkxLCA5MiwgNTEsIDIsIDIxMiwgMTkyLCAyLCA1MCwgNzksIAorICAgIDkxLCA5MiwgMjEwLCAxMDgsIDUxLCAyLCAyMTIsIDE5MSwgOTIsIDIxMCwgMTA4LCA1MSwgMiwgMjEyLCAxOTIsIDIsIDc5LCAKKyAgICA5MSwgOTIsIDIxMCwgMTA4LCA1MSwgMiwgMjEyLCAxOTIsIDIsIDUwLCA3OSwgOTEsIDkyLCA1MSwgMjExLCAyMzMsIDIwNiwgCisgICAgMTk1LCAyMDcsIDY1LCA1MSwgMjIwLCAyMDEsIDI0NSwgMTAyLCAyMzAsIDQ2LCAyNDIsIDI0MiwgMywgODQsIDkyLCA0NSwgCisgICAgMjE4LCAyMjUsIDIxMSwgMTgxLCAyMjIsIDEzMywgODQsIDkyLCA0NSwgOTIsIDUxLCA4NCwgMjE4LCAyMjUsIDI1MiwgMTQ5LCAKKyAgICAxNDYsIDEyNCwgODYsIDUxLCAyMTEsIDIzMywgMjM5LCAyMjksIDg2LCA1MSwgMjExLCAyMzMsIDIxMywgMTM3LCA5MiwgCisgICAgMjE5LCAyMDcsIDQ1LCA4NiwgMjE5LCAyMDcsIDQ1LCAyMTgsIDIyNSwgMjExLCAxODEsIDIyMiwgMTMzLCA4NCwgODYsIDQ1LCAKKyAgICA4NiwgNTEsIDg0LCAyMTgsIDIyNSwgMjUyLCAxNDksIDE0NiwgMTI0LCAyMTEsIDE4MSwgMjIyLCAxMzMsIDg0LCA5MiwgNDUsIAorICAgIDkyLCA1MSwgODQsIDI1MiwgMTQ5LCAxNDYsIDEyNCwgOTIsIDUxLCA4NCwgMjE4LCAyMjUsIDIxMSwgMTgxLCAyMjIsIDEzMiwgCisgICAgODYsIDUxLCA4NCwgMjE4LCAyMjUsIDIxMSwgMTgxLCAyMjIsIDEzMiwgMTczLCAyMTEsIDUwLCAyMDUsIDMxLCA0NSwgMjE1LCAKKyAgICAxNDQsIDIxNCwgMjM3LCAxNDMsIDQ1LCAyMTUsIDE0NCwgMjUwLCAxNzMsIDE4OCwgNDUsIDU5LCAyMjcsIDEwOSwgMjE0LCAKKyAgICAyNiwgNjAsIDUsIDIxNCwgMjYsIDU5LCA1LCAyMTQsIDI2LCA2MCwgMjE4LCAxNjIsIDIyMSwgMTQwLCA1OSwgMjE4LCAxNjIsIAorICAgIDIyMSwgMTQwLCA3NywgMjMwLCA4NiwgMjQ3LCAyMzMsIDc3LCAyMjIsIDg3LCAyLCAyMjIsIDg3LCAyMzMsIDI1LCA3NywgCisgICAgMjQ3LCAyMzQsIDIsIDI0NywgMjM0LCAyMzMsIDI1LCA3NywgMjQ3LCAyMzMsIDc3LCAzOSwgMjE3LCAxNjIsIDIxNCwgMjM3LCAKKyAgICAxNDMsIDUxLCAyLCAyMzgsIDEyOSwgMjM5LCA2OCwgMjUwLCAxNzMsIDE4OCwgNTEsIDIsIDIzOCwgMTI5LCAyMTIsIDE5MSwgCisgICAgMjE0LCAyMzcsIDE0MywgNTEsIDIsIDE5NCwgMjEyLCAxOTEsIDI1MCwgMTczLCAxODgsIDUxLCAyLCAxOTQsIDIxMiwgMTkxLCAKKyAgICAyNTAsIDE5LCA1MSwgMjIwLCAyMDEsIDE3MywgMjEyLCAzMywgMTQzLCAyNDMsIDExNiwgMjE1LCAxNDQsIDI1MCwgMTksIAorICAgIDUxLCAyMjAsIDIwMSwgMTczLCAyMTIsIDMzLCAxNDMsIDI0MywgMTE2LCA5MiwgMjExLCA1MCwgNDUsIDE2NywgMjExLCA1MCwgCisgICAgNDUsIDg2LCAyMTEsIDUwLCA0NSwgMTczLCAyMTEsIDUwLCA0NSwgNDcsIDQ4LCAyMTEsIDUwLCA0NSwgMTIwLCAxMzAsIAorICAgIDIxMSwgNTAsIDQ1LCAxNDMsIDIwNywgMzYsIDIxMSwgNTAsIDQ1LCAxNDMsIDI0MywgMTE3LCAyMTEsIDUwLCA0NSwgMTg4LCAKKyAgICAyNDMsIDExNywgMjExLCA1MCwgNDUsIDE4OCwgMjA3LCAzNiwgMjExLCA1MCwgNDUsIDkyLCAyMTEsIDUwLCAyNDYsIDc3LCAKKyAgICA0NSwgMTY3LCAyMTEsIDUwLCAyNDYsIDc3LCA0NSwgODYsIDIxMSwgNTAsIDI0NiwgNzcsIDQ1LCAxNzMsIDIxMSwgNTAsIAorICAgIDI0NiwgNzcsIDQ1LCAyNDcsIDE5NCwgMjExLCA1MCwgMjIyLCAxNDIsIDI0NywgMjM0LCA0NSwgMjUyLCA4NywgMjExLCA1MCwgCisgICAgMjIyLCAxNDIsIDI0NywgMjM0LCA0NSwgOTIsIDIxMSwgNTAsIDUxLCAyMTEsIDEzMCwgMTM0LCAxNjcsIDIxMSwgNTAsIDUxLCAKKyAgICAyMTEsIDEzMCwgMTM0LCA4NiwgMjExLCA1MCwgNTEsIDIxMSwgMTMwLCAxMzQsIDE3MywgMjExLCA1MCwgNTEsIDIxMSwgCisgICAgMTMwLCAxMzQsIDE0MywgMjA3LCAzNiwgMjExLCA1MCwgNTEsIDIxMSwgMTMwLCAxMzQsIDE0MywgMjQzLCAxMTcsIDIxMSwgCisgICAgNTAsIDUxLCAyMTEsIDEzMCwgMTM0LCAxODgsIDI0MywgMTE3LCAyMTEsIDUwLCA1MSwgMjExLCAxMzAsIDEzNCwgMTg4LCAKKyAgICAyMDcsIDM2LCAyMTEsIDUwLCA1MSwgMjExLCAxMzAsIDEzNCwgOTIsIDIxMSwgNTAsIDUxLCAyLCA1MCwgMTk0LCA5MSwgCisgICAgMTY3LCAyMTEsIDUwLCA1MSwgMiwgNTAsIDE5NCwgOTEsIDg2LCAyMTEsIDUwLCA1MSwgMiwgNTAsIDE5NCwgOTEsIDE3MywgCisgICAgMjExLCA1MCwgNTEsIDIsIDUwLCAxOTQsIDkxLCAxOTQsIDIxMiwgMjA4LCAyMzEsIDE3NCwgNzksIDIxMiwgMjA4LCAyMzEsIAorICAgIDE3NCwgOTIsIDIxMSwgNTAsIDUxLCAxMzEsIDg2LCAyMTEsIDUwLCA0NSwgMTY3LCAyMTEsIDUwLCA1MSwgOTIsIDczLCAKKyAgICAxNzMsIDIxMSwgNTAsIDQ1LCA4NiwgMjExLCA1MCwgNTEsIDEzMSwgOTIsIDIxMSwgNTAsIDQ1LCAxNzMsIDIxMSwgNTAsIAorICAgIDUxLCA5MiwgNzMsIDE2NywgMjExLCA1MCwgNDUsIDkyLCAyMTEsIDUwLCAyMjIsIDMwLCAyNTEsIDI0MSwgMTY3LCAyMTEsIAorICAgIDUwLCAyMjIsIDMwLCAyNTEsIDI0MSwgODYsIDIxMSwgNTAsIDIyMiwgMzAsIDI1MSwgMjQxLCAxNzMsIDIxMSwgNTAsIDIyMiwgCisgICAgMzAsIDI1MSwgMjQxLCA5MiwgNjAsIDM5LCA1OSwgNDUsIDE2NywgNjAsIDM5LCA1OSwgNDUsIDg2LCA2MCwgMzksIDU5LCAKKyAgICA0NSwgMTczLCA2MCwgMzksIDU5LCA0NSwgMjUyLCA4NywgMjExLCA1MCwgNDgsIDIxMCwgNzEsIDQ1LCAyNTIsIDg3LCAyMTEsIAorICAgIDUwLCAyNDksIDE1NCwgMjEwLCA3MSwgNDUsIDI1MiwgODcsIDIxMSwgNTAsIDQ3LCAyMTAsIDcxLCA0NSwgMjUyLCA4NywgCisgICAgMjExLCA1MCwgMjExLCAxMDIsIDIxMCwgNzEsIDQ1LCAyMTgsIDIyOSwgMjMwLCA0NiwgMjE4LCAyMjksIDIxOCwgMTY3LCAKKyAgICAyMjUsIDg2LCAyMzAsIDQ2LCAyMjUsIDg2LCAyMTgsIDE2NywgMjQxLCAxMjUsIDI0NywgOTIsIDI1MSwgMjQyLCAyNDcsIAorICAgIDIzMSwgMjUyLCA4NiwgODYsIDYwLCA0NSwgMjExLCAyMzgsIDIxMSwgMTAwLCA5MiwgMjQyLCAyMzgsIDI1MSwgMjQzLCAKKyAgICAyMTEsIDIzOCwgMjE4LCAxNjMsIDE2NywgMjQyLCAyMzgsIDI1MSwgMjQzLCAyMTEsIDIzOCwgMjExLCAxMDAsIDg2LCAyNDIsIAorICAgIDIzOCwgMjUxLCAyNDMsIDIxMSwgMjM4LCAyMzAsIDQyLCAxNzMsIDI0MiwgMjM4LCAyNTEsIDI0MywgNjAsIDkyLCAyNDIsIAorICAgIDIzOCwgMjUxLCAyNDMsIDYwLCAxNjcsIDI0MiwgMjM4LCAyNTEsIDI0MywgNjAsIDg2LCAyNDIsIDIzOCwgMjUxLCAyNDMsIAorICAgIDYwLCAxNzMsIDI0MiwgMjM4LCAyNTEsIDI0MywgMTczLCAyMTEsIDUwLCA1MSwgMiwgMTUyLCAyMTEsIDE2NywgMjMwLCAzNiwgCisgICAgMTczLCAyMTEsIDUwLCA1MSwgMiwgMTUyLCAyMTEsIDE2NywgMjE4LCAxNTYsIDE2NywgMjExLCA1MCwgNTEsIDIsIDE1MiwgCisgICAgMjExLCAxNjcsIDIzMCwgMzYsIDE2NywgMjExLCA1MCwgNTEsIDIsIDE1MiwgMjExLCAxNjcsIDIxOCwgMTU2LCA5MiwgMjExLCAKKyAgICA1MCwgNTEsIDIsIDE1MiwgMjExLCAxNjcsIDIwOSwgMTk2LCA4NiwgMjExLCA1MCwgNTEsIDIsIDE1MiwgMjExLCAxNjcsIAorICAgIDIwOSwgMTk2LCA5MiwgMjExLCA1MCwgNTEsIDIsIDE1MiwgMjExLCAxNjcsIDI0NCwgNiwgODYsIDIxMSwgNTAsIDUxLCAyLCAKKyAgICAxNTIsIDIxMSwgMTY3LCAyNDQsIDYsIDYwLCAyNDcsIDE4LCAxNzMsIDIzLCA5MiwgNDUsIDYwLCAyNDcsIDE4LCAxNzMsIAorICAgIDIzLCA4NiwgNDUsIDYwLCAyNDcsIDE4LCAxNjcsIDIzLCA5MiwgNDUsIDYwLCAyNDcsIDE4LCAxNjcsIDIzLCA4NiwgNDUsIAorICAgIDYwLCAyNDcsIDE4LCA5MiwgMjMsIDE2NywgNDUsIDYwLCAyNDcsIDE4LCA4NiwgMjMsIDE2NywgNDUsIDYwLCAyNDcsIDE4LCAKKyAgICA5MiwgMjMsIDE3MywgNDUsIDYwLCAyNDcsIDE4LCA4NiwgMjMsIDE3MywgNDUsIDIxOCwgMjA2LCA1MSwgMTMwLCAyMzAsIAorICAgIDQ2LCAyMTgsIDIwNiwgNTEsIDEzMCwgMjE4LCAxNjcsIDIxOCwgMjA2LCA1MSwgMTIwLCAyMzAsIDQ2LCAyMTgsIDIwNiwgCisgICAgNTEsIDEyMCwgMjE4LCAxNjcsIDIxOCwgMjA2LCA1MSwgNDcsIDIwOSwgMjA2LCAyMTgsIDIwNiwgNTEsIDQ4LCAyMDksIAorICAgIDIwNiwgMjE4LCAyMDYsIDUxLCA0NywgMjQ0LCA4LCAyMTgsIDIwNiwgNTEsIDQ4LCAyNDQsIDgsIDE2NywgNTksIDUxLCAKKyAgICAyNDEsIDk4LCAyNTAsIDEyOSwgMiwgMTk0LCAxMzQsIDEyMCwgMjUxLCAyNDQsIDIzMywgNjksIDMyLCAyMTksIDM4LCAyNDksIAorICAgIDE0MCwgMjUwLCAxNDYsIDk2LCAyLCAxNDcsIDIwNiwgMTk1LCAzOSwgMjA2LCAxOTUsIDM5LCAyNCwgMjA2LCAxOTUsIDYwLCAKKyAgICA0OSwgMjQ4LCAxMjYsIDYwLCAyNDUsIDE1NywgMjQ4LCAxMjYsIDIwMSwgNjAsIDIyMSwgMTQwLCAxOTQsIDYwLCAyMjIsIAorICAgIDIxNCwgNjAsIDIyMiwgMjE0LCA2MCwgMjI3LCAxMDksIDIwOSwgMjA1LCAyMTEsIDUyLCAyNDgsIDEyNiwgNjAsIDIyNywgCisgICAgMTA5LCAyNDQsIDcsIDIxMSwgNTIsIDI0OCwgMTI2LCA2MCwgMjI3LCAxMDksIDIzMCwgNDEsIDIxMSwgNTIsIDI0OCwgMTI2LCAKKyAgICA2MCwgMjI3LCAxMDksIDIxOCwgMTYyLCAyMTEsIDUyLCAyNDgsIDEyNiwgMjExLCAxMDIsIDE2MCwgNjAsIDI0NywgMjMzLCAKKyAgICAyNDksIDE1NCwgMTYwLCA2MCwgMjQ3LCAyMzMsIDE0NywgMjQxLCAxMjUsIDIyMCwgMjAzLCA2MCwgMjQ3LCAxNSwgMjE4LCAKKyAgICA5NywgMTQ3LCAyNDEsIDEyNSwgMjIwLCAyMDMsIDYwLCAyNDcsIDE1LCA1OSwgMjQxLCAxMjUsIDIyMCwgMjAzLCAyNDcsIAorICAgIDE1LCAyMTgsIDk3LCA1OSwgMjQxLCAxMjUsIDIyMCwgMjAzLCAyNDcsIDE1LCA0OSwgMjIwLCAxNzgsIDIzMywgNDksIDIwOSwgCisgICAgMjI5LCA1MywgMTY2LCA2LCAxLCAyNTEsIDE1MSwgMTY2LCA2LCAxLCAyNDksIDg5LCAxNjYsIDYsIDEsIDIwOSwgMzcsIAorICAgIDE2NiwgNiwgMSwgMjQwLCAzMCwgMTY2LCA2LCAxLCAyNDUsIDQ2LCAxNjYsIDYsIDEsIDIwNiwgMjQsIDE2NiwgNiwgMSwgCisgICAgMjA1LCA2NSwgMTY2LCA2LCAxLCAyNDMsIDE5MSwgMTY2LCA2LCAxLCAyMDUsIDkwLCAxNjYsIDYsIDEsIDIzMiwgMjA3LCAKKyAgICAxNjYsIDYsIDEsIDc4LCAyMzIsIDIwNywgMTY2LCA2LCAxLCA3NCwgMTY2LCA2LCAxLCAyNDUsIDY2LCAxNjYsIDYsIDEsIAorICAgIDIzMiwgMzMsIDE2NiwgNiwgMSwgMjI5LCAxNzQsIDE2NiwgNiwgMSwgMjI2LCAzNywgMTY2LCA2LCAxLCAyMjUsIDE5NSwgCisgICAgMTY2LCA2LCAxLCAyMjIsIDE1NCwgMTY2LCA2LCAxLCAyMjAsIDE5OCwgMTY2LCA2LCAxLCAyMTgsIDE0MSwgMTY2LCA2LCAxLCAKKyAgICAyMTQsIDIxOSwgMTY2LCA2LCAxLCAyMTAsIDEzMSwgMTY2LCA2LCAxLCAyMDksIDI0NSwgMTY2LCA2LCAxLCAyNDEsIDEwMSwgCisgICAgMTY2LCA2LCAxLCAyMzksIDMxLCAxNjYsIDYsIDEsIDIyMiwgOTgsIDE2NiwgNiwgMSwgMjIxLCAxNzQsIDE2NiwgNiwgMSwgCisgICAgMjE1LCAxMTksIDE2NiwgNiwgMSwgMjEwLCAyMjIsIDE2NiwgNiwgMSwgMjQ4LCAyMCwgMTY2LCA2LCAxLCAyMTYsIDIsIAorICAgIDE2NiwgNiwgMSwgMjA2LCAzMCwgMTY2LCA2LCAxLCAyMDYsIDMyLCAxNjYsIDYsIDEsIDIwNiwgNjMsIDE2NiwgNiwgMSwgCisgICAgMjE0LCAxMjksIDE1NSwgMTY2LCA2LCAxLCAyMDUsIDIxMywgMTY2LCA2LCAxLCA1LCAyMDUsIDE4MywgMTY2LCA2LCAxLCA1LCAKKyAgICAyMDUsIDE4NCwgMiwgMjEyLCAxOTEsIDE2NiwgNiwgMSwgMjA1LCAyNDcsIDE2NiwgNiwgMSwgMjMyLCAyNDgsIDUsIDIwNSwgCisgICAgMTgzLCAxNjYsIDYsIDEsIDI0OSwgMjMxLCAyMDUsIDE4MywgMTY2LCA2LCAxLCAyMzIsIDI0OCwgMjQ5LCAyMzEsIDIwNSwgCisgICAgMTgzLCAxNjYsIDYsIDEsIDI0MSwgMjA1LCAxNjYsIDYsIDEsIDIzMiwgMjA1LCAxNjYsIDYsIDEsIDIxNSwgMTE4LCAxNjYsIAorICAgIDYsIDEsIDIxMSwgMjcsIDYyLCAxNjYsIDYsIDEsIDIzMCwgNzYsIDIyNiwgMzcsIDE2NiwgNSwgMSwgMjUxLCAxNTEsIDE2NiwgCisgICAgNSwgMSwgMjQ5LCA4OSwgMTY2LCA1LCAxLCAyMDksIDM3LCAxNjYsIDUsIDEsIDI0MCwgMzAsIDE2NiwgNSwgMSwgMjQ1LCAKKyAgICA0NiwgMTY2LCA1LCAxLCAyMDYsIDI0LCAxNjYsIDUsIDEsIDIwNSwgNjUsIDE2NiwgNSwgMSwgMjQzLCAxOTEsIDE2NiwgNSwgCisgICAgMSwgMjA1LCA5MCwgMTY2LCA1LCAxLCAyMzIsIDIwNywgMTY2LCA1LCAxLCA3OCwgMjMyLCAyMDcsIDE2NiwgNSwgMSwgNzQsIAorICAgIDE2NiwgNSwgMSwgMjQ1LCA2NiwgMTY2LCA1LCAxLCAyMzIsIDMzLCAxNjYsIDUsIDEsIDIyOSwgMTc0LCAxNjYsIDUsIDEsIAorICAgIDIyNiwgMzcsIDE2NiwgNSwgMSwgMjI1LCAxOTUsIDE2NiwgNSwgMSwgMjIyLCAxNTQsIDE2NiwgNSwgMSwgMjIwLCAxOTgsIAorICAgIDE2NiwgNSwgMSwgMjE4LCAxNDEsIDE2NiwgNSwgMSwgMjE0LCAyMTksIDE2NiwgNSwgMSwgMjEwLCAxMzEsIDE2NiwgNSwgMSwgCisgICAgMjA5LCAyNDUsIDE2NiwgNSwgMSwgMjQxLCAxMDEsIDE2NiwgNSwgMSwgMjM5LCAzMSwgMTY2LCA1LCAxLCAyMjIsIDk4LCAKKyAgICAxNjYsIDUsIDEsIDIyMSwgMTc0LCAxNjYsIDUsIDEsIDIxNSwgMTE5LCAxNjYsIDUsIDEsIDIxMCwgMjIyLCAxNjYsIDUsIDEsIAorICAgIDI0OCwgMjAsIDE2NiwgNSwgMSwgMjE2LCAyLCAxNjYsIDUsIDEsIDIwNiwgMzAsIDE2NiwgNSwgMSwgMjA2LCAzMiwgMTY2LCAKKyAgICA1LCAxLCAyMDYsIDYzLCAxNjYsIDUsIDEsIDIxNCwgMTI5LCAxNTUsIDE2NiwgNSwgMSwgMjA1LCAyMTMsIDE2NiwgNSwgMSwgCisgICAgNSwgMjA1LCAxODMsIDE2NiwgNSwgMSwgNSwgMjA1LCAxODQsIDIsIDIxMiwgMTkxLCAxNjYsIDUsIDEsIDIwNSwgMjQ3LCAKKyAgICAxNjYsIDUsIDEsIDIzMiwgMjQ4LCA1LCAyMDUsIDE4MywgMTY2LCA1LCAxLCAyNDksIDIzMSwgMjA1LCAxODMsIDE2NiwgNSwgCisgICAgMSwgMjMyLCAyNDgsIDI0OSwgMjMxLCAyMDUsIDE4MywgMTY2LCA1LCAxLCAyNDEsIDIwNSwgMTY2LCA1LCAxLCAyMzIsIAorICAgIDIwNSwgMTY2LCA1LCAxLCAyMTUsIDExOCwgMTY2LCA1LCAxLCAyMTEsIDI3LCA2MiwgMTY2LCA1LCAxLCAyMzAsIDc2LCAKKyAgICAyMjYsIDM3LCA3LCA2LCAxLCAyMzAsIDE1OSwgMiwgNTAsIDEzNCwgNywgNSwgMSwgMjMwLCAxNTksIDIsIDUwLCAxMzQsIDcsIAorICAgIDYsIDEsIDIzMCwgMTU5LCAyLCAyMjYsIDI0NywgMjExLCAxODAsIDcsIDYsIDEsIDIyMiwgNjgsIDIsIDkxLCA3LCA2LCAxLCAKKyAgICAyMTksIDE1MCwgMiwgMjEyLCAxOTEsIDcsIDUsIDEsIDMyLCAyLCA5MSwgNywgNSwgMSwgMjEzLCAxMSwgMiwgMjQ1LCAxNjMsIAorICAgIDkxLCA3LCA2LCAxLCAyMzksIDE1NiwgMiwgMjQ1LCAyMTEsIDcsIDUsIDEsIDIzOSwgMTU2LCAyLCAyNDUsIDIxMSwgNywgNiwgCisgICAgMSwgMjMyLCA3NywgMiwgMjQ1LCAyMTEsIDcsIDUsIDEsIDIzMiwgNzcsIDIsIDI0NSwgMjExLCA3LCA2LCAxLCAyMDUsIAorICAgIDE2MCwgMiwgMjQ1LCAyMTEsIDcsIDUsIDEsIDIwNSwgMTYwLCAyLCAyNDUsIDIxMSwgNywgNiwgMSwgMjUyLCAxNDQsIDcsIAorICAgIDYsIDEsIDIyOSwgMjksIDIsIDEwOSwgNywgNiwgMSwgMjAxLCA2MiwgNywgNiwgMSwgMjAxLCAyNTIsIDE0NCwgNywgNSwgMSwgCisgICAgMjA5LCAxNDksIDIsIDQ4LCAxMDksIDcsIDYsIDEsIDIwNywgMTMwLCAyLCAxMDksIDcsIDUsIDEsIDIwNywgMTMwLCAyLCAKKyAgICAxMDksIDcsIDUsIDEsIDIwOSwgMTQ5LCAyLCAyNDcsIDI3LCA3LCA2LCAxLCAxNjAsIDIzOSwgMTU1LCA3LCA1LCAxLCAxNjAsIAorICAgIDIzOSwgMTU1LCA3LCA1LCAxLCAyMTIsIDE4OSwgMjIxLCA3OCwgNywgNSwgMSwgMTc0LCAyLCAyMjQsIDQwLCA3LCA1LCAxLCAKKyAgICAyMDEsIDIxOSwgMTUwLCAyLCAyMTIsIDE5MSwgNywgNSwgMSwgMTQ4LCAyLCAxMTQsIDIxOCwgMTQ5LCAyMzMsIDI1LCA3LCAKKyAgICAxLCA1LCA2LCAyMDEsIDc1LCA3LCAyMTMsIDE4MywgNSwgMSwgMjMyLCAyMDMsIDY1LCAxLCA2LCAyMDksIDE0OCwgNywgNiwgCisgICAgMSwgMjE4LCAxLCAyLCAyMTMsIDEwOSwgMjEyLCAxOTEsIDcsIDYsIDEsIDIwNSwgMTYwLCAyLCAyMTMsIDEwOSwgMjEyLCAKKyAgICAxOTEsIDgxLCA2LCAxLCAyNTIsIDE2NiwgODEsIDUsIDEsIDI1MiwgMTY2LCA4MSwgNiwgMSwgMjA4LCAyMTEsIDgxLCA1LCAKKyAgICAxLCAyMDgsIDIxMSwgODEsIDYsIDEsIDI0MCwgMjE1LCA4MSwgNSwgMSwgMjQwLCAyMTUsIDgxLCA2LCAxLCAyNDYsIDExMywgCisgICAgODEsIDUsIDEsIDI0NiwgMTEzLCA4MSwgNiwgMSwgMjQzLCA4OSwgODEsIDUsIDEsIDI0MywgODksIDgxLCA2LCAxLCAyMTQsIAorICAgIDE2NywgODEsIDUsIDEsIDIxNCwgMTY3LCA4MSwgNiwgMSwgMjA1LCAxMDAsIDgxLCA1LCAxLCAyMDUsIDEwMCwgODEsIDYsIAorICAgIDEsIDIzOSwgODMsIDgxLCA1LCAxLCAyMzksIDgzLCA4MSwgNiwgMSwgMjEyLCAyMSwgODEsIDUsIDEsIDIxMiwgMjEsIDgxLCAKKyAgICA2LCAxLCAyMzcsIDE4NywgODEsIDUsIDEsIDIzNywgMTg3LCA4MSwgNiwgMSwgMjMyLCAxOSwgODEsIDUsIDEsIDIzMiwgMTksIAorICAgIDgxLCA2LCAxLCAyMzAsIDcyLCA4MSwgNSwgMSwgMjMwLCA3MiwgODEsIDYsIDEsIDIyNiwgMjU0LCA4MSwgNSwgMSwgMjI2LCAKKyAgICAyNTQsIDgxLCA2LCAxLCAyMjQsIDIzMCwgODEsIDUsIDEsIDIyNCwgMjMwLCA4MSwgNiwgMSwgMjMwLCAyNTIsIDgxLCA1LCAKKyAgICAxLCAyMzAsIDI1MiwgODEsIDYsIDEsIDc2LCA4MSwgNSwgMSwgNzYsIDgxLCA2LCAxLCAyMjEsIDUzLCA4MSwgNSwgMSwgCisgICAgMjIxLCA1MywgODEsIDYsIDEsIDIxOCwgMTI0LCA4MSwgNSwgMSwgMjE4LCAxMjQsIDgxLCA2LCAxLCAyMTUsIDUxLCA4MSwgCisgICAgNSwgMSwgMjE1LCA1MSwgODEsIDYsIDEsIDIxMiwgMTUxLCA4MSwgNSwgMSwgMjEyLCAxNTEsIDgxLCA2LCAxLCAyMTAsIDE4LCAKKyAgICA4MSwgNSwgMSwgMjEwLCAxOCwgODEsIDYsIDEsIDI0MSwgMjUwLCA4MSwgNSwgMSwgMjQxLCAyNTAsIDgxLCA2LCAxLCAyMzEsIAorICAgIDE0NSwgODEsIDUsIDEsIDIzMSwgMTQ1LCA4MSwgNiwgMSwgMjIwLCA5MywgODEsIDUsIDEsIDIyMCwgOTMsIDgxLCA2LCAxLCAKKyAgICAyMjIsIDE0NiwgODEsIDUsIDEsIDIyMiwgMTQ2LCA4MSwgNiwgMSwgMjQ1LCAxNjEsIDI1MiwgMTcyLCA4MSwgNSwgMSwgCisgICAgMjQ1LCAxNjEsIDI1MiwgMTcyLCA4MSwgNiwgMSwgNDQsIDgxLCAyNTIsIDIwMCwgODEsIDUsIDEsIDQ0LCA4MSwgMjUyLCAKKyAgICAyMDAsIDgxLCA2LCAxLCAyNDcsIDQzLCAyNDMsIDg5LCA4MSwgNSwgMSwgMjQ3LCA0MywgMjQzLCA4OSwgODEsIDYsIDEsIAorICAgIDI0NSwgMTYxLCAyMzIsIDE5LCA4MSwgNSwgMSwgMjQ1LCAxNjEsIDIzMiwgMTksIDgxLCA2LCAxLCAyNDUsIDE2MSwgMjI0LCAKKyAgICAyMzAsIDgxLCA1LCAxLCAyNDUsIDE2MSwgMjI0LCAyMzAsIDgxLCA2LCAxLCAyNDcsIDQzLCAyMjQsIDIzMCwgODEsIDUsIDEsIAorICAgIDI0NywgNDMsIDIyNCwgMjMwLCA4MSwgNiwgMSwgNDQsIDgxLCAyMjIsIDE0NiwgODEsIDUsIDEsIDQ0LCA4MSwgMjIyLCAKKyAgICAxNDYsIDgxLCA2LCAxLCAyMTcsIDE1NCwgODEsIDUsIDEsIDIxNywgMTU0LCA4MSwgNiwgMSwgMjQ3LCA1NywgMjE1LCAyMDYsIAorICAgIDgxLCA1LCAxLCAyNDcsIDU3LCAyMTUsIDIwNiwgODEsIDYsIDEsIDQ0LCA4MSwgMjE1LCAyMDYsIDgxLCA1LCAxLCA0NCwgCisgICAgODEsIDIxNSwgMjA2LCA4MSwgNiwgMSwgNDQsIDgxLCAyNDIsIDIxNSwgODEsIDUsIDEsIDQ0LCA4MSwgMjQyLCAyMTUsIDgxLCAKKyAgICA2LCAxLCAyNTIsIDE4NSwgMjMxLCAxNTAsIDgxLCA1LCAxLCAyNTIsIDE4NSwgMjMxLCAxNTAsIDgxLCA2LCAxLCAyNDUsIAorICAgIDE2MSwgMjM4LCAxMjIsIDgxLCA1LCAxLCAyNDUsIDE2MSwgMjM4LCAxMjIsIDgxLCA2LCAxLCA0NCwgODEsIDIzOCwgMTIyLCAKKyAgICA4MSwgNSwgMSwgNDQsIDgxLCAyMzgsIDEyMiwgODEsIDYsIDEsIDQ0LCA4MSwgMTU1LCA4MSwgNSwgMSwgNDQsIDgxLCAxNTUsIAorICAgIDgxLCA2LCAxLCAyMzAsIDE1OCwgMTU1LCA4MSwgNSwgMSwgMjMwLCAxNTgsIDE1NSwgODEsIDYsIDEsIDQ0LCA4MSwgMjM5LCAKKyAgICA0OSwgODEsIDUsIDEsIDQ0LCA4MSwgMjM5LCA0OSwgODEsIDYsIDEsIDQ0LCA4MSwgMjM5LCA4NiwgODEsIDUsIDEsIDQ0LCAKKyAgICA4MSwgMjM5LCA4NiwgODEsIDYsIDEsIDQ0LCA4MSwgMjQwLCAyMTAsIDgxLCA1LCAxLCA0NCwgODEsIDI0MCwgMjEwLCA4MSwgCisgICAgNiwgMSwgNDQsIDgxLCAyNDUsIDY5LCA4MSwgNSwgMSwgNDQsIDgxLCAyNDUsIDY5LCA4MSwgNiwgMSwgNDQsIDgxLCAyMTUsIAorICAgIDE3MywgODEsIDUsIDEsIDQ0LCA4MSwgMjE1LCAxNzMsIDgxLCA2LCAxLCA0NCwgMjIzLCAxODcsIDIxNSwgMTczLCA4MSwgNSwgCisgICAgMSwgNDQsIDIyMywgMTg3LCAyMTUsIDE3MywgODEsIDYsIDEsIDQ0LCAyMjMsIDE4NywgMjI1LCAyNSwgODEsIDUsIDEsIDQ0LCAKKyAgICAyMjMsIDE4NywgMjI1LCAyNSwgODEsIDYsIDEsIDQ0LCAyMjMsIDE4NywgMjIzLCAxMjUsIDgxLCA1LCAxLCA0NCwgMjIzLCAKKyAgICAxODcsIDIyMywgMTI1LCA4MSwgNiwgMSwgNDQsIDIyMywgMTg3LCAyMDcsIDY2LCA4MSwgNSwgMSwgNDQsIDIyMywgMTg3LCAKKyAgICAyMDcsIDY2LCA4MSwgMTYsIDIzMiwgNDEsIDgxLCAxNiwgMjI2LCAyNTUsIDIxOCwgMTI0LCA4MSwgMTYsIDIyMSwgNTQsIAorICAgIDIxOCwgMTI0LCA4MSwgMTYsIDIxNCwgMTcsIDgxLCAxNiwgMjEyLCAxNTIsIDIxOCwgMTI0LCA4MSwgMTYsIDIzMSwgMTQ2LCAKKyAgICAyMTgsIDEyNCwgODEsIDE2LCAyMTUsIDE3NCwgMjE1LCA1MSwgODEsIDYsIDEsIDI0NywgNDMsIDIxNSwgMjA2LCA4MSwgNSwgCisgICAgMSwgMjQ3LCA0MywgMjE1LCAyMDYsIDgxLCA2LCAxLCAyNDcsIDQzLCAyNDAsIDIxMCwgODEsIDUsIDEsIDI0NywgNDMsIAorICAgIDI0MCwgMjEwLCA4MSwgMzYsIDIyNCwgMjMxLCA1MiwgODEsIDM2LCAyMTQsIDEyMywgMjUxLCAyMTcsIDgxLCAzNiwgMjE0LCAKKyAgICAxMjMsIDIzMCwgMTcsIDgxLCA2LCAxLCAyNDksIDE3OCwgMjMxLCAxNTAsIDgxLCA1LCAxLCAyNDksIDE3OCwgMjMxLCAxNTAsIAorICAgIDgxLCA0NCwgMjIzLCAxODcsIDI0MSwgODIsIDIxMywgMjUxLCA4MSwgNDQsIDIyMywgMTg3LCAyNDUsIDEwNCwgMjE5LCAKKyAgICAxOTYsIDgzLCA4MSwgNDQsIDIyMywgMTg3LCAyMzMsIDQ4LCAyMTksIDE5NiwgODMsIDgxLCA0NCwgMjIzLCAxODcsIDIwOSwgCisgICAgMjQsIDI0NSwgNzksIDgxLCAyNDEsIDExNiwgMTE5LCAyMzksIDEyMSwgODEsIDI0MSwgODIsIDIxMywgMjUxLCA4MSwgMjI2LCAKKyAgICAxNDAsIDI0NSwgNzksIDEwOCwgNSwgMSwgMjUyLCAxMjIsIDEwOCwgNSwgMSwgMjUwLCAxNDAsIDEwOCwgNSwgMSwgMjQwLCAKKyAgICAyMTQsIDEwOCwgNSwgMSwgMjQ1LCAzMSwgMTA4LCA1LCAxLCAyNDMsIDQxLCAxMDgsIDUsIDEsIDIwOCwgMTk3LCAxMDgsIDUsIAorICAgIDEsIDIwNSwgODgsIDEwOCwgNSwgMSwgMjEyLCAxNzQsIDEwOCwgNSwgMSwgMjMzLCA2OCwgMTA4LCA1LCAxLCAyMzIsIDI3LCAKKyAgICAxMDgsIDUsIDEsIDIzMCwgODIsIDEwOCwgNSwgMSwgMjI3LCAyMjEsIDEwOCwgNSwgMSwgMjI1LCAyMDAsIDEwOCwgNSwgMSwgCisgICAgMjIyLCAxNjUsIDEwOCwgNSwgMSwgMjIxLCAyMzEsIDEwOCwgNSwgMSwgMjA1LCA3NywgMTA4LCA1LCAxLCAyMTksIDk1LCAKKyAgICAxMDgsIDUsIDEsIDIxNywgMTUxLCAxMDgsIDUsIDEsIDIxMiwgMTYyLCAxMDgsIDUsIDEsIDIwOSwgMjM0LCAxMDgsIDUsIDEsIAorICAgIDIyMSwgODUsIDEwOCwgNSwgMSwgMjMxLCAxNTUsIDEwOCwgNSwgMSwgMjQwLCA5MCwgMTA4LCA1LCAxLCAyMjAsIDQsIDEwOCwgCisgICAgNSwgMSwgMjE1LCAxNzEsIDEwOCwgNSwgMSwgMjQ4LCA0NSwgMTA4LCA1LCAxLCAyNDgsIDIyNiwgMTA4LCA1LCAxLCAyMzIsIAorICAgIDE1NCwgMTA4LCA1LCAxLCAyNDcsIDI0MCwgMTA4LCA1LCAxLCAyNDgsIDk1LCAxMDgsIDUsIDEsIDIwNiwgMTc5LCAxMDgsIAorICAgIDUsIDEsIDIzMiwgMTY3LCAxMDgsIDUsIDEsIDIzOSwgMTM4LCAxMDgsIDUsIDEsIDIzOSwgNzEsIDEwOCwgNSwgMSwgMjM5LCAKKyAgICA2LCAxMDgsIDUsIDEsIDIwNywgNTEsIDEwOCwgNSwgMSwgMjM5LCA5NSwgMTA4LCA1LCAxLCAyMzgsIDE0NiwgMTA4LCA1LCAKKyAgICAxLCAyMDUsIDI0OSwgMTA4LCA1LCAxLCAyNTIsIDIzNywgMjExLCAyMDAsIDEsIDE5MCwgMjExLCAyMDAsIDEsIDIwNiwgCisgICAgMTA1LCAyMTEsIDIwMCwgMSwgMjA2LCAxMDQsIDIxMSwgMjAwLCAxLCAyMDYsIDk0LCAyMTEsIDIwMCwgMSwgMjA2LCA5MiwgCisgICAgMjExLCAyMDAsIDEsIDI1MCwgMTQsIDI1MywgMjMsIDIwNiwgODcsIDIxMSwgMjAwLCAxLCAyMDYsIDg3LCAyMTEsIDIwMCwgCisgICAgMSwgMjA2LCAxMDIsIDIxMSwgMjAwLCAxLCAyMDYsIDk5LCAyMTEsIDIwMCwgMSwgMjA2LCAxMDEsIDIxMSwgMjAwLCAxLCAKKyAgICAyMDYsIDEwMCwgMjExLCAyMDAsIDEsIDIwNiwgMTUsIDIxMSwgMjAwLCAxLCAyMDYsIDk2LCAyMTEsIDIwMCwgMSwgMjA2LCAKKyAgICA4NSwgMjExLCAyMDAsIDEsIDIxMCwgMTY3LCAyMDYsIDg1LCAyMTEsIDIwMCwgMSwgMjA2LCA4MiwgMjExLCAyMDAsIDEsIAorICAgIDIwNiwgOTAsIDIxMSwgMjAwLCAxLCAyNTAsIDE0LCAyNTMsIDIzLCAyMDYsIDkwLCAyMTEsIDIwMCwgMSwgMjEwLCAxNjcsIAorICAgIDIwNiwgOTAsIDIxMSwgMjAwLCAxLCAyMDYsIDg5LCAyMTEsIDIwMCwgMSwgMjA2LCAxMDksIDIxMSwgMjAwLCAxLCAyMDYsIAorICAgIDgzLCAyMTEsIDIwMCwgMSwgMjEwLCAxNjcsIDIwNiwgODMsIDIxMSwgMjAwLCAxLCAyMDYsIDcyLCAyMTEsIDIwMCwgMSwgCisgICAgMjEwLCAxNjcsIDIwNiwgNzIsIDIxMSwgMjAwLCAxLCAyMDYsIDExLCAyMTEsIDIwMCwgMSwgMjA2LCA1NCwgMjExLCAyMDAsIAorICAgIDEsIDI1MiwgMjExLCAyMDYsIDU0LCAyMTEsIDIwMCwgMSwgMjEwLCAxNjcsIDIwNiwgNTQsIDIxMSwgMjAwLCAxLCAyMDYsIAorICAgIDgxLCAyMTEsIDIwMCwgMSwgMjA2LCA4MCwgMjExLCAyMDAsIDEsIDIwNiwgNzcsIDIxMSwgMjAwLCAxLCAyMTAsIDE2NywgCisgICAgMjA2LCA5MSwgMjExLCAyMDAsIDEsIDIxMCwgMTY3LCAyMDYsIDc1LCAyMTEsIDIwMCwgMSwgMjA2LCA3MywgMjExLCAyMDAsIAorICAgIDEsIDIwNSwgMjEzLCAyMTEsIDIwMCwgMSwgMjA2LCA3MCwgMjExLCAyMDAsIDEsIDIwNiwgNjksIDIxMSwgMjAwLCAxLCAKKyAgICAyMDYsIDkzLCAyMTEsIDIwMCwgMSwgMjEwLCAxNjcsIDIwNiwgOTMsIDIxMSwgMjAwLCAxLCAyNTEsIDE1NSwgMjA2LCA5MywgCisgICAgMjExLCAyMDAsIDEsIDIwNiwgNjgsIDIxMSwgMjAwLCAxLCAyMDYsIDY2LCAyMTEsIDIwMCwgMSwgMjA2LCA2NywgMjExLCAKKyAgICAyMDAsIDEsIDIwNiwgNjUsIDIxMSwgMjAwLCAxLCAyMDYsIDY0LCAyMTEsIDIwMCwgMSwgMjA2LCAxMDMsIDIxMSwgMjAwLCAKKyAgICAxLCAyMDYsIDYyLCAyMTEsIDIwMCwgMSwgMjA2LCA2MCwgMjExLCAyMDAsIDEsIDIwNiwgNTksIDIxMSwgMjAwLCAxLCAyMDYsIAorICAgIDU4LCAyMTEsIDIwMCwgMSwgMjA2LCA1NSwgMjExLCAyMDAsIDEsIDIxMiwgMTQzLCAyMDYsIDU1LCAyMTEsIDIwMCwgMSwgCisgICAgMjA2LCA1MywgMjExLCAyMDAsIDEsIDIwNiwgNTIsIDIxMSwgMjAwLCAxLCAyMDUsIDI0NywgMjExLCAyMDAsIDY1LCAxLCAKKyAgICAyMzAsIDEzMSwgODMsIDIxMSwgMjAwLCAyMTYsIDQwLCA4MywgMjExLCAyMDAsIDEwNywgMjMyLCAxMTcsIDMxLCA0LCAyMjksIAorICAgIDE0MywgMzEsIDQsIDIyNiwgMTgwLCAzMSwgNCwgMjE4LCAxMjIsIDMxLCA0LCAyMTQsIDE5MiwgMzEsIDQsIDIxNSwgMTU3LCAKKyAgICAzMSwgNCwgMjQ5LCAxODMsIDMxLCA0LCAyMTEsIDEyOSwgMzEsIDQsIDI0NywgMTczLCAzMSwgNCwgMjI0LCA2NSwgMzEsIDQsIAorICAgIDIyMywgMTA5LCAzMSwgNCwgMjQwLCAyNSwgMjIyLCAyMzAsIDMxLCA0LCAyMDUsIDE4LCAzMSwgNCwgMjQ1LCA0OSwgMzEsIAorICAgIDQsIDI0NiwgMjMsIDMxLCA0LCAyMzIsIDEyMSwgMzEsIDQsIDIxMSwgMjUyLCAzMSwgNCwgMjQ4LCAzMSwgMzEsIDQsIDIyMSwgCisgICAgNjUsIDMxLCA0LCAyMjAsIDIxMCwgMzEsIDQsIDI0MCwgMTA1LCAzMSwgNCwgMjQwLCAxMDEsIDMxLCA0LCAyNDAsIDEwMiwgCisgICAgMzEsIDQsIDI0MCwgMTAzLCAzMSwgNCwgMjE0LCA5NiwgMzEsIDQsIDIxNCwgNTEsIDMxLCA0LCAyMTQsIDY0LCAzMSwgNCwgCisgICAgMjE0LCA5NSwgMzEsIDQsIDIxNCwgNjksIDMxLCA0LCAyMTQsIDcwLCAzMSwgNCwgMjE0LCA1NiwgMzEsIDQsIDI0OCwgMTcxLCAKKyAgICAzMSwgNCwgMjQ4LCAxNTAsIDMxLCA0LCAyNDgsIDE1MiwgMzEsIDQsIDI0OCwgMTcwLCAzMSwgNCwgMjQ4LCAxNjgsIDMxLCAKKyAgICA0LCAyNDgsIDE2OSwgMzEsIDQsIDI0OCwgMTUxLCAzMSwgNCwgMjA0LCAyMzgsIDMxLCA0LCAyMDQsIDIxNiwgMzEsIDQsIAorICAgIDIwNCwgMjI5LCAzMSwgNCwgMjA0LCAyMzcsIDMxLCA0LCAyMDQsIDIzMiwgMzEsIDQsIDIwNCwgMjMzLCAzMSwgNCwgMjA0LCAKKyAgICAyMjEsIDMxLCA0LCAyNDgsIDE2NiwgMzEsIDQsIDI0OCwgMTUzLCAzMSwgNCwgMjQ4LCAxNTUsIDMxLCA0LCAyNDgsIDE2NSwgCisgICAgMzEsIDQsIDI0OCwgMTYzLCAzMSwgNCwgMjQ4LCAxNjQsIDMxLCA0LCAyNDgsIDE1NCwgMzEsIDQsIDIxOSwgMTYyLCAzMSwgCisgICAgNCwgMjE5LCAxNTIsIDMxLCA0LCAyMTksIDE1OCwgMzEsIDQsIDIxOSwgMTYxLCAzMSwgNCwgMjE5LCAxNTksIDMxLCA0LCAKKyAgICAyMTksIDE2MCwgMzEsIDQsIDIxOSwgMTU3LCAzMSwgNCwgMjMwLCAxNjksIDMxLCA0LCAyMzAsIDE2MSwgMzEsIDQsIDIzMCwgCisgICAgMTY0LCAzMSwgNCwgMjMwLCAxNjgsIDMxLCA0LCAyMzAsIDE2NSwgMzEsIDQsIDIzMCwgMTY2LCAzMSwgNCwgMjMwLCAxNjIsIAorICAgIDMxLCA0LCAyMDYsIDEzOSwgMzEsIDQsIDIwNiwgMTI2LCAzMSwgNCwgMjA2LCAxMzQsIDMxLCA0LCAyMDYsIDEzOCwgMzEsIAorICAgIDQsIDIwNiwgMTM2LCAzMSwgNCwgMjA2LCAxMzcsIDMxLCA0LCAyMDYsIDEzMywgMzEsIDQsIDIzOSwgMTY3LCAzMSwgNCwgCisgICAgMjM5LCAxNTcsIDMxLCA0LCAyMzksIDE2MCwgMzEsIDQsIDIzOSwgMTY2LCAzMSwgNCwgMjM5LCAxNjIsIDMxLCA0LCAyMzksIAorICAgIDE2MywgMzEsIDQsIDIzOSwgMTU5LCAzNiwgMzQsIDEsIDI1MCwgNjEsIDM2LCAzNCwgMSwgMjA5LCAzOSwgMzYsIDM0LCAxLCAKKyAgICAyNDAsIDg1LCAzNiwgMzQsIDEsIDI0NiwgOSwgMzYsIDM0LCAxLCAyMDUsIDcyLCAzNiwgMzQsIDEsIDIwNSwgOTMsIDM2LCAKKyAgICAzNCwgMSwgMTcyLCAzNiwgMzQsIDEsIDI0MywgNjgsIDM2LCAzNCwgMSwgMjQzLCA1MCwgMzYsIDM0LCAxLCAyNDMsIDQxLCAKKyAgICAzNiwgMzQsIDEsIDc2LCAzNiwgMzQsIDEsIDIyMSwgMTc0LCAzNiwgMzQsIDEsIDI0MiwgMjM1LCAzNiwgMzQsIDEsIDI0MiwgCisgICAgMjI1LCAzNiwgMzQsIDEsIDIxMiwgMTMxLCAzNiwgMzQsIDEsIDE1NSwgMzYsIDM0LCAxLCAyMTAsIDIzNywgMzYsIDM0LCAxLCAKKyAgICAyNDgsIDgyLCAzNiwgMzQsIDEsIDIxNiwgMiwgMzYsIDM0LCAxLCAyMTUsIDIxNywgMzYsIDM0LCAxLCAyNDEsIDIwNSwgMzYsIAorICAgIDM0LCAxLCAyNDIsIDIyMSwgMzYsIDM0LCAxLCA2MiwgMzYsIDM0LCAxLCAyMzMsIDEyOSwgMzYsIDM0LCAxLCAyNDUsIDY3LCAKKyAgICAzNiwgMzQsIDEsIDIyNiwgMTU4LCAyMDksIDI0OSwgMzYsIDM0LCAxLCAyMDYsIDY1LCAzNiwgMzQsIDEsIDIwNSwgMjEzLCAKKyAgICAzNiwgMzQsIDEsIDIzMiwgMjQ3LCA2MiwgMzYsIDM0LCAxLCAyMjksIDE4MCwgMjA1LCAxODMsIDM2LCAzNCwgMSwgMjQ5LCAKKyAgICAyMzEsIDIwNSwgMTgzLCAzNiwgMzQsIDEsIDIzMiwgMjQ3LCAyNDksIDIzMSwgMjA1LCAxODMsIDQ4LCAyNTIsIDEwOSwgCisgICAgMjEzLCAxNzgsIDIyNywgMTg3LCA0OCwgMjUyLCAxMDksIDI0NCwgMjEsIDIxMywgMTc4LCAyMjcsIDE4NywgNDcsIDIxMywgCisgICAgMTc4LCAxNDUsIDQ4LCAyMTMsIDE3OCwgMTQ1LCA0NywgMjQ0LCAyMSwgMjEzLCAxNzgsIDE0NSwgNDgsIDI0NCwgMjEsIAorICAgIDIxMywgMTc4LCAxNDUsIDIxOSwgODEsIDIzMywgMTIsIDIyNywgMTg3LCAyMTksIDgxLCAyNDQsIDIxLCAyMzMsIDEyLCAKKyAgICAyMjcsIDE4NywgMjQ0LCAyMSwgMjExLCA2NywgMjI3LCAxODcsIDQ3LCAyMTEsIDY3LCAxNDUsIDQ4LCAyMTEsIDY3LCAxNDUsIAorICAgIDIxOSwgODEsIDIxNCwgMTA3LCA0NywgMjE5LCA4MSwgMjIyLCAxNjcsIDE0NSwgNDgsIDIxOSwgODEsIDIyMiwgMTY3LCAKKyAgICAxNDUsIDI0MywgMTA1LCAyNDcsIDg5LCAyMjEsIDIyNywgMjQxLCAxMzgsIDIyMSwgMjI3LCAyMTgsIDIyNCwgMjQxLCAxMzgsIAorICAgIDIyMSwgMjI3LCAyMzcsIDIzNiwgMjQ0LCAyMSwgMjIyLCAyMjUsIDE3MywgMjUyLCAxMTgsIDE2NywgMjUyLCAxMTgsIDI0NCwgCisgICAgMjEsIDIxOCwgMTYyLCAyNTIsIDEwOCwgNTAsIDIyMiwgMjIyLCAyMzcsIDIzOSwgMjMzLCAyLCAyMzMsIDEwLCAyMjIsIDE5LCAKKyAgICAyNDksIDEzMCwgMjM3LCAyNDAsIDIsIDI0NSwgMTY2LCAyMTEsIDE4MSwgMiwgMjE4LCAxNDksIDUyLCA0NywgMTE0LCAyMjEsIAorICAgIDIxOSwgMTQ1LCA0OCwgMTE0LCAyMjEsIDIxOSwgMTQ1LCAyMTEsIDE4MSwgMiwgNjcsIDUyLCAyMTEsIDE4MSwgMiwgNjcsIAorICAgIDU1LCA0NywgNzksIDI1MCwgMTI5LCAyLCAyMTksIDE5MCwgNDgsIDc5LCAyNTAsIDEyOSwgMiwgMjE5LCAxOTAsIDIxMSwgCisgICAgMTAyLCA0NywgMTYwLCAxNDUsIDIxMSwgMTAyLCA0OCwgMTYwLCAxNDUsIDI0OSwgMTU0LCA0NywgMTYwLCAxNDUsIDI0OSwgCisgICAgMTU0LCA0OCwgMTYwLCAxNDUsIDQ3LCAyMTUsIDczLCAxMDYsIDE0NSwgNDgsIDIxNSwgNzMsIDEwNiwgMTQ1LCA0NywgNTAsIAorICAgIDIyMSwgMjE2LCA0OCwgNTAsIDIyMSwgMjE2LCAxMTgsIDE3NywgMTMxLCAxMTksIDY3LCAyMjAsIDcxLCAxMTksIDY3LCAKKyAgICAxMzEsIDExOCwgMTc3LCAyMjAsIDcxLCA5OCwgMjQxLCAxMjUsIDY3LCAyMjAsIDcxLCAyNDEsIDIwNCwgNjcsIDgzLCAyMTgsIAorICAgIDIyNCwgMjE5LCAxOTYsIDgzLCA3OSwgMjExLCAxODAsIDIxOCwgMTQ5LCAyMjAsIDIwNCwgMjA2LCAyMzIsIDIxNiwgNDAsIAorICAgIDIyNiwgMjQ3LCAyNDUsIDIzLCAyMDEsIDI0NywgMTU1LCAyMTksIDgxLCAyNDUsIDIzLCAyMTksIDgxLCAyNDcsIDE1NSwgCisgICAgMjAxLCAyMTYsIDUyLCAyNDYsIDEyOSwgMiwgNDcsIDIzOSwgMjA3LCAyNDYsIDEyOSwgMiwgNDgsIDIzOSwgMjA3LCAyMDEsIAorICAgIDI0NiwgMTI4LCAyMTEsIDEwMiwgMTYwLCAyMTcsIDc3LCA1MywgMjEwLCAxMDksIDI0NiwgNzgsIDIxMSwgMjM3LCAyNDYsIAorICAgIDc4LCAyMTQsIDgsIDI0MSwgODIsIDIxMywgMjUxLCA3OSwgMjE1LCAxMCwgMjQ1LCAyMSwgMjA3LCAxNCwgNzksIDIyOSwgCisgICAgMjA1LCAyNDgsIDIxMSwgNTAsIDIzNywgMjM5LCAyMTgsIDIyNCwgMjQ3LCAxNTUsIDUwLCAyMjksIDkzLCAyMTksIDE4MCwgCisgICAgODMsIDEwLCAzNywgMjE4LCAyNTEsIDEwLCAzNywgMjQ3LCAyMDIsIDEwLCAzNywgMjE3LCA4MCwgMTAyLCAxMCwgMzcsIAorICAgIDIxNywgODAsIDEwNSwgMTAsIDM3LCAyMTcsIDgwLCAxNDIsIDEwLCAzNywgMjIxLCAxMTQsIDEwLCAzNywgMjQ5LCAxNDAsIAorICAgIDEwLCAzNywgMjEyLCAyMDYsIDEwLCAzNywgMjMxLCA1OSwgMTAyLCAxMCwgMzcsIDIzMSwgNTksIDEwNSwgMTAsIDM3LCAKKyAgICAyNDUsIDc2LCAxMCwgMzcsIDIxNywgODQsIDEwLCAzNywgNSwgMTAyLCAxMCwgMzcsIDUsIDEwNSwgMTAsIDM3LCAyMzAsIAorICAgIDEwMSwgMTAyLCAxMCwgMzcsIDIzMCwgMTAxLCAxMDUsIDEwLCAzNywgMjMwLCAxMDEsIDE0MiwgMTAsIDM3LCAyMzAsIDEwMSwgCisgICAgMTM5LCAxMCwgMzcsIDIxNCwgMjA0LCAxMCwgMzcsIDIxMSwgMjM5LCAxMCwgMzcsIDIxNCwgMjAyLCAxMDIsIDEwLCAzNywgCisgICAgMjE0LCAyMDIsIDEwNSwgMTAsIDM3LCAyMzksIDYxLCAxMDIsIDEwLCAzNywgMjM5LCA2MSwgMTA1LCAxMCwgMzcsIDIzOSwgCisgICAgMTA3LCAxMCwgMzcsIDIxOSwgNzEsIDEwLCAzNywgMjQ4LCAyOCwgMTAsIDM3LCAyMTMsIDE1NCwgMTAsIDM3LCAyMjYsIAorICAgIDE0NCwgMTAsIDM3LCAyNDYsIDcsIDEwLCAzNywgMjI2LCAxMzYsIDEwLCAzNywgMjQ3LCAyMjAsIDEwLCAzNywgMjA3LCA3MCwgCisgICAgMTAyLCAxMCwgMzcsIDIwNywgNzAsIDEwNSwgMTAsIDM3LCAyNDEsIDIxOSwgMTAsIDM3LCAyMjEsIDE4NiwgMTAyLCAxMCwgCisgICAgMzcsIDIyMSwgMTg2LCAxMDUsIDEwLCAzNywgMjE1LCA0NiwgMTYwLCAyMTEsIDYyLCAyMTAsIDI0OCwgMTAsIDM3LCAyNDcsIAorICAgIDc1LCAxMCwgMzcsIDI0NSwgNDAsIDEwLCAzNywgMjMyLCAxOTUsIDEwLCAzNywgMjQ5LCAxNzcsIDczLCAyNDcsIDE4NiwgCisgICAgMTAsIDM3LCAyNDIsIDE1MCwgMTAsIDM3LCAyMTQsIDEyNSwgMTAyLCAxMCwgMzcsIDIxNCwgMTI1LCAxMDUsIDEwLCAzNywgCisgICAgMjUwLCAxNDIsIDEwLCAzNywgMjE1LCA1MywgMTAsIDM3LCAyNDksIDMxLCAyMTUsIDUzLCAxMCwgMzcsIDIyNSwgOTIsIAorICAgIDEwMiwgMTAsIDM3LCAyMjUsIDkyLCAxMDUsIDEwLCAzNywgMjI1LCA5MiwgMTQyLCAxMCwgMzcsIDIyNSwgOTIsIDEzOSwgCisgICAgMTAsIDM3LCAyMjcsIDcwLCAxMCwgMzcsIDIxNSwgMjA4LCAxMCwgMzcsIDIxOSwgNzcsIDEwLCAzNywgMjQyLCAxNzQsIDEwLCAKKyAgICAzNywgMjIyLCAxNzksIDEwLCAzNywgMjQ5LCAxMDksIDEwMiwgMTAsIDM3LCAyNDksIDEwOSwgMTA1LCAxMCwgMzcsIDIyNywgCisgICAgMTE0LCAxMCwgMzcsIDIyNiwgMTM5LCAxMCwgMzcsIDIzOSwgMjQwLCAxMDIsIDEwLCAzNywgMjM5LCAyNDAsIDEwNSwgMTAsIAorICAgIDM3LCAyMzksIDI0MCwgMTQyLCAxMCwgMzcsIDIxMSwgMTk4LCAxMCwgMzcsIDI0NywgMTg1LCAxMCwgMzcsIDIwNywgMzYsIAorICAgIDEwMiwgMTAsIDM3LCAyMDcsIDM2LCAxMDUsIDEwLCAzNywgMjQ5LCAzMSwgMjE3LCA3NCwgMTAsIDM3LCAyMTUsIDQ2LCAKKyAgICAyMzgsIDY5LCAxMCwgMzcsIDIzOCwgNjksIDEwLCAzNywgMjQ5LCAzMSwgMjE0LCAxMzYsIDEwLCAzNywgMjQ5LCAzMSwgCisgICAgMjE1LCAyMDMsIDEwLCAzNywgMjQxLCAxNDgsIDEwLCAzNywgMjQ5LCAzMSwgMjQ4LCAxODksIDEwLCAzNywgMjE1LCA0NiwgCisgICAgMjA3LCA4NywgMTAsIDM3LCAyMDcsIDg4LCAxMDIsIDEwLCAzNywgMjA3LCA4OCwgMTA1LCAxMCwgMzcsIDI0NywgMjIzLCAKKyAgICAxMCwgMzcsIDI0OSwgMzEsIDI0MCwgMTEsIDEwLCAzNywgMTUyLCAxMDIsIDEwLCAzNywgMTUyLCAxMDUsIDEwLCAzNywgCisgICAgMjQ5LCAzMSwgMjI5LCAxMjUsIDEwLCAzNywgMjQ5LCAzMSwgMjQwLCAxOTYsIDEwLCAzNywgMjI2LCAxMzIsIDEwMiwgMTAsIAorICAgIDM3LCAyMjYsIDEzMiwgMTA1LCAxMCwgMzcsIDIxOSwgODMsIDEwLCAzNywgMjQ5LCAxODYsIDEwLCAzNywgMjQ5LCAzMSwgCisgICAgMjEyLCAxNjgsIDIzMCwgNTIsIDEwLCAzNywgMjQ5LCAzMSwgMjMwLCA1MywgMTAsIDM3LCAyNDksIDMxLCAyMDcsIDksIDEwLCAKKyAgICAzNywgMjQ5LCAzMSwgMjQxLCAxNjYsIDEwLCAzNywgMjQzLCAxMTQsIDEwMiwgMTAsIDM3LCAyNDMsIDExNCwgMTA1LCAxMCwgCisgICAgMzcsIDI0MywgMTE0LCAxNDIsIDEwLCAzNywgMjQ5LCAzMSwgMjQzLCAxMTMsIDEwLCAzNywgMjM5LCA2OCwgMTAsIDM3LCAKKyAgICAyNDksIDMxLCAyMzgsIDY1LCAxMCwgMzcsIDI0OSwgMTczLCAxMCwgMzcsIDI0MCwgNjksIDEwLCAzNywgMjQ5LCAzMSwgCisgICAgMjQxLCAyMTMsIDEwLCAzNywgMjQ5LCAzMSwgMjQ5LCAyMTgsIDEwLCAzNywgMjQ5LCAzMSwgMjE3LCAxNjUsIDEwLCAzNywgCisgICAgMjE1LCA0NiwgMjA3LCAyOCwgMTAsIDM3LCAyMTUsIDQ2LCAyMDYsIDQ0LCAxMCwgMzcsIDI0OSwgMzEsIDI0MSwgOTksIDEwLCAKKyAgICAzNywgMjMyLCAyMDIsIDI0MiwgMTc4LCAxMCwgMzcsIDI0OSwgMzEsIDI0MiwgMTc4LCAxMCwgMzcsIDIzMiwgMjAyLCAyMTEsIAorICAgIDEwMywgMTAsIDM3LCAyNDksIDMxLCAyMTEsIDEwMywgMTAsIDM3LCAyMzIsIDIwMiwgMjQzLCAyNTUsIDEwLCAzNywgMjQ5LCAKKyAgICAzMSwgMjQzLCAyNTUsIDEwLCAzNywgMjEwLCAxNDEsIDEwLCAzNywgMjMyLCAyMDIsIDIxMCwgMTQxLCAxMCwgMzcsIDI0OSwgCisgICAgMzEsIDIxMCwgMTQxLCA2OCwgMzcsIDEwMiwgNjgsIDM3LCAyMjksIDIwNSwgNjgsIDM3LCAyNDUsIDIzLCA2OCwgMzcsIAorICAgIDIxNCwgMjM1LCA2OCwgMzcsIDIxNywgNzksIDY4LCAzNywgMTA5LCA2OCwgMzcsIDEwNSwgNjgsIDM3LCAyMjksIDIzMSwgCisgICAgNjgsIDM3LCAyMjcsIDIyMSwgNjgsIDM3LCAyMzAsIDMxLCA2OCwgMzcsIDI0MywgMTgsIDY4LCAzNywgMTkzLCA2OCwgMzcsIAorICAgIDEzMCwgMjQ5LCAxNDAsIDY4LCAzNywgMjQ3LCA3NywgNjgsIDM3LCAyMzcsIDE4MSwgNjgsIDM3LCAyMTIsIDIwNiwgNjgsIAorICAgIDM3LCAyMjIsIDE0MiwgMjQ5LCAxNDAsIDY4LCAzNywgMjMxLCA1OCwgNjgsIDM3LCAyMjAsIDE2MSwgNjgsIDM3LCAyMDYsIAorICAgIDIyMywgNjgsIDM3LCAyMTQsIDExOCwgNjgsIDM3LCA0OCwgMjIyLCAxNDIsIDI0OSwgMTQwLCA2OCwgMzcsIDIzOSwgNywgCisgICAgMjQzLCAzNiwgNjgsIDM3LCAyMTIsIDk4LCA2OCwgMzcsIDI0NSwgNzYsIDY4LCAzNywgMjE3LCA4NCwgNjgsIDM3LCAyNDcsIAorICAgIDIwMiwgNjgsIDM3LCAyMjAsIDExNywgNjgsIDM3LCAyNTIsIDIxOSwgNjgsIDM3LCAyMjYsIDEyMywgNjgsIDM3LCAyNDMsIAorICAgIDM2LCA2OCwgMzcsIDI0MywgMTIwLCA2OCwgMzcsIDIxNywgMTA1LCA2OCwgMzcsIDI0MCwgMTksIDY4LCAzNywgMjQwLCAyMCwgCisgICAgMjE0LCAyMTcsIDY4LCAzNywgMjQyLCAxNzcsIDY4LCAzNywgMjQ5LCAyMzAsIDY4LCAzNywgMjA2LCAyNDQsIDY4LCAzNywgCisgICAgMjQ4LCA0OSwgNjgsIDM3LCAyMTgsIDEwNiwgNjgsIDM3LCAyMzMsIDY0LCA2OCwgMzcsIDIxNCwgMjE1LCA2OCwgMzcsIAorICAgIDIzMCwgMTAwLCA2OCwgMzcsIDI0NywgODcsIDY4LCAzNywgMjE0LCAxMTEsIDY4LCAzNywgMjI2LCAxMjgsIDY4LCAzNywgCisgICAgMjE4LCAxMzgsIDY4LCAzNywgMjA2LCAyMjksIDY4LCAzNywgMjIyLCAxNTksIDY4LCAzNywgMjEwLCAxNDgsIDY4LCAzNywgCisgICAgMjQzLCAyMzksIDY4LCAzNywgMjE1LCAxNDQsIDIxMSwgMjM5LCA2OCwgMzcsIDI0NCwgMjEsIDI0NywgMjAyLCA2OCwgMzcsIAorICAgIDE1MiwgMjEzLCAyMzAsIDY4LCAzNywgMTE4LCAyMzksIDEwMiwgNjgsIDM3LCAyMTUsIDE1MCwgNjgsIDM3LCAyNDksIDE0NiwgCisgICAgNjgsIDM3LCAyMTQsIDIwMSwgNjgsIDM3LCAyNDksIDExMywgNjgsIDM3LCAyMTQsIDcsIDY4LCAzNywgMjM5LCA2MCwgNjgsIAorICAgIDM3LCAyMzksIDEyMiwgNjgsIDM3LCAyNDUsIDI2LCA2OCwgMzcsIDIzOSwgMTA3LCA2OCwgMzcsIDI0OSwgMTMwLCA2OCwgCisgICAgMzcsIDIxOSwgNzEsIDY4LCAzNywgMjE3LCA5MiwgNjgsIDM3LCAyNDUsIDEwNiwgNjgsIDM3LCAyNTEsIDE2MCwgNjgsIDM3LCAKKyAgICAyMTQsIDEwNywgNjgsIDM3LCAyMjQsIDQyLCA2OCwgMzcsIDIxMywgMTU0LCA2OCwgMzcsIDIxNywgMTE2LCA2OCwgMzcsIAorICAgIDIyNiwgMTQ0LCA2OCwgMzcsIDIxMSwgNjEsIDY4LCAzNywgMjMwLCAxMjcsIDY4LCAzNywgMjEzLCAyNTEsIDY4LCAzNywgCisgICAgMjQ2LCA3LCA2OCwgMzcsIDIwNywgNTAsIDY4LCAzNywgMjQ1LCA1MiwgMjI0LCA0MiwgNjgsIDM3LCAyNDcsIDE1MSwgNjgsIAorICAgIDM3LCAyNDEsIDc1LCA2OCwgMzcsIDI0NywgMjE0LCA2OCwgMzcsIDIxNCwgMTIsIDY4LCAzNywgMjA3LCA2OSwgNjgsIDM3LCAKKyAgICAyNDEsIDIxOSwgNjgsIDM3LCAyNDcsIDIxMCwgNjgsIDM3LCAyNDIsIDM1LCA2OCwgMzcsIDUwLCAyMDYsIDE5NSwgNjgsIAorICAgIDM3LCAxNjAsIDIxMSwgNjIsIDIxMCwgMjQ4LCA2OCwgMzcsIDIxNCwgMjI4LCA2OCwgMzcsIDI0MiwgNDUsIDY4LCAzNywgCisgICAgMjQ3LCA3NSwgNjgsIDM3LCAyNDUsIDQwLCA2OCwgMzcsIDIyMCwgMTE0LCA2OCwgMzcsIDIzMiwgMTk1LCA2OCwgMzcsIAorICAgIDIyNywgOTIsIDY4LCAzNywgMjExLCAxNzksIDY4LCAzNywgMjEzLCAxMDQsIDY4LCAzNywgMjI5LCAyMjUsIDY4LCAzNywgCisgICAgMjA5LCAxNzUsIDY4LCAzNywgMjQxLCAyNDksIDY4LCAzNywgMjQ5LCAxNzcsIDczLCAyNDcsIDE4NiwgNjgsIDM3LCAyMTUsIAorICAgIDc2LCA2OCwgMzcsIDI0NCwgMjEsIDIxMiwgOTIsIDY4LCAzNywgMjA3LCAyMywgNjgsIDM3LCAyMTQsIDI0MywgNjgsIDM3LCAKKyAgICAyNDUsIDk0LCA2OCwgMzcsIDI0MiwgMTUwLCA2OCwgMzcsIDIxNCwgMTM5LCA2OCwgMzcsIDQ1LCA2OCwgMzcsIDIxMywgCisgICAgMjUzLCA2OCwgMzcsIDIxNCwgMTI0LCA2OCwgMzcsIDIxMSwgODIsIDY4LCAzNywgMjM5LCAyNDcsIDY4LCAzNywgMjQ4LCAKKyAgICAxNzYsIDY4LCAzNywgMjE0LCAzMCwgNjgsIDM3LCAyNTAsIDE0MiwgNjgsIDM3LCAyMTgsIDIwMywgNjgsIDM3LCAyMTUsIAorICAgIDUzLCA2OCwgMzcsIDIzMiwgMTg4LCA2OCwgMzcsIDIyNSwgOTEsIDY4LCAzNywgMjE1LCAyMDgsIDY4LCAzNywgMjQyLCAyMywgCisgICAgNjgsIDM3LCAyMjIsIDE3OSwgNjgsIDM3LCAyNTIsIDExNywgNjgsIDM3LCAyMjAsIDIyNSwgNjgsIDM3LCAyNDMsIDEyNCwgCisgICAgNjgsIDM3LCAyNDksIDEwOCwgNjgsIDM3LCAyMjcsIDExNCwgNjgsIDM3LCAyMjYsIDIwMywgNjgsIDM3LCAyMTYsIDU4LCAKKyAgICA2OCwgMzcsIDI1MSwgMjQ3LCA2OCwgMzcsIDIyNiwgMTM5LCA2OCwgMzcsIDIxMSwgMTA3LCA2OCwgMzcsIDIyMiwgMTMwLCAKKyAgICA2OCwgMzcsIDI0OSwgMTgwLCA2OCwgMzcsIDIxMywgMjQ5LCA2OCwgMzcsIDI0NywgMTYxLCA2OCwgMzcsIDIzOSwgMjM5LCAKKyAgICA2OCwgMzcsIDIxMSwgMTk4LCA2OCwgMzcsIDIzMywgMjgsIDY4LCAzNywgMjQ5LCAxOTEsIDY4LCAzNywgMjA3LCA4OCwgCisgICAgMjQzLCAzNiwgNjgsIDM3LCAyNDcsIDE4NSwgNjgsIDM3LCAyMDcsIDM1LCA2OCwgMzcsIDIxNywgNzQsIDY4LCAzNywgMjM4LCAKKyAgICA2OSwgNjgsIDM3LCAyMTQsIDEzNiwgNjgsIDM3LCAyMDksIDYzLCA2OCwgMzcsIDI1MCwgNTcsIDY4LCAzNywgMjIxLCAxNywgCisgICAgNjgsIDM3LCAyNTAsIDE2NSwgNjgsIDM3LCAyMTUsIDIwMywgNjgsIDM3LCAyMTksIDMxLCA2OCwgMzcsIDIxOCwgMzUsIDY4LCAKKyAgICAzNywgMjQxLCAxNDgsIDY4LCAzNywgMjQ5LCAxNzksIDY4LCAzNywgMjQ4LCAxODksIDY4LCAzNywgMjQ5LCAyMDcsIDY4LCAKKyAgICAzNywgMjI2LCAxNDEsIDY4LCAzNywgMjA3LCA4NywgNjgsIDM3LCAyNDcsIDIyMywgNjgsIDM3LCAyMDcsIDUsIDY4LCAzNywgCisgICAgMjQ1LCA4NywgNjgsIDM3LCAyMDgsIDE5OCwgNjgsIDM3LCAyNDAsIDExLCA2OCwgMzcsIDIyOSwgMTI1LCA2OCwgMzcsIAorICAgIDI0MCwgMTk2LCA2OCwgMzcsIDIyNiwgMTMxLCA2OCwgMzcsIDIxNCwgMjM0LCA2OCwgMzcsIDIxNSwgMTQ0LCAyMTIsIDE5MCwgCisgICAgMjQ5LCAyMTgsIDY4LCAzNywgMjE5LCA4MywgNjgsIDM3LCAyNDksIDE4NiwgNjgsIDM3LCAyMDYsIDIxOCwgNjgsIDM3LCAKKyAgICAyNDIsIDY3LCA2OCwgMzcsIDIzMCwgNTIsIDY4LCAzNywgMjEyLCAxNjgsIDIzMCwgNTIsIDY4LCAzNywgMjMwLCA0OCwgNjgsIAorICAgIDM3LCAyMTQsIDE2NCwgNjgsIDM3LCAyMzAsIDUzLCA2OCwgMzcsIDIwNywgOSwgNjgsIDM3LCAyNDEsIDE2NiwgNjgsIDM3LCAKKyAgICAyNDMsIDExMywgNjgsIDM3LCAyMzksIDY4LCA2OCwgMzcsIDI0MSwgMTE0LCA2OCwgMzcsIDIzOCwgNjUsIDY4LCAzNywgCisgICAgMjQ5LCAxNzMsIDY4LCAzNywgMjEyLCAxNzcsIDY4LCAzNywgMjM5LCAxMjksIDY4LCAzNywgMjQxLCAyNDIsIDY4LCAzNywgCisgICAgMjE3LCAxOTMsIDIwNywgNSwgNjgsIDM3LCAyNDgsIDE3OCwgNjgsIDM3LCAyNDAsIDY5LCA2OCwgMzcsIDI0MSwgMjEzLCAKKyAgICA2OCwgMzcsIDI0OSwgMjE4LCA2OCwgMzcsIDIxNywgMTY1LCA2OCwgMzcsIDI0NSwgMjQ4LCA2OCwgMzcsIDIwNywgMjgsIAorICAgIDY4LCAzNywgMjM5LCA0MiwgNjgsIDM3LCAyMDYsIDQ0LCA2OCwgMzcsIDIyNiwgMjE0LCA2OCwgMzcsIDI0OSwgMjAyLCA2OCwgCisgICAgMzcsIDI0MywgNDYsIDY4LCAzNywgMjQxLCA5OSwgNjgsIDM3LCAyMTEsIDM0LCA2OCwgMzcsIDI0MywgMjQxLCA2OCwgMzcsIAorICAgIDIxOSwgNjUsIDY4LCAzNywgMjI0LCA0NCwgNjgsIDM3LCAyNDIsIDE3OCwgNjgsIDM3LCAyMTEsIDEwMywgNjgsIDM3LCAKKyAgICAyNDMsIDI1NSwgNjgsIDM3LCAyMTAsIDE0MSwgNjgsIDM3LCAyNDEsIDE2OCwgMTI4LCAyNDUsIDIwOSwgMTU3LCA0NywgCisgICAgMjExLCAxMzAsIDIxOCwgMTY3LCAxMjgsIDI0NSwgMjA5LCAxNTcsIDg0LCAyMTEsIDEzMCwgNTUsIDEyOCwgMjQ1LCAyMDksIAorICAgIDE1NywgNDcsIDIxMSwgMTMwLCAyMjYsIDI0NywgMjMsIDIxOCwgMTY3LCAxMjgsIDI0NSwgMjA5LCAxNTcsIDg0LCAyMTEsIAorICAgIDEzMCwgMjI2LCAyNDcsIDIzLCA1NSwgMTI4LCAyNDUsIDIwOSwgMTU3LCAyNDEsIDgyLCAyMTMsIDEyNiwgMTI4LCAyNDUsIAorICAgIDIwOSwgMTU3LCAyMTMsIDEyNywgMjQxLCA5OCwgNTIsIDEyOCwgMjQ1LCAyMDksIDE1NywgMjEzLCAxMjcsIDI0MSwgOTgsIAorICAgIDU1LCAxMjgsIDI0NSwgMjA5LCAxNTcsIDIxMywgMTI3LCAyNDEsIDk4LCAyMzAsIDQ2LCAxMjgsIDI0NSwgMjA5LCAxNTcsIAorICAgIDIxMywgMTI3LCAyNDEsIDk4LCAyMDksIDIwMywgMjMwLCA0NiwgMTI4LCAyNDUsIDIwOSwgMTU3LCAyMTMsIDEyNywgMjQxLCAKKyAgICA5OCwgMjA5LCAyMDMsIDIxOCwgMTY3LCAxMjgsIDI0NSwgMjA5LCAxNTcsIDIxMywgMTI3LCAyNDEsIDk4LCAyMjksIDkyLCAKKyAgICAyMzAsIDQ2LCAxMjgsIDI0NSwgMjA5LCAxNTcsIDIyMiwgODUsIDEyOCwgMjE0LCAxNTMsIDEyOCwgMjQ3LCAxNTUsIDEyOCwgCisgICAgMjQxLCA4MiwgMjEzLCAyNTEsIDI0NSwgODQsIDgzLCAyMzIsIDE4OSwgMjMzLCA0NywgMjE0LCAyOSwgOTMsIDEyOCwgMjMyLCAKKyAgICAyMTgsIDgzLCAxMjgsIDI0NywgMTg4LCA4MywgMTI4LCA0MywgMjA1LCA4NSwgNDcsIDI1MiwgMTA5LCAxNDUsIDQ4LCAyNTIsIAorICAgIDEwOSwgMTQ1LCA0NywgNTAsIDI1MiwgMTA5LCAxNDUsIDQ4LCA1MCwgMjUyLCAxMDksIDE0NSwgNDcsIDI0NywgOTIsIDE0NSwgCisgICAgNDgsIDI0NywgOTIsIDE0NSwgNDcsIDU5LCAyNDcsIDkyLCAxNDUsIDQ4LCA1OSwgMjQ3LCA5MiwgMTQ1LCA0NywgNjAsIAorICAgIDIzMCwgMTYsIDE0NSwgNDgsIDYwLCAyMzAsIDE2LCAxNDUsIDIyMCwgMTc0LCA4MywgMjQwLCAxMzgsIDgzLCA0NywgMjExLCAKKyAgICA5MywgMjE1LCAyMDQsIDE0NSwgNDgsIDIxMSwgOTMsIDIxNSwgMjA0LCAxNDUsIDQ3LCA1OSwgMjMwLCAxNiwgMTQ1LCA0OCwgCisgICAgNTksIDIzMCwgMTYsIDE0NSwgNDcsIDU5LCAyMTEsIDkzLCAyMTUsIDIwNCwgMTQ1LCA0OCwgNTksIDIxMSwgOTMsIDIxNSwgCisgICAgMjA0LCAxNDUsIDQ3LCA1OSwgNDksIDE0NSwgNDgsIDU5LCA0OSwgMTQ1LCAyMDcsIDY1LCAyNDYsIDc4LCAyMTgsIDIyNCwgCisgICAgNTAsIDIyMCwgMTI4LCAyMTksIDE4MCwgODMsIDUwLCAyMjAsIDEyOCwgMjE5LCAxODAsIDgzLCAxMTQsIDUwLCAyMjAsIAorICAgIDEyOCwgMjE5LCAxODAsIDgzLCAyMjAsIDE3NCwgMTQxLCAyNDIsIDY3LCAyMzksIDEwMCwgMjIzLCAxNzcsIDEwMiwgMjM5LCAKKyAgICAxMDAsIDIyMywgMTc3LCAxMDUsIDIzOSwgMTAwLCAyMjMsIDE3NywgMTQyLCAyMzksIDEwMCwgMjIzLCAxNzcsIDEzOSwgCisgICAgMjM5LCAxMDAsIDIyMywgMTc3LCAxNjgsIDIzOSwgMTAwLCAyMjMsIDE3NywgMTg0LCAyMzksIDEwMCwgMjIzLCAxNzcsIAorICAgIDE5NSwgMjM5LCAxMDAsIDIyMywgMTc3LCAxOTMsIDIzOSwgMTAwLCAyMjMsIDE3NywgMjAwLCAxMjgsIDIyOSwgMjU0LCAKKyAgICAxMzUsIDgzLCAxMjgsIDIxOCwgMTQyLCAxMzUsIDgzLCAxMjgsIDI0NSwgMjE3LCAxMzUsIDgzLCAxMjgsIDI0MywgMTcsIAorICAgIDEzNSwgODMsIDI1LCAyMTUsIDQxLCA2NywgMTM1LCA4MywgMjUsIDUwLCA2NywgMTM1LCA4MywgMjA3LCA2MSwgMjQ2LCA3OCwgCisgICAgNzksIDIzMiwgMjYsIDIxOCwgMjUyLCA4MywgNzksIDIzMiwgMjYsIDIxOCwgMjUyLCAyLCAyMDgsIDE3MCwgMjE0LCAxNjUsIAorICAgIDgzLCA3OSwgMjMyLCAyNiwgMjE4LCAyNTIsIDE0MSwgMjA5LCAyMDMsIDIzOSwgMTIxLCA3OSwgMjMyLCAyNiwgMjE4LCAKKyAgICAyNTIsIDIsIDIwOCwgMTcwLCAyMTQsIDE2NSwgMTQxLCAyMDksIDIwMywgMjM5LCAxMjEsIDc5LCAyMzIsIDI2LCAyMTgsIAorICAgIDI1MiwgMTQxLCAyMjksIDkyLCAyMzksIDEyMSwgMzksIDIyMCwgMTc0LCA4MywgMTI4LCAyMTIsIDExMCwgMjI5LCAyMDYsIAorICAgIDI0MiwgMjAsIDIxNiwgNDAsIDkzLCAyMzksIDEwMCwgMjIzLCAxNzcsIDIxMiwgOTgsIDIzOSwgMTAwLCAyMjMsIDE3NywgCisgICAgMjEwLCAxMjMsIDIzOSwgMTAwLCAyMjMsIDE3NywgMjEyLCAzLCA3OSwgMTI4LCAyMzIsIDIxOCwgODMsIDIyNywgMTcxLCAKKyAgICA4MywgMjIxLCAyMTEsIDI1MiwgMTQwLCA4MywgMTI4LCA1NCwgMjMzLCA0OSwgMTI4LCAxNjAsIDI0MSwgMjM1LCAyMTQsIAorICAgIDE1MywgMTYxLCAxLCA1LCA2MiwgMTYxLCAxLCA2MiwgMTYxLCAxLCA1LCA3NCwgMTYxLCAxLCA3NCwgMTYxLCAxLCA1LCA3MSwgCisgICAgMTYxLCAxLCA3MSwgMTYxLCAxLCA1LCA3NSwgMTYxLCAxLCA3NSwgMTYxLCAxLCA1LCA3NiwgMTYxLCAxLCA3NiwgMTYxLCAxLCAKKyAgICAxNzIsIDE2MSwgMSwgMjQwLCAyNDQsIDE2MSwgMSwgMjMxLCAxMjMsIDE2MSwgMSwgMjQwLCA2MSwgMTYxLCAxLCAyMzAsIAorICAgIDIzNiwgMTYxLCAxLCAyMzksIDIxMywgMTYxLCAxLCAyMzEsIDIyNCwgMTYxLCAxLCAyNDAsIDE3MCwgMTYxLCAxLCAyMzEsIAorICAgIDUzLCAxNjEsIDEsIDI0MCwgMTksIDE2MSwgMSwgMjE3LCAxOTksIDE2MSwgMSwgMjA1LCAxMTYsIDE2MSwgMSwgMjE1LCA4MCwgCisgICAgMTYxLCAxLCAyMDUsIDQwLCAxNjEsIDEsIDIxMywgMjAzLCAxNjEsIDEsIDIwNSwgOSwgMTYxLCAxLCAyMTcsIDg2LCAxNjEsIAorICAgIDEsIDIwNSwgOTMsIDE2MSwgMSwgMjE0LCAxOTMsIDE2MSwgMSwgMjA1LCAxOSwgMTYxLCAxLCAyMTIsIDIxOSwgMTYxLCAxLCAKKyAgICAyNDYsIDE0NSwgMTYxLCAxLCAyMTEsIDIxMSwgMTYxLCAxLCAyNDUsIDE2OCwgMTYxLCAxLCA1LCAyMTAsIDE3MCwgMTYxLCAKKyAgICAxLCAyMTAsIDE3MCwgMTYxLCAxLCAyNDMsIDIzNywgMTYxLCAxLCAyMTIsIDEzMSwgMTYxLCAxLCAyNDYsIDksIDE2MSwgMSwgCisgICAgMTI0LCAxNjEsIDEsIDI0NSwgNTEsIDE2MSwgMSwgMTk5LCAxNjEsIDEsIDIyNCwgMjMwLCAxNjEsIDEsIDIyMywgMjE3LCAKKyAgICAxNjEsIDEsIDIyNSwgMTEwLCAxNjEsIDEsIDIyNCwgNjcsIDE2MSwgMSwgMTU1LCAxNjEsIDEsIDI1MCwgMTgzLCAxNjEsIDEsIAorICAgIDE3OSwgMTYxLCAxLCAyMzksIDExLCAxNjEsIDEsIDI0OSwgMjQ0LCAxNjEsIDEsIDIyMSwgNTMsIDE2MSwgMSwgMjM4LCA0MiwgCisgICAgMTYxLCAxLCAyNDksIDEwMSwgMTYxLCAxLCAyMjAsIDgyLCAxNjEsIDEsIDIzOSwgNzEsIDE2MSwgMSwgMjUwLCA2MSwgMTYxLCAKKyAgICAxLCAyMjEsIDE3NCwgMTYxLCAxLCAyMzgsIDE0OSwgMTYxLCAxLCAyNDksIDE4NCwgMTYxLCAxLCAyMjAsIDIxMSwgMTYxLCAKKyAgICAxLCAxODUsIDE2MSwgMSwgMjI2LCAyNTQsIDE2MSwgMSwgMjI2LCAxMTQsIDE2MSwgMSwgMjI3LCAxMTksIDE2MSwgMSwgCisgICAgMjI2LCAxODEsIDE2MSwgMSwgNSwgMTkwLCAxNjEsIDEsIDE5MCwgMTYxLCAxLCA1LCAyMDUsIDIxMywgMTYxLCAxLCAyMDUsIAorICAgIDIxMywgMTYxLCAxLCA1LCAyMDUsIDI0NywgMTYxLCAxLCAyMDUsIDI0NywgMTYxLCAxLCAyMTksIDExMywgMTYxLCAxLCAKKyAgICAyMTgsIDIwOCwgMTYxLCAxLCAyMTgsIDUwLCAxNjEsIDEsIDIxOSwgNTEsIDE2MSwgMSwgMjE4LCAxMjQsIDE2MSwgMSwgNSwgCisgICAgMjA3LCA5NiwgMTYxLCAxLCAyMDcsIDk2LCAxNjEsIDEsIDIwNywgMjAsIDE2MSwgMSwgMjA3LCA1MSwgMTYxLCAxLCAyMDYsIAorICAgIDI1MCwgMTYxLCAxLCAyMjYsIDMzLCAxNjEsIDEsIDIwNywgMTQ4LCAxNjEsIDEsIDUsIDE3MiwgMTYxLCAxLCA1LCAyMzEsIAorICAgIDIyNCwgMzYsIDIzMSwgMjQ4LCAyMDgsIDE3MCwgMjE0LCAxNjUsIDgzLCAzNiwgMjMxLCAyNDgsIDIxNiwgNTcsIDIxNCwgCisgICAgMTY1LCA4MywgMjMxLCAyNDgsIDIwOCwgMTcwLCAyMTQsIDE2NSwgODMsIDIzMSwgMjQ4LCAyMTYsIDU3LCAyMTQsIDE2NSwgCisgICAgODMsIDE2MSwgMjMyLCAyMTgsIDgzLCAxNjEsIDIwOCwgMTcwLCAyMzIsIDIxOCwgODMsIDE2MSwgMjQ1LCAxMjgsIDIwNSwgCisgICAgMjI4LCAyMzEsIDI0OCwgNTAsIDIzNywgMjM5LCA2NCwgMSwgNSwgNjIsIDY0LCAxLCA2MiwgNjQsIDEsIDUsIDc0LCA2NCwgCisgICAgMSwgNzQsIDY0LCAxLCA1LCA3MSwgNjQsIDEsIDcxLCA2NCwgMSwgNSwgNzUsIDY0LCAxLCA3NSwgNjQsIDEsIDUsIDc2LCAKKyAgICA2NCwgMSwgNzYsIDY0LCAxLCAxNzIsIDY0LCAxLCAyNDAsIDI0NCwgNjQsIDEsIDIzMSwgMTIzLCA2NCwgMSwgMjQwLCA2MSwgCisgICAgNjQsIDEsIDIzMCwgMjM2LCA2NCwgMSwgMjM5LCAyMTMsIDY0LCAxLCAyMzEsIDIyNCwgNjQsIDEsIDI0MCwgMTcwLCA2NCwgCisgICAgMSwgMjMxLCA1MywgNjQsIDEsIDI0MCwgMTksIDY0LCAxLCAyMTcsIDE5OSwgNjQsIDEsIDIwNSwgMTE2LCA2NCwgMSwgMjE1LCAKKyAgICA4MCwgNjQsIDEsIDIwNSwgNDAsIDY0LCAxLCAyMTMsIDIwMywgNjQsIDEsIDIwNSwgOSwgNjQsIDEsIDIxNywgODYsIDY0LCAKKyAgICAxLCAyMDUsIDkzLCA2NCwgMSwgMjE0LCAxOTMsIDY0LCAxLCAyMDUsIDE5LCA2NCwgMSwgMjEyLCAyMTksIDY0LCAxLCAyNDYsIAorICAgIDE0NSwgNjQsIDEsIDIxMSwgMjExLCA2NCwgMSwgMjQ1LCAxNjgsIDY0LCAxLCA1LCAyMTAsIDE3MCwgNjQsIDEsIDIxMCwgCisgICAgMTcwLCA2NCwgMSwgMjQzLCAyMzcsIDY0LCAxLCAyMTIsIDEzMSwgNjQsIDEsIDI0NiwgOSwgNjQsIDEsIDEyNCwgNjQsIDEsIAorICAgIDI0NSwgNTEsIDY0LCAxLCAxOTksIDY0LCAxLCAyMjQsIDIzMCwgNjQsIDEsIDIyMywgMjE3LCA2NCwgMSwgMjI1LCAxMTAsIAorICAgIDY0LCAxLCAyMjQsIDY3LCA2NCwgMSwgMTU1LCA2NCwgMSwgMjUwLCAxODMsIDY0LCAxLCAxNzksIDY0LCAxLCAyMzksIDExLCAKKyAgICA2NCwgMSwgMjQ5LCAyNDQsIDY0LCAxLCAyMjEsIDUzLCA2NCwgMSwgMjM4LCA0MiwgNjQsIDEsIDI0OSwgMTAxLCA2NCwgMSwgCisgICAgMjIwLCA4MiwgNjQsIDEsIDIzOSwgNzEsIDY0LCAxLCAyNTAsIDYxLCA2NCwgMSwgMjIxLCAxNzQsIDY0LCAxLCAyMzgsIAorICAgIDE0OSwgNjQsIDEsIDI0OSwgMTg0LCA2NCwgMSwgMjIwLCAyMTEsIDY0LCAxLCAxODUsIDY0LCAxLCAyMjYsIDI1NCwgNjQsIAorICAgIDEsIDIyNiwgMTE0LCA2NCwgMSwgMjI3LCAxMTksIDY0LCAxLCAyMjYsIDE4MSwgNjQsIDEsIDUsIDE5MCwgNjQsIDEsIDE5MCwgCisgICAgNjQsIDEsIDUsIDIwNSwgMjEzLCA2NCwgMSwgMjA1LCAyMTMsIDY0LCAxLCA1LCAyMDUsIDI0NywgNjQsIDEsIDIwNSwgMjQ3LCAKKyAgICA2NCwgMSwgMjE5LCAxMTMsIDY0LCAxLCAyMTgsIDIwOCwgNjQsIDEsIDIxOCwgNTAsIDY0LCAxLCAyMTksIDUxLCA2NCwgMSwgCisgICAgMjE4LCAxMjQsIDY0LCAxLCA1LCAyMDcsIDk2LCA2NCwgMSwgMjA3LCA5NiwgNjQsIDEsIDIwNywgMjAsIDY0LCAxLCAyMDcsIAorICAgIDUxLCA2NCwgMSwgMjA2LCAyNTAsIDY0LCAxLCAyMjYsIDMzLCA2NCwgMSwgMjA3LCAxNDgsIDY0LCAxLCA1LCAxNzIsIDY0LCAKKyAgICAxLCA1LCAyMzEsIDIyNCwgNjQsIDEsIDIwOSwgNzAsIDY0LCAxLCAyMDgsIDIxNCwgNjQsIDEsIDIwOSwgMzksIDY0LCAxLCAKKyAgICAyMDgsIDE3MywgNjQsIDIyNiwgMjQ3LCAyNDUsIDIzLCAyMzEsIDI0OCwgMjIwLCAxMDYsIDIxNCwgMTY1LCA4MywgNjQsIAorICAgIDIzMiwgMjE4LCA4MywgNjQsIDIwOCwgMTcwLCAyMzIsIDIxOCwgODMsIDY0LCAyNDUsIDEyOCwgMjMxLCAyMCwgMjQ5LCAKKyAgICAxNjMsIDEsIDI1MSwgMTUwLCAyNDksIDE2MywgMSwgMjIyLCA2NywgMjQ5LCAxNjMsIDEsIDIyOSwgMjgsIDI0OSwgMTYzLCAKKyAgICAxLCAyNDIsIDEzOSwgMjQ5LCAxNjMsIDEsIDI0NiwgMjQwLCAyNDksIDE2MywgMSwgMjEzLCAxMCwgMjQ5LCAxNjMsIDEsIAorICAgIDIyNiwgMzMsIDI0OSwgMTYzLCAxLCAxNDksIDI0OSwgMTYzLCAxLCAyNDEsIDU1LCAyNDksIDE2MywgMSwgMjMyLCA3NiwgCisgICAgMjQ5LCAxNjMsIDEsIDIzOSwgMTU1LCAyNDksIDE2MywgMSwgMjMyLCAyMDMsIDI0OSwgMTYzLCAxLCAyMjAsIDI3LCAyNDksIAorICAgIDE2MywgMSwgMjA2LCAxOTUsIDI0OSwgMTYzLCAxLCAyMDUsIDgyLCAyNDksIDE2MywgMSwgMjQ4LCAxMTEsIDI0OSwgMTYzLCAKKyAgICAxLCAyMTYsIDQsIDI0OSwgMTYzLCAxLCAxMzcsIDI0OSwgMTYzLCAxLCAyMDUsIDE1OSwgMjQ5LCAxNjMsIDEsIDI0OSwgMzQsIAorICAgIDI0OSwgMTYzLCAxLCAxODIsIDI0OSwgMTYzLCAxLCA2MiwgMjQ5LCAxNjMsIDEsIDc2LCAyNDksIDE2MywgMSwgNzUsIDI0OSwgCisgICAgMTYzLCAxLCAyNDMsIDkyLCAyNDksIDE2MywgMSwgMjUyLCAyMDUsIDI0OSwgMTYzLCAxLCAyNDMsIDkwLCAyNDksIDE2MywgCisgICAgMSwgMjUxLCAxODQsIDI0OSwgMTYzLCAxLCAyMjIsIDk3LCAyNDksIDE2MywgMSwgMjUyLCAxMjIsIDI0OSwgMTYzLCAxLCAKKyAgICAyNDMsIDQxLCAyNDksIDE2MywgMSwgMjUyLCAxMTQsIDI0OSwgMTYzLCAxLCAyNDMsIDI4LCAyNDksIDE2MywgMSwgMjQyLCAKKyAgICAyMzUsIDI0OSwgMTYzLCAxLCA3NCwgMjQ5LCAxNjMsIDEsIDcxLCAyNDksIDE2MywgMSwgMjMyLCAyMTYsIDI0OSwgMTYzLCAKKyAgICAxLCAyMDksIDE0OCwgMjQ5LCAxNjMsIDEsIDIyNSwgNzksIDI0OSwgMTYzLCAxLCAyNDAsIDIzLCAyNDksIDE2MywgMSwgCisgICAgMjMzLCAxMDMsIDI1LCAxLCAyMzEsIDg0LCAyNSwgMSwgMjE0LCA4OCwgMjUsIDEsIDIzMSwgNzcsIDI1LCAxLCAyMjQsIAorICAgIDIyMywgMjUsIDEsIDIyNCwgMjIxLCAyNSwgMSwgMjI0LCAyMjAsIDI1LCAxLCAyMTEsIDE5MywgMjUsIDEsIDIxNCwgNzcsIAorICAgIDI1LCAxLCAyMTgsIDE5OCwgMjUsIDEsIDIxOCwgMTkzLCAyNSwgMSwgMjE4LCAxOTAsIDI1LCAxLCAyMTgsIDE4MywgMjUsIAorICAgIDEsIDIxOCwgMTc4LCAyNSwgMSwgMjE4LCAxNzMsIDI1LCAxLCAyMTgsIDE4NCwgMjUsIDEsIDIxOCwgMTk2LCAyNSwgMSwgCisgICAgMjI2LCAyNDAsIDI1LCAxLCAyMjEsIDM5LCAyNSwgMSwgMjE0LCA4NSwgMjUsIDEsIDIyMSwgMjgsIDI1LCAxLCAyMTUsIDMzLCAKKyAgICAyNSwgMSwgMjE0LCA4MiwgMjUsIDEsIDIzMywgMTI1LCAyNSwgMSwgMjQ3LCAyNDYsIDI1LCAxLCAyMTQsIDkyLCAyNSwgMSwgCisgICAgMjQ4LCA1NCwgMjUsIDEsIDIzMSwgMTQzLCAyNSwgMSwgMjEyLCAxNSwgMjUsIDEsIDIyMSwgNzYsIDI1LCAxLCAyMzksIDMsIAorICAgIDI1LCAxLCA2MiwgMjUsIDEsIDI1MiwgMjQ4LCAyNSwgMSwgMTkwLCAyNSwgMSwgMjA2LCA5OCwgMjUsIDEsIDI0MywgNiwgCisgICAgMjUsIDEsIDc1LCAyNSwgMSwgMjA2LCAzOSwgMjUsIDEsIDIwNiwgNTIsIDI1LCAxLCA3NiwgMjUsIDEsIDIwNywgOTYsIDI1LCAKKyAgICAxLCAyMDcsIDkyLCAyNSwgMSwgMjIyLCAyMDYsIDI1LCAxLCAyMDUsIDI0NywgMjUsIDEsIDcxLCAyNSwgMSwgMjA3LCAzOCwgCisgICAgMjUsIDEsIDIwNywgNTEsIDI1LCAxLCAyMDcsIDIwLCAyNSwgMSwgMjA1LCAyMTMsIDI1LCAxLCAyNDIsIDE5MiwgMjUsIDEsIAorICAgIDIwNiwgMTEsIDI1LCAxLCA3NCwgMjUsIDI0MSwgMjMyLCAyNSwgMSwgMjE0LCA4NiwgMjUsIDEsIDIyNCwgMjEzLCAyNSwgMSwgCisgICAgMjI0LCAyMTUsIDI1LCAxLCAyMjQsIDIxOCwgMjUsIDEsIDIxOCwgMTkxLCAyNSwgMSwgMjE4LCAxNzIsIDI1LCAxLCAyMTgsIAorICAgIDE4MCwgMjUsIDEsIDIxOCwgMTg1LCAyNSwgMSwgMjE4LCAxNzAsIDI1LCAxLCAyMjYsIDIzMywgMjUsIDEsIDIyNiwgMjMwLCAKKyAgICAyNSwgMSwgMjI2LCAyMzQsIDI1LCAxLCAyMzIsIDEzLCAyNSwgMSwgMjIxLCAzNCwgMjUsIDEsIDIyMSwgMjAsIDI1LCAxLCAKKyAgICAyMjEsIDI2LCAyNSwgMSwgMjIxLCAyMywgMjUsIDEsIDIyMSwgMzcsIDI1LCAxLCAyMjEsIDIxLCAyNSwgMSwgMjMyLCAxMSwgCisgICAgMjUsIDEsIDIzMiwgOSwgMjUsIDEsIDIxNSwgMjYsIDI1LCAxLCAyMTUsIDI0LCAyNSwgMSwgMjE1LCAxNiwgMjUsIDEsIAorICAgIDIxNSwgMjEsIDI1LCAxLCAyMTUsIDMxLCAyNSwgMSwgMjIxLCAyNDcsIDI1LCAxLCAyMTQsIDg5LCAyNSwgMSwgMjA2LCAyOSwgCisgICAgMjUsIDEsIDIwNiwgMjUsIDI1LCAxLCAyMDYsIDI2LCAyNSwgMSwgMjMyLCAxMiwgMjUsIDEsIDIxNCwgOTAsIDI1LCAxLCAKKyAgICAyMDYsIDM1LCAyNSwgMSwgMjA1LCAyNDEsIDI1LCAxLCAyMDUsIDI0MCwgMjUsIDEsIDIwNSwgMjQzLCAyNSwgMSwgMjA1LCAKKyAgICAyMDQsIDI1LCAxLCAyMDUsIDIwNSwgMjUsIDEsIDIwNSwgMjA4LCAyNSwgMSwgMjUyLCAzMCwgMjUsIDEsIDI1MiwgMjQsIAorICAgIDEyOCwgMjUyLCA5OCwgMjI5LCAxOTQsIDgzLCAxMjgsIDI1MiwgOTgsIDIxOCwgMjI1LCA4MywgMTI4LCAyNTIsIDk4LCAKKyAgICAxMTksIDgzLCAxMjgsIDI1MiwgOTgsIDExOCwgODMsIDEyOCwgMjUyLCA5OCwgMTI5LCA4MywgMTI4LCAyNTIsIDk4LCAyNDEsIAorICAgIDEyNSwgODMsIDEyOCwgMjUyLCA5OCwgMjExLCAxMDIsIDgzLCAxMjgsIDI1MiwgOTgsIDIyNiwgMjQ3LCA4MywgMTI4LCAKKyAgICAyNTIsIDk4LCAyNDksIDE1NCwgODMsIDEyOCwgMjUyLCA5OCwgMjQxLCAyMTUsIDgzLCAxMjgsIDI1MiwgOTgsIDIxNywgODAsIAorICAgIDgzLCAxMjgsIDI1MiwgOTgsIDIxMiwgMTEsIDgzLCAxMjgsIDI1MiwgOTgsIDI0MSwgMTE4LCA4MywgMTI4LCAyNTIsIDk4LCAKKyAgICAyMzksIDU3LCA4MywgMTI4LCAyNTIsIDk4LCAyNDMsIDEyMSwgODMsIDEyOCwgMjUyLCA5OCwgMjI3LCAyMjIsIDgzLCAyNDksIAorICAgIDE2MywgMSwgMjQ5LCAxMDEsIDI0OSwgMTYzLCAxLCAyMDUsIDQwLCAyNDksIDE2MywgMSwgMjMyLCAxNjIsIDI0OSwgMTYzLCAKKyAgICAxLCAyMzksIDIxMywgMjQ5LCAxNjMsIDEsIDI0MywgMTA0LCAyNDksIDE2MywgMSwgMjQzLCAyNSwgMjQ5LCAxNjMsIDEsIAorICAgIDIyMiwgMTUyLCAyNDksIDE2MywgMSwgMjIyLCAxNTYsIDI0OSwgMTYzLCAxLCAyMzIsIDI0MywgMjQ5LCAxNjMsIDEsIDI1MiwgCisgICAgMTAwLCAyNDksIDE2MywgMSwgMjMzLCAzNSwgMjQ5LCAxNjMsIDEsIDIwOSwgMjExLCAyNDksIDE2MywgMSwgMjMzLCA4NSwgCisgICAgMjQ5LCAxNjMsIDEsIDIyNSwgNTcsIDI0OSwgMTYzLCAxLCAyNTIsIDE5OSwgMjQ5LCAxNjMsIDEsIDI1MSwgMTc5LCAyNDksIAorICAgIDE2MywgMSwgMjUyLCAxMzYsIDI0OSwgMTYzLCAxLCAyMjIsIDE3MywgMjQ5LCAxNjMsIDEsIDIyMiwgMTU4LCAyNDksIDE2MywgCisgICAgMSwgMjMzLCAzMiwgMjQ5LCAxNjMsIDQyLCAxLCAyMjIsIDY3LCAyNDksIDE2MywgNDIsIDEsIDIxMywgMTAsIDI0OSwgMTYzLCAKKyAgICA0MiwgMSwgMjMyLCA3NiwgMjQ5LCAxNjMsIDQyLCAxLCAyMzksIDE1NSwgMjQ5LCAxNjMsIDEsIDI0MCwgMTAwLCAyNDksIAorICAgIDE2MywgMSwgMjI5LCAyNDksIDI0OSwgMTYzLCAxLCAyMDQsIDI0NSwgMTAsIDIxMywgMjI1LCAyMTMsIDEwLCAxMCwgMjEzLCAKKyAgICAyMjUsIDIwNywgMzEsIDEwLCAyMTMsIDIyNSwgMjA2LCAxNzAsIDEwLCAyMTMsIDIyNSwgMjQ5LCA0NywgMTAsIDIxMywgCisgICAgMjI1LCAyMTMsIDExMywgMTAsIDIxMywgMjI1LCAyMzcsIDIyOSwgMTAsIDIxMywgMjI1LCAyMzcsIDIzMywgMTAsIDIxMywgCisgICAgMjI1LCAyMzgsIDUxLCAxMCwgMjEzLCAyMjUsIDIzNywgMjMwLCAxMCwgMjEzLCAyMjUsIDIxMywgMTMsIDEwLCAyMTMsIAorICAgIDIyNSwgMjM3LCAyMzIsIDEwLCAyMTMsIDIyNSwgMjM3LCAyMjgsIDEwLCAyMTMsIDIyNSwgMjM4LCA0OSwgMTAsIDIxMywgCisgICAgMjI1LCAyMzcsIDIzMSwgMTAsIDIxMywgMjI1LCAyMzcsIDIyNywgMTAsIDIxMywgMjI1LCAyMjYsIDMzLCAxMCwgMjEzLCAKKyAgICAyMjUsIDIzOSwgMTU1LCAxMCwgMjEzLCAyMjUsIDE4MiwgMTAsIDIxMywgMjI1LCAyMjIsIDY3LCAxMCwgMjEzLCAyMjUsIAorICAgIDIxNCwgMTU2LCAxMCwgMjEzLCAyMjUsIDI0NiwgMjQwLCAxMCwgMjEzLCAyMjUsIDIzNywgMjM0LCAxMCwgMjEzLCAyMjUsIAorICAgIDIzOSwgMjEsIDEwLCAyMTMsIDIyNSwgMjEzLCAyMiwgMTAsIDIxMywgMjI1LCAyMTMsIDkyLCAxMCwgMjEzLCAyMjUsIDIxNCwgCisgICAgNDAsIDEwLCAyMTMsIDIyNSwgMjE2LCAxMCwgMTAsIDIxMywgMjI1LCAyMjEsIDE3OCwgMTAsIDIxMywgMjI1LCAyMjAsIDI5LCAKKyAgICAxMCwgMjEzLCAyMjUsIDIxMSwgMTMxLCAxMCwgMjEzLCAyMjUsIDIxMywgMTIsIDEwLCAyMTMsIDIyNSwgMjEzLCAxMDMsIAorICAgIDEwLCAyMTMsIDIyNSwgMjM3LCAyNDEsIDEwLCAyMTMsIDIyNSwgMjM3LCAyMjYsIDEwLCAyMTMsIDIyNSwgMjIxLCA5NSwgCisgICAgMTAsIDIxMywgMjI1LCAyMjAsIDI3LCA2NCwgMSwgNSwgMjMwLCAyMzYsIDY0LCAxLCA1LCAyMTUsIDgwLCA2NCwgMSwgNSwgCisgICAgMjEzLCAyMDMsIDY0LCAxLCA1LCAxMjQsIDY0LCAxLCA1LCAyMjMsIDIxNywgNjQsIDEsIDUsIDE1NSwgNjQsIDEsIDUsIAorICAgIDIzOSwgMTEsIDY0LCAxLCA1LCAyMzgsIDQyLCA2NCwgMSwgNSwgMjM5LCA3MSwgNjQsIDEsIDUsIDIzOCwgMTQ5LCA2NCwgMSwgCisgICAgNSwgMjI2LCAxMTQsIDY0LCAxLCA1LCAyMTksIDExMywgNjQsIDEsIDUsIDIxOCwgMjA4LCA2NCwgMSwgNSwgMjE4LCA1MCwgCisgICAgNjQsIDEsIDUsIDIxOSwgNTEsIDY0LCAxLCA1LCAyMTgsIDEyNCwgOTcsIDI1LCAyMzEsIDg0LCA5NywgMjUsIDIyNCwgMjIzLCAKKyAgICA5NywgMjUsIDIxMSwgMTkzLCA5NywgMjUsIDIxOCwgMTk4LCA5NywgMjUsIDIyNiwgMjQwLCA5NywgMjUsIDIyMSwgMzksIAorICAgIDk3LCAyNSwgMjE1LCAzMywgOTcsIDI1LCAyMzMsIDEyNSwgOTcsIDI1LCAyNDcsIDI0NiwgOTcsIDI1LCAyNDgsIDU0LCA5NywgCisgICAgMjUsIDIzMSwgMTQzLCA5NywgMjUsIDIxMiwgMTUsIDk3LCAyNSwgMjIxLCA3NiwgOTcsIDI1LCAyMzksIDMsIDk3LCAyNSwgCisgICAgMjMxLCA4NSwgNjIsIDk3LCAyNSwgMjI0LCAyMjQsIDYyLCA5NywgMjUsIDIxMSwgMTk0LCA2MiwgOTcsIDI1LCAyMTgsIAorICAgIDE5OSwgNjIsIDk3LCAyNSwgMjI2LCAyNDEsIDYyLCA5NywgMjUsIDIyMSwgNDAsIDYyLCA5NywgMjUsIDIxNSwgMzQsIDYyLCAKKyAgICA5NywgMjUsIDIzMywgMTI2LCA2MiwgOTcsIDI1LCAyNDcsIDI0NywgNjIsIDk3LCAyNSwgMjQ4LCA1NSwgNjIsIDk3LCAyNSwgCisgICAgMjMxLCAxNDQsIDYyLCA5NywgMjUsIDIxMiwgMTYsIDYyLCA5NywgMjUsIDIyMSwgNzcsIDYyLCA5NywgMjUsIDIzOSwgNCwgCisgICAgNjIsIDk3LCAyNSwgMjQ3LCAyNDcsIDcxLCA5NywgMjMxLCAyNCwgMTU3LCAyMjIsIDE4OCwgOTcsIDIzMSwgMjQsIDE1NywgCisgICAgMTQ4LCAyMzgsIDQyLCA5NywgMTc1LCAxMDIsIDk3LCAxNzUsIDEwNSwgOTcsIDE3NSwgMTQyLCA5NywgMTc1LCAxMzksIDk3LCAKKyAgICAxNzUsIDE2OCwgOTcsIDE3NSwgMTg0LCA5NywgMTc1LCAxOTUsIDk3LCAxNzUsIDE5MywgOTcsIDE3NSwgMjAwLCA5NywgCisgICAgMTc1LCAyMTIsIDk4LCA5NywgMTc1LCAyMjYsIDE0NCwgOTcsIDE3NSwgMjQxLCAyMTksIDk3LCAxNzUsIDIwNywgNjksIDk3LCAKKyAgICAxNzUsIDIwNiwgMjM3LCA5NywgMTc1LCAyMjcsIDYzLCA5NywgMTc1LCAyNDMsIDEyMCwgOTcsIDE3NSwgMjEzLCAxNTQsIAorICAgIDk3LCAxNzUsIDIxMywgMjU0LCA5NywgMTc1LCAyMzksIDc4LCA5NywgMTc1LCAyMTQsIDE4OSwgOTcsIDE3NSwgMjI1LCAKKyAgICAyMTAsIDk3LCAxNzUsIDIxNCwgMTM4LCA5NywgMTc1LCAyNDEsIDIyOSwgOTcsIDE3NSwgMjQ3LCAxMzMsIDk3LCAxNzUsIAorICAgIDIzMCwgMTMwLCA5NywgMTc1LCAyMTgsIDI0NiwgOTcsIDE3NSwgMjQ4LCAyMzYsIDk3LCAxNzUsIDIxMywgMjA3LCA5NywgCisgICAgMTc1LCAyMTMsIDEzNiwgOTcsIDE3NSwgMjQzLCAxNiwgOTcsIDE3NSwgMjE4LCAyMzgsIDk3LCAxNzUsIDI1MiwgMTUyLCAKKyAgICA5NywgMTc1LCAyNDIsIDEsIDk3LCAxNzUsIDIxOCwgMjM2LCA5NywgMTc1LCAyMTYsIDU4LCA5NywgMTc1LCAyMTksIDUwLCAKKyAgICAzOSwgMTc1LCAyMTksIDE5NSwgMzksIDE3NSwgMjMxLCAxMDgsIDM5LCAxNzUsIDIxNywgMTAzLCAzOSwgMTc1LCAyMzEsIAorICAgIDIwLCAzOSwgNDMsIDIxMiwgOTksIDIyMiwgMTY2LCA2MCwgMjE0LCAxMDcsIDM5LCA0MywgMjEwLCAxMjQsIDIyMiwgMTY2LCAKKyAgICA2MCwgMjE0LCAxMDcsIDM5LCA0MywgMjEyLCA0LCAyMjIsIDE2NiwgNjAsIDIxNCwgMTA3LCAzOSwgNDMsIDI0MSwgMTMxLCAKKyAgICAyMjIsIDE2NiwgNjAsIDIxNCwgMTA3LCAzOSwgNDMsIDI0MSwgMjQ0LCAyMjIsIDE2NiwgNjAsIDIxNCwgMTA3LCAzOSwgNDMsIAorICAgIDIxNCwgMjUzLCAyMjIsIDE2NiwgNjAsIDIxNCwgMTA3LCAzOSwgNDMsIDIxNiwgMTgsIDIyMiwgMTY2LCA2MCwgMjE0LCAKKyAgICAxMDcsIDM5LCA0MywgMjQzLCA4MCwgMjIyLCAxNjYsIDYwLCAyMTQsIDEwNywgMjIxLCAyMDcsIDUzLCAzOSwgNDMsIDIxMCwgCisgICAgMTI0LCAxMDIsIDM5LCA0MywgMjEwLCAxMjQsIDEwNSwgMzksIDQzLCAyMTAsIDEyNCwgMTQyLCAzOSwgNDMsIDIxMCwgMTI0LCAKKyAgICAxMzksIDM5LCA0MywgMjEwLCAxMjQsIDE2OCwgMzksIDQzLCAyMTAsIDEyNCwgMTg0LCAzOSwgNDMsIDIxMCwgMTI0LCAxOTUsIAorICAgIDM5LCA0MywgMjEwLCAxMjQsIDE5MywgMzksIDQzLCAyMTAsIDEyNCwgMjAwLCAzOSwgNDMsIDIxMiwgMywgMzksIDQzLCAKKyAgICAyMTIsIDQsIDEwMiwgMzksIDQzLCAyMTIsIDQsIDEwNSwgMzksIDQzLCAyMTIsIDQsIDE0MiwgMzksIDQzLCAyMTIsIDQsIAorICAgIDEzOSwgMzksIDQzLCAyMTIsIDQsIDE2OCwgMzksIDI1LCAyMzEsIDg0LCAzOSwgMjUsIDIyNCwgMjIzLCAzOSwgMjUsIDIxMSwgCisgICAgMTkzLCAzOSwgMjUsIDIxOCwgMTk4LCAzOSwgMjUsIDIyNiwgMjQwLCAzOSwgMjUsIDIyMSwgMzksIDM5LCAyNSwgMjE1LCAKKyAgICAzMywgMzksIDI1LCAyMzMsIDEyNSwgMzksIDI1LCAyNDcsIDI0NiwgMzksIDI1LCAyNDgsIDU0LCAzOSwgMjUsIDIzMSwgCisgICAgMTQzLCAzOSwgMjUsIDIxMiwgMTUsIDM5LCAyNSwgMjIxLCA3NiwgMzksIDI1LCAyMzksIDMsIDM5LCAyNSwgMjMxLCA4NSwgCisgICAgNjIsIDM5LCAyNSwgMjI0LCAyMjQsIDYyLCAzOSwgMjUsIDIxMSwgMTk0LCA2MiwgMzksIDI1LCAyMTgsIDE5OSwgNjIsIDM5LCAKKyAgICAyNSwgMjI2LCAyNDEsIDYyLCAzOSwgMjUsIDIyMSwgNDAsIDYyLCAzOSwgMjUsIDIxNSwgMzQsIDYyLCAzOSwgMjUsIDIzMywgCisgICAgMTI2LCA2MiwgMzksIDI1LCAyNDcsIDI0NywgNjIsIDM5LCAyNSwgMjQ4LCA1NSwgNjIsIDM5LCAyNSwgMjMxLCAxNDQsIDYyLCAKKyAgICAzOSwgMjUsIDIxMiwgMTYsIDYyLCAzOSwgMjUsIDIyMSwgNzcsIDYyLCAzOSwgMjUsIDIzOSwgNCwgNjIsIDM5LCAyMzEsIAorICAgIDI0LCAxNTcsIDI0OCwgMTAxLCAzOSwgMjMxLCAyNCwgMTU3LCAyMzIsIDEwMCwgMzksIDI1LCAyMzMsIDEyNiwgNzEsIDIzMSwgCisgICAgMjQsIDIxNCwgMjksIDkzLCAzOSwgMTc1LCAxMDIsIDM5LCAxNzUsIDEwNSwgMzksIDE3NSwgMTQyLCAzOSwgMTc1LCAxMzksIAorICAgIDM5LCAxNzUsIDE2OCwgMzksIDE3NSwgMTg0LCAzOSwgMTc1LCAxOTUsIDM5LCAxNzUsIDE5MywgMzksIDE3NSwgMjAwLCAzOSwgCisgICAgMTc1LCAyMTIsIDk4LCAzOSwgMTc1LCAyMjYsIDE0NCwgMzksIDE3NSwgMjQxLCAyMTksIDM5LCAxNzUsIDIwNywgNjksIDM5LCAKKyAgICAxNzUsIDIwNiwgMjM3LCAzOSwgMTc1LCAyMjcsIDYzLCAzOSwgMTc1LCAyNDMsIDEyMCwgMzksIDE3NSwgMjEzLCAxNTQsIAorICAgIDM5LCAxNzUsIDIxMywgMjU0LCAzOSwgMTc1LCAyMzksIDc4LCAzOSwgMTc1LCAyMTQsIDE4OSwgMzksIDE3NSwgMjI1LCAKKyAgICAyMTAsIDM5LCAxNzUsIDIxNCwgMTM4LCAzOSwgMTc1LCAyNDEsIDIyOSwgMzksIDE3NSwgMjQ3LCAxMzMsIDM5LCAxNzUsIAorICAgIDIzMCwgMTMwLCAzOSwgMTc1LCAyMTcsIDc4LCAzOSwgMTc1LCAyMjcsIDIyNSwgMzksIDE3NSwgMjQyLCAxMCwgMzksIDE3NSwgCisgICAgMjEzLCAxNjYsIDM5LCAxNzUsIDI0MiwgMTcxLCAzOSwgMTc1LCAyMjAsIDEyNCwgMzksIDE3NSwgMjUxLCAxODgsIDM5LCAKKyAgICAxNzUsIDIzMiwgMjE5LCAzOSwgMTc1LCAyMTgsIDIzNiwgMzksIDE3NSwgMjQ3LCA5NSwgMzksIDE3NSwgMjQ3LCA4NiwgMzksIAorICAgIDE3NSwgMjM4LCAyNTIsIDM5LCAxNzUsIDI0OCwgMTI4LCAzOSwgMTc1LCAyMjksIDk3LCAzOSwgMTc1LCAyMzAsIDQ2LCAzOSwgCisgICAgMTc1LCAyMTgsIDE2NywgMzksIDE3NSwgMjI3LCAxMTAsIDM5LCAxNzUsIDIxOSwgNywgMzksIDE3NSwgMjEzLCAyMDcsIDM5LCAKKyAgICAxNzUsIDIxMywgMTM2LCAzOSwgMTc1LCAyNDMsIDE2LCAzOSwgMTc1LCAyMTgsIDIzOCwgMzksIDE3NSwgMjUyLCAxNTIsIAorICAgIDM5LCAxNzUsIDIyNCwgMjA5LCAzOSwgNDMsIDIxMiwgNCwgMTg0LCAzOSwgNDMsIDIxMiwgNCwgMTk1LCAzOSwgNDMsIDIxMiwgCisgICAgNCwgMTkzLCAzOSwgNDMsIDIxMiwgNCwgMjAwLCAzOSwgNDMsIDI0MSwgMTMwLCAzOSwgNDMsIDI0MSwgMTMxLCAxMDIsIDM5LCAKKyAgICA0MywgMjQxLCAxMzEsIDEwNSwgMzksIDQzLCAyNDEsIDEzMSwgMTQyLCAzOSwgNDMsIDI0MSwgMTMxLCAxMzksIDM5LCA0MywgCisgICAgMjQxLCAxMzEsIDE2OCwgMzksIDQzLCAyNDEsIDEzMSwgMTg0LCAzOSwgNDMsIDI0MSwgMTMxLCAxOTUsIDM5LCA0MywgMjQxLCAKKyAgICAxMzEsIDE5MywgMzksIDQzLCAyNDEsIDEzMSwgMjAwLCAzOSwgNDMsIDI0MSwgMjQzLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIAorICAgIDIzMiwgMTkxLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0MiwgMjIsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjI3LCAKKyAgICAxOTMsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjUyLCA0MywgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMjcsIDE2MiwgCisgICAgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzIsIDk4LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzMiwgOTksIDEyOCwgMjEyLCAKKyAgICAxMTAsIDE2LCAzMywgMjUxLCAxODAsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjE2LCAzOCwgMTI4LCAyMTIsIDExMCwgMTYsIAorICAgIDMzLCAyMjIsIDIxMiwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMjQsIDMwLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgCisgICAgNCwgNDksIDIzOSwgMjEsIDQ5LCAyNDIsIDIzMSwgNDksIDI0MiwgMTgwLCAyMjksIDIxMSwgMjI5LCAyMzQsIDUzLCAzOSwgCisgICAgNjQsIDYyLCAzOSwgNjQsIDc0LCAzOSwgNjQsIDcxLCAzOSwgNjQsIDc1LCAzOSwgNjQsIDc2LCAzOSwgNjQsIDE3MiwgMzksIAorICAgIDY0LCAyMzEsIDEyMywgMzksIDY0LCAyMzAsIDIzNiwgMzksIDY0LCAyMzEsIDIyNCwgMzksIDY0LCAyMzEsIDUzLCAzOSwgCisgICAgNjQsIDIxNywgMTk5LCAzOSwgNjQsIDIxNSwgODAsIDM5LCA2NCwgMjEzLCAyMDMsIDM5LCA2NCwgMjE3LCA4NiwgMzksIDY0LCAKKyAgICAyMTQsIDE5MywgMzksIDY0LCAyMTIsIDIxOSwgMzksIDY0LCAyMTEsIDIxMSwgMzksIDY0LCAyMTAsIDE3MCwgMzksIDY0LCAKKyAgICAyMTIsIDEzMSwgMzksIDY0LCAxMjQsIDM5LCA2NCwgMTk5LCAzOSwgNjQsIDIyNCwgMjMwLCAzOSwgNjQsIDIyMywgMjE3LCAKKyAgICAzOSwgNjQsIDIyNSwgMTEwLCAzOSwgNjQsIDIyNCwgNjcsIDM5LCA2NCwgMTU1LCAzOSwgNjQsIDIzOSwgMTEsIDM5LCA2NCwgCisgICAgMjM4LCA0MiwgMzksIDY0LCAyMzksIDcxLCAzOSwgNjQsIDIzOCwgMTQ5LCAzOSwgNjQsIDE4NSwgMzksIDY0LCAyMjYsIAorICAgIDI1NCwgMzksIDY0LCAyMjYsIDExNCwgMzksIDY0LCAyMjcsIDExOSwgMzksIDY0LCAyMjYsIDE4MSwgMzksIDY0LCAxOTAsIAorICAgIDM5LCA2NCwgMjA1LCAyMTMsIDM5LCA2NCwgMjA1LCAyNDcsIDM5LCA2NCwgMjE5LCAxMTMsIDM5LCA2NCwgMjE4LCAyMDgsIAorICAgIDM5LCA2NCwgMjE4LCA1MCwgMzksIDY0LCAyMTksIDUxLCAzOSwgNjQsIDIxOCwgMTI0LCAzOSwgNjQsIDIwNywgOTYsIDM5LCAKKyAgICA2NCwgMjA3LCAyMCwgMzksIDY0LCAyMDcsIDUxLCAzOSwgNjQsIDIwNiwgMjUwLCA0OSwgMjUyLCA2NywgNDksIDI1MSwgCisgICAgMjMzLCA0OSwgMjUyLCA5NCwgNDksIDI1MywgMTIyLCA0OSwgMjMzLCAzNywgNDksIDIzMywgNSwgNDksIDIwOSwgMjA5LCAKKyAgICA0OSwgMjQyLCAyMDUsIDQ5LCAyNDMsIDEwMSwgNDksIDIyMiwgMTU1LCA0OSwgMjIyLCAxNDgsIDQ5LCAyMzIsIDM5LCA0OSwgCisgICAgMjMyLCA1LCA0OSwgMjMyLCAyLCA0OSwgMjQwLCAyMDAsIDQ5LCAyNDAsIDIwOSwgNDksIDI0MCwgNTAsIDQ5LCAyNDAsIDQ2LCAKKyAgICA0OSwgMjMwLCAxNjAsIDQ5LCAyNDAsIDM4LCA0OSwgMjMxLCAxMDAsIDQ5LCAyMzEsIDk5LCA0OSwgMjMxLCA5OCwgNDksIAorICAgIDIzMSwgOTcsIDQ5LCAyMzksIDE4NCwgNDksIDIzOSwgMTgzLCA0OSwgMjMwLCAyMDcsIDQ5LCAyMzAsIDIwOSwgNDksIDIzMSwgCisgICAgMjE3LCA0OSwgMjMxLCAyMiwgNDksIDIzMSwgMzAsIDQ5LCAyMTcsIDE4MCwgNDksIDIxNywgMTQ0LCA0OSwgMjE1LCAxNCwgCisgICAgNDksIDIxNiwgNDMsIDQ5LCAyMTYsIDQyLCA0OSwgMjQ2LCAxNDIsIDQ5LCAyNDUsIDIwNSwgNDksIDI0NSwgMjQsIDQ5LCAKKyAgICAyMTEsIDEyMCwgNDksIDIyNSwgMjA1LCA0OSwgMjI0LCAzMSwgNDksIDIzOSwgMTI2LCA0OSwgMjIyLCA0NiwgNDksIDIyMiwgCisgICAgNDUsIDQ5LCAyNTAsIDE4MCwgNDksIDIyMSwgNTAsIDQ5LCAyMjEsIDEzLCA0OSwgMjIxLCAxNCwgNDksIDI0OSwgMjE1LCAKKyAgICA0OSwgMjM4LCA0MCwgNDksIDIzOCwgMzYsIDQ5LCAyNDksIDYwLCA0OSwgMjM4LCAyMiwgNDksIDIzOSwgNDcsIDQ5LCAyMjEsIAorICAgIDEwNSwgNDksIDIyMSwgMTQ1LCA0OSwgMjM5LCAzMCwgNDksIDIyMSwgMTQxLCA0OSwgMjIxLCAxNTksIDQ5LCAyNTAsIDQ1LCAKKyAgICA0OSwgMjIwLCAyMDAsIDQ5LCAyNDksIDE1OSwgNDksIDIzOCwgMTM0LCA0OSwgMjIwLCAxODgsIDQ5LCAyMzgsIDEyNiwgNDksIAorICAgIDIzOCwgMTI4LCA0OSwgMjI3LCAyMzcsIDQ5LCAyMjcsIDIzMywgNDksIDIyNywgMjQyLCA0OSwgMjI3LCAxODIsIDQ5LCAKKyAgICAyMjcsIDIwOSwgNDksIDIyNiwgMjIwLCA0OSwgMjI2LCAxOTYsIDQ5LCAyMjYsIDE5NSwgNDksIDIyNywgOTksIDQ5LCAyMjcsIAorICAgIDk2LCA0OSwgMjI3LCAxMDAsIDQ5LCAyMDYsIDEwOCwgNDksIDIwNiwgMTA2LCA0OSwgMjA1LCAyMDIsIDQ5LCAyMTgsIDE0MCwgCisgICAgNDksIDIxOCwgMTQ0LCA0OSwgMjE4LCAyNiwgNDksIDIxOCwgMjAsIDQ5LCAyMTksIDQsIDQ5LCAyMTksIDEsIDQ5LCAyMDcsIAorICAgIDY3LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIwNSwgODUsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjM4LCAKKyAgICA1OSwgMTAyLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDEwNSwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIAorICAgIDU5LCAxNDIsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjM4LCA1OSwgMTM5LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgCisgICAgNTksIDE2OCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIDU5LCAxODQsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjM4LCAKKyAgICA1OSwgMTk1LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDE5MywgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIAorICAgIDU5LCAyMDAsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjM4LCA1OSwgMjEyLCA5OCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAKKyAgICAyMzgsIDU5LCAyNDMsIDU4LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMCwgMTI2LCAxMjgsIDIxMiwgCisgICAgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMiwgNSwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIDU5LCAyNDEsIDExOSwgCisgICAgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIDU5LCAyNDEsIDI0NywgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyMzgsIDU5LCAKKyAgICAyMTUsIDQsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjM4LCA1OSwgMjE2LCAyMCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAKKyAgICAyMzgsIDU5LCAyNDMsIDg1LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIyNCwgMTkyLCAxMjgsIDIxMiwgCisgICAgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMCwgMTIzLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMCwgMTE3LCAKKyAgICAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMCwgMTEzLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIAorICAgIDIxMCwgMTE0LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDIzOCwgNTksIDIxMCwgMTE5LCA0OSwgMjM4LCA1MCwgNDksIDI0NiwgCisgICAgMTQ1LCA0OSwgMjUxLCAxODQsIDQ5LCAxMzQsIDQ5LCAyMjIsIDg4LCA0OSwgMjIxLCAxNzksIDQ5LCAyNDUsIDUzLCA0OSwgCisgICAgMjQ1LCA1NCwgMjE0LCAxMDYsIDQ5LCAyNDUsIDU0LCAyNDcsIDM1LCA0OSwgMjMyLCAyMTYsIDQ5LCAyNDIsIDIzNCwgMjI1LCAKKyAgICAyMTEsIDIzOSwgNDgsIDQ5LCAyNDIsIDIzNCwgMjI1LCAyMTEsIDIxMywgMzMsIDQ5LCAyNDIsIDIzNCwgMjI1LCAyMTEsIAorICAgIDIxMiwgMTg4LCA0OSwgMjQyLCAyMzQsIDIyNSwgMjExLCAyMjcsIDk1LCA0OSwgMjQ3LCA4OCwgNDksIDIyMiwgNTIsIDI1MiwgCisgICAgMTI0LCA0OSwgMTk5LCA0OSwgMjI2LCAxMTUsIDYyLCA0OSwgMTg1LCA0OSwgMTcyLCA0OSwgMjMxLCAyMjcsIDQ5LCAyMjcsIAorICAgIDE1OCwgNDksIDI0MCwgMTg4LCA0OSwgMjQ4LCAyNDEsIDQ5LCAyMzEsIDIyNiwgNDksIDIyMSwgOTYsIDQ5LCAyMjUsIDgxLCAKKyAgICA0OSwgMjI2LCAxMTUsIDI0MiwgMTM5LCA0OSwgMjI2LCAxMTUsIDI0MSwgNTUsIDQ5LCAyMjcsIDM5LCA0OSwgMjMxLCAxNjksIAorICAgIDQ5LCAyMzcsIDIzNCwgNDksIDIzMSwgMTI1LCA0OSwgMjI3LCAwLCA0OSwgMjQwLCA2MywgNDksIDIxMSwgMjEzLCA0OSwgCisgICAgMjI2LCAxMTUsIDE0OSwgNDksIDIyNiwgMTg5LCA0OSwgMjQ1LCA2MywgNDksIDIzMSwgNjYsIDQ5LCAyNDEsIDE2NCwgNDksIAorICAgIDIyNCwgMTA1LCA0OSwgMjI2LCAxMTUsIDIyOSwgMjgsIDQ5LCAyMjYsIDE4NiwgNDksIDI0NywgMTc1LCA0OSwgMjMxLCA2MCwgCisgICAgNDksIDIyNiwgMTg3LCAyMTQsIDEwNiwgNDksIDI0NywgMTc2LCAyMTQsIDEwNiwgNDksIDIyOSwgMjksIDIxNCwgMTA2LCAKKyAgICA0OSwgMjMxLCA2MSwgMjE0LCAxMDYsIDQ5LCAyMjYsIDE4NywgMjQ3LCAzNSwgNDksIDI0NywgMTc2LCAyNDcsIDM1LCA0OSwgCisgICAgMjI5LCAyOSwgMjQ3LCAzNSwgNDksIDIzMSwgNjEsIDI0NywgMzUsIDQ5LCAyMjksIDI5LCAxMzEsIDE4MiwgNDksIDIyOSwgCisgICAgMjksIDEzMSwgMjE4LCAxLCAyMTQsIDEwNiwgNDksIDE3OSwgNDksIDIzMSwgMTUsIDQ5LCAyMjYsIDExOCwgNDksIDIzOSwgCisgICAgMjUxLCA0OSwgMjE5LCAxMDAsIDQ5LCAyMTksIDEwMSwgMTMxLCAxODIsIDQ5LCAyMTksIDEwMSwgMTMxLCAyMTgsIDEsIAorICAgIDIxNCwgMTA2LCA0OSwgMjIwLCA5NSwgNDksIDIyMywgMjU1LCA0OSwgMjI2LCAxMTUsIDE4MiwgNDksIDIyNiwgMTE2LCA0OSwgCisgICAgMjIwLCA0NywgNDksIDIyMywgMTU1LCA0OSwgMjI2LCAxMTUsIDIwOSwgMTQ4LCA0OSwgMjI2LCA1NywgNDksIDIzMCwgMTk4LCAKKyAgICA0OSwgMjI2LCA1OCwgMjI3LCA5OSwgNDksIDIyMCwgNDYsIDQ5LCAyMjMsIDE1NCwgNDksIDIyNiwgMTE1LCAyMDcsIDEyOSwgCisgICAgNDksIDIyNiwgNTEsIDQ5LCAyMzAsIDE5NiwgNDksIDIyNiwgNTIsIDIyNywgOTksIDQ5LCAyMzIsIDc3LCAyMjIsIDE5MiwgCisgICAgNDksIDIyOSwgMjksIDIyMiwgMTkyLCA0OSwgMjUyLCAxMzYsIDQ5LCAyNDksIDEzNiwgNDksIDI0OCwgMTcyLCA0OSwgMjQ4LCAKKyAgICAxNDksIDQ5LCAyNDksIDM1LCAxMzEsIDIzMSwgMTY5LCA0OSwgMjQ3LCAxNzQsIDQ5LCAyNDYsIDYzLCA0OSwgMjM5LCAxNjgsIAorICAgIDQ5LCAxNTUsIDQ5LCAyMzgsIDUxLCA0OSwgMjMzLCA2OCwgNDksIDIzMSwgNzMsIDQ5LCAyMzEsIDYxLCAyNDgsIDIxMiwgCisgICAgNDksIDIzMCwgMjM4LCA0OSwgMjI5LCAxNDcsIDQ5LCAyMjksIDE0NiwgNDksIDIyOSwgMTM1LCA0OSwgMjI5LCA0MywgNDksIAorICAgIDIyNywgMTU5LCAyMTQsIDIxNSwgNDksIDIyNiwgMjE5LCA0OSwgMjI2LCAxNzAsIDQ5LCAyMjEsIDk0LCA0OSwgMjIwLCAKKyAgICAyMTQsIDQ5LCAyMjAsIDE1NiwgNDksIDIyMCwgMTU0LCA0OSwgMjE0LCAxMDAsIDQ5LCAyMTMsIDExNywgNDksIDIwNywgNTMsIAorICAgIDQ5LCAyMDksIDE0OSwgMTMxLCAyMjksIDI4LCA0OSwgMzIsIDEzMSwgMjI5LCAyOCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAKKyAgICAyNDYsIDY3LCAxMDIsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMTA1LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIAorICAgIDI0NiwgNjcsIDE0MiwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyNDYsIDY3LCAxMzksIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgCisgICAgMjQ2LCA2NywgMTY4LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgNjcsIDE4NCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAKKyAgICAyNDYsIDY3LCAxOTUsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMTkzLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIAorICAgIDI0NiwgNjcsIDIwMCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyNDYsIDY3LCAyMTIsIDk4LCAxMjgsIDIxMiwgMTEwLCAxNiwgCisgICAgMzMsIDI0NiwgNjcsIDI0MywgNTgsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMjYsIDEyOCwgMjEyLCAKKyAgICAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEyLCA1LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgNjcsIDI0MSwgMTE5LCAKKyAgICAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgNjcsIDI0MSwgMjQ3LCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgNjcsIAorICAgIDIxNSwgNCwgMTI4LCAyMTIsIDExMCwgMTYsIDMzLCAyNDYsIDY3LCAyMTYsIDIwLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIAorICAgIDI0NiwgNjcsIDI0MywgODUsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjI0LCAxOTIsIDEyOCwgMjEyLCAKKyAgICAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMjMsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTcsIAorICAgIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTMsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgCisgICAgMjEwLCAxMTQsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTksIDEyOCwgMjEyLCAxMTAsIDE2LCAKKyAgICAzMywgMjQ2LCA2NywgMjEwLCAxMjAsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTUsIDEyOCwgCisgICAgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTYsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAKKyAgICAxMjIsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgMjQ2LCA2NywgMjEwLCAxMTgsIDEyOCwgMjEyLCAxMTAsIDE2LCAzMywgCisgICAgMjQ2LCA2NywgMjEyLCAzLCAxMjgsIDIxMiwgMTEwLCAxNiwgMzMsIDI0NiwgNjcsIDIxMiwgMiwgNDksIDI0MCwgMjI2LCAKKyAgICAyMzksIDI0LCAzMywgMjEyLCA0MiwgMjQ3LCA2OSwgMjM5LCA1NiwgMjM5LCAyNCwgMzMsIDIxMiwgNDIsIDIxOSwgNDQsIAorICAgIDI0MywgMTIwLCAyMzksIDI0LCAzMywgMjQ1LCAxMzgsIDI1MSwgMjAwLCAyMTIsIDQyLCAyNTAsIDQwLCAyMzksIDI0LCAzMywgCisgICAgMjA1LCAyMjYsIDI0MSwgMTU2LCAyMzksIDI0LCAzMywgMjA3LCA4OSwgMjM5LCAyNCwgMzMsIDI0NywgMTM2LCAyMzksIDI0LCAKKyAgICAzMywgMjEyLCA0MiwgMjUxLCAyNTQsIDIzOSwgMjQsIDMzLCAyMzgsIDE0MSwgMjExLCAxMjYsIDIzOSwgMjQsIDMzLCA1LCAKKyAgICAyMTIsIDE3NSwgMjM5LCAyNCwgMzMsIDIxMSwgNjMsIDIzOSwgMjQsIDMzLCAyMjEsIDE3MiwgMjM5LCAyNCwgMzMsIDIxNCwgCisgICAgMjgsIDIzOSwgMjQsIDMzLCAyNDIsIDEyLCAyMzksIDI0LCAzMywgMjM5LCAyMzIsIDIyMCwgMTc3LCAyMzksIDI0LCAzMywgCisgICAgMjI2LCAxNzQsIDIzOSwgMjQsIDMzLCAyNDMsIDE1LCAyMzksIDI0LCAzMywgMjQxLCAxNTcsIDIzOSwgMjQsIDMzLCAyMDYsIAorICAgIDIzMCwgMjIyLCAxNjYsIDIxMiwgNDIsIDI0NiwgNSwgMjM5LCAyNCwgMzMsIDI1MiwgNDcsIDIzOSwgMjQsIDMzLCAyNDcsIAorICAgIDExNywgMjM5LCAyNCwgMzMsIDI0OSwgMjA4LCAyMTEsIDIzMiwgMjM5LCAyNCwgMzMsIDIzOSwgMjQ5LCAyMzksIDI0LCAzMywgCisgICAgMjE0LCAxMjAsIDI1MiwgNjYsIDIzOSwgMjQsIDMzLCAyMTgsIDIyOCwgMjM5LCAyNCwgMzMsIDIzMywgMzEsIDIzOSwgMjQsIAorICAgIDMzLCAyMzksIDIzMiwgMjEyLCAxNzUsIDIzOSwgMjQsIDMzLCAyMjYsIDEyNCwgMjQ3LCA5MCwgMjM5LCAyNCwgMzMsIDIzOSwgCisgICAgMjMyLCAyMjAsIDEzNCwgMjM5LCAyNCwgMzMsIDIxMiwgNDIsIDI1MywgMjYsIDIwNywgNjksIDIzOSwgMjQsIDMzLCAyMTIsIAorICAgIDQyLCAyNDcsIDIwMCwgMjQxLCAyMTksIDIzOSwgMjQsIDMzLCAyMzMsIDQ0LCAyMzksIDI0LCAzMywgMjQzLCAyMTYsIDIzOSwgCisgICAgMjQsIDMzLCAyMTgsIDIzMSwgMjM5LCAyNCwgMzMsIDIzOSwgMjMyLCAyMjAsIDE2MSwgMjM5LCAyNCwgMzMsIDIyMCwgMTEyLCAKKyAgICAyMzksIDI0LCAzMywgMjQ2LCA4MywgNzMsIDIxMiwgNDIsIDIyOSwgMjIzLCAyMzksIDI0LCAzMywgMjEyLCA0MiwgMjQyLCAKKyAgICA0OCwgMjM5LCAyNCwgMzMsIDIyMiwgMTI4LCAyMzksIDI0LCAzMywgMjIyLCAyMTgsIDIzOSwgMjQsIDMzLCAyNDUsIDIzMiwgCisgICAgMjM5LCAyNCwgMzMsIDI0NSwgMjUzLCAyMzksIDI0LCAzMywgMjMzLCA1OSwgMjM5LCAyNCwgMzMsIDI0OSwgMTI1LCAyMzksIAorICAgIDI0LCAzMywgMjQ3LCAxNTcsIDIxMSwgMTMwLCAyMjcsIDEwMiwgMjM5LCAyNCwgMzMsIDI0MCwgMTk1LCAyMTEsIDEyNiwgCisgICAgMjM5LCAyNCwgMzMsIDIyMCwgNTYsIDIwOSwgMTk3LCAyMzksIDI0LCAzMywgMjIyLCAxMjcsIDIzOSwgMjQsIDMzLCAyMTIsIAorICAgIDQyLCAyMDcsIDQwLCAyMzksIDI0LCAzMywgMjE4LCAyMTksIDIzOSwgMjQsIDMzLCAyMTIsIDQyLCAyNDgsIDE3OCwgMjM5LCAKKyAgICAyNCwgMzMsIDIxMiwgNDIsIDI1MSwgMjUwLCAyMTEsIDIyNywgMjM5LCAyNCwgMzMsIDIxMiwgNDIsIDIzMSwgMjE4LCAyMTQsIAorICAgIDIsIDIyNiwgMTI4LCAyMzksIDI0LCAzMywgMjQ1LCAyMDAsIDIzOSwgMjQsIDMzLCAyMTIsIDQyLCAyMjcsIDE4NCwgMjI3LCAKKyAgICAyMzgsIDIzOSwgMjQsIDMzLCAyNTMsIDI3LCAyMzksIDI0LCAzMywgMjEyLCA0MiwgMjA3LCA4NCwgMjM5LCAyNCwgMzMsIAorICAgIDIxMiwgNDIsIDI0MCwgMTUzLCAyMDcsIDksIDIzOSwgMjQsIDMzLCAyMTIsIDQyLCAyMzIsIDEwNiwgMjMwLCAxMTEsIDIzOSwgCisgICAgMjQsIDMzLCAyNDUsIDkxLCAyMzksIDI0LCAzMywgMjI5LCAyMTIsIDIzOSwgMjQsIDMzLCAyMzMsIDM0LCAyMTAsIDI0NywgCisgICAgMjM5LCAyNCwgMzMsIDUsIDIyMCwgMTM0LCAyMzksIDI0LCAzMywgMjUyLCAyMjEsIDI0NywgMTQ4LCAyMzksIDI0LCAzMywgCisgICAgMjUwLCA0MywgMjQ3LCAxNDgsIDksIDQsIDIzMiwgMjIwLCA5LCA0LCAyMzIsIDIxMiwgOSwgNCwgNzQsIDksIDQsIDIzMiwgCisgICAgMjQ2LCA5LCA0LCAyMzMsIDEyNywgOSwgNCwgMjMzLCAxMTAsIDksIDQsIDIzMywgMTI5LCA5LCA0LCAyMzMsIDEyOCwgOSwgCisgICAgNCwgMjUxLCAxOTksIDksIDQsIDI1MSwgMTYxLCA5LCA0LCA2MiwgOSwgNCwgMjUyLCA2OCwgOSwgNCwgMjA5LCAyMDcsIDksIAorICAgIDQsIDIwOSwgMjEwLCA5LCA0LCAyMDksIDIwOCwgOSwgNCwgMjIyLCAxMDMsIDksIDQsIDIyMiwgNzYsIDksIDQsIDc2LCA5LCAKKyAgICA0LCAyMjIsIDE0MywgOSwgNCwgMjQyLCAxNzIsIDksIDQsIDc1LCA5LCA0LCAyMDYsIDIxNiwgOSwgNCwgMjQ5LCAyMDksIDksIAorICAgIDQsIDI0OSwgMjA2LCA5LCA0LCAyNDksIDI0NCwgOSwgNCwgMjQ5LCAyMTksIDksIDQsIDI0OSwgMjMzLCA5LCA0LCAyNDksIAorICAgIDIzMiwgOSwgNCwgMjQ5LCAyMzUsIDksIDQsIDI0OSwgMjM0LCA5LCA0LCAyNTAsIDEwOCwgOSwgNCwgMjUwLCAxMDAsIDksIAorICAgIDQsIDI1MCwgMTgzLCA5LCA0LCAyNTAsIDEzMCwgOSwgNCwgMjQ5LCA3MSwgOSwgNCwgMjQ5LCA3NSwgOSwgNCwgMjQ5LCA3MiwgCisgICAgOSwgNCwgMjQ5LCAxNTgsIDksIDQsIDI0OSwgMTQwLCA5LCA0LCAyNDksIDE4NCwgOSwgNCwgMjQ5LCAxNjQsIDksIDQsIAorICAgIDI1MCwgMywgOSwgNCwgMjUwLCA2MSwgOSwgNCwgMjUwLCAxNSwgOSwgNCwgMjQ5LCA1NiwgOSwgNCwgMjQ5LCA1MiwgOSwgNCwgCisgICAgMjQ5LCAxMDEsIDksIDQsIDI0OSwgNzAsIDksIDQsIDI0OSwgNjQsIDksIDQsIDI0OSwgNjgsIDksIDQsIDI0OSwgNDAsIDksIAorICAgIDQsIDI0OSwgMzgsIDksIDQsIDI0OSwgNDUsIDksIDQsIDI0OSwgNDMsIDksIDQsIDI0OSwgNDEsIDksIDQsIDI0OSwgNDIsIAorICAgIDksIDQsIDIyMCwgMjQ3LCA5LCA0LCAyMjAsIDI0MywgOSwgNCwgMjIxLCA1MywgOSwgNCwgMjIxLCAzLCA5LCA0LCAyMjEsIAorICAgIDE5LCA5LCA0LCAyMjEsIDQ2LCA5LCA0LCAyMjEsIDQyLCA5LCA0LCAyMjEsIDE5NSwgOSwgNCwgMjIxLCAxODQsIDksIDQsIAorICAgIDE3OSwgOSwgNCwgMjIxLCAyMzYsIDksIDQsIDIyMCwgNjYsIDksIDQsIDIyMCwgNjgsIDksIDQsIDIyMCwgNjcsIDksIDQsIAorICAgIDIyMCwgMTcwLCA5LCA0LCAyMjAsIDE1OSwgOSwgNCwgMjIwLCAyMTEsIDksIDQsIDIyMCwgMTgzLCA5LCA0LCAyMjAsIDUyLCAKKyAgICA5LCA0LCAyMjAsIDQ4LCA5LCA0LCAyMjAsIDgyLCA5LCA0LCAyMjAsIDY1LCA5LCA0LCAyMjAsIDU3LCA5LCA0LCAyMjAsIAorICAgIDYzLCA5LCA0LCAyMjAsIDMxLCA5LCA0LCAyMjAsIDMwLCA5LCA0LCAyMjAsIDM1LCA5LCA0LCAyMjAsIDM0LCA5LCA0LCAKKyAgICAyMjAsIDMyLCA5LCA0LCAyMjAsIDMzLCA5LCA0LCAyNTAsIDgyLCA5LCA0LCAyNTAsIDgxLCA5LCA0LCAyNTAsIDg4LCA5LCAKKyAgICA0LCAyNTAsIDgzLCA5LCA0LCAyNTAsIDg1LCA5LCA0LCAyNTAsIDg0LCA5LCA0LCAyNTAsIDg3LCA5LCA0LCAyNTAsIDg2LCAKKyAgICA5LCA0LCAyNTAsIDk0LCA5LCA0LCAyNTAsIDkzLCA5LCA0LCAyNTAsIDk3LCA5LCA0LCAyNTAsIDk1LCA5LCA0LCAyNTAsIAorICAgIDczLCA5LCA0LCAyNTAsIDc1LCA5LCA0LCAyNTAsIDc0LCA5LCA0LCAyNTAsIDc4LCA5LCA0LCAyNTAsIDc3LCA5LCA0LCAKKyAgICAyNTAsIDgwLCA5LCA0LCAyNTAsIDc5LCA5LCA0LCAyNTAsIDg5LCA5LCA0LCAyNTAsIDkyLCA5LCA0LCAyNTAsIDkwLCA5LCAKKyAgICA0LCAyNTAsIDY5LCA5LCA0LCAyNTAsIDY4LCA5LCA0LCAyNTAsIDc2LCA5LCA0LCAyNTAsIDcyLCA5LCA0LCAyNTAsIDcwLCAKKyAgICA5LCA0LCAyNTAsIDcxLCA5LCA0LCAyNTAsIDY1LCA5LCA0LCAyNTAsIDY0LCA5LCA0LCAyNTAsIDY3LCA5LCA0LCAyNTAsIAorICAgIDY2LCA5LCA0LCAyMjUsIDE3MywgOSwgNCwgMjI1LCAxNzIsIDksIDQsIDIyNSwgMTc4LCA5LCA0LCAyMjUsIDE3NCwgOSwgNCwgCisgICAgMjI1LCAxNzUsIDksIDQsIDIyNSwgMTc3LCA5LCA0LCAyMjUsIDE3NiwgOSwgNCwgMjI1LCAxODEsIDksIDQsIDIyNSwgMTgwLCAKKyAgICA5LCA0LCAyMjUsIDE4MywgOSwgNCwgMjI1LCAxODIsIDksIDQsIDIyNSwgMTY5LCA5LCA0LCAyMjUsIDE2OCwgOSwgNCwgCisgICAgMjI1LCAxNzEsIDksIDQsIDIyNSwgMTcwLCA5LCA0LCAyMjUsIDE2MiwgOSwgNCwgMjI1LCAxNjEsIDksIDQsIDIyNSwgMTY2LCAKKyAgICA5LCA0LCAyMjUsIDE2NSwgOSwgNCwgMjI1LCAxNjMsIDksIDQsIDIyNSwgMTY0LCA5LCA0LCAyMjUsIDE1NiwgOSwgNCwgCisgICAgMjI1LCAxNTUsIDksIDQsIDIyNSwgMTYwLCA5LCA0LCAyMjUsIDE1OSwgOSwgNCwgMjI1LCAxNTcsIDksIDQsIDIyNSwgMTU4LCAKKyAgICA5LCA0LCAyMzgsIDE5MywgOSwgNCwgMjM4LCAxOTIsIDksIDQsIDIzOCwgMTk4LCA5LCA0LCAyMzgsIDE5NCwgOSwgNCwgCisgICAgMjM4LCAxOTUsIDksIDQsIDIzOCwgMTk3LCA5LCA0LCAyMzgsIDE5NiwgOSwgNCwgMjM4LCAyMDEsIDksIDQsIDIzOCwgMjAwLCAKKyAgICA5LCA0LCAyMzgsIDIwMywgOSwgNCwgMjM4LCAyMDIsIDksIDQsIDIzOCwgMTg0LCA5LCA0LCAyMzgsIDE4NiwgOSwgNCwgCisgICAgMjM4LCAxODUsIDksIDQsIDIzOCwgMTg5LCA5LCA0LCAyMzgsIDE4OCwgOSwgNCwgMjM4LCAxOTEsIDksIDQsIDIzOCwgMTkwLCAKKyAgICA5LCA0LCAyMzgsIDE4MCwgOSwgNCwgMjM4LCAxNzksIDksIDQsIDIzOCwgMTg3LCA5LCA0LCAyMzgsIDE4MywgOSwgNCwgCisgICAgMjM4LCAxODEsIDksIDQsIDIzOCwgMTgyLCA5LCA0LCAyMzgsIDE3NCwgOSwgNCwgMjM4LCAxNzgsIDksIDQsIDIzOCwgMTc3LCAKKyAgICA5LCA0LCAyMzgsIDE3NSwgOSwgNCwgMjM4LCAxNzYsIDksIDQsIDIyNiwgMTkyLCA5LCA0LCAyMjYsIDE5MSwgOSwgNCwgCisgICAgMjI2LCAyNTQsIDksIDQsIDIyNiwgMTk4LCA5LCA0LCAyMjYsIDIyNiwgOSwgNCwgMjI2LCAyNDQsIDksIDQsIDIyNiwgMjQyLCAKKyAgICA5LCA0LCAyMjcsIDE3MCwgOSwgNCwgMjI3LCAxNjUsIDksIDQsIDE4NSwgOSwgNCwgMjI3LCAyMDUsIDksIDQsIDIyNiwgODMsIAorICAgIDksIDQsIDIyNiwgODIsIDksIDQsIDIyNiwgODYsIDksIDQsIDIyNiwgODQsIDksIDQsIDIyNiwgMTM3LCA5LCA0LCAyMjYsIAorICAgIDEyMCwgOSwgNCwgMjI2LCAxODEsIDksIDQsIDIyNiwgMTQyLCA5LCA0LCAyMjcsIDUwLCA5LCA0LCAyMjcsIDExOSwgOSwgNCwgCisgICAgMjI2LCA2MywgOSwgNCwgMjI2LCA1OSwgOSwgNCwgMjI2LCAxMTQsIDksIDQsIDIyNiwgNzksIDksIDQsIDIyNiwgNzIsIDksIAorICAgIDQsIDIyNiwgNzcsIDksIDQsIDIyNiwgMzYsIDksIDQsIDIyNiwgMzUsIDksIDQsIDIyNiwgNDEsIDksIDQsIDIyNiwgMzgsIAorICAgIDksIDQsIDI0MSwgMjA2LCA5LCA0LCAyNDEsIDIwMSwgOSwgNCwgMjQxLCAyNTAsIDksIDQsIDI0MSwgMjIxLCA5LCA0LCAKKyAgICAyNDIsIDQxLCA5LCA0LCAyNDIsIDMyLCA5LCA0LCAyNDIsIDczLCA5LCA0LCAyNDIsIDQ0LCA5LCA0LCAyNDEsIDExNywgOSwgCisgICAgNCwgMjQxLCAxNjIsIDksIDQsIDI0MSwgMTQzLCA5LCA0LCAyNDEsIDcxLCA5LCA0LCAyNDEsIDcwLCA5LCA0LCAyNDEsIDg4LCAKKyAgICA5LCA0LCAyNDEsIDc2LCA5LCA0LCAyNDEsIDc0LCA5LCA0LCAyNDEsIDc1LCA5LCA0LCAyNDEsIDU4LCA5LCA0LCAyNDEsIAorICAgIDU3LCA5LCA0LCAyNDEsIDYxLCA5LCA0LCAyNDEsIDU5LCA5LCA0LCAyMDgsIDE4MCwgOSwgNCwgMjA4LCAxNzUsIDksIDQsIAorICAgIDIwOCwgMjE0LCA5LCA0LCAyMDgsIDE4OSwgOSwgNCwgMjA4LCAyMDMsIDksIDQsIDIwOCwgMjAwLCA5LCA0LCAyMDgsIDIwNiwgCisgICAgOSwgNCwgMjA4LCAyMDUsIDksIDQsIDIwOSwgNDcsIDksIDQsIDIwOSwgNDIsIDksIDQsIDIwOSwgNzAsIDksIDQsIDIwOSwgCisgICAgNTksIDksIDQsIDIwOCwgMTU3LCA5LCA0LCAyMDgsIDE1MywgOSwgNCwgMjA4LCAxNzMsIDksIDQsIDIwOCwgMTU5LCA5LCA0LCAKKyAgICAyMDgsIDIxNywgOSwgNCwgMjA5LCAyOCwgOSwgNCwgMjA3LCAxNDIsIDksIDQsIDIwNywgMTQwLCA5LCA0LCAyMDcsIDE0OCwgCisgICAgOSwgNCwgMjA3LCAxNDUsIDksIDQsIDIwNywgMTQzLCA5LCA0LCAyMDcsIDE0NCwgOSwgNCwgMjA3LCAxMzMsIDksIDQsIAorICAgIDIwNywgMTMyLCA5LCA0LCAyMDcsIDEzNywgOSwgNCwgMjA3LCAxMzYsIDksIDQsIDIwNywgMTM0LCA5LCA0LCAyMDcsIDEzNSwgCisgICAgOSwgNCwgMjQ1LCA4NSwgOSwgNCwgMjQ1LCA3MiwgOSwgNCwgMjQ1LCAxNjgsIDksIDQsIDI0NSwgMTEwLCA5LCA0LCAyNDUsIAorICAgIDE0MywgOSwgNCwgMjQ1LCAxNDgsIDksIDQsIDI0NSwgMTQ3LCA5LCA0LCAyNDYsIDc0LCA5LCA0LCAyNDYsIDY4LCA5LCA0LCAKKyAgICAyNDYsIDE0NSwgOSwgNCwgMjQ2LCA5NCwgOSwgNCwgMjQzLCAyMjEsIDksIDQsIDI0MywgMjIyLCA5LCA0LCAyNDUsIDIzLCAKKyAgICA5LCA0LCAyNDQsIDUsIDksIDQsIDI0NSwgNTEsIDksIDQsIDI0NSwgMjUsIDksIDQsIDI0NSwgMTk4LCA5LCA0LCAyNDYsIDksIAorICAgIDksIDQsIDI0NSwgMjE4LCA5LCA0LCAyNDMsIDIxMiwgOSwgNCwgMjQzLCAyMTAsIDksIDQsIDI0MywgMjM3LCA5LCA0LCAKKyAgICAyNDMsIDIyMCwgOSwgNCwgMjQzLCAyMTUsIDksIDQsIDI0MywgMjE4LCA5LCA0LCAyMTEsIDE1NiwgOSwgNCwgMjExLCAxNDksIAorICAgIDksIDQsIDIxMSwgMjExLCA5LCA0LCAyMTEsIDE2NiwgOSwgNCwgMjExLCAyMDEsIDksIDQsIDIxMSwgMjAzLCA5LCA0LCAKKyAgICAyMTEsIDIwMiwgOSwgNCwgMjEyLCAxNTYsIDksIDQsIDIxMiwgMTQyLCA5LCA0LCAyMTIsIDIxOSwgOSwgNCwgMjEyLCAxNjYsIAorICAgIDksIDQsIDIxMCwgMTUzLCA5LCA0LCAyMTAsIDE1MiwgOSwgNCwgMjEwLCAxNTUsIDksIDQsIDIxMCwgMTU0LCA5LCA0LCAKKyAgICAyMTEsIDkxLCA5LCA0LCAyMTEsIDg1LCA5LCA0LCAxMjQsIDksIDQsIDIxMSwgMTAxLCA5LCA0LCAyMTIsIDYyLCA5LCA0LCAKKyAgICAyMTIsIDEzMSwgOSwgNCwgMjEyLCA4NywgOSwgNCwgMjEwLCAxMzgsIDksIDQsIDIxMCwgMTMzLCA5LCA0LCAyMTAsIDE3MCwgCisgICAgOSwgNCwgMjEwLCAxNTEsIDksIDQsIDIxMCwgMTM5LCA5LCA0LCAyMTAsIDE0OSwgOSwgNCwgMjQ2LCAyNiwgOSwgNCwgMjQ2LCAKKyAgICAyNSwgOSwgNCwgMjQ2LCAzMSwgOSwgNCwgMjQ2LCAyNywgOSwgNCwgMjQ2LCAyOCwgOSwgNCwgMjQ2LCAzMCwgOSwgNCwgCisgICAgMjQ2LCAyOSwgOSwgNCwgMjQ2LCA0NywgOSwgNCwgMjQ2LCA0NiwgOSwgNCwgMjQ2LCA1NCwgOSwgNCwgMjQ2LCA0OCwgOSwgCisgICAgNCwgMjQ2LCAxNiwgOSwgNCwgMjQ2LCAxOCwgOSwgNCwgMjQ2LCAxNywgOSwgNCwgMjQ2LCAyMSwgOSwgNCwgMjQ2LCAyMCwgCisgICAgOSwgNCwgMjQ2LCAyNCwgOSwgNCwgMjQ2LCAyMiwgOSwgNCwgMjQ2LCAzOSwgOSwgNCwgMjQ2LCA0MiwgOSwgNCwgMjQ2LCAKKyAgICA0MCwgOSwgNCwgMjQ2LCAxMiwgOSwgNCwgMjQ2LCAxMSwgOSwgNCwgMjQ2LCAxOSwgOSwgNCwgMjQ2LCAxNSwgOSwgNCwgCisgICAgMjQ2LCAxMywgOSwgNCwgMjQ2LCAxNCwgOSwgNCwgMjI1LCAxMjksIDksIDQsIDIyNSwgMTI4LCA5LCA0LCAyMjUsIDEzNiwgCisgICAgOSwgNCwgMjI1LCAxMzEsIDksIDQsIDIyNSwgMTMyLCA5LCA0LCAyMjUsIDEzMywgOSwgNCwgMjI1LCAxNDUsIDksIDQsIAorICAgIDIyNSwgMTQ0LCA5LCA0LCAyMjUsIDE1MSwgOSwgNCwgMjI1LCAxNDYsIDksIDQsIDIyNSwgMTIxLCA5LCA0LCAyMjUsIDEyMCwgCisgICAgOSwgNCwgMjI1LCAxMjcsIDksIDQsIDIyNSwgMTIyLCA5LCA0LCAyMjUsIDEzNywgOSwgNCwgMjI1LCAxNDMsIDksIDQsIAorICAgIDIyNSwgMTQxLCA5LCA0LCAyMjUsIDExMywgOSwgNCwgMjI1LCAxMTIsIDksIDQsIDIyNSwgMTE4LCA5LCA0LCAyMjUsIDExNiwgCisgICAgOSwgNCwgMjI1LCAxMTQsIDksIDQsIDIyNSwgMTE1LCA5LCA0LCAyMzgsIDE1OSwgOSwgNCwgMjM4LCAxNTgsIDksIDQsIAorICAgIDIzOCwgMTY1LCA5LCA0LCAyMzgsIDE2MCwgOSwgNCwgMjM4LCAxNjIsIDksIDQsIDIzOCwgMTYxLCA5LCA0LCAyMzgsIDE2NCwgCisgICAgOSwgNCwgMjM4LCAxNjMsIDksIDQsIDIzOCwgMTcxLCA5LCA0LCAyMzgsIDE2OSwgOSwgNCwgMjM4LCAxNzMsIDksIDQsIAorICAgIDIzOCwgMTcyLCA5LCA0LCAyMzgsIDE1MiwgOSwgNCwgMjM4LCAxNTMsIDksIDQsIDIzOCwgMTU2LCA5LCA0LCAyMzgsIDE1NSwgCisgICAgOSwgNCwgMjM4LCAxNTcsIDksIDQsIDIzOCwgMTY2LCA5LCA0LCAyMzgsIDE2OCwgOSwgNCwgMjM4LCAxNjcsIDksIDQsIAorICAgIDIzOCwgMTUxLCA5LCA0LCAyMjQsIDE4NCwgOSwgNCwgMjI0LCAxODIsIDksIDQsIDIyNCwgMjMwLCA5LCA0LCAyMjQsIDE4NywgCisgICAgOSwgNCwgMjI0LCAyMTIsIDksIDQsIDIyNCwgMjI2LCA5LCA0LCAyMjQsIDIyNSwgOSwgNCwgMjI1LCAxODcsIDksIDQsIAorICAgIDE5OSwgOSwgNCwgMjI1LCAyMDIsIDksIDQsIDIyMywgMTY1LCA5LCA0LCAyMjMsIDE2NywgOSwgNCwgMjIzLCAxNjYsIDksIAorICAgIDQsIDIyNCwgNDIsIDksIDQsIDIyNCwgMjcsIDksIDQsIDIyNCwgNjcsIDksIDQsIDIyNCwgNTIsIDksIDQsIDIyNSwgODMsIAorICAgIDksIDQsIDIyNSwgMTEwLCA5LCA0LCAyMjUsIDk2LCA5LCA0LCAyMjMsIDE2MCwgOSwgNCwgMjIzLCAxNTYsIDksIDQsIDIyMywgCisgICAgMjE3LCA5LCA0LCAyMjMsIDE2NCwgOSwgNCwgMjIzLCAxNjIsIDksIDQsIDIyMywgMTYzLCA5LCA0LCAyMzgsIDIyNCwgOSwgCisgICAgNCwgMjM4LCAyMjMsIDksIDQsIDIzOCwgMjI5LCA5LCA0LCAyMzgsIDIyNSwgOSwgNCwgMjM4LCAyMjYsIDksIDQsIDIzOCwgCisgICAgMjI4LCA5LCA0LCAyMzgsIDIyNywgOSwgNCwgMjM4LCAyMzUsIDksIDQsIDIzOCwgMjMzLCA5LCA0LCAyMzgsIDIzNywgOSwgCisgICAgNCwgMjM4LCAyMzYsIDksIDQsIDIzOCwgMjE2LCA5LCA0LCAyMzgsIDIxOCwgOSwgNCwgMjM4LCAyMTcsIDksIDQsIDIzOCwgCisgICAgMjIwLCA5LCA0LCAyMzgsIDIyMiwgOSwgNCwgMjM4LCAyMjEsIDksIDQsIDIzOCwgMjMwLCA5LCA0LCAyMzgsIDIzMiwgOSwgCisgICAgNCwgMjM4LCAyMzEsIDksIDQsIDIzOCwgMjEyLCA5LCA0LCAyMzgsIDIxMSwgOSwgNCwgMjM4LCAyMTksIDksIDQsIDIzOCwgCisgICAgMjE1LCA5LCA0LCAyMzgsIDIxMywgOSwgNCwgMjM4LCAyMTQsIDksIDQsIDIzOCwgMjA2LCA5LCA0LCAyMzgsIDIwNSwgOSwgCisgICAgNCwgMjM4LCAyMTAsIDksIDQsIDIzOCwgMjA5LCA5LCA0LCAyMzgsIDIwNywgOSwgNCwgMjM4LCAyMDgsIDksIDQsIDIyOSwgCisgICAgMTg0LCA5LCA0LCAyMjksIDE3NywgOSwgNCwgMjI5LCAyMzUsIDksIDQsIDIyOSwgMTkzLCA5LCA0LCAyMjksIDIyNywgOSwgCisgICAgNCwgMjI5LCAyMjYsIDksIDQsIDIyOSwgMjMwLCA5LCA0LCAyMjksIDIyOCwgOSwgNCwgMjMwLCA4MCwgOSwgNCwgMjMwLCAKKyAgICA2OSwgOSwgNCwgMjMwLCAxNDEsIDksIDQsIDIzMCwgODksIDksIDQsIDIyOSwgNjAsIDksIDQsIDIyOSwgNTksIDksIDQsIAorICAgIDIyOSwgNjIsIDksIDQsIDIyOSwgNjEsIDksIDQsIDIyOSwgMTAzLCA5LCA0LCAyMjksIDkwLCA5LCA0LCAyMjksIDE0NCwgOSwgCisgICAgNCwgMjI5LCAxMDgsIDksIDQsIDIyOSwgMjUyLCA5LCA0LCAyMzAsIDU4LCA5LCA0LCAyMzAsIDEzLCA5LCA0LCAyMjksIDU0LCAKKyAgICA5LCA0LCAyMjksIDUyLCA5LCA0LCAyMjksIDgxLCA5LCA0LCAyMjksIDU4LCA5LCA0LCAyMjksIDU2LCA5LCA0LCAyMjksIAorICAgIDU3LCA5LCA0LCAyMjksIDMzLCA5LCA0LCAyMjksIDMyLCA5LCA0LCAyMjksIDQyLCA5LCA0LCAyMjksIDM2LCA5LCA0LCAKKyAgICAyMjksIDM0LCA5LCA0LCAyMjksIDM1LCA5LCA0LCAyNDAsIDM0LCA5LCA0LCAyNDAsIDMzLCA5LCA0LCAyNDAsIDYxLCA5LCAKKyAgICA0LCAyNDAsIDQ1LCA5LCA0LCAyNDAsIDUzLCA5LCA0LCAyNDAsIDUyLCA5LCA0LCAyNDAsIDU1LCA5LCA0LCAyNDAsIDU0LCAKKyAgICA5LCA0LCAyNDAsIDE5NywgOSwgNCwgMjQwLCAxOTIsIDksIDQsIDI0MCwgMjQ0LCA5LCA0LCAyNDAsIDIwNywgOSwgNCwgCisgICAgMjM5LCAxODksIDksIDQsIDIzOSwgMTg4LCA5LCA0LCAyMzksIDE5MSwgOSwgNCwgMjM5LCAxOTAsIDksIDQsIDIzOSwgMjU0LCAKKyAgICA5LCA0LCAyMzksIDI1MiwgOSwgNCwgMjQwLCAxOSwgOSwgNCwgMjQwLCA2LCA5LCA0LCAyNDAsIDEzOSwgOSwgNCwgMjQwLCAKKyAgICAxMzcsIDksIDQsIDI0MCwgMTcwLCA5LCA0LCAyNDAsIDE1MCwgOSwgNCwgMjM5LCAxNzgsIDksIDQsIDIzOSwgMTc3LCA5LCAKKyAgICA0LCAyMzksIDIxMywgOSwgNCwgMjM5LCAxODcsIDksIDQsIDIzOSwgMTc5LCA5LCA0LCAyMzksIDE4NiwgOSwgNCwgMjMxLCAKKyAgICA4OSwgOSwgNCwgMjMxLCA4NiwgOSwgNCwgMjMxLCAxMjMsIDksIDQsIDIzMSwgMTAzLCA5LCA0LCAyMzEsIDExMywgOSwgNCwgCisgICAgMjMxLCAxMTYsIDksIDQsIDIzMSwgMTE0LCA5LCA0LCAyMzEsIDI0OSwgOSwgNCwgMjMxLCAyMzIsIDksIDQsIDE3MiwgOSwgCisgICAgNCwgMjMyLCAyMCwgOSwgNCwgMjMwLCAyMTQsIDksIDQsIDIzMCwgMjE5LCA5LCA0LCAyMzAsIDIxNiwgOSwgNCwgMjMxLCAKKyAgICAyMSwgOSwgNCwgMjMxLCAxNiwgOSwgNCwgMjMxLCA1MywgOSwgNCwgMjMxLCAyOCwgOSwgNCwgMjMxLCAxOTMsIDksIDQsIAorICAgIDIzMSwgMTc2LCA5LCA0LCAyMzEsIDIyNCwgOSwgNCwgMjMxLCAxOTcsIDksIDQsIDIzMCwgMjAzLCA5LCA0LCAyMzAsIDE5OSwgCisgICAgOSwgNCwgMjMwLCAyMzYsIDksIDQsIDIzMCwgMjEzLCA5LCA0LCAyMzAsIDIwNiwgOSwgNCwgMjMwLCAyMTAsIDksIDQsIAorICAgIDI0MCwgMTIxLCA5LCA0LCAyNDAsIDEyMCwgOSwgNCwgMjQwLCAxMjUsIDksIDQsIDI0MCwgMTIyLCA5LCA0LCAyNDAsIDEyNCwgCisgICAgOSwgNCwgMjQwLCAxMjMsIDksIDQsIDI0MCwgMTMyLCA5LCA0LCAyNDAsIDEzMSwgOSwgNCwgMjQwLCAxMzUsIDksIDQsIAorICAgIDI0MCwgMTMzLCA5LCA0LCAyNDAsIDExMiwgOSwgNCwgMjQwLCAxMTEsIDksIDQsIDI0MCwgMTE0LCA5LCA0LCAyNDAsIDExMywgCisgICAgOSwgNCwgMjQwLCAxMTcsIDksIDQsIDI0MCwgMTE2LCA5LCA0LCAyNDAsIDExOSwgOSwgNCwgMjQwLCAxMTgsIDksIDQsIAorICAgIDI0MCwgMTI3LCA5LCA0LCAyNDAsIDEyNiwgOSwgNCwgMjQwLCAxMzAsIDksIDQsIDI0MCwgMTI4LCA5LCA0LCAyNDAsIDEwNywgCisgICAgOSwgNCwgMjQwLCAxMDYsIDksIDQsIDI0MCwgMTE1LCA5LCA0LCAyNDAsIDExMCwgOSwgNCwgMjQwLCAxMDgsIDksIDQsIAorICAgIDI0MCwgMTA5LCA5LCA0LCAyMjcsIDE3LCA5LCA0LCAyMjcsIDE4LCA5LCA0LCAyMjcsIDM2LCA5LCA0LCAyMjcsIDM1LCA5LCAKKyAgICA0LCAyMjcsIDM4LCA5LCA0LCAyMjcsIDM3LCA5LCA0LCAyMjcsIDgsIDksIDQsIDIyNywgMTAsIDksIDQsIDIyNywgOSwgOSwgCisgICAgNCwgMjI3LCAxMywgOSwgNCwgMjI3LCAxMiwgOSwgNCwgMjI3LCAxNSwgOSwgNCwgMjI3LCAxNCwgOSwgNCwgMjI3LCAxOSwgCisgICAgOSwgNCwgMjI3LCAyMSwgOSwgNCwgMjI3LCAyMCwgOSwgNCwgMjI3LCA0LCA5LCA0LCAyMjcsIDMsIDksIDQsIDIyNywgMTEsIAorICAgIDksIDQsIDIyNywgNywgOSwgNCwgMjI3LCA1LCA5LCA0LCAyMjcsIDYsIDksIDQsIDIzNywgMjUxLCA5LCA0LCAyMzcsIDI1MCwgCisgICAgOSwgNCwgMjM4LCAxLCA5LCA0LCAyMzcsIDI1MiwgOSwgNCwgMjM3LCAyNTQsIDksIDQsIDIzNywgMjUzLCA5LCA0LCAyMzgsIAorICAgIDAsIDksIDQsIDIzNywgMjU1LCA5LCA0LCAyMzgsIDYsIDksIDQsIDIzOCwgNSwgOSwgNCwgMjM4LCA4LCA5LCA0LCAyMzgsIAorICAgIDcsIDksIDQsIDIzNywgMjQzLCA5LCA0LCAyMzcsIDI0MiwgOSwgNCwgMjM3LCAyNDUsIDksIDQsIDIzNywgMjQ0LCA5LCA0LCAKKyAgICAyMzcsIDI0NywgOSwgNCwgMjM3LCAyNDYsIDksIDQsIDIzNywgMjQ5LCA5LCA0LCAyMzcsIDI0OCwgOSwgNCwgMjM4LCAyLCAKKyAgICA5LCA0LCAyMzgsIDQsIDksIDQsIDIzOCwgMywgOSwgNCwgMjI1LCAyMiwgOSwgNCwgMjI1LCAyNCwgOSwgNCwgMjI1LCAyMywgCisgICAgOSwgNCwgMjI1LCA2NywgOSwgNCwgMjI1LCA2NSwgOSwgNCwgMjI1LCA3NywgOSwgNCwgMjI1LCA3MCwgOSwgNCwgMjI0LCAKKyAgICAyNDAsIDksIDQsIDIyNCwgMjM5LCA5LCA0LCAyMjQsIDI0MSwgOSwgNCwgMjI0LCAyNTAsIDksIDQsIDIyNCwgMjQ3LCA5LCAKKyAgICA0LCAyMjUsIDIsIDksIDQsIDIyNCwgMjUyLCA5LCA0LCAyMjUsIDU4LCA5LCA0LCAyMjUsIDY0LCA5LCA0LCAyMjUsIDYwLCAKKyAgICA5LCA0LCAyMzgsIDI0MiwgOSwgNCwgMjM4LCAyNTMsIDksIDQsIDIzOSwgNiwgOSwgNCwgMjM5LCA4NiwgOSwgNCwgMjM5LCAKKyAgICA3NiwgOSwgNCwgMTU1LCA5LCA0LCAyMzksIDk3LCA5LCA0LCAyMzgsIDI0LCA5LCA0LCAyMzgsIDIzLCA5LCA0LCAyMzgsIAorICAgIDI2LCA5LCA0LCAyMzgsIDI1LCA5LCA0LCAyMzgsIDYyLCA5LCA0LCAyMzgsIDUzLCA5LCA0LCAyMzgsIDE0OSwgOSwgNCwgCisgICAgMjM4LCAxMjQsIDksIDQsIDIzOSwgMjYsIDksIDQsIDIzOSwgNzEsIDksIDQsIDIzOSwgMzgsIDksIDQsIDIwNywgNzIsIDksIAorICAgIDQsIDIwNywgNTcsIDksIDQsIDIwNywgOTYsIDksIDQsIDIwNywgODEsIDksIDQsIDIwNiwgMjA1LCA5LCA0LCAyMDYsIDIwNywgCisgICAgOSwgNCwgMjA2LCAyMDYsIDksIDQsIDIwNiwgMjI0LCA5LCA0LCAyMDYsIDI1MCwgOSwgNCwgMjA2LCAyMzMsIDksIDQsIAorICAgIDIwNywgMzIsIDksIDQsIDIwNywgNTEsIDksIDQsIDIwNywgMzcsIDksIDQsIDIwNSwgMjYsIDksIDQsIDIwNSwgMjUsIDksIAorICAgIDQsIDIwNSwgNDAsIDksIDQsIDIwNSwgMjgsIDksIDQsIDIwNSwgMzMsIDksIDQsIDIwNSwgMzUsIDksIDQsIDIwNSwgMzQsIAorICAgIDksIDQsIDIwNSwgMTAxLCA5LCA0LCAyMDUsIDk4LCA5LCA0LCAyMDUsIDExNiwgOSwgNCwgMjA1LCAxMDUsIDksIDQsIDIwNSwgCisgICAgMiwgOSwgNCwgMjA1LCA0LCA5LCA0LCAyMDUsIDMsIDksIDQsIDIwNSwgMTUsIDksIDQsIDIwNSwgMTQsIDksIDQsIDIwNSwgCisgICAgMTksIDksIDQsIDIwNSwgMTYsIDksIDQsIDIwNSwgODMsIDksIDQsIDIwNSwgOTMsIDksIDQsIDIwNSwgODcsIDksIDQsIAorICAgIDIwNCwgMjU0LCA5LCA0LCAyMDQsIDI1MywgOSwgNCwgMjA1LCA5LCA5LCA0LCAyMDUsIDEsIDksIDQsIDIwNCwgMjU1LCA5LCAKKyAgICA0LCAyMDUsIDAsIDksIDQsIDIwNCwgMjQwLCA5LCA0LCAyMDQsIDIzOSwgOSwgNCwgMjA0LCAyNDUsIDksIDQsIDIwNCwgCisgICAgMjQzLCA5LCA0LCAyMDQsIDI0MSwgOSwgNCwgMjA0LCAyNDIsIDksIDQsIDI0NywgMjI1LCA5LCA0LCAyNDcsIDIxOSwgOSwgCisgICAgNCwgMjQ3LCAyNTEsIDksIDQsIDI0NywgMjM1LCA5LCA0LCAyNDcsIDI0OCwgOSwgNCwgMjQ3LCAyNDIsIDksIDQsIDI0NywgCisgICAgMjUwLCA5LCA0LCAyNDcsIDI0OSwgOSwgNCwgMjQ4LCAxODMsIDksIDQsIDI0OCwgMTc1LCA5LCA0LCAyNDksIDEsIDksIDQsIAorICAgIDI0OCwgMjEzLCA5LCA0LCAyNDcsIDMxLCA5LCA0LCAyNDcsIDMzLCA5LCA0LCAyNDcsIDMyLCA5LCA0LCAyNDcsIDg0LCA5LCAKKyAgICA0LCAyNDcsIDc0LCA5LCA0LCAyNDcsIDE3NCwgOSwgNCwgMjQ3LCAxMDAsIDksIDQsIDI0OCwgMTEzLCA5LCA0LCAyNDgsIAorICAgIDE0OCwgOSwgNCwgMjQ4LCAxMTgsIDksIDQsIDI0NywgMTAsIDksIDQsIDI0NywgOCwgOSwgNCwgMjQ3LCA0MCwgOSwgNCwgCisgICAgMjQ3LCAyOSwgOSwgNCwgMjQ3LCAxNiwgOSwgNCwgMjQ3LCAyOCwgOSwgNCwgMjQ2LCAyNDMsIDksIDQsIDI0NiwgMjQyLCA5LCAKKyAgICA0LCAyNDYsIDI1NSwgOSwgNCwgMjQ2LCAyNDksIDksIDQsIDI0NiwgMjQ0LCA5LCA0LCAyNDYsIDI0NiwgOSwgNCwgMjA0LCAKKyAgICAyMjMsIDksIDQsIDIwNCwgMjIyLCA5LCA0LCAyMDQsIDIyOSwgOSwgNCwgMjA0LCAyMjQsIDksIDQsIDIwNCwgMjI2LCA5LCAKKyAgICA0LCAyMDQsIDIyNSwgOSwgNCwgMjA0LCAyMjgsIDksIDQsIDIwNCwgMjI3LCA5LCA0LCAyMDQsIDIzNSwgOSwgNCwgMjA0LCAKKyAgICAyMzQsIDksIDQsIDIwNCwgMjM4LCA5LCA0LCAyMDQsIDIzNiwgOSwgNCwgMjA0LCAyMTksIDksIDQsIDIwNCwgMjIxLCA5LCAKKyAgICA0LCAyMDQsIDIyMCwgOSwgNCwgMjA0LCAyMzAsIDksIDQsIDIwNCwgMjMzLCA5LCA0LCAyMDQsIDIzMSwgOSwgNCwgMjA0LCAKKyAgICAyMTIsIDksIDQsIDIwNCwgMjE2LCA5LCA0LCAyMDQsIDIxNSwgOSwgNCwgMjA0LCAyMTMsIDksIDQsIDIwNCwgMjE0LCA5LCAKKyAgICA0LCAyMDQsIDIwNiwgOSwgNCwgMjA0LCAyMDUsIDksIDQsIDIwNCwgMjExLCA5LCA0LCAyMDQsIDIwOSwgOSwgNCwgMjA0LCAKKyAgICAyMDcsIDksIDQsIDIwNCwgMjA4LCA5LCA0LCAyMjMsIDc4LCA5LCA0LCAyMjMsIDc3LCA5LCA0LCAyMjMsIDgzLCA5LCA0LCAKKyAgICAyMjMsIDc5LCA5LCA0LCAyMjMsIDgwLCA5LCA0LCAyMjMsIDgyLCA5LCA0LCAyMjMsIDgxLCA5LCA0LCAyMjMsIDg4LCA5LCAKKyAgICA0LCAyMjMsIDg3LCA5LCA0LCAyMjMsIDkxLCA5LCA0LCAyMjMsIDkwLCA5LCA0LCAyMjMsIDcxLCA5LCA0LCAyMjMsIDcyLCAKKyAgICA5LCA0LCAyMjMsIDc1LCA5LCA0LCAyMjMsIDc2LCA5LCA0LCAyMjMsIDg0LCA5LCA0LCAyMjMsIDg2LCA5LCA0LCAyMjMsIAorICAgIDY2LCA5LCA0LCAyMjMsIDc0LCA5LCA0LCAyMjMsIDcwLCA5LCA0LCAyMjMsIDY3LCA5LCA0LCAyMjMsIDY4LCA5LCA0LCAKKyAgICAyMjMsIDYxLCA5LCA0LCAyMjMsIDYwLCA5LCA0LCAyMjMsIDY1LCA5LCA0LCAyMjMsIDY0LCA5LCA0LCAyMjMsIDYyLCA5LCAKKyAgICA0LCAyMjMsIDYzLCA5LCA0LCAyMTUsIDEyLCA5LCA0LCAxODQsIDksIDQsIDIxNSwgODAsIDksIDQsIDIxNSwgMTUsIDksIDQsIAorICAgIDIxNSwgNjksIDksIDQsIDIxNSwgNzIsIDksIDQsIDIxNSwgNzAsIDksIDQsIDIxNywgMTMzLCA5LCA0LCAyMTcsIDExOSwgOSwgCisgICAgNCwgMjE3LCAxOTksIDksIDQsIDIxNywgMTQxLCA5LCA0LCAyMTMsIDE0NCwgOSwgNCwgMjEzLCAxNDYsIDksIDQsIDIxMywgCisgICAgMTQ1LCA5LCA0LCAyMTQsIDE2OCwgOSwgNCwgMjE0LCAxNTgsIDksIDQsIDIxNCwgMTkzLCA5LCA0LCAyMTQsIDE3MiwgOSwgCisgICAgNCwgMjE2LCAxNSwgOSwgNCwgMjE3LCA4NiwgOSwgNCwgMjE2LCA0MSwgOSwgNCwgMjEzLCAxMjEsIDksIDQsIDIxMywgMTE4LCAKKyAgICA5LCA0LCAyMTMsIDIwMywgOSwgNCwgMjEzLCAxNDMsIDksIDQsIDIxMywgMTI1LCA5LCA0LCAyMTMsIDEzMywgOSwgNCwgCisgICAgMjEzLCAyNCwgOSwgNCwgMjEzLCAyMywgOSwgNCwgMjEzLCA5MSwgOSwgNCwgMjEzLCAzMiwgOSwgNCwgMjEzLCAyNiwgOSwgCisgICAgNCwgMjEzLCAzMSwgOSwgNCwgMjE0LCA1OCwgOSwgNCwgMjE0LCA1NywgOSwgNCwgMjE0LCA2NCwgOSwgNCwgMjE0LCA1OSwgCisgICAgOSwgNCwgMjE0LCA2MSwgOSwgNCwgMjE0LCA2MywgOSwgNCwgMjE0LCA2MiwgOSwgNCwgMjE0LCA3MywgOSwgNCwgMjE0LCAKKyAgICA3MSwgOSwgNCwgMjE0LCA5NiwgOSwgNCwgMjE0LCA3NCwgOSwgNCwgMjE0LCA1MywgOSwgNCwgMjE0LCA1MiwgOSwgNCwgCisgICAgMjE0LCA1NiwgOSwgNCwgMjE0LCA1NCwgOSwgNCwgMjE0LCA2NywgOSwgNCwgMjE0LCA3MCwgOSwgNCwgMjE0LCA2OCwgOSwgCisgICAgNCwgMjE0LCA0OSwgOSwgNCwgMjE0LCA0NywgOSwgNCwgMjE0LCA1MSwgOSwgNCwgMjE0LCA1MCwgOSwgNCwgMjE0LCA0MiwgCisgICAgOSwgNCwgMjE0LCA0MSwgOSwgNCwgMjE0LCA0NiwgOSwgNCwgMjE0LCA0NSwgOSwgNCwgMjE0LCA0MywgOSwgNCwgMjE0LCAKKyAgICA0NCwgOSwgNCwgMjA1LCA3NiwgOSwgNCwgMjA1LCA3NSwgOSwgNCwgMjA1LCA4MSwgOSwgNCwgMjA1LCA3OCwgOSwgNCwgCisgICAgMjA1LCA1NSwgOSwgNCwgMjA1LCA1NywgOSwgNCwgMjA1LCA1NiwgOSwgNCwgMjA1LCA2MCwgOSwgNCwgMjA1LCA1OSwgOSwgCisgICAgNCwgMjA1LCA2NCwgOSwgNCwgMjA1LCA2MSwgOSwgNCwgMjA1LCA2OSwgOSwgNCwgMjA1LCA2OCwgOSwgNCwgMjA1LCA3MiwgCisgICAgOSwgNCwgMjA1LCA3MCwgOSwgNCwgMjA1LCA1MSwgOSwgNCwgMjA1LCA1MCwgOSwgNCwgMjA1LCA1OCwgOSwgNCwgMjA1LCAKKyAgICA1NCwgOSwgNCwgMjA1LCA1MiwgOSwgNCwgMjA1LCA1MywgOSwgNCwgMjA1LCA0MywgOSwgNCwgMjA1LCA0MiwgOSwgNCwgCisgICAgMjA1LCA0NywgOSwgNCwgMjA1LCA0NiwgOSwgNCwgMjA1LCA0NCwgOSwgNCwgMjA1LCA0NSwgOSwgNCwgMjQ4LCA4OCwgOSwgCisgICAgNCwgMjQ4LCA4NCwgOSwgNCwgMjQ4LCAxMTAsIDksIDQsIDI0OCwgOTcsIDksIDQsIDI0OCwgMTAsIDksIDQsIDI0OCwgOSwgCisgICAgOSwgNCwgMjQ4LCAxMiwgOSwgNCwgMjQ4LCAxMSwgOSwgNCwgMjQ4LCAyNSwgOSwgNCwgMjQ4LCAyNCwgOSwgNCwgMjQ4LCAKKyAgICAzMiwgOSwgNCwgMjQ4LCAyNywgOSwgNCwgMjQ4LCA2MywgOSwgNCwgMjQ4LCA2MSwgOSwgNCwgMjQ4LCA4MiwgOSwgNCwgCisgICAgMjQ4LCA3MCwgOSwgNCwgMjQ4LCA0LCA5LCA0LCAyNDgsIDE0LCA5LCA0LCAyNDgsIDgsIDksIDQsIDI0OCwgNSwgOSwgNCwgCisgICAgMjQ4LCA3LCA5LCA0LCAyNDcsIDI1MywgOSwgNCwgMjQ3LCAyNTIsIDksIDQsIDI0OCwgMSwgOSwgNCwgMjQ4LCAwLCA5LCA0LCAKKyAgICAyNDcsIDI1NCwgOSwgNCwgMjQ3LCAyNTUsIDksIDQsIDIxOCwgODUsIDksIDQsIDIxOCwgODksIDksIDQsIDIxOCwgNjgsIDksIAorICAgIDQsIDIxOCwgNjksIDksIDQsIDIxOCwgNzIsIDksIDQsIDIxOCwgNzEsIDksIDQsIDIxOCwgNzUsIDksIDQsIDIxOCwgNzMsIAorICAgIDksIDQsIDIxOCwgNzksIDksIDQsIDIxOCwgNzgsIDksIDQsIDIxOCwgODQsIDksIDQsIDIxOCwgODAsIDksIDQsIDIxOCwgCisgICAgNjQsIDksIDQsIDIxOCwgNjIsIDksIDQsIDIxOCwgNzAsIDksIDQsIDIxOCwgNjcsIDksIDQsIDIxOCwgNjUsIDksIDQsIAorICAgIDIxOCwgNjYsIDksIDQsIDIxOCwgNTcsIDksIDQsIDIxOCwgNTYsIDksIDQsIDIxOCwgNjEsIDksIDQsIDIxOCwgNjAsIDksIAorICAgIDQsIDIxOCwgNTgsIDksIDQsIDIxOCwgNTksIDksIDQsIDIyNCwgMjIsIDksIDQsIDIyNCwgMjEsIDksIDQsIDIyNCwgMjQsIAorICAgIDksIDQsIDIyNCwgMjMsIDksIDQsIDIyNCwgMTMsIDksIDQsIDIyNCwgMTUsIDksIDQsIDIyNCwgMTQsIDksIDQsIDIyNCwgCisgICAgMTcsIDksIDQsIDIyNCwgMTYsIDksIDQsIDIyNCwgMjAsIDksIDQsIDIyNCwgMTksIDksIDQsIDIyNCwgNywgOSwgNCwgMjI0LCAKKyAgICA2LCA5LCA0LCAyMjQsIDEyLCA5LCA0LCAyMjQsIDEwLCA5LCA0LCAyMjQsIDgsIDksIDQsIDIyNCwgOSwgOSwgNCwgMjI0LCAKKyAgICAxLCA5LCA0LCAyMjQsIDAsIDksIDQsIDIyNCwgNSwgOSwgNCwgMjI0LCA0LCA5LCA0LCAyMjQsIDIsIDksIDQsIDIyNCwgMywgCisgICAgOSwgNCwgMjE1LCAyMjQsIDksIDQsIDIxNSwgMjE5LCA5LCA0LCAyMTYsIDIsIDksIDQsIDIxNSwgMjM1LCA5LCA0LCAyMTUsIAorICAgIDEwNSwgOSwgNCwgMjE1LCAxMDcsIDksIDQsIDIxNSwgMTA2LCA5LCA0LCAyMTUsIDEyOCwgOSwgNCwgMjE1LCAxMjUsIDksIAorICAgIDQsIDIxNSwgMTU4LCA5LCA0LCAyMTUsIDE0OCwgOSwgNCwgMjE1LCAxOTMsIDksIDQsIDIxNSwgMTg2LCA5LCA0LCAyMTUsIAorICAgIDIxNCwgOSwgNCwgMjE1LCAyMDEsIDksIDQsIDIxNSwgMTAxLCA5LCA0LCAyMTUsIDk5LCA5LCA0LCAyMTUsIDExNiwgOSwgNCwgCisgICAgMjE1LCAxMDQsIDksIDQsIDIxNSwgMTAyLCA5LCA0LCAyMTUsIDEwMywgOSwgNCwgMjE1LCA4MywgOSwgNCwgMjE1LCA4MiwgCisgICAgOSwgNCwgMjE1LCA4OSwgOSwgNCwgMjE1LCA4NiwgOSwgNCwgMjE1LCA4NCwgOSwgNCwgMjE1LCA4NSwgOSwgNCwgMjE5LCAKKyAgICA2NSwgOSwgNCwgMjE5LCA1OSwgOSwgNCwgMjE5LCAxMTMsIDksIDQsIDIxOSwgNzEsIDksIDQsIDIxOCwgMjksIDksIDQsIAorICAgIDIxOCwgMzEsIDksIDQsIDIxOCwgMzAsIDksIDQsIDIxOCwgOTgsIDksIDQsIDIxOCwgOTEsIDksIDQsIDIxOCwgMTI0LCA5LCAKKyAgICA0LCAyMTgsIDEwMiwgOSwgNCwgMjE4LCAyMTcsIDksIDQsIDIxOSwgNTEsIDksIDQsIDIxOSwgMCwgOSwgNCwgMjE4LCAyMiwgCisgICAgOSwgNCwgMjE4LCAxOSwgOSwgNCwgMjE4LCA1MCwgOSwgNCwgMjE4LCAyOCwgOSwgNCwgMjE4LCAyNCwgOSwgNCwgMjE4LCAKKyAgICAyNSwgOSwgNCwgMjE4LCA0LCA5LCA0LCAyMTgsIDMsIDksIDQsIDIxOCwgOSwgOSwgNCwgMjE4LCA3LCA5LCA0LCAyMTgsIDUsIAorICAgIDksIDQsIDIxOCwgNiwgOSwgNCwgMjMyLCAxNTIsIDksIDQsIDIzMiwgMTUxLCA5LCA0LCAyMzIsIDE2MiwgOSwgNCwgMjMyLCAKKyAgICAxNTMsIDksIDQsIDIzMiwgMTU4LCA5LCA0LCAyMzIsIDE1NywgOSwgNCwgMjMyLCAxNjAsIDksIDQsIDIzMiwgMTU5LCA5LCAKKyAgICA0LCAyMzIsIDk0LCA5LCA0LCAyMzIsIDkzLCA5LCA0LCAyMzIsIDk2LCA5LCA0LCAyMzIsIDk1LCA5LCA0LCAyMzIsIDExMCwgCisgICAgOSwgNCwgMjMyLCAxMDgsIDksIDQsIDIzMiwgMTIyLCA5LCA0LCAyMzIsIDExMiwgOSwgNCwgMjMyLCA4NywgOSwgNCwgMjMyLCAKKyAgICA4NSwgOSwgNCwgMjMyLCAxMDQsIDksIDQsIDIzMiwgOTIsIDksIDQsIDIzMiwgODksIDksIDQsIDIzMiwgOTAsIDksIDQsIAorICAgIDIzMiwgNzksIDksIDQsIDIzMiwgNzgsIDksIDQsIDIzMiwgODMsIDksIDQsIDIzMiwgODIsIDksIDQsIDIzMiwgODAsIDksIAorICAgIDQsIDIzMiwgODEsIDksIDQsIDIxOSwgMjMwLCA5LCA0LCAyMTksIDIyOCwgOSwgNCwgMjE5LCAyMzcsIDksIDQsIDIxOSwgCisgICAgMjMxLCA5LCA0LCAyMTksIDIzNCwgOSwgNCwgMjE5LCAyMzMsIDksIDQsIDIxOSwgMjM2LCA5LCA0LCAyMTksIDIzNSwgOSwgCisgICAgNCwgMjE5LCAxODEsIDksIDQsIDIxOSwgMTc4LCA5LCA0LCAyMTksIDE4MywgOSwgNCwgMjE5LCAxODIsIDksIDQsIDIxOSwgCisgICAgMjE3LCA5LCA0LCAyMTksIDIxNiwgOSwgNCwgMjE5LCAyMjYsIDksIDQsIDIxOSwgMjIwLCA5LCA0LCAyMTksIDE3MywgOSwgCisgICAgNCwgMjE5LCAxNjksIDksIDQsIDIxOSwgMjE0LCA5LCA0LCAyMTksIDE3NywgOSwgNCwgMjE5LCAxNzUsIDksIDQsIDIxOSwgCisgICAgMTc2LCA5LCA0LCAyMTksIDE1MywgOSwgNCwgMjE5LCAxNTEsIDksIDQsIDIxOSwgMTYzLCA5LCA0LCAyMTksIDE1NiwgOSwgCisgICAgNCwgMjE5LCAxNTQsIDksIDQsIDIxOSwgMTU1LCA5LCA0LCAyMzIsIDE0MSwgOSwgNCwgMjMyLCAxNDAsIDksIDQsIDIzMiwgCisgICAgMTQ3LCA5LCA0LCAyMzIsIDE0MiwgOSwgNCwgMjMyLCAxNDQsIDksIDQsIDIzMiwgMTQzLCA5LCA0LCAyMzIsIDE0NiwgOSwgCisgICAgNCwgMjMyLCAxNDUsIDksIDQsIDIzMiwgMTMyLCA5LCA0LCAyMzIsIDEzNCwgOSwgNCwgMjMyLCAxMzMsIDksIDQsIDIzMiwgCisgICAgMTM3LCA5LCA0LCAyMzIsIDEzNiwgOSwgNCwgMjMyLCAxMzksIDksIDQsIDIzMiwgMTM4LCA5LCA0LCAyMzIsIDEyOCwgOSwgCisgICAgNCwgMjMyLCAxMjcsIDksIDQsIDIzMiwgMTM1LCA5LCA0LCAyMzIsIDEzMSwgOSwgNCwgMjMyLCAxMjksIDksIDQsIDIzMiwgCisgICAgMTMwLCA5LCA0LCAyMzIsIDEyNCwgOSwgNCwgMjMyLCAxMjMsIDksIDQsIDIzMiwgMTI2LCA5LCA0LCAyMzIsIDEyNSwgOSwgCisgICAgNCwgMjI0LCAxNTcsIDksIDQsIDIyNCwgMTU2LCA5LCA0LCAyMjQsIDE2NCwgOSwgNCwgMjI0LCAxNTgsIDksIDQsIDIyNCwgCisgICAgMTYwLCA5LCA0LCAyMjQsIDE1OSwgOSwgNCwgMjI0LCAxNjMsIDksIDQsIDIyNCwgMTYxLCA5LCA0LCAyMjQsIDE0NiwgOSwgCisgICAgNCwgMjI0LCAxNDcsIDksIDQsIDIyNCwgMTUyLCA5LCA0LCAyMjQsIDE1MSwgOSwgNCwgMjI0LCAxNTUsIDksIDQsIDIyNCwgCisgICAgMTUzLCA5LCA0LCAyMjQsIDE0MSwgOSwgNCwgMjI0LCAxNTAsIDksIDQsIDIyNCwgMTQ1LCA5LCA0LCAyMjQsIDE0MiwgOSwgCisgICAgNCwgMjI0LCAxNDMsIDksIDQsIDIyNCwgMTM2LCA5LCA0LCAyMjQsIDEzNSwgOSwgNCwgMjI0LCAxNDAsIDksIDQsIDIyNCwgCisgICAgMTM5LCA5LCA0LCAyMjQsIDEzNywgOSwgNCwgMjI0LCAxMzgsIDksIDQsIDIyMywgMTEzLCA5LCA0LCAyMjMsIDExMiwgOSwgCisgICAgNCwgMjIzLCAxMjUsIDksIDQsIDIyMywgMTE3LCA5LCA0LCAyMjMsIDEyMiwgOSwgNCwgMjIzLCAxMjEsIDksIDQsIDIyMywgCisgICAgMTI0LCA5LCA0LCAyMjMsIDEyMywgOSwgNCwgMjIzLCA5OCwgOSwgNCwgMjIzLCAxMDAsIDksIDQsIDIyMywgOTksIDksIDQsIAorICAgIDIyMywgMTA1LCA5LCA0LCAyMjMsIDEwNCwgOSwgNCwgMjIzLCAxMTAsIDksIDQsIDIyMywgMTA2LCA5LCA0LCAyMjMsIDk2LCAKKyAgICA5LCA0LCAyMjMsIDk0LCA5LCA0LCAyMjMsIDEwMywgOSwgNCwgMjIzLCA5NywgOSwgNCwgMjA2LCAxNjEsIDksIDQsIDIwNiwgCisgICAgMTYwLCA5LCA0LCAyMDYsIDE2OSwgOSwgNCwgMjA2LCAxNjMsIDksIDQsIDIwNiwgMTY1LCA5LCA0LCAyMDYsIDE2NCwgOSwgCisgICAgNCwgMjA2LCAxNjcsIDksIDQsIDIwNiwgMTY2LCA5LCA0LCAyMDYsIDE0OSwgOSwgNCwgMjA2LCAxNTAsIDksIDQsIDIwNiwgCisgICAgMTU0LCA5LCA0LCAyMDYsIDE1MywgOSwgNCwgMjA2LCAxNTksIDksIDQsIDIwNiwgMTU3LCA5LCA0LCAyMDYsIDEyNywgOSwgCisgICAgNCwgMjA2LCAxMjUsIDksIDQsIDIwNiwgMTQwLCA5LCA0LCAyMDYsIDEzMCwgOSwgNCwgMjA2LCAxMjgsIDksIDQsIDIwNiwgCisgICAgMTI5LCA5LCA0LCAyMDUsIDI1MywgOSwgNCwgMjA1LCAyNTEsIDksIDQsIDIwNiwgMTEsIDksIDQsIDIwNSwgMjU0LCA5LCA0LCAKKyAgICAyMDYsIDUsIDksIDQsIDIwNiwgNCwgOSwgNCwgMjA2LCA4LCA5LCA0LCAyMDYsIDYsIDksIDQsIDIwNSwgMTkxLCA5LCA0LCAKKyAgICAyMDUsIDE5MCwgOSwgNCwgMjA1LCAxOTQsIDksIDQsIDIwNSwgMTkyLCA5LCA0LCAyMDUsIDIyNywgOSwgNCwgMjA1LCAyMjMsIAorICAgIDksIDQsIDIwNSwgMjQ3LCA5LCA0LCAyMDUsIDIzMSwgOSwgNCwgMjA1LCAxODIsIDksIDQsIDIwNSwgMTc4LCA5LCA0LCAKKyAgICAyMDUsIDIxMywgOSwgNCwgMjA1LCAxODksIDksIDQsIDIwNSwgMTg1LCA5LCA0LCAyMDUsIDE4NiwgOSwgNCwgMjA1LCAxNjIsIAorICAgIDksIDQsIDIwNSwgMTYxLCA5LCA0LCAyMDUsIDE2OSwgOSwgNCwgMjA1LCAxNjUsIDksIDQsIDIwNSwgMTYzLCA5LCA0LCAKKyAgICAyMDUsIDE2NCwgOSwgMzcsIDIxOSwgMjE3LCA5LCAzNywgMjI5LCAyMzUsIDksIDM3LCAyMzEsIDg5LCA5LCAzNywgMjIzLCAKKyAgICAxMTcsIDksIDM3LCAyNDYsIDI0OSwgOSwgMzcsIDIxNCwgNjQsIDksIDM3LCAyNDAsIDExOCwgOSwgMzcsIDI0MCwgMTUwLCAKKyAgICA5LCAzNywgMjI2LCAyNTQsIDksIDM3LCAyMzcsIDI1MSwgOSwgMzcsIDIyOSwgMzUsIDksIDM3LCAyNTAsIDY5LCA5LCAzNywgCisgICAgMjI2LCAxNDIsIDksIDM3LCAyMDUsIDI0NywgOSwgMzcsIDIyMCwgNTIsIDksIDM3LCAyMzcsIDI0NSwgOSwgMzcsIDIxMiwgCisgICAgMTU2LCA5LCAzNywgMjQwLCAyNDQsIDksIDM3LCAyMDUsIDEsIDksIDM3LCAyNDYsIDI0MywgOSwgMzcsIDI0NiwgMTQsIDksIAorICAgIDM3LCAyNDksIDY4LCA5LCAzNywgMjQwLCAxMTQsIDksIDM3LCAyMjMsIDEwNiwgOSwgMzcsIDIxMCwgMTcwLCA5LCAzNywgCisgICAgMjIyLCAxNDMsIDksIDM3LCAyMzIsIDEyOCwgOSwgMzcsIDIwNSwgMTUsIDksIDM3LCAyMjAsIDMxLCA5LCAzNywgMjM4LCAKKyAgICAxOTEsIDksIDM3LCAyMDUsIDI1MywgOSwgMzcsIDIwNywgMTQ0LCA5LCAzNywgMjE1LCA4OSwgOSwgMzcsIDIwOSwgMjgsIDksIAorICAgIDM3LCAyMDUsIDExNiwgOSwgMzcsIDIzMiwgMTIyLCA5LCAzNywgMjIzLCA3MCwgOSwgMzcsIDIzMiwgMTI2LCA5LCAzNywgCisgICAgMjM5LCAyNTQsIDksIDM3LCAyMzIsIDE0NiwgOSwgMzcsIDIwNiwgMjUwLCA5LCAzNywgMjQzLCAyMzcsIDksIDM3LCAyMTUsIAorICAgIDEwMywgOSwgMzcsIDIyOSwgMjMwLCA5LCAzNywgMjQ2LCAyNTUsIDksIDM3LCAyNDcsIDMyLCA5LCAzNywgMjQ3LCAyMzUsIAorICAgIDksIDM3LCAyMzcsIDI0OCwgOSwgMzcsIDIxNSwgMjI0LCA5LCAzNywgMjA1LCAwLCA5LCAzNywgMjE1LCAxNDgsIDksIDM3LCAKKyAgICAyNDgsIDgyLCA5LCAzNywgMjA0LCAyMjYsIDksIDM3LCAyMjUsIDE3NywgOSwgMzcsIDIzMSwgMjI0LCAyMjksIDE4NSwgMSwgCisgICAgMjUwLCAxODMsIDIyOSwgMTg1LCAxLCAxNzksIDIyOSwgMTg1LCAxLCAyMjEsIDkzLCAyMjksIDE4NSwgMSwgMjQ2LCAxNDUsIAorICAgIDIyOSwgMTg1LCAxLCAyMTIsIDIxOSwgMjI5LCAxODUsIDEsIDIxMiwgNTYsIDIyOSwgMTg1LCAxLCAyNDAsIDI0NCwgMjI5LCAKKyAgICAxODUsIDEsIDE3MiwgMjI5LCAxODUsIDEsIDIzMSwgMTY3LCAyMjksIDE4NSwgMSwgMjMyLCAyMDAsIDIyOSwgMTg1LCAxLCAKKyAgICAyNDksIDEsIDIyOSwgMTg1LCAxLCAyNDgsIDExMCwgMjI5LCAxODUsIDEsIDI0MywgMTk2LCAyMjksIDE4NSwgMSwgMjEwLCAKKyAgICAyNDMsIDIyOSwgMTg1LCAxLCAyMTAsIDIzMywgMjI5LCAxODUsIDEsIDE4NSwgMjI5LCAxODUsIDEsIDE5OSwgMjI5LCAxODUsIAorICAgIDEsIDIzMCwgMTQxLCAyMjksIDE4NSwgMSwgMjE3LCAxOTksIDIyOSwgMTg1LCAxLCAyMDUsIDgxLCAyMjksIDE4NSwgMSwgCisgICAgMjA1LCAxMTYsIDIyOSwgMTg1LCAxLCAyMjUsIDc3LCAyMjksIDE4NSwgMSwgMTU1LCAyMjksIDE4NSwgMSwgMjA2LCAxODEsIAorICAgIDIyOSwgMTg1LCAxLCAyMzksIDIwLCAyMjksIDE4NSwgMSwgMjQyLCA3MywgMjI5LCAxODUsIDEsIDIwNywgOTYsIDIyOSwgCisgICAgMTg1LCAxLCAyMTYsIDIsIDIyOSwgMTg1LCAxLCAxOTAsIDIyOSwgMTg1LCAxLCAyNDAsIDk5LCAyMjksIDE4NSwgMSwgNjIsIAorICAgIDIyOSwgMTg1LCAxLCAyNTIsIDI0OCwgMjI5LCAxODUsIDEsIDc1LCAyMjksIDE4NSwgMSwgMjQyLCAxOTIsIDIyOSwgMTg1LCAKKyAgICAxLCA3NCwgMjI5LCAxODUsIDEsIDc2LCAyMjksIDE4NSwgMSwgNzEsIDIyOSwgMTg1LCAxLCAyMTAsIDMsIDIyOSwgMTg1LCAKKyAgICAxLCAyMDksIDI1MywgMjI5LCAxODUsIDEsIDIyMiwgMjA2LCAyMjksIDE4NSwgMSwgMTM1LCAyMjYsIDQwLCAyMTEsIDIxMSwgCisgICAgMjI5LCAxODUsIDEsIDEzNSwgMjI1LCAyMzcsIDIyMCwgMjExLCAyMjksIDE4NSwgMSwgMTM1LCAyMjYsIDQwLCAyNDYsIAorICAgIDI1NCwgMjI5LCAxODUsIDEsIDEzNSwgMjI2LCA0MCwgMjQ5LCAxODQsIDIyOSwgMTg1LCAxLCAxMzUsIDIyNiwgNDAsIDE5OSwgCisgICAgMjI5LCAxODUsIDEsIDEzNSwgMjI2LCA0MCwgMjMyLCAxNzEsIDIyOSwgMTg1LCAyMjAsIDcyLCAyNDcsIDE1NSwgMjI5LCAKKyAgICAxODUsIDIyMCwgNzIsIDI0MSwgODIsIDIxMywgMjUxLCA0NiwgNCwgMjQzLCAxMDQsIDQ2LCA0LCAyNDMsIDEwMCwgNDYsIDQsIAorICAgIDIzOSwgNTMsIDQ2LCA0LCAyMDcsIDQ1LCA0NiwgNCwgMjA3LCA0NCwgNDYsIDQsIDIyMSwgMTY0LCA0NiwgNCwgMjQ5LCAKKyAgICAyNTEsIDQ2LCA0LCAyNTAsIDUwLCA0NiwgNCwgMjI3LCAxNDUsIDQ2LCA0LCAyMzEsIDEwLCA0NiwgNCwgMjI3LCAzMCwgNDYsIAorICAgIDQsIDI0MCwgMTgzLCA0NiwgNCwgMjQyLCAyMSwgNDYsIDQsIDIwOSwgMzQsIDQ2LCA0LCAyMTIsIDEyMCwgNDYsIDQsIDIxMiwgCisgICAgMzksIDQ2LCA0LCAyNDUsIDE4MiwgNDYsIDQsIDI0NSwgMTc5LCA0NiwgNCwgMjMwLCA1MCwgNDYsIDQsIDIxOSwgMjksIDQ2LCAKKyAgICA0LCAyNDUsIDI1MSwgNDYsIDQsIDIyNSwgMTQyLCA0NiwgNCwgMjE3LCA3NCwgNDYsIDQsIDIxNSwgMjEyLCA0NiwgNCwgCisgICAgMjA1LCA5MSwgNDYsIDQsIDIwNSwgNzEsIDQ2LCA0LCAyNDgsIDE0MCwgNDYsIDQsIDIzMiwgMTgwLCA0NiwgNCwgMjI0LCAKKyAgICAxNzEsIDQ2LCA0LCAyMDYsIDQ5LCA0NiwgNCwgMjMxLCAyMjEsIDQ2LCA0LCAyMjUsIDUwLCA0NiwgNCwgMjQwLCAxNjIsIAorICAgIDQ2LCA0LCAyMjcsIDEwNywgNDYsIDQsIDIyNSwgMTA2LCA0NiwgNCwgMjIzLCAxMzMsIDQ2LCA0LCA3NCwgNDYsIDQsIDIzMywgCisgICAgNjgsIDQ2LCA0LCAyMzksIDExLCA0NiwgNCwgMjM4LCAyNDYsIDQ2LCA0LCAyMDcsIDIwLCA0NiwgNCwgMjA3LCAxMSwgNDYsIAorICAgIDQsIDIyMSwgNTMsIDQ2LCA0LCAyNDksIDI0OSwgNDYsIDQsIDI0OSwgMjQ0LCA0NiwgNCwgMjI3LCAxMzgsIDQ2LCA0LCAKKyAgICAyMzEsIDcsIDQ2LCA0LCAyMjcsIDI3LCA0NiwgNCwgMjQwLCAxNzksIDQ2LCA0LCAyNDEsIDI1MCwgNDYsIDQsIDIwOCwgCisgICAgMjE0LCA0NiwgNCwgMjExLCAyMTEsIDQ2LCA0LCAyMTIsIDE5LCA0NiwgNCwgMjQ1LCAxNzQsIDQ2LCA0LCAyNDUsIDE3OCwgCisgICAgNDYsIDQsIDIyOSwgMjM1LCA0NiwgNCwgMjE4LCAyMDgsIDQ2LCA0LCAyNDUsIDE2OCwgNDYsIDQsIDIyNSwgMTM2LCA0NiwgCisgICAgNCwgMjE1LCA4MCwgNDYsIDQsIDIxNSwgMTgzLCA0NiwgNCwgMjA1LCA0MCwgNDYsIDQsIDIwNSwgNjcsIDQ2LCA0LCAyNDcsIAorICAgIDI1MSwgNDYsIDQsIDIzMiwgMTYyLCA0NiwgNCwgMjI0LCAxNjQsIDQ2LCA0LCAyMDYsIDExLCA0NiwgNCwgMjMxLCAxMjMsIAorICAgIDQ2LCA0LCAyMjUsIDQyLCA0NiwgNCwgMjQwLCA2MSwgNDYsIDQsIDIyNiwgMjU0LCA0NiwgNCwgMjI0LCAyMzAsIDQ2LCA0LCAKKyAgICAyMjMsIDEyNSwgNDYsIDQsIDYyLCA0NiwgNCwgMjUyLCAxMjIsIDQ2LCA0LCAyMjUsIDcyLCA0NiwgNCwgMTU1LCA0NiwgNCwgCisgICAgMjM5LCAxMTAsIDQ2LCA0LCAyMDcsIDk2LCA0NiwgNCwgMjA3LCA4NSwgNDYsIDQsIDE3OSwgNDYsIDQsIDI1MCwgMCwgNDYsIAorICAgIDQsIDI1MCwgMTgzLCA0NiwgNCwgMjI3LCAxNTMsIDQ2LCA0LCAyMzEsIDE1LCA0NiwgNCwgMjMxLCAxMywgNDYsIDQsIDIyNywgCisgICAgMzQsIDQ2LCA0LCAyNDAsIDE4NywgNDYsIDQsIDI0MiwgNzMsIDQ2LCA0LCAyMDksIDcwLCA0NiwgNCwgMjEyLCAyMTksIDQ2LCAKKyAgICA0LCAyMTIsIDU2LCA0NiwgNCwgMjQ1LCAxOTIsIDQ2LCA0LCAyNDUsIDE4MSwgNDYsIDQsIDIzMCwgMTQxLCA0NiwgNCwgCisgICAgMjE5LCAxMTMsIDQ2LCA0LCAyNDYsIDE0NSwgNDYsIDQsIDIyNSwgMTUxLCA0NiwgNCwgMjE3LCAxOTksIDQ2LCA0LCAyMTYsIAorICAgIDIsIDQ2LCA0LCAyMDUsIDExNiwgNDYsIDQsIDIwNSwgODEsIDQ2LCA0LCAyNDksIDEsIDQ2LCA0LCAyMzIsIDIwMCwgNDYsIAorICAgIDQsIDIyNCwgMTgwLCA0NiwgNCwgMTkwLCA0NiwgNCwgMTcyLCA0NiwgNCwgMjMyLCAyNywgNDYsIDQsIDIyNSwgNTYsIDQ2LCAKKyAgICA0LCAyNDAsIDI0NCwgNDYsIDQsIDE4NSwgNDYsIDQsIDE5OSwgNDYsIDQsIDIyMywgMTQ0LCA0NiwgNCwgMjIyLCAxNTIsIAorICAgIDQ2LCA0LCAyMjIsIDE0NywgNDYsIDQsIDIzOCwgMTMxLCA0NiwgNCwgMjA2LCAyMzgsIDQ2LCA0LCAyMDYsIDIzNCwgNDYsIAorICAgIDQsIDIyMCwgMTg3LCA0NiwgNCwgMjQ5LCAyNDcsIDQ2LCA0LCAyNDksIDE3MiwgNDYsIDQsIDIyNywgMTMzLCA0NiwgNCwgCisgICAgMjMxLCA1LCA0NiwgNCwgMjI3LCAyMywgNDYsIDQsIDI0MCwgMTc1LCA0NiwgNCwgMjQxLCAxNTEsIDQ2LCA0LCAyMDgsIAorICAgIDE2MSwgNDYsIDQsIDIxMSwgMTA1LCA0NiwgNCwgMjExLCAyNDgsIDQ2LCA0LCAyNDUsIDE3MSwgNDYsIDQsIDI0NSwgMTc2LCAKKyAgICA0NiwgNCwgMjI5LCAxMTUsIDQ2LCA0LCAyMTgsIDEwNywgNDYsIDQsIDI0NSwgMjgsIDQ2LCA0LCAyMjUsIDEyMywgNDYsIDQsIAorICAgIDIxNCwgMTc0LCA0NiwgNCwgMjE1LCAxNTIsIDQ2LCA0LCAyMDUsIDE3LCA0NiwgNCwgMjA1LCA2MiwgNDYsIDQsIDI0NywgCisgICAgMTA1LCA0NiwgNCwgMjMyLCAxMTMsIDQ2LCA0LCAyMjQsIDE1NCwgNDYsIDQsIDIwNSwgMjMyLCA0NiwgNCwgMjMxLCAzMywgCisgICAgNDYsIDQsIDIyNSwgNDAsIDQ2LCA0LCAyNDAsIDgsIDQ2LCA0LCAyMjYsIDE1MCwgNDYsIDQsIDIyNCwgNTYsIDQ2LCA0LCAKKyAgICAyMjMsIDEwNywgNDYsIDQsIDcxLCA0NiwgNCwgMjA5LCAyMzQsIDQ2LCA0LCAyMzgsIDQyLCA0NiwgNCwgMjM4LCAzMSwgNDYsIAorICAgIDQsIDIwNiwgMjE2LCA0NiwgNCwgMjA2LCAyMDksIDQ2LCA0LCAyMjAsIDgyLCA0NiwgNCwgMjQ5LCAyNDYsIDQ2LCA0LCAKKyAgICAyNDksIDEwMSwgNDYsIDQsIDIyNywgMTMyLCA0NiwgNCwgMjMxLCAzLCA0NiwgNCwgMjI3LCAyMiwgNDYsIDQsIDI0MCwgCisgICAgMTc0LCA0NiwgNCwgMjQxLCA4OCwgNDYsIDQsIDIwNywgMTQ4LCA0NiwgNCwgMjEwLCAxNzAsIDQ2LCA0LCAyMTEsIDIzMCwgCisgICAgNDYsIDQsIDI0NSwgMTY5LCA0NiwgNCwgMjQ1LCAxNzUsIDQ2LCA0LCAyMjksIDgxLCA0NiwgNCwgMjE4LCA1MCwgNDYsIDQsIAorICAgIDI0MywgMjM3LCA0NiwgNCwgMjI1LCAxMTgsIDQ2LCA0LCAyMTMsIDIwMywgNDYsIDQsIDIxNSwgMTE2LCA0NiwgNCwgMjA1LCAKKyAgICA5LCA0NiwgNCwgMjA1LCA1OCwgNDYsIDQsIDI0NywgNDAsIDQ2LCA0LCAyMzIsIDEwNCwgNDYsIDQsIDIyNCwgMTUwLCA0NiwgCisgICAgNCwgMjA1LCAyMTMsIDQ2LCA0LCAyMzAsIDIzNiwgNDYsIDQsIDIyNSwgMzksIDQ2LCA0LCAyMzksIDIxMywgNDYsIDQsIAorICAgIDIyNiwgMTE0LCA0NiwgNCwgMjIzLCAyMTcsIDQ2LCA0LCAyMjMsIDEwMywgNDYsIDQsIDc2LCA0NiwgNCwgMjIyLCAxNjUsIAorICAgIDQ2LCA0LCAyMjQsIDI1NCwgNDYsIDQsIDIzOCwgMTQ5LCA0NiwgNCwgMjM4LCAxMzQsIDQ2LCA0LCAyMDYsIDI1MCwgNDYsIAorICAgIDQsIDIwNiwgMjM5LCA0NiwgNCwgMjIwLCAyMTEsIDQ2LCA0LCAyNDksIDI0OCwgNDYsIDQsIDI0OSwgMTg0LCA0NiwgNCwgCisgICAgMjI3LCAxMzQsIDQ2LCA0LCAyMzEsIDYsIDQ2LCA0LCAyMjcsIDI1LCA0NiwgNCwgMjQwLCAxNzcsIDQ2LCA0LCAyNDAsIAorICAgIDE3NiwgNDYsIDQsIDI0MSwgMTYyLCA0NiwgNCwgMjA4LCAxNzMsIDQ2LCA0LCAxMjQsIDQ2LCA0LCAyMTEsIDI1MywgNDYsIAorICAgIDQsIDI0NSwgMTcyLCA0NiwgNCwgMjQ1LCAxNzcsIDQ2LCA0LCAyMjksIDE0NCwgNDYsIDQsIDIxOCwgMTI0LCA0NiwgNCwgCisgICAgMjQ1LCA1MSwgNDYsIDQsIDIyNSwgMTI3LCA0NiwgNCwgMjE0LCAxOTMsIDQ2LCA0LCAyMTUsIDE1OCwgNDYsIDQsIDIwNSwgCisgICAgMTksIDQ2LCA0LCAyMDUsIDY0LCA0NiwgNCwgMjQ3LCAxNzQsIDQ2LCA0LCAyMzIsIDEyMiwgNDYsIDQsIDIyNCwgMTU1LCAKKyAgICA0NiwgNCwgMjA1LCAyNDcsIDQ2LCA0LCAyMzEsIDUzLCA0NiwgNCwgMjI1LCA0MSwgNDYsIDQsIDI0MCwgMTksIDQ2LCA0LCAKKyAgICAyMjYsIDE4MSwgNDYsIDQsIDIyNCwgNjcsIDQ2LCA0LCAyMjMsIDExMCwgNDYsIDQsIDc1LCA0NiwgNCwgMjQzLCA0MSwgNDYsIAorICAgIDQsIDIyNSwgNjEsIDQ2LCA0LCAyMzksIDcxLCA0NiwgNCwgMjM5LCA0MSwgNDYsIDQsIDIwNywgNTEsIDQ2LCA0LCAyMDcsIAorICAgIDM5LCA0NiwgNCwgMjIxLCAxNzQsIDQ2LCA0LCAyNDksIDI1MiwgNDYsIDQsIDI1MCwgNjEsIDQ2LCA0LCAyMjcsIDE0NiwgCisgICAgNDYsIDQsIDIzMSwgMTEsIDQ2LCA0LCAyMzEsIDksIDQ2LCA0LCAyMjcsIDMxLCA0NiwgNCwgMjQwLCAxODQsIDQ2LCA0LCAKKyAgICAyNDAsIDE4MiwgNDYsIDQsIDI0MiwgMjgsIDQ2LCA0LCAyMDksIDM5LCA0NiwgNCwgMjEyLCAxMzEsIDQ2LCA0LCAyMTIsIAorICAgIDQxLCA0NiwgNCwgMjQ1LCAxODMsIDQ2LCA0LCAyNDUsIDE4MCwgNDYsIDQsIDIzMCwgNTgsIDQ2LCA0LCAyMTksIDUxLCA0NiwgCisgICAgNCwgMjQ2LCA5LCA0NiwgNCwgMjI1LCAxNDMsIDQ2LCA0LCAyMTcsIDg2LCA0NiwgNCwgMjE1LCAyMTQsIDQ2LCA0LCAyMDUsIAorICAgIDkzLCA0NiwgNCwgMjA1LCA3MiwgNDYsIDQsIDI0OCwgMTQ4LCA0NiwgNCwgMjMyLCAxODIsIDQ2LCA0LCAyMjQsIDE3MywgCisgICAgNDYsIDQsIDIwNiwgNTIsIDQ2LCA0LCAyMzEsIDIyNCwgNDYsIDQsIDIyNSwgNTEsIDQ2LCA0LCAyMjUsIDQ3LCA0NiwgNCwgCisgICAgMjQwLCAxNzAsIDQ2LCA0LCAyNDAsIDE1NywgNDYsIDQsIDIyNywgMTE5LCA0NiwgNCwgMjI1LCAxMTAsIDQ2LCA0LCAyMjMsIAorICAgIDEzNCwgNDYsIDQsIDIyNSwgNzksIDQ2LCA0LCAyMzAsIDE5LCA0NiwgMjQ3LCAxNTUsIDQ2LCAyNDEsIDgyLCAyMTMsIDI1MSwgCisgICAgNDYsIDIxOSwgMTk2LCA4MywgNDYsIDQsIDIyNSwgMTI2LCAyNDIsIDczLCA0NiwgNCwgMjI1LCAxMjYsIDE3MiwgNDYsIDQsIAorICAgIDIyNSwgMTI2LCAyMTQsIDE3NCwgNDYsIDE2LCAyNDIsIDE3LCA0NiwgMTYsIDIzMSwgMjE5LCA0NiwgMTYsIDIxMSwgMTcxLCAKKyAgICA0NiwgMTYsIDIyNCwgMjA1LCA0NiwgMTYsIDI1MCwgMTM1LCA0NiwgMTYsIDI0MiwgNzIsIDQ2LCAxNiwgMjEyLCAyMTUsIAorICAgIDQ2LCAxNiwgMjQ2LCA5OCwgNDYsIDE2LCAyNDUsIDI3LCA0NiwgMTYsIDIzMCwgMjIwLCA0NiwgMTYsIDIxMSwgMTA5LCA0NiwgCisgICAgMTYsIDI0NSwgNTAsIDQ2LCAxNiwgMjMyLCAxMTQsIDQ2LCAxOCwgMjA1LCA4NSwgNDYsIDE4LCAxMDIsIDQ2LCAxOCwgMTA1LCAKKyAgICA0NiwgMTgsIDE0MiwgNDYsIDE4LCAxMzksIDQ2LCAxOCwgMTY4LCA0NiwgMTgsIDE4NCwgNDYsIDE4LCAxOTUsIDQ2LCAxOCwgCisgICAgMTkzLCA0NiwgMTgsIDIwMCwgNDYsIDQsIDIyNSwgMTI2LCAxODUsIDQ2LCA0LCAyMjUsIDEyNiwgMjQ1LCA1MSwgMzQsIDYsIAorICAgIDEsIDIwNSwgODksIDM0LCA1LCAxLCAyMDUsIDg5LCAzNCwgNiwgMSwgMjQzLCAxOTEsIDM0LCA1LCAxLCAyNDMsIDE5MSwgCisgICAgMzQsIDYsIDEsIDIxOCwgMjI0LCAyNDMsIDE5MywgMzQsIDUsIDEsIDIxOCwgMjI0LCAyNDMsIDE5MywgMzQsIDYsIDEsIAorICAgIDIzMiwgMjQ5LCAzNCwgNSwgMSwgMjMyLCAyNDksIDM0LCA2LCAxLCAyNDUsIDY3LCAzNCwgNSwgMSwgMjQ1LCA2NywgMzQsIAorICAgIDYsIDEsIDIyNiwgMTU4LCAyMDksIDI0OSwgMzQsIDUsIDEsIDIyNiwgMTU4LCAyMDksIDI0OSwgMzQsIDYsIDEsIDI0OSwgCisgICAgMTEyLCAyMjIsIDE3MCwgMzQsIDUsIDEsIDI0OSwgMTEyLCAyMjIsIDE3MCwgMzQsIDYsIDEsIDIyNSwgODgsIDIwNiwgMzQsIAorICAgIDM0LCA1LCAxLCAyMjUsIDg4LCAyMDYsIDM0LCAzNCwgNiwgMSwgMjA2LCAzMSwgMiwgMjUwLCAxNzcsIDIwNiwgMzQsIDM0LCAKKyAgICA1LCAxLCAyMDYsIDMxLCAyLCAyNTAsIDE3NywgMjA2LCAzNCwgMzQsIDYsIDEsIDIzMiwgMjQ3LCAyMDYsIDY1LCAzNCwgNSwgCisgICAgMSwgMjMyLCAyNDcsIDIwNiwgNjUsIDM0LCA2LCAxLCAyMTgsIDIyNCwgMjA1LCAyMTMsIDM0LCA1LCAxLCAyMTgsIDIyNCwgCisgICAgMjA1LCAyMTMsIDM0LCA2LCAxLCAyMzIsIDI0NywgNjIsIDM0LCA1LCAxLCAyMzIsIDI0NywgNjIsIDM0LCA2LCAxLCAyNDcsIAorICAgIDE5MiwgMjI5LCAxODAsIDIwNSwgMTgzLCAzNCwgNSwgMSwgMjQ3LCAxOTIsIDIyOSwgMTgwLCAyMDUsIDE4MywgMzQsIDYsIAorICAgIDEsIDI0OSwgMTk0LCAyMDUsIDE4MywgMzQsIDUsIDEsIDI0OSwgMTk0LCAyMDUsIDE4MywgMzQsIDYsIDEsIDIzMiwgMjQ3LCAKKyAgICAyNDcsIDE5MiwgMjI5LCAxODAsIDIwNSwgMTgzLCAzNCwgNSwgMSwgMjMyLCAyNDcsIDI0NywgMTkyLCAyMjksIDE4MCwgCisgICAgMjA1LCAxODMsIDM0LCA2LCAxLCAyMDUsIDI0OSwgMzQsIDUsIDEsIDIwNSwgMjQ5LCAzNCwgNiwgMSwgMjE4LCAyMjQsIAorICAgIDIxMCwgMjM3LCAzNCwgNSwgMSwgMjE4LCAyMjQsIDIxMCwgMjM3LCAzNCwgNiwgMSwgMjE0LCAxODcsIDI0NiwgOSwgMzQsIAorICAgIDUsIDEsIDIxNCwgMTg3LCAyNDYsIDksIDM0LCA2LCAxLCAyMTQsIDE4NywgMjQzLCA2OCwgMzQsIDUsIDEsIDIxNCwgMTg3LCAKKyAgICAyNDMsIDY4LCAzNCwgNiwgMSwgMjE0LCAxODcsIDI0MywgNTAsIDM0LCA1LCAxLCAyMTQsIDE4NywgMjQzLCA1MCwgMzQsIDYsIAorICAgIDEsIDIyNiwgMTYyLCA3NiwgMzQsIDUsIDEsIDIyNiwgMTYyLCA3NiwgMzQsIDYsIDEsIDI0OSwgMjIxLCA3NiwgMzQsIDUsIAorICAgIDEsIDI0OSwgMjIxLCA3NiwgMzQsIDYsIDEsIDUwLCAyMjYsIDE2MiwgNzYsIDM0LCA1LCAxLCA1MCwgMjI2LCAxNjIsIDc2LCAKKyAgICAzNCwgMSwgMjI2LCA5NiwgNzYsIDM2LCAzNCwgMjA3LCAxMzEsIDM2LCAzNCwgMjEyLCA5OSwgMjI2LCAyMTMsIDUzLCAzNiwgCisgICAgMzQsIDIzOCwgMzAsIDIyNiwgMjEzLCA1MywgMzYsIDM0LCAyMTEsIDI0MywgMjI2LCAyMTMsIDUzLCAyMTQsIDIzMywgMjUxLCAKKyAgICAyMDksIDM2LCAzNCwgMSwgMjA5LCAyNDYsIDIzMywgMTI5LCAzNiwgMzQsIDEsIDc0LCAzNiwgMzQsIDEsIDIwNiwgMTEsIAorICAgIDM2LCAzNCwgMSwgNzEsIDM2LCAzNCwgMSwgMjM5LCA5NCwgNTMsIDM2LCAzNCwgMSwgMjA2LCAzMCwgMzYsIDM0LCAxLCAKKyAgICAyMTQsIDE4NywgNTMsIDM2LCAzNCwgMSwgMjIyLCAxNzAsIDM2LCAzNCwgMjMxLCAyMzYsIDM2LCAzNCwgMjIxLCAxODEsIAorICAgIDM0LCAyMzEsIDIzNiwgMzQsIDIyMSwgMTgxLCAzNCwgNiwgMSwgMjQzLCAyMDUsIDM0LCA1LCAxLCAyNDMsIDIwNSwgMzQsIAorICAgIDYsIDEsIDI0MywgMTgyLCAzNCwgNSwgMSwgMjQzLCAxODIsIDM0LCA2LCAxLCAyMDUsIDQ4LCAzNCwgNSwgMSwgMjA1LCA0OCwgCisgICAgMzQsIDYsIDEsIDI0OCwgMTY0LCAzNCwgNSwgMSwgMjQ4LCAxNjQsIDM0LCA2LCAxLCAyNDMsIDE3OSwgMzQsIDUsIDEsIAorICAgIDI0MywgMTc5LCAzNCwgNiwgMSwgMjEyLCAxMzIsIDIsIDIyNiwgMjQ3LCAxMDksIDM0LCA1LCAxLCAyMTIsIDEzMiwgMiwgCisgICAgMjI2LCAyNDcsIDEwOSwgMzQsIDYsIDEsIDIxMCwgMTI4LCAzNCwgNSwgMSwgMjEwLCAxMjgsIDM0LCA2LCAxLCAyMTAsIAorICAgIDIxMiwgMzQsIDUsIDEsIDIxMCwgMjEyLCAzNCwgNiwgMSwgMjEwLCAyMTcsIDM0LCA1LCAxLCAyMTAsIDIxNywgMzQsIDYsIAorICAgIDEsIDIxMiwgMTM3LCAzNCwgNSwgMSwgMjEyLCAxMzcsIDM0LCA2LCAxLCAyMzgsIDEzLCAzNCwgNSwgMSwgMjM4LCAxMywgCisgICAgMzQsIDYsIDEsIDIxNSwgOTUsIDM0LCA1LCAxLCAyMTUsIDk1LCAzNCwgNiwgMSwgNTAsIDc2LCAzNCwgNSwgMSwgNTAsIDc2LCAKKyAgICAzNCwgNiwgMSwgMjQ3LCA1NywgNzYsIDM0LCA1LCAxLCAyNDcsIDU3LCA3NiwgNjUsIDEsIDM0LCAyMzksIDk0LCA1MywgNjUsIAorICAgIDEsIDM0LCAyMTQsIDE4NywgNTMsIDM2LCAzNCwgMSwgMjMyLCAyNDcsIDc1LCAyMSwgMSwgNjIsIDIxLCAxLCAxNzIsIDIxLCAKKyAgICAxLCA3MSwgMjEsIDEsIDIzMCwgMjM2LCAyMSwgMSwgMjQzLCAxMDQsIDIxLCAxLCAyMTksIDI5LCAyMSwgMSwgMjEyLCAyMDAsIAorICAgIDIxLCAxLCA3NiwgMjEsIDEsIDIyMywgMTI1LCAyMSwgMSwgNzQsIDIxLCAxLCAyMzAsIDE0MSwgMjEsIDEsIDE3OSwgMjEsIAorICAgIDEsIDIxOCwgMTU0LCAyMSwgMSwgMjE4LCAyMDEsIDIxLCAxLCAyMzAsIDQ5LCAyMSwgMSwgMjI3LCAxMDYsIDIxLCAxLCAKKyAgICAyMTIsIDIxNSwgMjEsIDEsIDIyNSwgMTQ5LCAyMSwgMSwgMjI0LCAxNzgsIDIxLCAxLCAyMjksIDI4LCAyMSwgMSwgMjEzLCAKKyAgICAxMTksIDIxLCAxLCAyMjYsIDExNCwgMjEsIDEsIDIxNSwgMTc4LCAyMSwgMSwgMjE1LCA4MCwgMjEsIDEsIDIxNSwgMTg4LCAKKyAgICAyMSwgMSwgMjE2LCAyNCwgMjEsIDEsIDIzMCwgMTY1LCAyMSwgMSwgMjMxLCAxOTMsIDIxLCAxLCAyMjMsIDE4OCwgMjEsIDEsIAorICAgIDIyMywgMjE3LCAyMSwgMSwgMjI0LCAxNDksIDIxLCAxLCAyMDUsIDIyOSwgMjEsIDEsIDIxNSwgMTE2LCAyMSwgMSwgMjA1LCAKKyAgICAxODcsIDIxLCAxLCAxOTAsIDIxLCAxLCAyMjMsIDI1MSwgMjEsIDEsIDIzMSwgMTc5LCAyMSwgMSwgMjIxLCA5NywgMjEsIDEsIAorICAgIDIyNCwgMTcxLCAyMSwgMSwgMjIzLCAyMzIsIDIxLCAxLCAyMjAsIDc1LCAyMSwgMSwgMjA2LCAyMTMsIDIxLCAxLCAyMjEsIAorICAgIDE2NCwgMjEsIDEsIDI0MiwgMjEsIDIxLCAxLCAyMTgsIDUwLCAyMSwgMSwgMjI5LCA4MSwgMjEsIDEsIDIyNiwgMjU0LCAyMSwgCisgICAgMSwgMjI0LCAyMzAsIDIxLCAxLCAyMTgsIDIyNiwgMjEsIDEsIDIxOSwgOTUsIDIxLCAxLCAyMzEsIDIwMywgMjEsIDEsIAorICAgIDIyNSwgNSwgMjEsIDEsIDIyNSwgNTYsIDIxLCAxLCAyMjUsIDc3LCAyMSwgMSwgMjE1LCAxNTgsIDIxLCAxLCAyMjAsIDc5LCAKKyAgICAyMSwgMSwgMjQxLCA4OCwgMjEsIDEsIDI0MSwgMTU1LCAyMSwgMSwgMjA3LCA5NiwgMjEsIDEsIDE5OSwgMjEsIDEsIDIyOSwgCisgICAgMjM1LCAyMSwgMSwgMjIxLCA1MywgMjEsIDEsIDIyOSwgMTA3LCAyMSwgMSwgMjMxLCA1MywgMjEsIDEsIDIyNywgMTQzLCAKKyAgICAyMSwgMSwgMjE5LCAyLCAyMSwgMSwgMjI3LCA4MywgMjEsIDEsIDE4NSwgMjEsIDEsIDIxMSwgMjExLCAyMSwgMSwgMjMxLCAKKyAgICAxMjMsIDIxLCAxLCAyMjYsIDE4MSwgMjEsIDEsIDIyNywgMTUxLCAyMSwgMSwgMjEyLCA4MCwgMjEsIDEsIDIzMSwgMTUsIAorICAgIDIxLCAxLCAyMTIsIDk4LCAyMSwgMSwgMjIzLCAyMTksIDIxLCAxLCAyMTcsIDE1OSwgMjEsIDEsIDI0MiwgNjksIDIxLCAxLCAKKyAgICAyMzEsIDE3LCAyMSwgMSwgMjMxLCA0OCwgMjEsIDM2LCAxNDEsIDIzMSwgMjYsIDIxLCAzNiwgMTQxLCAyMTAsIDE2MSwgMjEsIAorICAgIDIyNCwgMTc3LCAyMSwgMjQxLCA4MiwgMjEzLCAyNTEsIDIxLCAyNDcsIDE2MiwgMjEsIDI0NywgMTU1LCAyMSwgMjE2LCA1MiwgCisgICAgMjEsIDIxOSwgMTk2LCA4MywgNjUsIDEsIDI0OCwgNDQsIDEzNSwgMjA2LCAxLCAyMjEsIDUsIDY1LCAxLCAyNDgsIDQ0LCAKKyAgICAxMzUsIDIwNiwgNzYsIDIyMSwgNSwgNjUsIDEsIDI0OCwgNDQsIDEzNSwgMjA2LCAxLCAyMTUsIDIzNiwgNjUsIDEsIDI0OCwgCisgICAgNDQsIDEzNSwgMjA2LCA3NiwgMjE1LCAyMzYsIDY1LCAxLCAyNDgsIDQ0LCAxMzUsIDIwNiwgMSwgMjE5LCAyMTQsIDY1LCAxLCAKKyAgICAyNDgsIDQ0LCAxMzUsIDIwNiwgNzYsIDIxOSwgMjE0LCA2NSwgMSwgMjQ4LCA0NCwgMTM1LCAyMDYsIDEsIDIxOCwgNTAsIAorICAgIDY1LCAxLCAyNDgsIDQ0LCAxMzUsIDIwNiwgNzYsIDIxOCwgNTAsIDY1LCAxLCAyNDIsIDE1NiwgMjQ0LCAyMSwgMTM1LCAKKyAgICAxMzQsIDY1LCAxLCAxMjcsIDI0NCwgMjEsIDEzNSwgMTM0LCA2NSwgMSwgMjI2LCAyNDksIDI0NCwgMjEsIDEzNSwgMTM0LCAKKyAgICA2NSwgMSwgMTE0LCAyNDQsIDIxLCAxMzUsIDEzNCwgNjUsIDEsIDI0MiwgMTU1LCAyNDQsIDIxLCAxMzUsIDEzNCwgNjUsIDEsIAorICAgIDI0MiwgMTU2LCAyNDQsIDIxLCAyMzAsIDM4LCAxMzUsIDEzNCwgNjUsIDEsIDEyNywgMjQ0LCAyMSwgMjMwLCAzOCwgMTM1LCAKKyAgICAxMzQsIDY1LCAxLCAyMjYsIDI0OSwgMjQ0LCAyMSwgMjMwLCAzOCwgMTM1LCAxMzQsIDY1LCAxLCAxMTQsIDI0NCwgMjEsIAorICAgIDIzMCwgMzgsIDEzNSwgMTM0LCA2NSwgMSwgMjQyLCAxNTUsIDI0NCwgMjEsIDIzMCwgMzgsIDEzNSwgMTM0LCA2NSwgMSwgCisgICAgMjQyLCAxNTYsIDIzMCwgMzgsIDEzNSwgMTM0LCA2NSwgMSwgMTI3LCAyMzAsIDM4LCAxMzUsIDEzNCwgNjUsIDEsIDIyNiwgCisgICAgMjQ5LCAyMzAsIDM4LCAxMzUsIDEzNCwgNjUsIDEsIDExNCwgMjMwLCAzOCwgMTM1LCAxMzQsIDY1LCAxLCAyNDIsIDE1NSwgCisgICAgMjMwLCAzOCwgMTM1LCAxMzQsIDY1LCAxLCA2NywgNzksIDEzNCwgNjUsIDEsIDY3LCAyMTQsIDIzNSwgNjUsIDEsIDY3LCAKKyAgICAxOTQsIDEzNCwgNjUsIDEsIDIyOSwgOTIsIDQ4LCAyNDcsIDkyLCAyNTIsIDEwOCwgNjUsIDEsIDIxOSwgODEsIDEyMCwgNDUsIAorICAgIDY1LCAxLCAyMTksIDgxLCAxMzAsIDQ1LCA2NSwgMSwgMjE5LCA4MSwgMjQyLCAxNjgsIDgzLCA2NSwgMSwgMjE5LCA4MSwgCisgICAgMjMzLCAyLCAyNDIsIDE2OCwgODMsIDY1LCAxLCAxMTQsIDIzMywgMiwgMjQyLCAxNjgsIDgzLCA2NSwgMSwgMjEzLCAyMzMsIAorICAgIDIzLCAxMjcsIDIxMSwgMTE4LCA2NSwgMSwgMjEzLCAyMzMsIDIzLCAxMTQsIDIxMSwgMTE4LCA3LCA2LCAxLCAyNDMsIDk0LCAKKyAgICAyNTIsIDE3MiwgNywgNSwgMSwgMjQzLCA5NCwgMjUyLCAxNzIsIDcsIDYsIDEsIDI0MywgOTQsIDI1MiwgMjAwLCA3LCA1LCAKKyAgICAxLCAyNDMsIDk0LCAyNTIsIDIwMCwgNywgNiwgMSwgMjM5LCAzOSwgNywgNSwgMSwgMjM5LCAzOSwgNywgNiwgMSwgMjEwLCAKKyAgICA4NiwgNywgNSwgMSwgMjEwLCA4NiwgNywgNiwgMSwgMjExLCA1NSwgNywgNSwgMSwgMjExLCA1NSwgNywgNiwgMSwgMjQ3LCAKKyAgICAzNywgNywgNSwgMSwgMjQ3LCAzNywgNywgNiwgMSwgMjQ3LCAzOCwgMiwgMjQ3LCAxNTUsIDcsIDUsIDEsIDI0NywgMzgsIDIsIAorICAgIDI0NywgMTU1LCA3LCAxLCA1LCA2LCAyNDIsIDEzOSwgNywgMSwgNSwgNiwgMTgyLCA3LCA2LCAxLCAyNTMsIDE2NCwgNywgNSwgCisgICAgMSwgMjUzLCAxNjQsIDcsIDYsIDEsIDI1MiwgNzEsIDcsIDUsIDEsIDI1MiwgNzEsIDcsIDYsIDEsIDI1MSwgMTg0LCA3LCA1LCAKKyAgICAxLCAyNTEsIDE4NCwgNywgNiwgMSwgMjUxLCAxNjgsIDcsIDUsIDEsIDI1MSwgMTY4LCA3LCA2LCAxLCAyNTEsIDE2OSwgMiwgCisgICAgMTk0LCAxMzQsIDcsIDUsIDEsIDI1MSwgMTY5LCAyLCAxOTQsIDEzNCwgNywgNiwgMSwgMjUxLCAxNTksIDcsIDUsIDEsIAorICAgIDI1MSwgMTU5LCA3LCA2LCAxLCAyMTgsIDIyNCwgMjQ5LCAzNSwgMiwgMjQ1LCAyMywgNywgNSwgMSwgMjE4LCAyMjQsIDI0OSwgCisgICAgMzUsIDIsIDI0NSwgMjMsIDcsIDYsIDEsIDIzMiwgNzcsIDIsIDkxLCA3LCA1LCAxLCAyMzIsIDc3LCAyLCA5MSwgNywgNiwgCisgICAgMSwgMjMyLCA3NywgMiwgMjQ1LCAxNjMsIDkxLCA3LCA1LCAxLCAyMzIsIDc3LCAyLCAyNDUsIDE2MywgOTEsIDcsIDYsIDEsIAorICAgIDIzMiwgNzcsIDIsIDIxMywgMjI1LCAyMywgMjQ1LCAxNjMsIDkxLCA3LCA1LCAxLCAyMzIsIDc3LCAyLCAyMTMsIDIyNSwgCisgICAgMjMsIDI0NSwgMTYzLCA5MSwgNywgNiwgMSwgMjQ5LCAxMTEsIDE0OSwgNywgNSwgMSwgMjQ5LCAxMTEsIDE0OSwgNywgNiwgCisgICAgMSwgMjMwLCAxNTksIDIsIDEyNywgOTEsIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCAxMjcsIDkxLCA3LCA2LCAxLCAxNDgsIDIsIAorICAgIDE1MiwgMjEzLCAyMjUsIDIyMiwgODIsIDcsIDUsIDEsIDE0OCwgMiwgMTUyLCAyMTMsIDIyNSwgMjIyLCA4MiwgNywgNiwgMSwgCisgICAgMTQ4LCAyLCAyMjksIDExMSwgNywgNSwgMSwgMTQ4LCAyLCAyMjksIDExMSwgNywgNiwgMSwgMjIyLCAxNTIsIDcsIDUsIDEsIAorICAgIDIyMiwgMTUyLCA3LCA2LCAxLCAyMjIsIDY4LCAyLCAyMTMsIDIyNSwgMjExLCAyMzMsIDI0NSwgMjExLCA3LCA1LCAxLCAKKyAgICAyMjIsIDY4LCAyLCAyMTMsIDIyNSwgMjExLCAyMzMsIDI0NSwgMjExLCA3LCA2LCAxLCAyMjIsIDY4LCAyLCAyNDEsIDE3NCwgCisgICAgNywgNSwgMSwgMjIyLCA2OCwgMiwgMjQxLCAxNzQsIDcsIDYsIDEsIDIyMiwgNjgsIDIsIDIxNCwgMTAyLCAyMTIsIDE5MSwgCisgICAgNywgNSwgMSwgMjIyLCA2OCwgMiwgMjE0LCAxMDIsIDIxMiwgMTkxLCA3LCA2LCAxLCAyMjAsIDI4LCAyLCAyMTMsIDIyNSwgCisgICAgMjExLCAyMzMsIDI0NSwgMjExLCA3LCA1LCAxLCAyMjAsIDI4LCAyLCAyMTMsIDIyNSwgMjExLCAyMzMsIDI0NSwgMjExLCA3LCAKKyAgICA2LCAxLCAyMjAsIDI4LCAyLCAyNDUsIDE2MywgOTEsIDcsIDUsIDEsIDIyMCwgMjgsIDIsIDI0NSwgMTYzLCA5MSwgNywgNiwgCisgICAgMSwgMjE5LCAxNTAsIDIxOCwgOTYsIDcsIDUsIDEsIDIxOSwgMTUwLCAyMTgsIDk2LCA3LCA2LCAxLCAyMTgsIDM5LCAyMTgsIAorICAgIDk2LCA3LCA1LCAxLCAyMTgsIDM5LCAyMTgsIDk2LCA3LCA2LCAxLCAyMDksIDE0OSwgMiwgMjQ1LCAxNjMsIDkxLCA3LCA1LCAKKyAgICAxLCAyMDksIDE0OSwgMiwgMjQ1LCAxNjMsIDkxLCA3LCA2LCAxLCAyMDcsIDEzNywgNywgNSwgMSwgMjA3LCAxMzcsIDcsIDYsIAorICAgIDEsIDIwOCwgMTgxLCAyMDUsIDE1OSwgNywgNSwgMSwgMjA4LCAxODEsIDIwNSwgMTU5LCA3LCA2LCAxLCAyMTEsIDI0NywgMiwgCisgICAgOTEsIDcsIDUsIDEsIDIxMSwgMjQ3LCAyLCA5MSwgNywgNiwgMSwgMjExLCAyNDcsIDIsIDIxMywgMjI1LCAyMTEsIDIzMywgCisgICAgMjQ1LCAyMTEsIDcsIDUsIDEsIDIxMSwgMjQ3LCAyLCAyMTMsIDIyNSwgMjExLCAyMzMsIDI0NSwgMjExLCA3LCA2LCAxLCAKKyAgICAyMDksIDI5LCA3LCA1LCAxLCAyMDksIDI5LCA3LCA2LCAxLCAyNDIsIDIwMywgNywgNSwgMSwgMjQyLCAyMDMsIDcsIDYsIDEsIAorICAgIDIzMiwgMjM0LCA3LCA1LCAxLCAyMzIsIDIzNCwgNywgNiwgMSwgMjQ3LCAxNDAsIDcsIDUsIDEsIDI0NywgMTQwLCA2NSwgMSwgCisgICAgMjA5LCAxNzcsIDcsIDUsIDEsIDI0MywgMjI4LCA3LCA1LCAxLCAyMjksIDY1LCA3LCA1LCAxLCAyMjYsIDkwLCA3LCA1LCAxLCAKKyAgICAyMjMsIDE4MCwgNywgNSwgMSwgMjE4LCAzOCwgNywgMSwgNSwgNiwgMjE4LCAzOCwgNywgNSwgMSwgMjEwLCAxNTksIDcsIDUsIAorICAgIDEsIDIwOSwgMjQxLCA3LCA2LCAxLCAyMzMsIDIzLCAyNDYsIDI0MCwgNywgNSwgMSwgMjMzLCAyMywgMjQ2LCAyNDAsIDcsIAorICAgIDYsIDEsIDIzMywgMjMsIDI0MiwgMTM5LCA3LCA1LCAxLCAyMzMsIDIzLCAyNDIsIDEzOSwgNywgNiwgMSwgMjMzLCAyMywgCisgICAgMjQxLCA1NSwgNywgNiwgMSwgMjAxLCAyMzMsIDIzLCAyNDEsIDU1LCA3LCA1LCAxLCAyMDEsIDIzMywgMjMsIDI0MSwgNTUsIAorICAgIDcsIDYsIDEsIDIwMSwgMTQ5LCA3LCA1LCAxLCAyMDEsIDE0OSwgNywgNiwgMSwgMjMzLCAyMywgMTM3LCA3LCA1LCAxLCAKKyAgICAyMzMsIDIzLCAxMzcsIDcsIDYsIDEsIDIzMywgMjMsIDE4MiwgNywgNSwgMSwgMjMzLCAyMywgMTgyLCA3LCA2LCAxLCAyMzMsIAorICAgIDIzLCAyMTMsIDEwLCA3LCA1LCAxLCAyMzMsIDIzLCAyMTMsIDEwLCA2NSwgMSwgMTE0LCAyNDcsIDIyOCwgMjUzLCAyMSwgCisgICAgNjUsIDEsIDI0NywgMTYyLCA2NSwgMSwgMjE1LCAxNDQsIDI0MiwgMjQyLCA1MywgNywgNiwgMSwgMjE3LCAxNjMsIDcsIDUsIAorICAgIDEsIDIxNywgMTYzLCA3LCA2LCAxLCAyMDEsIDIzOSwgMTU1LCA3LCA1LCAxLCAyMzAsIDE1OSwgMiwgMjE4LCAyMzAsIDIzOCwgCisgICAgMTMwLCAyMywgMjUwLCAyNCwgNywgNiwgMSwgMjI2LCAzNCwgMiwgMjQ1LCAyMTEsIDcsIDUsIDEsIDIyNiwgMzQsIDIsIAorICAgIDI0NSwgMjExLCA3LCA2LCAxLCAyNDksIDM1LCAyLCAxMzQsIDcsIDUsIDEsIDI0OSwgMzUsIDIsIDEzNCwgNywgNSwgMSwgCisgICAgMjQ5LCAzNSwgMiwgMjIyLCAyNiwgMTA5LCA3LCA1LCAxLCAyMzksIDE1NiwgMiwgMjIyLCAyNiwgMTA5LCA3LCA2LCAxLCAKKyAgICA2MywgMiwgMjQxLCAxNzQsIDcsIDUsIDEsIDYzLCAyLCAyNDEsIDE3NCwgNywgNiwgMSwgMjQyLCAxNDAsIDIsIDkxLCA3LCAKKyAgICA1LCAxLCAyNDIsIDE0MCwgMiwgOTEsIDcsIDYsIDEsIDIwOCwgMTY2LCAyNTIsIDI0OCwgNywgNSwgMSwgMjA4LCAxNjYsIAorICAgIDI1MiwgMjQ4LCA3LCA2LCAxLCAyMDgsIDE2NiwgMjIyLCAyMDYsIDcsIDUsIDEsIDIwOCwgMTY2LCAyMjIsIDIwNiwgNywgNiwgCisgICAgMSwgMjA4LCAxNjYsIDIxMCwgMywgNywgNSwgMSwgMjA4LCAxNjYsIDIxMCwgMywgNywgNiwgMSwgMjQxLCA1NiwgMiwgMjIyLCAKKyAgICAyMjIsIDkxLCA3LCA1LCAxLCAyNDEsIDU2LCAyLCAyMjIsIDIyMiwgOTEsIDcsIDYsIDEsIDIzMiwgNzcsIDIsIDIyMiwgCisgICAgMjIyLCA5MSwgNywgNSwgMSwgMjMyLCA3NywgMiwgMjIyLCAyMjIsIDkxLCA3LCA2LCAxLCAyMjYsIDM0LCAyLCAyMjIsIAorICAgIDIyMiwgOTEsIDcsIDUsIDEsIDIyNiwgMzQsIDIsIDIyMiwgMjIyLCA5MSwgNywgNiwgMSwgMjE5LCAxNTAsIDIsIDIyMiwgCisgICAgMjIyLCA5MSwgNywgNSwgMSwgMjE5LCAxNTAsIDIsIDIyMiwgMjIyLCA5MSwgNywgNiwgMSwgMjE4LCAxLCAyLCAyMjIsIAorICAgIDIyMiwgOTEsIDcsIDUsIDEsIDIxOCwgMSwgMiwgMjIyLCAyMjIsIDkxLCA3LCA2LCAxLCAyMzksIDE1NiwgMiwgMTA5LCA3LCAKKyAgICA2LCAxLCAyMTgsIDIyNCwgMjIyLCAxNDIsIDc1LCA3LCA2LCAxLCAxMjEsIDI0MSwgNTUsIDcsIDYsIDEsIDIzMCwgMTU5LCAKKyAgICAyLCAyNTAsIDI0LCA3LCA2LCAxLCAyMDEsIDIzMiwgNzYsIDcsIDYsIDEsIDIwMSwgMjEzLCAxMCwgNywgMjQyLCAyNDcsIDEsIAorICAgIDIxNSwgNzMsIDc0LCA2NSwgMSwgNiwgMjM5LCAxNTYsIDIsIDkxLCA2NSwgMSwgNSwgMjgsIDIyMiwgMjA2LCA3LCAxLCA1LCAKKyAgICA2LCAyMDEsIDIyOSwgMjgsIDcsIDI0MiwgMjQ3LCAxLCAyMTgsIDIyNCwgMjQyLCAxMzksIDcsIDI0MiwgMjQ3LCAxLCAyMTgsIAorICAgIDIyNCwgMjIyLCA2NywgNywgMjQyLCAyNDcsIDEsIDIzMywgMiwgMjI5LCAyOCwgNywgMjQyLCAyNDcsIDEsIDIzNywgMjI1LCAKKyAgICAyMjksIDExNywgNywgMjQyLCAyNDcsIDEsIDI1MiwgMTksIDIyOSwgMjgsIDIxMywgODksIDIyNSwgMjIwLCAxLCA2MiwgCisgICAgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDc0LCAyMTMsIDg5LCAyMjUsIDIyMCwgMywgMjQzLCAyMDcsIDIxMywgODksIDIyNSwgCisgICAgMjIwLCAxLCA3MSwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDc1LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgNzYsIDIxMywgODksIAorICAgIDIyNSwgMjIwLCAzLCAyMzksIDg4LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjMxLCA1MywgMjEzLCA4OSwgMjI1LCAyMjAsIAorICAgIDEsIDIzMSwgMTM4LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjQwLCAxOSwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDI0MCwgCisgICAgNzEsIDIxMywgODksIDIyNSwgMjIwLCAzLCAyNTIsIDczLCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjQ3LCAxNzQsIDIxMywgCisgICAgODksIDIyNSwgMjIwLCAxLCAyNDgsIDMyLCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjMyLCAxMjIsIDIxMywgODksIDIyNSwgCisgICAgMjIwLCAxLCAyMzIsIDE2NCwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDIxMCwgMTg1LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgCisgICAgMjEwLCAxOTEsIDIxMywgODksIDIyNSwgMjIwLCAxLCAyNDYsIDI0LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjQ2LCAzMywgCisgICAgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDEyNCwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDIxMSwgMjUzLCAyMTMsIDg5LCAyMjUsIAorICAgIDIyMCwgMSwgMjQ1LCA1MSwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDI0NSwgMTcyLCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgCisgICAgMjI0LCA2NywgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDIyMCwgMjExLCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjIxLCA2NiwgCisgICAgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDI0OSwgMTg0LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjQ5LCAyNDgsIDIxMywgODksIAorICAgIDIyNSwgMjIwLCAxLCAyMjYsIDE4MSwgMjEzLCA4OSwgMjI1LCAyMjAsIDEsIDIxOCwgMTI0LCAyMTMsIDg5LCAyMjUsIDIyMCwgCisgICAgMSwgMjI5LCAxNDQsIDIxMywgODksIDIyNSwgMjIwLCAxLCAyMTgsIDc1LCAyMTMsIDg5LCAyMjUsIDIyMCwgMSwgMjE0LCAKKyAgICAxOTMsIDIxMywgODksIDIyNSwgMjIwLCAxLCAyMzgsIDE0OSwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyLCAzLCA2MiwgMjEzLCAKKyAgICA4OSwgMjI1LCAyMjAsIDIyLCAzLCA3NCwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyLCAzLCA3MSwgMjEzLCA4OSwgMjI1LCAyMjAsIAorICAgIDIyLCAzLCA3NSwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyLCAzLCAyMjIsIDE1MiwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyMCwgCisgICAgMjA2LCAyMjcsIDE5MSwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyMCwgMjA2LCAyMjcsIDE5MCwgMjEzLCA4OSwgMjI1LCAyMjAsIAorICAgIDIyMCwgMjA2LCAyMjcsIDE4OSwgMjEzLCA4OSwgMjI1LCAyMjAsIDIyMCwgMjA2LCAyMjcsIDE4OCwgMTQzLCAyMzMsIDUxLCAKKyAgICAyNDEsIDExNiwgMTE5LCAyMTksIDIwNCwgMTQzLCAyMzMsIDUxLCAyNDEsIDExNiwgMTE5LCAyMzksIDEyMSwgMTQzLCAyMzMsIAorICAgIDUxLCAyNDEsIDExNiwgMTI5LCAyMTksIDIwMiwgMTQzLCAyMzMsIDUxLCAyNDEsIDExNiwgMTE5LCAyMTUsIDIsIDE0MywgCisgICAgMjMzLCA1MSwgMjQxLCAxMTYsIDExOSwgMjQzLCA4MywgMTQzLCAyMzMsIDUxLCAyNDEsIDExNiwgMTI5LCAyMTUsIDEsIAorICAgIDE0MywgMjMzLCA1MSwgMjE5LCAyMDUsIDgzLCAxNDMsIDIzMywgNTEsIDIyMCwgMjM4LCA4MywgMTQzLCAyMzMsIDUxLCAKKyAgICAyMTgsIDI3LCA4MywgMTQzLCAyMzMsIDUxLCAyMTksIDIwNiwgODMsIDIyMSwgODksIDEsIDE3MiwgMjIxLCA4OSwgMSwgCisgICAgMjMxLCAxNjcsIDIyMSwgODksIDEsIDI0MCwgMjQ0LCAyMjEsIDg5LCAxLCAyMjUsIDc3LCAyMjEsIDg5LCAxLCAyNDksIDEsIAorICAgIDIyMSwgODksIDEsIDI0OCwgMTEwLCAyMjEsIDg5LCAxLCAyMzIsIDIwMCwgMjIxLCA4OSwgMSwgMjIzLCAxNDQsIDIyMSwgCisgICAgODksIDEsIDIxMiwgMjE5LCAyMjEsIDg5LCAxLCAyMTIsIDU2LCAyMjEsIDg5LCAxLCAyNDYsIDE0NSwgMjIxLCA4OSwgMSwgCisgICAgMTk5LCAyMjEsIDg5LCAxLCAxNzksIDIyMSwgODksIDEsIDIyMSwgOTMsIDIyMSwgODksIDEsIDI1MCwgMTgzLCAyMjEsIDg5LCAKKyAgICAxLCAxODUsIDIyMSwgODksIDEsIDIxMCwgMjQzLCAyMjEsIDg5LCAxLCAyMTAsIDIzMywgMjIxLCA4OSwgMSwgMjQzLCAxOTYsIAorICAgIDIyMSwgODksIDEsIDIwNywgOTYsIDIyMSwgODksIDEsIDIwNSwgODEsIDIyMSwgODksIDEsIDIwNSwgMTE2LCAyMjEsIDg5LCAKKyAgICAxLCA1LCA2MiwgMjIxLCA4OSwgMSwgMTkwLCAyMjEsIDg5LCAxLCAyMTksIDExMywgMjIxLCA4OSwgMSwgMjMwLCAxNDEsIAorICAgIDIyMSwgODksIDEsIDIxNiwgMiwgMjIxLCA4OSwgMSwgMjE3LCAxOTksIDIyMSwgODksIDEsIDE1NSwgMjIxLCA4OSwgMSwgCisgICAgNjIsIDIyMSwgODksIDEsIDc0LCAyMjEsIDg5LCAxLCA3MSwgMjIxLCA4OSwgMSwgNzUsIDIyMSwgODksIDEsIDc2LCAyMjEsIAorICAgIDg5LCAxLCAyMjAsIDE5LCAyMjEsIDg5LCAxLCAyMDYsIDE4MSwgMjIxLCA4OSwgMSwgMjQyLCA3MywgMjIxLCA4OSwgMSwgCisgICAgMjQwLCAxMzUsIDIyMSwgODksIDEsIDI0MywgMTA0LCAyMjEsIDg5LCAyMTMsIDE5MSwgMSwgMjA3LCA5NiwgMjIxLCA4OSwgCisgICAgMjEzLCAxOTEsIDEsIDE5MCwgMjIxLCA4OSwgMSwgMjEwLCAyMDgsIDIyMSwgODksIDEsIDIxMCwgMTk2LCAyMjEsIDg5LCAxLCAKKyAgICAyNDYsIDU0LCAyMjEsIDg5LCAxLCAyMjQsIDEwMywgMjIxLCA4OSwgMSwgMjUyLCAxNDEsIDE5MCwgMjIxLCA4OSwgMSwgCisgICAgMjA4LCAxNjksIDIxNiwgMiwgMjIxLCA4OSwgMSwgMjA4LCAxNzAsIDE1NSwgMjIxLCA4OSwgMSwgMjUxLCAyMTYsIDI0MiwgCisgICAgNzMsIDIyMSwgODksIDIxMywgMTkxLCAxLCAyMTksIDExMywgMjIxLCA4OSwgMjEzLCAxNDEsIDEsIDIxOSwgMTEzLCAyMjEsIAorICAgIDg5LCAxLCAyNDgsIDIxNywgMjIxLCA4OSwgMjE1LCA0MSwgMjM5LCA2OSwgODMsIDIyMSwgODksIDUwLCAyMzksIDY5LCA4MywgCisgICAgMjIxLCA4OSwgMTQxLCAyMTUsIDI1MSwgMjIxLCA4OSwgMTQxLCA1MCwgMjE1LCAyNTEsIDIxNywgMTIzLCAzLCAyNTIsIDczLCAKKyAgICAyMTcsIDEyMywgMywgMjA4LCAxODMsIDIxNywgMTIzLCAxLCA2MiwgMjE3LCAxMjMsIDEsIDI1MywgMTY0LCAyMTcsIDEyMywgCisgICAgMSwgNzQsIDIxNywgMTIzLCAxLCAyMzMsIDEwMiwgMjE3LCAxMjMsIDEsIDcxLCAyMTcsIDEyMywgMSwgMjA5LCAxNjIsIAorICAgIDIxNywgMTIzLCAxLCAxMTUsIDEzNywgMjE3LCAxMjMsIDEsIDExNSwgMjE4LCA5MCwgMjE3LCAxMjMsIDEsIDExNSwgMTQ5LCAKKyAgICAyMTcsIDEyMywgMSwgMTE1LCAyMjksIDE3MywgMjE3LCAxMjMsIDEsIDc1LCAyMTcsIDEyMywgMSwgMjQzLCAxMDQsIDIxNywgCisgICAgMTIzLCAxLCAyNTIsIDIwNSwgMjE3LCAxMjMsIDEsIDc2LCAyMTcsIDEyMywgMSwgMjIyLCAxNTIsIDIxNywgMTIzLCAxLCAKKyAgICAyNTEsIDE4NCwgMjE3LCAxMjMsIDEsIDE3MiwgMjE3LCAxMjMsIDEsIDIzMSwgMTY3LCAyMTcsIDEyMywgMSwgMjQwLCAyNDQsIAorICAgIDIxNywgMTIzLCAxLCAyNDAsIDk5LCAyMTcsIDEyMywgMSwgMjI1LCA3NywgMjE3LCAxMjMsIDEsIDI0OSwgMSwgMjE3LCAKKyAgICAxMjMsIDEsIDI0OCwgMTEwLCAyMTcsIDEyMywgMSwgMjMyLCAyMDAsIDIxNywgMTIzLCAxLCAyMzIsIDE3MCwgMjE3LCAxMjMsIAorICAgIDEsIDIyMywgMTQ0LCAyMTcsIDEyMywgMSwgMjEwLCAyMDgsIDIxNywgMTIzLCAxLCAyMTAsIDE5NiwgMjE3LCAxMjMsIDEsIAorICAgIDI0NiwgNTQsIDIxNywgMTIzLCAxLCAyNDYsIDM4LCAyMTcsIDEyMywgMSwgMjI0LCAxMDMsIDIxNywgMTIzLCAxLCAyMTIsIAorICAgIDIxOSwgMjE3LCAxMjMsIDEsIDIxMiwgNTYsIDIxNywgMTIzLCAxLCAyNDYsIDE0NSwgMjE3LCAxMjMsIDEsIDI0NSwgMTkyLCAKKyAgICAyMTcsIDEyMywgMSwgMTk5LCAyMTcsIDEyMywgMSwgMTc5LCAyMTcsIDEyMywgMSwgMjIxLCA5MywgMjE3LCAxMjMsIDEsIAorICAgIDI1MCwgMTgzLCAyMTcsIDEyMywgMSwgMjUwLCAwLCAyMTcsIDEyMywgMSwgMTg1LCAyMTcsIDEyMywgMSwgMTkwLCAyMTcsIAorICAgIDEyMywgMSwgMjE5LCAxMTMsIDIxNywgMTIzLCAxLCAyMzAsIDE0MSwgMjE3LCAxMjMsIDEsIDIwOSwgNzAsIDIxNywgMTIzLCAKKyAgICAxLCAyMTYsIDIsIDIxNywgMTIzLCAxLCAyMTQsIDk2LCAyMTcsIDEyMywgMSwgMjE3LCAxOTksIDIxNywgMTIzLCAxLCAxNTUsIAorICAgIDIxNywgMTIzLCAxLCAyMjksIDE3MiwgMjE3LCAxMjMsIDEwNywgMywgMjM5LCAxMzksIDIxNywgMTIzLCAyMiwgMywgMjUzLCAKKyAgICAxNjQsIDIxNywgMTIzLCAyMiwgMywgNzQsIDIxNywgMTIzLCAyMiwgMywgMjMzLCAxMDIsIDIxNywgMTIzLCAyMiwgMywgNzEsIAorICAgIDIxNywgMTIzLCAyMiwgMywgMjA5LCAxNjIsIDIxNywgMTIzLCAyMiwgMywgMTE1LCAxMzcsIDIxNywgMTIzLCAyMiwgMywgCisgICAgMTE1LCAyMTgsIDkwLCAyMTcsIDEyMywgMjIsIDMsIDExNSwgMTQ5LCAyMTcsIDEyMywgMjIsIDMsIDExNSwgMjI5LCAxNzMsIAorICAgIDIxNywgMTIzLCAyMiwgMywgNzUsIDIxNywgMTIzLCAyMiwgMywgMjQzLCAxMDQsIDIxNywgMTIzLCAyMiwgMywgMjUyLCAKKyAgICAyMDUsIDIxNywgMTIzLCAyMiwgMywgNzYsIDIxNywgMTIzLCAyMiwgMywgMjIyLCAxNTIsIDIxNywgMTIzLCAyMiwgMywgCisgICAgMjUxLCAxODQsIDIxNywgMTIzLCAzLCAyMDgsIDE4OCwgMjE3LCAxMjMsIDI0NiwgMTAwLCAyMTcsIDEyMywgNTAsIDI0NiwgCisgICAgMTAwLCAyMTcsIDEyMywgMTgsIDIwNSwgODUsIDIxNywgMTIzLCAxOCwgMTAyLCAyMTcsIDEyMywgMTgsIDEwNSwgMjE3LCAKKyAgICAxMjMsIDE4LCAxNDIsIDIxNywgMTIzLCAxOCwgMTM5LCAyMTcsIDEyMywgMTgsIDE2OCwgMjE3LCAxMjMsIDE4LCAxODQsIAorICAgIDIxNywgMTIzLCAxOCwgMTk1LCAyMTcsIDEyMywgMTgsIDE5MywgMjE3LCAxMjMsIDE4LCAyMDAsIDM2LCA4OSwgMTgsIDIwNSwgCisgICAgODUsIDM2LCA4OSwgMTgsIDEwMiwgMzYsIDg5LCAxOCwgMTA1LCAzNiwgODksIDE4LCAxNDIsIDM2LCA4OSwgMTgsIDEzOSwgCisgICAgMzYsIDg5LCAxOCwgMTY4LCAzNiwgODksIDE4LCAxODQsIDM2LCA4OSwgMTgsIDE5NSwgMzYsIDg5LCAxOCwgMTkzLCAzNiwgCisgICAgODksIDE4LCAyMDAsIDM2LCA4OSwgMSwgNjIsIDM2LCA4OSwgMSwgNzEsIDM2LCA4OSwgMSwgMTcyLCAzNiwgODksIDEsIAorICAgIDE5OSwgMzYsIDg5LCAxLCAxNzksIDM2LCA4OSwgMSwgMjE5LCAxMTMsIDM2LCA4OSwgMSwgMjA4LCAyMTQsIDM2LCA4OSwgMywgCisgICAgMjUxLCAxNjcsIDg5LCAzLCAyMTQsIDE1MiwgMjQ4LCAyMTcsIDg5LCAzLCAyNDgsIDIxOCwgMjA4LCAxODgsIDg5LCAzLCAKKyAgICA1MCwgMjQ4LCAyMTgsIDIwOCwgMTg4LCA4OSwgMywgMjQ4LCAyMTgsIDEwNSwgODksIDMsIDI0OCwgMjE4LCAxNDIsIDg5LCAKKyAgICAzLCAyNDgsIDIxOCwgMjUxLCAxNjcsIDg5LCAzLCAyMjAsIDU1LCA4OSwgMjQwLCAyMDgsIDI0MSwgMjMyLCA4OSwgMjQ4LCAKKyAgICAxOTksIDg5LCAyMzksIDYzLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDE4LCAyMDUsIDg1LCAyMzEsIDIzMCwgMjI5LCAyMzYsIAorICAgIDE4LCAxMDIsIDIzMSwgMjMwLCAyMjksIDIzNiwgMTgsIDEwNSwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxOCwgMTQyLCAyMzEsIAorICAgIDIzMCwgMjI5LCAyMzYsIDE4LCAxMzksIDIzMSwgMjMwLCAyMjksIDIzNiwgMTgsIDE2OCwgMjMxLCAyMzAsIDIyOSwgMjM2LCAKKyAgICAxOCwgMTg0LCAyMzEsIDIzMCwgMjI5LCAyMzYsIDE4LCAxOTUsIDIzMSwgMjMwLCAyMjksIDIzNiwgMTgsIDE5MywgMjMxLCAKKyAgICAyMzAsIDIyOSwgMjM2LCAxOCwgMjAwLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEsIDE3MiwgMjMxLCAyMzAsIDIyOSwgMjM2LCAKKyAgICAxLCAyMzEsIDE2NywgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAyNDAsIDI0NCwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAyMjUsIAorICAgIDc3LCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEsIDIxNywgMTk5LCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEsIDIxNiwgMiwgMjMxLCAKKyAgICAyMzAsIDIyOSwgMjM2LCAxLCAyMDUsIDExNiwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAyMjMsIDE0NCwgMjMxLCAyMzAsIAorICAgIDIyOSwgMjM2LCAxLCAyMTIsIDIxOSwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAyMzgsIDQ2LCAyMzEsIDIzMCwgMjI5LCAKKyAgICAyMzYsIDEsIDE5OSwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAxNzksIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgMjIxLCA5MywgCisgICAgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAxODUsIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgMjQ2LCAxNDUsIDIzMSwgMjMwLCAKKyAgICAyMjksIDIzNiwgMSwgMjUwLCAxODMsIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgMjE5LCAxMTMsIDIzMSwgMjMwLCAyMjksIAorICAgIDIzNiwgMSwgMTkwLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEsIDIzMCwgMTQxLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEsIDIwNywgCisgICAgOTYsIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgMjEyLCA1NiwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAxNTUsIDIzMSwgMjMwLCAKKyAgICAyMjksIDIzNiwgMSwgMjA5LCA3MCwgMjMxLCAyMzAsIDIyOSwgMjM2LCAxLCAyNDksIDEsIDIzMSwgMjMwLCAyMjksIDIzNiwgCisgICAgMSwgNjIsIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgMjIyLCAyMDYsIDIzMSwgMjMwLCAyMjksIDIzNiwgMSwgNzQsIDIzMSwgCisgICAgMjMwLCAyMjksIDIzNiwgMSwgMjIyLCAxNTIsIDIzMSwgMjMwLCAyMjksIDIzNiwgMjIsIDIxMCwgMywgMjMxLCAyMzAsIAorICAgIDIyOSwgMjM2LCAyMiwgNzUsIDIzMSwgMjMwLCAyMjksIDIzNiwgMjIsIDcxLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDIyLCAKKyAgICAyNDMsIDEwNCwgMjMxLCAyMzAsIDIyOSwgMjM2LCAyMiwgNzYsIDIzMSwgMjMwLCAyMjksIDIzNiwgMTM1LCAyMjAsIDIyNiwgCisgICAgMjMxLCAyMzAsIDIyOSwgMjM2LCAxMzUsIDI0OCwgMjMzLCAyMzEsIDIzMCwgMjI5LCAyMzYsIDEzNSwgMjQ4LCAyMzQsIAorICAgIDIyMCwgMjI2LCAyMzEsIDIzMCwgMjI5LCAyMzYsIDMsIDI0NywgMywgMjMxLCAyMzAsIDIyOSwgMjM2LCAzLCAyMTUsIDg4LCAKKyAgICAyMTksIDEzLCAxLCAxNzIsIDIxOSwgMTMsIDEsIDI0MCwgMjQ0LCAyMTksIDEzLCAxLCAyMjUsIDc3LCAyMTksIDEzLCAxLCAKKyAgICAyMTIsIDIxOSwgMjE5LCAxMywgMSwgMjQ2LCAxNDUsIDIxOSwgMTMsIDEsIDE5OSwgMjE5LCAxMywgMSwgMTc5LCAyMTksIAorICAgIDEzLCAxLCAyNTAsIDE4MywgMjE5LCAxMywgMSwgMTg1LCAyMTksIDEzLCAxLCAyNDksIDEsIDIxOSwgMTMsIDEsIDIzMiwgCisgICAgMjAwLCAyMTksIDEzLCAxLCAyMjMsIDE0NCwgMjE5LCAxMywgMSwgMjE3LCAxOTksIDIxOSwgMTMsIDEsIDIxOSwgMTEzLCAKKyAgICAyMTksIDEzLCAxLCAyMzAsIDE0MSwgMjE5LCAxMywgMSwgMTkwLCAyMTksIDEzLCAxLCAyMDcsIDk2LCAyMTksIDEzLCAxLCAKKyAgICAxNTUsIDIxOSwgMTMsIDEsIDIyNywgMTUzLCAyMTksIDEzLCAxLCAyMjUsIDU2LCAyMTksIDEzLCAxLCAyMjUsIDE1MSwgCisgICAgMjE5LCAxMywgMSwgMjIzLCAxMTEsIDIxOSwgMTMsIDEsIDYyLCAyMTksIDEzLCAyMiwgMywgNzQsIDIxOSwgMTMsIDIyLCAzLCAKKyAgICA3MSwgMjE5LCAxMywgMjIsIDMsIDc1LCAyMTksIDEzLCAyMiwgMywgMjUyLCAyMDUsIDIxOSwgMTMsIDIyLCAzLCA3NiwgCisgICAgMjE5LCAxMywgMjIsIDMsIDI1MSwgMTg0LCAyMTksIDEzLCAyMiwgMywgMjQyLCAxOTIsIDIxOSwgMTMsIDIyLCAzLCAyNDMsIAorICAgIDEzMCwgMjE5LCAxMywgMTA3LCAzLCAyMjUsIDc5LCAyMTksIDEzLCAxMDcsIDMsIDIyNiwgMzMsIDIxOSwgMTMsIDEwNywgMywgCisgICAgMTM3LCAyMTksIDEzLCAxMDcsIDMsIDIzOSwgMTU1LCAyMTksIDEzLCAyMDgsIDE4OCwgMjE5LCAxMywgMjE3LCA3NywgODMsIAorICAgIDI1LCAxMTMsIDIxMSwgMTg5LCAyNSwgMTEzLCAyMTEsIDE4OCwgMjUsIDExMywgMjExLCAxODYsIDI1LCAxMTMsIDIxMSwgCisgICAgMTkxLCAyNSwgMTEzLCAyMTgsIDE5MywgMjUsIDExMywgMjE4LCAxNzcsIDI1LCAxMTMsIDIxOCwgMTcyLCAyNSwgMTEzLCAKKyAgICAyMTgsIDE3NCwgMjUsIDExMywgMjE4LCAxOTAsIDI1LCAxMTMsIDIxOCwgMTgzLCAyNSwgMTEzLCAyMTgsIDE3NiwgMjUsIAorICAgIDExMywgMjE4LCAxOTUsIDI1LCAxMTMsIDIxOCwgMTc4LCAyNSwgMTEzLCAyMTgsIDE5NywgMjUsIDExMywgMjE4LCAxOTQsIAorICAgIDI1LCAxMTMsIDIyNiwgMjM2LCAyNSwgMTEzLCAyMjYsIDIyNywgMjUsIDExMywgMjI2LCAyMzAsIDI1LCAxMTMsIDIyMSwgCisgICAgMjQsIDI1LCAxMTMsIDIyMSwgMzUsIDI1LCAxMTMsIDIyMSwgMzYsIDI1LCAxMTMsIDIxNCwgODAsIDI1LCAxMTMsIDIzMywgCisgICAgMTE1LCAyNSwgMTEzLCAyMzMsIDEyMiwgMjUsIDExMywgMjE0LCA5MSwgMjUsIDExMywgMjE0LCA3OCwgMjUsIDExMywgMjIxLCAKKyAgICA3NSwgMjUsIDExMywgMjM4LCAyNTQsIDI1LCAxMTMsIDIxNCwgNzUsIDE3NiwgMywgMjIxLCAyNDIsIDE3NiwgMywgMjQ4LCAKKyAgICAxNDUsIDE3NiwgMywgMjMwLCA2NiwgMTc2LCAzLCAyMDcsIDEzLCAxNzYsIDEsIDYyLCAxNzYsIDEsIDIzNywgMjI1LCAyMzEsIAorICAgIDIzNCwgMTc2LCAxLCA3NCwgMTc2LCAxLCAyMzMsIDEwMiwgMTc2LCAxLCA3MSwgMTc2LCAxLCAyMjIsIDUyLCAyNDgsIDExNiwgCisgICAgMTc2LCAxLCAyMjUsIDc4LCAyMzAsIDI1LCAxNzYsIDEsIDIyNSwgNzgsIDIzMCwgMjYsIDIxOSwgNjYsIDE3NiwgMSwgNzUsIAorICAgIDE3NiwgMSwgMjUyLCAyMDUsIDE3NiwgMSwgNzYsIDE3NiwgMSwgMTcyLCAxNzYsIDEsIDIzMiwgNjYsIDIxNywgMTM1LCAKKyAgICAxNzYsIDEsIDIzMiwgNjYsIDIyNiwgNzUsIDE3NiwgMSwgMjQwLCAyNDQsIDE3NiwgMSwgMjQwLCAyNDUsIDIyNiwgNzUsIAorICAgIDE3NiwgMSwgMjI1LCA3NywgMTc2LCAxLCAyNDksIDEsIDE3NiwgMSwgMjQ5LCAyLCAyMjYsIDc1LCAxNzYsIDEsIDIzMiwgCisgICAgMjAwLCAxNzYsIDEsIDIyMywgMTQ1LCAyMjYsIDc1LCAxNzYsIDEsIDIzMiwgMjAxLCAyMjcsIDI0MywgMTc2LCAxLCAyMjMsIAorICAgIDE0NCwgMTc2LCAxLCAyMTAsIDIwOCwgMTc2LCAxLCAyMTAsIDIwOSwgMjI3LCAyNDMsIDE3NiwgMSwgMjQ2LCA1NCwgMTc2LCAKKyAgICAxLCAyNDYsIDU1LCAyMjcsIDI0MywgMTc2LCAxLCAyMjUsIDIzNywgMjI2LCA3NSwgMTc2LCAxLCAyMTIsIDIxOSwgMTc2LCAKKyAgICAxLCAyMTIsIDIyMCwgMjI2LCA3NSwgMTc2LCAxLCAyNDYsIDE0NSwgMTc2LCAxLCAyNDYsIDE0NiwgMjI3LCAyNDMsIDE3NiwgCisgICAgMSwgMTk5LCAxNzYsIDEsIDE3OSwgMTc2LCAxLCAyMjIsIDUyLCAyMjYsIDc1LCAxNzYsIDEsIDI1MCwgMTgzLCAxNzYsIDEsIAorICAgIDI1MCwgMTg0LCAyMjYsIDc1LCAxNzYsIDEsIDE4NSwgMTc2LCAxLCAxOTAsIDE3NiwgMSwgMjE5LCAxMTMsIDE3NiwgMSwgCisgICAgMjE5LCAxMTQsIDI1MiwgMjE0LCAxNzYsIDEsIDIzMCwgMTQxLCAxNzYsIDEsIDIwNywgOTYsIDE3NiwgMSwgMjE3LCAyMDAsIAorICAgIDIyNiwgNzUsIDE3NiwgMSwgMjE3LCAyMDAsIDIyNywgMjQzLCAxNzYsIDEsIDIxNywgMTk5LCAxNzYsIDEsIDE1NSwgMTc2LCAKKyAgICAzLCAyNDgsIDE0NiwgMjEyLCAxMDEsIDE3NiwgMjIsIDMsIDIxMiwgMTU4LCAxNzYsIDIyLCAzLCAyMTEsIDEyMywgMTc2LCAKKyAgICAyMiwgMywgMjA2LCAyMTAsIDE3NiwgMjIsIDMsIDIwNiwgMjExLCAyMjcsIDk0LCAxNzYsIDIyLCAzLCAyMTMsIDE2NCwgCisgICAgMTc2LCAyMiwgMywgMjEzLCAxNjUsIDIyNywgODIsIDE3NiwgMjIsIDMsIDIxMiwgMTc5LCAxNzYsIDIyLCAzLCAyNDUsIAorICAgIDEwMSwgMjI2LCA3NCwgMTc2LCAyMiwgMywgMjIxLCAxMzQsIDE3NiwgMTA3LCAzLCAyMzEsIDE5NiwgMTc2LCAxMDcsIDMsIAorICAgIDIyMSwgMTQ3LCAxNzYsIDEwNywgMywgMjQ4LCAyNDIsIDE3NiwgMjIxLCAyNTUsIDE3NiwgNDcsIDIxOCwgMjQ0LCAxNzYsIAorICAgIDQ4LCAyMTgsIDI0NCwgMTc2LCAyMjIsIDQxLCAyNTIsIDExNiwgMTc2LCAyMjIsIDQxLCAyMjgsIDUsIDE3NiwgMjIyLCA0MSwgCisgICAgMjI5LCA2OSwgMTc2LCAyMjIsIDQxLCAyMDcsIDcsIDE3NiwgMjIyLCA0MSwgMjIyLCAwLCAxNzYsIDIyMiwgNDEsIDIyOSwgCisgICAgMTk3LCAxNzYsIDIyMiwgNDEsIDIyOSwgNjMsIDE3NiwgMjIyLCA0MSwgMjUyLCAyNTUsIDE3NiwgMjIyLCA0MSwgMjUzLCAwLCAKKyAgICAyNTIsIDI1NSwgMTc2LCAyMjIsIDQxLCAyMjAsIDI0OSwgMTc2LCAyMDEsIDIyMiwgNDEsIDIyMCwgMjQ5LCAxNzYsIDIyMSwgCisgICAgMjUxLCAxNzYsIDE4LCAyMDUsIDg1LCAxNzYsIDE4LCAxMDIsIDE3NiwgMTgsIDEwNSwgMTc2LCAxOCwgMTQyLCAxNzYsIDE4LCAKKyAgICAxMzksIDE3NiwgMTgsIDE2OCwgMTc2LCAxOCwgMTg0LCAxNzYsIDE4LCAxOTUsIDE3NiwgMTgsIDE5MywgMTc2LCAxOCwgCisgICAgMjAwLCAxNzYsIDIyMiwgNDEsIDIxMSwgMTU4LCAyMTAsIDE1NywgMTc2LCAyMjIsIDQxLCAyMzIsIDIzMCwgNjYsIDEsIAorICAgIDIxNSwgMjM4LCAyNDAsIDk5LCA2NiwgMSwgMjE1LCAyMzgsIDI0OCwgMTEwLCA2NiwgMSwgMjE1LCAyMzgsIDIzMiwgMTcwLCAKKyAgICA2NiwgMSwgMjE1LCAyMzgsIDIyNCwgMTAzLCA2NiwgMSwgMjE1LCAyMzgsIDI1MCwgMCwgNjYsIDMsIDIxNSwgMjM4LCAyMTcsIAorICAgIDEyMSwgNjYsIDY1LCAxLCAyMTUsIDIzOCwgMjE5LCAzMCwgNjYsIDEsIDQxLCAyMzAsIDExMywgMjIzLCAxNDQsIDY2LCAxLCAKKyAgICA0MSwgMjMwLCAxMTMsIDI0MiwgNzMsIDY2LCAxLCA0MSwgMjMwLCAxMTMsIDI0MCwgMjQ0LCA2NiwgMSwgNDEsIDIzMCwgCisgICAgMTEzLCAyNDAsIDk5LCA2NiwgMSwgNDEsIDIzMCwgMTEzLCAyMzIsIDIwMCwgNjYsIDEsIDQxLCAyMzAsIDExMywgMjMyLCAKKyAgICAxNzAsIDY2LCAxLCA0MSwgMjMwLCAxMTMsIDI0NiwgNTQsIDY2LCAxLCA0MSwgMjMwLCAxMTMsIDI0NiwgMzgsIDY2LCAxLCAKKyAgICA0MSwgMjMwLCAxMTMsIDIyNCwgMTAzLCA2NiwgNDEsIDIzMCwgMTEzLCAxOCwgMjA1LCA4NSwgNjYsIDQxLCAyMzAsIDExMywgCisgICAgMTgsIDEwMiwgNjYsIDQxLCAyMzAsIDExMywgMTgsIDEwNSwgNjYsIDQxLCAyMzAsIDExMywgMTgsIDE0MiwgNjYsIDQxLCAKKyAgICAyMzAsIDExMywgMTgsIDEzOSwgNjYsIDQxLCAyMzAsIDExMywgMTgsIDE2OCwgNjYsIDQxLCAyMzAsIDExMywgMTgsIDE4NCwgCisgICAgNjYsIDQxLCAyMzAsIDExMywgMTgsIDE5NSwgNjYsIDQxLCAyMzAsIDExMywgMTgsIDE5MywgNjYsIDQxLCAyMzAsIDExMywgCisgICAgMTgsIDIwMCwgNjYsIDEsIDQxLCAyMzAsIDExMywgMjI5LCAxNzIsIDY2LCAxLCA0MSwgMjMwLCAxMTMsIDI0NiwgMTQ1LCAKKyAgICA2NiwgMSwgNDEsIDIzMCwgMTEzLCAyNDUsIDE5MiwgNjYsIDEsIDQxLCAyMzAsIDExMywgMjUwLCAxODMsIDY2LCAxLCA0MSwgCisgICAgMjMwLCAxMTMsIDI1MCwgMCwgMjAzLCAxLCA2MiwgMjAzLCAxLCA3NCwgMjAzLCAxLCA3MSwgMjAzLCAxLCA3NSwgMjAzLCAxLCAKKyAgICAyNTIsIDIwNSwgMjAzLCAxLCA3NiwgMjAzLCAxLCAxNzIsIDIwMywgMSwgMjMxLCAxNjcsIDIwMywgMSwgMjQwLCAyNDQsIAorICAgIDIwMywgMSwgMjQwLCA5OSwgMjAzLCAxLCAyMjQsIDI0MiwgMjAzLCAxLCAyMjUsIDc3LCAyMDMsIDEsIDI0OCwgMTEwLCAKKyAgICAyMDMsIDEsIDI0OCwgNjAsIDIwMywgMSwgMjMyLCAyMDAsIDIwMywgMSwgMjMyLCAxNzAsIDIwMywgMSwgMjI0LCAyMzIsIAorICAgIDIwMywgMSwgMjI0LCAyMzQsIDIwMywgMSwgMjI0LCAyMzMsIDIwMywgMSwgMjEyLCAyMTksIDIwMywgMSwgMjEyLCA1NiwgCisgICAgMjAzLCAxLCAyNDYsIDE0NSwgMjAzLCAxLCAyNDUsIDE5MiwgMjAzLCAxLCAyMjMsIDE4NiwgMjAzLCAxLCAxOTksIDIwMywgCisgICAgMSwgMjQ2LCA1NCwgMjAzLCAxLCAxNzksIDIwMywgMSwgMjIwLCAxNTcsIDIwMywgMSwgMjIxLCA5MywgMjAzLCAxLCAyNTAsIAorICAgIDE4MywgMjAzLCAxLCAyNTAsIDAsIDIwMywgMSwgMjI2LCAxMDYsIDIwMywgMSwgMTg1LCAyMDMsIDEsIDI1MCwgOTcsIDIwMywgCisgICAgMSwgMTkwLCAyMDMsIDEsIDIxOSwgMTEzLCAyMDMsIDEsIDIzMCwgMTQxLCAyMDMsIDEsIDIwOSwgNzAsIDIwMywgMSwgMjE0LCAKKyAgICA5NiwgMjAzLCAxLCAyMTcsIDE5OSwgMjAzLCAxLCAxNTUsIDIwMywgMjIsIDMsIDI1MywgMTY0LCAyMDMsIDIyLCAzLCA3NCwgCisgICAgMjAzLCAyMiwgMywgMjMzLCAxMDIsIDIwMywgMjIsIDMsIDI0MywgOTAsIDIwMywgMjIsIDMsIDcxLCAyMDMsIDIyLCAzLCAKKyAgICAyMjIsIDIwNiwgMjAzLCAyMiwgMywgNzYsIDIwMywgMjIsIDMsIDI1MiwgMjA1LCAyMDMsIDIyLCAzLCAyNTEsIDE4NCwgCisgICAgMjAzLCAyMiwgMywgMjEwLCAzLCAyMDMsIDEwNywgMywgMTkwLCAyMDMsIDEwNywgMywgMjE5LCAxMTMsIDIwMywgMTA3LCAzLCAKKyAgICAyMzAsIDE0MSwgMjAzLCAxMDcsIDMsIDIwNywgOTYsIDIwMywgMSwgNDIsIDIzMiwgNzYsIDIwMywgMSwgNDIsIDI0MSwgNTUsIAorICAgIDIwMywgMSwgNDIsIDIyNSwgNzksIDIwMywgMTA3LCAzLCA0MiwgMjI1LCA3OSwgMjAzLCAxLCA0MiwgMjQ4LCAxMTEsIDIwMywgCisgICAgMSwgNDIsIDIxMywgMTAsIDIwMywgMSwgNDIsIDIyNiwgMzMsIDIwMywgMSwgNDIsIDIyMiwgNjcsIDIwMywgMSwgNDIsIAorICAgIDIwNiwgMTIzLCAyMDMsIDEsIDQyLCAxMzcsIDIwMywgMSwgNDIsIDE0OSwgMjAzLCAxLCA0MiwgMjE0LCA5OSwgMjAzLCAKKyAgICAxMDcsIDMsIDQyLCAyMjksIDI4LCAyMDMsIDEwNywgMywgNDIsIDIzOSwgMTU1LCAyMDMsIDE4LCAyMDUsIDg1LCAyMDMsIAorICAgIDE4LCAxMDIsIDIwMywgMTgsIDEwNSwgMjAzLCAxOCwgMTQyLCAyMDMsIDE4LCAxMzksIDIwMywgMTgsIDE2OCwgMjAzLCAxOCwgCisgICAgMTg0LCAyMDMsIDE4LCAxOTUsIDIwMywgMTgsIDE5MywgMjAzLCAxOCwgMjAwLCAyMDMsIDIyMCwgNzIsIDIxNCwgMTI3LCAKKyAgICAyMDMsIDIyMCwgNzIsIDI0NiwgMTAwLCAyMDMsIDIyMCwgNzIsIDUwLCAyNDYsIDEwMCwgMjAzLCAyMjAsIDcyLCAyMTEsIAorICAgIDM2LCAyNDYsIDEwMCwgNjYsIDEsIDIzMSwgMTYwLCAyNDAsIDI0NCwgNjYsIDEsIDIzMSwgMTYwLCAyNDksIDEsIDY2LCAxLCAKKyAgICAyMzEsIDE2MCwgMjQ4LCAxMTAsIDY2LCAxLCAyMzEsIDE2MCwgMjMyLCAyMDAsIDY2LCAxLCAyMzEsIDE2MCwgMjMyLCAxNzAsIAorICAgIDY2LCAxLCAyMzEsIDE2MCwgMjIzLCAxNDQsIDY2LCAxLCAyMzEsIDE2MCwgMjEwLCAyMDgsIDY2LCAxLCAyMzEsIDE2MCwgCisgICAgMjEwLCAxOTYsIDY2LCAxLCAyMzEsIDE2MCwgMjQ2LCA1NCwgNjYsIDEsIDIzMSwgMTYwLCAyNDYsIDM4LCA2NiwgMSwgMjMxLCAKKyAgICAxNjAsIDI0NSwgMTkyLCA2NiwgMSwgMjMxLCAxNjAsIDE5OSwgNjYsIDEsIDIzMSwgMTYwLCAyMTcsIDE5OSwgNjYsIDEsIAorICAgIDIzMSwgMTYwLCAxNTUsIDY2LCAxLCAyMzEsIDE2MCwgMjM5LCAyMCwgNjYsIDEsIDIzMSwgMTYwLCAyNDIsIDczLCA2NiwgCisgICAgNjUsIDEsIDIzMSwgMTYwLCAyMTksIDMwLCA2NiwgMSwgMjMxLCAxNjAsIDIwNiwgMTgxLCA2NiwgMSwgMjMxLCAxNjAsIAorICAgIDIwNSwgMTE2LCA2NiwgMSwgMjMxLCAxNjAsIDIxOSwgMTEzLCA2NiwgMjI5LCAxMzMsIDIzMSwgMTYwLCAyMjIsIDIyNywgCisgICAgNjYsIDIyOSwgMTMzLCAyMzEsIDE2MCwgMjE5LCAyMjcsIDY2LCAyMjksIDEzMywgMjMxLCAxNjAsIDIzOCwgMjA0LCA2NiwgCisgICAgMTYsIDI1MiwgMTkzLCAyNDIsIDE2NywgNjYsIDE2LCAyNTIsIDE5MywgMTAyLCA2NiwgMTYsIDI1MiwgMTkzLCAxMDUsIDY2LCAKKyAgICAxLCAyNTIsIDE5MywgMjE5LCAxMTMsIDY2LCAzLCAyMjEsIDIzOCwgMjMyLCA0LCAyMTEsIDExOCwgNjYsIDMsIDQxLCAyMzAsIAorICAgIDExMywgMjExLCAxMTYsIDY2LCAzLCA0MSwgMjMwLCAxMTMsIDIxMSwgMTEzLCA2NiwgMSwgMjE1LCA5NiwgMjIyLCAyMywgCisgICAgMjQ4LCAxMTAsIDY2LCAxLCAyMTUsIDk2LCAyMjIsIDIzLCAyMTYsIDIsIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMzEsIDUzLCAKKyAgICA0MSwgMjA4LCAyMDQsIDEsIDEyNywgMjMxLCA1MywgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDIzMSwgMTM4LCA0MSwgMjA4LCAKKyAgICAyMDQsIDEsIDEyNywgMjMxLCAxMzgsIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMzEsIDE0NywgNDEsIDIwOCwgMjA0LCAxLCAKKyAgICAxMjcsIDIzMSwgMTQ3LCA0MSwgMjA4LCAyMDQsIDEsIDExNCwgMjQwLCAxOSwgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIDI0MCwgCisgICAgMTksIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMjUsIDIsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyMjUsIDIsIDQxLCAyMDgsIAorICAgIDIwNCwgMSwgMTE0LCAyNDcsIDE3NCwgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIDI0NywgMTc0LCA0MSwgMjA4LCAyMDQsIDEsIAorICAgIDExNCwgMjQ4LCAzMiwgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIDI0OCwgMzIsIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMTQsIAorICAgIDE5MywgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIDIxNCwgMTkzLCA0MSwgMjA4LCAyMDQsIDEsIDExNCwgMjIzLCAxMTAsIDQxLCAKKyAgICAyMDgsIDIwNCwgMSwgMTI3LCAyMjMsIDExMCwgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDI0NSwgNTEsIDQxLCAyMDgsIDIwNCwgCisgICAgMSwgMTI3LCAyNDUsIDUxLCA0MSwgMjA4LCAyMDQsIDEsIDExNCwgMTI0LCA0MSwgMjA4LCAyMDQsIDEsIDEyNywgMTI0LCAKKyAgICA0MSwgMjA4LCAyMDQsIDEsIDExNCwgMjExLCAyNTMsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyMTEsIDI1MywgNDEsIDIwOCwgCisgICAgMjA0LCAxLCAxMTQsIDIyNCwgNjcsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyMjQsIDY3LCA0MSwgMjA4LCAyMDQsIDEsIAorICAgIDExNCwgMjQ5LCAxODQsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyNDksIDE4NCwgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDIyMCwgCisgICAgMjExLCA0MSwgMjA4LCAyMDQsIDEsIDEyNywgMjIwLCAyMTEsIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMjEsIDY2LCA0MSwgCisgICAgMjA4LCAyMDQsIDEsIDEyNywgMjIxLCA2NiwgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDI0MSwgMTYyLCA0MSwgMjA4LCAyMDQsIAorICAgIDEsIDEyNywgMjQxLCAxNjIsIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCAyMjYsIDE4MSwgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIAorICAgIDIyNiwgMTgxLCA0MSwgMjA4LCAyMDQsIDEsIDExNCwgMjA1LCAyNDcsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyMDUsIDI0NywgCisgICAgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDIxOCwgMTI0LCA0MSwgMjA4LCAyMDQsIDEsIDEyNywgMjE4LCAxMjQsIDQxLCAyMDgsIAorICAgIDIwNCwgMSwgMTE0LCAyMjksIDE0NCwgNDEsIDIwOCwgMjA0LCAxLCAxMjcsIDIyOSwgMTQ0LCA0MSwgMjA4LCAyMDQsIDEsIAorICAgIDExNCwgMjA4LCAxNzMsIDQxLCAyMDgsIDIwNCwgMSwgMTI3LCAyMDgsIDE3MywgNDEsIDIwOCwgMjA0LCAxLCAxMTQsIDIzOCwgCisgICAgMTQ5LCA0MSwgMjA4LCAyMDQsIDEsIDEyNywgMjM4LCAxNDksIDQxLCAyMDgsIDIwNCwgMSwgMTE0LCA3NiwgNDEsIDIwOCwgCisgICAgMjA0LCAxLCAxMjcsIDc2LCA0MSwgMjA4LCAyMDQsIDIyNywgMjQwLCAyMzIsIDIzLCA0MSwgMjA4LCAyMDQsIDIyLCAyNTMsIAorICAgIDE2NCwgNDEsIDIwOCwgMjA0LCAyMiwgNzQsIDQxLCAyMDgsIDIwNCwgMjIsIDIxMCwgMywgNDEsIDIwOCwgMjA0LCAyMiwgCisgICAgNzEsIDQxLCAyMDgsIDIwNCwgMjIsIDc1LCA0MSwgMjA4LCAyMDQsIDIyLCA3NiwgNDEsIDIwOCwgMjA0LCAyMjcsIDI0MCwgCisgICAgMjMxLCAxNDEsIDQxLCAyMDgsIDIwNCwgMjIsIDIzNywgMTkwLCA0MSwgMjA4LCAyMDQsIDIyLCAyMTAsIDIsIDQxLCAyMDgsIAorICAgIDIwNCwgMjIsIDIxMCwgMTgsIDQxLCAyMDgsIDIwNCwgMjIsIDI1MSwgMTgyLCA0MSwgMjA4LCAyMDQsIDIyLCAyNTEsIDE1OSwgCisgICAgNDEsIDIwOCwgMjA0LCAyMiwgMjUyLCAxMjIsIDQxLCAyMDgsIDIwNCwgMjIsIDI1MiwgMTM2LCA0MSwgMjA4LCAyMDQsIAorICAgIDEzNSwgMjI3LCAyNDAsIDI0MywgNzUsIDQxLCAyMDgsIDIwNCwgMTM1LCAyMjcsIDI0MCwgMjIzLCAxODUsIDQxLCAyMDgsIAorICAgIDIwNCwgMTM1LCAyMjcsIDI0MCwgMjExLCAyNTMsIDQxLCAyMDgsIDIwNCwgMTM1LCAyMjcsIDI0MCwgMjE0LCAxNzYsIDQxLCAKKyAgICAyMDgsIDIwNCwgMTYsIDIzMSwgMzYsIDQxLCAyMDgsIDIwNCwgMTYsIDIyMywgMTg1LCA0MSwgMjA4LCAyMDQsIDE2LCAyMTcsIAorICAgIDE2MSwgNDEsIDIwOCwgMjA0LCAxNiwgMjM4LCAxNTAsIDIzOCwgMTQ1LCA0MSwgMjA4LCAyMDQsIDE2LCAyMzEsIDQ2LCAKKyAgICAyMzEsIDQ1LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDc1LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDc2LCAyMjcsIDEwMSwgCisgICAgMjI3LCAxNjAsIDEsIDI0OCwgMTEwLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIyMywgMTQ0LCAyMjcsIDEwMSwgMjI3LCAKKyAgICAxNjAsIDEsIDIxMCwgMjA4LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIxMCwgMTk2LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIAorICAgIDI0NiwgNTQsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjQ2LCAzOCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMjQsIDEwMywgCisgICAgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMTYsIDIsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjE0LCA5NiwgMjI3LCAxMDEsIAorICAgIDIyNywgMTYwLCAyMiwgMywgMjMzLCAxMDIsIDIyNywgMTAxLCAyMjcsIDE2MCwgMjIsIDMsIDIwOSwgMTYyLCAyMjcsIDEwMSwgCisgICAgMjI3LCAxNjAsIDIyLCAzLCAyNTMsIDEyOCwgMjI3LCAxMDEsIDIyNywgMTYwLCAyMiwgMywgMjUxLCAxODQsIDIyNywgMTAxLCAKKyAgICAyMjcsIDE2MCwgMjIsIDMsIDI1MywgMTIxLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDI0OCwgNzQsIDIyNywgMTAxLCAyMjcsIAorICAgIDE2MCwgMjUyLCAyMTAsIDIzMSwgMTMwLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDI1MiwgMTAyLCAyMjcsIDEwMSwgMjI3LCAKKyAgICAxNjAsIDQsIDIxOCwgMjQ5LCA4MywgMjI3LCAxMDEsIDIyNywgMTYwLCAyMDYsIDIzMiwgMjE4LCAyNDksIDgzLCAyMjcsIAorICAgIDEwMSwgMjI3LCAxNjAsIDIyLCAzLCAyMDgsIDE4MywgMjI3LCAxMDEsIDIyNywgMTYwLCAyMDgsIDE4OCwgMzEsIDQsIDIxMCwgCisgICAgMTg5LCAzMSwgNCwgMjEwLCAxOTIsIDMxLCA0LCAyMTAsIDE5NSwgMzEsIDQsIDIxMCwgMTkzLCAzMSwgNCwgMjEwLCAxOTQsIAorICAgIDMxLCA0LCAyMTAsIDE5MSwgMzEsIDQsIDI0NiwgMzIsIDMxLCA0LCAyNDYsIDM0LCAzMSwgNCwgMjQ2LCAzNywgMzEsIDQsIAorICAgIDI0NiwgMzUsIDMxLCA0LCAyNDYsIDM2LCAzMSwgNCwgMjQ2LCAzMywgMzEsIDQsIDI0MywgMTgzLCAzMSwgNCwgMjQzLCAKKyAgICAxODcsIDMxLCA0LCAyNDMsIDE5NSwgMzEsIDQsIDI0MywgMTkyLCAzMSwgNCwgMjQzLCAxOTMsIDMxLCA0LCAyNDMsIDE4NCwgCisgICAgMzEsIDQsIDI0OCwgMTYyLCAzMSwgNCwgMjQ4LCAxNTYsIDMxLCA0LCAyNDgsIDE1OCwgMzEsIDQsIDI0OCwgMTYxLCAzMSwgCisgICAgNCwgMjQ4LCAxNTksIDMxLCA0LCAyNDgsIDE2MCwgMzEsIDQsIDI0OCwgMTU3LCAzMSwgNCwgMjUwLCA5NywgMzEsIDQsIAorICAgIDI1MCwgNzYsIDMxLCA0LCAyNTAsIDg4LCAzMSwgNCwgMjUwLCA5NiwgMzEsIDQsIDI1MCwgOTEsIDMxLCA0LCAyNTAsIDkyLCAKKyAgICAzMSwgNCwgMjUwLCA4MCwgNywgNSwgMSwgMjUwLCAxMjMsIDI1MiwgMTQ0LCA3LCA1LCAxLCAzMiwgMjE4LCAyMjIsIDcsIDUsIAorICAgIDEsIDI0OSwgMTk4LCA3NSwgNywgNSwgMSwgMjUwLCAxMjMsIDc1LCA3LCA1LCAxLCAxNzQsIDIsIDI0MSwgMTc0LCA3LCA1LCAKKyAgICAxLCAyMzAsIDE4LCAyNDIsIDEzOSwgNywgNSwgMSwgMTIxLCAyNDEsIDU2LCAyLCAyNDcsIDU2LCA3LCA1LCAxLCAyMzAsIAorICAgIDE1OSwgMiwgMjMzLCAyLCAyMzAsIDY1LCAxODIsIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCA1MCwgMjI2LCAyNDcsIDIxMSwgCisgICAgMTgwLCA3LCA1LCAxLCAyMzAsIDE1OSwgMiwgMjI2LCAyNDcsIDIxOCwgMTQ4LCA3LCA1LCAxLCAyMjksIDI5LCAyLCAyNDcsIAorICAgIDU2LCA3LCA1LCAxLCAyMjYsIDM0LCAyLCAyNDcsIDU2LCA3LCA1LCAxLCAyNDMsIDI5LCAyLCAyNDcsIDU2LCA3LCA1LCAxLCAKKyAgICAyNDksIDE5OCwgNzYsIDcsIDUsIDEsIDI0OSwgMTk4LCAxNDgsIDIsIDkxLCA3LCA1LCAxLCAyMjIsIDE0MiwgMTQ4LCAyLCAKKyAgICA5MSwgNywgNSwgMSwgMjMzLCAyLCAyMjIsIDIwNiwgNywgNSwgMSwgMjAxLCAyMjIsIDIwNywgMiwgOTEsIDcsIDUsIDEsIAorICAgIDIwMSwgMjIyLCAyMDcsIDIsIDE5NCwgOTEsIDcsIDUsIDEsIDIwMSwgMTQ4LCAyMjIsIDEzOCwgNywgNSwgMSwgMjAxLCAKKyAgICAxNDgsIDIyMiwgMTM5LCAyLCA5MSwgNywgNSwgMSwgMjE0LCAwLCAxMzcsIDcsIDEsIDUsIDYsIDIxOSwgMTUwLCAyLCA0OCwgCisgICAgMjMwLCAzNCwgNywgNSwgMSwgMjE5LCAxNTAsIDIwNiwgMjUzLCAyMzksIDEwNSwgNywgNSwgMSwgNTAsIDEzNywgNywgNSwgCisgICAgMSwgMjE5LCAxNTAsIDIsIDI0NywgNTYsIDcsIDUsIDEsIDUwLCAyMTksIDE1MCwgMiwgMjQ3LCA1NiwgNywgNSwgMSwgMTIxLCAKKyAgICAxMzcsIDcsIDUsIDEsIDEyMSwgMjE5LCAxNTAsIDIsIDIxOCwgMTQ4LCA3LCA1LCAxLCAyNTAsIDExNCwgMjQyLCAyMTUsIDcsIAorICAgIDUsIDEsIDEwNiwgMiwgMjE1LCAxNDQsIDQ4LCAyMzAsIDM0LCA3LCA1LCAxLCAxMDYsIDI1MCwgMTI5LCAyLCAyMTUsIDE0NCwgCisgICAgNDgsIDIzMCwgMzQsIDcsIDUsIDEsIDIwOSwgMjUyLCA3LCA1LCAxLCAyMDEsIDIwOSwgMjUyLCA3LCA1LCAxLCAxMDYsIDIsIAorICAgIDQ3LCAxMDksIDcsIDUsIDEsIDI0OCwgNTgsIDcsIDUsIDEsIDI0OCwgNTksIDIsIDExNCwgNDgsIDIxOCwgMTQ4LCA3LCA1LCAKKyAgICAxLCAyNDgsIDU5LCAyLCAxMTQsIDQ3LCAyMTYsIDM2LCA3LCA1LCAxLCAyMDYsIDE5NiwgMiwgMTE0LCA0OCwgMjE4LCAxNDgsIAorICAgIDcsIDUsIDEsIDIwNiwgMTk2LCAyLCAxNTIsIDQ3LCAyMzAsIDM0LCA3LCA1LCAxLCAyMDYsIDE5NiwgMiwgMTUyLCA0NywgCisgICAgMjMwLCAzNSwgMjMsIDExNCwgNDgsIDIxOCwgMTQ4LCA3LCA1LCAxLCAyMDYsIDE5NiwgMiwgMTUyLCA0NywgMjMwLCAzNSwgCisgICAgMiwgMjE2LCAzNiwgNywgNSwgMSwgMjA2LCAxMjQsIDIsIDIxNSwgMTQ0LCA0OCwgMjMwLCAzNCwgNjUsIDI0OSwgMTIzLCAyLCAKKyAgICAyMzMsIDIsIDI0OSwgMTIyLCA2NSwgMSwgNSwgMjM5LCAzOSwgNjUsIDEsIDUsIDIzMCwgMTU5LCAyLCAyMzMsIDIsIDIzMCwgCisgICAgNjUsIDE4MiwgNjUsIDEsIDUsIDIzMCwgMTU5LCAyLCAyMjYsIDI0NywgMjExLCAxODAsIDY1LCAxLCA1LCAxMDYsIDIsIDQ3LCAKKyAgICAxMDksIDcsIDUsIDEsIDIzMywgMiwgMjUyLCAxNDQsIDI3LCAxLCA1LCA2LCAyMjIsIDE3MCwgMjI3LCAxMDEsIDIyNywgCisgICAgMTYwLCAxLCAyMzEsIDQzLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIxNywgMTYxLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIAorICAgIDIzMCwgMTE0LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIyNiwgMTkyLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDE3OSwgCisgICAgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAxOTksIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjQ4LCA1MCwgMjI3LCAxMDEsIAorICAgIDIyNywgMTYwLCAxLCAyMTEsIDE4MiwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMzEsIDEzMywgMjI3LCAxMDEsIDIyNywgCisgICAgMTYwLCAxLCAyMjQsIDI0OCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMTEsIDI0NSwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAKKyAgICAyMDcsIDkwLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIwNiwgNzUsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjM4LCAzNSwgCisgICAgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMDksIDIzNCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCA3NCwgMjI3LCAxMDEsIAorICAgIDIyNywgMTYwLCAxLCAyMjEsIDg3LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDI1MSwgMTk1LCAyMjcsIDEwMSwgMjI3LCAKKyAgICAxNjAsIDEsIDI0MCwgMTIsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjMyLCAxNjgsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgCisgICAgMjE5LCA5MCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyNTAsIDE4MywgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMzIsIAorICAgIDE1NCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyNDUsIDEyNiwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyNDAsIDY4LCAKKyAgICAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDI0NSwgMTcwLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDI0OSwgMjU0LCAyMjcsIAorICAgIDEwMSwgMjI3LCAxNjAsIDEsIDIzMSwgNDQsIDIyOSwgMTE2LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDEsIDIzMCwgMTE1LCAKKyAgICAyMjksIDExNiwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMjYsIDE5MywgMjI5LCAxMTYsIDIyNywgMTAxLCAyMjcsIDE2MCwgCisgICAgMSwgMjIyLCA1MiwgMjI5LCAxMTYsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjI1LCAyMzcsIDIyOSwgMTE2LCAyMjcsIAorICAgIDEwMSwgMjI3LCAxNjAsIDEsIDIxMSwgMTgzLCAyMjksIDExNiwgMjI3LCAxMDEsIDIyNywgMTYwLCAxLCAyMjQsIDI0OSwgCisgICAgMjI5LCAxMTYsIDIyNywgMTAxLCAyMjcsIDE2MCwgMSwgMjM3LCAyMjUsIDIyOSwgMTE2LCAyMjcsIDEwMSwgMjI3LCAxNjAsIAorICAgIDIyLCAzLCAyMjIsIDE2NCwgMjI3LCAxMDEsIDIyNywgMTYwLCAyMiwgMywgMjMzLCA2NiwgMjI3LCAxMDEsIDIyNywgMTYwLCAKKyAgICAyMiwgMywgMjUyLCAxMjEsIDIyNywgMTAxLCAyMjcsIDE2MCwgMjIsIDMsIDIwNiwgNDEsIDIyNywgMTAxLCAyMjcsIDE2MCwgCisgICAgMjIsIDMsIDIxNCwgMTY2LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDIyLCAzLCAyMDksIDIzMSwgMjI3LCAxMDEsIDIyNywgMTYwLCAKKyAgICAyMiwgMywgMjQ4LCA3MiwgMjI3LCAxMDEsIDIyNywgMTYwLCAyMiwgMywgMjIzLCAxNzAsIDIyNywgMTAxLCAyMjcsIDE2MCwgCisgICAgMjQ4LCA3MywgMjI3LCAxMDEsIDIyNywgMTYwLCAyMjksIDY2LCAyMzIsIDIwOSwgMjI3LCAxMDEsIDIyNywgMTYwLCAyNTIsIAorICAgIDQyLCAyMzIsIDIwOSwgMjI3LCAxMDEsIDIyNywgMTYwLCAxOCwgMjA1LCA4NSwgMjI3LCAxMDEsIDIyNywgMTYwLCAxOCwgCisgICAgMTAyLCAyMjcsIDEwMSwgMjI3LCAxNjAsIDE4LCAxMDUsIDIyNywgMTAxLCAyMjcsIDE2MCwgMTgsIDE0MiwgMjI3LCAxMDEsIAorICAgIDIyNywgMTYwLCAxOCwgMTM5LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDE4LCAxNjgsIDIyNywgMTAxLCAyMjcsIDE2MCwgMTgsIAorICAgIDE4NCwgMjI3LCAxMDEsIDIyNywgMTYwLCAxOCwgMTk1LCAyMjcsIDEwMSwgMjI3LCAxNjAsIDE4LCAxOTMsIDIyNywgMTAxLCAKKyAgICAyMjcsIDE2MCwgMTgsIDIwMCwgMjUsIDE2MiwgMjIzLCA1MSwgMjUsIDE2MiwgMjIzLCA1NiwgMjUsIDE2MiwgMjA1LCAyNDYsIAorICAgIDI1LCAxNjIsIDIwNSwgMjQ1LCAyNSwgMTYyLCAyMDUsIDI0NCwgMjUsIDE2MiwgMjEwLCA2OCwgMjUsIDE2MiwgMjEwLCA3MiwgCisgICAgMjUsIDE2MiwgMjA1LCAyMTEsIDI1LCAxNjIsIDIwNSwgMjA3LCAyNSwgMTYyLCAyNDIsIDE5MSwgMjUsIDE2MiwgMjQyLCAKKyAgICAxODksIDI1LCAxNjIsIDI0MiwgMTkwLCAyNSwgMTYyLCAyNDIsIDE4NywgMjUsIDE2MiwgMjM3LCAyMTUsIDI1LCAxNjIsIAorICAgIDIzNywgMjE0LCAyNSwgMTYyLCAyMzcsIDIxMiwgMjUsIDE2MiwgMjM3LCAyMTMsIDI1LCAxNjIsIDIzNywgMjE4LCAyNSwgCisgICAgMTYyLCAyMzcsIDIxMSwgMjUsIDE2MiwgMjM3LCAyMTAsIDI1LCAxNjIsIDIzNywgMjIwLCAyNSwgMTYyLCAyNTIsIDI5LCAKKyAgICAyNSwgMTYyLCAyNTIsIDI4LCAyNSwgMTAwLCAyMjQsIDIxNiwgMjUsIDEwMCwgMjI0LCAyMjIsIDI1LCAxMDAsIDIxNCwgNzcsIAorICAgIDI1LCAxMDAsIDIxNCwgNzYsIDI1LCAxMDAsIDIxMSwgMTg4LCAyNSwgMTAwLCAyMTEsIDE4NiwgMjUsIDEwMCwgMjExLCAKKyAgICAxODUsIDI1LCAxMDAsIDIxMSwgMTkxLCAyNSwgMTAwLCAyMTEsIDE5MiwgMjUsIDEwMCwgMjExLCAxODQsIDI1LCAxMDAsIAorICAgIDIxOCwgMTc3LCAyNSwgMTAwLCAyMTgsIDE5MiwgMjUsIDEwMCwgMjE0LCA4MywgMjUsIDEwMCwgMjE4LCAxODksIDI1LCAKKyAgICAxMDAsIDIxOCwgMTc5LCAyNSwgMTAwLCAyMTgsIDE4MSwgMjUsIDEwMCwgMjE4LCAxNjgsIDI1LCAxMDAsIDIxOCwgMTY5LCAKKyAgICAyNSwgMTAwLCAyMzIsIDEwLCAyNSwgMTAwLCAyMjYsIDIzNSwgMjUsIDEwMCwgMjI2LCAyMjksIDI1LCAxMDAsIDIxNCwgODcsIAorICAgIDI1LCAxMDAsIDIyNiwgMjMyLCAyNSwgMTAwLCAyMjYsIDIzOCwgMjUsIDEwMCwgMjIxLCAyMCwgMjUsIDEwMCwgMjIxLCAyOSwgCisgICAgMjUsIDEwMCwgMjIxLCAzMywgMjUsIDEwMCwgMjE0LCA4NSwgMjUsIDEwMCwgMjIxLCAyMywgMjUsIDEwMCwgMjIxLCAzNywgCisgICAgMjUsIDEwMCwgMjIxLCAzOCwgMjUsIDEwMCwgMjE1LCAyNSwgMjUsIDEwMCwgMjE1LCAyOCwgMjUsIDEwMCwgMjE0LCA4MSwgCisgICAgMjUsIDEwMCwgMjE0LCA3OSwgMjUsIDEwMCwgMjE1LCAyMywgMjUsIDEwMCwgMjE1LCAzMSwgMjUsIDEwMCwgMjE1LCAzMiwgCisgICAgMjUsIDEwMCwgMjE1LCAxNywgMjUsIDEwMCwgMjE1LCAzMCwgMjUsIDEwMCwgMjIxLCAyNDUsIDI1LCAxMDAsIDIyMSwgMjQ2LCAKKyAgICAyNSwgMTAwLCAyMDYsIDI3LCAyNSwgMTAwLCAyMDYsIDI4LCAyNSwgMTAwLCAyNDcsIDI0NCwgMjUsIDEwMCwgMjQ3LCAyNDMsIAorICAgIDI1LCAxMDAsIDIxNCwgOTIsIDI1LCAxMDAsIDIyMSwgNzMsIDI1LCAxMDAsIDIyMSwgNzIsIDEwLCAxNSwgMjM1LCA5MywgCisgICAgMTAsIDE1LCAyMzUsIDkyLCAxMCwgMTUsIDIzNSwgOTEsIDEwLCAxNSwgMjM1LCA5MCwgMTAsIDE1LCAyMzUsIDg5LCAxMCwgCisgICAgMTUsIDIzNSwgODgsIDEwLCAxNSwgMjM1LCA4NywgMTAsIDE1LCAyMzUsIDg2LCAxMCwgMTUsIDIzNSwgODUsIDEwLCAxNSwgCisgICAgMjM1LCA4NCwgMTAsIDE1LCAyMzUsIDgzLCAxMCwgMTUsIDIzNSwgODIsIDEwLCAxNSwgMjM1LCA4MSwgMTAsIDE1LCAyMzUsIAorICAgIDgwLCAxMCwgMTUsIDIzNSwgNzksIDEwLCAxNSwgMjM1LCA3OCwgMTAsIDE1LCAyMzUsIDc3LCAxMCwgMTUsIDIzNSwgNzYsIAorICAgIDEwLCAxNSwgMjM1LCA3NSwgMTAsIDE1LCAyMzUsIDc0LCAxMCwgMTUsIDIzNSwgNzMsIDEwLCAxNSwgMjM1LCA3MiwgMTAsIAorICAgIDE1LCAyMzUsIDcxLCAxMCwgMTUsIDIzNSwgNzAsIDEwLCAxNSwgMjM1LCA2OSwgMTAsIDE1LCAyMzUsIDY4LCAxMCwgMTUsIAorICAgIDIzNSwgNjcsIDEwLCAxNSwgMjM1LCA2NiwgMTAsIDE1LCAyMzUsIDY1LCAxMCwgMTUsIDIzNSwgNjQsIDEwLCAxNSwgMjM1LCAKKyAgICA2MywgMTAsIDE1LCAyMzUsIDYyLCAxMCwgMTUsIDIzNSwgNjEsIDEwLCAxNSwgMjM1LCA2MCwgMTAsIDE1LCAyMzUsIDU5LCAKKyAgICAxMCwgMTUsIDIzNSwgNTgsIDEwLCAxNSwgMjM1LCA1NywgMTAsIDE1LCAyMzUsIDU2LCAxMCwgMTUsIDIzNSwgNTUsIDEwLCAKKyAgICAxNSwgMjM1LCA1NCwgMTAsIDE1LCAyMzUsIDUzLCAxMCwgMTUsIDIzNSwgNTIsIDEwLCAxNSwgMjM1LCA1MSwgMTAsIDE1LCAKKyAgICAyMzUsIDUwLCAxMCwgMTUsIDIzNSwgNDksIDEwLCAxNSwgMjM1LCA0OCwgMTAsIDE1LCAyMzUsIDQ3LCAxMCwgMTUsIDIzNSwgCisgICAgNDYsIDEwLCAxNSwgMjM1LCA0NSwgMTAsIDE1LCAyMzUsIDQ0LCAxMCwgMTUsIDIzNSwgNDMsIDEwLCAxNSwgMjM1LCA0MiwgCisgICAgMTAsIDE1LCAyMzUsIDQxLCAxMCwgMTUsIDIzNSwgNDAsIDEwLCAxNSwgMjM1LCAzOSwgMTAsIDE1LCAyMzUsIDM4LCAxMCwgCisgICAgMTUsIDIzNSwgMzcsIDEwLCAxNSwgMjM1LCAzNiwgMTAsIDE1LCAyMzUsIDM1LCAxMCwgMTUsIDIzNSwgMzQsIDEwLCAxNSwgCisgICAgMjM1LCAzMywgMTAsIDE1LCAyMzUsIDMyLCAxMCwgMTUsIDIzNSwgMzEsIDEwLCAxNSwgMjM1LCAzMCwgMTAsIDE1LCAyMzUsIAorICAgIDI5LCAxMCwgMTUsIDIzNSwgMjgsIDEwLCAxNSwgMjM1LCAyNywgMTAsIDE1LCAyMzUsIDI2LCAxMCwgMTUsIDIzNSwgMjUsIAorICAgIDEwLCAxNSwgMjM1LCAyNCwgMTAsIDE1LCAyMzUsIDIzLCAxMCwgMTUsIDIzNSwgMjIsIDEwLCAxNSwgMjM1LCAyMSwgMTAsIAorICAgIDE1LCAyMzUsIDIwLCAxMCwgMTUsIDIzNSwgMTksIDEwLCAxNSwgMjM1LCAxOCwgMTAsIDE1LCAyMzUsIDE3LCAxMCwgMTUsIAorICAgIDIzNSwgMTYsIDEwLCAxNSwgMjM1LCAxNSwgMTAsIDE1LCAyMzUsIDE0LCAxMCwgMTUsIDIzNSwgMTMsIDEwLCAxNSwgMjM1LCAKKyAgICAxMiwgMTAsIDE1LCAyMzUsIDExLCAxMCwgMTUsIDIzNSwgMTAsIDEwLCAxNSwgMjM1LCA5LCAxMCwgMTUsIDIzNSwgOCwgMTAsIAorICAgIDE1LCAyMzUsIDcsIDEwLCAxNSwgMjM1LCA2LCAxMCwgMTUsIDIzNSwgNSwgMTAsIDE1LCAyMzUsIDQsIDEwLCAxNSwgMjM1LCAKKyAgICAzLCAxMCwgMTUsIDIzNSwgMiwgMTAsIDE1LCAyMzUsIDEsIDEwLCAxNSwgMjM1LCAwLCAxMCwgMTUsIDIzNCwgMjU1LCAxMCwgCisgICAgMTUsIDIzNCwgMjU0LCAxMCwgMTUsIDIzNCwgMjUzLCAxMCwgMTUsIDIzNCwgMjUyLCAxMCwgMTUsIDIzNCwgMjUxLCAxMCwgCisgICAgMTUsIDIzNCwgMjUwLCAxMCwgMTUsIDIzNCwgMjQ5LCAxMCwgMTUsIDIzNCwgMjQ4LCAxMCwgMTUsIDIzNCwgMjQ3LCAxMCwgCisgICAgMTUsIDIzNCwgMjQ2LCAxMCwgMTUsIDIzNCwgMjQ1LCAxMCwgMTUsIDIzNCwgMjQ0LCAxMCwgMTUsIDIzNCwgMjQzLCAxMCwgCisgICAgMTUsIDIzNCwgMjQyLCAxMCwgMTUsIDIzNCwgMjQxLCAxMCwgMTUsIDIzNCwgMjQwLCAxMCwgMTUsIDIzNCwgMjM5LCAxMCwgCisgICAgMTUsIDIzNCwgMjM4LCAxMCwgMTUsIDIzNCwgMjM3LCAxMCwgMTUsIDIzNCwgMjM2LCAxMCwgMTUsIDIzNCwgMjM1LCAxMCwgCisgICAgMTUsIDIzNCwgMjM0LCAxMCwgMTUsIDIzNCwgMjMzLCAxMCwgMTUsIDIzNCwgMjMyLCAxMCwgMTUsIDIzNCwgMjMxLCAxMCwgCisgICAgMTUsIDIzNCwgMjMwLCAxMCwgMTUsIDIzNCwgMjI5LCAxMCwgMTUsIDIzNCwgMjI4LCAxMCwgMTUsIDIzNCwgMjI3LCAxMCwgCisgICAgMTUsIDIzNCwgMjI2LCAxMCwgMTUsIDIzNCwgMjI1LCAxMCwgMTUsIDIzNCwgMjI0LCAxMCwgMTUsIDIzNCwgMjIzLCAxMCwgCisgICAgMTUsIDIzNCwgMjIyLCAxMCwgMTUsIDIzNCwgMjIxLCAxMCwgMTUsIDIzNCwgMjIwLCAxMCwgMTUsIDIzNCwgMjE5LCAxMCwgCisgICAgMTUsIDIzNCwgMjE4LCAxMCwgMTUsIDIzNCwgMjE3LCAxMCwgMTUsIDIzNCwgMjE2LCAxMCwgMTUsIDIzNCwgMjE1LCAxMCwgCisgICAgMTUsIDIzNCwgMjE0LCAxMCwgMTUsIDIzNCwgMjEzLCAxMCwgMTUsIDIzNCwgMjEyLCAxMCwgMTUsIDIzNCwgMjExLCAxMCwgCisgICAgMTUsIDIzNCwgMjEwLCAxMCwgMTUsIDIzNCwgMjA5LCAxMCwgMTUsIDIzNCwgMjA4LCAxMCwgMTUsIDIzNCwgMjA3LCAxMCwgCisgICAgMTUsIDIzNCwgMjA2LCAxMCwgMTUsIDIzNCwgMjA1LCAxMCwgMTUsIDIzNCwgMjA0LCAxMCwgMTUsIDIzNCwgMjAzLCAxMCwgCisgICAgMTUsIDIzNCwgMjAyLCAxMCwgMTUsIDIzNCwgMjAxLCAxMCwgMTUsIDIzNCwgMjAwLCAxMCwgMTUsIDIzNCwgMTk5LCAxMCwgCisgICAgMTUsIDIzNCwgMTk4LCAxMCwgMTUsIDIzNCwgMTk3LCAxMCwgMTUsIDIzNCwgMTk2LCAxMCwgMTUsIDIzNCwgMTk1LCAxMCwgCisgICAgMTUsIDIzNCwgMTk0LCAxMCwgMTUsIDIzNCwgMTkzLCAxMCwgMTUsIDIzNCwgMTkyLCAxMCwgMTUsIDIzNCwgMTkxLCAxMCwgCisgICAgMTUsIDIzNCwgMTkwLCAxMCwgMTUsIDIzNCwgMTg5LCAxMCwgMTUsIDIzNCwgMTg4LCAxMCwgMTUsIDIzNCwgMTg3LCAxMCwgCisgICAgMTUsIDIzNCwgMTg2LCAxMCwgMTUsIDIzNCwgMTg1LCAxMCwgMTUsIDIzNCwgMTg0LCAxMCwgMTUsIDIzNCwgMTgzLCAxMCwgCisgICAgMTUsIDIzNCwgMTgyLCAxMCwgMTUsIDIzNCwgMTgxLCAxMCwgMTUsIDIzNCwgMTgwLCAxMCwgMTUsIDIzNCwgMTc5LCAxMCwgCisgICAgMTUsIDIzNCwgMTc4LCAxMCwgMTUsIDIzNCwgMTc3LCAxMCwgMTUsIDIzNCwgMTc2LCAxMCwgMTUsIDIzNCwgMTc1LCAxMCwgCisgICAgMTUsIDIzNCwgMTc0LCAxMCwgMTUsIDIzNCwgMTczLCAxMCwgMTUsIDIzNCwgMTcyLCAxMCwgMTUsIDIzNCwgMTcxLCAxMCwgCisgICAgMTUsIDIzNCwgMTcwLCAxMCwgMTUsIDIzNCwgMTY5LCAxMCwgMTUsIDIzNCwgMTY4LCAxMCwgMTUsIDIzNCwgMTY3LCAxMCwgCisgICAgMTUsIDIzNCwgMTY2LCAxMCwgMTUsIDIzNCwgMTY1LCAxMCwgMTUsIDIzNCwgMTY0LCAxMCwgMTUsIDIzNCwgMTYzLCAxMCwgCisgICAgMTUsIDIzNCwgMTYyLCAxMCwgMTUsIDIzNCwgMTYxLCAxMCwgMTUsIDIzNCwgMTYwLCAxMCwgMTUsIDIzNCwgMTU5LCAxMCwgCisgICAgMTUsIDIzNCwgMTU4LCAxMCwgMTUsIDIzNCwgMTU3LCAxMCwgMTUsIDIzNCwgMTU2LCAxMCwgMTUsIDIzNCwgMTU1LCAxMCwgCisgICAgMTUsIDIzNCwgMTU0LCAxMCwgMTUsIDIzNCwgMTUzLCAxMCwgMTUsIDIzNCwgMTUyLCAxMCwgMTUsIDIzNCwgMTUxLCAxMCwgCisgICAgMTUsIDIzNCwgMTUwLCAxMCwgMTUsIDIzNCwgMTQ5LCAxMCwgMTUsIDIzNCwgMTQ4LCAxMCwgMTUsIDIzNCwgMTQ3LCAxMCwgCisgICAgMTUsIDIzNCwgMTQ2LCAxMCwgMTUsIDIzNCwgMTQ1LCAxMCwgMTUsIDIzNCwgMTQ0LCAxMCwgMTUsIDIzNCwgMTQzLCAxMCwgCisgICAgMTUsIDIzNCwgMTQyLCAxMCwgMTUsIDIzNCwgMTQxLCAxMCwgMTUsIDIzNCwgMTQwLCAxMCwgMTUsIDIzNCwgMTM5LCAxMCwgCisgICAgMTUsIDIzNCwgMTM4LCAxMCwgMTUsIDIzNCwgMTM3LCAxMCwgMTUsIDIzNCwgMTM2LCAxMCwgMTUsIDIzNCwgMTM1LCAxMCwgCisgICAgMTUsIDIzNCwgMTM0LCAxMCwgMTUsIDIzNCwgMTMzLCAxMCwgMTUsIDIzNCwgMTMyLCAxMCwgMTUsIDIzNCwgMTMxLCAxMCwgCisgICAgMTUsIDIzNCwgMTMwLCAxMCwgMTUsIDIzNCwgMTI5LCAxMCwgMTUsIDIzNCwgMTI4LCAxMCwgMTUsIDIzNCwgMTI3LCAxMCwgCisgICAgMTUsIDIzNCwgMTI2LCAxMCwgMTUsIDIzNCwgMTI1LCAxMCwgMTUsIDIzNCwgMTI0LCAxMCwgMTUsIDIzNCwgMTIzLCAxMCwgCisgICAgMTUsIDIzNCwgMTIyLCAxMCwgMTUsIDIzNCwgMTIxLCAxMCwgMTUsIDIzNCwgMTIwLCAxMCwgMTUsIDIzNCwgMTE5LCAxMCwgCisgICAgMTUsIDIzNCwgMTE4LCAxMCwgMTUsIDIzNCwgMTE3LCAxMCwgMTUsIDIzNCwgMTE2LCAxMCwgMTUsIDIzNCwgMTE1LCAxMCwgCisgICAgMTUsIDIzNCwgMTE0LCAxMCwgMTUsIDIzNCwgMTEzLCAxMCwgMTUsIDIzNCwgMTEyLCAxMCwgMTUsIDIzNCwgMTExLCAxMCwgCisgICAgMTUsIDIzNCwgMTEwLCAxMCwgMTUsIDIzNCwgMTA5LCAxMCwgMTUsIDIzNCwgMTA4LCAxMCwgMTUsIDIzNCwgMTA3LCAxMCwgCisgICAgMTUsIDIzNCwgMTA2LCAxMCwgMTUsIDIzNCwgMTA1LCAxMCwgMTUsIDIzNCwgMTA0LCAxMCwgMTUsIDIzNCwgMTAzLCAxMCwgCisgICAgMTUsIDIzNCwgMTAyLCAxMCwgMTUsIDIzNCwgMTAxLCAxMCwgMTUsIDIzNCwgMTAwLCAxMCwgMTUsIDIzNCwgOTksIDEwLCAKKyAgICAxNSwgMjM0LCA5OCwgMTAsIDE1LCAyMzQsIDk3LCAxMCwgMTUsIDIzNCwgOTYsIDEwLCAxNSwgMjM0LCA5NSwgMTAsIDE1LCAKKyAgICAyMzQsIDk0LCAxMCwgMTUsIDIzNCwgOTMsIDEwLCAxNSwgMjM0LCA5MiwgMTAsIDE1LCAyMzQsIDkxLCAxMCwgMTUsIDIzNCwgCisgICAgOTAsIDEwLCAxNSwgMjM0LCA4OSwgMTAsIDE1LCAyMzQsIDg4LCAxMCwgMTUsIDIzNCwgODcsIDEwLCAxNSwgMjM0LCA4NiwgCisgICAgMTAsIDE1LCAyMzQsIDg1LCAxMCwgMTUsIDIzNCwgODQsIDEwLCAxNSwgMjM0LCA4MywgMTAsIDE1LCAyMzQsIDgyLCAxMCwgCisgICAgMTUsIDIzNCwgODEsIDEwLCAxNSwgMjM0LCA4MCwgMTAsIDE1LCAyMzQsIDc5LCAxMCwgMTUsIDIzNCwgNzgsIDEwLCAxNSwgCisgICAgMjM0LCA3NywgMTAsIDE1LCAyMzQsIDc2LCAxMCwgMTUsIDIzNCwgNzUsIDEwLCAxNSwgMjM0LCA3NCwgMTAsIDE1LCAyMzQsIAorICAgIDczLCAxMCwgMTUsIDIzNCwgNzIsIDEwLCAxNSwgMjM0LCA3MSwgMTAsIDE1LCAyMzQsIDcwLCAxMCwgMTUsIDIzNCwgNjksIAorICAgIDEwLCAxNSwgMjM0LCA2OCwgMTAsIDE1LCAyMzQsIDY3LCAxMCwgMTUsIDIzNCwgNjYsIDEwLCAxNSwgMjM0LCA2NSwgMTAsIAorICAgIDE1LCAyMzQsIDY0LCAxMCwgMTUsIDIzNCwgNjMsIDEwLCAxNSwgMjM0LCA2MiwgMTAsIDE1LCAyMzQsIDYxLCAxMCwgMTUsIAorICAgIDIzNCwgNjAsIDEwLCAxNSwgMjM0LCA1OSwgMTAsIDE1LCAyMzQsIDU4LCAxMCwgMTUsIDIzNCwgNTcsIDEwLCAxNSwgMjM0LCAKKyAgICA1NiwgMTAsIDE1LCAyMzQsIDU1LCAxMCwgMTUsIDIzNCwgNTQsIDEwLCAxNSwgMjM0LCA1MywgMTAsIDE1LCAyMzQsIDUyLCAKKyAgICAxMCwgMTUsIDIzNCwgNTEsIDEwLCAxNSwgMjM0LCA1MCwgMTAsIDE1LCAyMzQsIDQ5LCAxMCwgMTUsIDIzNCwgNDgsIDEwLCAKKyAgICAxNSwgMjM0LCA0NywgMTAsIDE1LCAyMzQsIDQ2LCAxMCwgMTUsIDIzNCwgNDUsIDEwLCAxNSwgMjM0LCA0NCwgMTAsIDE1LCAKKyAgICAyMzQsIDQzLCAxMCwgMTUsIDIzNCwgNDIsIDEwLCAxNSwgMjM0LCA0MSwgMTAsIDE1LCAyMzQsIDQwLCAxMCwgMTUsIDIzNCwgCisgICAgMzksIDEwLCAxNSwgMjM0LCAzOCwgMTAsIDE1LCAyMzQsIDM3LCAxMCwgMTUsIDIzNCwgMzYsIDEwLCAxNSwgMjM0LCAzNSwgCisgICAgMTAsIDE1LCAyMzQsIDM0LCAxMCwgMTUsIDIzNCwgMzMsIDEwLCAxNSwgMjM0LCAzMiwgMTAsIDE1LCAyMzQsIDMxLCAxMCwgCisgICAgMTUsIDIzNCwgMzAsIDEwLCAxNSwgMjM0LCAyOSwgMTAsIDE1LCAyMzQsIDI4LCAxMCwgMTUsIDIzNCwgMjcsIDEwLCAxNSwgCisgICAgMjM0LCAyNiwgMTAsIDE1LCAyMzQsIDI1LCAxMCwgMTUsIDIzNCwgMjQsIDEwLCAxNSwgMjM0LCAyMywgMTAsIDE1LCAyMzQsIAorICAgIDIyLCAxMCwgMTUsIDIzNCwgMjEsIDEwLCAxNSwgMjM0LCAyMCwgMTAsIDE1LCAyMzQsIDE5LCAxMCwgMTUsIDIzNCwgMTgsIAorICAgIDEwLCAxNSwgMjM0LCAxNywgMTAsIDE1LCAyMzQsIDE2LCAxMCwgMTUsIDIzNCwgMTUsIDEwLCAxNSwgMjM0LCAxNCwgMTAsIAorICAgIDE1LCAyMzQsIDEzLCAxMCwgMTUsIDIzNCwgMTIsIDEwLCAxNSwgMjM0LCAxMSwgMTAsIDE1LCAyMzQsIDEwLCAxMCwgMTUsIAorICAgIDIzNCwgOSwgMTAsIDE1LCAyMzQsIDgsIDEwLCAxNSwgMjM0LCA3LCAxMCwgMTUsIDIzNCwgNiwgMTAsIDE1LCAyMzQsIDUsIAorICAgIDEwLCAxNSwgMjM0LCA0LCAxMCwgMTUsIDIzNCwgMywgMTAsIDE1LCAyMzQsIDIsIDEwLCAxNSwgMjM0LCAxLCAxMCwgMTUsIAorICAgIDIzNCwgMCwgMTAsIDE1LCAyMzMsIDI1NSwgMTAsIDE1LCAyMzMsIDI1NCwgMTAsIDE1LCAyMzMsIDI1MywgMTAsIDE1LCAKKyAgICAyMzMsIDI1MiwgMTAsIDE1LCAyMzMsIDI1MSwgMTAsIDE1LCAyMzMsIDI1MCwgMTAsIDE1LCAyMzMsIDI0OSwgMTAsIDE1LCAKKyAgICAyMzMsIDI0OCwgMTAsIDE1LCAyMzMsIDI0NywgMTAsIDE1LCAyMzMsIDI0NiwgMTAsIDE1LCAyMzMsIDI0NSwgMTAsIDE1LCAKKyAgICAyMzMsIDI0NCwgMTAsIDE1LCAyMzMsIDI0MywgMTAsIDE1LCAyMzMsIDI0MiwgMTAsIDE1LCAyMzMsIDI0MSwgMTAsIDE1LCAKKyAgICAyMzMsIDI0MCwgMTAsIDE1LCAyMzMsIDIzOSwgMTAsIDE1LCAyMzMsIDIzOCwgMTAsIDE1LCAyMzMsIDIzNywgMTAsIDE1LCAKKyAgICAyMzMsIDIzNiwgMTAsIDE1LCAyMzMsIDIzNSwgMTAsIDE1LCAyMzMsIDIzNCwgMTAsIDE1LCAyMzMsIDIzMywgMTAsIDE1LCAKKyAgICAyMzMsIDIzMiwgMTAsIDE1LCAyMzMsIDIzMSwgMTAsIDE1LCAyMzMsIDIzMCwgMTAsIDE1LCAyMzMsIDIyOSwgMTAsIDE1LCAKKyAgICAyMzMsIDIyOCwgMTAsIDE1LCAyMzMsIDIyNywgMTAsIDE1LCAyMzMsIDIyNiwgMTAsIDE1LCAyMzMsIDIyNSwgMTAsIDE1LCAKKyAgICAyMzMsIDIyNCwgMTAsIDE1LCAyMzMsIDIyMywgMTAsIDE1LCAyMzMsIDIyMiwgMTAsIDE1LCAyMzMsIDIyMSwgMTAsIDE1LCAKKyAgICAyMzMsIDIyMCwgMTAsIDE1LCAyMzMsIDIxOSwgMTAsIDE1LCAyMzMsIDIxOCwgMTAsIDE1LCAyMzMsIDIxNywgMTAsIDE1LCAKKyAgICAyMzMsIDIxNiwgMTAsIDE1LCAyMzMsIDIxNSwgMTAsIDE1LCAyMzMsIDIxNCwgMTAsIDE1LCAyMzMsIDIxMywgMTAsIDE1LCAKKyAgICAyMzMsIDIxMiwgMTAsIDE1LCAyMzMsIDIxMSwgMTAsIDE1LCAyMzMsIDIxMCwgMTAsIDE1LCAyMzMsIDIwOSwgMTAsIDE1LCAKKyAgICAyMzMsIDIwOCwgMTAsIDE1LCAyMzMsIDIwNywgMTAsIDE1LCAyMzMsIDIwNiwgMTAsIDE1LCAyMzMsIDIwNSwgMTAsIDE1LCAKKyAgICAyMzMsIDIwNCwgMTAsIDE1LCAyMzMsIDIwMywgMTAsIDE1LCAyMzMsIDIwMiwgMTAsIDE1LCAyMzMsIDIwMSwgMTAsIDE1LCAKKyAgICAyMzMsIDIwMCwgMTAsIDE1LCAyMzMsIDE5OSwgMTAsIDE1LCAyMzMsIDE5OCwgMTAsIDE1LCAyMzMsIDE5NywgMTAsIDE1LCAKKyAgICAyMzMsIDE5NiwgMTAsIDE1LCAyMzMsIDE5NSwgMTAsIDE1LCAyMzMsIDE5NCwgMTAsIDE1LCAyMzMsIDE5MywgMTAsIDE1LCAKKyAgICAyMzMsIDE5MiwgMTAsIDE1LCAyMzMsIDE5MSwgMTAsIDE1LCAyMzMsIDE5MCwgMTAsIDE1LCAyMzMsIDE4OSwgMTAsIDE1LCAKKyAgICAyMzMsIDE4OCwgMTAsIDE1LCAyMzMsIDE4NywgMTAsIDE1LCAyMzMsIDE4NiwgMTAsIDE1LCAyMzMsIDE4NSwgMTAsIDE1LCAKKyAgICAyMzMsIDE4NCwgMTAsIDE1LCAyMzMsIDE4MywgMTAsIDE1LCAyMzMsIDE4MiwgMTAsIDE1LCAyMzMsIDE4MSwgMTAsIDE1LCAKKyAgICAyMzMsIDE4MCwgMTAsIDE1LCAyMzMsIDE3OSwgMTAsIDE1LCAyMzMsIDE3OCwgMTAsIDE1LCAyMzMsIDE3NywgMTAsIDE1LCAKKyAgICAyMzMsIDE3NiwgMTAsIDE1LCAyMzMsIDE3NSwgMTAsIDE1LCAyMzMsIDE3NCwgMTAsIDE1LCAyMzMsIDE3MywgMTAsIDE1LCAKKyAgICAyMzMsIDE3MiwgMTAsIDE1LCAyMzMsIDE3MSwgMTAsIDE1LCAyMzMsIDE3MCwgMTAsIDE1LCAyMzMsIDE2OSwgMTAsIDE1LCAKKyAgICAyMzMsIDE2OCwgMTAsIDE1LCAyMzMsIDE2NywgMTAsIDE1LCAyMzMsIDE2NiwgMTAsIDE1LCAyMzMsIDE2NSwgMTAsIDE1LCAKKyAgICAyMzMsIDE2NCwgMTAsIDE1LCAyMzMsIDE2MywgMTAsIDE1LCAyMzMsIDE2MiwgMTAsIDE1LCAyMzMsIDE2MSwgMTAsIDE1LCAKKyAgICAyMzMsIDE2MCwgMTAsIDE1LCAyMzMsIDE1OSwgMTAsIDE1LCAyMzMsIDE1OCwgMTAsIDE1LCAyMzMsIDE1NywgMTAsIDE1LCAKKyAgICAyMzMsIDE1NiwgMTAsIDE1LCAyMzMsIDE1NSwgMTAsIDE1LCAyMzMsIDE1NCwgMTAsIDE1LCAyMzMsIDE1MywgMTAsIDE1LCAKKyAgICAyMzMsIDE1MiwgMTAsIDE1LCAyMzMsIDE1MSwgMTAsIDE1LCAyMzMsIDE1MCwgMTAsIDE1LCAyMzMsIDE0OSwgMTAsIDE1LCAKKyAgICAyMzMsIDE0OCwgMTAsIDE1LCAyMzMsIDE0NywgMTAsIDE1LCAyMzMsIDE0NiwgMTAsIDE1LCAyMzMsIDE0NSwgMTAsIDE1LCAKKyAgICAyMzMsIDE0NCwgMTAsIDE1LCAyMzMsIDE0MywgMTAsIDE1LCAyMzMsIDE0MiwgMTAsIDE1LCAyMzMsIDE0MSwgMTAsIDE1LCAKKyAgICAyMzMsIDE0MCwgMTAsIDE1LCAyMzMsIDEzOSwgMTAsIDE1LCAyMzMsIDEzOCwgMTAsIDE1LCAyMzMsIDEzNywgMTAsIDE1LCAKKyAgICAyMzMsIDEzNiwgMTAsIDE1LCAyMzMsIDEzNSwgMTAsIDE1LCAyMzMsIDEzNCwgNywgNSwgMjgsIDI0MSwgMjU0LCA3LCA1LCAKKyAgICAyOCwgMjQxLCAyNTAsIDcsIDUsIDI4LCAyNDEsIDE5OSwgNywgNSwgMjgsIDI0MSwgMjUzLCA3LCA1LCAyOCwgMjQxLCAyNTIsIAorICAgIDcsIDUsIDI4LCAxNTIsIDIxOCwgMSwgMjEzLCAxMCwgNywgNSwgMjgsIDIxNCwgNDAsIDE2NCwgNSwgMjgsIDIyNywgODQsIAorICAgIDIyNCwgMjksIDE2NCwgNSwgMjgsIDIyNywgODQsIDI0MywgMTA4LCAxNjQsIDUsIDI4LCAyMjcsIDg0LCAyMzMsIDM4LCAKKyAgICAxNjQsIDUsIDI4LCAyMDgsIDIxOSwgMjI0LCAyOSwgMTY0LCA1LCAyOCwgMjI3LCA4NCwgMjA2LCAxNzMsIDEwMywgMSwgCisgICAgMjA1LCAyMzcsIDIsIDIzOCwgMjQ0LCAxMDMsIDIyMCwgMjA1LCAyMzIsIDEwMywgMjA5LCA1MSwgMTAzLCAyOCwgMjA2LCA5LCAKKyAgICAyMDUsIDIzNywgMjA1LCAyMzcsIDIyMSwgMTk0LCAxMDMsIDEsIDI1MiwgMTM5LCAyNTEsIDE1NCwgMTAzLCAxLCAyMDcsIAorICAgIDE3LCAyNTIsIDE3MiwgMTAzLCAxLCAyMDcsIDE3LCAyNDYsIDExMSwgMTAzLCAxLCAyMDcsIDE3LCAyMzksIDcxLCAxMDMsIAorICAgIDEsIDIwNywgMTcsIDIzMiwgNDUsIDEwMywgMSwgMjA3LCAxNywgMjMwLCA5OCwgMTAzLCAxLCAyMDcsIDE3LCA0MiwgMjI3LCAKKyAgICA5MCwgMTAzLCAxLCAyMDcsIDE3LCAyMTgsIDI0MiwgMTAzLCAxLCAyMDcsIDE3LCAyMTIsIDE0NywgMTAzLCAxLCAyNTIsIAorICAgIDEzOSwgMTAxLCA1MywgMTAzLCAxLCAyMTUsIDE3MiwgMiwgMjE1LCAxNzIsIDI0NSwgMjMsIDEwMywgMSwgMjE1LCAxNzIsIAorICAgIDIsIDIxNSwgNDUsIDI0NSwgMjMsIDEwMywgMSwgMjE1LCAxNzIsIDIsIDI0NiwgMTMxLCAyMywgMjE1LCAxNzIsIDI0NSwgCisgICAgMjMsIDEwMywgMSwgMjE1LCAxNzIsIDIsIDI0NiwgMTMxLCAyMywgMjE1LCA0NSwgMjQ1LCAyMywgMTAzLCAxLCAxMjYsIDIsIAorICAgIDIyMSwgMTk0LCAxMDMsIDEsIDEyNiwgMiwgMjIwLCA3LCAxMDMsIDEsIDEyNiwgMiwgMjI3LCAyMDQsIDEwMywgMSwgMjUwLCAKKyAgICAxMSwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjQwLCA0OCwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjQ2LCAxMTIsIDIsIDI0NiwgCisgICAgMTMwLCAxMDMsIDEsIDIzOSwgNzIsIDIsIDIyNywgMjA0LCAxMDMsIDEsIDIwOSwgNDQsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIAorICAgIDIwNSwgOTcsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIDIxMiwgODEsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIDIwNSwgMjM3LCAyLCAKKyAgICAyNDYsIDEzMCwgMTAzLCAxLCA0MiwgMjMyLCA0NiwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjMyLCA0NiwgMiwgMjQ2LCAxMzAsIAorICAgIDEwMywgMSwgMjMwLCA5OSwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjI3LCA5MSwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjIzLCAKKyAgICAxNzQsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIDIxNywgMTU4LCAyLCAyNDYsIDEzMCwgMTAzLCAxLCA0MiwgMjIxLCAxNzUsIDIsIAorICAgIDI0NiwgMTMwLCAxMDMsIDEsIDIyMSwgMTc1LCAyLCAyNDYsIDEzMCwgMTAzLCAxLCAyMTAsIDIzOSwgMiwgMjQ2LCAxMzAsIAorICAgIDEwMywgMSwgMjE5LCAyMjQsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIDIxOCwgMjQzLCAyLCAyNDYsIDEzMCwgMTAzLCAxLCAKKyAgICAyMTUsIDE3MiwgMiwgMjQ2LCAxMzAsIDEwMywgMSwgMjEyLCAxNDgsIDIsIDI0NiwgMTMwLCAxMDMsIDEsIDIwOSwgNDQsIDIsIAorICAgIDIzOCwgMTQyLCAxMDMsIDEsIDI1MCwgMTEsIDIsIDIxOSwgOTMsIDEwMywgMSwgMjMyLCA0NiwgMiwgMjE5LCA5MywgMTAzLCAKKyAgICAxLCAyMjEsIDE3NSwgMiwgMjE5LCA5MywgMTAzLCAyOCwgMTI2LCAyMzAsIDk4LCA4LCAxLCAxMjYsIDIwNywgNzcsIDYxLCAKKyAgICAxNywgOCwgMSwgMTI2LCAyMDcsIDc3LCA0MiwgMTcsIDgsIDEsIDI1MCwgNDksIDYxLCAxNywgOCwgMSwgMjUwLCA0OSwgNDIsIAorICAgIDE3LCA4LCAxLCAyNTAsIDQ5LCA3OCwgMTcsIDgsIDEsIDI1MCwgNDksIDE2OSwgMTcsIDgsIDEsIDIyMSwgMTU4LCA2MSwgCisgICAgMTcsIDgsIDEsIDIyMSwgMTU4LCA0MiwgMTcsIDgsIDEsIDIyMSwgMTU4LCA3OCwgMTcsIDgsIDEsIDIyMSwgMTU4LCAxNjksIAorICAgIDE3LCA4LCAxLCAyNTAsIDM3LCA2MSwgMTcsIDgsIDEsIDI1MCwgMzcsIDQyLCAxNywgOCwgMSwgMjUwLCAzNywgNzgsIDE3LCAKKyAgICA4LCAxLCAyNTAsIDM3LCAxNjksIDE3LCA4LCAxLCAyMTAsIDE5OSwgNjEsIDE3LCA4LCAxLCAyMTAsIDE5OSwgNDIsIDE3LCAKKyAgICA4LCAxLCAyMTAsIDE5OSwgNzgsIDE3LCA4LCAxLCAyMTAsIDE5OSwgMTY5LCAxNywgOCwgMSwgMjEyLCAxMTQsIDYxLCAxNywgCisgICAgOCwgMSwgMjEyLCAxMTQsIDQyLCAxNywgOCwgMSwgMjEyLCAxMTQsIDc4LCAxNywgOCwgMSwgMjEyLCAxMTQsIDE2OSwgMTcsIAorICAgIDgsIDEsIDIxMCwgMjAxLCA2MSwgMTcsIDgsIDEsIDIxMCwgMjAxLCA0MiwgMTcsIDgsIDEsIDIxMCwgMjAxLCA3OCwgMTcsIAorICAgIDgsIDEsIDIxMCwgMjAxLCAxNjksIDE3LCA4LCAxLCAyMDksIDMzLCA2MSwgMTcsIDgsIDEsIDIwOSwgMzMsIDQyLCAxNywgOCwgCisgICAgMSwgMjA5LCAzMywgNzgsIDE3LCA4LCAxLCAyMDksIDMzLCAxNjksIDE3LCA4LCAxLCAyMjEsIDE1NiwgNjEsIDE3LCA4LCAxLCAKKyAgICAyMjEsIDE1NiwgNDIsIDE3LCA4LCAxLCAyMjEsIDE1NiwgNzgsIDE3LCA4LCAxLCAyMjEsIDE1NiwgMTY5LCAxNywgOCwgMSwgCisgICAgMjQzLCAyMDIsIDYxLCAxNywgOCwgMSwgMjQzLCAyMDIsIDQyLCAxNywgOCwgMSwgMjQzLCAyMDIsIDc4LCAxNywgOCwgMSwgCisgICAgMjQzLCAyMDIsIDE2OSwgMTcsIDgsIDEsIDIyMywgMTMyLCA2MSwgMTcsIDgsIDEsIDIyMywgMTMyLCA0MiwgMTcsIDgsIDEsIAorICAgIDIyMywgMTMyLCA3OCwgMTcsIDgsIDEsIDIyMywgMTMyLCAxNjksIDE3LCA4LCAxLCAyMTIsIDEzNiwgNjEsIDE3LCA4LCAxLCAKKyAgICAyMTIsIDEzNiwgNDIsIDE3LCA4LCAxLCAyMTIsIDEzNiwgNzgsIDE3LCA4LCAxLCAyMTIsIDEzNiwgMTY5LCAxNywgOCwgMSwgCisgICAgMjEyLCAxMzQsIDYxLCAxNywgOCwgMSwgMjEyLCAxMzQsIDQyLCAxNywgOCwgMSwgMjEyLCAxMzQsIDc4LCAxNywgOCwgMSwgCisgICAgMjEyLCAxMzQsIDE2OSwgMTcsIDgsIDEsIDI0NiwgNTIsIDYxLCAxNywgOCwgMSwgMjQ2LCA1MiwgNDIsIDE3LCA4LCAxLCAKKyAgICAyNDYsIDEyNSwgNjEsIDE3LCA4LCAxLCAyNDYsIDEyNSwgNDIsIDE3LCA4LCAxLCAyNDMsIDIzMCwgNjEsIDE3LCA4LCAxLCAKKyAgICAyNDMsIDIzMCwgNDIsIDE3LCA4LCAxLCAyNDYsIDUwLCA2MSwgMTcsIDgsIDEsIDI0NiwgNTAsIDQyLCAxNywgOCwgMSwgCisgICAgMjMyLCAxNzcsIDYxLCAxNywgOCwgMSwgMjMyLCAxNzcsIDQyLCAxNywgOCwgMSwgMjE4LCA4MiwgNjEsIDE3LCA4LCAxLCAKKyAgICAyMTgsIDgyLCA0MiwgMTcsIDgsIDEsIDIzMSwgMjEzLCA2MSwgMTcsIDgsIDEsIDIzMSwgMjEzLCA0MiwgMTcsIDgsIDEsIAorICAgIDIzMSwgMjEzLCA3OCwgMTcsIDgsIDEsIDIzMSwgMjEzLCAxNjksIDE3LCA4LCAxLCAyNDAsIDIzMiwgNjEsIDE3LCA4LCAxLCAKKyAgICAyNDAsIDIzMiwgNDIsIDE3LCA4LCAxLCAyNDAsIDIzMiwgNzgsIDE3LCA4LCAxLCAyNDAsIDIzMiwgMTY5LCAxNywgOCwgMSwgCisgICAgMjM5LCAyMDEsIDYxLCAxNywgOCwgMSwgMjM5LCAyMDEsIDQyLCAxNywgOCwgMSwgMjM5LCAyMDEsIDc4LCAxNywgOCwgMSwgCisgICAgMjM5LCAyMDEsIDE2OSwgMTcsIDgsIDEsIDIyNSwgMSwgNjEsIDE3LCA4LCAxLCAyMjUsIDEsIDQyLCAxNywgOCwgMSwgMjI1LCAKKyAgICAxLCA3OCwgMTcsIDgsIDEsIDIyNSwgMSwgMTY5LCAxNywgOCwgMSwgMjI0LCA1NSwgMjQwLCA2NiwgNjEsIDE3LCA4LCAxLCAKKyAgICAyMjQsIDU1LCAyNDAsIDY2LCA0MiwgMTcsIDgsIDEsIDIxOCwgMTI4LCA2MSwgMTcsIDgsIDEsIDIxOCwgMTI4LCA0MiwgMTcsIAorICAgIDgsIDEsIDIxOCwgMTI4LCA3OCwgMTcsIDgsIDEsIDIxOCwgMTI4LCAxNjksIDE3LCA4LCAxLCAyMzksIDUxLCAyLCA4NywgCisgICAgODQsIDYxLCAxNywgOCwgMSwgMjM5LCA1MSwgMiwgODcsIDg0LCA0MiwgMTcsIDgsIDEsIDIzOSwgNTEsIDI0MCwgMTcsIDYxLCAKKyAgICAxNywgOCwgMSwgMjM5LCA1MSwgMjQwLCAxNywgNDIsIDE3LCA4LCAxLCAyMzksIDUxLCAyNDAsIDE3LCA3OCwgMTcsIDgsIDEsIAorICAgIDIzOSwgNTEsIDI0MCwgMTcsIDE2OSwgMTcsIDgsIDEsIDIzOSwgNTEsIDI0NSwgNDgsIDYxLCAxNywgOCwgMSwgMjM5LCA1MSwgCisgICAgMjQ1LCA0OCwgNDIsIDE3LCA4LCAxLCAyMzksIDUxLCAyNDUsIDQ4LCA3OCwgMTcsIDgsIDEsIDIzOSwgNTEsIDI0NSwgNDgsIAorICAgIDE2OSwgMTcsIDgsIDEsIDg3LCAyNTAsIDEyMiwgNjEsIDE3LCA4LCAxLCA4NywgMjUwLCAxMjIsIDQyLCAxNywgOCwgMSwgCisgICAgODcsIDI1MCwgMTIyLCAyLCAyMzksIDExMiwgODQsIDYxLCAxNywgOCwgMSwgODcsIDI1MCwgMTIyLCAyLCAyMzksIDExMiwgCisgICAgODQsIDQyLCAxNywgOCwgMTYsIDY3LCA1MiwgOCwgMTYsIDY3LCA1NSwgOCwgMTYsIDExOCwgMTc3LCA1MiwgOCwgMTYsIAorICAgIDExOCwgMTc3LCA1NSwgOCwgMTYsIDEyOSwgMTc3LCA1MiwgOCwgMTYsIDEyOSwgMTc3LCA1NSwgOCwgMTYsIDEyOSwgMTc3LCAKKyAgICAyMjAsIDIwMSwgMTczLCA1MiwgOCwgMTYsIDEyOSwgMTc3LCAyMjAsIDIwMSwgMTczLCA1NSwgOCwgMTYsIDI0MSwgMTI1LCAKKyAgICAxNzcsIDUyLCA4LCAxNiwgMjQxLCAxMjUsIDE3NywgNTUsIDgsIDE2LCA1MCwgNzksIDI1MCwgMTI5LCA1NSwgOCwgMTYsIAorICAgIDExOCwgMTc3LCAyMDgsIDIyOCwgNTIsIDgsIDE2LCAxMTgsIDE3NywgMjA4LCAyMjgsIDU1LCA4LCAxNiwgMjE4LCAxNDgsIAorICAgIDgsIDE2LCA1LCAyMTIsIDE5NSwgNTIsIDgsIDE2LCA1LCAyMTIsIDE5NSwgNTUsIDgsIDEsIDIyNSwgODAsIDYxLCAxNywgOCwgCisgICAgMSwgMjI1LCA4MCwgNDIsIDE3LCA4LCAxLCAyMjUsIDgwLCA3OCwgMTcsIDgsIDEsIDIyNSwgODAsIDE2OSwgMTcsIDgsIDEsIAorICAgIDEwNiwgNjEsIDE3LCA4LCAxLCAxMDYsIDQyLCAxNywgOCwgMSwgMjIyLCAyMDcsIDYxLCAxNywgOCwgMSwgMjIyLCAyMDcsIAorICAgIDQyLCAxNywgOCwgMSwgMjA1LCAyMTQsIDYxLCAxNywgOCwgMSwgMjA1LCAyMTQsIDQyLCAxNywgOCwgMSwgMTA2LCAyLCAKKyAgICAyMzksIDExMiwgODQsIDYxLCAxNywgOCwgMSwgMjA5LCA0MCwgNjEsIDE3LCA4LCAxLCAyMDksIDQwLCA0MiwgMTcsIDgsIDEsIAorICAgIDIzMSwgMTAxLCAyMjIsIDIwNywgNjEsIDE3LCA4LCAxLCAyMzEsIDEwMSwgMjIyLCAyMDcsIDQyLCAxNywgOCwgMSwgMjMxLCAKKyAgICAxMDEsIDIwNSwgMjE0LCA2MSwgMTcsIDgsIDEsIDIzMSwgMTAxLCAyMDUsIDIxNCwgNDIsIDE3LCA4LCAxLCAxNzQsIDYxLCAKKyAgICAxNywgOCwgMSwgMTc0LCA0MiwgMTcsIDgsIDEsIDE3NCwgNzgsIDE3LCA4LCAxLCAxNzQsIDE2OSwgMTcsIDgsIDEsIDIwOSwgCisgICAgMjUxLCAyMzEsIDIyOCwgMjMxLCAxMDEsIDEyNiwgMjI3LCAyMjksIDc4LCAxNywgOCwgMSwgMjA5LCAyNTEsIDIzMSwgMjI4LCAKKyAgICAyMzEsIDEwMSwgMTI2LCAyMjcsIDIyOSwgMTY5LCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDEyNiwgNjEsIAorICAgIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTI2LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgMjM5LCAxMTIsIAorICAgIDg0LCAyLCAyNTIsIDI0OSwgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMjUyLCAyNDksIDQyLCAxNywgCisgICAgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIwNywgNjAsIDYxLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgCisgICAgODQsIDIsIDIwNywgNjAsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDEwNiwgNjEsIDE3LCA4LCAKKyAgICAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTA2LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgMjM5LCAxMTIsIDg0LCAyLCAKKyAgICAyMjIsIDIwNywgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMjIyLCAyMDcsIDQyLCAxNywgOCwgMjgsIAorICAgIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIwNSwgMjE0LCA2MSwgMTcsIDgsIDI4LCA4NywgMiwgMjM5LCAxMTIsIDg0LCAyLCAKKyAgICAyMDUsIDIxNCwgNDIsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTc0LCA2MSwgMTcsIDgsIDI4LCA4NywgCisgICAgMiwgMjM5LCAxMTIsIDg0LCAyLCAxNzQsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDE3NCwgNzgsIAorICAgIDE3LCA4LCAyOCwgMjA5LCAyNTEsIDIzMSwgMTAxLCA4NywgMiwgMjM5LCAxMTIsIDg0LCAyLCAxMjYsIDIyNywgMjI5LCA2MSwgCisgICAgMTcsIDgsIDI4LCAyMDksIDI1MSwgMjMxLCAxMDEsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAKKyAgICAxNywgOCwgMjgsIDIwOSwgMjUxLCAyMzEsIDEwMSwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTI2LCAyMjcsIDIyOSwgNzgsIAorICAgIDE3LCA4LCAxLCAyNDIsIDQyLCA4NywgNjEsIDE3LCA4LCAxLCAyNDIsIDQyLCA4NywgNDIsIDE3LCA4LCAxLCAyNDIsIDQyLCAKKyAgICA4NywgNzgsIDE3LCA4LCAxLCAyNDIsIDQyLCA4NywgMTY5LCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIAorICAgIDE3MSwgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCA4NywgMiwgCisgICAgMjM5LCAxMTIsIDg0LCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTI2LCAyMjcsIAorICAgIDIyOSwgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgODcsIDYxLCAxNywgOCwgMjgsIDI1MCwgMzksIAorICAgIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgMjUwLCAzOSwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyNTAsIDM5LCAyLCAyMzEsIAorICAgIDE2NCwgNjEsIDE3LCA4LCAyOCwgMjUwLCAzOSwgMiwgODAsIDYxLCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDEyNiwgMjI3LCAKKyAgICAyMjksIDYxLCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMTcxLCA2MSwgCisgICAgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMjMxLCAxNjQsIDYxLCAKKyAgICAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDEyNiwgMjI3LCAyMjksIAorICAgIDYxLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgMjEyLCAzOCwgMiwgMTcxLCA2MSwgMTcsIAorICAgIDgsIDI4LCAyMTIsIDM4LCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjEyLCAzOCwgMiwgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCAKKyAgICA4LCAyOCwgMjEyLCAzOCwgMiwgODcsIDYxLCAxNywgOCwgMjgsIDE3MSwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAxNzEsIDIsIAorICAgIDgwLCA2MSwgMTcsIDgsIDI4LCAxNDAsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgMTQwLCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgCisgICAgMjMxLCAxNjQsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgMjMxLCAxNjQsIDIsIDE0MCwgNjEsIDE3LCA4LCAyOCwgMjMxLCAKKyAgICAxNjQsIDIsIDgwLCA2MSwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAxNzEsIDYxLCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIAorICAgIDE0MCwgNjEsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgMjMxLCAxNjQsIDYxLCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDgwLCAKKyAgICA2MSwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgODAsIDYxLCAxNywgCisgICAgOCwgMjgsIDI0NiwgMTQxLCAyLCAxNzEsIDYxLCAxNywgOCwgMjgsIDI0NiwgMTQxLCAyLCAxNDAsIDYxLCAxNywgOCwgMjgsIAorICAgIDI0NiwgMTQxLCAyLCAyMzEsIDE2NCwgNjEsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIDIsIDgwLCA2MSwgMTcsIDgsIDI4LCAKKyAgICAyMTIsIDE5NSwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMTIsIDE5NSwgMiwgODAsIDYxLCAxNywgOCwgMjgsIDIwNSwgCisgICAgMTEyLCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIAorICAgIDgwLCA2MSwgMTcsIDgsIDI4LCAyNDAsIDk1LCAyLCAxNzEsIDYxLCAxNywgOCwgMjgsIDI0MCwgOTUsIDIsIDgwLCA2MSwgCisgICAgMTcsIDgsIDI4LCAyNDIsIDE2LCAyLCAxNzEsIDYxLCAxNywgOCwgMjgsIDI0MiwgMTYsIDIsIDE0MCwgNjEsIDE3LCA4LCAKKyAgICAyOCwgMjQyLCAxNiwgMiwgMjMxLCAxNjQsIDYxLCAxNywgOCwgMjgsIDI0MiwgMTYsIDIsIDgwLCA2MSwgMTcsIDgsIDI4LCAKKyAgICAyNDIsIDE2LCAyLCAxMjYsIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCAyNDIsIDE2LCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgCisgICAgMjIwLCAxMywgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMjAsIDEzLCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjIwLCAxMywgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjIwLCAxMywgMiwgODcsIDYxLCAxNywgOCwgMjgsIDIzMiwgNDYsIAorICAgIDIsIDEyNiwgNjEsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgMTcxLCA2MSwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAyLCAxNDAsIAorICAgIDYxLCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDIzMSwgMTY0LCA2MSwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAyLCAyMzAsIDEwNywgCisgICAgNjEsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgODAsIDYxLCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDEyNiwgMjI3LCAyMjksIAorICAgIDYxLCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMTcxLCA2MSwgMTcsIAorICAgIDgsIDI4LCAyMzAsIDEwNywgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMjMxLCAxNjQsIDYxLCAxNywgOCwgCisgICAgMjgsIDIzMCwgMTA3LCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDEyNiwgMjI3LCAyMjksIDYxLCAxNywgCisgICAgOCwgMjgsIDIzMCwgMTA3LCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgODAsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgODAsIDIsIAorICAgIDE0MCwgNjEsIDE3LCA4LCAyOCwgODAsIDIsIDIzMSwgMTY0LCA2MSwgMTcsIDgsIDI4LCA4MCwgMiwgODAsIDYxLCAxNywgOCwgCisgICAgMjgsIDgwLCAyLCAxMjYsIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCA4MCwgMiwgODcsIDYxLCAxNywgOCwgMjgsIDIyNCwgCisgICAgNTUsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMjQsIDU1LCAyLCAKKyAgICAyMzEsIDE2NCwgNjEsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgODAsIDYxLCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDEyNiwgCisgICAgMjI3LCAyMjksIDYxLCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMzksIDUxLCAyLCAxNzEsIAorICAgIDYxLCAxNywgOCwgMjgsIDIzOSwgNTEsIDIsIDgwLCA2MSwgMTcsIDgsIDI4LCAyMzksIDUxLCAyLCAxMjYsIDIyNywgMjI5LCAKKyAgICA2MSwgMTcsIDgsIDI4LCAyMzksIDUxLCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDE3MSwgNjEsIDE3LCA4LCAyOCwgCisgICAgODcsIDIsIDE0MCwgNjEsIDE3LCA4LCAyOCwgODcsIDIsIDIzMSwgMTY0LCA2MSwgMTcsIDgsIDI4LCA4NywgMiwgODAsIDYxLCAKKyAgICAxNywgOCwgMjgsIDg3LCAyLCAxMjYsIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCA4NywgMiwgODcsIDYxLCAxNywgOCwgMjgsIAorICAgIDIxMiwgNTAsIDIsIDIxMywgMTM5LCAxMjYsIDYxLCAxNywgOCwgMjgsIDIxOSwgMTcsIDIsIDIxMywgMTM5LCAxMjYsIDYxLCAKKyAgICAxNywgOCwgMjgsIDEyNiwgMjI3LCAyMjksIDIsIDIxMywgMTM5LCAxMjYsIDYxLCAxNywgOCwgMjgsIDIxNSwgMjUwLCAyLCAKKyAgICAyNDYsIDEwNSwgNjEsIDE3LCA4LCAyOCwgMjE1LCAyNTAsIDIsIDIzMSwgMjUxLCA2MSwgMTcsIDgsIDI4LCAyMTUsIDI1MCwgCisgICAgMiwgMjQyLCA0MCwgNjEsIDE3LCA4LCAyOCwgMjE1LCAyNTAsIDIsIDI0NiwgMTA3LCA2MSwgMTcsIDgsIDI4LCAyMTUsIAorICAgIDI1MCwgMiwgMjMxLCAyNTMsIDYxLCAxNywgOCwgMjgsIDIxNSwgMjUwLCAyLCAyMTMsIDEzOSwgMTI2LCA2MSwgMTcsIDgsIAorICAgIDI4LCA4NywgMiwgMjM5LCAxMTIsIDg0LCAyLCAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgMjM5LCAxMTIsIDg0LCAKKyAgICAyLCAyMDUsIDEwOSwgNDIsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgODAsIDQyLCAxNywgOCwgMjgsIAorICAgIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIyNCwgNTUsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIAorICAgIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAKKyAgICAyNTAsIDM5LCAyLCAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCAyNTAsIDM5LCAyLCAyMDUsIDEwOSwgNDIsIDE3LCA4LCAyOCwgCisgICAgMjUwLCAzOSwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDIyNCwgNTUsIDQyLCAxNywgOCwgMjgsIDI1MCwgCisgICAgMzksIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMTIsIAorICAgIDExNiwgMiwgMjE5LCAxNywgNDIsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDIwNSwgMTA5LCA0MiwgMTcsIDgsIDI4LCAKKyAgICAyMTIsIDExNiwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAyMjQsIDU1LCA0MiwgMTcsIDgsIDI4LCAyMTIsIAorICAgIDExNiwgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAKKyAgICAyMTIsIDM4LCAyLCAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCAyMTIsIDM4LCAyLCAyMDUsIDEwOSwgNDIsIDE3LCA4LCAyOCwgCisgICAgMjEyLCAzOCwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDIxMiwgMzgsIDIsIDIyNCwgNTUsIDQyLCAxNywgOCwgMjgsIDIxMiwgCisgICAgMzgsIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIxMiwgMzgsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyNDIsIAorICAgIDE2LCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAyNDIsIDE2LCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjIwLCAKKyAgICAxMywgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjIwLCAxMywgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIzMiwgCisgICAgNDYsIDIsIDEyNiwgNDIsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgMjMwLCAxMDcsIDQyLCAxNywgOCwgMjgsIDIzMiwgNDYsIAorICAgIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAKKyAgICAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMTI2LCAKKyAgICAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCA4MCwgMiwgMTI2LCA0MiwgCisgICAgMTcsIDgsIDI4LCA4MCwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDIxOSwgMTcsIDQyLCAxNywgOCwgMjgsIAorICAgIDIyNCwgNTUsIDIsIDIwNSwgMTA5LCA0MiwgMTcsIDgsIDI4LCAyMjQsIDU1LCAyLCA4MCwgNDIsIDE3LCA4LCAyOCwgMjI0LCAKKyAgICA1NSwgMiwgMjI0LCA1NSwgNDIsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgCisgICAgMjI0LCA1NSwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDEyNiwgMjI3LCAyMjksIDIsIDIxMywgMTM5LCAxMjYsIDQyLCAxNywgCisgICAgOCwgMjgsIDg3LCAyLCAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgMjA1LCAxMDksIDQyLCAxNywgOCwgMjgsIDg3LCAKKyAgICAyLCA4MCwgNDIsIDE3LCA4LCAyOCwgODcsIDIsIDIyNCwgNTUsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAxMjYsIDIyNywgCisgICAgMjI5LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgODcsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIAorICAgIDE3MSwgNzgsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCA4NywgMiwgCisgICAgMjM5LCAxMTIsIDg0LCAyLCAyMzEsIDE2NCwgNzgsIDE3LCA4LCAyOCwgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgODAsIDc4LCAKKyAgICAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIzOSwgNTEsIDc4LCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIAorICAgIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjUwLCAzOSwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCAyNTAsIDM5LCAyLCAyMzEsIDE2NCwgCisgICAgNzgsIDE3LCA4LCAyOCwgMjUwLCAzOSwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDIzOSwgNTEsIDc4LCAKKyAgICAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAxNDAsIDc4LCAxNywgOCwgCisgICAgMjgsIDIxMiwgMTE2LCAyLCAyMzEsIDE2NCwgNzgsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAKKyAgICAyMTIsIDExNiwgMiwgMjM5LCA1MSwgNzgsIDE3LCA4LCAyOCwgMjEyLCAzOCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDE3MSwgCisgICAgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCAxNzEsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAxNDAsIDIsIDE3MSwgNzgsIDE3LCA4LCAKKyAgICAyOCwgMTQwLCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjMxLCAxNjQsIDIsIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjMxLCAxNjQsIAorICAgIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDE0MCwgCisgICAgNzgsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgMjMxLCAxNjQsIDc4LCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDgwLCA3OCwgCisgICAgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgMjMxLCAxNjQsIDc4LCAKKyAgICAxNywgOCwgMjgsIDIxNywgMTkyLCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIDIsIDE3MSwgNzgsIDE3LCA4LCAKKyAgICAyOCwgMjQ2LCAxNDEsIDIsIDE0MCwgNzgsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIDIsIDIzMSwgMTY0LCA3OCwgMTcsIDgsIAorICAgIDI4LCAyNDYsIDE0MSwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxMiwgMTk1LCAyLCAxNDAsIDc4LCAxNywgOCwgMjgsIDIwNSwgCisgICAgMTEyLCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIAorICAgIDgwLCA3OCwgMTcsIDgsIDI4LCAyNDAsIDk1LCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDI0MCwgOTUsIDIsIDgwLCA3OCwgCisgICAgMTcsIDgsIDI4LCAyNDIsIDE2LCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDI0MiwgMTYsIDIsIDE0MCwgNzgsIDE3LCA4LCAKKyAgICAyOCwgMjQyLCAxNiwgMiwgMjMxLCAxNjQsIDc4LCAxNywgOCwgMjgsIDI0MiwgMTYsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAKKyAgICAyMjAsIDEzLCAyLCAxNDAsIDc4LCAxNywgOCwgMjgsIDIyMCwgMTMsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAKKyAgICAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDE0MCwgNzgsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgMjMxLCAKKyAgICAxNjQsIDc4LCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDIzMCwgMTA3LCA3OCwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAyLCA4MCwgCisgICAgNzgsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDE0MCwgNzgsIDE3LCAKKyAgICA4LCAyOCwgMjMwLCAxMDcsIDIsIDIzMSwgMTY0LCA3OCwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgODAsIDc4LCAxNywgOCwgCisgICAgMjgsIDIzMCwgMTA3LCAyLCAyMzksIDUxLCA3OCwgMTcsIDgsIDI4LCA4MCwgMiwgMTcxLCA3OCwgMTcsIDgsIDI4LCA4MCwgCisgICAgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCA4MCwgMiwgMjMxLCAxNjQsIDc4LCAxNywgOCwgMjgsIDgwLCAyLCA4MCwgNzgsIDE3LCAKKyAgICA4LCAyOCwgMjI0LCA1NSwgMiwgMTcxLCA3OCwgMTcsIDgsIDI4LCAyMjQsIDU1LCAyLCAxNDAsIDc4LCAxNywgOCwgMjgsIAorICAgIDIyNCwgNTUsIDIsIDIzMSwgMTY0LCA3OCwgMTcsIDgsIDI4LCAyMjQsIDU1LCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjI0LCAKKyAgICA1NSwgMiwgMjM5LCA1MSwgNzgsIDE3LCA4LCAyOCwgMjM5LCA1MSwgMiwgMTcxLCA3OCwgMTcsIDgsIDI4LCAyMzksIDUxLCAKKyAgICAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjM5LCA1MSwgMiwgMjEzLCAxMzksIDEyNiwgNzgsIDE3LCA4LCAyOCwgODcsIDIsIAorICAgIDE3MSwgNzgsIDE3LCA4LCAyOCwgODcsIDIsIDE0MCwgNzgsIDE3LCA4LCAyOCwgODcsIDIsIDIzMSwgMTY0LCA3OCwgMTcsIAorICAgIDgsIDI4LCA4NywgMiwgODAsIDc4LCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDUxLCA3OCwgMTcsIDgsIDI4LCA4NywgMiwgCisgICAgMjM5LCAxMTIsIDg0LCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIzOSwgNTEsIAorICAgIDE2OSwgMTcsIDgsIDI4LCAyNTAsIDM5LCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIDI1MCwgMzksIDIsIDIzOSwgNTEsIDE2OSwgCisgICAgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgODAsIDE2OSwgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMjM5LCA1MSwgMTY5LCAKKyAgICAxNywgOCwgMjgsIDIxMiwgMzgsIDIsIDgwLCAxNjksIDE3LCA4LCAyOCwgMjEyLCAzOCwgMiwgMjM5LCA1MSwgMTY5LCAxNywgCisgICAgOCwgMjgsIDIxNywgNzEsIDIsIDgwLCAxNjksIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgMjM5LCA1MSwgMTY5LCAxNywgOCwgCisgICAgMjgsIDIxNSwgMjExLCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAyMzksIDUxLCAxNjksIDE3LCA4LCAKKyAgICAyOCwgMjMyLCA0NiwgMiwgMjMwLCAxMDcsIDE2OSwgMTcsIDgsIDI4LCAyMzIsIDQ2LCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIAorICAgIDIzMCwgMTA3LCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDgwLCAxNjksIDE3LCA4LCAyOCwgMjI0LCA1NSwgCisgICAgMiwgMjM5LCA1MSwgMTY5LCAxNywgOCwgMjgsIDg3LCAyLCA4MCwgMTY5LCAxNywgOCwgMjgsIDg3LCAyLCAyMzksIDUxLCAKKyAgICAxNjksIDE3LCA4LCAyOCwgMjE1LCAyNTAsIDIsIDI0MiwgNDAsIDE2OSwgMTcsIDgsIDI4LCAyMTUsIDI1MCwgMiwgMjQ2LCAKKyAgICAxMDcsIDE2OSwgMTcsIDgsIDI4LCAyMTUsIDI1MCwgMiwgMjMxLCAyNTMsIDE2OSwgMTcsIDgsIDI4LCAyMTIsIDE5NSwgMiwgCisgICAgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjEyLCAxOTUsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyNTIsIDIwMSwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyNDAsIDk1LCAKKyAgICAyLCAxMjYsIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCAyNDAsIDk1LCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgMjE3LCA3MSwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgODcsIDYxLCAxNywgOCwgMjgsIDIxNSwgMjExLCAKKyAgICAyLCAxMjYsIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgODcsIDYxLCAxNywgOCwgMjgsIDE0MCwgMiwgCisgICAgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMTQwLCAyLCA4NywgNjEsIDE3LCA4LCAyOCwgMTcxLCAyLCAxMjYsIAorICAgIDIyNywgMjI5LCA2MSwgMTcsIDgsIDI4LCAxNzEsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMzEsIDE2NCwgMiwgMTI2LCAKKyAgICAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjMxLCAxNjQsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgCisgICAgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjE3LCAxOTIsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyNDYsIDE0MSwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNjEsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIDIsIDg3LCA2MSwgMTcsIDgsIDI4LCAyMTUsIAorICAgIDIxMSwgMiwgMTcxLCA2MSwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgMTQwLCA2MSwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgCisgICAgMjMxLCAxNjQsIDYxLCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCA4MCwgNjEsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIAorICAgIDIxOSwgMTcsIDYxLCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDIxOSwgMTcsIDYxLCAxNywgOCwgMjgsIDIxNywgMTkyLCAyLCAKKyAgICAyMTksIDE3LCA2MSwgMTcsIDgsIDI4LCAyNDYsIDE0MSwgMiwgMjE5LCAxNywgNjEsIDE3LCA4LCAyOCwgMjEyLCAxOTUsIDIsIAorICAgIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIxMiwgMTk1LCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIAorICAgIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDI1MiwgMjAxLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjQwLCA5NSwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjQwLCA5NSwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIxNywgNzEsIAorICAgIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAxNDAsIDIsIAorICAgIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDE0MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDE3MSwgMiwgMTI2LCAKKyAgICAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMTcxLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjMxLCAxNjQsIDIsIDEyNiwgCisgICAgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIzMSwgMTY0LCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjE3LCAxOTIsIDIsIAorICAgIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIxNywgMTkyLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIAorICAgIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDI0NiwgMTQxLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjE1LCAKKyAgICAyMTEsIDIsIDE3MSwgNDIsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIDE0MCwgNDIsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIAorICAgIDIzMSwgMTY0LCA0MiwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAKKyAgICAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAyMTksIDE3LCA0MiwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgCisgICAgMjE5LCAxNywgNDIsIDE3LCA4LCAyOCwgMjQ2LCAxNDEsIDIsIDIxOSwgMTcsIDQyLCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAKKyAgICAxNzEsIDc4LCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAxNDAsIDc4LCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAyMzEsIAorICAgIDE2NCwgNzgsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAyMzksIDUxLCAKKyAgICA3OCwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgMjM5LCA1MSwgNzgsIDE3LCA4LCAyOCwgMjEyLCAxOTUsIDIsIDgwLCA3OCwgCisgICAgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAxNzEsIDE2OSwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAxNDAsIDE2OSwgMTcsIDgsIAorICAgIDI4LCAyMTcsIDcxLCAyLCAyMzEsIDE2NCwgMTY5LCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAxNzEsIDE2OSwgMTcsIDgsIAorICAgIDI4LCAyMTUsIDIxMSwgMiwgMTQwLCAxNjksIDE3LCA4LCAyOCwgMjE1LCAyMTEsIDIsIDIzMSwgMTY0LCAxNjksIDE3LCA4LCAKKyAgICAyOCwgMjEyLCAxOTUsIDIsIDgwLCAxNjksIDE3LCA4LCAyOCwgMjA1LCAxMTIsIDIsIDgwLCAxNjksIDE3LCA4LCAyOCwgCisgICAgMTI2LCAyLCAyNDIsIDM4LCA0MiwgMTcsIDgsIDI4LCAxMjYsIDIsIDI0MiwgMzgsIDYxLCAxNywgMjIyLCAxMTAsIDQ3LCAKKyAgICAyMjEsIDIxNiwgMjIyLCAxMTAsIDQ4LCAyMjEsIDIxNiwgOCwgMjgsIDIxMiwgMTE2LCAyLCAxNzEsIDIsIDgwLCA3OCwgMTcsIAorICAgIDgsIDI4LCAyMTIsIDExNiwgMiwgMTQwLCAyLCAxNzEsIDQyLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAxNDAsIDIsIDE3MSwgCisgICAgNzgsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDE0MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAyMzEsIAorICAgIDE2NCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCA4MCwgMiwgMTcxLCA3OCwgMTcsIDgsIDI4LCAyMTIsIAorICAgIDExNiwgMiwgODAsIDIsIDE0MCwgNzgsIDE3LCA4LCAyOCwgMjEyLCAxMTYsIDIsIDgwLCAyLCAyMzEsIDE2NCwgNzgsIDE3LCAKKyAgICA4LCAyOCwgMTcxLCAyLCA4MCwgMiwgMTQwLCA0MiwgMTcsIDgsIDI4LCAxNzEsIDIsIDgwLCAyLCAxNDAsIDc4LCAxNywgOCwgCisgICAgMjgsIDE0MCwgMiwgODAsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAxNDAsIDIsIDgwLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgCisgICAgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAxNDAsIDIsIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgMTcxLCAyLCAKKyAgICAxNDAsIDc4LCAxNywgOCwgMjgsIDIxNywgNzEsIDIsIDE3MSwgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgCisgICAgMjE3LCA3MSwgMiwgODAsIDIsIDE0MCwgNDIsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgODAsIDIsIDE0MCwgNzgsIDE3LCA4LCAKKyAgICAyOCwgMjE3LCA3MSwgMiwgODAsIDIsIDE3MSwgNzgsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgODAsIDIsIDgwLCA0MiwgMTcsIAorICAgIDgsIDI4LCAyMTcsIDcxLCAyLCA4MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxNywgMTkyLCAyLCAxNDAsIDIsIDE0MCwgCisgICAgNDIsIDE3LCA4LCAyOCwgMjE3LCAxOTIsIDIsIDE0MCwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCAyMTcsIDE5MiwgMiwgODAsIAorICAgIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgMTQwLCAyLCA4MCwgNDIsIDE3LCA4LCAyOCwgMjE1LCAyMTEsIAorICAgIDIsIDE0MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAxNzEsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAKKyAgICAyMTUsIDIxMSwgMiwgODAsIDIsIDIzMSwgMTY0LCA0MiwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgODAsIDIsIDIzMSwgCisgICAgMTY0LCA3OCwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgODAsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyMTUsIDIxMSwgMiwgCisgICAgODAsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAyNDYsIDE0MSwgMiwgMTQwLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIAorICAgIDI4LCAyNDYsIDE0MSwgMiwgMjMxLCAxNjQsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyNDYsIDE0MSwgMiwgMjMxLCAxNjQsIAorICAgIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCAyMTIsIDE5NSwgMiwgODAsIDIsIDE0MCwgNDIsIDE3LCA4LCAyOCwgMjEyLCAxOTUsIAorICAgIDIsIDgwLCAyLCAxNDAsIDc4LCAxNywgOCwgMjgsIDIxMiwgMTk1LCAyLCA4MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIxMiwgCisgICAgMTk1LCAyLCA4MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDI1MiwgMjAxLCAyLCAxNzEsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAKKyAgICAyNTIsIDIwMSwgMiwgODAsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCAyNTIsIDIwMSwgMiwgODAsIDIsIDgwLCA3OCwgMTcsIDgsIAorICAgIDI4LCAyNTIsIDIwMSwgMiwgODAsIDIsIDEyNiwgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDI0MCwgOTUsIDIsIDgwLCAyLCAKKyAgICA4MCwgNDIsIDE3LCA4LCAyOCwgMjQwLCA5NSwgMiwgODAsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyNDAsIDk1LCAyLCA4MCwgCisgICAgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMjQyLCAxNiwgMiwgMjMxLCAxNjQsIDIsIDgwLCA0MiwgMTcsIDgsIAorICAgIDI4LCAyNDIsIDE2LCAyLCAyMzEsIDE2NCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIyMCwgMTMsIDIsIDgwLCAyLCAxNDAsIAorICAgIDQyLCAxNywgOCwgMjgsIDIyMCwgMTMsIDIsIDgwLCAyLCA4MCwgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDE0MCwgMiwgCisgICAgODAsIDQyLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCAxNDAsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgCisgICAgMTQwLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMTcxLCAyLCAxNzEsIDc4LCAxNywgCisgICAgOCwgMjgsIDIzMCwgMTA3LCAyLCAxNzEsIDIsIDE3MSwgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDIzMSwgMTY0LCAyLCAKKyAgICA4MCwgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDIzMSwgMTY0LCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIAorICAgIDIsIDgwLCAyLCAxNDAsIDQyLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCA4MCwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCA4MCwgCisgICAgMiwgMTQwLCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDgwLCAyLCAxNDAsIDIsIDgwLCA3OCwgMTcsIDgsIDI4LCA4MCwgMiwgCisgICAgMTQwLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgODAsIDIsIDE3MSwgMiwgMTQwLCA3OCwgMTcsIDgsIDI4LCA4MCwgMiwgMTcxLCAKKyAgICAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgODAsIDIsIDIzMSwgMTY0LCAyLCAxNzEsIDc4LCAxNywgOCwgMjgsIDgwLCAyLCAyMzEsIAorICAgIDE2NCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDgwLCAyLCAxNzEsIDIsIDIzMSwgMTY0LCA3OCwgMTcsIDgsIDI4LCAyMzksIAorICAgIDUxLCAyLCA4MCwgMiwgMTcxLCA3OCwgMTcsIDgsIDI4LCAyMzksIDUxLCAyLCA4MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIAorICAgIDIyNCwgNTUsIDIsIDE0MCwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDE0MCwgMiwgMTI2LCAyMjcsIDIyOSwgCisgICAgNDIsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgMTcxLCAyLCA4MCwgNDIsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgMTcxLCAyLCAKKyAgICA4MCwgNzgsIDE3LCA4LCAyOCwgMjI0LCA1NSwgMiwgMTcxLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAyMjQsIAorICAgIDU1LCAyLCA4MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDgwLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgCisgICAgMTcsIDgsIDI4LCA4NywgMiwgODAsIDIsIDgwLCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgODAsIDIsIDgwLCA3OCwgMTcsIDgsIAorICAgIDI4LCAyNTAsIDM5LCAyLCAyMzEsIDE2NCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCAxNzEsIDIsIDg3LCAKKyAgICA0MiwgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMTcxLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAyMTIsIAorICAgIDExNiwgMiwgMjMxLCAxNjQsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMTIsIDExNiwgMiwgMjMxLCAxNjQsIDIsIDEyNiwgCisgICAgMjI3LCAyMjksIDQyLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAyLCA4MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIxMiwgMTE2LCAKKyAgICAyLCA4MCwgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAyOCwgMTcxLCAyLCA4MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIAorICAgIDE3MSwgMiwgMTQwLCAyLCAxMjYsIDIyNywgMjI5LCA0MiwgMTcsIDgsIDI4LCAxNzEsIDIsIDgwLCAyLCAxMjYsIDIyNywgCisgICAgMjI5LCA0MiwgMTcsIDgsIDI4LCAyMTcsIDcxLCAyLCAyMzEsIDE2NCwgMiwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAKKyAgICAyOCwgMjE3LCAxOTIsIDIsIDE0MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDIxNSwgMjExLCAyLCAxNDAsIDIsIDg3LCA0MiwgCisgICAgMTcsIDgsIDI4LCAyNDYsIDE0MSwgMiwgMTQwLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDE3MSwgMiwgCisgICAgODcsIDQyLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCA4MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDg3LCAyLCAxNDAsIDIsIAorICAgIDg3LCA0MiwgMTcsIDgsIDI4LCA4NywgMiwgMTcxLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgODcsIDIsIDgwLCAyLCA4NywgCisgICAgNDIsIDE3LCA4LCAyOCwgODAsIDIsIDgwLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjIwLCAxMywgMiwgODAsIDIsIDg3LCAKKyAgICA0MiwgMTcsIDgsIDI4LCAyMjQsIDU1LCAyLCAxNDAsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMjAsIDEzLCAyLCA4MCwgMiwgCisgICAgMTQwLCA3OCwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMTQwLCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjUyLCAyMDEsIDIsIAorICAgIDgwLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgODAsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMjQsIDU1LCAKKyAgICAyLCAxNzEsIDIsIDE0MCwgNzgsIDE3LCA4LCAyOCwgODAsIDIsIDIzMSwgMTY0LCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgCisgICAgMjMwLCAxMDcsIDIsIDE3MSwgMiwgODAsIDc4LCAxNywgOCwgMjgsIDIzMiwgNDYsIDIsIDgwLCAyLCA4MCwgNDIsIDE3LCA4LCAKKyAgICAyOCwgMjMwLCAxMDcsIDIsIDE3MSwgMiwgODAsIDQyLCAxNywgOCwgMjgsIDIyNCwgNTUsIDIsIDE3MSwgMiwgMTQwLCA0MiwgCisgICAgMTcsIDgsIDI4LCAxNzEsIDIsIDE0MCwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDE0MCwgMiwgMTcxLCAyLCA4NywgNDIsIDE3LCAKKyAgICA4LCAyOCwgODAsIDIsIDE3MSwgMiwgODcsIDQyLCAxNywgOCwgMjgsIDI0MiwgMTYsIDIsIDgwLCAyLCA4NywgNDIsIDE3LCAKKyAgICA4LCAyOCwgMjUwLCAzOSwgMiwgMTQwLCAyLCA4NywgNDIsIDE3LCA4LCAyOCwgMjMyLCA0NiwgMiwgODAsIDIsIDgwLCA3OCwgCisgICAgMTcsIDgsIDI4LCAyNTIsIDIwMSwgMiwgMTcxLCAyLCA4MCwgNzgsIDE3LCA4LCAyOCwgMjE3LCAxOTIsIDIsIDgwLCAyLCAKKyAgICA4MCwgNzgsIDE3LCA4LCAyOCwgMjE3LCA3MSwgMiwgMjMxLCAxNjQsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMjQsIDU1LCAKKyAgICAyLCAxNzEsIDIsIDg3LCA0MiwgMTcsIDgsIDI4LCAyMTcsIDE2OCwgMjA5LCAxNzIsIDI1MSwgMjMyLCAyMzEsIDI1LCAyMTMsIAorICAgIDI1MiwgMywgNjEsIDE3LCA4LCAyOCwgMjIwLCA5LCAyMDksIDE3MiwgMjUxLCAyMzIsIDIzMSwgMjUsIDIxMywgMjUyLCAzLCAKKyAgICA2MSwgMTcsIDgsIDI4LCAyNTIsIDE1NSwgNjEsIDE3LCA4LCAyOCwgMjUyLCAxODYsIDYxLCAxNywgOCwgMjgsIDIyNiwgCisgICAgMTcxLCA2MSwgMTcsIDgsIDI4LCAyMTcsIDE2OSwgNjEsIDE3LCA4LCAyOCwgMjE5LCA2NywgNjEsIDE3LCA4LCAyOCwgMjUyLCAKKyAgICAxNzUsIDYxLCAxNywgOCwgMjgsIDIwNywgNzksIDYxLCAxNywgOCwgMjgsIDIxNywgMTY4LCA2MSwgMTcsIDgsIDI4LCAyMTcsIAorICAgIDE2NywgMjUyLCAxNzUsIDIwNywgNzgsIDgsIDI4LCAyMzIsIDE5MiwgMjE4LCAyMDcsIDUzLCA4LCAyOCwgMjQ5LCAyMTEsIAorICAgIDI1MiwgMzUsIDI1MiwgMzYsIDU0LCAyMTcsIDU4LCA1NCwgMjE2LCAyMDMsIDU0LCAyMTYsIDEzNSwgNTQsIDIxNiwgMTI0LCAKKyAgICA1NCwgMjE2LCAxMTMsIDU0LCAyMTYsIDEwMiwgNTQsIDIxNiwgOTEsIDU0LCAyMTYsIDgwLCA1NCwgMjE2LCA2OSwgNTQsIAorICAgIDIxNywgNTcsIDU0LCAyMTcsIDQ2LCA1NCwgMjE3LCAzNSwgNTQsIDIxNywgMjQsIDU0LCAyMTcsIDEzLCA1NCwgMjE3LCAyLCAKKyAgICA1NCwgMjE2LCAyNDcsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCAyNDcsIDE1NSwgMjIwLCAxMzEsIDI0MSwgMTM2LCAKKyAgICAzMywgNzksIDEyOCwgMjQ3LCAxNTUsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCAxMjgsIDI0MSwgODIsIDIxMywgCisgICAgMjUxLCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgMjQ3LCAxNjIsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCAKKyAgICAyMTYsIDUyLCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgMjQyLCAxNjgsIDgzLCAyMjAsIDEzMSwgMjQxLCAxMzYsIAorICAgIDMzLCA3OSwgMjE5LCAxOTYsIDgzLCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgNDcsIDU5LCAyMzAsIDE2LCAxNDUsIAorICAgIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0OCwgNTksIDIzMCwgMTYsIDI0OSwgMTMyLCAyMjAsIDEzMSwgMjQxLCAKKyAgICAxMzYsIDMzLCA3OSwgMTk0LCAyNDMsIDU0LCAzNiwgMjgsIDQ3LCAyMzksIDEyMSwgMzYsIDI4LCA0OCwgMjM5LCAxMjEsIAorICAgIDM2LCA1MCwgMjExLCAxODEsIDQ3LCAyMzksIDEyMSwgMzYsIDUwLCAyMTEsIDE4MSwgNDgsIDIzOSwgMTIxLCAzNiwgMjI4LCAKKyAgICAxNCwgNDcsIDIzOSwgMTIxLCAzNiwgMjI4LCAxNCwgNDgsIDIzOSwgMTIxLCAzNiwgMjQ3LCAxMzAsIDIyOCwgMTMsIDM2LCAKKyAgICAyOCwgNDcsIDE2MCwgNTUsIDM2LCAyOCwgNDgsIDE2MCwgNTUsIDM2LCAyMTEsIDE4MSwgNDcsIDE2MCwgNTUsIDM2LCAyMTEsIAorICAgIDE4MSwgNDgsIDE2MCwgNTUsIDM2LCAyMjgsIDE0LCA0NywgMTYwLCA1NSwgMzYsIDIyOCwgMTQsIDQ4LCAxNjAsIDU1LCAzNiwgCisgICAgMjQ3LCAxMzAsIDIyOCwgMTQsIDU1LCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgMTE4LCA2NywgMjMwLCA1NiwgMjIwLCAKKyAgICAxMzEsIDI0MSwgMTM2LCAzMywgNzksIDI0MywgNTEsIDI0NiwgNzgsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCAyNDMsIAorICAgIDQyLCAyNDYsIDc4LCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgMTE0LCAyMjksIDIwNSwgMjIwLCAxMzEsIDI0MSwgCisgICAgMTM2LCAzMywgNzksIDIwNywgNjEsIDExNCwgMjI5LCAyMDUsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0NywgMjIxLCAKKyAgICAyMTYsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0OCwgMjIxLCAyMTYsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIAorICAgIDc5LCA0NywgMjQ3LCAyNiwgMTQ1LCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgNDgsIDI0NywgMjYsIDE0NSwgMjIwLCAKKyAgICAxMzEsIDI0MSwgMTM2LCAzMywgNzksIDQ3LCAyMTEsIDkzLCAyMTUsIDIwNCwgMTQ1LCAyMjAsIDEzMSwgMjQxLCAxMzYsIAorICAgIDMzLCA3OSwgNDgsIDIxMSwgOTMsIDIxNSwgMjA0LCAxNDUsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0NywgNjAsIAorICAgIDIzMCwgMTYsIDE0NSwgMjIwLCAxMzEsIDI0MSwgMTM2LCAzMywgNzksIDQ4LCA2MCwgMjMwLCAxNiwgMTQ1LCAyMjAsIDEzMSwgCisgICAgMjQxLCAxMzYsIDMzLCA3OSwgNDcsIDUwLCAyNTIsIDEwOSwgMTQ1LCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgNDgsIAorICAgIDUwLCAyNTIsIDEwOSwgMTQ1LCAyMjAsIDEzMSwgMjQxLCAxMzYsIDMzLCA3OSwgNDcsIDI1MiwgMTA5LCAxNDUsIDIyMCwgCisgICAgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0OCwgMjUyLCAxMDksIDE0NSwgMjIwLCAxMzEsIDI0MSwgMTM2LCAzMywgNzksIDQ3LCAKKyAgICAyNDcsIDkyLCAxNDUsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0OCwgMjQ3LCA5MiwgMTQ1LCAyMjAsIDEzMSwgCisgICAgMjQxLCAxMzYsIDMzLCA3OSwgNDcsIDU5LCAyNDcsIDkyLCAxNDUsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCA0OCwgCisgICAgNTksIDI0NywgOTIsIDE0NSwgMjE2LCAzMiwgMjQ1LCAyMywgNTksIDIxNiwgMzIsIDI0NSwgMjMsIDIyMCwgMTMxLCAyNDEsIAorICAgIDEzNiwgMzMsIDc5LCA0NywgNDksIDE0NSwgMjIwLCAxMzEsIDI0MSwgMTM2LCAzMywgNzksIDQ4LCA0OSwgMTQ1LCAyNDYsIAorICAgIDc3LCAyMjIsIDgxLCAyNDgsIDEyNSwgMjIyLCA4MSwgMjA3LCA2MSwgMjIyLCA4MSwgNTAsIDIwNywgNjEsIDIyMiwgODEsIAorICAgIDI0NiwgNzcsIDExNCwgMjI5LCAyMDUsIDI0OCwgMTI1LCAxMTQsIDIyOSwgMjA1LCAyMDcsIDYxLCAxMTQsIDIyOSwgMjA1LCAKKyAgICA1LCAyNDcsIDE1NSwgNSwgMTI4LCAyNDcsIDE1NSwgNSwgMjQxLCA4MiwgMjEzLCAyNTEsIDUsIDIxNiwgNTIsIDUsIDI0NywgCisgICAgMTYyLCA1LCAyMTksIDE5NiwgODMsIDUsIDI0MiwgMTY4LCA4MywgNSwgMjQzLCA1MSwgMjQ2LCA3OCwgNSwgNDcsIDIyMSwgCisgICAgMjE2LCA1LCA0OCwgMjIxLCAyMTYsIDUsIDQ3LCAyNDcsIDI2LCAxNDUsIDUsIDQ4LCAyNDcsIDI2LCAxNDUsIDUsIDQ3LCAKKyAgICAyMTEsIDkzLCAyMTUsIDIwNCwgMTQ1LCA1LCA0OCwgMjExLCA5MywgMjE1LCAyMDQsIDE0NSwgNSwgNDMsIDUzLCA1LCAyNTIsIAorICAgIDEyNSwgNSwgMjUxLCAyMDksIDUsIDEwMSwgNTMsIDUsIDIzNywgMjM4LCA1LCAyMzAsIDEwLCA1MywgNSwgMjM5LCAyMzAsIAorICAgIDUzLCA1LCAyNDIsIDI0MiwgNTMsIDUsIDIxOCwgMjI1LCAyMTQsIDE4MCwgNSwgMjQ1LCAzNSwgNTMsIDUsIDIyMSwgMTMxLCAKKyAgICA1MywgNSwgMjQ3LCAxNTMsIDI1MSwgMTk5LCA4LCAyNDIsIDM4LCA2MSwgMTcsIDgsIDIxMiwgMTU0LCAyLCAyNDIsIDM4LCAKKyAgICA1MiwgOCwgMjQ2LCAxMDUsIDYxLCAxNywgOCwgMjEyLCAxOTIsIDI0MSwgMTE1LCA4LCAyMzEsIDI1MSwgNjEsIDE3LCA4LCAKKyAgICAyNDIsIDQwLCA2MSwgMTcsIDgsIDI0MiwgNDAsIDE2OSwgMTcsIDgsIDI0NiwgMTA3LCA2MSwgMTcsIDgsIDI0NiwgMTA3LCAKKyAgICAxNjksIDE3LCA4LCAyMzEsIDI1MywgNjEsIDE3LCA4LCAyMzEsIDI1MywgMTY5LCAxNywgOCwgMjE1LCAyNTAsIDYxLCAxNywgCisgICAgOCwgMjE1LCAyNTAsIDE2OSwgMTcsIDgsIDIxMywgMTYzLCA2MSwgMTcsIDgsIDIxMywgMTYzLCAxNjksIDE3LCA4LCAxLCAKKyAgICAyMzksIDExMiwgNjEsIDE3LCA4LCAxLCAxMjYsIDIsIDIyOCwgOSwgODQsIDYxLCAxNywgOCwgMSwgMTI2LCAyLCAyMjgsIDksIAorICAgIDg0LCA0MiwgMTcsIDgsIDEsIDEyNiwgMiwgMjM5LCAxMTIsIDg0LCA2MSwgMTcsIDgsIDEsIDEyNiwgMiwgMjM5LCAxMTIsIAorICAgIDg0LCA0MiwgMTcsIDgsIDEsIDIwNywgNjAsIDIsIDIzOSwgMTEyLCA4NCwgNjEsIDE3LCA4LCAxLCAyMDcsIDYwLCAyLCAKKyAgICAyMzksIDExMiwgODQsIDQyLCAxNywgOCwgMSwgMTI2LCAyLCAyMzksIDExMiwgMjUwLCAyNiwgNjEsIDE3LCA4LCAxLCAxMjYsIAorICAgIDIsIDIzOSwgMTEyLCAyNTAsIDI2LCA0MiwgMTcsIDgsIDEsIDg3LCAyLCAyMzksIDExMiwgODQsIDYxLCAxNywgOCwgMSwgCisgICAgODcsIDIsIDIzOSwgMTEyLCA4NCwgNDIsIDE3LCA4LCAxLCA4NywgMiwgMjM5LCAxMTIsIDg0LCA3OCwgMTcsIDgsIDEsIDg3LCAKKyAgICAyLCAyMzksIDExMiwgODQsIDE2OSwgMTcsIDgsIDEsIDEyNiwgNjEsIDE3LCA4LCAxLCAxMjYsIDQyLCAxNywgOCwgMSwgCisgICAgMjUwLCAzOSwgNjEsIDE3LCA4LCAxLCAyNTAsIDM5LCA0MiwgMTcsIDgsIDEsIDI1MCwgMzksIDc4LCAxNywgOCwgMSwgMjUwLCAKKyAgICAzOSwgMTY5LCAxNywgOCwgMSwgMjEyLCAxMTYsIDIyNywgMTk4LCA2MSwgMTcsIDgsIDEsIDIxMiwgMTE2LCAyMjcsIDE5OCwgCisgICAgNDIsIDE3LCA4LCAxLCAyMTIsIDExNiwgNjEsIDE3LCA4LCAxLCAyMTIsIDExNiwgNDIsIDE3LCA4LCAxLCAyMTIsIDExNiwgCisgICAgNzgsIDE3LCA4LCAxLCAyMTIsIDExNiwgMTY5LCAxNywgOCwgMSwgMjEyLCAzOCwgNjEsIDE3LCA4LCAxLCAyMTIsIDM4LCAKKyAgICA0MiwgMTcsIDgsIDEsIDIxMiwgMzgsIDc4LCAxNywgOCwgMSwgMjEyLCAzOCwgMTY5LCAxNywgOCwgMSwgMTcxLCA2MSwgMTcsIAorICAgIDgsIDEsIDE3MSwgNDIsIDE3LCA4LCAxLCAxNzEsIDc4LCAxNywgOCwgMSwgMTcxLCAxNjksIDE3LCA4LCAxLCAxNDAsIDYxLCAKKyAgICAxNywgOCwgMSwgMTQwLCA0MiwgMTcsIDgsIDEsIDE0MCwgNzgsIDE3LCA4LCAxLCAxNDAsIDE2OSwgMTcsIDgsIDEsIDIzMSwgCisgICAgMTY0LCA2MSwgMTcsIDgsIDEsIDIzMSwgMTY0LCA0MiwgMTcsIDgsIDEsIDIzMSwgMTY0LCA3OCwgMTcsIDgsIDEsIDIzMSwgCisgICAgMTY0LCAxNjksIDE3LCA4LCAxLCAyNDYsIDExOCwgNjEsIDE3LCA4LCAxLCAyNDYsIDExOCwgNDIsIDE3LCA4LCAxLCAyMTIsIAorICAgIDUwLCA2MSwgMTcsIDgsIDEsIDIxMiwgNTAsIDQyLCAxNywgOCwgMSwgMjE5LCAxNywgNjEsIDE3LCA4LCAxLCAyMTksIDE3LCAKKyAgICA0MiwgMTcsIDgsIDEsIDIwNSwgMTA5LCA2MSwgMTcsIDgsIDEsIDIwNSwgMTA5LCA0MiwgMTcsIDgsIDEsIDIxNywgNzEsIAorICAgIDYxLCAxNywgOCwgMSwgMjE3LCA3MSwgNDIsIDE3LCA4LCAxLCAyMTcsIDcxLCA3OCwgMTcsIDgsIDEsIDIxNywgNzEsIDE2OSwgCisgICAgMTcsIDgsIDEsIDIxNSwgMjExLCA2MSwgMTcsIDgsIDEsIDIxNSwgMjExLCA0MiwgMTcsIDgsIDEsIDIxNSwgMjExLCA3OCwgCisgICAgMTcsIDgsIDEsIDIxNSwgMjExLCAxNjksIDE3LCA4LCAxLCAyMTcsIDE5MiwgNjEsIDE3LCA4LCAxLCAyMTcsIDE5MiwgNDIsIAorICAgIDE3LCA4LCAxLCAyMTcsIDE5MiwgNzgsIDE3LCA4LCAxLCAyMTcsIDE5MiwgMTY5LCAxNywgOCwgMSwgMjQ2LCAxNDEsIDYxLCAKKyAgICAxNywgOCwgMSwgMjQ2LCAxNDEsIDQyLCAxNywgOCwgMSwgMjQ2LCAxNDEsIDc4LCAxNywgOCwgMSwgMjQ2LCAxNDEsIDE2OSwgCisgICAgMTcsIDgsIDEsIDIxMiwgMTk1LCA2MSwgMTcsIDgsIDEsIDIxMiwgMTk1LCA0MiwgMTcsIDgsIDEsIDIxMiwgMTk1LCA3OCwgCisgICAgMTcsIDgsIDEsIDIxMiwgMTk1LCAxNjksIDE3LCA4LCAxLCAyMDUsIDExMiwgNjEsIDE3LCA4LCAxLCAyMDUsIDExMiwgNDIsIAorICAgIDE3LCA4LCAxLCAyMDUsIDExMiwgNzgsIDE3LCA4LCAxLCAyMDUsIDExMiwgMTY5LCAxNywgOCwgMSwgMjUyLCAyMDEsIDYxLCAKKyAgICAxNywgOCwgMSwgMjUyLCAyMDEsIDQyLCAxNywgOCwgMSwgMjUyLCAyMDEsIDc4LCAxNywgOCwgMSwgMjUyLCAyMDEsIDE2OSwgCisgICAgMTcsIDgsIDEsIDI0MCwgOTUsIDYxLCAxNywgOCwgMSwgMjQwLCA5NSwgNDIsIDE3LCA4LCAxLCAyNDAsIDk1LCA3OCwgMTcsIAorICAgIDgsIDEsIDI0MCwgOTUsIDE2OSwgMTcsIDgsIDEsIDI0MiwgMTYsIDYxLCAxNywgOCwgMSwgMjQyLCAxNiwgNDIsIDE3LCA4LCAKKyAgICAxLCAyNDIsIDE2LCA3OCwgMTcsIDgsIDEsIDI0MiwgMTYsIDE2OSwgMTcsIDgsIDEsIDIyMCwgMTMsIDYxLCAxNywgOCwgMSwgCisgICAgMjIwLCAxMywgNDIsIDE3LCA4LCAxLCAyMjAsIDEzLCA3OCwgMTcsIDgsIDEsIDIyMCwgMTMsIDE2OSwgMTcsIDgsIDEsIAorICAgIDIzMiwgNDYsIDYxLCAxNywgOCwgMSwgMjMyLCA0NiwgNDIsIDE3LCA4LCAxLCAyMzIsIDQ2LCA3OCwgMTcsIDgsIDEsIDIzMiwgCisgICAgNDYsIDE2OSwgMTcsIDgsIDEsIDIzMCwgMTA3LCA2MSwgMTcsIDgsIDEsIDIzMCwgMTA3LCA0MiwgMTcsIDgsIDEsIDIzMCwgCisgICAgMTA3LCA3OCwgMTcsIDgsIDEsIDIzMCwgMTA3LCAxNjksIDE3LCA4LCAxLCA4MCwgNjEsIDE3LCA4LCAxLCA4MCwgNDIsIDE3LCAKKyAgICA4LCAxLCA4MCwgNzgsIDE3LCA4LCAxLCA4MCwgMTY5LCAxNywgOCwgMSwgMjI0LCA1NSwgNjEsIDE3LCA4LCAxLCAyMjQsIAorICAgIDU1LCA0MiwgMTcsIDgsIDEsIDIyNCwgNTUsIDc4LCAxNywgOCwgMSwgMjI0LCA1NSwgMTY5LCAxNywgOCwgMSwgMjM5LCA1MSwgCisgICAgNjEsIDE3LCA4LCAxLCAyMzksIDUxLCA0MiwgMTcsIDgsIDEsIDIzOSwgNTEsIDc4LCAxNywgOCwgMSwgMjM5LCA1MSwgMTY5LCAKKyAgICAxNywgOCwgMSwgMjA3LCA2MCwgNjEsIDE3LCA4LCAxLCAyMDcsIDYwLCA0MiwgMTcsIDgsIDEsIDEyNiwgMjI3LCAyMjksIAorICAgIDYxLCAxNywgOCwgMSwgMTI2LCAyMjcsIDIyOSwgNDIsIDE3LCA4LCAxLCA4NywgNjEsIDE3LCA4LCAxLCA4NywgNDIsIDE3LCAKKyAgICA4LCAxLCA4NywgNzgsIDE3LCA4LCAxLCA4NywgMTY5LCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCAxMjYsIDIsIDIyOCwgOSwgCisgICAgODQsIDYxLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCAxMjYsIDIsIDIyOCwgOSwgODQsIDQyLCAxNywgOCwgMjgsIDIzMCwgCisgICAgMTA3LCAyLCAxMjYsIDIsIDIzOSwgMTEyLCA4NCwgNjEsIDE3LCA4LCAyOCwgMjMwLCAxMDcsIDIsIDEyNiwgMiwgMjM5LCAKKyAgICAxMTIsIDg0LCA0MiwgMTcsIDgsIDI4LCAyMzAsIDEwNywgMiwgMTI2LCAyLCAyMzksIDExMiwgMjUwLCAyNiwgNjEsIDE3LCAKKyAgICA4LCAyOCwgMjMwLCAxMDcsIDIsIDEyNiwgMiwgMjM5LCAxMTIsIDI1MCwgMjYsIDQyLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAKKyAgICAyLCAxMjYsIDYxLCAxNywgOCwgMjgsIDIzMCwgMTA3LCAyLCAxMjYsIDQyLCAxNywgMjA1LCA4NiwgMjA3LCAxNSwgMjI0LCAKKyAgICA2NiwgMjE0LCAxNTMsIDE0NCwgMjQyLCAxNjgsIDgzLCAxNDQsIDIxOSwgMTgwLCA4MywgMTQ0LCA0MywgNTMsIDE0NCwgCisgICAgMjQ1LCAzNSwgNTMsIDE0NCwgMjIxLCAxMzEsIDUzLCAxNDQsIDI1MiwgMTI1LCAxNDQsIDI1MiwgNTMsIDE0NCwgNDcsIAorICAgIDIyMSwgMjE2LCAxNDQsIDQ4LCAyMjEsIDIxNiwgMTQ0LCAyNTEsIDIwOSwgMTQ0LCAxMDEsIDUzLCAxNDQsIDI0NywgMTU1LCAKKyAgICAxNDQsIDIzNywgMjM4LCAxNDQsIDI0MSwgODIsIDIxMywgMjUxLCAxNDQsIDIxNCwgMTgwLCAxNDQsIDE4LCAyMDUsIDg1LCAKKyAgICAxNDQsIDE4LCAxMDIsIDE0NCwgMTgsIDEwNSwgMTQ0LCAxOCwgMTQyLCAxNDQsIDE4LCAxMzksIDE0NCwgMTgsIDE2OCwgCisgICAgMTQ0LCAxOCwgMTg0LCAxNDQsIDE4LCAxOTUsIDE0NCwgMTgsIDE5MywgMTQ0LCAxOCwgMjAwLCAxNDQsIDI0NywgMTYyLCAKKyAgICAxNDQsIDIxNiwgNTIsIDE0NCwgMjMwLCAxMCwgNTMsIDE0NCwgMjQyLCAyNDIsIDUzLCAxNDQsIDIzOSwgMjMwLCA1MywgCisgICAgMTQ0LCAyMTksIDE5NiwgODMsIDE0NCwgMjQ3LCAxNTMsIDI1MSwgMTk5LCAxNDQsIDcsIDYsIDEsIDYyLCAxNDQsIDcsIDYsIAorICAgIDEsIDI1MSwgMTUwLCAxNDQsIDcsIDYsIDEsIDI0OSwgMzQsIDE0NCwgNywgNiwgMSwgMjQ2LCAyNDAsIDE0NCwgNywgNiwgMSwgCisgICAgNzUsIDE0NCwgNywgNiwgMSwgMjQyLCAxMzksIDE0NCwgNywgNiwgMSwgMjQxLCA1NSwgMTQ0LCA3LCA2LCAxLCAyMzksIAorICAgIDE1NSwgMTQ0LCA3LCA2LCAxLCA3NCwgMTQ0LCA3LCA2LCAxLCAyMzIsIDIwMywgMTQ0LCA3LCA2LCAxLCAyMzIsIDc2LCAKKyAgICAxNDQsIDcsIDYsIDEsIDE0OSwgMTQ0LCA3LCA2LCAxLCAyMjksIDI4LCAxNDQsIDcsIDYsIDEsIDIyNiwgMzMsIDE0NCwgNywgCisgICAgNiwgMSwgNzYsIDE0NCwgNywgNiwgMSwgMjIyLCA2NywgMTQ0LCA3LCA2LCAxLCAyMjAsIDI3LCAxNDQsIDcsIDYsIDEsIAorICAgIDEzNywgMTQ0LCA3LCA2LCAxLCAxODIsIDE0NCwgNywgNiwgMSwgMjEzLCAxMCwgMTQ0LCA3LCA2LCAxLCA3MSwgMTQ0LCA3LCAKKyAgICA2LCAxLCAyMDksIDE0OCwgMTQ0LCA3LCA2LCAxLCAyMDcsIDEyOSwgMTQ0LCA3LCA2LCAxLCAyMDYsIDE5NSwgMTQ0LCA3LCAKKyAgICA2LCAxLCAyMDYsIDEyMywgMTQ0LCA3LCA2LCAxLCAyMDUsIDE1OSwgMTQ0LCA0NywgNDksIDE0NSwgMTQ0LCAyMTgsIDIyNSwgCisgICAgMjE0LCAxODAsIDE0NCwgNDgsIDQ5LCAxNDUsIDE0NCwgMjQ3LCAyMjgsIDI1MywgMjEsIDE0NCwgMTE0LCAyMjksIDIwNSwgCisgICAgMTQ0LCAyMzksIDIzNywgMjUzLCAyMSwgMTQ0LCA3LCA1LCAxLCA2MiwgMTQ0LCA3LCA1LCAxLCAyNTEsIDE1MCwgMTQ0LCA3LCAKKyAgICA1LCAxLCAyNDksIDM0LCAxNDQsIDcsIDUsIDEsIDI0NiwgMjQwLCAxNDQsIDcsIDUsIDEsIDc1LCAxNDQsIDcsIDUsIDEsIAorICAgIDI0MiwgMTM5LCAxNDQsIDcsIDUsIDEsIDI0MSwgNTUsIDE0NCwgNywgNSwgMSwgMjM5LCAxNTUsIDE0NCwgNywgNSwgMSwgCisgICAgNzQsIDE0NCwgNywgNSwgMSwgMjMyLCAyMDMsIDE0NCwgNywgNSwgMSwgMjMyLCA3NiwgMTQ0LCA3LCA1LCAxLCAxNDksIAorICAgIDE0NCwgNywgNSwgMSwgMjI5LCAyOCwgMTQ0LCA3LCA1LCAxLCAyMjYsIDMzLCAxNDQsIDcsIDUsIDEsIDc2LCAxNDQsIDcsIAorICAgIDUsIDEsIDIyMiwgNjcsIDE0NCwgNywgNSwgMSwgMjIwLCAyNywgMTQ0LCA3LCA1LCAxLCAxMzcsIDE0NCwgNywgNSwgMSwgCisgICAgMTgyLCAxNDQsIDcsIDUsIDEsIDIxMywgMTAsIDE0NCwgNywgNSwgMSwgNzEsIDE0NCwgNywgNSwgMSwgMjA5LCAxNDgsIAorICAgIDE0NCwgNywgNSwgMSwgMjA3LCAxMjksIDE0NCwgNywgNSwgMSwgMjA2LCAxOTUsIDE0NCwgNywgNSwgMSwgMjA2LCAxMjMsIAorICAgIDE0NCwgNywgNSwgMSwgMjA1LCAxNTksIDE0NCwgNDcsIDI0NywgMjYsIDE0NSwgMTQ0LCA3OSwgMjI5LCAyMDUsIDE0NCwgCisgICAgNDgsIDI0NywgMjYsIDE0NSwgMTQ0LCAyMTEsIDE4MCwgMTQ0LCA0NywgNTksIDIyMSwgMjE2LCAxNDQsIDQ4LCA1OSwgMjIxLCAKKyAgICAyMTYsIDExNiwgMTI4LCAyNDEsIDgyLCAyMTMsIDI1MSwgMTE2LCA0NywgMjQ3LCA5MiwgMTQ1LCAxMTYsIDQ4LCAyNDcsIAorICAgIDkyLCAxNDUsIDExNiwgMTI4LCAyNDcsIDE1NSwgMTE2LCA2NCwgMjI2LCAyNDcsIDI0NSwgMjMsIDExNiwgNjQsIDEsIDIwNiwgCisgICAgMjUwLCAxMTYsIDY0LCAxLCA1LCA2MiwgMTE2LCA2NCwgMSwgNSwgNzQsIDExNiwgNjQsIDEsIDUsIDcxLCAxMTYsIDY0LCAxLCAKKyAgICA1LCA3NSwgMTE2LCA2NCwgMSwgNSwgNzYsIDExNiwgNjQsIDEsIDUsIDE5MCwgMTE2LCA2NCwgMSwgNSwgMjA1LCAyMTMsIAorICAgIDExNiwgNjQsIDEsIDUsIDIwNSwgMjQ3LCAxMTYsIDY0LCAxLCA1LCAyMTAsIDE3MCwgMTE2LCAyMzEsIDI0OCwgMjIwLCAKKyAgICAxMDYsIDIxNCwgMTY1LCA4MywgMTE2LCA2NCwgMSwgNjIsIDExNiwgNjQsIDEsIDc0LCAxMTYsIDY0LCAxLCA3MSwgMTE2LCAKKyAgICA2NCwgMSwgNzUsIDExNiwgNjQsIDEsIDc2LCAxMTYsIDY0LCAxLCAxNzIsIDExNiwgNjQsIDEsIDIzMSwgMTIzLCAxMTYsIAorICAgIDY0LCAxLCAyMzAsIDIzNiwgMTE2LCA2NCwgMSwgMjMxLCAyMjQsIDExNiwgNjQsIDEsIDIzMSwgNTMsIDExNiwgNjQsIDEsIAorICAgIDIxNywgMTk5LCAxMTYsIDY0LCAxLCAyMTUsIDgwLCAxMTYsIDY0LCAxLCAyMTMsIDIwMywgMTE2LCA2NCwgMSwgMjE3LCA4NiwgCisgICAgMTE2LCA2NCwgMSwgMjE0LCAxOTMsIDExNiwgNjQsIDEsIDIxMiwgMjE5LCAxMTYsIDY0LCAxLCAyMTEsIDIxMSwgMTE2LCAKKyAgICA2NCwgMSwgMjEwLCAxNzAsIDExNiwgNjQsIDEsIDIxMiwgMTMxLCAxMTYsIDY0LCAxLCAxMjQsIDExNiwgNjQsIDEsIDE5OSwgCisgICAgMTE2LCA2NCwgMSwgMjI0LCAyMzAsIDExNiwgNjQsIDEsIDIyMywgMjE3LCAxMTYsIDY0LCAxLCAyMjUsIDExMCwgMTE2LCAKKyAgICA2NCwgMSwgMjI0LCA2NywgMTE2LCA2NCwgMSwgMTU1LCAxMTYsIDY0LCAxLCAyMzksIDExLCAxMTYsIDY0LCAxLCAyMzgsIAorICAgIDQyLCAxMTYsIDY0LCAxLCAyMzksIDcxLCAxMTYsIDY0LCAxLCAyMzgsIDE0OSwgMTE2LCA2NCwgMSwgMTg1LCAxMTYsIDY0LCAKKyAgICAxLCAyMjYsIDI1NCwgMTE2LCA2NCwgMSwgMjI2LCAxMTQsIDExNiwgNjQsIDEsIDIyNywgMTE5LCAxMTYsIDY0LCAxLCAyMjYsIAorICAgIDE4MSwgMTE2LCA2NCwgMSwgMTkwLCAxMTYsIDY0LCAxLCAyMDUsIDIxMywgMTE2LCA2NCwgMSwgMjA1LCAyNDcsIDExNiwgCisgICAgNjQsIDEsIDIxOSwgMTEzLCAxMTYsIDY0LCAxLCAyMTgsIDIwOCwgMTE2LCA2NCwgMSwgMjE4LCA1MCwgMTE2LCA2NCwgMSwgCisgICAgMjE5LCA1MSwgMTE2LCA2NCwgMSwgMjE4LCAxMjQsIDExNiwgNjQsIDEsIDIwNywgOTYsIDExNiwgNjQsIDEsIDIyNiwgMzMsIAorICAgIDExNiwgNjQsIDIwOCwgMTcwLCAyMTQsIDE2NSwgODMsIDExNiwgNjQsIDIxNiwgNTcsIDIxNCwgMTY1LCA4MywgMTE2LCAyNSwgCisgICAgMjQxLCAyMzIsIDExNiwgMjUsIDEsIDIzMSwgODQsIDExNiwgMjUsIDEsIDIxNCwgODgsIDExNiwgMjUsIDEsIDIzMSwgNzcsIAorICAgIDExNiwgMjUsIDEsIDIyNCwgMjIzLCAxMTYsIDI1LCAxLCAyMjQsIDIyMSwgMTE2LCAyNSwgMSwgMjI0LCAyMjAsIDExNiwgCisgICAgMjUsIDEsIDIxMSwgMTkzLCAxMTYsIDI1LCAxLCAyMTQsIDc3LCAxMTYsIDI1LCAxLCAyMTgsIDE5OCwgMTE2LCAyNSwgMSwgCisgICAgMjE4LCAxOTMsIDExNiwgMjUsIDEsIDIxOCwgMTkwLCAxMTYsIDI1LCAxLCAyMTgsIDE4MywgMTE2LCAyNSwgMSwgMjE4LCAKKyAgICAxNzgsIDExNiwgMjUsIDEsIDIxOCwgMTczLCAxMTYsIDI1LCAxLCAyMTgsIDE4NCwgMTE2LCAyNSwgMSwgMjE4LCAxOTYsIAorICAgIDExNiwgMjUsIDEsIDIyNiwgMjQwLCAxMTYsIDI1LCAxLCAyMjEsIDM5LCAxMTYsIDI1LCAxLCAyMTQsIDg1LCAxMTYsIDI1LCAKKyAgICAxLCAyMjEsIDI4LCAxMTYsIDI1LCAxLCAyMTUsIDMzLCAxMTYsIDI1LCAxLCAyMTQsIDgyLCAxMTYsIDI1LCAxLCAyMzMsIAorICAgIDEyNSwgMTE2LCAyNSwgMSwgMjQ3LCAyNDYsIDExNiwgMjUsIDEsIDIxNCwgOTIsIDExNiwgMjUsIDEsIDI0OCwgNTQsIDExNiwgCisgICAgMjUsIDEsIDIzMSwgMTQzLCAxMTYsIDI1LCAxLCAyMTIsIDE1LCAxMTYsIDI1LCAxLCAyMjEsIDc2LCAxMTYsIDI1LCAxLCAKKyAgICAyMzksIDMsIDExNiwgMjUsIDEsIDYyLCAxMTYsIDI1LCAxLCAyNTIsIDI0OCwgMTE2LCAyNSwgMSwgMTkwLCAxMTYsIDI1LCAKKyAgICAxLCAyMDYsIDk4LCAxMTYsIDI1LCAxLCAyNDMsIDYsIDExNiwgMjUsIDEsIDc1LCAxMTYsIDI1LCAxLCAyMDYsIDM5LCAxMTYsIAorICAgIDI1LCAxLCAyMDYsIDUyLCAxMTYsIDI1LCAxLCA3NiwgMTE2LCAyNSwgMSwgMjA3LCA5NiwgMTE2LCAyNSwgMSwgMjA3LCA5MiwgCisgICAgMTE2LCAyNSwgMSwgMjIyLCAyMDYsIDExNiwgMjUsIDEsIDIwNSwgMjQ3LCAxMTYsIDI1LCAxLCA3MSwgMTE2LCAyNSwgMSwgCisgICAgMjA3LCAzOCwgMTE2LCAyNSwgMSwgMjA3LCA1MSwgMTE2LCAyNSwgMSwgMjA3LCAyMCwgMTE2LCAyNSwgMSwgMjA1LCAyMTMsIAorICAgIDExNiwgMjUsIDEsIDI0MiwgMTkyLCAxMTYsIDI1LCAxLCAyMDYsIDExLCAxMTYsIDI1LCAxLCA3NCwgMTQ0LCAyNDgsIDEzMSwgCisgICAgNTMsIDE0NCwgMjIwLCAxNjUsIDUzLCAxNDQsIDIyNCwgNDMsIDUzLCAxNDQsIDIyOCwgMTMsIDE0NCwgMjQ5LCAxMTEsIAorICAgIDEzNCwgMTQ0LCAyMDYsIDQzLCA1MywgMTQ0LCAyMDYsIDI0MCwgNTMsIDExNiwgMjQxLCAxMzMsIDE0NywgMjA5LCAyMiwgCisgICAgMTE2LCA5MiwgNDUsIDExNiwgMTY3LCA0NSwgMTE2LCA4NiwgNDUsIDExNiwgMTczLCA0NSwgMTE2LCA2MCwgMjE0LCAxMDcsIAorICAgIDExNiwgNTksIDI0NywgMjMzLCAyMzMsIDE0LCAyNTIsIDk4LCAyNTIsIDExOSwgMjMzLCAxNCwgMjUyLCA5OCwgMjE2LCAzOSwgCisgICAgMjMzLCAxNCwgMjUyLCA5OCwgMjEyLCA4NiwgMjIyLCAyMjMsIDIxOCwgMjQ3LCAyNDgsIDk0LCAyMTgsIDI0NywgMjQ4LCAKKyAgICA5NCwgMjYsIDYzLCA0LCAyNTEsIDEzNCwgNjIsIDI2LCA2MywgNCwgMjUxLCAxMDMsIDc1LCAyNiwgNjMsIDQsIDI1MSwgCisgICAgMTEyLCA3NCwgMjYsIDYzLCA0LCAyNTEsIDgwLCA3NiwgMjYsIDYzLCA0LCAyNTEsIDEzMCwgNzEsIDI2LCA2MywgNCwgMjUxLCAKKyAgICAxNDksIDI0NiwgMTQ1LCAyNiwgNjMsIDQsIDI1MSwgOTYsIDI0NiwgOSwgMjYsIDYzLCA0LCAyNTEsIDEzNiwgMjQ1LCAxNjgsIAorICAgIDI2LCA2MywgNCwgMjUxLCAxMjYsIDI0NSwgNTEsIDI2LCA2MywgNCwgMjUxLCA5MCwgMjQzLCAyMzcsIDI2LCA2MywgNCwgCisgICAgMjUxLCA4NCwgMjMyLCAyMDAsIDI2LCA2MywgNCwgMjUxLCA5NSwgMjMyLCAxODIsIDI2LCA2MywgNCwgMjUxLCAxMDUsIAorICAgIDIzMiwgMTIyLCAyNiwgNjMsIDQsIDI1MSwgNzYsIDIzMiwgMTA0LCAyNiwgNjMsIDQsIDI1MSwgNjQsIDE3MiwgMjYsIDYzLCAKKyAgICA0LCAyNTEsIDk3LCAyMzEsIDIyNCwgMjYsIDYzLCA0LCAyNTEsIDc0LCAyMzEsIDEyMywgMjYsIDYzLCA0LCAyNTEsIDcxLCAKKyAgICAyMzEsIDUzLCAyNiwgNjMsIDQsIDI1MSwgNjAsIDIzMCwgMjM2LCAyNiwgNjMsIDQsIDI1MSwgNjEsIDE4NSwgMjYsIDYzLCAKKyAgICA0LCAyNTEsIDEyNywgMjI3LCAxMTksIDI2LCA2MywgNCwgMjUxLCA2OCwgMjI2LCAyNTQsIDI2LCA2MywgNCwgMjUxLCAxMjUsIAorICAgIDIyNiwgMTgxLCAyNiwgNjMsIDQsIDI1MSwgMTE3LCAyMjYsIDExNCwgMjYsIDYzLCA0LCAyNTEsIDEzOCwgMTk5LCAyNiwgCisgICAgNjMsIDQsIDI1MSwgMTE2LCAyMjUsIDExMCwgMjYsIDYzLCA0LCAyNTEsIDExMCwgMjI0LCAyMzAsIDI2LCA2MywgNCwgMjUxLCAKKyAgICA4OSwgMjI0LCA2NywgMjYsIDYzLCA0LCAyNTEsIDg2LCAyMjMsIDIxNywgMjYsIDYzLCA0LCAyNTEsIDE0NSwgMTc5LCAyNiwgCisgICAgNjMsIDQsIDI1MSwgNjksIDIyMSwgMTc0LCAyNiwgNjMsIDQsIDI1MSwgMTAyLCAyMjEsIDUzLCAyNiwgNjMsIDQsIDI1MSwgCisgICAgMTI5LCAyMjAsIDIxMSwgMjYsIDYzLCA0LCAyNTEsIDkxLCAyMjAsIDgyLCAyNiwgNjMsIDQsIDI1MSwgMTI0LCAyMjAsIDE5LCAKKyAgICAyNiwgNjMsIDQsIDI1MSwgNjMsIDIxOSwgMjU1LCAyNiwgNjMsIDQsIDI1MSwgMTE5LCAyMTksIDIzNywgMjYsIDYzLCA0LCAKKyAgICAyNTEsIDEwOCwgMjE5LCAyMjYsIDI2LCA2MywgNCwgMjUxLCA4MSwgMjE5LCAxMTMsIDI2LCA2MywgNCwgMjUxLCAxMTMsIAorICAgIDIxOSwgNTEsIDI2LCA2MywgNCwgMjUxLCA4OCwgMjE4LCAyMDgsIDI2LCA2MywgNCwgMjUxLCAxNDcsIDIxOCwgMTI0LCAyNiwgCisgICAgNjMsIDQsIDI1MSwgMTE0LCAyMTgsIDUwLCAyNiwgNjMsIDQsIDI1MSwgMTA5LCAyMTcsIDE5OSwgMjYsIDYzLCA0LCAyNTEsIAorICAgIDEzMiwgMjE3LCA4NiwgMjYsIDYzLCA0LCAyNTEsIDEwMCwgMjE1LCA4MCwgMjYsIDYzLCA0LCAyNTEsIDEyOCwgMjE0LCAKKyAgICAxOTMsIDI2LCA2MywgNCwgMjUxLCA4MywgMjEzLCAyMDMsIDI2LCA2MywgNCwgMjUxLCA4MiwgMjEyLCAyMTksIDI2LCA2MywgCisgICAgNCwgMjUxLCAxNDMsIDIxMiwgMTMxLCAyNiwgNjMsIDQsIDI1MSwgMTA0LCAyMTEsIDIxMSwgMjYsIDYzLCA0LCAyNTEsIAorICAgIDE0MSwgMTI0LCAyNiwgNjMsIDQsIDI1MSwgNzIsIDIxMCwgMTcwLCAyNiwgNjMsIDQsIDI1MSwgODcsIDIwNywgOTYsIDI2LCAKKyAgICA2MywgNCwgMjUxLCA2NiwgMjA3LCA1MSwgMjYsIDYzLCA0LCAyNTEsIDEwMSwgMjA3LCAyMCwgMjYsIDYzLCA0LCAyNTEsIAorICAgIDk5LCAyMDYsIDI1MCwgMjYsIDYzLCA0LCAyNTEsIDEyMywgMjA1LCAxMTYsIDI2LCA2MywgNCwgMjUxLCA2NywgMjA1LCA5MywgCisgICAgMjYsIDYzLCA0LCAyNTEsIDEyMCwgMjA1LCAxOSwgMjYsIDYzLCA0LCAyNTEsIDExNSwgMjU0LCAxNjYsIDI2LCA2MywgNCwgCisgICAgMjUxLCA5OCwgMjU0LCAxNjUsIDI2LCA2MywgNCwgMjUxLCA1NywgMjUxLCAxODQsIDI2LCA2MywgNCwgMjUxLCA3MCwgMjQzLCAKKyAgICAyMDUsIDI2LCA2MywgNCwgMjUxLCA1MywgMjQzLCAyMDQsIDI2LCA2MywgNCwgMjUxLCA5MywgMjIzLCAxNTMsIDI2LCA2MywgCisgICAgNCwgMjUxLCAxMTEsIDIyMCwgODAsIDI2LCA2MywgNCwgMjUxLCA3OSwgMjIwLCA4NCwgMjYsIDYzLCA0LCAyNTEsIDY1LCAKKyAgICAyMTksIDExMSwgMjYsIDYzLCA0LCAyNTEsIDEwNywgMjE5LCAxMTAsIDI2LCA2MywgNCwgMjUxLCA3MywgMjE4LCAxMjMsIAorICAgIDI2LCA2MywgNCwgMjUxLCA3NSwgMjEyLCAyMTYsIDI2LCA2MywgNCwgMjUxLCA1NSwgMjEwLCAxMjgsIDI2LCA2MywgNCwgCisgICAgMjUxLCA1MiwgMTA1LCAyNiwgNjMsIDE2LCAyNTEsIDEyMiwgMjYsIDYzLCAxNiwgMjUxLCAxMjEsIDI2LCA2MywgMTYsIAorICAgIDI1MSwgMTE4LCAyNiwgNjMsIDE2LCAyNTEsIDEwNiwgMjYsIDYzLCAxNiwgMjUxLCA5NCwgMjYsIDYzLCAxNiwgMjUxLCA5MiwgCisgICAgMjYsIDYzLCAxNiwgMjUxLCA4NSwgMjYsIDYzLCAxNiwgMjUxLCA3OCwgMjYsIDYzLCAxNiwgMjUxLCA3NywgMjYsIDYzLCAKKyAgICAxNiwgMjUxLCA2MiwgMjYsIDYzLCAxNiwgMjUxLCA1OSwgMjYsIDYzLCAxNiwgMjUxLCA1OCwgMjYsIDYzLCAxNiwgMjUxLCAKKyAgICA1NiwgMjYsIDYzLCAxNiwgMjUxLCA1NCwgMjYsIDYzLCAxMjIsIDI1MSwgNTEsIDIyNywgMjIxLCAyNiwgNjMsIDEyMiwgCisgICAgMjUxLCA1MCwgMjA2LCAyNDQsIDI2LCA2MywgMTIyLCAyNTEsIDQ5LCAyNDUsIDI0OCwgMjYsIDYzLCAxMjIsIDI1MSwgNDgsIAorICAgIDI0MiwgMjM5LCAyNiwgNjMsIDEyMiwgMjUxLCA0NywgMjI3LCAxOTIsIDI2LCA2MywgMTIyLCAyNTEsIDQ2LCAyMTQsIDMzLCAKKyAgICAyNiwgNjMsIDEyMiwgMjUxLCA0NSwgMjQyLCAxNzQsIDI2LCA2MywgMTIyLCAyNTEsIDQ0LCAyMTksIDc3LCAyNiwgNjMsIAorICAgIDEyMiwgMjUxLCA0MywgMjE1LCAyMTMsIDI2LCA2MywgMTIyLCAyNTEsIDQyLCAyMzksIDcwLCAyNiwgNjMsIDEyMiwgMjUxLCAKKyAgICA0MSwgMjE0LCAxNjAsIDI2LCA2MywgMTIyLCAyNTEsIDQwLCAyNDksIDE4MiwgMjYsIDYzLCAxMjIsIDI1MSwgMzksIDI0NywgCisgICAgNzUsIDI2LCA2MywgMTIyLCAyNTEsIDM4LCAyNDksIDg3LCAyNiwgNjMsIDEyMiwgMjUxLCAzNywgMjA3LCAyOCwgMjYsIDYzLCAKKyAgICAxMjIsIDI1MSwgMzYsIDI1MCwgMTI1LCAyNiwgNjMsIDEyMiwgMjUxLCAzNSwgMjIyLCAxNzUsIDI2LCA2MywgMTIyLCAyNTEsIAorICAgIDM0LCAyMTQsIDEzMiwgMjYsIDYzLCAxMjIsIDI1MSwgMzMsIDI0NiwgMjQ4LCAyNiwgNjMsIDIyNiwgMTYwLCAyNTEsIDMyLCAKKyAgICAyMzIsIDE2LCAyNiwgNjMsIDIyNiwgMTYwLCAyNTEsIDMxLCAyMzIsIDI1LCAyNiwgNjMsIDEyMiwgMjUxLCAzMCwgMjIyLCAKKyAgICAxODksIDI2LCA2MywgMTIyLCAyNTEsIDI5LCAyMDcsIDUsIDI2LCA2MywgMTIyLCAyNTEsIDI4LCAyNiwgNjMsIDIyNiwgCisgICAgMTYwLCAyNTEsIDI3LCAyNTIsIDEyLCAyNiwgNjMsIDIyNiwgMTYwLCAyNTEsIDI2LCAyMjcsIDc2LCAyNiwgNjMsIDEyMiwgCisgICAgMjUxLCAyNSwgMjQ5LCAxMTAsIDI2LCA2MywgMTIyLCAyNTEsIDI0LCAyNDAsIDExLCAyNiwgNjMsIDEyMiwgMjUxLCAyMywgCisgICAgMjYsIDYzLCAxMjIsIDI1MSwgMjIsIDIwNiwgMjM1LCAyNiwgNjMsIDEyMiwgMjUxLCAyMSwgMjYsIDYzLCAxMjIsIDI1MSwgCisgICAgMjAsIDI2LCA2MywgMTIyLCAyNTEsIDE5LCAyMzgsIDY5LCAyNiwgNjMsIDEyMiwgMjUxLCAxOCwgMjYsIDYzLCAxMjIsIAorICAgIDI1MSwgMTcsIDI2LCA2MywgMTIyLCAyNTEsIDE2LCAyNiwgNjMsIDIyNiwgMTYwLCAyNTEsIDE0LCAyMTAsIDE0MiwgMjYsIAorICAgIDYzLCAxMjIsIDI1MSwgMTMsIDI2LCA2MywgMTIyLCAyNTEsIDEyLCAyNiwgNjMsIDEyMiwgMjUxLCAxMSwgMjQ3LCAxODYsIAorICAgIDI2LCA2MywgMTIyLCAyNTEsIDEwLCAyNiwgNjMsIDEyMiwgMjUxLCA5LCAyNiwgNjMsIDEyMiwgMjUxLCA4LCAyNDAsIDIwMSwgCisgICAgMjYsIDYzLCAxMjIsIDI1MSwgNywgMjUxLCAyNTUsIDI2LCA2MywgMTIyLCAyNTEsIDYsIDI2LCA2MywgMTIyLCAyNTEsIDUsIAorICAgIDI2LCA2MywgMTIyLCAyNTEsIDQsIDI2LCA2MywgMTIyLCAyNTEsIDMsIDI2LCA2MywgMTIyLCAyNTEsIDIsIDI2LCA2MywgCisgICAgMTIyLCAyNTEsIDEsIDI2LCA2MywgMTIyLCAyNTEsIDAsIDI2LCA2MywgMTIyLCAyNTAsIDI1NSwgMjYsIDYzLCAxMjIsIAorICAgIDI1MCwgMjU0LCAyNiwgNjMsIDEyMiwgMjUwLCAyNTMsIDIyNiwgMTUyLCAyNiwgNjMsIDEyMiwgMjUwLCAyNTIsIDI2LCA2MywgCisgICAgMTIyLCAyNTAsIDI1MSwgMjExLCA2MSwgMjYsIDYzLCAxMjIsIDI1MCwgMjUwLCAyNiwgNjMsIDEyMiwgMjUwLCAyNDksIDI2LCAKKyAgICA2MywgMTIyLCAyNTAsIDI0OCwgMjYsIDYzLCAxMjIsIDI1MCwgMjQ3LCAyNiwgNjMsIDEyMiwgMjUwLCAyNDYsIDI2LCA2MywgCisgICAgMTIyLCAyNTAsIDI0NSwgMjYsIDYzLCAxMjIsIDI1MCwgMjQ0LCAyNiwgNjMsIDEyMiwgMjUwLCAyNDMsIDI2LCA2MywgMTIyLCAKKyAgICAyNTAsIDI0MiwgMjYsIDYzLCAxMjIsIDI1MCwgMjQxLCAyNiwgNjMsIDEyMiwgMjUwLCAyNDAsIDI2LCA2MywgMTIyLCAyNTAsIAorICAgIDIzOSwgMjM5LCA0MywgMjYsIDYzLCAxMjIsIDI1MCwgMjE4LCAyNDEsIDE0NCwgMjYsIDYzLCAxMjIsIDI1MCwgMjE1LCAKKyAgICAyNTAsIDEwMywgMjYsIDYzLCAxMjIsIDI1MCwgMjEwLCAyMTQsIDEzOSwgMjYsIDYzLCAxMjIsIDI1MCwgMjA5LCA0NSwgMjYsIAorICAgIDYzLCAxMjIsIDI1MCwgMjA4LCAyNiwgNjMsIDEyMiwgMjUwLCAyMDcsIDIxMywgOTUsIDI2LCA2MywgMTIyLCAyNTAsIDIwNiwgCisgICAgMjYsIDYzLCAxMjIsIDI1MCwgMjA1LCAyNiwgNjMsIDEyMiwgMjUwLCAyMDQsIDIwNywgMjQsIDI0OCwgOTEsIDI2LCA2MywgCisgICAgMTIyLCAyNTAsIDIwMywgMjQ4LCA5MSwgMjYsIDYzLCAxMjIsIDI1MCwgMjAyLCAyNDgsIDkyLCAyNDEsIDExMiwgMjYsIDYzLCAKKyAgICAxMjIsIDI1MCwgMjAxLCAyMDcsIDI2LCAyNiwgNjMsIDEyMiwgMjUwLCAyMDAsIDI2LCA2MywgMTIyLCAyNTAsIDE5OSwgMjYsIAorICAgIDYzLCAyMjYsIDE2MCwgMjUwLCAxOTgsIDI0NSwgMTA1LCAyNiwgNjMsIDEyMiwgMjUwLCAxOTcsIDI2LCA2MywgMTIyLCAKKyAgICAyNTAsIDE5NiwgMjYsIDYzLCAxMjIsIDI1MCwgMTk0LCAyNiwgNjMsIDEyMiwgMjUwLCAxOTMsIDI2LCA2MywgMTIyLCAyNTAsIAorICAgIDE5MiwgMjYsIDYzLCAxMjIsIDI1MCwgMTkxLCAyNDYsIDgxLCAyNiwgNjMsIDEyMiwgMjUwLCAxOTAsIDI2LCA2MywgMTIyLCAKKyAgICAyNTAsIDE4OSwgMjYsIDYzLCAxMjIsIDI1MCwgMTg4LCAyNiwgNjMsIDEyMiwgMjUwLCAxODcsIDI2LCA2MywgMTIyLCAyNTAsIAorICAgIDE4NiwgMjYsIDYzLCAxMjIsIDIwOCwgMjI1LCAyNTEsIDE1LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjM4LCAyNiwgCisgICAgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjM3LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjM2LCAyNiwgNjMsIAorICAgIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjM1LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjM0LCAyNiwgNjMsIDEyMiwgCisgICAgMjA4LCAyMjUsIDI1MCwgMjMzLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjMyLCAyNiwgNjMsIDEyMiwgMjA4LCAKKyAgICAyMjUsIDI1MCwgMjMxLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjMwLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIAorICAgIDI1MCwgMjI5LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjI4LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgCisgICAgMjI3LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjI2LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjI1LCAKKyAgICAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjI0LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjIzLCAyNiwgNjMsIAorICAgIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjIyLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjIxLCAyNiwgNjMsIDEyMiwgCisgICAgMjA4LCAyMjUsIDI1MCwgMjIwLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjE5LCAyNiwgNjMsIDEyMiwgMjA4LCAKKyAgICAyMjUsIDI1MCwgMjE3LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjE2LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIAorICAgIDI1MCwgMjE0LCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjEzLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgCisgICAgMjEyLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMjExLCAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMTk1LCAKKyAgICAyNiwgNjMsIDEyMiwgMjA4LCAyMjUsIDI1MCwgMTg1LCAyNTIsIDI0MSwgMjA2LCAyMzIsIDIxNiwgNDAsIDIyOSwgMjA1LCAKKyAgICAyNTIsIDI0MSwgMjA2LCAyMzIsIDIxNiwgNDAsIDI0NSwgMjMsIDI1MiwgMjQxLCAyNDgsIDgxLCA4MywgMjUyLCAyNDEsIAorICAgIDQzLCAxMDIsIDI1MiwgMjQxLCA0MywgMTA1LCAyNTIsIDI0MSwgNDMsIDE0MiwgMjUyLCAyNDEsIDQzLCAxMzksIDI1MiwgCisgICAgMjQxLCA0MywgMTY4LCAyNTIsIDI0MSwgNDMsIDE4NCwgMjUyLCAyNDEsIDQzLCAxOTUsIDI1MiwgMjQxLCA0MywgMTkzLCAKKyAgICAyNTIsIDI0MSwgNDMsIDIwMCwgMjUyLCAyNDEsIDQzLCAyMTIsIDk4LCAyNTIsIDI0MSwgNDMsIDIxMCwgMTIzLCAyNTIsIAorICAgIDI0MSwgNDMsIDIxMiwgMywgMjUyLCAyNDEsIDQzLCAyNDEsIDEzMCwgMjUyLCAyNDEsIDQzLCAyNDEsIDI0MywgMjUyLCAKKyAgICAyNDEsIDQzLCAyMTQsIDI1MiwgMjUyLCAyNDEsIDQzLCAyMTYsIDE3LCAyNTIsIDI0MSwgNDMsIDI0MywgNzksIDI1MiwgCisgICAgMjQxLCA0MywgMjI0LCAxOTAsIDI1MiwgMjQxLCA0MywgMTE5LCAyMzgsIDI5LCAyNTIsIDI0MSwgNDMsIDExOCwgMjM4LCAKKyAgICAyOSwgMjUyLCAyNDEsIDQzLCAxMjksIDIzOCwgMjksIDI1MiwgMjQxLCA0MywgMjQxLCAxMjUsIDIzOCwgMjksIDI1MiwgCisgICAgMjQxLCA0MywgMjQxLCAyMDQsIDIzOCwgMjksIDI1MiwgMjQxLCA0MywgMjE1LCAxMCwgMjM4LCAyOSwgMjUyLCAyNDEsIDQzLCAKKyAgICAyMTYsIDIzLCAyMzgsIDI5LCAyNTIsIDI0MSwgNDMsIDI0MywgODgsIDIzOCwgMjksIDI1MiwgMjQxLCA0MywgMjI0LCAxOTUsIAorICAgIDIzOCwgMjksIDI1MiwgMjQxLCA0MywgMTE5LCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAxMTgsIDIxMSwgMjQyLCAyNTIsIAorICAgIDI0MSwgNDMsIDEyOSwgMjExLCAyNDIsIDI1MiwgMjQxLCA0MywgMjQxLCAxMjUsIDIxMSwgMjQyLCAyNTIsIDI0MSwgNDMsIAorICAgIDI0MSwgMjA0LCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAyMTUsIDEwLCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAyMTYsIAorICAgIDIzLCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAyNDMsIDg4LCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAyMjQsIDE5NSwgCisgICAgMjExLCAyNDIsIDI1MiwgMjQxLCA0MywgMjEyLCA5OSwgMjExLCAyNDIsIDI1MiwgMjQxLCA0MywgMjEwLCAxMjQsIDIxMSwgCisgICAgMjQyLCAyNTIsIDI0MSwgNDMsIDIxMiwgNCwgMjExLCAyNDIsIDI1MiwgMjQxLCA0MywgMjQxLCAxMzEsIDIxMSwgMjQyLCAKKyAgICAyNTIsIDI0MSwgNDMsIDI0MSwgMjQ0LCAyMTEsIDI0MiwgMjUyLCAyNDEsIDQzLCAyMTQsIDI1MywgMjExLCAyNDIsIDI1MiwgCisgICAgMjQxLCA0MywgMjE2LCAxOCwgMjExLCAyNDIsIDI1MiwgMjQxLCA0MywgMjQzLCA4MCwgMjExLCAyNDIsIDI1MiwgMjQxLCAKKyAgICA0MywgMjI0LCAxOTEsIDIxMSwgMjQyLCAyNTIsIDI0MSwgMjA3LCA0MSwgMjUwLCAxMTcsIDIwOSwgMjE2LCAyNTIsIDI0MSwgCisgICAgMjA3LCA0MSwgMjQxLCAyMTUsIDIxMywgMTc3LCAyNTIsIDI0MSwgMjA3LCA0MSwgMjE3LCA4MCwgMjEzLCAxNzcsIDI1MiwgCisgICAgMjQxLCAyMDcsIDQxLCAyMTIsIDExLCAyMTMsIDE3NywgMjUyLCAyNDEsIDIwNywgNDEsIDI0MSwgMTE4LCAyMTMsIDE3NywgCisgICAgMjUyLCAyNDEsIDI0MywgMjQwLCAyMjcsIDExOCwgMjQxLCAyMTUsIDIxMywgMTc3LCAyNTIsIDI0MSwgMjI5LCAxODksIAorICAgIDIyNywgMTE4LCAyNDEsIDIxNSwgMjEzLCAxNzcsIDI1MiwgMjQxLCAyMjcsIDExOCwgMjE3LCA4MCwgMjEzLCAxNzcsIDI1MiwgCisgICAgMjQxLCAyMjcsIDExOCwgMjEyLCAxMSwgMjEzLCAxNzcsIDI3LCAyNTMsIDEyLCAyNTEsIDE4NiwgMTE5LCAyMTksIDIwNCwgCisgICAgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAxMTksIDIzOSwgMTIxLCAyNywgMjUzLCAxMiwgMjUxLCAxODYsIDExOSwgMjQ0LCAzLCAKKyAgICAyNywgMjUzLCAxMiwgMjUxLCAxODYsIDE2OCwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyNDEsIDI0MywgMjcsIDI1MywgMTIsIAorICAgIDI1MSwgMTg2LCAyNDEsIDIwNCwgMjM4LCAyOSwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyNDEsIDIwNCwgMjExLCAyNDIsIAorICAgIDI3LCAyNTMsIDEyLCAyNTEsIDE4NiwgMjQxLCAyNDQsIDIxMSwgMjQyLCAyNywgMjUzLCAxMiwgMjUxLCAxODYsIDI0MSwgCisgICAgMjA0LCAyMTIsIDE4MSwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyMTIsIDk5LCAyMTIsIDE4MSwgMjcsIDI1MywgMTIsIAorICAgIDI1MSwgMTg2LCAyNDEsIDI0NCwgMjEyLCAxODEsIDI3LCAyNTMsIDEyLCAyNTEsIDE4NiwgMTE5LCAyMzgsIDMwLCAyMTIsIAorICAgIDE4MSwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyNDEsIDIwNCwgMjM4LCAzMCwgMjEyLCAxODEsIDI3LCAyNTMsIDEyLCAKKyAgICAyNTEsIDE4NiwgMTE5LCAyMTEsIDI0MywgMjEyLCAxODEsIDI3LCAyNTMsIDEyLCAyNTEsIDE4NiwgMjQxLCAyMDQsIDIxMSwgCisgICAgMjQzLCAyMTIsIDE4MSwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyNDEsIDIwNCwgMjE0LCAyMCwgMjcsIDI1MywgMTIsIAorICAgIDI1MSwgMTg2LCAyMTIsIDk5LCAyMTQsIDIwLCAyNywgMjUzLCAxMiwgMjUxLCAxODYsIDI0MSwgMjQ0LCAyMTQsIDIwLCAyNywgCisgICAgMjUzLCAxMiwgMjUxLCAxODYsIDExOSwgMjM4LCAzMCwgMjE0LCAyMCwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyNDEsIAorICAgIDIwNCwgMjM4LCAzMCwgMjE0LCAyMCwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAxMTksIDIxMSwgMjQzLCAyMTQsIDIwLCAyNywgCisgICAgMjUzLCAxMiwgMjUxLCAxODYsIDIxMiwgOTksIDIxMSwgMjQzLCAyMTQsIDIwLCAyNywgMjUzLCAxMiwgMjUxLCAxODYsIAorICAgIDI0MSwgMjQ0LCAyMTEsIDI0MywgMjE0LCAyMCwgMjcsIDI1MywgMTIsIDI1MSwgMTg2LCAyMTIsIDk5LCAyMjYsIDE4NCwgCisgICAgMjcsIDI1MywgMTIsIDIzOSwgMzcsIDExOSwgMjIwLCAyMjgsIDI3LCAyNTMsIDEyLCAyMTIsIDI1LCAxMDIsIDI3LCAyNTMsIAorICAgIDEyLCAyMzksIDMzLCAxMDIsIDI3LCAyNTMsIDEyLCAyNDIsIDI0OCwgMTA1LCAyNywgMjUzLCAxMiwgMjEyLCAyNSwgMTA1LCAKKyAgICAyNywgMjUzLCAxMiwgMjQ2LCAyNDUsIDExOCwgMjQ0LCAyLCAyNywgMjUzLCAxMiwgMjQyLCAyNDgsIDExOCwgMjQ0LCAyLCAKKyAgICAyNywgMjUzLCAxMiwgMjExLCAyOCwgMTY4LCAyNywgMjUzLCAxMiwgMjExLCAyOCwgMjEyLCA5OCwgMjcsIDI1MywgMTIsIAorICAgIDIxMSwgMjgsIDIxMiwgOTksIDI1MiwgMTQxLCAxNywgMjcsIDI1MywgMTIsIDIzOSwgMzMsIDIxMiwgOTgsIDI3LCAyNTMsIAorICAgIDEyLCAyMjcsIDY1LCAyMTIsIDk4LCAyNywgMjUzLCAxMiwgMjEyLCAyNSwgMjEyLCA5OCwgMjcsIDI1MywgMTIsIDIxMiwgCisgICAgMjUsIDIxMiwgMywgMjcsIDI1MywgMTIsIDIxMSwgMjgsIDI0MSwgMjQzLCAyNywgMjUzLCAxMiwgMjExLCAyOCwgMjQxLCAKKyAgICAyNDQsIDI1MiwgMTQxLCAxNywgMjcsIDI1MywgMTIsIDIzOSwgMzMsIDI0MSwgMjQzLCAyNywgMjUzLCAxMiwgMjEyLCAyNSwgCisgICAgMjQxLCAyNDMsIDI3LCAyNTMsIDEyLCAyMTIsIDI1LCAxMTksIDIzOCwgMjksIDI3LCAyNTMsIDEyLCAyMTIsIDI1LCAxMjksIAorICAgIDIzOCwgMjksIDI3LCAyNTMsIDEyLCAyNDIsIDI0OCwgMjQxLCAyMDQsIDIzOCwgMjksIDI3LCAyNTMsIDEyLCAyMTEsIDI4LCAKKyAgICAyNDEsIDIwNCwgMjM4LCAyOSwgMjcsIDI1MywgMTIsIDIxMiwgMjUsIDI0MSwgMjA0LCAyMzgsIDI5LCAyNywgMjUzLCAxMiwgCisgICAgMjQ4LCAxODcsIDI0MSwgMjA0LCAyMzgsIDI5LCAyNywgMjUzLCAxMiwgMjI1LCAxODYsIDI0MSwgMjA0LCAyMzgsIDI5LCAKKyAgICAyNywgMjUzLCAxMiwgMjEyLCAyNSwgMTE5LCAyMTEsIDI0MiwgMjcsIDI1MywgMTIsIDIxMiwgMjUsIDI0MSwgMjA0LCAyMTEsIAorICAgIDI0MiwgMjcsIDI1MywgMTIsIDI0NSwgMjMwLCAyNDEsIDIwNCwgMjI2LCAxODQsIDI3LCAyNTMsIDEyLCAyMTMsIDI0MCwgCisgICAgMjQxLCAyNDQsIDIyNiwgMTg0LCAyNywgMTE5LCAxNjAsIDUzLCAyNywgMTE5LCAxNjAsIDMsIDI1MiwgMTQxLCAxNywgMjcsIAorICAgIDExOCwgMjEyLCA4LCA1MywgMjcsIDEyOSwgMjE5LCAyMDMsIDUzLCAyNywgMjA2LCA1MCwgNTMsIDI3LCAyMTIsIDE4MiwgCisgICAgNTMsIDI3LCAyNDQsIDQsIDUzLCAyNywgMjIyLCAyMjAsIDUzLCAyNywgMTE4LCAyMjIsIDIxOSwgNTMsIDI3LCAxMjksIAorICAgIDIyMiwgMjE5LCA1MywgMjcsIDI0MSwgMTI1LCAyMjIsIDIxOSwgNTMsIDI3LCAyNDEsIDIwNCwgMjIyLCAyMTksIDUzLCAyNywgCisgICAgMjI3LCA1OSwgNTMsIDI3LCAyMzAsIDE2NywgMjUwLCAxMTcsIDUzLCAyNywgMjI5LCAxODIsIDUzLCAyNywgMjIyLCA5NCwgCisgICAgNTMsIDI3LCAyMDYsIDE3MiwgNTMsIDI3LCAyNTEsIDIzNywgNTMsIDI3LCAyNTEsIDI1MSwgNTMsIDI3LCAyMzksIDI0NCwgCisgICAgNTMsIDI3LCAyMTAsIDI0NiwgMjUwLCAxMTcsIDUzLCAyNywgMjA1LCA4NiwgNTMsIDI3LCAxMTksIDIxOSwgMjA1LCA1MywgCisgICAgMjcsIDIxNSwgMzUsIDUzLCAyMTgsIDEwOSwgMjE2LCAxNCwgNTMsIDIxOCwgMTA5LCAyMDksIDIyOCwgNTMsIDIxOCwgMTA5LCAKKyAgICAyMTYsIDQ0LCA1MywgMjE4LCAxMDksIDIxNiwgMTIsIDUzLCAyMTgsIDEwOSwgMjQ1LCAxMjAsIDIxNiwgMTIsIDUzLCAyMTgsIAorICAgIDEwOSwgMjE1LCA1NCwgNTMsIDIxOCwgMTA5LCAyNDUsIDIyNiwgNTMsIDIxOCwgMTA5LCAyMTksIDE4OCwgNTMsIDIxOCwgCisgICAgMTA5LCAyMTYsIDMwLCA1MywgMjE4LCAxMDksIDI0MywgMjE5LCA1MywgMjE4LCAxMDksIDI1MSwgMjMyLCA1MywgMjE4LCAKKyAgICAxMDksIDI0OCwgMTI0LCA1MywgMjcsIDE2LCAyMTIsIDE1MiwgMjE4LCAyMTAsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIyMSwgCisgICAgMTY2LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMjAsIDIyMCwgMjM5LCA2OCwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjEyLCAKKyAgICAxNTUsIDIzOSwgNjgsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0OCwgMjA3LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyNDgsIAorICAgIDQ5LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMDYsIDI0NCwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjM5LCA0MywgMjIxLCA4OCwgCisgICAgMjQ1LCA5OCwgMywgMjQwLCAxOTMsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIxMSwgMjA5LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAKKyAgICA0NSwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjQ5LCAxNDYsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIxNSwgMTgwLCAyMjEsIAorICAgIDg4LCAyNDUsIDk4LCAzLCAyNDcsIDE4MCwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjI3LCAyMjAsIDIyMSwgODgsIDI0NSwgCisgICAgOTgsIDMsIDIyNywgMTY3LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMTcsIDEyMSwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjI5LCAKKyAgICAyMzEsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0OSwgMTY3LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyNDgsIDE5MiwgMjIwLCAKKyAgICAyMzMsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0NSwgMzYsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0NywgMTU5LCAyMjEsIAorICAgIDg4LCAyNDUsIDk4LCAzLCAyMTQsIDIyNCwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjQ3LCAxNjAsIDIyMSwgODgsIDI0NSwgCisgICAgOTgsIDMsIDI1MCwgNDcsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIxNSwgMTY3LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMzgsIAorICAgIDY5LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMzksIDksIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0OSwgODIsIDIzMCwgMzQsIAorICAgIDIyMSwgODgsIDI0NSwgOTgsIDMsIDI0OCwgMTgzLCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMTksIDc3LCAyMjEsIDg4LCAKKyAgICAyNDUsIDk4LCAzLCAyNDMsIDEyNywgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjQ0LCA5LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAKKyAgICAyMTAsIDE1NiwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjUwLCA1MCwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjIwLCAyMzQsIAorICAgIDIxMSwgNjEsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIwOCwgMTk1LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMjEsIDIzMiwgCisgICAgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjE4LCAxMDAsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIyOSwgMjE2LCAyMjEsIDg4LCAKKyAgICAyNDUsIDk4LCAzLCAyMjIsIDc3LCAyNTAsIDE3NiwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgMjQxLCAxNjgsIDIyMSwgODgsIAorICAgIDI0NSwgOTgsIDMsIDIzOSwgMjM4LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAyMTMsIDI0MSwgMjIxLCA4OCwgMjQ1LCA5OCwgMywgCisgICAgNSwgMjUxLCAxNjAsIDIyMSwgODgsIDI0NSwgOTgsIDMsIDIwNywgNjEsIDI1MCwgMTM2LCAyMjEsIDg4LCAyNDUsIDk4LCAzLCAKKyAgICAzNiwgMjIyLCAyMjIsIDkxLCAyMjksIDQwLCAxLCA2MiwgMjI5LCA0MCwgMSwgNzUsIDIyOSwgNDAsIDEsIDI1MSwgMTUwLCAKKyAgICAyMjksIDQwLCAxLCAyNTAsIDEsIDIyOSwgNDAsIDEsIDI0MSwgNTUsIDIyOSwgNDAsIDEsIDI0NiwgMjQwLCAyMjksIDQwLCAKKyAgICAxLCA3NCwgMjI5LCA0MCwgMSwgMjA3LCAxMjksIDIyOSwgNDAsIDEsIDIwNSwgMTU5LCAyMjksIDQwLCAxLCAyMTIsIDU4LCAKKyAgICAyMjksIDQwLCAxLCAyMzIsIDIwMywgMjI5LCA0MCwgMSwgMjMyLCA3NiwgMjI5LCA0MCwgMSwgMjIwLCAyNywgMjI5LCA0MCwgCisgICAgMSwgMTQ5LCAyMjksIDQwLCAxLCAyMjksIDI4LCAyMjksIDQwLCAxLCAyMjYsIDMzLCAyMjksIDQwLCAxLCAyMjYsIDE4NiwgCisgICAgMjI5LCA0MCwgMSwgMjI0LCAxMDQsIDIyOSwgNDAsIDEsIDcxLCAyMjksIDQwLCAxLCAyMjIsIDY3LCAyMjksIDQwLCAxLCAKKyAgICAyMzEsIDczLCAyMjksIDQwLCAxLCAxMzcsIDIyOSwgNDAsIDEsIDE4MiwgMjI5LCA0MCwgMSwgMjEzLCAxMCwgMjI5LCA0MCwgCisgICAgMSwgMjEwLCAyMTEsIDIyOSwgNDAsIDEsIDI1MiwgMTIyLCAyMjksIDQwLCAxLCAyNDMsIDQxLCAyMjksIDQwLCAxLCAyMzksIAorICAgIDE1NSwgMjI5LCA0MCwgMSwgMjA2LCAxOTUsIDI0OCwgMTk4LCAxLCA2MiwgMjQ4LCAxOTgsIDEsIDIyMiwgNTMsIDI0OCwgCisgICAgMTk4LCAxLCAyNDYsIDI0MCwgMjQ4LCAxOTgsIDEsIDE0OSwgMjQ4LCAxOTgsIDEsIDIwOSwgMTYwLCAyNDgsIDE5OCwgMSwgCisgICAgMTM3LCAyNDgsIDE5OCwgMSwgMjMwLCA2MiwgMjQ4LCAxOTgsIDEsIDI1NCwgMTY2LCAyNDgsIDE5OCwgMSwgMjIwLCAyNywgCisgICAgMjQ4LCAxOTgsIDEsIDI1MSwgMTUwLCAyNDgsIDE5OCwgMSwgMjI5LCAyOCwgMjQ4LCAxOTgsIDEsIDc2LCAyNDgsIDE5OCwgCisgICAgMSwgMjQ2LCAxNDcsIDI0OCwgMTk4LCAxLCAyMTMsIDEwLCAyNDgsIDE5OCwgMSwgMjE2LCA0LCAyNDgsIDE5OCwgMSwgMjE2LCAKKyAgICAzLCAyNDgsIDE5OCwgMSwgMTgyLCAyNDgsIDE5OCwgMSwgMjQ5LCAzMywgMjQ4LCAxOTgsIDEsIDcxLCAyNDgsIDE5OCwgMSwgCisgICAgMjI0LCAxMDQsIDI0OCwgMTk4LCAxLCAyMDYsIDE5NSwgMjQ4LCAxOTgsIDEsIDIyNiwgMzMsIDI0OCwgMTk4LCAxLCAyMTAsIAorICAgIDIxMCwgMjQ4LCAxOTgsIDEsIDIyMiwgNjcsIDI0OCwgMTk4LCAxLCAyMTQsIDk5LCAyNDgsIDE5OCwgMSwgNzQsIDI0OCwgCisgICAgMTk4LCAxLCA3NSwgMjQ4LCAxOTgsIDEsIDIwOSwgMTU3LCAyNDgsIDE5OCwgMSwgMjMyLCA3NiwgMjQ4LCAxOTgsIDEsIAorICAgIDIzMiwgNjcsIDI0OCwgMTk4LCAxLCAyMjUsIDE1MywgMjQ4LCAxOTgsIDEsIDIwOSwgMTYyLCAyNDgsIDE5OCwgMSwgMjQxLCAKKyAgICA1NSwgMjQ4LCAxOTgsIDEsIDI0MCwgMjQ2LCAyNDgsIDE5OCwgMSwgMjE0LCA0MCwgMjQ4LCAxOTgsIDEsIDIxNCwgMzksIAorICAgIDI0OCwgMTk4LCAxLCAyMjUsIDc5LCAyNDgsIDE5OCwgMSwgMjMzLCAxMDIsIDI0OCwgMTk4LCAxLCAyNDksIDMyLCAyNDgsIAorICAgIDE5OCwgMSwgMjEwLCAyMTEsIDI0OCwgMTk4LCAxLCAyMDksIDE1OSwgMjQ4LCAxOTgsIDEsIDIxOCwgOTAsIDI0OCwgMTk4LCAKKyAgICAxLCAyMjcsIDE1OCwgMjQ4LCAxOTgsIDEsIDIyNywgMTU3LCAyNDgsIDE5OCwgMSwgMjI3LCAxNTYsIDI0OCwgMTk4LCAxLCAKKyAgICAyMjcsIDE1NSwgMjQ4LCAxOTgsIDEsIDIzMCwgNjEsIDI0OCwgMTk4LCAxLCAyNDMsIDEzMSwgMjQ4LCAxOTgsIDEsIDIwOSwgCisgICAgMTU4LCA4MSwgMjQyLCAyNTEsIDIxMSwgMjQxLCA4MywgODEsIDI0MiwgMjUxLCAxOCwgMTAyLCA4MSwgMjQyLCAyNTEsIDE4LCAKKyAgICAxMDUsIDgxLCAyNDIsIDI1MSwgMTgsIDE0MiwgODEsIDI0MiwgMjUxLCAxOCwgMTM5LCA4MSwgMjQyLCAyNTEsIDE4LCAxNjgsIAorICAgIDgxLCAyNDIsIDI1MSwgMTgsIDE4NCwgODEsIDI0MiwgMjUxLCAxOCwgMTk1LCA4MSwgMjQyLCAyNTEsIDE4LCAxOTMsIDgxLCAKKyAgICAyNDIsIDI1MSwgMTgsIDIwMCwgODEsIDI0MiwgMjUxLCA0MywgMjEyLCA5OCwgODEsIDI0MiwgMjUxLCA0MywgMjEwLCAxMjMsIAorICAgIDgxLCAyNDIsIDI1MSwgNDMsIDIxMiwgMywgODEsIDI0MiwgMjUxLCA0MywgMjQxLCAxMzAsIDgxLCAyNDIsIDI1MSwgNDMsIAorICAgIDI0MSwgMjQzLCA4MSwgMjQyLCAyNTEsIDQzLCAyMTQsIDI1MiwgODEsIDI0MiwgMjUxLCA0MywgMjE2LCAxNywgODEsIDI0MiwgCisgICAgMjUxLCA0MywgMjQzLCA3OSwgODEsIDI0MiwgMjUxLCA0MywgMjI0LCAxOTAsIDgxLCAyNDIsIDI1MSwgNDMsIDExOSwgMjM4LCAKKyAgICAyOSwgODEsIDI0MiwgMjUxLCA0MywgMTE4LCAyMzgsIDI5LCA4MSwgMjQyLCAyNTEsIDQzLCAxMjksIDIzOCwgMjksIDgxLCAKKyAgICAyNDIsIDI1MSwgNDMsIDI0MSwgMTI1LCAyMzgsIDI5LCA4MSwgMjQyLCAyNTEsIDQzLCAyNDEsIDIwNCwgMjM4LCAyOSwgODEsIAorICAgIDI0MiwgMjUxLCA0MywgMjE1LCAxMCwgMjM4LCAyOSwgODEsIDI0MiwgMjUxLCA0MywgMjE2LCAyMywgMjM4LCAyOSwgODEsIAorICAgIDI0MiwgMjUxLCA0MywgMjQzLCA4OCwgMjM4LCAyOSwgODEsIDI0MiwgMjUxLCA0MywgMjI0LCAxOTUsIDIzOCwgMjksIDQ0LCAKKyAgICAzNSwgMSwgNjIsIDQ0LCAzNSwgMSwgMjUwLCA2MSwgNDQsIDM1LCAxLCAyMzEsIDIyNCwgNDQsIDM1LCAxLCAyNDYsIDksIAorICAgIDQ0LCAzNSwgMSwgNzUsIDQ0LCAzNSwgMSwgMjA5LCAzOSwgNDQsIDM1LCAxLCAyMDUsIDkzLCA0NCwgMzUsIDEsIDIzOSwgCisgICAgNzEsIDQ0LCAzNSwgMSwgMjEyLCA0MSwgNDQsIDM1LCAxLCA3NCwgNDQsIDM1LCAxLCAxNzIsIDQ0LCAzNSwgMSwgMjQzLCAKKyAgICA2OCwgNDQsIDM1LCAxLCAyNDMsIDUwLCA0NCwgMzUsIDEsIDI0MywgNDEsIDQ0LCAzNSwgMSwgMjQyLCAyMTUsIDQ0LCAzNSwgCisgICAgMSwgNzYsIDQ0LCAzNSwgMSwgMjIxLCAxNzQsIDQ0LCAzNSwgMSwgMjE1LCAyMTQsIDQ0LCAzNSwgMSwgMjMwLCAyMzYsIDQ0LCAKKyAgICAzNSwgMSwgMjQyLCAyMzUsIDQ0LCAzNSwgMSwgMjQyLCAyMjUsIDQ0LCAzNSwgMSwgMjEyLCAxMzEsIDQ0LCAzNSwgMSwgNzEsIAorICAgIDQ0LCAzNSwgMSwgMjQzLCA3MSwgNDQsIDM1LCAxLCAyMjEsIDgxLCA0NCwgMzUsIDEsIDIzMSwgMTUyLCA0NCwgMzUsIDEsIAorICAgIDI0MywgOTcsIDQ0LCAzNSwgMSwgMjQyLCAyMjcsIDQ0LCAzNSwgMSwgMjQ4LCA4MiwgNDQsIDM1LCAxLCAyMzMsIDEwMiwgCisgICAgNDQsIDM1LCAxLCAyMDksIDE2MiwgNDQsIDM1LCAxLCAyNDIsIDIwOCwgNDQsIDM1LCAyMjMsIDE3NywgMTAyLCA0NCwgMzUsIAorICAgIDIyMywgMTc3LCAxNjgsIDQ0LCAzNSwgMjIzLCAxNzcsIDIxMiwgOTgsIDQ0LCAzNSwgMjIzLCAxNzcsIDI0MSwgMjQzLCAKKyAgICAyMzksIDI1MywgMSwgMjUyLCAyMDgsIDIzOSwgMjUzLCAxLCAyNTAsIDE1MywgMjM5LCAyNTMsIDEsIDI0MCwgNTgsIDIzOSwgCisgICAgMjUzLCAxLCAyNDYsIDEyNywgMjM5LCAyNTMsIDEsIDI1MiwgMjA0LCAyMzksIDI1MywgMSwgMjIwLCAxMCwgMjM5LCAyNTMsIAorICAgIDEsIDIzMiwgMjE1LCAyMzksIDI1MywgMSwgMjM5LCAxMzQsIDIzOSwgMjUzLCAxLCAyMTEsIDI1NSwgMjM5LCAyNTMsIDEsIAorICAgIDI0MywgNzgsIDIzOSwgMjUzLCAxLCAyMzAsIDIwNCwgMjM5LCAyNTMsIDEsIDIzMCwgMTE4LCAyMzksIDI1MywgMSwgMjI3LCAKKyAgICAyMTMsIDIzOSwgMjUzLCAxLCAyMjUsIDE4OCwgMjM5LCAyNTMsIDEsIDIzMiwgMTc1LCAyMzksIDI1MywgMSwgMjA5LCAxODAsIAorICAgIDIzOSwgMjUzLCAxLCAyMjIsIDI5LCAyMzksIDI1MywgMSwgMjI0LCAxOTAsIDIzOSwgMjUzLCAxLCAyMTksIDg5LCAyMzksIAorICAgIDI1MywgMSwgMjE3LCAxMjQsIDIzOSwgMjUzLCAxLCAyMTIsIDExMiwgMjM5LCAyNTMsIDEsIDIwNywgMywgMjM5LCAyNTMsIAorICAgIDEsIDI0MiwgNTQsIDIzOSwgMjUzLCAxLCAyMzMsIDEwNiwgMjM5LCAyNTMsIDEsIDIzOCwgMTQsIDIzOSwgMjUzLCAxLCAKKyAgICAyMjIsIDEwMiwgMjM5LCAyNTMsIDEsIDIyNCwgMTk1LCAyMzgsIDI5LCA0NCwgMjIxLCAxMjIsIDEsIDI1MiwgMTIyLCA0NCwgCisgICAgMjIxLCAxMjIsIDEsIDI0OSwgNjgsIDQ0LCAyMjEsIDEyMiwgMSwgMjQwLCAyMjgsIDQ0LCAyMjEsIDEyMiwgMSwgMjQ1LCAKKyAgICAzOSwgNDQsIDIyMSwgMTIyLCAxLCA3NSwgNDQsIDIyMSwgMTIyLCAxLCAyMDUsIDYzLCA0NCwgMjIxLCAxMjIsIDEsIDI0MywgCisgICAgMTg4LCA0NCwgMjIxLCAxMjIsIDEsIDIwNSwgMTAwLCA0NCwgMjIxLCAxMjIsIDEsIDI0MywgMTg2LCA0NCwgMjIxLCAxMjIsIAorICAgIDEsIDc0LCA0NCwgMjIxLCAxMjIsIDEsIDIzMSwgNDIsIDQ0LCAyMjEsIDEyMiwgMSwgMjMwLCAzMCwgNDQsIDIyMSwgMTIyLCAKKyAgICAxLCAyMjcsIDgxLCA0NCwgMjIxLCAxMjIsIDEsIDIyNSwgOTksIDQ0LCAyMjEsIDEyMiwgMSwgMjA4LCAxNjAsIDQ0LCAyMjEsIAorICAgIDEyMiwgMSwgMjIxLCAxNjMsIDQ0LCAyMjEsIDEyMiwgMSwgMjE5LCAxNSwgNDQsIDIyMSwgMTIyLCAxLCAyMTUsIDYxLCA0NCwgCisgICAgMjIxLCAxMjIsIDEsIDIxMiwgMTkzLCA0NCwgMjIxLCAxMjIsIDEsIDcxLCA0NCwgMjIxLCAxMjIsIDEsIDI0OCwgNjYsIDQ0LCAKKyAgICAyMjEsIDEyMiwgMSwgMjE1LCAxNTEsIDQ0LCAyMjEsIDEyMiwgMSwgMjE1LCAyMTYsIDQ0LCAyMjEsIDEyMiwgMSwgMjA1LCAKKyAgICAyMTUsIDQ0LCAyMjEsIDEyMiwgMSwgMjA2LCAzMCwgNDQsIDIyMSwgMTIyLCAxLCA3NiwgNDQsIDIyMSwgMTIyLCAxLCAyMjIsIAorICAgIDE1MiwgNDQsIDIyMSwgMTIyLCAxLCAyNDMsIDk3LCA0NCwgMjIxLCAxMjIsIDEsIDE1NSwgNDQsIDIyMSwgMTIyLCAxLCAKKyAgICAyMTAsIDIyMSwgNDQsIDIyMSwgMTIyLCAxLCAyMDksIDI3LCA0NCwgMjIxLCAxMjIsIDEsIDIwNiwgMzQsIDQ0LCAyMjEsIAorICAgIDEyMiwgMSwgMjA2LCAzMiwgNDQsIDIyMSwgMTIyLCAxLCAyMDYsIDY1LCA0NCwgMjIxLCAxMjIsIDEsIDIzMywgMTI5LCA0NCwgCisgICAgMjIxLCAxMjIsIDEsIDIwNSwgMjEzLCA0NCwgMjIxLCAxMjIsIDEsIDE5MCwgNDQsIDIyMSwgMTIyLCAxLCAyMzcsIDE5MCwgCisgICAgMzYsIDQ0LCAyMjEsIDEyMiwgMSwgMjUyLCAxMjIsIDM2LCA0NCwgMjIxLCAxMjIsIDEsIDI0NSwgMzksIDM2LCA0NCwgMjIxLCAKKyAgICAxMjIsIDEsIDIwNSwgMTAwLCAzNiwgNDQsIDIyMSwgMTIyLCAxLCAyMjUsIDk5LCAzNiwgNDQsIDIyMSwgMTIyLCAxLCAyMTUsIAorICAgIDYxLCAyMDksIDI1NCwgMSwgMjUyLCAxNDgsIDIwOSwgMjU0LCAxLCAyNTAsIDgsIDIwOSwgMjU0LCAxLCAyNDAsIDIxNiwgCisgICAgMjA5LCAyNTQsIDEsIDIzMSwgMTY3LCAyMDksIDI1NCwgMSwgMjQ1LCAyMjcsIDIwOSwgMjU0LCAxLCAyMzgsIDE0OSwgMjA5LCAKKyAgICAyNTQsIDEsIDIwNiwgMjUwLCAyMDksIDI1NCwgMSwgMjA1LCA4NCwgMjA5LCAyNTQsIDEsIDIzOCwgNjEsIDIwOSwgMjU0LCAKKyAgICAxLCAyMTIsIDgwLCAyMDksIDI1NCwgMSwgMjA1LCAyMzYsIDIwOSwgMjU0LCAxLCAyMzIsIDQ1LCAyMDksIDI1NCwgMSwgCisgICAgMjE1LCAxNzEsIDIwOSwgMjU0LCAxLCAyMzAsIDEwMiwgMjA5LCAyNTQsIDEsIDIyNywgOTAsIDIwOSwgMjU0LCAxLCAyNDUsIAorICAgIDE4OCwgMjA5LCAyNTQsIDEsIDIyMywgMTczLCAyMDksIDI1NCwgMSwgMjA1LCA5LCAyMDksIDI1NCwgMSwgMjE3LCAxNTYsIAorICAgIDIwOSwgMjU0LCAxLCAyNTIsIDIwMCwgMjA5LCAyNTQsIDEsIDIyMCwgODIsIDIwOSwgMjU0LCAxLCAyMTcsIDE5MCwgMjA5LCAKKyAgICAyNTQsIDEsIDIxOSwgMjE5LCAyMDksIDI1NCwgMSwgMjE5LCA2OCwgMjA5LCAyNTQsIDEsIDIxMiwgNDUsIDIwOSwgMjU0LCAKKyAgICAxLCAyNDAsIDk0LCAyMDksIDI1NCwgMSwgMTI0LCAyMDksIDI1NCwgMSwgNzQsIDIwOSwgMjU0LCAxLCA3MSwgMjA5LCAyNTQsIAorICAgIDEsIDIxNCwgNTEsIDIwOSwgMjU0LCAyMDYsIDIzMiwgMjQ1LCA3OSwgNDQsIDIyMSwgMTE2LCAzLCA2MiwgNDQsIDIyMSwgCisgICAgMTE2LCAzLCA3NCwgNDQsIDIyMSwgMTE2LCAzLCA3MSwgNDQsIDIyMSwgMTE2LCAzLCAxNzIsIDQ0LCAyMjEsIDExNiwgMywgCisgICAgMjMwLCAyMzYsIDQ0LCAyMjEsIDExNiwgMywgMjQwLCAyNDQsIDQ0LCAyMjEsIDExNiwgMywgMjM5LCAyMTMsIDQ0LCAyMjEsIAorICAgIDExNiwgMywgMjA2LCAxODEsIDQ0LCAyMjEsIDExNiwgMywgMjQ5LCAxLCA0NCwgMjIxLCAxMTYsIDMsIDIzMiwgMjAwLCA0NCwgCisgICAgMjIxLCAxMTYsIDMsIDIzMiwgMTYyLCA0NCwgMjIxLCAxMTYsIDMsIDIxMiwgMjE5LCA0NCwgMjIxLCAxMTYsIDMsIDIxMCwgCisgICAgMTcwLCA0NCwgMjIxLCAxMTYsIDMsIDI0NiwgMTQ1LCA0NCwgMjIxLCAxMTYsIDMsIDI0NSwgMTY4LCA0NCwgMjIxLCAxMTYsIAorICAgIDMsIDI0MywgMjM3LCA0NCwgMjIxLCAxMTYsIDMsIDIxMiwgNTYsIDQ0LCAyMjEsIDExNiwgMywgMTc5LCA0NCwgMjIxLCAKKyAgICAxMTYsIDMsIDI1MCwgMTgzLCA0NCwgMjIxLCAxMTYsIDMsIDI0MiwgNzMsIDQ0LCAyMjEsIDExNiwgMywgMTk5LCA0NCwgCisgICAgMjIxLCAxMTYsIDMsIDIyMywgMjE3LCA0NCwgMjIxLCAxMTYsIDMsIDE4NSwgNDQsIDIyMSwgMTE2LCAzLCAyMjYsIDI1NCwgCisgICAgNDQsIDIyMSwgMTE2LCAzLCAyMjYsIDExNCwgNDQsIDIyMSwgMTE2LCAzLCAxOTAsIDQ0LCAyMjEsIDExNiwgMywgMjA5LCAKKyAgICA3MCwgNDQsIDIyMSwgMTE2LCAzLCAyMDgsIDIxNCwgNDQsIDIyMSwgMTE2LCAzLCAyMTksIDExMywgNDQsIDIyMSwgMTE2LCAKKyAgICAzLCAyMTgsIDUwLCA0NCwgMjIxLCAxMTYsIDMsIDIzMCwgMTQxLCA0NCwgMjIxLCAxMTYsIDMsIDIxNywgMTk5LCA0NCwgCisgICAgMjIxLCAxMTYsIDMsIDIwNSwgMTE2LCA0NCwgMjIxLCAxMTYsIDMsIDIxNiwgMiwgNDQsIDIyMSwgMTE2LCAzLCAyMTQsIDk2LCAKKyAgICA0NCwgMjIxLCAxMTYsIDMsIDE1NSwgNDQsIDIyMSwgMTE2LCAzLCAyNTEsIDE3OCwgNDQsIDIyMSwgMTE2LCAzLCAyNTEsIAorICAgIDE3NywgNDQsIDIyMSwgMTE2LCAzLCAyNTEsIDE3NiwgNDQsIDIyMSwgMTE2LCAzLCAyMDYsIDE1MiwgNDQsIDIyMSwgMTE2LCAKKyAgICAzLCAyNDYsIDEyMywgNDQsIDIyMSwgMTE2LCAzLCAyNDYsIDEyMiwgNDQsIDIyMSwgMTE2LCAzLCAyNTAsIDE2MSwgNDQsIAorICAgIDIyMSwgMTE2LCAzLCAyNDksIDUzLCA0NCwgMjIxLCAxMTYsIDIwNiwgMjMyLCAyNDUsIDc5LCA0NCwgMjIxLCAxMTYsIDQzLCAKKyAgICAxMDIsIDQ0LCAyMjEsIDExNiwgNDMsIDEwNSwgNDQsIDIyMSwgMTE2LCA0MywgMjEyLCA5OCwgNDQsIDIyMSwgMTE2LCA0MywgCisgICAgMjEwLCAxMjMsIDQ0LCAyMjEsIDExNiwgNDMsIDIzOCwgMjksIDI0NSwgMjA4LCA2LCAxLCAxNTIsIDc0LCAyNDUsIDIwOCwgCisgICAgNiwgMSwgMTUyLCA3NSwgMjQ1LCAyMDgsIDYsIDEsIDE1MiwgNjIsIDI0NSwgMjA4LCA2LCAxLCAxNTIsIDI1MiwgMjEzLCAKKyAgICAyNDUsIDIwOCwgNiwgMSwgMTUyLCA3NiwgMjQ1LCAyMDgsIDYsIDEsIDE1MiwgMjIyLCAxNTIsIDI0NSwgMjA4LCA2LCAxLCAKKyAgICAyMTUsIDE0NCwgNzQsIDI0NSwgMjA4LCA2LCAxLCAyMTUsIDE0NCwgNzUsIDI0NSwgMjA4LCA2LCAxLCAyMTUsIDE0NCwgNjIsIAorICAgIDI0NSwgMjA4LCA2LCAxLCAyMTUsIDE0NCwgMjUyLCAyMTMsIDI0NSwgMjA4LCA2LCAxLCAyMTUsIDE0NCwgNzYsIDI0NSwgCisgICAgMjA4LCA2LCAxLCAyMTUsIDE0NCwgMjIyLCAxNTIsIDI0NSwgMjA4LCA2LCAxLCAyNTEsIDE1OSwgMjQ1LCAyMDgsIDYsIDEsIAorICAgIDIyMiwgNzgsIDI0NSwgMjA4LCA2LCAxLCAyMDYsIDIxNiwgMjQ1LCAyMDgsIDYsIDEsIDIwNiwgNDksIDI0NSwgMjA4LCA2LCAKKyAgICAxLCAyMzksIDE1NSwgMjQ1LCAyMDgsIDYsIDEsIDIyMSwgMTY0LCAyNDUsIDIwOCwgNiwgMSwgMjUwLCA1MCwgMjQ1LCAyMDgsIAorICAgIDYsIDEsIDIxMiwgMTIwLCAyNDUsIDIwOCwgNiwgMSwgMjQ1LCAyNTEsIDI0NSwgMjA4LCA2LCAxLCAyNDgsIDc4LCAyNDUsIAorICAgIDIwOCwgNiwgMSwgMjMyLCAxODAsIDI0NSwgMjA4LCA2LCAxLCAyMzEsIDIzMSwgMjQ1LCAyMDgsIDYsIDEsIDI0MCwgMTkxLCAKKyAgICAyNDUsIDIwOCwgNiwgMSwgMjQzLCA5NywgMjQ1LCAyMDgsIDYsIDEsIDIwOSwgMzQsIDI0NSwgMjA4LCA2LCAxLCAyNDIsIAorICAgIDE5NiwgMjQ1LCAyMDgsIDYsIDEsIDIxMiwgMzksIDI0NSwgMjA4LCA2LCAxLCAyNDIsIDIyNSwgMjQ1LCAyMDgsIDYsIDEsIAorICAgIDIwNSwgOTEsIDI0NSwgMjA4LCA2LCAxLCAyNDIsIDIxNSwgMjQ1LCAyMDgsIDYsIDEsIDIwNSwgNzEsIDI0NSwgMjA4LCA2LCAKKyAgICAxLCAyNDIsIDIzNSwgMjQ1LCAyMDgsIDYsIDEsIDI0MywgNjgsIDI0NSwgMjA4LCA2LCAxLCAyNDMsIDUwLCAyNDUsIDIwOCwgCisgICAgNiwgMSwgMjQzLCA0MSwgMjQ1LCAyMDgsIDYsIDEsIDI0MywgMjgsIDI0NSwgMjA4LCA2LCAxLCAyMjIsIDE5MSwgMjQ1LCAKKyAgICAyMDgsIDYsIDEsIDI0MiwgMTc1LCAyNDUsIDIwOCwgNSwgMSwgMTUyLCA3NCwgMjQ1LCAyMDgsIDUsIDEsIDE1MiwgNzUsIAorICAgIDI0NSwgMjA4LCA1LCAxLCAxNTIsIDYyLCAyNDUsIDIwOCwgNSwgMSwgMTUyLCAyNTIsIDIxMywgMjQ1LCAyMDgsIDUsIDEsIAorICAgIDE1MiwgNzYsIDI0NSwgMjA4LCA1LCAxLCAxNTIsIDIyMiwgMTUyLCAyNDUsIDIwOCwgNSwgMSwgMjE1LCAxNDQsIDc0LCAKKyAgICAyNDUsIDIwOCwgNSwgMSwgMjE1LCAxNDQsIDc1LCAyNDUsIDIwOCwgNSwgMSwgMjE1LCAxNDQsIDYyLCAyNDUsIDIwOCwgNSwgCisgICAgMSwgMjE1LCAxNDQsIDI1MiwgMjEzLCAyNDUsIDIwOCwgNSwgMSwgMjE1LCAxNDQsIDc2LCAyNDUsIDIwOCwgNSwgMSwgMjE1LCAKKyAgICAxNDQsIDIyMiwgMTUyLCAyNDUsIDIwOCwgNSwgMSwgMjUxLCAxNTksIDI0NSwgMjA4LCA1LCAxLCAyMjIsIDc4LCAyNDUsIAorICAgIDIwOCwgNSwgMSwgMjA2LCAyMTYsIDI0NSwgMjA4LCA1LCAxLCAyMDYsIDQ5LCAyNDUsIDIwOCwgNSwgMSwgMjM5LCAxNTUsIAorICAgIDI0NSwgMjA4LCA1LCAxLCAyMjEsIDE2NCwgMjQ1LCAyMDgsIDUsIDEsIDI1MCwgNTAsIDI0NSwgMjA4LCA1LCAxLCAyMTIsIAorICAgIDEyMCwgMjQ1LCAyMDgsIDUsIDEsIDI0NSwgMjUxLCAyNDUsIDIwOCwgNSwgMSwgMjQ4LCA3OCwgMjQ1LCAyMDgsIDUsIDEsIAorICAgIDIzMiwgMTgwLCAyNDUsIDIwOCwgNSwgMSwgMjMxLCAyMzEsIDI0NSwgMjA4LCA1LCAxLCAyNDAsIDE5MSwgMjQ1LCAyMDgsIAorICAgIDUsIDEsIDI0MywgOTcsIDI0NSwgMjA4LCA1LCAxLCAyMDksIDM0LCAyNDUsIDIwOCwgNSwgMSwgMjQyLCAxOTYsIDI0NSwgCisgICAgMjA4LCA1LCAxLCAyMTIsIDM5LCAyNDUsIDIwOCwgNSwgMSwgMjQyLCAyMjUsIDI0NSwgMjA4LCA1LCAxLCAyMDUsIDkxLCAKKyAgICAyNDUsIDIwOCwgNSwgMSwgMjQyLCAyMTUsIDI0NSwgMjA4LCA1LCAxLCAyMDUsIDcxLCAyNDUsIDIwOCwgNSwgMSwgMjQyLCAKKyAgICAyMzUsIDI0NSwgMjA4LCA1LCAxLCAyNDMsIDY4LCAyNDUsIDIwOCwgNSwgMSwgMjQzLCA1MCwgMjQ1LCAyMDgsIDUsIDEsIAorICAgIDI0MywgNDEsIDI0NSwgMjA4LCA1LCAxLCAyNDMsIDI4LCAyNDUsIDIwOCwgNSwgMSwgMjIyLCAxOTEsIDI0NSwgMjA4LCA1LCAKKyAgICAxLCAyNDIsIDE3NSwgMjE1LCAyMjEsIDEsIDIyMSwgMTYxLCAyMTUsIDIyMSwgMSwgMjExLCA5MSwgMjE1LCAyMjEsIDEsIAorICAgIDIzMSwgMTE5LCAyMTUsIDIyMSwgMSwgMjQyLCAyMSwgMjE1LCAyMjEsIDEsIDIxMiwgMTQsIDIxNSwgMjIxLCAxLCAyMTQsIAorICAgIDE5MywgMjE1LCAyMjEsIDEsIDIxMywgMTMwLCAyMTUsIDIyMSwgMSwgMjQ4LCA2LCAyMTUsIDIyMSwgMSwgMjA2LCA1MSwgCisgICAgMjE1LCAyMjEsIDEsIDIzOCwgMjcsIDIxNSwgMjIxLCAxLCAyNDksIDI0MywgMjE1LCAyMjEsIDEsIDI0NiwgOCwgMjE1LCAKKyAgICAyMjEsIDEsIDI0MCwgMjMwLCAyMTUsIDIyMSwgMSwgMjA4LCAxNTUsIDIxNSwgMjIxLCAxLCAyMTIsIDIwLCAyMTUsIDIyMSwgCisgICAgMSwgMjA1LCAxNywgMjE1LCAyMjEsIDEsIDIyNywgMTE3LCAyMTUsIDIyMSwgMSwgMjMyLCAxMDIsIDIxNSwgMjIxLCAxLCAKKyAgICAyMDYsIDI0OCwgMjE1LCAyMjEsIDEsIDIzOSwgMTQzLCAyMTUsIDIyMSwgMSwgMjI5LCAxMzAsIDIxNSwgMjIxLCAxLCAyMjYsIAorICAgIDIxMCwgMjE1LCAyMjEsIDEsIDIzMywgMTA5LCAyMTUsIDIyMSwgMSwgMjQzLCA5NiwgMjE1LCAyMjEsIDEsIDI1MSwgMjI1LCAKKyAgICAyMTUsIDIyMSwgMSwgMjUyLCAyNTIsIDIxNSwgMjIxLCAxLCAyMjIsIDE2NSwgMjE1LCAyMjEsIDEsIDIwNiwgMjM1LCAyMTUsIAorICAgIDIyMSwgMSwgMjIyLCA5MywgMjE1LCAyMjEsIDEsIDI1MiwgMjEzLCAyMTUsIDIyMSwgMSwgMjE4LCAxMjEsIDIxNSwgMjIxLCAKKyAgICAxLCAyMjMsIDE3MywgMjE1LCAyMjEsIDEsIDI0MywgMTEzLCAyMTUsIDIyMSwgMSwgMjUyLCAyMTgsIDIxNSwgMjIxLCAxLCAKKyAgICAyMzcsIDE4MSwgMjE1LCAyMjEsIDEsIDIwOSwgMjA2LCAyMTUsIDIyMSwgMSwgMjIyLCAyMjgsIDIxNSwgMjIxLCAxLCAyMjIsIAorICAgIDE0NCwgMjE1LCAyMjEsIDEsIDIyMiwgMTg5LCAyMTUsIDIyMSwgMSwgMjUxLCAxNjIsIDIxNSwgMjIxLCAxLCAyNTIsIDE0LCAKKyAgICAyMTUsIDIyMSwgMSwgMjIyLCAxMjIsIDIxNSwgMjIxLCAxLCAyNTIsIDE5NiwgMjE1LCAyMjEsIDEsIDI0MiwgMjI5LCAyMTUsIAorICAgIDIyMSwgMSwgMjUxLCAyNDgsIDIxNSwgMjIxLCAxLCAyNDMsIDEyNCwgMjE1LCAyMjEsIDEsIDIzNywgMTg5LCAyMTUsIDIyMSwgCisgICAgMSwgMjA2LCAxNiwgMjIyLCAxMDQsIDEsIDI1MiwgMTcyLCAyMjIsIDEwNCwgMSwgMjUwLCAxODMsIDIyMiwgMTA0LCAxLCAKKyAgICAyMTIsIDIxOSwgMjIyLCAxMDQsIDEsIDIzMiwgMjAwLCAyMjIsIDEwNCwgMSwgMjA2LCAxODEsIDIyMiwgMTA0LCAxLCAyMzEsIAorICAgIDE2NywgMjIyLCAxMDQsIDEsIDI0NSwgMjUwLCAyMjIsIDEwNCwgMSwgMjE5LCAxMTMsIDIyMiwgMTA0LCAxLCAyMTcsIDE5OSwgCisgICAgMjIyLCAxMDQsIDEsIDIxNSwgMTc3LCAyMjIsIDEwNCwgMSwgMjQ1LCAxOTIsIDIyMiwgMTA0LCAxLCAyNDgsIDE3MywgMjIyLCAKKyAgICAxMDQsIDEsIDI0MCwgMjQ0LCAyMjIsIDEwNCwgMSwgMjQyLCA3MywgMjIyLCAxMDQsIDEsIDIyMCwgMTcsIDIyMiwgMTA0LCAKKyAgICAxLCAyMzIsIDYxLCAyMjIsIDEwNCwgMSwgMjMwLCAxMzYsIDIyMiwgMTA0LCAxLCAyMjYsIDIyMywgMjIyLCAxMDQsIDEsIAorICAgIDIyMywgMTU3LCAyMjIsIDEwNCwgMSwgMjA3LCA1OSwgMjIyLCAxMDQsIDEsIDE1NSwgMjIyLCAxMDQsIDEsIDE5MCwgMjIyLCAKKyAgICAxMDQsIDEsIDYyLCAyMjIsIDEwNCwgMSwgNzUsIDIyMiwgMTA0LCAxLCA3NCwgMjIyLCAxMDQsIDEsIDc2LCAyMjIsIDEwNCwgCisgICAgMSwgNzEsIDIyMiwgMTA0LCAxLCAyNTMsIDE2NCwgMjIyLCAxMDQsIDEsIDI0MywgMTA0LCAyMjIsIDEwNCwgMSwgMjIyLCAKKyAgICAxNTIsIDIyMiwgMTA0LCAxOCwgMjA1LCA4NSwgMjIyLCAxMDQsIDE4LCAxMDIsIDIyMiwgMTA0LCAxOCwgMTA1LCAyMjIsIAorICAgIDEwNCwgMTgsIDE0MiwgMjIyLCAxMDQsIDE4LCAxMzksIDIyMiwgMTA0LCAxOCwgMTY4LCAyMjIsIDEwNCwgMTgsIDE4NCwgCisgICAgMjIyLCAxMDQsIDE4LCAxOTUsIDIyMiwgMTA0LCAxOCwgMTkzLCAyMjIsIDEwNCwgMTgsIDIwMCwgMjQzLCA2NCwgMSwgNjIsIAorICAgIDI0MywgNjQsIDEsIDI1MCwgNjEsIDI0MywgNjQsIDEsIDI0OCwgMTQ4LCAyNDMsIDY0LCAxLCAyNDgsIDgyLCAyNDMsIDY0LCAKKyAgICAxLCAyNDYsIDksIDI0MywgNjQsIDEsIDIyNSwgMTQzLCAyNDMsIDY0LCAxLCAyNDUsIDE4MywgMjQzLCA2NCwgMSwgMjQzLCAKKyAgICA5MCwgMjQzLCA2NCwgMSwgNzUsIDI0MywgNjQsIDEsIDI0MiwgMjgsIDI0MywgNjQsIDEsIDI0MCwgMTcwLCAyNDMsIDY0LCAKKyAgICAxLCAyNDAsIDMyLCAyNDMsIDY0LCAxLCAyMzksIDcxLCAyNDMsIDY0LCAxLCA3NCwgMjQzLCA2NCwgMSwgMjMyLCAxODIsIAorICAgIDI0MywgNjQsIDEsIDIzMSwgMjI0LCAyNDMsIDY0LCAxLCAyMzAsIDU4LCAyNDMsIDY0LCAxLCAyMjksIDE2OCwgMjQzLCA2NCwgCisgICAgMSwgMjI3LCAxMTksIDI0MywgNjQsIDEsIDIyNSwgMTEwLCAyNDMsIDY0LCAxLCAxOTksIDI0MywgNjQsIDEsIDIyNCwgMTczLCAKKyAgICAyNDMsIDY0LCAxLCA3NiwgMjQzLCA2NCwgMSwgMjIxLCAxNzQsIDI0MywgNjQsIDEsIDIxOSwgMjU1LCAyNDMsIDY0LCAxLCAKKyAgICAyMTksIDUxLCAyNDMsIDY0LCAxLCAyMTgsIDg0LCAyNDMsIDY0LCAxLCAyMTcsIDg2LCAyNDMsIDY0LCAxLCAyMTUsIDIxNCwgCisgICAgMjQzLCA2NCwgMSwgMjEyLCAxMzEsIDI0MywgNjQsIDEsIDIxMiwgNDEsIDI0MywgNjQsIDEsIDcxLCAyNDMsIDY0LCAxLCAKKyAgICAyMDksIDM5LCAyNDMsIDY0LCAxLCAyMDYsIDE3NSwgMjQzLCA2NCwgMSwgMjA2LCAxMjMsIDI0MywgNjQsIDEsIDIwNSwgOTMsIAorICAgIDI0MywgNjQsIDEsIDIwNSwgNzIsIDI0MywgNjQsIDEsIDI0MCwgODUsIDI0MywgNjQsIDEsIDI0MCwgOTEsIDI0MywgNjQsIAorICAgIDEsIDIzMSwgMTUyLCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDI1MiwgMTQzLCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDI1MCwgCisgICAgMTAsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjQwLCA0OSwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDYsIDc0LCAyNDgsIAorICAgIDE4MCwgMjUyLCAxNzMsIDEsIDI0MywgMTEyLCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDIwNSwgMTAzLCAyNDgsIDE4MCwgCisgICAgMjUyLCAxNzMsIDEsIDI0MiwgMTQ3LCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDIwNSwgNjYsIDI0OCwgMTgwLCAyNTIsIAorICAgIDE3MywgMSwgMjEyLCAxNTcsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjQ4LCAxMTAsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgCisgICAgMjA1LCAyMjQsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjA1LCA4MSwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMzIsIAorICAgIDI0MiwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMTYsIDIsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjMwLCA5NSwgMjQ4LCAKKyAgICAxODAsIDI1MiwgMTczLCAxLCAyMzIsIDI1NCwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMDYsIDE3MSwgMjQ4LCAxODAsIAorICAgIDI1MiwgMTczLCAxLCAyNDMsIDIwMywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDgsIDIwNCwgMjQ4LCAxODAsIDI1MiwgCisgICAgMTczLCAxLCAyMzIsIDE2MywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMzIsIDcsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgCisgICAgMjI5LCAzNywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMzksIDIyLCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDIyMCwgMCwgCisgICAgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNTIsIDcwLCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDI0OCwgMjMsIDI0OCwgMTgwLCAKKyAgICAyNTIsIDE3MywgMSwgMjQ4LCA1OCwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDYsIDI1MiwgMjQ4LCAxODAsIDI1MiwgCisgICAgMTczLCAxLCAyMjcsIDIwMiwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMjAsIDQsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgCisgICAgMjI0LCAyOCwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDMsIDE4MSwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMTUsIAorICAgIDI0MiwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMzIsIDE4MywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMjIsIDE2NSwgCisgICAgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMTAsIDk5LCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDI0MiwgNDksIDI0OCwgMTgwLCAKKyAgICAyNTIsIDE3MywgMSwgMjQzLCAxOTQsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjQ4LCA4OCwgMjQ4LCAxODAsIDI1MiwgCisgICAgMTczLCAxLCAyMjEsIDE1MCwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDAsIDc1LCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIAorICAgIDIxOSwgNjUsIDI0OCwgMTgwLCAyNTIsIDE3MywgMSwgMjE2LCAxMSwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMDgsIDIxNiwgCisgICAgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMTEsIDE1MCwgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMTUsIDEyNCwgMjQ4LCAKKyAgICAxODAsIDI1MiwgMTczLCAxLCAyMzIsIDIxMywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyNDYsIDI1MywgMjQ4LCAxODAsIAorICAgIDI1MiwgMTczLCAxLCAyNDgsIDE3MywgMjQ4LCAxODAsIDI1MiwgMTczLCAxLCAyMDYsIDU2LCAyNDgsIDE4MCwgMjUyLCAKKyAgICAxNzMsIDEsIDIyMCwgMjQ0LCAyNDgsIDE4MCwgMjUyLCAxNzMsIDEsIDIzMSwgODcsIDI0OCwgMTgwLCAyNTIsIDE3MywgCisgICAgMjQ3LCAyMjQsIDgzLCAyNiwgMzIsIDMsIDI1MywgMTE0LCAyNiwgMzIsIDMsIDI1MywgMTEzLCAyNiwgMzIsIDMsIDI1MywgCisgICAgMTEyLCAyNiwgMzIsIDMsIDI1MywgMTExLCAyNiwgMzIsIDMsIDI1MywgMTEwLCAyNiwgMzIsIDMsIDI1MywgMTA5LCAyNiwgCisgICAgMzIsIDMsIDI1MywgMTA4LCAyNiwgMzIsIDMsIDI1MywgMTA3LCAyNiwgMzIsIDMsIDI1MywgMTA2LCAyNiwgMzIsIDMsIAorICAgIDI1MywgMTA1LCAyNiwgMzIsIDMsIDI1MywgMTA0LCAyNiwgMzIsIDMsIDI1MywgMTAzLCAyNiwgMzIsIDMsIDI1MywgMTAyLCAKKyAgICAyNiwgMzIsIDMsIDI1MywgMTAxLCAyNiwgMzIsIDMsIDI1MywgMTAwLCAyNiwgMzIsIDMsIDI1MywgOTksIDI2LCAzMiwgMywgCisgICAgMjUzLCA5OCwgMjYsIDMyLCAzLCAyNTMsIDk3LCAyNiwgMzIsIDMsIDI1MywgOTYsIDI2LCAzMiwgMywgMjUzLCA5NSwgMjYsIAorICAgIDMyLCAzLCAyNTMsIDk0LCAyNiwgMzIsIDMsIDI1MywgOTMsIDI2LCAzMiwgMywgMjUzLCA5MiwgMjYsIDMyLCAzLCAyNTMsIAorICAgIDkxLCAyNiwgMzIsIDMsIDI1MywgOTAsIDI2LCAzMiwgMywgMjUzLCA4OSwgMjYsIDMyLCAzLCAyNTMsIDg4LCAyNiwgMzIsIAorICAgIDMsIDI1NCwgMjE3LCAyNiwgMzIsIDMsIDI1MywgODcsIDI2LCAzMiwgMywgMjUzLCA4NiwgMjYsIDMyLCAzLCAyNTMsIDg1LCAKKyAgICAyNiwgMzIsIDMsIDI1MywgODQsIDI2LCAzMiwgMywgMjUzLCA4MywgMjYsIDMyLCAzLCAyNTMsIDgyLCAyNiwgMzIsIDMsIAorICAgIDI1MywgODEsIDI2LCAzMiwgMywgMjUzLCA4MCwgMjYsIDMyLCAzLCAyNTMsIDc5LCAyNiwgMzIsIDMsIDI1MywgNzgsIDI2LCAKKyAgICAzMiwgMywgMjUzLCA3NywgMjYsIDMyLCAzLCAyNTMsIDc2LCAyNiwgMzIsIDMsIDI1MywgNzUsIDI2LCAzMiwgMywgMjUzLCAKKyAgICA3NCwgMjYsIDMyLCAzLCAyNTMsIDczLCAyNiwgMzIsIDMsIDI1MywgNzIsIDI2LCAzMiwgMywgMjUzLCA3MSwgMjYsIDMyLCAKKyAgICAzLCAyNTMsIDcwLCAyNiwgMzIsIDMsIDI1MywgNjksIDI2LCAzMiwgMywgMjUzLCA2OCwgMjYsIDMyLCAzLCAyNTMsIDY3LCAKKyAgICAyNiwgMzIsIDMsIDI1MywgNjYsIDI2LCAzMiwgMywgMjUzLCA2NSwgMjYsIDMyLCAzLCAyNTMsIDY0LCAyNiwgMzIsIDMsIAorICAgIDI1MywgNjMsIDI2LCAzMiwgMywgMjUzLCA2MiwgMjYsIDMyLCAzLCAyNTMsIDYxLCAyNiwgMzIsIDMsIDI1MywgNjAsIDI2LCAKKyAgICAzMiwgMywgMjUzLCA1OSwgMjYsIDMyLCAzLCAyNTMsIDU4LCAyNiwgMzIsIDMsIDI1MywgNTcsIDI2LCAzMiwgMywgMjUzLCAKKyAgICA1NiwgMjYsIDMyLCAzLCAyNTMsIDU1LCAyNiwgMzIsIDMsIDI1MywgNTQsIDI2LCAzMiwgMywgMjUzLCA1MywgMjYsIDMyLCAKKyAgICAzLCAyNTMsIDUyLCAyNiwgMzIsIDMsIDI1MywgNTEsIDI2LCAzMiwgMywgMjUzLCA1MCwgMjYsIDMyLCAzLCAyNTMsIDQ5LCAKKyAgICAyNiwgMzIsIDMsIDI1MywgNDgsIDI2LCAzMiwgMywgMjUzLCA0NywgMjYsIDMyLCAzLCAyNTMsIDQ2LCAyNiwgMzIsIDMsIAorICAgIDI1MywgNDUsIDI2LCAzMiwgMywgMjU0LCAxNjksIDI2LCAzMiwgMywgMjUzLCA0NCwgMjYsIDMyLCAzLCAyNTMsIDQzLCAyNiwgCisgICAgMzIsIDMsIDI1NCwgMTY4LCAyNiwgMzIsIDMsIDI1MywgNDIsIDI2LCAzMiwgMywgMjUzLCA0MSwgMjYsIDMyLCAzLCAyNTMsIAorICAgIDQwLCAyNiwgMzIsIDMsIDI1MywgMzksIDI2LCAzMiwgMywgMjU0LCAxNjcsIDI2LCAzMiwgMywgMjUzLCAzOCwgMjYsIDMyLCAKKyAgICAzLCAyNTMsIDM3LCAyNiwgMzIsIDMsIDI1MywgMzYsIDI2LCAzMiwgMywgMjUzLCAzNSwgMjYsIDMyLCAzLCAyNTMsIDM0LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTY0LCAyNiwgMzIsIDMsIDI1NCwgMTYzLCAyNiwgMzIsIDMsIDI1NCwgMTYyLCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTYxLCAyNiwgMzIsIDMsIDI1NCwgMTYwLCAyNiwgMzIsIDMsIDI1NCwgMTU5LCAyNiwgMzIsIDMsIDI1NCwgMTU4LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTU3LCAyNiwgMzIsIDMsIDI1NCwgMTU2LCAyNiwgMzIsIDMsIDI1NCwgMTU1LCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTU0LCAyNiwgMzIsIDMsIDI1NCwgMTUzLCAyNiwgMzIsIDMsIDI1NCwgMTUyLCAyNiwgMzIsIDMsIDI1NCwgMTUxLCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTUwLCAyNiwgMzIsIDMsIDI1NCwgMTQ5LCAyNiwgMzIsIDMsIDI1NCwgMTQ4LCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTQ3LCAyNiwgMzIsIDMsIDI1NCwgMTQ2LCAyNiwgMzIsIDMsIDI1NCwgMTQ1LCAyNiwgMzIsIDMsIDI1NCwgMTQ0LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTQzLCAyNiwgMzIsIDMsIDI1NCwgMTQyLCAyNiwgMzIsIDMsIDI1NCwgMTQxLCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTQwLCAyNiwgMzIsIDMsIDI1NCwgMTM5LCAyNiwgMzIsIDMsIDI1NCwgMTM4LCAyNiwgMzIsIDMsIDI1NCwgMTM3LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTM2LCAyNiwgMzIsIDMsIDI1NCwgMTM1LCAyNiwgMzIsIDMsIDI1NCwgMTM0LCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTMzLCAyNiwgMzIsIDMsIDI1NCwgMTMyLCAyNiwgMzIsIDMsIDI1NCwgMTMxLCAyNiwgMzIsIDMsIDI1NCwgMTMwLCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTI5LCAyNiwgMzIsIDMsIDI1NCwgMTI4LCAyNiwgMzIsIDMsIDI1NCwgMTI3LCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTI2LCAyNiwgMzIsIDMsIDI1NCwgMTI1LCAyNiwgMzIsIDMsIDI1NCwgMTI0LCAyNiwgMzIsIDMsIDI1NCwgMTIzLCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTIyLCAyNiwgMzIsIDMsIDI1NCwgMTIxLCAyNiwgMzIsIDMsIDI1NCwgMTIwLCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTE5LCAyNiwgMzIsIDMsIDI1NCwgMTE4LCAyNiwgMzIsIDMsIDI1NCwgMTE3LCAyNiwgMzIsIDMsIDI1NCwgMTE2LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTE1LCAyNiwgMzIsIDMsIDI1NCwgMTE0LCAyNiwgMzIsIDMsIDI1NCwgMTEzLCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTEyLCAyNiwgMzIsIDMsIDI1NCwgMTExLCAyNiwgMzIsIDMsIDI1NCwgMTEwLCAyNiwgMzIsIDMsIDI1NCwgMTA5LCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTA4LCAyNiwgMzIsIDMsIDI1NCwgMTA3LCAyNiwgMzIsIDMsIDI1NCwgMTA2LCAyNiwgMzIsIDMsIAorICAgIDI1NCwgMTA1LCAyNiwgMzIsIDMsIDI1NCwgMTA0LCAyNiwgMzIsIDMsIDI1NCwgMTAzLCAyNiwgMzIsIDMsIDI1NCwgMTAyLCAKKyAgICAyNiwgMzIsIDMsIDI1NCwgMTAxLCAyNiwgMzIsIDMsIDI1NCwgMTAwLCAyNiwgMzIsIDMsIDI1NCwgOTksIDI2LCAzMiwgMywgCisgICAgMjU0LCA5OCwgMjYsIDMyLCAzLCAyNTQsIDk3LCAyNiwgMzIsIDMsIDI1NCwgOTYsIDI2LCAzMiwgMywgMjU0LCA5NSwgMjYsIAorICAgIDMyLCAzLCAyNTQsIDk0LCAyNiwgMzIsIDMsIDI1NCwgOTMsIDI2LCAzMiwgMywgMjU0LCA5MiwgMjYsIDMyLCAzLCAyNTQsIAorICAgIDkxLCAyNiwgMzIsIDMsIDI1NCwgOTAsIDI2LCAzMiwgMywgMjU0LCA4OSwgMjYsIDMyLCAzLCAyNTQsIDg4LCAyNiwgMzIsIAorICAgIDMsIDI1NCwgODcsIDI2LCAzMiwgMywgMjU0LCA4NiwgMjYsIDMyLCAzLCAyNTQsIDg1LCAyNiwgMzIsIDMsIDI1NCwgODQsIAorICAgIDI2LCAzMiwgMywgMjU0LCA4MywgMjYsIDMyLCAzLCAyNTQsIDgyLCAyNiwgMzIsIDMsIDI1NCwgODEsIDI2LCAzMiwgMywgCisgICAgMjU0LCA4MCwgMjYsIDMyLCAzLCAyNTQsIDc5LCAyNiwgMzIsIDMsIDI1NCwgNzgsIDI2LCAzMiwgMywgMjU0LCA3NywgMjYsIAorICAgIDMyLCAzLCAyNTQsIDc2LCAyNiwgMzIsIDMsIDI1NCwgNzUsIDI2LCAzMiwgMywgMjU0LCA3NCwgMjYsIDMyLCAzLCAyNTQsIAorICAgIDczLCAyNiwgMzIsIDMsIDI1NCwgNzIsIDI2LCAzMiwgMywgMjU0LCA3MSwgMjYsIDMyLCAzLCAyNTQsIDcwLCAyNiwgMzIsIAorICAgIDMsIDI1NCwgNjksIDI2LCAzMiwgMywgMjU0LCA2OCwgMjYsIDMyLCAzLCAyNTQsIDY3LCAyNiwgMzIsIDMsIDI1NCwgNjYsIAorICAgIDI2LCAzMiwgMywgMjU0LCA2NSwgMjYsIDMyLCAzLCAyNTQsIDY0LCAyNiwgMzIsIDMsIDI1NCwgNjMsIDI2LCAzMiwgMywgCisgICAgMjU0LCA2MiwgMjYsIDMyLCAzLCAyNTQsIDYxLCAyNiwgMzIsIDMsIDI1NCwgNjAsIDI2LCAzMiwgMywgMjU0LCA1OSwgMjYsIAorICAgIDMyLCAzLCAyNTQsIDU4LCAyNiwgMzIsIDMsIDI1NCwgNTcsIDI2LCAzMiwgMywgMjU0LCA1NiwgMjYsIDMyLCAzLCAyNTQsIAorICAgIDU1LCAyNiwgMzIsIDMsIDI1NCwgNTQsIDI2LCAzMiwgMywgMjU0LCA1MywgMjYsIDMyLCAzLCAyNTQsIDUyLCAyNiwgMzIsIAorICAgIDMsIDI1NCwgNTEsIDI2LCAzMiwgMywgMjU0LCA1MCwgMjYsIDMyLCAzLCAyNTQsIDQ5LCAyNiwgMzIsIDMsIDI1NCwgNDgsIAorICAgIDI2LCAzMiwgMywgMjU0LCA0NywgMjYsIDMyLCAzLCAyNTQsIDQ2LCAyNiwgMzIsIDMsIDI1NCwgNDUsIDI2LCAzMiwgMywgCisgICAgMjU0LCA0NCwgMjYsIDMyLCAzLCAyNTQsIDQzLCAyNiwgMzIsIDMsIDI1NCwgNDIsIDI2LCAzMiwgMywgMjU0LCA0MSwgMjYsIAorICAgIDMyLCAzLCAyNTQsIDQwLCAyNiwgMzIsIDMsIDI1NCwgMzksIDI2LCAzMiwgMywgMjU0LCAzOCwgMjYsIDMyLCAzLCAyNTQsIAorICAgIDM3LCAyNiwgMzIsIDMsIDI1NCwgMzYsIDI2LCAzMiwgMywgMjU0LCAzNSwgMjYsIDMyLCAzLCAyNTQsIDM0LCAyNiwgMzIsIAorICAgIDMsIDI1NCwgMzMsIDI2LCAzMiwgMywgMjU0LCAzMiwgMjYsIDMyLCAzLCAyNTQsIDMxLCAyNiwgMzIsIDMsIDI1NCwgMzAsIAorICAgIDI2LCAzMiwgMywgMjU0LCAyOSwgMjYsIDMyLCAzLCAyNTQsIDI4LCAyNiwgMzIsIDMsIDI1NCwgMjcsIDI2LCAzMiwgMywgCisgICAgMjU0LCAyNiwgMjYsIDMyLCAzLCAyNTQsIDI1LCAyNiwgMzIsIDMsIDI1NCwgMjQsIDI2LCAzMiwgMywgMjU0LCAyMywgMjYsIAorICAgIDMyLCAzLCAyNTQsIDIyLCAyNiwgMzIsIDMsIDI1NCwgMjEsIDI2LCAzMiwgMywgMjU0LCAyMCwgMjYsIDMyLCAzLCAyNTQsIAorICAgIDE5LCAyNiwgMzIsIDMsIDI1NCwgMTgsIDI2LCAzMiwgMywgMjU0LCAxNywgMjYsIDMyLCAzLCAyNTQsIDE2LCAyNiwgMzIsIAorICAgIDMsIDI1NCwgMTUsIDI2LCAzMiwgMywgMjU0LCAxNCwgMjYsIDMyLCAzLCAyNTQsIDEzLCAyNiwgMzIsIDMsIDI1NCwgMTIsIAorICAgIDI2LCAzMiwgMywgMjU0LCAxMSwgMjYsIDMyLCAzLCAyNTQsIDEwLCAyNiwgMzIsIDMsIDI1NCwgOSwgMjYsIDMyLCAzLCAKKyAgICAyNTQsIDgsIDI2LCAzMiwgMywgMjU0LCA3LCAyNiwgMzIsIDMsIDI1NCwgNiwgMjYsIDMyLCAzLCAyNTQsIDUsIDI2LCAzMiwgCisgICAgMywgMjU0LCA0LCAyNiwgMzIsIDMsIDI1NCwgMywgMjYsIDMyLCAzLCAyNTQsIDIsIDI2LCAzMiwgMywgMjU0LCAxLCAyNiwgCisgICAgMzIsIDMsIDI1NCwgMCwgMjYsIDMyLCAzLCAyNTMsIDI1NSwgMjYsIDMyLCAzLCAyNTMsIDI1NCwgMjYsIDMyLCAzLCAyNTMsIAorICAgIDI1MywgMjYsIDMyLCAzLCAyNTMsIDI1MiwgMjYsIDMyLCAzLCAyNTMsIDI1MSwgMjYsIDMyLCAzLCAyNTMsIDI1MCwgMjYsIAorICAgIDMyLCAzLCAyNTMsIDI0OSwgMjYsIDMyLCAzLCAyNTMsIDI0OCwgMjYsIDMyLCAzLCAyNTMsIDI0NywgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDI0NiwgMjYsIDMyLCAzLCAyNTMsIDI0NSwgMjYsIDMyLCAzLCAyNTMsIDI0NCwgMjYsIDMyLCAzLCAyNTMsIDI0MywgCisgICAgMjYsIDMyLCAzLCAyNTMsIDI0MiwgMjYsIDMyLCAzLCAyNTMsIDI0MSwgMjYsIDMyLCAzLCAyNTMsIDI0MCwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIzOSwgMjYsIDMyLCAzLCAyNTMsIDIzOCwgMjYsIDMyLCAzLCAyNTMsIDIzNywgMjYsIDMyLCAzLCAyNTMsIDIzNiwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIzNSwgMjYsIDMyLCAzLCAyNTMsIDIzNCwgMjYsIDMyLCAzLCAyNTMsIDIzMywgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIzMiwgMjYsIDMyLCAzLCAyNTMsIDIzMSwgMjYsIDMyLCAzLCAyNTMsIDIzMCwgMjYsIDMyLCAzLCAyNTMsIDIyOSwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIyOCwgMjYsIDMyLCAzLCAyNTMsIDIyNywgMjYsIDMyLCAzLCAyNTMsIDIyNiwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIyNSwgMjYsIDMyLCAzLCAyNTMsIDIyNCwgMjYsIDMyLCAzLCAyNTMsIDIyMywgMjYsIDMyLCAzLCAyNTMsIDIyMiwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIyMSwgMjYsIDMyLCAzLCAyNTMsIDIyMCwgMjYsIDMyLCAzLCAyNTMsIDIxOSwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIxOCwgMjYsIDMyLCAzLCAyNTMsIDIxNywgMjYsIDMyLCAzLCAyNTMsIDIxNiwgMjYsIDMyLCAzLCAyNTMsIDIxNSwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIxNCwgMjYsIDMyLCAzLCAyNTMsIDIxMywgMjYsIDMyLCAzLCAyNTMsIDIxMiwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIxMSwgMjYsIDMyLCAzLCAyNTMsIDIxMCwgMjYsIDMyLCAzLCAyNTMsIDIwOSwgMjYsIDMyLCAzLCAyNTMsIDIwOCwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIwNywgMjYsIDMyLCAzLCAyNTMsIDIwNiwgMjYsIDMyLCAzLCAyNTMsIDIwNSwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDIwNCwgMjYsIDMyLCAzLCAyNTMsIDIwMywgMjYsIDMyLCAzLCAyNTMsIDIwMiwgMjYsIDMyLCAzLCAyNTMsIDIwMSwgCisgICAgMjYsIDMyLCAzLCAyNTMsIDIwMCwgMjYsIDMyLCAzLCAyNTMsIDE5OSwgMjYsIDMyLCAzLCAyNTMsIDE5OCwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDE5NywgMjYsIDMyLCAzLCAyNTMsIDE5NiwgMjYsIDMyLCAzLCAyNTMsIDE5NSwgMjYsIDMyLCAzLCAyNTMsIDE5NCwgCisgICAgNjIsIDI2LCAzMiwgMywgMjUzLCAxOTMsIDI1MSwgMTUwLCAyNiwgMzIsIDMsIDI1MywgMTkyLCAyNDYsIDI0MCwgMjYsIDMyLCAKKyAgICAzLCAyNTMsIDE5MSwgNzUsIDI2LCAzMiwgMywgMjUzLCAxOTAsIDI0MiwgMTM5LCAyNiwgMzIsIDMsIDI1MywgMTg5LCAyMzksIAorICAgIDE1NSwgMjYsIDMyLCAzLCAyNTMsIDE4OCwgMjMyLCAyMDMsIDI2LCAzMiwgMywgMjUzLCAxODcsIDIzMiwgNzYsIDI2LCAzMiwgCisgICAgMywgMjUzLCAxODYsIDE0OSwgMjYsIDMyLCAzLCAyNTMsIDE4NSwgMjMwLCAxNDYsIDI2LCAzMiwgMywgMjUzLCAxODQsIAorICAgIDIzMCwgMTQ1LCAyNiwgMzIsIDMsIDI1MywgMTgzLCAyMzAsIDE0NCwgMjYsIDMyLCAzLCAyNTMsIDE4MiwgMjMwLCAxNDMsIAorICAgIDI2LCAzMiwgMywgMjUzLCAxODEsIDIwNywgMTI5LCAyNiwgMzIsIDMsIDI1MywgMTgwLCAyMDYsIDE5NSwgMjYsIDMyLCAzLCAKKyAgICAyNTMsIDE3OSwgMjA2LCAxMjMsIDI2LCAzMiwgMywgMjUzLCAxNzgsIDIyMiwgMTcwLCAyNiwgMzIsIDMsIDI1MywgMTc3LCAKKyAgICAyNTMsIDMwLCAyNiwgMzIsIDMsIDI1MywgMTc2LCAyNTAsIDk4LCAyNiwgMzIsIDMsIDI1MywgMTc1LCAyNDYsIDU2LCAyNiwgCisgICAgMzIsIDMsIDI1MywgMTc0LCAyNDIsIDE0NiwgMjYsIDMyLCAzLCAyNTMsIDE3MywgMjMyLCAxODIsIDI2LCAzMiwgMywgMjUzLCAKKyAgICAxNzIsIDI2LCAzMiwgMywgMjUzLCAxNzEsIDI2LCAzMiwgMywgMjUzLCAxNzAsIDI2LCAzMiwgMywgMjUzLCAxNjksIDI2LCAKKyAgICAzMiwgMywgMjUzLCAxNjgsIDI2LCAzMiwgMywgMjUzLCAxNjcsIDI2LCAzMiwgMywgMjUzLCAxNjYsIDI2LCAzMiwgMywgCisgICAgMjUzLCAxNjUsIDI0NiwgMjQ3LCA0LCA2MiwgMjQ2LCAyNDcsIDQsIDc1LCAyNDYsIDI0NywgNCwgNzQsIDI0NiwgMjQ3LCA0LCAKKyAgICA3NiwgMjQ2LCAyNDcsIDQsIDcxLCAyNDYsIDI0NywgNCwgMjMyLCAyMDAsIDI0NiwgMjQ3LCA0LCAyMzIsIDEyMiwgMjQ2LCAKKyAgICAyNDcsIDQsIDE3MiwgMjQ2LCAyNDcsIDQsIDIzMSwgMjI0LCAyNDYsIDI0NywgNCwgMjMxLCAxMjMsIDI0NiwgMjQ3LCA0LCAKKyAgICAyMzEsIDUzLCAyNDYsIDI0NywgNCwgMjMwLCAyMzYsIDI0NiwgMjQ3LCA0LCAyMzAsIDE0MSwgMjQ2LCAyNDcsIDQsIDIzMCwgCisgICAgNTgsIDI0NiwgMjQ3LCA0LCAyMjksIDIzNSwgMjQ2LCAyNDcsIDQsIDIyOSwgMTQ0LCAyNDYsIDI0NywgNCwgMjI5LCA4MSwgCisgICAgMjQ2LCAyNDcsIDQsIDE4NSwgMjQ2LCAyNDcsIDQsIDIyNywgMTE5LCAyNDYsIDI0NywgNCwgMjI2LCAyNTQsIDI0NiwgMjQ3LCAKKyAgICA0LCAyMjYsIDE4MSwgMjQ2LCAyNDcsIDQsIDIyNiwgMTE0LCAyNDYsIDI0NywgNCwgMTk5LCAyNDYsIDI0NywgNCwgMjI1LCAKKyAgICAxMTAsIDI0NiwgMjQ3LCA0LCAyMjQsIDIzMCwgMjQ2LCAyNDcsIDQsIDIyNCwgNjcsIDI0NiwgMjQ3LCA0LCAyMjMsIDIxNywgCisgICAgMjQ2LCAyNDcsIDQsIDE3OSwgMjQ2LCAyNDcsIDQsIDIyMSwgMTc0LCAyNDYsIDI0NywgNCwgMjIxLCA1MywgMjQ2LCAyNDcsIAorICAgIDQsIDIyMCwgMjExLCAyNDYsIDI0NywgNCwgMjIwLCA4MiwgMjQ2LCAyNDcsIDQsIDIxOSwgMTEzLCAyNDYsIDI0NywgNCwgCisgICAgMjE5LCA1MSwgMjQ2LCAyNDcsIDQsIDIxOCwgMjA4LCAyNDYsIDI0NywgNCwgMjE4LCAxMjQsIDI0NiwgMjQ3LCA0LCAyMTgsIAorICAgIDUwLCAyNDYsIDI0NywgNCwgMjE3LCAxOTksIDI0NiwgMjQ3LCA0LCAyMTcsIDg2LCAyNDYsIDI0NywgNCwgMjE1LCA4MCwgCisgICAgMjQ2LCAyNDcsIDQsIDIxNCwgMTkzLCAyNDYsIDI0NywgNCwgMjEzLCAyMDMsIDI0NiwgMjQ3LCA0LCAyMTIsIDIxOSwgMjQ2LCAKKyAgICAyNDcsIDQsIDIxMiwgMTMxLCAyNDYsIDI0NywgNCwgMjExLCAyMTEsIDI0NiwgMjQ3LCA0LCAxMjQsIDI0NiwgMjQ3LCA0LCAKKyAgICAyMTAsIDE3MCwgMjQ2LCAyNDcsIDQsIDIwNywgOTYsIDI0NiwgMjQ3LCA0LCAyMDcsIDUxLCAyNDYsIDI0NywgNCwgMjA3LCAKKyAgICAyMCwgMjQ2LCAyNDcsIDQsIDIwNiwgMjUwLCAyNDYsIDI0NywgNCwgMjA2LCAxODEsIDI0NiwgMjQ3LCA0LCAyMDYsIDE3NSwgCisgICAgMjQ2LCAyNDcsIDQsIDIwNSwgMTE2LCAyNDYsIDI0NywgNCwgMjA1LCAxOSwgMjMzLCA3MCwgMjUyLCAyMywgMSwgMjUyLCAKKyAgICAxNzAsIDIzMywgNzAsIDI1MiwgMjMsIDEsIDI1MCwgNywgMjMzLCA3MCwgMjUyLCAyMywgMSwgMjQwLCA0NywgMjMzLCA3MCwgCisgICAgMjUyLCAyMywgMSwgMjQ2LCAxMTAsIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIzOSwgNzEsIDIzMywgNzAsIDI1MiwgMjMsIDEsIAorICAgIDIwNywgNTksIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIwNSwgOTYsIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIzOSwgMjcsIDIzMywgCisgICAgNzAsIDI1MiwgMjMsIDEsIDIxMiwgNzYsIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIwNSwgMjM1LCAyMzMsIDcwLCAyNTIsIDIzLCAKKyAgICAxLCAyMzIsIDE3LCAyMzMsIDcwLCAyNTIsIDIzLCAxLCAyMzAsIDk3LCAyMzMsIDcwLCAyNTIsIDIzLCAxLCAyMjcsIDkwLCAKKyAgICAyMzMsIDcwLCAyNTIsIDIzLCAxLCAyMjMsIDE3MywgMjMzLCA3MCwgMjUyLCAyMywgMSwgMjE3LCAxNTcsIDIzMywgNzAsIAorICAgIDI1MiwgMjMsIDEsIDI1MSwgMTU0LCAyMzMsIDcwLCAyNTIsIDIzLCAxLCAyMjEsIDE3NCwgMjMzLCA3MCwgMjUyLCAyMywgMSwgCisgICAgMjE3LCAxODksIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIxOSwgMjE4LCAyMzMsIDcwLCAyNTIsIDIzLCAxLCAyMTgsIDI0MiwgCisgICAgMjMzLCA3MCwgMjUyLCAyMywgMSwgMjE1LCAxNzEsIDIzMywgNzAsIDI1MiwgMjMsIDEsIDIxMiwgMTQ1LCAyMzMsIDcwLCAKKyAgICAyNTIsIDIzLCAyMTcsIDc3LCA1MywgMjMzLCA3MCwgMjUyLCAyMywgNDMsIDEwMiwgMjMzLCA3MCwgMjUyLCAyMywgNDMsIAorICAgIDEwNSwgMjMzLCA3MCwgMjUyLCAyMywgNDMsIDE0MiwgMjMzLCA3MCwgMjUyLCAyMywgNDMsIDIxMiwgOTgsIDIzMywgNzAsIAorICAgIDI1MiwgMjMsIDQzLCAyMTAsIDEyMywgMjMzLCA3MCwgMjUyLCAyMywgNDMsIDExOSwgMjM4LCAyOSwgMjMzLCA3MCwgMjUyLCAKKyAgICAyMywgNDMsIDExOSwgMjExLCAyNDIsIDIzMywgNzAsIDI1MiwgMjMsIDQzLCAyMTIsIDk5LCAyMTEsIDI0MiwgMjIyLCAxOCwgCisgICAgMSwgMjUyLCAxNzAsIDIyMiwgMTgsIDEsIDI1MCwgNywgMjIyLCAxOCwgMSwgMjQwLCA0NywgMjIyLCAxOCwgMSwgMjQ2LCAKKyAgICAxMTAsIDIyMiwgMTgsIDEsIDIzOSwgNzEsIDIyMiwgMTgsIDEsIDIwNywgNTksIDIyMiwgMTgsIDEsIDIwNSwgOTYsIDIyMiwgCisgICAgMTgsIDEsIDIzOSwgMjcsIDIyMiwgMTgsIDEsIDIxMiwgNzYsIDIyMiwgMTgsIDEsIDIwNSwgMjM1LCAyMjIsIDE4LCAxLCAKKyAgICAyMzIsIDE3LCAyMjIsIDE4LCAxLCAyMzAsIDk3LCAyMjIsIDE4LCAxLCAyMjcsIDkwLCAyMjIsIDE4LCAxLCA0MiwgMjIzLCAKKyAgICAxNzMsIDIyMiwgMTgsIDEsIDIyMywgMTczLCAyMjIsIDE4LCAxLCAyMTcsIDE1NywgMjIyLCAxOCwgMSwgMjUxLCAxNTQsIAorICAgIDIyMiwgMTgsIDEsIDIyMSwgMTc0LCAyMjIsIDE4LCAxLCAyMTcsIDE4OSwgMjIyLCAxOCwgMSwgMjE5LCAyMTgsIDIyMiwgCisgICAgMTgsIDEsIDIxOCwgMjQyLCAyMjIsIDE4LCAxLCAyMTUsIDE3MSwgMjIyLCAxOCwgMSwgMjEyLCAxNDUsIDIyMiwgMTgsIAorICAgIDIzMCwgNDEsIDI0MSwgMTgzLCAyMjIsIDE4LCAyMTgsIDE2MiwgMjQxLCAxODMsIDIyMiwgMTgsIDQzLCAxMDIsIDIyMiwgCisgICAgMTgsIDQzLCAxMDUsIDIyMiwgMTgsIDQzLCAxNDIsIDIyMiwgMTgsIDQzLCAxMzksIDIyMiwgMTgsIDQzLCAxNjgsIDIyMiwgCisgICAgMTgsIDQzLCAyMTIsIDk4LCAyMjIsIDE4LCA0MywgMjEwLCAxMjMsIDIyNSwgMjI4LCAxLCA0MiwgMjUyLCAxNzAsIDIyNSwgCisgICAgMjI4LCAxLCAyNTIsIDE3MCwgMjI1LCAyMjgsIDEsIDQyLCAyNTAsIDcsIDIyNSwgMjI4LCAxLCAyNTAsIDcsIDIyNSwgMjI4LCAKKyAgICAxLCAyNDAsIDQ3LCAyMjUsIDIyOCwgMSwgMjQ2LCAxMTAsIDIyNSwgMjI4LCAxLCA0MiwgMjM5LCA3MSwgMjI1LCAyMjgsIDEsIAorICAgIDIzOSwgNzEsIDIyNSwgMjI4LCAxLCAyMDcsIDU5LCAyMjUsIDIyOCwgMSwgMjA1LCA5NiwgMjI1LCAyMjgsIDEsIDIzOSwgCisgICAgMjcsIDIyNSwgMjI4LCAxLCAyMTIsIDc2LCAyMjUsIDIyOCwgMSwgNDIsIDIwNSwgMjM1LCAyMjUsIDIyOCwgMSwgMjA1LCAKKyAgICAyMzUsIDIyNSwgMjI4LCAxLCA0MiwgMjMyLCAxNywgMjI1LCAyMjgsIDEsIDIzMiwgMTcsIDIyNSwgMjI4LCAxLCA0MiwgCisgICAgMjMwLCA5NywgMjI1LCAyMjgsIDEsIDIzMCwgOTcsIDIyNSwgMjI4LCAxLCA0MiwgMjI3LCA5MCwgMjI1LCAyMjgsIDEsIAorICAgIDIyNywgOTAsIDIyNSwgMjI4LCAxLCA0MiwgMjIzLCAxNzMsIDIyNSwgMjI4LCAxLCAyMjMsIDE3MywgMjI1LCAyMjgsIDEsIAorICAgIDIxNywgMTU3LCAyMjUsIDIyOCwgMSwgMjUxLCAxNTQsIDIyNSwgMjI4LCAxLCAyMjEsIDE3NCwgMjI1LCAyMjgsIDEsIDIxNywgCisgICAgMTg5LCAyMjUsIDIyOCwgMSwgMjE5LCAyMTgsIDIyNSwgMjI4LCAxLCAyMTgsIDI0MiwgMjI1LCAyMjgsIDEsIDQyLCAyMTUsIAorICAgIDE3MSwgMjI1LCAyMjgsIDEsIDIxNSwgMTcxLCAyMjUsIDIyOCwgMSwgMjEyLCAxNDUsIDIyNSwgMjI4LCA0MywgMTAyLCAKKyAgICAyMjUsIDIyOCwgNDMsIDEwNSwgMjI1LCAyMjgsIDQzLCAxNDIsIDIyNSwgMjI4LCA0MywgMTM5LCAyMjUsIDIyOCwgMjQ3LCAKKyAgICA0NiwgNDMsIDEzOSwgMjI1LCAyMjgsIDQzLCAxNjgsIDIyNSwgMjI4LCA0MywgMjEyLCA5OCwgMjI1LCAyMjgsIDQzLCAyMTAsIAorICAgIDEyMywgMjI1LCAyMjgsIDQzLCAxMTksIDIzOCwgMjksIDIyMSwgNjQsIDEsIDI1MiwgMTY3LCAyMjEsIDY0LCAxLCAyNTAsIAorICAgIDEwLCAyMjEsIDY0LCAxLCAyNDAsIDIxNywgMjIxLCA2NCwgMSwgMjQ1LCAyMjksIDIyMSwgNjQsIDEsIDIzOSwgNzEsIDIyMSwgCisgICAgNjQsIDEsIDIwNywgNjYsIDIyMSwgNjQsIDEsIDIwNSwgMTEwLCAyMjEsIDY0LCAxLCAyMzksIDI5LCAyMjEsIDY0LCAxLCAKKyAgICAyMTIsIDgwLCAyMjEsIDY0LCAxLCAyMDUsIDIzNiwgMjIxLCA2NCwgMSwgMjMyLCA0NSwgMjIxLCA2NCwgMSwgMjMwLCAxMDMsIAorICAgIDIyMSwgNjQsIDEsIDIyNywgOTAsIDIyMSwgNjQsIDEsIDIyMywgMTczLCAyMjEsIDY0LCAxLCAyMTYsIDQ2LCAyMjEsIDY0LCAKKyAgICAxLCAyNTIsIDIwMCwgMjIxLCA2NCwgMSwgMjIxLCAxNzQsIDIyMSwgNjQsIDEsIDIxNywgMTkwLCAyMjEsIDY0LCAxLCAyMTksIAorICAgIDIyMywgMjIxLCA2NCwgMSwgMjE4LCA5OSwgMjIxLCA2NCwgMSwgMjE1LCAxNzEsIDIyMSwgNjQsIDEsIDIxMiwgMTUxLCAKKyAgICAyMjEsIDY0LCA0MywgMTAyLCAyMjEsIDY0LCA0MywgMjEyLCA5OCwgMjIxLCA2NCwgNDMsIDIxMCwgMTIzLCAyMjEsIDY0LCAKKyAgICA0MywgMTE5LCAyMzgsIDI5LCAyMjEsIDY0LCA0MywgMTA1LCAyMjEsIDY0LCA0MywgMTQyLCAyMjEsIDY0LCAyMDYsIDIzMiwgCisgICAgMjE2LCAzOSwgMjI5LCAzOSwgMSwgNjIsIDIyOSwgMzksIDEsIDI1MSwgMTUwLCAyMjksIDM5LCAxLCAyNDEsIDU1LCAyMjksIAorICAgIDM5LCAxLCAyNDYsIDI0MCwgMjI5LCAzOSwgMSwgNzUsIDIyOSwgMzksIDEsIDIwOSwgMTQ4LCAyMjksIDM5LCAxLCA3NCwgCisgICAgMjI5LCAzOSwgMSwgMjA2LCAxMjMsIDIyOSwgMzksIDEsIDIzMiwgNzYsIDIyOSwgMzksIDEsIDE0OSwgMjI5LCAzOSwgMSwgCisgICAgMjI5LCAyOCwgMjI5LCAzOSwgMSwgMjI2LCAzMywgMjI5LCAzOSwgMSwgNzYsIDIyOSwgMzksIDEsIDEzNywgMjI5LCAzOSwgCisgICAgMSwgMjE0LCA5OSwgMjI5LCAzOSwgMSwgMjEzLCAxMCwgMjI5LCAzOSwgMSwgNzEsIDIyOSwgMzksIDEsIDI0MiwgMTM5LCAKKyAgICAyMjksIDM5LCAxLCAyMjAsIDI3LCAyMjksIDM5LCAxLCAxODIsIDIyOSwgMzksIDEsIDIxMCwgMjExLCAyMjksIDM5LCAxLCAKKyAgICAyNTIsIDEyMiwgMjI5LCAzOSwgMSwgMjQzLCA0MSwgMjI5LCAzOSwgMSwgMjI5LCA0MiwgMjI5LCAzOSwgMSwgMjI0LCAxMDQsIAorICAgIDIyOSwgMzksIDEsIDI0OSwgMzQsIDIyOSwgMzksIDIxMSwgNDgsIDgzLCAyMjcsIDcyLCAyMzksIDUsIDEsIDYyLCAyMjcsIAorICAgIDcyLCAyMzksIDUsIDEsIDc1LCAyMjcsIDcyLCAyMzksIDUsIDEsIDc0LCAyMjcsIDcyLCAyMzksIDUsIDEsIDc2LCAyMjcsIAorICAgIDcyLCAyMzksIDUsIDEsIDE5MCwgMjI3LCA3MiwgMjM5LCA1LCAxLCAyMDcsIDk2LCAyMjcsIDcyLCAyMzksIDUsIDEsIDI1MCwgCisgICAgMTgzLCAyMjcsIDcyLCAyMzksIDUsIDEsIDI1MCwgMTgyLCAyMjcsIDcyLCAyMzksIDUsIDEsIDE3OSwgMjI3LCA3MiwgMjM5LCAKKyAgICA1LCAxLCAxODUsIDIyNywgNzIsIDIzOSwgNSwgMSwgMTk5LCAyMjcsIDcyLCAyMzksIDUsIDEsIDIyNSwgMjM2LCAyMjcsIAorICAgIDcyLCAyMzksIDUsIDEsIDIyNSwgMTEwLCAyMjcsIDcyLCAyMzksIDUsIDEsIDIyNSwgMTA5LCAyMjcsIDcyLCAyMzksIDUsIAorICAgIDEsIDIxOSwgMTEzLCAyMjcsIDcyLCAyMzksIDUsIDEsIDIxOSwgMTEyLCAyMjcsIDcyLCAyMzksIDUsIDEsIDIzMCwgMTQxLCAKKyAgICAyMjcsIDcyLCAyMzksIDUsIDEsIDIzMSwgMTY3LCAyMjcsIDcyLCAyMzksIDUsIDEsIDIzOSwgMjAsIDIyNywgNzIsIDIzOSwgCisgICAgNSwgMSwgMjE3LCAxOTksIDIyNywgNzIsIDIzOSwgNSwgMSwgMjE3LCAxOTgsIDIyNywgNzIsIDIzOSwgNSwgMSwgMjE3LCAKKyAgICA4NiwgMjI3LCA3MiwgMjM5LCA1LCAxLCAxNzIsIDIyNywgNzIsIDIzOSwgNSwgMSwgMjIwLCAxOSwgMjI3LCA3MiwgMjM5LCAKKyAgICA1LCAxLCAyMTIsIDIxOSwgMjI3LCA3MiwgMjM5LCA1LCAxLCAyMTIsIDIxOCwgMjI3LCA3MiwgMjM5LCA1LCAxLCAyMTIsIAorICAgIDEzMSwgMjI3LCA3MiwgMjM5LCA1LCAxLCAyMTIsIDEzMCwgMjI3LCA3MiwgMjM5LCA1LCAxLCAxMjQsIDIyNywgNzIsIDIzOSwgCisgICAgNSwgMSwgMjQ2LCAxNDUsIDIyNywgNzIsIDIzOSwgNSwgMTYsIDIwOCwgMjA4LCAyMjcsIDcyLCAyMzksIDUsIDE2LCAyMDgsIAorICAgIDIwNywgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgNjIsIDIyNywgNzIsIDI0NywgMjEsIDEsIDc1LCAyMjcsIDcyLCAyNDcsIDIxLCAKKyAgICAxLCA3NCwgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgNzYsIDIyNywgNzIsIDI0NywgMjEsIDEsIDE5MCwgMjI3LCA3MiwgMjQ3LCAKKyAgICAyMSwgMSwgMjA3LCA5NiwgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMjUwLCAxODMsIDIyNywgNzIsIDI0NywgMjEsIDEsIDE3OSwgCisgICAgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMTg1LCAyMjcsIDcyLCAyNDcsIDIxLCAxLCAxOTksIDIyNywgNzIsIDI0NywgMjEsIDEsIAorICAgIDIyNSwgMTEwLCAyMjcsIDcyLCAyNDcsIDIxLCAxLCAyMTksIDExMywgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMjMwLCAxNDEsIAorICAgIDIyNywgNzIsIDI0NywgMjEsIDEsIDIzMSwgMTY3LCAyMjcsIDcyLCAyNDcsIDIxLCAxLCAyMzksIDIwLCAyMjcsIDcyLCAKKyAgICAyNDcsIDIxLCAxLCAyMTcsIDE5OSwgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMjUyLCAxOSwgMjE3LCAxOTksIDIyNywgNzIsIAorICAgIDI0NywgMjEsIDEsIDIxNywgODYsIDIyNywgNzIsIDI0NywgMjEsIDEsIDE3MiwgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMjIwLCAKKyAgICAxOSwgMjI3LCA3MiwgMjQ3LCAyMSwgMSwgMjEyLCAyMTksIDIyNywgNzIsIDI0NywgMjEsIDEsIDIxMiwgMTMxLCAyMjcsIAorICAgIDcyLCAyNDcsIDIxLCAxLCAxMjQsIDIyNywgNzIsIDI0NywgMjEsIDEsIDI0NiwgMTQ1LCAyMjcsIDcyLCAyNDcsIDIxLCAKKyAgICAyMjksIDEzMywgMjE4LCAxMzAsIDIyNywgNzIsIDI0NywgMjEsIDIyOSwgMTMzLCAyMzMsIDc1LCAyMzEsIDE1NCwgMSwgNjIsIAorICAgIDIzMSwgMTU0LCAyMiwgMywgNzQsIDIzMSwgMTU0LCAyMiwgMywgNzEsIDIzMSwgMTU0LCAyMiwgMywgMTE1LCAxMzcsIDIzMSwgCisgICAgMTU0LCAyMiwgMywgNzUsIDIzMSwgMTU0LCAyMiwgMywgNzYsIDIzMSwgMTU0LCAyMiwgMjMwLCAyMCwgODMsIDIzMSwgMTU0LCAKKyAgICAzLCA1MCwgMjE4LCAxNDksIDU1LCAyMzEsIDE1NCwgMywgMjUyLCA3MywgMjMxLCAxNTQsIDMsIDIwOCwgMTgzLCAyMzEsIAorICAgIDE1NCwgMSwgMTcyLCAyMzEsIDE1NCwgMSwgMjMxLCAxNjcsIDIzMSwgMTU0LCAxLCAyNDAsIDI0NCwgMjMxLCAxNTQsIDEsIAorICAgIDI0MCwgOTksIDIzMSwgMTU0LCAxLCAyNDksIDEsIDIzMSwgMTU0LCAxLCAyNDgsIDExMCwgMjMxLCAxNTQsIDEsIDIzMiwgCisgICAgMjAwLCAyMzEsIDE1NCwgMSwgMjIzLCAxNDQsIDIzMSwgMTU0LCAxLCAyMTAsIDIwOCwgMjMxLCAxNTQsIDEsIDIxMCwgMTk2LCAKKyAgICAyMzEsIDE1NCwgMSwgMjQ2LCA1NCwgMjMxLCAxNTQsIDEsIDI0NiwgMzgsIDIzMSwgMTU0LCAxLCAyMjQsIDEwMywgMjMxLCAKKyAgICAxNTQsIDEsIDIxMiwgMjE5LCAyMzEsIDE1NCwgMSwgMjEyLCA1NiwgMjMxLCAxNTQsIDEsIDI0NiwgMTQ1LCAyMzEsIDE1NCwgCisgICAgMSwgMjQ1LCAxOTIsIDIzMSwgMTU0LCAxLCAxOTksIDIzMSwgMTU0LCAxLCAxNzksIDIzMSwgMTU0LCAxLCAyMjEsIDkzLCAKKyAgICAyMzEsIDE1NCwgMSwgMjUwLCAxODMsIDIzMSwgMTU0LCAxLCAyNTAsIDAsIDIzMSwgMTU0LCAxLCAxODUsIDIzMSwgMTU0LCAKKyAgICAxLCAxOTAsIDIzMSwgMTU0LCAxLCAyMTksIDExMywgMjMxLCAxNTQsIDEsIDIzMCwgMTQxLCAyMzEsIDE1NCwgMSwgMjA5LCAKKyAgICA3MCwgMjMxLCAxNTQsIDEsIDIxNiwgMiwgMjMxLCAxNTQsIDEsIDIxNCwgOTYsIDIzMSwgMTU0LCAxLCAyMTcsIDE5OSwgCisgICAgMjMxLCAxNTQsIDEsIDIwNSwgMTE2LCAyMzEsIDE1NCwgMSwgMTU1LCAyMzEsIDE1NCwgMSwgMjMxLCA3MiwgMjMxLCAxNTQsIAorICAgIDEsIDIxMCwgMTc2LCAyMzEsIDE1NCwgMywgMjUwLCAxMjksIDUyLCAyMzEsIDE1NCwgMywgMjQ4LCAxNzksIDIzMSwgMTU0LCAKKyAgICAzLCA2NywgNTUsIDIzMSwgMTU0LCAyMDgsIDE4OCwgMjMxLCAxNTQsIDE4LCAxMDIsIDIzMSwgMTU0LCAxOCwgMTA1LCAyMzEsIAorICAgIDE1NCwgMTgsIDE0MiwgMjMxLCAxNTQsIDE4LCAxMzksIDIzMSwgMTU0LCA0MywgMjEyLCA5OCwgMjMxLCAxNTQsIDQzLCAKKyAgICAyMTAsIDEyMywgMjMxLCAxNTQsIDQzLCAxMTksIDIzOCwgMjksIDIzMSwgMTU0LCA0MywgMTE5LCAyMTEsIDI0MiwgMjMxLCAKKyAgICAxNTQsIDIyMCwgNzIsIDI0NSwgMjMsIDIzMSwgMTU0LCAyMjAsIDcyLCA1LCAyNDcsIDIzMywgMjMxLCAxNTQsIDIyMCwgNzIsIAorICAgIDI0NywgMjMzLCAyMzEsIDE1NCwgMjIwLCA3MiwgMjQ3LCA2NiwgMTM0LCAyMzEsIDE1NCwgMjIwLCA3MiwgMjI3LCAyMTUsIAorICAgIDIzMSwgMTU0LCAyMjAsIDcyLCAyMjksIDEwMiwgMjMxLCAxNTQsIDIyMCwgNzIsIDI0NiwgMTAwLCAyMzEsIDE1NCwgMjIwLCAKKyAgICA3MiwgNTAsIDI0NiwgMTAwLCAyMzEsIDE1NCwgMjIwLCA3MiwgMjI5LCAxOTksIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIzOSwgCisgICAgNzEsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIzMCwgOTcsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIzOSwgMjcsIDQ0LCAxODgsIAorICAgIDI1MiwgMzQsIDEsIDIyNywgOTAsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIxOSwgMjE4LCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAKKyAgICAyMDcsIDU5LCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAyMTUsIDE3MSwgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjE4LCAyNDIsIAorICAgIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDI1MCwgNywgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjEyLCAxNDUsIDQ0LCAxODgsIDI1MiwgCisgICAgMzQsIDEsIDIxNywgMTMzLCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAyMzIsIDE3LCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAyMjMsIAorICAgIDE3MywgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjMxLCAxNDksIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIxNywgMTg5LCA0NCwgCisgICAgMTg4LCAyNTIsIDM0LCAxLCAyMTcsIDE1NywgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjQyLCAyOCwgNDQsIDE4OCwgMjUyLCAKKyAgICAzNCwgMSwgMjUyLCAxNzIsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDI1MSwgMTUzLCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAyNDUsIAorICAgIDE4OSwgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjQwLCA0NywgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjQ2LCAxMTAsIDQ0LCAKKyAgICAxODgsIDI1MiwgMzQsIDEsIDI0MCwgODcsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDIxMiwgNzYsIDQ0LCAxODgsIDI1MiwgMzQsIAorICAgIDEsIDIwNSwgOTUsIDQ0LCAxODgsIDI1MiwgMzQsIDEsIDI0NSwgMTg2LCA0NCwgMTg4LCAyNTIsIDM0LCAxLCAyMDUsIDIzNSwgCisgICAgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjEyLCA0MywgNDQsIDE4OCwgMjUyLCAzNCwgMSwgMjEyLCAyMiwgNDQsIDE4OCwgMjUyLCAKKyAgICAzNCwgNDMsIDEwMiwgNDQsIDE4OCwgMjUyLCAzNCwgNDMsIDI0MSwgMjQzLCA0NCwgMTg4LCAyNTIsIDM0LCAxMzMsIDIzMywgCisgICAgNDksIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIzOSwgNTAsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIzMCwgMTA2LCA0NCwgMTQzLCAKKyAgICAyNTIsIDM0LCAxLCAyMzksIDEzMiwgNDQsIDE0MywgMjUyLCAzNCwgMSwgMjI3LCAxMDQsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIAorICAgIDIyMCwgMTIsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIwNywgNTksIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDI0MiwgMjIzLCA0NCwgCisgICAgMTQzLCAyNTIsIDM0LCAxLCAyMTksIDE2LCA0NCwgMTQzLCAyNTIsIDM0LCAxLCAyNTAsIDM4LCA0NCwgMTQzLCAyNTIsIDM0LCAKKyAgICAxLCAyMTIsIDExNSwgNDQsIDE0MywgMjUyLCAzNCwgMSwgMjQyLCAyMjQsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIzMiwgNDUsIAorICAgIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIyNCwgNTQsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIzMSwgMTYzLCA0NCwgMTQzLCAKKyAgICAyNTIsIDM0LCAxLCAyMTcsIDE5MSwgNDQsIDE0MywgMjUyLCAzNCwgMSwgMjQyLCAyMjIsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIAorICAgIDI0MiwgMTUsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDI1MiwgMTcyLCA0NCwgMTQzLCAyNTIsIDM0LCAxLCAyNTIsIDIwMCwgCisgICAgNDQsIDE0MywgMjUyLCAzNCwgMSwgMjQ2LCAxNDAsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDI0MCwgMTYxLCA0NCwgMTQzLCAKKyAgICAyNTIsIDM0LCAxLCAyNDYsIDExNywgNDQsIDE0MywgMjUyLCAzNCwgMSwgMjQwLCA5NCwgNDQsIDE0MywgMjUyLCAzNCwgMSwgCisgICAgMjEyLCAxOTQsIDQ0LCAxNDMsIDI1MiwgMzQsIDEsIDIwNSwgMTA4LCA0NCwgMTQzLCAyNTIsIDM0LCAxLCAyMTIsIDQ5LCAKKyAgICA0NCwgMTQzLCAyNTIsIDM0LCAxLCAyMDYsIDQ3LCA0NCwgMTQzLCAyNTIsIDM0LCAxLCAyMTIsIDM3LCA0NCwgMTQzLCAyNTIsIAorICAgIDM0LCAxLCAyMDUsIDExMSwgNDQsIDE0MywgMjUyLCAzNCwgNDMsIDEwMiwgNDQsIDE0MywgMjUyLCAzNCwgNDMsIDIxMiwgCisgICAgOTgsIDQ0LCAxNDMsIDI1MiwgMzQsIDQzLCAyMTAsIDEyMywgMjI3LCAyMTQsIDEsIDI1MiwgMTcwLCAyMjcsIDIxNCwgMSwgCisgICAgMjUwLCA3LCAyMjcsIDIxNCwgMSwgMjQ5LCAyNTAsIDIyNywgMjE0LCAxLCAyNDAsIDQ3LCAyMjcsIDIxNCwgMSwgMjQwLCAKKyAgICA3MiwgMjI3LCAyMTQsIDEsIDI0NiwgMTEwLCAyMjcsIDIxNCwgMSwgMjM5LCA3MSwgMjI3LCAyMTQsIDEsIDIwNywgNTksIAorICAgIDIyNywgMjE0LCAzLCAyMTAsIDgsIDIyNywgMjE0LCAxLCAyMDUsIDk2LCAyMjcsIDIxNCwgMSwgMjA1LCA3NCwgMjI3LCAKKyAgICAyMTQsIDEsIDIzMiwgMTg0LCAyMjcsIDIxNCwgMSwgMjMyLCAxNjYsIDIyNywgMjE0LCAxLCAyMzksIDI3LCAyMjcsIDIxNCwgCisgICAgMSwgMjEyLCA3NiwgMjI3LCAyMTQsIDEsIDIwNSwgMjM1LCAyMjcsIDIxNCwgMSwgMjMyLCAxNywgMjI3LCAyMTQsIDEsIAorICAgIDIwNiwgMTc4LCAyMjcsIDIxNCwgMSwgMjMxLCAxNTYsIDIyNywgMjE0LCAxLCAyMzAsIDk3LCAyMjcsIDIxNCwgMSwgMjQ1LCAKKyAgICAxODUsIDIyNywgMjE0LCAxLCAyMTIsIDQ4LCAyMjcsIDIxNCwgMSwgMjI3LCA5MCwgMjI3LCAyMTQsIDEsIDIyMywgMTczLCAKKyAgICAyMjcsIDIxNCwgMSwgMjE3LCAxNTcsIDIyNywgMjE0LCAxLCAyNTEsIDE1NCwgMjI3LCAyMTQsIDEsIDI1MywgMTE3LCAyMjcsIAorICAgIDIxNCwgMSwgMjIxLCAxNzQsIDIyNywgMjE0LCAxLCAyNDIsIDI4LCAyMjcsIDIxNCwgMSwgMjE3LCAxODksIDIyNywgMjE0LCAKKyAgICAxLCAyMTksIDIxOCwgMjI3LCAyMTQsIDEsIDIwNiwgMTU2LCAyMjcsIDIxNCwgMSwgMjE5LCAyNDQsIDIyNywgMjE0LCAxLCAKKyAgICAyMTgsIDI0MiwgMjI3LCAyMTQsIDEsIDIxNSwgMTcxLCAyMjcsIDIxNCwgMSwgMjE0LCA2NSwgMjI3LCAyMTQsIDEsIDIxMiwgCisgICAgMTQ1LCAyMjcsIDIxNCwgMjUzLCAyOSwgMTQxLCA1MiwgMjI3LCAyMTQsIDI1MywgMjksIDE0MSwgNTUsIDIyNywgMjE0LCAKKyAgICA0MywgMTAyLCAyMjcsIDIxNCwgNDMsIDE2OCwgMjI3LCAyMTQsIDQzLCAyMTIsIDk4LCAyMjcsIDIxNCwgNDMsIDIxMCwgCisgICAgMTIzLCAyMjcsIDIxNCwgNDMsIDExOSwgMjM4LCAyOSwgMjI3LCAyMTQsIDIyMCwgNzIsIDIxNCwgMjYsIDIyNywgMjE0LCAKKyAgICAyMjAsIDcyLCAyNDEsIDE4MywgMjI3LCAyMTQsIDIyMCwgNzIsIDUwLCA2NywgMjA2LCAyNTUsIDI0NSwgMjMsIDIyNywgCisgICAgMjE0LCAyMjAsIDcyLCA2NywgMjA2LCAyNTUsIDI0NSwgMjMsIDIyNywgMjE0LCAyMjAsIDcyLCAyNDUsIDIzLCAyMjcsIAorICAgIDIxNCwgMjIwLCA3MiwgMTE4LCAyNDUsIDIxLCAyMjcsIDIxNCwgMjIwLCA3MiwgMjI5LCAyMDYsIDI0MSwgMjMyLCAyNTEsIAorICAgIDE2NCwgMSwgNjIsIDI1MSwgMTY0LCAxLCAyNTMsIDE2NCwgMjUxLCAxNjQsIDEsIDI1MiwgNzEsIDI1MSwgMTY0LCAxLCAKKyAgICAyNTMsIDEyMywgMjUxLCAxNjQsIDEsIDI1MiwgMTIyLCAyNTEsIDE2NCwgMSwgMjUzLCAxMjQsIDI1MSwgMTY0LCAxLCAyNTIsIAorICAgIDI0OCwgMjUxLCAxNjQsIDEsIDI1MiwgMjQ0LCAyNTEsIDE2NCwgMSwgNzUsIDI1MSwgMTY0LCAxLCAyNDMsIDEwNCwgMjUxLCAKKyAgICAxNjQsIDEsIDc2LCAyNTEsIDE2NCwgMSwgMjIyLCAxNTIsIDI1MSwgMTY0LCAxLCA3NCwgMjUxLCAxNjQsIDEsIDIzMywgCisgICAgMTAyLCAyNTEsIDE2NCwgMSwgNzEsIDI1MSwgMTY0LCAxLCAyMDksIDE2MiwgMjUxLCAxNjQsIDEsIDIzMSwgMjI0LCAyNTEsIAorICAgIDE2NCwgMSwgMjA2LCAxNzUsIDI1MSwgMTY0LCAxLCAyMDYsIDEzNywgMjUxLCAxNjQsIDEsIDIwNiwgMTQ3LCAyNTEsIDE2NCwgCisgICAgMSwgMjQwLCAxNzAsIDI1MSwgMTY0LCAxLCAyNDAsIDEzMCwgMjUxLCAxNjQsIDEsIDI0MCwgODUsIDI1MSwgMTY0LCAxLCAKKyAgICAyNDgsIDE0OCwgMjUxLCAxNjQsIDEsIDIzMiwgMTgyLCAyNTEsIDE2NCwgMSwgMjEyLCAxMzEsIDI1MSwgMTY0LCAxLCAyMTIsIAorICAgIDQxLCAyNTEsIDE2NCwgMSwgMjQ2LCA5LCAyNTEsIDE2NCwgMSwgMjQ1LCAxODMsIDI1MSwgMTY0LCAxLCAyMTAsIDIwMywgCisgICAgMjUxLCAxNjQsIDEsIDIyMSwgMTc0LCAyNTEsIDE2NCwgMSwgMjQyLCAyOCwgMjUxLCAxNjQsIDEsIDI1MCwgNjEsIDI1MSwgCisgICAgMTY0LCAxLCAyNDksIDI1MiwgMjUxLCAxNjQsIDEsIDIyNSwgNjQsIDI1MSwgMTY0LCAxLCAyMjQsIDIzNiwgMjUxLCAxNjQsIAorICAgIDEsIDIyNCwgMjM3LCAyNTEsIDE2NCwgMSwgMjI1LCAxMTAsIDI1MSwgMTY0LCAxLCAyMjMsIDEzNCwgMjUxLCAxNjQsIDEsIAorICAgIDIyNCwgOTgsIDI1MSwgMTY0LCAxLCAyMjcsIDExOSwgMjUxLCAxNjQsIDEsIDIzOCwgMTk5LCAyNTEsIDE2NCwgMSwgMjA1LCAKKyAgICAxNjYsIDI1MSwgMTY0LCAxLCAyMDYsIDUyLCAyNTEsIDE2NCwgMSwgMjA5LCAzOSwgMjUxLCAxNjQsIDEsIDIxOSwgNTEsIAorICAgIDI1MSwgMTY0LCAxLCAyMzAsIDU4LCAyNTEsIDE2NCwgMSwgMjE3LCA4NiwgMjUxLCAxNjQsIDEsIDIwNSwgOTMsIDI1MSwgCisgICAgMTY0LCAxLCAyMTUsIDIxNCwgMjUxLCAxNjQsIDEsIDIwNSwgNzIsIDI1MSwgMTY0LCAxLCAyMTUsIDg3LCAyNTEsIDE2NCwgCisgICAgMSwgMjE0LCA2NiwgMjUxLCAxNjQsIDEsIDIzOSwgNzEsIDI1MSwgMTY0LCAyNTMsIDI5LCA4MywgMjExLCAxNjksIDExOCwgCisgICAgMTc3LCAxMzEsIDExOSwgNjcsIDIyMCwgNzEsIDUsIDExOCwgMTc3LCAxMzEsIDExOSwgNjcsIDIyMCwgNzEsIDIzMCwgODYsIAorICAgIDExOCwgMTc3LCAxMzEsIDExOSwgNjcsIDIyMCwgNzEsIDIzMCwgODYsIDExOSwgNjcsIDEzMSwgMTE4LCAxNzcsIDIyMCwgCisgICAgNzEsIDIzMCwgODYsIDExOCwgMjE4LCAxNDYsIDEzMSwgMTE5LCAyMTgsIDE0OSwgMjIwLCA3MSwgMjMwLCA4NiwgMTE5LCAKKyAgICAyMTgsIDE0OSwgMTMxLCAxMTgsIDIxOCwgMTQ2LCAyMjAsIDcxLCAyMzMsIDI5LCAyMjEsIDIxMCwgMSwgMjUyLCAxNzAsIAorICAgIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyNTAsIDcsIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyNDAsIDQ3LCAyMzMsIDI5LCAKKyAgICAyMjEsIDIxMCwgMSwgMjQ2LCAxMTAsIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyMzksIDcxLCAyMzMsIDI5LCAyMjEsIDIxMCwgCisgICAgMSwgMjA3LCA1OSwgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIDIwNSwgOTYsIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyMzksIDI3LCAKKyAgICAyMzMsIDI5LCAyMjEsIDIxMCwgMSwgMjEyLCA3NiwgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIDIwNSwgMjM1LCAyMzMsIDI5LCAKKyAgICAyMjEsIDIxMCwgMSwgMjMyLCAxNywgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIDIzMCwgOTcsIDIzMywgMjksIDIyMSwgMjEwLCAKKyAgICAxLCAyMjcsIDkwLCAyMzMsIDI5LCAyMjEsIDIxMCwgMSwgMjIzLCAxNzMsIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyMTcsIAorICAgIDE1NywgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIDI1MSwgMTU0LCAyMzMsIDI5LCAyMjEsIDIxMCwgMSwgMjIxLCAxNzQsIDIzMywgCisgICAgMjksIDIyMSwgMjEwLCAxLCAyMTcsIDE4OSwgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIDIxOSwgMjE4LCAyMzMsIDI5LCAyMjEsIAorICAgIDIxMCwgMSwgMjE4LCAyNDIsIDIzMywgMjksIDIyMSwgMjEwLCAxLCAyMTUsIDE3MSwgMjMzLCAyOSwgMjIxLCAyMTAsIDEsIAorICAgIDIxMiwgMTQ1LCAyMzMsIDI5LCAyMjEsIDIxMCwgNDMsIDEwMiwgMjMzLCAyOSwgMjIxLCAyMTAsIDQzLCAxMDUsIDIzMywgCisgICAgMjksIDIyMSwgMjEwLCA0MywgMTQyLCAyMzMsIDI5LCAyMjEsIDIxMCwgNDMsIDEzOSwgMjMzLCAyOSwgMjIxLCAyMTAsIDQzLCAKKyAgICAyMTIsIDk4LCAyMzMsIDI5LCAyMjEsIDIxMCwgNDMsIDIxMCwgMTIzLCAyMzMsIDI5LCAyMjEsIDIxMCwgNDMsIDExOSwgCisgICAgMjM4LCAyOSwgMjMzLCAyOSwgMjIxLCAyMTAsIDQzLCAxMTksIDIxMSwgMjQyLCAyMzMsIDI5LCAyMjIsIDMzLCAxLCAyNTIsIAorICAgIDE3MCwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjUwLCA3LCAyMzMsIDI5LCAyMjIsIDMzLCAxLCAyNDAsIDQ3LCAyMzMsIDI5LCAKKyAgICAyMjIsIDMzLCAxLCAyNDYsIDExMCwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjM5LCA3MSwgMjMzLCAyOSwgMjIyLCAzMywgMSwgCisgICAgMjA3LCA1OCwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjA1LCA5NiwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjM5LCAyNywgMjMzLCAKKyAgICAyOSwgMjIyLCAzMywgMSwgMjEyLCA3NiwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjA1LCAyMzUsIDIzMywgMjksIDIyMiwgMzMsIAorICAgIDEsIDIzMiwgMTcsIDIzMywgMjksIDIyMiwgMzMsIDEsIDIzMCwgOTcsIDIzMywgMjksIDIyMiwgMzMsIDEsIDIyNywgODksIAorICAgIDIzMywgMjksIDIyMiwgMzMsIDEsIDIyMywgMTczLCAyMzMsIDI5LCAyMjIsIDMzLCAxLCAyMTcsIDE1NywgMjMzLCAyOSwgCisgICAgMjIyLCAzMywgMSwgMjIxLCAxNzQsIDIzMywgMjksIDIyMiwgMzMsIDEsIDIxNywgMTg5LCAyMzMsIDI5LCAyMjIsIDMzLCAxLCAKKyAgICAyMTUsIDE3MSwgMjMzLCAyOSwgMjIyLCAzMywgMSwgMjEyLCAxNDUsIDIzMywgMjksIDIyMiwgMzMsIDQzLCAxMDIsIDIzMywgCisgICAgMjksIDIyMiwgMzMsIDQzLCAxMDUsIDIzMywgMjksIDIyMiwgMzMsIDQzLCAxNDIsIDIzMywgMjksIDIyMiwgMzMsIDQzLCAKKyAgICAxMzksIDIzMywgMjksIDIyMiwgMzMsIDQzLCAyMTIsIDk4LCAyMzMsIDI5LCAyMjIsIDMzLCA0MywgMjEwLCAxMjMsIDIzMywgCisgICAgMjksIDIyMiwgMzMsIDQzLCAxMTksIDIzOCwgMjksIDIzMywgMjksIDIyMiwgMzMsIDQzLCAxMTksIDIxMSwgMjQyLCAyMjAsIAorICAgIDk0LCAyMjIsIDMzLCAxLCAyNTIsIDE3MCwgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjUwLCA3LCAyMjAsIDk0LCAyMjIsIDMzLCAKKyAgICAxLCAyNDAsIDQ3LCAyMjAsIDk0LCAyMjIsIDMzLCAxLCAyNDYsIDExMCwgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjM5LCA3MSwgCisgICAgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjA3LCA1OCwgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjA1LCA5NiwgMjIwLCA5NCwgMjIyLCAKKyAgICAzMywgMSwgMjM5LCAyNywgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjA1LCAyMzUsIDIyMCwgOTQsIDIyMiwgMzMsIDEsIDIzMiwgCisgICAgMTcsIDIyMCwgOTQsIDIyMiwgMzMsIDEsIDIzMCwgOTcsIDIyMCwgOTQsIDIyMiwgMzMsIDEsIDIyNywgODksIDIyMCwgOTQsIAorICAgIDIyMiwgMzMsIDEsIDIyMywgMTczLCAyMjAsIDk0LCAyMjIsIDMzLCAxLCAyMTcsIDE1NywgMjIwLCA5NCwgMjIyLCAzMywgMSwgCisgICAgMjIxLCAxNzQsIDIyMCwgOTQsIDIyMiwgMzMsIDEsIDIxNywgMTg5LCAyMjAsIDk0LCAyMjIsIDMzLCAxLCAyMTUsIDE3MSwgCisgICAgMjIwLCA5NCwgMjIyLCAzMywgMSwgMjEyLCAxNDUsIDIyMCwgOTQsIDIyMiwgMzMsIDIxNywgNzcsIDgzLCAyMjAsIDk0LCAKKyAgICAyMjIsIDMzLCAyMDEsIDIxNywgNzcsIDgzLCAyMjAsIDk0LCAyMjIsIDMzLCAyNDEsIDEyNSwgMTc3LCAyLCAyNDcsIDU5LCAKKyAgICAyMjAsIDk0LCAyMjIsIDMzLCAyNDEsIDEyNSwgMTc3LCAyLCAyNDUsIDIzLCAyMjAsIDk0LCAyMjIsIDMzLCA0MywgMTAyLCAKKyAgICAyMjAsIDk0LCAyMjIsIDMzLCA0MywgMTA1LCAyMjAsIDk0LCAyMjIsIDMzLCA0MywgMTQyLCAyMjAsIDk0LCAyMjIsIDMzLCAKKyAgICA0MywgMTM5LCAyMjAsIDk0LCAyMjIsIDMzLCA0MywgMjEyLCA5OCwgMjIwLCA5NCwgMjIyLCAzMywgNDMsIDIxMCwgMTIzLCAKKyAgICAyMjAsIDk0LCAyMjIsIDMzLCA0MywgMTE5LCAyMzgsIDI5LCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCA2MiwgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCA2MiwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTIsIDI0OCwgNDQsIDIxMCwgCisgICAgMTQ3LCAxLCAyMjIsIDExMywgNzQsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgNzQsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCAKKyAgICA0MCwgNzUsIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDc2LCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyMjIsIAorICAgIDIwNiwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyMjIsIDIwNiwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUzLCAKKyAgICAxMTUsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjUzLCAxMTUsIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgCisgICAgMjQ3LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMjQ3LCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNTIsIAorICAgIDIyMCwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTIsIDIyMCwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUyLCAKKyAgICAyNDIsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjUyLCAyNDIsIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MywgCisgICAgNSwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTMsIDUsIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMjQ2LCAKKyAgICA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNDIsIDE0NSwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNDIsIDE0NSwgCisgICAgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUxLCAxNTksIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjUxLCAxNTksIAorICAgIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMjI5LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMjI5LCAKKyAgICA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNTIsIDI0MCwgNDQsIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTIsIDI0MCwgCisgICAgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjIyLCAyMDUsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjIyLCAyMDUsIAorICAgIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMTgxLCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMTgxLCAKKyAgICA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNTIsIDIzOSwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQzLCA1MiwgCisgICAgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQzLCA1MCwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUyLCAxMjIsIAorICAgIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMjM3LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMjM3LCAKKyAgICA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNDMsIDIwLCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI0MywgMjAsIAorICAgIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI0MywgMzgsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjQzLCAzOCwgCisgICAgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQzLCA3LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI0MywgNywgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTIsIDExNCwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQzLCAyOCwgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNTIsIDIzNiwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQyLCAyNTMsIDQ0LCAKKyAgICAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDIyMiwgMTQzLCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyMzcsIDE4MywgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjQzLCAxMTAsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjQzLCAxMTAsIDQ0LCAKKyAgICAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgNDEsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjUyLCA0MSwgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjMyLCAyNDUsIDQ0LCAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjMyLCAyNDUsIDQ0LCAKKyAgICAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDIyMiwgMTI0LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDIyMiwgMTI0LCA0NCwgCisgICAgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNTIsIDM3LCA0NCwgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMzcsIDQ0LCAKKyAgICAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMjM1LCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNTEsIDIzMSwgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUyLCAyMzMsIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MSwgMjI1LCA0NCwgCisgICAgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MSwgMjI1LCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyNDIsIDIxNSwgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMDYsIDQwLCAyNDIsIDIxNSwgNDQsIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUxLCAxOTksIDQ0LCAKKyAgICAyMTAsIDE0NywgMSwgMjA2LCA0MCwgMjUxLCAxOTksIDQ0LCAyMTAsIDE0NywgMSwgMjIyLCAxMTMsIDI1MiwgMjMwLCA0NCwgCisgICAgMjEwLCAxNDcsIDEsIDIwNiwgNDAsIDI1MiwgMjMwLCA0NCwgMjEwLCAxNDcsIDEsIDIyMiwgMTEzLCAyMjIsIDEwMywgNDQsIAorICAgIDIxMCwgMTQ3LCAxLCAyMjIsIDExMywgMjUwLCAxMTMsIDIxOCwgMzYsIDE4LCAxMDIsIDIxOCwgMzYsIDE4LCAxMDUsIDIxOCwgCisgICAgMzYsIDE4LCAxNDIsIDIxOCwgMzYsIDE4LCAxMzksIDIxOCwgMzYsIDE4LCAxNjgsIDIxOCwgMzYsIDE4LCAxODQsIDIxOCwgCisgICAgMzYsIDE4LCAxOTUsIDIxOCwgMzYsIDE4LCAxOTMsIDIxOCwgMzYsIDE4LCAyMDAsIDIxOCwgMzYsIDQzLCAyMTIsIDk4LCAKKyAgICAyMTgsIDM2LCA0MywgMjEwLCAxMjMsIDIxOCwgMzYsIDQzLCAyMTIsIDMsIDIxOCwgMzYsIDQzLCAyNDEsIDEzMCwgMjE4LCAKKyAgICAzNiwgNDMsIDI0MSwgMjQzLCAyMTgsIDM2LCA0MywgMjE0LCAyNTIsIDIxOCwgMzYsIDQzLCAyMTYsIDE3LCAyMTgsIDM2LCAKKyAgICA0MywgMjQzLCA3OSwgMjE4LCAzNiwgNDMsIDIyNCwgMTkwLCAyMTgsIDM2LCA0MywgMTE5LCAyMzgsIDI5LCAyMTgsIDM2LCAKKyAgICA0MywgMTE4LCAyMzgsIDI5LCAyMTgsIDM2LCA0MywgMTI5LCAyMzgsIDI5LCAyMTgsIDM2LCA0MywgMjQxLCAxMjUsIDIzOCwgCisgICAgMjksIDIxOCwgMzYsIDQzLCAyNDEsIDIwNCwgMjM4LCAyOSwgMjE4LCAzNiwgNDMsIDIxNSwgMTAsIDIzOCwgMjksIDIxOCwgCisgICAgMzYsIDQzLCAyMTYsIDIzLCAyMzgsIDI5LCAyMTgsIDM2LCA0MywgMjQzLCA4OCwgMjM4LCAyOSwgMjE4LCAzNiwgNDMsIAorICAgIDIyNCwgMTk1LCAyMzgsIDI5LCAyMTgsIDM2LCAyNDEsIDExNiwgMTE5LCAyMzksIDEyMSwgMjE4LCAzNiwgMjQxLCAxMTYsIAorICAgIDExOSwgMjE5LCAyMDQsIDIxOCwgMzYsIDI0MSwgMTE2LCAxMTksIDIxMiwgMTAsIDIxOCwgMzYsIDI0MSwgMTE2LCAxMTgsIAorICAgIDIxMiwgNywgMTM2LCAzLCAyNDgsIDIxNywgMTM2LCAzLCAyNTIsIDczLCAxMzYsIDMsIDIwOCwgMTgzLCAxMzYsIDMsIDIzMiwgCisgICAgMTU2LCAxMzYsIDMsIDIwOSwgMjA0LCAxMzYsIDEsIDYyLCAxMzYsIDEsIDI1MywgMTY0LCAxMzYsIDEsIDc0LCAxMzYsIDEsIAorICAgIDIzMywgMTAyLCAxMzYsIDEsIDcxLCAxMzYsIDEsIDIwOSwgMTYyLCAxMzYsIDEsIDExNSwgMTM3LCAxMzYsIDEsIDExNSwgCisgICAgMjE4LCA5MCwgMTM2LCAxLCAxMTUsIDE0OSwgMTM2LCAxLCAxMTUsIDIyOSwgMTczLCAxMzYsIDEsIDc1LCAxMzYsIDEsIAorICAgIDI1MiwgMjA1LCAxMzYsIDEsIDc2LCAxMzYsIDEsIDI1MSwgMTg0LCAxMzYsIDEsIDE3MiwgMTM2LCAxLCAyMzEsIDE2NywgCisgICAgMTM2LCAxLCAyNDAsIDI0NCwgMTM2LCAxLCAyNDAsIDk5LCAxMzYsIDEsIDIyNSwgNzcsIDEzNiwgMSwgMjQ5LCAxLCAxMzYsIAorICAgIDEsIDI0OCwgMTEwLCAxMzYsIDEsIDIzMiwgMjAwLCAxMzYsIDEsIDIzMiwgMTcwLCAxMzYsIDEsIDIyMywgMTQ0LCAxMzYsIAorICAgIDEsIDIxMCwgMjA4LCAxMzYsIDEsIDIxMCwgMTk2LCAxMzYsIDEsIDI0NiwgNTQsIDEzNiwgMSwgMjQ2LCAzOCwgMTM2LCAxLCAKKyAgICAyMjQsIDEwMywgMTM2LCAxLCAyMTIsIDIxOSwgMTM2LCAxLCAyMTIsIDU2LCAxMzYsIDEsIDI0NiwgMTQ1LCAxMzYsIDEsIAorICAgIDI0NSwgMTkyLCAxMzYsIDEsIDE5OSwgMTM2LCAxLCAxNzksIDEzNiwgMSwgMjIxLCA5MywgMTM2LCAxLCAyNTAsIDE4MywgCisgICAgMTM2LCAxLCAyNTAsIDAsIDEzNiwgMSwgMTg1LCAxMzYsIDEsIDE5MCwgMTM2LCAxLCAyMTksIDExMywgMTM2LCAxLCAyMzAsIAorICAgIDE0MSwgMTM2LCAxLCAyMDksIDcwLCAxMzYsIDEsIDIxNiwgMiwgMTM2LCAxLCAyMTQsIDk2LCAxMzYsIDEsIDIxNywgMTk5LCAKKyAgICAxMzYsIDEsIDE1NSwgMTM2LCAxLCAyMjksIDE3MiwgMTM2LCAxLCA0NCwgNDAsIDIyOSwgMTYzLCAxMzYsIDEsIDQ0LCA0MCwgCisgICAgMjE4LCA4OSwgMTM2LCAxLCA0NCwgNDAsIDIyNCwgODUsIDEzNiwgMjIsIDMsIDI1MywgMTY0LCAxMzYsIDIyLCAzLCAyNDksIAorICAgIDI1MywgMjUzLCAxNjQsIDEzNiwgMjIsIDMsIDc0LCAxMzYsIDIyLCAzLCAyMzMsIDEwMiwgMTM2LCAyMiwgMywgNzEsIDEzNiwgCisgICAgMjIsIDMsIDIwOSwgMTYyLCAxMzYsIDIyLCAzLCAxMTUsIDEzNywgMTM2LCAyMiwgMywgMTE1LCAyMTgsIDkwLCAxMzYsIDIyLCAKKyAgICAzLCAxMTUsIDE0OSwgMTM2LCAyMiwgMywgMTE1LCAyMjksIDE3MywgMTM2LCAyMiwgMywgNzUsIDEzNiwgMjIsIDMsIDI1MiwgCisgICAgMjA1LCAxMzYsIDIyLCAzLCA3NiwgMTM2LCAyMiwgMywgMjUxLCAxODQsIDEzNiwgMjA4LCAxODgsIDEzNiwgMjQ2LCAxMDAsIAorICAgIDEzNiwgNTAsIDI0NiwgMTAwLCAxMzYsIDIyMCwgNzIsIDI0NSwgMjMsIDEzNiwgMjIwLCA3MiwgNTAsIDI0NSwgMjMsIDEzNiwgCisgICAgMjIwLCA3MiwgMjI5LCAyMDUsIDEzNiwgMjIwLCA3MiwgMjQ3LCA2NiwgMTM0LCAxMzYsIDIyMCwgNzIsIDIyOSwgMTAyLCAKKyAgICAxMzYsIDQzLCAxMDIsIDEzNiwgNDMsIDEwNSwgMTM2LCA0MywgMTQyLCAxMzYsIDQzLCAxMzksIDEzNiwgNDMsIDE2OCwgCisgICAgMTM2LCA0MywgMTg0LCAxMzYsIDQzLCAxOTUsIDEzNiwgNDMsIDE5MywgMTM2LCA0MywgMjAwLCAxMzYsIDQzLCAyMTIsIDk4LCAKKyAgICAxMzYsIDQzLCAyMTAsIDEyMywgMTM2LCA0MywgMjEyLCAzLCAxMzYsIDQzLCAyNDEsIDEzMCwgMTM2LCA0MywgMjQxLCAyNDMsIAorICAgIDEzNiwgNDMsIDIxNCwgMjUyLCAxMzYsIDQzLCAyMTYsIDE3LCAxMzYsIDQzLCAyNDMsIDc5LCAxMzYsIDQzLCAyMjQsIDE5MCwgCisgICAgMTM2LCA0MywgMTE5LCAyMzgsIDI5LCAxMzYsIDQzLCAxMTksIDIxMSwgMjQyLCAxMzYsIDE4LCAyMDUsIDg1LCAxMzYsIDE4LCAKKyAgICAxMDIsIDEzNiwgMTgsIDEwNSwgMTM2LCAxOCwgMTQyLCAxMzYsIDE4LCAxMzksIDEzNiwgMTgsIDE2OCwgMTM2LCAxOCwgCisgICAgMTg0LCAxMzYsIDE4LCAxOTUsIDEzNiwgMTgsIDE5MywgMTM2LCAxOCwgMjAwLCAxMzYsIDQzLCAyMzIsIDExNywgMjMyLCAKKyAgICAzOCwgMywgMjQ4LCAyMTcsIDIzMiwgMzgsIDMsIDI1MiwgNzMsIDIzMiwgMzgsIDMsIDIwOCwgMTgzLCAyMzIsIDM4LCAxLCAKKyAgICA2MiwgMjMyLCAzOCwgMSwgMjUzLCAxNjQsIDIzMiwgMzgsIDEsIDc0LCAyMzIsIDM4LCAxLCAyMzMsIDEwMiwgMjMyLCAzOCwgCisgICAgMSwgNzEsIDIzMiwgMzgsIDEsIDIwOSwgMTYyLCAyMzIsIDM4LCAxLCA3NSwgMjMyLCAzOCwgMSwgMjUyLCAyMDUsIDIzMiwgCisgICAgMzgsIDEsIDc2LCAyMzIsIDM4LCAxLCAyNTEsIDE4NCwgMjMyLCAzOCwgMSwgMTcyLCAyMzIsIDM4LCAxLCAyMzEsIDE2NywgCisgICAgMjMyLCAzOCwgMSwgMjQwLCAyNDQsIDIzMiwgMzgsIDEsIDI0MCwgOTksIDIzMiwgMzgsIDEsIDIyNSwgNzcsIDIzMiwgMzgsIAorICAgIDEsIDI0OSwgMSwgMjMyLCAzOCwgMSwgMjQ4LCAxMTAsIDIzMiwgMzgsIDEsIDIzMiwgMjAwLCAyMzIsIDM4LCAxLCAyMzIsIAorICAgIDE3MCwgMjMyLCAzOCwgMSwgMjIzLCAxNDQsIDIzMiwgMzgsIDEsIDIxMCwgMjA4LCAyMzIsIDM4LCAxLCAyMTAsIDE5NiwgCisgICAgMjMyLCAzOCwgMSwgMjQ2LCA1NCwgMjMyLCAzOCwgMSwgMjQ2LCA0MywgMjMyLCAzOCwgMSwgMjQ2LCAzOCwgMjMyLCAzOCwgCisgICAgMSwgMjE4LCAyMTIsIDIzMiwgMzgsIDEsIDIyNCwgMTAzLCAyMzIsIDM4LCAxLCAyMTIsIDIxOSwgMjMyLCAzOCwgMSwgMjEyLCAKKyAgICA1NiwgMjMyLCAzOCwgMSwgMjQ2LCAxNDUsIDIzMiwgMzgsIDEsIDI0NSwgMTkyLCAyMzIsIDM4LCAxLCAxOTksIDIzMiwgMzgsIAorICAgIDEsIDE3OSwgMjMyLCAzOCwgMSwgMjIxLCA5MywgMjMyLCAzOCwgMSwgMjUwLCAxODMsIDIzMiwgMzgsIDEsIDI1MCwgMCwgCisgICAgMjMyLCAzOCwgMSwgMTg1LCAyMzIsIDM4LCAxLCAxOTAsIDIzMiwgMzgsIDEsIDIxOSwgMTEzLCAyMzIsIDM4LCAxLCAyMzAsIAorICAgIDE0MSwgMjMyLCAzOCwgMSwgMjA5LCA3MCwgMjMyLCAzOCwgMSwgMjE2LCAyLCAyMzIsIDM4LCAxLCAyMTQsIDk2LCAyMzIsIAorICAgIDM4LCAxLCAyMTcsIDE5OSwgMjMyLCAzOCwgMSwgMTU1LCAyMzIsIDM4LCAyMiwgMywgMjUzLCAxNjQsIDIzMiwgMzgsIDIyLCAKKyAgICAzLCA3NCwgMjMyLCAzOCwgMjIsIDMsIDIzMywgMTAyLCAyMzIsIDM4LCAyMiwgMywgNzEsIDIzMiwgMzgsIDIyLCAzLCAyMDksIAorICAgIDE2MiwgMjMyLCAzOCwgMjIsIDMsIDc1LCAyMzIsIDM4LCAyMiwgMywgMjUyLCAyMDUsIDIzMiwgMzgsIDIyLCAzLCA3NiwgCisgICAgMjMyLCAzOCwgMjIsIDMsIDI1MSwgMTg0LCAyMzIsIDM4LCAzLCAyMDgsIDE4OCwgMjMyLCAzOCwgMywgMjIzLCAxODQsIAorICAgIDIzMiwgMzgsIDI1MywgMjksIDUzLCAyMzIsIDM4LCAyNDMsIDEwLCA1MywgMjMyLCAzOCwgNDMsIDUzLCAyMzIsIDM4LCAKKyAgICAyMTcsIDc3LCA4MywgMjMyLCAzOCwgNTAsIDIxNywgNzcsIDgzLCAyMzIsIDM4LCAyNDYsIDEwMCwgMjMyLCAzOCwgNTAsIAorICAgIDI0NiwgMTAwLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIxNywgMTgyLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIxMiwgCisgICAgMTk0LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDI1MCwgMTU4LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDI0OCwgMjQ2LCAKKyAgICAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDI0NiwgMTI2LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDI0MCwgMjI5LCAyMTQsIAorICAgIDE3MCwgMjE0LCAxNzgsIDEsIDIyNywgMjQ3LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIyNSwgNzQsIDIxNCwgMTcwLCAKKyAgICAyMTQsIDE3OCwgMSwgMjMwLCAxMTcsIDIxNCwgMTcwLCAyMTQsIDE3OCwgMSwgMjI1LCAyMTksIDIxNCwgMTcwLCAyMTQsIAorICAgIDE3OCwgMSwgMjA5LCA2NiwgMjE0LCAxNzAsIDIxNCwgMTc4LCAxLCAyMjIsIDM0LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIAorICAgIDIwNiwgOTAsIDIxNCwgMTcwLCAyMTQsIDE3OCwgMSwgMjE5LCA5MiwgMjE0LCAxNzAsIDIxNCwgMTc4LCAxLCAyMzksIDEzMiwgCisgICAgMjE0LCAxNzAsIDIxNCwgMTc4LCAxLCAyMzIsIDQzLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIzMiwgMTk0LCAyMTQsIAorICAgIDE3MCwgMjE0LCAxNzgsIDEsIDIyMywgMTQxLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDI1MiwgMjEzLCAyMTQsIDE3MCwgCisgICAgMjE0LCAxNzgsIDEsIDI0MywgMTAyLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIzMywgMTAzLCAyMTQsIDE3MCwgMjE0LCAKKyAgICAxNzgsIDEsIDIwOSwgMjUzLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIDIyMiwgMTk0LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDEsIAorICAgIDI0MywgOTIsIDIxNCwgMTcwLCAyMTQsIDE3OCwgMSwgMjI4LCA0LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDE4LCAyMDUsIDg1LCAKKyAgICAyMTQsIDE3MCwgMjE0LCAxNzgsIDE4LCAxMDIsIDIxNCwgMTcwLCAyMTQsIDE3OCwgMTgsIDEwNSwgMjE0LCAxNzAsIDIxNCwgCisgICAgMTc4LCAxOCwgMTQyLCAyMTQsIDE3MCwgMjE0LCAxNzgsIDE4LCAxMzksIDIxNCwgMTcwLCAyMTQsIDE3OCwgMTgsIDE2OCwgCisgICAgMjE0LCAxNzAsIDIxNCwgMTc4LCAxOCwgMTg0LCAyMTQsIDE3MCwgMjE0LCAxNzgsIDE4LCAxOTUsIDIxNCwgMTcwLCAyMTQsIAorICAgIDE3OCwgMTgsIDE5MywgMjE0LCAxNzAsIDIxNCwgMTc4LCAxOCwgMjAwLCAyNDgsIDEwNCwgMywgMjQ4LCAyMTcsIDI0OCwgCisgICAgMTA0LCAzLCAyNTIsIDczLCAyNDgsIDEwNCwgMywgMjA4LCAxODMsIDI0OCwgMTA0LCAxLCAyNTMsIDE2NCwgMjQ4LCAxMDQsIAorICAgIDEsIDc0LCAyNDgsIDEwNCwgMSwgNzEsIDI0OCwgMTA0LCAxLCA3NSwgMjQ4LCAxMDQsIDEsIDIzMiwgNjMsIDI0OCwgMTA0LCAKKyAgICAxLCAyMzEsIDE2NiwgMjQ4LCAxMDQsIDEsIDI0MCwgMjQxLCAyNDgsIDEwNCwgMSwgMjQwLCA5OCwgMjQ4LCAxMDQsIDEsIAorICAgIDIyNSwgNzYsIDI0OCwgMTA0LCAxLCAyNDksIDAsIDI0OCwgMTA0LCAxLCAyNDgsIDEwOSwgMjQ4LCAxMDQsIDEsIDIzMiwgCisgICAgMTk5LCAyNDgsIDEwNCwgMSwgMjMyLCAxNjksIDI0OCwgMTA0LCAxLCAyMjMsIDE0MywgMjQ4LCAxMDQsIDEsIDIxMCwgMjA3LCAKKyAgICAyNDgsIDEwNCwgMSwgMjEwLCAxOTUsIDI0OCwgMTA0LCAxLCAyNDYsIDUzLCAyNDgsIDEwNCwgMSwgMjQ2LCAzNywgMjQ4LCAKKyAgICAxMDQsIDEsIDIyNCwgMTAyLCAyNDgsIDEwNCwgMSwgMjEyLCAyMTUsIDI0OCwgMTA0LCAxLCAyMTIsIDU1LCAyNDgsIDEwNCwgCisgICAgMSwgMjQ2LCAxNDQsIDI0OCwgMTA0LCAxLCAyNDUsIDE5MSwgMjQ4LCAxMDQsIDEsIDIyNSwgMjMyLCAyNDgsIDEwNCwgMSwgCisgICAgMjIyLCA1MSwgMjQ4LCAxMDQsIDEsIDIyMSwgOTIsIDI0OCwgMTA0LCAxLCAyNTAsIDE4MSwgMjQ4LCAxMDQsIDEsIDI0OSwgCisgICAgMjU1LCAyNDgsIDEwNCwgMSwgMjI4LCAxOCwgMjQ4LCAxMDQsIDEsIDIwNSwgMTY3LCAyNDgsIDEwNCwgMSwgMjA2LCAxMDksIAorICAgIDI0OCwgMTA0LCAxLCAyMTksIDEwOSwgMjQ4LCAxMDQsIDEsIDIzMCwgMTQwLCAyNDgsIDEwNCwgMSwgMjA3LCA5NSwgMjQ4LCAKKyAgICAxMDQsIDEsIDIxNywgMTk2LCAyNDgsIDEwNCwgMSwgMjM5LCAxNDEsIDI0OCwgMTA0LCAyMiwgMywgNjIsIDI0OCwgMTA0LCAKKyAgICAyMiwgMywgNzQsIDI0OCwgMTA0LCAyMiwgMywgMjMzLCAxMDIsIDI0OCwgMTA0LCAyMiwgMywgNzEsIDI0OCwgMTA0LCAyMiwgCisgICAgMywgMjA5LCAxNjIsIDI0OCwgMTA0LCAyMiwgMywgNzUsIDI0OCwgMTA0LCAyMiwgMywgMjUyLCAyMDUsIDI0OCwgMTA0LCAKKyAgICAyMiwgMywgNzYsIDI0OCwgMTA0LCAyMiwgMywgMjUxLCAxODQsIDI0OCwgMTA0LCAyMiwgMywgMjIyLCAxOTEsIDI0OCwgCisgICAgMTA0LCAxNDgsIDgzLCAyNDgsIDEwNCwgMjUxLCAxODUsIDgzLCAyNDgsIDEwNCwgMjA4LCAxODgsIDI0OCwgMTA0LCAyMjgsIAorICAgIDE2LCAyNDgsIDEwNCwgMTgsIDIwNSwgODUsIDI0OCwgMTA0LCAxOCwgMTAyLCAyNDgsIDEwNCwgMTgsIDEwNSwgMjQ4LCAKKyAgICAxMDQsIDE4LCAxNDIsIDI0OCwgMTA0LCAxOCwgMTM5LCAyNDgsIDEwNCwgMTgsIDE2OCwgMjQ4LCAxMDQsIDE4LCAxODQsIAorICAgIDI0OCwgMTA0LCAxOCwgMTk1LCAyNDgsIDEwNCwgMTgsIDE5MywgMjQ4LCAxMDQsIDE4LCAyMDAsIDI0OCwgMTA0LCAyMTcsIAorICAgIDc3LCA4MywgMjQ4LCAxMDQsIDI0NiwgMTAwLCAyNDgsIDEwNCwgNTAsIDI0NiwgMTAwLCAyNDgsIDEwNCwgMjE5LCAxOTYsIAorICAgIDgzLCAyMjcsIDI0NSwgMSwgNjIsIDIyNywgMjQ1LCAxLCA3NCwgMjI3LCAyNDUsIDEsIDcxLCAyMjcsIDI0NSwgMSwgNzUsIAorICAgIDIyNywgMjQ1LCAxLCA3NiwgMjI3LCAyNDUsIDEsIDE3MiwgMjI3LCAyNDUsIDEsIDIzMSwgMTY3LCAyMjcsIDI0NSwgMSwgCisgICAgMjQwLCAyNDQsIDIyNywgMjQ1LCAxLCAyNDAsIDk5LCAyMjcsIDI0NSwgMSwgMjQ5LCAxLCAyMjcsIDI0NSwgMSwgMjQ4LCAKKyAgICAxMTAsIDIyNywgMjQ1LCAxLCAyMzIsIDIwMCwgMjI3LCAyNDUsIDEsIDIzMiwgMTcwLCAyMjcsIDI0NSwgMSwgMjIzLCAxNDQsIAorICAgIDIyNywgMjQ1LCAxLCAyMTAsIDIwOCwgMjI3LCAyNDUsIDEsIDIxMCwgMTk2LCAyMjcsIDI0NSwgMSwgMjQ2LCA1NCwgMjI3LCAKKyAgICAyNDUsIDEsIDI0NiwgMzgsIDIyNywgMjQ1LCAxLCAyMjQsIDEwMywgMjI3LCAyNDUsIDEsIDIxMiwgMjE5LCAyMjcsIDI0NSwgCisgICAgMSwgMjEyLCA1NiwgMjI3LCAyNDUsIDEsIDI0NiwgMTQ1LCAyMjcsIDI0NSwgMSwgMjQ1LCAxOTIsIDIyNywgMjQ1LCAxLCAKKyAgICAxOTksIDIyNywgMjQ1LCAxLCAxNzksIDIyNywgMjQ1LCAxLCAyMjEsIDkzLCAyMjcsIDI0NSwgMSwgMjUwLCAxODMsIDIyNywgCisgICAgMjQ1LCAxLCAyNTAsIDAsIDIyNywgMjQ1LCAxLCAxODUsIDIyNywgMjQ1LCAxLCAyMTksIDExMywgMjI3LCAyNDUsIDEsIAorICAgIDIzMCwgMTQxLCAyMjcsIDI0NSwgMSwgMjA5LCA3MCwgMjI3LCAyNDUsIDEsIDIxNywgMTk5LCAyMjcsIDI0NSwgMSwgMTU1LCAKKyAgICAyMjcsIDI0NSwgMSwgMjE4LCA4OSwgMjI3LCAyNDUsIDMsIDIyMywgMTg0LCAyMjcsIDI0NSwgMjUzLCAyOSwgNTMsIDIyNywgCisgICAgMjQ1LCAyMTcsIDc3LCA4MywgMjI3LCAyNDUsIDI4LCAyMTUsIDEyMywgMTk2LCAzLCAyNDgsIDIxNywgMTk2LCAzLCAyNTIsIAorICAgIDczLCAxOTYsIDMsIDIwOCwgMTgzLCAxOTYsIDEsIDYyLCAxOTYsIDEsIDI1MywgMTY0LCAxOTYsIDEsIDc0LCAxOTYsIDEsIAorICAgIDIzMywgMTAyLCAxOTYsIDEsIDcxLCAxOTYsIDEsIDIwOSwgMTYyLCAxOTYsIDEsIDExNSwgMTM3LCAxOTYsIDEsIDExNSwgCisgICAgMjE4LCA5MCwgMTk2LCAxLCAxMTUsIDE0OSwgMTk2LCAxLCAxMTUsIDIyOSwgMTczLCAxOTYsIDEsIDc1LCAxOTYsIDEsIAorICAgIDI1MiwgMjA1LCAxOTYsIDEsIDc2LCAxOTYsIDEsIDI1MSwgMTg0LCAxOTYsIDEsIDE3MiwgMTk2LCAxLCAyMzEsIDE2NywgCisgICAgMTk2LCAxLCAyNDAsIDI0NCwgMTk2LCAxLCAyNDAsIDk5LCAxOTYsIDEsIDIyNSwgNzcsIDE5NiwgMSwgMjQ5LCAxLCAxOTYsIAorICAgIDEsIDI0OCwgMTEwLCAxOTYsIDEsIDIzMiwgMjAwLCAxOTYsIDEsIDIzMiwgMTcwLCAxOTYsIDEsIDIyMywgMTQ0LCAxOTYsIAorICAgIDEsIDIxMCwgMjA4LCAxOTYsIDEsIDIxMCwgMTk2LCAxOTYsIDEsIDI0NiwgNTQsIDE5NiwgMSwgMjQ2LCAzOCwgMTk2LCAxLCAKKyAgICAyMjQsIDEwMywgMTk2LCAxLCAyMTIsIDIxOSwgMTk2LCAxLCAyMTIsIDU2LCAxOTYsIDEsIDI0NiwgMTQ1LCAxOTYsIDEsIAorICAgIDI0NSwgMTkyLCAxOTYsIDEsIDE5OSwgMTk2LCAxLCAxNzksIDE5NiwgMSwgMjIxLCA5MywgMTk2LCAxLCAyNTAsIDE4MywgCisgICAgMTk2LCAxLCAyNTAsIDAsIDE5NiwgMSwgMTg1LCAxOTYsIDEsIDE5MCwgMTk2LCAxLCAyMTksIDExMywgMTk2LCAxLCAyMzAsIAorICAgIDE0MSwgMTk2LCAxLCAyMjksIDE3MiwgMTk2LCAxLCAyMDksIDcwLCAxOTYsIDEsIDIxNiwgMiwgMTk2LCAxLCAyMTQsIDk2LCAKKyAgICAxOTYsIDEsIDIxNywgMTk5LCAxOTYsIDEsIDE1NSwgMTk2LCAyMiwgMywgMjUzLCAxNjQsIDE5NiwgMjIsIDMsIDc0LCAxOTYsIAorICAgIDIyLCAzLCAyMzMsIDEwMiwgMTk2LCAyMiwgMywgNzEsIDE5NiwgMjIsIDMsIDIwOSwgMTYyLCAxOTYsIDIyLCAzLCAxMTUsIAorICAgIDEzNywgMTk2LCAyMiwgMywgMTE1LCAyMTgsIDkwLCAxOTYsIDIyLCAzLCAxMTUsIDE0OSwgMTk2LCAyMiwgMywgMTE1LCAKKyAgICAyMjksIDE3MywgMTk2LCAyMiwgMywgNzUsIDE5NiwgMjIsIDMsIDI1MiwgMjA1LCAxOTYsIDIyLCAzLCA3NiwgMTk2LCAyMiwgCisgICAgMywgMjUxLCAxODQsIDE5NiwgMywgMjA4LCAxODgsIDE5NiwgMywgMjUxLCAxNjcsIDE5NiwgMywgMjMyLCAxNTYsIDE5NiwgCisgICAgMywgMjA5LCAyMDQsIDE5NiwgMjIyLCAxNzMsIDE5NiwgMjQ2LCAxMDAsIDE5NiwgNTAsIDI0NiwgMTAwLCAxOTYsIDI1MywgCisgICAgMjksIDUzLCAxOTYsIDIxNiwgMzksIDE5NiwgMjEzLCAxMjAsIDgzLCAxOTYsIDE4LCAyMDUsIDg1LCAxOTYsIDE4LCAxMDIsIAorICAgIDE5NiwgMTgsIDEwNSwgMTk2LCAxOCwgMTQyLCAxOTYsIDE4LCAxMzksIDE5NiwgMTgsIDE2OCwgMTk2LCAxOCwgMTg0LCAKKyAgICAxOTYsIDE4LCAxOTUsIDE5NiwgMTgsIDE5MywgMTk2LCAxOCwgMjAwLCAxOTYsIDI0MywgNzQsIDEzMiwgMjUyLCAxOSwgMTgsIAorICAgIDEwMiwgMTMyLCAyNTIsIDE5LCAxOCwgMTA1LCAxMzIsIDI1MiwgMTksIDE4LCAxNDIsIDEzMiwgMjUyLCAxOSwgMTgsIDEzOSwgCisgICAgMTMyLCAyNTIsIDE5LCAxOCwgMTY4LCAxMzIsIDI1MiwgMTksIDE4LCAxODQsIDEzMiwgMjUyLCAxOSwgMTgsIDE5NSwgMTMyLCAKKyAgICAyNTIsIDE5LCAxOCwgMTkzLCAxMzIsIDI1MiwgMTksIDE4LCAyMDAsIDEzMiwgMjUyLCAxOSwgNDMsIDIxMiwgOTgsIDEzMiwgCisgICAgMjUyLCAxOSwgNDMsIDIxMCwgMTIzLCAxMzIsIDI1MiwgMTksIDQzLCAyMTIsIDMsIDEzMiwgMjUyLCAxOSwgNDMsIDI0MSwgCisgICAgMTMwLCAxMzIsIDI1MiwgMTksIDQzLCAyNDEsIDI0MywgMTMyLCAyNTIsIDE5LCA0MywgMjE0LCAyNTIsIDEzMiwgMjUyLCAKKyAgICAxOSwgNDMsIDIxNiwgMTcsIDEzMiwgMjUyLCAxOSwgNDMsIDI0MywgNzksIDEzMiwgMjUyLCAxOSwgNDMsIDIyNCwgMTkwLCAKKyAgICAxMzIsIDI1MiwgMTksIDQzLCAxMTksIDIzOCwgMjksIDEzMiwgMjUyLCAxOSwgNDMsIDExOSwgMjExLCAyNDIsIDIzMSwgCisgICAgMTM3LCAxLCA2MiwgMjMxLCAxMzcsIDEsIDI1MywgMTY0LCAyMzEsIDEzNywgMSwgNzQsIDIzMSwgMTM3LCAxLCA3MSwgMjMxLCAKKyAgICAxMzcsIDEsIDc1LCAyMzEsIDEzNywgMSwgMjUyLCAyMDUsIDIzMSwgMTM3LCAxLCA3NiwgMjMxLCAxMzcsIDEsIDI1MSwgCisgICAgMTg0LCAyMzEsIDEzNywgMSwgMTcyLCAyMzEsIDEzNywgMSwgMjMxLCAxNjcsIDIzMSwgMTM3LCAxLCAyNDAsIDI0NCwgMjMxLCAKKyAgICAxMzcsIDEsIDI0MCwgMTM1LCAyMzEsIDEzNywgMSwgMjQwLCA5OSwgMjMxLCAxMzcsIDEsIDIyNSwgNzcsIDIzMSwgMTM3LCAKKyAgICAxLCAyNDksIDEsIDIzMSwgMTM3LCAxLCAyNDgsIDExMCwgMjMxLCAxMzcsIDEsIDIzMiwgMjAwLCAyMzEsIDEzNywgMSwgCisgICAgMjMyLCAxNTAsIDIzMSwgMTM3LCAxLCAyMjMsIDE0NCwgMjMxLCAxMzcsIDEsIDIxMCwgMjA4LCAyMzEsIDEzNywgMSwgMjEwLCAKKyAgICAxOTYsIDIzMSwgMTM3LCAxLCAyNDYsIDU0LCAyMzEsIDEzNywgMSwgMjQ2LCAzOCwgMjMxLCAxMzcsIDEsIDIyNCwgMTAzLCAKKyAgICAyMzEsIDEzNywgMSwgMjEyLCAyMTksIDIzMSwgMTM3LCAxLCAyMTIsIDU2LCAyMzEsIDEzNywgMSwgMjQ2LCAxNDUsIDIzMSwgCisgICAgMTM3LCAxLCAyNDYsIDQ0LCAyMzEsIDEzNywgMSwgMjQ1LCAxOTIsIDIzMSwgMTM3LCAxLCAxOTksIDIzMSwgMTM3LCAxLCAKKyAgICAxNzksIDIzMSwgMTM3LCAxLCAyMjEsIDkzLCAyMzEsIDEzNywgMSwgMjUwLCAxODMsIDIzMSwgMTM3LCAxLCAyNTAsIDk3LCAKKyAgICAyMzEsIDEzNywgMSwgMjUwLCAwLCAyMzEsIDEzNywgMSwgMTg1LCAyMzEsIDEzNywgMSwgMTkwLCAyMzEsIDEzNywgMSwgCisgICAgMjE5LCAxMTMsIDIzMSwgMTM3LCAxLCAyMzAsIDE0MSwgMjMxLCAxMzcsIDEsIDIwOSwgNzAsIDIzMSwgMTM3LCAxLCAyMTcsIAorICAgIDE5OSwgMjMxLCAxMzcsIDEsIDE1NSwgMjMxLCAxMzcsIDEsIDIyOSwgMTcyLCAyMzEsIDEzNywgMjIsIDMsIDI1MywgMTY0LCAKKyAgICAyMzEsIDEzNywgMjIsIDMsIDc0LCAyMzEsIDEzNywgMjIsIDMsIDIzMywgMTAyLCAyMzEsIDEzNywgMjIsIDMsIDcxLCAyMzEsIAorICAgIDEzNywgMjIsIDMsIDc1LCAyMzEsIDEzNywgMjIsIDMsIDI1MiwgMjA1LCAyMzEsIDEzNywgMjIsIDMsIDc2LCAyMzEsIDEzNywgCisgICAgMjIsIDMsIDI1MSwgMTg0LCAyMzEsIDEzNywgMywgMjUyLCA3MywgMjMxLCAxMzcsIDMsIDIwOCwgMTg4LCAyMzEsIDEzNywgCisgICAgMywgMjIzLCAxODQsIDIzMSwgMTM3LCAzLCAyMTUsIDI0OSwgMjMxLCAxMzcsIDI0NiwgMTAwLCAyMzEsIDEzNywgNTAsIAorICAgIDI0NiwgMTAwLCAyMzEsIDEzNywgMjA2LCAyMzIsIDIxNiwgMzksIDIzMSwgMTM3LCAyMTcsIDc3LCA4MywgMjMxLCAxMzcsIAorICAgIDUwLCAyMTcsIDc3LCA4MywgMjMxLCAxMzcsIDI1MywgMjksIDUzLCAyMzEsIDEyOSwgMSwgNjIsIDIzMSwgMTI5LCAxLCAKKyAgICAyNTMsIDE2NCwgMjMxLCAxMjksIDEsIDc0LCAyMzEsIDEyOSwgMSwgMjMzLCAxMDIsIDIzMSwgMTI5LCAxLCA3MSwgMjMxLCAKKyAgICAxMjksIDEsIDIwOSwgMTYyLCAyMzEsIDEyOSwgMSwgNzUsIDIzMSwgMTI5LCAxLCAyNTIsIDIwNSwgMjMxLCAxMjksIDEsIAorICAgIDc2LCAyMzEsIDEyOSwgMSwgMjUxLCAxODQsIDIzMSwgMTI5LCAxLCAxNzIsIDIzMSwgMTI5LCAxLCAyMzEsIDE2NywgMjMxLCAKKyAgICAxMjksIDEsIDI0MCwgMjQ0LCAyMzEsIDEyOSwgMSwgMjQwLCAxMzUsIDIzMSwgMTI5LCAxLCAyNDAsIDk5LCAyMzEsIDEyOSwgCisgICAgMSwgMjI1LCA3NywgMjMxLCAxMjksIDEsIDI0OSwgMSwgMjMxLCAxMjksIDEsIDI0OCwgMTEwLCAyMzEsIDEyOSwgMSwgMjMyLCAKKyAgICAyMDAsIDIzMSwgMTI5LCAxLCAyMzIsIDE1MCwgMjMxLCAxMjksIDEsIDIzMiwgMTcwLCAyMzEsIDEyOSwgMSwgMjIzLCAxNDQsIAorICAgIDIzMSwgMTI5LCAxLCAyMTAsIDIwOCwgMjMxLCAxMjksIDEsIDIxMCwgMTk2LCAyMzEsIDEyOSwgMSwgMjQ2LCA1NCwgMjMxLCAKKyAgICAxMjksIDEsIDI0NiwgNDQsIDIzMSwgMTI5LCAxLCAyMTgsIDg5LCAyMzEsIDEyOSwgMSwgMjQ2LCAzOCwgMjMxLCAxMjksIDEsIAorICAgIDIyNCwgMTAzLCAyMzEsIDEyOSwgMSwgMjEyLCAyMTksIDIzMSwgMTI5LCAxLCAyMTIsIDU2LCAyMzEsIDEyOSwgMSwgMjQ2LCAKKyAgICAxNDUsIDIzMSwgMTI5LCAxLCAyNDUsIDE5MiwgMjMxLCAxMjksIDEsIDE5OSwgMjMxLCAxMjksIDEsIDE3OSwgMjMxLCAxMjksIAorICAgIDEsIDIyMSwgOTMsIDIzMSwgMTI5LCAxLCAyNTAsIDE4MywgMjMxLCAxMjksIDEsIDI1MCwgOTcsIDIzMSwgMTI5LCAxLCAKKyAgICAyNTAsIDAsIDIzMSwgMTI5LCAxLCAxODUsIDIzMSwgMTI5LCAxLCAxOTAsIDIzMSwgMTI5LCAxLCAyMTksIDExMywgMjMxLCAKKyAgICAxMjksIDEsIDIzMCwgMTQxLCAyMzEsIDEyOSwgMSwgMjA5LCA3MCwgMjMxLCAxMjksIDEsIDIxNiwgMiwgMjMxLCAxMjksIDEsIAorICAgIDIxNywgMTk5LCAyMzEsIDEyOSwgMSwgMTU1LCAyMzEsIDEyOSwgMywgMjUyLCA3MywgMjMxLCAxMjksIDIyLCAzLCAyNTMsIAorICAgIDE2NCwgMjMxLCAxMjksIDIyLCAzLCA3NCwgMjMxLCAxMjksIDIyLCAzLCAyMzMsIDEwMiwgMjMxLCAxMjksIDIyLCAzLCA3MSwgCisgICAgMjMxLCAxMjksIDIyLCAzLCAyMDksIDE2MiwgMjMxLCAxMjksIDIyLCAzLCA3NSwgMjMxLCAxMjksIDIyLCAzLCAyNTIsIAorICAgIDIwNSwgMjMxLCAxMjksIDIyLCAzLCA3NiwgMjMxLCAxMjksIDIyLCAzLCAyNTEsIDE4NCwgMjMxLCAxMjksIDMsIDIyMywgCisgICAgMTg0LCAyMzEsIDEyOSwgMywgMjA4LCAxODgsIDIzMSwgMTI5LCAxOCwgMjA1LCA4NSwgMjMxLCAxMjksIDE4LCAxMDIsIAorICAgIDIzMSwgMTI5LCAxOCwgMTA1LCAyMzEsIDEyOSwgMTgsIDE0MiwgMjMxLCAxMjksIDE4LCAxMzksIDIzMSwgMTI5LCAxOCwgCisgICAgMTY4LCAyMzEsIDEyOSwgMTgsIDE4NCwgMjMxLCAxMjksIDE4LCAxOTUsIDIzMSwgMTI5LCAxOCwgMTkzLCAyMzEsIDEyOSwgCisgICAgMTgsIDIwMCwgMjA0LCAyMDQsIDMsIDI0OCwgMjE3LCAyMDQsIDIwNCwgMywgMjUyLCA3MywgMjA0LCAyMDQsIDMsIDIwOCwgCisgICAgMTgzLCAyMDQsIDIwNCwgMSwgNjIsIDIwNCwgMjA0LCAxLCAyNTMsIDE2NCwgMjA0LCAyMDQsIDEsIDc0LCAyMDQsIDIwNCwgCisgICAgMSwgMjMzLCAxMDIsIDIwNCwgMjA0LCAxLCA3MSwgMjA0LCAyMDQsIDEsIDIwOSwgMTYyLCAyMDQsIDIwNCwgMSwgMTE1LCAKKyAgICAxMzcsIDIwNCwgMjA0LCAxLCAxMTUsIDE0OSwgMjA0LCAyMDQsIDEsIDI0MywgMTA0LCAyMDQsIDIwNCwgMSwgMjUyLCAyMDUsIAorICAgIDIwNCwgMjA0LCAxLCAyMjIsIDE1MiwgMjA0LCAyMDQsIDEsIDI1MSwgMTg0LCAyMDQsIDIwNCwgMSwgMTcyLCAyMDQsIDIwNCwgCisgICAgMSwgMjMxLCAxNjcsIDIwNCwgMjA0LCAxLCAyNDAsIDI0NCwgMjA0LCAyMDQsIDEsIDI0MCwgOTksIDIwNCwgMjA0LCAxLCAKKyAgICAyMjUsIDc3LCAyMDQsIDIwNCwgMSwgMjQ5LCAxLCAyMDQsIDIwNCwgMSwgMjQ4LCAxMTAsIDIwNCwgMjA0LCAxLCAyMzIsIAorICAgIDIwMCwgMjA0LCAyMDQsIDEsIDIzMiwgMTcwLCAyMDQsIDIwNCwgMSwgMjIzLCAxNDQsIDIwNCwgMjA0LCAxLCAyMTAsIDIwOCwgCisgICAgMjA0LCAyMDQsIDEsIDIxMCwgMTk2LCAyMDQsIDIwNCwgMSwgMjQ2LCA1NCwgMjA0LCAyMDQsIDEsIDI0NiwgMzgsIDIwNCwgCisgICAgMjA0LCAxLCAyMjQsIDEwMywgMjA0LCAyMDQsIDEsIDIxMiwgMjE5LCAyMDQsIDIwNCwgMSwgMjEyLCA1NiwgMjA0LCAyMDQsIAorICAgIDEsIDI0NiwgMTQ1LCAyMDQsIDIwNCwgMSwgMjQ1LCAxOTIsIDIwNCwgMjA0LCAxLCAxOTksIDIwNCwgMjA0LCAxLCAxNzksIAorICAgIDIwNCwgMjA0LCAxLCAyMjEsIDkzLCAyMDQsIDIwNCwgMSwgMjUwLCAxODMsIDIwNCwgMjA0LCAxLCAyNTAsIDAsIDIwNCwgCisgICAgMjA0LCAxLCAxODUsIDIwNCwgMjA0LCAxLCAxOTAsIDIwNCwgMjA0LCAxLCAyMTksIDExMywgMjA0LCAyMDQsIDEsIDIzMCwgCisgICAgMTQxLCAyMDQsIDIwNCwgMSwgMjI5LCAxNzIsIDIwNCwgMjA0LCAxLCAyMDksIDcwLCAyMDQsIDIwNCwgMSwgMjE2LCAyLCAKKyAgICAyMDQsIDIwNCwgMSwgMjE0LCA5NiwgMjA0LCAyMDQsIDEsIDIxNywgMTk5LCAyMDQsIDIwNCwgMSwgMTU1LCAyMDQsIDIwNCwgCisgICAgMywgMjIzLCAxODQsIDIwNCwgMjA0LCAzLCAyNTEsIDE2NywgMjA0LCAyMDQsIDIyLCAzLCAyNTMsIDE2NCwgMjA0LCAyMDQsIAorICAgIDIyLCAzLCA3NCwgMjA0LCAyMDQsIDIyLCAzLCAyMzMsIDEwMiwgMjA0LCAyMDQsIDIyLCAzLCA3MSwgMjA0LCAyMDQsIDIyLCAKKyAgICAzLCAyMDksIDE2MiwgMjA0LCAyMDQsIDIyLCAzLCAxMTUsIDEzNywgMjA0LCAyMDQsIDIyLCAzLCAxMTUsIDIxOCwgOTAsIAorICAgIDIwNCwgMjA0LCAyMiwgMywgMjQzLCAxMDQsIDIwNCwgMjA0LCAyMiwgMywgMjUyLCAyMDUsIDIwNCwgMjA0LCAyMiwgMywgCisgICAgMjIyLCAxNTIsIDIwNCwgMjA0LCAyMiwgMywgMjUxLCAxODQsIDIwNCwgMjA0LCAzLCAyMDgsIDE4OCwgMjA0LCAyMDQsIAorICAgIDI1MSwgMTg1LCAyMzAsIDIwLCA4MywgMjA0LCAyMDQsIDMsIDIyMCwgMjE2LCAyMDQsIDIwNCwgMSwgMjA5LCAzNiwgMjUyLCAKKyAgICA3MywgMjA0LCAyMDQsIDEsIDIwOSwgMzYsIDUwLCAyNTIsIDczLCAyMDQsIDIwNCwgMSwgMTE1LCAyMTgsIDkwLCAyMDQsIAorICAgIDIwNCwgMSwgMTE1LCAyMjksIDE3MywgMjA0LCAyMDQsIDIyLCAzLCAxMTUsIDE0OSwgMjA0LCAyMDQsIDIyLCAzLCAxMTUsIAorICAgIDIyOSwgMTczLCAzNiwgMjA0LCAyMDQsIDE4LCAyMDUsIDg1LCAzNiwgMjA0LCAyMDQsIDE4LCAxMDIsIDM2LCAyMDQsIDIwNCwgCisgICAgMTgsIDEwNSwgMzYsIDIwNCwgMjA0LCAxOCwgMTQyLCAzNiwgMjA0LCAyMDQsIDE4LCAxMzksIDM2LCAyMDQsIDIwNCwgMTgsIAorICAgIDE2OCwgMzYsIDIwNCwgMjA0LCAxOCwgMTg0LCAzNiwgMjA0LCAyMDQsIDEsIDYyLCAzNiwgMjA0LCAyMDQsIDEsIDE3MiwgCisgICAgMzYsIDIwNCwgMjA0LCAxLCAxOTksIDM2LCAyMDQsIDIwNCwgMSwgMjA4LCAyMTQsIDM2LCAyMDQsIDIwNCwgMSwgMTc5LCAKKyAgICAyMTEsIDE2MCwgMjUyLCAxMDIsIDIxMSwgMTYwLCAxLCA2MiwgMjExLCAxNjAsIDEsIDI1MywgMTY0LCAyMTEsIDE2MCwgMSwgCisgICAgNzQsIDIxMSwgMTYwLCAxLCAyMzMsIDEwMiwgMjExLCAxNjAsIDEsIDcxLCAyMTEsIDE2MCwgMSwgMjA5LCAxNjIsIDIxMSwgCisgICAgMTYwLCAxLCAxMTUsIDEzNywgMjExLCAxNjAsIDEsIDExNSwgMjE4LCA5MCwgMjExLCAxNjAsIDEsIDExNSwgMTQ5LCAyMTEsIAorICAgIDE2MCwgMSwgMTE1LCAyMjksIDE3MywgMjExLCAxNjAsIDEsIDc1LCAyMTEsIDE2MCwgMSwgMjUyLCAyMDUsIDIxMSwgMTYwLCAKKyAgICAxLCA3NiwgMjExLCAxNjAsIDEsIDI1MSwgMTg0LCAyMTEsIDE2MCwgMSwgMTcyLCAyMTEsIDE2MCwgMSwgMjMxLCAxNjcsIAorICAgIDIxMSwgMTYwLCAxLCAyNDAsIDI0NCwgMjExLCAxNjAsIDEsIDI0MCwgOTksIDIxMSwgMTYwLCAxLCAyMjUsIDc3LCAyMTEsIAorICAgIDE2MCwgMSwgMjQ5LCAxLCAyMTEsIDE2MCwgMSwgMjQ4LCAxMTAsIDIxMSwgMTYwLCAxLCAyMzIsIDIwMCwgMjExLCAxNjAsIAorICAgIDEsIDIzMiwgMTcwLCAyMTEsIDE2MCwgMSwgMjIzLCAxNDQsIDIxMSwgMTYwLCAxLCAyMTAsIDIwOCwgMjExLCAxNjAsIDEsIAorICAgIDIxMCwgMTk2LCAyMTEsIDE2MCwgMSwgMjQ2LCA1NCwgMjExLCAxNjAsIDEsIDI0NiwgMzgsIDIxMSwgMTYwLCAxLCAyMjQsIAorICAgIDEwMywgMjExLCAxNjAsIDEsIDIxMiwgMjE5LCAyMTEsIDE2MCwgMSwgMjEyLCA1NiwgMjExLCAxNjAsIDEsIDI0NiwgMTQ1LCAKKyAgICAyMTEsIDE2MCwgMSwgMjQ1LCAxOTIsIDIxMSwgMTYwLCAxLCAxOTksIDIxMSwgMTYwLCAxLCAxNzksIDIxMSwgMTYwLCAxLCAKKyAgICAyMjEsIDkzLCAyMTEsIDE2MCwgMSwgMjUwLCAxODMsIDIxMSwgMTYwLCAxLCAyNTAsIDAsIDIxMSwgMTYwLCAxLCAxODUsIAorICAgIDIxMSwgMTYwLCAxLCAxOTAsIDIxMSwgMTYwLCAxLCAyMTksIDExMywgMjExLCAxNjAsIDEsIDIzMCwgMTQxLCAyMTEsIDE2MCwgCisgICAgMSwgMjA5LCA3MCwgMjExLCAxNjAsIDEsIDIxNiwgMiwgMjExLCAxNjAsIDEsIDIxNCwgOTYsIDIxMSwgMTYwLCAxLCAyMTcsIAorICAgIDE5OSwgMjExLCAxNjAsIDEsIDE1NSwgMjExLCAxNjAsIDIyLCAzLCAyNTMsIDE2NCwgMjExLCAxNjAsIDIyLCAzLCA3NCwgCisgICAgMjExLCAxNjAsIDIyLCAzLCAyMzMsIDEwMiwgMjExLCAxNjAsIDIyLCAzLCA3MSwgMjExLCAxNjAsIDIyLCAzLCAyMDksIAorICAgIDE2MiwgMjExLCAxNjAsIDIyLCAzLCAxMTUsIDEzNywgMjExLCAxNjAsIDIyLCAzLCAxMTUsIDIxOCwgOTAsIDIxMSwgMTYwLCAKKyAgICAyMiwgMywgMTE1LCAxNDksIDIxMSwgMTYwLCAyMiwgMywgMTE1LCAyMjksIDE3MywgMjExLCAxNjAsIDIyLCAzLCA3NSwgCisgICAgMjExLCAxNjAsIDIyLCAzLCAyMTUsIDE0NCwgNzUsIDIxMSwgMTYwLCAyMiwgMywgMjUyLCAyMDUsIDIxMSwgMTYwLCAyMiwgCisgICAgMywgNzYsIDIxMSwgMTYwLCAyMiwgMywgMjE1LCAxNDQsIDc2LCAyMTEsIDE2MCwgMjIsIDMsIDI1MSwgMTg0LCAyMTEsIAorICAgIDE2MCwgMywgMjQ4LCAyMTcsIDIxMSwgMTYwLCAzLCAyNTIsIDczLCAyMTEsIDE2MCwgMywgMjA4LCAxODMsIDIxMSwgMTYwLCAKKyAgICAzLCAyMDgsIDE4OCwgMjExLCAxNjAsIDMsIDIyMywgMTg0LCAyMTEsIDE2MCwgMywgMjUxLCAxNjcsIDIxMSwgMTYwLCAyMzksIAorICAgIDE3NSwgMjExLCAxNjAsIDI1MywgMjksIDUzLCAyMTEsIDE2MCwgMjIyLCAxNzMsIDIxMSwgMTYwLCAxOCwgMjA1LCA4NSwgCisgICAgMjExLCAxNjAsIDE4LCAxMDIsIDIxMSwgMTYwLCAxOCwgMTA1LCAyMTEsIDE2MCwgMTgsIDE0MiwgMjExLCAxNjAsIDE4LCAKKyAgICAxMzksIDIxMSwgMTYwLCAxOCwgMTY4LCAyMTEsIDE2MCwgMTgsIDE4NCwgMjExLCAxNjAsIDE4LCAxOTUsIDIxMSwgMTYwLCAKKyAgICAxOCwgMTkzLCAyMTEsIDE2MCwgMTgsIDIwMCwgMjE1LCA3NSwgMSwgNjIsIDIxNSwgNzUsIDEsIDI1MywgMTY0LCAyMTUsIAorICAgIDc1LCAxLCA3NCwgMjE1LCA3NSwgMSwgMjMzLCAxMDIsIDIxNSwgNzUsIDEsIDcxLCAyMTUsIDc1LCAxLCAyMDksIDE2MiwgCisgICAgMjE1LCA3NSwgMSwgMTE1LCAxMzcsIDIxNSwgNzUsIDEsIDExNSwgMjE4LCA5MCwgMjE1LCA3NSwgMSwgMTE1LCAxNDksIAorICAgIDIxNSwgNzUsIDEsIDExNSwgMjI5LCAxNzMsIDIxNSwgNzUsIDEsIDc1LCAyMTUsIDc1LCAxLCAyNTIsIDIwNSwgMjE1LCA3NSwgCisgICAgMSwgNzYsIDIxNSwgNzUsIDEsIDI1MSwgMTg0LCAyMTUsIDc1LCAxLCAxNzIsIDIxNSwgNzUsIDEsIDIzMSwgMTY3LCAyMTUsIAorICAgIDc1LCAxLCAyNDAsIDI0NCwgMjE1LCA3NSwgMSwgMjQwLCA5OSwgMjE1LCA3NSwgMSwgMjI1LCA3NywgMjE1LCA3NSwgMSwgCisgICAgMjQ5LCAxLCAyMTUsIDc1LCAxLCAyNDgsIDExMCwgMjE1LCA3NSwgMSwgMjMyLCAyMDAsIDIxNSwgNzUsIDEsIDIzMiwgMTcwLCAKKyAgICAyMTUsIDc1LCAxLCAyMjMsIDE0NCwgMjE1LCA3NSwgMSwgMjEwLCAyMDgsIDIxNSwgNzUsIDEsIDIxMCwgMTk2LCAyMTUsIAorICAgIDc1LCAxLCAyNDYsIDU0LCAyMTUsIDc1LCAxLCAyNDYsIDM4LCAyMTUsIDc1LCAxLCAyMjQsIDEwMywgMjE1LCA3NSwgMSwgCisgICAgMjEyLCAyMTksIDIxNSwgNzUsIDEsIDIxMiwgNTYsIDIxNSwgNzUsIDEsIDI0NiwgMTQ1LCAyMTUsIDc1LCAxLCAyNDUsIAorICAgIDE5MiwgMjE1LCA3NSwgMSwgMTk5LCAyMTUsIDc1LCAxLCAxNzksIDIxNSwgNzUsIDEsIDIyMSwgOTMsIDIxNSwgNzUsIDEsIAorICAgIDI1MCwgMTgzLCAyMTUsIDc1LCAxLCAyNTAsIDAsIDIxNSwgNzUsIDEsIDE4NSwgMjE1LCA3NSwgMSwgMTkwLCAyMTUsIDc1LCAKKyAgICAxLCAyMTksIDExMywgMjE1LCA3NSwgMSwgMjMwLCAxNDEsIDIxNSwgNzUsIDEsIDIwOSwgNzAsIDIxNSwgNzUsIDEsIDIxNiwgCisgICAgMiwgMjE1LCA3NSwgMSwgMjE0LCA5NiwgMjE1LCA3NSwgMSwgMjE3LCAxOTksIDIxNSwgNzUsIDEsIDE1NSwgMjE1LCA3NSwgCisgICAgMjIsIDMsIDI1MywgMTY0LCAyMTUsIDc1LCAyMiwgMywgNzQsIDIxNSwgNzUsIDIyLCAzLCAyMzMsIDEwMiwgMjE1LCA3NSwgCisgICAgMjIsIDMsIDcxLCAyMTUsIDc1LCAyMiwgMywgMjA5LCAxNjIsIDIxNSwgNzUsIDIyLCAzLCAxMTUsIDEzNywgMjE1LCA3NSwgCisgICAgMjIsIDMsIDExNSwgMjE4LCA5MCwgMjE1LCA3NSwgMjIsIDMsIDc1LCAyMTUsIDc1LCAyMiwgMywgMjUyLCAyMDUsIDIxNSwgCisgICAgNzUsIDIyLCAzLCA3NiwgMjE1LCA3NSwgMjIsIDMsIDI1MSwgMTg0LCAyMTUsIDc1LCAzLCAyNDgsIDIxNywgMjE1LCA3NSwgCisgICAgMywgMjUyLCA3MywgMjE1LCA3NSwgMywgMjA4LCAxODMsIDIxNSwgNzUsIDMsIDIwOCwgMTg4LCAyMTUsIDc1LCAzLCAyMjMsIAorICAgIDE4NCwgMjE1LCA3NSwgMywgMjE1LCA3NCwgMjE1LCA3NSwgMjQ2LCAxMDAsIDIxNSwgNzUsIDUwLCAyNDYsIDEwMCwgMjE1LCAKKyAgICA3NSwgMjE2LCA0MCwgMjQ1LCAyMywgMjE1LCA3NSwgMjE2LCA0MCwgMTM0LCAyMTUsIDc1LCAyMTgsIDI0OSwgMjI3LCAxOTEsIAorICAgIDIxNSwgNzUsIDIxOCwgMjQ5LCAyMjcsIDE5MCwgMjE1LCA3NSwgMjE4LCAyNDksIDIyNywgMTg5LCAyMTUsIDc1LCAyNDMsIAorICAgIDM0LCA3MywgMjEyLCA2MSwgODMsIDIyNiwgMTczLCAxLCA2MiwgMjI2LCAxNzMsIDEsIDI1MywgMTY0LCAyMjYsIDE3MywgMSwgCisgICAgNzQsIDIyNiwgMTczLCAxLCAyMzMsIDEwMiwgMjI2LCAxNzMsIDEsIDcxLCAyMjYsIDE3MywgMSwgMjA5LCAxNjIsIDIyNiwgCisgICAgMTczLCAxLCAxMTUsIDEzNywgMjI2LCAxNzMsIDEsIDExNSwgMjE4LCA5MCwgMjI2LCAxNzMsIDEsIDExNSwgMTQ5LCAyMjYsIAorICAgIDE3MywgMSwgMTE1LCAyMjksIDE3MywgMjI2LCAxNzMsIDEsIDc1LCAyMjYsIDE3MywgMSwgMjUyLCAyMDUsIDIyNiwgMTczLCAKKyAgICAxLCA3NiwgMjI2LCAxNzMsIDEsIDI1MSwgMTg0LCAyMjYsIDE3MywgMSwgMTcyLCAyMjYsIDE3MywgMSwgMjMxLCAxNjcsIAorICAgIDIyNiwgMTczLCAxLCAyNDAsIDI0NCwgMjI2LCAxNzMsIDEsIDI0MCwgOTksIDIyNiwgMTczLCAxLCAyMjUsIDc3LCAyMjYsIAorICAgIDE3MywgMSwgMjQ5LCAxLCAyMjYsIDE3MywgMSwgMjQ4LCAxMTAsIDIyNiwgMTczLCAxLCAyMzIsIDIwMCwgMjI2LCAxNzMsIAorICAgIDEsIDIzMiwgMTcwLCAyMjYsIDE3MywgMSwgMjIzLCAxNDQsIDIyNiwgMTczLCAxLCAyMTAsIDIwOCwgMjI2LCAxNzMsIDEsIAorICAgIDIxMCwgMTk2LCAyMjYsIDE3MywgMSwgMjQ2LCA1NCwgMjI2LCAxNzMsIDEsIDI0NiwgMzgsIDIyNiwgMTczLCAxLCAyMjQsIAorICAgIDEwMywgMjI2LCAxNzMsIDEsIDIxMiwgMjE5LCAyMjYsIDE3MywgMSwgMjEyLCA1NiwgMjI2LCAxNzMsIDEsIDI0NiwgMTQ1LCAKKyAgICAyMjYsIDE3MywgMSwgMjQ1LCAxOTIsIDIyNiwgMTczLCAxLCAxOTksIDIyNiwgMTczLCAxLCAxNzksIDIyNiwgMTczLCAxLCAKKyAgICAyMjEsIDkzLCAyMjYsIDE3MywgMSwgMjUwLCAxODMsIDIyNiwgMTczLCAxLCAyNTAsIDAsIDIyNiwgMTczLCAxLCAxODUsIAorICAgIDIyNiwgMTczLCAxLCAxOTAsIDIyNiwgMTczLCAxLCAyMTksIDExMywgMjI2LCAxNzMsIDEsIDIzMCwgMTQxLCAyMjYsIDE3MywgCisgICAgMSwgMjA5LCA3MCwgMjI2LCAxNzMsIDEsIDIxNiwgMiwgMjI2LCAxNzMsIDEsIDIxNCwgOTYsIDIyNiwgMTczLCAxLCAyMTcsIAorICAgIDE5OSwgMjI2LCAxNzMsIDEsIDE1NSwgMjI2LCAxNzMsIDEsIDIyOSwgMTcyLCAyMjYsIDE3MywgMjIsIDMsIDI1MywgMTY0LCAKKyAgICAyMjYsIDE3MywgMjIsIDMsIDc0LCAyMjYsIDE3MywgMjIsIDMsIDIzMywgMTAyLCAyMjYsIDE3MywgMjIsIDMsIDcxLCAyMjYsIAorICAgIDE3MywgMjIsIDMsIDIwOSwgMTYyLCAyMjYsIDE3MywgMjIsIDMsIDExNSwgMTM3LCAyMjYsIDE3MywgMjIsIDMsIDExNSwgCisgICAgMjE4LCA5MCwgMjI2LCAxNzMsIDIyLCAzLCAxMTUsIDE0OSwgMjI2LCAxNzMsIDIyLCAzLCAxMTUsIDIyOSwgMTczLCAyMjYsIAorICAgIDE3MywgMjIsIDMsIDc1LCAyMjYsIDE3MywgMjIsIDMsIDI1MiwgMjA1LCAyMjYsIDE3MywgMjIsIDMsIDc2LCAyMjYsIDE3MywgCisgICAgMjIsIDMsIDI1MSwgMTg0LCAyMjYsIDE3MywgMywgMjUyLCA3MywgMjI2LCAxNzMsIDMsIDIwOCwgMTgzLCAyMjYsIDE3MywgCisgICAgMywgMjA4LCAxODgsIDIyNiwgMTczLCAzLCAyNTIsIDE2LCAyMjYsIDE3MywgMjQ2LCAxMDAsIDIyNiwgMTczLCA1MCwgMjQ2LCAKKyAgICAxMDAsIDIyNiwgMTczLCAyNTMsIDI5LCA1MywgMjI2LCAxNzMsIDMsIDIzOCwgMTgsIDIyNiwgMTczLCAxOCwgMjA1LCA4NSwgCisgICAgMjI2LCAxNzMsIDE4LCAxMDIsIDIyNiwgMTczLCAxOCwgMTA1LCAyMjYsIDE3MywgMTgsIDE0MiwgMjI2LCAxNzMsIDE4LCAKKyAgICAxMzksIDIyNiwgMTczLCAxOCwgMTY4LCAyMjYsIDE3MywgMTgsIDE4NCwgMjI2LCAxNzMsIDE4LCAxOTUsIDIyNiwgMTczLCAKKyAgICAxOCwgMTkzLCAyMjYsIDE3MywgMTgsIDIwMCwgMjEyLCAxODMsIDEsIDYyLCAyMTIsIDE4MywgMSwgMjUzLCAxNjQsIDIxMiwgCisgICAgMTgzLCAxLCA3NCwgMjEyLCAxODMsIDEsIDIzMywgMTAyLCAyMTIsIDE4MywgMSwgNzEsIDIxMiwgMTgzLCAxLCAyMDksIAorICAgIDE2MiwgMjEyLCAxODMsIDEsIDc1LCAyMTIsIDE4MywgMSwgMjUyLCAyMDUsIDIxMiwgMTgzLCAxLCA3NiwgMjEyLCAxODMsIAorICAgIDEsIDI1MSwgMTg0LCAyMTIsIDE4MywgMSwgMTcyLCAyMTIsIDE4MywgMSwgMjMxLCAxNjcsIDIxMiwgMTgzLCAxLCAyNDAsIAorICAgIDI0NCwgMjEyLCAxODMsIDEsIDI0MCwgOTksIDIxMiwgMTgzLCAxLCAyMjUsIDc3LCAyMTIsIDE4MywgMSwgMjQ5LCAxLCAKKyAgICAyMTIsIDE4MywgMSwgMjQ4LCAxMTAsIDIxMiwgMTgzLCAxLCAyMzIsIDIwMCwgMjEyLCAxODMsIDEsIDIzMiwgMTcwLCAyMTIsIAorICAgIDE4MywgMSwgMjIzLCAxNDQsIDIxMiwgMTgzLCAxLCAyMTAsIDIwOCwgMjEyLCAxODMsIDEsIDIxMCwgMTk2LCAyMTIsIDE4MywgCisgICAgMSwgMjQ2LCA1NCwgMjEyLCAxODMsIDEsIDI0NiwgMzgsIDIxMiwgMTgzLCAxLCAyMjQsIDEwMywgMjEyLCAxODMsIDEsIAorICAgIDIxMiwgMjE5LCAyMTIsIDE4MywgMSwgMjEyLCA1NiwgMjEyLCAxODMsIDEsIDI0NiwgMTQ1LCAyMTIsIDE4MywgMSwgMjQ1LCAKKyAgICAxOTIsIDIxMiwgMTgzLCAxLCAxOTksIDIxMiwgMTgzLCAxLCAxNzksIDIxMiwgMTgzLCAxLCAyMjEsIDkzLCAyMTIsIDE4MywgCisgICAgMSwgMjUwLCAxODMsIDIxMiwgMTgzLCAxLCAyNTAsIDAsIDIxMiwgMTgzLCAxLCAxODUsIDIxMiwgMTgzLCAxLCAxOTAsIAorICAgIDIxMiwgMTgzLCAxLCAyMTksIDExMywgMjEyLCAxODMsIDEsIDIzMCwgMTQxLCAyMTIsIDE4MywgMSwgMjA5LCA3MCwgMjEyLCAKKyAgICAxODMsIDEsIDIxNiwgMiwgMjEyLCAxODMsIDEsIDIxNywgMTk5LCAyMTIsIDE4MywgMSwgMTU1LCAyMTIsIDE4MywgMSwgCisgICAgMjE4LCA4OSwgMjEyLCAxODMsIDMsIDI1MiwgNzMsIDIxMiwgMTgzLCAzLCAyMDgsIDE4MywgMjEyLCAxODMsIDIyLCAzLCAKKyAgICAyNTMsIDE2NCwgMjEyLCAxODMsIDIyLCAzLCA3NCwgMjEyLCAxODMsIDIyLCAzLCAyMzMsIDEwMiwgMjEyLCAxODMsIDIyLCAKKyAgICAzLCA3MSwgMjEyLCAxODMsIDIyLCAzLCAyMDksIDE2MiwgMjEyLCAxODMsIDIyLCAzLCA3NSwgMjEyLCAxODMsIDIyLCAzLCAKKyAgICAyNTIsIDIwNSwgMjEyLCAxODMsIDIyLCAzLCA3NiwgMjEyLCAxODMsIDIyLCAzLCAyNTEsIDE4NCwgMjEyLCAxODMsIDMsIAorICAgIDIwOCwgMTg4LCAyMTIsIDE4MywgMywgMjIzLCAxODQsIDIxMiwgMTgzLCAxOCwgMjA1LCA4NSwgMjEyLCAxODMsIDE4LCAKKyAgICAxMDIsIDIxMiwgMTgzLCAxOCwgMTA1LCAyMTIsIDE4MywgMTgsIDE0MiwgMjEyLCAxODMsIDE4LCAxMzksIDIxMiwgMTgzLCAKKyAgICAxOCwgMTY4LCAyMTIsIDE4MywgMTgsIDE4NCwgMjEyLCAxODMsIDE4LCAxOTUsIDIxMiwgMTgzLCAxOCwgMTkzLCAyMTIsIAorICAgIDE4MywgMTgsIDIwMCwgMjAyLCAxOTcsIDYsIDEsIDIyNSwgNzYsIDIwMiwgMTk3LCA2LCAxLCA2MiwgMjAyLCAxOTcsIDYsIAorICAgIDEsIDIwNywgMjAsIDIwMiwgMTk3LCA2LCAxLCAyMDUsIDIxMywgMjAyLCAxOTcsIDYsIDEsIDE5MCwgMjAyLCAxOTcsIDYsIAorICAgIDEsIDIwNSwgMjQ3LCAyMDIsIDE5NywgNiwgMSwgMjMzLCAxMDIsIDIwMiwgMTk3LCA2LCAxLCAyMDksIDE2MiwgMjAyLCAKKyAgICAxOTcsIDYsIDEsIDc1LCAyMDIsIDE5NywgNiwgMSwgNzYsIDIwMiwgMTk3LCA2LCAxLCAyNTIsIDExNCwgMjAyLCAxOTcsIDYsIAorICAgIDEsIDI0MCwgMjQ0LCAyMDIsIDE5NywgNiwgMSwgMjMxLCA1MywgMjAyLCAxOTcsIDYsIDEsIDI0MywgNywgMjAyLCAxOTcsIAorICAgIDYsIDEsIDIwNSwgMTk3LCAyMDIsIDE5NywgNiwgMSwgMjEwLCAxMCwgMjAyLCAxOTcsIDYsIDEsIDI0MywgMjUsIDIwMiwgCisgICAgMTk3LCA2LCAxLCAyMjIsIDIwOSwgMjAyLCAxOTcsIDYsIDEsIDIxMCwgMjAzLCAyMDIsIDE5NywgNiwgMSwgMjIzLCAxNzAsIAorICAgIDIwMiwgMTk3LCA2LCAxLCAyNDYsIDE0NSwgMjAyLCAxOTcsIDYsIDEsIDI1MSwgMTk5LCAyMDIsIDE5NywgNiwgMSwgMjUyLCAKKyAgICAxMzYsIDIwMiwgMTk3LCA2LCAxLCAyNDksIDEwMSwgMjAyLCAxOTcsIDYsIDEsIDIyMCwgODIsIDIwMiwgMTk3LCA2LCAxLCAKKyAgICAyMzgsIDI0MSwgMjAyLCAxOTcsIDYsIDEsIDIzOCwgMTM4LCAyMDIsIDE5NywgNiwgMSwgMjM4LCA2NywgMjAyLCAxOTcsIDYsIAorICAgIDEsIDIzOSwgOTUsIDIwMiwgMTk3LCA2LCAxLCAyMTQsIDQ4LCAyMDIsIDE5NywgNiwgMSwgMjE1LCA2MSwgMjAyLCAxOTcsIAorICAgIDYsIDEsIDIwOCwgMTc0LCAyMDIsIDE5NywgNSwgMSwgMjI1LCA3NiwgMjAyLCAxOTcsIDUsIDEsIDYyLCAyMDIsIDE5NywgNSwgCisgICAgMSwgMjA3LCAyMCwgMjAyLCAxOTcsIDUsIDEsIDIwNSwgMjEzLCAyMDIsIDE5NywgNSwgMSwgMTkwLCAyMDIsIDE5NywgNSwgCisgICAgMSwgMjA1LCAyNDcsIDIwMiwgMTk3LCA1LCAxLCAyMzMsIDEwMiwgMjAyLCAxOTcsIDUsIDEsIDIwOSwgMTYyLCAyMDIsIAorICAgIDE5NywgNSwgMSwgNzUsIDIwMiwgMTk3LCA1LCAxLCA3NiwgMjAyLCAxOTcsIDUsIDEsIDI1MiwgMTE0LCAyMDIsIDE5NywgNSwgCisgICAgMSwgMjQwLCAyNDQsIDIwMiwgMTk3LCA1LCAxLCAyMzEsIDUzLCAyMDIsIDE5NywgNSwgMSwgMjQzLCA3LCAyMDIsIDE5NywgCisgICAgNSwgMSwgMjA1LCAxOTcsIDIwMiwgMTk3LCA1LCAxLCAyMTAsIDEwLCAyMDIsIDE5NywgNSwgMSwgMjQzLCAyNSwgMjAyLCAKKyAgICAxOTcsIDUsIDEsIDIyMiwgMjA5LCAyMDIsIDE5NywgNSwgMSwgMjEwLCAyMDMsIDIwMiwgMTk3LCA1LCAxLCAyMjMsIDE3MCwgCisgICAgMjAyLCAxOTcsIDUsIDEsIDI0NiwgMTQ1LCAyMDIsIDE5NywgNSwgMSwgMjUxLCAxOTksIDIwMiwgMTk3LCA1LCAxLCAyNTIsIAorICAgIDEzNiwgMjAyLCAxOTcsIDUsIDEsIDI0OSwgMTAxLCAyMDIsIDE5NywgNSwgMSwgMjIwLCA4MiwgMjAyLCAxOTcsIDUsIDEsIAorICAgIDIzOCwgMjQxLCAyMDIsIDE5NywgNSwgMSwgMjM4LCAxMzgsIDIwMiwgMTk3LCA1LCAxLCAyMzgsIDY3LCAyMDIsIDE5NywgNSwgCisgICAgMSwgMjM5LCA5NSwgMjAyLCAxOTcsIDUsIDEsIDIxNCwgNDgsIDIwMiwgMTk3LCA1LCAxLCAyMTUsIDYxLCAyMDIsIDE5NywgCisgICAgNSwgMSwgMjA4LCAxNzQsIDIwMiwgMTk3LCAxOCwgMjA1LCA4NSwgMjAyLCAxOTcsIDE4LCAxMDIsIDIwMiwgMTk3LCAxOCwgCisgICAgMTA1LCAyMDIsIDE5NywgMTgsIDE0MiwgMjAyLCAxOTcsIDE4LCAxMzksIDIwMiwgMTk3LCAxOCwgMTY4LCAyMDIsIDE5NywgCisgICAgMTgsIDE4NCwgMjAyLCAxOTcsIDE4LCAxOTUsIDIwMiwgMTk3LCAxOCwgMTkzLCAyMDIsIDE5NywgMTgsIDIwMCwgMjAyLCAKKyAgICAxOTcsIDQzLCAyMTIsIDk4LCAyMDIsIDE5NywgNDMsIDIxMCwgMTIzLCAyMDIsIDE5NywgNDMsIDIxMiwgMywgMjAyLCAxOTcsIAorICAgIDQzLCAyNDEsIDEzMCwgMjAyLCAxOTcsIDQzLCAyNDEsIDI0MywgMjAyLCAxOTcsIDQzLCAyMTQsIDI1MiwgMjAyLCAxOTcsIAorICAgIDQzLCAyMTYsIDE3LCAyMDIsIDE5NywgNDMsIDI0MywgNzksIDIwMiwgMTk3LCA0MywgMjI0LCAxOTAsIDIwMiwgMTk3LCAKKyAgICAyMjIsIDE3MywgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAxNzksIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCAKKyAgICA4MSwgMSwgMTcyLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDIzMCwgMTQxLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIAorICAgIDIzOSwgODEsIDEsIDE4NSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyNDYsIDE0NSwgMjIxLCAxODksIDI0NywgCisgICAgMjM4LCAyMzksIDgxLCAxLCAyMDUsIDExNiwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyMDksIDcwLCAyMjEsIAorICAgIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDIyNSwgNzcsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMSwgMTU1LCAKKyAgICAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDI0MCwgMjQ0LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIAorICAgIDIzMSwgMTY3LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDIxNywgMTk5LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIAorICAgIDIzOSwgODEsIDEsIDI1MCwgMTgzLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDI0OSwgMSwgMjIxLCAxODksIAorICAgIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyMTIsIDIxOSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyMTIsIDU2LCAKKyAgICAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDE5OSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyMjEsIAorICAgIDkzLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDIxOSwgMTEzLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgCisgICAgODEsIDEsIDI0MiwgNzMsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMSwgMjQ4LCAxMTAsIDIyMSwgMTg5LCAyNDcsIAorICAgIDIzOCwgMjM5LCA4MSwgMSwgNjIsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMSwgNzUsIDIyMSwgMTg5LCAyNDcsIAorICAgIDIzOCwgMjM5LCA4MSwgMSwgNzQsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMSwgNzYsIDIyMSwgMTg5LCAyNDcsIAorICAgIDIzOCwgMjM5LCA4MSwgMSwgNzEsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMSwgMjEwLCAxOCwgMjIxLCAxODksIAorICAgIDI0NywgMjM4LCAyMzksIDgxLCAxLCAyMzcsIDE5MCwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjIyLCAKKyAgICA2NywgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjMyLCA3NiwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIAorICAgIDgxLCAxLCA0MiwgMjEzLCAxMCwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjI5LCAyOCwgMjIxLCAKKyAgICAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjI2LCAzMywgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCAKKyAgICA0MiwgMTQ5LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDEsIDQyLCAyMDcsIDEyOSwgMjIxLCAxODksIDI0NywgCisgICAgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjI1LCA3OSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAxLCA0MiwgMjA2LCAKKyAgICAxMjMsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMjE4LCAxNDIsIDEzNSwgMjI5LCAxMjUsIDIyMSwgMTg5LCAyNDcsIAorICAgIDIzOCwgMjM5LCA4MSwgMjE4LCAxNDIsIDIxMSwgMTE4LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDIxNywgMTQ3LCAKKyAgICAyNDAsIDI1LCAyMTMsIDI1MSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAyMTgsIDE0MiwgMTM1LCAxNTIsIDI0MSwgCisgICAgMjMwLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDIxOCwgMTQyLCAxMzUsIDI0MSwgMjMwLCAyMjEsIDE4OSwgMjQ3LCAKKyAgICAyMzgsIDIzOSwgODEsIDIxNywgMTQ3LCAyNDAsIDI1LCAyMTMsIDI1MiwgMjQxLCAyMzAsIDIyMSwgMTg5LCAyNDcsIDIzOCwgCisgICAgMjM5LCA4MSwgMjE3LCAxNDcsIDEzNSwgMjI5LCAxMjUsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMjE3LCAxNDcsIAorICAgIDIxMSwgMTE4LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDIxNywgMTQ3LCAxMzUsIDE1MiwgMjQxLCAyMzAsIDIyMSwgCisgICAgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMjE3LCAxNDcsIDEzNSwgMjQxLCAyMzAsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCAKKyAgICA4MSwgMjI2LCAyNDgsIDIxMSwgMTE4LCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDI0MCwgMjUsIDIxMywgMjUyLCAKKyAgICAyMDksIDUyLCAyMjEsIDE4OSwgMjQ3LCAyMzgsIDIzOSwgODEsIDIyNiwgMjQ4LCAxMzUsIDE1MiwgMjQxLCAyMzAsIDIyMSwgCisgICAgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMjI2LCAyNDgsIDEzNSwgMjQxLCAyMzAsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCAKKyAgICA4MSwgMjI5LCA5NSwgMTM1LCAyMjksIDEyNSwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAyMjksIDk1LCAyMTEsIAorICAgIDExOCwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAyNDAsIDI1LCAyMTMsIDI1MSwgMjIxLCAxODksIDI0NywgMjM4LCAKKyAgICAyMzksIDgxLCAyMjksIDk1LCAxMzUsIDE1MiwgMjQxLCAyMzAsIDIyMSwgMTg5LCAyNDcsIDIzOCwgMjM5LCA4MSwgMjI5LCAKKyAgICA5NSwgMTM1LCAyNDEsIDIzMCwgMjIxLCAxODksIDI0NywgMjM4LCAyMzksIDgxLCAyNDAsIDI1LCAyMTMsIDI1MiwgMjQxLCAKKyAgICAyMzAsIDE0LCAzLCA2MiwgMTQsIDMsIDMyLCAyOSwgNjIsIDE0LCAzLCAzMiwgMjksIDI1MCwgMTY3LCAxNCwgMywgMzIsIAorICAgIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIDMyLCAyOSwgMTU1LCAxNCwgMywgMzIsIDI5LCAyMzMsIDEwNCwgMTQsIAorICAgIDMsIDMyLCAyOSwgMjMwLCAxMjEsIDIzOSwgMTkyLCAxNCwgMywgMzIsIDI5LCAyMjYsIDY5LCAxNCwgMywgMzIsIDI5LCAKKyAgICAyMTcsIDE4NSwgMTQsIDMsIDI1NCwgMTY2LCAxNCwgMywgMjUzLCAxMTUsIDE0LCAzLCAyNTMsIDExNiwgMjksIDI1MSwgCisgICAgMjIzLCAxNCwgMywgMjUzLCAxMTYsIDI5LCAyNDMsIDIyNiwgMjM5LCAxOTIsIDE0LCAzLCAyNTMsIDExNiwgMjksIDI0MCwgCisgICAgMjI2LCAxNCwgMywgMjUzLCAxMTYsIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIDI1MywgMTE2LCAyOSwgMTU1LCAKKyAgICAxNCwgMywgMjUzLCAxMTYsIDI5LCAyMzMsIDEwNSwgMjM5LCAxOTIsIDE0LCAzLCAyNTMsIDExNiwgMjksIDIzMywgNzgsIAorICAgIDE0LCAzLCAyNTMsIDExNiwgMjksIDIzMCwgMTIyLCAxNCwgMywgMjUzLCAxMTYsIDI5LCAyMTUsIDE5OSwgMTQsIDMsIDI1MywgCisgICAgMTE2LCAyOSwgMTA2LCAxMDEsIDEwNiwgMTAxLCA3MSwgMTQsIDMsIDI1MywgMTE2LCAyMzksIDE5MiwgMTQsIDMsIDI1MywgCisgICAgMzIsIDE0LCAzLCAyNTMsIDMzLCAyOSwgMjUwLCAxNTAsIDE0LCAzLCAyNTMsIDMzLCAyOSwgMjQwLCAyMTMsIDIxMiwgODksIAorICAgIDE0LCAzLCAyNTMsIDMzLCAyOSwgMjI3LCAxMjAsIDEwMSwgMjQzLCA0MSwgMTQsIDMsIDI1MywgMzMsIDI5LCAyMTYsIDAsIAorICAgIDE0LCAzLCAyNTMsIDMzLCAyOSwgMjEyLCAxODYsIDE0LCAzLCAyNTMsIDUsIDE0LCAzLCAyNTIsIDE4OSwgMTQsIDMsIDI1MiwgCisgICAgMTkwLCAyOSwgMjQyLCAyMzAsIDE0LCAzLCAyNTIsIDE5MCwgMjksIDIxNSwgMTYxLCAxMDEsIDI0MCwgMzUsIDE0LCAzLCAKKyAgICAyNTIsIDE4MSwgMTQsIDMsIDI1MiwgMTgyLCAyOSwgMjUyLCAxODEsIDE0LCAzLCAyNTIsIDE4MiwgMjksIDI0NSwgMTIzLCAKKyAgICAxNCwgMywgMjUyLCAxODIsIDI5LCAyNDAsIDM1LCAxNCwgMywgMjUyLCAxODIsIDI5LCAxNTUsIDE0LCAzLCAyNTIsIDE4MiwgCisgICAgMjksIDIzMiwgNTAsIDE0LCAzLCAyNTIsIDE4MiwgMjksIDIzMSwgMTIzLCAxNCwgMywgMjUyLCAxODIsIDI5LCAyMTUsIAorICAgIDIxNCwgMTQsIDMsIDI1MiwgMTgyLCAyOSwgMjA5LCAxNzAsIDE0LCAzLCAyNTIsIDE3OCwgMTQsIDMsIDI1MiwgMTcwLCAxNCwgCisgICAgMywgMjUyLCAxMzIsIDE0LCAzLCAyNTIsIDEzMywgMjksIDIxNSwgMjE0LCAxNCwgMywgMjUyLCAxMjIsIDE0LCAzLCAyNTIsIAorICAgIDEyMywgMTMxLCAyNTIsIDEyMiwgMTQsIDMsIDI1MiwgMTIzLCAxMjksIDIxMSwgMTc1LCAxNCwgMywgMjUyLCAxMjMsIDEwMSwgCisgICAgMjI1LCAyMjMsIDIyMiwgMTI5LCAyNTIsIDEyMywgMTAxLCAyMjUsIDIyMiwgMTQsIDMsIDI1MiwgMTIzLCAxMDEsIDIyNSwgCisgICAgMjIzLCAyMTQsIDEwNiwgMTQsIDMsIDI1MiwgOTMsIDE0LCAzLCAyNTIsIDYzLCAxNCwgMywgMjUyLCAzMSwgMTQsIDMsIAorICAgIDI1MiwgMzIsIDI5LCAyMzAsIDIxMCwgMTQsIDMsIDI1MiwgMywgMTQsIDMsIDI1MSwgMjMwLCAxNCwgMywgMjUxLCAyMjUsIAorICAgIDE0LCAzLCAyNTEsIDIyNiwgMjA1LCAzNiwgMjEyLCA4OSwgMTQsIDMsIDI1MSwgMjI2LCAyMzIsIDU0LCAyMTIsIDg5LCAxNCwgCisgICAgMywgMjUxLCAyMjYsIDEzMSwgMjUxLCAyMjYsIDIxMCwgMTY1LCAxMzEsIDIxMCwgMTY1LCAyMTAsIDE2NSwgMTMxLCAyMTAsIAorICAgIDE2NSwgMjIxLCAyMzYsIDE0LCAzLCAyNTEsIDIyNiwgMTMxLCAyNTEsIDIyNiwgMTMxLCAyNTEsIDIyNSwgMTQsIDMsIDI1MSwgCisgICAgMjI2LCAxMzEsIDI1MSwgMjI2LCAxMzEsIDI1MSwgMjI2LCAyNDcsIDU0LCAyNTEsIDIyNiwgMTMxLCAyNTEsIDIyNiwgMTMxLCAKKyAgICAyNTEsIDIyNSwgMTQsIDMsIDI1MSwgMjIzLCAxNCwgMywgMjUxLCAyMTksIDE0LCAzLCAyNTAsIDE4MywgMTQsIDMsIDI1MCwgCisgICAgMTY3LCAxNCwgMywgMjUwLCAxNjIsIDE0LCAzLCAyNTAsIDE1NywgMTQsIDMsIDI1MCwgMTUxLCAxNCwgMywgMjUwLCAxNTIsIAorICAgIDEzMSwgMjUwLCAxNTEsIDE0LCAzLCAyNTAsIDE1MCwgMTQsIDMsIDEzNCwgMTQsIDMsIDI1MCwgMTI4LCAxNCwgMywgMjQ5LCAKKyAgICAyNDQsIDE0LCAzLCAyNDksIDI0NSwgMjksIDYyLCAxNCwgMywgMjQ5LCAyNDUsIDI5LCAyNDAsIDIwNCwgMTQsIDMsIDI0OSwgCisgICAgMjQ1LCAyOSwgMjMzLCAxMDUsIDIzOSwgMTkyLCAxNCwgMywgMjQ5LCAxMDEsIDE0LCAzLCAyNDksIDEwMiwgMTMxLCAyNDksIAorICAgIDEwMiwgMjUzLCAxMTUsIDE0LCAzLCAyNDksIDEwMiwgMTMxLCAyNDksIDEwMiwgMjA5LCAyMzQsIDE0LCAzLCAyNDksIDEwMiwgCisgICAgMjQ3LCA1NCwgMjQ5LCAxMDEsIDE0LCAzLCAyNDksIDc5LCAxNCwgMywgMjQ5LCA4MCwgMTMxLCAyNDksIDc5LCAxNCwgMywgCisgICAgMjQ5LCA2OCwgMTQsIDMsIDI0OSwgNjcsIDE0LCAzLCAyNDYsIDE0NSwgMTQsIDMsIDI0NiwgMTM2LCAxNCwgMywgMjQ2LCAKKyAgICAxMzcsIDIzMSwgOTQsIDI5LCAzMiwgMTAxLCAyMjcsIDE3OCwgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjUyLCAKKyAgICAxMzIsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDI1MCwgMTUwLCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIAorICAgIDI5LCAyNDksIDI0NCwgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjQwLCAyNDQsIDE0LCAzLCAyNDYsIDEzNywgCisgICAgMjMxLCA5NCwgMjksIDI0MCwgMjQ1LCAxMDEsIDIyNywgMTc4LCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIDI5LCAyNDAsIAorICAgIDYxLCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIDI5LCAyNDAsIDQzLCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIDI5LCAKKyAgICAyMzksIDIwMiwgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMTU1LCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIAorICAgIDI5LCAyMzIsIDI0MywgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjMyLCAyNDQsIDEwMSwgMjI5LCA4MSwgMTQsIAorICAgIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjMyLCAzNSwgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjMwLCAKKyAgICAxNDEsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDIyOSwgODEsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIAorICAgIDIyOSwgODIsIDEwMSwgMjI3LCAxNzcsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDIyOSwgNjUsIDE0LCAzLCAKKyAgICAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDIyNSwgMTEwLCAxNCwgMywgMjQ2LCAxMzcsIDIzMSwgOTQsIDI5LCAyMjEsIDIzNywgCisgICAgMTAxLCAyMjEsIDIzNiwgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjE1LCA4MCwgMTQsIDMsIDI0NiwgMTM3LCAKKyAgICAyMzEsIDk0LCAyOSwgMjEyLCAxODYsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDIxMCwgMjAsIDEwMSwgMjQwLCAKKyAgICA0MywgMTQsIDMsIDI0NiwgMTM3LCAyMzEsIDk0LCAyOSwgMjA5LCAxNzAsIDE0LCAzLCAyNDYsIDEwOSwgMTQsIDMsIDI0NiwgCisgICAgODgsIDE0LCAzLCAyNDYsIDg3LCAxNCwgMywgMjQ2LCA4NiwgMTQsIDMsIDI0NSwgMTY4LCAxNCwgMywgMjQ1LCAxNTAsIDE0LCAKKyAgICAzLCAyNDUsIDEyNCwgMTQsIDMsIDI0NSwgMTI1LCAyOSwgMjE1LCAyMTQsIDE0LCAzLCAyNDUsIDEyMywgMTQsIDMsIDI0NSwgCisgICAgMTEzLCAxNCwgMywgMjQ1LCAxMTQsIDIzMSwgMjU1LCAxMDYsIDIzOSwgMTkzLCAyNDUsIDk0LCAxNCwgMywgMjQ1LCA5NCwgCisgICAgMTQsIDMsIDI0MywgMjM3LCAxNCwgMywgMjQzLCAyMzgsIDEzMSwgMjQzLCAyMzcsIDE0LCAzLCAyNDMsIDIzOCwgMjM5LCAKKyAgICAxOTIsIDE0LCAzLCAyNDMsIDIzOCwgMjE1LCAxOTYsIDE0LCAzLCAyNDMsIDIzNSwgMTQsIDMsIDI0MywgMjM2LCAyOSwgCisgICAgMjQyLCAyMTIsIDE0LCAzLCAyNDMsIDIzNCwgMTQsIDMsIDI0MywgMjMzLCAxNCwgMywgMjQzLCAyMzIsIDE0LCAzLCAyNDMsIAorICAgIDIzMSwgMTQsIDMsIDI0MywgMjI3LCAxNCwgMywgMjQzLCAyMjUsIDE0LCAzLCAyNDMsIDIyNiwgMjM5LCAxOTIsIDE0LCAzLCAKKyAgICAyNDMsIDIyNiwgMjM5LCAxOTMsIDIzOSwgMTkyLCAxNCwgMywgMjQzLCAyMjQsIDE0LCAzLCAyNDMsIDIxNywgMTQsIDMsIAorICAgIDc1LCAxNCwgMywgMTc0LCAyOSwgMjIxLCAyMzYsIDE0LCAzLCAxNzQsIDEzMSwgMTc0LCAyMjMsIDE3NCwgMTMxLCAyMjMsIAorICAgIDE3MywgMTQsIDMsIDI0MywgMTMxLCAxNCwgMywgMjQzLCAxMzIsIDI5LCAzMiwgMTAxLCAyMzksIDE0NCwgMTAxLCAyNDYsIAorICAgIDE0NSwgMTQsIDMsIDI0MywgMTMyLCAyOSwgMjQwLCAyMDQsIDE0LCAzLCAyNDMsIDEzMiwgMjksIDIyNiwgMjU0LCAxNCwgMywgCisgICAgMjQzLCAxMzIsIDI5LCAyMTcsIDE3MiwgMTQsIDMsIDI0MywgMTMyLCAyOSwgMjE1LCAyMTQsIDE0LCAzLCAyNDMsIDEzMiwgCisgICAgMjksIDcxLCAxNCwgMywgMjQzLCAxMDYsIDE0LCAzLCAyNDMsIDk1LCAxNCwgMywgMjQzLCA2OCwgMTQsIDMsIDI0MywgNDEsIAorICAgIDE0LCAzLCAyNDMsIDQyLCAyOSwgMjQwLCAyMTIsIDE0LCAzLCAyNDMsIDQyLCAyOSwgMjQwLCAyMTMsIDIxMiwgODksIDE0LCAKKyAgICAzLCAyNDMsIDQyLCAyOSwgMjI3LCAxMTksIDE0LCAzLCAyNDMsIDQyLCAyNDcsIDU0LCAyNDMsIDQxLCAxNCwgMywgMjQzLCAKKyAgICA0MiwgMjIyLCAxMjksIDI0MywgNDEsIDE0LCAzLCAyNDMsIDQyLCAyMTQsIDEwNiwgMTQsIDMsIDI0MiwgMjMyLCAxNCwgMywgCisgICAgMjQyLCAyMzAsIDE0LCAzLCAyNDIsIDIxMiwgMTQsIDMsIDI0MiwgMTQzLCAxNCwgMywgMjQyLCAxNDQsIDI5LCA2MiwgMTQsIAorICAgIDMsIDI0MiwgMTQ0LCAyOSwgMzIsIDEwMSwgMjMwLCAxMDgsIDE0LCAzLCAyNDIsIDE0NCwgMjksIDMyLCAxMDEsIDIzMCwgCisgICAgMTA5LCAyOSwgMjMwLCAxMDgsIDE0LCAzLCAyNDIsIDE0NCwgMjksIDI1MiwgMTIyLCAxNCwgMywgMjQyLCAxNDQsIDI5LCAKKyAgICAyNTAsIDE2NywgMTQsIDMsIDI0MiwgMTQ0LCAyOSwgMjQzLCAyMjYsIDIzOSwgMTkyLCAxNCwgMywgMjQyLCAxNDQsIDI5LCAKKyAgICAyNDMsIDIyNiwgMjM5LCAxOTMsIDIzOSwgMTkyLCAxNCwgMywgMjQyLCAxNDQsIDI5LCAxNTUsIDE0LCAzLCAyNDIsIDE0NCwgCisgICAgMjksIDIzOSwgMTQ0LCAyMzksIDE5MiwgMTQsIDMsIDI0MiwgMTQ0LCAyOSwgMjMzLCAxMDUsIDIzOSwgMTkyLCAxNCwgMywgCisgICAgMjQyLCAxNDQsIDI5LCAyMzEsIDI1NCwgMTQsIDMsIDI0MiwgMTQ0LCAyOSwgMjMxLCAyNTUsIDIxNCwgMTA2LCAxNCwgMywgCisgICAgMjQyLCAxNDQsIDI5LCAyMzAsIDIzNCwgMTQsIDMsIDI0MiwgMTQ0LCAyOSwgMjMwLCAxNDEsIDE0LCAzLCAyNDIsIDE0NCwgCisgICAgMjksIDIzMCwgMTA5LCAyOSwgMjMwLCAxMDgsIDE0LCAzLCAyNDIsIDE0NCwgMjksIDIyOSwgMjM1LCAxNCwgMywgMjQyLCAKKyAgICAxNDQsIDI5LCAyMjksIDgxLCAxNCwgMywgMjQyLCAxNDQsIDI5LCAyMTAsIDE5LCAxNCwgMywgMjQyLCAxNDQsIDI5LCAyMTAsIAorICAgIDgsIDE0LCAzLCAyNDAsIDI0NCwgMTQsIDMsIDI0MCwgMjQ1LCAyMzksIDE5MiwgMTQsIDMsIDI0MCwgMjQyLCAxNCwgMywgCisgICAgMjQwLCAyNDMsIDI5LCAzMiwgMTAxLCAyNDYsIDE0NiwgMTAxLCAxNTUsIDE0LCAzLCAyNDAsIDI0MywgMjksIDMyLCAxMDEsIAorICAgIDE1NSwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMzIsIDEwMSwgMjMzLCAxMDQsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI1MywgCisgICAgMzMsIDIxMiwgOTAsIDEwMSwgMjEyLCAyMDcsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI1MiwgMTIyLCAxNCwgMywgMjQwLCAKKyAgICAyNDMsIDI5LCAyNTEsIDIyNSwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjUxLCAyMjQsIDEwMSwgMjQwLCAyMjYsIDE0LCAzLCAKKyAgICAyNDAsIDI0MywgMjksIDI1MCwgMTY3LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyNTAsIDEyOSwgMTAxLCAyMTksIDExMywgMTQsIAorICAgIDMsIDI0MCwgMjQzLCAyOSwgMjQ5LCA2OCwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjQ5LCA2OSwgMTAxLCAyMTksIDExMywgCisgICAgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjQ2LCAxNDUsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI0NSwgMTY4LCAxNCwgMywgMjQwLCAKKyAgICAyNDMsIDI5LCAyNDUsIDEyNSwgMjksIDIxNSwgMjE0LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyNDMsIDIzNSwgMTQsIDMsIAorICAgIDI0MCwgMjQzLCAyOSwgMjQzLCA2OCwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjQzLCA2OSwgMTAxLCAyMzAsIDE0MSwgMTQsIAorICAgIDMsIDI0MCwgMjQzLCAyOSwgMjQzLCA0MSwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjQzLCA0MiwgMjksIDI0MCwgMjEzLCAKKyAgICAyMTIsIDg5LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgCisgICAgMjQwLCAyMDQsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI0MCwgNjEsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI0MCwgNTksIDE0LCAKKyAgICAzLCAyNDAsIDI0MywgMjksIDI0MCwgNjAsIDEwMSwgNjIsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI0MCwgNDQsIDEwMSwgCisgICAgMjEzLCAyMDMsIDE0LCAzLCAyNDAsIDI0MywgMjksIDIzOSwgMTQ0LCAxMDEsIDIyOSwgODIsIDEwMSwgMjQyLCAyMTIsIDE0LCAKKyAgICAzLCAyNDAsIDI0MywgMjksIDIzOSwgMTI0LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMzksIDEyNSwgMTAxLCAyMzAsIDE0MSwgCisgICAgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjM5LCAxMiwgMTAxLCAyMjksIDIzNSwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjM4LCAKKyAgICAzNywgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjMzLCAxMDUsIDIzOSwgMTkyLCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMzIsIAorICAgIDIyOSwgMTAxLCAyMzgsIDQzLCAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMzIsIDM1LCAxNCwgMywgCisgICAgMjQwLCAyNDMsIDI5LCAyMzEsIDI1NCwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjMxLCAxMTcsIDE0LCAzLCAyNDAsIDI0MywgCisgICAgMjksIDIzMSwgMTE4LCAxMDEsIDIzMCwgMTA4LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMzAsIDIzNSwgMTAxLCAyNTIsIAorICAgIDEyMiwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjMwLCAxNDEsIDE0LCAzLCAyNDAsIDI0MywgMjksIDIyNywgMTIwLCAxMDEsIAorICAgIDI0MywgNDEsIDE0LCAzLCAyNDAsIDI0MywgMjksIDIyNiwgMjU0LCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMjMsIDE3MywgCisgICAgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjIzLCAxNzQsIDEzMSwgMjIzLCAxNzMsIDE0LCAzLCAyNDAsIDI0MywgMjksIDE3OSwgCisgICAgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjE3LCAxNzIsIDE0LCAzLCAyNDAsIDI0MywgMjksIDIxNywgMTM4LCAxNCwgMywgMjQwLCAKKyAgICAyNDMsIDI5LCAyMTUsIDIxNCwgMTQsIDMsIDI0MCwgMjQzLCAyOSwgMjE1LCAyMTUsIDEwMSwgMjEwLCAxNDksIDE0LCAzLCAKKyAgICAyNDAsIDI0MywgMjksIDIxNSwgMTgxLCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMTMsIDE2MCwgMTQsIDMsIDI0MCwgMjQzLCAKKyAgICAyOSwgMjEyLCAxODYsIDE0LCAzLCAyNDAsIDI0MywgMjksIDcxLCAxNCwgMywgMjQwLCAyNDMsIDI5LCAyMTAsIDgsIDE0LCAKKyAgICAzLCAyNDAsIDI0MywgMjksIDIxMCwgOSwgMTAxLCAyNDMsIDIzNywgMTQsIDMsIDI0MCwgMjQzLCAxMzEsIDI0MCwgMjQyLCAKKyAgICAxNCwgMywgMjQwLCAyMzcsIDE0LCAzLCAyNDAsIDIzOCwgMjQ3LCA1NCwgMjQwLCAyMzcsIDE0LCAzLCAyNDAsIDIzNSwgMTQsIAorICAgIDMsIDI0MCwgMjM2LCAxMzEsIDI0MCwgMjM2LCAyNDAsIDIwNSwgMTMxLCAyNDAsIDIwNCwgMTQsIDMsIDI0MCwgMjI2LCAxNCwgCisgICAgMywgMjQwLCAyMjcsIDI0MCwgMjM2LCAxMzEsIDI0MCwgMjM2LCAyNDAsIDIwNSwgMTMxLCAyNDAsIDIwNCwgMTQsIDMsIAorICAgIDI0MCwgMjI1LCAxNCwgMywgMjQwLCAyMjMsIDE0LCAzLCAyNDAsIDIxNCwgMTQsIDMsIDI0MCwgMjEyLCAxNCwgMywgMjQwLCAKKyAgICAyMTMsIDIxMiwgODksIDE0LCAzLCAyNDAsIDIxMywgMTMxLCAyNDAsIDIxMiwgMTQsIDMsIDI0MCwgMjEzLCAyNDcsIDU0LCAKKyAgICAyNDAsIDIxMiwgMTQsIDMsIDI0MCwgMjA0LCAxNCwgMywgMjQwLCAyMDMsIDE0LCAzLCAyNDAsIDE5OCwgMTQsIDMsIDI0MCwgCisgICAgMTQyLCAxNCwgMywgMjQwLCAxNDMsIDI5LCAyMzAsIDIxMCwgMTQsIDMsIDI0MCwgNjEsIDE0LCAzLCAyNDAsIDYyLCAyOSwgCisgICAgNzUsIDE0LCAzLCAyNDAsIDYyLCAyOSwgNzEsIDE0LCAzLCAyNDAsIDYyLCAyNDcsIDU0LCAyNDAsIDYxLCAxNCwgMywgMjQwLCAKKyAgICA1OSwgMTQsIDMsIDI0MCwgNjAsIDEzMSwgMjQwLCA1OSwgMTQsIDMsIDI0MCwgNjAsIDI0NywgNTQsIDI0MCwgNTksIDE0LCAKKyAgICAzLCAyNDAsIDU2LCAxNCwgMywgMjQwLCA0MywgMTQsIDMsIDI0MCwgNDQsIDIzOSwgMTkyLCAxNCwgMywgMjQwLCA0MSwgMTQsIAorICAgIDMsIDI0MCwgNDIsIDI5LCAzMiwgMTAxLCAyMzMsIDEwNCwgMTQsIDMsIDI0MCwgNDIsIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgCisgICAgMTQsIDMsIDI0MCwgNDIsIDI5LCAyMzMsIDEwNCwgMTQsIDMsIDI0MCwgNDIsIDI5LCAyMjksIDgyLCAxMDEsIDIzMywgMTA0LCAKKyAgICAxNCwgMywgMjQwLCA0MiwgMjksIDE3OSwgMTQsIDMsIDI0MCwgMzcsIDE0LCAzLCAyNDAsIDM1LCAxNCwgMywgMjQwLCAzNiwgCisgICAgMjQ3LCA1NCwgMjQwLCAzNSwgMTQsIDMsIDI0MCwgMzYsIDI5LCAyNTAsIDE2NywgMTQsIDMsIDI0MCwgMzYsIDI5LCAyMTIsIAorICAgIDE4NiwgMTQsIDMsIDI0MCwgMzYsIDIxMiwgODksIDE0LCAzLCAyMzksIDIxMywgMTQsIDMsIDIzOSwgMjE0LCAyNDcsIDU0LCAKKyAgICAyMzksIDIxMywgMTQsIDMsIDIzOSwgMjExLCAxNCwgMywgMjM5LCAyMTIsIDI5LCAyMzIsIDM1LCAxNCwgMywgMjM5LCAyMTIsIAorICAgIDI5LCAyMzIsIDM2LCAyOSwgMjMzLCAxMDUsIDIzOSwgMTkyLCAxNCwgMywgMjM5LCAyMTIsIDI5LCAyMjMsIDE3MywgMTQsIAorICAgIDMsIDIzOSwgMjEyLCAyOSwgMjE3LCAxNzMsIDEwMSwgMjEwLCAxNjQsIDE0LCAzLCAyMzksIDIxMiwgMjM5LCAxOTIsIDE0LCAKKyAgICAzLCAyMzksIDIwMiwgMTQsIDMsIDIzOSwgMjAzLCAyOSwgMzIsIDEwMSwgMjMwLCAyMTAsIDE0LCAzLCAyMzksIDIwMywgMjksIAorICAgIDIzMCwgMjEwLCAxNCwgMywgMjM5LCAyMDMsIDEzMSwgMjM5LCAyMDMsIDIyOSwgNzIsIDE0LCAzLCAyMzksIDE5NiwgMTQsIAorICAgIDMsIDIzOSwgMTk0LCAxNCwgMywgMjM5LCAxOTUsIDI5LCAyMTUsIDIxNCwgMTQsIDMsIDIzOSwgMTg2LCAxNCwgMywgMjM5LCAKKyAgICAxODUsIDE0LCAzLCAyMzksIDE4MSwgMTQsIDMsIDIzOSwgMTgwLCAxNCwgMywgMTU1LCAxNCwgMywgMjM5LCAxNDQsIDIxMiwgCisgICAgODksIDE0LCAzLCAyMzksIDE0NCwgMjM5LCAxOTIsIDE0LCAzLCAyMzksIDEyNCwgMTQsIDMsIDIzOSwgMTEsIDE0LCAzLCAKKyAgICAyMzksIDEyLCAyOSwgMjUxLCAyMjUsIDE0LCAzLCAyMzksIDEyLCAyOSwgMjUxLCAyMjMsIDE0LCAzLCAyMzksIDEyLCAyOSwgCisgICAgMjUwLCAxNjcsIDE0LCAzLCAyMzksIDEyLCAyOSwgMjQ1LCA5NCwgMTQsIDMsIDIzOSwgMTIsIDI5LCAyNDAsIDIzNSwgMTQsIAorICAgIDMsIDIzOSwgMTIsIDI5LCAyMzEsIDEwOSwgMTQsIDMsIDIzOSwgMTIsIDI5LCAyMjMsIDE3MywgMTQsIDMsIDIzOSwgMTIsIAorICAgIDI5LCAyMTUsIDIxNCwgMTQsIDMsIDIzOSwgMTIsIDI5LCA3MSwgMTQsIDMsIDIzOCwgNDIsIDE0LCAzLCAyMzgsIDM3LCAxNCwgCisgICAgMywgMjM4LCAzOCwgMjksIDI1MiwgMTIyLCAxNCwgMywgMjM4LCAzOCwgMjksIDIzOSwgMTI0LCAxNCwgMywgMjM4LCAzOCwgCisgICAgMjksIDIzMSwgMjU0LCAxNCwgMywgMjM4LCAzOCwgMjksIDIyOSwgMTg2LCAxNCwgMywgMjM4LCAzOCwgMjksIDIxMCwgOCwgCisgICAgMTQsIDMsIDIzOCwgMzQsIDE0LCAzLCA3NCwgMTQsIDMsIDIzNywgMjI1LCA2MiwgMTQsIDMsIDIzNywgMTg1LCAxNCwgMywgCisgICAgMjMzLCAxMzIsIDE0LCAzLCAyMzMsIDEzMywgMTMxLCAyMzMsIDEzMywgMjQ5LCA2OCwgMTQsIDMsIDIzMywgMTMzLCAxMzEsIAorICAgIDIzMywgMTMzLCAyMTQsIDEwNiwgMTQsIDMsIDIzMywgMTA3LCAxNCwgMywgMjMzLCAxMDQsIDE0LCAzLCAyMzMsIDEwNSwgCisgICAgMjQ1LCAxNTAsIDE0LCAzLCAyMzMsIDEwNSwgMjE4LCAyMDgsIDE0LCAzLCAyMzMsIDEwNSwgMTMxLCAyMzMsIDEwNSwgMjE1LCAKKyAgICAxNjUsIDEzMSwgMjE1LCAxNjUsIDIxMCwgOSwgMTMxLCAyMTAsIDgsIDE0LCAzLCAyMzMsIDEwNSwgMjM5LCAxOTIsIDE0LCAKKyAgICAzLCAyMzMsIDk2LCAxNCwgMywgMjMzLCA5NywgMjksIDI0MCwgMjEzLCAyMTIsIDg5LCAxNCwgMywgMjMzLCA5NSwgMTQsIDMsIAorICAgIDIzMywgODUsIDE0LCAzLCAyMzMsIDg2LCAyOSwgMjEyLCAxODYsIDE0LCAzLCAyMzMsIDg2LCAyNDcsIDU0LCAyMzMsIDg1LCAKKyAgICAxNCwgMywgMjMzLCA4NiwgMjIyLCAxMjksIDIzMywgODUsIDE0LCAzLCAyMzMsIDg2LCAyMTQsIDEwNiwgMTQsIDMsIDIzMywgCisgICAgNzgsIDE0LCAzLCAyMzMsIDY4LCAxNCwgMywgMjMyLCAyNDMsIDE0LCAzLCAyMzIsIDIyOCwgMTQsIDMsIDE3MiwgMTQsIDMsIAorICAgIDIzMiwgNjYsIDI5LCA2MiwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNTMsIDUsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjUzLCA2LCAKKyAgICAxMDEsIDIzMCwgMjM0LCAxNCwgMywgMjMyLCA2NiwgMjksIDI1MSwgMjIzLCAxNCwgMywgMjMyLCA2NiwgMjksIDI1MCwgCisgICAgMTY3LCAxNCwgMywgMjMyLCA2NiwgMjksIDI1MCwgMTUwLCAxNCwgMywgMjMyLCA2NiwgMjksIDEzNCwgMTQsIDMsIDIzMiwgCisgICAgNjYsIDI5LCAyNDksIDI0NCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNDIsIDIzMCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNDIsIAorICAgIDIxMiwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNDAsIDI0NCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNDAsIDIyNiwgMTQsIDMsIAorICAgIDIzMiwgNjYsIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNDAsIDIwNCwgMTQsIDMsIDIzMiwgCisgICAgNjYsIDI5LCAyNDAsIDIwNSwgMTAxLCAyMTYsIDEsIDEwMSwgNjIsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjQwLCA2MSwgMTQsIAorICAgIDMsIDIzMiwgNjYsIDI5LCAyNDAsIDQzLCAxNCwgMywgMjMyLCA2NiwgMjksIDI0MCwgMzYsIDEwMSwgMjE3LCAxMzgsIDE0LCAKKyAgICAzLCAyMzIsIDY2LCAyOSwgMjQwLCAzNiwgMjQ3LCA1NCwgMjQwLCAzNSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMzksIDIxMywgCisgICAgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMzksIDE4NSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMzMsIDEwNCwgMTQsIDMsIDIzMiwgCisgICAgNjYsIDI5LCAyMzMsIDg1LCAxNCwgMywgMjMyLCA2NiwgMjksIDIzMiwgMzUsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjMxLCAKKyAgICAxMjMsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjMxLCAxMTcsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjI5LCAyMzUsIDE0LCAzLCAKKyAgICAyMzIsIDY2LCAyOSwgMjI5LCA4MSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMjcsIDExOSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAKKyAgICAyMjcsIDEyMCwgMTAxLCAyNDMsIDIzNywgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMjcsIDEyMCwgMTAxLCAyNDAsIDYxLCAxNCwgCisgICAgMywgMjMyLCA2NiwgMjksIDIyNywgMTIwLCAxMDEsIDIxMiwgMTMxLCAxNCwgMywgMjMyLCA2NiwgMjksIDIyNiwgMjU0LCAKKyAgICAxNCwgMywgMjMyLCA2NiwgMjksIDIyNiwgMjU1LCAxMDEsIDIyMywgMTY4LCAxNCwgMywgMjMyLCA2NiwgMjksIDIyNSwgCisgICAgMTEwLCAxNCwgMywgMjMyLCA2NiwgMjksIDIyMywgMTczLCAxNCwgMywgMjMyLCA2NiwgMjksIDIyMSwgNTMsIDE0LCAzLCAKKyAgICAyMzIsIDY2LCAyOSwgMjE4LCA1MCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMTcsIDE5OSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAKKyAgICAyMTcsIDEzOCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMTYsIDIsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjE1LCAyMTQsIDE0LCAKKyAgICAzLCAyMzIsIDY2LCAyOSwgMjE1LCAxODEsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjE1LCAxMTYsIDE0LCAzLCAyMzIsIDY2LCAKKyAgICAyOSwgMjE1LCA2OCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMTMsIDE2OSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMTIsIDE2MiwgCisgICAgMTQsIDMsIDIzMiwgNjYsIDI5LCA3MSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMTAsIDE5LCAxNCwgMywgMjMyLCA2NiwgMjksIAorICAgIDIxMCwgOCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMDksIDIzNywgMjksIDE3OSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMDksIAorICAgIDE3MCwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyMDUsIDQwLCAxNCwgMywgMjMyLCA2NCwgMTQsIDMsIDIzMiwgNjUsIDI0NywgCisgICAgNTQsIDIzMiwgNjQsIDE0LCAzLCAyMzIsIDU1LCAxNCwgMywgMjMyLCA1MiwgMTQsIDMsIDIzMiwgNTAsIDE0LCAzLCAyMzIsIAorICAgIDQ5LCAxNCwgMywgMjMyLCA0NywgMTQsIDMsIDIzMiwgNDgsIDEzMSwgMjMyLCA0NywgMTQsIDMsIDIzMiwgMzUsIDE0LCAzLCAKKyAgICAyMzIsIDM2LCAyOSwgMjMzLCAxMDUsIDIzOSwgMTkyLCAxNCwgMywgMjMyLCAzMSwgMTQsIDMsIDIzMiwgMzIsIDI5LCAyNTAsIAorICAgIDE2NywgMTQsIDMsIDIzMiwgMzIsIDI0NywgNTQsIDIzMiwgMzEsIDE0LCAzLCAyMzIsIDI5LCAxNCwgMywgMjMyLCAyOCwgCisgICAgMTQsIDMsIDIzMSwgMjU0LCAxNCwgMywgMjMxLCAyNTUsIDIzMCwgMTIzLCAyOSwgMTA2LCAxMzEsIDIzMCwgMTIzLCAyOSwgCisgICAgNzEsIDE0LCAzLCAyMzEsIDI1NSwgMTMxLCAyMzEsIDI1NSwgMjMwLCAxMjMsIDI5LCAxMDYsIDEzMSwgMjMwLCAxMjMsIDI5LCAKKyAgICA3MSwgMTQsIDMsIDIzMSwgMTk0LCAxNCwgMywgMjMxLCAxMjMsIDE0LCAzLCAyMzEsIDEyNCwgMjksIDI1MCwgMTY3LCAxNCwgCisgICAgMywgMjMxLCAxMjQsIDI5LCA3MSwgMTQsIDMsIDIzMSwgMTI0LCAyOSwgMjEwLCA4LCAxNCwgMywgMjMxLCAxMTcsIDE0LCAzLCAKKyAgICAyMzEsIDEwOSwgMTQsIDMsIDIzMSwgOTYsIDE0LCAzLCAyMzEsIDk1LCAxNCwgMywgMjMxLCA5MywgMTQsIDMsIDIzMSwgOTQsIAorICAgIDEzMSwgMjMxLCA5MywgMTQsIDMsIDIzMCwgMjM2LCAxNCwgMywgMjMwLCAyMzcsIDEzMSwgMjM5LCAxMiwgMjksIDI1MSwgCisgICAgMjI0LCAyMzAsIDIzNywgMTMxLCAyMzksIDEyLCAyOSwgMjUxLCAyMjMsIDE0LCAzLCAyMzAsIDIzNCwgMTQsIDMsIDIzMCwgCisgICAgMjMyLCAxNCwgMywgMjMwLCAyMzMsIDIwOSwgNTMsIDE3LCAxNCwgMywgMjMwLCAyMzEsIDE0LCAzLCAyMzAsIDIyMywgMTQsIAorICAgIDMsIDIzMCwgMjI0LCAyMzksIDE5MiwgMTQsIDMsIDIzMCwgMjIyLCAxNCwgMywgMjMwLCAyMTAsIDE0LCAzLCAyMzAsIDIxMSwgCisgICAgMjIyLCAxMjksIDIzMCwgMjEwLCAxNCwgMywgMjMwLCAyMDUsIDE0LCAzLCAyMzAsIDE4MywgMTQsIDMsIDIzMCwgMTQxLCAKKyAgICAxNCwgMywgMjMwLCAxMjIsIDE0LCAzLCAyMzAsIDEyMywgMjksIDYyLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAzMiwgMTAxLCAKKyAgICAyNDYsIDE0NiwgMTAxLCAxNTUsIDE0LCAzLCAyMzAsIDEyMywgMjksIDMyLCAxMDEsIDI0MCwgMjA0LCAxNCwgMywgMjMwLCAKKyAgICAxMjMsIDI5LCAzMiwgMTAxLCAyMzAsIDEwOCwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMjUyLCAxODEsIDE0LCAzLCAyMzAsIAorICAgIDEyMywgMjksIDI1MiwgMTIyLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyNTEsIDIyNiwgMjA1LCAzNiwgMjEyLCA4OSwgMTQsIAorICAgIDMsIDIzMCwgMTIzLCAyOSwgMjUwLCAxNjcsIDE0LCAzLCAyMzAsIDEyMywgMjksIDI0OSwgMjQ0LCAxNCwgMywgMjMwLCAKKyAgICAxMjMsIDI5LCAyNDYsIDg4LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyNDMsIDQxLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyNDAsIAorICAgIDI0NCwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMjQwLCAyMDQsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIzOSwgMjAyLCAxNCwgMywgCisgICAgMjMwLCAxMjMsIDI5LCAyMzksIDIwMywgMTAxLCAyMzksIDIwMiwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMTU1LCAxNCwgMywgCisgICAgMjMwLCAxMjMsIDI5LCAyMzksIDEyNCwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMjM5LCAxMiwgMjksIDIyMywgMTczLCAxNCwgCisgICAgMywgMjMwLCAxMjMsIDI5LCAyMzMsIDEwNSwgMjM5LCAxOTIsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIzMywgODUsIDE0LCAzLCAKKyAgICAyMzAsIDEyMywgMjksIDIzMywgODYsIDEwMSwgMTU1LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMzMsIDg2LCAxMDEsIDIyOSwgCisgICAgODEsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIzMSwgMTIzLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMzEsIDEwOSwgMTQsIDMsIAorICAgIDIzMCwgMTIzLCAyOSwgMjMwLCAyMzQsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIzMCwgMjIzLCAxNCwgMywgMjMwLCAxMjMsIAorICAgIDI5LCAyMzAsIDIyNCwgMTAxLCAyMzksIDEyLCAxMDEsIDYyLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMzAsIDEyMiwgMTQsIAorICAgIDMsIDIzMCwgMTIzLCAyOSwgMjI5LCAxODYsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIyOSwgODEsIDE0LCAzLCAyMzAsIDEyMywgCisgICAgMjksIDIyOSwgNjcsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIyNywgMTE5LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMjcsIAorICAgIDEyMCwgMTAxLCAyNDMsIDQxLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMjYsIDY5LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAKKyAgICAyMjUsIDExMCwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMjE1LCAyMTUsIDEwMSwgMjEzLCAxNjAsIDE0LCAzLCAyMzAsIDEyMywgCisgICAgMjksIDIxNSwgMTYxLCAxMDEsIDI0MCwgMzYsIDEwMSwgMjQyLCAyMzAsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIxNSwgMTYxLCAKKyAgICAxMDEsIDI0MCwgMzYsIDIxMiwgODksIDE0LCAzLCAyMzAsIDEyMywgMjksIDIxNSwgMTE0LCAxNCwgMywgMjMwLCAxMjMsIAorICAgIDI5LCAyMTUsIDExNSwgMTAxLCAyMTUsIDExNCwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgMjEzLCAxNjAsIDE0LCAzLCAyMzAsIAorICAgIDEyMywgMjksIDIxMiwgMTk4LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMTIsIDE4NiwgMTQsIDMsIDIzMCwgMTIzLCAyOSwgCisgICAgMjEyLCAxMzIsIDEwMSwgMzIsIDEwMSwgMjEzLCAyMDQsIDEwMSwgMTk5LCAxNCwgMywgMjMwLCAxMjMsIDI5LCA3MSwgMTQsIAorICAgIDMsIDIzMCwgMTIzLCAyOSwgMTA2LCAxMDEsIDYyLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAxMDYsIDEwMSwgMTA2LCAxMDEsIAorICAgIDcxLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyMTAsIDIwLCAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjMwLCAxMjMsIDI5LCAKKyAgICAyMTAsIDgsIDE0LCAzLCAyMzAsIDEyMywgMjksIDIwOSwgMTcwLCAxNCwgMywgMjMwLCAxMjMsIDIxNCwgMTA2LCAxNCwgMywgCisgICAgMjMwLCAxMjAsIDE0LCAzLCAyMzAsIDEyMSwgMjksIDIxNSwgMjE0LCAxNCwgMywgMjMwLCAxMjEsIDI5LCAyMTUsIDIxNSwgCisgICAgMTAxLCAyMTMsIDE2MCwgMTQsIDMsIDIzMCwgMTIxLCAyMzksIDE5MiwgMTQsIDMsIDIzMCwgMTIxLCAyMzksIDE5MywgMTMxLCAKKyAgICAyMzAsIDEyMSwgMjM5LCAxOTMsIDIxNSwgMjE0LCAxNCwgMywgMjMwLCAxMTYsIDE0LCAzLCAyMzAsIDEwOCwgMTQsIDMsIAorICAgIDIzMCwgMTA5LCAyOSwgMjMwLCAxMDgsIDE0LCAzLCAyMzAsIDEwNiwgMTQsIDMsIDIzMCwgMTA3LCAyOSwgMjMwLCAyMTAsIAorICAgIDE0LCAzLCAyMzAsIDEwNywgMjksIDIzMCwgMjExLCAxMDEsIDIxOCwgNTAsIDE0LCAzLCAyMjksIDIzNSwgMTQsIDMsIDIyOSwgCisgICAgMjE4LCAxNCwgMywgMjI5LCAyMDgsIDE0LCAzLCAyMjksIDE4NiwgMTQsIDMsIDIyOSwgODEsIDE0LCAzLCAyMjksIDgyLCAKKyAgICAyOSwgMjUwLCAxNjcsIDE0LCAzLCAyMjksIDc5LCAxNCwgMywgMjI5LCA4MCwgMjksIDI1MiwgMTgxLCAxNCwgMywgMjI5LCAKKyAgICA4MCwgMjksIDI1MCwgMTY3LCAxNCwgMywgMjI5LCA4MCwgMjksIDI0MiwgMjEyLCAxNCwgMywgMjI5LCA4MCwgMjksIDI0MiwgCisgICAgMjEzLCAyMTIsIDg5LCAxNCwgMywgMjI5LCA4MCwgMjksIDI0MCwgMjEzLCAyMTIsIDg5LCAxNCwgMywgMjI5LCA4MCwgMjksIAorICAgIDIzOSwgMTIsIDI5LCAyNTAsIDE2NywgMTQsIDMsIDIyOSwgODAsIDI5LCAyMzMsIDg1LCAxNCwgMywgMjI5LCA4MCwgMjksIAorICAgIDIzMiwgNTIsIDE0LCAzLCAyMjksIDgwLCAyOSwgMjMyLCA1MCwgMTQsIDMsIDIyOSwgODAsIDI5LCAyMzIsIDUxLCAxMDEsIAorICAgIDI1MSwgMjI1LCAxNCwgMywgMjI5LCA4MCwgMjksIDIzMSwgMTIzLCAxNCwgMywgMjI5LCA4MCwgMjksIDIzMCwgMTQyLCAKKyAgICAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjI5LCA4MCwgMjksIDIzMCwgMTIyLCAxNCwgMywgMjI5LCA4MCwgMjksIDIyNywgCisgICAgMTIwLCAxMDEsIDI0MywgNDEsIDE0LCAzLCAyMjksIDgwLCAyOSwgMjI1LCAxMTAsIDE0LCAzLCAyMjksIDgwLCAyOSwgMjIzLCAKKyAgICAyMTcsIDE0LCAzLCAyMjksIDgwLCAyOSwgMjE1LCA4MSwgMTAxLCAyNTEsIDIyNSwgMTQsIDMsIDIyOSwgODAsIDI5LCAyMTUsIAorICAgIDYwLCAxMDEsIDI0OSwgMTAxLCAxNCwgMywgMjI5LCA4MCwgMjksIDIxMCwgMTY0LCAxNCwgMywgMjI5LCA4MCwgMjEyLCA4OSwgCisgICAgMTQsIDMsIDIyOSwgODAsIDI0NywgNTQsIDIyOSwgNzksIDE0LCAzLCAyMjksIDgwLCAyMjIsIDEyOSwgMjI5LCA3OSwgMTQsIAorICAgIDMsIDIyOSwgODAsIDIxNCwgMTA2LCAxNCwgMywgMjI5LCA4MCwgMjE1LCAxOTYsIDE0LCAzLCAyMjksIDc4LCAxNCwgMywgCisgICAgMjI5LCA3MiwgMTQsIDMsIDIyOSwgNzMsIDEzMSwgMjI5LCA3MiwgMTQsIDMsIDIyOSwgNzMsIDIyMiwgMTI5LCAyMjksIDcyLCAKKyAgICAxNCwgMywgMjI5LCA3MywgMjE1LCAxOTYsIDE0LCAzLCAyMjksIDcwLCAxNCwgMywgMjI5LCA2NywgMTQsIDMsIDIyOSwgNjUsIAorICAgIDE0LCAzLCAyMjksIDY2LCAxMzEsIDIyOSwgNjUsIDE0LCAzLCAyMjksIDY2LCAxMzEsIDIyOSwgNjYsIDI0MCwgMjA1LCAKKyAgICAxMzEsIDI0MCwgMjA0LCAxNCwgMywgMTg1LCAxNCwgMywgMjI4LCAyMCwgMjksIDIxMiwgMTg2LCAxNCwgMywgMjI4LCAyMCwgCisgICAgMjM5LCAxOTIsIDE0LCAzLCAyMjgsIDE5LCAxNCwgMywgMjI3LCAyNDcsIDE0LCAzLCAyMjcsIDE5OSwgMTQsIDMsIDIyNywgCisgICAgMTc4LCAxNCwgMywgMjI3LCAxNzcsIDE0LCAzLCAyMjcsIDExOSwgMTQsIDMsIDIyNywgNzEsIDE0LCAzLCAyMjYsIDI1NCwgCisgICAgMTQsIDMsIDIyNiwgMjA5LCAxNCwgMywgMjI2LCAxMTQsIDE0LCAzLCAyMjYsIDExNSwgMTMxLCAyMjYsIDExNCwgMTQsIDMsIAorICAgIDIyNiwgMTAzLCAxNCwgMywgMjI2LCAxMDQsIDIzOSwgMTkyLCAxNCwgMywgMjI2LCA4NywgMTQsIDMsIDIyNiwgNzMsIDE0LCAKKyAgICAzLCAyMjYsIDY5LCAxNCwgMywgMjI2LCA3MCwgMjksIDYyLCAxNCwgMywgMjI2LCA3MCwgMjksIDIzMCwgMjEwLCAxNCwgMywgCisgICAgMjI2LCA3MCwgMjksIDIwNSwgMTE2LCAxNCwgMywgMjI2LCA3MCwgMTMxLCAyMjYsIDY5LCAxNCwgMywgMjI2LCA3MCwgMTMxLCAKKyAgICAyMjYsIDcwLCAyOSwgMzIsIDEwMSwgMTk5LCAxNCwgMywgMjI2LCA3MCwgMjQ3LCA1NCwgMjI2LCA2OSwgMTQsIDMsIDIyNiwgCisgICAgNjcsIDE0LCAzLCAyMjYsIDY4LCAyOSwgNjIsIDE0LCAzLCAyMjYsIDY4LCAyOSwgMzIsIDEwMSwgMjQ1LCAxNjgsIDE0LCAzLCAKKyAgICAyMjYsIDY4LCAyOSwgMjQ1LCAxNjgsIDE0LCAzLCAyMjYsIDY4LCAyMzksIDE5MiwgMTQsIDMsIDE5OSwgMTQsIDMsIDIyNSwgCisgICAgMjM1LCAxNCwgMywgMjI1LCAyMjIsIDE0LCAzLCAyMjUsIDIyMywgMjMzLCAxLCAxNCwgMywgMjI1LCAyMjMsIDI5LCAyMTUsIAorICAgIDExNywgMjEyLCA4OSwgMTQsIDMsIDIyNSwgMjIzLCAyMjIsIDEyOSwgMjI1LCAyMjIsIDE0LCAzLCAyMjUsIDIyMSwgMTQsIAorICAgIDMsIDIyNSwgMjE0LCAyMjMsIDE1OSwgMTQsIDMsIDIyNSwgMjEzLCAxNCwgMywgMjI1LCAyMTIsIDE0LCAzLCAyMjUsIDExMCwgCisgICAgMTQsIDMsIDIyNSwgMTExLCAyOSwgNjIsIDE0LCAzLCAyMjUsIDExMSwgMjksIDIxMCwgOCwgMTQsIDMsIDIyNSwgMTExLCAKKyAgICAyMTUsIDE5NiwgMTQsIDMsIDIyNCwgMjMwLCAxNCwgMywgMjI0LCAyMzEsIDI5LCA3NSwgMTQsIDMsIDIyNCwgMjI5LCAxNCwgCisgICAgMywgMjI0LCAyMDAsIDE0LCAzLCAyMjQsIDIwMSwgMjksIDI0MCwgMjEzLCAyMTIsIDg5LCAxNCwgMywgMjI0LCAyMDEsIDI5LCAKKyAgICAyNDAsIDIwNSwgMTAxLCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIDIyNCwgMTk2LCAxNCwgMywgMjI0LCAxOTcsIDI5LCAKKyAgICAyNTIsIDEyMiwgMTQsIDMsIDIyNCwgMTk3LCAyOSwgMjUxLCAyMjUsIDE0LCAzLCAyMjQsIDE5NywgMjksIDI1MSwgMjI2LCAKKyAgICAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjI0LCAxOTcsIDI5LCAyMzksIDIwMiwgMTQsIDMsIDIyNCwgMTk3LCAyOSwgMjI3LCAKKyAgICAxMjAsIDEwMSwgMjQwLCAyMTMsIDIxMiwgODksIDE0LCAzLCAyMjQsIDE5NywgMjksIDIyNSwgMTEwLCAxNCwgMywgMjI0LCAKKyAgICAxOTcsIDI5LCAyMjMsIDE3MywgMTQsIDMsIDIyNCwgMTk3LCAyOSwgMjE1LCAyMTQsIDE0LCAzLCAyMjQsIDE5NywgMjksIAorICAgIDIxNSwgMjE1LCAxMDEsIDMyLCAyNTIsIDEyMiwgMTQsIDMsIDIyNCwgMTk3LCAyOSwgMjE1LCAyMTUsIDEwMSwgMjUxLCAKKyAgICAyMjUsIDE0LCAzLCAyMjQsIDE5NywgMjksIDIxNSwgMjE1LCAxMDEsIDI1MSwgMjI2LCAxMDEsIDI1MSwgMjI1LCAxNCwgMywgCisgICAgMjI0LCAxOTcsIDI5LCAyMTAsIDIwLCAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjI0LCAxOTcsIDI5LCAyMDksIDE3MCwgMTQsIAorICAgIDMsIDIyNCwgMTg1LCAxNCwgMywgMjIzLCAyMTcsIDE0LCAzLCAyMjMsIDE4OSwgMTQsIDMsIDIyMywgMTczLCAxNCwgMywgCisgICAgMjIzLCAxNzQsIDIzMCwgMTIxLCAyOSwgMjQwLCAyMDQsIDE0LCAzLCAyMjMsIDE3NCwgMjMwLCAxMjEsIDI5LCAyMjcsIAorICAgIDE3OCwgMTQsIDMsIDIyMywgMTc0LCAyMzAsIDEyMSwgMjksIDIxNywgMTcyLCAxNCwgMywgMjIzLCAxNzQsIDIzMCwgMTIxLCAKKyAgICAyOSwgMjE3LCAxNzMsIDEzMSwgMjIzLCAxNzQsIDIzMCwgMTIxLCAyOSwgMjE3LCAxNzIsIDE0LCAzLCAyMjMsIDE3NCwgCisgICAgMjMwLCAxMjEsIDI5LCAyMDksIDE3MCwgMTQsIDMsIDIyMywgMTc0LCAyMTIsIDg5LCAxNCwgMywgMjIzLCAxNzQsIDEzMSwgCisgICAgMjIzLCAxNzMsIDE0LCAzLCAyMjMsIDE3NCwgMjQ3LCA1NCwgMjIzLCAxNzMsIDE0LCAzLCAyMjMsIDE3NCwgMjQ3LCA1NCwgCisgICAgMjIzLCAxNzQsIDIzMCwgMTIxLCAxMzEsIDIzMCwgMTIwLCAxNCwgMywgMjIzLCAxNjgsIDE0LCAzLCAyMjMsIDE2OSwgMjUzLCAKKyAgICAzMywgMjksIDI1MSwgMjE5LCAxNCwgMywgMjIzLCAxNjksIDI1MywgMzMsIDI5LCAyNDksIDI0NCwgMTQsIDMsIDIyMywgCisgICAgMTY5LCAyNTMsIDMzLCAyOSwgMjQzLCAyMzMsIDE0LCAzLCAyMjMsIDE2OSwgMjUzLCAzMywgMjksIDIzOSwgMjAyLCAxNCwgCisgICAgMywgMjIzLCAxNjksIDI1MywgMzMsIDI5LCAyMzMsIDEwNSwgMjM5LCAxOTIsIDE0LCAzLCAyMjMsIDE2OSwgMjUzLCAzMywgCisgICAgMjksIDIzMiwgNTAsIDE0LCAzLCAyMjMsIDE2OSwgMjUzLCAzMywgMjksIDIzMCwgMTQxLCAxNCwgMywgMjIzLCAxNjksIAorICAgIDI1MywgMzMsIDI5LCAyMjUsIDExMCwgMTQsIDMsIDIyMywgMTY5LCAyNTMsIDMzLCAyOSwgMjE1LCA1NywgMTQsIDMsIDIyMywgCisgICAgMTY5LCAyNTMsIDMzLCAyOSwgMjEwLCAxOSwgMTQsIDMsIDIyMywgMTY5LCAyMzEsIDk0LCAyOSwgMjQ5LCAyNDQsIDE0LCAzLCAKKyAgICAyMjMsIDE2OSwgMjMxLCA5NCwgMjksIDI0OSwgMjQ1LCA3MSwgMTQsIDMsIDE3OSwgMTQsIDMsIDIyMiwgNDIsIDE0LCAzLCAKKyAgICAyMjIsIDYsIDE0LCAzLCAyMjEsIDIzNiwgMTQsIDMsIDIyMSwgMTA3LCAxNCwgMywgMjIxLCA1MywgMTQsIDMsIDIyMSwgNTQsIAorICAgIDI5LCA2MiwgMTQsIDMsIDIyMSwgNTQsIDI5LCAyNTMsIDExNSwgMTQsIDMsIDIyMSwgNTQsIDI5LCAyNDksIDI0NCwgMTQsIAorICAgIDMsIDIyMSwgNTQsIDI5LCAyNDksIDEwMSwgMTQsIDMsIDIyMSwgNTQsIDI5LCA3NSwgMTQsIDMsIDIyMSwgNTQsIDI5LCA3NCwgCisgICAgMTQsIDMsIDIyMSwgNTQsIDI5LCAyMzcsIDE4NSwgMTQsIDMsIDIyMSwgNTQsIDI5LCA3MSwgMTQsIDMsIDIyMSwgNTQsIDI5LCAKKyAgICAyMTAsIDE5LCAxNCwgMywgMjIxLCA1NCwgMjQ3LCA1NCwgMjIxLCA1MywgMTQsIDMsIDIyMCwgMjUxLCAxNCwgMywgMjIwLCAKKyAgICAyNTIsIDI5LCAyMzIsIDMxLCAxNCwgMywgMjIwLCAyNTIsIDI5LCAyMTAsIDgsIDE0LCAzLCAyMjAsIDI1MiwgMjksIDIwNSwgCisgICAgMTE2LCAxNCwgMywgMjIwLCAyNTIsIDIyMiwgMTI5LCAyMjAsIDI1MSwgMTQsIDMsIDIxOSwgMTEzLCAxNCwgMywgMjE5LCAKKyAgICAxMDcsIDE0LCAzLCAyMTgsIDIwOCwgMTQsIDMsIDIxOCwgNTAsIDE0LCAzLCAyMTcsIDE5OSwgMTQsIDMsIDIxNywgMTg2LCAKKyAgICAyMjMsIDE1OSwgMTQsIDMsIDIxNywgMTg1LCAxNCwgMywgMjE3LCAxODYsIDI5LCA2MiwgMTQsIDMsIDIxNywgMTg2LCAyOSwgCisgICAgMjQzLCAyMzcsIDE0LCAzLCAyMTcsIDE4NiwgMjksIDI0MywgMjM1LCAxNCwgMywgMjE3LCAxODYsIDI5LCAxNTUsIDE0LCAzLCAKKyAgICAyMTcsIDE4NiwgMjksIDIzMiwgMzUsIDE0LCAzLCAyMTcsIDE4NiwgMjksIDIzMCwgMjEwLCAxNCwgMywgMjE3LCAxODYsIAorICAgIDI5LCAyMjksIDY1LCAxNCwgMywgMjE3LCAxODYsIDI5LCAyMjYsIDI1NCwgMTQsIDMsIDIxNywgMTg2LCAyOSwgMjIzLCAKKyAgICAxNzMsIDE0LCAzLCAyMTcsIDE4NiwgMjksIDIxNywgMTcyLCAxNCwgMywgMjE3LCAxODYsIDI5LCAyMTUsIDE4MSwgMTQsIDMsIAorICAgIDIxNywgMTg2LCAyOSwgMjEyLCAyMDcsIDE0LCAzLCAyMTcsIDE4NiwgMjksIDIxMCwgMTksIDE0LCAzLCAyMTcsIDE4NiwgCisgICAgMjksIDIxMCwgMTQsIDE0LCAzLCAyMTcsIDE4NiwgMjksIDIwOSwgMjQxLCAxNCwgMywgMjE3LCAxODYsIDI5LCAyMDksIAorICAgIDE5NCwgMTQsIDMsIDIxNywgMTg2LCAyOSwgMjA5LCAxNzAsIDE0LCAzLCAyMTcsIDE4NiwgMTMxLCAyMTcsIDE4NSwgMTQsIAorICAgIDMsIDIxNywgMTg2LCAyMzksIDE5MiwgMTQsIDMsIDIxNywgMTcyLCAxNCwgMywgMjE3LCAxNzMsIDIzMCwgMTIzLCAyOSwgCisgICAgMjUxLCAyMjMsIDE0LCAzLCAyMTcsIDE0NiwgMTQsIDMsIDIxNywgMTM4LCAxNCwgMywgMjE2LCAyLCAxNCwgMywgMjE2LCAwLCAKKyAgICAxNCwgMywgMjE2LCAxLCAyOSwgNjIsIDE0LCAzLCAyMTYsIDEsIDI5LCAyNTAsIDE2NywgMTQsIDMsIDIxNiwgMSwgMjksIAorICAgIDI0MCwgMzUsIDE0LCAzLCAyMTYsIDEsIDI5LCAyMjUsIDExMCwgMTQsIDMsIDIxNiwgMSwgMjksIDIxNSwgMTE0LCAxNCwgMywgCisgICAgMjE2LCAxLCAyOSwgMjEwLCAxNDksIDE0LCAzLCAyMTYsIDEsIDI5LCA3MSwgMTQsIDMsIDIxNiwgMSwgMjksIDEwNiwgMTAxLCAKKyAgICA2MiwgMTQsIDMsIDIxNSwgMjU1LCAxNCwgMywgMjE1LCAyNTMsIDE0LCAzLCAyMTUsIDIzMCwgMTQsIDMsIDIxNSwgMjE0LCAKKyAgICAxNCwgMywgMjE1LCAyMTUsIDIzOCwgNDIsIDE0LCAzLCAyMTUsIDIxNSwgMTMxLCAyMTUsIDIxNSwgMjQwLCAyMzYsIDEzMSwgCisgICAgMjQwLCAyMzYsIDI0MCwgMjA1LCAxMzEsIDI0MCwgMjA0LCAxNCwgMywgMjE1LCAyMTUsIDEzMSwgMjE1LCAyMTUsIDIxMiwgCisgICAgMjA4LCAxMzEsIDIxMiwgMjA4LCAyNDAsIDIwNSwgMTMxLCAyNDAsIDIwNCwgMTQsIDMsIDIxNSwgMjA3LCAxNCwgMywgMjE1LCAKKyAgICAyMDIsIDE0LCAzLCAyMTUsIDE5OSwgMTQsIDMsIDIxNSwgMTk4LCAxNCwgMywgMjE1LCAxOTUsIDE0LCAzLCAyMTUsIDE4MSwgCisgICAgMTQsIDMsIDIxNSwgMTgyLCAyOSwgNjIsIDE0LCAzLCAyMTUsIDE4MiwgMjksIDIzMywgODUsIDE0LCAzLCAyMTUsIDE3NSwgCisgICAgMTQsIDMsIDIxNSwgMTc2LCAyOSwgNjIsIDE0LCAzLCAyMTUsIDE3NiwgMjksIDI1MCwgMTUxLCAxNCwgMywgMjE1LCAxNzYsIAorICAgIDI5LCAyNDksIDc5LCAxNCwgMywgMjE1LCAxNzYsIDI5LCAyNDUsIDExMywgMTQsIDMsIDIxNSwgMTc2LCAyOSwgMjQwLCAKKyAgICAyMDQsIDE0LCAzLCAyMTUsIDE3NiwgMjksIDIzMywgMTA0LCAxNCwgMywgMjE1LCAxNzYsIDI5LCAyMzMsIDEwNSwgMjM5LCAKKyAgICAxOTIsIDE0LCAzLCAyMTUsIDE3NiwgMjksIDIzMCwgMjA1LCAxNCwgMywgMjE1LCAxNzYsIDI5LCAyMjksIDY3LCAxNCwgMywgCisgICAgMjE1LCAxNzYsIDI5LCAyMjYsIDEwMywgMTQsIDMsIDIxNSwgMTc2LCAyOSwgMjE3LCAxNzIsIDE0LCAzLCAyMTUsIDE2OSwgCisgICAgMTQsIDMsIDIxNSwgMTY0LCAxNCwgMywgMjE1LCAxNjUsIDIxMiwgODksIDE0LCAzLCAyMTUsIDE2NSwgMTMxLCAyMTUsIAorICAgIDE2NSwgMjQ5LCA2OSwgMTMxLCAyNDksIDY4LCAxNCwgMywgMjE1LCAxNjAsIDE0LCAzLCAyMTUsIDExNiwgMTQsIDMsIDIxNSwgCisgICAgMTE3LCAxMzEsIDIzMywgMiwgMjE1LCAxMTYsIDE0LCAzLCAyMTUsIDExNCwgMTQsIDMsIDIxNSwgMTEzLCAxNCwgMywgMjE1LCAKKyAgICA4MCwgMTQsIDMsIDIxNSwgODEsIDIzOSwgMTkyLCAxNCwgMywgMjE1LCA2OCwgMTQsIDMsIDIxNSwgNjYsIDE0LCAzLCAyMTUsIAorICAgIDY3LCAxMzEsIDIxNSwgNjcsIDIxNSwgMTE0LCAxNCwgMywgMjE1LCA1OSwgMTQsIDMsIDIxNSwgNTcsIDE0LCAzLCAyMTMsIAorICAgIDIwMywgMTQsIDMsIDIxMywgMjA0LCAxMzEsIDIxMywgMjAzLCAxNCwgMywgMjEzLCAxNzIsIDE0LCAzLCAyMTMsIDE3MSwgCisgICAgMTQsIDMsIDIxMywgMTY5LCAxNCwgMywgMjEzLCAxNjAsIDE0LCAzLCAyMTMsIDE1OSwgMTQsIDMsIDIxMywgMTMzLCAxNCwgCisgICAgMywgMjEzLCAxMzIsIDE0LCAzLCAyMTIsIDIxOSwgMTQsIDMsIDIxMiwgMjIwLCAyNTEsIDIwOSwgMTQsIDMsIDIxMiwgMjIwLCAKKyAgICAyOSwgMjM5LCAxMSwgMTQsIDMsIDIxMiwgMjIwLCAyOSwgMjI2LCAyNTQsIDE0LCAzLCAyMTIsIDIyMCwgMjM5LCAxOTIsIAorICAgIDE0LCAzLCAyMTIsIDIwNywgMTQsIDMsIDIxMiwgMjA4LCAxMzEsIDIxMiwgMjA4LCAyMjQsIDIzMSwgMTMxLCAyMjQsIDIzMSwgCisgICAgMjQ1LCA5NSwgMTMxLCAyNDUsIDk0LCAxNCwgMywgMjEyLCAyMDgsIDIxNCwgMTA2LCAxNCwgMywgMjEyLCAxOTgsIDE0LCAzLCAKKyAgICAxNTAsIDI5LCAyNDksIDI0NCwgMTQsIDMsIDE1MCwgMjksIDIzOSwgMjAyLCAxNCwgMywgMTUwLCAyOSwgMjE1LCAyMTQsIAorICAgIDE0LCAzLCAxNTAsIDI5LCAyMTUsIDExNiwgMTQsIDMsIDE1MCwgMjksIDIxMCwgMTY0LCAxNCwgMywgMTUwLCAyOSwgMjEwLCAKKyAgICA4LCAxNCwgMywgMjEyLCAxODYsIDE0LCAzLCAyMTIsIDE2MiwgMTQsIDMsIDIxMiwgMTMxLCAxNCwgMywgMjEyLCAxMzIsIAorICAgIDIzOSwgMTkyLCAxNCwgMywgMjExLCAyMTEsIDE0LCAzLCAyMTEsIDIxMiwgMjEyLCA4OSwgMTQsIDMsIDIxMSwgMTgyLCAxNCwgCisgICAgMywgMjExLCAxNjIsIDE0LCAzLCAyMTEsIDE2MywgMjksIDIxMiwgMTg2LCAxNCwgMywgMjExLCAxNjMsIDEzMSwgMjExLCAKKyAgICAxNjIsIDE0LCAzLCAyMTEsIDE2MywgMTMxLCAyMTEsIDE2MywgMjQwLCAyMzYsIDEzMSwgMjQwLCAyMzYsIDI0MCwgMjA1LCAKKyAgICAxMzEsIDI0MCwgMjA0LCAxNCwgMywgMjEwLCAxNzAsIDE0LCAzLCAyMTAsIDE2NCwgMTQsIDMsIDIxMCwgMTYyLCAxNCwgMywgCisgICAgMjEwLCAxNTksIDE0LCAzLCAyMTAsIDE0OSwgMTQsIDMsIDIxMCwgMTUwLCAxMzEsIDIxMCwgMTUwLCAyMDUsIDExNywgMTMxLCAKKyAgICAyMDUsIDExNiwgMTQsIDMsIDcxLCAxNCwgMywgMTA2LCAyMzksIDIwMiwgMTQsIDMsIDEwNiwgMTA2LCA3MSwgMTQsIDMsIAorICAgIDEwNiwgMTMxLCAxMDYsIDIyMiwgNTIsIDEzMSwgMjIyLCA1MiwgMjQwLCAyMDUsIDEzMSwgMjQwLCAyMDQsIDE0LCAzLCAKKyAgICAxMDYsIDEzMSwgMTA2LCAyMTMsIDEzNCwgMTMxLCAyMTMsIDEzMywgMTQsIDMsIDEwNiwgMTMxLCAxMDYsIDEwNiwgMjE4LCAKKyAgICAyMjQsIDEzMSwgMTA2LCAyMTgsIDIyMywgMTQsIDMsIDIxMCwgMTksIDE0LCAzLCAyMTAsIDE0LCAxNCwgMywgMjEwLCA4LCAKKyAgICAxNCwgMywgMjEwLCA5LCAyMzAsIDIwNSwgMTQsIDMsIDIxMCwgOSwgMjksIDI1MCwgMTY3LCAxNCwgMywgMjEwLCA5LCAyOSwgCisgICAgMjI2LCAyNTQsIDE0LCAzLCAyMTAsIDksIDI5LCAxMDYsIDEwMSwgMTA2LCAxMDEsIDcxLCAxNCwgMywgMjEwLCA5LCAyOSwgCisgICAgMTA2LCAxMDEsIDEwNiwgMTAxLCAxMDYsIDIzOSwgMTkyLCAxNCwgMywgMjEwLCA5LCAyMzksIDE5MiwgMTQsIDMsIDIxMCwgCisgICAgOSwgMjE1LCAxOTYsIDE0LCAzLCAyMTAsIDksIDIxNSwgMTk3LCAyOSwgMjUwLCAxNjcsIDE0LCAzLCAyMTAsIDQsIDE0LCAzLCAKKyAgICAyMDksIDI0MSwgMTQsIDMsIDIwOSwgMjQyLCAyOSwgMjMwLCAxMjIsIDE0LCAzLCAyMDksIDI0MiwgMjksIDIyNywgMTIwLCAKKyAgICAxMDEsIDI0NiwgMTQ1LCAxNCwgMywgMjA5LCAyNDIsIDI5LCAyMTYsIDAsIDE0LCAzLCAyMDksIDI0MiwgMjksIDcxLCAxNCwgCisgICAgMywgMjA5LCAyNDAsIDE0LCAzLCAyMDksIDIzNiwgMTQsIDMsIDIwOSwgMjM3LCAyOSwgMjMxLCAyNTQsIDE0LCAzLCAyMDksIAorICAgIDIzNywgMjksIDE3OSwgMTQsIDMsIDIwOSwgMjM0LCAxNCwgMywgMjA5LCAyMzUsIDIzOSwgMTkyLCAxNCwgMywgMjA5LCAKKyAgICAxOTQsIDE0LCAzLCAyMDksIDE5NSwgMjQ3LCA1NCwgMjA5LCAxOTQsIDE0LCAzLCAyMDksIDE5NSwgMjE1LCAxOTYsIDE0LCAKKyAgICAzLCAyMDksIDE5MiwgMTQsIDMsIDIwOSwgMTkzLCAyOSwgMzIsIDEwMSwgMTU1LCAxNCwgMywgMjA5LCAxOTMsIDI5LCAzMiwgCisgICAgMTAxLCAxOTksIDE0LCAzLCAyMDksIDE5MywgMjksIDI1MiwgMTgxLCAxNCwgMywgMjA5LCAxOTMsIDI5LCAxNTUsIDE0LCAzLCAKKyAgICAyMDksIDE5MywgMjksIDIyMywgMTczLCAxNCwgMywgMjA5LCAxOTMsIDI5LCAyMTAsIDE5LCAxNCwgMywgMjA5LCAxOTMsIAorICAgIDI5LCAyMTAsIDIwLCAxMDEsIDI1MSwgMjI1LCAxNCwgMywgMjA5LCAxOTMsIDI5LCAyMTAsIDIwLCAxMDEsIDI0OSwgMjQ0LCAKKyAgICAxNCwgMywgMjA5LCAxOTEsIDE0LCAzLCAyMDksIDE4OCwgMTQsIDMsIDIwOSwgMTg3LCAxNCwgMywgMjA5LCAxODMsIDE0LCAKKyAgICAzLCAyMDksIDE4NCwgMjksIDYyLCAxNCwgMywgMjA5LCAxODQsIDI5LCAyNTEsIDIxOSwgMTQsIDMsIDIwOSwgMTg0LCAyOSwgCisgICAgMTM0LCAxNCwgMywgMjA5LCAxODQsIDI5LCAyNDMsIDIyNywgMTQsIDMsIDIwOSwgMTg0LCAyOSwgMjQwLCAyNDQsIDE0LCAzLCAKKyAgICAyMDksIDE4NCwgMjksIDI0MCwgMjI2LCAxNCwgMywgMjA5LCAxODQsIDI5LCAyNDAsIDIxMywgMjEyLCA4OSwgMTQsIDMsIAorICAgIDIwOSwgMTg0LCAyOSwgMjQwLCAyMDQsIDE0LCAzLCAyMDksIDE4NCwgMjksIDIzOSwgMjEzLCAxNCwgMywgMjA5LCAxODQsIAorICAgIDI5LCAxNTUsIDE0LCAzLCAyMDksIDE4NCwgMjksIDIzMywgMTA0LCAxNCwgMywgMjA5LCAxODQsIDI5LCAyMzMsIDg1LCAxNCwgCisgICAgMywgMjA5LCAxODQsIDI5LCAyMzIsIDIyOCwgMTQsIDMsIDIwOSwgMTg0LCAyOSwgMjMxLCAxMjMsIDE0LCAzLCAyMDksIAorICAgIDE4NCwgMjksIDIyOSwgNjUsIDE0LCAzLCAyMDksIDE4NCwgMjksIDIyNiwgMjA5LCAxNCwgMywgMjA5LCAxODQsIDI5LCAKKyAgICAxNzksIDE0LCAzLCAyMDksIDE4NCwgMjksIDIxNSwgMjE0LCAxNCwgMywgMjA5LCAxODQsIDI5LCAyMTUsIDY2LCAxNCwgMywgCisgICAgMjA5LCAxODQsIDI5LCAyMTAsIDE3MCwgMTQsIDMsIDIwOSwgMTg0LCAyOSwgMTA2LCAxMDEsIDIzOSwgMjAyLCAxNCwgMywgCisgICAgMjA5LCAxODQsIDI5LCAyMTAsIDgsIDE0LCAzLCAyMDksIDE4NCwgMjksIDIwOSwgMTgxLCAxNCwgMywgMjA5LCAxODEsIDE0LCAKKyAgICAzLCAyMDksIDE4MiwgMjksIDcxLCAxNCwgMywgMjA5LCAxNzAsIDE0LCAzLCAyMDksIDE3MSwgMjksIDYyLCAxNCwgMywgCisgICAgMjA5LCAxNzEsIDI5LCAyMzAsIDIzNiwgMTQsIDMsIDIwOSwgMTcxLCAyOSwgMjMwLCAyMTAsIDE0LCAzLCAyMDksIDE3MSwgCisgICAgMjksIDIxMiwgMTg2LCAxNCwgMywgMjA5LCAxNjYsIDE0LCAzLCAyMDksIDE2OSwgMTQsIDMsIDIwOSwgMTY3LCAxNCwgMywgCisgICAgMjA5LCAxNjMsIDE0LCAzLCAyMDksIDE1MSwgMTQsIDMsIDIwOSwgMTUyLCAyOSwgMjMxLCAyNTQsIDE0LCAzLCAyMDksIAorICAgIDE1MCwgMTQsIDMsIDIwNSwgMTE2LCAxNCwgMywgMjA1LCAxMTcsIDIxMiwgODksIDE0LCAzLCAyMDUsIDExNywgOTgsIDI5LCAKKyAgICAyMzAsIDIxMCwgMTQsIDMsIDIwNSwgMTEzLCAxNCwgMywgMjA1LCAxMDYsIDE0LCAzLCAyMDUsIDkyLCAxNCwgMywgMjA1LCAKKyAgICA0MCwgMTQsIDMsIDIwNSwgNDEsIDEzMSwgMjA1LCA0MCwgMTQsIDMsIDIwNSwgMzksIDE0LCAzLCAyMDUsIDM3LCAxNCwgMywgCisgICAgMjA1LCAzOCwgMjMyLCA1NCwgMjEyLCA4OSwgMTQsIDMsIDIwNSwgMzIsIDE0LCAzLCAyMDUsIDI0LCAxNCwgMywgMjA1LCA5LCAKKyAgICAxNCwgMywgMjA1LCA3LCAxNCwgMywgMjA1LCA4LCAyOSwgNjIsIDE0LCAzLCAyMDUsIDYsIDE0LCAzLCAyMDUsIDUsIDE0LCAKKyAgICAzLCAyMzIsIDIxLCAyNDMsIDY1LCAxNCwgMywgMjUzLCAxMTYsIDI5LCAyMjMsIDE3MywgMTQsIDMsIDI1MywgMzMsIDI5LCAKKyAgICA2MiwgMTQsIDMsIDI1MiwgMTMzLCAyOSwgMjMwLCAyMjUsIDE0LCAzLCAyNDYsIDEzNywgMjMxLCA5NCwgMjksIDIxMCwgMjAsIAorICAgIDEwMSwgMjI3LCAxNzgsIDE0LCAzLCAyNDYsIDEzNSwgMTQsIDMsIDI0NSwgOTUsIDEwMSwgMjE1LCAxMTYsIDE0LCAzLCAKKyAgICAyNDMsIDIzNiwgMjksIDIxNSwgMjE0LCAxNCwgMywgMjQyLCAxNDQsIDI5LCAyMzksIDIwMiwgMTQsIDMsIDI0MiwgMTQ0LCAKKyAgICAyOSwgMjE1LCAyMTQsIDE0LCAzLCAyNDAsIDI0MywgMjksIDI1MiwgMTIzLCAxMDEsIDIzMiwgMzYsIDEwMSwgNjIsIDE0LCAKKyAgICAzLCAyNDAsIDI0MywgMjksIDI1MSwgMjIzLCAxNCwgMywgMjQwLCAxNjksIDE0LCAzLCAyNDAsIDUxLCAxNCwgMywgMjM4LCAKKyAgICAyMSwgMTQsIDMsIDIzMiwgNjYsIDI5LCAyNTIsIDkzLCAxNCwgMywgMjMyLCA2NiwgMjksIDI1MSwgMjIyLCAxNCwgMywgCisgICAgMjMyLCA2NiwgMjksIDI0MCwgMzUsIDE0LCAzLCAyMzIsIDY2LCAyOSwgMjM5LCAyMDIsIDE0LCAzLCAyMzIsIDY2LCAyOSwgCisgICAgMjM5LCAxMiwgMjksIDI1MSwgMjIzLCAxNCwgMywgMjMyLCA2NiwgMjksIDIyOSwgNjUsIDE0LCAzLCAyMzIsIDY2LCAyOSwgCisgICAgMTc5LCAxNCwgMywgMjMyLCA2NiwgMjksIDIxNSwgMTA5LCAxNCwgMywgMjMyLCA2NiwgMjksIDIxMCwgMTcwLCAxNCwgMywgCisgICAgMjMyLCA2NiwgMjksIDIwOSwgMTkyLCAxNCwgMywgMjMwLCAxMjMsIDI5LCAyNDAsIDYxLCAxNCwgMywgMjI5LCA4MCwgMjE1LCAKKyAgICAxOTcsIDI5LCAyNTAsIDE2NywgMTQsIDMsIDIyOSwgODAsIDI5LCAyNDIsIDIxMywgMTAxLCAyMzAsIDEwOCwgMTQsIDMsIAorICAgIDIyOSwgODAsIDI5LCAyMTUsIDExNiwgMTQsIDMsIDIyNywgNzAsIDE0LCAzLCAyMjYsIDY4LCAyOSwgMjA1LCAxMTYsIDE0LCAKKyAgICAzLCAyMjUsIDIzNCwgMTQsIDMsIDIyNCwgMTk5LCAxNCwgMywgMjI0LCAxOTgsIDE0LCAzLCAyMjQsIDE5NywgMjksIDI1MCwgCisgICAgMTUxLCAxNCwgMywgMjI0LCAxOTcsIDI5LCAyNDAsIDYxLCAxNCwgMywgMjIzLCAxOTAsIDIxOCwgOTcsIDIyNCwgMTkxLCAKKyAgICAyNDUsIDI0NCwgMTQsIDMsIDIyMSwgMTA4LCAyNTEsIDIwOSwgMTQsIDMsIDIyMCwgMjU1LCAxNCwgMywgMjE3LCAxODYsIAorICAgIDI5LCAyMzMsIDEwNSwgMjM5LCAxOTIsIDE0LCAzLCAyMTEsIDIxMCwgMTQsIDMsIDIwOSwgMjQyLCAyOSwgMjI3LCAxMTksIAorICAgIDE0LCAxMzMsIDMsIDExOCwgMjUxLCAyMjUsIDE0LCAxMzMsIDMsIDEyOSwgMjUxLCAyMjUsIDE0LCAxMzMsIDMsIDI0MSwgCisgICAgMTI1LCAyNTEsIDIyNSwgMTQsIDEzMywgMywgMjQxLCAyMDQsIDI1MSwgMjI1LCAxNCwgMTMzLCAzLCAyMTUsIDEwLCAyNTEsIAorICAgIDIyNSwgMTQsIDEzMywgMywgMjE2LCAyMywgMjUxLCAyMjUsIDE0LCAxMzMsIDMsIDI0MywgODgsIDI1MSwgMjI1LCAxNCwgCisgICAgMTMzLCAzLCAyMjQsIDE5NSwgMjUxLCAyMjUsIDE0LCAxMzMsIDMsIDEyOSwgMjQ1LCA5NCwgMTQsIDEzMywgMywgMjQxLCAKKyAgICAxMjUsIDI0NSwgOTQsIDE0LCAxMzMsIDMsIDI0MSwgMjA0LCAyNDUsIDk0LCAxNCwgMTMzLCAzLCAyMTUsIDEwLCAyNDUsIAorICAgIDk0LCAxNCwgMTMzLCAzLCAyMTYsIDIzLCAyNDUsIDk0LCAxNCwgMTMzLCAzLCAyNDMsIDg4LCAyNDUsIDk0LCAxNCwgMTMzLCAKKyAgICAzLCAyMjQsIDE5NSwgMjQ1LCA5NCwgMTQsIDEzMywgMywgMjQxLCAxMjUsIDcxLCAxNCwgMTMzLCAzLCAyNDEsIDIwNCwgNzEsIAorICAgIDE0LCAxMzMsIDMsIDIxNSwgMTAsIDcxLCAxNCwgMTMzLCAzLCAyMTYsIDIzLCA3MSwgMTQsIDEzMywgMywgMjQzLCA4OCwgCisgICAgNzEsIDE0LCAxMzMsIDMsIDIyNCwgMTk1LCA3MSwgMTQsIDEzMywgMywgMTE5LCAyNDAsIDE0NCwgMTQsIDEzMywgMywgMTE4LCAKKyAgICAyNDAsIDE0NCwgMTQsIDEzMywgMywgMTI5LCAyNDAsIDE0NCwgMTQsIDEzMywgMywgMjQxLCAxMjUsIDI0MCwgMTQ0LCAxNCwgCisgICAgMTMzLCAzLCAyNDEsIDIwNCwgMjQwLCAxNDQsIDE0LCAxMzMsIDMsIDIxNSwgMTAsIDI0MCwgMTQ0LCAxNCwgMTMzLCAzLCAKKyAgICAyMTYsIDIzLCAyNDAsIDE0NCwgMTQsIDEzMywgMywgMjQzLCA4OCwgMjQwLCAxNDQsIDE0LCAxMzMsIDMsIDIyNCwgMTk1LCAKKyAgICAyNDAsIDE0NCwgMTQsIDEzMywgMywgMTE5LCAyNDAsIDE0MSwgMTQsIDEzMywgMywgMTE4LCAyNDAsIDE0MSwgMTQsIDEzMywgCisgICAgMywgMTI5LCAyNDAsIDE0MSwgMTQsIDEzMywgMywgMjQxLCAxMjUsIDI0MCwgMTQxLCAxNCwgMTMzLCAzLCAyNDEsIDIwNCwgCisgICAgMjQwLCAxNDEsIDE0LCAxMzMsIDMsIDExOCwgMjE1LCAyMzAsIDE0LCAxMzMsIDMsIDEyOSwgMjE1LCAyMzAsIDE0LCAxMzMsIAorICAgIDMsIDEyOSwgMjE1LCAyMzEsIDIwOSwgNTMsIDE3LCAxNCwgMTMzLCAzLCAyNDEsIDEyNSwgMjE1LCAyMzAsIDE0LCAxMzMsIAorICAgIDMsIDI0MSwgMjA0LCAyMTUsIDIzMCwgMTQsIDEzMywgMywgMjE1LCAxMCwgMjE1LCAyMzAsIDE0LCAxMzMsIDMsIDIxNiwgCisgICAgMjMsIDIxNSwgMjMwLCAxNCwgMTMzLCAzLCAyNDMsIDg4LCAyMTUsIDIzMCwgMTQsIDEzMywgMywgMjI0LCAxOTUsIDIxNSwgCisgICAgMjMwLCAxNCwgMTMzLCAzLCAxMTksIDIxNSwgMjI1LCAxNCwgMTMzLCAzLCAxMTgsIDIxNSwgMjI1LCAxNCwgMTMzLCAzLCAKKyAgICAxMjksIDIxNSwgMjI1LCAxNCwgMTMzLCAzLCAxMjksIDIxNSwgMjI2LCAyMDksIDUzLCAxNywgMTQsIDEzMywgMywgMjQxLCAKKyAgICAxMjUsIDIxNSwgMjI1LCAxNCwgMTMzLCAzLCAyNDEsIDIwNCwgMjE1LCAyMjUsIDE0LCAxMzMsIDMsIDIxNSwgMjMxLCAyOSwgCisgICAgMjQwLCAyMjcsIDEwMSwgMjQ1LCA5NCwgMTQsIDEzMywgMywgMjE1LCAyMzEsIDI5LCAyNDAsIDIyNywgMTAxLCAyMjYsIAorICAgIDIwOSwgMTQsIDEzMywgMywgMTE5LCAyNDksIDY1LCAxNCwgMTMzLCAzLCAxMTgsIDI0OSwgNjUsIDE0LCAxMzMsIDMsIDEyOSwgCisgICAgMjQ5LCA2NSwgMTQsIDEzMywgMywgMTI5LCAyNDksIDY2LCAyMDksIDUzLCAxNywgMTQsIDEzMywgMywgMjQxLCAxMjUsIAorICAgIDI0OSwgNjUsIDE0LCAxMzMsIDMsIDI0MSwgMjA0LCAyNDksIDY1LCAxNCwgMTMzLCAzLCAxMjksIDIwOSwgNTMsIDI0MSwgCisgICAgMTM2LCAyNDIsIDIxNCwgMTQsIDEzMywgMywgMTI5LCAyMDksIDUzLCAyNDEsIDEzNiwgMjQyLCAyMTEsIDE0LCAxMzMsIDMsIAorICAgIDI0MSwgMTI1LCAyMDksIDUzLCAyNDEsIDEzNiwgMjI5LCAyMDksIDE0LCAxMzMsIDMsIDI0MSwgMTI1LCAyMDksIDUzLCAKKyAgICAyNDEsIDEzNiwgMjI5LCAyMDcsIDE0LCAxMzMsIDMsIDI0MSwgMTI1LCAyMDksIDUzLCAyNDEsIDEzNiwgMjI5LCAyMTAsIAorICAgIDYyLCAxNCwgMTMzLCAzLCAyNDEsIDEyNSwgMjA5LCA1MywgMjQxLCAxMzYsIDIyOSwgMjEwLCAyNTEsIDE1MCwgMTQsIDEzMywgCisgICAgMywgMjE1LCAxMCwgMjA5LCA1MywgMjQxLCAxMzYsIDI1MSwgMjIxLCAxNCwgMTMzLCAzLCAyMTYsIDIzLCAyMDksIDUzLCAKKyAgICAyNDEsIDEzNiwgMjMzLCA3NywgMTQsIDEzMywgMywgMjE2LCAyMywgMjA5LCA1MywgMjQxLCAxMzYsIDIzMywgNzksIDYyLCAKKyAgICAxNCwgMTMzLCAzLCAyMTYsIDIzLCAyMDksIDUzLCAyNDEsIDEzNiwgMjMzLCA3OSwgMjUxLCAxNTAsIDE0LCAxMzMsIDMsIAorICAgIDI0MywgODgsIDIwOSwgNTMsIDI0MSwgMTM2LCAyMDksIDE2NSwgMTQsIDEzMywgMywgMjQzLCA4OCwgMjA5LCA1MywgMjQxLCAKKyAgICAxMzYsIDIwOSwgMTY0LCAxNCwgMTMzLCAzLCAyMjQsIDE5NSwgMjA5LCA1MywgMjQxLCAxMzYsIDIzMywgOTMsIDE0LCAxMzMsIAorICAgIDMsIDIyNCwgMTk1LCAyMDksIDUzLCAyNDEsIDEzNiwgMjMzLCA5MiwgMTQsIDEzMywgMywgMjI0LCAxOTUsIDIwOSwgNTMsIAorICAgIDI0MSwgMTM2LCAyMzMsIDkxLCAxNCwgMTMzLCAzLCAyMjQsIDE5NSwgMjA5LCA1MywgMjQxLCAxMzYsIDIzMywgOTQsIDYyLCAKKyAgICAxNCwgMTMzLCAzLCAxMTgsIDI1MSwgMjI2LCAyMTIsIDg5LCAxNCwgMTMzLCAzLCAxMjksIDI1MSwgMjI2LCAyMTIsIDg5LCAKKyAgICAxNCwgMTMzLCAzLCAyNDEsIDEyNSwgMjUxLCAyMjYsIDIxMiwgODksIDE0LCAxMzMsIDMsIDI0MSwgMjA0LCAyNTEsIDIyNiwgCisgICAgMjEyLCA4OSwgMTQsIDEzMywgMywgMjE1LCAxMCwgMjUxLCAyMjYsIDIxMiwgODksIDE0LCAxMzMsIDMsIDExOSwgMjUwLCAKKyAgICAxMzgsIDE0LCAxMzMsIDMsIDExOCwgMjUwLCAxMzgsIDE0LCAxMzMsIDMsIDEyOSwgMjUwLCAxMzgsIDE0LCAxMzMsIDMsIAorICAgIDI0MSwgMTI1LCAyNTAsIDEzOCwgMTQsIDEzMywgMywgMjQxLCAxMjUsIDI1MCwgMTM5LCAyMDksIDUzLCAxNywgMTQsIDEzMywgCisgICAgMywgMjQxLCAyMDQsIDI1MCwgMTM4LCAxNCwgMTMzLCAzLCAyNDEsIDIwNCwgMjUwLCAxMzksIDIwOSwgNTMsIDE3LCAxNCwgCisgICAgMTMzLCAzLCAyMjQsIDIwNywgMTQsIDEzMywgMywgMjI0LCAyMDgsIDE0LCAxMzMsIDMsIDExOSwgMjQyLCAyMTAsIDE0LCAKKyAgICAxMzMsIDMsIDExOCwgMjQyLCAyMTAsIDE0LCAxMzMsIDMsIDExOSwgMjEyLCAxMSwgMjQ1LCA5NCwgMTQsIDEzMywgMywgCisgICAgMTE4LCAyMTIsIDgsIDI0NSwgOTQsIDE0LCAxMzMsIDMsIDI0MSwgMjA0LCAyMTQsIDI1NSwgMjQ1LCA5NCwgMTQsIDEzMywgCisgICAgMywgMTE5LCAyMTIsIDExLCAyMDksIDUzLCAyNDEsIDEzNiwgNjIsIDE0LCAxMzMsIDMsIDExOCwgMjEyLCA4LCAyMDksIDUzLCAKKyAgICAyNDEsIDEzNiwgNjIsIDE0LCAxMzMsIDMsIDExOSwgMjQzLCA4NCwgMjUxLCAyMjUsIDE0LCAxMzMsIDMsIDExOSwgMjE5LCAKKyAgICAyMDUsIDI1MSwgMjI1LCAxNCwgMTMzLCAzLCA0NCwgMjUxLCAyMTIsIDExOSwgMjE1LCAwLCAxNCwgMTMzLCAzLCA0NCwgCisgICAgMjUxLCAyMTIsIDExOSwgMjE5LCAyMDQsIDE0LCAxMzMsIDMsIDExOSwgMjE5LCAyMDUsIDIzOSwgMTg2LCAxNCwgMTMzLCAzLCAKKyAgICAxMTksIDE2MCwgMjM5LCAxODYsIDE0LCAxMzMsIDMsIDI0MywgNjYsIDExOSwgMjEyLCAxMCwgMTQsIDEzMywgMywgMjQzLCAKKyAgICA2NiwgMTE4LCAyMTIsIDcsIDE0LCAxMzMsIDMsIDI0MywgNjYsIDI0MSwgMTMwLCAxNCwgMTMzLCAzLCAyNDMsIDY2LCAyNDEsIAorICAgIDI0MywgMTQsIDEzMywgMywgMjQxLCAxMjUsIDEwNiwgMjA5LCA1MywgMTcsIDE0LCAxMzMsIDMsIDI0MSwgMjA0LCAxMDYsIAorICAgIDIwOSwgNTMsIDE3LCAxNCwgMTMzLCAzLCAyMTUsIDEwLCAxMDYsIDIwOSwgNTMsIDE3LCAxNCwgMTMzLCAzLCAyMTYsIDIzLCAKKyAgICAxMDYsIDIwOSwgNTMsIDE3LCAxNCwgMTMzLCAzLCAyNDMsIDg4LCAxMDYsIDIwOSwgNTMsIDE3LCAxNCwgMTMzLCAzLCAyMjQsIAorICAgIDE5NSwgMTA2LCAyMDksIDUzLCAxNywgMTQsIDIyMCwgNzIsIDMsIDQ0LCAyNTEsIDIxMiwgMjA2LCAyMzIsIDI0NSwgNzksIAorICAgIDE0LCAyMjAsIDcyLCAzLCA3OSwgMjQ3LCAxNjIsIDE0LCAyMjAsIDcyLCAzLCAyNDUsIDE2MywgMjQ3LCAxNjIsIDE0LCAKKyAgICAyMjAsIDcyLCAzLCAyNDUsIDE2MywgMjExLCA0NywgMTQsIDIyMCwgNzIsIDMsIDI0NSwgMTYzLCAyMTksIDIxMCwgMTIsIAorICAgIDEzLCAyNTQsIDI1MCwgMTIsIDEzLCAyNTQsIDI0OSwgMTIsIDEzLCAyNTQsIDI0OCwgMTIsIDEzLCAyNTQsIDI0NywgMTIsIAorICAgIDEzLCAyNTQsIDI0NiwgMTIsIDEzLCAyNTQsIDI0NSwgMTIsIDEzLCAyNTQsIDI0NCwgMTIsIDEzLCAyNTQsIDI0MywgMTIsIAorICAgIDEzLCAyNTQsIDI0MiwgMTIsIDEzLCAyNTQsIDI0MSwgMTIsIDEzLCAyNTQsIDI0MCwgMTIsIDEzLCAyNTQsIDIzOSwgMTIsIAorICAgIDEzLCAyNTQsIDIzOCwgMTIsIDEzLCAyNTQsIDIzNywgMTIsIDEzLCAyNTQsIDIzNiwgMTIsIDEzLCAyNTQsIDIzNSwgMTIsIAorICAgIDEzLCAyNTQsIDIzNCwgMTIsIDEzLCAyNTQsIDIzMywgMTIsIDEzLCAyNTQsIDIzMiwgMTIsIDEzLCAyNTQsIDIzMSwgMTIsIAorICAgIDEzLCAyNTQsIDIzMCwgMTIsIDEzLCAyNTQsIDIyOSwgMTIsIDEzLCAyNTQsIDIyOCwgMTIsIDEzLCAyNTQsIDIyNywgMTIsIAorICAgIDEzLCAyNTQsIDIyNiwgMTIsIDEzLCAyNTQsIDIyNSwgMTIsIDEzLCAyNTQsIDIyNCwgMTIsIDEzLCAyNTQsIDIyMywgMTIsIAorICAgIDEzLCAyNTQsIDIyMiwgMTIsIDEzLCAyNTQsIDIyMSwgMTIsIDEzLCAyNTQsIDIyMCwgMTIsIDEzLCAyNTQsIDIxOSwgMTIsIAorICAgIDEzLCAyNTQsIDIxOCwgMTIsIDEzLCAyNTQsIDIxNiwgMTIsIDEzLCAyNTQsIDIxNSwgMTIsIDEzLCAyNTQsIDIxNCwgMTIsIAorICAgIDEzLCAyNTQsIDIxMywgMTIsIDEzLCAyNTQsIDIxMiwgMTIsIDEzLCAyNTQsIDIxMSwgMTIsIDEzLCAyNTQsIDIxMCwgMTIsIAorICAgIDEzLCAyNTQsIDIwOSwgMTIsIDEzLCAyNTQsIDIwOCwgMTIsIDEzLCAyNTQsIDIwNywgMTIsIDEzLCAyNTQsIDIwNiwgMTIsIAorICAgIDEzLCAyNTQsIDIwNSwgMTIsIDEzLCAyNTQsIDIwNCwgMTIsIDEzLCAyNTQsIDIwMywgMTIsIDEzLCAyNTQsIDIwMiwgMTIsIAorICAgIDEzLCAyNTQsIDIwMSwgMTIsIDEzLCAyNTQsIDIwMCwgMTIsIDEzLCAyNTQsIDE5OSwgMTIsIDEzLCAyNTQsIDE5OCwgMTIsIAorICAgIDEzLCAyNTQsIDE5NywgMTIsIDEzLCAyNTQsIDE5NiwgMTIsIDEzLCAyNTQsIDE5NSwgMTIsIDEzLCAyNTQsIDE5NCwgMTIsIAorICAgIDEzLCAyNTQsIDE5MywgMTIsIDEzLCAyNTQsIDE5MiwgMTIsIDEzLCAyNTQsIDE5MSwgMTIsIDEzLCAyNTQsIDE5MCwgMTIsIAorICAgIDEzLCAyNTQsIDE4OSwgMTIsIDEzLCAyNTQsIDE4OCwgMTIsIDEzLCAyNTQsIDE4NywgMTIsIDEzLCAyNTQsIDE4NiwgMTIsIAorICAgIDEzLCAyNTQsIDE4NSwgMTIsIDEzLCAyNTQsIDE4NCwgMTIsIDEzLCAyNTQsIDE4MywgMTIsIDEzLCAyNTQsIDE4MiwgMTIsIAorICAgIDEzLCAyNTQsIDE4MSwgMTIsIDEzLCAyNTQsIDE4MCwgMTIsIDEzLCAyNTQsIDE3OSwgMTIsIDEzLCAyNTQsIDE3OCwgMTIsIAorICAgIDEzLCAyNTQsIDE3NywgMTIsIDEzLCAyNTQsIDE3NiwgMTIsIDEzLCAyNTQsIDE3NSwgMTIsIDEzLCAyNTQsIDE3NCwgMTIsIAorICAgIDEzLCAyNTQsIDE3MywgMTIsIDEzLCAyNTQsIDE3MiwgMTIsIDEzLCAyNTQsIDE3MSwgMTIsIDEzLCAyNTQsIDE3MCwgMTIsIAorICAgIDEzLCAyNTEsIDE0OCwgMTIsIDEzLCAyNTEsIDE0NiwgMTIsIDEzLCAyNTEsIDE0NCwgMTIsIDEzLCAyNTEsIDE0MiwgMTIsIAorICAgIDEzLCAyNTEsIDE0MCwgMTIsIDEzLCAyNTEsIDEzOSwgMTIsIDEzLCAyNTEsIDEzNywgMTIsIDEzLCAyNTEsIDEzNSwgMTIsIAorICAgIDEzLCAyNTEsIDEzMywgMTIsIDEzLCAyNTEsIDEzMSwgMTIsIDEzLCAyNDksIDMwLCAxMiwgMTMsIDI0OSwgMjksIDEyLCAxMywgCisgICAgMjQ5LCAyOCwgMTIsIDEzLCAyNDksIDI3LCAxMiwgMTMsIDI0OSwgMjYsIDEyLCAxMywgMjQ5LCAyNSwgMTIsIDEzLCAyNDksIAorICAgIDI0LCAxMiwgMTMsIDI0OSwgMjMsIDEyLCAxMywgMjQ5LCAyMiwgMTIsIDEzLCAyNDksIDIxLCAxMiwgMTMsIDI0OSwgMjAsIAorICAgIDEyLCAxMywgMjQ5LCAxOSwgMTIsIDEzLCAyNDksIDE4LCAxMiwgMTMsIDI0OSwgMTcsIDEyLCAxMywgMjQ5LCAxNiwgMTIsIAorICAgIDEzLCAyNDksIDE1LCAxMiwgMTMsIDI0OSwgMTQsIDEyLCAxMywgMjQ5LCAxMywgMTIsIDEzLCAyNDksIDEyLCAxMiwgMTMsIAorICAgIDI0OSwgMTEsIDEyLCAxMywgMjQ5LCAxMCwgMTIsIDEzLCAyNDksIDksIDEyLCAxMywgMjQ5LCA4LCAxMiwgMTMsIDI0OSwgNywgCisgICAgMTIsIDEzLCAyNDksIDYsIDEyLCAxMywgMjQ5LCA1LCAxMiwgMTMsIDI0OSwgNCwgMTIsIDEzLCAyNDksIDMsIDEyLCAxMywgCisgICAgMjQ2LCAyMzksIDEyLCAxMywgMjQ2LCAyMzgsIDEyLCAxMywgMjQ2LCAyMzcsIDEyLCAxMywgMjQ2LCAyMzYsIDEyLCAxMywgCisgICAgMjQ2LCAyMzUsIDEyLCAxMywgMjQ2LCAyMzQsIDEyLCAxMywgMjQ2LCAyMzMsIDEyLCAxMywgMjQ2LCAyMzIsIDEyLCAxMywgCisgICAgMjQ2LCAyMzEsIDEyLCAxMywgMjQ2LCAyMzAsIDEyLCAxMywgMjQ2LCAyMjksIDEyLCAxMywgMjQ2LCAyMjgsIDEyLCAxMywgCisgICAgMjQ2LCAyMjcsIDEyLCAxMywgMjQ2LCAyMjYsIDEyLCAxMywgMjQ2LCAyMjUsIDEyLCAxMywgMjQ2LCAyMjQsIDEyLCAxMywgCisgICAgMjQ2LCAyMjMsIDEyLCAxMywgMjQ2LCAyMjIsIDEyLCAxMywgMjQ2LCAyMjEsIDEyLCAxMywgMjQ2LCAyMjAsIDEyLCAxMywgCisgICAgMjQ2LCAyMTksIDEyLCAxMywgMjQ2LCAyMTgsIDEyLCAxMywgMjQ2LCAyMTcsIDEyLCAxMywgMjQ2LCAyMTYsIDEyLCAxMywgCisgICAgMjQ2LCAyMTUsIDEyLCAxMywgMjQ2LCAyMTQsIDEyLCAxMywgMjQ2LCAyMTMsIDEyLCAxMywgMjQ2LCAyMTIsIDEyLCAxMywgCisgICAgMjQ2LCAyMTEsIDEyLCAxMywgMjQ2LCAyMTAsIDEyLCAxMywgMjQ2LCAyMDksIDEyLCAxMywgMjQ2LCAyMDgsIDEyLCAxMywgCisgICAgMjQ2LCAyMDcsIDEyLCAxMywgMjQ2LCAyMDYsIDEyLCAxMywgMjQ2LCAyMDUsIDEyLCAxMywgMjQ2LCAyMDQsIDEyLCAxMywgCisgICAgMjQ2LCAyMDMsIDEyLCAxMywgMjQ2LCAyMDIsIDEyLCAxMywgMjQ2LCAyMDEsIDEyLCAxMywgMjQ2LCAyMDAsIDEyLCAxMywgCisgICAgMjQ2LCAxOTksIDEyLCAxMywgMjQ2LCAxOTgsIDEyLCAxMywgMjQ2LCAxOTcsIDEyLCAxMywgMjQ2LCAxOTYsIDEyLCAxMywgCisgICAgMjQ2LCAxOTUsIDEyLCAxMywgMjQ2LCAxOTQsIDEyLCAxMywgMjQ2LCAxOTMsIDEyLCAxMywgMjQ2LCAxOTIsIDEyLCAxMywgCisgICAgMjQ2LCAxOTEsIDEyLCAxMywgMjQ2LCAxOTAsIDEyLCAxMywgMjQ2LCAxODksIDEyLCAxMywgMjQ2LCAxODgsIDEyLCAxMywgCisgICAgMjQ2LCAxODcsIDEyLCAxMywgMjQ2LCAxODYsIDEyLCAxMywgMjQ2LCAxODUsIDEyLCAxMywgMjQ2LCAxODQsIDEyLCAxMywgCisgICAgMjQ2LCAxODMsIDEyLCAxMywgMjQ2LCAxODIsIDEyLCAxMywgMjQ2LCAxODEsIDEyLCAxMywgMjQ2LCAxODAsIDEyLCAxMywgCisgICAgMjQ2LCAxNzksIDEyLCAxMywgMjQ2LCAxNzgsIDEyLCAxMywgMjQ2LCAxNzcsIDEyLCAxMywgMjQ2LCAxNzYsIDEyLCAxMywgCisgICAgMjQ2LCAxNzUsIDEyLCAxMywgMjQ2LCAxNzQsIDEyLCAxMywgMjQ2LCAxNzMsIDEyLCAxMywgMjQ2LCAxNzIsIDEyLCAxMywgCisgICAgMjQ2LCAxNzEsIDEyLCAxMywgMjQ2LCAxNzAsIDEyLCAxMywgMjQ2LCAxNjksIDEyLCAxMywgMjQ2LCAxNjgsIDEyLCAxMywgCisgICAgMjQ2LCAxNjcsIDEyLCAxMywgMjQ2LCAxNjYsIDEyLCAxMywgMjQ2LCAxNjUsIDEyLCAxMywgMjQ2LCAxNjQsIDEyLCAxMywgCisgICAgMjQ2LCAxNjMsIDEyLCAxMywgMjQ2LCAxNjIsIDEyLCAxMywgMjQ2LCAxNjEsIDEyLCAxMywgMjQ2LCAxNjAsIDEyLCAxMywgCisgICAgMjQ2LCAxNTksIDEyLCAxMywgMjQ2LCAxNTgsIDEyLCAxMywgMjQ2LCAxNTcsIDEyLCAxMywgMjQ2LCAxNTYsIDEyLCAxMywgCisgICAgMjQ2LCAxNTUsIDEyLCAxMywgMjQ2LCAxNTQsIDEyLCAxMywgMjQ2LCAxNTMsIDEyLCAxMywgMjQ2LCAxNTIsIDEyLCAxMywgCisgICAgMjQ2LCAxNTEsIDEyLCAxMywgMjQ2LCAxNTAsIDEyLCAxMywgMjQ2LCAxNDksIDEyLCAxMywgMjQ2LCAxNDgsIDEyLCAxMywgCisgICAgMjQzLCAxNzYsIDEyLCAxMywgMjQzLCAxNzUsIDEyLCAxMywgMjQzLCAxNzQsIDEyLCAxMywgMjQzLCAxNzMsIDEyLCAxMywgCisgICAgMjQzLCAxNzIsIDEyLCAxMywgMjQzLCAxNzEsIDEyLCAxMywgMjQzLCAxNzAsIDEyLCAxMywgMjQzLCAxNjksIDEyLCAxMywgCisgICAgMjQzLCAxNjgsIDEyLCAxMywgMjQzLCAxNjcsIDEyLCAxMywgMjQzLCAxNjYsIDEyLCAxMywgMjQzLCAxNjUsIDEyLCAxMywgCisgICAgMjQzLCAxNjQsIDEyLCAxMywgMjQzLCAxNjMsIDEyLCAxMywgMjQzLCAxNjIsIDEyLCAxMywgMjQzLCAxNjEsIDEyLCAxMywgCisgICAgMjQzLCAxNjAsIDEyLCAxMywgMjQzLCAxNTksIDEyLCAxMywgMjQzLCAxNTgsIDEyLCAxMywgMjQzLCAxNTcsIDEyLCAxMywgCisgICAgMjQzLCAxNTYsIDEyLCAxMywgMjQzLCAxNTUsIDEyLCAxMywgMjQzLCAxNTQsIDEyLCAxMywgMjQzLCAxNTMsIDEyLCAxMywgCisgICAgMjQzLCAxNTIsIDEyLCAxMywgMjQzLCAxNTEsIDEyLCAxMywgMjQzLCAxNTAsIDEyLCAxMywgMjQzLCAxNDksIDEyLCAxMywgCisgICAgMjQzLCAxNDgsIDEyLCAxMywgMjQzLCAxNDcsIDEyLCAxMywgMjQzLCAxNDYsIDEyLCAxMywgMjQzLCAxNDUsIDEyLCAxMywgCisgICAgMjQzLCAxNDQsIDEyLCAxMywgMjQzLCAxNDMsIDEyLCAxMywgMjQzLCAxNDIsIDEyLCAxMywgMjQzLCAxNDEsIDEyLCAxMywgCisgICAgMjQzLCAxNDAsIDEyLCAxMywgMjQzLCAxMzksIDEyLCAxMywgMjQzLCAxMzgsIDEyLCAxMywgMjQzLCAxMzcsIDEyLCAxMywgCisgICAgMjQzLCAxMzYsIDEyLCAxMywgMjQzLCAxMzUsIDEyLCAxMywgMjQzLCAxMzQsIDEyLCAxMywgMjQzLCAxMzMsIDEyLCAxMywgCisgICAgMjQyLCAxMzgsIDEyLCAxMywgMjQyLCAxMzcsIDEyLCAxMywgMjQyLCAxMzYsIDEyLCAxMywgMjQyLCAxMzUsIDEyLCAxMywgCisgICAgMjQyLCAxMzQsIDEyLCAxMywgMjQyLCAxMzMsIDEyLCAxMywgMjQyLCAxMzIsIDEyLCAxMywgMjQyLCAxMzEsIDEyLCAxMywgCisgICAgMjQyLCAxMzAsIDEyLCAxMywgMjQyLCAxMjksIDEyLCAxMywgMjQyLCAxMjgsIDEyLCAxMywgMjQyLCAxMjcsIDEyLCAxMywgCisgICAgMjQyLCAxMjYsIDEyLCAxMywgMjQyLCAxMjUsIDEyLCAxMywgMjQyLCAxMjQsIDEyLCAxMywgMjQyLCAxMjMsIDEyLCAxMywgCisgICAgMjQyLCAxMjIsIDEyLCAxMywgMjQyLCAxMjEsIDEyLCAxMywgMjQyLCAxMjAsIDEyLCAxMywgMjQyLCAxMTksIDEyLCAxMywgCisgICAgMjQyLCAxMTgsIDEyLCAxMywgMjQyLCAxMTcsIDEyLCAxMywgMjQyLCAxMTYsIDEyLCAxMywgMjQyLCAxMTUsIDEyLCAxMywgCisgICAgMjQyLCAxMTQsIDEyLCAxMywgMjQyLCAxMTMsIDEyLCAxMywgMjQyLCAxMTIsIDEyLCAxMywgMjQyLCAxMTEsIDEyLCAxMywgCisgICAgMjQyLCAxMTAsIDEyLCAxMywgMjQyLCAxMDksIDEyLCAxMywgMjQyLCAxMDgsIDEyLCAxMywgMjQyLCAxMDcsIDEyLCAxMywgCisgICAgMjQyLCAxMDYsIDEyLCAxMywgMjQyLCAxMDUsIDEyLCAxMywgMjQyLCAxMDQsIDEyLCAxMywgMjQyLCAxMDMsIDEyLCAxMywgCisgICAgMjQyLCAxMDIsIDEyLCAxMywgMjQyLCAxMDEsIDEyLCAxMywgMjQyLCAxMDAsIDEyLCAxMywgMjQyLCA5OSwgMTIsIDEzLCAKKyAgICAyNDIsIDk4LCAxMiwgMTMsIDI0MiwgOTcsIDEyLCAxMywgMjQyLCA5NiwgMTIsIDEzLCAyNDIsIDk1LCAxMiwgMTMsIDI0MiwgCisgICAgOTQsIDEyLCAxMywgMjQyLCA5MywgMTIsIDEzLCAyNDIsIDkyLCAxMiwgMTMsIDI0MiwgOTEsIDEyLCAxMywgMjQyLCA5MCwgCisgICAgMTIsIDEzLCAyNDIsIDg5LCAxMiwgMTMsIDI0MiwgODgsIDEyLCAxMywgMjQyLCA4NywgMTIsIDEzLCAyNDIsIDg2LCAxMiwgCisgICAgMTMsIDI0MiwgODUsIDEyLCAxMywgMjQyLCA4NCwgMTIsIDEzLCAyNDIsIDgzLCAxMiwgMTMsIDI0MiwgODIsIDEyLCAxMywgCisgICAgMjQyLCA4MSwgMTIsIDEzLCAyNDIsIDgwLCAxMiwgMTMsIDI0MiwgNzksIDEyLCAxMywgMjQyLCA3OCwgMTIsIDEzLCAyNDIsIAorICAgIDc3LCAxMiwgMTMsIDI0MiwgNzYsIDEyLCAxMywgMjQyLCA3NSwgMTIsIDEzLCAyNDIsIDc0LCAxMiwgMTMsIDI0MSwgNTQsIAorICAgIDEyLCAxMywgMjQxLCA1MywgMTIsIDEzLCAyNDEsIDUyLCAxMiwgMTMsIDI0MSwgNTEsIDEyLCAxMywgMjQxLCA1MCwgMTIsIAorICAgIDEzLCAyNDEsIDQ5LCAxMiwgMTMsIDI0MSwgNDgsIDEyLCAxMywgMjQxLCA0NywgMTIsIDEzLCAyNDEsIDQ2LCAxMiwgMTMsIAorICAgIDI0MSwgNDUsIDEyLCAxMywgMjQxLCA0NCwgMTIsIDEzLCAyNDEsIDQzLCAxMiwgMTMsIDI0MSwgNDIsIDEyLCAxMywgMjQxLCAKKyAgICA0MSwgMTIsIDEzLCAyNDEsIDQwLCAxMiwgMTMsIDI0MSwgMzksIDEyLCAxMywgMjQxLCAzOCwgMTIsIDEzLCAyNDEsIDM3LCAKKyAgICAxMiwgMTMsIDI0MSwgMzYsIDEyLCAxMywgMjQxLCAzNSwgMTIsIDEzLCAyNDEsIDM0LCAxMiwgMTMsIDI0MSwgMzMsIDEyLCAKKyAgICAxMywgMjQxLCAzMiwgMTIsIDEzLCAyNDEsIDMxLCAxMiwgMTMsIDI0MSwgMzAsIDEyLCAxMywgMjQxLCAyOSwgMTIsIDEzLCAKKyAgICAyNDEsIDI4LCAxMiwgMTMsIDI0MSwgMjcsIDEyLCAxMywgMjQxLCAyNiwgMTIsIDEzLCAyNDEsIDI1LCAxMiwgMTMsIDI0MSwgCisgICAgMjQsIDEyLCAxMywgMjQxLCAyMywgMTIsIDEzLCAyNDEsIDIyLCAxMiwgMTMsIDI0MSwgMjEsIDEyLCAxMywgMjQxLCAyMCwgCisgICAgMTIsIDEzLCAyNDEsIDE5LCAxMiwgMTMsIDI0MSwgMTgsIDEyLCAxMywgMjQxLCAxNywgMTIsIDEzLCAyNDEsIDE2LCAxMiwgCisgICAgMTMsIDI0MSwgMTUsIDEyLCAxMywgMjQxLCAxNCwgMTIsIDEzLCAyNDEsIDEzLCAxMiwgMTMsIDI0MSwgMTIsIDEyLCAxMywgCisgICAgMjQxLCAxMSwgMTIsIDEzLCAyNDEsIDEwLCAxMiwgMTMsIDI0MSwgOSwgMTIsIDEzLCAyNDEsIDgsIDEyLCAxMywgMjQxLCA3LCAKKyAgICAxMiwgMTMsIDI0MSwgNiwgMTIsIDEzLCAyNDEsIDUsIDEyLCAxMywgMjQxLCA0LCAxMiwgMTMsIDI0MSwgMywgMTIsIDEzLCAKKyAgICAyNDEsIDIsIDEyLCAxMywgMjQxLCAxLCAxMiwgMTMsIDI0MSwgMCwgMTIsIDEzLCAyNDAsIDI1NSwgMTIsIDEzLCAyNDAsIAorICAgIDI1NCwgMTIsIDEzLCAyNDAsIDI1MywgMTIsIDEzLCAyNDAsIDI1MiwgMTIsIDEzLCAyNDAsIDI1MSwgMTIsIDEzLCAyNDAsIAorICAgIDI1MCwgMTIsIDEzLCAyNDAsIDI0OSwgMTIsIDEzLCAyNDAsIDI0OCwgMTIsIDEzLCAyNDAsIDI0NywgMTIsIDEzLCAyMzksIAorICAgIDE1MywgMTIsIDEzLCAyMzksIDE1MiwgMTIsIDEzLCAyMzksIDE1MSwgMTIsIDEzLCAyMzksIDE1MCwgMTIsIDEzLCAyMzksIAorICAgIDE0OSwgMTIsIDEzLCAyMzksIDE0OCwgMTIsIDEzLCAyMzksIDE0NywgMTIsIDEzLCAyMzksIDE0NiwgMTIsIDEzLCAyMzksIAorICAgIDE0NSwgMTIsIDEzLCAyMzcsIDIwOSwgMTIsIDEzLCAyMzcsIDIwOCwgMTIsIDEzLCAyMzcsIDIwNywgMTIsIDEzLCAyMzcsIAorICAgIDIwNiwgMTIsIDEzLCAyMzcsIDIwNSwgMTIsIDEzLCAyMzcsIDIwNCwgMTIsIDEzLCAyMzcsIDIwMywgMTIsIDEzLCAyMzcsIAorICAgIDIwMiwgMTIsIDEzLCAyMzcsIDIwMSwgMTIsIDEzLCAyMzcsIDIwMCwgMTIsIDEzLCAyMzcsIDE5OSwgMTIsIDEzLCAyMzcsIAorICAgIDE5OCwgMTIsIDEzLCAyMzcsIDE5NywgMTIsIDEzLCAyMzcsIDE5NiwgMTIsIDEzLCAyMzcsIDE5NSwgMTIsIDEzLCAyMzcsIAorICAgIDE5NCwgMTIsIDEzLCAyMzcsIDE5MywgMTIsIDEzLCAyMzcsIDE5MiwgMTIsIDEzLCAyMzcsIDE5MSwgMTIsIDEzLCAyMzIsIAorICAgIDc1LCAxMiwgMTMsIDIzMiwgNzQsIDEyLCAxMywgMjMyLCA3MywgMTIsIDEzLCAyMzIsIDcyLCAxMiwgMTMsIDIzMiwgNzEsIAorICAgIDEyLCAxMywgMjMyLCA3MCwgMTIsIDEzLCAyMzIsIDY5LCAxMiwgMTMsIDIzMiwgNjgsIDEyLCAxMywgMjMwLCAxNTYsIDEyLCAKKyAgICAxMywgMjMwLCAxNTUsIDEyLCAxMywgMjMwLCAxNTQsIDEyLCAxMywgMjMwLCAxNTMsIDEyLCAxMywgMjMwLCAxNTIsIDEyLCAKKyAgICAxMywgMjMwLCAxNTEsIDEyLCAxMywgMjMwLCAxNTAsIDEyLCAxMywgMjMwLCAxNDksIDEyLCAxMywgMjMwLCAxNDgsIDEyLCAKKyAgICAxMywgMjMwLCAxNDcsIDEyLCAxMywgMjI5LCAyNiwgMTIsIDEzLCAyMjksIDI1LCAxMiwgMTMsIDIyOSwgMjQsIDEyLCAxMywgCisgICAgMjI5LCAyMiwgMTIsIDEzLCAyMjksIDIwLCAxMiwgMTMsIDIyOSwgMTksIDEyLCAxMywgMjI5LCAxNywgMTIsIDEzLCAyMjksIAorICAgIDE1LCAxMiwgMTMsIDIyOSwgMTMsIDEyLCAxMywgMjI5LCAxMSwgMTIsIDEzLCAyMjksIDksIDEyLCAxMywgMjI5LCA3LCAxMiwgCisgICAgMTMsIDIyOSwgNSwgMTIsIDEzLCAyMjksIDQsIDEyLCAxMywgMjI5LCAyLCAxMiwgMTMsIDIyOSwgMCwgMTIsIDEzLCAyMjgsIAorICAgIDI1NSwgMTIsIDEzLCAyMjgsIDI1NCwgMTIsIDEzLCAyMjgsIDI1MywgMTIsIDEzLCAyMjgsIDI1MiwgMTIsIDEzLCAyMjgsIAorICAgIDI1MSwgMTIsIDEzLCAyMjgsIDI1MCwgMTIsIDEzLCAyMjgsIDI0OSwgMTIsIDEzLCAyMjgsIDI0OCwgMTIsIDEzLCAyMjgsIAorICAgIDI0NiwgMTIsIDEzLCAyMjgsIDI0NCwgMTIsIDEzLCAyMjgsIDI0MiwgMTIsIDEzLCAyMjgsIDI0MSwgMTIsIDEzLCAyMjgsIAorICAgIDIzOSwgMTIsIDEzLCAyMjgsIDIzOCwgMTIsIDEzLCAyMjgsIDIzNiwgMTIsIDEzLCAyMjgsIDIzNSwgMTIsIDEzLCAyMjgsIAorICAgIDIzMywgMTIsIDEzLCAyMjgsIDIzMSwgMTIsIDEzLCAyMjgsIDIyOSwgMTIsIDEzLCAyMjgsIDIyNywgMTIsIDEzLCAyMjgsIAorICAgIDIyNSwgMTIsIDEzLCAyMjgsIDIyNCwgMTIsIDEzLCAyMjgsIDIyMiwgMTIsIDEzLCAyMjgsIDIyMCwgMTIsIDEzLCAyMjgsIAorICAgIDIxOSwgMTIsIDEzLCAyMjgsIDIxNywgMTIsIDEzLCAyMjgsIDIxNSwgMTIsIDEzLCAyMjgsIDIxMywgMTIsIDEzLCAyMjgsIAorICAgIDIxMSwgMTIsIDEzLCAyMjgsIDIxMCwgMTIsIDEzLCAyMjgsIDIwOCwgMTIsIDEzLCAyMjgsIDIwNiwgMTIsIDEzLCAyMjgsIAorICAgIDIwNCwgMTIsIDEzLCAyMjgsIDIwMywgMTIsIDEzLCAyMjgsIDIwMSwgMTIsIDEzLCAyMjgsIDE5OSwgMTIsIDEzLCAyMjgsIAorICAgIDE5OCwgMTIsIDEzLCAyMjgsIDE5NywgMTIsIDEzLCAyMjgsIDE5NSwgMTIsIDEzLCAyMjgsIDE5MywgMTIsIDEzLCAyMjgsIAorICAgIDE5MSwgMTIsIDEzLCAyMjgsIDE4OSwgMTIsIDEzLCAyMjgsIDE4NywgMTIsIDEzLCAyMjgsIDE4NSwgMTIsIDEzLCAyMjgsIAorICAgIDE4MywgMTIsIDEzLCAyMjgsIDE4MiwgMTIsIDEzLCAyMjgsIDE4MCwgMTIsIDEzLCAyMjgsIDE3OCwgMTIsIDEzLCAyMjgsIAorICAgIDE3NiwgMTIsIDEzLCAyMjgsIDE3NCwgMTIsIDEzLCAyMjYsIDMwLCAxMiwgMTMsIDIyNiwgMjksIDEyLCAxMywgMjI2LCAyOCwgCisgICAgMTIsIDEzLCAyMjYsIDI3LCAxMiwgMTMsIDIyNiwgMjYsIDEyLCAxMywgMjI2LCAyNSwgMTIsIDEzLCAyMjYsIDI0LCAxMiwgCisgICAgMTMsIDIyNiwgMjMsIDEyLCAxMywgMjI2LCAyMiwgMTIsIDEzLCAyMjYsIDIxLCAxMiwgMTMsIDIyNiwgMjAsIDEyLCAxMywgCisgICAgMjI2LCAxOSwgMTIsIDEzLCAyMjYsIDE4LCAxMiwgMTMsIDIyNiwgMTcsIDEyLCAxMywgMjI2LCAxNiwgMTIsIDEzLCAyMjYsIAorICAgIDE1LCAxMiwgMTMsIDIyNiwgMTQsIDEyLCAxMywgMjI2LCAxMywgMTIsIDEzLCAyMjYsIDEyLCAxMiwgMTMsIDIyNiwgMTEsIAorICAgIDEyLCAxMywgMjI2LCAxMCwgMTIsIDEzLCAyMjYsIDksIDEyLCAxMywgMjI2LCA4LCAxMiwgMTMsIDIyNiwgNywgMTIsIDEzLCAKKyAgICAyMjYsIDYsIDEyLCAxMywgMjI2LCA1LCAxMiwgMTMsIDIyNiwgNCwgMTIsIDEzLCAyMjYsIDMsIDEyLCAxMywgMjI2LCAyLCAKKyAgICAxMiwgMTMsIDIyNiwgMSwgMTIsIDEzLCAyMjYsIDAsIDEyLCAxMywgMjI1LCAyNTUsIDEyLCAxMywgMjI1LCAyNTQsIDEyLCAKKyAgICAxMywgMjI1LCAyNTMsIDEyLCAxMywgMjI1LCAyNTIsIDEyLCAxMywgMjI1LCAyNTEsIDEyLCAxMywgMjI1LCAyNTAsIDEyLCAKKyAgICAxMywgMjI1LCAyNDksIDEyLCAxMywgMjI1LCAyNDgsIDEyLCAxMywgMjI1LCAyNDcsIDEyLCAxMywgMjI1LCAyNDYsIDEyLCAKKyAgICAxMywgMjI1LCAyNDUsIDEyLCAxMywgMjI1LCAyNDQsIDEyLCAxMywgMjI1LCAyNDMsIDEyLCAxMywgMjI1LCAyNDIsIDEyLCAKKyAgICAxMywgMjI1LCAyNDEsIDEyLCAxMywgMjI1LCAyNDAsIDEyLCAxMywgMjI1LCAyMzksIDEyLCAxMywgMjI1LCAyMzgsIDEyLCAKKyAgICAxMywgMjI0LCAxMjgsIDEyLCAxMywgMjI0LCAxMjcsIDEyLCAxMywgMjI0LCAxMjYsIDEyLCAxMywgMjI0LCAxMjUsIDEyLCAKKyAgICAxMywgMjI0LCAxMjQsIDEyLCAxMywgMjI0LCAxMjMsIDEyLCAxMywgMjI0LCAxMjIsIDEyLCAxMywgMjI0LCAxMjEsIDEyLCAKKyAgICAxMywgMjI0LCAxMjAsIDEyLCAxMywgMjI0LCAxMTksIDEyLCAxMywgMjI0LCAxMTgsIDEyLCAxMywgMjI0LCAxMTcsIDEyLCAKKyAgICAxMywgMjI0LCAxMTYsIDEyLCAxMywgMjI0LCAxMTUsIDEyLCAxMywgMjI0LCAxMTQsIDEyLCAxMywgMjI0LCAxMTMsIDEyLCAKKyAgICAxMywgMjI0LCAxMTIsIDEyLCAxMywgMjI0LCAxMTEsIDEyLCAxMywgMjI0LCAxMTAsIDEyLCAxMywgMjI0LCAxMDksIDEyLCAKKyAgICAxMywgMjI0LCAxMDgsIDEyLCAxMywgMjI0LCAxMDcsIDEyLCAxMywgMjIzLCAyMTYsIDEyLCAxMywgMjIzLCAyMTUsIDEyLCAKKyAgICAxMywgMjIzLCAyMTQsIDEyLCAxMywgMjIzLCAyMTMsIDEyLCAxMywgMjIzLCAyMTIsIDEyLCAxMywgMjIzLCAyMTEsIDEyLCAKKyAgICAxMywgMjIzLCAyMTAsIDEyLCAxMywgMjIzLCAyMDksIDEyLCAxMywgMjIzLCAyMDgsIDEyLCAxMywgMjIzLCAyMDcsIDEyLCAKKyAgICAxMywgMjIzLCAyMDYsIDEyLCAxMywgMjIzLCAyMDUsIDEyLCAxMywgMjIzLCAyMDQsIDEyLCAxMywgMjIzLCAyMDMsIDEyLCAKKyAgICAxMywgMjIzLCAyMDIsIDEyLCAxMywgMjIzLCAyMDEsIDEyLCAxMywgMjIzLCAyMDAsIDEyLCAxMywgMjIzLCAxOTksIDEyLCAKKyAgICAxMywgMjIzLCAxOTgsIDEyLCAxMywgMjIzLCAxOTcsIDEyLCAxMywgMjIzLCAxOTYsIDEyLCAxMywgMjIzLCAxOTUsIDEyLCAKKyAgICAxMywgMjIzLCAxOTQsIDEyLCAxMywgMjIzLCAxOTMsIDEyLCAxMywgMjIzLCAxOTIsIDEyLCAxMywgMjIzLCAxOTEsIDEyLCAKKyAgICAxMywgMjIzLCA1MCwgMTIsIDEzLCAyMjMsIDQ5LCAxMiwgMTMsIDIyMywgNDgsIDEyLCAxMywgMjIzLCA0NywgMTIsIDEzLCAKKyAgICAyMjMsIDQ2LCAxMiwgMTMsIDIyMywgNDUsIDEyLCAxMywgMjIzLCA0NCwgMTIsIDEzLCAyMjMsIDQzLCAxMiwgMTMsIDIyMywgCisgICAgNDIsIDEyLCAxMywgMjIzLCA0MSwgMTIsIDEzLCAyMjMsIDQwLCAxMiwgMTMsIDIyMywgMzksIDEyLCAxMywgMjIzLCAzOCwgCisgICAgMTIsIDEzLCAyMjMsIDM3LCAxMiwgMTMsIDIyMywgMzYsIDEyLCAxMywgMjIzLCAzNSwgMTIsIDEzLCAyMjMsIDM0LCAxMiwgCisgICAgMTMsIDIyMywgMzMsIDEyLCAxMywgMjIzLCAzMiwgMTIsIDEzLCAyMjMsIDMxLCAxMiwgMTMsIDIyMywgMzAsIDEyLCAxMywgCisgICAgMjIzLCAyOSwgMTIsIDEzLCAyMjMsIDI4LCAxMiwgMTMsIDIyMywgMjcsIDEyLCAxMywgMjIzLCAyNiwgMTIsIDEzLCAyMjMsIAorICAgIDI1LCAxMiwgMTMsIDIyMywgMjQsIDEyLCAxMywgMjIzLCAyMywgMTIsIDEzLCAyMjMsIDIyLCAxMiwgMTMsIDIyMywgMjEsIAorICAgIDEyLCAxMywgMjIzLCAyMCwgMTIsIDEzLCAyMjMsIDE5LCAxMiwgMTMsIDIyMywgMTgsIDEyLCAxMywgMjIzLCAxNywgMTIsIAorICAgIDEzLCAyMjMsIDE2LCAxMiwgMTMsIDIyMywgMTUsIDEyLCAxMywgMjIzLCAxNCwgMTIsIDEzLCAyMjMsIDEzLCAxMiwgMTMsIAorICAgIDIyMywgMTIsIDEyLCAxMywgMjIzLCAxMSwgMTIsIDEzLCAyMjMsIDEwLCAxMiwgMTMsIDIyMywgOSwgMTIsIDEzLCAyMjMsIAorICAgIDgsIDEyLCAxMywgMjIzLCA3LCAxMiwgMTMsIDIyMywgNiwgMTIsIDEzLCAyMjMsIDUsIDEyLCAxMywgMjIzLCA0LCAxMiwgCisgICAgMTMsIDIyMywgMywgMTIsIDEzLCAyMjMsIDIsIDEyLCAxMywgMjIzLCAxLCAxMiwgMTMsIDIyMywgMCwgMTIsIDEzLCAyMjIsIAorICAgIDI1NSwgMTIsIDEzLCAyMjIsIDI1NCwgMTIsIDEzLCAyMjIsIDI1MywgMTIsIDEzLCAyMjIsIDI1MiwgMTIsIDEzLCAyMjIsIAorICAgIDI1MSwgMTIsIDEzLCAyMjIsIDI1MCwgMTIsIDEzLCAyMjIsIDI0OSwgMTIsIDEzLCAyMjIsIDI0OCwgMTIsIDEzLCAyMjIsIAorICAgIDI0NywgMTIsIDEzLCAyMjIsIDI0NiwgMTIsIDEzLCAyMjIsIDI0NSwgMTIsIDEzLCAyMjIsIDI0NCwgMTIsIDEzLCAyMjIsIAorICAgIDI0MywgMTIsIDEzLCAyMjIsIDI0MiwgMTIsIDEzLCAyMjIsIDI0MSwgMTIsIDEzLCAyMjIsIDI0MCwgMTIsIDEzLCAyMjIsIAorICAgIDIzOSwgMTIsIDEzLCAyMjIsIDIzOCwgMTIsIDEzLCAyMjIsIDIzNywgMTIsIDEzLCAyMjIsIDIzNiwgMTIsIDEzLCAyMjIsIAorICAgIDIzNSwgMTIsIDEzLCAyMjIsIDIzNCwgMTIsIDEzLCAyMjIsIDIzMywgMTIsIDEzLCAyMjIsIDIzMiwgMTIsIDEzLCAyMjIsIAorICAgIDY2LCAxMiwgMTMsIDIyMiwgNjUsIDEyLCAxMywgMjIyLCA2NCwgMTIsIDEzLCAyMjIsIDYzLCAxMiwgMTMsIDIyMiwgNjIsIAorICAgIDEyLCAxMywgMjIyLCA2MSwgMTIsIDEzLCAyMjIsIDYwLCAxMiwgMTMsIDIyMiwgNTksIDEyLCAxMywgMjIyLCA1OCwgMTIsIAorICAgIDEzLCAyMjIsIDU3LCAxMiwgMTMsIDIyMiwgNTYsIDEyLCAxMywgMjIyLCA1NSwgMTIsIDEzLCAyMjIsIDU0LCAxMiwgMTMsIAorICAgIDIyMCwgMjYsIDEyLCAxMywgMjIwLCAyNSwgMTIsIDEzLCAyMjAsIDI0LCAxMiwgMTMsIDIyMCwgMjMsIDEyLCAxMywgMjIwLCAKKyAgICAyMiwgMTIsIDEzLCAyMjAsIDIxLCAxMiwgMTMsIDIyMCwgMjAsIDEyLCAxMywgMjE5LCAxNDgsIDEyLCAxMywgMjE5LCAxNDcsIAorICAgIDEyLCAxMywgMjE5LCAxNDYsIDEyLCAxMywgMjE5LCAxNDUsIDEyLCAxMywgMjE5LCAxNDQsIDEyLCAxMywgMjE5LCAxNDMsIAorICAgIDEyLCAxMywgMjE5LCAxNDIsIDEyLCAxMywgMjE5LCAxNDEsIDEyLCAxMywgMjE5LCAxNDAsIDEyLCAxMywgMjE5LCAxMzksIAorICAgIDEyLCAxMywgMjE5LCAxMzgsIDEyLCAxMywgMjE5LCAxMzcsIDEyLCAxMywgMjE5LCAxMzYsIDEyLCAxMywgMjE5LCAxMzUsIAorICAgIDEyLCAxMywgMjE5LCAxMzQsIDEyLCAxMywgMjE5LCAxMzMsIDEyLCAxMywgMjE5LCAxMzIsIDEyLCAxMywgMjE5LCAxMzEsIAorICAgIDEyLCAxMywgMjE5LCAxMzAsIDEyLCAxMywgMjE5LCAxMjksIDEyLCAxMywgMjE5LCAxMjgsIDEyLCAxMywgMjE5LCAxMjcsIAorICAgIDEyLCAxMywgMjE5LCAxMjYsIDEyLCAxMywgMjE5LCAxMjUsIDEyLCAxMywgMjE5LCAxMjQsIDEyLCAxMywgMjE5LCAxMjMsIAorICAgIDEyLCAxMywgMjE5LCAxMjIsIDEyLCAxMywgMjE5LCAxMjEsIDEyLCAxMywgMjE5LCAxMjAsIDEyLCAxMywgMjE5LCAxMTksIAorICAgIDEyLCAxMywgMjE5LCAxMTgsIDEyLCAxMywgMjE5LCAxMTcsIDEyLCAxMywgMjE5LCAxMTYsIDEyLCAxMywgMjE5LCAxMTUsIAorICAgIDEyLCAxMywgMjE3LCAyNTQsIDEyLCAxMywgMjE3LCAyNTMsIDEyLCAxMywgMjE3LCAyNTIsIDEyLCAxMywgMjE3LCAyNTEsIAorICAgIDEyLCAxMywgMjE3LCAyNTAsIDEyLCAxMywgMjE3LCAyNDksIDEyLCAxMywgMjE3LCAyNDgsIDEyLCAxMywgMjE3LCAyNDcsIAorICAgIDEyLCAxMywgMjE3LCAyNDYsIDEyLCAxMywgMjE3LCAyNDUsIDEyLCAxMywgMjE3LCAyNDQsIDEyLCAxMywgMjE3LCAyNDMsIAorICAgIDEyLCAxMywgMjE3LCAyNDIsIDEyLCAxMywgMjE3LCAyNDEsIDEyLCAxMywgMjE3LCAyNDAsIDEyLCAxMywgMjE3LCAyMzksIAorICAgIDEyLCAxMywgMjE3LCAyMzgsIDEyLCAxMywgMjE3LCAyMzcsIDEyLCAxMywgMjE3LCAyMzYsIDEyLCAxMywgMjE3LCAyMzUsIAorICAgIDEyLCAxMywgMjE3LCAyMzQsIDEyLCAxMywgMjE3LCAyMzMsIDEyLCAxMywgMjE3LCAyMzIsIDEyLCAxMywgMjE3LCAyMzEsIAorICAgIDEyLCAxMywgMjE3LCAyMzAsIDEyLCAxMywgMjE3LCAyMjksIDEyLCAxMywgMjE3LCAyMjgsIDEyLCAxMywgMjE3LCAyMjcsIAorICAgIDEyLCAxMywgMjE3LCAyMjYsIDEyLCAxMywgMjE3LCAyMjUsIDEyLCAxMywgMjE3LCAyMjQsIDEyLCAxMywgMjE3LCAyMjMsIAorICAgIDEyLCAxMywgMjE3LCAyMjIsIDEyLCAxMywgMjE3LCAyMjEsIDEyLCAxMywgMjE3LCAyMjAsIDEyLCAxMywgMjE3LCAyMTksIAorICAgIDEyLCAxMywgMjE3LCAyMTgsIDEyLCAxMywgMjE3LCAyMTcsIDEyLCAxMywgMjE3LCAyMTYsIDEyLCAxMywgMjE3LCAyMTUsIAorICAgIDEyLCAxMywgMjE3LCAyMTQsIDEyLCAxMywgMjE3LCAyMTMsIDEyLCAxMywgMjE3LCAyMTIsIDEyLCAxMywgMjE3LCAyMTEsIAorICAgIDEyLCAxMywgMjE3LCAyMTAsIDEyLCAxMywgMjE3LCAyMDksIDEyLCAxMywgMjE3LCAyMDgsIDEyLCAxMywgMjE3LCAyMDcsIAorICAgIDEyLCAxMywgMjE3LCAyMDYsIDEyLCAxMywgMjE3LCAyMDUsIDEyLCAxMywgMjE3LCAyMDQsIDEyLCAxMywgMjE3LCAyMDMsIAorICAgIDEyLCAxMywgMjE3LCAyMDIsIDEyLCAxMywgMjE3LCAyMDEsIDEyLCAxMywgMjEzLCA4LCAxMiwgMTMsIDIxMywgNywgMTIsIAorICAgIDEzLCAyMTMsIDYsIDEyLCAxMywgMjEzLCA1LCAxMiwgMTMsIDIxMywgNCwgMTIsIDEzLCAyMTMsIDMsIDEyLCAxMywgMjEzLCAKKyAgICAyLCAxMiwgMTMsIDIxMywgMSwgMTIsIDEzLCAyMTMsIDAsIDEyLCAxMywgMjEyLCAyNTUsIDEyLCAxMywgMjEyLCAyNTQsIAorICAgIDEyLCAxMywgMjEyLCAyNTMsIDEyLCAxMywgMjEyLCAyNTIsIDEyLCAxMywgMjEyLCAyNTEsIDEyLCAxMywgMjEyLCAyNTAsIAorICAgIDEyLCAxMywgMjEyLCAyNDksIDEyLCAxMywgMjEyLCAyNDgsIDEyLCAxMywgMjEyLCAyNDcsIDEyLCAxMywgMjEyLCAyNDYsIAorICAgIDEyLCAxMywgMjEyLCAyNDUsIDEyLCAxMywgMjEyLCAyNDQsIDEyLCAxMywgMjEyLCAyNDMsIDEyLCAxMywgMjEyLCAyNDIsIAorICAgIDEyLCAxMywgMjEyLCAyNDEsIDEyLCAxMywgMjEyLCAyNDAsIDEyLCAxMywgMjEyLCAyMzksIDEyLCAxMywgMjEyLCAyMzgsIAorICAgIDEyLCAxMywgMjEyLCAyMzcsIDEyLCAxMywgMjEyLCAyMzYsIDEyLCAxMywgMjEyLCAyMzUsIDEyLCAxMywgMjEyLCAyMzQsIAorICAgIDEyLCAxMywgMjEyLCAyMzMsIDEyLCAxMywgMjEyLCAyMzIsIDEyLCAxMywgMjEyLCAyMzEsIDEyLCAxMywgMjEyLCAyMzAsIAorICAgIDEyLCAxMywgMjEyLCAyMjksIDEyLCAxMywgMjEyLCAyMjgsIDEyLCAxMywgMjEyLCAyMjcsIDEyLCAxMywgMjEyLCAyMjYsIAorICAgIDEyLCAxMywgMjEyLCAyMjUsIDEyLCAxMywgMjEyLCAyMjQsIDEyLCAxMywgMjEyLCAyMjMsIDEyLCAxMywgMjEyLCAyMjIsIAorICAgIDEyLCAxMywgMjEyLCAyMjEsIDEyLCAxMywgMjEwLCA2NywgMTIsIDEzLCAyMTAsIDY2LCAxMiwgMTMsIDIxMCwgNjUsIDEyLCAKKyAgICAxMywgMjEwLCA2NCwgMTIsIDEzLCAyMTAsIDYzLCAxMiwgMTMsIDIxMCwgNjIsIDEyLCAxMywgMjEwLCA2MSwgMTIsIDEzLCAKKyAgICAyMTAsIDYwLCAxMiwgMTMsIDIxMCwgNTksIDEyLCAxMywgMjEwLCA1OCwgMTIsIDEzLCAyMTAsIDU3LCAxMiwgMTMsIDIxMCwgCisgICAgNTYsIDEyLCAxMywgMjEwLCA1NSwgMTIsIDEzLCAyMTAsIDU0LCAxMiwgMTMsIDIxMCwgNTMsIDEyLCAxMywgMjEwLCA1MiwgCisgICAgMTIsIDEzLCAyMTAsIDUxLCAxMiwgMTMsIDIxMCwgNTAsIDEyLCAxMywgMjEwLCA0OSwgMTIsIDEzLCAyMTAsIDQ4LCAxMiwgCisgICAgMTMsIDIxMCwgNDcsIDEyLCAxMywgMjEwLCA0NiwgMTIsIDEzLCAyMTAsIDQ1LCAxMiwgMTMsIDIxMCwgNDQsIDEyLCAxMywgCisgICAgMjEwLCA0MywgMTIsIDEzLCAyMTAsIDQyLCAxMiwgMTMsIDIxMCwgNDEsIDEyLCAxMywgMjEwLCA0MCwgMTIsIDEzLCAyMTAsIAorICAgIDM5LCAxMiwgMTMsIDIxMCwgMzgsIDEyLCAxMywgMjEwLCAzNywgMTIsIDEzLCAyMTAsIDM2LCAxMiwgMTMsIDIxMCwgMzUsIAorICAgIDEyLCAxMywgMjEwLCAzNCwgMTIsIDEzLCAyMTAsIDMzLCAxMiwgMTMsIDIxMCwgMzIsIDEyLCAxMywgMjEwLCAzMSwgMTIsIAorICAgIDEzLCAyMTAsIDMwLCAxMiwgMTMsIDIxMCwgMjksIDEyLCAxMywgMjEwLCAyOCwgMTIsIDEzLCAyMTAsIDI3LCAxMiwgMTMsIAorICAgIDIxMCwgMjYsIDEyLCAxMywgMjEwLCAyNSwgMTIsIDEzLCAyMTAsIDI0LCAxMiwgMTMsIDIxMCwgMjMsIDEyLCAxMywgMjEwLCAKKyAgICAyMiwgMTIsIDEzLCAyMTAsIDIxLCAxMiwgMTMsIDIwOSwgMTQ3LCAxMiwgMTMsIDIwOSwgMTQ2LCAxMiwgMTMsIDIwOSwgCisgICAgMTQ1LCAxMiwgMTMsIDIwOSwgMTQ0LCAxMiwgMTMsIDIwOSwgMTQzLCAxMiwgMTMsIDIwOSwgMTQyLCAxMiwgMTMsIDIwOSwgCisgICAgMTQxLCAxMiwgMTMsIDIwOSwgMTQwLCAxMiwgMTMsIDIwOSwgMTM5LCAxMiwgMTMsIDIwOSwgMTM4LCAxMiwgMTMsIDIwOSwgCisgICAgMTM3LCAxMiwgMTMsIDIwOSwgMTM2LCAxMiwgMTMsIDIwOSwgMTM1LCAxMiwgMTMsIDIwOSwgMTM0LCAxMiwgMTMsIDIwOSwgCisgICAgMTMzLCAxMiwgMTMsIDIwOSwgMTMyLCAxMiwgMTMsIDIwOSwgMTMxLCAxMiwgMTMsIDIwOSwgMTMwLCAxMiwgMTMsIDIwOSwgCisgICAgMTI5LCAxMiwgMTMsIDIwOSwgMTI4LCAxMiwgMTMsIDIwOSwgMTI3LCAxMiwgMTMsIDIwOSwgMTI2LCAxMiwgMTMsIDIwOSwgCisgICAgMTI1LCAxMiwgMTMsIDIwOSwgMTI0LCAxMiwgMTMsIDIwOSwgMTIzLCAxMiwgMTMsIDIwOSwgMTIyLCAxMiwgMTMsIDIwOSwgCisgICAgMTIxLCAxMiwgMTMsIDIwOSwgMTIwLCAxMiwgMTMsIDIwOSwgMTE5LCAxMiwgMTMsIDIwOSwgMTE4LCAxMiwgMTMsIDIwOSwgCisgICAgMTE3LCAxMiwgMTMsIDIwOSwgMTE2LCAxMiwgMTMsIDIwOSwgMTE1LCAxMiwgMTMsIDIwOSwgMTE0LCAxMiwgMTMsIDIwOSwgCisgICAgMTEzLCAxMiwgMTMsIDIwOSwgMTEyLCAxMiwgMTMsIDIwOSwgMTExLCAxMiwgMTMsIDIwOSwgMTEwLCAxMiwgMTMsIDIwOSwgCisgICAgMTA5LCAxMiwgMTMsIDIwOSwgMTA4LCAxMiwgMTMsIDIwOSwgMTA3LCAxMiwgMTMsIDIwOSwgMTA2LCAxMiwgMTMsIDIwOSwgCisgICAgMTA1LCAxMiwgMTMsIDIwOSwgMTA0LCAxMiwgMTMsIDIwOSwgMTAzLCAxMiwgMTMsIDIwOSwgMTAyLCAxMiwgMTMsIDIwOSwgCisgICAgMTAxLCAxMiwgMTMsIDIwOSwgMTAwLCAxMiwgMTMsIDIwOSwgOTksIDEyLCAxMywgMjA5LCA5OCwgMTIsIDEzLCAyMDksIDk3LCAKKyAgICAxMiwgMTMsIDIwOSwgOTYsIDEyLCAxMywgMjA5LCA5NSwgMTIsIDEzLCAyMDksIDk0LCAxMiwgMTMsIDIwOSwgOTMsIDEyLCAKKyAgICAxMywgMjA5LCA5MiwgMTIsIDEzLCAyMDksIDkxLCAxMiwgMTMsIDIwOSwgOTAsIDEyLCAxMywgMjA5LCA4OSwgMTIsIDEzLCAKKyAgICAyMDksIDg4LCAxMiwgMTMsIDIwOSwgODcsIDEyLCAxMywgMjA5LCA4NiwgMTIsIDEzLCAyMDksIDg1LCAxMiwgMTMsIDIwOSwgCisgICAgODQsIDEyLCAxMywgMjA5LCA4MywgMTIsIDEzLCAyMDksIDgyLCAxMiwgMTMsIDIwOSwgODEsIDEyLCAxMywgMjA5LCA4MCwgCisgICAgMTIsIDEzLCAyMDksIDc5LCAxMiwgMTMsIDIwOSwgNzgsIDEyLCAxMywgMjA5LCA3NywgMTIsIDEzLCAyMDksIDc2LCAxMiwgCisgICAgMTMsIDIwOSwgNzUsIDEyLCAxMywgMjA5LCA3NCwgMTIsIDEzLCAyMDksIDczLCAxMiwgMTMsIDIwOSwgNzIsIDEyLCAxMywgCisgICAgMjA5LCA3MSwgMTIsIDEzLCAyMDcsIDEyOCwgMTIsIDEzLCAyMDcsIDEyNywgMTIsIDEzLCAyMDcsIDEyNiwgMTIsIDEzLCAKKyAgICAyMDcsIDEyNSwgMTIsIDEzLCAyMDcsIDEyNCwgMTIsIDEzLCAyMDcsIDEyMywgMTIsIDEzLCAyMDcsIDEyMiwgMTIsIDEzLCAKKyAgICAyMDcsIDEyMSwgMTIsIDEzLCAyMDcsIDEyMCwgMTIsIDEzLCAyMDcsIDExOSwgMTIsIDEzLCAyMDcsIDExOCwgMTIsIDEzLCAKKyAgICAyMDcsIDExNywgMTIsIDEzLCAyMDcsIDExNiwgMTIsIDEzLCAyMDcsIDExNSwgMTIsIDEzLCAyMDcsIDExNCwgMTIsIDEzLCAKKyAgICAyMDcsIDExMywgMTIsIDEzLCAyMDcsIDExMiwgMTIsIDEzLCAyMDcsIDExMSwgMTIsIDEzLCAyMDcsIDExMCwgMTIsIDEzLCAKKyAgICAyMDcsIDEwOSwgMTIsIDEzLCAyMDcsIDEwOCwgMTIsIDEzLCAyMDcsIDEwNywgMTIsIDEzLCAyMDcsIDEwNiwgMTIsIDEzLCAKKyAgICAyMDcsIDEwNSwgMTIsIDEzLCAyMDcsIDEwNCwgMTIsIDEzLCAyMDcsIDEwMywgMTIsIDEzLCAyMDcsIDEwMiwgMTIsIDEzLCAKKyAgICAyMDcsIDEwMSwgMTIsIDEzLCAyMDcsIDEwMCwgMTIsIDEzLCAyMDcsIDk5LCAxMiwgMTMsIDIwNywgOTgsIDEyLCAxMywgCisgICAgMjA3LCA5NywgMTIsIDEzLCAyMDYsIDE5MywgMTIsIDEzLCAyMDYsIDE5MiwgMTIsIDEzLCAyMDYsIDE5MSwgMTIsIDEzLCAKKyAgICAyMDYsIDE5MCwgMTIsIDEzLCAyMDYsIDE4OSwgMTIsIDEzLCAyMDYsIDE4OCwgMTIsIDEzLCAyMDYsIDE4NywgMTIsIDEzLCAKKyAgICAyMDYsIDE4NiwgMTIsIDEzLCAyMDYsIDE4NSwgMTIsIDEzLCAyMDYsIDE4NCwgMTIsIDEzLCAyMDYsIDE4MywgMTIsIDEzLCAKKyAgICAyMDYsIDE4MiwgMTIsIDEzLCAyMDYsIDEyMSwgMTIsIDEzLCAyMDYsIDEyMCwgMTIsIDEzLCAyMDYsIDExOSwgMTIsIDEzLCAKKyAgICAyMDYsIDExOCwgMTIsIDEzLCAyMDYsIDExNywgMTIsIDEzLCAyMDYsIDExNiwgMTIsIDEzLCAyMDYsIDExNSwgMTIsIDEzLCAKKyAgICAyMDYsIDExNCwgMTIsIDEzLCAyMDYsIDExMywgMTIsIDEzLCAyMDUsIDE1OCwgMTIsIDEzLCAyMDUsIDE1NywgMTIsIDEzLCAKKyAgICAyMDUsIDE1NiwgMTIsIDEzLCAyMDUsIDE1NSwgMTIsIDEzLCAyMDUsIDE1NCwgMTIsIDEzLCAyMDUsIDE1MywgMTIsIDEzLCAKKyAgICAyMDUsIDE1MiwgMTIsIDEzLCAyMDUsIDE1MSwgMTIsIDEzLCAyMDUsIDE1MCwgMTIsIDEzLCAyMDUsIDE0OSwgMTIsIDEzLCAKKyAgICAyMDUsIDE0OCwgMTIsIDEzLCAyMDUsIDE0NywgMTIsIDEzLCAyMDUsIDE0NiwgMTIsIDEzLCAyMDUsIDE0NSwgMTIsIDEzLCAKKyAgICAyMDUsIDE0NCwgMTIsIDEzLCAyMDUsIDE0MywgMTIsIDEzLCAyMDUsIDE0MiwgMTIsIDEzLCAyMDUsIDE0MSwgMTIsIDEzLCAKKyAgICAyMDUsIDE0MCwgMTIsIDEzLCAyMDUsIDEzOSwgMTIsIDEzLCAyMDUsIDEzOCwgMTIsIDEzLCAyMDUsIDEzNywgMTIsIDEzLCAKKyAgICAyMDUsIDEzNiwgMTIsIDEzLCAyMDUsIDEzNSwgMTIsIDEzLCAyMDUsIDEzNCwgMTIsIDEzLCAyMDUsIDEzMywgMTIsIDEzLCAKKyAgICAyMDUsIDEzMiwgMTIsIDEzLCAyMDUsIDEzMSwgMTIsIDEzLCAyMDUsIDEzMCwgMTIsIDEzLCAyMDUsIDEyOSwgMTIsIDEzLCAKKyAgICAyMDUsIDEyOCwgMTIsIDEzLCAyMDUsIDEyNywgMTIsIDEzLCAyMDUsIDEyNiwgMTIsIDEzLCAyMDUsIDEyNSwgMTIsIDEzLCAKKyAgICAyMDUsIDEyNCwgMTIsIDEzLCAyMDUsIDEyMywgMTIsIDEzLCAyMDUsIDEyMiwgMTIsIDEzLCAyMDUsIDEyMSwgMTIsIDEzLCAKKyAgICAyMDUsIDEyMCwgMTIsIDEzLCAyMDUsIDExOSwgMTIsIDEzLCAyMDUsIDExOCwgMTIsIDEzLCAyNTMsIDE2MywgMTIsIDEzLCAKKyAgICAyNTMsIDE2MiwgMTIsIDEzLCAyNTMsIDE2MSwgMTIsIDEzLCAyNTMsIDE2MCwgMTIsIDEzLCAyNTMsIDE1OSwgMTIsIDEzLCAKKyAgICAyNTMsIDE1OCwgMTIsIDEzLCAyNTMsIDE1NywgMTIsIDEzLCAyNTMsIDE1NiwgMTIsIDEzLCAyNTMsIDE1NSwgMTIsIDEzLCAKKyAgICAyNTMsIDE1NCwgMTIsIDEzLCAyNTMsIDE1MywgMTIsIDEzLCAyNTMsIDE1MiwgMTIsIDEzLCAyNTMsIDE1MSwgMTIsIDEzLCAKKyAgICAyNTMsIDE1MCwgMTIsIDEzLCAyNTMsIDE0OSwgMTIsIDEzLCAyNTMsIDE0OCwgMTIsIDEzLCAyNTMsIDE0NywgMTIsIDEzLCAKKyAgICAyNTMsIDE0NiwgMTIsIDEzLCAyNTMsIDE0NSwgMTIsIDEzLCAyNTMsIDE0NCwgMTIsIDEzLCAyNTMsIDE0MywgMTIsIDEzLCAKKyAgICAyNTMsIDE0MiwgMTIsIDEzLCAyNTMsIDE0MSwgMTIsIDEzLCAyNTMsIDE0MCwgMTIsIDEzLCAyNTMsIDEzOSwgMTIsIDEzLCAKKyAgICAyNTMsIDEzOCwgMTIsIDEzLCAyNTMsIDEzNywgMTIsIDEzLCAyNTMsIDEzNiwgMTIsIDEzLCAyNTMsIDEzNSwgMTIsIDEzLCAKKyAgICAyNTMsIDEzNCwgMTIsIDEzLCAyNTMsIDEzMywgMTIsIDEzLCAyNTMsIDEzMiwgMTIsIDEzLCAyNTMsIDEzMSwgMTIsIDEzLCAKKyAgICAyNTMsIDEzMCwgMjEsIDEsIDE4NywgMjI1LCAxMCwgMjI3LCA0MCwgMjEsIDEsIDE4NywgMjQwLCAxNzgsIDI0MSwgMTU0LCAKKyAgICAyMSwgMSwgMTg3LCAyMjAsIDE4OSwgMjI3LCA0MSwgMjIxLCAxLCAyMSwgMSwgMTg3LCAyMjAsIDE4OSwgMjI3LCA0MSwgCisgICAgMjIxLCAyLCAyMSwgMSwgMTg3LCAyMjUsIDIzMywgMjI3LCA0MCwgMjEsIDEsIDE4NywgMjE1LCAxMTIsIDIxLCAxLCAxODcsIAorICAgIDIxMSwgMTU1LCAyMjcsIDQwLCAyMSwgMSwgMTg3LCAyMjMsIDkyLCAyMjcsIDQwLCAyMSwgMSwgMTg3LCAyMTUsIDE3MCwgCisgICAgMjIyLCA1MiwgMjI0LCAxNjQsIDIxLCAxLCAxODcsIDIyMCwgMTg5LCAyMjIsIDUyLCAyMjQsIDE2NSwgMjIxLCAxLCAyMSwgCisgICAgMSwgMTg3LCAyMjAsIDE4OSwgMjIyLCA1MiwgMjI0LCAxNjUsIDIyMSwgMiwgMjEsIDEsIDE4NywgMjI3LCAyNTUsIDIxLCAxLCAKKyAgICAxODcsIDIxMCwgMTcxLCAyMjgsIDAsIDIxLCAxLCAxODcsIDIyNSwgNzEsIDIxLCAxLCAxODcsIDIyNywgMjUyLCAyMSwgMSwgCisgICAgMTg3LCAyMjcsIDIxMCwgMjEsIDEsIDE4NywgMjI2LCA1NiwgMjEsIDEsIDE4NywgMjE2LCAyNSwgMjEsIDEsIDE4NywgMjIzLCAKKyAgICAyMjQsIDIxLCAxLCAxODcsIDIzMSwgMTg2LCAyMSwgMSwgMTg3LCAyMjQsIDEzMiwgMjEsIDEsIDE4NywgMjEzLCAxMTksIAorICAgIDIxLCAxLCAxODcsIDIyNSwgOSwgMjEsIDEsIDE4NywgMjMwLCA4OCwgMjEsIDEsIDE4NywgMjMwLCA3LCAyMzAsIDIwMywgCisgICAgMjEsIDEsIDE4NywgMjIzLCAyMzQsIDIyNywgNDgsIDIxLCAxLCAxODcsIDIyOCwgMywgMjEsIDEsIDE4NywgMjIxLCAyMDIsIAorICAgIDIxLCAxLCAxODcsIDI0MCwgODAsIDIxLCAxLCAxODcsIDIyMiwgOSwgMjEsIDEsIDE4NywgMjI2LCAxNjksIDIyNSwgNDQsIAorICAgIDIxLCAxLCAxODcsIDIyMywgNzMsIDIyNywgNTEsIDIxLCAxLCAxODcsIDEwNiwgMjA1LCAxODgsIDIyNSwgMjI2LCAyMSwgMSwgCisgICAgMTg3LCAyNDAsIDgxLCAyMSwgMSwgMTg3LCAyMjMsIDIzNCwgMjIzLCAyMzUsIDIxLCAxLCAxODcsIDIxNSwgMTMsIDIxLCAxLCAKKyAgICAxODcsIDIyNywgMzMsIDIxLCAxLCAxODcsIDIyNywgNTQsIDIxLCAxLCAxODcsIDIyNiwgMTQ2LCAyMSwgMSwgMTg3LCAyMzIsIAorICAgIDQ0LCAyMSwgMSwgMTg3LCAyMjIsIDUyLCAyMzAsIDQ3LCAyMSwgMSwgMTg3LCAyMjUsIDE1MiwgMjMwLCA0NywgMjEsIDEsIAorICAgIDE4NywgMjIxLCAxMDQsIDIxLCAxLCAxODcsIDIyNywgMjUzLCAyMSwgMSwgMTg3LCAyMjQsIDIwNCwgMjEsIDEsIDE4NywgCisgICAgMjIwLCA2NSwgMjEsIDEsIDE4NywgMjEwLCAxNjgsIDIxLCAxLCAxODcsIDIyOSwgNzcsIDIxLCAxLCAxODcsIDIxNCwgMTc1LCAKKyAgICAyMSwgMSwgMTg3LCAyMTIsIDY1LCAyMSwgMSwgMTg3LCAyMjcsIDI1MCwgMjEsIDEsIDE4NywgMjMxLCAxOTMsIDIxLCAxLCAKKyAgICAxODcsIDIyNSwgMTQ4LCAyMSwgMSwgMTg3LCAyMzAsIDIxNSwgMjEsIDEsIDE4NywgMjI2LCAxNDcsIDIxLCAxLCAxODcsIAorICAgIDIxNSwgMTA4LCAyMSwgMSwgMTg3LCAyMjksIDEyNiwgMjEsIDEsIDE4NywgMjQxLCAyMTYsIDIxLCAxLCAxODcsIDIxOCwgCisgICAgMTEwLCAyMSwgMSwgMTg3LCAyMzEsIDQsIDIxLCAxLCAxODcsIDIxNCwgMTcxLCAyMSwgMSwgMTg3LCAyMjcsIDIwNiwgMjIxLCAKKyAgICA0MywgMjEsIDEsIDE4NywgMjE1LCAxNjMsIDIxLCAxLCAxODcsIDIyMywgMjMzLCAyMSwgMSwgMTg3LCAyMTUsIDE0NiwgCisgICAgMjIzLCAyNDQsIDIwNSwgMTk2LCAyMSwgMSwgMTg3LCAyMjMsIDExNCwgMjI2LCAxNjYsIDIxLCAxLCAxODcsIDIyMiwgNDcsIAorICAgIDIxLCAxLCAxODcsIDIyNCwgMTM0LCAyMSwgMSwgMTg3LCAyMDksIDIxMywgMjEsIDEsIDE4NywgMjI1LCA0NywgMjEsIDEsIAorICAgIDE4NywgMjI3LCAyNDksIDIxLCAxLCAxODcsIDIyNCwgMTc2LCAyMSwgMSwgMTg3LCAyMjcsIDE0OCwgMjEsIDEsIDE4NywgCisgICAgMjIzLCAxMjgsIDIxLCAxLCAxODcsIDIxMiwgNjksIDIxLCAxLCAxODcsIDIxNCwgMTY4LCAyMSwgMSwgMTg3LCAyMjIsIDQ4LCAKKyAgICAyMSwgMSwgMTg3LCAyMjMsIDI0OCwgMjEsIDEsIDE4NywgMjI4LCAxLCAyMSwgMSwgMTg3LCAyMjMsIDEyNSwgMjEsIDEsIAorICAgIDE4NywgMjMyLCA4LCAyMSwgMSwgMTg3LCAyMjMsIDI1MSwgMjEsIDEsIDE4NywgMjA5LCAzNCwgMjEsIDEsIDE4NywgMjI5LCAKKyAgICA4MSwgMjEsIDEsIDE4NywgMjI1LCAxMDEsIDIxLCAxLCAxODcsIDIyNSwgMjAxLCAyMSwgMSwgMTg3LCAyMjcsIDE0NywgMjEsIAorICAgIDEsIDIyMSwgODMsIDIyMywgMjQ2LCAyMSwgMSwgMjIxLCA4MywgMjEwLCAxNzEsIDIyNywgMjU0LCAyMSwgMSwgMjIxLCA4MywgCisgICAgMjE1LCA3MSwgMjEsIDEsIDIyMSwgODMsIDIxNiwgMjksIDIxMCwgMTcwLCAyMSwgMSwgMjIxLCA4MywgMjI5LCAxMjgsIAorICAgIDIyMywgMjMwLCAyMSwgMSwgMjIxLCA4MywgMjI3LCAxNTQsIDIyOCwgMiwgMjEsIDEsIDIyMSwgODMsIDIzMSwgMTE1LCAyMSwgCisgICAgMSwgMjIxLCA4MywgMjA2LCAxOCwgMjEsIDEsIDIyMSwgODMsIDIyNywgMTQ5LCAyMSwgMSwgMjIxLCA4MywgMjMyLCAzMCwgCisgICAgMjEsIDEsIDIyMSwgODMsIDIyMSwgMTYwLCAyMSwgMSwgMjIxLCA4MywgMjA2LCA5NSwgMjMwLCA0NywgMjEsIDEsIDIyMSwgCisgICAgODMsIDIzMCwgMTA3LCAyMjMsIDI0NCwgMjIzLCAxMzksIDIxLCAxLCAyMjEsIDgzLCAyMjMsIDIyNywgMjE1LCAxODksIDIxLCAKKyAgICAxLCAyMjEsIDgzLCAyMjUsIDExOSwgMjI0LCAxNzksIDIxLCAxLCAyMjEsIDgzLCAyNDAsIDc4LCAyMSwgMSwgMjIxLCA4MywgCisgICAgMjIwLCAyNDcsIDIxLCAxLCAyMjEsIDgzLCAyMTAsIDE3MSwgMjIzLCAyNDIsIDIxLCAxLCAyMjEsIDgzLCAyMTUsIDE5NCwgCisgICAgMjI0LCAxNzQsIDIxLCAxLCAyMjEsIDgzLCAyMTUsIDE5MCwgMjEsIDEsIDIyMSwgODMsIDIyNywgNDEsIDIxMiwgNjgsIDIxLCAKKyAgICAxLCAyMjEsIDgzLCAyMjcsIDEzNiwgMjI3LCAxNTAsIDIxLCAxLCAyMjEsIDgzLCAyMjMsIDEyNiwgMjIzLCAyMzAsIDIxLCAKKyAgICAxLCAyMjEsIDgzLCAyMzEsIDE4MiwgMjEsIDEsIDIyMSwgODMsIDI0MCwgNzksIDIxLCAxLCAyMjEsIDgzLCAyMzEsIDE3OCwgCisgICAgMjEsIDEsIDIyMSwgODMsIDIzMCwgMTM1LCAyMSwgMSwgMjIxLCA4MywgMjIxLCAyMDUsIDIxLCAxLCAyMjEsIDgzLCAyMDgsIAorICAgIDIyMSwgMjEsIDEsIDIyMSwgODMsIDIyNSwgMTEsIDIyNiwgNTQsIDIxLCAxLCAyMjEsIDgzLCAyMjUsIDQ2LCAyMjcsIDEzMiwgCisgICAgMjEsIDEsIDIyMSwgODMsIDIwNiwgMjE0LCAyMSwgMSwgMjIxLCA4MywgMjE3LCAxNzUsIDIxLCAxLCAyMjEsIDgzLCAyMTIsIAorICAgIDIxMSwgMjEsIDEsIDIyMSwgODMsIDIyNywgNTMsIDIxLCAxLCAyMjEsIDgzLCAyMjUsIDMwLCAyMSwgMSwgMjIxLCA4MywgCisgICAgMjI1LCAzMSwgMjMwLCA4NSwgMjEsIDEsIDIyMSwgODMsIDIyNywgNDMsIDIxLCAxLCAyMjEsIDgzLCAyMTMsIDE3MCwgMjEsIAorICAgIDEsIDIyMSwgODMsIDIyNywgMTQwLCAyMSwgMSwgMjIxLCA4MywgMjI2LCAxNTEsIDIxLCAxLCAyMjEsIDgzLCAyMjMsIDE0MiwgCisgICAgMjEsIDEsIDIyMSwgODMsIDIyMCwgNjksIDIxLCAxLCAyMjEsIDgzLCAyMjcsIDUyLCAyMjUsIDQ4LCAyMSwgMSwgMjIxLCAKKyAgICA4MywgMjQxLCAyNTUsIDIxLCAxLCAyMjEsIDgzLCAyMjcsIDEyNywgMjEsIDEsIDIyMSwgODMsIDI0MiwgMjEsIDIxLCAxLCAKKyAgICAyMjEsIDgzLCAyMzEsIDE5MCwgMjEsIDEsIDIyMSwgODMsIDIyOCwgMjAsIDIyNCwgMTY4LCAyMSwgMSwgMjIxLCA4MywgCisgICAgMjI4LCAyMCwgMjI0LCAxNDQsIDIxLCAxLCAyMjEsIDgzLCAyMzAsIDYsIDIxLCAxLCAyMjEsIDgzLCAyMjUsIDU0LCAyMSwgCisgICAgMSwgMjIxLCA4MywgMjIzLCAyNTMsIDIxLCAxLCAyMjEsIDgzLCAxODUsIDIxLCAxLCAyMjEsIDgzLCAyMzEsIDEwMiwgMjEsIAorICAgIDEsIDIyMSwgODMsIDIyNCwgMjU1LCAyMSwgMSwgMTU4LCAyMjUsIDEwLCAyMjgsIDAsIDIxLCAxLCAxNTgsIDIyMywgOTEsIAorICAgIDIxLCAxLCAxNTgsIDIwNSwgMTk2LCAyMSwgMSwgMTU4LCAyMDcsIDgzLCAyMSwgMSwgMTU4LCAyMjUsIDQ3LCAyMSwgMSwgCisgICAgMTU4LCAyMjUsIDE0MCwgMjEsIDEsIDE1OCwgMjI1LCAxNywgMjEsIDEsIDE1OCwgMjQwLCA4OCwgMjEsIDEsIDE1OCwgMjI3LCAKKyAgICAxNDQsIDIxLCAxLCAxNTgsIDI0MCwgMTg1LCAyMSwgMSwgMTU4LCAyMjMsIDExNiwgMjI2LCAxOTAsIDIyNywgNTUsIDIxLCAKKyAgICAxLCAxNTgsIDIyMywgMjIyLCAyMjcsIDEzNSwgMjEsIDEsIDE1OCwgMjI3LCAxNDEsIDIxLCAxLCAxNTgsIDIyMCwgMjUzLCAKKyAgICAyMSwgMSwgMTU4LCAyMjUsIDEyNSwgMjEsIDEsIDE1OCwgMjI3LCAxNTIsIDI0OCwgMjUzLCAyMSwgMSwgMTU4LCAyMzEsIAorICAgIDE4MCwgMjEsIDEsIDE1OCwgMjQwLCA4OSwgMjEsIDEsIDE1OCwgMjMxLCAxODcsIDIxLCAxLCAxNTgsIDIwNSwgMjE0LCAKKyAgICAyMjYsIDg1LCAyMSwgMSwgMTU4LCAyMjMsIDg1LCAyMSwgMSwgMTU4LCAyMjcsIDEyOSwgMjEsIDEsIDE1OCwgMjIzLCAyNTIsIAorICAgIDIxLCAxLCAxNTgsIDIyNywgMTM1LCAyMSwgMSwgMTU4LCAyMDYsIDE5LCAyMSwgMSwgMTU4LCAyMzEsIDEyLCAyMSwgMSwgCisgICAgMTU4LCAyMzIsIDYzLCAyMSwgMSwgMTU4LCAyMTYsIDI0LCAyMSwgMSwgMTU4LCAyMjUsIDEzNCwgMjEsIDEsIDE1OCwgMjEyLCAKKyAgICAyMDksIDIxLCAxLCAxNTgsIDIyNCwgMTQ4LCAyMSwgMSwgMTU4LCAyMTEsIDE1NSwgMjA1LCAxOTksIDIxLCAxLCAxNTgsIAorICAgIDIxMywgMTk4LCAyMSwgMSwgMTU4LCAyMjUsIDM3LCAyMjMsIDEzOSwgMjEsIDEsIDE1OCwgMjA4LCAyMjAsIDIxLCAxLCAKKyAgICAxNTgsIDIyNSwgMjA0LCAyMSwgMSwgMTU4LCAyMjgsIDIwLCAyMzEsIDE4OSwgMjEsIDEsIDE1OCwgMjIzLCAyMzUsIDIxLCAKKyAgICAxLCAxNTgsIDIyNSwgMzIsIDIxLCAxLCAxNTgsIDIzMCwgODksIDIxLCAxLCAxNTgsIDIyNywgMTM3LCAyMSwgMSwgMTU4LCAKKyAgICAyMjcsIDMyLCAyMSwgMSwgMTU4LCAyMjMsIDIyOSwgMjEsIDEsIDE1OCwgMjEyLCA2NCwgMjEsIDEsIDE1OCwgMjI1LCAzNCwgCisgICAgMjEsIDEsIDE1OCwgMjQxLCA4NiwgMjEsIDEsIDE1OCwgMjI1LCAxMzksIDIxLCAxLCAxNTgsIDIyMywgMjU0LCAyMSwgMSwgCisgICAgMTU4LCAyMjMsIDI1MCwgMjEsIDEsIDE1OCwgMjQ5LCA3NywgMjEsIDEsIDE1OCwgMjA4LCAyMjIsIDIxLCAxLCAxNTgsIAorICAgIDIyNywgMTQyLCAyMSwgMSwgMTU4LCAyMTgsIDUwLCAyMSwgMSwgMTU4LCAyMjQsIDE3OCwgMjEsIDEsIDE1OCwgMjMwLCAKKyAgICAxMDYsIDIxLCAxLCAxNTgsIDIxMSwgMTUzLCAyMSwgMSwgMTU4LCAyMjMsIDIzNiwgMjI0LCAyNTUsIDIxLCAxLCAxNTgsIAorICAgIDIyNCwgMTcwLCAyMSwgMSwgMTU4LCAyMzEsIDE5MywgMjEsIDEsIDE1OCwgMjI1LCAzOSwgMjEsIDEsIDE1OCwgMjI3LCAKKyAgICAyNDksIDIxLCAxLCAxNTgsIDIyNywgMTMwLCAyMSwgMSwgMTU4LCAyMjksIDgxLCAyMSwgMSwgMTU4LCAyMzAsIDIwMywgMjEsIAorICAgIDEsIDE1OCwgMjI0LCAxNzYsIDIxLCAxLCAxNTgsIDIyNCwgMjU1LCAyMSwgMSwgMTU4LCAyMDYsIDIwNCwgMjEsIDEsIDE1OCwgCisgICAgMjI1LCAzNSwgMjEsIDEsIDE1OCwgMjIzLCAyMzksIDIxLCAxLCAxNTgsIDIyMywgMjMxLCAyMSwgMSwgMTU4LCAyMzAsIAorICAgIDIxNywgMjI0LCAxMzQsIDIxLCAxLCAxNTgsIDIyMywgMjM3LCAyMSwgMSwgMTU4LCAyMjUsIDE0NywgMjEsIDEsIDE1OCwgCisgICAgMjI4LCAyMCwgMjIzLCAyNDIsIDIxLCAxLCAxNTgsIDIwNiwgMTA5LCAyMSwgMSwgMTU4LCAyMjUsIDE0NiwgMjEsIDEsIAorICAgIDE1OCwgMjE1LCAxMTEsIDIxLCAxLCAxNTgsIDIxNiwgMjcsIDIxLCAxLCAxNTgsIDIyNywgMTM4LCAyMSwgMSwgMTU4LCAKKyAgICAyMjgsIDAsIDIxLCAxLCAxNTgsIDIyNywgMTQ4LCAyMSwgMSwgMTU4LCAyMzEsIDE4MSwgMjEsIDEsIDE1OCwgMjI3LCAxMzksIAorICAgIDIxLCAxLCAxNTgsIDIzMSwgMTg1LCAyMSwgMSwgMTU4LCAyMjcsIDE1MiwgMjIxLCA0OCwgMjEsIDEsIDE1OCwgMjA1LCAKKyAgICAxNzksIDIxLCAxLCAxNTgsIDIyNCwgMTY2LCAyMSwgMSwgMTU4LCAyMjYsIDI0MywgMjEsIDEsIDE1OCwgMjI2LCAxMTIsIAorICAgIDIxLCAxLCAxNTgsIDIxNSwgMTY2LCAyMSwgMSwgMTU4LCAyMzEsIDIwNCwgMjMwLCA3MCwgMjEsIDEsIDE1OCwgMjMxLCAKKyAgICAyMDQsIDI0MiwgMzQsIDIxLCAxLCAxNTgsIDIyNSwgNjksIDIxLCAxLCAxNTgsIDIyNSwgMjAxLCAyMSwgMSwgMTU4LCAyMjksIAorICAgIDE5MCwgMjEsIDEsIDE1OCwgMjIxLCA5LCAyMSwgMSwgMTU4LCAyMjEsIDE1MCwgMjEsIDEsIDE1OCwgMjEyLCA4MCwgMjEsIAorICAgIDEsIDEyMywgMjI3LCAxMjgsIDIxLCAxLCAxMjMsIDIwNywgODEsIDIxLCAxLCAxMjMsIDIyNCwgMTY0LCAyMSwgMSwgMTIzLCAKKyAgICAyMjcsIDQwLCAyMSwgMSwgMTIzLCAyMjQsIDE2MiwgMjEsIDEsIDEyMywgMjI5LCAyMjksIDIxLCAxLCAxMjMsIDIyNCwgCisgICAgMTY3LCAyMSwgMSwgMTIzLCAyMjMsIDI0OSwgMjEsIDEsIDEyMywgMjI1LCA1MywgMjEsIDEsIDEyMywgMjIzLCAxMzksIDIxLCAKKyAgICAxLCAxMjMsIDIwNiwgMjE1LCAyMSwgMSwgMTIzLCAyMjUsIDcsIDIxLCAxLCAxMjMsIDIxNSwgMjEyLCAyMSwgMSwgMTIzLCAKKyAgICAyMjUsIDE4LCAyMSwgMSwgMTIzLCAyMzEsIDE4OCwgMjEsIDEsIDEyMywgMjEyLCA2NiwgMjEsIDEsIDEyMywgMjE1LCAxOTIsIAorICAgIDIxLCAxLCAxMjMsIDIyNCwgMTc1LCAyMSwgMSwgMTIzLCAyMTMsIDE3MCwgMjEsIDEsIDEyMywgMjMxLCAxOTMsIDIxLCAxLCAKKyAgICAxMjMsIDIwNiwgOTcsIDIxLCAxLCAxMjMsIDIzMCwgMjE4LCAyMSwgMSwgMTIzLCAyMTcsIDE0MSwgMjEsIDEsIDEyMywgCisgICAgMjI3LCA0NSwgMjEsIDEsIDEyMywgMjI1LCAxMzgsIDIxLCAxLCAxMjMsIDIyNywgMjI0LCAyMSwgMSwgMTIzLCAyMjcsIDUxLCAKKyAgICAyMSwgMSwgMTIzLCAyMTYsIDI2LCAyMSwgMSwgMTIzLCAyMDYsIDQyLCAyMSwgMSwgMTIzLCAyMjQsIDE2OSwgMjEsIDEsIAorICAgIDEyMywgMjMxLCAxODQsIDIyNywgMTMxLCAyMSwgMSwgMTIzLCAyMjUsIDE0LCAyMSwgMSwgMTIzLCAyMTAsIDE3MCwgMjEsIAorICAgIDEsIDEyMywgMjQwLCA5OCwgMjEsIDEsIDEyMywgMjI1LCA0LCAyMSwgMSwgMTIzLCAyNDIsIDAsIDIxLCAxLCAxMjMsIDIyNSwgCisgICAgMTQyLCAyMSwgMSwgMTIzLCAyMjcsIDI0LCAyMSwgMSwgMTIzLCAyMzAsIDAsIDIxLCAxLCAxMjMsIDIyNSwgMTI0LCAyMSwgCisgICAgMSwgMTIzLCAyMjYsIDE2NSwgMjEsIDEsIDEyMywgMjI3LCAyOCwgMjEsIDEsIDEyMywgMjIwLCA0OSwgMjEsIDEsIDEyMywgCisgICAgMjI3LCAyNiwgMjEsIDEsIDEyMywgMjI3LCA0MiwgMjEsIDEsIDEyMywgMjI5LCA2NSwgMjEsIDEsIDEyMywgMjIzLCAyNDEsIAorICAgIDIxLCAxLCAxMjMsIDIyNywgMTUxLCAyMSwgMSwgMTIzLCAyMzAsIDE5MywgMjEsIDEsIDEyMywgMjIzLCAxMjgsIDIxLCAxLCAKKyAgICAxMjMsIDIxMiwgNjksIDIxLCAxLCAxMjMsIDIxNCwgMTY4LCAyMSwgMSwgMTIzLCAyMDUsIDE3OSwgMjEsIDEsIDEyMywgCisgICAgMjMxLCAxODUsIDIxLCAxLCAxMjMsIDIxOSwgOTQsIDIxLCAxLCAxMjMsIDIxMiwgMTE5LCAyMSwgMSwgMTIzLCAyMjUsIDE1LCAKKyAgICAyMSwgMSwgMTIzLCAyMjcsIDQ3LCAyMSwgMSwgMTIzLCAyMjMsIDI0MCwgMjEsIDEsIDEyMywgMjMxLCAxODMsIDIxLCAxLCAKKyAgICAxMjMsIDIyMSwgMywgMjEsIDEsIDEyMywgMjIxLCA5OCwgMjEsIDEsIDEyMywgMjIzLCAxMDIsIDIxLCAxLCAxMjMsIDIzMCwgCisgICAgNiwgMjEsIDEsIDEyMywgMjI1LCA1NCwgMjEsIDEsIDEyMywgMjI3LCA0NCwgMjEsIDEsIDEyMywgMjI1LCAyNywgMjEsIDEsIAorICAgIDEyMywgMjA1LCAxOTMsIDIxLCAxLCAxMjMsIDIyMSwgMjM2LCAyMSwgMSwgMTIzLCAyMDUsIDE5MiwgMjEsIDEsIDEyMywgCisgICAgMjI1LCAxNDcsIDIxLCAxLCAxMjMsIDIyMywgMjMwLCAyMSwgMSwgMTIzLCAyMTMsIDIwMCwgMjEsIDEsIDEyMywgMjMwLCAKKyAgICAyMjIsIDIxLCAxLCAxMjMsIDIyNSwgNDMsIDIxLCAxLCAxMjMsIDIyNSwgMTIsIDIxLCAxLCAxMjMsIDIxMCwgMTUzLCAyMSwgCisgICAgMSwgMTIzLCAyMjcsIDU1LCAyMSwgMSwgMTIzLCAyMzAsIDIxMiwgMjEsIDEsIDEyMywgMjIzLCAyMzgsIDIxLCAxLCAxMjMsIAorICAgIDIxMiwgNjcsIDIxLCAxLCAxMjMsIDIyNywgMjUxLCAyMSwgMSwgMTIzLCAyMjUsIDUyLCAyMSwgMSwgMTIzLCAyMjksIDI1NSwgCisgICAgMjEsIDEsIDEyMywgMjI1LCAzMywgMjEsIDEsIDEyMywgMjIzLCAyNDMsIDIxLCAxLCAxMjMsIDIyNCwgMTQ4LCAyMSwgMSwgCisgICAgMTIzLCAyNDAsIDgyLCAyMSwgMSwgMTIzLCAyMzAsIDIzNiwgMjEsIDEsIDEyMywgMjE5LCAzLCAyMjIsIDE3OSwgMjEsIDEsIAorICAgIDEyMywgMjEyLCAyMDAsIDIxLCAxLCAxMjMsIDIxMSwgOTgsIDIxLCAxLCAxMjMsIDIyMywgMTI1LCAyMSwgMSwgMTIzLCAKKyAgICAyMTgsIDE1NCwgMjEsIDEsIDEyMywgMjMwLCA0OSwgMjEsIDEsIDEyMywgMjI3LCAxMDYsIDIxLCAxLCAxMjMsIDIyOSwgMjgsIAorICAgIDIxLCAxLCAxMjMsIDIxMywgMTE5LCAyMSwgMSwgMTIzLCAyMjYsIDExNCwgMjEsIDEsIDEyMywgMjE1LCAxNzgsIDIxLCAxLCAKKyAgICAxMjMsIDIxNSwgMTg4LCAyMSwgMSwgMTIzLCAyMzAsIDE2NSwgMjEsIDEsIDEyMywgMjIzLCAyMTcsIDIxLCAxLCAxMjMsIAorICAgIDIxNSwgMTE2LCAyMSwgMSwgMTIzLCAyMjMsIDIzMiwgMjEsIDEsIDEyMywgMjIxLCAxNjQsIDIxLCAxLCAxMjMsIDIyNCwgCisgICAgMjMwLCAyMSwgMSwgMTIzLCAyMTUsIDE0NSwgMjEsIDEsIDEyMywgMjIwLCA2NCwgMjEsIDEsIDEyMywgMjI2LCA1NCwgMjEsIAorICAgIDEsIDEyMywgMjI5LCAxMDcsIDIxLCAxLCAxMjMsIDIxOSwgMywgMjI2LCAxMDcsIDIxLCAxLCAxMjMsIDIxMSwgMjExLCAyMSwgCisgICAgMSwgMTIzLCAyMjMsIDIxOSwgMjEsIDEsIDEyMywgMjI3LCAxNTIsIDE5NSwgMjEsIDEsIDEyMywgMjE3LCAxMzksIDIxLCAxLCAKKyAgICAxMjMsIDI0MiwgNzIsIDIxLCAxLCA4OCwgMjI1LCAxNDYsIDIxLCAxLCA4OCwgMjExLCAxMDQsIDIxLCAxLCA4OCwgMjI3LCAKKyAgICAxNDEsIDIxLCAxLCA4OCwgMjMwLCA4OSwgMjEsIDEsIDg4LCAyMDgsIDE2MiwgMjEsIDEsIDg4LCAyMjksIDExMywgMjEsIDEsIAorICAgIDg4LCAyMjIsIDUxLCAyMSwgMSwgODgsIDIxNCwgMTc5LCAyMSwgMSwgODgsIDIxOSwgNjksIDIxLCAxLCA4OCwgMjIzLCAKKyAgICAyNDUsIDIxLCAxLCA4OCwgMjI1LCAxMTcsIDIxLCAxLCA4OCwgMjIwLCA3OSwgMjEsIDEsIDg4LCAyMTIsIDE3NiwgMjEsIDEsIAorICAgIDg4LCAyMjUsIDIwLCAyMSwgMSwgODgsIDIzMSwgOCwgMjEsIDEsIDg4LCAyMDYsIDIwNywgMjEsIDEsIDg4LCAyMTcsIDc0LCAKKyAgICAyMSwgMSwgODgsIDIyNSwgNDQsIDIxLCAxLCA4OCwgMjIyLCA0OCwgMjEsIDEsIDg4LCAyMTEsIDEwNSwgMjEsIDEsIDg4LCAKKyAgICAyMzAsIDIxNiwgMjEsIDEsIDg4LCAyMjksIDEyNywgMjEsIDEsIDg4LCAyMjMsIDI0OCwgMjEsIDEsIDg4LCAyMjQsIDI1MiwgCisgICAgMjEsIDEsIDg4LCAyMjgsIDEsIDIxLCAxLCA4OCwgMjI1LCAxMywgMjEsIDEsIDg4LCAyMjQsIDI1MSwgMjEsIDEsIDg4LCAKKyAgICAyMjMsIDI0NywgMjEsIDEsIDg4LCAyMTgsIDE1MiwgMjEsIDEsIDg4LCAyMjQsIDE2NiwgMjEsIDEsIDg4LCAyMjEsIDE2MiwgCisgICAgMjEsIDEsIDg4LCAyMTcsIDE5NiwgMjEsIDEsIDg4LCAyMjUsIDI4LCAyMSwgMSwgODgsIDIyNywgMzQsIDIxLCAxLCA4OCwgCisgICAgMjQwLCA3NiwgMjEsIDEsIDg4LCAyMjUsIDE2LCAyMSwgMSwgODgsIDIyNCwgMTc3LCAyMSwgMSwgODgsIDIyNywgMjA1LCAKKyAgICAyMSwgMSwgODgsIDIyOSwgMTA5LCAyMSwgMSwgODgsIDIyNSwgNDksIDIxLCAxLCA4OCwgMjI1LCAxMzAsIDIxLCAxLCA4OCwgCisgICAgMjEyLCAxOTksIDIyMywgMjMwLCAyMSwgMSwgODgsIDIxNiwgMjgsIDIxLCAxLCA4OCwgMjIwLCA3NCwgMjEsIDEsIDg4LCAKKyAgICAyMjUsIDE1MCwgMjE0LCAxODYsIDIxLCAxLCA4OCwgMjI1LCAzNiwgMjIzLCAxMzksIDIxLCAxLCA4OCwgMjA2LCA3LCAyMSwgCisgICAgMSwgODgsIDI0MCwgNzcsIDIxLCAxLCA4OCwgMjEwLCAxNjksIDIxLCAxLCA4OCwgMjA2LCAyMiwgMjEsIDEsIDg4LCAyMjAsIAorICAgIDIxMSwgMjEsIDEsIDg4LCAyMTAsIDE1OCwgMjEsIDEsIDg4LCAyMzEsIDE5MSwgMjEsIDEsIDg4LCAyMTMsIDE5OSwgMjEsIAorICAgIDEsIDg4LCAyMTIsIDY4LCAyMSwgMSwgODgsIDIwOCwgMjIzLCAyMSwgMSwgODgsIDIwNywgMzMsIDIxLCAxLCA4OCwgMjMwLCAKKyAgICAxMzgsIDIxLCAxLCA4OCwgMjIwLCA4MiwgMjEsIDEsIDg4LCAyMTIsIDIxMCwgMjEsIDEsIDg4LCAyNDAsIDk3LCAyMSwgMSwgCisgICAgODgsIDIyNSwgNTksIDIxLCAxLCA4OCwgMjE1LCAxOTEsIDIxLCAxLCA4OCwgMjI3LCAyOSwgMjEsIDEsIDg4LCAyMjcsIAorICAgIDE0NSwgMjEsIDEsIDg4LCAyMjMsIDg5LCAyMSwgMSwgODgsIDIyNCwgMTMwLCAyMSwgMSwgODgsIDI0MCwgMTgxLCAyMSwgMSwgCisgICAgODgsIDIxMCwgMTU5LCAyMSwgMSwgODgsIDIzMCwgMjI2LCAyMSwgMSwgODgsIDIwNiwgNzMsIDIxLCAxLCA4OCwgMjIzLCAKKyAgICAxMjYsIDI0NywgMjA4LCAyMSwgMSwgODgsIDIwNSwgMjUzLCAyMSwgMSwgODgsIDIyNywgNDYsIDIxLCAxLCA4OCwgMjI1LCAKKyAgICAxMzUsIDIxLCAxLCA4OCwgMjIxLCA0NCwgMjEsIDEsIDg4LCAyMDUsIDE5OCwgMjEsIDEsIDg4LCAyMzAsIDEsIDIxLCAxLCAKKyAgICA4OCwgMjQxLCA4NiwgMjEsIDEsIDg4LCAyNDAsIDE4MCwgMjEsIDEsIDg4LCAyMjUsIDYsIDIxLCAxLCA4OCwgMjMxLCAxOTMsIAorICAgIDIxLCAxLCA4OCwgMjI4LCA0LCAyMSwgMSwgODgsIDIyNSwgMTksIDIxLCAxLCA4OCwgMjQwLCA4MywgMjEsIDEsIDg4LCAKKyAgICAyNDIsIDczLCAyMSwgMSwgODgsIDIyMywgMjIwLCAyMSwgMSwgODgsIDIyMSwgOTksIDIxLCAxLCA4OCwgMjA2LCAyMCwgMjEsIAorICAgIDEsIDg4LCAyMjUsIDQ1LCAyMSwgMSwgODgsIDIyMywgMTI2LCAyNTAsIDUsIDIxLCAxLCA4OCwgMjIzLCA2OSwgMjEsIDEsIAorICAgIDg4LCAyMjAsIDE4NSwgMjEsIDEsIDg4LCAyMjYsIDI0MywgMjEsIDEsIDg4LCAyNDEsIDg0LCAyMSwgMSwgODgsIDIyNSwgCisgICAgMjI2LCAyMSwgMSwgODgsIDIyNiwgMTEyLCAyMSwgMSwgODgsIDI0MCwgODIsIDIxLCAxLCA4OCwgMjQxLCA4OSwgNzQsIDIxLCAKKyAgICAxLCA4OCwgMjI2LCA1NSwgMjEsIDEsIDg4LCAyMjAsIDc4LCAyMSwgMSwgODgsIDIyNSwgOCwgMjEsIDEsIDg4LCAyMzAsIAorICAgIDIwMywgMjEsIDEsIDg4LCAyMjEsIDQxLCAyMSwgMSwgODgsIDIyMywgMjMzLCAyMSwgMSwgODgsIDIwNiwgMjEsIDIxLCAxLCAKKyAgICA4OCwgMjI1LCAyOSwgMjEsIDEsIDg4LCAyMjIsIDUyLCAyMjEsIDEzNywgMjEsIDEsIDg4LCAyNDEsIDg5LCAyNDgsIDIzNiwgCisgICAgMjEsIDEsIDg4LCAyNDEsIDE1NSwgMjEsIDEsIDg4LCAyMjQsIDE3MSwgMjEsIDEsIDg4LCA2MiwgMjEsIDEsIDg4LCAyMTEsIAorICAgIDk4LCAyMSwgMSwgODgsIDc2LCAyMSwgMSwgODgsIDc0LCAyMSwgMSwgODgsIDIzMCwgODcsIDIxLCAxLCA4OCwgMjIyLCA1MiwgCisgICAgMjIwLCAyMTksIDIxLCAxLCA4OCwgMjEyLCAyMTUsIDIxLCAxLCA4OCwgMjEyLCAxNjMsIDIxLCAxLCA4OCwgMjI1LCAxNTAsIAorICAgIDIyNiwgNDIsIDIzOCwgNTQsIDIxLCAxLCA4OCwgMjE1LCAxNjYsIDIxLCAxLCA4OCwgMjA2LCAxNywgMjEsIDEsIDg4LCAKKyAgICAyMjQsIDI0NSwgMjEsIDEsIDg4LCAyMDUsIDIwMywgMjEsIDEsIDg4LCAyMDUsIDIzMCwgMjEzLCA5OSwgMjEsIDEsIDg4LCAKKyAgICAyMDUsIDIzMCwgMjQ3LCA3NywgMjEsIDEsIDg4LCAyMDUsIDE4NywgMjEsIDEsIDg4LCAyMDUsIDE5NSwgMjEsIDEsIDg4LCAKKyAgICAyMzEsIDE3OSwgMjEsIDEsIDg4LCAyMjEsIDk3LCAyMSwgMSwgODgsIDIyNCwgMTcyLCAyNDIsIDI0NiwgMjEsIDEsIDg4LCAKKyAgICAyMjAsIDc1LCAyMSwgMSwgODgsIDIwNiwgMjEzLCAyMSwgMSwgODgsIDI0MiwgMjEsIDIxLCAxLCA4OCwgMjA5LCAzNCwgMjEsIAorICAgIDEsIDg4LCAyMjksIDgxLCAyMSwgMSwgODgsIDIyNiwgMjU0LCAyMSwgMSwgODgsIDIxOCwgMjI2LCAyMSwgMSwgODgsIDIxOSwgCisgICAgOTUsIDIxLCAxLCA4OCwgMjI0LCAyNDQsIDIxLCAxLCA4OCwgMjI1LCA3NywgMjEsIDEsIDg4LCAyMTUsIDE1OCwgMjEsIDEsIAorICAgIDg4LCAyMTUsIDE0NSwgMjEsIDEsIDg4LCAyNDEsIDg5LCAyMTksIDYsIDIxLCAxLCA4OCwgMTk5LCAyMSwgMSwgODgsIDIyMSwgCisgICAgNTMsIDIxLCAxLCA4OCwgMjI5LCAxMDcsIDIxLCAxLCA4OCwgMjMxLCA1MywgMjEsIDEsIDg4LCAyMjcsIDgzLCAyMSwgMSwgCisgICAgODgsIDE4NSwgMjEsIDEsIDg4LCAyMjcsIDIwMiwgMjEsIDEsIDg4LCAyMTIsIDcwLCAyMSwgMSwgODgsIDIzMSwgMTIzLCAKKyAgICAyMSwgMSwgODgsIDIyNiwgMTY4LCAyMSwgMSwgODgsIDIxMiwgOTgsIDIxLCAxLCA4OCwgMjQyLCA0MywgMjEsIDEsIDg4LCAKKyAgICAyNDAsIDcwLCAyMSwgMSwgMjIxLCA4MiwgMTcyLCAyMSwgMSwgMjIxLCA4MiwgNzEsIDIxLCAxLCAyMjEsIDgyLCAyMzAsIAorICAgIDIzNiwgMjEsIDEsIDIyMSwgODIsIDI0MywgMTA0LCAyMSwgMSwgMjIxLCA4MiwgMjE5LCAyOSwgMjEsIDEsIDIyMSwgODIsIAorICAgIDIxMiwgMjAwLCAyMSwgMSwgMjIxLCA4MiwgMjIzLCAxMjUsIDIxLCAxLCAyMjEsIDgyLCAyMzAsIDE0MSwgMjEsIDEsIDIyMSwgCisgICAgODIsIDIxOCwgMTU0LCAyMSwgMSwgMjIxLCA4MiwgMjE4LCAyMDEsIDIxLCAxLCAyMjEsIDgyLCAyMjcsIDEwNiwgMjEsIDEsIAorICAgIDIyMSwgODIsIDIxMiwgMjE1LCAyMSwgMSwgMjIxLCA4MiwgMjI1LCAxNDksIDIxLCAxLCAyMjEsIDgyLCAyMjQsIDE3OCwgCisgICAgMjEsIDEsIDIyMSwgODIsIDIyOSwgMjgsIDIxLCAxLCAyMjEsIDgyLCAyMTMsIDExOSwgMjEsIDEsIDIyMSwgODIsIDIxNSwgCisgICAgMTc4LCAyMSwgMSwgMjIxLCA4MiwgMjE1LCA4MCwgMjEsIDEsIDIyMSwgODIsIDIxNiwgMjQsIDIxLCAxLCAyMjEsIDgyLCAKKyAgICAyMzAsIDE2NSwgMjEsIDEsIDIyMSwgODIsIDIzMSwgMTkzLCAyMSwgMSwgMjIxLCA4MiwgMjIzLCAxODgsIDIxLCAxLCAyMjEsIAorICAgIDgyLCAyMjMsIDIxNywgMjEsIDEsIDIyMSwgODIsIDIyNCwgMTQ5LCAyMSwgMSwgMjIxLCA4MiwgMjA1LCAyMjksIDIxLCAxLCAKKyAgICAyMjEsIDgyLCAyMTUsIDExNiwgMjEsIDEsIDIyMSwgODIsIDE5MCwgMjEsIDEsIDIyMSwgODIsIDIyMywgMjUxLCAyMSwgMSwgCisgICAgMjIxLCA4MiwgMjIxLCA5NywgMjEsIDEsIDIyMSwgODIsIDIyMywgMjMyLCAyMSwgMSwgMjIxLCA4MiwgMjA2LCAyMTMsIDIxLCAKKyAgICAxLCAyMjEsIDgyLCAyMjEsIDE2NCwgMjEsIDEsIDIyMSwgODIsIDIxOCwgNTAsIDIxLCAxLCAyMjEsIDgyLCAyMjQsIDIzMCwgCisgICAgMjEsIDEsIDIyMSwgODIsIDIxOCwgMjI2LCAyMSwgMSwgMjIxLCA4MiwgMjMxLCAyMDMsIDIxLCAxLCAyMjEsIDgyLCAyMjUsIAorICAgIDUsIDIxLCAxLCAyMjEsIDgyLCAyMjUsIDU2LCAyMSwgMSwgMjIxLCA4MiwgMjE1LCAxNTgsIDIxLCAxLCAyMjEsIDgyLCAKKyAgICAyMjAsIDc5LCAyMSwgMSwgMjIxLCA4MiwgMjQxLCAxNTUsIDIxLCAxLCAyMjEsIDgyLCAyMDcsIDk2LCAyMSwgMSwgMjIxLCAKKyAgICA4MiwgMjI5LCAyMzUsIDIxLCAxLCAyMjEsIDgyLCAyMjksIDEwNywgMjEsIDEsIDIyMSwgODIsIDIzMSwgNTMsIDIxLCAxLCAKKyAgICAyMjEsIDgyLCAyMjcsIDE0MywgMjEsIDEsIDIyMSwgODIsIDIxOSwgMiwgMjEsIDEsIDIyMSwgODIsIDE4NSwgMjEsIDEsIAorICAgIDIyMSwgODIsIDIyNiwgMTgxLCAyMSwgMSwgMjIxLCA4MiwgMjI3LCAxNTEsIDIxLCAxLCAyMjEsIDgyLCAyMTIsIDgwLCAyMSwgCisgICAgMSwgMjIxLCA4MiwgMjMxLCAxNSwgMjEsIDEsIDIyMSwgODIsIDIxNywgMTU5LCAyMSwgMSwgMjIxLCA4MiwgMjA3LCAxNDcsIAorICAgIDIyNiwgMTE3LCAxLCAyMTIsIDIxOSwgMjI2LCAxMTcsIDEsIDIyNSwgMjUsIDIyNiwgMTE3LCAxLCAyMDUsIDI0NywgMjI2LCAKKyAgICAxMTcsIDEsIDIyNiwgMjExLCAyMjYsIDExNywgMSwgMjUwLCAxODMsIDIyNiwgMTE3LCAxLCAyNDYsIDE0NSwgMjI2LCAxMTcsIAorICAgIDEsIDYyLCAyMjYsIDExNywgMSwgMjIxLCA3OCwgMjI2LCAxMTcsIDEsIDIzMSwgMTYyLCAyMjYsIDExNywgMSwgMjM5LCA5OCwgCisgICAgMjI2LCAxMTcsIDEsIDI0NiwgMTIxLCAyMjYsIDExNywgMSwgMjQ4LCAxNCwgMjI2LCAxMTcsIDEsIDIzMSwgMjIzLCAyMjYsIAorICAgIDExNywgMSwgMjIyLCAxODAsIDIyNiwgMTE3LCAxLCAyMjgsIDEsIDIyNiwgMTE3LCAxLCAyMjQsIDE5OSwgMjI2LCAxMTcsIAorICAgIDEsIDE3OSwgMjI2LCAxMTcsIDEsIDIyMiwgMTUyLCAyMjYsIDExNywgMSwgNzYsIDIyNiwgMTE3LCAxLCAyMTgsIDEyNCwgCisgICAgMjI2LCAxMTcsIDEsIDIxNSwgMTgzLCAyMjYsIDExNywgMSwgMjEyLCA0MCwgMjI2LCAxMTcsIDEsIDI0MywgMTMwLCAyMjYsIAorICAgIDExNywgMSwgMjA3LCA5NiwgMjI2LCAxMTcsIDEsIDc1LCAyMjYsIDExNywgMSwgMjMxLCA1MywgMjI2LCAxMTcsIDEsIDIzMCwgCisgICAgOTUsIDIyNiwgMTE3LCAxLCAyMzAsIDE0MSwgMjI2LCAxMTcsIDEsIDIzOSwgMTMxLCAyMjYsIDExNywgMSwgMjE4LCAyMDgsIAorICAgIDIyNiwgMTE3LCAxLCAyMTIsIDExMSwgMjI2LCAxMTcsIDE4LCAyMDUsIDg1LCAyMjYsIDExNywgMTgsIDEwMiwgMjI2LCAKKyAgICAxMTcsIDE4LCAxMDUsIDIyNiwgMTE3LCAxOCwgMTQyLCAyMjYsIDExNywgMTgsIDEzOSwgMjI2LCAxMTcsIDE4LCAxNjgsIAorICAgIDIyNiwgMTE3LCAxOCwgMTg0LCAyMjYsIDExNywgMTgsIDE5NSwgMjI2LCAxMTcsIDE4LCAxOTMsIDIyNiwgMTE3LCAxOCwgCisgICAgMjAwLCAyMjYsIDExNywgMjQ2LCAxMDAsIDIyNiwgMTE3LCA1MCwgMjQ2LCAxMDAsIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAKKyAgICAyNDMsIDI0LCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMTcyLCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMjE3LCA4NiwgMjUwLCAKKyAgICAxMTAsIDIwOSwgNjcsIDEsIDI0MiwgNzMsIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyMjcsIDE0NiwgMjUwLCAxMTAsIDIwOSwgCisgICAgNjcsIDEsIDIwNiwgOCwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIDI0MCwgMjI5LCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMjQ1LCAKKyAgICAxNzMsIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyMzEsIDE0LCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMjMyLCAxMjIsIDI1MCwgCisgICAgMTEwLCAyMDksIDY3LCAxLCAyMzgsIDE1LCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMjA3LCA5NiwgMjUwLCAxMTAsIDIwOSwgCisgICAgNjcsIDEsIDIwNSwgMTksIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyNDAsIDE3NCwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIAorICAgIDI0NSwgNTEsIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyNDgsIDE0OCwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIDIwOSwgMTU1LCAKKyAgICAyNTAsIDExMCwgMjA5LCA2NywgMSwgMTI0LCAyNTAsIDExMCwgMjA5LCA2NywgMSwgMjUwLCAxODMsIDI1MCwgMTEwLCAyMDksIAorICAgIDY3LCAxLCAyMDcsIDE0OCwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIDIwNiwgNDYsIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAKKyAgICAxNzksIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyMDcsIDkzLCAyNTAsIDExMCwgMjA5LCA2NywgMSwgNjIsIDI1MCwgMTEwLCAKKyAgICAyMDksIDY3LCAxLCA3NiwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIDIyMiwgMTUyLCAyNTAsIDExMCwgMjA5LCA2NywgMSwgNzEsIAorICAgIDI1MCwgMTEwLCAyMDksIDY3LCAxLCAyNDMsIDEwNCwgMjUwLCAxMTAsIDIwOSwgNjcsIDEsIDc1LCAyNTAsIDExMCwgMjA5LCAKKyAgICA2NywgMSwgNzQsIDI1MCwgMTEwLCAyMDksIDY3LCAzNiwgMTI3LCAyMTEsIDExOCwgMjUwLCAxMTAsIDIwOSwgNjcsIDM2LCAKKyAgICAxMTQsIDIxMSwgMTE4LCAyNTAsIDExMCwgMjA5LCA2NywgMzYsIDIyNiwgMjQ5LCAyMTEsIDExOCwgMjUwLCAxMTAsIDIwOSwgCisgICAgNjcsIDM2LCAyMjksIDk0LCAyMTEsIDExOCwgMjUwLCAxMTAsIDIwOSwgNjcsIDM2LCAyMzgsIDI1MCwgMjExLCAxMTgsIAorICAgIDI1MCwgMTEwLCAyMDksIDY3LCAyNDEsIDgyLCAyMTMsIDI1MSwgMTEyLCAxMTEsIDIyLCAyMzEsIDIyMCwgMTEyLCAxMTEsIAorICAgIDIyLCAyMzEsIDIxNiwgMTEyLCAxMTEsIDIyLCAyMzEsIDEyMCwgMTEyLCAxMTEsIDIyLCAyMzEsIDg4LCAxMTIsIDExMSwgCisgICAgMjIsIDIzMSwgMjQxLCAxMTIsIDExMSwgMjIsIDIzMSwgMjM4LCAxMTIsIDExMSwgMjIsIDIzMCwgMjI3LCAxMTIsIDExMSwgCisgICAgMjIsIDIzMCwgMjAwLCAxMTIsIDExMSwgMjIsIDIzMSwgMjIyLCAxMTIsIDExMSwgMjIsIDIzMSwgMTc3LCAxMTIsIDExMSwgCisgICAgMjIsIDIzMiwgNDAsIDExMiwgMTExLCAyMiwgMjMyLCAzNywgMTEyLCAxMTEsIDIyLCAyMzEsIDMyLCAxMTIsIDExMSwgMjIsIAorICAgIDIzMSwgMjksIDExMiwgMTExLCAyMiwgMjMxLCAyMzUsIDExMiwgMTExLCAyMiwgMjMxLCAyMzMsIDExMiwgMTExLCAyMiwgCisgICAgMjMwLCAyMjksIDExMiwgMTExLCAyMiwgMjMwLCAyMjgsIDExMiwgMTExLCAyMiwgMjMxLCA1MCwgMTEyLCAxMTEsIDIyLCAKKyAgICAyMzEsIDE4LCAxMTIsIDExMSwgMjIsIDIzMSwgMTIyLCAxMTIsIDExMSwgMjIsIDIzMSwgMTIxLCAxMTIsIDExMSwgMjIsIAorICAgIDIzMiwgNTUsIDExMiwgMTExLCAyMiwgMjMxLCAyMzcsIDExMiwgMTExLCAyMiwgMjMwLCAxOTEsIDExMiwgMTExLCAyMiwgCisgICAgMjMwLCAxODIsIDExMiwgMTExLCAyMiwgMjMyLCA2MiwgMTEyLCAxMTEsIDIyLCAyMzIsIDU2LCAxMTIsIDExMSwgMTA3LCAKKyAgICAyMDksIDQ1LCAxMTIsIDExMSwgMTA3LCAyMjMsIDIyMywgMTEyLCAxMTEsIDEwNywgMjMwLCA3NSwgMTEyLCAxMTEsIDEwNywgCisgICAgMjM5LCA4MCwgMTEyLCAxMTEsIDEwNywgMjI0LCAxMDYsIDExMiwgMTExLCAxMDcsIDIxOSwgNjAsIDExMiwgMTExLCAxMDcsIAorICAgIDIyNCwgMTMzLCAxMTIsIDExMSwgMTA3LCAyMTksIDI0OSwgMTEyLCAxMTEsIDEwNywgMjA2LCA2MSwgMTEyLCAxMTEsIDEwNywgCisgICAgMjM4LCAyMzQsIDExMiwgMTExLCAxMDcsIDIyNywgMTY2LCAxMTIsIDExMSwgMTA3LCAyNDgsIDg2LCAxMTIsIDExMSwgMTA3LCAKKyAgICAyMjUsIDE1NCwgMTEyLCAxMTEsIDEwNywgMjM4LCAxNzAsIDExMiwgMTExLCAxMDcsIDIyMCwgMjI3LCAxMTIsIDExMSwgCisgICAgMTA3LCAyMjMsIDIyOCwgMTEyLCAxMTEsIDEwNywgMjI1LCAxOTEsIDExMiwgMTExLCAxMDcsIDI1MSwgMTg0LCAxMTIsIAorICAgIDExMSwgMTA3LCAyMDYsIDE3NywgMTEyLCAxMTEsIDEwNywgMjQ4LCAxODEsIDExMiwgMTExLCAxNDEsIDI0NywgMjM5LCAKKyAgICAyMTAsIDE2NiwgMTEyLCAxMTEsIDE0MSwgMjQ3LCAyMzksIDIxNCwgMTkzLCAxMTIsIDExMSwgMTQxLCAyNDcsIDIzOSwgCisgICAgMjMxLCAxOTUsIDExMiwgMTExLCAxNDEsIDI0NywgMjM5LCAyMzEsIDE1MywgMTEyLCAxMTEsIDE0MSwgMjQ3LCAyMzksIAorICAgIDIxMywgMTk3LCAxMTIsIDExMSwgMTQxLCAyNDcsIDIzOSwgMjM4LCAxMzcsIDExMiwgMTExLCAxNDEsIDI0NywgMjM5LCAKKyAgICAyMTIsIDE1MCwgMTEyLCAxMTEsIDMsIDIwOCwgMTU4LCAyMTEsIDI1MCwgMTEyLCAxMTEsIDMsIDIwOCwgMTU4LCAyMTAsIAorICAgIDIzMiwgMjQ4LCAxMzksIDExMiwgMTExLCAzLCAyNDcsIDIzOSwgMjQ4LCA3NywgMTEyLCAxMTEsIDMsIDIwOCwgMTU4LCAKKyAgICAyMTIsIDE4LCAxMTIsIDExMSwgMywgMjA4LCAxNTgsIDI0MiwgMTgsIDExMiwgMTExLCAzLCAyMDYsIDEzNSwgMjIzLCAyMTgsIAorICAgIDExMiwgMTExLCAzLCAyMDYsIDEzNSwgMjE4LCAyMTAsIDExMiwgMTExLCAzLCAyMDYsIDEzNSwgMjExLCA4NywgMTEyLCAKKyAgICAxMTEsIDMsIDIwNiwgMTM1LCAyNDIsIDU1LCAxMTIsIDExMSwgMywgMjA4LCAxNTgsIDIxNywgNjgsIDExMiwgMTExLCAzLCAKKyAgICAyMjcsIDEwNSwgMjEzLCAyMDEsIDExMiwgMTExLCAzLCAyMDgsIDE1OCwgMjI0LCAxMSwgMTEyLCAxMTEsIDMsIDIzNywgCisgICAgMTg2LCAyMDYsIDgwLCAxMTIsIDExMSwgMywgMjA2LCAxNzYsIDExMiwgMTExLCAzLCAyNDcsIDIzOSwgMjEwLCAyMTksIAorICAgIDIxOCwgMTE0LCAxMTIsIDExMSwgMTgsIDIwNSwgODUsIDExMiwgMTExLCAxOCwgMTAyLCAxMTIsIDExMSwgMTgsIDEwNSwgCisgICAgMTEyLCAxMTEsIDE4LCAxNDIsIDExMiwgMTExLCAxOCwgMTM5LCAxMTIsIDExMSwgMTgsIDE2OCwgMTEyLCAxMTEsIDE4LCAKKyAgICAxODQsIDExMiwgMTExLCAxOCwgMTk1LCAxMTIsIDExMSwgMTgsIDE5MywgMTEyLCAxMTEsIDE4LCAyMDAsIDExMiwgMTExLCAKKyAgICA0MywgMjEyLCA5MywgMTEyLCAxMTEsIDQzLCAyMzgsIDI4LCAxMTIsIDExMSwgNDMsIDIxMiwgOTksIDIxMSwgMjQwLCAxMTIsIAorICAgIDExMSwgNDMsIDIyNiwgMjEyLCAxMTIsIDExMSwgNDMsIDIzOCwgMzAsIDIyNiwgMjEyLCAxMTIsIDExMSwgNDMsIDIxMiwgCisgICAgOTksIDI0OSwgMjI2LCAxMTIsIDExMSwgNDMsIDIxMSwgMzgsIDExMiwgMTExLCAzLCAyMDgsIDE1OCwgMjI5LCA3NiwgMTEyLCAKKyAgICAxMTEsIDMsIDIwNiwgMTMyLCAxMTIsIDExMSwgMywgMjM4LCAyMjksIDExMiwgMTExLCAzLCAyMTIsIDksIDIzOCwgMjI5LCAKKyAgICAxMTIsIDExMSwgMywgMjA0LCAyNTAsIDIxMiwgNTEsIDExMiwgMTExLCAzLCAyMzgsIDE1NCwgMTEyLCAxMTEsIDMsIDIyNCwgCisgICAgMjUsIDExMiwgMTExLCAzLCAyMDYsIDE2OCwgMTEyLCAxMTEsIDMsIDIyMywgMjIxLCAxMTIsIDExMSwgMywgMjUxLCAxNjgsIAorICAgIDExMiwgMTExLCAzLCAyMTAsIDEwMywgMjQ4LCAxMzgsIDExMiwgMTExLCAzLCAyMjcsIDEwNSwgMjEwLCAyMzUsIDExMiwgCisgICAgMTExLCAzLCAyMTIsIDE1MSwgMTEyLCAxMTEsIDMsIDIyOSwgMTA0LCAxMTIsIDExMSwgMywgMjI2LCA3MSwgMTEyLCAxMTEsIAorICAgIDMsIDI0NywgMjM5LCAyMzksIDEyNywgMjI5LCA1NSwgMjIzLCAyMjYsIDIyMywgMjI1LCAxMTIsIDExMSwgMywgMjQ3LCAKKyAgICAyMzksIDI0NywgMzksIDIxMCwgMjI2LCAxMTIsIDExMSwgMywgMjQ3LCAyMzksIDIxMCwgMTAxLCAxMTIsIDExMSwgMywgCisgICAgMjQ3LCAyMzksIDIxMCwgMTAyLCAyNDgsIDIsIDExMiwgMTExLCAzLCAyNDcsIDIzOSwgMjIwLCA3NywgMjQ2LCA2OSwgMTEyLCAKKyAgICAxMTEsIDMsIDI0NywgMjM5LCAyMjQsIDE4LCAyMTEsIDkyLCAxMTIsIDExMSwgMjQ3LCAyMTUsIDMsIDIxMCwgMjMwLCAxMTIsIAorICAgIDExMSwgMjQ3LCAyMTUsIDMsIDIwNiwgNDgsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgMjI5LCAxODcsIDExMiwgMTExLCAKKyAgICAyNDcsIDIxNSwgMywgMjMwLCA3NCwgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAyMDYsIDEzMSwgMTEyLCAxMTEsIDI0NywgCisgICAgMjE1LCAzLCAyMzEsIDMzLCAxMTIsIDExMSwgMjQ3LCAyMTUsIDMsIDIzOSwgNzcsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgCisgICAgMjI2LCAxMTAsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgMjExLCAyNTEsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgMjEwLCAKKyAgICAyNDAsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgMjIxLCA5MCwgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAyMzEsIDE2NSwgCisgICAgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAyMzksIDExNywgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAyMDksIDY0LCAxMTIsIAorICAgIDExMSwgMjQ3LCAyMTUsIDMsIDI0MiwgNTIsIDExMiwgMTExLCAyNDcsIDIxNSwgMywgMjA2LCA4NywgMTEyLCAxMTEsIDI0NywgCisgICAgMjE1LCAzLCAyMTAsIDIxMywgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAyMzAsIDE4NiwgMTEyLCAxMTEsIDI0NywgMjE1LCAzLCAKKyAgICAyMDcsIDEzOCwgMTA0LCAxLCAxNzksIDEwNCwgMSwgMjUwLCAxODMsIDEwNCwgMSwgOSwgMTc5LCAxMDQsIDEsIDIyMCwgCisgICAgMjQwLCAxMDQsIDEsIDE4NSwgMTA0LCAxLCAyMjcsIDEsIDEwNCwgMSwgMjUyLCAxOSwgMTg1LCAxMDQsIDEsIDI0MiwgNzMsIAorICAgIDEwNCwgMSwgMjA5LCA3MCwgMTA0LCAxLCAyMDgsIDIxNSwgMTA0LCAxLCAyMTIsIDIxOSwgMTA0LCAxLCAyNDYsIDE0NSwgCisgICAgMTA0LCAxLCA5LCAyMTAsIDIwOCwgMTA0LCAxLCA5LCAyMTIsIDIxOSwgMTA0LCAxLCAyMTAsIDIwOCwgMTA0LCAxLCAyNDYsIAorICAgIDU0LCAxMDQsIDEsIDE5OSwgMTA0LCAxLCAyMjQsIDIzNCwgMTA0LCAxLCA5LCAyMjQsIDEwMywgMTA0LCAxLCAyNTIsIDE5LCAKKyAgICAxOTksIDEwNCwgMSwgMjI0LCAxMDMsIDEwNCwgMSwgMjI0LCA4OSwgMTA0LCAxLCAyMzAsIDE0MSwgMTA0LCAxLCAyMjksIAorICAgIDQxLCAxMDQsIDEsIDIyOSwgMjQ4LCAxMDQsIDEsIDIyOSwgMjM3LCAxMDQsIDEsIDIxMSwgMTQ0LCAxMDQsIDEsIDI0NSwgCisgICAgNTksIDEwNCwgMSwgMjExLCAxMzYsIDEwNCwgMSwgMjQ1LCA1OCwgMTA0LCAxLCAxNzIsIDEwNCwgMSwgMjQwLCAyNDQsIAorICAgIDEwNCwgMSwgOSwgMTcyLCAxMDQsIDEsIDIyMCwgMTksIDEwNCwgMSwgMjE5LCAyNTIsIDEwNCwgMSwgMjI1LCA3NywgMTA0LCAKKyAgICAxLCAyMjUsIDI2LCAxMDQsIDEsIDI1MiwgMTksIDIyNSwgNzcsIDEwNCwgMSwgMTU1LCAxMDQsIDEsIDIwNiwgMTgxLCAxMDQsIAorICAgIDEsIDI0MCwgOTksIDEwNCwgMSwgMjQwLCA3NCwgMTA0LCAxLCAyMTAsIDIxOCwgMTA0LCAxLCAyNDMsIDE4MCwgMTA0LCAxLCAKKyAgICAyMjMsIDE0NCwgMTA0LCAxLCAyMjMsIDEyNywgMTA0LCAxLCAyMTAsIDIzMywgMTA0LCAxLCAyNDMsIDE5MCwgMTA0LCAxLCAKKyAgICA5LCAyMTAsIDIzMywgMTA0LCAxLCA5LCAyNDMsIDE5MCwgMTA0LCAxLCAyMTksIDI3LCAyMTAsIDIzMywgMTA0LCAxLCAyMTYsIAorICAgIDIsIDEwNCwgMSwgMjE0LCA5NiwgMTA0LCAxLCAyMDUsIDgxLCAxMDQsIDEsIDIwNSwgMTAsIDEwNCwgMSwgMjEwLCAyNDMsIAorICAgIDEwNCwgMSwgMjQzLCAxOTYsIDEwNCwgMSwgOSwgMjEwLCAyNDMsIDEwNCwgMSwgMjE3LCAxOTksIDEwNCwgMSwgMjA1LCAKKyAgICAxMTYsIDEwNCwgMSwgMjA1LCAxMSwgMTA0LCAxLCAyMDQsIDIzOCwgMTA0LCAxLCAyMDQsIDIxOCwgMTA0LCAxLCAyNTIsIAorICAgIDE5LCAyMDQsIDIzOCwgMTA0LCAxLCAyMDQsIDIxMCwgMTA0LCAxLCAyMDQsIDIxNywgMTA0LCAxLCAyMDcsIDk2LCAxMDQsIAorICAgIDEsIDI1MiwgMjEzLCAxMDQsIDEsIDIzOSwgMjAsIDEwNCwgMSwgMjI1LCAxOTYsIDEwNCwgMywgMjUxLCAyMTUsIDEwNCwgMywgCisgICAgMjE5LCAyNywgMjA4LCAxNjgsIDEwNCwgMywgMjE5LCAyNywgMjUxLCAyMTUsIDEwNCwgMjIsIDMsIDYyLCAxMDQsIDIyLCAzLCAKKyAgICAyNTMsIDE2NCwgMTA0LCAyMiwgMywgMjUyLCAyMDksIDEwNCwgMjIsIDMsIDI1MiwgMTIyLCAxMDQsIDIyLCAzLCAyNTIsIAorICAgIDExNCwgMTA0LCAyMiwgMywgNzYsIDEwNCwgMjIsIDMsIDIyMiwgMTUyLCAxMDQsIDIyLCAzLCAyMDYsIDI1MCwgMTA0LCAyMiwgCisgICAgMywgMjA3LCAxMjksIDEwNCwgMjIsIDMsIDc1LCAxMDQsIDIyLCAzLCAyNDMsIDQxLCAxMDQsIDIyLCAzLCAyNDMsIDI4LCAKKyAgICAxMDQsIDIyLCAzLCAyMjIsIDIwNCwgMTA0LCAyMiwgMywgNzQsIDEwNCwgMjIsIDMsIDIzNywgMTkwLCAxMDQsIDIyLCAzLCAKKyAgICAyMzcsIDE4OSwgMTA0LCAyMiwgMywgMjM3LCAxODgsIDEwNCwgMjIsIDMsIDIzMiwgMjUzLCAxMDQsIDIyLCAzLCAyMzMsIAorICAgIDEyOSwgMTA0LCAyMiwgMywgMjMzLCAxMDIsIDEwNCwgMjIsIDMsIDIzMiwgMjE2LCAxMDQsIDIyLCAzLCAyMzMsIDQyLCAKKyAgICAxMDQsIDIyLCAzLCA3MSwgMTA0LCAyMiwgMywgMjEwLCAxOCwgMTA0LCAyMiwgMywgMjEwLCAxNywgMTA0LCAyMiwgMywgCisgICAgMjEwLCAxNiwgMTA0LCAyMiwgMywgMjA5LCAxNjIsIDEwNCwgMjIsIDMsIDIxMCwgMCwgMTA0LCAyMiwgMywgMjA5LCAyMjEsIAorICAgIDEwNCwgMjIsIDMsIDIwNiwgMTIzLCAxMDQsIDIyLCAzLCAyMDYsIDExLCAxMDQsIDIyLCAzLCAyNTIsIDI0OCwgMTA0LCAyMiwgCisgICAgMywgMjUyLCAyNDQsIDEwNCwgMjIsIDMsIDI0MiwgMjI5LCAxMDQsIDIyLCAzLCAyMTgsIDkzLCAyNDIsIDIyOSwgMTA0LCAKKyAgICAyMiwgMywgMjQyLCAyMzUsIDEwNCwgMjIsIDMsIDIxOCwgOTMsIDI0MiwgMjM1LCAxMDQsIDIyLCAzLCAyNTIsIDIwNSwgCisgICAgMTA0LCAyMiwgMywgMjQzLCA5MCwgMTA0LCAyMiwgMywgMjUxLCAxODQsIDEwNCwgMjIsIDMsIDIyMiwgOTcsIDEwNCwgMjIsIAorICAgIDMsIDIyNiwgMzMsIDEwNCwgMjIsIDMsIDIyNSwgNzksIDEwNCwgMTM1LCAyMTgsIDE2NywgMTA0LCAxMzUsIDIxMSwgMTAyLCAKKyAgICAyMTgsIDE2NywgMTA0LCAxMzUsIDUyLCAxMDQsIDEzNSwgNTUsIDEwNCwgMSwgMjExLCAxMTYsIDEwNCwgMSwgMjExLCAxMTUsIAorICAgIDEwNCwgMSwgMjExLCAxMTQsIDEwNCwgMSwgMjExLCAxMTMsIDEwNCwgMSwgMjExLCAxMTIsIDEwNCwgMSwgMjExLCAxMTEsIAorICAgIDEwNCwgMSwgMjExLCAxMTAsIDEwNCwgMSwgMjE5LCAyNywgMjExLCAxMTcsIDEwNCwgMSwgMjE5LCAyNywgMjExLCAxMTYsIAorICAgIDEwNCwgMSwgMjE5LCAyNywgMjExLCAxMTQsIDEwNCwgMSwgMjE5LCAyNywgMjExLCAxMTMsIDEwNCwgMSwgMjE5LCAyNywgCisgICAgMjExLCAxMTIsIDEwNCwgMSwgMjE5LCAyNywgMjExLCAxMTAsIDY0LCAxLCAyNTIsIDE5LCA3NSwgMTYxLCAxLCAyNTIsIDE5LCAKKyAgICAyMDYsIDUyLCA5NSwgMSwgMjM5LCAxNTUsIDk1LCAxLCAyMDYsIDE5NSwgOTUsIDEsIDIyMiwgNjcsIDk1LCAxLCAyMTMsIAorICAgIDEwLCA5NSwgMSwgMjQyLCAxMzksIDk1LCAxLCAyMzIsIDc2LCA5NSwgMSwgMTQ5LCA5NSwgMSwgMjUxLCAxNTAsIDk1LCAxLCAKKyAgICAyNDYsIDI0MCwgOTUsIDEsIDIwOSwgMTQ4LCA5NSwgMSwgMjQxLCA1NSwgOTUsIDEsIDEzNywgOTUsIDEsIDIyMiwgNjgsIAorICAgIDIyNiwgMzMsIDk1LCAxLCAyNDYsIDI0MSwgMTgyLCA5NSwgMSwgMjQyLCAxNDAsIDIyNiwgMzMsIDk1LCAxLCAyMzIsIDc3LCAKKyAgICAyMjksIDI4LCA5NSwgMSwgMjE5LCAxNTAsIDE4MiwgOTUsIDEsIDIxMiwgNTgsIDk1LCAxLCAyMTQsIDIyMywgMjQ1LCAxOTMsIAorICAgIDk1LCAxLCAyNDUsIDE5MywgOTUsIDEsIDIzMSwgNzMsIDk1LCAxLCAyMTQsIDIyMywgMjMyLCAyMDMsIDk1LCAxLCAyMzgsIAorICAgIDIzOCwgOTUsIDEsIDIyOSwgMjQ5LCA5NSwgMSwgMjE4LCAyMTMsIDk1LCAxLCAyMjksIDI4LCA5NSwgMSwgMjI2LCAzMywgCisgICAgOTUsIDEsIDIzMiwgMjAzLCA5NSwgMSwgMTgyLCA5NSwgMSwgMjI5LCAyOSwgMjI2LCAzMywgOTUsIDEsIDIyNiwgMzQsIAorICAgIDIyOSwgMjgsIDk1LCAxLCAyMzIsIDIwNCwgMjI5LCAyOCwgOTUsIDEsIDIxOCwgMSwgMjMyLCAyMDMsIDk1LCAxLCAyMjksIAorICAgIDI5LCAyLCAyNDUsIDIzLCA5NSwgMSwgMjI2LCAzNCwgMiwgMjQ1LCAyMywgOTUsIDEsIDIzMiwgMjA0LCAyLCAyNDUsIDIzLCAKKyAgICA5NSwgMSwgMjMyLCAyMDQsIDIsIDE3NywgMjMzLCAyNiwgMjMsIDUyLCA5NSwgMSwgMjE4LCAxLCAyLCAyNDUsIDIzLCA5NSwgCisgICAgMSwgMjE4LCAxLCAyLCA2NywgNTUsIDk1LCAxLCAyMjksIDI5LCAxODIsIDk1LCAxLCAyMjYsIDM0LCAxODIsIDk1LCAxLCAKKyAgICAyMzIsIDIwNCwgMTgyLCA5NSwgMSwgMjE4LCAxLCAxODIsIDk1LCAxLCAyMjksIDI5LCAyMjYsIDM0LCAxODIsIDk1LCAxLCAKKyAgICAyMjYsIDM0LCAyMjksIDI5LCAxODIsIDk1LCAxLCAyMzIsIDIwNCwgMjI5LCAyOSwgMTgyLCA5NSwgMSwgMjE4LCAxLCAyMzIsIAorICAgIDIwNCwgMTgyLCA5NSwgMSwgMjMyLCAyMDQsIDIxOCwgMSwgMiwgMjQ1LCAyMywgOTUsIDEsIDIzMiwgMjA0LCAyMjYsIDMzLCAKKyAgICA5NSwgMSwgMjMyLCAyMDQsIDIyNiwgMzQsIDE4MiwgOTUsIDEsIDIxOCwgMSwgMjEzLCAxMCwgOTUsIDEsIDIxOCwgMSwgCisgICAgMjEzLCAxMSwgMTM3LCA5NSwgMSwgMjE4LCAxLCAyMjIsIDY3LCA5NSwgMSwgMjE4LCAxLCAyMjIsIDY4LCAxMzcsIDk1LCAxLCAKKyAgICAyMTMsIDExLCAxODIsIDk1LCAxLCAyMTMsIDExLCAyMTksIDE1MCwgMTgyLCA5NSwgMSwgMjA3LCAxMjksIDk1LCAxLCAyMDcsIAorICAgIDMwLCA5NSwgMSwgMjA3LCAxMzAsIDEzNywgOTUsIDEsIDIxOCwgMSwgMjI2LCAzMywgOTUsIDEsIDIxOCwgMSwgMjI5LCAyOCwgCisgICAgOTUsIDEsIDIzMiwgNzcsIDIxOSwgMTUwLCAxODIsIDk1LCAxLCAyNDEsIDU2LCAyMTksIDE1MCwgMTgyLCA5NSwgMSwgMjE4LCAKKyAgICAxLCAyMzIsIDc2LCA5NSwgMSwgMjE4LCAxLCAyMzIsIDc3LCAxMzcsIDk1LCAxLCA2MiwgOTUsIDEsIDIxNCwgMjIzLCAyMjIsIAorICAgIDc4LCA5NSwgMSwgMjIyLCAyMzAsIDk1LCAxLCA3NiwgOTUsIDEsIDI1MiwgNjksIDk1LCAxLCA3NCwgOTUsIDEsIDc1LCA5NSwgCisgICAgMSwgMjMzLCAxMjksIDk1LCAxLCAyMTUsIDE0NCwgNzQsIDk1LCAxLCAyMDksIDI1MiwgOTUsIDEsIDI0MywgMTA0LCA5NSwgCisgICAgMSwgMjE0LCAyMjMsIDI0MywgOTIsIDk1LCAxLCAyMTgsIDEwOCwgNzQsIDk1LCAxLCAyMTQsIDIyMywgMjQzLCAxMDQsIDk1LCAKKyAgICAxLCAxNTIsIDc0LCA5NSwgMSwgMjA2LCA1MiwgOTUsIDEsIDcxLCA5NSwgMSwgMjQyLCAxOTIsIDk1LCAxLCAyMDYsIDE0NiwgCisgICAgOTUsIDEsIDEwNiwgMjI2LCAzMywgOTUsIDEsIDE1MiwgNzEsIDk1LCAxLCAyMTgsIDEwOCwgNzEsIDk1LCAxLCAyMDksIAorICAgIDI1MywgOTUsIDEsIDIxNCwgMjIzLCA3MSwgOTUsIDEsIDIyMiwgMTQ5LCA5NSwgMSwgMjIyLCA3OCwgOTUsIDEsIDIyMiwgCisgICAgOTcsIDk1LCAxLCAyMDcsIDk2LCA5NSwgMSwgMjA2LCAyNTAsIDk1LCAxLCAyMDcsIDIwLCA5NSwgMSwgMjA3LCA0MywgOTUsIAorICAgIDEsIDIwNiwgMjI1LCA5NSwgMSwgMjI1LCAxOTgsIDcxLCA5NSwgMSwgMjI1LCAxOTgsIDc2LCA5NSwgMSwgMjI1LCAxOTgsIAorICAgIDc0LCA5NSwgMSwgMjI1LCAxOTgsIDYyLCA5NSwgMSwgMjIxLCAxMjAsIDI1MiwgMTIyLCA5NSwgMSwgMjIxLCAxMjAsIDI1MiwgCisgICAgMTM2LCA5NSwgMSwgMjE0LCAyMjMsIDI0MywgNDEsIDk1LCAxLCAyMTQsIDIyMywgMjUyLCAxMjIsIDk1LCAxLCAyMTQsIAorICAgIDIyMywgMjIyLCAxNjUsIDk1LCAxLCAxMTUsIDIyOSwgMjgsIDk1LCAyNTIsIDIyNywgNDcsIDE5NCwgMjE3LCA4MSwgOTUsIAorICAgIDI1MiwgMjI3LCAyMjYsIDI0OSwgMTk0LCAyMTcsIDgxLCA5NSwgMjUyLCAyMjcsIDQ4LCAxOTQsIDIxNywgODEsIDk1LCAKKyAgICAyNTIsIDIyNywgMTE0LCA3OSwgMjE3LCA4MSwgOTUsIDI1MiwgMjI3LCAyMjYsIDI0OSwgNzksIDIxNywgODEsIDk1LCAyNTIsIAorICAgIDIyNywgMTI3LCA3OSwgMjE3LCA4MSwgOTUsIDI1MiwgMjI3LCAyNTEsIDE5MCwgMjE3LCA4MSwgOTUsIDI1MiwgMjI3LCAKKyAgICAyNTEsIDE5MCwgMjMwLCAzNywgMjE3LCA4MSwgOTUsIDI1MiwgMjI3LCAyNTEsIDE5MCwgMjEyLCAxNzAsIDk1LCAyNTIsIAorICAgIDIyNywgMjUxLCAxOTAsIDIxMiwgMTkxLCA5NSwgMjUyLCAyMjcsIDI1MSwgMTkwLCAxNzQsIDEwOSwgOTUsIDI1MiwgMjI3LCAKKyAgICAyNTEsIDE5MCwgMjM3LCAyMjUsIDEwOSwgOTUsIDI1MiwgMjI3LCAyNTEsIDE5MCwgMjEyLCAxNzEsIDEwOSwgOTUsIDI1MiwgCisgICAgMjI3LCAxMjcsIDE1MywgOTUsIDI1MiwgMjI3LCAxMjcsIDIxMSwgMTk3LCAxNTMsIDk1LCAyNTIsIDIyNywgMTI3LCAyMzksIAorICAgIDIzNiwgOTUsIDI1MiwgMjI3LCAxMjcsIDE1MiwgMjM5LCAyMzYsIDk1LCAyNTIsIDIyNywgMTI3LCAyNDUsIDIzLCA5NSwgCisgICAgMjUyLCAyMjcsIDEyNywgMjQ3LCAyMzMsIDk1LCAyNTIsIDIyNywgMTI3LCAyMjksIDIwNSwgOTUsIDI1MiwgMjI3LCAxMjcsIAorICAgIDIwNywgNjQsIDk1LCAyNTIsIDIyNywgMTI3LCAyMDksIDIyLCA5NSwgMjUyLCAyMjcsIDExNCwgMTUzLCA5NSwgMjUyLCAKKyAgICAyMjcsIDExNCwgMjExLCAxOTcsIDE1MywgOTUsIDI1MiwgMjI3LCAxMTQsIDIzOSwgMjM2LCA5NSwgMjUyLCAyMjcsIDExNCwgCisgICAgMTUyLCAyMzksIDIzNiwgOTUsIDI1MiwgMjI3LCAxMTQsIDI0NSwgMjMsIDk1LCAyNTIsIDIyNywgMTE0LCAyNDcsIDIzMywgCisgICAgOTUsIDI1MiwgMjI3LCAxMTQsIDIyOSwgMjA1LCA5NSwgMjUyLCAyMjcsIDExNCwgMjA3LCA2NCwgOTUsIDI1MiwgMjI3LCAKKyAgICAxMTQsIDIwOSwgMjIsIDk1LCAyNTIsIDIyNywgMTE0LCA0NSwgOTUsIDMsIDE0OCwgMiwgMjQ3LCA1OSwgOTUsIDIxMiwgMTcsIAorICAgIDEsIDIxNywgNTksIDk1LCA1MCwgODMsIDk1LCAyMjAsIDcyLCAyNDgsIDQyLCAyNDEsIDgyLCAyMTMsIDI1MSwgMjE1LCAKKyAgICAxMzEsIDI0MSwgMTM1LCAxLCAyMjIsIDg0LCAyMTUsIDEzMSwgMjQxLCAxMzUsIDI0NywgMTE1LCAyMjIsIDg0LCAyMTUsIAorICAgIDEzMSwgMjQxLCAxMzUsIDEzMCwgMjE0LCA3LCAyMTUsIDEzMSwgMjQxLCAxMzUsIDEyMCwgMjE0LCA3LCA1OCwgMzAsIDE2LCAKKyAgICAyMjAsIDg2LCA1OCwgMzAsIDE2LCAyNDYsIDgwLCA1OCwgMzAsIDE2LCAyMjEsIDEyNCwgNTgsIDMwLCAxNiwgMjIyLCA3NSwgCisgICAgMjQzLCA3MiwgNTgsIDMwLCAxNiwgMjIyLCA3NSwgMjQ1LCAxMDgsIDU4LCAzMCwgMTYsIDIwOSwgNTcsIDI0MywgNzIsIDU4LCAKKyAgICAzMCwgMTYsIDIwOSwgNTcsIDI0NSwgMTA4LCA1OCwgMzAsIDE2LCAyMzEsIDI0NCwgNTgsIDMwLCAxNiwgMjEzLCAyNywgNTgsIAorICAgIDMwLCAxNiwgMjIxLCAyMjMsIDU4LCAzMCwgMTYsIDIwNSwgMjE5LCA1OCwgMzAsIDE2LCAyMDUsIDIyMCwgMjQ1LCAxMDgsIAorICAgIDU4LCAzMCwgMTYsIDIzMCwgMjUzLCA1OCwgMzAsIDE2LCAyNTIsIDY0LCAyNDMsIDcyLCA1OCwgMzAsIDE2LCAyNDIsIDE2MywgCisgICAgMjQzLCA3MiwgNTgsIDMwLCAxNiwgMjEyLCAxMDksIDU4LCAzMCwgMTYsIDIzMSwgMTk5LCA1OCwgMzAsIDE2LCAyNTIsIDU0LCAKKyAgICA1OCwgMzAsIDE2LCAyNTIsIDU1LCAyNDUsIDEwOCwgNTgsIDMwLCAxNiwgMjEzLCAzNCwgNTgsIDMwLCAxNiwgMjEyLCAwLCAKKyAgICA1OCwgMzAsIDE2LCAyMjIsIDE3NiwgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjQwLCAzLCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAKKyAgICAyMjAsIDg1LCA1OCwgMzAsIDE2LCAyNDgsIDEwMiwgNTgsIDMwLCAxNiwgMjA5LCA0NiwgNTgsIDMwLCAxNiwgMjMyLCAyMjUsIAorICAgIDI1MiwgMTcsIDU4LCAzMCwgMTYsIDIzMSwgMjAxLCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAyMzEsIDIwMCwgMjUyLCAxNywgCisgICAgNTgsIDMwLCAxNiwgMjE3LCAxMTgsIDU4LCAzMCwgMTYsIDIyMSwgMjEzLCA1OCwgMzAsIDE2LCAyMTQsIDE2LCAyNTIsIDU3LCAKKyAgICA1OCwgMzAsIDE2LCAyMjIsIDc0LCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAyMDksIDU2LCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAKKyAgICAyNTIsIDU4LCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAyNTIsIDUyLCA1OCwgMzAsIDE2LCAyMzEsIDYzLCA1OCwgMzAsIDE2LCAKKyAgICAyMTgsIDIyMCwgNTgsIDMwLCAxNiwgMjIxLCA1MSwgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjExLCAxNzMsIDU4LCAzMCwgMTYsIAorICAgIDI1MiwgMTIwLCA1OCwgMzAsIDE2LCAyMTcsIDYyLCA1OCwgMzAsIDE2LCAyMTMsIDM3LCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAKKyAgICAyMTMsIDM3LCAyMjcsIDY0LCAyMTQsIDE0LCA1OCwgMzAsIDE2LCAyMjIsIDY5LCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAyMTIsIAorICAgIDM1LCA1OCwgMzAsIDE2LCAyMzAsIDI0LCA1OCwgMzAsIDE2LCAyNDMsIDE5OSwgNTgsIDMwLCAxNiwgMjExLCA1MywgNTgsIAorICAgIDMwLCAxNiwgMjEyLCA4MiwgNTgsIDMwLCAxNiwgMjMxLCAwLCA1OCwgMzAsIDE2LCAyNTIsIDY0LCAyNDIsIDE2MywgMjI1LCAKKyAgICA5NywgNTgsIDMwLCAxNiwgMjQxLCA5MCwgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjMzLCA4MSwgNTgsIDMwLCAxNiwgMjExLCAKKyAgICAyNCwgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjMxLCAyNDcsIDIxMSwgMjMsIDU4LCAzMCwgMTYsIDIyMSwgMTUyLCA1OCwgMzAsIAorICAgIDE2LCAyMjAsIDkwLCA1OCwgMzAsIDE2LCAyMzEsIDM0LCA1OCwgMzAsIDE2LCAyNDgsIDI2LCAyNTIsIDE3LCA1OCwgMzAsIAorICAgIDE2LCAyMTksIDcwLCA1OCwgMzAsIDE2LCAyMjEsIDIyNiwgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjIxLCAyMjQsIDI1MiwgCisgICAgMTcsIDU4LCAzMCwgMTYsIDIzNywgMTc5LCA1OCwgMzAsIDE2LCAyMjUsIDIwOCwgNTgsIDMwLCAxNiwgMjIxLCAxMDIsIDU4LCAKKyAgICAzMCwgMTYsIDIzMSwgMzUsIDI1MiwgMTUxLCA1OCwgMzAsIDE2LCAyMTEsIDI0LCAyNTIsIDE1MSwgNTgsIDMwLCAxNiwgCisgICAgMjEzLCAyNDUsIDU4LCAzMCwgMTYsIDIzOSwgMjIzLCA1OCwgMzAsIDE2LCAyMzIsIDIyNSwgMjI1LCA5NywgNTgsIDMwLCAKKyAgICAxNiwgMjIyLCAxNzYsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIyMiwgNzUsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIyMSwgCisgICAgMTAxLCA1OCwgMzAsIDE2LCAyMzEsIDE5LCA1OCwgMzAsIDE2LCAyMjEsIDEwMCwgNTgsIDMwLCAxNiwgMjMwLCAyNTUsIDU4LCAKKyAgICAzMCwgMTYsIDIyMSwgMTUzLCAyMjUsIDk3LCA1OCwgMzAsIDE2LCAyMzEsIDIwMCwgMjI1LCA5OCwgMjUyLCA5NSwgNTgsIAorICAgIDMwLCAxNiwgMjMxLCAyMDEsIDIyNSwgOTgsIDI1MiwgOTUsIDU4LCAzMCwgMTYsIDIwNSwgMjE3LCA1OCwgMzAsIDE2LCAKKyAgICAyNTIsIDU1LCAyMjUsIDk3LCA1OCwgMzAsIDE2LCAyNTIsIDU2LCAyMTMsIDM1LCAyMjUsIDk3LCA1OCwgMzAsIDE2LCAyMDUsIAorICAgIDIxOCwgNTgsIDMwLCAxNiwgMjMwLCAyNTQsIDU4LCAzMCwgMTYsIDI0MywgNjcsIDU4LCAzMCwgMTYsIDI0OCwgMTAzLCA1OCwgCisgICAgMzAsIDE2LCAyMjYsIDIyMSwgMjMyLCAyMjQsIDU4LCAzMCwgMTYsIDIwOSwgNTcsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIAorICAgIDIyMSwgNTEsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIyMCwgOTEsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIyMiwgMTcyLCA1OCwgCisgICAgMzAsIDE2LCAyNTIsIDgyLCA1OCwgMzAsIDE2LCAyMjksIDM4LCA1OCwgMzAsIDE2LCAyMjEsIDIyNCwgMjI1LCA5NywgNTgsIAorICAgIDMwLCAxNiwgMjIxLCAyMjYsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDI0MiwgMTk3LCAyMjEsIDIyNSwgNTgsIDMwLCAxNiwgCisgICAgMjMwLCAxNjMsIDU4LCAzMCwgMTYsIDI1MiwgODMsIDU4LCAzMCwgMTYsIDIxMSwgMjQsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIAorICAgIDI0MywgNzAsIDU4LCAzMCwgMTYsIDIxMywgMzcsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIxMywgMjgsIDU4LCAzMCwgMTYsIAorICAgIDI0OCwgMjYsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDI0MiwgMjUwLCA1OCwgMzAsIDE2LCAyMTcsIDYzLCAyMjUsIDk3LCA1OCwgCisgICAgMzAsIDE2LCAyMDYsIDE2MiwgMjMxLCA2MywgNTgsIDMwLCAxNiwgMjExLCAyMSwgNTgsIDMwLCAxNiwgMjIwLCA5MiwgNTgsIAorICAgIDMwLCAxNiwgMjExLCAyNSwgNTgsIDMwLCAxNiwgMjExLCAyMiwgNTgsIDMwLCAxNiwgMjIwLCA4OSwgNTgsIDMwLCAxNiwgCisgICAgMjExLCAyMCwgNTgsIDMwLCAxNiwgMjIwLCA4OCwgNTgsIDMwLCAxNiwgMjQwLCAyLCA1OCwgMzAsIDE2LCAyNTIsIDksIDU4LCAKKyAgICAzMCwgMTYsIDI0MiwgMTk3LCAyNTIsIDksIDU4LCAzMCwgMTYsIDIyMiwgNjksIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDIxMiwgCisgICAgMzQsIDI0MiwgMjA5LCA1OCwgMzAsIDE2LCAyMTIsIDM0LCAyNDIsIDE2MiwgNTgsIDMwLCAxNiwgMjEyLCAzNiwgMjUyLCAKKyAgICA1OSwgNTgsIDMwLCAxNiwgMjEyLCAyOCwgMjMyLCA0MiwgMjUyLCA1MSwgNTgsIDMwLCAxNiwgMjMxLCAyNDYsIDU4LCAzMCwgCisgICAgMTYsIDI0MywgMzAsIDU4LCAzMCwgMTYsIDIwNiwgMTQsIDIzMSwgMjQzLCA1OCwgMzAsIDE2LCAyMDYsIDE0LCAyNTIsIDk1LCAKKyAgICA1OCwgMzAsIDE2LCAyMTQsIDE1LCA1OCwgMzAsIDE2LCAyMzEsIDY0LCAyNTIsIDk1LCA1OCwgMzAsIDE2LCAyNDUsIDEwOSwgCisgICAgMjUyLCAxNywgNTgsIDMwLCAxNiwgMjMxLCAxLCAyNTIsIDE3LCA1OCwgMzAsIDE2LCAyMzEsIDEsIDI1MiwgMTUxLCA1OCwgCisgICAgMzAsIDE2LCAyMzEsIDEsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDI1MiwgNTgsIDIyNSwgOTcsIDU4LCAzMCwgMTYsIDI1MiwgCisgICAgNjAsIDU4LCAzMCwgMTYsIDI0NSwgMTA4LCA1OCwgMzAsIDE2LCAyMTEsIDM1LCA1OCwgMzAsIDE2LCAyMTIsIDczLCA1OCwgCisgICAgMzAsIDE2LCAyMzEsIDIzLCA1OCwgMzAsIDE2LCAyMzAsIDI5LCAyNDMsIDIzLCAyNDgsIDE2LCA1OCwgMzAsIDE2LCAyMzAsIAorICAgIDI5LCAyNDMsIDIwMCwgMjQ4LCAxNywgNTgsIDMwLCAxNiwgMjMwLCAyOSwgMjExLCAzNywgMjQ4LCAxNywgNTgsIDMwLCAxNiwgCisgICAgMjMwLCAyOSwgMjEyLCA4NCwgMjQ4LCAxNywgNTgsIDMwLCAxNiwgMjMwLCAyOSwgMjMzLCA3NiwgMjQ4LCAxNiwgNTgsIDMwLCAKKyAgICAxNiwgMjQwLCAzLCAyMjUsIDk4LCAyNTIsIDk1LCA1OCwgMzAsIDE2LCAyNDAsIDMsIDIyMSwgMjE0LCAyNTIsIDUsIDU4LCAKKyAgICAzMCwgMTYsIDI0MCwgMywgMjIxLCAyMTQsIDI0NSwgMTk3LCA1OCwgMzAsIDE2LCAyNDUsIDEzMiwgNTgsIDMwLCAxNiwgCisgICAgMjQ1LCAxMzMsIDIyMSwgMjE0LCAyNTIsIDYsIDIzMSwgMjQzLCA1OCwgMzAsIDE2LCAyNDUsIDEzMywgMjIxLCAyMTQsIAorICAgIDI1MiwgNiwgMjUyLCA5NSwgNTgsIDMwLCAxNiwgMjQ1LCAxMzMsIDIyMSwgMjE0LCAyNDUsIDE5NywgNTgsIDMwLCAxNiwgCisgICAgMjExLCA0MiwgNTgsIDMwLCAxNiwgMjUyLCAxMCwgNTgsIDMwLCAxNiwgMjMzLCA4MywgNTgsIDMwLCAxNiwgMjQ1LCAxNTQsIAorICAgIDU4LCAzMCwgMTYsIDI1MiwgMjE1LCAyMjAsIDE5NCwgMjUyLCAxMSwgNTgsIDMwLCAxNiwgMjUyLCAyMTUsIDI1MiwgOCwgCisgICAgNTgsIDMwLCAxNiwgMjUyLCAyMTUsIDI1MiwgMTEsIDU4LCAzMCwgMTYsIDI1MiwgMjE1LCAyMjcsIDU4LCA1OCwgMzAsIDE2LCAKKyAgICAyNTIsIDIxNSwgMjI3LCA2OSwgNTgsIDMwLCAxNiwgMjUyLCAyMTUsIDI0MCwgNCwgNTgsIDMwLCAxNiwgMjUyLCAyMTUsIAorICAgIDI0MCwgMSwgNTgsIDMwLCAxNiwgMjUyLCAyMTUsIDIyMCwgMTk0LCAyNDAsIDQsIDU4LCAzMCwgMTYsIDIyNywgMTgzLCAKKyAgICAyMjAsIDk4LCAyMzcsIDE3NywgNTgsIDMwLCAxNiwgMjI3LCAxODMsIDI1MiwgMTUzLCAyMjAsIDk4LCAyMzcsIDE3NywgNTgsIAorICAgIDMwLCAxNiwgMjI3LCAxODMsIDI0NSwgMTk2LCAyMzcsIDE3NywgNTgsIDMwLCAxNiwgMjI3LCAxODMsIDI1MiwgMTUzLCAKKyAgICAyNDUsIDE5NiwgMjM3LCAxNzcsIDU4LCAzMCwgMTYsIDIyNywgMTgzLCAyMTEsIDMwLCAyMzcsIDE3NywgNTgsIDMwLCAxNiwgCisgICAgMjI3LCAxODMsIDIxMSwgNDMsIDU4LCAzMCwgMTYsIDIyNywgMTgzLCAyMTIsIDc4LCAyMzcsIDE3NywgNTgsIDMwLCAxNiwgCisgICAgMjI3LCAxODMsIDIxMiwgNzgsIDIzMCwgMzMsIDIzNywgMTc3LCA1OCwgMzAsIDE2LCAyMjcsIDE4MywgMjMwLCAzMywgMjM3LCAKKyAgICAxNzcsIDU4LCAzMCwgMTYsIDIyNywgMTgzLCAyMjAsIDIzNywgMjM3LCAxNzcsIDU4LCAzMCwgMTYsIDIzMiwgMjMyLCAyMTIsIAorICAgIDEwMiwgMjM3LCAxNzgsIDU4LCAzMCwgMTYsIDI1MiwgNTYsIDIxMiwgMTAyLCAyMzcsIDE3OCwgNTgsIDMwLCAxNiwgMjQyLCAKKyAgICA0NiwgMjEyLCA3NSwgNTgsIDMwLCAxNiwgMjQyLCA0NiwgMjI2LCAxNjEsIDU4LCAzMCwgMTYsIDI0MiwgNDYsIDI0NSwgCisgICAgMTM3LCA1OCwgMzAsIDE2LCAyMjcsIDE4MywgMjA5LCA1MCwgMjM3LCAxNzcsIDU4LCAzMCwgMTYsIDIyNywgMTgzLCAyMjAsIAorICAgIDk3LCAyMzcsIDE3NywgNTgsIDMwLCAxNiwgMjI3LCAxODMsIDIyMCwgMjM3LCAyMTIsIDc4LCAyMzcsIDE3NywgNTgsIDMwLCAKKyAgICAxNiwgMjM5LCAyNTUsIDIyNiwgMzQsIDI1MiwgNTksIDU4LCAzMCwgMTYsIDIzOSwgMjU1LCAyMjYsIDM0LCAyNDUsIDEwNywgCisgICAgNTgsIDMwLCAxNiwgMjQzLCAzOSwgMjMyLCA0MiwgMjQxLCA5MCwgMjA4LCAxNTYsIDU4LCAzMCwgMTYsIDIzMywgODIsIDU4LCAKKyAgICAzMCwgMTYsIDIzMywgODAsIDU4LCAzMCwgMTYsIDI0MSwgOTAsIDI1MiwgMTgsIDI0NSwgMTk1LCAyMzcsIDE3NiwgNTgsIAorICAgIDMwLCAxNiwgMjQxLCA5MCwgMjQ1LCAxNTIsIDE3OSwgNTgsIDMwLCAxNiwgMjQxLCA5MCwgMjQ1LCAxNTIsIDIyNSwgMjA4LCAKKyAgICA1OCwgMzAsIDE2LCAyNDEsIDkwLCAyMjUsIDIwMywgMjM3LCAxNzcsIDU4LCAzMCwgMTYsIDI0MSwgOTAsIDI0NSwgMTUyLCAKKyAgICAyNDUsIDE2OCwgNTgsIDMwLCAxNiwgMjQxLCA5MCwgMjE0LCAyNDIsIDI0NSwgMTUxLCAyNDUsIDE2OCwgNTgsIDMwLCAxNiwgCisgICAgMjQxLCA5MCwgMjQ1LCAxNTIsIDIzMSwgMjI0LCA1OCwgMzAsIDE2LCAyNDEsIDkwLCAyNDUsIDE1MiwgMjA1LCAxOSwgNTgsIAorICAgIDMwLCAxNiwgMjQxLCA5MCwgMjQ1LCAxNTIsIDIyNCwgMjMxLCAyMzEsIDI0MywgNTgsIDMwLCAxNiwgMjQxLCA5MCwgMjQ1LCAKKyAgICAxNTIsIDIyNCwgMjMxLCAyNTIsIDk1LCA1OCwgMzAsIDE2LCAyNDEsIDkwLCAyMjcsIDIyNywgMjQ4LCAxOCwgMjQ1LCAxMzcsIAorICAgIDU4LCAzMCwgMTYsIDI0MSwgOTAsIDIyNywgMjI3LCAyNDgsIDE4LCAyMjYsIDE2MSwgNTgsIDMwLCAxNiwgMjQxLCAyNTEsIAorICAgIDIxNCwgMjQyLCAyNDgsIDE4LCAyMDksIDQ5LCA1OCwgMzAsIDE2LCAyNDEsIDkwLCAyMTQsIDI0MiwgMjQ4LCAxOCwgMjEzLCAKKyAgICAzOCwgNTgsIDMwLCAxNiwgMjQxLCA5MCwgMjI1LCAxMDAsIDU4LCAzMCwgMTYsIDI0OCwgMTksIDIwNCwgMjQ0LCA1OCwgMzAsIAorICAgIDE2LCAyNDgsIDE5LCAyMzEsIDYyLCA1OCwgMzAsIDE2LCAyNDgsIDE5LCAyMTQsIDE0NCwgNTgsIDMwLCAxNiwgMjQxLCA5MCwgCisgICAgMjM3LCAyMjUsIDIwNiwgMTMsIDIxMiwgNzksIDU4LCAzMCwgMTYsIDI0MSwgOTAsIDI0MywgNDAsIDI1MiwgODQsIDU4LCAKKyAgICAzMCwgMTYsIDIwNiwgMTMsIDIxMSwgMzEsIDU4LCAzMCwgMTYsIDI0NSwgMTQ1LCAyMTEsIDMxLCA1OCwgMzAsIDE2LCAyNDUsIAorICAgIDE0NSwgMjEyLCA3OSwgNTgsIDMwLCAxNiwgMjQ1LCAxNDUsIDI1MiwgNjEsIDI0MywgMjAwLCAyNDUsIDQzLCA1OCwgMzAsIAorICAgIDE2LCAyNDUsIDE0NSwgMjI2LCAxNTksIDIxMiwgODMsIDI0NSwgNDMsIDU4LCAzMCwgMTYsIDI0NSwgMTQ1LCAyNDUsIDEyOSwgCisgICAgMjQyLCAxNzMsIDI0NSwgNDMsIDU4LCAzMCwgMTYsIDI0NSwgMTQ1LCAyMTEsIDQwLCAyMjIsIDE4MiwgMjQ1LCA0MywgNTgsIAorICAgIDMwLCAxNiwgMjA2LCAxMywgMjUyLCA2MSwgMjQzLCAyMDAsIDI0NSwgNDMsIDU4LCAzMCwgMTYsIDIwNiwgMTMsIDIyNiwgCisgICAgMTU5LCAyMTIsIDgzLCAyNDUsIDQzLCA1OCwgMzAsIDE2LCAyMDYsIDEzLCAyNDUsIDEyOSwgMjQyLCAxNzMsIDI0NSwgNDMsIAorICAgIDU4LCAzMCwgMTYsIDIwNiwgMTMsIDIxMSwgNDAsIDIyMiwgMTgyLCAyNDUsIDQzLCA1OCwgMzAsIDE2LCAyNDAsIDE1NSwgCisgICAgMjQ1LCAxNDQsIDU4LCAzMCwgMTYsIDI0MCwgMTU1LCAyMDYsIDEyLCA1OCwgMzAsIDE2LCAyNDUsIDE1MywgMjUyLCA2MSwgCisgICAgMjI2LCAyMjIsIDU4LCAzMCwgMTYsIDI0NSwgMTUzLCAyNTIsIDYxLCAyMjcsIDk4LCA1OCwgMzAsIDE2LCAyNDUsIDE1MywgCisgICAgMjQ1LCAxMDgsIDU4LCAzMCwgMTYsIDI0NSwgMTUzLCAyMTIsIDI2LCA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyMTIsIDI2LCAKKyAgICA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyMTIsIDI3LCAyNDUsIDkzLCA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyMTIsIDI3LCAyMTEsIAorICAgIDMyLCA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyMTIsIDI3LCAyMTIsIDcxLCA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyNTEsIDIzOCwgCisgICAgNTgsIDMwLCAxNiwgMjE1LCA0OSwgMjUxLCAyMzksIDI0NSwgOTMsIDU4LCAzMCwgMTYsIDIxNSwgNDksIDI1MSwgMjM5LCAKKyAgICAyMTEsIDMyLCA1OCwgMzAsIDE2LCAyMTUsIDQ5LCAyNTEsIDIzOSwgMjEyLCA3MSwgNTgsIDMwLCAxNiwgMjQ1LCAxMzAsIAorICAgIDI0MCwgMTM2LCA1OCwgMzAsIDE2LCAyNDUsIDEzNiwgMjIyLCA5NywgNTgsIDMwLCAxNiwgMjE0LCA1LCA1OCwgMzAsIDE2LCAKKyAgICAyNTIsIDIsIDE3OSwgNTgsIDMwLCAxNiwgMjUyLCAyLCAyMDgsIDE1NiwgNTgsIDMwLCAxNiwgMjUyLCAyLCAyNDAsIDI0NCwgCisgICAgNTgsIDMwLCAxNiwgMjUyLCAyLCAyNDUsIDE2OCwgNTgsIDMwLCAxNiwgMjUyLCAyLCAyMzEsIDIyNCwgNTgsIDMwLCAxNiwgCisgICAgMjUyLCAyLCAyMDUsIDE5LCA1OCwgMzAsIDE2LCAyNTIsIDIsIDIyNCwgMjMwLCA1OCwgMzAsIDE2LCAyMzEsIDIwMCwgMjI1LCAKKyAgICA5OCwgMjI3LCA2OCwgNTgsIDMwLCAxNiwgMjMxLCAyMDEsIDIyNSwgOTgsIDIyNywgNjgsIDU4LCAzMCwgMTYsIDIzMSwgCisgICAgMjAwLCAyMjUsIDk4LCAyMzEsIDI0MywgNTgsIDMwLCAxNiwgMjMxLCAyMDEsIDIyNSwgOTgsIDIzMSwgMjQzLCA1OCwgMzAsIAorICAgIDE2LCAyMzEsIDY0LCAyMzEsIDI0MywgNTgsIDMwLCAxNiwgMjQwLCAzLCAyMjUsIDk4LCAyMzEsIDI0MywgMzAsIDE2LCAKKyAgICAyMTUsIDQxLCAyNTAsIDEyNCwgMzAsIDE2LCA1MCwgMjUwLCAxMjQsIDMwLCAxNiwgNDIsIDI1MCwgMTI0LCAzMCwgMTYsIAorICAgIDIxOCwgMjI1LCA0MiwgMjUwLCAxMjQsIDMwLCAxNiwgMjQ2LCA3NywgMjUwLCAxMjQsIDMwLCAxNiwgMjE1LCAxNDQsIDI1MCwgCisgICAgMTI0LCAzMCwgMTYsIDQ3LCAyMTgsIDI1MiwgNTMsIDMwLCAxNiwgNDgsIDIxOCwgMjUyLCA1MywgMzAsIDE2LCAyMTgsIAorICAgIDI1MiwgMjQ1LCAyMSwgMzAsIDE2LCAyNDYsIDExOCwgMjE3LCA2NiwgMzAsIDE2LCAyNDYsIDE0NiwgMjQ4LCAyMTAsIDMwLCAKKyAgICAxNiwgMjE3LCA2NiwgMzAsIDE2LCAyNDcsIDE3MCwgMzAsIDE2LCAyMTgsIDI1MCwgMjQxLCAyNDAsIDMwLCAxNiwgMjE4LCAKKyAgICAyNTAsIDI0MSwgMjM5LCAzMCwgMTYsIDIxOCwgMjUwLCAyNDEsIDIzOCwgMzAsIDE2LCAyNDIsIDQsIDMwLCAxNiwgMjQyLCAKKyAgICA1LCA1NSwgMzAsIDE2LCAyNDksIDEyNCwgODMsIDMwLCAxNiwgMjQ4LCAyNDcsIDMwLCAxNiwgMjQ5LCAxMzUsIDMwLCAxNiwgCisgICAgMTQ1LCAzMCwgMTYsIDIyMiwgMTYyLCAyMTQsIDM0LCAzMCwgMTYsIDIxMCwgMTA3LCAyMTQsIDM0LCAzMCwgMTYsIDIxMSwgCisgICAgMjM2LCAyMTQsIDM0LCAzMCwgMTYsIDI0MSwgMTI0LCAyMTQsIDM0LCAzMCwgMTYsIDI0MSwgMjAzLCAyMTQsIDM0LCAzMCwgCisgICAgMTYsIDIxNSwgOSwgMjE0LCAzNCwgMzAsIDE2LCAyMTUsIDcsIDI0MSwgMTA1LCAzMCwgMTYsIDI0MSwgMTIyLCAyNDEsIAorICAgIDEwNSwgMzAsIDE2LCAyNDEsIDU2LCAyNDcsIDIwNiwgMzAsIDE2LCAyNDEsIDU2LCAyNDcsIDIwNywgMjIyLCA5OSwgMjUyLCAKKyAgICAxNDIsIDMwLCAxNiwgMjQxLCA1NiwgMjQ3LCAyMDcsIDIyMiwgOTksIDI1MCwgMTA5LCAzMCwgMTYsIDI0OSwgMzUsIDI0NywgCisgICAgMjA2LCAzMCwgMTYsIDI0MiwgMTQwLCAyNDcsIDIwNiwgMzAsIDE2LCAyNDIsIDE0MCwgMjQ3LCAyMDcsIDIyMiwgOTksIAorICAgIDI1MiwgMTQyLCAzMCwgMTYsIDI0MiwgMTQwLCAyNDcsIDIwNywgMjIyLCA5OSwgMjUwLCAxMDksIDMwLCAxNiwgMjQzLCAKKyAgICAyNDIsIDI0NywgMjA1LCAzMCwgMTYsIDI0MywgMjQyLCAyNDcsIDIwNCwgMzAsIDE2LCAyMjYsIDk1LCAyMjcsIDExOCwgCisgICAgMjE4LCAyMzYsIDMwLCAxNiwgNTAsIDIxNSwgMjI3LCAzMCwgMTYsIDUwLCAyNDEsIDE4NywgMzAsIDE2LCAyNDEsIDE4OCwgCisgICAgMjA5LCAyMDYsIDMwLCAxNiwgMjQxLCAxODgsIDI0NCwgOCwgMzAsIDE2LCAyMjUsIDE5MiwgMjA5LCAyMDYsIDMwLCAxNiwgCisgICAgMjI1LCAxOTIsIDI0NCwgOCwgMzAsIDE2LCAyMTUsIDIyOCwgMjA5LCAyMDYsIDMwLCAxNiwgMjE1LCAyMjgsIDI0NCwgOCwgCisgICAgMzAsIDE2LCAyMTksIDIwNSwgMTM1LCAyMTUsIDIyNywgMzAsIDE2LCAyMTksIDIwNSwgMTM1LCAyNDEsIDE4NywgMzAsIDE2LCAKKyAgICAyNDcsIDE1MiwgMjExLCAxNzcsIDMwLCAxNiwgMjQ3LCAxMSwgMjExLCAxNzcsIDMwLCAxNiwgMjIyLCA5OSwgMjUyLCAxNDIsIAorICAgIDMwLCAxNiwgMjIyLCA5OSwgMjUwLCAxMDksIDMwLCAxNiwgMjE5LCAxODYsIDI1MiwgMTQyLCAzMCwgMTYsIDIxOSwgMTg2LCAKKyAgICAyNTAsIDEwOSwgMzAsIDE2LCAyMjYsIDk4LCAyMTgsIDIzNiwgMzAsIDE2LCAyMDcsIDIxLCAyMTgsIDIzNiwgMzAsIDE2LCAKKyAgICAxNjAsIDIxOCwgMjM2LCAzMCwgMTYsIDIxOSwgMjA1LCAyMTgsIDIzNiwgMzAsIDE2LCAyNDMsIDg0LCAyMTgsIDIzNiwgMzAsIAorICAgIDE2LCAyMTUsIDMsIDIxOCwgMjM2LCAzMCwgMTYsIDIxMiwgMSwgMjE4LCAyMzYsIDMwLCAxNiwgMjE0LCAyNTEsIDIxOCwgCisgICAgMjM2LCAzMCwgMTYsIDExOSwgMjM4LCAzMCwgMjEwLCAxMjEsIDIxOCwgMjM2LCAzMCwgMTYsIDIwNiwgMTk2LCAyMjQsIDMzLCAKKyAgICAzMCwgMTYsIDEwMSwgMjI0LCAzMywgMzAsIDE2LCAyNDcsIDIzNCwgMjA2LCAxOTYsIDIyNCwgMzMsIDMwLCAxNiwgNDksIAorICAgIDIyNCwgMzQsIDIwNywgMjMsIDMwLCAxNiwgNDksIDIyNCwgMzQsIDI0OSwgMjAyLCAzMCwgMTYsIDIxMSwgNTIsIDIyNCwgCisgICAgMzQsIDEyMCwgMjA3LCAyMywgMzAsIDE2LCAyMTEsIDUyLCAyMjQsIDM0LCAxMjAsIDI0OSwgMjAyLCAzMCwgMTYsIDIxMSwgCisgICAgNTIsIDIyNCwgMzQsIDQ3LCAyMDcsIDIzLCAzMCwgMTYsIDIxMSwgNTIsIDIyNCwgMzQsIDQ3LCAyNDksIDIwMiwgMzAsIDE2LCAKKyAgICAyMTEsIDUyLCAyMjQsIDM0LCA0OCwgMjA3LCAyMywgMzAsIDE2LCAyMTEsIDUyLCAyMjQsIDM0LCA0OCwgMjQ5LCAyMDIsIAorICAgIDMwLCAxNiwgMjExLCA1MiwgMjI0LCAzNCwgMTMwLCAyMDcsIDIzLCAzMCwgMTYsIDIxMSwgNTIsIDIyNCwgMzQsIDEzMCwgCisgICAgMjQ5LCAyMDIsIDMwLCAxNiwgMjExLCA1MiwgMjI0LCAzNCwgMTIwLCA0OCwgMjA3LCAyMywgMzAsIDE2LCAyMTEsIDUyLCAKKyAgICAyMjQsIDM0LCAxMjAsIDQ4LCAyNDksIDIwMiwgMzAsIDE2LCAyMjYsIDE0NSwgMjI0LCAzNCwgMjA3LCAyMywgMzAsIDE2LCAKKyAgICAyMjYsIDE0NSwgMjI0LCAzNCwgMjQ5LCAyMDIsIDMwLCAxNiwgMjExLCA0OSwgMjI0LCAzNCwgMTMwLCAyMDcsIDIzLCAzMCwgCisgICAgMTYsIDIxMSwgNDksIDIyNCwgMzQsIDEzMCwgMjQ5LCAyMDIsIDMwLCAxNiwgMjIxLCAyMTcsIDIyNCwgMzMsIDMwLCAxNiwgCisgICAgMjA4LCAxNjcsIDIyNCwgMzMsIDMwLCAxNiwgMjI0LCAzNCwgMjQ5LCAyMDIsIDMwLCAxNiwgMjIzLCAxODIsIDIyNCwgMzMsIAorICAgIDMwLCAxNiwgMjQ3LCAxNzcsIDIyNCwgMzQsIDIwNywgMjMsIDMwLCAxNiwgMjQ3LCAxNzcsIDIyNCwgMzQsIDI0OSwgMjAyLCAKKyAgICAzMCwgMTYsIDI0OSwgMTIyLCAzMCwgMTYsIDIwNywgMjEsIDIyNCwgMzcsIDMwLCAxNiwgMTYwLCAyMjQsIDM3LCAzMCwgMTYsIAorICAgIDIxOSwgMjA1LCAyMjQsIDM3LCAzMCwgMTYsIDI0MywgODQsIDIyNCwgMzcsIDMwLCAxNiwgMjE1LCAzLCAyMjQsIDM3LCAzMCwgCisgICAgMTYsIDIxMiwgMSwgMjI0LCAzNywgMzAsIDE2LCAyMTQsIDI1MSwgMjI0LCAzNywgMzAsIDE2LCAxMTksIDIzOCwgMzAsIAorICAgIDIxMCwgMTIxLCAyMjQsIDM3LCAzMCwgMTYsIDM2LCAyMTQsIDksIDMwLCAxNiwgMzYsIDIxNCwgMTE0LCAyMTQsIDksIDMwLCAKKyAgICAxNiwgMzYsIDIxMSwgNjAsIDMwLCAxNiwgMzYsIDIxMSwgNTksIDMwLCAxNiwgMzYsIDIxMSwgNTgsIDMwLCAxNiwgMjQxLCAKKyAgICAyMjYsIDIxMSwgNjAsIDMwLCAxNiwgMjQxLCAyMjYsIDIxMSwgNTksIDMwLCAxNiwgMjQxLCAyMjYsIDIxMSwgNTgsIDMwLCAKKyAgICAxNiwgMzYsIDI1MSwgMTgxLCAyNDUsIDIzLCAzMCwgMTYsIDM2LCAyNDEsIDE5NSwgMzAsIDE2LCAzNiwgMjQxLCAxOTQsIAorICAgIDMwLCAxNiwgMzYsIDI0MSwgMTkzLCAzMCwgMTYsIDM2LCAyNDEsIDE5MiwgMzAsIDE2LCAzNiwgMjQxLCAxOTEsIDMwLCAxNiwgCisgICAgMjUwLCA0MiwgMjUwLCA1OSwgMzAsIDE2LCAyNDMsIDM0LCAyNTAsIDU5LCAzMCwgMTYsIDI1MCwgNDIsIDIxMSwgMjAzLCAKKyAgICAzMCwgMTYsIDI0MywgMzQsIDIxMSwgMjAzLCAzMCwgMTYsIDI1MCwgNDIsIDIxNCwgMjE2LCAzMCwgMTYsIDI0MywgMzQsIAorICAgIDIxNCwgMjE2LCAzMCwgMTYsIDI1MCwgNDIsIDIyMSwgNjAsIDMwLCAxNiwgMjQzLCAzNCwgMjIxLCA2MCwgMzAsIDE2LCAzNiwgCisgICAgMjUzLCAyMSwgMzAsIDE2LCAzNiwgMjE0LCAzNywgMzAsIDE2LCAzNiwgMjEyLCA4OCwgMzAsIDE2LCAzNiwgMjE0LCAzOCwgCisgICAgMzAsIDE2LCAzNiwgMjI3LCAxOTUsIDMwLCAxNiwgMzYsIDIyNywgMTk0LCAzMCwgMTYsIDM2LCAyNTMsIDIwLCAzMCwgMTYsIAorICAgIDM2LCAyMjksIDk5LCAzMCwgMTYsIDI1MSwgMjQ5LCAyMDksIDIwNiwgMzAsIDE2LCAyNTEsIDI0OSwgMjQ0LCA4LCAzMCwgCisgICAgMTYsIDM2LCAyNDUsIDM4LCAzMCwgMTYsIDM2LCAyMTgsIDE0NSwgMzAsIDE2LCAzNiwgMjQxLCAxNzksIDMwLCAxNiwgMzYsIAorICAgIDIxNCwgMjEyLCAzMCwgMTYsIDM2LCAyNTAsIDIxLCAzMCwgMTYsIDM2LCA1MCwgMjExLCAxMDcsIDMwLCAxNiwgMzYsIDIxMSwgCisgICAgMzYsIDIxMSwgMTA3LCAzMCwgMTYsIDIxOCwgMTUwLCAzMCwgMTYsIDIxMywgMTkzLCAzMCwgMTYsIDIwNSwgMTU5LCAzMCwgCisgICAgMTYsIDIyMSwgNTIsIDMwLCAxNiwgMjI3LCA0OSwgMzAsIDE2LCAyNDEsIDEzMiwgMzAsIDE2LCAyNDcsIDY3LCAzMCwgMTYsIAorICAgIDI0NSwgMjUyLCAzMCwgMTYsIDIzOSwgMjUwLCAyMjQsIDM4LCAyMTQsIDIzNSwgMzAsIDE2LCAyMzksIDI1MCwgMjI0LCAzOCwgCisgICAgMjI0LCA2OCwgMjE0LCAyMzUsIDMwLCAxNiwgMjExLCA4NCwgMzAsIDE2LCAyMTAsIDE0NCwgMzAsIDE2LCAyMzMsIDIsIAorICAgIDIxMCwgMTQ0LCAzMCwgMTYsIDIxMCwgMTQ1LCAyMTQsIDIzNSwgMzAsIDE2LCAyMTAsIDE0NSwgMjA5LCAyMDYsIDMwLCAxNiwgCisgICAgMjIyLCAxMTIsIDIxMywgMjI0LCAzMCwgMTYsIDIyMiwgMTEyLCAyMTMsIDIyMSwgMzAsIDE2LCAyMjIsIDExMiwgMjEzLCAKKyAgICAyMjAsIDMwLCAxNiwgMjIyLCAxMTIsIDIxMywgMjE5LCAzMCwgMTYsIDIyMiwgMTEyLCAyMTMsIDIxOCwgMzAsIDE2LCAyMjIsIAorICAgIDExMiwgMjEzLCAyMTcsIDMwLCAxNiwgMjIyLCAxMTIsIDIxMywgMjE2LCAzMCwgMTYsIDIyMiwgMTEyLCAyMTMsIDIxNSwgCisgICAgMzAsIDE2LCAyMjIsIDExMiwgMjEzLCAyMTQsIDMwLCAxNiwgMjIyLCAxMTIsIDIxMywgMjIzLCAzMCwgMTYsIDIyMiwgMTEyLCAKKyAgICAyMTMsIDIyMiwgMzAsIDE2LCAyMzksIDc5LCAzMCwgMTYsIDIyNSwgMTA4LCAzMCwgMTYsIDI0MywgMzQsIDczLCAyMTQsIDEsIAorICAgIDMwLCAxNiwgMjQ1LCAyNDUsIDIxNCwgMjM1LCAzMCwgMTYsIDM2LCAxMzAsIDI0OSwgMTQ2LCAzMCwgMTYsIDM2LCAxMjAsIAorICAgIDI0OSwgMTQ2LCAzMCwgMTYsIDM2LCAyMzksIDkxLCAzMCwgMTYsIDM2LCAyMTQsIDIwMywgMjIwLCAyNDEsIDMwLCAxNiwgCisgICAgMjIxLCAxNjksIDgzLCAzMCwgMTYsIDIyMSwgMTY5LCAxMjAsIDgzLCAzMCwgMTYsIDE2MCwgMjIxLCAxNjksIDgzLCAzMCwgCisgICAgMTYsIDI0MCwgMjcsIDIwOSwgMjA2LCAzMCwgMTYsIDI0MCwgMjcsIDI0NCwgOCwgMzAsIDE2LCAyLCAyNDEsIDIyNSwgMzAsIAorICAgIDE2LCAyNDYsIDEwMiwgMzAsIDE2LCAyNDYsIDEwMywgMjUyLCAxNTYsIDMwLCAxNiwgMjI3LCAxNjQsIDMwLCAxNiwgMjI5LCAKKyAgICAxMTcsIDMwLCAxNiwgMjQ5LCAxMTksIDMwLCAxNiwgMjE2LCA1NiwgMjA3LCAyMywgMzAsIDE2LCAyMTYsIDU2LCAyNDksIAorICAgIDIwMiwgMzAsIDE2LCAyMjYsIDIwNSwgMzAsIDE2LCAyMjYsIDIwNiwgMjQ5LCAyMDIsIDMwLCAxNiwgMjE2LCA1MCwgMjA3LCAKKyAgICAyMywgMzAsIDE2LCAyMTYsIDUwLCAyNDksIDIwMiwgMzAsIDE2LCAyNDEsIDczLCAyMDcsIDIzLCAzMCwgMTYsIDI0MSwgNzMsIAorICAgIDI0OSwgMjAyLCAzMCwgMTYsIDIyOSwgMTE4LCAyMjEsIDEyOSwgMjE4LCAyMzYsIDMwLCAxNiwgMjI5LCAxMTgsIDIzMywgCisgICAgNzMsIDIxOCwgMjM2LCAzMCwgMTYsIDI0OSwgMTIwLCAyMTgsIDIzNiwgMzAsIDE2LCAyMTYsIDU2LCAyMTgsIDIzNiwgMzAsIAorICAgIDE2LCAyMjYsIDIwNiwgMjE4LCAyMzYsIDMwLCAxNiwgMjE2LCA1MCwgMjE4LCAyMzYsIDMwLCAxNiwgMjEyLCAxMDAsIDIyMSwgCisgICAgMTI3LCAyNDcsIDM0LCAyMjAsIDEwNywgMjIxLCAxMjgsIDMwLCAxNiwgMjEyLCAxMDAsIDIyMSwgMTI3LCAyNDcsIDM0LCAKKyAgICAyMjAsIDEwNywgMjMzLCA3MiwgMzAsIDE2LCAyMTIsIDEwMCwgMjIxLCAxMjcsIDI0NywgMzQsIDIyMCwgMTA3LCAyMjEsIAorICAgIDEyOSwgMjQ1LCAxMTgsIDMwLCAxNiwgMjEyLCAxMDAsIDIzMywgNzEsIDI0NywgMzQsIDIyMCwgMTA3LCAyMjEsIDEyOCwgCisgICAgMzAsIDE2LCAyMTIsIDEwMCwgMjMzLCA3MSwgMjQ3LCAzNCwgMjIwLCAxMDcsIDIzMywgNzIsIDMwLCAxNiwgMjEyLCAxMDAsIAorICAgIDIzMywgNzEsIDI0NywgMzQsIDIyMCwgMTA3LCAyMzMsIDczLCAyNDUsIDExOCwgMzAsIDE2LCAyMTIsIDEwMCwgMjMzLCA3MSwgCisgICAgMjQ3LCAzNCwgMjIwLCAxMDcsIDIzMywgNzMsIDI0NSwgMTE3LCAzMCwgMTYsIDIxMiwgMTAwLCAyMzMsIDcxLCAyNDcsIDM0LCAKKyAgICAyMjAsIDEwNywgMjMzLCA3MywgMjQ1LCAxMTYsIDMwLCAxNiwgMjQ3LCA2MiwgMzAsIDE2LCAyMzksIDIyNiwgMjQ5LCAzNSwgCisgICAgMjQ3LCAyMDYsIDMwLCAxNiwgMjM5LCAyMjYsIDI0MiwgMTQwLCAyNDcsIDIwNiwgMzAsIDE2LCA0OSwgMjUxLCAxNTAsIDMwLCAKKyAgICAxNiwgMjA4LCAxODcsIDMwLCAxNiwgMjIwLCAyMDgsIDMwLCAxNiwgMjQ3LCAxOTcsIDMwLCAxNiwgMjE3LCAxMDgsIDMwLCAKKyAgICAxNiwgMjQ3LCAyMDEsIDMwLCAxNiwgMjExLCA5NSwgMzAsIDE2LCAyMjAsIDE4MCwgMzAsIDE2LCAyMjAsIDE4MSwgMjQxLCAKKyAgICAxODEsIDMwLCAxNiwgMjE3LCAxMDksIDI0MSwgMTgxLCAzMCwgMTYsIDIxMSwgOTYsIDIxOCwgMjMzLCAzMCwgMTYsIDIyMSwgCisgICAgMTEwLCAyMTMsIDE4NCwgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDg4LCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIAorICAgIDIxMywgNzcsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA2NywgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDYwLCAKKyAgICAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgNTIsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA0NiwgMjcsIDIwOCwgCisgICAgMTcyLCAyMjQsIDQxLCAyMTMsIDQ1LCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgNDQsIDI3LCAyMDgsIDE3MiwgMjI0LCAKKyAgICA0MSwgMjEzLCA0MywgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDg3LCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgCisgICAgODYsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA4NSwgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDg0LCAyNywgCisgICAgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgODMsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA4MiwgMjcsIDIwOCwgMTcyLCAKKyAgICAyMjQsIDQxLCAyMTMsIDgxLCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgODAsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgCisgICAgMjEzLCA3OSwgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDc4LCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgNzYsIAorICAgIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA3NSwgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDc0LCAyNywgMjA4LCAKKyAgICAxNzIsIDIyNCwgNDEsIDIxMywgNzMsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCA3MiwgMjcsIDIwOCwgMTcyLCAyMjQsIAorICAgIDQxLCAyMTMsIDUxLCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgNTAsIDI3LCAyMDgsIDE3MiwgMjI0LCA0MSwgMjEzLCAKKyAgICA0OSwgMjcsIDIwOCwgMTcyLCAyMjQsIDQxLCAyMTMsIDQ4LCAyNywgMjA4LCAxNzIsIDIyNCwgNDEsIDIxMywgNDcsIDI3LCAKKyAgICAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDg4LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA3NywgMjcsIDIzMywgMjQsIAorICAgIDIyNCwgNDEsIDIxMywgNjAsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDUyLCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgCisgICAgMjEzLCA0NSwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNDQsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDg2LCAKKyAgICAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA4NSwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgODQsIDI3LCAyMzMsIAorICAgIDI0LCAyMjQsIDQxLCAyMTMsIDgzLCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA4MCwgMjcsIDIzMywgMjQsIDIyNCwgCisgICAgNDEsIDIxMywgNzksIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDc4LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCAKKyAgICA3MywgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNzIsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDcxLCAyNywgCisgICAgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA3MCwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNjksIDI3LCAyMzMsIDI0LCAKKyAgICAyMjQsIDQxLCAyMTMsIDY4LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA2NiwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIAorICAgIDIxMywgNjUsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDY0LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA2MywgCisgICAgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNjIsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDYxLCAyNywgMjMzLCAKKyAgICAyNCwgMjI0LCA0MSwgMjEzLCA1OSwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNTgsIDI3LCAyMzMsIDI0LCAyMjQsIAorICAgIDQxLCAyMTMsIDU3LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA1NiwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgCisgICAgNTUsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDU0LCAyNywgMjMzLCAyNCwgMjI0LCA0MSwgMjEzLCA1MywgMjcsIAorICAgIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNTEsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAyMTMsIDUwLCAyNywgMjMzLCAyNCwgCisgICAgMjI0LCA0MSwgMjEzLCA0OSwgMjcsIDIzMywgMjQsIDIyNCwgNDEsIDIxMywgNDgsIDI3LCAyMzMsIDI0LCAyMjQsIDQxLCAKKyAgICAyMTMsIDQ3LCAzNiwgMjcsIDMwLCAyMTEsIDMzLCAzNiwgMjcsIDMwLCAyMTIsIDcyLCAzNiwgMjcsIDMwLCAyMjEsIDEzOCwgCisgICAgMjcsIDMwLCAyMzAsIDI4LCAyMjYsIDE2MCwgMzMsIDI0MywgMTIwLCAyNDUsIDEzMSwgMzMsIDIzOSwgNTUsIDI0MywgMTIwLCAKKyAgICAyNDUsIDEzMSwgMzMsIDIzOCwgMzMsIDI0MywgMTIwLCAyNDUsIDEzMSwgMzMsIDI0MywgMTE5LCAyMzksIDU2LCAyNDUsIAorICAgIDEzMSwgMzMsIDI0MywgMTE5LCAyMzgsIDMyLCAyNDUsIDEzMSwgMzMsIDI0MywgMTIwLCAyMTIsIDc0LCAzMywgMjQ4LCAKKyAgICAxMjgsIDIxMiwgNzQsIDMzLCAyNDEsIDgyLCAyNDcsIDIzMywgMjEyLCA3NCwgMzMsIDIyNiwgMTk3LCAyMTIsIDc0LCAzMywgCisgICAgMjUwLCAxMTksIDIxMiwgNzQsIDMzLCAyMzEsIDIxOCwgMjE0LCAyMTUsIDIxMiwgNzQsIDMzLCAyNDcsIDExMCwgMjEyLCAKKyAgICA3NCwgMzMsIDI1MSwgMjI3LCAyMTIsIDc0LCAzMywgMjIyLCAxMjgsIDIxMiwgNzQsIDMzLCAyNDksIDEyOSwgMjIyLCA5MywgCisgICAgMjEyLCA3NCwgMzMsIDI0NSwgMjQ3LCAyMjIsIDEyMywgMjQ1LCA4NiwgMjEyLCA3NCwgMzMsIDI0NSwgODMsIDIxMiwgNzQsIAorICAgIDMzLCAyMDUsIDIyNSwgMjEyLCA3NCwgMzMsIDIzMywgNTksIDIxMiwgNzQsIDMzLCAyMjEsIDE0OCwgMjEyLCA3NCwgMzMsIAorICAgIDIxOSwgNTAsIDIxMiwgNzQsIDMzLCAyNDcsIDEyMSwgMjEyLCA3NCwgMzMsIDIzOCwgMTQxLCAyNTAsIDE3NiwgMjEyLCA3NCwgCisgICAgMzMsIDIwNywgODksIDIxMiwgNzQsIDMzLCAyNDEsIDE1NywgMjEyLCA3NCwgMzMsIDI1MiwgMjUxLCAyMTIsIDc0LCAzMywgCisgICAgMjE5LCA5LCAyMTIsIDc0LCAzMywgMjE4LCAyNDAsIDIxMiwgNzQsIDMzLCAyNDMsIDExOCwgMjEyLCA3NCwgMzMsIDIzMiwgCisgICAgMTA3LCAyMTIsIDc0LCAzMywgMjQ3LCAxMTYsIDIxMiwgNzQsIDMzLCAyNDMsIDMzLCAyMTIsIDc0LCAzMywgMjQzLCAyMTEsIAorICAgIDIxMiwgNzQsIDMzLCAyNDgsIDk4LCAyMTIsIDc0LCAzMywgMjQ2LCAxLCAyMTIsIDc0LCAzMywgMjQsIDIxOCwgMjM5LCAKKyAgICAyMTIsIDc0LCAzMywgMjIyLCA0MywgMjEyLCA3NCwgMzMsIDIzMCwgMzIsIDIxMiwgNzQsIDMzLCAyNDcsIDE5MCwgMjEyLCAKKyAgICA3NCwgMzMsIDIzMSwgMTA1LCAyMTIsIDc0LCAzMywgMjQwLCAxOTQsIDIxMiwgNzQsIDMzLCAyMTMsIDIzNCwgMjEyLCA3NCwgCisgICAgMzMsIDIyMCwgNjEsIDIxMiwgNzQsIDMzLCAyNDEsIDgxLCAyMTIsIDc0LCAzMywgMjE4LCAyNDEsIDIxMiwgNzQsIDMzLCAKKyAgICAyMzAsIDcxLCAyMjIsIDEyMywgMjI2LCAxNzcsIDIxMiwgNzQsIDMzLCAyMTgsIDIzNywgMjEyLCA3NCwgMzMsIDI0MCwgMTMsIAorICAgIDIxMSwgMTMwLCAyMjcsIDEwMiwgMjEyLCA3NCwgMzMsIDI0MywgMzUsIDIxMiwgNzQsIDMzLCAyMTMsIDI0NiwgMjEyLCA3NCwgCisgICAgMzMsIDIzOSwgMjI4LCAyMTIsIDc0LCAzMywgMjQzLCAyNiwgMjEyLCA3NCwgMzMsIDIyMSwgMTkwLCAyMTIsIDc0LCAzMywgCisgICAgMjE4LCAxMzksIDIxMiwgNzQsIDMzLCAyNDEsIDE4MCwgMjEyLCA3NCwgMzMsIDIwOSwgNDgsIDIyMiwgMTIzLCAyMDcsIDczLCAKKyAgICAyMTIsIDc0LCAzMywgMjQ3LCAxMjYsIDIxMiwgNzQsIDMzLCAyMjcsIDExNywgMjEyLCA3NCwgMzMsIDI0MiwgMTk4LCAyMTIsIAorICAgIDc0LCAzMywgMjA5LCAyMTUsIDIxMiwgNzQsIDMzLCAyNDUsIDExOSwgMjEyLCA3NCwgMzMsIDI0NywgMTkyLCAyMjYsIDEyMywgCisgICAgMjEyLCA3NCwgMzMsIDIzOSwgMjA1LCAyMTIsIDc0LCAzMywgMjQwLCAxOTUsIDIzMywgNjgsIDIxMiwgNzQsIDMzLCAyMjcsIAorICAgIDE3MiwgMjEyLCA3NCwgMzMsIDI1MywgMTYsIDIxMiwgNzQsIDMzLCAyNDMsIDQ4LCAyMTIsIDc0LCAzMywgMjQ0LCAxMiwgCisgICAgMjEyLCA3NCwgMzMsIDIwNywgNzEsIDIxMiwgNzQsIDMzLCAyMTUsIDM2LCAyMTIsIDc0LCAzMywgMjMzLCAzMywgMjEyLCAKKyAgICA3NCwgMzMsIDI0NSwgMjE1LCAyMTIsIDc0LCAzMywgMjQ2LCA4MiwgMjEyLCA3NCwgMzMsIDI0NSwgMTE1LCAyMTIsIDc0LCAKKyAgICAzMywgMjQyLCAxNjYsIDIxMiwgNzQsIDMzLCAyMTYsIDE2LCAyMTIsIDc0LCAzMywgMjEzLCAyNTAsIDIxMiwgNzQsIDMzLCAKKyAgICAyMzksIDkzLCAyMTIsIDc0LCAzMywgMjQ3LCAxNDgsIDIxMiwgNzQsIDMzLCAyNDcsIDE4NywgMjEyLCA3NCwgMzMsIDI0MiwgCisgICAgNTMsIDIxMiwgNzQsIDMzLCAyNTIsIDIxNiwgMjEyLCA3NCwgMzMsIDI0NywgMTQ3LCAyMTIsIDc0LCAzMywgMjIyLCAxNjYsIAorICAgIDIxMiwgNDIsIDIwOSwgMjUsIDIxMiwgNzQsIDMzLCAyNDUsIDEzOSwgMjEyLCA3NCwgMzMsIDIzMCwgMTI5LCAyMTIsIDc0LCAKKyAgICAzMywgMjQxLCAxMjgsIDI0NywgNzksIDIxOCwgMTE1LCAyMDksIDIxNywgMTgsIDEwMiwgMjQ3LCA3OSwgMjE4LCAxMTUsIAorICAgIDIwOSwgMjE3LCAxOCwgMTA1LCAyNDcsIDc5LCAyMTgsIDExNSwgMjA5LCAyMTcsIDE4LCAxNDIsIDI0NywgNzksIDIxOCwgCisgICAgMTE1LCAyMDksIDIxNywgMTgsIDEzOSwgMjQ3LCA3OSwgMjE4LCAxMTUsIDIwOSwgMjE3LCAxOCwgMTY4LCAyNDcsIDc5LCAKKyAgICAyMTgsIDExNSwgMjA5LCAyMTcsIDE4LCAxODQsIDI0NywgNzksIDIxOCwgMTE1LCAyMDksIDIxNywgMTgsIDE5NSwgMjQ3LCAKKyAgICA3OSwgMjE4LCAxMTUsIDIwOSwgMjE3LCAxOCwgMTkzLCAyNDcsIDc5LCAyMTgsIDExNSwgMjA5LCAyMTcsIDE4LCAyMDAsIAorICAgIDI0NywgNzksIDIxOCwgMTE1LCAyMTIsIDk0LCAxOCwgMTAyLCAyNDcsIDc5LCAyMTgsIDExNSwgMjEyLCA5NCwgMTgsIDEwNSwgCisgICAgMjQ3LCA3OSwgMjE4LCAxMTUsIDIxMiwgOTQsIDE4LCAxNDIsIDI0NywgNzksIDIxOCwgMTE1LCAyMTIsIDk0LCAxOCwgMTM5LCAKKyAgICAyNDcsIDc5LCAyMTgsIDExNSwgMjEyLCA5NCwgMTgsIDE2OCwgMjQ3LCA3OSwgMjE4LCAxMTUsIDIxMiwgOTQsIDE4LCAxODQsIAorICAgIDI0NywgNzksIDIxOCwgMTE1LCAyMTIsIDk0LCAxOCwgMTk1LCAyNDcsIDc5LCAyMTgsIDExNSwgMjEyLCA5NCwgMTgsIDE5MywgCisgICAgMjQ3LCA3OSwgMjE4LCAxMTUsIDIxMiwgOTQsIDE4LCAyMDAsIDExLCAyNCwgNiwgNjIsIDExLCAyNCwgNiwgMjUxLCAxNTAsIAorICAgIDExLCAyNCwgNiwgMjQ5LCAzNCwgMTEsIDI0LCA2LCAyNDYsIDI0MCwgMTEsIDI0LCA2LCA3NSwgMTEsIDI0LCA2LCAyNDIsIAorICAgIDEzOSwgMTEsIDI0LCA2LCAyNDEsIDU1LCAxMSwgMjQsIDYsIDIzOSwgMTU1LCAxMSwgMjQsIDYsIDc0LCAxMSwgMjQsIDYsIAorICAgIDIzMiwgMjAzLCAxMSwgMjQsIDYsIDIzMiwgNzYsIDExLCAyNCwgNiwgMTQ5LCAxMSwgMjQsIDYsIDIyOSwgMjgsIDExLCAyNCwgCisgICAgNiwgMjI2LCAzMywgMTEsIDI0LCA2LCA3NiwgMTEsIDI0LCA2LCAyMjIsIDY3LCAxMSwgMjQsIDYsIDIyMCwgMjcsIDExLCAKKyAgICAyNCwgNiwgMTM3LCAxMSwgMjQsIDYsIDE4MiwgMTEsIDI0LCA2LCAyMTMsIDEwLCAxMSwgMjQsIDYsIDcxLCAxMSwgMjQsIDYsIAorICAgIDIwOSwgMTQ4LCAxMSwgMjQsIDYsIDIwNywgMTI5LCAxMSwgMjQsIDYsIDIwNiwgMTk1LCAxMSwgMjQsIDYsIDIwNiwgMTIzLCAKKyAgICAxMSwgMjQsIDYsIDIwNSwgMTU5LCAxMSwgMjQsIDUsIDYyLCAxMSwgMjQsIDUsIDI1MSwgMTUwLCAxMSwgMjQsIDUsIDI0OSwgCisgICAgMzQsIDExLCAyNCwgNSwgMjQ2LCAyNDAsIDExLCAyNCwgNSwgNzUsIDExLCAyNCwgNSwgMjQyLCAxMzksIDExLCAyNCwgNSwgCisgICAgMjQxLCA1NSwgMTEsIDI0LCA1LCAyMzksIDE1NSwgMTEsIDI0LCA1LCA3NCwgMTEsIDI0LCA1LCAyMzIsIDIwMywgMTEsIDI0LCAKKyAgICA1LCAyMzIsIDc2LCAxMSwgMjQsIDUsIDE0OSwgMTEsIDI0LCA1LCAyMjksIDI4LCAxMSwgMjQsIDUsIDIyNiwgMzMsIDExLCAKKyAgICAyNCwgNSwgNzYsIDExLCAyNCwgNSwgMjIyLCA2NywgMTEsIDI0LCA1LCAyMjAsIDI3LCAxMSwgMjQsIDUsIDEzNywgMTEsIAorICAgIDI0LCA1LCAxODIsIDExLCAyNCwgNSwgMjEzLCAxMCwgMTEsIDI0LCA1LCA3MSwgMTEsIDI0LCA1LCAyMDksIDE0OCwgMTEsIAorICAgIDI0LCA1LCAyMDcsIDEyOSwgMTEsIDI0LCA1LCAyMDYsIDE5NSwgMTEsIDI0LCA1LCAyMDYsIDEyMywgMTEsIDI0LCA1LCAKKyAgICAyMDUsIDE1OSwgMTEsIDM1LCA2LCA2MiwgMTEsIDM1LCA2LCAyNTEsIDE1MCwgMTEsIDM1LCA2LCAyNDksIDM0LCAxMSwgMzUsIAorICAgIDYsIDI0NiwgMjQwLCAxMSwgMzUsIDYsIDc1LCAxMSwgMzUsIDYsIDI0MiwgMTM5LCAxMSwgMzUsIDYsIDI0MSwgNTUsIDExLCAKKyAgICAzNSwgNiwgMjM5LCAxNTUsIDExLCAzNSwgNiwgNzQsIDExLCAzNSwgNiwgMjMyLCAyMDMsIDExLCAzNSwgNiwgMjMyLCA3NiwgCisgICAgMTEsIDM1LCA2LCAxNDksIDExLCAzNSwgNiwgMjI5LCAyOCwgMTEsIDM1LCA2LCAyMjYsIDMzLCAxMSwgMzUsIDYsIDc2LCAKKyAgICAxMSwgMzUsIDYsIDIyMiwgNjcsIDExLCAzNSwgNiwgMjIwLCAyNywgMTEsIDM1LCA2LCAxMzcsIDExLCAzNSwgNiwgMTgyLCAKKyAgICAxMSwgMzUsIDYsIDIxMywgMTAsIDExLCAzNSwgNiwgNzEsIDExLCAzNSwgNiwgMjA5LCAxNDgsIDExLCAzNSwgNiwgMjA3LCAKKyAgICAxMjksIDExLCAzNSwgNiwgMjA2LCAxOTUsIDExLCAzNSwgNiwgMjA2LCAxMjMsIDExLCAzNSwgNiwgMjA1LCAxNTksIDExLCAKKyAgICAzNSwgNSwgNjIsIDExLCAzNSwgNSwgMjUxLCAxNTAsIDExLCAzNSwgNSwgMjQ5LCAzNCwgMTEsIDM1LCA1LCAyNDYsIDI0MCwgCisgICAgMTEsIDM1LCA1LCA3NSwgMTEsIDM1LCA1LCAyNDIsIDEzOSwgMTEsIDM1LCA1LCAyNDEsIDU1LCAxMSwgMzUsIDUsIDc0LCAKKyAgICAxMSwgMzUsIDUsIDIzMiwgMjAzLCAxMSwgMzUsIDUsIDIzMiwgNzYsIDExLCAzNSwgNSwgMTQ5LCAxMSwgMzUsIDUsIDIyOSwgCisgICAgMjgsIDExLCAzNSwgNSwgMjI2LCAzMywgMTEsIDM1LCA1LCA3NiwgMTEsIDM1LCA1LCAyMjIsIDY3LCAxMSwgMzUsIDUsIAorICAgIDIyMCwgMjcsIDExLCAzNSwgNSwgMTM3LCAxMSwgMzUsIDUsIDE4MiwgMTEsIDM1LCA1LCAyMTMsIDEwLCAxMSwgMzUsIDUsIAorICAgIDcxLCAxMSwgMzUsIDUsIDIwOSwgMTQ4LCAxMSwgMzUsIDUsIDIwNywgMTI5LCAxMSwgMzUsIDUsIDIwNiwgMTk1LCAxMSwgCisgICAgMzUsIDUsIDIwNiwgMTIzLCAxMSwgMzUsIDUsIDIwNSwgMTU5LCAxMSwgMjQsIDM1LCA2LCA2MiwgMTEsIDI0LCAzNSwgNiwgCisgICAgMjUxLCAxNTAsIDExLCAyNCwgMzUsIDYsIDI0OSwgMzQsIDExLCAyNCwgMzUsIDYsIDI0NiwgMjQwLCAxMSwgMjQsIDM1LCA2LCAKKyAgICA3NSwgMTEsIDI0LCAzNSwgNiwgMjQyLCAxMzksIDExLCAyNCwgMzUsIDYsIDI0MSwgNTUsIDExLCAyNCwgMzUsIDYsIDIzOSwgCisgICAgMTU1LCAxMSwgMjQsIDM1LCA2LCA3NCwgMTEsIDI0LCAzNSwgNiwgMjMyLCAyMDMsIDExLCAyNCwgMzUsIDYsIDIzMiwgNzYsIAorICAgIDExLCAyNCwgMzUsIDYsIDE0OSwgMTEsIDI0LCAzNSwgNiwgMjI5LCAyOCwgMTEsIDI0LCAzNSwgNiwgMjI2LCAzMywgMTEsIAorICAgIDI0LCAzNSwgNiwgNzYsIDExLCAyNCwgMzUsIDYsIDIyMiwgNjcsIDExLCAyNCwgMzUsIDYsIDIyMCwgMjcsIDExLCAyNCwgCisgICAgMzUsIDYsIDEzNywgMTEsIDI0LCAzNSwgNiwgMTgyLCAxMSwgMjQsIDM1LCA2LCAyMTMsIDEwLCAxMSwgMjQsIDM1LCA2LCAKKyAgICA3MSwgMTEsIDI0LCAzNSwgNiwgMjA5LCAxNDgsIDExLCAyNCwgMzUsIDYsIDIwNywgMTI5LCAxMSwgMjQsIDM1LCA2LCAyMDYsIAorICAgIDE5NSwgMTEsIDI0LCAzNSwgNiwgMjA2LCAxMjMsIDExLCAyNCwgMzUsIDYsIDIwNSwgMTU5LCAxMSwgMjQsIDM1LCA1LCA2MiwgCisgICAgMTEsIDI0LCAzNSwgNSwgMjUxLCAxNTAsIDExLCAyNCwgMzUsIDUsIDI0OSwgMzQsIDExLCAyNCwgMzUsIDUsIDI0NiwgMjQwLCAKKyAgICAxMSwgMjQsIDM1LCA1LCA3NSwgMTEsIDI0LCAzNSwgNSwgMjQyLCAxMzksIDExLCAyNCwgMzUsIDUsIDI0MSwgNTUsIDExLCAKKyAgICAyNCwgMzUsIDUsIDIzOSwgMTU1LCAxMSwgMjQsIDM1LCA1LCA3NCwgMTEsIDI0LCAzNSwgNSwgMjMyLCAyMDMsIDExLCAyNCwgCisgICAgMzUsIDUsIDIzMiwgNzYsIDExLCAyNCwgMzUsIDUsIDE0OSwgMTEsIDI0LCAzNSwgNSwgMjI5LCAyOCwgMTEsIDI0LCAzNSwgCisgICAgNSwgMjI2LCAzMywgMTEsIDI0LCAzNSwgNSwgNzYsIDExLCAyNCwgMzUsIDUsIDIyMiwgNjcsIDExLCAyNCwgMzUsIDUsIAorICAgIDIyMCwgMjcsIDExLCAyNCwgMzUsIDUsIDEzNywgMTEsIDI0LCAzNSwgNSwgMTgyLCAxMSwgMjQsIDM1LCA1LCAyMTMsIDEwLCAKKyAgICAxMSwgMjQsIDM1LCA1LCA3MSwgMTEsIDI0LCAzNSwgNSwgMjA5LCAxNDgsIDExLCAyNCwgMzUsIDUsIDIwNywgMTI5LCAxMSwgCisgICAgMjQsIDM1LCA1LCAyMDYsIDE5NSwgMTEsIDI0LCAzNSwgNSwgMjA2LCAxMjMsIDExLCAyNCwgMzUsIDUsIDIwNSwgMTU5LCAKKyAgICAxMSwgMTIxLCA2LCA2MiwgMTEsIDEyMSwgNiwgMjQ5LCAzNCwgMTEsIDEyMSwgNiwgMjQ2LCAyNDAsIDExLCAxMjEsIDYsIAorICAgIDI0MSwgNTUsIDExLCAxMjEsIDYsIDIzMiwgMjAzLCAxMSwgMTIxLCA2LCAyMzIsIDc2LCAxMSwgMTIxLCA2LCAyMjYsIDMzLCAKKyAgICAxMSwgMTIxLCA2LCA3NiwgMTEsIDEyMSwgNiwgMjIyLCA2NywgMTEsIDEyMSwgNiwgMjIwLCAyNywgMTEsIDEyMSwgNiwgCisgICAgMTgyLCAxMSwgMTIxLCA2LCAyMTMsIDEwLCAxMSwgMTIxLCA2LCA3MSwgMTEsIDEyMSwgNiwgMjA5LCAxNDgsIDExLCAxMjEsIAorICAgIDYsIDIwNywgMTI5LCAxMSwgMTIxLCA2LCAyMDYsIDE5NSwgMTEsIDEyMSwgNiwgMjA2LCAxMjMsIDExLCAxMjEsIDYsIDIwNSwgCisgICAgMTU5LCAxMSwgMTIxLCA1LCA2MiwgMTEsIDEyMSwgNSwgMjUxLCAxNTAsIDExLCAxMjEsIDUsIDI0OSwgMzQsIDExLCAxMjEsIAorICAgIDUsIDI0NiwgMjQwLCAxMSwgMTIxLCA1LCAyNDIsIDEzOSwgMTEsIDEyMSwgNSwgMjM5LCAxNTUsIDExLCAxMjEsIDUsIDc0LCAKKyAgICAxMSwgMTIxLCA1LCAyMzIsIDIwMywgMTEsIDEyMSwgNSwgMjMyLCA3NiwgMTEsIDEyMSwgNSwgMTQ5LCAxMSwgMTIxLCA1LCAKKyAgICAyMjksIDI4LCAxMSwgMTIxLCA1LCAyMjYsIDMzLCAxMSwgMTIxLCA1LCAyMjIsIDY3LCAxMSwgMTIxLCA1LCAyMjAsIDI3LCAKKyAgICAxMSwgMTIxLCA1LCAxMzcsIDExLCAxMjEsIDUsIDE4MiwgMTEsIDEyMSwgNSwgMjEzLCAxMCwgMTEsIDEyMSwgNSwgNzEsIAorICAgIDExLCAxMjEsIDUsIDIwOSwgMTQ4LCAxMSwgMTIxLCA1LCAyMDcsIDEyOSwgMTEsIDEyMSwgNSwgMjA2LCAxOTUsIDExLCAKKyAgICAxMjEsIDUsIDIwNiwgMTIzLCAxMSwgMTIxLCA1LCAyMDUsIDE1OSwgMTEsIDI0LCAxMjEsIDYsIDYyLCAxMSwgMjQsIDEyMSwgCisgICAgNiwgMjUxLCAxNTAsIDExLCAyNCwgMTIxLCA2LCAyNDksIDM0LCAxMSwgMjQsIDEyMSwgNiwgMjQ2LCAyNDAsIDExLCAyNCwgCisgICAgMTIxLCA2LCA3NSwgMTEsIDI0LCAxMjEsIDYsIDI0MiwgMTM5LCAxMSwgMjQsIDEyMSwgNiwgMjQxLCA1NSwgMTEsIDI0LCAKKyAgICAxMjEsIDYsIDIzOSwgMTU1LCAxMSwgMjQsIDEyMSwgNiwgNzQsIDExLCAyNCwgMTIxLCA2LCAyMzIsIDIwMywgMTEsIDI0LCAKKyAgICAxMjEsIDYsIDIzMiwgNzYsIDExLCAyNCwgMTIxLCA2LCAxNDksIDExLCAyNCwgMTIxLCA2LCAyMjksIDI4LCAxMSwgMjQsIAorICAgIDEyMSwgNiwgMjI2LCAzMywgMTEsIDI0LCAxMjEsIDYsIDc2LCAxMSwgMjQsIDEyMSwgNiwgMjIyLCA2NywgMTEsIDI0LCAKKyAgICAxMjEsIDYsIDIyMCwgMjcsIDExLCAyNCwgMTIxLCA2LCAxMzcsIDExLCAyNCwgMTIxLCA2LCAxODIsIDExLCAyNCwgMTIxLCAKKyAgICA2LCAyMTMsIDEwLCAxMSwgMjQsIDEyMSwgNiwgNzEsIDExLCAyNCwgMTIxLCA2LCAyMDksIDE0OCwgMTEsIDI0LCAxMjEsIDYsIAorICAgIDIwNywgMTI5LCAxMSwgMjQsIDEyMSwgNiwgMjA2LCAxOTUsIDExLCAyNCwgMTIxLCA2LCAyMDYsIDEyMywgMTEsIDI0LCAKKyAgICAxMjEsIDYsIDIwNSwgMTU5LCAxMSwgMjQsIDEyMSwgNSwgNjIsIDExLCAyNCwgMTIxLCA1LCAyNTEsIDE1MCwgMTEsIDI0LCAKKyAgICAxMjEsIDUsIDI0OSwgMzQsIDExLCAyNCwgMTIxLCA1LCAyNDYsIDI0MCwgMTEsIDI0LCAxMjEsIDUsIDc1LCAxMSwgMjQsIAorICAgIDEyMSwgNSwgMjQyLCAxMzksIDExLCAyNCwgMTIxLCA1LCAyNDEsIDU1LCAxMSwgMjQsIDEyMSwgNSwgMjM5LCAxNTUsIDExLCAKKyAgICAyNCwgMTIxLCA1LCA3NCwgMTEsIDI0LCAxMjEsIDUsIDIzMiwgMjAzLCAxMSwgMjQsIDEyMSwgNSwgMjMyLCA3NiwgMTEsIAorICAgIDI0LCAxMjEsIDUsIDE0OSwgMTEsIDI0LCAxMjEsIDUsIDIyOSwgMjgsIDExLCAyNCwgMTIxLCA1LCAyMjYsIDMzLCAxMSwgCisgICAgMjQsIDEyMSwgNSwgNzYsIDExLCAyNCwgMTIxLCA1LCAyMjIsIDY3LCAxMSwgMjQsIDEyMSwgNSwgMjIwLCAyNywgMTEsIDI0LCAKKyAgICAxMjEsIDUsIDEzNywgMTEsIDI0LCAxMjEsIDUsIDE4MiwgMTEsIDI0LCAxMjEsIDUsIDIxMywgMTAsIDExLCAyNCwgMTIxLCAKKyAgICA1LCA3MSwgMTEsIDI0LCAxMjEsIDUsIDIwOSwgMTQ4LCAxMSwgMjQsIDEyMSwgNSwgMjA3LCAxMjksIDExLCAyNCwgMTIxLCAKKyAgICA1LCAyMDYsIDE5NSwgMTEsIDI0LCAxMjEsIDUsIDIwNiwgMTIzLCAxMSwgMjQsIDEyMSwgNSwgMjA1LCAxNTksIDExLCAxNTQsIAorICAgIDYsIDYyLCAxMSwgMTU0LCA2LCAyNTEsIDE1MCwgMTEsIDE1NCwgNiwgMjQ2LCAyNDAsIDExLCAxNTQsIDYsIDc1LCAxMSwgCisgICAgMTU0LCA2LCAyNDIsIDEzOSwgMTEsIDE1NCwgNiwgMjQxLCA1NSwgMTEsIDE1NCwgNiwgMjMyLCAyMDMsIDExLCAxNTQsIDYsIAorICAgIDIzMiwgNzYsIDExLCAxNTQsIDYsIDE0OSwgMTEsIDE1NCwgNiwgMjI5LCAyOCwgMTEsIDE1NCwgNiwgMjI2LCAzMywgMTEsIAorICAgIDE1NCwgNiwgNzYsIDExLCAxNTQsIDYsIDIyMiwgNjcsIDExLCAxNTQsIDYsIDIyMCwgMjcsIDExLCAxNTQsIDYsIDE4MiwgCisgICAgMTEsIDE1NCwgNiwgMjEzLCAxMCwgMTEsIDE1NCwgNiwgNzEsIDExLCAxNTQsIDYsIDIwOSwgMTQ4LCAxMSwgMTU0LCA2LCAKKyAgICAyMDcsIDEyOSwgMTEsIDE1NCwgNiwgMjA2LCAxOTUsIDExLCAxNTQsIDYsIDIwNiwgMTIzLCAxMSwgMTU0LCA1LCA2MiwgMTEsIAorICAgIDE1NCwgNSwgMjUxLCAxNTAsIDExLCAxNTQsIDUsIDI0OSwgMzQsIDExLCAxNTQsIDUsIDI0NiwgMjQwLCAxMSwgMTU0LCA1LCAKKyAgICA3NSwgMTEsIDE1NCwgNSwgMjQyLCAxMzksIDExLCAxNTQsIDUsIDI0MSwgNTUsIDExLCAxNTQsIDUsIDIzOSwgMTU1LCAxMSwgCisgICAgMTU0LCA1LCA3NCwgMTEsIDE1NCwgNSwgMjMyLCAyMDMsIDExLCAxNTQsIDUsIDIzMiwgNzYsIDExLCAxNTQsIDUsIDE0OSwgCisgICAgMTEsIDE1NCwgNSwgMjI5LCAyOCwgMTEsIDE1NCwgNSwgMjI2LCAzMywgMTEsIDE1NCwgNSwgNzYsIDExLCAxNTQsIDUsIAorICAgIDIyMiwgNjcsIDExLCAxNTQsIDUsIDIyMCwgMjcsIDExLCAxNTQsIDUsIDEzNywgMTEsIDE1NCwgNSwgMTgyLCAxMSwgMTU0LCAKKyAgICA1LCAyMTMsIDEwLCAxMSwgMTU0LCA1LCA3MSwgMTEsIDE1NCwgNSwgMjA5LCAxNDgsIDExLCAxNTQsIDUsIDIwNywgMTI5LCAKKyAgICAxMSwgMTU0LCA1LCAyMDYsIDE5NSwgMTEsIDE1NCwgNSwgMjA2LCAxMjMsIDExLCAxNTQsIDUsIDIwNSwgMTU5LCAxMSwgCisgICAgMTU5LCA2LCA2MiwgMTEsIDE1OSwgNiwgMjUxLCAxNTAsIDExLCAxNTksIDYsIDI0NiwgMjQwLCAxMSwgMTU5LCA2LCA3NSwgCisgICAgMTEsIDE1OSwgNiwgMjQyLCAxMzksIDExLCAxNTksIDYsIDI0MSwgNTUsIDExLCAxNTksIDYsIDc0LCAxMSwgMTU5LCA2LCAKKyAgICAyMzIsIDIwMywgMTEsIDE1OSwgNiwgMjMyLCA3NiwgMTEsIDE1OSwgNiwgMTQ5LCAxMSwgMTU5LCA2LCAyMjksIDI4LCAxMSwgCisgICAgMTU5LCA2LCA3NiwgMTEsIDE1OSwgNiwgMTgyLCAxMSwgMTU5LCA2LCAyMTMsIDEwLCAxMSwgMTU5LCA2LCA3MSwgMTEsIAorICAgIDE1OSwgNiwgMjA5LCAxNDgsIDExLCAxNTksIDYsIDIwNywgMTI5LCAxMSwgMTU5LCA2LCAyMDYsIDE5NSwgMTEsIDE1OSwgNiwgCisgICAgMjA2LCAxMjMsIDExLCAxNTksIDUsIDYyLCAxMSwgMTU5LCA1LCAyNTEsIDE1MCwgMTEsIDE1OSwgNSwgMjQ5LCAzNCwgMTEsIAorICAgIDE1OSwgNSwgMjQ2LCAyNDAsIDExLCAxNTksIDUsIDc1LCAxMSwgMTU5LCA1LCAyNDIsIDEzOSwgMTEsIDE1OSwgNSwgMjQxLCAKKyAgICA1NSwgMTEsIDE1OSwgNSwgMjM5LCAxNTUsIDExLCAxNTksIDUsIDc0LCAxMSwgMTU5LCA1LCAyMzIsIDIwMywgMTEsIDE1OSwgCisgICAgNSwgMjMyLCA3NiwgMTEsIDE1OSwgNSwgMTQ5LCAxMSwgMTU5LCA1LCAyMjksIDI4LCAxMSwgMTU5LCA1LCAyMjYsIDMzLCAKKyAgICAxMSwgMTU5LCA1LCA3NiwgMTEsIDE1OSwgNSwgMjIyLCA2NywgMTEsIDE1OSwgNSwgMjIwLCAyNywgMTEsIDE1OSwgNSwgCisgICAgMTM3LCAxMSwgMTU5LCA1LCAxODIsIDExLCAxNTksIDUsIDIxMywgMTAsIDExLCAxNTksIDUsIDcxLCAxMSwgMTU5LCA1LCAKKyAgICAyMDksIDE0OCwgMTEsIDE1OSwgNSwgMjA3LCAxMjksIDExLCAxNTksIDUsIDIwNiwgMTk1LCAxMSwgMTU5LCA1LCAyMDYsIAorICAgIDEyMywgMTEsIDE1OSwgNSwgMjA1LCAxNTksIDExLCAyNCwgMTU0LCA2LCA2MiwgMTEsIDI0LCAxNTQsIDYsIDI1MSwgMTUwLCAKKyAgICAxMSwgMjQsIDE1NCwgNiwgMjQ5LCAzNCwgMTEsIDI0LCAxNTQsIDYsIDI0NiwgMjQwLCAxMSwgMjQsIDE1NCwgNiwgNzUsIAorICAgIDExLCAyNCwgMTU0LCA2LCAyNDIsIDEzOSwgMTEsIDI0LCAxNTQsIDYsIDI0MSwgNTUsIDExLCAyNCwgMTU0LCA2LCAyMzksIAorICAgIDE1NSwgMTEsIDI0LCAxNTQsIDYsIDc0LCAxMSwgMjQsIDE1NCwgNiwgMjMyLCAyMDMsIDExLCAyNCwgMTU0LCA2LCAyMzIsIAorICAgIDc2LCAxMSwgMjQsIDE1NCwgNiwgMTQ5LCAxMSwgMjQsIDE1NCwgNiwgMjI5LCAyOCwgMTEsIDI0LCAxNTQsIDYsIDIyNiwgCisgICAgMzMsIDExLCAyNCwgMTU0LCA2LCA3NiwgMTEsIDI0LCAxNTQsIDYsIDIyMiwgNjcsIDExLCAyNCwgMTU0LCA2LCAyMjAsIDI3LCAKKyAgICAxMSwgMjQsIDE1NCwgNiwgMTM3LCAxMSwgMjQsIDE1NCwgNiwgMTgyLCAxMSwgMjQsIDE1NCwgNiwgMjEzLCAxMCwgMTEsIAorICAgIDI0LCAxNTQsIDYsIDcxLCAxMSwgMjQsIDE1NCwgNiwgMjA5LCAxNDgsIDExLCAyNCwgMTU0LCA2LCAyMDcsIDEyOSwgMTEsIAorICAgIDI0LCAxNTQsIDYsIDIwNiwgMTk1LCAxMSwgMjQsIDE1NCwgNiwgMjA2LCAxMjMsIDExLCAyNCwgMTU0LCA2LCAyMDUsIDE1OSwgCisgICAgMTEsIDI0LCAxNTQsIDUsIDYyLCAxMSwgMjQsIDE1NCwgNSwgMjUxLCAxNTAsIDExLCAyNCwgMTU0LCA1LCAyNDksIDM0LCAKKyAgICAxMSwgMjQsIDE1NCwgNSwgMjQ2LCAyNDAsIDExLCAyNCwgMTU0LCA1LCA3NSwgMTEsIDI0LCAxNTQsIDUsIDI0MiwgMTM5LCAKKyAgICAxMSwgMjQsIDE1NCwgNSwgMjQxLCA1NSwgMTEsIDI0LCAxNTQsIDUsIDIzOSwgMTU1LCAxMSwgMjQsIDE1NCwgNSwgNzQsIAorICAgIDExLCAyNCwgMTU0LCA1LCAyMzIsIDIwMywgMTEsIDI0LCAxNTQsIDUsIDIzMiwgNzYsIDExLCAyNCwgMTU0LCA1LCAxNDksIAorICAgIDExLCAyNCwgMTU0LCA1LCAyMjksIDI4LCAxMSwgMjQsIDE1NCwgNSwgMjI2LCAzMywgMTEsIDI0LCAxNTQsIDUsIDc2LCAxMSwgCisgICAgMjQsIDE1NCwgNSwgMjIyLCA2NywgMTEsIDI0LCAxNTQsIDUsIDIyMCwgMjcsIDExLCAyNCwgMTU0LCA1LCAxMzcsIDExLCAKKyAgICAyNCwgMTU0LCA1LCAxODIsIDExLCAyNCwgMTU0LCA1LCAyMTMsIDEwLCAxMSwgMjQsIDE1NCwgNSwgNzEsIDExLCAyNCwgCisgICAgMTU0LCA1LCAyMDksIDE0OCwgMTEsIDI0LCAxNTQsIDUsIDIwNywgMTI5LCAxMSwgMjQsIDE1NCwgNSwgMjA2LCAxOTUsIDExLCAKKyAgICAyNCwgMTU0LCA1LCAyMDYsIDEyMywgMTEsIDI0LCAxNTQsIDUsIDIwNSwgMTU5LCAxMSwgMzgsIDYsIDYyLCAxMSwgMzgsIDYsIAorICAgIDI1MSwgMTUwLCAxMSwgMzgsIDYsIDI0OSwgMzQsIDExLCAzOCwgNiwgMjQ2LCAyNDAsIDExLCAzOCwgNiwgNzUsIDExLCAzOCwgCisgICAgNiwgMjQyLCAxMzksIDExLCAzOCwgNiwgMjQxLCA1NSwgMTEsIDM4LCA2LCAyMzksIDE1NSwgMTEsIDM4LCA2LCA3NCwgMTEsIAorICAgIDM4LCA2LCAyMzIsIDIwMywgMTEsIDM4LCA2LCAyMzIsIDc2LCAxMSwgMzgsIDYsIDE0OSwgMTEsIDM4LCA2LCAyMjksIDI4LCAKKyAgICAxMSwgMzgsIDYsIDIyNiwgMzMsIDExLCAzOCwgNiwgNzYsIDExLCAzOCwgNiwgMjIyLCA2NywgMTEsIDM4LCA2LCAyMjAsIAorICAgIDI3LCAxMSwgMzgsIDYsIDEzNywgMTEsIDM4LCA2LCAxODIsIDExLCAzOCwgNiwgMjEzLCAxMCwgMTEsIDM4LCA2LCA3MSwgCisgICAgMTEsIDM4LCA2LCAyMDksIDE0OCwgMTEsIDM4LCA2LCAyMDcsIDEyOSwgMTEsIDM4LCA2LCAyMDYsIDE5NSwgMTEsIDM4LCA2LCAKKyAgICAyMDYsIDEyMywgMTEsIDM4LCA2LCAyMDUsIDE1OSwgMTEsIDM4LCA1LCA2MiwgMTEsIDM4LCA1LCAyNTEsIDE1MCwgMTEsIAorICAgIDM4LCA1LCAyNDksIDM0LCAxMSwgMzgsIDUsIDI0NiwgMjQwLCAxMSwgMzgsIDUsIDc1LCAxMSwgMzgsIDUsIDI0MiwgMTM5LCAKKyAgICAxMSwgMzgsIDUsIDI0MSwgNTUsIDExLCAzOCwgNSwgMjM5LCAxNTUsIDExLCAzOCwgNSwgNzQsIDExLCAzOCwgNSwgMjMyLCAKKyAgICAyMDMsIDExLCAzOCwgNSwgMjMyLCA3NiwgMTEsIDM4LCA1LCAxNDksIDExLCAzOCwgNSwgMjI5LCAyOCwgMTEsIDM4LCA1LCAKKyAgICAyMjYsIDMzLCAxMSwgMzgsIDUsIDc2LCAxMSwgMzgsIDUsIDIyMiwgNjcsIDExLCAzOCwgNSwgMjIwLCAyNywgMTEsIDM4LCAKKyAgICA1LCAxMzcsIDExLCAzOCwgNSwgMTgyLCAxMSwgMzgsIDUsIDIxMywgMTAsIDExLCAzOCwgNSwgNzEsIDExLCAzOCwgNSwgCisgICAgMjA5LCAxNDgsIDExLCAzOCwgNSwgMjA3LCAxMjksIDExLCAzOCwgNSwgMjA2LCAxOTUsIDExLCAzOCwgNSwgMjA2LCAxMjMsIAorICAgIDExLCAzOCwgNSwgMjA1LCAxNTksIDExLCAzOCwgMjQsIDYsIDYyLCAxMSwgMzgsIDI0LCA2LCAyNTEsIDE1MCwgMTEsIDM4LCAKKyAgICAyNCwgNiwgMjQ5LCAzNCwgMTEsIDM4LCAyNCwgNiwgMjQ2LCAyNDAsIDExLCAzOCwgMjQsIDYsIDc1LCAxMSwgMzgsIDI0LCAKKyAgICA2LCAyNDIsIDEzOSwgMTEsIDM4LCAyNCwgNiwgMjQxLCA1NSwgMTEsIDM4LCAyNCwgNiwgMjM5LCAxNTUsIDExLCAzOCwgMjQsIAorICAgIDYsIDc0LCAxMSwgMzgsIDI0LCA2LCAyMzIsIDIwMywgMTEsIDM4LCAyNCwgNiwgMjMyLCA3NiwgMTEsIDM4LCAyNCwgNiwgCisgICAgMTQ5LCAxMSwgMzgsIDI0LCA2LCAyMjksIDI4LCAxMSwgMzgsIDI0LCA2LCAyMjYsIDMzLCAxMSwgMzgsIDI0LCA2LCA3NiwgCisgICAgMTEsIDM4LCAyNCwgNiwgMjIyLCA2NywgMTEsIDM4LCAyNCwgNiwgMjIwLCAyNywgMTEsIDM4LCAyNCwgNiwgMTM3LCAxMSwgCisgICAgMzgsIDI0LCA2LCAxODIsIDExLCAzOCwgMjQsIDYsIDIxMywgMTAsIDExLCAzOCwgMjQsIDYsIDcxLCAxMSwgMzgsIDI0LCA2LCAKKyAgICAyMDksIDE0OCwgMTEsIDM4LCAyNCwgNiwgMjA3LCAxMjksIDExLCAzOCwgMjQsIDYsIDIwNiwgMTk1LCAxMSwgMzgsIDI0LCAKKyAgICA2LCAyMDYsIDEyMywgMTEsIDM4LCAyNCwgNiwgMjA1LCAxNTksIDExLCAzOCwgMjQsIDUsIDYyLCAxMSwgMzgsIDI0LCA1LCAKKyAgICAyNTEsIDE1MCwgMTEsIDM4LCAyNCwgNSwgMjQ5LCAzNCwgMTEsIDM4LCAyNCwgNSwgMjQ2LCAyNDAsIDExLCAzOCwgMjQsIDUsIAorICAgIDc1LCAxMSwgMzgsIDI0LCA1LCAyNDIsIDEzOSwgMTEsIDM4LCAyNCwgNSwgMjQxLCA1NSwgMTEsIDM4LCAyNCwgNSwgMjM5LCAKKyAgICAxNTUsIDExLCAzOCwgMjQsIDUsIDc0LCAxMSwgMzgsIDI0LCA1LCAyMzIsIDIwMywgMTEsIDM4LCAyNCwgNSwgMjMyLCA3NiwgCisgICAgMTEsIDM4LCAyNCwgNSwgMTQ5LCAxMSwgMzgsIDI0LCA1LCAyMjksIDI4LCAxMSwgMzgsIDI0LCA1LCAyMjYsIDMzLCAxMSwgCisgICAgMzgsIDI0LCA1LCA3NiwgMTEsIDM4LCAyNCwgNSwgMjIyLCA2NywgMTEsIDM4LCAyNCwgNSwgMjIwLCAyNywgMTEsIDM4LCAKKyAgICAyNCwgNSwgMTM3LCAxMSwgMzgsIDI0LCA1LCAxODIsIDExLCAzOCwgMjQsIDUsIDIxMywgMTAsIDExLCAzOCwgMjQsIDUsIAorICAgIDcxLCAxMSwgMzgsIDI0LCA1LCAyMDksIDE0OCwgMTEsIDM4LCAyNCwgNSwgMjA3LCAxMjksIDExLCAzOCwgMjQsIDUsIDIwNiwgCisgICAgMTk1LCAxMSwgMzgsIDI0LCA1LCAyMDYsIDEyMywgMTEsIDM4LCAyNCwgNSwgMjA1LCAxNTksIDExLCAzOCwgMzUsIDYsIDYyLCAKKyAgICAxMSwgMzgsIDM1LCA2LCAyNTEsIDE1MCwgMTEsIDM4LCAzNSwgNiwgMjQ5LCAzNCwgMTEsIDM4LCAzNSwgNiwgMjQ2LCAyNDAsIAorICAgIDExLCAzOCwgMzUsIDYsIDc1LCAxMSwgMzgsIDM1LCA2LCAyNDIsIDEzOSwgMTEsIDM4LCAzNSwgNiwgMjQxLCA1NSwgMTEsIAorICAgIDM4LCAzNSwgNiwgMjM5LCAxNTUsIDExLCAzOCwgMzUsIDYsIDc0LCAxMSwgMzgsIDM1LCA2LCAyMzIsIDIwMywgMTEsIDM4LCAKKyAgICAzNSwgNiwgMjMyLCA3NiwgMTEsIDM4LCAzNSwgNiwgMTQ5LCAxMSwgMzgsIDM1LCA2LCAyMjksIDI4LCAxMSwgMzgsIDM1LCAKKyAgICA2LCAyMjYsIDMzLCAxMSwgMzgsIDM1LCA2LCA3NiwgMTEsIDM4LCAzNSwgNiwgMjIyLCA2NywgMTEsIDM4LCAzNSwgNiwgCisgICAgMjIwLCAyNywgMTEsIDM4LCAzNSwgNiwgMTM3LCAxMSwgMzgsIDM1LCA2LCAxODIsIDExLCAzOCwgMzUsIDYsIDIxMywgMTAsIAorICAgIDExLCAzOCwgMzUsIDYsIDcxLCAxMSwgMzgsIDM1LCA2LCAyMDksIDE0OCwgMTEsIDM4LCAzNSwgNiwgMjA3LCAxMjksIDExLCAKKyAgICAzOCwgMzUsIDYsIDIwNiwgMTk1LCAxMSwgMzgsIDM1LCA2LCAyMDYsIDEyMywgMTEsIDM4LCAzNSwgNiwgMjA1LCAxNTksIAorICAgIDExLCAzOCwgMzUsIDUsIDYyLCAxMSwgMzgsIDM1LCA1LCAyNTEsIDE1MCwgMTEsIDM4LCAzNSwgNSwgMjQ5LCAzNCwgMTEsIAorICAgIDM4LCAzNSwgNSwgMjQ2LCAyNDAsIDExLCAzOCwgMzUsIDUsIDc1LCAxMSwgMzgsIDM1LCA1LCAyNDIsIDEzOSwgMTEsIDM4LCAKKyAgICAzNSwgNSwgMjQxLCA1NSwgMTEsIDM4LCAzNSwgNSwgMjM5LCAxNTUsIDExLCAzOCwgMzUsIDUsIDc0LCAxMSwgMzgsIDM1LCAKKyAgICA1LCAyMzIsIDIwMywgMTEsIDM4LCAzNSwgNSwgMjMyLCA3NiwgMTEsIDM4LCAzNSwgNSwgMTQ5LCAxMSwgMzgsIDM1LCA1LCAKKyAgICAyMjksIDI4LCAxMSwgMzgsIDM1LCA1LCAyMjYsIDMzLCAxMSwgMzgsIDM1LCA1LCA3NiwgMTEsIDM4LCAzNSwgNSwgMjIyLCAKKyAgICA2NywgMTEsIDM4LCAzNSwgNSwgMjIwLCAyNywgMTEsIDM4LCAzNSwgNSwgMTM3LCAxMSwgMzgsIDM1LCA1LCAxODIsIDExLCAKKyAgICAzOCwgMzUsIDUsIDIxMywgMTAsIDExLCAzOCwgMzUsIDUsIDcxLCAxMSwgMzgsIDM1LCA1LCAyMDksIDE0OCwgMTEsIDM4LCAKKyAgICAzNSwgNSwgMjA3LCAxMjksIDExLCAzOCwgMzUsIDUsIDIwNiwgMTk1LCAxMSwgMzgsIDM1LCA1LCAyMDYsIDEyMywgMTEsIAorICAgIDM4LCAzNSwgNSwgMjA1LCAxNTksIDExLCAzOCwgMjQsIDM1LCA2LCA2MiwgMTEsIDM4LCAyNCwgMzUsIDYsIDI1MSwgMTUwLCAKKyAgICAxMSwgMzgsIDI0LCAzNSwgNiwgMjQ5LCAzNCwgMTEsIDM4LCAyNCwgMzUsIDYsIDI0NiwgMjQwLCAxMSwgMzgsIDI0LCAzNSwgCisgICAgNiwgNzUsIDExLCAzOCwgMjQsIDM1LCA2LCAyNDIsIDEzOSwgMTEsIDM4LCAyNCwgMzUsIDYsIDI0MSwgNTUsIDExLCAzOCwgCisgICAgMjQsIDM1LCA2LCAyMzksIDE1NSwgMTEsIDM4LCAyNCwgMzUsIDYsIDc0LCAxMSwgMzgsIDI0LCAzNSwgNiwgMjMyLCAyMDMsIAorICAgIDExLCAzOCwgMjQsIDM1LCA2LCAyMzIsIDc2LCAxMSwgMzgsIDI0LCAzNSwgNiwgMTQ5LCAxMSwgMzgsIDI0LCAzNSwgNiwgCisgICAgMjI5LCAyOCwgMTEsIDM4LCAyNCwgMzUsIDYsIDIyNiwgMzMsIDExLCAzOCwgMjQsIDM1LCA2LCA3NiwgMTEsIDM4LCAyNCwgCisgICAgMzUsIDYsIDIyMiwgNjcsIDExLCAzOCwgMjQsIDM1LCA2LCAyMjAsIDI3LCAxMSwgMzgsIDI0LCAzNSwgNiwgMTM3LCAxMSwgCisgICAgMzgsIDI0LCAzNSwgNiwgMTgyLCAxMSwgMzgsIDI0LCAzNSwgNiwgMjEzLCAxMCwgMTEsIDM4LCAyNCwgMzUsIDYsIDcxLCAKKyAgICAxMSwgMzgsIDI0LCAzNSwgNiwgMjA5LCAxNDgsIDExLCAzOCwgMjQsIDM1LCA2LCAyMDcsIDEyOSwgMTEsIDM4LCAyNCwgMzUsIAorICAgIDYsIDIwNiwgMTk1LCAxMSwgMzgsIDI0LCAzNSwgNiwgMjA2LCAxMjMsIDExLCAzOCwgMjQsIDM1LCA2LCAyMDUsIDE1OSwgCisgICAgMTEsIDM4LCAyNCwgMzUsIDUsIDYyLCAxMSwgMzgsIDI0LCAzNSwgNSwgMjUxLCAxNTAsIDExLCAzOCwgMjQsIDM1LCA1LCAKKyAgICAyNDksIDM0LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjQ2LCAyNDAsIDExLCAzOCwgMjQsIDM1LCA1LCA3NSwgMTEsIDM4LCAyNCwgCisgICAgMzUsIDUsIDI0MiwgMTM5LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjQxLCA1NSwgMTEsIDM4LCAyNCwgMzUsIDUsIDIzOSwgMTU1LCAKKyAgICAxMSwgMzgsIDI0LCAzNSwgNSwgNzQsIDExLCAzOCwgMjQsIDM1LCA1LCAyMzIsIDIwMywgMTEsIDM4LCAyNCwgMzUsIDUsIAorICAgIDIzMiwgNzYsIDExLCAzOCwgMjQsIDM1LCA1LCAxNDksIDExLCAzOCwgMjQsIDM1LCA1LCAyMjksIDI4LCAxMSwgMzgsIDI0LCAKKyAgICAzNSwgNSwgMjI2LCAzMywgMTEsIDM4LCAyNCwgMzUsIDUsIDc2LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjIyLCA2NywgMTEsIAorICAgIDM4LCAyNCwgMzUsIDUsIDIyMCwgMjcsIDExLCAzOCwgMjQsIDM1LCA1LCAxMzcsIDExLCAzOCwgMjQsIDM1LCA1LCAxODIsIAorICAgIDExLCAzOCwgMjQsIDM1LCA1LCAyMTMsIDEwLCAxMSwgMzgsIDI0LCAzNSwgNSwgNzEsIDExLCAzOCwgMjQsIDM1LCA1LCAKKyAgICAyMDksIDE0OCwgMTEsIDM4LCAyNCwgMzUsIDUsIDIwNywgMTI5LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjA2LCAxOTUsIDExLCAKKyAgICAzOCwgMjQsIDM1LCA1LCAyMDYsIDEyMywgMTEsIDM4LCAyNCwgMzUsIDUsIDIwNSwgMTU5LCAxMSwgMjI2LCAxNTYsIDYsIAorICAgIDYyLCAxMSwgMjI2LCAxNTYsIDYsIDI1MSwgMTUwLCAxMSwgMjI2LCAxNTYsIDYsIDI0OSwgMzQsIDExLCAyMjYsIDE1NiwgNiwgCisgICAgMjQ2LCAyNDAsIDExLCAyMjYsIDE1NiwgNiwgNzUsIDExLCAyMjYsIDE1NiwgNiwgMjQyLCAxMzksIDExLCAyMjYsIDE1NiwgCisgICAgNiwgMjQxLCA1NSwgMTEsIDIyNiwgMTU2LCA2LCAyMzksIDE1NSwgMTEsIDIyNiwgMTU2LCA2LCA3NCwgMTEsIDIyNiwgMTU2LCAKKyAgICA2LCAyMzIsIDIwMywgMTEsIDIyNiwgMTU2LCA2LCAyMzIsIDc2LCAxMSwgMjI2LCAxNTYsIDYsIDE0OSwgMTEsIDIyNiwgCisgICAgMTU2LCA2LCAyMjksIDI4LCAxMSwgMjI2LCAxNTYsIDYsIDIyNiwgMzMsIDExLCAyMjYsIDE1NiwgNiwgNzYsIDExLCAyMjYsIAorICAgIDE1NiwgNiwgMjIyLCA2NywgMTEsIDIyNiwgMTU2LCA2LCAyMjAsIDI3LCAxMSwgMjI2LCAxNTYsIDYsIDEzNywgMTEsIDIyNiwgCisgICAgMTU2LCA2LCAxODIsIDExLCAyMjYsIDE1NiwgNiwgMjEzLCAxMCwgMTEsIDIyNiwgMTU2LCA2LCA3MSwgMTEsIDIyNiwgMTU2LCAKKyAgICA2LCAyMDksIDE0OCwgMTEsIDIyNiwgMTU2LCA2LCAyMDcsIDEyOSwgMTEsIDIyNiwgMTU2LCA2LCAyMDYsIDE5NSwgMTEsIAorICAgIDIyNiwgMTU2LCA2LCAyMDYsIDEyMywgMTEsIDIyNiwgMTU2LCA2LCAyMDUsIDE1OSwgMTEsIDIyNiwgMTU2LCA1LCA2MiwgCisgICAgMTEsIDIyNiwgMTU2LCA1LCAyNTEsIDE1MCwgMTEsIDIyNiwgMTU2LCA1LCAyNDksIDM0LCAxMSwgMjI2LCAxNTYsIDUsIAorICAgIDI0NiwgMjQwLCAxMSwgMjI2LCAxNTYsIDUsIDc1LCAxMSwgMjI2LCAxNTYsIDUsIDI0MiwgMTM5LCAxMSwgMjI2LCAxNTYsIAorICAgIDUsIDI0MSwgNTUsIDExLCAyMjYsIDE1NiwgNSwgMjM5LCAxNTUsIDExLCAyMjYsIDE1NiwgNSwgNzQsIDExLCAyMjYsIDE1NiwgCisgICAgNSwgMjMyLCAyMDMsIDExLCAyMjYsIDE1NiwgNSwgMjMyLCA3NiwgMTEsIDIyNiwgMTU2LCA1LCAxNDksIDExLCAyMjYsIAorICAgIDE1NiwgNSwgMjI5LCAyOCwgMTEsIDIyNiwgMTU2LCA1LCAyMjYsIDMzLCAxMSwgMjI2LCAxNTYsIDUsIDc2LCAxMSwgMjI2LCAKKyAgICAxNTYsIDUsIDIyMiwgNjcsIDExLCAyMjYsIDE1NiwgNSwgMjIwLCAyNywgMTEsIDIyNiwgMTU2LCA1LCAxMzcsIDExLCAyMjYsIAorICAgIDE1NiwgNSwgMTgyLCAxMSwgMjI2LCAxNTYsIDUsIDIxMywgMTAsIDExLCAyMjYsIDE1NiwgNSwgNzEsIDExLCAyMjYsIDE1NiwgCisgICAgNSwgMjA5LCAxNDgsIDExLCAyMjYsIDE1NiwgNSwgMjA3LCAxMjksIDExLCAyMjYsIDE1NiwgNSwgMjA2LCAxOTUsIDExLCAKKyAgICAyMjYsIDE1NiwgNSwgMjA2LCAxMjMsIDExLCAyMjYsIDE1NiwgNSwgMjA1LCAxNTksIDExLCAzNSwgNSwgMjQ1LCAyMiwgNzQsIAorICAgIDExLCAzNSwgNSwgMjQ1LCAyMiwgMjMyLCAyMDMsIDExLCAyNCwgNiwgMjUyLCAxNDQsIDExLCAyNCwgNiwgMjUwLCA4LCAxMSwgCisgICAgMjQsIDYsIDI0MCwgMjE1LCAxMSwgMjQsIDYsIDI0NSwgMjI3LCAxMSwgMjQsIDYsIDI0MiwgMjQ0LCAxMSwgMjQsIDYsIAorICAgIDIwNSwgODQsIDExLCAyNCwgNiwgMjQyLCAyMDEsIDExLCAyNCwgNiwgMjEyLCAyMywgMTEsIDI0LCA2LCAyMzIsIDI0OSwgCisgICAgMTEsIDI0LCA2LCAyMzIsIDE0LCAxMSwgMjQsIDYsIDIzMCwgMTAyLCAxMSwgMjQsIDYsIDIyNiwgMTE0LCAxMSwgMjQsIDYsIAorICAgIDIyMywgMjE3LCAxMSwgMjQsIDYsIDIwNiwgMTY5LCAxMSwgMjQsIDYsIDIyMiwgMTY4LCAxMSwgMjQsIDYsIDIyMSwgNTMsIAorICAgIDExLCAyNCwgNiwgMjE4LCAyMTAsIDExLCAyNCwgNiwgMjEyLCAyNCwgOTMsIDExLCAyNCwgNiwgMjE1LCA2MywgMTEsIDI0LCAKKyAgICA2LCAyMTIsIDE1MSwgMTEsIDI0LCA2LCAyMDksIDIwMCwgMTEsIDI0LCA2LCAyMjEsIDc4LCAxMSwgMjQsIDYsIDI0OCwgNTgsIAorICAgIDExLCAyNCwgNiwgMjIwLCA5MywgMTEsIDI0LCA2LCAyMjIsIDE3MCwgMTEsIDI0LCAyMjUsIDIyNywgMTEsIDI0LCA1LCAKKyAgICAyNTIsIDE0NCwgMTEsIDI0LCA1LCAyNTAsIDgsIDExLCAyNCwgNSwgMjQwLCAyMTUsIDExLCAyNCwgNSwgMjQ1LCAyMjcsIAorICAgIDExLCAyNCwgNSwgMjQyLCAyNDQsIDExLCAyNCwgNSwgMjA1LCA4NCwgMTEsIDI0LCA1LCAyNDIsIDIwMSwgMTEsIDI0LCA1LCAKKyAgICAyMTIsIDIzLCAxMSwgMjQsIDUsIDIzMiwgMjQ5LCAxMSwgMjQsIDUsIDIzMiwgMTQsIDExLCAyNCwgNSwgMjMwLCAxMDIsIAorICAgIDExLCAyNCwgNSwgMjI2LCAxMTQsIDExLCAyNCwgNSwgMjIzLCAyMTcsIDExLCAyNCwgNSwgMjA2LCAxNjksIDExLCAyNCwgNSwgCisgICAgMjIyLCAxNjgsIDExLCAyNCwgNSwgMjIxLCA1MywgMTEsIDI0LCA1LCAyMTgsIDIxMCwgMTEsIDI0LCA1LCA0MiwgMjE1LCAKKyAgICA2MywgMTEsIDI0LCA1LCAyMTUsIDYzLCAxMSwgMjQsIDUsIDIxMiwgMTUxLCAxMSwgMjQsIDUsIDIwOSwgMjAwLCAxMSwgMjQsIAorICAgIDUsIDIyMSwgNzgsIDExLCAyNCwgNSwgMjQ4LCA1OCwgMTEsIDI0LCA1LCAyMjAsIDkzLCAxMSwgMjQsIDUsIDIyMiwgMTcwLCAKKyAgICAxMSwgMjQsIDIyMSwgMjA5LCAyNDUsIDE0MCwgMTEsIDI0LCAyNDIsIDI0NSwgOTMsIDExLCAyNCwgMjEyLCAyNCwgOTMsIAorICAgIDExLCAyNCwgMjMyLCAxNSwgOTMsIDExLCAyNCwgMjIxLCA3OSwgOTMsIDExLCAyNCwgMjE4LCAyMTEsIDkzLCAxMSwgMjQsIAorICAgIDIyMSwgNTQsIDkzLCAxMSwgMzUsIDYsIDI1MiwgMTQ0LCAxMSwgMzUsIDYsIDI1MCwgOCwgMTEsIDM1LCA2LCAyNDAsIDIxNSwgCisgICAgMTEsIDM1LCA2LCAyNDUsIDIyNywgMTEsIDM1LCA2LCAyNDIsIDI0NCwgMTEsIDM1LCA2LCAyMDUsIDg0LCAxMSwgMzUsIDYsIAorICAgIDI0MiwgMjAxLCAxMSwgMzUsIDYsIDIxMiwgMjMsIDExLCAzNSwgNiwgMjMyLCAyNDksIDExLCAzNSwgNiwgMjMyLCAxNCwgCisgICAgMTEsIDM1LCA2LCAyMzAsIDEwMiwgMTEsIDM1LCA2LCAyMjYsIDExNCwgMTEsIDM1LCA2LCAyMjMsIDIxNywgMTEsIDM1LCA2LCAKKyAgICAyMDYsIDE2OSwgMTEsIDM1LCA2LCAyMjIsIDE2OCwgMTEsIDM1LCA2LCAyMjEsIDUzLCAxMSwgMzUsIDYsIDIxOCwgMjEwLCAKKyAgICAxMSwgMzUsIDYsIDIxMiwgMjQsIDkzLCAxMSwgMzUsIDYsIDIxNSwgNjMsIDExLCAzNSwgNiwgMjEyLCAxNTEsIDExLCAzNSwgCisgICAgNiwgMjA5LCAyMDAsIDExLCAzNSwgNiwgMjIxLCA3OCwgMTEsIDM1LCA2LCAyNDgsIDU4LCAxMSwgMzUsIDYsIDIyMCwgOTMsIAorICAgIDExLCAzNSwgNiwgMjIyLCAxNzAsIDExLCAzNSwgMjI1LCAyMjcsIDExLCAzNSwgNSwgMjUyLCAxNDQsIDExLCAzNSwgNSwgCisgICAgMjUwLCA4LCAxMSwgMzUsIDUsIDI0MCwgMjE1LCAxMSwgMzUsIDUsIDI0NSwgMjI3LCAxMSwgMzUsIDUsIDI0MiwgMjQ0LCAKKyAgICAxMSwgMzUsIDUsIDIwNSwgODQsIDExLCAzNSwgNSwgMjQyLCAyMDEsIDExLCAzNSwgNSwgMjEyLCAyMywgMTEsIDM1LCA1LCAKKyAgICAyMzIsIDI0OSwgMTEsIDM1LCA1LCAyMzIsIDE0LCAxMSwgMzUsIDUsIDIzMCwgMTAyLCAxMSwgMzUsIDUsIDIyNiwgMTE0LCAKKyAgICAxMSwgMzUsIDUsIDIyMywgMjE3LCAxMSwgMzUsIDUsIDIwNiwgMTY5LCAxMSwgMzUsIDUsIDIyMiwgMTY4LCAxMSwgMzUsIDUsIAorICAgIDIyMSwgNTMsIDExLCAzNSwgNSwgMjE4LCAyMTAsIDExLCAzNSwgNSwgNDIsIDIxNSwgNjMsIDExLCAzNSwgNSwgMjE1LCA2MywgCisgICAgMTEsIDM1LCA1LCAyMTIsIDE1MSwgMTEsIDM1LCA1LCAyMDksIDIwMCwgMTEsIDM1LCA1LCAyMjEsIDc4LCAxMSwgMzUsIDUsIAorICAgIDI0OCwgNTgsIDExLCAzNSwgNSwgMjIwLCA5MywgMTEsIDM1LCA1LCAyMjIsIDE3MCwgMTEsIDM1LCAyMjEsIDIwOSwgMjQ1LCAKKyAgICAxNDAsIDExLCAzNSwgMjQyLCAyNDUsIDkzLCAxMSwgMzUsIDIxMiwgMjQsIDkzLCAxMSwgMzUsIDIzMiwgMTUsIDkzLCAxMSwgCisgICAgMzUsIDIyMSwgNzksIDkzLCAxMSwgMzUsIDIxOCwgMjExLCA5MywgMTEsIDM1LCAyMjEsIDU0LCA5MywgMTEsIDI0LCAzNSwgCisgICAgNiwgMjUyLCAxNDQsIDExLCAyNCwgMzUsIDYsIDI1MCwgOCwgMTEsIDI0LCAzNSwgNiwgMjQwLCAyMTUsIDExLCAyNCwgMzUsIAorICAgIDYsIDI0NSwgMjI3LCAxMSwgMjQsIDM1LCA2LCAyNDIsIDI0NCwgMTEsIDI0LCAzNSwgNiwgMjA1LCA4NCwgMTEsIDI0LCAzNSwgCisgICAgNiwgMjQyLCAyMDEsIDExLCAyNCwgMzUsIDYsIDIxMiwgMjMsIDExLCAyNCwgMzUsIDYsIDIzMiwgMjQ5LCAxMSwgMjQsIDM1LCAKKyAgICA2LCAyMzIsIDE0LCAxMSwgMjQsIDM1LCA2LCAyMzAsIDEwMiwgMTEsIDI0LCAzNSwgNiwgMjI2LCAxMTQsIDExLCAyNCwgMzUsIAorICAgIDYsIDIyMywgMjE3LCAxMSwgMjQsIDM1LCA2LCAyMDYsIDE2OSwgMTEsIDI0LCAzNSwgNiwgMjIyLCAxNjgsIDExLCAyNCwgCisgICAgMzUsIDYsIDIyMSwgNTMsIDExLCAyNCwgMzUsIDYsIDIxOCwgMjEwLCAxMSwgMjQsIDM1LCA2LCAyMTIsIDI0LCA5MywgMTEsIAorICAgIDI0LCAzNSwgNiwgMjE1LCA2MywgMTEsIDI0LCAzNSwgNiwgMjEyLCAxNTEsIDExLCAyNCwgMzUsIDYsIDIwOSwgMjAwLCAxMSwgCisgICAgMjQsIDM1LCA2LCAyMjEsIDc4LCAxMSwgMjQsIDM1LCA2LCAyNDgsIDU4LCAxMSwgMjQsIDM1LCA2LCAyMjAsIDkzLCAxMSwgCisgICAgMjQsIDM1LCA2LCAyMjIsIDE3MCwgMTEsIDI0LCAzNSwgMjI1LCAyMjcsIDExLCAyNCwgMzUsIDUsIDI1MiwgMTQ0LCAxMSwgCisgICAgMjQsIDM1LCA1LCAyNTAsIDgsIDExLCAyNCwgMzUsIDUsIDI0MCwgMjE1LCAxMSwgMjQsIDM1LCA1LCAyNDUsIDIyNywgMTEsIAorICAgIDI0LCAzNSwgNSwgMjQyLCAyNDQsIDExLCAyNCwgMzUsIDUsIDIwNSwgODQsIDExLCAyNCwgMzUsIDUsIDI0MiwgMjAxLCAxMSwgCisgICAgMjQsIDM1LCA1LCAyMTIsIDIzLCAxMSwgMjQsIDM1LCA1LCAyMzIsIDI0OSwgMTEsIDI0LCAzNSwgNSwgMjMyLCAxNCwgMTEsIAorICAgIDI0LCAzNSwgNSwgMjMwLCAxMDIsIDExLCAyNCwgMzUsIDUsIDIyNiwgMTE0LCAxMSwgMjQsIDM1LCA1LCAyMjMsIDIxNywgCisgICAgMTEsIDI0LCAzNSwgNSwgMjA2LCAxNjksIDExLCAyNCwgMzUsIDUsIDIyMiwgMTY4LCAxMSwgMjQsIDM1LCA1LCAyMjEsIDUzLCAKKyAgICAxMSwgMjQsIDM1LCA1LCAyMTgsIDIxMCwgMTEsIDI0LCAzNSwgNSwgNDIsIDIxNSwgNjMsIDExLCAyNCwgMzUsIDUsIDIxNSwgCisgICAgNjMsIDExLCAyNCwgMzUsIDUsIDIxMiwgMTUxLCAxMSwgMjQsIDM1LCA1LCAyMDksIDIwMCwgMTEsIDI0LCAzNSwgNSwgMjIxLCAKKyAgICA3OCwgMTEsIDI0LCAzNSwgNSwgMjQ4LCA1OCwgMTEsIDI0LCAzNSwgNSwgMjIwLCA5MywgMTEsIDI0LCAzNSwgNSwgMjIyLCAKKyAgICAxNzAsIDExLCAyNCwgMzUsIDIyMSwgMjA5LCAyNDUsIDE0MCwgMTEsIDI0LCAzNSwgMjQyLCAyNDUsIDkzLCAxMSwgMjQsIAorICAgIDM1LCAyMTIsIDI0LCA5MywgMTEsIDI0LCAzNSwgMjMyLCAxNSwgOTMsIDExLCAyNCwgMzUsIDIyMSwgNzksIDkzLCAxMSwgCisgICAgMjQsIDM1LCAyMTgsIDIxMSwgOTMsIDExLCAyNCwgMzUsIDIyMSwgNTQsIDkzLCAxMSwgMzgsIDI0LCA2LCAyNTIsIDE0NCwgCisgICAgMTEsIDM4LCAyNCwgNiwgMjUwLCA4LCAxMSwgMzgsIDI0LCA2LCAyNDAsIDIxNSwgMTEsIDM4LCAyNCwgNiwgMjQ1LCAyMjcsIAorICAgIDExLCAzOCwgMjQsIDYsIDI0MiwgMjQ0LCAxMSwgMzgsIDI0LCA2LCAyMDUsIDg0LCAxMSwgMzgsIDI0LCA2LCAyNDIsIDIwMSwgCisgICAgMTEsIDM4LCAyNCwgNiwgMjEyLCAyMywgMTEsIDM4LCAyNCwgNiwgMjMyLCAyNDksIDExLCAzOCwgMjQsIDYsIDIzMiwgMTQsIAorICAgIDExLCAzOCwgMjQsIDYsIDIzMCwgMTAyLCAxMSwgMzgsIDI0LCA2LCAyMjYsIDExNCwgMTEsIDM4LCAyNCwgNiwgMjIzLCAKKyAgICAyMTcsIDExLCAzOCwgMjQsIDYsIDIwNiwgMTY5LCAxMSwgMzgsIDI0LCA2LCAyMjIsIDE2OCwgMTEsIDM4LCAyNCwgNiwgCisgICAgMjIxLCA1MywgMTEsIDM4LCAyNCwgNiwgMjE4LCAyMTAsIDExLCAzOCwgMjQsIDYsIDIxMiwgMjQsIDkzLCAxMSwgMzgsIDI0LCAKKyAgICA2LCAyMTUsIDYzLCAxMSwgMzgsIDI0LCA2LCAyMTIsIDE1MSwgMTEsIDM4LCAyNCwgNiwgMjA5LCAyMDAsIDExLCAzOCwgMjQsIAorICAgIDYsIDIyMSwgNzgsIDExLCAzOCwgMjQsIDYsIDI0OCwgNTgsIDExLCAzOCwgMjQsIDYsIDIyMCwgOTMsIDExLCAzOCwgMjQsIAorICAgIDYsIDIyMiwgMTcwLCAxMSwgMzgsIDI0LCAyMjUsIDIyNywgMTEsIDM4LCAyNCwgNSwgMjUyLCAxNDQsIDExLCAzOCwgMjQsIAorICAgIDUsIDI1MCwgOCwgMTEsIDM4LCAyNCwgNSwgMjQwLCAyMTUsIDExLCAzOCwgMjQsIDUsIDI0NSwgMjI3LCAxMSwgMzgsIDI0LCAKKyAgICA1LCAyNDIsIDI0NCwgMTEsIDM4LCAyNCwgNSwgMjA1LCA4NCwgMTEsIDM4LCAyNCwgNSwgMjQyLCAyMDEsIDExLCAzOCwgMjQsIAorICAgIDUsIDIxMiwgMjMsIDExLCAzOCwgMjQsIDUsIDIzMiwgMjQ5LCAxMSwgMzgsIDI0LCA1LCAyMzIsIDE0LCAxMSwgMzgsIDI0LCAKKyAgICA1LCAyMzAsIDEwMiwgMTEsIDM4LCAyNCwgNSwgMjI2LCAxMTQsIDExLCAzOCwgMjQsIDUsIDIyMywgMjE3LCAxMSwgMzgsIAorICAgIDI0LCA1LCAyMDYsIDE2OSwgMTEsIDM4LCAyNCwgNSwgMjIyLCAxNjgsIDExLCAzOCwgMjQsIDUsIDIyMSwgNTMsIDExLCAzOCwgCisgICAgMjQsIDUsIDIxOCwgMjEwLCAxMSwgMzgsIDI0LCA1LCA0MiwgMjE1LCA2MywgMTEsIDM4LCAyNCwgNSwgMjE1LCA2MywgMTEsIAorICAgIDM4LCAyNCwgNSwgMjEyLCAxNTEsIDExLCAzOCwgMjQsIDUsIDIwOSwgMjAwLCAxMSwgMzgsIDI0LCA1LCAyMjEsIDc4LCAxMSwgCisgICAgMzgsIDI0LCA1LCAyNDgsIDU4LCAxMSwgMzgsIDI0LCA1LCAyMjAsIDkzLCAxMSwgMzgsIDI0LCA1LCAyMjIsIDE3MCwgMTEsIAorICAgIDM4LCAyNCwgMjIxLCAyMDksIDI0NSwgMTQwLCAxMSwgMzgsIDI0LCAyNDIsIDI0NSwgOTMsIDExLCAzOCwgMjQsIDIxMiwgCisgICAgMjQsIDkzLCAxMSwgMzgsIDI0LCAyMzIsIDE1LCA5MywgMTEsIDM4LCAyNCwgMjIxLCA3OSwgOTMsIDExLCAzOCwgMjQsIAorICAgIDIxOCwgMjExLCA5MywgMTEsIDM4LCAyNCwgMjIxLCA1NCwgOTMsIDExLCAzOCwgMjQsIDM1LCA2LCAyNTIsIDE0NCwgMTEsIAorICAgIDM4LCAyNCwgMzUsIDYsIDI1MCwgOCwgMTEsIDM4LCAyNCwgMzUsIDYsIDI0MCwgMjE1LCAxMSwgMzgsIDI0LCAzNSwgNiwgCisgICAgMjQ1LCAyMjcsIDExLCAzOCwgMjQsIDM1LCA2LCAyNDIsIDI0NCwgMTEsIDM4LCAyNCwgMzUsIDYsIDIwNSwgODQsIDExLCAKKyAgICAzOCwgMjQsIDM1LCA2LCAyNDIsIDIwMSwgMTEsIDM4LCAyNCwgMzUsIDYsIDIxMiwgMjMsIDExLCAzOCwgMjQsIDM1LCA2LCAKKyAgICAyMzIsIDI0OSwgMTEsIDM4LCAyNCwgMzUsIDYsIDIzMiwgMTQsIDExLCAzOCwgMjQsIDM1LCA2LCAyMzAsIDEwMiwgMTEsIAorICAgIDM4LCAyNCwgMzUsIDYsIDIyNiwgMTE0LCAxMSwgMzgsIDI0LCAzNSwgNiwgMjIzLCAyMTcsIDExLCAzOCwgMjQsIDM1LCA2LCAKKyAgICAyMDYsIDE2OSwgMTEsIDM4LCAyNCwgMzUsIDYsIDIyMiwgMTY4LCAxMSwgMzgsIDI0LCAzNSwgNiwgMjIxLCA1MywgMTEsIAorICAgIDM4LCAyNCwgMzUsIDYsIDIxOCwgMjEwLCAxMSwgMzgsIDI0LCAzNSwgNiwgMjEyLCAyNCwgOTMsIDExLCAzOCwgMjQsIDM1LCAKKyAgICA2LCAyMTUsIDYzLCAxMSwgMzgsIDI0LCAzNSwgNiwgMjEyLCAxNTEsIDExLCAzOCwgMjQsIDM1LCA2LCAyMDksIDIwMCwgMTEsIAorICAgIDM4LCAyNCwgMzUsIDYsIDIyMSwgNzgsIDExLCAzOCwgMjQsIDM1LCA2LCAyNDgsIDU4LCAxMSwgMzgsIDI0LCAzNSwgNiwgCisgICAgMjIwLCA5MywgMTEsIDM4LCAyNCwgMzUsIDYsIDIyMiwgMTcwLCAxMSwgMzgsIDI0LCAzNSwgMjI1LCAyMjcsIDExLCAzOCwgCisgICAgMjQsIDM1LCA1LCAyNTIsIDE0NCwgMTEsIDM4LCAyNCwgMzUsIDUsIDI1MCwgOCwgMTEsIDM4LCAyNCwgMzUsIDUsIDI0MCwgCisgICAgMjE1LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjQ1LCAyMjcsIDExLCAzOCwgMjQsIDM1LCA1LCAyNDIsIDI0NCwgMTEsIDM4LCAKKyAgICAyNCwgMzUsIDUsIDIwNSwgODQsIDExLCAzOCwgMjQsIDM1LCA1LCAyNDIsIDIwMSwgMTEsIDM4LCAyNCwgMzUsIDUsIDIxMiwgCisgICAgMjMsIDExLCAzOCwgMjQsIDM1LCA1LCAyMzIsIDI0OSwgMTEsIDM4LCAyNCwgMzUsIDUsIDIzMiwgMTQsIDExLCAzOCwgMjQsIAorICAgIDM1LCA1LCAyMzAsIDEwMiwgMTEsIDM4LCAyNCwgMzUsIDUsIDIyNiwgMTE0LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjIzLCAKKyAgICAyMTcsIDExLCAzOCwgMjQsIDM1LCA1LCAyMDYsIDE2OSwgMTEsIDM4LCAyNCwgMzUsIDUsIDIyMiwgMTY4LCAxMSwgMzgsIAorICAgIDI0LCAzNSwgNSwgMjIxLCA1MywgMTEsIDM4LCAyNCwgMzUsIDUsIDIxOCwgMjEwLCAxMSwgMzgsIDI0LCAzNSwgNSwgNDIsIAorICAgIDIxNSwgNjMsIDExLCAzOCwgMjQsIDM1LCA1LCAyMTUsIDYzLCAxMSwgMzgsIDI0LCAzNSwgNSwgMjEyLCAxNTEsIDExLCAzOCwgCisgICAgMjQsIDM1LCA1LCAyMDksIDIwMCwgMTEsIDM4LCAyNCwgMzUsIDUsIDIyMSwgNzgsIDExLCAzOCwgMjQsIDM1LCA1LCAyNDgsIAorICAgIDU4LCAxMSwgMzgsIDI0LCAzNSwgNSwgMjIwLCA5MywgMTEsIDM4LCAyNCwgMzUsIDUsIDIyMiwgMTcwLCAxMSwgMzgsIDI0LCAKKyAgICAzNSwgMjIxLCAyMDksIDI0NSwgMTQwLCAxMSwgMzgsIDI0LCAzNSwgMjQyLCAyNDUsIDkzLCAxMSwgMzgsIDI0LCAzNSwgCisgICAgMjEyLCAyNCwgOTMsIDExLCAzOCwgMjQsIDM1LCAyMzIsIDE1LCA5MywgMTEsIDM4LCAyNCwgMzUsIDIyMSwgNzksIDkzLCAKKyAgICAxMSwgMzgsIDI0LCAzNSwgMjE4LCAyMTEsIDkzLCAxMSwgMzgsIDI0LCAzNSwgMjIxLCA1NCwgOTMsIDExLCAyNCwgNiwgCisgICAgMjQ1LCAxMzQsIDExLCAyNCwgNSwgMjQ1LCAxMzQsIDExLCAyNCwgMTgsIDIwNSwgODUsIDExLCAyNCwgMTgsIDEwMiwgMTEsIAorICAgIDI0LCAxOCwgMTA1LCAxMSwgMjQsIDE4LCAxNDIsIDExLCAyNCwgMTgsIDEzOSwgMTEsIDI0LCAxOCwgMTY4LCAxMSwgMjQsIAorICAgIDE4LCAxODQsIDExLCAyNCwgMTgsIDE5NSwgMTEsIDI0LCAxOCwgMTkzLCAxMSwgMjQsIDE4LCAyMDAsIDExLCAxNTksIDE4LCAKKyAgICAyMDUsIDg1LCAxMSwgMTU5LCAxOCwgMTAyLCAxMSwgMTU5LCAxOCwgMTA1LCAxMSwgMTU5LCAxOCwgMTQyLCAxMSwgMTU5LCAKKyAgICAxOCwgMTM5LCAxMSwgMTU5LCAxOCwgMTY4LCAxMSwgMTU5LCAxOCwgMTg0LCAxMSwgMTU5LCAxOCwgMTk1LCAxMSwgMTU5LCAKKyAgICAxOCwgMTkzLCAxMSwgMTU5LCAxOCwgMjAwLCAxMSwgMzgsIDE4LCAyMDUsIDg1LCAxMSwgMzgsIDE4LCAxMDIsIDExLCAzOCwgCisgICAgMTgsIDEwNSwgMTEsIDM4LCAxOCwgMTQyLCAxMSwgMzgsIDE4LCAxMzksIDExLCAzOCwgMTgsIDE2OCwgMTEsIDM4LCAxOCwgCisgICAgMTg0LCAxMSwgMzgsIDE4LCAxOTUsIDExLCAzOCwgMTgsIDE5MywgMTEsIDM4LCAxOCwgMjAwLCAxMSwgMzgsIDI0LCAxOCwgCisgICAgMjA1LCA4NSwgMTEsIDM4LCAyNCwgMTgsIDEwMiwgMTEsIDM4LCAyNCwgMTgsIDEwNSwgMTEsIDM4LCAyNCwgMTgsIDE0MiwgCisgICAgMTEsIDM4LCAyNCwgMTgsIDEzOSwgMTEsIDM4LCAyNCwgMTgsIDE2OCwgMTEsIDM4LCAyNCwgMTgsIDE4NCwgMTEsIDM4LCAKKyAgICAyNCwgMTgsIDE5NSwgMTEsIDM4LCAyNCwgMTgsIDE5MywgMTEsIDM4LCAyNCwgMTgsIDIwMCwgMTEsIDIyNiwgMTU2LCAxOCwgCisgICAgMjA1LCA4NSwgMTEsIDIyNiwgMTU2LCAxOCwgMTAyLCAxMSwgMjI2LCAxNTYsIDE4LCAxMDUsIDExLCAyMjYsIDE1NiwgMTgsIAorICAgIDE0MiwgMTEsIDIyNiwgMTU2LCAxOCwgMTM5LCAxMSwgMjI2LCAxNTYsIDE4LCAxNjgsIDExLCAyMjYsIDE1NiwgMTgsIDE4NCwgCisgICAgMTEsIDIyNiwgMTU2LCAxOCwgMTk1LCAxMSwgMjI2LCAxNTYsIDE4LCAxOTMsIDExLCAyMjYsIDE1NiwgMTgsIDIwMCwgNzAsIAorICAgIDY5LCA0LCAyMjksIDI3LCAyMzEsIDEyMywgNzAsIDY5LCA0LCAyMjksIDIzLCAxNzIsIDcwLCA2OSwgNCwgMjI5LCAyMSwgCisgICAgMjMwLCAyMzYsIDcwLCA2OSwgNCwgMjI4LCAxNTMsIDIzMSwgMjIxLCA3MCwgNjksIDQsIDIyOCwgMTIzLCAyMzEsIDIyNCwgCisgICAgNzAsIDY5LCA0LCAyMjgsIDE0MiwgMjMxLCAzMywgNzAsIDY5LCA0LCAyMjgsIDE3MCwgMjMxLCA1MywgNzAsIDY5LCA0LCAKKyAgICAyMjgsIDM5LCAyMzAsIDIzMCwgNzAsIDY5LCA0LCAyMjksIDE4LCAyMDcsIDIwLCA3MCwgNjksIDQsIDIyOSwgMTYsIDIwNywgCisgICAgOTYsIDcwLCA2OSwgNCwgMjI5LCAxNCwgMjA2LCAyMTYsIDcwLCA2OSwgNCwgMjI4LCA5MiwgMjA3LCA0NSwgNzAsIDY5LCA0LCAKKyAgICAyMjgsIDEwMCwgMjA3LCA1MSwgNzAsIDY5LCA0LCAyMjgsIDEwNCwgMjA2LCAyMzgsIDcwLCA2OSwgNCwgMjI4LCAxNzMsIAorICAgIDIwNiwgMjUwLCA3MCwgNjksIDQsIDIyOCwgMjQsIDIwNiwgMjEyLCA3MCwgNjksIDQsIDIyOCwgNzUsIDIwNywgNDMsIDcwLCAKKyAgICA2OSwgNCwgMjI4LCAxNTcsIDIwNiwgMjAwLCA3MCwgNjksIDQsIDIyOCwgMTY5LCAyMDYsIDIwMiwgNzAsIDY5LCA0LCAyMjgsIAorICAgIDc5LCAyMDYsIDIwMSwgNzAsIDY5LCA0LCAyMjksIDEyLCAyMjYsIDIwOSwgNzAsIDY5LCA0LCAyMjksIDEwLCAyMjcsIDIyMSwgCisgICAgNzAsIDY5LCA0LCAyMjksIDgsIDIyNiwgODksIDcwLCA2OSwgNCwgMjI4LCAxNTksIDIyNywgODMsIDcwLCA2OSwgNCwgMjI4LCAKKyAgICAxMjQsIDIyNiwgMTY4LCA3MCwgNjksIDQsIDIyOCwgNjQsIDIyNiwgMTExLCA3MCwgNjksIDQsIDIyOCwgMjksIDIyNiwgCisgICAgMTA1LCA3MCwgNjksIDQsIDIyOSwgNiwgMjQ5LCAyNDQsIDcwLCA2OSwgNCwgMjI5LCAzLCAyNTAsIDE4MywgNzAsIDY5LCA0LCAKKyAgICAyMjksIDEsIDI0OSwgMTAxLCA3MCwgNjksIDQsIDIyOCwgNjgsIDI1MCwgNTAsIDcwLCA2OSwgNCwgMjI4LCAxMjEsIDI1MCwgCisgICAgNjEsIDcwLCA2OSwgNCwgMjI4LCAxMTUsIDI0OSwgMTcyLCA3MCwgNjksIDQsIDIyOCwgODAsIDI0OSwgMTg0LCA3MCwgNjksIAorICAgIDQsIDIyOCwgMjQ3LCA3NCwgNzAsIDY5LCA0LCAyMjgsIDI0NSwgNjIsIDcwLCA2OSwgNCwgMjI4LCAyNDMsIDcxLCA3MCwgCisgICAgNjksIDQsIDIyOCwgNTUsIDI0MywgMTA0LCA3MCwgNjksIDQsIDIyOCwgMTE4LCA3NSwgNzAsIDY5LCA0LCAyMjgsIDUzLCAKKyAgICAyMjIsIDE1MiwgNzAsIDY5LCA0LCAyMjgsIDcxLCA3NiwgNzAsIDY5LCA0LCAyMjgsIDgxLCAyNDMsIDkwLCA3MCwgNjksIDQsIAorICAgIDIyOCwgODcsIDIzMywgNjgsIDcwLCA2OSwgNCwgMjI4LCA4MywgMjMzLCA2OCwgNzAsIDY5LCA0LCAyMjgsIDIzLCAyNTIsIAorICAgIDEyMiwgNzAsIDY5LCA0LCAyMjgsIDQwLCAyNDMsIDQxLCA3MCwgNjksIDQsIDIyOCwgMjMyLCAyMTUsIDgwLCA3MCwgNjksIAorICAgIDQsIDIyOCwgMjMwLCAyMTcsIDE5OSwgNzAsIDY5LCA0LCAyMjgsIDIyOCwgMjEzLCAyMDMsIDcwLCA2OSwgNCwgMjI4LCA1NiwgCisgICAgMjE3LCA3NCwgNzAsIDY5LCA0LCAyMjgsIDEwMiwgMjE3LCA4NiwgNzAsIDY5LCA0LCAyMjgsIDgyLCAyMTQsIDE3NCwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDEzOSwgMjE0LCAxOTMsIDcwLCA2OSwgNCwgMjI4LCAyMiwgMjE1LCA3OSwgNzAsIDY5LCA0LCAyMjgsIAorICAgIDIxOCwgMjI5LCAyMzUsIDcwLCA2OSwgNCwgMjI4LCAyMTYsIDIzMCwgMTQxLCA3MCwgNjksIDQsIDIyOCwgMjE0LCAyMjksIAorICAgIDgxLCA3MCwgNjksIDQsIDIyOCwgMTM0LCAyMzAsIDUwLCA3MCwgNjksIDQsIDIyOCwgMTQ1LCAyMzAsIDU4LCA3MCwgNjksIAorICAgIDQsIDIyOCwgMTY0LCAyMjksIDExNSwgNzAsIDY5LCA0LCAyMjgsIDY1LCAyMjksIDE0NCwgNzAsIDY5LCA0LCAyMjgsIDEwOCwgCisgICAgMTUyLCAyMzAsIDU4LCA3MCwgNjksIDQsIDIyOCwgMjQwLCAyNDUsIDE2OCwgNzAsIDY5LCA0LCAyMjgsIDIzNywgMjQ2LCAKKyAgICAxNDUsIDcwLCA2OSwgNCwgMjI4LCAyMzQsIDI0MywgMjM3LCA3MCwgNjksIDQsIDIyOCwgMTI5LCAyNDUsIDI1MSwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDM4LCAyNDUsIDI4LCA3MCwgNjksIDQsIDIyOCwgMzcsIDI0NSwgNTEsIDcwLCA2OSwgNCwgMjI4LCAKKyAgICAyMjYsIDIxMSwgMjExLCA3MCwgNjksIDQsIDIyOCwgMjIzLCAyMTIsIDIxOSwgNzAsIDY5LCA0LCAyMjgsIDIyMSwgMjEwLCAKKyAgICAxNzAsIDcwLCA2OSwgNCwgMjI4LCAxMjcsIDIxMiwgMTIwLCA3MCwgNjksIDQsIDIyOCwgMTYzLCAyMTIsIDEzMSwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDExNCwgMjExLCAxMDUsIDcwLCA2OSwgNCwgMjI4LCAxNDksIDEyNCwgNzAsIDY5LCA0LCAyMjgsIDIxMiwgCisgICAgMjMyLCAxNjIsIDcwLCA2OSwgNCwgMjI4LCAyMDksIDIzMiwgMjAwLCA3MCwgNjksIDQsIDIyOCwgMjA3LCAyMzIsIDEwNCwgCisgICAgNzAsIDY5LCA0LCAyMjgsIDYxLCAyMzIsIDE4MCwgNzAsIDY5LCA0LCAyMjgsIDEwNSwgMjMyLCAxODIsIDcwLCA2OSwgNCwgCisgICAgMjI4LCA1OCwgMjMyLCAxMTMsIDcwLCA2OSwgNCwgMjI4LCAxNTUsIDIzMiwgMTIyLCA3MCwgNjksIDQsIDIyOCwgNDMsIAorICAgIDE1MiwgMjMyLCAxMjIsIDcwLCA2OSwgNCwgMjI4LCAyMDUsIDIwNiwgMTEsIDcwLCA2OSwgNCwgMjI4LCAyMDIsIDE5MCwgCisgICAgNzAsIDY5LCA0LCAyMjgsIDIwMCwgMjA1LCAyMTMsIDcwLCA2OSwgNCwgMjI4LCAxMDksIDIwNiwgNDksIDcwLCA2OSwgNCwgCisgICAgMjI4LCAxMzgsIDIwNiwgNTIsIDcwLCA2OSwgNCwgMjI4LCA3NywgMjA1LCAyMzIsIDcwLCA2OSwgNCwgMjI4LCA5NywgMjA1LCAKKyAgICAyNDcsIDcwLCA2OSwgNCwgMjI4LCAxOTYsIDI0MSwgMjUwLCA3MCwgNjksIDQsIDIyOCwgMTk0LCAyNDIsIDczLCA3MCwgNjksIAorICAgIDQsIDIyOCwgMTkyLCAyNDEsIDg4LCA3MCwgNjksIDQsIDIyOCwgMTQwLCAyNDIsIDIxLCA3MCwgNjksIDQsIDIyOCwgMTQzLCAKKyAgICAyNDIsIDI4LCA3MCwgNjksIDQsIDIyOCwgODUsIDI0MSwgMTUxLCA3MCwgNjksIDQsIDIyOCwgMTMwLCAyNDEsIDE2MiwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDIxLCAyNDEsIDg3LCA3MCwgNjksIDQsIDIyOCwgMTE3LCAyNDIsIDQ3LCA3MCwgNjksIDQsIDIyOCwgCisgICAgMTkwLCAyMjQsIDE5OSwgNzAsIDY5LCA0LCAyMjgsIDE4OCwgMjI1LCAyMDksIDcwLCA2OSwgNCwgMjI4LCAxODYsIDIyMywgCisgICAgMTczLCA3MCwgNjksIDQsIDIyOCwgMTAxLCAyMjUsIDEwMSwgNzAsIDY5LCA0LCAyMjgsIDQ5LCAyMjQsIDYxLCA3MCwgNjksIAorICAgIDQsIDIyOCwgNDIsIDIzOSwgMTEsIDcwLCA2OSwgNCwgMjI4LCAxODEsIDE1NSwgNzAsIDY5LCA0LCAyMjgsIDMyLCAyMzgsIAorICAgIDQyLCA3MCwgNjksIDQsIDIyOCwgMTg0LCAyMzksIDUzLCA3MCwgNjksIDQsIDIyOCwgMTIyLCAyMzksIDcxLCA3MCwgNjksIAorICAgIDQsIDIyOCwgMTc5LCAyMzgsIDEzMSwgNzAsIDY5LCA0LCAyMjgsIDc4LCAyMzgsIDE0OSwgNzAsIDY5LCA0LCAyMjgsIDEzNSwgCisgICAgMjM5LCA1MiwgNzAsIDY5LCA0LCAyMjgsIDkwLCAyMzgsIDEyNSwgNzAsIDY5LCA0LCAyMjgsIDE2NSwgMjM4LCAyNDYsIDcwLCAKKyAgICA2OSwgNCwgMjI4LCA4OCwgMjM5LCAxMTAsIDcwLCA2OSwgNCwgMjI4LCAxMzEsIDIzOCwgMzEsIDcwLCA2OSwgNCwgMjI4LCAKKyAgICAxNjYsIDIzOSwgNDEsIDcwLCA2OSwgNCwgMjI4LCAyNSwgMjM4LCAxMzQsIDcwLCA2OSwgNCwgMjI4LCAxNzIsIDIzOCwgNDEsIAorICAgIDcwLCA2OSwgNCwgMjI4LCAxMjgsIDIyNSwgNDIsIDcwLCA2OSwgNCwgMjI4LCAxNzcsIDIyNSwgNTYsIDcwLCA2OSwgNCwgCisgICAgMjI4LCAxMzYsIDIyNSwgMzksIDcwLCA2OSwgNCwgMjI4LCAxMDMsIDIyNSwgNTAsIDcwLCA2OSwgNCwgMjI4LCA3MiwgMjI1LCAKKyAgICA1MSwgNzAsIDY5LCA0LCAyMjgsIDYyLCAyMjUsIDQwLCA3MCwgNjksIDQsIDIyOCwgOTgsIDIyNSwgNDEsIDcwLCA2OSwgNCwgCisgICAgMjI4LCA1OSwgMjI1LCA1NSwgNzAsIDY5LCA0LCAyMjgsIDkxLCAyMjUsIDM4LCA3MCwgNjksIDQsIDIyOCwgMTMyLCAxNTIsIAorICAgIDIyNSwgNTEsIDcwLCA2OSwgNCwgMjI4LCAxMTIsIDE1MiwgMjI1LCA0MCwgNzAsIDY5LCA0LCAyMjgsIDM1LCAxNTIsIDIyNSwgCisgICAgNDEsIDcwLCA2OSwgNCwgMjI4LCA2MywgMjQwLCA2MSwgNzAsIDY5LCA0LCAyMjgsIDEwNywgMjQwLCAyNDQsIDcwLCA2OSwgCisgICAgNCwgMjI4LCA1MCwgMjM5LCAyMTMsIDcwLCA2OSwgNCwgMjI4LCAyOCwgMjQwLCAxNjIsIDcwLCA2OSwgNCwgMjI4LCA1MiwgCisgICAgMjM5LCAxOTksIDcwLCA2OSwgNCwgMjI4LCA1MSwgMjM5LCAyMDksIDcwLCA2OSwgNCwgMjI4LCAzNCwgMjI1LCA2MSwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDE2MSwgMjI0LCAyNTQsIDcwLCA2OSwgNCwgMjI4LCA0MSwgMjI0LCAyNDMsIDcwLCA2OSwgNCwgMjI4LCAKKyAgICAxNTAsIDIyMSwgNTMsIDcwLCA2OSwgNCwgMjI4LCAxMTksIDE3OSwgNzAsIDY5LCA0LCAyMjgsIDE2OCwgMjIwLCA4MiwgNzAsIAorICAgIDY5LCA0LCAyMjgsIDEzNywgMjIxLCAxNjQsIDcwLCA2OSwgNCwgMjI4LCAxNjcsIDIyMSwgMTc0LCA3MCwgNjksIDQsIDIyOCwgCisgICAgMTE2LCAyMjAsIDE4NywgNzAsIDY5LCA0LCAyMjgsIDE1MiwgMjIwLCAyMTEsIDcwLCA2OSwgNCwgMjI4LCA3MywgMjI3LCAKKyAgICAxMzgsIDcwLCA2OSwgNCwgMjI4LCAxNTYsIDIyNywgMTUzLCA3MCwgNjksIDQsIDIyOCwgOTYsIDIyNywgMTMyLCA3MCwgNjksIAorICAgIDQsIDIyOCwgMTcxLCAyMjcsIDE0NSwgNzAsIDY5LCA0LCAyMjgsIDMwLCAyMjcsIDE0NSwgNzAsIDY5LCA0LCAyMjgsIDE0NiwgCisgICAgMjI3LCAxNDYsIDcwLCA2OSwgNCwgMjI4LCA0NiwgMjI3LCAxMzMsIDcwLCA2OSwgNCwgMjI4LCA0NCwgMjI3LCAxMzQsIDcwLCAKKyAgICA2OSwgNCwgMjI4LCAzMSwgMjI3LCAxMjYsIDcwLCA2OSwgNCwgMjI4LCA1NywgMTUyLCAyMjcsIDE0NiwgNzAsIDY5LCA0LCAKKyAgICAyMjgsIDExMywgMTUyLCAyMjcsIDEzMywgNzAsIDY5LCA0LCAyMjgsIDc2LCAxNTIsIDIyNywgMTM0LCA3MCwgNjksIDQsIAorICAgIDIyOCwgODYsIDIzMSwgNywgNzAsIDY5LCA0LCAyMjgsIDEyNiwgMjMxLCAxNSwgNzAsIDY5LCA0LCAyMjgsIDE0NCwgMjMxLCAKKyAgICAzLCA3MCwgNjksIDQsIDIyOCwgMTc1LCAyMzEsIDEwLCA3MCwgNjksIDQsIDIyOCwgMTEwLCAyMzEsIDExLCA3MCwgNjksIDQsIAorICAgIDIyOCwgMTA2LCAyMzEsIDUsIDcwLCA2OSwgNCwgMjI4LCA2MCwgMjMxLCA2LCA3MCwgNjksIDQsIDIyOCwgOTQsIDI0MCwgCisgICAgMTc5LCA3MCwgNjksIDQsIDIyOCwgMTYyLCAyNDAsIDE4NywgNzAsIDY5LCA0LCAyMjgsIDcwLCAyNDAsIDE3NCwgNzAsIDY5LCAKKyAgICA0LCAyMjgsIDEyNSwgMjQwLCAxODMsIDcwLCA2OSwgNCwgMjI4LCAxMTEsIDI0MCwgMTg0LCA3MCwgNjksIDQsIDIyOCwgCisgICAgMTQ3LCAyNDAsIDE3NSwgNzAsIDY5LCA0LCAyMjgsIDE0OCwgMjQwLCAxNzcsIDcwLCA2OSwgNCwgMjI4LCA0NywgMjE5LCAKKyAgICAxMTMsIDcwLCA2OSwgNCwgMjI4LCA5NSwgMjI1LCAxMzYsIDcwLCA2OSwgNCwgMjI4LCA4OSwgMjI1LCAxNTEsIDcwLCA2OSwgCisgICAgNCwgMjI4LCA5MywgMjI1LCAxMTgsIDcwLCA2OSwgNCwgMjI4LCAyNywgMjI1LCAxNDIsIDcwLCA2OSwgNCwgMjI4LCA5OSwgCisgICAgMjI1LCAxNDMsIDcwLCA2OSwgNCwgMjI4LCAxNTEsIDIyNSwgMTIzLCA3MCwgNjksIDQsIDIyOCwgMTU0LCAyMjUsIDEyNywgCisgICAgNzAsIDY5LCA0LCAyMjgsIDY2LCAyMjQsIDE4MCwgNzAsIDY5LCA0LCAyMjgsIDI2LCAyMjQsIDE1MCwgNzAsIDY5LCA0LCAKKyAgICAyMjgsIDY5LCAyMjQsIDE3MSwgNzAsIDY5LCA0LCAyMjgsIDg0LCAyMjQsIDE1NCwgNzAsIDY5LCA0LCAyMjgsIDM2LCAyMDgsIAorICAgIDIxNCwgNzAsIDY5LCA0LCAyMjgsIDMzLCAyMDksIDcwLCA3MCwgNjksIDQsIDIyOCwgNjcsIDIwNywgMTQ4LCA3MCwgNjksIAorICAgIDQsIDIyOCwgNDUsIDIwOSwgMzQsIDcwLCA2OSwgNCwgMjI4LCAxMzMsIDIwOSwgMzksIDcwLCA2OSwgNCwgMjI4LCA3NCwgCisgICAgMjA4LCAxNjEsIDcwLCA2OSwgNCwgMjI4LCAxNDEsIDIwOCwgMTczLCA3MCwgNjksIDQsIDIyOCwgNTQsIDIyMywgMTE5LCAKKyAgICA3MCwgNjksIDQsIDIyOCwgMTYwLCAyMjMsIDEzOCwgNzAsIDY5LCA0LCAyMjgsIDQ4LCAyMjMsIDEwMSwgNzAsIDY5LCA0LCAKKyAgICAyMjgsIDEyMCwgMjIzLCAxMzAsIDcwLCA2OSwgNCwgMjI4LCAxNTgsIDIyMywgMTA4LCA3MCwgNjksIDE4LCAxMDIsIDcwLCAKKyAgICA2OSwgMTgsIDEwNSwgNzAsIDY5LCAxOCwgMTQyLCA3MCwgNjksIDE4LCAxMzksIDcwLCA2OSwgMTgsIDE2OCwgNzAsIDY5LCAKKyAgICAxOCwgMTg0LCA3MCwgNjksIDE4LCAxOTUsIDcwLCA2OSwgMTgsIDE5MywgNzAsIDY5LCAxOCwgMjAwLCA3MCwgNjksIDM2LCAKKyAgICA0MywgMjEyLCAxMTgsIDcwLCA2OSwgMzYsIDQzLCAyMTIsIDkzLCA3MCwgNjksIDM2LCA0MywgMjM4LCAyOCwgNzAsIDY5LCAKKyAgICAzNiwgNDMsIDIxMSwgMjQwLCA3MCwgNjksIDM2LCA0MywgMjEyLCA5OSwgMjExLCAyNDAsIDcwLCA2OSwgMzYsIDQzLCAyMzgsIAorICAgIDMwLCAyMTEsIDI0MCwgNzAsIDY5LCAzNiwgNDMsIDIyNiwgMjEyLCA4LCAxMSwgMjUyLCAxNzIsIDgsIDExLCAyNTAsIDM4LCAKKyAgICA4LCAxMSwgMjMyLCAxNzksIDgsIDExLCAyNDYsIDExNywgOCwgMTEsIDIwNywgNTksIDgsIDExLCAyMDUsIDEwOCwgOCwgMTEsIAorICAgIDIzOSwgMTMyLCA4LCAxMSwgMjEyLCAxOTQsIDgsIDExLCAyMDYsIDQ3LCA4LCAxMSwgMjMyLCA0NSwgOCwgMTEsIDIzMCwgCisgICAgMTA2LCA4LCAxMSwgMjI3LCAxMDQsIDgsIDExLCAyMjQsIDU0LCA4LCAxMSwgMjE3LCA3MCwgOCwgMTEsIDI1MiwgMjAwLCA4LCAKKyAgICAxMSwgMjQyLCAxNSwgOCwgMTEsIDIxNywgMTkxLCA4LCAxMSwgMjIwLCAxMiwgOCwgMTEsIDIxOSwgMTYsIDgsIDExLCAyMTUsIAorICAgIDIxMCwgOCwgMTEsIDIxMiwgMTE1LCA4LCAxMSwgMjEyLCAzNywgOCwgMTEsIDIzMSwgMTYzLCA4LCAxMSwgMjEyLCA0OSwgOCwgCisgICAgMTEsIDI0NiwgMTQwLCA4LCAxMSwgMjA1LCAxMTEsIDgsIDExLCAyNDAsIDk0LCA4LCAxMSwgMjQ1LCAyMiwgMjUwLCAzOCwgCisgICAgOCwgMTEsIDI0NSwgMjIsIDIyNCwgNTQsIDgsIDExLCAyNDUsIDIyLCAyNDIsIDE1LCA4LCAxMSwgMjQ1LCAyMiwgMjIwLCAKKyAgICAxMiwgOCwgMTEsIDc4LCAyNTAsIDM4LCA4LCAxMSwgNzgsIDIzMiwgMTc5LCA4LCAxMSwgNzgsIDIzOSwgNTAsIDgsIDExLCAKKyAgICA3OCwgMjM5LCAxMzIsIDgsIDExLCA3OCwgMjA2LCA0NywgOCwgMTEsIDc4LCAyMzIsIDQ1LCA4LCAxMSwgNzgsIDIzMCwgCisgICAgMTA2LCA4LCAxMSwgNzgsIDIyNywgMTA0LCA4LCAxMSwgNzgsIDIyNCwgNTQsIDgsIDExLCA3OCwgMjE3LCA3MCwgOCwgMTEsIAorICAgIDc4LCAyNTIsIDIwMCwgOCwgMTEsIDc4LCAyNDIsIDE1LCA4LCAxMSwgNzgsIDIxNywgMTkxLCA4LCAxMSwgNzgsIDIyMCwgCisgICAgMTIsIDgsIDExLCA3OCwgMjE1LCAyMTAsIDgsIDExLCA3OCwgMjEyLCAxMTUsIDgsIDExLCA3OCwgMjEyLCAzNywgOCwgMTEsIAorICAgIDc4LCAyMzEsIDE2MywgOCwgMTEsIDc4LCAyNDYsIDE0MCwgOCwgMTEsIDc4LCAyNDAsIDk0LCA4LCAxMSwgMjEyLCAxOTAsIAorICAgIDIzMiwgMTc5LCA4LCAxMSwgMjEyLCAxOTAsIDIzOSwgMTMyLCA4LCAxMSwgMjEyLCAxOTAsIDIwNiwgNDcsIDgsIDExLCAKKyAgICAyMTIsIDE5MCwgMjMwLCAxMDYsIDgsIDExLCAyMTIsIDE5MCwgMjI0LCA1NCwgOCwgMTEsIDIxMiwgMTkwLCAyMTcsIDcwLCAKKyAgICA4LCAxMSwgMjEyLCAxOTAsIDI1MiwgMjAwLCA4LCAxMSwgMjEyLCAxOTAsIDIxNywgMTkxLCA4LCAxMSwgMjEyLCAxOTAsIAorICAgIDIyMCwgMTIsIDgsIDExLCAyMTIsIDE5MCwgMjE1LCAyMTAsIDgsIDExLCAyMTIsIDE5MCwgMjMxLCAxNjMsIDgsIDExLCAKKyAgICAyMTIsIDE5MCwgMjQ2LCAxNDAsIDgsIDExLCAyMTIsIDE5MCwgMjQwLCA5NCwgOCwgMTEsIDIxMiwgMTkwLCAyNDUsIDIyLCAKKyAgICAyMjQsIDU0LCA4LCAxMSwgMjEyLCAxOTAsIDI0NSwgMjIsIDIyMCwgMTIsIDgsIDExLCAyMTMsIDIzMiwgMjUwLCAzOCwgOCwgCisgICAgMTEsIDIxMywgMjMyLCAyMzIsIDE3OSwgOCwgMTEsIDIxMywgMjMyLCAyMzksIDUwLCA4LCAxMSwgMjEzLCAyMzIsIDIzOSwgCisgICAgMTMyLCA4LCAxMSwgMjEzLCAyMzIsIDIxMiwgMTk0LCA4LCAxMSwgMjEzLCAyMzIsIDIwNiwgNDcsIDgsIDExLCAyMTMsIAorICAgIDIzMiwgMjMyLCA0NSwgOCwgMTEsIDIxMywgMjMyLCAyMjcsIDEwNCwgOCwgMTEsIDIxMywgMjMyLCAyMjQsIDU0LCA4LCAxMSwgCisgICAgMjEzLCAyMzIsIDIxNywgNzAsIDgsIDExLCAyMTMsIDIzMiwgMjUyLCAyMDAsIDgsIDExLCAyMTMsIDIzMiwgMjQyLCAxNSwgCisgICAgOCwgMTEsIDIxMywgMjMyLCAyMTcsIDE5MSwgOCwgMTEsIDIxMywgMjMyLCAyMjAsIDEyLCA4LCAxMSwgMjEzLCAyMzIsIAorICAgIDIxNSwgMjEwLCA4LCAxMSwgMjEzLCAyMzIsIDIxMiwgMTE1LCA4LCAxMSwgMjEzLCAyMzIsIDIxMiwgMzcsIDgsIDExLCAKKyAgICAyMTMsIDIzMiwgMjMxLCAxNjMsIDgsIDExLCAyMTMsIDIzMiwgMjQ2LCAxNDAsIDgsIDExLCAyMTMsIDIzMiwgMjA1LCAxMTEsIAorICAgIDgsIDExLCAyMTMsIDIzMiwgMjQwLCA5NCwgOCwgMTEsIDIxMywgMjMyLCAyNDUsIDIyLCAyNTAsIDM4LCA4LCAxMSwgMjEzLCAKKyAgICAyMzIsIDI0NSwgMjIsIDI0MiwgMTUsIDgsIDExLCAyMjksIDExMCwgMjUyLCAxNzIsIDgsIDExLCAyMjksIDExMCwgMjUwLCAKKyAgICAzOCwgOCwgMTEsIDIyOSwgMTEwLCAyMzIsIDE3OSwgOCwgMTEsIDIyOSwgMTEwLCAyNDYsIDExNywgOCwgMTEsIDIyOSwgCisgICAgMTEwLCAyMzksIDUwLCA4LCAxMSwgMjI5LCAxMTAsIDIwNywgNTksIDgsIDExLCAyMjksIDExMCwgMjA1LCAxMDgsIDgsIDExLCAKKyAgICAyMjksIDExMCwgMjM5LCAxMzIsIDgsIDExLCAyMjksIDExMCwgMjEyLCAxOTQsIDgsIDExLCAyMjksIDExMCwgMjA2LCA0NywgCisgICAgOCwgMTEsIDIyOSwgMTEwLCAyMzAsIDEwNiwgOCwgMTEsIDIyOSwgMTEwLCAyMjcsIDEwNCwgOCwgMTEsIDIyOSwgMTEwLCAKKyAgICAyMjQsIDU0LCA4LCAxMSwgMjI5LCAxMTAsIDIxNywgNzAsIDgsIDExLCAyMjksIDExMCwgMjUyLCAyMDAsIDgsIDExLCAyMjksIAorICAgIDExMCwgMjQyLCAxNSwgOCwgMTEsIDIyOSwgMTEwLCAyMTcsIDE5MSwgOCwgMTEsIDIyOSwgMTEwLCAyMjAsIDEyLCA4LCAxMSwgCisgICAgMjI5LCAxMTAsIDIxOSwgMTYsIDgsIDExLCAyMjksIDExMCwgMjE1LCAyMTAsIDgsIDExLCAyMjksIDExMCwgMjEyLCAxMTUsIAorICAgIDgsIDExLCAyMjksIDExMCwgMjEyLCAzNywgOCwgMTEsIDIyOSwgMTEwLCAyMzEsIDE2MywgOCwgMTEsIDIyOSwgMTEwLCAKKyAgICAyMTIsIDQ5LCA4LCAxMSwgMjI5LCAxMTAsIDI0NiwgMTQwLCA4LCAxMSwgMjI5LCAxMTAsIDIwNSwgMTExLCA4LCAxMSwgCisgICAgMjI5LCAxMTAsIDI0MCwgOTQsIDgsIDExLCAxNTksIDI1MCwgMzgsIDgsIDExLCAxNTksIDIzMiwgMTc5LCA4LCAxMSwgMTU5LCAKKyAgICAyNDYsIDExNywgOCwgMTEsIDE1OSwgMjA3LCA1OSwgOCwgMTEsIDE1OSwgMjA1LCAxMDgsIDgsIDExLCAxNTksIDIzOSwgCisgICAgMTMyLCA4LCAxMSwgMTU5LCAyMTIsIDE5NCwgOCwgMTEsIDE1OSwgMjA2LCA0NywgOCwgMTEsIDE1OSwgMjMwLCAxMDYsIDgsIAorICAgIDExLCAxNTksIDIyNywgMTA0LCA4LCAxMSwgMTU5LCAyMjQsIDU0LCA4LCAxMSwgMTU5LCAyMTcsIDcwLCA4LCAxMSwgMTU5LCAKKyAgICAyNTIsIDIwMCwgOCwgMTEsIDE1OSwgMjQyLCAxNSwgOCwgMTEsIDE1OSwgMjE3LCAxOTEsIDgsIDExLCAxNTksIDIyMCwgMTIsIAorICAgIDgsIDExLCAxNTksIDIxOSwgMTYsIDgsIDExLCAxNTksIDIxNSwgMjEwLCA4LCAxMSwgMTU5LCAyMTIsIDExNSwgOCwgMTEsIAorICAgIDE1OSwgMjEyLCAzNywgOCwgMTEsIDE1OSwgMjMxLCAxNjMsIDgsIDExLCAxNTksIDIxMiwgNDksIDgsIDExLCAxNTksIDI0NiwgCisgICAgMTQwLCA4LCAxMSwgMTU5LCAyMDUsIDExMSwgOCwgMTEsIDE1OSwgMjQwLCA5NCwgOCwgMTEsIDIyMiwgMTMzLCA4MCwgMiwgCisgICAgMTQwLCAyLCAyMTIsIDE1MywgOCwgMTEsIDIyMiwgMTMzLCAxNDAsIDIsIDI0NiwgMTE3LCAyMjcsIDI0MSwgOTQsIDI0MywgCisgICAgMTE3LCAyMDcsIDksIDIyNywgMjQxLCA5NCwgMTg4LCAyMDcsIDksIDIyNywgMjQxLCA5NCwgMjA3LCAzNiwgMjA3LCA5LCAKKyAgICAyMjcsIDI0MSwgOTQsIDE0MywgMjA3LCA5LCAyMjcsIDI0MSwgOTQsIDIxOSwgMzIsIDI0MywgMjU1LCAyMjcsIDI0MSwgOTQsIAorICAgIDIzOSwgMjI3LCAyNDMsIDI1NSwgMjI3LCAyNDEsIDk0LCA1OSwgMjQzLCAyNTUsIDIyNywgMjQxLCA5NCwgMTE5LCA3MywgCisgICAgMjQ4LCA5MywgMjI3LCAyNDEsIDk0LCAxMTgsIDczLCAyNDgsIDkzLCAyMjcsIDI0MSwgOTQsIDEyOSwgNzMsIDI0OCwgOTMsIAorICAgIDIyNywgMjQxLCA5NCwgMjQxLCAxMjUsIDczLCAyNDgsIDkzLCAyMjcsIDI0MSwgOTQsIDI0MSwgMjA0LCA3MywgMjQ4LCA5MywgCisgICAgMjI3LCAyNDEsIDk0LCAyMTUsIDEwLCA3MywgMjQ4LCA5MywgMjI3LCAyNDEsIDk0LCAyMTYsIDIzLCA3MywgMjQ4LCA5MywgCisgICAgMjI3LCAyNDEsIDk0LCAyNDMsIDg4LCA3MywgMjQ4LCA5MywgMjI3LCAyNDEsIDk0LCAyMjQsIDE5NSwgNzMsIDI0OCwgOTMsIAorICAgIDIyNywgMjQxLCA5NCwgMTE5LCA3MywgMjUwLCAxNDEsIDIyNywgMjQxLCA5NCwgMTE4LCA3MywgMjUwLCAxNDEsIDIyNywgCisgICAgMjQxLCA5NCwgMTI5LCA3MywgMjUwLCAxNDEsIDIyNywgMjQxLCA5NCwgMjQxLCAxMjUsIDczLCAyNTAsIDE0MSwgMjI3LCAKKyAgICAyNDEsIDk0LCAyNDEsIDIwNCwgNzMsIDI1MCwgMTQxLCAyMjcsIDI0MSwgOTQsIDIxNSwgMTAsIDczLCAyNTAsIDE0MSwgCisgICAgMjI3LCAyNDEsIDk0LCAyMTYsIDIzLCA3MywgMjUwLCAxNDEsIDIyNywgMjQxLCA5NCwgMjQzLCA4OCwgNzMsIDI1MCwgMTQxLCAKKyAgICAyMjcsIDI0MSwgOTQsIDIyNCwgMTk1LCA3MywgMjUwLCAxNDEsIDIyNywgMjQxLCA5NCwgMTE5LCA3MywgMjQ3LCAyMzIsIAorICAgIDIyNywgMjQxLCA5NCwgMTE4LCA3MywgMjQ3LCAyMzIsIDIyNywgMjQxLCA5NCwgMTI5LCA3MywgMjQ3LCAyMzIsIDIyNywgCisgICAgMjQxLCA5NCwgMjQxLCAxMjUsIDczLCAyNDcsIDIzMiwgMjI3LCAyNDEsIDk0LCAyNDEsIDIwNCwgNzMsIDI0NywgMjMyLCAKKyAgICAyMjcsIDI0MSwgOTQsIDIxNSwgMTAsIDczLCAyNDcsIDIzMiwgMjI3LCAyNDEsIDk0LCAyMTYsIDIzLCA3MywgMjQ3LCAyMzIsIAorICAgIDIyNywgMjQxLCA5NCwgMjQzLCA4OCwgNzMsIDI0NywgMjMyLCAyMjcsIDI0MSwgOTQsIDIyNCwgMTk1LCA3MywgMjQ3LCAKKyAgICAyMzIsIDIyNywgMjQxLCA5NCwgMjIwLCAyMjEsIDIyNywgMjQxLCA5NCwgMjIyLCAxMjAsIDIyNywgMjQxLCA5NCwgMjUwLCAKKyAgICAxNDIsIDIyNywgMjQxLCA5NCwgMjQ4LCAxNSwgMjI3LCAyNDEsIDk0LCAyMTQsIDExMywgMjI3LCAyNDEsIDk0LCAyMTMsIAorICAgIDE1NiwgMjI3LCAyNDEsIDk0LCAyNTEsIDE3MSwgMjI3LCAyNDEsIDk0LCAyMDcsIDEsIDIyNywgMjQxLCA5NCwgMjMyLCAKKyAgICAxMTYsIDIyNywgMjQxLCA5NCwgMjUwLCAxNzYsIDE1MSwgOTQsIDE5NCwgMjUwLCAxNzYsIDE1MSwgOTQsIDIzOCwgMTIwLCAKKyAgICAxNTEsIDk0LCAyMzgsIDExOSwgMTUxLCA5NCwgMjM4LCAxMTgsIDE1MSwgOTQsIDIzOCwgMTE3LCAxNTEsIDk0LCAyMzgsIAorICAgIDExNiwgMTUxLCA5NCwgMjM4LCAxMTUsIDE1MSwgOTQsIDIzOCwgMTE0LCAxNTEsIDk0LCAyMzgsIDExMywgMTUxLCA5NCwgCisgICAgMjM4LCAxMTIsIDE1MSwgOTQsIDIzOCwgMTExLCAxNTEsIDk0LCAyMzgsIDExMCwgMTUxLCA5NCwgMjM4LCAxMDksIDE1MSwgCisgICAgOTQsIDIzOCwgMTA4LCAxNTEsIDk0LCAyMzgsIDEwNywgMTUxLCA5NCwgMjM4LCAxMDYsIDE1MSwgOTQsIDIzOCwgMTA1LCAKKyAgICAxNTEsIDk0LCAyMzgsIDEwNCwgMTUxLCA5NCwgMjM4LCAxMDMsIDE1MSwgOTQsIDIzOCwgMTAyLCAxNTEsIDk0LCAyMzgsIAorICAgIDEwMSwgMTUxLCA5NCwgMjM4LCAxMDAsIDE1MSwgOTQsIDIzOCwgOTksIDE1MSwgOTQsIDIzOCwgOTgsIDE1MSwgOTQsIDIzOCwgCisgICAgOTcsIDE1MSwgOTQsIDIzOCwgOTYsIDE1MSwgOTQsIDIzOCwgOTUsIDE1MSwgOTQsIDIzOCwgOTQsIDE1MSwgOTQsIDIzOCwgCisgICAgOTMsIDE1MSwgOTQsIDIzOCwgOTIsIDE1MSwgOTQsIDIzOCwgOTEsIDE1MSwgOTQsIDIzOCwgOTAsIDE1MSwgOTQsIDIzOCwgCisgICAgODksIDE1MSwgOTQsIDIzOCwgODgsIDE1MSwgOTQsIDIzOCwgODcsIDE1MSwgOTQsIDIzOCwgODYsIDE1MSwgOTQsIDIzOCwgCisgICAgODUsIDE1MSwgOTQsIDIzOCwgODQsIDE1MSwgOTQsIDIzOCwgODMsIDE1MSwgOTQsIDIzOCwgODIsIDE1MSwgOTQsIDIzOCwgCisgICAgODEsIDE1MSwgOTQsIDIzOCwgODAsIDE1MSwgOTQsIDIzOCwgNzksIDE1MSwgOTQsIDIzOCwgNzgsIDE1MSwgOTQsIDIzOCwgCisgICAgNzcsIDE1MSwgOTQsIDIzOCwgNzYsIDE1MSwgOTQsIDIzOCwgNzUsIDE1MSwgOTQsIDIzOCwgNzQsIDE1MSwgOTQsIDIzOCwgCisgICAgNzMsIDE1MSwgOTQsIDIzOCwgNzIsIDE1MSwgOTQsIDc5LCAyNTAsIDE3NiwgMTUxLCA5NCwgMjA5LCAyMSwgMTUxLCA5NCwgCisgICAgMjA5LCAyMCwgMTUxLCA5NCwgMjA5LCAxOSwgMTUxLCA5NCwgMjA5LCAxOCwgMTUxLCA5NCwgMjA5LCAxNywgMTUxLCA5NCwgCisgICAgMjA5LCAxNiwgMTUxLCA5NCwgMjA5LCAxNSwgMTUxLCA5NCwgMjA5LCAxNCwgMTUxLCA5NCwgMjA5LCAxMywgMTUxLCA5NCwgCisgICAgMjA5LCAxMiwgMTUxLCA5NCwgMjA5LCAxMSwgMTUxLCA5NCwgMjA5LCAxMCwgMTUxLCA5NCwgMjA5LCA5LCAxNTEsIDk0LCAKKyAgICAyMDksIDgsIDE1MSwgOTQsIDIwOSwgNywgMTUxLCA5NCwgMjA5LCA2LCAxNTEsIDk0LCAyMDksIDUsIDE1MSwgOTQsIDIwOSwgCisgICAgNCwgMTUxLCA5NCwgMjA5LCAzLCAxNTEsIDk0LCAyMDksIDIsIDE1MSwgOTQsIDIwOSwgMSwgMTUxLCA5NCwgMjA5LCAwLCAKKyAgICAxNTEsIDk0LCAyMDgsIDI1NSwgMTUxLCA5NCwgMjA4LCAyNTQsIDE1MSwgOTQsIDIwOCwgMjUzLCAxNTEsIDk0LCAyMDgsIAorICAgIDI1MiwgMTUxLCA5NCwgMjA4LCAyNTEsIDE1MSwgOTQsIDIwOCwgMjUwLCAxNTEsIDk0LCAyMDgsIDI0OSwgMTUxLCA5NCwgCisgICAgMjA4LCAyNDgsIDE1MSwgOTQsIDIwOCwgMjQ3LCAxNTEsIDk0LCAyMDgsIDI0NiwgMTUxLCA5NCwgMjA4LCAyNDUsIDE1MSwgCisgICAgOTQsIDIwOCwgMjQ0LCAxNTEsIDk0LCAyMDgsIDI0MywgMTUxLCA5NCwgMjA4LCAyNDIsIDE1MSwgOTQsIDIwOCwgMjQxLCAKKyAgICAxNTEsIDk0LCAyMDgsIDI0MCwgMTUxLCA5NCwgMjA4LCAyMzksIDE1MSwgOTQsIDIwOCwgMjM4LCAxNTEsIDk0LCAyMDgsIAorICAgIDIzNywgMTUxLCA5NCwgMjA4LCAyMzYsIDE1MSwgOTQsIDIwOCwgMjM1LCAxNTEsIDk0LCAyMDgsIDIzNCwgMTUxLCA5NCwgCisgICAgMjA4LCAyMzMsIDE1MSwgOTQsIDIwOCwgMjMyLCAxNTEsIDk0LCAyMDgsIDIzMSwgMTUxLCA5NCwgMjA4LCAyMzAsIDE1MSwgCisgICAgOTQsIDIwOCwgMjI5LCAyMjAsIDIzMCwgMTkxLCAyNTAsIDE3NiwgMjIwLCAyMzAsIDE5MSwgMjUzLCAxNSwgNzMsIDIxNCwgCisgICAgMTUwLCAyMjAsIDIzMCwgMTkxLCAxMTgsIDczLCAyMTQsIDE1MCwgMjIwLCAyMzAsIDE5MSwgMTI5LCA3MywgMjE0LCAxNTAsIAorICAgIDIyMCwgMjMwLCAxOTEsIDI0MSwgMTI1LCA3MywgMjE0LCAxNTAsIDIyMCwgMjMwLCAxOTEsIDI0MSwgMjA0LCA3MywgMjE0LCAKKyAgICAxNTAsIDIyMCwgMjMwLCAxOTEsIDIxNSwgMTAsIDczLCAyMTQsIDE1MCwgMjIwLCAyMzAsIDE5MSwgMjE2LCAyMywgNzMsIAorICAgIDIxNCwgMTUwLCAyMjAsIDIzMCwgMTkxLCAyNDMsIDg4LCA3MywgMjE0LCAxNTAsIDIyMCwgMjMwLCAxOTEsIDIyNCwgMTk1LCAKKyAgICA3MywgMjE0LCAxNTAsIDIyMCwgMjMwLCAxOTEsIDIxMiwgOTksIDczLCAyMTQsIDE1MCwgMjIwLCAyMzAsIDE5MSwgMjMyLCAKKyAgICAxOTgsIDczLCAyMTQsIDE1MCwgMjIwLCAyMzAsIDE5MSwgMjMxLCA1NywgNzMsIDIxNCwgMTUwLCAyMjAsIDIzMCwgMTkxLCAKKyAgICAyMTksIDE5OCwgNzMsIDIxNCwgMTUwLCAyMjAsIDIzMCwgMTkxLCAyMzEsIDEwNywgNzMsIDIxNCwgMTUwLCAyMjAsIDIzMCwgCisgICAgMTkxLCAyNTMsIDE1LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMTE4LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIAorICAgIDE5MSwgMTI5LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMjQxLCAxMjUsIDczLCAyMzksIDU4LCAyMjAsIDIzMCwgCisgICAgMTkxLCAyNDEsIDIwNCwgNzMsIDIzOSwgNTgsIDIyMCwgMjMwLCAxOTEsIDIxNSwgMTAsIDczLCAyMzksIDU4LCAyMjAsIAorICAgIDIzMCwgMTkxLCAyMTYsIDIzLCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMjQzLCA4OCwgNzMsIDIzOSwgNTgsIDIyMCwgCisgICAgMjMwLCAxOTEsIDIyNCwgMTk1LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMjEyLCA5OSwgNzMsIDIzOSwgNTgsIAorICAgIDIyMCwgMjMwLCAxOTEsIDIzMiwgMTk4LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMjMxLCA1NywgNzMsIDIzOSwgCisgICAgNTgsIDIyMCwgMjMwLCAxOTEsIDIxOSwgMTk4LCA3MywgMjM5LCA1OCwgMjIwLCAyMzAsIDE5MSwgMjMxLCAxMDcsIDczLCAKKyAgICAyMzksIDU4LCAyMjAsIDIzMCwgMTkxLCAyMTksIDMyLCAyMzIsIDExNiwgMjIwLCAyMzAsIDE5MSwgMjUzLCAxNSwgNzMsIAorICAgIDI0NSwgMTU1LCAyMjAsIDIzMCwgMTkxLCAxMTgsIDczLCAyNDUsIDE1NSwgMjIwLCAyMzAsIDE5MSwgMTI5LCA3MywgMjQ1LCAKKyAgICAxNTUsIDIyMCwgMjMwLCAxOTEsIDI0MSwgMTI1LCA3MywgMjQ1LCAxNTUsIDIyMCwgMjMwLCAxOTEsIDI0MSwgMjA0LCA3MywgCisgICAgMjQ1LCAxNTUsIDIyMCwgMjMwLCAxOTEsIDIxNSwgMTAsIDczLCAyNDUsIDE1NSwgMjIwLCAyMzAsIDE5MSwgMjE2LCAyMywgCisgICAgNzMsIDI0NSwgMTU1LCAyMjAsIDIzMCwgMTkxLCAyNDMsIDg4LCA3MywgMjQ1LCAxNTUsIDIyMCwgMjMwLCAxOTEsIDIyNCwgCisgICAgMTk1LCA3MywgMjQ1LCAxNTUsIDIyMCwgMjMwLCAxOTEsIDIxMiwgOTksIDczLCAyNDUsIDE1NSwgMjIwLCAyMzAsIDE5MSwgCisgICAgMjMyLCAxOTgsIDczLCAyNDUsIDE1NSwgMjIwLCAyMzAsIDE5MSwgMjMxLCA1NywgNzMsIDI0NSwgMTU1LCAyMjAsIDIzMCwgCisgICAgMTkxLCAyMTksIDE5OCwgNzMsIDI0NSwgMTU1LCAyMjAsIDIzMCwgMTkxLCAyMzEsIDEwNywgNzMsIDI0NSwgMTU1LCAyMjAsIAorICAgIDIzMCwgMTkxLCA2MCwgMjMyLCAxMTYsIDIyMCwgMjMwLCAxOTEsIDI1MywgMTUsIDczLCAyNDcsIDE3OCwgMjIwLCAyMzAsIAorICAgIDE5MSwgMTE4LCA3MywgMjQ3LCAxNzgsIDIyMCwgMjMwLCAxOTEsIDEyOSwgNzMsIDI0NywgMTc4LCAyMjAsIDIzMCwgMTkxLCAKKyAgICAyNDEsIDEyNSwgNzMsIDI0NywgMTc4LCAyMjAsIDIzMCwgMTkxLCAyNDEsIDIwNCwgNzMsIDI0NywgMTc4LCAyMjAsIDIzMCwgCisgICAgMTkxLCAyMTUsIDEwLCA3MywgMjQ3LCAxNzgsIDIyMCwgMjMwLCAxOTEsIDIxNiwgMjMsIDczLCAyNDcsIDE3OCwgMjIwLCAKKyAgICAyMzAsIDE5MSwgMjQzLCA4OCwgNzMsIDI0NywgMTc4LCAyMjAsIDIzMCwgMTkxLCAyMjQsIDE5NSwgNzMsIDI0NywgMTc4LCAKKyAgICAyMjAsIDIzMCwgMTkxLCAyMTIsIDk5LCA3MywgMjQ3LCAxNzgsIDIyMCwgMjMwLCAxOTEsIDIzMiwgMTk4LCA3MywgMjQ3LCAKKyAgICAxNzgsIDIyMCwgMjMwLCAxOTEsIDIzMSwgNTcsIDczLCAyNDcsIDE3OCwgMjIwLCAyMzAsIDE5MSwgMjE5LCAxOTgsIDczLCAKKyAgICAyNDcsIDE3OCwgMjIwLCAyMzAsIDE5MSwgMjMxLCAxMDcsIDczLCAyNDcsIDE3OCwgMjIwLCAyMzAsIDE5MSwgNTksIDIzMiwgCisgICAgMTE2LCAyMjAsIDIzMCwgMTkxLCAyNDEsIDE0OSwgMjIwLCAyMzAsIDE5MSwgMjExLCAxNSwgMjIwLCAyMzAsIDE5MSwgMjExLCAKKyAgICA0LCAyMjAsIDIzMCwgMTkxLCAyMTEsIDEsIDIyMCwgMjMwLCAxOTEsIDIxMSwgMCwgMjIwLCAyMzAsIDE5MSwgMjEwLCAyNTUsIAorICAgIDIyMCwgMjMwLCAxOTEsIDIxMCwgMjU0LCAyMjAsIDIzMCwgMTkxLCAyMTAsIDI1MywgMjIwLCAyMzAsIDE5MSwgMjEwLCAKKyAgICAyNTIsIDIyMCwgMjMwLCAxOTEsIDIxMCwgMjUxLCAyMjAsIDIzMCwgMTkxLCAyMTEsIDE0LCAyMjAsIDIzMCwgMTkxLCAyMTEsIAorICAgIDEzLCAyMjAsIDIzMCwgMTkxLCAyMTEsIDEyLCAyMjAsIDIzMCwgMTkxLCAyMTEsIDExLCAyMjAsIDIzMCwgMTkxLCAyMTEsIAorICAgIDEwLCAyMjAsIDIzMCwgMTkxLCAyMTEsIDksIDIyMCwgMjMwLCAxOTEsIDIxMSwgOCwgMjIwLCAyMzAsIDE5MSwgMjExLCA3LCAKKyAgICAyMjAsIDIzMCwgMTkxLCAyMTEsIDYsIDIyMCwgMjMwLCAxOTEsIDIxMSwgNSwgMjIwLCAyMzAsIDE5MSwgMjExLCAzLCAyMjAsIAorICAgIDIzMCwgMTkxLCAyMTEsIDIsIDE4LCAyMDUsIDg2LCAyNDEsIDgyLCAyMTMsIDI1MSwgMTgsIDIwNSwgODYsIDI0NywgMTU1LCAKKyAgICAxOCwgMTE5LCAyNDcsIDE1NSwgMTgsIDExOCwgMjQ3LCAxNTUsIDE4LCAxMjksIDI0NywgMTU1LCAxOCwgMjQxLCAxMjUsIAorICAgIDI0NywgMTU1LCAxOCwgMjQxLCAyMDQsIDI0NywgMTU1LCAxOCwgMjE1LCAxMCwgMjQ3LCAxNTUsIDE4LCAyMTYsIDIzLCAKKyAgICAyNDcsIDE1NSwgMTgsIDI0MywgODgsIDI0NywgMTU1LCAxOCwgMjI0LCAxOTUsIDI0NywgMTU1LCAyNDUsIDExMSwgMzksIAorICAgIDM4LCAxOCwgMjA1LCA4NSwgMjQ1LCAxMTEsIDE3MCwgMzksIDM4LCAxOCwgMjA1LCA4NSwgOTcsIDcsIDYsIDEsIDYyLCA5NywgCisgICAgNywgNiwgMSwgMjUxLCAxNTAsIDk3LCA3LCA2LCAxLCAyNDksIDM0LCA5NywgNywgNiwgMSwgMjQ2LCAyNDAsIDk3LCA3LCA2LCAKKyAgICAxLCA3NSwgOTcsIDcsIDYsIDEsIDI0MiwgMTM5LCA5NywgNywgNiwgMSwgMjQxLCA1NSwgOTcsIDcsIDYsIDEsIDIzOSwgCisgICAgMTU1LCA5NywgNywgNiwgMSwgNzQsIDk3LCA3LCA2LCAxLCAyMzIsIDIwMywgOTcsIDcsIDYsIDEsIDIzMiwgNzYsIDk3LCA3LCAKKyAgICA2LCAxLCAxNDksIDk3LCA3LCA2LCAxLCAyMjksIDI4LCA5NywgNywgNiwgMSwgMjI2LCAzMywgOTcsIDcsIDYsIDEsIDc2LCAKKyAgICA5NywgNywgNiwgMSwgMjIyLCA2NywgOTcsIDcsIDYsIDEsIDIyMCwgMjcsIDk3LCA3LCA2LCAxLCAxMzcsIDk3LCA3LCA2LCAKKyAgICAxLCAxODIsIDk3LCA3LCA2LCAxLCAyMTMsIDEwLCA5NywgNywgNiwgMSwgNzEsIDk3LCA3LCA2LCAxLCAyMDksIDE0OCwgOTcsIAorICAgIDcsIDYsIDEsIDIwNywgMTI5LCA5NywgNywgNiwgMSwgMjA2LCAxOTUsIDk3LCA3LCA2LCAxLCAyMDYsIDEyMywgOTcsIDcsIAorICAgIDYsIDEsIDIwNSwgMTU5LCAyMTEsIDkzLCAyMTUsIDIwNCwgMjQ5LCAxMzMsIDcsIDYsIDEsIDE4MiwgMzksIDM1LCA3LCA2LCAKKyAgICAxLCAyNDksIDM0LCAzOSwgMzUsIDcsIDYsIDEsIDEzNywgMzksIDI0OCwgMTQ5LCAzOSwgMjA2LCAxOTcsIDk4LCA3LCA2LCAKKyAgICAxLCA2MiwgOTgsIDcsIDYsIDEsIDI1MSwgMTUwLCA5OCwgNywgNiwgMSwgMjQ5LCAzNCwgOTgsIDcsIDYsIDEsIDI0NiwgCisgICAgMjQwLCA5OCwgNywgNiwgMSwgNzUsIDk4LCA3LCA2LCAxLCAyNDIsIDEzOSwgOTgsIDcsIDYsIDEsIDI0MSwgNTUsIDk4LCA3LCAKKyAgICA2LCAxLCAyMzksIDE1NSwgOTgsIDcsIDYsIDEsIDc0LCA5OCwgNywgNiwgMSwgMjMyLCAyMDMsIDk4LCA3LCA2LCAxLCAyMzIsIAorICAgIDc2LCA5OCwgNywgNiwgMSwgMTQ5LCA5OCwgNywgNiwgMSwgMjI5LCAyOCwgOTgsIDcsIDYsIDEsIDIyNiwgMzMsIDk4LCA3LCAKKyAgICA2LCAxLCA3NiwgOTgsIDcsIDYsIDEsIDIyMiwgNjcsIDk4LCA3LCA2LCAxLCAyMjAsIDI3LCA5OCwgNywgNiwgMSwgMTM3LCAKKyAgICA5OCwgNywgNiwgMSwgMTgyLCA5OCwgNywgNiwgMSwgMjEzLCAxMCwgOTgsIDcsIDYsIDEsIDcxLCA5OCwgNywgNiwgMSwgCisgICAgMjA5LCAxNDgsIDk4LCA3LCA2LCAxLCAyMDcsIDEyOSwgOTgsIDcsIDYsIDEsIDIwNiwgMTk1LCA5OCwgNywgNiwgMSwgMjA2LCAKKyAgICAxMjMsIDk4LCA3LCA2LCAxLCAyMDUsIDE1OSwgOTgsIDIzOCwgMTcsIDk4LCAyMjYsIDU3LCA5OCwgMjE3LCA4OCwgOTgsIAorICAgIDIxNCwgOTksIDk4LCAyMjAsIDE1NSwgOTgsIDIwNywgNTIsIDE3MCwgMzksIDcsIDYsIDEsIDYyLCAxNzAsIDM5LCA3LCA2LCAKKyAgICAxLCAyNTEsIDE1MCwgMTcwLCAzOSwgNywgNiwgMSwgMjQ5LCAzNCwgMTcwLCAzOSwgNywgNiwgMSwgMjQ2LCAyNDAsIDE3MCwgCisgICAgMzksIDcsIDYsIDEsIDc1LCAxNzAsIDM5LCA3LCA2LCAxLCAyNDIsIDEzOSwgMTcwLCAzOSwgNywgNiwgMSwgMjQxLCA1NSwgCisgICAgMTcwLCAzOSwgNywgNiwgMSwgMjM5LCAxNTUsIDE3MCwgMzksIDcsIDYsIDEsIDc0LCAxNzAsIDM5LCA3LCA2LCAxLCAyMzIsIAorICAgIDIwMywgMTcwLCAzOSwgNywgNiwgMSwgMjMyLCA3NiwgMTcwLCAzOSwgNywgNiwgMSwgMTQ5LCAxNzAsIDM5LCA3LCA2LCAxLCAKKyAgICAyMjksIDI4LCAxNzAsIDM5LCA3LCA2LCAxLCAyMjYsIDMzLCAxNzAsIDM5LCA3LCA2LCAxLCA3NiwgMTcwLCAzOSwgNywgNiwgCisgICAgMSwgMjIyLCA2NywgMTcwLCAzOSwgNywgNiwgMSwgMjIwLCAyNywgMTcwLCAzOSwgNywgNiwgMSwgMTM3LCAxNzAsIDM5LCA3LCAKKyAgICA2LCAxLCAxODIsIDE3MCwgMzksIDcsIDYsIDEsIDIxMywgMTAsIDE3MCwgMzksIDcsIDYsIDEsIDcxLCAxNzAsIDM5LCA3LCAKKyAgICA2LCAxLCAyMDksIDE0OCwgMTcwLCAzOSwgNywgNiwgMSwgMjA3LCAxMjksIDE3MCwgMzksIDcsIDYsIDEsIDIwNiwgMTk1LCAKKyAgICAxNzAsIDM5LCA3LCA2LCAxLCAyMDYsIDEyMywgMTcwLCAzOSwgNywgNiwgMSwgMjA1LCAxNTksIDIxOSwgODEsIDIyNywgCisgICAgMTI1LCA1MywgMjE5LCA4MSwgMjI3LCAxMjIsIDUzLCAxNzAsIDk4LCA3LCA2LCAxLCA2MiwgMTcwLCA5OCwgNywgNiwgMSwgCisgICAgMjUxLCAxNTAsIDE3MCwgOTgsIDcsIDYsIDEsIDI0OSwgMzQsIDE3MCwgOTgsIDcsIDYsIDEsIDI0NiwgMjQwLCAxNzAsIDk4LCAKKyAgICA3LCA2LCAxLCA3NSwgMTcwLCA5OCwgNywgNiwgMSwgMjQyLCAxMzksIDE3MCwgOTgsIDcsIDYsIDEsIDI0MSwgNTUsIDE3MCwgCisgICAgOTgsIDcsIDYsIDEsIDIzOSwgMTU1LCAxNzAsIDk4LCA3LCA2LCAxLCA3NCwgMTcwLCA5OCwgNywgNiwgMSwgMjMyLCAyMDMsIAorICAgIDE3MCwgOTgsIDcsIDYsIDEsIDIzMiwgNzYsIDE3MCwgOTgsIDcsIDYsIDEsIDE0OSwgMTcwLCA5OCwgNywgNiwgMSwgMjI5LCAKKyAgICAyOCwgMTcwLCA5OCwgNywgNiwgMSwgMjI2LCAzMywgMTcwLCA5OCwgNywgNiwgMSwgNzYsIDE3MCwgOTgsIDcsIDYsIDEsIAorICAgIDIyMiwgNjcsIDE3MCwgOTgsIDcsIDYsIDEsIDIyMCwgMjcsIDE3MCwgOTgsIDcsIDYsIDEsIDEzNywgMTcwLCA5OCwgNywgNiwgCisgICAgMSwgMTgyLCAxNzAsIDk4LCA3LCA2LCAxLCAyMTMsIDEwLCAxNzAsIDk4LCA3LCA2LCAxLCA3MSwgMTcwLCA5OCwgNywgNiwgCisgICAgMSwgMjA5LCAxNDgsIDE3MCwgOTgsIDcsIDYsIDEsIDIwNywgMTI5LCAxNzAsIDk4LCA3LCA2LCAxLCAyMDYsIDE5NSwgMTcwLCAKKyAgICA5OCwgNywgNiwgMSwgMjA2LCAxMjMsIDE3MCwgOTgsIDcsIDYsIDEsIDIwNSwgMTU5LCAyNDcsIDU3LCAxNzAsIDk4LCA3LCAKKyAgICA2LCAxLCAyMjIsIDY3LCAxNzAsIDk4LCAyMzcsIDE4MywgMTcwLCA5OCwgMTc5LCAxNzAsIDk4LCAyMTcsIDE5OSwgMTcwLCAKKyAgICA5OCwgMjUzLCAxMTUsIDE3MCwgOTgsIDIwNywgNTIsIDQ5LCAyNDUsIDcwLCA5OCwgMjQ3LCAyMTgsIDk4LCAyNDcsIDEwMSwgCisgICAgOTgsIDI0MSwgMTA3LCA5OCwgMjM3LCAxNzQsIDk4LCAyMjUsIDg3LCA5OCwgMjI1LCA3OSwgOTgsIDIyMiwgMTg1LCA5OCwgCisgICAgMjE0LCAxNjksIDk4LCAxMjAsIDIsIDI0MiwgMTY4LCA4MywgOTgsIDIwOCwgMTUxLCAyMTksIDI0LCAyMzMsIDUwLCAxNiwgCisgICAgMSwgNjIsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyNTEsIDE1MCwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDI0OSwgCisgICAgMzQsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyNDYsIDI0MCwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDc1LCAyMTksIAorICAgIDI0LCAyMzMsIDUwLCAxNiwgMSwgMjQyLCAxMzksIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyNDEsIDU1LCAyMTksIDI0LCAKKyAgICAyMzMsIDUwLCAxNiwgMSwgMjM5LCAxNTUsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCA3NCwgMjE5LCAyNCwgMjMzLCA1MCwgCisgICAgMTYsIDEsIDIzMiwgMjAzLCAyMTksIDI0LCAyMzMsIDUwLCAxNiwgMSwgMjMyLCA3NiwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIAorICAgIDEsIDE0OSwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDIyOSwgMjgsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyMjYsIAorICAgIDMzLCAyMTksIDI0LCAyMzMsIDUwLCAxNiwgMSwgNzYsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyMjIsIDY3LCAyMTksIAorICAgIDI0LCAyMzMsIDUwLCAxNiwgMSwgMjIwLCAyNywgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDEzNywgMjE5LCAyNCwgMjMzLCAKKyAgICA1MCwgMTYsIDEsIDE4MiwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDIxMywgMTAsIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAKKyAgICAxLCA3MSwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDIwOSwgMTQ4LCAyMTksIDI0LCAyMzMsIDUwLCAxNiwgMSwgMjA3LCAKKyAgICAxMjksIDIxOSwgMjQsIDIzMywgNTAsIDE2LCAxLCAyMDYsIDE5NSwgMjE5LCAyNCwgMjMzLCA1MCwgMTYsIDEsIDIwNiwgCisgICAgMTIzLCAyMTksIDI0LCAyMzMsIDUwLCAxNiwgMSwgMjA1LCAxNTksIDQ5LCAxNjEsIDIzOCwgMTQ0LCA5OCwgNjQsIDIzMSwgCisgICAgNDEsIDk4LCA2NCwgMjE3LCAxOTksIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTE5LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIAorICAgIDEyMywgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxMzEsIDk4LCA2NCwgMjQ2LCA5LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIAorICAgIDEzOCwgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxMjUsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgOTcsIDk4LCAxMCwgMjA5LCAKKyAgICAyMjAsIDIzNSwgMTI0LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEzNywgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxMTEsIAorICAgIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTA0LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDExMywgOTgsIDEwLCAyMDksIDIyMCwgCisgICAgMjM1LCAxMzQsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTIwLCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEzNiwgOTgsIDEwLCAKKyAgICAyMDksIDIyMCwgMjM1LCAxMTIsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTM1LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIAorICAgIDk4LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEwMywgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCA5NiwgOTgsIDEwLCAyMDksIAorICAgIDIyMCwgMjM1LCAxMjYsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTI4LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEwNiwgCisgICAgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxMTcsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTE1LCA5OCwgMTAsIDIwOSwgMjIwLCAKKyAgICAyMzUsIDE0MSwgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxNDAsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgOTQsIDk4LCAxMCwgCisgICAgMjA5LCAyMjAsIDIzNSwgMTIxLCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEzOSwgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAKKyAgICAxMzAsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTE2LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDk1LCA5OCwgMTAsIDIwOSwgCisgICAgMjIwLCAyMzUsIDExOCwgOTgsIDEwLCAyMDksIDIyMCwgMjM1LCAxMDAsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgOTksIDk4LCAKKyAgICAxMCwgMjA5LCAyMjAsIDIzNSwgMTI5LCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEwNywgOTgsIDEwLCAyMDksIDIyMCwgCisgICAgMjM1LCAxMDksIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTEwLCA5OCwgMTAsIDIwOSwgMjIwLCAyMzUsIDEwMiwgOTgsIDEwLCAKKyAgICAyMDksIDIyMCwgMjM1LCAxMzMsIDk4LCAxMCwgMjA5LCAyMjAsIDIzNSwgMTI3LCAyMTEsIDkzLCAyMTUsIDIwNCwgMjQ5LCAKKyAgICAxMzMsIDEwLCAyMDksIDIyMCwgMjM1LCAxMDgsIDIxMSwgOTMsIDIxNSwgMjA0LCAyNDksIDEzMywgMTAsIDIwOSwgMjIwLCAKKyAgICAyMzUsIDE0MCwgMjExLCA5MywgMjE1LCAyMDQsIDI0OSwgMTMzLCAxMCwgMjA5LCAyMjAsIDIzNSwgMTM4LCAyMTEsIDkzLCAKKyAgICAyMTUsIDIwNCwgMjQ5LCAxMzMsIDEwLCAyMDksIDIyMCwgMjM1LCAxMjIsIDIxMSwgOTMsIDIxNSwgMjA0LCAyNDksIDEzMywgCisgICAgMTAsIDIwOSwgMjIwLCAyMzUsIDEwNSwgMjExLCA5MywgMjE1LCAyMDQsIDI0OSwgMTMzLCAxMCwgMjA5LCAyMjAsIDIzNSwgCisgICAgMTE4LCAyMTEsIDkzLCAyMTUsIDIwNCwgMjQ5LCAxMzMsIDEwLCAyMDksIDIyMCwgMjM1LCAxMDEsIDIxMSwgOTMsIDIxNSwgCisgICAgMjA0LCAyNDksIDEzMywgMTAsIDIwOSwgMjIwLCAyMzUsIDEzMiwgMjExLCA5MywgMjE1LCAyMDQsIDI0OSwgMTMzLCAxMCwgCisgICAgMjA5LCAyMjAsIDIzNSwgMTE0LCAzOSwgMTc1LCAyNTIsIDI1MCwgMzksIDE3NSwgMjUzLCAxOSwgMjQ2LCAyNTEsIDI0MSwgCisgICAgMTYwLCAyNDcsIDE5MiwgMjA5LCAyMzgsIDIyNCwgMjEwLCAyLCAyMTQsIDIzLCAyMTMsIDE0OSwgMTMxLCAyMjYsIDEyNywgCisgICAgMjEzLCAxNDgsIDI0NywgMjIyLCAyNTEsIDIwMCwgMjQzLCAyMTMsIDIxMywgMTQ3LCAxMzEsIDI0OSwgOTAsIDIxOSwgODIsIAorICAgIDI0OSwgMTE2LCAyNTEsIDIwMCwgMjI0LCAyMDksIDIwNywgNzAsIDIwNywgNjQsIDIwOCwgMTY1LCAyMjYsIDIxNywgMjA3LCAKKyAgICA1NCwgMjQzLCAxMjEsIDI0MCwgMjYsIDI0MiwgMTgyLCAyNDMsIDEyMSwgMjQwLCAyNiwgMjUyLCAxMjgsIDI0MywgMTIxLCAKKyAgICAyNDAsIDI2LCAyNTEsIDIxOCwgMjQwLCAyNiwgMiwgMjI3LCA3NSwgMTg2LCAyMjYsIDE0NSwgOTMsIDIwNywgNTYsIDI0NywgCisgICAgNjYsIDIyNiwgMTQ1LCA5MywgMjQxLCAyMTUsIDIxOSwgMjA1LCAyMjYsIDE0NSwgOTMsIDIwNywgNTYsIDI0MCwgNTcsIAorICAgIDIyNiwgMTQ1LCA5MywgMjQxLCA4MiwgMjI2LCAxNDUsIDkzLCAyMDcsIDgyLCAyNDAsIDU3LCAyMjYsIDE0NSwgOTMsIDIzMCwgCisgICAgODEsIDIxOSwgMjA1LCAyMjYsIDE0NSwgOTMsIDIwNywgODIsIDI0NywgNjYsIDIyNiwgMTQ1LCA5MywgMjQ3LCA2NiwgMjI2LCAKKyAgICAxNDQsIDE4NiwgMjI2LCAxNDUsIDIsIDI0MiwgNjcsIDI0MSwgMjE1LCAyMTksIDIwNSwgMjI2LCAxNDUsIDIsIDI0MiwgNjcsIAorICAgIDIzMCwgODEsIDIxOSwgMjA1LCAyMjYsIDE0NSwgMiwgMjQyLCA2NywgMjQxLCA4MiwgMjI2LCAxNDUsIDIsIDI0MiwgNjcsIAorICAgIDIxMywgMTU1LCAyLCAyNDIsIDY3LCAyNDAsIDI0LCAyMTQsIDI2LCAyMTUsIDE0OSwgMjE0LCAyNiwgMjEyLCAyOSwgNjAsIAorICAgIDI0MywgMjQ0LCA1OSwgMjEzLCAxNTQsIDU5LCAyMTMsIDE1NSwgMiwgNSwgMjQ3LCAxODMsIDU5LCAyMTMsIDE1NSwgMjUwLCAKKyAgICAzNSwgMjQ3LCAxODMsIDU5LCAyMTMsIDE1NSwgMjUwLCAzNSwgMjQ3LCAxODQsIDIsIDIxOSwgODMsIDI0NywgMTg0LCAyLCAKKyAgICAyMTksIDgzLCAyNDcsIDE4NCwgMiwgMjE0LCAxOTksIDI0NywgMTg0LCAyLCAyMjksIDIyMCwgMjQ3LCAxODQsIDIsIDIxMSwgCisgICAgOTQsIDI0MSwgMTYxLCAyMDcsIDEwLCAyNDksIDE4OCwgMjQyLCA2NywgMjQ4LCA2NCwgMjE3LCA3MiwgMjQyLCAxNzYsIAorICAgIDIxMSwgNjEsIDI0NiwgMywgMjExLCA2MSwgMjIyLCAxOSwgMjExLCA2MSwgMjQ4LCAyNTAsIDIzOCwgNjMsIDIyMSwgMTMzLCAKKyAgICAyMTAsIDE2MCwgMjQ4LCA2NywgMjQ5LCAxOTAsIDIxOCwgMTAxLCAyMzksIDEwLCAyMTMsIDE1MiwgMjQ5LCAxOTAsIDI0MywgCisgICAgMTI1LCA3MywgMjI3LCAyMzAsIDI0MywgMTI1LCA3MywgMjE4LCAyMDMsIDIzOSwgMzYsIDI0MSwgMTI1LCAyMzAsIDU0LCAKKyAgICAyNDcsIDE4MiwgMjI3LCAyMDMsIDIzMCwgNTMsIDI0MiwgNTEsIDIzMCwgNTMsIDIzMCwgNTQsIDI0MSwgMTY3LCAyMzMsIAorICAgIDY5LCAyMDcsIDksIDIyNiwgNjYsIDIxMSwgMTIyLCAyNTEsIDE4MywgMjM5LCAyNDMsIDIyNywgOTIsIDIwNywgNjgsIDIxMiwgCisgICAgMTY5LCAyMzAsIDIzLCAyNTAsIDEzNywgMjIxLCA2LCAyMTksIDMyLCAyNTIsIDUwLCAyMzksIDIyNywgMjUyLCA1MCwgMjIxLCAKKyAgICAxNzAsIDIyMSwgMTcxLCAyNDgsIDY4LCAyMTMsIDIzNiwgMjM5LCAxMTYsIDIxNCwgMjI5LCA3MywgMjIwLCAyNDIsIDIyNywgCisgICAgMTE1LCAyMjIsIDE2NiwgMjQ5LCAxNzMsIDIyMCwgMTY2LCAyMzAsIDM0LCAyMTgsIDIwNCwgMjQ3LCA3MiwgMjE4LCAyMDQsIAorICAgIDI1MCwgMTQ5LCAyNDcsIDEwNCwgMjE4LCAyMDMsIDI0NywgMjIsIDIzLCAyMTgsIDIwMywgMjE0LCAxMSwgMjQ5LCAxNDQsIAorICAgIDIxNCwgMTQ5LCAyNDksIDEyNywgMjQxLCAxMDYsIDI0MSwgMTAyLCAyMTgsIDEyMCwgMjEzLCAxMDUsIDIyMCwgMTY4LCAKKyAgICAyNDYsIDk3LCAyMjIsIDIwOCwgMjEzLCAxMjMsIDI0MSwgMTAzLCAyMTUsIDEyMSwgMjQxLCAyMTQsIDI0OCwgMjQ0LCAyLCAKKyAgICAyMTMsIDk4LCAyNDUsIDIwNCwgMjE0LCAxODcsIDIzNywgMTgyLCAyNDcsIDcwLCAyMTUsIDIyMiwgMjM3LCAxODEsIDIzNywgCisgICAgMTgyLCAyNDcsIDcwLCAyNDQsIDExLCAyNDcsIDEwMywgMjQ4LCAzMCwgMTM0LCAyNDgsIDIxNiwgMjI5LCAxMjksIDI0NywgCisgICAgMTQsIDIzOCwgMTMzLCAyMjAsIDE3MCwgMjE1LCAxMzMsIDI1MCwgMTgsIDI0OSwgMTQwLCAyMjAsIDE3MSwgNzMsIDI0MSwgCisgICAgMTUwLCAyNDcsIDEwMiwgMjQxLCAxNDAsIDIzLCAyMzEsIDU4LCAyMTIsIDEyOCwgMjA2LCAyNTMsIDIzOSwgMTA1LCAyMTcsIAorICAgIDE3NiwgMjQ5LCAxNTYsIDIzLCAyNDcsIDI5LCAyMDcsIDYsIDI0MCwgMjksIDI0NywgMTcxLCAyNDAsIDI5LCAyMTEsIDE4LCAKKyAgICAyNDMsIDI0OSwgMjUwLCA0NiwgMjI2LCAxMDMsIDI0NywgMTk5LCAyNTAsIDQ2LCAyMjYsIDEwMiwgMjUwLCAxNzksIDI0OSwgCisgICAgMTU1LCAyNDEsIDE0MCwgMjMsIDIzMSwgNTksIDIsIDIyMCwgMjMxLCAyMTgsIDIwNSwgMjA2LCAyMjIsIDIyMCwgMTMyLCAKKyAgICAyNDksIDIxNiwgMjQ4LCAyNDMsIDIzMiwgMTk3LCAyNDgsIDIyLCAyMTEsIDYxLCAyNDIsIDM2LCAyNDgsIDIxLCAyNDEsIAorICAgIDIxNywgMjQxLCAyMTgsIDIxNCwgMTQ3LCAyNTAsIDE0OCwgMjIxLCAyMDYsIDIyMCwgMTgyLCAyNDcsIDEzNywgMjUwLCAKKyAgICAxNDksIDIxMiwgMTczLCAyMTEsIDYxLCAyNDcsIDU3LCAyNDEsIDE5MCwgMjIxLCA3LCAyNDYsIDAsIDIzMiwgMTg5LCAyNDUsIAorICAgIDM0LCAyNDgsIDE5MywgMjEzLCAyMzUsIDIwNywgMTAsIDI0OCwgNDYsIDIyNiwgMTQ1LCAyMDgsIDIwMSwgMjQ4LCAxMTUsIAorICAgIDIxNywgMTA0LCAyMTcsIDEzMSwgMjM5LCAyNDgsIDI0OCwgMjEzLCAyMzksIDYxLCAyLCAyMTEsIDE2NywgMjIyLCAxNjYsIAorICAgIDIxMiwgNDIsIDIzMCwgNDYsIDI0OSwgMTQ5LCA3MywgMjQxLCAxNzEsIDIyNiwgMjE4LCAyMjcsIDExMiwgMjE5LCA1LCAKKyAgICAyMTgsIDIwNSwgMzAsIDIzMSwgMTczLCAyLCAyMzIsIDE5NiwgMjEzLCAyMDgsIDIyNiwgMjUxLCAyMjksIDI1NCwgMjE0LCAKKyAgICAyMjcsIDI0NywgMTA5LCAyMzEsIDU1LCAyNTAsIDU4LCAyNTEsIDIyOCwgMzAsIDIyNCwgMzIsIDI1MCwgNTgsIDI0NSwgCisgICAgMjEwLCAzMCwgMjI0LCAzMiwgMjQxLCAyMzEsIDI0MSwgMTExLCAyNTIsIDI1MywgMjExLCAyMDUsIDI0OCwgMTk0LCAyMzgsIAorICAgIDY1LCAyNDIsIDMsIDIwNywgMjYsIDIxOCwgMTExLCAyNDcsIDE3MiwgMjQxLCAyMDksIDIyMCwgMTk2LCAyMywgMjQxLCAKKyAgICAyMTMsIDIyNiwgMjUxLCAyMjYsIDEyMSwgMjQ4LCAyMzAsIDI0NywgMjM3LCAyMzksIDY1LCAyNTEsIDIzNSwgMjIyLCAyMiwgCisgICAgMjExLCAxMDIsIDIzOSwgODYsIDI0NywgMjI2LCAyMTIsIDkyLCAyMTEsIDIwNiwgMjQ3LCAyMTMsIDI0OSwgMTgxLCAyMjEsIAorICAgIDEyNiwgMjUxLCAyMzQsIDIwOCwgMjEwLCAyNDAsIDIxOCwgMjQ1LCAxMDQsIDIzOCwgMjQyLCAyMTQsIDIyMCwgMjI4LCAxNSwgCisgICAgMjQ5LCAyMjcsIDI0MCwgMjE5LCAyNDUsIDE0OCwgMjQ5LCAxNDMsIDI0MSwgMTczLCAyMjAsIDIzMCwgMjQ4LCAyMDIsIDMwLCAKKyAgICAyMjQsIDM3LCAyMjYsIDk1LCAzMCwgMjI0LCAzMiwgMjE3LCAxMTcsIDIzOSwgMTk3LCAzMCwgMjMxLCAxNzIsIDIxMCwgCisgICAgMjUwLCAyMDgsIDE5MCwgMzAsIDIxNywgOTcsIDIxOCwgMzMsIDIxNSwgMTYyLCAyLCAyMTcsIDEzNCwgMjEyLCA5NSwgMjE5LCAKKyAgICAxMDIsIDIzLCAyNTAsIDE0OSwgMjE0LCAyNDUsIDIzLCAyMTQsIDI0NSwgMjQ5LCAxNjYsIDI1MCwgMTExLCAyMywgMjM4LCAKKyAgICAxMjcsIDI0OCwgNjksIDI0MSwgMTk2LCAyMTQsIDE5OCwgMjE4LCAzNCwgMjEzLCAxMjgsIDIxNCwgMTE3LCAyMjcsIDExMiwgCisgICAgMjExLCAxOSwgMjM4LCA2NiwgMjE5LCAxMDMsIDI1MiwgMTI5LCAyNDEsIDE0NywgMjE4LCA0NSwgMjQxLCAxNDcsIDIxMywgCisgICAgMTAwLCAyMDcsIDQxLCAyMjksIDIyNCwgMjQwLCAxMCwgMjE5LCAxMDQsIDIyNiwgMTM0LCAyMTksIDEwNCwgMjQ4LCAyMDQsIAorICAgIDIxNCwgMjAwLCAyNDgsIDIwOSwgMjI2LCAxMjgsIDI0OCwgMjI4LCAyNTAsIDYwLCAyLCAyMDksIDIzOCwgMjQ5LCA5MiwgCisgICAgMjQ3LCAxMjIsIDIzOCwgNTUsIDI0OSwgOTAsIDI0NywgMjIxLCAyNDUsIDIxNCwgMjM4LCA1NSwgMjQ5LCA5MSwgMjQ3LCAKKyAgICAyMTEsIDI0OSwgOTEsIDI0NSwgMjA2LCAyNDUsIDIwNywgMjMyLCAyMjcsIDIyNSwgMTkzLCAyMjEsIDIxMiwgMjE0LCAzNiwgCisgICAgMjM4LCA1NSwgMjQ5LCA5MSwgMjM4LCA1NSwgMiwgMjQwLCAyMDIsIDIyMiwgMjAxLCAyNDksIDkxLCAyMzIsIDE4OSwgMjIwLCAKKyAgICAxNzYsIDIyMiwgMjAwLCAyNDIsIDE4MSwgMjIwLCAxNzYsIDIyMiwgMjAwLCAyMzgsIDY0LCAyNTAsIDEzMywgMjUxLCAxNzMsIAorICAgIDIxMiwgMTAzLCAyMjgsIDE1LCAyMzgsIDYwLCAyMjksIDk4LCAyMzgsIDYwLCAyNDcsIDEwNywgMjEzLCAyNDcsIDIxNywgCisgICAgMTAzLCAyNDUsIDIxNiwgMjEzLCAyNDcsIDI0MiwgNTcsIDIzMiwgMjA4LCAyMzAsIDkxLCAyMzIsIDE4OSwgMjQ4LCAxODUsIAorICAgIDI0MiwgMTgxLCAyNDgsIDE4NSwgNTksIDIyMSwgMTQ0LCA2MCwgMjIxLCAxNDQsIDIwNywgNjIsIDU5LCAyNDEsIDE5NiwgCisgICAgMjA3LCA2MiwgNjAsIDI0MSwgMTk2LCAyMTgsIDEwMCwgNjAsIDIxOCwgMTAwLCAyMzAsIDEzMywgMjE5LCA2NSwgMjI2LCAKKyAgICAxMjUsIDIyMiwgNzYsIDIwNywgNzAsIDI0OSwgOTYsIDI0NywgNzUsIDIxMSwgMTk4LCAyMzAsIDE0LCAyMTksIDEwNSwgCisgICAgMjQ4LCAxODMsIDI0MywgMjU1LCAyNDcsIDY0LCAyMDcsIDI5LCAyMTQsIDIwNiwgMjE0LCAyMDQsIDIzOCwgNjUsIDIxOSwgCisgICAgNzcsIDI0MCwgMTUsIDIxNSwgMjA4LCAyMjYsIDE2MywgMjE4LCAxMDQsIDI0OCwgNTYsIDI0NSwgNDAsIDIyMSwgMTcsIAorICAgIDI0OSwgMTgyLCAyNDMsIDYwLCAyMjIsIDIxMSwgMjE0LCAxMjgsIDIxNSwgMjAzLCAyNDksIDk1LCAyNTIsIDkxLCAyMzgsIAorICAgIDEzMiwgMjMwLCAxMjYsIDI1MCwgNDQsIDI0MSwgMjEzLCAyMTEsIDE4LCAyNDEsIDIxMywgMjQ5LCAxODksIDIxMCwgMTQxLCAKKyAgICAyMzksIDg0LCAyNDgsIDU3LCAyNTAsIDE3OSwgMjQ4LCA1NywgMjQxLCA5NywgMjUwLCAxNzksIDI0OCwgNTcsIDI0OSwgCisgICAgMjE4LCAyMjEsIDE0NiwgMjMxLCA1MSwgMjIwLCAxODYsIDI0MywgMjQ2LCAyNDgsIDIzMiwgMjUwLCAxNjgsIDI0OCwgMjMyLCAKKyAgICAyNDUsIDMzLCAyMjYsIDEyNiwgMjQyLCA2NywgMjQ3LCA3NiwgMjQyLCA2NywgMjExLCAxOTksIDI0MiwgNjcsIDIxOSwgCisgICAgMTA2LCAyNDIsIDY3LCAyNDgsIDE4NCwgMjQyLCA2NywgMjQ0LCAwLCAyNDIsIDY3LCAyMTQsIDExNSwgMjA3LCAyOSwgMjM4LCAKKyAgICA2NiwgMjQyLCA2NywgMjI2LCAxNjQsIDI0MiwgNjcsIDI0NSwgNDEsIDI0MiwgNjcsIDIyMSwgMTgsIDI0MiwgNjcsIDI0MSwgCisgICAgMTAwLCAyNDIsIDY3LCAyMzksIDExMywgMjQyLCA2NywgMjA2LCAyNDcsIDI0MiwgNjcsIDI1MCwgNTYsIDI0MiwgNjcsIAorICAgIDIyMiwgNCwgMjQyLCA2NywgMjIxLCAxOCwgMjI0LCA0NCwgMjIxLCAxODYsIDIyMCwgMTIxLCAyNDgsIDQxLCAyNDIsIDE0OCwgCisgICAgMjQyLCAxNTAsIDI0MywgMTI0LCAyMjQsIDQ0LCAyMjYsIDEyMywgMjExLCAxMDcsIDU5LCAxMjAsIDIyMCwgMjAxLCAyNTAsIAorICAgIDE3NCwgMjMzLCA1MywgNTksIDEzMCwgMjIwLCAyMDEsIDI1MCwgMTc0LCAyMzMsIDUzLCA1OSwgNDcsIDIyMCwgMjAxLCAKKyAgICAyNTAsIDE3NCwgMjMzLCA1MywgNTksIDQ4LCAyMjAsIDIwMSwgMjUwLCAxNzQsIDIzMywgNTMsIDI0MSwgMjA3LCAyMzksIAorICAgIDEwOCwgNTMsIDIwNywgNjIsIDIzOSwgMTA4LCA1MywgMjIyLCAxODYsIDIzOSwgMTA4LCA1MywgMjExLCAyMjksIDEyMCwgCisgICAgNTMsIDIxMSwgMjI5LCAxMzAsIDUzLCAyNDcsIDIxMiwgMjM5LCAxMDMsIDUzLCAyMjIsIDE0MiwgMjM5LCAxMDMsIDUzLCAKKyAgICAyNDcsIDUyLCAyMDYsIDI0MywgMjM5LCA4NiwgMjQyLCAxNDksIDIyNSwgMTA3LCAyMTMsIDksIDIzMiwgMTgxLCAyNDMsIAorICAgIDI1MSwgMjMxLCAxMTAsIDI0OSwgMjI5LCAyMDYsIDI0MywgMjQ3LCAxODUsIDIyMCwgNTgsIDIzOSwgMTA2LCAyMjAsIDE2NywgCisgICAgMjI3LCAyMTEsIDIxNSwgMTU1LCAyNTEsIDE5NiwgMjE1LCAxNTUsIDIzOCwgMjUxLCAyMTUsIDE1NSwgMjA2LCAyNDMsIAorICAgIDIxNywgMTQ4LCAyMDYsIDI0MywgMjQ5LCAxNjUsIDI0MSwgMTQ1LCAyNDksIDU5LCAyMzMsIDY5LCAyMTUsIDU1LCAyNDksIAorICAgIDU4LCAyMzMsIDY5LCAyMTUsIDU1LCAyNDksIDEzOSwgMjQwLCA0MCwgMjI3LCAyMjEsIDIwNiwgMjQ0LCAyNDIsIDQ4LCAKKyAgICAyMjcsIDIyMiwgMjMsIDIwNiwgMjQ1LCAyMzgsIDE0MSwgMjM5LCAxMDIsIDExOCwgMjI3LCA4NCwgMjM4LCAxNDEsIDIzOSwgCisgICAgMTAyLCAxMTgsIDIwNiwgMjQyLCAyMzgsIDE0MSwgMjM5LCAxMDIsIDIyMCwgMTkzLCAyMjIsIDE5OSwgMjA2LCAyNDUsIDIsIAorICAgIDI0OSwgNzYsIDI0MywgMTIyLCAyNDksIDExNywgMiwgMjA5LCAzMCwgMjIxLCAxMTUsIDIsIDI0OSwgMTkyLCAyMzksIDEyOSwgCisgICAgMjI3LCAyMjIsIDIsIDIzOSwgMjEwLCAyMjEsIDU0LCAyMjcsIDIwNywgMjI3LCAyMjIsIDIsIDIxMCwgMTQ4LCAyMjIsIAorICAgIDE3OCwgMjI3LCAyMjEsIDIyMiwgMTc4LCAyMDYsIDI0NCwgMjUwLCAxNzgsIDI0NywgMTIzLCAyMDYsIDIyOCwgMjIwLCAKKyAgICAxMjYsIDIzMiwgMTg5LCAyMjIsIDE5NSwgMjMyLCAxODksIDI0MCwgMTQsIDI0MCwgNjksIDI1MCwgMTc5LCAyNTIsIDExMiwgCisgICAgMjQyLCAxNTQsIDI1MiwgMTYyLCAyNTIsIDE2MywgMjI2LCAxNTQsIDIzMywgNzQsIDIxNCwgMjQwLCAyMzMsIDQzLCAyNDUsIAorICAgIDIwMywgMjIxLCAxMTQsIDIzOSwgMjA0LCAyNDYsIDEwMSwgMjI5LCAxOTEsIDIyNSwgMjE3LCAyMjAsIDE5MiwgMjQyLCA2OCwgCisgICAgMjI3LCAxNzMsIDIzOSwgMTI4LCAyNTAsIDEyNywgMjIwLCAxOTUsIDIxMywgMjksIDIyMSwgMTAsIDIzMSwgOTIsIDgzLCAKKyAgICAyMjksIDk4LCAyMzAsIDUsIDIxOCwgMTQ4LCAyNDAsIDE2MCwgMjEzLCAyNTMsIDIzMSwgOTEsIDI0OSwgMTQ4LCAyNDcsIAorICAgIDc4LCAyLCAyMzksIDYwLCAyMDcsIDQ3LCAyNTAsIDU0LCAyMzksIDYwLCAyNDksIDExMSwgMjM5LCA2MCwgMTE4LCAyMzksIAorICAgIDU4LCAyMTQsIDE0NSwgMjM5LCA2MCwgMjM5LCAyMjAsIDIzOSwgNjAsIDIzOSwgNjEsIDIsIDQ1LCAyNDksIDE4NywgMjM5LCAKKyAgICA2MCwgMjM5LCAyMjcsIDIzOSwgNjAsIDIwNiwgNDUsIDIzOSwgNjAsIDIyMCwgNTksIDIzOSwgNjAsIDIzOSwgNjEsIDIsIAorICAgIDIxOCwgMjA1LCAyMTgsIDIxOCwgMjM5LCA1OCwgMjM5LCA2MSwgMjQ2LCAwLCAyNDUsIDE1NywgMjE1LCAyMzQsIDIsIDMyLCAKKyAgICA2NywgMjMzLCAyNSwgMjQzLCA2MywgMTQ3LCAyNDksIDg4LCAyNTIsIDExMSwgOTMsIDI0OSwgMTc0LCAyMTQsIDIzMiwgOTMsIAorICAgIDI0NywgMTY0LCA5MywgMjE0LCAxMjIsIDIxMywgMTA3LCA5MywgMjQzLCAyNDQsIDI0NiwgNzksIDkzLCAyMjEsIDExLCA3MywgCisgICAgMjIwLCAxODcsIDI0MSwgMTgyLCAyNDksIDI0MSwgMjQ1LCA3MSwgOTMsIDIxNCwgMTM3LCAyNTAsIDE0OCwgMjExLCAyNDQsIAorICAgIDI1MCwgMTQ4LCA1OSwgMjQxLCAxNzIsIDIzOCwgMzAsIDIyMCwgMTk5LCA5MywgMjI2LCAxNjcsIDI1MCwgMTYzLCAyNDcsIAorICAgIDI1LCAyNDIsIDE2OSwgNzcsIDI0NSwgMzUsIDUzLCAyNDcsIDY4LCAyNDgsIDIwMywgMjUwLCAxMzIsIDIsIDIwNiwgNDMsIAorICAgIDUzLCAyNTAsIDEzMiwgMiwgMjQ1LCAzNSwgNTMsIDI1MCwgMTMyLCAyLCAyNDIsIDE4NCwgNTMsIDI1MCwgMTMyLCAyLCAKKyAgICAyMjAsIDE2NSwgNTMsIDIyNiwgMTY3LCAyLCAyMDcsIDQsIDI0OCwgOTAsIDIsIDE2NywgMjExLCA1NywgMjMsIDIwNiwgNDMsIAorICAgIDUzLCAyMTcsIDgzLCAyMjEsIDExMywgMjQ3LCAxNDIsIDI0OSwgMTE1LCAyMjYsIDIwNywgMjQxLCAxNzcsIDI0NSwgOTIsIAorICAgIDIyMiwgMTI2LCAyNDUsIDk3LCAyNDMsIDIwOCwgMjQxLCAyMzYsIDI0MSwgMTU4LCAyMjIsIDE0MiwgMjQxLCAyMzYsIDI0MSwgCisgICAgMTU4LCAyMjIsIDM4LCAyLCAyNDcsIDI3LCAyMjIsIDM4LCAyNDIsIDYwLCAyMDksIDIwNiwgMjQ4LCAyMzcsIDIxMiwgMTI3LCAKKyAgICAyNDgsIDIzNywgMTkxLCAyMzMsIDUzLCAyNDgsIDkwLCAyLCAxNjcsIDIxMSwgNTYsIDI0OCwgOTAsIDIsIDE3MywgMjExLCAKKyAgICA1NiwgMjUwLCAxMjksIDI0OCwgODksIDI0NywgMTk4LCAyMjAsIDU0LCAyMTgsIDk1LCAyMjAsIDU0LCAyMjEsIDIzNCwgCisgICAgMjEzLCAyNDMsIDIxOCwgNDAsIDIxMSwgNDgsIDIxOCwgNDAsIDI0OSwgMTcwLCAyMTIsIDIwNSwgMjMwLCA1MSwgMjI0LCAKKyAgICAzNSwgMjI0LCAzNiwgMiwgMjQ1LCAyNTUsIDI0NywgNzcsIDI0NywgMTkyLCAyNDksIDE3MSwgMjIyLCAxNDIsIDI0OSwgCisgICAgMTcxLCAyMzksIDIyNywgMjQ5LCAxNzEsIDI0OSwgMTg3LCAyNDksIDE3MSwgMjIyLCAxMjEsIDI0OSwgMTcxLCAyNDksIAorICAgIDE2OCwgMjI1LCAyMTEsIDI1MCwgMTY2LCAyMTcsIDkxLCAyMjcsIDg1LCAyMTIsIDEwOCwgMjE5LCA0NSwgMjIyLCAzNiwgCisgICAgMjQyLCAzMywgMjI4LCAxNSwgMjE3LCAxMzAsIDI1MiwgODgsIDIyMCwgNzYsIDI1MywgMiwgMjI5LCAxMDAsIDI0OCwgNzYsIAorICAgIDIyNywgOTcsIDIyMiwgOTIsIDIxMSwgNjQsIDIzMywgNjUsIDIxMSwgNjQsIDIyMiwgNDQsIDI0MywgMTc3LCA5MywgMjMzLCAKKyAgICA2MiwgMjQzLCA4LCAyNDMsIDksIDIsIDE3MywgNTEsIDUyLCAyNDcsIDE5MiwgMjI3LCAyMzYsIDIsIDIyOSwgOTEsIDI0MSwgCisgICAgMTk2LCAyNDcsIDE5MiwgMjI3LCAyMzYsIDIsIDIxOSwgODEsIDI0MSwgMTk2LCAyMjIsIDE0MiwgMjI3LCAyMzYsIDIsIAorICAgIDIxOSwgODEsIDI0MSwgMTk2LCAyMjIsIDE0MiwgMjI3LCAyMzYsIDIsIDIyOSwgOTEsIDI0MSwgMTk2LCAyMjAsIDE3MywgCisgICAgMjIwLCAxNzQsIDIzOCwgNjksIDIyNSwgODQsIDIyNiwgMTc5LCAyMjEsIDYyLCAyMjYsIDE3OSwgMjIxLCA2MywgMiwgODYsIAorICAgIDUxLCAyNTEsIDIwMCwgMjMwLCA0NiwgMjA4LCAyMTMsIDIyNiwgMTc4LCAyMjYsIDE3OSwgMjIxLCA2MywgMjIyLCAyMDIsIAorICAgIDIyNCwgNjgsIDIyNiwgMTc5LCAyMjEsIDYxLCAyNTIsIDg5LCAyLCAyNTAsIDExOCwgMjQ4LCAyMzAsIDI0OCwgMjMxLCAyLCAKKyAgICAyNDEsIDE4OSwgMjA4LCAyMTAsIDI0OCwgMjMwLCAyMTIsIDEwNSwgMjE5LCA5NywgMjA4LCAyMDksIDI0MSwgMjMxLCAyMjAsIAorICAgIDEwOCwgMjIwLCAxNzksIDIxNCwgNiwgMjEwLCAxMTAsIDg2LCAyNTEsIDI0MSwgMjQ3LCAxOTQsIDg2LCAyMywgOTIsIDIyMiwgCisgICAgMTQyLCAyNDcsIDIzNCwgMjUxLCAyNDEsIDI0NywgMTk0LCA4NiwgMjMsIDkyLCAyMjIsIDE0MiwgMjQ3LCAyMzQsIDI1MSwgCisgICAgMjQyLCAyLCAzOSwgMTE5LCAyMjIsIDgyLCAyNDcsIDE5NCwgMTczLCAyMywgMTY3LCAyMjIsIDE0MiwgMjQ3LCAyMzQsIAorICAgIDI1MSwgMjQxLCAyNTIsIDg3LCAxNzMsIDIzLCAxNjcsIDIyMiwgMTQyLCAyNDcsIDIzNCwgMjUxLCAyNDEsIDExNCwgMjQ5LCAKKyAgICAxMTQsIDkzLCAxMjcsIDI0OSwgMTE0LCA5MywgMjE0LCAxNDIsIDIsIDI0OCwgMjIzLCA5MSwgMjE0LCAxNDEsIDIxNCwgCisgICAgMTQyLCAyLCAxMTksIDIxNCwgMTY1LCAyMDcsIDY0LCAyMTQsIDE0MiwgMiwgMTI5LCAyMTQsIDE2NSwgMjA3LCA2MywgMjUwLCAKKyAgICAxMDIsIDI0MywgNjMsIDIyMCwgMjIzLCAyMzAsIDQxLCAyMjcsIDI0OCwgMjQwLCAyOSwgMjE4LCAxNjIsIDIyNywgMjQ4LCAKKyAgICAyNDAsIDI5LCAyMjksIDE0MCwgMiwgMjMzLCAzNiwgMjIxLCAxNTAsIDI0NywgMTkyLCAyMjksIDE0MCwgMiwgMjMxLCAxNzQsIAorICAgIDIzMSwgMTc0LCAyMjksIDEzOSwgMjIyLCAxNDIsIDIyOSwgMTM5LCAyNTAsIDI4LCAyNTAsIDI5LCAyLCAyNDgsIDIyMywgCisgICAgOTEsIDI0OSwgMTY5LCAyMjksIDE5NiwgOTMsIDIxOSwgOTgsIDI0OSwgNTQsIDI1MCwgMTc3LCAyLCA5MiwgNTEsIDUyLCAKKyAgICAyNDMsIDM0LCAyLCA5MiwgNTEsIDUyLCAyMjIsIDE2NiwgMiwgMjQyLCAxNjgsIDE0MSwgMiwgNDcsIDQ4LCA1MSwgNTIsIAorICAgIDIxNCwgMTczLCAyLCA4NiwgNTEsIDUyLCAyMTEsIDEwMiwgMiwgMTY3LCA1MSwgNTIsIDIyNCwgNjgsIDExOSwgMjA5LCAKKyAgICAyMjcsIDI0MywgODYsIDkzLCAyMzEsIDE3MSwgMjEyLCA5OCwgMjMzLCAzMCwgMTYsIDMzLCA3LCA2LCAyMzAsIDQsIDIzMywgCisgICAgMzAsIDE2LCAzMywgNywgNSwgMjMwLCA0LCAyMzMsIDMwLCAxNiwgMzMsIDIyMywgMTc4LCAyMzMsIDMwLCAxNiwgMzMsIAorICAgIDIxMywgNDIsIDIzMywgMzAsIDE2LCAzMywgNywgMjMwLCA0LCAyNDEsIDIxOSwgMjQzLCA2MywgMjExLCA5NywgMjA2LCAKKyAgICAyMjAsIDIzOSwgMTE0LCAyMjMsIDE2MSwgMjMsIDI0OSwgMTc2LCAyMzgsIDE0NywgMjIwLCAyNDgsIDIyNiwgMjUwLCAyMTIsIAorICAgIDEwNiwgMjQ3LCA0MiwgMjUwLCAxNDksIDIxNSwgMTAsIDIyMCwgMjAzLCAyMTQsIDI3LCAyLCAyMjYsIDI0NywgMjQ1LCAyMywgCisgICAgMjMyLCAxODksIDE2LCAzMywgMjUwLCA0MSwgMjExLCA0NiwgMjQzLCA0NywgNjAsIDQ5LCAyNDksIDU0LCA1OSwgNDksIAorICAgIDI0OSwgNTQsIDIzMCwgODYsIDIxOSwgMzIsIDI0NywgMjMzLCAyMzAsIDg2LCAyNDksIDE4NywgMjQ3LCAyMzMsIDIzMCwgCisgICAgODYsIDIyMiwgMTIxLCAyNDUsIDE1NiwgMjMwLCA4NiwgMjQ5LCAxODcsIDI0NSwgMTU2LCA1LCAyMjIsIDEyMSwgMjQ1LCAKKyAgICAxNTYsIDUsIDI0OSwgMTg3LCAyNDUsIDE1NiwgMjA5LCAyMDUsIDIxOSwgMzIsIDIxMSwgNTEsIDI0NCwgNywgMjE5LCAzMiwgCisgICAgMjExLCA1MSwgMjA5LCAyMDUsIDUsIDIxOSwgMzIsIDIxMSwgNTEsIDI0NCwgNywgNSwgMjE5LCAzMiwgMjExLCA1MSwgMjI5LCAKKyAgICA5MiwgNDgsIDIxNSwgMjQ2LCA1OSwgMjQ3LCAyMzMsIDIwOSwgMjAzLCA0OCwgMjE1LCAyNDYsIDU5LCAyNDcsIDIzMywgMzksIAorICAgIDI0NywgNjAsIDIyMCwgMTkwLCAyNDcsIDYwLCAyMjAsIDE5MSwgMiwgMjM5LCAxMjAsIDU1LCAyNDcsIDYwLCAyMjAsIDE5MCwgCisgICAgMjI0LCAzOSwgNDcsIDIxNiwgNTUsIDIsIDEyOSwgMjQ1LCAyMSwgMjI0LCAzOSwgNDgsIDIxNiwgNTUsIDIsIDEyOSwgMjQ1LCAKKyAgICAyMSwgMTYsIDMzLCAyMjcsIDE4NiwgMjQ4LCA5NiwgNTksIDcsIDI0NywgNTksIDc3LCA3LCAyNDcsIDU5LCAyNDgsIDEzMywgCisgICAgMjQ3LCA1OSwgMjIyLCAxNzQsIDkzLCAyNDQsIDEwLCA3MywgMjIxLCAxNzIsIDI0NywgMTk2LCAyNDIsIDY4LCAxMTksIAorICAgIDIyMiwgMjE2LCAyNDcsIDE5NiwgMjQyLCA2OCwgMTE4LCAyMjIsIDIxNiwgMjQ3LCAxOTYsIDI0MiwgNjgsIDEyOSwgMjIyLCAKKyAgICAyMTYsIDI0NywgMTk2LCAyNDIsIDY4LCAyNDEsIDEyNSwgMjIyLCAyMTYsIDI0NywgMTk2LCAyNDIsIDY4LCAyNDEsIDIwNCwgCisgICAgMjIyLCAyMTYsIDI0NywgMTk2LCAyNDIsIDY4LCAyMTUsIDEwLCAyMjIsIDIxNiwgMjQ3LCAxOTYsIDI0MiwgNjgsIDIxNiwgCisgICAgMjMsIDIyMiwgMjE2LCAyNDcsIDE5NiwgMjQyLCA2OCwgMjQzLCA4OCwgMjIyLCAyMTYsIDI0NywgMTk2LCAyNDIsIDY4LCAKKyAgICAyMjQsIDE5NSwgMjIyLCAyMTYsIDI0NywgMTk2LCAyNDIsIDY4LCAyMTIsIDk5LCAyMjIsIDIxNiwgMjQ3LCAxOTYsIDI0MiwgCisgICAgNjgsIDI0MywgNTksIDIyMiwgMjE2LCAyNDcsIDE5NiwgMjQyLCA2OCwgMjEwLCAxMjcsIDIyMiwgMjE2LCAyNDcsIDE5NiwgCisgICAgMjQyLCA2OCwgMjIyLCAxNjEsIDI0NywgMTk2LCAyNDIsIDY4LCAyMTAsIDEwNiwgMjQ3LCAxOTYsIDI0MiwgNjgsIDIxMSwgCisgICAgMjM0LCAyNDcsIDE5NiwgMjQyLCA2OCwgMjQxLCAxMjEsIDI0NywgMTk2LCAyNDIsIDY4LCAyNDEsIDIwMiwgMjQ3LCAxOTYsIAorICAgIDI0MiwgNjgsIDIxNSwgNiwgMjQ3LCAxOTYsIDI0MiwgNjgsIDIxNiwgMjIsIDI0NywgMTk2LCAyNDIsIDY4LCAyNDMsIDg3LCAKKyAgICAyNDcsIDE5NiwgMjQyLCA2OCwgMjI0LCAxOTQsIDI0NywgMTk2LCAyNDIsIDY4LCAyMTIsIDk3LCAyNDcsIDE5NiwgMjQyLCAKKyAgICA2OCwgMjQzLCA1NywgMjQ3LCAxOTYsIDI0MiwgNjgsIDIxMCwgMTI1LCA0OCwgMjE0LCAxNDEsIDQ4LCAyMTQsIDE0MiwgMiwgCisgICAgMTE5LCAyMTQsIDE2NSwgMjA3LCA2NCwgNDgsIDIxNCwgMTQyLCAyLCAxMjksIDIxNCwgMTY1LCAyMDcsIDYzLCAyNDksIDgzLCAKKyAgICAyNDksIDg0LCAyLCAyMTQsIDE2NSwgMjA3LCA2MywgMjE4LCAxNDcsIDI1MCwgMjgsIDI0OSwgMTcxLCAyNDgsIDIyMSwgCisgICAgMjI3LCAyMDgsIDI0NywgMTk1LCA2MCwgMjE0LCAyNDEsIDIzLCAyNDcsIDU4LCAyMjQsIDY4LCAyMjAsIDI1NCwgMjM4LCAKKyAgICAxNDAsIDIyNywgMjIyLCAyMzMsIDY5LCAyNDksIDYxLCAyMTMsIDE2OCwgMjI5LCAyNTMsIDIxNCwgMjMwLCAyMjIsIDEyMywgCisgICAgMjE0LCAxMDgsIDI0NiwgODQsIDIxMywgMTUwLCAyMTQsIDEzMCwgMjE0LCAxMzEsIDIwNywgNDgsIDIzMiwgMTA1LCA0NywgCisgICAgMjM5LCAxMDgsIDIxMiwgMTA4LCAyMTksIDQ1LCAyMTIsIDEwOCwgMjE5LCA0NiwgMiwgMjIyLCAzNywgNDgsIDIzOSwgMTA4LCAKKyAgICAyMTIsIDEwOCwgMjE5LCA0NSwgNTksIDIxMSwgODksIDIxMiwgMTA3LCA2MCwgMjExLCA4OSwgMjEyLCAxMDcsIDIxMiwgCisgICAgMTA4LCAyMjIsIDE2NiwgMjExLCAxMDIsIDczLCAyMjYsIDE3NSwgMjQ3LCAyMTYsIDIyNiwgMTc5LCAyMjEsIDYyLCAyNTAsIAorICAgIDE3NywgNzMsIDI0MywgOCwgMjE0LCAzMiwgMjQzLCA4LCAyNDMsIDksIDIsIDIyOSwgMjIwLCAyNDEsIDE2NSwgMjQzLCA4LCAKKyAgICAyMjEsIDE1MSwgMTMxLCAyMTQsIDMyLCAyNDMsIDgsIDIyOSwgMTk1LCAyMjEsIDIzMywgNjAsIDIyMCwgNTQsIDIyOSwgOTIsIAorICAgIDQ3LCAyMjEsIDE0OSwgMjI5LCA5MiwgNDcsIDI1MCwgMTQ0LCAyMjEsIDE1MCwgMjI5LCA5MiwgNDcsIDI0MSwgMTI3LCAKKyAgICAyMjEsIDE1MCwgMjI5LCA5MiwgNDcsIDIyMiwgMzEsIDIyOSwgOTIsIDQ3LCAyNDcsIDcxLCA0NywgMjA2LCAyMTksIDIzOSwgCisgICAgMTA3LCAyMDEsIDIyMiwgMTg2LCAyMzksIDEwOCwgNTMsIDIxOSwgODEsIDIzOSwgMTA4LCAyLCAyNDEsIDIyNCwgMjE0LCAKKyAgICAxMjEsIDIxOCwgMjI0LCAyMTksIDgxLCAyMzksIDEwOCwgMiwgMjQxLCAyMjQsIDIxNCwgMTIxLCAyMTgsIDIyNCwgMjExLCAKKyAgICAyMjksIDEyMCwgNTMsIDIxOCwgMjI0LCAyMTEsIDIyOSwgMTMwLCA1MywgMjE4LCAyMjQsIDIwOCwgMjEyLCAyMzksIDEwNywgCisgICAgMjE4LCAyMjQsIDIzOSwgMTA4LCAyLCAyMjYsIDI0NywgMjQxLCAyMjgsIDI0MiwgMTU4LCAyMTksIDgxLCAyMzksIDEwOCwgCisgICAgMiwgMjIxLCAyMTEsIDI1MCwgNiwgMjI2LCAyNDcsIDIzLCAyMTgsIDE0OSwgMjQxLCAyMjMsIDU5LCAxMzAsIDIyMCwgMjAxLCAKKyAgICA0NywgMjM5LCAxMDgsIDIzMywgNTMsIDIxNSwgNzMsIDU5LCA0NywgMjIwLCAyMDEsIDIzMywgNTMsIDIxNSwgNzMsIDU5LCAKKyAgICA0OCwgMjIwLCAyMDEsIDIzMywgNTMsIDIxNSwgNzMsIDYwLCA0NywgMjIwLCAyMDEsIDIzMywgNTMsIDIxNSwgNzMsIDYwLCAKKyAgICA0OCwgMjIwLCAyMDEsIDIzMywgNTMsIDYwLCA0NywgMjIwLCAyMDEsIDI1MCwgMTc0LCAyMzMsIDUzLCA2MCwgNDgsIDIyMCwgCisgICAgMjAxLCAyNTAsIDE3NCwgMjMzLCA1MywgMjE1LCA3MywgNTksIDEyMCwgMjIwLCAyMDEsIDIzMywgNTMsIDIxNSwgNzMsIDU5LCAKKyAgICAxMzAsIDIyMCwgMjAxLCAyMzMsIDUzLCAyMTUsIDczLCA2MCwgMTIwLCAyMjAsIDIwMSwgMjMzLCA1MywgMjE1LCA3MywgNjAsIAorICAgIDEzMCwgMjIwLCAyMDEsIDIzMywgNTMsIDYwLCAxMjAsIDIyMCwgMjAxLCAyNTAsIDE3NCwgMjMzLCA1MywgNjAsIDEzMCwgCisgICAgMjIwLCAyMDEsIDI1MCwgMTc0LCAyMzMsIDUzLCAyNDUsIDIwMiwgMjQ3LCAxNDIsIDIzMSwgMTczLCAyMywgMjI2LCAxMjUsIAorICAgIDEyOSwgMjI1LCA5MCwgMjQ3LCAxNDEsIDIyMCwgMTIyLCAyMjAsIDIwOSwgMjQ4LCAyMzksIDYwLCAyMzksIDk0LCAyMTUsIAorICAgIDIwNCwgMjQxLCAxNzcsIDI0NSwgOTIsIDU5LCAyMzksIDk0LCAyMTUsIDIwNCwgMjQxLCAxNzcsIDI0NSwgOTIsIDIxNCwgCisgICAgMTg3LCAyMTUsIDIwNCwgMjQxLCAxNzcsIDI0NSwgOTIsIDIxMiwgMTY1LCAyNDgsIDE4OCwgMjA3LCAwLCAyMzEsIDE3MiwgCisgICAgMTE5LCAyNDksIDU1LCAyMjYsIDEyNSwgMTE4LCAyNDksIDU1LCAyMjYsIDEyNSwgMTI5LCAyNDksIDU1LCAyMjYsIDEyNSwgCisgICAgMjExLCA4MSwgNDQsIDIyMSwgMTEzLCAyNDcsIDE0MiwgMjM5LCA5NCwgMjQ1LCA5MiwgMjE3LCA5MywgMjIwLCAxMjMsIAorICAgIDIzNywgMTc1LCAyNDIsIDMzLCAyMzcsIDE3NSwgMjIyLCAxMjYsIDI0NSwgOTgsIDIzNywgMTc1LCAyNDUsIDQ1LCAyLCAKKyAgICAyMTIsIDYwLCAyNDUsIDQ1LCAyLCAyMTIsIDYxLCAyMywgMjIxLCA0NywgMjQ1LCA0NSwgMiwgMjIxLCA0NywgMjQxLCAxMTMsIAorICAgIDIsIDIyMSwgNDcsIDI0MSwgMTEzLCAyLCAyMTEsIDE3OCwgMjQxLCAxMTMsIDIsIDI1MiwgMTIzLCAyMDYsIDE5NSwgNjAsIAorICAgIDI0MSwgMTU4LCAyNDEsIDE1OCwgMjIyLCAxNDIsIDI0MSwgMTU4LCAxOTEsIDIzMywgNTQsIDI0NSwgNzgsIDE5MSwgMjQxLCAKKyAgICAyMzYsIDI0OSwgMTQwLCAyNDEsIDIzNiwgMjQ4LCAyNTIsIDI0MywgNDMsIDIyNCwgMzcsIDI0MywgNDMsIDIyNCwgMzgsIAorICAgIDIyMiwgMzcsIDI0MywgNDMsIDIyNCwgMzgsIDIyMiwgNDIsIDIyNCwgMzcsIDIyNCwgMzgsIDIyMiwgMzcsIDIyNCwgMzgsIAorICAgIDIyMiwgNDIsIDI0MywgNDMsIDI0NSwgNDQsIDI0MywgNDMsIDIyMiwgMzcsIDI0MywgNDMsIDIyMiwgMzUsIDI0NSwgNDQsIAorICAgIDIyMiwgMzcsIDIyMiwgMzUsIDIwNywgNzQsIDIxNCwgMTI4LCAyMjQsIDM4LCAyMjIsIDQyLCAyMTQsIDEyOCwgMjQ4LCAKKyAgICAyMzgsIDIyMiwgNDIsIDI0NSwgMjAyLCAyMDcsIDgsIDIyNiwgMjA0LCAyMjcsIDE2MywgMjIyLCA4NCwgMjQ3LCAxOTQsIAorICAgIDQ4LCAyMywgNDcsIDIxNiwgNTUsIDI1MSwgMjQxLCAyNDgsIDIyMywgMjA2LCAxOTUsIDIzMywgNjAsIDI0MSwgMTUyLCAKKyAgICAyMTQsIDI1MCwgOTMsIDI0NSwgMjU0LCAyNDEsIDE1MiwgMjE0LCAyNTAsIDkzLCAyNDcsIDE0MywgNDQsIDIzMSwgMTc0LCAKKyAgICAyMTgsIDExMiwgMjI1LCA4NCwgMjIyLCAzOCwgMiwgMzksIDIxMiwgNjAsIDIxMywgMjU1LCAyNDgsIDg5LCAyNDYsIDEyOSwgCisgICAgMjMxLCA1OCwgMjI5LCAxOTIsIDIxNCwgMTQwLCAyMzksIDY5LCAyMzMsIDY5LCAyMTUsIDU1LCAxMjksIDIxOSwgNTYsIDUyLCAKKyAgICAxMjksIDIxOSwgNTYsIDU1LCAxMjksIDIxOSwgNTYsIDIzMCwgNDYsIDEyOSwgMjE5LCA1NiwgMjE4LCAxNjcsIDQ3LCAyMTQsIAorICAgIDEzNywgMjQ5LCAxMDAsIDQ4LCAyMTQsIDEzNywgMjQ5LCAxMDAsIDExOCwgMjE0LCAxMzcsIDI0OSwgOTksIDEyOSwgMjE0LCAKKyAgICAxMzcsIDI0OSwgOTksIDQ3LCAyMTEsIDI0NCwgMjQ5LCAxMDAsIDQ4LCAyMTEsIDI0NCwgMjQ5LCAxMDAsIDQ3LCAyNTIsIAorICAgIDExMSwgMjQ5LCAxMDAsIDQ4LCAyNTIsIDExMSwgMjQ5LCAxMDAsIDIyNiwgMTQ5LCAyNDksIDEwMCwgMjI5LCAyMjEsIDIyNiwgCisgICAgMTQ5LCAyNDksIDEwMCwgMjI5LCAyMjEsIDIyNiwgMTQ4LCAyNTAsIDE0NiwgOTYsIDIsIDI1MCwgMTQ1LCAyNTAsIDE0NiwgCisgICAgMTIxLCAyMDYsIDE5NSwgMjUwLCAxNDYsIDk2LCAyLCAxMjEsIDIwNiwgMTk1LCAyNTAsIDE0NiwgMjQsIDEyMSwgMjA2LCAKKyAgICAxOTUsIDI1MCwgMTQ2LCA5NiwgMiwgMjQsIDEyMSwgMjA2LCAxOTUsIDE0NywgMjQ4LCA4MSwgODMsIDI1MCwgMTQ2LCA5NiwgCisgICAgMiwgMjQsIDI0OCwgODAsIDIwNiwgMjI3LCAyMjcsIDIwNSwgMjI2LCAxMzAsIDI0MSwgODMsIDIxMSwgMTI0LCAyMTEsIDg2LCAKKyAgICAyMTQsIDE4LCA3MywgMjI5LCAyMzMsIDIxNSwgNTYsIDczLCAyMzIsIDE5MCwgMjI2LCAxMTksIDIzOSwgMjI0LCAyNDIsIAorICAgIDY3LCAyMzksIDIyNCwgMjQyLCA2OCwgMiwgMjE0LCAyMTAsIDI0MiwgMTQ4LCAyNDIsIDY4LCAyLCAyMTIsIDEyMywgNzMsIAorICAgIDIzMiwgMTA3LCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgMjIyLCAxNDIsIDIyNiwgMTIzLCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgCisgICAgMjIyLCAxNDIsIDIyNiwgMTI0LCAyMywgMjE0LCAyMTAsIDI0MiwgMTQ4LCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgMjIyLCAKKyAgICAxNDIsIDIyNiwgMTI0LCAyMywgMjQ3LCAxNjYsIDIxMywgMTA2LCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgMjIyLCAxNDIsIAorICAgIDIyNiwgMTI0LCAyMywgMjExLCAxOTYsIDI0MiwgMTQ4LCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgMjM5LCAxMTksIDIxNCwgCisgICAgMjEwLCAyNDIsIDY4LCAyLCAyMzgsIDY4LCAyMDcsIDIsIDI0MiwgNjcsIDIxNCwgMjEwLCAyNDIsIDY4LCAyLCAyMTQsIAorICAgIDIxMCwgMjQyLCAxNDgsIDI0MiwgNjgsIDIxNywgMTIyLCAyNDUsIDIzNSwgMjQxLCAxNTAsIDIxOSwgOCwgMjQyLCA2NywgCisgICAgMjE0LCAyMTAsIDI0MiwgNjgsIDIsIDIzOSwgNTksIDI0MiwgMTQ4LCAyMTQsIDIxMCwgMjQyLCA2OCwgMiwgMjEzLCAxNTAsIAorICAgIDIxNCwgMjA5LCAyNDIsIDY3LCAyMjUsIDg4LCAyNDIsIDY3LCAyNDIsIDE2MCwgMjQyLCA2NywgMjA5LCAyMzIsIDI0MiwgCisgICAgNjcsIDI0MiwgNjgsIDIsIDI0NywgMTY2LCAyMTMsIDEwNiwgMjIxLCAxNDIsIDI0MiwgNjcsIDI0NywgMTM0LCAyNDIsIDY3LCAKKyAgICAyNDcsIDEzNSwgMjQyLCA2NywgMjMxLCA5MCwgMjQyLCA2NywgMjQyLCA2OCwgMjExLCAyMzEsIDMyLCAyMzEsIDkxLCAyMzEsIAorICAgIDkwLCAyNDIsIDY4LCAyLCAyMTQsIDIxMCwgMjQyLCAxNDgsIDIzMSwgOTAsIDI0MiwgNjgsIDIsIDI0NywgMTkyLCAyNDIsIAorICAgIDE0OCwgMjQyLCA2OCwgMiwgMjEzLCAyMDksIDIxMSwgMTA3LCAyNDIsIDY4LCAyLCAyMTMsIDIwOSwgMjExLCAxMDgsIDIzLCAKKyAgICAyMDcsIDIsIDI0MiwgMTUwLCAyNDIsIDY4LCAyLCAyMTMsIDIwOSwgMjExLCAxMDgsIDIzLCAyMTEsIDE5NiwgMjQyLCAxNDgsIAorICAgIDI0NSwgOTksIDI0MiwgNjcsIDIwNiwgMjI2LCAyNDIsIDY3LCAyNTIsIDEwNywgMjQyLCA2NywgMjIwLCAxNjQsIDI0MiwgCisgICAgNjcsIDI0NywgNDQsIDI0MiwgNjcsIDIyMSwgMTE3LCAyNDIsIDY3LCAyNDIsIDY4LCAyLCAyMjksIDExNCwgNzMsIDIxMSwgCisgICAgMjksIDI0NSwgOTksIDI0OSwgNTcsIDIxOSwgOCwgMjQyLCA2NywgMjQxLCA5NCwgMjQyLCA2OCwgMiwgMjIyLCAxNDIsIAorICAgIDIyNiwgMTIzLCAyNTIsIDEwNSwgMjQyLCA2NywgMjQyLCAyNiwgMjQyLCA2NywgMjA3LCA0OSwgMjQyLCA2NywgMjE0LCAKKyAgICAyMzEsIDI0MiwgNjcsIDIxMSwgMTYxLCAyNDIsIDY3LCAyMzksIDIyNSwgMjQyLCA2NywgMjI5LCAxMDEsIDI0NywgNDQsIAorICAgIDI0MiwgNjcsIDI0MiwgNjgsIDIsIDIyMiwgMTQyLCAyMjYsIDEyMywgMjM4LCAyMCwgMjQyLCA2NywgMjQyLCA2OCwgMiwgCisgICAgMjIyLCAxNDIsIDIyNiwgMTI0LCAyMywgMjQ3LCAxNjYsIDIxMywgMTA2LCAyNDIsIDY4LCAyMTcsIDk1LCAyMzMsIDY5LCAKKyAgICAyNDIsIDI3LCAyNTEsIDIwNiwgMjQyLCA2NywgMjQxLCAxNjksIDI0MiwgNjcsIDIxNCwgMjMyLCAyNDIsIDY3LCAyNDUsIAorICAgIDcxLCAyNDIsIDY3LCAyNDIsIDY4LCAyMDYsIDI1MywgMjI2LCAxMjMsIDI0MiwgNjgsIDIsIDIyNywgMTExLCAyMjcsIDE3NSwgCisgICAgMjM5LCAyMjQsIDI0OCwgMTg0LCAyNDIsIDY4LCAyLCAyMTQsIDIxMCwgMjQyLCAxNDgsIDI0OCwgMTg0LCAyNDIsIDY4LCAyLCAKKyAgICAyMTIsIDEyMywgNzMsIDIzMiwgMTA3LCAyMTQsIDIxMCwgMjQ4LCAxODQsIDI0MiwgNjgsIDIsIDIyMiwgMTQyLCAyMjYsIAorICAgIDEyMywgMjE0LCAyMTAsIDI0OCwgMTg0LCAyNDIsIDY4LCAyLCAyMzksIDU5LCAyNDIsIDE0OCwgMjQ4LCAxODQsIDI0MiwgCisgICAgNjgsIDIsIDIwNiwgMjE3LCAyMTQsIDIxMSwgMjMxLCA5MCwgMjQ4LCAxODQsIDI0MiwgNjgsIDIsIDI0NywgMTkyLCAyNDIsIAorICAgIDE0OCwgMjIwLCAxNjQsIDI0OCwgMTg0LCAyNDIsIDY3LCAyNDcsIDQ0LCAyNDgsIDE4NCwgMjQyLCA2NywgMjA3LCA0OSwgCisgICAgMjQ4LCAxODQsIDI0MiwgNjcsIDIxNCwgMjI1LCAyNDEsIDk0LCAyNDIsIDY3LCAyMTQsIDIyNSwgMjE0LCAyMTAsIDI0MiwgCisgICAgNjcsIDI0MiwgNjgsIDIsIDIyNCwgNjgsIDI0MCwgNywgMjQwLCAxNDAsIDI0MiwgNjgsIDIsIDIyMiwgMTg2LCAyNDAsIAorICAgIDE0MCwgMjIxLCAxMTUsIDI0OSwgMTQ1LCAyNDUsIDI0OSwgMjE3LCA3MywgMjI2LCAxNjMsIDIzOSwgNjIsIDIyNiwgMTYzLCAKKyAgICAyMTQsIDE0MywgMjI2LCAxNjMsIDIzOSwgOTYsIDIyMSwgMTE1LCAyMTksIDgwLCAxMTksIDIzOSwgMTA3LCAyMjEsIDExNSwgCisgICAgMjE5LCA4MCwgMjQ5LCAxNTcsIDIzOSwgMTAzLCAyMzMsIDY5LCAyNDgsIDEzNSwgMjIxLCAxMTUsIDI0MSwgOTMsIDIyMSwgCisgICAgMTE1LCAyLCAyMjAsIDE2NCwgMjQyLCA2NywgMjIxLCAxMTUsIDIsIDI0MSwgMTU5LCAyMzksIDEwMiwgMTQzLCAyMDcsIDM2LCAKKyAgICAyMjAsIDIwMSwgMjMwLCA1MywgMTg4LCAyMDcsIDM2LCAyMjAsIDIwMSwgMjMwLCA1MywgMTQzLCAyNDMsIDExNywgMjIwLCAKKyAgICAyMDEsIDIzMCwgNTMsIDE4OCwgMjQzLCAxMTcsIDIyMCwgMjAxLCAyMzAsIDUzLCAyMDEsIDE0MywgMjA3LCAzNiwgMjIwLCAKKyAgICAyMDEsIDIzMCwgNTMsIDIwMSwgMTg4LCAyMDcsIDM2LCAyMjAsIDIwMSwgMjMwLCA1MywgMjAxLCAxNDMsIDI0MywgMTE3LCAKKyAgICAyMjAsIDIwMSwgMjMwLCA1MywgMjAxLCAxODgsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjMwLCA1MywgMTQzLCAyMDcsIDM2LCAKKyAgICAyMjAsIDIwMSwgMjA4LCAxOTYsIDIzMCwgNTMsIDE4OCwgMjA3LCAzNiwgMjIwLCAyMDEsIDIwOCwgMTk2LCAyMzAsIDUzLCAKKyAgICAxNDMsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjA4LCAxOTYsIDIzMCwgNTMsIDE4OCwgMjQzLCAxMTcsIDIyMCwgMjAxLCAyMDgsIAorICAgIDE5NiwgMjMwLCA1MywgNzcsIDE0MywgMjA3LCAzNiwgMjIwLCAyMDEsIDIwOCwgMTk2LCAyMzAsIDUzLCA3NywgMTg4LCAKKyAgICAyMDcsIDM2LCAyMjAsIDIwMSwgMjA4LCAxOTYsIDIzMCwgNTMsIDc3LCAxNDMsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjA4LCAKKyAgICAxOTYsIDIzMCwgNTMsIDc3LCAxODgsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjA4LCAxOTYsIDIzMCwgNTMsIDE0MywgMjA3LCAKKyAgICAzNiwgMjIwLCAyMDEsIDI0OSwgOTcsIDE4OCwgMjA3LCAzNiwgMjIwLCAyMDEsIDI0OSwgOTcsIDE0MywgMjQzLCAxMTcsIAorICAgIDIyMCwgMjAxLCAyNDksIDk3LCAxODgsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjQ5LCA5NywgNzcsIDE0MywgMjA3LCAzNiwgCisgICAgMjIwLCAyMDEsIDI0OSwgOTcsIDc3LCAxODgsIDIwNywgMzYsIDIyMCwgMjAxLCAyNDksIDk3LCA3NywgMTQzLCAyNDMsIAorICAgIDExNywgMjIwLCAyMDEsIDI0OSwgOTcsIDc3LCAxODgsIDI0MywgMTE3LCAyMjAsIDIwMSwgMjQ5LCA5NywgMjM4LCAxMzksIAorICAgIDIxOSwgMTg5LCA0OSwgMjIyLCAxMTEsIDIzOCwgMTM5LCAyMTksIDE4OSwgNDksIDIyMiwgMTEyLCAyMzMsIDY5LCA2MCwgCisgICAgMjE0LCAxMDcsIDIxNCwgMTgyLCAyMTksIDE4OSwgNDksIDIyMiwgMTExLCAyMTQsIDE4MiwgMjE5LCAxODksIDQ5LCAyMjIsIAorICAgIDExMiwgMjMzLCA2OSwgNjAsIDIxNCwgMTA3LCA5MiwgMjE4LCAxMTYsIDE2NywgMjE4LCAxMTYsIDg2LCAyMTgsIDExNiwgCisgICAgMTczLCAyMTgsIDExNiwgMTIxLCAyOCwgMjQyLCAyMDQsIDIyMiwgMTExLCA3NywgMTIxLCAyOCwgMjQyLCAyMDQsIDIyMiwgCisgICAgMTExLCAyOCwgMjIyLCAxNDIsIDI0MiwgMjA0LCAyMjIsIDExMSwgNzcsIDI4LCAyMjIsIDE0MiwgMjQyLCAyMDQsIDIyMiwgCisgICAgMTExLCA3NywgMjUyLCAxMjYsIDIyMiwgMTExLCAyMTMsIDEwOSwgMjUyLCAxMjYsIDIyMiwgMTExLCAzOCwgNzcsIDUwLCAKKyAgICAyMDEsIDI0NywgMTU2LCAyMTksIDE4MCwgMTQxLCAyMjIsIDExMSwgMzgsIDc3LCA1MCwgMjQ3LCAxNTYsIDIxOSwgMTgwLCAKKyAgICAxNDEsIDIyMiwgMTExLCAzOCwgNzcsIDExNCwgNTAsIDI0NywgMTU2LCAyMTksIDE4MCwgMTQxLCAyMjIsIDExMSwgNzcsIAorICAgIDIzMywgMTEsIDIyMiwgMTExLCAzOCwgMjMzLCAxMSwgMjIyLCAxMTEsIDc3LCAzOCwgMjMzLCAxMSwgMjIyLCAxMTEsIDIwOCwgCisgICAgMjI2LCA3NywgMjE0LCAxODAsIDIwOCwgMjI2LCA3NywgMjE4LCAyMjUsIDIxNCwgMTgwLCAyNDgsIDc5LCAyNDksIDE4MSwgCisgICAgMjE4LCAyMjUsIDI0OCwgNzksIDI0OSwgMTgxLCAyMTgsIDExNiwgMjM5LCA0NiwgMjE0LCAxMywgMjI5LCAxMzcsIDIxOSwgCisgICAgODYsIDI0OCwgMjA0LCAyMzgsIDI0OCwgMjExLCA3NCwgMjM4LCAyNDgsIDIxMSwgNzUsIDIsIDI0OSwgODYsIDIyNCwgNDQsIAorICAgIDIxMSwgNzQsIDIyNywgNTYsIDE0NywgMjE5LCA4NywgMjE0LCAxOSwgMjExLCA3MiwgMjExLCA3MywgMjQ4LCAyMDQsIDI0OSwgCisgICAgNjIsIDIyMiwgMTYzLCAyNDksIDYyLCAyMTEsIDI2LCAyNDksIDYzLCAyMTMsIDI1MSwgMjI2LCAyMDgsIDI1MiwgMTMwLCAKKyAgICAyNDEsIDIyMCwgMjQzLCAyNywgMjIwLCAxOTMsIDI0OCwgMjA0LCAyMjIsIDE2MywgMjIwLCAxOTMsIDI0OCwgMjA0LCAyMTIsIAorICAgIDE0MSwgMjIyLCAxNjMsIDIxMiwgMTQxLCAyNTEsIDE3MiwgMjIyLCAxNjMsIDI1MSwgMTcyLCAyMTksIDM5LCAyMDksIDMxLCAKKyAgICAyNDUsIDIzMSwgMjExLCAxNywgMjUxLCAyMzYsIDIyOSwgMTA1LCAyMTEsIDgwLCAyMjYsIDE1NywgMjI2LCAxMjksIDIxOSwgCisgICAgODUsIDIxMywgMTIyLCAyMTksIDg1LCAyMjYsIDEyOSwgMjQ4LCAyNTEsIDI1MiwgMjM0LCAyMTEsIDcxLCAyMTUsIDE2NywgCisgICAgMjE4LCA5MiwgMjE0LCAxMzUsIDE5NCwgMjExLCA3OCwgMjI5LCAyMjMsIDc5LCAyMTEsIDc4LCAyMjksIDIyMywgMjQ3LCAKKyAgICAxMjMsIDUzLCAyMjAsIDE5MywgMjQ4LCAxOTAsIDIxOCwgMjE4LCAyMjksIDIyMywgMjExLCA0OCwgMjQxLCAxOTcsIDIyMiwgCisgICAgMTY2LCAyMjAsIDE3NSwgMjQ1LCAyNiwgMjI0LCA2OCwgMjQzLCAxNCwgNTMsIDIxNCwgMjA4LCA5MywgMjI0LCA2OCwgMjE0LCAKKyAgICAyMDgsIDkzLCAyMjAsIDUzLCAyMjksIDE4MSwgMjMzLCA2OSwgMjMyLCAyMTcsIDIyMCwgMjM5LCA5MywgMjQ1LCA1MiwgCisgICAgMjI0LCA0MywgMjI5LCAxODEsIDkzLCAyMjAsIDE2OSwgMjA3LCA3MCwgOTMsIDIyNCwgNTgsIDIwNywgNzAsIDkzLCAyNDksIAorICAgIDI0MCwgMjI0LCA2OCwgMjQ5LCAyMzksIDI0OSwgMjM4LCAyMjYsIDEyOSwgMjQ5LCAyMzgsIDIyMSwgMTY2LCAyMjQsIDY4LCAKKyAgICAyMjEsIDE2NSwgMjQ4LCA0OCwgMjQ3LCA1MywgMjI3LCA4MCwgOTMsIDIwNiwgMjQxLCA5MywgMjE4LCAyMzQsIDI1MCwgCisgICAgMTc5LCA5MywgMjExLCAxMjUsIDIwNywgNzAsIDI0NywgMTg5LCAyMTUsIDEyNiwgMjUwLCAxMDUsIDI1MCwgMTAzLCAyMjEsIAorICAgIDE5NywgMjQ3LCAxMDgsIDI0NywgMTIsIDI1MCwgMTYwLCAyNDcsIDIxNywgNDcsIDIyOSwgNzEsIDIxMSwgNTIsIDIsIDIxOCwgCisgICAgOTMsIDI0NywgOTAsIDIyMCwgMTExLCA1MywgMzksIDIzMywgNDMsIDIxNCwgMTYzLCAyNDksIDEzOCwgOTMsIDI0MCwgMzksIAorICAgIDkzLCAyNDcsIDgzLCAyMywgMjMwLCA5NiwgMjE0LCAyMzIsIDI1MywgMTgsIDIxNSwgMTQ3LCAyNTAsIDE1OSwgMjUwLCAyNywgCisgICAgMjUwLCAyOCwgMjUwLCA1MSwgMjM5LCAxMTUsIDIzLCAyMDYsIDIyMCwgMjE1LCAxODAsIDIyMiwgMTkwLCAyNDMsIDI0MSwgCisgICAgMjI2LCAxMzMsIDIxOSwgODYsIDIxMSwgODIsIDIyNiwgMTM1LCAyNDksIDE4MCwgMjA5LCAyMDUsIDIyNiwgMjE4LCAyNTIsIAorICAgIDE5NCwgMjA5LCAyMDUsIDI1MiwgMTk0LCAyMDksIDIwNSwgNSwgMjUyLCAxOTQsIDUsIDI1MiwgMTk0LCAyMjQsIDQ3LCAKKyAgICAyNTIsIDE5NCwgMjUyLCAxOTUsIDI0NSwgMjE1LCAyNTIsIDE5NSwgMjUxLCAyNDYsIDIxNywgMTI5LCAyMjIsIDE2MywgCisgICAgMjQxLCAyMjAsIDI0MywgMjcsIDI0NSwgMTQ2LCAyMjksIDEzNywgMjIxLCAyMDAsIDIxNSwgMTY3LCAxMjUsIDE2LCAzMywgCisgICAgMjE5LCAxODUsIDEyNSwgMTYsIDMzLCAyNTIsIDE5NiwgMTI1LCAxNiwgMzMsIDI0MSwgMjE5LCAxMjUsIDE2LCAzMywgMjQzLCAKKyAgICAxMjAsIDEyNSwgMTYsIDMzLCAyMDcsIDY5LCAxMjUsIDE2LCAzMywgMjUyLCAzOSwgMTI1LCAxNiwgMzMsIDI1MiwgNDAsIAorICAgIDIxOSwgMjYsIDEyNSwgMTYsIDMzLCAyNTIsIDQwLCAyMTksIDI1LCAxMjUsIDE2LCAzMywgMjUyLCA0MCwgMjA4LCAxNzksIAorICAgIDEyNSwgMTYsIDMzLCAyNTIsIDQwLCAyMDgsIDE3OCwgMTI1LCAxNiwgMzMsIDIwOCwgMTkzLCAxMjUsIDE2LCAzMywgMjA4LCAKKyAgICAxOTIsIDEyNSwgMTYsIDMzLCAyMDgsIDE5MSwgMTI1LCAxNiwgMzMsIDIxMywgMTYxLCAxMjUsIDE2LCAzMywgMjIxLCA3MCwgCisgICAgMjEzLCAxNjEsIDEyNSwgMTYsIDMzLCA2MCwgMjEzLCAxNjEsIDEyNSwgMTYsIDMzLCAyMjcsIDc5LCAyMTMsIDE4OSwgMTI1LCAKKyAgICAxNiwgMzMsIDIyNywgNzksIDIxMywgMTg4LCAxMjUsIDE2LCAzMywgMjI3LCA3OSwgMjEzLCAxODcsIDEyNSwgMTYsIDMzLCAKKyAgICAyNDcsIDIzNiwgMTI1LCAxNiwgMzMsIDIxNywgMTY1LCAxMjUsIDE2LCAzMywgMjI0LCAxODMsIDEyNSwgMTYsIDMzLCAyMDgsIAorICAgIDE3NywgMTI1LCAxNiwgMzMsIDIwOCwgMTc2LCAxMjUsIDE2LCAzMywgMjE4LCAxMTcsIDIxNywgMTY1LCAxMjUsIDE2LCAzMywgCisgICAgMjE4LCAxMTcsIDIxNywgMTY0LCAxMjUsIDE2LCAzMywgMjQwLCAxMSwgMTI1LCAxNiwgMzMsIDIxNSwgNTIsIDEyNSwgMTYsIAorICAgIDMzLCAyMzIsIDI0MCwgMjIyLCAxMTcsIDEyNSwgMTYsIDMzLCAyMzIsIDI0MCwgMjIyLCAxMTYsIDEyNSwgMTYsIDMzLCAKKyAgICAyNDcsIDYzLCA3MywgMjMyLCAyMzksIDEyNSwgMTYsIDMzLCAyMTksIDIyLCA3MywgMjMyLCAyMzksIDEyNSwgMTYsIDMzLCAKKyAgICAyNDcsIDk5LCAyMjIsIDExNywgMTI1LCAxNiwgMzMsIDIzMiwgMjM4LCAyMjIsIDExNywgMTI1LCAxNiwgMzMsIDIxMywgCisgICAgMTkwLCA3MywgMjQ3LCA5OCwgMTI1LCAxNiwgMzMsIDI0NywgNjMsIDczLCAyNDcsIDk4LCAxMjUsIDE2LCAzMywgMjQ3LCAKKyAgICA2MywgNzMsIDI0NywgOTcsIDEyNSwgMTYsIDMzLCAyNDcsIDk5LCAyNTIsIDgxLCAxMjUsIDE2LCAzMywgMjE3LCAxNjYsIAorICAgIDczLCAyNDcsIDk5LCAyNTIsIDgxLCAxMjUsIDE2LCAzMywgMjEzLCAxOTAsIDczLCAyMTcsIDE2NiwgNzMsIDI0NywgOTgsIAorICAgIDEyNSwgMTYsIDMzLCAyMDksIDI2LCAxMjUsIDE2LCAzMywgMjExLCAxNzQsIDIyMiwgMTE3LCAxMjUsIDE2LCAzMywgMjMwLCAKKyAgICA1NywgMjIyLCAxMTcsIDEyNSwgMTYsIDMzLCAyNTIsIDgwLCAyMjIsIDExNywgMTI1LCAxNiwgMzMsIDIxMywgMTkwLCA3MywgCisgICAgMjUyLCA3OSwgMTI1LCAxNiwgMzMsIDIxNywgMTY2LCA3MywgMjUyLCA3OSwgMTI1LCAxNiwgMzMsIDIxMywgMTkwLCA3MywgCisgICAgMjE3LCAxNjYsIDczLCAyNTIsIDc5LCAxMjUsIDE2LCAzMywgMjA4LCAxOTQsIDczLCAyNTIsIDc5LCAxMjUsIDE2LCAzMywgCisgICAgMjE5LCAyMiwgNzMsIDI1MiwgNzksIDEyNSwgMTYsIDMzLCAyMTksIDIyLCA3MywgMjUyLCA3OCwgMTI1LCAxNiwgMzMsIAorICAgIDIxOSwgMjEsIDEyNSwgMTYsIDMzLCAyMTksIDIwLCAxMjUsIDE2LCAzMywgMjE5LCAxOSwgMTI1LCAxNiwgMzMsIDIxOSwgCisgICAgMTgsIDEyNSwgMTYsIDMzLCAyNTIsIDE1OSwgMTI1LCAxNiwgMzMsIDI1MiwgMTU4LCAxMjUsIDE2LCAzMywgMjI3LCAxOTYsIAorICAgIDEyNSwgMTYsIDMzLCAyMTcsIDE3MSwgMTI1LCAxNiwgMzMsIDI1MSwgMjQwLCAxMjUsIDE2LCAzMywgMjE5LCA0OCwgMTI1LCAKKyAgICAxNiwgMzMsIDIxOSwgNDcsIDEyNSwgMTYsIDMzLCAyNTEsIDE3NSwgMTI1LCAxNiwgMzMsIDI0OSwgMjEwLCAyMjIsIDExNywgCisgICAgMTI1LCAxNiwgMzMsIDIxMiwgMTYwLCAxMjUsIDE2LCAzMywgMjEyLCAxNTksIDEyNSwgMTYsIDMzLCAyMTksIDE5MSwgMjI5LCAKKyAgICAyMTQsIDEyNSwgMTYsIDMzLCAyNDksIDE2MiwgMTI1LCAxNiwgMzMsIDI0OSwgMTYxLCAxMjUsIDE2LCAzMywgMjQ5LCAxNjAsIAorICAgIDEyNSwgMTYsIDMzLCAyNTIsIDEzOCwgMTI1LCAxNiwgMzMsIDIyMiwgMTg5LCAxMjUsIDE2LCAzMywgMjE0LCAxMjQsIDEyNSwgCisgICAgMTYsIDMzLCAyMTEsIDE3MiwgMTI1LCAxNiwgMzMsIDIzOSwgMTk0LCAxMjUsIDE2LCAzMywgMjA3LCA1NywgMTI1LCAxNiwgCisgICAgMzMsIDIyMCwgMTYzLCAxMjUsIDE2LCAzMywgMjQ4LCAyMzUsIDEyNSwgMTYsIDMzLCAyMTAsIDEzNiwgMTI1LCAxNiwgMzMsIAorICAgIDI0OCwgMjA2LCAyMjYsIDEzOCwgMTI1LCAxNiwgMzMsIDIxNywgMTA3LCA3MywgMjMyLCAxMDksIDEyNSwgMTYsIDMzLCAKKyAgICAyNDgsIDI0OCwgMTI1LCAxNiwgMzMsIDIxMSwgNDUsIDEyNSwgMTYsIDMzLCAyMTQsIDI0LCAyMTEsIDQ1LCAxMjUsIDE2LCAKKyAgICAzMywgMjI5LCAxMzYsIDEyNSwgMTYsIDMzLCAyMTQsIDE5MSwgMTI1LCAxNiwgMzMsIDIwOSwgMTg2LCAxMjUsIDE2LCAzMywgCisgICAgMjM4LCA2NiwgMjQzLCAyMjMsIDEyNSwgMTYsIDMzLCAyNTEsIDIyMCwgMTI1LCAxNiwgMzMsIDIyMCwgMTcxLCAyNTEsIAorICAgIDIyMCwgMTI1LCAxNiwgMzMsIDI0OSwgMTE4LCAxMjUsIDE2LCAzMywgMjIwLCAxNjIsIDI0OSwgMTE4LCAxMjUsIDE2LCAzMywgCisgICAgMjUyLCAxMzUsIDEyNSwgMTYsIDMzLCAyMTMsIDIzOSwgMjEzLCAxNDIsIDIxMywgMjM4LCAxMjUsIDE2LCAzMywgMjEzLCAKKyAgICAyMzksIDIxMywgMTQyLCAyMTMsIDIzNywgMTI1LCAxNiwgMzMsIDIxMywgMTg2LCAxMjUsIDE2LCAzMywgMjIwLCAxMzcsIAorICAgIDEyNSwgMTYsIDMzLCAyNDUsIDg4LCAxMjUsIDE2LCAzMywgMjQ1LCA5MCwgMTI1LCAxNiwgMzMsIDI0NSwgODksIDEyNSwgCisgICAgMTYsIDMzLCAyMjAsIDYyLCAxMjUsIDE2LCAzMywgMjIwLCA1MSwgMTI1LCAxNiwgMzMsIDI0NywgNTEsIDEyNSwgMTYsIDMzLCAKKyAgICAyNDcsIDUwLCAxMjUsIDE2LCAzMywgMjQ3LCA0OSwgMTI1LCAxNiwgMzMsIDI0NywgNDgsIDEyNSwgMTYsIDMzLCAyNDcsIAorICAgIDQ3LCAxMjUsIDE2LCAzMywgMjUyLCAxNzEsIDEyNSwgMTYsIDMzLCAyNTAsIDEwNiwgNzMsIDIyNywgMTgwLCAxMjUsIDE2LCAKKyAgICAzMywgMjUwLCAxMDYsIDczLCAyMDksIDU4LCAxMjUsIDE2LCAzMywgMjE4LCAyMzIsIDEyNSwgMTYsIDMzLCAyMzgsIDU4LCAKKyAgICAxMjUsIDE2LCAzMywgMjI0LCAyMDksIDEyNSwgMTYsIDMzLCAyNDYsIDY2LCAxMjUsIDE2LCAzMywgMjI2LCAxNTIsIDEyNSwgCisgICAgMTYsIDMzLCAxNjAsIDI0MywgMjUzLCAxMjUsIDE2LCAzMywgMTYwLCAyMjIsIDk1LCA2MCwgMjMwLCA0MSwgMjMyLCAyMjMsIAorICAgIDQ4LCAyMTEsIDUxLCA2MCwgMjA5LCAyMDUsIDIzMiwgMjIzLCA0OCwgMjExLCA1MSwgNjAsIDIxOCwgMTYyLCAyMzIsIDIyMywgCisgICAgNDgsIDIxMSwgNTEsIDYwLCAyNDQsIDcsIDIzMiwgMjIzLCA0OCwgMjExLCA1MSwgNjAsIDIxNCwgMjI1LCA1LCAyNDcsIAorICAgIDIzMywgMjI3LCAxMDksIDI0LCA1OSwgMjQ3LCAyMzMsIDI0LCA1OSwgMjQ3LCAyMzMsIDc3LCA1OSwgMjQ3LCAyMzMsIDIwOCwgCisgICAgMjI2LCA3NywgNTksIDI0NywgMjMzLCAyNDIsIDE1MywgNzcsIDU5LCAyNDcsIDIzMywgNTksIDI0NywgMjM0LCAyNDcsIAorICAgIDExOSwgNjAsIDUsIDI0NywgMjMzLCAyMTgsIDk1LCAyMTIsIDE2MSwgNjAsIDIxMSwgMTY5LCAyMTQsIDEwNywgNjAsIDIxNCwgCisgICAgMjI1LCA1LCAyMTQsIDEwNywgMTQ3LCA1OSwgMjE0LCAxMDcsIDIyNywgMTA5LCA1OSwgMjE0LCAxMDcsIDI0LCA1OSwgMjE0LCAKKyAgICAxMDcsIDc3LCA1OSwgMjE0LCAxMDcsIDIwOCwgMjI2LCA3NywgNTksIDIxNCwgMTA3LCAyNDIsIDE1MywgNzcsIDU5LCAyMTQsIAorICAgIDEwNywgNTksIDQ5LCAyNDcsIDExOSwgNjAsIDIwOCwgMjI2LCA1LCAyMTQsIDEwNywgNTksIDQ5LCAyNDcsIDExOSwgNjAsIAorICAgIDIyNywgMTA5LCAyMTQsIDEwNywgNDksIDIxMiwgMTYxLCA2MCwgMjExLCAxNjksIDI0NSwgMTU2LCA2MCwgMjA4LCAyMjYsIAorICAgIDUsIDI0NSwgMTU2LCA2MCwgMjI3LCAxMDksIDUsIDI0NSwgMTU2LCA1OSwgMjQ1LCAxNTcsIDI0NywgMTE5LCA2MCwgMjA4LCAKKyAgICAyMjYsIDUsIDI0NSwgMTU2LCA1OSwgMjQ1LCAxNTcsIDI0NywgMTE5LCA2MCwgMjI3LCAxMDksIDI0NSwgMTU2LCAyNDUsIAorICAgIDE1NywgMjEyLCAxNjEsIDYwLCAyMTEsIDE2OSwgMjI5LCA4OCwgNjAsIDIwOCwgMjI2LCA1LCAyMjksIDg4LCA2MCwgMjI3LCAKKyAgICAxMDksIDUsIDIyOSwgODgsIDU5LCAyMjksIDg5LCAyNDcsIDExOSwgNjAsIDUsIDIyOSwgODgsIDIxMiwgMTIsIDI3LCAyNDcsIAorICAgIDU5LCAxNDcsIDI3LCAyNDcsIDU5LCAyMjcsIDEwOSwgMjcsIDI0NywgNTksIDI0LCAyNywgMjQ3LCA1OSwgMjA4LCAyMjYsIAorICAgIDI0LCAyNywgMjQ3LCA1OSwgMjA4LCAyMjYsIDc3LCAyNywgMjQ3LCA1OSwgMjQyLCAxNTMsIDc3LCAyNywgMjQ3LCA1OSwgCisgICAgMjEyLCAxMiwgMjE3LCAxNjIsIDE0NywgMjE3LCAxNjIsIDIyNywgMTA5LCAyMTcsIDE2MiwgMjQsIDIxNywgMTYyLCA3NywgCisgICAgMjE3LCAxNjIsIDIwOCwgMjI2LCA3NywgMjE3LCAxNjIsIDI0MiwgMTUzLCA3NywgMjE3LCAxNjIsIDE0NywgMjQxLCAyMDQsIAorICAgIDIxNCwgMTE5LCAyNTEsIDIwOSwgMjI3LCAxMDksIDI0MSwgMjA0LCAyMTQsIDExOSwgMjUxLCAyMDksIDI0LCAyNDEsIDIwNCwgCisgICAgMjE0LCAxMTksIDI1MSwgMjA5LCA3NywgMjQxLCAyMDQsIDIxNCwgMTE5LCAyNTEsIDIwOSwgMjA4LCAyMjYsIDc3LCAyNDEsIAorICAgIDIwNCwgMjE0LCAxMTksIDI1MSwgMjA5LCAyNDIsIDE1MywgNzcsIDI0MSwgMjA0LCAyMTQsIDExOSwgMjUxLCAyMDksIDE0NywgCisgICAgMjE1LCAxMCwgMjE0LCAxMTksIDI1MSwgMjA5LCAyMjcsIDEwOSwgMjE1LCAxMCwgMjE0LCAxMTksIDI1MSwgMjA5LCAyNCwgCisgICAgMjE1LCAxMCwgMjE0LCAxMTksIDI1MSwgMjA5LCA3NywgMjE1LCAxMCwgMjE0LCAxMTksIDI1MSwgMjA5LCAyMDgsIDIyNiwgCisgICAgNzcsIDIxNSwgMTAsIDIxNCwgMTE5LCAyNTEsIDIwOSwgMjQyLCAxNTMsIDc3LCAyMTUsIDEwLCAyMTQsIDExOSwgMjUxLCAKKyAgICAyMDksIDE0NywgMjQzLCA4OCwgMjE0LCAxMTksIDI1MSwgMjA5LCAyMjcsIDEwOSwgMjQzLCA4OCwgMjE0LCAxMTksIDI1MSwgCisgICAgMjA5LCAyNCwgMjQzLCA4OCwgMjE0LCAxMTksIDI1MSwgMjA5LCA3NywgMjQzLCA4OCwgMjE0LCAxMTksIDI1MSwgMjA5LCAKKyAgICAyMDgsIDIyNiwgNzcsIDI0MywgODgsIDIxNCwgMTE5LCAyNTEsIDIwOSwgMTQ3LCAxMjksIDIyMCwgMjAzLCA2MCwgMjE0LCAKKyAgICAyNiwgMjI3LCAxMDksIDEyOSwgMjIwLCAyMDMsIDYwLCAyMTQsIDI2LCAxMjksIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgCisgICAgMjI3LCAxMDksIDEyOSwgMjIwLCAyMDMsIDIyMSwgNCwgMjE0LCAyNiwgMTQ3LCAyNDEsIDEyNSwgMjIwLCAyMDMsIDYwLCAKKyAgICAyMTQsIDI2LCAyMjcsIDEwOSwgMjQxLCAxMjUsIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgMjQxLCAxMjUsIDIyMCwgMjAzLCAKKyAgICA2MCwgMjE0LCAyNiwgMjI3LCAxMDksIDI0MSwgMTI1LCAyMjAsIDIwMywgMjIxLCA0LCAyMTQsIDI2LCAyMTgsIDIyNSwgCisgICAgMTQ3LCAyNDEsIDEyNSwgMjIwLCAyMDMsIDIyMSwgNCwgMjE0LCAyNiwgMTQ3LCAyNDEsIDIwNCwgMjIwLCAyMDMsIDYwLCAKKyAgICAyMTQsIDI2LCA3NywgMjQxLCAyMDQsIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgMjI3LCAxMDksIDIxNSwgMTAsIDIyMCwgCisgICAgMjAzLCA2MCwgMjE0LCAyNiwgNzcsIDIxNSwgMTAsIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgMjE1LCAxMCwgMjIwLCAyMDMsIAorICAgIDIyMSwgNCwgMjE0LCAyNiwgMjI3LCAxMDksIDI0MywgODgsIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgNzcsIDI0MywgODgsIAorICAgIDIyMCwgMjAzLCA2MCwgMjE0LCAyNiwgMjA4LCAyMjYsIDc3LCAyNDMsIDg4LCAyMjAsIDIwMywgNjAsIDIxNCwgMjYsIDc3LCAKKyAgICAyNDMsIDg4LCAyMjAsIDIwMywgMjIxLCA0LCAyMTQsIDI2LCAxNDcsIDIxMCwgMTI3LCAyMjAsIDIwMywgNjAsIDIxNCwgMjYsIAorICAgIDc3LCAyMTAsIDEyNywgMjIwLCAyMDMsIDYwLCAyMTQsIDI2LCA3NywgMjEwLCAxMjcsIDIyMCwgMjAzLCAyMjEsIDQsIDIxNCwgCisgICAgMjYsIDkyLCA1MSwgMiwgNSwgMjExLCA1MiwgMjUxLCAyNDMsIDE2NywgNTEsIDIsIDUsIDIxMSwgNTIsIDI1MSwgMjQzLCAKKyAgICA4NiwgNTEsIDIsIDUsIDIxMSwgNTIsIDI1MSwgMjQzLCAxNzMsIDUxLCAyLCA1LCAyMTEsIDUyLCAyNTEsIDI0MywgOTIsIAorICAgIDUxLCAyLCAyMjcsIDEwOSwgMjExLCA1MiwgMjUxLCAyNDMsIDE2NywgNTEsIDIsIDIyNywgMTA5LCAyMTEsIDUyLCAyNTEsIAorICAgIDI0MywgODYsIDUxLCAyLCAyMjcsIDEwOSwgMjExLCA1MiwgMjUxLCAyNDMsIDE3MywgNTEsIDIsIDIyNywgMTA5LCAyMTEsIAorICAgIDUyLCAyNTEsIDI0MywgOTIsIDUxLCAyLCAyMzAsIDg2LCAyMTEsIDUyLCAyNTEsIDI0MywgMTY3LCA1MSwgMiwgMjMwLCA4NiwgCisgICAgMjExLCA1MiwgMjUxLCAyNDMsIDg2LCA1MSwgMiwgMjMwLCA4NiwgMjExLCA1MiwgMjUxLCAyNDMsIDE3MywgNTEsIDIsIAorICAgIDIzMCwgODYsIDIxMSwgNTIsIDI1MSwgMjQzLCA5MiwgNTEsIDIsIDUsIDI0MiwgMjM4LCAyNTEsIDI0MywgMTY3LCA1MSwgMiwgCisgICAgNSwgMjQyLCAyMzgsIDI1MSwgMjQzLCA4NiwgNTEsIDIsIDUsIDI0MiwgMjM4LCAyNTEsIDI0MywgMTczLCA1MSwgMiwgNSwgCisgICAgMjQyLCAyMzgsIDI1MSwgMjQzLCA5MiwgNTEsIDIsIDI0MiwgMjM4LCAyNTEsIDI0MywgMTY3LCA1MSwgMiwgMjQyLCAyMzgsIAorICAgIDI1MSwgMjQzLCA4NiwgNTEsIDIsIDI0MiwgMjM4LCAyNTEsIDI0MywgMTczLCA1MSwgMiwgMjQyLCAyMzgsIDI1MSwgMjQzLCAKKyAgICA3NywgOTIsIDUxLCAyLCAyNDIsIDIzOCwgMjUxLCAyNDMsIDc3LCAxNjcsIDUxLCAyLCAyNDIsIDIzOCwgMjUxLCAyNDMsIAorICAgIDc3LCA4NiwgNTEsIDIsIDI0MiwgMjM4LCAyNTEsIDI0MywgNzcsIDE3MywgNTEsIDIsIDI0MiwgMjM4LCAyNTEsIDI0MywgCisgICAgNzcsIDkyLCA1MSwgMiwgMjMwLCA4NiwgMjQyLCAyMzgsIDI1MSwgMjQzLCA3NywgMTY3LCA1MSwgMiwgMjMwLCA4NiwgMjQyLCAKKyAgICAyMzgsIDI1MSwgMjQzLCA3NywgODYsIDUxLCAyLCAyMzAsIDg2LCAyNDIsIDIzOCwgMjUxLCAyNDMsIDc3LCAxNzMsIDUxLCAKKyAgICAyLCAyMzAsIDg2LCAyNDIsIDIzOCwgMjUxLCAyNDMsIDkyLCAyMTEsIDUwLCA1MSwgMiwgMjI1LCAxOTksIDIxNSwgMjQ0LCAKKyAgICAxNjcsIDIxMSwgNTAsIDUxLCAyLCAyMjUsIDE5OSwgMjE1LCAyNDQsIDg2LCAyMTEsIDUwLCA1MSwgMiwgMjI1LCAxOTksIAorICAgIDIxNSwgMjQ0LCAxNzMsIDIxMSwgNTAsIDUxLCAyLCAyMjUsIDE5OSwgMjE1LCAyNDQsIDkyLCAyMTEsIDUwLCA1MSwgMiwgCisgICAgMjI3LCAxMDksIDIxNSwgMjQ0LCAxNjcsIDIxMSwgNTAsIDUxLCAyLCAyMjcsIDEwOSwgMjE1LCAyNDQsIDg2LCAyMTEsIDUwLCAKKyAgICA1MSwgMiwgMjI3LCAxMDksIDIxNSwgMjQ0LCAxNzMsIDIxMSwgNTAsIDUxLCAyLCAyMjcsIDEwOSwgMjE1LCAyNDQsIDkyLCAKKyAgICAyMTEsIDUwLCA1MSwgMiwgMjQsIDIxNSwgMjQ0LCAxNjcsIDIxMSwgNTAsIDUxLCAyLCAyNCwgMjE1LCAyNDQsIDg2LCAyMTEsIAorICAgIDUwLCA1MSwgMiwgMjQsIDIxNSwgMjQ0LCAxNzMsIDIxMSwgNTAsIDUxLCAyLCAyNCwgMjE1LCAyNDQsIDkyLCAyMTEsIDUwLCAKKyAgICA1MSwgMiwgNzcsIDIxNSwgMjQ0LCAxNjcsIDIxMSwgNTAsIDUxLCAyLCA3NywgMjE1LCAyNDQsIDg2LCAyMTEsIDUwLCA1MSwgCisgICAgMiwgNzcsIDIxNSwgMjQ0LCAxNzMsIDIxMSwgNTAsIDUxLCAyLCA3NywgMjE1LCAyNDQsIDkyLCAyMTEsIDUwLCA1MSwgMiwgCisgICAgMjA4LCAyMjYsIDc3LCAyMTUsIDI0NCwgMTY3LCAyMTEsIDUwLCA1MSwgMiwgMjA4LCAyMjYsIDc3LCAyMTUsIDI0NCwgODYsIAorICAgIDIxMSwgNTAsIDUxLCAyLCAyMDgsIDIyNiwgNzcsIDIxNSwgMjQ0LCAxNzMsIDIxMSwgNTAsIDUxLCAyLCAyMDgsIDIyNiwgCisgICAgNzcsIDIxNSwgMjQ0LCA5MiwgMjQxLCAyMjcsIDQ1LCAxNjcsIDI0MSwgMjI3LCA0NSwgODYsIDI0MSwgMjI3LCA0NSwgMTczLCAKKyAgICAyNDEsIDIyNywgNDUsIDkyLCA5OCwgNDUsIDE2NywgOTgsIDQ1LCA4NiwgOTgsIDQ1LCAxNzMsIDk4LCA0NSwgOTIsIDI0NywgCisgICAgMTQ0LCA0NSwgMTY3LCAyNDcsIDE0NCwgNDUsIDg2LCAyNDcsIDE0NCwgNDUsIDE3MywgMjQ3LCAxNDQsIDQ1LCA5MiwgNzcsIAorICAgIDI0NywgMTQ0LCA0NSwgMTY3LCA3NywgMjQ3LCAxNDQsIDQ1LCA4NiwgNzcsIDI0NywgMTQ0LCA0NSwgMTczLCA3NywgMjQ3LCAKKyAgICAxNDQsIDQ1LCA5MiwgNzcsIDQ1LCAxNjcsIDc3LCA0NSwgODYsIDc3LCA0NSwgMTczLCA3NywgNDUsIDkyLCAzOCwgNDUsIAorICAgIDE2NywgMzgsIDQ1LCA4NiwgMzgsIDQ1LCAxNzMsIDM4LCA0NSwgMTQzLCAyMDcsIDM2LCAzOCwgNDUsIDE0MywgMjQzLCAKKyAgICAxMTcsIDM4LCA0NSwgMTg4LCAyNDMsIDExNywgMzgsIDQ1LCAxODgsIDIwNywgMzYsIDM4LCA0NSwgNDcsIDQ4LCAzOCwgNDUsIAorICAgIDEyMCwgMTMwLCAzOCwgNDUsIDIwNywgMTYsIDkyLCAxNDcsIDEzOCwgNDUsIDIwNywgMTYsIDE2NywgMTQ3LCAxMzgsIDQ1LCAKKyAgICAyMDcsIDE2LCA4NiwgMTQ3LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNzMsIDE0NywgMTM4LCA0NSwgMjA3LCAxNiwgMTQzLCAyMDcsIAorICAgIDM2LCAxNDcsIDEzOCwgNDUsIDIwNywgMTYsIDE0MywgMjQzLCAxMTcsIDE0NywgMTM4LCA0NSwgMjA3LCAxNiwgMTg4LCAKKyAgICAyNDMsIDExNywgMTQ3LCAxMzgsIDQ1LCAyMDcsIDE2LCAxODgsIDIwNywgMzYsIDE0NywgMTM4LCA0NSwgMjA3LCAxNiwgOTIsIAorICAgIDEzOCwgNDUsIDIwNywgMTYsIDE2NywgMTM4LCA0NSwgMjA3LCAxNiwgODYsIDEzOCwgNDUsIDIwNywgMTYsIDE3MywgMTM4LCAKKyAgICA0NSwgMjA3LCAxNiwgMTQzLCAyMDcsIDM2LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNDMsIDI0MywgMTE3LCAxMzgsIDQ1LCAyMDcsIAorICAgIDE2LCAxODgsIDI0MywgMTE3LCAxMzgsIDQ1LCAyMDcsIDE2LCAxODgsIDIwNywgMzYsIDEzOCwgNDUsIDIwNywgMTYsIDkyLCAKKyAgICAyMjcsIDEwOSwgMTM4LCA0NSwgMjA3LCAxNiwgMTY3LCAyMjcsIDEwOSwgMTM4LCA0NSwgMjA3LCAxNiwgODYsIDIyNywgCisgICAgMTA5LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNzMsIDIyNywgMTA5LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNDMsIDIwNywgMzYsIAorICAgIDIyNywgMTA5LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNDMsIDI0MywgMTE3LCAyMjcsIDEwOSwgMTM4LCA0NSwgMjA3LCAxNiwgCisgICAgMTg4LCAyNDMsIDExNywgMjI3LCAxMDksIDEzOCwgNDUsIDIwNywgMTYsIDE4OCwgMjA3LCAzNiwgMjI3LCAxMDksIDEzOCwgCisgICAgNDUsIDIwNywgMTYsIDkyLCA3NywgMTM4LCA0NSwgMjA3LCAxNiwgMTY3LCA3NywgMTM4LCA0NSwgMjA3LCAxNiwgODYsIDc3LCAKKyAgICAxMzgsIDQ1LCAyMDcsIDE2LCAxNzMsIDc3LCAxMzgsIDQ1LCAyMDcsIDE2LCAxNDMsIDIwNywgMzYsIDc3LCAxMzgsIDQ1LCAKKyAgICAyMDcsIDE2LCAxNDMsIDI0MywgMTE3LCA3NywgMTM4LCA0NSwgMjA3LCAxNiwgMTg4LCAyNDMsIDExNywgNzcsIDEzOCwgNDUsIAorICAgIDIwNywgMTYsIDE4OCwgMjA3LCAzNiwgNzcsIDEzOCwgNDUsIDIwNywgMTYsIDkyLCAyMDgsIDIyNiwgNzcsIDEzOCwgNDUsIAorICAgIDIwNywgMTYsIDE2NywgMjA4LCAyMjYsIDc3LCAxMzgsIDQ1LCAyMDcsIDE2LCA4NiwgMjA4LCAyMjYsIDc3LCAxMzgsIDQ1LCAKKyAgICAyMDcsIDE2LCAxNzMsIDIwOCwgMjI2LCA3NywgMTM4LCA0NSwgMjA3LCAxNiwgMTQzLCAyMDcsIDM2LCAyMDgsIDIyNiwgNzcsIAorICAgIDEzOCwgNDUsIDIwNywgMTYsIDE0MywgMjQzLCAxMTcsIDIwOCwgMjI2LCA3NywgMTM4LCA0NSwgMjA3LCAxNiwgMTg4LCAKKyAgICAyNDMsIDExNywgMjA4LCAyMjYsIDc3LCAxMzgsIDQ1LCAyMDcsIDE2LCAxODgsIDIwNywgMzYsIDIwOCwgMjI2LCA3NywgCisgICAgMTM4LCA0NSwgOTIsIDIxMSwgNTIsIDI1MSwgMjQzLCAxNjcsIDIxMSwgNTIsIDI1MSwgMjQzLCA4NiwgMjExLCA1MiwgMjUxLCAKKyAgICAyNDMsIDE3MywgMjExLCA1MiwgMjUxLCAyNDMsIDkyLCA1OSwgNTEsIDIwNiwgMjU1LCAyMTEsIDUyLCAyNTEsIDI0MywgCisgICAgMTY3LCA1OSwgNTEsIDIwNiwgMjU1LCAyMTEsIDUyLCAyNTEsIDI0MywgODYsIDU5LCA1MSwgMjA2LCAyNTUsIDIxMSwgNTIsIAorICAgIDI1MSwgMjQzLCAxNzMsIDU5LCA1MSwgMjA2LCAyNTUsIDIxMSwgNTIsIDI1MSwgMjQzLCA5MiwgNTEsIDIsIDIyNCwgMzksIAorICAgIDIxMiwgMTkxLCAxNjcsIDUxLCAyLCAyMjQsIDM5LCAyMTIsIDE5MSwgODYsIDUxLCAyLCAyMjQsIDM5LCAyMTIsIDE5MSwgCisgICAgMTczLCA1MSwgMiwgMjI0LCAzOSwgMjEyLCAxOTEsIDc3LCA1MSwgMjE1LCAyNDUsIDIwNywgMTUsIDEwMiwgNzcsIDUxLCAKKyAgICAyMTUsIDI0NSwgMjA3LCAxNSwgMTE4LCAyMTIsIDcsIDc3LCA1MSwgMjE1LCAyNDUsIDIwNywgMTUsIDExOSwgMjM5LCAxMjEsIAorICAgIDc3LCA1MSwgMjE1LCAyNDUsIDIwNywgMTUsIDExOSwgMjEyLCAxMCwgOTIsIDI0OSwgMTUxLCA1OSwgNDUsIDg2LCAyNDksIAorICAgIDE1NCwgMjE1LCAyNDcsIDU5LCA0NSwgOTIsIDIxMSwgMTAyLCAyMTUsIDI0NywgNTksIDQ1LCA4NiwgMjExLCAxMDIsIDIxNSwgCisgICAgMjQ3LCA1OSwgNDUsIDkyLCAyMzAsIDQwLCA1OSwgNDUsIDg2LCAyMTgsIDE2MSwgNTksIDQ1LCA5MiwgMjE4LCAxNjEsIDU5LCAKKyAgICA0NSwgODYsIDIzMCwgNDAsIDU5LCA0NSwgOTIsIDI1MCwgMTc1LCAyMTUsIDI0NiwgNTksIDQ1LCA4NiwgMjUwLCAxNzUsIAorICAgIDIxNSwgMjQ2LCA1OSwgNDUsIDkyLCAyNDEsIDk2LCAyMTUsIDI0NiwgNTksIDQ1LCA4NiwgMjQxLCA5NiwgMjE1LCAyNDYsIAorICAgIDU5LCA0NSwgNTksIDUxLCAyMTUsIDI0NSwgMjA3LCAxNSwgMTAyLCA1OSwgNTEsIDIxNSwgMjQ1LCAyMDcsIDE1LCAxMTgsIAorICAgIDIxMiwgNywgMTAsIDE1LCAyMzcsIDE3MSwgMTAsIDE1LCAyMzcsIDE3MCwgMTAsIDE1LCAyMzcsIDE2OSwgMTAsIDE1LCAKKyAgICAyMzcsIDE2OCwgMTAsIDE1LCAyMzcsIDE2NywgMTAsIDE1LCAyMzcsIDE2NiwgMTAsIDE1LCAyMzcsIDE2NSwgMTAsIDE1LCAKKyAgICAyMzcsIDE2NCwgMTAsIDE1LCAyMzcsIDE2MywgMTAsIDE1LCAyMzcsIDE2MiwgMTAsIDE1LCAyMzcsIDE2MSwgMTAsIDE1LCAKKyAgICAyMzcsIDE2MCwgMTAsIDE1LCAyMzcsIDE1OSwgMTAsIDE1LCAyMzcsIDE1OCwgMTAsIDE1LCAyMzcsIDE1NywgMTAsIDE1LCAKKyAgICAyMzcsIDE1NiwgMTAsIDE1LCAyMzcsIDE1NSwgMTAsIDE1LCAyMzcsIDE1NCwgMTAsIDE1LCAyMzcsIDE1MywgMTAsIDE1LCAKKyAgICAyMzcsIDE1MiwgMTAsIDE1LCAyMzcsIDE1MSwgMTAsIDE1LCAyMzcsIDE1MCwgMTAsIDE1LCAyMzcsIDE0OSwgMTAsIDE1LCAKKyAgICAyMzcsIDE0OCwgMTAsIDE1LCAyMzcsIDE0NywgMTAsIDE1LCAyMzcsIDE0NiwgMTAsIDE1LCAyMzcsIDE0NSwgMTAsIDE1LCAKKyAgICAyMzcsIDE0NCwgMTAsIDE1LCAyMzcsIDE0MywgMTAsIDE1LCAyMzcsIDE0MiwgMTAsIDE1LCAyMzcsIDE0MSwgMTAsIDE1LCAKKyAgICAyMzcsIDE0MCwgMTAsIDE1LCAyMzcsIDEzOSwgMTAsIDE1LCAyMzcsIDEzOCwgMTAsIDE1LCAyMzcsIDEzNywgMTAsIDE1LCAKKyAgICAyMzcsIDEzNiwgMTAsIDE1LCAyMzcsIDEzNSwgMTAsIDE1LCAyMzcsIDEzNCwgMTAsIDE1LCAyMzcsIDEzMywgMTAsIDE1LCAKKyAgICAyMzcsIDEzMiwgMTAsIDE1LCAyMzcsIDEzMSwgMTAsIDE1LCAyMzcsIDEzMCwgMTAsIDE1LCAyMzcsIDEyOSwgMTAsIDE1LCAKKyAgICAyMzcsIDEyOCwgMTAsIDE1LCAyMzcsIDEyNywgMTAsIDE1LCAyMzcsIDEyNiwgMTAsIDE1LCAyMzcsIDEyNSwgMTAsIDE1LCAKKyAgICAyMzcsIDEyNCwgMTAsIDE1LCAyMzcsIDEyMywgMTAsIDE1LCAyMzcsIDEyMiwgMTAsIDE1LCAyMzcsIDEyMSwgMTAsIDE1LCAKKyAgICAyMzcsIDEyMCwgMTAsIDE1LCAyMzcsIDExOSwgMTAsIDE1LCAyMzcsIDExOCwgMTAsIDE1LCAyMzcsIDExNywgMTAsIDE1LCAKKyAgICAyMzcsIDExNiwgMTAsIDE1LCAyMzcsIDExNSwgMTAsIDE1LCAyMzcsIDExNCwgMTAsIDE1LCAyMzcsIDExMywgMTAsIDE1LCAKKyAgICAyMzcsIDExMiwgMTAsIDE1LCAyMzcsIDExMSwgMTAsIDE1LCAyMzcsIDExMCwgMTAsIDE1LCAyMzcsIDEwOSwgMTAsIDE1LCAKKyAgICAyMzcsIDEwOCwgMTAsIDE1LCAyMzcsIDEwNywgMTAsIDE1LCAyMzcsIDEwNiwgMTAsIDE1LCAyMzcsIDEwNSwgMTAsIDE1LCAKKyAgICAyMzcsIDEwNCwgMTAsIDE1LCAyMzcsIDEwMywgMTAsIDE1LCAyMzcsIDEwMiwgMTAsIDE1LCAyMzcsIDEwMSwgMTAsIDE1LCAKKyAgICAyMzcsIDEwMCwgMTAsIDE1LCAyMzcsIDk5LCAxMCwgMTUsIDIzNywgOTgsIDEwLCAxNSwgMjM3LCA5NywgMTAsIDE1LCAyMzcsIAorICAgIDk2LCAxMCwgMTUsIDIzNywgOTUsIDEwLCAxNSwgMjM3LCA5NCwgMTAsIDE1LCAyMzcsIDkzLCAxMCwgMTUsIDIzNywgOTIsIAorICAgIDEwLCAxNSwgMjM3LCA5MSwgMTAsIDE1LCAyMzcsIDkwLCAxMCwgMTUsIDIzNywgODksIDEwLCAxNSwgMjM3LCA4OCwgMTAsIAorICAgIDE1LCAyMzcsIDg3LCAxMCwgMTUsIDIzNywgODYsIDEwLCAxNSwgMjM3LCA4NSwgMTAsIDE1LCAyMzcsIDg0LCAxMCwgMTUsIAorICAgIDIzNywgODMsIDEwLCAxNSwgMjM3LCA4MiwgMTAsIDE1LCAyMzcsIDgxLCAxMCwgMTUsIDIzNywgODAsIDEwLCAxNSwgMjM3LCAKKyAgICA3OSwgMTAsIDE1LCAyMzcsIDc4LCAxMCwgMTUsIDIzNywgNzcsIDEwLCAxNSwgMjM3LCA3NiwgMTAsIDE1LCAyMzcsIDc1LCAKKyAgICAxMCwgMTUsIDIzNywgNzQsIDEwLCAxNSwgMjM3LCA3MywgMTAsIDE1LCAyMzcsIDcyLCAxMCwgMTUsIDIzNywgNzEsIDEwLCAKKyAgICAxNSwgMjM3LCA3MCwgMTAsIDE1LCAyMzcsIDY5LCAxMCwgMTUsIDIzNywgNjgsIDEwLCAxNSwgMjM3LCA2NywgMTAsIDE1LCAKKyAgICAyMzcsIDY2LCAxMCwgMTUsIDIzNywgNjUsIDEwLCAxNSwgMjM3LCA2NCwgMTAsIDE1LCAyMzcsIDYzLCAxMCwgMTUsIDIzNywgCisgICAgNjIsIDEwLCAxNSwgMjM3LCA2MSwgMTAsIDE1LCAyMzcsIDYwLCAxMCwgMTUsIDIzNywgNTksIDEwLCAxNSwgMjM3LCA1OCwgCisgICAgMTAsIDE1LCAyMzcsIDU3LCAxMCwgMTUsIDIzNywgNTYsIDEwLCAxNSwgMjM3LCA1NSwgMTAsIDE1LCAyMzcsIDU0LCAxMCwgCisgICAgMTUsIDIzNywgNTMsIDEwLCAxNSwgMjM3LCA1MiwgMTAsIDE1LCAyMzcsIDUxLCAxMCwgMTUsIDIzNywgNTAsIDEwLCAxNSwgCisgICAgMjM3LCA0OSwgMTAsIDE1LCAyMzcsIDQ4LCAxMCwgMTUsIDIzNywgNDcsIDEwLCAxNSwgMjM3LCA0NiwgMTAsIDE1LCAyMzcsIAorICAgIDQ1LCAxMCwgMTUsIDIzNywgNDQsIDEwLCAxNSwgMjM3LCA0MywgMTAsIDE1LCAyMzcsIDQyLCAxMCwgMTUsIDIzNywgNDEsIAorICAgIDEwLCAxNSwgMjM3LCA0MCwgMTAsIDE1LCAyMzcsIDM5LCAxMCwgMTUsIDIzNywgMzgsIDEwLCAxNSwgMjM3LCAzNywgMTAsIAorICAgIDE1LCAyMzcsIDM2LCAxMCwgMTUsIDIzNywgMzUsIDEwLCAxNSwgMjM3LCAzNCwgMTAsIDE1LCAyMzcsIDMzLCAxMCwgMTUsIAorICAgIDIzNywgMzIsIDEwLCAxNSwgMjM3LCAzMSwgMTAsIDE1LCAyMzcsIDMwLCAxMCwgMTUsIDIzNywgMjksIDEwLCAxNSwgMjM3LCAKKyAgICAyOCwgMTAsIDE1LCAyMzcsIDI3LCAxMCwgMTUsIDIzNywgMjYsIDEwLCAxNSwgMjM3LCAyNSwgMTAsIDE1LCAyMzcsIDI0LCAKKyAgICAxMCwgMTUsIDIzNywgMjMsIDEwLCAxNSwgMjM3LCAyMiwgMTAsIDE1LCAyMzcsIDIxLCAxMCwgMTUsIDIzNywgMjAsIDEwLCAKKyAgICAxNSwgMjM3LCAxOSwgMTAsIDE1LCAyMzcsIDE4LCAxMCwgMTUsIDIzNywgMTcsIDEwLCAxNSwgMjM3LCAxNiwgMTAsIDE1LCAKKyAgICAyMzcsIDE1LCAxMCwgMTUsIDIzNywgMTQsIDEwLCAxNSwgMjM3LCAxMywgMTAsIDE1LCAyMzcsIDEyLCAxMCwgMTUsIDIzNywgCisgICAgMTEsIDEwLCAxNSwgMjM3LCAxMCwgMTAsIDE1LCAyMzcsIDksIDEwLCAxNSwgMjM3LCA4LCAxMCwgMTUsIDIzNywgNywgMTAsIAorICAgIDE1LCAyMzcsIDYsIDEwLCAxNSwgMjM3LCA1LCAxMCwgMTUsIDIzNywgNCwgMTAsIDE1LCAyMzcsIDMsIDEwLCAxNSwgMjM3LCAKKyAgICAyLCAxMCwgMTUsIDIzNywgMSwgMTAsIDE1LCAyMzcsIDAsIDEwLCAxNSwgMjM2LCAyNTUsIDEwLCAxNSwgMjM2LCAyNTQsIAorICAgIDEwLCAxNSwgMjM2LCAyNTMsIDEwLCAxNSwgMjM2LCAyNTIsIDEwLCAxNSwgMjM2LCAyNTEsIDEwLCAxNSwgMjM2LCAyNTAsIAorICAgIDEwLCAxNSwgMjM2LCAyNDksIDEwLCAxNSwgMjM2LCAyNDgsIDEwLCAxNSwgMjM2LCAyNDcsIDEwLCAxNSwgMjM2LCAyNDYsIAorICAgIDEwLCAxNSwgMjM2LCAyNDUsIDEwLCAxNSwgMjM2LCAyNDQsIDEwLCAxNSwgMjM2LCAyNDMsIDEwLCAxNSwgMjM2LCAyNDIsIAorICAgIDEwLCAxNSwgMjM2LCAyNDEsIDEwLCAxNSwgMjM2LCAyNDAsIDEwLCAxNSwgMjM2LCAyMzksIDEwLCAxNSwgMjM2LCAyMzgsIAorICAgIDEwLCAxNSwgMjM2LCAyMzcsIDEwLCAxNSwgMjM2LCAyMzYsIDEwLCAxNSwgMjM2LCAyMzUsIDEwLCAxNSwgMjM2LCAyMzQsIAorICAgIDEwLCAxNSwgMjM2LCAyMzMsIDEwLCAxNSwgMjM2LCAyMzIsIDEwLCAxNSwgMjM2LCAyMzEsIDEwLCAxNSwgMjM2LCAyMzAsIAorICAgIDEwLCAxNSwgMjM2LCAyMjksIDEwLCAxNSwgMjM2LCAyMjgsIDEwLCAxNSwgMjM2LCAyMjcsIDEwLCAxNSwgMjM2LCAyMjYsIAorICAgIDEwLCAxNSwgMjM2LCAyMjUsIDEwLCAxNSwgMjM2LCAyMjQsIDEwLCAxNSwgMjM2LCAyMjMsIDEwLCAxNSwgMjM2LCAyMjIsIAorICAgIDEwLCAxNSwgMjM2LCAyMjEsIDEwLCAxNSwgMjM2LCAyMjAsIDEwLCAxNSwgMjM2LCAyMTksIDEwLCAxNSwgMjM2LCAyMTgsIAorICAgIDEwLCAxNSwgMjM2LCAyMTcsIDEwLCAxNSwgMjM2LCAyMTYsIDEwLCAxNSwgMjM2LCAyMTUsIDEwLCAxNSwgMjM2LCAyMTQsIAorICAgIDEwLCAxNSwgMjM2LCAyMTMsIDEwLCAxNSwgMjM2LCAyMTIsIDEwLCAxNSwgMjM2LCAyMTEsIDEwLCAxNSwgMjM2LCAyMTAsIAorICAgIDEwLCAxNSwgMjM2LCAyMDksIDEwLCAxNSwgMjM2LCAyMDgsIDEwLCAxNSwgMjM2LCAyMDcsIDEwLCAxNSwgMjM2LCAyMDYsIAorICAgIDEwLCAxNSwgMjM2LCAyMDUsIDEwLCAxNSwgMjM2LCAyMDQsIDEwLCAxNSwgMjM2LCAyMDMsIDEwLCAxNSwgMjM2LCAyMDIsIAorICAgIDEwLCAxNSwgMjM2LCAyMDEsIDEwLCAxNSwgMjM2LCAyMDAsIDEwLCAxNSwgMjM2LCAxOTksIDEwLCAxNSwgMjM2LCAxOTgsIAorICAgIDEwLCAxNSwgMjM2LCAxOTcsIDEwLCAxNSwgMjM2LCAxOTYsIDEwLCAxNSwgMjM2LCAxOTUsIDEwLCAxNSwgMjM2LCAxOTQsIAorICAgIDEwLCAxNSwgMjM2LCAxOTMsIDEwLCAxNSwgMjM2LCAxOTIsIDEwLCAxNSwgMjM2LCAxOTEsIDEwLCAxNSwgMjM2LCAxOTAsIAorICAgIDEwLCAxNSwgMjM2LCAxODksIDEwLCAxNSwgMjM2LCAxODgsIDEwLCAxNSwgMjM2LCAxODcsIDEwLCAxNSwgMjM2LCAxODYsIAorICAgIDEwLCAxNSwgMjM2LCAxODUsIDEwLCAxNSwgMjM2LCAxODQsIDEwLCAxNSwgMjM2LCAxODMsIDEwLCAxNSwgMjM2LCAxODIsIAorICAgIDEwLCAxNSwgMjM2LCAxODEsIDEwLCAxNSwgMjM2LCAxODAsIDEwLCAxNSwgMjM2LCAxNzksIDEwLCAxNSwgMjM2LCAxNzgsIAorICAgIDEwLCAxNSwgMjM2LCAxNzcsIDEwLCAxNSwgMjM2LCAxNzYsIDEwLCAxNSwgMjM2LCAxNzUsIDEwLCAxNSwgMjM2LCAxNzQsIAorICAgIDEwLCAxNSwgMjM2LCAxNzMsIDEwLCAxNSwgMjM2LCAxNzIsIDEwLCAxNSwgMjM2LCAxNzEsIDEwLCAxNSwgMjM2LCAxNzAsIAorICAgIDEwLCAxNSwgMjM2LCAxNjksIDEwLCAxNSwgMjM2LCAxNjgsIDEwLCAxNSwgMjM2LCAxNjcsIDEwLCAxNSwgMjM2LCAxNjYsIAorICAgIDEwLCAxNSwgMjM2LCAxNjUsIDEwLCAxNSwgMjM2LCAxNjQsIDEwLCAxNSwgMjM2LCAxNjMsIDEwLCAxNSwgMjM2LCAxNjIsIAorICAgIDEwLCAxNSwgMjM2LCAxNjEsIDEwLCAxNSwgMjM2LCAxNjAsIDEwLCAxNSwgMjM2LCAxNTksIDEwLCAxNSwgMjM2LCAxNTgsIAorICAgIDEwLCAxNSwgMjM2LCAxNTcsIDEwLCAxNSwgMjM2LCAxNTYsIDEwLCAxNSwgMjM2LCAxNTUsIDEwLCAxNSwgMjM2LCAxNTQsIAorICAgIDEwLCAxNSwgMjM2LCAxNTMsIDEwLCAxNSwgMjM2LCAxNTIsIDEwLCAxNSwgMjM2LCAxNTEsIDEwLCAxNSwgMjM2LCAxNTAsIAorICAgIDEwLCAxNSwgMjM2LCAxNDksIDEwLCAxNSwgMjM2LCAxNDgsIDEwLCAxNSwgMjM2LCAxNDcsIDEwLCAxNSwgMjM2LCAxNDYsIAorICAgIDEwLCAxNSwgMjM2LCAxNDUsIDEwLCAxNSwgMjM2LCAxNDQsIDEwLCAxNSwgMjM2LCAxNDMsIDEwLCAxNSwgMjM2LCAxNDIsIAorICAgIDEwLCAxNSwgMjM2LCAxNDEsIDEwLCAxNSwgMjM2LCAxNDAsIDEwLCAxNSwgMjM2LCAxMzksIDEwLCAxNSwgMjM2LCAxMzgsIAorICAgIDEwLCAxNSwgMjM2LCAxMzcsIDEwLCAxNSwgMjM2LCAxMzYsIDEwLCAxNSwgMjM2LCAxMzUsIDEwLCAxNSwgMjM2LCAxMzQsIAorICAgIDEwLCAxNSwgMjM2LCAxMzMsIDEwLCAxNSwgMjM2LCAxMzIsIDEwLCAxNSwgMjM2LCAxMzEsIDEwLCAxNSwgMjM2LCAxMzAsIAorICAgIDEwLCAxNSwgMjM2LCAxMjksIDEwLCAxNSwgMjM2LCAxMjgsIDEwLCAxNSwgMjM2LCAxMjcsIDEwLCAxNSwgMjM2LCAxMjYsIAorICAgIDEwLCAxNSwgMjM2LCAxMjUsIDEwLCAxNSwgMjM2LCAxMjQsIDEwLCAxNSwgMjM2LCAxMjMsIDEwLCAxNSwgMjM2LCAxMjIsIAorICAgIDEwLCAxNSwgMjM2LCAxMjEsIDEwLCAxNSwgMjM2LCAxMjAsIDEwLCAxNSwgMjM2LCAxMTksIDEwLCAxNSwgMjM2LCAxMTgsIAorICAgIDEwLCAxNSwgMjM2LCAxMTcsIDEwLCAxNSwgMjM2LCAxMTYsIDEwLCAxNSwgMjM2LCAxMTUsIDEwLCAxNSwgMjM2LCAxMTQsIAorICAgIDEwLCAxNSwgMjM2LCAxMTMsIDEwLCAxNSwgMjM2LCAxMTIsIDEwLCAxNSwgMjM2LCAxMTEsIDEwLCAxNSwgMjM2LCAxMTAsIAorICAgIDEwLCAxNSwgMjM2LCAxMDksIDEwLCAxNSwgMjM2LCAxMDgsIDEwLCAxNSwgMjM2LCAxMDcsIDEwLCAxNSwgMjM2LCAxMDYsIAorICAgIDEwLCAxNSwgMjM2LCAxMDUsIDEwLCAxNSwgMjM2LCAxMDQsIDEwLCAxNSwgMjM2LCAxMDMsIDEwLCAxNSwgMjM2LCAxMDIsIAorICAgIDEwLCAxNSwgMjM2LCAxMDEsIDEwLCAxNSwgMjM2LCAxMDAsIDEwLCAxNSwgMjM2LCA5OSwgMTAsIDE1LCAyMzYsIDk4LCAxMCwgCisgICAgMTUsIDIzNiwgOTcsIDEwLCAxNSwgMjM2LCA5NiwgMTAsIDE1LCAyMzYsIDk1LCAxMCwgMTUsIDIzNiwgOTQsIDEwLCAxNSwgCisgICAgMjM2LCA5MywgMTAsIDE1LCAyMzYsIDkyLCAxMCwgMTUsIDIzNiwgOTEsIDEwLCAxNSwgMjM2LCA5MCwgMTAsIDE1LCAyMzYsIAorICAgIDg5LCAxMCwgMTUsIDIzNiwgODgsIDEwLCAxNSwgMjM2LCA4NywgMTAsIDE1LCAyMzYsIDg2LCAxMCwgMTUsIDIzNiwgODUsIAorICAgIDEwLCAxNSwgMjM2LCA4NCwgMTAsIDE1LCAyMzYsIDgzLCAxMCwgMTUsIDIzNiwgODIsIDEwLCAxNSwgMjM2LCA4MSwgMTAsIAorICAgIDE1LCAyMzYsIDgwLCAxMCwgMTUsIDIzNiwgNzksIDEwLCAxNSwgMjM2LCA3OCwgMTAsIDE1LCAyMzYsIDc3LCAxMCwgMTUsIAorICAgIDIzNiwgNzYsIDEwLCAxNSwgMjM2LCA3NSwgMTAsIDE1LCAyMzYsIDc0LCAxMCwgMTUsIDIzNiwgNzMsIDEwLCAxNSwgMjM2LCAKKyAgICA3MiwgMTAsIDE1LCAyMzYsIDcxLCAxMCwgMTUsIDIzNiwgNzAsIDEwLCAxNSwgMjM2LCA2OSwgMTAsIDE1LCAyMzYsIDY4LCAKKyAgICAxMCwgMTUsIDIzNiwgNjcsIDEwLCAxNSwgMjM2LCA2NiwgMTAsIDE1LCAyMzYsIDY1LCAxMCwgMTUsIDIzNiwgNjQsIDEwLCAKKyAgICAxNSwgMjM2LCA2MywgMTAsIDE1LCAyMzYsIDYyLCAxMCwgMTUsIDIzNiwgNjEsIDEwLCAxNSwgMjM2LCA2MCwgMTAsIDE1LCAKKyAgICAyMzYsIDU5LCAxMCwgMTUsIDIzNiwgNTgsIDEwLCAxNSwgMjM2LCA1NywgMTAsIDE1LCAyMzYsIDU2LCAxMCwgMTUsIDIzNiwgCisgICAgNTUsIDEwLCAxNSwgMjM2LCA1NCwgMTAsIDE1LCAyMzYsIDUzLCAxMCwgMTUsIDIzNiwgNTIsIDEwLCAxNSwgMjM2LCA1MSwgCisgICAgMTAsIDE1LCAyMzYsIDUwLCAxMCwgMTUsIDIzNiwgNDksIDEwLCAxNSwgMjM2LCA0OCwgMTAsIDE1LCAyMzYsIDQ3LCAxMCwgCisgICAgMTUsIDIzNiwgNDYsIDEwLCAxNSwgMjM2LCA0NSwgMTAsIDE1LCAyMzYsIDQ0LCAxMCwgMTUsIDIzNiwgNDMsIDEwLCAxNSwgCisgICAgMjM2LCA0MiwgMTAsIDE1LCAyMzYsIDQxLCAxMCwgMTUsIDIzNiwgNDAsIDEwLCAxNSwgMjM2LCAzOSwgMTAsIDE1LCAyMzYsIAorICAgIDM4LCAxMCwgMTUsIDIzNiwgMzcsIDEwLCAxNSwgMjM2LCAzNiwgMTAsIDE1LCAyMzYsIDM1LCAxMCwgMTUsIDIzNiwgMzQsIAorICAgIDEwLCAxNSwgMjM2LCAzMywgMTAsIDE1LCAyMzYsIDMyLCAxMCwgMTUsIDIzNiwgMzEsIDEwLCAxNSwgMjM2LCAzMCwgMTAsIAorICAgIDE1LCAyMzYsIDI5LCAxMCwgMTUsIDIzNiwgMjgsIDEwLCAxNSwgMjM2LCAyNywgMTAsIDE1LCAyMzYsIDI2LCAxMCwgMTUsIAorICAgIDIzNiwgMjUsIDEwLCAxNSwgMjM2LCAyNCwgMTAsIDE1LCAyMzYsIDIzLCAxMCwgMTUsIDIzNiwgMjIsIDEwLCAxNSwgMjM2LCAKKyAgICAyMSwgMTAsIDE1LCAyMzYsIDIwLCAxMCwgMTUsIDIzNiwgMTksIDEwLCAxNSwgMjM2LCAxOCwgMTAsIDE1LCAyMzYsIDE3LCAKKyAgICAxMCwgMTUsIDIzNiwgMTYsIDEwLCAxNSwgMjM2LCAxNSwgMTAsIDE1LCAyMzYsIDE0LCAxMCwgMTUsIDIzNiwgMTMsIDEwLCAKKyAgICAxNSwgMjM2LCAxMiwgMTAsIDE1LCAyMzYsIDExLCAxMCwgMTUsIDIzNiwgMTAsIDEwLCAxNSwgMjM2LCA5LCAxMCwgMTUsIAorICAgIDIzNiwgOCwgMTAsIDE1LCAyMzYsIDcsIDEwLCAxNSwgMjM2LCA2LCAxMCwgMTUsIDIzNiwgNSwgMTAsIDE1LCAyMzYsIDQsIAorICAgIDEwLCAxNSwgMjM2LCAzLCAxMCwgMTUsIDIzNiwgMiwgMTAsIDE1LCAyMzYsIDEsIDEwLCAxNSwgMjM2LCAwLCAxMCwgMTUsIAorICAgIDIzNSwgMjU1LCAxMCwgMTUsIDIzNSwgMjU0LCAxMCwgMTUsIDIzNSwgMjUzLCAxMCwgMTUsIDIzNSwgMjUyLCAxMCwgMTUsIAorICAgIDIzNSwgMjUxLCAxMCwgMTUsIDIzNSwgMjUwLCAxMCwgMTUsIDIzNSwgMjQ5LCAxMCwgMTUsIDIzNSwgMjQ4LCAxMCwgMTUsIAorICAgIDIzNSwgMjQ3LCAxMCwgMTUsIDIzNSwgMjQ2LCAxMCwgMTUsIDIzNSwgMjQ1LCAxMCwgMTUsIDIzNSwgMjQ0LCAxMCwgMTUsIAorICAgIDIzNSwgMjQzLCAxMCwgMTUsIDIzNSwgMjQyLCAxMCwgMTUsIDIzNSwgMjQxLCAxMCwgMTUsIDIzNSwgMjQwLCAxMCwgMTUsIAorICAgIDIzNSwgMjM5LCAxMCwgMTUsIDIzNSwgMjM4LCAxMCwgMTUsIDIzNSwgMjM3LCAxMCwgMTUsIDIzNSwgMjM2LCAxMCwgMTUsIAorICAgIDIzNSwgMjM1LCAxMCwgMTUsIDIzNSwgMjM0LCAxMCwgMTUsIDIzNSwgMjMzLCAxMCwgMTUsIDIzNSwgMjMyLCAxMCwgMTUsIAorICAgIDIzNSwgMjMxLCAxMCwgMTUsIDIzNSwgMjMwLCAxMCwgMTUsIDIzNSwgMjI5LCAxMCwgMTUsIDIzNSwgMjI4LCAxMCwgMTUsIAorICAgIDIzNSwgMjI3LCAxMCwgMTUsIDIzNSwgMjI2LCAxMCwgMTUsIDIzNSwgMjI1LCAxMCwgMTUsIDIzNSwgMjI0LCAxMCwgMTUsIAorICAgIDIzNSwgMjIzLCAxMCwgMTUsIDIzNSwgMjIyLCAxMCwgMTUsIDIzNSwgMjIxLCAxMCwgMTUsIDIzNSwgMjIwLCAxMCwgMTUsIAorICAgIDIzNSwgMjE5LCAxMCwgMTUsIDIzNSwgMjE4LCAxMCwgMTUsIDIzNSwgMjE3LCAxMCwgMTUsIDIzNSwgMjE2LCAxMCwgMTUsIAorICAgIDIzNSwgMjE1LCAxMCwgMTUsIDIzNSwgMjE0LCAxMCwgMTUsIDIzNSwgMjEzLCAxMCwgMTUsIDIzNSwgMjEyLCAxMCwgMTUsIAorICAgIDIzNSwgMjExLCAxMCwgMTUsIDIzNSwgMjEwLCAxMCwgMTUsIDIzNSwgMjA5LCAxMCwgMTUsIDIzNSwgMjA4LCAxMCwgMTUsIAorICAgIDIzNSwgMjA3LCAxMCwgMTUsIDIzNSwgMjA2LCAxMCwgMTUsIDIzNSwgMjA1LCAxMCwgMTUsIDIzNSwgMjA0LCAxMCwgMTUsIAorICAgIDIzNSwgMjAzLCAxMCwgMTUsIDIzNSwgMjAyLCAxMCwgMTUsIDIzNSwgMjAxLCAxMCwgMTUsIDIzNSwgMjAwLCAxMCwgMTUsIAorICAgIDIzNSwgMTk5LCAxMCwgMTUsIDIzNSwgMTk4LCAxMCwgMTUsIDIzNSwgMTk3LCAxMCwgMTUsIDIzNSwgMTk2LCAxMCwgMTUsIAorICAgIDIzNSwgMTk1LCAxMCwgMTUsIDIzNSwgMTk0LCAxMCwgMTUsIDIzNSwgMTkzLCAxMCwgMTUsIDIzNSwgMTkyLCAxMCwgMTUsIAorICAgIDIzNSwgMTkxLCAxMCwgMTUsIDIzNSwgMTkwLCAxMCwgMTUsIDIzNSwgMTg5LCAxMCwgMTUsIDIzNSwgMTg4LCAxMCwgMTUsIAorICAgIDIzNSwgMTg3LCAxMCwgMTUsIDIzNSwgMTg2LCAxMCwgMTUsIDIzNSwgMTg1LCAxMCwgMTUsIDIzNSwgMTg0LCAxMCwgMTUsIAorICAgIDIzNSwgMTgzLCAxMCwgMTUsIDIzNSwgMTgyLCAxMCwgMTUsIDIzNSwgMTgxLCAxMCwgMTUsIDIzNSwgMTgwLCAxMCwgMTUsIAorICAgIDIzNSwgMTc5LCAxMCwgMTUsIDIzNSwgMTc4LCAxMCwgMTUsIDIzNSwgMTc3LCAxMCwgMTUsIDIzNSwgMTc2LCAxMCwgMTUsIAorICAgIDIzNSwgMTc1LCAxMCwgMTUsIDIzNSwgMTc0LCAxMCwgMTUsIDIzNSwgMTczLCAxMCwgMTUsIDIzNSwgMTcyLCAxMCwgMTUsIAorICAgIDIzNSwgMTcxLCAxMCwgMTUsIDIzNSwgMTcwLCAxMCwgMTUsIDIzNSwgMTY5LCAxMCwgMTUsIDIzNSwgMTY4LCAxMCwgMTUsIAorICAgIDIzNSwgMTY3LCAxMCwgMTUsIDIzNSwgMTY2LCAxMCwgMTUsIDIzNSwgMTY1LCAxMCwgMTUsIDIzNSwgMTY0LCAxMCwgMTUsIAorICAgIDIzNSwgMTYzLCAxMCwgMTUsIDIzNSwgMTYyLCAxMCwgMTUsIDIzNSwgMTYxLCAxMCwgMTUsIDIzNSwgMTYwLCAxMCwgMTUsIAorICAgIDIzNSwgMTU5LCAxMCwgMTUsIDIzNSwgMTU4LCAxMCwgMTUsIDIzNSwgMTU3LCAxMCwgMTUsIDIzNSwgMTU2LCAxMCwgMTUsIAorICAgIDIzNSwgMTU1LCAxMCwgMTUsIDIzNSwgMTU0LCAxMCwgMTUsIDIzNSwgMTUzLCAxMCwgMTUsIDIzNSwgMTUyLCAxMCwgMTUsIAorICAgIDIzNSwgMTUxLCAxMCwgMTUsIDIzNSwgMTUwLCAxMCwgMTUsIDIzNSwgMTQ5LCAxMCwgMTUsIDIzNSwgMTQ4LCAxMCwgMTUsIAorICAgIDIzNSwgMTQ3LCAxMCwgMTUsIDIzNSwgMTQ2LCAxMCwgMTUsIDIzNSwgMTQ1LCAxMCwgMTUsIDIzNSwgMTQ0LCAxMCwgMTUsIAorICAgIDIzNSwgMTQzLCAxMCwgMTUsIDIzNSwgMTQyLCAyMzAsIDkyLCAyMTIsIDE5OCwgMTUwLCAyMTQsIDE1MywgMTUwLCAyNDIsIAorICAgIDE2OCwgODMsIDE1MCwgMjE5LCAxODAsIDgzLCAxNTAsIDQzLCA1MywgMTUwLCAyNDUsIDM1LCA1MywgMTUwLCAyMjEsIDEzMSwgCisgICAgNTMsIDE1MCwgMjUyLCAxMjUsIDE1MCwgMjUyLCA1MywgMTUwLCA0NywgMjIxLCAyMTYsIDE1MCwgNDgsIDIyMSwgMjE2LCAKKyAgICAxNTAsIDI1MSwgMjA5LCAxNTAsIDEwMSwgNTMsIDE1MCwgMjQ3LCAxNTUsIDE1MCwgMjM3LCAyMzgsIDE1MCwgMjQxLCA4MiwgCisgICAgMjEzLCAyNTEsIDE1MCwgMjE0LCAxODAsIDE1MCwgMTgsIDIwNSwgODUsIDE1MCwgMTgsIDEwMiwgMTUwLCAxOCwgMTA1LCAKKyAgICAxNTAsIDE4LCAxNDIsIDE1MCwgMTgsIDEzOSwgMTUwLCAxOCwgMTY4LCAxNTAsIDE4LCAxODQsIDE1MCwgMTgsIDE5NSwgCisgICAgMTUwLCAxOCwgMTkzLCAxNTAsIDE4LCAyMDAsIDE1MCwgMjQ3LCAxNjIsIDE1MCwgMjE2LCA1MiwgMTUwLCAyMzAsIDEwLCAKKyAgICA1MywgMTUwLCAyNDIsIDI0MiwgNTMsIDE1MCwgMjM5LCAyMzAsIDUzLCAxNTAsIDIxOSwgMTk2LCA4MywgMTUwLCAyNDcsIAorICAgIDE1MywgMjUxLCAxOTksIDE1MCwgNywgNiwgMSwgNjIsIDE1MCwgNywgNiwgMSwgMjUxLCAxNTAsIDE1MCwgNywgNiwgMSwgCisgICAgMjQ5LCAzNCwgMTUwLCA3LCA2LCAxLCAyNDYsIDI0MCwgMTUwLCA3LCA2LCAxLCA3NSwgMTUwLCA3LCA2LCAxLCAyNDIsIAorICAgIDEzOSwgMTUwLCA3LCA2LCAxLCAyNDEsIDU1LCAxNTAsIDcsIDYsIDEsIDIzOSwgMTU1LCAxNTAsIDcsIDYsIDEsIDc0LCAKKyAgICAxNTAsIDcsIDYsIDEsIDIzMiwgMjAzLCAxNTAsIDcsIDYsIDEsIDIzMiwgNzYsIDE1MCwgNywgNiwgMSwgMTQ5LCAxNTAsIDcsIAorICAgIDYsIDEsIDIyOSwgMjgsIDE1MCwgNywgNiwgMSwgMjI2LCAzMywgMTUwLCA3LCA2LCAxLCA3NiwgMTUwLCA3LCA2LCAxLCAKKyAgICAyMjIsIDY3LCAxNTAsIDcsIDYsIDEsIDIyMCwgMjcsIDE1MCwgNywgNiwgMSwgMTM3LCAxNTAsIDcsIDYsIDEsIDE4MiwgCisgICAgMTUwLCA3LCA2LCAxLCAyMTMsIDEwLCAxNTAsIDcsIDYsIDEsIDcxLCAxNTAsIDcsIDYsIDEsIDIwOSwgMTQ4LCAxNTAsIDcsIAorICAgIDYsIDEsIDIwNywgMTI5LCAxNTAsIDcsIDYsIDEsIDIwNiwgMTk1LCAxNTAsIDcsIDYsIDEsIDIwNiwgMTIzLCAxNTAsIDcsIAorICAgIDYsIDEsIDIwNSwgMTU5LCAxNTAsIDQ3LCA0OSwgMTQ1LCAxNTAsIDIxOCwgMjI1LCAyMTQsIDE4MCwgMTUwLCA0OCwgNDksIAorICAgIDE0NSwgMTUwLCAyNDcsIDIyOCwgMjUzLCAyMSwgMTUwLCAxMTQsIDIyOSwgMjA1LCAxNTAsIDIzOSwgMjM3LCAyNTMsIDIxLCAKKyAgICAxNTAsIDcsIDUsIDEsIDYyLCAxNTAsIDcsIDUsIDEsIDI1MSwgMTUwLCAxNTAsIDcsIDUsIDEsIDI0OSwgMzQsIDE1MCwgNywgCisgICAgNSwgMSwgMjQ2LCAyNDAsIDE1MCwgNywgNSwgMSwgNzUsIDE1MCwgNywgNSwgMSwgMjQyLCAxMzksIDE1MCwgNywgNSwgMSwgCisgICAgMjQxLCA1NSwgMTUwLCA3LCA1LCAxLCAyMzksIDE1NSwgMTUwLCA3LCA1LCAxLCA3NCwgMTUwLCA3LCA1LCAxLCAyMzIsIAorICAgIDIwMywgMTUwLCA3LCA1LCAxLCAyMzIsIDc2LCAxNTAsIDcsIDUsIDEsIDE0OSwgMTUwLCA3LCA1LCAxLCAyMjksIDI4LCAKKyAgICAxNTAsIDcsIDUsIDEsIDIyNiwgMzMsIDE1MCwgNywgNSwgMSwgNzYsIDE1MCwgNywgNSwgMSwgMjIyLCA2NywgMTUwLCA3LCAKKyAgICA1LCAxLCAyMjAsIDI3LCAxNTAsIDcsIDUsIDEsIDEzNywgMTUwLCA3LCA1LCAxLCAxODIsIDE1MCwgNywgNSwgMSwgMjEzLCAKKyAgICAxMCwgMTUwLCA3LCA1LCAxLCA3MSwgMTUwLCA3LCA1LCAxLCAyMDksIDE0OCwgMTUwLCA3LCA1LCAxLCAyMDcsIDEyOSwgCisgICAgMTUwLCA3LCA1LCAxLCAyMDYsIDE5NSwgMTUwLCA3LCA1LCAxLCAyMDYsIDEyMywgMTUwLCA3LCA1LCAxLCAyMDUsIDE1OSwgCisgICAgMTUwLCA0NywgMjQ3LCAyNiwgMTQ1LCAxNTAsIDc5LCAyMjksIDIwNSwgMTUwLCA0OCwgMjQ3LCAyNiwgMTQ1LCAxNTAsIAorICAgIDIxMSwgMTgwLCAyNDgsIDIyNSwgMjEyLCAxOTgsIDU0LCAyMTYsIDIzNiwgNTQsIDIxNiwgMjI1LCA1NCwgMjE2LCAyMTQsIAorICAgIDU0LCAyMTYsIDIwMiwgNTQsIDIxNiwgMTkxLCA1NCwgMjE2LCAxODAsIDU0LCAyMTYsIDE2OSwgNTQsIDIxNiwgMTU4LCA1NCwgCisgICAgMjE2LCAxNDcsIDU0LCAyMTYsIDEzOSwgNTQsIDIxNiwgMTM4LCA1NCwgMjE2LCAxMzcsIDU0LCAyMTYsIDEzNiwgNTQsIAorICAgIDIxNiwgMTM0LCA1NCwgMjE2LCAxMzMsIDU0LCAyMTYsIDEzMiwgNTQsIDIxNiwgMTMxLCA1NCwgMjE2LCAxMzAsIDU0LCAKKyAgICAyMTYsIDEyOSwgNTQsIDIxNiwgMTI4LCA1NCwgMjE2LCAxMjcsIDU0LCAyMTYsIDEyNiwgNTQsIDIxNiwgMTI1LCA1NCwgCisgICAgMjE2LCAxMjMsIDU0LCAyMTYsIDEyMiwgNTQsIDIxNiwgMTIxLCA1NCwgMjE2LCAxMjAsIDU0LCAyMTYsIDExOSwgNTQsIAorICAgIDIxNiwgMTE4LCA1NCwgMjE2LCAxMTcsIDU0LCAyMTYsIDExNiwgNTQsIDIxNiwgMTE1LCA1NCwgMjE2LCAxMTQsIDU0LCAKKyAgICAyMTYsIDExMiwgNTQsIDIxNiwgMTExLCA1NCwgMjE2LCAxMTAsIDU0LCAyMTYsIDEwOSwgNTQsIDIxNiwgMTA4LCA1NCwgCisgICAgMjE2LCAxMDcsIDU0LCAyMTYsIDEwNiwgNTQsIDIxNiwgMTA1LCA1NCwgMjE2LCAxMDQsIDU0LCAyMTYsIDEwMywgNTQsIAorICAgIDIxNiwgMTAxLCA1NCwgMjE2LCAxMDAsIDU0LCAyMTYsIDk5LCA1NCwgMjE2LCA5OCwgNTQsIDIxNiwgOTcsIDU0LCAyMTYsIAorICAgIDk2LCA1NCwgMjE2LCA5NSwgNTQsIDIxNiwgOTQsIDU0LCAyMTYsIDkzLCA1NCwgMjE2LCA5MiwgNTQsIDIxNiwgOTAsIDU0LCAKKyAgICAyMTYsIDg5LCA1NCwgMjE2LCA4OCwgNTQsIDIxNiwgODcsIDU0LCAyMTYsIDg2LCA1NCwgMjE2LCA4NSwgNTQsIDIxNiwgODQsIAorICAgIDU0LCAyMTYsIDgzLCA1NCwgMjE2LCA4MiwgNTQsIDIxNiwgODEsIDU0LCAyMTYsIDc5LCA1NCwgMjE2LCA3OCwgNTQsIDIxNiwgCisgICAgNzcsIDU0LCAyMTYsIDc2LCA1NCwgMjE2LCA3NSwgNTQsIDIxNiwgNzQsIDU0LCAyMTYsIDczLCA1NCwgMjE2LCA3MiwgNTQsIAorICAgIDIxNiwgNzEsIDU0LCAyMTYsIDcwLCA1NCwgMjE2LCA2OCwgNTQsIDIxNiwgNjcsIDU0LCAyMTYsIDY2LCA1NCwgMjE2LCA2NSwgCisgICAgNTQsIDIxNiwgNjQsIDU0LCAyMTYsIDYzLCA1NCwgMjE2LCA2MiwgNTQsIDIxNiwgNjEsIDU0LCAyMTYsIDYwLCA1NCwgMjE2LCAKKyAgICA1OSwgNTQsIDIxNywgNTYsIDU0LCAyMTcsIDU1LCA1NCwgMjE3LCA1NCwgNTQsIDIxNywgNTMsIDU0LCAyMTcsIDUyLCA1NCwgCisgICAgMjE3LCA1MSwgNTQsIDIxNywgNTAsIDU0LCAyMTcsIDQ5LCA1NCwgMjE3LCA0OCwgNTQsIDIxNywgNDcsIDU0LCAyMTcsIDQ1LCAKKyAgICA1NCwgMjE3LCA0NCwgNTQsIDIxNywgNDMsIDU0LCAyMTcsIDQyLCA1NCwgMjE3LCA0MSwgNTQsIDIxNywgNDAsIDU0LCAyMTcsIAorICAgIDM5LCA1NCwgMjE3LCAzOCwgNTQsIDIxNywgMzcsIDU0LCAyMTcsIDM2LCA1NCwgMjE3LCAzNCwgNTQsIDIxNywgMzMsIDU0LCAKKyAgICAyMTcsIDMyLCA1NCwgMjE3LCAzMSwgNTQsIDIxNywgMzAsIDU0LCAyMTcsIDI5LCA1NCwgMjE3LCAyOCwgNTQsIDIxNywgMjcsIAorICAgIDU0LCAyMTcsIDI2LCA1NCwgMjE3LCAyNSwgNTQsIDIxNywgMjMsIDU0LCAyMTcsIDIyLCA1NCwgMjE3LCAyMSwgNTQsIDIxNywgCisgICAgMjAsIDU0LCAyMTcsIDE5LCA1NCwgMjE3LCAxOCwgNTQsIDIxNywgMTcsIDU0LCAyMTcsIDE2LCA1NCwgMjE3LCAxNSwgNTQsIAorICAgIDIxNywgMTQsIDU0LCAyMTcsIDEyLCA1NCwgMjE3LCAxMSwgNTQsIDIxNywgMTAsIDU0LCAyMTcsIDksIDU0LCAyMTcsIDgsIAorICAgIDU0LCAyMTcsIDcsIDU0LCAyMTcsIDYsIDU0LCAyMTcsIDUsIDU0LCAyMTcsIDQsIDU0LCAyMTcsIDMsIDU0LCAyMTcsIDEsIAorICAgIDU0LCAyMTcsIDAsIDU0LCAyMTYsIDI1NSwgNTQsIDIxNiwgMjU0LCA1NCwgMjE2LCAyNTMsIDU0LCAyMTYsIDI1MiwgNTQsIAorICAgIDIxNiwgMjUxLCA1NCwgMjE2LCAyNTAsIDU0LCAyMTYsIDI0OSwgNTQsIDIxNiwgMjQ4LCA1NCwgMjE2LCAyNDYsIDU0LCAKKyAgICAyMTYsIDI0NSwgNTQsIDIxNiwgMjQ0LCA1NCwgMjE2LCAyNDMsIDU0LCAyMTYsIDI0MiwgNTQsIDIxNiwgMjQxLCA1NCwgCisgICAgMjE2LCAyNDAsIDU0LCAyMTYsIDIzOSwgNTQsIDIxNiwgMjM4LCA1NCwgMjE2LCAyMzcsIDU0LCAyMTYsIDIzNSwgNTQsIAorICAgIDIxNiwgMjM0LCA1NCwgMjE2LCAyMzMsIDU0LCAyMTYsIDIzMiwgNTQsIDIxNiwgMjMxLCA1NCwgMjE2LCAyMzAsIDU0LCAKKyAgICAyMTYsIDIyOSwgNTQsIDIxNiwgMjI4LCA1NCwgMjE2LCAyMjcsIDU0LCAyMTYsIDIyNiwgNTQsIDIxNiwgMjI0LCA1NCwgCisgICAgMjE2LCAyMjMsIDU0LCAyMTYsIDIyMiwgNTQsIDIxNiwgMjIxLCA1NCwgMjE2LCAyMjAsIDU0LCAyMTYsIDIxOSwgNTQsIAorICAgIDIxNiwgMjE4LCA1NCwgMjE2LCAyMTcsIDU0LCAyMTYsIDIxNiwgNTQsIDIxNiwgMjE1LCA1NCwgMjE2LCAyMTMsIDU0LCAKKyAgICAyMTYsIDIxMiwgNTQsIDIxNiwgMjExLCA1NCwgMjE2LCAyMTAsIDU0LCAyMTYsIDIwOSwgNTQsIDIxNiwgMjA4LCA1NCwgCisgICAgMjE2LCAyMDcsIDU0LCAyMTYsIDIwNiwgNTQsIDIxNiwgMjA1LCA1NCwgMjE2LCAyMDQsIDU0LCAyMTYsIDIwMSwgNTQsIAorICAgIDIxNiwgMjAwLCA1NCwgMjE2LCAxOTksIDU0LCAyMTYsIDE5OCwgNTQsIDIxNiwgMTk3LCA1NCwgMjE2LCAxOTYsIDU0LCAKKyAgICAyMTYsIDE5NSwgNTQsIDIxNiwgMTk0LCA1NCwgMjE2LCAxOTMsIDU0LCAyMTYsIDE5MiwgNTQsIDIxNiwgMTkwLCA1NCwgCisgICAgMjE2LCAxODksIDU0LCAyMTYsIDE4OCwgNTQsIDIxNiwgMTg3LCA1NCwgMjE2LCAxODYsIDU0LCAyMTYsIDE4NSwgNTQsIAorICAgIDIxNiwgMTg0LCA1NCwgMjE2LCAxODMsIDU0LCAyMTYsIDE4MiwgNTQsIDIxNiwgMTgxLCA1NCwgMjE2LCAxNzksIDU0LCAKKyAgICAyMTYsIDE3OCwgNTQsIDIxNiwgMTc3LCA1NCwgMjE2LCAxNzYsIDU0LCAyMTYsIDE3NSwgNTQsIDIxNiwgMTc0LCA1NCwgCisgICAgMjE2LCAxNzMsIDU0LCAyMTYsIDE3MiwgNTQsIDIxNiwgMTcxLCA1NCwgMjE2LCAxNzAsIDU0LCAyMTYsIDE2OCwgNTQsIAorICAgIDIxNiwgMTY3LCA1NCwgMjE2LCAxNjYsIDU0LCAyMTYsIDE2NSwgNTQsIDIxNiwgMTY0LCA1NCwgMjE2LCAxNjMsIDU0LCAKKyAgICAyMTYsIDE2MiwgNTQsIDIxNiwgMTYxLCA1NCwgMjE2LCAxNjAsIDU0LCAyMTYsIDE1OSwgNTQsIDIxNiwgMTU3LCA1NCwgCisgICAgMjE2LCAxNTYsIDU0LCAyMTYsIDE1NSwgNTQsIDIxNiwgMTU0LCA1NCwgMjE2LCAxNTMsIDU0LCAyMTYsIDE1MiwgNTQsIAorICAgIDIxNiwgMTUxLCA1NCwgMjE2LCAxNTAsIDU0LCAyMTYsIDE0OSwgNTQsIDIxNiwgMTQ4LCA1NCwgMjE2LCAxNDYsIDU0LCAKKyAgICAyMTYsIDE0NSwgNTQsIDIxNiwgMTQ0LCA1NCwgMjE2LCAxNDMsIDU0LCAyMTYsIDE0MiwgNTQsIDIxNiwgMTQxLCA1NCwgCisgICAgMjE2LCAxNDAsIDIyMywgMTgxLCAyMjMsIDE4MywgMjE0LCAyMiwgNzMsIDIzOSwgNjYsIDIxNCwgMTgzLCAyMTQsIDIyLCAKKyAgICA3MywgMjEyLCA2MCwgMjEzLCAyMDUsIDI0MywgMzQsIDczLCAyMTIsIDYwLCAyNDIsIDE5MywgMjQzLCAzNCwgNzMsIDIxMSwgCisgICAgNjksIDI0MiwgMjU0LCAyNDMsIDIxLCAyNDMsIDIyLCAyNTMsIDEzLCAyNTMsIDE0LCAyNTIsIDE2OSwgMjUwLCAzMSwgMjUwLCAKKyAgICAxNzAsIDI0OSwgMTA3LCAxNTcsIDIxMiwgMjAzLCAxOTQsIDIxMiwgMjAzLCAyMzgsIDQ3LCAyMTIsIDIwNywgMjI5LCAyMDYsIAorICAgIDI0MiwgMTksIDE4NiwgMjI5LCAyMDUsIDI0MywgMzQsIDczLCAyMjksIDIwNSwgMjI5LCAyNTAsIDIyNCwgMTI5LCAyNDMsIAorICAgIDEsIDIyOSwgMjA2LCAyMTIsIDIwMywgNzksIDIxMiwgMjAzLCAyMDcsIDE1MCwgMjQxLCAxMzYsIDI0MiwgMTksIDI0MSwgCisgICAgMjU0LCAyNDgsIDE5MSwgMjE4LCAyMjgsIDI0NywgNzMsIDIxNSwgMTc5LCAyMjIsIDkzLCAyMjksIDEzOCwgMTAyLCAyMTQsIAorICAgIDE5MywgMjE1LCAxNzksIDIzMywgNjgsIDIyOSwgMTM4LCAyMDUsIDg1LCAyMTUsIDgwLCAyNDYsIDczLCAyMjksIDE5NiwgCisgICAgMjQyLCAyMTcsIDI0NSwgNjEsIDI0NSwgMTk5LCAyNDcsIDEwOSwgMTAyLCAyNDYsIDYyLCAyNDUsIDE5OSwgMjQ3LCAxMDksIAorICAgIDEwNSwgMjQ2LCA2MSwgMjQ1LCAxOTksIDI0NywgMTA5LCAxNDIsIDI0NiwgNjAsIDI0NSwgMTk5LCAyNDcsIDEwOSwgMTM5LCAKKyAgICAyNDYsIDU5LCAxNzAsIDI1MywgMTMsIDIyNSwgMjE1LCAyMTMsIDM2LCAyMzMsIDEzMSwgMjEzLCAzOSwgMjQzLCAzNCwgNzMsIAorICAgIDIxMSwgNzAsIDI0OSwgMTkzLCAyNDIsIDIwMCwgMjQ4LCAyMjQsIDI0OCwgMjI2LCAyNDMsIDM0LCA3MywgMjI3LCAxMDgsIAorICAgIDI0MiwgMjU1LCAyMTMsIDE3OSwgMjEzLCAxOTYsIDI0MiwgMjE3LCAyNDIsIDIxOCwgMjMzLCA0MywgMjE2LCA0MCwgMTM5LCAKKyAgICAyNDEsIDIzNiwgMjE2LCAzOSwgMjQxLCA5MiwgMjMzLCA0MywgMjE2LCA0MCwgMTQyLCAyMzksIDIyMSwgMjE2LCAzOSwgCisgICAgMjM5LCAyMTgsIDIzMywgNDMsIDIxNiwgNDAsIDEwNSwgMjE5LCA0MywgMjE2LCAzOSwgMjE4LCA1NSwgMjMzLCA0MywgMjE2LCAKKyAgICA0MCwgMTAyLCAyMDksIDIxNywgMjE2LCAzOSwgMjA5LCAxNzcsIDIxNCwgMTU2LCAyNDUsIDIzNiwgMjQ1LCAyMzgsIDIyMiwgCisgICAgNDAsIDI0OCwgOTQsIDIyMiwgNDIsIDEyNywgMjIyLCAyMTMsIDIyMCwgMTMwLCAyMzgsIDEyNCwgMjQ5LCAxMjYsIDIyMSwgCisgICAgMTIxLCAyMzksIDM1LCAyNDksIDEzNywgMjI0LCA2OCwgMjQ5LCAxMjYsIDIzOSwgMzUsIDIyNSwgMTc5LCAyMzMsIDUzLCAKKyAgICAyMzMsIDU2LCAyMjUsIDgyLCAyMjksIDIwNSwgMjI1LCAxMDIsIDIxNCwgMjIsIDczLCAyMTcsIDYxLCAyNTIsIDEzLCAyMTQsIAorICAgIDk2LCAyNDMsIDM0LCA3MywgMjE3LCA2MSwgMjUyLCAxMywgMjQyLCAyMjAsIDE1NywgMjEyLCAyMDQsIDIxNiwgMjgsIDE5NCwgCisgICAgMjEyLCAyMDQsIDIxNiwgMjgsIDIzOCwgNDQsIDE1NywgMjEyLCAyMDQsIDIsIDIzMiwgODgsIDE5NCwgMjEyLCAyMDQsIDIsIAorICAgIDIzMiwgODgsIDIzOCwgNDUsIDIyOSwgMjA2LCAyMTIsIDIwNCwgMjE2LCAyOCwgNzksIDIxMiwgMjA0LCAyMTYsIDI4LCAKKyAgICAyMDcsIDE0OSwgMjIxLCAyMDksIDIyOSwgMjA2LCAyNDEsIDEyOSwgMjIxLCAyMDksIDIyOSwgMjA2LCAyNDQsIDgsIDIyMCwgCisgICAgMjI5LCAyMjEsIDIwOSwgMjI5LCAyMDYsIDI1MCwgMTY5LCAyMjEsIDIwOSwgMjI5LCAyMDYsIDIwOSwgMjA2LCAyMjAsIAorICAgIDIyNCwgMjE4LCAyMjUsIDIyOSwgMjA2LCAyNDIsIDE5LCAyMTgsIDIyNSwgMjMzLCA1MywgMjE4LCAyMDgsIDIxNSwgNDEsIAorICAgIDIxNSwgMTc5LCAxMDUsIDIxNSwgMzgsIDIxNCwgOTgsIDIxNSwgNDEsIDIxNSwgMTc5LCAxNDIsIDIxNSwgMzcsIDIxNCwgCisgICAgOTcsIDI0NSwgMTk5LCAyNDcsIDEwOSwgMjEzLCAyMjcsIDI0NiwgNTcsIDIyMCwgMTE4LCAyMDksIDE3NiwgMTAyLCAyMjAsIAorICAgIDExOCwgMjA5LCAxNzQsIDIyMCwgODEsIDIyMCwgMTE4LCAyMDksIDE3NiwgMTA1LCAyMjAsIDExOCwgMjA5LCAxNzMsIDIyMCwgCisgICAgODAsIDIxNiwgMjksIDIxMSwgNjgsIDIxNCwgMjEsIDIxMywgMjEwLCAyNDgsIDIyNSwgMjQ4LCA5NCwgMjQ4LCAxNjcsIAorICAgIDIyNywgNjcsIDIwNywgODksIDIyNiwgNTEsIDIxNCwgMjIsIDczLCAyMzksIDIwNiwgMjUyLCAxMywgMjE0LCAyMiwgNzMsIAorICAgIDIyMCwgOTksIDI1MiwgMTMsIDIxNCwgMTU1LCAyNDMsIDM0LCA3MywgMjM5LCAyMDYsIDI1MiwgMTMsIDI0MywgMzQsIDczLCAKKyAgICAyMjAsIDk5LCAyNTIsIDEzLCAyNDIsIDI1MiwgMjE0LCAyMiwgNzMsIDIxMywgMjI3LCAyMTQsIDE2OSwgMjE1LCA0MSwgCisgICAgMjM5LCAyNDEsIDE1NywgMjMzLCA0LCAyMTYsIDcsIDIxNSwgNDEsIDE1NywgMjMzLCA0LCAyMTcsIDk5LCAyNDcsIDEwOSwgCisgICAgMjE2LCAzNywgMjMzLCA0LCAyNDcsIDQxLCAyMTMsIDIyOCwgMjEyLCA4NiwgMjE0LCA0MCwgMjIyLCAxMzQsIDIxMywgMjUsIAorICAgIDI0NywgMTU0LCAyMjIsIDEwNSwgMjIwLCAxMTksIDIyNywgNjYsIDIyMCwgMjE0LCAyNTIsIDQ5LCAyMjAsIDExMywgMjQ3LCAKKyAgICAxNTQsIDI1MiwgNjUsIDIyNSwgMTY3LCAyMTUsIDg5LCA3LCA2LCAxLCAyNDAsIDk5LCA3LCA1LCAxLCAyNDAsIDk5LCAyNDgsIAorICAgIDExMiwgMjUyLCAxNTAsIDIxMywgMzAsIDIxMywgMTg1LCAyNDcsIDE2MywgMjE0LCAyNDYsIDIzMCwgNDYsIDE4MywgMSwgCisgICAgMjI5LCAxNjMsIDIzMCwgOTAsIDEsIDI0MSwgMTYzLCAyNDEsIDE1NCwgMjMwLCA5MCwgMSwgMjQxLCAxNjMsIDI0MiwgMzEsIAorICAgIDIzMCwgOTAsIDEsIDIxOCwgMTI0LCAyMzAsIDkwLCAxLCAyMjksIDE0NCwgNzIsIDE0MSwgMjQ5LCAyMDQsIDIxNSwgMTU0LCAKKyAgICAyNDAsIDYyLCAyMjcsIDE2LCAyMTgsIDIxNSwgMjQxLCA2OSwgMjQxLCA2OCwgMjQxLCA2NywgMjI2LCA1MywgMjA0LCAyNDYsIAorICAgIDIwNCwgMjQ3LCAyMDQsIDI0OSwgMjI5LCA4NSwgMjE4LCAxMzIsIDIyOSwgODcsIDIxOCwgMTM0LCAyMjEsIDE3NywgMjI5LCAKKyAgICA4NCwgMjE4LCAxMzEsIDIyNCwgOTksIDIyNiwgMTg1LCAyMDYsIDI1MiwgMjI5LCA4NiwgMjE4LCAxMzMsIDI0MSwgOTEsIAorICAgIDIyMSwgMTc2LCAyMDcsIDQyLCAyNDMsIDUzLCAyNDEsIDc5LCAyMjYsIDI1MywgMjIyLCAxNjYsIDIwOSwgMTc4LCA5MywgCisgICAgMjI2LCAyNTMsIDI0NiwgNzksIDkzLCA5LCA0LCAyMzIsIDIxOCwgODMsIDIyMCwgMTMxLCAyNDEsIDEzNiwgMzMsIDc5LCAKKyAgICA0OCwgNTksIDIzMCwgMTYsIDE0NSwgMjA4LCAxNTAsIDIwOCwgMzksIDIwNywgMjI3LCAyMDcsIDIxNiwgMjA3LCAyMDUsIAorICAgIDIwNywgMTk0LCAyMDcsIDE4MywgMjA3LCAxNzIsIDIwNywgMTYxLCAyMDgsIDE0OSwgMjA4LCAxMzgsIDIwOCwgMTI3LCAKKyAgICAyMDgsIDExNiwgMjA4LCAxMDUsIDIwOCwgOTQsIDIwOCwgODMsIDI0OSwgMzksIDIyMiwgMTE5LCA4MywgMjQ5LCAxNzUsIAorICAgIDIwNCwgMjQ4LCAxNCwgMywgMjIzLCAxOTAsIDIxMiwgODksIDE0LCAzLCAyMjMsIDE5MCwgMTMxLCAyMjMsIDE5MCwgMjQ5LCAKKyAgICA2OSwgMTMxLCAyNDksIDY4LCA1OCwgMzAsIDE2LCAyNDEsIDkwLCAyMTQsIDI0MiwgMjQ4LCAxOCwgMjA5LCA0OSwgMjA4LCAKKyAgICA3MiwgMjA4LCA2MSwgMjA4LCA1MCwgMjA4LCAzOCwgMjA4LCAyNywgMjA4LCAxNiwgMjA4LCA1LCAyMDcsIDI1MCwgMjA3LCAKKyAgICAyMzksIDIwNywgMjMxLCAyMDcsIDIzMCwgMjA3LCAyMjksIDIwNywgMjI4LCAyMDcsIDIyNiwgMjA3LCAyMjUsIDIwNywgCisgICAgMjI0LCAyMDcsIDIyMywgMjA3LCAyMjIsIDIwNywgMjIxLCAyMDcsIDIyMCwgMjA3LCAyMTksIDIwNywgMjE4LCAyMDcsIAorICAgIDIxNywgMjA3LCAyMTUsIDIwNywgMjE0LCAyMDcsIDIxMywgMjA3LCAyMTIsIDIwNywgMjExLCAyMDcsIDIxMCwgMjA3LCAKKyAgICAyMDksIDIwNywgMjA4LCAyMDcsIDIwNywgMjA3LCAyMDYsIDIwNywgMjA0LCAyMDcsIDIwMywgMjA3LCAyMDIsIDIwNywgCisgICAgMjAxLCAyMDcsIDIwMCwgMjA3LCAxOTksIDIwNywgMTk4LCAyMDcsIDE5NywgMjA3LCAxOTYsIDIwNywgMTk1LCAyMDcsIAorICAgIDE5MywgMjA3LCAxOTIsIDIwNywgMTkxLCAyMDcsIDE5MCwgMjA3LCAxODksIDIwNywgMTg4LCAyMDcsIDE4NywgMjA3LCAKKyAgICAxODYsIDIwNywgMTg1LCAyMDcsIDE4NCwgMjA3LCAxODIsIDIwNywgMTgxLCAyMDcsIDE4MCwgMjA3LCAxNzksIDIwNywgCisgICAgMTc4LCAyMDcsIDE3NywgMjA3LCAxNzYsIDIwNywgMTc1LCAyMDcsIDE3NCwgMjA3LCAxNzMsIDIwNywgMTcxLCAyMDcsIAorICAgIDE3MCwgMjA3LCAxNjksIDIwNywgMTY4LCAyMDcsIDE2NywgMjA3LCAxNjYsIDIwNywgMTY1LCAyMDcsIDE2NCwgMjA3LCAKKyAgICAxNjMsIDIwNywgMTYyLCAyMDcsIDE2MCwgMjA3LCAxNTksIDIwNywgMTU4LCAyMDcsIDE1NywgMjA3LCAxNTYsIDIwNywgCisgICAgMTU1LCAyMDcsIDE1NCwgMjA3LCAxNTMsIDIwNywgMTUyLCAyMDcsIDE1MSwgMjA4LCAxNDgsIDIwOCwgMTQ3LCAyMDgsIAorICAgIDE0NiwgMjA4LCAxNDUsIDIwOCwgMTQ0LCAyMDgsIDE0MywgMjA4LCAxNDIsIDIwOCwgMTQxLCAyMDgsIDE0MCwgMjA4LCAKKyAgICAxMzksIDIwOCwgMTM3LCAyMDgsIDEzNiwgMjA4LCAxMzUsIDIwOCwgMTM0LCAyMDgsIDEzMywgMjA4LCAxMzIsIDIwOCwgCisgICAgMTMxLCAyMDgsIDEzMCwgMjA4LCAxMjksIDIwOCwgMTI4LCAyMDgsIDEyNiwgMjA4LCAxMjUsIDIwOCwgMTI0LCAyMDgsIAorICAgIDEyMywgMjA4LCAxMjIsIDIwOCwgMTIxLCAyMDgsIDEyMCwgMjA4LCAxMTksIDIwOCwgMTE4LCAyMDgsIDExNywgMjA4LCAKKyAgICAxMTUsIDIwOCwgMTE0LCAyMDgsIDExMywgMjA4LCAxMTIsIDIwOCwgMTExLCAyMDgsIDExMCwgMjA4LCAxMDksIDIwOCwgCisgICAgMTA4LCAyMDgsIDEwNywgMjA4LCAxMDYsIDIwOCwgMTA0LCAyMDgsIDEwMywgMjA4LCAxMDIsIDIwOCwgMTAxLCAyMDgsIAorICAgIDEwMCwgMjA4LCA5OSwgMjA4LCA5OCwgMjA4LCA5NywgMjA4LCA5NiwgMjA4LCA5NSwgMjA4LCA5MywgMjA4LCA5MiwgMjA4LCAKKyAgICA5MSwgMjA4LCA5MCwgMjA4LCA4OSwgMjA4LCA4OCwgMjA4LCA4NywgMjA4LCA4NiwgMjA4LCA4NSwgMjA4LCA4NCwgMjA4LCAKKyAgICA4MiwgMjA4LCA4MSwgMjA4LCA4MCwgMjA4LCA3OSwgMjA4LCA3OCwgMjA4LCA3NywgMjA4LCA3NiwgMjA4LCA3NSwgMjA4LCAKKyAgICA3NCwgMjA4LCA3MywgMjA4LCA3MSwgMjA4LCA3MCwgMjA4LCA2OSwgMjA4LCA2OCwgMjA4LCA2NywgMjA4LCA2NiwgMjA4LCAKKyAgICA2NSwgMjA4LCA2NCwgMjA4LCA2MywgMjA4LCA2MiwgMjA4LCA2MCwgMjA4LCA1OSwgMjA4LCA1OCwgMjA4LCA1NywgMjA4LCAKKyAgICA1NiwgMjA4LCA1NSwgMjA4LCA1NCwgMjA4LCA1MywgMjA4LCA1MiwgMjA4LCA1MSwgMjA4LCA0OSwgMjA4LCA0OCwgMjA4LCAKKyAgICA0NywgMjA4LCA0NiwgMjA4LCA0NSwgMjA4LCA0NCwgMjA4LCA0MywgMjA4LCA0MiwgMjA4LCA0MSwgMjA4LCA0MCwgMjA4LCAKKyAgICAzNywgMjA4LCAzNiwgMjA4LCAzNSwgMjA4LCAzNCwgMjA4LCAzMywgMjA4LCAzMiwgMjA4LCAzMSwgMjA4LCAzMCwgMjA4LCAKKyAgICAyOSwgMjA4LCAyOCwgMjA4LCAyNiwgMjA4LCAyNSwgMjA4LCAyNCwgMjA4LCAyMywgMjA4LCAyMiwgMjA4LCAyMSwgMjA4LCAKKyAgICAyMCwgMjA4LCAxOSwgMjA4LCAxOCwgMjA4LCAxNywgMjA4LCAxNSwgMjA4LCAxNCwgMjA4LCAxMywgMjA4LCAxMiwgMjA4LCAKKyAgICAxMSwgMjA4LCAxMCwgMjA4LCA5LCAyMDgsIDgsIDIwOCwgNywgMjA4LCA2LCAyMDgsIDQsIDIwOCwgMywgMjA4LCAyLCAyMDgsIAorICAgIDEsIDIwOCwgMCwgMjA3LCAyNTUsIDIwNywgMjU0LCAyMDcsIDI1MywgMjA3LCAyNTIsIDIwNywgMjUxLCAyMDcsIDI0OSwgCisgICAgMjA3LCAyNDgsIDIwNywgMjQ3LCAyMDcsIDI0NiwgMjA3LCAyNDUsIDIwNywgMjQ0LCAyMDcsIDI0MywgMjA3LCAyNDIsIAorICAgIDIwNywgMjQxLCAyMDcsIDI0MCwgMjA3LCAyMzgsIDIwNywgMjM3LCAyMDcsIDIzNiwgMjA3LCAyMzUsIDIwNywgMjM0LCAKKyAgICAyMDcsIDIzMywgMjA3LCAyMzIsIDcsIDYsIDEsIDMyLCAyLCAyMjgsIDE0LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIDMyLCAKKyAgICAyLCAyMjgsIDE0LCAyMywgMjM5LCAyMzYsIDcsIDYsIDEsIDE3NCwgMiwgNzksIDIyOSwgMjA2LCA1NSwgNywgNSwgMSwgCisgICAgMTc0LCAyLCA3OSwgMjI5LCAyMDYsIDU1LCA3LCA2LCAxLCAxNzQsIDIsIDc5LCAyMjksIDIwNiwgMjUwLCAyNiwgMjMsIAorICAgIDIzOSwgMjM2LCA3LCA1LCAxLCAxNzQsIDIsIDc5LCAyMjksIDIwNiwgMjUwLCAyNiwgMjMsIDIzOSwgMjM2LCA3LCA2LCAxLCAKKyAgICAxNzQsIDIsIDc5LCAyMjksIDIwNiwgMjUwLCAyNiwgMjMsIDE1MywgNywgNSwgMSwgMTc0LCAyLCA3OSwgMjI5LCAyMDYsIAorICAgIDI1MCwgMjYsIDIzLCAxNTMsIDcsIDYsIDEsIDE3NCwgMiwgMjQ3LCAyMjgsIDIzLCAyMjgsIDEzLCA3LCA1LCAxLCAxNzQsIAorICAgIDIsIDI0NywgMjI4LCAyMywgMjI4LCAxMywgNywgNiwgMSwgMTc0LCAyLCAyNDcsIDIyOCwgMjMsIDI0OCwgMTk1LCA3LCA1LCAKKyAgICAxLCAxNzQsIDIsIDI0NywgMjI4LCAyMywgMjQ4LCAxOTUsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAyMjgsIDE0LCAyMywgCisgICAgMjM5LCAyMzYsIDcsIDUsIDEsIDIzNywgMjI1LCAyLCAyMjgsIDE0LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIDIzNywgMjI1LCAKKyAgICAyLCA2NywgODQsIDIzLCAxNTMsIDcsIDUsIDEsIDIyNSwgODAsIDIsIDIxMSwgMTgxLCA1MiwgNywgNiwgMSwgMTQ4LCAyLCAKKyAgICA3OSwgMjI5LCAyMDYsIDU1LCA3LCA1LCAxLCAxNDgsIDIsIDc5LCAyMjksIDIwNiwgNTUsIDcsIDYsIDEsIDE0OCwgMiwgNzksIAorICAgIDIyOSwgMjA2LCAyNTAsIDI2LCAyMywgMjM5LCAyMzYsIDcsIDUsIDEsIDE0OCwgMiwgNzksIDIyOSwgMjA2LCAyNTAsIDI2LCAKKyAgICAyMywgMjM5LCAyMzYsIDcsIDYsIDEsIDE0OCwgMiwgNzksIDIyOSwgMjA2LCAyNTAsIDI2LCAyMywgMTUzLCA3LCA1LCAxLCAKKyAgICAxNDgsIDIsIDc5LCAyMjksIDIwNiwgMjUwLCAyNiwgMjMsIDE1MywgNywgNiwgMSwgMjE4LCAxLCAyLCA3OSwgMjI5LCAyMDYsIAorICAgIDU1LCA3LCA1LCAxLCAyMTgsIDEsIDIsIDc5LCAyMjksIDIwNiwgNTUsIDcsIDYsIDEsIDEwNiwgMiwgMjI4LCAxNCwgMjMsIAorICAgIDIzOSwgMjM2LCA3LCA1LCAxLCAxMDYsIDIsIDIyOCwgMTQsIDIzLCAyMzksIDIzNiwgNywgNiwgMSwgMzIsIDIsIDIyMiwgCisgICAgMTk3LCAyMywgMTUzLCA3LCA1LCAxLCAzMiwgMiwgMjIyLCAxOTcsIDIzLCAxNTMsIDcsIDYsIDEsIDMyLCAyLCAyMjIsIAorICAgIDE5NywgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAzMiwgMiwgMjIyLCAxOTcsIDIzLCAyMTEsIDE4MCwgNywgNiwgMSwgMTc0LCAKKyAgICAyLCAyMjIsIDE5NywgMjMsIDE1MywgNywgNSwgMSwgMTc0LCAyLCAyMjIsIDE5NywgMjMsIDE1MywgNywgNiwgMSwgMTc0LCAKKyAgICAyLCAyMjIsIDE5NywgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAxNzQsIDIsIDIyMiwgMTk3LCAyMywgMjExLCAxODAsIDcsIDYsIAorICAgIDEsIDE3NCwgMiwgNjcsIDg0LCAyMywgMTUzLCA3LCA1LCAxLCAxNzQsIDIsIDY3LCA4NCwgMjMsIDE1MywgNywgNiwgMSwgCisgICAgMTc0LCAyLCA2NywgODQsIDIzLCAyMTEsIDE4MCwgNywgNSwgMSwgMTc0LCAyLCA2NywgODQsIDIzLCAyMTEsIDE4MCwgNywgCisgICAgNSwgMSwgMjM3LCAyMjUsIDIsIDY3LCA4NCwgMjMsIDIzOSwgMjM2LCA3LCA1LCAxLCAyMzcsIDIyNSwgMiwgNjcsIDg0LCAKKyAgICAyMywgMjExLCAxODAsIDcsIDYsIDEsIDIzNywgMjI1LCAyLCAyMjIsIDE5NywgMjMsIDE1MywgNywgNSwgMSwgMjM3LCAyMjUsIAorICAgIDIsIDIyMiwgMTk3LCAyMywgNjcsIDg0LCAyMywgMTUzLCA3LCA2LCAxLCAyMzcsIDIyNSwgMiwgMjIyLCAxOTcsIDIzLCAKKyAgICAyMTEsIDE4MCwgNywgNSwgMSwgMjM3LCAyMjUsIDIsIDIyMiwgMTk3LCAyMywgNjcsIDg0LCAyMywgMjExLCAxODAsIDcsIDYsIAorICAgIDEsIDIzMiwgMjA0LCAyLCAyMTEsIDE4MCwgNywgNSwgMSwgMjMyLCAyMDQsIDIsIDY3LCA4NCwgMjMsIDIxMSwgMTgwLCA3LCAKKyAgICA2LCAxLCAyMzAsIDE1OSwgMiwgMjExLCAxODAsIDcsIDUsIDEsIDIzMCwgMTU5LCAyLCAyMTEsIDE4MCwgNywgNiwgMSwgCisgICAgMjI5LCAyOSwgMiwgMjExLCAxODAsIDcsIDUsIDEsIDIyOSwgMjksIDIsIDIxMSwgMTgwLCA3LCA2LCAxLCAyMTksIDE1MCwgCisgICAgMiwgMjExLCAxODAsIDcsIDUsIDEsIDIxOSwgMTUwLCAyLCAyMTEsIDE4MCwgNywgNiwgMSwgMTA2LCAyLCAyMjIsIDE5NywgCisgICAgMjMsIDE1MywgNywgNSwgMSwgMTA2LCAyLCAyMjIsIDE5NywgMjMsIDE1MywgNywgNiwgMSwgMTA2LCAyLCAyMjIsIDE5NywgCisgICAgMjMsIDIxMSwgMTgwLCA3LCA1LCAxLCAxMDYsIDIsIDIyMiwgMTk3LCAyMywgMjExLCAxODAsIDcsIDYsIDEsIDEwNiwgMiwgCisgICAgMjI4LCAxNCwgMjMsIDE1MywgNywgNSwgMSwgMTA2LCAyLCAyMjgsIDE0LCAyMywgMTUzLCA3LCA2LCAxLCAxMDYsIDIsIAorICAgIDIyOCwgMTQsIDIzLCAyMTEsIDE4MCwgNywgNSwgMSwgMTA2LCAyLCAyMjgsIDE0LCAyMywgMjExLCAxODAsIDcsIDUsIDEsIAorICAgIDI1MiwgMjQ5LCAyLCAyMzksIDIzNiwgNywgNSwgMSwgMjIyLCAxNDIsIDE0OCwgMiwgMjM5LCAyMzYsIDcsIDUsIDEsIDIyMiwgCisgICAgMTQyLCAxNDgsIDIsIDE1MywgNywgNSwgMSwgMjAxLCAyMDksIDE0OSwgMiwgMjM5LCAyMzYsIDcsIDUsIDEsIDIwMSwgMjA5LCAKKyAgICAxNDksIDIsIDE1MywgNywgNSwgMSwgMjE3LCAxMDEsIDIsIDIzOSwgMjM2LCA3LCA1LCAxLCAyMTcsIDEwMSwgMiwgMTUzLCAKKyAgICA3LCA1LCAxLCAyMzgsIDEyOSwgMjE3LCAxMDEsIDIsIDIzOSwgMjM2LCA3LCA1LCAxLCAyMzgsIDEyOSwgMjE3LCAxMDEsIDIsIAorICAgIDE1MywgOCwgMjE2LCAzNywgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMjUyLCAxNzIsIDgsIDIxNiwgMzcsIDg3LCAyLCAKKyAgICAyMzksIDExMiwgODQsIDIsIDIwNywgNTksIDgsIDIxNiwgMzcsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDEyNiwgMjI3LCAKKyAgICAyMjgsIDgsIDIxNiwgMzcsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDIyMiwgMjA2LCA4LCAyMTYsIDM3LCA4NywgMiwgCisgICAgMjM5LCAxMTIsIDg0LCAyLCA3MSwgOCwgMjE2LCAzNywgODcsIDIsIDIzOSwgMTEyLCA4NCwgMiwgMjA1LCAyMTMsIDgsIAorICAgIDIxNiwgMzcsIDg3LCAyLCAyMzksIDExMiwgODQsIDIsIDc1LCA4LCAyMTYsIDM3LCA4NywgMiwgMjM5LCAxMTIsIDg0LCAyLCAKKyAgICAyNTIsIDI0OCwgOCwgMjE2LCAzNywgMjI0LCA1NSwgMiwgMjMxLCAyMTIsIDE2NSwgMSwgMjMxLCAxNDIsIDQwLCAxMDcsIAorICAgIDIzMiwgNzYsIDQwLCAxMDcsIDIyNSwgNzksIDQwLCAxMDcsIDI0OSwgMzQsIDQwLCAxMDcsIDIyMywgMTQ2LCA0MCwgMTA3LCAKKyAgICAyMTAsIDIxMSwgNDAsIDEwNywgMjI0LCAxMDQsIDQwLCAxMDcsIDIxMywgMTAsIDQwLCAxMDcsIDIyNiwgMzMsIDQwLCAxMDcsIAorICAgIDIyMiwgNjcsIDQwLCAxMDcsIDIyOSwgMjgsIDQwLCAxMDcsIDIwNiwgMTIzLCA0MCwgMTA3LCAxMzcsIDQwLCAxMDcsIDE0OSwgCisgICAgNDAsIDEwNywgMjA5LCAxNDgsIDQwLCAxMDcsIDIyOSwgMTY0LCA0MCwgMTA3LCAyMjksIDE3MywgNDAsIDEwNywgMjE4LCAKKyAgICA5MCwgNDAsIDEwNywgMjI0LCA4NiwgNDAsIDEwNywgMjMyLCAyMDMsIDQwLCAxMDcsIDIxNiwgNCwgNDAsIDEwNywgMjE0LCAKKyAgICA5OSwgNDAsIDEwNywgMTgyLCA0MCwgMTA3LCAyMzksIDE1NSwgNDAsIDEwNywgMjMwLCAyNTEsIDQwLCA0LCAyMzIsIDYzLCAKKyAgICA0MCwgNCwgMjMxLCAxMjMsIDQwLCA0LCAyMzEsIDExMSwgNDAsIDQsIDIzMCwgMjM2LCA0MCwgNCwgMjMwLCAyMDIsIDQwLCAKKyAgICA0LCAyMzEsIDIyNCwgNDAsIDQsIDIzMSwgMjIxLCA0MCwgNCwgMjMyLCA0MSwgNDAsIDQsIDIzMSwgNTMsIDQwLCA0LCAyMzEsIAorICAgIDMzLCA0MCwgNCwgMjMxLCAyNDIsIDQwLCA0LCAyMjUsIDc2LCA0MCwgNCwgMjI1LCAyNSwgNDAsIDQsIDIyNSwgMjEsIDQwLCAKKyAgICA0LCAyMjQsIDI0NiwgNDAsIDQsIDIyNCwgMjM4LCA0MCwgNCwgMjI1LCA2NCwgNDAsIDQsIDIyNSwgNjIsIDQwLCA0LCAyMjUsIAorICAgIDczLCA0MCwgNCwgMjI1LCAyLCA0MCwgNCwgMjI0LCAyNTMsIDQwLCA0LCAyMjUsIDY2LCA0MCwgNCwgMjQ5LCAwLCA0MCwgNCwgCisgICAgMjQ3LCAyNTEsIDQwLCA0LCAyNDcsIDI0MSwgNDAsIDQsIDI0NywgNDAsIDQwLCA0LCAyNDcsIDksIDQwLCA0LCAyNDgsIAorICAgIDE0OCwgNDAsIDQsIDI0OCwgMTQwLCA0MCwgNCwgMjQ4LCAyNDUsIDQwLCA0LCAyNDcsIDE3NCwgNDAsIDQsIDI0NywgMTA1LCAKKyAgICA0MCwgNCwgMjQ4LCAxODEsIDQwLCA0LCAyMjMsIDE0MywgNDAsIDQsIDIyMywgMTI1LCA0MCwgNCwgMjIzLCAxMjAsIDQwLCAKKyAgICA0LCAyMjMsIDEwMywgNDAsIDQsIDIyMywgOTUsIDQwLCA0LCAyMjMsIDEzNCwgNDAsIDQsIDIyMywgMTMzLCA0MCwgNCwgCisgICAgMjIzLCAxNDAsIDQwLCA0LCAyMjMsIDExMCwgNDAsIDQsIDIyMywgMTA3LCA0MCwgNCwgMjIzLCAxMzcsIDQwLCA0LCAyMTAsIAorICAgIDIwNywgNDAsIDQsIDIxMCwgMTg3LCA0MCwgNCwgMjEwLCAxODYsIDQwLCA0LCAyMTAsIDE3NSwgNDAsIDQsIDIxMCwgMTcyLCAKKyAgICA0MCwgNCwgMjEwLCAyMDMsIDQwLCA0LCAyMTAsIDIwMiwgNDAsIDQsIDIxMCwgMjA2LCA0MCwgNCwgMjEwLCAxODUsIDQwLCAKKyAgICA0LCAyMTAsIDE4NCwgNDAsIDQsIDIxMCwgMjA1LCA0MCwgNCwgMjI0LCAxMDIsIDQwLCA0LCAyMjQsIDg4LCA0MCwgNCwgCisgICAgMjI0LCA4NywgNDAsIDQsIDIyNCwgNzEsIDQwLCA0LCAyMjQsIDcwLCA0MCwgNCwgMjI0LCA5OCwgNDAsIDQsIDIyNCwgOTcsIAorICAgIDQwLCA0LCAyMjQsIDEwMSwgNDAsIDQsIDIyNCwgNzMsIDQwLCA0LCAyMjQsIDcyLCA0MCwgNCwgMjI0LCAxMDAsIDQwLCA0LCAKKyAgICAyMTIsIDIxNSwgNDAsIDQsIDIxMSwgMjExLCA0MCwgNCwgMjExLCAxOTUsIDQwLCA0LCAyMTAsIDE3MCwgNDAsIDQsIDIxMCwgCisgICAgMTM1LCA0MCwgNCwgMjEyLCAxMzEsIDQwLCA0LCAyMTIsIDEyMCwgNDAsIDQsIDIxMiwgMTkzLCA0MCwgNCwgMTI0LCA0MCwgCisgICAgNCwgMjExLCAxMDUsIDQwLCA0LCAyMTIsIDE1MSwgNDAsIDQsIDIyNSwgMjMyLCA0MCwgNCwgMjI0LCAyMzAsIDQwLCA0LCAKKyAgICAyMjQsIDIwNSwgNDAsIDQsIDIyMywgMjE3LCA0MCwgNCwgMjIzLCAxNTgsIDQwLCA0LCAyMjUsIDExMCwgNDAsIDQsIDIyNSwgCisgICAgMTA2LCA0MCwgNCwgMjI1LCAyMTgsIDQwLCA0LCAyMjQsIDY3LCA0MCwgNCwgMjI0LCA1NiwgNDAsIDQsIDIyNSwgMTkxLCAKKyAgICA0MCwgNCwgMjIyLCA1MSwgNDAsIDQsIDIyMSwgNTMsIDQwLCA0LCAyMjEsIDE1LCA0MCwgNCwgMjIwLCA4MiwgNDAsIDQsIAorICAgIDIyMCwgNTAsIDQwLCA0LCAyMjEsIDE3NCwgNDAsIDQsIDIyMSwgMTY0LCA0MCwgNCwgMjIyLCAzMiwgNDAsIDQsIDIyMCwgCisgICAgMjExLCA0MCwgNCwgMjIwLCAxODcsIDQwLCA0LCAyMjEsIDE4OCwgNDAsIDQsIDIyOCwgMTgsIDQwLCA0LCAyMjYsIDI1NCwgCisgICAgNDAsIDQsIDIyNiwgMjI0LCA0MCwgNCwgMjI2LCAxMTQsIDQwLCA0LCAyMjYsIDYyLCA0MCwgNCwgMjI3LCAxMTksIDQwLCA0LCAKKyAgICAyMjcsIDEwNywgNDAsIDQsIDIyNywgMjM5LCA0MCwgNCwgMjI2LCAxODEsIDQwLCA0LCAyMjYsIDE1MCwgNDAsIDQsIDIyNywgCisgICAgMTY2LCA0MCwgNCwgMjA2LCAxMDksIDQwLCA0LCAyMDYsIDExLCA0MCwgNCwgMjA2LCAyLCA0MCwgNCwgMjA1LCAyMTMsIDQwLCAKKyAgICA0LCAyMDUsIDE4MSwgNDAsIDQsIDIwNiwgNTIsIDQwLCA0LCAyMDYsIDQ5LCA0MCwgNCwgMjA2LCA4OCwgNDAsIDQsIDIwNSwgCisgICAgMjQ3LCA0MCwgNCwgMjA1LCAyMzIsIDQwLCA0LCAyMDYsIDYxLCA0MCwgNCwgMjE5LCAxMDksIDQwLCA0LCAyMTgsIDIwOCwgCisgICAgNDAsIDQsIDIxOCwgMTU0LCA0MCwgNCwgMjE4LCA1MCwgNDAsIDQsIDIxOCwgMjEsIDQwLCA0LCAyMTksIDUxLCA0MCwgNCwgCisgICAgMjE5LCAyOSwgNDAsIDQsIDIxOSwgOTAsIDQwLCA0LCAyMTgsIDEyNCwgNDAsIDQsIDIxOCwgMTA3LCA0MCwgNCwgMjE5LCAKKyAgICA2MCwgNDAsIDQsIDIzMCwgMTQwLCA0MCwgNCwgMjI5LCAyMzUsIDQwLCA0LCAyMjksIDIxOSwgNDAsIDQsIDIyOSwgODEsIAorICAgIDQwLCA0LCAyMjksIDUzLCA0MCwgNCwgMjMwLCA1OCwgNDAsIDQsIDIzMCwgNTAsIDQwLCA0LCAyMzAsIDExNCwgNDAsIDQsIAorICAgIDIyOSwgMTQ0LCA0MCwgNCwgMjI5LCAxMTUsIDQwLCA0LCAyMzAsIDc1LCA0MCwgNCwgMjA5LCA2OSwgNDAsIDQsIDIwOCwgCisgICAgMjE0LCA0MCwgNCwgMjA4LCAxOTksIDQwLCA0LCAyMDcsIDE0OCwgNDAsIDQsIDIwNywgMTQxLCA0MCwgNCwgMjA5LCAzOSwgCisgICAgNDAsIDQsIDIwOSwgMzQsIDQwLCA0LCAyMDksIDY1LCA0MCwgNCwgMjA4LCAxNzMsIDQwLCA0LCAyMDgsIDE2MSwgNDAsIDQsIAorICAgIDIwOSwgNDUsIDQwLCA0LCAyMjksIDE2MiwgNDAsIDQsIDIyOSwgMTU3LCA0MCwgNCwgMjI5LCAxNTYsIDQwLCA0LCAyMjksIAorICAgIDE1MywgNDAsIDQsIDIyOSwgMTUyLCA0MCwgNCwgMjI5LCAxNTksIDQwLCA0LCAyMjksIDE1OCwgNDAsIDQsIDIyOSwgMTYxLCAKKyAgICA0MCwgNCwgMjI5LCAxNTUsIDQwLCA0LCAyMjksIDE1NCwgNDAsIDQsIDIyOSwgMTYwLCA0MCwgNCwgMjI5LCAxNzEsIDQwLCAKKyAgICA0LCAyMjksIDE2NiwgNDAsIDQsIDIyOSwgMTY1LCA0MCwgNCwgMjI5LCAxNDksIDQwLCA0LCAyMjksIDE0OCwgNDAsIDQsIAorICAgIDIyOSwgMTY4LCA0MCwgNCwgMjI5LCAxNjcsIDQwLCA0LCAyMjksIDE3MCwgNDAsIDQsIDIyOSwgMTUxLCA0MCwgNCwgMjI5LCAKKyAgICAxNTAsIDQwLCA0LCAyMjksIDE2OSwgNDAsIDQsIDIxOCwgODgsIDQwLCA0LCAyMTgsIDc3LCA0MCwgNCwgMjE4LCA3NiwgNDAsIAorICAgIDQsIDIxOCwgNzAsIDQwLCA0LCAyMTgsIDYzLCA0MCwgNCwgMjE4LCA4NCwgNDAsIDQsIDIxOCwgODMsIDQwLCA0LCAyMTgsIAorICAgIDg3LCA0MCwgNCwgMjE4LCA3NSwgNDAsIDQsIDIxOCwgNzQsIDQwLCA0LCAyMTgsIDg2LCA0MCwgNCwgMjI0LCA4NCwgNDAsIAorICAgIDQsIDIyNCwgNzksIDQwLCA0LCAyMjQsIDc4LCA0MCwgNCwgMjI0LCA3NSwgNDAsIDQsIDIyNCwgNzQsIDQwLCA0LCAyMjQsIAorICAgIDgxLCA0MCwgNCwgMjI0LCA4MCwgNDAsIDQsIDIyNCwgODMsIDQwLCA0LCAyMjQsIDc3LCA0MCwgNCwgMjI0LCA3NiwgNDAsIAorICAgIDQsIDIyNCwgODIsIDQwLCA0LCAyMzIsIDE5OSwgNDAsIDQsIDIzMiwgMTYyLCA0MCwgNCwgMjMyLCAxNTUsIDQwLCA0LCAKKyAgICAyMzIsIDEwNCwgNDAsIDQsIDIzMiwgODYsIDQwLCA0LCAyMzIsIDE4MiwgNDAsIDQsIDIzMiwgMTgwLCA0MCwgNCwgMjMyLCAKKyAgICAxOTMsIDQwLCA0LCAyMzIsIDEyMiwgNDAsIDQsIDIzMiwgMTEzLCA0MCwgNCwgMjMyLCAxODcsIDQwLCA0LCAyMTUsIDI1NCwgCisgICAgNDAsIDQsIDIxNSwgMTgzLCA0MCwgNCwgMjE1LCAxNzgsIDQwLCA0LCAyMTUsIDExNiwgNDAsIDQsIDIxNSwgMTAwLCA0MCwgCisgICAgNCwgMjE1LCAyMTQsIDQwLCA0LCAyMTUsIDIxMiwgNDAsIDQsIDIxNSwgMjQzLCA0MCwgNCwgMjE1LCAxNTgsIDQwLCA0LCAKKyAgICAyMTUsIDE1MiwgNDAsIDQsIDIxNSwgMjIzLCA0MCwgNCwgMjE0LCA5NSwgNDAsIDQsIDIxNCwgNjQsIDQwLCA0LCAyMTQsIAorICAgIDYwLCA0MCwgNCwgMjE0LCA1MSwgNDAsIDQsIDIxNCwgNDgsIDQwLCA0LCAyMTQsIDcwLCA0MCwgNCwgMjE0LCA2OSwgNDAsIAorICAgIDQsIDIxNCwgOTQsIDQwLCA0LCAyMTQsIDU2LCA0MCwgNCwgMjE0LCA1NSwgNDAsIDQsIDIxNCwgNzIsIDQwLCA0LCAyMTcsIAorICAgIDE5NiwgNDAsIDQsIDIxNSwgODAsIDQwLCA0LCAyMTUsIDYxLCA0MCwgNCwgMjEzLCAyMDMsIDQwLCA0LCAyMTMsIDExOSwgCisgICAgNDAsIDQsIDIxNywgODYsIDQwLCA0LCAyMTcsIDc0LCA0MCwgNCwgMjE3LCAxODEsIDQwLCA0LCAyMTQsIDE5MywgNDAsIDQsIAorICAgIDIxNCwgMTc0LCA0MCwgNCwgMjE3LCAxMjUsIDQwLCA0LCAyMzksIDE0MSwgNDAsIDQsIDIzOSwgMTEsIDQwLCA0LCAyMzgsIAorICAgIDI0NywgNDAsIDQsIDIzOCwgNDIsIDQwLCA0LCAyMzgsIDE5LCA0MCwgNCwgMjM5LCA3MSwgNDAsIDQsIDIzOSwgNTMsIDQwLCAKKyAgICA0LCAyMzksIDEzMSwgNDAsIDQsIDIzOCwgMTQ5LCA0MCwgNCwgMjM4LCAxMzEsIDQwLCA0LCAyMzksIDgwLCA0MCwgNCwgCisgICAgMjMwLCAyNTAsIDQwLCA0LCAyMzAsIDI0OSwgNDAsIDQsIDIzMCwgMjQ0LCA0MCwgNCwgMjMwLCAyNDMsIDQwLCA0LCAyMzAsIAorICAgIDI0MCwgNDAsIDQsIDIzMCwgMjM5LCA0MCwgNCwgMjMwLCAyNDYsIDQwLCA0LCAyMzAsIDI0NSwgNDAsIDQsIDIzMCwgMjQ4LCAKKyAgICA0MCwgNCwgMjMwLCAyNDIsIDQwLCA0LCAyMzAsIDI0MSwgNDAsIDQsIDIzMCwgMjQ3LCA0MCwgNCwgMjE1LCAxMjIsIDEzMiwgCisgICAgMTA3LCAzLCAyMDYsIDc0LCAxMzIsIDEwNywgMywgMjE5LCA3OSwgMTMyLCAxMDcsIDMsIDIxOCwgMjUzLCAxMDgsIDEsIAorICAgIDIxMCwgNzQsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAxNzIsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMzEsIDE2NywgODIsIAorICAgIDEwNywgMywgMjQ3LCAxNjksIDIzMSwgNTMsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMzEsIDEzOCwgODIsIDEwNywgMywgCisgICAgMjQ3LCAxNjksIDIyNSwgMiwgODIsIDEwNywgMywgMjQ3LCAxNjksIDI0OSwgMSwgODIsIDEwNywgMywgMjQ3LCAxNjksIAorICAgIDI0OCwgMTEwLCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjQ3LCAxNzQsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyNDgsIDMyLCAKKyAgICA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjIzLCAxMTAsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyNDYsIDE0NSwgODIsIDEwNywgCisgICAgMywgMjQ3LCAxNjksIDIxMCwgMTk2LCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjQ1LCA1MSwgODIsIDEwNywgMywgMjQ3LCAKKyAgICAxNjksIDIxMCwgMTkxLCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMTk5LCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjEyLCAyMTksIAorICAgIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMTIsIDU2LCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMTI0LCA4MiwgMTA3LCAzLCAKKyAgICAyNDcsIDE2OSwgMjExLCAyNTMsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMjQsIDY3LCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgCisgICAgMjUwLCAxODMsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMjEsIDkzLCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjIwLCAyMTEsIAorICAgIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMjEsIDY2LCA4MiwgMTA3LCAzLCAyNDcsIDE2OSwgMjI2LCAxODEsIDgyLCAxMDcsIAorICAgIDMsIDI0NywgMTY5LCAyMDUsIDI0NywgODIsIDEwNywgMywgMjQ3LCAxNjksIDIxOCwgMTI0LCA4MiwgMTA3LCAzLCAyNDcsIAorICAgIDE2OSwgMjI5LCAxNDQsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMDgsIDE3MywgODIsIDEwNywgMywgMjQ3LCAxNjksIDIxNiwgCisgICAgMiwgODIsIDEwNywgMywgMjQ3LCAxNjksIDIxNCwgOTYsIDgyLCAxMDcsIDMsIDI0NywgMTY5LCAyMTcsIDE5OSwgODIsIAorICAgIDEwNywgMywgMjQ3LCAxNjksIDE1NSwgODIsIDEwNywgMywgMjQ3LCAxNjksIDIzMCwgMTQxLCA4MiwgMjIsIDMsIDI0NywgCisgICAgMTY5LCAyMjAsIDE5LCA4MiwgMjMzLCA1NSwgMjIsIDMsIDI0NywgMTY5LCAyMTksIDIxNCwgODIsIDIzMywgNTUsIDIyLCAzLCAKKyAgICAyNDcsIDE2OSwgMjE4LCA5LCA4MiwgMjMzLCA1NSwgMjIsIDMsIDI0NywgMTY5LCAyMTgsIDIsIDgyLCAyMzMsIDU1LCAyMiwgCisgICAgMywgMjQ3LCAxNjksIDIxOSwgMjU1LCA4MiwgMjIsIDMsIDIyMiwgMTczLCA4MiwgMjIsIDMsIDI1MywgMTI1LCAxNjEsIDEsIAorICAgIDI0OSwgMjM3LCAyMjUsIDc3LCAxNjEsIDEsIDI0OSwgMjM3LCAyMjUsIDI1LCAxNjEsIDEsIDI0OSwgMjM3LCAyMjQsIDI0NiwgCisgICAgMTYxLCAxLCAyNDksIDIzNywgMjI1LCA2NCwgMTYxLCAxLCAyNDksIDIzNywgMjI1LCAyLCA2NCwgMSwgMjQ5LCAyMzcsIAorICAgIDIyNSwgNzcsIDY0LCAxLCAyNDksIDIzNywgMjI1LCAyNSwgNjQsIDEsIDI0OSwgMjM3LCAyMjQsIDI0NiwgNjQsIDEsIDI0OSwgCisgICAgMjM3LCAyMjUsIDY0LCA2NCwgMSwgMjQ5LCAyMzcsIDIyNSwgMiwgNjQsIDEsIDI1MiwgMTk4LCAyNDgsIDE0OCwgNjQsIDEsIAorICAgIDI1MiwgMTk4LCAyMTAsIDE3MCwgNjQsIDEsIDI1MiwgMTk4LCAxMjQsIDY0LCAxLCAyNTIsIDE5OCwgMjIyLCA2NywgNjUsIAorICAgIDEsIDI0MiwgMTU2LCAyNDIsIDE1NSwgMjQ3LCAxMTMsIDEzNSwgMTM0LCA2NSwgMSwgMjQyLCAxNTUsIDI0MiwgMTU2LCAKKyAgICAyNDcsIDExMywgMTM1LCAxMzQsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CiAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKLSAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAKLSAgICA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAKLSAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCAKLSAgICA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMDQsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIAotICAgIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAKLSAgICAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgMTI5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMzAsIDEzMSwgCi0gICAgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIAotICAgIDE0NiwgMTQ3LCA4NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE1MywgODcsIAotICAgIDE1NCwgMTU1LCAxNTYsIDg3LCAxNTcsIDg3LCAxNTgsIDg3LCA4NywgODcsIDE1OSwgODcsIDg3LCA4NywgMTYwLCAxNjEsIAotICAgIDE2MiwgMTYzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjQsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCi0gICAgMTY5LCAxNzAsIDE3MSwgODcsIDE3MiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKLSAgICAxNzksIDE4MCwgMTgxLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTgyLCAKLSAgICAxODMsIDE4NCwgMTg1LCAxODYsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4NywgMTg4LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDE4OSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDg3LCAxOTUsIAotICAgIDg3LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCAyMDQsIDIwNSwgODcsIDg3LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgODcsIDIxMSwgMjEyLCAyMTMsIDIxNCwgCi0gICAgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDIyMCwgMjIxLCAKLSAgICAyMjIsIDIyMywgMjI0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjUsIDg3LCAyMjYsIDIyNywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMjM1LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIAorICAgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTUsIDU2LCA1NywgNTgsIAorICAgIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNjYsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAorICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgNTIsIDg3LCA1MiwgODgsIAorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDUyLCA5NSwgNTIsIDk2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDk3LCA5OCwgOTksIAorICAgIDEwMCwgMTAxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwMiwgMTAzLCAxMDQsIDEwNSwgCisgICAgMTA2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMDcsIDEwOCwgCisgICAgMTA5LCAxMTAsIDUyLCA1MiwgNTIsIDExMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExMiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTQsIDExNSwgMTE2LCAxMTcsIAorICAgIDExOCwgMTE5LCAxMjAsIDEyMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDEyMiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjMsIDUyLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgCisgICAgMTI5LCAxMzAsIDEzMSwgMTMyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzMsIDEzNCwgMTM1LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM2LCAxMzcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM4LCAxMzksIDE0MCwgMTQxLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IHBocmFzZWJvb2tfb2Zmc2V0MltdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAogICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTgsIDYwLCA2MiwgNjQsIDY2LCA2OSwgNzIsIAotICAgIDc1LCA3OCwgODIsIDg2LCA5MSwgOTYsIDEwMSwgMTA1LCAxMTAsIDExNSwgMTIwLCAxMjQsIDEyOSwgMTM0LCAxMzgsIDE0MiwgCi0gICAgMTQ3LCAxNTEsIDE1NiwgMTYxLCAxNjUsIDE3MCwgMTc1LCAxNzksIDE4NCwgMTg5LCAxOTQsIDE5OSwgMjA0LCAyMDcsIAorICAgIDc1LCA3OCwgODIsIDg2LCA5MSwgOTYsIDEwMSwgMTA1LCAxMTAsIDExNSwgMTIwLCAxMjQsIDEyOSwgMTM0LCAxMzgsIDE0MywgCisgICAgMTQ4LCAxNTIsIDE1NywgMTYyLCAxNjYsIDE3MCwgMTc1LCAxNzksIDE4NCwgMTg5LCAxOTQsIDE5OSwgMjA0LCAyMDcsIAogICAgIDIxMSwgMjE0LCAyMTgsIDIyMSwgMjI1LCAyMjksIDIzNCwgMjM5LCAyNDQsIDI0OCwgMjUzLCAyNTgsIDI2MywgMjY3LCAKLSAgICAyNzIsIDI3NywgMjgxLCAyODUsIDI5MCwgMjk0LCAyOTksIDMwNCwgMzA4LCAzMTMsIDMxOCwgMzIyLCAzMjcsIDMzMiwgCisgICAgMjcyLCAyNzcsIDI4MSwgMjg2LCAyOTEsIDI5NSwgMzAwLCAzMDUsIDMwOSwgMzEzLCAzMTgsIDMyMiwgMzI3LCAzMzIsIAogICAgIDMzNywgMzQyLCAzNDcsIDM1MSwgMzU0LCAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMzYzLCAzNjgsIAotICAgIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OCwgMzkxLCAzOTcsIDQwNSwgNDA4LCA0MTIsIDQxNSwgNDE3LCAKLSAgICA0MjAsIDQyMywgNDI2LCA0MjksIDQzMywgNDM2LCA0MzksIDQ0MywgNDQ1LCA0NDgsIDQ1NCwgNDYyLCA0NjksIDQ3NiwgCi0gICAgNDgzLCA0ODgsIDQ5NSwgNTAxLCA1MDgsIDUxNCwgNTIxLCA1MjksIDUzNCwgNTQyLCA1NDksIDU1NSwgNTYyLCA1NjksIAotICAgIDU3NywgNTg0LCA1OTIsIDYwMCwgNjA1LCA2MTIsIDYxOSwgNjI1LCA2MzIsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKLSAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNzAwLCA3MDcsIDcxMywgNzIwLCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCi0gICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI0LCA4MzEsIDgzNywgODQ0LCA4NTAsIAotICAgIDg1NywgODYwLCA4NjYsIDg3MywgODc5LCA4ODYsIDg5MywgOTAwLCA5MDUsIDkxMywgOTIwLCA5MjcsIDkzNCwgOTQxLCAKLSAgICA5NDgsIDk1NSwgOTYyLCA5NjksIDk3NywgOTg1LCA5OTMsIDEwMDEsIDEwMDksIDEwMTcsIDEwMjUsIDEwMzMsIDEwNDAsIAotICAgIDEwNDcsIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjUsIAotICAgIDExMzMsIDExNDEsIDExNDksIDExNTcsIDExNjUsIDExNzMsIDExODEsIDExODksIDExOTcsIDEyMDQsIDEyMTEsIDEyMTgsIAotICAgIDEyMjUsIDEyMzMsIDEyNDEsIDEyNDksIDEyNTcsIDEyNjUsIDEyNzMsIDEyODEsIDEyODcsIDEyOTIsIDEyOTcsIDEzMDUsIAotICAgIDEzMTMsIDEzMjEsIDEzMjksIDEzMzQsIDEzNDEsIDEzNDgsIDEzNTYsIDEzNjQsIDEzNzIsIDEzODAsIDEzOTAsIDE0MDAsIAotICAgIDE0MDcsIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzYsIDE0NDQsIDE0NTIsIDE0NjAsIDE0NzEsIDE0NzYsIDE0ODEsIDE0ODgsIAotICAgIDE0OTUsIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MjgsIDE1MzMsIDE1NDAsIDE1NDcsIDE1NTUsIDE1NjMsIDE1NzEsIAotICAgIDE1NzksIDE1ODYsIDE1OTMsIDE2MDEsIDE2MDksIDE2MTcsIDE2MjUsIDE2MzMsIDE2NDEsIDE2NDksIDE2NTcsIDE2NjUsIAotICAgIDE2NzMsIDE2ODAsIDE2ODcsIDE2OTMsIDE2OTksIDE3MDYsIDE3MTMsIDE3MjAsIDE3MjcsIDE3MzUsIDE3NDMsIDE3NTAsIAotICAgIDE3NTcsIDE3NjQsIDE3NzEsIDE3NzksIDE3ODcsIDE3OTUsIDE4MDMsIDE4MTEsIDE4MTgsIDE4MjUsIDE4MzMsIDE4NDEsIAotICAgIDE4NDksIDE4NTcsIDE4NjMsIDE4NjksIDE4NzUsIDE4ODIsIDE4ODksIDE4OTQsIDE4OTksIDE5MDQsIDE5MTEsIDE5MTgsIAotICAgIDE5MjUsIDE5MzIsIDE5NDAsIDE5NDgsIDE5NTUsIDE5NjEsIDE5NjYsIDE5NzEsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTcsIAotICAgIDIwMDIsIDIwMDcsIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDgsIDIwNTYsIDIwNjYsIDIwNzQsIDIwODEsIAotICAgIDIwODgsIDIwOTMsIDIwOTgsIDIxMDUsIDIxMTIsIDIxMTYsIDIxMjEsIDIxMjYsIDIxMzEsIDIxMzksIDIxNDgsIDIxNTUsIAotICAgIDIxNjIsIDIxNzEsIDIxNzgsIDIxODUsIDIxOTAsIDIxOTcsIDIyMDQsIDIyMTEsIDIyMTgsIDIyMjUsIDIyMzAsIDIyMzcsIAotICAgIDIyNDQsIDIyNTIsIDIyNTcsIDIyNjIsIDIyNjcsIDIyNzcsIDIyODEsIDIyODcsIDIyOTMsIDIyOTksIDIzMDUsIDIzMTMsIAotICAgIDIzMjYsIDIzMzQsIDIzMzksIDIzNDksIDIzNTQsIDIzNTksIDIzNjksIDIzNzQsIDIzODEsIDIzODgsIDIzOTYsIDI0MDQsIAotICAgIDI0MTEsIDI0MTgsIDI0MjUsIDI0MzIsIDI0NDIsIDI0NTIsIDI0NjEsIDI0NzAsIDI0ODAsIDI0OTAsIDI1MDAsIDI1MTAsIAotICAgIDI1MTYsIDI1MjYsIDI1MzYsIDI1NDYsIDI1NTYsIDI1NjQsIDI1NzIsIDI1NzksIDI1ODYsIDI1OTQsIDI2MDIsIDI2MTAsIAotICAgIDI2MTgsIDI2MjUsIDI2MzIsIDI2NDIsIDI2NTIsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODEsIDI2OTEsIDI2OTYsIDI3MDMsIAotICAgIDI3MTAsIDI3MTUsIDI3MjAsIDI3MjgsIDI3MzYsIDI3NDYsIDI3NTYsIDI3NjMsIDI3NzAsIDI3NzksIDI3ODgsIDI3OTYsIAotICAgIDI4MDQsIDI4MTMsIDI4MjIsIDI4MzAsIDI4MzgsIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODQsIDI4OTQsIDI5MDIsIAotICAgIDI5MTAsIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTYsIDI5NjYsIDI5NzQsIDI5ODIsIDI5OTEsIDMwMDAsIDMwMDksIAotICAgIDMwMTgsIDMwMjcsIDMwMzYsIDMwNDEsIDMwNDYsIDMwNTQsIDMwNjIsIDMwNzIsIDMwODAsIDMwODUsIDMwOTAsIDMwOTcsIAotICAgIDMxMDQsIDMxMTEsIDMxMTgsIDMxMjUsIDMxMzIsIDMxNDIsIDMxNTIsIDMxNjIsIDMxNzIsIDMxNzksIDMxODYsIDMxOTYsIAotICAgIDMyMDYsIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTMsIDMyNjAsIDMyNjcsIDMyNzMsIDMyODAsIDMyODcsIAotICAgIDMyOTQsIDMzMDMsIDMzMTMsIDMzMjMsIDMzMzAsIDMzMzcsIDMzNDMsIDMzNDgsIDMzNTUsIDMzNjEsIDMzNjcsIDMzNzQsIAotICAgIDMzODEsIDMzOTIsIDM0MDIsIDM0MDksIDM0MTYsIDM0MjMsIDM0MzAsIDM0MzYsIDM0NDEsIDM0NDgsIDM0NTQsIDM0NTksIAotICAgIDM0NjcsIDM0NzUsIDM0ODIsIDM0ODgsIDM0OTMsIDM1MDAsIDM1MDUsIDM1MTIsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDYsIAotICAgIDM1NTIsIDM1NTgsIDM1NjMsIDM1NzAsIDM1NzcsIDM1ODQsIDM1OTEsIDM1OTgsIDM2MDMsIDM2MDgsIDM2MTcsIDM2MjUsIAotICAgIDM2MzQsIDM2MzksIDM2NDUsIDM2NTYsIDM2NjMsIDM2NzEsIDM2ODAsIDM2ODYsIDM2OTIsIDM2OTgsIDM3MDUsIDM3MTAsIAotICAgIDM3MTYsIDM3MjcsIDM3MzYsIDM3NDUsIDM3NTMsIDM3NjEsIDM3NzEsIDM3NzYsIDM3ODMsIDM3OTAsIDM3OTUsIDM4MDcsIAotICAgIDM4MTYsIDM4MjQsIDM4MzEsIDM4NDAsIDM4NDUsIDM4NTAsIDM4NTcsIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODQsIDM4OTMsIAotICAgIDM5MDEsIDM5MDYsIDM5MTQsIDM5MjAsIDM5MjgsIDM5MzYsIDM5NDIsIDM5NDgsIDM5NTQsIDM5NjEsIDM5NjksIDM5NzUsIAotICAgIDM5ODMsIDM5OTAsIDM5OTUsIDQwMDIsIDQwMTAsIDQwMjAsIDQwMjcsIDQwMzQsIDQwNDQsIDQwNTEsIDQwNTgsIDQwNjgsIAotICAgIDQwNzUsIDQwODIsIDQwODksIDQwOTUsIDQxMDEsIDQxMTEsIDQxMjQsIDQxMjksIDQxMzYsIDQxNDEsIDQxNDUsIDQxNTEsIAotICAgIDQxNjAsIDQxNjcsIDQxNzIsIDQxNzcsIDQxODEsIDQxODYsIDQxOTIsIDQxOTYsIDQyMDIsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjgsIDQyMzMsIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTQsIDQyNTYsIDQyNjEsIDQyNjUsIDQyNzEsIDQyNzcsIDQyODMsIAotICAgIDQyODgsIDQyOTUsIDQzMDIsIDQzMDgsIDQzMTUsIDQzMjMsIDQzMzEsIDQzMzYsIDQzNDEsIDQzNDUsIDQzNTAsIDQzNTIsIAotICAgIDQzNTQsIDQzNTcsIDQzNTksIDQzNjEsIDQzNjYsIDQzNzEsIDQzNzcsIDQzODIsIDQzODYsIDQzOTEsIDQzOTYsIDQ0MDUsIAotICAgIDQ0MTEsIDQ0MTYsIDQ0MjIsIDQ0MjcsIDQ0MzMsIDQ0NDEsIDQ0NDksIDQ0NTMsIDQ0NTcsIDQ0NjIsIDQ0NjgsIDQ0NzQsIAotICAgIDQ0ODAsIDQ0ODYsIDQ0OTEsIDQ0OTksIDQ1MDgsIDQ1MTcsIDQ1MjEsIDQ1MjcsIDQ1MzQsIDQ1NDEsIDQ1NDgsIDQ1NTUsIAotICAgIDQ1NTksIDQ1NjQsIDQ1NjksIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODYsIDQ1ODksIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIAotICAgIDQ2MDUsIDQ2MDksIDQ2MTUsIDQ2MTgsIDQ2MjMsIDQ2MjksIDQ2MzUsIDQ2MzgsIDQ2NDMsIDQ2NDksIDQ2NTMsIDQ2NTksIAotICAgIDQ2NjUsIDQ2NzEsIDQ2NzcsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTUsIDQ3MDEsIDQ3MDYsIDQ3MTEsIDQ3MTUsIDQ3MjAsIAotICAgIDQ3MjYsIDQ3MzIsIDQ3MzUsIDQ3MzksIDQ3NDMsIDQ3NDcsIDQ3NTAsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjksIDQ3NzMsIAotICAgIDQ3NzksIDQ3ODMsIDQ3ODksIDQ3OTMsIDQ3OTcsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTgsIDQ4MjQsIDQ4MzEsIDQ4MzcsIAotICAgIDQ4NDMsIDQ4NDksIDQ4NTIsIDQ4NTYsIDQ4NjAsIDQ4NjMsIDQ4NjcsIDQ4NzIsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTEsIAotICAgIDQ4OTUsIDQ4OTksIDQ5MDQsIDQ5MTAsIDQ5MTUsIDQ5MjEsIDQ5MjUsIDQ5MzIsIDQ5MzcsIDQ5NDIsIDQ5NDcsIDQ5NTIsIAotICAgIDQ5NTgsIDQ5NjEsIDQ5NjUsIDQ5NzAsIDQ5NzUsIDQ5ODQsIDQ5OTAsIDQ5OTUsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIAotICAgIDUwMTcsIDUwMjEsIDUwMjYsIDUwMjksIDUwMzUsIDUwNDAsIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzEsIAotICAgIDUwNzcsIDUwODMsIDUwODgsIDUwOTMsIDUwOTksIDUxMDUsIDUxMTEsIDUxMTYsIDUxMjEsIDUxMjgsIDUxMzUsIDUxMzksIAotICAgIDUxNDUsIDUxNTIsIDAsIDAsIDUxNTksIDUxNjIsIDUxNzEsIDUxODAsIDUxOTEsIDAsIDAsIDAsIDAsIDAsIDUxOTUsIAotICAgIDUxOTgsIDUyMDMsIDUyMTEsIDUyMTYsIDUyMjQsIDUyMzIsIDAsIDUyNDAsIDAsIDUyNDgsIDUyNTYsIDUyNjQsIDUyNzUsIAotICAgIDUyODAsIDUyODUsIDUyOTAsIDUyOTUsIDUzMDAsIDUzMDUsIDUzMTAsIDUzMTUsIDUzMjAsIDUzMjUsIDUzMzAsIDUzMzUsIAotICAgIDUzNDAsIDUzNDUsIDUzNTAsIDUzNTUsIDAsIDUzNjAsIDUzNjUsIDUzNzAsIDUzNzUsIDUzODAsIDUzODUsIDUzOTAsIAotICAgIDUzOTUsIDU0MDMsIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTQsIDU0NTksIDU0NjQsIDU0NjksIDU0NzQsIAotICAgIDU0NzksIDU0ODQsIDU0ODksIDU0OTQsIDU0OTksIDU1MDQsIDU1MDksIDU1MTQsIDU1MTksIDU1MjQsIDU1MjksIDU1MzQsIAotICAgIDU1MzksIDU1NDUsIDU1NTAsIDU1NTUsIDU1NjAsIDU1NjUsIDU1NzAsIDU1NzUsIDU1ODAsIDU1ODgsIDU1OTYsIDU2MDQsIAotICAgIDU2MTIsIDU2MjAsIDU2MjUsIDU2MjksIDU2MzMsIDU2NDAsIDU2NTAsIDU2NjAsIDU2NjQsIDU2NjgsIDU2NzIsIDU2NzgsIAotICAgIDU2ODUsIDU2ODksIDU2OTQsIDU2OTgsIDU3MDMsIDU3MDcsIDU3MTIsIDU3MTYsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIAotICAgIDU3NDEsIDU3NDYsIDU3NTEsIDU3NTYsIDU3NjEsIDU3NjYsIDU3NzEsIDU3NzYsIDU3ODEsIDU3ODYsIDU3OTEsIDU3OTUsIAotICAgIDU3OTksIDU4MDUsIDU4MDksIDU4MTQsIDU4MjAsIDU4MjgsIDU4MzMsIDU4MzgsIDU4NDUsIDU4NTAsIDU4NTUsIDU4NjIsIAotICAgIDU4NzEsIDU4ODAsIDU4OTEsIDU4OTksIDU5MDQsIDU5MDksIDU5MTQsIDU5MjEsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDIsIAotICAgIDU5NDcsIDU5NTIsIDU5NTcsIDU5NjIsIDU5NzAsIDU5NzYsIDU5ODEsIDU5ODUsIDU5OTAsIDU5OTUsIDYwMDAsIDYwMDUsIAotICAgIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjQsIDYwMzAsIDYwMzQsIDYwMzksIDYwNDQsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIAotICAgIDYwNjgsIDYwNzMsIDYwNzcsIDYwODIsIDYwODYsIDYwOTEsIDYwOTYsIDYxMDEsIDYxMDYsIDYxMTIsIDYxMTcsIDYxMjMsIAotICAgIDYxMjcsIDYxMzIsIDYxMzYsIDYxNDAsIDYxNDUsIDYxNTAsIDYxNTUsIDYxNjAsIDYxNjUsIDYxNzAsIDYxNzUsIDYxNzksIAotICAgIDYxODUsIDYxODksIDYxOTQsIDYxOTksIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjgsIDYyMzIsIDYyMzcsIAotICAgIDYyNDEsIDYyNDYsIDYyNTEsIDYyNTYsIDYyNjEsIDYyNjcsIDYyNzIsIDYyNzgsIDYyODIsIDYyODcsIDYyOTEsIDYyOTksIAotICAgIDYzMDQsIDYzMDksIDYzMTQsIDYzMjEsIDYzMjYsIDYzMzIsIDYzMzcsIDYzNDIsIDYzNDcsIDYzNTIsIDYzNTcsIDYzNjIsIAotICAgIDYzNzAsIDYzNzYsIDYzODEsIDYzODYsIDYzOTEsIDYzOTYsIDY0MDEsIDY0MDcsIDY0MTMsIDY0MjAsIDY0MjcsIDY0MzYsIAotICAgIDY0NDUsIDY0NTIsIDY0NTksIDY0NjgsIDY0NzcsIDY0ODIsIDY0ODcsIDY0OTIsIDY0OTcsIDY1MDIsIDY1MDcsIDY1MTIsIAotICAgIDY1MTcsIDY1MjgsIDY1MzksIDY1NDQsIDY1NDksIDY1NTYsIDY1NjMsIDY1NzEsIDY1NzksIDY1ODQsIDY1ODksIDY1OTQsIAotICAgIDY1OTksIDY2MDMsIDY2MDcsIDY2MTEsIDY2MTcsIDY2MjMsIDY2MjcsIDY2MzQsIDY2MzksIDY2NDksIDY2NTksIDY2NjUsIAotICAgIDY2NzEsIDY2NzksIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTAsIDY3MTcsIDY3MjYsIDY3MzUsIDY3NDMsIDY3NTEsIDY3NTksIAotICAgIDY3NjcsIDY3NzUsIDY3ODMsIDY3OTEsIDY3OTksIDY4MDYsIDY4MTMsIDY4MTksIDY4MjUsIDY4MzMsIDY4NDEsIDY4NDgsIAotICAgIDY4NTUsIDY4NjQsIDY4NzMsIDY4NzksIDY4ODUsIDY4OTMsIDY5MDEsIDY5MDksIDY5MTcsIDY5MjMsIDY5MjksIDY5MzcsIAotICAgIDY5NDUsIDY5NTMsIDY5NjEsIDY5NjgsIDY5NzUsIDY5ODMsIDY5OTEsIDY5OTksIDcwMDcsIDcwMTIsIDcwMTcsIDcwMjQsIAotICAgIDcwMzEsIDcwNDEsIDcwNTEsIDcwNTUsIDcwNjMsIDcwNzEsIDcwNzgsIDcwODUsIDcwOTMsIDcxMDEsIDcxMDgsIDcxMTUsIAotICAgIDcxMjMsIDcxMzEsIDcxMzgsIDcxNDUsIDcxNTMsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODcsIDcxOTQsIDcyMDAsIAotICAgIDcyMDYsIDcyMTQsIDcyMjIsIDcyMjcsIDcyMzIsIDcyNDAsIDcyNDgsIDcyNTYsIDcyNjQsIDcyNzIsIDcyODAsIDcyODcsIAotICAgIDcyOTQsIDczMDIsIDczMTAsIDczMTgsIDczMjYsIDczMzMsIDczNDAsIDczNDYsIDczNTIsIDczNjEsIDczNzAsIDczNzcsIAotICAgIDczODQsIDczOTEsIDczOTgsIDc0MDUsIDc0MTIsIDc0MTksIDc0MjYsIDc0MzQsIDc0NDIsIDc0NTAsIDc0NTgsIDc0NjYsIAotICAgIDc0NzQsIDc0ODQsIDc0OTQsIDc1MDEsIDc1MDgsIDc1MTUsIDc1MjIsIDc1MjksIDc1MzYsIDc1NDMsIDc1NTAsIDc1NTcsIAotICAgIDc1NjQsIDc1NzEsIDc1NzgsIDc1ODUsIDc1OTIsIDc1OTksIDc2MDYsIDc2MTMsIDc2MjAsIDc2MjcsIDc2MzQsIDc2NDEsIAotICAgIDc2NDgsIDc2NTUsIDc2NjIsIDc2NjcsIDc2NzIsIDc2NzcsIDc2ODIsIDc2ODcsIDc2OTIsIDc2OTcsIDc3MDIsIDc3MDcsIAotICAgIDc3MTIsIDc3MTgsIDc3MjQsIDc3MzMsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc3OTIsIDc3OTcsIDc4MDIsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIAotICAgIDc4MzYsIDc4NDEsIDc4NDYsIDc4NTEsIDc4NTYsIDc4NjEsIDc4NjYsIDc4NzEsIDc4NzYsIDc4ODEsIDc4ODYsIDc4OTEsIAotICAgIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzAsIDc5MzUsIDc5NDAsIDc5NDUsIDc5NTAsIAotICAgIDc5NTUsIDc5NjAsIDc5NjUsIDc5NzAsIDc5NzUsIDAsIDAsIDc5ODAsIDc5ODcsIDc5OTAsIDc5OTQsIDc5OTgsIDgwMDEsIAotICAgIDgwMDUsIDAsIDgwMDksIDgwMTQsIDgwMTksIDgwMjQsIDgwMjksIDgwMzQsIDgwMzksIDgwNDQsIDgwNDksIDgwNTMsIAotICAgIDgwNTgsIDgwNjMsIDgwNjgsIDgwNzMsIDgwNzgsIDgwODMsIDgwODgsIDgwOTMsIDgwOTgsIDgxMDMsIDgxMDgsIDgxMTMsIAotICAgIDgxMTgsIDgxMjMsIDgxMjgsIDgxMzMsIDgxMzgsIDgxNDMsIDgxNDcsIDgxNTIsIDgxNTcsIDgxNjIsIDgxNjcsIDgxNzIsIAotICAgIDgxNzcsIDgxODIsIDgxODcsIDgxOTIsIDgxOTcsIDAsIDgyMDQsIDgyMDksIDAsIDAsIDAsIDAsIDgyMTIsIDAsIDgyMTYsIAotICAgIDgyMjEsIDgyMjYsIDgyMzEsIDgyMzgsIDgyNDUsIDgyNTAsIDgyNTUsIDgyNjAsIDgyNjUsIDgyNzAsIDgyNzUsIDgyODAsIAotICAgIDgyODcsIDgyOTIsIDgyOTksIDgzMDYsIDgzMTEsIDgzMTgsIDgzMjMsIDgzMjgsIDgzMzMsIDgzNDAsIDgzNDUsIDgzNTAsIAotICAgIDgzNTcsIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTIsIDgzOTcsIDg0MDQsIDg0MTEsIDg0MTgsIDg0MjMsIAotICAgIDg0MjgsIDg0MzMsIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTgsIDg0NjMsIDg0NzEsIDg0NzYsIDg0ODEsIDg0ODYsIDg0OTEsIAotICAgIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTgsIDg1MjQsIDg1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1MzgsIDg1NDIsIAotICAgIDg1NDYsIDg1NTAsIDg1NTQsIDg1NTgsIDg1NjIsIDg1NjYsIDg1NzAsIDg1NzQsIDg1NzgsIDg1ODMsIDg1ODcsIDg1OTEsIAotICAgIDg1OTYsIDg2MDAsIDg2MDUsIDg2MDksIDg2MTMsIDg2MTcsIDg2MjIsIDg2MjYsIDg2MzEsIDg2MzUsIDg2MzksIDg2NDMsIAotICAgIDg2NDcsIDAsIDAsIDAsIDAsIDAsIDg2NTEsIDg2NTgsIDg2NjYsIDg2NzMsIDg2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg2ODMsIDg2ODYsIDg2OTAsIDg2OTUsIDg2OTksIDAsIDg3MDMsIDg3MDksIDg3MTUsIDg3MTgsIAotICAgIDg3MjUsIDg3MzQsIDg3MzcsIDg3NDAsIDg3NDUsIDg3NTEsIDg3NTUsIDg3NjMsIDg3NjksIDg3NzUsIDg3ODMsIDg3ODcsIAotICAgIDg3OTIsIDg4MDMsIDg4MDgsIDg4MTIsIDg4MTYsIDg4MjAsIDg4MjMsIDAsIDg4MjYsIDg4MzMsIDg4MzcsIDg4NDMsIAotICAgIDg4NDcsIDg4NTQsIDg4NjAsIDg4NjcsIDg4NzMsIDg4NzksIDg4ODMsIDg4ODcsIDg4OTMsIDg4OTcsIDg5MDEsIDg5MDUsIAotICAgIDg5MDksIDg5MTMsIDg5MTcsIDg5MjEsIDg5MjUsIDg5MjksIDg5MzMsIDg5MzcsIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIAotICAgIDg5NTcsIDg5NjEsIDg5NjksIDg5NzcsIDg5ODcsIDg5OTYsIDkwMDUsIDkwMDgsIDkwMTIsIDkwMTYsIDkwMjAsIDkwMjQsIAotICAgIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDUsIDkwNDksIDkwNTIsIDkwNTUsIDkwNTgsIDkwNjEsIDkwNjQsIDkwNjcsIAotICAgIDkwNzAsIDkwNzMsIDkwNzcsIDkwODAsIDkwODMsIDkwODgsIDkwOTMsIDkwOTksIDkxMDIsIDkxMDksIDkxMTgsIDkxMjMsIAotICAgIDkxMjgsIDkxMzUsIDkxNDAsIDkxNDUsIDkxNDksIDkxNTMsIDkxNTcsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzcsIAotICAgIDkxODEsIDkxODUsIDkxOTAsIDkxOTUsIDkyMDIsIDkyMDgsIDkyMTQsIDkyMjAsIDkyMjUsIDkyMzMsIDkyNDEsIDkyNDYsIAotICAgIDkyNTIsIDkyNTgsIDkyNjQsIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIDkyODksIDkyOTksIDkzMDMsIDkzMDcsIDkzMTEsIAotICAgIDkzMTcsIDkzMjUsIDkzMjksIDkzMzMsIDkzNDAsIDkzNDQsIDkzNDgsIDkzNTIsIDkzNTksIDkzNjYsIDkzNzgsIDkzODIsIAotICAgIDkzODYsIDkzOTAsIDk0MDAsIDk0MDksIDk0MTMsIDk0MjEsIDk0MjgsIDk0MzUsIDk0NDQsIDk0NTUsIDk0NjMsIDk0NjcsIAotICAgIDk0NzYsIDk0ODcsIDk0OTUsIDk1MDgsIDk1MTYsIDk1MjQsIDk1MzIsIDk1NDAsIDk1NDYsIDk1NTUsIDk1NjIsIDk1NjYsIAotICAgIDk1NzQsIDk1NzgsIDk1ODUsIDk1OTMsIDk1OTcsIDk2MDMsIDk2MTAsIDk2MTcsIDk2MjEsIDk2MjksIDk2MzMsIDk2NDAsIAotICAgIDk2NDQsIDk2NTIsIDk2NTYsIDk2NjQsIDk2NzIsIDk2NzksIDk2ODcsIDk2OTUsIDk3MDIsIDk3MDgsIDk3MTIsIDk3MTksIAotICAgIDk3MjcsIDk3MzMsIDk3NDAsIDk3NDcsIDk3NTMsIDk3NjIsIDk3NzAsIDk3NzcsIDk3ODMsIDk3ODcsIDk3OTAsIDk3OTQsIAotICAgIDk4MDAsIDk4MDgsIDk4MTIsIDk4MTgsIDk4MjQsIDk4MzEsIDk4MzgsIDk4NDEsIDk4NDgsIDk4NTMsIDk4NjEsIDk4NjYsIAotICAgIDk4NzAsIDk4ODMsIDk4OTYsIDk5MDIsIDk5MDksIDk5MTQsIDk5MjAsIDk5MjUsIDk5MzEsIDk5NDEsIDk5NDgsIDk5NTcsIAotICAgIDk5NjcsIDk5NzMsIDk5NzgsIDk5ODMsIDk5ODcsIDk5OTEsIDk5OTYsIDEwMDAxLCAxMDAwNywgMTAwMTUsIDEwMDIzLCAKLSAgICAxMDAzNCwgMTAwMzksIDEwMDQ4LCAxMDA1NywgMTAwNjQsIDEwMDcwLCAxMDA3NiwgMTAwODIsIDEwMDg4LCAxMDA5NCwgCi0gICAgMTAxMDAsIDEwMTA2LCAxMDExMiwgMTAxMTgsIDEwMTI1LCAxMDEzMiwgMTAxMzksIDEwMTQ1LCAxMDE1MywgMTAxNjIsIAotICAgIDEwMTY4LCAxMDE3NSwgMTAxODIsIDEwMTg3LCAxMDE5MiwgMTAxOTYsIDEwMjAzLCAxMDIxMCwgMTAyMTksIDEwMjI4LCAKLSAgICAxMDIzMSwgMTAyMzYsIDEwMjQxLCAwLCAxMDI0NiwgMTAyNTAsIDEwMjU0LCAxMDI2MCwgMTAyNjQsIDEwMjY4LCAxMDI3NCwgCi0gICAgMTAyNzgsIDEwMjg2LCAxMDI5MCwgMTAyOTQsIDEwMjk4LCAxMDMwMiwgMTAzMDYsIDEwMzEyLCAxMDMxNiwgMTAzMjIsIAotICAgIDEwMzI2LCAxMDMzMCwgMTAzMzQsIDEwMzM4LCAxMDM0MiwgMTAzNDcsIDEwMzUwLCAxMDM1NCwgMTAzNjAsIDEwMzY0LCAKLSAgICAxMDM2OCwgMTAzNzIsIDEwMzc2LCAxMDM4MCwgMTAzODYsIDEwMzkyLCAxMDM5OCwgMTA0MDIsIDEwNDA2LCAxMDQxMSwgCi0gICAgMTA0MTUsIDEwNDE5LCAxMDQyNCwgMTA0MjgsIDEwNDMyLCAxMDQzOSwgMTA0NDYsIDEwNDUwLCAxMDQ1NCwgMTA0NTksIAotICAgIDEwNDYzLCAxMDQ2NywgMTA0NzAsIDEwNDc1LCAxMDQ3OCwgMTA0ODEsIDEwNDg2LCAxMDQ5MSwgMTA0OTUsIDEwNDk5LCAKLSAgICAxMDUwNSwgMTA1MTEsIDEwNTE0LCAwLCAwLCAxMDUxNywgMTA1MjMsIDEwNTI5LCAxMDUzNSwgMTA1NDUsIDEwNTU3LCAKLSAgICAxMDU2OSwgMTA1ODYsIDEwNTk4LCAxMDYwOSwgMTA2MTcsIDEwNjI0LCAxMDYzNSwgMTA2NTAsIDEwNjYxLCAxMDY2NywgCi0gICAgMTA2NzYsIDEwNjg0LCAxMDY5NiwgMTA3MDYsIDEwNzE0LCAxMDcyNiwgMTA3MzMsIDEwNzQxLCAxMDc1MywgMTA3NTksIAotICAgIDEwNzY1LCAxMDc3MywgMTA3ODEsIDEwNzg5LCAxMDc5NSwgMTA4MDUsIDEwODEyLCAxMDgyMiwgMTA4MzIsIDEwODQ1LCAKLSAgICAxMDg1OSwgMTA4NzMsIDEwODgzLCAxMDg5NCwgMTA5MDUsIDEwOTE4LCAxMDkzMSwgMTA5NDUsIDEwOTU3LCAxMDk2OSwgCi0gICAgMTA5ODIsIDEwOTk1LCAxMTAwNywgMTEwMjAsIDExMDI5LCAxMTAzNywgMTEwNDIsIDExMDQ3LCAxMTA1MiwgMTEwNTcsIAotICAgIDExMDYyLCAxMTA2NywgMTEwNzIsIDExMDc3LCAxMTA4MiwgMTEwODcsIDExMDkyLCAxMTA5NywgMTExMDIsIDExMTA3LCAKLSAgICAxMTExMiwgMTExMTcsIDExMTIyLCAxMTEyNywgMTExMzIsIDExMTM3LCAxMTE0MiwgMTExNDcsIDExMTUyLCAxMTE1NywgCi0gICAgMTExNjIsIDExMTY3LCAxMTE3MiwgMTExNzcsIDExMTgyLCAxMTE4NywgMTExOTIsIDExMTk3LCAxMTIwMSwgMTEyMDYsIAotICAgIDExMjExLCAxMTIxNiwgMTEyMjEsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjM4LCAxMTI0MiwgMTEyNDYsIDExMjUwLCAKLSAgICAxMTI1NCwgMTEyNTgsIDExMjYyLCAxMTI2NiwgMTEyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDExMjc1LCAxMTI4MCwgMTEyODQsIDExMjg4LCAxMTI5MiwgMTEyOTYsIDExMzAwLCAxMTMwNCwgMTEzMDgsIDExMzEyLCAKLSAgICAxMTMxNiwgMTEzMjAsIDExMzI1LCAxMTMyOSwgMTEzMzMsIDExMzM3LCAxMTM0MiwgMTEzNDYsIDExMzUxLCAxMTM1NiwgCi0gICAgMTEzNjEsIDExMzY1LCAxMTM3MCwgMTEzNzUsIDExMzgwLCAxMTM4NSwgMTEzODksIDExMzk0LCAxMTM5OCwgMTE0MDMsIAotICAgIDExNDA4LCAxMTQxMiwgMTE0MTcsIDExNDI0LCAxMTQyOCwgMTE0MzMsIDExNDM3LCAxMTQ0MSwgMTE0NDYsIDExNDUwLCAKLSAgICAxMTQ1NywgMTE0NjQsIDExNDcxLCAxMTQ3NywgMTE0ODUsIDExNDkzLCAxMTUwMiwgMTE1MTAsIDExNTE3LCAxMTUyNCwgCi0gICAgMTE1MzIsIDExNTM4LCAxMTU0NCwgMTE1NTAsIDExNTU2LCAxMTU2MywgMTE1NjgsIDExNTcyLCAxMTU3NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTE1ODEsIDExNTg2LCAxMTU5MSwgMTE1OTYsIDExNjAxLCAxMTYwNiwgMTE2MTEsIDExNjE2LCAxMTYyMSwgCi0gICAgMTE2MjYsIDExNjMxLCAxMTYzNiwgMTE2NDEsIDExNjQ2LCAxMTY1MSwgMTE2NTYsIDExNjYxLCAxMTY2NiwgMTE2NzEsIAotICAgIDExNjc2LCAxMTY4MSwgMTE2ODYsIDExNjkxLCAxMTY5NiwgMTE3MDEsIDExNzA2LCAxMTcxMSwgMTE3MTksIDExNzI2LCAKLSAgICAxMTczMiwgMTE3MzcsIDExNzQ1LCAxMTc1MiwgMTE3NTgsIDExNzY1LCAxMTc3MSwgMTE3NzYsIDExNzgzLCAxMTc5MCwgCi0gICAgMTE3OTYsIDExODAxLCAxMTgwNiwgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjgsIDAsIDAsIDExODMzLCAxMTgzOSwgCi0gICAgMTE4NDUsIDExODUxLCAxMTg1NywgMTE4NjMsIDExODY5LCAxMTg3NCwgMTE4ODIsIDExODg4LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA2LCAxMTkxMiwgMTE5MjAsIDAsIDExOTI2LCAxMTkzMSwgMTE5MzYsIDExOTQxLCAxMTk0NiwgMTE5NTEsIDExOTU2LCAKLSAgICAxMTk2MSwgMTE5NjYsIDExOTcxLCAxMTk3NiwgMTE5ODEsIDExOTg2LCAxMTk5MSwgMTE5OTYsIDEyMDAxLCAxMjAwNiwgCi0gICAgMTIwMTEsIDEyMDE2LCAxMjAyMSwgMTIwMjYsIDEyMDMxLCAxMjAzNiwgMTIwNDEsIDEyMDQ2LCAxMjA1MSwgMTIwNTYsIAotICAgIDEyMDYxLCAwLCAwLCAxMjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYwLCAzNjQsIDM2OSwgCisgICAgMzcyLCAzNzUsIDM3OCwgMzgxLCAzODQsIDM4NywgMzg5LCAzOTIsIDM5OCwgNDA2LCA0MDksIDQxMywgNDE2LCA0MTgsIAorICAgIDQyMSwgNDI0LCA0MjcsIDQzMCwgNDM0LCA0MzcsIDQ0MCwgNDQ0LCA0NDYsIDQ0OSwgNDU1LCA0NjMsIDQ3MCwgNDc3LCAKKyAgICA0ODQsIDQ4OSwgNDk2LCA1MDIsIDUwOSwgNTE2LCA1MjMsIDUzMSwgNTM2LCA1NDQsIDU1MSwgNTU3LCA1NjQsIDU3MSwgCisgICAgNTc5LCA1ODYsIDU5NCwgNjAyLCA2MDcsIDYxNSwgNjIyLCA2MjgsIDYzNSwgNjQyLCA2NDksIDY1MiwgNjU4LCA2NjUsIAorICAgIDY3MSwgNjc4LCA2ODUsIDY5MiwgNjk3LCA3MDMsIDcxMCwgNzE2LCA3MjMsIDczMCwgNzM3LCA3NDUsIDc1MCwgNzU4LCAKKyAgICA3NjUsIDc3MSwgNzc4LCA3ODUsIDc5MywgODAwLCA4MDgsIDgxNiwgODIxLCA4MjksIDgzNiwgODQyLCA4NDksIDg1NiwgCisgICAgODYzLCA4NjYsIDg3MiwgODc5LCA4ODUsIDg5MiwgODk5LCA5MDYsIDkxMSwgOTE5LCA5MjYsIDkzMywgOTQwLCA5NDcsIAorICAgIDk1NCwgOTYxLCA5NjgsIDk3NSwgOTgzLCA5OTEsIDk5OSwgMTAwNywgMTAxNSwgMTAyMywgMTAzMSwgMTAzOSwgMTA0NiwgCisgICAgMTA1MywgMTA2MCwgMTA2NywgMTA3NCwgMTA4MSwgMTA4OCwgMTA5NSwgMTEwMiwgMTEwOSwgMTExNiwgMTEyMywgMTEzMSwgCisgICAgMTEzOSwgMTE0NywgMTE1NSwgMTE2MywgMTE3MSwgMTE3OSwgMTE4NywgMTE5NSwgMTIwMywgMTIxMCwgMTIxNywgMTIyNSwgCisgICAgMTIzMywgMTI0MSwgMTI0OSwgMTI1NywgMTI2NSwgMTI3MywgMTI4MSwgMTI4OSwgMTI5NSwgMTMwMCwgMTMwNSwgMTMxMywgCisgICAgMTMyMSwgMTMyOSwgMTMzNywgMTM0MiwgMTM0OSwgMTM1NiwgMTM2NCwgMTM3MiwgMTM4MCwgMTM4OCwgMTM5OCwgMTQwOCwgCisgICAgMTQxNSwgMTQyMiwgMTQyOSwgMTQzNiwgMTQ0NCwgMTQ1MiwgMTQ2MCwgMTQ2OCwgMTQ3OSwgMTQ4NCwgMTQ4OSwgMTQ5NiwgCisgICAgMTUwMywgMTUxMCwgMTUxNywgMTUyNCwgMTUzMSwgMTUzNiwgMTU0MSwgMTU0OCwgMTU1NSwgMTU2MywgMTU3MSwgMTU3OSwgCisgICAgMTU4NywgMTU5NCwgMTYwMSwgMTYwOSwgMTYxNywgMTYyNSwgMTYzMywgMTY0MSwgMTY0OSwgMTY1NywgMTY2NSwgMTY3MywgCisgICAgMTY4MSwgMTY4OCwgMTY5NSwgMTcwMiwgMTcwOSwgMTcxNiwgMTcyMywgMTczMCwgMTczNywgMTc0NSwgMTc1MywgMTc2MCwgCisgICAgMTc2NywgMTc3NCwgMTc4MSwgMTc4OSwgMTc5NywgMTgwNSwgMTgxMywgMTgyMSwgMTgyOCwgMTgzNSwgMTg0MywgMTg1MSwgCisgICAgMTg1OSwgMTg2NywgMTg3MiwgMTg3OCwgMTg4NCwgMTg5MSwgMTg5OCwgMTkwMywgMTkwOCwgMTkxNCwgMTkyMSwgMTkyOCwgCisgICAgMTkzNSwgMTk0MiwgMTk1MCwgMTk1OCwgMTk2NCwgMTk3MCwgMTk3NSwgMTk4MSwgMTk4OCwgMTk5NSwgMjAwMiwgMjAwNywgCisgICAgMjAxMiwgMjAxNywgMjAyNCwgMjAzMSwgMjAzOCwgMjA0NSwgMjA1MiwgMjA1OCwgMjA2NiwgMjA3NiwgMjA4NSwgMjA5MiwgCisgICAgMjA5OSwgMjEwNCwgMjEwOSwgMjExNiwgMjEyMywgMjEyNywgMjEzMiwgMjEzNywgMjE0MiwgMjE1MCwgMjE1OSwgMjE2NiwgCisgICAgMjE3MywgMjE4MiwgMjE4OSwgMjE5NiwgMjIwMSwgMjIwOCwgMjIxNSwgMjIyMiwgMjIyOSwgMjIzNiwgMjI0MSwgMjI0OCwgCisgICAgMjI1NSwgMjI2MywgMjI2OCwgMjI3MywgMjI3OCwgMjI4OCwgMjI5MiwgMjI5OCwgMjMwNCwgMjMxMCwgMjMxNiwgMjMyNCwgCisgICAgMjMzNywgMjM0NSwgMjM1MCwgMjM2MCwgMjM2NSwgMjM3MCwgMjM4MCwgMjM4NSwgMjM5MiwgMjM5OSwgMjQwNywgMjQxNSwgCisgICAgMjQyMiwgMjQyOSwgMjQzNiwgMjQ0MywgMjQ1MywgMjQ2MywgMjQ3MiwgMjQ4MSwgMjQ5MSwgMjUwMSwgMjUxMSwgMjUyMSwgCisgICAgMjUyNiwgMjUzNiwgMjU0NiwgMjU1NiwgMjU2NiwgMjU3NCwgMjU4MiwgMjU4OSwgMjU5NiwgMjYwNCwgMjYxMiwgMjYyMCwgCisgICAgMjYyOCwgMjYzNSwgMjY0MiwgMjY1MiwgMjY2MiwgMjY3MCwgMjY3OCwgMjY4NiwgMjY5MSwgMjcwMSwgMjcwNiwgMjcxMywgCisgICAgMjcyMCwgMjcyNSwgMjczMCwgMjczOCwgMjc0NiwgMjc1NiwgMjc2NiwgMjc3MywgMjc4MCwgMjc4OSwgMjc5OCwgMjgwNiwgCisgICAgMjgxNCwgMjgyMywgMjgzMiwgMjg0MCwgMjg0OCwgMjg1NywgMjg2NiwgMjg3NSwgMjg4NCwgMjg5NCwgMjkwNCwgMjkxMiwgCisgICAgMjkyMCwgMjkyOSwgMjkzOCwgMjk0NywgMjk1NiwgMjk2NiwgMjk3NiwgMjk4NCwgMjk5MiwgMzAwMSwgMzAxMCwgMzAxOSwgCisgICAgMzAyOCwgMzAzNywgMzA0NiwgMzA1MSwgMzA1NiwgMzA2NCwgMzA3MiwgMzA4MiwgMzA5MCwgMzA5NSwgMzEwMCwgMzEwNywgCisgICAgMzExNCwgMzEyMSwgMzEyOCwgMzEzNSwgMzE0MiwgMzE1MiwgMzE2MiwgMzE3MiwgMzE4MiwgMzE4OSwgMzE5NiwgMzIwNiwgCisgICAgMzIxNiwgMzIyNCwgMzIzMiwgMzI0MCwgMzI0OCwgMzI1NiwgMzI2MywgMzI3MCwgMzI3NywgMzI4MywgMzI5MCwgMzI5NywgCisgICAgMzMwNCwgMzMxMywgMzMyMywgMzMzMywgMzM0MCwgMzM0NywgMzM1MywgMzM1OCwgMzM2NCwgMzM3MCwgMzM3NiwgMzM4MywgCisgICAgMzM5MCwgMzQwMSwgMzQxMSwgMzQxOCwgMzQyNSwgMzQzMiwgMzQzOSwgMzQ0NCwgMzQ0OSwgMzQ1NSwgMzQ2MSwgMzQ2NywgCisgICAgMzQ3NSwgMzQ4MywgMzQ5MCwgMzQ5NiwgMzUwMSwgMzUwOCwgMzUxNCwgMzUyMiwgMzUzMiwgMzU0MiwgMzU1MSwgMzU1OCwgCisgICAgMzU2NCwgMzU3MCwgMzU3NSwgMzU4MiwgMzU4OCwgMzU5NSwgMzYwMiwgMzYwOSwgMzYxNCwgMzYxOSwgMzYyOSwgMzYzNywgCisgICAgMzY0NiwgMzY1MSwgMzY1NywgMzY2NywgMzY3NCwgMzY4MiwgMzY5MSwgMzY5NywgMzcwMywgMzcwOSwgMzcxNiwgMzcyMSwgCisgICAgMzcyNiwgMzczNiwgMzc0NCwgMzc1MywgMzc2MSwgMzc2OSwgMzc3OSwgMzc4NCwgMzc5MSwgMzc5OCwgMzgwMywgMzgxNSwgCisgICAgMzgyNCwgMzgzMiwgMzgzOCwgMzg0NywgMzg1MiwgMzg1NywgMzg2NCwgMzg3MCwgMzg3NiwgMzg4MiwgMzg4OCwgMzg5NywgCisgICAgMzkwNSwgMzkxMCwgMzkxOCwgMzkyNCwgMzkzMiwgMzk0MCwgMzk0NiwgMzk1MiwgMzk1OCwgMzk2NiwgMzk3NCwgMzk4MCwgCisgICAgMzk4OCwgMzk5NCwgMzk5OSwgNDAwNiwgNDAxNCwgNDAyNCwgNDAzMSwgNDAzOCwgNDA0OCwgNDA1NSwgNDA2MiwgNDA3MiwgCisgICAgNDA3OSwgNDA4NiwgNDA5MywgNDA5OSwgNDEwNSwgNDExNCwgNDEyNiwgNDEzMSwgNDEzOCwgNDE0MywgNDE0NywgNDE1MiwgCisgICAgNDE2MCwgNDE2NywgNDE3MiwgNDE3NywgNDE4MSwgNDE4NiwgNDE5MSwgNDE5NSwgNDIwMSwgNDIwNywgNDIxMywgNDIxOSwgCisgICAgNDIyNywgNDIzMiwgNDIzNywgNDI0MiwgNDI0NywgNDI1MywgNDI1NSwgNDI2MCwgNDI2NCwgNDI3MCwgNDI3NiwgNDI4MiwgCisgICAgNDI4NywgNDI5NCwgNDMwMSwgNDMwNywgNDMxNCwgNDMyMiwgNDMzMCwgNDMzNSwgNDM0MCwgNDM0NCwgNDM0OSwgNDM1MSwgCisgICAgNDM1MywgNDM1NiwgNDM1OCwgNDM2MSwgNDM2NiwgNDM3MSwgNDM3NywgNDM4MiwgNDM4NiwgNDM5MCwgNDM5NSwgNDQwNCwgCisgICAgNDQxMCwgNDQxNSwgNDQyMSwgNDQyNiwgNDQzMiwgNDQ0MCwgNDQ0OCwgNDQ1MiwgNDQ1NiwgNDQ2MSwgNDQ2NywgNDQ3MywgCisgICAgNDQ3OSwgNDQ4NSwgNDQ5MCwgNDQ5OCwgNDUwNywgNDUxNiwgNDUyMSwgNDUyNywgNDUzNCwgNDU0MSwgNDU0OCwgNDU1NSwgCisgICAgNDU1OSwgNDU2NSwgNDU3MCwgNDU3NSwgNDU4MCwgNDU4NSwgNDU4OCwgNDU5MSwgNDU5NCwgNDU5NywgNDYwMCwgNDYwMywgCisgICAgNDYwNywgNDYxMSwgNDYxNywgNDYyMCwgNDYyNSwgNDYzMSwgNDYzNywgNDY0MCwgNDY0NSwgNDY1MCwgNDY1NCwgNDY2MCwgCisgICAgNDY2NiwgNDY3MiwgNDY3OCwgNDY4MywgNDY4OCwgNDY5MywgNDY5NiwgNDcwMiwgNDcwNywgNDcxMiwgNDcxNiwgNDcyMSwgCisgICAgNDcyNywgNDczMywgNDczNiwgNDc0MCwgNDc0NCwgNDc0OCwgNDc1MSwgNDc1NCwgNDc1OSwgNDc2MywgNDc3MCwgNDc3NCwgCisgICAgNDc4MCwgNDc4NCwgNDc5MCwgNDc5NCwgNDc5OCwgNDgwMiwgNDgwNywgNDgxMiwgNDgxOSwgNDgyNSwgNDgzMiwgNDgzOCwgCisgICAgNDg0NCwgNDg1MCwgNDg1MywgNDg1NywgNDg2MSwgNDg2NSwgNDg2OSwgNDg3NCwgNDg3OSwgNDg4MywgNDg4NywgNDg5MywgCisgICAgNDg5NywgNDkwMSwgNDkwNiwgNDkxMiwgNDkxNywgNDkyMywgNDkyNywgNDkzNCwgNDkzOSwgNDk0MywgNDk0OCwgNDk1MywgCisgICAgNDk1OSwgNDk2MiwgNDk2NiwgNDk3MSwgNDk3NiwgNDk4NSwgNDk5MSwgNDk5NiwgNTAwMCwgNTAwNSwgNTAwOSwgNTAxNCwgCisgICAgNTAxOCwgNTAyMiwgNTAyNywgNTAzMSwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NywgNTA3MywgCisgICAgNTA3OSwgNTA4NSwgNTA5MSwgNTA5NiwgNTEwMiwgNTEwOCwgNTExNCwgNTExOSwgNTEyNCwgNTEzMSwgNTEzOCwgNTE0MiwgCisgICAgNTE0OCwgNTE1NSwgMCwgMCwgNTE2MiwgNTE2NSwgNTE3NCwgNTE4MywgNTE5NCwgNTE5OCwgMCwgMCwgMCwgMCwgNTIwMywgCisgICAgNTIwNiwgNTIxMSwgNTIxOSwgNTIyNCwgNTIzMiwgNTI0MCwgMCwgNTI0OCwgMCwgNTI1NiwgNTI2NCwgNTI3MiwgNTI4MywgCisgICAgNTI4OCwgNTI5MywgNTI5OCwgNTMwMywgNTMwOCwgNTMxMywgNTMxOCwgNTMyMywgNTMyOCwgNTMzMywgNTMzOCwgNTM0MywgCisgICAgNTM0OCwgNTM1MywgNTM1OCwgNTM2MywgMCwgNTM2OCwgNTM3MywgNTM3OCwgNTM4MywgNTM4OCwgNTM5MywgNTM5OCwgCisgICAgNTQwMywgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1MSwgNTQ2MiwgNTQ2NywgNTQ3MiwgNTQ3NywgNTQ4MiwgCisgICAgNTQ4NywgNTQ5MiwgNTQ5NywgNTUwMiwgNTUwNywgNTUxMiwgNTUxNywgNTUyMiwgNTUyNywgNTUzMiwgNTUzNywgNTU0MiwgCisgICAgNTU0NywgNTU1MywgNTU1OCwgNTU2MywgNTU2OCwgNTU3MywgNTU3OCwgNTU4MywgNTU4OCwgNTU5NiwgNTYwNCwgNTYxMiwgCisgICAgNTYyMCwgNTYyOCwgNTYzMywgNTYzNywgNTY0MSwgNTY0OCwgNTY1OCwgNTY2OCwgNTY3MiwgNTY3NiwgNTY4MCwgNTY4NiwgCisgICAgNTY5MywgNTY5NywgNTcwMiwgNTcwNiwgNTcxMSwgNTcxNSwgNTcyMCwgNTcyNCwgNTcyOSwgNTczNCwgNTczOSwgNTc0NCwgCisgICAgNTc0OSwgNTc1NCwgNTc1OSwgNTc2NCwgNTc2OSwgNTc3NCwgNTc3OSwgNTc4NCwgNTc4OSwgNTc5NCwgNTc5OSwgNTgwMywgCisgICAgNTgwNywgNTgxMywgNTgxNywgNTgyMiwgNTgyOCwgNTgzNiwgNTg0MSwgNTg0NiwgNTg1MywgNTg1OCwgNTg2MywgNTg3MCwgCisgICAgNTg3OSwgNTg4OCwgNTg5OSwgNTkwNywgNTkxMiwgNTkxNywgNTkyMiwgNTkyOSwgNTkzNCwgNTk0MCwgNTk0NSwgNTk1MCwgCisgICAgNTk1NSwgNTk2MCwgNTk2NSwgNTk3MCwgNTk3OCwgNTk4NCwgNTk4OSwgNTk5MywgNTk5OCwgNjAwMywgNjAwOCwgNjAxMywgCisgICAgNjAxOCwgNjAyMywgNjAyOCwgNjAzMiwgNjAzOCwgNjA0MiwgNjA0NywgNjA1MiwgNjA1NywgNjA2MSwgNjA2NiwgNjA3MSwgCisgICAgNjA3NiwgNjA4MSwgNjA4NSwgNjA5MCwgNjA5NCwgNjA5OSwgNjEwNCwgNjEwOSwgNjExNCwgNjEyMCwgNjEyNSwgNjEzMSwgCisgICAgNjEzNSwgNjE0MCwgNjE0NCwgNjE0OCwgNjE1MywgNjE1OCwgNjE2MywgNjE2OCwgNjE3MywgNjE3OCwgNjE4MywgNjE4NywgCisgICAgNjE5MywgNjE5NywgNjIwMiwgNjIwNywgNjIxMiwgNjIxNiwgNjIyMSwgNjIyNiwgNjIzMSwgNjIzNiwgNjI0MCwgNjI0NSwgCisgICAgNjI0OSwgNjI1NCwgNjI1OSwgNjI2NCwgNjI2OSwgNjI3NSwgNjI4MCwgNjI4NiwgNjI5MCwgNjI5NSwgNjI5OSwgNjMwNywgCisgICAgNjMxMiwgNjMxNywgNjMyMiwgNjMyOSwgNjMzNCwgNjM0MCwgNjM0NSwgNjM1MCwgNjM1NSwgNjM2MCwgNjM2NSwgNjM3MCwgCisgICAgNjM3OCwgNjM4NCwgNjM4OSwgNjM5NCwgNjM5OSwgNjQwNCwgNjQwOSwgNjQxNSwgNjQyMSwgNjQyOCwgNjQzNSwgNjQ0NCwgCisgICAgNjQ1MywgNjQ2MCwgNjQ2NywgNjQ3NiwgNjQ4NSwgNjQ5MCwgNjQ5NSwgNjUwMCwgNjUwNSwgNjUxMCwgNjUxNSwgNjUyMCwgCisgICAgNjUyNSwgNjUzNiwgNjU0NywgNjU1MiwgNjU1NywgNjU2NCwgNjU3MSwgNjU3OSwgNjU4NywgNjU5MiwgNjU5NywgNjYwMiwgCisgICAgNjYwNywgNjYxMSwgNjYxNSwgNjYxOSwgNjYyNSwgNjYzMSwgNjYzNSwgNjY0MiwgNjY0NywgNjY1NywgNjY2NywgNjY3MywgCisgICAgNjY3OSwgNjY4NywgNjY5NSwgNjcwMywgNjcxMSwgNjcxOCwgNjcyNSwgNjczNCwgNjc0MywgNjc1MSwgNjc1OSwgNjc2NywgCisgICAgNjc3NSwgNjc4MywgNjc5MSwgNjc5OSwgNjgwNywgNjgxNCwgNjgyMSwgNjgyNywgNjgzMywgNjg0MSwgNjg0OSwgNjg1NiwgCisgICAgNjg2MywgNjg3MiwgNjg4MSwgNjg4NywgNjg5MywgNjkwMSwgNjkwOSwgNjkxNywgNjkyNSwgNjkzMSwgNjkzNywgNjk0NSwgCisgICAgNjk1MywgNjk2MSwgNjk2OSwgNjk3NiwgNjk4MywgNjk5MSwgNjk5OSwgNzAwNywgNzAxNSwgNzAyMCwgNzAyNSwgNzAzMiwgCisgICAgNzAzOSwgNzA0OSwgNzA1OSwgNzA2MywgNzA3MSwgNzA3OSwgNzA4NiwgNzA5MywgNzEwMSwgNzEwOSwgNzExNiwgNzEyMywgCisgICAgNzEzMSwgNzEzOSwgNzE0NiwgNzE1MywgNzE2MSwgNzE2OSwgNzE3NCwgNzE4MSwgNzE4OCwgNzE5NSwgNzIwMiwgNzIwOCwgCisgICAgNzIxNCwgNzIyMiwgNzIzMCwgNzIzNSwgNzI0MCwgNzI0OCwgNzI1NiwgNzI2NCwgNzI3MiwgNzI4MCwgNzI4OCwgNzI5NSwgCisgICAgNzMwMiwgNzMxMCwgNzMxOCwgNzMyNiwgNzMzNCwgNzM0MSwgNzM0OCwgNzM1NCwgNzM2MCwgNzM2OSwgNzM3OCwgNzM4NSwgCisgICAgNzM5MiwgNzM5OSwgNzQwNiwgNzQxMywgNzQyMCwgNzQyNywgNzQzNCwgNzQ0MiwgNzQ1MCwgNzQ1OCwgNzQ2NiwgNzQ3NCwgCisgICAgNzQ4MiwgNzQ5MiwgNzUwMiwgNzUwOSwgNzUxNiwgNzUyMywgNzUzMCwgNzUzNywgNzU0NCwgNzU1MSwgNzU1OCwgNzU2NSwgCisgICAgNzU3MiwgNzU3OSwgNzU4NiwgNzU5MywgNzYwMCwgNzYwNywgNzYxNCwgNzYyMSwgNzYyOCwgNzYzNSwgNzY0MiwgNzY0OSwgCisgICAgNzY1NiwgNzY2MywgNzY3MCwgNzY3NSwgNzY4MCwgNzY4NSwgNzY5MCwgNzY5NSwgNzcwMCwgNzcwNSwgNzcxMCwgNzcxNSwgCisgICAgNzcyMCwgNzcyNiwgNzczMiwgNzc0MSwgNzc1MCwgNzc1OSwgNzc2OCwgNzc3NiwgNzc4NCwgNzc5MiwgNzgwMCwgNzgwOCwgCisgICAgNzgxNiwgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0NCwgMCwgNzg1MiwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgCisgICAgNzg3NywgNzg4MiwgNzg4NywgNzg5MiwgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgCisgICAgNzkzNiwgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgCisgICAgNzk5NiwgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgMCwgMCwgODA0MSwgODA0OCwgCisgICAgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2NiwgMCwgODA3MCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgCisgICAgODEwMCwgODEwNSwgODExMCwgODExNCwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgCisgICAgODE1OSwgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgCisgICAgODIxOSwgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgMCwgODI2NiwgODI3MSwgMCwgCisgICAgMCwgODI3NCwgODI4MCwgODI4NiwgMCwgODI5MCwgODI5NSwgODMwMCwgODMwNSwgODMxMiwgODMxOSwgODMyNCwgODMyOSwgCisgICAgODMzNCwgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM2MSwgODM2NiwgODM3MywgODM4MCwgODM4NSwgODM5MiwgODM5NywgCisgICAgODQwMiwgODQwNywgODQxNCwgODQxOSwgODQyNCwgODQzMSwgODQ0MCwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NiwgCisgICAgODQ3MSwgODQ3OCwgODQ4NSwgODQ5MiwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUzMiwgODUzNywgCisgICAgODU0NiwgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MywgODU4MCwgODU4NywgODU5MywgODU5OSwgODYwNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxMywgODYxNywgODYyMSwgODYyNSwgODYyOSwgODYzMywgODYzNywgODY0MSwgODY0NSwgCisgICAgODY0OSwgODY1MywgODY1OCwgODY2MiwgODY2NiwgODY3MSwgODY3NSwgODY4MCwgODY4NCwgODY4OCwgODY5MiwgODY5NywgCisgICAgODcwMSwgODcwNiwgODcxMCwgODcxNCwgODcxOCwgODcyMiwgMCwgMCwgMCwgMCwgMCwgODcyNiwgODczMywgODc0MSwgCisgICAgODc0OCwgODc1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc1OCwgODc2MSwgODc2NSwgODc3MCwgCisgICAgODc3NCwgODc3OCwgODc4MiwgODc4OCwgODc5NCwgODc5NywgODgwNCwgODgxMywgODgxNiwgODgxOSwgODgyNCwgODgzMCwgCisgICAgODgzNCwgODg0MiwgODg0OCwgODg1NCwgODg2MiwgODg2NiwgODg3MSwgODg4MiwgODg4NywgODg5MSwgODg5NSwgODg5OSwgCisgICAgODkwMiwgMCwgODkwNSwgODkxMiwgODkxNiwgODkyMiwgODkyNiwgODkzMywgODk0MCwgODk0OCwgODk1NSwgODk2MiwgCisgICAgODk2NiwgODk3MCwgODk3NiwgODk4MCwgODk4NCwgODk4OCwgODk5MiwgODk5NiwgOTAwMCwgOTAwNCwgOTAwOCwgOTAxMiwgCisgICAgOTAxNiwgOTAyMCwgOTAyNCwgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NCwgOTA1MiwgOTA2MCwgOTA3MCwgOTA3OSwgCisgICAgOTA4OCwgOTA5MSwgOTA5NSwgOTA5OSwgOTEwMywgOTEwNywgOTExMSwgOTExNSwgOTExOSwgOTEyMywgOTEyOCwgOTEzMiwgCisgICAgOTEzNSwgOTEzOCwgOTE0MSwgOTE0NCwgOTE0NywgOTE1MCwgOTE1MywgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MywgCisgICAgOTE3OCwgOTE4NCwgOTE4NywgOTE5NCwgOTIwMywgOTIwOCwgOTIxMywgOTIyMCwgOTIyNiwgOTIzMSwgOTIzNSwgOTIzOSwgCisgICAgOTI0MywgOTI0NywgOTI1MSwgOTI1NSwgOTI1OSwgOTI2MywgOTI2NywgOTI3MSwgOTI3NiwgOTI4MSwgOTI4OCwgOTI5NCwgCisgICAgOTMwMCwgOTMwNiwgOTMxMSwgOTMyMCwgOTMyOSwgOTMzNCwgOTM0MSwgOTM0OCwgOTM1NSwgOTM2MiwgOTM2NiwgOTM3MCwgCisgICAgOTM3NCwgOTM4MSwgOTM5MSwgOTM5NSwgOTM5OSwgOTQwMywgOTQxMCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMywgOTQzNywgCisgICAgOTQ0MSwgOTQ0NSwgOTQ1MiwgOTQ1OSwgOTQ3MSwgOTQ3NSwgOTQ3OSwgOTQ4MywgOTQ5MywgOTUwMiwgOTUwNiwgOTUxNCwgCisgICAgOTUyMSwgOTUyOCwgOTUzNywgOTU0OCwgOTU1NiwgOTU2MCwgOTU2OSwgOTU4MCwgOTU4OCwgOTYwMSwgOTYwOSwgOTYxNywgCisgICAgOTYyNSwgOTYzMywgOTYzOSwgOTY0OCwgOTY1NSwgOTY1OSwgOTY2NywgOTY3MSwgOTY3OCwgOTY4NiwgOTY5MCwgOTY5NiwgCisgICAgOTcwMywgOTcxMCwgOTcxNCwgOTcyMiwgOTcyNiwgOTczMywgOTczNywgOTc0NSwgOTc0OSwgOTc1NywgOTc2NSwgOTc3MiwgCisgICAgOTc4MCwgOTc4OCwgOTc5NSwgOTgwMSwgOTgwNSwgOTgxMiwgOTgyMCwgOTgyNiwgOTgzMywgOTg0MCwgOTg0NiwgOTg1NiwgCisgICAgOTg2NCwgOTg3MSwgOTg3NywgOTg4MSwgOTg4NCwgOTg4OCwgOTg5NCwgOTkwMiwgOTkwNiwgOTkxMiwgOTkxOCwgOTkyNSwgCisgICAgOTkzMiwgOTkzNSwgOTk0MiwgOTk0NywgOTk1NiwgOTk2MSwgOTk2NSwgOTk3OCwgOTk5MSwgOTk5NywgMTAwMDQsIDEwMDA5LCAKKyAgICAxMDAxNSwgMTAwMjAsIDEwMDI2LCAxMDAzNiwgMTAwNDMsIDEwMDUyLCAxMDA2MiwgMTAwNjgsIDEwMDczLCAxMDA3OCwgCisgICAgMTAwODIsIDEwMDg2LCAxMDA5MSwgMTAwOTYsIDEwMTAyLCAxMDExMCwgMTAxMTgsIDEwMTI5LCAxMDEzNCwgMTAxNDMsIAorICAgIDEwMTUyLCAxMDE1OSwgMTAxNjUsIDEwMTcxLCAxMDE3NywgMTAxODMsIDEwMTg5LCAxMDE5NSwgMTAyMDEsIDEwMjA3LCAKKyAgICAxMDIxMywgMTAyMjAsIDEwMjI3LCAxMDIzNCwgMTAyNDAsIDEwMjQ4LCAxMDI1NywgMTAyNjQsIDEwMjcyLCAxMDI4MCwgCisgICAgMTAyODYsIDEwMjkyLCAxMDI5NywgMTAzMDUsIDEwMzEzLCAxMDMyMywgMTAzMzMsIDEwMzM3LCAxMDM0MywgMTAzNDksIDAsIAorICAgIDEwMzU1LCAxMDM2MCwgMTAzNjUsIDEwMzcyLCAxMDM3NywgMTAzODIsIDEwMzg5LCAxMDM5NCwgMTA0MDMsIDEwNDA4LCAKKyAgICAxMDQxMywgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzUsIDEwNDQwLCAxMDQ0NywgMTA0NTIsIDEwNDU3LCAxMDQ2MiwgCisgICAgMTA0NjcsIDEwNDcyLCAxMDQ3OCwgMTA0ODIsIDEwNDg3LCAxMDQ5NCwgMTA0OTksIDEwNTA0LCAxMDUwOSwgMTA1MTQsIAorICAgIDEwNTE5LCAxMDUyNiwgMTA1MzMsIDEwNTQwLCAxMDU0NSwgMTA1NTAsIDEwNTU2LCAxMDU2MSwgMTA1NjYsIDEwNTcyLCAKKyAgICAxMDU3NywgMTA1ODIsIDEwNTkwLCAxMDU5OCwgMTA2MDMsIDEwNjA4LCAxMDYxNCwgMTA2MTksIDEwNjI0LCAxMDYyOCwgCisgICAgMTA2MzQsIDEwNjM4LCAxMDY0MiwgMTA2NDgsIDEwNjU0LCAxMDY1OSwgMTA2NjQsIDEwNjcxLCAxMDY3OCwgMTA2ODIsIDAsIAorICAgIDAsIDEwNjg2LCAxMDY5MywgMTA3MDAsIDEwNzA3LCAxMDcxNywgMTA3MjksIDEwNzQwLCAxMDc1NiwgMTA3NjgsIDEwNzc5LCAKKyAgICAxMDc4NywgMTA3OTQsIDEwODA0LCAxMDgxOSwgMTA4MzAsIDEwODM2LCAxMDg0NSwgMTA4NTMsIDEwODY0LCAxMDg3NCwgCisgICAgMTA4ODIsIDEwODkzLCAxMDkwMCwgMTA5MDgsIDEwOTE5LCAxMDkyNSwgMTA5MzEsIDEwOTM5LCAxMDk0NywgMTA5NTUsIAorICAgIDEwOTYxLCAxMDk3MSwgMTA5NzksIDEwOTg5LCAxMDk5OSwgMTEwMTIsIDExMDI2LCAxMTA0MCwgMTEwNTAsIDExMDYxLCAKKyAgICAxMTA3MiwgMTEwODUsIDExMDk4LCAxMTExMiwgMTExMjQsIDExMTM2LCAxMTE0OSwgMTExNjIsIDExMTc0LCAxMTE4NywgCisgICAgMTExOTYsIDExMjA0LCAxMTIwOSwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIAorICAgIDExMjQ5LCAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAKKyAgICAxMTI5OSwgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgCisgICAgMTEzNDksIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY4LCAxMTM3MywgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIAorICAgIDExMzk3LCAxMTQwMSwgMTE0MDUsIDExNDA5LCAxMTQxMywgMTE0MTcsIDExNDIxLCAxMTQyNSwgMTE0MjksIDExNDMzLCAKKyAgICAxMTQzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NDIsIDExNDQ3LCAxMTQ1MSwgCisgICAgMTE0NTUsIDExNDU5LCAxMTQ2MywgMTE0NjcsIDExNDcxLCAxMTQ3NSwgMTE0NzksIDExNDgzLCAxMTQ4NywgMTE0OTIsIAorICAgIDExNDk2LCAxMTUwMCwgMTE1MDQsIDExNTA5LCAxMTUxMywgMTE1MTgsIDExNTIzLCAxMTUyOCwgMTE1MzIsIDExNTM3LCAKKyAgICAxMTU0MiwgMTE1NDcsIDExNTUyLCAxMTU1NywgMTE1NjIsIDExNTY3LCAxMTU3MiwgMTE1NzcsIDExNTgxLCAxMTU4NiwgCisgICAgMTE1OTMsIDExNTk3LCAxMTYwMiwgMTE2MDYsIDExNjEwLCAxMTYxNSwgMTE2MTksIDExNjI2LCAxMTYzMywgMTE2NDAsIAorICAgIDExNjQ3LCAxMTY1NSwgMTE2NjMsIDExNjcyLCAxMTY4MCwgMTE2ODcsIDExNjk0LCAxMTcwMiwgMTE3MDgsIDExNzE0LCAKKyAgICAxMTcyMCwgMTE3MjYsIDExNzMzLCAxMTczOCwgMTE3NDIsIDExNzQ3LCAwLCAwLCAwLCAwLCAwLCAxMTc1MSwgMTE3NTYsIAorICAgIDExNzYxLCAxMTc2NiwgMTE3NzEsIDExNzc2LCAxMTc4MSwgMTE3ODYsIDExNzkxLCAxMTc5NiwgMTE4MDEsIDExODA2LCAKKyAgICAxMTgxMSwgMTE4MTYsIDExODIxLCAxMTgyNiwgMTE4MzEsIDExODM2LCAxMTg0MSwgMTE4NDYsIDExODUxLCAxMTg1NiwgCisgICAgMTE4NjEsIDExODY2LCAxMTg3MSwgMTE4NzYsIDExODgxLCAxMTg4OSwgMTE4OTYsIDExOTAyLCAxMTkwNywgMTE5MTUsIAorICAgIDExOTIyLCAxMTkyOCwgMTE5MzUsIDExOTQxLCAxMTk0NiwgMTE5NTMsIDExOTYwLCAxMTk2NiwgMTE5NzEsIDExOTc2LCAKKyAgICAxMTk4MiwgMTE5ODcsIDExOTkyLCAxMTk5OCwgMCwgMCwgMTIwMDMsIDEyMDA5LCAxMjAxNSwgMTIwMjEsIDEyMDI3LCAKKyAgICAxMjAzMywgMTIwMzksIDEyMDQ0LCAxMjA1MiwgMTIwNTgsIDEyMDY0LCAxMjA3MCwgMTIwNzYsIDEyMDgyLCAxMjA5MCwgMCwgCisgICAgMTIwOTYsIDEyMTAxLCAxMjEwNiwgMTIxMTEsIDEyMTE2LCAxMjEyMSwgMTIxMjYsIDEyMTMxLCAxMjEzNiwgMTIxNDEsIAorICAgIDEyMTQ2LCAxMjE1MSwgMTIxNTYsIDEyMTYxLCAxMjE2NiwgMTIxNzEsIDEyMTc2LCAxMjE4MSwgMTIxODYsIDEyMTkxLCAKKyAgICAxMjE5NiwgMTIyMDEsIDEyMjA2LCAxMjIxMSwgMTIyMTYsIDEyMjIxLCAxMjIyNiwgMTIyMzEsIDAsIDAsIDEyMjM2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0MCwgMTIyNDksIDEyMjU3LCAKKyAgICAxMjI2NCwgMTIyNzIsIDEyMjg0LCAxMjI5MSwgMTIyOTgsIDEyMzA1LCAxMjMxNywgMTIzMjgsIDEyMzM1LCAxMjM0MywgCisgICAgMTIzNDksIDEyMzU0LCAxMjM2MiwgMTIzNzAsIDEyMzc4LCAxMjM4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzOTQsIDEyMzk5LCAxMjQwNCwgMTI0MDksIAorICAgIDEyNDE0LCAxMjQxOSwgMTI0MjQsIDEyNDI5LCAxMjQzNCwgMTI0MzksIDEyNDQ0LCAxMjQ0OSwgMTI0NTQsIDEyNDU5LCAKKyAgICAxMjQ2NCwgMTI0NjksIDEyNDc0LCAxMjQ4MCwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDIsIDEyNTA3LCAxMjUxMiwgCisgICAgMTI1MTgsIDEyNTI3LCAxMjUzNSwgMTI1NDEsIDEyNTQ5LCAxMjU1NSwgMTI1NTksIDEyNTYzLCAxMjU2NywgMTI1NzIsIAorICAgIDEyNTc1LCAxMjU3OSwgMTI1ODIsIDEyNTg2LCAxMjU4OSwgMTI1OTMsIDEyNTk3LCAxMjYwMSwgMTI2MDYsIDEyNjExLCAKKyAgICAxMjYxNCwgMTI2MTgsIDEyNjIzLCAxMjYyOCwgMTI2MzEsIDEyNjM1LCAxMjYzOCwgMTI2NDIsIDEyNjQ2LCAxMjY1MCwgCisgICAgMTI2NTQsIDEyNjU4LCAxMjY2MiwgMTI2NjYsIDEyNjcwLCAxMjY3NCwgMTI2NzgsIDEyNjgyLCAxMjY4NiwgMTI2OTAsIAorICAgIDEyNjk0LCAxMjY5OCwgMTI3MDIsIDEyNzA2LCAxMjcxMCwgMTI3MTMsIDEyNzE3LCAxMjcyMCwgMTI3MjQsIDEyNzI4LCAKKyAgICAxMjczMiwgMTI3MzUsIDEyNzM4LCAxMjc0MiwgMTI3NDYsIDEyNzUwLCAxMjc1NCwgMTI3NTgsIDEyNzYyLCAxMjc2NiwgCisgICAgMTI3NzAsIDEyNzc0LCAxMjc3NywgMTI3ODIsIDEyNzg3LCAxMjc5MSwgMTI3OTUsIDEyODAwLCAxMjgwNCwgMTI4MDksIAorICAgIDEyODEzLCAxMjgxOCwgMTI4MjMsIDEyODI5LCAxMjgzNSwgMTI4NDEsIDEyODQ1LCAxMjg1MCwgMTI4NTYsIDEyODYyLCAKKyAgICAxMjg2NiwgMTI4NzEsIDEyODc1LCAxMjg4MSwgMTI4ODYsIDEyODg5LCAxMjg5NSwgMTI5MDEsIDEyOTA2LCAxMjkxMSwgCisgICAgMTI5MTgsIDEyOTIzLCAxMjkyOCwgMTI5MzIsIDEyOTM2LCAxMjk0MCwgMTI5NDQsIDEyOTQ4LCAxMjk1MiwgMTI5NTYsIAorICAgIDEyOTYwLCAxMjk2NSwgMTI5NzAsIDEyOTc1LCAxMjk4MSwgMTI5ODQsIDEyOTg4LCAxMjk5MiwgMTI5OTUsIDEyOTk4LCAKKyAgICAxMzAwMSwgMTMwMDQsIDEzMDA3LCAxMzAxMCwgMTMwMTMsIDEzMDE2LCAxMzAxOSwgMTMwMjMsIDEzMDMwLCAxMzAzNSwgCisgICAgMTMwMzksIDEzMDQzLCAxMzA0NywgMTMwNTEsIDEzMDU1LCAxMzA2MSwgMTMwNjUsIDEzMDY5LCAxMzA3MywgMTMwNzcsIAorICAgIDEzMDgzLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAxMzA5OCwgMTMxMDIsIDAsIDEzMTA2LCAxMzEwOSwgMTMxMTMsIDEzMTE2LCAKKyAgICAxMzEyMCwgMTMxMjMsIDEzMTI3LCAxMzEzMSwgMCwgMCwgMTMxMzUsIDEzMTM4LCAwLCAwLCAxMzE0MiwgMTMxNDUsIAorICAgIDEzMTQ5LCAxMzE1MiwgMTMxNTYsIDEzMTYwLCAxMzE2NCwgMTMxNjgsIDEzMTcyLCAxMzE3NiwgMTMxODAsIDEzMTg0LCAKKyAgICAxMzE4OCwgMTMxOTIsIDEzMTk2LCAxMzIwMCwgMTMyMDQsIDEzMjA4LCAxMzIxMiwgMTMyMTYsIDEzMjIwLCAxMzIyNCwgMCwgCisgICAgMTMyMjcsIDEzMjMwLCAxMzIzNCwgMTMyMzgsIDEzMjQyLCAxMzI0NSwgMTMyNDgsIDAsIDEzMjUyLCAwLCAwLCAwLCAKKyAgICAxMzI1NiwgMTMyNjAsIDEzMjY0LCAxMzI2OCwgMCwgMCwgMTMyNzEsIDEzMjc1LCAxMzI3OSwgMTMyODQsIDEzMjg4LCAKKyAgICAxMzI5MywgMTMyOTcsIDEzMzAyLCAxMzMwNywgMCwgMCwgMTMzMTMsIDEzMzE3LCAwLCAwLCAxMzMyMiwgMTMzMjYsIAorICAgIDEzMzMxLCAxMzMzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNDEsIDAsIDAsIDAsIDAsIDEzMzQ3LCAxMzM1MSwgMCwgCisgICAgMTMzNTUsIDEzMzU5LCAxMzM2NCwgMTMzNjksIDEzMzc0LCAwLCAwLCAxMzM4MCwgMTMzODQsIDEzMzg3LCAxMzM5MCwgCisgICAgMTMzOTMsIDEzMzk2LCAxMzM5OSwgMTM0MDIsIDEzNDA1LCAxMzQwOCwgMTM0MTEsIDEzNDIwLCAxMzQyOSwgMTM0MzMsIAorICAgIDEzNDM3LCAxMzQ0MywgMTM0NDksIDEzNDU1LCAxMzQ2MSwgMTM0NzUsIDEzNDgyLCAxMzQ4NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM0ODksIDEzNDk2LCAxMzUwMSwgMCwgMTM1MDYsIDEzNTEwLCAxMzUxNSwgMTM1MTksIDEzNTI0LCAxMzUyOCwgMCwgMCwgCisgICAgMCwgMCwgMTM1MzMsIDEzNTM4LCAwLCAwLCAxMzU0MywgMTM1NDgsIDEzNTUzLCAxMzU1NywgMTM1NjIsIDEzNTY3LCAKKyAgICAxMzU3MiwgMTM1NzcsIDEzNTgyLCAxMzU4NywgMTM1OTIsIDEzNTk3LCAxMzYwMiwgMTM2MDcsIDEzNjEyLCAxMzYxNywgCisgICAgMTM2MjIsIDEzNjI3LCAxMzYzMiwgMTM2MzcsIDEzNjQyLCAxMzY0NywgMCwgMTM2NTEsIDEzNjU1LCAxMzY2MCwgMTM2NjUsIAorICAgIDEzNjcwLCAxMzY3NCwgMTM2NzgsIDAsIDEzNjgzLCAxMzY4OCwgMCwgMTM2OTMsIDEzNjk4LCAwLCAxMzcwMywgMTM3MDgsIAorICAgIDAsIDAsIDEzNzEyLCAwLCAxMzcxNywgMTM3MjMsIDEzNzI4LCAxMzczNCwgMTM3MzksIDAsIDAsIDAsIDAsIDEzNzQ1LCAKKyAgICAxMzc1MSwgMCwgMCwgMTM3NTcsIDEzNzYzLCAxMzc2OSwgMCwgMCwgMCwgMTM3NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNzc5LCAxMzc4NCwgMTM3ODksIDEzNzk0LCAwLCAxMzc5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MDQsIDEzODA5LCAKKyAgICAxMzgxMywgMTM4MTcsIDEzODIxLCAxMzgyNSwgMTM4MjksIDEzODMzLCAxMzgzNywgMTM4NDEsIDEzODQ1LCAxMzg0OSwgCisgICAgMTM4NTMsIDEzODU3LCAxMzg2MSwgMTM4NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODcyLCAKKyAgICAxMzg3NiwgMTM4ODAsIDAsIDEzODg0LCAxMzg4NywgMTM4OTEsIDEzODk0LCAxMzg5OCwgMTM5MDEsIDEzOTA1LCAxMzkwOSwgCisgICAgMTM5MTMsIDAsIDEzOTE4LCAxMzkyMSwgMTM5MjUsIDAsIDEzOTMwLCAxMzkzMywgMTM5MzcsIDEzOTQwLCAxMzk0NCwgCisgICAgMTM5NDgsIDEzOTUyLCAxMzk1NiwgMTM5NjAsIDEzOTY0LCAxMzk2OCwgMTM5NzIsIDEzOTc2LCAxMzk4MCwgMTM5ODQsIAorICAgIDEzOTg4LCAxMzk5MiwgMTM5OTYsIDE0MDAwLCAxNDAwNCwgMTQwMDgsIDE0MDEyLCAwLCAxNDAxNSwgMTQwMTgsIDE0MDIyLCAKKyAgICAxNDAyNiwgMTQwMzAsIDE0MDMzLCAxNDAzNiwgMCwgMTQwNDAsIDE0MDQ0LCAwLCAxNDA0OCwgMTQwNTIsIDE0MDU2LCAKKyAgICAxNDA2MCwgMTQwNjQsIDAsIDAsIDE0MDY3LCAxNDA3MSwgMTQwNzUsIDE0MDgwLCAxNDA4NCwgMTQwODksIDE0MDkzLCAKKyAgICAxNDA5OCwgMTQxMDMsIDE0MTA5LCAwLCAxNDExNSwgMTQxMTksIDE0MTI0LCAwLCAxNDEzMCwgMTQxMzQsIDE0MTM5LCAwLCAKKyAgICAwLCAxNDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxNDYsIDE0MTUxLCAKKyAgICAxNDE1NiwgMTQxNjEsIDAsIDAsIDE0MTY3LCAxNDE3MSwgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAKKyAgICAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgMTQyMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0MjA2LCAxNDIxMCwgMTQyMTQsIDAsIDE0MjE4LCAxNDIyMSwgMTQyMjUsIDE0MjI4LCAxNDIzMiwgMTQyMzUsIAorICAgIDE0MjM5LCAxNDI0MywgMCwgMCwgMTQyNDcsIDE0MjUwLCAwLCAwLCAxNDI1NCwgMTQyNTcsIDE0MjYxLCAxNDI2NCwgCisgICAgMTQyNjgsIDE0MjcyLCAxNDI3NiwgMTQyODAsIDE0Mjg0LCAxNDI4OCwgMTQyOTIsIDE0Mjk2LCAxNDMwMCwgMTQzMDQsIAorICAgIDE0MzA4LCAxNDMxMiwgMTQzMTYsIDE0MzIwLCAxNDMyNCwgMTQzMjgsIDE0MzMyLCAxNDMzNiwgMCwgMTQzMzksIDE0MzQyLCAKKyAgICAxNDM0NiwgMTQzNTAsIDE0MzU0LCAxNDM1NywgMTQzNjAsIDAsIDE0MzY0LCAxNDM2OCwgMCwgMTQzNzIsIDE0Mzc2LCAKKyAgICAxNDM4MCwgMTQzODQsIDE0Mzg4LCAwLCAwLCAxNDM5MSwgMTQzOTUsIDE0Mzk5LCAxNDQwNCwgMTQ0MDgsIDE0NDEzLCAKKyAgICAxNDQxNywgMTQ0MjIsIDE0NDI3LCAwLCAwLCAxNDQzMywgMTQ0MzcsIDAsIDAsIDE0NDQyLCAxNDQ0NiwgMTQ0NTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDU1LCAxNDQ2MSwgMCwgMCwgMCwgMCwgMTQ0NjcsIDE0NDcxLCAwLCAxNDQ3NSwgCisgICAgMTQ0NzksIDE0NDg0LCAxNDQ4OSwgMTQ0OTQsIDAsIDAsIDE0NTAwLCAxNDUwNCwgMTQ1MDcsIDE0NTEwLCAxNDUxMywgCisgICAgMTQ1MTYsIDE0NTE5LCAxNDUyMiwgMTQ1MjUsIDE0NTI4LCAxNDUzMSwgMTQ1MzQsIDE0NTM4LCAxNDU0NCwgMTQ1NTAsIAorICAgIDE0NTU2LCAxNDU2MiwgMTQ1NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTc0LCAxNDU3OCwgMCwgCisgICAgMTQ1ODIsIDE0NTg1LCAxNDU4OSwgMTQ1OTIsIDE0NTk2LCAxNDU5OSwgMCwgMCwgMCwgMTQ2MDMsIDE0NjA2LCAxNDYxMCwgCisgICAgMCwgMTQ2MTQsIDE0NjE3LCAxNDYyMSwgMTQ2MjUsIDAsIDAsIDAsIDE0NjI4LCAxNDYzMiwgMCwgMTQ2MzYsIDAsIDE0NjQwLCAKKyAgICAxNDY0NCwgMCwgMCwgMCwgMTQ2NDgsIDE0NjUyLCAwLCAwLCAwLCAxNDY1NiwgMTQ2NTksIDE0NjYzLCAwLCAwLCAwLCAKKyAgICAxNDY2NiwgMTQ2NjksIDE0NjcyLCAxNDY3NiwgMTQ2ODAsIDE0Njg0LCAxNDY4OCwgMTQ2OTIsIDE0Njk2LCAxNDcwMCwgCisgICAgMTQ3MDQsIDE0NzA4LCAwLCAwLCAwLCAwLCAxNDcxMSwgMTQ3MTYsIDE0NzIwLCAxNDcyNSwgMTQ3MjksIDAsIDAsIDAsIAorICAgIDE0NzM0LCAxNDczOCwgMTQ3NDMsIDAsIDE0NzQ4LCAxNDc1MiwgMTQ3NTcsIDE0NzYyLCAwLCAwLCAxNDc2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQ3NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzc1LCAxNDc3OSwgCisgICAgMTQ3ODIsIDE0Nzg1LCAxNDc4OCwgMTQ3OTEsIDE0Nzk0LCAxNDc5NywgMTQ4MDAsIDE0ODAzLCAxNDgwNiwgMTQ4MTAsIAorICAgIDE0ODE1LCAxNDgyMCwgMTQ4MjQsIDE0ODI4LCAxNDgzMiwgMTQ4MzYsIDE0ODQwLCAxNDg0NSwgMTQ4NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0ODUyLCAxNDg1OCwgMTQ4NjIsIDE0ODY2LCAwLCAxNDg3MCwgMTQ4NzMsIDE0ODc3LCAxNDg4MCwgMTQ4ODQsIAorICAgIDE0ODg3LCAxNDg5MSwgMTQ4OTUsIDAsIDE0ODk5LCAxNDkwMiwgMTQ5MDYsIDAsIDE0OTEwLCAxNDkxMywgMTQ5MTcsIAorICAgIDE0OTIxLCAxNDkyNCwgMTQ5MjgsIDE0OTMyLCAxNDkzNiwgMTQ5NDAsIDE0OTQ0LCAxNDk0OCwgMTQ5NTIsIDE0OTU2LCAKKyAgICAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzYsIDE0OTgwLCAxNDk4NCwgMTQ5ODgsIDE0OTkyLCAxNDk5NiwgMCwgCisgICAgMTQ5OTksIDE1MDAyLCAxNTAwNiwgMTUwMTAsIDE1MDE0LCAxNTAxNywgMTUwMjAsIDE1MDI0LCAxNTAyOCwgMTUwMzIsIAorICAgIDE1MDM2LCAxNTA0MCwgMTUwNDQsIDE1MDQ4LCAxNTA1MiwgMTUwNTYsIDAsIDAsIDAsIDE1MDU5LCAxNTA2MywgMTUwNjgsIAorICAgIDE1MDcyLCAxNTA3NywgMTUwODEsIDE1MDg2LCAxNTA5MSwgMCwgMTUwOTcsIDE1MTAxLCAxNTEwNiwgMCwgMTUxMTEsIAorICAgIDE1MTE1LCAxNTEyMCwgMTUxMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MTI5LCAxNTEzMywgMCwgMTUxMzksIDE1MTQzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTE0NywgMTUxNTIsIDE1MTU3LCAxNTE2MiwgMCwgMCwgMTUxNjgsIDE1MTcyLCAxNTE3NSwgCisgICAgMTUxNzgsIDE1MTgxLCAxNTE4NCwgMTUxODcsIDE1MTkwLCAxNTE5MywgMTUxOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MTk5LCAxNTIxMiwgMTUyMjQsIDE1MjM2LCAxNTI0OCwgMTUyNjAsIDE1MjcyLCAxNTI4NCwgMCwgMTUyODgsIDE1MjkyLCAKKyAgICAxNTI5NiwgMCwgMTUzMDAsIDE1MzAzLCAxNTMwNywgMTUzMTAsIDE1MzE0LCAxNTMxNywgMTUzMjEsIDE1MzI1LCAwLCAKKyAgICAxNTMyOSwgMTUzMzIsIDE1MzM2LCAwLCAxNTM0MCwgMTUzNDMsIDE1MzQ3LCAxNTM1MSwgMTUzNTQsIDE1MzU4LCAxNTM2MiwgCisgICAgMTUzNjYsIDE1MzcwLCAxNTM3NCwgMTUzNzgsIDE1MzgyLCAxNTM4NiwgMTUzOTAsIDE1Mzk0LCAxNTM5OCwgMTU0MDIsIAorICAgIDE1NDA2LCAxNTQxMCwgMTU0MTQsIDE1NDE4LCAxNTQyMiwgMTU0MjYsIDAsIDE1NDI5LCAxNTQzMiwgMTU0MzYsIDE1NDQwLCAKKyAgICAxNTQ0NCwgMTU0NDcsIDE1NDUwLCAxNTQ1NCwgMTU0NTgsIDE1NDYyLCAwLCAxNTQ2NiwgMTU0NzAsIDE1NDc0LCAxNTQ3OCwgCisgICAgMTU0ODIsIDAsIDAsIDE1NDg1LCAxNTQ4OSwgMTU0OTMsIDE1NDk4LCAxNTUwMiwgMTU1MDcsIDE1NTExLCAxNTUxNiwgCisgICAgMTU1MjEsIDAsIDE1NTI3LCAxNTUzMSwgMTU1MzYsIDAsIDE1NTQxLCAxNTU0NSwgMTU1NTAsIDE1NTU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNTU1OSwgMTU1NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTY5LCAwLCAxNTU3MywgMTU1NzgsIAorICAgIDE1NTgzLCAxNTU4OCwgMCwgMCwgMTU1OTQsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgMTU2MTMsIAorICAgIDE1NjE2LCAxNTYxOSwgMTU2MjIsIDAsIDE1NjI1LCAxNTYyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTU2MzMsIDE1NjM3LCAxNTY0MSwgMCwgMTU2NDUsIDE1NjQ4LCAxNTY1MiwgMTU2NTUsIDE1NjU5LCAxNTY2MiwgCisgICAgMTU2NjYsIDE1NjcwLCAwLCAxNTY3NCwgMTU2NzcsIDE1NjgxLCAwLCAxNTY4NSwgMTU2ODgsIDE1NjkyLCAxNTY5NiwgCisgICAgMTU2OTksIDE1NzAzLCAxNTcwNywgMTU3MTEsIDE1NzE1LCAxNTcxOSwgMTU3MjMsIDE1NzI3LCAxNTczMSwgMTU3MzUsIAorICAgIDE1NzM5LCAxNTc0MywgMTU3NDcsIDE1NzUxLCAxNTc1NSwgMTU3NTksIDE1NzYzLCAxNTc2NywgMTU3NzEsIDE1Nzc0LCAKKyAgICAxNTc3OCwgMTU3ODEsIDE1Nzg1LCAxNTc4OSwgMTU3OTMsIDE1Nzk2LCAxNTc5OSwgMTU4MDMsIDE1ODA3LCAxNTgxMSwgCisgICAgMTU4MTUsIDE1ODE5LCAxNTgyMywgMTU4MjcsIDE1ODMxLCAxNTgzNSwgMTU4MzgsIDAsIDAsIDE1ODQyLCAxNTg0NiwgCisgICAgMTU4NTEsIDE1ODU1LCAxNTg2MCwgMTU4NjQsIDE1ODY5LCAxNTg3NCwgMCwgMTU4ODAsIDE1ODg0LCAxNTg4OSwgMCwgCisgICAgMTU4OTQsIDE1ODk4LCAxNTkwMywgMTU5MDgsIDE1OTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTkxNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU5MjMsIDE1OTI4LCAxNTkzMywgMTU5MzgsIDAsIDAsIDE1OTQ0LCAxNTk0OCwgMTU5NTEsIAorICAgIDE1OTU0LCAxNTk1NywgMTU5NjAsIDE1OTYzLCAxNTk2NiwgMTU5NjksIDE1OTcyLCAxNTk3NSwgMTU5NzksIDE1OTg0LCAKKyAgICAxNTk4OSwgMTU5OTUsIDE2MDAxLCAwLCAwLCAwLCAxNjAwNywgMTYwMTEsIDE2MDE3LCAxNjAyMywgMTYwMjksIDE2MDM0LCAKKyAgICAxNjA0MCwgMCwgMCwgMTYwNDYsIDE2MDUwLCAwLCAxNjA1NCwgMTYwNTgsIDE2MDYyLCAxNjA2NiwgMTYwNzAsIDE2MDc0LCAKKyAgICAxNjA3OCwgMTYwODIsIDE2MDg2LCAxNjA5MCwgMTYwOTQsIDE2MDk4LCAxNjEwMiwgMTYxMDYsIDE2MTEwLCAxNjExNCwgCisgICAgMTYxMTgsIDE2MTIyLCAwLCAwLCAwLCAxNjEyNiwgMTYxMzIsIDE2MTM4LCAxNjE0NCwgMTYxNTAsIDE2MTU2LCAxNjE2MiwgCisgICAgMTYxNjgsIDE2MTc0LCAxNjE4MCwgMTYxODYsIDE2MTkyLCAxNjIwMCwgMTYyMDYsIDE2MjEyLCAxNjIxOCwgMTYyMjQsIAorICAgIDE2MjMwLCAxNjIzNiwgMTYyNDIsIDE2MjQ4LCAxNjI1NCwgMTYyNjAsIDE2MjY2LCAwLCAxNjI3MiwgMTYyNzgsIDE2Mjg0LCAKKyAgICAxNjI5MCwgMTYyOTYsIDE2MzAyLCAxNjMwNiwgMTYzMTIsIDE2MzE2LCAwLCAxNjMyMCwgMCwgMCwgMTYzMjYsIDE2MzMwLCAKKyAgICAxNjMzNiwgMTYzNDIsIDE2MzQ4LCAxNjM1MiwgMTYzNTgsIDAsIDAsIDAsIDE2MzYyLCAwLCAwLCAwLCAwLCAxNjM2NiwgCisgICAgMTYzNzEsIDE2Mzc4LCAxNjM4NSwgMTYzOTIsIDE2Mzk5LCAwLCAxNjQwNiwgMCwgMTY0MTMsIDE2NDE4LCAxNjQyMywgCisgICAgMTY0MzAsIDE2NDM3LCAxNjQ0NiwgMTY0NTcsIDE2NDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQ3MSwgMTY0NzcsIDE2NDgyLCAKKyAgICAxNjQ4NywgMTY0OTIsIDE2NDk3LCAxNjUwMiwgMTY1MDcsIDE2NTEyLCAxNjUxNywgMCwgMCwgMTY1MjIsIDE2NTI5LCAKKyAgICAxNjUzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1NDEsIDE2NTQ3LCAxNjU1MywgMTY1NTksIAorICAgIDE2NTY1LCAxNjU3MSwgMTY1NzcsIDE2NTgzLCAxNjU4OSwgMTY1OTUsIDE2NjAxLCAxNjYwNywgMTY2MTMsIDE2NjE5LCAKKyAgICAxNjYyNSwgMTY2MzEsIDE2NjM3LCAxNjY0MywgMTY2NDksIDE2NjU1LCAxNjY2MSwgMTY2NjcsIDE2NjczLCAxNjY3OSwgCisgICAgMTY2ODUsIDE2NjkxLCAxNjY5NywgMTY3MDMsIDE2NzA5LCAxNjcxNSwgMTY3MjEsIDE2NzI3LCAxNjczMywgMTY3MzgsIAorICAgIDE2NzQ0LCAxNjc1MCwgMTY3NTQsIDE2NzYwLCAxNjc2NCwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODgsIDE2Nzk0LCAKKyAgICAxNjgwMCwgMTY4MDUsIDE2ODExLCAxNjgxNSwgMTY4MjAsIDE2ODI2LCAxNjgzMiwgMTY4MzgsIDE2ODQzLCAxNjg0OSwgCisgICAgMTY4NTUsIDE2ODYxLCAxNjg2NiwgMTY4NzIsIDAsIDAsIDAsIDAsIDE2ODc2LCAxNjg4MiwgMTY4ODcsIDE2ODkzLCAKKyAgICAxNjg5OCwgMTY5MDYsIDE2OTE0LCAxNjkxOCwgMTY5MjIsIDE2OTI2LCAxNjkzMiwgMTY5MzgsIDE2OTQ0LCAxNjk1MCwgCisgICAgMTY5NTQsIDE2OTU4LCAxNjk2MiwgMTY5NjYsIDE2OTcwLCAxNjk3MywgMTY5NzYsIDE2OTc5LCAxNjk4MiwgMTY5ODUsIAorICAgIDE2OTg4LCAxNjk5MSwgMTY5OTQsIDE2OTk3LCAxNzAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcwMDUsIDE3MDEwLCAwLCAxNzAxNywgMCwgMCwgMTcwMjQsIDE3MDI5LCAwLCAxNzAzNCwgMCwgMCwgMTcwNDEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE3MDQ2LCAxNzA1MSwgMTcwNTUsIDE3MDYyLCAwLCAxNzA2OSwgMTcwNzQsIDE3MDc5LCAxNzA4NCwgCisgICAgMTcwOTEsIDE3MDk4LCAxNzEwNSwgMCwgMTcxMTIsIDE3MTE3LCAxNzEyMiwgMCwgMTcxMjksIDAsIDE3MTM2LCAwLCAwLCAKKyAgICAxNzE0MSwgMTcxNDgsIDAsIDE3MTU1LCAxNzE1OSwgMTcxNjYsIDE3MTcwLCAxNzE3NSwgMTcxODMsIDE3MTg5LCAxNzE5NSwgCisgICAgMTcyMDAsIDE3MjA2LCAxNzIxMiwgMTcyMTgsIDE3MjIzLCAwLCAxNzIyOSwgMTcyMzcsIDE3MjQ0LCAwLCAwLCAxNzI1MSwgCisgICAgMTcyNTYsIDE3MjYyLCAxNzI2NywgMTcyNzMsIDAsIDE3Mjc5LCAwLCAxNzI4NSwgMTcyOTIsIDE3Mjk5LCAxNzMwNiwgCisgICAgMTczMTMsIDE3MzE4LCAwLCAwLCAxNzMyMiwgMTczMjcsIDE3MzMxLCAxNzMzNSwgMTczMzksIDE3MzQzLCAxNzM0NywgCisgICAgMTczNTEsIDE3MzU1LCAxNzM1OSwgMCwgMCwgMTczNjMsIDE3MzY5LCAxNzM3NSwgMTczODIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE3Mzg5LCAxNzM5MywgMTc0MDQsIDE3NDE5LCAxNzQzNCwgMTc0NDQsIDE3NDU1LCAxNzQ2OCwgMTc0NzksIAorICAgIDE3NDg1LCAxNzQ5MywgMTc1MDMsIDE3NTA5LCAxNzUxNywgMTc1MjEsIDE3NTI3LCAxNzUzMywgMTc1NDEsIDE3NTUxLCAKKyAgICAxNzU1OSwgMTc1NzIsIDE3NTc4LCAxNzU4NiwgMTc1OTQsIDE3NjA2LCAxNzYxMywgMTc2MjEsIDE3NjI5LCAxNzYzNywgCisgICAgMTc2NDUsIDE3NjUzLCAxNzY2MSwgMTc2NzEsIDE3Njc1LCAxNzY3OCwgMTc2ODEsIDE3Njg0LCAxNzY4NywgMTc2OTAsIAorICAgIDE3NjkzLCAxNzY5NiwgMTc2OTksIDE3NzAyLCAxNzcwNiwgMTc3MTAsIDE3NzE0LCAxNzcxOCwgMTc3MjIsIDE3NzI2LCAKKyAgICAxNzczMCwgMTc3MzQsIDE3NzM4LCAxNzc0MywgMTc3NDksIDE3NzU5LCAxNzc3MywgMTc3ODMsIDE3Nzg5LCAxNzc5NSwgCisgICAgMTc4MDMsIDE3ODExLCAxNzgxOSwgMTc4MjcsIDE3ODMzLCAxNzgzOSwgMTc4NDIsIDE3ODQ2LCAxNzg1MCwgMTc4NTQsIAorICAgIDE3ODU4LCAxNzg2MiwgMTc4NjYsIDAsIDE3ODcwLCAxNzg3NCwgMTc4NzgsIDE3ODgyLCAxNzg4NiwgMTc4OTAsIDE3ODk0LCAKKyAgICAxNzg5OCwgMTc5MDIsIDE3OTA2LCAxNzkxMCwgMTc5MTMsIDE3OTE2LCAxNzkyMCwgMTc5MjQsIDE3OTI4LCAxNzkzMSwgCisgICAgMTc5MzUsIDE3OTM5LCAxNzk0MywgMTc5NDcsIDE3OTUxLCAxNzk1NSwgMTc5NTksIDE3OTYzLCAxNzk2NiwgMTc5NzAsIAorICAgIDE3OTc0LCAxNzk3OCwgMTc5ODIsIDE3OTg2LCAxNzk4OSwgMTc5OTIsIDE3OTk2LCAxODAwMiwgMTgwMDYsIDAsIDAsIDAsIAorICAgIDAsIDE4MDEwLCAxODAxNSwgMTgwMTksIDE4MDI0LCAxODAyOCwgMTgwMzMsIDE4MDM4LCAxODA0NCwgMTgwNDksIDE4MDU1LCAKKyAgICAxODA1OSwgMTgwNjQsIDE4MDY4LCAxODA3MywgMTgwODMsIDE4MDg5LCAxODA5NSwgMTgxMDIsIDE4MTEyLCAxODExOCwgCisgICAgMTgxMjIsIDE4MTI2LCAxODEzMiwgMTgxMzgsIDE4MTQ2LCAxODE1MiwgMTgxNjAsIDE4MTY4LCAxODE3NiwgMTgxODYsIAorICAgIDE4MTk0LCAxODIwNCwgMTgyMDksIDE4MjE1LCAxODIyMSwgMTgyMjcsIDE4MjMzLCAxODIzOSwgMTgyNDUsIDAsIDE4MjUxLCAKKyAgICAxODI1NywgMTgyNjMsIDE4MjY5LCAxODI3NSwgMTgyODEsIDE4Mjg3LCAxODI5MywgMTgyOTksIDE4MzA1LCAxODMxMSwgCisgICAgMTgzMTYsIDE4MzIxLCAxODMyNywgMTgzMzMsIDE4MzM5LCAxODM0NCwgMTgzNTAsIDE4MzU2LCAxODM2MiwgMTgzNjgsIAorICAgIDE4Mzc0LCAxODM4MCwgMTgzODYsIDE4MzkyLCAxODM5NywgMTg0MDMsIDE4NDA5LCAxODQxNSwgMTg0MjEsIDE4NDI3LCAKKyAgICAxODQzMiwgMTg0MzcsIDE4NDQzLCAxODQ1MSwgMTg0NTgsIDAsIDE4NDY2LCAxODQ3MywgMTg0ODYsIDE4NDkzLCAxODUwMCwgCisgICAgMTg1MDgsIDE4NTE2LCAxODUyMiwgMTg1MjgsIDE4NTM0LCAxODU0NCwgMTg1NDksIDE4NTU1LCAxODU2NSwgMTg1NzUsIDAsIAorICAgIDE4NTg1LCAxODU5NSwgMTg2MDMsIDE4NjE1LCAxODYyNywgMTg2MzMsIDE4NjQ3LCAxODY2MiwgMTg2NjcsIDE4NjcyLCAKKyAgICAxODY4MCwgMTg2ODgsIDE4Njk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcwNCwgMTg3MDcsIAorICAgIDE4NzExLCAxODcxNSwgMTg3MTksIDE4NzIzLCAxODcyNywgMTg3MzEsIDE4NzM1LCAxODczOSwgMTg3NDMsIDE4NzQ3LCAKKyAgICAxODc1MSwgMTg3NTUsIDE4NzU5LCAxODc2MywgMTg3NjcsIDE4NzcxLCAxODc3NSwgMTg3NzksIDE4NzgzLCAxODc4NiwgCisgICAgMTg3ODksIDE4NzkzLCAxODc5NywgMTg4MDEsIDE4ODA0LCAxODgwNywgMTg4MTEsIDE4ODE1LCAxODgxOSwgMTg4MjMsIAorICAgIDE4ODI2LCAxODgzMCwgMTg4MzMsIDE4ODM4LCAxODg0MSwgMTg4NDUsIDE4ODQ4LCAxODg1MiwgMTg4NTUsIDE4ODYwLCAKKyAgICAxODg2MywgMTg4NjcsIDE4ODc0LCAxODg3OSwgMTg4ODMsIDE4ODg4LCAxODg5MiwgMTg4OTcsIDE4OTAxLCAxODkwNiwgCisgICAgMTg5MTMsIDE4OTE5LCAxODkyNCwgMTg5MjgsIDE4OTMyLCAxODkzNiwgMTg5NDAsIDE4OTQ0LCAxODk0OSwgMTg5NTUsIAorICAgIDE4OTYxLCAxODk2NiwgMTg5NzIsIDE4OTc2LCAxODk3OSwgMTg5ODIsIDE4OTg1LCAxODk4OCwgMTg5OTEsIDE4OTk0LCAKKyAgICAxODk5NywgMTkwMDAsIDE5MDAzLCAxOTAwOSwgMTkwMTMsIDE5MDE3LCAxOTAyMSwgMTkwMjUsIDE5MDI5LCAxOTAzMywgCisgICAgMTkwMzcsIDE5MDQxLCAxOTA0NiwgMTkwNTAsIDE5MDU1LCAxOTA2MCwgMTkwNjYsIDE5MDcxLCAxOTA3NywgMTkwODMsIAorICAgIDE5MDg5LCAxOTA5NSwgMTkxMDEsIDE5MTA4LCAxOTExNSwgMTkxMjMsIDE5MTMxLCAxOTE0MCwgMTkxNDksIDE5MTYwLCAKKyAgICAxOTE3MCwgMTkxODAsIDE5MTkxLCAxOTIwMiwgMTkyMTIsIDE5MjIyLCAxOTIzMiwgMTkyNDIsIDE5MjUyLCAxOTI2MiwgCisgICAgMTkyNzIsIDE5MjgyLCAxOTI5MCwgMTkyOTcsIDE5MzAzLCAxOTMxMCwgMTkzMTUsIDE5MzIxLCAxOTMyNywgMTkzMzMsIAorICAgIDE5MzM5LCAxOTM0NSwgMTkzNTEsIDE5MzU2LCAxOTM2MiwgMTkzNjgsIDE5Mzc0LCAxOTM4MCwgMTkzODUsIDE5MzkzLCAKKyAgICAxOTQwMCwgMTk0MDYsIDE5NDEzLCAxOTQyMSwgMTk0MjcsIDE5NDMzLCAxOTQzOSwgMTk0NDUsIDE5NDUzLCAxOTQ2MSwgCisgICAgMTk0NzEsIDE5NDc5LCAxOTQ4NywgMTk0OTMsIDE5NDk4LCAxOTUwMywgMTk1MDgsIDE5NTEzLCAxOTUxOCwgMTk1MjMsIAorICAgIDE5NTI4LCAxOTUzMywgMTk1MzgsIDE5NTQ0LCAxOTU1MCwgMTk1NTYsIDE5NTYzLCAxOTU2OCwgMTk1NzQsIDE5NTc5LCAKKyAgICAxOTU4NCwgMTk1ODksIDE5NTk0LCAxOTU5OSwgMTk2MDQsIDE5NjA5LCAxOTYxNCwgMTk2MTksIDE5NjI0LCAxOTYyOSwgCisgICAgMTk2MzQsIDE5NjM5LCAxOTY0NCwgMTk2NDksIDE5NjU0LCAxOTY1OSwgMTk2NjQsIDE5NjY5LCAxOTY3NCwgMTk2NzksIAorICAgIDE5Njg0LCAxOTY4OSwgMTk2OTQsIDE5Njk5LCAxOTcwNCwgMTk3MDksIDE5NzE0LCAxOTcxOSwgMTk3MjQsIDE5NzI5LCAKKyAgICAxOTczNCwgMTk3MzksIDE5NzQ0LCAxOTc0OSwgMTk3NTQsIDE5NzU5LCAwLCAxOTc2NCwgMCwgMCwgMCwgMCwgMCwgMTk3NjksIAorICAgIDAsIDAsIDE5Nzc0LCAxOTc3OCwgMTk3ODIsIDE5Nzg2LCAxOTc5MCwgMTk3OTQsIDE5Nzk4LCAxOTgwMiwgMTk4MDYsIAorICAgIDE5ODEwLCAxOTgxNCwgMTk4MTgsIDE5ODIyLCAxOTgyNiwgMTk4MzAsIDE5ODM0LCAxOTgzOCwgMTk4NDIsIDE5ODQ2LCAKKyAgICAxOTg1MCwgMTk4NTQsIDE5ODU4LCAxOTg2MiwgMTk4NjYsIDE5ODcwLCAxOTg3NCwgMTk4NzgsIDE5ODgyLCAxOTg4NiwgCisgICAgMTk4OTAsIDE5ODk0LCAxOTg5OCwgMTk5MDIsIDE5OTA2LCAxOTkxMCwgMTk5MTQsIDE5OTE4LCAxOTkyMiwgMTk5MjYsIAorICAgIDE5OTMwLCAxOTkzNCwgMTk5MzgsIDE5OTQzLCAxOTk0NywgMTk5NTIsIDE5OTU3LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKKyAgICAxOTk3NSwgMTk5NzksIDE5OTgzLCAxOTk4NywgMTk5OTEsIDE5OTk1LCAxOTk5OSwgMjAwMDMsIDIwMDA3LCAyMDAxMSwgCisgICAgMjAwMTUsIDIwMDE5LCAyMDAyMywgMjAwMjcsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAorICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKKyAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCisgICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAorICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMTk5LCAyMDIwMywgMjAyMDcsIDIwMjExLCAKKyAgICAyMDIxNSwgMjAyMTksIDIwMjIzLCAyMDIyNywgMjAyMzEsIDIwMjM1LCAyMDIzOSwgMjAyNDMsIDIwMjQ3LCAyMDI1MSwgCisgICAgMjAyNTUsIDIwMjU5LCAyMDI2MywgMjAyNjcsIDIwMjcxLCAyMDI3NSwgMjAyNzksIDIwMjgzLCAyMDI4NywgMjAyOTEsIAorICAgIDIwMjk1LCAyMDI5OSwgMjAzMDMsIDIwMzA3LCAyMDMxMSwgMjAzMTUsIDIwMzE5LCAyMDMyMywgMjAzMjcsIDIwMzMxLCAKKyAgICAyMDMzNSwgMjAzMzksIDIwMzQzLCAyMDM0NywgMjAzNTEsIDIwMzU1LCAyMDM1OSwgMjAzNjIsIDIwMzY2LCAyMDM2OSwgCisgICAgMjAzNzMsIDIwMzc3LCAyMDM4MCwgMjAzODQsIDIwMzg4LCAyMDM5MSwgMjAzOTUsIDIwMzk5LCAyMDQwMywgMjA0MDcsIAorICAgIDIwNDEwLCAyMDQxNCwgMjA0MTgsIDIwNDIyLCAyMDQyNiwgMjA0MzAsIDIwNDM0LCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAKKyAgICAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgCisgICAgMjA0ODksIDIwNDkzLCAyMDQ5NywgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIAorICAgIDIwNTI5LCAyMDUzMywgMjA1MzcsIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAKKyAgICAyMDU2OSwgMjA1NzMsIDIwNTc3LCAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgCisgICAgMjA2MDksIDIwNjEzLCAyMDYxNywgMjA2MjEsIDIwNjI1LCAyMDYyOSwgMjA2MzMsIDIwNjM3LCAyMDY0MSwgMjA2NDUsIAorICAgIDIwNjQ5LCAyMDY1MywgMjA2NTcsIDIwNjYxLCAyMDY2NSwgMjA2NjksIDIwNjczLCAyMDY3NywgMjA2ODEsIDIwNjg1LCAKKyAgICAyMDY4OSwgMjA2OTMsIDIwNjk3LCAyMDcwMSwgMjA3MDUsIDIwNzA5LCAyMDcxMywgMjA3MTcsIDIwNzIxLCAyMDcyNSwgCisgICAgMjA3MjksIDIwNzMzLCAyMDczNywgMjA3NDEsIDIwNzQ1LCAyMDc0OSwgMjA3NTMsIDIwNzU3LCAyMDc2MSwgMjA3NjUsIAorICAgIDIwNzY5LCAyMDc3MywgMjA3NzcsIDIwNzgxLCAyMDc4NSwgMjA3ODksIDIwNzkzLCAyMDc5NywgMjA4MDEsIDIwODA1LCAKKyAgICAyMDgwOSwgMjA4MTMsIDIwODE3LCAyMDgyMSwgMjA4MjUsIDIwODI5LCAyMDgzMywgMjA4MzcsIDIwODQxLCAyMDg0NSwgCisgICAgMjA4NDksIDIwODUzLCAyMDg1NywgMjA4NjEsIDIwODY1LCAyMDg2OSwgMjA4NzMsIDIwODc3LCAyMDg4MSwgMjA4ODUsIAorICAgIDIwODg5LCAyMDg5MywgMjA4OTcsIDIwOTAxLCAyMDkwNSwgMjA5MDksIDIwOTEzLCAyMDkxNywgMjA5MjEsIDIwOTI1LCAKKyAgICAyMDkyOSwgMjA5MzMsIDIwOTM3LCAyMDk0MSwgMjA5NDUsIDIwOTQ5LCAyMDk1MywgMjA5NTcsIDIwOTYxLCAyMDk2NSwgCisgICAgMjA5NjksIDIwOTczLCAyMDk3NywgMjA5ODEsIDIwOTg1LCAyMDk4OSwgMjA5OTIsIDIwOTk2LCAyMTAwMCwgMjEwMDQsIAorICAgIDIxMDA4LCAyMTAxMiwgMjEwMTYsIDIxMDIwLCAyMTAyNCwgMjEwMjgsIDIxMDMyLCAyMTAzNiwgMjEwNDAsIDIxMDQ0LCAKKyAgICAyMTA0OCwgMjEwNTIsIDIxMDU2LCAyMTA2MCwgMjEwNjQsIDIxMDY4LCAyMTA3MiwgMjEwNzYsIDIxMDgwLCAyMTA4NCwgCisgICAgMjEwODcsIDIxMDkxLCAyMTA5NSwgMjEwOTksIDIxMTAzLCAyMTEwNywgMjExMTEsIDIxMTE1LCAyMTExOSwgMjExMjMsIAorICAgIDIxMTI3LCAyMTEzMSwgMjExMzUsIDIxMTM5LCAyMTE0MywgMjExNDcsIDIxMTUxLCAyMTE1NSwgMjExNTksIDIxMTYzLCAKKyAgICAyMTE2NywgMjExNzEsIDIxMTc1LCAyMTE3OSwgMjExODMsIDIxMTg3LCAyMTE5MSwgMjExOTUsIDIxMTk5LCAyMTIwMywgCisgICAgMjEyMDcsIDIxMjExLCAyMTIxNSwgMjEyMTksIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCAyMTIzOSwgMjEyNDMsIAorICAgIDIxMjQ3LCAyMTI1MSwgMjEyNTUsIDIxMjU5LCAyMTI2MywgMjEyNjcsIDIxMjcxLCAyMTI3NSwgMCwgMjEyNzksIDIxMjgzLCAKKyAgICAyMTI4NywgMjEyOTEsIDAsIDAsIDIxMjk1LCAyMTI5OSwgMjEzMDMsIDIxMzA3LCAyMTMxMSwgMjEzMTUsIDIxMzE5LCAwLCAKKyAgICAyMTMyMywgMCwgMjEzMjcsIDIxMzMxLCAyMTMzNSwgMjEzMzksIDAsIDAsIDIxMzQzLCAyMTM0NywgMjEzNTEsIDIxMzU1LCAKKyAgICAyMTM1OSwgMjEzNjMsIDIxMzY3LCAyMTM3MSwgMjEzNzUsIDIxMzc5LCAyMTM4MywgMjEzODcsIDIxMzkxLCAyMTM5NSwgCisgICAgMjEzOTksIDIxNDAzLCAyMTQwNywgMjE0MTEsIDIxNDE1LCAyMTQxOSwgMjE0MjMsIDIxNDI3LCAyMTQzMSwgMjE0MzQsIAorICAgIDIxNDM4LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIDIxNDYyLCAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAKKyAgICAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAyMTUwMiwgMCwgMjE1MDYsIDIxNTEwLCAyMTUxNCwgCisgICAgMjE1MTgsIDAsIDAsIDIxNTIyLCAyMTUyNSwgMjE1MjksIDIxNTMzLCAyMTUzNywgMjE1NDEsIDIxNTQ1LCAyMTU0OSwgCisgICAgMjE1NTMsIDIxNTU3LCAyMTU2MSwgMjE1NjUsIDIxNTY5LCAyMTU3MywgMjE1NzcsIDIxNTgxLCAyMTU4NSwgMjE1OTAsIAorICAgIDIxNTk1LCAyMTYwMCwgMjE2MDYsIDIxNjEyLCAyMTYxNywgMjE2MjIsIDIxNjI4LCAyMTYzMSwgMjE2MzUsIDIxNjM5LCAKKyAgICAyMTY0MywgMjE2NDcsIDIxNjUxLCAyMTY1NSwgMjE2NTksIDAsIDIxNjYzLCAyMTY2NywgMjE2NzEsIDIxNjc1LCAwLCAwLCAKKyAgICAyMTY3OSwgMjE2ODMsIDIxNjg3LCAyMTY5MSwgMjE2OTUsIDIxNjk5LCAyMTcwMywgMCwgMjE3MDcsIDAsIDIxNzExLCAKKyAgICAyMTcxNSwgMjE3MTksIDIxNzIzLCAwLCAwLCAyMTcyNywgMjE3MzEsIDIxNzM1LCAyMTczOSwgMjE3NDMsIDIxNzQ3LCAKKyAgICAyMTc1MSwgMjE3NTUsIDIxNzU5LCAyMTc2NCwgMjE3NjksIDIxNzc0LCAyMTc4MCwgMjE3ODYsIDIxNzkxLCAwLCAyMTc5NiwgCisgICAgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgMjE4MzYsIAorICAgIDIxODQwLCAyMTg0NCwgMjE4NDgsIDIxODUyLCAyMTg1NiwgMjE4NjAsIDIxODYzLCAyMTg2NywgMjE4NzEsIDIxODc1LCAKKyAgICAyMTg3OSwgMjE4ODMsIDIxODg3LCAyMTg5MSwgMjE4OTUsIDIxODk5LCAyMTkwMywgMjE5MDcsIDIxOTExLCAyMTkxNSwgCisgICAgMjE5MTksIDIxOTIzLCAyMTkyNywgMjE5MzEsIDIxOTM1LCAyMTkzOSwgMjE5NDMsIDIxOTQ3LCAyMTk1MSwgMjE5NTUsIAorICAgIDIxOTU5LCAyMTk2MywgMjE5NjcsIDIxOTcxLCAyMTk3NSwgMjE5NzksIDIxOTgzLCAyMTk4NywgMjE5OTEsIDIxOTk1LCAKKyAgICAyMTk5OSwgMjIwMDMsIDIyMDA3LCAyMjAxMSwgMjIwMTUsIDIyMDE5LCAwLCAyMjAyMywgMjIwMjcsIDIyMDMxLCAyMjAzNSwgCisgICAgMCwgMCwgMjIwMzksIDIyMDQzLCAyMjA0NywgMjIwNTEsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgCisgICAgMjIwNzUsIDIyMDc5LCAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIAorICAgIDIyMTE1LCAyMjExOSwgMjIxMjMsIDIyMTI3LCAyMjEzMSwgMjIxMzUsIDIyMTM5LCAyMjE0MywgMjIxNDcsIDIyMTUxLCAKKyAgICAyMjE1NSwgMjIxNTksIDIyMTYzLCAyMjE2NywgMjIxNzEsIDIyMTc1LCAyMjE3OSwgMjIxODMsIDIyMTg3LCAyMjE5MSwgCisgICAgMjIxOTUsIDIyMTk5LCAyMjIwMywgMjIyMDcsIDIyMjExLCAyMjIxNSwgMjIyMTksIDIyMjIzLCAyMjIyNywgMjIyMzEsIAorICAgIDIyMjM1LCAyMjIzOSwgMjIyNDMsIDIyMjQ3LCAyMjI1MSwgMjIyNTUsIDIyMjU5LCAyMjI2MywgMjIyNjYsIDIyMjcwLCAKKyAgICAyMjI3NCwgMjIyNzgsIDIyMjgyLCAyMjI4NiwgMjIyOTAsIDIyMjk0LCAyMjI5OCwgMjIzMDIsIDAsIDAsIDIyMzA2LCAKKyAgICAyMjMxNSwgMjIzMjEsIDIyMzI2LCAyMjMzMCwgMjIzMzMsIDIyMzM4LCAyMjM0MSwgMjIzNDQsIDIyMzQ3LCAyMjM1MiwgCisgICAgMjIzNTYsIDIyMzYxLCAyMjM2NCwgMjIzNjcsIDIyMzcwLCAyMjM3MywgMjIzNzYsIDIyMzc5LCAyMjM4MiwgMjIzODUsIAorICAgIDIyMzg4LCAyMjM5MiwgMjIzOTYsIDIyNDAwLCAyMjQwNCwgMjI0MDgsIDIyNDEyLCAyMjQxNiwgMjI0MjAsIDIyNDI0LCAKKyAgICAyMjQyOCwgMCwgMCwgMCwgMjI0MzQsIDIyNDQwLCAyMjQ0NCwgMjI0NDgsIDIyNDUyLCAyMjQ1OCwgMjI0NjIsIDIyNDY2LCAKKyAgICAyMjQ3MCwgMjI0NzYsIDIyNDgwLCAyMjQ4NCwgMjI0ODgsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMiwgCisgICAgMjI1MTgsIDIyNTI0LCAyMjUzMiwgMjI1MzgsIDIyNTQ0LCAyMjU1MCwgMjI1NTYsIDIyNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyMjU2OCwgMjI1NzEsIDIyNTc0LCAyMjU3NywgMjI1ODAsIDIyNTgzLCAyMjU4NywgMjI1OTEsIDIyNTk0LCAyMjU5OCwgCisgICAgMjI2MDIsIDIyNjA2LCAyMjYxMCwgMjI2MTQsIDIyNjE3LCAyMjYyMSwgMjI2MjUsIDIyNjI5LCAyMjYzMywgMjI2MzcsIAorICAgIDIyNjQxLCAyMjY0NSwgMjI2NDksIDIyNjUzLCAyMjY1NywgMjI2NjEsIDIyNjY0LCAyMjY2OCwgMjI2NzIsIDIyNjc2LCAKKyAgICAyMjY4MCwgMjI2ODMsIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgCisgICAgMjI3MTksIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM1LCAyMjczOSwgMjI3NDIsIDIyNzQ2LCAyMjc1MCwgMjI3NTQsIAorICAgIDIyNzU4LCAyMjc2MiwgMjI3NjYsIDIyNzcwLCAyMjc3NCwgMjI3NzgsIDIyNzgyLCAyMjc4NiwgMjI3OTAsIDIyNzk0LCAKKyAgICAyMjc5OCwgMjI4MDIsIDIyODA2LCAyMjgxMCwgMjI4MTQsIDIyODE4LCAyMjgyMiwgMjI4MjYsIDIyODMwLCAyMjgzNCwgCisgICAgMjI4MzgsIDIyODQyLCAyMjg0NiwgMjI4NTAsIDIyODU0LCAyMjg1OCwgMjI4NjIsIDIyODY2LCAyMjg3MCwgMjI4NzQsIAorICAgIDIyODc3LCAyMjg4MSwgMjI4ODUsIDIyODg5LCAyMjg5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjI4OTcsIDIyOTAxLCAyMjkwNCwgMjI5MDgsIDIyOTExLCAyMjkxNSwgMjI5MTgsIDIyOTIyLCAyMjkyOCwgMjI5MzMsIAorICAgIDIyOTM3LCAyMjk0MCwgMjI5NDQsIDIyOTQ4LCAyMjk1MywgMjI5NTcsIDIyOTYyLCAyMjk2NiwgMjI5NzEsIDIyOTc1LCAKKyAgICAyMjk4MCwgMjI5ODQsIDIyOTg5LCAyMjk5NSwgMjI5OTksIDIzMDA0LCAyMzAwOCwgMjMwMTMsIDIzMDE5LCAyMzAyMywgCisgICAgMjMwMjksIDIzMDM1LCAyMzAzOSwgMjMwNDQsIDIzMDUyLCAyMzA2MCwgMjMwNjcsIDIzMDcyLCAyMzA3NywgMjMwODYsIAorICAgIDIzMDkzLCAyMzEwMCwgMjMxMDUsIDIzMTExLCAyMzExNSwgMjMxMTksIDIzMTIzLCAyMzEyNywgMjMxMzEsIDIzMTM1LCAKKyAgICAyMzEzOSwgMjMxNDMsIDIzMTQ3LCAyMzE1MSwgMjMxNTcsIDIzMTYyLCAyMzE2NywgMjMxNzAsIDIzMTc0LCAyMzE3OCwgCisgICAgMjMxODMsIDIzMTg3LCAyMzE5MiwgMjMxOTYsIDIzMjAxLCAyMzIwNSwgMjMyMTAsIDIzMjE0LCAyMzIxOSwgMjMyMjMsIAorICAgIDIzMjI4LCAyMzIzMiwgMjMyMzcsIDIzMjQzLCAyMzI0NywgMjMyNTIsIDIzMjU3LCAyMzI2MSwgMjMyNjUsIDIzMjY5LCAKKyAgICAyMzI3MywgMjMyNzYsIDIzMjgwLCAyMzI4NiwgMjMyOTEsIDIzMjk2LCAyMzMwMCwgMjMzMDQsIDIzMzA4LCAyMzMxMywgCisgICAgMjMzMTcsIDIzMzIyLCAyMzMyNiwgMjMzMzEsIDIzMzM0LCAyMzMzOCwgMjMzNDIsIDIzMzQ3LCAyMzM1MSwgMjMzNTYsIAorICAgIDIzMzYwLCAyMzM2NSwgMjMzNzEsIDIzMzc1LCAyMzM3OSwgMjMzODMsIDIzMzg3LCAyMzM5MSwgMjMzOTUsIDIzMzk5LCAKKyAgICAyMzQwMywgMjM0MDcsIDIzNDExLCAyMzQxNSwgMjM0MjEsIDIzNDI0LCAyMzQyOCwgMjM0MzIsIDIzNDM3LCAyMzQ0MSwgCisgICAgMjM0NDYsIDIzNDUwLCAyMzQ1NSwgMjM0NTksIDIzNDY0LCAyMzQ2OCwgMjM0NzMsIDIzNDc3LCAyMzQ4MiwgMjM0ODYsIAorICAgIDIzNDkxLCAyMzQ5NywgMjM1MDEsIDIzNTA1LCAyMzUxMSwgMjM1MTcsIDIzNTIzLCAyMzUyOSwgMjM1MzMsIDIzNTM3LCAKKyAgICAyMzU0MSwgMjM1NDUsIDIzNTQ5LCAyMzU1MywgMjM1NTksIDIzNTYzLCAyMzU2NywgMjM1NzEsIDIzNTc2LCAyMzU4MCwgCisgICAgMjM1ODUsIDIzNTg5LCAyMzU5NCwgMjM1OTgsIDIzNjAzLCAyMzYwNywgMjM2MTIsIDIzNjE2LCAyMzYyMSwgMjM2MjUsIAorICAgIDIzNjMwLCAyMzYzNiwgMjM2NDAsIDIzNjQ2LCAyMzY1MCwgMjM2NTQsIDIzNjU4LCAyMzY2MiwgMjM2NjYsIDIzNjcwLCAKKyAgICAyMzY3NiwgMjM2NzksIDIzNjgzLCAyMzY4NywgMjM2OTIsIDIzNjk2LCAyMzcwMSwgMjM3MDUsIDIzNzEwLCAyMzcxNCwgCisgICAgMjM3MTksIDIzNzIzLCAyMzcyOCwgMjM3MzIsIDIzNzM3LCAyMzc0MSwgMjM3NDYsIDIzNzUyLCAyMzc1NiwgMjM3NjEsIAorICAgIDIzNzY1LCAyMzc3MSwgMjM3NzcsIDIzNzgxLCAyMzc4NSwgMjM3ODksIDIzNzkzLCAyMzc5NywgMjM4MDEsIDIzODA3LCAKKyAgICAyMzgxMCwgMjM4MTQsIDIzODE4LCAyMzgyMywgMjM4MjcsIDIzODMyLCAyMzgzNiwgMjM4NDEsIDIzODQ3LCAyMzg1MSwgCisgICAgMjM4NTYsIDIzODYwLCAyMzg2NCwgMjM4NjgsIDIzODcyLCAyMzg3NiwgMjM4ODAsIDIzODg0LCAyMzg5MCwgMjM4OTQsIAorICAgIDIzODk4LCAyMzkwMiwgMjM5MDcsIDIzOTExLCAyMzkxNiwgMjM5MjAsIDIzOTI1LCAyMzkyOSwgMjM5MzQsIDIzOTM4LCAKKyAgICAyMzk0MywgMjM5NDcsIDIzOTUyLCAyMzk1NiwgMjM5NjEsIDIzOTY0LCAyMzk2OCwgMjM5NzIsIDIzOTc2LCAyMzk4MCwgCisgICAgMjM5ODQsIDIzOTg4LCAyMzk5MiwgMjM5OTYsIDI0MDAyLCAyNDAwNiwgMjQwMTAsIDI0MDE0LCAyNDAxOSwgMjQwMjMsIAorICAgIDI0MDI4LCAyNDAzMiwgMjQwMzcsIDI0MDQxLCAyNDA0NiwgMjQwNTAsIDI0MDU1LCAyNDA1OSwgMjQwNjQsIDI0MDY4LCAKKyAgICAyNDA3MywgMjQwNzksIDI0MDgyLCAyNDA4NywgMjQwOTEsIDI0MDk2LCAyNDEwMiwgMjQxMDgsIDI0MTE0LCAyNDEyMCwgCisgICAgMjQxMjYsIDI0MTMyLCAyNDEzOCwgMjQxNDIsIDI0MTQ2LCAyNDE1MCwgMjQxNTQsIDI0MTU4LCAyNDE2MiwgMjQxNjYsIAorICAgIDI0MTcwLCAyNDE3NSwgMjQxNzksIDI0MTg0LCAyNDE4OCwgMjQxOTMsIDI0MTk3LCAyNDIwMiwgMjQyMDYsIDI0MjExLCAKKyAgICAyNDIxNSwgMjQyMjAsIDI0MjI0LCAyNDIyOSwgMjQyMzMsIDI0MjM3LCAyNDI0MSwgMjQyNDUsIDI0MjQ5LCAyNDI1MywgCisgICAgMjQyNTcsIDI0MjYzLCAyNDI2NiwgMjQyNzAsIDI0Mjc0LCAyNDI3OSwgMjQyODMsIDI0Mjg4LCAyNDI5MiwgMjQyOTcsIAorICAgIDI0MzAxLCAyNDMwNiwgMjQzMTAsIDI0MzE1LCAyNDMxOSwgMjQzMjQsIDI0MzI4LCAyNDMzMywgMjQzMzksIDI0MzQzLCAKKyAgICAyNDM0OSwgMjQzNTQsIDI0MzYwLCAyNDM2NCwgMjQzNzAsIDI0Mzc1LCAyNDM3OSwgMjQzODMsIDI0Mzg3LCAyNDM5MSwgCisgICAgMjQzOTUsIDI0NDAwLCAyNDQwNCwgMjQ0MDgsIDI0NDEzLCAyNDQxNywgMjQ0MjIsIDI0NDI1LCAyNDQyOSwgMjQ0MzMsIAorICAgIDI0NDM3LCAyNDQ0MSwgMjQ0NDUsIDI0NDQ5LCAyNDQ1MywgMjQ0NTcsIDI0NDYxLCAyNDQ2NSwgMjQ0NjksIDI0NDc0LCAKKyAgICAyNDQ3OCwgMjQ0ODIsIDI0NDg4LCAyNDQ5MiwgMjQ0OTgsIDI0NTAyLCAyNDUwOCwgMjQ1MTIsIDI0NTE2LCAyNDUyMCwgCisgICAgMjQ1MjQsIDI0NTI4LCAyNDUzMywgMjQ1MzcsIDI0NTQxLCAyNDU0NSwgMjQ1NDksIDI0NTUzLCAyNDU1NywgMjQ1NjEsIAorICAgIDI0NTY1LCAyNDU2OSwgMjQ1NzMsIDI0NTc5LCAyNDU4NSwgMjQ1OTEsIDI0NTk3LCAyNDYwMywgMjQ2MDgsIDI0NjE0LCAKKyAgICAyNDYyMCwgMjQ2MjYsIDI0NjMwLCAyNDYzNCwgMjQ2MzgsIDI0NjQyLCAyNDY0NiwgMjQ2NTAsIDI0NjU0LCAyNDY1OCwgCisgICAgMjQ2NjIsIDI0NjY2LCAyNDY3MCwgMjQ2NzQsIDI0Njc4LCAyNDY4MywgMjQ2ODgsIDI0NjkzLCAyNDY5OCwgMjQ3MDIsIAorICAgIDI0NzA2LCAyNDcxMCwgMjQ3MTQsIDI0NzE4LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3NDAsIDI0NzQ2LCAKKyAgICAyNDc1MiwgMjQ3NTgsIDI0NzY0LCAyNDc3MCwgMjQ3NzYsIDI0NzgyLCAyNDc4OCwgMjQ3OTIsIDI0Nzk2LCAyNDgwMCwgCisgICAgMjQ4MDQsIDI0ODA4LCAyNDgxMiwgMjQ4MTYsIDI0ODIyLCAyNDgyOCwgMjQ4MzQsIDI0ODQwLCAyNDg0NiwgMjQ4NTIsIAorICAgIDI0ODU4LCAyNDg2NCwgMjQ4NzAsIDI0ODc1LCAyNDg4MCwgMjQ4ODUsIDI0ODkwLCAyNDg5NiwgMjQ5MDIsIDI0OTA4LCAKKyAgICAyNDkxNCwgMjQ5MjAsIDI0OTI2LCAyNDkzMiwgMjQ5MzcsIDI0OTQzLCAyNDk0OSwgMjQ5NTUsIDI0OTYwLCAyNDk2NiwgCisgICAgMjQ5NzIsIDI0OTc4LCAyNDk4MywgMjQ5ODgsIDI0OTkzLCAyNDk5OCwgMjUwMDMsIDI1MDA4LCAyNTAxMywgMjUwMTgsIAorICAgIDI1MDIzLCAyNTAyOCwgMjUwMzMsIDI1MDM4LCAyNTA0MywgMjUwNDgsIDI1MDUzLCAyNTA1OCwgMjUwNjMsIDI1MDY4LCAKKyAgICAyNTA3MywgMjUwNzgsIDI1MDgzLCAyNTA4OCwgMjUwOTMsIDI1MDk4LCAyNTEwMywgMjUxMDgsIDI1MTEzLCAyNTExOCwgCisgICAgMjUxMjMsIDI1MTI4LCAyNTEzMywgMjUxMzgsIDI1MTQzLCAyNTE0OCwgMjUxNTMsIDI1MTU4LCAyNTE2MywgMjUxNjgsIAorICAgIDI1MTczLCAyNTE3OCwgMjUxODMsIDI1MTg4LCAyNTE5MiwgMjUxOTcsIDI1MjAyLCAyNTIwNywgMjUyMTIsIDI1MjE3LCAKKyAgICAyNTIyMiwgMjUyMjcsIDI1MjMyLCAyNTIzNywgMjUyNDIsIDI1MjQ3LCAyNTI1MiwgMjUyNTcsIDI1MjYyLCAyNTI2NywgCisgICAgMjUyNzIsIDI1Mjc3LCAyNTI4MiwgMjUyODcsIDI1MjkyLCAyNTI5NywgMjUzMDIsIDI1MzA3LCAyNTMxMiwgMjUzMTcsIAorICAgIDI1MzIxLCAyNTMyNiwgMjUzMzEsIDI1MzM2LCAyNTM0MSwgMjUzNDYsIDI1MzUwLCAyNTM1NSwgMjUzNjAsIDI1MzY1LCAKKyAgICAyNTM3MCwgMjUzNzUsIDI1Mzc5LCAyNTM4NCwgMjUzOTAsIDI1Mzk1LCAyNTQwMCwgMjU0MDUsIDI1NDEwLCAyNTQxNiwgCisgICAgMjU0MjEsIDI1NDI2LCAyNTQzMSwgMjU0MzYsIDI1NDQxLCAyNTQ0NiwgMjU0NTEsIDI1NDU2LCAyNTQ2MSwgMjU0NjYsIAorICAgIDI1NDcxLCAyNTQ3NiwgMjU0ODEsIDI1NDg2LCAyNTQ5MSwgMjU0OTYsIDI1NTAxLCAyNTUwNiwgMjU1MTEsIDI1NTE2LCAKKyAgICAyNTUyMSwgMjU1MjYsIDI1NTMxLCAyNTUzNiwgMjU1NDEsIDI1NTQ2LCAyNTU1MSwgMjU1NTYsIDI1NTYxLCAyNTU2NiwgCisgICAgMjU1NzEsIDI1NTc2LCAyNTU4MSwgMjU1ODYsIDI1NTkxLCAyNTU5NiwgMjU2MDEsIDI1NjA2LCAyNTYxMSwgMjU2MTYsIAorICAgIDI1NjIxLCAyNTYyNiwgMjU2MzEsIDI1NjM2LCAyNTY0MiwgMjU2NDcsIDI1NjUyLCAyNTY1NywgMjU2NjIsIDI1NjY3LCAKKyAgICAyNTY3MiwgMjU2NzcsIDI1NjgyLCAyNTY4NywgMjU2OTIsIDI1Njk3LCAyNTcwMiwgMjU3MDcsIDI1NzEyLCAyNTcxNywgCisgICAgMjU3MjIsIDI1NzI3LCAyNTczMiwgMjU3MzcsIDI1NzQyLCAyNTc0NywgMjU3NTIsIDI1NzU3LCAyNTc2MiwgMjU3NjcsIAorICAgIDI1NzcyLCAyNTc3NywgMjU3ODIsIDI1Nzg3LCAyNTc5MiwgMjU3OTcsIDI1ODAyLCAyNTgwNywgMjU4MTIsIDI1ODE3LCAKKyAgICAyNTgyMiwgMjU4MjcsIDI1ODMyLCAyNTgzOCwgMjU4NDIsIDI1ODQ2LCAyNTg1MCwgMjU4NTQsIDI1ODU4LCAyNTg2MiwgCisgICAgMjU4NjYsIDI1ODcwLCAyNTg3NiwgMjU4ODIsIDI1ODg4LCAyNTg5NCwgMjU5MDAsIDI1OTA2LCAyNTkxMiwgMjU5MTksIAorICAgIDI1OTI1LCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyNTk0NSwgMjU5NTAsIDI1OTU1LCAyNTk2MCwgMjU5NjUsIDI1OTcwLCAKKyAgICAyNTk3NSwgMjU5ODAsIDI1OTg1LCAyNTk5MCwgMjU5OTUsIDI2MDAwLCAyNjAwNSwgMjYwMTAsIDI2MDE1LCAyNjAyMCwgCisgICAgMjYwMjUsIDI2MDMwLCAyNjAzNSwgMjYwNDAsIDI2MDQ1LCAyNjA1MCwgMjYwNTUsIDI2MDYwLCAyNjA2NSwgMCwgMCwgMCwgCisgICAgMjYwNzIsIDI2MDgyLCAyNjA4NiwgMjYwOTMsIDI2MDk3LCAyNjEwMSwgMjYxMDUsIDI2MTEzLCAyNjExNywgMjYxMjIsIAorICAgIDI2MTI3LCAyNjEzMiwgMjYxMzYsIDI2MTQxLCAyNjE0NiwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjYsIDI2MTcwLCAKKyAgICAyNjE3NCwgMjYxODAsIDI2MTg0LCAyNjE4OCwgMjYxOTYsIDI2MjAwLCAyNjIwOCwgMjYyMTQsIDI2MjIwLCAyNjIyNiwgCisgICAgMjYyMzIsIDI2MjQyLCAyNjI0OCwgMjYyNTIsIDI2MjYxLCAyNjI2NCwgMjYyNzAsIDI2Mjc0LCAyNjI4MCwgMjYyODUsIAorICAgIDI2MjkxLCAyNjI5OSwgMjYzMDUsIDI2MzEwLCAyNjMxNywgMjYzMjIsIDI2MzI2LCAyNjMzMCwgMjYzNDAsIDI2MzQ2LCAKKyAgICAyNjM1MCwgMjYzNjAsIDI2MzY2LCAyNjM3MCwgMjYzNzQsIDI2MzgxLCAyNjM4OSwgMjYzOTUsIDI2NDAxLCAyNjQxMCwgCisgICAgMjY0MTQsIDI2NDE4LCAyNjQyMiwgMjY0MzAsIDI2NDM3LCAyNjQ0MSwgMjY0NDUsIDI2NDQ5LCAyNjQ1MywgMjY0NTcsIAorICAgIDI2NDYxLCAyNjQ2NSwgMjY0NjksIDI2NDczLCAyNjQ3NywgMjY0ODEsIDI2NDg2LCAyNjQ5MSwgMjY0OTYsIDI2NTAwLCAKKyAgICAyNjUwNCwgMjY1MDgsIDI2NTEyLCAyNjUxNiwgMjY1MjAsIDI2NTI4LCAyNjUzNiwgMjY1NDQsIDI2NTUyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNjU2MCwgMjY1NjQsIDI2NTY4LCAyNjU3MiwgMjY1NzYsIDI2NTgxLCAyNjU4NiwgMjY1OTEsIAorICAgIDI2NTk2LCAyNjYwMCwgMjY2MDQsIDI2NjA5LCAyNjYxMywgMCwgMjY2MTcsIDI2NjIyLCAyNjYyNywgMjY2MzIsIDI2NjM2LCAKKyAgICAyNjY0MSwgMjY2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NjUxLCAyNjY1NSwgMjY2NTksIAorICAgIDI2NjYzLCAyNjY2NywgMjY2NzIsIDI2Njc3LCAyNjY4MiwgMjY2ODcsIDI2NjkxLCAyNjY5NSwgMjY3MDAsIDI2NzA0LCAKKyAgICAyNjcwOCwgMjY3MTMsIDI2NzE4LCAyNjcyMywgMjY3MjgsIDI2NzMyLCAyNjczNywgMjY3NDIsIDI2NzQ3LCAyNjc1MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY3NTgsIDI2NzYyLCAyNjc2NiwgMjY3NzAsIDI2Nzc0LCAyNjc3OSwgMjY3ODQsIAorICAgIDI2Nzg5LCAyNjc5NCwgMjY3OTgsIDI2ODAyLCAyNjgwNywgMjY4MTEsIDI2ODE1LCAyNjgyMCwgMjY4MjUsIDI2ODMwLCAKKyAgICAyNjgzNSwgMjY4MzksIDI2ODQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjg0OSwgMjY4NTMsIAorICAgIDI2ODU3LCAyNjg2MSwgMjY4NjUsIDI2ODcwLCAyNjg3NSwgMjY4ODAsIDI2ODg1LCAyNjg4OSwgMjY4OTMsIDI2ODk4LCAKKyAgICAyNjkwMiwgMCwgMjY5MDYsIDI2OTExLCAyNjkxNiwgMCwgMjY5MjEsIDI2OTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNjkzMSwgMjY5MzQsIDI2OTM4LCAyNjk0MiwgMjY5NDYsIDI2OTUwLCAyNjk1NCwgMjY5NTgsIAorICAgIDI2OTYyLCAyNjk2NiwgMjY5NzAsIDI2OTc0LCAyNjk3OCwgMjY5ODIsIDI2OTg2LCAyNjk5MCwgMjY5OTQsIDI2OTk4LCAKKyAgICAyNzAwMSwgMjcwMDUsIDI3MDA5LCAyNzAxMywgMjcwMTcsIDI3MDIxLCAyNzAyNSwgMjcwMjksIDI3MDMzLCAyNzAzNywgCisgICAgMjcwNDEsIDI3MDQ1LCAyNzA0OSwgMjcwNTMsIDI3MDU3LCAyNzA2MCwgMjcwNjQsIDI3MDY4LCAyNzA3NCwgMjcwODAsIAorICAgIDI3MDg2LCAyNzA5MiwgMjcwOTgsIDI3MTA0LCAyNzExMCwgMjcxMTYsIDI3MTIyLCAyNzEyOCwgMjcxMzQsIDI3MTQwLCAKKyAgICAyNzE0NiwgMjcxNTIsIDI3MTYxLCAyNzE3MCwgMjcxNzYsIDI3MTgyLCAyNzE4OCwgMjcxOTMsIDI3MTk3LCAyNzIwMiwgCisgICAgMjcyMDcsIDI3MjEyLCAyNzIxNiwgMjcyMjEsIDI3MjI2LCAyNzIzMSwgMjcyMzUsIDI3MjQwLCAyNzI0NCwgMjcyNDksIAorICAgIDI3MjU0LCAyNzI1OSwgMjcyNjQsIDI3MjY4LCAyNzI3MiwgMjcyNzYsIDI3MjgwLCAyNzI4NCwgMjcyODgsIDI3MjkyLCAKKyAgICAyNzI5NiwgMjczMDAsIDI3MzA0LCAyNzMxMCwgMjczMTQsIDI3MzE4LCAyNzMyMiwgMjczMjYsIDI3MzMwLCAyNzMzOCwgCisgICAgMjczNDQsIDI3MzQ4LCAyNzM1NCwgMjczNTgsIDI3MzY0LCAyNzM2OCwgMCwgMCwgMjczNzIsIDI3Mzc2LCAyNzM3OSwgCisgICAgMjczODIsIDI3Mzg1LCAyNzM4OCwgMjczOTEsIDI3Mzk0LCAyNzM5NywgMjc0MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NDAzLCAKKyAgICAyNzQxMSwgMjc0MTksIDI3NDI3LCAyNzQzNSwgMjc0NDMsIDI3NDUxLCAyNzQ1OSwgMjc0NjcsIDI3NDc1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNzQ4MywgMjc0ODYsIDI3NDg5LCAyNzQ5MiwgMjc0OTcsIDI3NTAwLCAyNzUwNSwgMjc1MTIsIDI3NTIwLCAKKyAgICAyNzUyNSwgMjc1MzIsIDI3NTM1LCAyNzU0MiwgMjc1NDksIDI3NTU2LCAwLCAyNzU2MCwgMjc1NjQsIDI3NTY3LCAyNzU3MCwgCisgICAgMjc1NzMsIDI3NTc2LCAyNzU3OSwgMjc1ODIsIDI3NTg1LCAyNzU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1OTEsIDI3NTk0LCAKKyAgICAyNzU5NywgMjc2MDAsIDI3NjAzLCAyNzYwNiwgMjc2MTAsIDI3NjE0LCAyNzYxOCwgMjc2MjEsIDI3NjI1LCAyNzYyOSwgCisgICAgMjc2MzIsIDI3NjM2LCAyNzY0MCwgMjc2NDMsIDI3NjQ3LCAyNzY1MSwgMjc2NTUsIDI3NjU5LCAyNzY2MywgMjc2NjcsIAorICAgIDI3NjcxLCAyNzY3NCwgMjc2NzgsIDI3NjgyLCAyNzY4NiwgMjc2ODksIDI3NjkzLCAyNzY5NywgMjc3MDEsIDI3NzA1LCAKKyAgICAyNzcwOSwgMjc3MTMsIDI3NzE3LCAyNzcyMSwgMjc3MjgsIDI3NzMzLCAyNzczOCwgMjc3NDMsIDI3NzQ4LCAyNzc1NCwgCisgICAgMjc3NjAsIDI3NzY2LCAyNzc3MiwgMjc3NzcsIDI3NzgzLCAyNzc4OSwgMjc3OTQsIDI3ODAwLCAyNzgwNiwgMjc4MTIsIAorICAgIDI3ODE4LCAyNzgyNCwgMjc4MjksIDI3ODM1LCAyNzg0MCwgMjc4NDYsIDI3ODUyLCAyNzg1OCwgMjc4NjQsIDI3ODcwLCAKKyAgICAyNzg3NSwgMjc4ODAsIDI3ODg2LCAyNzg5MiwgMjc4OTcsIDI3OTAzLCAyNzkwOCwgMjc5MTQsIDI3OTE5LCAyNzkyNCwgCisgICAgMjc5MzAsIDI3OTM2LCAyNzk0MiwgMjc5NDgsIDI3OTU0LCAyNzk2MCwgMjc5NjYsIDI3OTcyLCAyNzk3OCwgMjc5ODQsIAorICAgIDI3OTkwLCAyNzk5NiwgMjgwMDEsIDI4MDA2LCAyODAxMiwgMjgwMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MDI0LCAKKyAgICAyODAzMywgMjgwNDIsIDI4MDUwLCAyODA1OCwgMjgwNjgsIDI4MDc2LCAyODA4NSwgMjgwOTIsIDI4MDk5LCAyODEwNiwgCisgICAgMjgxMTQsIDI4MTIyLCAyODEzMCwgMjgxMzgsIDI4MTQ2LCAyODE1NCwgMjgxNjIsIDI4MTcwLCAyODE3NywgMjgxODUsIAorICAgIDI4MTkzLCAyODIwMSwgMjgyMDksIDI4MjE3LCAyODIyNywgMjgyMzcsIDI4MjQ3LCAyODI1NywgMjgyNjcsIDI4Mjc3LCAKKyAgICAyODI4NywgMjgyOTcsIDI4MzA3LCAyODMxNywgMjgzMjcsIDI4MzM3LCAyODM0NywgMjgzNTcsIDI4MzY1LCAyODM3MywgCisgICAgMjgzODMsIDI4MzkxLCAwLCAwLCAwLCAwLCAwLCAyODQwMSwgMjg0MDUsIDI4NDA5LCAyODQxMywgMjg0MTcsIDI4NDIxLCAKKyAgICAyODQyNSwgMjg0MjksIDI4NDMzLCAyODQzNywgMjg0NDEsIDI4NDQ1LCAyODQ0OSwgMjg0NTMsIDI4NDU3LCAyODQ2MSwgCisgICAgMjg0NjUsIDI4NDY5LCAyODQ3MywgMjg0NzcsIDI4NDgxLCAyODQ4NSwgMjg0ODksIDI4NDkzLCAyODQ5OSwgMjg1MDMsIAorICAgIDI4NTA5LCAyODUxMywgMjg1MTksIDI4NTIzLCAyODUyOSwgMjg1MzMsIDI4NTM3LCAyODU0MSwgMjg1NDUsIDI4NTQ5LCAKKyAgICAyODU1MywgMjg1NTksIDI4NTY1LCAyODU3MSwgMjg1NzcsIDI4NTgzLCAyODU4OSwgMjg1OTQsIDI4NjAwLCAyODYwNiwgCisgICAgMjg2MTIsIDI4NjE4LCAyODYyNSwgMjg2MzEsIDI4NjM2LCAyODY0MSwgMjg2NDUsIDI4NjQ5LCAyODY1MywgMjg2NTcsIAorICAgIDI4NjYxLCAyODY2NSwgMjg2NjksIDI4Njc1LCAyODY4MSwgMjg2ODcsIDI4NjkyLCAyODY5OSwgMjg3MDQsIDI4NzA5LCAKKyAgICAyODcxNSwgMjg3MjAsIDI4NzI3LCAyODczNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3NDAsIDI4NzQ2LCAKKyAgICAyODc1MCwgMjg3NTUsIDI4NzYwLCAyODc2NSwgMjg3NzAsIDI4Nzc1LCAyODc4MCwgMjg3ODUsIDI4NzkwLCAyODc5NSwgCisgICAgMjg4MDAsIDI4ODA1LCAyODgxMCwgMjg4MTUsIDI4ODE5LCAyODgyMywgMjg4MjgsIDI4ODMzLCAyODgzOCwgMjg4NDIsIAorICAgIDI4ODQ2LCAyODg1MSwgMjg4NTYsIDI4ODYxLCAyODg2NiwgMjg4NzEsIDI4ODc2LCAyODg4MCwgMjg4ODUsIDAsIDI4ODkwLCAKKyAgICAyODg5NSwgMjg5MDAsIDI4OTA1LCAyODkxMSwgMjg5MTcsIDI4OTIzLCAyODkyOSwgMjg5MzQsIDI4OTM5LCAyODk0NSwgCisgICAgMjg5NTIsIDAsIDAsIDAsIDAsIDI4OTU5LCAyODk2NCwgMjg5NzAsIDI4OTc2LCAyODk4MiwgMjg5ODcsIDI4OTkyLCAKKyAgICAyODk5NywgMjkwMDMsIDI5MDA5LCAyOTAxNCwgMjkwMTksIDAsIDAsIDAsIDAsIDI5MDI0LCAwLCAwLCAwLCAyOTAyOSwgCisgICAgMjkwMzQsIDI5MDM5LCAyOTA0NCwgMjkwNDgsIDI5MDUyLCAyOTA1NiwgMjkwNjAsIDI5MDY0LCAyOTA2OCwgMjkwNzIsIAorICAgIDI5MDc2LCAyOTA4MCwgMjkwODUsIDI5MDkxLCAyOTA5NywgMjkxMDMsIDI5MTA5LCAyOTExNCwgMjkxMjAsIDI5MTI2LCAKKyAgICAyOTEzMiwgMjkxMzcsIDI5MTQzLCAyOTE0OCwgMjkxNTQsIDI5MTYwLCAyOTE2NSwgMjkxNzEsIDI5MTc3LCAyOTE4MywgCisgICAgMjkxODgsIDI5MTkzLCAyOTE5OCwgMjkyMDQsIDI5MjEwLCAyOTIxNSwgMjkyMjEsIDI5MjI2LCAyOTIzMiwgMjkyMzcsIAorICAgIDI5MjQzLCAwLCAwLCAyOTI0OSwgMjkyNTUsIDI5MjYxLCAyOTI2NywgMjkyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI5Mjc5LCAyOTI4NywgMjkyOTUsIDI5MzAyLCAyOTMxMCwgMjkzMTgsIDI5MzI1LCAyOTMzMywgMjkzNDEsIAorICAgIDI5MzQ5LCAyOTM1NywgMjkzNjQsIDI5MzcyLCAyOTM4MCwgMjkzODcsIDI5Mzk1LCAyOTQwMywgMjk0MTAsIDI5NDE4LCAKKyAgICAyOTQyNiwgMjk0MzMsIDI5NDQwLCAyOTQ0OCwgMjk0NTUsIDI5NDYyLCAyOTQ3MCwgMjk0NzcsIDI5NDg1LCAyOTQ5MywgCisgICAgMjk1MDEsIDI5NTA5LCAyOTUxNywgMjk1MjUsIDI5NTMyLCAyOTU0MCwgMjk1NDgsIDI5NTU1LCAyOTU2MywgMjk1NzEsIAorICAgIDI5NTc5LCAyOTU4NywgMjk1OTUsIDI5NjAzLCAyOTYxMSwgMCwgMCwgMCwgMCwgMjk2MTksIDI5NjI4LCAyOTYzNiwgCisgICAgMjk2NDQsIDI5NjUxLCAyOTY1OSwgMjk2NjYsIDI5Njc0LCAyOTY4MSwgMjk2ODksIDI5Njk3LCAyOTcwNSwgMjk3MTMsIAorICAgIDI5NzIxLCAyOTcyOSwgMjk3MzcsIDI5NzQ1LCAyOTc1MywgMjk3NjEsIDI5NzY5LCAyOTc3NywgMjk3ODUsIDI5NzkzLCAKKyAgICAyOTgwMSwgMjk4MDksIDI5ODE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyOTgyMywgMjk4MzAsIDI5ODM2LCAyOTg0MiwgMjk4NDgsIAorICAgIDI5ODU0LCAyOTg2MCwgMjk4NjYsIDI5ODcyLCAyOTg3OCwgMjk4ODQsIDAsIDAsIDAsIDI5ODkxLCAyOTg5OCwgMjk5MDUsIAorICAgIDI5OTA5LCAyOTkxNSwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5MzksIDI5OTQ1LCAyOTk1MSwgMjk5NTcsIDI5OTYzLCAKKyAgICAyOTk2OSwgMjk5NzUsIDI5OTgxLCAyOTk4NywgMjk5OTMsIDI5OTk5LCAzMDAwMywgMzAwMDksIDMwMDE1LCAzMDAyMSwgCisgICAgMzAwMjcsIDMwMDMzLCAzMDAzOSwgMzAwNDUsIDMwMDUxLCAzMDA1NywgMzAwNjMsIDMwMDY5LCAzMDA3NSwgMzAwODEsIAorICAgIDMwMDg3LCAzMDA5MywgMzAwOTcsIDMwMTAyLCAzMDEwNywgMzAxMTIsIDMwMTE2LCAzMDEyMSwgMzAxMjUsIDMwMTMwLCAKKyAgICAzMDEzNSwgMzAxNDAsIDMwMTQ0LCAzMDE0OSwgMzAxNTQsIDMwMTU5LCAzMDE2NCwgMzAxNjksIDMwMTczLCAzMDE3OCwgCisgICAgMzAxODMsIDMwMTg4LCAzMDE5MywgMzAxOTcsIDMwMjAxLCAzMDIwNiwgMzAyMTEsIDMwMjE2LCAzMDIyMSwgMCwgMCwgCisgICAgMzAyMjcsIDMwMjMxLCAzMDIzOCwgMzAyNDMsIDMwMjQ5LCAzMDI1NSwgMzAyNjAsIDMwMjY2LCAzMDI3MiwgMzAyNzcsIAorICAgIDMwMjgzLCAzMDI4OSwgMzAyOTUsIDMwMzAxLCAzMDMwNywgMzAzMTIsIDMwMzE3LCAzMDMyMywgMzAzMjgsIDMwMzM0LCAKKyAgICAzMDMzOSwgMzAzNDUsIDMwMzUxLCAzMDM1NywgMzAzNjMsIDMwMzY3LCAzMDM3MiwgMzAzNzcsIDMwMzgzLCAzMDM4OSwgCisgICAgMzAzOTQsIDMwNDAwLCAzMDQwNiwgMzA0MTAsIDMwNDE1LCAzMDQyMCwgMzA0MjUsIDMwNDMwLCAzMDQzNSwgMzA0NDAsIAorICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OCwgMzA0NzMsIDMwNDc3LCAzMDQ4MiwgMzA0ODYsIDMwNDkxLCAKKyAgICAzMDQ5NSwgMzA1MDAsIDMwNTA1LCAzMDUxMCwgMzA1MTUsIDMwNTIyLCAzMDUyOSwgMzA1MzYsIDMwNTQ2LCAzMDU1NSwgCisgICAgMzA1NjIsIDMwNTY4LCAzMDU3OSwgMzA1ODQsIDMwNTkwLCAwLCAzMDU5NiwgMzA2MDEsIDMwNjA2LCAzMDYxNCwgMzA2MjAsIAorICAgIDMwNjI4LCAzMDYzMywgMzA2MzksIDMwNjQ1LCAzMDY1MSwgMzA2NTYsIDMwNjYyLCAzMDY2NywgMzA2NzQsIDMwNjgwLCAKKyAgICAzMDY4NSwgMzA2OTEsIDMwNjk3LCAzMDcwMywgMzA3MTAsIDMwNzE3LCAzMDcyNCwgMzA3MjksIDMwNzM0LCAzMDc0MSwgCisgICAgMzA3NDgsIDMwNzU1LCAzMDc2MiwgMzA3NjksIDAsIDAsIDMwNzc2LCAzMDc4MywgMzA3OTAsIDMwNzk2LCAzMDgwMiwgCisgICAgMzA4MDgsIDMwODE0LCAzMDgyMCwgMzA4MjYsIDMwODMyLCAzMDgzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA4NDQsIDMwODUwLCAKKyAgICAzMDg1NSwgMzA4NjAsIDMwODY1LCAzMDg3MCwgMzA4NzUsIDMwODgwLCAzMDg4NSwgMzA4OTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwODk1LCAzMDkwMCwgMzA5MDUsIDMwOTEwLCAzMDkxNSwgMzA5MjAsIDMwOTI1LCAzMDkzNCwgMzA5NDEsIDMwOTQ2LCAKKyAgICAzMDk1MSwgMzA5NTYsIDMwOTYxLCAzMDk2NiwgMCwgMCwgMzA5NzEsIDMwOTc4LCAzMDk4MSwgMzA5ODQsIDMwOTg3LCAKKyAgICAzMDk5MiwgMzA5OTYsIDMxMDAyLCAzMTAwNywgMzEwMTMsIDMxMDIwLCAzMTAyOCwgMzEwMzIsIDMxMDM3LCAzMTA0MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEwNDYsIDMxMDUyLCAzMTA1OCwgCisgICAgMzEwNjIsIDMxMDY2LCAzMTA3MCwgMzEwNzQsIDMxMDgwLCAzMTA4NCwgMzEwOTAsIDMxMDk0LCAzMTEwMCwgMzExMDYsIAorICAgIDMxMTE0LCAzMTEyMCwgMzExMjgsIDMxMTMyLCAzMTEzNiwgMzExNDAsIDMxMTQ2LCAzMTE0OSwgMzExNTUsIDMxMTU5LCAKKyAgICAzMTE2NSwgMzExNjksIDMxMTczLCAzMTE3OSwgMzExODMsIDMxMTg5LCAzMTE5MywgMzExOTksIDMxMjA3LCAzMTIxNSwgCisgICAgMzEyMjMsIDMxMjI5LCAzMTIzMywgMzEyMzksIDMxMjQzLCAzMTI0OSwgMzEyNTIsIDMxMjU1LCAzMTI2MSwgMzEyNjUsIAorICAgIDMxMjcxLCAzMTI3NCwgMzEyNzcsIDMxMjgxLCAzMTI4NSwgMzEyODksIDMxMjk1LCAzMTMwMSwgMzEzMDUsIDMxMzA4LCAKKyAgICAzMTMxMiwgMzEzMTcsIDMxMzIyLCAzMTMyOSwgMzEzMzQsIDMxMzQxLCAzMTM0OCwgMzEzNTcsIDMxMzY0LCAzMTM3MywgCisgICAgMzEzNzgsIDMxMzg1LCAzMTM5MiwgMzE0MDEsIDMxNDA2LCAzMTQxMywgMzE0MTgsIDMxNDI0LCAzMTQzMCwgMzE0MzYsIAorICAgIDMxNDQyLCAzMTQ0OCwgMzE0NTQsIDAsIDAsIDAsIDAsIDMxNDYwLCAzMTQ2NCwgMzE0NjcsIDMxNDcwLCAzMTQ3MywgCisgICAgMzE0NzYsIDMxNDc5LCAzMTQ4MiwgMzE0ODUsIDMxNDg4LCAzMTQ5MSwgMzE0OTQsIDMxNDk3LCAzMTUwMCwgMzE1MDUsIAorICAgIDMxNTEwLCAzMTUxNSwgMzE1MTgsIDMxNTIzLCAzMTUyOCwgMzE1MzMsIDMxNTM4LCAzMTU0NSwgMzE1NTAsIDMxNTU1LCAKKyAgICAzMTU2MCwgMzE1NjUsIDMxNTcyLCAzMTU3OCwgMzE1ODQsIDMxNTkwLCAzMTU5NiwgMzE2MDIsIDMxNjExLCAzMTYyMCwgCisgICAgMzE2MjYsIDMxNjMyLCAzMTY0MSwgMzE2NTAsIDMxNjU5LCAzMTY2OCwgMzE2NzcsIDMxNjg2LCAzMTY5NSwgMzE3MDQsIDAsIAorICAgIDAsIDAsIDMxNzEzLCAzMTcxOCwgMzE3MjMsIDMxNzI4LCAzMTczMiwgMzE3MzYsIDMxNzQwLCAzMTc0NSwgMzE3NDksIAorICAgIDMxNzUzLCAzMTc1OCwgMzE3NjIsIDMxNzY3LCAzMTc3MiwgMzE3NzcsIDMxNzgyLCAzMTc4NywgMzE3OTIsIDMxNzk3LCAKKyAgICAzMTgwMiwgMzE4MDcsIDMxODExLCAzMTgxNSwgMzE4MjAsIDMxODI1LCAzMTgzMCwgMzE4MzQsIDMxODM4LCAzMTg0MywgCisgICAgMzE4NDgsIDMxODUzLCAzMTg1OCwgMzE4NjMsIDMxODY3LCAzMTg3MywgMzE4NzksIDMxODg1LCAzMTg5MSwgMzE4OTcsIAorICAgIDMxOTAzLCAzMTkwOSwgMzE5MTUsIDMxOTIxLCAzMTkyNiwgMzE5MzEsIDMxOTM4LCAzMTk0NiwgMzE5NTEsIDMxOTU2LCAKKyAgICAzMTk2MSwgMzE5NjUsIDMxOTY5LCAzMTk3MywgMzE5NzcsIDMxOTgxLCAzMTk4NSwgMzE5ODksIDMxOTkzLCAzMTk5NywgCisgICAgMzIwMDEsIDMyMDA2LCAzMjAxMSwgMzIwMTYsIDMyMDIyLCAzMjAyOCwgMzIwMzIsIDMyMDM4LCAzMjA0MiwgMzIwNDgsIAorICAgIDMyMDU0LCAzMjA1OSwgMzIwNjYsIDMyMDcwLCAzMjA3NiwgMzIwODAsIDMyMDg2LCAzMjA5MSwgMzIwOTgsIDMyMTA1LCAKKyAgICAzMjExMCwgMzIxMTcsIDMyMTIyLCAzMjEyNywgMzIxMzIsIDMyMTM5LCAzMjE0MywgMzIxNDksIDMyMTU2LCAzMjE2MywgCisgICAgMzIxNjgsIDMyMTc1LCAzMjE4MiwgMzIxODYsIDMyMTkyLCAzMjE5NywgMzIyMDIsIDMyMjA5LCAzMjIxNCwgMzIyMTksIAorICAgIDMyMjI0LCAzMjIyOSwgMzIyMzMsIDMyMjM3LCAzMjI0MiwgMzIyNDcsIDMyMjU0LCAzMjI2MCwgMzIyNjUsIDMyMjcyLCAKKyAgICAzMjI3NywgMzIyODQsIDMyMjg5LCAzMjI5OSwgMzIzMDUsIDMyMzExLCAzMjMxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIzMTksIDMyMzI4LCAzMjMzNSwgMzIzNDIsIDMyMzQ5LCAzMjM1MywgMzIzNTgsIDMyMzYzLCAzMjM2OCwgMzIzNzMsIAorICAgIDMyMzc4LCAzMjM4MywgMzIzODgsIDMyMzkzLCAzMjM5OCwgMzI0MDMsIDMyNDA4LCAzMjQxMywgMzI0MTcsIDMyNDIxLCAKKyAgICAzMjQyNiwgMzI0MzEsIDMyNDM2LCAzMjQ0MSwgMzI0NDYsIDMyNDUxLCAzMjQ1NSwgMzI0NjAsIDMyNDY1LCAzMjQ3MCwgCisgICAgMzI0NzUsIDMyNDc5LCAzMjQ4NCwgMzI0ODksIDMyNDkzLCAzMjQ5OCwgMzI1MDMsIDMyNTA4LCAzMjUxMywgMzI1MTgsIAorICAgIDMyNTIyLCAzMjUyOCwgMzI1MzUsIDMyNTQxLCAzMjU0NiwgMzI1NTEsIDMyNTU3LCAzMjU2MiwgMzI1NjgsIDMyNTczLCAKKyAgICAzMjU3OSwgMzI1ODUsIDMyNTkwLCAzMjU5NiwgMzI2MDIsIDMyNjA3LCAzMjYxMywgMzI2MTksIDMyNjI1LCAzMjYzMCwgMCwgCisgICAgMCwgMCwgMzI2MzUsIDMyNjQxLCAzMjY1MSwgMzI2NTcsIDMyNjY1LCAzMjY3MSwgMzI2NzYsIDMyNjgwLCAzMjY4NCwgCisgICAgMzI2ODgsIDMyNjkyLCAzMjY5NiwgMzI3MDAsIDMyNzA0LCAzMjcwOCwgMCwgMCwgMCwgMzI3MTIsIDMyNzE3LCAzMjcyMiwgCisgICAgMzI3MjcsIDMyNzM0LCAzMjc0MCwgMzI3NDYsIDMyNzUyLCAzMjc1OCwgMzI3NjQsIDMyNzcwLCAzMjc3NiwgMzI3ODIsIAorICAgIDMyNzg4LCAzMjc5NSwgMzI4MDIsIDMyODA5LCAzMjgxNiwgMzI4MjMsIDMyODMwLCAzMjgzNywgMzI4NDQsIDMyODUxLCAKKyAgICAzMjg1OCwgMzI4NjUsIDMyODcyLCAzMjg3OSwgMzI4ODYsIDMyODkzLCAzMjkwMCwgMzI5MDcsIDMyOTE0LCAzMjkyMSwgCisgICAgMzI5MjgsIDMyOTM1LCAzMjk0MiwgMzI5NDksIDMyOTU2LCAzMjk2MywgMzI5NzAsIDMyOTc3LCAzMjk4NCwgMzI5OTEsIAorICAgIDMyOTk4LCAzMzAwNiwgMzMwMTQsIDMzMDIyLCAzMzAyOCwgMzMwMzQsIDMzMDQwLCAzMzA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMwNTcsIDMzMDY1LCAzMzA3MywgMzMwODEsIDMzMDg5LCAzMzA5OSwgCisgICAgMzMxMDksIDMzMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzEyOSwgMzMxMzQsIDMzMTM5LCAzMzE0NCwgMzMxNDksIAorICAgIDMzMTU4LCAzMzE2OSwgMzMxNzgsIDMzMTg5LCAzMzE5NSwgMzMyMDgsIDMzMjE0LCAzMzIyMSwgMzMyMjgsIDMzMjMzLCAKKyAgICAzMzIzOSwgMzMyNDUsIDMzMjU2LCAzMzI2NSwgMzMyNzIsIDMzMjc5LCAzMzI4OCwgMzMyOTUsIDMzMzA0LCAzMzMxNCwgCisgICAgMzMzMjQsIDMzMzMxLCAzMzMzOCwgMzMzNDUsIDMzMzU1LCAzMzM2MCwgMzMzNjgsIDMzMzc0LCAzMzM4MiwgMzMzOTEsIAorICAgIDMzMzk2LCAzMzQwMywgMzM0MDksIDMzNDE0LCAwLCAzMzQxOSwgMzM0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNDMyLCAKKyAgICAzMzQzNywgMzM0NDMsIDMzNDQ5LCAzMzQ1NywgMzM0NjMsIDMzNDY5LCAzMzQ3NSwgMzM0ODAsIDMzNDg3LCAzMzQ5MiwgCisgICAgMzM0OTgsIDMzNTA0LCAzMzUxMiwgMzM1MTgsIDMzNTI2LCAzMzUzMSwgMzM1MzgsIDMzNTQ0LCAzMzU1MiwgMzM1NjAsIAorICAgIDMzNTY2LCAzMzU3MiwgMzM1NzksIDMzNTg2LCAzMzU5MiwgMzM1OTksIDMzNjA1LCAzMzYxMSwgMzM2MTYsIDMzNjIyLCAKKyAgICAzMzYzMCwgMzM2MzgsIDMzNjQ0LCAzMzY1MCwgMzM2NTYsIDMzNjYyLCAzMzY3MCwgMzM2NzQsIDMzNjgwLCAzMzY4NiwgCisgICAgMzM2OTIsIDMzNjk4LCAzMzcwNCwgMzM3MTAsIDMzNzE0LCAzMzcxOSwgMzM3MjQsIDMzNzMxLCAzMzczNiwgMzM3NDAsIAorICAgIDMzNzQ2LCAzMzc1MSwgMzM3NTYsIDMzNzYwLCAzMzc2NSwgMzM3NzAsIDMzNzc0LCAzMzc3OSwgMzM3ODQsIDMzNzkxLCAKKyAgICAzMzc5NSwgMzM4MDAsIDMzODA1LCAzMzgwOSwgMzM4MTQsIDMzODE4LCAzMzgyMywgMzM4MjcsIDMzODMyLCAzMzgzNywgCisgICAgMzM4NDMsIDMzODQ4LCAzMzg1MywgMzM4NTcsIDMzODYyLCAzMzg2OCwgMzM4NzUsIDMzODgwLCAzMzg4NSwgMzM4OTAsIAorICAgIDMzODk1LCAzMzkwMCwgMzM5MDQsIDMzOTEwLCAzMzkxNywgMzM5MjQsIDMzOTI5LCAzMzkzNCwgMzM5MzgsIDMzOTQ0LCAKKyAgICAzMzk1MCwgMzM5NTUsIDMzOTYwLCAzMzk2NSwgMzM5NzEsIDMzOTc2LCAzMzk4MiwgMzM5ODcsIDMzOTkzLCAzMzk5OSwgCisgICAgMzQwMDUsIDM0MDEyLCAzNDAxOSwgMzQwMjYsIDM0MDMzLCAzNDA0MCwgMzQwNDcsIDM0MDUyLCAzNDA2MSwgMzQwNzEsIAorICAgIDM0MDgxLCAzNDA5MSwgMzQxMDEsIDM0MTExLCAzNDEyMSwgMzQxMzQsIDM0MTQ0LCAzNDE1NCwgMzQxNjQsIDM0MTcwLCAKKyAgICAzNDE3NSwgMzQxODIsIDM0MTkwLCAzNDE5OCwgMzQyMDUsIDM0MjEyLCAzNDIxOSwgMzQyMjYsIDM0MjM0LCAzNDI0MywgCisgICAgMzQyNTIsIDM0MjYxLCAzNDI3MCwgMzQyNzksIDM0Mjg4LCAzNDI5NywgMzQzMDYsIDM0MzE1LCAzNDMyNCwgMzQzMzMsIAorICAgIDM0MzQyLCAzNDM1MSwgMzQzNjAsIDM0MzY4LCAzNDM3NywgMzQzODgsIDM0Mzk2LCAzNDQwNiwgMzQ0MTgsIDM0NDI3LCAKKyAgICAzNDQzNiwgMzQ0NDYsIDM0NDU1LCAzNDQ2MywgMzQ0NzIsIDM0NDc4LCAzNDQ4MywgMzQ0OTEsIDM0NDk2LCAzNDUwNCwgCisgICAgMzQ1MDksIDM0NTE4LCAzNDUyNCwgMzQ1MzAsIDM0NTM3LCAzNDU0MiwgMzQ1NDcsIDM0NTU1LCAzNDU2MywgMzQ1NzIsIAorICAgIDM0NTgxLCAzNDU4NiwgMzQ1OTMsIDM0NjAzLCAzNDYxMSwgMzQ2MjAsIDM0NjI2LCAzNDYzMiwgMzQ2MzcsIDM0NjQ0LCAKKyAgICAzNDY0OSwgMzQ2NTgsIDM0NjYzLCAzNDY2OCwgMzQ2NzMsIDM0NjgwLCAzNDY4NiwgMzQ2OTEsIDM0NzAwLCAzNDcwOCwgCisgICAgMzQ3MTMsIDM0NzE4LCAzNDcyNSwgMzQ3MzIsIDM0NzM2LCAzNDc0MCwgMzQ3NDMsIDM0NzQ2LCAzNDc0OSwgMzQ3NTIsIAorICAgIDM0NzU1LCAzNDc1OCwgMzQ3NjUsIDM0NzY4LCAzNDc3MSwgMzQ3NzYsIDM0NzgwLCAzNDc4NCwgMzQ3ODgsIDM0NzkyLCAKKyAgICAzNDc5NiwgMzQ4MDYsIDM0ODEyLCAzNDgxOCwgMzQ4MjQsIDM0ODMyLCAzNDg0MCwgMzQ4NDYsIDM0ODUyLCAzNDg1OSwgCisgICAgMzQ4NjUsIDM0ODcwLCAzNDg3NiwgMzQ4ODMsIDM0ODg5LCAzNDg5NiwgMzQ5MDIsIDM0OTEwLCAzNDkxNSwgMzQ5MjEsIAorICAgIDM0OTI3LCAzNDkzMywgMzQ5MzksIDM0OTQ1LCAzNDk1MSwgMzQ5NTcsIDM0OTY5LCAzNDk3OSwgMzQ5ODUsIDM0OTkxLCAKKyAgICAzNTAwMSwgMzUwMDcsIDM1MDE1LCAzNTAyMywgMzUwMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MDM2LCAzNTA0MywgMzUwNTAsIAorICAgIDM1MDU1LCAzNTA2NCwgMzUwNzIsIDM1MDgwLCAzNTA4NywgMzUwOTQsIDM1MTAxLCAzNTEwOCwgMzUxMTYsIDM1MTI0LCAKKyAgICAzNTEzNCwgMzUxNDQsIDM1MTUyLCAzNTE2MCwgMzUxNjgsIDM1MTc2LCAzNTE4NSwgMzUxOTQsIDM1MjAyLCAzNTIxMCwgCisgICAgMzUyMTksIDM1MjI4LCAzNTIzOCwgMzUyNDgsIDM1MjU3LCAzNTI2NiwgMzUyNzQsIDM1MjgyLCAzNTI5MCwgMzUyOTgsIAorICAgIDM1MzA4LCAzNTMxOCwgMzUzMjYsIDM1MzM0LCAzNTM0MiwgMzUzNTAsIDM1MzU4LCAzNTM2NiwgMzUzNzQsIDM1MzgyLCAKKyAgICAzNTM5MCwgMzUzOTgsIDM1NDA2LCAzNTQxNCwgMzU0MjMsIDM1NDMyLCAzNTQ0MSwgMzU0NTAsIDM1NDYwLCAzNTQ3MCwgCisgICAgMzU0NzcsIDM1NDg0LCAzNTQ5MiwgMzU1MDAsIDM1NTA5LCAzNTUxOCwgMzU1MjYsIDM1NTM0LCAzNTU0NiwgMzU1NTgsIAorICAgIDM1NTY3LCAzNTU3NiwgMzU1ODUsIDM1NTk0LCAzNTYwMSwgMzU2MDgsIDM1NjE2LCAzNTYyNCwgMzU2MzIsIDM1NjQwLCAKKyAgICAzNTY0OCwgMzU2NTYsIDM1NjY0LCAzNTY3MiwgMzU2ODEsIDM1NjkwLCAzNTY5OSwgMzU3MDgsIDM1NzE3LCAzNTcyNiwgCisgICAgMzU3MzYsIDM1NzQ2LCAzNTc1NiwgMzU3NjYsIDM1Nzc1LCAzNTc4NCwgMzU3OTEsIDM1Nzk4LCAzNTgwNiwgMzU4MTQsIAorICAgIDM1ODIyLCAzNTgzMCwgMzU4MzgsIDM1ODQ2LCAzNTg1OCwgMzU4NzAsIDM1ODc5LCAzNTg4OCwgMzU4OTYsIDM1OTA0LCAKKyAgICAzNTkxMiwgMzU5MjAsIDM1OTMxLCAzNTk0MiwgMzU5NTMsIDM1OTY0LCAzNTk3NiwgMzU5ODgsIDM1OTk2LCAzNjAwNCwgCisgICAgMzYwMTIsIDM2MDIwLCAzNjAyOSwgMzYwMzgsIDM2MDQ3LCAzNjA1NiwgMzYwNjQsIDM2MDcyLCAzNjA4MCwgMzYwODgsIAorICAgIDM2MDk2LCAzNjEwNCwgMzYxMTMsIDM2MTIyLCAzNjEzMiwgMzYxNDIsIDM2MTUwLCAzNjE1OCwgMzYxNjYsIDM2MTc0LCAKKyAgICAzNjE4MiwgMzYxOTAsIDM2MTk3LCAzNjIwNCwgMzYyMTIsIDM2MjIwLCAzNjIyOCwgMzYyMzYsIDM2MjQ0LCAzNjI1MiwgCisgICAgMzYyNjAsIDM2MjY4LCAzNjI3NiwgMzYyODQsIDM2MjkyLCAzNjMwMCwgMzYzMDgsIDM2MzE2LCAzNjMyNCwgMzYzMzIsIAorICAgIDM2MzQxLCAzNjM1MCwgMzYzNTksIDM2MzY3LCAzNjM3NiwgMzYzODUsIDM2Mzk0LCAzNjQwMywgMzY0MTMsIDM2NDIyLCAKKyAgICAzNjQyOCwgMzY0MzMsIDM2NDQwLCAzNjQ0NywgMzY0NTUsIDM2NDYzLCAzNjQ3MiwgMzY0ODEsIDM2NDkxLCAzNjUwMSwgCisgICAgMzY1MTIsIDM2NTIzLCAzNjUzMywgMzY1NDMsIDM2NTUzLCAzNjU2MywgMzY1NzIsIDM2NTgxLCAzNjU5MSwgMzY2MDEsIAorICAgIDM2NjEyLCAzNjYyMywgMzY2MzMsIDM2NjQzLCAzNjY1MywgMzY2NjMsIDM2NjcwLCAzNjY3NywgMzY2ODUsIDM2NjkzLCAKKyAgICAzNjcwMCwgMzY3MDcsIDM2NzE2LCAzNjcyNSwgMzY3MzUsIDM2NzQ1LCAzNjc1NiwgMzY3NjcsIDM2Nzc3LCAzNjc4NywgCisgICAgMzY3OTcsIDM2ODA3LCAzNjgxNiwgMzY4MjUsIDM2ODMzLCAzNjg0MSwgMzY4NDgsIDM2ODU1LCAzNjg2MywgMzY4NzEsIAorICAgIDM2ODgwLCAzNjg4OSwgMzY4OTksIDM2OTA5LCAzNjkyMCwgMzY5MzEsIDM2OTQxLCAzNjk1MSwgMzY5NjEsIDM2OTcxLCAKKyAgICAzNjk4MCwgMzY5ODksIDM2OTk5LCAzNzAwOSwgMzcwMjAsIDM3MDMxLCAzNzA0MSwgMzcwNTEsIDM3MDYxLCAzNzA3MSwgCisgICAgMzcwNzgsIDM3MDg1LCAzNzA5MywgMzcxMDEsIDM3MTEwLCAzNzExOSwgMzcxMjksIDM3MTM5LCAzNzE1MCwgMzcxNjEsIAorICAgIDM3MTcxLCAzNzE4MSwgMzcxOTEsIDM3MjAxLCAzNzIwOSwgMzcyMTcsIDM3MjI1LCAzNzIzMywgMzcyNDIsIDM3MjUxLCAKKyAgICAzNzI1OSwgMzcyNjcsIDM3Mjc0LCAzNzI4MSwgMzcyODgsIDM3Mjk1LCAzNzMwMywgMzczMTEsIDM3MzE5LCAzNzMyNywgCisgICAgMzczMzgsIDM3MzQ5LCAzNzM2MCwgMzczNzEsIDM3MzgyLCAzNzM5MywgMzc0MDEsIDM3NDA5LCAzNzQyMCwgMzc0MzEsIAorICAgIDM3NDQyLCAzNzQ1MywgMzc0NjQsIDM3NDc1LCAzNzQ4MywgMzc0OTEsIDM3NTAyLCAzNzUxMywgMzc1MjQsIDAsIDAsIAorICAgIDM3NTM1LCAzNzU0MywgMzc1NTEsIDM3NTYyLCAzNzU3MywgMzc1ODQsIDAsIDAsIDM3NTk1LCAzNzYwMywgMzc2MTEsIAorICAgIDM3NjIyLCAzNzYzMywgMzc2NDQsIDM3NjU1LCAzNzY2NiwgMzc2NzcsIDM3Njg1LCAzNzY5MywgMzc3MDQsIDM3NzE1LCAKKyAgICAzNzcyNiwgMzc3MzcsIDM3NzQ4LCAzNzc1OSwgMzc3NjcsIDM3Nzc1LCAzNzc4NiwgMzc3OTcsIDM3ODA4LCAzNzgxOSwgCisgICAgMzc4MzAsIDM3ODQxLCAzNzg0OSwgMzc4NTcsIDM3ODY4LCAzNzg3OSwgMzc4OTAsIDM3OTAxLCAzNzkxMiwgMzc5MjMsIAorICAgIDM3OTMxLCAzNzkzOSwgMzc5NTAsIDM3OTYxLCAzNzk3MiwgMCwgMCwgMzc5ODMsIDM3OTkxLCAzNzk5OSwgMzgwMTAsIAorICAgIDM4MDIxLCAzODAzMiwgMCwgMCwgMzgwNDMsIDM4MDUxLCAzODA1OSwgMzgwNzAsIDM4MDgxLCAzODA5MiwgMzgxMDMsIAorICAgIDM4MTE0LCAwLCAzODEyNSwgMCwgMzgxMzMsIDAsIDM4MTQ0LCAwLCAzODE1NSwgMzgxNjYsIDM4MTc0LCAzODE4MiwgCisgICAgMzgxOTMsIDM4MjA0LCAzODIxNSwgMzgyMjYsIDM4MjM3LCAzODI0OCwgMzgyNTYsIDM4MjY0LCAzODI3NSwgMzgyODYsIAorICAgIDM4Mjk3LCAzODMwOCwgMzgzMTksIDM4MzMwLCAzODMzOCwgMzgzNDYsIDM4MzU0LCAzODM2MiwgMzgzNzAsIDM4Mzc4LCAKKyAgICAzODM4NiwgMzgzOTQsIDM4NDAyLCAzODQxMCwgMzg0MTgsIDM4NDI2LCAzODQzNCwgMCwgMCwgMzg0NDIsIDM4NDUzLCAKKyAgICAzODQ2NCwgMzg0NzgsIDM4NDkyLCAzODUwNiwgMzg1MjAsIDM4NTM0LCAzODU0OCwgMzg1NTksIDM4NTcwLCAzODU4NCwgCisgICAgMzg1OTgsIDM4NjEyLCAzODYyNiwgMzg2NDAsIDM4NjU0LCAzODY2NSwgMzg2NzYsIDM4NjkwLCAzODcwNCwgMzg3MTgsIAorICAgIDM4NzMyLCAzODc0NiwgMzg3NjAsIDM4NzcxLCAzODc4MiwgMzg3OTYsIDM4ODEwLCAzODgyNCwgMzg4MzgsIDM4ODUyLCAKKyAgICAzODg2NiwgMzg4NzcsIDM4ODg4LCAzODkwMiwgMzg5MTYsIDM4OTMwLCAzODk0NCwgMzg5NTgsIDM4OTcyLCAzODk4MywgCisgICAgMzg5OTQsIDM5MDA4LCAzOTAyMiwgMzkwMzYsIDM5MDUwLCAzOTA2NCwgMzkwNzgsIDM5MDg2LCAzOTA5NCwgMzkxMDUsIAorICAgIDM5MTEzLCAwLCAzOTEyNCwgMzkxMzIsIDM5MTQzLCAzOTE1MSwgMzkxNTksIDM5MTY3LCAzOTE3NSwgMzkxODMsIDM5MTg2LCAKKyAgICAzOTE4OSwgMzkxOTIsIDM5MTk1LCAzOTIwMSwgMzkyMTIsIDM5MjIwLCAwLCAzOTIzMSwgMzkyMzksIDM5MjUwLCAzOTI1OCwgCisgICAgMzkyNjYsIDM5Mjc0LCAzOTI4MiwgMzkyOTAsIDM5Mjk2LCAzOTMwMiwgMzkzMDgsIDM5MzE2LCAzOTMyNCwgMzkzMzUsIDAsIAorICAgIDAsIDM5MzQ2LCAzOTM1NCwgMzkzNjUsIDM5MzczLCAzOTM4MSwgMzkzODksIDAsIDM5Mzk3LCAzOTQwMywgMzk0MDksIAorICAgIDM5NDE1LCAzOTQyMywgMzk0MzEsIDM5NDQyLCAzOTQ1MywgMzk0NjEsIDM5NDY5LCAzOTQ3NywgMzk0ODgsIDM5NDk2LCAKKyAgICAzOTUwNCwgMzk1MTIsIDM5NTIwLCAzOTUyOCwgMzk1MzQsIDM5NTQwLCAwLCAwLCAzOTU0MywgMzk1NTQsIDM5NTYyLCAwLCAKKyAgICAzOTU3MywgMzk1ODEsIDM5NTkyLCAzOTYwMCwgMzk2MDgsIDM5NjE2LCAzOTYyNCwgMzk2MzIsIDM5NjM1LCAwLCAzOTYzOCwgCisgICAgMzk2NDIsIDM5NjQ2LCAzOTY1MCwgMzk2NTQsIDM5NjU4LCAzOTY2MiwgMzk2NjYsIDM5NjcwLCAzOTY3NCwgMzk2NzgsIAorICAgIDM5NjgyLCAzOTY4OCwgMzk2OTQsIDM5NzAwLCAzOTcwMywgMzk3MDYsIDM5NzA4LCAzOTcxMiwgMzk3MTYsIDM5NzIwLCAKKyAgICAzOTcyNCwgMzk3MjYsIDM5NzMwLCAzOTczNCwgMzk3NDAsIDM5NzQ2LCAzOTc1MywgMzk3NjAsIDM5NzY1LCAzOTc3MCwgCisgICAgMzk3NzYsIDM5NzgyLCAzOTc4NCwgMzk3ODcsIDM5Nzg5LCAzOTc5MywgMzk3OTcsIDM5ODAxLCAzOTgwNCwgMzk4MDgsIAorICAgIDM5ODEyLCAzOTgxNiwgMzk4MjAsIDM5ODI0LCAzOTgzMCwgMzk4MzQsIDM5ODM4LCAzOTg0NCwgMzk4NDksIDM5ODU2LCAKKyAgICAzOTg1OCwgMzk4NjEsIDM5ODY1LCAzOTg2OSwgMzk4NzQsIDM5ODgwLCAzOTg4MiwgMzk4OTEsIDM5OTAwLCAzOTkwMywgCisgICAgMzk5MDcsIDM5OTA5LCAzOTkxMSwgMzk5MTMsIDM5OTE2LCAzOTkyMiwgMzk5MjQsIDM5OTI4LCAzOTkzMiwgMzk5MzksIAorICAgIDM5OTQ2LCAzOTk1MCwgMzk5NTUsIDM5OTYwLCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OCwgMzk5ODEsIDM5OTg1LCAKKyAgICAzOTk4OSwgMzk5OTYsIDQwMDAxLCA0MDAwNSwgNDAwMDksIDQwMDE0LCA0MDAxOCwgNDAwMjIsIDQwMDI3LCA0MDAzMiwgCisgICAgNDAwMzYsIDQwMDQwLCA0MDA0NCwgNDAwNDYsIDQwMDUxLCA0MDA1NiwgNDAwNjAsIDQwMDY0LCA0MDA2OCwgNDAwNzIsIDAsIAorICAgIDQwMDc2LCA0MDA4MCwgNDAwODQsIDQwMDkwLCA0MDA5NiwgNDAxMDIsIDQwMTA4LCA0MDExNSwgNDAxMjIsIDQwMTI3LCAKKyAgICA0MDEzMiwgNDAxMzYsIDAsIDAsIDQwMTQyLCA0MDE0NSwgNDAxNDgsIDQwMTUxLCA0MDE1NCwgNDAxNTcsIDQwMTYwLCAKKyAgICA0MDE2NCwgNDAxNjgsIDQwMTczLCA0MDE3OCwgNDAxODMsIDQwMTkwLCA0MDE5NCwgNDAxOTcsIDQwMjAwLCA0MDIwMywgCisgICAgNDAyMDYsIDQwMjA5LCA0MDIxMiwgNDAyMTUsIDQwMjE4LCA0MDIyMSwgNDAyMjUsIDQwMjI5LCA0MDIzNCwgNDAyMzksIDAsIAorICAgIDQwMjQ0LCA0MDI1MCwgNDAyNTYsIDQwMjYyLCA0MDI2OSwgNDAyNzYsIDQwMjgzLCA0MDI5MCwgNDAyOTYsIDQwMzAzLCAKKyAgICA0MDMxMCwgNDAzMTcsIDQwMzIzLCAwLCAwLCAwLCA0MDMzMCwgNDAzMzMsIDQwMzM2LCA0MDMzOSwgNDAzNDQsIDQwMzQ3LCAKKyAgICA0MDM1MCwgNDAzNTMsIDQwMzU2LCA0MDM1OSwgNDAzNjIsIDQwMzY2LCA0MDM2OSwgNDAzNzIsIDQwMzc1LCA0MDM3OCwgCisgICAgNDAzODEsIDQwMzg2LCA0MDM4OSwgNDAzOTIsIDQwMzk1LCA0MDM5OCwgNDA0MDEsIDQwNDA2LCA0MDQwOSwgNDA0MTIsIAorICAgIDQwNDE3LCA0MDQyMiwgNDA0MjYsIDQwNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MDQzMiwgNDA0MzcsIDQwNDQyLCA0MDQ0OSwgNDA0NTcsIDQwNDYyLCA0MDQ2NywgNDA0NzEsIDQwNDc1LCAKKyAgICA0MDQ4MCwgNDA0ODcsIDQwNDk0LCA0MDQ5OCwgNDA1MDMsIDQwNTA4LCA0MDUxMywgNDA1MTgsIDQwNTI1LCA0MDUzMCwgCisgICAgNDA1MzUsIDQwNTQwLCA0MDU0OSwgNDA1NTYsIDQwNTYzLCA0MDU2NywgNDA1NzIsIDQwNTc4LCA0MDU4MywgNDA1OTAsIAorICAgIDQwNTk4LCA0MDYwNiwgNDA2MTAsIDQwNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDYxOCwgNDA2MjIsIDQwNjMwLCA0MDYzNCwgNDA2MzgsIDQwNjQzLCA0MDY0NywgNDA2NTEsIDQwNjU1LCA0MDY1NywgCisgICAgNDA2NjEsIDQwNjY1LCA0MDY2OSwgNDA2NzQsIDQwNjc4LCA0MDY4MiwgNDA2OTAsIDQwNjkzLCA0MDY5NywgNDA3MDAsIAorICAgIDQwNzAzLCA0MDcwOSwgNDA3MTMsIDQwNzE2LCA0MDcyMiwgNDA3MjYsIDQwNzMwLCA0MDczNCwgNDA3MzcsIDQwNzQxLCAKKyAgICA0MDc0NCwgNDA3NDgsIDQwNzUwLCA0MDc1MywgNDA3NTYsIDQwNzYwLCA0MDc2MiwgNDA3NjYsIDQwNzY5LCA0MDc3MiwgCisgICAgNDA3NzcsIDQwNzgyLCA0MDc4OCwgNDA3OTEsIDQwNzk0LCA0MDc5OCwgNDA4MDMsIDQwODA2LCA0MDgwOSwgNDA4MTIsIAorICAgIDQwODE2LCA0MDgyMCwgNDA4MjQsIDQwODI3LCA0MDgyOSwgNDA4MzIsIDQwODM1LCA0MDgzOCwgNDA4NDIsIDQwODQ3LCAKKyAgICA0MDg1MCwgNDA4NTQsIDQwODU4LCA0MDg2MiwgNDA4NjYsIDQwODcxLCA0MDg3NiwgNDA4ODAsIDQwODg1LCA0MDg5MCwgCisgICAgNDA4OTUsIDQwOTAwLCA0MDkwNCwgNDA5MDgsIDQwOTEzLCA0MDkxNywgNDA5MjAsIDQwOTIzLCA0MDkyNSwgNDA5MjksIAorICAgIDQwOTM1LCA0MDk0MiwgNDA5NDksIDQwOTU2LCA0MDk2MywgNDA5NzAsIDQwOTc3LCA0MDk4NCwgNDA5OTEsIDQwOTk5LCAKKyAgICA0MTAwNiwgNDEwMTQsIDQxMDIxLCA0MTAyOCwgNDEwMzYsIDQxMDQ0LCA0MTA0OSwgNDEwNTQsIDQxMDU5LCA0MTA2NCwgCisgICAgNDEwNjksIDQxMDc0LCA0MTA3OSwgNDEwODQsIDQxMDg5LCA0MTA5NCwgNDExMDAsIDQxMTA2LCA0MTExMiwgNDExMTgsIAorICAgIDQxMTI1LCA0MTEzMywgNDExNDAsIDQxMTQ2LCA0MTE1MiwgNDExNTgsIDQxMTY0LCA0MTE3MCwgNDExNzYsIDQxMTgyLCAKKyAgICA0MTE4OCwgNDExOTQsIDQxMjAxLCA0MTIwOCwgNDEyMTUsIDQxMjIyLCA0MTIzMCwgNDEyMzksIDQxMjQ3LCA0MTI1OCwgCisgICAgNDEyNjYsIDQxMjc0LCA0MTI4MywgNDEyOTAsIDQxMjk5LCA0MTMwOCwgNDEzMTYsIDQxMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MTMzMywgNDEzMzUsIDQxMzM3LCA0MTMzOSwgNDEzNDEsIDQxMzQ0LCA0MTM0NywgNDEzNTEsIDQxMzU1LCA0MTM1OSwgCisgICAgNDEzNjMsIDQxMzY3LCA0MTM3MSwgNDEzNzUsIDQxMzc5LCA0MTM4NCwgNDEzODksIDQxMzk0LCA0MTM5OSwgNDE0MDQsIAorICAgIDQxNDA5LCA0MTQxNCwgNDE0MTksIDQxNDI0LCA0MTQyOSwgNDE0MzUsIDQxNDM5LCA0MTQ0MywgNDE0NDgsIDQxNDUzLCAKKyAgICA0MTQ1OCwgNDE0NjMsIDQxNDY3LCA0MTQ3NCwgNDE0ODEsIDQxNDg4LCA0MTQ5NSwgNDE1MDIsIDQxNTA5LCA0MTUxNiwgCisgICAgNDE1MjMsIDQxNTMxLCA0MTU0MywgNDE1NTAsIDQxNTU3LCA0MTU2NCwgNDE1NzEsIDQxNTc4LCA0MTU4NSwgNDE1OTIsIAorICAgIDQxNTk5LCA0MTYwNiwgNDE2MTMsIDQxNjE4LCA0MTYyNCwgNDE2MjksIDQxNjM0LCA0MTYzOSwgNDE2NDQsIDQxNjQ5LCAKKyAgICA0MTY1NiwgNDE2NjMsIDQxNjY4LCA0MTY3NCwgNDE2NzksIDQxNjgyLCA0MTY4NSwgNDE2ODgsIDQxNjkxLCA0MTY5NSwgCisgICAgNDE2OTksIDQxNzA0LCA0MTcwOSwgNDE3MTQsIDQxNzE5LCA0MTcyMywgNDE3MjcsIDQxNzMxLCA0MTczNSwgNDE3NDAsIAorICAgIDQxNzQ1LCA0MTc0OSwgNDE3NTMsIDQxNzU3LCA0MTc2MSwgNDE3NjYsIDQxNzcxLCA0MTc3NCwgNDE3NzcsIDQxNzgwLCAKKyAgICA0MTc4MywgNDE3ODksIDQxNzk2LCA0MTgwNiwgNDE4MTYsIDQxODIwLCA0MTgyOCwgNDE4MzUsIDQxODQzLCA0MTg1MSwgCisgICAgNDE4NTUsIDQxODYxLCA0MTg2NywgNDE4NzEsIDQxODc2LCA0MTg4MSwgNDE4ODcsIDQxODkzLCA0MTg5OSwgNDE5MDYsIAorICAgIDQxOTEwLCA0MTkxNCwgNDE5MTksIDQxOTIyLCA0MTkyNCwgNDE5MjgsIDQxOTMyLCA0MTk0MCwgNDE5NDQsIDQxOTQ2LCAKKyAgICA0MTk0OCwgNDE5NTIsIDQxOTYwLCA0MTk2NSwgNDE5NzEsIDQxOTgxLCA0MTk4OCwgNDE5OTMsIDQxOTk3LCA0MjAwMSwgCisgICAgNDIwMDUsIDQyMDA4LCA0MjAxMSwgNDIwMTQsIDQyMDE4LCA0MjAyMiwgNDIwMjYsIDQyMDMwLCA0MjAzNCwgNDIwMzcsIAorICAgIDQyMDQxLCA0MjA0NSwgNDIwNDgsIDQyMDUwLCA0MjA1MywgNDIwNTUsIDQyMDU5LCA0MjA2MywgNDIwNjUsIDQyMDcxLCAKKyAgICA0MjA3NCwgNDIwNzksIDQyMDgzLCA0MjA4NywgNDIwODksIDQyMDkxLCA0MjA5MywgNDIwOTYsIDQyMTAwLCA0MjEwNCwgCisgICAgNDIxMDgsIDQyMTEyLCA0MjExNiwgNDIxMjIsIDQyMTI4LCA0MjEzMCwgNDIxMzIsIDQyMTM0LCA0MjEzNiwgNDIxMzksIAorICAgIDQyMTQxLCA0MjE0NSwgNDIxNDcsIDQyMTUxLCA0MjE1NSwgNDIxNjAsIDQyMTY0LCA0MjE2OCwgNDIxNzIsIDQyMTc2LCAKKyAgICA0MjE4MCwgNDIxODYsIDQyMTkwLCA0MjIwMCwgNDIyMTAsIDQyMjE0LCA0MjIyMCwgNDIyMjcsIDQyMjMxLCA0MjIzNSwgCisgICAgNDIyMzgsIDQyMjQzLCA0MjI0NywgNDIyNTMsIDQyMjU3LCA0MjI3MCwgNDIyNzksIDQyMjgzLCA0MjI4NywgNDIyOTMsIAorICAgIDQyMjk3LCA0MjMwMCwgNDIzMDIsIDQyMzA1LCA0MjMwOSwgNDIzMTMsIDQyMzIwLCA0MjMyNCwgNDIzMjgsIDQyMzMyLCAKKyAgICA0MjMzNSwgNDIzNDAsIDQyMzQ1LCA0MjM1MSwgNDIzNTcsIDQyMzYyLCA0MjM2NywgNDIzNzUsIDQyMzgzLCA0MjM4NywgCisgICAgNDIzOTEsIDQyMzkzLCA0MjM5OCwgNDI0MDIsIDQyNDA2LCA0MjQxNCwgNDI0MjIsIDQyNDI5LCA0MjQzNiwgNDI0NDUsIAorICAgIDQyNDU0LCA0MjQ2MCwgNDI0NjYsIDQyNDc0LCA0MjQ4MiwgNDI0ODQsIDQyNDg2LCA0MjQ5MiwgNDI0OTgsIDQyNTA1LCAKKyAgICA0MjUxMiwgNDI1MTgsIDQyNTI0LCA0MjUyOCwgNDI1MzIsIDQyNTM5LCA0MjU0NiwgNDI1NTMsIDQyNTYwLCA0MjU3MCwgCisgICAgNDI1ODAsIDQyNTg4LCA0MjU5NiwgNDI1OTgsIDQyNjAyLCA0MjYwNiwgNDI2MTEsIDQyNjE2LCA0MjYyNCwgNDI2MzIsIAorICAgIDQyNjM1LCA0MjYzOCwgNDI2NDEsIDQyNjQ0LCA0MjY0NywgNDI2NTIsIDQyNjU2LCA0MjY2MSwgNDI2NjYsIDQyNjY5LCAKKyAgICA0MjY3MiwgNDI2NzUsIDQyNjc4LCA0MjY4MSwgNDI2ODUsIDQyNjg4LCA0MjY5MSwgNDI2OTQsIDQyNjk3LCA0MjY5OSwgCisgICAgNDI3MDEsIDQyNzAzLCA0MjcwNSwgNDI3MTMsIDQyNzIxLCA0MjcyNywgNDI3MzEsIDQyNzM3LCA0Mjc0NywgNDI3NTMsIAorICAgIDQyNzU5LCA0Mjc2NSwgNDI3NzMsIDQyNzgyLCA0Mjc5NCwgNDI3OTgsIDQyODAyLCA0MjgwNCwgNDI4MTAsIDQyODEyLCAKKyAgICA0MjgxNCwgNDI4MTYsIDQyODE4LCA0MjgyNCwgNDI4MjcsIDQyODMzLCA0MjgzOSwgNDI4NDMsIDQyODQ3LCA0Mjg1MSwgCisgICAgNDI4NTQsIDQyODU4LCA0Mjg2MiwgNDI4NjQsIDQyODczLCA0Mjg4MiwgNDI4ODcsIDQyODkyLCA0Mjg5OCwgNDI5MDQsIAorICAgIDQyOTEwLCA0MjkxMywgNDI5MTYsIDQyOTE5LCA0MjkyMiwgNDI5MjQsIDQyOTI5LCA0MjkzNCwgNDI5MzksIDQyOTQ1LCAKKyAgICA0Mjk1MSwgNDI5NjAsIDQyOTY5LCA0Mjk3NiwgNDI5ODMsIDQyOTkwLCA0Mjk5NywgNDMwMDcsIDQzMDE3LCA0MzAyNywgCisgICAgNDMwMzcsIDQzMDQ3LCA0MzA1NywgNDMwNjYsIDQzMDc1LCA0MzA4NCwgNDMwOTMsIDQzMTAxLCA0MzExMywgNDMxMjQsIAorICAgIDQzMTQwLCA0MzE0MywgNDMxNDgsIDQzMTU0LCA0MzE2MCwgNDMxNjcsIDQzMTgxLCA0MzE5NiwgNDMyMDIsIDQzMjA4LCAKKyAgICA0MzIxNSwgNDMyMjEsIDQzMjI5LCA0MzIzNSwgNDMyNDgsIDQzMjYyLCA0MzI2NywgNDMyNzMsIDQzMjgxLCA0MzI4NCwgCisgICAgNDMyODcsIDQzMjg5LCA0MzI5MiwgNDMyOTUsIDQzMjk3LCA0MzI5OSwgNDMzMDMsIDQzMzA2LCA0MzMwOSwgNDMzMTIsIAorICAgIDQzMzE1LCA0MzMyMCwgNDMzMjUsIDQzMzMwLCA0MzMzNSwgNDMzNDAsIDQzMzQzLCA0MzM0NSwgNDMzNDcsIDQzMzQ5LCAKKyAgICA0MzM1MywgNDMzNTcsIDQzMzYxLCA0MzM2NywgNDMzNzEsIDQzMzczLCA0MzM3NSwgNDMzODAsIDQzMzg1LCA0MzM5MCwgCisgICAgNDMzOTUsIDQzNDAwLCA0MzQwNSwgNDM0MDcsIDQzNDA5LCA0MzQxOCwgNDM0MjIsIDQzNDMwLCA0MzQzOSwgNDM0NDEsIAorICAgIDQzNDQ2LCA0MzQ1MSwgNDM0NTksIDQzNDYzLCA0MzQ2NSwgNDM0NjksIDQzNDcxLCA0MzQ3NSwgNDM0NzksIDQzNDgzLCAKKyAgICA0MzQ4NSwgNDM0ODcsIDQzNDg5LCA0MzQ5NiwgNDM1MDUsIDQzNTE0LCA0MzUyMywgNDM1MzIsIDQzNTQxLCA0MzU1MCwgCisgICAgNDM1NTksIDQzNTY4LCA0MzU3NiwgNDM1ODQsIDQzNTkzLCA0MzYwMiwgNDM2MTEsIDQzNjIwLCA0MzYyOCwgNDM2MzYsIAorICAgIDQzNjQ1LCA0MzY1NCwgNDM2NjMsIDQzNjczLCA0MzY4MiwgNDM2OTIsIDQzNzAxLCA0MzcxMSwgNDM3MTksIDQzNzI4LCAKKyAgICA0MzczOCwgNDM3NDcsIDQzNzU3LCA0Mzc2NiwgNDM3NzYsIDQzNzg0LCA0Mzc5MywgNDM4MDIsIDQzODExLCA0MzgyMCwgCisgICAgNDM4MjksIDQzODM4LCA0Mzg0OCwgNDM4NTcsIDQzODY2LCA0Mzg3NSwgNDM4ODUsIDQzODk0LCA0MzkwMywgNDM5MTIsIAorICAgIDQzOTIxLCA0MzkzMSwgNDM5NDEsIDQzOTUwLCA0Mzk1OSwgNDM5NjcsIDQzOTc2LCA0Mzk4MywgNDM5OTIsIDQ0MDAxLCAKKyAgICA0NDAxMiwgNDQwMjEsIDQ0MDMxLCA0NDA0MSwgNDQwNDgsIDQ0MDU1LCA0NDA2MiwgNDQwNzEsIDQ0MDgwLCA0NDA4OSwgCisgICAgNDQwOTgsIDQ0MTA1LCA0NDExMCwgNDQxMTgsIDQ0MTI0LCA0NDEyNywgNDQxMzUsIDQ0MTM4LCA0NDE0MywgNDQxNDgsIAorICAgIDQ0MTUxLCA0NDE1NCwgNDQxNjIsIDQ0MTY1LCA0NDE3MCwgNDQxNzMsIDQ0MTgwLCA0NDE4NSwgNDQxOTMsIDQ0MTk2LCAKKyAgICA0NDE5OSwgNDQyMDIsIDQ0MjA3LCA0NDIxMiwgNDQyMTUsIDQ0MjE4LCA0NDIyNiwgNDQyMjksIDQ0MjM2LCA0NDI0MywgCisgICAgNDQyNDcsIDQ0MjUxLCA0NDI1NiwgNDQyNjEsIDQ0MjY3LCA0NDI3MiwgNDQyNzgsIDQ0Mjg0LCA0NDI4OSwgNDQyOTUsIAorICAgIDQ0MzAzLCA0NDMwOSwgNDQzMTcsIDQ0MzI1LCA0NDMzMSwgNDQzMzksIDQ0MzQ3LCA0NDM1NiwgNDQzNjQsIDQ0MzcwLCAKKyAgICA0NDM3OCwgNDQzODcsIDQ0Mzk1LCA0NDM5OSwgNDQ0MDQsIDQ0NDE4LCA0NDQzMiwgNDQ0MzYsIDQ0NDQwLCA0NDQ0NCwgCisgICAgNDQ0NDgsIDQ0NDU4LCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NywgNDQ0ODIsIDQ0NDg3LCA0NDQ5MiwgNDQ1MDIsIAorICAgIDQ0NTEyLCA0NDUyMCwgNDQ1MzAsIDQ0NTQwLCA0NDU0OCwgNDQ1NTgsIDQ0NTY4LCA0NDU3NiwgNDQ1ODYsIDQ0NTk2LCAKKyAgICA0NDYwNCwgNDQ2MTIsIDQ0NjIyLCA0NDYzMiwgNDQ2MzUsIDQ0NjM4LCA0NDY0MSwgNDQ2NDYsIDQ0NjUwLCA0NDY1NiwgCisgICAgNDQ2NjMsIDQ0NjcwLCA0NDY3OCwgNDQ2ODUsIDQ0Njg5LCA0NDY5MywgNDQ2OTcsIDQ0NzAxLCA0NDcwMywgNDQ3MDcsIAorICAgIDQ0NzExLCA0NDcxNiwgNDQ3MjEsIDQ0NzI4LCA0NDczNSwgNDQ3MzgsIDQ0NzQ1LCA0NDc0NywgNDQ3NDksIDQ0NzUzLCAKKyAgICA0NDc1NywgNDQ3NjIsIDQ0NzY4LCA0NDc3NCwgNDQ3ODAsIDQ0Nzg2LCA0NDc5NSwgNDQ4MDQsIDQ0ODEzLCA0NDgxNywgCisgICAgNDQ4MTksIDQ0ODIzLCA0NDgzMCwgNDQ4MzcsIDQ0ODQ0LCA0NDg1MSwgNDQ4NTgsIDQ0ODYxLCA0NDg2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQ4NzIsIDQ0ODc2LCA0NDg4MywgNDQ4OTAsIDQ0ODk3LCA0NDkwNCwgNDQ5MDgsIDQ0OTEyLCA0NDkxNiwgCisgICAgNDQ5MjAsIDQ0OTI1LCA0NDkzMSwgNDQ5MzYsIDQ0OTQyLCA0NDk0OCwgNDQ5NTQsIDQ0OTYwLCA0NDk2OCwgNDQ5NzUsIAorICAgIDQ0OTgyLCA0NDk4OSwgNDQ5OTYsIDQ1MDAxLCA0NTAwNywgNDUwMTYsIDQ1MDIwLCA0NTAyNywgNDUwMzEsIDQ1MDM1LCAKKyAgICA0NTA0MSwgNDUwNDcsIDQ1MDUzLCA0NTA1OSwgNDUwNjMsIDQ1MDY3LCA0NTA3MCwgNDUwNzQsIDQ1MDc4LCA0NTA4NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDUwOTIsIDQ1MDk1LCA0NTA5OSwgNDUxMDMsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI5LCA0NTEzNiwgNDUxNDAsIAorICAgIDQ1MTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NTE1MywgNDUxNTYsIDQ1MTU5LCA0NTE2MiwgNDUxNjUsIDQ1MTY4LCA0NTE3MSwgNDUxNzQsIDQ1MTc3LCA0NTE4MCwgCisgICAgNDUxODQsIDQ1MTg4LCA0NTE5MiwgNDUxOTYsIDQ1MjAwLCA0NTIwNCwgNDUyMDgsIDQ1MjEyLCA0NTIxNiwgNDUyMjAsIAorICAgIDQ1MjI0LCA0NTIyNywgNDUyMzAsIDQ1MjMzLCA0NTIzNiwgNDUyMzksIDQ1MjQyLCA0NTI0NSwgNDUyNDgsIDQ1MjUxLCAKKyAgICA0NTI1NSwgNDUyNTksIDQ1MjYzLCA0NTI2NywgNDUyNzEsIDQ1Mjc1LCA0NTI3OSwgNDUyODMsIDQ1Mjg3LCA0NTI5MSwgCisgICAgNDUyOTUsIDQ1MzAxLCA0NTMwNywgNDUzMTMsIDQ1MzIwLCA0NTMyNywgNDUzMzQsIDQ1MzQxLCA0NTM0OCwgNDUzNTUsIAorICAgIDQ1MzYyLCA0NTM2OSwgNDUzNzYsIDQ1MzgzLCA0NTM5MCwgNDUzOTcsIDQ1NDA0LCA0NTQxMSwgNDU0MTgsIDQ1NDI1LCAKKyAgICA0NTQzMiwgNDU0MzcsIDQ1NDQzLCA0NTQ0OSwgNDU0NTUsIDQ1NDYwLCA0NTQ2NiwgNDU0NzIsIDQ1NDc4LCA0NTQ4MywgCisgICAgNDU0ODksIDQ1NDk1LCA0NTUwMCwgNDU1MDYsIDQ1NTEyLCA0NTUxNywgNDU1MjMsIDQ1NTI5LCA0NTUzNCwgNDU1MzksIAorICAgIDQ1NTQ1LCA0NTU1MCwgNDU1NTYsIDQ1NTYyLCA0NTU2OCwgNDU1NzQsIDQ1NTgwLCA0NTU4NSwgNDU1OTEsIDQ1NTk3LCAKKyAgICA0NTYwMywgNDU2MDgsIDQ1NjE0LCA0NTYyMCwgNDU2MjYsIDQ1NjMxLCA0NTYzNywgNDU2NDMsIDQ1NjQ4LCA0NTY1NCwgCisgICAgNDU2NjAsIDQ1NjY1LCA0NTY3MSwgNDU2NzcsIDQ1NjgyLCA0NTY4NywgNDU2OTMsIDQ1Njk4LCA0NTcwNCwgNDU3MTAsIAorICAgIDQ1NzE2LCA0NTcyMiwgNDU3MjgsIDQ1NzMzLCA0NTczOSwgNDU3NDUsIDQ1NzUxLCA0NTc1NiwgNDU3NjIsIDQ1NzY4LCAKKyAgICA0NTc3NCwgNDU3NzksIDQ1Nzg1LCA0NTc5MSwgNDU3OTYsIDQ1ODAyLCA0NTgwOCwgNDU4MTMsIDQ1ODE5LCA0NTgyNSwgCisgICAgNDU4MzAsIDQ1ODM1LCA0NTg0MSwgNDU4NDYsIDQ1ODUyLCA0NTg1OCwgNDU4NjQsIDQ1ODcwLCA0NTg3NiwgNDU4ODAsIAorICAgIDQ1ODg1LCA0NTg5MCwgNDU4OTUsIDQ1OTAwLCA0NTkwNSwgNDU5MTAsIDQ1OTE1LCA0NTkyMCwgNDU5MjUsIDQ1OTMwLCAKKyAgICA0NTkzNCwgNDU5MzgsIDQ1OTQyLCA0NTk0NiwgNDU5NTAsIDQ1OTU0LCA0NTk1OCwgNDU5NjIsIDQ1OTY2LCA0NTk3MSwgCisgICAgNDU5NzYsIDQ1OTgxLCA0NTk4NiwgNDU5OTEsIDQ1OTk2LCA0NjAwNSwgNDYwMTQsIDQ2MDIzLCA0NjAzMiwgNDYwNDEsIAorICAgIDQ2MDUwLCA0NjA1OSwgNDYwNjgsIDQ2MDc1LCA0NjA4MywgNDYwOTEsIDQ2MDk4LCA0NjEwNSwgNDYxMTMsIDQ2MTIxLCAKKyAgICA0NjEyOCwgNDYxMzUsIDQ2MTQzLCA0NjE1MSwgNDYxNTgsIDQ2MTY1LCA0NjE3MywgNDYxODEsIDQ2MTg4LCA0NjE5NSwgCisgICAgNDYyMDMsIDQ2MjEyLCA0NjIyMSwgNDYyMjksIDQ2MjM4LCA0NjI0NywgNDYyNTQsIDQ2MjYxLCA0NjI2OSwgNDYyNzgsIAorICAgIDQ2Mjg3LCA0NjI5NSwgNDYzMDQsIDQ2MzEzLCA0NjMyMCwgNDYzMjcsIDQ2MzM2LCA0NjM0NSwgNDYzNTMsIDQ2MzYxLCAKKyAgICA0NjM3MCwgNDYzNzksIDQ2Mzg2LCA0NjM5MywgNDY0MDIsIDQ2NDExLCA0NjQxOSwgNDY0MjcsIDQ2NDM2LCA0NjQ0NSwgCisgICAgNDY0NTIsIDQ2NDU5LCA0NjQ2OCwgNDY0NzcsIDQ2NDg1LCA0NjQ5NCwgNDY1MDMsIDQ2NTExLCA0NjUyMSwgNDY1MzEsIAorICAgIDQ2NTQxLCA0NjU1MSwgNDY1NjAsIDQ2NTY5LCA0NjU3OCwgNDY1ODcsIDQ2NTk0LCA0NjYwMiwgNDY2MTAsIDQ2NjE4LCAKKyAgICA0NjYyNiwgNDY2MzEsIDQ2NjM2LCA0NjY0NSwgNDY2NTMsIDQ2NjYwLCA0NjY2OSwgNDY2NzcsIDQ2Njg0LCA0NjY5MywgCisgICAgNDY3MDEsIDQ2NzA4LCA0NjcxNywgNDY3MjUsIDQ2NzMyLCA0Njc0MSwgNDY3NDksIDQ2NzU2LCA0Njc2NSwgNDY3NzMsIAorICAgIDQ2NzgwLCA0Njc4OSwgNDY3OTcsIDQ2ODA0LCA0NjgxMywgNDY4MjEsIDQ2ODI4LCA0NjgzNywgNDY4NDUsIDQ2ODUyLCAKKyAgICA0Njg2MSwgNDY4NzAsIDQ2ODc5LCA0Njg4OCwgNDY5MDIsIDQ2OTE2LCA0NjkyMywgNDY5MjgsIDQ2OTMzLCA0NjkzOCwgCisgICAgNDY5NDMsIDQ2OTQ4LCA0Njk1MywgNDY5NTgsIDQ2OTYzLCA0Njk3MSwgNDY5NzksIDQ2OTg3LCA0Njk5NSwgNDcwMDAsIAorICAgIDQ3MDA3LCA0NzAxNCwgNDcwMjEsIDQ3MDI2LCA0NzAzNCwgNDcwNDEsIDQ3MDQ5LCA0NzA1MywgNDcwNjAsIDQ3MDY2LCAKKyAgICA0NzA3MywgNDcwNzcsIDQ3MDgzLCA0NzA4OSwgNDcwOTUsIDQ3MDk5LCA0NzEwMiwgNDcxMDYsIDQ3MTEwLCA0NzExNywgCisgICAgNDcxMjMsIDQ3MTI5LCA0NzEzNSwgNDcxNDEsIDQ3MTU1LCA0NzE2NSwgNDcxNzksIDQ3MTkzLCA0NzE5OSwgNDcyMDksIAorICAgIDQ3MjIzLCA0NzIyNiwgNDcyMjksIDQ3MjM2LCA0NzI0NCwgNDcyNDksIDQ3MjU0LCA0NzI2MiwgNDcyNzQsIDQ3Mjg2LCAKKyAgICA0NzI5NCwgNDcyOTgsIDQ3MzAyLCA0NzMwNSwgNDczMDgsIDQ3MzEyLCA0NzMxNiwgNDczMTksIDQ3MzIyLCA0NzMyNywgCisgICAgNDczMzIsIDQ3MzM4LCA0NzM0NCwgNDczNDksIDQ3MzU0LCA0NzM2MCwgNDczNjYsIDQ3MzcxLCA0NzM3NiwgNDczODEsIAorICAgIDQ3Mzg2LCA0NzM5MiwgNDczOTgsIDQ3NDAzLCA0NzQwOCwgNDc0MTQsIDQ3NDIwLCA0NzQyNSwgNDc0MzAsIDQ3NDMzLCAKKyAgICA0NzQzNiwgNDc0NDUsIDQ3NDQ3LCA0NzQ0OSwgNDc0NTIsIDQ3NDU2LCA0NzQ2MiwgNDc0NjQsIDQ3NDY3LCA0NzQ3NCwgCisgICAgNDc0ODEsIDQ3NDg5LCA0NzQ5NywgNDc1MDcsIDQ3NTIxLCA0NzUyNiwgNDc1MzEsIDQ3NTM1LCA0NzU0MCwgNDc1NDgsIAorICAgIDQ3NTU2LCA0NzU2NSwgNDc1NzQsIDQ3NTgzLCA0NzU5MiwgNDc1OTcsIDQ3NjAyLCA0NzYwOCwgNDc2MTQsIDQ3NjIwLCAKKyAgICA0NzYyNiwgNDc2MjksIDQ3NjM1LCA0NzY0MSwgNDc2NTEsIDQ3NjYxLCA0NzY2OSwgNDc2NzcsIDQ3Njg2LCA0NzY5NSwgCisgICAgNDc2OTksIDQ3NzA3LCA0NzcxNSwgNDc3MjMsIDQ3NzMxLCA0Nzc0MCwgNDc3NDksIDQ3NzU4LCA0Nzc2NywgNDc3NzIsIAorICAgIDQ3Nzc3LCA0Nzc4MiwgNDc3ODcsIDQ3NzkyLCA0Nzc5OCwgNDc4MDQsIDQ3ODA5LCA0NzgxNSwgNDc4MTcsIDQ3ODE5LCAKKyAgICA0NzgyMSwgNDc4MjMsIDQ3ODI2LCA0NzgyOSwgNDc4MzEsIDQ3ODMzLCA0NzgzNSwgNDc4MzksIDQ3ODQzLCA0Nzg0NSwgCisgICAgNDc4NDcsIDQ3ODUwLCA0Nzg1MywgNDc4NTcsIDQ3ODYzLCA0Nzg2OSwgNDc4NzEsIDQ3ODc4LCA0Nzg4MiwgNDc4ODcsIAorICAgIDQ3ODkyLCA0Nzg5NCwgNDc5MDQsIDQ3OTEwLCA0NzkxNiwgNDc5MjIsIDQ3OTI4LCA0NzkzNCwgNDc5NDAsIDQ3OTQ1LCAKKyAgICA0Nzk0OCwgNDc5NTEsIDQ3OTU0LCA0Nzk1NiwgNDc5NTgsIDQ3OTYyLCA0Nzk2NiwgNDc5NzEsIDQ3OTc2LCA0Nzk4MSwgCisgICAgNDc5ODQsIDQ3OTg4LCA0Nzk5MywgNDc5OTYsIDQ4MDAwLCA0ODAwNSwgNDgwMTAsIDQ4MDE1LCA0ODAyMCwgNDgwMjUsIAorICAgIDQ4MDMwLCA0ODAzNSwgNDgwNDAsIDQ4MDQ1LCA0ODA1MCwgNDgwNTUsIDQ4MDYwLCA0ODA2NiwgNDgwNzIsIDQ4MDc4LCAKKyAgICA0ODA4MCwgNDgwODMsIDQ4MDg1LCA0ODA4OCwgNDgwOTAsIDQ4MDkyLCA0ODA5NCwgNDgwOTYsIDQ4MDk4LCA0ODEwMCwgCisgICAgNDgxMDIsIDQ4MTA0LCA0ODEwNiwgNDgxMDgsIDQ4MTEwLCA0ODExMiwgNDgxMTQsIDQ4MTE2LCA0ODExOCwgNDgxMjAsIAorICAgIDQ4MTIyLCA0ODEyNywgNDgxMzIsIDQ4MTM3LCA0ODE0MiwgNDgxNDcsIDQ4MTUyLCA0ODE1NywgNDgxNjIsIDQ4MTY3LCAKKyAgICA0ODE3MiwgNDgxNzcsIDQ4MTgyLCA0ODE4NywgNDgxOTIsIDQ4MTk3LCA0ODIwMiwgNDgyMDcsIDQ4MjEyLCA0ODIxNywgCisgICAgNDgyMjIsIDQ4MjI2LCA0ODIzMCwgNDgyMzQsIDQ4MjQwLCA0ODI0NiwgNDgyNTEsIDQ4MjU2LCA0ODI2MSwgNDgyNjcsIAorICAgIDQ4MjczLCA0ODI3OCwgNDgyODYsIDQ4Mjk0LCA0ODMwMiwgNDgzMTAsIDQ4MzE4LCA0ODMyNiwgNDgzMzQsIDQ4MzQyLCAKKyAgICA0ODM0OCwgNDgzNTMsIDQ4MzU4LCA0ODM2MywgNDgzNjYsIDQ4MzcwLCA0ODM3NCwgNDgzNzgsIDQ4MzgyLCA0ODM4NiwgCisgICAgNDgzOTAsIDQ4Mzk3LCA0ODQwNCwgNDg0MTIsIDQ4NDIwLCA0ODQyNSwgNDg0MzAsIDQ4NDM3LCA0ODQ0NCwgNDg0NTEsIAorICAgIDQ4NDU4LCA0ODQ2MSwgNDg0NjQsIDQ4NDY5LCA0ODQ3MSwgNDg0NzUsIDQ4NDgwLCA0ODQ4MiwgNDg0ODQsIDQ4NDg2LCAKKyAgICA0ODQ4OCwgNDg0OTMsIDQ4NDk2LCA0ODQ5OCwgNDg1MDMsIDQ4NTEwLCA0ODUxNywgNDg1MjAsIDQ4NTI0LCA0ODUyOSwgCisgICAgNDg1MzQsIDQ4NTQyLCA0ODU0OCwgNDg1NTQsIDQ4NTY2LCA0ODU3MywgNDg1ODAsIDQ4NTg1LCA0ODU5MCwgNDg1OTYsIAorICAgIDQ4NTk5LCA0ODYwMiwgNDg2MDcsIDQ4NjA5LCA0ODYxMywgNDg2MTUsIDQ4NjE3LCA0ODYxOSwgNDg2MjEsIDQ4NjIzLCAKKyAgICA0ODYyNSwgNDg2MzAsIDQ4NjMyLCA0ODYzNCwgNDg2MzYsIDQ4NjM4LCA0ODY0MiwgNDg2NDQsIDQ4NjQ3LCA0ODY1MiwgCisgICAgNDg2NTcsIDQ4NjYyLCA0ODY2NywgNDg2NzMsIDQ4Njc5LCA0ODY4MSwgNDg2ODQsIDQ4NjkxLCA0ODY5NywgNDg3MDMsIAorICAgIDQ4NzEwLCA0ODcxNCwgNDg3MTgsIDQ4NzIwLCA0ODcyMiwgNDg3MjYsIDQ4NzMyLCA0ODczNywgNDg3MzksIDQ4NzQzLCAKKyAgICA0ODc1MiwgNDg3NjAsIDQ4NzY4LCA0ODc3NCwgNDg3ODAsIDQ4Nzg1LCA0ODc5MSwgNDg3OTYsIDQ4Nzk5LCA0ODgxMywgCisgICAgNDg4MTYsIDQ4ODIxLCA0ODgyNiwgNDg4MzIsIDQ4ODQyLCA0ODg0NCwgNDg4NTAsIDQ4ODU2LCA0ODg2MCwgNDg4NjcsIAorICAgIDQ4ODcxLCA0ODg3MywgNDg4NzUsIDQ4ODc5LCA0ODg4NSwgNDg4OTAsIDQ4ODk2LCA0ODg5OCwgNDg5MDQsIDQ4OTA2LCAKKyAgICA0ODkxMiwgNDg5MTQsIDQ4OTE2LCA0ODkyMSwgNDg5MjMsIDQ4OTI3LCA0ODkzMiwgNDg5MzQsIDQ4OTM5LCA0ODk0NCwgCisgICAgNDg5NDgsIDQ4OTU1LCA0ODk2NSwgNDg5NzAsIDQ4OTc2LCA0ODk3OSwgNDg5ODUsIDQ4OTg4LCA0ODk5MywgNDg5OTgsIAorICAgIDQ5MDAyLCA0OTAwNCwgNDkwMDYsIDQ5MDEwLCA0OTAxNCwgNDkwMTgsIDQ5MDIyLCA0OTAyNywgNDkwMjksIDQ5MDM0LCAKKyAgICA0OTAzNywgNDkwNDAsIDQ5MDQzLCA0OTA0NywgNDkwNTEsIDQ5MDU2LCA0OTA2MCwgNDkwNjUsIDQ5MDcwLCA0OTA3NCwgCisgICAgNDkwODAsIDQ5MDg3LCA0OTA5MCwgNDkwOTYsIDQ5MTAxLCA0OTEwNSwgNDkxMTAsIDQ5MTE2LCA0OTEyMiwgNDkxMjksIAorICAgIDQ5MTM1LCA0OTE0MiwgNDkxNDksIDQ5MTUxLCA0OTE1OCwgNDkxNjIsIDQ5MTY5LCA0OTE3NSwgNDkxODAsIDQ5MTg2LCAKKyAgICA0OTE5MCwgNDkxOTUsIDQ5MTk4LCA0OTIwNCwgNDkyMTAsIDQ5MjE3LCA0OTIyNSwgNDkyMzIsIDQ5MjQxLCA0OTI1MSwgCisgICAgNDkyNTgsIDQ5MjY0LCA0OTI2OCwgNDkyNzYsIDQ5MjgxLCA0OTI5MCwgNDkyOTMsIDQ5Mjk2LCA0OTMwNSwgNDkzMTYsIAorICAgIDQ5MzIzLCA0OTMyNSwgNDkzMzEsIDQ5MzM2LCA0OTMzOCwgNDkzNDEsIDQ5MzQ1LCA0OTM1MywgNDkzNjIsIDQ5MzY1LCAKKyAgICA0OTM3MCwgNDkzNzUsIDQ5MzgzLCA0OTM5MSwgNDkzOTksIDQ5NDA3LCA0OTQxMywgNDk0MTksIDQ5NDI1LCA0OTQzMywgCisgICAgNDk0MzgsIDQ5NDQxLCA0OTQ0NSwgNDk0NDgsIDQ5NDU5LCA0OTQ2OSwgNDk0NzksIDQ5NDg4LCA0OTQ5OSwgNDk1MDksIAorICAgIDQ5NTE4LCA0OTUyNCwgNDk1MzIsIDQ5NTM2LCA0OTU0NCwgNDk1NDgsIDQ5NTU2LCA0OTU2MywgNDk1NzAsIDQ5NTc5LCAKKyAgICA0OTU4OCwgNDk1OTgsIDQ5NjA4LCA0OTYxOCwgNDk2MjgsIDQ5NjM3LCA0OTY0NiwgNDk2NTYsIDQ5NjY2LCA0OTY3NSwgCisgICAgNDk2ODQsIDQ5NjkwLCA0OTY5NiwgNDk3MDIsIDQ5NzA4LCA0OTcxNCwgNDk3MjAsIDQ5NzI2LCA0OTczMiwgNDk3MzgsIAorICAgIDQ5NzQ1LCA0OTc1MSwgNDk3NTcsIDQ5NzYzLCA0OTc2OSwgNDk3NzUsIDQ5NzgxLCA0OTc4NywgNDk3OTMsIDQ5Nzk5LCAKKyAgICA0OTgwNiwgNDk4MTMsIDQ5ODIwLCA0OTgyNywgNDk4MzQsIDQ5ODQxLCA0OTg0OCwgNDk4NTUsIDQ5ODYyLCA0OTg2OSwgCisgICAgNDk4NzcsIDQ5ODgyLCA0OTg4NSwgNDk4ODksIDQ5ODkzLCA0OTg5OCwgNDk5MDEsIDQ5OTA2LCA0OTkxMiwgNDk5MTcsIAorICAgIDQ5OTIxLCA0OTkyNiwgNDk5MzIsIDQ5OTM5LCA0OTk0MiwgNDk5NDksIDQ5OTU2LCA0OTk2MCwgNDk5NjgsIDQ5OTc2LCAKKyAgICA0OTk4MSwgNDk5ODcsIDQ5OTkyLCA0OTk5NywgNTAwMDQsIDUwMDExLCA1MDAxOSwgNTAwMjcsIDUwMDM2LCA1MDA0MCwgCisgICAgNTAwNDksIDUwMDU0LCA1MDA1OCwgNTAwNjQsIDUwMDY4LCA1MDA3NCwgNTAwODEsIDUwMDg2LCA1MDA5MywgNTAwOTcsIAorICAgIDUwMTAyLCA1MDEwNiwgNTAxMTEsIDUwMTE1LCA1MDEyMCwgNTAxMjUsIDUwMTM0LCA1MDEzNiwgNTAxNDAsIDUwMTQ0LCAKKyAgICA1MDE1MSwgNTAxNTgsIDUwMTY0LCA1MDE3MiwgNTAxNzgsIDUwMTg0LCA1MDE4OSwgNTAxOTIsIDUwMTk3LCA1MDIwMiwgCisgICAgNTAyMDcsIDUwMjE1LCA1MDIxOSwgNTAyMjYsIDUwMjM0LCA1MDI0MiwgNTAyNDcsIDUwMjUyLCA1MDI1OCwgNTAyNjMsIAorICAgIDUwMjY4LCA1MDI3NCwgNTAyNzksIDUwMjgyLCA1MDI4NiwgNTAyOTAsIDUwMjk3LCA1MDMwNiwgNTAzMTEsIDUwMzIwLCAKKyAgICA1MDMyOSwgNTAzMzUsIDUwMzQxLCA1MDM0NiwgNTAzNTEsIDUwMzU2LCA1MDM2MSwgNTAzNjcsIDUwMzczLCA1MDM4MSwgCisgICAgNTAzODksIDUwMzk1LCA1MDQwMSwgNTA0MDUsIDUwNDA5LCA1MDQxNiwgNTA0MjMsIDUwNDI5LCA1MDQzMiwgNTA0MzUsIAorICAgIDUwNDM5LCA1MDQ0MywgNTA0NDcsIDUwNDUyLCA1MDQ1OCwgNTA0NjQsIDUwNDcxLCA1MDQ3OCwgNTA0ODMsIDUwNDg3LCAKKyAgICA1MDQ5MSwgNTA0OTUsIDUwNDk5LCA1MDUwMywgNTA1MDcsIDUwNTExLCA1MDUxNSwgNTA1MTksIDUwNTIzLCA1MDUyNywgCisgICAgNTA1MzEsIDUwNTM1LCA1MDUzOSwgNTA1NDMsIDUwNTQ3LCA1MDU1MSwgNTA1NTUsIDUwNTU5LCA1MDU2MywgNTA1NjcsIAorICAgIDUwNTcxLCA1MDU3NSwgNTA1NzksIDUwNTgzLCA1MDU4NywgNTA1OTEsIDUwNTk1LCA1MDU5OSwgNTA2MDMsIDUwNjA3LCAKKyAgICA1MDYxMSwgNTA2MTUsIDUwNjE5LCA1MDYyMywgNTA2MjcsIDUwNjMxLCA1MDYzNSwgNTA2MzksIDUwNjQzLCA1MDY0NywgCisgICAgNTA2NTEsIDUwNjU1LCA1MDY1OSwgNTA2NjMsIDUwNjY3LCA1MDY3MSwgNTA2NzUsIDUwNjc5LCA1MDY4MywgNTA2ODcsIAorICAgIDUwNjkxLCA1MDY5NSwgNTA2OTksIDUwNzAzLCA1MDcwNywgNTA3MTEsIDUwNzE1LCA1MDcxOSwgNTA3MjMsIDUwNzI3LCAKKyAgICA1MDczMSwgNTA3MzUsIDUwNzM5LCA1MDc0MywgNTA3NDcsIDUwNzUxLCA1MDc1NSwgNTA3NTksIDUwNzYzLCA1MDc2NywgCisgICAgNTA3NzEsIDUwNzc1LCA1MDc3OSwgNTA3ODMsIDUwNzg3LCA1MDc5MSwgNTA3OTUsIDUwNzk5LCA1MDgwMywgNTA4MDcsIAorICAgIDUwODExLCA1MDgxNSwgNTA4MTksIDUwODIzLCA1MDgyNywgNTA4MzEsIDUwODM1LCA1MDgzOSwgNTA4NDMsIDUwODQ3LCAKKyAgICA1MDg1MSwgNTA4NTUsIDUwODU5LCA1MDg2MywgNTA4NjcsIDUwODcxLCA1MDg3NSwgNTA4NzksIDUwODgzLCA1MDg4NywgCisgICAgNTA4OTEsIDUwODk1LCA1MDg5OSwgNTA5MDMsIDUwOTA3LCA1MDkxMSwgNTA5MTUsIDUwOTE5LCA1MDkyMywgNTA5MjcsIAorICAgIDUwOTMxLCA1MDkzNSwgNTA5MzksIDUwOTQzLCA1MDk0NywgNTA5NTEsIDUwOTU1LCA1MDk1OSwgNTA5NjMsIDUwOTY3LCAKKyAgICA1MDk3MSwgNTA5NzUsIDUwOTc5LCA1MDk4MywgNTA5ODcsIDUwOTkxLCA1MDk5NSwgNTA5OTksIDUxMDAzLCA1MTAwNywgCisgICAgNTEwMTEsIDUxMDE1LCA1MTAxOSwgNTEwMjMsIDUxMDI3LCA1MTAzMSwgNTEwMzUsIDUxMDM5LCA1MTA0MywgNTEwNDcsIAorICAgIDUxMDUxLCA1MTA1NSwgNTEwNTksIDUxMDYzLCA1MTA2NywgNTEwNzEsIDUxMDc1LCA1MTA3OSwgNTEwODMsIDUxMDg3LCAKKyAgICA1MTA5MSwgNTEwOTUsIDUxMDk5LCA1MTEwMywgNTExMDcsIDUxMTExLCA1MTExNSwgNTExMTksIDUxMTIzLCA1MTEyNywgCisgICAgNTExMzEsIDUxMTM1LCA1MTEzOSwgNTExNDMsIDUxMTQ3LCA1MTE1MSwgNTExNTUsIDUxMTU5LCA1MTE2MywgNTExNjcsIAorICAgIDUxMTcxLCA1MTE3NSwgNTExNzksIDUxMTgzLCA1MTE4NywgNTExOTEsIDUxMTk1LCA1MTE5OSwgNTEyMDMsIDUxMjA3LCAKKyAgICA1MTIxMSwgNTEyMTUsIDUxMjE5LCA1MTIyMywgNTEyMjcsIDUxMjMxLCA1MTIzNSwgNTEyMzksIDUxMjQzLCA1MTI0NywgCisgICAgNTEyNTEsIDUxMjU1LCA1MTI1OSwgNTEyNjMsIDUxMjY3LCA1MTI3MSwgNTEyNzUsIDUxMjc5LCA1MTI4MywgNTEyODcsIAorICAgIDUxMjkxLCA1MTI5NSwgNTEyOTksIDUxMzAzLCA1MTMwNywgNTEzMTEsIDUxMzE1LCA1MTMxOSwgNTEzMjMsIDUxMzI3LCAKKyAgICA1MTMzMSwgNTEzMzUsIDUxMzM5LCA1MTM0MywgNTEzNDcsIDUxMzUxLCA1MTM1NSwgNTEzNTksIDUxMzYzLCA1MTM2NywgCisgICAgNTEzNzEsIDUxMzc1LCA1MTM3OSwgNTEzODMsIDUxMzg3LCA1MTM5MSwgNTEzOTUsIDUxMzk5LCA1MTQwMywgNTE0MDcsIAorICAgIDUxNDExLCA1MTQxNSwgNTE0MTksIDUxNDIzLCA1MTQyNywgNTE0MzEsIDUxNDM1LCA1MTQzOSwgNTE0NDMsIDUxNDQ3LCAKKyAgICA1MTQ1MSwgNTE0NTUsIDUxNDU5LCA1MTQ2MywgNTE0NjcsIDUxNDcxLCA1MTQ3NSwgNTE0NzksIDUxNDgzLCA1MTQ4NywgCisgICAgNTE0OTEsIDUxNDk1LCA1MTQ5OSwgNTE1MDMsIDUxNTA3LCA1MTUxNCwgNTE1MjIsIDUxNTI4LCA1MTUzNCwgNTE1NDEsIAorICAgIDUxNTQ4LCA1MTU1NCwgNTE1NjAsIDUxNTY1LCA1MTU3MCwgNTE1NzQsIDUxNTc4LCA1MTU4MywgNTE1ODgsIDUxNTk0LCAKKyAgICA1MTYwMCwgNTE2MDgsIDUxNjE1LCA1MTYyMCwgNTE2MjUsIDUxNjMzLCA1MTY0MiwgNTE2NDksIDUxNjU5LCA1MTY3MCwgCisgICAgNTE2NzMsIDUxNjc2LCA1MTY4MCwgNTE2ODQsIDUxNjkxLCA1MTY5OCwgNTE3MDksIDUxNzIwLCA1MTcyOCwgNTE3MzYsIAorICAgIDUxNzQyLCA1MTc0OCwgNTE3NTQsIDUxNzYwLCA1MTc2OSwgNTE3NzgsIDUxNzg3LCA1MTc5NiwgNTE4MDYsIDUxODE2LCAKKyAgICA1MTgyNiwgNTE4MzYsIDUxODQ2LCA1MTg1NiwgNTE4NjYsIDUxODc2LCA1MTg4NSwgNTE4OTUsIDUxOTA1LCA1MTkxNSwgCisgICAgNTE5MjUsIDUxOTMyLCA1MTkzOSwgNTE5NDYsIDUxOTUzLCA1MTk2MywgNTE5NzMsIDUxOTgxLCA1MTk4OSwgNTE5OTYsIAorICAgIDUyMDAzLCA1MjAxMCwgNTIwMTcsIDUyMDI0LCA1MjAyOSwgNTIwMzQsIDUyMDQwLCA1MjA0OCwgNTIwNTcsIDUyMDY1LCAKKyAgICA1MjA3MywgNTIwODEsIDUyMDg5LCA1MjA5NywgNTIxMDUsIDUyMTEzLCA1MjEyMSwgNTIxMzAsIDUyMTM5LCA1MjE0OCwgCisgICAgNTIxNTcsIDUyMTY2LCA1MjE3NSwgNTIxODQsIDUyMTkzLCA1MjIwMiwgNTIyMTEsIDUyMjIwLCA1MjIyOSwgNTIyMzgsIAorICAgIDUyMjQ3LCA1MjI1NiwgNTIyNjUsIDUyMjc5LCA1MjI5NCwgNTIzMDgsIDUyMzIzLCA1MjMzNywgNTIzNTEsIDUyMzY1LCAKKyAgICA1MjM3OSwgNTIzODksIDUyNDAwLCA1MjQxMCwgNTI0MjEsIDUyNDM2LCA1MjQ1MSwgNTI0NTksIDUyNDY1LCA1MjQ3MiwgCisgICAgNTI0NzksIDUyNDg2LCA1MjQ5MywgNTI0OTgsIDUyNTA0LCA1MjUwOSwgNTI1MTQsIDUyNTIwLCA1MjUyNSwgNTI1MzAsIAorICAgIDUyNTM1LCA1MjU0MCwgNTI1NDUsIDUyNTUyLCA1MjU1OCwgNTI1NjYsIDUyNTcxLCA1MjU3NiwgNTI1ODAsIDUyNTg0LCAKKyAgICA1MjU5MiwgNTI2MDAsIDUyNjA4LCA1MjYxNiwgNTI2MjMsIDUyNjMwLCA1MjY0MywgNTI2NTYsIDUyNjY5LCA1MjY4MiwgCisgICAgNTI2OTAsIDUyNjk4LCA1MjcwNCwgNTI3MTAsIDUyNzE3LCA1MjcyNCwgNTI3MzEsIDUyNzM4LCA1Mjc0MiwgNTI3NDcsIAorICAgIDUyNzU1LCA1Mjc2MywgNTI3NzEsIDUyNzc4LCA1Mjc4MiwgNTI3OTAsIDUyNzk4LCA1MjgwMSwgNTI4MDUsIDUyODEwLCAKKyAgICA1MjgxNywgNTI4MjUsIDUyODMzLCA1Mjg1MywgNTI4NzMsIDUyODkzLCA1MjkxMywgNTI5MzMsIDUyOTUzLCA1Mjk3MywgCisgICAgNTI5OTMsIDUyOTk5LCA1MzAwNiwgNTMwMTUsIDUzMDIzLCA1MzAzMSwgNTMwMzYsIDUzMDM5LCA1MzA0MiwgNTMwNDcsIAorICAgIDUzMDUwLCA1MzA2OSwgNTMwNzYsIDUzMDgyLCA1MzA4OCwgNTMwOTIsIDUzMDk1LCA1MzA5OCwgNTMxMDEsIDUzMTEzLCAKKyAgICA1MzEyNiwgNTMxMzMsIDUzMTQwLCA1MzE0MywgNTMxNDcsIDUzMTUwLCA1MzE1NSwgNTMxNjAsIDUzMTY1LCA1MzE3MSwgCisgICAgNTMxODAsIDUzMTg3LCA1MzE5NCwgNTMyMDIsIDUzMjA5LCA1MzIxNiwgNTMyMTksIDUzMjI1LCA1MzIzMSwgNTMyMzQsIAorICAgIDUzMjM3LCA1MzI0MiwgNTMyNDcsIDUzMjUzLCA1MzI1OSwgNTMyNjMsIDUzMjY4LCA1MzI3NSwgNTMyNzksIDUzMjg1LCAKKyAgICA1MzI4OSwgNTMyOTMsIDUzMzAxLCA1MzMxMywgNTMzMjIsIDUzMzI2LCA1MzMyOCwgNTMzMzcsIDUzMzQ2LCA1MzM1MiwgCisgICAgNTMzNTUsIDUzMzYxLCA1MzM2NywgNTMzNzIsIDUzMzc3LCA1MzM4MiwgNTMzODcsIDUzMzkyLCA1MzM5NywgNTMzOTksIAorICAgIDUzNDA1LCA1MzQxMCwgNTM0MTcsIDUzNDIxLCA1MzQyNywgNTM0MzAsIDUzNDM0LCA1MzQ0MSwgNTM0NDgsIDUzNDUwLCAKKyAgICA1MzQ1MiwgNTM0NTgsIDUzNDY0LCA1MzQ3MCwgNTM0NzksIDUzNDg4LCA1MzQ5NSwgNTM1MDIsIDUzNTA4LCA1MzUxNSwgCisgICAgNTM1MjAsIDUzNTI1LCA1MzUzMCwgNTM1MzYsIDUzNTQyLCA1MzU0NywgNTM1NTQsIDUzNTU4LCA1MzU2MiwgNTM1NzUsIAorICAgIDUzNTg4LCA1MzYwMCwgNTM2MDksIDUzNjE1LCA1MzYyMiwgNTM2MjcsIDUzNjMyLCA1MzYzNywgNTM2NDIsIDUzNjQ3LCAKKyAgICA1MzY0OSwgNTM2NTYsIDUzNjY0LCA1MzY3MiwgNTM2ODAsIDUzNjg3LCA1MzY5NSwgNTM3MDEsIDUzNzA2LCA1MzcxMiwgCisgICAgNTM3MTgsIDUzNzI0LCA1MzczMSwgNTM3MzcsIDUzNzQ1LCA1Mzc1MywgNTM3NjEsIDUzNzY5LCA1Mzc3NywgNTM3ODMsIAorICAgIDUzNzg5LCA1Mzc5OCwgNTM4MDIsIDUzODExLCA1MzgyMCwgNTM4MjksIDUzODM3LCA1Mzg0MSwgNTM4NDcsIDUzODU0LCAKKyAgICA1Mzg2MSwgNTM4NjUsIDUzODcxLCA1Mzg3OSwgNTM4ODUsIDUzODkwLCA1Mzg5NiwgNTM5MDEsIDUzOTA2LCA1MzkxMywgCisgICAgNTM5MjAsIDUzOTI1LCA1MzkzMCwgNTM5MzgsIDUzOTQ2LCA1Mzk1NiwgNTM5NjYsIDUzOTczLCA1Mzk4MCwgNTM5ODQsIAorICAgIDUzOTg4LCA1NDAwMCwgNTQwMDYsIDU0MDEzLCA1NDAxOCwgNTQwMjMsIDU0MDMwLCA1NDAzNywgNTQwNDMsIDU0MDQ5LCAKKyAgICA1NDA1OSwgNTQwNjcsIDU0MDc2LCA1NDA4MywgNTQwOTEsIDU0MDk4LCA1NDEwNCwgNTQxMTEsIDU0MTE3LCA1NDEyNSwgCisgICAgNTQxMzMsIDU0MTQxLCA1NDE0OSwgNTQxNTUsIDU0MTYwLCA1NDE2OSwgNTQxNzksIDU0MTg2LCA1NDE5NSwgNTQyMDEsIAorICAgIDU0MjA2LCA1NDIxMSwgNTQyMjEsIDU0MjI4LCA1NDIzNCwgNTQyNDAsIDU0MjQ4LCA1NDI1MywgNTQyNjAsIDU0MjY3LCAKKyAgICA1NDI3OCwgNTQyODUsIDU0MjkyLCA1NDI5OSwgNTQzMDYsIDU0MzEzLCA1NDMyMSwgNTQzMjksIDU0MzQyLCA1NDM1NSwgCisgICAgNTQzNjcsIDU0Mzc5LCA1NDM5MywgNTQ0MDcsIDU0NDEzLCA1NDQxOSwgNTQ0MjgsIDU0NDM3LCA1NDQ0NCwgNTQ0NTEsIAorICAgIDU0NDYwLCA1NDQ2OSwgNTQ0NzgsIDU0NDg3LCA1NDQ5NSwgNTQ1MDMsIDU0NTEzLCA1NDUyMywgNTQ1MzcsIDU0NTUxLCAKKyAgICA1NDU2MCwgNTQ1NjksIDU0NTgyLCA1NDU5NSwgNTQ2MDQsIDU0NjEzLCA1NDYyNCwgNTQ2MzUsIDU0NjQxLCA1NDY0NywgCisgICAgNTQ2NTYsIDU0NjY1LCA1NDY3MCwgNTQ2NzUsIDU0NjgzLCA1NDY4OSwgNTQ2OTUsIDU0NzAzLCA1NDcxMSwgNTQ3MjQsIAorICAgIDU0NzM3LCA1NDc0MSwgNTQ3NDUsIDU0NzUzLCA1NDc2MSwgNTQ3NjgsIDU0Nzc2LCA1NDc4NCwgNTQ3OTMsIDU0ODAyLCAKKyAgICA1NDgwOCwgNTQ4MTQsIDU0ODIxLCA1NDgyOCwgNTQ4MzUsIDU0ODQyLCA1NDg1MSwgNTQ4NjAsIDU0ODYzLCA1NDg2NiwgCisgICAgNTQ4NzEsIDU0ODc2LCA1NDg4MiwgNTQ4ODgsIDU0ODk1LCA1NDkwMiwgNTQ5MTMsIDU0OTI0LCA1NDkzMSwgNTQ5MzgsIAorICAgIDU0OTQ2LCA1NDk1NCwgNTQ5NjIsIDU0OTcwLCA1NDk3OCwgNTQ5ODYsIDU0OTkzLCA1NTAwMCwgNTUwMDQsIDU1MDA4LCAKKyAgICA1NTAxNiwgNTUwMjQsIDU1MDI5LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA1MCwgNTUwNjQsIDU1MDcxLCA1NTA3OCwgCisgICAgNTUwODIsIDU1MDg0LCA1NTA4NiwgNTUwOTEsIDU1MDk2LCA1NTEwMSwgNTUxMDUsIDU1MTEzLCA1NTEyMCwgNTUxMjcsIAorICAgIDU1MTM1LCA1NTE0NywgNTUxNTUsIDU1MTYzLCA1NTE3NCwgNTUxNzgsIDU1MTgyLCA1NTE4OCwgNTUxOTYsIDU1MjA5LCAKKyAgICA1NTIxNiwgNTUyMjMsIDU1MjMwLCA1NTIzNSwgNTUyNDIsIDU1MjUxLCA1NTI1OSwgNTUyNjUsIDU1MjcxLCA1NTI3NywgCisgICAgNTUyODcsIDU1Mjk3LCA1NTMwNSwgNTUzMTQsIDU1MzE5LCA1NTMyMiwgNTUzMjcsIDU1MzMyLCA1NTMzNywgNTUzNDIsIAorICAgIDU1MzQ3LCA1NTM1MSwgNTUzNTQsIDU1MzU3LCA1NTM2MCwgNTUzNjUsIDU1MzcwLCA1NTM3NSwgNTUzODAsIDU1Mzg0LCAKKyAgICA1NTM4OCwgNTUzOTUsIDU1NDAyLCA1NTQwOSwgNTU0MTYsIDU1NDIzLCA1NTQzMCwgNTU0NDAsIDU1NDUwLCA1NTQ1NywgCisgICAgNTU0NjQsIDU1NDcyLCA1NTQ4MCwgNTU0ODQsIDU1NDg5LCA1NTQ5NCwgNTU1MDAsIDU1NTA2LCA1NTUwOSwgNTU1MTIsIAorICAgIDU1NTE1LCA1NTUxOCwgNTU1MjIsIDU1NTI3LCA1NTUzMiwgNTU1MzcsIDU1NTQyLCA1NTU0NywgNTU1NTEsIDU1NTU1LCAKKyAgICA1NTU1OSwgNTU1NjMsIDU1NTY3LCA1NTU3MSwgNTU1NzUsIDU1NTgxLCA1NTU4NSwgNTU1OTEsIDU1NTk2LCA1NTYwMywgCisgICAgNTU2MTEsIDU1NjE4LCA1NTYyNiwgNTU2MzMsIDU1NjQxLCA1NTY1MCwgNTU2NTcsIDU1NjY3LCA1NTY3OCwgNTU2ODQsIAorICAgIDU1NjkzLCA1NTY5OSwgNTU3MDgsIDU1NzE3LCA1NTcyMywgNTU3MjksIDU1NzMzLCA1NTczNywgNTU3NDYsIDU1NzU1LCAKKyAgICA1NTc2MiwgNTU3NjksIDU1Nzc4LCA1NTc4NywgNTU3OTMsIDU1Nzk5LCA1NTgwNSwgNTU4MTAsIDU1ODE0LCA1NTgxOCwgCisgICAgNTU4MjMsIDU1ODI4LCA1NTgzMywgNTU4NDEsIDU1ODQ5LCA1NTg1MiwgNTU4NTYsIDU1ODY1LCA1NTg3NCwgNTU4ODIsIAorICAgIDU1ODkwLCA1NTkwMSwgNTU5MTQsIDU1OTE4LCA1NTkyMiwgNTU5MjYsIDU1OTMwLCA1NTkzNSwgNTU5NDAsIDU1OTQ2LCAKKyAgICA1NTk1MiwgNTU5NTgsIDU1OTY0LCA1NTk3MCwgNTU5NzYsIDU1OTgyLCA1NTk4OCwgNTU5OTcsIDU2MDA2LCA1NjAxMywgCisgICAgNTYwMjAsIDU2MDI3LCAwLCAwLCA1NjAzNCwgNTYwNDMsIDU2MDUyLCA1NjA2MSwgNTYwNzAsIDU2MDc4LCA1NjA4NiwgCisgICAgNTYwOTQsIDU2MTAyLCA1NjEwNywgNTYxMTIsIDU2MTIxLCA1NjEzMSwgNTYxNDAsIDU2MTUwLCA1NjE1NywgNTYxNjQsIAorICAgIDU2MTcxLCA1NjE3OCwgNTYxODMsIDU2MTg4LCA1NjE5MywgNTYxOTgsIDU2MjA2LCA1NjIxNSwgNTYyMjMsIDU2MjMyLCAKKyAgICA1NjIzNiwgNTYyNDAsIDU2MjQ0LCA1NjI0OCwgNTYyNTgsIDAsIDAsIDU2MjYxLCA1NjI3MCwgNTYyNzksIDU2Mjg4LCAKKyAgICA1NjI5NywgNTYzMDMsIDU2MzA5LCA1NjMxNSwgNTYzMjEsIDU2MzMxLCA1NjM0MSwgNTYzNTEsIDU2MzYxLCA1NjM3MSwgCisgICAgNTYzODEsIDU2MzkxLCA1NjQwMSwgNTY0MDgsIDU2NDE1LCA1NjQyMiwgNTY0MjksIDU2NDM2LCA1NjQ0MywgNTY0NTAsIAorICAgIDU2NDU3LCA1NjQ2MywgNTY0NjksIDU2NDc1LCA1NjQ4MSwgNTY0ODcsIDU2NDkzLCA1NjQ5OSwgNTY1MDUsIDU2NTE1LCAwLCAKKyAgICAwLCAwLCA1NjUyNSwgNTY1MzIsIDU2NTM1LCA1NjUzOSwgNTY1NDMsIDU2NTQ4LCA1NjU1MiwgNTY1NTYsIDU2NTU5LCAKKyAgICA1NjU2OCwgNTY1NzcsIDU2NTg2LCAwLCA1NjU5NSwgNTY2MDEsIDU2NjA3LCA1NjYxNSwgNTY2MjUsIDU2NjMyLCA1NjY0MSwgCisgICAgNTY2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU2NjQ5LCA1NjY1NCwgNTY2NTksIDU2NjY0LCA1NjY2OSwgNTY2NzQsIDU2Njc5LCA1NjY4NCwgNTY2ODksIDU2Njk0LCAKKyAgICA1NjY5OSwgNTY3MDUsIDU2NzA5LCA1NjcxNCwgNTY3MTksIDU2NzI0LCA1NjcyOSwgNTY3MzQsIDU2NzM5LCA1Njc0NCwgCisgICAgNTY3NDksIDU2NzU0LCA1Njc1OSwgNTY3NjQsIDU2NzY5LCA1Njc3NCwgNTY3NzksIDU2Nzg0LCA1Njc4OSwgNTY3OTQsIAorICAgIDU2Nzk5LCA1NjgwNCwgNTY4MDksIDU2ODE0LCA1NjgxOSwgNTY4MjUsIDU2ODMwLCA1NjgzNiwgNTY4NDUsIDU2ODUwLCAKKyAgICA1Njg1OCwgNTY4NjUsIDU2ODc0LCA1Njg3OSwgNTY4ODQsIDU2ODg5LCA1Njg5NSwgMCwgNTY5MDIsIDU2OTA3LCA1NjkxMiwgCisgICAgNTY5MTcsIDU2OTIyLCA1NjkyNywgNTY5MzIsIDU2OTM3LCA1Njk0MiwgNTY5NDcsIDU2OTUyLCA1Njk1OCwgNTY5NjIsIAorICAgIDU2OTY3LCA1Njk3MiwgNTY5NzcsIDU2OTgyLCA1Njk4NywgNTY5OTIsIDU2OTk3LCA1NzAwMiwgNTcwMDcsIDU3MDEyLCAKKyAgICA1NzAxNywgNTcwMjIsIDU3MDI3LCA1NzAzMiwgNTcwMzcsIDU3MDQyLCA1NzA0NywgNTcwNTIsIDU3MDU3LCA1NzA2MiwgCisgICAgNTcwNjcsIDU3MDcyLCA1NzA3OCwgNTcwODMsIDU3MDg5LCA1NzA5OCwgNTcxMDMsIDU3MTExLCA1NzExOCwgNTcxMjcsIAorICAgIDU3MTMyLCA1NzEzNywgNTcxNDIsIDU3MTQ4LCAwLCA1NzE1NSwgNTcxNjMsIDU3MTcxLCA1NzE4MSwgNTcxODgsIDU3MTk2LCAKKyAgICA1NzIwMiwgNTcyMTEsIDU3MjE5LCA1NzIyNywgNTcyMzUsIDU3MjQzLCA1NzI1MSwgNTcyNTksIDU3MjY0LCA1NzI3MSwgCisgICAgNTcyNzYsIDU3MjgyLCA1NzI5MCwgNTcyOTcsIDU3MzA0LCA1NzMxMiwgNTczMTgsIDU3MzI0LCA1NzMzMSwgNTczMzgsIAorICAgIDU3MzQ3LCA1NzM1NywgNTczNjMsIDU3MzcwLCA1NzM3NSwgNTczODUsIDU3Mzk1LCA1NzQwMCwgNTc0MDUsIDU3NDEwLCAKKyAgICA1NzQxNSwgNTc0MjAsIDU3NDI1LCA1NzQzMCwgNTc0MzUsIDU3NDQwLCA1NzQ0NSwgNTc0NTAsIDU3NDU1LCA1NzQ2MCwgCisgICAgNTc0NjUsIDU3NDcwLCA1NzQ3NSwgNTc0ODAsIDU3NDg1LCA1NzQ5MCwgNTc0OTUsIDU3NTAwLCA1NzUwNSwgNTc1MTAsIAorICAgIDU3NTE1LCA1NzUyMCwgNTc1MjUsIDU3NTMwLCA1NzUzNSwgNTc1NDAsIDU3NTQ1LCA1NzU0OSwgNTc1NTMsIDU3NTU4LCAKKyAgICA1NzU2MywgNTc1NjgsIDU3NTczLCA1NzU3OCwgNTc1ODMsIDU3NTg4LCA1NzU5MywgNTc1OTgsIDU3NjAzLCA1NzYwOCwgCisgICAgNTc2MTMsIDU3NjE4LCA1NzYyMywgNTc2MjgsIDU3NjMzLCA1NzYzOCwgNTc2NDMsIDU3NjUwLCA1NzY1NywgNTc2NjQsIAorICAgIDU3NjcxLCA1NzY3OCwgNTc2ODUsIDU3NjkyLCA1NzY5OSwgNTc3MDYsIDU3NzEzLCA1NzcyMCwgNTc3MjcsIDU3NzM0LCAKKyAgICA1Nzc0MSwgNTc3NDYsIDU3NzUxLCA1Nzc1OCwgNTc3NjUsIDU3NzcyLCA1Nzc3OSwgNTc3ODYsIDU3NzkzLCA1NzgwMCwgCisgICAgNTc4MDcsIDU3ODE0LCA1NzgyMSwgNTc4MjgsIDU3ODM1LCA1Nzg0MSwgNTc4NDcsIDU3ODUzLCA1Nzg1OSwgNTc4NjYsIAorICAgIDU3ODczLCA1Nzg4MCwgNTc4ODcsIDU3ODk0LCA1NzkwMSwgNTc5MDgsIDU3OTE1LCA1NzkyMiwgNTc5MjksIDU3OTM3LCAKKyAgICA1Nzk0NSwgNTc5NTMsIDU3OTYxLCA1Nzk2OSwgNTc5NzcsIDU3OTg1LCA1Nzk5MywgNTc5OTcsIDU4MDAzLCA1ODAwOSwgCisgICAgNTgwMTMsIDU4MDE5LCA1ODAyNSwgNTgwMzEsIDU4MDM4LCA1ODA0NSwgNTgwNTIsIDU4MDU5LCA1ODA2NCwgNTgwNzAsIAorICAgIDU4MDc2LCA1ODA4MywgMCwgMCwgMCwgMCwgMCwgNTgwOTAsIDU4MDk4LCA1ODEwNywgNTgxMTYsIDU4MTI0LCA1ODEzMCwgCisgICAgNTgxMzUsIDU4MTQwLCA1ODE0NSwgNTgxNTAsIDU4MTU1LCA1ODE2MCwgNTgxNjUsIDU4MTcwLCA1ODE3NSwgNTgxODAsIAorICAgIDU4MTg1LCA1ODE5MCwgNTgxOTUsIDU4MjAwLCA1ODIwNSwgNTgyMTAsIDU4MjE1LCA1ODIyMCwgNTgyMjUsIDU4MjMwLCAKKyAgICA1ODIzNSwgNTgyNDAsIDU4MjQ1LCA1ODI1MCwgNTgyNTUsIDU4MjYwLCA1ODI2NSwgNTgyNzAsIDU4Mjc1LCA1ODI4MCwgCisgICAgNTgyODUsIDU4MjkwLCA1ODI5NSwgNTgzMDAsIDU4MzA1LCA1ODMxMCwgNTgzMTUsIDU4MzIwLCA1ODMyNSwgMCwgNTgzMzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU4MzM1LCAwLCAwLCA1ODM0MCwgNTgzNDQsIDU4MzQ5LCA1ODM1NCwgNTgzNTksIDU4MzY0LCAKKyAgICA1ODM3MywgNTgzNzgsIDU4MzgzLCA1ODM4OCwgNTgzOTMsIDU4Mzk4LCA1ODQwMywgNTg0MDgsIDU4NDEzLCA1ODQyMCwgCisgICAgNTg0MjUsIDU4NDMwLCA1ODQzOSwgNTg0NDYsIDU4NDUxLCA1ODQ1NiwgNTg0NjEsIDU4NDY4LCA1ODQ3MywgNTg0ODAsIAorICAgIDU4NDg1LCA1ODQ5MCwgNTg0OTcsIDU4NTA0LCA1ODUwOSwgNTg1MTQsIDU4NTE5LCA1ODUyNiwgNTg1MzMsIDU4NTM4LCAKKyAgICA1ODU0MywgNTg1NDgsIDU4NTUzLCA1ODU1OCwgNTg1NjUsIDU4NTcyLCA1ODU3NywgNTg1ODIsIDU4NTg3LCA1ODU5MiwgCisgICAgNTg1OTcsIDU4NjAyLCA1ODYwNywgNTg2MTIsIDU4NjE3LCA1ODYyMiwgNTg2MjcsIDU4NjM0LCA1ODYzOSwgNTg2NDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU4NjQ5LCA1ODY1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTg2NjEsIDU4NjY2LCA1ODY3MCwgNTg2NzQsIDU4Njc4LCA1ODY4MiwgNTg2ODYsIDU4NjkwLCA1ODY5NCwgNTg2OTgsIAorICAgIDU4NzAyLCA1ODcwNiwgNTg3MTIsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDU4NzI4LCA1ODczMiwgNTg3MzYsIDU4NzQwLCAKKyAgICA1ODc0NCwgNTg3NDgsIDU4NzUyLCA1ODc1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3NjAsIDU4NzY0LCAKKyAgICA1ODc2OCwgNTg3NzIsIDU4Nzc2LCA1ODc4MCwgNTg3ODQsIDAsIDU4Nzg4LCA1ODc5MiwgNTg3OTYsIDU4ODAwLCA1ODgwNCwgCisgICAgNTg4MDgsIDU4ODEyLCAwLCA1ODgxNiwgNTg4MjAsIDU4ODI0LCA1ODgyOCwgNTg4MzIsIDU4ODM2LCA1ODg0MCwgMCwgCisgICAgNTg4NDQsIDU4ODQ4LCA1ODg1MiwgNTg4NTYsIDU4ODYwLCA1ODg2NCwgNTg4NjgsIDAsIDU4ODcyLCA1ODg3NiwgNTg4ODAsIAorICAgIDU4ODg0LCA1ODg4OCwgNTg4OTIsIDU4ODk2LCAwLCA1ODkwMCwgNTg5MDQsIDU4OTA4LCA1ODkxMiwgNTg5MTYsIDU4OTIwLCAKKyAgICA1ODkyNCwgMCwgNTg5MjgsIDU4OTMyLCA1ODkzNiwgNTg5NDAsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDAsIDU4OTU2LCAKKyAgICA1ODk2MCwgNTg5NjQsIDU4OTY4LCA1ODk3MiwgNTg5NzYsIDU4OTgwLCAwLCA1ODk4NCwgNTg5ODksIDU4OTk0LCA1ODk5OSwgCisgICAgNTkwMDQsIDU5MDA5LCA1OTAxNCwgNTkwMTgsIDU5MDIzLCA1OTAyOCwgNTkwMzMsIDU5MDM3LCA1OTA0MiwgNTkwNDcsIAorICAgIDU5MDUyLCA1OTA1NywgNTkwNjEsIDU5MDY2LCA1OTA3MSwgNTkwNzYsIDU5MDgxLCA1OTA4NiwgNTkwOTEsIDU5MDk1LCAKKyAgICA1OTEwMCwgNTkxMDUsIDU5MTEyLCA1OTExNywgNTkxMjIsIDU5MTI4LCA1OTEzNSwgNTkxNDIsIDU5MTUxLCA1OTE1OCwgCisgICAgNTkxNjcsIDU5MTcxLCA1OTE3NSwgNTkxODEsIDU5MTg3LCA1OTE5MywgNTkyMDEsIDU5MjA3LCA1OTIxMSwgNTkyMTUsIAorICAgIDU5MjE5LCA1OTIyNSwgNTkyMzEsIDU5MjM1LCA1OTIzNywgNTkyNDEsIDU5MjQ3LCA1OTI0OSwgNTkyNTMsIDU5MjU2LCAKKyAgICA1OTI1OSwgNTkyNjUsIDU5MjcwLCA1OTI3NCwgNTkyNzgsIDU5MjgzLCA1OTI4OSwgNTkyOTQsIDU5Mjk5LCA1OTMwNCwgCisgICAgNTkzMDksIDU5MzE2LCA1OTMyMywgNTkzMjgsIDU5MzMzLCA1OTMzOCwgNTkzNDMsIDU5MzQ4LCA1OTM1MywgNTkzNTcsIAorICAgIDU5MzYxLCA1OTM2OCwgNTkzNzUsIDU5MzgxLCA1OTM4NSwgNTkzOTAsIDU5MzkzLCA1OTM5NywgNTk0MDUsIDU5NDA4LCAKKyAgICA1OTQxMiwgNTk0MTYsIDU5NDE5LCA1OTQyNSwgNTk0MzEsIDU5NDM0LCA1OTQ0MCwgNTk0NDQsIDU5NDQ4LCA1OTQ1NCwgCisgICAgNTk0NTksIDU5NDY0LCA1OTQ2NiwgNTk0NjksIDU5NDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTQ3OSwgNTk0ODMsIDU5NDg3LCA1OTQ5MiwgNTk0OTcsIDU5NTAyLCA1OTUwNiwgNTk1MTAsIDU5NTE0LCA1OTUxOSwgCisgICAgNTk1MjQsIDU5NTI4LCA1OTUzMiwgNTk1MzYsIDU5NTQwLCA1OTU0NSwgNTk1NTAsIDU5NTU1LCA1OTU2MCwgNTk1NjQsIAorICAgIDU5NTY4LCA1OTU3MywgNTk1NzgsIDU5NTgzLCA1OTU4OCwgNTk1OTIsIDAsIDU5NTk2LCA1OTYwMCwgNTk2MDQsIDU5NjA4LCAKKyAgICA1OTYxMiwgNTk2MTYsIDU5NjIwLCA1OTYyNSwgNTk2MzAsIDU5NjM0LCA1OTYzOSwgNTk2NDQsIDU5NjUzLCA1OTY1NywgCisgICAgNTk2NjEsIDU5NjY1LCA1OTY3MiwgNTk2NzYsIDU5NjgxLCA1OTY4NiwgNTk2OTAsIDU5Njk0LCA1OTcwMCwgNTk3MDUsIAorICAgIDU5NzEwLCA1OTcxNSwgNTk3MjAsIDU5NzI0LCA1OTcyOCwgNTk3MzIsIDU5NzM2LCA1OTc0MCwgNTk3NDUsIDU5NzUwLCAKKyAgICA1OTc1NCwgNTk3NTgsIDU5NzYzLCA1OTc2OCwgNTk3NzMsIDU5Nzc3LCA1OTc4MSwgNTk3ODYsIDU5NzkxLCA1OTc5NywgCisgICAgNTk4MDMsIDU5ODA3LCA1OTgxMywgNTk4MTksIDU5ODIzLCA1OTgyOSwgNTk4MzUsIDU5ODQwLCA1OTg0NSwgNTk4NDksIAorICAgIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY5LCA1OTg3NSwgNTk4ODAsIDU5ODg1LCA1OTg4OSwgNTk4OTMsIDU5OTAxLCAKKyAgICA1OTkwNywgNTk5MTMsIDU5OTE5LCA1OTkyNCwgNTk5MjksIDU5OTM0LCA1OTk0MCwgNTk5NDQsIDU5OTUwLCA1OTk1NCwgCisgICAgNTk5NTgsIDU5OTY0LCA1OTk3MCwgNTk5NzYsIDU5OTgyLCA1OTk4OCwgNTk5OTQsIDYwMDAwLCA2MDAwNiwgNjAwMTIsIAorICAgIDYwMDE4LCA2MDAyNCwgNjAwMzAsIDYwMDM0LCA2MDA0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjAwNDYsIDYwMDQ5LCA2MDA1MywgNjAwNTcsIDYwMDYxLCA2MDA2NSwgNjAwNjgsIDYwMDcxLCA2MDA3NSwgNjAwNzksIAorICAgIDYwMDgzLCA2MDA4NywgNjAwOTAsIDYwMDk1LCA2MDA5OSwgNjAxMDMsIDYwMTA3LCA2MDExMywgNjAxMTcsIDYwMTIxLCAKKyAgICA2MDEyNSwgNjAxMjksIDYwMTM2LCA2MDE0MiwgNjAxNDYsIDYwMTUwLCA2MDE1NCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgCisgICAgNjAxNzAsIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg2LCA2MDE5MiwgNjAxOTYsIDYwMjAwLCA2MDIwNCwgNjAyMDgsIAorICAgIDYwMjEyLCA2MDIxNiwgNjAyMjAsIDYwMjI0LCA2MDIyOCwgNjAyMzIsIDYwMjM2LCA2MDI0MCwgNjAyNDQsIDYwMjQ4LCAKKyAgICA2MDI1MiwgNjAyNTYsIDYwMjYyLCA2MDI2OCwgNjAyNzMsIDYwMjc4LCA2MDI4MiwgNjAyODYsIDYwMjkwLCA2MDI5NCwgCisgICAgNjAyOTgsIDYwMzAyLCA2MDMwNiwgNjAzMTAsIDYwMzE0LCA2MDMxOCwgNjAzMjIsIDYwMzI2LCA2MDMzMCwgNjAzMzQsIAorICAgIDYwMzM4LCA2MDM0MiwgNjAzNDYsIDYwMzUwLCA2MDM1NCwgNjAzNTgsIDYwMzYyLCA2MDM2NiwgNjAzNzAsIDYwMzc0LCAKKyAgICA2MDM4MCwgNjAzODQsIDYwMzg4LCA2MDM5MiwgNjAzOTYsIDYwNDAwLCA2MDQwNCwgNjA0MDgsIDYwNDEyLCA2MDQxNywgCisgICAgNjA0MjQsIDYwNDI4LCA2MDQzMiwgNjA0MzYsIDYwNDQwLCA2MDQ0NCwgNjA0NDgsIDYwNDUyLCA2MDQ1NiwgNjA0NjAsIAorICAgIDYwNDY0LCA2MDQ2OCwgNjA0NzIsIDYwNDc5LCA2MDQ4MywgNjA0ODksIDYwNDkzLCA2MDQ5NywgNjA1MDEsIDYwNTA1LCAKKyAgICA2MDUwOSwgNjA1MTIsIDYwNTE2LCA2MDUyMCwgNjA1MjQsIDYwNTI4LCA2MDUzMiwgNjA1MzYsIDYwNTQwLCA2MDU0NCwgCisgICAgNjA1NDgsIDYwNTUyLCA2MDU1NiwgNjA1NjAsIDYwNTY0LCA2MDU2OCwgNjA1NzIsIDYwNTc2LCA2MDU4MCwgNjA1ODQsIAorICAgIDYwNTg4LCA2MDU5MiwgNjA1OTYsIDYwNjAwLCA2MDYwNCwgNjA2MDgsIDYwNjEyLCA2MDYxNiwgNjA2MjAsIDYwNjI0LCAKKyAgICA2MDYyOCwgNjA2MzIsIDYwNjM2LCA2MDY0MCwgNjA2NDYsIDYwNjUwLCA2MDY1NCwgNjA2NTgsIDYwNjYyLCA2MDY2NiwgCisgICAgNjA2NzAsIDYwNjc0LCA2MDY3OCwgNjA2ODIsIDYwNjg2LCA2MDY5MCwgNjA2OTQsIDYwNjk4LCA2MDcwMiwgNjA3MDYsIAorICAgIDYwNzEwLCA2MDcxNCwgNjA3MTgsIDYwNzIyLCA2MDcyNiwgNjA3MzAsIDYwNzM0LCA2MDczOCwgNjA3NDIsIDYwNzQ2LCAKKyAgICA2MDc1MCwgNjA3NTQsIDYwNzYyLCA2MDc2NiwgNjA3NzAsIDYwNzc0LCA2MDc3OCwgNjA3ODIsIDYwNzg4LCA2MDc5MiwgCisgICAgNjA3OTYsIDYwODAwLCA2MDgwNCwgNjA4MDgsIDYwODEyLCA2MDgxNiwgNjA4MjAsIDYwODI0LCA2MDgyOCwgNjA4MzIsIAorICAgIDYwODM2LCA2MDg0MCwgNjA4NDYsIDYwODUwLCA2MDg1NCwgNjA4NTgsIDYwODYyLCA2MDg2NiwgNjA4NzAsIDYwODc0LCAKKyAgICA2MDg3OCwgNjA4ODIsIDYwODg2LCA2MDg5MCwgNjA4OTQsIDYwODk4LCA2MDkwMiwgNjA5MDYsIDYwOTEwLCA2MDkxNCwgCisgICAgNjA5MTgsIDYwOTIyLCA2MDkyNiwgNjA5MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOTM0LCA2MDk0MywgNjA5NTEsIDYwOTYzLCA2MDk3NCwgCisgICAgNjA5ODIsIDYwOTkxLCA2MTAwMCwgNjEwMTAsIDYxMDIyLCA2MTAzNCwgNjEwNDYsIDAsIDAsIDAsIDAsIDYxMDUyLCAKKyAgICA2MTA1NSwgNjEwNTgsIDYxMDYzLCA2MTA2NiwgNjEwNzMsIDYxMDc3LCA2MTA4MSwgNjEwODUsIDYxMDg5LCA2MTA5MywgCisgICAgNjEwOTgsIDYxMTAzLCA2MTEwNywgNjExMTEsIDYxMTE2LCA2MTEyMSwgNjExMjYsIDYxMTMxLCA2MTEzNCwgNjExMzcsIAorICAgIDYxMTQzLCA2MTE0OSwgNjExNTQsIDYxMTU5LCA2MTE2NiwgNjExNzMsIDYxMTc3LCA2MTE4MSwgNjExODUsIDYxMTkzLCAKKyAgICA2MTE5OSwgNjEyMDYsIDYxMjExLCA2MTIxNiwgNjEyMjEsIDYxMjI2LCA2MTIzMSwgNjEyMzYsIDYxMjQxLCA2MTI0NiwgCisgICAgNjEyNTEsIDYxMjU2LCA2MTI2MSwgNjEyNjYsIDYxMjcxLCA2MTI3NiwgNjEyODIsIDYxMjg3LCA2MTI5MSwgNjEyOTcsIAorICAgIDYxMzA4LCA2MTMxOCwgNjEzMzMsIDYxMzQzLCA2MTM0NywgNjEzNTcsIDYxMzYzLCA2MTM2OSwgNjEzNzUsIDYxMzgwLCAKKyAgICA2MTM4MywgNjEzODgsIDYxMzkyLCAwLCA2MTM5OCwgNjE0MDIsIDYxNDA1LCA2MTQwOSwgNjE0MTIsIDYxNDE2LCA2MTQxOSwgCisgICAgNjE0MjMsIDYxNDI2LCA2MTQzMCwgNjE0MzMsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ4LCA2MTQ1MiwgNjE0NTYsIAorICAgIDYxNDYwLCA2MTQ2NCwgNjE0NjgsIDYxNDcyLCA2MTQ3NiwgNjE0ODAsIDYxNDg0LCA2MTQ4OCwgNjE0OTIsIDYxNDk2LCAKKyAgICA2MTUwMCwgNjE1MDQsIDYxNTA4LCA2MTUxMiwgNjE1MTYsIDYxNTIwLCA2MTUyNCwgNjE1MjgsIDYxNTMzLCA2MTUzNywgCisgICAgNjE1NDEsIDYxNTQ1LCA2MTU0OSwgNjE1NTIsIDYxNTU2LCA2MTU1OSwgNjE1NjMsIDYxNTY3LCA2MTU3MSwgNjE1NzUsIAorICAgIDYxNTc4LCA2MTU4MiwgNjE1ODUsIDYxNTg5LCA2MTU5MywgNjE1OTcsIDYxNjAxLCA2MTYwNSwgNjE2MDksIDYxNjEzLCAKKyAgICA2MTYxNywgNjE2MjEsIDYxNjI1LCA2MTYyOSwgNjE2MzMsIDYxNjM2LCA2MTY0MCwgNjE2NDQsIDYxNjQ4LCA2MTY1MiwgCisgICAgNjE2NTYsIDYxNjU5LCA2MTY2NCwgNjE2NjgsIDYxNjczLCA2MTY3NywgNjE2ODEsIDYxNjg1LCA2MTY4OSwgNjE2OTMsIAorICAgIDYxNjk3LCA2MTcwMiwgNjE3MDYsIDYxNzEwLCA2MTcxNCwgNjE3MTgsIDYxNzIyLCA2MTcyNiwgNjE3MzAsIDAsIDAsIAorICAgIDYxNzM1LCA2MTc0MywgNjE3NTEsIDYxNzU4LCA2MTc2NSwgNjE3NjksIDYxNzc1LCA2MTc4MCwgNjE3ODUsIDYxNzg5LCAKKyAgICA2MTc5MiwgNjE3OTYsIDYxNzk5LCA2MTgwMywgNjE4MDYsIDYxODEwLCA2MTgxMywgNjE4MTcsIDYxODIwLCA2MTgyMywgCisgICAgNjE4MjcsIDYxODMxLCA2MTgzNSwgNjE4MzksIDYxODQzLCA2MTg0NywgNjE4NTEsIDYxODU1LCA2MTg1OSwgNjE4NjMsIAorICAgIDYxODY3LCA2MTg3MSwgNjE4NzUsIDYxODc5LCA2MTg4MywgNjE4ODcsIDYxODkxLCA2MTg5NSwgNjE4OTksIDYxOTAzLCAKKyAgICA2MTkwNywgNjE5MTEsIDYxOTE1LCA2MTkyMCwgNjE5MjQsIDYxOTI4LCA2MTkzMiwgNjE5MzYsIDYxOTM5LCA2MTk0MywgCisgICAgNjE5NDYsIDYxOTUwLCA2MTk1NCwgNjE5NTgsIDYxOTYyLCA2MTk2NSwgNjE5NjksIDYxOTcyLCA2MTk3NiwgNjE5ODAsIAorICAgIDYxOTg0LCA2MTk4OCwgNjE5OTIsIDYxOTk2LCA2MjAwMCwgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIDYyMDIwLCAKKyAgICA2MjAyMywgNjIwMjcsIDYyMDMxLCA2MjAzNSwgNjIwMzksIDYyMDQzLCA2MjA0NiwgNjIwNTEsIDYyMDU1LCA2MjA2MCwgCisgICAgNjIwNjQsIDYyMDY4LCA2MjA3MiwgNjIwNzYsIDYyMDgwLCA2MjA4NCwgNjIwODksIDYyMDkzLCA2MjA5NywgNjIxMDEsIAorICAgIDYyMTA1LCA2MjEwOSwgNjIxMTMsIDYyMTE3LCA2MjEyMiwgNjIxMjYsIDYyMTMwLCA2MjEzNCwgNjIxMzgsIDYyMTQzLCAKKyAgICA2MjE1MCwgNjIxNTQsIDYyMTYwLCAwLCAwLCAwLCAwLCAwLCA2MjE2NSwgNjIxNzAsIDYyMTc1LCA2MjE4MCwgNjIxODUsIAorICAgIDYyMTkwLCA2MjE5NSwgNjIyMDAsIDYyMjA0LCA2MjIwOSwgNjIyMTQsIDYyMjE5LCA2MjIyNCwgNjIyMjksIDYyMjM0LCAKKyAgICA2MjIzOSwgNjIyNDQsIDYyMjQ5LCA2MjI1MywgNjIyNTgsIDYyMjYzLCA2MjI2NywgNjIyNzEsIDYyMjc1LCA2MjI3OSwgCisgICAgNjIyODQsIDYyMjg5LCA2MjI5NCwgNjIyOTksIDYyMzA0LCA2MjMwOSwgNjIzMTQsIDYyMzE5LCA2MjMyNCwgNjIzMjksIAorICAgIDYyMzMzLCA2MjMzNywgNjIzNDIsIDYyMzQ3LCA2MjM1MiwgNjIzNTcsIDAsIDAsIDAsIDYyMzYyLCA2MjM2NiwgNjIzNzAsIAorICAgIDYyMzc0LCA2MjM3OCwgNjIzODIsIDYyMzg2LCA2MjM5MCwgNjIzOTQsIDYyMzk4LCA2MjQwMiwgNjI0MDYsIDYyNDEwLCAKKyAgICA2MjQxNCwgNjI0MTgsIDYyNDIyLCA2MjQyNiwgNjI0MzAsIDYyNDM0LCA2MjQzOCwgNjI0NDIsIDYyNDQ2LCA2MjQ1MCwgCisgICAgNjI0NTQsIDYyNDU4LCA2MjQ2MiwgNjI0NjYsIDYyNDcwLCA2MjQ3NCwgNjI0NzgsIDYyNDgyLCA2MjQ4NSwgNjI0ODksIAorICAgIDYyNDkyLCA2MjQ5NiwgNjI1MDAsIDYyNTAzLCA2MjUwNywgNjI1MTEsIDYyNTE0LCA2MjUxOCwgNjI1MjIsIDYyNTI2LCAKKyAgICA2MjUzMCwgNjI1MzMsIDYyNTM3LCA2MjU0MSwgNjI1NDUsIDYyNTQ5LCA2MjU1MywgNjI1NTcsIDYyNTYwLCA2MjU2MywgCisgICAgNjI1NjcsIDYyNTcxLCA2MjU3NSwgNjI1NzksIDYyNTgzLCA2MjU4NywgNjI1OTEsIDYyNTk1LCA2MjU5OSwgNjI2MDMsIAorICAgIDYyNjA3LCA2MjYxMSwgNjI2MTUsIDYyNjE5LCA2MjYyMywgNjI2MjcsIDYyNjMxLCA2MjYzNSwgNjI2MzksIDYyNjQzLCAKKyAgICA2MjY0NywgNjI2NTEsIDYyNjU1LCA2MjY1OSwgNjI2NjMsIDYyNjY3LCA2MjY3MSwgNjI2NzUsIDYyNjc5LCA2MjY4MywgCisgICAgNjI2ODcsIDYyNjkxLCA2MjY5NSwgNjI2OTksIDYyNzAzLCA2MjcwNywgNjI3MTEsIDYyNzE1LCA2MjcxOSwgNjI3MjMsIAorICAgIDYyNzI3LCAwLCA2MjczMSwgNjI3MzcsIDYyNzQzLCA2Mjc0OCwgNjI3NTMsIDYyNzU4LCA2Mjc2NCwgNjI3NzAsIDYyNzc2LCAKKyAgICA2Mjc4MiwgNjI3ODgsIDYyNzk0LCA2MjgwMCwgNjI4MDYsIDYyODEyLCA2MjgxOCwgNjI4MjQsIDYyODI5LCA2MjgzNCwgCisgICAgNjI4MzksIDYyODQ0LCA2Mjg0OSwgNjI4NTQsIDYyODU5LCA2Mjg2NCwgNjI4NjksIDYyODc0LCA2Mjg3OSwgNjI4ODQsIAorICAgIDYyODg5LCA2Mjg5NCwgNjI4OTksIDYyOTA0LCA2MjkwOSwgNjI5MTQsIDYyOTE5LCA2MjkyNCwgNjI5MzAsIDYyOTM2LCAKKyAgICA2Mjk0MiwgNjI5NDgsIDYyOTUzLCA2Mjk1OCwgMCwgMCwgMCwgMCwgMCwgNjI5NjMsIDYyOTY4LCA2Mjk3MywgNjI5NzgsIAorICAgIDYyOTgzLCA2Mjk4OCwgNjI5OTMsIDYyOTk4LCA2MzAwMywgNjMwMDgsIDYzMDEzLCA2MzAxOCwgNjMwMjMsIDYzMDI4LCAKKyAgICA2MzAzMywgNjMwMzgsIDYzMDQzLCA2MzA0OCwgNjMwNTIsIDYzMDU3LCA2MzA2MiwgNjMwNjcsIDYzMDcyLCA2MzA3NywgCisgICAgNjMwODIsIDYzMDg3LCA2MzA5MiwgNjMwOTcsIDYzMTAyLCA2MzEwNywgNjMxMTIsIDYzMTE3LCA2MzEyMiwgNjMxMjcsIAorICAgIDYzMTMyLCA2MzEzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxNDIsIDYzMTQ3LCA2MzE1MiwgCisgICAgNjMxNTcsIDYzMTYxLCA2MzE2NiwgNjMxNzAsIDYzMTc1LCA2MzE4MCwgNjMxODUsIDYzMTkwLCA2MzE5NSwgNjMyMDAsIAorICAgIDYzMjA1LCA2MzIxMCwgNjMyMTUsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCA2MzIzNiwgNjMyNDAsIDYzMjQ0LCAKKyAgICA2MzI0OCwgNjMyNTIsIDYzMjU2LCA2MzI2MCwgNjMyNjQsIDYzMjY4LCA2MzI3MiwgNjMyNzYsIDYzMjgxLCA2MzI4NiwgCisgICAgNjMyOTEsIDYzMjk2LCA2MzMwMSwgNjMzMDYsIDYzMzExLCA2MzMxNiwgNjMzMjEsIDYzMzI2LCA2MzMzMSwgNjMzMzYsIAorICAgIDYzMzQxLCA2MzM0NiwgNjMzNTEsIDYzMzU3LCAwLCA2MzM2NCwgNjMzNjcsIDYzMzcwLCA2MzM3MywgNjMzNzYsIDYzMzc5LCAKKyAgICA2MzM4MiwgNjMzODUsIDYzMzg4LCA2MzM5MSwgNjMzOTUsIDYzMzk5LCA2MzQwMywgNjM0MDcsIDYzNDExLCA2MzQxNSwgCisgICAgNjM0MTksIDYzNDIzLCA2MzQyNywgNjM0MzEsIDYzNDM1LCA2MzQzOSwgNjM0NDMsIDYzNDQ3LCA2MzQ1MSwgNjM0NTUsIAorICAgIDYzNDU5LCA2MzQ2MywgNjM0NjcsIDYzNDcxLCA2MzQ3NSwgNjM0NzksIDYzNDgzLCA2MzQ4NywgNjM0OTEsIDYzNDk1LCAKKyAgICA2MzQ5OSwgNjM1MDMsIDYzNTA3LCA2MzUxMSwgNjM1MTUsIDYzNTI0LCA2MzUzMywgNjM1NDIsIDYzNTUxLCA2MzU2MCwgCisgICAgNjM1NjksIDYzNTc4LCA2MzU4NywgNjM1OTAsIDYzNTk1LCA2MzYwMCwgNjM2MDUsIDYzNjEwLCA2MzYxNSwgNjM2MjAsIAorICAgIDYzNjI1LCA2MzYzMCwgNjM2MzUsIDYzNjM5LCA2MzY0NCwgNjM2NDksIDYzNjU0LCA2MzY1OSwgNjM2NjQsIDYzNjY4LCAKKyAgICA2MzY3MiwgNjM2NzYsIDYzNjgwLCA2MzY4NCwgNjM2ODgsIDYzNjkyLCA2MzY5NiwgNjM3MDAsIDYzNzA0LCA2MzcwOCwgCisgICAgNjM3MTIsIDYzNzE2LCA2MzcyMCwgNjM3MjUsIDYzNzMwLCA2MzczNSwgNjM3NDAsIDYzNzQ1LCA2Mzc1MCwgNjM3NTUsIAorICAgIDYzNzYwLCA2Mzc2NSwgNjM3NzAsIDYzNzc1LCA2Mzc4MCwgNjM3ODUsIDYzNzkwLCA2Mzc5NiwgNjM4MDIsIDYzODA3LCAKKyAgICA2MzgxMiwgNjM4MTUsIDYzODE4LCA2MzgyMSwgNjM4MjQsIDYzODI3LCA2MzgzMCwgNjM4MzMsIDYzODM2LCA2MzgzOSwgCisgICAgNjM4NDMsIDYzODQ3LCA2Mzg1MSwgNjM4NTUsIDYzODU5LCA2Mzg2MywgNjM4NjcsIDYzODcxLCA2Mzg3NSwgNjM4NzksIAorICAgIDYzODgzLCA2Mzg4NywgNjM4OTEsIDYzODk1LCA2Mzg5OSwgNjM5MDMsIDYzOTA3LCA2MzkxMSwgNjM5MTUsIDYzOTE5LCAKKyAgICA2MzkyMywgNjM5MjcsIDYzOTMxLCA2MzkzNSwgNjM5MzksIDYzOTQzLCA2Mzk0NywgNjM5NTEsIDYzOTU1LCA2Mzk1OSwgCisgICAgNjM5NjMsIDYzOTY3LCA2Mzk3MSwgNjM5NzUsIDYzOTc5LCA2Mzk4MywgNjM5ODcsIDYzOTkxLCA2Mzk5NSwgNjM5OTksIAorICAgIDY0MDA0LCA2NDAwOSwgNjQwMTQsIDY0MDE5LCA2NDAyMywgNjQwMjgsIDY0MDMzLCA2NDAzOCwgNjQwNDMsIDY0MDQ4LCAKKyAgICA2NDA1MywgNjQwNTgsIDY0MDYzLCA2NDA2OCwgNjQwNzIsIDY0MDc5LCA2NDA4NiwgNjQwOTMsIDY0MTAwLCA2NDEwNywgCisgICAgNjQxMTQsIDY0MTIxLCA2NDEyOCwgNjQxMzUsIDY0MTQyLCA2NDE0OSwgNjQxNTYsIDY0MTU5LCA2NDE2MiwgNjQxNjUsIAorICAgIDY0MTcwLCA2NDE3MywgNjQxNzYsIDY0MTc5LCA2NDE4MiwgNjQxODUsIDY0MTg4LCA2NDE5MiwgNjQxOTYsIDY0MjAwLCAKKyAgICA2NDIwNCwgNjQyMDgsIDY0MjEyLCA2NDIxNiwgNjQyMjAsIDY0MjI0LCA2NDIyOCwgNjQyMzIsIDY0MjM2LCA2NDI0MCwgCisgICAgNjQyNDMsIDY0MjQ2LCA2NDI1MCwgNjQyNTQsIDY0MjU4LCA2NDI2MiwgNjQyNjUsIDY0MjY5LCA2NDI3MywgNjQyNzcsIAorICAgIDY0MjgxLCA2NDI4NCwgNjQyODgsIDY0MjkyLCA2NDI5NiwgNjQzMDAsIDY0MzAzLCA2NDMwNywgNjQzMTEsIDY0MzE1LCAKKyAgICA2NDMxOSwgNjQzMjMsIDY0MzI3LCA2NDMzMSwgNjQzMzUsIDY0MzM5LCA2NDM0MywgMCwgNjQzNDcsIDY0MzUwLCA2NDM1MywgCisgICAgNjQzNTYsIDY0MzU5LCA2NDM2MiwgNjQzNjUsIDY0MzY4LCA2NDM3MSwgNjQzNzQsIDY0Mzc3LCA2NDM4MCwgNjQzODMsIAorICAgIDY0Mzg2LCA2NDM4OSwgNjQzOTIsIDY0Mzk1LCA2NDM5OCwgNjQ0MDEsIDY0NDA0LCA2NDQwNywgNjQ0MTAsIDY0NDEzLCAKKyAgICA2NDQxNiwgNjQ0MTksIDY0NDIyLCA2NDQyNSwgNjQ0MjgsIDY0NDMxLCA2NDQzNCwgNjQ0MzcsIDY0NDQwLCA2NDQ0MywgCisgICAgNjQ0NDYsIDY0NDQ5LCA2NDQ1MiwgNjQ0NTUsIDY0NDU4LCA2NDQ2MSwgNjQ0NjQsIDY0NDY3LCA2NDQ3MCwgNjQ0NzMsIAorICAgIDY0NDc2LCA2NDQ3OSwgNjQ0ODIsIDY0NDg1LCA2NDQ4OCwgNjQ0OTEsIDY0NDk0LCA2NDQ5NywgNjQ1MDAsIDY0NTAzLCAKKyAgICA2NDUwNiwgNjQ1MDksIDY0NTEyLCA2NDUxNSwgNjQ1MTgsIDY0NTIxLCA2NDUyNCwgNjQ1MjcsIDY0NTMwLCA2NDUzMywgCisgICAgNjQ1MzYsIDY0NTM5LCA2NDU0MiwgNjQ1NDUsIDY0NTQ4LCA2NDU1MSwgNjQ1NTQsIDY0NTU3LCA2NDU2MCwgNjQ1NjMsIAorICAgIDY0NTY2LCA2NDU2OSwgNjQ1NzIsIDY0NTc1LCA2NDU3OCwgNjQ1ODEsIDY0NTg0LCA2NDU4NywgNjQ1OTAsIDY0NTkzLCAKKyAgICA2NDU5NiwgNjQ1OTksIDY0NjAyLCA2NDYwNSwgNjQ2MDgsIDY0NjExLCA2NDYyMCwgNjQ2MjgsIDY0NjM2LCA2NDY0NCwgCisgICAgNjQ2NTIsIDY0NjYwLCA2NDY2OCwgNjQ2NzYsIDY0Njg0LCA2NDY5MiwgNjQ3MDEsIDY0NzEwLCA2NDcxOSwgNjQ3MjgsIAorICAgIDY0NzM3LCA2NDc0NiwgNjQ3NTUsIDY0NzY0LCA2NDc3MywgNjQ3ODIsIDY0NzkxLCA2NDgwMCwgNjQ4MDksIDY0ODE4LCAKKyAgICA2NDgyNywgNjQ4MzAsIDY0ODMzLCA2NDgzNiwgNjQ4MzgsIDY0ODQxLCA2NDg0NCwgNjQ4NDcsIDY0ODUyLCA2NDg1NywgCisgICAgNjQ4NjAsIDY0ODY3LCA2NDg3NCwgNjQ4ODEsIDY0ODg4LCA2NDg5MSwgNjQ4OTYsIDY0ODk4LCA2NDkwMiwgNjQ5MDQsIAorICAgIDY0OTA2LCA2NDkwOSwgNjQ5MTIsIDY0OTE1LCA2NDkxOCwgNjQ5MjEsIDY0OTI0LCA2NDkyNywgNjQ5MzIsIDY0OTM3LCAKKyAgICA2NDk0MCwgNjQ5NDMsIDY0OTQ2LCA2NDk0OSwgNjQ5NTIsIDY0OTU1LCA2NDk1OCwgNjQ5NjIsIDY0OTY1LCA2NDk2OCwgCisgICAgNjQ5NzEsIDY0OTc0LCA2NDk3NywgNjQ5ODIsIDY0OTg1LCA2NDk4OCwgNjQ5OTEsIDY0OTk2LCA2NTAwMSwgNjUwMDYsIAorICAgIDY1MDExLCA2NTAxNiwgNjUwMjEsIDY1MDI2LCA2NTAzMSwgNjUwMzYsIDY1MDQ0LCA2NTA0NiwgNjUwNDksIDY1MDUyLCAKKyAgICA2NTA1NSwgNjUwNTgsIDY1MDYzLCA2NTA3MSwgNjUwNzQsIDY1MDc3LCA2NTA4MSwgNjUwODQsIDY1MDg3LCA2NTA5MCwgCisgICAgNjUwOTUsIDY1MDk4LCA2NTEwMSwgNjUxMDYsIDY1MTA5LCA2NTExMiwgNjUxMTcsIDY1MTIwLCA2NTEyMywgNjUxMjgsIAorICAgIDY1MTMzLCA2NTEzOCwgNjUxNDEsIDY1MTQ0LCA2NTE0NywgNjUxNTAsIDY1MTU2LCA2NTE1OSwgNjUxNjIsIDY1MTY1LCAKKyAgICA2NTE2NywgNjUxNzAsIDY1MTczLCA2NTE3NiwgNjUxODEsIDY1MTg0LCA2NTE4NywgNjUxOTAsIDY1MTkzLCA2NTE5NiwgCisgICAgNjUyMDEsIDY1MjA0LCA2NTIwNywgNjUyMTAsIDY1MjEzLCA2NTIxNiwgNjUyMTksIDY1MjIyLCA2NTIyNSwgNjUyMjgsIAorICAgIDY1MjM0LCA2NTIzOSwgNjUyNDcsIDY1MjU1LCA2NTI2MywgNjUyNzEsIDY1Mjc5LCA2NTI4NywgNjUyOTUsIDY1MzAzLCAKKyAgICA2NTMxMSwgNjUzMjAsIDY1MzI5LCA2NTMzOCwgNjUzNDcsIDY1MzU2LCA2NTM2NSwgNjUzNzQsIDY1MzgzLCA2NTM5MiwgCisgICAgNjU0MDEsIDY1NDEwLCA2NTQxOSwgNjU0MjgsIDY1NDM3LCA2NTQ0NiwgNjU0NTUsIDY1NDY0LCA2NTQ3MywgNjU0ODIsIAorICAgIDY1NDkxLCA2NTUwMCwgNjU1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMDcwLCAwLCAxMjA3OSwgMTIwODYsIDEyMDk0LCAxMjEwNiwgMTIxMTMsIDEyMTIwLCAxMjEyNywgMTIxMzgsIDEyMTQ5LCAKLSAgICAxMjE1NiwgMTIxNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTcwLCAxMjE3NSwgMTIxODAsIDEyMTg1LCAxMjE5MCwgCi0gICAgMTIxOTUsIDEyMjAwLCAxMjIwNSwgMTIyMTAsIDEyMjE1LCAxMjIyMCwgMTIyMjUsIDEyMjMwLCAxMjIzNCwgMTIyMzgsIAotICAgIDEyMjQyLCAxMjI0NywgMTIyNTMsIDEyMjU5LCAxMjI2NSwgMTIyNzAsIDEyMjc1LCAxMjI4MCwgMTIyODUsIDEyMjkxLCAKLSAgICAxMjMwMCwgMTIzMDgsIDAsIDEyMzE0LCAxMjMyMCwgMTIzMjQsIDEyMzI4LCAxMjMzMiwgMTIzMzcsIDEyMzQwLCAxMjM0NCwgCi0gICAgMTIzNDcsIDEyMzUxLCAxMjM1NCwgMTIzNTgsIDEyMzYyLCAxMjM2NiwgMTIzNzEsIDEyMzc2LCAxMjM3OSwgMTIzODMsIAotICAgIDEyMzg4LCAxMjM5MywgMTIzOTYsIDEyNDAwLCAxMjQwMywgMTI0MDcsIDEyNDExLCAxMjQxNSwgMTI0MTksIDEyNDIzLCAKLSAgICAxMjQyNywgMTI0MzEsIDEyNDM1LCAxMjQzOSwgMTI0NDMsIDEyNDQ3LCAxMjQ1MSwgMTI0NTUsIDEyNDU5LCAxMjQ2MywgCi0gICAgMTI0NjcsIDEyNDcxLCAxMjQ3NSwgMTI0NzgsIDEyNDgyLCAxMjQ4NSwgMTI0ODksIDEyNDkzLCAxMjQ5NywgMTI1MDAsIAotICAgIDEyNTAzLCAxMjUwNiwgMTI1MTAsIDEyNTE0LCAxMjUxOCwgMTI1MjIsIDEyNTI2LCAxMjUzMCwgMTI1MzQsIDEyNTM3LCAKLSAgICAxMjU0MCwgMTI1NDUsIDEyNTUwLCAxMjU1NCwgMTI1NTgsIDEyNTYzLCAxMjU2NywgMTI1NzIsIDEyNTc2LCAxMjU4MSwgCi0gICAgMTI1ODYsIDEyNTkyLCAxMjU5OCwgMTI2MDQsIDEyNjA4LCAxMjYxMywgMTI2MTksIDEyNjI1LCAxMjYyOSwgMTI2MzQsIAotICAgIDEyNjM4LCAxMjY0NCwgMTI2NDksIDEyNjUyLCAxMjY1OCwgMTI2NjQsIDEyNjY5LCAxMjY3NCwgMTI2ODEsIDEyNjg2LCAKLSAgICAxMjY5MSwgMTI2OTUsIDEyNjk5LCAxMjcwMywgMTI3MDcsIDEyNzExLCAxMjcxNSwgMTI3MTksIDEyNzIzLCAxMjcyOCwgCi0gICAgMTI3MzMsIDEyNzM4LCAxMjc0NCwgMTI3NDcsIDEyNzUxLCAxMjc1NSwgMTI3NTgsIDEyNzYxLCAxMjc2NCwgMTI3NjcsIAotICAgIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MiwgMTI3ODYsIDEyNzkzLCAxMjc5OCwgMTI4MDIsIDEyODA2LCAKLSAgICAxMjgxMCwgMTI4MTQsIDAsIDEyODE4LCAxMjgyMiwgMTI4MjYsIDEyODMwLCAxMjgzNCwgMTI4NDAsIDEyODQ0LCAwLCAKLSAgICAxMjg0OCwgMTI4NTIsIDEyODU2LCAwLCAxMjg2MCwgMTI4NjMsIDEyODY3LCAxMjg3MCwgMTI4NzQsIDEyODc3LCAxMjg4MSwgCi0gICAgMTI4ODUsIDAsIDAsIDEyODg5LCAxMjg5MiwgMCwgMCwgMTI4OTYsIDEyODk5LCAxMjkwMywgMTI5MDYsIDEyOTEwLCAKLSAgICAxMjkxNCwgMTI5MTgsIDEyOTIyLCAxMjkyNiwgMTI5MzAsIDEyOTM0LCAxMjkzOCwgMTI5NDIsIDEyOTQ2LCAxMjk1MCwgCi0gICAgMTI5NTQsIDEyOTU4LCAxMjk2MiwgMTI5NjYsIDEyOTcwLCAxMjk3NCwgMTI5NzgsIDAsIDEyOTgxLCAxMjk4NCwgMTI5ODgsIAotICAgIDEyOTkyLCAxMjk5NiwgMTI5OTksIDEzMDAyLCAwLCAxMzAwNSwgMCwgMCwgMCwgMTMwMDksIDEzMDEzLCAxMzAxNywgCi0gICAgMTMwMjAsIDAsIDAsIDEzMDIzLCAxMzAyNywgMTMwMzEsIDEzMDM2LCAxMzA0MCwgMTMwNDUsIDEzMDQ5LCAxMzA1NCwgCi0gICAgMTMwNTksIDAsIDAsIDEzMDY1LCAxMzA2OSwgMCwgMCwgMTMwNzQsIDEzMDc4LCAxMzA4MywgMTMwODcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzMDkzLCAwLCAwLCAwLCAwLCAxMzA5OSwgMTMxMDMsIDAsIDEzMTA3LCAxMzExMSwgMTMxMTYsIAotICAgIDEzMTIxLCAxMzEyNiwgMCwgMCwgMTMxMzIsIDEzMTM2LCAxMzEzOSwgMTMxNDIsIDEzMTQ1LCAxMzE0OCwgMTMxNTEsIAotICAgIDEzMTU0LCAxMzE1NywgMTMxNjAsIDEzMTYzLCAxMzE3MiwgMTMxODEsIDEzMTg1LCAxMzE4OSwgMTMxOTUsIDEzMjAxLCAKLSAgICAxMzIwNywgMTMyMTMsIDEzMjI3LCAxMzIzNCwgMTMyMzcsIDAsIDAsIDAsIDAsIDAsIDEzMjQxLCAxMzI0NywgMTMyNTEsIDAsIAotICAgIDEzMjU1LCAxMzI1OCwgMTMyNjIsIDEzMjY1LCAxMzI2OSwgMTMyNzIsIDAsIDAsIDAsIDAsIDEzMjc2LCAxMzI4MCwgMCwgMCwgCi0gICAgMTMyODQsIDEzMjg4LCAxMzI5MiwgMTMyOTUsIDEzMjk5LCAxMzMwMywgMTMzMDcsIDEzMzExLCAxMzMxNSwgMTMzMTksIAotICAgIDEzMzIzLCAxMzMyNywgMTMzMzEsIDEzMzM1LCAxMzMzOSwgMTMzNDMsIDEzMzQ3LCAxMzM1MSwgMTMzNTUsIDEzMzU5LCAKLSAgICAxMzM2MywgMTMzNjcsIDAsIDEzMzcwLCAxMzM3MywgMTMzNzcsIDEzMzgxLCAxMzM4NSwgMTMzODgsIDEzMzkxLCAwLCAKLSAgICAxMzM5NCwgMTMzOTgsIDAsIDEzNDAyLCAxMzQwNiwgMCwgMTM0MTAsIDEzNDEzLCAwLCAwLCAxMzQxNiwgMCwgMTM0MjAsIAotICAgIDEzNDI1LCAxMzQyOSwgMTM0MzQsIDEzNDM4LCAwLCAwLCAwLCAwLCAxMzQ0MywgMTM0NDgsIDAsIDAsIDEzNDUzLCAxMzQ1OCwgCi0gICAgMTM0NjMsIDAsIDAsIDAsIDEzNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ3MSwgMTM0NzUsIDEzNDc5LCAxMzQ4MywgCi0gICAgMCwgMTM0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDkxLCAxMzQ5NSwgMTM0OTgsIDEzNTAxLCAxMzUwNCwgMTM1MDcsIAotICAgIDEzNTEwLCAxMzUxMywgMTM1MTYsIDEzNTE5LCAxMzUyMiwgMTM1MjUsIDEzNTI4LCAxMzUzMSwgMTM1MzQsIDEzNTM5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU0MywgMTM1NDcsIDEzNTUxLCAwLCAxMzU1NSwgMTM1NTgsIAotICAgIDEzNTYyLCAxMzU2NSwgMTM1NjksIDEzNTcyLCAxMzU3NiwgMTM1ODAsIDEzNTg0LCAwLCAxMzU4OSwgMTM1OTIsIDEzNTk2LCAKLSAgICAwLCAxMzYwMSwgMTM2MDQsIDEzNjA4LCAxMzYxMSwgMTM2MTUsIDEzNjE5LCAxMzYyMywgMTM2MjcsIDEzNjMxLCAxMzYzNSwgCi0gICAgMTM2MzksIDEzNjQzLCAxMzY0NywgMTM2NTEsIDEzNjU1LCAxMzY1OSwgMTM2NjMsIDEzNjY3LCAxMzY3MSwgMTM2NzUsIAotICAgIDEzNjc5LCAxMzY4MywgMCwgMTM2ODYsIDEzNjg5LCAxMzY5MywgMTM2OTcsIDEzNzAxLCAxMzcwNCwgMTM3MDcsIDAsIAotICAgIDEzNzEwLCAxMzcxNCwgMCwgMTM3MTgsIDEzNzIyLCAxMzcyNiwgMTM3MzAsIDEzNzMzLCAwLCAwLCAxMzczNiwgMTM3NDAsIAotICAgIDEzNzQ0LCAxMzc0OSwgMTM3NTMsIDEzNzU4LCAxMzc2MiwgMTM3NjcsIDEzNzcyLCAxMzc3OCwgMCwgMTM3ODQsIDEzNzg4LCAKLSAgICAxMzc5MywgMCwgMTM3OTksIDEzODAzLCAxMzgwOCwgMCwgMCwgMTM4MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzODE1LCAxMzgyMCwgMTM4MjUsIDEzODMwLCAwLCAwLCAxMzgzNiwgMTM4NDAsIDEzODQzLCAKLSAgICAxMzg0NiwgMTM4NDksIDEzODUyLCAxMzg1NSwgMTM4NTgsIDEzODYxLCAxMzg2NCwgMTM4NjcsIDEzODcxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg3NSwgMTM4NzksIDEzODgzLCAwLCAxMzg4NywgMTM4OTAsIAotICAgIDEzODk0LCAxMzg5NywgMTM5MDEsIDEzOTA0LCAxMzkwOCwgMTM5MTIsIDAsIDAsIDEzOTE2LCAxMzkxOSwgMCwgMCwgCi0gICAgMTM5MjMsIDEzOTI2LCAxMzkzMCwgMTM5MzMsIDEzOTM3LCAxMzk0MSwgMTM5NDUsIDEzOTQ5LCAxMzk1MywgMTM5NTcsIAotICAgIDEzOTYxLCAxMzk2NSwgMTM5NjksIDEzOTczLCAxMzk3NywgMTM5ODEsIDEzOTg1LCAxMzk4OSwgMTM5OTMsIDEzOTk3LCAKLSAgICAxNDAwMSwgMTQwMDUsIDAsIDE0MDA4LCAxNDAxMSwgMTQwMTUsIDE0MDE5LCAxNDAyMywgMTQwMjYsIDE0MDI5LCAwLCAKLSAgICAxNDAzMiwgMTQwMzYsIDAsIDE0MDQwLCAxNDA0NCwgMTQwNDgsIDE0MDUyLCAxNDA1NSwgMCwgMCwgMTQwNTgsIDE0MDYyLCAKLSAgICAxNDA2NiwgMTQwNzEsIDE0MDc1LCAxNDA4MCwgMTQwODQsIDE0MDg5LCAxNDA5NCwgMCwgMCwgMTQxMDAsIDE0MTA0LCAwLCAKLSAgICAwLCAxNDEwOSwgMTQxMTMsIDE0MTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEyMiwgMTQxMjgsIDAsIDAsIDAsIDAsIAotICAgIDE0MTM0LCAxNDEzOCwgMCwgMTQxNDIsIDE0MTQ2LCAxNDE1MSwgMTQxNTYsIDE0MTYxLCAwLCAwLCAxNDE2NywgMTQxNzEsIAotICAgIDE0MTc0LCAxNDE3NywgMTQxODAsIDE0MTgzLCAxNDE4NiwgMTQxODksIDE0MTkyLCAxNDE5NSwgMTQxOTgsIDE0MjAxLCAKLSAgICAxNDIwNSwgMTQyMTEsIDE0MjE3LCAxNDIyMywgMTQyMjksIDE0MjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDI0MSwgMTQyNDUsIDAsIDE0MjQ5LCAxNDI1MiwgMTQyNTYsIDE0MjU5LCAxNDI2MywgMTQyNjYsIDAsIDAsIDAsIAotICAgIDE0MjcwLCAxNDI3MywgMTQyNzcsIDAsIDE0MjgxLCAxNDI4NCwgMTQyODgsIDE0MjkyLCAwLCAwLCAwLCAxNDI5NSwgCi0gICAgMTQyOTksIDAsIDE0MzAzLCAwLCAxNDMwNywgMTQzMTEsIDAsIDAsIDAsIDE0MzE1LCAxNDMxOSwgMCwgMCwgMCwgMTQzMjMsIAotICAgIDE0MzI2LCAxNDMzMCwgMCwgMCwgMCwgMTQzMzMsIDE0MzM2LCAxNDMzOSwgMTQzNDIsIDE0MzQ2LCAxNDM1MCwgMTQzNTQsIAotICAgIDE0MzU4LCAxNDM2MiwgMTQzNjYsIDE0MzcwLCAxNDM3MywgMCwgMCwgMCwgMCwgMTQzNzYsIDE0MzgxLCAxNDM4NSwgCi0gICAgMTQzOTAsIDE0Mzk0LCAwLCAwLCAwLCAxNDM5OSwgMTQ0MDMsIDE0NDA4LCAwLCAxNDQxMywgMTQ0MTcsIDE0NDIyLCAKLSAgICAxNDQyNywgMCwgMCwgMTQ0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNDQ0MCwgMTQ0NDQsIDE0NDQ3LCAxNDQ1MCwgMTQ0NTMsIDE0NDU2LCAxNDQ1OSwgMTQ0NjIsIAotICAgIDE0NDY1LCAxNDQ2OCwgMTQ0NzEsIDE0NDc1LCAxNDQ4MCwgMTQ0ODUsIDE0NDg5LCAxNDQ5MywgMTQ0OTcsIDE0NTAxLCAKLSAgICAxNDUwNSwgMTQ1MTAsIDE0NTE0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDUxNywgMTQ1MjEsIDE0NTI1LCAwLCAxNDUyOSwgCi0gICAgMTQ1MzIsIDE0NTM2LCAxNDUzOSwgMTQ1NDMsIDE0NTQ2LCAxNDU1MCwgMTQ1NTQsIDAsIDE0NTU4LCAxNDU2MSwgMTQ1NjUsIAotICAgIDAsIDE0NTY5LCAxNDU3MiwgMTQ1NzYsIDE0NTgwLCAxNDU4MywgMTQ1ODcsIDE0NTkxLCAxNDU5NSwgMTQ1OTksIDE0NjAzLCAKLSAgICAxNDYwNywgMTQ2MTEsIDE0NjE1LCAxNDYxOSwgMTQ2MjMsIDE0NjI3LCAxNDYzMSwgMTQ2MzUsIDE0NjM5LCAxNDY0MywgCi0gICAgMTQ2NDcsIDE0NjUxLCAxNDY1NSwgMCwgMTQ2NTgsIDE0NjYxLCAxNDY2NSwgMTQ2NjksIDE0NjczLCAxNDY3NiwgMTQ2NzksIAotICAgIDE0NjgyLCAxNDY4NiwgMTQ2OTAsIDAsIDE0Njk0LCAxNDY5OCwgMTQ3MDIsIDE0NzA2LCAxNDcwOSwgMCwgMCwgMCwgCi0gICAgMTQ3MTIsIDE0NzE2LCAxNDcyMSwgMTQ3MjUsIDE0NzMwLCAxNDczNCwgMTQ3MzksIDE0NzQ0LCAwLCAxNDc1MCwgMTQ3NTQsIAotICAgIDE0NzU5LCAwLCAxNDc2NCwgMTQ3NjgsIDE0NzczLCAxNDc3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3ODIsIDE0Nzg2LCAKLSAgICAwLCAxNDc5MiwgMTQ3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODAwLCAxNDgwNSwgMTQ4MTAsIDE0ODE1LCAwLCAwLCAKLSAgICAxNDgyMSwgMTQ4MjUsIDE0ODI4LCAxNDgzMSwgMTQ4MzQsIDE0ODM3LCAxNDg0MCwgMTQ4NDMsIDE0ODQ2LCAxNDg0OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4NTIsIDE0ODY1LCAxNDg3NywgMTQ4ODksIDE0OTAxLCAxNDkxMywgMTQ5MjUsIAotICAgIDE0OTM3LCAwLCAwLCAxNDk0MSwgMTQ5NDUsIDAsIDE0OTQ5LCAxNDk1MiwgMTQ5NTYsIDE0OTU5LCAxNDk2MywgMTQ5NjYsIAotICAgIDE0OTcwLCAxNDk3NCwgMCwgMTQ5NzgsIDE0OTgxLCAxNDk4NSwgMCwgMTQ5ODksIDE0OTkyLCAxNDk5NiwgMTUwMDAsIAotICAgIDE1MDAzLCAxNTAwNywgMTUwMTEsIDE1MDE1LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAxNTAzMSwgMTUwMzUsIDE1MDM5LCAKLSAgICAxNTA0MywgMTUwNDcsIDE1MDUxLCAxNTA1NSwgMTUwNTksIDE1MDYzLCAxNTA2NywgMTUwNzEsIDE1MDc1LCAwLCAxNTA3OCwgCi0gICAgMTUwODEsIDE1MDg1LCAxNTA4OSwgMTUwOTMsIDE1MDk2LCAxNTA5OSwgMTUxMDIsIDE1MTA2LCAxNTExMCwgMCwgMTUxMTQsIAotICAgIDE1MTE4LCAxNTEyMiwgMTUxMjYsIDE1MTI5LCAwLCAwLCAxNTEzMiwgMTUxMzYsIDE1MTQwLCAxNTE0NSwgMTUxNDksIAotICAgIDE1MTU0LCAxNTE1OCwgMTUxNjMsIDE1MTY4LCAwLCAxNTE3NCwgMTUxNzgsIDE1MTgzLCAwLCAxNTE4OCwgMTUxOTIsIAotICAgIDE1MTk3LCAxNTIwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDYsIDE1MjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTIxNiwgMCwgMTUyMjAsIDE1MjI1LCAxNTIzMCwgMTUyMzUsIDAsIDAsIDE1MjQxLCAxNTI0NSwgMTUyNDgsIDE1MjUxLCAKLSAgICAxNTI1NCwgMTUyNTcsIDE1MjYwLCAxNTI2MywgMTUyNjYsIDE1MjY5LCAwLCAxNTI3MiwgMTUyNzYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjgwLCAxNTI4NCwgMCwgMTUyODgsIDE1MjkxLCAxNTI5NSwgCi0gICAgMTUyOTgsIDE1MzAyLCAxNTMwNSwgMTUzMDksIDE1MzEzLCAwLCAxNTMxNywgMTUzMjAsIDE1MzI0LCAwLCAxNTMyOCwgCi0gICAgMTUzMzEsIDE1MzM1LCAxNTMzOSwgMTUzNDIsIDE1MzQ2LCAxNTM1MCwgMTUzNTQsIDE1MzU4LCAxNTM2MiwgMTUzNjYsIAotICAgIDE1MzcwLCAxNTM3NCwgMTUzNzgsIDE1MzgyLCAxNTM4NiwgMTUzOTAsIDE1Mzk0LCAxNTM5OCwgMTU0MDIsIDE1NDA2LCAKLSAgICAxNTQxMCwgMTU0MTQsIDE1NDE3LCAxNTQyMSwgMTU0MjQsIDE1NDI4LCAxNTQzMiwgMTU0MzYsIDE1NDM5LCAxNTQ0MiwgCi0gICAgMTU0NDUsIDE1NDQ5LCAxNTQ1MywgMTU0NTcsIDE1NDYxLCAxNTQ2NSwgMTU0NjksIDE1NDczLCAxNTQ3NiwgMTU0NzksIDAsIAotICAgIDAsIDE1NDgzLCAxNTQ4NywgMTU0OTIsIDE1NDk2LCAxNTUwMSwgMTU1MDUsIDE1NTEwLCAxNTUxNSwgMCwgMTU1MjEsIAotICAgIDE1NTI1LCAxNTUzMCwgMCwgMTU1MzUsIDE1NTM5LCAxNTU0NCwgMTU1NDksIDE1NTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTU1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjQsIDE1NTY5LCAxNTU3NCwgMTU1NzksIDAsIDAsIAotICAgIDE1NTg1LCAxNTU4OSwgMTU1OTIsIDE1NTk1LCAxNTU5OCwgMTU2MDEsIDE1NjA0LCAxNTYwNywgMTU2MTAsIDE1NjEzLCAKLSAgICAxNTYxNiwgMTU2MjAsIDE1NjI1LCAxNTYzMCwgMTU2MzYsIDE1NjQyLCAwLCAwLCAwLCAxNTY0OCwgMTU2NTIsIDE1NjU4LCAKLSAgICAxNTY2NCwgMTU2NzAsIDE1Njc1LCAxNTY4MSwgMCwgMCwgMTU2ODcsIDE1NjkxLCAwLCAxNTY5NSwgMTU2OTksIDE1NzAzLCAKLSAgICAxNTcwNywgMTU3MTEsIDE1NzE1LCAxNTcxOSwgMTU3MjMsIDE1NzI3LCAxNTczMSwgMTU3MzUsIDE1NzM5LCAxNTc0MywgCi0gICAgMTU3NDcsIDE1NzUxLCAxNTc1NSwgMTU3NTksIDE1NzYzLCAwLCAwLCAwLCAxNTc2NywgMTU3NzMsIDE1Nzc5LCAxNTc4NSwgCi0gICAgMTU3OTEsIDE1Nzk3LCAxNTgwMywgMTU4MDksIDE1ODE1LCAxNTgyMSwgMTU4MjcsIDE1ODMzLCAxNTg0MSwgMTU4NDcsIAotICAgIDE1ODUzLCAxNTg1OSwgMTU4NjUsIDE1ODcxLCAxNTg3NywgMTU4ODMsIDE1ODg5LCAxNTg5NSwgMTU5MDEsIDE1OTA3LCAwLCAKLSAgICAxNTkxMywgMTU5MTksIDE1OTI1LCAxNTkzMSwgMTU5MzcsIDE1OTQzLCAxNTk0NywgMTU5NTMsIDE1OTU3LCAwLCAxNTk2MSwgCi0gICAgMCwgMCwgMTU5NjcsIDE1OTcxLCAxNTk3NywgMTU5ODMsIDE1OTg5LCAxNTk5MywgMTU5OTksIDAsIDAsIDAsIDE2MDAzLCAwLCAKLSAgICAwLCAwLCAwLCAxNjAwNywgMTYwMTIsIDE2MDE5LCAxNjAyNiwgMTYwMzMsIDE2MDQwLCAwLCAxNjA0NywgMCwgMTYwNTQsIAotICAgIDE2MDU5LCAxNjA2NCwgMTYwNzEsIDE2MDc4LCAxNjA4NywgMTYwOTgsIDE2MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjExMiwgMTYxMTksIDE2MTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNjEzMSwgMTYxMzcsIDE2MTQzLCAxNjE0OSwgMTYxNTUsIDE2MTYxLCAxNjE2NywgMTYxNzMsIAotICAgIDE2MTc5LCAxNjE4NSwgMTYxOTEsIDE2MTk3LCAxNjIwMywgMTYyMDksIDE2MjE1LCAxNjIyMSwgMTYyMjcsIDE2MjMzLCAKLSAgICAxNjIzOSwgMTYyNDUsIDE2MjUxLCAxNjI1NywgMTYyNjMsIDE2MjY5LCAxNjI3NSwgMTYyODEsIDE2Mjg3LCAxNjI5MywgCi0gICAgMTYyOTksIDE2MzA1LCAxNjMxMSwgMTYzMTcsIDE2MzIzLCAxNjMyOCwgMTYzMzQsIDE2MzQwLCAxNjM0NCwgMTYzNTAsIAotICAgIDE2MzU0LCAxNjM2MCwgMTYzNjYsIDE2MzcyLCAxNjM3OCwgMTYzODQsIDE2MzkwLCAxNjM5NSwgMTY0MDEsIDE2NDA1LCAKLSAgICAxNjQxMCwgMTY0MTYsIDE2NDIyLCAxNjQyOCwgMTY0MzMsIDE2NDM5LCAxNjQ0NSwgMTY0NTEsIDE2NDU2LCAxNjQ2MiwgMCwgCi0gICAgMCwgMCwgMCwgMTY0NjYsIDE2NDcyLCAxNjQ3NywgMTY0ODMsIDE2NDg4LCAxNjQ5NiwgMTY1MDQsIDE2NTA4LCAxNjUxMiwgCi0gICAgMTY1MTYsIDE2NTIyLCAxNjUyOCwgMTY1MzQsIDE2NTQwLCAxNjU0NCwgMTY1NDgsIDE2NTUyLCAxNjU1NiwgMTY1NjAsIAotICAgIDE2NTYzLCAxNjU2NiwgMTY1NjksIDE2NTcyLCAxNjU3NSwgMTY1NzgsIDE2NTgxLCAxNjU4NCwgMTY1ODcsIDE2NTkxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU5NSwgMTY2MDAsIDAsIDE2NjA3LCAwLCAwLCAxNjYxNCwgCi0gICAgMTY2MTksIDAsIDE2NjI0LCAwLCAwLCAxNjYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2MzYsIDE2NjQxLCAxNjY0NSwgCi0gICAgMTY2NTIsIDAsIDE2NjU5LCAxNjY2NCwgMTY2NjksIDE2Njc0LCAxNjY4MSwgMTY2ODgsIDE2Njk1LCAwLCAxNjcwMiwgCi0gICAgMTY3MDcsIDE2NzEyLCAwLCAxNjcxOSwgMCwgMTY3MjYsIDAsIDAsIDE2NzMxLCAxNjczOCwgMCwgMTY3NDUsIDE2NzQ5LCAKLSAgICAxNjc1NiwgMTY3NjAsIDE2NzY1LCAxNjc3MywgMTY3NzksIDE2Nzg1LCAxNjc5MCwgMTY3OTYsIDE2ODAyLCAxNjgwOCwgCi0gICAgMTY4MTMsIDAsIDE2ODE5LCAxNjgyNywgMTY4MzQsIDAsIDAsIDE2ODQxLCAxNjg0NiwgMTY4NTIsIDE2ODU3LCAxNjg2MywgCi0gICAgMCwgMTY4NjksIDAsIDE2ODc1LCAxNjg4MiwgMTY4ODksIDE2ODk2LCAxNjkwMywgMTY5MDgsIDAsIDAsIDE2OTEyLCAKLSAgICAxNjkxNywgMTY5MjEsIDE2OTI1LCAxNjkyOSwgMTY5MzMsIDE2OTM3LCAxNjk0MSwgMTY5NDUsIDE2OTQ5LCAwLCAwLCAKLSAgICAxNjk1MywgMTY5NTksIDE2OTY1LCAxNjk3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY5NzksIDE2OTgzLCAxNjk5NCwgCi0gICAgMTcwMDksIDE3MDI0LCAxNzAzNCwgMTcwNDUsIDE3MDU4LCAxNzA2OSwgMTcwNzUsIDE3MDgzLCAxNzA5MywgMTcwOTksIAotICAgIDE3MTA3LCAxNzExMSwgMTcxMTcsIDE3MTIzLCAxNzEzMSwgMTcxNDEsIDE3MTQ5LCAxNzE2MiwgMTcxNjgsIDE3MTc2LCAKLSAgICAxNzE4NCwgMTcxOTYsIDE3MjAzLCAxNzIxMSwgMTcyMTksIDE3MjI3LCAxNzIzNSwgMTcyNDMsIDE3MjUxLCAxNzI2MSwgCi0gICAgMTcyNjUsIDE3MjY4LCAxNzI3MSwgMTcyNzQsIDE3Mjc3LCAxNzI4MCwgMTcyODMsIDE3Mjg2LCAxNzI4OSwgMTcyOTIsIAotICAgIDE3Mjk2LCAxNzMwMCwgMTczMDQsIDE3MzA4LCAxNzMxMiwgMTczMTYsIDE3MzIwLCAxNzMyNCwgMTczMjgsIDE3MzMzLCAKLSAgICAxNzMzOSwgMTczNDksIDE3MzYzLCAxNzM3MywgMTczNzksIDE3Mzg1LCAxNzM5MywgMTc0MDEsIDE3NDA5LCAxNzQxNywgCi0gICAgMTc0MjMsIDE3NDI5LCAxNzQzMiwgMTc0MzYsIDE3NDQwLCAxNzQ0NCwgMTc0NDgsIDE3NDUyLCAxNzQ1NiwgMCwgMTc0NjAsIAotICAgIDE3NDY0LCAxNzQ2OCwgMTc0NzIsIDE3NDc2LCAxNzQ4MCwgMTc0ODQsIDE3NDg4LCAxNzQ5MiwgMTc0OTYsIDE3NTAwLCAKLSAgICAxNzUwMywgMTc1MDYsIDE3NTEwLCAxNzUxNCwgMTc1MTgsIDE3NTIxLCAxNzUyNSwgMTc1MjksIDE3NTMzLCAxNzUzNywgCi0gICAgMTc1NDEsIDE3NTQ1LCAxNzU0OSwgMTc1NTMsIDE3NTU2LCAxNzU1OSwgMTc1NjMsIDE3NTY3LCAxNzU3MSwgMTc1NzQsIAotICAgIDE3NTc3LCAxNzU4MCwgMTc1ODQsIDE3NTg5LCAxNzU5MywgMCwgMCwgMCwgMCwgMTc1OTcsIDE3NjAyLCAxNzYwNiwgCi0gICAgMTc2MTEsIDE3NjE1LCAxNzYyMCwgMTc2MjUsIDE3NjMxLCAxNzYzNiwgMTc2NDIsIDE3NjQ2LCAxNzY1MSwgMTc2NTUsIAotICAgIDE3NjYwLCAxNzY3MCwgMTc2NzYsIDE3NjgyLCAxNzY4OSwgMTc2OTksIDE3NzA1LCAxNzcwOSwgMTc3MTMsIDE3NzE5LCAKLSAgICAxNzcyNSwgMTc3MzMsIDE3NzM5LCAxNzc0NywgMTc3NTUsIDE3NzYzLCAxNzc3MywgMTc3ODEsIDE3NzkxLCAxNzc5NiwgCi0gICAgMTc4MDIsIDE3ODA4LCAxNzgxNCwgMTc4MjAsIDE3ODI2LCAxNzgzMiwgMCwgMTc4MzgsIDE3ODQ0LCAxNzg1MCwgMTc4NTYsIAotICAgIDE3ODYyLCAxNzg2OCwgMTc4NzQsIDE3ODgwLCAxNzg4NiwgMTc4OTIsIDE3ODk4LCAxNzkwMywgMTc5MDgsIDE3OTE0LCAKLSAgICAxNzkyMCwgMTc5MjYsIDE3OTMxLCAxNzkzNywgMTc5NDMsIDE3OTQ5LCAxNzk1NSwgMTc5NjEsIDE3OTY3LCAxNzk3MywgCi0gICAgMTc5NzksIDE3OTg0LCAxNzk4OSwgMTc5OTUsIDE4MDAxLCAxODAwNywgMTgwMTIsIDE4MDE3LCAxODAyMiwgMTgwMjgsIAotICAgIDE4MDM2LCAxODA0MywgMCwgMTgwNTAsIDE4MDU3LCAxODA3MCwgMTgwNzcsIDE4MDg0LCAxODA5MiwgMTgxMDAsIDE4MTA2LCAKLSAgICAxODExMiwgMTgxMTgsIDE4MTI4LCAxODEzMywgMTgxMzksIDE4MTQ5LCAxODE1OSwgMCwgMTgxNjksIDE4MTc5LCAxODE4NywgCi0gICAgMTgxOTksIDE4MjExLCAxODIxNywgMTgyMzEsIDE4MjQ2LCAxODI1MSwgMTgyNTYsIDE4MjY0LCAxODI3MiwgMTgyODAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4Mjg4LCAxODI5MSwgMTgyOTUsIDE4Mjk5LCAxODMwMywgCi0gICAgMTgzMDcsIDE4MzExLCAxODMxNSwgMTgzMTksIDE4MzIzLCAxODMyNywgMTgzMzEsIDE4MzM1LCAxODMzOSwgMTgzNDMsIAotICAgIDE4MzQ3LCAxODM1MSwgMTgzNTUsIDE4MzU5LCAxODM2MywgMTgzNjcsIDE4MzcwLCAxODM3MywgMTgzNzcsIDE4MzgxLCAKLSAgICAxODM4NSwgMTgzODgsIDE4MzkxLCAxODM5NCwgMTgzOTgsIDE4NDAyLCAxODQwNSwgMTg0MDgsIDE4NDEyLCAxODQxNSwgCi0gICAgMTg0MjAsIDE4NDIzLCAxODQyNywgMTg0MzAsIDE4NDM0LCAxODQzNywgMTg0NDIsIDE4NDQ1LCAxODQ0OSwgMTg0NTYsIAotICAgIDE4NDYxLCAxODQ2NSwgMTg0NzAsIDE4NDc0LCAxODQ3OSwgMTg0ODMsIDE4NDg4LCAxODQ5NSwgMTg1MDEsIDE4NTA2LCAKLSAgICAxODUxMCwgMTg1MTQsIDE4NTE4LCAxODUyMiwgMTg1MjYsIDE4NTMxLCAxODUzNiwgMTg1NDIsIDE4NTQ3LCAxODU1MiwgCi0gICAgMTg1NTYsIDE4NTU5LCAxODU2MiwgMTg1NjUsIDE4NTY4LCAxODU3MSwgMTg1NzQsIDE4NTc3LCAxODU4MCwgMTg1ODMsIAotICAgIDE4NTg5LCAxODU5MywgMTg1OTcsIDE4NjAxLCAxODYwNSwgMTg2MDksIDE4NjEzLCAxODYxNywgMTg2MjEsIDE4NjI2LCAKLSAgICAxODYzMCwgMTg2MzUsIDE4NjQwLCAxODY0NiwgMTg2NTEsIDE4NjU3LCAxODY2MywgMTg2NjksIDE4Njc1LCAxODY4MSwgCi0gICAgMTg2ODgsIDE4Njk1LCAxODcwMywgMTg3MTEsIDE4NzIwLCAxODcyOSwgMTg3NDAsIDE4NzUwLCAxODc2MCwgMTg3NzEsIAotICAgIDE4NzgyLCAxODc5MiwgMTg4MDIsIDE4ODEyLCAxODgyMiwgMTg4MzIsIDE4ODQyLCAxODg1MiwgMTg4NjIsIDE4ODcwLCAKLSAgICAxODg3NywgMTg4ODMsIDE4ODkwLCAxODg5NSwgMTg5MDEsIDE4OTA3LCAxODkxMywgMTg5MTksIDE4OTI1LCAxODkzMSwgCi0gICAgMTg5MzYsIDE4OTQyLCAxODk0OCwgMTg5NTQsIDE4OTYwLCAxODk2NSwgMTg5NzMsIDE4OTgwLCAxODk4NiwgMTg5OTMsIAotICAgIDE5MDAxLCAxOTAwNywgMTkwMTMsIDE5MDE5LCAxOTAyNSwgMTkwMzMsIDE5MDQxLCAxOTA1MSwgMTkwNTksIDE5MDY3LCAKLSAgICAxOTA3MywgMTkwNzgsIDE5MDgzLCAxOTA4OCwgMTkwOTMsIDE5MDk4LCAxOTEwMywgMTkxMDgsIDE5MTEzLCAxOTExOCwgCi0gICAgMTkxMjQsIDE5MTMwLCAxOTEzNiwgMTkxNDMsIDE5MTQ4LCAxOTE1NCwgMTkxNTksIDE5MTY0LCAxOTE2OSwgMTkxNzQsIAotICAgIDE5MTc5LCAxOTE4NCwgMTkxODksIDE5MTk0LCAxOTE5OSwgMTkyMDQsIDE5MjA5LCAxOTIxNCwgMTkyMTksIDE5MjI0LCAKLSAgICAxOTIyOSwgMTkyMzQsIDE5MjM5LCAxOTI0NCwgMTkyNDksIDE5MjU0LCAxOTI1OSwgMTkyNjQsIDE5MjY5LCAxOTI3NCwgCi0gICAgMTkyNzksIDE5Mjg0LCAxOTI4OSwgMTkyOTQsIDE5Mjk5LCAxOTMwNCwgMTkzMDksIDE5MzE0LCAxOTMxOSwgMTkzMjQsIAotICAgIDE5MzI5LCAxOTMzNCwgMTkzMzksIDAsIDE5MzQ0LCAwLCAwLCAwLCAwLCAwLCAxOTM0OSwgMCwgMCwgMTkzNTQsIDE5MzU4LCAKLSAgICAxOTM2MiwgMTkzNjYsIDE5MzcwLCAxOTM3NCwgMTkzNzgsIDE5MzgyLCAxOTM4NiwgMTkzOTAsIDE5Mzk0LCAxOTM5OCwgCi0gICAgMTk0MDIsIDE5NDA2LCAxOTQxMCwgMTk0MTQsIDE5NDE4LCAxOTQyMiwgMTk0MjYsIDE5NDMwLCAxOTQzNCwgMTk0MzgsIAotICAgIDE5NDQyLCAxOTQ0NiwgMTk0NTAsIDE5NDU0LCAxOTQ1OCwgMTk0NjIsIDE5NDY2LCAxOTQ3MCwgMTk0NzQsIDE5NDc4LCAKLSAgICAxOTQ4MiwgMTk0ODYsIDE5NDkwLCAxOTQ5NCwgMTk0OTgsIDE5NTAyLCAxOTUwNiwgMTk1MTAsIDE5NTE0LCAxOTUxOCwgCi0gICAgMTk1MjQsIDE5NTI4LCAxOTUzMywgMTk1MzgsIDE5NTQyLCAxOTU0NywgMTk1NTIsIDE5NTU2LCAxOTU2MCwgMTk1NjQsIAotICAgIDE5NTY4LCAxOTU3MiwgMTk1NzYsIDE5NTgwLCAxOTU4NCwgMTk1ODgsIDE5NTkyLCAxOTU5NiwgMTk2MDAsIDE5NjA0LCAKLSAgICAxOTYwOCwgMTk2MTIsIDE5NjE2LCAxOTYyMCwgMTk2MjQsIDE5NjI4LCAxOTYzMiwgMTk2MzYsIDE5NjQwLCAxOTY0NCwgCi0gICAgMTk2NDgsIDE5NjUyLCAxOTY1NiwgMTk2NjAsIDE5NjY0LCAxOTY2OCwgMTk2NzIsIDE5Njc2LCAxOTY4MCwgMTk2ODQsIAotICAgIDE5Njg4LCAxOTY5MiwgMTk2OTYsIDE5NzAwLCAxOTcwNCwgMTk3MDgsIDE5NzEyLCAxOTcxNiwgMTk3MjAsIDE5NzI0LCAKLSAgICAxOTcyOCwgMTk3MzIsIDE5NzM2LCAxOTc0MCwgMTk3NDQsIDE5NzQ4LCAxOTc1MiwgMTk3NTYsIDE5NzYwLCAxOTc2NCwgCi0gICAgMTk3NjgsIDE5NzcyLCAxOTc3NiwgMTk3ODAsIDE5Nzg0LCAxOTc4OCwgMTk3OTIsIDE5Nzk2LCAxOTgwMCwgMTk4MDQsIAotICAgIDE5ODA4LCAxOTgxMiwgMTk4MTYsIDE5ODIwLCAxOTgyNCwgMTk4MjgsIDE5ODMyLCAxOTgzNiwgMTk4NDAsIDE5ODQ0LCAKLSAgICAxOTg0OCwgMTk4NTIsIDE5ODU2LCAxOTg2MCwgMTk4NjQsIDE5ODY4LCAxOTg3MiwgMTk4NzYsIDE5ODgwLCAxOTg4NCwgCi0gICAgMTk4ODgsIDE5ODkyLCAxOTg5NiwgMTk5MDAsIDE5OTA0LCAxOTkwOCwgMTk5MTIsIDE5OTE2LCAxOTkyMCwgMTk5MjQsIAotICAgIDE5OTI4LCAxOTkzMiwgMTk5MzYsIDE5OTQwLCAxOTk0MywgMTk5NDcsIDE5OTUwLCAxOTk1NCwgMTk5NTgsIDE5OTYxLCAKLSAgICAxOTk2NSwgMTk5NjksIDE5OTcyLCAxOTk3NiwgMTk5ODAsIDE5OTg0LCAxOTk4OCwgMTk5OTEsIDE5OTk1LCAxOTk5OSwgCi0gICAgMjAwMDMsIDIwMDA3LCAyMDAxMSwgMjAwMTUsIDIwMDE4LCAyMDAyMiwgMjAwMjYsIDIwMDMwLCAyMDAzNCwgMjAwMzgsIAotICAgIDIwMDQyLCAyMDA0NiwgMjAwNTAsIDIwMDU0LCAyMDA1OCwgMjAwNjIsIDIwMDY2LCAyMDA3MCwgMjAwNzQsIDIwMDc4LCAKLSAgICAyMDA4MiwgMjAwODYsIDIwMDkwLCAyMDA5NCwgMjAwOTgsIDIwMTAyLCAyMDEwNiwgMjAxMTAsIDIwMTE0LCAyMDExOCwgCi0gICAgMjAxMjIsIDIwMTI2LCAyMDEzMCwgMjAxMzQsIDIwMTM4LCAyMDE0MiwgMjAxNDYsIDIwMTUwLCAyMDE1NCwgMjAxNTgsIAotICAgIDIwMTYyLCAyMDE2NiwgMjAxNzAsIDIwMTc0LCAyMDE3OCwgMjAxODIsIDIwMTg2LCAyMDE5MCwgMjAxOTQsIDIwMTk4LCAKLSAgICAyMDIwMiwgMjAyMDYsIDIwMjEwLCAyMDIxNCwgMjAyMTgsIDIwMjIyLCAyMDIyNiwgMjAyMzAsIDIwMjM0LCAyMDIzOCwgCi0gICAgMjAyNDIsIDIwMjQ2LCAyMDI1MCwgMjAyNTQsIDIwMjU4LCAyMDI2MiwgMjAyNjYsIDIwMjcwLCAyMDI3NCwgMjAyNzgsIAotICAgIDIwMjgyLCAyMDI4NiwgMjAyOTAsIDIwMjk0LCAyMDI5OCwgMjAzMDIsIDIwMzA2LCAyMDMxMCwgMjAzMTQsIDIwMzE4LCAKLSAgICAyMDMyMiwgMjAzMjYsIDIwMzMwLCAyMDMzNCwgMjAzMzgsIDIwMzQyLCAyMDM0NiwgMjAzNTAsIDIwMzU0LCAyMDM1OCwgCi0gICAgMjAzNjIsIDIwMzY2LCAyMDM3MCwgMjAzNzQsIDIwMzc4LCAyMDM4MiwgMjAzODYsIDIwMzkwLCAyMDM5NCwgMjAzOTgsIAotICAgIDIwNDAyLCAyMDQwNiwgMjA0MTAsIDIwNDE0LCAyMDQxOCwgMjA0MjIsIDIwNDI2LCAyMDQzMCwgMjA0MzQsIDIwNDM4LCAKLSAgICAyMDQ0MiwgMjA0NDYsIDIwNDUwLCAyMDQ1NCwgMjA0NTgsIDIwNDYyLCAyMDQ2NiwgMjA0NzAsIDIwNDc0LCAyMDQ3OCwgCi0gICAgMjA0ODIsIDIwNDg2LCAyMDQ5MCwgMjA0OTQsIDIwNDk4LCAyMDUwMiwgMjA1MDYsIDIwNTEwLCAyMDUxNCwgMjA1MTgsIAotICAgIDIwNTIyLCAyMDUyNiwgMjA1MzAsIDIwNTM0LCAyMDUzOCwgMjA1NDIsIDIwNTQ2LCAyMDU1MCwgMjA1NTQsIDIwNTU4LCAKLSAgICAyMDU2MiwgMjA1NjYsIDIwNTcwLCAyMDU3MywgMjA1NzcsIDIwNTgxLCAyMDU4NSwgMjA1ODksIDIwNTkzLCAyMDU5NywgCi0gICAgMjA2MDEsIDIwNjA1LCAyMDYwOSwgMjA2MTMsIDIwNjE3LCAyMDYyMSwgMjA2MjUsIDIwNjI5LCAyMDYzMywgMjA2MzcsIAotICAgIDIwNjQxLCAyMDY0NSwgMjA2NDksIDIwNjUzLCAyMDY1NywgMjA2NjEsIDIwNjY1LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAKLSAgICAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgMjA3MDgsIDIwNzEyLCAyMDcxNiwgCi0gICAgMjA3MjAsIDIwNzI0LCAyMDcyOCwgMjA3MzEsIDIwNzM1LCAyMDczOSwgMjA3NDMsIDIwNzQ3LCAyMDc1MSwgMjA3NTUsIAotICAgIDIwNzU5LCAyMDc2MiwgMjA3NjYsIDIwNzcwLCAyMDc3NCwgMjA3NzgsIDIwNzgyLCAyMDc4NiwgMjA3OTAsIDIwNzk0LCAKLSAgICAyMDc5OCwgMjA4MDIsIDIwODA2LCAyMDgxMCwgMjA4MTQsIDIwODE4LCAyMDgyMiwgMjA4MjYsIDIwODMwLCAyMDgzNCwgCi0gICAgMjA4MzgsIDIwODQyLCAyMDg0NiwgMjA4NTAsIDIwODU0LCAwLCAyMDg1OCwgMjA4NjIsIDIwODY2LCAyMDg3MCwgMCwgMCwgCi0gICAgMjA4NzQsIDIwODc4LCAyMDg4MiwgMjA4ODYsIDIwODkwLCAyMDg5NCwgMjA4OTgsIDAsIDIwOTAyLCAwLCAyMDkwNiwgCi0gICAgMjA5MTAsIDIwOTE0LCAyMDkxOCwgMCwgMCwgMjA5MjIsIDIwOTI2LCAyMDkzMCwgMjA5MzQsIDIwOTM4LCAyMDk0MiwgCi0gICAgMjA5NDYsIDIwOTUwLCAyMDk1NCwgMjA5NTgsIDIwOTYyLCAyMDk2NiwgMjA5NzAsIDIwOTc0LCAyMDk3OCwgMjA5ODIsIAotICAgIDIwOTg2LCAyMDk5MCwgMjA5OTQsIDIwOTk4LCAyMTAwMiwgMjEwMDYsIDIxMDEwLCAyMTAxMywgMjEwMTcsIDIxMDIxLCAKLSAgICAyMTAyNSwgMjEwMjksIDIxMDMzLCAyMTAzNywgMjEwNDEsIDIxMDQ1LCAyMTA0OSwgMjEwNTMsIDIxMDU3LCAyMTA2MSwgCi0gICAgMjEwNjUsIDIxMDY5LCAyMTA3MywgMjEwNzcsIDIxMDgxLCAwLCAyMTA4NSwgMjEwODksIDIxMDkzLCAyMTA5NywgMCwgMCwgCi0gICAgMjExMDEsIDIxMTA0LCAyMTEwOCwgMjExMTIsIDIxMTE2LCAyMTEyMCwgMjExMjQsIDIxMTI4LCAyMTEzMiwgMjExMzYsIAotICAgIDIxMTQwLCAyMTE0NCwgMjExNDgsIDIxMTUyLCAyMTE1NiwgMjExNjAsIDIxMTY0LCAyMTE2OSwgMjExNzQsIDIxMTc5LCAKLSAgICAyMTE4NSwgMjExOTEsIDIxMTk2LCAyMTIwMSwgMjEyMDcsIDIxMjEwLCAyMTIxNCwgMjEyMTgsIDIxMjIyLCAyMTIyNiwgCi0gICAgMjEyMzAsIDIxMjM0LCAyMTIzOCwgMCwgMjEyNDIsIDIxMjQ2LCAyMTI1MCwgMjEyNTQsIDAsIDAsIDIxMjU4LCAyMTI2MiwgCi0gICAgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAwLCAyMTI4NiwgMCwgMjEyOTAsIDIxMjk0LCAyMTI5OCwgCi0gICAgMjEzMDIsIDAsIDAsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAyMTMzNCwgCi0gICAgMjEzMzgsIDIxMzQzLCAyMTM0OCwgMjEzNTMsIDIxMzU5LCAyMTM2NSwgMjEzNzAsIDAsIDIxMzc1LCAyMTM3OSwgMjEzODMsIAotICAgIDIxMzg3LCAyMTM5MSwgMjEzOTUsIDIxMzk5LCAyMTQwMywgMjE0MDcsIDIxNDExLCAyMTQxNSwgMjE0MTksIDIxNDIzLCAKLSAgICAyMTQyNywgMjE0MzEsIDIxNDM1LCAyMTQzOSwgMjE0NDIsIDIxNDQ2LCAyMTQ1MCwgMjE0NTQsIDIxNDU4LCAyMTQ2MiwgCi0gICAgMjE0NjYsIDIxNDcwLCAyMTQ3NCwgMjE0NzgsIDIxNDgyLCAyMTQ4NiwgMjE0OTAsIDIxNDk0LCAyMTQ5OCwgMjE1MDIsIAotICAgIDIxNTA2LCAyMTUxMCwgMjE1MTQsIDIxNTE4LCAyMTUyMiwgMjE1MjYsIDIxNTMwLCAyMTUzNCwgMjE1MzgsIDIxNTQyLCAKLSAgICAyMTU0NiwgMjE1NTAsIDIxNTU0LCAyMTU1OCwgMjE1NjIsIDIxNTY2LCAyMTU3MCwgMjE1NzQsIDIxNTc4LCAyMTU4MiwgCi0gICAgMjE1ODYsIDIxNTkwLCAyMTU5NCwgMjE1OTgsIDAsIDIxNjAyLCAyMTYwNiwgMjE2MTAsIDIxNjE0LCAwLCAwLCAyMTYxOCwgCi0gICAgMjE2MjIsIDIxNjI2LCAyMTYzMCwgMjE2MzQsIDIxNjM4LCAyMTY0MiwgMjE2NDYsIDIxNjUwLCAyMTY1NCwgMjE2NTgsIAotICAgIDIxNjYyLCAyMTY2NiwgMjE2NzAsIDIxNjc0LCAyMTY3OCwgMjE2ODIsIDIxNjg2LCAyMTY5MCwgMjE2OTQsIDIxNjk4LCAKLSAgICAyMTcwMiwgMjE3MDYsIDIxNzEwLCAyMTcxNCwgMjE3MTgsIDIxNzIyLCAyMTcyNiwgMjE3MzAsIDIxNzM0LCAyMTczOCwgCi0gICAgMjE3NDIsIDIxNzQ2LCAyMTc1MCwgMjE3NTQsIDIxNzU4LCAyMTc2MiwgMjE3NjYsIDIxNzcwLCAyMTc3NCwgMjE3NzgsIAotICAgIDIxNzgyLCAyMTc4NiwgMjE3OTAsIDIxNzk0LCAyMTc5OCwgMjE4MDIsIDIxODA2LCAyMTgxMCwgMjE4MTQsIDIxODE4LCAKLSAgICAyMTgyMiwgMjE4MjYsIDIxODMwLCAyMTgzNCwgMjE4MzgsIDIxODQyLCAyMTg0NSwgMjE4NDksIDIxODUzLCAyMTg1NywgCi0gICAgMjE4NjEsIDIxODY1LCAyMTg2OSwgMjE4NzMsIDIxODc3LCAyMTg4MSwgMCwgMCwgMjE4ODUsIDIxODk0LCAyMTkwMCwgCi0gICAgMjE5MDUsIDIxOTA5LCAyMTkxMiwgMjE5MTcsIDIxOTIwLCAyMTkyMywgMjE5MjYsIDIxOTMxLCAyMTkzNSwgMjE5NDAsIAotICAgIDIxOTQzLCAyMTk0NiwgMjE5NDksIDIxOTUyLCAyMTk1NSwgMjE5NTgsIDIxOTYxLCAyMTk2NCwgMjE5NjcsIDIxOTcxLCAKLSAgICAyMTk3NSwgMjE5NzksIDIxOTgzLCAyMTk4NywgMjE5OTEsIDIxOTk1LCAyMTk5OSwgMjIwMDMsIDIyMDA3LCAwLCAwLCAwLCAKLSAgICAyMjAxMywgMjIwMTksIDIyMDIzLCAyMjAyNywgMjIwMzEsIDIyMDM3LCAyMjA0MSwgMjIwNDUsIDIyMDQ5LCAyMjA1NSwgCi0gICAgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzMsIDIyMDc3LCAyMjA4MSwgMjIwODUsIDIyMDkxLCAyMjA5NywgMjIxMDMsIAotICAgIDIyMTExLCAyMjExNywgMjIxMjMsIDIyMTI5LCAyMjEzNSwgMjIxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMTQ3LCAyMjE1MCwgCi0gICAgMjIxNTMsIDIyMTU2LCAyMjE1OSwgMjIxNjIsIDIyMTY2LCAyMjE3MCwgMjIxNzMsIDIyMTc3LCAyMjE4MSwgMjIxODUsIAotICAgIDIyMTg5LCAyMjE5MywgMjIxOTYsIDIyMjAwLCAyMjIwNCwgMjIyMDgsIDIyMjEyLCAyMjIxNiwgMjIyMjAsIDIyMjI0LCAKLSAgICAyMjIyOCwgMjIyMzIsIDIyMjM2LCAyMjI0MCwgMjIyNDMsIDIyMjQ3LCAyMjI1MSwgMjIyNTUsIDIyMjU5LCAyMjI2MiwgCi0gICAgMjIyNjYsIDIyMjcwLCAyMjI3NCwgMjIyNzgsIDIyMjgyLCAyMjI4NiwgMjIyOTAsIDIyMjk0LCAyMjI5OCwgMjIzMDIsIAotICAgIDIyMzA2LCAyMjMxMCwgMjIzMTQsIDIyMzE3LCAyMjMyMSwgMjIzMjUsIDIyMzI5LCAyMjMzMywgMjIzMzcsIDIyMzQxLCAKLSAgICAyMjM0NSwgMjIzNDksIDIyMzUzLCAyMjM1NywgMjIzNjEsIDIyMzY1LCAyMjM2OSwgMjIzNzMsIDIyMzc3LCAyMjM4MSwgCi0gICAgMjIzODUsIDIyMzg5LCAyMjM5MywgMjIzOTcsIDIyNDAxLCAyMjQwNSwgMjI0MDksIDIyNDEzLCAyMjQxNywgMjI0MjEsIAotICAgIDIyNDI1LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDUsIDIyNDQ5LCAyMjQ1MywgMjI0NTYsIDIyNDYwLCAKLSAgICAyMjQ2NCwgMjI0NjgsIDIyNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjQ3NiwgMjI0ODAsIAotICAgIDIyNDgzLCAyMjQ4NywgMjI0OTAsIDIyNDk0LCAyMjQ5NywgMjI1MDEsIDIyNTA3LCAyMjUxMiwgMjI1MTYsIDIyNTE5LCAKLSAgICAyMjUyMywgMjI1MjcsIDIyNTMyLCAyMjUzNiwgMjI1NDEsIDIyNTQ1LCAyMjU1MCwgMjI1NTQsIDIyNTU5LCAyMjU2MywgCi0gICAgMjI1NjgsIDIyNTc0LCAyMjU3OCwgMjI1ODMsIDIyNTg3LCAyMjU5MiwgMjI1OTgsIDIyNjAyLCAyMjYwOCwgMjI2MTQsIAotICAgIDIyNjE4LCAyMjYyMywgMjI2MzEsIDIyNjM5LCAyMjY0NiwgMjI2NTEsIDIyNjU2LCAyMjY2NSwgMjI2NzIsIDIyNjc5LCAKLSAgICAyMjY4NCwgMjI2OTAsIDIyNjk0LCAyMjY5OCwgMjI3MDIsIDIyNzA2LCAyMjcxMCwgMjI3MTQsIDIyNzE4LCAyMjcyMiwgCi0gICAgMjI3MjYsIDIyNzMwLCAyMjczNiwgMjI3NDEsIDIyNzQ2LCAyMjc0OSwgMjI3NTMsIDIyNzU3LCAyMjc2MiwgMjI3NjYsIAotICAgIDIyNzcxLCAyMjc3NSwgMjI3ODAsIDIyNzg0LCAyMjc4OSwgMjI3OTMsIDIyNzk4LCAyMjgwMiwgMjI4MDcsIDIyODExLCAKLSAgICAyMjgxNiwgMjI4MjIsIDIyODI2LCAyMjgzMSwgMjI4MzYsIDIyODQwLCAyMjg0NCwgMjI4NDgsIDIyODUyLCAyMjg1NSwgCi0gICAgMjI4NTksIDIyODY1LCAyMjg3MCwgMjI4NzUsIDIyODc5LCAyMjg4MywgMjI4ODcsIDIyODkyLCAyMjg5NiwgMjI5MDEsIAotICAgIDIyOTA1LCAyMjkxMCwgMjI5MTMsIDIyOTE3LCAyMjkyMSwgMjI5MjYsIDIyOTMwLCAyMjkzNSwgMjI5MzksIDIyOTQ0LCAKLSAgICAyMjk1MCwgMjI5NTQsIDIyOTU4LCAyMjk2MiwgMjI5NjYsIDIyOTcwLCAyMjk3NCwgMjI5NzgsIDIyOTgyLCAyMjk4NiwgCi0gICAgMjI5OTAsIDIyOTk0LCAyMzAwMCwgMjMwMDMsIDIzMDA3LCAyMzAxMSwgMjMwMTYsIDIzMDIwLCAyMzAyNSwgMjMwMjksIAotICAgIDIzMDM0LCAyMzAzOCwgMjMwNDMsIDIzMDQ3LCAyMzA1MiwgMjMwNTYsIDIzMDYxLCAyMzA2NSwgMjMwNzAsIDIzMDc2LCAKLSAgICAyMzA4MCwgMjMwODQsIDIzMDkwLCAyMzA5NiwgMjMxMDIsIDIzMTA4LCAyMzExMiwgMjMxMTYsIDIzMTIwLCAyMzEyNCwgCi0gICAgMjMxMjgsIDIzMTMyLCAyMzEzOCwgMjMxNDIsIDIzMTQ2LCAyMzE1MCwgMjMxNTUsIDIzMTU5LCAyMzE2NCwgMjMxNjgsIAotICAgIDIzMTczLCAyMzE3NywgMjMxODIsIDIzMTg2LCAyMzE5MSwgMjMxOTUsIDIzMjAwLCAyMzIwNCwgMjMyMDksIDIzMjE1LCAKLSAgICAyMzIxOSwgMjMyMjUsIDIzMjI5LCAyMzIzMywgMjMyMzcsIDIzMjQxLCAyMzI0NSwgMjMyNDksIDIzMjU1LCAyMzI1OCwgCi0gICAgMjMyNjIsIDIzMjY2LCAyMzI3MSwgMjMyNzUsIDIzMjgwLCAyMzI4NCwgMjMyODksIDIzMjkzLCAyMzI5OCwgMjMzMDIsIAotICAgIDIzMzA3LCAyMzMxMSwgMjMzMTYsIDIzMzIwLCAyMzMyNSwgMjMzMzEsIDIzMzM0LCAyMzMzOCwgMjMzNDIsIDIzMzQ3LCAKLSAgICAyMzM1MiwgMjMzNTYsIDIzMzYwLCAyMzM2NCwgMjMzNjgsIDIzMzcyLCAyMzM3NiwgMjMzODIsIDIzMzg1LCAyMzM4OSwgCi0gICAgMjMzOTMsIDIzMzk4LCAyMzQwMiwgMjM0MDcsIDIzNDExLCAyMzQxNiwgMjM0MjIsIDIzNDI2LCAyMzQzMSwgMjM0MzUsIAotICAgIDIzNDM5LCAyMzQ0MywgMjM0NDcsIDIzNDUxLCAyMzQ1NSwgMjM0NTksIDIzNDY1LCAyMzQ2OSwgMjM0NzMsIDIzNDc3LCAKLSAgICAyMzQ4MiwgMjM0ODYsIDIzNDkxLCAyMzQ5NSwgMjM1MDAsIDIzNTA0LCAyMzUwOSwgMjM1MTMsIDIzNTE4LCAyMzUyMiwgCi0gICAgMjM1MjcsIDIzNTMxLCAyMzUzNiwgMjM1MzksIDIzNTQzLCAyMzU0NywgMjM1NTEsIDIzNTU1LCAyMzU1OSwgMjM1NjMsIAotICAgIDIzNTY3LCAyMzU3MSwgMjM1NzcsIDIzNTgwLCAyMzU4NCwgMjM1ODgsIDIzNTkzLCAyMzU5NywgMjM2MDIsIDIzNjA2LCAKLSAgICAyMzYxMSwgMjM2MTUsIDIzNjIwLCAyMzYyNCwgMjM2MjksIDIzNjMzLCAyMzYzOCwgMjM2NDIsIDIzNjQ3LCAyMzY1MywgCi0gICAgMjM2NTcsIDIzNjYzLCAyMzY2NywgMjM2NzMsIDIzNjc5LCAyMzY4NSwgMjM2OTEsIDIzNjk3LCAyMzcwMywgMjM3MDksIAotICAgIDIzNzE1LCAyMzcxOSwgMjM3MjMsIDIzNzI3LCAyMzczMSwgMjM3MzUsIDIzNzM5LCAyMzc0MywgMjM3NDcsIDIzNzUyLCAKLSAgICAyMzc1NiwgMjM3NjEsIDIzNzY1LCAyMzc3MCwgMjM3NzQsIDIzNzc5LCAyMzc4MywgMjM3ODgsIDIzNzkyLCAyMzc5NywgCi0gICAgMjM4MDEsIDIzODA2LCAyMzgxMCwgMjM4MTQsIDIzODE4LCAyMzgyMiwgMjM4MjYsIDIzODMwLCAyMzgzNCwgMjM4NDAsIAotICAgIDIzODQzLCAyMzg0NywgMjM4NTEsIDIzODU2LCAyMzg2MCwgMjM4NjUsIDIzODY5LCAyMzg3NCwgMjM4NzgsIDIzODgzLCAKLSAgICAyMzg4NywgMjM4OTIsIDIzODk2LCAyMzkwMSwgMjM5MDUsIDIzOTEwLCAyMzkxNiwgMjM5MjAsIDIzOTI2LCAyMzkzMSwgCi0gICAgMjM5MzcsIDIzOTQxLCAyMzk0NywgMjM5NTIsIDIzOTU2LCAyMzk2MCwgMjM5NjQsIDIzOTY4LCAyMzk3MiwgMjM5NzcsIAotICAgIDIzOTgwLCAyMzk4NCwgMjM5ODksIDIzOTkzLCAyMzk5OCwgMjQwMDEsIDI0MDA1LCAyNDAwOSwgMjQwMTMsIDI0MDE3LCAKLSAgICAyNDAyMSwgMjQwMjUsIDI0MDI5LCAyNDAzMywgMjQwMzcsIDI0MDQxLCAyNDA0NSwgMjQwNTAsIDI0MDU0LCAyNDA1OCwgCi0gICAgMjQwNjQsIDI0MDY4LCAyNDA3NCwgMjQwNzgsIDI0MDg0LCAyNDA4OCwgMjQwOTIsIDI0MDk2LCAyNDEwMCwgMjQxMDQsIAotICAgIDI0MTA5LCAyNDExMywgMjQxMTcsIDI0MTIxLCAyNDEyNSwgMjQxMjksIDI0MTMzLCAyNDEzNywgMjQxNDEsIDI0MTQ1LCAKLSAgICAyNDE0OSwgMjQxNTUsIDI0MTYxLCAyNDE2NywgMjQxNzMsIDI0MTc5LCAyNDE4NCwgMjQxOTAsIDI0MTk2LCAyNDIwMiwgCi0gICAgMjQyMDYsIDI0MjEwLCAyNDIxNCwgMjQyMTgsIDI0MjIyLCAyNDIyNiwgMjQyMzAsIDI0MjM0LCAyNDIzOCwgMjQyNDIsIAotICAgIDI0MjQ2LCAyNDI1MCwgMjQyNTQsIDI0MjU5LCAyNDI2NCwgMjQyNjksIDI0MjczLCAyNDI3NywgMjQyODEsIDI0Mjg1LCAKLSAgICAyNDI4OSwgMjQyOTMsIDI0Mjk3LCAyNDMwMSwgMjQzMDUsIDI0MzA5LCAyNDMxNSwgMjQzMjEsIDI0MzI3LCAyNDMzMywgCi0gICAgMjQzMzksIDI0MzQ1LCAyNDM1MSwgMjQzNTcsIDI0MzYzLCAyNDM2NywgMjQzNzEsIDI0Mzc1LCAyNDM3OSwgMjQzODMsIAotICAgIDI0Mzg3LCAyNDM5MSwgMjQzOTcsIDI0NDAzLCAyNDQwOSwgMjQ0MTUsIDI0NDIxLCAyNDQyNywgMjQ0MzMsIDI0NDM5LCAKLSAgICAyNDQ0NSwgMjQ0NTAsIDI0NDU1LCAyNDQ2MCwgMjQ0NjUsIDI0NDcxLCAyNDQ3NywgMjQ0ODMsIDI0NDg5LCAyNDQ5NSwgCi0gICAgMjQ1MDEsIDI0NTA3LCAyNDUxMiwgMjQ1MTgsIDI0NTI0LCAyNDUzMCwgMjQ1MzUsIDI0NTQxLCAyNDU0NywgMjQ1NTMsIAotICAgIDI0NTU4LCAyNDU2MywgMjQ1NjgsIDI0NTczLCAyNDU3OCwgMjQ1ODMsIDI0NTg4LCAyNDU5MywgMjQ1OTgsIDI0NjAzLCAKLSAgICAyNDYwOCwgMjQ2MTMsIDI0NjE3LCAyNDYyMiwgMjQ2MjcsIDI0NjMyLCAyNDYzNywgMjQ2NDIsIDI0NjQ3LCAyNDY1MiwgCi0gICAgMjQ2NTcsIDI0NjYyLCAyNDY2NywgMjQ2NzIsIDI0Njc3LCAyNDY4MiwgMjQ2ODcsIDI0NjkyLCAyNDY5NywgMjQ3MDIsIAotICAgIDI0NzA3LCAyNDcxMiwgMjQ3MTcsIDI0NzIyLCAyNDcyNywgMjQ3MzIsIDI0NzM3LCAyNDc0MiwgMjQ3NDcsIDI0NzUyLCAKLSAgICAyNDc1NywgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzYsIDI0NzgxLCAyNDc4NiwgMjQ3OTEsIDI0Nzk2LCAyNDgwMSwgCi0gICAgMjQ4MDYsIDI0ODExLCAyNDgxNiwgMjQ4MjEsIDI0ODI2LCAyNDgzMSwgMjQ4MzYsIDI0ODQxLCAyNDg0NiwgMjQ4NTEsIAotICAgIDI0ODU2LCAyNDg2MSwgMjQ4NjYsIDI0ODcxLCAyNDg3NiwgMjQ4ODEsIDI0ODg2LCAyNDg5MSwgMjQ4OTUsIDI0OTAwLCAKLSAgICAyNDkwNSwgMjQ5MTAsIDI0OTE1LCAyNDkyMCwgMjQ5MjQsIDI0OTI5LCAyNDkzNCwgMjQ5MzksIDI0OTQ0LCAyNDk0OSwgCi0gICAgMjQ5NTMsIDI0OTU4LCAyNDk2NCwgMjQ5NjksIDI0OTc0LCAyNDk3OSwgMjQ5ODQsIDI0OTkwLCAyNDk5NSwgMjUwMDAsIAotICAgIDI1MDA1LCAyNTAxMCwgMjUwMTUsIDI1MDIwLCAyNTAyNSwgMjUwMzAsIDI1MDM1LCAyNTA0MCwgMjUwNDUsIDI1MDUwLCAKLSAgICAyNTA1NSwgMjUwNjAsIDI1MDY1LCAyNTA3MCwgMjUwNzUsIDI1MDgwLCAyNTA4NSwgMjUwOTAsIDI1MDk1LCAyNTEwMCwgCi0gICAgMjUxMDUsIDI1MTEwLCAyNTExNSwgMjUxMjAsIDI1MTI1LCAyNTEzMCwgMjUxMzUsIDI1MTQwLCAyNTE0NSwgMjUxNTAsIAotICAgIDI1MTU1LCAyNTE2MCwgMjUxNjUsIDI1MTcwLCAyNTE3NSwgMjUxODAsIDI1MTg1LCAyNTE5MCwgMjUxOTUsIDI1MjAwLCAKLSAgICAyNTIwNSwgMjUyMTAsIDI1MjE2LCAyNTIyMSwgMjUyMjYsIDI1MjMxLCAyNTIzNiwgMjUyNDEsIDI1MjQ2LCAyNTI1MSwgCi0gICAgMjUyNTYsIDI1MjYxLCAyNTI2NiwgMjUyNzEsIDI1Mjc1LCAyNTI4MCwgMjUyODUsIDI1MjkwLCAyNTI5NSwgMjUzMDAsIAotICAgIDI1MzA1LCAyNTMxMCwgMjUzMTUsIDI1MzIwLCAyNTMyNSwgMjUzMzAsIDI1MzM1LCAyNTM0MCwgMjUzNDUsIDI1MzUwLCAKLSAgICAyNTM1NSwgMjUzNjAsIDI1MzY1LCAyNTM3MCwgMjUzNzUsIDI1MzgwLCAyNTM4NSwgMjUzOTAsIDI1Mzk1LCAyNTQwMCwgCi0gICAgMjU0MDUsIDI1NDExLCAyNTQxNSwgMjU0MTksIDI1NDIzLCAyNTQyNywgMjU0MzEsIDI1NDM1LCAyNTQzOSwgMjU0NDMsIAotICAgIDI1NDQ5LCAyNTQ1NSwgMjU0NjEsIDI1NDY3LCAyNTQ3MywgMjU0NzksIDI1NDg1LCAyNTQ5MiwgMjU0OTgsIDI1NTAzLCAKLSAgICAyNTUwOCwgMjU1MTMsIDI1NTE4LCAyNTUyMywgMjU1MjgsIDI1NTMzLCAyNTUzOCwgMjU1NDMsIDI1NTQ4LCAyNTU1MywgCi0gICAgMjU1NTgsIDI1NTYzLCAyNTU2OCwgMjU1NzMsIDI1NTc4LCAyNTU4MywgMjU1ODgsIDI1NTkzLCAyNTU5OCwgMjU2MDMsIAotICAgIDI1NjA4LCAyNTYxMywgMjU2MTgsIDI1NjIzLCAyNTYyOCwgMjU2MzMsIDI1NjM4LCAwLCAwLCAwLCAyNTY0NSwgMjU2NTUsIAotICAgIDI1NjU5LCAyNTY2NiwgMjU2NzAsIDI1Njc0LCAyNTY3OCwgMjU2ODYsIDI1NjkwLCAyNTY5NSwgMjU3MDAsIDI1NzA1LCAKLSAgICAyNTcwOSwgMjU3MTQsIDI1NzE5LCAyNTcyMiwgMjU3MjYsIDI1NzMwLCAyNTczOSwgMjU3NDMsIDI1NzQ3LCAyNTc1MywgCi0gICAgMjU3NTcsIDI1NzYxLCAyNTc2OSwgMjU3NzMsIDI1NzgxLCAyNTc4NywgMjU3OTMsIDI1Nzk5LCAyNTgwNSwgMjU4MTUsIAotICAgIDI1ODIxLCAyNTgyNSwgMjU4MzQsIDI1ODM3LCAyNTg0MywgMjU4NDcsIDI1ODUzLCAyNTg1OCwgMjU4NjQsIDI1ODcyLCAKLSAgICAyNTg3OCwgMjU4ODQsIDI1ODkyLCAyNTg5OCwgMjU5MDIsIDI1OTA2LCAyNTkxNiwgMjU5MjIsIDI1OTI2LCAyNTkzNiwgCi0gICAgMjU5NDIsIDI1OTQ2LCAyNTk1MCwgMjU5NTcsIDI1OTY0LCAyNTk2OSwgMjU5NzQsIDI1OTgzLCAyNTk4NywgMjU5OTEsIAotICAgIDI1OTk1LCAyNjAwMywgMjYwMTAsIDI2MDE0LCAyNjAxOCwgMjYwMjIsIDI2MDI2LCAyNjAzMCwgMjYwMzQsIDI2MDM4LCAKLSAgICAyNjA0MiwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzMsIDI2MDc3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjA4MSwgMjYwODUsIDI2MDg5LCAyNjA5MywgMjYwOTcsIAotICAgIDI2MTAyLCAyNjEwNywgMjYxMTIsIDI2MTE3LCAyNjEyMSwgMjYxMjUsIDI2MTMwLCAyNjEzNCwgMCwgMjYxMzgsIDI2MTQzLCAKLSAgICAyNjE0OCwgMjYxNTIsIDI2MTU2LCAyNjE2MSwgMjYxNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2MTcxLCAyNjE3NSwgMjYxNzksIDI2MTgzLCAyNjE4NywgMjYxOTIsIDI2MTk3LCAyNjIwMiwgMjYyMDcsIDI2MjExLCAKLSAgICAyNjIxNSwgMjYyMjAsIDI2MjI0LCAyNjIyOCwgMjYyMzIsIDI2MjM3LCAyNjI0MiwgMjYyNDYsIDI2MjUwLCAyNjI1NSwgCi0gICAgMjYyNjAsIDI2MjY1LCAyNjI3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyNzYsIDI2MjgwLCAyNjI4NCwgCi0gICAgMjYyODgsIDI2MjkyLCAyNjI5NywgMjYzMDIsIDI2MzA3LCAyNjMxMiwgMjYzMTYsIDI2MzIwLCAyNjMyNSwgMjYzMjksIAotICAgIDI2MzMzLCAyNjMzNywgMjYzNDIsIDI2MzQ3LCAyNjM1MSwgMjYzNTUsIDI2MzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNjM2NSwgMjYzNjksIDI2MzczLCAyNjM3NywgMjYzODEsIDI2Mzg2LCAyNjM5MSwgMjYzOTYsIAotICAgIDI2NDAxLCAyNjQwNSwgMjY0MDksIDI2NDE0LCAyNjQxOCwgMCwgMjY0MjIsIDI2NDI3LCAyNjQzMiwgMCwgMjY0MzYsIAotICAgIDI2NDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQ0NiwgMjY0NDksIDI2NDUzLCAyNjQ1NywgCi0gICAgMjY0NjEsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc3LCAyNjQ4MSwgMjY0ODUsIDI2NDg5LCAyNjQ5MywgMjY0OTcsIAotICAgIDI2NTAxLCAyNjUwNSwgMjY1MDksIDI2NTEzLCAyNjUxNiwgMjY1MjAsIDI2NTI0LCAyNjUyOCwgMjY1MzIsIDI2NTM2LCAKLSAgICAyNjU0MCwgMjY1NDQsIDI2NTQ4LCAyNjU1MiwgMjY1NTYsIDI2NTYwLCAyNjU2NCwgMjY1NjgsIDI2NTcxLCAyNjU3NCwgCi0gICAgMjY1NzgsIDI2NTgyLCAyNjU4OCwgMjY1OTQsIDI2NjAwLCAyNjYwNiwgMjY2MTIsIDI2NjE4LCAyNjYyNCwgMjY2MzAsIAotICAgIDI2NjM2LCAyNjY0MiwgMjY2NDgsIDI2NjU0LCAyNjY2MCwgMjY2NjYsIDI2Njc1LCAyNjY4NCwgMjY2OTAsIDI2Njk2LCAKLSAgICAyNjcwMiwgMjY3MDcsIDI2NzExLCAyNjcxNiwgMjY3MjEsIDI2NzI2LCAyNjczMCwgMjY3MzUsIDI2NzQwLCAyNjc0NSwgCi0gICAgMjY3NDksIDI2NzU0LCAyNjc1OCwgMjY3NjMsIDI2NzY4LCAyNjc3MywgMjY3NzgsIDI2NzgyLCAyNjc4NiwgMjY3OTAsIAotICAgIDI2Nzk0LCAyNjc5OCwgMjY4MDIsIDI2ODA2LCAyNjgxMCwgMjY4MTQsIDI2ODE4LCAyNjgyNCwgMjY4MjgsIDI2ODMyLCAKLSAgICAyNjgzNiwgMjY4NDAsIDI2ODQ0LCAyNjg1MiwgMjY4NTgsIDI2ODYyLCAyNjg2OCwgMjY4NzIsIDI2ODc4LCAyNjg4MiwgMCwgCi0gICAgMCwgMjY4ODYsIDI2ODkwLCAyNjg5MywgMjY4OTYsIDI2ODk5LCAyNjkwMiwgMjY5MDUsIDI2OTA4LCAyNjkxMSwgMjY5MTQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTE3LCAyNjkyNSwgMjY5MzMsIDI2OTQxLCAyNjk0OSwgMjY5NTcsIDI2OTY1LCAyNjk3MywgCi0gICAgMjY5ODEsIDI2OTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk5NywgMjcwMDAsIDI3MDAzLCAyNzAwNiwgMjcwMTEsIDI3MDE0LCAKLSAgICAyNzAxOSwgMjcwMjYsIDI3MDM0LCAyNzAzOSwgMjcwNDYsIDI3MDQ5LCAyNzA1NiwgMjcwNjMsIDI3MDcwLCAwLCAyNzA3NCwgCi0gICAgMjcwNzgsIDI3MDgxLCAyNzA4NCwgMjcwODcsIDI3MDkwLCAyNzA5MywgMjcwOTYsIDI3MDk5LCAyNzEwMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjcxMDUsIDI3MTA4LCAyNzExMSwgMjcxMTQsIDI3MTE3LCAyNzEyMCwgMjcxMjQsIDI3MTI4LCAyNzEzMiwgCi0gICAgMjcxMzUsIDI3MTM5LCAyNzE0MywgMjcxNDYsIDI3MTUwLCAyNzE1NCwgMjcxNTcsIDI3MTYxLCAyNzE2NCwgMjcxNjgsIAotICAgIDI3MTcyLCAyNzE3NiwgMjcxODAsIDI3MTg0LCAyNzE4NywgMjcxOTAsIDI3MTk0LCAyNzE5OCwgMjcyMDEsIDI3MjA1LCAKLSAgICAyNzIwOSwgMjcyMTMsIDI3MjE3LCAyNzIyMSwgMjcyMjUsIDI3MjI5LCAyNzIzMywgMjcyNDAsIDI3MjQ1LCAyNzI1MCwgCi0gICAgMjcyNTUsIDI3MjYwLCAyNzI2NiwgMjcyNzIsIDI3Mjc4LCAyNzI4NCwgMjcyODksIDI3Mjk1LCAyNzMwMSwgMjczMDYsIAotICAgIDI3MzEyLCAyNzMxOCwgMjczMjQsIDI3MzMwLCAyNzMzNiwgMjczNDEsIDI3MzQ3LCAyNzM1MiwgMjczNTgsIDI3MzY0LCAKLSAgICAyNzM3MCwgMjczNzYsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk4LCAyNzQwNCwgMjc0MDksIDI3NDE1LCAyNzQyMCwgCi0gICAgMjc0MjYsIDI3NDMxLCAyNzQzNiwgMjc0NDIsIDI3NDQ4LCAyNzQ1NCwgMjc0NjAsIDI3NDY2LCAyNzQ3MiwgMjc0NzgsIAotICAgIDI3NDg0LCAyNzQ5MCwgMjc0OTYsIDI3NTAyLCAyNzUwOCwgMjc1MTMsIDI3NTE4LCAyNzUyMywgMjc1MjksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI3NTM1LCAyNzU0NCwgMjc1NTMsIDI3NTYxLCAyNzU2OSwgMjc1NzksIDI3NTg3LCAyNzU5NiwgCi0gICAgMjc2MDMsIDI3NjEwLCAyNzYxNywgMjc2MjUsIDI3NjMzLCAyNzY0MSwgMjc2NDksIDI3NjU3LCAyNzY2NSwgMjc2NzMsIAotICAgIDI3NjgxLCAyNzY4OCwgMjc2OTYsIDI3NzA0LCAyNzcxMiwgMjc3MjAsIDI3NzI4LCAyNzczOCwgMjc3NDgsIDI3NzU4LCAKLSAgICAyNzc2OCwgMjc3NzgsIDI3Nzg4LCAyNzc5OCwgMjc4MDgsIDI3ODE4LCAyNzgyOCwgMjc4MzgsIDI3ODQ4LCAyNzg1OCwgCi0gICAgMjc4NjgsIDI3ODc2LCAyNzg4NCwgMjc4OTQsIDI3OTAyLCAwLCAwLCAwLCAwLCAwLCAyNzkxMiwgMjc5MTYsIDI3OTIwLCAKLSAgICAyNzkyNCwgMjc5MjgsIDI3OTMyLCAyNzkzNiwgMjc5NDAsIDI3OTQ0LCAyNzk0OCwgMjc5NTIsIDI3OTU2LCAyNzk2MCwgCi0gICAgMjc5NjQsIDI3OTY4LCAyNzk3MiwgMjc5NzYsIDI3OTgwLCAyNzk4NCwgMjc5ODgsIDI3OTkyLCAyNzk5NiwgMjgwMDAsIAotICAgIDI4MDA0LCAyODAxMCwgMjgwMTQsIDI4MDIwLCAyODAyNCwgMjgwMzAsIDI4MDM0LCAyODA0MCwgMjgwNDQsIDI4MDQ4LCAKLSAgICAyODA1MiwgMjgwNTYsIDI4MDYwLCAyODA2NCwgMjgwNzAsIDI4MDc2LCAyODA4MiwgMjgwODgsIDI4MDkzLCAyODA5OSwgCi0gICAgMjgxMDUsIDI4MTExLCAyODExNywgMjgxMjMsIDI4MTI5LCAyODEzNiwgMjgxNDIsIDI4MTQ3LCAyODE1MiwgMjgxNTYsIAotICAgIDI4MTYwLCAyODE2NCwgMjgxNjgsIDI4MTcyLCAyODE3NiwgMjgxODAsIDI4MTg2LCAyODE5MiwgMjgxOTgsIDI4MjAzLCAKLSAgICAyODIxMCwgMjgyMTUsIDI4MjIwLCAyODIyNiwgMjgyMzEsIDI4MjM4LCAyODI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjgyNTIsIDI4MjU4LCAyODI2MiwgMjgyNjcsIDI4MjcyLCAyODI3NywgMjgyODIsIDI4Mjg3LCAyODI5MiwgCi0gICAgMjgyOTcsIDI4MzAyLCAyODMwNywgMjgzMTIsIDI4MzE3LCAyODMyMiwgMjgzMjcsIDI4MzMxLCAyODMzNSwgMjgzNDAsIAotICAgIDI4MzQ1LCAyODM1MCwgMjgzNTQsIDI4MzU4LCAyODM2MiwgMjgzNjcsIDI4MzcyLCAyODM3NywgMjgzODIsIDI4Mzg2LCAwLCAKLSAgICAwLCAwLCAyODM5MCwgMjgzOTUsIDI4NDAwLCAyODQwNSwgMjg0MTEsIDI4NDE3LCAyODQyMywgMjg0MjksIDI4NDM0LCAKLSAgICAyODQzOSwgMjg0NDUsIDI4NDUxLCAwLCAwLCAwLCAwLCAyODQ1OCwgMjg0NjMsIDI4NDY5LCAyODQ3NSwgMjg0ODEsIAotICAgIDI4NDg2LCAyODQ5MSwgMjg0OTYsIDI4NTAxLCAyODUwNywgMjg1MTIsIDI4NTE3LCAwLCAwLCAwLCAwLCAyODUyMiwgMCwgMCwgCi0gICAgMCwgMjg1MjcsIDI4NTMyLCAyODUzNywgMjg1NDIsIDI4NTQ2LCAyODU1MCwgMjg1NTQsIDI4NTU4LCAyODU2MiwgMjg1NjYsIAotICAgIDI4NTcwLCAyODU3NCwgMjg1NzgsIDI4NTgzLCAyODU4OSwgMjg1OTUsIDI4NjAxLCAyODYwNiwgMjg2MTEsIDI4NjE3LCAKLSAgICAyODYyMywgMjg2MjksIDI4NjM0LCAyODY0MCwgMjg2NDUsIDI4NjUxLCAyODY1NywgMjg2NjIsIDI4NjY4LCAyODY3NCwgCi0gICAgMjg2ODAsIDI4Njg1LCAyODY5MCwgMjg2OTUsIDI4NzAxLCAyODcwNywgMjg3MTIsIDI4NzE4LCAyODcyMywgMjg3MjksIAotICAgIDI4NzM0LCAyODc0MCwgMCwgMCwgMjg3NDYsIDI4NzUyLCAyODc1OCwgMjg3NjQsIDI4NzcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODc3NiwgMjg3ODMsIDI4NzkwLCAyODc5NiwgMjg4MDMsIDI4ODEwLCAyODgxNiwgMjg4MjMsIAotICAgIDI4ODMwLCAyODgzNywgMjg4NDMsIDI4ODQ5LCAyODg1NiwgMjg4NjIsIDI4ODY4LCAyODg3NSwgMjg4ODIsIDI4ODg4LCAKLSAgICAyODg5NSwgMjg5MDIsIDI4OTA4LCAyODkxNCwgMjg5MjEsIDI4OTI3LCAyODkzMywgMjg5NDAsIDI4OTQ2LCAyODk1MywgCi0gICAgMjg5NjAsIDI4OTY3LCAyODk3NCwgMjg5ODEsIDI4OTg4LCAyODk5NCwgMjkwMDEsIDI5MDA4LCAyOTAxNCwgMjkwMjEsIAotICAgIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDI5MDQ5LCAyOTA1NiwgMjkwNjMsIDAsIDAsIDAsIDAsIDI5MDcwLCAyOTA3OCwgCi0gICAgMjkwODUsIDI5MDkyLCAyOTA5OCwgMjkxMDUsIDI5MTExLCAyOTExOCwgMjkxMjQsIDI5MTMxLCAyOTEzOCwgMjkxNDUsIAotICAgIDI5MTUyLCAyOTE1OSwgMjkxNjYsIDI5MTczLCAyOTE4MCwgMjkxODcsIDI5MTk0LCAyOTIwMSwgMjkyMDgsIDI5MjE0LCAKLSAgICAyOTIyMSwgMjkyMjgsIDI5MjM1LCAyOTI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMjkyNDcsIDI5MjUzLCAyOTI1OCwgMjkyNjMsIAotICAgIDI5MjY4LCAyOTI3MywgMjkyNzgsIDI5MjgzLCAyOTI4OCwgMjkyOTMsIDI5Mjk4LCAwLCAwLCAwLCAyOTMwNCwgMjkzMTAsIAotICAgIDI5MzE2LCAyOTMyMCwgMjkzMjYsIDI5MzMyLCAyOTMzOCwgMjkzNDQsIDI5MzUwLCAyOTM1NiwgMjkzNjIsIDI5MzY4LCAKLSAgICAyOTM3NCwgMjkzODAsIDI5Mzg2LCAyOTM5MiwgMjkzOTgsIDI5NDA0LCAyOTQxMCwgMjk0MTQsIDI5NDIwLCAyOTQyNiwgCi0gICAgMjk0MzIsIDI5NDM4LCAyOTQ0NCwgMjk0NTAsIDI5NDU2LCAyOTQ2MiwgMjk0NjgsIDI5NDc0LCAyOTQ4MCwgMjk0ODYsIAotICAgIDI5NDkyLCAyOTQ5OCwgMjk1MDQsIDI5NTA4LCAyOTUxMywgMjk1MTgsIDI5NTIzLCAyOTUyNywgMjk1MzIsIDI5NTM2LCAKLSAgICAyOTU0MSwgMjk1NDYsIDI5NTUxLCAyOTU1NSwgMjk1NjAsIDI5NTY1LCAyOTU3MCwgMjk1NzUsIDI5NTgwLCAyOTU4NCwgCi0gICAgMjk1ODgsIDI5NTkzLCAyOTU5OCwgMjk2MDIsIDI5NjA2LCAyOTYxMCwgMjk2MTUsIDI5NjIwLCAyOTYyNSwgMjk2MzAsIDAsIAotICAgIDAsIDI5NjM2LCAyOTY0MCwgMjk2NDcsIDI5NjUyLCAyOTY1OCwgMjk2NjQsIDI5NjY5LCAyOTY3NSwgMjk2ODEsIDI5Njg2LCAKLSAgICAyOTY5MiwgMjk2OTgsIDI5NzA0LCAyOTcwOSwgMjk3MTUsIDI5NzIwLCAyOTcyNSwgMjk3MzEsIDI5NzM2LCAyOTc0MiwgCi0gICAgMjk3NDcsIDI5NzUzLCAyOTc1OSwgMjk3NjUsIDI5NzcxLCAyOTc3NSwgMjk3ODAsIDI5Nzg1LCAyOTc5MSwgMjk3OTcsIAotICAgIDI5ODAyLCAyOTgwOCwgMjk4MTQsIDI5ODE4LCAyOTgyMywgMjk4MjgsIDI5ODMyLCAyOTgzNywgMjk4NDIsIDI5ODQ3LCAKLSAgICAyOTg1MiwgMjk4NTgsIDI5ODY0LCAyOTg2OSwgMjk4NzQsIDI5ODc5LCAyOTg4MywgMjk4ODgsIDI5ODkyLCAyOTg5NywgCi0gICAgMjk5MDEsIDI5OTA2LCAyOTkxMSwgMjk5MTYsIDI5OTIxLCAyOTkyNywgMjk5MzMsIDI5OTQwLCAyOTk1MCwgMjk5NTksIAotICAgIDI5OTY2LCAyOTk3MiwgMjk5ODIsIDI5OTg3LCAyOTk5MywgMCwgMjk5OTgsIDMwMDAzLCAzMDAwOCwgMzAwMTYsIDMwMDIyLCAKLSAgICAzMDAzMCwgMzAwMzUsIDMwMDQxLCAzMDA0NywgMzAwNTMsIDMwMDU4LCAzMDA2NCwgMzAwNjksIDMwMDc2LCAzMDA4MiwgCi0gICAgMzAwODcsIDMwMDkzLCAzMDA5OSwgMzAxMDUsIDMwMTEyLCAzMDExOSwgMzAxMjYsIDMwMTMxLCAzMDEzNiwgMzAxNDMsIAotICAgIDMwMTUwLCAzMDE1NywgMzAxNjQsIDMwMTcxLCAwLCAwLCAzMDE3OCwgMzAxODUsIDMwMTkyLCAzMDE5OCwgMzAyMDQsIAotICAgIDMwMjEwLCAzMDIxNiwgMzAyMjIsIDMwMjI4LCAzMDIzNCwgMzAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMjQ2LCAzMDI1MiwgCi0gICAgMzAyNTcsIDMwMjYyLCAzMDI2NywgMzAyNzIsIDMwMjc3LCAzMDI4MiwgMzAyODcsIDMwMjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDI5NywgMzAzMDIsIDMwMzA3LCAzMDMxMiwgMzAzMTcsIDMwMzIyLCAzMDMyNywgMzAzMzYsIDMwMzQzLCAzMDM0OCwgCi0gICAgMzAzNTMsIDMwMzU4LCAzMDM2MywgMzAzNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY1NTEyLCA2NTUyMSwgNjU1MzAsIDY1NTQxLCA2NTU0OCwgNjU1NTMsIDY1NTU4LCA2NTU2NSwgNjU1NzIsIDY1NTc4LCAKKyAgICA2NTU4MywgNjU1ODgsIDY1NTkzLCA2NTU5OCwgNjU2MDUsIDY1NjEwLCA2NTYxNSwgNjU2MjAsIDY1NjMxLCA2NTYzNiwgCisgICAgNjU2NDEsIDY1NjQ4LCA2NTY1MywgNjU2NjAsIDY1NjY1LCA2NTY3MCwgNjU2NzcsIDY1Njg0LCA2NTY5MSwgNjU3MDAsIAorICAgIDY1NzA5LCA2NTcxNCwgNjU3MTksIDY1NzI0LCA2NTczMSwgNjU3MzYsIDY1NzQ2LCA2NTc1MywgNjU3NTgsIDY1NzYzLCAKKyAgICA2NTc2OCwgNjU3NzMsIDY1Nzc4LCA2NTc4MywgNjU3OTIsIDY1Nzk5LCA2NTgwNiwgNjU4MTEsIDY1ODE4LCA2NTgyMywgCisgICAgNjU4MzAsIDY1ODM5LCA2NTg1MCwgNjU4NTUsIDY1ODY0LCA2NTg2OSwgNjU4NzYsIDY1ODg1LCA2NTg5NCwgNjU4OTksIAorICAgIDY1OTA0LCA2NTkxMSwgNjU5MTcsIDY1OTI0LCA2NTkzMSwgNjU5MzUsIDY1OTM5LCA2NTk0MiwgNjU5NDYsIDY1OTUwLCAKKyAgICA2NTk1NCwgNjU5NTgsIDY1OTYyLCA2NTk2NiwgNjU5NzAsIDY1OTczLCA2NTk3NywgNjU5ODEsIDY1OTg1LCA2NTk4OSwgCisgICAgNjU5OTMsIDY1OTk3LCA2NjAwMCwgNjYwMDQsIDY2MDA4LCA2NjAxMSwgNjYwMTUsIDY2MDE5LCA2NjAyMywgNjYwMjcsIAorICAgIDY2MDMxLCA2NjAzNSwgNjYwMzksIDY2MDQzLCA2NjA0NywgNjYwNTEsIDY2MDU1LCA2NjA1OSwgNjYwNjMsIDY2MDY3LCAKKyAgICA2NjA3MSwgNjYwNzUsIDY2MDc5LCA2NjA4MywgNjYwODcsIDY2MDkxLCA2NjA5NSwgNjYwOTksIDY2MTAzLCA2NjEwNywgCisgICAgNjYxMTEsIDY2MTE1LCA2NjExOSwgNjYxMjMsIDY2MTI3LCA2NjEzMSwgNjYxMzUsIDY2MTM5LCA2NjE0MywgNjYxNDcsIAorICAgIDY2MTUxLCA2NjE1NSwgNjYxNTksIDY2MTYzLCA2NjE2NywgNjYxNzEsIDY2MTc1LCA2NjE3OSwgNjYxODMsIDY2MTg3LCAKKyAgICA2NjE5MCwgNjYxOTQsIDY2MTk4LCA2NjIwMiwgNjYyMDYsIDY2MjEwLCA2NjIxNCwgNjYyMTgsIDY2MjIyLCA2NjIyNiwgCisgICAgNjYyMzAsIDY2MjM0LCA2NjIzOCwgNjYyNDIsIDY2MjQ2LCA2NjI1MCwgNjYyNTQsIDY2MjU4LCA2NjI2MiwgNjYyNjYsIAorICAgIDY2MjcwLCA2NjI3NCwgNjYyNzgsIDY2MjgyLCA2NjI4NiwgNjYyOTAsIDY2Mjk0LCA2NjI5OCwgNjYzMDIsIDY2MzA2LCAKKyAgICA2NjMxMCwgNjYzMTQsIDY2MzE4LCA2NjMyMiwgNjYzMjYsIDY2MzMwLCA2NjMzNCwgNjYzMzgsIDY2MzQyLCA2NjM0NiwgCisgICAgNjYzNTAsIDY2MzU0LCA2NjM1OCwgNjYzNjIsIDY2MzY2LCA2NjM3MCwgNjYzNzQsIDY2Mzc4LCA2NjM4MiwgNjYzODYsIAorICAgIDY2MzkwLCA2NjM5NCwgNjYzOTgsIDY2NDAyLCA2NjQwNiwgNjY0MTAsIDY2NDE0LCA2NjQxOCwgNjY0MjIsIDY2NDI2LCAKKyAgICA2NjQzMCwgNjY0MzQsIDY2NDM4LCA2NjQ0MiwgNjY0NDYsIDY2NDUwLCA2NjQ1NCwgNjY0NTgsIDY2NDYyLCA2NjQ2NiwgCisgICAgNjY0NzAsIDY2NDc0LCA2NjQ3OCwgNjY0ODIsIDY2NDg2LCA2NjQ5MCwgNjY0OTQsIDY2NDk4LCA2NjUwMiwgNjY1MDYsIAorICAgIDY2NTEwLCA2NjUxNCwgNjY1MTgsIDY2NTIyLCA2NjUyNiwgNjY1MzAsIDY2NTM0LCA2NjUzOCwgNjY1NDIsIDY2NTQ2LCAKKyAgICA2NjU1MCwgNjY1NTQsIDY2NTU4LCA2NjU2MiwgNjY1NjYsIDY2NTcwLCA2NjU3NCwgNjY1NzgsIDY2NTgyLCA2NjU4NiwgCisgICAgNjY1OTAsIDY2NTk0LCA2NjU5OCwgNjY2MDIsIDY2NjA2LCA2NjYxMCwgNjY2MTQsIDY2NjE4LCA2NjYyMiwgNjY2MjYsIAorICAgIDY2NjMwLCA2NjYzNCwgNjY2MzgsIDY2NjQyLCA2NjY0NiwgNjY2NTAsIDY2NjU0LCA2NjY1OCwgNjY2NjEsIDY2NjY1LCAKKyAgICA2NjY2OSwgNjY2NzMsIDY2Njc3LCA2NjY4MSwgNjY2ODUsIDY2Njg5LCA2NjY5MywgNjY2OTcsIDY2NzAxLCA2NjcwNSwgCisgICAgNjY3MDksIDY2NzEzLCA2NjcxNywgNjY3MjEsIDY2NzI1LCA2NjcyOSwgNjY3MzMsIDY2NzM3LCA2Njc0MSwgNjY3NDUsIAorICAgIDY2NzQ5LCA2Njc1MywgNjY3NTcsIDY2NzYxLCA2Njc2NSwgNjY3NjksIDY2NzczLCA2Njc3NywgNjY3ODEsIDY2Nzg1LCAKKyAgICA2Njc4OSwgNjY3OTMsIDY2Nzk3LCA2NjgwMSwgNjY4MDUsIDY2ODA5LCA2NjgxMywgNjY4MTcsIDY2ODIxLCA2NjgyNSwgCisgICAgNjY4MjksIDY2ODMzLCA2NjgzNywgNjY4NDEsIDY2ODQ1LCA2Njg0OSwgNjY4NTMsIDY2ODU3LCA2Njg2MSwgNjY4NjUsIAorICAgIDY2ODY5LCA2Njg3MywgNjY4NzcsIDY2ODgxLCA2Njg4NSwgNjY4ODksIDY2ODkzLCA2Njg5NywgNjY5MDEsIDY2OTA1LCAKKyAgICA2NjkwOSwgNjY5MTMsIDY2OTE3LCA2NjkyMSwgNjY5MjUsIDY2OTI5LCA2NjkzMywgNjY5MzcsIDY2OTQxLCA2Njk0NSwgCisgICAgNjY5NDksIDY2OTUzLCA2Njk1NywgNjY5NjEsIDY2OTY1LCA2Njk2OSwgNjY5NzMsIDY2OTc3LCA2Njk4MSwgNjY5ODUsIAorICAgIDY2OTg5LCA2Njk5MywgNjY5OTcsIDY3MDAxLCA2NzAwNSwgNjcwMDksIDY3MDEzLCA2NzAxNywgNjcwMjEsIDY3MDI1LCAKKyAgICA2NzAyOSwgNjcwMzMsIDY3MDM3LCA2NzA0MSwgNjcwNDUsIDY3MDQ5LCA2NzA1MywgNjcwNTcsIDY3MDYxLCA2NzA2NSwgCisgICAgNjcwNjksIDY3MDczLCA2NzA3NywgNjcwODEsIDY3MDg1LCA2NzA4OSwgNjcwOTMsIDY3MDk3LCA2NzEwMSwgNjcxMDUsIAorICAgIDY3MTA5LCA2NzExMywgNjcxMTcsIDY3MTIxLCA2NzEyNCwgNjcxMjgsIDY3MTMyLCA2NzEzNiwgNjcxNDAsIDY3MTQ0LCAKKyAgICA2NzE0OCwgNjcxNTIsIDY3MTU2LCA2NzE2MCwgNjcxNjQsIDY3MTY4LCA2NzE3MiwgNjcxNzYsIDY3MTgwLCA2NzE4NCwgCisgICAgNjcxODgsIDY3MTkyLCA2NzE5NiwgNjcyMDAsIDY3MjA0LCA2NzIwOCwgNjcyMTIsIDY3MjE2LCA2NzIyMCwgNjcyMjQsIAorICAgIDY3MjI4LCA2NzIzMiwgNjcyMzYsIDY3MjQwLCA2NzI0NCwgNjcyNDgsIDY3MjUyLCA2NzI1NiwgNjcyNjAsIDY3MjY0LCAKKyAgICA2NzI2OCwgNjcyNzIsIDY3Mjc2LCA2NzI4MCwgNjcyODQsIDY3Mjg4LCA2NzI5MiwgNjcyOTYsIDY3MzAwLCA2NzMwNCwgCisgICAgNjczMDgsIDY3MzEyLCA2NzMxNiwgNjczMjAsIDY3MzI0LCA2NzMyOCwgNjczMzIsIDY3MzM2LCA2NzM0MCwgNjczNDQsIAorICAgIDY3MzQ4LCA2NzM1MiwgNjczNTYsIDY3MzYwLCA2NzM2NCwgNjczNjgsIDY3MzcyLCA2NzM3NiwgNjczODAsIDY3Mzg0LCAKKyAgICA2NzM4OCwgNjczOTIsIDY3Mzk2LCA2NzQwMCwgNjc0MDQsIDY3NDA4LCA2NzQxMiwgNjc0MTYsIDY3NDIwLCA2NzQyNCwgCisgICAgNjc0MjgsIDY3NDMyLCA2NzQzNiwgNjc0NDAsIDY3NDQ0LCA2NzQ0OCwgNjc0NTIsIDY3NDU2LCA2NzQ2MCwgNjc0NjQsIAorICAgIDY3NDY4LCA2NzQ3MiwgNjc0NzYsIDY3NDgwLCA2NzQ4MywgNjc0ODcsIDY3NDkxLCA2NzQ5NSwgNjc0OTksIDY3NTAzLCAKKyAgICA2NzUwNywgNjc1MTEsIDY3NTE1LCA2NzUxOSwgNjc1MjMsIDY3NTI3LCA2NzUzMSwgNjc1MzUsIDY3NTM5LCA2NzU0MywgCisgICAgNjc1NDcsIDY3NTUxLCA2NzU1NSwgNjc1NTksIDY3NTYzLCA2NzU2NywgNjc1NzEsIDY3NTc1LCA2NzU3OSwgNjc1ODMsIAorICAgIDY3NTg3LCA2NzU5MSwgNjc1OTUsIDY3NTk5LCA2NzYwMywgNjc2MDcsIDY3NjExLCA2NzYxNSwgNjc2MTksIDY3NjIzLCAKKyAgICA2NzYyNywgNjc2MzEsIDY3NjM1LCA2NzYzOSwgNjc2NDMsIDY3NjQ3LCA2NzY1MSwgNjc2NTUsIDY3NjU5LCA2NzY2MywgCisgICAgNjc2NjcsIDY3NjcxLCA2NzY3NSwgNjc2NzksIDY3NjgzLCA2NzY4NywgNjc2OTEsIDY3Njk1LCA2NzY5OSwgNjc3MDMsIAorICAgIDY3NzA3LCA2NzcxMSwgNjc3MTUsIDY3NzE5LCA2NzcyMywgNjc3MjcsIDY3NzMxLCA2NzczNSwgNjc3MzksIDY3NzQzLCAKKyAgICA2Nzc0NywgNjc3NTEsIDY3NzU1LCA2Nzc1OSwgNjc3NjMsIDY3NzY3LCA2Nzc3MSwgNjc3NzUsIDY3Nzc5LCA2Nzc4MywgCisgICAgNjc3ODcsIDY3NzkxLCA2Nzc5NSwgNjc3OTksIDY3ODAzLCA2NzgwNywgNjc4MTEsIDY3ODE1LCA2NzgxOSwgNjc4MjMsIAorICAgIDY3ODI3LCA2NzgzMSwgNjc4MzUsIDY3ODM5LCA2Nzg0MywgNjc4NDcsIDY3ODUxLCA2Nzg1NSwgNjc4NTksIDY3ODYzLCAKKyAgICA2Nzg2NywgNjc4NzEsIDY3ODc1LCA2Nzg3OSwgNjc4ODMsIDY3ODg3LCA2Nzg5MSwgNjc4OTUsIDY3ODk5LCA2NzkwMywgCisgICAgNjc5MDcsIDY3OTExLCA2NzkxNSwgNjc5MTksIDY3OTIzLCA2NzkyNywgNjc5MzEsIDY3OTM1LCA2NzkzOSwgNjc5NDMsIAorICAgIDY3OTQ3LCA2Nzk1MSwgNjc5NTUsIDY3OTU5LCA2Nzk2MywgNjc5NjcsIDY3OTcxLCA2Nzk3NSwgNjc5NzgsIDY3OTgyLCAKKyAgICA2Nzk4NiwgNjc5OTAsIDY3OTk0LCA2Nzk5OCwgNjgwMDIsIDY4MDA2LCA2ODAxMCwgNjgwMTQsIDY4MDE4LCA2ODAyMiwgCisgICAgNjgwMjYsIDY4MDMwLCA2ODAzNCwgNjgwMzgsIDY4MDQyLCA2ODA0NiwgNjgwNTAsIDY4MDU0LCA2ODA1OCwgNjgwNjIsIAorICAgIDY4MDY2LCA2ODA3MCwgNjgwNzQsIDY4MDc4LCA2ODA4MiwgNjgwODYsIDY4MDkwLCA2ODA5NCwgNjgwOTgsIDY4MTAyLCAKKyAgICA2ODEwNiwgNjgxMTAsIDY4MTE0LCA2ODExOCwgNjgxMjIsIDY4MTI2LCA2ODEzMCwgNjgxMzQsIDY4MTM4LCA2ODE0MiwgCisgICAgNjgxNDYsIDY4MTUwLCA2ODE1NCwgNjgxNTgsIDY4MTYyLCA2ODE2NiwgNjgxNzAsIDY4MTc0LCA2ODE3OCwgNjgxODIsIAorICAgIDY4MTg2LCA2ODE5MCwgNjgxOTQsIDY4MTk4LCA2ODIwMiwgNjgyMDYsIDY4MjEwLCA2ODIxNCwgNjgyMTgsIDY4MjIyLCAKKyAgICA2ODIyNiwgNjgyMzAsIDY4MjM0LCA2ODIzOCwgNjgyNDIsIDY4MjQ2LCA2ODI1MCwgNjgyNTQsIDY4MjU4LCA2ODI2MiwgCisgICAgNjgyNjYsIDY4MjcwLCA2ODI3NCwgNjgyNzgsIDY4MjgyLCA2ODI4NiwgNjgyOTAsIDY4Mjk0LCA2ODI5OCwgNjgzMDIsIAorICAgIDY4MzA2LCA2ODMxMCwgNjgzMTQsIDY4MzE4LCA2ODMyMiwgNjgzMjYsIDY4MzMwLCA2ODMzNCwgNjgzMzgsIDY4MzQyLCAKKyAgICA2ODM0NiwgNjgzNTAsIDY4MzU0LCA2ODM1OCwgNjgzNjIsIDY4MzY2LCA2ODM3MCwgNjgzNzQsIDY4Mzc4LCA2ODM4MiwgCisgICAgNjgzODYsIDY4MzkwLCA2ODM5NCwgNjgzOTgsIDY4NDAyLCA2ODQwNiwgNjg0MTAsIDY4NDE0LCA2ODQxOCwgNjg0MjIsIAorICAgIDY4NDI2LCA2ODQzMCwgNjg0MzMsIDY4NDM3LCA2ODQ0MSwgNjg0NDUsIDY4NDQ5LCA2ODQ1MywgNjg0NTcsIDY4NDYxLCAKKyAgICA2ODQ2NSwgNjg0NjksIDY4NDczLCA2ODQ3NywgNjg0ODEsIDY4NDg1LCA2ODQ4OSwgNjg0OTMsIDY4NDk3LCA2ODUwMSwgCisgICAgNjg1MDUsIDY4NTA5LCA2ODUxMywgNjg1MTcsIDY4NTIxLCA2ODUyNSwgNjg1MjksIDY4NTMzLCA2ODUzNywgNjg1NDEsIAorICAgIDY4NTQ1LCA2ODU0OSwgNjg1NTMsIDY4NTU3LCA2ODU2MSwgNjg1NjUsIDY4NTY5LCA2ODU3MywgNjg1NzcsIDY4NTgxLCAKKyAgICA2ODU4NSwgNjg1ODksIDY4NTkzLCA2ODU5NywgNjg2MDEsIDY4NjA1LCA2ODYwOSwgNjg2MTMsIDY4NjE3LCA2ODYyMSwgCisgICAgNjg2MjUsIDY4NjI5LCA2ODYzMywgNjg2MzcsIDY4NjQxLCA2ODY0NSwgNjg2NDksIDY4NjUzLCA2ODY1NywgNjg2NjEsIAorICAgIDY4NjY1LCA2ODY2OSwgNjg2NzMsIDY4Njc3LCA2ODY4MSwgNjg2ODUsIDY4Njg5LCA2ODY5MywgNjg2OTcsIDY4NzAxLCAKKyAgICA2ODcwNSwgNjg3MDksIDY4NzEzLCA2ODcxNywgNjg3MjEsIDY4NzI1LCA2ODcyOSwgNjg3MzMsIDY4NzM3LCA2ODc0MSwgCisgICAgNjg3NDUsIDY4NzQ5LCA2ODc1MywgNjg3NTcsIDY4NzYxLCA2ODc2NSwgNjg3NjksIDY4NzczLCA2ODc3NywgNjg3ODEsIAorICAgIDY4Nzg1LCA2ODc4OSwgNjg3OTMsIDY4Nzk3LCA2ODgwMSwgNjg4MDUsIDY4ODA5LCA2ODgxMywgNjg4MTcsIDY4ODIxLCAKKyAgICA2ODgyNSwgNjg4MjksIDY4ODMzLCA2ODgzNywgNjg4NDEsIDY4ODQ1LCA2ODg0OSwgNjg4NTMsIDY4ODU3LCA2ODg2MSwgCisgICAgNjg4NjUsIDY4ODY5LCA2ODg3MywgNjg4NzcsIDY4ODgxLCA2ODg4NSwgNjg4ODksIDY4ODkzLCA2ODg5NywgNjg5MDEsIAorICAgIDY4OTA1LCA2ODkwOSwgNjg5MTMsIDY4OTE3LCA2ODkyMSwgNjg5MjUsIDY4OTI5LCA2ODkzMywgNjg5MzcsIDY4OTQxLCAKKyAgICA2ODk0NSwgNjg5NDksIDY4OTUzLCA2ODk1NywgNjg5NjEsIDY4OTY1LCA2ODk2OSwgNjg5NzMsIDY4OTc3LCA2ODk4MSwgCisgICAgNjg5ODUsIDY4OTg5LCA2ODk5MywgNjg5OTcsIDY5MDAxLCA2OTAwNSwgNjkwMDksIDY5MDEzLCA2OTAxNywgNjkwMjEsIAorICAgIDY5MDI1LCA2OTAyOSwgNjkwMzMsIDY5MDM2LCA2OTA0MCwgNjkwNDQsIDY5MDQ4LCA2OTA1MiwgNjkwNTYsIDY5MDYwLCAKKyAgICA2OTA2NCwgNjkwNjgsIDY5MDcyLCA2OTA3NiwgNjkwODAsIDY5MDg0LCA2OTA4OCwgNjkwOTIsIDY5MDk2LCA2OTEwMCwgCisgICAgNjkxMDQsIDY5MTA4LCA2OTExMiwgNjkxMTYsIDY5MTIwLCA2OTEyNCwgNjkxMjgsIDY5MTMyLCA2OTEzNiwgNjkxNDAsIAorICAgIDY5MTQ0LCA2OTE0OCwgNjkxNTIsIDY5MTU2LCA2OTE2MCwgNjkxNjQsIDY5MTY4LCA2OTE3MiwgNjkxNzYsIDY5MTgwLCAKKyAgICA2OTE4NCwgNjkxODgsIDY5MTkyLCA2OTE5NiwgNjkyMDAsIDY5MjA0LCA2OTIwOCwgNjkyMTIsIDY5MjE2LCA2OTIyMCwgCisgICAgNjkyMjQsIDY5MjI4LCA2OTIzMiwgNjkyMzYsIDY5MjQwLCA2OTI0NCwgNjkyNDgsIDY5MjUyLCA2OTI1NiwgNjkyNjAsIAorICAgIDY5MjY0LCA2OTI2OCwgNjkyNzIsIDY5Mjc2LCA2OTI4MCwgNjkyODQsIDY5Mjg4LCA2OTI5MiwgNjkyOTYsIDY5MzAwLCAKKyAgICA2OTMwNCwgNjkzMDgsIDY5MzEyLCA2OTMxNiwgNjkzMjAsIDY5MzI0LCA2OTMyOCwgNjkzMzIsIDY5MzM2LCA2OTM0MCwgCisgICAgNjkzNDQsIDY5MzQ4LCA2OTM1MiwgNjkzNTYsIDY5MzYwLCA2OTM2NCwgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIAorICAgIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCAKKyAgICA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgCisgICAgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgwLCA2OTQ4NCwgNjk0ODgsIDY5NDkyLCA2OTQ5NiwgNjk1MDAsIAorICAgIDY5NTA0LCA2OTUwOCwgNjk1MTIsIDY5NTE2LCA2OTUyMCwgNjk1MjQsIDY5NTI4LCA2OTUzMiwgNjk1MzYsIDY5NTQwLCAKKyAgICA2OTU0NCwgNjk1NDgsIDY5NTUyLCA2OTU1NiwgNjk1NjAsIDY5NTY0LCA2OTU2OCwgNjk1NzIsIDY5NTc2LCA2OTU4MCwgCisgICAgNjk1ODQsIDY5NTg4LCA2OTU5MiwgNjk1OTYsIDY5NjAwLCA2OTYwNCwgNjk2MDgsIDY5NjEyLCA2OTYxNiwgNjk2MjAsIAorICAgIDY5NjI0LCA2OTYyOCwgNjk2MzIsIDY5NjM2LCA2OTY0MCwgNjk2NDQsIDY5NjQ4LCA2OTY1MiwgNjk2NTYsIDY5NjYwLCAKKyAgICA2OTY2NCwgNjk2NjgsIDY5NjcyLCA2OTY3NiwgNjk2ODAsIDY5Njg0LCA2OTY4OCwgNjk2OTIsIDY5Njk2LCA2OTcwMCwgCisgICAgNjk3MDQsIDY5NzA4LCA2OTcxMiwgNjk3MTYsIDY5NzIwLCA2OTcyNCwgNjk3MjgsIDY5NzMyLCA2OTczNiwgNjk3NDAsIAorICAgIDY5NzQ0LCA2OTc0OCwgNjk3NTIsIDY5NzU2LCA2OTc2MCwgNjk3NjQsIDY5NzY4LCA2OTc3MiwgNjk3NzYsIDY5NzgwLCAKKyAgICA2OTc4NCwgNjk3ODgsIDY5NzkyLCA2OTc5NiwgNjk4MDAsIDY5ODA0LCA2OTgwOCwgNjk4MTIsIDY5ODE2LCA2OTgyMCwgCisgICAgNjk4MjQsIDY5ODI4LCA2OTgzMiwgNjk4MzYsIDY5ODQwLCA2OTg0NCwgNjk4NDgsIDY5ODUyLCA2OTg1NiwgNjk4NjAsIAorICAgIDY5ODY0LCA2OTg2OCwgNjk4NzIsIDY5ODc2LCA2OTg4MCwgNjk4ODQsIDY5ODg4LCA2OTg5MiwgNjk4OTYsIDY5OTAwLCAKKyAgICA2OTkwNCwgNjk5MDgsIDY5OTEyLCA2OTkxNiwgNjk5MjAsIDY5OTI0LCA2OTkyOCwgNjk5MzIsIDY5OTM2LCA2OTk0MCwgCisgICAgNjk5NDQsIDY5OTQ4LCA2OTk1MiwgNjk5NTYsIDY5OTYwLCA2OTk2NCwgNjk5NjgsIDY5OTcyLCA2OTk3NiwgNjk5ODAsIAorICAgIDY5OTg0LCA2OTk4OCwgNjk5OTIsIDY5OTk2LCA3MDAwMCwgNzAwMDQsIDcwMDA4LCA3MDAxMiwgNzAwMTYsIDcwMDIwLCAKKyAgICA3MDAyNCwgNzAwMjgsIDcwMDMyLCA3MDAzNiwgNzAwNDAsIDcwMDQ0LCA3MDA0OCwgNzAwNTIsIDcwMDU2LCA3MDA2MCwgCisgICAgNzAwNjQsIDcwMDY4LCA3MDA3MiwgNzAwNzYsIDcwMDgwLCA3MDA4NCwgNzAwODgsIDcwMDkyLCA3MDA5NiwgNzAxMDAsIAorICAgIDcwMTA0LCA3MDEwOCwgNzAxMTIsIDcwMTE2LCA3MDEyMCwgNzAxMjQsIDcwMTI4LCA3MDEzMiwgNzAxMzYsIDcwMTQwLCAKKyAgICA3MDE0NCwgNzAxNDgsIDcwMTUyLCA3MDE1NiwgNzAxNjAsIDcwMTY0LCA3MDE2OCwgNzAxNzIsIDcwMTc2LCA3MDE4MCwgCisgICAgNzAxODQsIDcwMTg4LCA3MDE5MiwgNzAxOTYsIDcwMjAwLCA3MDIwNCwgNzAyMDgsIDcwMjEyLCA3MDIxNiwgNzAyMjAsIAorICAgIDcwMjI0LCA3MDIyOCwgNzAyMzIsIDcwMjM2LCA3MDI0MCwgNzAyNDQsIDcwMjQ4LCA3MDI1MiwgNzAyNTYsIDcwMjYwLCAKKyAgICA3MDI2NCwgNzAyNjgsIDcwMjcyLCA3MDI3NiwgNzAyODAsIDcwMjg0LCA3MDI4OCwgNzAyOTIsIDcwMjk2LCA3MDMwMCwgCisgICAgNzAzMDQsIDcwMzA4LCA3MDMxMiwgNzAzMTYsIDcwMzIwLCA3MDMyNCwgNzAzMjgsIDcwMzMyLCA3MDMzNiwgNzAzNDAsIAorICAgIDcwMzQ0LCA3MDM0OCwgNzAzNTIsIDcwMzU2LCA3MDM2MCwgNzAzNjQsIDcwMzY4LCA3MDM3MiwgNzAzNzYsIDcwMzgwLCAKKyAgICA3MDM4NCwgNzAzODgsIDcwMzkyLCA3MDM5NiwgNzA0MDAsIDcwNDA0LCA3MDQwOCwgNzA0MTIsIDcwNDE2LCA3MDQyMCwgCisgICAgNzA0MjQsIDcwNDI4LCA3MDQzMiwgNzA0MzYsIDcwNDQwLCA3MDQ0NCwgNzA0NDgsIDcwNDUyLCA3MDQ1NiwgNzA0NjAsIAorICAgIDcwNDY0LCA3MDQ2OCwgNzA0NzIsIDcwNDc2LCA3MDQ4MCwgNzA0ODQsIDcwNDg4LCA3MDQ5MiwgNzA0OTYsIDcwNTAwLCAKKyAgICA3MDUwNCwgNzA1MDgsIDcwNTEyLCA3MDUxNiwgNzA1MjAsIDcwNTI0LCA3MDUyOCwgNzA1MzIsIDcwNTM2LCA3MDU0MCwgCisgICAgNzA1NDQsIDcwNTQ4LCA3MDU1MiwgNzA1NTYsIDcwNTYwLCA3MDU2NCwgNzA1NjgsIDcwNTcyLCA3MDU3NiwgMCwgMCwgMCwgCisgICAgNzA1ODAsIDcwNTg0LCA3MDU4OCwgNzA1OTIsIDcwNTk2LCA3MDYwMCwgNzA2MDQsIDcwNjA4LCA3MDYxMiwgNzA2MTYsIAorICAgIDcwNjIwLCA3MDYyNCwgNzA2MjgsIDcwNjMyLCA3MDYzNiwgNzA2NDAsIDcwNjQ0LCA3MDY0OCwgNzA2NTIsIDcwNjU2LCAKKyAgICA3MDY2MCwgNzA2NjQsIDcwNjY4LCA3MDY3MiwgNzA2NzYsIDcwNjgwLCA3MDY4NCwgNzA2ODgsIDcwNjkyLCA3MDY5NiwgCisgICAgNzA3MDAsIDcwNzA0LCA3MDcwOCwgNzA3MTIsIDcwNzE2LCA3MDcyMCwgNzA3MjQsIDcwNzI4LCA3MDczMiwgNzA3MzYsIAorICAgIDcwNzQwLCA3MDc0NCwgNzA3NDgsIDcwNzUyLCA3MDc1NiwgNzA3NjAsIDcwNzY0LCA3MDc2OCwgNzA3NzIsIDcwNzc2LCAKKyAgICA3MDc4MCwgNzA3ODQsIDcwNzg4LCA3MDc5MiwgNzA3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcwODAwLCAKKyAgICA3MDgwNSwgNzA4MDksIDcwODE0LCA3MDgxOSwgNzA4MjQsIDcwODI5LCA3MDgzNCwgNzA4MzgsIDcwODQzLCA3MDg0OCwgCisgICAgNzA4NTMsIDcwODU4LCA3MDg2MywgNzA4NjgsIDcwODczLCA3MDg3NywgNzA4ODEsIDcwODg2LCA3MDg5MSwgNzA4OTYsIAorICAgIDcwOTAxLCA3MDkwNiwgNzA5MTAsIDcwOTE1LCA3MDkyMCwgNzA5MjUsIDcwOTMwLCA3MDkzNSwgNzA5MzksIDcwOTQ0LCAKKyAgICA3MDk0OCwgNzA5NTMsIDcwOTU3LCA3MDk2MiwgNzA5NjYsIDcwOTcwLCA3MDk3NCwgNzA5NzksIDcwOTg0LCA3MDk4OSwgCisgICAgNzA5OTcsIDcxMDA1LCA3MTAxMywgNzEwMjEsIDcxMDI4LCA3MTAzNiwgNzEwNDIsIDcxMDUwLCA3MTA1NCwgNzEwNTgsIAorICAgIDcxMDYyLCA3MTA2NiwgNzEwNzAsIDcxMDc0LCA3MTA3OCwgNzEwODIsIDcxMDg2LCA3MTA5MCwgNzEwOTQsIDcxMDk4LCAKKyAgICA3MTEwMiwgNzExMDYsIDcxMTEwLCA3MTExNCwgNzExMTgsIDcxMTIyLCA3MTEyNiwgNzExMzAsIDcxMTM0LCA3MTEzOCwgCisgICAgNzExNDIsIDcxMTQ2LCA3MTE1MCwgNzExNTQsIDcxMTU4LCA3MTE2MiwgNzExNjYsIDcxMTcwLCA3MTE3NCwgNzExNzgsIAorICAgIDcxMTgyLCA3MTE4NiwgNzExOTAsIDcxMTk0LCA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCAKKyAgICA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgCisgICAgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIAorICAgIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCAKKyAgICA3MTM0MSwgNzEzNDQsIDcxMzQ4LCA3MTM1MiwgNzEzNTUsIDcxMzU5LCA3MTM2MywgNzEzNjcsIDcxMzcwLCA3MTM3NCwgCisgICAgNzEzNzgsIDcxMzgyLCA3MTM4NiwgNzEzOTAsIDcxMzk0LCA3MTM5OCwgNzE0MDIsIDcxNDA2LCA3MTQxMCwgNzE0MTQsIAorICAgIDcxNDE4LCA3MTQyMiwgNzE0MjYsIDcxNDMwLCA3MTQzNCwgNzE0MzgsIDcxNDQyLCA3MTQ0NiwgNzE0NTAsIDcxNDU0LCAKKyAgICA3MTQ1OCwgNzE0NjIsIDcxNDY2LCA3MTQ2OSwgNzE0NzIsIDcxNDc2LCA3MTQ4MCwgNzE0ODQsIDcxNDg3LCA3MTQ5MCwgCisgICAgNzE0OTQsIDcxNDk4LCA3MTUwMiwgNzE1MDYsIDcxNTEwLCA3MTUxNCwgNzE1MTgsIDcxNTIyLCA3MTUyNiwgNzE1MzAsIAorICAgIDcxNTM0LCA3MTUzOCwgNzE1NDIsIDcxNTQ2LCA3MTU1MCwgNzE1NTQsIDcxNTU4LCA3MTU2MiwgNzE1NjYsIDcxNTcwLCAKKyAgICA3MTU3NCwgNzE1NzgsIDcxNTgyLCA3MTU4NiwgNzE1OTAsIDcxNTk0LCA3MTU5OCwgNzE2MDIsIDcxNjA2LCA3MTYxMCwgCisgICAgNzE2MTQsIDcxNjE4LCA3MTYyMiwgNzE2MjYsIDcxNjMwLCA3MTYzNCwgNzE2MzgsIDcxNjQxLCA3MTY0NSwgNzE2NDksIAorICAgIDcxNjUzLCA3MTY1NywgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCA3MTY4MSwgNzE2ODUsIDcxNjg5LCAKKyAgICA3MTY5MywgNzE2OTcsIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI1LCA3MTcyOSwgCisgICAgNzE3MzMsIDcxNzM3LCA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIDcxNzYxLCA3MTc2NSwgNzE3NjksIAorICAgIDcxNzczLCA3MTc3NywgNzE3ODEsIDcxNzg1LCA3MTc4OCwgNzE3OTIsIDcxNzk2LCA3MTgwMCwgNzE4MDQsIDcxODA4LCAKKyAgICA3MTgxMiwgNzE4MTYsIDcxODIwLCA3MTgyNCwgNzE4MjgsIDcxODMyLCA3MTgzNiwgNzE4NDAsIDcxODQ0LCA3MTg0OCwgCisgICAgNzE4NTIsIDcxODU1LCA3MTg1OSwgNzE4NjMsIDcxODY3LCA3MTg3MSwgNzE4NzUsIDcxODc5LCA3MTg4MywgNzE4ODcsIAorICAgIDcxODkxLCA3MTg5NSwgNzE4OTksIDcxOTAzLCA3MTkwNywgNzE5MTEsIDcxOTE1LCA3MTkxOSwgNzE5MjMsIDcxOTI3LCAKKyAgICA3MTkzMSwgNzE5MzUsIDcxOTM5LCA3MTk0MiwgNzE5NDYsIDcxOTUwLCA3MTk1NCwgNzE5NTgsIDcxOTYyLCA3MTk2NiwgCisgICAgNzE5NzAsIDcxOTc0LCA3MTk3OCwgNzE5ODIsIDcxOTg2LCA3MTk5MCwgNzE5OTQsIDcxOTk4LCA3MjAwMiwgNzIwMDYsIAorICAgIDcyMDEwLCA3MjAxNCwgNzIwMTgsIDcyMDIyLCA3MjAyNiwgNzIwMzAsIDcyMDM0LCA3MjAzOCwgNzIwNDIsIDcyMDQ2LCAKKyAgICA3MjA1MCwgNzIwNTQsIDcyMDU4LCA3MjA2MiwgNzIwNjYsIDcyMDcwLCA3MjA3NCwgNzIwNzgsIDcyMDgyLCA3MjA4NiwgCisgICAgNzIwOTAsIDcyMDk0LCA3MjA5OCwgNzIxMDIsIDcyMTA2LCA3MjExMCwgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIAorICAgIDcyMTMyLCA3MjEzNywgNzIxNDMsIDcyMTQ3LCA3MjE1MSwgNzIxNTUsIDcyMTU5LCA3MjE2MywgNzIxNjcsIDcyMTcxLCAKKyAgICA3MjE3NSwgNzIxNzksIDcyMTgzLCA3MjE4NywgNzIxOTEsIDcyMTk1LCA3MjE5OSwgNzIyMDIsIDcyMjA1LCA3MjIwOCwgCisgICAgNzIyMTEsIDcyMjE0LCA3MjIxNywgNzIyMjAsIDcyMjIzLCA3MjIyNiwgNzIyMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMjM3LCA3MjI0MiwgNzIyNDcsIDcyMjUyLCA3MjI1NywgCisgICAgNzIyNjQsIDcyMjcxLCA3MjI3NiwgNzIyODEsIDcyMjg2LCA3MjI5MSwgNzIyOTgsIDcyMzA1LCA3MjMxMiwgNzIzMTksIAorICAgIDcyMzI2LCA3MjMzMywgNzIzNDMsIDcyMzUzLCA3MjM2MCwgNzIzNjcsIDcyMzc0LCA3MjM4MSwgNzIzODcsIDcyMzkzLCAKKyAgICA3MjQwMiwgNzI0MTEsIDcyNDE4LCA3MjQyNSwgNzI0MzYsIDcyNDQ3LCA3MjQ1MiwgNzI0NTcsIDcyNDY0LCA3MjQ3MSwgCisgICAgNzI0NzgsIDcyNDg1LCA3MjQ5MiwgNzI0OTksIDcyNTA2LCA3MjUxMywgNzI1MTksIDcyNTI1LCA3MjUzMSwgNzI1MzcsIAorICAgIDcyNTQ0LCA3MjU1MSwgNzI1NTYsIDcyNTYwLCA3MjU2NywgNzI1NzQsIDcyNTgxLCA3MjU4NSwgNzI1OTIsIDcyNTk2LCAKKyAgICA3MjYwMSwgNzI2MDUsIDcyNjExLCA3MjYxNiwgNzI2MjIsIDcyNjI3LCA3MjYzMSwgNzI2MzUsIDcyNjM4LCA3MjY0MSwgCisgICAgNzI2NDYsIDcyNjUxLCA3MjY1NiwgNzI2NjEsIDcyNjY2LCA3MjY3MSwgNzI2NzYsIDcyNjgxLCA3MjY4NiwgNzI2OTEsIAorICAgIDcyNzAwLCA3MjcwOSwgNzI3MTQsIDcyNzE5LCA3MjcyNCwgNzI3MjksIDcyNzM0LCA3MjczOSwgNzI3NDQsIDcyNzQ5LCAKKyAgICA3Mjc1NCwgNzI3NTksIDcyNzY0LCA3Mjc2OSwgNzI3NzQsIDcyNzc5LCA3Mjc4NSwgNzI3OTEsIDcyNzk3LCAwLCA3MjgwMywgCisgICAgNzI4MDksIDcyODEyLCA3MjgxNSwgNzI4MTgsIDcyODIyLCA3MjgyNiwgNzI4MzAsIDcyODM0LCA3MjgzNywgNzI4NDEsIAorICAgIDcyODQ0LCA3Mjg0OCwgNzI4NTEsIDcyODU1LCA3Mjg1OSwgNzI4NjMsIDcyODY3LCA3Mjg3MSwgNzI4NzUsIDcyODc5LCAKKyAgICA3Mjg4MywgNzI4ODcsIDcyODkxLCA3Mjg5NSwgNzI4OTksIDcyOTAzLCA3MjkwNywgNzI5MTEsIDcyOTE1LCA3MjkxOSwgCisgICAgNzI5MjMsIDcyOTI3LCA3MjkzMSwgNzI5MzUsIDcyOTM5LCA3Mjk0MiwgNzI5NDYsIDcyOTUwLCA3Mjk1NCwgNzI5NTgsIAorICAgIDcyOTYyLCA3Mjk2NiwgNzI5NzAsIDcyOTc0LCA3Mjk3OCwgNzI5ODIsIDcyOTg2LCA3Mjk5MCwgNzI5OTQsIDcyOTk4LCAKKyAgICA3MzAwMiwgNzMwMDYsIDczMDEwLCA3MzAxNCwgNzMwMTgsIDczMDIyLCA3MzAyNiwgNzMwMzAsIDczMDM0LCA3MzAzOCwgCisgICAgNzMwNDEsIDczMDQ1LCA3MzA0OSwgNzMwNTMsIDczMDU3LCA3MzA2MSwgNzMwNjUsIDczMDY5LCA3MzA3MiwgNzMwNzYsIAorICAgIDczMDgwLCA3MzA4NCwgNzMwODgsIDczMDkyLCA3MzA5NiwgNzMxMDAsIDczMTA0LCA3MzEwOCwgNzMxMTIsIDczMTE2LCAKKyAgICA3MzEyMCwgNzMxMjUsIDczMTMwLCA3MzEzMywgNzMxMzgsIDczMTQxLCA3MzE0NCwgNzMxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDczMTUxLCA3MzE2MCwgNzMxNjksIDczMTc4LCA3MzE4NywgNzMxOTYsIDczMjA1LCA3MzIxNCwgNzMyMjMsIAorICAgIDczMjMxLCA3MzIzOCwgNzMyNDYsIDczMjUzLCA3MzI2MSwgNzMyNzEsIDczMjgwLCA3MzI5MCwgNzMyOTksIDczMzA5LCAKKyAgICA3MzMxNywgNzMzMjQsIDczMzMyLCA3MzMzOSwgNzMzNDcsIDczMzUyLCA3MzM1NywgNzMzNjIsIDczMzcxLCA3MzM3NywgCisgICAgNzMzODMsIDczMzkwLCA3MzM5OSwgNzM0MDcsIDczNDE1LCA3MzQyMywgNzM0MzAsIDczNDM3LCA3MzQ0NCwgNzM0NTEsIAorICAgIDczNDU2LCA3MzQ2MSwgNzM0NjYsIDczNDcxLCA3MzQ3NiwgNzM0ODEsIDczNDg2LCA3MzQ5MSwgNzM0OTksIDczNTA3LCAKKyAgICA3MzUxMywgNzM1MTgsIDczNTIzLCA3MzUyOCwgNzM1MzMsIDczNTM4LCA3MzU0MywgNzM1NDgsIDczNTUzLCA3MzU1OCwgCisgICAgNzM1NjYsIDczNTc0LCA3MzU3OSwgNzM1ODQsIDczNTk0LCA3MzYwNCwgNzM2MTEsIDczNjE4LCA3MzYyNywgNzM2MzYsIAorICAgIDczNjQ4LCA3MzY2MCwgNzM2NjYsIDczNjcyLCA3MzY4MCwgNzM2ODgsIDczNjk4LCA3MzcwOCwgNzM3MTUsIDczNzIyLCAKKyAgICA3MzcyNywgNzM3MzIsIDczNzQ0LCA3Mzc1NiwgNzM3NjQsIDczNzcyLCA3Mzc4MiwgNzM3OTIsIDczODA0LCA3MzgxNiwgCisgICAgNzM4MjUsIDczODM0LCA3Mzg0MSwgNzM4NDgsIDczODU1LCA3Mzg2MiwgNzM4NzEsIDczODgwLCA3Mzg4NSwgNzM4OTAsIAorICAgIDczODk3LCA3MzkwNCwgNzM5MTEsIDczOTE4LCA3MzkzMCwgNzM5NDIsIDczOTQ3LCA3Mzk1MiwgNzM5NTcsIDczOTYyLCAKKyAgICA3Mzk2NywgNzM5NzIsIDczOTc3LCA3Mzk4MiwgNzM5ODYsIDczOTkxLCA3Mzk5NiwgNzQwMDEsIDc0MDA2LCA3NDAxMSwgCisgICAgNzQwMTcsIDc0MDIyLCA3NDAyNywgNzQwMzQsIDc0MDQxLCA3NDA0OCwgNzQwNTUsIDc0MDYyLCA3NDA3MCwgNzQwNzgsIAorICAgIDc0MDgzLCA3NDA4OCwgNzQwOTQsIDc0MTAwLCA3NDEwNiwgNzQxMTIsIDc0MTE5LCA3NDEyNiwgNzQxMzMsIDc0MTM3LCAKKyAgICA3NDE0NCwgNzQxNDksIDc0MTU0LCA3NDE2MCwgMCwgNzQxNzMsIDc0MTgxLCA3NDE4OSwgNzQxOTYsIDc0MjAzLCA3NDIxMiwgCisgICAgNzQyMjEsIDc0MjI4LCA3NDIzNSwgNzQyNDIsIDc0MjQ5LCA3NDI1NiwgNzQyNjMsIDc0MjcwLCA3NDI3NywgNzQyODQsIAorICAgIDc0MjkxLCA3NDMwMCwgNzQzMDksIDc0MzE4LCA3NDMyNywgNzQzMzYsIDc0MzQ1LCA3NDM1NCwgNzQzNjMsIDc0MzcyLCAKKyAgICA3NDM4MSwgNzQzODgsIDc0Mzk2LCA3NDQwMiwgMCwgMCwgNzQ0MTAsIDc0NDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDM3MywgMzAzNzksIAotICAgIDMwMzg1LCAzMDM4OSwgMzAzOTMsIDMwMzk3LCAzMDQwMSwgMzA0MDcsIDMwNDExLCAzMDQxNywgMzA0MjEsIDMwNDI3LCAKLSAgICAzMDQzMywgMzA0NDEsIDMwNDQ3LCAzMDQ1NSwgMzA0NTksIDMwNDYzLCAzMDQ2NywgMzA0NzMsIDMwNDc2LCAzMDQ4MiwgCi0gICAgMzA0ODYsIDMwNDkyLCAzMDQ5NiwgMzA1MDAsIDMwNTA2LCAzMDUxMCwgMzA1MTYsIDMwNTIwLCAzMDUyNiwgMzA1MzQsIAotICAgIDMwNTQyLCAzMDU1MCwgMzA1NTYsIDMwNTYwLCAzMDU2NiwgMzA1NzAsIDMwNTc2LCAzMDU3OSwgMzA1ODIsIDMwNTg4LCAKLSAgICAzMDU5MiwgMzA1OTgsIDMwNjAxLCAzMDYwNCwgMzA2MDcsIDMwNjExLCAzMDYxNSwgMzA2MjEsIDMwNjI3LCAzMDYzMCwgCi0gICAgMzA2MzMsIDMwNjM3LCAzMDY0MiwgMzA2NDcsIDMwNjU0LCAzMDY1OSwgMzA2NjYsIDMwNjczLCAzMDY4MiwgMzA2ODksIAotICAgIDMwNjk4LCAzMDcwMywgMzA3MTAsIDMwNzE3LCAzMDcyNiwgMzA3MzEsIDMwNzM4LCAzMDc0MywgMzA3NDksIDMwNzU1LCAKLSAgICAzMDc2MSwgMzA3NjcsIDMwNzczLCAzMDc3OSwgMCwgMCwgMCwgMCwgMzA3ODUsIDMwNzg5LCAzMDc5MiwgMzA3OTUsIAotICAgIDMwNzk4LCAzMDgwMSwgMzA4MDQsIDMwODA3LCAzMDgxMCwgMzA4MTMsIDMwODE2LCAzMDgxOSwgMzA4MjIsIDMwODI1LCAKLSAgICAzMDgzMCwgMzA4MzUsIDMwODQwLCAzMDg0MywgMzA4NDgsIDMwODUzLCAzMDg1OCwgMzA4NjMsIDMwODcwLCAzMDg3NSwgCi0gICAgMzA4ODAsIDMwODg1LCAzMDg5MCwgMzA4OTcsIDMwOTAzLCAzMDkwOSwgMzA5MTUsIDMwOTIxLCAzMDkyNywgMzA5MzYsIAotICAgIDMwOTQ1LCAzMDk1MSwgMzA5NTcsIDMwOTY1LCAzMDk3MywgMzA5ODIsIDMwOTkxLCAzMDk5OSwgMzEwMDcsIDMxMDE2LCAKLSAgICAzMTAyNSwgMCwgMCwgMCwgMzEwMzMsIDMxMDM3LCAzMTA0MSwgMzEwNDUsIDMxMDQ4LCAzMTA1MSwgMzEwNTQsIDMxMDU4LCAKLSAgICAzMTA2MSwgMzEwNjQsIDMxMDY4LCAzMTA3MSwgMzEwNzUsIDMxMDc5LCAzMTA4MywgMzEwODcsIDMxMDkxLCAzMTA5NSwgCi0gICAgMzEwOTksIDMxMTAzLCAzMTEwNywgMzExMTAsIDMxMTEzLCAzMTExNywgMzExMjEsIDMxMTI1LCAzMTEyOCwgMzExMzEsIAotICAgIDMxMTM0LCAzMTEzOCwgMzExNDIsIDMxMTQ1LCAzMTE0OSwgMzExNTIsIDMxMTU3LCAzMTE2MiwgMzExNjcsIDMxMTcyLCAKLSAgICAzMTE3NywgMzExODIsIDMxMTg3LCAzMTE5MiwgMzExOTcsIDMxMjAxLCAzMTIwNSwgMzEyMTEsIDMxMjE4LCAzMTIyMiwgCi0gICAgMzEyMjYsIDMxMjMwLCAzMTIzMywgMzEyMzYsIDMxMjM5LCAzMTI0MiwgMzEyNDUsIDMxMjQ4LCAzMTI1MSwgMzEyNTQsIAotICAgIDMxMjU3LCAzMTI2MCwgMzEyNjQsIDMxMjY4LCAzMTI3MiwgMzEyNzcsIDMxMjgxLCAzMTI4NSwgMzEyOTEsIDMxMjk1LCAKLSAgICAzMTMwMSwgMzEzMDcsIDMxMzEyLCAzMTMxOSwgMzEzMjMsIDMxMzI5LCAzMTMzMywgMzEzMzksIDMxMzQ0LCAzMTM1MSwgCi0gICAgMzEzNTgsIDMxMzYzLCAzMTM3MCwgMzEzNzUsIDMxMzgwLCAzMTM4NCwgMzEzOTAsIDMxMzk0LCAzMTQwMCwgMzE0MDcsIAotICAgIDMxNDE0LCAzMTQxOCwgMzE0MjQsIDMxNDMwLCAzMTQzNCwgMzE0NDAsIDMxNDQ1LCAzMTQ1MCwgMzE0NTcsIDMxNDYyLCAKLSAgICAzMTQ2NywgMzE0NzIsIDMxNDc3LCAzMTQ4MSwgMzE0ODUsIDMxNDkwLCAzMTQ5NSwgMzE1MDIsIDMxNTA4LCAzMTUxMywgCi0gICAgMzE1MjAsIDMxNTI1LCAzMTUzMiwgMzE1MzcsIDMxNTQ2LCAzMTU1MiwgMzE1NTgsIDMxNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMTU2NiwgMzE1NzUsIDMxNTgyLCAzMTU4OSwgMzE1OTYsIDMxNTk5LCAzMTYwMywgMzE2MDcsIDMxNjExLCAKLSAgICAzMTYxNSwgMzE2MTksIDMxNjIzLCAzMTYyNywgMzE2MzEsIDMxNjM1LCAzMTYzOSwgMzE2NDMsIDMxNjQ3LCAzMTY1MCwgCi0gICAgMzE2NTMsIDMxNjU3LCAzMTY2MSwgMzE2NjUsIDMxNjY5LCAzMTY3MywgMzE2NzcsIDMxNjgwLCAzMTY4NCwgMzE2ODgsIAotICAgIDMxNjkyLCAzMTY5NiwgMzE2OTksIDMxNzAyLCAzMTcwNiwgMzE3MDksIDMxNzEzLCAzMTcxNywgMzE3MjAsIDMxNzI0LCAKLSAgICAzMTcyOCwgMzE3MzEsIDMxNzM2LCAzMTc0MSwgMzE3NDYsIDMxNzUwLCAzMTc1NCwgMzE3NTksIDMxNzYzLCAzMTc2OCwgCi0gICAgMzE3NzIsIDMxNzc3LCAzMTc4MSwgMzE3ODUsIDMxNzkwLCAzMTc5NSwgMzE3OTksIDMxODA0LCAzMTgwOSwgMzE4MTQsIAotICAgIDMxODE4LCAwLCAwLCAwLCAzMTgyMiwgMzE4MjcsIDMxODM2LCAzMTg0MSwgMzE4NDgsIDMxODUzLCAzMTg1NywgMzE4NjAsIAotICAgIDMxODYzLCAzMTg2NiwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAwLCAwLCAwLCAzMTg4NCwgMzE4ODgsIAotICAgIDMxODkyLCAzMTg5NiwgMzE5MDMsIDMxOTA5LCAzMTkxNSwgMzE5MjEsIDMxOTI3LCAzMTkzMywgMzE5MzksIDMxOTQ1LCAKLSAgICAzMTk1MSwgMzE5NTcsIDMxOTY0LCAzMTk3MSwgMzE5NzgsIDMxOTg1LCAzMTk5MiwgMzE5OTksIDMyMDA2LCAzMjAxMywgCi0gICAgMzIwMjAsIDMyMDI3LCAzMjAzNCwgMzIwNDEsIDMyMDQ4LCAzMjA1NSwgMzIwNjIsIDMyMDY5LCAzMjA3NiwgMzIwODMsIAotICAgIDMyMDkwLCAzMjA5NywgMzIxMDQsIDMyMTExLCAzMjExOCwgMzIxMjUsIDMyMTMyLCAzMjEzOSwgMzIxNDYsIDMyMTUzLCAKLSAgICAzMjE2MCwgMzIxNjcsIDMyMTc1LCAzMjE4MywgMzIxOTEsIDMyMTk3LCAzMjIwMywgMzIyMDksIDMyMjE3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDQyMiwgNzQ0MjksIDc0NDM2LCA3NDQ0MiwgNzQ0NDksIAorICAgIDc0NDU3LCA3NDQ2NSwgNzQ0NzMsIDc0NDgxLCA3NDQ4OSwgNzQ0OTUsIDc0NTAxLCA3NDUwOCwgNzQ1MTQsIDc0NTIwLCAKKyAgICA3NDUyNiwgNzQ1MzMsIDc0NTQwLCA3NDU0NywgNzQ1NTQsIDc0NTYxLCA3NDU2OCwgNzQ1NzUsIDc0NTgyLCA3NDU4OSwgCisgICAgNzQ1OTYsIDc0NjAzLCA3NDYxMCwgNzQ2MTcsIDc0NjI0LCA3NDYzMCwgNzQ2MzcsIDc0NjQ0LCA3NDY1MSwgNzQ2NTgsIAorICAgIDc0NjY1LCA3NDY3MiwgNzQ2NzksIDc0Njg2LCA3NDY5MywgNzQ3MDAsIDc0NzA3LCA3NDcxNCwgNzQ3MjEsIDc0NzI4LCAKKyAgICA3NDczNSwgNzQ3NDIsIDc0NzQ5LCA3NDc1NiwgNzQ3NjQsIDc0NzcyLCA3NDc4MCwgNzQ3ODgsIDAsIDAsIDAsIDAsIAorICAgIDc0Nzk2LCA3NDgwNCwgNzQ4MTIsIDc0ODIwLCA3NDgyOCwgNzQ4MzYsIDc0ODQ0LCA3NDg1MCwgNzQ4NTYsIDc0ODYyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NDg2OCwgNzQ4NzIsIDc0ODc3LCA3NDg4MiwgNzQ4ODcsIDc0ODkyLCA3NDg5NywgNzQ5MDIsIAorICAgIDc0OTA3LCA3NDkxMiwgNzQ5MTcsIDc0OTIyLCA3NDkyNiwgNzQ5MzAsIDc0OTM1LCA3NDk0MCwgNzQ5NDQsIDc0OTQ5LCAKKyAgICA3NDk1NCwgNzQ5NTksIDc0OTY0LCA3NDk2OSwgNzQ5NzQsIDc0OTc5LCA3NDk4MywgNzQ5ODgsIDc0OTkzLCA3NDk5OCwgCisgICAgNzUwMDMsIDc1MDA3LCA3NTAxMSwgNzUwMTUsIDc1MDE5LCA3NTAyMywgNzUwMjcsIDc1MDMyLCA3NTAzNywgNzUwNDIsIAorICAgIDc1MDQ3LCA3NTA1MiwgNzUwNTksIDc1MDY1LCA3NTA3MCwgNzUwNzUsIDc1MDgwLCA3NTA4NSwgNzUwOTEsIDc1MDk4LCAKKyAgICA3NTEwNCwgNzUxMTEsIDc1MTE4LCA3NTEyNSwgNzUxMzAsIDc1MTM3LCA3NTE0MywgNzUxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc1MTU0LCA3NTE1OSwgNzUxNjQsIDc1MTY4LCA3NTE3MywgNzUxNzcsIDc1MTgyLCA3NTE4NiwgNzUxOTEsIAorICAgIDc1MTk2LCA3NTIwMiwgNzUyMDcsIDc1MjEzLCA3NTIxNywgNzUyMjIsIDc1MjI3LCA3NTIzMSwgNzUyMzYsIDc1MjQxLCAKKyAgICA3NTI0NSwgNzUyNTAsIDc1MjU1LCA3NTI2MCwgNzUyNjUsIDc1MjcwLCA3NTI3NSwgNzUyODAsIDc1Mjg1LCA3NTI5MCwgCisgICAgNzUyOTUsIDc1MzAwLCA3NTMwNSwgNzUzMTAsIDc1MzE1LCA3NTMyMCwgNzUzMjUsIDc1MzMwLCA3NTMzNSwgNzUzMzksIAorICAgIDc1MzQzLCA3NTM0OCwgNzUzNTMsIDc1MzU4LCA3NTM2MiwgNzUzNjYsIDc1MzcxLCA3NTM3NiwgNzUzODEsIDc1Mzg2LCAKKyAgICA3NTM5MSwgNzUzOTYsIDc1NDAwLCA3NTQwNSwgNzU0MTEsIDc1NDE3LCA3NTQyMiwgNzU0MjgsIDc1NDMzLCA3NTQzOSwgCisgICAgNzU0NDUsIDc1NDUyLCA3NTQ1OCwgNzU0NjUsIDc1NDcwLCA3NTQ3NiwgNzU0ODIsIDc1NDg3LCA3NTQ5MywgNzU0OTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTA0LCA3NTUwOCwgNzU1MTMsIDc1NTE4LCA3NTUyMiwgNzU1MjYsIDc1NTMwLCAKKyAgICA3NTUzNCwgNzU1MzgsIDc1NTQyLCA3NTU0NiwgNzU1NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTU0LCA3NTU1OSwgNzU1NjMsIAorICAgIDc1NTY3LCA3NTU3MSwgNzU1NzUsIDc1NTc5LCA3NTU4MywgNzU1ODcsIDc1NTkxLCA3NTU5NSwgNzU1OTksIDc1NjAzLCAKKyAgICA3NTYwNywgNzU2MTEsIDc1NjE1LCA3NTYyMCwgNzU2MjUsIDc1NjMwLCA3NTYzNiwgNzU2NDIsIDc1NjQ5LCA3NTY1NCwgCisgICAgNzU2NTksIDc1NjY1LCA3NTY2OSwgNzU2NzQsIDc1Njc3LCAwLCAwLCAwLCAwLCA3NTY4MCwgNzU2ODcsIDc1NjkzLCAKKyAgICA3NTY5OSwgNzU3MDUsIDc1NzExLCA3NTcxNywgNzU3MjMsIDc1NzI5LCA3NTczNSwgNzU3NDEsIDc1NzQ3LCA3NTc1NCwgCisgICAgNzU3NjEsIDc1NzY4LCA3NTc3NSwgNzU3ODIsIDc1Nzg5LCA3NTc5NiwgNzU4MDMsIDc1ODEwLCA3NTgxNiwgNzU4MjIsIAorICAgIDc1ODI5LCA3NTgzNSwgNzU4NDIsIDc1ODQ5LCA3NTg1NiwgNzU4NjIsIDc1ODY5LCA3NTg3NiwgNzU4ODMsIDc1ODg5LCAKKyAgICA3NTg5NiwgNzU5MDMsIDc1OTA5LCA3NTkxNiwgNzU5MjIsIDc1OTI5LCA3NTkzNiwgNzU5NDIsIDc1OTQ4LCA3NTk1NSwgCisgICAgNzU5NjEsIDc1OTY4LCA3NTk3NSwgNzU5ODQsIDc1OTkxLCA3NTk5OCwgNzYwMDIsIDc2MDA3LCA3NjAxMiwgNzYwMTcsIAorICAgIDc2MDIyLCA3NjAyNiwgNzYwMzAsIDc2MDM1LCA3NjAzOSwgNzYwNDQsIDc2MDQ5LCA3NjA1NCwgNzYwNTksIDc2MDY0LCAKKyAgICA3NjA2OSwgNzYwNzMsIDc2MDc4LCA3NjA4MiwgNzYwODcsIDc2MDkyLCA3NjA5NywgNzYxMDIsIDc2MTA2LCA3NjExMSwgCisgICAgNzYxMTYsIDc2MTIxLCA3NjEyNywgNzYxMzIsIDc2MTM4LCA3NjE0NCwgNzYxNTAsIDc2MTU2LCA3NjE2MiwgNzYxNjcsIAorICAgIDc2MTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjE3NywgNzYxODIsIDc2MTg2LCA3NjE5MCwgCisgICAgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgNzYyMTgsIDc2MjIyLCA3NjIyNiwgNzYyMzAsIAorICAgIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIDc2MjU4LCA3NjI2MiwgNzYyNjYsIDc2MjcwLCAKKyAgICA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCAwLCAwLCAwLCA3NjI5OCwgNzYzMDIsIDc2MzA2LCAKKyAgICA3NjMxMCwgNzYzMTQsIDc2MzE3LCA3NjMyMywgNzYzMjYsIDc2MzMwLCA3NjMzMywgNzYzMzksIDc2MzQ1LCA3NjM1MywgCisgICAgNzYzNTYsIDc2MzYwLCA3NjM2MywgNzYzNjYsIDc2MzcyLCA3NjM3OCwgNzYzODIsIDc2Mzg4LCA3NjM5MiwgNzYzOTYsIAorICAgIDc2NDAyLCA3NjQwNiwgNzY0MTIsIDc2NDE4LCA3NjQyMiwgNzY0MjYsIDc2NDMyLCA3NjQzNiwgNzY0NDIsIDc2NDQ4LCAKKyAgICA3NjQ1MiwgNzY0NTgsIDc2NDYyLCA3NjQ2OCwgNzY0NzEsIDc2NDc0LCA3NjQ4MCwgNzY0ODQsIDc2NDkwLCA3NjQ5MywgCisgICAgNzY0OTYsIDc2NTAwLCA3NjUwNiwgNzY1MTAsIDc2NTE0LCA3NjUyMCwgNzY1MjYsIDc2NTMwLCA3NjUzMywgNzY1MzksIAorICAgIDc2NTQ0LCA3NjU0OSwgNzY1NTQsIDc2NTYxLCA3NjU2NiwgNzY1NzMsIDc2NTc4LCA3NjU4NSwgNzY1OTAsIDc2NTk1LCAKKyAgICA3NjYwMCwgNzY2MDUsIDc2NjA4LCA3NjYxMiwgNzY2MTYsIDc2NjIxLCA3NjYyNiwgNzY2MzEsIDc2NjM2LCA3NjY0MSwgCisgICAgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjMsIDc2NjY4LCAwLCA3NjY3NCwgNzY2NzcsIDc2NjgxLCA3NjY4NCwgNzY2ODcsIAorICAgIDc2NjkwLCA3NjY5MywgNzY2OTYsIDc2Njk5LCA3NjcwMiwgNzY3MDUsIDAsIDAsIDAsIDAsIDc2NzA4LCA3NjcxNSwgCisgICAgNzY3MjAsIDc2NzI2LCA3NjczMiwgNzY3MzgsIDc2NzQ0LCA3Njc1MCwgNzY3NTYsIDc2NzYzLCA3Njc3MCwgNzY3NzcsIAorICAgIDc2Nzg0LCA3Njc5MSwgNzY3OTgsIDc2ODA1LCA3NjgxMiwgNzY4MTksIDc2ODI2LCA3NjgzMywgNzY4MzksIDc2ODQ1LCAKKyAgICA3Njg1MSwgNzY4NTcsIDc2ODYzLCA3Njg2OSwgNzY4NzUsIDc2ODgxLCA3Njg4NywgNzY4OTQsIDc2OTAxLCA3NjkwOCwgCisgICAgNzY5MTUsIDAsIDc2OTIyLCA3NjkyNSwgNzY5MjgsIDc2OTMxLCA3NjkzNCwgNzY5MzgsIDc2OTQxLCA3Njk0NCwgNzY5NDgsIAorICAgIDc2OTUyLCA3Njk1NiwgNzY5NjAsIDc2OTY0LCA3Njk2OCwgNzY5NzIsIDc2OTc2LCA3Njk4MCwgNzY5ODQsIDc2OTg4LCAKKyAgICA3Njk5MiwgNzY5OTYsIDc3MDAwLCA3NzAwNCwgNzcwMDgsIDc3MDEyLCA3NzAxNSwgNzcwMTksIDc3MDIyLCA3NzAyNiwgCisgICAgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ1LCA3NzA0OSwgNzcwNTIsIDc3MDU2LCA3NzA2MCwgNzcwNjQsIAorICAgIDc3MDY4LCA3NzA3MiwgNzcwNzUsIDc3MDgwLCA3NzA4NCwgNzcwODksIDc3MDk0LCA3NzA5OCwgNzcxMDMsIDc3MTA3LCAKKyAgICA3NzExMiwgNzcxMTcsIDc3MTIyLCA3NzEyNiwgNzcxMzEsIDc3MTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NzE0MSwgNzcxNDYsIDc3MTUxLCA3NzE1NiwgNzcxNjIsIDc3MTY3LCA3NzE3MiwgNzcxNzcsIDc3MTgyLCA3NzE4NywgCisgICAgNzcxOTEsIDc3MTk1LCA3NzIwMCwgNzcyMDYsIDAsIDAsIDc3MjEyLCA3NzIxNiwgNzcyMTksIDc3MjIyLCA3NzIyNSwgCisgICAgNzcyMjgsIDc3MjMxLCA3NzIzNCwgNzcyMzcsIDc3MjQwLCAwLCAwLCA3NzI0MywgNzcyNDgsIDc3MjUzLCA3NzI1OSwgCisgICAgNzcyNjYsIDc3MjcyLCA3NzI3OCwgNzcyODQsIDc3MjkwLCA3NzI5NiwgNzczMDIsIDc3MzA4LCA3NzMxNCwgNzczMjAsIAorICAgIDc3MzI2LCA3NzMzMiwgNzczMzcsIDc3MzQzLCA3NzM0OCwgNzczNTQsIDc3MzYwLCA3NzM2NywgNzczNzMsIDc3Mzc5LCAKKyAgICA3NzM4NSwgNzczOTIsIDc3Mzk5LCA3NzQwNiwgNzc0MTIsIDc3NDE3LCA3NzQyMiwgNzc0MjgsIDc3NDM2LCA3NzQ0MywgCisgICAgNzc0NTAsIDc3NDU4LCA3NzQ2NiwgNzc0NzMsIDc3NDgwLCA3NzQ4NywgNzc0OTQsIDc3NTAxLCA3NzUwOCwgNzc1MTUsIAorICAgIDc3NTIyLCA3NzUyOSwgNzc1MzYsIDc3NTQzLCA3NzU1MCwgNzc1NTcsIDc3NTY0LCA3NzU3MSwgNzc1NzgsIDc3NTg1LCAKKyAgICA3NzU5MiwgNzc1OTksIDc3NjA2LCA3NzYxMiwgNzc2MTgsIDc3NjI1LCA3NzYzMiwgNzc2MzksIDc3NjQ2LCA3NzY1MywgCisgICAgNzc2NjAsIDc3NjY3LCA3NzY3NCwgNzc2ODEsIDc3Njg4LCA3NzY5NSwgNzc3MDIsIDc3NzA5LCA3NzcxNiwgNzc3MjMsIAorICAgIDc3NzMwLCA3NzczNywgNzc3NDQsIDc3NzUxLCA3Nzc1OCwgNzc3NjUsIDc3NzcyLCA3Nzc3OSwgNzc3ODYsIDc3NzkyLCAKKyAgICA3Nzc5OCwgNzc4MDUsIDc3ODExLCA3NzgxNiwgNzc4MjIsIDc3ODI3LCA3NzgzMiwgNzc4MzcsIDc3ODQ0LCA3Nzg1MCwgCisgICAgNzc4NTYsIDc3ODYyLCA3Nzg2OCwgNzc4NzQsIDc3ODgwLCA3Nzg4NiwgNzc4OTQsIDc3OTAyLCA3NzkxMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc5MTgsIAorICAgIDc3OTI0LCA3NzkzMCwgNzc5MzYsIDc3OTQ0LCA3Nzk1MiwgNzc5NTgsIDc3OTY0LCA3Nzk3MSwgNzc5NzgsIDc3OTg1LCAKKyAgICA3Nzk5MiwgNzc5OTksIDc4MDA2LCA3ODAxMywgNzgwMjAsIDc4MDI3LCA3ODAzNSwgNzgwNDMsIDc4MDUxLCA3ODA1OSwgCisgICAgNzgwNjcsIDc4MDczLCA3ODA4MSwgNzgwODcsIDc4MDk1LCA3ODEwNCwgNzgxMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc4MTE4LCA3ODEyMiwgNzgxMjYsIDc4MTMwLCA3ODEzNCwgNzgxMzgsIDAsIDAsIDc4MTQyLCA3ODE0NiwgCisgICAgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIDAsIDAsIDc4MTY2LCA3ODE3MCwgNzgxNzQsIDc4MTc4LCA3ODE4MiwgCisgICAgNzgxODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCA3ODIwNiwgCisgICAgNzgyMTAsIDc4MjE0LCAwLCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgMCwgCisgICAgNzgyNDYsIDc4MjUzLCA3ODI1OSwgNzgyNjUsIDc4MjcxLCA3ODI3OCwgNzgyODUsIDc4Mjk0LCA3ODMwNSwgNzgzMTYsIAorICAgIDc4MzI2LCA3ODMzNCwgNzgzNDIsIDc4MzUwLCA3ODM1NiwgNzgzNjQsIDc4MzcyLCA3ODM3OSwgNzgzODcsIDc4Mzk2LCAKKyAgICA3ODQwMywgNzg0MTIsIDc4NDE4LCA3ODQyOCwgNzg0MzcsIDc4NDQyLCA3ODQ1MCwgNzg0NTksIDc4NDY0LCA3ODQ3MywgCisgICAgNzg0ODAsIDc4NDkwLCA3ODUwMiwgNzg1MDcsIDc4NTEzLCA3ODUyMCwgNzg1MjUsIDc4NTM1LCA3ODU0NSwgNzg1NTUsIAorICAgIDc4NTY1LCA3ODU4MCwgNzg1OTMsIDc4NjA0LCA3ODYxMiwgNzg2MTcsIDc4NjI4LCA3ODYzOCwgMCwgMCwgMCwgMCwgCisgICAgNzg2NDUsIDc4NjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyNiwgMzIyMzMsIDMyMjQwLCAzMjI0NywgMzIyNTQsIAotICAgIDMyMjYzLCAzMjI3MiwgMzIyODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjkwLCAzMjI5NSwgMzIzMDAsIDMyMzA1LCAKLSAgICAzMjMxMCwgMzIzMTksIDMyMzMwLCAzMjMzOSwgMzIzNTAsIDMyMzU2LCAzMjM2OSwgMzIzNzUsIDMyMzgyLCAzMjM4OSwgCi0gICAgMzIzOTQsIDMyNDAwLCAzMjQwNiwgMzI0MTcsIDMyNDI2LCAzMjQzMywgMzI0NDAsIDMyNDQ5LCAzMjQ1NiwgMzI0NjUsIAotICAgIDMyNDc1LCAzMjQ4NSwgMzI0OTIsIDMyNDk5LCAzMjUwNiwgMzI1MTYsIDMyNTIxLCAzMjUyOSwgMzI1MzUsIDMyNTQzLCAKLSAgICAzMjU1MiwgMzI1NTcsIDMyNTY0LCAzMjU3MCwgMzI1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNTgwLCAKLSAgICAzMjU4NSwgMzI1OTEsIDMyNTk4LCAzMjYwNiwgMzI2MTIsIDMyNjE4LCAzMjYyNCwgMzI2MjksIDMyNjM2LCAzMjY0MiwgCi0gICAgMzI2NDgsIDMyNjU0LCAzMjY2MiwgMzI2NjcsIDMyNjc1LCAzMjY4MCwgMzI2ODYsIDMyNjkyLCAzMjY5OSwgMzI3MDcsIAotICAgIDMyNzE0LCAzMjcyMCwgMzI3MjcsIDMyNzM0LCAzMjc0MCwgMzI3NDcsIDMyNzU0LCAzMjc2MCwgMzI3NjUsIDMyNzcxLCAKLSAgICAzMjc3OSwgMzI3ODcsIDMyNzkzLCAzMjc5OSwgMzI4MDUsIDMyODExLCAzMjgxOSwgMzI4MjMsIDMyODI5LCAzMjgzNSwgCi0gICAgMzI4NDEsIDMyODQ3LCAzMjg1MywgMzI4NTksIDMyODYzLCAzMjg2OCwgMzI4NzMsIDMyODgwLCAzMjg4NSwgMzI4ODksIAotICAgIDMyODk1LCAzMjkwMCwgMzI5MDUsIDMyOTA5LCAzMjkxNCwgMzI5MTksIDMyOTIzLCAzMjkyNywgMzI5MzIsIDMyOTM5LCAKLSAgICAzMjk0MywgMzI5NDgsIDMyOTUzLCAzMjk1NywgMzI5NjIsIDMyOTY2LCAzMjk3MSwgMzI5NzUsIDMyOTgxLCAzMjk4NiwgCi0gICAgMzI5OTMsIDMyOTk4LCAzMzAwMywgMzMwMDcsIDMzMDEyLCAzMzAxNywgMzMwMjQsIDMzMDI5LCAzMzAzNSwgMzMwNDAsIAotICAgIDMzMDQ0LCAzMzA0OSwgMzMwNTMsIDMzMDU4LCAzMzA2NSwgMzMwNzIsIDMzMDc3LCAzMzA4MiwgMzMwODYsIDMzMDkyLCAKLSAgICAzMzA5OCwgMzMxMDMsIDMzMTA4LCAzMzExMywgMzMxMTksIDMzMTI0LCAzMzEzMCwgMzMxMzUsIDMzMTQxLCAzMzE0NywgCi0gICAgMzMxNTMsIDMzMTYwLCAzMzE2NywgMzMxNzQsIDMzMTgxLCAzMzE4OCwgMzMxOTUsIDMzMjAwLCAzMzIwOCwgMzMyMTcsIAotICAgIDMzMjI2LCAzMzIzNSwgMzMyNDQsIDMzMjUzLCAzMzI2MiwgMzMyNzQsIDMzMjgzLCAzMzI5MiwgMzMzMDEsIDMzMzA4LCAKLSAgICAzMzMxMywgMzMzMjAsIDMzMzI4LCAzMzMzNiwgMzMzNDMsIDMzMzUwLCAzMzM1NywgMzMzNjQsIDMzMzcyLCAzMzM4MSwgCi0gICAgMzMzOTAsIDMzMzk5LCAzMzQwOCwgMzM0MTcsIDMzNDI2LCAzMzQzNSwgMzM0NDQsIDMzNDUzLCAzMzQ2MiwgMzM0NzEsIAotICAgIDMzNDgwLCAzMzQ4OSwgMzM0OTgsIDMzNTA2LCAzMzUxNSwgMzM1MjYsIDMzNTM0LCAzMzU0MywgMzM1NTQsIDMzNTYzLCAKLSAgICAzMzU3MiwgMzM1ODEsIDMzNTkwLCAzMzU5OCwgMzM2MDcsIDMzNjE0LCAzMzYxOSwgMzM2MjcsIDMzNjMyLCAzMzYzOSwgCi0gICAgMzM2NDQsIDMzNjUzLCAzMzY1OSwgMzM2NjYsIDMzNjczLCAzMzY3OCwgMzM2ODMsIDMzNjkxLCAzMzY5OSwgMzM3MDgsIAotICAgIDMzNzE3LCAzMzcyMiwgMzM3MjksIDMzNzQwLCAzMzc0OCwgMzM3NTcsIDMzNzYzLCAzMzc2OSwgMzM3NzQsIDMzNzgxLCAKLSAgICAzMzc4NiwgMzM3OTUsIDMzODAwLCAzMzgwNSwgMzM4MTAsIDMzODE3LCAzMzgyNCwgMzM4MjksIDMzODM4LCAzMzg0NiwgCi0gICAgMzM4NTEsIDMzODU2LCAzMzg2MywgMzM4NzAsIDMzODc0LCAzMzg3OCwgMzM4ODEsIDMzODg0LCAzMzg4NywgMzM4OTAsIAotICAgIDMzODkzLCAzMzg5NiwgMzM5MDMsIDMzOTA2LCAzMzkwOSwgMzM5MTQsIDMzOTE4LCAzMzkyMiwgMzM5MjYsIDMzOTMwLCAKLSAgICAzMzkzNCwgMzM5NDMsIDMzOTQ5LCAzMzk1NSwgMzM5NjEsIDMzOTY5LCAzMzk3NywgMzM5ODMsIDMzOTg5LCAzMzk5NiwgCi0gICAgMzQwMDIsIDM0MDA3LCAzNDAxMywgMzQwMTksIDM0MDI1LCAzNDAzMiwgMzQwMzgsIDM0MDQ2LCAzNDA1MiwgMzQwNTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDY1LCAzNDA3MiwgCi0gICAgMzQwNzksIDM0MDg0LCAzNDA5MywgMzQxMDEsIDM0MTA5LCAzNDExNiwgMzQxMjMsIDM0MTMwLCAzNDEzNywgMzQxNDUsIAotICAgIDM0MTUzLCAzNDE2MywgMzQxNzMsIDM0MTgxLCAzNDE4OSwgMzQxOTcsIDM0MjA1LCAzNDIxNCwgMzQyMjMsIDM0MjMxLCAKLSAgICAzNDIzOSwgMzQyNDgsIDM0MjU3LCAzNDI2NywgMzQyNzcsIDM0Mjg2LCAzNDI5NSwgMzQzMDMsIDM0MzExLCAzNDMxOSwgCi0gICAgMzQzMjcsIDM0MzM3LCAzNDM0NywgMzQzNTUsIDM0MzYzLCAzNDM3MSwgMzQzNzksIDM0Mzg3LCAzNDM5NSwgMzQ0MDMsIAotICAgIDM0NDExLCAzNDQxOSwgMzQ0MjcsIDM0NDM1LCAzNDQ0MywgMzQ0NTIsIDM0NDYxLCAzNDQ3MCwgMzQ0NzksIDM0NDg5LCAKLSAgICAzNDQ5OSwgMzQ1MDYsIDM0NTEzLCAzNDUyMSwgMzQ1MjksIDM0NTM4LCAzNDU0NywgMzQ1NTUsIDM0NTYzLCAzNDU3NSwgCi0gICAgMzQ1ODcsIDM0NTk2LCAzNDYwNSwgMzQ2MTQsIDM0NjIzLCAzNDYzMCwgMzQ2MzcsIDM0NjQ1LCAzNDY1MywgMzQ2NjEsIAotICAgIDM0NjY5LCAzNDY3NywgMzQ2ODUsIDM0NjkzLCAzNDcwMSwgMzQ3MTAsIDM0NzE5LCAzNDcyOCwgMzQ3MzcsIDM0NzQ2LCAKLSAgICAzNDc1NSwgMzQ3NjUsIDM0Nzc1LCAzNDc4NSwgMzQ3OTUsIDM0ODA0LCAzNDgxMywgMzQ4MjAsIDM0ODI3LCAzNDgzNSwgCi0gICAgMzQ4NDMsIDM0ODUxLCAzNDg1OSwgMzQ4NjcsIDM0ODc1LCAzNDg4NywgMzQ4OTksIDM0OTA4LCAzNDkxNywgMzQ5MjUsIAotICAgIDM0OTMzLCAzNDk0MSwgMzQ5NDksIDM0OTYwLCAzNDk3MSwgMzQ5ODIsIDM0OTkzLCAzNTAwNSwgMzUwMTcsIDM1MDI1LCAKLSAgICAzNTAzMywgMzUwNDEsIDM1MDQ5LCAzNTA1OCwgMzUwNjcsIDM1MDc2LCAzNTA4NSwgMzUwOTMsIDM1MTAxLCAzNTEwOSwgCi0gICAgMzUxMTcsIDM1MTI1LCAzNTEzMywgMzUxNDIsIDM1MTUxLCAzNTE2MSwgMzUxNzEsIDM1MTc4LCAzNTE4NSwgMzUxOTMsIAotICAgIDM1MjAxLCAzNTIwOSwgMzUyMTcsIDM1MjI0LCAzNTIzMSwgMzUyMzksIDM1MjQ3LCAzNTI1NSwgMzUyNjMsIDM1MjcxLCAKLSAgICAzNTI3OSwgMzUyODcsIDM1Mjk1LCAzNTMwMywgMzUzMTEsIDM1MzE5LCAzNTMyNywgMzUzMzUsIDM1MzQzLCAzNTM1MSwgCi0gICAgMzUzNTksIDM1MzY4LCAzNTM3NywgMzUzODYsIDM1Mzk0LCAzNTQwMywgMzU0MTIsIDM1NDIxLCAzNTQzMCwgMzU0NDAsIAotICAgIDM1NDQ5LCAzNTQ1NiwgMzU0NjEsIDM1NDY4LCAzNTQ3NSwgMzU0ODMsIDM1NDkxLCAzNTUwMCwgMzU1MDksIDM1NTE5LCAKLSAgICAzNTUyOSwgMzU1NDAsIDM1NTUxLCAzNTU2MCwgMzU1NjksIDM1NTc5LCAzNTU4OSwgMzU1OTgsIDM1NjA3LCAzNTYxNywgCi0gICAgMzU2MjcsIDM1NjM4LCAzNTY0OSwgMzU2NTgsIDM1NjY3LCAzNTY3NywgMzU2ODcsIDM1Njk0LCAzNTcwMSwgMzU3MDksIAotICAgIDM1NzE3LCAzNTcyMywgMzU3MjksIDM1NzM4LCAzNTc0NywgMzU3NTcsIDM1NzY3LCAzNTc3OCwgMzU3ODksIDM1Nzk4LCAKLSAgICAzNTgwNywgMzU4MTcsIDM1ODI3LCAzNTgzNiwgMzU4NDUsIDM1ODUzLCAzNTg2MSwgMzU4NjgsIDM1ODc1LCAzNTg4MywgCi0gICAgMzU4OTEsIDM1OTAwLCAzNTkwOSwgMzU5MTksIDM1OTI5LCAzNTk0MCwgMzU5NTEsIDM1OTYwLCAzNTk2OSwgMzU5NzksIAotICAgIDM1OTg5LCAzNTk5OCwgMzYwMDcsIDM2MDE3LCAzNjAyNywgMzYwMzgsIDM2MDQ5LCAzNjA1OCwgMzYwNjcsIDM2MDc3LCAKLSAgICAzNjA4NywgMzYwOTQsIDM2MTAxLCAzNjEwOSwgMzYxMTcsIDM2MTI2LCAzNjEzNSwgMzYxNDUsIDM2MTU1LCAzNjE2NiwgCi0gICAgMzYxNzcsIDM2MTg2LCAzNjE5NSwgMzYyMDUsIDM2MjE1LCAzNjIyMywgMzYyMzEsIDM2MjM5LCAzNjI0NywgMzYyNTYsIAotICAgIDM2MjY1LCAzNjI3MiwgMzYyNzksIDM2Mjg2LCAzNjI5MywgMzYzMDAsIDM2MzA3LCAzNjMxNSwgMzYzMjMsIDM2MzMxLCAKLSAgICAzNjMzOSwgMzYzNTAsIDM2MzYxLCAzNjM3MiwgMzYzODMsIDM2Mzk0LCAzNjQwNSwgMzY0MTMsIDM2NDIxLCAzNjQzMiwgCi0gICAgMzY0NDMsIDM2NDU0LCAzNjQ2NSwgMzY0NzYsIDM2NDg3LCAzNjQ5NSwgMzY1MDMsIDM2NTE0LCAzNjUyNSwgMzY1MzYsIDAsIAotICAgIDAsIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTc0LCAzNjU4NSwgMzY1OTYsIDAsIDAsIDM2NjA3LCAzNjYxNSwgMzY2MjMsIAotICAgIDM2NjM0LCAzNjY0NSwgMzY2NTYsIDM2NjY3LCAzNjY3OCwgMzY2ODksIDM2Njk3LCAzNjcwNSwgMzY3MTYsIDM2NzI3LCAKLSAgICAzNjczOCwgMzY3NDksIDM2NzYwLCAzNjc3MSwgMzY3NzksIDM2Nzg3LCAzNjc5OCwgMzY4MDksIDM2ODIwLCAzNjgzMSwgCi0gICAgMzY4NDIsIDM2ODUzLCAzNjg2MSwgMzY4NjksIDM2ODgwLCAzNjg5MSwgMzY5MDIsIDM2OTEzLCAzNjkyNCwgMzY5MzUsIAotICAgIDM2OTQzLCAzNjk1MSwgMzY5NjIsIDM2OTczLCAzNjk4NCwgMCwgMCwgMzY5OTUsIDM3MDAzLCAzNzAxMSwgMzcwMjIsIAotICAgIDM3MDMzLCAzNzA0NCwgMCwgMCwgMzcwNTUsIDM3MDYzLCAzNzA3MSwgMzcwODIsIDM3MDkzLCAzNzEwNCwgMzcxMTUsIAotICAgIDM3MTI2LCAwLCAzNzEzNywgMCwgMzcxNDUsIDAsIDM3MTU2LCAwLCAzNzE2NywgMzcxNzgsIDM3MTg2LCAzNzE5NCwgCi0gICAgMzcyMDUsIDM3MjE2LCAzNzIyNywgMzcyMzgsIDM3MjQ5LCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NywgMzcyOTgsIAotICAgIDM3MzA5LCAzNzMyMCwgMzczMzEsIDM3MzQyLCAzNzM1MCwgMzczNTgsIDM3MzY2LCAzNzM3NCwgMzczODIsIDM3MzkwLCAKLSAgICAzNzM5OCwgMzc0MDYsIDM3NDE0LCAzNzQyMiwgMzc0MzAsIDM3NDM4LCAzNzQ0NiwgMCwgMCwgMzc0NTQsIDM3NDY1LCAKLSAgICAzNzQ3NiwgMzc0OTAsIDM3NTA0LCAzNzUxOCwgMzc1MzIsIDM3NTQ2LCAzNzU2MCwgMzc1NzEsIDM3NTgyLCAzNzU5NiwgCi0gICAgMzc2MTAsIDM3NjI0LCAzNzYzOCwgMzc2NTIsIDM3NjY2LCAzNzY3NywgMzc2ODgsIDM3NzAyLCAzNzcxNiwgMzc3MzAsIAotICAgIDM3NzQ0LCAzNzc1OCwgMzc3NzIsIDM3NzgzLCAzNzc5NCwgMzc4MDgsIDM3ODIyLCAzNzgzNiwgMzc4NTAsIDM3ODY0LCAKLSAgICAzNzg3OCwgMzc4ODksIDM3OTAwLCAzNzkxNCwgMzc5MjgsIDM3OTQyLCAzNzk1NiwgMzc5NzAsIDM3OTg0LCAzNzk5NSwgCi0gICAgMzgwMDYsIDM4MDIwLCAzODAzNCwgMzgwNDgsIDM4MDYyLCAzODA3NiwgMzgwOTAsIDM4MDk4LCAzODEwNiwgMzgxMTcsIAotICAgIDM4MTI1LCAwLCAzODEzNiwgMzgxNDQsIDM4MTU1LCAzODE2MywgMzgxNzEsIDM4MTc5LCAzODE4NywgMzgxOTUsIDM4MTk4LCAKLSAgICAzODIwMSwgMzgyMDQsIDM4MjA3LCAzODIxMywgMzgyMjQsIDM4MjMyLCAwLCAzODI0MywgMzgyNTEsIDM4MjYyLCAzODI3MCwgCi0gICAgMzgyNzgsIDM4Mjg2LCAzODI5NCwgMzgzMDIsIDM4MzA4LCAzODMxNCwgMzgzMjAsIDM4MzI4LCAzODMzNiwgMzgzNDcsIDAsIAotICAgIDAsIDM4MzU4LCAzODM2NiwgMzgzNzcsIDM4Mzg1LCAzODM5MywgMzg0MDEsIDAsIDM4NDA5LCAzODQxNSwgMzg0MjEsIAotICAgIDM4NDI3LCAzODQzNSwgMzg0NDMsIDM4NDU0LCAzODQ2NSwgMzg0NzMsIDM4NDgxLCAzODQ4OSwgMzg1MDAsIDM4NTA4LCAKLSAgICAzODUxNiwgMzg1MjQsIDM4NTMyLCAzODU0MCwgMzg1NDYsIDM4NTUyLCAwLCAwLCAzODU1NSwgMzg1NjYsIDM4NTc0LCAwLCAKLSAgICAzODU4NSwgMzg1OTMsIDM4NjA0LCAzODYxMiwgMzg2MjAsIDM4NjI4LCAzODYzNiwgMzg2NDQsIDM4NjQ3LCAwLCAzODY1MCwgCi0gICAgMzg2NTQsIDM4NjU4LCAzODY2MiwgMzg2NjYsIDM4NjcwLCAzODY3NCwgMzg2NzgsIDM4NjgyLCAzODY4NiwgMzg2OTAsIAotICAgIDM4Njk0LCAzODcwMCwgMzg3MDYsIDM4NzEyLCAzODcxNSwgMzg3MTgsIDM4NzIwLCAzODcyNCwgMzg3MjgsIDM4NzMyLCAKLSAgICAzODczNiwgMzg3MzgsIDM4NzQyLCAzODc0NiwgMzg3NTIsIDM4NzU4LCAzODc2NSwgMzg3NzIsIDM4Nzc3LCAzODc4MiwgCi0gICAgMzg3ODgsIDM4Nzk0LCAzODc5NiwgMzg3OTksIDM4ODAxLCAzODgwNSwgMzg4MDksIDM4ODEzLCAzODgxNiwgMzg4MjAsIAotICAgIDM4ODI0LCAzODgyOCwgMzg4MzIsIDM4ODM2LCAzODg0MiwgMzg4NDYsIDM4ODUwLCAzODg1NiwgMzg4NjEsIDM4ODY4LCAKLSAgICAzODg3MCwgMzg4NzMsIDM4ODc3LCAzODg4MSwgMzg4ODYsIDM4ODkyLCAzODg5NCwgMzg5MDMsIDM4OTEyLCAzODkxNSwgCi0gICAgMzg5MTksIDM4OTIxLCAzODkyMywgMzg5MjUsIDM4OTI4LCAzODkzNCwgMzg5MzYsIDM4OTQwLCAzODk0NCwgMzg5NTEsIAotICAgIDM4OTU4LCAzODk2MiwgMzg5NjcsIDM4OTcyLCAzODk3NywgMzg5ODIsIDM4OTg2LCAzODk5MCwgMzg5OTMsIDM4OTk3LCAKLSAgICAzOTAwMSwgMzkwMDgsIDM5MDEzLCAzOTAxNywgMzkwMjEsIDM5MDI2LCAzOTAzMCwgMzkwMzQsIDM5MDM5LCAzOTA0NCwgCi0gICAgMzkwNDgsIDM5MDUyLCAzOTA1NiwgMzkwNTgsIDM5MDYzLCAzOTA2OCwgMzkwNzIsIDM5MDc2LCAzOTA4MCwgMzkwODQsIDAsIAotICAgIDM5MDg4LCAzOTA5MiwgMzkwOTYsIDM5MTAyLCAzOTEwOCwgMzkxMTQsIDM5MTIwLCAzOTEyNywgMzkxMzQsIDM5MTM5LCAKLSAgICAzOTE0NCwgMzkxNDgsIDAsIDAsIDM5MTU0LCAzOTE1NywgMzkxNjAsIDM5MTYzLCAzOTE2NiwgMzkxNjksIDM5MTcyLCAKLSAgICAzOTE3NiwgMzkxODAsIDM5MTg1LCAzOTE5MCwgMzkxOTUsIDM5MjAyLCAzOTIwNiwgMzkyMDksIDM5MjEyLCAzOTIxNSwgCi0gICAgMzkyMTgsIDM5MjIxLCAzOTIyNCwgMzkyMjcsIDM5MjMwLCAzOTIzMywgMzkyMzcsIDM5MjQxLCAzOTI0NiwgMzkyNTEsIDAsIAotICAgIDM5MjU2LCAzOTI2MiwgMzkyNjgsIDM5Mjc0LCAzOTI4MSwgMzkyODgsIDM5Mjk1LCAzOTMwMiwgMzkzMDgsIDM5MzE0LCAKLSAgICAzOTMyMSwgMzkzMjgsIDM5MzM1LCAwLCAwLCAwLCAzOTM0MiwgMzkzNDUsIDM5MzQ4LCAzOTM1MSwgMzkzNTYsIDM5MzU5LCAKLSAgICAzOTM2MiwgMzkzNjUsIDM5MzY4LCAzOTM3MSwgMzkzNzQsIDM5Mzc4LCAzOTM4MSwgMzkzODQsIDM5Mzg3LCAzOTM5MCwgCi0gICAgMzkzOTMsIDM5Mzk4LCAzOTQwMSwgMzk0MDQsIDM5NDA3LCAzOTQxMCwgMzk0MTMsIDM5NDE4LCAzOTQyMSwgMzk0MjQsIAotICAgIDM5NDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzOTQzNCwgMzk0MzksIDM5NDQ0LCAzOTQ1MSwgMzk0NTksIDM5NDY0LCAzOTQ2OSwgMzk0NzMsIDM5NDc3LCAzOTQ4MiwgCi0gICAgMzk0ODksIDM5NDk2LCAzOTUwMCwgMzk1MDUsIDM5NTEwLCAzOTUxNSwgMzk1MjAsIDM5NTI3LCAzOTUzMiwgMzk1MzcsIAotICAgIDM5NTQyLCAzOTU1MSwgMzk1NTgsIDM5NTY1LCAzOTU2OSwgMzk1NzQsIDM5NTgwLCAzOTU4NSwgMzk1OTIsIDM5NjAxLCAKLSAgICAzOTYxMCwgMzk2MTQsIDM5NjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYyMiwgCi0gICAgMzk2MjYsIDM5NjM0LCAzOTYzOCwgMzk2NDIsIDM5NjQ3LCAzOTY1MSwgMzk2NTUsIDM5NjU5LCAzOTY2MSwgMzk2NjUsIAotICAgIDM5NjY5LCAzOTY3MywgMzk2NzgsIDM5NjgyLCAzOTY4NiwgMzk2OTQsIDM5Njk3LCAzOTcwMSwgMzk3MDQsIDM5NzA3LCAKLSAgICAzOTcxMywgMzk3MTcsIDM5NzIwLCAzOTcyNiwgMzk3MzAsIDM5NzM0LCAzOTczOCwgMzk3NDEsIDM5NzQ1LCAzOTc0OCwgCi0gICAgMzk3NTIsIDM5NzU0LCAzOTc1NywgMzk3NjAsIDM5NzY0LCAzOTc2NiwgMzk3NzAsIDM5NzczLCAzOTc3NiwgMzk3ODEsIAotICAgIDM5Nzg2LCAzOTc5MywgMzk3OTYsIDM5Nzk5LCAzOTgwMywgMzk4MDgsIDM5ODExLCAzOTgxNCwgMzk4MTcsIDM5ODIxLCAKLSAgICAzOTgyNiwgMzk4MjksIDM5ODMyLCAzOTgzNCwgMzk4MzcsIDM5ODQwLCAzOTg0MywgMzk4NDcsIDM5ODUyLCAzOTg1NSwgCi0gICAgMzk4NTksIDM5ODYzLCAzOTg2NywgMzk4NzEsIDM5ODc2LCAzOTg4MiwgMzk4ODcsIDM5ODkyLCAzOTg5OCwgMzk5MDMsIAotICAgIDM5OTA4LCAzOTkxMiwgMzk5MTYsIDM5OTIxLCAzOTkyNSwgMzk5MjksIDM5OTMyLCAzOTkzNCwgMzk5MzksIDM5OTQ1LCAKLSAgICAzOTk1MiwgMzk5NTksIDM5OTY2LCAzOTk3MywgMzk5ODAsIDM5OTg3LCAzOTk5NCwgNDAwMDEsIDQwMDA5LCA0MDAxNiwgCi0gICAgNDAwMjQsIDQwMDMxLCA0MDAzOCwgNDAwNDYsIDQwMDU0LCA0MDA1OSwgNDAwNjQsIDQwMDY5LCA0MDA3NCwgNDAwNzksIAotICAgIDQwMDg0LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMTAsIDQwMTE2LCA0MDEyMiwgNDAxMjgsIDQwMTM1LCAKLSAgICA0MDE0MywgNDAxNTAsIDQwMTU2LCA0MDE2MiwgNDAxNjgsIDQwMTc0LCA0MDE4MCwgNDAxODYsIDQwMTkyLCA0MDE5OCwgCi0gICAgNDAyMDQsIDQwMjExLCA0MDIxOCwgNDAyMjUsIDQwMjMyLCA0MDI0MCwgNDAyNDksIDQwMjU3LCA0MDI2OCwgNDAyNzYsIAotICAgIDQwMjg0LCA0MDI5MywgNDAzMDAsIDQwMzA5LCA0MDMxOCwgNDAzMjYsIDQwMzM1LCAwLCAwLCAwLCAwLCAwLCAwLCA0MDM0MywgCi0gICAgNDAzNDUsIDQwMzQ4LCA0MDM1MCwgNDAzNTMsIDQwMzU2LCA0MDM1OSwgNDAzNjQsIDQwMzY5LCA0MDM3NCwgNDAzNzksIAotICAgIDQwMzgzLCA0MDM4NywgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDYsIDQwNDExLCA0MDQxNywgNDA0MjIsIDQwNDI3LCAKLSAgICA0MDQzMiwgNDA0MzgsIDQwNDQzLCA0MDQ0OSwgNDA0NTUsIDQwNDU5LCA0MDQ2MywgNDA0NjgsIDQwNDczLCA0MDQ3OCwgCi0gICAgNDA0ODMsIDQwNDg4LCA0MDQ5NiwgNDA1MDQsIDQwNTEyLCA0MDUyMCwgNDA1MjcsIDQwNTM1LCA0MDU0MiwgNDA1NDksIAotICAgIDQwNTU4LCA0MDU3MCwgNDA1NzYsIDQwNTgyLCA0MDU5MCwgNDA1OTgsIDQwNjA3LCA0MDYxNiwgNDA2MjQsIDQwNjMyLCAKLSAgICA0MDY0MSwgNDA2NTAsIDQwNjU1LCA0MDY2MywgNDA2NjgsIDQwNjczLCA0MDY3OSwgNDA2ODQsIDQwNjkwLCA0MDY5NywgCi0gICAgNDA3MDQsIDQwNzA5LCA0MDcxNSwgNDA3MjAsIDQwNzIzLCA0MDcyNywgNDA3MzAsIDQwNzM0LCA0MDczOCwgNDA3NDIsIAotICAgIDQwNzQ4LCA0MDc1NCwgNDA3NjAsIDQwNzY2LCA0MDc3MCwgNDA3NzQsIDQwNzc4LCA0MDc4MiwgNDA3ODgsIDQwNzk0LCAKLSAgICA0MDc5OCwgNDA4MDMsIDQwODA3LCA0MDgxMiwgNDA4MTcsIDQwODIyLCA0MDgyNSwgNDA4MjksIDQwODMyLCA0MDgzNiwgCi0gICAgNDA4NDMsIDQwODUxLCA0MDg2MiwgNDA4NzMsIDQwODc4LCA0MDg4NywgNDA4OTQsIDQwOTAzLCA0MDkxMiwgNDA5MTYsIAotICAgIDQwOTIyLCA0MDkzMCwgNDA5MzQsIDQwOTM5LCA0MDk0NCwgNDA5NTAsIDQwOTU2LCA0MDk2MiwgNDA5NjksIDQwOTczLCAKLSAgICA0MDk3NywgNDA5ODIsIDQwOTg1LCA0MDk4NywgNDA5OTEsIDQwOTk1LCA0MTAwMywgNDEwMDcsIDQxMDA5LCA0MTAxMSwgCi0gICAgNDEwMTUsIDQxMDIzLCA0MTAyOCwgNDEwMzQsIDQxMDQ0LCA0MTA1MSwgNDEwNTYsIDQxMDYwLCA0MTA2NCwgNDEwNjgsIAotICAgIDQxMDcxLCA0MTA3NCwgNDEwNzcsIDQxMDgxLCA0MTA4NSwgNDEwODksIDQxMDkzLCA0MTA5NywgNDExMDAsIDQxMTA0LCAKLSAgICA0MTEwOCwgNDExMTEsIDQxMTEzLCA0MTExNiwgNDExMTgsIDQxMTIyLCA0MTEyNiwgNDExMjgsIDQxMTM0LCA0MTEzNywgCi0gICAgNDExNDIsIDQxMTQ2LCA0MTE1MCwgNDExNTIsIDQxMTU0LCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NywgNDExNzEsIAotICAgIDQxMTc1LCA0MTE3OSwgNDExODUsIDQxMTkxLCA0MTE5MywgNDExOTUsIDQxMTk3LCA0MTE5OSwgNDEyMDIsIDQxMjA0LCAKLSAgICA0MTIwOCwgNDEyMTAsIDQxMjE0LCA0MTIxNywgNDEyMjMsIDQxMjI3LCA0MTIzMSwgNDEyMzQsIDQxMjM3LCA0MTI0MSwgCi0gICAgNDEyNDcsIDQxMjUxLCA0MTI2MSwgNDEyNzEsIDQxMjc1LCA0MTI4MSwgNDEyODcsIDQxMjkwLCA0MTI5NCwgNDEyOTcsIAotICAgIDQxMzAyLCA0MTMwNiwgNDEzMTIsIDQxMzE2LCA0MTMyOCwgNDEzMzYsIDQxMzQwLCA0MTM0NCwgNDEzNTAsIDQxMzU0LCAKLSAgICA0MTM1NywgNDEzNTksIDQxMzYyLCA0MTM2NiwgNDEzNzAsIDQxMzc3LCA0MTM4MSwgNDEzODUsIDQxMzg5LCA0MTM5MiwgCi0gICAgNDEzOTcsIDQxNDAyLCA0MTQwNywgNDE0MTIsIDQxNDE3LCA0MTQyMiwgNDE0MzAsIDQxNDM4LCA0MTQ0MiwgNDE0NDYsIAotICAgIDQxNDQ4LCA0MTQ1MywgNDE0NTcsIDQxNDYxLCA0MTQ2OSwgNDE0NzcsIDQxNDgzLCA0MTQ4OSwgNDE0OTgsIDQxNTA3LCAKLSAgICA0MTUxMiwgNDE1MTcsIDQxNTI1LCA0MTUzMywgNDE1MzUsIDQxNTM3LCA0MTU0MiwgNDE1NDcsIDQxNTUzLCA0MTU1OSwgCi0gICAgNDE1NjUsIDQxNTcxLCA0MTU3NSwgNDE1NzksIDQxNTg2LCA0MTU5MywgNDE1OTksIDQxNjA1LCA0MTYxNSwgNDE2MjUsIAotICAgIDQxNjMzLCA0MTY0MSwgNDE2NDMsIDQxNjQ3LCA0MTY1MSwgNDE2NTYsIDQxNjYxLCA0MTY2OCwgNDE2NzUsIDQxNjc4LCAKLSAgICA0MTY4MSwgNDE2ODQsIDQxNjg3LCA0MTY5MCwgNDE2OTUsIDQxNjk5LCA0MTcwNCwgNDE3MDksIDQxNzEyLCA0MTcxNSwgCi0gICAgNDE3MTgsIDQxNzIxLCA0MTcyNCwgNDE3MjgsIDQxNzMxLCA0MTczNCwgNDE3MzcsIDQxNzQwLCA0MTc0MiwgNDE3NDQsIAotICAgIDQxNzQ2LCA0MTc0OCwgNDE3NTYsIDQxNzY0LCA0MTc3MCwgNDE3NzQsIDQxNzgwLCA0MTc5MCwgNDE3OTYsIDQxODAyLCAKLSAgICA0MTgwOCwgNDE4MTYsIDQxODI0LCA0MTgzNSwgNDE4MzksIDQxODQzLCA0MTg0NSwgNDE4NTEsIDQxODUzLCA0MTg1NSwgCi0gICAgNDE4NTcsIDQxODU5LCA0MTg2NSwgNDE4NjgsIDQxODc0LCA0MTg4MCwgNDE4ODQsIDQxODg4LCA0MTg5MiwgNDE4OTUsIAotICAgIDQxODk5LCA0MTkwMywgNDE5MDUsIDQxOTE0LCA0MTkyMywgNDE5MjgsIDQxOTMzLCA0MTkzOSwgNDE5NDUsIDQxOTUxLCAKLSAgICA0MTk1NCwgNDE5NTcsIDQxOTYwLCA0MTk2MywgNDE5NjUsIDQxOTcwLCA0MTk3NSwgNDE5ODAsIDQxOTg2LCA0MTk5MiwgCi0gICAgNDIwMDAsIDQyMDA4LCA0MjAxNCwgNDIwMjAsIDQyMDI2LCA0MjAzMiwgNDIwNDEsIDQyMDUwLCA0MjA1OSwgNDIwNjgsIAotICAgIDQyMDc3LCA0MjA4NiwgNDIwOTUsIDQyMTA0LCA0MjExMywgNDIxMjIsIDQyMTMwLCA0MjE0MiwgNDIxNTIsIDQyMTY3LCAKLSAgICA0MjE3MCwgNDIxNzUsIDQyMTgxLCA0MjE4NywgNDIxOTQsIDQyMjA4LCA0MjIyMywgNDIyMjksIDQyMjM1LCA0MjI0MiwgCi0gICAgNDIyNDgsIDQyMjU2LCA0MjI2MiwgNDIyNzUsIDQyMjg5LCA0MjI5NCwgNDIzMDAsIDQyMzA3LCA0MjMxMCwgNDIzMTMsIAotICAgIDQyMzE1LCA0MjMxOCwgNDIzMjEsIDQyMzIzLCA0MjMyNSwgNDIzMjksIDQyMzMyLCA0MjMzNSwgNDIzMzgsIDQyMzQxLCAKLSAgICA0MjM0NiwgNDIzNTEsIDQyMzU2LCA0MjM2MSwgNDIzNjYsIDQyMzY5LCA0MjM3MSwgNDIzNzMsIDQyMzc1LCA0MjM3OSwgCi0gICAgNDIzODMsIDQyMzg3LCA0MjM5MywgNDIzOTgsIDQyNDAwLCA0MjQwMiwgNDI0MDcsIDQyNDEyLCA0MjQxNywgNDI0MjIsIAotICAgIDQyNDI3LCA0MjQzMiwgNDI0MzQsIDQyNDM2LCA0MjQ0NSwgNDI0NDksIDQyNDU3LCA0MjQ2NiwgNDI0NjgsIDQyNDczLCAKLSAgICA0MjQ3OCwgNDI0ODYsIDQyNDkwLCA0MjQ5MiwgNDI0OTYsIDQyNDk4LCA0MjUwMiwgNDI1MDYsIDQyNTEwLCA0MjUxMiwgCi0gICAgNDI1MTQsIDQyNTE2LCA0MjUyMywgNDI1MzIsIDQyNTQxLCA0MjU1MCwgNDI1NTksIDQyNTY4LCA0MjU3NywgNDI1ODYsIAotICAgIDQyNTk1LCA0MjYwMywgNDI2MTEsIDQyNjIwLCA0MjYyOSwgNDI2MzgsIDQyNjQ3LCA0MjY1NSwgNDI2NjMsIDQyNjcyLCAKLSAgICA0MjY4MSwgNDI2OTAsIDQyNzAwLCA0MjcwOSwgNDI3MTksIDQyNzI4LCA0MjczOCwgNDI3NDcsIDQyNzU3LCA0Mjc2NywgCi0gICAgNDI3NzYsIDQyNzg2LCA0Mjc5NSwgNDI4MDUsIDQyODE0LCA0MjgyNCwgNDI4MzMsIDQyODQyLCA0Mjg1MSwgNDI4NjAsIAotICAgIDQyODY5LCA0Mjg3OSwgNDI4ODgsIDQyODk3LCA0MjkwNiwgNDI5MTYsIDQyOTI1LCA0MjkzNCwgNDI5NDMsIDQyOTUyLCAKLSAgICA0Mjk2MiwgNDI5NzIsIDQyOTgxLCA0Mjk5MCwgNDI5OTgsIDQzMDA2LCA0MzAxMywgNDMwMjEsIDQzMDMwLCA0MzA0MSwgCi0gICAgNDMwNTAsIDQzMDU5LCA0MzA2OCwgNDMwNzUsIDQzMDgyLCA0MzA4OSwgNDMwOTgsIDQzMTA3LCA0MzExNiwgNDMxMjUsIAotICAgIDQzMTMyLCA0MzEzNywgNDMxNDYsIDQzMTUxLCA0MzE1NCwgNDMxNjIsIDQzMTY1LCA0MzE3MCwgNDMxNzUsIDQzMTc4LCAKLSAgICA0MzE4MSwgNDMxODksIDQzMTkyLCA0MzE5NywgNDMyMDAsIDQzMjA3LCA0MzIxMiwgNDMyMjAsIDQzMjIzLCA0MzIyNiwgCi0gICAgNDMyMjksIDQzMjM0LCA0MzIzOSwgNDMyNDIsIDQzMjQ1LCA0MzI1MywgNDMyNTYsIDQzMjYzLCA0MzI3MCwgNDMyNzQsIAotICAgIDQzMjc4LCA0MzI4MywgNDMyODgsIDQzMjk0LCA0MzI5OSwgNDMzMDUsIDQzMzExLCA0MzMxNiwgNDMzMjIsIDQzMzMwLCAKLSAgICA0MzMzNiwgNDMzNDQsIDQzMzUyLCA0MzM1OCwgNDMzNjYsIDQzMzc0LCA0MzM4MywgNDMzOTEsIDQzMzk3LCA0MzQwNSwgCi0gICAgNDM0MTQsIDQzNDIyLCA0MzQyNiwgNDM0MzEsIDQzNDQ0LCA0MzQ1NywgNDM0NjEsIDQzNDY1LCA0MzQ2OSwgNDM0NzMsIAotICAgIDQzNDgzLCA0MzQ4NywgNDM0OTIsIDQzNDk3LCA0MzUwMiwgNDM1MDcsIDQzNTEyLCA0MzUxNywgNDM1MjcsIDQzNTM3LCAKLSAgICA0MzU0NSwgNDM1NTUsIDQzNTY1LCA0MzU3MywgNDM1ODMsIDQzNTkzLCA0MzYwMSwgNDM2MTEsIDQzNjIxLCA0MzYyOSwgCi0gICAgNDM2MzcsIDQzNjQ3LCA0MzY1NywgNDM2NjAsIDQzNjYzLCA0MzY2NiwgNDM2NzEsIDQzNjc1LCA0MzY4MSwgNDM2ODgsIAotICAgIDQzNjk1LCA0MzcwMywgNDM3MTAsIDQzNzE0LCA0MzcxOCwgNDM3MjIsIDQzNzI2LCA0MzcyOCwgNDM3MzIsIDQzNzM2LCAKLSAgICA0Mzc0MSwgNDM3NDYsIDQzNzUzLCA0Mzc2MCwgNDM3NjMsIDQzNzcwLCA0Mzc3MiwgNDM3NzQsIDQzNzc4LCA0Mzc4MiwgCi0gICAgNDM3ODcsIDQzNzkzLCA0Mzc5OSwgNDM4MDUsIDQzODExLCA0MzgyMCwgNDM4MjksIDQzODM4LCA0Mzg0MiwgNDM4NDQsIAotICAgIDQzODQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0Mzg1NSwgNDM4NTksIDQzODY2LCA0Mzg3MywgCi0gICAgNDM4ODAsIDQzODg3LCA0Mzg5MSwgNDM4OTUsIDQzODk5LCA0MzkwMywgNDM5MDgsIDQzOTE0LCA0MzkxOSwgNDM5MjUsIAotICAgIDQzOTMxLCA0MzkzNywgNDM5NDMsIDQzOTUxLCA0Mzk1OCwgNDM5NjUsIDQzOTcyLCA0Mzk3OSwgNDM5ODQsIDQzOTkwLCAKLSAgICA0Mzk5OSwgNDQwMDMsIDQ0MDEwLCA0NDAxNCwgNDQwMTgsIDQ0MDI0LCA0NDAzMCwgNDQwMzYsIDQ0MDQyLCA0NDA0NiwgCi0gICAgNDQwNTAsIDQ0MDUzLCA0NDA1NiwgNDQwNjAsIDQ0MDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDA3NCwgNDQwNzcsIDQ0MDgxLCA0NDA4NSwgNDQwOTEsIAotICAgIDQ0MDk3LCA0NDEwMywgNDQxMTEsIDQ0MTE4LCA0NDEyMiwgNDQxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MTM1LCA0NDEzOCwgNDQxNDEsIDQ0MTQ0LCA0NDE0NywgCi0gICAgNDQxNTAsIDQ0MTUzLCA0NDE1NiwgNDQxNTksIDQ0MTYyLCA0NDE2NiwgNDQxNzAsIDQ0MTc0LCA0NDE3OCwgNDQxODIsIAotICAgIDQ0MTg2LCA0NDE5MCwgNDQxOTQsIDQ0MTk4LCA0NDIwMiwgNDQyMDYsIDQ0MjA5LCA0NDIxMiwgNDQyMTUsIDQ0MjE4LCAKLSAgICA0NDIyMSwgNDQyMjQsIDQ0MjI3LCA0NDIzMCwgNDQyMzMsIDQ0MjM3LCA0NDI0MSwgNDQyNDUsIDQ0MjQ5LCA0NDI1MywgCi0gICAgNDQyNTcsIDQ0MjYxLCA0NDI2NSwgNDQyNjksIDQ0MjczLCA0NDI3NywgNDQyODMsIDQ0Mjg5LCA0NDI5NSwgNDQzMDIsIAotICAgIDQ0MzA5LCA0NDMxNiwgNDQzMjMsIDQ0MzMwLCA0NDMzNywgNDQzNDQsIDQ0MzUxLCA0NDM1OCwgNDQzNjUsIDQ0MzcyLCAKLSAgICA0NDM3OSwgNDQzODYsIDQ0MzkzLCA0NDQwMCwgNDQ0MDcsIDQ0NDE0LCA0NDQxOSwgNDQ0MjUsIDQ0NDMxLCA0NDQzNywgCi0gICAgNDQ0NDIsIDQ0NDQ4LCA0NDQ1NCwgNDQ0NjAsIDQ0NDY1LCA0NDQ3MSwgNDQ0NzcsIDQ0NDgyLCA0NDQ4NywgNDQ0OTMsIAotICAgIDQ0NDk4LCA0NDUwNCwgNDQ1MTAsIDQ0NTE1LCA0NDUyMSwgNDQ1MjcsIDQ0NTMyLCA0NDUzOCwgNDQ1NDQsIDQ0NTUwLCAKLSAgICA0NDU1NiwgNDQ1NjIsIDQ0NTY3LCA0NDU3MywgNDQ1NzksIDQ0NTg1LCA0NDU5MCwgNDQ1OTYsIDQ0NjAyLCA0NDYwOCwgCi0gICAgNDQ2MTMsIDQ0NjE5LCA0NDYyNSwgNDQ2MzAsIDQ0NjM1LCA0NDY0MSwgNDQ2NDYsIDQ0NjUyLCA0NDY1OCwgNDQ2NjMsIAotICAgIDQ0NjY5LCA0NDY3NSwgNDQ2ODAsIDQ0Njg2LCA0NDY5MiwgNDQ2OTgsIDQ0NzA0LCA0NDcxMCwgNDQ3MTUsIDQ0NzIxLCAKLSAgICA0NDcyNywgNDQ3MzMsIDQ0NzM4LCA0NDc0NCwgNDQ3NTAsIDQ0NzU2LCA0NDc2MSwgNDQ3NjcsIDQ0NzczLCA0NDc3OCwgCi0gICAgNDQ3ODMsIDQ0Nzg5LCA0NDc5NCwgNDQ4MDAsIDQ0ODA2LCA0NDgxMSwgNDQ4MTcsIDQ0ODIzLCA0NDgyOCwgNDQ4MzQsIAotICAgIDQ0ODQwLCA0NDg0NiwgNDQ4NTIsIDQ0ODU4LCA0NDg2MiwgNDQ4NjcsIDQ0ODcyLCA0NDg3NywgNDQ4ODIsIDQ0ODg3LCAKLSAgICA0NDg5MiwgNDQ4OTcsIDQ0OTAyLCA0NDkwNywgNDQ5MTIsIDQ0OTE2LCA0NDkyMCwgNDQ5MjQsIDQ0OTI4LCA0NDkzMiwgCi0gICAgNDQ5MzYsIDQ0OTQwLCA0NDk0NCwgNDQ5NDgsIDQ0OTUzLCA0NDk1OCwgNDQ5NjMsIDQ0OTY4LCA0NDk3MywgNDQ5NzgsIAotICAgIDQ0OTg3LCA0NDk5NiwgNDUwMDUsIDQ1MDE0LCA0NTAyMywgNDUwMzIsIDQ1MDQxLCA0NTA1MCwgNDUwNTcsIDQ1MDY1LCAKLSAgICA0NTA3MywgNDUwODAsIDQ1MDg3LCA0NTA5NSwgNDUxMDMsIDQ1MTEwLCA0NTExNywgNDUxMjUsIDQ1MTMzLCA0NTE0MCwgCi0gICAgNDUxNDcsIDQ1MTU1LCA0NTE2MywgNDUxNzAsIDQ1MTc3LCA0NTE4NSwgNDUxOTQsIDQ1MjAzLCA0NTIxMSwgNDUyMjAsIAotICAgIDQ1MjI5LCA0NTIzNiwgNDUyNDMsIDQ1MjUxLCA0NTI2MCwgNDUyNjksIDQ1Mjc3LCA0NTI4NiwgNDUyOTUsIDQ1MzAyLCAKLSAgICA0NTMwOSwgNDUzMTgsIDQ1MzI3LCA0NTMzNSwgNDUzNDMsIDQ1MzUyLCA0NTM2MSwgNDUzNjgsIDQ1Mzc1LCA0NTM4NCwgCi0gICAgNDUzOTMsIDQ1NDAxLCA0NTQwOSwgNDU0MTgsIDQ1NDI3LCA0NTQzNCwgNDU0NDEsIDQ1NDUwLCA0NTQ1OSwgNDU0NjcsIAotICAgIDQ1NDc2LCA0NTQ4NSwgNDU0OTMsIDQ1NTAzLCA0NTUxMywgNDU1MjMsIDQ1NTMzLCA0NTU0MiwgNDU1NTEsIDQ1NTYwLCAKLSAgICA0NTU2OSwgNDU1NzYsIDQ1NTg0LCA0NTU5MiwgNDU2MDAsIDQ1NjA4LCA0NTYxMywgNDU2MTgsIDQ1NjI3LCA0NTYzNSwgCi0gICAgNDU2NDIsIDQ1NjUxLCA0NTY1OSwgNDU2NjYsIDQ1Njc1LCA0NTY4MywgNDU2OTAsIDQ1Njk5LCA0NTcwNywgNDU3MTQsIAotICAgIDQ1NzIzLCA0NTczMSwgNDU3MzgsIDQ1NzQ3LCA0NTc1NSwgNDU3NjIsIDQ1NzcxLCA0NTc3OSwgNDU3ODYsIDQ1Nzk1LCAKLSAgICA0NTgwMywgNDU4MTAsIDQ1ODE5LCA0NTgyNywgNDU4MzQsIDQ1ODQzLCA0NTg1MiwgNDU4NjEsIDQ1ODcwLCA0NTg4NCwgCi0gICAgNDU4OTgsIDQ1OTA1LCA0NTkxMCwgNDU5MTUsIDQ1OTIwLCA0NTkyNSwgNDU5MzAsIDQ1OTM1LCA0NTk0MCwgNDU5NDUsIAotICAgIDQ1OTUzLCA0NTk2MSwgNDU5NjksIDQ1OTc3LCA0NTk4MiwgNDU5ODksIDQ1OTk2LCA0NjAwMywgNDYwMDgsIDQ2MDE2LCAKLSAgICA0NjAyMywgNDYwMzEsIDQ2MDM1LCA0NjA0MiwgNDYwNDgsIDQ2MDU1LCA0NjA1OSwgNDYwNjUsIDQ2MDcxLCA0NjA3NywgCi0gICAgNDYwODEsIDQ2MDg0LCA0NjA4OCwgNDYwOTIsIDQ2MDk5LCA0NjEwNSwgNDYxMTEsIDQ2MTE3LCA0NjEyMywgNDYxMzcsIAotICAgIDQ2MTQ3LCA0NjE2MSwgNDYxNzUsIDQ2MTgxLCA0NjE5MSwgNDYyMDUsIDQ2MjA4LCA0NjIxMSwgNDYyMTgsIDQ2MjI2LCAKLSAgICA0NjIzMSwgNDYyMzYsIDQ2MjQ0LCA0NjI1NiwgNDYyNjgsIDQ2Mjc2LCA0NjI4MCwgNDYyODQsIDQ2Mjg3LCA0NjI5MCwgCi0gICAgNDYyOTQsIDQ2Mjk4LCA0NjMwMSwgNDYzMDQsIDQ2MzA5LCA0NjMxNCwgNDYzMjAsIDQ2MzI2LCA0NjMzMSwgNDYzMzYsIAotICAgIDQ2MzQyLCA0NjM0OCwgNDYzNTMsIDQ2MzU4LCA0NjM2MywgNDYzNjgsIDQ2Mzc0LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCAKLSAgICA0NjM5NiwgNDY0MDIsIDQ2NDA3LCA0NjQxMiwgNDY0MTUsIDQ2NDE4LCA0NjQyNywgNDY0MjksIDQ2NDMxLCA0NjQzNCwgCi0gICAgNDY0MzgsIDQ2NDQ0LCA0NjQ0NiwgNDY0NDksIDQ2NDU2LCA0NjQ2MywgNDY0NzEsIDQ2NDc5LCA0NjQ4OSwgNDY1MDMsIAotICAgIDQ2NTA4LCA0NjUxMywgNDY1MTcsIDQ2NTIyLCA0NjUzMCwgNDY1MzgsIDQ2NTQ3LCA0NjU1NiwgNDY1NjUsIDQ2NTc0LCAKLSAgICA0NjU3OSwgNDY1ODQsIDQ2NTkwLCA0NjU5NiwgNDY2MDIsIDQ2NjA4LCA0NjYxMSwgNDY2MTcsIDQ2NjIzLCA0NjYzMywgCi0gICAgNDY2NDMsIDQ2NjUxLCA0NjY1OSwgNDY2NjgsIDQ2Njc3LCA0NjY4MSwgNDY2ODksIDQ2Njk3LCA0NjcwNSwgNDY3MTMsIAotICAgIDQ2NzIyLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NCwgNDY3NTksIDQ2NzY0LCA0Njc2OSwgNDY3NzQsIDQ2NzgwLCAKLSAgICA0Njc4NiwgNDY3OTEsIDQ2Nzk3LCA0Njc5OSwgNDY4MDEsIDQ2ODAzLCA0NjgwNSwgNDY4MDgsIDQ2ODExLCA0NjgxMywgCi0gICAgNDY4MTUsIDQ2ODE3LCA0NjgyMSwgNDY4MjUsIDQ2ODI3LCA0NjgyOSwgNDY4MzIsIDQ2ODM1LCA0NjgzOSwgNDY4NDUsIAotICAgIDQ2ODUxLCA0Njg1MywgNDY4NjAsIDQ2ODY0LCA0Njg2OSwgNDY4NzQsIDQ2ODc2LCA0Njg4NiwgNDY4OTIsIDQ2ODk4LCAKLSAgICA0NjkwNCwgNDY5MTAsIDQ2OTE2LCA0NjkyMiwgNDY5MjcsIDQ2OTMwLCA0NjkzMywgNDY5MzYsIDQ2OTM4LCA0Njk0MCwgCi0gICAgNDY5NDQsIDQ2OTQ4LCA0Njk1MywgNDY5NTgsIDQ2OTYzLCA0Njk2NiwgNDY5NzAsIDQ2OTc1LCA0Njk3OCwgNDY5ODIsIAotICAgIDQ2OTg3LCA0Njk5MiwgNDY5OTcsIDQ3MDAyLCA0NzAwNywgNDcwMTIsIDQ3MDE3LCA0NzAyMiwgNDcwMjcsIDQ3MDMyLCAKLSAgICA0NzAzNywgNDcwNDIsIDQ3MDQ4LCA0NzA1NCwgNDcwNjAsIDQ3MDYyLCA0NzA2NSwgNDcwNjcsIDQ3MDcwLCA0NzA3MiwgCi0gICAgNDcwNzQsIDQ3MDc2LCA0NzA3OCwgNDcwODAsIDQ3MDgyLCA0NzA4NCwgNDcwODYsIDQ3MDg4LCA0NzA5MCwgNDcwOTIsIAotICAgIDQ3MDk0LCA0NzA5NiwgNDcwOTgsIDQ3MTAwLCA0NzEwMiwgNDcxMDQsIDQ3MTA5LCA0NzExNCwgNDcxMTksIDQ3MTI0LCAKLSAgICA0NzEyOSwgNDcxMzQsIDQ3MTM5LCA0NzE0NCwgNDcxNDksIDQ3MTU0LCA0NzE1OSwgNDcxNjQsIDQ3MTY5LCA0NzE3NCwgCi0gICAgNDcxNzksIDQ3MTg0LCA0NzE4OSwgNDcxOTQsIDQ3MTk5LCA0NzIwNCwgNDcyMDgsIDQ3MjEyLCA0NzIxNiwgNDcyMjIsIAotICAgIDQ3MjI4LCA0NzIzMywgNDcyMzgsIDQ3MjQzLCA0NzI0OCwgNDcyNTMsIDQ3MjU4LCA0NzI2NiwgNDcyNzQsIDQ3MjgyLCAKLSAgICA0NzI5MCwgNDcyOTgsIDQ3MzA2LCA0NzMxNCwgNDczMjIsIDQ3MzI4LCA0NzMzMywgNDczMzgsIDQ3MzQzLCA0NzM0NiwgCi0gICAgNDczNTAsIDQ3MzU0LCA0NzM1OCwgNDczNjIsIDQ3MzY2LCA0NzM3MCwgNDczNzcsIDQ3Mzg0LCA0NzM5MiwgNDc0MDAsIAotICAgIDQ3NDA1LCA0NzQxMCwgNDc0MTcsIDQ3NDI0LCA0NzQzMSwgNDc0MzgsIDQ3NDQxLCA0NzQ0NCwgNDc0NDksIDQ3NDUxLCAKLSAgICA0NzQ1NSwgNDc0NjAsIDQ3NDYyLCA0NzQ2NCwgNDc0NjYsIDQ3NDY4LCA0NzQ3MywgNDc0NzYsIDQ3NDc4LCA0NzQ4MywgCi0gICAgNDc0OTAsIDQ3NDk3LCA0NzUwMCwgNDc1MDQsIDQ3NTA5LCA0NzUxNCwgNDc1MjIsIDQ3NTI4LCA0NzUzNCwgNDc1NDYsIAotICAgIDQ3NTUzLCA0NzU2MCwgNDc1NjUsIDQ3NTcwLCA0NzU3NiwgNDc1NzksIDQ3NTgyLCA0NzU4NywgNDc1ODksIDQ3NTkzLCAKLSAgICA0NzU5NSwgNDc1OTcsIDQ3NTk5LCA0NzYwMSwgNDc2MDMsIDQ3NjA1LCA0NzYxMCwgNDc2MTIsIDQ3NjE0LCA0NzYxNiwgCi0gICAgNDc2MTgsIDQ3NjIyLCA0NzYyNCwgNDc2MjcsIDQ3NjMyLCA0NzYzNywgNDc2NDIsIDQ3NjQ3LCA0NzY1MywgNDc2NTksIAotICAgIDQ3NjYxLCA0NzY2NCwgNDc2NzEsIDQ3Njc4LCA0NzY4NSwgNDc2OTIsIDQ3Njk2LCA0NzcwMCwgNDc3MDIsIDQ3NzA0LCAKLSAgICA0NzcwOCwgNDc3MTQsIDQ3NzE5LCA0NzcyMSwgNDc3MjUsIDQ3NzM0LCA0Nzc0MiwgNDc3NTAsIDQ3NzU2LCA0Nzc2MiwgCi0gICAgNDc3NjcsIDQ3NzczLCA0Nzc3OCwgNDc3ODEsIDQ3Nzk1LCA0Nzc5OCwgNDc4MDMsIDQ3ODA4LCA0NzgxNCwgNDc4MjQsIAotICAgIDQ3ODI2LCA0NzgzMiwgNDc4MzgsIDQ3ODQyLCA0Nzg0OSwgNDc4NTMsIDQ3ODU1LCA0Nzg1NywgNDc4NjEsIDQ3ODY3LCAKLSAgICA0Nzg3MiwgNDc4NzgsIDQ3ODgwLCA0Nzg4NiwgNDc4ODgsIDQ3ODk0LCA0Nzg5NiwgNDc4OTgsIDQ3OTAzLCA0NzkwNSwgCi0gICAgNDc5MDksIDQ3OTE0LCA0NzkxNiwgNDc5MjEsIDQ3OTI2LCA0NzkzMCwgNDc5MzcsIDAsIDQ3OTQ3LCA0Nzk1MywgNDc5NTYsIAotICAgIDQ3OTYyLCA0Nzk2NSwgNDc5NzAsIDQ3OTc1LCA0Nzk3OSwgNDc5ODEsIDQ3OTgzLCA0Nzk4NywgNDc5OTEsIDQ3OTk1LCAKLSAgICA0Nzk5OSwgNDgwMDQsIDQ4MDA2LCA0ODAxMSwgNDgwMTQsIDQ4MDE3LCA0ODAyMCwgNDgwMjQsIDQ4MDI4LCA0ODAzMywgCi0gICAgNDgwMzcsIDQ4MDQyLCA0ODA0NywgNDgwNTEsIDQ4MDU2LCA0ODA2MiwgNDgwNjUsIDQ4MDcxLCA0ODA3NiwgNDgwODAsIAotICAgIDQ4MDg1LCA0ODA5MSwgNDgwOTcsIDQ4MTA0LCA0ODExMCwgNDgxMTcsIDQ4MTI0LCA0ODEyNiwgNDgxMzMsIDQ4MTM3LCAKLSAgICA0ODE0MywgNDgxNDksIDQ4MTU0LCA0ODE2MCwgNDgxNjQsIDQ4MTY5LCA0ODE3MiwgNDgxNzcsIDQ4MTgzLCA0ODE5MCwgCi0gICAgNDgxOTgsIDQ4MjA1LCA0ODIxNCwgNDgyMjQsIDQ4MjMxLCA0ODIzNywgNDgyNDEsIDQ4MjQ4LCA0ODI1MywgNDgyNjIsIAotICAgIDQ4MjY1LCA0ODI2OCwgNDgyNzcsIDQ4Mjg3LCA0ODI5NCwgNDgyOTYsIDQ4MzAyLCA0ODMwNywgNDgzMDksIDQ4MzEyLCAKLSAgICA0ODMxNiwgNDgzMjQsIDQ4MzMzLCA0ODMzNiwgNDgzNDEsIDQ4MzQ2LCA0ODM1NCwgNDgzNjIsIDQ4MzcwLCA0ODM3OCwgCi0gICAgNDgzODQsIDQ4MzkwLCA0ODM5NiwgNDg0MDQsIDQ4NDA5LCA0ODQxMiwgNDg0MTYsIDQ4NDE5LCA0ODQzMSwgNDg0NDEsIAotICAgIDQ4NDUyLCA0ODQ2MSwgNDg0NzIsIDQ4NDgyLCA0ODQ5MSwgNDg0OTcsIDQ4NTA1LCA0ODUwOSwgNDg1MTcsIDQ4NTIxLCAKLSAgICA0ODUyOSwgNDg1MzYsIDQ4NTQzLCA0ODU1MiwgNDg1NjEsIDQ4NTcxLCA0ODU4MSwgNDg1OTEsIDQ4NjAxLCA0ODYxMCwgCi0gICAgNDg2MTksIDQ4NjI5LCA0ODYzOSwgNDg2NDgsIDQ4NjU3LCA0ODY2MywgNDg2NjksIDQ4Njc1LCA0ODY4MSwgNDg2ODcsIAotICAgIDQ4NjkzLCA0ODY5OSwgNDg3MDUsIDQ4NzExLCA0ODcxOCwgNDg3MjQsIDQ4NzMwLCA0ODczNiwgNDg3NDIsIDQ4NzQ4LCAKLSAgICA0ODc1NCwgNDg3NjAsIDQ4NzY2LCA0ODc3MiwgNDg3NzksIDQ4Nzg2LCA0ODc5MywgNDg4MDAsIDQ4ODA3LCA0ODgxNCwgCi0gICAgNDg4MjEsIDQ4ODI4LCA0ODgzNSwgNDg4NDIsIDQ4ODUwLCA0ODg1NSwgNDg4NTgsIDQ4ODYyLCA0ODg2NiwgNDg4NzIsIAotICAgIDQ4ODc1LCA0ODg4MSwgNDg4ODcsIDQ4ODkyLCA0ODg5NiwgNDg5MDEsIDQ4OTA3LCA0ODkxNCwgNDg5MTcsIDQ4OTI0LCAKLSAgICA0ODkzMSwgNDg5MzUsIDQ4OTQ0LCA0ODk1MywgNDg5NTgsIDQ4OTY0LCA0ODk2OSwgNDg5NzQsIDQ4OTgxLCA0ODk4OCwgCi0gICAgNDg5OTYsIDQ5MDA0LCA0OTAxMywgNDkwMTcsIDQ5MDI2LCA0OTAzMSwgNDkwMzUsIDQ5MDQyLCA0OTA0NiwgNDkwNTMsIAotICAgIDQ5MDYxLCA0OTA2NiwgNDkwNzQsIDQ5MDc4LCA0OTA4MywgNDkwODcsIDQ5MDkyLCA0OTA5NiwgNDkxMDEsIDQ5MTA2LCAKLSAgICA0OTExNSwgNDkxMTcsIDQ5MTIwLCA0OTEyMywgNDkxMzAsIDQ5MTM3LCA0OTE0MiwgNDkxNTAsIDQ5MTU2LCA0OTE2MiwgCi0gICAgNDkxNjcsIDQ5MTcwLCA0OTE3NSwgNDkxODAsIDQ5MTg1LCA0OTE5MywgNDkxOTcsIDQ5MjA0LCA0OTIxMiwgNDkyMjAsIAotICAgIDQ5MjI1LCA0OTIzMCwgNDkyMzYsIDQ5MjQxLCA0OTI0NiwgNDkyNTIsIDQ5MjU3LCA0OTI2MCwgNDkyNjQsIDQ5MjY4LCAKLSAgICA0OTI3NSwgNDkyODQsIDQ5Mjg5LCA0OTI5OCwgNDkzMDcsIDQ5MzEzLCA0OTMxOSwgNDkzMjQsIDQ5MzI5LCA0OTMzNCwgCi0gICAgNDkzMzksIDQ5MzQ1LCA0OTM1MSwgNDkzNTksIDQ5MzY3LCA0OTM3MywgNDkzNzksIDQ5Mzg0LCA0OTM4OSwgNDkzOTYsIAotICAgIDQ5NDAzLCA0OTQwOSwgNDk0MTIsIDQ5NDE1LCA0OTQxOSwgNDk0MjMsIDQ5NDI3LCA0OTQzMiwgNDk0MzgsIDQ5NDQ0LCAKLSAgICA0OTQ1MSwgNDk0NTgsIDQ5NDYzLCA0OTQ2NywgNDk0NzEsIDQ5NDc1LCA0OTQ3OSwgNDk0ODMsIDQ5NDg3LCA0OTQ5MSwgCi0gICAgNDk0OTUsIDQ5NDk5LCA0OTUwMywgNDk1MDcsIDQ5NTExLCA0OTUxNSwgNDk1MTksIDQ5NTIzLCA0OTUyNywgNDk1MzEsIAotICAgIDQ5NTM1LCA0OTUzOSwgNDk1NDMsIDQ5NTQ3LCA0OTU1MSwgNDk1NTUsIDQ5NTU5LCA0OTU2MywgNDk1NjcsIDQ5NTcxLCAKLSAgICA0OTU3NSwgNDk1NzksIDQ5NTgzLCA0OTU4NywgNDk1OTEsIDQ5NTk1LCA0OTU5OSwgNDk2MDMsIDQ5NjA3LCA0OTYxMSwgCi0gICAgNDk2MTUsIDQ5NjE5LCA0OTYyMywgNDk2MjcsIDQ5NjMxLCA0OTYzNSwgNDk2MzksIDQ5NjQzLCA0OTY0NywgNDk2NTEsIAotICAgIDQ5NjU1LCA0OTY1OSwgNDk2NjMsIDQ5NjY3LCA0OTY3MSwgNDk2NzUsIDQ5Njc5LCA0OTY4MywgNDk2ODcsIDQ5NjkxLCAKLSAgICA0OTY5NSwgNDk2OTksIDQ5NzAzLCA0OTcwNywgNDk3MTEsIDQ5NzE1LCA0OTcxOSwgNDk3MjMsIDQ5NzI3LCA0OTczMSwgCi0gICAgNDk3MzUsIDQ5NzM5LCA0OTc0MywgNDk3NDcsIDQ5NzUxLCA0OTc1NSwgNDk3NTksIDQ5NzYzLCA0OTc2NywgNDk3NzEsIAotICAgIDQ5Nzc1LCA0OTc3OSwgNDk3ODMsIDQ5Nzg3LCA0OTc5MSwgNDk3OTUsIDQ5Nzk5LCA0OTgwMywgNDk4MDcsIDQ5ODExLCAKLSAgICA0OTgxNSwgNDk4MTksIDQ5ODIzLCA0OTgyNywgNDk4MzEsIDQ5ODM1LCA0OTgzOSwgNDk4NDMsIDQ5ODQ3LCA0OTg1MSwgCi0gICAgNDk4NTUsIDQ5ODU5LCA0OTg2MywgNDk4NjcsIDQ5ODcxLCA0OTg3NSwgNDk4NzksIDQ5ODgzLCA0OTg4NywgNDk4OTEsIAotICAgIDQ5ODk1LCA0OTg5OSwgNDk5MDMsIDQ5OTA3LCA0OTkxMSwgNDk5MTUsIDQ5OTE5LCA0OTkyMywgNDk5MjcsIDQ5OTMxLCAKLSAgICA0OTkzNSwgNDk5MzksIDQ5OTQzLCA0OTk0NywgNDk5NTEsIDQ5OTU1LCA0OTk1OSwgNDk5NjMsIDQ5OTY3LCA0OTk3MSwgCi0gICAgNDk5NzUsIDQ5OTc5LCA0OTk4MywgNDk5ODcsIDQ5OTkxLCA0OTk5NSwgNDk5OTksIDUwMDAzLCA1MDAwNywgNTAwMTEsIAotICAgIDUwMDE1LCA1MDAxOSwgNTAwMjMsIDUwMDI3LCA1MDAzMSwgNTAwMzUsIDUwMDM5LCA1MDA0MywgNTAwNDcsIDUwMDUxLCAKLSAgICA1MDA1NSwgNTAwNTksIDUwMDYzLCA1MDA2NywgNTAwNzEsIDUwMDc1LCA1MDA3OSwgNTAwODMsIDUwMDg3LCA1MDA5MSwgCi0gICAgNTAwOTUsIDUwMDk5LCA1MDEwMywgNTAxMDcsIDUwMTExLCA1MDExNSwgNTAxMTksIDUwMTIzLCA1MDEyNywgNTAxMzEsIAotICAgIDUwMTM1LCA1MDEzOSwgNTAxNDMsIDUwMTQ3LCA1MDE1MSwgNTAxNTUsIDUwMTU5LCA1MDE2MywgNTAxNjcsIDUwMTcxLCAKLSAgICA1MDE3NSwgNTAxNzksIDUwMTgzLCA1MDE4NywgNTAxOTEsIDUwMTk1LCA1MDE5OSwgNTAyMDMsIDUwMjA3LCA1MDIxMSwgCi0gICAgNTAyMTUsIDUwMjE5LCA1MDIyMywgNTAyMjcsIDUwMjMxLCA1MDIzNSwgNTAyMzksIDUwMjQzLCA1MDI0NywgNTAyNTEsIAotICAgIDUwMjU1LCA1MDI1OSwgNTAyNjMsIDUwMjY3LCA1MDI3MSwgNTAyNzUsIDUwMjc5LCA1MDI4MywgNTAyODcsIDUwMjkxLCAKLSAgICA1MDI5NSwgNTAyOTksIDUwMzAzLCA1MDMwNywgNTAzMTEsIDUwMzE1LCA1MDMxOSwgNTAzMjMsIDUwMzI3LCA1MDMzMSwgCi0gICAgNTAzMzUsIDUwMzM5LCA1MDM0MywgNTAzNDcsIDUwMzUxLCA1MDM1NSwgNTAzNTksIDUwMzYzLCA1MDM2NywgNTAzNzEsIAotICAgIDUwMzc1LCA1MDM3OSwgNTAzODMsIDUwMzg3LCA1MDM5MSwgNTAzOTUsIDUwMzk5LCA1MDQwMywgNTA0MDcsIDUwNDExLCAKLSAgICA1MDQxNSwgNTA0MTksIDUwNDIzLCA1MDQyNywgNTA0MzEsIDUwNDM1LCA1MDQzOSwgNTA0NDMsIDUwNDQ3LCA1MDQ1MSwgCi0gICAgNTA0NTUsIDUwNDU5LCA1MDQ2MywgNTA0NjcsIDUwNDcxLCA1MDQ3NSwgNTA0NzksIDUwNDgzLCA1MDQ4NywgNTA0OTQsIAotICAgIDUwNTAyLCA1MDUwOCwgNTA1MTQsIDUwNTIxLCA1MDUyOCwgNTA1MzQsIDUwNTQwLCA1MDU0NiwgNTA1NTIsIDUwNTU3LCAKLSAgICA1MDU2MiwgNTA1NjcsIDUwNTcyLCA1MDU3OCwgNTA1ODQsIDUwNTkyLCA1MDU5OSwgNTA2MDUsIDUwNjExLCA1MDYxOSwgCi0gICAgNTA2MjgsIDUwNjM1LCA1MDY0NSwgNTA2NTYsIDUwNjU5LCA1MDY2MiwgNTA2NjYsIDUwNjcwLCA1MDY3NywgNTA2ODQsIAotICAgIDUwNjk1LCA1MDcwNiwgNTA3MTYsIDUwNzI2LCA1MDczMywgNTA3NDAsIDUwNzQ3LCA1MDc1NCwgNTA3NjUsIDUwNzc2LCAKLSAgICA1MDc4NywgNTA3OTgsIDUwODA4LCA1MDgxOCwgNTA4MzAsIDUwODQyLCA1MDg1MywgNTA4NjQsIDUwODc2LCA1MDg4OCwgCi0gICAgNTA4OTcsIDUwOTA3LCA1MDkxNywgNTA5MjgsIDUwOTM5LCA1MDk0NiwgNTA5NTMsIDUwOTYwLCA1MDk2NywgNTA5NzcsIAotICAgIDUwOTg3LCA1MDk5NSwgNTEwMDMsIDUxMDEwLCA1MTAxNywgNTEwMjQsIDUxMDMxLCA1MTAzOCwgNTEwNDMsIDUxMDQ4LCAKLSAgICA1MTA1NCwgNTEwNjIsIDUxMDcyLCA1MTA4MiwgNTEwOTIsIDUxMTAyLCA1MTExMiwgNTExMjIsIDUxMTMyLCA1MTE0MiwgCi0gICAgNTExNTIsIDUxMTYyLCA1MTE3MiwgNTExODMsIDUxMTk0LCA1MTIwNCwgNTEyMTQsIDUxMjI1LCA1MTIzNiwgNTEyNDYsIAotICAgIDUxMjU2LCA1MTI2NywgNTEyNzgsIDUxMjg4LCA1MTI5OCwgNTEzMDksIDUxMzIwLCA1MTMzNiwgNTEzNTUsIDUxMzcxLCAKLSAgICA1MTM5MCwgNTE0MDYsIDUxNDIyLCA1MTQzOCwgNTE0NTQsIDUxNDY1LCA1MTQ3NywgNTE0ODgsIDUxNTAwLCA1MTUxOSwgCi0gICAgNTE1MzgsIDUxNTQ2LCA1MTU1MiwgNTE1NTksIDUxNTY2LCA1MTU3MywgNTE1ODAsIDUxNTg1LCA1MTU5MSwgNTE1OTYsIAotICAgIDUxNjAxLCA1MTYwNywgNTE2MTIsIDUxNjE3LCA1MTYyMiwgNTE2MjcsIDUxNjMyLCA1MTYzOSwgNTE2NDQsIDUxNjUxLCAKLSAgICA1MTY1NiwgNTE2NjEsIDUxNjY1LCA1MTY2OSwgNTE2NzYsIDUxNjgzLCA1MTY5MCwgNTE2OTcsIDUxNzA0LCA1MTcxMSwgCi0gICAgNTE3MjQsIDUxNzM3LCA1MTc1MCwgNTE3NjMsIDUxNzcxLCA1MTc3OSwgNTE3ODUsIDUxNzkxLCA1MTc5OCwgNTE4MDUsIAotICAgIDUxODEyLCA1MTgxOSwgNTE4MjMsIDUxODI4LCA1MTgzNiwgNTE4NDQsIDUxODUyLCA1MTg1OSwgNTE4NjMsIDUxODcxLCAKLSAgICA1MTg3OSwgNTE4ODMsIDUxODg3LCA1MTg5MiwgNTE4OTksIDUxOTA3LCA1MTkxNSwgNTE5MzQsIDUxOTUzLCA1MTk3MiwgCi0gICAgNTE5OTEsIDUyMDEwLCA1MjAyOSwgNTIwNDgsIDUyMDY3LCA1MjA3MywgNTIwODAsIDUyMDg5LCA1MjA5NywgNTIxMDUsIAotICAgIDUyMTEwLCA1MjExMywgNTIxMTYsIDUyMTIxLCA1MjEyNCwgNTIxNDMsIDUyMTUwLCA1MjE1NiwgNTIxNjIsIDUyMTY2LCAKLSAgICA1MjE2OSwgNTIxNzIsIDUyMTc1LCA1MjE4NywgNTIyMDAsIDUyMjA3LCA1MjIxNCwgNTIyMTcsIDUyMjIxLCA1MjIyNCwgCi0gICAgNTIyMjksIDUyMjM0LCA1MjIzOSwgNTIyNDUsIDUyMjU0LCA1MjI2MSwgNTIyNjgsIDUyMjc2LCA1MjI4MywgNTIyOTAsIAotICAgIDUyMjkzLCA1MjI5OSwgNTIzMDUsIDUyMzA4LCA1MjMxMSwgNTIzMTYsIDUyMzIxLCA1MjMyNywgNTIzMzMsIDUyMzM3LCAKLSAgICA1MjM0MiwgNTIzNDksIDUyMzUzLCA1MjM1OSwgNTIzNjMsIDUyMzY3LCA1MjM3NSwgNTIzODcsIDUyMzk2LCA1MjQwMCwgCi0gICAgNTI0MDIsIDUyNDExLCA1MjQyMCwgNTI0MjYsIDUyNDI5LCA1MjQzNSwgNTI0NDEsIDUyNDQ2LCA1MjQ1MSwgNTI0NTYsIAotICAgIDUyNDYxLCA1MjQ2NiwgNTI0NzEsIDUyNDczLCA1MjQ3OSwgNTI0ODQsIDUyNDkxLCA1MjQ5NSwgNTI1MDEsIDUyNTA0LCAKLSAgICA1MjUwOCwgNTI1MTUsIDUyNTIyLCA1MjUyNCwgNTI1MjYsIDUyNTMyLCA1MjUzOCwgNTI1NDQsIDUyNTUzLCA1MjU2MiwgCi0gICAgNTI1NjksIDUyNTc2LCA1MjU4MiwgNTI1ODgsIDUyNTkzLCA1MjU5OCwgNTI2MDMsIDUyNjA5LCA1MjYxNSwgNTI2MjAsIAotICAgIDUyNjI3LCA1MjYzMSwgNTI2MzUsIDUyNjQ4LCA1MjY2MSwgNTI2NzMsIDUyNjgyLCA1MjY4OCwgNTI2OTUsIDUyNzAwLCAKLSAgICA1MjcwNSwgNTI3MTAsIDUyNzE1LCA1MjcyMCwgNTI3MjIsIDUyNzI5LCA1MjczNiwgNTI3NDMsIDUyNzUwLCA1Mjc1NywgCi0gICAgNTI3NjUsIDUyNzcxLCA1Mjc3NiwgNTI3ODIsIDUyNzg4LCA1Mjc5NCwgNTI4MDEsIDUyODA3LCA1MjgxNSwgNTI4MjMsIAotICAgIDUyODMxLCA1MjgzOSwgNTI4NDYsIDUyODUyLCA1Mjg1OCwgNTI4NjcsIDUyODcxLCA1Mjg4MCwgNTI4ODksIDUyODk4LCAKLSAgICA1MjkwNiwgNTI5MTAsIDUyOTE2LCA1MjkyMywgNTI5MzAsIDUyOTM0LCA1Mjk0MCwgNTI5NDcsIDUyOTUyLCA1Mjk1NywgCi0gICAgNTI5NjMsIDUyOTY4LCA1Mjk3MywgNTI5ODAsIDUyOTg3LCA1Mjk5MiwgNTI5OTcsIDUzMDA1LCA1MzAxMywgNTMwMjMsIAotICAgIDUzMDMzLCA1MzA0MCwgNTMwNDcsIDUzMDUxLCA1MzA1NSwgNTMwNjcsIDUzMDczLCA1MzA3OSwgNTMwODQsIDUzMDg5LCAKLSAgICA1MzA5NiwgNTMxMDMsIDUzMTA5LCA1MzExNSwgNTMxMjQsIDUzMTMyLCA1MzE0MCwgNTMxNDcsIDUzMTU0LCA1MzE2MSwgCi0gICAgNTMxNjcsIDUzMTc0LCA1MzE4MCwgNTMxODcsIDUzMTk0LCA1MzIwMSwgNTMyMDgsIDUzMjE0LCA1MzIxOSwgNTMyMjgsIAotICAgIDUzMjM4LCA1MzI0NSwgNTMyNTQsIDUzMjYwLCA1MzI2NSwgNTMyNzAsIDUzMjgwLCA1MzI4NiwgNTMyOTIsIDUzMjk4LCAKLSAgICA1MzMwNiwgNTMzMTEsIDUzMzE4LCA1MzMyNSwgNTMzMzYsIDUzMzQzLCA1MzM1MCwgNTMzNTcsIDUzMzY0LCA1MzM3MSwgCi0gICAgNTMzNzgsIDUzMzg1LCA1MzM5NywgNTM0MDksIDUzNDIwLCA1MzQzMSwgNTM0NDQsIDUzNDU3LCA1MzQ2MiwgNTM0NjcsIAotICAgIDUzNDc2LCA1MzQ4NSwgNTM0OTIsIDUzNDk5LCA1MzUwOCwgNTM1MTcsIDUzNTI1LCA1MzUzMywgNTM1NDEsIDUzNTQ5LCAKLSAgICA1MzU1OSwgNTM1NjksIDUzNTgzLCA1MzU5NywgNTM2MDUsIDUzNjEzLCA1MzYyNSwgNTM2MzcsIDUzNjQ1LCA1MzY1MywgCi0gICAgNTM2NjMsIDUzNjczLCA1MzY3OCwgNTM2ODMsIDUzNjkyLCA1MzcwMSwgNTM3MDYsIDUzNzExLCA1MzcxOSwgNTM3MjUsIAotICAgIDUzNzMxLCA1MzczOSwgNTM3NDcsIDUzNzYwLCA1Mzc3MywgNTM3NzcsIDUzNzgxLCA1Mzc4OCwgNTM3OTUsIDUzODAyLCAKLSAgICA1MzgxMCwgNTM4MTgsIDUzODI3LCA1MzgzNiwgNTM4NDIsIDUzODQ4LCA1Mzg1NSwgNTM4NjIsIDUzODY5LCA1Mzg3NiwgCi0gICAgNTM4ODUsIDUzODk0LCA1Mzg5NywgNTM5MDAsIDUzOTA1LCA1MzkxMCwgNTM5MTYsIDUzOTIyLCA1MzkyOSwgNTM5MzYsIAotICAgIDUzOTQ2LCA1Mzk1NiwgNTM5NjMsIDUzOTcwLCA1Mzk3OCwgNTM5ODYsIDUzOTk0LCA1NDAwMiwgNTQwMTAsIDU0MDE4LCAKLSAgICA1NDAyNCwgNTQwMzAsIDU0MDM0LCA1NDAzOCwgNTQwNDUsIDU0MDUyLCA1NDA1NywgNTQwNjIsIDU0MDY3LCA1NDA3MiwgCi0gICAgNTQwNzgsIDU0MDkyLCA1NDA5OSwgNTQxMDYsIDU0MTEwLCA1NDExMiwgNTQxMTQsIDU0MTE5LCA1NDEyNCwgNTQxMjksIAotICAgIDU0MTM0LCA1NDE0MiwgNTQxNDksIDU0MTU2LCA1NDE2NCwgNTQxNzYsIDU0MTg0LCA1NDE5MiwgNTQyMDMsIDU0MjA3LCAKLSAgICA1NDIxMSwgNTQyMTcsIDU0MjI1LCA1NDIzOCwgNTQyNDUsIDU0MjUyLCA1NDI1OSwgNTQyNjQsIDU0MjcxLCA1NDI4MCwgCi0gICAgNTQyODgsIDU0Mjk0LCA1NDMwMCwgNTQzMDYsIDU0MzE1LCA1NDMyNCwgNTQzMzIsIDU0MzQxLCA1NDM0NiwgNTQzNDksIAotICAgIDU0MzU0LCA1NDM2MCwgNTQzNjYsIDU0MzcyLCA1NDM3OCwgNTQzODIsIDU0Mzg1LCA1NDM4OSwgNTQzOTMsIDU0Mzk5LCAKLSAgICA1NDQwNSwgNTQ0MTEsIDU0NDE3LCA1NDQyMSwgNTQ0MjUsIDU0NDMyLCA1NDQzOSwgNTQ0NDYsIDU0NDUzLCA1NDQ2MCwgCi0gICAgNTQ0NjcsIDU0NDc3LCA1NDQ4NywgNTQ0OTQsIDU0NTAxLCA1NDUwOSwgNTQ1MTcsIDU0NTIxLCA1NDUyNiwgNTQ1MzEsIAotICAgIDU0NTM3LCA1NDU0MywgNTQ1NDYsIDU0NTQ5LCA1NDU1MiwgNTQ1NTUsIDU0NTU5LCA1NDU2NCwgNTQ1NjksIDU0NTc0LCAKLSAgICA1NDU3OSwgNTQ1ODQsIDU0NTg4LCA1NDU5MiwgNTQ1OTYsIDU0NjAwLCA1NDYwNCwgNTQ2MDgsIDU0NjEyLCA1NDYxOCwgCi0gICAgNTQ2MjIsIDU0NjI4LCA1NDYzMywgNTQ2NDAsIDU0NjQ4LCA1NDY1NSwgNTQ2NjMsIDU0NjcwLCA1NDY3OCwgNTQ2ODcsIAotICAgIDU0Njk0LCA1NDcwNCwgNTQ3MTUsIDU0NzIxLCA1NDczMCwgNTQ3MzYsIDU0NzQ1LCA1NDc1NCwgNTQ3NjAsIDU0NzY2LCAKLSAgICA1NDc3MCwgNTQ3NzQsIDU0NzgzLCA1NDc5MiwgNTQ3OTksIDU0ODA2LCA1NDgxNSwgMCwgMCwgMCwgNTQ4MjQsIDU0ODI5LCAKLSAgICA1NDgzMywgNTQ4MzcsIDU0ODQyLCA1NDg0NywgNTQ4NTIsIDU0ODYwLCA1NDg2OCwgNTQ4NzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjU4LCAKKyAgICA3ODY2NSwgNzg2NzIsIDc4Njc5LCA3ODY4NiwgNzg2OTIsIDc4Njk4LCA3ODcwNSwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgCisgICAgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIDc4NzYxLCA3ODc2NywgNzg3NzQsIDc4NzgxLCA3ODc4OCwgNzg3OTUsIAorICAgIDc4ODAyLCA3ODgwOSwgNzg4MTYsIDc4ODIzLCA3ODgzMCwgNzg4MzcsIDc4ODQ0LCA3ODg1MywgNzg4NjIsIDc4ODcxLCAKKyAgICA3ODg4MCwgNzg4ODksIDc4ODk4LCA3ODkwNywgNzg5MTYsIDc4OTI0LCA3ODkzMiwgNzg5NDAsIDc4OTQ4LCA3ODk1NiwgCisgICAgNzg5NjQsIDc4OTcyLCA3ODk4MCwgNzg5ODYsIDc4OTk0LCAwLCAwLCA3OTAwMiwgNzkwMDksIDc5MDE1LCA3OTAyMSwgCisgICAgNzkwMjcsIDc5MDMzLCA3OTAzOSwgNzkwNDUsIDc5MDUxLCA3OTA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4NzUsIDU0ODgwLCA1NDg4NSwgCi0gICAgNTQ4OTAsIDU0ODk1LCA1NDkwMCwgNTQ5MDUsIDU0OTEwLCA1NDkxNSwgNTQ5MjAsIDU0OTI1LCA1NDkzMSwgNTQ5MzUsIAotICAgIDU0OTQwLCA1NDk0NSwgNTQ5NTAsIDU0OTU1LCA1NDk2MCwgNTQ5NjUsIDU0OTcwLCA1NDk3NSwgNTQ5ODAsIDU0OTg1LCAKLSAgICA1NDk5MCwgNTQ5OTUsIDU1MDAwLCA1NTAwNSwgNTUwMTAsIDU1MDE1LCA1NTAyMCwgNTUwMjUsIDU1MDMwLCA1NTAzNSwgCi0gICAgNTUwNDAsIDU1MDQ1LCA1NTA1MSwgNTUwNTYsIDU1MDYyLCA1NTA3MSwgNTUwNzYsIDU1MDg0LCA1NTA5MSwgNTUxMDAsIAotICAgIDU1MTA1LCA1NTExMCwgNTUxMTUsIDU1MTIxLCAwLCA1NTEyOCwgNTUxMzMsIDU1MTM4LCA1NTE0MywgNTUxNDgsIDU1MTUzLCAKLSAgICA1NTE1OCwgNTUxNjMsIDU1MTY4LCA1NTE3MywgNTUxNzgsIDU1MTg0LCA1NTE4OCwgNTUxOTMsIDU1MTk4LCA1NTIwMywgCi0gICAgNTUyMDgsIDU1MjEzLCA1NTIxOCwgNTUyMjMsIDU1MjI4LCA1NTIzMywgNTUyMzgsIDU1MjQzLCA1NTI0OCwgNTUyNTMsIAotICAgIDU1MjU4LCA1NTI2MywgNTUyNjgsIDU1MjczLCA1NTI3OCwgNTUyODMsIDU1Mjg4LCA1NTI5MywgNTUyOTgsIDU1MzA0LCAKLSAgICA1NTMwOSwgNTUzMTUsIDU1MzI0LCA1NTMyOSwgNTUzMzcsIDU1MzQ0LCA1NTM1MywgNTUzNTgsIDU1MzYzLCA1NTM2OCwgCi0gICAgNTUzNzQsIDAsIDU1MzgxLCA1NTM4OSwgNTUzOTcsIDU1NDA2LCA1NTQxMywgNTU0MjEsIDU1NDI3LCA1NTQzNiwgNTU0NDQsIAotICAgIDU1NDUyLCA1NTQ2MCwgNTU0NjgsIDU1NDc2LCA1NTQ4NCwgNTU0ODksIDU1NDk2LCA1NTUwMiwgNTU1MDksIDU1NTE3LCAKLSAgICA1NTUyNCwgNTU1MzEsIDU1NTM5LCA1NTU0NSwgNTU1NTEsIDU1NTU4LCA1NTU2NSwgNTU1NzUsIDU1NTg1LCA1NTU5MiwgCi0gICAgNTU1OTksIDU1NjA0LCA1NTYxNCwgNTU2MjQsIDU1NjI5LCA1NTYzNCwgNTU2MzksIDU1NjQ0LCA1NTY0OSwgNTU2NTQsIAotICAgIDU1NjU5LCA1NTY2NCwgNTU2NjksIDU1Njc0LCA1NTY3OSwgNTU2ODQsIDU1Njg5LCA1NTY5NCwgNTU2OTksIDU1NzA0LCAKLSAgICA1NTcwOSwgNTU3MTQsIDU1NzE5LCA1NTcyNCwgNTU3MjksIDU1NzM0LCA1NTczOSwgNTU3NDQsIDU1NzQ5LCA1NTc1NCwgCi0gICAgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc4LCA1NTc4MiwgNTU3ODcsIDU1NzkyLCA1NTc5NywgNTU4MDIsIAotICAgIDU1ODA3LCA1NTgxMiwgNTU4MTcsIDU1ODIyLCA1NTgyNywgNTU4MzIsIDU1ODM3LCA1NTg0MiwgNTU4NDcsIDU1ODUyLCAKLSAgICA1NTg1NywgNTU4NjIsIDU1ODY3LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgCi0gICAgNTU5MjEsIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ5LCA1NTk1NiwgNTU5NjMsIDU1OTcwLCA1NTk3NSwgNTU5ODAsIAotICAgIDU1OTg3LCA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDMsIDU2MDUwLCAKLSAgICA1NjA1NywgNTYwNjQsIDU2MDcwLCA1NjA3NiwgNTYwODIsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgCi0gICAgNTYxMjMsIDU2MTMwLCA1NjEzNywgNTYxNDQsIDU2MTUxLCA1NjE1OCwgNTYxNjYsIDU2MTc0LCA1NjE4MiwgNTYxOTAsIAotICAgIDU2MTk4LCA1NjIwNiwgNTYyMTQsIDU2MjIyLCA1NjIyNiwgNTYyMzIsIDU2MjM4LCA1NjI0MiwgNTYyNDgsIDU2MjU0LCAKLSAgICA1NjI2MCwgNTYyNjcsIDU2Mjc0LCA1NjI4MSwgNTYyODgsIDU2MjkzLCA1NjI5OSwgNTYzMDUsIDU2MzEyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NjMxOSwgNTYzMjcsIDU2MzM2LCA1NjM0NSwgNTYzNTMsIDU2MzU5LCA1NjM2NCwgNTYzNjksIDU2Mzc0LCAKLSAgICA1NjM3OSwgNTYzODQsIDU2Mzg5LCA1NjM5NCwgNTYzOTksIDU2NDA0LCA1NjQwOSwgNTY0MTQsIDU2NDE5LCA1NjQyNCwgCi0gICAgNTY0MjksIDU2NDM0LCA1NjQzOSwgNTY0NDQsIDU2NDQ5LCA1NjQ1NCwgNTY0NTksIDU2NDY0LCA1NjQ2OSwgNTY0NzQsIAotICAgIDU2NDc5LCA1NjQ4NCwgNTY0ODksIDU2NDk0LCA1NjQ5OSwgNTY1MDQsIDU2NTA5LCA1NjUxNCwgNTY1MTksIDU2NTI0LCAKLSAgICA1NjUyOSwgNTY1MzQsIDU2NTM5LCA1NjU0NCwgNTY1NDksIDU2NTU0LCAwLCA1NjU1OSwgMCwgMCwgMCwgMCwgMCwgNTY1NjQsIAotICAgIDAsIDAsIDU2NTY5LCA1NjU3MywgNTY1NzgsIDU2NTgzLCA1NjU4OCwgNTY1OTMsIDU2NjAyLCA1NjYwNywgNTY2MTIsIAotICAgIDU2NjE3LCA1NjYyMiwgNTY2MjcsIDU2NjMyLCA1NjYzNywgNTY2NDIsIDU2NjQ5LCA1NjY1NCwgNTY2NTksIDU2NjY4LCAKLSAgICA1NjY3NSwgNTY2ODAsIDU2Njg1LCA1NjY5MCwgNTY2OTcsIDU2NzAyLCA1NjcwOSwgNTY3MTQsIDU2NzE5LCA1NjcyNiwgCi0gICAgNTY3MzMsIDU2NzM4LCA1Njc0MywgNTY3NDgsIDU2NzU1LCA1Njc2MiwgNTY3NjcsIDU2NzcyLCA1Njc3NywgNTY3ODIsIAotICAgIDU2Nzg3LCA1Njc5NCwgNTY4MDEsIDU2ODA2LCA1NjgxMSwgNTY4MTYsIDU2ODIxLCA1NjgyNiwgNTY4MzEsIDU2ODM2LCAKLSAgICA1Njg0MSwgNTY4NDYsIDU2ODUxLCA1Njg1NiwgNTY4NjMsIDU2ODY4LCA1Njg3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTY4NzgsIDU2ODg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg5MCwgNTY4OTUsIAotICAgIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTExLCA1NjkxNSwgNTY5MTksIDU2OTIzLCA1NjkyNywgNTY5MzEsIDU2OTM1LCAKLSAgICA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgCi0gICAgNTY5ODEsIDU2OTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCA1NzAwMSwgCi0gICAgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgNTcwNDEsIAotICAgIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgNTcwNzcsIAotICAgIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIDU3MTE3LCAKLSAgICA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAwLCAKLSAgICA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTg5LCA1NzE5MywgCi0gICAgNTcxOTcsIDU3MjAxLCA1NzIwNSwgNTcyMDksIDAsIDU3MjEzLCA1NzIxOCwgNTcyMjMsIDU3MjI4LCA1NzIzMywgNTcyMzgsIAotICAgIDU3MjQzLCA1NzI0NywgNTcyNTIsIDU3MjU3LCA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCAKLSAgICA1NzI5MCwgNTcyOTUsIDU3MzAwLCA1NzMwNSwgNTczMTAsIDU3MzE1LCA1NzMyMCwgNTczMjQsIDU3MzI5LCA1NzMzNCwgCi0gICAgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTcsIDU3MzY0LCA1NzM3MSwgNTczODAsIDU3Mzg3LCA1NzM5NiwgNTc0MDAsIAotICAgIDU3NDA0LCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQzMCwgNTc0MzYsIDU3NDQwLCA1NzQ0NCwgNTc0NDgsIDU3NDU0LCAKLSAgICA1NzQ2MCwgNTc0NjQsIDU3NDY2LCA1NzQ3MCwgNTc0NzYsIDU3NDc4LCA1NzQ4MiwgNTc0ODYsIDU3NDkwLCA1NzQ5NiwgCi0gICAgNTc1MDEsIDU3NTA1LCA1NzUwOSwgNTc1MTQsIDU3NTIwLCA1NzUyNSwgNTc1MzAsIDU3NTM1LCA1NzU0MCwgNTc1NDcsIAotICAgIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgNTc1NzksIDU3NTg0LCA1NzU4OCwgNTc1OTIsIDU3NTk5LCAKLSAgICA1NzYwNiwgNTc2MTIsIDU3NjE2LCA1NzYyMSwgNTc2MjMsIDU3NjI3LCA1NzYzNSwgNTc2MzksIDU3NjQzLCA1NzY0NywgCi0gICAgNTc2NTEsIDU3NjU3LCA1NzY2MywgNTc2NjcsIDU3NjczLCA1NzY3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzkwNjMsIDc5MDY3LCA3OTA3MSwgNzkwNzUsIDc5MDc5LCA3OTA4MywgNzkwODcsIDc5MDkxLCAKKyAgICA3OTA5NSwgNzkwOTksIDc5MTAzLCA3OTEwNywgNzkxMTEsIDc5MTE1LCA3OTExOSwgNzkxMjMsIDc5MTI3LCA3OTEzMSwgCisgICAgNzkxMzUsIDc5MTM5LCA3OTE0MywgNzkxNDcsIDc5MTUxLCAwLCAwLCAwLCAwLCA3OTE1NSwgNzkxNTksIDc5MTYzLCAKKyAgICA3OTE2NywgNzkxNzEsIDc5MTc1LCA3OTE3OSwgNzkxODMsIDc5MTg3LCA3OTE5MSwgNzkxOTUsIDc5MTk5LCA3OTIwMywgCisgICAgNzkyMDcsIDc5MjExLCA3OTIxNSwgNzkyMTksIDc5MjIzLCA3OTIyNywgNzkyMzEsIDc5MjM1LCA3OTIzOSwgNzkyNDMsIAorICAgIDc5MjQ3LCA3OTI1MSwgNzkyNTUsIDc5MjU5LCA3OTI2MywgNzkyNjcsIDc5MjcxLCA3OTI3NSwgNzkyNzksIDc5MjgzLCAKKyAgICA3OTI4NywgNzkyOTEsIDc5Mjk1LCA3OTI5OSwgNzkzMDMsIDc5MzA3LCA3OTMxMSwgNzkzMTUsIDc5MzE5LCA3OTMyMywgCisgICAgNzkzMjcsIDc5MzMxLCA3OTMzNSwgNzkzMzksIDc5MzQzLCA3OTM0NywgMCwgMCwgMCwgMCwgNzkzNTEsIDc5MzU1LCAKKyAgICA3OTM1OSwgNzkzNjMsIDc5MzY3LCA3OTM3MSwgNzkzNzUsIDc5Mzc5LCA3OTM4MywgNzkzODcsIDc5MzkxLCA3OTM5NSwgCisgICAgNzkzOTksIDc5NDAzLCA3OTQwNywgNzk0MTEsIDc5NDE1LCA3OTQxOSwgNzk0MjMsIDc5NDI3LCA3OTQzMSwgNzk0MzUsIAorICAgIDc5NDM5LCA3OTQ0MywgNzk0NDcsIDc5NDUxLCA3OTQ1NSwgNzk0NTksIDc5NDYzLCA3OTQ2NywgNzk0NzEsIDc5NDc1LCAKKyAgICA3OTQ3OSwgNzk0ODMsIDc5NDg3LCA3OTQ5MSwgNzk0OTUsIDc5NDk5LCA3OTUwMywgNzk1MDcsIDc5NTExLCA3OTUxNSwgCisgICAgNzk1MTksIDc5NTIzLCA3OTUyNywgNzk1MzEsIDc5NTM1LCA3OTUzOSwgNzk1NDMsIDc5NTQ3LCA3OTU1MSwgNzk1NTUsIAorICAgIDc5NTU5LCA3OTU2MywgNzk1NjcsIDc5NTcxLCA3OTU3NSwgNzk1NzksIDc5NTgzLCA3OTU4NywgNzk1OTEsIDc5NTk1LCAKKyAgICA3OTU5OSwgNzk2MDMsIDc5NjA3LCA3OTYxMSwgNzk2MTUsIDc5NjE5LCA3OTYyMywgNzk2MjcsIDc5NjMxLCA3OTYzNSwgCisgICAgNzk2MzksIDc5NjQzLCA3OTY0NywgNzk2NTEsIDc5NjU1LCA3OTY1OSwgNzk2NjMsIDc5NjY3LCA3OTY3MSwgNzk2NzUsIAorICAgIDc5Njc5LCA3OTY4MywgNzk2ODcsIDc5NjkxLCA3OTY5NSwgNzk2OTksIDc5NzAzLCA3OTcwNywgNzk3MTEsIDc5NzE1LCAKKyAgICA3OTcxOSwgNzk3MjMsIDc5NzI3LCA3OTczMSwgNzk3MzUsIDc5NzM5LCA3OTc0MywgNzk3NDcsIDc5NzUxLCA3OTc1NSwgCisgICAgNzk3NTksIDc5NzYzLCA3OTc2NywgNzk3NzEsIDc5Nzc1LCA3OTc3OSwgNzk3ODMsIDc5Nzg3LCA3OTc5MSwgNzk3OTUsIAorICAgIDc5Nzk5LCA3OTgwMywgNzk4MDcsIDc5ODExLCA3OTgxNSwgNzk4MTksIDc5ODIzLCA3OTgyNywgNzk4MzEsIDc5ODM1LCAKKyAgICA3OTgzOSwgNzk4NDMsIDc5ODQ3LCA3OTg1MSwgNzk4NTUsIDc5ODU5LCA3OTg2MywgNzk4NjcsIDc5ODcxLCA3OTg3NSwgCisgICAgNzk4NzksIDc5ODgzLCA3OTg4NywgNzk4OTEsIDc5ODk1LCA3OTg5OSwgNzk5MDMsIDc5OTA3LCA3OTkxMSwgNzk5MTUsIAorICAgIDc5OTE5LCA3OTkyMywgNzk5MjcsIDc5OTMxLCA3OTkzNSwgNzk5MzksIDc5OTQzLCA3OTk0NywgNzk5NTEsIDc5OTU1LCAKKyAgICA3OTk1OSwgNzk5NjMsIDc5OTY3LCA3OTk3MSwgNzk5NzUsIDc5OTc5LCA3OTk4MywgNzk5ODcsIDc5OTkxLCA3OTk5NSwgCisgICAgNzk5OTksIDgwMDAzLCA4MDAwNywgODAwMTEsIDgwMDE1LCA4MDAxOSwgODAwMjMsIDgwMDI3LCA4MDAzMSwgODAwMzUsIAorICAgIDgwMDM5LCA4MDA0MywgODAwNDcsIDgwMDUxLCA4MDA1NSwgODAwNTksIDgwMDYzLCA4MDA2NywgODAwNzEsIDgwMDc1LCAKKyAgICA4MDA3OSwgODAwODMsIDgwMDg3LCA4MDA5MSwgODAwOTUsIDgwMDk5LCA4MDEwMywgODAxMDcsIDgwMTExLCA4MDExNSwgCisgICAgODAxMTksIDgwMTIzLCA4MDEyNywgODAxMzEsIDgwMTM1LCA4MDEzOSwgODAxNDMsIDgwMTQ3LCA4MDE1MSwgODAxNTUsIAorICAgIDgwMTU5LCA4MDE2MywgODAxNjcsIDgwMTcxLCA4MDE3NSwgODAxNzksIDgwMTgzLCA4MDE4NywgODAxOTEsIDgwMTk1LCAKKyAgICA4MDE5OSwgODAyMDMsIDgwMjA3LCA4MDIxMSwgODAyMTUsIDgwMjE5LCA4MDIyMywgODAyMjcsIDgwMjMxLCA4MDIzNSwgCisgICAgODAyMzksIDgwMjQzLCA4MDI0NywgODAyNTEsIDgwMjU1LCA4MDI1OSwgODAyNjMsIDgwMjY3LCA4MDI3MSwgODAyNzUsIAorICAgIDgwMjc5LCA4MDI4MywgODAyODcsIDgwMjkxLCA4MDI5NSwgODAyOTksIDgwMzAzLCA4MDMwNywgODAzMTEsIDgwMzE1LCAKKyAgICA4MDMxOSwgODAzMjMsIDgwMzI3LCA4MDMzMSwgODAzMzUsIDgwMzM5LCA4MDM0MywgODAzNDcsIDgwMzUxLCA4MDM1NSwgCisgICAgODAzNTksIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc1LCA4MDM3OSwgODAzODMsIDgwMzg3LCA4MDM5MSwgODAzOTUsIAorICAgIDgwMzk5LCA4MDQwMywgODA0MDcsIDgwNDExLCA4MDQxNSwgODA0MTksIDgwNDIzLCA4MDQyNywgODA0MzEsIDgwNDM1LCAKKyAgICA4MDQzOSwgODA0NDMsIDgwNDQ3LCA4MDQ1MSwgODA0NTUsIDgwNDU5LCA4MDQ2MywgODA0NjcsIDgwNDcxLCA4MDQ3NSwgCisgICAgODA0NzksIDgwNDgzLCA4MDQ4NywgODA0OTEsIDgwNDk1LCA4MDQ5OSwgODA1MDMsIDgwNTA3LCA4MDUxMSwgODA1MTUsIAorICAgIDgwNTE5LCA4MDUyMywgODA1MjcsIDgwNTMxLCA4MDUzNSwgODA1MzksIDgwNTQzLCA4MDU0NywgODA1NTEsIDgwNTU1LCAKKyAgICA4MDU1OSwgODA1NjMsIDgwNTY3LCA4MDU3MSwgODA1NzUsIDgwNTc5LCA4MDU4MywgODA1ODcsIDgwNTkxLCA4MDU5NSwgCisgICAgODA1OTksIDgwNjAzLCA4MDYwNywgODA2MTEsIDgwNjE1LCA4MDYxOSwgODA2MjMsIDgwNjI3LCA4MDYzMSwgODA2MzUsIAorICAgIDgwNjM5LCA4MDY0MywgODA2NDcsIDgwNjUxLCA4MDY1NSwgODA2NTksIDgwNjYzLCA4MDY2NywgODA2NzEsIDgwNjc1LCAKKyAgICA4MDY3OSwgODA2ODMsIDgwNjg3LCA4MDY5MSwgODA2OTUsIDgwNjk5LCA4MDcwMywgODA3MDcsIDgwNzExLCA4MDcxNSwgCisgICAgODA3MTksIDgwNzIzLCA4MDcyNywgODA3MzEsIDgwNzM1LCA4MDczOSwgODA3NDMsIDgwNzQ3LCA4MDc1MSwgODA3NTUsIAorICAgIDgwNzU5LCA4MDc2MywgODA3NjcsIDgwNzcxLCA4MDc3NSwgODA3NzksIDgwNzgzLCA4MDc4NywgODA3OTEsIDgwNzk1LCAKKyAgICA4MDc5OSwgODA4MDMsIDgwODA3LCA4MDgxMSwgMCwgMCwgODA4MTUsIDgwODE5LCA4MDgyMywgODA4MjcsIDgwODMxLCAKKyAgICA4MDgzNSwgODA4MzksIDgwODQzLCA4MDg0NywgODA4NTEsIDgwODU1LCA4MDg1OSwgODA4NjMsIDgwODY3LCA4MDg3MSwgCisgICAgODA4NzUsIDgwODc5LCA4MDg4MywgODA4ODcsIDgwODkxLCA4MDg5NSwgODA4OTksIDgwOTAzLCA4MDkwNywgODA5MTEsIAorICAgIDgwOTE1LCA4MDkxOSwgODA5MjMsIDgwOTI3LCA4MDkzMSwgODA5MzUsIDgwOTM5LCA4MDk0MywgODA5NDcsIDgwOTUxLCAKKyAgICA4MDk1NSwgODA5NTksIDgwOTYzLCA4MDk2NywgODA5NzEsIDgwOTc1LCA4MDk3OSwgODA5ODMsIDgwOTg3LCA4MDk5MSwgCisgICAgODA5OTUsIDgwOTk5LCA4MTAwMywgODEwMDcsIDgxMDExLCA4MTAxNSwgODEwMTksIDgxMDIzLCA4MTAyNywgODEwMzEsIAorICAgIDgxMDM1LCA4MTAzOSwgODEwNDMsIDgxMDQ3LCA4MTA1MSwgODEwNTUsIDgxMDU5LCA4MTA2MywgODEwNjcsIDgxMDcxLCAKKyAgICA4MTA3NSwgODEwNzksIDgxMDgzLCA4MTA4NywgODEwOTEsIDgxMDk1LCA4MTA5OSwgODExMDMsIDgxMTA3LCA4MTExMSwgCisgICAgODExMTUsIDgxMTE5LCA4MTEyMywgODExMjcsIDgxMTMxLCA4MTEzNSwgODExMzksIDgxMTQzLCA4MTE0NywgODExNTEsIAorICAgIDgxMTU1LCA4MTE1OSwgODExNjMsIDgxMTY3LCA4MTE3MSwgODExNzUsIDgxMTc5LCA4MTE4MywgODExODcsIDgxMTkxLCAKKyAgICA4MTE5NSwgODExOTksIDgxMjAzLCA4MTIwNywgODEyMTEsIDgxMjE1LCA4MTIxOSwgODEyMjMsIDgxMjI3LCA4MTIzMSwgCisgICAgODEyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMjM5LCA4MTI0NCwgODEyNDksIAorICAgIDgxMjU0LCA4MTI1OSwgODEyNjQsIDgxMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTI3NywgCisgICAgODEyODQsIDgxMjkxLCA4MTI5OCwgODEzMDUsIDAsIDAsIDAsIDAsIDAsIDgxMzEyLCA4MTMxOSwgODEzMjYsIDgxMzM2LCAKKyAgICA4MTM0MiwgODEzNDgsIDgxMzU0LCA4MTM2MCwgODEzNjYsIDgxMzcyLCA4MTM3OSwgODEzODUsIDgxMzkxLCA4MTM5NywgCisgICAgODE0MDYsIDgxNDE1LCA4MTQyNywgODE0MzksIDgxNDQ1LCA4MTQ1MSwgODE0NTcsIDgxNDY0LCA4MTQ3MSwgODE0NzgsIAorICAgIDgxNDg1LCA4MTQ5MiwgMCwgODE0OTksIDgxNTA2LCA4MTUxMywgODE1MjEsIDgxNTI4LCAwLCA4MTUzNSwgMCwgODE1NDIsIAorICAgIDgxNTQ5LCAwLCA4MTU1NiwgODE1NjQsIDAsIDgxNTcxLCA4MTU3OCwgODE1ODUsIDgxNTkyLCA4MTU5OSwgODE2MDYsIAorICAgIDgxNjEzLCA4MTYyMCwgODE2MjcsIDgxNjM0LCA4MTYzOSwgODE2NDYsIDgxNjUzLCA4MTY1OSwgODE2NjUsIDgxNjcxLCAKKyAgICA4MTY3NywgODE2ODMsIDgxNjg5LCA4MTY5NSwgODE3MDEsIDgxNzA3LCA4MTcxMywgODE3MTksIDgxNzI1LCA4MTczMSwgCisgICAgODE3MzcsIDgxNzQzLCA4MTc0OSwgODE3NTUsIDgxNzYxLCA4MTc2NywgODE3NzMsIDgxNzc5LCA4MTc4NSwgODE3OTEsIAorICAgIDgxNzk3LCA4MTgwMywgODE4MDksIDgxODE1LCA4MTgyMSwgODE4MjcsIDgxODMzLCA4MTgzOSwgODE4NDUsIDgxODUxLCAKKyAgICA4MTg1NywgODE4NjMsIDgxODY5LCA4MTg3NSwgODE4ODEsIDgxODg3LCA4MTg5MywgODE4OTksIDgxOTA1LCA4MTkxMSwgCisgICAgODE5MTcsIDgxOTIzLCA4MTkyOSwgODE5MzUsIDgxOTQxLCA4MTk0NywgODE5NTMsIDgxOTU5LCA4MTk2NSwgODE5NzEsIAorICAgIDgxOTc3LCA4MTk4MywgODE5ODksIDgxOTk1LCA4MjAwMSwgODIwMDcsIDgyMDEzLCA4MjAxOSwgODIwMjUsIDgyMDMxLCAKKyAgICA4MjAzNywgODIwNDMsIDgyMDQ5LCA4MjA1NSwgODIwNjEsIDgyMDY3LCA4MjA3MywgODIwNzksIDgyMDg1LCA4MjA5MSwgCisgICAgODIwOTcsIDgyMTAzLCA4MjEwOSwgODIxMTcsIDgyMTI1LCA4MjEzMSwgODIxMzcsIDgyMTQzLCA4MjE0OSwgODIxNTgsIAorICAgIDgyMTY3LCA4MjE3NSwgODIxODMsIDgyMTkxLCA4MjE5OSwgODIyMDcsIDgyMjE1LCA4MjIyMywgODIyMzEsIDgyMjM4LCAKKyAgICA4MjI0NSwgODIyNTYsIDgyMjY3LCA4MjI3MSwgODIyNzUsIDgyMjgwLCA4MjI4NSwgODIyOTAsIDgyMjk1LCA4MjMwMywgCisgICAgODIzMTEsIDgyMzE3LCA4MjMyMywgODIzMzAsIDgyMzM3LCA4MjM0NCwgODIzNDgsIDgyMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MjM2MCwgODIzNjYsIDgyMzcyLCA4MjM3OCwgODIzODQsIAorICAgIDgyMzg5LCA4MjM5NCwgODI0MDAsIDgyNDA2LCA4MjQxMiwgODI0MTgsIDgyNDI3LCA4MjQzMywgODI0MzksIDgyNDQ3LCAKKyAgICA4MjQ1NSwgODI0NjMsIDgyNDcxLCA4MjQ3NiwgODI0ODEsIDgyNDg2LCA4MjQ5MSwgODI1MDQsIDgyNTE3LCA4MjUyOCwgCisgICAgODI1MzksIDgyNTUxLCA4MjU2MywgODI1NzUsIDgyNTg3LCA4MjU5OCwgODI2MDksIDgyNjIxLCA4MjYzMywgODI2NDUsIAorICAgIDgyNjU3LCA4MjY2OCwgODI2NzksIDgyNjkwLCA4MjcwNywgODI3MjQsIDgyNzQxLCA4Mjc0OCwgODI3NTUsIDgyNzYyLCAKKyAgICA4Mjc2OSwgODI3ODAsIDgyNzkxLCA4MjgwMiwgODI4MTUsIDgyODI2LCA4MjgzNCwgODI4NDIsIDgyODUxLCA4Mjg1OSwgCisgICAgODI4NjksIDgyODc3LCA4Mjg4NSwgODI4OTMsIDgyOTAyLCA4MjkxMCwgODI5MjAsIDgyOTI4LCA4MjkzNiwgODI5NDQsIAorICAgIDgyOTU0LCA4Mjk2MiwgODI5NjksIDgyOTc2LCA4Mjk4MywgODI5OTAsIDgyOTk4LCA4MzAwNiwgODMwMTQsIDgzMDIyLCAKKyAgICA4MzAzMCwgODMwMzksIDgzMDQ3LCA4MzA1NSwgODMwNjMsIDgzMDcxLCA4MzA3OSwgODMwODgsIDgzMDk2LCA4MzEwNCwgCisgICAgODMxMTIsIDgzMTIwLCA4MzEyOCwgODMxMzYsIDgzMTQ0LCA4MzE1MiwgODMxNjAsIDgzMTY4LCA4MzE3NywgODMxODUsIAorICAgIDgzMTk1LCA4MzIwMywgODMyMTEsIDgzMjE5LCA4MzIyOSwgODMyMzcsIDgzMjQ1LCA4MzI1MywgODMyNjEsIDgzMjcwLCAKKyAgICA4MzI3OSwgODMyODcsIDgzMjk3LCA4MzMwNSwgODMzMTMsIDgzMzIxLCA4MzMzMCwgODMzMzgsIDgzMzQ4LCA4MzM1NiwgCisgICAgODMzNjMsIDgzMzcwLCA4MzM3OCwgODMzODUsIDgzMzk0LCA4MzQwMSwgODM0MDksIDgzNDE3LCA4MzQyNiwgODM0MzQsIAorICAgIDgzNDQ0LCA4MzQ1MiwgODM0NjAsIDgzNDY4LCA4MzQ3OCwgODM0ODYsIDgzNDkzLCA4MzUwMCwgODM1MDgsIDgzNTE1LCAKKyAgICA4MzUyNCwgODM1MzEsIDgzNTQxLCA4MzU1MSwgODM1NjIsIDgzNTcxLCA4MzU4MCwgODM1ODksIDgzNTk4LCA4MzYwNywgCisgICAgODM2MTcsIDgzNjI5LCA4MzY0MSwgODM2NTIsIDgzNjY0LCA4MzY3NywgODM2ODgsIDgzNjk3LCA4MzcwNiwgODM3MTQsIAorICAgIDgzNzIzLCA4MzczMywgODM3NDEsIDgzNzUwLCA4Mzc1OSwgODM3NjcsIDgzNzc2LCA4Mzc4NiwgODM3OTQsIDgzODAzLCAKKyAgICA4MzgxMiwgODM4MjAsIDgzODI5LCA4MzgzOSwgODM4NDcsIDgzODU3LCA4Mzg2NSwgODM4NzUsIDgzODgzLCA4Mzg5MSwgCisgICAgODM5MDAsIDgzOTA4LCA4MzkxOCwgODM5MjYsIDgzOTM0LCA4Mzk0NCwgODM5NTIsIDgzOTU5LCA4Mzk2NiwgODM5NzUsIAorICAgIDgzOTg0LCA4Mzk5MiwgODQwMDEsIDg0MDExLCA4NDAxOSwgODQwMzAsIDg0MDM4LCA4NDA0NiwgODQwNTMsIDg0MDYxLCAKKyAgICA4NDA3MCwgODQwNzcsIDg0MDg4LCA4NDA5OSwgODQxMTEsIDg0MTIyLCA4NDEzNCwgODQxNDIsIDg0MTUwLCA4NDE1OSwgCisgICAgODQxNjcsIDg0MTc2LCA4NDE4NCwgODQxOTIsIDg0MjAxLCA4NDIwOSwgODQyMTgsIDg0MjI2LCA4NDIzMywgODQyNDAsIAorICAgIDg0MjQ3LCA4NDI1NCwgODQyNjIsIDg0MjcwLCA4NDI3OCwgODQyODYsIDg0Mjk1LCA4NDMwMywgODQzMTEsIDg0MzIwLCAKKyAgICA4NDMyOCwgODQzMzYsIDg0MzQ0LCA4NDM1MywgODQzNjEsIDg0MzY5LCA4NDM3NywgODQzODUsIDg0MzkzLCA4NDQwMSwgCisgICAgODQ0MDksIDg0NDE3LCA4NDQyNSwgODQ0MzQsIDg0NDQyLCA4NDQ1MCwgODQ0NTgsIDg0NDY2LCA4NDQ3NCwgODQ0ODMsIAorICAgIDg0NDkyLCA4NDUwMCwgODQ1MDgsIDg0NTE2LCA4NDUyNSwgODQ1MzMsIDg0NTQyLCA4NDU0OSwgODQ1NTYsIDg0NTY0LCAKKyAgICA4NDU3MSwgODQ1NzksIDg0NTg3LCA4NDU5NiwgODQ2MDQsIDg0NjEzLCA4NDYyMSwgODQ2MjksIDg0NjM5LCA4NDY0NiwgCisgICAgODQ2NTMsIDg0NjYxLCA4NDY2OCwgODQ2NzYsIDg0Njg3LCA4NDY5OSwgODQ3MDcsIDg0NzE2LCA4NDcyNCwgODQ3MzMsIAorICAgIDg0NzQxLCA4NDc1MCwgODQ3NTgsIDg0NzY3LCA4NDc3NSwgODQ3ODQsIDg0NzkzLCA4NDgwMSwgODQ4MDksIDg0ODE3LCAKKyAgICA4NDgyNiwgODQ4MzMsIDg0ODQxLCA4NDg1MCwgODQ4NTksIDg0ODY4LCA4NDg3OCwgODQ4ODYsIDg0ODk2LCA4NDkwNCwgCisgICAgODQ5MTQsIDg0OTIyLCA4NDkzMiwgODQ5NDAsIDg0OTUwLCA4NDk1OCwgODQ5NjcsIDg0OTc0LCA4NDk4MywgODQ5OTAsIAorICAgIDg1MDAwLCA4NTAwOCwgODUwMTgsIDg1MDI2LCA4NTAzNiwgODUwNDQsIDg1MDUyLCA4NTA2MCwgODUwNjksIDg1MDc3LCAKKyAgICA4NTA4NiwgODUwOTUsIDg1MTA0LCA4NTExMywgODUxMjMsIDg1MTMxLCA4NTE0MSwgODUxNDksIDg1MTU5LCA4NTE2NywgCisgICAgODUxNzcsIDg1MTg1LCA4NTE5NSwgODUyMDMsIDg1MjEyLCA4NTIxOSwgODUyMjgsIDg1MjM1LCA4NTI0NSwgODUyNTMsIAorICAgIDg1MjYzLCA4NTI3MSwgODUyODEsIDg1Mjg5LCA4NTI5NywgODUzMDUsIDg1MzE0LCA4NTMyMiwgODUzMzEsIDg1MzQwLCAKKyAgICA4NTM0OSwgODUzNTgsIDg1MzY2LCA4NTM3NCwgODUzODMsIDg1MzkxLCA4NTQwMCwgODU0MDksIDg1NDE3LCA4NTQyNSwgCisgICAgODU0MzMsIDg1NDQyLCA4NTQ1MCwgODU0NTgsIDg1NDY3LCA4NTQ3NSwgODU0ODMsIDg1NDkxLCA4NTQ5OSwgODU1MDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NTA5LCA4NTUxOSwgODU1MjksIDg1NTM5LCAKKyAgICA4NTU0OSwgODU1NjAsIDg1NTcwLCA4NTU4MCwgODU1OTEsIDg1NjAwLCA4NTYwOSwgODU2MTgsIDg1NjI5LCA4NTYzOSwgCisgICAgODU2NDksIDg1NjYxLCA4NTY3MSwgODU2ODEsIDg1NjkxLCA4NTcwMSwgODU3MTEsIDg1NzIxLCA4NTczMSwgODU3NDEsIAorICAgIDg1NzUxLCA4NTc2MSwgODU3NzEsIDg1NzgyLCA4NTc5MywgODU4MDMsIDg1ODEzLCA4NTgyNSwgODU4MzYsIDg1ODQ3LCAKKyAgICA4NTg1NywgODU4NjcsIDg1ODc3LCA4NTg4NywgODU4OTcsIDg1OTA3LCA4NTkxNywgODU5MjksIDg1OTM5LCA4NTk0OSwgCisgICAgODU5NjEsIDg1OTcyLCA4NTk4MywgODU5OTMsIDg2MDAzLCA4NjAxMywgODYwMjMsIDg2MDM1LCA4NjA0NSwgODYwNTUsIAorICAgIDg2MDY2LCA4NjA3NywgODYwODcsIDg2MDk3LCA4NjEwNiwgODYxMTUsIDg2MTI0LCA4NjEzMywgODYxNDIsIDg2MTUyLCAwLCAKKyAgICAwLCA4NjE2MiwgODYxNzIsIDg2MTgyLCA4NjE5MiwgODYyMDIsIDg2MjE0LCA4NjIyNCwgODYyMzQsIDg2MjQ2LCA4NjI1NiwgCisgICAgODYyNjgsIDg2Mjc3LCA4NjI4NiwgODYyOTcsIDg2MzA3LCA4NjMxOSwgODYzMzAsIDg2MzQzLCA4NjM1MywgODYzNjUsIAorICAgIDg2Mzc0LCA4NjM4NSwgODYzOTYsIDg2NDA5LCA4NjQxOSwgODY0MjksIDg2NDM5LCA4NjQ0OSwgODY0NTksIDg2NDY4LCAKKyAgICA4NjQ3NywgODY0ODYsIDg2NDk1LCA4NjUwNSwgODY1MTUsIDg2NTI1LCA4NjUzNSwgODY1NDUsIDg2NTU1LCA4NjU2NSwgCisgICAgODY1NzUsIDg2NTg1LCA4NjU5NSwgODY2MDUsIDg2NjE1LCA4NjYyNCwgODY2MzMsIDg2NjQyLCA4NjY1MiwgODY2NjIsIAorICAgIDg2NjcyLCA4NjY4MiwgODY2OTIsIDg2NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY4MSwgNTc2ODUsIDU3Njg5LCA1NzY5NCwgNTc2OTksIDU3NzA0LCAKLSAgICA1NzcwOCwgNTc3MTIsIDU3NzE2LCA1NzcyMSwgNTc3MjYsIDU3NzMwLCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCi0gICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDU3NzcwLCA1Nzc3NSwgNTc3ODAsIDU3Nzg1LCA1Nzc5MCwgNTc3OTQsIDAsIAotICAgIDU3Nzk4LCA1NzgwMiwgNTc4MDYsIDU3ODEwLCA1NzgxNCwgNTc4MTgsIDU3ODIyLCA1NzgyNywgNTc4MzIsIDU3ODM2LCAKLSAgICA1Nzg0MSwgNTc4NDYsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3NCwgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgCi0gICAgNTc4OTIsIDU3ODk2LCA1NzkwMiwgNTc5MDcsIDU3OTEyLCA1NzkxNywgNTc5MjIsIDU3OTI2LCA1NzkzMCwgNTc5MzQsIAotICAgIDU3OTM4LCA1Nzk0MiwgNTc5NDcsIDU3OTUyLCA1Nzk1NiwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIDU3OTc5LCAKLSAgICA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OSwgNTgwMDUsIDU4MDA5LCA1ODAxNSwgNTgwMjEsIDU4MDI1LCA1ODAzMSwgCi0gICAgNTgwMzcsIDU4MDQyLCA1ODA0NywgNTgwNTEsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDcxLCA1ODA3NywgNTgwODIsIAotICAgIDU4MDg3LCA1ODA5MSwgNTgwOTUsIDU4MTAzLCA1ODEwOSwgNTgxMTUsIDU4MTIxLCA1ODEyNiwgNTgxMzEsIDU4MTM2LCAKLSAgICA1ODE0MiwgNTgxNDYsIDU4MTUyLCA1ODE1NiwgNTgxNjAsIDU4MTY2LCA1ODE3MiwgNTgxNzgsIDU4MTg0LCA1ODE5MCwgCi0gICAgNTgxOTYsIDU4MjAyLCA1ODIwOCwgNTgyMTQsIDU4MjIwLCA1ODIyNiwgNTgyMzIsIDU4MjM2LCA1ODI0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyNDgsIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI2NywgCi0gICAgNTgyNzAsIDU4MjczLCA1ODI3NywgNTgyODEsIDU4Mjg1LCA1ODI4OSwgNTgyOTIsIDU4Mjk3LCA1ODMwMSwgNTgzMDUsIAotICAgIDU4MzA5LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM2LCA1ODM0MiwgNTgzNDYsIDU4MzUwLCAKLSAgICA1ODM1NCwgNTgzNTgsIDU4MzYyLCA1ODM2NiwgNTgzNzAsIDU4Mzc0LCA1ODM3OCwgNTgzODIsIDU4Mzg2LCA1ODM5MiwgCi0gICAgNTgzOTYsIDU4NDAwLCA1ODQwNCwgNTg0MDgsIDU4NDEyLCA1ODQxNiwgNTg0MjAsIDU4NDI0LCA1ODQyOCwgNTg0MzIsIAotICAgIDU4NDM2LCA1ODQ0MCwgNTg0NDQsIDU4NDQ4LCA1ODQ1MiwgNTg0NTYsIDU4NDYyLCA1ODQ2OCwgNTg0NzMsIDU4NDc4LCAKLSAgICA1ODQ4MiwgNTg0ODYsIDU4NDkwLCA1ODQ5NCwgNTg0OTgsIDU4NTAyLCA1ODUwNiwgNTg1MTAsIDU4NTE0LCA1ODUxOCwgCi0gICAgNTg1MjIsIDU4NTI2LCA1ODUzMCwgNTg1MzQsIDU4NTM4LCA1ODU0MiwgNTg1NDYsIDU4NTUwLCA1ODU1NCwgNTg1NTgsIAotICAgIDU4NTYyLCA1ODU2NiwgNTg1NzAsIDU4NTc0LCA1ODU4MCwgNTg1ODQsIDU4NTg4LCA1ODU5MiwgNTg1OTYsIDU4NjAwLCAKLSAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNywgNTg2MjQsIDU4NjI4LCA1ODYzMiwgNTg2MzYsIDU4NjQwLCA1ODY0NCwgCi0gICAgNTg2NDgsIDU4NjUyLCA1ODY1NiwgNTg2NjAsIDU4NjY0LCA1ODY2OCwgNTg2NzIsIDU4Njc5LCA1ODY4MywgNTg2ODksIAotICAgIDU4NjkzLCA1ODY5NywgNTg3MDEsIDU4NzA1LCA1ODcwOSwgNTg3MTIsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDU4NzI4LCAKLSAgICA1ODczMiwgNTg3MzYsIDU4NzQwLCA1ODc0NCwgNTg3NDgsIDU4NzUyLCA1ODc1NiwgNTg3NjAsIDU4NzY0LCA1ODc2OCwgCi0gICAgNTg3NzIsIDU4Nzc2LCA1ODc4MCwgNTg3ODQsIDU4Nzg4LCA1ODc5MiwgNTg3OTYsIDU4ODAwLCA1ODgwNCwgNTg4MDgsIAotICAgIDU4ODEyLCA1ODgxNiwgNTg4MjAsIDU4ODI0LCA1ODgyOCwgNTg4MzIsIDU4ODM2LCA1ODg0MCwgNTg4NDYsIDU4ODUwLCAKLSAgICA1ODg1NCwgNTg4NTgsIDU4ODYyLCA1ODg2NiwgNTg4NzAsIDU4ODc0LCA1ODg3OCwgNTg4ODIsIDU4ODg2LCA1ODg5MCwgCi0gICAgNTg4OTQsIDU4ODk4LCA1ODkwMiwgNTg5MDYsIDU4OTEwLCA1ODkxNCwgNTg5MTgsIDU4OTIyLCA1ODkyNiwgNTg5MzAsIAotICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYyLCA1ODk2NiwgNTg5NzAsIDU4OTc0LCAKLSAgICA1ODk3OCwgNTg5ODIsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgCi0gICAgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MCwgNTkwNDYsIDU5MDUwLCA1OTA1NCwgNTkwNTgsIAotICAgIDU5MDYyLCA1OTA2NiwgNTkwNzAsIDU5MDc0LCA1OTA3OCwgNTkwODIsIDU5MDg2LCA1OTA5MCwgNTkwOTQsIDU5MDk4LCAKLSAgICA1OTEwMiwgNTkxMDYsIDU5MTEwLCA1OTExNCwgNTkxMTgsIDU5MTIyLCA1OTEyNiwgNTkxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTM0LCA1OTE0MywgCi0gICAgNTkxNTEsIDU5MTYzLCA1OTE3NCwgNTkxODIsIDU5MTkxLCA1OTIwMCwgNTkyMTAsIDU5MjIyLCA1OTIzNCwgNTkyNDYsIDAsIAotICAgIDAsIDAsIDAsIDU5MjUyLCA1OTI1NSwgNTkyNTgsIDU5MjYzLCA1OTI2NiwgNTkyNzMsIDU5Mjc3LCA1OTI4MSwgNTkyODUsIAotICAgIDU5Mjg5LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNywgNTkzMTEsIDU5MzE2LCA1OTMyMSwgNTkzMjYsIDU5MzMxLCAKLSAgICA1OTMzNCwgNTkzMzcsIDU5MzQzLCA1OTM0OSwgNTkzNTQsIDU5MzU5LCA1OTM2NiwgNTkzNzMsIDU5Mzc3LCA1OTM4MSwgCi0gICAgNTkzODUsIDU5MzkzLCA1OTM5OSwgNTk0MDYsIDU5NDExLCA1OTQxNiwgNTk0MjEsIDU5NDI2LCA1OTQzMSwgNTk0MzYsIAotICAgIDU5NDQxLCA1OTQ0NiwgNTk0NTEsIDU5NDU2LCA1OTQ2MSwgNTk0NjYsIDU5NDcxLCA1OTQ3NiwgNTk0ODIsIDU5NDg3LCAKLSAgICA1OTQ5MSwgNTk0OTcsIDU5NTA4LCA1OTUxOCwgNTk1MzMsIDU5NTQzLCA1OTU0NywgNTk1NTcsIDU5NTYzLCA1OTU2OSwgCi0gICAgNTk1NzUsIDU5NTgwLCA1OTU4MywgNTk1ODgsIDU5NTkyLCAwLCA1OTU5OCwgNTk2MDIsIDU5NjA1LCA1OTYwOSwgNTk2MTIsIAotICAgIDU5NjE2LCA1OTYxOSwgNTk2MjMsIDU5NjI2LCA1OTYzMCwgNTk2MzMsIDU5NjM2LCA1OTY0MCwgNTk2NDQsIDU5NjQ4LCAKLSAgICA1OTY1MiwgNTk2NTYsIDU5NjYwLCA1OTY2NCwgNTk2NjgsIDU5NjcyLCA1OTY3NSwgNTk2NzksIDU5NjgzLCA1OTY4NywgCi0gICAgNTk2OTEsIDU5Njk1LCA1OTY5OSwgNTk3MDMsIDU5NzA3LCA1OTcxMSwgNTk3MTUsIDU5NzE5LCA1OTcyMywgNTk3MjcsIAotICAgIDU5NzMyLCA1OTczNiwgNTk3NDAsIDU5NzQ0LCA1OTc0OCwgNTk3NTEsIDU5NzU1LCA1OTc1OCwgNTk3NjIsIDU5NzY2LCAKLSAgICA1OTc3MCwgNTk3NzQsIDU5Nzc3LCA1OTc4MSwgNTk3ODQsIDU5Nzg4LCA1OTc5MiwgNTk3OTYsIDU5ODAwLCA1OTgwNCwgCi0gICAgNTk4MDgsIDU5ODEyLCA1OTgxNiwgNTk4MjAsIDU5ODI0LCA1OTgyOCwgNTk4MzIsIDU5ODM1LCA1OTgzOSwgNTk4NDMsIAotICAgIDU5ODQ3LCA1OTg1MSwgNTk4NTUsIDU5ODU4LCA1OTg2MywgNTk4NjcsIDU5ODcyLCA1OTg3NiwgNTk4NzksIDU5ODgzLCAKLSAgICA1OTg4NywgNTk4OTEsIDU5ODk1LCA1OTkwMCwgNTk5MDQsIDU5OTA4LCA1OTkxMiwgNTk5MTYsIDU5OTIwLCA1OTkyNCwgCi0gICAgNTk5MjgsIDAsIDAsIDU5OTMzLCA1OTk0MSwgNTk5NDksIDU5OTU2LCA1OTk2MywgNTk5NjcsIDU5OTczLCA1OTk3OCwgCi0gICAgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTQsIDU5OTk3LCA2MDAwMSwgNjAwMDQsIDYwMDA4LCA2MDAxMSwgNjAwMTUsIAotICAgIDYwMDE4LCA2MDAyMSwgNjAwMjUsIDYwMDI5LCA2MDAzMywgNjAwMzcsIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDUzLCAKLSAgICA2MDA1NywgNjAwNjAsIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgCi0gICAgNjAwOTYsIDYwMTAwLCA2MDEwNCwgNjAxMDgsIDYwMTEyLCA2MDExNywgNjAxMjEsIDYwMTI1LCA2MDEyOSwgNjAxMzMsIAotICAgIDYwMTM2LCA2MDE0MCwgNjAxNDMsIDYwMTQ3LCA2MDE1MSwgNjAxNTUsIDYwMTU5LCA2MDE2MiwgNjAxNjYsIDYwMTY5LCAKLSAgICA2MDE3MywgNjAxNzcsIDYwMTgxLCA2MDE4NSwgNjAxODksIDYwMTkzLCA2MDE5NywgNjAyMDEsIDYwMjA1LCA2MDIwOSwgCi0gICAgNjAyMTMsIDYwMjE3LCA2MDIyMCwgNjAyMjQsIDYwMjI4LCA2MDIzMiwgNjAyMzYsIDYwMjQwLCA2MDI0MywgNjAyNDgsIAotICAgIDYwMjUyLCA2MDI1NywgNjAyNjEsIDYwMjY0LCA2MDI2OCwgNjAyNzIsIDYwMjc2LCA2MDI4MCwgNjAyODUsIDYwMjg5LCAKLSAgICA2MDI5MywgNjAyOTcsIDYwMzAxLCA2MDMwNSwgNjAzMDksIDYwMzEzLCA2MDMxOCwgNjAzMjIsIDYwMzI2LCA2MDMzMCwgCi0gICAgNjAzMzQsIDYwMzM5LCA2MDM0NiwgNjAzNTAsIDYwMzU2LCAwLCAwLCAwLCAwLCAwLCA2MDM2MSwgNjAzNjYsIDYwMzcxLCAKLSAgICA2MDM3NSwgNjAzODAsIDYwMzg1LCA2MDM5MCwgNjAzOTUsIDYwMzk5LCA2MDQwNCwgNjA0MDksIDYwNDE0LCA2MDQxOSwgCi0gICAgNjA0MjQsIDYwNDI5LCA2MDQzNCwgNjA0MzksIDYwNDQ0LCA2MDQ0OCwgNjA0NTMsIDYwNDU4LCA2MDQ2MywgNjA0NjcsIAotICAgIDYwNDcxLCA2MDQ3NSwgNjA0ODAsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIDYwNTE1LCAKLSAgICA2MDUyMCwgNjA1MjUsIDYwNTI5LCA2MDUzMywgNjA1MzgsIDYwNTQzLCA2MDU0OCwgNjA1NTMsIDAsIDAsIDAsIDYwNTU4LCAKLSAgICA2MDU2MiwgNjA1NjYsIDYwNTcwLCA2MDU3NCwgNjA1NzgsIDYwNTgyLCA2MDU4NiwgNjA1OTAsIDYwNTk0LCA2MDU5OCwgCi0gICAgNjA2MDIsIDYwNjA2LCA2MDYxMCwgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjYsIDYwNjMwLCA2MDYzNCwgNjA2MzgsIAotICAgIDYwNjQyLCA2MDY0NiwgNjA2NTAsIDYwNjU0LCA2MDY1OCwgNjA2NjIsIDYwNjY2LCA2MDY3MCwgNjA2NzQsIDYwNjc4LCAKLSAgICA2MDY4MSwgNjA2ODUsIDYwNjg4LCA2MDY5MiwgNjA2OTYsIDYwNjk5LCA2MDcwMywgNjA3MDcsIDYwNzEwLCA2MDcxNCwgCi0gICAgNjA3MTgsIDYwNzIyLCA2MDcyNiwgNjA3MjksIDYwNzMzLCA2MDczNywgNjA3NDEsIDYwNzQ1LCA2MDc0OSwgNjA3NTMsIAotICAgIDYwNzU2LCA2MDc1OSwgNjA3NjMsIDYwNzY3LCA2MDc3MSwgNjA3NzUsIDYwNzc5LCA2MDc4MywgNjA3ODcsIDYwNzkxLCAKLSAgICA2MDc5NSwgNjA3OTksIDYwODAzLCA2MDgwNywgNjA4MTEsIDYwODE1LCA2MDgxOSwgNjA4MjMsIDYwODI3LCA2MDgzMSwgCi0gICAgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIAotICAgIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCAKLSAgICA2MDkxNSwgNjA5MTksIDYwOTIzLCAwLCA2MDkyNywgNjA5MzMsIDYwOTM5LCA2MDk0NCwgNjA5NDksIDYwOTU0LCA2MDk2MCwgCi0gICAgNjA5NjYsIDYwOTcyLCA2MDk3OCwgNjA5ODQsIDYwOTkwLCA2MDk5NiwgNjEwMDIsIDYxMDA4LCA2MTAxNCwgNjEwMjAsIAotICAgIDYxMDI1LCA2MTAzMCwgNjEwMzUsIDYxMDQwLCA2MTA0NSwgNjEwNTAsIDYxMDU1LCA2MTA2MCwgNjEwNjUsIDYxMDcwLCAKLSAgICA2MTA3NSwgNjEwODAsIDYxMDg1LCA2MTA5MCwgNjEwOTUsIDYxMTAwLCA2MTEwNSwgNjExMTAsIDYxMTE1LCA2MTEyMCwgCi0gICAgNjExMjYsIDYxMTMyLCA2MTEzOCwgNjExNDQsIDYxMTQ5LCA2MTE1NCwgMCwgMCwgMCwgMCwgMCwgNjExNTksIDYxMTY0LCAKLSAgICA2MTE2OSwgNjExNzQsIDYxMTc5LCA2MTE4NCwgNjExODksIDYxMTk0LCA2MTE5OSwgNjEyMDQsIDYxMjA5LCA2MTIxNCwgCi0gICAgNjEyMTksIDYxMjI0LCA2MTIyOSwgNjEyMzQsIDYxMjM5LCA2MTI0NCwgNjEyNDksIDYxMjU0LCA2MTI1OSwgNjEyNjQsIAotICAgIDYxMjY5LCA2MTI3NCwgNjEyNzksIDYxMjg0LCA2MTI4OSwgNjEyOTQsIDYxMjk5LCA2MTMwNCwgNjEzMDksIDYxMzE0LCAKLSAgICA2MTMxOSwgNjEzMjQsIDYxMzI5LCA2MTMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMzksIAotICAgIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU4LCA2MTM2MywgNjEzNjcsIDYxMzcyLCA2MTM3NywgNjEzODIsIDYxMzg3LCAKLSAgICA2MTM5MiwgNjEzOTYsIDYxNDAxLCA2MTQwNiwgNjE0MTEsIDYxNDE2LCA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgCi0gICAgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzIsIAotICAgIDYxNDc3LCA2MTQ4MiwgNjE0ODcsIDYxNDkyLCA2MTQ5NywgNjE1MDIsIDYxNTA3LCA2MTUxMiwgNjE1MTcsIDYxNTIyLCAKLSAgICA2MTUyNywgNjE1MzIsIDYxNTM3LCA2MTU0MiwgNjE1NDcsIDYxNTUzLCAwLCA2MTU2MCwgNjE1NjMsIDYxNTY2LCA2MTU2OSwgCi0gICAgNjE1NzIsIDYxNTc1LCA2MTU3OCwgNjE1ODEsIDYxNTg0LCA2MTU4NywgNjE1OTEsIDYxNTk1LCA2MTU5OSwgNjE2MDMsIAotICAgIDYxNjA3LCA2MTYxMSwgNjE2MTUsIDYxNjE5LCA2MTYyMywgNjE2MjcsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCAKLSAgICA2MTY0NywgNjE2NTEsIDYxNjU1LCA2MTY1OSwgNjE2NjMsIDYxNjY3LCA2MTY3MSwgNjE2NzUsIDYxNjc5LCA2MTY4MywgCi0gICAgNjE2ODcsIDYxNjkxLCA2MTY5NSwgNjE2OTksIDYxNzAzLCA2MTcwNywgNjE3MTEsIDYxNzIwLCA2MTcyOSwgNjE3MzgsIAotICAgIDYxNzQ3LCA2MTc1NiwgNjE3NjUsIDYxNzc0LCA2MTc4MywgNjE3ODYsIDYxNzkxLCA2MTc5NiwgNjE4MDEsIDYxODA2LCAKLSAgICA2MTgxMSwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM1LCA2MTg0MCwgNjE4NDUsIDYxODUwLCA2MTg1NSwgCi0gICAgNjE4NjAsIDYxODY0LCA2MTg2OCwgNjE4NzIsIDYxODc2LCA2MTg4MCwgNjE4ODQsIDYxODg4LCA2MTg5MiwgNjE4OTYsIAotICAgIDYxOTAwLCA2MTkwNCwgNjE5MDgsIDYxOTEyLCA2MTkxNiwgNjE5MjEsIDYxOTI2LCA2MTkzMSwgNjE5MzYsIDYxOTQxLCAKLSAgICA2MTk0NiwgNjE5NTEsIDYxOTU2LCA2MTk2MSwgNjE5NjYsIDYxOTcxLCA2MTk3NiwgNjE5ODEsIDYxOTg2LCA2MTk5MiwgCi0gICAgNjE5OTgsIDYyMDAzLCA2MjAwOCwgNjIwMTEsIDYyMDE0LCA2MjAxNywgNjIwMjAsIDYyMDIzLCA2MjAyNiwgNjIwMjksIAotICAgIDYyMDMyLCA2MjAzNSwgNjIwMzksIDYyMDQzLCA2MjA0NywgNjIwNTEsIDYyMDU1LCA2MjA1OSwgNjIwNjMsIDYyMDY3LCAKLSAgICA2MjA3MSwgNjIwNzUsIDYyMDc5LCA2MjA4MywgNjIwODcsIDYyMDkxLCA2MjA5NSwgNjIwOTksIDYyMTAzLCA2MjEwNywgCi0gICAgNjIxMTEsIDYyMTE1LCA2MjExOSwgNjIxMjMsIDYyMTI3LCA2MjEzMSwgNjIxMzUsIDYyMTM5LCA2MjE0MywgNjIxNDcsIAotICAgIDYyMTUxLCA2MjE1NSwgNjIxNTksIDYyMTYzLCA2MjE2NywgNjIxNzEsIDYyMTc1LCA2MjE3OSwgNjIxODMsIDYyMTg3LCAKLSAgICA2MjE5MSwgNjIxOTUsIDYyMjAwLCA2MjIwNSwgNjIyMTAsIDYyMjE1LCA2MjIxOSwgNjIyMjQsIDYyMjI5LCA2MjIzNCwgCi0gICAgNjIyMzksIDYyMjQ0LCA2MjI0OSwgNjIyNTQsIDYyMjU5LCA2MjI2NCwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODksIAotICAgIDYyMjk2LCA2MjMwMywgNjIzMTAsIDYyMzE3LCA2MjMyNCwgNjIzMzEsIDYyMzM4LCA2MjM0NSwgNjIzNTIsIDYyMzU1LCAKLSAgICA2MjM1OCwgNjIzNjEsIDYyMzY2LCA2MjM2OSwgNjIzNzIsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OCwgCi0gICAgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDMsIDYyNDA3LCA2MjQxMSwgNjI0MTUsIDYyNDE5LCA2MjQyMywgNjI0MjcsIAotICAgIDYyNDMxLCA2MjQzNSwgNjI0MzgsIDYyNDQxLCA2MjQ0NSwgNjI0NDksIDYyNDUzLCA2MjQ1NywgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ3OSwgNjI0ODMsIDYyNDg3LCA2MjQ5MSwgNjI0OTUsIDYyNDk4LCA2MjUwMiwgCi0gICAgNjI1MDYsIDYyNTA5LCA2MjUxMywgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjksIDYyNTMzLCA2MjUzNywgMCwgNjI1NDEsIAotICAgIDYyNTQ0LCA2MjU0NywgNjI1NTAsIDYyNTUzLCA2MjU1NiwgNjI1NTksIDYyNTYyLCA2MjU2NSwgNjI1NjgsIDYyNTcxLCAKLSAgICA2MjU3NCwgNjI1NzcsIDYyNTgwLCA2MjU4MywgNjI1ODYsIDYyNTg5LCA2MjU5MiwgNjI1OTUsIDYyNTk4LCA2MjYwMSwgCi0gICAgNjI2MDQsIDYyNjA3LCA2MjYxMCwgNjI2MTMsIDYyNjE2LCA2MjYxOSwgNjI2MjIsIDYyNjI1LCA2MjYyOCwgNjI2MzEsIAotICAgIDYyNjM0LCA2MjYzNywgNjI2NDAsIDYyNjQzLCA2MjY0NiwgNjI2NDksIDYyNjUyLCA2MjY1NSwgNjI2NTgsIDYyNjYxLCAKLSAgICA2MjY2NCwgNjI2NjcsIDYyNjcwLCA2MjY3MywgNjI2NzYsIDYyNjc5LCA2MjY4MiwgNjI2ODUsIDYyNjg4LCA2MjY5MSwgCi0gICAgNjI2OTQsIDYyNjk3LCA2MjcwMCwgNjI3MDMsIDYyNzA2LCA2MjcwOSwgNjI3MTIsIDYyNzE1LCA2MjcxOCwgNjI3MjEsIAotICAgIDYyNzI0LCA2MjcyNywgNjI3MzAsIDYyNzMzLCA2MjczNiwgNjI3MzksIDYyNzQyLCA2Mjc0NSwgNjI3NDgsIDYyNzUxLCAKLSAgICA2Mjc1NCwgNjI3NTcsIDYyNzYwLCA2Mjc2MywgNjI3NjYsIDYyNzY5LCA2Mjc3MiwgNjI3NzUsIDYyNzc4LCA2Mjc4MSwgCi0gICAgNjI3ODQsIDYyNzg3LCA2Mjc5MCwgNjI3OTMsIDYyNzk2LCA2Mjc5OSwgNjI4MDIsIDYyODA1LCA2MjgxNCwgNjI4MjIsIAotICAgIDYyODMwLCA2MjgzOCwgNjI4NDYsIDYyODU0LCA2Mjg2MiwgNjI4NzAsIDYyODc4LCA2Mjg4NiwgNjI4OTUsIDYyOTA0LCAKLSAgICA2MjkxMywgNjI5MjIsIDYyOTMxLCA2Mjk0MCwgNjI5NDksIDYyOTU4LCA2Mjk2NywgNjI5NzYsIDYyOTg1LCA2Mjk5NCwgCi0gICAgNjMwMDMsIDYzMDEyLCA2MzAyMSwgNjMwMjQsIDYzMDI3LCA2MzAzMCwgNjMwMzIsIDYzMDM1LCA2MzAzOCwgNjMwNDEsIAotICAgIDYzMDQ2LCA2MzA1MSwgNjMwNTQsIDYzMDYxLCA2MzA2OCwgNjMwNzUsIDYzMDgyLCA2MzA4NSwgNjMwOTAsIDYzMDkyLCAKLSAgICA2MzA5NiwgNjMwOTgsIDYzMTAwLCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgNjMxMTUsIDYzMTE4LCA2MzEyMSwgCi0gICAgNjMxMjYsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgNjMxNDYsIDYzMTQ5LCA2MzE1MiwgNjMxNTYsIAotICAgIDYzMTU5LCA2MzE2MiwgNjMxNjUsIDYzMTY4LCA2MzE3MSwgNjMxNzUsIDYzMTc4LCA2MzE4MSwgNjMxODQsIDYzMTg5LCAKLSAgICA2MzE5NCwgNjMxOTksIDYzMjA0LCA2MzIwOSwgNjMyMTQsIDYzMjE5LCA2MzIyNCwgNjMyMzAsIDYzMjM4LCA2MzI0MCwgCi0gICAgNjMyNDMsIDYzMjQ2LCA2MzI0OSwgNjMyNTIsIDYzMjU4LCA2MzI2NiwgNjMyNjksIDYzMjcyLCA2MzI3NywgNjMyODAsIAotICAgIDYzMjgzLCA2MzI4NiwgNjMyOTEsIDYzMjk0LCA2MzI5NywgNjMzMDIsIDYzMzA1LCA2MzMwOCwgNjMzMTMsIDYzMzE2LCAKLSAgICA2MzMxOSwgNjMzMjQsIDYzMzI5LCA2MzMzNCwgNjMzMzcsIDYzMzQwLCA2MzM0MywgNjMzNDYsIDYzMzUyLCA2MzM1NSwgCi0gICAgNjMzNTgsIDYzMzYxLCA2MzM2MywgNjMzNjYsIDYzMzY5LCA2MzM3MiwgNjMzNzcsIDYzMzgwLCA2MzM4MywgNjMzODYsIAotICAgIDYzMzg5LCA2MzM5MiwgNjMzOTcsIDYzNDAwLCA2MzQwMywgNjM0MDYsIDYzNDA5LCA2MzQxMiwgNjM0MTUsIDYzNDE4LCAKLSAgICA2MzQyMSwgNjM0MjQsIDYzNDI5LCA2MzQzMywgNjM0NDEsIDYzNDQ5LCA2MzQ1NywgNjM0NjUsIDYzNDczLCA2MzQ4MSwgCi0gICAgNjM0ODksIDYzNDk3LCA2MzUwNSwgNjM1MTQsIDYzNTIzLCA2MzUzMiwgNjM1NDEsIDYzNTUwLCA2MzU1OSwgNjM1NjgsIAotICAgIDYzNTc3LCA2MzU4NiwgNjM1OTUsIDYzNjA0LCA2MzYxMywgNjM2MjIsIDYzNjMxLCA2MzY0MCwgNjM2NDksIDYzNjU4LCAKLSAgICA2MzY2NywgNjM2NzYsIDYzNjg1LCA2MzY5NCwgNjM3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDg2NzEzLCA4NjcyOCwgODY3NDMsIDg2NzQ5LCA4Njc1NSwgODY3NjEsIDg2NzY3LCA4Njc3MywgODY3NzksIDg2Nzg1LCAKKyAgICA4Njc5MSwgODY3OTksIDg2ODAzLCA4NjgwNiwgMCwgMCwgODY4MTQsIDg2ODE3LCA4NjgyMCwgODY4MjMsIDg2ODI2LCAKKyAgICA4NjgyOSwgODY4MzIsIDg2ODM1LCA4NjgzOCwgODY4NDEsIDg2ODQ0LCA4Njg0NywgODY4NTAsIDg2ODUzLCA4Njg1NiwgCisgICAgODY4NTksIDg2ODYyLCA4Njg3MCwgODY4NzksIDg2ODkwLCA4Njg5OCwgODY5MDYsIDg2OTE1LCA4NjkyNCwgODY5MzUsIAorICAgIDg2OTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk1NiwgODY5NjEsIDg2OTY2LCA4Njk3MywgODY5ODAsIDg2OTg2LCA4Njk5MiwgCisgICAgODY5OTcsIDg3MDAyLCA4NzAwNywgODcwMTMsIDg3MDE5LCA4NzAyNSwgODcwMzEsIDAsIDAsIDg3MDM3LCA4NzA0NywgCisgICAgODcwNTcsIDg3MDY3LCA4NzA3NiwgODcwODcsIDg3MDk2LCA4NzEwNSwgODcxMTUsIDg3MTI1LCA4NzEzNywgODcxNDksIAorICAgIDg3MTYwLCA4NzE3MSwgODcxODIsIDg3MTkzLCA4NzIwMywgODcyMTMsIDg3MjIzLCA4NzIzMywgODcyNDQsIDg3MjU1LCAKKyAgICA4NzI1OSwgODcyNjQsIDg3MjczLCA4NzI4MiwgODcyODYsIDg3MjkwLCA4NzI5NCwgODcyOTksIDg3MzA0LCA4NzMwOSwgCisgICAgODczMTQsIDg3MzE3LCA4NzMyMSwgMCwgODczMjYsIDg3MzI5LCA4NzMzMiwgODczMzYsIDg3MzQwLCA4NzM0NSwgODczNDksIAorICAgIDg3MzUzLCA4NzM1OCwgODczNjMsIDg3MzcwLCA4NzM3NywgODczODAsIDg3MzgzLCA4NzM4NiwgODczODksIDg3MzkyLCAKKyAgICA4NzM5NiwgODc0MDAsIDAsIDg3NDA0LCA4NzQwOSwgODc0MTMsIDg3NDE3LCAwLCAwLCAwLCAwLCA4NzQyMiwgODc0MjcsIAorICAgIDg3NDM0LCA4NzQzOSwgODc0NDQsIDAsIDg3NDQ5LCA4NzQ1NCwgODc0NTksIDg3NDY0LCA4NzQ2OSwgODc0NzQsIDg3NDc5LCAKKyAgICA4NzQ4NCwgODc0ODksIDg3NDk0LCA4NzQ5OSwgODc1MDUsIDg3NTE0LCA4NzUyMywgODc1MzIsIDg3NTQxLCA4NzU1MSwgCisgICAgODc1NjEsIDg3NTcxLCA4NzU4MSwgODc1OTAsIDg3NTk5LCA4NzYwOCwgODc2MTcsIDg3NjIyLCA4NzYyNywgODc2MzMsIAorICAgIDg3NjM5LCA4NzY0NSwgODc2NTEsIDg3NjU5LCA4NzY2NywgODc2NzMsIDg3Njc5LCA4NzY4NSwgODc2OTEsIDg3Njk3LCAKKyAgICA4NzcwMywgODc3MDksIDg3NzE1LCA4NzcyMCwgODc3MjUsIDg3NzMwLCA4NzczNSwgODc3NDAsIDg3NzQ1LCA4Nzc1MCwgCisgICAgODc3NTUsIDg3NzYxLCA4Nzc2NywgODc3NzMsIDg3Nzc5LCA4Nzc4NSwgODc3OTEsIDg3Nzk3LCA4NzgwMywgODc4MDksIAorICAgIDg3ODE1LCA4NzgyMSwgODc4MjcsIDg3ODMzLCA4NzgzOSwgODc4NDUsIDg3ODUxLCA4Nzg1NywgODc4NjMsIDg3ODY5LCAKKyAgICA4Nzg3NSwgODc4ODEsIDg3ODg3LCA4Nzg5MywgODc4OTksIDg3OTA1LCA4NzkxMSwgODc5MTcsIDg3OTIzLCA4NzkyOSwgCisgICAgODc5MzUsIDg3OTQxLCA4Nzk0NywgODc5NTMsIDg3OTU5LCA4Nzk2NSwgODc5NzEsIDg3OTc3LCA4Nzk4MywgODc5ODksIAorICAgIDg3OTk1LCA4ODAwMSwgODgwMDcsIDg4MDEzLCA4ODAxOSwgODgwMjUsIDg4MDMxLCA4ODAzNywgODgwNDMsIDg4MDQ5LCAKKyAgICA4ODA1NSwgODgwNjEsIDg4MDY3LCA4ODA3MywgODgwNzksIDg4MDg1LCA4ODA5MSwgODgwOTcsIDg4MTAzLCA4ODEwOSwgCisgICAgODgxMTUsIDg4MTIwLCA4ODEyNSwgODgxMzAsIDg4MTM1LCA4ODE0MSwgODgxNDcsIDg4MTUzLCA4ODE1OSwgODgxNjUsIAorICAgIDg4MTcxLCA4ODE3NywgODgxODMsIDg4MTg5LCA4ODE5NSwgODgyMDIsIDg4MjA5LCA4ODIxNCwgODgyMTksIDg4MjI0LCAKKyAgICA4ODIyOSwgODgyNDEsIDg4MjUzLCA4ODI2NSwgODgyNzcsIDg4MjkwLCA4ODMwMywgODgzMTEsIDAsIDAsIDg4MzE5LCAwLCAKKyAgICA4ODMyNywgODgzMzEsIDg4MzM1LCA4ODMzOCwgODgzNDIsIDg4MzQ2LCA4ODM0OSwgODgzNTIsIDg4MzU2LCA4ODM2MCwgCisgICAgODgzNjMsIDg4MzY2LCA4ODM2OSwgODgzNzIsIDg4Mzc3LCA4ODM4MCwgODgzODQsIDg4Mzg3LCA4ODM5MCwgODgzOTMsIAorICAgIDg4Mzk2LCA4ODM5OSwgODg0MDIsIDg4NDA1LCA4ODQwOCwgODg0MTEsIDg4NDE0LCA4ODQxNywgODg0MjEsIDg4NDI1LCAKKyAgICA4ODQyOSwgODg0MzMsIDg4NDM4LCA4ODQ0MywgODg0NDksIDg4NDU1LCA4ODQ2MSwgODg0NjYsIDg4NDcyLCA4ODQ3OCwgCisgICAgODg0ODQsIDg4NDg5LCA4ODQ5NSwgODg1MDEsIDg4NTA2LCA4ODUxMiwgODg1MTgsIDg4NTIzLCA4ODUyOSwgODg1MzUsIAorICAgIDg4NTQwLCA4ODU0NSwgODg1NTEsIDg4NTU2LCA4ODU2MiwgODg1NjgsIDg4NTc0LCA4ODU4MCwgODg1ODYsIDg4NTkwLCAKKyAgICA4ODU5NSwgODg1OTksIDg4NjA0LCA4ODYwOCwgODg2MTMsIDg4NjE4LCA4ODYyNCwgODg2MzAsIDg4NjM2LCA4ODY0MSwgCisgICAgODg2NDcsIDg4NjUzLCA4ODY1OSwgODg2NjQsIDg4NjcwLCA4ODY3NiwgODg2ODEsIDg4Njg3LCA4ODY5MywgODg2OTgsIAorICAgIDg4NzA0LCA4ODcxMCwgODg3MTUsIDg4NzIwLCA4ODcyNiwgODg3MzEsIDg4NzM3LCA4ODc0MywgODg3NDksIDg4NzU1LCAKKyAgICA4ODc2MSwgODg3NjYsIDg4NzcwLCA4ODc3NSwgODg3NzgsIDg4NzgzLCA4ODc4OCwgODg3OTQsIDg4Nzk5LCA4ODgwNCwgCisgICAgODg4MDgsIDg4ODE0LCA4ODgxOSwgODg4MjQsIDg4ODI5LCA4ODgzNCwgODg4MzksIDg4ODQ0LCA4ODg0OSwgODg4NTUsIAorICAgIDg4ODYxLCA4ODg2NywgODg4NzUsIDg4ODc5LCA4ODg4MywgODg4ODcsIDg4ODkxLCA4ODg5NSwgODg4OTksIDg4OTA0LCAKKyAgICA4ODkwOSwgODg5MTQsIDg4OTE5LCA4ODkyNCwgODg5MjksIDg4OTM0LCA4ODkzOSwgODg5NDQsIDg4OTQ5LCA4ODk1NCwgCisgICAgODg5NTksIDg4OTY0LCA4ODk2OCwgODg5NzIsIDg4OTc3LCA4ODk4MiwgODg5ODcsIDg4OTkyLCA4ODk5NiwgODkwMDEsIAorICAgIDg5MDA2LCA4OTAxMSwgODkwMTYsIDg5MDIwLCA4OTAyNSwgODkwMzAsIDg5MDM1LCA4OTA0MCwgODkwNDQsIDg5MDQ5LCAKKyAgICA4OTA1NCwgODkwNTksIDg5MDY0LCA4OTA2OSwgODkwNzQsIDg5MDc5LCA4OTA4NCwgODkwODksIDg5MDk2LCA4OTEwMywgCisgICAgODkxMDcsIDg5MTEyLCA4OTExNywgODkxMjIsIDg5MTI3LCA4OTEzMiwgODkxMzcsIDg5MTQyLCA4OTE0NywgODkxNTIsIAorICAgIDg5MTU3LCA4OTE2MiwgODkxNjcsIDg5MTcyLCA4OTE3NywgODkxODIsIDg5MTg3LCA4OTE5MiwgODkxOTcsIDg5MjAyLCAKKyAgICA4OTIwNywgODkyMTIsIDg5MjE3LCA4OTIyMiwgODkyMjcsIDg5MjMyLCA4OTIzNywgODkyNDIsIDg5MjQ3LCA4OTI1MiwgMCwgCisgICAgMCwgMCwgODkyNTcsIDg5MjYxLCA4OTI2NiwgODkyNzAsIDg5Mjc1LCA4OTI4MCwgMCwgMCwgODkyODQsIDg5Mjg5LCAKKyAgICA4OTI5NCwgODkyOTgsIDg5MzAzLCA4OTMwOCwgMCwgMCwgODkzMTMsIDg5MzE4LCA4OTMyMiwgODkzMjcsIDg5MzMyLCAKKyAgICA4OTMzNywgMCwgMCwgODkzNDIsIDg5MzQ3LCA4OTM1MiwgMCwgMCwgMCwgODkzNTYsIDg5MzYwLCA4OTM2NCwgODkzNjgsIAorICAgIDg5MzcxLCA4OTM3NSwgODkzNzksIDAsIDg5MzgzLCA4OTM4OSwgODkzOTIsIDg5Mzk1LCA4OTM5OCwgODk0MDEsIDg5NDA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTQwOSwgODk0MTUsIDg5NDIxLCA4OTQyNywgODk0MzMsIDAsIDAsIAorICAgIDg5NDM3LCA4OTQ0MywgODk0NDksIDg5NDU1LCA4OTQ2MSwgODk0NjcsIDg5NDc0LCA4OTQ4MSwgODk0ODgsIDg5NDk1LCAKKyAgICA4OTUwMiwgODk1MDksIDAsIDg5NTE2LCA4OTUyMywgODk1MzAsIDg5NTM2LCA4OTU0MywgODk1NTAsIDg5NTU3LCA4OTU2NCwgCisgICAgODk1NzAsIDg5NTc3LCA4OTU4NCwgODk1OTEsIDg5NTk4LCA4OTYwNCwgODk2MTEsIDg5NjE4LCA4OTYyNSwgODk2MzIsIAorICAgIDg5NjM4LCA4OTY0NSwgODk2NTIsIDg5NjU5LCA4OTY2NiwgODk2NzMsIDg5NjgwLCA4OTY4NywgMCwgODk2OTQsIDg5NzAxLCAKKyAgICA4OTcwOCwgODk3MTUsIDg5NzIyLCA4OTcyOSwgODk3MzYsIDg5NzQzLCA4OTc1MCwgODk3NTcsIDg5NzY0LCA4OTc3MSwgCisgICAgODk3NzgsIDg5Nzg1LCA4OTc5MSwgODk3OTgsIDg5ODA1LCA4OTgxMiwgODk4MTksIDAsIDg5ODI2LCA4OTgzMywgMCwgCisgICAgODk4NDAsIDg5ODQ3LCA4OTg1NCwgODk4NjEsIDg5ODY4LCA4OTg3NSwgODk4ODIsIDg5ODg5LCA4OTg5NiwgODk5MDMsIAorICAgIDg5OTEwLCA4OTkxNywgODk5MjQsIDg5OTMxLCA4OTkzOCwgMCwgMCwgODk5NDQsIDg5OTQ5LCA4OTk1NCwgODk5NTksIAorICAgIDg5OTY0LCA4OTk2OSwgODk5NzQsIDg5OTc5LCA4OTk4NCwgODk5ODksIDg5OTk0LCA4OTk5OSwgOTAwMDQsIDkwMDA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDAxNCwgOTAwMjEsIDkwMDI4LCA5MDAzNSwgOTAwNDIsIDkwMDQ5LCAKKyAgICA5MDA1NiwgOTAwNjMsIDkwMDcwLCA5MDA3NywgOTAwODQsIDkwMDkxLCA5MDA5OCwgOTAxMDUsIDkwMTEyLCA5MDExOSwgCisgICAgOTAxMjYsIDkwMTMzLCA5MDE0MCwgOTAxNDcsIDkwMTU1LCA5MDE2MywgOTAxNzAsIDkwMTc3LCA5MDE4MiwgOTAxOTAsIAorICAgIDkwMTk4LCA5MDIwNSwgOTAyMTIsIDkwMjE3LCA5MDIyNCwgOTAyMjksIDkwMjM0LCA5MDI0MSwgOTAyNDYsIDkwMjUxLCAKKyAgICA5MDI1NiwgOTAyNjQsIDkwMjY5LCA5MDI3NCwgOTAyODEsIDkwMjg2LCA5MDI5MSwgOTAyOTgsIDkwMzA1LCA5MDMxMCwgCisgICAgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgOTAzNDUsIDkwMzUwLCA5MDM1NywgOTAzNjIsIAorICAgIDkwMzY5LCA5MDM3NCwgOTAzNzksIDkwMzg0LCA5MDM4OSwgOTAzOTQsIDkwMzk5LCA5MDQwNCwgOTA0MDksIDkwNDE0LCAKKyAgICA5MDQxOSwgOTA0MjQsIDkwNDMxLCA5MDQzOCwgOTA0NDUsIDkwNDUyLCA5MDQ1OCwgOTA0NjMsIDkwNDcwLCA5MDQ3NSwgCisgICAgOTA0ODAsIDkwNDg5LCA5MDQ5NiwgOTA1MDUsIDkwNTEyLCA5MDUxNywgOTA1MjIsIDkwNTMwLCA5MDUzNSwgOTA1NDAsIAorICAgIDkwNTQ1LCA5MDU1MCwgOTA1NTUsIDkwNTYyLCA5MDU2NywgOTA1NzIsIDkwNTc3LCA5MDU4MiwgOTA1ODcsIDkwNTk0LCAKKyAgICA5MDYwMSwgOTA2MDgsIDkwNjE1LCA5MDYyMiwgOTA2MjksIDkwNjM2LCA5MDY0MywgOTA2NTAsIDkwNjU3LCA5MDY2NCwgCisgICAgOTA2NzEsIDkwNjc4LCA5MDY4NSwgOTA2OTIsIDkwNjk5LCA5MDcwNiwgOTA3MTMsIDkwNzIwLCA5MDcyNywgOTA3MzQsIAorICAgIDkwNzQxLCA5MDc0OCwgOTA3NTUsIDkwNzYyLCA5MDc2OSwgOTA3NzYsIDkwNzgzLCAwLCAwLCAwLCAwLCAwLCA5MDc5MCwgCisgICAgOTA3OTgsIDkwODA2LCAwLCAwLCAwLCAwLCA5MDgxMSwgOTA4MTUsIDkwODE5LCA5MDgyMywgOTA4MjcsIDkwODMxLCAKKyAgICA5MDgzNSwgOTA4MzksIDkwODQzLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MiwgOTA4NjcsIDkwODcyLCA5MDg3NywgCisgICAgOTA4ODIsIDkwODg3LCA5MDg5MiwgOTA4OTgsIDkwOTA0LCA5MDkxMCwgOTA5MTcsIDkwOTI0LCA5MDkzMSwgOTA5MzgsIAorICAgIDkwOTQ1LCA5MDk1MiwgOTA5NTgsIDkwOTY0LCA5MDk3MCwgOTA5NzcsIDkwOTg0LCA5MDk5MSwgOTA5OTgsIDkxMDA1LCAKKyAgICA5MTAxMiwgOTEwMTksIDkxMDI2LCA5MTAzMywgOTEwNDAsIDkxMDQ3LCA5MTA1NCwgOTEwNjEsIDkxMDY4LCAwLCAwLCAwLCAKKyAgICA5MTA3NSwgOTEwODMsIDkxMDkxLCA5MTA5OSwgOTExMDcsIDkxMTE1LCA5MTEyNSwgOTExMzUsIDkxMTQzLCA5MTE1MSwgCisgICAgOTExNTksIDkxMTY3LCA5MTE3NSwgOTExODEsIDkxMTg4LCA5MTE5NywgOTEyMDYsIDkxMjE1LCA5MTIyNCwgOTEyMzMsIAorICAgIDkxMjQyLCA5MTI1MiwgOTEyNjMsIDkxMjczLCA5MTI4NCwgOTEyOTMsIDkxMzAyLCA5MTMxMSwgOTEzMjEsIDkxMzMyLCAKKyAgICA5MTM0MiwgOTEzNTMsIDkxMzY0LCA5MTM3MywgOTEzODEsIDkxMzg3LCA5MTM5MywgOTEzOTksIDkxNDA1LCA5MTQxMywgCisgICAgOTE0MjEsIDkxNDI3LCA5MTQzNCwgOTE0NDQsIDkxNDUxLCA5MTQ1OCwgOTE0NjUsIDkxNDcyLCA5MTQ3OSwgOTE0ODksIAorICAgIDkxNDk2LCA5MTUwMywgOTE1MTEsIDkxNTE5LCA5MTUyOCwgOTE1MzcsIDkxNTQ2LCA5MTU1NSwgOTE1NjQsIDkxNTcyLCAKKyAgICA5MTU4MSwgOTE1OTAsIDkxNTk5LCA5MTYwMywgOTE2MTAsIDkxNjE1LCA5MTYyMCwgOTE2MjQsIDkxNjI4LCA5MTYzMiwgCisgICAgOTE2MzYsIDkxNjQxLCA5MTY0NiwgOTE2NTIsIDkxNjU4LCA5MTY2MiwgOTE2NjgsIDkxNjcyLCA5MTY3NiwgOTE2ODAsIAorICAgIDkxNjg0LCA5MTY4OCwgOTE2OTIsIDkxNjk4LCA5MTcwMiwgOTE3MDcsIDAsIDAsIDAsIDkxNzExLCA5MTcxNiwgOTE3MjEsIAorICAgIDkxNzI2LCA5MTczMSwgOTE3MzgsIDkxNzQzLCA5MTc0OCwgOTE3NTMsIDkxNzU4LCA5MTc2MywgOTE3NjgsIDAsIDAsIDAsIAorICAgIDAsIDkxNzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA2MzcwNiwgNjM3MTUsIDYzNzI0LCA2MzczNSwgNjM3NDIsIDYzNzQ3LCA2Mzc1MiwgNjM3NTksIDYzNzY2LCAKLSAgICA2Mzc3MiwgNjM3NzcsIDYzNzgyLCA2Mzc4NywgNjM3OTIsIDYzNzk5LCA2MzgwNCwgNjM4MDksIDYzODE0LCA2MzgyNSwgCi0gICAgNjM4MzAsIDYzODM1LCA2Mzg0MiwgNjM4NDcsIDYzODU0LCA2Mzg1OSwgNjM4NjQsIDYzODcxLCA2Mzg3OCwgNjM4ODUsIAotICAgIDYzODk0LCA2MzkwMywgNjM5MDgsIDYzOTEzLCA2MzkxOCwgNjM5MjUsIDYzOTMwLCA2Mzk0MCwgNjM5NDcsIDYzOTUyLCAKLSAgICA2Mzk1NywgNjM5NjIsIDYzOTY3LCA2Mzk3MiwgNjM5NzcsIDYzOTg2LCA2Mzk5MywgNjQwMDAsIDY0MDA1LCA2NDAxMiwgCi0gICAgNjQwMTcsIDY0MDI0LCA2NDAzMywgNjQwNDQsIDY0MDQ5LCA2NDA1OCwgNjQwNjMsIDY0MDcwLCA2NDA3OSwgNjQwODgsIAotICAgIDY0MDkzLCA2NDA5OCwgNjQxMDUsIDY0MTExLCA2NDExOCwgNjQxMjUsIDY0MTI5LCA2NDEzMywgNjQxMzYsIDY0MTQwLCAKLSAgICA2NDE0NCwgNjQxNDgsIDY0MTUyLCA2NDE1NiwgNjQxNjAsIDY0MTY0LCA2NDE2NywgNjQxNzEsIDY0MTc1LCA2NDE3OSwgCi0gICAgNjQxODMsIDY0MTg3LCA2NDE5MSwgNjQxOTQsIDY0MTk4LCA2NDIwMiwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTcsIAotICAgIDY0MjIxLCA2NDIyNSwgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgNjQyNTMsIDY0MjU3LCAKLSAgICA2NDI2MSwgNjQyNjUsIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIDY0MjkzLCA2NDI5NywgCi0gICAgNjQzMDEsIDY0MzA1LCA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCA2NDMzMywgNjQzMzcsIAotICAgIDY0MzQxLCA2NDM0NSwgNjQzNDksIDY0MzUzLCA2NDM1NywgNjQzNjEsIDY0MzY1LCA2NDM2OSwgNjQzNzMsIDY0Mzc3LCAKLSAgICA2NDM4MSwgNjQzODQsIDY0Mzg4LCA2NDM5MiwgNjQzOTYsIDY0NDAwLCA2NDQwNCwgNjQ0MDgsIDY0NDEyLCA2NDQxNiwgCi0gICAgNjQ0MjAsIDY0NDI0LCA2NDQyOCwgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCA2NDQ1MiwgNjQ0NTYsIAotICAgIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgNjQ0OTIsIDY0NDk2LCAKLSAgICA2NDUwMCwgNjQ1MDQsIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIDY0NTMyLCA2NDUzNiwgCi0gICAgNjQ1NDAsIDY0NTQ0LCA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCA2NDU3MiwgNjQ1NzYsIAotICAgIDY0NTgwLCA2NDU4NCwgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgNjQ2MTIsIDY0NjE2LCAKLSAgICA2NDYyMCwgNjQ2MjQsIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIDY0NjUyLCA2NDY1NiwgCi0gICAgNjQ2NjAsIDY0NjY0LCA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCA2NDY5MiwgNjQ2OTYsIAotICAgIDY0NzAwLCA2NDcwNCwgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgNjQ3MzIsIDY0NzM2LCAKLSAgICA2NDc0MCwgNjQ3NDQsIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIDY0NzcyLCA2NDc3NiwgCi0gICAgNjQ3ODAsIDY0Nzg0LCA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCA2NDgxMiwgNjQ4MTYsIAotICAgIDY0ODIwLCA2NDgyNCwgNjQ4MjgsIDY0ODMyLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgNjQ4NTIsIDY0ODU1LCAKLSAgICA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIDY0ODkxLCA2NDg5NSwgCi0gICAgNjQ4OTksIDY0OTAzLCA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCA2NDkzMSwgNjQ5MzUsIAotICAgIDY0OTM5LCA2NDk0MywgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgNjQ5NzEsIDY0OTc1LCAKLSAgICA2NDk3OSwgNjQ5ODMsIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIDY1MDExLCA2NTAxNSwgCi0gICAgNjUwMTksIDY1MDIzLCA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCA2NTA1MSwgNjUwNTUsIAotICAgIDY1MDU5LCA2NTA2MywgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgNjUwOTEsIDY1MDk1LCAKLSAgICA2NTA5OSwgNjUxMDMsIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIDY1MTMxLCA2NTEzNSwgCi0gICAgNjUxMzksIDY1MTQzLCA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCA2NTE3MSwgNjUxNzUsIAotICAgIDY1MTc5LCA2NTE4MywgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTEsIDY1MjE1LCAKLSAgICA2NTIxOSwgNjUyMjMsIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIDY1MjUxLCA2NTI1NSwgCi0gICAgNjUyNTksIDY1MjYzLCA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCA2NTI5MSwgNjUyOTUsIAotICAgIDY1Mjk5LCA2NTMwMywgNjUzMDcsIDY1MzExLCA2NTMxNSwgNjUzMTgsIDY1MzIyLCA2NTMyNiwgNjUzMzAsIDY1MzM0LCAKLSAgICA2NTMzOCwgNjUzNDIsIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIDY1MzcwLCA2NTM3NCwgCi0gICAgNjUzNzgsIDY1MzgyLCA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCA2NTQxMCwgNjU0MTQsIAotICAgIDY1NDE4LCA2NTQyMiwgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgNjU0NTAsIDY1NDU0LCAKLSAgICA2NTQ1OCwgNjU0NjIsIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIDY1NDkwLCA2NTQ5NCwgCi0gICAgNjU0OTgsIDY1NTAyLCA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCA2NTUzMCwgNjU1MzQsIAotICAgIDY1NTM4LCA2NTU0MiwgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgNjU1NzAsIDY1NTc0LCAKLSAgICA2NTU3OCwgNjU1ODIsIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIDY1NjEwLCA2NTYxNCwgCi0gICAgNjU2MTgsIDY1NjIyLCA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIAotICAgIDY1NjU4LCA2NTY2MiwgNjU2NjYsIDY1NjcwLCA2NTY3NCwgNjU2NzcsIDY1NjgxLCA2NTY4NSwgNjU2ODksIDY1NjkzLCAKLSAgICA2NTY5NywgNjU3MDEsIDY1NzA1LCA2NTcwOSwgNjU3MTMsIDY1NzE3LCA2NTcyMSwgNjU3MjUsIDY1NzI5LCA2NTczMywgCi0gICAgNjU3MzcsIDY1NzQxLCA2NTc0NSwgNjU3NDksIDY1NzUzLCA2NTc1NywgNjU3NjEsIDY1NzY1LCA2NTc2OSwgNjU3NzMsIAotICAgIDY1Nzc3LCA2NTc4MSwgNjU3ODUsIDY1Nzg5LCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgNjU4MDksIDY1ODEzLCAKLSAgICA2NTgxNywgNjU4MjEsIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIDY1ODQ5LCA2NTg1MywgCi0gICAgNjU4NTcsIDY1ODYxLCA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCA2NTg4OSwgNjU4OTMsIAotICAgIDY1ODk3LCA2NTkwMSwgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgNjU5MjksIDY1OTMzLCAKLSAgICA2NTkzNywgNjU5NDEsIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIDY1OTY5LCA2NTk3MywgCi0gICAgNjU5NzcsIDY1OTgxLCA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCA2NjAwOSwgNjYwMTMsIAotICAgIDY2MDE3LCA2NjAyMSwgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgNjYwNDksIDY2MDUzLCAKLSAgICA2NjA1NywgNjYwNjEsIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIDY2MDg5LCA2NjA5MywgCi0gICAgNjYwOTcsIDY2MTAxLCA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIAotICAgIDY2MTM3LCA2NjE0MSwgNjYxNDUsIDY2MTQ5LCA2NjE1MywgNjYxNTcsIDY2MTYxLCA2NjE2NSwgNjYxNjksIDY2MTcyLCAKLSAgICA2NjE3NiwgNjYxODAsIDY2MTg0LCA2NjE4OCwgNjYxOTIsIDY2MTk2LCA2NjIwMCwgNjYyMDQsIDY2MjA4LCA2NjIxMiwgCi0gICAgNjYyMTYsIDY2MjIwLCA2NjIyNCwgNjYyMjgsIDY2MjMyLCA2NjIzNiwgNjYyNDAsIDY2MjQ0LCA2NjI0OCwgNjYyNTIsIAotICAgIDY2MjU2LCA2NjI2MCwgNjYyNjQsIDY2MjY4LCA2NjI3MiwgNjYyNzYsIDY2MjgwLCA2NjI4NCwgNjYyODgsIDY2MjkyLCAKLSAgICA2NjI5NiwgNjYzMDAsIDY2MzA0LCA2NjMwOCwgNjYzMTIsIDY2MzE2LCA2NjMyMCwgNjYzMjQsIDY2MzI4LCA2NjMzMiwgCi0gICAgNjYzMzYsIDY2MzQwLCA2NjM0NCwgNjYzNDgsIDY2MzUyLCA2NjM1NiwgNjYzNjAsIDY2MzY0LCA2NjM2OCwgNjYzNzIsIAotICAgIDY2Mzc2LCA2NjM4MCwgNjYzODQsIDY2Mzg4LCA2NjM5MiwgNjYzOTYsIDY2NDAwLCA2NjQwNCwgNjY0MDgsIDY2NDEyLCAKLSAgICA2NjQxNiwgNjY0MjAsIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIDY2NDQ4LCA2NjQ1MiwgCi0gICAgNjY0NTYsIDY2NDYwLCA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCA2NjQ4OCwgNjY0OTIsIAotICAgIDY2NDk2LCA2NjUwMCwgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgNjY1MjgsIDY2NTMyLCAKLSAgICA2NjUzNiwgNjY1NDAsIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIDY2NTY4LCA2NjU3MiwgCi0gICAgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY2MDAsIDY2NjA0LCA2NjYwOCwgNjY2MTIsIAotICAgIDY2NjE2LCA2NjYyMCwgNjY2MjQsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgNjY2NDcsIDY2NjUxLCAKLSAgICA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIDY2Njg3LCA2NjY5MSwgCi0gICAgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCA2NjcyNywgNjY3MzEsIAotICAgIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgNjY3NjcsIDY2NzcxLCAKLSAgICA2Njc3NSwgNjY3NzksIDY2NzgzLCA2Njc4NywgNjY3OTEsIDY2Nzk1LCA2Njc5OSwgNjY4MDMsIDY2ODA3LCA2NjgxMSwgCi0gICAgNjY4MTUsIDY2ODE5LCA2NjgyMywgNjY4MjcsIDY2ODMxLCA2NjgzNSwgNjY4MzksIDY2ODQzLCA2Njg0NywgNjY4NTEsIAotICAgIDY2ODU1LCA2Njg1OSwgNjY4NjMsIDY2ODY3LCA2Njg3MSwgNjY4NzUsIDY2ODc5LCA2Njg4MywgNjY4ODcsIDY2ODkxLCAKLSAgICA2Njg5NSwgNjY4OTksIDY2OTAzLCA2NjkwNywgNjY5MTEsIDY2OTE1LCA2NjkxOSwgNjY5MjMsIDY2OTI3LCA2NjkzMSwgCi0gICAgNjY5MzUsIDY2OTM5LCA2Njk0MywgNjY5NDcsIDY2OTUxLCA2Njk1NSwgNjY5NTksIDY2OTYzLCA2Njk2NywgNjY5NzEsIAotICAgIDY2OTc1LCA2Njk3OSwgNjY5ODMsIDY2OTg3LCA2Njk5MSwgNjY5OTUsIDY2OTk5LCA2NzAwMywgNjcwMDcsIDY3MDExLCAKLSAgICA2NzAxNSwgNjcwMTksIDY3MDIzLCA2NzAyNywgNjcwMzEsIDY3MDM1LCA2NzAzOSwgNjcwNDMsIDY3MDQ3LCA2NzA1MSwgCi0gICAgNjcwNTUsIDY3MDU5LCA2NzA2MywgNjcwNjcsIDY3MDcxLCA2NzA3NSwgNjcwNzksIDY3MDgzLCA2NzA4NywgNjcwOTEsIAotICAgIDY3MDk1LCA2NzA5OSwgNjcxMDMsIDY3MTA3LCA2NzExMSwgNjcxMTUsIDY3MTE5LCA2NzEyMywgNjcxMjcsIDY3MTMxLCAKLSAgICA2NzEzNSwgNjcxMzksIDY3MTQzLCA2NzE0NywgNjcxNTEsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIDY3MTY3LCA2NzE3MSwgCi0gICAgNjcxNzUsIDY3MTc5LCA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAzLCA2NzIwNywgNjcyMTEsIAotICAgIDY3MjE1LCA2NzIxOSwgNjcyMjMsIDY3MjI3LCA2NzIzMCwgNjcyMzQsIDY3MjM4LCA2NzI0MiwgNjcyNDYsIDY3MjUwLCAKLSAgICA2NzI1NCwgNjcyNTgsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIDY3Mjg1LCA2NzI4OSwgCi0gICAgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCA2NzMyNSwgNjczMjksIAotICAgIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgNjczNjUsIDY3MzY5LCAKLSAgICA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIDY3NDA1LCA2NzQwOSwgCi0gICAgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCA2NzQ0NSwgNjc0NDksIAotICAgIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgNjc0ODUsIDY3NDg5LCAKLSAgICA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIDY3NTI1LCA2NzUyOSwgCi0gICAgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCA2NzU2NSwgNjc1NjksIAotICAgIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgNjc2MDUsIDY3NjA5LCAKLSAgICA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIDY3NjQ1LCA2NzY0OSwgCi0gICAgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCA2NzY4NSwgNjc2ODksIAotICAgIDY3NjkzLCA2NzY5NywgNjc3MDEsIDY3NzA1LCA2NzcwOSwgNjc3MTMsIDY3NzE3LCA2NzcyMSwgNjc3MjUsIDY3NzI5LCAKLSAgICA2NzczMywgNjc3MzcsIDY3NzQxLCA2Nzc0NSwgNjc3NDksIDY3NzUzLCA2Nzc1NywgNjc3NjEsIDY3NzY1LCA2Nzc2OSwgCi0gICAgNjc3NzMsIDY3Nzc3LCA2Nzc4MSwgNjc3ODUsIDY3Nzg5LCA2Nzc5MywgNjc3OTcsIDY3ODAxLCA2NzgwNSwgNjc4MDksIAotICAgIDY3ODEzLCA2NzgxNywgNjc4MjEsIDY3ODI1LCA2NzgyOSwgNjc4MzMsIDY3ODM3LCA2Nzg0MSwgNjc4NDUsIDY3ODQ5LCAKLSAgICA2Nzg1MywgNjc4NTcsIDY3ODYxLCA2Nzg2NSwgNjc4NjksIDY3ODczLCA2Nzg3NywgNjc4ODEsIDY3ODg1LCA2Nzg4OSwgCi0gICAgNjc4OTMsIDY3ODk3LCA2NzkwMSwgNjc5MDUsIDY3OTA5LCA2NzkxMywgNjc5MTcsIDY3OTIxLCA2NzkyNSwgNjc5MjksIAotICAgIDY3OTMzLCA2NzkzNywgNjc5NDEsIDY3OTQ1LCA2Nzk0OSwgNjc5NTMsIDY3OTU3LCA2Nzk2MSwgNjc5NjUsIDY3OTY5LCAKLSAgICA2Nzk3MywgNjc5NzcsIDY3OTgxLCA2Nzk4NSwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIDY4MDA0LCA2ODAwOCwgCi0gICAgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCA2ODA0NCwgNjgwNDgsIAotICAgIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgNjgwODQsIDY4MDg4LCAKLSAgICA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIDY4MTI0LCA2ODEyOCwgCi0gICAgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCA2ODE2NCwgNjgxNjgsIAotICAgIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgNjgyMDQsIDY4MjA4LCAKLSAgICA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIDY4MjQ0LCA2ODI0OCwgCi0gICAgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCA2ODI4NCwgNjgyODgsIAotICAgIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgNjgzMjQsIDY4MzI4LCAKLSAgICA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIDY4MzY0LCA2ODM2OCwgCi0gICAgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCA2ODQwNCwgNjg0MDgsIAotICAgIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgNjg0NDQsIDY4NDQ4LCAKLSAgICA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIDY4NDg0LCA2ODQ4OCwgCi0gICAgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCA2ODUyNCwgNjg1MjgsIAotICAgIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU2LCA2ODU2MCwgNjg1NjQsIDY4NTY4LCAKLSAgICA2ODU3MiwgNjg1NzYsIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIDY4NjA0LCA2ODYwOCwgCi0gICAgNjg2MTIsIDY4NjE2LCA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCA2ODY0NCwgNjg2NDgsIAotICAgIDY4NjUyLCA2ODY1NiwgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgNjg2ODQsIDY4Njg4LCAKLSAgICA2ODY5MiwgNjg2OTYsIDY4NzAwLCA2ODcwNCwgNjg3MDgsIDY4NzEyLCA2ODcxNiwgNjg3MjAsIDY4NzI0LCA2ODcyOCwgCi0gICAgNjg3MzIsIDY4NzM2LCA2ODc0MCwgNjg3NDQsIDY4NzQ4LCA2ODc1MiwgNjg3NTYsIDY4NzYwLCA2ODc2NCwgNjg3NjgsIDAsIAotICAgIDAsIDAsIDY4NzcyLCA2ODc3NiwgNjg3ODAsIDY4Nzg0LCA2ODc4OCwgNjg3OTIsIDY4Nzk2LCA2ODgwMCwgNjg4MDQsIAotICAgIDY4ODA4LCA2ODgxMiwgNjg4MTYsIDY4ODIwLCA2ODgyNCwgNjg4MjgsIDY4ODMyLCA2ODgzNiwgNjg4NDAsIDY4ODQ0LCAKLSAgICA2ODg0OCwgNjg4NTIsIDY4ODU2LCA2ODg2MCwgNjg4NjQsIDY4ODY4LCA2ODg3MiwgNjg4NzYsIDY4ODgwLCA2ODg4NCwgCi0gICAgNjg4ODgsIDY4ODkyLCA2ODg5NiwgNjg5MDAsIDY4OTA0LCA2ODkwOCwgNjg5MTIsIDY4OTE2LCA2ODkyMCwgNjg5MjQsIAotICAgIDY4OTI4LCA2ODkzMiwgNjg5MzYsIDY4OTQwLCA2ODk0NCwgNjg5NDgsIDY4OTUyLCA2ODk1NiwgNjg5NjAsIDY4OTY0LCAKLSAgICA2ODk2OCwgNjg5NzIsIDY4OTc2LCA2ODk4MCwgNjg5ODQsIDY4OTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2ODk5MiwgNjg5OTcsIDY5MDAxLCA2OTAwNiwgNjkwMTEsIDY5MDE2LCA2OTAyMSwgNjkwMjYsIDY5MDMwLCA2OTAzNSwgCi0gICAgNjkwNDAsIDY5MDQ1LCA2OTA1MCwgNjkwNTUsIDY5MDYwLCA2OTA2NSwgNjkwNjksIDY5MDczLCA2OTA3OCwgNjkwODIsIAotICAgIDY5MDg3LCA2OTA5MiwgNjkwOTcsIDY5MTAxLCA2OTEwNiwgNjkxMTEsIDY5MTE2LCA2OTEyMSwgNjkxMjYsIDY5MTMwLCAKLSAgICA2OTEzNSwgNjkxMzksIDY5MTQ0LCA2OTE0OCwgNjkxNTMsIDY5MTU3LCA2OTE2MSwgNjkxNjUsIDY5MTcwLCA2OTE3NSwgCi0gICAgNjkxODAsIDY5MTg4LCA2OTE5NiwgNjkyMDQsIDY5MjEyLCA2OTIxOSwgNjkyMjcsIDY5MjMzLCA2OTI0MSwgNjkyNDUsIAotICAgIDY5MjQ5LCA2OTI1MywgNjkyNTcsIDY5MjYxLCA2OTI2NSwgNjkyNjksIDY5MjczLCA2OTI3NywgNjkyODEsIDY5Mjg1LCAKLSAgICA2OTI4OSwgNjkyOTMsIDY5Mjk3LCA2OTMwMSwgNjkzMDUsIDY5MzA5LCA2OTMxMywgNjkzMTcsIDY5MzIxLCA2OTMyNSwgCi0gICAgNjkzMjksIDY5MzMzLCA2OTMzNywgNjkzNDEsIDY5MzQ1LCA2OTM0OSwgNjkzNTMsIDY5MzU3LCA2OTM2MSwgNjkzNjUsIAotICAgIDY5MzY5LCA2OTM3MywgNjkzNzcsIDY5MzgxLCA2OTM4NSwgNjkzODgsIDY5MzkyLCA2OTM5NiwgNjk0MDAsIDY5NDA0LCAKLSAgICA2OTQwOCwgNjk0MTIsIDY5NDE2LCA2OTQyMCwgNjk0MjQsIDY5NDI4LCA2OTQzMiwgNjk0MzYsIDY5NDQwLCA2OTQ0NCwgCi0gICAgNjk0NDgsIDY5NDUyLCA2OTQ1NiwgNjk0NjAsIDY5NDY0LCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCA2OTQ4MCwgNjk0ODQsIAotICAgIDY5NDg4LCA2OTQ5MiwgNjk0OTYsIDY5NTAwLCA2OTUwNCwgNjk1MDgsIDY5NTEyLCA2OTUxNiwgNjk1MjAsIDY5NTI0LCAKLSAgICA2OTUyOCwgNjk1MzIsIDY5NTM1LCA2OTUzOSwgNjk1NDMsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCA2OTU2MSwgCi0gICAgNjk1NjUsIDY5NTY5LCA2OTU3MywgNjk1NzcsIDY5NTgxLCA2OTU4NSwgNjk1ODksIDY5NTkzLCA2OTU5NywgNjk2MDEsIAotICAgIDY5NjA1LCA2OTYwOSwgNjk2MTMsIDY5NjE3LCA2OTYyMCwgNjk2MjQsIDY5NjI4LCA2OTYzMSwgNjk2MzUsIDY5NjM5LCAKLSAgICA2OTY0MywgNjk2NDcsIDY5NjUxLCA2OTY1NSwgNjk2NTgsIDY5NjYxLCA2OTY2NSwgNjk2NjksIDY5NjczLCA2OTY3NiwgCi0gICAgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgNjk3MDMsIDY5NzA3LCA2OTcxMSwgNjk3MTUsIAotICAgIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIDY5NzQzLCA2OTc0NywgNjk3NTEsIDY5NzU1LCAKLSAgICA2OTc1OSwgNjk3NjMsIDY5NzY3LCA2OTc3MSwgNjk3NzUsIDY5Nzc5LCA2OTc4MywgNjk3ODcsIDY5NzkxLCA2OTc5NSwgCi0gICAgNjk3OTksIDY5ODAzLCA2OTgwNywgNjk4MTEsIDY5ODE1LCA2OTgxOSwgNjk4MjMsIDY5ODI3LCA2OTgzMCwgNjk4MzQsIAotICAgIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIDY5ODYyLCA2OTg2NiwgNjk4NzAsIDY5ODc0LCAKLSAgICA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCA2OTkwMiwgNjk5MDYsIDY5OTEwLCA2OTkxNCwgCi0gICAgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgNjk5NDIsIDY5OTQ2LCA2OTk1MCwgNjk5NTQsIAotICAgIDY5OTU4LCA2OTk2MiwgNjk5NjYsIDY5OTcwLCA2OTk3NCwgNjk5NzcsIDY5OTgxLCA2OTk4NSwgNjk5ODksIDY5OTkzLCAKLSAgICA2OTk5NywgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE3LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCA3MDAzMywgCi0gICAgNzAwMzcsIDcwMDQxLCA3MDA0NCwgNzAwNDgsIDcwMDUyLCA3MDA1NiwgNzAwNjAsIDcwMDY0LCA3MDA2OCwgNzAwNzIsIAotICAgIDcwMDc2LCA3MDA4MCwgNzAwODQsIDcwMDg4LCA3MDA5MiwgNzAwOTYsIDcwMTAwLCA3MDEwNCwgNzAxMDgsIDcwMTEyLCAKLSAgICA3MDExNiwgNzAxMjAsIDcwMTI0LCA3MDEyOCwgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MSwgCi0gICAgNzAxNTUsIDcwMTU5LCA3MDE2MywgNzAxNjcsIDcwMTcxLCA3MDE3NSwgNzAxNzksIDcwMTgzLCA3MDE4NywgNzAxOTEsIAotICAgIDcwMTk1LCA3MDE5OSwgNzAyMDMsIDcwMjA3LCA3MDIxMSwgNzAyMTUsIDcwMjE5LCA3MDIyMywgNzAyMjcsIDcwMjMxLCAKLSAgICA3MDIzNSwgNzAyMzksIDcwMjQzLCA3MDI0NywgNzAyNTEsIDcwMjU1LCA3MDI1OSwgNzAyNjMsIDcwMjY3LCA3MDI3MSwgCi0gICAgNzAyNzUsIDcwMjc5LCA3MDI4MywgNzAyODcsIDcwMjkxLCA3MDI5NSwgNzAyOTksIDcwMzAzLCA3MDMwNiwgNzAzMTEsIAotICAgIDcwMzE1LCA3MDMyMSwgNzAzMjYsIDcwMzMyLCA3MDMzNiwgNzAzNDAsIDcwMzQ0LCA3MDM0OCwgNzAzNTIsIDcwMzU2LCAKLSAgICA3MDM2MCwgNzAzNjQsIDcwMzY4LCA3MDM3MiwgNzAzNzYsIDcwMzgwLCA3MDM4NCwgNzAzODgsIDcwMzkxLCA3MDM5NCwgCi0gICAgNzAzOTcsIDcwNDAwLCA3MDQwMywgNzA0MDYsIDcwNDA5LCA3MDQxMiwgNzA0MTUsIDcwNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MDQyNiwgNzA0MzEsIDcwNDM2LCA3MDQ0MSwgCi0gICAgNzA0NDYsIDcwNDUzLCA3MDQ2MCwgNzA0NjUsIDcwNDcwLCA3MDQ3NSwgNzA0ODAsIDcwNDg3LCA3MDQ5NCwgNzA1MDEsIAotICAgIDcwNTA4LCA3MDUxNSwgNzA1MjIsIDcwNTMyLCA3MDU0MiwgNzA1NDksIDcwNTU2LCA3MDU2MywgNzA1NzAsIDcwNTc2LCAKLSAgICA3MDU4MiwgNzA1OTEsIDcwNjAwLCA3MDYwNywgNzA2MTQsIDcwNjI1LCA3MDYzNiwgNzA2NDEsIDcwNjQ2LCA3MDY1MywgCi0gICAgNzA2NjAsIDcwNjY3LCA3MDY3NCwgNzA2ODEsIDcwNjg4LCA3MDY5NSwgNzA3MDIsIDcwNzA4LCA3MDcxNCwgNzA3MjAsIAotICAgIDcwNzI2LCA3MDczMywgNzA3NDAsIDcwNzQ1LCA3MDc0OSwgNzA3NTYsIDcwNzYzLCA3MDc3MCwgNzA3NzQsIDcwNzgxLCAKLSAgICA3MDc4NSwgNzA3OTAsIDcwNzk0LCA3MDgwMCwgNzA4MDUsIDcwODExLCA3MDgxNiwgNzA4MjAsIDcwODI0LCA3MDgyNywgCi0gICAgNzA4MzAsIDcwODM1LCA3MDg0MCwgNzA4NDUsIDcwODUwLCA3MDg1NSwgNzA4NjAsIDcwODY1LCA3MDg3MCwgNzA4NzUsIAotICAgIDcwODgwLCA3MDg4OSwgNzA4OTgsIDcwOTAzLCA3MDkwOCwgNzA5MTMsIDcwOTE4LCA3MDkyMywgNzA5MjgsIDcwOTMzLCAKLSAgICA3MDkzOCwgNzA5NDMsIDcwOTQ4LCA3MDk1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzA5NTgsIDcwOTY0LCA3MDk2NywgCi0gICAgNzA5NzAsIDcwOTczLCA3MDk3NywgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTIsIDcwOTk2LCA3MDk5OSwgNzEwMDMsIAotICAgIDcxMDA2LCA3MTAxMCwgNzEwMTQsIDcxMDE4LCA3MTAyMiwgNzEwMjYsIDcxMDMwLCA3MTAzNCwgNzEwMzcsIDcxMDQxLCAKLSAgICA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCA3MTA4MSwgCi0gICAgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTYsIDcxMTAwLCA3MTEwNCwgNzExMDgsIDcxMTEyLCA3MTExNiwgNzExMjAsIAotICAgIDcxMTI0LCA3MTEyOCwgNzExMzIsIDcxMTM2LCA3MTE0MCwgNzExNDQsIDcxMTQ4LCA3MTE1MiwgNzExNTYsIDcxMTYwLCAKLSAgICA3MTE2NCwgNzExNjgsIDcxMTcyLCA3MTE3NiwgNzExODAsIDcxMTg0LCA3MTE4OCwgNzExOTIsIDcxMTk1LCA3MTE5OSwgCi0gICAgNzEyMDMsIDcxMjA3LCA3MTIxMSwgNzEyMTUsIDcxMjE5LCA3MTIyMywgNzEyMjYsIDcxMjMwLCA3MTIzNCwgNzEyMzgsIAotICAgIDcxMjQyLCA3MTI0NiwgNzEyNTAsIDcxMjU0LCA3MTI1OCwgNzEyNjIsIDcxMjY2LCA3MTI3MCwgNzEyNzQsIDcxMjc5LCAKLSAgICA3MTI4NCwgNzEyODcsIDcxMjkyLCA3MTI5NSwgNzEyOTgsIDcxMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTMwNSwgCi0gICAgNzEzMTQsIDcxMzIzLCA3MTMzMiwgNzEzNDEsIDcxMzUwLCA3MTM1OSwgNzEzNjgsIDcxMzc3LCA3MTM4NSwgNzEzOTIsIAotICAgIDcxNDAwLCA3MTQwNywgNzE0MTUsIDcxNDI1LCA3MTQzNCwgNzE0NDQsIDcxNDUzLCA3MTQ2MywgNzE0NzEsIDcxNDc4LCAKLSAgICA3MTQ4NiwgNzE0OTMsIDcxNTAxLCA3MTUwNiwgNzE1MTEsIDcxNTE2LCA3MTUyNSwgNzE1MzEsIDcxNTM3LCA3MTU0NCwgCi0gICAgNzE1NTMsIDcxNTYxLCA3MTU2OSwgNzE1NzcsIDcxNTg0LCA3MTU5MSwgNzE1OTgsIDcxNjA1LCA3MTYxMCwgNzE2MTUsIAotICAgIDcxNjIwLCA3MTYyNSwgNzE2MzAsIDcxNjM1LCA3MTY0MCwgNzE2NDUsIDcxNjUzLCA3MTY2MSwgNzE2NjcsIDcxNjczLCAKLSAgICA3MTY3OCwgNzE2ODMsIDcxNjg4LCA3MTY5MywgNzE2OTgsIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzIxLCA3MTcyOSwgCi0gICAgNzE3MzQsIDcxNzM5LCA3MTc0OSwgNzE3NTksIDcxNzY2LCA3MTc3MywgNzE3ODIsIDcxNzkxLCA3MTgwMywgNzE4MTUsIAotICAgIDcxODIxLCA3MTgyNywgNzE4MzUsIDcxODQzLCA3MTg1MywgNzE4NjMsIDcxODcwLCA3MTg3NywgNzE4ODIsIDcxODg3LCAKLSAgICA3MTg5OSwgNzE5MTEsIDcxOTE5LCA3MTkyNywgNzE5MzcsIDcxOTQ3LCA3MTk1OSwgNzE5NzEsIDcxOTgwLCA3MTk4OSwgCi0gICAgNzE5OTYsIDcyMDAzLCA3MjAxMCwgNzIwMTcsIDcyMDI2LCA3MjAzNSwgNzIwNDAsIDcyMDQ1LCA3MjA1MiwgNzIwNTksIAotICAgIDcyMDY2LCA3MjA3MywgNzIwODUsIDcyMDk3LCA3MjEwMiwgNzIxMDcsIDcyMTEyLCA3MjExNywgNzIxMjIsIDcyMTI3LCAKLSAgICA3MjEzMiwgNzIxMzcsIDcyMTQxLCA3MjE0NiwgNzIxNTEsIDcyMTU2LCA3MjE2MSwgNzIxNjYsIDcyMTcyLCA3MjE3NywgCi0gICAgNzIxODIsIDcyMTg5LCA3MjE5NiwgNzIyMDMsIDcyMjEwLCA3MjIxNywgNzIyMjYsIDcyMjM1LCA3MjI0MSwgNzIyNDcsIAotICAgIDcyMjUzLCA3MjI1OSwgNzIyNjYsIDcyMjczLCA3MjI4MCwgNzIyODcsIDcyMjk0LCA3MjI5OCwgNzIzMDUsIDcyMzEwLCAKLSAgICA3MjMxNSwgNzIzMjIsIDAsIDcyMzM1LCA3MjM0MywgNzIzNTEsIDcyMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3MjM2NSwgNzIzNzQsIDcyMzgzLCA3MjM5MiwgNzI0MDEsIDcyNDEwLCA3MjQxOSwgNzI0MjgsIDcyNDM3LCAKLSAgICA3MjQ0NiwgNzI0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNDYyLCA3MjQ2OSwgNzI0NzUsIDcyNDgyLCA3MjQ5MCwgNzI0OTgsIAotICAgIDcyNTA1LCA3MjUxMywgNzI1MjAsIDcyNTI2LCA3MjUzMiwgNzI1MzksIDcyNTQ1LCA3MjU1MSwgNzI1NTcsIDcyNTY0LCAKLSAgICA3MjU3MSwgNzI1NzgsIDcyNTg1LCA3MjU5MiwgNzI1OTksIDcyNjA2LCA3MjYxMywgNzI2MjAsIDcyNjI3LCA3MjYzNCwgCi0gICAgNzI2NDEsIDcyNjQ4LCA3MjY1NSwgNzI2NjEsIDcyNjY4LCA3MjY3NSwgNzI2ODIsIDcyNjg5LCA3MjY5NiwgNzI3MDMsIAotICAgIDcyNzEwLCA3MjcxNywgNzI3MjQsIDcyNzMxLCA3MjczOCwgNzI3NDUsIDcyNzUyLCA3Mjc1OSwgNzI3NjYsIDcyNzczLCAKLSAgICA3Mjc4MCwgNzI3ODcsIDcyNzk1LCA3MjgwMywgNzI4MTEsIDcyODE5LCAwLCAwLCAwLCAwLCA3MjgyNywgNzI4MzYsIAotICAgIDcyODQ1LCA3Mjg1NCwgNzI4NjMsIDcyODcyLCA3Mjg4MSwgNzI4ODgsIDcyODk1LCA3MjkwMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzI5MDksIDcyOTEzLCA3MjkxOCwgNzI5MjMsIDcyOTI4LCA3MjkzMywgNzI5MzgsIDcyOTQzLCA3Mjk0OCwgNzI5NTMsIAotICAgIDcyOTU4LCA3Mjk2MywgNzI5NjcsIDcyOTcxLCA3Mjk3NiwgNzI5ODEsIDcyOTg1LCA3Mjk5MCwgNzI5OTUsIDczMDAwLCAKLSAgICA3MzAwNSwgNzMwMTAsIDczMDE1LCA3MzAyMCwgNzMwMjQsIDczMDI4LCA3MzAzMywgNzMwMzgsIDczMDQyLCA3MzA0NiwgCi0gICAgNzMwNTAsIDczMDU0LCA3MzA1OCwgNzMwNjIsIDczMDY2LCA3MzA3MSwgNzMwNzYsIDczMDgxLCA3MzA4NiwgNzMwOTEsIAotICAgIDczMDk4LCA3MzEwNCwgNzMxMDksIDczMTE0LCA3MzExOSwgNzMxMjQsIDczMTMwLCA3MzEzNywgNzMxNDMsIDczMTUwLCAKLSAgICA3MzE1NiwgNzMxNjIsIDczMTY3LCA3MzE3NCwgNzMxODAsIDczMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzE5MSwgCi0gICAgNzMxOTUsIDczMTk5LCA3MzIwMiwgNzMyMDYsIDczMjA5LCA3MzIxMywgNzMyMTYsIDczMjIwLCA3MzIyNCwgNzMyMjksIAotICAgIDczMjMzLCA3MzIzOCwgNzMyNDEsIDczMjQ1LCA3MzI0OSwgNzMyNTIsIDczMjU2LCA3MzI2MCwgNzMyNjMsIDczMjY3LCAKLSAgICA3MzI3MSwgNzMyNzUsIDczMjc5LCA3MzI4MywgNzMyODcsIDczMjkxLCA3MzI5NSwgNzMyOTksIDczMzAzLCA3MzMwNywgCi0gICAgNzMzMTEsIDczMzE1LCA3MzMxOSwgNzMzMjMsIDczMzI3LCA3MzMzMSwgNzMzMzUsIDczMzM4LCA3MzM0MSwgNzMzNDUsIAotICAgIDczMzQ5LCA3MzM1MywgNzMzNTYsIDczMzU5LCA3MzM2MiwgNzMzNjYsIDczMzcwLCA3MzM3NCwgNzMzNzgsIDczMzgxLCAKLSAgICA3MzM4NCwgNzMzODgsIDczMzkzLCA3MzM5OCwgNzM0MDIsIDczNDA3LCA3MzQxMSwgNzM0MTYsIDczNDIxLCA3MzQyNywgCi0gICAgNzM0MzIsIDczNDM4LCA3MzQ0MiwgNzM0NDcsIDczNDUyLCA3MzQ1NiwgNzM0NjEsIDczNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3MzQ3MCwgNzM0NzMsIDczNDc3LCA3MzQ4MSwgNzM0ODQsIDczNDg3LCA3MzQ5MCwgNzM0OTMsIDczNDk2LCAKLSAgICA3MzQ5OSwgNzM1MDIsIDczNTA1LCAwLCAwLCAwLCAwLCAwLCAwLCA3MzUwOCwgNzM1MTMsIDczNTE3LCA3MzUyMSwgNzM1MjUsIAotICAgIDczNTI5LCA3MzUzMywgNzM1MzcsIDczNTQxLCA3MzU0NSwgNzM1NDksIDczNTUzLCA3MzU1NywgNzM1NjEsIDczNTY1LCAKLSAgICA3MzU2OSwgNzM1NzMsIDczNTc4LCA3MzU4MywgNzM1ODksIDczNTk1LCA3MzYwMiwgNzM2MDcsIDczNjEyLCA3MzYxOCwgCi0gICAgNzM2MjIsIDczNjI3LCA3MzYzMCwgMCwgMCwgMCwgMCwgNzM2MzMsIDczNjQwLCA3MzY0NiwgNzM2NTIsIDczNjU4LCAKLSAgICA3MzY2NCwgNzM2NzAsIDczNjc2LCA3MzY4MiwgNzM2ODgsIDczNjk0LCA3MzcwMCwgNzM3MDcsIDczNzE0LCA3MzcyMSwgCi0gICAgNzM3MjcsIDczNzM0LCA3Mzc0MSwgNzM3NDgsIDczNzU1LCA3Mzc2MiwgNzM3NjgsIDczNzc0LCA3Mzc4MSwgNzM3ODcsIAotICAgIDczNzk0LCA3MzgwMSwgNzM4MDcsIDczODEzLCA3MzgyMCwgNzM4MjcsIDczODM0LCA3Mzg0MCwgNzM4NDcsIDczODU0LCAKLSAgICA3Mzg2MCwgNzM4NjcsIDczODczLCA3Mzg4MCwgNzM4ODcsIDczODkzLCA3Mzg5OSwgNzM5MDYsIDczOTEyLCA3MzkxOSwgCi0gICAgNzM5MjYsIDczOTM1LCA3Mzk0MiwgNzM5NDksIDczOTUzLCA3Mzk1OCwgNzM5NjMsIDczOTY4LCA3Mzk3MywgNzM5NzcsIAotICAgIDczOTgxLCA3Mzk4NiwgNzM5OTAsIDczOTk1LCA3NDAwMCwgNzQwMDUsIDc0MDA5LCA3NDAxMywgNzQwMTgsIDc0MDIyLCAKLSAgICA3NDAyNywgNzQwMzEsIDc0MDM2LCA3NDA0MSwgNzQwNDYsIDc0MDUxLCA3NDA1NSwgNzQwNjAsIDc0MDY1LCA3NDA3MCwgCi0gICAgNzQwNzYsIDc0MDgxLCA3NDA4NywgNzQwOTMsIDc0MDk5LCA3NDEwNSwgNzQxMTEsIDc0MTE2LCA3NDEyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQxMjYsIDc0MTMxLCA3NDEzNSwgNzQxMzksIDc0MTQzLCA3NDE0NywgNzQxNTEsIAotICAgIDc0MTU1LCA3NDE1OSwgNzQxNjMsIDc0MTY3LCA3NDE3MSwgNzQxNzUsIDc0MTc5LCA3NDE4MywgNzQxODcsIDc0MTkxLCAKLSAgICA3NDE5NSwgNzQxOTksIDc0MjAzLCA3NDIwNywgNzQyMTEsIDc0MjE1LCA3NDIxOSwgNzQyMjMsIDc0MjI3LCA3NDIzMSwgCi0gICAgNzQyMzUsIDc0MjM5LCA3NDI0MywgMCwgMCwgMCwgNzQyNDcsIDc0MjUxLCA3NDI1NSwgNzQyNTksIDc0MjYzLCA3NDI2NiwgCi0gICAgNzQyNzIsIDc0Mjc1LCA3NDI3OSwgNzQyODIsIDc0Mjg4LCA3NDI5NCwgNzQzMDIsIDc0MzA1LCA3NDMwOSwgNzQzMTIsIAotICAgIDc0MzE1LCA3NDMyMSwgNzQzMjcsIDc0MzMxLCA3NDMzNywgNzQzNDEsIDc0MzQ1LCA3NDM1MSwgNzQzNTUsIDc0MzYxLCAKLSAgICA3NDM2NywgNzQzNzEsIDc0Mzc1LCA3NDM4MSwgNzQzODUsIDc0MzkxLCA3NDM5NywgNzQ0MDEsIDc0NDA3LCA3NDQxMSwgCi0gICAgNzQ0MTcsIDc0NDIwLCA3NDQyMywgNzQ0MjksIDc0NDMzLCA3NDQzOSwgNzQ0NDIsIDc0NDQ1LCA3NDQ0OCwgNzQ0NTQsIAotICAgIDc0NDU4LCA3NDQ2MiwgNzQ0NjgsIDc0NDc0LCA3NDQ3NywgNzQ0ODAsIDc0NDg2LCA3NDQ5MSwgNzQ0OTYsIDc0NTAxLCAKLSAgICA3NDUwOCwgNzQ1MTMsIDc0NTIwLCA3NDUyNSwgNzQ1MzIsIDc0NTM3LCA3NDU0MiwgNzQ1NDcsIDc0NTUyLCA3NDU1NSwgCi0gICAgNzQ1NTksIDc0NTYzLCA3NDU2OCwgNzQ1NzMsIDc0NTc4LCA3NDU4MywgNzQ1ODgsIDc0NTkzLCA3NDU5OCwgNzQ2MDMsIAotICAgIDc0NjEwLCA3NDYxNSwgMCwgNzQ2MjIsIDc0NjI1LCA3NDYyOSwgNzQ2MzIsIDc0NjM1LCA3NDYzOCwgNzQ2NDEsIDc0NjQ0LCAKLSAgICA3NDY0NywgNzQ2NTAsIDc0NjUzLCAwLCAwLCAwLCAwLCA3NDY1NiwgNzQ2NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc0NjY4LCA3NDY3MSwgNzQ2NzQsIDc0Njc3LCA3NDY4MCwgNzQ2ODQsIDc0Njg3LCA3NDY5MCwgNzQ2OTQsIDc0Njk4LCAKLSAgICA3NDcwMiwgNzQ3MDYsIDc0NzEwLCA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIDc0NzM0LCA3NDczOCwgCi0gICAgNzQ3NDIsIDc0NzQ2LCA3NDc1MCwgNzQ3NTQsIDc0NzU4LCA3NDc2MSwgNzQ3NjUsIDc0NzY4LCA3NDc3MiwgNzQ3NzYsIAotICAgIDc0NzgwLCA3NDc4NCwgNzQ3ODgsIDc0NzkxLCA3NDc5NSwgNzQ3OTgsIDc0ODAxLCA3NDgwNSwgNzQ4MDksIDc0ODEzLCAKLSAgICA3NDgxNiwgNzQ4MTksIDc0ODI0LCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MiwgNzQ4NDcsIDc0ODUxLCA3NDg1NiwgCi0gICAgNzQ4NjEsIDc0ODY2LCA3NDg3MCwgNzQ4NzQsIDc0ODc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDg4NCwgCi0gICAgNzQ4ODksIDc0ODk0LCA3NDg5OSwgNzQ5MDUsIDc0OTEwLCA3NDkxNSwgNzQ5MjAsIDc0OTI1LCA3NDkzMCwgNzQ5MzQsIAotICAgIDc0OTM4LCA3NDk0MywgNzQ5NDgsIDAsIDAsIDc0OTU0LCA3NDk1OCwgNzQ5NjEsIDc0OTY0LCA3NDk2NywgNzQ5NzAsIAotICAgIDc0OTczLCA3NDk3NiwgNzQ5NzksIDc0OTgyLCAwLCAwLCA3NDk4NSwgNzQ5OTAsIDc0OTk1LCA3NTAwMSwgNzUwMDgsIAotICAgIDc1MDE0LCA3NTAyMCwgNzUwMjYsIDc1MDMyLCA3NTAzOCwgNzUwNDQsIDc1MDUwLCA3NTA1NiwgNzUwNjIsIDc1MDY4LCAKLSAgICA3NTA3NCwgNzUwNzksIDc1MDg0LCA3NTA4OSwgNzUwOTUsIDc1MTAxLCA3NTEwOCwgNzUxMTQsIDc1MTIwLCA3NTEyNSwgCi0gICAgNzUxMzIsIDc1MTM5LCA3NTE0NiwgNzUxNTIsIDc1MTU3LCA3NTE2MiwgNzUxNjcsIDAsIDAsIDAsIDAsIDc1MTc1LCAKLSAgICA3NTE4MSwgNzUxODcsIDc1MTkzLCA3NTE5OSwgNzUyMDUsIDc1MjExLCA3NTIxNywgNzUyMjMsIDc1MjI5LCA3NTIzNSwgCi0gICAgNzUyNDEsIDc1MjQ3LCA3NTI1MywgNzUyNTksIDc1MjY1LCA3NTI3MSwgNzUyNzcsIDc1MjgzLCA3NTI4OSwgNzUyOTUsIAotICAgIDc1MzAwLCA3NTMwNSwgNzUzMTEsIDc1MzE3LCA3NTMyMywgNzUzMjksIDc1MzM1LCA3NTM0MSwgNzUzNDcsIDc1MzUzLCAKLSAgICA3NTM1OSwgNzUzNjUsIDc1MzcxLCA3NTM3NywgNzUzODMsIDc1Mzg5LCA3NTM5NSwgNzU0MDEsIDc1NDA3LCA3NTQxMywgCi0gICAgNzU0MTksIDc1NDI1LCA3NTQzMSwgNzU0MzcsIDc1NDQzLCA3NTQ0OSwgNzU0NTQsIDc1NDU5LCA3NTQ2NSwgNzU0NzAsIAotICAgIDc1NDc0LCA3NTQ3OSwgNzU0ODMsIDc1NDg3LCA3NTQ5MSwgNzU0OTcsIDc1NTAyLCA3NTUwNywgNzU1MTIsIDc1NTE3LCAKLSAgICA3NTUyMiwgNzU1MjcsIDc1NTMyLCA3NTUzOSwgNzU1NDYsIDc1NTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTU2MCwgNzU1NjUsIDc1NTcwLCA3NTU3NSwgCi0gICAgNzU1ODIsIDc1NTg5LCA3NTU5MywgNzU1OTcsIDc1NjAyLCA3NTYwNywgNzU2MTIsIDc1NjE3LCA3NTYyMiwgNzU2MjcsIAotICAgIDc1NjMyLCA3NTYzNywgNzU2NDIsIDc1NjQ4LCA3NTY1NCwgNzU2NjAsIDc1NjY2LCA3NTY3MiwgNzU2NzYsIDc1NjgyLCAKLSAgICA3NTY4NiwgNzU2OTIsIDc1Njk5LCA3NTcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU3MDksIDc1NzEzLCAKLSAgICA3NTcxNywgNzU3MjEsIDc1NzI1LCA3NTcyOSwgMCwgMCwgNzU3MzMsIDc1NzM3LCA3NTc0MSwgNzU3NDUsIDc1NzQ5LCAKLSAgICA3NTc1MywgMCwgMCwgNzU3NTcsIDc1NzYxLCA3NTc2NSwgNzU3NjksIDc1NzczLCA3NTc3NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzU3ODEsIDc1Nzg1LCA3NTc4OSwgNzU3OTMsIDc1Nzk3LCA3NTgwMSwgNzU4MDUsIDAsIDc1ODA5LCAKLSAgICA3NTgxMywgNzU4MTcsIDc1ODIxLCA3NTgyNSwgNzU4MjksIDc1ODMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5MTc3OSwgOTE3ODYsIDkxNzk1LCA5MTgwNCwgOTE4MTEsIDkxODE4LCA5MTgyNSwgOTE4MzIsIDkxODM5LCAKKyAgICA5MTg0NiwgOTE4NTIsIDkxODU5LCA5MTg2NiwgOTE4NzMsIDkxODgwLCA5MTg4NywgOTE4OTQsIDkxOTAxLCA5MTkwOCwgCisgICAgOTE5MTcsIDkxOTI0LCA5MTkzMSwgOTE5MzgsIDkxOTQ1LCA5MTk1MiwgOTE5NTksIDkxOTY2LCA5MTk3MywgOTE5ODIsIAorICAgIDkxOTg5LCA5MTk5NiwgOTIwMDMsIDkyMDEwLCA5MjAxNywgOTIwMjQsIDkyMDMzLCA5MjA0MCwgOTIwNDcsIDkyMDU0LCAKKyAgICA5MjA2MSwgOTIwNzAsIDkyMDc3LCA5MjA4NCwgOTIwOTEsIDkyMDk5LCA5MjEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAotICAgIDc1ODU3LCA3NTg2MSwgNzU4NjUsIDc1ODcwLCA3NTg3NSwgNzU4ODAsIDc1ODg1LCA3NTg5MCwgNzU4OTUsIDc1OTAwLCAKLSAgICA3NTkwNSwgNzU5MTAsIDc1OTE0LCA3NTkxOSwgNzU5MjQsIDc1OTI5LCA3NTkzNCwgNzU5MzksIDc1OTQ0LCA3NTk0OSwgCi0gICAgNzU5NTQsIDc1OTU5LCA3NTk2NCwgNzU5NjksIDc1OTc2LCA3NTk4MywgNzU5OTAsIDc1OTk3LCA3NjAwNCwgNzYwMTEsIAotICAgIDc2MDE4LCA3NjAyNSwgNzYwMzEsIDc2MDM3LCA3NjA0MywgNzYwNDksIDc2MDU1LCA3NjA2MSwgNzYwNjcsIDc2MDczLCAKLSAgICA3NjA3NywgNzYwODMsIDAsIDAsIDc2MDg5LCA3NjA5NCwgNzYwOTgsIDc2MTAyLCA3NjEwNiwgNzYxMTAsIDc2MTE0LCAKLSAgICA3NjExOCwgNzYxMjIsIDc2MTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgNzYxNDYsIAotICAgIDc2MTUwLCA3NjE1NCwgNzYxNTgsIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIDc2MTg2LCAKLSAgICA3NjE5MCwgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgNzYyMTgsIDAsIDAsIDAsIDAsIAotICAgIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIDc2MjU4LCAKLSAgICA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCA3NjI5OCwgCi0gICAgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgNzYzMzgsIAotICAgIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIDc2Mzc4LCAKLSAgICA3NjM4MiwgNzYzODYsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIDc2NDAyLCA3NjQwNiwgNzY0MTAsIDc2NDE0LCAwLCAwLCAwLCAKLSAgICAwLCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCA3NjQ0MiwgNzY0NDYsIDc2NDUwLCA3NjQ1NCwgCi0gICAgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgNzY0ODIsIDc2NDg2LCA3NjQ5MCwgNzY0OTQsIAotICAgIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIDc2NTIyLCA3NjUyNiwgNzY1MzAsIDc2NTM0LCAKLSAgICA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCA3NjU2MiwgNzY1NjYsIDc2NTcwLCA3NjU3NCwgCi0gICAgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgNzY2MDIsIDc2NjA2LCA3NjYxMCwgNzY2MTQsIAotICAgIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIDc2NjQyLCA3NjY0NiwgNzY2NTAsIDc2NjU0LCAKLSAgICA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCA3NjY4MiwgNzY2ODYsIDc2NjkwLCA3NjY5NCwgCi0gICAgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgNzY3MjIsIDc2NzI2LCA3NjczMCwgNzY3MzQsIAotICAgIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIDc2NzYyLCA3Njc2NiwgNzY3NzAsIDc2Nzc0LCAKLSAgICA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCA3NjgwMiwgNzY4MDYsIDc2ODEwLCA3NjgxNCwgCi0gICAgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgNzY4NDIsIDc2ODQ2LCA3Njg1MCwgNzY4NTQsIAotICAgIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIDc2ODgyLCA3Njg4NiwgNzY4OTAsIDc2ODk0LCAKLSAgICA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgNzY5MjYsIDc2OTMwLCA3NjkzNCwgCi0gICAgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgNzY5NjIsIDc2OTY2LCA3Njk3MCwgNzY5NzQsIAotICAgIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgNzY5OTgsIDc3MDAyLCA3NzAwNiwgNzcwMTAsIDc3MDE0LCAKLSAgICA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIDc3MDM4LCA3NzA0MiwgNzcwNDYsIDc3MDUwLCA3NzA1NCwgCi0gICAgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCA3NzA3OCwgNzcwODIsIDc3MDg2LCA3NzA5MCwgNzcwOTQsIAotICAgIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgNzcxMTgsIDc3MTIyLCA3NzEyNiwgNzcxMzAsIDc3MTM0LCAKLSAgICA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIDc3MTU4LCA3NzE2MiwgNzcxNjYsIDc3MTcwLCA3NzE3NCwgCi0gICAgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCA3NzE5OCwgNzcyMDIsIDc3MjA2LCA3NzIxMCwgNzcyMTQsIAotICAgIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgNzcyMzgsIDc3MjQyLCA3NzI0NiwgNzcyNTAsIDc3MjU0LCAKLSAgICA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIDc3Mjc4LCA3NzI4MiwgNzcyODYsIDc3MjkwLCA3NzI5NCwgCi0gICAgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCA3NzMxOCwgNzczMjIsIDc3MzI2LCA3NzMzMCwgNzczMzQsIAotICAgIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgNzczNTgsIDc3MzYyLCA3NzM2NiwgNzczNzAsIDc3Mzc0LCAKLSAgICA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgNzczOTQsIDc3Mzk4LCA3NzQwMiwgNzc0MDYsIDc3NDEwLCA3NzQxNCwgCi0gICAgNzc0MTgsIDc3NDIyLCA3NzQyNiwgNzc0MzAsIDc3NDM0LCA3NzQzOCwgNzc0NDIsIDc3NDQ2LCA3NzQ1MCwgNzc0NTQsIAotICAgIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIDc3NDcwLCA3NzQ3NCwgNzc0NzgsIDc3NDgyLCA3NzQ4NiwgNzc0OTAsIDc3NDk0LCAKLSAgICA3NzQ5OCwgNzc1MDIsIDc3NTA2LCA3NzUxMCwgNzc1MTQsIDc3NTE4LCA3NzUyMiwgNzc1MjYsIDc3NTMwLCA3NzUzNCwgCi0gICAgNzc1MzgsIDc3NTQyLCA3NzU0NiwgNzc1NTAsIDc3NTU0LCA3NzU1OCwgNzc1NjIsIDc3NTY2LCA3NzU3MCwgNzc1NzQsIAotICAgIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NCwgNzc1OTgsIDc3NjAyLCA3NzYwNiwgNzc2MTAsIDc3NjE0LCAKLSAgICA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMCwgNzc2MzQsIDc3NjM4LCA3NzY0MiwgNzc2NDYsIDc3NjUwLCA3NzY1NCwgCi0gICAgNzc2NTgsIDc3NjYyLCA3NzY2NiwgNzc2NzAsIDc3Njc0LCA3NzY3OCwgNzc2ODIsIDc3Njg2LCA3NzY5MCwgNzc2OTQsIAotICAgIDc3Njk4LCA3NzcwMiwgNzc3MDYsIDc3NzEwLCA3NzcxNCwgNzc3MTgsIDc3NzIyLCA3NzcyNiwgNzc3MzAsIDc3NzM0LCAKLSAgICA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjYsIDc3NzcwLCA3Nzc3NCwgCi0gICAgNzc3NzgsIDc3NzgyLCA3Nzc4NiwgNzc3OTAsIDc3Nzk0LCA3Nzc5OCwgNzc4MDIsIDc3ODA2LCA3NzgxMCwgNzc4MTQsIAotICAgIDc3ODE4LCA3NzgyMiwgNzc4MjYsIDc3ODMwLCA3NzgzNCwgNzc4MzgsIDc3ODQyLCA3Nzg0NiwgNzc4NTAsIDc3ODU0LCAKLSAgICA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCAwLCAwLCA3Nzg4MiwgNzc4ODYsIDc3ODkwLCAKLSAgICA3Nzg5NCwgNzc4OTgsIDc3OTAyLCA3NzkwNiwgNzc5MTAsIDc3OTE0LCA3NzkxOCwgNzc5MjIsIDc3OTI2LCA3NzkzMCwgCi0gICAgNzc5MzQsIDc3OTM4LCA3Nzk0MiwgNzc5NDYsIDc3OTUwLCA3Nzk1NCwgNzc5NTgsIDc3OTYyLCA3Nzk2NiwgNzc5NzAsIAotICAgIDc3OTc0LCA3Nzk3OCwgNzc5ODIsIDc3OTg2LCA3Nzk5MCwgNzc5OTQsIDc3OTk4LCA3ODAwMiwgNzgwMDYsIDc4MDEwLCAKLSAgICA3ODAxNCwgNzgwMTgsIDc4MDIyLCA3ODAyNiwgNzgwMzAsIDc4MDM0LCA3ODAzOCwgNzgwNDIsIDc4MDQ2LCA3ODA1MCwgCi0gICAgNzgwNTQsIDc4MDU4LCA3ODA2MiwgNzgwNjYsIDc4MDcwLCA3ODA3NCwgNzgwNzgsIDc4MDgyLCA3ODA4NiwgNzgwOTAsIAotICAgIDc4MDk0LCA3ODA5OCwgNzgxMDIsIDc4MTA2LCA3ODExMCwgNzgxMTQsIDc4MTE4LCA3ODEyMiwgNzgxMjYsIDc4MTMwLCAKLSAgICA3ODEzNCwgNzgxMzgsIDc4MTQyLCA3ODE0NiwgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIDc4MTY2LCA3ODE3MCwgCi0gICAgNzgxNzQsIDc4MTc4LCA3ODE4MiwgNzgxODYsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCA3ODIwNiwgNzgyMTAsIAotICAgIDc4MjE0LCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgNzgyNDYsIDc4MjUwLCAKLSAgICA3ODI1NCwgNzgyNTgsIDc4MjYyLCA3ODI2NiwgNzgyNzAsIDc4Mjc0LCA3ODI3OCwgNzgyODIsIDc4Mjg2LCA3ODI5MCwgCi0gICAgNzgyOTQsIDc4Mjk4LCA3ODMwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgzMDYsIAotICAgIDc4MzExLCA3ODMxNiwgNzgzMjEsIDc4MzI2LCA3ODMzMSwgNzgzMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc4MzQ0LCA3ODM1MSwgNzgzNTgsIDc4MzY1LCA3ODM3MiwgMCwgMCwgMCwgMCwgMCwgNzgzNzksIDc4Mzg2LCAKLSAgICA3ODM5MywgNzg0MDMsIDc4NDA5LCA3ODQxNSwgNzg0MjEsIDc4NDI3LCA3ODQzMywgNzg0MzksIDc4NDQ2LCA3ODQ1MiwgCi0gICAgNzg0NTgsIDc4NDY0LCA3ODQ3MywgNzg0ODIsIDc4NDk0LCA3ODUwNiwgNzg1MTIsIDc4NTE4LCA3ODUyNCwgNzg1MzEsIAotICAgIDc4NTM4LCA3ODU0NSwgNzg1NTIsIDc4NTU5LCAwLCA3ODU2NiwgNzg1NzMsIDc4NTgwLCA3ODU4OCwgNzg1OTUsIDAsIAotICAgIDc4NjAyLCAwLCA3ODYwOSwgNzg2MTYsIDAsIDc4NjIzLCA3ODYzMSwgMCwgNzg2MzgsIDc4NjQ1LCA3ODY1MiwgNzg2NTksIAotICAgIDc4NjY2LCA3ODY3MywgNzg2ODAsIDc4Njg3LCA3ODY5NCwgNzg3MDEsIDc4NzA2LCA3ODcxMywgNzg3MjAsIDc4NzI2LCAKLSAgICA3ODczMiwgNzg3MzgsIDc4NzQ0LCA3ODc1MCwgNzg3NTYsIDc4NzYyLCA3ODc2OCwgNzg3NzQsIDc4NzgwLCA3ODc4NiwgCi0gICAgNzg3OTIsIDc4Nzk4LCA3ODgwNCwgNzg4MTAsIDc4ODE2LCA3ODgyMiwgNzg4MjgsIDc4ODM0LCA3ODg0MCwgNzg4NDYsIAotICAgIDc4ODUyLCA3ODg1OCwgNzg4NjQsIDc4ODcwLCA3ODg3NiwgNzg4ODIsIDc4ODg4LCA3ODg5NCwgNzg5MDAsIDc4OTA2LCAKLSAgICA3ODkxMiwgNzg5MTgsIDc4OTI0LCA3ODkzMCwgNzg5MzYsIDc4OTQyLCA3ODk0OCwgNzg5NTQsIDc4OTYwLCA3ODk2NiwgCi0gICAgNzg5NzIsIDc4OTc4LCA3ODk4NCwgNzg5OTAsIDc4OTk2LCA3OTAwMiwgNzkwMDgsIDc5MDE0LCA3OTAyMCwgNzkwMjYsIAotICAgIDc5MDMyLCA3OTAzOCwgNzkwNDQsIDc5MDUwLCA3OTA1NiwgNzkwNjIsIDc5MDY4LCA3OTA3NCwgNzkwODAsIDc5MDg2LCAKLSAgICA3OTA5MiwgNzkwOTgsIDc5MTA0LCA3OTExMCwgNzkxMTYsIDc5MTIyLCA3OTEyOCwgNzkxMzQsIDc5MTQwLCA3OTE0NiwgCi0gICAgNzkxNTIsIDc5MTU4LCA3OTE2NCwgNzkxNzAsIDc5MTc2LCA3OTE4NCwgNzkxOTIsIDc5MTk4LCA3OTIwNCwgNzkyMTAsIAotICAgIDc5MjE2LCA3OTIyNSwgNzkyMzQsIDc5MjQyLCA3OTI1MCwgNzkyNTgsIDc5MjY2LCA3OTI3NCwgNzkyODIsIDc5MjkwLCAKLSAgICA3OTI5OCwgNzkzMDUsIDc5MzEyLCA3OTMyMiwgNzkzMzIsIDc5MzM2LCA3OTM0MCwgNzkzNDUsIDc5MzUwLCA3OTM1NSwgCi0gICAgNzkzNjAsIDc5MzY5LCA3OTM3OCwgNzkzODQsIDc5MzkwLCA3OTM5NywgNzk0MDQsIDc5NDExLCA3OTQxNSwgNzk0MjEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDI3LCA3OTQzMywgNzk0MzksIAotICAgIDc5NDQ1LCA3OTQ1MSwgNzk0NTYsIDc5NDYxLCA3OTQ2NywgNzk0NzMsIDc5NDc5LCA3OTQ4NSwgNzk0OTMsIDc5NDk5LCAKLSAgICA3OTUwNSwgNzk1MTMsIDc5NTIxLCA3OTUyOSwgNzk1MzcsIDc5NTQyLCA3OTU0NywgNzk1NTIsIDc5NTU3LCA3OTU3MCwgCi0gICAgNzk1ODMsIDc5NTkzLCA3OTYwMywgNzk2MTQsIDc5NjI1LCA3OTYzNiwgNzk2NDcsIDc5NjU3LCA3OTY2NywgNzk2NzgsIAotICAgIDc5Njg5LCA3OTcwMCwgNzk3MTEsIDc5NzIxLCA3OTczMSwgNzk3NDEsIDc5NzU3LCA3OTc3MywgNzk3ODksIDc5Nzk2LCAKLSAgICA3OTgwMywgNzk4MTAsIDc5ODE3LCA3OTgyNywgNzk4MzcsIDc5ODQ3LCA3OTg1OSwgNzk4NjksIDc5ODc3LCA3OTg4NSwgCi0gICAgNzk4OTQsIDc5OTAyLCA3OTkxMiwgNzk5MjAsIDc5OTI4LCA3OTkzNiwgNzk5NDUsIDc5OTUzLCA3OTk2MywgNzk5NzEsIAotICAgIDc5OTc5LCA3OTk4NywgNzk5OTcsIDgwMDA1LCA4MDAxMiwgODAwMTksIDgwMDI2LCA4MDAzMywgODAwNDEsIDgwMDQ5LCAKLSAgICA4MDA1NywgODAwNjUsIDgwMDczLCA4MDA4MiwgODAwOTAsIDgwMDk4LCA4MDEwNiwgODAxMTQsIDgwMTIyLCA4MDEzMSwgCi0gICAgODAxMzksIDgwMTQ3LCA4MDE1NSwgODAxNjMsIDgwMTcxLCA4MDE3OSwgODAxODcsIDgwMTk1LCA4MDIwMywgODAyMTEsIAotICAgIDgwMjIwLCA4MDIyOCwgODAyMzgsIDgwMjQ2LCA4MDI1NCwgODAyNjIsIDgwMjcyLCA4MDI4MCwgODAyODgsIDgwMjk2LCAKLSAgICA4MDMwNCwgODAzMTMsIDgwMzIyLCA4MDMzMCwgODAzNDAsIDgwMzQ4LCA4MDM1NiwgODAzNjQsIDgwMzczLCA4MDM4MSwgCi0gICAgODAzOTEsIDgwMzk5LCA4MDQwNiwgODA0MTMsIDgwNDIxLCA4MDQyOCwgODA0MzcsIDgwNDQ0LCA4MDQ1MiwgODA0NjAsIAotICAgIDgwNDY5LCA4MDQ3NywgODA0ODcsIDgwNDk1LCA4MDUwMywgODA1MTEsIDgwNTIxLCA4MDUyOSwgODA1MzYsIDgwNTQzLCAKLSAgICA4MDU1MSwgODA1NTgsIDgwNTY3LCA4MDU3NCwgODA1ODQsIDgwNTk0LCA4MDYwNSwgODA2MTQsIDgwNjIzLCA4MDYzMiwgCi0gICAgODA2NDEsIDgwNjUwLCA4MDY2MCwgODA2NzEsIDgwNjgyLCA4MDY5MiwgODA3MDMsIDgwNzE1LCA4MDcyNSwgODA3MzQsIAotICAgIDgwNzQzLCA4MDc1MSwgODA3NjAsIDgwNzcwLCA4MDc3OCwgODA3ODcsIDgwNzk2LCA4MDgwNCwgODA4MTMsIDgwODIzLCAKLSAgICA4MDgzMSwgODA4NDAsIDgwODQ5LCA4MDg1NywgODA4NjYsIDgwODc2LCA4MDg4NCwgODA4OTQsIDgwOTAyLCA4MDkxMiwgCi0gICAgODA5MjAsIDgwOTI4LCA4MDkzNywgODA5NDUsIDgwOTU1LCA4MDk2MywgODA5NzEsIDgwOTgxLCA4MDk4OSwgODA5OTYsIAotICAgIDgxMDAzLCA4MTAxMiwgODEwMjEsIDgxMDI5LCA4MTAzOCwgODEwNDgsIDgxMDU2LCA4MTA2NywgODEwNzUsIDgxMDgzLCAKLSAgICA4MTA5MCwgODEwOTgsIDgxMTA3LCA4MTExNCwgODExMjQsIDgxMTM0LCA4MTE0NSwgODExNTUsIDgxMTY2LCA4MTE3NCwgCi0gICAgODExODIsIDgxMTkxLCA4MTE5OSwgODEyMDgsIDgxMjE2LCA4MTIyNCwgODEyMzMsIDgxMjQxLCA4MTI1MCwgODEyNTgsIAotICAgIDgxMjY1LCA4MTI3MiwgODEyNzksIDgxMjg2LCA4MTI5NCwgODEzMDIsIDgxMzEwLCA4MTMxOCwgODEzMjcsIDgxMzM1LCAKLSAgICA4MTM0MywgODEzNTIsIDgxMzYwLCA4MTM2OCwgODEzNzYsIDgxMzg1LCA4MTM5MywgODE0MDEsIDgxNDA5LCA4MTQxNywgCi0gICAgODE0MjUsIDgxNDMzLCA4MTQ0MSwgODE0NDksIDgxNDU3LCA4MTQ2NiwgODE0NzQsIDgxNDgyLCA4MTQ5MCwgODE0OTgsIAotICAgIDgxNTA2LCA4MTUxNSwgODE1MjQsIDgxNTMyLCA4MTU0MCwgODE1NDgsIDgxNTU3LCA4MTU2NSwgODE1NzQsIDgxNTgxLCAKLSAgICA4MTU4OCwgODE1OTYsIDgxNjAzLCA4MTYxMSwgODE2MTksIDgxNjI4LCA4MTYzNiwgODE2NDUsIDgxNjUzLCA4MTY2MSwgCi0gICAgODE2NzEsIDgxNjc4LCA4MTY4NSwgODE2OTMsIDgxNzAwLCA4MTcwOCwgODE3MTgsIDgxNzI5LCA4MTczNywgODE3NDYsIAotICAgIDgxNzU0LCA4MTc2MywgODE3NzEsIDgxNzgwLCA4MTc4OCwgODE3OTcsIDgxODA1LCA4MTgxNCwgODE4MjMsIDgxODMxLCAKLSAgICA4MTgzOSwgODE4NDcsIDgxODU2LCA4MTg2MywgODE4NzEsIDgxODgwLCA4MTg4OSwgODE4OTgsIDgxOTA4LCA4MTkxNiwgCi0gICAgODE5MjYsIDgxOTM0LCA4MTk0NCwgODE5NTIsIDgxOTYyLCA4MTk3MCwgODE5ODAsIDgxOTg4LCA4MTk5NywgODIwMDQsIAotICAgIDgyMDEzLCA4MjAyMCwgODIwMzAsIDgyMDM4LCA4MjA0OCwgODIwNTYsIDgyMDY2LCA4MjA3NCwgODIwODIsIDgyMDkwLCAKLSAgICA4MjA5OSwgODIxMDcsIDgyMTE2LCA4MjEyNSwgODIxMzQsIDgyMTQzLCA4MjE1MywgODIxNjEsIDgyMTcxLCA4MjE3OSwgCi0gICAgODIxODksIDgyMTk3LCA4MjIwNywgODIyMTUsIDgyMjI1LCA4MjIzMywgODIyNDIsIDgyMjQ5LCA4MjI1OCwgODIyNjUsIAotICAgIDgyMjc1LCA4MjI4MywgODIyOTMsIDgyMzAxLCA4MjMxMSwgODIzMTksIDgyMzI3LCA4MjMzNSwgODIzNDQsIDgyMzUyLCAKLSAgICA4MjM2MSwgODIzNzAsIDgyMzc5LCA4MjM4OCwgODIzOTYsIDgyNDA0LCA4MjQxMywgODI0MjEsIDgyNDMwLCA4MjQzOSwgCi0gICAgODI0NDcsIDgyNDU1LCA4MjQ2MywgODI0NzIsIDgyNDgwLCA4MjQ4OCwgODI0OTcsIDgyNTA1LCA4MjUxMywgODI1MjEsIAotICAgIDgyNTI5LCA4MjUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI1MzksIAotICAgIDgyNTQ5LCA4MjU1OSwgODI1NjksIDgyNTc5LCA4MjU5MCwgODI2MDAsIDgyNjEwLCA4MjYyMSwgODI2MzAsIDgyNjM5LCAKLSAgICA4MjY0OCwgODI2NTksIDgyNjY5LCA4MjY3OSwgODI2OTEsIDgyNzAxLCA4MjcxMSwgODI3MjEsIDgyNzMxLCA4Mjc0MSwgCi0gICAgODI3NTEsIDgyNzYxLCA4Mjc3MSwgODI3ODEsIDgyNzkxLCA4MjgwMSwgODI4MTIsIDgyODIzLCA4MjgzMywgODI4NDMsIAotICAgIDgyODU1LCA4Mjg2NiwgODI4NzcsIDgyODg3LCA4Mjg5NywgODI5MDcsIDgyOTE3LCA4MjkyNywgODI5MzcsIDgyOTQ3LCAKLSAgICA4Mjk1OSwgODI5NjksIDgyOTc5LCA4Mjk5MSwgODMwMDIsIDgzMDEzLCA4MzAyMywgODMwMzMsIDgzMDQzLCA4MzA1MywgCi0gICAgODMwNjUsIDgzMDc1LCA4MzA4NSwgODMwOTYsIDgzMTA3LCA4MzExNywgODMxMjcsIDgzMTM2LCA4MzE0NSwgODMxNTQsIAotICAgIDgzMTYzLCA4MzE3MiwgODMxODIsIDAsIDAsIDgzMTkyLCA4MzIwMiwgODMyMTIsIDgzMjIyLCA4MzIzMiwgODMyNDQsIAotICAgIDgzMjU0LCA4MzI2NCwgODMyNzYsIDgzMjg2LCA4MzI5OCwgODMzMDcsIDgzMzE2LCA4MzMyNywgODMzMzcsIDgzMzQ5LCAKLSAgICA4MzM2MCwgODMzNzMsIDgzMzgzLCA4MzM5NSwgODM0MDQsIDgzNDE1LCA4MzQyNiwgODM0MzksIDgzNDQ5LCA4MzQ1OSwgCi0gICAgODM0NjksIDgzNDc5LCA4MzQ4OSwgODM0OTgsIDgzNTA3LCA4MzUxNiwgODM1MjUsIDgzNTM1LCA4MzU0NSwgODM1NTUsIAotICAgIDgzNTY1LCA4MzU3NSwgODM1ODUsIDgzNTk1LCA4MzYwNSwgODM2MTUsIDgzNjI1LCA4MzYzNSwgODM2NDUsIDgzNjU0LCAKLSAgICA4MzY2MywgODM2NzIsIDgzNjgyLCA4MzY5MiwgODM3MDIsIDgzNzEyLCA4MzcyMiwgODM3MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNzQzLCA4Mzc1OCwgODM3NzMsIDgzNzc5LCA4Mzc4NSwgODM3OTEsIAotICAgIDgzNzk3LCA4MzgwMywgODM4MDksIDgzODE1LCA4MzgyMSwgODM4MjksIDgzODMzLCA4MzgzNiwgMCwgMCwgODM4NDQsIAotICAgIDgzODQ3LCA4Mzg1MCwgODM4NTMsIDgzODU2LCA4Mzg1OSwgODM4NjIsIDgzODY1LCA4Mzg2OCwgODM4NzEsIDgzODc0LCAKLSAgICA4Mzg3NywgODM4ODAsIDgzODgzLCA4Mzg4NiwgODM4ODksIDgzODkyLCA4MzkwMCwgODM5MDksIDgzOTIwLCA4MzkyOCwgCi0gICAgODM5MzYsIDgzOTQ1LCA4Mzk1NCwgODM5NjUsIDgzOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCA4Mzk4NiwgODM5OTEsIDgzOTk2LCAKLSAgICA4NDAwMywgODQwMTAsIDg0MDE2LCA4NDAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQwMjcsIDg0MDM3LCAKLSAgICA4NDA0NywgODQwNTcsIDg0MDY2LCA4NDA3NywgODQwODYsIDg0MDk1LCA4NDEwNSwgODQxMTUsIDg0MTI3LCA4NDEzOSwgCi0gICAgODQxNTAsIDg0MTYxLCA4NDE3MiwgODQxODMsIDg0MTkzLCA4NDIwMywgODQyMTMsIDg0MjIzLCA4NDIzNCwgODQyNDUsIAotICAgIDg0MjQ5LCA4NDI1NCwgODQyNjMsIDg0MjcyLCA4NDI3NiwgODQyODAsIDg0Mjg0LCA4NDI4OSwgODQyOTQsIDg0Mjk5LCAKLSAgICA4NDMwNCwgODQzMDcsIDg0MzExLCAwLCA4NDMxNiwgODQzMTksIDg0MzIyLCA4NDMyNiwgODQzMzAsIDg0MzM1LCA4NDMzOSwgCi0gICAgODQzNDMsIDg0MzQ4LCA4NDM1MywgODQzNjAsIDg0MzY3LCA4NDM3MCwgODQzNzMsIDg0Mzc2LCA4NDM3OSwgODQzODIsIAotICAgIDg0Mzg2LCA4NDM5MCwgMCwgODQzOTQsIDg0Mzk5LCA4NDQwMywgODQ0MDcsIDAsIDAsIDAsIDAsIDg0NDEyLCA4NDQxNywgCi0gICAgODQ0MjQsIDg0NDI5LCA4NDQzNCwgMCwgODQ0MzksIDg0NDQ0LCA4NDQ0OSwgODQ0NTQsIDg0NDU5LCA4NDQ2NCwgODQ0NjksIAotICAgIDg0NDc0LCA4NDQ3OSwgODQ0ODQsIDg0NDg5LCA4NDQ5NCwgODQ1MDMsIDg0NTEyLCA4NDUyMCwgODQ1MjgsIDg0NTM3LCAKLSAgICA4NDU0NiwgODQ1NTUsIDg0NTY0LCA4NDU3MiwgODQ1ODAsIDg0NTg4LCA4NDU5NiwgODQ2MDEsIDg0NjA2LCA4NDYxMiwgCi0gICAgODQ2MTgsIDg0NjI0LCA4NDYzMCwgODQ2MzgsIDg0NjQ2LCA4NDY1MiwgODQ2NTgsIDg0NjY0LCA4NDY3MCwgODQ2NzYsIAotICAgIDg0NjgyLCA4NDY4OCwgODQ2OTQsIDg0Njk5LCA4NDcwNCwgODQ3MDksIDg0NzE0LCA4NDcxOSwgODQ3MjQsIDg0NzI5LCAKLSAgICA4NDczNCwgODQ3NDAsIDg0NzQ2LCA4NDc1MiwgODQ3NTgsIDg0NzY0LCA4NDc3MCwgODQ3NzYsIDg0NzgyLCA4NDc4OCwgCi0gICAgODQ3OTQsIDg0ODAwLCA4NDgwNiwgODQ4MTIsIDg0ODE4LCA4NDgyNCwgODQ4MzAsIDg0ODM2LCA4NDg0MiwgODQ4NDgsIAotICAgIDg0ODU0LCA4NDg2MCwgODQ4NjYsIDg0ODcyLCA4NDg3OCwgODQ4ODQsIDg0ODkwLCA4NDg5NiwgODQ5MDIsIDg0OTA4LCAKLSAgICA4NDkxNCwgODQ5MjAsIDg0OTI2LCA4NDkzMiwgODQ5MzgsIDg0OTQ0LCA4NDk1MCwgODQ5NTYsIDg0OTYyLCA4NDk2OCwgCi0gICAgODQ5NzQsIDg0OTgwLCA4NDk4NiwgODQ5OTIsIDg0OTk4LCA4NTAwNCwgODUwMTAsIDg1MDE2LCA4NTAyMiwgODUwMjgsIAotICAgIDg1MDM0LCA4NTA0MCwgODUwNDYsIDg1MDUyLCA4NTA1OCwgODUwNjQsIDg1MDcwLCA4NTA3NiwgODUwODIsIDg1MDg4LCAKLSAgICA4NTA5NCwgODUwOTksIDg1MTA0LCA4NTEwOSwgODUxMTQsIDg1MTIwLCA4NTEyNiwgODUxMzIsIDg1MTM4LCA4NTE0NCwgCi0gICAgODUxNTAsIDg1MTU2LCA4NTE2MiwgODUxNjgsIDg1MTc0LCA4NTE4MSwgODUxODgsIDg1MTkzLCA4NTE5OCwgODUyMDMsIAotICAgIDg1MjA4LCA4NTIyMCwgODUyMzIsIDg1MjQzLCA4NTI1NCwgODUyNjYsIDg1Mjc4LCA4NTI4NiwgMCwgMCwgODUyOTQsIDAsIAotICAgIDg1MzAyLCA4NTMwNiwgODUzMTAsIDg1MzEzLCA4NTMxNywgODUzMjEsIDg1MzI0LCA4NTMyNywgODUzMzEsIDg1MzM1LCAKLSAgICA4NTMzOCwgODUzNDEsIDg1MzQ0LCA4NTM0NywgODUzNTIsIDg1MzU1LCA4NTM1OSwgODUzNjIsIDg1MzY1LCA4NTM2OCwgCi0gICAgODUzNzEsIDg1Mzc0LCA4NTM3NywgODUzODAsIDg1MzgzLCA4NTM4NiwgODUzODksIDg1MzkyLCA4NTM5NiwgODU0MDAsIAotICAgIDg1NDA0LCA4NTQwOCwgODU0MTMsIDg1NDE4LCA4NTQyNCwgODU0MzAsIDg1NDM2LCA4NTQ0MSwgODU0NDcsIDg1NDUzLCAKLSAgICA4NTQ1OSwgODU0NjQsIDg1NDcwLCA4NTQ3NiwgODU0ODEsIDg1NDg2LCA4NTQ5MiwgODU0OTcsIDg1NTAzLCA4NTUwOSwgCi0gICAgODU1MTQsIDg1NTIwLCA4NTUyNiwgODU1MzEsIDg1NTM3LCA4NTU0MywgODU1NDksIDg1NTU1LCA4NTU2MSwgODU1NjUsIAotICAgIDg1NTcwLCA4NTU3NCwgODU1NzksIDg1NTgzLCA4NTU4OCwgODU1OTMsIDg1NTk5LCA4NTYwNSwgODU2MTEsIDg1NjE2LCAKLSAgICA4NTYyMiwgODU2MjgsIDg1NjM0LCA4NTYzOSwgODU2NDUsIDg1NjUxLCA4NTY1NiwgODU2NjEsIDg1NjY3LCA4NTY3MiwgCi0gICAgODU2NzgsIDg1Njg0LCA4NTY4OSwgODU2OTUsIDg1NzAxLCA4NTcwNiwgODU3MTIsIDg1NzE4LCA4NTcyNCwgODU3MzAsIAotICAgIDg1NzM2LCA4NTc0MSwgODU3NDUsIDg1NzUwLCA4NTc1MiwgODU3NTcsIDg1NzYyLCA4NTc2OCwgODU3NzMsIDg1Nzc4LCAKLSAgICA4NTc4MiwgODU3ODgsIDg1NzkzLCA4NTc5OCwgODU4MDMsIDg1ODA4LCA4NTgxMywgODU4MTgsIDg1ODIzLCA4NTgyOSwgCi0gICAgODU4MzUsIDg1ODQxLCA4NTg0OSwgODU4NTMsIDg1ODU3LCA4NTg2MSwgODU4NjUsIDg1ODY5LCA4NTg3MywgODU4NzgsIAotICAgIDg1ODgzLCA4NTg4OCwgODU4OTMsIDg1ODk3LCA4NTkwMiwgODU5MDcsIDg1OTEyLCA4NTkxNywgODU5MjIsIDg1OTI3LCAKLSAgICA4NTkzMiwgODU5MzcsIDg1OTQxLCA4NTk0NSwgODU5NTAsIDg1OTU1LCA4NTk2MCwgODU5NjUsIDg1OTY5LCA4NTk3NCwgCi0gICAgODU5NzksIDg1OTg0LCA4NTk4OSwgODU5OTMsIDg1OTk4LCA4NjAwMywgODYwMDgsIDg2MDEzLCA4NjAxNywgODYwMjIsIAotICAgIDg2MDI3LCA4NjAzMSwgODYwMzYsIDg2MDQxLCA4NjA0NiwgODYwNTEsIDg2MDU2LCA4NjA2MSwgODYwNjgsIDg2MDc1LCAKLSAgICA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYwOTksIDg2MTA0LCA4NjEwOSwgODYxMTQsIDg2MTE5LCA4NjEyNCwgCi0gICAgODYxMjksIDg2MTM0LCA4NjEzOSwgODYxNDQsIDg2MTQ5LCA4NjE1NCwgODYxNTksIDg2MTY0LCA4NjE2OSwgODYxNzQsIAotICAgIDg2MTc5LCA4NjE4NCwgODYxODksIDg2MTk0LCA4NjE5OSwgODYyMDQsIDg2MjA5LCA4NjIxNCwgODYyMTksIDg2MjI0LCAwLCAKLSAgICAwLCAwLCA4NjIyOSwgODYyMzMsIDg2MjM4LCA4NjI0MiwgODYyNDcsIDg2MjUyLCAwLCAwLCA4NjI1NiwgODYyNjEsIAotICAgIDg2MjY2LCA4NjI3MCwgODYyNzUsIDg2MjgwLCAwLCAwLCA4NjI4NSwgODYyOTAsIDg2Mjk0LCA4NjI5OSwgODYzMDQsIAotICAgIDg2MzA5LCAwLCAwLCA4NjMxNCwgODYzMTksIDg2MzI0LCAwLCAwLCAwLCA4NjMyOCwgODYzMzIsIDg2MzM2LCA4NjM0MCwgCi0gICAgODYzNDMsIDg2MzQ3LCA4NjM1MSwgMCwgODYzNTUsIDg2MzYxLCA4NjM2NCwgODYzNjgsIDg2MzcxLCA4NjM3NSwgODYzNzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MzgzLCA4NjM4OSwgODYzOTUsIDg2NDAxLCA4NjQwNywgMCwgMCwgCi0gICAgODY0MTEsIDg2NDE3LCA4NjQyMywgODY0MjksIDg2NDM1LCA4NjQ0MSwgODY0NDgsIDg2NDU1LCA4NjQ2MiwgODY0NjksIAotICAgIDg2NDc2LCA4NjQ4MywgMCwgODY0OTAsIDg2NDk3LCA4NjUwNCwgODY1MTAsIDg2NTE3LCA4NjUyNCwgODY1MzEsIDg2NTM4LCAKLSAgICA4NjU0NCwgODY1NTEsIDg2NTU4LCA4NjU2NSwgODY1NzIsIDg2NTc4LCA4NjU4NSwgODY1OTIsIDg2NTk5LCA4NjYwNiwgCi0gICAgODY2MTIsIDg2NjE5LCA4NjYyNiwgODY2MzMsIDg2NjQwLCA4NjY0NywgODY2NTQsIDg2NjYxLCAwLCA4NjY2OCwgODY2NzQsIAotICAgIDg2NjgxLCA4NjY4OCwgODY2OTUsIDg2NzAyLCA4NjcwOCwgODY3MTUsIDg2NzIyLCA4NjcyOSwgODY3MzYsIDg2NzQzLCAKLSAgICA4Njc1MCwgODY3NTcsIDg2NzYzLCA4Njc3MCwgODY3NzcsIDg2Nzg0LCA4Njc5MSwgMCwgODY3OTgsIDg2ODA1LCAwLCAKLSAgICA4NjgxMiwgODY4MTksIDg2ODI2LCA4NjgzMywgODY4NDAsIDg2ODQ3LCA4Njg1NCwgODY4NjEsIDg2ODY4LCA4Njg3NSwgCi0gICAgODY4ODIsIDg2ODg5LCA4Njg5NiwgODY5MDMsIDg2OTEwLCAwLCAwLCA4NjkxNiwgODY5MjEsIDg2OTI2LCA4NjkzMSwgCi0gICAgODY5MzYsIDg2OTQxLCA4Njk0NiwgODY5NTEsIDg2OTU2LCA4Njk2MSwgODY5NjYsIDg2OTcxLCA4Njk3NiwgODY5ODEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2OTg2LCA4Njk5MywgODcwMDAsIDg3MDA3LCA4NzAxNCwgODcwMjEsIAotICAgIDg3MDI4LCA4NzAzNSwgODcwNDIsIDg3MDQ5LCA4NzA1NiwgODcwNjMsIDg3MDcwLCA4NzA3NywgODcwODQsIDg3MDkxLCAKLSAgICA4NzA5OCwgODcxMDUsIDg3MTEyLCA4NzExOSwgODcxMjcsIDg3MTM1LCA4NzE0MiwgODcxNDksIDg3MTU0LCA4NzE2MiwgCi0gICAgODcxNzAsIDg3MTc3LCA4NzE4NCwgODcxODksIDg3MTk2LCA4NzIwMSwgODcyMDYsIDg3MjEzLCA4NzIxOCwgODcyMjMsIAotICAgIDg3MjI4LCA4NzIzNiwgODcyNDEsIDg3MjQ2LCA4NzI1MywgODcyNTgsIDg3MjYzLCA4NzI3MCwgODcyNzcsIDg3MjgyLCAKLSAgICA4NzI4NywgODcyOTIsIDg3Mjk3LCA4NzMwMiwgODczMDcsIDg3MzEyLCA4NzMxNywgODczMjIsIDg3MzI5LCA4NzMzNCwgCi0gICAgODczNDEsIDg3MzQ2LCA4NzM1MSwgODczNTYsIDg3MzYxLCA4NzM2NiwgODczNzEsIDg3Mzc2LCA4NzM4MSwgODczODYsIAotICAgIDg3MzkxLCA4NzM5NiwgODc0MDMsIDg3NDEwLCA4NzQxNywgODc0MjQsIDg3NDMwLCA4NzQzNSwgODc0NDIsIDg3NDQ3LCAKLSAgICA4NzQ1MiwgODc0NjEsIDg3NDY4LCA4NzQ3NywgODc0ODQsIDg3NDg5LCA4NzQ5NCwgODc1MDIsIDg3NTA3LCA4NzUxMiwgCi0gICAgODc1MTcsIDg3NTIyLCA4NzUyNywgODc1MzQsIDg3NTM5LCA4NzU0NCwgODc1NDksIDg3NTU0LCA4NzU1OSwgODc1NjYsIAotICAgIDg3NTczLCA4NzU4MCwgODc1ODcsIDg3NTk0LCA4NzYwMSwgODc2MDgsIDg3NjE1LCA4NzYyMiwgODc2MjksIDg3NjM2LCAKLSAgICA4NzY0MywgODc2NTAsIDg3NjU3LCA4NzY2NCwgODc2NzEsIDg3Njc4LCA4NzY4NSwgODc2OTIsIDg3Njk5LCA4NzcwNiwgCi0gICAgODc3MTMsIDg3NzIwLCA4NzcyNywgODc3MzQsIDg3NzQxLCA4Nzc0OCwgODc3NTUsIDAsIDAsIDAsIDAsIDAsIDg3NzYyLCAKLSAgICA4Nzc3MCwgODc3NzgsIDAsIDAsIDAsIDAsIDg3NzgzLCA4Nzc4NywgODc3OTEsIDg3Nzk1LCA4Nzc5OSwgODc4MDMsIAotICAgIDg3ODA3LCA4NzgxMSwgODc4MTUsIDg3ODE5LCA4NzgyNCwgODc4MjksIDg3ODM0LCA4NzgzOSwgODc4NDQsIDg3ODQ5LCAKLSAgICA4Nzg1NCwgODc4NTksIDg3ODY0LCA4Nzg3MCwgODc4NzYsIDg3ODgyLCA4Nzg4OSwgODc4OTYsIDg3OTAzLCA4NzkxMCwgCi0gICAgODc5MTcsIDg3OTI0LCA4NzkzMCwgODc5MzYsIDg3OTQyLCA4Nzk0OSwgODc5NTYsIDg3OTYzLCA4Nzk3MCwgODc5NzcsIAotICAgIDg3OTg0LCA4Nzk5MSwgODc5OTgsIDg4MDA1LCA4ODAxMiwgODgwMTksIDg4MDI2LCA4ODAzMywgODgwNDAsIDAsIDAsIDAsIAotICAgIDg4MDQ3LCA4ODA1NSwgODgwNjMsIDg4MDcxLCA4ODA3OSwgODgwODcsIDg4MDk3LCA4ODEwNywgODgxMTUsIDg4MTIzLCAKLSAgICA4ODEzMSwgODgxMzksIDg4MTQ3LCA4ODE1MywgODgxNjAsIDg4MTY5LCA4ODE3OCwgODgxODcsIDg4MTk2LCA4ODIwNSwgCi0gICAgODgyMTQsIDg4MjI0LCA4ODIzNSwgODgyNDUsIDg4MjU2LCA4ODI2NSwgODgyNzQsIDg4MjgzLCA4ODI5MywgODgzMDQsIAotICAgIDg4MzE0LCA4ODMyNSwgODgzMzYsIDg4MzQ1LCA4ODM1MywgODgzNTksIDg4MzY1LCA4ODM3MSwgODgzNzcsIDg4Mzg1LCAKLSAgICA4ODM5MywgODgzOTksIDg4NDA2LCA4ODQxNiwgODg0MjMsIDg4NDMwLCA4ODQzNywgODg0NDQsIDg4NDUxLCA4ODQ2MSwgCi0gICAgODg0NjgsIDg4NDc1LCA4ODQ4MywgODg0OTEsIDg4NTAwLCA4ODUwOSwgODg1MTgsIDg4NTI3LCA4ODUzNiwgODg1NDQsIAotICAgIDg4NTUzLCA4ODU2MiwgODg1NzEsIDg4NTc1LCA4ODU4MiwgODg1ODcsIDg4NTkyLCA4ODU5NiwgODg2MDAsIDg4NjA0LCAKLSAgICA4ODYwOCwgODg2MTMsIDg4NjE4LCA4ODYyNCwgODg2MzAsIDg4NjM0LCA4ODY0MCwgODg2NDQsIDg4NjQ4LCA4ODY1MiwgCi0gICAgODg2NTYsIDg4NjYwLCA4ODY2NCwgODg2NzAsIDAsIDAsIDAsIDAsIDAsIDg4Njc0LCA4ODY3OSwgODg2ODQsIDg4Njg5LCAKLSAgICA4ODY5NCwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIDg4NzIxLCA4ODcyNiwgODg3MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzM2LCAKLSAgICA4ODc0MywgODg3NTIsIDg4NzYxLCA4ODc2OCwgODg3NzUsIDg4NzgyLCA4ODc4OSwgODg3OTYsIDg4ODAzLCA4ODgwOSwgCi0gICAgODg4MTYsIDg4ODIzLCA4ODgzMCwgODg4MzcsIDg4ODQ0LCA4ODg1MSwgODg4NTgsIDg4ODY1LCA4ODg3NCwgODg4ODEsIAotICAgIDg4ODg4LCA4ODg5NSwgODg5MDIsIDg4OTA5LCA4ODkxNiwgODg5MjMsIDg4OTMwLCA4ODkzOSwgODg5NDYsIDg4OTUzLCAKLSAgICA4ODk2MCwgODg5NjcsIDg4OTc0LCA4ODk4MSwgODg5OTAsIDg4OTk3LCA4OTAwNCwgODkwMTEsIDg5MDE4LCA4OTAyNywgCi0gICAgODkwMzQsIDg5MDQxLCA4OTA0OCwgODkwNTYsIDg5MDY1LCAwLCAwLCA4OTA3NCwgODkwNzgsIDg5MDgyLCA4OTA4NywgCi0gICAgODkwOTIsIDg5MDk3LCA4OTEwMiwgODkxMDYsIDg5MTExLCA4OTExNiwgODkxMjEsIDg5MTI2LCA4OTEzMSwgODkxMzYsIAotICAgIDg5MTQwLCA4OTE0NCwgODkxNDksIDg5MTU0LCA4OTE1OSwgODkxNjMsIDg5MTY4LCA4OTE3MywgODkxNzcsIDg5MTgyLCAKLSAgICA4OTE4NywgODkxOTIsIDg5MTk3LCA4OTIwMiwgODkyMDcsIDAsIDAsIDAsIDg5MjEyLCA4OTIxNiwgODkyMjEsIDg5MjI2LCAKLSAgICA4OTIzMCwgODkyMzUsIDg5MjM5LCA4OTI0NCwgODkyNDksIDg5MjU0LCA4OTI1OSwgODkyNjMsIDg5MjY3LCA4OTI3MiwgCi0gICAgODkyNzcsIDg5MjgyLCA4OTI4NywgODkyOTIsIDg5Mjk3LCA4OTMwMSwgODkzMDYsIDg5MzExLCA4OTMxNiwgODkzMjEsIAotICAgIDg5MzI2LCA4OTMzMSwgODkzMzUsIDg5MzM5LCA4OTM0NCwgODkzNDksIDg5MzU0LCA4OTM1OSwgODkzNjQsIDg5MzY5LCAKLSAgICA4OTM3NCwgODkzNzksIDg5Mzg0LCA4OTM4OSwgODkzOTQsIDg5Mzk5LCA4OTQwNCwgODk0MDksIDg5NDE0LCA4OTQxOSwgCi0gICAgODk0MjQsIDg5NDI5LCA4OTQzNCwgODk0MzksIDg5NDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTQ0OSwgODk0NTMsIDg5NDU4LCA4OTQ2MywgODk0NjgsIDg5NDcyLCAKLSAgICA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgODk0OTYsIDg5NTAwLCA4OTUwNSwgODk1MTAsIDg5NTE1LCA4OTUyMCwgCi0gICAgODk1MjQsIDg5NTI5LCA4OTUzNCwgODk1MzksIDg5NTQ0LCA4OTU0OSwgODk1NTQsIDg5NTU4LCA4OTU2MywgODk1NjgsIAotICAgIDg5NTczLCA4OTU3OCwgODk1ODMsIDg5NTg4LCA4OTU5MywgMCwgODk1OTgsIDg5NjAzLCA4OTYwOCwgODk2MTQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NjIwLCA4OTYyNSwgODk2MzAsIDg5NjM1LCA4OTY0MCwgODk2NDUsIAotICAgIDg5NjUwLCA4OTY1NSwgODk2NjAsIDg5NjY1LCA4OTY3MCwgODk2NzUsIDg5NjgwLCA4OTY4NSwgODk2OTAsIDg5Njk1LCAKLSAgICA4OTcwMCwgODk3MDUsIDg5NzEwLCA4OTcxNSwgODk3MjAsIDg5NzI1LCA4OTczMCwgODk3MzUsIDg5NzQwLCA4OTc0NSwgCi0gICAgODk3NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NzU3LCA4OTc2MiwgODk3NjcsIDg5NzcyLCA4OTc3NywgODk3ODIsIDg5Nzg3LCAKLSAgICA4OTc5MiwgODk3OTcsIDg5ODAyLCA4OTgwNywgODk4MTIsIDg5ODE3LCA4OTgyMiwgODk4MjcsIDg5ODMyLCA4OTgzNywgCi0gICAgODk4NDIsIDg5ODQ3LCA4OTg1MiwgODk4NTcsIDg5ODYyLCA4OTg2NywgODk4NzIsIDg5ODc3LCA4OTg4MiwgODk4ODcsIAotICAgIDg5ODkxLCA4OTg5NSwgODk4OTksIDAsIDg5OTA0LCA4OTkxMCwgODk5MTUsIDg5OTIwLCA4OTkyNSwgODk5MzAsIDg5OTM2LCAKLSAgICA4OTk0MiwgODk5NDgsIDg5OTU0LCA4OTk2MCwgODk5NjYsIDg5OTcyLCA4OTk3OCwgODk5ODQsIDg5OTkwLCA4OTk5NiwgCi0gICAgOTAwMDIsIDkwMDA4LCA5MDAxMywgOTAwMTksIDkwMDI1LCA5MDAzMCwgOTAwMzYsIDkwMDQxLCA5MDA0NywgOTAwNTMsIAotICAgIDkwMDU4LCA5MDA2NCwgOTAwNzAsIDkwMDc1LCA5MDA4MSwgOTAwODcsIDkwMDkyLCA5MDA5OCwgOTAxMDQsIDkwMTEwLCAwLCAKLSAgICAwLCAwLCAwLCA5MDExNSwgOTAxMjEsIDkwMTI3LCA5MDEzMywgOTAxMzksIDkwMTQ1LCA5MDE1MSwgOTAxNTcsIDkwMTYzLCAKLSAgICA5MDE3MCwgOTAxNzUsIDkwMTgwLCA5MDE4NiwgOTAxOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDkwMTk4LCA5MDIwMywgOTAyMDgsIDkwMjEzLCA5MDIxOSwgOTAyMjQsIDkwMjMwLCA5MDIzNiwgCi0gICAgOTAyNDIsIDkwMjQ4LCA5MDI1NSwgOTAyNjEsIDkwMjY4LCA5MDI3MywgOTAyNzgsIDkwMjgzLCA5MDI4OCwgOTAyOTMsIAotICAgIDkwMjk4LCA5MDMwMywgOTAzMDgsIDkwMzEzLCA5MDMxOCwgOTAzMjMsIDkwMzI4LCA5MDMzMywgOTAzMzgsIDkwMzQzLCAKLSAgICA5MDM0OCwgOTAzNTMsIDkwMzU4LCA5MDM2MywgOTAzNjgsIDkwMzczLCA5MDM3OCwgOTAzODMsIDkwMzg4LCA5MDM5MywgCi0gICAgOTAzOTgsIDkwNDAzLCA5MDQwOCwgOTA0MTMsIDkwNDE4LCA5MDQyMywgOTA0MjksIDkwNDM0LCA5MDQ0MCwgOTA0NDYsIAotICAgIDkwNDUyLCA5MDQ1OCwgOTA0NjUsIDkwNDcxLCA5MDQ3OCwgOTA0ODMsIDkwNDg4LCA5MDQ5MywgOTA0OTgsIDkwNTAzLCAKLSAgICA5MDUwOCwgOTA1MTMsIDkwNTE4LCA5MDUyMywgOTA1MjgsIDkwNTMzLCA5MDUzOCwgOTA1NDMsIDkwNTQ4LCA5MDU1MywgCi0gICAgOTA1NTgsIDkwNTYzLCA5MDU2OCwgOTA1NzMsIDkwNTc4LCA5MDU4MywgOTA1ODgsIDkwNTkzLCA5MDU5OCwgOTA2MDMsIAotICAgIDkwNjA4LCA5MDYxMywgOTA2MTgsIDkwNjIzLCA5MDYyOCwgOTA2MzMsIDkwNjM4LCA5MDY0MywgOTA2NDgsIDkwNjUzLCAKLSAgICA5MDY1OCwgOTA2NjMsIDkwNjY4LCA5MDY3MywgOTA2NzgsIDkwNjgzLCA5MDY4OCwgOTA2OTMsIDkwNjk4LCA5MDcwMywgCi0gICAgOTA3MDgsIDkwNzEzLCA5MDcxOCwgOTA3MjMsIDkwNzI4LCA5MDczMywgOTA3MzgsIDkwNzQzLCA5MDc0OCwgOTA3NTMsIAotICAgIDkwNzU4LCA5MDc2MywgOTA3NjgsIDkwNzczLCA5MDc3OCwgOTA3ODMsIDkwNzg4LCA5MDc5MywgOTA3OTgsIDkwODAzLCAKLSAgICA5MDgwOCwgOTA4MTMsIDkwODE4LCA5MDgyMywgOTA4MjgsIDkwODMzLCA5MDgzOCwgOTA4NDMsIDkwODQ4LCA5MDg1MywgCi0gICAgOTA4NTgsIDkwODYzLCA5MDg2OCwgOTA4NzMsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5NywgOTA5MDEsIAotICAgIDkwOTA2LCA5MDkxMSwgOTA5MTYsIDkwOTIxLCA5MDkyNiwgOTA5MzEsIDkwOTM2LCA5MDk0MSwgOTA5NDYsIDkwOTUxLCAKLSAgICA5MDk1NiwgOTA5NjAsIDkwOTY0LCA5MDk2OCwgOTA5NzIsIDkwOTc2LCA5MDk4MCwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgMCwgCi0gICAgMCwgOTA5OTksIDkxMDA0LCA5MTAwOCwgOTEwMTIsIDkxMDE2LCA5MTAyMCwgOTEwMjQsIDkxMDI4LCA5MTAzMiwgOTEwMzYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMDQwLCA5MTA0NCwgOTEwNDgsIDkxMDUyLCAKLSAgICA5MTA1NiwgOTEwNjAsIDAsIDAsIDkxMDY1LCAwLCA5MTA3MCwgOTEwNzQsIDkxMDc5LCA5MTA4NCwgOTEwODksIDkxMDk0LCAKLSAgICA5MTA5OSwgOTExMDQsIDkxMTA5LCA5MTExNCwgOTExMTksIDkxMTIzLCA5MTEyOCwgOTExMzMsIDkxMTM4LCA5MTE0MywgCi0gICAgOTExNDcsIDkxMTUyLCA5MTE1NywgOTExNjIsIDkxMTY3LCA5MTE3MSwgOTExNzYsIDkxMTgxLCA5MTE4NiwgOTExOTEsIAotICAgIDkxMTk1LCA5MTIwMCwgOTEyMDUsIDkxMjEwLCA5MTIxNSwgOTEyMTksIDkxMjI0LCA5MTIyOSwgOTEyMzQsIDkxMjM5LCAKLSAgICA5MTI0NCwgOTEyNDksIDkxMjU0LCA5MTI1OCwgOTEyNjMsIDkxMjY4LCA5MTI3MywgOTEyNzgsIDAsIDkxMjgzLCA5MTI4OCwgCi0gICAgMCwgMCwgMCwgOTEyOTMsIDAsIDAsIDkxMjk4LCA5MTMwMywgOTEzMTAsIDkxMzE3LCA5MTMyNCwgOTEzMzEsIDkxMzM4LCAKLSAgICA5MTM0NSwgOTEzNTIsIDkxMzU5LCA5MTM2NiwgOTEzNzMsIDkxMzgwLCA5MTM4NywgOTEzOTQsIDkxNDAxLCA5MTQwOCwgCi0gICAgOTE0MTUsIDkxNDIyLCA5MTQyOSwgOTE0MzYsIDkxNDQzLCA5MTQ1MCwgMCwgOTE0NTcsIDkxNDY0LCA5MTQ3MCwgOTE0NzYsIAotICAgIDkxNDgyLCA5MTQ4OSwgOTE0OTYsIDkxNTA0LCA5MTUxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE1MjEsIDkxNTI2LCAKLSAgICA5MTUzMSwgOTE1MzYsIDkxNTQxLCA5MTU0NiwgOTE1NTEsIDkxNTU2LCA5MTU2MSwgOTE1NjYsIDkxNTcxLCA5MTU3NiwgCi0gICAgOTE1ODEsIDkxNTg2LCA5MTU5MSwgOTE1OTYsIDkxNjAxLCA5MTYwNiwgOTE2MTEsIDkxNjE2LCA5MTYyMSwgOTE2MjYsIAotICAgIDkxNjMxLCA5MTYzNSwgOTE2NDAsIDkxNjQ1LCA5MTY1MSwgOTE2NTUsIDAsIDAsIDAsIDkxNjU5LCA5MTY2NSwgOTE2NjksIAotICAgIDkxNjc0LCA5MTY3OSwgOTE2ODQsIDkxNjg4LCA5MTY5MywgOTE2OTcsIDkxNzAyLCA5MTcwNywgOTE3MTEsIDkxNzE1LCAKLSAgICA5MTcyMCwgOTE3MjQsIDkxNzI4LCA5MTczMywgOTE3MzgsIDkxNzQyLCA5MTc0NywgOTE3NTIsIDkxNzU3LCA5MTc2MiwgCi0gICAgOTE3NjcsIDkxNzcyLCA5MTc3NywgOTE3ODIsIDAsIDAsIDAsIDAsIDAsIDkxNzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc5MiwgOTE3OTgsIDkxODA0LCA5MTgxMCwgOTE4MTYsIDkxODIyLCA5MTgyOSwgCi0gICAgOTE4MzYsIDkxODQzLCA5MTg0OSwgOTE4NTUsIDkxODYxLCA5MTg2OCwgOTE4NzUsIDkxODgyLCA5MTg4OCwgOTE4OTUsIAotICAgIDkxOTAyLCA5MTkwOSwgOTE5MTYsIDkxOTIyLCA5MTkyOSwgOTE5MzYsIDkxOTQyLCA5MTk0OSwgOTE5NTYsIDkxOTYzLCAKLSAgICA5MTk3MCwgOTE5NzcsIDkxOTgzLCA5MTk5MCwgOTE5OTcsIDkyMDA0LCA5MjAxMCwgOTIwMTYsIDkyMDIyLCA5MjAyOCwgCi0gICAgOTIwMzQsIDkyMDQxLCA5MjA0OCwgOTIwNTQsIDkyMDYwLCA5MjA2NiwgOTIwNzMsIDkyMDc5LCA5MjA4NiwgOTIwOTMsIAotICAgIDkyMTAwLCA5MjEwNiwgOTIxMTQsIDkyMTIxLCA5MjEyNywgOTIxMzQsIDkyMTQxLCA5MjE0OCwgOTIxNTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDkyMTYxLCA5MjE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTIxNzcsIDkyMTgxLCA5MjE4NiwgOTIxOTEsIDAsIDkyMTk3LCA5MjIwMiwgMCwgMCwgMCwgMCwgMCwgOTIyMDcsIDkyMjEzLCAKLSAgICA5MjIyMCwgOTIyMjUsIDkyMjMwLCA5MjIzNCwgOTIyMzksIDkyMjQ0LCAwLCA5MjI0OSwgOTIyNTQsIDkyMjU5LCAwLCAKLSAgICA5MjI2NCwgOTIyNjksIDkyMjc0LCA5MjI3OSwgOTIyODQsIDkyMjg5LCA5MjI5NCwgOTIyOTksIDkyMzA0LCA5MjMwOSwgCi0gICAgOTIzMTQsIDkyMzE4LCA5MjMyMiwgOTIzMjcsIDkyMzMyLCA5MjMzNywgOTIzNDEsIDkyMzQ1LCA5MjM0OSwgOTIzNTQsIAotICAgIDkyMzU5LCA5MjM2NCwgOTIzNjksIDkyMzczLCA5MjM3OCwgOTIzODIsIDkyMzg3LCAwLCAwLCAwLCAwLCA5MjM5MiwgCi0gICAgOTIzOTgsIDkyNDAzLCAwLCAwLCAwLCAwLCA5MjQwOCwgOTI0MTIsIDkyNDE2LCA5MjQyMCwgOTI0MjQsIDkyNDI4LCAKLSAgICA5MjQzMywgOTI0MzgsIDkyNDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ1MCwgOTI0NTYsIDkyNDYzLCA5MjQ2OSwgCi0gICAgOTI0NzYsIDkyNDgyLCA5MjQ4OCwgOTI0OTQsIDkyNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjUwNywgOTI1MTUsIAotICAgIDkyNTIzLCA5MjUzMSwgOTI1MzksIDkyNTQ3LCA5MjU1NSwgOTI1NjMsIDkyNTcxLCA5MjU3OSwgOTI1ODcsIDkyNTk1LCAKLSAgICA5MjYwMywgOTI2MTEsIDkyNjE5LCA5MjYyNywgOTI2MzUsIDkyNjQzLCA5MjY1MSwgOTI2NTksIDkyNjY3LCA5MjY3NSwgCi0gICAgOTI2ODMsIDkyNjkxLCA5MjY5OSwgOTI3MDcsIDkyNzE1LCA5MjcyMywgOTI3MzEsIDkyNzM5LCA5Mjc0NiwgOTI3NTQsIAotICAgIDkyNzYyLCA5Mjc2NiwgOTI3NzEsIDkyNzc2LCA5Mjc4MSwgOTI3ODYsIDkyNzkxLCA5Mjc5NiwgOTI4MDEsIDkyODA1LCAKLSAgICA5MjgxMCwgOTI4MTQsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMyLCA5MjgzNywgOTI4NDIsIDkyODQ3LCA5Mjg1MiwgCisgICAgMCwgMCwgOTIxMTcsIDkyMTIxLCA5MjEyNSwgOTIxMzAsIDkyMTM1LCA5MjE0MCwgOTIxNDUsIDkyMTQ5LCA5MjE1NCwgCisgICAgOTIxNTksIDkyMTY0LCA5MjE2OSwgOTIxNzQsIDkyMTc5LCA5MjE4MywgOTIxODgsIDkyMTkzLCA5MjE5OCwgOTIyMDMsIAorICAgIDkyMjA3LCA5MjIxMiwgOTIyMTcsIDkyMjIxLCA5MjIyNSwgOTIyMzAsIDkyMjM1LCA5MjI0MCwgOTIyNDUsIDkyMjUwLCAwLCAKKyAgICAwLCAwLCA5MjI1NSwgOTIyNTksIDkyMjY0LCA5MjI2OSwgOTIyNzMsIDkyMjc4LCA5MjI4MiwgOTIyODcsIDkyMjkyLCAKKyAgICA5MjI5NywgOTIzMDIsIDkyMzA3LCA5MjMxMSwgOTIzMTYsIDkyMzIxLCA5MjMyNiwgOTIzMzEsIDkyMzM1LCA5MjM0MCwgCisgICAgOTIzNDQsIDkyMzQ5LCA5MjM1NCwgOTIzNTksIDkyMzY0LCA5MjM2OSwgOTIzNzQsIDkyMzc4LCA5MjM4MiwgOTIzODcsIAorICAgIDkyMzkyLCA5MjM5NywgOTI0MDIsIDkyNDA3LCA5MjQxMiwgOTI0MTcsIDkyNDIyLCA5MjQyNywgOTI0MzIsIDkyNDM3LCAKKyAgICA5MjQ0MiwgOTI0NDcsIDkyNDUyLCA5MjQ1NywgOTI0NjIsIDkyNDY3LCA5MjQ3MiwgOTI0NzcsIDkyNDgyLCA5MjQ4NywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI0OTIsIDkyNDk4LCA5MjUwMywgOTI1MDgsIAorICAgIDkyNTEzLCA5MjUxOCwgOTI1MjMsIDkyNTI4LCA5MjUzMywgOTI1MzgsIDkyNTQzLCA5MjU0OSwgOTI1NTUsIDkyNTYxLCAKKyAgICA5MjU2NywgOTI1NzMsIDkyNTc5LCA5MjU4NSwgOTI1OTEsIDkyNTk3LCA5MjYwNCwgOTI2MTEsIDkyNjE4LCA5MjYyNiwgCisgICAgOTI2MzQsIDkyNjQyLCA5MjY1MCwgOTI2NTgsIDAsIDAsIDAsIDAsIDkyNjY2LCA5MjY3MCwgOTI2NzUsIDkyNjgwLCAKKyAgICA5MjY4NSwgOTI2ODksIDkyNjk0LCA5MjY5OSwgOTI3MDQsIDkyNzA5LCA5MjcxMywgOTI3MTcsIDkyNzIyLCA5MjcyNywgCisgICAgOTI3MzIsIDkyNzM3LCA5Mjc0MSwgOTI3NDYsIDkyNzUxLCA5Mjc1NiwgOTI3NjEsIDkyNzY2LCA5Mjc3MSwgOTI3NzUsIAorICAgIDkyNzgwLCA5Mjc4NSwgOTI3OTAsIDkyNzk1LCA5MjgwMCwgOTI4MDUsIDkyODEwLCA5MjgxNSwgOTI4MjAsIDkyODI1LCAKKyAgICA5MjgzMCwgOTI4MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyODQyLCA5Mjg0NywgOTI4NTIsIAogICAgIDkyODU3LCA5Mjg2MiwgOTI4NjcsIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCAKICAgICA5MjkwNywgOTI5MTIsIDkyOTE3LCA5MjkyMiwgOTI5MjcsIDkyOTMyLCA5MjkzNywgOTI5NDIsIDkyOTQ3LCA5Mjk1MiwgCi0gICAgOTI5NTcsIDkyOTYyLCA5Mjk2NywgOTI5NzIsIDkyOTc3LCA5Mjk4MiwgOTI5ODcsIDkyOTkyLCA5Mjk5NywgOTMwMDIsIAotICAgIDkzMDA3LCA5MzAxMiwgOTMwMTcsIDkzMDIyLCAwLCAwLCAwLCA5MzAyNywgOTMwMzIsIDkzMDQxLCA5MzA0OSwgOTMwNTgsIAotICAgIDkzMDY3LCA5MzA3OCwgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCAKLSAgICA5MzE0NSwgOTMxNTIsIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgCi0gICAgOTMyMTUsIDkzMjIyLCA5MzIyOSwgOTMyMzYsIDAsIDAsIDkzMjQzLCA5MzI0OSwgOTMyNTUsIDkzMjYxLCA5MzI2NywgCi0gICAgOTMyNzQsIDkzMjgxLCA5MzI4OSwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIAotICAgIDkzMzQ2LCA5MzM1MywgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgOTM0MDIsIDkzNDA5LCAKLSAgICA5MzQxNiwgOTM0MjMsIDAsIDAsIDAsIDAsIDAsIDkzNDMwLCA5MzQzNiwgOTM0NDIsIDkzNDQ4LCA5MzQ1NCwgOTM0NjEsIAotICAgIDkzNDY4LCA5MzQ3NiwgOTM0ODQsIDkzNDkwLCA5MzQ5NiwgOTM1MDMsIDkzNTA5LCA5MzUxNSwgOTM1MjEsIDkzNTI3LCAKLSAgICA5MzUzNCwgOTM1NDEsIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgCi0gICAgOTM2MDQsIDkzNjExLCA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIAotICAgIDkzNjc0LCA5MzY4MSwgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCAKLSAgICA5Mzc0NCwgOTM3NTEsIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgCi0gICAgOTM4MTQsIDkzODIxLCA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIAotICAgIDkzODg0LCA5Mzg5MSwgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCAKLSAgICA5Mzk1NCwgOTM5NjEsIDkzOTY4LCA5Mzk3NSwgOTM5ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDkyOTU3LCA5Mjk2MiwgOTI5NjcsIDkyOTcyLCAwLCAwLCAwLCAwLCAwLCA5Mjk3OSwgOTI5ODUsIDkyOTkxLCA5Mjk5NywgCisgICAgOTMwMDMsIDkzMDA4LCA5MzAxNCwgOTMwMjAsIDkzMDI2LCA5MzAzMiwgOTMwMzcsIDkzMDQzLCA5MzA0OSwgOTMwNTUsIAorICAgIDkzMDYxLCA5MzA2NywgOTMwNzMsIDkzMDc5LCA5MzA4NSwgOTMwOTEsIDkzMDk2LCA5MzEwMiwgOTMxMDgsIDkzMTE0LCAKKyAgICA5MzEyMCwgOTMxMjYsIDkzMTMxLCA5MzEzNywgOTMxNDMsIDkzMTQ4LCA5MzE1NCwgOTMxNjAsIDkzMTY2LCA5MzE3MiwgCisgICAgOTMxNzgsIDkzMTg0LCA5MzE5MCwgOTMxOTUsIDkzMjAxLCA5MzIwOCwgOTMyMTUsIDkzMjIyLCA5MzIyOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTMyMzYsIDkzMjQxLCA5MzI0NiwgOTMyNTEsIDkzMjU2LCA5MzI2MSwgOTMyNjYsIDkzMjcxLCA5MzI3NiwgCisgICAgOTMyODEsIDkzMjg2LCA5MzI5MSwgOTMyOTYsIDkzMzAxLCA5MzMwNiwgOTMzMTEsIDkzMzE2LCA5MzMyMSwgOTMzMjYsIAorICAgIDkzMzMxLCA5MzMzNiwgOTMzNDEsIDkzMzQ2LCA5MzM1MSwgOTMzNTYsIDkzMzYxLCA5MzM2NiwgOTMzNzAsIDkzMzc0LCAKKyAgICA5MzM3OCwgMCwgOTMzODMsIDkzMzg5LCA5MzM5NCwgOTMzOTksIDkzNDA0LCA5MzQwOSwgOTM0MTUsIDkzNDIxLCA5MzQyNywgCisgICAgOTM0MzMsIDkzNDM5LCA5MzQ0NSwgOTM0NTEsIDkzNDU3LCA5MzQ2MywgOTM0NjksIDkzNDc1LCA5MzQ4MSwgOTM0ODcsIAorICAgIDkzNDkyLCA5MzQ5OCwgOTM1MDQsIDkzNTA5LCA5MzUxNSwgOTM1MjAsIDkzNTI2LCA5MzUzMiwgOTM1MzcsIDkzNTQzLCAKKyAgICA5MzU0OSwgOTM1NTUsIDkzNTYxLCA5MzU2NywgOTM1NzMsIDkzNTc5LCA5MzU4NSwgOTM1OTEsIDAsIDAsIDAsIDAsIAorICAgIDkzNTk2LCA5MzYwMiwgOTM2MDgsIDkzNjE0LCA5MzYyMCwgOTM2MjYsIDkzNjMyLCA5MzYzOCwgOTM2NDQsIDkzNjUxLCAKKyAgICA5MzY1NiwgOTM2NjEsIDkzNjY3LCA5MzY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOTM2NzksIDkzNjg1LCA5MzY5MSwgOTM2OTcsIDkzNzA0LCA5MzcxMCwgOTM3MTcsIDkzNzI0LCA5MzczMSwgCisgICAgOTM3MzgsIDkzNzQ2LCA5Mzc1MywgOTM3NjEsIDkzNzY3LCA5Mzc3MywgOTM3NzksIDkzNzg1LCA5Mzc5MSwgOTM3OTcsIAorICAgIDkzODAzLCA5MzgwOSwgOTM4MTUsIDkzODIxLCA5MzgyNywgOTM4MzMsIDkzODM5LCA5Mzg0NSwgOTM4NTEsIDkzODU3LCAKKyAgICA5Mzg2MywgOTM4NjksIDkzODc1LCA5Mzg4MSwgOTM4ODcsIDkzODkzLCA5Mzg5OSwgOTM5MDUsIDkzOTExLCA5MzkxNywgCisgICAgOTM5MjMsIDkzOTI5LCA5MzkzNSwgOTM5NDEsIDkzOTQ3LCA5Mzk1NCwgOTM5NjAsIDkzOTY3LCA5Mzk3NCwgOTM5ODEsIAorICAgIDkzOTg4LCA5Mzk5NiwgOTQwMDMsIDk0MDExLCA5NDAxNywgOTQwMjMsIDk0MDI5LCA5NDAzNSwgOTQwNDEsIDk0MDQ3LCAKKyAgICA5NDA1MywgOTQwNTksIDk0MDY1LCA5NDA3MSwgOTQwNzcsIDk0MDgzLCA5NDA4OSwgOTQwOTUsIDk0MTAxLCA5NDEwNywgCisgICAgOTQxMTMsIDk0MTE5LCA5NDEyNSwgOTQxMzEsIDk0MTM3LCA5NDE0MywgOTQxNDksIDk0MTU1LCA5NDE2MSwgOTQxNjcsIAorICAgIDk0MTczLCA5NDE3OSwgOTQxODQsIDk0MTg5LCA5NDE5NCwgOTQxOTksIDk0MjA0LCA5NDIwOSwgOTQyMTQsIDk0MjE5LCAKKyAgICA5NDIyNCwgOTQyMjksIDk0MjM0LCA5NDIzOSwgOTQyNDQsIDk0MjQ5LCA5NDI1NCwgOTQyNTksIDk0MjY0LCA5NDI2OSwgCisgICAgOTQyNzQsIDk0Mjc5LCA5NDI4NCwgOTQyODksIDk0Mjk0LCA5NDI5OSwgOTQzMDQsIDk0MzA5LCA5NDMxNCwgOTQzMTksIAorICAgIDk0MzI0LCA5NDMyOSwgOTQzMzQsIDk0MzM5LCA5NDM0NCwgOTQzNDksIDk0MzU0LCA5NDM1OSwgOTQzNjQsIDk0MzY5LCAKKyAgICA5NDM3NCwgOTQzNzksIDk0Mzg0LCA5NDM4OSwgOTQzOTQsIDk0Mzk5LCA5NDQwNCwgOTQ0MDksIDk0NDE0LCA5NDQxOSwgCisgICAgOTQ0MjQsIDk0NDI5LCA5NDQzNCwgOTQ0MzksIDk0NDQ0LCA5NDQ0OSwgOTQ0NTQsIDk0NDU5LCA5NDQ2NCwgOTQ0NjksIAorICAgIDk0NDc0LCA5NDQ3OSwgOTQ0ODQsIDk0NDg5LCA5NDQ5NCwgOTQ0OTksIDk0NTA0LCA5NDUwOSwgOTQ1MTQsIDk0NTE5LCAKKyAgICA5NDUyMywgOTQ1MjcsIDk0NTMxLCA5NDUzNSwgOTQ1MzksIDk0NTQzLCA5NDU0NywgOTQ1NTIsIDk0NTU3LCAwLCAwLCAKKyAgICA5NDU2MiwgOTQ1NjcsIDk0NTcxLCA5NDU3NSwgOTQ1NzksIDk0NTgzLCA5NDU4NywgOTQ1OTEsIDk0NTk1LCA5NDU5OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ2MDMsIDk0NjA3LCA5NDYxMiwgOTQ2MTcsIDk0NjIyLCAKKyAgICA5NDYyNywgOTQ2MzIsIDk0NjM3LCA5NDY0MiwgOTQ2NDYsIDk0NjUxLCA5NDY1NiwgOTQ2NjEsIDk0NjY2LCA5NDY3MCwgCisgICAgOTQ2NzUsIDk0NjgwLCA5NDY4NSwgOTQ2OTAsIDk0Njk1LCA5NDcwMCwgOTQ3MDQsIDk0NzA5LCA5NDcxMywgOTQ3MTgsIAorICAgIDk0NzIzLCA5NDcyOCwgOTQ3MzMsIDk0NzM4LCA5NDc0MywgOTQ3NDgsIDk0NzUzLCA5NDc1NywgOTQ3NjIsIDk0NzY3LCAKKyAgICA5NDc3MiwgOTQ3NzcsIDk0NzgyLCA5NDc4NywgOTQ3OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0Nzk3LCA5NDgwNCwgCisgICAgOTQ4MTEsIDk0ODE4LCA5NDgyNSwgOTQ4MzIsIDk0ODM5LCA5NDg0NiwgOTQ4NTMsIDk0ODYwLCA5NDg2NywgOTQ4NzQsIAorICAgIDk0ODgxLCA5NDg4OCwgOTQ4OTUsIDk0OTAyLCA5NDkwOSwgOTQ5MTYsIDk0OTIzLCA5NDkzMCwgOTQ5MzcsIDk0OTQ0LCAKKyAgICA5NDk1MSwgOTQ5NTgsIDk0OTY1LCA5NDk3MiwgOTQ5NzksIDk0OTg2LCA5NDk5MywgOTUwMDAsIDk1MDA3LCA5NTAxNCwgCisgICAgOTUwMjEsIDk1MDI4LCA5NTAzNSwgOTUwNDIsIDk1MDQ5LCA5NTA1NiwgOTUwNjMsIDk1MDcwLCA5NTA3NywgOTUwODQsIAorICAgIDk1MDkxLCA5NTA5OCwgOTUxMDUsIDk1MTEyLCA5NTExOSwgOTUxMjYsIDk1MTMzLCA5NTE0MCwgOTUxNDcsIDk1MTU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM5ODksIDkzOTkzLCAKLSAgICA5Mzk5NywgOTQwMDEsIDk0MDA1LCA5NDAwOSwgOTQwMTMsIDk0MDE3LCA5NDAyMSwgOTQwMjUsIDk0MDMwLCA5NDAzNSwgCi0gICAgOTQwNDAsIDk0MDQ1LCA5NDA1MCwgOTQwNTUsIDk0MDYwLCA5NDA2NSwgOTQwNzAsIDk0MDc2LCA5NDA4MiwgOTQwODgsIAotICAgIDk0MDk1LCA5NDEwMiwgOTQxMDksIDk0MTE2LCA5NDEyMywgOTQxMzAsIDk0MTM3LCA5NDE0NCwgOTQxNTEsIDAsIDk0MTU4LCAKLSAgICA5NDE2MiwgOTQxNjYsIDk0MTcwLCA5NDE3NCwgOTQxNzgsIDk0MTgxLCA5NDE4NSwgOTQxODgsIDk0MTkyLCA5NDE5NSwgCi0gICAgOTQxOTksIDk0MjAzLCA5NDIwOCwgOTQyMTIsIDk0MjE3LCA5NDIyMCwgOTQyMjQsIDk0MjI3LCA5NDIzMSwgOTQyMzQsIAotICAgIDk0MjM4LCA5NDI0MiwgOTQyNDYsIDk0MjUwLCA5NDI1NCwgOTQyNTgsIDk0MjYyLCA5NDI2NiwgOTQyNzAsIDk0Mjc0LCAKLSAgICA5NDI3OCwgOTQyODIsIDk0Mjg2LCA5NDI5MCwgOTQyOTQsIDk0Mjk4LCA5NDMwMiwgOTQzMDYsIDk0MzA5LCA5NDMxMiwgCi0gICAgOTQzMTYsIDk0MzIwLCA5NDMyNCwgOTQzMjcsIDk0MzMwLCA5NDMzMywgOTQzMzcsIDk0MzQxLCA5NDM0NSwgOTQzNDksIAotICAgIDk0MzUyLCA5NDM1NSwgOTQzNTksIDk0MzY1LCA5NDM3MSwgOTQzNzcsIDk0MzgyLCA5NDM4OSwgOTQzOTMsIDk0Mzk4LCAKLSAgICA5NDQwMiwgOTQ0MDcsIDk0NDEyLCA5NDQxOCwgOTQ0MjMsIDk0NDI5LCA5NDQzMywgOTQ0MzgsIDk0NDQyLCA5NDQ0NywgCi0gICAgOTQ0NTAsIDk0NDUzLCA5NDQ1NywgOTQ0NjIsIDk0NDY4LCA5NDQ3MywgOTQ0NzksIDAsIDAsIDAsIDAsIDk0NDg0LCAKLSAgICA5NDQ4NywgOTQ0OTAsIDk0NDkzLCA5NDQ5NiwgOTQ0OTksIDk0NTAyLCA5NDUwNSwgOTQ1MDgsIDk0NTExLCA5NDUxNSwgCi0gICAgOTQ1MTksIDk0NTIzLCA5NDUyNywgOTQ1MzEsIDk0NTM1LCA5NDUzOSwgOTQ1NDMsIDk0NTQ3LCA5NDU1MiwgOTQ1NTcsIAotICAgIDk0NTYxLCA5NDU2NCwgOTQ1NjcsIDk0NTcwLCA5NDU3MywgOTQ1NzYsIDk0NTc5LCA5NDU4MiwgOTQ1ODUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NTg4LCA5NDU5MywgOTQ1OTgsIDk0NjAzLCA5NDYwNywgCi0gICAgOTQ2MTIsIDk0NjE2LCA5NDYyMSwgOTQ2MjUsIDk0NjMwLCA5NDYzNCwgOTQ2MzksIDk0NjQzLCA5NDY0OCwgOTQ2NTIsIAotICAgIDk0NjU3LCA5NDY2MiwgOTQ2NjcsIDk0NjcyLCA5NDY3NywgOTQ2ODIsIDk0Njg3LCA5NDY5MiwgOTQ2OTcsIDk0NzAyLCAKLSAgICA5NDcwNywgOTQ3MTIsIDk0NzE3LCA5NDcyMiwgOTQ3MjcsIDk0NzMyLCA5NDczNywgOTQ3NDIsIDk0NzQ3LCA5NDc1MiwgCi0gICAgOTQ3NTYsIDk0NzYwLCA5NDc2NSwgOTQ3NzAsIDk0Nzc1LCA5NDc3OSwgOTQ3ODMsIDk0Nzg3LCA5NDc5MiwgOTQ3OTcsIAotICAgIDk0ODAyLCA5NDgwNywgOTQ4MTEsIDk0ODE1LCA5NDgyMSwgOTQ4MjYsIDk0ODMyLCA5NDgzNywgOTQ4NDMsIDk0ODQ4LCAKLSAgICA5NDg1NCwgOTQ4NTksIDk0ODY1LCA5NDg3MCwgOTQ4NzUsIDk0ODgwLCA5NDg4NSwgOTQ4ODksIDk0ODk0LCA5NDkwMCwgCi0gICAgOTQ5MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0OTA5LCA5NDkxNiwgOTQ5MjMsIAotICAgIDk0OTMwLCA5NDkzNywgOTQ5NDQsIDk0OTUxLCA5NDk1OCwgOTQ5NjUsIDk0OTcyLCA5NDk3OSwgOTQ5ODYsIDk0OTkzLCAKLSAgICA5NTAwMCwgOTUwMDcsIDk1MDE0LCA5NTAyMSwgOTUwMjgsIDk1MDM1LCA5NTA0MiwgOTUwNDksIDk1MDU2LCA5NTA2MywgCi0gICAgOTUwNzAsIDk1MDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTA4NCwgOTUwOTEsIDk1MDk3LCA5NTEwMywgOTUxMDksIAotICAgIDk1MTE1LCA5NTEyMSwgOTUxMjcsIDk1MTMzLCA5NTEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgOTUxNDUsIDk1MTUwLCA5NTE1NSwgCi0gICAgOTUxNjAsIDk1MTY1LCA5NTE2OSwgOTUxNzMsIDk1MTc3LCA5NTE4MiwgOTUxODcsIDk1MTkyLCA5NTE5NywgOTUyMDIsIAotICAgIDk1MjA3LCA5NTIxMiwgOTUyMTcsIDk1MjIyLCA5NTIyNywgOTUyMzIsIDk1MjM3LCA5NTI0MiwgOTUyNDcsIDk1MjUyLCAKLSAgICA5NTI1NywgOTUyNjIsIDk1MjY3LCA5NTI3MiwgOTUyNzcsIDk1MjgyLCA5NTI4NywgOTUyOTIsIDk1Mjk3LCA5NTMwMiwgCi0gICAgOTUzMDcsIDk1MzEyLCA5NTMxNywgOTUzMjIsIDk1MzI3LCA5NTMzMiwgOTUzMzcsIDk1MzQyLCA5NTM0NywgOTUzNTMsIAotICAgIDk1MzU4LCA5NTM2NCwgOTUzNjksIDk1Mzc1LCA5NTM4MCwgOTUzODYsIDk1MzkyLCA5NTM5NiwgOTU0MDEsIDk1NDA1LCAwLCAKLSAgICA5NTQwOSwgOTU0MTQsIDk1NDE4LCA5NTQyMiwgOTU0MjYsIDk1NDMwLCA5NTQzNCwgOTU0MzgsIDk1NDQyLCA5NTQ0NiwgCi0gICAgOTU0NTAsIDk1NDU1LCA5NTQ1OSwgOTU0NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NDY5LCAKLSAgICA5NTQ3MywgOTU0NzcsIDk1NDgxLCA5NTQ4NCwgOTU0ODgsIDk1NDkxLCA5NTQ5NSwgOTU0OTgsIDk1NTAyLCA5NTUwNiwgCi0gICAgOTU1MTEsIDk1NTE1LCA5NTUyMCwgOTU1MjMsIDk1NTI3LCA5NTUzMCwgOTU1MzQsIDk1NTM3LCA5NTU0MSwgOTU1NDUsIAotICAgIDk1NTQ5LCA5NTU1MywgOTU1NTcsIDk1NTYxLCA5NTU2NSwgOTU1NjksIDk1NTczLCA5NTU3NywgOTU1ODEsIDk1NTg1LCAKLSAgICA5NTU4OSwgOTU1OTMsIDk1NTk3LCA5NTYwMSwgOTU2MDUsIDk1NjA5LCA5NTYxMiwgOTU2MTUsIDk1NjE5LCA5NTYyMywgCi0gICAgOTU2MjcsIDk1NjMwLCA5NTYzMywgOTU2MzYsIDk1NjQwLCA5NTY0NCwgOTU2NDgsIDk1NjUyLCA5NTY1NiwgOTU2NTksIAotICAgIDk1NjYyLCA5NTY2NywgOTU2NzEsIDk1Njc2LCA5NTY4MCwgOTU2ODUsIDk1NjkwLCA5NTY5NiwgOTU3MDEsIDk1NzA3LCAKLSAgICA5NTcxMSwgOTU3MTYsIDk1NzIwLCA5NTcyNSwgOTU3MjksIDk1NzMzLCA5NTczNywgOTU3NDEsIDk1NzQ0LCA5NTc0NywgCi0gICAgOTU3NTEsIDk1NzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc1OCwgOTU3NjIsIDk1NzY1LCA5NTc2OCwgOTU3NzEsIAotICAgIDk1Nzc0LCA5NTc3NywgOTU3ODAsIDk1NzgzLCA5NTc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTU3ODksIDk1NzkzLCA5NTc5OCwgOTU4MDIsIDk1ODA3LCA5NTgxMSwgOTU4MTYsIDk1ODIwLCA5NTgyNSwgOTU4MjksIAotICAgIDk1ODM0LCA5NTgzOCwgOTU4NDMsIDk1ODQ4LCA5NTg1MywgOTU4NTgsIDk1ODYzLCA5NTg2OCwgOTU4NzMsIDk1ODc4LCAKLSAgICA5NTg4MywgOTU4ODgsIDk1ODkzLCA5NTg5OCwgOTU5MDMsIDk1OTA4LCA5NTkxMywgOTU5MTgsIDk1OTIzLCA5NTkyOCwgCi0gICAgOTU5MzIsIDk1OTM2LCA5NTk0MSwgOTU5NDYsIDk1OTUxLCA5NTk1NSwgOTU5NTksIDk1OTYzLCA5NTk2OCwgOTU5NzMsIAotICAgIDk1OTc4LCA5NTk4MiwgOTU5ODYsIDk1OTkxLCA5NTk5NiwgOTYwMDEsIDk2MDA3LCA5NjAxMiwgOTYwMTgsIDk2MDIzLCAKLSAgICA5NjAyOSwgOTYwMzQsIDk2MDQwLCA5NjA0NSwgOTYwNTEsIDk2MDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA2MSwgCi0gICAgOTYwNjYsIDk2MDcwLCA5NjA3NCwgOTYwNzgsIDk2MDgyLCA5NjA4NiwgOTYwOTAsIDk2MDk0LCA5NjA5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOTYxMDIsIDk2MTA1LCA5NjExMCwgOTYxMTYsIDk2MTI0LCA5NjEyOSwgOTYxMzUsIDk2MTQzLCA5NjE0OSwgCi0gICAgOTYxNTUsIDk2MTU5LCA5NjE2MywgOTYxNzAsIDk2MTc5LCA5NjE4NiwgOTYxOTUsIDk2MjAxLCA5NjIxMCwgOTYyMTcsIAotICAgIDk2MjI0LCA5NjIzMSwgOTYyNDEsIDk2MjQ3LCA5NjI1MSwgOTYyNTgsIDk2MjY3LCA5NjI3NywgOTYyODQsIDk2MjkxLCAKLSAgICA5NjI5NSwgOTYyOTksIDk2MzA2LCA5NjMxNiwgOTYzMjAsIDk2MzI3LCA5NjMzNCwgOTYzNDEsIDk2MzQ3LCA5NjM1NCwgCi0gICAgOTYzNjEsIDk2MzY4LCA5NjM3NSwgOTYzNzksIDk2MzgzLCA5NjM4NywgOTYzOTQsIDk2Mzk4LCA5NjQwNSwgOTY0MTIsIAotICAgIDk2NDI2LCA5NjQzNSwgOTY0MzksIDk2NDQzLCA5NjQ0NywgOTY0NTQsIDk2NDU4LCA5NjQ2MiwgOTY0NjYsIDk2NDc0LCAKLSAgICA5NjQ4MiwgOTY1MDEsIDk2NTExLCA5NjUzMSwgOTY1MzUsIDk2NTM5LCA5NjU0MywgOTY1NDcsIDk2NTUxLCA5NjU1NSwgCi0gICAgOTY1NTksIDk2NTY2LCA5NjU3MCwgOTY1NzMsIDk2NTc3LCA5NjU4MSwgOTY1ODcsIDk2NTk0LCA5NjYwMywgOTY2MDcsIAotICAgIDk2NjE2LCA5NjYyNSwgOTY2MzMsIDk2NjM3LCA5NjY0NCwgOTY2NDgsIDk2NjUyLCA5NjY1NiwgOTY2NjAsIDk2NjcxLCAKLSAgICA5NjY4MCwgOTY2ODksIDk2Njk4LCA5NjcwNywgOTY3MTksIDk2NzI4LCA5NjczNywgOTY3NDYsIDk2NzU0LCA5Njc2MywgCi0gICAgOTY3NzUsIDk2Nzg0LCA5Njc5MywgOTY4MDIsIDk2ODE0LCA5NjgyMywgOTY4MzIsIDk2ODQ0LCA5Njg1MywgOTY4NjIsIAotICAgIDk2ODc0LCA5Njg4MywgOTY4ODcsIDk2ODkxLCA5Njg5NSwgOTY4OTksIDk2OTAzLCA5NjkwNywgOTY5MTEsIDk2OTE4LCAKLSAgICA5NjkyMiwgOTY5MjYsIDk2OTM3LCA5Njk0MSwgOTY5NDUsIDk2OTUyLCA5Njk1OCwgOTY5NjQsIDk2OTY4LCA5Njk3NSwgCi0gICAgOTY5NzksIDk2OTgzLCA5Njk4NywgOTY5OTEsIDk2OTk1LCA5Njk5OSwgOTcwMDUsIDk3MDEzLCA5NzAxNywgOTcwMjEsIAotICAgIDk3MDI0LCA5NzAzMCwgOTcwNDAsIDk3MDQ0LCA5NzA1NiwgOTcwNjMsIDk3MDcwLCA5NzA3NywgOTcwODQsIDk3MDkwLCAKLSAgICA5NzA5NCwgOTcwOTgsIDk3MTAyLCA5NzEwNiwgOTcxMTMsIDk3MTIyLCA5NzEyOSwgOTcxMzcsIDk3MTQ1LCA5NzE1MSwgCi0gICAgOTcxNTUsIDk3MTU5LCA5NzE2MywgOTcxNjcsIDk3MTczLCA5NzE4MiwgOTcxOTQsIDk3MjAxLCA5NzIwOCwgOTcyMTcsIAotICAgIDk3MjI4LCA5NzIzNCwgOTcyNDMsIDk3MjUyLCA5NzI1OSwgOTcyNjgsIDk3Mjc1LCA5NzI4MiwgOTcyOTIsIDk3Mjk5LCAKLSAgICA5NzMwNiwgOTczMTMsIDk3MzIwLCA5NzMyNCwgOTczMzAsIDk3MzM0LCA5NzM0NSwgOTczNTMsIDk3MzYyLCA5NzM3NCwgCi0gICAgOTczODEsIDk3Mzg4LCA5NzM5OCwgOTc0MDUsIDk3NDE0LCA5NzQyMSwgOTc0MzAsIDk3NDM3LCA5NzQ0NCwgOTc0NTQsIAotICAgIDk3NDYxLCA5NzQ2OCwgOTc0NzgsIDk3NDg1LCA5NzQ5NywgOTc1MDYsIDk3NTEzLCA5NzUyMCwgOTc1MjcsIDk3NTM2LCAKLSAgICA5NzU0NiwgOTc1NTksIDk3NTY2LCA5NzU3NiwgOTc1ODYsIDk3NTkzLCA5NzYwMiwgOTc2MTUsIDk3NjIyLCA5NzYyOSwgCi0gICAgOTc2MzYsIDk3NjQ2LCA5NzY1NiwgOTc2NjMsIDk3NjczLCA5NzY4MCwgOTc2ODcsIDk3Njk3LCA5NzcwMywgOTc3MTAsIAotICAgIDk3NzE3LCA5NzcyNCwgOTc3MzQsIDk3NzQxLCA5Nzc0OCwgOTc3NTUsIDk3NzYxLCA5Nzc2OCwgOTc3NzgsIDk3Nzg1LCAKLSAgICA5Nzc4OSwgOTc3OTcsIDk3ODAxLCA5NzgxMywgOTc4MTcsIDk3ODMxLCA5NzgzNSwgOTc4MzksIDk3ODQzLCA5Nzg0NywgCi0gICAgOTc4NTMsIDk3ODYwLCA5Nzg2OCwgOTc4NzIsIDk3ODc2LCA5Nzg4MCwgOTc4ODQsIDk3ODkxLCA5Nzg5NSwgOTc5MDEsIAotICAgIDk3OTA3LCA5NzkxNSwgOTc5MTksIDk3OTI2LCA5NzkzNCwgOTc5MzgsIDk3OTQyLCA5Nzk0OCwgOTc5NTIsIDk3OTYxLCAKLSAgICA5Nzk3MCwgOTc5NzcsIDk3OTg3LCA5Nzk5MywgOTc5OTcsIDk4MDAxLCA5ODAwOSwgOTgwMTYsIDk4MDIzLCA5ODAyOSwgCi0gICAgOTgwMzMsIDk4MDQxLCA5ODA0NSwgOTgwNTIsIDk4MDY0LCA5ODA3MSwgOTgwODEsIDk4MDg3LCA5ODA5MSwgOTgxMDAsIAotICAgIDk4MTA3LCA5ODExNiwgOTgxMjAsIDk4MTI0LCA5ODEzMSwgOTgxMzUsIDk4MTM5LCA5ODE0MywgOTgxNDcsIDk4MTUwLCAKLSAgICA5ODE1NiwgOTgxNjIsIDk4MTY2LCA5ODE3MCwgOTgxNzcsIDk4MTg0LCA5ODE5MSwgOTgxOTgsIDk4MjA1LCA5ODIxMiwgCi0gICAgOTgyMTksIDk4MjI2LCA5ODIzMiwgOTgyMzYsIDk4MjQwLCA5ODI0NywgOTgyNTQsIDk4MjYxLCA5ODI2OCwgOTgyNzUsIAotICAgIDk4Mjc5LCA5ODI4MiwgOTgyODcsIDk4MjkxLCA5ODI5NSwgOTgzMDQsIDk4MzEzLCA5ODMxNywgOTgzMjEsIDk4MzI3LCAKLSAgICA5ODMzMywgOTgzNTAsIDk4MzU2LCA5ODM2MCwgOTgzNjksIDk4MzczLCA5ODM3NywgOTgzODQsIDk4MzkyLCA5ODQwMCwgCi0gICAgOTg0MDYsIDk4NDEwLCA5ODQxNCwgOTg0MTgsIDk4NDIyLCA5ODQyNSwgOTg0MzEsIDk4NDM4LCA5ODQ0OCwgOTg0NTUsIAotICAgIDk4NDYyLCA5ODQ2OSwgOTg0NzUsIDk4NDgyLCA5ODQ4OSwgOTg0OTYsIDk4NTAzLCA5ODUxMCwgOTg1MTksIDk4NTI2LCAKLSAgICA5ODUzOCwgOTg1NDUsIDk4NTUyLCA5ODU2MiwgOTg1NzMsIDk4NTgwLCA5ODU4NywgOTg1OTQsIDk4NjAxLCA5ODYwOCwgCi0gICAgOTg2MTUsIDk4NjIyLCA5ODYyOSwgOTg2MzYsIDk4NjQzLCA5ODY1MywgOTg2NjMsIDk4NjczLCA5ODY4MCwgOTg2OTAsIAotICAgIDk4Njk3LCA5ODcwNCwgOTg3MTEsIDk4NzE4LCA5ODcyNCwgOTg3MzEsIDk4NzM4LCA5ODc0NSwgOTg3NTIsIDk4NzU5LCAKLSAgICA5ODc2NiwgOTg3NzMsIDk4NzgwLCA5ODc4NiwgOTg3OTMsIDk4ODAwLCA5ODgwOSwgOTg4MTYsIDk4ODIzLCA5ODgyNywgCi0gICAgOTg4MzUsIDk4ODM5LCA5ODg0MywgOTg4NDcsIDk4ODUxLCA5ODg1NSwgOTg4NjIsIDk4ODY2LCA5ODg3NSwgOTg4NzksIAotICAgIDk4ODg2LCA5ODg5NCwgOTg4OTgsIDk4OTAyLCA5ODkwNiwgOTg5MTksIDk4OTM1LCA5ODkzOSwgOTg5NDMsIDk4OTUwLCAKLSAgICA5ODk1NiwgOTg5NjMsIDk4OTY3LCA5ODk3MSwgOTg5NzUsIDk4OTc5LCA5ODk4MywgOTg5OTAsIDk4OTk0LCA5OTAxMiwgCi0gICAgOTkwMTYsIDk5MDIwLCA5OTAyNywgOTkwMzEsIDk5MDM1LCA5OTA0MSwgOTkwNDUsIDk5MDQ5LCA5OTA1NywgOTkwNjEsIAotICAgIDk5MDY1LCA5OTA2OSwgOTkwNzMsIDk5MDc5LCA5OTA5MCwgOTkwOTksIDk5MTA4LCA5OTExNSwgOTkxMjIsIDk5MTMzLCAKLSAgICA5OTE0MCwgOTkxNDcsIDk5MTU0LCA5OTE2MSwgOTkxNjgsIDk5MTc1LCA5OTE4MiwgOTkxOTIsIDk5MTk4LCA5OTIwNSwgCi0gICAgOTkyMTUsIDk5MjI0LCA5OTIzMSwgOTkyNDAsIDk5MjUwLCA5OTI1NywgOTkyNjQsIDk5MjcxLCA5OTI3OCwgOTkyOTAsIAotICAgIDk5Mjk3LCA5OTMwNCwgOTkzMTEsIDk5MzE4LCA5OTMyNSwgOTkzMzUsIDk5MzQyLCA5OTM0OSwgOTkzNTksIDk5MzcyLCAKLSAgICA5OTM4NCwgOTkzOTEsIDk5NDAxLCA5OTQwOCwgOTk0MTUsIDk5NDIyLCA5OTQzNiwgOTk0NDIsIDk5NDUwLCA5OTQ2MCwgCi0gICAgOTk0NzAsIDk5NDc3LCA5OTQ4NCwgOTk0OTAsIDk5NDk0LCA5OTUwMSwgOTk1MTEsIDk5NTE3LCA5OTUzMCwgOTk1MzQsIAotICAgIDk5NTM4LCA5OTU0NSwgOTk1NDksIDk5NTU2LCA5OTU2NiwgOTk1NzAsIDk5NTc0LCA5OTU3OCwgOTk1ODIsIDk5NTg2LCAKLSAgICA5OTU5MywgOTk1OTcsIDk5NjA0LCA5OTYxMSwgOTk2MTgsIDk5NjI3LCA5OTYzNiwgOTk2NDYsIDk5NjUzLCA5OTY2MCwgCi0gICAgOTk2NjcsIDk5Njc3LCA5OTY4NCwgOTk2OTQsIDk5NzAxLCA5OTcxMSwgOTk3MTgsIDk5NzI1LCA5OTczNSwgOTk3NDUsIAotICAgIDk5NzUyLCA5OTc1OCwgOTk3NjYsIDk5Nzc0LCA5OTc4MCwgOTk3ODYsIDk5NzkwLCA5OTc5NCwgOTk4MDEsIDk5ODA5LCAKLSAgICA5OTgxNSwgOTk4MTksIDk5ODIzLCA5OTgyNywgOTk4MzQsIDk5ODQ2LCA5OTg0OSwgOTk4NTYsIDk5ODYyLCA5OTg2NiwgCi0gICAgOTk4NzAsIDk5ODc0LCA5OTg3OCwgOTk4ODIsIDk5ODg2LCA5OTg5MCwgOTk4OTQsIDk5ODk4LCA5OTkwMiwgOTk5MDksIAotICAgIDk5OTEzLCA5OTkxOSwgOTk5MjMsIDk5OTI3LCA5OTkzMSwgOTk5MzcsIDk5OTQ0LCA5OTk1MSwgOTk5NTgsIDk5OTY5LCAKLSAgICA5OTk3NywgOTk5ODEsIDk5OTg3LCA5OTk5NiwgMTAwMDAzLCAxMDAwMDksIDEwMDAxMiwgMTAwMDE2LCAxMDAwMjAsIAotICAgIDEwMDAyNiwgMTAwMDM1LCAxMDAwNDMsIDEwMDA0NywgMTAwMDUzLCAxMDAwNTcsIDEwMDA2MSwgMTAwMDY1LCAxMDAwNzEsIAotICAgIDEwMDA3OCwgMTAwMDg0LCAxMDAwODgsIDEwMDA5NCwgMTAwMDk4LCAxMDAxMDIsIDEwMDExMSwgMTAwMTIzLCAxMDAxMjcsIAotICAgIDEwMDEzNCwgMTAwMTQxLCAxMDAxNTEsIDEwMDE1OCwgMTAwMTcwLCAxMDAxNzcsIDEwMDE4NCwgMTAwMTkxLCAxMDAyMDIsIAotICAgIDEwMDIxMiwgMTAwMjI1LCAxMDAyMzUsIDEwMDI0MiwgMTAwMjQ2LCAxMDAyNTAsIDEwMDI1NCwgMTAwMjU4LCAxMDAyNjcsIAotICAgIDEwMDI3NiwgMTAwMjg1LCAxMDAzMDIsIDEwMDMxMSwgMTAwMzE3LCAxMDAzMjQsIDEwMDMzMiwgMTAwMzQ1LCAxMDAzNDksIAotICAgIDEwMDM1OCwgMTAwMzY3LCAxMDAzNzYsIDEwMDM4NSwgMTAwMzk2LCAxMDA0MDUsIDEwMDQxNCwgMTAwNDIzLCAxMDA0MzIsIAotICAgIDEwMDQ0MSwgMTAwNDUwLCAxMDA0NjAsIDEwMDQ2MywgMTAwNDY3LCAxMDA0NzEsIDEwMDQ3NSwgMTAwNDc5LCAxMDA0ODMsIAotICAgIDEwMDQ4OSwgMTAwNDk2LCAxMDA1MDMsIDEwMDUxMCwgMTAwNTE2LCAxMDA1MjIsIDEwMDUyOSwgMTAwNTM1LCAxMDA1NDIsIAotICAgIDEwMDU1MCwgMTAwNTU0LCAxMDA1NjEsIDEwMDU2OCwgMTAwNTc1LCAxMDA1ODMsIDEwMDU4NiwgMTAwNTkwLCAxMDA1OTQsIAotICAgIDEwMDU5OCwgMTAwNjAxLCAxMDA2MDcsIDEwMDYxMSwgMTAwNjE3LCAxMDA2MjQsIDEwMDYzMSwgMTAwNjM3LCAxMDA2NDQsIAotICAgIDEwMDY1MSwgMTAwNjU4LCAxMDA2NjUsIDEwMDY3MiwgMTAwNjc5LCAxMDA2ODYsIDEwMDY5MywgMTAwNzAwLCAxMDA3MDcsIAotICAgIDEwMDcxNCwgMTAwNzIxLCAxMDA3MjgsIDEwMDczNSwgMTAwNzQxLCAxMDA3NDUsIDEwMDc1NCwgMTAwNzU4LCAxMDA3NjIsIAotICAgIDEwMDc2NiwgMTAwNzcwLCAxMDA3NzYsIDEwMDc4MywgMTAwNzkwLCAxMDA3OTcsIDEwMDgwNCwgMTAwODExLCAxMDA4MTcsIAotICAgIDEwMDgyNSwgMTAwODI5LCAxMDA4MzMsIDEwMDgzNywgMTAwODQxLCAxMDA4NDcsIDEwMDg2NCwgMTAwODgxLCAxMDA4ODUsIAotICAgIDEwMDg4OSwgMTAwODkzLCAxMDA4OTcsIDEwMDkwMSwgMTAwOTA1LCAxMDA5MTEsIDEwMDkxOCwgMTAwOTIyLCAxMDA5MjgsIAotICAgIDEwMDkzNSwgMTAwOTQyLCAxMDA5NDksIDEwMDk1NiwgMTAwOTYzLCAxMDA5NzIsIDEwMDk3OSwgMTAwOTg2LCAxMDA5OTMsIAotICAgIDEwMTAwMCwgMTAxMDA0LCAxMDEwMDgsIDEwMTAxNCwgMTAxMDI2LCAxMDEwMzAsIDEwMTAzNCwgMTAxMDQzLCAxMDEwNDcsIAotICAgIDEwMTA1MSwgMTAxMDU1LCAxMDEwNjEsIDEwMTA2NSwgMTAxMDY5LCAxMDEwNzgsIDEwMTA4MiwgMTAxMDg2LCAxMDEwOTAsIAotICAgIDEwMTA5NywgMTAxMTAxLCAxMDExMDUsIDEwMTEwOSwgMTAxMTEzLCAxMDExMTcsIDEwMTEyMSwgMTAxMTI1LCAxMDExMjksIAotICAgIDEwMTEzNSwgMTAxMTQyLCAxMDExNDksIDEwMTE1NSwgMTAxMTU5LCAxMDExNzYsIDEwMTE4MiwgMTAxMTg2LCAxMDExOTIsIAotICAgIDEwMTE5OCwgMTAxMjA0LCAxMDEyMTAsIDEwMTIxNiwgMTAxMjIyLCAxMDEyMjYsIDEwMTIzMCwgMTAxMjM0LCAxMDEyNDAsIAotICAgIDEwMTI0NCwgMTAxMjUwLCAxMDEyNTQsIDEwMTI1OCwgMTAxMjY1LCAxMDEyNzIsIDEwMTI4OSwgMTAxMjkzLCAxMDEyOTcsIAotICAgIDEwMTMwMSwgMTAxMzA1LCAxMDEzMDksIDEwMTMyMSwgMTAxMzI0LCAxMDEzMjksIDEwMTMzNCwgMTAxMzQ5LCAxMDEzNTksIAotICAgIDEwMTM3MSwgMTAxMzc1LCAxMDEzNzksIDEwMTM4MywgMTAxMzg5LCAxMDEzOTYsIDEwMTQwMywgMTAxNDEzLCAxMDE0MjUsIAotICAgIDEwMTQzMSwgMTAxNDM3LCAxMDE0NDYsIDEwMTQ1MCwgMTAxNDU0LCAxMDE0NjEsIDEwMTQ3MSwgMTAxNDc4LCAxMDE0ODQsIAotICAgIDEwMTQ4OCwgMTAxNDkyLCAxMDE0OTksIDEwMTUwNSwgMTAxNTA5LCAxMDE1MTUsIDEwMTUxOSwgMTAxNTI3LCAxMDE1MzMsIAotICAgIDEwMTUzNywgMTAxNTQ1LCAxMDE1NTMsIDEwMTU2MCwgMTAxNTY2LCAxMDE1NzMsIDEwMTU4MCwgMTAxNTkwLCAxMDE2MDAsIAotICAgIDEwMTYwNCwgMTAxNjA4LCAxMDE2MTIsIDEwMTYxNiwgMTAxNjIyLCAxMDE2MjksIDEwMTYzNSwgMTAxNjQyLCAxMDE2NDksIAotICAgIDEwMTY1NiwgMTAxNjY1LCAxMDE2NzIsIDEwMTY3OSwgMTAxNjg1LCAxMDE2OTIsIDEwMTY5OSwgMTAxNzA2LCAxMDE3MTMsIAotICAgIDEwMTcyMCwgMTAxNzI3LCAxMDE3MzMsIDEwMTc0MCwgMTAxNzQ3LCAxMDE3NTQsIDEwMTc2MywgMTAxNzcwLCAxMDE3NzcsIAotICAgIDEwMTc4MSwgMTAxNzg3LCAxMDE3OTEsIDEwMTc5NywgMTAxODA0LCAxMDE4MTEsIDEwMTgxOCwgMTAxODIyLCAxMDE4MjYsIAotICAgIDEwMTgzMCwgMTAxODM0LCAxMDE4MzgsIDEwMTg0NSwgMTAxODQ5LCAxMDE4NTMsIDEwMTg1OSwgMTAxODY3LCAxMDE4NzEsIAotICAgIDEwMTg3NSwgMTAxODc5LCAxMDE4ODMsIDEwMTg5MCwgMTAxODk0LCAxMDE4OTgsIDEwMTkwNiwgMTAxOTEwLCAxMDE5MTQsIAotICAgIDEwMTkxOCwgMTAxOTIyLCAxMDE5MjgsIDEwMTkzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAxOTM2LCAxMDE5NDIsIDEwMTk0OCwgMTAxOTU1LCAxMDE5NjIsIDEwMTk2OSwgMTAxOTc2LCAxMDE5ODMsIAotICAgIDEwMTk5MCwgMTAxOTk2LCAxMDIwMDMsIDEwMjAxMCwgMTAyMDE3LCAxMDIwMjQsIDEwMjAzMSwgMTAyMDM4LCAxMDIwNDQsIAotICAgIDEwMjA1MCwgMTAyMDU2LCAxMDIwNjIsIDEwMjA2OCwgMTAyMDc0LCAxMDIwODAsIDEwMjA4NiwgMTAyMDkyLCAxMDIwOTksIAotICAgIDEwMjEwNiwgMTAyMTEzLCAxMDIxMjAsIDEwMjEyNywgMTAyMTM0LCAxMDIxNDAsIDEwMjE0NiwgMTAyMTUyLCAxMDIxNTksIAotICAgIDEwMjE2NiwgMTAyMTcyLCAxMDIxNzgsIDEwMjE4NywgMTAyMTk0LCAxMDIyMDEsIDEwMjIwOCwgMTAyMjE1LCAxMDIyMjIsIAotICAgIDEwMjIyOSwgMTAyMjM1LCAxMDIyNDEsIDEwMjI0NywgMTAyMjU2LCAxMDIyNjMsIDEwMjI3MCwgMTAyMjgxLCAxMDIyOTIsIAotICAgIDEwMjI5OCwgMTAyMzA0LCAxMDIzMTAsIDEwMjMxOSwgMTAyMzI2LCAxMDIzMzMsIDEwMjM0MywgMTAyMzUzLCAxMDIzNjQsIAotICAgIDEwMjM3NSwgMTAyMzg3LCAxMDI0MDAsIDEwMjQxMSwgMTAyNDIyLCAxMDI0MzQsIDEwMjQ0NywgMTAyNDU4LCAxMDI0NjksIAotICAgIDEwMjQ4MCwgMTAyNDkxLCAxMDI1MDIsIDEwMjUxNCwgMTAyNTIyLCAxMDI1MzAsIDEwMjUzOSwgMTAyNTQ4LCAxMDI1NTcsIAotICAgIDEwMjU2MywgMTAyNTY5LCAxMDI1NzUsIDEwMjU4MiwgMTAyNTkyLCAxMDI1OTksIDEwMjYwOSwgMTAyNjE0LCAxMDI2MTksIAotICAgIDEwMjYyNSwgMTAyNjMxLCAxMDI2MzksIDEwMjY0NywgMTAyNjU2LCAxMDI2NjcsIDEwMjY3OCwgMTAyNjg2LCAxMDI2OTQsIAotICAgIDEwMjcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNzEyLCAxMDI3MjMsIDEwMjczMCwgCi0gICAgMTAyNzM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI3NDYsIDEwMjc1MCwgMTAyNzU0LCAKLSAgICAxMDI3NTgsIDEwMjc2MiwgMTAyNzY2LCAxMDI3NzAsIDEwMjc3NCwgMTAyNzc4LCAxMDI3ODIsIDEwMjc4NiwgMTAyNzkwLCAKLSAgICAxMDI3OTQsIDEwMjc5OCwgMTAyODAyLCAxMDI4MDYsIDEwMjgxMCwgMTAyODE0LCAxMDI4MTgsIDEwMjgyMiwgMTAyODI2LCAKLSAgICAxMDI4MzAsIDEwMjgzNCwgMTAyODM4LCAxMDI4NDIsIDEwMjg0NiwgMTAyODUwLCAxMDI4NTQsIDEwMjg1OCwgMTAyODYyLCAKLSAgICAxMDI4NjYsIDEwMjg3MCwgMTAyODc0LCAxMDI4NzgsIDEwMjg4MiwgMTAyODg2LCAxMDI4OTAsIDEwMjg5NCwgMTAyODk4LCAKLSAgICAxMDI5MDIsIDEwMjkwNiwgMTAyOTEwLCAxMDI5MTQsIDEwMjkxOCwgMTAyOTIyLCAxMDI5MjYsIDEwMjkzMCwgMTAyOTM0LCAKLSAgICAxMDI5MzgsIDEwMjk0MiwgMTAyOTQ2LCAxMDI5NTAsIDEwMjk1NCwgMTAyOTU4LCAxMDI5NjIsIDEwMjk2NiwgMTAyOTcwLCAKLSAgICAxMDI5NzQsIDEwMjk3OCwgMTAyOTgyLCAxMDI5ODYsIDEwMjk5MCwgMTAyOTk0LCAxMDI5OTgsIDEwMzAwMiwgMTAzMDA2LCAKLSAgICAxMDMwMTAsIDEwMzAxNCwgMTAzMDE4LCAxMDMwMjIsIDEwMzAyNiwgMTAzMDMwLCAxMDMwMzQsIDEwMzAzOCwgMTAzMDQyLCAKLSAgICAxMDMwNDYsIDEwMzA1MCwgMTAzMDU0LCAxMDMwNTgsIDEwMzA2MiwgMTAzMDY2LCAxMDMwNzAsIDEwMzA3NCwgMTAzMDc4LCAKLSAgICAxMDMwODIsIDEwMzA4NiwgMTAzMDkwLCAxMDMwOTQsIDEwMzA5OCwgMTAzMTAyLCAxMDMxMDYsIDEwMzExMCwgMTAzMTE0LCAKLSAgICAxMDMxMTgsIDEwMzEyMiwgMTAzMTI2LCAxMDMxMzAsIDEwMzEzNCwgMTAzMTM4LCAxMDMxNDIsIDEwMzE0NiwgMTAzMTUwLCAKLSAgICAxMDMxNTQsIDEwMzE1OCwgMTAzMTYyLCAxMDMxNjYsIDEwMzE3MCwgMTAzMTc0LCAxMDMxNzgsIDEwMzE4MiwgMTAzMTg2LCAKLSAgICAxMDMxOTAsIDEwMzE5NCwgMTAzMTk4LCAxMDMyMDIsIDEwMzIwNiwgMTAzMjEwLCAxMDMyMTQsIDEwMzIxOCwgMTAzMjIyLCAKLSAgICAxMDMyMjYsIDEwMzIzMCwgMTAzMjM0LCAxMDMyMzgsIDEwMzI0MiwgMTAzMjQ2LCAxMDMyNTAsIDEwMzI1NCwgMTAzMjU4LCAKLSAgICAxMDMyNjIsIDEwMzI2NiwgMTAzMjcwLCAxMDMyNzQsIDEwMzI3OCwgMTAzMjgyLCAxMDMyODYsIDEwMzI5MCwgMTAzMjk0LCAKLSAgICAxMDMyOTgsIDEwMzMwMiwgMTAzMzA2LCAxMDMzMTAsIDEwMzMxNCwgMTAzMzE4LCAxMDMzMjIsIDEwMzMyNiwgMTAzMzMwLCAKLSAgICAxMDMzMzQsIDEwMzMzOCwgMTAzMzQyLCAxMDMzNDYsIDEwMzM1MCwgMTAzMzU0LCAxMDMzNTgsIDEwMzM2MiwgMTAzMzY2LCAKLSAgICAxMDMzNzAsIDEwMzM3NCwgMTAzMzc4LCAxMDMzODIsIDEwMzM4NiwgMTAzMzkwLCAxMDMzOTQsIDEwMzM5OCwgMTAzNDAyLCAKLSAgICAxMDM0MDYsIDEwMzQxMCwgMTAzNDE0LCAxMDM0MTgsIDEwMzQyMiwgMTAzNDI2LCAxMDM0MzAsIDEwMzQzNCwgMTAzNDM4LCAKLSAgICAxMDM0NDIsIDEwMzQ0NiwgMTAzNDUwLCAxMDM0NTQsIDEwMzQ1OCwgMTAzNDYyLCAxMDM0NjYsIDEwMzQ3MCwgMTAzNDc0LCAKLSAgICAxMDM0NzgsIDEwMzQ4MiwgMTAzNDg2LCAxMDM0OTAsIDEwMzQ5NCwgMTAzNDk4LCAxMDM1MDIsIDEwMzUwNiwgMTAzNTEwLCAKLSAgICAxMDM1MTQsIDEwMzUxOCwgMTAzNTIyLCAxMDM1MjYsIDEwMzUzMCwgMTAzNTM0LCAxMDM1MzgsIDEwMzU0MiwgMTAzNTQ2LCAKLSAgICAxMDM1NTAsIDEwMzU1NCwgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NiwgMTAzNTcwLCAxMDM1NzQsIDEwMzU3OCwgMTAzNTgyLCAKLSAgICAxMDM1ODYsIDEwMzU5MCwgMTAzNTk0LCAxMDM1OTgsIDEwMzYwMiwgMTAzNjA2LCAxMDM2MTAsIDEwMzYxNCwgMTAzNjE4LCAKLSAgICAxMDM2MjIsIDEwMzYyNiwgMTAzNjMwLCAxMDM2MzQsIDEwMzYzOCwgMTAzNjQyLCAxMDM2NDYsIDEwMzY1MCwgMTAzNjU0LCAKLSAgICAxMDM2NTgsIDEwMzY2MiwgMTAzNjY2LCAxMDM2NzAsIDEwMzY3NCwgMTAzNjc4LCAxMDM2ODIsIDEwMzY4NiwgMTAzNjkwLCAKLSAgICAxMDM2OTQsIDEwMzY5OCwgMTAzNzAyLCAxMDM3MDYsIDEwMzcxMCwgMTAzNzE0LCAxMDM3MTgsIDEwMzcyMiwgMTAzNzI2LCAKLSAgICAxMDM3MzAsIDEwMzczNCwgMTAzNzM4LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUwLCAxMDM3NTQsIDEwMzc1OCwgMTAzNzYyLCAKLSAgICAxMDM3NjYsIDEwMzc3MCwgMTAzNzc0LCAxMDM3NzgsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTAsIDEwMzc5NCwgMTAzNzk4LCAKLSAgICAxMDM4MDIsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTQsIDEwMzgxOCwgMTAzODIyLCAxMDM4MjYsIDEwMzgzMCwgMTAzODM0LCAKLSAgICAxMDM4MzgsIDEwMzg0MiwgMTAzODQ2LCAxMDM4NTAsIDEwMzg1NCwgMTAzODU4LCAxMDM4NjIsIDEwMzg2NiwgMTAzODcwLCAKLSAgICAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIDEwMzkwMiwgMTAzOTA2LCAKLSAgICAxMDM5MTAsIDEwMzkxNCwgMTAzOTE4LCAxMDM5MjIsIDEwMzkyNiwgMTAzOTMwLCAxMDM5MzQsIDEwMzkzOCwgMTAzOTQyLCAKLSAgICAxMDM5NDYsIDEwMzk1MCwgMTAzOTU0LCAxMDM5NTgsIDEwMzk2MiwgMTAzOTY2LCAxMDM5NzAsIDEwMzk3NCwgMTAzOTc4LCAKLSAgICAxMDM5ODIsIDEwMzk4NiwgMTAzOTkwLCAxMDM5OTQsIDEwMzk5OCwgMTA0MDAyLCAxMDQwMDYsIDEwNDAxMCwgMTA0MDE0LCAKLSAgICAxMDQwMTgsIDEwNDAyMiwgMTA0MDI2LCAxMDQwMzAsIDEwNDAzNCwgMTA0MDM4LCAxMDQwNDIsIDEwNDA0NiwgMTA0MDUwLCAKLSAgICAxMDQwNTQsIDEwNDA1OCwgMTA0MDYyLCAxMDQwNjYsIDEwNDA3MCwgMTA0MDc0LCAxMDQwNzgsIDEwNDA4MiwgMTA0MDg2LCAKLSAgICAxMDQwOTAsIDEwNDA5NCwgMTA0MDk4LCAxMDQxMDIsIDEwNDEwNiwgMTA0MTEwLCAxMDQxMTQsIDEwNDExOCwgMTA0MTIyLCAKLSAgICAxMDQxMjYsIDEwNDEzMCwgMTA0MTM0LCAxMDQxMzgsIDEwNDE0MiwgMTA0MTQ2LCAxMDQxNTAsIDEwNDE1NCwgMTA0MTU4LCAKLSAgICAxMDQxNjIsIDEwNDE2NiwgMTA0MTcwLCAxMDQxNzQsIDEwNDE3OCwgMTA0MTgyLCAxMDQxODYsIDEwNDE5MCwgMTA0MTk0LCAKLSAgICAxMDQxOTgsIDEwNDIwMiwgMTA0MjA2LCAxMDQyMTAsIDEwNDIxNCwgMTA0MjE4LCAxMDQyMjIsIDEwNDIyNiwgMTA0MjMwLCAKLSAgICAxMDQyMzQsIDEwNDIzOCwgMTA0MjQyLCAxMDQyNDYsIDEwNDI1MCwgMTA0MjU0LCAxMDQyNTgsIDEwNDI2MiwgMTA0MjY2LCAKLSAgICAxMDQyNzAsIDEwNDI3NCwgMTA0Mjc4LCAxMDQyODIsIDEwNDI4NiwgMTA0MjkwLCAxMDQyOTQsIDEwNDI5OCwgMTA0MzAyLCAKLSAgICAxMDQzMDYsIDEwNDMxMCwgMTA0MzE0LCAxMDQzMTgsIDEwNDMyMiwgMTA0MzI2LCAxMDQzMzAsIDEwNDMzNCwgMTA0MzM4LCAKLSAgICAxMDQzNDIsIDEwNDM0NiwgMTA0MzUwLCAxMDQzNTQsIDEwNDM1OCwgMTA0MzYyLCAxMDQzNjYsIDEwNDM3MCwgMTA0Mzc0LCAKLSAgICAxMDQzNzgsIDEwNDM4MiwgMTA0Mzg2LCAxMDQzOTAsIDEwNDM5NCwgMTA0Mzk4LCAxMDQ0MDIsIDEwNDQwNiwgMTA0NDEwLCAKLSAgICAxMDQ0MTQsIDEwNDQxOCwgMTA0NDIyLCAxMDQ0MjYsIDEwNDQzMCwgMTA0NDM0LCAxMDQ0MzgsIDEwNDQ0MiwgMTA0NDQ2LCAKLSAgICAxMDQ0NTAsIDEwNDQ1NCwgMTA0NDU4LCAxMDQ0NjIsIDEwNDQ2NiwgMTA0NDcwLCAxMDQ0NzQsIDEwNDQ3OCwgMTA0NDgyLCAKLSAgICAxMDQ0ODYsIDEwNDQ5MCwgMTA0NDk0LCAxMDQ0OTgsIDEwNDUwMiwgMTA0NTA2LCAxMDQ1MTAsIDEwNDUxNCwgMTA0NTE4LCAKLSAgICAxMDQ1MjIsIDEwNDUyNiwgMTA0NTMwLCAxMDQ1MzQsIDEwNDUzOCwgMTA0NTQyLCAxMDQ1NDYsIDEwNDU1MCwgMTA0NTU0LCAKLSAgICAxMDQ1NTgsIDEwNDU2MiwgMTA0NTY2LCAxMDQ1NzAsIDEwNDU3NCwgMTA0NTc4LCAxMDQ1ODIsIDEwNDU4NiwgMTA0NTkwLCAKLSAgICAxMDQ1OTQsIDEwNDU5OCwgMTA0NjAyLCAxMDQ2MDYsIDEwNDYxMCwgMTA0NjE0LCAxMDQ2MTgsIDEwNDYyMiwgMTA0NjI2LCAKLSAgICAxMDQ2MzAsIDEwNDYzNCwgMTA0NjM4LCAxMDQ2NDIsIDEwNDY0NiwgMTA0NjUwLCAxMDQ2NTQsIDEwNDY1OCwgMTA0NjYyLCAKLSAgICAxMDQ2NjYsIDEwNDY3MCwgMTA0Njc0LCAxMDQ2NzgsIDEwNDY4MiwgMTA0Njg2LCAxMDQ2OTAsIDEwNDY5NCwgMTA0Njk4LCAKLSAgICAxMDQ3MDIsIDEwNDcwNiwgMTA0NzEwLCAxMDQ3MTQsIDEwNDcxOCwgMTA0NzIyLCAxMDQ3MjYsIDEwNDczMCwgMTA0NzM0LCAKLSAgICAxMDQ3MzgsIDEwNDc0MiwgMTA0NzQ2LCAxMDQ3NTAsIDEwNDc1NCwgMTA0NzU4LCAxMDQ3NjIsIDEwNDc2NiwgMTA0NzcwLCAKLSAgICAxMDQ3NzQsIDEwNDc3OCwgMTA0NzgyLCAxMDQ3ODYsIDEwNDc5MCwgMTA0Nzk0LCAxMDQ3OTgsIDEwNDgwMiwgMTA0ODA2LCAKLSAgICAxMDQ4MTAsIDEwNDgxNCwgMTA0ODE4LCAxMDQ4MjIsIDEwNDgyNiwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgMTA0ODQyLCAKLSAgICAxMDQ4NDYsIDEwNDg1MCwgMTA0ODU0LCAxMDQ4NTgsIDEwNDg2MiwgMTA0ODY2LCAxMDQ4NzAsIDEwNDg3NCwgMTA0ODc4LCAKLSAgICAxMDQ4ODIsIDEwNDg4NiwgMTA0ODkwLCAxMDQ4OTQsIDEwNDg5OCwgMTA0OTAyLCAxMDQ5MDYsIDEwNDkxMCwgMTA0OTE0LCAKLSAgICAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgMTA0OTUwLCAKLSAgICAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MiwgMTA0OTg2LCAKLSAgICAxMDQ5OTAsIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDEwLCAxMDUwMTQsIDEwNTAxOCwgMTA1MDIyLCAKLSAgICAxMDUwMjYsIDEwNTAzMCwgMTA1MDM0LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ2LCAxMDUwNTAsIDEwNTA1NCwgMTA1MDU4LCAKLSAgICAxMDUwNjIsIDEwNTA2NiwgMTA1MDcwLCAxMDUwNzQsIDEwNTA3OCwgMTA1MDgyLCAxMDUwODYsIDEwNTA5MCwgMTA1MDk0LCAKLSAgICAxMDUwOTgsIDEwNTEwMiwgMTA1MTA2LCAxMDUxMTAsIDEwNTExNCwgMTA1MTE4LCAxMDUxMjIsIDEwNTEyNiwgMTA1MTMwLCAKLSAgICAxMDUxMzQsIDEwNTEzOCwgMTA1MTQyLCAxMDUxNDYsIDEwNTE1MCwgMTA1MTU0LCAxMDUxNTgsIDEwNTE2MiwgMTA1MTY2LCAKLSAgICAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgMTA1MjAyLCAKLSAgICAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI2LCAxMDUyMzAsIDEwNTIzNCwgMTA1MjM4LCAKLSAgICAxMDUyNDIsIDEwNTI0NiwgMTA1MjUwLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYyLCAxMDUyNjYsIDEwNTI3MCwgMTA1Mjc0LCAKLSAgICAxMDUyNzgsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDIsIDEwNTMwNiwgMTA1MzEwLCAKLSAgICAxMDUzMTQsIDEwNTMxOCwgMTA1MzIyLCAxMDUzMjYsIDEwNTMzMCwgMTA1MzM0LCAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ2LCAKLSAgICAxMDUzNTAsIDEwNTM1NCwgMTA1MzU4LCAxMDUzNjIsIDEwNTM2NiwgMTA1MzcwLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgyLCAKLSAgICAxMDUzODYsIDEwNTM5MCwgMTA1Mzk0LCAxMDUzOTgsIDEwNTQwMiwgMTA1NDA2LCAxMDU0MTAsIDEwNTQxNCwgMTA1NDE4LCAKLSAgICAxMDU0MjIsIDEwNTQyNiwgMTA1NDMwLCAxMDU0MzQsIDEwNTQzOCwgMTA1NDQyLCAxMDU0NDYsIDEwNTQ1MCwgMTA1NDU0LCAKLSAgICAxMDU0NTgsIDEwNTQ2MiwgMTA1NDY2LCAxMDU0NzAsIDEwNTQ3NCwgMTA1NDc4LCAxMDU0ODIsIDEwNTQ4NiwgMTA1NDkwLCAKLSAgICAxMDU0OTQsIDEwNTQ5OCwgMTA1NTAyLCAxMDU1MDYsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTgsIDEwNTUyMiwgMTA1NTI2LCAKLSAgICAxMDU1MzAsIDEwNTUzNCwgMTA1NTM4LCAxMDU1NDIsIDEwNTU0NiwgMTA1NTUwLCAxMDU1NTQsIDEwNTU1OCwgMTA1NTYyLCAKLSAgICAxMDU1NjYsIDEwNTU3MCwgMTA1NTc0LCAxMDU1NzgsIDEwNTU4MiwgMTA1NTg2LCAxMDU1OTAsIDEwNTU5NCwgMTA1NTk4LCAKLSAgICAxMDU2MDIsIDEwNTYwNiwgMTA1NjEwLCAxMDU2MTQsIDEwNTYxOCwgMTA1NjIyLCAxMDU2MjYsIDEwNTYzMCwgMTA1NjM0LCAKLSAgICAxMDU2MzgsIDEwNTY0MiwgMTA1NjQ2LCAxMDU2NTAsIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjIsIDEwNTY2NiwgMTA1NjcwLCAKLSAgICAxMDU2NzQsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MCwgMTA1Njk0LCAxMDU2OTgsIDEwNTcwMiwgMTA1NzA2LCAKLSAgICAxMDU3MTAsIDEwNTcxNCwgMTA1NzE4LCAxMDU3MjIsIDEwNTcyNiwgMTA1NzMwLCAxMDU3MzQsIDEwNTczOCwgMTA1NzQyLCAKLSAgICAxMDU3NDYsIDEwNTc1MCwgMTA1NzU0LCAxMDU3NTgsIDEwNTc2MiwgMTA1NzY2LCAxMDU3NzAsIDEwNTc3NCwgMTA1Nzc4LCAKLSAgICAxMDU3ODIsIDEwNTc4NiwgMTA1NzkwLCAxMDU3OTQsIDEwNTc5OCwgMTA1ODAyLCAxMDU4MDYsIDEwNTgxMCwgMTA1ODE0LCAKLSAgICAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNCwgMTA1ODM4LCAxMDU4NDIsIDEwNTg0NiwgMTA1ODUwLCAKLSAgICAxMDU4NTQsIDEwNTg1OCwgMTA1ODYyLCAxMDU4NjYsIDEwNTg3MCwgMTA1ODc0LCAxMDU4NzgsIDEwNTg4MiwgMTA1ODg2LCAKLSAgICAxMDU4OTAsIDEwNTg5NCwgMTA1ODk4LCAxMDU5MDIsIDEwNTkwNiwgMTA1OTEwLCAxMDU5MTQsIDEwNTkxOCwgMTA1OTIyLCAKLSAgICAxMDU5MjYsIDEwNTkzMCwgMTA1OTM0LCAxMDU5MzgsIDEwNTk0MiwgMTA1OTQ2LCAxMDU5NTAsIDEwNTk1NCwgMTA1OTU4LCAKLSAgICAxMDU5NjIsIDEwNTk2NiwgMTA1OTcwLCAxMDU5NzQsIDEwNTk3OCwgMTA1OTgyLCAxMDU5ODYsIDEwNTk5MCwgMTA1OTk0LCAKLSAgICAxMDU5OTgsIDEwNjAwMiwgMTA2MDA2LCAxMDYwMTAsIDEwNjAxNCwgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNiwgMTA2MDMwLCAKLSAgICAxMDYwMzQsIDEwNjAzOCwgMTA2MDQyLCAxMDYwNDYsIDEwNjA1MCwgMTA2MDU0LCAxMDYwNTgsIDEwNjA2MiwgMTA2MDY2LCAKLSAgICAxMDYwNzAsIDEwNjA3NCwgMTA2MDc4LCAxMDYwODIsIDEwNjA4NiwgMTA2MDkwLCAxMDYwOTQsIDEwNjA5OCwgMTA2MTAyLCAKLSAgICAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI2LCAxMDYxMzAsIDEwNjEzNCwgMTA2MTM4LCAKLSAgICAxMDYxNDIsIDEwNjE0NiwgMTA2MTUwLCAxMDYxNTQsIDEwNjE1OCwgMTA2MTYyLCAxMDYxNjYsIDEwNjE3MCwgMTA2MTc0LCAKLSAgICAxMDYxNzgsIDEwNjE4MiwgMTA2MTg2LCAxMDYxOTAsIDEwNjE5NCwgMTA2MTk4LCAxMDYyMDIsIDEwNjIwNiwgMTA2MjEwLCAKLSAgICAxMDYyMTQsIDEwNjIxOCwgMTA2MjIyLCAxMDYyMjYsIDEwNjIzMCwgMTA2MjM0LCAxMDYyMzgsIDEwNjI0MiwgMTA2MjQ2LCAKLSAgICAxMDYyNTAsIDEwNjI1NCwgMTA2MjU4LCAxMDYyNjIsIDEwNjI2NiwgMTA2MjcwLCAxMDYyNzQsIDEwNjI3OCwgMTA2MjgyLCAKLSAgICAxMDYyODYsIDEwNjI5MCwgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNCwgMTA2MzE4LCAKLSAgICAxMDYzMjIsIDEwNjMyNiwgMTA2MzMwLCAxMDYzMzQsIDEwNjMzOCwgMTA2MzQyLCAxMDYzNDYsIDEwNjM1MCwgMTA2MzU0LCAKLSAgICAxMDYzNTgsIDEwNjM2MiwgMTA2MzY2LCAxMDYzNzAsIDEwNjM3NCwgMTA2Mzc4LCAxMDYzODIsIDEwNjM4NiwgMTA2MzkwLCAKLSAgICAxMDYzOTQsIDEwNjM5OCwgMTA2NDAyLCAxMDY0MDYsIDEwNjQxMCwgMTA2NDE0LCAxMDY0MTgsIDEwNjQyMiwgMTA2NDI2LCAKLSAgICAxMDY0MzAsIDEwNjQzNCwgMTA2NDM4LCAxMDY0NDIsIDEwNjQ0NiwgMTA2NDUwLCAxMDY0NTQsIDEwNjQ1OCwgMTA2NDYyLCAKLSAgICAxMDY0NjYsIDEwNjQ3MCwgMTA2NDc0LCAxMDY0NzgsIDEwNjQ4MiwgMTA2NDg2LCAxMDY0OTAsIDEwNjQ5NCwgMTA2NDk4LCAKLSAgICAxMDY1MDIsIDEwNjUwNiwgMTA2NTEwLCAxMDY1MTQsIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgMTA2NTM0LCAKLSAgICAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ2LCAxMDY1NTAsIDEwNjU1NCwgMTA2NTU4LCAxMDY1NjIsIDEwNjU2NiwgMTA2NTcwLCAKLSAgICAxMDY1NzQsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODYsIDEwNjU5MCwgMTA2NTk0LCAxMDY1OTgsIDEwNjYwMiwgMTA2NjA2LCAKLSAgICAxMDY2MTAsIDEwNjYxNCwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjMwLCAxMDY2MzQsIDEwNjYzOCwgMTA2NjQyLCAKLSAgICAxMDY2NDYsIDEwNjY1MCwgMTA2NjU0LCAxMDY2NTgsIDEwNjY2MiwgMTA2NjY2LCAxMDY2NzAsIDEwNjY3NCwgMTA2Njc4LCAKLSAgICAxMDY2ODIsIDEwNjY4NiwgMTA2NjkwLCAxMDY2OTQsIDEwNjY5OCwgMTA2NzAyLCAxMDY3MDYsIDEwNjcxMCwgMTA2NzE0LCAKLSAgICAxMDY3MTgsIDEwNjcyMiwgMTA2NzI2LCAxMDY3MzAsIDEwNjczNCwgMTA2NzM4LCAxMDY3NDIsIDEwNjc0NiwgMTA2NzUwLCAKLSAgICAxMDY3NTQsIDEwNjc1OCwgMTA2NzYyLCAxMDY3NjYsIDEwNjc3MCwgMTA2Nzc0LCAxMDY3NzgsIDEwNjc4MiwgMTA2Nzg2LCAKLSAgICAxMDY3OTAsIDEwNjc5NCwgMTA2Nzk4LCAxMDY4MDIsIDEwNjgwNiwgMTA2ODEwLCAxMDY4MTQsIDEwNjgxOCwgMTA2ODIyLCAKLSAgICAxMDY4MjYsIDEwNjgzMCwgMTA2ODM0LCAxMDY4MzgsIDEwNjg0MiwgMTA2ODQ2LCAxMDY4NTAsIDEwNjg1NCwgMTA2ODU4LCAKLSAgICAxMDY4NjIsIDEwNjg2NiwgMTA2ODcwLCAxMDY4NzQsIDEwNjg3OCwgMTA2ODgyLCAxMDY4ODYsIDEwNjg5MCwgMTA2ODk0LCAKLSAgICAxMDY4OTgsIDEwNjkwMiwgMTA2OTA2LCAxMDY5MTAsIDEwNjkxNCwgMTA2OTE4LCAxMDY5MjIsIDEwNjkyNiwgMTA2OTMwLCAKLSAgICAxMDY5MzQsIDEwNjkzOCwgMTA2OTQyLCAxMDY5NDYsIDEwNjk1MCwgMTA2OTU0LCAxMDY5NTgsIDEwNjk2MiwgMTA2OTY2LCAKLSAgICAxMDY5NzAsIDEwNjk3NCwgMTA2OTc4LCAxMDY5ODIsIDEwNjk4NiwgMTA2OTkwLCAxMDY5OTQsIDEwNjk5OCwgMTA3MDAyLCAKLSAgICAxMDcwMDYsIDEwNzAxMCwgMTA3MDE0LCAxMDcwMTgsIDEwNzAyMiwgMTA3MDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDcwMzAsIDEwNzAzNywgMTA3MDQ0LCAxMDcwNTMsIDEwNzA2MiwgMTA3MDY5LCAxMDcwNzQsIDEwNzA4MSwgCi0gICAgMTA3MDg4LCAxMDcwOTcsIDEwNzEwOCwgMTA3MTE5LCAxMDcxMjQsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDEsIDEwNzE0NiwgCi0gICAgMTA3MTUxLCAxMDcxNTYsIDEwNzE2MSwgMTA3MTY2LCAxMDcxNzEsIDEwNzE3NiwgMTA3MTgxLCAxMDcxODYsIDEwNzE5MywgCi0gICAgMTA3MjAwLCAxMDcyMDUsIDEwNzIxMCwgMTA3MjE1LCAxMDcyMjAsIDEwNzIyNywgMTA3MjM0LCAxMDcyNDIsIDEwNzI0NywgCi0gICAgMTA3MjU0LCAxMDcyNTksIDEwNzI2NCwgMTA3MjY5LCAxMDcyNzQsIDEwNzI3OSwgMTA3Mjg2LCAxMDcyOTMsIDEwNzI5OCwgCi0gICAgMTA3MzAzLCAxMDczMDgsIDEwNzMxMywgMTA3MzE4LCAxMDczMjMsIDEwNzMyOCwgMTA3MzMzLCAxMDczMzgsIDEwNzM0MywgCi0gICAgMTA3MzQ4LCAxMDczNTMsIDEwNzM1OCwgMTA3MzYzLCAxMDczNjgsIDEwNzM3MywgMTA3Mzc4LCAxMDczODMsIDEwNzM4OCwgCi0gICAgMTA3Mzk1LCAxMDc0MDAsIDEwNzQwNSwgMTA3NDE0LCAxMDc0MjEsIDEwNzQyNiwgMTA3NDMxLCAxMDc0MzYsIDEwNzQ0MSwgCi0gICAgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjYsIDEwNzQ3MSwgMTA3NDc2LCAxMDc0ODEsIDEwNzQ4NiwgCi0gICAgMTA3NDkxLCAxMDc0OTYsIDEwNzUwMSwgMTA3NTA2LCAxMDc1MTEsIDEwNzUxNiwgMTA3NTIxLCAxMDc1MjYsIDEwNzUzMiwgCi0gICAgMTA3NTQwLCAxMDc1NDYsIDEwNzU1NCwgMTA3NTYyLCAxMDc1NzAsIDEwNzU3NiwgMTA3NTgyLCAxMDc1ODgsIDEwNzU5NCwgCi0gICAgMTA3NjAwLCAxMDc2MDgsIDEwNzYxOCwgMTA3NjI2LCAxMDc2MzQsIDEwNzY0MCwgMTA3NjQ2LCAxMDc2NTQsIDEwNzY2MiwgCi0gICAgMTA3NjY4LCAxMDc2NzYsIDEwNzY4NCwgMTA3NjkyLCAxMDc2OTgsIDEwNzcwNCwgMTA3NzEwLCAxMDc3MTYsIDEwNzcyMiwgCi0gICAgMTA3NzI4LCAxMDc3MzYsIDEwNzc0NCwgMTA3NzUwLCAxMDc3NTYsIDEwNzc2MiwgMTA3NzY4LCAxMDc3NzQsIDEwNzc4MiwgCi0gICAgMTA3Nzg4LCAxMDc3OTQsIDEwNzgwMCwgMTA3ODA2LCAxMDc4MTIsIDEwNzgxOCwgMTA3ODI2LCAxMDc4MzIsIDEwNzgzOCwgCi0gICAgMTA3ODQ0LCAxMDc4NTAsIDEwNzg1OCwgMTA3ODY2LCAxMDc4NzIsIDEwNzg3OCwgMTA3ODg0LCAxMDc4ODksIDEwNzg5NSwgCi0gICAgMTA3OTAxLCAxMDc5MDgsIDEwNzkxMywgMTA3OTE4LCAxMDc5MjMsIDEwNzkyOCwgMTA3OTMzLCAxMDc5MzgsIDEwNzk0MywgCi0gICAgMTA3OTQ4LCAxMDc5NTMsIDEwNzk2MiwgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5OTEsIDEwNzk5NiwgCi0gICAgMTA4MDAxLCAxMDgwMDYsIDEwODAxMywgMTA4MDE4LCAxMDgwMjMsIDEwODAyOCwgMTA4MDMzLCAxMDgwMzgsIDEwODA0MywgCi0gICAgMTA4MDQ4LCAxMDgwNTMsIDEwODA1OCwgMTA4MDYzLCAxMDgwNjgsIDEwODA3NSwgMTA4MDgwLCAxMDgwODcsIDEwODA5MiwgCi0gICAgMTA4MDk3LCAxMDgxMDQsIDEwODEwOSwgMTA4MTE0LCAxMDgxMTksIDEwODEyNCwgMTA4MTI5LCAxMDgxMzQsIDEwODEzOSwgCi0gICAgMTA4MTQ0LCAxMDgxNDksIDEwODE1NCwgMTA4MTU5LCAxMDgxNjQsIDEwODE2OSwgMTA4MTc0LCAxMDgxNzksIDEwODE4NCwgCi0gICAgMTA4MTg5LCAxMDgxOTQsIDEwODE5OSwgMTA4MjA2LCAxMDgyMTEsIDEwODIxNiwgMTA4MjIxLCAxMDgyMjYsIDEwODIzMSwgCi0gICAgMTA4MjM2LCAxMDgyNDEsIDEwODI0NiwgMTA4MjUxLCAxMDgyNTYsIDEwODI2MSwgMTA4MjY2LCAxMDgyNzEsIDEwODI3OCwgCi0gICAgMTA4MjgzLCAxMDgyODgsIDEwODI5NSwgMTA4MzAwLCAxMDgzMDUsIDEwODMxMCwgMTA4MzE1LCAxMDgzMjAsIDEwODMyNSwgCi0gICAgMTA4MzMwLCAxMDgzMzUsIDEwODM0MCwgMTA4MzQ1LCAxMDgzNTIsIDEwODM1NywgMTA4MzYyLCAxMDgzNjcsIDEwODM3MiwgCi0gICAgMTA4Mzc3LCAxMDgzODQsIDEwODM5MSwgMTA4Mzk2LCAxMDg0MDEsIDEwODQwNiwgMTA4NDExLCAxMDg0MTYsIDEwODQyMSwgCi0gICAgMTA4NDI2LCAxMDg0MzEsIDEwODQzNiwgMTA4NDQxLCAxMDg0NDYsIDEwODQ1MSwgMTA4NDU2LCAxMDg0NjEsIDEwODQ2NiwgCi0gICAgMTA4NDcxLCAxMDg0NzYsIDEwODQ4MSwgMTA4NDg2LCAxMDg0OTEsIDEwODQ5NiwgMTA4NTAxLCAxMDg1MDYsIDEwODUxMSwgCi0gICAgMTA4NTE2LCAxMDg1MjEsIDEwODUyNiwgMTA4NTMxLCAxMDg1MzYsIDEwODU0MSwgMTA4NTQ2LCAxMDg1NTEsIDEwODU1NiwgCi0gICAgMTA4NTYxLCAxMDg1NjYsIDEwODU3MSwgMTA4NTc4LCAxMDg1ODMsIDEwODU4OCwgMTA4NTkzLCAxMDg1OTgsIDEwODYwMywgCi0gICAgMTA4NjA4LCAxMDg2MTMsIDEwODYxOCwgMTA4NjIzLCAxMDg2MjgsIDEwODYzMywgMTA4NjM4LCAxMDg2NDMsIDEwODY0OCwgCi0gICAgMTA4NjUzLCAxMDg2NTgsIDEwODY2MywgMTA4NjY4LCAxMDg2NzMsIDEwODY3OCwgMTA4NjgzLCAxMDg2ODgsIDEwODY5MywgCi0gICAgMTA4Njk4LCAxMDg3MDMsIDEwODcwOCwgMTA4NzEzLCAxMDg3MTgsIDEwODcyMywgMTA4NzI4LCAxMDg3MzMsIDEwODczOCwgCi0gICAgMTA4NzQzLCAxMDg3NDgsIDEwODc1MywgMTA4NzU4LCAxMDg3NjMsIDEwODc2OCwgMTA4NzczLCAxMDg3NzgsIDEwODc4MywgCi0gICAgMTA4Nzg4LCAxMDg3OTMsIDEwODc5OCwgMTA4ODAzLCAxMDg4MDgsIDEwODgxMywgMTA4ODE4LCAxMDg4MjMsIDEwODgyOCwgCi0gICAgMTA4ODMzLCAxMDg4MzgsIDEwODg0MywgMTA4ODQ4LCAxMDg4NTMsIDEwODg1OCwgMTA4ODYzLCAxMDg4NjgsIDEwODg3NSwgCi0gICAgMTA4ODgwLCAxMDg4ODUsIDEwODg5MCwgMTA4ODk1LCAxMDg5MDAsIDEwODkwNSwgMTA4OTA5LCAxMDg5MTQsIDEwODkxOSwgCi0gICAgMTA4OTI0LCAxMDg5MjksIDEwODkzNCwgMTA4OTM5LCAxMDg5NDQsIDEwODk0OSwgMTA4OTU0LCAxMDg5NTksIDEwODk2NCwgCi0gICAgMTA4OTY5LCAxMDg5NzQsIDEwODk3OSwgMTA4OTg2LCAxMDg5OTEsIDEwODk5NiwgMTA5MDAyLCAxMDkwMDcsIDEwOTAxMiwgCi0gICAgMTA5MDE3LCAxMDkwMjIsIDEwOTAyNywgMTA5MDMyLCAxMDkwMzcsIDEwOTA0MiwgMTA5MDQ3LCAxMDkwNTIsIDEwOTA1NywgCi0gICAgMTA5MDYyLCAxMDkwNjcsIDEwOTA3MiwgMTA5MDc3LCAxMDkwODIsIDEwOTA4NywgMTA5MDkyLCAxMDkwOTcsIDEwOTEwMiwgCi0gICAgMTA5MTA3LCAxMDkxMTIsIDEwOTExNywgMTA5MTIyLCAxMDkxMjcsIDEwOTEzMiwgMTA5MTM3LCAxMDkxNDIsIDEwOTE0NywgCi0gICAgMTA5MTUyLCAxMDkxNTcsIDEwOTE2MiwgMTA5MTY3LCAxMDkxNzIsIDEwOTE3NywgMTA5MTgyLCAxMDkxODcsIDEwOTE5MiwgCi0gICAgMTA5MTk3LCAxMDkyMDIsIDEwOTIwNywgMTA5MjEyLCAxMDkyMTcsIDEwOTIyNCwgMTA5MjI5LCAxMDkyMzQsIDEwOTI0MSwgCi0gICAgMTA5MjQ4LCAxMDkyNTMsIDEwOTI1OCwgMTA5MjYzLCAxMDkyNjgsIDEwOTI3MywgMTA5Mjc4LCAxMDkyODMsIDEwOTI4OCwgCi0gICAgMTA5MjkzLCAxMDkyOTgsIDEwOTMwMywgMTA5MzA4LCAxMDkzMTMsIDEwOTMxOCwgMTA5MzIzLCAxMDkzMjgsIDEwOTMzMywgCi0gICAgMTA5MzM4LCAxMDkzNDMsIDEwOTM0OCwgMTA5MzUzLCAxMDkzNTgsIDEwOTM2MywgMTA5MzY4LCAxMDkzNzMsIDEwOTM4MCwgCi0gICAgMTA5Mzg1LCAxMDkzOTAsIDEwOTM5NSwgMTA5NDAwLCAxMDk0MDUsIDEwOTQxMCwgMTA5NDE1LCAxMDk0MjAsIDEwOTQyNSwgCi0gICAgMTA5NDMwLCAxMDk0MzUsIDEwOTQ0MCwgMTA5NDQ1LCAxMDk0NTAsIDEwOTQ1NSwgMTA5NDYwLCAxMDk0NjUsIDEwOTQ3MCwgCi0gICAgMTA5NDc3LCAxMDk0ODIsIDEwOTQ4NywgMTA5NDkyLCAxMDk0OTcsIDEwOTUwMiwgMTA5NTA3LCAxMDk1MTIsIDEwOTUxOCwgCi0gICAgMTA5NTIzLCAxMDk1MjgsIDEwOTUzMywgMTA5NTM4LCAxMDk1NDMsIDEwOTU0OCwgMTA5NTUzLCAxMDk1NTgsIDEwOTU2NSwgCi0gICAgMTA5NTcyLCAxMDk1NzcsIDEwOTU4MiwgMTA5NTg2LCAxMDk1OTEsIDEwOTU5NSwgMTA5NTk5LCAxMDk2MDQsIDEwOTYxMSwgCi0gICAgMTA5NjE2LCAxMDk2MjEsIDEwOTYzMCwgMTA5NjM1LCAxMDk2NDAsIDEwOTY0NSwgMTA5NjUwLCAxMDk2NTcsIDEwOTY2NCwgCi0gICAgMTA5NjY5LCAxMDk2NzQsIDEwOTY3OSwgMTA5Njg0LCAxMDk2OTEsIDEwOTY5NiwgMTA5NzAxLCAxMDk3MDYsIDEwOTcxMSwgCi0gICAgMTA5NzE2LCAxMDk3MjEsIDEwOTcyNiwgMTA5NzMxLCAxMDk3MzYsIDEwOTc0MSwgMTA5NzQ2LCAxMDk3NTEsIDEwOTc1OCwgCi0gICAgMTA5NzYyLCAxMDk3NjcsIDEwOTc3MiwgMTA5Nzc3LCAxMDk3ODIsIDEwOTc4NiwgMTA5NzkxLCAxMDk3OTYsIDEwOTgwMSwgCi0gICAgMTA5ODA2LCAxMDk4MTEsIDEwOTgxNiwgMTA5ODIxLCAxMDk4MjYsIDEwOTgzMSwgMTA5ODM3LCAxMDk4NDMsIDEwOTg0OSwgCi0gICAgMTA5ODU1LCAxMDk4NjEsIDEwOTg2NywgMTA5ODczLCAxMDk4NzksIDEwOTg4NSwgMTA5ODkxLCAxMDk4OTcsIDEwOTkwMywgCi0gICAgMTA5OTA4LCAxMDk5MTQsIDEwOTkyMCwgMTA5OTI2LCAxMDk5MzIsIDEwOTkzOCwgMTA5OTQ0LCAxMDk5NTAsIDEwOTk1NiwgCi0gICAgMTA5OTYyLCAxMDk5NjgsIDEwOTk3NCwgMTA5OTc5LCAxMDk5ODUsIDEwOTk5MSwgMTA5OTk3LCAxMTAwMDMsIDExMDAwOSwgCi0gICAgMTEwMDE1LCAxMTAwMjEsIDExMDAyNywgMTEwMDMzLCAxMTAwMzksIDExMDA0NSwgMTEwMDUxLCAxMTAwNTcsIDExMDA2MywgCi0gICAgMTEwMDY5LCAxMTAwNzUsIDExMDA4MSwgMTEwMDg3LCAxMTAwOTMsIDExMDA5OSwgMTEwMTA0LCAxMTAxMTAsIDExMDExNiwgCi0gICAgMTEwMTIyLCAxMTAxMjgsIDExMDEzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTQwLCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIDExMDE1OCwgCi0gICAgMTEwMTYyLCAxMTAxNjcsIDExMDE3MSwgMTEwMTc1LCAxMTAxNzksIDExMDE4MywgMTEwMTg3LCAxMTAxOTIsIDExMDE5NywgCi0gICAgMTEwMjAxLCAxMTAyMDUsIDExMDIwOCwgMTEwMjEyLCAxMTAyMTcsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIDExMDIzNCwgCi0gICAgMTEwMjM4LCAxMTAyNDIsIDExMDI0NiwgMTEwMjUwLCAxMTAyNTQsIDExMDI1OCwgMTEwMjYyLCAxMTAyNjUsIDExMDI2OSwgCi0gICAgMTEwMjczLCAxMTAyNzcsIDExMDI4MSwgMTEwMjg1LCAxMTAyODksIDExMDI5NSwgMTEwMjk4LCAxMTAzMDIsIDExMDMwNiwgCi0gICAgMTEwMzEwLCAxMTAzMTQsIDExMDMxOCwgMTEwMzIyLCAxMTAzMjYsIDExMDMzMCwgMTEwMzM0LCAxMTAzMzksIDExMDM0NCwgCi0gICAgMTEwMzUwLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc0LCAxMTAzNzksIDExMDM4MiwgCi0gICAgMTEwMzg2LCAxMTAzOTAsIDExMDM5NCwgMTEwMzk4LCAxMTA0MDQsIDExMDQwOCwgMTEwNDEyLCAxMTA0MTYsIDExMDQyMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNDI0LCAxMTA0MjgsIDExMDQzMiwgMTEwNDM4LCAxMTA0NDQsIAotICAgIDExMDQ0OCwgMTEwNDUzLCAxMTA0NTgsIDExMDQ2MywgMTEwNDY4LCAxMTA0NzIsIDExMDQ3NywgMTEwNDgyLCAxMTA0ODcsIAotICAgIDExMDQ5MSwgMTEwNDk2LCAxMTA1MDEsIDExMDUwNiwgMTEwNTEwLCAxMTA1MTUsIDExMDUyMCwgMTEwNTI1LCAxMTA1MzAsIAotICAgIDExMDUzNSwgMTEwNTQwLCAxMTA1NDUsIDExMDU1MCwgMTEwNTU0LCAxMTA1NTksIDExMDU2NCwgMTEwNTY5LCAxMTA1NzQsIAotICAgIDExMDU3OSwgMTEwNTg0LCAxMTA1ODksIDExMDU5NCwgMTEwNTk5LCAxMTA2MDQsIDExMDYwOSwgMTEwNjE2LCAxMTA2MjEsIAotICAgIDExMDYyOCwgMTEwNjMzLCAxMTA2MzgsIDExMDY0MywgMTEwNjQ4LCAxMTA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjgsIDExMDY3MSwgMTEwNjc0LCAxMTA2NzgsIAotICAgIDExMDY4MiwgMTEwNjg2LCAxMTA2OTAsIDExMDY5NCwgMTEwNjk4LCAxMTA3MDIsIDExMDcwOCwgMTEwNzE0LCAxMTA3MjAsIAotICAgIDExMDcyNiwgMTEwNzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMTA3MzgsIDExMDc0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNzQ5LCAxMTA3NTQsIDExMDc1OSwgCi0gICAgMTEwNzY0LCAxMTA3NzEsIDExMDc3OCwgMTEwNzg1LCAxMTA3OTIsIDExMDc5NywgMTEwODAyLCAxMTA4MDcsIDExMDgxMiwgCi0gICAgMTEwODE5LCAxMTA4MjQsIDExMDgzMSwgMTEwODM4LCAxMTA4NDMsIDExMDg0OCwgMTEwODUzLCAxMTA4NjAsIDExMDg2NSwgCi0gICAgMTEwODcwLCAxMTA4NzcsIDExMDg4NCwgMTEwODg5LCAxMTA4OTQsIDExMDg5OSwgMTEwOTA2LCAxMTA5MTMsIDExMDkyMCwgCi0gICAgMTEwOTI1LCAxMTA5MzAsIDExMDkzNywgMTEwOTQ0LCAxMTA5NTEsIDExMDk1OCwgMTEwOTYzLCAxMTA5NjgsIDExMDk3MywgCi0gICAgMTEwOTgwLCAxMTA5ODUsIDExMDk5MCwgMTEwOTk1LCAxMTEwMDIsIDExMTAxMSwgMTExMDE4LCAxMTEwMjMsIDExMTAyOCwgCi0gICAgMTExMDMzLCAxMTEwMzgsIDExMTA0MywgMTExMDQ4LCAxMTEwNTcsIDExMTA2NCwgMTExMDY5LCAxMTEwNzYsIDExMTA4MywgCi0gICAgMTExMDg4LCAxMTEwOTMsIDExMTA5OCwgMTExMTA1LCAxMTExMTAsIDExMTExNywgMTExMTI0LCAxMTExMjksIDExMTEzNCwgCi0gICAgMTExMTM5LCAxMTExNDYsIDExMTE1MywgMTExMTU4LCAxMTExNjMsIDExMTE3MCwgMTExMTc3LCAxMTExODQsIDExMTE4OSwgCi0gICAgMTExMTk0LCAxMTExOTksIDExMTIwNCwgMTExMjExLCAxMTEyMjAsIDExMTIyOSwgMTExMjM0LCAxMTEyNDEsIDExMTI1MCwgCi0gICAgMTExMjU1LCAxMTEyNjAsIDExMTI2NSwgMTExMjcwLCAxMTEyNzcsIDExMTI4NCwgMTExMjkxLCAxMTEyOTgsIDExMTMwMywgCi0gICAgMTExMzA4LCAxMTEzMTMsIDExMTMyMCwgMTExMzI3LCAxMTEzMzQsIDExMTMzOSwgMTExMzQ0LCAxMTEzNTEsIDExMTM1NiwgCi0gICAgMTExMzYzLCAxMTEzNjgsIDExMTM3NSwgMTExMzgwLCAxMTEzODcsIDExMTM5NCwgMTExMzk5LCAxMTE0MDQsIDExMTQwOSwgCi0gICAgMTExNDE0LCAxMTE0MTksIDExMTQyNCwgMTExNDI5LCAxMTE0MzQsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTMsIDExMTQ2MCwgCi0gICAgMTExNDY3LCAxMTE0NzQsIDExMTQ4MywgMTExNDg4LCAxMTE0OTMsIDExMTUwMCwgMTExNTA3LCAxMTE1MTIsIDExMTUxOSwgCi0gICAgMTExNTI2LCAxMTE1MzMsIDExMTU0MCwgMTExNTQ3LCAxMTE1NTQsIDExMTU1OSwgMTExNTY0LCAxMTE1NjksIDExMTU3NCwgCi0gICAgMTExNTc5LCAxMTE1ODgsIDExMTU5NywgMTExNjA2LCAxMTE2MTUsIDExMTYyNCwgMTExNjMzLCAxMTE2NDIsIDExMTY1MSwgCi0gICAgMTExNjU2LCAxMTE2NjcsIDExMTY3OCwgMTExNjg3LCAxMTE2OTIsIDExMTY5NywgMTExNzAyLCAxMTE3MDcsIDExMTcxNiwgCi0gICAgMTExNzIzLCAxMTE3MzAsIDExMTczNywgMTExNzQ0LCAxMTE3NTEsIDExMTc1OCwgMTExNzY3LCAxMTE3NzYsIDExMTc4NywgCi0gICAgMTExNzk2LCAxMTE4MDcsIDExMTgxNiwgMTExODIzLCAxMTE4MzIsIDExMTg0MywgMTExODUyLCAxMTE4NjEsIDExMTg3MCwgCi0gICAgMTExODc5LCAxMTE4ODYsIDExMTg5MywgMTExOTAwLCAxMTE5MDksIDExMTkxOCwgMTExOTI5LCAxMTE5MzgsIDExMTk0NywgCi0gICAgMTExOTU4LCAxMTE5NjMsIDExMTk2OCwgMTExOTc5LCAxMTE5ODcsIDExMTk5NiwgMTEyMDA1LCAxMTIwMTQsIDExMjAyNSwgCi0gICAgMTEyMDM0LCAxMTIwNDMsIDExMjA1NCwgMTEyMDY1LCAxMTIwNzYsIDExMjA4NywgMTEyMDk4LCAxMTIxMDksIDExMjExNiwgCi0gICAgMTEyMTIzLCAxMTIxMzAsIDExMjEzNywgMTEyMTQ4LCAxMTIxNTcsIDExMjE2NCwgMTEyMTcxLCAxMTIxNzgsIDExMjE4OSwgCi0gICAgMTEyMjAwLCAxMTIyMTEsIDExMjIyMiwgMTEyMjMzLCAxMTIyNDQsIDExMjI1NSwgMTEyMjY2LCAxMTIyNzMsIDExMjI4MCwgCi0gICAgMTEyMjg5LCAxMTIyOTgsIDExMjMwNSwgMTEyMzEyLCAxMTIzMTksIDExMjMyOCwgMTEyMzM3LCAxMTIzNDYsIDExMjM1MywgCi0gICAgMTEyMzYyLCAxMTIzNzEsIDExMjM4MCwgMTEyMzg3LCAxMTIzOTQsIDExMjM5OSwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgCi0gICAgMTEyNDI2LCAxMTI0MzMsIDExMjQ0MCwgMTEyNDQ3LCAxMTI0NTYsIDExMjQ2NSwgMTEyNDc0LCAxMTI0ODMsIDExMjQ5MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyNDk5LCAxMTI1MDUsIDExMjUxMCwgMTEyNTE1LCAxMTI1MjIsIAotICAgIDExMjUyOCwgMTEyNTM0LCAxMTI1NDAsIDExMjU0NiwgMTEyNTUyLCAxMTI1NTgsIDExMjU2NCwgMTEyNTY4LCAxMTI1NzIsIAotICAgIDExMjU3OCwgMTEyNTg0LCAxMTI1OTAsIDExMjU5NCwgMTEyNTk5LCAxMTI2MDQsIDExMjYwOCwgMTEyNjEyLCAxMTI2MTUsIAotICAgIDExMjYyMSwgMTEyNjI3LCAxMTI2MzMsIDExMjYzOSwgMTEyNjQ1LCAxMTI2NTEsIDExMjY1NywgMTEyNjYzLCAxMTI2NjksIAotICAgIDExMjY3OSwgMTEyNjg5LCAxMTI2OTUsIDExMjcwMSwgMTEyNzExLCAxMTI3MjEsIDExMjcyNywgMCwgMCwgMTEyNzMzLCAKLSAgICAxMTI3NDEsIDExMjc0NiwgMTEyNzUxLCAxMTI3NTcsIDExMjc2MywgMTEyNzY5LCAxMTI3NzUsIDExMjc4MSwgMTEyNzg3LCAKLSAgICAxMTI3OTQsIDExMjgwMSwgMTEyODA3LCAxMTI4MTMsIDExMjgxOSwgMTEyODI1LCAxMTI4MzEsIDExMjgzNywgMTEyODQzLCAKLSAgICAxMTI4NDksIDExMjg1NCwgMTEyODYwLCAxMTI4NjYsIDExMjg3MiwgMTEyODc4LCAxMTI4ODQsIDExMjg5MywgMTEyODk5LCAKLSAgICAxMTI5MDQsIDExMjkxMiwgMTEyOTE5LCAxMTI5MjYsIDExMjkzNSwgMTEyOTQ0LCAxMTI5NTMsIDExMjk2MiwgMTEyOTcxLCAKLSAgICAxMTI5ODAsIDExMjk4OSwgMTEyOTk4LCAxMTMwMDgsIDExMzAxOCwgMTEzMDI2LCAxMTMwMzQsIDExMzA0MywgMTEzMDUyLCAKLSAgICAxMTMwNTgsIDExMzA2NCwgMTEzMDcwLCAxMTMwNzYsIDExMzA4NCwgMTEzMDkyLCAxMTMwOTYsIDExMzEwMiwgMTEzMTA3LCAKLSAgICAxMTMxMTMsIDExMzExOSwgMTEzMTI1LCAxMTMxMzEsIDExMzEzNywgMTEzMTQ2LCAxMTMxNTEsIDExMzE1OCwgMTEzMTYzLCAKLSAgICAxMTMxNjgsIDExMzE3MywgMTEzMTc5LCAxMTMxODUsIDExMzE5MSwgMTEzMTk4LCAxMTMyMDMsIDExMzIwOCwgMTEzMjEzLCAKLSAgICAxMTMyMTgsIDExMzIyMywgMTEzMjI5LCAxMTMyMzUsIDExMzI0MSwgMTEzMjQ3LCAxMTMyNTMsIDExMzI1OSwgMTEzMjY1LCAKLSAgICAxMTMyNzEsIDExMzI3NiwgMTEzMjgxLCAxMTMyODYsIDExMzI5MSwgMTEzMjk2LCAxMTMzMDEsIDExMzMwNiwgMTEzMzExLCAKLSAgICAxMTMzMTcsIDExMzMyMywgMTEzMzI4LCAxMTMzMzMsIDExMzMzOCwgMTEzMzQzLCAxMTMzNDgsIDExMzM1NCwgMTEzMzYxLCAKLSAgICAxMTMzNjUsIDExMzM2OSwgMTEzMzczLCAxMTMzNzcsIDExMzM4MSwgMTEzMzg1LCAxMTMzODksIDExMzM5MywgMTEzNDAxLCAKLSAgICAxMTM0MTEsIDExMzQxNSwgMTEzNDE5LCAxMTM0MjUsIDExMzQzMSwgMTEzNDM3LCAxMTM0NDMsIDExMzQ0OSwgMTEzNDU1LCAKLSAgICAxMTM0NjEsIDExMzQ2NywgMTEzNDczLCAxMTM0NzksIDExMzQ4NSwgMTEzNDkxLCAxMTM0OTcsIDExMzUwMywgMTEzNTA3LCAKLSAgICAxMTM1MTEsIDExMzUxOCwgMTEzNTI0LCAxMTM1MzAsIDExMzUzNiwgMTEzNTQxLCAxMTM1NDgsIDExMzU1MywgMTEzNTU5LCAKLSAgICAxMTM1NjUsIDExMzU3MSwgMTEzNTc3LCAxMTM1ODIsIDExMzU4NiwgMTEzNTkyLCAxMTM1OTYsIDExMzYwMCwgMTEzNjA0LCAKLSAgICAxMTM2MTAsIDExMzYxNiwgMTEzNjIwLCAxMTM2MjYsIDExMzYzMiwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU4LCAKLSAgICAxMTM2NjYsIDExMzY3MiwgMTEzNjc4LCAxMTM2ODQsIDExMzY5MCwgMTEzNzAyLCAxMTM3MTQsIDExMzcyOCwgMTEzNzQwLCAKLSAgICAxMTM3NTIsIDExMzc2NiwgMTEzNzgwLCAxMTM3OTQsIDExMzc5OCwgMTEzODA2LCAxMTM4MTQsIDExMzgxOSwgMTEzODIzLCAKLSAgICAxMTM4MjcsIDExMzgzMSwgMTEzODM1LCAxMTM4MzksIDExMzg0MywgMTEzODQ3LCAxMTM4NTMsIDExMzg1OSwgMTEzODY1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTM4NzEsIDExMzg3NywgMTEzODgzLCAxMTM4ODksIDExMzg5NSwgCi0gICAgMTEzOTAxLCAxMTM5MDcsIDExMzkxMywgMTEzOTE5LCAxMTM5MjUsIDExMzkzMSwgMTEzOTM3LCAxMTM5NDMsIDExMzk0OSwgCi0gICAgMTEzOTU1LCAxMTM5NjEsIDExMzk2NywgMTEzOTczLCAxMTM5NzksIDExMzk4NSwgMTEzOTkxLCAxMTM5OTcsIDExNDAwMywgCi0gICAgMTE0MDA5LCAxMTQwMTUsIDExNDAyMSwgMTE0MDI3LCAxMTQwMzMsIDExNDAzOSwgMTE0MDQ1LCAxMTQwNTEsIDExNDA1NywgCi0gICAgMTE0MDYzLCAxMTQwNjksIDExNDA3NSwgMTE0MDgxLCAxMTQwODcsIDExNDA5MywgMTE0MDk5LCAxMTQxMDUsIDExNDExMSwgCi0gICAgMTE0MTE3LCAxMTQxMjMsIDExNDEyOSwgMTE0MTM1LCAxMTQxNDEsIDExNDE0NywgMTE0MTUzLCAxMTQxNTksIDExNDE2NSwgCi0gICAgMTE0MTcxLCAxMTQxNzcsIDExNDE4MywgMTE0MTg5LCAxMTQxOTUsIDExNDIwMSwgMTE0MjA3LCAxMTQyMTMsIDExNDIxOSwgCi0gICAgMTE0MjI1LCAxMTQyMzEsIDExNDIzNywgMTE0MjQzLCAxMTQyNDksIDExNDI1NSwgMTE0MjYxLCAxMTQyNjcsIDExNDI3MiwgCi0gICAgMTE0Mjc3LCAxMTQyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDI4NiwgMTE0MjkxLCAxMTQyOTgsIAotICAgIDExNDMwNSwgMTE0MzEyLCAxMTQzMTksIDExNDMyNCwgMTE0MzI4LCAxMTQzMzQsIDExNDMzOCwgMTE0MzQyLCAxMTQzNDgsIAotICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjAsIDExNDM2NiwgMTE0MzczLCAxMTQzNzcsIDExNDM4MSwgMTE0Mzg1LCAxMTQzODksIAotICAgIDExNDM5MywgMTE0Mzk3LCAxMTQ0MDMsIDExNDQwNywgMTE0NDExLCAxMTQ0MTUsIDExNDQxOSwgMTE0NDIzLCAxMTQ0MjcsIAotICAgIDExNDQzMSwgMTE0NDM1LCAxMTQ0MzksIDExNDQ0MywgMTE0NDQ3LCAxMTQ0NTEsIDExNDQ1NiwgMTE0NDYwLCAxMTQ0NjQsIAotICAgIDExNDQ2OCwgMTE0NDcyLCAxMTQ0NzYsIDExNDQ4MCwgMTE0NDg0LCAxMTQ0ODgsIDExNDQ5MiwgMTE0NDk5LCAxMTQ1MDMsIAotICAgIDExNDUxMSwgMTE0NTE1LCAxMTQ1MTksIDExNDUyMywgMTE0NTI3LCAxMTQ1MzEsIDExNDUzNSwgMTE0NTM5LCAxMTQ1NDYsIAotICAgIDExNDU1MCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzIsIDExNDU3NiwgMTE0NTgyLCAxMTQ1ODYsIAotICAgIDExNDU5MCwgMTE0NTk0LCAxMTQ1OTgsIDExNDYwMiwgMTE0NjA2LCAxMTQ2MTAsIDExNDYxNCwgMTE0NjE4LCAxMTQ2MjIsIAotICAgIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzQsIDExNDYzOCwgMTE0NjQyLCAxMTQ2NDYsIDExNDY1MCwgMTE0NjU0LCAxMTQ2NTgsIAotICAgIDExNDY2NiwgMTE0NjcwLCAxMTQ2NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDY3OCwgMTE0Njg2LCAKLSAgICAxMTQ2OTQsIDExNDcwMiwgMTE0NzEwLCAxMTQ3MTgsIDExNDcyNiwgMTE0NzM0LCAxMTQ3NDIsIDExNDc1MCwgMTE0NzU4LCAKLSAgICAxMTQ3NjYsIDExNDc3NCwgMTE0NzgyLCAxMTQ3OTAsIDExNDc5OCwgMTE0ODA2LCAxMTQ4MTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDgyMiwgMTE0ODI2LCAxMTQ4MzEsIDExNDgzNiwgMTE0ODQxLCAxMTQ4NDUsIAotICAgIDExNDg1MCwgMTE0ODU1LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY5LCAxMTQ4NzQsIDExNDg3OCwgMTE0ODgyLCAxMTQ4ODcsIAotICAgIDExNDg5MSwgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNSwgMTE0OTEwLCAxMTQ5MTUsIDExNDkxOSwgMTE0OTI0LCAxMTQ5MjksIAotICAgIDExNDkzNCwgMTE0OTM5LCAxMTQ5NDQsIDExNDk0OCwgMTE0OTUzLCAxMTQ5NTgsIDExNDk2MywgMTE0OTY3LCAxMTQ5NzIsIAotICAgIDExNDk3NywgMTE0OTgyLCAxMTQ5ODYsIDExNDk5MSwgMTE0OTk2LCAxMTUwMDAsIDExNTAwNCwgMTE1MDA5LCAxMTUwMTMsIAotICAgIDExNTAxOCwgMTE1MDIzLCAxMTUwMjcsIDExNTAzMiwgMTE1MDM3LCAxMTUwNDEsIDExNTA0NiwgMTE1MDUxLCAxMTUwNTYsIAotICAgIDExNTA2MSwgMTE1MDY2LCAxMTUwNzAsIDExNTA3NSwgMTE1MDgwLCAxMTUwODUsIDExNTA4OSwgMTE1MDk0LCAxMTUwOTksIAotICAgIDExNTEwNCwgMTE1MTA4LCAxMTUxMTMsIDExNTExOCwgMTE1MTIyLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM1LCAxMTUxNDAsIAotICAgIDExNTE0NSwgMTE1MTQ5LCAxMTUxNTQsIDExNTE1OSwgMTE1MTYzLCAxMTUxNjgsIDExNTE3MywgMTE1MTc4LCAxMTUxODMsIAotICAgIDExNTE4OCwgMTE1MTkyLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTEsIDExNTIxNiwgMCwgMTE1MjIxLCAKLSAgICAxMTUyMjUsIDExNTIzMCwgMTE1MjM1LCAxMTUyMzksIDExNTI0MywgMTE1MjQ4LCAxMTUyNTIsIDExNTI1NywgMTE1MjYyLCAKLSAgICAxMTUyNjYsIDExNTI3MSwgMTE1Mjc2LCAxMTUyODAsIDExNTI4NSwgMTE1MjkwLCAxMTUyOTUsIDExNTMwMCwgMTE1MzA1LCAKLSAgICAxMTUzMTAsIDExNTMxNiwgMTE1MzIyLCAxMTUzMjgsIDExNTMzMywgMTE1MzM5LCAxMTUzNDUsIDExNTM1MSwgMTE1MzU2LCAKLSAgICAxMTUzNjIsIDExNTM2OCwgMTE1MzczLCAxMTUzNzgsIDExNTM4NCwgMTE1Mzg5LCAxMTUzOTUsIDExNTQwMSwgMTE1NDA2LCAKLSAgICAxMTU0MTIsIDExNTQxOCwgMTE1NDIzLCAxMTU0MjksIDExNTQzNSwgMTE1NDQxLCAxMTU0NDcsIDExNTQ1MywgMTE1NDU4LCAKLSAgICAxMTU0NjQsIDExNTQ3MCwgMTE1NDc2LCAxMTU0ODEsIDExNTQ4NywgMTE1NDkzLCAxMTU0OTksIDExNTUwNCwgMTE1NTEwLCAKLSAgICAxMTU1MTYsIDExNTUyMSwgMTE1NTI2LCAxMTU1MzIsIDExNTUzNywgMTE1NTQzLCAxMTU1NDksIDExNTU1NCwgMTE1NTYwLCAKLSAgICAxMTU1NjYsIDExNTU3MSwgMTE1NTc3LCAxMTU1ODMsIDExNTU4OSwgMTE1NTk1LCAxMTU2MDEsIDAsIDExNTYwNSwgCi0gICAgMTE1NjEwLCAwLCAwLCAxMTU2MTUsIDAsIDAsIDExNTYyMCwgMTE1NjI1LCAwLCAwLCAxMTU2MzAsIDExNTYzNSwgMTE1NjM5LCAKLSAgICAxMTU2NDQsIDAsIDExNTY0OSwgMTE1NjU0LCAxMTU2NTksIDExNTY2MywgMTE1NjY4LCAxMTU2NzMsIDExNTY3OCwgCi0gICAgMTE1NjgzLCAxMTU2ODgsIDExNTY5MiwgMTE1Njk3LCAxMTU3MDIsIDAsIDExNTcwNywgMCwgMTE1NzEyLCAxMTU3MTcsIAotICAgIDExNTcyMSwgMTE1NzI2LCAxMTU3MzEsIDExNTczNSwgMTE1NzM5LCAwLCAxMTU3NDQsIDExNTc0OSwgMTE1NzU0LCAKLSAgICAxMTU3NTgsIDExNTc2MywgMTE1NzY4LCAxMTU3NzIsIDExNTc3NywgMTE1NzgyLCAxMTU3ODcsIDExNTc5MiwgMTE1Nzk3LCAKLSAgICAxMTU4MDIsIDExNTgwOCwgMTE1ODE0LCAxMTU4MjAsIDExNTgyNSwgMTE1ODMxLCAxMTU4MzcsIDExNTg0MywgMTE1ODQ4LCAKLSAgICAxMTU4NTQsIDExNTg2MCwgMTE1ODY1LCAxMTU4NzAsIDExNTg3NiwgMTE1ODgxLCAxMTU4ODcsIDExNTg5MywgMTE1ODk4LCAKLSAgICAxMTU5MDQsIDExNTkxMCwgMTE1OTE1LCAxMTU5MjEsIDExNTkyNywgMTE1OTMzLCAxMTU5MzksIDExNTk0NSwgMTE1OTUwLCAKLSAgICAxMTU5NTYsIDExNTk2MiwgMTE1OTY4LCAxMTU5NzMsIDExNTk3OSwgMTE1OTg1LCAxMTU5OTEsIDExNTk5NiwgMTE2MDAyLCAKLSAgICAxMTYwMDgsIDExNjAxMywgMTE2MDE4LCAxMTYwMjQsIDExNjAyOSwgMTE2MDM1LCAxMTYwNDEsIDExNjA0NiwgMTE2MDUyLCAKLSAgICAxMTYwNTgsIDExNjA2MywgMTE2MDY5LCAxMTYwNzUsIDExNjA4MSwgMTE2MDg3LCAxMTYwOTMsIDExNjA5NywgMCwgCi0gICAgMTE2MTAyLCAxMTYxMDcsIDExNjExMSwgMTE2MTE2LCAwLCAwLCAxMTYxMjEsIDExNjEyNiwgMTE2MTMxLCAxMTYxMzUsIAotICAgIDExNjEzOSwgMTE2MTQ0LCAxMTYxNDgsIDExNjE1MywgMCwgMTE2MTU4LCAxMTYxNjMsIDExNjE2OCwgMTE2MTcyLCAKLSAgICAxMTYxNzcsIDExNjE4MiwgMTE2MTg3LCAwLCAxMTYxOTIsIDExNjE5NiwgMTE2MjAxLCAxMTYyMDYsIDExNjIxMSwgCi0gICAgMTE2MjE1LCAxMTYyMjAsIDExNjIyNSwgMTE2MjMwLCAxMTYyMzQsIDExNjIzOSwgMTE2MjQ0LCAxMTYyNDgsIDExNjI1MiwgCi0gICAgMTE2MjU3LCAxMTYyNjEsIDExNjI2NiwgMTE2MjcxLCAxMTYyNzUsIDExNjI4MCwgMTE2Mjg1LCAxMTYyODksIDExNjI5NCwgCi0gICAgMTE2Mjk5LCAxMTYzMDQsIDExNjMwOSwgMTE2MzE0LCAxMTYzMTgsIDAsIDExNjMyMywgMTE2MzI4LCAxMTYzMzIsIAotICAgIDExNjMzNywgMCwgMTE2MzQyLCAxMTYzNDYsIDExNjM1MSwgMTE2MzU2LCAxMTYzNjAsIDAsIDExNjM2NCwgMCwgMCwgMCwgCi0gICAgMTE2MzY4LCAxMTYzNzMsIDExNjM3OCwgMTE2MzgyLCAxMTYzODcsIDExNjM5MiwgMTE2Mzk3LCAwLCAxMTY0MDIsIAotICAgIDExNjQwNiwgMTE2NDExLCAxMTY0MTYsIDExNjQyMSwgMTE2NDI1LCAxMTY0MzAsIDExNjQzNSwgMTE2NDQwLCAxMTY0NDQsIAotICAgIDExNjQ0OSwgMTE2NDU0LCAxMTY0NTgsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzEsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODUsIAotICAgIDExNjQ5MCwgMTE2NDk1LCAxMTY0OTksIDExNjUwNCwgMTE2NTA5LCAxMTY1MTQsIDExNjUxOSwgMTE2NTI0LCAxMTY1MjksIAotICAgIDExNjUzNSwgMTE2NTQxLCAxMTY1NDcsIDExNjU1MiwgMTE2NTU4LCAxMTY1NjQsIDExNjU3MCwgMTE2NTc1LCAxMTY1ODEsIAotICAgIDExNjU4NywgMTE2NTkyLCAxMTY1OTcsIDExNjYwMywgMTE2NjA4LCAxMTY2MTQsIDExNjYyMCwgMTE2NjI1LCAxMTY2MzEsIAotICAgIDExNjYzNywgMTE2NjQyLCAxMTY2NDgsIDExNjY1NCwgMTE2NjYwLCAxMTY2NjYsIDExNjY3MiwgMTE2Njc3LCAxMTY2ODMsIAotICAgIDExNjY4OSwgMTE2Njk1LCAxMTY3MDAsIDExNjcwNiwgMTE2NzEyLCAxMTY3MTgsIDExNjcyMywgMTE2NzI5LCAxMTY3MzUsIAotICAgIDExNjc0MCwgMTE2NzQ1LCAxMTY3NTEsIDExNjc1NiwgMTE2NzYyLCAxMTY3NjgsIDExNjc3MywgMTE2Nzc5LCAxMTY3ODUsIAotICAgIDExNjc5MCwgMTE2Nzk2LCAxMTY4MDIsIDExNjgwOCwgMTE2ODE0LCAxMTY4MjAsIDExNjgyNCwgMTE2ODI5LCAxMTY4MzQsIAotICAgIDExNjgzOSwgMTE2ODQzLCAxMTY4NDgsIDExNjg1MywgMTE2ODU4LCAxMTY4NjIsIDExNjg2NywgMTE2ODcyLCAxMTY4NzYsIAotICAgIDExNjg4MCwgMTE2ODg1LCAxMTY4ODksIDExNjg5NCwgMTE2ODk5LCAxMTY5MDMsIDExNjkwOCwgMTE2OTEzLCAxMTY5MTcsIAotICAgIDExNjkyMiwgMTE2OTI3LCAxMTY5MzIsIDExNjkzNywgMTE2OTQyLCAxMTY5NDYsIDExNjk1MSwgMTE2OTU2LCAxMTY5NjEsIAotICAgIDExNjk2NSwgMTE2OTcwLCAxMTY5NzUsIDExNjk4MCwgMTE2OTg0LCAxMTY5ODksIDExNjk5NCwgMTE2OTk4LCAxMTcwMDIsIAotICAgIDExNzAwNywgMTE3MDExLCAxMTcwMTYsIDExNzAyMSwgMTE3MDI1LCAxMTcwMzAsIDExNzAzNSwgMTE3MDM5LCAxMTcwNDQsIAotICAgIDExNzA0OSwgMTE3MDU0LCAxMTcwNTksIDExNzA2NCwgMTE3MDY5LCAxMTcwNzUsIDExNzA4MSwgMTE3MDg3LCAxMTcwOTIsIAotICAgIDExNzA5OCwgMTE3MTA0LCAxMTcxMTAsIDExNzExNSwgMTE3MTIxLCAxMTcxMjcsIDExNzEzMiwgMTE3MTM3LCAxMTcxNDMsIAotICAgIDExNzE0OCwgMTE3MTU0LCAxMTcxNjAsIDExNzE2NSwgMTE3MTcxLCAxMTcxNzcsIDExNzE4MiwgMTE3MTg4LCAxMTcxOTQsIAotICAgIDExNzIwMCwgMTE3MjA2LCAxMTcyMTIsIDExNzIxNywgMTE3MjIzLCAxMTcyMjksIDExNzIzNSwgMTE3MjQwLCAxMTcyNDYsIAotICAgIDExNzI1MiwgMTE3MjU4LCAxMTcyNjMsIDExNzI2OSwgMTE3Mjc1LCAxMTcyODAsIDExNzI4NSwgMTE3MjkxLCAxMTcyOTYsIAotICAgIDExNzMwMiwgMTE3MzA4LCAxMTczMTMsIDExNzMxOSwgMTE3MzI1LCAxMTczMzAsIDExNzMzNiwgMTE3MzQyLCAxMTczNDgsIAotICAgIDExNzM1NCwgMTE3MzYwLCAxMTczNjUsIDExNzM3MSwgMTE3Mzc3LCAxMTczODMsIDExNzM4OCwgMTE3Mzk0LCAxMTc0MDAsIAotICAgIDExNzQwNiwgMTE3NDExLCAxMTc0MTcsIDExNzQyMywgMTE3NDI4LCAxMTc0MzMsIDExNzQzOSwgMTE3NDQ0LCAxMTc0NTAsIAotICAgIDExNzQ1NiwgMTE3NDYxLCAxMTc0NjcsIDExNzQ3MywgMTE3NDc4LCAxMTc0ODQsIDExNzQ5MCwgMTE3NDk2LCAxMTc1MDIsIAotICAgIDExNzUwOCwgMTE3NTEzLCAxMTc1MTksIDExNzUyNSwgMTE3NTMxLCAxMTc1MzYsIDExNzU0MiwgMTE3NTQ4LCAxMTc1NTQsIAotICAgIDExNzU1OSwgMTE3NTY1LCAxMTc1NzEsIDExNzU3NiwgMTE3NTgxLCAxMTc1ODcsIDExNzU5MiwgMTE3NTk4LCAxMTc2MDQsIAotICAgIDExNzYwOSwgMTE3NjE1LCAxMTc2MjEsIDExNzYyNiwgMTE3NjMyLCAxMTc2MzgsIDExNzY0NCwgMTE3NjUwLCAxMTc2NTYsIAotICAgIDExNzY2MiwgMTE3NjY5LCAxMTc2NzYsIDExNzY4MywgMTE3Njg5LCAxMTc2OTYsIDExNzcwMywgMTE3NzEwLCAxMTc3MTYsIAotICAgIDExNzcyMywgMTE3NzMwLCAxMTc3MzYsIDExNzc0MiwgMTE3NzQ5LCAxMTc3NTUsIDExNzc2MiwgMTE3NzY5LCAxMTc3NzUsIAotICAgIDExNzc4MiwgMTE3Nzg5LCAxMTc3OTUsIDExNzgwMiwgMTE3ODA5LCAxMTc4MTYsIDExNzgyMywgMTE3ODMwLCAxMTc4MzYsIAotICAgIDExNzg0MywgMTE3ODUwLCAxMTc4NTcsIDExNzg2MywgMTE3ODcwLCAxMTc4NzcsIDExNzg4NCwgMTE3ODkwLCAxMTc4OTcsIAotICAgIDExNzkwNCwgMTE3OTEwLCAxMTc5MTYsIDExNzkyMywgMTE3OTI5LCAxMTc5MzYsIDExNzk0MywgMTE3OTQ5LCAxMTc5NTYsIAotICAgIDExNzk2MywgMTE3OTY5LCAxMTc5NzYsIDExNzk4MywgMTE3OTkwLCAxMTc5OTcsIDExODAwNCwgMTE4MDA5LCAxMTgwMTUsIAotICAgIDExODAyMSwgMTE4MDI3LCAxMTgwMzIsIDExODAzOCwgMTE4MDQ0LCAxMTgwNTAsIDExODA1NSwgMTE4MDYxLCAxMTgwNjcsIAotICAgIDExODA3MiwgMTE4MDc3LCAxMTgwODMsIDExODA4OCwgMTE4MDk0LCAxMTgxMDAsIDExODEwNSwgMTE4MTExLCAxMTgxMTcsIAotICAgIDExODEyMiwgMTE4MTI4LCAxMTgxMzQsIDExODE0MCwgMTE4MTQ2LCAxMTgxNTIsIDExODE1NywgMTE4MTYzLCAxMTgxNjksIAotICAgIDExODE3NSwgMTE4MTgwLCAxMTgxODYsIDExODE5MiwgMTE4MTk4LCAxMTgyMDMsIDExODIwOSwgMTE4MjE1LCAxMTgyMjAsIAotICAgIDExODIyNSwgMTE4MjMxLCAxMTgyMzYsIDExODI0MiwgMTE4MjQ4LCAxMTgyNTMsIDExODI1OSwgMTE4MjY1LCAxMTgyNzAsIAotICAgIDExODI3NiwgMTE4MjgyLCAxMTgyODgsIDExODI5NCwgMTE4MzAwLCAxMTgzMDYsIDAsIDAsIDExODMxMywgMTE4MzE4LCAKLSAgICAxMTgzMjMsIDExODMyOCwgMTE4MzMzLCAxMTgzMzgsIDExODM0MywgMTE4MzQ4LCAxMTgzNTMsIDExODM1OCwgMTE4MzYzLCAKLSAgICAxMTgzNjgsIDExODM3MywgMTE4Mzc4LCAxMTgzODMsIDExODM4OCwgMTE4MzkzLCAxMTgzOTgsIDExODQwNCwgMTE4NDA5LCAKLSAgICAxMTg0MTQsIDExODQxOSwgMTE4NDI0LCAxMTg0MjksIDExODQzNCwgMTE4NDM5LCAxMTg0NDMsIDExODQ0OCwgMTE4NDUzLCAKLSAgICAxMTg0NTgsIDExODQ2MywgMTE4NDY4LCAxMTg0NzMsIDExODQ3OCwgMTE4NDgzLCAxMTg0ODgsIDExODQ5MywgMTE4NDk4LCAKLSAgICAxMTg1MDMsIDExODUwOCwgMTE4NTEzLCAxMTg1MTgsIDExODUyMywgMTE4NTI4LCAxMTg1MzQsIDExODUzOSwgMTE4NTQ0LCAKLSAgICAxMTg1NDksIDExODU1NCwgMTE4NTU5LCAxMTg1NjQsIDExODU2OSwgMTE4NTc1LCAxMTg1ODAsIDExODU4NSwgMTE4NTkwLCAKLSAgICAxMTg1OTUsIDExODYwMCwgMTE4NjA1LCAxMTg2MTAsIDExODYxNSwgMTE4NjIwLCAxMTg2MjUsIDExODYzMCwgMTE4NjM1LCAKLSAgICAxMTg2NDAsIDExODY0NSwgMTE4NjUwLCAxMTg2NTUsIDExODY2MCwgMTE4NjY1LCAxMTg2NzAsIDExODY3NSwgMTE4NjgwLCAKLSAgICAxMTg2ODUsIDExODY5MCwgMTE4Njk2LCAxMTg3MDEsIDExODcwNiwgMTE4NzExLCAxMTg3MTYsIDExODcyMSwgMTE4NzI2LCAKLSAgICAxMTg3MzEsIDExODczNSwgMTE4NzQwLCAxMTg3NDUsIDExODc1MCwgMTE4NzU1LCAxMTg3NjAsIDExODc2NSwgMTE4NzcwLCAKLSAgICAxMTg3NzUsIDExODc4MCwgMTE4Nzg1LCAxMTg3OTAsIDExODc5NSwgMTE4ODAwLCAxMTg4MDUsIDExODgxMCwgMTE4ODE1LCAKLSAgICAxMTg4MjAsIDExODgyNiwgMTE4ODMxLCAxMTg4MzYsIDExODg0MSwgMTE4ODQ2LCAxMTg4NTEsIDExODg1NiwgMTE4ODYxLCAKLSAgICAxMTg4NjcsIDExODg3MiwgMTE4ODc3LCAxMTg4ODIsIDExODg4NywgMTE4ODkyLCAxMTg4OTcsIDExODkwMywgMTE4OTA5LCAKLSAgICAxMTg5MTUsIDExODkyMSwgMTE4OTI3LCAxMTg5MzMsIDExODkzOSwgMTE4OTQ1LCAxMTg5NTEsIDExODk1NywgMTE4OTYzLCAKLSAgICAxMTg5NjksIDExODk3NSwgMTE4OTgxLCAxMTg5ODcsIDExODk5MywgMTE4OTk5LCAxMTkwMDYsIDExOTAxMiwgMTE5MDE4LCAKLSAgICAxMTkwMjQsIDExOTAzMCwgMTE5MDM2LCAxMTkwNDIsIDExOTA0OCwgMTE5MDUzLCAxMTkwNTksIDExOTA2NSwgMTE5MDcxLCAKLSAgICAxMTkwNzcsIDExOTA4MywgMTE5MDg5LCAxMTkwOTUsIDExOTEwMSwgMTE5MTA3LCAxMTkxMTMsIDExOTExOSwgMTE5MTI1LCAKLSAgICAxMTkxMzEsIDExOTEzNywgMTE5MTQzLCAxMTkxNDksIDExOTE1NSwgMTE5MTYyLCAxMTkxNjgsIDExOTE3NCwgMTE5MTgwLCAKLSAgICAxMTkxODYsIDExOTE5MiwgMTE5MTk4LCAxMTkyMDQsIDExOTIxMSwgMTE5MjE3LCAxMTkyMjMsIDExOTIyOSwgMTE5MjM1LCAKLSAgICAxMTkyNDEsIDExOTI0NywgMTE5MjUzLCAxMTkyNTksIDExOTI2NSwgMTE5MjcxLCAxMTkyNzcsIDExOTI4MywgMTE5Mjg5LCAKLSAgICAxMTkyOTUsIDExOTMwMSwgMTE5MzA3LCAxMTkzMTMsIDExOTMxOSwgMTE5MzI1LCAxMTkzMzEsIDExOTMzNywgMTE5MzQzLCAKLSAgICAxMTkzNDksIDExOTM1NiwgMTE5MzYyLCAxMTkzNjgsIDExOTM3NCwgMTE5MzgwLCAxMTkzODYsIDExOTM5MiwgMTE5Mzk4LCAKLSAgICAxMTk0MDMsIDExOTQwOSwgMTE5NDE1LCAxMTk0MjEsIDExOTQyNywgMTE5NDMzLCAxMTk0MzksIDExOTQ0NSwgMTE5NDUxLCAKLSAgICAxMTk0NTcsIDExOTQ2MywgMTE5NDY5LCAxMTk0NzUsIDExOTQ4MSwgMTE5NDg3LCAxMTk0OTMsIDExOTQ5OSwgMTE5NTA1LCAKLSAgICAxMTk1MTIsIDExOTUxOCwgMTE5NTI0LCAxMTk1MzAsIDExOTUzNiwgMTE5NTQyLCAxMTk1NDgsIDExOTU1NCwgMTE5NTYxLCAKLSAgICAxMTk1NjcsIDExOTU3MywgMTE5NTc5LCAxMTk1ODUsIDExOTU5MSwgMTE5NTk3LCAxMTk2MDQsIDExOTYxMSwgMTE5NjE4LCAKLSAgICAxMTk2MjUsIDExOTYzMiwgMTE5NjM5LCAxMTk2NDYsIDExOTY1MywgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAKLSAgICAxMTk2ODgsIDExOTY5NSwgMTE5NzAyLCAxMTk3MDksIDExOTcxNiwgMTE5NzI0LCAxMTk3MzEsIDExOTczOCwgMTE5NzQ1LCAKLSAgICAxMTk3NTIsIDExOTc1OSwgMTE5NzY2LCAxMTk3NzMsIDExOTc3OSwgMTE5Nzg2LCAxMTk3OTMsIDExOTgwMCwgMTE5ODA3LCAKLSAgICAxMTk4MTQsIDExOTgyMSwgMTE5ODI4LCAxMTk4MzUsIDExOTg0MiwgMTE5ODQ5LCAxMTk4NTYsIDExOTg2MywgMTE5ODcwLCAKLSAgICAxMTk4NzcsIDExOTg4NCwgMTE5ODkxLCAxMTk4OTgsIDExOTkwNiwgMTE5OTEzLCAxMTk5MjAsIDExOTkyNywgMTE5OTM0LCAKLSAgICAxMTk5NDEsIDExOTk0OCwgMTE5OTU1LCAxMTk5NjMsIDExOTk3MCwgMTE5OTc3LCAxMTk5ODQsIDExOTk5MSwgMTE5OTk4LCAKLSAgICAxMjAwMDUsIDEyMDAxMCwgMCwgMCwgMTIwMDE1LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzIsIDEyMDAzNiwgCi0gICAgMTIwMDQwLCAxMjAwNDQsIDEyMDA0OCwgMTIwMDUyLCAxMjAwNTYsIDEyMDA2MSwgMTIwMDY1LCAxMjAwNjksIDEyMDA3MywgCi0gICAgMTIwMDc3LCAxMjAwODEsIDEyMDA4NSwgMTIwMDg5LCAxMjAwOTMsIDEyMDA5NywgMTIwMTAyLCAxMjAxMDYsIDEyMDExMCwgCi0gICAgMTIwMTE0LCAxMjAxMTgsIDEyMDEyMiwgMTIwMTI2LCAxMjAxMzAsIDEyMDEzNCwgMTIwMTM4LCAxMjAxNDQsIDEyMDE0OSwgCi0gICAgMTIwMTU0LCAxMjAxNTksIDEyMDE2NCwgMTIwMTY5LCAxMjAxNzQsIDEyMDE3OSwgMTIwMTg0LCAxMjAxODksIDEyMDE5NSwgCi0gICAgMTIwMjAwLCAxMjAyMDUsIDEyMDIxMCwgMTIwMjE1LCAxMjAyMjAsIDEyMDIyNSwgMTIwMjMwLCAxMjAyMzUsIDEyMDI0MCwgCi0gICAgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMCwgMTIwMjU2LCAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIAotICAgIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIAotICAgIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNCwgMTIwMzI4LCAxMjAzMzIsIDEyMDMzNiwgMTIwMzQwLCAxMjAzNDQsIAotICAgIDEyMDM0OCwgMTIwMzU0LCAxMjAzNjAsIDEyMDM2NiwgMCwgMTIwMzcyLCAxMjAzNzcsIDAsIDEyMDM4MiwgMCwgMCwgCi0gICAgMTIwMzg3LCAwLCAxMjAzOTIsIDEyMDM5NywgMTIwNDAyLCAxMjA0MDcsIDEyMDQxMiwgMTIwNDE3LCAxMjA0MjIsIAotICAgIDEyMDQyNywgMTIwNDMyLCAxMjA0MzcsIDAsIDEyMDQ0MiwgMTIwNDQ3LCAxMjA0NTIsIDEyMDQ1NywgMCwgMTIwNDYyLCAwLCAKLSAgICAxMjA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDQ3MiwgMCwgMCwgMCwgMCwgMTIwNDc4LCAwLCAxMjA0ODQsIDAsIAotICAgIDEyMDQ5MCwgMCwgMTIwNDk2LCAxMjA1MDIsIDEyMDUwOCwgMCwgMTIwNTE0LCAxMjA1MjAsIDAsIDEyMDUyNiwgMCwgMCwgCi0gICAgMTIwNTMyLCAwLCAxMjA1MzgsIDAsIDEyMDU0NCwgMCwgMTIwNTUwLCAwLCAxMjA1NTgsIDAsIDEyMDU2NiwgMTIwNTcyLCAwLCAKLSAgICAxMjA1NzgsIDAsIDAsIDEyMDU4NCwgMTIwNTkwLCAxMjA1OTYsIDEyMDYwMiwgMCwgMTIwNjA4LCAxMjA2MTQsIDEyMDYyMCwgCi0gICAgMTIwNjI2LCAxMjA2MzIsIDEyMDYzOCwgMTIwNjQ0LCAwLCAxMjA2NTAsIDEyMDY1NiwgMTIwNjYyLCAxMjA2NjgsIDAsIAotICAgIDEyMDY3NCwgMTIwNjgwLCAxMjA2ODYsIDEyMDY5MiwgMCwgMTIwNzAwLCAwLCAxMjA3MDgsIDEyMDcxNCwgMTIwNzIwLCAKLSAgICAxMjA3MjYsIDEyMDczMiwgMTIwNzM4LCAxMjA3NDQsIDEyMDc1MCwgMTIwNzU2LCAxMjA3NjIsIDAsIDEyMDc2OCwgCi0gICAgMTIwNzc0LCAxMjA3ODAsIDEyMDc4NiwgMTIwNzkyLCAxMjA3OTgsIDEyMDgwNCwgMTIwODEwLCAxMjA4MTYsIDEyMDgyMiwgCi0gICAgMTIwODI4LCAxMjA4MzQsIDEyMDg0MCwgMTIwODQ2LCAxMjA4NTIsIDEyMDg1OCwgMTIwODY0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjA4NzAsIDEyMDg3NSwgMTIwODgwLCAwLCAxMjA4ODUsIDEyMDg5MCwgMTIwODk1LCAxMjA5MDAsIDEyMDkwNSwgMCwgCi0gICAgMTIwOTEwLCAxMjA5MTUsIDEyMDkyMCwgMTIwOTI1LCAxMjA5MzAsIDEyMDkzNSwgMTIwOTQwLCAxMjA5NDUsIDEyMDk1MCwgCi0gICAgMTIwOTU1LCAxMjA5NjAsIDEyMDk2NSwgMTIwOTcwLCAxMjA5NzUsIDEyMDk4MCwgMTIwOTg1LCAxMjA5OTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyMDk5NSwgMTIxMDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjEwMTMsIAotICAgIDEyMTAyMCwgMTIxMDI3LCAxMjEwMzQsIDEyMTA0MSwgMTIxMDQ4LCAxMjEwNTUsIDEyMTA2MSwgMTIxMDY4LCAxMjEwNzUsIAotICAgIDEyMTA4MiwgMTIxMDkwLCAxMjEwOTgsIDEyMTEwNiwgMTIxMTE0LCAxMjExMjIsIDEyMTEzMCwgMTIxMTM3LCAxMjExNDQsIAotICAgIDEyMTE1MSwgMTIxMTU5LCAxMjExNjcsIDEyMTE3NSwgMTIxMTgzLCAxMjExOTEsIDEyMTE5OSwgMTIxMjA2LCAxMjEyMTMsIAotICAgIDEyMTIyMCwgMTIxMjI4LCAxMjEyMzYsIDEyMTI0NCwgMTIxMjUyLCAxMjEyNjAsIDEyMTI2OCwgMTIxMjczLCAxMjEyNzgsIAotICAgIDEyMTI4MywgMTIxMjg4LCAxMjEyOTMsIDEyMTI5OCwgMTIxMzAzLCAxMjEzMDgsIDEyMTMxMywgMCwgMCwgMCwgMCwgCi0gICAgMTIxMzE4LCAxMjEzMjMsIDEyMTMyNywgMTIxMzMxLCAxMjEzMzUsIDEyMTMzOSwgMTIxMzQzLCAxMjEzNDcsIDEyMTM1MSwgCi0gICAgMTIxMzU1LCAxMjEzNTksIDEyMTM2MywgMTIxMzY3LCAxMjEzNzEsIDEyMTM3NSwgMTIxMzc5LCAxMjEzODMsIDEyMTM4NywgCi0gICAgMTIxMzkxLCAxMjEzOTUsIDEyMTM5OSwgMTIxNDAzLCAxMjE0MDcsIDEyMTQxMSwgMTIxNDE1LCAxMjE0MTksIDEyMTQyMywgCi0gICAgMTIxNDI3LCAxMjE0MzEsIDEyMTQzNSwgMTIxNDM5LCAxMjE0NDMsIDEyMTQ0NywgMTIxNDUxLCAxMjE0NTUsIDEyMTQ1OSwgCi0gICAgMTIxNDYzLCAxMjE0NjcsIDEyMTQ3MSwgMTIxNDc1LCAxMjE0NzksIDEyMTQ4MywgMTIxNDg3LCAxMjE0OTEsIDEyMTQ5NSwgCi0gICAgMTIxNDk5LCAxMjE1MDMsIDEyMTUwNywgMTIxNTExLCAxMjE1MTUsIDEyMTUxOSwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgCi0gICAgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgCi0gICAgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgCi0gICAgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgCi0gICAgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgCi0gICAgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgCi0gICAgMTIxNzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE3MjAsIDEyMTcyNiwgMTIxNzM1LCAKLSAgICAxMjE3NDMsIDEyMTc1MSwgMTIxNzYwLCAxMjE3NjksIDEyMTc3OCwgMTIxNzg3LCAxMjE3OTYsIDEyMTgwNSwgMTIxODE0LCAKLSAgICAxMjE4MjMsIDEyMTgzMiwgMTIxODQxLCAwLCAwLCAxMjE4NTAsIDEyMTg1OSwgMTIxODY3LCAxMjE4NzUsIDEyMTg4NCwgCi0gICAgMTIxODkzLCAxMjE5MDIsIDEyMTkxMSwgMTIxOTIwLCAxMjE5MjksIDEyMTkzOCwgMTIxOTQ3LCAxMjE5NTYsIDEyMTk2NSwgCi0gICAgMCwgMCwgMTIxOTc0LCAxMjE5ODMsIDEyMTk5MSwgMTIxOTk5LCAxMjIwMDgsIDEyMjAxNywgMTIyMDI2LCAxMjIwMzUsIAotICAgIDEyMjA0NCwgMTIyMDUzLCAxMjIwNjIsIDEyMjA3MSwgMTIyMDgwLCAxMjIwODksIDEyMjA5OCwgMCwgMTIyMTA1LCAKLSAgICAxMjIxMTQsIDEyMjEyMiwgMTIyMTMwLCAxMjIxMzksIDEyMjE0OCwgMTIyMTU3LCAxMjIxNjYsIDEyMjE3NSwgMTIyMTg0LCAKLSAgICAxMjIxOTMsIDEyMjIwMiwgMTIyMjExLCAxMjIyMjAsIDEyMjIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyMjM2LCAKLSAgICAxMjIyNDMsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY1LCAxMjIyNzAsIDEyMjI3NSwgMTIyMjgwLCAKLSAgICAxMjIyODUsIDAsIDAsIDAsIDAsIDAsIDEyMjI5MCwgMTIyMjk1LCAxMjIzMDEsIDEyMjMwNywgMTIyMzEzLCAxMjIzMTgsIAotICAgIDEyMjMyNCwgMTIyMzMwLCAxMjIzMzYsIDEyMjM0MSwgMTIyMzQ3LCAxMjIzNTMsIDEyMjM1OCwgMTIyMzYzLCAxMjIzNjksIAotICAgIDEyMjM3NCwgMTIyMzgwLCAxMjIzODYsIDEyMjM5MSwgMTIyMzk3LCAxMjI0MDMsIDEyMjQwOCwgMTIyNDE0LCAxMjI0MjAsIAotICAgIDEyMjQyNiwgMTIyNDMyLCAxMjI0MzgsIDEyMjQ0OSwgMTIyNDU2LCAxMjI0NjIsIDEyMjQ2NSwgMCwgMTIyNDY4LCAKLSAgICAxMjI0NzMsIDEyMjQ3OSwgMTIyNDg1LCAxMjI0OTEsIDEyMjQ5NiwgMTIyNTAyLCAxMjI1MDgsIDEyMjUxNCwgMTIyNTE5LCAKLSAgICAxMjI1MjUsIDEyMjUzMSwgMTIyNTM2LCAxMjI1NDEsIDEyMjU0NywgMTIyNTUyLCAxMjI1NTgsIDEyMjU2NCwgMTIyNTY5LCAKLSAgICAxMjI1NzUsIDEyMjU4MSwgMTIyNTg2LCAxMjI1OTIsIDEyMjU5OCwgMTIyNjA0LCAxMjI2MTAsIDEyMjYxNiwgMTIyNjE5LCAKLSAgICAxMjI2MjIsIDEyMjYyNSwgMTIyNjI4LCAxMjI2MzEsIDEyMjYzNCwgMTIyNjQwLCAxMjI2NDcsIDEyMjY1NCwgMTIyNjYxLCAKLSAgICAxMjI2NjcsIDEyMjY3NCwgMTIyNjgxLCAxMjI2ODgsIDEyMjY5NCwgMTIyNzAxLCAxMjI3MDgsIDEyMjcxNCwgMTIyNzIwLCAKLSAgICAxMjI3MjcsIDEyMjczMywgMTIyNzQwLCAxMjI3NDcsIDEyMjc1MywgMTIyNzYwLCAxMjI3NjcsIDEyMjc3MywgMTIyNzgwLCAKLSAgICAxMjI3ODcsIDEyMjc5NCwgMTIyODAxLCAxMjI4MDgsIDEyMjgxMywgMCwgMCwgMCwgMCwgMTIyODE4LCAxMjI4MjQsIAotICAgIDEyMjgzMSwgMTIyODM4LCAxMjI4NDUsIDEyMjg1MSwgMTIyODU4LCAxMjI4NjUsIDEyMjg3MiwgMTIyODc4LCAxMjI4ODUsIAotICAgIDEyMjg5MiwgMTIyODk4LCAxMjI5MDQsIDEyMjkxMSwgMTIyOTE3LCAxMjI5MjQsIDEyMjkzMSwgMTIyOTM3LCAxMjI5NDQsIAotICAgIDEyMjk1MSwgMTIyOTU3LCAxMjI5NjQsIDEyMjk3MSwgMTIyOTc4LCAxMjI5ODUsIDEyMjk5MiwgMTIzMDAxLCAxMjMwMDUsIAotICAgIDEyMzAwOCwgMTIzMDExLCAxMjMwMTUsIDEyMzAxOSwgMTIzMDIyLCAxMjMwMjUsIDEyMzAyOCwgMTIzMDMxLCAxMjMwMzQsIAotICAgIDEyMzAzNywgMTIzMDQwLCAxMjMwNDMsIDEyMzA0NiwgMTIzMDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjMwNTUsIDEyMzA2MiwgMTIzMDcwLCAKLSAgICAxMjMwNzgsIDEyMzA4NiwgMTIzMDkzLCAxMjMxMDEsIDEyMzEwOSwgMTIzMTE3LCAxMjMxMjQsIDEyMzEzMiwgMTIzMTQwLCAKLSAgICAxMjMxNDcsIDEyMzE1NCwgMTIzMTYyLCAxMjMxNjksIDEyMzE3NywgMTIzMTg1LCAxMjMxOTIsIDEyMzIwMCwgMTIzMjA4LCAKLSAgICAxMjMyMTUsIDEyMzIyMywgMTIzMjMxLCAxMjMyMzksIDEyMzI0NywgMTIzMjU1LCAxMjMyNTksIDEyMzI2MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMjY2LCAxMjMyNzIsIDEyMzI3OCwgMTIzMjg0LCAxMjMyODgsIAotICAgIDEyMzI5NCwgMTIzMzAwLCAxMjMzMDYsIDEyMzMxMiwgMTIzMzE4LCAxMjMzMjQsIDEyMzMzMCwgMTIzMzM2LCAxMjMzNDIsIAotICAgIDEyMzM0OCwgMTIzMzU0LCAxMjMzNjAsIDEyMzM2NiwgMTIzMzcyLCAxMjMzNzgsIDEyMzM4NCwgMTIzMzkwLCAxMjMzOTYsIAotICAgIDEyMzQwMiwgMTIzNDA4LCAxMjM0MTQsIDEyMzQyMCwgMTIzNDI2LCAxMjM0MzIsIDEyMzQzOCwgMTIzNDQ0LCAxMjM0NTAsIAotICAgIDEyMzQ1NiwgMTIzNDYyLCAxMjM0NjgsIDEyMzQ3NCwgMTIzNDgwLCAxMjM0ODYsIDEyMzQ5MiwgMTIzNDk4LCAxMjM1MDQsIAotICAgIDEyMzUxMCwgMTIzNTE2LCAwLCAwLCAwLCAwLCAwLCAxMjM1MjIsIDEyMzUzMywgMTIzNTQ0LCAxMjM1NTUsIDEyMzU2NiwgCi0gICAgMTIzNTc3LCAxMjM1ODgsIDEyMzU5OSwgMTIzNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjM2MjEsIDEyMzYyNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNjI5LCAKLSAgICAxMjM2MzEsIDEyMzYzMywgMTIzNjM3LCAxMjM2NDIsIDEyMzY0NywgMTIzNjQ5LCAxMjM2NTUsIDEyMzY2MCwgMTIzNjYyLCAKLSAgICAxMjM2NjgsIDEyMzY3MiwgMTIzNjc0LCAxMjM2NzgsIDEyMzY4NCwgMTIzNjkwLCAxMjM2OTYsIDEyMzcwMSwgMTIzNzA1LCAKLSAgICAxMjM3MTIsIDEyMzcxOSwgMTIzNzI2LCAxMjM3MzEsIDEyMzczOCwgMTIzNzQ1LCAxMjM3NTIsIDEyMzc1NiwgMTIzNzYyLCAKLSAgICAxMjM3NzEsIDEyMzc4MCwgMTIzNzg3LCAxMjM3OTIsIDEyMzc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTIzODAwLCAxMjM4MDIsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMCwgMTIzODE4LCAKLSAgICAxMjM4MjAsIDEyMzgyNCwgMTIzODI2LCAxMjM4MjgsIDEyMzgzMCwgMTIzODMyLCAxMjM4MzcsIDEyMzg0MiwgMTIzODQ0LCAKLSAgICAxMjM4NTAsIDEyMzg1NCwgMTIzODU4LCAxMjM4NjYsIDEyMzg2OCwgMTIzODcwLCAxMjM4NzIsIDEyMzg3NCwgMTIzODc2LCAKLSAgICAxMjM4NzgsIDEyMzg4MCwgMTIzODgyLCAxMjM4ODQsIDEyMzg4NiwgMTIzODkwLCAxMjM4OTQsIDEyMzg5NiwgMTIzODk4LCAKLSAgICAxMjM5MDAsIDEyMzkwMiwgMTIzOTA0LCAxMjM5MDksIDEyMzkxNSwgMTIzOTE5LCAxMjM5MjMsIDEyMzkyNywgMTIzOTMxLCAKLSAgICAxMjM5MzYsIDEyMzk0MCwgMTIzOTQyLCAxMjM5NDQsIDEyMzk0OCwgMTIzOTU0LCAxMjM5NTYsIDEyMzk1OCwgMTIzOTYwLCAKLSAgICAxMjM5NjQsIDEyMzk3MywgMTIzOTc5LCAxMjM5ODMsIDEyMzk4NywgMTIzOTg5LCAxMjM5OTEsIDEyMzk5NCwgMTIzOTk2LCAKLSAgICAxMjM5OTgsIDEyNDAwMCwgMTI0MDA0LCAxMjQwMDYsIDEyNDAxMCwgMTI0MDE1LCAxMjQwMTcsIDEyNDAyMiwgMTI0MDI4LCAKLSAgICAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDcsIDEyNDA1MSwgMTI0MDU3LCAwLCAwLCAwLCAxMjQwNjEsIDEyNDA2MywgCi0gICAgMTI0MDY3LCAxMjQwNzEsIDEyNDA3MywgMTI0MDc3LCAxMjQwODEsIDEyNDA4MywgMTI0MDg3LCAxMjQwODksIDEyNDA5MywgCi0gICAgMTI0MDk3LCAxMjQxMDEsIDEyNDEwNSwgMTI0MTA5LCAxMjQxMTMsIDEyNDExNywgMTI0MTIxLCAxMjQxMjcsIDEyNDEzMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MTM1LCAxMjQxMzksIDEyNDE0MywgMTI0MTQ3LCAKLSAgICAxMjQxNTQsIDEyNDE1NiwgMTI0MTYwLCAxMjQxNjIsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTc4LCAKLSAgICAxMjQxODIsIDEyNDE4NiwgMTI0MTkwLCAxMjQxOTQsIDEyNDE5OCwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwNiwgMTI0MjEyLCAKLSAgICAxMjQyMTUsIDEyNDIyMCwgMTI0MjIyLCAxMjQyMjQsIDEyNDIyNywgMTI0MjI5LCAxMjQyMzEsIDEyNDIzNCwgMTI0MjQxLCAKLSAgICAxMjQyNDgsIDEyNDI1NSwgMTI0MjYwLCAxMjQyNjQsIDEyNDI2NiwgMTI0MjY4LCAwLCAxMjQyNzAsIDEyNDI3MiwgCi0gICAgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI0Mjg2LCAxMjQyOTAsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDUsIDEyNDMxMSwgMTI0MzEzLCAKLSAgICAxMjQzMTUsIDEyNDMyMSwgMTI0MzIzLCAxMjQzMjcsIDEyNDMzMSwgMTI0MzMzLCAxMjQzMzcsIDEyNDMzOSwgMTI0MzQzLCAKLSAgICAxMjQzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDM1MSwgMTI0MzUzLCAKLSAgICAxMjQzNTUsIDEyNDM1NywgMTI0MzYxLCAxMjQzNjMsIDEyNDM2NSwgMTI0MzY3LCAxMjQzNjksIDEyNDM3MSwgMTI0MzczLCAKLSAgICAxMjQzNzUsIDEyNDM3NywgMTI0Mzc5LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM4OSwgMTI0MzkxLCAKLSAgICAxMjQzOTMsIDEyNDM5NSwgMTI0Mzk3LCAxMjQzOTksIDEyNDQwMSwgMTI0NDAzLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDExLCAKLSAgICAxMjQ0MTMsIDEyNDQxNSwgMTI0NDE5LCAxMjQ0MjEsIDEyNDQyNSwgMTI0NDI3LCAxMjQ0MjksIDEyNDQzMywgMTI0NDM3LCAKLSAgICAxMjQ0NDMsIDEyNDQ0NSwgMTI0NDQ3LCAxMjQ0NDksIDEyNDQ1MSwgMTI0NDU1LCAxMjQ0NTksIDEyNDQ2MSwgMTI0NDY1LCAKLSAgICAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgMTI0NTAxLCAKLSAgICAxMjQ1MDUsIDEyNDUwOSwgMTI0NTEzLCAxMjQ1MTcsIDEyNDUyMSwgMTI0NTI1LCAxMjQ1MjksIDAsIDEyNDUzMywgMCwgCi0gICAgMTI0NTM1LCAxMjQ1MzcsIDEyNDUzOSwgMTI0NTQxLCAxMjQ1NDMsIDEyNDU1MSwgMTI0NTU5LCAxMjQ1NjcsIDEyNDU3NSwgCi0gICAgMTI0NTgwLCAxMjQ1ODUsIDEyNDU5MCwgMTI0NTk0LCAxMjQ1OTgsIDEyNDYwMywgMTI0NjA3LCAxMjQ2MDksIDEyNDYxMywgCi0gICAgMTI0NjE1LCAxMjQ2MTcsIDEyNDYxOSwgMTI0NjIxLCAxMjQ2MjMsIDEyNDYyNSwgMTI0NjI3LCAxMjQ2MzEsIDEyNDYzMywgCi0gICAgMTI0NjM1LCAxMjQ2MzcsIDEyNDY0MSwgMTI0NjQ1LCAxMjQ2NDksIDEyNDY1MywgMTI0NjU3LCAxMjQ2NTksIDEyNDY2NSwgCi0gICAgMTI0NjcxLCAxMjQ2NzMsIDEyNDY3NSwgMTI0Njc3LCAxMjQ2NzksIDEyNDY4MSwgMTI0NjkwLCAxMjQ2OTcsIDEyNDcwNCwgCi0gICAgMTI0NzA4LCAxMjQ3MTUsIDEyNDcyMCwgMTI0NzI3LCAxMjQ3MzYsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIDEyNDc1MSwgCi0gICAgMTI0NzU1LCAxMjQ3NTcsIDEyNDc2MSwgMTI0NzY1LCAxMjQ3NjcsIDEyNDc3MSwgMTI0Nzc1LCAxMjQ3NzksIDEyNDc4MSwgCi0gICAgMTI0NzgzLCAxMjQ3ODksIDEyNDc5MSwgMTI0NzkzLCAxMjQ3OTUsIDEyNDc5OSwgMTI0ODAzLCAxMjQ4MDUsIDEyNDgwOSwgCi0gICAgMTI0ODExLCAxMjQ4MTMsIDEyNDgxNiwgMTI0ODIwLCAxMjQ4MjIsIDEyNDgyNiwgMTI0ODI4LCAxMjQ4MzAsIDEyNDgzNSwgCi0gICAgMTI0ODM3LCAxMjQ4NDEsIDEyNDg0NSwgMTI0ODQ4LCAxMjQ4NTIsIDEyNDg1NiwgMTI0ODYwLCAxMjQ4NjQsIDEyNDg2OCwgCi0gICAgMTI0ODcyLCAxMjQ4NzYsIDEyNDg4MSwgMTI0ODg1LCAxMjQ4ODksIDEyNDg5OCwgMTI0OTAzLCAxMjQ5MDYsIDEyNDkwOCwgCi0gICAgMTI0OTExLCAxMjQ5MTQsIDEyNDkxOSwgMTI0OTIxLCAxMjQ5MjQsIDEyNDkyOSwgMTI0OTMzLCAxMjQ5MzYsIDEyNDk0MCwgCi0gICAgMTI0OTQ0LCAxMjQ5NDcsIDEyNDk1MiwgMTI0OTU2LCAxMjQ5NjAsIDEyNDk2NCwgMTI0OTY4LCAxMjQ5NzQsIDEyNDk4MCwgCi0gICAgMTI0OTg2LCAxMjQ5OTIsIDEyNDk5NywgMTI1MDA4LCAxMjUwMTAsIDEyNTAxNCwgMTI1MDE2LCAxMjUwMTgsIDEyNTAyMiwgCi0gICAgMTI1MDI2LCAxMjUwMjgsIDEyNTAzMiwgMTI1MDM3LCAxMjUwNDIsIDEyNTA0OCwgMTI1MDUwLCAxMjUwNTQsIDEyNTA1OCwgCi0gICAgMTI1MDY1LCAxMjUwNzIsIDEyNTA3NiwgMTI1MDc4LCAxMjUwODAsIDEyNTA4NCwgMTI1MDg2LCAxMjUwOTAsIDEyNTA5NCwgCi0gICAgMTI1MDk4LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA5LCAxMjUxMTMsIDEyNTExNiwgMTI1MTIwLCAxMjUxMjQsIDEyNTEyOCwgCi0gICAgMTI1MTMwLCAxMjUxMzQsIDEyNTEzNiwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ4LCAxMjUxNTIsIDEyNTE1OCwgCi0gICAgMTI1MTYyLCAxMjUxNjYsIDEyNTE3MCwgMTI1MTcyLCAxMjUxNzUsIDEyNTE3OSwgMTI1MTg2LCAxMjUxOTUsIDEyNTIwNCwgCi0gICAgMTI1MjEyLCAxMjUyMjAsIDEyNTIyMiwgMTI1MjI2LCAxMjUyMjgsIDEyNTIzMiwgMTI1MjQzLCAxMjUyNDcsIDEyNTI1MywgCi0gICAgMTI1MjU5LCAxMjUyNjQsIDAsIDEyNTI2NiwgMTI1MjcwLCAxMjUyNzIsIDEyNTI3NCwgMCwgMCwgMCwgMTI1Mjc2LCAKLSAgICAxMjUyODEsIDEyNTI5MSwgMTI1MzA2LCAxMjUzMTgsIDEyNTMzMCwgMTI1MzM0LCAxMjUzMzgsIDEyNTM0NCwgMTI1MzQ2LCAKLSAgICAxMjUzNTQsIDEyNTM2MiwgMTI1MzY0LCAxMjUzNjgsIDEyNTM3NCwgMTI1MzgwLCAxMjUzODcsIDEyNTM5NCwgMTI1Mzk2LCAKLSAgICAxMjUzOTgsIDEyNTQwMSwgMTI1NDAzLCAxMjU0MDksIDEyNTQxMSwgMTI1NDE0LCAxMjU0MTgsIDEyNTQyNCwgMTI1NDMwLCAKLSAgICAxMjU0NDEsIDEyNTQ0NywgMTI1NDU0LCAxMjU0NjIsIDEyNTQ2NiwgMTI1NDc0LCAxMjU0ODIsIDEyNTQ4OCwgMTI1NDk0LCAKLSAgICAxMjU1MDEsIDEyNTUwMywgMTI1NTA3LCAxMjU1MDksIDEyNTUxMSwgMTI1NTE2LCAxMjU1MTgsIDEyNTUyMCwgMTI1NTIyLCAKLSAgICAxMjU1MjQsIDEyNTUyOCwgMTI1NTM5LCAxMjU1NDUsIDEyNTU0OSwgMTI1NTUzLCAxMjU1NTcsIDEyNTU2MywgMTI1NTY5LCAKLSAgICAxMjU1NzUsIDEyNTU4MSwgMTI1NTg2LCAxMjU1OTEsIDEyNTU5NywgMTI1NjAzLCAxMjU2MTAsIDAsIDAsIDEyNTYxNywgCi0gICAgMTI1NjIyLCAxMjU2MzAsIDEyNTYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1NjQzLCAKLSAgICAxMjU2NTAsIDEyNTY1NywgMTI1NjY0LCAxMjU2NzIsIDEyNTY4MCwgMTI1Njg4LCAxMjU2OTYsIDEyNTcwNCwgMTI1NzEyLCAKLSAgICAxMjU3MjAsIDEyNTcyOCwgMTI1NzM2LCAxMjU3NDIsIDEyNTc0OCwgMTI1NzU0LCAxMjU3NjAsIDEyNTc2NiwgMTI1NzcyLCAKLSAgICAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAxMjU3OTYsIDEyNTgwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUxNjgsIDk1MTczLCA5NTE3OCwgOTUxODMsIDk1MTg4LCAKKyAgICA5NTE5MywgOTUxOTgsIDk1MjAzLCA5NTIwOCwgOTUyMTMsIDk1MjE4LCA5NTIyMywgOTUyMjgsIDk1MjMzLCA5NTIzOCwgCisgICAgOTUyNDMsIDk1MjQ4LCA5NTI1MywgOTUyNTgsIDk1MjYzLCA5NTI2OCwgOTUyNzMsIDk1Mjc4LCA5NTI4MywgOTUyODgsIAorICAgIDk1MjkzLCA5NTI5OCwgOTUzMDMsIDk1MzA4LCA5NTMxMywgOTUzMTgsIDk1MzIzLCA5NTMyOCwgOTUzMzMsIDk1MzM4LCAKKyAgICA5NTM0MywgOTUzNDgsIDk1MzUzLCA5NTM1OCwgOTUzNjMsIDk1MzY4LCA5NTM3MywgOTUzNzgsIDk1MzgzLCA5NTM4OCwgCisgICAgOTUzOTMsIDk1Mzk4LCA5NTQwMywgOTU0MDgsIDk1NDEzLCA5NTQxOCwgOTU0MjMsIDk1NDI4LCA5NTQzMywgOTU0MzgsIAorICAgIDk1NDQzLCA5NTQ0OCwgOTU0NTMsIDk1NDU4LCA5NTQ2MywgOTU0NjgsIDk1NDczLCA5NTQ3OCwgOTU0ODMsIDk1NDg4LCAKKyAgICA5NTQ5MywgOTU0OTgsIDk1NTAzLCA5NTUwOCwgOTU1MTMsIDk1NTE4LCA5NTUyMywgOTU1MjgsIDk1NTMzLCA5NTUzOCwgCisgICAgOTU1NDMsIDk1NTQ4LCA5NTU1MywgOTU1NTgsIDk1NTYzLCA5NTU2OCwgOTU1NzMsIDk1NTc4LCA5NTU4MywgOTU1ODgsIAorICAgIDk1NTkzLCA5NTU5OCwgOTU2MDMsIDk1NjA4LCA5NTYxMywgOTU2MTgsIDk1NjIzLCA5NTYyOCwgOTU2MzMsIDk1NjM4LCAKKyAgICA5NTY0MywgOTU2NDgsIDk1NjUzLCA5NTY1OCwgOTU2NjMsIDk1NjY4LCA5NTY3MywgOTU2NzgsIDk1NjgzLCA5NTY4OCwgCisgICAgOTU2OTMsIDk1Njk4LCA5NTcwMywgOTU3MDgsIDk1NzEzLCA5NTcxOCwgOTU3MjMsIDk1NzI4LCA5NTczMywgOTU3MzgsIAorICAgIDk1NzQzLCA5NTc0OCwgOTU3NTMsIDk1NzU4LCA5NTc2MywgOTU3NjgsIDk1NzczLCA5NTc3OCwgOTU3ODMsIDk1Nzg4LCAKKyAgICA5NTc5MywgOTU3OTgsIDk1ODAzLCA5NTgwOCwgOTU4MTMsIDk1ODE4LCA5NTgyMywgOTU4MjgsIDk1ODMzLCA5NTgzOCwgCisgICAgOTU4NDMsIDk1ODQ4LCA5NTg1MywgOTU4NTgsIDk1ODYzLCA5NTg2OCwgOTU4NzMsIDk1ODc4LCA5NTg4MywgOTU4ODgsIAorICAgIDk1ODkzLCA5NTg5OCwgOTU5MDMsIDk1OTA4LCA5NTkxMywgOTU5MTgsIDk1OTIzLCA5NTkyOCwgOTU5MzMsIDk1OTM4LCAKKyAgICA5NTk0MywgOTU5NDgsIDk1OTUzLCA5NTk1OCwgOTU5NjMsIDk1OTY4LCA5NTk3MywgOTU5NzgsIDk1OTgzLCA5NTk4OCwgCisgICAgOTU5OTMsIDk1OTk4LCA5NjAwMywgOTYwMDgsIDk2MDEzLCA5NjAxOCwgOTYwMjMsIDk2MDI4LCA5NjAzMywgOTYwMzgsIAorICAgIDk2MDQzLCA5NjA0OCwgOTYwNTMsIDk2MDU4LCA5NjA2MywgOTYwNjgsIDk2MDczLCA5NjA3OCwgOTYwODMsIDk2MDg4LCAKKyAgICA5NjA5MywgOTYwOTgsIDk2MTAzLCA5NjEwOCwgOTYxMTMsIDk2MTE4LCA5NjEyMywgOTYxMjgsIDk2MTMzLCA5NjEzOCwgCisgICAgOTYxNDMsIDk2MTQ4LCA5NjE1MywgOTYxNTgsIDk2MTYzLCA5NjE2OCwgOTYxNzMsIDk2MTc4LCA5NjE4MywgOTYxODgsIAorICAgIDk2MTkzLCA5NjE5OCwgOTYyMDMsIDk2MjA4LCA5NjIxMywgOTYyMTgsIDk2MjIzLCA5NjIyOCwgOTYyMzMsIDk2MjM4LCAKKyAgICA5NjI0MywgOTYyNDgsIDk2MjUzLCA5NjI1OCwgOTYyNjMsIDk2MjY4LCA5NjI3MywgOTYyNzgsIDk2MjgzLCA5NjI4OCwgCisgICAgOTYyOTMsIDk2Mjk4LCA5NjMwMywgOTYzMDgsIDk2MzEzLCA5NjMxOCwgOTYzMjMsIDk2MzI4LCA5NjMzMywgOTYzMzgsIAorICAgIDk2MzQzLCA5NjM0OCwgOTYzNTMsIDk2MzU4LCA5NjM2MywgOTYzNjgsIDk2MzczLCA5NjM3OCwgOTYzODMsIDk2Mzg4LCAKKyAgICA5NjM5MywgOTYzOTgsIDk2NDAzLCA5NjQwOCwgOTY0MTMsIDk2NDE4LCA5NjQyMywgOTY0MjgsIDk2NDMzLCA5NjQzOCwgCisgICAgOTY0NDMsIDk2NDQ4LCA5NjQ1MywgOTY0NTgsIDk2NDYzLCA5NjQ2OCwgOTY0NzMsIDk2NDc4LCA5NjQ4MywgOTY0ODgsIAorICAgIDk2NDkzLCA5NjQ5OCwgOTY1MDMsIDk2NTA4LCA5NjUxMywgOTY1MTgsIDk2NTIzLCA5NjUyOCwgOTY1MzMsIDk2NTM4LCAKKyAgICA5NjU0MywgOTY1NDgsIDk2NTUzLCA5NjU1OCwgOTY1NjMsIDk2NTY4LCA5NjU3MywgOTY1NzgsIDk2NTgzLCA5NjU4OCwgCisgICAgOTY1OTMsIDk2NTk4LCA5NjYwMywgOTY2MDgsIDk2NjEzLCA5NjYxOCwgOTY2MjMsIDk2NjI4LCA5NjYzMywgOTY2MzgsIAorICAgIDk2NjQzLCA5NjY0OCwgOTY2NTMsIDk2NjU4LCA5NjY2MywgOTY2NjgsIDk2NjczLCA5NjY3OCwgOTY2ODMsIDk2Njg4LCAKKyAgICA5NjY5MywgOTY2OTgsIDk2NzAzLCA5NjcwOCwgOTY3MTMsIDk2NzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NjcyMywgOTY3MjksIDk2NzM2LCA5Njc0MywgOTY3NDksIDk2NzU2LCA5Njc2MywgOTY3NzAsIDk2Nzc3LCA5Njc4MywgCisgICAgOTY3OTAsIDk2Nzk3LCA5NjgwNCwgOTY4MTEsIDk2ODE4LCA5NjgyNSwgOTY4MzIsIDk2ODM5LCA5Njg0NiwgOTY4NTMsIAorICAgIDk2ODYwLCA5Njg2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTY4NzQsIDk2ODc5LCA5Njg4NCwgOTY4ODksIAorICAgIDk2ODk0LCA5Njg5OSwgOTY5MDQsIDk2OTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4MDgsIDEyNTgxMiwgMTI1ODE2LCAKLSAgICAxMjU4MjEsIDEyNTgyNiwgMTI1ODI4LCAxMjU4MzIsIDEyNTg0MSwgMTI1ODQ5LCAxMjU4NTcsIDEyNTg3MCwgMTI1ODgzLCAKLSAgICAxMjU4OTYsIDEyNTkwMywgMTI1OTEwLCAxMjU5MTQsIDEyNTkyMywgMTI1OTMxLCAxMjU5MzUsIDEyNTk0NCwgMTI1OTUxLCAKLSAgICAxMjU5NTUsIDEyNTk1OSwgMTI1OTYzLCAxMjU5NjcsIDEyNTk3NCwgMTI1OTc4LCAxMjU5ODIsIDEyNTk4NiwgMTI1OTkwLCAKLSAgICAxMjU5OTcsIDEyNjAwNiwgMTI2MDE1LCAxMjYwMjIsIDEyNjAzNCwgMTI2MDQ2LCAxMjYwNTAsIDEyNjA1NCwgMTI2MDU4LCAKLSAgICAxMjYwNjIsIDEyNjA2NiwgMTI2MDcwLCAxMjYwNzgsIDEyNjA4NiwgMTI2MDk0LCAxMjYwOTgsIDEyNjEwMiwgMTI2MTA2LCAKLSAgICAxMjYxMTAsIDEyNjExNCwgMTI2MTE4LCAxMjYxMjQsIDEyNjEzMCwgMTI2MTM0LCAxMjYxNDUsIDEyNjE1MywgMTI2MTU3LCAKLSAgICAxMjYxNjEsIDEyNjE2NSwgMTI2MTY5LCAxMjYxNzUsIDEyNjE4MiwgMTI2MTkzLCAxMjYyMDMsIDEyNjIxMywgMTI2MjI0LCAKLSAgICAxMjYyMzMsIDEyNjI0NCwgMTI2MjUwLCAxMjYyNTYsIDAsIDAsIDAsIDAsIDEyNjI2MiwgMTI2MjcxLCAxMjYyNzgsIAotICAgIDEyNjI4NCwgMTI2Mjg4LCAxMjYyOTIsIDEyNjI5NiwgMTI2MzA1LCAxMjYzMTcsIDEyNjMyMSwgMTI2MzI4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjYzMzUsIAotICAgIDEyNjMzNywgMTI2MzM5LCAxMjYzNDMsIDEyNjM0NywgMTI2MzUxLCAxMjYzNjAsIDEyNjM2MiwgMTI2MzY0LCAxMjYzNjcsIAotICAgIDEyNjM2OSwgMTI2MzcxLCAxMjYzNzUsIDEyNjM3NywgMTI2MzgxLCAxMjYzODMsIDEyNjM4NywgMTI2Mzg5LCAxMjYzOTEsIAotICAgIDEyNjM5NSwgMTI2Mzk5LCAxMjY0MDUsIDEyNjQwNywgMTI2NDExLCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAxMjY0MjUsIAotICAgIDEyNjQyOSwgMTI2NDMxLCAxMjY0MzMsIDEyNjQzNywgMTI2NDQxLCAxMjY0NDUsIDEyNjQ0OSwgMTI2NDUxLCAxMjY0NTMsIAotICAgIDEyNjQ1NSwgMTI2NDYwLCAxMjY0NjUsIDEyNjQ2OCwgMTI2NDc2LCAxMjY0ODQsIDEyNjQ4NiwgMTI2NDkxLCAxMjY0OTQsIAotICAgIDEyNjQ5OSwgMTI2NTEwLCAxMjY1MTcsIDEyNjUyMiwgMTI2NTI3LCAxMjY1MjksIDEyNjUzMywgMTI2NTM1LCAxMjY1MzksIAotICAgIDEyNjU0MSwgMTI2NTQ1LCAxMjY1NDksIDEyNjU1MiwgMTI2NTU1LCAxMjY1NTcsIDEyNjU2MCwgMTI2NTYyLCAxMjY1NjYsIAotICAgIDEyNjU2OCwgMTI2NTcwLCAxMjY1NzIsIDEyNjU3NiwgMTI2NTc4LCAxMjY1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2OTE0LCA5NjkxOCwgOTY5MjIsIAorICAgIDk2OTI2LCA5NjkzMCwgOTY5MzQsIDAsIDAsIDk2OTM5LCAwLCA5Njk0NCwgOTY5NDgsIDk2OTUzLCA5Njk1OCwgOTY5NjMsIAorICAgIDk2OTY4LCA5Njk3MywgOTY5NzgsIDk2OTgzLCA5Njk4OCwgOTY5OTMsIDk2OTk3LCA5NzAwMiwgOTcwMDcsIDk3MDEyLCAKKyAgICA5NzAxNywgOTcwMjEsIDk3MDI2LCA5NzAzMSwgOTcwMzYsIDk3MDQxLCA5NzA0NSwgOTcwNTAsIDk3MDU1LCA5NzA2MCwgCisgICAgOTcwNjUsIDk3MDcwLCA5NzA3NSwgOTcwODAsIDk3MDg1LCA5NzA5MCwgOTcwOTUsIDk3MTAwLCA5NzEwNSwgOTcxMTAsIAorICAgIDk3MTE1LCA5NzEyMCwgOTcxMjUsIDk3MTMwLCA5NzEzNCwgOTcxMzksIDk3MTQ0LCA5NzE0OSwgOTcxNTQsIDAsIDk3MTU5LCAKKyAgICA5NzE2NCwgMCwgMCwgMCwgOTcxNjksIDAsIDAsIDk3MTc0LCA5NzE3OSwgOTcxODYsIDk3MTkzLCA5NzIwMCwgOTcyMDcsIAorICAgIDk3MjE0LCA5NzIyMSwgOTcyMjgsIDk3MjM1LCA5NzI0MiwgOTcyNDksIDk3MjU2LCA5NzI2MywgOTcyNzAsIDk3Mjc3LCAKKyAgICA5NzI4NCwgOTcyOTEsIDk3Mjk4LCA5NzMwNSwgOTczMTIsIDk3MzE5LCA5NzMyNiwgMCwgOTczMzMsIDk3MzQwLCA5NzM0NiwgCisgICAgOTczNTIsIDk3MzU4LCA5NzM2NSwgOTczNzIsIDk3MzgwLCA5NzM4OCwgOTczOTcsIDk3NDAyLCA5NzQwNywgOTc0MTIsIAorICAgIDk3NDE3LCA5NzQyMiwgOTc0MjcsIDk3NDMyLCA5NzQzNywgOTc0NDIsIDk3NDQ3LCA5NzQ1MiwgOTc0NTcsIDk3NDYyLCAKKyAgICA5NzQ2OCwgOTc0NzMsIDk3NDc4LCA5NzQ4MywgOTc0ODgsIDk3NDkzLCA5NzQ5OCwgOTc1MDMsIDk3NTA4LCA5NzUxMywgCisgICAgOTc1MTksIDk3NTI1LCA5NzUyOSwgOTc1MzMsIDk3NTM3LCA5NzU0MSwgOTc1NDUsIDk3NTUwLCA5NzU1NSwgOTc1NjEsIAorICAgIDk3NTY2LCA5NzU3MiwgOTc1NzcsIDk3NTgyLCA5NzU4NywgOTc1OTMsIDk3NTk4LCA5NzYwMywgOTc2MDgsIDk3NjEzLCAKKyAgICA5NzYxOCwgOTc2MjQsIDk3NjI5LCA5NzYzNSwgOTc2NDAsIDk3NjQ2LCA5NzY1MSwgOTc2NTcsIDk3NjYyLCA5NzY2OCwgCisgICAgOTc2NzMsIDk3Njc4LCA5NzY4MywgOTc2ODgsIDk3NjkzLCA5NzY5OCwgOTc3MDMsIDk3NzA5LCA5NzcxNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOTc3MTksIDk3NzIzLCA5NzcyNywgOTc3MzEsIDk3NzM1LCA5Nzc0MSwgOTc3NDUsIDk3NzUwLCAKKyAgICA5Nzc1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTI2NTg1LCAxMjY1OTAsIDEyNjU5NSwgMTI2NjAwLCAxMjY2MDUsIDEyNjYxMCwgMTI2NjE1LCAxMjY2MjIsIAotICAgIDEyNjYyOSwgMTI2NjM2LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAxMjY2NTgsIDEyNjY2MywgMTI2NjcwLCAxMjY2NzYsIAotICAgIDEyNjY4MywgMTI2NjkwLCAxMjY2OTcsIDEyNjcwMiwgMTI2NzA3LCAxMjY3MTIsIDEyNjcxNywgMTI2NzIyLCAxMjY3MjksIAotICAgIDEyNjczNiwgMTI2NzQxLCAxMjY3NDYsIDEyNjc1MywgMTI2NzYwLCAxMjY3NjgsIDEyNjc3NiwgMTI2NzgzLCAxMjY3OTAsIAotICAgIDEyNjc5OCwgMTI2ODA2LCAxMjY4MTQsIDEyNjgyMSwgMTI2ODMxLCAxMjY4NDIsIDEyNjg0NywgMTI2ODU0LCAxMjY4NjEsIAotICAgIDEyNjg2OCwgMTI2ODc2LCAxMjY4ODQsIDEyNjg5NSwgMTI2OTAzLCAxMjY5MTEsIDEyNjkxOSwgMTI2OTI0LCAxMjY5MjksIAotICAgIDEyNjkzNCwgMTI2OTM5LCAxMjY5NDQsIDEyNjk0OSwgMTI2OTU0LCAxMjY5NTksIDEyNjk2NCwgMTI2OTY5LCAxMjY5NzQsIAotICAgIDEyNjk3OSwgMTI2OTg2LCAxMjY5OTEsIDEyNjk5NiwgMTI3MDAzLCAxMjcwMDgsIDEyNzAxMywgMTI3MDE4LCAxMjcwMjMsIAotICAgIDEyNzAyOCwgMTI3MDMzLCAxMjcwMzgsIDEyNzA0MywgMTI3MDQ4LCAxMjcwNTMsIDEyNzA1OCwgMTI3MDYzLCAxMjcwNzAsIAotICAgIDEyNzA3OCwgMTI3MDgzLCAxMjcwODgsIDEyNzA5NSwgMTI3MTAwLCAxMjcxMDUsIDEyNzExMCwgMTI3MTE3LCAxMjcxMjIsIAotICAgIDEyNzEyOSwgMTI3MTM0LCAxMjcxNDEsIDEyNzE0NiwgMTI3MTU1LCAxMjcxNjQsIDEyNzE2OSwgMTI3MTc0LCAxMjcxNzksIAotICAgIDEyNzE4NCwgMTI3MTg5LCAxMjcxOTQsIDEyNzE5OSwgMTI3MjA0LCAxMjcyMDksIDEyNzIxNCwgMTI3MjE5LCAxMjcyMjQsIAotICAgIDEyNzIyOSwgMTI3MjM3LCAxMjcyNDUsIDEyNzI1MCwgMTI3MjU1LCAxMjcyNjAsIDEyNzI2NSwgMTI3MjcwLCAxMjcyNzYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI4MiwgMTI3Mjg2LCAxMjcyOTAsIDEyNzI5NCwgCi0gICAgMTI3Mjk4LCAxMjczMDIsIDEyNzMwNiwgMTI3MzEwLCAxMjczMTQsIDEyNzMxOCwgMTI3MzIyLCAxMjczMjYsIDEyNzMzMCwgCi0gICAgMTI3MzM0LCAxMjczMzgsIDEyNzM0MiwgMTI3MzQ2LCAxMjczNTAsIDEyNzM1NCwgMTI3MzU4LCAxMjczNjIsIDEyNzM2NiwgCi0gICAgMTI3MzcwLCAxMjczNzQsIDEyNzM3OCwgMTI3MzgyLCAxMjczODYsIDEyNzM5MCwgMTI3Mzk0LCAxMjczOTgsIDEyNzQwMiwgCi0gICAgMTI3NDA2LCAxMjc0MTAsIDEyNzQxNCwgMTI3NDE4LCAxMjc0MjIsIDEyNzQyNiwgMTI3NDMwLCAxMjc0MzQsIDEyNzQzOCwgCi0gICAgMTI3NDQyLCAxMjc0NDYsIDEyNzQ1MCwgMTI3NDU0LCAxMjc0NTgsIDEyNzQ2MiwgMTI3NDY2LCAxMjc0NzAsIDEyNzQ3NCwgCi0gICAgMTI3NDc4LCAxMjc0ODIsIDEyNzQ4NiwgMTI3NDkwLCAxMjc0OTQsIDEyNzQ5OCwgMTI3NTAyLCAxMjc1MDYsIDEyNzUxMCwgCi0gICAgMTI3NTE0LCAxMjc1MTgsIDEyNzUyMiwgMTI3NTI2LCAxMjc1MzAsIDEyNzUzNCwgMTI3NTM4LCAxMjc1NDIsIDEyNzU0NiwgCi0gICAgMTI3NTUwLCAxMjc1NTQsIDEyNzU1OCwgMTI3NTYyLCAxMjc1NjYsIDEyNzU3MCwgMTI3NTc0LCAxMjc1NzgsIDEyNzU4MiwgCi0gICAgMTI3NTg2LCAxMjc1OTAsIDEyNzU5NCwgMTI3NTk4LCAxMjc2MDIsIDEyNzYwNiwgMTI3NjEwLCAxMjc2MTQsIDEyNzYxOCwgCi0gICAgMTI3NjIyLCAxMjc2MjYsIDEyNzYzMCwgMTI3NjM0LCAxMjc2MzgsIDEyNzY0MiwgMTI3NjQ2LCAxMjc2NTAsIDEyNzY1NCwgCi0gICAgMTI3NjU4LCAxMjc2NjIsIDEyNzY2NiwgMTI3NjcwLCAxMjc2NzQsIDEyNzY3OCwgMTI3NjgyLCAxMjc2ODYsIDEyNzY5MCwgCi0gICAgMTI3Njk0LCAxMjc2OTgsIDEyNzcwMiwgMTI3NzA2LCAxMjc3MTAsIDEyNzcxNCwgMTI3NzE4LCAxMjc3MjIsIDEyNzcyNiwgCi0gICAgMTI3NzMwLCAxMjc3MzQsIDEyNzczOCwgMTI3NzQyLCAxMjc3NDYsIDEyNzc1MCwgMTI3NzU0LCAxMjc3NTgsIDEyNzc2MiwgCi0gICAgMTI3NzY2LCAxMjc3NzAsIDEyNzc3NCwgMTI3Nzc4LCAxMjc3ODIsIDEyNzc4NiwgMTI3NzkwLCAxMjc3OTQsIDEyNzc5OCwgCi0gICAgMTI3ODAyLCAxMjc4MDYsIDEyNzgxMCwgMTI3ODE0LCAxMjc4MTgsIDEyNzgyMiwgMTI3ODI2LCAxMjc4MzAsIDEyNzgzNCwgCi0gICAgMTI3ODM4LCAxMjc4NDIsIDEyNzg0NiwgMTI3ODUwLCAxMjc4NTQsIDEyNzg1OCwgMTI3ODYyLCAxMjc4NjYsIDEyNzg3MCwgCi0gICAgMTI3ODc0LCAxMjc4NzgsIDEyNzg4MiwgMTI3ODg2LCAxMjc4OTAsIDEyNzg5NCwgMTI3ODk4LCAxMjc5MDIsIDEyNzkwNiwgCi0gICAgMTI3OTEwLCAxMjc5MTQsIDEyNzkxOCwgMTI3OTIyLCAxMjc5MjYsIDEyNzkzMCwgMTI3OTM0LCAxMjc5MzgsIDEyNzk0MiwgCi0gICAgMTI3OTQ2LCAxMjc5NTAsIDEyNzk1NCwgMTI3OTU4LCAxMjc5NjIsIDEyNzk2NiwgMTI3OTcwLCAxMjc5NzQsIDEyNzk3OCwgCi0gICAgMTI3OTgyLCAxMjc5ODYsIDEyNzk5MCwgMTI3OTk0LCAxMjc5OTgsIDEyODAwMiwgMTI4MDA2LCAxMjgwMTAsIDEyODAxNCwgCi0gICAgMTI4MDE4LCAxMjgwMjIsIDEyODAyNiwgMTI4MDMwLCAxMjgwMzQsIDEyODAzOCwgMTI4MDQyLCAxMjgwNDYsIDEyODA1MCwgCi0gICAgMTI4MDU0LCAxMjgwNTgsIDEyODA2MiwgMTI4MDY2LCAxMjgwNzAsIDEyODA3NCwgMTI4MDc4LCAxMjgwODIsIDEyODA4NiwgCi0gICAgMTI4MDkwLCAxMjgwOTQsIDEyODA5OCwgMTI4MTAyLCAxMjgxMDYsIDEyODExMCwgMTI4MTE0LCAxMjgxMTgsIDEyODEyMiwgCi0gICAgMTI4MTI2LCAxMjgxMzAsIDEyODEzNCwgMTI4MTM4LCAxMjgxNDIsIDEyODE0NiwgMTI4MTUwLCAxMjgxNTQsIDEyODE1OCwgCi0gICAgMTI4MTYyLCAxMjgxNjYsIDEyODE3MCwgMTI4MTc0LCAxMjgxNzgsIDEyODE4MiwgMTI4MTg2LCAxMjgxOTAsIDEyODE5NCwgCi0gICAgMTI4MTk4LCAxMjgyMDIsIDEyODIwNiwgMTI4MjEwLCAxMjgyMTQsIDEyODIxOCwgMTI4MjIyLCAxMjgyMjYsIDEyODIzMCwgCi0gICAgMTI4MjM0LCAxMjgyMzgsIDEyODI0MiwgMTI4MjQ2LCAxMjgyNTAsIDEyODI1NCwgMTI4MjU4LCAxMjgyNjIsIDEyODI2NiwgCi0gICAgMTI4MjcwLCAxMjgyNzQsIDEyODI3OCwgMTI4MjgyLCAxMjgyODYsIDEyODI5MCwgMTI4Mjk0LCAxMjgyOTgsIDEyODMwMiwgCi0gICAgMTI4MzA2LCAxMjgzMTAsIDEyODMxNCwgMTI4MzE4LCAxMjgzMjIsIDEyODMyNiwgMTI4MzMwLCAxMjgzMzQsIDEyODMzOCwgCi0gICAgMTI4MzQyLCAxMjgzNDYsIDEyODM1MCwgMTI4MzU0LCAxMjgzNTgsIDEyODM2MiwgMTI4MzY2LCAxMjgzNzAsIDEyODM3NCwgCi0gICAgMTI4Mzc4LCAxMjgzODIsIDEyODM4NiwgMTI4MzkwLCAxMjgzOTQsIDEyODM5OCwgMTI4NDAyLCAxMjg0MDYsIDEyODQxMCwgCi0gICAgMTI4NDE0LCAxMjg0MTgsIDEyODQyMiwgMTI4NDI2LCAxMjg0MzAsIDEyODQzNCwgMTI4NDM4LCAxMjg0NDIsIDEyODQ0NiwgCi0gICAgMTI4NDUwLCAxMjg0NTQsIDEyODQ1OCwgMTI4NDYyLCAxMjg0NjYsIDEyODQ3MCwgMTI4NDc0LCAxMjg0NzgsIDEyODQ4MiwgCi0gICAgMTI4NDg2LCAxMjg0OTAsIDEyODQ5NCwgMTI4NDk4LCAxMjg1MDIsIDEyODUwNiwgMTI4NTEwLCAxMjg1MTQsIDEyODUxOCwgCi0gICAgMTI4NTIyLCAxMjg1MjYsIDEyODUzMCwgMTI4NTM0LCAxMjg1MzgsIDEyODU0MiwgMTI4NTQ2LCAxMjg1NTAsIDEyODU1NCwgCi0gICAgMTI4NTU4LCAxMjg1NjIsIDEyODU2NiwgMTI4NTcwLCAxMjg1NzQsIDEyODU3OCwgMTI4NTgyLCAxMjg1ODYsIDEyODU5MCwgCi0gICAgMTI4NTk0LCAxMjg1OTgsIDEyODYwMiwgMTI4NjA2LCAxMjg2MTAsIDEyODYxNCwgMTI4NjE4LCAxMjg2MjIsIDEyODYyNiwgCi0gICAgMTI4NjMwLCAxMjg2MzQsIDEyODYzOCwgMTI4NjQyLCAxMjg2NDYsIDEyODY1MCwgMTI4NjU0LCAxMjg2NTgsIDEyODY2MiwgCi0gICAgMTI4NjY2LCAxMjg2NzAsIDEyODY3NCwgMTI4Njc4LCAxMjg2ODIsIDEyODY4NiwgMTI4NjkwLCAxMjg2OTQsIDEyODY5OCwgCi0gICAgMTI4NzAyLCAxMjg3MDYsIDEyODcxMCwgMTI4NzE0LCAxMjg3MTgsIDEyODcyMiwgMTI4NzI2LCAxMjg3MzAsIDEyODczNCwgCi0gICAgMTI4NzM4LCAxMjg3NDIsIDEyODc0NiwgMTI4NzUwLCAxMjg3NTQsIDEyODc1OCwgMTI4NzYyLCAxMjg3NjYsIDEyODc3MCwgCi0gICAgMTI4Nzc0LCAxMjg3NzgsIDEyODc4MiwgMTI4Nzg2LCAxMjg3OTAsIDEyODc5NCwgMTI4Nzk4LCAxMjg4MDIsIDEyODgwNiwgCi0gICAgMTI4ODEwLCAxMjg4MTQsIDEyODgxOCwgMTI4ODIyLCAxMjg4MjYsIDEyODgzMCwgMTI4ODM0LCAxMjg4MzgsIDEyODg0MiwgCi0gICAgMTI4ODQ2LCAxMjg4NTAsIDEyODg1NCwgMTI4ODU4LCAxMjg4NjIsIDEyODg2NiwgMTI4ODcwLCAxMjg4NzQsIDEyODg3OCwgCi0gICAgMTI4ODgyLCAxMjg4ODYsIDEyODg5MCwgMTI4ODk0LCAxMjg4OTgsIDEyODkwMiwgMTI4OTA2LCAxMjg5MTAsIDEyODkxNCwgCi0gICAgMTI4OTE4LCAxMjg5MjIsIDEyODkyNiwgMTI4OTMwLCAxMjg5MzQsIDEyODkzOCwgMTI4OTQyLCAxMjg5NDYsIDEyODk1MCwgCi0gICAgMTI4OTU0LCAxMjg5NTgsIDEyODk2MiwgMTI4OTY2LCAxMjg5NzAsIDEyODk3NCwgMTI4OTc4LCAxMjg5ODIsIDEyODk4NiwgCi0gICAgMTI4OTkwLCAxMjg5OTQsIDEyODk5OCwgMTI5MDAyLCAxMjkwMDYsIDEyOTAxMCwgMTI5MDE0LCAxMjkwMTgsIDEyOTAyMiwgCi0gICAgMTI5MDI2LCAxMjkwMzAsIDEyOTAzNCwgMTI5MDM4LCAxMjkwNDIsIDEyOTA0NiwgMTI5MDUwLCAxMjkwNTQsIDEyOTA1OCwgCi0gICAgMTI5MDYyLCAxMjkwNjYsIDEyOTA3MCwgMTI5MDc0LCAxMjkwNzgsIDEyOTA4MiwgMTI5MDg2LCAxMjkwOTAsIDEyOTA5NCwgCi0gICAgMTI5MDk4LCAxMjkxMDIsIDEyOTEwNiwgMTI5MTEwLCAxMjkxMTQsIDEyOTExOCwgMTI5MTIyLCAxMjkxMjYsIDEyOTEzMCwgCi0gICAgMTI5MTM0LCAxMjkxMzgsIDEyOTE0MiwgMTI5MTQ2LCAxMjkxNTAsIDEyOTE1NCwgMTI5MTU4LCAxMjkxNjIsIDEyOTE2NiwgCi0gICAgMTI5MTcwLCAxMjkxNzQsIDEyOTE3OCwgMTI5MTgyLCAxMjkxODYsIDEyOTE5MCwgMTI5MTk0LCAxMjkxOTgsIDEyOTIwMiwgCi0gICAgMTI5MjA2LCAxMjkyMTAsIDEyOTIxNCwgMTI5MjE4LCAxMjkyMjIsIDEyOTIyNiwgMTI5MjMwLCAxMjkyMzQsIDEyOTIzOCwgCi0gICAgMTI5MjQyLCAxMjkyNDYsIDEyOTI1MCwgMTI5MjU0LCAxMjkyNTgsIDEyOTI2MiwgMTI5MjY2LCAxMjkyNzAsIDEyOTI3NCwgCi0gICAgMTI5Mjc4LCAxMjkyODIsIDEyOTI4NiwgMTI5MjkwLCAxMjkyOTQsIDEyOTI5OCwgMTI5MzAyLCAxMjkzMDYsIDEyOTMxMCwgCi0gICAgMTI5MzE0LCAxMjkzMTgsIDEyOTMyMiwgMTI5MzI2LCAxMjkzMzAsIDEyOTMzNCwgMTI5MzM4LCAxMjkzNDIsIDEyOTM0NiwgCi0gICAgMTI5MzUwLCAxMjkzNTQsIDEyOTM1OCwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MCwgMTI5Mzc0LCAxMjkzNzgsIDEyOTM4MiwgCi0gICAgMTI5Mzg2LCAxMjkzOTAsIDEyOTM5NCwgMTI5Mzk4LCAxMjk0MDIsIDEyOTQwNiwgMTI5NDEwLCAxMjk0MTQsIDEyOTQxOCwgCi0gICAgMTI5NDIyLCAxMjk0MjYsIDEyOTQzMCwgMTI5NDM0LCAxMjk0MzgsIDEyOTQ0MiwgMTI5NDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Nzc2MSwgOTc3NjYsIDk3NzcxLCA5Nzc3NiwgOTc3ODEsIDk3Nzg2LCAKKyAgICA5Nzc5MSwgOTc3OTYsIDk3ODAxLCA5NzgwNiwgOTc4MTEsIDk3ODE2LCA5NzgyMSwgOTc4MjYsIDk3ODMxLCA5NzgzNiwgCisgICAgOTc4NDEsIDk3ODQ2LCA5Nzg1MSwgOTc4NTYsIDk3ODYxLCA5Nzg2NiwgOTc4NzEsIDk3ODc1LCA5Nzg4MCwgOTc4ODUsIAorICAgIDk3ODkxLCA5Nzg5NSwgMCwgMCwgMCwgOTc4OTksIDk3OTA1LCA5NzkwOSwgOTc5MTQsIDk3OTE5LCA5NzkyNCwgOTc5MjgsIAorICAgIDk3OTMzLCA5NzkzNywgOTc5NDIsIDk3OTQ3LCA5Nzk1MSwgOTc5NTYsIDk3OTYxLCA5Nzk2NSwgOTc5NjksIDk3OTc0LCAKKyAgICA5Nzk3OSwgOTc5ODMsIDk3OTg4LCA5Nzk5MywgOTc5OTcsIDk4MDAyLCA5ODAwNywgOTgwMTIsIDk4MDE3LCA5ODAyMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTgwMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4MDMyLCAKKyAgICA5ODAzOCwgOTgwNDQsIDk4MDUwLCA5ODA1NiwgOTgwNjIsIDk4MDY5LCA5ODA3NiwgOTgwODMsIDk4MDg5LCA5ODA5NSwgCisgICAgOTgxMDEsIDk4MTA4LCA5ODExNSwgOTgxMjIsIDk4MTI5LCA5ODEzNiwgOTgxNDMsIDk4MTUwLCA5ODE1NywgOTgxNjQsIAorICAgIDk4MTcxLCA5ODE3OCwgOTgxODQsIDk4MTkxLCA5ODE5OCwgOTgyMDUsIDk4MjEyLCA5ODIxOSwgOTgyMjUsIDk4MjMyLCAKKyAgICA5ODIzOSwgOTgyNDYsIDk4MjUyLCA5ODI1OCwgOTgyNjQsIDk4MjcwLCA5ODI3NiwgOTgyODMsIDk4MjkwLCA5ODI5NiwgCisgICAgOTgzMDIsIDk4MzA4LCA5ODMxNSwgOTgzMjIsIDk4MzI5LCA5ODMzNiwgOTgzNDMsIDk4MzUwLCA5ODM1OSwgOTgzNjYsIAorICAgIDk4MzcyLCA5ODM3OSwgOTgzODYsIDk4MzkzLCA5ODM5OSwgMCwgMCwgMCwgMCwgMCwgMCwgOTg0MDYsIDk4NDE0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5ODQyMiwgOTg0MjYsIDk4NDMxLCA5ODQzNiwgMCwgCisgICAgOTg0NDIsIDk4NDQ3LCAwLCAwLCAwLCAwLCAwLCA5ODQ1MiwgOTg0NTgsIDk4NDY1LCA5ODQ3MCwgOTg0NzUsIDk4NDc5LCAKKyAgICA5ODQ4NCwgOTg0ODksIDAsIDk4NDk0LCA5ODQ5OSwgOTg1MDQsIDAsIDk4NTA5LCA5ODUxNCwgOTg1MTksIDk4NTI0LCAKKyAgICA5ODUyOSwgOTg1MzQsIDk4NTM5LCA5ODU0NCwgOTg1NDksIDk4NTU0LCA5ODU1OSwgOTg1NjMsIDk4NTY3LCA5ODU3MiwgCisgICAgOTg1NzcsIDk4NTgyLCA5ODU4NiwgOTg1OTAsIDk4NTk1LCA5ODYwMCwgOTg2MDUsIDk4NjEwLCA5ODYxNSwgOTg2MjAsIAorICAgIDk4NjI1LCA5ODYyOSwgOTg2MzQsIDAsIDAsIDAsIDAsIDk4NjM5LCA5ODY0NSwgOTg2NTAsIDAsIDAsIDAsIDAsIDk4NjU1LCAKKyAgICA5ODY1OSwgOTg2NjMsIDk4NjY3LCA5ODY3MSwgOTg2NzUsIDk4NjgwLCA5ODY4NSwgOTg2OTEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk4Njk3LCA5ODcwMywgOTg3MTAsIDk4NzE2LCA5ODcyMywgOTg3MjksIDk4NzM1LCA5ODc0MSwgOTg3NDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk4NzU0LCA5ODc2MSwgOTg3NjgsIDk4Nzc1LCA5ODc4MiwgOTg3ODksIDk4Nzk2LCA5ODgwMywgCisgICAgOTg4MTAsIDk4ODE3LCA5ODgyNCwgOTg4MzEsIDk4ODM4LCA5ODg0NSwgOTg4NTIsIDk4ODU5LCA5ODg2NiwgOTg4NzMsIAorICAgIDk4ODgwLCA5ODg4NywgOTg4OTQsIDk4OTAxLCA5ODkwOCwgOTg5MTUsIDk4OTIyLCA5ODkyOSwgOTg5MzYsIDk4OTQzLCAKKyAgICA5ODk1MCwgOTg5NTcsIDk4OTYzLCA5ODk3MCwgOTg5NzcsIDk4OTg0LCA5ODk5MSwgOTg5OTgsIDk5MDA1LCA5OTAxMiwgCisgICAgOTkwMTksIDk5MDI2LCA5OTAzMywgOTkwNDAsIDk5MDQ3LCA5OTA1NCwgOTkwNjEsIDk5MDY4LCA5OTA3NSwgOTkwODIsIAorICAgIDk5MDg5LCA5OTA5NiwgOTkxMDMsIDk5MTEwLCA5OTExNywgOTkxMjQsIDk5MTMxLCA5OTEzOCwgOTkxNDUsIDk5MTUyLCAKKyAgICA5OTE1OSwgOTkxNjYsIDk5MTczLCA5OTE4MCwgOTkxODYsIDk5MTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTIwMCwgCisgICAgOTkyMDUsIDk5MjEwLCA5OTIxNSwgOTkyMjAsIDk5MjI1LCA5OTIzMCwgOTkyMzUsIDk5MjQwLCA5OTI0NSwgOTkyNTAsIAorICAgIDk5MjU1LCA5OTI2MCwgOTkyNjUsIDk5MjcwLCA5OTI3NSwgOTkyODAsIDk5Mjg1LCA5OTI5MCwgOTkyOTUsIDk5MzAwLCAKKyAgICA5OTMwNSwgOTkzMTAsIDk5MzE1LCA5OTMyMCwgOTkzMjUsIDk5MzMwLCA5OTMzNSwgOTkzNDAsIDk5MzQ1LCA5OTM1MCwgCisgICAgOTkzNTUsIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgOTkzODUsIDk5MzkxLCAwLCAwLCAwLCAwLCAKKyAgICA5OTM5NywgOTk0MDEsIDk5NDA1LCA5OTQxMCwgOTk0MTUsIDk5NDIxLCA5OTQyNywgOTk0MzMsIDk5NDQzLCA5OTQ1MiwgCisgICAgOTk0NTgsIDk5NDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTQ3MywgOTk0NzcsIDk5NDgyLCA5OTQ4NywgCisgICAgOTk0OTIsIDk5NDk3LCA5OTUwMiwgOTk1MDcsIDk5NTEyLCA5OTUxNiwgOTk1MjEsIDk5NTI1LCA5OTUzMCwgOTk1MzQsIAorICAgIDk5NTM5LCA5OTU0MywgOTk1NDgsIDk5NTUzLCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MywgOTk1NzgsIDk5NTgzLCAKKyAgICA5OTU4OCwgOTk1OTMsIDk5NTk4LCA5OTYwMywgOTk2MDgsIDk5NjEzLCA5OTYxOCwgOTk2MjMsIDk5NjI4LCA5OTYzMywgCisgICAgOTk2MzgsIDk5NjQzLCA5OTY0OCwgOTk2NTMsIDk5NjU4LCA5OTY2MywgOTk2NjgsIDk5NjczLCA5OTY3OCwgOTk2ODMsIAorICAgIDk5Njg4LCA5OTY5MywgOTk2OTgsIDk5NzAzLCA5OTcwOCwgOTk3MTMsIDk5NzE4LCA5OTcyMywgOTk3MjgsIDk5NzMzLCAwLCAKKyAgICAwLCAwLCA5OTczOCwgOTk3NDMsIDk5NzUyLCA5OTc2MCwgOTk3NjksIDk5Nzc4LCA5OTc4OSwgOTk4MDAsIDk5ODA3LCAKKyAgICA5OTgxNCwgOTk4MjEsIDk5ODI4LCA5OTgzNSwgOTk4NDIsIDk5ODQ5LCA5OTg1NiwgOTk4NjMsIDk5ODcwLCA5OTg3NywgCisgICAgOTk4ODQsIDk5ODkxLCA5OTg5OCwgOTk5MDUsIDk5OTEyLCA5OTkxOSwgOTk5MjYsIDk5OTMzLCA5OTk0MCwgOTk5NDcsIDAsIAorICAgIDAsIDk5OTU0LCA5OTk2MCwgOTk5NjYsIDk5OTcyLCA5OTk3OCwgOTk5ODUsIDk5OTkyLCAxMDAwMDAsIDEwMDAwOCwgCisgICAgMTAwMDE1LCAxMDAwMjIsIDEwMDAyOSwgMTAwMDM2LCAxMDAwNDMsIDEwMDA1MCwgMTAwMDU3LCAxMDAwNjQsIDEwMDA3MSwgCisgICAgMTAwMDc4LCAxMDAwODUsIDEwMDA5MiwgMTAwMDk5LCAxMDAxMDYsIDEwMDExMywgMTAwMTIwLCAxMDAxMjcsIDEwMDEzNCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAwMTQxLCAxMDAxNDcsIDEwMDE1MywgMTAwMTU5LCAxMDAxNjUsIDEwMDE3MiwgMTAwMTc5LCAKKyAgICAxMDAxODcsIDEwMDE5NSwgMTAwMjAyLCAxMDAyMDksIDEwMDIxNiwgMTAwMjIzLCAxMDAyMzAsIDEwMDIzNywgMTAwMjQ0LCAKKyAgICAxMDAyNTEsIDEwMDI1OCwgMTAwMjY1LCAxMDAyNzIsIDEwMDI3OSwgMTAwMjg2LCAxMDAyOTMsIDEwMDMwMCwgMTAwMzA3LCAKKyAgICAxMDAzMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDMyMSwgMTAwMzI4LCAxMDAzMzYsIDEwMDM0NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzU2LCAxMDAzNjIsIDEwMDM2OCwgMTAwMzc0LCAxMDAzODAsIDEwMDM4NywgCisgICAgMTAwMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA0MDIsIDEwMDQwOSwgMTAwNDE2LCAxMDA0MjQsIDEwMDQzMSwgCisgICAgMTAwNDM4LCAxMDA0NDUsIDEwMDQ1MiwgMTAwNDYwLCAxMDA0NjgsIDEwMDQ3NiwgMTAwNDg0LCAxMDA0OTIsIDEwMDUwMCwgCisgICAgMTAwNTA4LCAxMDA1MTYsIDEwMDUyNCwgMTAwNTMyLCAxMDA1NDAsIDEwMDU0OCwgMTAwNTU2LCAxMDA1NjQsIDEwMDU3MiwgCisgICAgMTAwNTgwLCAxMDA1ODgsIDEwMDU5NiwgMTAwNjA0LCAxMDA2MTIsIDEwMDYyMCwgMTAwNjI4LCAxMDA2MzYsIDEwMDY0NCwgCisgICAgMTAwNjUyLCAxMDA2NjAsIDEwMDY2OCwgMTAwNjc2LCAxMDA2ODQsIDEwMDY5MiwgMTAwNzAwLCAxMDA3MDgsIDEwMDcxNiwgCisgICAgMTAwNzI0LCAxMDA3MzIsIDEwMDc0MCwgMTAwNzQ4LCAxMDA3NTYsIDEwMDc2NCwgMTAwNzcyLCAxMDA3ODAsIDEwMDc4OCwgCisgICAgMTAwNzk2LCAxMDA4MDQsIDEwMDgxMiwgMTAwODIwLCAxMDA4MjgsIDEwMDgzNiwgMTAwODQ0LCAxMDA4NTIsIDEwMDg2MCwgCisgICAgMTAwODY4LCAxMDA4NzYsIDEwMDg4NCwgMTAwODkyLCAxMDA5MDAsIDEwMDkwOCwgMTAwOTE2LCAxMDA5MjQsIDEwMDkzMiwgCisgICAgMTAwOTQwLCAxMDA5NDgsIDEwMDk1NiwgMTAwOTY0LCAxMDA5NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQ1MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI5NDU0LCAxMjk0NTcsIDEyOTQ2MSwgMTI5NDY1LCAxMjk0NjgsIDEyOTQ3MiwgMTI5NDc2LCAKLSAgICAxMjk0NzksIDEyOTQ4MiwgMTI5NDg2LCAxMjk0OTAsIDEyOTQ5MywgMTI5NDk2LCAxMjk0OTksIDEyOTUwMiwgMTI5NTA3LCAKLSAgICAxMjk1MTAsIDEyOTUxNCwgMTI5NTE3LCAxMjk1MjAsIDEyOTUyMywgMTI5NTI2LCAxMjk1MjksIDEyOTUzMiwgMTI5NTM1LCAKLSAgICAxMjk1MzgsIDEyOTU0MSwgMTI5NTQ0LCAxMjk1NDcsIDEyOTU1MSwgMTI5NTU1LCAxMjk1NTksIDEyOTU2MywgMTI5NTY4LCAKLSAgICAxMjk1NzMsIDEyOTU3OSwgMTI5NTg1LCAxMjk1OTEsIDEyOTU5NiwgMTI5NjAyLCAxMjk2MDgsIDEyOTYxNCwgMTI5NjE5LCAKLSAgICAxMjk2MjUsIDEyOTYzMSwgMTI5NjM2LCAxMjk2NDEsIDEyOTY0NywgMTI5NjUyLCAxMjk2NTgsIDEyOTY2NCwgMTI5NjY5LCAKLSAgICAxMjk2NzUsIDEyOTY4MSwgMTI5Njg2LCAxMjk2OTIsIDEyOTY5OCwgMTI5NzA0LCAxMjk3MTAsIDEyOTcxNiwgMTI5NzIwLCAKLSAgICAxMjk3MjUsIDEyOTcyOSwgMTI5NzM0LCAxMjk3MzgsIDEyOTc0MywgMTI5NzQ4LCAxMjk3NTQsIDEyOTc2MCwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NywgMTI5NzgzLCAxMjk3ODksIDEyOTc5NCwgMTI5ODAwLCAxMjk4MDYsIDEyOTgxMSwgMTI5ODE2LCAKLSAgICAxMjk4MjIsIDEyOTgyNywgMTI5ODMzLCAxMjk4MzksIDEyOTg0NCwgMTI5ODUwLCAxMjk4NTYsIDEyOTg2MSwgMTI5ODY3LCAKLSAgICAxMjk4NzMsIDEyOTg3OSwgMTI5ODg1LCAxMjk4OTEsIDEyOTg5NiwgMTI5OTAwLCAxMjk5MDUsIDEyOTkwNywgMTI5OTExLCAKLSAgICAxMjk5MTQsIDEyOTkxNywgMTI5OTIwLCAxMjk5MjMsIDEyOTkyNiwgMTI5OTI5LCAxMjk5MzIsIDEyOTkzNSwgMTI5OTM4LCAKLSAgICAxMjk5NDEsIDEyOTk0NCwgMTI5OTQ3LCAxMjk5NTAsIDEyOTk1MywgMTI5OTU2LCAxMjk5NTksIDEyOTk2MiwgMTI5OTY1LCAKLSAgICAxMjk5NjgsIDEyOTk3MSwgMTI5OTc0LCAxMjk5NzcsIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODYsIDEyOTk4OSwgMTI5OTkyLCAKLSAgICAxMjk5OTUsIDEyOTk5OCwgMTMwMDAxLCAxMzAwMDQsIDEzMDAwNywgMTMwMDEwLCAxMzAwMTMsIDEzMDAxNiwgMTMwMDE5LCAKLSAgICAxMzAwMjIsIDEzMDAyNSwgMTMwMDI4LCAxMzAwMzEsIDEzMDAzNCwgMTMwMDM3LCAxMzAwNDAsIDEzMDA0MywgMTMwMDQ2LCAKLSAgICAxMzAwNDksIDEzMDA1MiwgMTMwMDU1LCAxMzAwNTgsIDEzMDA2MSwgMTMwMDY0LCAxMzAwNjcsIDEzMDA3MCwgMTMwMDczLCAKLSAgICAxMzAwNzYsIDEzMDA3OSwgMTMwMDgyLCAxMzAwODUsIDEzMDA4OCwgMTMwMDkxLCAxMzAwOTQsIDEzMDA5NywgMTMwMTAwLCAKLSAgICAxMzAxMDMsIDEzMDEwNiwgMTMwMTA5LCAxMzAxMTIsIDEzMDExNSwgMTMwMTE4LCAxMzAxMjEsIDEzMDEyNCwgMTMwMTI3LCAKLSAgICAxMzAxMzAsIDEzMDEzMywgMTMwMTM2LCAxMzAxMzksIDEzMDE0MiwgMTMwMTQ1LCAxMzAxNDgsIDEzMDE1MSwgMTMwMTU0LCAKLSAgICAxMzAxNTcsIDEzMDE2MCwgMTMwMTYzLCAxMzAxNjYsIDEzMDE2OSwgMTMwMTcyLCAxMzAxNzUsIDEzMDE3OCwgMTMwMTgxLCAKLSAgICAxMzAxODQsIDEzMDE4NywgMTMwMTkwLCAxMzAxOTMsIDEzMDE5NiwgMTMwMTk5LCAxMzAyMDIsIDEzMDIwNSwgMTMwMjA4LCAKLSAgICAxMzAyMTEsIDEzMDIxNCwgMTMwMjE3LCAxMzAyMjAsIDEzMDIyMywgMTMwMjI2LCAxMzAyMjksIDEzMDIzMiwgMTMwMjM1LCAKLSAgICAxMzAyMzgsIDEzMDI0MSwgMTMwMjQ0LCAxMzAyNDcsIDEzMDI1MCwgMTMwMjUzLCAxMzAyNTYsIDEzMDI1OSwgMTMwMjYyLCAKLSAgICAxMzAyNjUsIDEzMDI2OCwgMTMwMjcxLCAxMzAyNzQsIDEzMDI3NywgMTMwMjgwLCAxMzAyODMsIDEzMDI4NiwgMTMwMjg5LCAKLSAgICAxMzAyOTIsIDEzMDI5NSwgMTMwMjk4LCAxMzAzMDEsIDEzMDMwNCwgMTMwMzA3LCAxMzAzMTAsIDEzMDMxMywgMTMwMzE2LCAKLSAgICAxMzAzMTksIDEzMDMyMiwgMTMwMzI1LCAxMzAzMjgsIDEzMDMzMSwgMTMwMzM0LCAxMzAzMzcsIDEzMDM0MCwgMTMwMzQzLCAKLSAgICAxMzAzNDYsIDEzMDM0OSwgMTMwMzUyLCAxMzAzNTUsIDEzMDM1OCwgMTMwMzYxLCAxMzAzNjQsIDEzMDM2NywgMTMwMzcwLCAKLSAgICAxMzAzNzMsIDEzMDM3NiwgMTMwMzc5LCAxMzAzODIsIDEzMDM4NSwgMTMwMzg4LCAxMzAzOTEsIDEzMDM5NCwgMTMwMzk3LCAKLSAgICAxMzA0MDAsIDEzMDQwMywgMTMwNDA2LCAxMzA0MDksIDEzMDQxMiwgMTMwNDE1LCAxMzA0MTgsIDEzMDQyMSwgMTMwNDI0LCAKLSAgICAxMzA0MjcsIDEzMDQzMCwgMTMwNDMzLCAxMzA0MzYsIDEzMDQzOSwgMTMwNDQyLCAxMzA0NDUsIDEzMDQ0OCwgMTMwNDUxLCAKLSAgICAxMzA0NTQsIDEzMDQ1NywgMTMwNDYwLCAxMzA0NjMsIDEzMDQ2NiwgMTMwNDY5LCAxMzA0NzIsIDEzMDQ3NSwgMTMwNDc4LCAKLSAgICAxMzA0ODEsIDEzMDQ4NCwgMTMwNDg3LCAxMzA0OTAsIDEzMDQ5MywgMTMwNDk2LCAxMzA0OTksIDEzMDUwMiwgMTMwNTA1LCAKLSAgICAxMzA1MDgsIDEzMDUxMSwgMTMwNTE0LCAxMzA1MTcsIDEzMDUyMCwgMTMwNTIzLCAxMzA1MjYsIDEzMDUyOSwgMTMwNTMyLCAKLSAgICAxMzA1MzUsIDEzMDUzOCwgMTMwNTQxLCAxMzA1NDQsIDEzMDU0NywgMTMwNTUwLCAxMzA1NTMsIDEzMDU1NiwgMTMwNTU5LCAKLSAgICAxMzA1NjIsIDEzMDU2NSwgMTMwNTY4LCAxMzA1NzEsIDEzMDU3NCwgMTMwNTc3LCAxMzA1ODAsIDEzMDU4MywgMTMwNTg2LCAKLSAgICAxMzA1ODksIDEzMDU5MiwgMTMwNTk1LCAxMzA1OTgsIDEzMDYwMSwgMTMwNjA0LCAxMzA2MDcsIDEzMDYxMCwgMTMwNjEzLCAKLSAgICAxMzA2MTYsIDEzMDYxOSwgMTMwNjIyLCAxMzA2MjUsIDEzMDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMwNjMxLCAxMzA2MzMsIDEzMDYzNSwgMTMwNjQwLCAxMzA2NDIsIDEzMDY0NywgMTMwNjQ5LCAKLSAgICAxMzA2NTQsIDEzMDY1NiwgMTMwNjYxLCAxMzA2NjMsIDEzMDY2NSwgMTMwNjY3LCAxMzA2NjksIDEzMDY3MSwgMTMwNjczLCAKLSAgICAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODIsIDEzMDY4NSwgMTMwNjg3LCAxMzA2ODksIDEzMDY5MywgMTMwNjk2LCAKLSAgICAxMzA3MDEsIDEzMDcwMywgMTMwNzA1LCAxMzA3MDcsIDEzMDcxMSwgMTMwNzE0LCAxMzA3MTYsIDEzMDcyMCwgMTMwNzIyLCAKLSAgICAxMzA3MjYsIDEzMDcyOCwgMTMwNzMyLCAxMzA3MzUsIDEzMDczNywgMTMwNzQxLCAxMzA3NDUsIDEzMDc0NywgMTMwNzUzLCAKLSAgICAxMzA3NTUsIDEzMDc2MCwgMTMwNzYyLCAxMzA3NjcsIDEzMDc2OSwgMTMwNzc0LCAxMzA3NzYsIDEzMDc4MSwgMTMwNzgzLCAKLSAgICAxMzA3ODYsIDEzMDc4OCwgMTMwNzkyLCAxMzA3OTQsIDEzMDgwMSwgMTMwODAzLCAxMzA4MDUsIDEzMDgwNywgMTMwODEyLCAKLSAgICAxMzA4MTQsIDEzMDgxNiwgMTMwODE4LCAxMzA4MjAsIDEzMDgyMiwgMTMwODI3LCAxMzA4MzEsIDEzMDgzMywgMTMwODM4LCAKLSAgICAxMzA4NDIsIDEzMDg0NCwgMTMwODQ5LCAxMzA4NTMsIDEzMDg1NSwgMTMwODYwLCAxMzA4NjQsIDEzMDg2NiwgMTMwODY4LCAKLSAgICAxMzA4NzAsIDEzMDg3MiwgMTMwODc2LCAxMzA4NzgsIDEzMDg4MywgMTMwODg1LCAxMzA4OTEsIDEzMDg5MywgMTMwODk5LCAKLSAgICAxMzA5MDEsIDEzMDkwMywgMTMwOTA1LCAxMzA5MDksIDEzMDkxMSwgMTMwOTE4LCAxMzA5MjAsIDEzMDkyNywgMTMwOTI5LCAKLSAgICAxMzA5MzQsIDEzMDkzOSwgMTMwOTQxLCAxMzA5NDcsIDEzMDk1MywgMTMwOTU1LCAxMzA5NjEsIDEzMDk2NiwgMTMwOTY4LCAKLSAgICAxMzA5NzQsIDEzMDk4MCwgMTMwOTgyLCAxMzA5ODgsIDEzMDk5NCwgMTMwOTk2LCAxMzEwMDIsIDEzMTAwNiwgMTMxMDA4LCAKLSAgICAxMzEwMTMsIDEzMTAxNSwgMTMxMDE3LCAxMzEwMjIsIDEzMTAyNCwgMTMxMDI2LCAxMzEwMzIsIDEzMTAzNCwgMTMxMDM5LCAKLSAgICAxMzEwNDMsIDEzMTA0NSwgMTMxMDUwLCAxMzEwNTQsIDEzMTA1NiwgMTMxMDYyLCAxMzEwNjQsIDEzMTA2OCwgMTMxMDcwLCAKLSAgICAxMzEwNzQsIDEzMTA3NiwgMTMxMDgzLCAxMzEwOTAsIDEzMTA5MiwgMTMxMDk5LCAxMzExMDYsIDEzMTEwOCwgMTMxMTEzLCAKLSAgICAxMzExMTUsIDEzMTEyMiwgMTMxMTI0LCAxMzExMjksIDEzMTEzMSwgMTMxMTM3LCAxMzExMzksIDEzMTE0MywgMTMxMTQ1LCAKLSAgICAxMzExNTEsIDEzMTE1MywgMTMxMTU3LCAxMzExNTksIDEzMTE2NSwgMTMxMTY3LCAxMzExNjksIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4MywgMTMxMTg1LCAxMzExOTQsIDEzMTE5OCwgMTMxMjA1LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAKLSAgICAxMzEyMzQsIDEzMTIzNiwgMTMxMjM4LCAxMzEyNDAsIDEzMTI0MiwgMTMxMjQ0LCAxMzEyNDYsIDEzMTI0OCwgMTMxMjUwLCAKLSAgICAxMzEyNTIsIDEzMTI1NCwgMTMxMjU2LCAxMzEyNTgsIDEzMTI2MCwgMTMxMjYyLCAxMzEyNjQsIDEzMTI2NiwgMTMxMjY4LCAKLSAgICAxMzEyNzAsIDEzMTI3MiwgMTMxMjc0LCAxMzEyNzYsIDEzMTI4MiwgMTMxMjg5LCAxMzEyOTQsIDEzMTI5OSwgMTMxMzEwLCAKLSAgICAxMzEzMTIsIDEzMTMxNCwgMTMxMzE2LCAxMzEzMTgsIDEzMTMyMCwgMTMxMzIyLCAxMzEzMjQsIDEzMTMyNiwgMTMxMzI4LCAKLSAgICAxMzEzMzAsIDEzMTMzMiwgMTMxMzM0LCAxMzEzMzYsIDEzMTMzOCwgMTMxMzQwLCAxMzEzNDIsIDEzMTM0NywgMTMxMzQ5LCAKLSAgICAxMzEzNTEsIDEzMTM1NywgMTMxMzY5LCAxMzEzODAsIDEzMTM4MiwgMTMxMzg0LCAxMzEzODYsIDEzMTM4OCwgMTMxMzkwLCAKLSAgICAxMzEzOTIsIDEzMTM5NCwgMTMxMzk2LCAxMzEzOTgsIDEzMTQwMCwgMTMxNDAyLCAxMzE0MDQsIDEzMTQwNiwgMTMxNDA4LCAKLSAgICAxMzE0MTAsIDEzMTQxMiwgMTMxNDE0LCAxMzE0MTYsIDEzMTQxOCwgMTMxNDIwLCAxMzE0MjIsIDEzMTQyNCwgMTMxNDI2LCAKLSAgICAxMzE0MjgsIDEzMTQzMCwgMTMxNDMyLCAxMzE0MzQsIDEzMTQzNiwgMTMxNDM4LCAxMzE0NDAsIDEzMTQ0MiwgMTMxNDQ0LCAKLSAgICAxMzE0NDYsIDEzMTQ0OCwgMTMxNDUwLCAxMzE0NTIsIDEzMTQ1NCwgMTMxNDU2LCAxMzE0NTgsIDEzMTQ2MCwgMTMxNDYyLCAKLSAgICAxMzE0NjQsIDEzMTQ2NiwgMTMxNDY4LCAxMzE0NzAsIDEzMTQ3MiwgMTMxNDc0LCAxMzE0NzYsIDEzMTQ3OCwgMTMxNDgwLCAKLSAgICAxMzE0ODIsIDEzMTQ4NCwgMTMxNDg2LCAxMzE0ODgsIDEzMTQ5MCwgMTMxNDkyLCAxMzE0OTQsIDEzMTQ5NiwgMTMxNDk4LCAKLSAgICAxMzE1MDAsIDEzMTUwMiwgMTMxNTA0LCAxMzE1MDYsIDEzMTUwOCwgMTMxNTEwLCAxMzE1MTIsIDEzMTUxNCwgMTMxNTE2LCAKLSAgICAxMzE1MTgsIDEzMTUyMCwgMTMxNTIyLCAxMzE1MjQsIDEzMTUyNiwgMTMxNTI4LCAxMzE1MzAsIDEzMTUzMiwgMTMxNTM0LCAKLSAgICAxMzE1MzYsIDEzMTUzOCwgMTMxNTQwLCAxMzE1NDIsIDEzMTU0NCwgMTMxNTQ2LCAxMzE1NDgsIDEzMTU1MCwgMTMxNTUyLCAKLSAgICAxMzE1NTQsIDEzMTU1NiwgMTMxNTU4LCAxMzE1NjAsIDEzMTU2MiwgMTMxNTY0LCAxMzE1NjYsIDEzMTU2OCwgMTMxNTcwLCAKLSAgICAxMzE1NzIsIDEzMTU3NCwgMTMxNTc2LCAxMzE1NzgsIDEzMTU4MCwgMTMxNTgyLCAxMzE1ODQsIDEzMTU4NiwgMTMxNTg4LCAKLSAgICAxMzE1OTAsIDEzMTU5MiwgMTMxNTk0LCAxMzE1OTYsIDEzMTU5OCwgMTMxNjAwLCAxMzE2MDIsIDEzMTYwNCwgMTMxNjA2LCAKLSAgICAxMzE2MDgsIDEzMTYxMCwgMTMxNjEyLCAxMzE2MTQsIDEzMTYxNiwgMTMxNjE4LCAxMzE2MjAsIDEzMTYyMiwgMTMxNjI0LCAKLSAgICAxMzE2MjYsIDEzMTYyOCwgMTMxNjMwLCAxMzE2MzIsIDEzMTYzNCwgMTMxNjM2LCAxMzE2MzgsIDEzMTY0MCwgMTMxNjQyLCAKLSAgICAxMzE2NDQsIDEzMTY0NiwgMTMxNjQ4LCAxMzE2NTAsIDEzMTY1MiwgMTMxNjU0LCAxMzE2NTYsIDEzMTY1OCwgMTMxNjYwLCAKLSAgICAxMzE2NjIsIDEzMTY2NCwgMTMxNjY2LCAxMzE2NjgsIDEzMTY3MCwgMTMxNjcyLCAxMzE2NzQsIDEzMTY3NiwgMTMxNjc4LCAKLSAgICAxMzE2ODAsIDEzMTY4MiwgMTMxNjg0LCAxMzE2ODYsIDEzMTY4OCwgMTMxNjkwLCAxMzE2OTIsIDEzMTY5NCwgMTMxNjk2LCAKLSAgICAxMzE2OTgsIDEzMTcwMCwgMTMxNzAyLCAxMzE3MDQsIDEzMTcwNiwgMTMxNzA4LCAxMzE3MTAsIDEzMTcxMiwgMTMxNzE0LCAKLSAgICAxMzE3MTYsIDEzMTcxOCwgMTMxNzIwLCAxMzE3MjIsIDEzMTcyNCwgMTMxNzI2LCAxMzE3MjgsIDEzMTczMCwgMTMxNzMyLCAKLSAgICAxMzE3MzQsIDEzMTczNiwgMTMxNzM4LCAxMzE3NDAsIDEzMTc0MiwgMTMxNzQ0LCAxMzE3NDYsIDEzMTc0OCwgMTMxNzUwLCAKLSAgICAxMzE3NTIsIDEzMTc1NCwgMTMxNzU2LCAxMzE3NTgsIDEzMTc2MCwgMTMxNzYyLCAxMzE3NjQsIDEzMTc2NiwgMTMxNzY4LCAKLSAgICAxMzE3NzAsIDEzMTc3MiwgMTMxNzc0LCAxMzE3NzYsIDEzMTc3OCwgMTMxNzgwLCAxMzE3ODIsIDEzMTc4NCwgMTMxNzg2LCAKLSAgICAxMzE3ODgsIDEzMTc5MCwgMTMxNzkyLCAxMzE3OTQsIDEzMTc5NiwgMTMxNzk4LCAxMzE4MDAsIDEzMTgwMiwgMTMxODA0LCAKLSAgICAxMzE4MDYsIDEzMTgwOCwgMTMxODEwLCAxMzE4MTIsIDEzMTgxNCwgMTMxODE2LCAxMzE4MTgsIDEzMTgyMCwgMTMxODIyLCAKLSAgICAxMzE4MjQsIDEzMTgyNiwgMTMxODI4LCAxMzE4MzAsIDEzMTgzMiwgMTMxODM0LCAxMzE4MzYsIDEzMTgzOCwgMTMxODQwLCAKLSAgICAxMzE4NDIsIDEzMTg0NCwgMTMxODQ2LCAxMzE4NDgsIDEzMTg1MCwgMTMxODUyLCAxMzE4NTQsIDEzMTg1NiwgMTMxODU4LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NjAsIDEzMTg3MCwgMTMxODgwLCAxMzE4ODksIDEzMTg5OCwgMTMxOTExLCAKLSAgICAxMzE5MjQsIDEzMTkzNiwgMTMxOTQ4LCAxMzE5NTgsIDEzMTk2OCwgMTMxOTc4LCAxMzE5ODgsIDEzMTk5OSwgMTMyMDEwLCAKLSAgICAxMzIwMjAsIDEzMjAyOSwgMTMyMDM4LCAxMzIwNDcsIDEzMjA2MCwgMTMyMDczLCAxMzIwODUsIDEzMjA5NywgMTMyMTA3LCAKLSAgICAxMzIxMTcsIDEzMjEyNywgMTMyMTM3LCAxMzIxNDYsIDEzMjE1NSwgMTMyMTY0LCAxMzIxNzMsIDEzMjE4MiwgMTMyMTkxLCAKLSAgICAxMzIyMDAsIDEzMjIwOSwgMTMyMjE4LCAxMzIyMjcsIDEzMjIzNiwgMTMyMjQ1LCAxMzIyNTYsIDEzMjI2NiwgMTMyMjc2LCAKLSAgICAxMzIyODksIDEzMjI5OSwgMTMyMzEyLCAxMzIzMTksIDEzMjMyOSwgMTMyMzM2LCAxMzIzNDMsIDEzMjM1MCwgMTMyMzU3LCAKLSAgICAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA3LCAxMzI0MTYsIDEzMjQyNSwgMTMyNDM0LCAKLSAgICAxMzI0NDMsIDEzMjQ1MSwgMTMyNDU5LCAxMzI0NjYsIDEzMjQ3NiwgMTMyNDg1LCAxMzI0OTMsIDEzMjUwMCwgMTMyNTEwLCAKLSAgICAxMzI1MTksIDEzMjUyOSwgMTMyNTM5LCAxMzI1NTAsIDEzMjU2MCwgMTMyNTY5LCAxMzI1NzksIDEzMjU4OCwgMTMyNTk4LCAKLSAgICAxMzI2MDYsIDEzMjYxMCwgMTMyNjE0LCAxMzI2MTgsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzNCwgMTMyNjM4LCAKLSAgICAxMzI2NDIsIDEzMjY0NiwgMTMyNjQ5LCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjMsIDEzMjY2NywgMTMyNjcxLCAKLSAgICAxMzI2NzUsIDEzMjY3OSwgMTMyNjgzLCAxMzI2ODcsIDEzMjY5MSwgMTMyNjk1LCAxMzI2OTksIDEzMjcwMywgMTMyNzA3LCAKLSAgICAxMzI3MTEsIDEzMjcxNSwgMTMyNzE5LCAxMzI3MjMsIDEzMjcyNywgMTMyNzMxLCAxMzI3MzUsIDEzMjczOSwgMTMyNzQzLCAKLSAgICAxMzI3NDcsIDEzMjc1MSwgMTMyNzU1LCAxMzI3NTksIDEzMjc2MywgMTMyNzY3LCAxMzI3NzEsIDEzMjc3NSwgMTMyNzc5LCAKLSAgICAxMzI3ODMsIDEzMjc4NywgMTMyNzkxLCAxMzI3OTUsIDEzMjc5OSwgMTMyODAzLCAxMzI4MDcsIDEzMjgxMSwgMTMyODE1LCAKLSAgICAxMzI4MTksIDEzMjgyMywgMTMyODI3LCAxMzI4MzEsIDEzMjgzNSwgMTMyODM5LCAxMzI4NDMsIDEzMjg0NywgMTMyODUxLCAKLSAgICAxMzI4NTUsIDEzMjg1OSwgMTMyODYzLCAxMzI4NjcsIDEzMjg3MSwgMTMyODc1LCAxMzI4NzksIDEzMjg4MywgMTMyODg3LCAKLSAgICAxMzI4OTEsIDEzMjg5NSwgMTMyODk5LCAxMzI5MDMsIDEzMjkwNywgMTMyOTExLCAxMzI5MTUsIDEzMjkxOSwgMTMyOTIzLCAKLSAgICAxMzI5MjcsIDEzMjkzMSwgMTMyOTM1LCAxMzI5MzksIDEzMjk0MywgMTMyOTQ3LCAxMzI5NTEsIDEzMjk1NSwgMTMyOTU5LCAKLSAgICAxMzI5NjMsIDEzMjk2NywgMTMyOTcxLCAxMzI5NzUsIDEzMjk3OSwgMTMyOTgzLCAxMzI5ODcsIDEzMjk5MSwgMTMyOTk1LCAKLSAgICAxMzI5OTksIDEzMzAwMiwgMTMzMDA2LCAxMzMwMTAsIDEzMzAxNCwgMTMzMDE4LCAxMzMwMjIsIDEzMzAyNiwgMTMzMDMwLCAKLSAgICAxMzMwMzQsIDEzMzAzOCwgMTMzMDQyLCAxMzMwNDYsIDEzMzA1MCwgMTMzMDU0LCAxMzMwNTgsIDEzMzA2MiwgMTMzMDY2LCAKLSAgICAxMzMwNzAsIDEzMzA3NCwgMTMzMDc4LCAxMzMwODIsIDEzMzA4NiwgMTMzMDkwLCAxMzMwOTQsIDEzMzA5OCwgMTMzMTAyLCAKLSAgICAxMzMxMDYsIDEzMzExMCwgMTMzMTE0LCAxMzMxMTgsIDEzMzEyMiwgMTMzMTI2LCAxMzMxMzAsIDEzMzEzNCwgMTMzMTM4LCAKLSAgICAxMzMxNDIsIDEzMzE0NiwgMTMzMTUwLCAxMzMxNTQsIDEzMzE1OCwgMTMzMTYyLCAxMzMxNjYsIDEzMzE3MCwgMTMzMTc0LCAKLSAgICAxMzMxNzgsIDEzMzE4MiwgMTMzMTg2LCAxMzMxOTAsIDEzMzE5NCwgMTMzMTk4LCAxMzMyMDIsIDEzMzIwNiwgMTMzMjEwLCAKLSAgICAxMzMyMTQsIDEzMzIxOCwgMTMzMjIyLCAxMzMyMjYsIDEzMzIzMCwgMTMzMjM0LCAxMzMyMzgsIDEzMzI0MiwgMTMzMjQ2LCAKLSAgICAxMzMyNTAsIDEzMzI1NCwgMTMzMjU4LCAxMzMyNjIsIDEzMzI2NiwgMTMzMjcwLCAxMzMyNzQsIDEzMzI3OCwgMTMzMjgyLCAKLSAgICAxMzMyODYsIDEzMzI5MCwgMTMzMjk0LCAxMzMyOTgsIDEzMzMwMiwgMTMzMzA2LCAxMzMzMTAsIDEzMzMxNCwgMTMzMzE4LCAKLSAgICAxMzMzMjIsIDEzMzMyNiwgMTMzMzMwLCAxMzMzMzQsIDEzMzMzOCwgMTMzMzQyLCAxMzMzNDYsIDEzMzM1MCwgMTMzMzU0LCAKLSAgICAxMzMzNTgsIDEzMzM2MiwgMTMzMzY2LCAxMzMzNzAsIDEzMzM3NCwgMTMzMzc4LCAxMzMzODIsIDEzMzM4NiwgMTMzMzkwLCAKLSAgICAxMzMzOTQsIDEzMzM5OCwgMTMzNDAyLCAxMzM0MDYsIDEzMzQxMCwgMTMzNDE0LCAxMzM0MTgsIDEzMzQyMiwgMTMzNDI2LCAKLSAgICAxMzM0MzAsIDEzMzQzNCwgMTMzNDM4LCAxMzM0NDIsIDEzMzQ0NiwgMTMzNDUwLCAxMzM0NTQsIDEzMzQ1OCwgMTMzNDYyLCAKLSAgICAxMzM0NjYsIDEzMzQ3MCwgMTMzNDc0LCAxMzM0NzgsIDEzMzQ4MiwgMTMzNDg2LCAxMzM0OTAsIDEzMzQ5NCwgMTMzNDk4LCAKLSAgICAxMzM1MDIsIDEzMzUwNiwgMTMzNTEwLCAxMzM1MTQsIDEzMzUxOCwgMTMzNTIyLCAxMzM1MjYsIDEzMzUzMCwgMTMzNTM0LCAKLSAgICAxMzM1MzgsIDEzMzU0MiwgMTMzNTQ2LCAxMzM1NTAsIDEzMzU1NCwgMTMzNTU4LCAxMzM1NjIsIDEzMzU2NiwgMTMzNTcwLCAKLSAgICAxMzM1NzQsIDEzMzU3OCwgMTMzNTgyLCAxMzM1ODYsIDEzMzU5MCwgMTMzNTk0LCAxMzM1OTgsIDEzMzYwMiwgMTMzNjA2LCAKLSAgICAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyNiwgMTMzNjMwLCAxMzM2MzQsIDEzMzYzOCwgMTMzNjQyLCAKLSAgICAxMzM2NDYsIDEzMzY1MCwgMTMzNjU0LCAxMzM2NTgsIDEzMzY2MiwgMTMzNjY2LCAxMzM2NzAsIDEzMzY3NCwgMTMzNjc4LCAKLSAgICAxMzM2ODIsIDEzMzY4NiwgMTMzNjkwLCAxMzM2OTQsIDEzMzY5OCwgMTMzNzAyLCAxMzM3MDYsIDEzMzcxMCwgMTMzNzE0LCAKLSAgICAxMzM3MTgsIDEzMzcyMiwgMTMzNzI2LCAxMzM3MzAsIDEzMzczNCwgMTMzNzM4LCAxMzM3NDIsIDEzMzc0NiwgMTMzNzUwLCAKLSAgICAxMzM3NTQsIDEzMzc1OCwgMTMzNzYyLCAxMzM3NjYsIDEzMzc3MSwgMTMzNzc2LCAxMzM3ODEsIDEzMzc4NSwgMTMzNzkxLCAKLSAgICAxMzM3OTgsIDEzMzgwNSwgMTMzODEyLCAxMzM4MTksIDEzMzgyNiwgMTMzODMzLCAxMzM4NDAsIDEzMzg0NywgMTMzODU0LCAKLSAgICAxMzM4NjEsIDEzMzg2OCwgMTMzODc1LCAxMzM4ODIsIDEzMzg4OCwgMTMzODk1LCAxMzM5MDIsIDEzMzkwOCwgMTMzOTE1LCAKLSAgICAxMzM5MjIsIDEzMzkyOSwgMTMzOTM2LCAxMzM5NDMsIDEzMzk1MCwgMTMzOTU3LCAxMzM5NjQsIDEzMzk3MSwgMTMzOTc4LCAKLSAgICAxMzM5ODUsIDEzMzk5MiwgMTMzOTk5LCAxMzQwMDUsIDEzNDAxMSwgMTM0MDE4LCAxMzQwMjUsIDEzNDAzNCwgMTM0MDQzLCAKLSAgICAxMzQwNTIsIDEzNDA2MSwgMTM0MDY2LCAxMzQwNzEsIDEzNDA3NywgMTM0MDgzLCAxMzQwODksIDEzNDA5NSwgMTM0MTAxLCAKLSAgICAxMzQxMDcsIDEzNDExMywgMTM0MTE5LCAxMzQxMjUsIDEzNDEzMSwgMTM0MTM3LCAxMzQxNDMsIDEzNDE0OCwgMTM0MTU0LCAKLSAgICAxMzQxNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwMDk4MCwgMTAwOTg0LCAxMDA5ODgsIDEwMDk5MiwgMTAwOTk2LCAxMDEwMDAsIDEwMTAwNCwgCisgICAgMTAxMDA4LCAxMDEwMTIsIDEwMTAxNiwgMTAxMDIxLCAxMDEwMjYsIDEwMTAzMSwgMTAxMDM2LCAxMDEwNDEsIDEwMTA0NiwgCisgICAgMTAxMDUxLCAxMDEwNTYsIDEwMTA2MSwgMTAxMDY3LCAxMDEwNzMsIDEwMTA3OSwgMTAxMDg2LCAxMDEwOTMsIDEwMTEwMCwgCisgICAgMTAxMTA3LCAxMDExMTQsIDEwMTEyMSwgMTAxMTI4LCAxMDExMzUsIDEwMTE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTAxMTQ5LCAxMDExNTMsIDEwMTE1NywgMTAxMTYxLCAxMDExNjUsIDEwMTE2OSwgMTAxMTcyLCAxMDExNzYsIAorICAgIDEwMTE3OSwgMTAxMTgzLCAxMDExODYsIDEwMTE5MCwgMTAxMTk0LCAxMDExOTksIDEwMTIwMywgMTAxMjA4LCAxMDEyMTEsIAorICAgIDEwMTIxNSwgMTAxMjE4LCAxMDEyMjIsIDEwMTIyNSwgMTAxMjI5LCAxMDEyMzMsIDEwMTIzNywgMTAxMjQxLCAxMDEyNDUsIAorICAgIDEwMTI0OSwgMTAxMjUzLCAxMDEyNTcsIDEwMTI2MSwgMTAxMjY1LCAxMDEyNjksIDEwMTI3MywgMTAxMjc3LCAxMDEyODEsIAorICAgIDEwMTI4NSwgMTAxMjg5LCAxMDEyOTMsIDEwMTI5NywgMTAxMzAwLCAxMDEzMDMsIDEwMTMwNywgMTAxMzExLCAxMDEzMTUsIAorICAgIDEwMTMxOCwgMTAxMzIxLCAxMDEzMjUsIDEwMTMyOSwgMTAxMzMzLCAxMDEzMzcsIDEwMTM0MSwgMTAxMzQ1LCAxMDEzNDgsIAorICAgIDEwMTM1MiwgMTAxMzU4LCAxMDEzNjQsIDEwMTM3MCwgMTAxMzc1LCAxMDEzODIsIDEwMTM4NiwgMTAxMzkxLCAxMDEzOTUsIAorICAgIDEwMTQwMCwgMTAxNDA1LCAxMDE0MTEsIDEwMTQxNiwgMTAxNDIyLCAxMDE0MjYsIDEwMTQzMSwgMTAxNDM1LCAxMDE0NDAsIAorICAgIDEwMTQ0MywgMTAxNDQ2LCAxMDE0NTAsIDEwMTQ1NSwgMTAxNDYxLCAxMDE0NjYsIDEwMTQ3MiwgMCwgMCwgMCwgMCwgCisgICAgMTAxNDc3LCAxMDE0ODAsIDEwMTQ4MywgMTAxNDg2LCAxMDE0ODksIDEwMTQ5MiwgMTAxNDk1LCAxMDE0OTgsIDEwMTUwMSwgCisgICAgMTAxNTA0LCAxMDE1MDgsIDEwMTUxMiwgMTAxNTE2LCAxMDE1MjAsIDEwMTUyNCwgMTAxNTI4LCAxMDE1MzIsIDEwMTUzNiwgCisgICAgMTAxNTQwLCAxMDE1NDUsIDEwMTU1MCwgMTAxNTU0LCAxMDE1NTcsIDEwMTU2MCwgMTAxNTYzLCAxMDE1NjYsIDEwMTU2OSwgCisgICAgMTAxNTcyLCAxMDE1NzUsIDEwMTU3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAxNTgxLCAxMDE1ODUsIDEwMTU5MCwgMTAxNTk1LCAxMDE2MDAsIDEwMTYwNCwgMTAxNjA5LCAxMDE2MTMsIDEwMTYxOCwgCisgICAgMTAxNjIyLCAxMDE2MjcsIDEwMTYzMSwgMTAxNjM2LCAxMDE2NDAsIDEwMTY0NSwgMTAxNjQ5LCAxMDE2NTQsIDEwMTY1OSwgCisgICAgMTAxNjY0LCAxMDE2NjksIDEwMTY3NCwgMTAxNjc5LCAxMDE2ODQsIDEwMTY4OSwgMTAxNjk0LCAxMDE2OTksIDEwMTcwNCwgCisgICAgMTAxNzA5LCAxMDE3MTQsIDEwMTcxOSwgMTAxNzI0LCAxMDE3MjksIDEwMTczNCwgMTAxNzM5LCAxMDE3NDQsIDEwMTc0OSwgCisgICAgMTAxNzUzLCAxMDE3NTcsIDEwMTc2MiwgMTAxNzY3LCAxMDE3NzIsIDEwMTc3NiwgMTAxNzgwLCAxMDE3ODUsIDEwMTc5MCwgCisgICAgMTAxNzk1LCAxMDE4MDAsIDEwMTgwNSwgMTAxODEwLCAxMDE4MTQsIDEwMTgyMCwgMTAxODI1LCAxMDE4MzEsIDEwMTgzNiwgCisgICAgMTAxODQyLCAxMDE4NDcsIDEwMTg1MywgMTAxODU4LCAxMDE4NjQsIDEwMTg2OSwgMTAxODc0LCAxMDE4NzksIDEwMTg4NCwgCisgICAgMTAxODg4LCAxMDE4OTMsIDEwMTg5OSwgMTAxOTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDE5MDgsIDEwMTkxNSwgMTAxOTIyLCAxMDE5MjksIDEwMTkzNiwgMTAxOTQzLCAxMDE5NTAsIDEwMTk1NywgMTAxOTY0LCAKKyAgICAxMDE5NzEsIDEwMTk3OCwgMTAxOTg1LCAxMDE5OTIsIDEwMTk5OSwgMTAyMDA2LCAxMDIwMTMsIDEwMjAyMCwgMTAyMDI3LCAKKyAgICAxMDIwMzQsIDEwMjA0MSwgMTAyMDQ4LCAxMDIwNTUsIDEwMjA2MiwgMTAyMDY5LCAxMDIwNzYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwMjA4MywgMTAyMDkwLCAxMDIwOTYsIDEwMjEwMiwgMTAyMTA4LCAxMDIxMTQsIDEwMjEyMCwgMTAyMTI2LCAKKyAgICAxMDIxMzIsIDEwMjEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMTQ0LCAxMDIxNDksIDEwMjE1NCwgMTAyMTU5LCAxMDIxNjQsIAorICAgIDEwMjE2OCwgMTAyMTcyLCAxMDIxNzYsIDEwMjE4MSwgMTAyMTg2LCAxMDIxOTEsIDEwMjE5NiwgMTAyMjAxLCAxMDIyMDYsIAorICAgIDEwMjIxMSwgMTAyMjE2LCAxMDIyMjEsIDEwMjIyNiwgMTAyMjMxLCAxMDIyMzYsIDEwMjI0MSwgMTAyMjQ2LCAxMDIyNTEsIAorICAgIDEwMjI1NiwgMTAyMjYxLCAxMDIyNjYsIDEwMjI3MSwgMTAyMjc2LCAxMDIyODEsIDEwMjI4NiwgMTAyMjkxLCAxMDIyOTYsIAorICAgIDEwMjMwMSwgMTAyMzA2LCAxMDIzMTEsIDEwMjMxNiwgMTAyMzIxLCAxMDIzMjYsIDEwMjMzMSwgMTAyMzM2LCAxMDIzNDEsIAorICAgIDEwMjM0NiwgMTAyMzUyLCAxMDIzNTcsIDEwMjM2MywgMTAyMzY4LCAxMDIzNzQsIDEwMjM3OSwgMTAyMzg1LCAxMDIzOTEsIAorICAgIDEwMjM5NSwgMTAyNDAwLCAxMDI0MDQsIDAsIDEwMjQwOCwgMTAyNDEzLCAxMDI0MTcsIDEwMjQyMSwgMTAyNDI1LCAKKyAgICAxMDI0MjksIDEwMjQzMywgMTAyNDM3LCAxMDI0NDEsIDEwMjQ0NSwgMTAyNDQ5LCAxMDI0NTQsIDEwMjQ1OCwgMTAyNDYzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI0NjgsIDEwMjQ3MiwgMTAyNDc2LCAxMDI0ODAsIAorICAgIDEwMjQ4NCwgMTAyNDg4LCAxMDI0OTIsIDEwMjQ5NywgMTAyNTAyLCAxMDI1MDcsIDEwMjUxMiwgMTAyNTE3LCAxMDI1MjIsIAorICAgIDEwMjUyNywgMTAyNTMyLCAxMDI1MzcsIDEwMjU0MiwgMTAyNTQ3LCAxMDI1NTIsIDEwMjU1NywgMTAyNTYyLCAxMDI1NjcsIAorICAgIDEwMjU3MiwgMTAyNTc3LCAxMDI1ODEsIDEwMjU4NSwgMTAyNTkwLCAxMDI1OTUsIDEwMjYwMCwgMTAyNjA0LCAxMDI2MDksIAorICAgIDEwMjYxNCwgMTAyNjE5LCAxMDI2MjQsIDEwMjYyOCwgMTAyNjMzLCAxMDI2MzgsIDEwMjY0MywgMTAyNjQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2NTMsIDEwMjY1NywgMTAyNjYxLCAxMDI2NjUsIDEwMjY2OCwgMTAyNjcyLCAxMDI2NzUsIAorICAgIDEwMjY3OSwgMTAyNjgyLCAxMDI2ODYsIDEwMjY5MCwgMTAyNjk1LCAxMDI2OTksIDEwMjcwNCwgMTAyNzA3LCAxMDI3MTEsIAorICAgIDEwMjcxNCwgMTAyNzE4LCAxMDI3MjEsIDEwMjcyNSwgMTAyNzI5LCAxMDI3MzMsIDEwMjczNywgMTAyNzQxLCAxMDI3NDUsIAorICAgIDEwMjc0OSwgMTAyNzUzLCAxMDI3NTcsIDEwMjc2MSwgMTAyNzY1LCAxMDI3NjksIDEwMjc3MywgMTAyNzc3LCAxMDI3ODEsIAorICAgIDEwMjc4NSwgMTAyNzg5LCAxMDI3OTMsIDEwMjc5NiwgMTAyNzk5LCAxMDI4MDMsIDEwMjgwNywgMTAyODExLCAxMDI4MTQsIAorICAgIDEwMjgxNywgMTAyODIxLCAxMDI4MjUsIDEwMjgyOSwgMTAyODMzLCAxMDI4MzcsIDEwMjg0MSwgMTAyODQ1LCAxMDI4NDgsIAorICAgIDEwMjg1MywgMTAyODU3LCAxMDI4NjIsIDEwMjg2NiwgMTAyODcxLCAxMDI4NzYsIDEwMjg4MiwgMTAyODg3LCAxMDI4OTMsIAorICAgIDEwMjg5NywgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMSwgMTAyOTE1LCAxMDI5MTksIDEwMjkyMywgMTAyOTI3LCAxMDI5MzAsIAorICAgIDEwMjkzMywgMTAyOTM3LCAxMDI5NDEsIDAsIDAsIDAsIDAsIDEwMjk0NCwgMCwgMCwgMTAyOTQ4LCAxMDI5NTIsIDEwMjk1NSwgCisgICAgMTAyOTU4LCAxMDI5NjEsIDEwMjk2NCwgMTAyOTY3LCAxMDI5NzAsIDEwMjk3MywgMTAyOTc2LCAxMDI5NzksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMjk4MiwgMTAyOTg3LCAxMDI5OTIsIDEwMjk5NywgMTAzMDAyLCAxMDMwMDcsIDEwMzAxMiwgMTAzMDE3LCAKKyAgICAxMDMwMjIsIDEwMzAyNywgMTAzMDMzLCAxMDMwMzksIDEwMzA0NSwgMTAzMDUxLCAxMDMwNTcsIDEwMzA2MywgMTAzMDY5LCAKKyAgICAxMDMwNzUsIDEwMzA4MSwgMTAzMDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMwOTUsIDEwMzA5OSwgCisgICAgMTAzMTA0LCAxMDMxMDgsIDEwMzExMiwgMTAzMTE2LCAxMDMxMjEsIDEwMzEyNSwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOSwgCisgICAgMTAzMTQ0LCAxMDMxNDksIDEwMzE1NCwgMTAzMTU5LCAxMDMxNjQsIDEwMzE2OSwgMTAzMTc0LCAwLCAxMDMxNzksIAorICAgIDEwMzE4NCwgMTAzMTg5LCAxMDMxOTQsIDEwMzE5OSwgMTAzMjA0LCAxMDMyMDksIDEwMzIxNCwgMTAzMjE5LCAxMDMyMjQsIAorICAgIDEwMzIyOSwgMTAzMjM0LCAxMDMyMzgsIDEwMzI0MiwgMTAzMjQ3LCAxMDMyNTIsIDEwMzI1NywgMTAzMjYyLCAxMDMyNjYsIAorICAgIDEwMzI3MCwgMTAzMjc1LCAxMDMyODAsIDEwMzI4NSwgMTAzMjkwLCAxMDMyOTQsIDEwMzI5OSwgMTAzMzA1LCAxMDMzMTAsIAorICAgIDEwMzMxNiwgMTAzMzIxLCAxMDMzMjYsIDEwMzMzMiwgMTAzMzM3LCAxMDMzNDMsIDEwMzM0OCwgMTAzMzUzLCAxMDMzNTgsIAorICAgIDEwMzM2MywgMTAzMzY3LCAxMDMzNzIsIDEwMzM3OCwgMTAzMzgzLCAxMDMzODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM5NCwgMTAzMzk4LCAxMDM0MDMsIDEwMzQwNywgMTAzNDEyLCAKKyAgICAxMDM0MTYsIDEwMzQyMSwgMTAzNDI1LCAxMDM0MzAsIDEwMzQzNCwgMTAzNDM5LCAxMDM0NDMsIDEwMzQ0OCwgMTAzNDUzLCAKKyAgICAxMDM0NTgsIDEwMzQ2MywgMTAzNDY4LCAxMDM0NzMsIDEwMzQ3OCwgMTAzNDgzLCAxMDM0ODgsIDEwMzQ5MywgMTAzNDk4LCAKKyAgICAxMDM1MDMsIDEwMzUwOCwgMTAzNTEzLCAxMDM1MTgsIDEwMzUyMywgMTAzNTI4LCAxMDM1MzMsIDEwMzUzOCwgMTAzNTQzLCAKKyAgICAxMDM1NDgsIDEwMzU1MywgMTAzNTU3LCAxMDM1NjEsIDEwMzU2NiwgMTAzNTcxLCAxMDM1NzYsIDEwMzU4MSwgMTAzNTg1LCAKKyAgICAxMDM1ODksIDEwMzU5NCwgMTAzNTk5LCAxMDM2MDQsIDEwMzYwOSwgMTAzNjE0LCAxMDM2MTgsIDEwMzYyMywgMTAzNjI5LCAKKyAgICAxMDM2MzQsIDEwMzY0MCwgMTAzNjQ1LCAxMDM2NTEsIDEwMzY1NiwgMTAzNjYyLCAxMDM2NjcsIDEwMzY3MywgMTAzNjc4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDM2ODMsIDEwMzY4OCwgMTAzNjkyLCAxMDM2OTYsIDEwMzcwMCwgMTAzNzA0LCAxMDM3MDgsIAorICAgIDEwMzcxMiwgMTAzNzE2LCAxMDM3MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzcyNCwgMTAzNzI5LCAxMDM3MzQsIDAsIAorICAgIDEwMzczOSwgMTAzNzQzLCAxMDM3NDgsIDEwMzc1MiwgMTAzNzU3LCAxMDM3NjEsIDEwMzc2NiwgMTAzNzcxLCAwLCAwLCAKKyAgICAxMDM3NzYsIDEwMzc4MSwgMCwgMCwgMTAzNzg2LCAxMDM3OTEsIDEwMzc5NiwgMTAzODAwLCAxMDM4MDUsIDEwMzgxMCwgCisgICAgMTAzODE1LCAxMDM4MjAsIDEwMzgyNSwgMTAzODMwLCAxMDM4MzUsIDEwMzg0MCwgMTAzODQ1LCAxMDM4NTAsIDEwMzg1NSwgCisgICAgMTAzODYwLCAxMDM4NjUsIDEwMzg3MCwgMTAzODc1LCAxMDM4ODAsIDEwMzg4NSwgMTAzODkwLCAwLCAxMDM4OTQsIAorICAgIDEwMzg5OCwgMTAzOTAzLCAxMDM5MDgsIDEwMzkxMywgMTAzOTE3LCAxMDM5MjEsIDAsIDEwMzkyNiwgMTAzOTMxLCAwLCAKKyAgICAxMDM5MzYsIDEwMzk0MSwgMTAzOTQ2LCAxMDM5NTEsIDEwMzk1NiwgMCwgMCwgMTAzOTYwLCAxMDM5NjUsIDEwMzk3MCwgCisgICAgMTAzOTc2LCAxMDM5ODEsIDEwMzk4NywgMTAzOTkyLCAxMDM5OTgsIDEwNDAwNCwgMCwgMCwgMTA0MDExLCAxMDQwMTcsIDAsIAorICAgIDAsIDEwNDAyMywgMTA0MDI5LCAxMDQwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDA0MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA0MDQ3LCAxMDQwNTIsIDEwNDA1OSwgMTA0MDY3LCAxMDQwNzMsIDEwNDA3OSwgMTA0MDg1LCAwLCAwLCAxMDQwOTIsIAorICAgIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgMTA0MTE4LCAxMDQxMjMsIDAsIDAsIDAsIDEwNDEyOCwgMTA0MTMzLCAKKyAgICAxMDQxMzgsIDEwNDE0MywgMTA0MTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQxNTQsIDEwNDE1OCwgMTA0MTYyLCAxMDQxNjcsIDEwNDE3MSwgCisgICAgMTA0MTc2LCAxMDQxODAsIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgMTA0MjA3LCAxMDQyMTEsIDEwNDIxNiwgCisgICAgMTA0MjIwLCAxMDQyMjUsIDEwNDIyOSwgMTA0MjM0LCAxMDQyMzksIDEwNDI0NCwgMTA0MjQ5LCAxMDQyNTQsIDEwNDI1OSwgCisgICAgMTA0MjY0LCAxMDQyNjksIDEwNDI3NCwgMTA0Mjc5LCAxMDQyODQsIDEwNDI4OSwgMTA0Mjk0LCAxMDQyOTksIDEwNDMwNCwgCisgICAgMTA0MzA5LCAxMDQzMTQsIDEwNDMxOSwgMTA0MzIzLCAxMDQzMjcsIDEwNDMzMiwgMTA0MzM3LCAxMDQzNDIsIDEwNDM0NiwgCisgICAgMTA0MzUwLCAxMDQzNTUsIDEwNDM2MCwgMTA0MzY1LCAxMDQzNzAsIDEwNDM3NSwgMTA0MzgwLCAxMDQzODQsIDEwNDM5MCwgCisgICAgMTA0Mzk1LCAxMDQ0MDEsIDEwNDQwNiwgMTA0NDEyLCAxMDQ0MTgsIDEwNDQyNSwgMTA0NDMxLCAxMDQ0MzgsIDEwNDQ0MywgCisgICAgMTA0NDUwLCAxMDQ0NTYsIDEwNDQ2MSwgMTA0NDY4LCAxMDQ0NzQsIDEwNDQ3OSwgMTA0NDg0LCAxMDQ0ODksIDEwNDQ5NCwgCisgICAgMTA0NDk5LCAxMDQ1MDQsIDEwNDUwOCwgMTA0NTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MTcsIDEwNDUyMiwgCisgICAgMTA0NTI2LCAxMDQ1MzAsIDEwNDUzNCwgMTA0NTM4LCAxMDQ1NDIsIDEwNDU0NiwgMTA0NTUwLCAxMDQ1NTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDU1OCwgMTA0NTYyLCAKKyAgICAxMDQ1NjcsIDEwNDU3MSwgMTA0NTc2LCAxMDQ1ODAsIDEwNDU4NSwgMTA0NTkwLCAxMDQ1OTYsIDEwNDYwMSwgMTA0NjA3LCAKKyAgICAxMDQ2MTEsIDEwNDYxNiwgMTA0NjIwLCAxMDQ2MjUsIDEwNDYyOSwgMTA0NjM0LCAxMDQ2MzksIDEwNDY0NCwgMTA0NjQ5LCAKKyAgICAxMDQ2NTQsIDEwNDY1OSwgMTA0NjY0LCAxMDQ2NjksIDEwNDY3NCwgMTA0Njc5LCAxMDQ2ODQsIDEwNDY4OSwgMTA0Njk0LCAKKyAgICAxMDQ2OTksIDEwNDcwNCwgMTA0NzA5LCAxMDQ3MTQsIDEwNDcxOSwgMTA0NzIzLCAxMDQ3MjcsIDEwNDczMiwgMTA0NzM3LCAKKyAgICAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTUsIDEwNDc2MCwgMTA0NzY1LCAxMDQ3NzAsIDEwNDc3NSwgMTA0NzgwLCAKKyAgICAxMDQ3ODQsIDEwNDc5MCwgMTA0Nzk1LCAxMDQ4MDEsIDEwNDgwNiwgMTA0ODEyLCAxMDQ4MTgsIDAsIDAsIDEwNDgyNSwgCisgICAgMTA0ODMwLCAxMDQ4MzYsIDEwNDg0MSwgMTA0ODQ3LCAxMDQ4NTIsIDEwNDg1NywgMTA0ODYyLCAxMDQ4NjcsIDEwNDg3MiwgCisgICAgMTA0ODc3LCAxMDQ4ODEsIDEwNDg4NiwgMTA0ODkyLCAxMDQ4OTcsIDEwNDkwMywgMTA0OTA5LCAxMDQ5MTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNDkyMywgMTA0OTI3LCAxMDQ5MzIsIDEwNDkzNiwgMTA0OTQxLCAxMDQ5NDUsIDEwNDk1MCwgMTA0OTU1LCAKKyAgICAxMDQ5NjEsIDEwNDk2NiwgMTA0OTcyLCAxMDQ5NzYsIDEwNDk4MSwgMTA0OTg1LCAxMDQ5OTAsIDEwNDk5NCwgMTA0OTk5LCAKKyAgICAxMDUwMDQsIDEwNTAwOSwgMTA1MDE0LCAxMDUwMTksIDEwNTAyNCwgMTA1MDI5LCAxMDUwMzQsIDEwNTAzOSwgMTA1MDQ0LCAKKyAgICAxMDUwNDksIDEwNTA1NCwgMTA1MDU5LCAxMDUwNjQsIDEwNTA2OSwgMTA1MDc0LCAxMDUwNzksIDEwNTA4NCwgMTA1MDg4LCAKKyAgICAxMDUwOTIsIDEwNTA5NywgMTA1MTAyLCAxMDUxMDcsIDEwNTExMSwgMTA1MTE1LCAxMDUxMjAsIDEwNTEyNSwgMTA1MTMwLCAKKyAgICAxMDUxMzUsIDEwNTE0MCwgMTA1MTQ1LCAxMDUxNDksIDEwNTE1NCwgMTA1MTYwLCAxMDUxNjUsIDEwNTE3MSwgMTA1MTc2LCAKKyAgICAxMDUxODIsIDEwNTE4OCwgMTA1MTk1LCAxMDUyMDEsIDEwNTIwOCwgMTA1MjEzLCAxMDUyMTksIDEwNTIyNCwgMTA1MjMwLCAKKyAgICAxMDUyMzUsIDEwNTI0MCwgMTA1MjQ1LCAxMDUyNTAsIDEwNTI1NCwgMTA1MjU5LCAxMDUyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwNTI2OSwgMTA1Mjc0LCAxMDUyNzgsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgCisgICAgMTA1Mjk4LCAxMDUzMDIsIDEwNTMwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MzEwLCAKKyAgICAxMDUzMTQsIDEwNTMxOSwgMTA1MzIzLCAxMDUzMjgsIDEwNTMzMiwgMTA1MzM3LCAxMDUzNDEsIDEwNTM0NiwgMTA1MzUwLCAKKyAgICAxMDUzNTUsIDEwNTM1OSwgMTA1MzY0LCAxMDUzNjksIDEwNTM3NCwgMTA1Mzc5LCAxMDUzODQsIDEwNTM4OSwgMTA1Mzk0LCAKKyAgICAxMDUzOTksIDEwNTQwNCwgMTA1NDA5LCAxMDU0MTQsIDEwNTQxOSwgMTA1NDI0LCAxMDU0MjksIDEwNTQzNCwgMTA1NDM5LCAKKyAgICAxMDU0NDQsIDEwNTQ0OSwgMTA1NDUzLCAxMDU0NTcsIDEwNTQ2MiwgMTA1NDY3LCAxMDU0NzIsIDEwNTQ3NiwgMTA1NDgwLCAKKyAgICAxMDU0ODUsIDEwNTQ5MCwgMTA1NDk1LCAxMDU1MDAsIDEwNTUwNSwgMTA1NTA5LCAxMDU1MTQsIDEwNTUxOSwgMTA1NTI0LCAKKyAgICAxMDU1MzAsIDEwNTUzNSwgMTA1NTQxLCAxMDU1NDYsIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjMsIDEwNTU2OCwgMTA1NTc0LCAKKyAgICAxMDU1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTU4NCwgMTA1NTg5LCAxMDU1OTMsIDEwNTU5NywgMTA1NjAxLCAKKyAgICAxMDU2MDUsIDEwNTYwOSwgMTA1NjEzLCAxMDU2MTcsIDEwNTYyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NjI1LCAxMDU2MzEsIDEwNTYzNiwgMTA1NjQyLCAxMDU2NDgsIAorICAgIDEwNTY1MywgMTA1NjU5LCAxMDU2NjUsIDEwNTY3MSwgMTA1Njc2LCAxMDU2ODEsIDEwNTY4NywgMTA1NjkzLCAxMDU2OTksIAorICAgIDEwNTcwNSwgMTA1NzExLCAxMDU3MTcsIDEwNTcyMywgMTA1NzI5LCAxMDU3MzUsIDEwNTc0MSwgMTA1NzQ3LCAxMDU3NTMsIAorICAgIDEwNTc1OSwgMTA1NzY1LCAxMDU3NzEsIDEwNTc3NywgMTA1NzgzLCAxMDU3ODksIDEwNTc5NSwgMTA1ODAxLCAxMDU4MDcsIAorICAgIDEwNTgxMywgMTA1ODE5LCAxMDU4MjQsIDEwNTgzMCwgMTA1ODM2LCAxMDU4NDEsIDEwNTg0NywgMTA1ODUzLCAxMDU4NTksIAorICAgIDEwNTg2NCwgMTA1ODY5LCAxMDU4NzUsIDEwNTg4MSwgMTA1ODg3LCAxMDU4OTMsIDEwNTg5OSwgMTA1OTA1LCAxMDU5MTEsIAorICAgIDEwNTkxNywgMTA1OTIzLCAxMDU5MjksIDEwNTkzNSwgMTA1OTQxLCAxMDU5NDcsIDEwNTk1MywgMTA1OTU5LCAxMDU5NjUsIAorICAgIDEwNTk3MSwgMTA1OTc3LCAxMDU5ODMsIDEwNTk4OSwgMTA1OTk1LCAxMDYwMDEsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIAorICAgIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIDEwNjAzMCwgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ3LCAxMDYwNTIsIAorICAgIDEwNjA1NywgMTA2MDYyLCAxMDYwNjcsIDEwNjA3MiwgMTA2MDc3LCAxMDYwODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNjA4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA2MDkxLCAxMDYwOTksIDEwNjEwNywgMTA2MTE2LCAxMDYxMjQsIDEwNjEzMywgMTA2MTQyLCAKKyAgICAxMDYxNTEsIDEwNjE2MCwgMTA2MTY4LCAxMDYxNzcsIDEwNjE4NiwgMTA2MTk1LCAxMDYyMDQsIDEwNjIxMywgMTA2MjIyLCAKKyAgICAxMDYyMzEsIDEwNjIzOSwgMTA2MjQ4LCAxMDYyNTcsIDEwNjI2NiwgMTA2Mjc1LCAxMDYyODMsIDEwNjI5MSwgMTA2Mjk5LCAKKyAgICAxMDYzMDcsIDEwNjMxNSwgMTA2MzI0LCAxMDYzMzMsIDEwNjM0MywgMTA2MzUzLCAxMDYzNjMsIDEwNjM3MywgMTA2MzgzLCAKKyAgICAxMDYzOTIsIDEwNjQwMiwgMTA2NDEyLCAxMDY0MjIsIDEwNjQzMywgMTA2NDQzLCAxMDY0NTUsIDEwNjQ2NywgMTA2NDc4LCAKKyAgICAxMDY0OTIsIDEwNjUwMywgMTA2NTEzLCAxMDY1MjUsIDEwNjUzNiwgMTA2NTQ2LCAxMDY1NTgsIDEwNjU3MCwgMTA2NTgxLCAKKyAgICAxMDY1OTIsIDEwNjYwMiwgMTA2NjEyLCAxMDY2MjQsIDEwNjYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NjQ3LCAKKyAgICAxMDY2NTAsIDEwNjY1NSwgMTA2NjYxLCAxMDY2NjksIDEwNjY3NCwgMTA2NjgwLCAxMDY2ODgsIDEwNjY5NCwgMTA2NzAwLCAKKyAgICAxMDY3MDQsIDEwNjcwOCwgMTA2NzE1LCAxMDY3MjQsIDEwNjczMSwgMTA2NzQwLCAxMDY3NDYsIDEwNjc1NSwgMTA2NzYyLCAKKyAgICAxMDY3NjksIDEwNjc3NiwgMTA2Nzg2LCAxMDY3OTIsIDEwNjc5NiwgMTA2ODAzLCAxMDY4MTIsIDEwNjgyMiwgMTA2ODI5LCAKKyAgICAxMDY4MzYsIDEwNjg0MCwgMTA2ODQ0LCAxMDY4NTEsIDEwNjg2MSwgMTA2ODY1LCAxMDY4NzIsIDEwNjg3OSwgMTA2ODg2LCAKKyAgICAxMDY4OTIsIDEwNjg5OSwgMTA2OTA2LCAxMDY5MTMsIDEwNjkyMCwgMTA2OTI0LCAxMDY5MjgsIDEwNjkzMiwgMTA2OTM5LCAKKyAgICAxMDY5NDMsIDEwNjk1MCwgMTA2OTU3LCAxMDY5NzEsIDEwNjk4MCwgMTA2OTg0LCAxMDY5ODgsIDEwNjk5MiwgMTA2OTk5LCAKKyAgICAxMDcwMDMsIDEwNzAwNywgMTA3MDExLCAxMDcwMTksIDEwNzAyNywgMTA3MDQ2LCAxMDcwNTYsIDEwNzA3NiwgMTA3MDgwLCAKKyAgICAxMDcwODQsIDEwNzA4OCwgMTA3MDkyLCAxMDcwOTYsIDEwNzEwMCwgMTA3MTA0LCAxMDcxMTEsIDEwNzExNSwgMTA3MTE4LCAKKyAgICAxMDcxMjIsIDEwNzEyNiwgMTA3MTMyLCAxMDcxMzksIDEwNzE0OCwgMTA3MTUyLCAxMDcxNjEsIDEwNzE3MCwgMTA3MTc4LCAKKyAgICAxMDcxODIsIDEwNzE4OSwgMTA3MTkzLCAxMDcxOTcsIDEwNzIwMSwgMTA3MjA1LCAxMDcyMTYsIDEwNzIyNSwgMTA3MjM0LCAKKyAgICAxMDcyNDMsIDEwNzI1MiwgMTA3MjY0LCAxMDcyNzMsIDEwNzI4MiwgMTA3MjkxLCAxMDcyOTksIDEwNzMwOCwgMTA3MzIwLCAKKyAgICAxMDczMjksIDEwNzMzOCwgMTA3MzQ3LCAxMDczNTksIDEwNzM2OCwgMTA3Mzc3LCAxMDczODksIDEwNzM5OCwgMTA3NDA3LCAKKyAgICAxMDc0MTksIDEwNzQyOCwgMTA3NDMyLCAxMDc0MzYsIDEwNzQ0MCwgMTA3NDQ0LCAxMDc0NDgsIDEwNzQ1MiwgMTA3NDU2LCAKKyAgICAxMDc0NjMsIDEwNzQ2NywgMTA3NDcxLCAxMDc0ODIsIDEwNzQ4NiwgMTA3NDkwLCAxMDc0OTcsIDEwNzUwMywgMTA3NTA5LCAKKyAgICAxMDc1MTMsIDEwNzUyMCwgMTA3NTI0LCAxMDc1MjgsIDEwNzUzMiwgMTA3NTM2LCAxMDc1NDAsIDEwNzU0NCwgMTA3NTUwLCAKKyAgICAxMDc1NTgsIDEwNzU2MiwgMTA3NTY2LCAxMDc1NjksIDEwNzU3NSwgMTA3NTg1LCAxMDc1ODksIDEwNzYwMSwgMTA3NjA4LCAKKyAgICAxMDc2MTUsIDEwNzYyMiwgMTA3NjI5LCAxMDc2MzUsIDEwNzYzOSwgMTA3NjQzLCAxMDc2NDcsIDEwNzY1MSwgMTA3NjU4LCAKKyAgICAxMDc2NjcsIDEwNzY3NCwgMTA3NjgyLCAxMDc2OTAsIDEwNzY5NiwgMTA3NzAwLCAxMDc3MDQsIDEwNzcwOCwgMTA3NzEyLCAKKyAgICAxMDc3MTgsIDEwNzcyNywgMTA3NzM5LCAxMDc3NDYsIDEwNzc1MywgMTA3NzYyLCAxMDc3NzMsIDEwNzc3OSwgMTA3Nzg4LCAKKyAgICAxMDc3OTcsIDEwNzgwNCwgMTA3ODEzLCAxMDc4MjAsIDEwNzgyNywgMTA3ODM3LCAxMDc4NDQsIDEwNzg1MSwgMTA3ODU4LCAKKyAgICAxMDc4NjUsIDEwNzg2OSwgMTA3ODc1LCAxMDc4NzksIDEwNzg5MCwgMTA3ODk4LCAxMDc5MDcsIDEwNzkxOSwgMTA3OTI2LCAKKyAgICAxMDc5MzMsIDEwNzk0MywgMTA3OTUwLCAxMDc5NjAsIDEwNzk2NywgMTA3OTc3LCAxMDc5ODQsIDEwNzk5MSwgMTA4MDAxLCAKKyAgICAxMDgwMDgsIDEwODAxNSwgMTA4MDI1LCAxMDgwMzIsIDEwODA0NCwgMTA4MDUzLCAxMDgwNjAsIDEwODA2NywgMTA4MDc0LCAKKyAgICAxMDgwODMsIDEwODA5MywgMTA4MTA2LCAxMDgxMTMsIDEwODEyMywgMTA4MTMzLCAxMDgxNDAsIDEwODE0OSwgMTA4MTYyLCAKKyAgICAxMDgxNjksIDEwODE3NiwgMTA4MTgzLCAxMDgxOTMsIDEwODIwMywgMTA4MjEwLCAxMDgyMjAsIDEwODIyNywgMTA4MjM0LCAKKyAgICAxMDgyNDQsIDEwODI1MCwgMTA4MjU3LCAxMDgyNjQsIDEwODI3MSwgMTA4MjgxLCAxMDgyODgsIDEwODI5NSwgMTA4MzAyLCAKKyAgICAxMDgzMDgsIDEwODMxNSwgMTA4MzI1LCAxMDgzMzIsIDEwODMzNiwgMTA4MzQ0LCAxMDgzNDgsIDEwODM2MCwgMTA4MzY0LCAKKyAgICAxMDgzNzgsIDEwODM4MiwgMTA4Mzg2LCAxMDgzOTAsIDEwODM5NCwgMTA4NDAwLCAxMDg0MDcsIDEwODQxNSwgMTA4NDE5LCAKKyAgICAxMDg0MjMsIDEwODQyNywgMTA4NDMxLCAxMDg0MzgsIDEwODQ0MiwgMTA4NDQ4LCAxMDg0NTQsIDEwODQ2MiwgMTA4NDY2LCAKKyAgICAxMDg0NzMsIDEwODQ4MSwgMTA4NDg1LCAxMDg0ODksIDEwODQ5NSwgMTA4NDk5LCAxMDg1MDgsIDEwODUxNywgMTA4NTI0LCAKKyAgICAxMDg1MzQsIDEwODU0MCwgMTA4NTQ0LCAxMDg1NDgsIDEwODU1NiwgMTA4NTYzLCAxMDg1NzAsIDEwODU3NiwgMTA4NTgwLCAKKyAgICAxMDg1ODgsIDEwODU5MiwgMTA4NTk5LCAxMDg2MTEsIDEwODYxOCwgMTA4NjI4LCAxMDg2MzQsIDEwODYzOCwgMTA4NjQ3LCAKKyAgICAxMDg2NTQsIDEwODY2MywgMTA4NjY3LCAxMDg2NzEsIDEwODY3OCwgMTA4NjgyLCAxMDg2ODYsIDEwODY5MCwgMTA4Njk0LCAKKyAgICAxMDg2OTcsIDEwODcwMywgMTA4NzA5LCAxMDg3MTMsIDEwODcxNywgMTA4NzI0LCAxMDg3MzEsIDEwODczOCwgMTA4NzQ1LCAKKyAgICAxMDg3NTIsIDEwODc1OSwgMTA4NzY2LCAxMDg3NzMsIDEwODc3OSwgMTA4NzgzLCAxMDg3ODcsIDEwODc5NCwgMTA4ODAxLCAKKyAgICAxMDg4MDgsIDEwODgxNSwgMTA4ODIyLCAxMDg4MjYsIDEwODgyOSwgMTA4ODM0LCAxMDg4MzgsIDEwODg0MiwgMTA4ODUxLCAKKyAgICAxMDg4NjAsIDEwODg2NCwgMTA4ODY4LCAxMDg4NzQsIDEwODg4MCwgMTA4ODk3LCAxMDg5MDMsIDEwODkwNywgMTA4OTE2LCAKKyAgICAxMDg5MjAsIDEwODkyNCwgMTA4OTMxLCAxMDg5MzksIDEwODk0NywgMTA4OTUzLCAxMDg5NTcsIDEwODk2MSwgMTA4OTY1LCAKKyAgICAxMDg5NjksIDEwODk3MiwgMTA4OTc4LCAxMDg5ODUsIDEwODk5NSwgMTA5MDAyLCAxMDkwMDksIDEwOTAxNiwgMTA5MDIyLCAKKyAgICAxMDkwMjksIDEwOTAzNiwgMTA5MDQzLCAxMDkwNTAsIDEwOTA1NywgMTA5MDY2LCAxMDkwNzMsIDEwOTA4NSwgMTA5MDkyLCAKKyAgICAxMDkwOTksIDEwOTEwOSwgMTA5MTIwLCAxMDkxMjcsIDEwOTEzNCwgMTA5MTQxLCAxMDkxNDgsIDEwOTE1NSwgMTA5MTYyLCAKKyAgICAxMDkxNjksIDEwOTE3NiwgMTA5MTgzLCAxMDkxOTAsIDEwOTIwMCwgMTA5MjEwLCAxMDkyMjAsIDEwOTIyNywgMTA5MjM3LCAKKyAgICAxMDkyNDQsIDEwOTI1MSwgMTA5MjU4LCAxMDkyNjUsIDEwOTI3MiwgMTA5Mjc5LCAxMDkyODYsIDEwOTI5MywgMTA5MzAwLCAKKyAgICAxMDkzMDcsIDEwOTMxNCwgMTA5MzIxLCAxMDkzMjgsIDEwOTMzNCwgMTA5MzQxLCAxMDkzNDgsIDEwOTM1NywgMTA5MzY0LCAKKyAgICAxMDkzNzEsIDEwOTM3NSwgMTA5MzgzLCAxMDkzODcsIDEwOTM5MSwgMTA5Mzk1LCAxMDkzOTksIDEwOTQwMywgMTA5NDEwLCAKKyAgICAxMDk0MTQsIDEwOTQyMywgMTA5NDI3LCAxMDk0MzQsIDEwOTQ0MiwgMTA5NDQ2LCAxMDk0NTAsIDEwOTQ1NCwgMTA5NDY3LCAKKyAgICAxMDk0ODMsIDEwOTQ4NywgMTA5NDkxLCAxMDk0OTgsIDEwOTUwNCwgMTA5NTExLCAxMDk1MTUsIDEwOTUxOSwgMTA5NTIzLCAKKyAgICAxMDk1MjcsIDEwOTUzMSwgMTA5NTM4LCAxMDk1NDIsIDEwOTU2MCwgMTA5NTY0LCAxMDk1NjgsIDEwOTU3NSwgMTA5NTc5LCAKKyAgICAxMDk1ODMsIDEwOTU4OSwgMTA5NTkzLCAxMDk1OTcsIDEwOTYwNSwgMTA5NjA5LCAxMDk2MTMsIDEwOTYxNywgMTA5NjIxLCAKKyAgICAxMDk2MjcsIDEwOTYzOCwgMTA5NjQ3LCAxMDk2NTYsIDEwOTY2MywgMTA5NjcwLCAxMDk2ODEsIDEwOTY4OCwgMTA5Njk1LCAKKyAgICAxMDk3MDIsIDEwOTcwOSwgMTA5NzE2LCAxMDk3MjMsIDEwOTczMCwgMTA5NzQwLCAxMDk3NDYsIDEwOTc1MywgMTA5NzYzLCAKKyAgICAxMDk3NzIsIDEwOTc3OSwgMTA5Nzg4LCAxMDk3OTgsIDEwOTgwNSwgMTA5ODEyLCAxMDk4MTksIDEwOTgyNiwgMTA5ODM4LCAKKyAgICAxMDk4NDUsIDEwOTg1MiwgMTA5ODU5LCAxMDk4NjYsIDEwOTg3MywgMTA5ODgzLCAxMDk4OTAsIDEwOTg5NywgMTA5OTA3LCAKKyAgICAxMDk5MjAsIDEwOTkzMiwgMTA5OTM5LCAxMDk5NDksIDEwOTk1NiwgMTA5OTYzLCAxMDk5NzAsIDEwOTk4NCwgMTA5OTkwLCAKKyAgICAxMDk5OTgsIDExMDAwOCwgMTEwMDE4LCAxMTAwMjUsIDExMDAzMiwgMTEwMDM4LCAxMTAwNDIsIDExMDA0OSwgMTEwMDU5LCAKKyAgICAxMTAwNjUsIDExMDA3OCwgMTEwMDgyLCAxMTAwODYsIDExMDA5MywgMTEwMDk3LCAxMTAxMDQsIDExMDExNCwgMTEwMTE4LCAKKyAgICAxMTAxMjIsIDExMDEyNiwgMTEwMTMwLCAxMTAxMzQsIDExMDE0MSwgMTEwMTQ1LCAxMTAxNTIsIDExMDE1OSwgMTEwMTY2LCAKKyAgICAxMTAxNzUsIDExMDE4NCwgMTEwMTk0LCAxMTAyMDEsIDExMDIwOCwgMTEwMjE1LCAxMTAyMjUsIDExMDIzMiwgMTEwMjQyLCAKKyAgICAxMTAyNDksIDExMDI1OSwgMTEwMjY2LCAxMTAyNzMsIDExMDI4MywgMTEwMjkzLCAxMTAzMDAsIDExMDMwNiwgMTEwMzE0LCAKKyAgICAxMTAzMjIsIDExMDMyOCwgMTEwMzM0LCAxMTAzMzgsIDExMDM0MiwgMTEwMzQ5LCAxMTAzNTcsIDExMDM2MywgMTEwMzY3LCAKKyAgICAxMTAzNzEsIDExMDM3NSwgMTEwMzgyLCAxMTAzOTQsIDExMDM5NywgMTEwNDA0LCAxMTA0MTAsIDExMDQxNCwgMTEwNDE4LCAKKyAgICAxMTA0MjIsIDExMDQyNiwgMTEwNDMwLCAxMTA0MzQsIDExMDQzOCwgMTEwNDQyLCAxMTA0NDYsIDExMDQ1MCwgMTEwNDU3LCAKKyAgICAxMTA0NjEsIDExMDQ2NywgMTEwNDcxLCAxMTA0NzUsIDExMDQ3OSwgMTEwNDg1LCAxMTA0OTIsIDExMDQ5OSwgMTEwNTA2LCAKKyAgICAxMTA1MTcsIDExMDUyNSwgMTEwNTI5LCAxMTA1MzUsIDExMDU0NCwgMTEwNTUxLCAxMTA1NTcsIDExMDU2MCwgMTEwNTY0LCAKKyAgICAxMTA1NjgsIDExMDU3NCwgMTEwNTgzLCAxMTA1OTEsIDExMDU5NSwgMTEwNjAxLCAxMTA2MDUsIDExMDYwOSwgMTEwNjEzLCAKKyAgICAxMTA2MTksIDExMDYyNiwgMTEwNjMyLCAxMTA2MzYsIDExMDY0MiwgMTEwNjQ2LCAxMTA2NTAsIDExMDY1OSwgMTEwNjcxLCAKKyAgICAxMTA2NzUsIDExMDY4MiwgMTEwNjg5LCAxMTA2OTksIDExMDcwNiwgMTEwNzE4LCAxMTA3MjUsIDExMDczMiwgMTEwNzM5LCAKKyAgICAxMTA3NTAsIDExMDc2MCwgMTEwNzczLCAxMTA3ODMsIDExMDc5MCwgMTEwNzk0LCAxMTA3OTgsIDExMDgwMiwgMTEwODA2LCAKKyAgICAxMTA4MTUsIDExMDgyNCwgMTEwODMzLCAxMTA4NTAsIDExMDg1OSwgMTEwODY1LCAxMTA4NzIsIDExMDg4MCwgMTEwODkzLCAKKyAgICAxMTA4OTcsIDExMDkwNiwgMTEwOTE1LCAxMTA5MjQsIDExMDkzMywgMTEwOTQ0LCAxMTA5NTMsIDExMDk2MiwgMTEwOTcxLCAKKyAgICAxMTA5ODAsIDExMDk4OSwgMTEwOTk4LCAxMTEwMDgsIDExMTAxMSwgMTExMDE1LCAxMTEwMTksIDExMTAyMywgMTExMDI3LCAKKyAgICAxMTEwMzEsIDExMTAzNywgMTExMDQ0LCAxMTEwNTEsIDExMTA1OCwgMTExMDY0LCAxMTEwNzAsIDExMTA3NywgMTExMDgzLCAKKyAgICAxMTEwOTAsIDExMTA5OCwgMTExMTAyLCAxMTExMDksIDExMTExNiwgMTExMTIzLCAxMTExMzEsIDExMTEzNSwgMTExMTM5LCAKKyAgICAxMTExNDMsIDExMTE0NywgMTExMTUxLCAxMTExNTcsIDExMTE2MSwgMTExMTY3LCAxMTExNzQsIDExMTE4MSwgMTExMTg3LCAKKyAgICAxMTExOTQsIDExMTIwMSwgMTExMjA4LCAxMTEyMTUsIDExMTIyMiwgMTExMjI5LCAxMTEyMzYsIDExMTI0MywgMTExMjUwLCAKKyAgICAxMTEyNTcsIDExMTI2NCwgMTExMjcxLCAxMTEyNzgsIDExMTI4NSwgMTExMjkxLCAxMTEyOTUsIDExMTMwNCwgMTExMzA4LCAKKyAgICAxMTEzMTIsIDExMTMxNiwgMTExMzIwLCAxMTEzMjYsIDExMTMzMywgMTExMzQwLCAxMTEzNDcsIDExMTM1NCwgMTExMzYxLCAKKyAgICAxMTEzNjcsIDExMTM3NSwgMTExMzc5LCAxMTEzODMsIDExMTM4NywgMTExMzkxLCAxMTEzOTcsIDExMTQxNCwgMTExNDMxLCAKKyAgICAxMTE0MzUsIDExMTQzOSwgMTExNDQzLCAxMTE0NDcsIDExMTQ1MSwgMTExNDU1LCAxMTE0NjEsIDExMTQ2OCwgMTExNDcyLCAKKyAgICAxMTE0NzgsIDExMTQ4NSwgMTExNDkyLCAxMTE0OTksIDExMTUwNiwgMTExNTEzLCAxMTE1MjIsIDExMTUyOSwgMTExNTM2LCAKKyAgICAxMTE1NDMsIDExMTU1MCwgMTExNTU0LCAxMTE1NTgsIDExMTU2NCwgMTExNTc2LCAxMTE1ODAsIDExMTU4NCwgMTExNTkzLCAKKyAgICAxMTE1OTcsIDExMTYwMSwgMTExNjA1LCAxMTE2MTEsIDExMTYxNSwgMTExNjE5LCAxMTE2MjgsIDExMTYzMiwgMTExNjM2LCAKKyAgICAxMTE2NDAsIDExMTY0NywgMTExNjUxLCAxMTE2NTUsIDExMTY1OSwgMTExNjYzLCAxMTE2NjcsIDExMTY3MSwgMTExNjc1LCAKKyAgICAxMTE2NzksIDExMTY4NSwgMTExNjkyLCAxMTE2OTksIDExMTcwNSwgMTExNzA5LCAxMTE3MjYsIDExMTczMiwgMTExNzM2LCAKKyAgICAxMTE3NDIsIDExMTc0OCwgMTExNzU0LCAxMTE3NjAsIDExMTc2NiwgMTExNzcyLCAxMTE3NzYsIDExMTc4MCwgMTExNzg0LCAKKyAgICAxMTE3OTAsIDExMTc5NCwgMTExODAwLCAxMTE4MDQsIDExMTgwOCwgMTExODE1LCAxMTE4MjIsIDExMTgzOSwgMTExODQzLCAKKyAgICAxMTE4NDcsIDExMTg1MSwgMTExODU1LCAxMTE4NTksIDExMTg3MSwgMTExODc0LCAxMTE4NzksIDExMTg4NCwgMTExODk5LCAKKyAgICAxMTE5MDksIDExMTkyMSwgMTExOTI1LCAxMTE5MjksIDExMTkzMywgMTExOTM5LCAxMTE5NDYsIDExMTk1MywgMTExOTYzLCAKKyAgICAxMTE5NzUsIDExMTk4MSwgMTExOTg3LCAxMTE5OTYsIDExMjAwMCwgMTEyMDA0LCAxMTIwMTEsIDExMjAyMSwgMTEyMDI4LCAKKyAgICAxMTIwMzQsIDExMjAzOCwgMTEyMDQyLCAxMTIwNDksIDExMjA1NSwgMTEyMDU5LCAxMTIwNjUsIDExMjA2OSwgMTEyMDc3LCAKKyAgICAxMTIwODMsIDExMjA4NywgMTEyMDk1LCAxMTIxMDMsIDExMjExMCwgMTEyMTE2LCAxMTIxMjMsIDExMjEzMCwgMTEyMTQwLCAKKyAgICAxMTIxNTAsIDExMjE1NCwgMTEyMTU4LCAxMTIxNjIsIDExMjE2NiwgMTEyMTcyLCAxMTIxNzksIDExMjE4NSwgMTEyMTkyLCAKKyAgICAxMTIxOTksIDExMjIwNiwgMTEyMjE1LCAxMTIyMjIsIDExMjIyOSwgMTEyMjM1LCAxMTIyNDIsIDExMjI0OSwgMTEyMjU2LCAKKyAgICAxMTIyNjMsIDExMjI3MCwgMTEyMjc3LCAxMTIyODMsIDExMjI5MCwgMTEyMjk3LCAxMTIzMDQsIDExMjMxMywgMTEyMzIwLCAKKyAgICAxMTIzMjcsIDExMjMzMSwgMTEyMzM3LCAxMTIzNDEsIDExMjM0NywgMTEyMzU0LCAxMTIzNjEsIDExMjM2OCwgMTEyMzcyLCAKKyAgICAxMTIzNzYsIDExMjM4MCwgMTEyMzg0LCAxMTIzODgsIDExMjM5NSwgMTEyMzk5LCAxMTI0MDMsIDExMjQwOSwgMTEyNDE3LCAKKyAgICAxMTI0MjEsIDExMjQyNSwgMTEyNDI5LCAxMTI0MzMsIDExMjQ0MCwgMTEyNDQ0LCAxMTI0NDgsIDExMjQ1NiwgMTEyNDYwLCAKKyAgICAxMTI0NjQsIDExMjQ2OCwgMTEyNDcyLCAxMTI0NzgsIDExMjQ4MiwgMTEyNDg2LCAxMTI0OTIsIDExMjQ5OSwgMTEyNTA1LCAKKyAgICAxMTI1MTIsIDExMjUyNCwgMTEyNTI4LCAxMTI1MzUsIDExMjU0MiwgMTEyNTQ5LCAxMTI1NTYsIDExMjU2OCwgMTEyNTc1LCAKKyAgICAxMTI1NzksIDExMjU4MywgMTEyNTg3LCAxMTI1OTQsIDExMjYwMSwgMTEyNjA4LCAxMTI2MTUsIDExMjYyNSwgMTEyNjMyLCAKKyAgICAxMTI2MzgsIDExMjY0NSwgMTEyNjUyLCAxMTI2NTksIDExMjY2NiwgMTEyNjc1LCAxMTI2ODUsIDExMjY5MiwgMTEyNjk2LCAKKyAgICAxMTI3MDMsIDExMjcwNywgMTEyNzExLCAxMTI3MTUsIDExMjcyMiwgMTEyNzI5LCAxMTI3MzksIDExMjc0NSwgMTEyNzQ5LCAKKyAgICAxMTI3NTgsIDExMjc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyNzY5LCAxMTI3NzUsIDExMjc4MSwgMTEyNzg4LCAKKyAgICAxMTI3OTUsIDExMjgwMiwgMTEyODA5LCAxMTI4MTYsIDExMjgyMywgMTEyODI5LCAxMTI4MzYsIDExMjg0MywgMTEyODUwLCAKKyAgICAxMTI4NTcsIDExMjg2NCwgMTEyODcxLCAxMTI4NzcsIDExMjg4MywgMTEyODg5LCAxMTI4OTUsIDExMjkwMSwgMTEyOTA3LCAKKyAgICAxMTI5MTMsIDExMjkxOSwgMTEyOTI1LCAxMTI5MzIsIDExMjkzOSwgMTEyOTQ2LCAxMTI5NTMsIDExMjk2MCwgMTEyOTY3LCAKKyAgICAxMTI5NzMsIDExMjk3OSwgMTEyOTg1LCAxMTI5OTIsIDExMjk5OSwgMTEzMDA1LCAxMTMwMTEsIDExMzAyMCwgMTEzMDI3LCAKKyAgICAxMTMwMzQsIDExMzA0MSwgMTEzMDQ4LCAxMTMwNTUsIDExMzA2MiwgMTEzMDY4LCAxMTMwNzQsIDExMzA4MCwgMTEzMDg5LCAKKyAgICAxMTMwOTYsIDExMzEwMywgMTEzMTE0LCAxMTMxMjUsIDExMzEzMSwgMTEzMTM3LCAxMTMxNDMsIDExMzE1MiwgMTEzMTU5LCAKKyAgICAxMTMxNjYsIDExMzE3NiwgMTEzMTg2LCAxMTMxOTcsIDExMzIwOCwgMTEzMjIwLCAxMTMyMzMsIDExMzI0NCwgMTEzMjU1LCAKKyAgICAxMTMyNjcsIDExMzI4MCwgMTEzMjkxLCAxMTMzMDIsIDExMzMxMywgMTEzMzI0LCAxMTMzMzUsIDExMzM0NywgMTEzMzU1LCAKKyAgICAxMTMzNjMsIDExMzM3MiwgMTEzMzgxLCAxMTMzOTAsIDExMzM5NiwgMTEzNDAyLCAxMTM0MDgsIDExMzQxNSwgMTEzNDI1LCAKKyAgICAxMTM0MzIsIDExMzQ0MiwgMTEzNDQ3LCAxMTM0NTIsIDExMzQ1OCwgMTEzNDY0LCAxMTM0NzIsIDExMzQ4MCwgMTEzNDg5LCAKKyAgICAxMTM1MDAsIDExMzUxMSwgMTEzNTE5LCAxMTM1MjcsIDExMzUzNiwgMTEzNTQ1LCAxMTM1NTMsIDExMzU2MCwgMTEzNTY4LCAKKyAgICAxMTM1NzYsIDExMzU4MywgMTEzNTkwLCAxMTM1OTksIDExMzYwOCwgMTEzNjE3LCAxMTM2MjYsIDExMzYzNSwgMCwgCisgICAgMTEzNjQ0LCAxMTM2NTUsIDExMzY2MiwgMTEzNjcwLCAxMTM2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMzY4NiwgMTEzNjkwLCAxMTM2OTQsIDExMzY5OCwgMTEzNzAyLCAxMTM3MDYsIAorICAgIDExMzcxMCwgMTEzNzE0LCAxMTM3MTgsIDExMzcyMiwgMTEzNzI2LCAxMTM3MzAsIDExMzczNCwgMTEzNzM4LCAxMTM3NDIsIAorICAgIDExMzc0NiwgMTEzNzUwLCAxMTM3NTQsIDExMzc1OCwgMTEzNzYyLCAxMTM3NjYsIDExMzc3MCwgMTEzNzc0LCAxMTM3NzgsIAorICAgIDExMzc4MiwgMTEzNzg2LCAxMTM3OTAsIDExMzc5NCwgMTEzNzk4LCAxMTM4MDIsIDExMzgwNiwgMTEzODEwLCAxMTM4MTQsIAorICAgIDExMzgxOCwgMTEzODIyLCAxMTM4MjYsIDExMzgzMCwgMTEzODM0LCAxMTM4MzgsIDExMzg0MiwgMTEzODQ2LCAxMTM4NTAsIAorICAgIDExMzg1NCwgMTEzODU4LCAxMTM4NjIsIDExMzg2NiwgMTEzODcwLCAxMTM4NzQsIDExMzg3OCwgMTEzODgyLCAxMTM4ODYsIAorICAgIDExMzg5MCwgMTEzODk0LCAxMTM4OTgsIDExMzkwMiwgMTEzOTA2LCAxMTM5MTAsIDExMzkxNCwgMTEzOTE4LCAxMTM5MjIsIAorICAgIDExMzkyNiwgMTEzOTMwLCAxMTM5MzQsIDExMzkzOCwgMTEzOTQyLCAxMTM5NDYsIDExMzk1MCwgMTEzOTU0LCAxMTM5NTgsIAorICAgIDExMzk2MiwgMTEzOTY2LCAxMTM5NzAsIDExMzk3NCwgMTEzOTc4LCAxMTM5ODIsIDExMzk4NiwgMTEzOTkwLCAxMTM5OTQsIAorICAgIDExMzk5OCwgMTE0MDAyLCAxMTQwMDYsIDExNDAxMCwgMTE0MDE0LCAxMTQwMTgsIDExNDAyMiwgMTE0MDI2LCAxMTQwMzAsIAorICAgIDExNDAzNCwgMTE0MDM4LCAxMTQwNDIsIDExNDA0NiwgMTE0MDUwLCAxMTQwNTQsIDExNDA1OCwgMTE0MDYyLCAxMTQwNjYsIAorICAgIDExNDA3MCwgMTE0MDc0LCAxMTQwNzgsIDExNDA4MiwgMTE0MDg2LCAxMTQwOTAsIDExNDA5NCwgMTE0MDk4LCAxMTQxMDIsIAorICAgIDExNDEwNiwgMTE0MTEwLCAxMTQxMTQsIDExNDExOCwgMTE0MTIyLCAxMTQxMjYsIDExNDEzMCwgMTE0MTM0LCAxMTQxMzgsIAorICAgIDExNDE0MiwgMTE0MTQ2LCAxMTQxNTAsIDExNDE1NCwgMTE0MTU4LCAxMTQxNjIsIDExNDE2NiwgMTE0MTcwLCAxMTQxNzQsIAorICAgIDExNDE3OCwgMTE0MTgyLCAxMTQxODYsIDExNDE5MCwgMTE0MTk0LCAxMTQxOTgsIDExNDIwMiwgMTE0MjA2LCAxMTQyMTAsIAorICAgIDExNDIxNCwgMTE0MjE4LCAxMTQyMjIsIDExNDIyNiwgMTE0MjMwLCAxMTQyMzQsIDExNDIzOCwgMTE0MjQyLCAxMTQyNDYsIAorICAgIDExNDI1MCwgMTE0MjU0LCAxMTQyNTgsIDExNDI2MiwgMTE0MjY2LCAxMTQyNzAsIDExNDI3NCwgMTE0Mjc4LCAxMTQyODIsIAorICAgIDExNDI4NiwgMTE0MjkwLCAxMTQyOTQsIDExNDI5OCwgMTE0MzAyLCAxMTQzMDYsIDExNDMxMCwgMTE0MzE0LCAxMTQzMTgsIAorICAgIDExNDMyMiwgMTE0MzI2LCAxMTQzMzAsIDExNDMzNCwgMTE0MzM4LCAxMTQzNDIsIDExNDM0NiwgMTE0MzUwLCAxMTQzNTQsIAorICAgIDExNDM1OCwgMTE0MzYyLCAxMTQzNjYsIDExNDM3MCwgMTE0Mzc0LCAxMTQzNzgsIDExNDM4MiwgMTE0Mzg2LCAxMTQzOTAsIAorICAgIDExNDM5NCwgMTE0Mzk4LCAxMTQ0MDIsIDExNDQwNiwgMTE0NDEwLCAxMTQ0MTQsIDExNDQxOCwgMTE0NDIyLCAxMTQ0MjYsIAorICAgIDExNDQzMCwgMTE0NDM0LCAxMTQ0MzgsIDExNDQ0MiwgMTE0NDQ2LCAxMTQ0NTAsIDExNDQ1NCwgMTE0NDU4LCAxMTQ0NjIsIAorICAgIDExNDQ2NiwgMTE0NDcwLCAxMTQ0NzQsIDExNDQ3OCwgMTE0NDgyLCAxMTQ0ODYsIDExNDQ5MCwgMTE0NDk0LCAxMTQ0OTgsIAorICAgIDExNDUwMiwgMTE0NTA2LCAxMTQ1MTAsIDExNDUxNCwgMTE0NTE4LCAxMTQ1MjIsIDExNDUyNiwgMTE0NTMwLCAxMTQ1MzQsIAorICAgIDExNDUzOCwgMTE0NTQyLCAxMTQ1NDYsIDExNDU1MCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzAsIAorICAgIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODIsIDExNDU4NiwgMTE0NTkwLCAxMTQ1OTQsIDExNDU5OCwgMTE0NjAyLCAxMTQ2MDYsIAorICAgIDExNDYxMCwgMTE0NjE0LCAxMTQ2MTgsIDExNDYyMiwgMTE0NjI2LCAxMTQ2MzAsIDExNDYzNCwgMTE0NjM4LCAxMTQ2NDIsIAorICAgIDExNDY0NiwgMTE0NjUwLCAxMTQ2NTQsIDExNDY1OCwgMTE0NjYyLCAxMTQ2NjYsIDExNDY3MCwgMTE0Njc0LCAxMTQ2NzgsIAorICAgIDExNDY4MiwgMTE0Njg2LCAxMTQ2OTAsIDExNDY5NCwgMTE0Njk4LCAxMTQ3MDIsIDExNDcwNiwgMTE0NzEwLCAxMTQ3MTQsIAorICAgIDExNDcxOCwgMTE0NzIyLCAxMTQ3MjYsIDExNDczMCwgMTE0NzM0LCAxMTQ3MzgsIDExNDc0MiwgMTE0NzQ2LCAxMTQ3NTAsIAorICAgIDExNDc1NCwgMTE0NzU4LCAxMTQ3NjIsIDExNDc2NiwgMTE0NzcwLCAxMTQ3NzQsIDExNDc3OCwgMTE0NzgyLCAxMTQ3ODYsIAorICAgIDExNDc5MCwgMTE0Nzk0LCAxMTQ3OTgsIDExNDgwMiwgMTE0ODA2LCAxMTQ4MTAsIDExNDgxNCwgMTE0ODE4LCAxMTQ4MjIsIAorICAgIDExNDgyNiwgMTE0ODMwLCAxMTQ4MzQsIDExNDgzOCwgMTE0ODQyLCAxMTQ4NDYsIDExNDg1MCwgMTE0ODU0LCAxMTQ4NTgsIAorICAgIDExNDg2MiwgMTE0ODY2LCAxMTQ4NzAsIDExNDg3NCwgMTE0ODc4LCAxMTQ4ODIsIDExNDg4NiwgMTE0ODkwLCAxMTQ4OTQsIAorICAgIDExNDg5OCwgMTE0OTAyLCAxMTQ5MDYsIDExNDkxMCwgMTE0OTE0LCAxMTQ5MTgsIDExNDkyMiwgMTE0OTI2LCAxMTQ5MzAsIAorICAgIDExNDkzNCwgMTE0OTM4LCAxMTQ5NDIsIDExNDk0NiwgMTE0OTUwLCAxMTQ5NTQsIDExNDk1OCwgMTE0OTYyLCAxMTQ5NjYsIAorICAgIDExNDk3MCwgMTE0OTc0LCAxMTQ5NzgsIDExNDk4MiwgMTE0OTg2LCAxMTQ5OTAsIDExNDk5NCwgMTE0OTk4LCAxMTUwMDIsIAorICAgIDExNTAwNiwgMTE1MDEwLCAxMTUwMTQsIDExNTAxOCwgMTE1MDIyLCAxMTUwMjYsIDExNTAzMCwgMTE1MDM0LCAxMTUwMzgsIAorICAgIDExNTA0MiwgMTE1MDQ2LCAxMTUwNTAsIDExNTA1NCwgMTE1MDU4LCAxMTUwNjIsIDExNTA2NiwgMTE1MDcwLCAxMTUwNzQsIAorICAgIDExNTA3OCwgMTE1MDgyLCAxMTUwODYsIDExNTA5MCwgMTE1MDk0LCAxMTUwOTgsIDExNTEwMiwgMTE1MTA2LCAxMTUxMTAsIAorICAgIDExNTExNCwgMTE1MTE4LCAxMTUxMjIsIDExNTEyNiwgMTE1MTMwLCAxMTUxMzQsIDExNTEzOCwgMTE1MTQyLCAxMTUxNDYsIAorICAgIDExNTE1MCwgMTE1MTU0LCAxMTUxNTgsIDExNTE2MiwgMTE1MTY2LCAxMTUxNzAsIDExNTE3NCwgMTE1MTc4LCAxMTUxODIsIAorICAgIDExNTE4NiwgMTE1MTkwLCAxMTUxOTQsIDExNTE5OCwgMTE1MjAyLCAxMTUyMDYsIDExNTIxMCwgMTE1MjE0LCAxMTUyMTgsIAorICAgIDExNTIyMiwgMTE1MjI2LCAxMTUyMzAsIDExNTIzNCwgMTE1MjM4LCAxMTUyNDIsIDExNTI0NiwgMTE1MjUwLCAxMTUyNTQsIAorICAgIDExNTI1OCwgMTE1MjYyLCAxMTUyNjYsIDExNTI3MCwgMTE1Mjc0LCAxMTUyNzgsIDExNTI4MiwgMTE1Mjg2LCAxMTUyOTAsIAorICAgIDExNTI5NCwgMTE1Mjk4LCAxMTUzMDIsIDExNTMwNiwgMTE1MzEwLCAxMTUzMTQsIDExNTMxOCwgMTE1MzIyLCAxMTUzMjYsIAorICAgIDExNTMzMCwgMTE1MzM0LCAxMTUzMzgsIDExNTM0MiwgMTE1MzQ2LCAxMTUzNTAsIDExNTM1NCwgMTE1MzU4LCAxMTUzNjIsIAorICAgIDExNTM2NiwgMTE1MzcwLCAxMTUzNzQsIDExNTM3OCwgMTE1MzgyLCAxMTUzODYsIDExNTM5MCwgMTE1Mzk0LCAxMTUzOTgsIAorICAgIDExNTQwMiwgMTE1NDA2LCAxMTU0MTAsIDExNTQxNCwgMTE1NDE4LCAxMTU0MjIsIDExNTQyNiwgMTE1NDMwLCAxMTU0MzQsIAorICAgIDExNTQzOCwgMTE1NDQyLCAxMTU0NDYsIDExNTQ1MCwgMTE1NDU0LCAxMTU0NTgsIDExNTQ2MiwgMTE1NDY2LCAxMTU0NzAsIAorICAgIDExNTQ3NCwgMTE1NDc4LCAxMTU0ODIsIDExNTQ4NiwgMTE1NDkwLCAxMTU0OTQsIDExNTQ5OCwgMTE1NTAyLCAxMTU1MDYsIAorICAgIDExNTUxMCwgMTE1NTE0LCAxMTU1MTgsIDExNTUyMiwgMTE1NTI2LCAxMTU1MzAsIDExNTUzNCwgMTE1NTM4LCAxMTU1NDIsIAorICAgIDExNTU0NiwgMTE1NTUwLCAxMTU1NTQsIDExNTU1OCwgMTE1NTYyLCAxMTU1NjYsIDExNTU3MCwgMTE1NTc0LCAxMTU1NzgsIAorICAgIDExNTU4MiwgMTE1NTg2LCAxMTU1OTAsIDExNTU5NCwgMTE1NTk4LCAxMTU2MDIsIDExNTYwNiwgMTE1NjEwLCAxMTU2MTQsIAorICAgIDExNTYxOCwgMTE1NjIyLCAxMTU2MjYsIDExNTYzMCwgMTE1NjM0LCAxMTU2MzgsIDExNTY0MiwgMTE1NjQ2LCAxMTU2NTAsIAorICAgIDExNTY1NCwgMTE1NjU4LCAxMTU2NjIsIDExNTY2NiwgMTE1NjcwLCAxMTU2NzQsIDExNTY3OCwgMTE1NjgyLCAxMTU2ODYsIAorICAgIDExNTY5MCwgMTE1Njk0LCAxMTU2OTgsIDExNTcwMiwgMTE1NzA2LCAxMTU3MTAsIDExNTcxNCwgMTE1NzE4LCAxMTU3MjIsIAorICAgIDExNTcyNiwgMTE1NzMwLCAxMTU3MzQsIDExNTczOCwgMTE1NzQyLCAxMTU3NDYsIDExNTc1MCwgMTE1NzU0LCAxMTU3NTgsIAorICAgIDExNTc2MiwgMTE1NzY2LCAxMTU3NzAsIDExNTc3NCwgMTE1Nzc4LCAxMTU3ODIsIDExNTc4NiwgMTE1NzkwLCAxMTU3OTQsIAorICAgIDExNTc5OCwgMTE1ODAyLCAxMTU4MDYsIDExNTgxMCwgMTE1ODE0LCAxMTU4MTgsIDExNTgyMiwgMTE1ODI2LCAxMTU4MzAsIAorICAgIDExNTgzNCwgMTE1ODM4LCAxMTU4NDIsIDExNTg0NiwgMTE1ODUwLCAxMTU4NTQsIDExNTg1OCwgMTE1ODYyLCAxMTU4NjYsIAorICAgIDExNTg3MCwgMTE1ODc0LCAxMTU4NzgsIDExNTg4MiwgMTE1ODg2LCAxMTU4OTAsIDExNTg5NCwgMTE1ODk4LCAxMTU5MDIsIAorICAgIDExNTkwNiwgMTE1OTEwLCAxMTU5MTQsIDExNTkxOCwgMTE1OTIyLCAxMTU5MjYsIDExNTkzMCwgMTE1OTM0LCAxMTU5MzgsIAorICAgIDExNTk0MiwgMTE1OTQ2LCAxMTU5NTAsIDExNTk1NCwgMTE1OTU4LCAxMTU5NjIsIDExNTk2NiwgMTE1OTcwLCAxMTU5NzQsIAorICAgIDExNTk3OCwgMTE1OTgyLCAxMTU5ODYsIDExNTk5MCwgMTE1OTk0LCAxMTU5OTgsIDExNjAwMiwgMTE2MDA2LCAxMTYwMTAsIAorICAgIDExNjAxNCwgMTE2MDE4LCAxMTYwMjIsIDExNjAyNiwgMTE2MDMwLCAxMTYwMzQsIDExNjAzOCwgMTE2MDQyLCAxMTYwNDYsIAorICAgIDExNjA1MCwgMTE2MDU0LCAxMTYwNTgsIDExNjA2MiwgMTE2MDY2LCAxMTYwNzAsIDExNjA3NCwgMTE2MDc4LCAxMTYwODIsIAorICAgIDExNjA4NiwgMTE2MDkwLCAxMTYwOTQsIDExNjA5OCwgMTE2MTAyLCAxMTYxMDYsIDExNjExMCwgMTE2MTE0LCAxMTYxMTgsIAorICAgIDExNjEyMiwgMTE2MTI2LCAxMTYxMzAsIDExNjEzNCwgMTE2MTM4LCAxMTYxNDIsIDExNjE0NiwgMTE2MTUwLCAxMTYxNTQsIAorICAgIDExNjE1OCwgMTE2MTYyLCAxMTYxNjYsIDExNjE3MCwgMTE2MTc0LCAxMTYxNzgsIDExNjE4MiwgMTE2MTg2LCAxMTYxOTAsIAorICAgIDExNjE5NCwgMTE2MTk4LCAxMTYyMDIsIDExNjIwNiwgMTE2MjEwLCAxMTYyMTQsIDExNjIxOCwgMTE2MjIyLCAxMTYyMjYsIAorICAgIDExNjIzMCwgMTE2MjM0LCAxMTYyMzgsIDExNjI0MiwgMTE2MjQ2LCAxMTYyNTAsIDExNjI1NCwgMTE2MjU4LCAxMTYyNjIsIAorICAgIDExNjI2NiwgMTE2MjcwLCAxMTYyNzQsIDExNjI3OCwgMTE2MjgyLCAxMTYyODYsIDExNjI5MCwgMTE2Mjk0LCAxMTYyOTgsIAorICAgIDExNjMwMiwgMTE2MzA2LCAxMTYzMTAsIDExNjMxNCwgMTE2MzE4LCAxMTYzMjIsIDExNjMyNiwgMTE2MzMwLCAxMTYzMzQsIAorICAgIDExNjMzOCwgMTE2MzQyLCAxMTYzNDYsIDExNjM1MCwgMTE2MzU0LCAxMTYzNTgsIDExNjM2MiwgMTE2MzY2LCAxMTYzNzAsIAorICAgIDExNjM3NCwgMTE2Mzc4LCAxMTYzODIsIDExNjM4NiwgMTE2MzkwLCAxMTYzOTQsIDExNjM5OCwgMTE2NDAyLCAxMTY0MDYsIAorICAgIDExNjQxMCwgMTE2NDE0LCAxMTY0MTgsIDExNjQyMiwgMTE2NDI2LCAxMTY0MzAsIDExNjQzNCwgMTE2NDM4LCAxMTY0NDIsIAorICAgIDExNjQ0NiwgMTE2NDUwLCAxMTY0NTQsIDExNjQ1OCwgMTE2NDYyLCAxMTY0NjYsIDExNjQ3MCwgMTE2NDc0LCAxMTY0NzgsIAorICAgIDExNjQ4MiwgMTE2NDg2LCAxMTY0OTAsIDExNjQ5NCwgMTE2NDk4LCAxMTY1MDIsIDExNjUwNiwgMTE2NTEwLCAxMTY1MTQsIAorICAgIDExNjUxOCwgMTE2NTIyLCAxMTY1MjYsIDExNjUzMCwgMTE2NTM0LCAxMTY1MzgsIDExNjU0MiwgMTE2NTQ2LCAxMTY1NTAsIAorICAgIDExNjU1NCwgMTE2NTU4LCAxMTY1NjIsIDExNjU2NiwgMTE2NTcwLCAxMTY1NzQsIDExNjU3OCwgMTE2NTgyLCAxMTY1ODYsIAorICAgIDExNjU5MCwgMTE2NTk0LCAxMTY1OTgsIDExNjYwMiwgMTE2NjA2LCAxMTY2MTAsIDExNjYxNCwgMTE2NjE4LCAxMTY2MjIsIAorICAgIDExNjYyNiwgMTE2NjMwLCAxMTY2MzQsIDExNjYzOCwgMTE2NjQyLCAxMTY2NDYsIDExNjY1MCwgMTE2NjU0LCAxMTY2NTgsIAorICAgIDExNjY2MiwgMTE2NjY2LCAxMTY2NzAsIDExNjY3NCwgMTE2Njc4LCAxMTY2ODIsIDExNjY4NiwgMTE2NjkwLCAxMTY2OTQsIAorICAgIDExNjY5OCwgMTE2NzAyLCAxMTY3MDYsIDExNjcxMCwgMTE2NzE0LCAxMTY3MTgsIDExNjcyMiwgMTE2NzI2LCAxMTY3MzAsIAorICAgIDExNjczNCwgMTE2NzM4LCAxMTY3NDIsIDExNjc0NiwgMTE2NzUwLCAxMTY3NTQsIDExNjc1OCwgMTE2NzYyLCAxMTY3NjYsIAorICAgIDExNjc3MCwgMTE2Nzc0LCAxMTY3NzgsIDExNjc4MiwgMTE2Nzg2LCAxMTY3OTAsIDExNjc5NCwgMTE2Nzk4LCAxMTY4MDIsIAorICAgIDExNjgwNiwgMTE2ODEwLCAxMTY4MTQsIDExNjgxOCwgMTE2ODIyLCAxMTY4MjYsIDExNjgzMCwgMTE2ODM0LCAxMTY4MzgsIAorICAgIDExNjg0MiwgMTE2ODQ2LCAxMTY4NTAsIDExNjg1NCwgMTE2ODU4LCAxMTY4NjIsIDExNjg2NiwgMTE2ODcwLCAxMTY4NzQsIAorICAgIDExNjg3OCwgMTE2ODgyLCAxMTY4ODYsIDExNjg5MCwgMTE2ODk0LCAxMTY4OTgsIDExNjkwMiwgMTE2OTA2LCAxMTY5MTAsIAorICAgIDExNjkxNCwgMTE2OTE4LCAxMTY5MjIsIDExNjkyNiwgMTE2OTMwLCAxMTY5MzQsIDExNjkzOCwgMTE2OTQyLCAxMTY5NDYsIAorICAgIDExNjk1MCwgMTE2OTU0LCAxMTY5NTgsIDExNjk2MiwgMTE2OTY2LCAxMTY5NzAsIDExNjk3NCwgMTE2OTc4LCAxMTY5ODIsIAorICAgIDExNjk4NiwgMTE2OTkwLCAxMTY5OTQsIDExNjk5OCwgMTE3MDAyLCAxMTcwMDYsIDExNzAxMCwgMTE3MDE0LCAxMTcwMTgsIAorICAgIDExNzAyMiwgMTE3MDI2LCAxMTcwMzAsIDExNzAzNCwgMTE3MDM4LCAxMTcwNDIsIDExNzA0NiwgMTE3MDUwLCAxMTcwNTQsIAorICAgIDExNzA1OCwgMTE3MDYyLCAxMTcwNjYsIDExNzA3MCwgMTE3MDc0LCAxMTcwNzgsIDExNzA4MiwgMTE3MDg2LCAxMTcwOTAsIAorICAgIDExNzA5NCwgMTE3MDk4LCAxMTcxMDIsIDExNzEwNiwgMTE3MTEwLCAxMTcxMTQsIDExNzExOCwgMTE3MTIyLCAxMTcxMjYsIAorICAgIDExNzEzMCwgMTE3MTM0LCAxMTcxMzgsIDExNzE0MiwgMTE3MTQ2LCAxMTcxNTAsIDExNzE1NCwgMTE3MTU4LCAxMTcxNjIsIAorICAgIDExNzE2NiwgMTE3MTcwLCAxMTcxNzQsIDExNzE3OCwgMTE3MTgyLCAxMTcxODYsIDExNzE5MCwgMTE3MTk0LCAxMTcxOTgsIAorICAgIDExNzIwMiwgMTE3MjA2LCAxMTcyMTAsIDExNzIxNCwgMTE3MjE4LCAxMTcyMjIsIDExNzIyNiwgMTE3MjMwLCAxMTcyMzQsIAorICAgIDExNzIzOCwgMTE3MjQyLCAxMTcyNDYsIDExNzI1MCwgMTE3MjU0LCAxMTcyNTgsIDExNzI2MiwgMTE3MjY2LCAxMTcyNzAsIAorICAgIDExNzI3NCwgMTE3Mjc4LCAxMTcyODIsIDExNzI4NiwgMTE3MjkwLCAxMTcyOTQsIDExNzI5OCwgMTE3MzAyLCAxMTczMDYsIAorICAgIDExNzMxMCwgMTE3MzE0LCAxMTczMTgsIDExNzMyMiwgMTE3MzI2LCAxMTczMzAsIDExNzMzNCwgMTE3MzM4LCAxMTczNDIsIAorICAgIDExNzM0NiwgMTE3MzUwLCAxMTczNTQsIDExNzM1OCwgMTE3MzYyLCAxMTczNjYsIDExNzM3MCwgMTE3Mzc0LCAxMTczNzgsIAorICAgIDExNzM4MiwgMTE3Mzg2LCAxMTczOTAsIDExNzM5NCwgMTE3Mzk4LCAxMTc0MDIsIDExNzQwNiwgMTE3NDEwLCAxMTc0MTQsIAorICAgIDExNzQxOCwgMTE3NDIyLCAxMTc0MjYsIDExNzQzMCwgMTE3NDM0LCAxMTc0MzgsIDExNzQ0MiwgMTE3NDQ2LCAxMTc0NTAsIAorICAgIDExNzQ1NCwgMTE3NDU4LCAxMTc0NjIsIDExNzQ2NiwgMTE3NDcwLCAxMTc0NzQsIDExNzQ3OCwgMTE3NDgyLCAxMTc0ODYsIAorICAgIDExNzQ5MCwgMTE3NDk0LCAxMTc0OTgsIDExNzUwMiwgMTE3NTA2LCAxMTc1MTAsIDExNzUxNCwgMTE3NTE4LCAxMTc1MjIsIAorICAgIDExNzUyNiwgMTE3NTMwLCAxMTc1MzQsIDExNzUzOCwgMTE3NTQyLCAxMTc1NDYsIDExNzU1MCwgMTE3NTU0LCAxMTc1NTgsIAorICAgIDExNzU2MiwgMTE3NTY2LCAxMTc1NzAsIDExNzU3NCwgMTE3NTc4LCAxMTc1ODIsIDExNzU4NiwgMTE3NTkwLCAxMTc1OTQsIAorICAgIDExNzU5OCwgMTE3NjAyLCAxMTc2MDYsIDExNzYxMCwgMTE3NjE0LCAxMTc2MTgsIDExNzYyMiwgMTE3NjI2LCAxMTc2MzAsIAorICAgIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIAorICAgIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIAorICAgIDExNzcwNiwgMTE3NzEwLCAxMTc3MTQsIDExNzcxOCwgMTE3NzIyLCAxMTc3MjYsIDExNzczMCwgMTE3NzM0LCAxMTc3MzgsIAorICAgIDExNzc0MiwgMTE3NzQ2LCAxMTc3NTAsIDExNzc1NCwgMTE3NzU4LCAxMTc3NjIsIDExNzc2NiwgMTE3NzcwLCAxMTc3NzQsIAorICAgIDExNzc3OCwgMTE3NzgyLCAxMTc3ODYsIDExNzc5MCwgMTE3Nzk0LCAxMTc3OTgsIDExNzgwMiwgMTE3ODA2LCAxMTc4MTAsIAorICAgIDExNzgxNCwgMTE3ODE4LCAxMTc4MjIsIDExNzgyNiwgMTE3ODMwLCAxMTc4MzQsIDExNzgzOCwgMTE3ODQyLCAxMTc4NDYsIAorICAgIDExNzg1MCwgMTE3ODU0LCAxMTc4NTgsIDExNzg2MiwgMTE3ODY2LCAxMTc4NzAsIDExNzg3NCwgMTE3ODc4LCAxMTc4ODIsIAorICAgIDExNzg4NiwgMTE3ODkwLCAxMTc4OTQsIDExNzg5OCwgMTE3OTAyLCAxMTc5MDYsIDExNzkxMCwgMTE3OTE0LCAxMTc5MTgsIAorICAgIDExNzkyMiwgMTE3OTI2LCAxMTc5MzAsIDExNzkzNCwgMTE3OTM4LCAxMTc5NDIsIDExNzk0NiwgMTE3OTUwLCAxMTc5NTQsIAorICAgIDExNzk1OCwgMTE3OTYyLCAxMTc5NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExNzk3MCwgMTE3OTc3LCAxMTc5ODQsIDExNzk5MywgMTE4MDAyLCAxMTgwMDksIDExODAxNCwgMTE4MDIxLCAKKyAgICAxMTgwMjgsIDExODAzNywgMTE4MDQ4LCAxMTgwNTksIDExODA2NCwgMTE4MDcxLCAxMTgwNzYsIDExODA4MSwgMTE4MDg2LCAKKyAgICAxMTgwOTEsIDExODA5NiwgMTE4MTAxLCAxMTgxMDYsIDExODExMSwgMTE4MTE2LCAxMTgxMjEsIDExODEyNiwgMTE4MTMzLCAKKyAgICAxMTgxNDAsIDExODE0NSwgMTE4MTUwLCAxMTgxNTUsIDExODE2MCwgMTE4MTY3LCAxMTgxNzQsIDExODE4MiwgMTE4MTg3LCAKKyAgICAxMTgxOTQsIDExODE5OSwgMTE4MjA0LCAxMTgyMDksIDExODIxNCwgMTE4MjE5LCAxMTgyMjYsIDExODIzMywgMTE4MjM4LCAKKyAgICAxMTgyNDMsIDExODI0OCwgMTE4MjUzLCAxMTgyNTgsIDExODI2MywgMTE4MjY4LCAxMTgyNzMsIDExODI3OCwgMTE4MjgzLCAKKyAgICAxMTgyODgsIDExODI5MywgMTE4Mjk4LCAxMTgzMDMsIDExODMwOCwgMTE4MzEzLCAxMTgzMTgsIDExODMyMywgMTE4MzI4LCAKKyAgICAxMTgzMzUsIDExODM0MCwgMTE4MzQ1LCAxMTgzNTQsIDExODM2MSwgMTE4MzY2LCAxMTgzNzEsIDExODM3NiwgMTE4MzgxLCAKKyAgICAxMTgzODYsIDExODM5MSwgMTE4Mzk2LCAxMTg0MDEsIDExODQwNiwgMTE4NDExLCAxMTg0MTYsIDExODQyMSwgMTE4NDI2LCAKKyAgICAxMTg0MzEsIDExODQzNiwgMTE4NDQxLCAxMTg0NDYsIDExODQ1MSwgMTE4NDU2LCAxMTg0NjEsIDExODQ2NiwgMTE4NDcyLCAKKyAgICAxMTg0ODAsIDExODQ4NiwgMTE4NDk0LCAxMTg1MDIsIDExODUxMCwgMTE4NTE2LCAxMTg1MjIsIDExODUyOCwgMTE4NTM0LCAKKyAgICAxMTg1NDAsIDExODU0OCwgMTE4NTU4LCAxMTg1NjYsIDExODU3NCwgMTE4NTgwLCAxMTg1ODYsIDExODU5NCwgMTE4NjAyLCAKKyAgICAxMTg2MDgsIDExODYxNiwgMTE4NjI0LCAxMTg2MzIsIDExODYzOCwgMTE4NjQ0LCAxMTg2NTAsIDExODY1NiwgMTE4NjYyLCAKKyAgICAxMTg2NjgsIDExODY3NiwgMTE4Njg0LCAxMTg2OTAsIDExODY5NiwgMTE4NzAyLCAxMTg3MDgsIDExODcxNCwgMTE4NzIyLCAKKyAgICAxMTg3MjgsIDExODczNCwgMTE4NzQwLCAxMTg3NDYsIDExODc1MiwgMTE4NzU4LCAxMTg3NjYsIDExODc3MiwgMTE4Nzc4LCAKKyAgICAxMTg3ODQsIDExODc5MCwgMTE4Nzk4LCAxMTg4MDYsIDExODgxMiwgMTE4ODE4LCAxMTg4MjQsIDExODgyOSwgMTE4ODM1LCAKKyAgICAxMTg4NDEsIDExODg0OCwgMTE4ODUzLCAxMTg4NTgsIDExODg2MywgMTE4ODY4LCAxMTg4NzMsIDExODg3OCwgMTE4ODgzLCAKKyAgICAxMTg4ODgsIDExODg5MywgMTE4OTAyLCAxMTg5MDksIDExODkxNCwgMTE4OTE5LCAxMTg5MjQsIDExODkzMSwgMTE4OTM2LCAKKyAgICAxMTg5NDEsIDExODk0NiwgMTE4OTUzLCAxMTg5NTgsIDExODk2MywgMTE4OTY4LCAxMTg5NzMsIDExODk3OCwgMTE4OTgzLCAKKyAgICAxMTg5ODgsIDExODk5MywgMTE4OTk4LCAxMTkwMDMsIDExOTAwOCwgMTE5MDE1LCAxMTkwMjAsIDExOTAyNywgMTE5MDMyLCAKKyAgICAxMTkwMzcsIDExOTA0NCwgMTE5MDQ5LCAxMTkwNTQsIDExOTA1OSwgMTE5MDY0LCAxMTkwNjksIDExOTA3NCwgMTE5MDc5LCAKKyAgICAxMTkwODQsIDExOTA4OSwgMTE5MDk0LCAxMTkwOTksIDExOTEwNCwgMTE5MTA5LCAxMTkxMTQsIDExOTExOSwgMTE5MTI0LCAKKyAgICAxMTkxMjksIDExOTEzNCwgMTE5MTM5LCAxMTkxNDYsIDExOTE1MSwgMTE5MTU2LCAxMTkxNjEsIDExOTE2NiwgMTE5MTcxLCAKKyAgICAxMTkxNzYsIDExOTE4MSwgMTE5MTg2LCAxMTkxOTEsIDExOTE5NiwgMTE5MjAxLCAxMTkyMDYsIDExOTIxMSwgMTE5MjE4LCAKKyAgICAxMTkyMjMsIDExOTIyOCwgMTE5MjM1LCAxMTkyNDAsIDExOTI0NSwgMTE5MjUwLCAxMTkyNTUsIDExOTI2MCwgMTE5MjY1LCAKKyAgICAxMTkyNzAsIDExOTI3NSwgMTE5MjgwLCAxMTkyODUsIDExOTI5MiwgMTE5Mjk3LCAxMTkzMDIsIDExOTMwNywgMTE5MzEyLCAKKyAgICAxMTkzMTcsIDExOTMyNCwgMTE5MzMxLCAxMTkzMzYsIDExOTM0MSwgMTE5MzQ2LCAxMTkzNTEsIDExOTM1NiwgMTE5MzYxLCAKKyAgICAxMTkzNjYsIDExOTM3MSwgMTE5Mzc2LCAxMTkzODEsIDExOTM4NiwgMTE5MzkxLCAxMTkzOTYsIDExOTQwMSwgMTE5NDA2LCAKKyAgICAxMTk0MTEsIDExOTQxNiwgMTE5NDIxLCAxMTk0MjYsIDExOTQzMSwgMTE5NDM2LCAxMTk0NDEsIDExOTQ0NiwgMTE5NDUxLCAKKyAgICAxMTk0NTYsIDExOTQ2MSwgMTE5NDY2LCAxMTk0NzEsIDExOTQ3NiwgMTE5NDgxLCAxMTk0ODYsIDExOTQ5MSwgMTE5NDk2LCAKKyAgICAxMTk1MDEsIDExOTUwNiwgMTE5NTExLCAxMTk1MTgsIDExOTUyMywgMTE5NTI4LCAxMTk1MzMsIDExOTUzOCwgMTE5NTQzLCAKKyAgICAxMTk1NDgsIDExOTU1MywgMTE5NTU4LCAxMTk1NjMsIDExOTU2OCwgMTE5NTczLCAxMTk1NzgsIDExOTU4MywgMTE5NTg4LCAKKyAgICAxMTk1OTMsIDExOTU5OCwgMTE5NjAzLCAxMTk2MDgsIDExOTYxMywgMTE5NjE4LCAxMTk2MjMsIDExOTYyOCwgMTE5NjMzLCAKKyAgICAxMTk2MzgsIDExOTY0MywgMTE5NjQ4LCAxMTk2NTMsIDExOTY1OCwgMTE5NjYzLCAxMTk2NjgsIDExOTY3MywgMTE5Njc4LCAKKyAgICAxMTk2ODMsIDExOTY4OCwgMTE5NjkzLCAxMTk2OTgsIDExOTcwMywgMTE5NzA4LCAxMTk3MTMsIDExOTcxOCwgMTE5NzIzLCAKKyAgICAxMTk3MjgsIDExOTczMywgMTE5NzM4LCAxMTk3NDMsIDExOTc0OCwgMTE5NzUzLCAxMTk3NTgsIDExOTc2MywgMTE5NzY4LCAKKyAgICAxMTk3NzMsIDExOTc3OCwgMTE5NzgzLCAxMTk3ODgsIDExOTc5MywgMTE5Nzk4LCAxMTk4MDMsIDExOTgwOCwgMTE5ODE1LCAKKyAgICAxMTk4MjAsIDExOTgyNSwgMTE5ODMwLCAxMTk4MzUsIDExOTg0MCwgMTE5ODQ1LCAxMTk4NTAsIDExOTg1NSwgMTE5ODYwLCAKKyAgICAxMTk4NjUsIDExOTg3MCwgMTE5ODc1LCAxMTk4ODAsIDExOTg4NSwgMTE5ODkwLCAxMTk4OTUsIDExOTkwMCwgMTE5OTA1LCAKKyAgICAxMTk5MTAsIDExOTkxNSwgMTE5OTIwLCAxMTk5MjcsIDExOTkzMiwgMTE5OTM3LCAxMTk5NDMsIDExOTk0OCwgMTE5OTUzLCAKKyAgICAxMTk5NTgsIDExOTk2MywgMTE5OTY4LCAxMTk5NzMsIDExOTk3OCwgMTE5OTgzLCAxMTk5ODgsIDExOTk5MywgMTE5OTk4LCAKKyAgICAxMjAwMDMsIDEyMDAwOCwgMTIwMDEzLCAxMjAwMTgsIDEyMDAyMywgMTIwMDI4LCAxMjAwMzMsIDEyMDAzOCwgMTIwMDQzLCAKKyAgICAxMjAwNDgsIDEyMDA1MywgMTIwMDU4LCAxMjAwNjMsIDEyMDA2OCwgMTIwMDczLCAxMjAwNzgsIDEyMDA4MywgMTIwMDg4LCAKKyAgICAxMjAwOTMsIDEyMDA5OCwgMTIwMTAzLCAxMjAxMDgsIDEyMDExMywgMTIwMTE4LCAxMjAxMjMsIDEyMDEyOCwgMTIwMTMzLCAKKyAgICAxMjAxMzgsIDEyMDE0MywgMTIwMTQ4LCAxMjAxNTMsIDEyMDE1OCwgMTIwMTY1LCAxMjAxNzAsIDEyMDE3NSwgMTIwMTgyLCAKKyAgICAxMjAxODksIDEyMDE5NCwgMTIwMTk5LCAxMjAyMDQsIDEyMDIwOSwgMTIwMjE0LCAxMjAyMTksIDEyMDIyNCwgMTIwMjI5LCAKKyAgICAxMjAyMzQsIDEyMDIzOSwgMTIwMjQ0LCAxMjAyNDksIDEyMDI1NCwgMTIwMjU5LCAxMjAyNjQsIDEyMDI2OSwgMTIwMjc0LCAKKyAgICAxMjAyNzksIDEyMDI4NCwgMTIwMjg5LCAxMjAyOTQsIDEyMDI5OSwgMTIwMzA0LCAxMjAzMDksIDEyMDMxNCwgMTIwMzIxLCAKKyAgICAxMjAzMjYsIDEyMDMzMSwgMTIwMzM2LCAxMjAzNDEsIDEyMDM0NiwgMTIwMzUxLCAxMjAzNTYsIDEyMDM2MSwgMTIwMzY2LCAKKyAgICAxMjAzNzEsIDEyMDM3NiwgMTIwMzgxLCAxMjAzODYsIDEyMDM5MSwgMTIwMzk2LCAxMjA0MDEsIDEyMDQwNiwgMTIwNDExLCAKKyAgICAxMjA0MTgsIDEyMDQyMywgMTIwNDI4LCAxMjA0MzMsIDEyMDQzOCwgMTIwNDQzLCAxMjA0NDgsIDEyMDQ1MywgMTIwNDU5LCAKKyAgICAxMjA0NjQsIDEyMDQ2OSwgMTIwNDc0LCAxMjA0NzksIDEyMDQ4NCwgMTIwNDg5LCAxMjA0OTQsIDEyMDQ5OSwgMTIwNTA2LCAKKyAgICAxMjA1MTMsIDEyMDUxOCwgMTIwNTIzLCAxMjA1MjcsIDEyMDUzMiwgMTIwNTM2LCAxMjA1NDAsIDEyMDU0NSwgMTIwNTUyLCAKKyAgICAxMjA1NTcsIDEyMDU2MiwgMTIwNTcxLCAxMjA1NzYsIDEyMDU4MSwgMTIwNTg2LCAxMjA1OTEsIDEyMDU5OCwgMTIwNjA1LCAKKyAgICAxMjA2MTAsIDEyMDYxNSwgMTIwNjIwLCAxMjA2MjUsIDEyMDYzMiwgMTIwNjM3LCAxMjA2NDIsIDEyMDY0NywgMTIwNjUyLCAKKyAgICAxMjA2NTcsIDEyMDY2MiwgMTIwNjY3LCAxMjA2NzIsIDEyMDY3NywgMTIwNjgyLCAxMjA2ODcsIDEyMDY5MiwgMTIwNjk5LCAKKyAgICAxMjA3MDMsIDEyMDcwOCwgMTIwNzEzLCAxMjA3MTgsIDEyMDcyMywgMTIwNzI3LCAxMjA3MzIsIDEyMDczNywgMTIwNzQyLCAKKyAgICAxMjA3NDcsIDEyMDc1MiwgMTIwNzU3LCAxMjA3NjIsIDEyMDc2NywgMTIwNzcyLCAxMjA3NzgsIDEyMDc4NCwgMTIwNzkwLCAKKyAgICAxMjA3OTYsIDEyMDgwMiwgMTIwODA4LCAxMjA4MTQsIDEyMDgyMCwgMTIwODI2LCAxMjA4MzIsIDEyMDgzOCwgMTIwODQ0LCAKKyAgICAxMjA4NTAsIDEyMDg1NiwgMTIwODYyLCAxMjA4NjgsIDEyMDg3NCwgMTIwODgwLCAxMjA4ODYsIDEyMDg5MiwgMTIwODk4LCAKKyAgICAxMjA5MDQsIDEyMDkxMCwgMTIwOTE2LCAxMjA5MjEsIDEyMDkyNywgMTIwOTMzLCAxMjA5MzksIDEyMDk0NSwgMTIwOTUxLCAKKyAgICAxMjA5NTcsIDEyMDk2MywgMTIwOTY5LCAxMjA5NzUsIDEyMDk4MSwgMTIwOTg3LCAxMjA5OTMsIDEyMDk5OSwgMTIxMDA1LCAKKyAgICAxMjEwMTEsIDEyMTAxNywgMTIxMDIzLCAxMjEwMjksIDEyMTAzNSwgMTIxMDQxLCAxMjEwNDYsIDEyMTA1MiwgMTIxMDU4LCAKKyAgICAxMjEwNjQsIDEyMTA3MCwgMTIxMDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjEwODIsIDEyMTA4NywgMTIxMDkyLCAKKyAgICAxMjEwOTcsIDEyMTEwMiwgMTIxMTA3LCAxMjExMTIsIDEyMTExNiwgMTIxMTIxLCAxMjExMjYsIDEyMTEzMSwgMTIxMTM2LCAKKyAgICAxMjExNDEsIDEyMTE0NiwgMTIxMTUxLCAxMjExNTYsIDEyMTE2MSwgMTIxMTY1LCAxMjExNzAsIDEyMTE3NCwgMTIxMTc5LCAKKyAgICAxMjExODQsIDEyMTE4OSwgMTIxMTk0LCAxMjExOTksIDEyMTIwMywgMTIxMjA4LCAxMjEyMTMsIDEyMTIxOCwgMTIxMjIzLCAKKyAgICAxMjEyMjgsIDAsIDEyMTIzMywgMTIxMjM4LCAxMjEyNDIsIDEyMTI0NiwgMTIxMjUwLCAxMjEyNTQsIDEyMTI1OCwgCisgICAgMTIxMjYyLCAxMjEyNjYsIDEyMTI3MCwgMCwgMCwgMCwgMCwgMTIxMjc0LCAxMjEyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTI4MywgMTIxMjkwLCAKKyAgICAxMjEyOTYsIDEyMTMwMywgMTIxMzEwLCAxMjEzMTcsIDEyMTMyNCwgMTIxMzMxLCAxMjEzMzgsIDEyMTM0NSwgMTIxMzUyLCAKKyAgICAxMjEzNTksIDEyMTM2NiwgMTIxMzczLCAxMjEzODAsIDEyMTM4NywgMTIxMzk0LCAxMjE0MDEsIDEyMTQwNywgMTIxNDE0LCAKKyAgICAxMjE0MjEsIDEyMTQyOCwgMTIxNDM0LCAxMjE0NDEsIDEyMTQ0NywgMTIxNDUzLCAxMjE0NjAsIDEyMTQ2NiwgMTIxNDczLCAKKyAgICAxMjE0NzksIDAsIDAsIDEyMTQ4NSwgMTIxNDkzLCAxMjE1MDEsIDEyMTUxMCwgMTIxNTE5LCAxMjE1MjgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTUzNiwgMTIxNTQxLCAxMjE1NDYsIDEyMTU1MSwgMTIxNTU2LCAxMjE1NjEsIDEyMTU2NiwgCisgICAgMTIxNTcxLCAxMjE1NzYsIDEyMTU4MSwgMTIxNTg2LCAxMjE1OTEsIDEyMTU5NiwgMTIxNjAxLCAxMjE2MDYsIDEyMTYxMSwgCisgICAgMTIxNjE2LCAxMjE2MjEsIDEyMTYyNiwgMTIxNjMxLCAxMjE2MzYsIDEyMTY0MSwgMTIxNjQ2LCAxMjE2NTEsIDEyMTY1NiwgCisgICAgMTIxNjYxLCAxMjE2NjYsIDEyMTY3MSwgMTIxNjc2LCAxMjE2ODEsIDEyMTY4NiwgMTIxNjkxLCAxMjE2OTYsIDEyMTcwMSwgCisgICAgMTIxNzA2LCAxMjE3MTEsIDEyMTcxNiwgMTIxNzIxLCAxMjE3MjYsIDEyMTczMSwgMTIxNzM2LCAxMjE3NDEsIDEyMTc0NiwgCisgICAgMTIxNzUxLCAxMjE3NTYsIDEyMTc2MSwgMTIxNzY2LCAxMjE3NzEsIDEyMTc3NiwgMTIxNzgzLCAxMjE3OTAsIDEyMTc5NywgCisgICAgMTIxODA0LCAxMjE4MTEsIDEyMTgxOCwgMTIxODI1LCAxMjE4MzIsIDEyMTg0MSwgMTIxODQ4LCAxMjE4NTUsIDEyMTg2MiwgCisgICAgMTIxODY5LCAxMjE4NzYsIDEyMTg4MywgMTIxODkwLCAxMjE4OTcsIDEyMTkwNCwgMTIxOTExLCAxMjE5MTgsIDEyMTkyMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxOTMyLCAxMjE5MzcsIDEyMTk0MSwgMTIxOTQ1LCAxMjE5NDksIAorICAgIDEyMTk1MywgMTIxOTU3LCAxMjE5NjEsIDEyMTk2NSwgMTIxOTY5LCAwLCAxMjE5NzMsIDEyMTk3OCwgMTIxOTgzLCAKKyAgICAxMjE5OTAsIDEyMTk5NSwgMTIyMDAyLCAxMjIwMDksIDAsIDEyMjAxNCwgMTIyMDIxLCAxMjIwMjYsIDEyMjAzMSwgCisgICAgMTIyMDM4LCAxMjIwNDUsIDEyMjA1MCwgMTIyMDU1LCAxMjIwNjAsIDEyMjA2NSwgMTIyMDcwLCAxMjIwNzcsIDEyMjA4NCwgCisgICAgMTIyMDg5LCAxMjIwOTQsIDEyMjA5OSwgMTIyMTEyLCAxMjIxMjEsIDEyMjEyOCwgMTIyMTM3LCAxMjIxNDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyMjE1NSwgMTIyMTYyLCAxMjIxNjksIDEyMjE3NiwgMTIyMTgzLCAxMjIxOTAsIDEyMjE5NywgMTIyMjA0LCAKKyAgICAxMjIyMTEsIDEyMjIxOCwgMTIyMjI1LCAxMjIyMzIsIDEyMjIzOSwgMTIyMjQ2LCAxMjIyNTMsIDEyMjI2MCwgMTIyMjY3LCAKKyAgICAxMjIyNzQsIDEyMjI4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyMjg4LCAKKyAgICAxMjIyOTEsIDEyMjI5NSwgMTIyMjk5LCAxMjIzMDMsIDEyMjMwNiwgMTIyMzEwLCAxMjIzMTUsIDEyMjMxOSwgMTIyMzIzLCAKKyAgICAxMjIzMjcsIDEyMjMzMSwgMTIyMzM1LCAxMjIzNDAsIDEyMjM0NSwgMTIyMzQ5LCAxMjIzNTMsIDEyMjM1NiwgMTIyMzYwLCAKKyAgICAxMjIzNjUsIDEyMjM3MCwgMTIyMzc0LCAxMjIzNzgsIDEyMjM4MiwgMTIyMzg2LCAxMjIzOTAsIDEyMjM5NCwgMTIyMzk4LCAKKyAgICAxMjI0MDIsIDEyMjQwNiwgMTIyNDEwLCAxMjI0MTMsIDEyMjQxNywgMTIyNDIxLCAxMjI0MjUsIDEyMjQyOSwgMTIyNDMzLCAKKyAgICAxMjI0MzcsIDEyMjQ0MywgMTIyNDQ2LCAxMjI0NTAsIDEyMjQ1NCwgMTIyNDU4LCAxMjI0NjIsIDEyMjQ2NiwgMTIyNDcwLCAKKyAgICAxMjI0NzQsIDEyMjQ3OCwgMTIyNDgyLCAxMjI0ODcsIDEyMjQ5MiwgMTIyNDk4LCAxMjI1MDIsIDEyMjUwNiwgMTIyNTEwLCAKKyAgICAxMjI1MTQsIDEyMjUxOCwgMTIyNTIyLCAxMjI1MjcsIDEyMjUzMSwgMTIyNTM1LCAxMjI1MzksIDEyMjU0MywgMTIyNTQ3LCAKKyAgICAxMjI1NTMsIDEyMjU1NywgMTIyNTYxLCAxMjI1NjUsIDEyMjU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIyNTczLCAxMjI1NzcsIDEyMjU4MSwgMTIyNTg3LCAxMjI1OTMsIDEyMjU5NywgMTIyNjAyLCAxMjI2MDcsIDEyMjYxMiwgCisgICAgMTIyNjE3LCAxMjI2MjEsIDEyMjYyNiwgMTIyNjMxLCAxMjI2MzYsIDEyMjY0MCwgMTIyNjQ1LCAxMjI2NTAsIDEyMjY1NSwgCisgICAgMTIyNjU5LCAxMjI2NjQsIDEyMjY2OSwgMTIyNjc0LCAxMjI2NzksIDEyMjY4NCwgMTIyNjg5LCAxMjI2OTQsIDEyMjY5OSwgCisgICAgMTIyNzAzLCAxMjI3MDgsIDEyMjcxMywgMTIyNzE4LCAxMjI3MjMsIDEyMjcyOCwgMTIyNzMzLCAxMjI3MzgsIDEyMjc0MywgCisgICAgMTIyNzQ4LCAxMjI3NTMsIDEyMjc1OCwgMTIyNzY1LCAxMjI3NzAsIDEyMjc3NywgMTIyNzgyLCAxMjI3ODcsIDEyMjc5MiwgCisgICAgMTIyNzk3LCAxMjI4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjgwNywgCisgICAgMTIyODExLCAxMjI4MTcsIDEyMjgyMCwgMTIyODIzLCAxMjI4MjcsIDEyMjgzMSwgMTIyODM1LCAxMjI4MzksIDEyMjg0MywgCisgICAgMTIyODQ3LCAxMjI4NTEsIDEyMjg1NywgMTIyODYzLCAxMjI4NjksIDEyMjg3NSwgMTIyODgxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI4ODcsIDEyMjg5MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyODk4LCAxMjI5MDIsIDEyMjkwNiwgMTIyOTEwLCAKKyAgICAxMjI5MTQsIDEyMjkxOCwgMTIyOTIyLCAxMjI5MjUsIDEyMjkyOSwgMTIyOTMzLCAxMjI5MzcsIDEyMjk0MSwgMTIyOTQ0LCAKKyAgICAxMjI5NTAsIDEyMjk1NSwgMTIyOTYxLCAxMjI5NjcsIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODIsIDEyMjk4NiwgMTIyOTkwLCAKKyAgICAxMjI5OTYsIDEyMzAwMCwgMTIzMDA0LCAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyMywgMTIzMDI5LCAKKyAgICAxMjMwMzUsIDEyMzA0MSwgMTIzMDQ3LCAxMjMwNTQsIDEyMzA2MSwgMTIzMDY4LCAxMjMwNzgsIDEyMzA4NSwgMTIzMDkyLCAKKyAgICAxMjMwOTcsIDEyMzEwMiwgMTIzMTA3LCAxMjMxMTIsIDEyMzExOSwgMTIzMTI2LCAxMjMxMzMsIDEyMzE0MCwgMTIzMTQ5LCAKKyAgICAxMjMxNTUsIDEyMzE2MiwgMTIzMTY4LCAxMjMxNzUsIDEyMzE4MSwgMTIzMTg4LCAxMjMxOTMsIDEyMzIwMCwgMTIzMjA0LCAKKyAgICAxMjMyMDgsIDEyMzIxMywgMTIzMjE5LCAxMjMyMjUsIDEyMzIzMiwgMTIzMjM5LCAxMjMyNDUsIDEyMzI1MiwgMTIzMjU1LCAKKyAgICAxMjMyNjEsIDEyMzI2NSwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NSwgMTIzMjc4LCAxMjMyODIsIDEyMzI4NywgMTIzMjkxLCAKKyAgICAxMjMyOTUsIDEyMzMwMSwgMTIzMzA2LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAxMjMzMjMsIDEyMzMyNywgMTIzMzMxLCAKKyAgICAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ1LCAxMjMzNDksIDEyMzM1NCwgMTIzMzU4LCAxMjMzNjIsIDEyMzM2NiwgMTIzMzcwLCAKKyAgICAxMjMzNzQsIDEyMzM3OCwgMTIzMzgyLCAxMjMzODYsIDEyMzM5MSwgMTIzMzk2LCAxMjM0MDEsIDEyMzQwNiwgMTIzNDEyLCAKKyAgICAxMjM0MTgsIDEyMzQyNCwgMTIzNDMwLCAxMjM0MzYsIDAsIDAsIDAsIDAsIDAsIDEyMzQ0MSwgMTIzNDQ4LCAxMjM0NTYsIAorICAgIDEyMzQ2MywgMTIzNDcwLCAxMjM0NzgsIDEyMzQ4NSwgMTIzNDkyLCAxMjM1MDEsIDEyMzUwOCwgMTIzNTE1LCAxMjM1MjIsIAorICAgIDEyMzUzMCwgMCwgMCwgMCwgMTIzNTM4LCAxMjM1NDMsIDEyMzU1MCwgMTIzNTU2LCAxMjM1NjMsIDEyMzU2OSwgMTIzNTc1LCAKKyAgICAxMjM1ODEsIDEyMzU4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNTkzLCAxMjM1OTgsIDEyMzYwNSwgMTIzNjExLCAKKyAgICAxMjM2MTgsIDEyMzYyNCwgMTIzNjMwLCAxMjM2MzYsIDEyMzY0MiwgMTIzNjQ4LCAwLCAwLCAxMjM2NTMsIDEyMzY1OSwgCisgICAgMTIzNjY1LCAxMjM2NjgsIDEyMzY3NywgMTIzNjg0LCAxMjM2OTIsIDEyMzY5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNzA2LCAxMjM3MTEsIDEyMzcxNiwgMTIzNzIxLCAKKyAgICAxMjM3MjgsIDEyMzczNSwgMTIzNzQyLCAxMjM3NDksIDEyMzc1NCwgMTIzNzU5LCAxMjM3NjQsIDEyMzc2OSwgMTIzNzc2LCAKKyAgICAxMjM3ODEsIDEyMzc4OCwgMTIzNzk1LCAxMjM4MDAsIDEyMzgwNSwgMTIzODEwLCAxMjM4MTcsIDEyMzgyMiwgMTIzODI3LCAKKyAgICAxMjM4MzQsIDEyMzg0MSwgMTIzODQ2LCAxMjM4NTEsIDEyMzg1NiwgMTIzODYzLCAxMjM4NzAsIDEyMzg3NywgMTIzODgyLCAKKyAgICAxMjM4ODcsIDEyMzg5NCwgMTIzOTAxLCAxMjM5MDgsIDEyMzkxNSwgMTIzOTIwLCAxMjM5MjUsIDEyMzkzMCwgMTIzOTM3LCAKKyAgICAxMjM5NDIsIDEyMzk0NywgMTIzOTUyLCAxMjM5NTksIDEyMzk2OCwgMTIzOTc1LCAxMjM5ODAsIDEyMzk4NSwgMTIzOTkwLCAKKyAgICAxMjM5OTUsIDEyNDAwMCwgMTI0MDA1LCAxMjQwMTQsIDEyNDAyMSwgMTI0MDI2LCAxMjQwMzMsIDEyNDA0MCwgMTI0MDQ1LCAKKyAgICAxMjQwNTAsIDEyNDA1NSwgMTI0MDYyLCAxMjQwNjcsIDEyNDA3NCwgMTI0MDgxLCAxMjQwODYsIDEyNDA5MSwgMTI0MDk2LCAKKyAgICAxMjQxMDMsIDEyNDExMCwgMTI0MTE1LCAxMjQxMjAsIDEyNDEyNywgMTI0MTM0LCAxMjQxNDEsIDEyNDE0NiwgMTI0MTUxLCAKKyAgICAxMjQxNTYsIDEyNDE2MSwgMTI0MTY4LCAxMjQxNzcsIDEyNDE4NiwgMTI0MTkxLCAxMjQxOTgsIDEyNDIwNywgMTI0MjEyLCAKKyAgICAxMjQyMTcsIDEyNDIyMiwgMTI0MjI3LCAxMjQyMzQsIDEyNDI0MSwgMTI0MjQ4LCAxMjQyNTUsIDEyNDI2MCwgMTI0MjY1LCAKKyAgICAxMjQyNzAsIDEyNDI3NywgMTI0Mjg0LCAxMjQyOTEsIDEyNDI5NiwgMTI0MzAxLCAxMjQzMDgsIDEyNDMxMywgMTI0MzIwLCAKKyAgICAxMjQzMjUsIDEyNDMzMiwgMTI0MzM3LCAxMjQzNDQsIDEyNDM1MSwgMTI0MzU2LCAxMjQzNjEsIDEyNDM2NiwgMTI0MzcxLCAKKyAgICAxMjQzNzYsIDEyNDM4MSwgMTI0Mzg2LCAxMjQzOTEsIDEyNDM5NiwgMTI0NDAzLCAxMjQ0MTAsIDEyNDQxNywgMTI0NDI0LCAKKyAgICAxMjQ0MzEsIDEyNDQ0MCwgMTI0NDQ1LCAxMjQ0NTAsIDEyNDQ1NywgMTI0NDY0LCAxMjQ0NjksIDEyNDQ3NiwgMTI0NDgzLCAKKyAgICAxMjQ0OTAsIDEyNDQ5NywgMTI0NTA0LCAxMjQ1MTEsIDEyNDUxNiwgMTI0NTIxLCAxMjQ1MjYsIDEyNDUzMSwgMTI0NTM2LCAKKyAgICAxMjQ1NDUsIDEyNDU1NCwgMTI0NTYzLCAxMjQ1NzIsIDEyNDU4MSwgMTI0NTkwLCAxMjQ1OTksIDEyNDYwOCwgMTI0NjEzLCAKKyAgICAxMjQ2MjQsIDEyNDYzNSwgMTI0NjQ0LCAxMjQ2NDksIDEyNDY1NCwgMTI0NjU5LCAxMjQ2NjQsIDEyNDY3MywgMTI0NjgwLCAKKyAgICAxMjQ2ODcsIDEyNDY5NCwgMTI0NzAxLCAxMjQ3MDgsIDEyNDcxNSwgMTI0NzI0LCAxMjQ3MzMsIDEyNDc0NCwgMTI0NzUzLCAKKyAgICAxMjQ3NjQsIDEyNDc3MywgMTI0NzgwLCAxMjQ3ODksIDEyNDgwMCwgMTI0ODA5LCAxMjQ4MTgsIDEyNDgyNywgMTI0ODM2LCAKKyAgICAxMjQ4NDMsIDEyNDg1MCwgMTI0ODU3LCAxMjQ4NjYsIDEyNDg3NSwgMTI0ODg2LCAxMjQ4OTUsIDEyNDkwNCwgMTI0OTE1LCAKKyAgICAxMjQ5MjAsIDEyNDkyNSwgMTI0OTM2LCAxMjQ5NDQsIDEyNDk1MywgMTI0OTYyLCAxMjQ5NzEsIDEyNDk4MiwgMTI0OTkxLCAKKyAgICAxMjUwMDAsIDEyNTAxMSwgMTI1MDIyLCAxMjUwMzMsIDEyNTA0NCwgMTI1MDU1LCAxMjUwNjYsIDEyNTA3MywgMTI1MDgwLCAKKyAgICAxMjUwODcsIDEyNTA5NCwgMTI1MTA1LCAxMjUxMTQsIDEyNTEyMSwgMTI1MTI4LCAxMjUxMzUsIDEyNTE0NiwgMTI1MTU3LCAKKyAgICAxMjUxNjgsIDEyNTE3OSwgMTI1MTkwLCAxMjUyMDEsIDEyNTIxMiwgMTI1MjIzLCAxMjUyMzAsIDEyNTIzNywgMTI1MjQ2LCAKKyAgICAxMjUyNTUsIDEyNTI2MiwgMTI1MjY5LCAxMjUyNzYsIDEyNTI4NSwgMTI1Mjk0LCAxMjUzMDMsIDEyNTMxMCwgMTI1MzE5LCAKKyAgICAxMjUzMjgsIDEyNTMzNywgMTI1MzQ0LCAxMjUzNTEsIDEyNTM1NiwgMTI1MzYyLCAxMjUzNjksIDEyNTM3NiwgMTI1MzgzLCAKKyAgICAxMjUzOTAsIDEyNTM5NywgMTI1NDA0LCAxMjU0MTMsIDEyNTQyMiwgMTI1NDMxLCAxMjU0NDAsIDEyNTQ0NywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1NDU2LCAxMjU0NjIsIDEyNTQ2NywgMTI1NDcyLCAxMjU0NzksIDEyNTQ4NSwgCisgICAgMTI1NDkxLCAxMjU0OTcsIDEyNTUwMywgMTI1NTA5LCAxMjU1MTUsIDEyNTUyMSwgMTI1NTI1LCAxMjU1MjksIDEyNTUzNSwgCisgICAgMTI1NTQxLCAxMjU1NDcsIDEyNTU1MSwgMTI1NTU2LCAxMjU1NjEsIDEyNTU2NSwgMTI1NTY5LCAxMjU1NzIsIDEyNTU3OCwgCisgICAgMTI1NTg0LCAxMjU1OTAsIDEyNTU5NiwgMTI1NjAyLCAxMjU2MDgsIDEyNTYxNCwgMTI1NjIwLCAxMjU2MjYsIDEyNTYzNiwgCisgICAgMTI1NjQ2LCAxMjU2NTIsIDEyNTY1OCwgMTI1NjY4LCAxMjU2NzgsIDEyNTY4NCwgMCwgMCwgMTI1NjkwLCAxMjU2OTgsIAorICAgIDEyNTcwMywgMTI1NzA4LCAxMjU3MTQsIDEyNTcyMCwgMTI1NzI2LCAxMjU3MzIsIDEyNTczOCwgMTI1NzQ0LCAxMjU3NTEsIAorICAgIDEyNTc1OCwgMTI1NzY0LCAxMjU3NzAsIDEyNTc3NiwgMTI1NzgyLCAxMjU3ODgsIDEyNTc5NCwgMTI1ODAwLCAxMjU4MDYsIAorICAgIDEyNTgxMSwgMTI1ODE3LCAxMjU4MjMsIDEyNTgyOSwgMTI1ODM1LCAxMjU4NDEsIDEyNTg1MCwgMTI1ODU2LCAxMjU4NjEsIAorICAgIDEyNTg2OSwgMTI1ODc2LCAxMjU4ODMsIDEyNTg5MiwgMTI1OTAxLCAxMjU5MTAsIDEyNTkxOSwgMTI1OTI4LCAxMjU5MzcsIAorICAgIDEyNTk0NiwgMTI1OTU1LCAxMjU5NjUsIDEyNTk3NSwgMTI1OTgzLCAxMjU5OTEsIDEyNjAwMCwgMTI2MDA5LCAxMjYwMTUsIAorICAgIDEyNjAyMSwgMTI2MDI3LCAxMjYwMzMsIDEyNjA0MSwgMTI2MDQ5LCAxMjYwNTMsIDEyNjA1OSwgMTI2MDY0LCAxMjYwNzAsIAorICAgIDEyNjA3NiwgMTI2MDgyLCAxMjYwODgsIDEyNjA5NCwgMTI2MTAzLCAxMjYxMDgsIDEyNjExNSwgMTI2MTIwLCAxMjYxMjUsIAorICAgIDEyNjEzMCwgMTI2MTM2LCAxMjYxNDIsIDEyNjE0OCwgMTI2MTU1LCAxMjYxNjAsIDEyNjE2NSwgMTI2MTcwLCAxMjYxNzUsIAorICAgIDEyNjE4MCwgMTI2MTg2LCAxMjYxOTIsIDEyNjE5OCwgMTI2MjA0LCAxMjYyMTAsIDEyNjIxNiwgMTI2MjIyLCAxMjYyMjgsIAorICAgIDEyNjIzMywgMTI2MjM4LCAxMjYyNDMsIDEyNjI0OCwgMTI2MjUzLCAxMjYyNTgsIDEyNjI2MywgMTI2MjY4LCAxMjYyNzQsIAorICAgIDEyNjI4MCwgMTI2Mjg1LCAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMSwgMTI2MzE4LCAxMjYzMjIsIAorICAgIDEyNjMyNiwgMTI2MzMwLCAxMjYzMzQsIDEyNjMzOCwgMTI2MzQyLCAxMjYzNDYsIDEyNjM1MCwgMTI2MzU4LCAxMjYzNjgsIAorICAgIDEyNjM3MiwgMTI2Mzc2LCAxMjYzODIsIDEyNjM4OCwgMTI2Mzk0LCAxMjY0MDAsIDEyNjQwNiwgMTI2NDEyLCAxMjY0MTgsIAorICAgIDEyNjQyNCwgMTI2NDMwLCAxMjY0MzYsIDEyNjQ0MiwgMTI2NDQ4LCAxMjY0NTQsIDEyNjQ2MCwgMTI2NDY0LCAxMjY0NjgsIAorICAgIDEyNjQ3NSwgMTI2NDgxLCAxMjY0ODcsIDEyNjQ5MywgMTI2NDk4LCAxMjY1MDUsIDEyNjUxMCwgMTI2NTE2LCAxMjY1MjIsIAorICAgIDEyNjUyOCwgMTI2NTM0LCAxMjY1MzksIDEyNjU0MywgMTI2NTQ5LCAxMjY1NTMsIDEyNjU1NywgMTI2NTYxLCAxMjY1NjcsIAorICAgIDEyNjU3MywgMTI2NTc3LCAxMjY1ODMsIDEyNjU4OSwgMTI2NTk1LCAxMjY2MDEsIDEyNjYwNywgMTI2NjE1LCAxMjY2MjMsIAorICAgIDEyNjYyOSwgMTI2NjM1LCAxMjY2NDEsIDEyNjY0NywgMTI2NjU5LCAxMjY2NzEsIDEyNjY4NSwgMTI2Njk3LCAxMjY3MDksIAorICAgIDEyNjcyMywgMTI2NzM3LCAxMjY3NTEsIDEyNjc1NSwgMTI2NzYzLCAxMjY3NzEsIDEyNjc3NiwgMTI2NzgwLCAxMjY3ODQsIAorICAgIDEyNjc4OCwgMTI2NzkyLCAxMjY3OTYsIDEyNjgwMCwgMTI2ODA0LCAxMjY4MTAsIDEyNjgxNiwgMTI2ODIyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY4MjgsIDEyNjgzNSwgMTI2ODQyLCAxMjY4NDksIDEyNjg1NiwgMTI2ODYzLCAKKyAgICAxMjY4NzAsIDEyNjg3NywgMTI2ODg0LCAxMjY4OTEsIDEyNjg5OCwgMTI2OTA1LCAxMjY5MTIsIDEyNjkxOSwgMTI2OTI2LCAKKyAgICAxMjY5MzMsIDEyNjk0MCwgMTI2OTQ3LCAxMjY5NTQsIDEyNjk2MSwgMTI2OTY4LCAxMjY5NzUsIDEyNjk4MiwgMTI2OTg5LCAKKyAgICAxMjY5OTYsIDEyNzAwMywgMTI3MDEwLCAxMjcwMTcsIDEyNzAyNCwgMTI3MDMxLCAxMjcwMzgsIDEyNzA0NSwgMTI3MDUyLCAKKyAgICAxMjcwNTksIDEyNzA2NiwgMTI3MDczLCAxMjcwODAsIDEyNzA4NywgMTI3MDk0LCAxMjcxMDEsIDEyNzEwOCwgMTI3MTE1LCAKKyAgICAxMjcxMjIsIDEyNzEyOSwgMTI3MTM2LCAxMjcxNDMsIDEyNzE1MCwgMTI3MTU3LCAxMjcxNjQsIDEyNzE3MSwgMTI3MTc4LCAKKyAgICAxMjcxODUsIDEyNzE5MiwgMTI3MTk5LCAxMjcyMDYsIDEyNzIxMywgMTI3MjIwLCAxMjcyMjcsIDEyNzIzNCwgMTI3MjQxLCAKKyAgICAxMjcyNDgsIDEyNzI1NSwgMTI3MjYyLCAxMjcyNjksIDEyNzI3NiwgMTI3MjgzLCAxMjcyOTAsIDEyNzI5NSwgMTI3MzAwLCAKKyAgICAxMjczMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzMwOSwgCisgICAgMTI3MzE0LCAxMjczMjEsIDEyNzMyOCwgMTI3MzM1LCAxMjczNDIsIDEyNzM0NywgMTI3MzUyLCAxMjczNTksIDEyNzM2NCwgCisgICAgMTI3MzY5LCAxMjczNzYsIDEyNzM4MSwgMTI3Mzg2LCAxMjczOTEsIDEyNzM5OCwgMTI3NDA3LCAxMjc0MTIsIDEyNzQxNywgCisgICAgMTI3NDIyLCAxMjc0MjcsIDEyNzQzMiwgMTI3NDM3LCAxMjc0NDQsIDEyNzQ0OSwgMTI3NDU0LCAxMjc0NTksIDEyNzQ2NCwgCisgICAgMTI3NDY5LCAxMjc0NzQsIDEyNzQ3OSwgMTI3NDg0LCAxMjc0ODksIDEyNzQ5NCwgMTI3NDk5LCAxMjc1MDQsIDEyNzUxMCwgCisgICAgMTI3NTE1LCAxMjc1MjAsIDEyNzUyNSwgMTI3NTMwLCAxMjc1MzUsIDEyNzU0MCwgMTI3NTQ1LCAxMjc1NTAsIDEyNzU1NSwgCisgICAgMTI3NTY0LCAxMjc1NjksIDEyNzU3OCwgMTI3NTgzLCAxMjc1ODgsIDEyNzU5MywgMTI3NTk4LCAxMjc2MDMsIDEyNzYwOCwgCisgICAgMTI3NjEzLCAxMjc2MjIsIDEyNzYyNywgMTI3NjMyLCAxMjc2MzcsIDEyNzY0MiwgMTI3NjQ3LCAxMjc2NTQsIDEyNzY1OSwgCisgICAgMTI3NjY2LCAxMjc2NzEsIDEyNzY3NiwgMTI3NjgxLCAxMjc2ODYsIDEyNzY5MSwgMTI3Njk2LCAxMjc3MDEsIDEyNzcwNiwgCisgICAgMTI3NzExLCAxMjc3MTYsIDEyNzcyMSwgMTI3NzI2LCAxMjc3MzEsIDEyNzczNiwgMTI3NzQxLCAxMjc3NDYsIDEyNzc1MSwgCisgICAgMTI3NzU2LCAxMjc3NjEsIDEyNzc3MCwgMTI3Nzc1LCAxMjc3ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNzc4NSwgMTI3NzkzLCAxMjc4MDEsIDEyNzgwOSwgMTI3ODE3LCAxMjc4MjUsIDEyNzgzMywgMTI3ODQxLCAxMjc4NDksIAorICAgIDEyNzg1NywgMTI3ODY1LCAxMjc4NzMsIDEyNzg4MSwgMTI3ODg5LCAxMjc4OTcsIDEyNzkwNSwgMTI3OTEzLCAxMjc5MjEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzkyOSwgCisgICAgMTI3OTMzLCAxMjc5MzgsIDEyNzk0MywgMTI3OTQ4LCAxMjc5NTIsIDEyNzk1NywgMTI3OTYyLCAxMjc5NjcsIDEyNzk3MSwgCisgICAgMTI3OTc2LCAxMjc5ODEsIDEyNzk4NSwgMTI3OTkwLCAxMjc5OTUsIDEyNzk5OSwgMTI4MDA0LCAxMjgwMDksIDEyODAxMywgCisgICAgMTI4MDE3LCAxMjgwMjIsIDEyODAyNiwgMTI4MDMxLCAxMjgwMzYsIDEyODA0MSwgMTI4MDQ2LCAxMjgwNTEsIDEyODA1NSwgCisgICAgMTI4MDYwLCAxMjgwNjUsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzksIDEyODA4NCwgMTI4MDg5LCAxMjgwOTMsIDEyODA5OCwgCisgICAgMTI4MTAzLCAxMjgxMDcsIDEyODExMiwgMTI4MTE3LCAxMjgxMjEsIDEyODEyNiwgMTI4MTMxLCAxMjgxMzUsIDEyODEzOSwgCisgICAgMTI4MTQ0LCAxMjgxNDgsIDEyODE1MywgMTI4MTU4LCAxMjgxNjMsIDEyODE2OCwgMTI4MTczLCAxMjgxNzcsIDEyODE4MiwgCisgICAgMTI4MTg3LCAxMjgxOTIsIDEyODE5NiwgMTI4MjAxLCAxMjgyMDYsIDEyODIxMSwgMTI4MjE1LCAxMjgyMjAsIDEyODIyNSwgCisgICAgMTI4MjI5LCAxMjgyMzQsIDEyODIzOSwgMTI4MjQzLCAxMjgyNDgsIDEyODI1MywgMTI4MjU3LCAxMjgyNjEsIDEyODI2NiwgCisgICAgMTI4MjcwLCAxMjgyNzUsIDEyODI4MCwgMTI4Mjg1LCAxMjgyOTAsIDEyODI5NSwgMTI4Mjk5LCAxMjgzMDQsIDEyODMwOSwgCisgICAgMTI4MzE0LCAxMjgzMTgsIDEyODMyMywgMCwgMTI4MzI4LCAxMjgzMzIsIDEyODMzNywgMTI4MzQyLCAxMjgzNDYsIAorICAgIDEyODM1MSwgMTI4MzU2LCAxMjgzNjAsIDEyODM2NSwgMTI4MzcwLCAxMjgzNzQsIDEyODM3OCwgMTI4MzgzLCAxMjgzODcsIAorICAgIDEyODM5MiwgMTI4Mzk3LCAxMjg0MDIsIDEyODQwNywgMTI4NDEyLCAxMjg0MTcsIDEyODQyMywgMTI4NDI5LCAxMjg0MzUsIAorICAgIDEyODQ0MCwgMTI4NDQ2LCAxMjg0NTIsIDEyODQ1OCwgMTI4NDYzLCAxMjg0NjksIDEyODQ3NSwgMTI4NDgwLCAxMjg0ODYsIAorICAgIDEyODQ5MiwgMTI4NDk3LCAxMjg1MDMsIDEyODUwOSwgMTI4NTE0LCAxMjg1MTksIDEyODUyNSwgMTI4NTMwLCAxMjg1MzYsIAorICAgIDEyODU0MiwgMTI4NTQ4LCAxMjg1NTQsIDEyODU2MCwgMTI4NTY1LCAxMjg1NzEsIDEyODU3NywgMTI4NTgzLCAxMjg1ODgsIAorICAgIDEyODU5NCwgMTI4NjAwLCAxMjg2MDYsIDEyODYxMSwgMTI4NjE3LCAxMjg2MjMsIDEyODYyOCwgMTI4NjM0LCAxMjg2NDAsIAorICAgIDEyODY0NSwgMTI4NjUxLCAxMjg2NTcsIDEyODY2MiwgMTI4NjY3LCAxMjg2NzMsIDEyODY3OCwgMTI4Njg0LCAxMjg2OTAsIAorICAgIDEyODY5NiwgMTI4NzAyLCAxMjg3MDgsIDAsIDEyODcxMiwgMTI4NzE3LCAwLCAwLCAxMjg3MjIsIDAsIDAsIDEyODcyNywgCisgICAgMTI4NzMyLCAwLCAwLCAxMjg3MzcsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTEsIDAsIDEyODc1NiwgMTI4NzYwLCAxMjg3NjUsIAorICAgIDEyODc2OSwgMTI4Nzc0LCAxMjg3NzksIDEyODc4NCwgMTI4Nzg5LCAxMjg3OTQsIDEyODc5OCwgMTI4ODAzLCAxMjg4MDgsIAorICAgIDAsIDEyODgxMywgMCwgMTI4ODE4LCAxMjg4MjMsIDEyODgyNywgMTI4ODMyLCAxMjg4MzcsIDEyODg0MSwgMTI4ODQ2LCAwLCAKKyAgICAxMjg4NTEsIDEyODg1NiwgMTI4ODYxLCAxMjg4NjUsIDEyODg2OSwgMTI4ODc0LCAxMjg4NzgsIDEyODg4MywgMTI4ODg4LCAKKyAgICAxMjg4OTMsIDEyODg5OCwgMTI4OTAzLCAxMjg5MDgsIDEyODkxNCwgMTI4OTIwLCAxMjg5MjYsIDEyODkzMSwgMTI4OTM3LCAKKyAgICAxMjg5NDMsIDEyODk0OSwgMTI4OTU0LCAxMjg5NjAsIDEyODk2NiwgMTI4OTcxLCAxMjg5NzcsIDEyODk4MywgMTI4OTg4LCAKKyAgICAxMjg5OTQsIDEyOTAwMCwgMTI5MDA1LCAxMjkwMTAsIDEyOTAxNiwgMTI5MDIxLCAxMjkwMjcsIDEyOTAzMywgMTI5MDM5LCAKKyAgICAxMjkwNDUsIDEyOTA1MSwgMTI5MDU2LCAxMjkwNjIsIDEyOTA2OCwgMTI5MDc0LCAxMjkwNzksIDEyOTA4NSwgMTI5MDkxLCAKKyAgICAxMjkwOTcsIDEyOTEwMiwgMTI5MTA4LCAxMjkxMTQsIDEyOTExOSwgMTI5MTI1LCAxMjkxMzEsIDEyOTEzNiwgMTI5MTQyLCAKKyAgICAxMjkxNDgsIDEyOTE1MywgMTI5MTU4LCAxMjkxNjQsIDEyOTE2OSwgMTI5MTc1LCAxMjkxODEsIDEyOTE4NywgMTI5MTkzLCAKKyAgICAxMjkxOTksIDEyOTIwMywgMCwgMTI5MjA4LCAxMjkyMTMsIDEyOTIxNywgMTI5MjIyLCAwLCAwLCAxMjkyMjcsIDEyOTIzMiwgCisgICAgMTI5MjM3LCAxMjkyNDEsIDEyOTI0NiwgMTI5MjUxLCAxMjkyNTUsIDEyOTI2MCwgMCwgMTI5MjY1LCAxMjkyNjksIAorICAgIDEyOTI3NCwgMTI5Mjc4LCAxMjkyODMsIDEyOTI4OCwgMTI5MjkzLCAwLCAxMjkyOTgsIDEyOTMwMiwgMTI5MzA3LCAKKyAgICAxMjkzMTIsIDEyOTMxNywgMTI5MzIxLCAxMjkzMjYsIDEyOTMzMSwgMTI5MzM2LCAxMjkzNDAsIDEyOTM0NSwgMTI5MzUwLCAKKyAgICAxMjkzNTQsIDEyOTM1OSwgMTI5MzY0LCAxMjkzNjgsIDEyOTM3MywgMTI5Mzc4LCAxMjkzODIsIDEyOTM4NiwgMTI5MzkxLCAKKyAgICAxMjkzOTUsIDEyOTQwMCwgMTI5NDA1LCAxMjk0MTAsIDEyOTQxNSwgMTI5NDIwLCAxMjk0MjQsIDAsIDEyOTQyOSwgCisgICAgMTI5NDM0LCAxMjk0MzgsIDEyOTQ0MywgMCwgMTI5NDQ4LCAxMjk0NTIsIDEyOTQ1NywgMTI5NDYyLCAxMjk0NjYsIDAsIAorICAgIDEyOTQ3MSwgMCwgMCwgMCwgMTI5NDc1LCAxMjk0NzksIDEyOTQ4NCwgMTI5NDg4LCAxMjk0OTMsIDEyOTQ5OCwgMTI5NTAzLCAKKyAgICAwLCAxMjk1MDgsIDEyOTUxMiwgMTI5NTE3LCAxMjk1MjIsIDEyOTUyNywgMTI5NTMxLCAxMjk1MzYsIDEyOTU0MSwgCisgICAgMTI5NTQ2LCAxMjk1NTAsIDEyOTU1NSwgMTI5NTYwLCAxMjk1NjQsIDEyOTU2OSwgMTI5NTc0LCAxMjk1NzgsIDEyOTU4MywgCisgICAgMTI5NTg4LCAxMjk1OTIsIDEyOTU5NiwgMTI5NjAxLCAxMjk2MDUsIDEyOTYxMCwgMTI5NjE1LCAxMjk2MjAsIDEyOTYyNSwgCisgICAgMTI5NjMwLCAxMjk2MzUsIDEyOTY0MSwgMTI5NjQ3LCAxMjk2NTMsIDEyOTY1OCwgMTI5NjY0LCAxMjk2NzAsIDEyOTY3NiwgCisgICAgMTI5NjgxLCAxMjk2ODcsIDEyOTY5MywgMTI5Njk4LCAxMjk3MDQsIDEyOTcxMCwgMTI5NzE1LCAxMjk3MjEsIDEyOTcyNywgCisgICAgMTI5NzMyLCAxMjk3MzcsIDEyOTc0MywgMTI5NzQ4LCAxMjk3NTQsIDEyOTc2MCwgMTI5NzY2LCAxMjk3NzIsIDEyOTc3OCwgCisgICAgMTI5NzgzLCAxMjk3ODksIDEyOTc5NSwgMTI5ODAxLCAxMjk4MDYsIDEyOTgxMiwgMTI5ODE4LCAxMjk4MjQsIDEyOTgyOSwgCisgICAgMTI5ODM1LCAxMjk4NDEsIDEyOTg0NiwgMTI5ODUyLCAxMjk4NTgsIDEyOTg2MywgMTI5ODY5LCAxMjk4NzUsIDEyOTg4MCwgCisgICAgMTI5ODg1LCAxMjk4OTEsIDEyOTg5NiwgMTI5OTAyLCAxMjk5MDgsIDEyOTkxNCwgMTI5OTIwLCAxMjk5MjYsIDEyOTkzMCwgCisgICAgMTI5OTM1LCAxMjk5NDAsIDEyOTk0NSwgMTI5OTQ5LCAxMjk5NTQsIDEyOTk1OSwgMTI5OTY0LCAxMjk5NjgsIDEyOTk3MywgCisgICAgMTI5OTc4LCAxMjk5ODIsIDEyOTk4NywgMTI5OTkyLCAxMjk5OTYsIDEzMDAwMSwgMTMwMDA2LCAxMzAwMTAsIDEzMDAxNCwgCisgICAgMTMwMDE5LCAxMzAwMjMsIDEzMDAyOCwgMTMwMDMzLCAxMzAwMzgsIDEzMDA0MywgMTMwMDQ4LCAxMzAwNTIsIDEzMDA1NywgCisgICAgMTMwMDYyLCAxMzAwNjcsIDEzMDA3MSwgMTMwMDc2LCAxMzAwODEsIDEzMDA4NiwgMTMwMDkwLCAxMzAwOTUsIDEzMDEwMCwgCisgICAgMTMwMTA0LCAxMzAxMDksIDEzMDExNCwgMTMwMTE4LCAxMzAxMjMsIDEzMDEyOCwgMTMwMTMyLCAxMzAxMzYsIDEzMDE0MSwgCisgICAgMTMwMTQ1LCAxMzAxNTAsIDEzMDE1NSwgMTMwMTYwLCAxMzAxNjUsIDEzMDE3MCwgMTMwMTc1LCAxMzAxODEsIDEzMDE4NywgCisgICAgMTMwMTkzLCAxMzAxOTgsIDEzMDIwNCwgMTMwMjEwLCAxMzAyMTYsIDEzMDIyMSwgMTMwMjI3LCAxMzAyMzMsIDEzMDIzOCwgCisgICAgMTMwMjQ0LCAxMzAyNTAsIDEzMDI1NSwgMTMwMjYxLCAxMzAyNjcsIDEzMDI3MiwgMTMwMjc3LCAxMzAyODMsIDEzMDI4OCwgCisgICAgMTMwMjk0LCAxMzAzMDAsIDEzMDMwNiwgMTMwMzEyLCAxMzAzMTgsIDEzMDMyMywgMTMwMzI5LCAxMzAzMzUsIDEzMDM0MSwgCisgICAgMTMwMzQ2LCAxMzAzNTIsIDEzMDM1OCwgMTMwMzY0LCAxMzAzNjksIDEzMDM3NSwgMTMwMzgxLCAxMzAzODYsIDEzMDM5MiwgCisgICAgMTMwMzk4LCAxMzA0MDMsIDEzMDQwOSwgMTMwNDE1LCAxMzA0MjAsIDEzMDQyNSwgMTMwNDMxLCAxMzA0MzYsIDEzMDQ0MiwgCisgICAgMTMwNDQ4LCAxMzA0NTQsIDEzMDQ2MCwgMTMwNDY2LCAxMzA0NzEsIDEzMDQ3NywgMTMwNDgzLCAxMzA0ODksIDEzMDQ5NCwgCisgICAgMTMwNTAwLCAxMzA1MDYsIDEzMDUxMiwgMTMwNTE3LCAxMzA1MjMsIDEzMDUyOSwgMTMwNTM0LCAxMzA1NDAsIDEzMDU0NiwgCisgICAgMTMwNTUxLCAxMzA1NTcsIDEzMDU2MywgMTMwNTY4LCAxMzA1NzMsIDEzMDU3OSwgMTMwNTg0LCAxMzA1OTAsIDEzMDU5NiwgCisgICAgMTMwNjAyLCAxMzA2MDgsIDEzMDYxNCwgMTMwNjE5LCAxMzA2MjUsIDEzMDYzMSwgMTMwNjM3LCAxMzA2NDIsIDEzMDY0OCwgCisgICAgMTMwNjU0LCAxMzA2NjAsIDEzMDY2NSwgMTMwNjcxLCAxMzA2NzcsIDEzMDY4MiwgMTMwNjg4LCAxMzA2OTQsIDEzMDY5OSwgCisgICAgMTMwNzA1LCAxMzA3MTEsIDEzMDcxNiwgMTMwNzIxLCAxMzA3MjcsIDEzMDczMiwgMTMwNzM4LCAxMzA3NDQsIDEzMDc1MCwgCisgICAgMTMwNzU2LCAxMzA3NjIsIDEzMDc2OCwgMTMwNzc1LCAxMzA3ODIsIDEzMDc4OSwgMTMwNzk1LCAxMzA4MDIsIDEzMDgwOSwgCisgICAgMTMwODE2LCAxMzA4MjIsIDEzMDgyOSwgMTMwODM2LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAxMzA4NjIsIDEzMDg2OSwgCisgICAgMTMwODc2LCAxMzA4ODIsIDEzMDg4OCwgMTMwODk1LCAxMzA5MDEsIDEzMDkwOCwgMTMwOTE1LCAxMzA5MjIsIDEzMDkyOSwgCisgICAgMTMwOTM2LCAxMzA5NDIsIDEzMDk0OSwgMTMwOTU2LCAxMzA5NjMsIDEzMDk2OSwgMTMwOTc2LCAxMzA5ODMsIDEzMDk5MCwgCisgICAgMTMwOTk2LCAxMzEwMDMsIDEzMTAxMCwgMTMxMDE2LCAxMzEwMjMsIDEzMTAzMCwgMTMxMDM2LCAxMzEwNDMsIDEzMTA1MCwgCisgICAgMTMxMDU2LCAxMzEwNjIsIDEzMTA2OSwgMTMxMDc1LCAxMzEwODIsIDEzMTA4OSwgMTMxMDk2LCAxMzExMDMsIDEzMTExMCwgCisgICAgMTMxMTE1LCAxMzExMjEsIDEzMTEyNywgMTMxMTMzLCAxMzExMzgsIDEzMTE0NCwgMTMxMTUwLCAxMzExNTYsIDEzMTE2MSwgCisgICAgMTMxMTY3LCAxMzExNzMsIDEzMTE3OCwgMTMxMTg0LCAxMzExOTAsIDEzMTE5NSwgMTMxMjAxLCAxMzEyMDcsIDEzMTIxMiwgCisgICAgMTMxMjE3LCAxMzEyMjMsIDEzMTIyOCwgMTMxMjM0LCAxMzEyNDAsIDEzMTI0NiwgMTMxMjUyLCAxMzEyNTgsIDEzMTI2MywgCisgICAgMTMxMjY5LCAxMzEyNzUsIDEzMTI4MSwgMTMxMjg2LCAxMzEyOTIsIDEzMTI5OCwgMTMxMzA0LCAxMzEzMDksIDEzMTMxNSwgCisgICAgMTMxMzIxLCAxMzEzMjYsIDEzMTMzMiwgMTMxMzM4LCAxMzEzNDMsIDEzMTM0OSwgMTMxMzU1LCAxMzEzNjAsIDEzMTM2NSwgCisgICAgMTMxMzcxLCAxMzEzNzYsIDEzMTM4MiwgMTMxMzg4LCAxMzEzOTQsIDEzMTQwMCwgMTMxNDA2LCAxMzE0MTIsIDAsIDAsIAorICAgIDEzMTQxOSwgMTMxNDI0LCAxMzE0MjksIDEzMTQzNCwgMTMxNDM5LCAxMzE0NDQsIDEzMTQ0OSwgMTMxNDU0LCAxMzE0NTksIAorICAgIDEzMTQ2NCwgMTMxNDY5LCAxMzE0NzQsIDEzMTQ3OSwgMTMxNDg0LCAxMzE0ODksIDEzMTQ5NCwgMTMxNDk5LCAxMzE1MDQsIAorICAgIDEzMTUxMCwgMTMxNTE1LCAxMzE1MjAsIDEzMTUyNSwgMTMxNTMwLCAxMzE1MzUsIDEzMTU0MCwgMTMxNTQ1LCAxMzE1NDksIAorICAgIDEzMTU1NCwgMTMxNTU5LCAxMzE1NjQsIDEzMTU2OSwgMTMxNTc0LCAxMzE1NzksIDEzMTU4NCwgMTMxNTg5LCAxMzE1OTQsIAorICAgIDEzMTU5OSwgMTMxNjA0LCAxMzE2MDksIDEzMTYxNCwgMTMxNjE5LCAxMzE2MjQsIDEzMTYyOSwgMTMxNjM0LCAxMzE2NDAsIAorICAgIDEzMTY0NSwgMTMxNjUwLCAxMzE2NTUsIDEzMTY2MCwgMTMxNjY1LCAxMzE2NzAsIDEzMTY3NSwgMTMxNjgxLCAxMzE2ODYsIAorICAgIDEzMTY5MSwgMTMxNjk2LCAxMzE3MDEsIDEzMTcwNiwgMTMxNzExLCAxMzE3MTYsIDEzMTcyMSwgMTMxNzI2LCAxMzE3MzEsIAorICAgIDEzMTczNiwgMTMxNzQxLCAxMzE3NDYsIDEzMTc1MSwgMTMxNzU2LCAxMzE3NjEsIDEzMTc2NiwgMTMxNzcxLCAxMzE3NzYsIAorICAgIDEzMTc4MSwgMTMxNzg2LCAxMzE3OTEsIDEzMTc5NiwgMTMxODAyLCAxMzE4MDcsIDEzMTgxMiwgMTMxODE3LCAxMzE4MjIsIAorICAgIDEzMTgyNywgMTMxODMyLCAxMzE4MzcsIDEzMTg0MSwgMTMxODQ2LCAxMzE4NTEsIDEzMTg1NiwgMTMxODYxLCAxMzE4NjYsIAorICAgIDEzMTg3MSwgMTMxODc2LCAxMzE4ODEsIDEzMTg4NiwgMTMxODkxLCAxMzE4OTYsIDEzMTkwMSwgMTMxOTA2LCAxMzE5MTEsIAorICAgIDEzMTkxNiwgMTMxOTIxLCAxMzE5MjYsIDEzMTkzMiwgMTMxOTM3LCAxMzE5NDIsIDEzMTk0NywgMTMxOTUyLCAxMzE5NTcsIAorICAgIDEzMTk2MiwgMTMxOTY3LCAxMzE5NzMsIDEzMTk3OCwgMTMxOTgzLCAxMzE5ODgsIDEzMTk5MywgMTMxOTk4LCAxMzIwMDMsIAorICAgIDEzMjAwOSwgMTMyMDE1LCAxMzIwMjEsIDEzMjAyNywgMTMyMDMzLCAxMzIwMzksIDEzMjA0NSwgMTMyMDUxLCAxMzIwNTcsIAorICAgIDEzMjA2MywgMTMyMDY5LCAxMzIwNzUsIDEzMjA4MSwgMTMyMDg3LCAxMzIwOTMsIDEzMjA5OSwgMTMyMTA1LCAxMzIxMTIsIAorICAgIDEzMjExOCwgMTMyMTI0LCAxMzIxMzAsIDEzMjEzNiwgMTMyMTQyLCAxMzIxNDgsIDEzMjE1NCwgMTMyMTU5LCAxMzIxNjUsIAorICAgIDEzMjE3MSwgMTMyMTc3LCAxMzIxODMsIDEzMjE4OSwgMTMyMTk1LCAxMzIyMDEsIDEzMjIwNywgMTMyMjEzLCAxMzIyMTksIAorICAgIDEzMjIyNSwgMTMyMjMxLCAxMzIyMzcsIDEzMjI0MywgMTMyMjQ5LCAxMzIyNTUsIDEzMjI2MSwgMTMyMjY4LCAxMzIyNzQsIAorICAgIDEzMjI4MCwgMTMyMjg2LCAxMzIyOTIsIDEzMjI5OCwgMTMyMzA0LCAxMzIzMTAsIDEzMjMxNywgMTMyMzIzLCAxMzIzMjksIAorICAgIDEzMjMzNSwgMTMyMzQxLCAxMzIzNDcsIDEzMjM1MywgMTMyMzU5LCAxMzIzNjUsIDEzMjM3MSwgMTMyMzc3LCAxMzIzODMsIAorICAgIDEzMjM4OSwgMTMyMzk1LCAxMzI0MDEsIDEzMjQwNywgMTMyNDEzLCAxMzI0MTksIDEzMjQyNSwgMTMyNDMxLCAxMzI0MzcsIAorICAgIDEzMjQ0MywgMTMyNDQ5LCAxMzI0NTUsIDEzMjQ2MiwgMTMyNDY4LCAxMzI0NzQsIDEzMjQ4MCwgMTMyNDg2LCAxMzI0OTIsIAorICAgIDEzMjQ5OCwgMTMyNTA0LCAxMzI1MDksIDEzMjUxNSwgMTMyNTIxLCAxMzI1MjcsIDEzMjUzMywgMTMyNTM5LCAxMzI1NDUsIAorICAgIDEzMjU1MSwgMTMyNTU3LCAxMzI1NjMsIDEzMjU2OSwgMTMyNTc1LCAxMzI1ODEsIDEzMjU4NywgMTMyNTkzLCAxMzI1OTksIAorICAgIDEzMjYwNSwgMTMyNjExLCAxMzI2MTgsIDEzMjYyNCwgMTMyNjMwLCAxMzI2MzYsIDEzMjY0MiwgMTMyNjQ4LCAxMzI2NTQsIAorICAgIDEzMjY2MCwgMTMyNjY3LCAxMzI2NzMsIDEzMjY3OSwgMTMyNjg1LCAxMzI2OTEsIDEzMjY5NywgMTMyNzAzLCAxMzI3MTAsIAorICAgIDEzMjcxNywgMTMyNzI0LCAxMzI3MzEsIDEzMjczOCwgMTMyNzQ1LCAxMzI3NTIsIDEzMjc1OSwgMTMyNzY2LCAxMzI3NzMsIAorICAgIDEzMjc4MCwgMTMyNzg3LCAxMzI3OTQsIDEzMjgwMSwgMTMyODA4LCAxMzI4MTUsIDEzMjgyMiwgMTMyODMwLCAxMzI4MzcsIAorICAgIDEzMjg0NCwgMTMyODUxLCAxMzI4NTgsIDEzMjg2NSwgMTMyODcyLCAxMzI4NzksIDEzMjg4NSwgMTMyODkyLCAxMzI4OTksIAorICAgIDEzMjkwNiwgMTMyOTEzLCAxMzI5MjAsIDEzMjkyNywgMTMyOTM0LCAxMzI5NDEsIDEzMjk0OCwgMTMyOTU1LCAxMzI5NjIsIAorICAgIDEzMjk2OSwgMTMyOTc2LCAxMzI5ODMsIDEzMjk5MCwgMTMyOTk3LCAxMzMwMDQsIDEzMzAxMiwgMTMzMDE5LCAxMzMwMjYsIAorICAgIDEzMzAzMywgMTMzMDQwLCAxMzMwNDcsIDEzMzA1NCwgMTMzMDYxLCAxMzMwNjksIDEzMzA3NiwgMTMzMDgzLCAxMzMwOTAsIAorICAgIDEzMzA5NywgMTMzMTA0LCAxMzMxMTEsIDEzMzExNiwgMCwgMCwgMTMzMTIxLCAxMzMxMjYsIDEzMzEzMCwgMTMzMTM0LCAKKyAgICAxMzMxMzgsIDEzMzE0MiwgMTMzMTQ2LCAxMzMxNTAsIDEzMzE1NCwgMTMzMTU4LCAxMzMxNjIsIDEzMzE2NywgMTMzMTcxLCAKKyAgICAxMzMxNzUsIDEzMzE3OSwgMTMzMTgzLCAxMzMxODcsIDEzMzE5MSwgMTMzMTk1LCAxMzMxOTksIDEzMzIwMywgMTMzMjA4LCAKKyAgICAxMzMyMTIsIDEzMzIxNiwgMTMzMjIwLCAxMzMyMjQsIDEzMzIyOCwgMTMzMjMyLCAxMzMyMzYsIDEzMzI0MCwgMTMzMjQ0LCAKKyAgICAxMzMyNTAsIDEzMzI1NSwgMTMzMjYwLCAxMzMyNjUsIDEzMzI3MCwgMTMzMjc1LCAxMzMyODAsIDEzMzI4NSwgMTMzMjkwLCAKKyAgICAxMzMyOTUsIDEzMzMwMSwgMTMzMzA2LCAxMzMzMTEsIDEzMzMxNiwgMTMzMzIxLCAxMzMzMjYsIDEzMzMzMSwgMTMzMzM2LCAKKyAgICAxMzMzNDEsIDEzMzM0NiwgMTMzMzUzLCAxMzMzNTksIDEzMzM2NiwgMTMzMzczLCAxMzMzODAsIDEzMzM4NywgMTMzMzk0LCAKKyAgICAxMzM0MDEsIDEzMzQwOCwgMTMzNDE1LCAxMzM0MjIsIDEzMzQyOSwgMTMzNDM2LCAxMzM0NDMsIDEzMzQ1MCwgMTMzNDU3LCAKKyAgICAxMzM0NjQsIDEzMzQ3MSwgMTMzNDc4LCAxMzM0ODUsIDEzMzQ5MiwgMTMzNDk5LCAxMzM1MDYsIDEzMzUxMywgMTMzNTIwLCAKKyAgICAxMzM1MjcsIDEzMzUzNCwgMTMzNTQxLCAxMzM1NDgsIDEzMzU1NSwgMTMzNTYyLCAxMzM1NjksIDEzMzU3NiwgMTMzNTgzLCAKKyAgICAxMzM1ODksIDEzMzU5NSwgMTMzNjAxLCAxMzM2MDgsIDEzMzYxNCwgMTMzNjIxLCAxMzM2MjcsIDEzMzYzNCwgMTMzNjQxLCAKKyAgICAxMzM2NDgsIDEzMzY1NSwgMTMzNjYyLCAxMzM2NjksIDEzMzY3NiwgMTMzNjgzLCAxMzM2OTAsIDEzMzY5NywgMTMzNzA0LCAKKyAgICAxMzM3MTEsIDEzMzcxOCwgMTMzNzI1LCAxMzM3MzIsIDEzMzczOSwgMTMzNzQ2LCAxMzM3NTMsIDEzMzc2MCwgMTMzNzY3LCAKKyAgICAxMzM3NzUsIDEzMzc4MiwgMTMzNzg5LCAxMzM3OTYsIDEzMzgwMywgMTMzODEwLCAxMzM4MTcsIDEzMzgyNCwgMTMzODMxLCAKKyAgICAxMzM4MzgsIDEzMzg0NSwgMTMzODUyLCAxMzM4NTksIDEzMzg2NSwgMTMzODcyLCAxMzM4NzksIDEzMzg4NiwgMTMzODkzLCAKKyAgICAxMzM5MDAsIDEzMzkwNywgMTMzOTE0LCAxMzM5MjIsIDEzMzkyOSwgMTMzOTM1LCAxMzM5NDIsIDEzMzk0OSwgMTMzOTU2LCAKKyAgICAxMzM5NjMsIDEzMzk3MCwgMTMzOTc3LCAxMzM5ODQsIDEzMzk5MSwgMTMzOTk4LCAxMzQwMDUsIDEzNDAxMiwgMTM0MDE5LCAKKyAgICAxMzQwMjYsIDEzNDAzMywgMTM0MDQwLCAxMzQwNDcsIDEzNDA1NCwgMTM0MDYxLCAxMzQwNjgsIDEzNDA3NSwgMTM0MDgxLCAKKyAgICAxMzQwODgsIDEzNDA5NSwgMTM0MTAyLCAxMzQxMDksIDEzNDExNiwgMTM0MTIzLCAxMzQxMzAsIDEzNDEzNywgMTM0MTQ0LCAKKyAgICAxMzQxNTEsIDEzNDE1OCwgMTM0MTY1LCAxMzQxNzIsIDEzNDE3OSwgMTM0MTg2LCAxMzQxOTMsIDEzNDIwMCwgMTM0MjA3LCAKKyAgICAxMzQyMTQsIDEzNDIyMSwgMTM0MjI4LCAxMzQyMzUsIDEzNDI0MywgMTM0MjUxLCAxMzQyNTksIDEzNDI2NiwgMTM0MjczLCAKKyAgICAxMzQyODAsIDEzNDI4NywgMTM0Mjk0LCAxMzQzMDEsIDEzNDMwOCwgMTM0MzE1LCAxMzQzMjIsIDEzNDMyOSwgMTM0MzM1LCAKKyAgICAxMzQzNDIsIDEzNDM0OSwgMTM0MzU2LCAxMzQzNjMsIDEzNDM3MCwgMTM0Mzc3LCAxMzQzODQsIDEzNDM5MSwgMTM0Mzk4LCAKKyAgICAxMzQ0MDUsIDEzNDQxMiwgMTM0NDE5LCAxMzQ0MjYsIDEzNDQzMywgMTM0NDQxLCAxMzQ0NDksIDEzNDQ1NywgMTM0NDY0LCAKKyAgICAxMzQ0NzEsIDEzNDQ3OCwgMTM0NDg1LCAxMzQ0OTIsIDEzNDQ5OSwgMTM0NTA2LCAxMzQ1MTMsIDEzNDUyMCwgMTM0NTI3LCAKKyAgICAxMzQ1MzQsIDEzNDU0MSwgMTM0NTQ4LCAxMzQ1NTUsIDEzNDU2MiwgMTM0NTY5LCAxMzQ1NzYsIDEzNDU4MywgMTM0NTkwLCAKKyAgICAxMzQ1OTcsIDEzNDYwNCwgMTM0NjExLCAxMzQ2MTgsIDEzNDYyNSwgMTM0NjMyLCAxMzQ2MzksIDEzNDY0NiwgMTM0NjUzLCAKKyAgICAxMzQ2NjAsIDEzNDY2NywgMTM0Njc0LCAxMzQ2ODEsIDEzNDY4OCwgMTM0Njk1LCAxMzQ3MDIsIDEzNDcwOSwgMTM0NzE2LCAKKyAgICAwLCAwLCAxMzQ3MjMsIDEzNDcyNywgMTM0NzMxLCAxMzQ3MzUsIDEzNDczOSwgMTM0NzQzLCAxMzQ3NDcsIDEzNDc1MSwgCisgICAgMTM0NzU1LCAxMzQ3NTksIDEzNDc2NSwgMTM0NzcxLCAxMzQ3NzcsIDEzNDc4MywgMTM0NzkxLCAxMzQ3OTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDgwNSwgMTM0ODA5LCAxMzQ4MTMsIDEzNDgxNywgCisgICAgMCwgMTM0ODIxLCAxMzQ4MjUsIDEzNDgyOSwgMTM0ODMzLCAxMzQ4MzcsIDEzNDg0MSwgMTM0ODQ1LCAxMzQ4NDksIAorICAgIDEzNDg1MywgMTM0ODU3LCAxMzQ4NjEsIDEzNDg2NSwgMTM0ODY5LCAxMzQ4NzMsIDEzNDg3NywgMTM0ODgxLCAxMzQ4ODUsIAorICAgIDEzNDg4OSwgMTM0ODkzLCAxMzQ4OTcsIDEzNDkwMSwgMTM0OTA1LCAxMzQ5MDksIDEzNDkxMywgMTM0OTE5LCAxMzQ5MjUsIAorICAgIDEzNDkzMSwgMCwgMTM0OTM3LCAxMzQ5NDIsIDAsIDEzNDk0NywgMCwgMCwgMTM0OTUyLCAwLCAxMzQ5NTcsIDEzNDk2MiwgCisgICAgMTM0OTY3LCAxMzQ5NzIsIDEzNDk3NywgMTM0OTgyLCAxMzQ5ODcsIDEzNDk5MiwgMTM0OTk3LCAxMzUwMDIsIDAsIAorICAgIDEzNTAwNywgMTM1MDEyLCAxMzUwMTcsIDEzNTAyMiwgMCwgMTM1MDI3LCAwLCAxMzUwMzIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTAzNywgMCwgMCwgMCwgMCwgMTM1MDQzLCAwLCAxMzUwNDksIDAsIDEzNTA1NSwgMCwgMTM1MDYxLCAxMzUwNjcsIAorICAgIDEzNTA3MywgMCwgMTM1MDc5LCAxMzUwODUsIDAsIDEzNTA5MSwgMCwgMCwgMTM1MDk3LCAwLCAxMzUxMDMsIDAsIDEzNTEwOSwgCisgICAgMCwgMTM1MTE1LCAwLCAxMzUxMjMsIDAsIDEzNTEzMSwgMTM1MTM3LCAwLCAxMzUxNDMsIDAsIDAsIDEzNTE0OSwgMTM1MTU1LCAKKyAgICAxMzUxNjEsIDEzNTE2NywgMCwgMTM1MTczLCAxMzUxNzksIDEzNTE4NSwgMTM1MTkxLCAxMzUxOTcsIDEzNTIwMywgCisgICAgMTM1MjA5LCAwLCAxMzUyMTUsIDEzNTIyMSwgMTM1MjI3LCAxMzUyMzMsIDAsIDEzNTIzOSwgMTM1MjQ1LCAxMzUyNTEsIAorICAgIDEzNTI1NywgMCwgMTM1MjY1LCAwLCAxMzUyNzMsIDEzNTI3OSwgMTM1Mjg1LCAxMzUyOTEsIDEzNTI5NywgMTM1MzAzLCAKKyAgICAxMzUzMDksIDEzNTMxNSwgMTM1MzIxLCAxMzUzMjcsIDAsIDEzNTMzMywgMTM1MzM5LCAxMzUzNDUsIDEzNTM1MSwgCisgICAgMTM1MzU3LCAxMzUzNjMsIDEzNTM2OSwgMTM1Mzc1LCAxMzUzODEsIDEzNTM4NywgMTM1MzkzLCAxMzUzOTksIDEzNTQwNSwgCisgICAgMTM1NDExLCAxMzU0MTcsIDEzNTQyMywgMTM1NDI5LCAwLCAwLCAwLCAwLCAwLCAxMzU0MzUsIDEzNTQ0MCwgMTM1NDQ1LCAwLCAKKyAgICAxMzU0NTAsIDEzNTQ1NSwgMTM1NDYwLCAxMzU0NjUsIDEzNTQ3MCwgMCwgMTM1NDc1LCAxMzU0ODAsIDEzNTQ4NSwgCisgICAgMTM1NDkwLCAxMzU0OTUsIDEzNTUwMCwgMTM1NTA1LCAxMzU1MTAsIDEzNTUxNSwgMTM1NTIwLCAxMzU1MjUsIDEzNTUzMCwgCisgICAgMTM1NTM1LCAxMzU1NDAsIDEzNTU0NSwgMTM1NTUwLCAxMzU1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTU2MCwgMTM1NTcwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU1NzgsIDEzNTU4NSwgMTM1NTkxLCAxMzU1OTgsIAorICAgIDEzNTYwNCwgMTM1NjExLCAxMzU2MTgsIDEzNTYyNCwgMTM1NjMxLCAxMzU2MzgsIDEzNTY0NSwgMTM1NjUzLCAxMzU2NjEsIAorICAgIDEzNTY2OSwgMTM1Njc3LCAxMzU2ODUsIDEzNTY5MywgMTM1NzAwLCAxMzU3MDcsIDEzNTcxNCwgMTM1NzIyLCAxMzU3MzAsIAorICAgIDEzNTczOCwgMTM1NzQ2LCAxMzU3NTQsIDEzNTc2MiwgMTM1NzY5LCAxMzU3NzYsIDEzNTc4MywgMTM1NzkxLCAxMzU3OTksIAorICAgIDEzNTgwNywgMTM1ODE1LCAxMzU4MjMsIDEzNTgzMSwgMTM1ODM2LCAxMzU4NDEsIDEzNTg0NiwgMTM1ODUxLCAxMzU4NTYsIAorICAgIDEzNTg2MSwgMTM1ODY2LCAxMzU4NzEsIDEzNTg3NiwgMCwgMCwgMCwgMCwgMTM1ODgxLCAxMzU4ODYsIDEzNTg5MCwgCisgICAgMTM1ODk0LCAxMzU4OTgsIDEzNTkwMiwgMTM1OTA2LCAxMzU5MTAsIDEzNTkxNCwgMTM1OTE4LCAxMzU5MjIsIDEzNTkyNiwgCisgICAgMTM1OTMwLCAxMzU5MzQsIDEzNTkzOCwgMTM1OTQyLCAxMzU5NDYsIDEzNTk1MCwgMTM1OTU0LCAxMzU5NTgsIDEzNTk2MiwgCisgICAgMTM1OTY2LCAxMzU5NzAsIDEzNTk3NCwgMTM1OTc4LCAxMzU5ODIsIDEzNTk4NiwgMTM1OTkwLCAxMzU5OTQsIDEzNTk5OCwgCisgICAgMTM2MDAyLCAxMzYwMDYsIDEzNjAxMCwgMTM2MDE0LCAxMzYwMTgsIDEzNjAyMiwgMTM2MDI2LCAxMzYwMzAsIDEzNjAzNCwgCisgICAgMTM2MDM4LCAxMzYwNDIsIDEzNjA0NiwgMTM2MDUwLCAxMzYwNTQsIDEzNjA1OCwgMTM2MDYyLCAxMzYwNjYsIDEzNjA3MCwgCisgICAgMTM2MDc0LCAxMzYwNzgsIDEzNjA4MiwgMTM2MDg3LCAxMzYwOTEsIDEzNjA5NSwgMTM2MDk5LCAxMzYxMDMsIDEzNjEwNywgCisgICAgMTM2MTExLCAxMzYxMTUsIDEzNjExOSwgMTM2MTIzLCAxMzYxMjcsIDEzNjEzMSwgMTM2MTM1LCAxMzYxMzksIDEzNjE0MywgCisgICAgMTM2MTQ3LCAxMzYxNTEsIDEzNjE1NSwgMTM2MTU5LCAxMzYxNjMsIDEzNjE2NywgMTM2MTcxLCAxMzYxNzUsIDEzNjE3OSwgCisgICAgMTM2MTgzLCAxMzYxODcsIDEzNjE5MSwgMTM2MTk1LCAxMzYxOTksIDEzNjIwMywgMTM2MjA3LCAxMzYyMTEsIDEzNjIxNSwgCisgICAgMTM2MjE5LCAxMzYyMjMsIDEzNjIyNywgMTM2MjMxLCAxMzYyMzUsIDEzNjIzOSwgMTM2MjQzLCAxMzYyNDcsIDEzNjI1MSwgCisgICAgMTM2MjU1LCAxMzYyNTksIDEzNjI2MywgMTM2MjY3LCAxMzYyNzEsIDEzNjI3NSwgMTM2Mjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzYyODMsIDEzNjI4OCwgMTM2Mjk2LCAxMzYzMDMsIDEzNjMxMCwgMTM2MzE4LCAxMzYzMjYsIAorICAgIDEzNjMzNCwgMTM2MzQyLCAxMzYzNTAsIDEzNjM1OCwgMTM2MzY2LCAxMzYzNzQsIDEzNjM4MiwgMTM2MzkwLCAwLCAwLCAKKyAgICAxMzYzOTgsIDEzNjQwNiwgMTM2NDEzLCAxMzY0MjAsIDEzNjQyOCwgMTM2NDM2LCAxMzY0NDQsIDEzNjQ1MiwgMTM2NDYwLCAKKyAgICAxMzY0NjgsIDEzNjQ3NiwgMTM2NDg0LCAxMzY0OTIsIDEzNjUwMCwgMTM2NTA4LCAwLCAxMzY1MTUsIDEzNjUyMywgCisgICAgMTM2NTMwLCAxMzY1MzcsIDEzNjU0NSwgMTM2NTUzLCAxMzY1NjEsIDEzNjU2OSwgMTM2NTc3LCAxMzY1ODUsIDEzNjU5MywgCisgICAgMTM2NjAxLCAxMzY2MDksIDEzNjYxNywgMTM2NjI1LCAwLCAxMzY2MzEsIDEzNjYzOSwgMTM2NjQ2LCAxMzY2NTMsIAorICAgIDEzNjY2MSwgMTM2NjY5LCAxMzY2NzcsIDEzNjY4NSwgMTM2NjkzLCAxMzY3MDEsIDEzNjcwOSwgMTM2NzE3LCAxMzY3MjUsIAorICAgIDEzNjczMywgMTM2NzQxLCAxMzY3NDcsIDEzNjc1MiwgMTM2NzU3LCAxMzY3NjIsIDEzNjc2NywgMTM2NzcyLCAxMzY3NzcsIAorICAgIDEzNjc4MiwgMTM2Nzg3LCAxMzY3OTIsIDEzNjc5NywgMTM2ODAyLCAxMzY4MDcsIDEzNjgxMiwgMTM2ODE3LCAxMzY4MjIsIAorICAgIDEzNjgyNywgMTM2ODMyLCAxMzY4MzcsIDEzNjg0MiwgMTM2ODQ3LCAxMzY4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNjg1NywgMTM2ODY0LCAxMzY4NjksIDEzNjg3MywgMTM2ODc3LCAxMzY4ODEsIDEzNjg4NiwgMTM2ODkxLCAKKyAgICAxMzY4OTYsIDEzNjkwMSwgMTM2OTA2LCAxMzY5MTEsIDEzNjkxOCwgMCwgMCwgMCwgMTM2OTI2LCAxMzY5MzEsIDEzNjkzNywgCisgICAgMTM2OTQzLCAxMzY5NDksIDEzNjk1NCwgMTM2OTYwLCAxMzY5NjYsIDEzNjk3MiwgMTM2OTc3LCAxMzY5ODMsIDEzNjk4OSwgCisgICAgMTM2OTk0LCAxMzcwMDAsIDEzNzAwNiwgMTM3MDExLCAxMzcwMTcsIDEzNzAyMywgMTM3MDI4LCAxMzcwMzMsIDEzNzAzOSwgCisgICAgMTM3MDQ0LCAxMzcwNTAsIDEzNzA1NiwgMTM3MDYyLCAxMzcwNjgsIDEzNzA3NCwgMTM3MDg0LCAxMzcwOTEsIDEzNzA5NywgCisgICAgMTM3MTAwLCAwLCAxMzcxMDMsIDEzNzEwOCwgMTM3MTE0LCAxMzcxMjAsIDEzNzEyNiwgMTM3MTMxLCAxMzcxMzcsIAorICAgIDEzNzE0MywgMTM3MTQ5LCAxMzcxNTQsIDEzNzE2MCwgMTM3MTY2LCAxMzcxNzEsIDEzNzE3NywgMTM3MTgzLCAxMzcxODgsIAorICAgIDEzNzE5NCwgMTM3MjAwLCAxMzcyMDUsIDEzNzIxMCwgMTM3MjE2LCAxMzcyMjEsIDEzNzIyNywgMTM3MjMzLCAxMzcyMzksIAorICAgIDEzNzI0NSwgMTM3MjUxLCAxMzcyNTQsIDEzNzI1NywgMTM3MjYwLCAxMzcyNjMsIDEzNzI2NiwgMTM3MjY5LCAxMzcyNzUsIAorICAgIDEzNzI4MiwgMTM3Mjg5LCAxMzcyOTYsIDEzNzMwMiwgMTM3MzA5LCAxMzczMTYsIDEzNzMyMywgMTM3MzI5LCAxMzczMzYsIAorICAgIDEzNzM0MywgMTM3MzQ5LCAxMzczNTYsIDEzNzM2MywgMTM3MzY5LCAxMzczNzYsIDEzNzM4MywgMTM3Mzg5LCAxMzczOTUsIAorICAgIDEzNzQwMiwgMTM3NDA4LCAxMzc0MTUsIDEzNzQyMiwgMTM3NDI5LCAxMzc0MzYsIDEzNzQ0MywgMTM3NDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAxMzc0NTMsIDEzNzQ1OSwgMTM3NDY2LCAxMzc0NzMsIDEzNzQ4MCwgMTM3NDg2LCAxMzc0OTMsIDEzNzUwMCwgCisgICAgMTM3NTA3LCAxMzc1MTMsIDEzNzUyMCwgMTM3NTI3LCAxMzc1MzMsIDEzNzU0MCwgMTM3NTQ3LCAxMzc1NTMsIDEzNzU2MCwgCisgICAgMTM3NTY3LCAxMzc1NzMsIDEzNzU3OSwgMTM3NTg2LCAxMzc1OTIsIDEzNzU5OSwgMTM3NjA2LCAxMzc2MTMsIDEzNzYyMCwgCisgICAgMTM3NjI3LCAxMzc2MzYsIDEzNzY0MCwgMTM3NjQzLCAxMzc2NDcsIDEzNzY1MSwgMTM3NjU1LCAxMzc2NTgsIDEzNzY2MSwgCisgICAgMTM3NjY0LCAxMzc2NjcsIDEzNzY3MCwgMTM3NjczLCAxMzc2NzYsIDEzNzY3OSwgMTM3NjgyLCAxMzc2ODgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNzY5MSwgMTM3Njk4LCAxMzc3MDYsIDEzNzcxNCwgMTM3NzIyLCAxMzc3MjksIDEzNzczNywgMTM3NzQ1LCAxMzc3NTMsIAorICAgIDEzNzc2MCwgMTM3NzY4LCAxMzc3NzYsIDEzNzc4MywgMTM3NzkxLCAxMzc3OTksIDEzNzgwNiwgMTM3ODE0LCAxMzc4MjIsIAorICAgIDEzNzgyOSwgMTM3ODM2LCAxMzc4NDQsIDEzNzg1MSwgMTM3ODU5LCAxMzc4NjcsIDEzNzg3NSwgMTM3ODgzLCAxMzc4OTEsIAorICAgIDEzNzg5NSwgMTM3ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzc5MDMsIDEzNzkwOSwgCisgICAgMTM3OTE1LCAxMzc5MjEsIDEzNzkyNSwgMTM3OTMxLCAxMzc5MzcsIDEzNzk0MywgMTM3OTQ5LCAxMzc5NTUsIDEzNzk2MSwgCisgICAgMTM3OTY3LCAxMzc5NzMsIDEzNzk3OSwgMTM3OTg1LCAxMzc5OTEsIDEzNzk5NywgMTM4MDAzLCAxMzgwMDksIDEzODAxNSwgCisgICAgMTM4MDIxLCAxMzgwMjcsIDEzODAzMywgMTM4MDM5LCAxMzgwNDUsIDEzODA1MSwgMTM4MDU3LCAxMzgwNjMsIDEzODA2OSwgCisgICAgMTM4MDc1LCAxMzgwODEsIDEzODA4NywgMTM4MDkzLCAxMzgwOTksIDEzODEwNSwgMTM4MTExLCAxMzgxMTcsIDEzODEyMywgCisgICAgMTM4MTI5LCAxMzgxMzUsIDEzODE0MSwgMTM4MTQ3LCAxMzgxNTMsIDAsIDAsIDAsIDAsIDAsIDEzODE1OSwgMTM4MTcwLCAKKyAgICAxMzgxODEsIDEzODE5MiwgMTM4MjAzLCAxMzgyMTQsIDEzODIyNSwgMTM4MjM2LCAxMzgyNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzODI1OCwgMTM4MjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgyNjYsIDEzODI2OCwgMTM4MjcwLCAxMzgyNzQsIAorICAgIDEzODI3OSwgMTM4Mjg0LCAxMzgyODYsIDEzODI5MiwgMTM4Mjk3LCAxMzgyOTksIDEzODMwNSwgMTM4MzA5LCAxMzgzMTEsIAorICAgIDEzODMxNSwgMTM4MzIxLCAxMzgzMjcsIDEzODMzMywgMTM4MzM4LCAxMzgzNDIsIDEzODM0OSwgMTM4MzU2LCAxMzgzNjMsIAorICAgIDEzODM2OCwgMTM4Mzc1LCAxMzgzODIsIDEzODM4OSwgMTM4MzkzLCAxMzgzOTksIDEzODQwOCwgMTM4NDE3LCAxMzg0MjQsIAorICAgIDEzODQyOSwgMTM4NDMzLCAxMzg0MzcsIDEzODQzOSwgMTM4NDQyLCAxMzg0NDUsIDEzODQ1MiwgMTM4NDU5LCAxMzg0NjksIAorICAgIDEzODQ3NCwgMTM4NDc5LCAxMzg0ODQsIDEzODQ4OSwgMTM4NDkxLCAwLCAwLCAwLCAxMzg0OTcsIDEzODQ5OSwgMTM4NTAxLCAKKyAgICAxMzg1MDUsIDEzODUwOSwgMTM4NTEzLCAxMzg1MTUsIDEzODUxOSwgMTM4NTIxLCAxMzg1MjUsIDEzODUyNywgMTM4NTI5LCAKKyAgICAxMzg1MzEsIDEzODUzMywgMTM4NTM4LCAxMzg1NDMsIDEzODU0NSwgMTM4NTUxLCAxMzg1NTUsIDEzODU1OSwgMTM4NTY3LCAKKyAgICAxMzg1NjksIDEzODU3MSwgMTM4NTczLCAxMzg1NzUsIDEzODU3NywgMTM4NTc5LCAxMzg1ODEsIDEzODU4MywgMTM4NTg1LCAKKyAgICAxMzg1ODcsIDEzODU5MSwgMTM4NTk1LCAxMzg1OTcsIDEzODU5OSwgMTM4NjAxLCAxMzg2MDMsIDEzODYwNSwgMTM4NjEwLCAKKyAgICAxMzg2MTYsIDEzODYyMCwgMTM4NjI0LCAxMzg2MjgsIDEzODYzMiwgMTM4NjM3LCAxMzg2NDEsIDEzODY0MywgMTM4NjQ1LCAKKyAgICAxMzg2NDksIDEzODY1NSwgMTM4NjU3LCAxMzg2NTksIDEzODY2MSwgMTM4NjY1LCAxMzg2NzQsIDEzODY4MCwgMTM4Njg0LCAKKyAgICAxMzg2ODgsIDEzODY5MCwgMTM4NjkyLCAxMzg2OTUsIDEzODY5NywgMTM4Njk5LCAxMzg3MDEsIDEzODcwNSwgMTM4NzA3LCAKKyAgICAxMzg3MTEsIDEzODcxNiwgMTM4NzE4LCAxMzg3MjMsIDEzODcyOSwgMTM4NzM2LCAxMzg3NDAsIDEzODc0NCwgMTM4NzQ4LCAKKyAgICAxMzg3NTIsIDEzODc1OCwgMTM4NzYyLCAwLCAwLCAxMzg3NzAsIDEzODc3MiwgMTM4Nzc2LCAxMzg3ODAsIDEzODc4MiwgCisgICAgMTM4Nzg2LCAxMzg3OTAsIDEzODc5MiwgMTM4Nzk2LCAxMzg3OTgsIDEzODgwMiwgMTM4ODA2LCAxMzg4MTAsIDEzODgxNCwgCisgICAgMTM4ODE4LCAxMzg4MjIsIDEzODgyNiwgMTM4ODMwLCAxMzg4MzYsIDEzODg0MCwgMTM4ODQ0LCAxMzg4NTUsIDEzODg2MCwgCisgICAgMTM4ODY0LCAxMzg4NjgsIDEzODg3NCwgMTM4ODc4LCAxMzg4ODIsIDEzODg4NiwgMTM4ODkzLCAxMzg5MDAsIDEzODkwNCwgCisgICAgMTM4OTA4LCAxMzg5MTIsIDEzODkxNiwgMTM4OTIwLCAxMzg5MjcsIDEzODkyOSwgMTM4OTMzLCAxMzg5MzUsIDEzODkzNywgCisgICAgMTM4OTQxLCAxMzg5NDUsIDEzODk0OSwgMTM4OTUxLCAxMzg5NTUsIDEzODk1OSwgMTM4OTYzLCAxMzg5NjcsIDEzODk3MSwgCisgICAgMTM4OTczLCAxMzg5NzcsIDEzODk3OSwgMTM4OTg1LCAxMzg5ODgsIDEzODk5MywgMTM4OTk1LCAxMzg5OTcsIDEzOTAwMCwgCisgICAgMTM5MDAyLCAxMzkwMDQsIDEzOTAwNywgMTM5MDE0LCAxMzkwMjEsIDEzOTAyOCwgMTM5MDMzLCAxMzkwMzcsIDEzOTAzOSwgCisgICAgMTM5MDQxLCAxMzkwNDMsIDEzOTA0NywgMTM5MDQ5LCAxMzkwNTMsIDEzOTA1NywgMTM5MDYxLCAxMzkwNjMsIDEzOTA2NywgCisgICAgMTM5MDY5LCAxMzkwNzMsIDAsIDAsIDAsIDAsIDAsIDEzOTA3NywgMTM5MDgzLCAxMzkwODUsIDEzOTA5MCwgMTM5MDk0LCAKKyAgICAxMzkwOTgsIDEzOTEwMCwgMTM5MTA2LCAxMzkxMTAsIDEzOTExMiwgMTM5MTE2LCAxMzkxMjAsIDEzOTEyMiwgMTM5MTI2LCAKKyAgICAxMzkxMzEsIDEzOTEzNSwgMTM5MTQxLCAxMzkxNDcsIDEzOTE0OSwgMTM5MTUxLCAxMzkxNTcsIDEzOTE1OSwgMTM5MTYzLCAKKyAgICAxMzkxNjcsIDEzOTE2OSwgMTM5MTczLCAxMzkxNzUsIDEzOTE3OSwgMTM5MTgzLCAxMzkxODcsIDEzOTE5MCwgMTM5MTkzLCAKKyAgICAxMzkxOTgsIDEzOTIwMywgMTM5MjA1LCAxMzkyMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOTIxMCwgMTM5MjEyLCAKKyAgICAxMzkyMTQsIDEzOTIxNiwgMTM5MjIwLCAxMzkyMjIsIDEzOTIyNCwgMTM5MjI2LCAxMzkyMjgsIDEzOTIzMCwgMTM5MjMyLCAKKyAgICAxMzkyMzQsIDEzOTIzNiwgMTM5MjM4LCAxMzkyNDAsIDEzOTI0MiwgMTM5MjQ0LCAxMzkyNDYsIDEzOTI0OCwgMTM5MjUwLCAKKyAgICAxMzkyNTIsIDEzOTI1NCwgMTM5MjU2LCAxMzkyNTgsIDEzOTI2MCwgMTM5MjYyLCAxMzkyNjQsIDEzOTI2OCwgMTM5MjcwLCAKKyAgICAxMzkyNzIsIDEzOTI3NCwgMTM5Mjc4LCAxMzkyODAsIDEzOTI4NCwgMTM5Mjg2LCAxMzkyODgsIDEzOTI5MiwgMTM5Mjk2LCAKKyAgICAxMzkzMDIsIDEzOTMwNCwgMTM5MzA2LCAxMzkzMDgsIDEzOTMxMCwgMTM5MzE0LCAxMzkzMTgsIDEzOTMyMCwgMTM5MzI0LCAKKyAgICAxMzkzMjgsIDEzOTMzMiwgMTM5MzM2LCAxMzkzNDAsIDEzOTM0NCwgMTM5MzQ4LCAxMzkzNTIsIDEzOTM1NiwgMTM5MzYwLCAKKyAgICAxMzkzNjQsIDEzOTM2OCwgMTM5MzcyLCAxMzkzNzYsIDEzOTM4MCwgMTM5Mzg0LCAxMzkzODgsIDEzOTM5MiwgMTM5Mzk0LCAKKyAgICAxMzkzOTYsIDEzOTM5OCwgMTM5NDAwLCAxMzk0MDIsIDEzOTQwNCwgMTM5NDA2LCAxMzk0MTQsIDEzOTQyMiwgMTM5NDMwLCAKKyAgICAxMzk0MzgsIDEzOTQ0MywgMTM5NDQ4LCAxMzk0NTMsIDEzOTQ1NywgMTM5NDYxLCAxMzk0NjYsIDEzOTQ3MSwgMTM5NDczLCAKKyAgICAxMzk0NzcsIDEzOTQ3OSwgMTM5NDgxLCAxMzk0ODMsIDEzOTQ4NSwgMTM5NDg3LCAxMzk0ODksIDEzOTQ5MSwgMTM5NDk1LCAKKyAgICAxMzk0OTcsIDEzOTQ5OSwgMTM5NTAxLCAxMzk1MDUsIDEzOTUwOSwgMTM5NTEzLCAxMzk1MTcsIDEzOTUyMSwgMTM5NTIzLCAKKyAgICAxMzk1MjksIDEzOTUzNSwgMTM5NTM3LCAxMzk1MzksIDEzOTU0MSwgMTM5NTQzLCAxMzk1NDUsIDEzOTU1NCwgMTM5NTYxLCAKKyAgICAxMzk1NjgsIDEzOTU3MiwgMTM5NTc5LCAxMzk1ODQsIDEzOTU5MSwgMTM5NjAwLCAxMzk2MDUsIDEzOTYwOSwgMTM5NjEzLCAKKyAgICAxMzk2MTUsIDEzOTYxOSwgMTM5NjIxLCAxMzk2MjUsIDEzOTYyOSwgMTM5NjMxLCAxMzk2MzUsIDEzOTYzOSwgMTM5NjQzLCAKKyAgICAxMzk2NDUsIDEzOTY0NywgMTM5NjUzLCAxMzk2NTUsIDEzOTY1NywgMTM5NjU5LCAxMzk2NjMsIDEzOTY2NywgMTM5NjY5LCAKKyAgICAxMzk2NzMsIDEzOTY3NSwgMTM5Njc3LCAxMzk2ODAsIDEzOTY4NCwgMTM5Njg2LCAxMzk2OTAsIDEzOTY5MiwgMTM5Njk0LCAKKyAgICAxMzk2OTksIDEzOTcwMSwgMTM5NzA1LCAxMzk3MDksIDEzOTcxMiwgMTM5NzE2LCAxMzk3MjAsIDEzOTcyNCwgMTM5NzI4LCAKKyAgICAxMzk3MzIsIDEzOTczNiwgMTM5NzQwLCAxMzk3NDUsIDEzOTc0OSwgMTM5NzUzLCAxMzk3NjIsIDEzOTc2NywgMTM5NzcwLCAKKyAgICAxMzk3NzIsIDEzOTc3NSwgMTM5Nzc4LCAxMzk3ODMsIDEzOTc4NSwgMTM5Nzg4LCAxMzk3OTMsIDEzOTc5NywgMTM5ODAwLCAKKyAgICAxMzk4MDQsIDEzOTgwOCwgMTM5ODExLCAxMzk4MTYsIDEzOTgyMCwgMTM5ODI0LCAxMzk4MjgsIDEzOTgzMiwgMTM5ODM4LCAKKyAgICAxMzk4NDQsIDEzOTg1MCwgMTM5ODU2LCAxMzk4NjEsIDEzOTg3MSwgMTM5ODczLCAxMzk4NzcsIDEzOTg3OSwgMTM5ODgxLCAKKyAgICAxMzk4ODUsIDEzOTg4OSwgMTM5ODkxLCAxMzk4OTUsIDEzOTkwMSwgMTM5OTA2LCAxMzk5MTIsIDEzOTkxNCwgMTM5OTE4LCAKKyAgICAxMzk5MjEsIDEzOTkyNywgMTM5OTMzLCAxMzk5MzcsIDEzOTkzOSwgMTM5OTQxLCAxMzk5NDUsIDEzOTk0NywgMTM5OTUxLCAKKyAgICAxMzk5NTUsIDEzOTk1OSwgMTM5OTYxLCAxMzk5NjMsIDEzOTk3MCwgMTM5OTc0LCAxMzk5NzgsIDEzOTk4MiwgMTM5OTg2LCAKKyAgICAxMzk5OTAsIDEzOTk5MiwgMTM5OTk2LCAxMzk5OTgsIDE0MDAwMCwgMTQwMDA0LCAxNDAwMDYsIDE0MDAxMCwgMTQwMDE0LCAKKyAgICAxNDAwMjAsIDE0MDAyNCwgMTQwMDI4LCAxNDAwMzIsIDE0MDAzNCwgMTQwMDM3LCAxNDAwNDEsIDE0MDA0NywgMTQwMDU2LCAKKyAgICAxNDAwNjUsIDE0MDA3NCwgMTQwMDgzLCAxNDAwODUsIDE0MDA4OSwgMTQwMDkxLCAxNDAwOTUsIDE0MDEwNiwgMTQwMTEwLCAKKyAgICAxNDAxMTYsIDE0MDEyMiwgMTQwMTI3LCAxNDAxMjksIDE0MDEzNCwgMTQwMTM4LCAxNDAxNDAsIDE0MDE0MiwgMTQwMTQ0LCAKKyAgICAxNDAxNDgsIDAsIDE0MDE1MiwgMTQwMTU3LCAxNDAxNjgsIDE0MDE4NCwgMTQwMTk1LCAxNDAyMDYsIDE0MDIxMCwgCisgICAgMTQwMjE0LCAxNDAyMjAsIDE0MDIyMiwgMTQwMjMwLCAxNDAyMzgsIDE0MDI0MCwgMTQwMjQ0LCAxNDAyNTAsIDE0MDI1NiwgCisgICAgMTQwMjYzLCAxNDAyNzAsIDE0MDI3MiwgMTQwMjc0LCAxNDAyNzgsIDE0MDI4MCwgMTQwMjg2LCAxNDAyODgsIDE0MDI5MSwgCisgICAgMTQwMjk1LCAxNDAzMDEsIDE0MDMwNywgMTQwMzE4LCAxNDAzMjQsIDE0MDMzMCwgMTQwMzM4LCAxNDAzNDIsIDE0MDM1MCwgCisgICAgMTQwMzU4LCAxNDAzNjQsIDE0MDM3MCwgMTQwMzc3LCAxNDAzNzksIDE0MDM4MywgMTQwMzg1LCAxNDAzODcsIDE0MDM5MiwgCisgICAgMTQwMzk0LCAxNDAzOTYsIDE0MDM5OCwgMTQwNDAwLCAxNDA0MDQsIDE0MDQxNSwgMTQwNDIxLCAxNDA0MjUsIDE0MDQyOSwgCisgICAgMTQwNDMzLCAxNDA0MzksIDE0MDQ0NSwgMTQwNDUxLCAxNDA0NTcsIDE0MDQ2MiwgMTQwNDY3LCAxNDA0NzMsIDE0MDQ3OSwgCisgICAgMTQwNDg2LCAxNDA0OTMsIDE0MDUwMSwgMTQwNTA5LCAxNDA1MTQsIDE0MDUyMiwgMTQwNTI2LCAxNDA1MzUsIDE0MDU0NCwgCisgICAgMTQwNTUwLCAxNDA1NTQsIDE0MDU1OCwgMTQwNTYyLCAxNDA1NjUsIDAsIDAsIDAsIDAsIDAsIDE0MDU3MCwgMTQwNTc3LCAKKyAgICAxNDA1ODQsIDE0MDU5MSwgMTQwNTk5LCAxNDA2MDcsIDE0MDYxNSwgMTQwNjIzLCAxNDA2MzEsIDE0MDYzOSwgMTQwNjQ3LCAKKyAgICAxNDA2NTUsIDE0MDY2MywgMTQwNjY5LCAxNDA2NzUsIDE0MDY4MSwgMTQwNjg3LCAxNDA2OTMsIDE0MDY5OSwgMTQwNzA1LCAKKyAgICAxNDA3MTEsIDE0MDcxNywgMTQwNzIzLCAxNDA3MjksIDE0MDczNSwgMTQwNzM4LCAxNDA3NDcsIDE0MDc1NiwgMTQwNzU4LCAKKyAgICAxNDA3NjUsIDE0MDc2OSwgMTQwNzcxLCAxNDA3NzMsIDE0MDc3NywgMTQwNzgzLCAxNDA3ODcsIDE0MDc4OSwgMTQwNzk5LCAKKyAgICAxNDA4MDUsIDE0MDgwOSwgMTQwODExLCAxNDA4MTUsIDAsIDE0MDgxNywgMTQwODI0LCAxNDA4MzEsIDE0MDgzOCwgCisgICAgMTQwODQzLCAxNDA4NDgsIDE0MDg1NywgMTQwODYzLCAxNDA4NjgsIDE0MDg3MiwgMTQwODc3LCAxNDA4ODEsIDE0MDg4OCwgCisgICAgMTQwODkyLCAxNDA4OTUsIDE0MDkwMCwgMTQwOTA3LCAxNDA5MTQsIDE0MDkxOSwgMTQwOTI0LCAxNDA5MjksIDE0MDkzNSwgCisgICAgMTQwOTQ0LCAxNDA5NTUsIDE0MDk2MSwgMTQwOTY3LCAxNDA5NzMsIDE0MDk4NCwgMTQxMDAwLCAxNDEwMDksIDE0MTAxNywgCisgICAgMTQxMDI1LCAxNDEwMzMsIDE0MTA0MSwgMTQxMDQ5LCAxNDEwNTcsIDE0MTA2NSwgMTQxMDczLCAxNDEwODEsIDE0MTA4OSwgCisgICAgMTQxMDk3LCAwLCAxNDExMDUsIDE0MTEwOSwgMTQxMTE0LCAxNDExMTksIDE0MTEyMSwgMTQxMTI1LCAxNDExMzQsIAorICAgIDE0MTE0MywgMTQxMTUxLCAxNDExNTUsIDE0MTE1OSwgMTQxMTY0LCAxNDExNjksIDE0MTE3NCwgMTQxMTc2LCAxNDExODEsIAorICAgIDE0MTE4NSwgMTQxMTg3LCAxNDExOTEsIDE0MTE5NSwgMTQxMjAxLCAxNDEyMDYsIDE0MTIxNCwgMTQxMjE5LCAxNDEyMjQsIAorICAgIDE0MTIyOSwgMTQxMjM2LCAxNDEyMzksIDE0MTI0MSwgMTQxMjQ1LCAxNDEyNTAsIDE0MTI1NSwgMTQxMjU5LCAxNDEyNjMsIAorICAgIDE0MTI2OSwgMTQxMjc1LCAxNDEyNzcsIDE0MTI4MSwgMTQxMjg1LCAxNDEyODksIDE0MTI5MywgMTQxMjk3LCAxNDEyOTksIAorICAgIDE0MTMwMSwgMTQxMzAzLCAxNDEzMDUsIDE0MTMxMSwgMTQxMzE3LCAxNDEzMjEsIDE0MTMyMywgMTQxMzI1LCAxNDEzMjcsIAorICAgIDE0MTMzNiwgMTQxMzQwLCAxNDEzNDcsIDE0MTM1NCwgMTQxMzU2LCAxNDEzNTksIDE0MTM2MywgMTQxMzY5LCAxNDEzNzMsIAorICAgIDE0MTM3NywgMTQxMzc5LCAxNDEzODcsIDE0MTM5MSwgMTQxMzk1LCAxNDE0MDAsIDE0MTQwNSwgMTQxNDEwLCAxNDE0MTUsIAorICAgIDE0MTQyMCwgMTQxNDI1LCAxNDE0MzAsIDE0MTQzNSwgMTQxNDQwLCAxNDE0NDUsIDE0MTQ0OSwgMTQxNDU1LCAxNDE0NTksIAorICAgIDE0MTQ2NSwgMTQxNDcwLCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkxLCAxNDE0OTUsIDE0MTUwMiwgMTQxNTA2LCAxNDE1MTAsIAorICAgIDE0MTUxNCwgMTQxNTE5LCAxNDE1MjQsIDE0MTUyNiwgMTQxNTMwLCAxNDE1MzksIDE0MTU0NywgMTQxNTU2LCAxNDE1NzAsIAorICAgIDE0MTU4NCwgMTQxNTk4LCAxNDE2MDUsIDE0MTYxMiwgMTQxNjE2LCAxNDE2MjUsIDE0MTYzMywgMTQxNjM3LCAxNDE2NDYsIAorICAgIDE0MTY1MywgMTQxNjU3LCAxNDE2NjEsIDE0MTY2NSwgMTQxNjY5LCAxNDE2NzYsIDE0MTY4MCwgMTQxNjg0LCAxNDE2ODgsIAorICAgIDE0MTY5MiwgMTQxNjk5LCAxNDE3MDgsIDE0MTcxNywgMTQxNzI0LCAxNDE3MzYsIDE0MTc0OCwgMTQxNzUyLCAxNDE3NTYsIAorICAgIDE0MTc2MCwgMTQxNzY0LCAxNDE3NjgsIDE0MTc3MiwgMTQxNzgwLCAxNDE3ODgsIDE0MTc5NywgMTQxODAxLCAxNDE4MDUsIAorICAgIDE0MTgwOSwgMTQxODEzLCAxNDE4MTcsIDE0MTgyMSwgMTQxODI3LCAxNDE4MzQsIDE0MTgzOCwgMTQxODUwLCAxNDE4NTgsIAorICAgIDE0MTg2MiwgMTQxODY2LCAxNDE4NzAsIDE0MTg3NCwgMTQxODgwLCAxNDE4ODcsIDE0MTg5OCwgMTQxOTA4LCAxNDE5MTksIAorICAgIDE0MTkzMCwgMTQxOTM5LCAxNDE5NTAsIDE0MTk1NiwgMTQxOTYyLCAxNDE5NjgsIDE0MTk3NCwgMCwgMCwgMTQxOTgwLCAKKyAgICAxNDE5ODksIDE0MTk5NiwgMTQyMDAyLCAxNDIwMDYsIDE0MjAxMCwgMTQyMDE0LCAxNDIwMjMsIDE0MjAzNSwgMTQyMDM5LCAKKyAgICAxNDIwNDYsIDE0MjA1MywgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgxLCAxNDIwODksIDE0MjA5NywgMTQyMTA1LCAKKyAgICAxNDIxMTMsIDE0MjEyMiwgMTQyMTMxLCAxNDIxNDAsIDE0MjE0OSwgMTQyMTU5LCAxNDIxNjksIDE0MjE3OSwgMTQyMTg5LCAKKyAgICAxNDIxOTYsIDE0MjIwMywgMTQyMjEwLCAxNDIyMTcsIDE0MjIyNSwgMTQyMjMzLCAxNDIyNDEsIDE0MjI0OSwgMTQyMjU2LCAKKyAgICAxNDIyNjgsIDE0MjI3NSwgMTQyMjg3LCAxNDIyOTAsIDE0MjI5MywgMTQyMjk2LCAxNDIyOTksIDE0MjMwNSwgMTQyMzEyLCAKKyAgICAxNDIzMTksIDE0MjMyNywgMTQyMzMyLCAxNDIzMzgsIDE0MjM0OSwgMTQyMzU5LCAxNDIzNzAsIDE0MjM3NSwgMTQyMzgwLCAKKyAgICAxNDIzODYsIDE0MjM5MSwgMTQyMzk4LCAxNDI0MDIsIDE0MjQwOCwgMTQyNDEwLCAxNDI0MTIsIDE0MjQxNiwgMTQyNDIwLCAKKyAgICAxNDI0MjQsIDE0MjQzMywgMTQyNDM1LCAxNDI0MzcsIDE0MjQ0MCwgMTQyNDQyLCAxNDI0NDQsIDE0MjQ0OCwgMTQyNDUwLCAKKyAgICAxNDI0NTQsIDE0MjQ1NiwgMTQyNDYwLCAxNDI0NjIsIDE0MjQ2NCwgMTQyNDY4LCAxNDI0NzIsIDE0MjQ3OCwgMTQyNDgwLCAKKyAgICAxNDI0ODQsIDE0MjQ4NiwgMTQyNDkwLCAxNDI0OTQsIDE0MjQ5OCwgMTQyNTAyLCAxNDI1MDQsIDE0MjUwNiwgMTQyNTEwLCAKKyAgICAxNDI1MTQsIDE0MjUxOCwgMTQyNTIyLCAxNDI1MjQsIDE0MjUyNiwgMTQyNTI4LCAxNDI1MzMsIDE0MjUzOCwgMTQyNTQxLCAKKyAgICAxNDI1NDksIDE0MjU1NywgMTQyNTU5LCAxNDI1NjQsIDE0MjU2NywgMTQyNTcyLCAxNDI1ODMsIDE0MjU5MCwgMTQyNTk1LCAKKyAgICAxNDI2MDAsIDE0MjYwMiwgMTQyNjA2LCAxNDI2MDgsIDE0MjYxMiwgMTQyNjE0LCAxNDI2MTgsIDE0MjYyMiwgMTQyNjI1LCAKKyAgICAxNDI2MjgsIDE0MjYzMCwgMTQyNjMzLCAxNDI2MzUsIDE0MjYzOSwgMTQyNjQxLCAxNDI2NDMsIDE0MjY0NSwgMTQyNjQ5LCAKKyAgICAxNDI2NTEsIDE0MjY1NSwgMTQyNjU4LCAxNDI2NjUsIDE0MjY2OCwgMTQyNjczLCAxNDI2NzYsIDE0MjY3OSwgMTQyNjg0LCAKKyAgICAxNDI2ODgsIDE0MjY5MiwgMTQyNjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDI2OTgsIDE0MjcwMywgMTQyNzA1LCAxNDI3MDksIDE0MjcxMSwgMTQyNzE1LCAxNDI3MTksIDE0MjcyNSwgMTQyNzI5LCAKKyAgICAxNDI3MzQsIDE0MjczNywgMTQyNzQxLCAxNDI3NDUsIDAsIDAsIDAsIDE0Mjc0OSwgMTQyNzUxLCAxNDI3NTcsIDE0Mjc2MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNzY1LCAxNDI3NzAsIDE0Mjc3NSwgMTQyNzgwLCAKKyAgICAxNDI3ODUsIDE0Mjc5MCwgMTQyNzk1LCAxNDI4MDIsIDE0MjgwOSwgMTQyODE2LCAxNDI4MjMsIDE0MjgyOCwgMTQyODMzLCAKKyAgICAxNDI4MzgsIDE0Mjg0MywgMTQyODUwLCAxNDI4NTYsIDE0Mjg2MywgMTQyODcwLCAxNDI4NzcsIDE0Mjg4MiwgMTQyODg3LCAKKyAgICAxNDI4OTIsIDE0Mjg5NywgMTQyOTAyLCAxNDI5MDksIDE0MjkxNiwgMTQyOTIxLCAxNDI5MjYsIDE0MjkzMywgMTQyOTQwLCAKKyAgICAxNDI5NDgsIDE0Mjk1NiwgMTQyOTYzLCAxNDI5NzAsIDE0Mjk3OCwgMTQyOTg2LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDExLCAKKyAgICAxNDMwMjIsIDE0MzAyNywgMTQzMDM0LCAxNDMwNDEsIDE0MzA0OCwgMTQzMDU2LCAxNDMwNjQsIDE0MzA3NSwgMTQzMDgzLCAKKyAgICAxNDMwOTEsIDE0MzA5OSwgMTQzMTA0LCAxNDMxMDksIDE0MzExNCwgMTQzMTE5LCAxNDMxMjQsIDE0MzEyOSwgMTQzMTM0LCAKKyAgICAxNDMxMzksIDE0MzE0NCwgMTQzMTQ5LCAxNDMxNTQsIDE0MzE1OSwgMTQzMTY2LCAxNDMxNzEsIDE0MzE3NiwgMTQzMTgzLCAKKyAgICAxNDMxODgsIDE0MzE5MywgMTQzMTk4LCAxNDMyMDMsIDE0MzIwOCwgMTQzMjEzLCAxNDMyMTgsIDE0MzIyMywgMTQzMjI4LCAKKyAgICAxNDMyMzMsIDE0MzIzOCwgMTQzMjQzLCAxNDMyNTAsIDE0MzI1OCwgMTQzMjYzLCAxNDMyNjgsIDE0MzI3NSwgMTQzMjgwLCAKKyAgICAxNDMyODUsIDE0MzI5MCwgMTQzMjk3LCAxNDMzMDIsIDE0MzMwOSwgMTQzMzE0LCAxNDMzMjEsIDE0MzMyNiwgMTQzMzM1LCAKKyAgICAxNDMzNDQsIDE0MzM0OSwgMTQzMzU0LCAxNDMzNTksIDE0MzM2NCwgMTQzMzY5LCAxNDMzNzQsIDE0MzM3OSwgMTQzMzg0LCAKKyAgICAxNDMzODksIDE0MzM5NCwgMTQzMzk5LCAxNDM0MDQsIDE0MzQwOSwgMTQzNDE3LCAxNDM0MjUsIDE0MzQzMCwgMTQzNDM1LCAKKyAgICAxNDM0NDAsIDE0MzQ0NSwgMTQzNDUwLCAxNDM0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MzQ2MiwgMTQzNDcwLCAxNDM0NzgsIDE0MzQ4NiwgMTQzNDk0LCAxNDM1MDAsIDE0MzUwNiwgMTQzNTEwLCAxNDM1MTQsIAorICAgIDE0MzUyMCwgMTQzNTI2LCAxNDM1MzUsIDE0MzUzOSwgMTQzNTQ0LCAxNDM1NTAsIDE0MzU1NCwgMTQzNTU5LCAxNDM1NjMsIAorICAgIDE0MzU2NywgMTQzNTczLCAxNDM1NzksIDE0MzU4OSwgMTQzNTk4LCAxNDM2MDEsIDE0MzYwNiwgMTQzNjEyLCAxNDM2MTgsIAorICAgIDE0MzYyOSwgMTQzNjM5LCAxNDM2NDMsIDE0MzY0OCwgMTQzNjU0LCAxNDM2NjAsIDE0MzY2OSwgMTQzNjc0LCAxNDM2NzgsIAorICAgIDE0MzY4MywgMTQzNjg3LCAxNDM2OTMsIDE0MzY5OSwgMTQzNzA1LCAxNDM3MDksIDE0MzcxMiwgMTQzNzE2LCAxNDM3MTksIAorICAgIDE0MzcyMiwgMTQzNzI3LCAxNDM3MzIsIDE0MzczOSwgMTQzNzQ3LCAxNDM3NTQsIDE0Mzc2MSwgMTQzNzcwLCAxNDM3NzksIAorICAgIDE0Mzc4NiwgMTQzNzk0LCAxNDM4MDEsIDE0MzgwOCwgMTQzODE3LCAxNDM4MjYsIDE0MzgzMywgMTQzODQxLCAxNDM4NDgsIAorICAgIDE0Mzg1NSwgMTQzODY0LCAxNDM4NzEsIDE0Mzg3OSwgMTQzODg1LCAxNDM4OTQsIDE0MzkwMiwgMTQzOTExLCAxNDM5MTgsIAorICAgIDE0MzkyOCwgMTQzOTM5LCAxNDM5NDcsIDE0Mzk1NSwgMTQzOTY0LCAxNDM5NzIsIDE0Mzk4MCwgMTQzOTg5LCAxNDM5OTcsIAorICAgIDE0NDAwNywgMTQ0MDE2LCAxNDQwMjQsIDE0NDAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQ0MDQxLCAxNDQwNDksIDE0NDA1NywgMTQ0MDY1LCAxNDQwNzMsIDE0NDA4MiwgMTQ0MDkxLCAKKyAgICAxNDQxMDAsIDE0NDEwOSwgMTQ0MTE4LCAxNDQxMjcsIDE0NDEzNiwgMCwgMCwgMCwgMCwgMTQ0MTQ1LCAxNDQxNTMsIAorICAgIDE0NDE2MSwgMTQ0MTY5LCAxNDQxNzcsIDE0NDE4NCwgMTQ0MTkxLCAxNDQxOTgsIDE0NDIwNSwgMTQ0MjEzLCAxNDQyMjEsIAorICAgIDE0NDIyOSwgMTQ0MjM3LCAxNDQyNDcsIDE0NDI1NywgMTQ0MjY3LCAxNDQyNzcsIDE0NDI4NiwgMTQ0Mjk1LCAxNDQzMDQsIAorICAgIDE0NDMxMywgMTQ0MzIyLCAxNDQzMzEsIDE0NDM0MCwgMTQ0MzQ5LCAxNDQzNTcsIDE0NDM2NSwgMTQ0MzczLCAxNDQzODEsIAorICAgIDE0NDM4OSwgMTQ0Mzk3LCAxNDQ0MDUsIDE0NDQxMywgMTQ0NDIzLCAxNDQ0MzMsIDE0NDQ0MywgMTQ0NDUzLCAxNDQ0NTcsIAorICAgIDE0NDQ2MSwgMTQ0NDY1LCAxNDQ0NjksIDE0NDQ3MiwgMTQ0NDc1LCAxNDQ0NzgsIDE0NDQ4MSwgMTQ0NDg1LCAxNDQ0ODksIAorICAgIDE0NDQ5MywgMTQ0NDk3LCAxNDQ1MDIsIDE0NDUwNywgMTQ0NTEyLCAxNDQ1MTcsIDE0NDUyMCwgMTQ0NTIzLCAxNDQ1MjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDUyOSwgMTQ0NTMyLCAxNDQ1MzUsIDE0NDUzOCwgMTQ0NTQxLCAxNDQ1NDYsIAorICAgIDE0NDU1MSwgMTQ0NTU2LCAxNDQ1NjEsIDE0NDU2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0NTY5LCAxNDQ1NzUsIDE0NDU4MSwgCisgICAgMTQ0NTg3LCAxNDQ1OTMsIDE0NDYwMSwgMTQ0NjA5LCAxNDQ2MTcsIDE0NDYyNSwgMTQ0NjMwLCAxNDQ2MzUsIDE0NDY0MCwgCisgICAgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY1OSwgMTQ0NjY2LCAxNDQ2NzMsIDE0NDY4MCwgMTQ0Njg3LCAxNDQ2OTQsIDE0NDcwMSwgCisgICAgMTQ0NzEwLCAxNDQ3MTksIDE0NDcyOCwgMTQ0NzM3LCAxNDQ3NDMsIDE0NDc0OSwgMTQ0NzU1LCAxNDQ3NjEsIDE0NDc2OSwgCisgICAgMTQ0Nzc3LCAxNDQ3ODUsIDE0NDc5MywgMTQ0ODAxLCAxNDQ4MDksIDE0NDgxNywgMTQ0ODI1LCAxNDQ4MzUsIDE0NDg0NSwgCisgICAgMTQ0ODU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQ4NjUsIDE0NDg3MCwgMTQ0ODc1LCAxNDQ4ODAsIDE0NDg4NSwgCisgICAgMTQ0ODk0LCAxNDQ5MDMsIDE0NDkxMiwgMTQ0OTIxLCAxNDQ5MjgsIDE0NDkzNSwgMTQ0OTQyLCAxNDQ5NDksIDE0NDk1NiwgCisgICAgMTQ0OTY1LCAxNDQ5NzQsIDE0NDk4MywgMTQ0OTg4LCAxNDQ5OTUsIDE0NTAwMiwgMTQ1MDA5LCAxNDUwMTQsIDE0NTAxOSwgCisgICAgMTQ1MDI0LCAxNDUwMjksIDE0NTAzNiwgMTQ1MDQzLCAxNDUwNTAsIDE0NTA1NywgMTQ1MDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDUwNzMsIDE0NTA3NywgMTQ1MDgxLCAxNDUwODUsIDE0NTA4OSwgMTQ1MDkzLCAxNDUwOTcsIAorICAgIDE0NTEwMSwgMTQ1MTA1LCAxNDUxMDksIDE0NTExMywgMTQ1MTE3LCAxNDUxMjEsIDE0NTEyNSwgMTQ1MTI5LCAxNDUxMzMsIAorICAgIDE0NTEzNywgMTQ1MTQxLCAxNDUxNDUsIDE0NTE0OSwgMTQ1MTUzLCAxNDUxNTcsIDE0NTE2MSwgMTQ1MTY1LCAxNDUxNjksIAorICAgIDE0NTE3MywgMTQ1MTc3LCAxNDUxODEsIDE0NTE4NSwgMTQ1MTg5LCAxNDUxOTMsIDE0NTE5NywgMTQ1MjAxLCAxNDUyMDUsIAorICAgIDE0NTIwOSwgMTQ1MjEzLCAxNDUyMTcsIDE0NTIyMSwgMTQ1MjI1LCAxNDUyMjksIDE0NTIzMywgMTQ1MjM3LCAxNDUyNDEsIAorICAgIDE0NTI0NSwgMTQ1MjQ5LCAxNDUyNTMsIDE0NTI1NywgMTQ1MjYxLCAxNDUyNjUsIDE0NTI2OSwgMTQ1MjczLCAxNDUyNzcsIAorICAgIDE0NTI4MSwgMTQ1Mjg1LCAxNDUyODksIDE0NTI5MywgMTQ1Mjk3LCAxNDUzMDEsIDE0NTMwNSwgMTQ1MzA5LCAxNDUzMTMsIAorICAgIDE0NTMxNywgMTQ1MzIxLCAxNDUzMjUsIDE0NTMyOSwgMTQ1MzMzLCAxNDUzMzcsIDE0NTM0MSwgMTQ1MzQ1LCAxNDUzNDksIAorICAgIDE0NTM1MywgMTQ1MzU3LCAxNDUzNjEsIDE0NTM2NSwgMTQ1MzY5LCAxNDUzNzMsIDE0NTM3NywgMTQ1MzgxLCAxNDUzODUsIAorICAgIDE0NTM4OSwgMTQ1MzkzLCAxNDUzOTcsIDE0NTQwMSwgMTQ1NDA1LCAxNDU0MDksIDE0NTQxMywgMTQ1NDE3LCAxNDU0MjEsIAorICAgIDE0NTQyNSwgMTQ1NDI5LCAxNDU0MzMsIDE0NTQzNywgMTQ1NDQxLCAxNDU0NDUsIDE0NTQ0OSwgMTQ1NDUzLCAxNDU0NTcsIAorICAgIDE0NTQ2MSwgMTQ1NDY1LCAxNDU0NjksIDE0NTQ3MywgMTQ1NDc3LCAxNDU0ODEsIDE0NTQ4NSwgMTQ1NDg5LCAxNDU0OTMsIAorICAgIDE0NTQ5NywgMTQ1NTAxLCAxNDU1MDUsIDE0NTUwOSwgMTQ1NTEzLCAxNDU1MTcsIDE0NTUyMSwgMTQ1NTI1LCAxNDU1MjksIAorICAgIDE0NTUzMywgMTQ1NTM3LCAxNDU1NDEsIDE0NTU0NSwgMTQ1NTQ5LCAxNDU1NTMsIDE0NTU1NywgMTQ1NTYxLCAxNDU1NjUsIAorICAgIDE0NTU2OSwgMTQ1NTczLCAxNDU1NzcsIDE0NTU4MSwgMTQ1NTg1LCAxNDU1ODksIDE0NTU5MywgMTQ1NTk3LCAxNDU2MDEsIAorICAgIDE0NTYwNSwgMTQ1NjA5LCAxNDU2MTMsIDE0NTYxNywgMTQ1NjIxLCAxNDU2MjUsIDE0NTYyOSwgMTQ1NjMzLCAxNDU2MzcsIAorICAgIDE0NTY0MSwgMTQ1NjQ1LCAxNDU2NDksIDE0NTY1MywgMTQ1NjU3LCAxNDU2NjEsIDE0NTY2NSwgMTQ1NjY5LCAxNDU2NzMsIAorICAgIDE0NTY3NywgMTQ1NjgxLCAxNDU2ODUsIDE0NTY4OSwgMTQ1NjkzLCAxNDU2OTcsIDE0NTcwMSwgMTQ1NzA1LCAxNDU3MDksIAorICAgIDE0NTcxMywgMTQ1NzE3LCAxNDU3MjEsIDE0NTcyNSwgMTQ1NzI5LCAxNDU3MzMsIDE0NTczNywgMTQ1NzQxLCAxNDU3NDUsIAorICAgIDE0NTc0OSwgMTQ1NzUzLCAxNDU3NTcsIDE0NTc2MSwgMTQ1NzY1LCAxNDU3NjksIDE0NTc3MywgMTQ1Nzc3LCAxNDU3ODEsIAorICAgIDE0NTc4NSwgMTQ1Nzg5LCAxNDU3OTMsIDE0NTc5NywgMTQ1ODAxLCAxNDU4MDUsIDE0NTgwOSwgMTQ1ODEzLCAxNDU4MTcsIAorICAgIDE0NTgyMSwgMTQ1ODI1LCAxNDU4MjksIDE0NTgzMywgMTQ1ODM3LCAxNDU4NDEsIDE0NTg0NSwgMTQ1ODQ5LCAxNDU4NTMsIAorICAgIDE0NTg1NywgMTQ1ODYxLCAxNDU4NjUsIDE0NTg2OSwgMTQ1ODczLCAxNDU4NzcsIDE0NTg4MSwgMTQ1ODg1LCAxNDU4ODksIAorICAgIDE0NTg5MywgMTQ1ODk3LCAxNDU5MDEsIDE0NTkwNSwgMTQ1OTA5LCAxNDU5MTMsIDE0NTkxNywgMTQ1OTIxLCAxNDU5MjUsIAorICAgIDE0NTkyOSwgMTQ1OTMzLCAxNDU5MzcsIDE0NTk0MSwgMTQ1OTQ1LCAxNDU5NDksIDE0NTk1MywgMTQ1OTU3LCAxNDU5NjEsIAorICAgIDE0NTk2NSwgMTQ1OTY5LCAxNDU5NzMsIDE0NTk3NywgMTQ1OTgxLCAxNDU5ODUsIDE0NTk4OSwgMTQ1OTkzLCAxNDU5OTcsIAorICAgIDE0NjAwMSwgMTQ2MDA1LCAxNDYwMDksIDE0NjAxMywgMTQ2MDE3LCAxNDYwMjEsIDE0NjAyNSwgMTQ2MDI5LCAxNDYwMzMsIAorICAgIDE0NjAzNywgMTQ2MDQxLCAxNDYwNDUsIDE0NjA0OSwgMTQ2MDUzLCAxNDYwNTcsIDE0NjA2MSwgMTQ2MDY1LCAxNDYwNjksIAorICAgIDE0NjA3MywgMTQ2MDc3LCAxNDYwODEsIDE0NjA4NSwgMTQ2MDg5LCAxNDYwOTMsIDE0NjA5NywgMTQ2MTAxLCAxNDYxMDUsIAorICAgIDE0NjEwOSwgMTQ2MTEzLCAxNDYxMTcsIDE0NjEyMSwgMTQ2MTI1LCAxNDYxMjksIDE0NjEzMywgMTQ2MTM3LCAxNDYxNDEsIAorICAgIDE0NjE0NSwgMTQ2MTQ5LCAxNDYxNTMsIDE0NjE1NywgMTQ2MTYxLCAxNDYxNjUsIDE0NjE2OSwgMTQ2MTczLCAxNDYxNzcsIAorICAgIDE0NjE4MSwgMTQ2MTg1LCAxNDYxODksIDE0NjE5MywgMTQ2MTk3LCAxNDYyMDEsIDE0NjIwNSwgMTQ2MjA5LCAxNDYyMTMsIAorICAgIDE0NjIxNywgMTQ2MjIxLCAxNDYyMjUsIDE0NjIyOSwgMTQ2MjMzLCAxNDYyMzcsIDE0NjI0MSwgMTQ2MjQ1LCAxNDYyNDksIAorICAgIDE0NjI1MywgMTQ2MjU3LCAxNDYyNjEsIDE0NjI2NSwgMTQ2MjY5LCAxNDYyNzMsIDE0NjI3NywgMTQ2MjgxLCAxNDYyODUsIAorICAgIDE0NjI4OSwgMTQ2MjkzLCAxNDYyOTcsIDE0NjMwMSwgMTQ2MzA1LCAxNDYzMDksIDE0NjMxMywgMTQ2MzE3LCAxNDYzMjEsIAorICAgIDE0NjMyNSwgMTQ2MzI5LCAxNDYzMzMsIDE0NjMzNywgMTQ2MzQxLCAxNDYzNDUsIDE0NjM0OSwgMTQ2MzUzLCAxNDYzNTcsIAorICAgIDE0NjM2MSwgMTQ2MzY1LCAxNDYzNjksIDE0NjM3MywgMTQ2Mzc3LCAxNDYzODEsIDE0NjM4NSwgMTQ2Mzg5LCAxNDYzOTMsIAorICAgIDE0NjM5NywgMTQ2NDAxLCAxNDY0MDUsIDE0NjQwOSwgMTQ2NDEzLCAxNDY0MTcsIDE0NjQyMSwgMTQ2NDI1LCAxNDY0MjksIAorICAgIDE0NjQzMywgMTQ2NDM3LCAxNDY0NDEsIDE0NjQ0NSwgMTQ2NDQ5LCAxNDY0NTMsIDE0NjQ1NywgMTQ2NDYxLCAxNDY0NjUsIAorICAgIDE0NjQ2OSwgMTQ2NDczLCAxNDY0NzcsIDE0NjQ4MSwgMTQ2NDg1LCAxNDY0ODksIDE0NjQ5MywgMTQ2NDk3LCAxNDY1MDEsIAorICAgIDE0NjUwNSwgMTQ2NTA5LCAxNDY1MTMsIDE0NjUxNywgMTQ2NTIxLCAxNDY1MjUsIDE0NjUyOSwgMTQ2NTMzLCAxNDY1MzcsIAorICAgIDE0NjU0MSwgMTQ2NTQ1LCAxNDY1NDksIDE0NjU1MywgMTQ2NTU3LCAxNDY1NjEsIDE0NjU2NSwgMTQ2NTY5LCAxNDY1NzMsIAorICAgIDE0NjU3NywgMTQ2NTgxLCAxNDY1ODUsIDE0NjU4OSwgMTQ2NTkzLCAxNDY1OTcsIDE0NjYwMSwgMTQ2NjA1LCAxNDY2MDksIAorICAgIDE0NjYxMywgMTQ2NjE3LCAxNDY2MjEsIDE0NjYyNSwgMTQ2NjI5LCAxNDY2MzMsIDE0NjYzNywgMTQ2NjQxLCAxNDY2NDUsIAorICAgIDE0NjY0OSwgMTQ2NjUzLCAxNDY2NTcsIDE0NjY2MSwgMTQ2NjY1LCAxNDY2NjksIDE0NjY3MywgMTQ2Njc3LCAxNDY2ODEsIAorICAgIDE0NjY4NSwgMTQ2Njg5LCAxNDY2OTMsIDE0NjY5NywgMTQ2NzAxLCAxNDY3MDUsIDE0NjcwOSwgMTQ2NzEzLCAxNDY3MTcsIAorICAgIDE0NjcyMSwgMTQ2NzI1LCAxNDY3MjksIDE0NjczMywgMTQ2NzM3LCAxNDY3NDEsIDE0Njc0NSwgMTQ2NzQ5LCAxNDY3NTMsIAorICAgIDE0Njc1NywgMTQ2NzYxLCAxNDY3NjUsIDE0Njc2OSwgMTQ2NzczLCAxNDY3NzcsIDE0Njc4MSwgMTQ2Nzg1LCAxNDY3ODksIAorICAgIDE0Njc5MywgMTQ2Nzk3LCAxNDY4MDEsIDE0NjgwNSwgMTQ2ODA5LCAxNDY4MTMsIDE0NjgxNywgMTQ2ODIxLCAxNDY4MjUsIAorICAgIDE0NjgyOSwgMTQ2ODMzLCAxNDY4MzcsIDE0Njg0MSwgMTQ2ODQ1LCAxNDY4NDksIDE0Njg1MywgMTQ2ODU3LCAxNDY4NjEsIAorICAgIDE0Njg2NSwgMTQ2ODY5LCAxNDY4NzMsIDE0Njg3NywgMTQ2ODgxLCAxNDY4ODUsIDE0Njg4OSwgMTQ2ODkzLCAxNDY4OTcsIAorICAgIDE0NjkwMSwgMTQ2OTA1LCAxNDY5MDksIDE0NjkxMywgMTQ2OTE3LCAxNDY5MjEsIDE0NjkyNSwgMTQ2OTI5LCAxNDY5MzMsIAorICAgIDE0NjkzNywgMTQ2OTQxLCAxNDY5NDUsIDE0Njk0OSwgMTQ2OTUzLCAxNDY5NTcsIDE0Njk2MSwgMTQ2OTY1LCAxNDY5NjksIAorICAgIDE0Njk3MywgMTQ2OTc3LCAxNDY5ODEsIDE0Njk4NSwgMTQ2OTg5LCAxNDY5OTMsIDE0Njk5NywgMTQ3MDAxLCAxNDcwMDUsIAorICAgIDE0NzAwOSwgMTQ3MDEzLCAxNDcwMTcsIDE0NzAyMSwgMTQ3MDI1LCAxNDcwMjksIDE0NzAzMywgMTQ3MDM3LCAxNDcwNDEsIAorICAgIDE0NzA0NSwgMTQ3MDQ5LCAxNDcwNTMsIDE0NzA1NywgMTQ3MDYxLCAxNDcwNjUsIDE0NzA2OSwgMTQ3MDczLCAxNDcwNzcsIAorICAgIDE0NzA4MSwgMTQ3MDg1LCAxNDcwODksIDE0NzA5MywgMTQ3MDk3LCAxNDcxMDEsIDE0NzEwNSwgMTQ3MTA5LCAxNDcxMTMsIAorICAgIDE0NzExNywgMTQ3MTIxLCAxNDcxMjUsIDE0NzEyOSwgMTQ3MTMzLCAxNDcxMzcsIDE0NzE0MSwgMTQ3MTQ1LCAxNDcxNDksIAorICAgIDE0NzE1MywgMTQ3MTU3LCAxNDcxNjEsIDE0NzE2NSwgMTQ3MTY5LCAxNDcxNzMsIDE0NzE3NywgMTQ3MTgxLCAxNDcxODUsIAorICAgIDE0NzE4OSwgMTQ3MTkzLCAxNDcxOTcsIDE0NzIwMSwgMTQ3MjA1LCAxNDcyMDksIDE0NzIxMywgMTQ3MjE3LCAxNDcyMjEsIAorICAgIDE0NzIyNSwgMTQ3MjI5LCAxNDcyMzMsIDE0NzIzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MjQxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDcyNDUsIDE0NzI0OCwgMTQ3MjUyLCAxNDcyNTYsIDE0NzI1OSwgMTQ3MjYzLCAxNDcyNjcsIAorICAgIDE0NzI3MCwgMTQ3MjczLCAxNDcyNzcsIDE0NzI4MSwgMTQ3Mjg0LCAxNDcyODcsIDE0NzI5MCwgMTQ3MjkzLCAxNDcyOTgsIAorICAgIDE0NzMwMSwgMTQ3MzA1LCAxNDczMDgsIDE0NzMxMSwgMTQ3MzE0LCAxNDczMTcsIDE0NzMyMCwgMTQ3MzIzLCAxNDczMjYsIAorICAgIDE0NzMyOSwgMTQ3MzMyLCAxNDczMzUsIDE0NzMzOCwgMTQ3MzQyLCAxNDczNDYsIDE0NzM1MCwgMTQ3MzU0LCAxNDczNTksIAorICAgIDE0NzM2NCwgMTQ3MzcwLCAxNDczNzYsIDE0NzM4MiwgMTQ3Mzg3LCAxNDczOTMsIDE0NzM5OSwgMTQ3NDA1LCAxNDc0MTAsIAorICAgIDE0NzQxNiwgMTQ3NDIyLCAxNDc0MjcsIDE0NzQzMywgMTQ3NDM5LCAxNDc0NDQsIDE0NzQ1MCwgMTQ3NDU2LCAxNDc0NjEsIAorICAgIDE0NzQ2NiwgMTQ3NDcyLCAxNDc0NzcsIDE0NzQ4MywgMTQ3NDg5LCAxNDc0OTUsIDE0NzUwMSwgMTQ3NTA3LCAxNDc1MTEsIAorICAgIDE0NzUxNiwgMTQ3NTIwLCAxNDc1MjUsIDE0NzUyOSwgMTQ3NTM0LCAxNDc1MzksIDE0NzU0NSwgMTQ3NTUxLCAxNDc1NTcsIAorICAgIDE0NzU2MiwgMTQ3NTY4LCAxNDc1NzQsIDE0NzU4MCwgMTQ3NTg1LCAxNDc1OTEsIDE0NzU5NywgMTQ3NjAyLCAxNDc2MDgsIAorICAgIDE0NzYxNCwgMTQ3NjE5LCAxNDc2MjUsIDE0NzYzMSwgMTQ3NjM2LCAxNDc2NDEsIDE0NzY0NywgMTQ3NjUyLCAxNDc2NTgsIAorICAgIDE0NzY2NCwgMTQ3NjcwLCAxNDc2NzYsIDE0NzY4MiwgMTQ3Njg3LCAxNDc2OTEsIDE0NzY5NiwgMTQ3Njk5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDc3MDMsIDE0NzcwNiwgMTQ3NzA5LCAxNDc3MTIsIDE0NzcxNSwgMTQ3NzE4LCAxNDc3MjEsIAorICAgIDE0NzcyNCwgMTQ3NzI3LCAxNDc3MzAsIDE0NzczMywgMTQ3NzM2LCAxNDc3MzksIDE0Nzc0MiwgMTQ3NzQ1LCAxNDc3NDgsIAorICAgIDE0Nzc1MSwgMTQ3NzU0LCAxNDc3NTcsIDE0Nzc2MCwgMTQ3NzYzLCAxNDc3NjYsIDE0Nzc2OSwgMTQ3NzcyLCAxNDc3NzUsIAorICAgIDE0Nzc3OCwgMTQ3NzgxLCAxNDc3ODQsIDE0Nzc4NywgMTQ3NzkwLCAxNDc3OTMsIDE0Nzc5NiwgMTQ3Nzk5LCAxNDc4MDIsIAorICAgIDE0NzgwNSwgMTQ3ODA4LCAxNDc4MTEsIDE0NzgxNCwgMTQ3ODE3LCAxNDc4MjAsIDE0NzgyMywgMTQ3ODI2LCAxNDc4MjksIAorICAgIDE0NzgzMiwgMTQ3ODM1LCAxNDc4MzgsIDE0Nzg0MSwgMTQ3ODQ0LCAxNDc4NDcsIDE0Nzg1MCwgMTQ3ODUzLCAxNDc4NTYsIAorICAgIDE0Nzg1OSwgMTQ3ODYyLCAxNDc4NjUsIDE0Nzg2OCwgMTQ3ODcxLCAxNDc4NzQsIDE0Nzg3NywgMTQ3ODgwLCAxNDc4ODMsIAorICAgIDE0Nzg4NiwgMTQ3ODg5LCAxNDc4OTIsIDE0Nzg5NSwgMTQ3ODk4LCAxNDc5MDEsIDE0NzkwNCwgMTQ3OTA3LCAxNDc5MTAsIAorICAgIDE0NzkxMywgMTQ3OTE2LCAxNDc5MTksIDE0NzkyMiwgMTQ3OTI1LCAxNDc5MjgsIDE0NzkzMSwgMTQ3OTM0LCAxNDc5MzcsIAorICAgIDE0Nzk0MCwgMTQ3OTQzLCAxNDc5NDYsIDE0Nzk0OSwgMTQ3OTUyLCAxNDc5NTUsIDE0Nzk1OCwgMTQ3OTYxLCAxNDc5NjQsIAorICAgIDE0Nzk2NywgMTQ3OTcwLCAxNDc5NzMsIDE0Nzk3NiwgMTQ3OTc5LCAxNDc5ODIsIDE0Nzk4NSwgMTQ3OTg4LCAxNDc5OTEsIAorICAgIDE0Nzk5NCwgMTQ3OTk3LCAxNDgwMDAsIDE0ODAwMywgMTQ4MDA2LCAxNDgwMDksIDE0ODAxMiwgMTQ4MDE1LCAxNDgwMTgsIAorICAgIDE0ODAyMSwgMTQ4MDI0LCAxNDgwMjcsIDE0ODAzMCwgMTQ4MDMzLCAxNDgwMzYsIDE0ODAzOSwgMTQ4MDQyLCAxNDgwNDUsIAorICAgIDE0ODA0OCwgMTQ4MDUxLCAxNDgwNTQsIDE0ODA1NywgMTQ4MDYwLCAxNDgwNjMsIDE0ODA2NiwgMTQ4MDY5LCAxNDgwNzIsIAorICAgIDE0ODA3NSwgMTQ4MDc4LCAxNDgwODEsIDE0ODA4NCwgMTQ4MDg3LCAxNDgwOTAsIDE0ODA5MywgMTQ4MDk2LCAxNDgwOTksIAorICAgIDE0ODEwMiwgMTQ4MTA1LCAxNDgxMDgsIDE0ODExMSwgMTQ4MTE0LCAxNDgxMTcsIDE0ODEyMCwgMTQ4MTIzLCAxNDgxMjYsIAorICAgIDE0ODEyOSwgMTQ4MTMyLCAxNDgxMzUsIDE0ODEzOCwgMTQ4MTQxLCAxNDgxNDQsIDE0ODE0NywgMTQ4MTUwLCAxNDgxNTMsIAorICAgIDE0ODE1NiwgMTQ4MTU5LCAxNDgxNjIsIDE0ODE2NSwgMTQ4MTY4LCAxNDgxNzEsIDE0ODE3NCwgMTQ4MTc3LCAxNDgxODAsIAorICAgIDE0ODE4MywgMTQ4MTg2LCAxNDgxODksIDE0ODE5MiwgMTQ4MTk1LCAxNDgxOTgsIDE0ODIwMSwgMTQ4MjA0LCAxNDgyMDcsIAorICAgIDE0ODIxMCwgMTQ4MjEzLCAxNDgyMTYsIDE0ODIxOSwgMTQ4MjIyLCAxNDgyMjUsIDE0ODIyOCwgMTQ4MjMxLCAxNDgyMzQsIAorICAgIDE0ODIzNywgMTQ4MjQwLCAxNDgyNDMsIDE0ODI0NiwgMTQ4MjQ5LCAxNDgyNTIsIDE0ODI1NSwgMTQ4MjU4LCAxNDgyNjEsIAorICAgIDE0ODI2NCwgMTQ4MjY3LCAxNDgyNzAsIDE0ODI3MywgMTQ4Mjc2LCAxNDgyNzksIDE0ODI4MiwgMTQ4Mjg1LCAxNDgyODgsIAorICAgIDE0ODI5MSwgMTQ4Mjk0LCAxNDgyOTcsIDE0ODMwMCwgMTQ4MzAzLCAxNDgzMDYsIDE0ODMwOSwgMTQ4MzEyLCAxNDgzMTUsIAorICAgIDE0ODMxOCwgMTQ4MzIxLCAxNDgzMjQsIDE0ODMyNywgMTQ4MzMwLCAxNDgzMzMsIDE0ODMzNiwgMTQ4MzM5LCAxNDgzNDIsIAorICAgIDE0ODM0NSwgMTQ4MzQ4LCAxNDgzNTEsIDE0ODM1NCwgMTQ4MzU3LCAxNDgzNjAsIDE0ODM2MywgMTQ4MzY2LCAxNDgzNjksIAorICAgIDE0ODM3MiwgMTQ4Mzc1LCAxNDgzNzgsIDE0ODM4MSwgMTQ4Mzg0LCAxNDgzODcsIDE0ODM5MCwgMTQ4MzkzLCAxNDgzOTYsIAorICAgIDE0ODM5OSwgMTQ4NDAyLCAxNDg0MDUsIDE0ODQwOCwgMTQ4NDExLCAxNDg0MTQsIDE0ODQxNywgMTQ4NDIwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg0MjMsIDE0ODQyNSwgMTQ4NDI3LCAxNDg0MzIsIAorICAgIDE0ODQzNCwgMTQ4NDM5LCAxNDg0NDEsIDE0ODQ0NiwgMTQ4NDQ4LCAxNDg0NTMsIDE0ODQ1NSwgMTQ4NDU3LCAxNDg0NTksIAorICAgIDE0ODQ2MSwgMTQ4NDYzLCAxNDg0NjUsIDE0ODQ2NywgMTQ4NDY5LCAxNDg0NzEsIDE0ODQ3NCwgMTQ4NDc3LCAxNDg0NzksIAorICAgIDE0ODQ4MSwgMTQ4NDg1LCAxNDg0ODgsIDE0ODQ5MywgMTQ4NDk1LCAxNDg0OTcsIDE0ODQ5OSwgMTQ4NTAzLCAxNDg1MDYsIAorICAgIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTQsIDE0ODUxOCwgMTQ4NTIwLCAxNDg1MjQsIDE0ODUyNywgMTQ4NTI5LCAxNDg1MzMsIAorICAgIDE0ODUzNywgMTQ4NTM5LCAxNDg1NDUsIDE0ODU0NywgMTQ4NTUyLCAxNDg1NTQsIDE0ODU1OSwgMTQ4NTYxLCAxNDg1NjYsIAorICAgIDE0ODU2OCwgMTQ4NTczLCAxNDg1NzUsIDE0ODU3OCwgMTQ4NTgwLCAxNDg1ODQsIDE0ODU4NiwgMTQ4NTkzLCAxNDg1OTUsIAorICAgIDE0ODU5NywgMTQ4NTk5LCAxNDg2MDQsIDE0ODYwNiwgMTQ4NjA4LCAxNDg2MTAsIDE0ODYxMiwgMTQ4NjE0LCAxNDg2MTksIAorICAgIDE0ODYyMywgMTQ4NjI1LCAxNDg2MzAsIDE0ODYzNCwgMTQ4NjM2LCAxNDg2NDEsIDE0ODY0NSwgMTQ4NjQ3LCAxNDg2NTIsIAorICAgIDE0ODY1NiwgMTQ4NjU4LCAxNDg2NjAsIDE0ODY2MiwgMTQ4NjY0LCAxNDg2NjgsIDE0ODY3MCwgMTQ4Njc1LCAxNDg2NzcsIAorICAgIDE0ODY4MywgMTQ4Njg1LCAxNDg2OTEsIDE0ODY5MywgMTQ4Njk1LCAxNDg2OTcsIDE0ODcwMSwgMTQ4NzAzLCAxNDg3MTAsIAorICAgIDE0ODcxMiwgMTQ4NzE5LCAxNDg3MjEsIDE0ODcyNiwgMTQ4NzMxLCAxNDg3MzMsIDE0ODczOSwgMTQ4NzQ1LCAxNDg3NDcsIAorICAgIDE0ODc1MywgMTQ4NzU4LCAxNDg3NjAsIDE0ODc2NiwgMTQ4NzcyLCAxNDg3NzQsIDE0ODc4MCwgMTQ4Nzg2LCAxNDg3ODgsIAorICAgIDE0ODc5NCwgMTQ4Nzk4LCAxNDg4MDAsIDE0ODgwNSwgMTQ4ODA3LCAxNDg4MDksIDE0ODgxNCwgMTQ4ODE2LCAxNDg4MTgsIAorICAgIDE0ODgyNCwgMTQ4ODI2LCAxNDg4MzEsIDE0ODgzNSwgMTQ4ODM3LCAxNDg4NDIsIDE0ODg0NiwgMTQ4ODQ4LCAxNDg4NTQsIAorICAgIDE0ODg1NiwgMTQ4ODYwLCAxNDg4NjIsIDE0ODg2NiwgMTQ4ODY4LCAxNDg4NzUsIDE0ODg4MiwgMTQ4ODg0LCAxNDg4OTEsIAorICAgIDE0ODg5OCwgMTQ4OTAwLCAxNDg5MDUsIDE0ODkwNywgMTQ4OTE0LCAxNDg5MTYsIDE0ODkyMSwgMTQ4OTIzLCAxNDg5MjksIAorICAgIDE0ODkzMSwgMTQ4OTM1LCAxNDg5MzcsIDE0ODk0MywgMTQ4OTQ1LCAxNDg5NDksIDE0ODk1MSwgMTQ4OTU3LCAxNDg5NTksIAorICAgIDE0ODk2MSwgMTQ4OTYzLCAxNDg5NjgsIDE0ODk3MywgMTQ4OTc1LCAxNDg5NzcsIDE0ODk4NywgMTQ4OTkxLCAxNDg5OTgsIAorICAgIDE0OTAwNSwgMTQ5MDEwLCAxNDkwMTUsIDE0OTAyNywgMTQ5MDI5LCAxNDkwMzEsIDE0OTAzMywgMTQ5MDM1LCAxNDkwMzcsIAorICAgIDE0OTAzOSwgMTQ5MDQxLCAxNDkwNDMsIDE0OTA0NSwgMTQ5MDQ3LCAxNDkwNDksIDE0OTA1MSwgMTQ5MDUzLCAxNDkwNTUsIAorICAgIDE0OTA1NywgMTQ5MDU5LCAxNDkwNjEsIDE0OTA2MywgMTQ5MDY1LCAxNDkwNjcsIDE0OTA2OSwgMTQ5MDc1LCAxNDkwODIsIAorICAgIDE0OTA4NywgMTQ5MDkyLCAxNDkxMDMsIDE0OTEwNSwgMTQ5MTA3LCAxNDkxMDksIDE0OTExMSwgMTQ5MTEzLCAxNDkxMTUsIAorICAgIDE0OTExNywgMTQ5MTE5LCAxNDkxMjEsIDE0OTEyMywgMTQ5MTI1LCAxNDkxMjcsIDE0OTEyOSwgMTQ5MTMxLCAxNDkxMzMsIAorICAgIDE0OTEzNSwgMTQ5MTQwLCAxNDkxNDIsIDE0OTE0NCwgMTQ5MTUwLCAxNDkxNjIsIDE0OTE3MywgMTQ5MTc1LCAxNDkxNzcsIAorICAgIDE0OTE3OSwgMTQ5MTgxLCAxNDkxODMsIDE0OTE4NSwgMTQ5MTg3LCAxNDkxODksIDE0OTE5MSwgMTQ5MTkzLCAxNDkxOTUsIAorICAgIDE0OTE5NywgMTQ5MTk5LCAxNDkyMDEsIDE0OTIwMywgMTQ5MjA1LCAxNDkyMDcsIDE0OTIwOSwgMTQ5MjExLCAxNDkyMTMsIAorICAgIDE0OTIxNSwgMTQ5MjE3LCAxNDkyMTksIDE0OTIyMSwgMTQ5MjIzLCAxNDkyMjUsIDE0OTIyNywgMTQ5MjI5LCAxNDkyMzEsIAorICAgIDE0OTIzMywgMTQ5MjM1LCAxNDkyMzcsIDE0OTIzOSwgMTQ5MjQxLCAxNDkyNDMsIDE0OTI0NSwgMTQ5MjQ3LCAxNDkyNDksIAorICAgIDE0OTI1MSwgMTQ5MjUzLCAxNDkyNTUsIDE0OTI1NywgMTQ5MjU5LCAxNDkyNjEsIDE0OTI2MywgMTQ5MjY1LCAxNDkyNjcsIAorICAgIDE0OTI2OSwgMTQ5MjcxLCAxNDkyNzMsIDE0OTI3NSwgMTQ5Mjc3LCAxNDkyNzksIDE0OTI4MSwgMTQ5MjgzLCAxNDkyODUsIAorICAgIDE0OTI4NywgMTQ5Mjg5LCAxNDkyOTEsIDE0OTI5MywgMTQ5Mjk1LCAxNDkyOTcsIDE0OTI5OSwgMTQ5MzAxLCAxNDkzMDMsIAorICAgIDE0OTMwNSwgMTQ5MzA3LCAxNDkzMDksIDE0OTMxMSwgMTQ5MzEzLCAxNDkzMTUsIDE0OTMxNywgMTQ5MzE5LCAxNDkzMjEsIAorICAgIDE0OTMyMywgMTQ5MzI1LCAxNDkzMjcsIDE0OTMyOSwgMTQ5MzMxLCAxNDkzMzMsIDE0OTMzNSwgMTQ5MzM3LCAxNDkzMzksIAorICAgIDE0OTM0MSwgMTQ5MzQzLCAxNDkzNDUsIDE0OTM0NywgMTQ5MzQ5LCAxNDkzNTEsIDE0OTM1MywgMTQ5MzU1LCAxNDkzNTcsIAorICAgIDE0OTM1OSwgMTQ5MzYxLCAxNDkzNjMsIDE0OTM2NSwgMTQ5MzY3LCAxNDkzNjksIDE0OTM3MSwgMTQ5MzczLCAxNDkzNzUsIAorICAgIDE0OTM3NywgMTQ5Mzc5LCAxNDkzODEsIDE0OTM4MywgMTQ5Mzg1LCAxNDkzODcsIDE0OTM4OSwgMTQ5MzkxLCAxNDkzOTMsIAorICAgIDE0OTM5NSwgMTQ5Mzk3LCAxNDkzOTksIDE0OTQwMSwgMTQ5NDAzLCAxNDk0MDUsIDE0OTQwNywgMTQ5NDA5LCAxNDk0MTEsIAorICAgIDE0OTQxMywgMTQ5NDE1LCAxNDk0MTcsIDE0OTQxOSwgMTQ5NDIxLCAxNDk0MjMsIDE0OTQyNSwgMTQ5NDI3LCAxNDk0MjksIAorICAgIDE0OTQzMSwgMTQ5NDMzLCAxNDk0MzUsIDE0OTQzNywgMTQ5NDM5LCAxNDk0NDEsIDE0OTQ0MywgMTQ5NDQ1LCAxNDk0NDcsIAorICAgIDE0OTQ0OSwgMTQ5NDUxLCAxNDk0NTMsIDE0OTQ1NSwgMTQ5NDU3LCAxNDk0NTksIDE0OTQ2MSwgMTQ5NDYzLCAxNDk0NjUsIAorICAgIDE0OTQ2NywgMTQ5NDY5LCAxNDk0NzEsIDE0OTQ3MywgMTQ5NDc1LCAxNDk0NzcsIDE0OTQ3OSwgMTQ5NDgxLCAxNDk0ODMsIAorICAgIDE0OTQ4NSwgMTQ5NDg3LCAxNDk0ODksIDE0OTQ5MSwgMTQ5NDkzLCAxNDk0OTUsIDE0OTQ5NywgMTQ5NDk5LCAxNDk1MDEsIAorICAgIDE0OTUwMywgMTQ5NTA1LCAxNDk1MDcsIDE0OTUwOSwgMTQ5NTExLCAxNDk1MTMsIDE0OTUxNSwgMTQ5NTE3LCAxNDk1MTksIAorICAgIDE0OTUyMSwgMTQ5NTIzLCAxNDk1MjUsIDE0OTUyNywgMTQ5NTI5LCAxNDk1MzEsIDE0OTUzMywgMTQ5NTM1LCAxNDk1MzcsIAorICAgIDE0OTUzOSwgMTQ5NTQxLCAxNDk1NDMsIDE0OTU0NSwgMTQ5NTQ3LCAxNDk1NDksIDE0OTU1MSwgMTQ5NTUzLCAxNDk1NTUsIAorICAgIDE0OTU1NywgMTQ5NTU5LCAxNDk1NjEsIDE0OTU2MywgMTQ5NTY1LCAxNDk1NjcsIDE0OTU2OSwgMTQ5NTcxLCAxNDk1NzMsIAorICAgIDE0OTU3NSwgMTQ5NTc3LCAxNDk1NzksIDE0OTU4MSwgMTQ5NTgzLCAxNDk1ODUsIDE0OTU4NywgMTQ5NTg5LCAxNDk1OTEsIAorICAgIDE0OTU5MywgMTQ5NTk1LCAxNDk1OTcsIDE0OTU5OSwgMTQ5NjAxLCAxNDk2MDMsIDE0OTYwNSwgMTQ5NjA3LCAxNDk2MDksIAorICAgIDE0OTYxMSwgMTQ5NjEzLCAxNDk2MTUsIDE0OTYxNywgMTQ5NjE5LCAxNDk2MjEsIDE0OTYyMywgMTQ5NjI1LCAxNDk2MjcsIAorICAgIDE0OTYyOSwgMTQ5NjMxLCAxNDk2MzMsIDE0OTYzNSwgMTQ5NjM3LCAxNDk2MzksIDE0OTY0MSwgMTQ5NjQzLCAxNDk2NDUsIAorICAgIDE0OTY0NywgMTQ5NjQ5LCAxNDk2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTY1MywgMTQ5NjYzLCAxNDk2NzMsIAorICAgIDE0OTY4MiwgMTQ5NjkxLCAxNDk3MDQsIDE0OTcxNywgMTQ5NzI5LCAxNDk3NDEsIDE0OTc1MSwgMTQ5NzYxLCAxNDk3NzEsIAorICAgIDE0OTc4MSwgMTQ5NzkyLCAxNDk4MDMsIDE0OTgxMywgMTQ5ODIyLCAxNDk4MzEsIDE0OTg0MCwgMTQ5ODUzLCAxNDk4NjYsIAorICAgIDE0OTg3OCwgMTQ5ODkwLCAxNDk5MDAsIDE0OTkxMCwgMTQ5OTIwLCAxNDk5MzAsIDE0OTkzOSwgMTQ5OTQ4LCAxNDk5NTgsIAorICAgIDE0OTk2OCwgMTQ5OTc3LCAxNDk5ODYsIDE0OTk5NiwgMTUwMDA2LCAxNTAwMTUsIDE1MDAyNCwgMTUwMDM0LCAxNTAwNDQsIAorICAgIDE1MDA1NSwgMTUwMDY2LCAxNTAwNzYsIDE1MDA4OSwgMTUwMTAwLCAxNTAxMTQsIDE1MDEyMiwgMTUwMTMzLCAxNTAxNDEsIAorICAgIDE1MDE0OSwgMTUwMTU3LCAxNTAxNjUsIDE1MDE3MywgMTUwMTgxLCAxNTAxOTAsIDE1MDE5OSwgMTUwMjA5LCAxNTAyMTksIAorICAgIDE1MDIyOCwgMTUwMjM3LCAxNTAyNDcsIDE1MDI1NywgMTUwMjY1LCAxNTAyNzQsIDE1MDI4MiwgMTUwMjkxLCAxNTAyOTksIAorICAgIDE1MDMwNywgMTUwMzE0LCAxNTAzMjQsIDE1MDMzMywgMTUwMzQ0LCAxNTAzNTUsIDE1MDM2NywgMTUwMzc4LCAxNTAzODgsIAorICAgIDE1MDM5OSwgMTUwNDA5LCAxNTA0MjAsIDE1MDQyOCwgMTUwNDMyLCAxNTA0MzYsIDE1MDQ0MCwgMTUwNDQ0LCAxNTA0NDgsIAorICAgIDE1MDQ1MiwgMTUwNDU2LCAxNTA0NjAsIDE1MDQ2NCwgMTUwNDY4LCAxNTA0NzIsIDE1MDQ3NiwgMTUwNDc5LCAxNTA0ODIsIAorICAgIDE1MDQ4NiwgMTUwNDkwLCAxNTA0OTQsIDE1MDQ5OCwgMTUwNTAyLCAxNTA1MDYsIDE1MDUxMCwgMTUwNTE0LCAxNTA1MTcsIAorICAgIDE1MDUyMSwgMTUwNTI1LCAxNTA1MjksIDE1MDUzMywgMTUwNTM3LCAxNTA1NDEsIDE1MDU0NSwgMTUwNTQ5LCAxNTA1NTMsIAorICAgIDE1MDU1NywgMTUwNTYxLCAxNTA1NjUsIDE1MDU2OSwgMTUwNTczLCAxNTA1NzcsIDE1MDU4MSwgMTUwNTg1LCAxNTA1ODksIAorICAgIDE1MDU5MywgMTUwNTk3LCAxNTA2MDEsIDE1MDYwNSwgMTUwNjA5LCAxNTA2MTMsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjUsIAorICAgIDE1MDYyOSwgMTUwNjMzLCAxNTA2MzcsIDE1MDY0MSwgMTUwNjQ1LCAxNTA2NDksIDE1MDY1MywgMTUwNjU3LCAxNTA2NjEsIAorICAgIDE1MDY2NSwgMTUwNjY5LCAxNTA2NzMsIDE1MDY3NywgMTUwNjgxLCAxNTA2ODUsIDE1MDY4OSwgMTUwNjkzLCAxNTA2OTcsIAorICAgIDE1MDcwMSwgMTUwNzA1LCAxNTA3MDksIDE1MDcxMywgMTUwNzE3LCAxNTA3MjEsIDE1MDcyNSwgMTUwNzI5LCAxNTA3MzMsIAorICAgIDE1MDczNywgMTUwNzQxLCAxNTA3NDUsIDE1MDc0OSwgMTUwNzUzLCAxNTA3NTcsIDE1MDc2MSwgMTUwNzY1LCAxNTA3NjksIAorICAgIDE1MDc3MywgMTUwNzc3LCAxNTA3ODEsIDE1MDc4NSwgMTUwNzg5LCAxNTA3OTMsIDE1MDc5NywgMTUwODAxLCAxNTA4MDUsIAorICAgIDE1MDgwOSwgMTUwODEzLCAxNTA4MTcsIDE1MDgyMSwgMTUwODI0LCAxNTA4MjgsIDE1MDgzMiwgMTUwODM2LCAxNTA4NDAsIAorICAgIDE1MDg0NCwgMTUwODQ4LCAxNTA4NTIsIDE1MDg1NiwgMTUwODYwLCAxNTA4NjQsIDE1MDg2OCwgMTUwODcyLCAxNTA4NzYsIAorICAgIDE1MDg4MCwgMTUwODg0LCAxNTA4ODgsIDE1MDg5MiwgMTUwODk2LCAxNTA5MDAsIDE1MDkwNCwgMTUwOTA4LCAxNTA5MTIsIAorICAgIDE1MDkxNiwgMTUwOTIwLCAxNTA5MjQsIDE1MDkyOCwgMTUwOTMyLCAxNTA5MzYsIDE1MDk0MCwgMTUwOTQ0LCAxNTA5NDgsIAorICAgIDE1MDk1MiwgMTUwOTU2LCAxNTA5NjAsIDE1MDk2NCwgMTUwOTY4LCAxNTA5NzIsIDE1MDk3NiwgMTUwOTgwLCAxNTA5ODQsIAorICAgIDE1MDk4OCwgMTUwOTkyLCAxNTA5OTYsIDE1MTAwMCwgMTUxMDA0LCAxNTEwMDgsIDE1MTAxMiwgMTUxMDE2LCAxNTEwMjAsIAorICAgIDE1MTAyNCwgMTUxMDI4LCAxNTEwMzIsIDE1MTAzNiwgMTUxMDQwLCAxNTEwNDQsIDE1MTA0OCwgMTUxMDUyLCAxNTEwNTYsIAorICAgIDE1MTA2MCwgMTUxMDY0LCAxNTEwNjgsIDE1MTA3MiwgMTUxMDc2LCAxNTEwODAsIDE1MTA4NCwgMTUxMDg4LCAxNTEwOTIsIAorICAgIDE1MTA5NiwgMTUxMTAwLCAxNTExMDQsIDE1MTEwOCwgMTUxMTEyLCAxNTExMTYsIDE1MTEyMCwgMTUxMTI0LCAxNTExMjgsIAorICAgIDE1MTEzMiwgMTUxMTM2LCAxNTExNDAsIDE1MTE0NCwgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTYwLCAxNTExNjQsIAorICAgIDE1MTE2OCwgMTUxMTcyLCAxNTExNzYsIDE1MTE4MCwgMTUxMTg0LCAxNTExODgsIDE1MTE5MiwgMTUxMTk2LCAxNTEyMDAsIAorICAgIDE1MTIwNCwgMTUxMjA4LCAxNTEyMTIsIDE1MTIxNiwgMTUxMjIwLCAxNTEyMjQsIDE1MTIyOCwgMTUxMjMyLCAxNTEyMzYsIAorICAgIDE1MTI0MCwgMTUxMjQ0LCAxNTEyNDgsIDE1MTI1MiwgMTUxMjU2LCAxNTEyNjAsIDE1MTI2NCwgMTUxMjY4LCAxNTEyNzIsIAorICAgIDE1MTI3NiwgMTUxMjgwLCAxNTEyODQsIDE1MTI4OCwgMTUxMjkyLCAxNTEyOTYsIDE1MTMwMCwgMTUxMzA0LCAxNTEzMDgsIAorICAgIDE1MTMxMiwgMTUxMzE2LCAxNTEzMjAsIDE1MTMyNCwgMTUxMzI4LCAxNTEzMzIsIDE1MTMzNiwgMTUxMzQwLCAxNTEzNDQsIAorICAgIDE1MTM0OCwgMTUxMzUyLCAxNTEzNTYsIDE1MTM2MCwgMTUxMzY0LCAxNTEzNjgsIDE1MTM3MiwgMTUxMzc2LCAxNTEzODAsIAorICAgIDE1MTM4NCwgMTUxMzg4LCAxNTEzOTIsIDE1MTM5NiwgMTUxNDAwLCAxNTE0MDQsIDE1MTQwOCwgMTUxNDEyLCAxNTE0MTYsIAorICAgIDE1MTQyMCwgMTUxNDI0LCAxNTE0MjgsIDE1MTQzMiwgMTUxNDM2LCAxNTE0NDAsIDE1MTQ0NCwgMTUxNDQ4LCAxNTE0NTIsIAorICAgIDE1MTQ1NiwgMTUxNDYwLCAxNTE0NjQsIDE1MTQ2OCwgMTUxNDcyLCAxNTE0NzYsIDE1MTQ4MCwgMTUxNDg0LCAxNTE0ODgsIAorICAgIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwNCwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNiwgMTUxNTIwLCAxNTE1MjQsIAorICAgIDE1MTUyOCwgMTUxNTMyLCAxNTE1MzYsIDE1MTU0MCwgMTUxNTQ0LCAxNTE1NDgsIDE1MTU1MiwgMTUxNTU2LCAxNTE1NjAsIAorICAgIDE1MTU2NCwgMTUxNTY4LCAxNTE1NzIsIDE1MTU3NiwgMTUxNTgwLCAxNTE1ODQsIDE1MTU4OCwgMTUxNTkzLCAxNTE1OTgsIAorICAgIDE1MTYwMywgMTUxNjA3LCAxNTE2MTMsIDE1MTYyMCwgMTUxNjI3LCAxNTE2MzQsIDE1MTY0MSwgMTUxNjQ4LCAxNTE2NTUsIAorICAgIDE1MTY2MiwgMTUxNjY5LCAxNTE2NzYsIDE1MTY4MywgMTUxNjkwLCAxNTE2OTcsIDE1MTcwNCwgMTUxNzEwLCAxNTE3MTcsIAorICAgIDE1MTcyNCwgMTUxNzMwLCAxNTE3MzcsIDE1MTc0NCwgMTUxNzUxLCAxNTE3NTgsIDE1MTc2NSwgMTUxNzcyLCAxNTE3NzksIAorICAgIDE1MTc4NiwgMTUxNzkzLCAxNTE4MDAsIDE1MTgwNywgMTUxODE0LCAxNTE4MjEsIDE1MTgyOCwgMTUxODM0LCAxNTE4NDEsIAorICAgIDE1MTg0OCwgMTUxODU3LCAxNTE4NjYsIDE1MTg3NSwgMTUxODg0LCAxNTE4ODksIDE1MTg5NCwgMTUxOTAwLCAxNTE5MDYsIAorICAgIDE1MTkxMiwgMTUxOTE4LCAxNTE5MjQsIDE1MTkzMCwgMTUxOTM2LCAxNTE5NDIsIDE1MTk0OCwgMTUxOTU0LCAxNTE5NjAsIAorICAgIDE1MTk2NiwgMTUxOTcxLCAxNTE5NzcsIDE1MTk4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7Ci0gICAgNzQyMjQsIDQ4NTEsIDAsIDc4MTU2LCA3ODQ5OSwgMTI4Njg1LCA3OTI5LCAwLCAxOTQ2ODIsIDEyNzc2NiwgNzg1MDAsIAotICAgIDY2NDgwLCAwLCA0MjgzMywgNzQ1MjksIDEyMDY0LCAwLCA1OTYsIDk4MzgyMSwgNjk4NTAsIDEzMTkyLCA4NjUxLCAwLCAwLCAKLSAgICAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMCwgMCwgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIAotICAgIDQyMzMsIDQyMzQsIDQyMzIsIDkxNzgzNiwgNzQ0MTUsIDEyMDIxMCwgNjM4NCwgOTE3ODQwLCA3ODEwOCwgODg1MSwgMCwgCi0gICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgOTgzNzgzLCA3NzQ4LCAwLCAwLCAwLCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCAKLSAgICA5MTg4LCA0MTYwMCwgMCwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDAsIDAsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgCi0gICAgMzQwNCwgMCwgMCwgMCwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCAxMjA1NzIsIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAKLSAgICAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgOTgzODYwLCAKLSAgICA2NTI4OCwgMCwgMTEzOTgsIDAsIDkyNDE3LCAxMTkyNTUsIDAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCAwLCA5MTc4MjQsIAotICAgIDMzNTAsIDEyMDgxNywgNjQzMTgsIDkxNzgyOCwgMTI3MDg5LCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCAKLSAgICA3ODU3MywgMCwgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMjc5NDQsIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgCisgICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgNjY5MTAsIDE5NDY4MiwgMTI3NzY2LCAKKyAgICA3ODUwMCwgNjY0ODAsIDY0MDM4LCA0MjgzMywgNzQ1MjksIDEyMDY0LCA3MjM4NSwgNTk2LCA5ODM4MjEsIDY5ODUwLCAKKyAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCAxMjY1NDIsIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAwLCAxMTM3NTIsIDU4MTYsIAorICAgIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCA0MjMzLCA0MjM0LCA0MjMyLCA5MTc4MzYsIDc0NDE1LCAKKyAgICAxMjAyMTAsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDcyMzkyLCAKKyAgICA3NzQ4LCAwLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAwLCAxMjA2MTgsIAorICAgIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIDAsIDcwNDg3LCAKKyAgICA3MjQxMSwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCA2OTk3MiwgMTE5MjA1LCA2NjU3NywgOTQwMTQsIDEyNzc2NCwgNjU4NTksIAorICAgIDAsIDc0MDQsIDAsIDAsIDY5OTcwLCAxMjgzODcsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCA5ODM4NjAsIDY1Mjg4LCAwLCAKKyAgICAxMTM5OCwgMCwgOTI0MTcsIDkzMDE2LCAxMjgzODAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAKKyAgICAzMzUwLCAxMjA4MTcsIDY0MzE4LCA5MTc4MjgsIDc4MTIxLCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCAKKyAgICA3ODU3MywgMCwgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMTk5NDksIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgCiAgICAgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgCi0gICAgNjQxMjgsIDEyODU4NywgMCwgMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDk4Mzg0NCwgNDMzNzQsIDk3NzksIAotICAgIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgMCwgNjYwMjEsIDAsIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgCi0gICAgMjg0MywgNTM1NSwgMTI3OTI4LCA5ODM5NjUsIDAsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCA5ODM2MjAsIDAsIAotICAgIDAsIDEyNzAyNywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCAKLSAgICA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIAotICAgIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIAotICAgIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIAotICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDk4Mzk0OSwgMTIyMTMsIDE5NDY3OCwgCi0gICAgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAKLSAgICAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgCi0gICAgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIAotICAgIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgCi0gICAgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCAKLSAgICA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCAKLSAgICA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NjcxLCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIAotICAgIDkxNzk5MCwgNzM4NDEsIDAsIDAsIDkwNTYsIDY0MzEzLCA2MTg4LCAxMjAwMTksIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgCi0gICAgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgCi0gICAgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCA5ODM4MzEsIDAsIDEyMDUxOSwgNjYzNzYsIAotICAgIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgCi0gICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MjEsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDEyNjU3MCwgMCwgNjQ2MTUsIDQxOTE1LCAKLSAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNywgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKLSAgICA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgCi0gICAgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIAotICAgIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgCi0gICAgMCwgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCAxOTQ4MTcsIAotICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCAwLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCAxMjc4ODEsIDI5OCwgMCwgMTI4MTE0LCAKLSAgICAwLCA0MjYyNywgMCwgMzIsIDYxODcsIDExOTA1MiwgMTE0OTUsIDExNDU5LCAzNjY1LCA5ODM2MDAsIDQyODcxLCAwLCAKLSAgICAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIAotICAgIDk4MzQ2NiwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCi0gICAgNjUwMTQsIDAsIDAsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgCi0gICAgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDk4MzExOCwgMTAyMDcsIDg3ODksIAotICAgIDk4MzIyNSwgMCwgMCwgOTgzNDcyLCA5MjM0LCAwLCA2MTgyLCA5ODM0NzQsIDY1MDU4LCAwLCA5ODM0NzgsIDk4MzQ3NSwgMCwgCi0gICAgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDAsIAotICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgNjQ0MDUsIDQxMzM3LCAwLCAKLSAgICA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAwLCA2NDYxOCwgCi0gICAgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCA1MDU4LCA0MTAxMCwgCi0gICAgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCAKLSAgICA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMCwgMTI4NTI5LCAKLSAgICAxMjExMywgNDIzNiwgNDcyNywgMCwgMCwgNzY5MywgMTA3NDksIDAsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAwLCAKLSAgICA0MTYxOSwgMTAyMzksIDY4NjExLCAwLCA2NjIwOSwgMCwgMTI4NzAwLCA5NzQ4LCA5ODM5NTYsIDEyNzUyNCwgMCwgMCwgMCwgCi0gICAgMCwgMTk1MDgzLCAwLCA5ODM4NDMsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCAKLSAgICA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgOTgzOTcyLCA5ODM5NzMsIAotICAgIDExOTIzNSwgNzQwOTIsIDczOTM2LCA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCA5ODM4NTcsIDI2NCwgCi0gICAgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgCi0gICAgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCAKLSAgICA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDk4MzA0MCwgMTI4OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI2MSwgMTIwNzA3LCAKLSAgICA5ODMxMjgsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgMTE4OTgxLCA3NDQ5MywgOTgzNTYxLCA1MDcyLCA5Mzk3NywgCi0gICAgNjE5OCwgMTE2MTQsIDAsIDE5NiwgMCwgMCwgMCwgNDkyOSwgMTIwMzQyLCAwLCAwLCAwLCAwLCA0Mjg0NywgMCwgMCwgMCwgCi0gICAgNDkzNCwgMCwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCAxMjc5MTcsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgCi0gICAgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNzQ0MTgsIDEyODE5LCAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAKLSAgICAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIAotICAgIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAKLSAgICAxOTQ2MTksIDAsIDAsIDY0NzA5LCAwLCAxOTQ2MjAsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAwLCAKLSAgICAwLCA5NTI2LCA0OTIwLCAwLCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMCwgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTIwMjExLCAKLSAgICAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgCi0gICAgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgMTI3NDc3LCAxNjcyLCA2MjA1LCAKLSAgICAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgCi0gICAgMTI2NTAzLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAxMjc0NjIsIDcwMDUsIDQxNjA5LCAKLSAgICA5NTgwLCAwLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCA4MTQzLCAxMjcxMTUsIAotICAgIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMCwgNTA3NiwgMCwgCi0gICAgMTk0NjA5LCAwLCA4Mjk1LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAwLCA5MjUyMywgMTIwMTAyLCA3MTM4LCAKLSAgICAxMjA1NTIsIDAsIDE5NDYxMSwgNzg3NTIsIDAsIDEyNTIwLCA4MDU4LCA5NzMyLCAwLCA1MDgwLCA2NDc3NSwgNTAzNiwgCi0gICAgNTAzNSwgMTIwNTkwLCA0MjYwNCwgOTgzNjU2LCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgNDQzMiwgCi0gICAgMTI3MjcxLCA1MDMzLCAxMjcyNzMsIDEyNzI3MiwgNDgzNiwgMzg4OCwgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCAKLSAgICA0MzcwNCwgMTI3MjY0LCAxMjcyNTEsIDY3NTg4LCAxMTkwMDAsIDEyNzI1MiwgMTI3MjU1LCA4ODU4LCA2NDA5LCAxMjcyNTYsIAotICAgIDEyMDI1MiwgMTI4MTAwLCAwLCAwLCA2NjMyMSwgMCwgMTI4MTQsIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIAotICAgIDc2NDEsIDQyNDQ1LCAwLCA5MjQ4NywgNDI0MDYsIDE2NzYsIDc0MzIwLCAxOTQ2MDcsIDk4MzE3NywgNTAzMCwgMCwgMCwgMCwgCi0gICAgNzM4NjksIDk2MjIsIDAsIDY5OTQ0LCA2Nzg3LCAwLCAwLCAwLCA5ODM1ODMsIDEwNTQ0LCAxMjkxOSwgMCwgOTIyMTgsIDAsIAotICAgIDAsIDY5OTA2LCAxMjA3ODksIDAsIDk0NywgMTE5ODM1LCAxOTQ1ODYsIDE5NDU4NSwgMTA5NjksIDExOTkzNSwgNzYxMywgCi0gICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDkxNzkxMCwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgOTgzODM2LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAKLSAgICAxMjczMjQsIDEyNzMyMSwgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAxMjI4MywgCi0gICAgMTYxNiwgMzc5NSwgMCwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgMzIzOSwgCi0gICAgMTI3MzExLCAwLCAwLCA4NDMxLCAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCA1MDQwLCAKLSAgICAwLCAwLCA5ODM0NDMsIDc4NDIwLCAwLCA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIDc0MjkzLCAwLCAKLSAgICA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIDczOTA5LCA0ODM1LCAKLSAgICA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIAotICAgIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIAotICAgIDEwMDYsIDc0MjQwLCAwLCAxNTUwLCA4MjAxLCA3MzczNywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgCi0gICAgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDcwMDczLCAyNDQwLCA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIAotICAgIDUwMDgsIDk4MzU3MiwgMjExOCwgMCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjcwNjgsIDIxMTQsIDIxMTYsIDI0NTUsIDAsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgCi0gICAgODcxNCwgOTgzODIwLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCAKLSAgICA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIAotICAgIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDY2NjYsIAotICAgIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAwLCA5MjIzNywgCi0gICAgNzQ4MDcsIDAsIDUwNDgsIDUwNDcsIDAsIDAsIDAsIDkyMzEzLCAwLCA3NDQ5NywgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgCi0gICAgOTgzNTYzLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKLSAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIDk4Mzk3NiwgMzUzMCwgOTc1MCwgMTI4MzE3LCAKLSAgICAwLCA2NjU2LCA0MjYxOCwgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgCi0gICAgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgNzg1MywgNzQwNjgsIDc0MDA0LCA5NjY5LCAKLSAgICAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAwLCAKLSAgICAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgCi0gICAgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIAotICAgIDk4MzE3OCwgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgCi0gICAgNzYyMywgMTE4OTI1LCAxMTg4ODksIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIAotICAgIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDEyNjU5NywgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAKLSAgICAzMzkzLCA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCAKLSAgICA0MTYxMiwgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDk4MzM0OCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIAotICAgIDEyODAxNywgMCwgMTA2MjUsIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgMTI3NTM3LCAxMzAxNCwgCi0gICAgMTMwMTMsIDAsIDY2NzMsIDAsIDAsIDAsIDEyNDM4LCAwLCA5ODMzNDIsIDAsIDk4Mzg4MCwgMTI2NjM4LCA5MDUzLCAKLSAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDk4MzgyOCwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgOTE3NzkzLCAKLSAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzQxLCA3NDU0NywgMTI2NTg1LCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIDc4MDk5LCAxMjcwODUsIDAsIAotICAgIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAwLCA0MjUzMywgMTY4LCAKLSAgICA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIDkxNjIsIAotICAgIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIDk4MzQ0OSwgNzU1NywgCi0gICAgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgCi0gICAgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgCi0gICAgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgNzgwODMsIDEyODgyNCwgCi0gICAgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCAKLSAgICAxOTQ5OTAsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNjQwLCAwLCAKLSAgICA2NjAyNCwgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgNDU3NCwgMCwgNzU2NywgNzQ1OSwgCi0gICAgOTgzMTYwLCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgOTgzOTEyLCAwLCA0MTM4OCwgNjQ0NDYsIAotICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDk4MzE4NywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCAKLSAgICA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCAwLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgCi0gICAgOTI2MjYsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIAotICAgIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDE5NTA2NywgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIAotICAgIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgOTgzNjQ5LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIAotICAgIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIAotICAgIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgMTI4ODcwLCA5ODM3MDEsIDM2NTEsIDAsIAotICAgIDEyMDczMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIAotICAgIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgCi0gICAgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAKLSAgICAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDEyNjU0MywgMCwgMjY3NiwgMjI3NywgMCwgNzM4MTIsIDYxOTAsIDg1OTksIAotICAgIDE5NTA1MywgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDkyNjIwLCAxMjEyOSwgMCwgODQ4MSwgMCwgCi0gICAgNjIwMiwgMTk1MDM1LCAxMDkyMCwgMTI4MjM3LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIAotICAgIDY2MDE5LCA5NzYyLCAwLCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCAKLSAgICA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIAotICAgIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCAKLSAgICA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgCi0gICAgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCAKLSAgICA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIAotICAgIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIAotICAgIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIAotICAgIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgCi0gICAgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAKLSAgICAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIAotICAgIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgCi0gICAgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIAotICAgIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCAKLSAgICA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIAotICAgIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgCi0gICAgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCAKLSAgICA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAKLSAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAotICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIAotICAgIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCAKLSAgICA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIAotICAgIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAKLSAgICAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIAotICAgIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAKLSAgICAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgCi0gICAgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzcsIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIAotICAgIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgCi0gICAgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzEzMDEsIDk4Mzg2MiwgMzQ3MywgNzcxOCwgMCwgMCwgCi0gICAgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzOTAsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzcwLCA4MDgwLCAKLSAgICA3MDA2LCAwLCA5ODMzNzEsIDY3NTcsIDY0MzUxLCAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNzIsIDYxNDYsIAotICAgIDAsIDc3MSwgOTgzMzczLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIAotICAgIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgCi0gICAgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgCi0gICAgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAKLSAgICAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCAKLSAgICA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIAotICAgIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgCi0gICAgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgCi0gICAgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIAotICAgIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCAKLSAgICA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgCi0gICAgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIAotICAgIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCA5ODM0NzksIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgCi0gICAgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIAotICAgIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIAotICAgIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzg3LCAwLCA0MjI3OSwgCi0gICAgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCA5ODMzODQsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAKLSAgICAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIAotICAgIDk4MzY5NCwgMjQ2MCwgMCwgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgCi0gICAgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgCi0gICAgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAKLSAgICAxMDk0NiwgMTI3MzEwLCA1MDAwLCAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIAotICAgIDY3MDksIDAsIDc4ODg1LCA5ODM3MDgsIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgCi0gICAgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAKLSAgICAzODkzLCA5ODMyNjQsIDAsIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAKLSAgICAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgCi0gICAgMzU5MSwgNDE5NjksIDAsIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCAKLSAgICA0MTk2MiwgMzIwMiwgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAKLSAgICAxMTk4MDksIDQ4ODMsIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgCi0gICAgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIAotICAgIDk4MzM0MywgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgCi0gICAgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIAotICAgIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCAKLSAgICA3Mzg4OSwgNzQxODIsIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgCi0gICAgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAKLSAgICAxMTkwOTYsIDE5OTI5LCAwLCAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIAotICAgIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIAotICAgIDk4MzIzOCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCAKLSAgICA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDEyNjUyMSwgNDIyMDAsIDQyNTY2LCAwLCAwLCA1MDg4LCAKLSAgICA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIAotICAgIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIAotICAgIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgNjM4OTYsIAotICAgIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCA5ODM4MzIsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAKLSAgICAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAKLSAgICAxMjA4MTgsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIAotICAgIDc4NTQ5LCA0MTIyMCwgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAKLSAgICAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCAKLSAgICA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgNjAwMCwgMTE5MjA2LCAxMjQyNiwgMTI3MTgxLCAwLCA0MTc0MCwgCi0gICAgMTI0MjgsIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAwLCAwLCAxMjQyOSwgNjcyNywgMCwgNzU2MiwgMCwgNTE3MCwgMCwgCi0gICAgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIDYxNjIsIDAsIAotICAgIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgNDMwNzcsIDAsIDQyMjA3LCAKLSAgICA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMCwgOTE3Nzk5LCA4MzA4LCA5MTc3OTcsIDkxNzc5NiwgMCwgNjc4NjQsIAotICAgIDkxNzgwMSwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjk4MDUsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIAotICAgIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMCwgNjM4NjcsIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDAsIDc0NTYwLCAKLSAgICA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgNjcwNCwgNDU5MSwgMTI4MDI5LCAwLCAwLCA5NjgwLCAwLCAKLSAgICAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgNzg1MDgsIDQxNTAxLCAwLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIAotICAgIDAsIDQxNDk5LCAwLCAwLCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDAsIAotICAgIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCA3Mzk0MSwgMCwgNDIzMzAsIDkxNzc4NCwgMzk2OSwgMCwgMCwgNzE2OSwgCi0gICAgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAKLSAgICAzMjcsIDAsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIAotICAgIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODM1LCA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAKLSAgICAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIAotICAgIDkyNywgMCwgMCwgMTI0MzYsIDk4MzI0NSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIAotICAgIDE5NTAxNiwgMCwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgxMiwgCi0gICAgMjI5NiwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgCi0gICAgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgCi0gICAgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAKLSAgICAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCAKLSAgICA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAKLSAgICAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAKLSAgICAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgCi0gICAgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAKLSAgICAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgOTgzODk1LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAKLSAgICAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCAKLSAgICA5ODMyNDEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCAKLSAgICA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgCi0gICAgMTIwMTg4LCA3MTMwMywgOTgzOTMzLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCAKLSAgICA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDk4MzcwNSwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCAKLSAgICA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIAotICAgIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgCi0gICAgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgCi0gICAgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIAotICAgIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIAotICAgIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgCi0gICAgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIAotICAgIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAKLSAgICAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCAKLSAgICA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIAotICAgIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCAKLSAgICA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgCi0gICAgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgMCwgOTgzODg0LCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDk4MzY0NywgNTAxNiwgCi0gICAgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIAotICAgIDY1MDYwLCAxMjA3OTcsIDk5MDAsIDc3NTAsIDAsIDE5NDkxOSwgMCwgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAKLSAgICAxMjgxNTEsIDEyMTc3LCAwLCAwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAotICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDc4NTk0LCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgCi0gICAgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgCi0gICAgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgMCwgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgCi0gICAgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgNjM5OTcsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgNjk5MjksIAotICAgIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCAKLSAgICA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIAotICAgIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIAotICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAotICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAKLSAgICAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIAotICAgIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgCi0gICAgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgCi0gICAgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCAKLSAgICA5ODM2NjEsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCAKLSAgICA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAKLSAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODM5LCAxMjY0NSwgNTE0NiwgMTEzMjAsIAotICAgIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgCi0gICAgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAKLSAgICAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCAKLSAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIAotICAgIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIAotICAgIDk5NzAsIDEyNDAyLCA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDEyMDgyNCwgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIAotICAgIDY3NTAsIDE5NTAxOCwgMCwgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAxOTUwMjMsIDU4MDUsIDAsIAotICAgIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIAotICAgIDEyMDMwNywgMCwgOTIzNDMsIDAsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIAotICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMTMsIDc0ODM3LCAxMjAxNTUsIAotICAgIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgCi0gICAgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIAotICAgIDEyMDE3MiwgMCwgMTkzMywgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCAKLSAgICA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCAKLSAgICA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCAKLSAgICA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAxMjY1MTgsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMCwgMzMzLCAKLSAgICA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgOTgzNTk1LCAxMjQwNiwgMCwgMTk5MzEsIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgCi0gICAgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIAotICAgIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgCi0gICAgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgCi0gICAgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMCwgMCwgMTIwODAyLCAKLSAgICA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDAsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgMCwgMCwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCAKLSAgICA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIDczNzQzLCAxMjA0MDAsIDQzMTcsIAotICAgIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIAotICAgIDY2NzIsIDAsIDAsIDAsIDk4Mzc0NywgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIAotICAgIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCAKLSAgICA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIAotICAgIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgCi0gICAgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIAotICAgIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgCi0gICAgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKLSAgICA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDEyMDA2MiwgCi0gICAgOTI2NjksIDcxMzMyLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIAotICAgIDE5NDkyNCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAKLSAgICAxMjE0MCwgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI2NDkwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCAKLSAgICA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCAKLSAgICA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgCi0gICAgMTA2OTMsIDY0MDA2LCA5ODM1NjcsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDAsIDExOTA1MCwgMCwgCi0gICAgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCA5ODMwOTQsIDEwNzc0LCAxMjgwMjAsIAotICAgIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgCi0gICAgMTk0ODk5LCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgCi0gICAgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgCi0gICAgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgMTY4MiwgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIAotICAgIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIDE5NDgzMCwgNzEzMTYsIDExODg2MywgNDMzMTEsIDY0OTY2LCAKLSAgICAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAwLCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAKLSAgICAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAKLSAgICAxMjA0ODksIDE5NDcxMSwgNjQ0ODMsIDY1NjkzLCAwLCAwLCAwLCA2OTY5NSwgNDIyNDAsIDAsIDEyNjY1MSwgNDI4NjQsIAotICAgIDEyNjQ5OCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIDAsIAotICAgIDY2MTk3LCAwLCAxMDk4NiwgNjQ2ODMsIDk4Mzc4NSwgMCwgMzQ1NSwgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCAKKyAgICA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCA5ODM4NDQsIDQzMzc0LCAKKyAgICA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDAsIDY2MDIxLCA3NDUwOSwgMCwgNTQ1NywgNTQ0MCwgODg1NywgCisgICAgOTM5ODEsIDY1MjgyLCAyODQzLCA1MzU1LCAxMjc5MjgsIDk4Mzk2NSwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgCisgICAgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIAorICAgIDEwNjgyLCAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCAKKyAgICA2NDE0NCwgNzYyLCAxMzE3MiwgMTE4ODU5LCAxOTQ2NjEsIDY0NDY4LCAxMDkwNiwgMTM1MywgNjk2MCwgMCwgMTI4Nzc5LCAKKyAgICA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgCisgICAgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCAwLCAxMjgxMzEsIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCAKKyAgICA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgMTk0Njc4LCAyNzYwLCAwLCAwLCA3ODcwOCwgMTk0Nzk0LCA2NDE1NiwgCisgICAgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIAorICAgIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIDAsIDE4NzQsIDExOTAxNiwgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIAorICAgIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgCisgICAgNjY2MDksIDAsIDY0MTE3LCA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAKKyAgICAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIAorICAgIDY0MDk5LCAwLCAxMDQ1MywgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCAKKyAgICA5NTcxLCA1MjgsIDEyODY3MSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCA5MTc5OTAsIDczODQxLCAwLCAwLCAKKyAgICA5MDU2LCA2NDMxMywgNjE4OCwgMTIwMDE5LCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIAorICAgIDYzLCA3MjMzLCA5MjIxMiwgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDAsIDExNzYsIAorICAgIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDk4MzgzMSwgOTI3NDcsIDEyMDUxOSwgNjYzNzYsIDY2MjQyLCAxMTQxNSwgCisgICAgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgNjk5MDIsIDc3NjgsIAorICAgIDcyNDAzLCA0MTk5LCA2NDcwOCwgNjUwNjQsIDcwMTE3LCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIDg5OTYsIAorICAgIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTI2NTcwLCAxMjkxMjAsIDY0NjE1LCAKKyAgICA0MTkxNSwgMCwgMTIwNzUsIDQyMDQxLCAxOTQ4MjUsIDUxNzQsIDk4MzIxNywgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgCisgICAgMTE5MjE2LCA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCAKKyAgICA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgCisgICAgNjQwOTEsIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgCisgICAgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCAKKyAgICA2NDA4NSwgNjQwODQsIDE5NDcwMywgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIAorICAgIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIDAsIDQyNjI3LCAxMjUwMTEsIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgCisgICAgMzY2NSwgOTgzNjAwLCA0Mjg3MSwgMCwgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIAorICAgIDQ0MTIsIDcyNDAsIDkyNDk1LCA5MTc5MDAsIDk4MzQ2NiwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAxMTk4NDksIAorICAgIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCA2NTAxNCwgOTgzNDIwLCAwLCA5ODMxOTYsIDM2MzksIAorICAgIDExOTU4OCwgMTE4ODUxLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIAorICAgIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAwLCA5Mjk3MywgCisgICAgMTI4MzI1LCA5MjM0LCAwLCA2MTgyLCA5ODM0NzMsIDY1MDU4LCAwLCA5ODM0NzgsIDE5NDk3MywgMCwgNTQ3MSwgOTQ2MSwgCisgICAgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCAKKyAgICA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDAsIDAsIDY1ODEsIDU1NzYsIDk4MzQ5NSwgNDM4NTUsIDQxMzM3LCAwLCAKKyAgICA0MTYzMSwgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgMCwgNzIzOTYsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAwLCAKKyAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDAsIDUwNTgsIAorICAgIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDkxNzk0MSwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgCisgICAgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIDAsIAorICAgIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgNTc3MywgCisgICAgOTc4LCAxMjgxMzQsIDAsIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgOTgzNDIzLCA3NDEzNSwgOTc0OCwgCisgICAgOTgzOTU2LCAxMjc1MjQsIDAsIDAsIDAsIDAsIDE5NTA4MywgMCwgOTgzODQzLCA5ODMzMDAsIDAsIDAsIDAsIDkyNzc2LCAKKyAgICA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDk4Mzk1MSwgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIAorICAgIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCA5ODM5NzIsIDEyNzk2NiwgMTE5MjM1LCA3MTg2OCwgNzM5MzYsIDcwMDgsIAorICAgIDQzNjYwLCAwLCAwLCA0Mzg0MSwgMjM2NywgMTI3ODI3LCA5ODM4NTcsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAKKyAgICAxODQ0LCAxMTkwODQsIDEyOTA0OSwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAwLCA0Mjg2MiwgCisgICAgNDQ2MywgNjU1ODEsIDYxOTIsIDEyNzkwMCwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCAKKyAgICA5ODMwNDAsIDEyODkyLCAwLCA2NzE0OSwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIAorICAgIDUwNzMsIDEyODc5MCwgODk4MywgMTE4OTgxLCA3NDQ5MywgNzEyMzEsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMCwgCisgICAgMTk2LCAwLCAwLCAwLCA0OTI5LCAxMjAzNDIsIDAsIDAsIDEyNzk4NywgMCwgNDI4NDcsIDExOTg1NiwgMCwgNjc3NTQsIAorICAgIDQ5MzQsIDAsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgNzAxODEsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgCisgICAgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNjQ2NjcsIDEyODE5LCA5ODM4NzAsIDUwNzEsIDEyNzkxNSwgMzY0MiwgNjczMzQsIAorICAgIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCAKKyAgICA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgCisgICAgNzM4ODQsIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIAorICAgIDQ5MjUsIDEyNzIxOCwgMCwgOTUyNiwgNDkyMCwgMTI4NjE3LCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgOTgzMjI1LCA5MjE3NSwgCisgICAgMTIwMjc1LCA0OTMzLCAxMTM3NzksIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIAorICAgIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgNDM0OTMsIAorICAgIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgCisgICAgNzM4NjMsIDEyNjU3NywgNjgzMzYsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCA5Mjc2MSwgMTI3NDYyLCAKKyAgICA3MDA1LCA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIAorICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKKyAgICAwLCA1MDc2LCAwLCAxOTQ2MDksIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEyOTE4MiwgCisgICAgOTI1MjMsIDEyMDEwMSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgMTk0NjExLCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCAKKyAgICA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY1NiwgMCwgODA3NCwgCisgICAgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIDQ0MzIsIDEyNzI3MSwgNTAzMywgMTI3MjczLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIAorICAgIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgOTI5NTcsIDY3NTg4LCAxMTkwMDAsIDEyNDk4MywgCisgICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAorICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCisgICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKKyAgICA2OTk0NCwgNjc4NywgNjczNjEsIDAsIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDczODEyLCA3MjM5NywgMCwgMCwgNjk5MDYsIAorICAgIDEyMDc4OSwgOTgzMDQxLCA5NDcsIDY3Njk1LCA2NzM2NywgMTk0NTg1LCAxMDk2OSwgNjcyMjgsIDc2MTMsIDkyNTYyLCAKKyAgICAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgNDM1NjcsIAorICAgIDc0MDU2LCA5MTc5MTAsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIDQzOTUsIAorICAgIDQzNTM4LCAxMTk5MjYsIDExOTkyOSwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgNzQxNDEsIAorICAgIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgCisgICAgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgCisgICAgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIDEyNzMyNCwgCisgICAgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIDEyMjgzLCAxNjE2LCAzNzk1LCAKKyAgICA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgNjc3MjQsIDMyMzksIDY2ODkzLCAKKyAgICAwLCAwLCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDcwMTY5LCA1MDQwLCAwLCAKKyAgICAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzY3OCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCA3NDI5MywgMCwgCisgICAgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCA5MTc2MjMsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDcwMTgyLCAzODYzLCAKKyAgICA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAKKyAgICAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAKKyAgICAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgCisgICAgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIAorICAgIDY3MjIyLCAyNDQwLCA2NTc4MCwgNzA3ODcsIDg0NDksIDAsIDUwMDgsIDk4MzU3MiwgMjExOCwgMTI2NTA4LCAxMjEyMSwgCisgICAgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2NywgMjExNCwgCisgICAgMjExNiwgMjQ1NSwgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgCisgICAgOTE3OTg1LCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgCisgICAgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIAorICAgIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDY2NjYsIDUwNTMsIDc0MjMwLCAKKyAgICA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCA3MTI1MSwgOTIyMzcsIDc0ODA3LCAwLCAKKyAgICA1MDQ4LCA1MDQ3LCAwLCAwLCA3NDIwMSwgOTIzMTMsIDAsIDc0NDk3LCA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCA5ODM1NjMsIAorICAgIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIAorICAgIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIDk4Mzk3NiwgMzUzMCwgOTc1MCwgMTI4MzE3LCAKKyAgICAxMjgxMjIsIDY2NTYsIDQyNjE4LCA3MDE3NSwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCAKKyAgICA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgNzg1MywgNzQwNjgsIAorICAgIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgCisgICAgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIDQxNTI4LCAKKyAgICAxMjMsIDY1NDU0LCAwLCAxOTQ4NTYsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgCisgICAgMTEyNiwgNzM4OTUsIDE5NDg1NywgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgCisgICAgNzExMTAsIDQyNTAsIDEyMDQ0MSwgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCA5MjczOCwgNjYyMDAsIDAsIDAsIDEyNTAyNiwgCisgICAgNzQyOTgsIDEyODg3OSwgOTgzNDc0LCA4NzExLCA2MTgzLCAwLCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIAorICAgIDExODkyNSwgMTE4ODg5LCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAKKyAgICAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAxMjY1OTcsIDEyMDQzNSwgMTk0ODUwLCA3NzI2LCAxOTUwOTUsIDE5OTIyLCAKKyAgICAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgCisgICAgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgOTE3Nzk2LCA5ODMzNDgsIDAsIDMzOTEsIDQxMDc1LCAKKyAgICAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAxMjkxMDYsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgCisgICAgNzAxNTIsIDEzMDE0LCAxMzAxMywgMCwgNjY3MywgMCwgMCwgMCwgMTI0MzgsIDAsIDk4MzM0MiwgMCwgOTgzODgwLCAKKyAgICAxMjY2MzgsIDkwNTMsIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgOTgzODI4LCA2NjYwLCA3ODc1OCwgCisgICAgOTE3NzYwLCA3NDg2MSwgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NzM0MywgMTI3OTQwLCAKKyAgICAxMjkwODYsIDQzODc2LCAxMjY1ODUsIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTk1MDAyLCAxMTkyMzgsIAorICAgIDE5NTAwNCwgNzgwOTksIDEyNzA4NSwgMCwgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCAKKyAgICA2NjcyOCwgMTgxNiwgMCwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCAxOTUwMTIsIDc4MTA1LCA0OTAxLCAKKyAgICAxODIxLCAwLCA1NzgsIDM2NTMsIDEyODk0NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCAKKyAgICA3MzczMSwgODM1NCwgNDM1OTAsIDExOTMwMywgOTgzNDQ5LCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAKKyAgICA5ODM0NDgsIDExMzczNSwgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgCisgICAgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIAorICAgIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI2NTY0LCAKKyAgICA3MTMwMiwgNDQwOCwgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgCisgICAgNzE5MDQsIDI0MzgsIDY0ODU1LCAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAKKyAgICAxMTQ1NywgMTE1MjEsIDc3MjMsIDEyODYzOSwgMCwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCAKKyAgICA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIAorICAgIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNjQwLCAwLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIAorICAgIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCA0NTc0LCAwLCA3NTY3LCA3NDU5LCA3ODEyOCwgNDEzOTAsIDUzODQsIDQxODgyLCAKKyAgICA2NzY0NywgNzAxNTQsIDU3NTksIDk4MzkxMiwgMCwgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgCisgICAgODcwNiwgNTU1MiwgOTgzMTg3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCisgICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDAsIDc2MTgsIAorICAgIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgCisgICAgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAKKyAgICAwLCAwLCA3MTkxMiwgOTgzNjQ5LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgOTIyNzMsIAorICAgIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgMTE5MDA4LCAxMTkxMjEsIDY4MzIsIDUwOTgsIDkxNzc2OCwgMTk0NjY4LCAKKyAgICA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIDY3Mjk2LCA5Mjg5NiwgMzY1MSwgMCwgNjcyOTQsIDcwODQ4LCAKKyAgICA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAKKyAgICAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCAwLCAKKyAgICAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIAorICAgIDE5NDkyMywgOTE1NCwgOTExOCwgMTI2NTQzLCAwLCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCA4NTk5LCAKKyAgICAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIDAsIDg0ODEsIDAsIAorICAgIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIAorICAgIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAyMDcsIDEyODgwNiwgNDI3NSwgCisgICAgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCAKKyAgICA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ3MzcsIDQzMDM0LCAxMTQzOCwgNjQ2NzQsIDAsIAorICAgIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDEyNzUwOSwgCisgICAgNjk3MjAsIDY0NzYsIDUxMDQsIDk4Mzc0OSwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgMTEzNjgzLCA2NTY3LCAKKyAgICAyMzgsIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgCisgICAgNjczMDIsIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIDkzMDM5LCA4ODAzLCAKKyAgICAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMCwgMTI1NTMsIDEwODE0LCAKKyAgICA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgMCwgNjY0NjYsIDEyNDk4NiwgCisgICAgMCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIDY3NjM1LCAKKyAgICA5MzcwLCAyNzIwLCAxOTQ2MDAsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCA5ODMwNDcsIAorICAgIDkzMDY3LCAxMDgzNCwgOTgzMTI3LCAwLCA2NTczMiwgOTQwOTUsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMjkxNTAsIAorICAgIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgCisgICAgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIAorICAgIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCAKKyAgICA0MTU2MiwgOTEwMCwgNzQ1NDgsIDkxNzYzMCwgMzY0MCwgMTI3MTkwLCA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgCisgICAgMTk0OTUwLCAxOTQ5NDksIDc0MTE1LCAxOTQ5NTEsIDEyNjY0OSwgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgOTgzNzg0LCAwLCAKKyAgICA0MjA4MywgMTIwNjc4LCA2ODM5OCwgMTk0OTU3LCA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIAorICAgIDQxMDY4LCAwLCA0Mjk1LCA2NTI2NCwgNjgwMDYsIDAsIDkyNTQ1LCAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgCisgICAgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxOTQ5MDgsIAorICAgIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCA5MjIxOCwgOTE4NiwgMjA2NywgNDAxNiwgOTgzODAzLCAwLCAzODEsIAorICAgIDEyOTM2LCAwLCA0MjA3NywgOTI5ODUsIDY5ODgwLCA1MTg0LCA0MjA3OCwgMTk0NjA3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAKKyAgICAxOTk0MywgNTg2MCwgNjc2MzMsIDAsIDk4MzI3OSwgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDEyMDU0OCwgCisgICAgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAwLCAKKyAgICA2NzYzMSwgNDI2MTYsIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDY3MzE3LCA2NzYzMiwgNjczMTYsIDEyNzcxLCAxMjczNiwgCisgICAgMTI3NTMsIDY2NzA4LCA3MzkzMywgNjc2MjYsIDQyNDAxLCAwLCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIAorICAgIDk4MzA2NCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgCisgICAgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIDAsIDAsIDY3NjI0LCAwLCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgODA2LCAKKyAgICA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDEyNjU3OCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIAorICAgIDk4Mzg1OCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCA2NjM5NiwgNDE4ODMsIDczOTEyLCAKKyAgICA5Nzk5LCAwLCA0MTg4NiwgMjQ4MCwgMCwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIAorICAgIDEyNDk2OSwgMTIxMSwgMCwgMCwgNjcyNjksIDExODgzMiwgMTIzMTgsIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIAorICAgIDk4Mzc3OSwgMCwgNzg2NTQsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIAorICAgIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgMzk3NywgCisgICAgNzQxODYsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjkxNzYsIDQ1ODIsIDAsIDAsIDQxNzc3LCAxMjkyNiwgOTgzMzc3LCAKKyAgICA3NTI4LCAxMDU1MCwgMTEzNzYxLCA5MjcwNiwgMCwgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgMTE5MDE0LCA2NzcyMCwgCisgICAgNDIzODksIDQxMzc0LCAyMjg2LCA5MTc2MDQsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAwLCA0MDAsIDEyNTk3LCAxMjA1ODYsIAorICAgIDAsIDAsIDY2NjEsIDk4MzE0NSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIDAsIDcxMzAxLCA5ODM4NjIsIDM0NzMsIDc3MTgsIAorICAgIDExMzc1NSwgMTI3MDExLCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIAorICAgIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgCisgICAgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgCisgICAgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIAorICAgIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgCisgICAgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgCisgICAgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAwLCAKKyAgICA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDE5NDg4MiwgCisgICAgMTIwNTQ0LCAwLCAxMjc5NTAsIDkyNjYwLCAwLCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMCwgCisgICAgMjEzOSwgNDI1NiwgMTIwNzc2LCA3NDM4MCwgNDM4MzYsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDcwMzQ1LCA3MDUwOCwgCisgICAgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAxMjUxMzQsIAorICAgIDEyMDMyMSwgMCwgOTgzMzk0LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgOTgzNDc3LCAwLCAKKyAgICA4MzMwLCAwLCAwLCA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDkzMDM2LCAzOTAyLCAwLCAxNzcwLCA2NzA5MSwgMTI1MDY3LCAKKyAgICAxNTYwLCAxMjAyMDksIDE5NDk3MiwgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCAKKyAgICAwLCAwLCAxMDgxLCA3NDM2LCAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIAorICAgIDUxNjIsIDExOTE4OSwgMTMzMCwgMTI4NjEzLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIAorICAgIDYzMjQsIDQxOTc1LCA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgOTgzNzQxLCAxMjcxNSwgNjgwMDIsIAorICAgIDk4MzQ3OSwgMTI2NjMwLCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMCwgCisgICAgMTI2OTg0LCA2ODAwMSwgOTMzNCwgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDQzNDk0LCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMCwgCisgICAgNjgxNzgsIDMxMTcsIDU0NjAsIDAsIDEyODcxNywgOTgzMzg3LCAwLCA0MjI3OSwgMTk0NTc3LCAwLCA3ODQxNSwgOTgzMjI4LCAKKyAgICA2ODUyNCwgOTgzMzg0LCAxMzI0OCwgMTI1MDI3LCAwLCAxMjg0NzEsIDEyODQxNSwgOTgzMTUzLCAwLCA1NjYzLCAxMjc5NDIsIAorICAgIDEyODQ3MiwgMCwgMCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAKKyAgICAxMjM3NCwgMCwgMTk1MDIzLCAwLCAxMTg4MjgsIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIAorICAgIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCAwLCA3MTg3OSwgNTM5LCAwLCAKKyAgICAxMjc3NjUsIDcwMTIwLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIDg2NTksIDAsIAorICAgIDEyNDc0LCA2NzI0MSwgOTUwMywgMTk0OTY5LCAyNDc4LCAxMjAyNDgsIDQxNjIsIDAsIDQyNjAsIDEyOTUzLCA2OTYzMywgCisgICAgMTIwMDg5LCAxMjQ3MCwgOTI2NDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIAorICAgIDExMzY4NywgOTgzNTc5LCAxMjg3NzcsIDY5NjcyLCA4MjEzLCA0MzgyNCwgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIAorICAgIDE5NDk2NywgNzg4ODUsIDExOTI0MywgNjgyMzUsIDEyMDU4MiwgNzg1NDcsIDExMzcwOSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgCisgICAgMTI0OTM0LCAwLCA3Mzc5MSwgMCwgMCwgMCwgMCwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIAorICAgIDgyNzUsIDM4OTMsIDk4MzI2NCwgMCwgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgCisgICAgMTE4ODQxLCAwLCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIAorICAgIDc4Mzg4LCA0MTk3MywgMzU5MSwgNDE5NjksIDAsIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgCisgICAgMTAzNDksIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIAorICAgIDY4NywgMTI1MDg5LCAxMjkwNzQsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCisgICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAorICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQzLCAKKyAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMCwgOTI5NjksIDY2NzE3LCAyNjE0LCAKKyAgICA5MTI1LCAxMTkwMjMsIDE3MjksIDAsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCA2NTE5NCwgCisgICAgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCAKKyAgICA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI5NjEsIDQyNDQ4LCA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgCisgICAgMTIwMDgzLCA2Mzg3MywgODQ5MSwgMCwgMCwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgNzEyNiwgMTk0NTc1LCAyNzIxLCAKKyAgICAxMjAwNzMsIDExOTA5NiwgMTk5MjksIDAsIDE5NDU3NCwgOTI5NzUsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCAKKyAgICA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCA5ODMxOTksIDk3NTQsIDExOTEwMiwgCisgICAgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjM4LCA1NTI4MCwgNDIxNzQsIDE5NDkyNSwgNDI0MzAsIDAsIDk4MzQ1MCwgCisgICAgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgNjY2NjcsIDExOTM1MSwgMCwgMTI2NTIxLCAKKyAgICA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgMCwgMTIzODUsIDAsIDAsIAorICAgIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAwLCAKKyAgICAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgMTIzODMsIAorICAgIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIAorICAgIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgCisgICAgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDE5NDg3NywgOTI5MzAsIDQxOTY0LCA0MjIwOCwgCisgICAgNjM4NDMsIDIwODQsIDQxOTY1LCAxMjUwOTksIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNjY0MTMsIDQxMjIwLCAxMzAzMiwgCisgICAgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgCisgICAgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCA2MzkwMSwgMCwgMzY1NywgMTE5NjExLCAKKyAgICA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTI3MTgxLCAxMTk5MzUsIDQxNzQwLCAxMjQyOCwgNDEyODMsIDQxOTE2LCAKKyAgICAxMTkyMTAsIDEyODMxOCwgMCwgMTI0MjksIDY3MjcsIDAsIDc1NjIsIDk4MzI0OCwgNTE3MCwgOTgzOTE1LCA0MTc1NSwgCisgICAgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgNjE2MiwgOTI5MjgsIAorICAgIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgOTgzNDY0LCA0MjIwNywgCisgICAgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDkxNzc5NywgNzA4MDcsIDExOTI1OCwgCisgICAgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgMCwgCisgICAgNjM4NjEsIDAsIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTI5MDg1LCA2Mzg2NywgNDEzMywgMTEzNzEsIDIxMCwgCisgICAgNDYwMCwgMCwgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCA2NzA0LCA0NTkxLCAxMjgwMjksIAorICAgIDEyNTAxOCwgMTIwNzUzLCA5NjgwLCAxMjkzNywgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIDY4MzIxLCA0MTUwMSwgCisgICAgOTgzMzcxLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDEyODMwNiwgNDE0OTksIDkzMDY4LCA3MTA0NywgCisgICAgNDIyNDIsIDQxNDk4LCA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgMjkyNCwgNjcxODMsIAorICAgIDEyMDUxMCwgMCwgMCwgOTI3NjYsIDczOTQxLCA2NzE4NiwgNDIzMzAsIDY3MTg3LCAzOTY5LCAxMjg0ODQsIDAsIDcxNjksIAorICAgIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAxMjcxNzcsIDAsIDEyODgwMSwgNjcxODAsIAorICAgIDAsIDMyNywgMTI4MzAwLCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyMDIyMiwgCisgICAgOTE3Nzc5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIAorICAgIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMTM3NTQsIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIAorICAgIDY2NzA5LCAwLCA4ODExLCA5MjcsIDEyODQ2MSwgMCwgMTI0MzYsIDEyMDA4NywgNDIwMjEsIDAsIDY3NjQ0LCAxMjk5LCAKKyAgICAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDEyNzk3MiwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgCisgICAgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDEyODc0MCwgMjI5NiwgMTI4OTMyLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgCisgICAgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgMTExNzgsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgCisgICAgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAwLCAxMjg1ODMsIDAsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAKKyAgICAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDExMjEwLCAxMjQxOCwgNzQxMTEsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgCisgICAgMTI4MDE4LCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCAKKyAgICA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgCisgICAgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDExOTkzMSwgMTE3MjQsIDAsIDAsIDEyNzEwNCwgMTI2NjE5LCAwLCAwLCA4MDI3LCAKKyAgICAxMDk5NywgOTE3MSwgMTI3NDEsIDExNDAwLCA3MTMwNSwgMTk0Nzk5LCA2NjgzMywgMTI4MjM5LCAwLCA5MjU1NywgCisgICAgMTE5NjA0LCAxMjc1MjMsIDEyMDE5MCwgMTMyNCwgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIDM4ODEsIDQxNDg3LCAKKyAgICAxMjExOCwgNDI1MTQsIDY4NjUxLCAwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAorICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgOTgzMjQxLCAzMDE0LCAKKyAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAwLCA2ODAxNCwgNjk5NTEsIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIAorICAgIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCAKKyAgICA3MTMwMywgOTgzOTMzLCAxMjM2NywgNDIxNzAsIDAsIDY3MjkwLCA2MjksIDE5MjQsIDEyODQzNSwgMTIwMzcsIDY3MTU4LCAKKyAgICA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIAorICAgIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCA5MTc4ODEsIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCA3MDg1MSwgCisgICAgNjY2NTksIDkyNjA3LCA5MTc5MzMsIDY2Njg0LCAxMjgwNjMsIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCA1MjY2LCAKKyAgICAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIAorICAgIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAKKyAgICA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMTIwODA1LCA0MTMyNywgOTgzNzMyLCA2NjY5NSwgCisgICAgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgNzEzMTEsIDAsIAorICAgIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgOTQxMDQsIDc4NTcxLCAKKyAgICAwLCA3MTMyOCwgMTI4OTU1LCA0MTU3NiwgNDIyMTUsIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgNTk5NSwgNzU3MywgNDE1NzUsIAorICAgIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAxMTcyMywgMCwgNzQxMjAsIAorICAgIDAsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCA2NzE2OCwgMTE3NDIsIDI0MTksIAorICAgIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDE5NDkxMywgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAxMjQwNywgMTE5NzgsIAorICAgIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCA0MjAwMiwgMTI0MDQsIAorICAgIDcwMzg4LCAxMjkwOTMsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDY3Njk5LCAKKyAgICAwLCA2ODI5NywgMCwgNDM3NTcsIDQzMzcwLCAwLCAwLCAxMTk1NiwgMTI0OTY3LCAwLCA3MDgxNSwgOTYxNiwgNjYzMSwgCisgICAgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCAKKyAgICA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCA5MzAxNywgOTgzODg0LCA4NTMsIDQyNjkzLCAxOTQ2NDcsIDExOTAyNywgCisgICAgOTgzNjQ3LCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIDAsIDkxNzkxNCwgMCwgMTI3MTIsIAorICAgIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIDEyNzg5NiwgNzQ2MTksIDEyNzgzMCwgCisgICAgOTgzNTg3LCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAxMTk4NDMsIDk4MzI1OCwgMCwgNzc4MjQsIDAsIAorICAgIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCAKKyAgICA2Njg1MiwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIAorICAgIDExOTA0MCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAxOTQ5NTQsIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCAKKyAgICA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCA5MjQzMSwgMCwgMCwgMTk0OTE1LCA3MjY3LCAwLCA3NDgzMywgCisgICAgMTI4MTgxLCA1OTkzLCAyODE5LCAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIAorICAgIDAsIDEzNjMsIDAsIDQyOTIzLCA2MzkxMCwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCAKKyAgICA0MTQ3OSwgMTI4MzEzLCA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMjA3MjcsIDAsIDQxNDgxLCA0MzMzNSwgNzgzMiwgCisgICAgNDIzNDMsIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDEyODg0MSwgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgCisgICAgMTI3MTQwLCAxMjAwMjAsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgMCwgMTIzODksIDEyODM5OCwgOTIzNjYsIAorICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAorICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyOTE5NywgNDkzOSwgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgCisgICAgMTE5NjAxLCAxOTQ2ODgsIDY3Mzk4LCAxMjg4MjAsIDEyNjQ5LCAxMjkwNTYsIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIAorICAgIDEyMDc3NSwgNDM2NDMsIDE5NDY4OSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIDExOTgyOSwgNzc4NDAsIAorICAgIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgMCwgOTE3NjI4LCAKKyAgICA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKKyAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAorICAgIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjcwMTUsIDk4MzY2MSwgMTI2NzA0LCA0MzExOSwgMCwgCisgICAgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgMCwgNDg5OSwgMTI3MjksIDk4MzM5NywgMCwgNzQxMTMsIDIzNDMsIDQxMDMsIAorICAgIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAxMjkwNDYsIDc0ODM0LCAxMjg1OSwgNzAwODcsIDEyMDE0OCwgNjYzNjksIAorICAgIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCA0MzY0MSwgOTgzODM5LCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCAKKyAgICA2NzQ4LCA2NTA0MCwgOTgzNDkxLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCA1MTQ3LCAxMjUwMTksIDAsIAorICAgIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCAKKyAgICA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgNzg2NjIsIDAsIDEyODI5OCwgNjcyNzcsIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCAKKyAgICA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAKKyAgICAxOTQ2OTYsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgCisgICAgNjM2NiwgMTIwMzExLCA3OTQ1LCA5ODMxNjMsIDQ0MDIsIDk5NzAsIDEyNDAyLCA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCAKKyAgICA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDk4MzU2NSwgCisgICAgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgNzAxMTksIDkwOTMsIDAsIDY4MzMsIAorICAgIDkyNTc0LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIDY3NTAsIDY2ODU1LCAwLCA5NTk0LCAKKyAgICAxMjAzMDgsIDEyOTE4NiwgNDM1MjcsIDE5NDYyMiwgNzI3LCA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDAsIAorICAgIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgCisgICAgNzEyMDksIDkyMzQzLCAwLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAKKyAgICAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAKKyAgICAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgCisgICAgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIAorICAgIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgMTkzMywgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgCisgICAgOTgzNTgzLCAyNDg3LCA2NzYxNCwgMzEyMSwgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCAKKyAgICA5Mjc2OSwgMTI3NDc1LCAwLCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgCisgICAgOTEzMiwgMCwgNjQ2MTksIDUxMCwgNjQ2NjMsIDAsIDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCAKKyAgICA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCA5ODMyODEsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAKKyAgICAxOTQ4OTgsIDk3OTYsIDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIDk4MzU5NSwgMTI0MDYsIDAsIDE5OTMxLCAKKyAgICA2NjM4OCwgNjY3OCwgNzc2OSwgMCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCAKKyAgICA0MDk4NiwgNDEyNywgNjY0ODcsIDk4MzU3NiwgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIDk0MDk3LCA2NzU5NCwgCisgICAgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIDQ1MzMsIDE5NTAyMSwgCisgICAgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAxOTQ4LCA2OTg0MSwgCisgICAgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgMCwgMTIwODAyLCA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCAKKyAgICA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDk4MzMzOSwgMCwgMzQzNiwgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIAorICAgIDM5MzAsIDQyNjE1LCAwLCA2OTk5MSwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIAorICAgIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgCisgICAgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAxMjc4OTIsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCAKKyAgICA5ODM3NDcsIDYzODQxLCA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIAorICAgIDQyMDU2LCAxMDIyOCwgNjQ5NTcsIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCAKKyAgICA0MjM3MiwgMCwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCAxMjcwNTIsIDY3MjIzLCAKKyAgICA2NjU3NiwgMTI3OTE2LCAxMjc4MzEsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIAorICAgIDEyNzI5MiwgMTE5MTksIDY0OTYyLCAxMjcyODcsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIAorICAgIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgCisgICAgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgCisgICAgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAxMjAwNjIsIDkyNjY5LCAKKyAgICA3MTMzMiwgMTIwMTU4LCA0MjU4NywgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCAKKyAgICA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgMTk0OTA0LCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAKKyAgICAxMjg0NjAsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgCisgICAgMTIxNDAsIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgCisgICAgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDEyNjQ3MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIAorICAgIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAKKyAgICAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIAorICAgIDEyODY2MywgOTIyMzQsIDQxNDQxLCAxMDY5MywgNjQwMDYsIDk4MzU2NywgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCAKKyAgICA2NDY2MCwgMTI4MTc2LCAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgCisgICAgOTkzNCwgMTI4Njg1LCAxMDc3NCwgNjcxMDQsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAzMDU3LCA2NDA0NiwgCisgICAgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMTI5MTI3LCAwLCAwLCAxOTQ4OTksIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIAorICAgIDM0OTYsIDAsIDAsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAorICAgIDE2ODIsIDQzODYzLCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKKyAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAKKyAgICAxMTU3NiwgMCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCA4MDg1LCA0MjUyNSwgCisgICAgMTIwMzg3LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjQ5OTIsIDY0NDgzLCAKKyAgICA2NTY5MywgOTgzNzExLCAwLCAwLCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTI2NjUxLCA0Mjg2NCwgMTI2NDk4LCA0MzE2OCwgCisgICAgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgMCwgNjYxOTcsIDk4MzQ3MiwgCisgICAgMTA5ODYsIDY0NjgzLCA5ODM3ODUsIDEyODQ1NCwgMzQ1NSwgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCAKICAgICA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDAsIAotICAgIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgMCwgOTIzOTAsIDQyODY3LCAxODM0LCAwLCAKLSAgICA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIAorICAgIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDkyNDM2LCA2Mzg3MCwgNDMxNjMsIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMCwgCisgICAgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgCiAgICAgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCAKLSAgICA3NDQ3NCwgMTIwMzI3LCA3ODYyMCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCAxMTg4NTQsIDY1MjM4LCA2ODM3NCwgCi0gICAgNDgzMiwgNjU1NzMsIDAsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDAsIDE2MjAsIDY0NDM2LCAzNjAxLCAKLSAgICAxOTUwOTQsIDEyODA3MywgOTgzNTYyLCA2MDksIDExNTU1LCA5ODMwOTksIDEyNDk2LCAxMjc4MzksIDc0MTgxLCA0MzQzLCAKLSAgICAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAwLCA0MzU2NSwgCi0gICAgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgCi0gICAgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgMTI2NTEsIDAsIAotICAgIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDAsIAotICAgIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAwLCA2OTc2MCwgCi0gICAgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCA5MDgwLCAxMjcwMDAsIAotICAgIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCAKLSAgICAwLCAwLCAwLCAwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDAsIDQzMDQ1LCAwLCAKLSAgICAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIAotICAgIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDk4MzYwMiwgMTIwODExLCAKLSAgICAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAKLSAgICAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIDY0NTk1LCAxMjcyOTQsIAotICAgIDAsIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIDAsIDAsIDExOTA2MCwgCi0gICAgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgMCwgMCwgNDIwMTYsIDExODIzLCAKLSAgICA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA3NDgxMiwgNzg1ODQsIAotICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIDEyMDgwMywgCi0gICAgOTgzODQ4LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgMTI3MTgyLCAwLCAKLSAgICA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgMTE1OTQsIDEyODI0NywgCi0gICAgMCwgMTE4OTkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIAotICAgIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIAotICAgIDAsIDg2NDIsIDAsIDQyNzY2LCA5ODM4NjYsIDIyMTAsIDk5ODMsIDAsIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgCi0gICAgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAKLSAgICAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDAsIDQxNTE3LCAKLSAgICA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIAotICAgIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAKLSAgICAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIAotICAgIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAzMTk1LCA1NTUwLCA5ODM1NTQsIAotICAgIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAyODc3LCAwLCAwLCAxNjc1LCAKLSAgICA2OTg0MCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgOTgzNjExLCAwLCAwLCAwLCA0MzI0NCwgCi0gICAgMCwgMCwgOTgzOTE2LCAxMTk1NjEsIDk4MzA3OCwgMCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIAotICAgIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCA3NDAzOCwgMTE5NTU4LCA2MjczLCA2NjY3OSwgCi0gICAgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgNjY0ODksIDIyNCwgMCwgNjg2NzAsIDkzMzIsIAotICAgIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAwLCAKLSAgICAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgOTgzNzE4LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDAsIAotICAgIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCAKLSAgICA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDk4MzIzNiwgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCAKLSAgICA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgCi0gICAgMCwgMTI3MDAyLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCA5ODM4MTQsIDYzNzQ1LCAKLSAgICAxNzQ4LCA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCAKLSAgICA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgCi0gICAgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDAsIDAsIDkyNTM1LCAwLCAwLCAwLCA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCAKLSAgICA2NDU3NCwgNjUwMTIsIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAKLSAgICAxMjQ5OCwgMTA5ODcsIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDAsIDE5NDg0MiwgOTgzNTg4LCA0OTMsIDAsIAotICAgIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAKLSAgICAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgMCwgNjQ5MTEsIAotICAgIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgNzgyMTksIDk4MzA4MSwgODM3OCwgMTE2MzIsIDEyNzA0MSwgNjYyMTMsIDYzODY0LCAKLSAgICA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCAKLSAgICA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCA2NjIzNCwgMTE2MDUsIDYzNzU5LCAKLSAgICA5ODM2NTQsIDY2MjA4LCA3Mzk5OSwgNjM3OTksIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgMTI0OTQsIDczNzYxLCAKLSAgICAxMjQ5MiwgMTI2NjksIDAsIDAsIDc0MTUzLCAwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgMTMwNDAsIDAsIDg2MTIsIDQ4ODUsIAotICAgIDc0MDUzLCAwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgMCwgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgCisgICAgNzQ0NzQsIDEyMDMyNywgNzg2MjAsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgCisgICAgNDgzMiwgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAwLCAxNjIwLCA2NDQzNiwgCisgICAgMzYwMSwgMTI0OTQ0LCAxMjgwNzMsIDY3MjQ2LCA2MDksIDExNTU1LCA5MjQwOSwgMTI0OTYsIDY3MjUwLCA3NDE4MSwgCisgICAgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMTI5MTkwLCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIAorICAgIDkzMDMyLCAwLCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgMTI5MjksIDAsIAorICAgIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgMTI2NjMyLCAwLCAxMjA0OTAsIDcwMzMzLCAxMTkxMzcsIDE1MDYsIAorICAgIDQzNTYyLCAwLCA5MjQ5MSwgMCwgMTI2NTEsIDAsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIAorICAgIDAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAKKyAgICAwLCAwLCAxMjAzMywgNDIxNzgsIDAsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCAwLCAwLCAxMjQ5NTEsIAorICAgIDY4MzI0LCAzMTc4LCA5MTc4MzUsIDEyODYzMywgOTI3MDQsIDAsIDkwODAsIDEyNzAwMCwgNjc2OTcsIDE5NTEwMSwgCisgICAgNjgyMDksIDcyNDE4LCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgNzA0NzcsIAorICAgIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDAsIAorICAgIDQzMDQ1LCAwLCAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCA2OTk5NywgNzQzNDgsIDAsIAorICAgIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIAorICAgIDc0MzM0LCA5MzA1NiwgMTIwODExLCAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDEyNTEyMiwgOTE3ODQyLCAKKyAgICA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDExMjAyLCA5ODMyMjIsIAorICAgIDk4Mzg3MiwgMTMyMjMsIDEyODY2NSwgNjQ1OTUsIDEyNzI5NCwgMCwgNjg0ODksIDQzNDUsIDEyNjE2LCA5MTc3ODQsIAorICAgIDEyODk0NywgOTgzMTU1LCA3NDQ2NywgMCwgMCwgMCwgNTM4MiwgMCwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIAorICAgIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgOTE3NzY2LCAxOTQ2OTIsIDQyMDE2LCAxMTgyMywgCisgICAgNDMwMjMsIDEyNTEyOSwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCisgICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCisgICAgNzM4MTYsIDEyMDgwMywgOTgzODQ4LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDk4MzMzNCwgCisgICAgNDMwNjMsIDQzMjM5LCAxMjcxODIsIDE5NDg0MCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgCisgICAgMTA0NjgsIDg0MDMsIDU0MDAsIDExNTk0LCAxMjA0MDUsIDY4MzMzLCAxMTg5OTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIAorICAgIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCAKKyAgICA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMTk0NzA3LCA0Mjc2NiwgMTI4MjQ3LCAKKyAgICAyMjEwLCA5OTgzLCAwLCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIAorICAgIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCAKKyAgICA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCA5ODM0NzUsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCAKKyAgICA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCAKKyAgICA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAwLCA2NTQsIDExMzQ1LCA2NTMsIAorICAgIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgCisgICAgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAxMTk2MDcsIDMxOTUsIDU1NTAsIDEyOTEyMSwgNzg5NywgMTI3MDg5LCAKKyAgICAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAyODc3LCAxMjgzOTQsIDcwNDk2LCAKKyAgICAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgMTk0Nzc3LCA5ODM2MTEsIAorICAgIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDAsIDAsIDk4MzkxNiwgMTE5NTYxLCA5ODMwNzgsIDE5NDkxNCwgCisgICAgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDEyODk0OCwgMCwgMjcwLCAwLCAxMDcxNCwgMTE4OTgzLCAKKyAgICA3MjQzNywgMCwgMCwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIDc0MDM4LCA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgCisgICAgMTI3MTM3LCAwLCAwLCA3MDcsIDAsIDEyODQwOSwgOTI4MiwgMTExNjMsIDIyNCwgMTI4NTg4LCA2ODY3MCwgOTMzMiwgCisgICAgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCA5ODMxMzEsIDM4NDEsIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIAorICAgIDQ5NzIsIDAsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCAxMjA2OTksIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgCisgICAgOTE3OTQzLCAxMTk2MiwgMTk0Njk0LCAxMjUwNywgMTE5NiwgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgCisgICAgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgOTE3ODg3LCA2NDgyNCwgMTE5MzQzLCAxMjcyNDMsIDk0NTQsIDYzNzc4LCA4NjU4LCAKKyAgICA0MjUyOCwgNzAwNzMsIDI3MDUsIDEyODY4MCwgNDE1MjAsIDE5NTA5OCwgMTI4NDQ3LCAxMTk4NiwgNzc2NSwgNDI1MDIsIAorICAgIDgyODAsIDc0NTIwLCAyNzAxLCAwLCAxMjAyNDAsIDU3NjcsIDAsIDAsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgCisgICAgNjM3NzIsIDk4MzgxNCwgNjM3NDUsIDE3NDgsIDYzNzcwLCAwLCAxMjkxMzcsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIAorICAgIDMwNjEsIDc4NjA5LCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAKKyAgICAxMjk4NywgMTI3NzgxLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAwLCAxMjUwNDEsIAorICAgIDkyNTM1LCAwLCAwLCA2ODI0OSwgNzQ1NzUsIDAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCA5ODM5NTgsIDE2NDAsIAorICAgIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIDY5OTM2LCAKKyAgICA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCA5ODM1ODgsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIAorICAgIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgOTIxNzAsIAorICAgIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgMTEzNjk1LCA2NDkxMSwgOTI2MTUsIDIwOTYsIAorICAgIDY1MTIwLCAwLCA3ODIxOSwgMTI4OTEyLCA4Mzc4LCAxMTYzMiwgMTI3MDQxLCA2NjIxMywgNjM4NjQsIDY2MjIxLCA2NjIyNiwgCisgICAgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIDkyNjcyLCA2NjI0MCwgCisgICAgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIDk4MzY1NCwgNjYyMDgsIAorICAgIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIDEyNDkyLCAxMjY2OSwgMCwgMCwgCisgICAgNzQxNTMsIDEyMDMxMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgCisgICAgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDEyOTA2NiwgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgCiAgICAgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgCi0gICAgNzAwMjgsIDc4MDM0LCA0NTc5LCAxMjgwOTAsIDAsIDEyNTExLCA3NDQ1MywgMTI1MTQsIDAsIDc0NTc5LCA3MjM5LCA3MDAxLCAKLSAgICA4NjIzLCA5NDAxMSwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgMCwgNjU5LCA2MDk4LCAKLSAgICAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCA0MTgwMywgMTMwMzksIDEyNzA3MiwgMTI1MTMsIAotICAgIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgOTgzOTIwLCAwLCAwLCAyMzIzLCAwLCAyMzE5LCA3NzkxNywgMTI0NzcsIDc3OTE2LCAKLSAgICAyMzExLCAwLCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMCwgMCwgMjMwOSwgMTMxMiwgODE3MywgMTI4ODcxLCAxMjQ2OSwgCi0gICAgMCwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgMCwgMTI4MTExLCA5Mzk3LCAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgCi0gICAgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMCwgCi0gICAgNjU0NTEsIDgxODUsIDAsIDkxNzgzMiwgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCA5MjM2LCAKLSAgICA5MjU3MSwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgCi0gICAgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgCi0gICAgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgMCwgMCwgMTMwMTYsIDgyMTAsIAotICAgIDk4Mzk1OCwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIDk4MzgzNywgNDE1NSwgMCwgCi0gICAgMCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCAKLSAgICA5ODM4NDEsIDEyNTI1LCA5ODM0NzEsIDEyMDE2LCA2NTc3MCwgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAwLCAKLSAgICAwLCAxMTAzMCwgMCwgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTk0NjY4LCAKLSAgICAwLCAxMjUwNiwgMCwgMTIyMzEsIDAsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIAotICAgIDY2MDgsIDQxMDQ3LCAxMjAzMjEsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDc3OTk1LCA3ODM5MSwgMzYwOCwgODI4MSwgCi0gICAgMTIwMzIwLCAxMTA3LCAwLCA5MDc2LCA4ODYyLCA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIAotICAgIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIDEyNjUxNCwgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgCi0gICAgOTgzOTQ3LCA0OTgsIDY0NDcxLCAxMjAzMjQsIDEyODU2NywgMTI1MjksIDgwNDIsIDAsIDIzNDQsIDEyNTI4LCA4MDMxLCAKLSAgICAyNDE0LCAwLCA2OTcxOSwgMzIzMSwgMCwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKLSAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgMCwgNDM2MywgMzMxMywgNDE0MjgsIAotICAgIDc4NDA3LCAyMDIzLCAxNzcyLCA3ODIyNCwgNzgyMjUsIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCAwLCA5OTIwLCAKLSAgICAxMjIxNSwgMCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgMCwgOTY2MywgOTgzMjI4LCAxMTk2MzQsIDY1MDMsIAotICAgIDQxMTEwLCAwLCAxNDkxLCAwLCAwLCAxMjczMDQsIDQxMDYxLCAwLCAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCAKLSAgICA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIAotICAgIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgCi0gICAgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIAotICAgIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAxMjkxMCwgNzg1NTQsIDY2NjQ0LCAKLSAgICAxMzAyOCwgNjczNywgMTI1MzcsIDAsIDAsIDY0MTM2LCAxMjUzNiwgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCA5ODMxMDMsIAotICAgIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgMCwgNDk0OCwgCi0gICAgMTI0ODQsIDQwMzIsIDEyODE0OSwgMTI2MjMsIDAsIDYyMDcsIDAsIDYxMTcsIDY1OTMwLCA4NDEyLCAwLCA3NDM4LCAxMjk2LCAKLSAgICAyMzI1LCA0MTUxMSwgMTI2NjI1LCAxMDE0OSwgNzQxMTgsIDAsIDEyNzI4NiwgMTI0ODEsIDAsIDEyNDg4LCA2NjcxMywgMCwgCi0gICAgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCA3Mzc2NiwgMCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgCi0gICAgNjUwMzIsIDQxNTEzLCA5ODMxNjYsIDExOTI3LCA2NjU4NCwgNzg1NTksIDc4NTYwLCA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCAKLSAgICA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIDY5OTIyLCA3NDAzMSwgNzg1NjMsIDc4NTY0LCAyMzUyLCAKLSAgICA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCAwLCAxMzAyNiwgNjc2MiwgNzg1NzksIDc4NTgwLCAKLSAgICAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIDEzNDMsIDk4MzgyMywgMCwgOTMyNSwgNjgxOCwgCi0gICAgNjI4MywgMTE3MzgsIDAsIDk4MzkzNCwgMCwgMTE3NDEsIDAsIDAsIDkyMTYsIDgyNjMsIDExMjc5LCAxOTQ3NTIsIAotICAgIDk4MzgyNSwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgCi0gICAgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIAotICAgIDc0MzQwLCA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMCwgMCwgOTc3NiwgMTIwNTI2LCAKLSAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAKKyAgICA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCAwLCA3NDU3OSwgNzIzOSwgNzAwMSwgCisgICAgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDAsIDY1OSwgNjA5OCwgCisgICAgMCwgMTIyMzQsIDEyNzMwNywgNjczNTgsIDgzMTEsIDEyNTEwLCA3NjY5LCAxMzAzOSwgMTI3MDcyLCAxMjUxMywgMTAyMDIsIAorICAgIDEyNDcxLCAwLCA4NzQ3LCAxMjUwNDksIDcwMTkzLCAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgCisgICAgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAwLCAwLCAyMzA5LCAxMzEyLCA4MTczLCAKKyAgICAxMjg4NzEsIDEyNDY5LCAwLCA3ODUwNSwgNjQzMzUsIDEwNjA5LCAwLCAxMjgxMTEsIDkzOTcsIDExNTI0LCA5Mzk1LCAKKyAgICA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCAKKyAgICA5Mzg0LCA2NzQwLCAwLCA2NTQ1MSwgODE4NSwgMTI4OTMxLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIAorICAgIDEyODE2NywgNzk0OCwgOTIzNiwgNzc5NDIsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIDExOTk4LCAKKyAgICAxMjA4MiwgMTA5MjQsIDMxNDcsIDAsIDY2NDA2LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgCisgICAgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgMCwgCisgICAgMCwgMTMwMTYsIDgyMTAsIDEyOTE3OCwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAorICAgIDkxNzkyMiwgNDE1NSwgMCwgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIAorICAgIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIDExMjExLCAxMjUyNSwgOTgzNDcxLCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCAKKyAgICA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAKKyAgICAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMCwgMTI1MDYsIDk4MzgzOCwgMTExNDYsIDEyNzc1MSwgMTI1MDAsIDQ0MDIzLCAKKyAgICAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIDc4Mzk0LCAKKyAgICA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgNjk3NDMsIAorICAgIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgODU0NiwgCisgICAgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIDY0NDcxLCA3Nzk4NywgOTI5NzQsIDEyNTI5LCAKKyAgICA4MDQyLCAwLCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgNzQ1MDYsIDY5NzE5LCAzMjMxLCAwLCA2NDIyLCA2NjUxMiwgCisgICAgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgCisgICAgNDcxOSwgNDY5LCAwLCA0MzYzLCAzMzEzLCA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIAorICAgIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDAsIDk5MjAsIDEyMjE1LCAxMjc4NzYsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIAorICAgIDk2MDcsIDcwMzY4LCA5NjYzLCA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY1LCAxNDkxLCA2Njg0NywgCisgICAgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCAKKyAgICA2NTAyOCwgNzExODEsIDY2NDc2LCA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIAorICAgIDAsIDQxNjg3LCAwLCAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTI3Mjk5LCA3NjkyLCA5ODM4MzMsIDgwMDgsIDQxMTMxLCAKKyAgICAzMzAsIDg1NjYsIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgCisgICAgNDMyMzUsIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCAKKyAgICA2NzM3LCAxMjUzNywgMCwgNDM1MDYsIDY0MTM2LCAxMjUzNiwgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjc3NjMsIDk4MzEwMywgCisgICAgMTMwMzAsIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgCisgICAgMTI4NDk5LCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgNjU5MzAsIDg0MTIsIAorICAgIDEyNzE4MywgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDEyNjYyNSwgMTAxNDksIDc0MTE4LCAwLCAxMjAyMzMsIDEyNDgxLCAKKyAgICAwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIDAsIDYyOTUsIAorICAgIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgOTgzMTY2LCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgCisgICAgNzg1NTcsIDc4NTU4LCAwLCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIDY3MjI2LCA2OTkyMiwgCisgICAgNzAxOTAsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCA2Nzk3MywgMCwgCisgICAgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAxMjc5ODQsIAorICAgIDAsIDEzNDMsIDk4MzgyMywgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIDExMzcxMywgCisgICAgMTE3NDEsIDAsIDkzMDM4LCA5MjE2LCA4MjYzLCAxMTI3OSwgMTk0NzUyLCA5ODM0NTMsIDE5NDc1NCwgMTMwMjEsIDY0NDk0LCAKKyAgICAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDAsIDEyNzc4NywgNzQ1NTIsIAorICAgIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgCisgICAgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgCisgICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAorICAgIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgCiAgICAgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAwLCAxMzA0NiwgCi0gICAgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCAwLCAwLCA2ODE5LCAxMzA0OSwgCi0gICAgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNzM5NDQsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIDEyNzkxOSwgCisgICAgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMCwgNjgxOSwgMTMwNDksIAorICAgIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIAogICAgIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgMTk0NzI0LCAxMzA0NSwgCiAgICAgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDE5NDcyOSwgMzk5NywgMTI4MDYsIDg3NjgsIDEzMDQ0LCAwLCAKLSAgICAxMjQyMCwgNDAyNCwgMTk0NzMwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAwLCAwLCAwLCAwLCA5ODM3OTEsIAotICAgIDkyMjEwLCA5MjQxMSwgMCwgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCAKLSAgICA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgCi0gICAgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgCi0gICAgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDEyNjU5NiwgMCwgMTE5OTMzLCAwLCAzMTE1LCA5OTE4LCAwLCA4Mjk0LCAKLSAgICA0MjkxMiwgMCwgMCwgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDk4MzI3NCwgNDE1NTgsIDQxNDcxLCAKLSAgICA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIAotICAgIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgMCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCi0gICAgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgCi0gICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgCi0gICAgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIAotICAgIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIAotICAgIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgOTE3ODEwLCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAwLCAKLSAgICA5MTc4MDksIDgzNDYsIDAsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDAsIDgyMiwgMTI3OTg0LCA5OTAzLCA2NDcyMSwgNDI3MjIsIAotICAgIDY5ODc3LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCA3ODY2MiwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgCi0gICAgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCAxMTkzNDEsIAotICAgIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAwLCA5ODM5NjAsIDc0OCwgCi0gICAgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgCi0gICAgODk2OCwgNjc4NjMsIDM1OTMsIDAsIDAsIDIzNDIsIDAsIDE5NDYzNCwgNjUyMDYsIDQ4OTQsIDE5NDYzNSwgNDg5MCwgCi0gICAgMTk0NjM3LCA5MTc4MDQsIDU4MSwgNDg5MywgOTgzNjE2LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCAKLSAgICA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgNjk3MDIsIDAsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgCi0gICAgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIDAsIDAsIDAsIDAsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIAotICAgIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAxMjAzODEsIDEyMDM4OSwgMTE4ODg4LCA5MzQ0LCAKLSAgICA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgMCwgCi0gICAgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIAotICAgIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIDEyNzAxNCwgMCwgMTI3OTE0LCAKLSAgICA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCAKLSAgICA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCA3OTcxLCA3ODA3MiwgNzgwNzMsIAotICAgIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgNDA5NjIsIAotICAgIDgzMDUsIDEyNTczLCA5ODM2MDgsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAwLCAxMjU4MiwgNzgyODIsIDk4MzA0OCwgCi0gICAgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCAKLSAgICA3NDA0NSwgNzAwMzksIDAsIDAsIDQ5MTMsIDAsIDk4Mzk1OSwgNzEzMzMsIDQyMzI2LCAxMjgxOTQsIDEyNzI4LCA5MjY4NSwgCi0gICAgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAKLSAgICAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzAwMTcsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgCi0gICAgMCwgMCwgMCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgMTk0Njk3LCAKLSAgICA3NDM1NiwgNjQ5NDUsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgMTk0NzAwLCA1NTI2NCwgCi0gICAgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCA5ODM0OTUsIDEwMTAxLCAwLCA3MDA0OSwgODQ3OSwgNDE1MSwgCi0gICAgNDE5MzMsIDAsIDAsIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCA3NDA1MCwgOTI3MDEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIDAsIDI2OTksIDAsIDczODQ1LCAKLSAgICAyOTg1LCA5MjU2OCwgMTI2NDc1LCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgOTgyNywgMTE5MzEwLCAKLSAgICAxMTkzMTEsIDExOTMwOCwgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzg0ODEsIAotICAgIDc4NDgyLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgCi0gICAgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIAotICAgIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDAsIDkxNzgyNiwgNTI0NCwgNDE4OSwgOTQxMDgsIAotICAgIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDAsIDkxNzgyNywgCi0gICAgNjU1NTUsIDEyNTc0LCAwLCAwLCAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIDEyNTc4LCAKLSAgICAxMjcyMCwgMCwgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAxMTg4NTAsIAotICAgIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCAKLSAgICA5MjMyMywgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDAsIDAsIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCA3MTMyNSwgMCwgCi0gICAgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIAotICAgIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAxMjAxNjEsIDAsIDAsIDQxOTM0LCA3NDY1LCAwLCAxMjgxNjgsIAotICAgIDk4MzI2OCwgNDcxNSwgNjEwMSwgOTQxMDYsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIAotICAgIDk1ODUsIDUzNzQsIDk4MzI2NywgMTI4MDU5LCAwLCAwLCAxMjY2MTgsIDEyMDM5MCwgMCwgNjU1NjcsIDEyMDYxNCwgMTkyOSwgCi0gICAgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxOTQ2MjMsIDUzNzgsIDc4NzkxLCAKLSAgICAxMjg2NzksIDQxNDIxLCAwLCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIAotICAgIDk4MzExNSwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgCi0gICAgNDM1OTcsIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAKLSAgICAwLCA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NTYyNiwgNzg0NjIsIAotICAgIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgCi0gICAgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgCi0gICAgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAKLSAgICAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIAotICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgOTgzNzYzLCAxNTg0LCA2NjY0NSwgCi0gICAgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDAsIDc4MDYyLCA3NTM3LCAwLCAxMTM3MCwgMCwgMTAzMzAsIDAsIAotICAgIDEwMzk0LCAwLCA3NDE5NCwgMCwgMTI3OTI5LCA5NzgwLCAwLCAxMzA5MiwgMTk0NTc2LCA3Nzk1MCwgMTk0NTc4LCA3MDc0LCAKLSAgICA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAwLCAwLCA0MjExLCAxMjU5LCAKLSAgICA3NTE3LCAwLCAwLCAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA5NDAzNCwgMTk0NTY2LCAxMTA2NCwgCi0gICAgNDExMjksIDAsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAKLSAgICAxOTQ1NzMsIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCA5ODM0NTIsIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgCi0gICAgMCwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDEyNjYwOCwgMCwgMCwgMCwgMCwgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAKLSAgICAyNTYzLCAxMzAzMywgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCA2OTg5NSwgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAKLSAgICAwLCA0MTkwMywgNDM0NDcsIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCA0MTkwNSwgMCwgMCwgMTA3NzUsIAotICAgIDk3OTMsIDUwMDksIDAsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAotICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDk4Mzc3NiwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgCi0gICAgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDEyODA1OCwgNjk4NDQsIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCAKLSAgICA0MjYwMCwgMCwgNDMyMDMsIDAsIDk4Mzc5OSwgNDMyODYsIDAsIDEyODIxMSwgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgCi0gICAgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAwLCAwLCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAKLSAgICAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIAotICAgIDYzODg1LCAxOTQ3OTIsIDExODIyLCAwLCA0MzE4OSwgOTgzODk4LCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKLSAgICAwLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA5NDA1NSwgMCwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgMCwgMTI2NDAsIAotICAgIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgMzM5NiwgMTI2NDIsIAotICAgIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAxMjA1MTYsIDExODk4OSwgMCwgODgxNSwgCi0gICAgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCAKLSAgICA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgMCwgCisgICAgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgNjgzMDcsIDAsIDAsIDAsIAorICAgIDk4Mzc5MSwgOTIyMTAsIDkyNDExLCAwLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAKKyAgICAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIDEzMDQzLCA4MDU2LCAKKyAgICA5MjQ5NCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCAKKyAgICA1NjYxLCAwLCAxMjA2MzAsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDEyODQzNCwgMTE5OTMzLCAwLCAKKyAgICAzMTE1LCA5OTE4LCAxMjc4MjMsIDgyOTQsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgCisgICAgOTgzMjc0LCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIAorICAgIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCA3ODU5NCwgCisgICAgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIAorICAgIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgCisgICAgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgCisgICAgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAKKyAgICAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgCisgICAgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAwLCA5MTc4MDksIDgzNDYsIDEyODQzOCwgODMzOCwgMTI4MzE1LCAKKyAgICA2NTA0MywgOTgzMjM3LCA4MjIsIDcwNDEyLCA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCAxOTQ2NTksIDc4NjU1LCAKKyAgICA2Njg4MiwgMTk0NjYwLCA3ODQ4NCwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzM5MzEsIAorICAgIDExMjc4LCA3ODYzMiwgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAKKyAgICAxOTQ2NDgsIDEyNzk2NywgNjUwMTksIDE5NDY0OSwgNzM5OTAsIDY1MTExLCA5ODM5NjAsIDc0OCwgNDEwNjcsIDIzMzAsIAorICAgIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIAorICAgIDM1OTMsIDc0MDc2LCAwLCAyMzQyLCAwLCAxMjY1NDEsIDY1MjA2LCA0ODk0LCAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgCisgICAgMTI5MTQ3LCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA2NDY1MSwgCisgICAgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgNjk3MDIsIDk4MzkzNywgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCAKKyAgICA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCA0MzU4NywgMCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgCisgICAgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAxMjAzODEsIDEyMDM4OSwgNzE4NTQsIAorICAgIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIAorICAgIDAsIDY1Njk2LCA3MjQzMiwgMCwgNjYyMTcsIDAsIDgzMzQsIDkyNzU1LCAwLCAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIAorICAgIDExODk1MCwgNjY0MDUsIDcwNDMwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDAsIAorICAgIDEyNzkxNCwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDEyNTAwMSwgNzgwNTQsIAorICAgIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCA3OTcxLCA3ODA3MiwgCisgICAgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgCisgICAgNDA5NjIsIDgzMDUsIDEyNTczLCA5ODM2MDgsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIDEyNTgyLCA3ODI4MiwgCisgICAgOTgzMDQ4LCA2OTg1NiwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIAorICAgIDc2OTgsIDU2NTgsIDcwNDAxLCA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIDcxMzMzLCA0MjMyNiwgCisgICAgMTI4MTk0LCAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAxMjA4MjQsIAorICAgIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyNzA1OSwgMTk0NjA2LCAxMDM1NiwgCisgICAgNzAwMTcsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIDY1MTE1LCAKKyAgICA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgNDcxNiwgCisgICAgNDMyNzcsIDAsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAwLCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgMTIwNjc2LCA4NzAzLCAKKyAgICA1NDYyLCAxMjA3OTMsIDEyODk0NCwgMTAxMDEsIDAsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgMCwgMCwgNjYyNTQsIAorICAgIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCAxMTkxOTQsIDc0MDUwLCA0MjY1MSwgMCwgMCwgMCwgMTI5MTUxLCAKKyAgICAwLCAxMjI3OCwgMTI3MTY3LCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgMCwgMCwgMjY5OSwgMCwgCisgICAgNzM4NDUsIDI5ODUsIDkyNTY4LCA2ODY0OCwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCA2NjQ4OSwgOTgyNywgMTE5MzEwLCAKKyAgICA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzA4MzgsIDY3NDMxLCAKKyAgICA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIAorICAgIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCAKKyAgICA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAxOTQ4NzEsIDkxNzgyNiwgNTI0NCwgNDE4OSwgOTQxMDgsIAorICAgIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAwLCAKKyAgICA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgOTI3NDksIDkyNzUzLCA3NDQ5MCwgMTI3MDk5LCAxMTgzOCwgOTgzOTIwLCAwLCAKKyAgICAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIAorICAgIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDY3MzMyLCA5NTksIDg4ODUsIDEyNTY0LCAKKyAgICA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIDkyMzIzLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMCwgMCwgMTExMzIsIDMxMCwgCisgICAgMCwgNDEyODEsIDEwOTc2LCAwLCA3MTMyNSwgMTI4MzY0LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDAsIDkwMTIsIAorICAgIDE5OTU4LCA3NDQyMCwgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDc0MDQ0LCAzNzQsIDQzMTk1LCA4MTYsIDEyMDE2MSwgCisgICAgMCwgMCwgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgOTgzMjY4LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIDAsIAorICAgIDQ4NzksIDAsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgOTgzMjY3LCAxMjgwNTksIDAsIDEyOTE4OSwgCisgICAgMTI2NjE4LCAxMjAzOTAsIDEyOTE0NiwgNjU1NjcsIDEyMDYxNCwgMTkyOSwgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgCisgICAgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxMjgyMjgsIDUzNzgsIDc4NzkxLCAxMjg2NzksIDQxNDIxLCAxOTUwNzUsIDQ0NjIsIAorICAgIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgNjc3NTgsIDE3NjAsIDI0MjEsIDQ0NjksIAorICAgIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgCisgICAgNzk5OSwgNDM5NzEsIDExMjE3LCAwLCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCA0MzgwLCAxOTQ2MDgsIAorICAgIDExOTA0NCwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY1NjI2LCA3ODQ2MiwgMTgxMCwgMzY3MywgNTEzNywgMTk0NjE3LCAKKyAgICAwLCA3Mjc3LCA2NTYyMiwgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3ODA5MiwgNzA0MjIsIDEyODM4NSwgCisgICAgNDc0OCwgOTIyMjgsIDEyOTE4NSwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAwLCA3NDU3NiwgNDQwMTksIDAsIAorICAgIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDAsIDg0MTAsIDQ0NTQsIDcyMywgCisgICAgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMTI4NDI4LCA3ODE5LCAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgCisgICAgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgCisgICAgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgOTgzNzYzLCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgCisgICAgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDAsIDc4MDYyLCA3NTM3LCAxMjQ5OTEsIDExMzcwLCAwLCAxMDMzMCwgMCwgMTAzOTQsIAorICAgIDAsIDc0MTk0LCAwLCAxMjc5MjksIDk3ODAsIDAsIDExMTE3LCAxOTQ1NzYsIDc3OTUwLCAxOTQ1NzgsIDcwNzQsIDkyNjQ4LCAKKyAgICAxOTQ1NzksIDE5NDU4MiwgMTE0MTQsIDEyNDk2MCwgMjUzMSwgMTMwMzQsIDAsIDAsIDQyMTEsIDEyNTksIDc1MTcsIAorICAgIDcwODY2LCA3MDE5OCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgOTQwMzQsIDE5NDU2NiwgCisgICAgMTEwNjQsIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCAKKyAgICA2NTc5MywgNDUzNSwgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgMTk0Njc1LCA2NDI2MiwgCisgICAgNjc2NywgNDE0MDcsIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDcwODMwLCAwLCAKKyAgICAwLCAwLCA2NzY3NSwgOTgzNjk0LCAwLCAwLCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgCisgICAgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDAsIDAsIDQxOTAzLCA0MzQ0NywgMTEwMDEsIDczODI3LCAKKyAgICA0MjI1NSwgMTEzNzYwLCA5MjY2MSwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMCwgMTA3NzUsIDk3OTMsIDUwMDksIDEyODc3NCwgCisgICAgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgMzg3NywgMTIwNzk1LCAKKyAgICA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDEyNzU1NiwgNjQ1MDYsIAorICAgIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDEyODA1OCwgNjk4NDQsIDQzMjAwLCA1ODMyLCA3MTI1MywgMCwgNTE0MSwgNDI2MDAsIAorICAgIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMjAxMjksIDQzMjg2LCAwLCAxMjgyMTEsIDQzNzc4LCA3NjU3LCA0MTMwNSwgCisgICAgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgNzAzMSwgODU5LCAxMjg0ODgsIDAsIDAsIDYwNTksIAorICAgIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgMTI4NjM4LCA2NTE5NiwgMTI1MDg0LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgCisgICAgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDc2NjcsIDE5NDc5MiwgMTE4MjIsIDAsIDExMTM1LCA5ODM4OTgsIDAsIAorICAgIDE3ODgsIDE1NzksIDEyMDQ4MiwgNzEyOTgsIDAsIDk4MzQ1OSwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIAorICAgIDE5NDczOCwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgMTI5MDQxLCAxMjY0MCwgMCwgNzQwMSwgMCwgMTI2MjUsIAorICAgIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIDQzNzU0LCAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCA5ODM2MDksIAorICAgIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCA3MDgyNSwgMTE4OTg5LCAwLCA4ODE1LCA2NjY3MywgCisgICAgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIAorICAgIDgyMTEsIDQyMjkzLCA2NDM3NywgMTIwNDc4LCA5MjY0MywgMCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgOTgzNDg5LCAKICAgICA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIAotICAgIDQzNjk4LCA2NTM4NiwgMjIwOCwgMCwgNDM3MDEsIDQzMTk4LCA3MTg0LCAxMjA2NzMsIDE5NDc5NywgOTE3ODE5LCAxMDA4NSwgCi0gICAgMTE5OTkyLCAwLCAxMTk5OTMsIDY2MzQsIDkyMzczLCAwLCAxMTkzMjMsIDgwNzIsIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIAotICAgIDc3ODMsIDkxNzk5MiwgMTIzOTgsIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIDEyMDU2NSwgOTkxNCwgMjIxNywgCi0gICAgOTE3ODU0LCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDAsIDc4MTA3LCAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAKLSAgICAxODI5LCAwLCA0MTkzNywgNDM1OCwgNDMyNzIsIDYzNTMsIDAsIDAsIDEyMDQyMiwgMCwgMTcxMCwgMCwgMCwgNjU2MDcsIDAsIAotICAgIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIDY0NDE4LCAKLSAgICAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgMTI4MjI1LCAxMzIxMywgNDI0NTIsIDc4MzMxLCAxMjA2NjQsIDc4NDQ1LCAwLCAKLSAgICAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCAxMjAwMDIsIDk4ODYsIAotICAgIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCAwLCAxMjYzMiwgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIAotICAgIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIAotICAgIDY2MzA5LCAwLCAwLCAxNDk0LCA5ODMxNDYsIDEyNjYxMywgMCwgMTE2OTMsIDEyNjUxMywgMTA0OTQsIDkyNjU1LCA2NTg3MiwgCi0gICAgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgNzM3OTQsIDAsIDgwMjIsIDAsIDEyMDQ2MiwgNzQxMDYsIAotICAgIDEyNDEzLCA5NDA2OSwgOTE3OTk0LCA5MTc5OTMsIDkxNzk5NSwgNTU3MCwgMTg4MSwgNzIxMCwgMCwgMTAxMiwgNDM3NTIsIAotICAgIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDk4MzI0MiwgNDIzMzksIDAsIDYwNjMsIDAsIDc4MzgzLCAxMTk1OTQsIAotICAgIDYwNTMsIDY1NjAyLCAwLCA5MjIwMSwgNjQ3MjcsIDkxNjAsIDE5NDgyNywgMCwgMCwgOTIxODAsIDEwNTAzLCAxMTg4MTAsIAotICAgIDYwNTUsIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCAKLSAgICA5ODMxMTYsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDEyMDEwMCwgNjUwODcsIDU1NzEsIAotICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDEyMDEwNywgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCi0gICAgMTIwMTAxLCA1ODksIDcwNTAsIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgCi0gICAgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDAsIDE5NDgxNSwgODU4MywgMCwgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCAKLSAgICA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCA5ODMyNTEsIDAsIDgxMjAsIAotICAgIDEyMDcwMSwgMCwgMCwgMTI4MDEyLCA0MTA2MywgMCwgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgMCwgCi0gICAgMCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgOTgzNjcxLCAKLSAgICA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDE5NTAyNSwgNzQwOTQsIDAsIDAsIDc3OTcwLCA5ODM1NjAsIDAsIDEyODE3NSwgCi0gICAgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgCi0gICAgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIAotICAgIDkxNzk1OSwgNTg1MywgMTMwNjMsIDEwMzYzLCAwLCAxMjk1NiwgMTI4MTY5LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIAotICAgIDEyMDYwLCAwLCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIAotICAgIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgNzgzOTYsIDEyNzA1NywgMjY5NSwgNDIxNzEsIDAsIDAsIDAsIAotICAgIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIDEyMTI1LCAxMjc2NiwgMCwgMTE2NCwgMTI4ODE3LCAwLCA0MTkxOCwgOTgzMTY4LCAKLSAgICAxMjc1NDIsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgMTI4MDAxLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgMTIwNTM4LCAKLSAgICA2NDI3LCA0Mjg4NCwgNDExMjMsIDAsIDAsIDQyODczLCA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIAotICAgIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDAsIDE1ODksIDAsIDI5NiwgCi0gICAgNzQ0MzgsIDc4ODUyLCAwLCA2Nzg0MSwgNzQzNzAsIDAsIDg5MjIsIDEyODA2OCwgNzQ2MDAsIDEyNzAwLCA3NDgzNiwgMCwgCi0gICAgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIDAsIDExNDczLCA1NDQ5LCAKLSAgICAxMjUyLCAwLCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgOTE3NTY5LCA3NDExNCwgMTIyMywgMTY0MiwgCi0gICAgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIAotICAgIDQxNDI1LCAxMjcwMjksIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgCi0gICAgNzQxNzgsIDc0NTg3LCA3NDExNywgMCwgMCwgMCwgNDk4NiwgMTIxODksIDAsIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAKLSAgICAxMjEwNCwgNzc5NDIsIDYyMjAsIDkwMDQsIDY1NTYxLCAwLCA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDAsIAotICAgIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIAotICAgIDExODkwMCwgOTE3ODk0LCAwLCA5NjM1LCAxMjYwMCwgODg3MSwgMCwgMCwgMCwgNjQ2OSwgNzQyMjcsIDAsIDY1MzA0LCAKLSAgICA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCAwLCAwLCAwLCAwLCA0MjkxNiwgMCwgMCwgMCwgNzI4MiwgCi0gICAgNzg3MjgsIDY1NzMzLCA0NDQ1LCAxMjcxMzgsIDEyODA4MiwgMzQ5NCwgNzQ2MDYsIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCAKLSAgICA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjQ0LCA2NTMxMiwgNTQ0NywgMCwgMTI4OTUsIDY1NTkzLCA0MDEwLCAwLCAKLSAgICA0MTEwNiwgMCwgNjQ0NDgsIDAsIDQxMTA1LCAwLCA2NTgyMCwgNjIzMiwgMCwgMTI4MjgwLCAwLCA0MzYwOCwgMTE5MDkxLCAKLSAgICAwLCA2NTM4LCA0MzM1LCA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIAotICAgIDEyMTU1LCA5ODM2NzQsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIDY1ODMyLCAwLCAwLCAwLCA3Nzk3NSwgCi0gICAgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAwLCAwLCA1MTMzLCAwLCAwLCA5NTAwLCAKLSAgICAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCAwLCAwLCAyNDk2LCAxMTUxNiwgOTQ0LCAxMTg4NTEsIDM4OTAsIAotICAgIDEyMTY4LCAxNDM4LCAwLCA5ODMxMTcsIDAsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIDEyODU1NSwgMCwgMCwgMTU3MSwgCi0gICAgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMCwgNzgxMjAsIAotICAgIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIAotICAgIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgMTE1MzIsIDc0MDczLCAKLSAgICAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgCi0gICAgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDAsIDc3MDMsIDg4NDAsIDgwMzUsIDAsIDAsIDkyMjMwLCAwLCA2MTI5LCAwLCAKLSAgICAxMjg1MjgsIDEyODI2OCwgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgNzAxMDIsIDYzODg2LCAKLSAgICAxMTg4ODEsIDk2MDUsIDcxMzA4LCAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIDAsIDAsIDAsIDUyNDAsIAotICAgIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA5ODMzNTEsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgOTUwMSwgMCwgMTI3MiwgCi0gICAgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAwLCA5MTc4MTIsIDAsIAotICAgIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIDk4MzM1MywgMTk5MzUsIDAsIDkyMTYyLCA2OTY3NiwgMCwgMCwgMCwgNTI3NSwgCi0gICAgMCwgMCwgODYzNywgMCwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIAotICAgIDEyODEzOCwgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MTEsIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgCi0gICAgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgMTE2NjcsIDQyNjg2LCA3Nzk3MywgNDIzNjIsIDY0Njg2LCA0NDk5LCAKLSAgICA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgNjgyMTUsIDkxNzkwNCwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgCi0gICAgMCwgMCwgMCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCAKLSAgICA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMCwgNDE2OTksIDEwNzYyLCA0Mzc4MCwgCi0gICAgMTI5OTksIDAsIDAsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDAsIDQwMTIsIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCAKLSAgICA2NTQ0NywgMTI2NTExLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgNDI3NTUsIDc0ODAyLCA5MjI3LCAKLSAgICA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgCi0gICAgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMTI4Njg4LCAzOTg1LCA5MTc5MTIsIDY1ODYwLCAKLSAgICA2MzkyMSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDkxNzgwNSwgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIAotICAgIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDAsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMCwgCi0gICAgMCwgNDI2NTcsIDkyNDY4LCA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgCi0gICAgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAwLCAKLSAgICAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDk4MzEzNSwgMCwgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCAKLSAgICA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCAKLSAgICA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIAotICAgIDEyNTMzLCA5ODM4NzksIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAwLCA3NDgwMCwgMCwgNjc5NzQsIDExOTgwLCAKLSAgICAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCAwLCA3NDU5MiwgODg1MCwgNzQyNzUsIDkyMzgsIAotICAgIDEwNjE3LCA5MTc1NDUsIDAsIDkyNjI1LCAwLCAxMjc5MSwgMCwgMCwgMTI3ODQzLCA0NDQ3LCA3MzczMiwgMTI3OTMsIAotICAgIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgCi0gICAgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCA0MTMxMCwgOTgzODY5LCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIAotICAgIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDAsIDI3OCwgMCwgNDE0MDUsIAotICAgIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDAsIDQzNTUzLCAwLCA2NzkwMywgMCwgCi0gICAgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgOTgzMTg2LCA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIAotICAgIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIDEwMDQ0LCAxMjgzMjIsIDAsIDAsIAotICAgIDY4NjU5LCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMCwgMCwgMTAyOTcsIDAsIDM3NDIsIDAsIAotICAgIDM5NTksIDAsIDAsIDAsIDI0NjcsIDAsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIAotICAgIDQ2NzYsIDEyMDUwMSwgMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCAwLCAKLSAgICA0MTA2MCwgMCwgNDY2OCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCAxMjAyNjAsIDAsIDY1MjU2LCAKLSAgICAwLCA3NDA3MCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgMCwgMTIwNDcyLCAKLSAgICA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNzM4MjcsIDU0NCwgMTIwNDUsIDYyNzgsIDAsIDU1MTUsIDAsIDAsIAotICAgIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgNjc4ODQsIDAsIDY3ODkwLCA2Nzg4NSwgCi0gICAgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIDE5MDIsIDY3ODg3LCA5NjM4LCAKLSAgICAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCAKLSAgICA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgOTE3OTY2LCA0MzI2LCAKLSAgICAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCA3ODE2MiwgMCwgNjE0OCwgCi0gICAgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCA2NTMwLCAwLCAKLSAgICA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIAotICAgIDAsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgMTI4ODI1LCAwLCA3ODE2NSwgNjYwMzYsIDAsIDAsIDY0MjgsIDQyMjcwLCAwLCAKLSAgICA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgOTgzNzIyLCA5NDkzLCA5ODM5NjgsIAotICAgIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAwLCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgOTgzODU0LCAxMTk2MzIsIDAsIAotICAgIDY1NjAsIDcwMTYsIDc0Mjc0LCA5ODM2MTUsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIAotICAgIDUxMzUsIDExODExLCAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgCi0gICAgNTE2OCwgNzg1NTIsIDEyNzc1MywgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCAwLCA0MzU2MywgOTIyMzIsIDAsIAotICAgIDE5NDc1MCwgNzM5MiwgODIzMCwgOTM2NSwgMCwgMCwgOTgzNjA3LCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgCi0gICAgMTI3ODYsIDIyOSwgMTE5ODg1LCAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAKLSAgICAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCAKLSAgICA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgMTA0NzAsIDAsIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMCwgCi0gICAgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgCi0gICAgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgCi0gICAgMTE5ODY1LCA0MTc1OCwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgCi0gICAgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgMCwgNjU4MTIsIDkxNzgzMSwgMCwgNDE4MjQsIDY3OTg1LCAKLSAgICAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAKLSAgICAxOTQ4MDgsIDAsIDAsIDQ0OTMsIDQzMzYsIDAsIDIzMTQsIDQzNjAyLCA3ODgyNiwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCAKLSAgICA2NDYzOCwgNDIzMjcsIDQzNTI4LCA0NDg5LCA3MTMzMSwgMCwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAKLSAgICAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAxNDEwLCA5MjY3MSwgOTgzMjUwLCAxMTg4NzgsIAotICAgIDAsIDAsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjc5NzUsIDc4MTg4LCA0ODkyLCA3NDAxNiwgCi0gICAgMTk0NzgxLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAwLCA3NTksIDY1NzQ5LCAyMDc5LCA2NTI0OCwgMTI3ODgsIAotICAgIDY0NDg3LCA2NDU1MiwgMCwgMTAyMjMsIDQyMDYyLCAwLCAwLCAxMjY1NzMsIDM2NjgsIDY1NzU0LCA0MzU2MCwgMTIyMjYsIAotICAgIDY3OTkxLCA2NTE0OSwgMjM0MCwgNDE5NTksIDE5NDc4NiwgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCA2NTc0NywgMTA5MzcsIAotICAgIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA5MjQzNiwgODkyMSwgOTk1MiwgMCwgMCwgNDI3MTQsIDk5NTEsIDQzNDA5LCAKKyAgICA0MzY5OCwgNjUzODYsIDIyMDgsIDk4MzQ1NCwgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMjg4NzUsIAorICAgIDEwMDg1LCAxMTM4MTIsIDAsIDY3Mzk0LCA2NjM0LCA5MjM3MywgMTI1MDg1LCAxMTkzMjMsIDgwNzIsIDExOTMyMSwgCisgICAgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIAorICAgIDEyMDU2NSwgOTkxNCwgMjIxNywgMTk0NTg2LCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDkyNzQwLCA3ODEwNywgMCwgCisgICAgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMCwgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAKKyAgICAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCA2NzIzNCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCAKKyAgICA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAKKyAgICA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgMTIwNjY0LCA3ODQ0NSwgMTI1MTI0LCAxMDcyLCA3ODQ1NywgNzg0NTIsIAorICAgIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCA3MDgyNCwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAKKyAgICAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIAorICAgIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAxMjAxNDEsIAorICAgIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIDcxMjU1LCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgCisgICAgMTEzODYsIDExMzcyNywgMCwgMCwgMCwgNjQ1ODIsIDAsIDczNzk0LCA2NzM5NSwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgCisgICAgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCA5MTc5OTUsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgCisgICAgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDk4MzI0MiwgNDIzMzksIDkyOTk3LCA2MDYzLCA2Nzg4OCwgCisgICAgNjk5ODEsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTI4Mzk3LCAwLCA5MjkwNSwgCisgICAgOTIxODAsIDEwNTAzLCA3MDM4NywgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgCisgICAgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgCisgICAgOTIzODUsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCAxMjAxMDcsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCAKKyAgICA0MjE1OSwgNDI4NzAsIDExMzcwMCwgNTg5LCA3MDUwLCA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCAKKyAgICA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAwLCAxMjg0MjQsIDg1ODMsIDAsIDU4NDcsIDY5MjgsIAorICAgIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgCisgICAgMTI5MTcwLCA2Njg1NCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgODM2OSwgMCwgCisgICAgNDU1MSwgMTk0OTY0LCAzMzY5LCA5ODM3MzksIDEyOTAyNiwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAKKyAgICAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgCisgICAgMCwgNzc5NzAsIDkyMTcxLCAxMjcyMTksIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgCisgICAgNTQ5MiwgNjkyMywgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgCisgICAgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCAwLCAKKyAgICAxMjk1NiwgMTEzNjY2LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAwLCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIAorICAgIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgCisgICAgNzgzOTYsIDEyNzA1NywgMjY5NSwgNDIxNzEsIDcwODA5LCA2ODMzNCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCisgICAgMTIxMjUsIDEyNzY2LCAwLCAxMTY0LCAxMTM3MjksIDAsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIDY2MDA5LCAKKyAgICAxMjE3OCwgNzA1MywgMTI4MDAxLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCA0MTEyMywgCisgICAgMTExNzYsIDAsIDQyODczLCA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIDk4NzMsIDAsIDQyODc3LCAKKyAgICA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDAsIDE1ODksIDEyODY5MSwgMjk2LCA2NzcxMiwgNzg4NTIsIAorICAgIDAsIDY3ODQxLCA3NDM3MCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAKKyAgICAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCAwLCAxMTQ3MywgNTQ0OSwgMTI1MiwgMCwgCisgICAgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIAorICAgIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgNzQ1OTgsIAorICAgIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgNzQxNzgsIDc0NTg3LCAKKyAgICA3NDExNywgMTk1MDk0LCAwLCAwLCA0OTg2LCAxMjE4OSwgMTI3NTEyLCA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgCisgICAgMTIxMDQsIDcxMTc2LCA2MjIwLCA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIAorICAgIDAsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIAorICAgIDcxODk3LCAxMTk1NTIsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAKKyAgICAxMTg5MDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIAorICAgIDY3Mzc0LCA2NzM3MywgNDI5MTYsIDEyOTE1NSwgMTI4Mjc5LCA2NzM3NywgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCAKKyAgICA2NzM3MiwgNjczNzEsIDM0OTQsIDY3MzY5LCA2NTU1LCAxMjkxNDgsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCAKKyAgICA2NTg5OCwgOTgzMjQ0LCA2NTMxMiwgNTQ0NywgMCwgMTI4OTUsIDY1NTkzLCA0MDEwLCAwLCA0MTEwNiwgNzQzNTcsIAorICAgIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIDc0MTE0LCA2NTgyMCwgNjIzMiwgNjgyMzMsIDEyODI4MCwgMCwgNDM2MDgsIDExOTA5MSwgCisgICAgMTI0OTYyLCA2NTM4LCA0MzM1LCA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIAorICAgIDEyMTU1LCA5ODM2NzQsIDQyODc4LCAxMTUwMCwgNjc0MDUsIDAsIDc0NTc4LCAwLCA2NTgzMiwgMTI4NjY3LCAwLCA3MDc4OSwgCisgICAgNjczMzMsIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCA2NzMzNiwgMCwgOTIzMDcsIDAsIDAsIDUxMzMsIAorICAgIDY3MzgyLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIAorICAgIDExNTE2LCA5NDQsIDc4ODkxLCAzODkwLCAxMjE2OCwgMTQzOCwgMCwgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgCisgICAgMTIwODI4LCAxMjg1NTUsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIAorICAgIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMCwgNzA3OTcsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgCisgICAgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIAorICAgIDE5MDYsIDkxNzg5OCwgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIAorICAgIDEyODQwNiwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgOTgzMDc5LCA3NzAzLCAKKyAgICA4ODQwLCA4MDM1LCAwLCAwLCA5MjIzMCwgMCwgNjEyOSwgMTI4NDM3LCA3ODU4NiwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAKKyAgICAxMTkwOTIsIDExMjA2LCAxMzEzNiwgMCwgMCwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgNzEzMDgsIDEzMjIwLCAKKyAgICA2NzM0OCwgNjczNTQsIDU1MTQsIDAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIDk4MTEsIDEwMDEyLCAKKyAgICAzMDk2LCAwLCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCA5NTAxLCA5MTc5NTksIDEyNzIsIDY0NTM2LCAKKyAgICA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgMTIwMjcwLCA5MTc4MTIsIDAsIAorICAgIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIDk4MzM1MywgMTk5MzUsIDEyMDczMywgOTIxNjIsIDY5Njc2LCAwLCAKKyAgICA5MTc4MTEsIDkzMDU3LCA1Mjc1LCAxOTQ1OTYsIDEyODYzMiwgODYzNywgMTI5MDgyLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIAorICAgIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgCisgICAgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCAKKyAgICA0MTY0NiwgMTE2NjcsIDQyNjg2LCA3Nzk3MywgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAwLCAKKyAgICAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIDAsIDk0MDU2LCAxMTE3NCwgCisgICAgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgCisgICAgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMCwgNDE2OTksIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDAsIAorICAgIDEyODQ5NCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgMCwgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCAKKyAgICAxMjY1MTEsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIAorICAgIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgCisgICAgODAwMywgNzQwNiwgMTI3MzUzLCAwLCAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCAKKyAgICA0NjgyLCA3MTg3MywgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIAorICAgIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCAKKyAgICA3MTA3NSwgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCAKKyAgICA2NDk1MSwgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDAsIAorICAgIDIzMzcsIDE3MzUsIDc0MzI0LCAxMTEzNCwgMjM2MywgMTI1MDYxLCA5MjQ0MywgNDM1NjEsIDY3NzA2LCAxMjgwMzIsIAorICAgIDc0MTQ2LCAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgNzg3NTMsIDEyMDM0NywgCisgICAgNzcyNywgMCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCAKKyAgICA3NjkwLCAwLCAxMjUzMywgOTgzODc5LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMCwgNzQ4MDAsIDcxMDUxLCA2Nzk3NCwgCisgICAgMTE5ODAsIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCAKKyAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMCwgOTQwNjksIAorICAgIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCA5ODM0NDcsIDc0NjM5LCAxMjc5MCwgCisgICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKKyAgICA0MTMxMCwgMTIwNzMwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgCisgICAgMjk3NCwgOTAxMCwgMTEzMTUsIDAsIDI3OCwgMCwgNDE0MDUsIDQzODcxLCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCAKKyAgICA0MjU4NiwgMCwgMCwgNjAwMiwgNjczMzUsIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAxMjc4NywgNDEzMDgsIDc5MzQsIAorICAgIDY1MzA2LCAwLCAxMjg0MjEsIDAsIDg2NDYsIDk4MzE4NiwgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIAorICAgIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIDEwMDQ0LCAxMjgzMjIsIDEyODEyMSwgOTgzODE2LCAKKyAgICA2ODI5MCwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDAsIDAsIDEwMjk3LCAwLCAzNzQyLCAKKyAgICA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2OTczOSwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDAsIAorICAgIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKKyAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIAorICAgIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCA2NzM0NCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgCisgICAgNDE3MTYsIDEyODIzNiwgNjczNTIsIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgCisgICAgMTIwNDUsIDYyNzgsIDc0NjMyLCA1NTE1LCAwLCAwLCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgCisgICAgNzAxMTYsIDc0MjI1LCA3NDg0MSwgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCAKKyAgICA2Nzg4MywgMCwgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIAorICAgIDEyMzY4LCA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgCisgICAgOTg5LCA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKKyAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCA5ODM2MTUsIDk0OSwgNzc4ODIsIDAsIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgCisgICAgNjY5MDYsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIDY1MzAsIDAsIDY1MDU3LCA3MDQ5MywgCisgICAgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgOTgzNzI5LCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAwLCAKKyAgICAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCA3ODE2NSwgNjYwMzYsIDcwMTY2LCAxMjQ5MzUsIDY0MjgsIAorICAgIDQyMjcwLCAwLCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCAKKyAgICA5ODM5NjgsIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAwLCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgOTgzODU0LCAKKyAgICAxMTk2MzIsIDcwNDI3LCA2NTYwLCA3MDE2LCA3NDI3NCwgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgCisgICAgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAKKyAgICAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIDQzODQ1LCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIAorICAgIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDAsIDk4MzYwNywgNjY5MTUsIAorICAgIDEyODQwMiwgNDA0MSwgMCwgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDQzODM0LCAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAKKyAgICAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgNzc3MCwgCisgICAgMTA3MTIsIDY0ODUzLCAxMjY4NiwgNDM4MzEsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgMTEwNTksIAorICAgIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCisgICAgNzgyODQsIDY2MzM4LCA2NjM5NSwgMCwgMTgzOSwgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIDIzODgsIAorICAgIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA4OTUsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgOTI0OTMsIAorICAgIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgMCwgNjU4MTIsIAorICAgIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgMTk0ODA1LCAKKyAgICAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgMTI5MTcxLCAKKyAgICAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgCisgICAgNzEzMzEsIDEyODAwNiwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgCisgICAgMTAyNTgsIDI3MTIsIDE2MzUsIDcxMDY0LCAxNDEwLCA3ODc2MywgOTgzMjUwLCAxMTg4NzgsIDAsIDEyODcxNSwgOTkxOSwgCisgICAgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIAorICAgIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAKKyAgICA5MzA2MywgMTAyMjMsIDQyMDYyLCAwLCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIDQzNTYwLCAxMjIyNiwgNjc5OTEsIAorICAgIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgCisgICAgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIDAsIDQyNzE0LCA5OTUxLCA0MzQwOSwgCiAgICAgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCA0MTgyMCwgMjMwMCwgMjM5NSwgCi0gICAgMTI4NTYzLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCA0MjgwOSwgNDI4MDcsIDAsIAotICAgIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIDQxODk4LCAyMzYwLCA0MTc5NCwgCi0gICAgOTE3OTQyLCA3MTMxNCwgMTI3ODE4LCAwLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAKKyAgICAxMjAwNjEsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgNDI4MDksIDQyODA3LCA3MDc5OCwgCisgICAgNjYyOTAsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgMjM2MCwgNDE3OTQsIAorICAgIDkxNzk0MiwgNzA3OTYsIDkyMTYzLCA5MzAzMywgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgCiAgICAgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCAKLSAgICA5MjIwMywgMCwgMTAzODQsIDk4MzIyMCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCA3Nzg3MiwgCi0gICAgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAKLSAgICAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgNzQxNDUsIAotICAgIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIDQ4NjIsIAotICAgIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAKLSAgICAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIDQyNzI0LCAwLCAKLSAgICA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4MzkwOCwgMTIwMTYzLCA2NTI4LCAKLSAgICAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgNzgxNjcsIAotICAgIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgNzM5MDIsIAotICAgIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIAotICAgIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgMTI4MDExLCAwLCAKLSAgICA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjgsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCA2NjY3NCwgCi0gICAgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMCwgCi0gICAgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIDkxNzk0NSwgCi0gICAgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI4NTU3LCAKKyAgICA3ODY4NiwgMCwgMTAzODQsIDk4MzIyMCwgMCwgMTI5MTExLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIAorICAgIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMTI4OTY5LCA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCAKKyAgICA1NDQxLCA0MTg5NiwgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIAorICAgIDEwMDk4LCAwLCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgMCwgCisgICAgMCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgCisgICAgMTI5NjEsIDAsIDAsIDkyMjUzLCAwLCAyODksIDEyODcxNCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCAKKyAgICA0NjkzLCA3Mzg5MywgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIAorICAgIDM1NjUsIDEyMDE2MywgNjUyOCwgMTI3NTUzLCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCAKKyAgICA5ODMxNjgsIDQzMjI1LCA0NjAyLCA5MTc5ODIsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMCwgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCisgICAgODg4OCwgOTI3MjQsIDc0ODEyLCA2OTcwOSwgMCwgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTI3NzkzLCAwLCA5OTc1LCAKKyAgICAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCA2Nzk4NywgCisgICAgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIDAsIDY2MiwgCisgICAgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDk4MzQyOCwgMCwgMCwgMCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgCisgICAgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAwLCAKKyAgICAxMjAzNDEsIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIAorICAgIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgMTIyODEsIDAsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyODU1NywgCiAgICAgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIAogICAgIDE5NDg1OSwgNjQzOTQsIDU3ODEsIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgCi0gICAgNzgyMDMsIDEyNzgwOCwgMCwgOTIyNjYsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3NDE5MSwgMTIwNDEwLCAKKyAgICA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDcxOTA3LCAxMjA0MTAsIAogICAgIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAKLSAgICAwLCA2Mzk0MCwgMTI4NzA2LCA2NDUzMywgMTIwMTI5LCAwLCA2Nzg0MiwgMTE5OTAsIDkyNDMwLCA2MzkzOSwgNDMzNzUsIAotICAgIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDk4MzkxMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAKLSAgICA5ODMzNjEsIDc0Mjk0LCA5ODM5MTQsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgOTI1NzQsIAotICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIAotICAgIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIAorICAgIDEyODkxMywgNjM5NDAsIDEyNzExOCwgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAxMTk5MCwgOTI0MDUsIDYzOTM5LCAKKyAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgCisgICAgOTgzMzYxLCA3NDI5NCwgOTgzOTE0LCA2OTIzOSwgMCwgNjc4NzEsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIAorICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgCisgICAgMCwgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgNzEwNTMsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCAKICAgICA4NDE3LCA0Mzc5OCwgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCi0gICAgMTIzMjAsIDAsIDAsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgCi0gICAgMCwgMCwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAKLSAgICAxMjA0MzIsIDAsIDAsIDAsIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIAotICAgIDAsIDE5NDk0OCwgMCwgMCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgCi0gICAgMTI2MjQsIDAsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAKLSAgICAxMTk1OTgsIDk4MjAsIDAsIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDAsIDAsIDAsIDAsIAotICAgIDc0ODI2LCA2NDczMywgMCwgMCwgMzQ5MSwgMCwgMCwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgMCwgNzQ5MiwgMCwgNzQ2MDUsIAotICAgIDkyNDgzLCA3NTE0LCA5ODMzNjcsIDAsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAKLSAgICAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDkzOTkxLCAKLSAgICAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgCi0gICAgNTI1MywgNzAwMjUsIDU0NTgsIDAsIDI4NjYsIDAsIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIAotICAgIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCAKLSAgICA2MzgyNiwgNjc5NzAsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgOTgzNjg3LCAyODQ0LCA5ODM5NDEsIDQxOTc0LCAwLCAKLSAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjMzLCAKLSAgICA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTgzMDcwLCAwLCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgCi0gICAgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIDY1OTAzLCAKLSAgICAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCAKLSAgICA3NzkzMiwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgCi0gICAgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDExOTg5OSwgCi0gICAgNjY1ODcsIDE5NTA5OCwgMCwgOTI0MDEsIDk4Mzg5NCwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgMCwgCi0gICAgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAotICAgIDQzMTkzLCAxMDczNywgMzQ2MywgOTgzMDY1LCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCAKLSAgICA3MDQ5LCAxMTk5MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDAsIDAsIDAsIDEyODA0MSwgMCwgOTIzODUsIDEyNjIsIDAsIAotICAgIDY1NjEsIDE5OTM5LCAwLCAwLCAxMjg1MzUsIDExOTkwNiwgMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgCi0gICAgNjQ2MTIsIDExOTkxLCAwLCAwLCAwLCAxNTAyLCA5MTc1NjgsIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIAotICAgIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCAKLSAgICA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgCi0gICAgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgCi0gICAgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIAotICAgIDEyNjU1NSwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIAotICAgIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDExOTYzOCwgMCwgMTMxNTYsIDAsIDEwODMyLCA1MDkzLCAKLSAgICAwLCA2OTg1MiwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCAKKyAgICAxMjMyMCwgMCwgMTI1MDAyLCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIDAsIDExODc5OCwgCisgICAgMTI5MSwgNzQ4MjgsIDAsIDAsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgMCwgNjU0ODcsIAorICAgIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAwLCA5MzA2NiwgMCwgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgCisgICAgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgMCwgMTk0OTQ4LCAwLCAwLCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgCisgICAgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCA3MDc4OCwgMTMyMCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIAorICAgIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgCisgICAgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIDAsIDEyNTExMiwgMCwgNzQ4MjYsIDY0NzMzLCAwLCAKKyAgICAxMjc4OTgsIDM0OTEsIDY3MTQ2LCA5ODM3MTAsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAwLCA3NDYwNSwgCisgICAgOTI0ODMsIDc1MTQsIDk4MzM2NywgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDAsIDYzOTI1LCAwLCAKKyAgICA3NjEwLCAyMTksIDAsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAKKyAgICAwLCA5Mzk5MSwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgMCwgOTIzMDEsIDAsIAorICAgIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCAwLCAyODY2LCAxMjkwNDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCA2NzAwLCAKKyAgICAxMjA0ODQsIDAsIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIDYzOTk3LCAKKyAgICA5NjA0LCA3ODcwMCwgNzQ0MSwgNjM4MjYsIDY3OTcwLCAxMTg5NDEsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAyODQ0LCAKKyAgICA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIAorICAgIDE5NDc2NSwgOTgzMjMzLCA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTI5NjMsIDAsIDMyNjgsIAorICAgIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAxMjg1NzIsIDEwMjQwLCA2NjI4NSwgCisgICAgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIAorICAgIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCA3NzkzMiwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCAKKyAgICAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAKKyAgICAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDExOTg5OSwgNjY1ODcsIDEyNDk4NywgMCwgOTI0MDEsIDk4Mzg5NCwgMTEwMDYsIAorICAgIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgMTI3ODY5LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTEzNzYyLCAKKyAgICA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCA5ODMwNjUsIDAsIDY2NjMzLCAKKyAgICA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgCisgICAgOTI5MzksIDAsIDAsIDEyODA0MSwgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAwLCAwLCAKKyAgICAxMjg1MzUsIDExOTkwNiwgMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAwLCAwLCAKKyAgICA5Mjk0MywgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIAorICAgIDcxMjIzLCAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAKKyAgICAxMDc5NiwgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIAorICAgIDcwODA0LCA0Nzk4LCAwLCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCAKKyAgICAwLCA2ODYyNiwgODk0LCAzMDAsIDkxNzgxMywgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAxOTUwNTYsIDI1NjIsIDcwMTU2LCAKKyAgICAwLCA0MjUwMywgMTI4ODY0LCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAKKyAgICAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCA3MDg3MywgMCwgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDAsIAorICAgIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCAKICAgICA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDEyNzM3MSwgNDI4ODEsIDAsIAotICAgIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIDAsIDAsIDE5NDc4OSwgMCwgOTA3NCwgNDM0OCwgCi0gICAgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDAsIDAsIDAsIDc0NDIzLCA3MTM0NSwgNTg2LCAKLSAgICA3NDQxNCwgNjQzNTksIDEyNjcsIDEyODI2OSwgNjU0NjgsIDAsIDY1NzMxLCAwLCAxMjcxNzksIDM2MjEsIDEyMDQ3MywgCi0gICAgNjY2NjYsIDY0MjExLCAwLCA2NTYyLCAxMjkyOCwgMCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAwLCAwLCAxNzE0LCAKLSAgICA3NDQwNiwgMTI3ODMxLCAwLCA5ODM5MjEsIDAsIDY2MjI1LCAwLCAwLCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIAotICAgIDAsIDEwMjkxLCAxMDMyMywgMjgyNiwgMCwgMCwgMCwgNDIwMDgsIDk3MDgsIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIAotICAgIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDAsIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAKLSAgICAxNzY1LCAwLCAwLCA2NTU4OCwgMCwgMCwgMCwgODQwMSwgMCwgNDIwMTQsIDAsIDcwMzAsIDE5NDcwNCwgMTA0NzksIAotICAgIDY0OTU5LCAyODUyLCAwLCAwLCAwLCAwLCAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgCi0gICAgMTAxNDcsIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMCwgMCwgMCwgNzg3NTcsIDAsIDAsIDAsIDAsIDk5OTQsIDEyNDY3LCAKLSAgICAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgMCwgNDMzODIsIDAsIDEyMDcxOSwgCi0gICAgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAwLCAwLCA3Nzk4OCwgMjYzLCAKLSAgICAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NywgOTgzNzQyLCA3Nzk4NiwgMCwgNjkzMSwgNjk3MjIsIDY0MzU1LCAKLSAgICA3MTc3LCA3MDEwNSwgMCwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgMTI2NTc1LCA2ODA2LCA2OTkyLCAKLSAgICA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCA3MTMwMCwgNzAzMiwgNTk1NCwgCi0gICAgNjQ5MzEsIDQzMTQsIDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgNzc5OTMsIDc4ODkxLCAxMzE2NSwgCi0gICAgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjg3ODQsIDQxMzc4LCAxMTAwOCwgNjkzOCwgNzAwMjYsIAotICAgIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCAwLCAwLCAwLCAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIDY2MDQ1LCAKLSAgICA0MTQ3MCwgNjQ4MDUsIDAsIDAsIDEyODIxNSwgNjQ4MDEsIDAsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCAKLSAgICA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgNTk1MiwgMTI4MSwgNDM3NDcsIDAsIDAsIDEwNjc3LCA2MDQsIAotICAgIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA5MjYwMywgMzQyNSwgMTI3NDg4LCAwLCAyODM2LCAwLCAwLCA5NzA3LCAwLCA0MzIwMiwgCi0gICAgMCwgMCwgNjUxOTksIDE3MzgsIDkxNzgxOCwgMTI4MTU4LCAyODMyLCA5MjcwMiwgOTY3MCwgMTI5MzcsIDAsIDY2Mzc0LCAKLSAgICA5MTc5NTYsIDAsIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgOTgzNzIzLCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAKLSAgICAxMzMxLCAwLCAwLCAwLCAxMjcwOCwgMCwgNTA5MCwgNTA4OSwgMTI3OTc3LCAwLCAxMTkxMDksIDAsIDEyODY4MSwgMzE5LCAKLSAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCA5MjMyNSwgNzY0MCwgOTYsIDUwODYsIDAsIDkyMzc5LCAwLCAKLSAgICA1MDg1LCA2NDI4NiwgOTI2NjUsIDAsIDQxNDIyLCAwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAwLCAwLCA1MDExLCAwLCAwLCAKLSAgICAxMjY1ODcsIDAsIDEyNzE2NSwgMTI3MjQxLCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAwLCAKLSAgICAxMTg5MjMsIDcwMDg0LCAwLCAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIDcxMzQzLCA0NTM0LCA0MTI3MCwgCi0gICAgMTI4ODc2LCAwLCA2NTU3NCwgMCwgOTIyNCwgNjk4NTMsIDM2NzEsIDg5NzYsIDEyNjQ3NCwgMCwgNDEyNzUsIDYzNzIsIAotICAgIDEyODA4NCwgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgMCwgNDEyNzMsIDk4MzczMCwgMCwgNjcyOCwgMCwgOTcxNSwgMCwgCi0gICAgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAxMTg5MTksIDQyLCAwLCA0MzY4OCwgMCwgMCwgNzQ1OCwgMCwgMCwgCi0gICAgNjUzODUsIDExOTkwMCwgMCwgMTE5NTgsIDAsIDkxNzgyMiwgMCwgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgCi0gICAgMCwgMCwgOTgzNTk3LCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgMTMxMDksIDAsIDk0NjcsIAotICAgIDU1NTgsIDg4NzgsIDEyODEzNiwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDAsIDY0NTg0LCAKLSAgICA3NDM3LCA3NDU0LCAxMjU5NCwgMTI4NjkwLCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAwLCAzODA1LCAKLSAgICAwLCAxOTQ1NjUsIDQ0MDAxLCA0MTAwOCwgMCwgNjMwNywgMTk5NDksIDk4Mzc5MCwgNzU0NCwgOTgzMDQ1LCA0MzQ2OSwgMCwgCi0gICAgMCwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgMTE5MTEzLCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgCi0gICAgNDM1MjMsIDQxNDQ3LCA1NTU5LCAwLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAwLCA5MDExLCA5NjMwLCA5MjYzMywgMCwgCi0gICAgOTM5OTgsIDU1MDYsIDAsIDE5MTEsIDY2NjUyLCAwLCA5OTYxLCA4ODQ1LCA2NjY5OCwgMCwgMTA3OTIsIDg4ODksIDAsIAotICAgIDIwOTgsIDAsIDY0NzUxLCAwLCA2NjYyMiwgMCwgMCwgNzQzNjQsIDAsIDAsIDk4MzgwNSwgNzQzNjUsIDc1NTIsIDAsIDAsIAotICAgIDY1Mzg0LCA3MjIzLCA0NTU5LCAwLCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDY0NTAxLCAxMjEwLCAxOTUwNzcsIAotICAgIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCAwLCAwLCAzOCwgODUzMywgNjY2NjksIDExOTEyNCwgOTgzMjkzLCAKKyAgICA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAxMjg4MDksIDAsIDEyNzk0NywgNzA4MjEsIAorICAgIDkwNzQsIDQzNDgsIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAwLCAwLCAwLCA3NDQyMywgCisgICAgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAwLCA2NTczMSwgMCwgNzI0MDUsIDM2MjEsIAorICAgIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCA5ODM4OTEsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMCwgCisgICAgNzAzNDMsIDE3MTQsIDc0NDA2LCAxMjA3NTEsIDAsIDk4MzkyMSwgMCwgNjYyMjUsIDEyODYwOCwgNzA4NjcsIDQyNjYwLCAKKyAgICAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMTM4MDksIDkxNzYyOSwgMCwgNDIwMDgsIAorICAgIDk3MDgsIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIAorICAgIDYyODYsIDk2ODksIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCAwLCAwLCA2NTU4OCwgMCwgMCwgMCwgODQwMSwgCisgICAgOTgzOTI0LCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDcwODE5LCAKKyAgICAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIDEyOTM1LCAxMjc1NjgsIAorICAgIDEyNjQ4MywgMTI3NzgyLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjg5NjgsIDAsIDk5OTQsIDEyNDY3LCAyODY0LCAKKyAgICA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAwLCAxMjA3MTksIAorICAgIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAwLCA3Nzk4OCwgCisgICAgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NywgOTgzNzQyLCA3Nzk4NiwgMTI5MTQwLCA2OTMxLCA2OTcyMiwgCisgICAgNjQzNTUsIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIAorICAgIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCAKKyAgICA1OTU0LCA2NDkzMSwgNDMxNCwgMTI4NjAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3MDgxOCwgCisgICAgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIAorICAgIDcwMDI2LCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAzODkyLCA2ODYzMiwgCisgICAgNjk2NDIsIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAKKyAgICAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCAKKyAgICA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIAorICAgIDI4MzYsIDAsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCAKKyAgICA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDAsIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgCisgICAgOTgzMDgxLCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAwLCAxMjcwOCwgOTE3OTU0LCA1MDkwLCA1MDg5LCAKKyAgICAxMjc5NzcsIDk4MzU2MSwgMTE5MTA5LCAwLCA3MDgyNiwgMzE5LCAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCAKKyAgICA5MjMyNSwgNzY0MCwgOTYsIDUwODYsIDAsIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIAorICAgIDExOTYxNywgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMTE5MDQyLCAwLCA1MDExLCAwLCAwLCAxMjY1ODcsIDAsIDEyNzE2NSwgCisgICAgMTI3MjQxLCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAwLCA3MDc5OSwgNzAwODQsIDAsIAorICAgIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgCisgICAgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCAxMjgwODQsIDU1MjYxLCAKKyAgICA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCA0MTI3MywgOTgzNzMwLCA3NDUzMSwgNjcyOCwgMCwgOTcxNSwgMCwgODI1OCwgCisgICAgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCAKKyAgICA2NTM4NSwgNjcxMzUsIDY3MTM0LCAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIAorICAgIDgwNDUsIDExNTUwLCAwLCA2NzEzMiwgNjcxMzEsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAKKyAgICAxMzEwOSwgMCwgOTQ2NywgNTU1OCwgODg3OCwgNDM4NDQsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIAorICAgIDY0NTY2LCAwLCA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIAorICAgIDc0MjQzLCAxMjUwOTIsIDM4MDUsIDAsIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCAKKyAgICA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIDAsIAorICAgIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIAorICAgIDAsIDAsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgOTk2MSwgCisgICAgODg0NSwgNjY2OTgsIDY4MzI1LCAxMDc5MiwgODg4OSwgMCwgMjA5OCwgMCwgNjQ3NTEsIDEyODM2MCwgNjY2MjIsIAorICAgIDk4MzEyMiwgMCwgNzQzNjQsIDExMzcwOCwgMTI5MTUyLCA5ODM4MDUsIDQyOTA5LCA3NTUyLCAxMjg2MjIsIDAsIDY1Mzg0LCAKKyAgICA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgMTk1MDc3LCA2NTE3NSwgCisgICAgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMTI1MDQ1LCAzOCwgODUzMywgNjY2NjksIDExOTEyNCwgOTgzMjkzLCAKICAgICA5ODM3OTIsIDAsIDQzNTcsIDAsIDExOTgzNywgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIDQyODYwLCAxMTk4MzgsIAotICAgIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIAotICAgIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjY1ODMsIAotICAgIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCA0MzgxOSwgOTgzNzcwLCAwLCA2NDcxNCwgMCwgMCwgMTIxNjIsIAotICAgIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIDY2MjI4LCAxMDU2MywgMCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgCi0gICAgMCwgMTgzNywgMCwgNjM5NzIsIDY5NTcsIDAsIDEyMDU1OSwgNDk1MiwgNjU3MTgsIDY1ODI3LCA1NTA0LCA2NTcyMCwgCi0gICAgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMCwgMTI3MDA1LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMCwgODEwNywgCi0gICAgMTE5MjM0LCAxMTI3LCA0NTUsIDAsIDYzOTY4LCAxMjc5MjQsIDM0ODMsIDExOTU5MywgMTk4OSwgMCwgNjk2NzgsIDkxMDQsIAotICAgIDM1MDMsIDY1Mzc1LCA5MjUwOSwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMCwgCi0gICAgNzQwNjQsIDAsIDEwNTIxLCAwLCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCi0gICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyODgzOSwgMTM0NywgOTYzMSwgCi0gICAgNzQ0NDQsIDAsIDAsIDAsIDAsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgMCwgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAKLSAgICAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAxMDg2MSwgMCwgNjM5NzYsIDAsIDY4NjIzLCAwLCA3NDU4NSwgCi0gICAgNDEzOTEsIDAsIDkxNzkwMywgMzc2LCA2OTg3LCA5MjIxLCAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgCi0gICAgNDE4NjksIDEyNjE5LCAwLCAxMDE1NCwgOTgzMDQzLCA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCAKLSAgICA0NTgsIDEyMDYyMCwgMCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDk4MzEzMywgCi0gICAgMTIyODgsIDc4MDU3LCAwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIAotICAgIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCAwLCA5ODM0MzEsIDAsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDEyODE5MiwgCi0gICAgNDEyNzcsIDY0NjU4LCAwLCA2NDM4MCwgNjYyNSwgNzQzNTQsIDE5OTA0LCAwLCAwLCAwLCA2NTM3MSwgNzA3OCwgMCwgODMzLCAKLSAgICAwLCA2MzY5LCAwLCAxMDk3OSwgNDE5NTMsIDAsIDQxNDM0LCA2MDYyLCAwLCAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCAKLSAgICA5ODQyLCA2NzIwLCA2NTc0NCwgMCwgOTgzNTkyLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIAotICAgIDc0OTMsIDU1MjkwLCAwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIAotICAgIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDAsIDAsIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAKLSAgICAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgMCwgMCwgNjk1NiwgNDQwMywgCi0gICAgMTk5NjIsIDY1NTU5LCAzMjk5LCAwLCA5MTc1NjYsIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCAKLSAgICA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDAsIDYzOTUyLCAKLSAgICA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgMTE4ODk0LCAwLCA2OTc5NiwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIAotICAgIDY4NCwgNDM1MjUsIDAsIDI4NTQsIDExOTU4NiwgNDU5MiwgNjU3NTUsIDAsIDkyMjU2LCAxMTk2MywgNDM2MjAsIDAsIAotICAgIDc4MjQ5LCAwLCAxMjg1NTEsIDEyODgwOSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCAxMTkxMzEsIDAsIDg2NDgsIDAsIAotICAgIDY3NDEsIDQzMDQ3LCAwLCAxMzE4MCwgMTI4NTE3LCA0MTgsIDkxNzk3MiwgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIAotICAgIDQxNzUyLCA3NDMzOSwgODY0MSwgNDE0NDksIDAsIDc0MTAwLCAwLCAxMDkxMSwgNjk0MiwgMCwgMTAyNCwgNDI4NDksIAotICAgIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCA0NTU0LCAwLCA5MDIzLCAxMTY4NSwgMCwgOTkyOCwgNzg2MTcsIDAsIAotICAgIDExNDM3LCA0Mzc0MSwgOTIxNjMsIDEyMDcwMCwgNjM5NjcsIDk4MzQ4MywgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIAotICAgIDQzMTY2LCAwLCAxMTY4MCwgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgCi0gICAgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIAotICAgIDEyMDUwLCA2ODIwMSwgMjg2MCwgMCwgMCwgMCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDAsIDkyMzQyLCAKLSAgICAwLCA4ODc1LCAwLCAwLCA5MTc5OTEsIDc1MzEsIDEyODQ3LCAyNDEzLCAwLCA3ODYzNSwgOTYyLCAwLCAxMjg1NSwgNDExOTYsIAotICAgIDQyNTY0LCAwLCAxNTgyLCA5ODM3MTUsIDU1MDgsIDAsIDAsIDAsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDAsIDcxNzMsIDQ5NiwgCi0gICAgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgMCwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCAKLSAgICA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgMTE1MywgOTIxNzMsIDY0Nzg4LCAwLCA4MDU0LCA5MTc0LCAxMjg2NTIsIAotICAgIDkxNzk3NiwgOTk2NCwgNzQ0MDksIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDkxNzk4MiwgMCwgNzg4NTcsIDQyMDg5LCAKLSAgICA3ODg1NSwgOTAwOCwgMCwgMTI2NTkyLCAxOTUwOTYsIDQyMDc5LCA5MTc5ODEsIDc3OTI0LCA0MjUxMywgNzc5MjcsIAotICAgIDQyODQyLCA3Mzk4NSwgNjUyODUsIDExODk3NCwgMTI3MDAzLCA5ODM3MDIsIDAsIDAsIDAsIDExMzM1LCA2NDA2OSwgCi0gICAgNDIwOTMsIDM5MjAsIDAsIDAsIDAsIDAsIDQ1ODAsIDQxOTY3LCA5ODM3MzIsIDY0Mzg0LCA5MjE2NywgOTM5ODQsIDMwMjEsIAotICAgIDQyMDA0LCAwLCAwLCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDAsIDAsIDAsIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCAKLSAgICA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAxMjc4ODAsIDY4Mzk5LCA0Mzk5OCwgCi0gICAgMTEzNjAsIDAsIDAsIDAsIDExODgyNiwgNDIxNDksIDAsIDAsIDAsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDAsIAotICAgIDU1MjQ3LCA0MTEwLCA2NjAwNSwgNjk1OSwgMTA5MjksIDExOTExMCwgMCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgCi0gICAgNjAyNSwgNjkyNDIsIDk4MzE3NiwgMCwgMCwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzYsIDEwMTE3LCA5ODMxNjksIAotICAgIDkyMjk3LCA0MTYzNiwgMCwgMCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDAsIDY1NjY5LCAxMjgzMzksIDQ5NjMsIDAsIAotICAgIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAotICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMTE5MTE0LCA2NTg4MiwgNzg4NDksIAotICAgIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIAotICAgIDczODM1LCA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgCi0gICAgNzg2NywgNjkyMTgsIDYyMzYsIDk4MzEzNCwgMCwgMTA1MDUsIDAsIDEyODUxLCAxMTg5NDgsIDM0OCwgNTQ3NCwgMTI4ODQzLCAKLSAgICAzMTAzLCAwLCA0MTc1MywgMTI4NTQwLCAwLCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCAKLSAgICA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAKLSAgICAyNjkxLCAwLCA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCAKLSAgICA0MTI1MSwgMCwgMCwgMzk3OSwgMCwgMCwgNzQ4MTMsIDk4MzczOSwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCA2NjU2NiwgCi0gICAgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCA5NTc0LCAyNjY2LCAwLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAKLSAgICAxMDcxNiwgMCwgNDI4MjIsIDAsIDY0MzQsIDAsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCAKLSAgICA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgCi0gICAgMTI2NTM3LCA0NDk3LCAzNzU0LCAxMjcwNTYsIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAKLSAgICAwLCAwLCA3NDI2MCwgMCwgNDI4NTQsIDQzMjE5LCAxMjg3MDksIDk4MzQ2MCwgMTIxODUsIDEyODg3OSwgNzAwNzIsIAotICAgIDY4MzU1LCA2ODM1NywgMCwgNDI4NTYsIDg2MzQsIDAsIDk4MzM5NywgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIAotICAgIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAwLCA5ODM0NjQsIDU2NzgsIDExODIxLCAwLCAKLSAgICA2NzExLCA0NjAsIDAsIDAsIDk4MzQ2MSwgMCwgMTIwNzQ3LCAwLCAwLCA3ODA1MCwgMTE5MDIyLCAwLCA5ODM0NjIsIDAsIAotICAgIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjgwNzksIAotICAgIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTgzMzkyLCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgCi0gICAgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCAxMjg1MTIsIDY5NzY4LCAxNDQ5LCAKLSAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCisgICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCA1MDEzLCA5MjY2MywgMTI2NTgzLCAKKyAgICA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgMTExOTMsIDk4Mzc3MCwgMCwgNjQ3MTQsIDAsIDcwODAyLCAxMjE2MiwgCisgICAgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgCisgICAgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCAKKyAgICA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMCwgMTI3MDA1LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgCisgICAgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3ODM1LCAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIAorICAgIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIAorICAgIDI1NDAsIDc3MzYsIDkxNzkxNiwgNzQwNjQsIDEyODYwMSwgMTA1MjEsIDcwNzg2LCA0MjE3MywgOTcwNSwgNzQxMjQsIAorICAgIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAKKyAgICAxMjc4NjIsIDE0MDMsIDEyNTA1MywgMTM0NywgOTYzMSwgNzQ0NDQsIDk4Mzc1MywgMCwgOTI5NTEsIDAsIDg2NDAsIDAsIAorICAgIDI1OCwgMTY1NCwgMCwgMCwgMCwgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCAKKyAgICA4NTQ5LCAxMDg2MSwgMTI4NDMwLCA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgCisgICAgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIAorICAgIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCAKKyAgICAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAxMjI4OCwgNzgwNTcsIAorICAgIDY3MDgwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIAorICAgIDgwNTksIDc1MDgsIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDAsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDEyODE5MiwgCisgICAgNDEyNzcsIDY0NjU4LCAwLCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAwLCA3MTE5MywgNjUzNzEsIDcwNzgsIDAsIAorICAgIDgzMywgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgCisgICAgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDcxMjAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCAKKyAgICA0MTYzMiwgNzQ5MywgNTUyOTAsIDkyODkwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIAorICAgIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDExOTYzOCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgCisgICAgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCAKKyAgICA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIAorICAgIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgCisgICAgNDMwNzcsIDYzOTUyLCA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgMTE4ODk0LCA5ODM3NTAsIDY1MDY1LCA0MTE4MywgCisgICAgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgOTgzMjc2LCAKKyAgICA2NzEyMCwgMTE5NjMsIDQzNjIwLCA2NzExNywgNzgyNDksIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCAKKyAgICA2NTc1NywgMzQxNSwgNjk2NzcsIDY3MTE2LCA4NjQ4LCAxMjgzNzcsIDY3NDEsIDQzMDQ3LCA5MTc5NzAsIDEzMTgwLCAKKyAgICA3ODA3NywgNDE4LCAxMjA2NTMsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIAorICAgIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIAorICAgIDk4MzU1NiwgNDU1NCwgNjY4OTIsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgCisgICAgNjcxMTMsIDY3MTEyLCA2Mzk2NywgOTgzNDgzLCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMCwgODE1OSwgCisgICAgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgNjQ1MjMsIAorICAgIDEwMzQzLCAxMDQwNywgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIDEyMDUwLCA2ODIwMSwgCisgICAgMjg2MCwgMCwgMCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgNjcxMDMsIAorICAgIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDExODkxNywgNjc0MDQsIDk2MiwgMCwgMTI4NTUsIAorICAgIDQxMTk2LCA0MjU2NCwgMCwgMTU4MiwgOTgzNzE1LCA1NTA4LCAwLCAwLCAwLCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAKKyAgICAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgMCwgOTA2LCA0Mjc5MywgMjg0MiwgCisgICAgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgMTE1MywgOTIxNzMsIDY0Nzg4LCAxMjcwMDcsIAorICAgIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAKKyAgICAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIAorICAgIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgNjgzMzgsIDEyNzAwMywgOTgzNzAyLCAwLCAxOTQ3NjEsIAorICAgIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgMCwgMCwgMTExMTAsIDAsIDQ1ODAsIDQxOTY3LCAxMjkwNDMsIAorICAgIDY0Mzg0LCA5MjE2NywgOTM5ODQsIDMwMjEsIDQyMDA0LCAwLCA5ODMzNzIsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgCisgICAgMTk0NzU1LCA5Mjk2NywgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIAorICAgIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAxMTM2MCwgMCwgNzQxODIsIDEyODY0OCwgCisgICAgOTI2MzMsIDQyMTQ5LCAwLCA2ODUwOCwgOTE3OTkzLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCAwLCA1NTI0NywgCisgICAgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCA0MjkwNywgMCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgNjAyNSwgCisgICAgNjkyNDIsIDk4MzE3NiwgMTk0ODU0LCAxMjUxMzksIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc2LCAxMDExNywgCisgICAgOTgzMTY5LCA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIAorICAgIDY1NjY5LCAxMjgzMzksIDQ5NjMsIDAsIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDAsIDQxOTQ4LCAxMjUwMDMsIAorICAgIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIAorICAgIDQxNzY2LCAxMTkxMTQsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCAKKyAgICA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDAsIDM5ODAsIDcwMzczLCA0MjY1NiwgNDE1MDcsIDg4MDYsIAorICAgIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgNjkyMTgsIDYyMzYsIDk4MzEzNCwgMCwgMTA1MDUsIDEyOTEzNSwgCisgICAgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIDMxMDMsIDAsIDQxNzUzLCA3MTEwOSwgMTI4NjA0LCAwLCAKKyAgICA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCAKKyAgICA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA5Mjk0MSwgNjU1NTMsIDc5MzMsIDU1NjIsIAorICAgIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDAsIDAsIDM5NzksIDcxMjQ4LCAwLCAKKyAgICA2ODMzMSwgOTE3OTEyLCAwLCAwLCAwLCA3NDYzMywgNDEyNjYsIDAsIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgCisgICAgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgCisgICAgNzQ4NTcsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCAKKyAgICA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCAxMjcwNTYsIAorICAgIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAwLCAwLCA3NDI2MCwgNzQ4NjAsIDQyODU0LCAKKyAgICA0MzIxOSwgMTI4NzA5LCAxMjkwODMsIDEyMTg1LCAxMTM4MTAsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIDY4NDIxLCA0Mjg1NiwgCisgICAgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCAxMjA3MDIsIDc4MDQ2LCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAxMjc1NDMsIDY2OSwgCisgICAgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAwLCA3MDQ0NSwgNTY3OCwgMTE4MjEsIDAsIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDYxLCAKKyAgICA3MDExNCwgMTIwNzQ3LCAwLCAxMjg0MTIsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ2MiwgOTgzMTc0LCA3NzgyLCA5MDQ0LCAKKyAgICA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI3MDE3LCA1NzkyLCAwLCAxMjgzMTksIAorICAgIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTE3ODk2LCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgMTIwMzk4LCAKKyAgICA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgNjk3NjgsIDE0NDksIDEwMjQxLCAKKyAgICA3ODI5MCwgMTE5NTg3LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCA4NTg0LCA2ODAzMCwgNTU2NywgCiAgICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTgzMjU2LCAxMjgwMjYsIDAsIDY1NzA4LCAKICAgICA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAotICAgIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAwLCA2NjU5OCwgMCwgNjQ2NjQsIDEwNjQ3LCAKLSAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDExOTkwMywgODgwMiwgNzg3MTAsIAotICAgIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgCi0gICAgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIDc4NzI1LCA3ODcyMiwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMCwgCi0gICAgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMCwgNzI1NiwgMCwgMCwgCi0gICAgMTY2NywgNDIxNjEsIDAsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAKLSAgICAzNjEwLCA5ODMxOTksIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIAotICAgIDEwODc1LCAxMjg2NjIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA5MTc5NTQsIDAsIAotICAgIDM4NzQsIDAsIDAsIDk4MzYxOSwgMTIwMzMxLCAwLCAwLCA2NTYwMywgMCwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCi0gICAgMTE5NTcwLCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgMCwgMTQ1NSwgNzg3NDksIAotICAgIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgMCwgNDM1MjAsIAotICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3ODc2MywgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKLSAgICAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgOTgzMjEzLCA5MjI2MSwgNjM3MCwgMCwgNzgyNywgCi0gICAgNjg0NDEsIDY5NjUsIDAsIDAsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCAwLCA3NDM4MiwgNzM3ODEsIDc5MTgsIDczOTg4LCAwLCAKLSAgICAwLCA5MTc4ODQsIDE3MjgsIDAsIDQzNzY0LCAxNzgsIDEyOTcyLCA5MjY3OSwgMCwgOTE3ODg3LCA5MjU2MywgOTgzMzgxLCAKLSAgICAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAKLSAgICAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgCi0gICAgMCwgMCwgODMzMywgMCwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMxNSwgNjk5MTEsIDExOTEwLCAKKyAgICAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgMCwgNjY1OTgsIDExMDU5MiwgNjQ2NjQsIAorICAgIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDExOTkwMywgODgwMiwgCisgICAgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCAKKyAgICA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgCisgICAgMCwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMCwgNzI1NiwgMCwgCisgICAgOTgzMTc5LCAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIAorICAgIDgxMDEsIDM2MTAsIDY4NDIwLCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIAorICAgIDY0NTQ5LCAxMDg3NSwgMTI1MDUyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgCisgICAgNjgyOTgsIDAsIDM4NzQsIDAsIDAsIDk4MzYxOSwgMTIwMzMxLCAwLCAxMTM2NjUsIDY1NjAzLCAwLCA2NTY4NywgMCwgCisgICAgNDEwMzgsIDc0MDA5LCA5MjA3LCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgMCwgCisgICAgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgCisgICAgMCwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgCisgICAgNzg3NTksIDc4NzU1LCAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgMTI4NjE1LCA5MjI2MSwgCisgICAgNjM3MCwgMTI1MTI4LCA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCAKKyAgICA3ODg2OCwgNzQzODIsIDExODQxLCA3OTE4LCA3Mzk4OCwgMCwgMTEzNjY4LCA5MTc4ODQsIDE3MjgsIDAsIDQzNzY0LCAxNzgsIAorICAgIDEyOTcyLCA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MSwgMTEzNjcyLCA3ODMyNywgMTE5OTA0LCA2NTY5MCwgCisgICAgMCwgNzExMDcsIDExOTA1NCwgMCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgOTE3ODkxLCA3NDA3MCwgMTMwNjUsIAorICAgIDk5MjMsIDEwODA2LCAwLCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIDcxMDQ0LCAwLCAKKyAgICA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzE1LCA2OTkxMSwgMTE5MTAsIAogICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKLSAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NTAsIDAsIDc0OTEsIAorICAgIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIDE5NDU2MiwgMCwgNzQ5MSwgCiAgICAgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgCi0gICAgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIAotICAgIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAxNTk2LCAxMjAzODMsIDQxOTk0LCAKLSAgICA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDc4NDAzLCAKLSAgICA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgNDMyNTksIDAsIDYxMDcsIDAsIAotICAgIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCAKLSAgICA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAKLSAgICAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCA5ODMwNzIsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCA3NDgzMSwgCi0gICAgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAwLCAKLSAgICA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgCi0gICAgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDk4MzEwMCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKLSAgICAxMDcwMCwgODgwNSwgMTc0MiwgMCwgOTMzMywgODIwMiwgMTI3NzUwLCAwLCA5ODMxOTcsIDAsIDAsIDczODgyLCA0OTksIAotICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwNCwgMCwgMTE5NjcsIAotICAgIDE3NzUsIDAsIDAsIDAsIDAsIDEyODAwOSwgOTQ1OCwgMCwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMCwgMCwgCi0gICAgNDI3ODIsIDAsIDAsIDAsIDEyODMwOSwgNzQ3NzcsIDEyMDY2OSwgOTQxNCwgMTIwMzgyLCA3Mzc4MiwgNzM5NjksIDU2NSwgCi0gICAgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDAsIDgyNTQsIDAsIDEwOTc1LCAwLCAxMjA2MjUsIDc0NzYzLCAxMDIyLCAKLSAgICA0MTA4LCAzODgwLCA3NDI0NywgMCwgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgMCwgNDMxNDksIDAsIDY1MDMxLCA3OTYxLCAKLSAgICAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDAsIDEyNDczLCA2NTM0LCAwLCA5OSwgOTgsIDk3LCAxMjA1NzEsIDY3NTg0LCAKLSAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgCi0gICAgNjY1OTksIDY2NzIyLCAwLCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDAsIDAsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIAotICAgIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgCi0gICAgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgCi0gICAgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIAorICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDcxODkxLCA2NTUxNiwgMTIzMjEsIAorICAgIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgNjg0OTQsIDE1OTYsIDEyMDM4MywgNDE5OTQsIAorICAgIDY1ODAxLCAxMjg4MDgsIDY4MzgsIDM1NjEsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgCisgICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIAorICAgIDAsIDExOTE3NywgNzc5NDEsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgCisgICAgNTc2NSwgODcyMSwgMTE5NTcwLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAKKyAgICAxMDI4NCwgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgMTAzMTYsIDcwMTIxLCA0MTYwMiwgMCwgOTIzMDgsIDc0ODMxLCAKKyAgICA5MTc5MDEsIDAsIDY4NDgyLCA2NTM5OSwgMCwgNjQ1OTEsIDQyNDA1LCAwLCAxMjA4MjAsIDg0MywgMTE1NDEsIDEyODMyNiwgCisgICAgNzAzMjEsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDk4MzMwNCwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAKKyAgICAxOTUzLCA5NTc5LCA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgOTgzMTAwLCA0MTI1NywgNDE5MDAsIDg2NzUsIAorICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAwLCA5ODMxOTcsIDEyNzI1MiwgMCwgCisgICAgNzM4ODIsIDQ5OSwgOTgzMDQ5LCA0MzQ2NywgMCwgNDM4MTgsIDAsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgOTgzMTA0LCAKKyAgICAwLCAxMTk2NywgMTc3NSwgMTI1MDA2LCAwLCAxMTExOCwgMCwgMTI4MDA5LCA5NDU4LCAwLCA2NDcwLCA5MTgwLCAxMjAzODAsIAorICAgIDQzMTc2LCAwLCAwLCA0Mjc4MiwgMCwgMTI0OTk5LCA5ODMxMzUsIDEyODMwOSwgNzM4NDksIDEyMDY2OSwgOTQxNCwgCisgICAgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgMCwgODI1NCwgMCwgCisgICAgMTA5NzUsIDQzNTE4LCAxMjA2MjUsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgMCwgMCwgOTIyNjMsIAorICAgIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIAorICAgIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCA0MDQ5LCA3NDE2MywgCisgICAgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgNjY1OTksIDY2NzIyLCAKKyAgICAxOTQ5NTUsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMCwgNzExOTEsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCAKKyAgICA1NTkzLCAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAKKyAgICAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAKKyAgICAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNjc3MTMsIDE1MzYsIAogICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKLSAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMzA3LCA4MTM0LCAKLSAgICAxMjgwMjgsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgMTk1MDk1LCAwLCA4OTIzLCAxNjQ1LCAxMjA1OSwgCi0gICAgNjY1ODUsIDcxMjk3LCAzMTk2LCAwLCAwLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIAotICAgIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMCwgCi0gICAgMTI4NzgxLCA0MTE2OSwgODkzOSwgNDEyNDUsIDAsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDAsIDAsIDAsIAotICAgIDQxMTcyLCA3ODU1LCAwLCAwLCAxMDQ4MCwgMCwgMCwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMDgsIDY0NSwgMTI2NjE2LCAKLSAgICA3NjA5LCA0MDk3MywgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIAotICAgIDczOTgyLCAxMjA1MTgsIDAsIDE5NTA4NiwgNDMzNjksIDAsIDEyODE0MCwgNjg0MTUsIDk4MzA5MywgNDUzOCwgMTIwNDA2LCAKLSAgICA0MzE0MSwgMCwgOTgzMjEwLCA3NDIxNCwgNzM4ODYsIDAsIDAsIDExODkwMiwgNDMwMDUsIDc4NDQ4LCA5NTUyLCAwLCAwLCAKLSAgICA5ODMxNTksIDEyOTk3LCAwLCAwLCAwLCAwLCAyMzgxLCAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgMCwgMCwgCi0gICAgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgMCwgMCwgMCwgCi0gICAgNjQ4OTYsIDExOTE2MiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgOTgzNDkwLCAxMTk1NjYsIDAsIDEyODA4LCAKLSAgICAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgOTI0MzMsIDAsIDk4MzE5MywgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCAKLSAgICA5MTg3LCA5ODM2MTQsIDAsIDEwMTkxLCAxMTkwNTcsIDExNzUyLCAzMzUzLCA5MzU4LCAwLCA3MTM2NiwgNjY2ODAsIAotICAgIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDk4MzI5NywgMCwgMTIwMDgyLCAxMjAwODEsIDEyMDA4NCwgCi0gICAgNDEwMjcsIDEyMDA4NiwgMCwgMTIwMDg4LCA3MzY2LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKLSAgICA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIDAsIAotICAgIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCA5NDA3NywgMTEyOTQsIDAsIDY2NjY1LCA3ODUxLCAwLCAKLSAgICA4Mzc1LCA4Njk5LCAwLCA0MjUyNCwgMCwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDEyODA5NSwgOTgzODY0LCAKLSAgICAwLCA4MDg4LCAwLCA3NDAxMiwgOTI1MDAsIDAsIDQ0MzksIDY5MjYsIDk4MzA0NywgMTI5MjQsIDEyODIyNywgNDIzNjksIAorICAgIDEzMjY2LCAxMjc4MTMsIDEyNzExMSwgNzg4NDIsIDczOTI2LCA2NjI5MSwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzMwNywgCisgICAgODEzNCwgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIDcxODkyLCAwLCA4OTIzLCAxNjQ1LCAKKyAgICAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0ODI3LCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIAorICAgIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCAKKyAgICA3MzkxMSwgMTEzNzg3LCA5MjUyOSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIAorICAgIDEyMTU3LCAwLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDQzMjU4LCA5MTc4MTksIDc3OTM2LCA4MjY0LCAKKyAgICAxMjYxMCwgOTgzMzA4LCA2NDUsIDEyNjYxNiwgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgCisgICAgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAwLCAxMjgxNDAsIAorICAgIDY4NDE1LCA5MjY0NCwgNDUzOCwgOTM5NzgsIDQzMTQxLCAwLCA5ODMyMTAsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgCisgICAgNzE5MTgsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIAorICAgIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCA3NDYxOCwgMCwgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgCisgICAgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgMCwgNzA0MzcsIDAsIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAKKyAgICAxMDA4MiwgMTE1NzUsIDEyOTA2MiwgMTE5NTY2LCAxMjgwOTMsIDEyODA4LCAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgCisgICAgOTI0MzMsIDcxOTE2LCA5ODMxOTMsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgMTI2NTEzLCAwLCAxMDE5MSwgCisgICAgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgOTgzNDYwLCA3MTM2NiwgNjY2ODAsIDEyMDA5MCwgODI0OCwgNzkzMSwgCisgICAgODU1OCwgOTc5NSwgNjgzODAsIDk4MzI5NywgMCwgMTIwMDgyLCAxMjAwODEsIDEyMDA4NCwgNDEwMjcsIDEyMDA4NiwgMCwgCisgICAgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIDY0NjU3LCA4NjU3LCAxMjAwNDgsIAorICAgIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMTEzNzExLCA0MzE1NCwgNDEwMjksIDAsIAorICAgIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgNzg1MSwgMCwgODM3NSwgODY5OSwgMTI3OTQ5LCAKKyAgICA0MjUyNCwgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDk4Mzg2NCwgMTk0OTI5LCAKKyAgICA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCAKICAgICA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDAsIDExMjk2LCA5ODMyODMsIDAsIDAsIAotICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgMCwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgCi0gICAgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgCi0gICAgNzgwNjksIDEyMDgwOCwgMjU5LCAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAwLCA2NTEyNSwgCi0gICAgNDEyNDQsIDAsIDEzMjcxLCA5MTAzLCAyMjc4LCAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIAotICAgIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgCi0gICAgNjk5MjcsIDAsIDE4OTAsIDEyMDA1NiwgMCwgMCwgMCwgNzI5MywgNzk5MSwgMCwgMTA1NzgsIDAsIDc4MDc2LCAxOTQ3MzgsIAotICAgIDc4MDc3LCA2OTkyOCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCAKLSAgICA3Njc2LCAxMTY2NCwgMCwgOTgzNjU4LCA2OTcwNywgMCwgMTE4ODEyLCAwLCAwLCAxMjgwNDUsIDkxNzUsIDExOTI1LCAKLSAgICA3ODA0NSwgOTA4OCwgMCwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDEyNzE3NywgMTI3ODM1LCA0OTg1LCAxMzI4OCwgCi0gICAgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCA5ODMwOTYsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCi0gICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAxMjg1ODQsIDEyNjIyLCAwLCAKLSAgICAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgNDI3MzEsIDY3OTcyLCAKLSAgICAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCAKLSAgICA5NTEwLCA2NjIzNywgOTgzMzAyLCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKLSAgICA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIDY2ODYsIAotICAgIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDk4MzMwNiwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCi0gICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCAwLCAxMDkyNiwgMTE3NTYsIDExNzU3LCAKLSAgICA2NDg3OSwgOTE3OTQ5LCA5MTc5NTAsIDEyNzg0OCwgMTMyMjcsIDAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MTc5NTMsIAotICAgIDQxNDE4LCAwLCA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgOTE3OTYxLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAKLSAgICAxMTkyNTcsIDQyNzQsIDk4MzMwMCwgNDE0ODMsIDAsIDQxMjUwLCAwLCA0MjE3OSwgMCwgNTkzMSwgMTE3NDQsIDY5MjMyLCAKLSAgICAwLCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDAsIDAsIDQzOTcsIAotICAgIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyODA0OSwgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAKLSAgICAxMDQwMCwgMCwgMTI4ODE4LCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCAwLCA0MjI1NiwgMTE5ODY5LCAxMTk4NjAsIDQxNywgCi0gICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCAKLSAgICA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgMTI2OTk1LCAwLCAwLCAwLCA0MjI3MywgNTgxOSwgMCwgOTE3NTU2LCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MSwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgCisgICAgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMCwgCisgICAgMTIwMTM4LCA2NDY4MiwgMjM3MSwgNzgwNjksIDEyMDgwOCwgMjU5LCAxMDA5LCA3MDQwNSwgMjQwMiwgMjMzMywgNjQ0MCwgCisgICAgMTk0NzQxLCAxMTM3NTcsIDY1MTI1LCA0MTI0NCwgNzA0MDcsIDEzMjcxLCA5MTAzLCAyMjc4LCAwLCAxOTQ3MjgsIDAsIDAsIAorICAgIDEwMjE5LCAwLCAxOTQ3NDAsIDAsIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgCisgICAgOTQwNDksIDY3MzYsIDE5NTA5MiwgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIAorICAgIDEyODQ1MCwgMCwgNzI5MywgNzk5MSwgNzQwNTIsIDEwNTc4LCA5MTc5OTgsIDc4MDc2LCAxMjg2MjAsIDY3MzY4LCA2OTkyOCwgCisgICAgNzE4NTAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAxMjgzMDgsIDYxNjQsIDY1MTcwLCAwLCAwLCA3Njc2LCAKKyAgICAxMTY2NCwgMCwgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCAwLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCisgICAgNzgwNDUsIDkwODgsIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgCisgICAgMTMyODgsIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIAorICAgIDE1NzcsIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4MzcxLCAKKyAgICAxMjYyMiwgMCwgMTI0OTQ4LCAwLCAxMjg4NTgsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgCisgICAgNDI3MzEsIDY3OTcyLCAwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgOTI3NDYsIDEyMDQxMSwgCisgICAgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwMiwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIAorICAgIDkxNzk2NCwgMTI4NjM2LCAzNTA1LCA4NzA3LCA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgCisgICAgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIDk4MzMwNiwgCisgICAgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCAKKyAgICA0MzgxLCAwLCAwLCAxMDkyNiwgMTE3NTYsIDExNzU3LCA2NDg3OSwgOTE3OTQ5LCAxOTUwNTMsIDEyNzg0OCwgMTMyMjcsIAorICAgIDEyMDMyMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkxNzk1MywgNDE0MTgsIDEyODkzMywgNjU5MTQsIDY3MjEsIDIxNywgCisgICAgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCA0Mjc0LCAxMTE0MywgNDE0ODMsIAorICAgIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgCisgICAgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU2LCAwLCA0Mzk3LCAxMjgwMzcsIAorICAgIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgMTA0MDAsIAorICAgIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgNjgyNTIsIDQyMjU2LCAxMTk4NjksIDY3MTQ1LCA0MTcsIDQxNDc0LCAKKyAgICAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCA3NDU3MiwgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCA3ODYxNCwgCisgICAgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgNjcyNDAsIDE5NDY1NiwgMCwgMCwgNDIyNzMsIDU4MTksIDAsIDkxNzU1NiwgMCwgCiAgICAgMTI2NjQzLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIAotICAgIDExOTU3NiwgMCwgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgNDIwNjMsIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIAotICAgIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAwLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAwLCAxMTk4ODAsIAotICAgIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIDAsIDg5NDQsIDAsIDAsIDEwNDczLCAwLCAwLCA2MDcyLCA0MzAyNSwgCi0gICAgMTAyOTksIDAsIDAsIDEyMDYwOCwgNjYzMjYsIDk4MzQ0NywgMTI3Nzk0LCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKLSAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCA5ODM3ODIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCAKLSAgICA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc3OTI4LCA3NDE0LCA3NzkyOSwgNDM5ODIsIAotICAgIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgCi0gICAgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIAotICAgIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNzM5MDAsIDAsIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIAotICAgIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDc4Nzc3LCA5MTc5OTgsIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIAotICAgIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgCi0gICAgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIAorICAgIDExOTU3NiwgOTgzODYzLCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAzMzI5LCAwLCA0MjgxMSwgMTAzMTIsIAorICAgIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAKKyAgICAxOTUwNTEsIDExOTg4MCwgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIAorICAgIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAxMjg0MzYsIDAsIDEyMDYwOCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgMCwgCisgICAgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgMTI3OTAyLCAxMzI4MSwgCisgICAgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgMCwgNDMzMjQsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIAorICAgIDQzMTgwLCA3NzkyOCwgNzQxNCwgNzc5MjksIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgCisgICAgOTgzNzMxLCA4NTIsIDAsIDEyMTYwLCAxMjAyMTIsIDEwMjEyLCA2NTQzNSwgMTI5MDkyLCAxMjA3MSwgOTYwOSwgMTIxNTYsIAorICAgIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgCisgICAgMTAzNzUsIDQzODUzLCAxMjg1OTksIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAKKyAgICAxMjg5NDUsIDExNTAxLCA0MTE3NywgMTI4Njg5LCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCAKKyAgICA0MTE3OSwgOTgzMzU2LCA0MzMxMywgMTIwMjMwLCA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjA1MDUsIDczOTY2LCAKKyAgICA2Njg5MCwgNzA4MTIsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIAogICAgIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyNjUzMCwgNDQxMywgOTIxOTYsIAogICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAogICAgIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCAKLSAgICA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCAKLSAgICA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIAotICAgIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCAKLSAgICA2NTg2MywgMCwgMCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgCi0gICAgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgMCwgNjY1NjUsIDEwODIxLCAwLCAKLSAgICAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAwLCAwLCAwLCAKLSAgICAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDAsIDEwMTQxLCAwLCAKLSAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAotICAgIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgMzkzMSwgMTIwMjk1LCAKLSAgICA3NDE0MywgMCwgMCwgMCwgNzg0NjAsIDExOTgyLCAwLCAwLCAwLCAxMjgwMTYsIDY0NDg0LCAwLCA0MTE2NywgMCwgNDE3MzUsIAotICAgIDk0MDE5LCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCA5MjI1NCwgODE5LCAKLSAgICAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKLSAgICA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODMzOCwgNTc1LCAyNjgsIAotICAgIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIAotICAgIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDEyMDcyMSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgMTIwMzQ2LCAwLCAKLSAgICA3ODEzMiwgNTkyNiwgNzgxMjgsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIAotICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAotICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKLSAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIyMSwgNzYzOCwgCi0gICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCi0gICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKLSAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKLSAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCAKLSAgICA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgCi0gICAgMTIwNDEyLCA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKLSAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDY0NzI4LCAwLCA3ODY3MywgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIAotICAgIDE5NTA4OSwgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCisgICAgNjc1NiwgMTI1MTA0LCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgCisgICAgNDI0MDcsIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIAorICAgIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAKKyAgICA5ODM5MTAsIDY1ODYzLCAwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCAKKyAgICA4NDE5LCA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCA5MjQyMiwgMCwgNTUyMzcsIDE0MzEsIDk4MzIyNiwgCisgICAgNjY1NjUsIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCAKKyAgICA0NTQ0LCA3MTIyOCwgMCwgOTE3OTc1LCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAKKyAgICAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgMCwgNjM3NjEsIDg3ODUsIDQ0NzYsIDc4MTA5LCA2Mzc2MywgMTI2NTUsIAorICAgIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMTI3OTc5LCAKKyAgICAxMjcxNjAsIDAsIDQxNTczLCAwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCAwLCAwLCA5ODM3NDMsIDc4NDYwLCAxMTk4MiwgMCwgCisgICAgMCwgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDAsIDQxMTY3LCAwLCA0MTczNSwgOTQwMTksIDcxNywgMTA3NTQsIDAsIDAsIAorICAgIDcyNDEzLCA5MjkzNSwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDkyMjU0LCA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIAorICAgIDAsIDAsIDAsIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgCisgICAgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgyMDgsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgCisgICAgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCAKKyAgICA3NTIyLCAxMjA3MjEsIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDEyMDM0NiwgMTI4OTM5LCA3ODEzMiwgNTkyNiwgCisgICAgNjgyNTAsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAKKyAgICAxMzA5MywgNjQwMDIsIDk4MzU1OSwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgNjczNzksIDg1OTUsIAorICAgIDk4MzUsIDkxNzk0NywgNDM3MDMsIDEzMDk3LCAwLCA2NDY0MywgMTMyODMsIDEyNjk3LCAwLCAxMjM4MSwgMzQ4OCwgNTkzMywgCisgICAgMTAwMzMsIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDAsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCA0MjUzOCwgCisgICAgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAxMjg0NjUsIDAsIDQyNzM2LCAwLCA1NzU2LCAxMjgzMjQsIDc2MzgsIAorICAgIDQxNjQyLCA0Mjc2NCwgMCwgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCAwLCA3MzgzMiwgMTI4ODI3LCAxMjA2MzUsIAorICAgIDEyODIzMSwgNzgzMzQsIDAsIDc2MzYsIDY1MTcxLCA5MTI0LCAwLCA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDk4MzIyMSwgCisgICAgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDcwODY5LCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgCisgICAgMTExODMsIDEyMDQzMSwgMTIwNDMwLCAwLCAxMjgzNTEsIDEyNzQ4OSwgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCAKKyAgICA3NDIxMywgNzgyNCwgMCwgMCwgNDEyNzQsIDU3NzgsIDYzMDIsIDAsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCAKKyAgICA5MzA0MSwgOTQ1MiwgMCwgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDEyODYxNCwgMTAxNzIsIAorICAgIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgCisgICAgNDE0NjksIDQxMjY5LCAxMjA0MTIsIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCAKKyAgICA0MjAzMywgNzgyNzAsIDEyNzk4MiwgOTgzMTcyLCA2NDcyOCwgMCwgNzg2NzMsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAKKyAgICAxNjcxLCAxOTUwODksIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAogICAgIDExOTE0MywgMCwgMCwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgCi0gICAgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMCwgMCwgMTAyMjksIAotICAgIDEwNjM1LCA4MjYsIDEyODA4MSwgMTk1MDgyLCAxOTUwODUsIDE5NTA4NCwgMTk1MDg3LCA2NDgzLCA5MjIxMSwgMTgwOCwgCi0gICAgNzg0OCwgMCwgODEwMCwgNzgyMjcsIDc4NjY5LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgNzg4NzIsIDAsIAotICAgIDExMDAzLCA5OTA0LCAwLCAwLCAxMjA2OTAsIDkxNDQsIDEwOTIxLCAwLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCAKLSAgICA3Nzg0MSwgMTAzMTMsIDAsIDAsIDY0MzIwLCAxMDI2NSwgNzg2ODYsIDEwOTYyLCA3ODY4NCwgNDMwMDgsIDg5NDUsIAotICAgIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgODY1NSwgMTk1MDc1LCA5MjU0NCwgNzc5NTEsIAotICAgIDEyMDY2LCAwLCAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCAwLCA3NDEzNiwgMTA5NTcsIDk4MzcwMywgCi0gICAgNDMyNTgsIDExOTExNiwgMTI3ODczLCAxMzE1NywgMCwgOTE3NTQ0LCAzNTcwLCAwLCA3NDQzLCAwLCA0NDAwNiwgNjk5NywgCi0gICAgNjgwMDQsIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDAsIDY1MjE2LCAwLCA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgCi0gICAgOTE3ODYyLCA3ODM5LCAxMTk5MTMsIDc4ODA2LCAxMTk5MTIsIDk2OTEsIDQ0MTEsIDc4ODAyLCAwLCAwLCA0MzQ0MiwgCi0gICAgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCAwLCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIDE5OTMyLCA2NDgzMSwgCi0gICAgMCwgMTE5OTIzLCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgMCwgMTEwNTYsIDk4MzU3NCwgMTE5OTI1LCAwLCAKLSAgICA0MTE2NSwgMTEzMjgsIDEyNDUwLCAwLCA0MTE2NiwgMCwgMTI0NTYsIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgCi0gICAgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMjc1NjksIDEyMDQ4MywgOTk2OSwgCi0gICAgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCAwLCAwLCAwLCA1MjA5LCAKLSAgICAyOTcsIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgCi0gICAgNzQxNTYsIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgMCwgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIAotICAgIDEyNzUwNSwgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzg4NzMsIDU4NDQsIDY4MDMxLCAKLSAgICAxMTg4MzgsIDAsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCAKLSAgICA4ODkyLCAwLCA5MjMzOSwgMCwgOTgzMDczLCA1NzgyLCA0MjAsIDAsIDAsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDAsIAotICAgIDY0ODE0LCA2Mzc5NiwgNzc5NjUsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAwLCAwLCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCAKLSAgICAwLCA0MzY3NiwgMCwgNjk2NzMsIDAsIDAsIDAsIDMyOSwgNzc5NjgsIDkyNzA3LCA5MTc1NDgsIDczOTksIDAsIDQxMTg4LCAKLSAgICAxMzI0NCwgMTIwNDY2LCA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCAKLSAgICA0MzEyNiwgNzc5NzIsIDAsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCAxMjg1NDMsIAotICAgIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgMCwgMTk0ODIzLCAwLCAKLSAgICA2NTM0NywgNjUzNDYsIDY1MzQ1LCAwLCAxMjczODQsIDUzNDcsIDY5ODAyLCA5ODM2MzIsIDczODY4LCAxMTg5NDQsIAotICAgIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgNzg0MjIsIDEyMDY2MSwgNDU1NSwgNTM0MSwgMCwgNzAwNzEsIDEyODY3MCwgCi0gICAgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgOTE3ODkyLCA2NDU0MSwgNDI1MTksIDc0NDcyLCAwLCAwLCA3NDc2NSwgCi0gICAgOTE3ODg4LCAxMjc1MTAsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCAKLSAgICA2NTM2NiwgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgCi0gICAgMTE4MDAsIDY1MzU1LCA1MzQ1LCA2NTM1MywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAKLSAgICAxMjY2MzUsIDI0MjMsIDc3OTU4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAwLCAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgCi0gICAgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgCi0gICAgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCA3OTQ2LCAxMjU0MSwgODE4MiwgCi0gICAgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCA2ODAxMSwgODg0NywgMCwgCi0gICAgNjU4NzYsIDU1MzUsIDgzMjksIDc0NTkwLCA5ODMyMDgsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIAotICAgIDk4Mzg1OCwgNTYwNywgNDEwODksIDAsIDAsIDc0MjU2LCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCA4NzY0LCAKLSAgICAxMjA0NTksIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgMCwgNjUwMTEsIDQxMDkwLCAwLCAwLCAxMTg4LCA3MjU0LCAKLSAgICAxMTAwLCAwLCAxMjgzMDEsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjk3OTIsIDAsIDY4MDE5LCAzNTcyLCAxMDAyMywgNDk1OSwgCi0gICAgMTMwNzksIDAsIDk4MzI3NiwgOTcyOSwgMCwgMCwgMCwgNDMzNjEsIDAsIDAsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgCi0gICAgMTMzMDQsIDEyODI5MCwgMTI3MjYwLCA0MTQ1MSwgMCwgMTEwOTUsIDgyNzMsIDEyNzUzMywgMzQ1MSwgOTgzMzA5LCA5NzIsIAotICAgIDQxNDUzLCA5ODM0NDIsIDAsIDczODgzLCA2ODAyMiwgNzM5NDUsIDk4MzczNSwgMjI4OCwgMTk5NTUsIDk1MzgsIDAsIAotICAgIDY5ODA3LCAwLCAwLCAwLCAwLCAxMTM5NiwgOTgzNDQwLCAxMTAxOSwgMCwgMCwgMCwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgCi0gICAgMjYxLCA1OTI3LCA3NzkxLCAwLCA3MzYyLCAwLCAxMDY5NiwgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAKLSAgICA5Mzk5NSwgMjgyLCAxMjY1MTAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIDk4MDEsIDAsIDc0MTc3LCAwLCAwLCAzNDc0LCAKLSAgICAxMTg3ODcsIDAsIDEyMDY1NSwgNjA4MSwgMCwgNzg4NzQsIDc0MDc2LCA3ODg3OSwgMCwgMCwgMCwgMCwgMCwgODc1MSwgCi0gICAgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA5MjYwOCwgMTIwMjcyLCA2ODAxNywgCi0gICAgOTY0MiwgMTA5MTIsIDk1OCwgMCwgMTEzODcsIDc4ODc4LCA0NjY2LCAwLCA0OTE1LCAwLCA0NjY5LCAwLCA2ODA5OSwgCi0gICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDAsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgMCwgOTE3ODc1LCA4NjY0LCAKLSAgICA5Njk3LCAzNjA2LCA5MTc4NzMsIDAsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDEyMDI1MSwgOTc3MiwgNzI1NSwgODg4NiwgCi0gICAgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIDkyMzgxLCAxMjAyNTUsIAotICAgIDEyMDI1NiwgMTIzMDEsIDEyMDI2NiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAxMjAyNjMsIDEyMDI2NCwgMTAxNywgCi0gICAgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgMCwgMCwgODYwOCwgNDI3ODksIDEyMDYxMywgMTI4NzA0LCAwLCAKLSAgICA3Mzg1NSwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIDE2NDEsIDAsIDAsIDg5NjYsIDAsIAotICAgIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNjk4NjEsIDc0ODQzLCA5MTc5MzMsIDAsIDYzMDYsIDEwMTY5LCAKLSAgICA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIAotICAgIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgCi0gICAgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIDQxNDM1LCA0MzUyLCAKLSAgICA5ODM2MTAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKLSAgICAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKLSAgICA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDk4MzE1NiwgMCwgNjgyOSwgNTIyNSwgMTI4ODA3LCAxMjczODUsIDAsIAotICAgIDAsIDExOTYxNSwgMCwgNzQ3OTMsIDU2MjYsIDczODA3LCAxMTc3MSwgNzQwNzUsIDEyNzIzNiwgMTI4MDE5LCA0MjYxNCwgCi0gICAgNTM1MywgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCA2OTk0MiwgNjk1MiwgCi0gICAgOTgzMjcyLCAxMjA3NTIsIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAKLSAgICAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIAotICAgIDU2MjcsIDEyMDAxNywgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDAsIDIwMywgMCwgMCwgMCwgMCwgCi0gICAgNzgzNTAsIDAsIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAKLSAgICAxMjY0NjQsIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgCi0gICAgMCwgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAKLSAgICAxMjgwMjQsIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAKLSAgICAwLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0NDAwLCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgCi0gICAgNzc1NiwgMTIzNDIsIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAKLSAgICAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAotICAgIDAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgCi0gICAgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCAKLSAgICA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgNzQxMywgNjgwMTIsIDc4MDI5LCAKLSAgICA4NzY2LCAwLCA3ODA3OSwgNTg1NCwgMTI3OTc0LCAxMDU4MywgMCwgMTE5OTg5LCAwLCAxMDQxNiwgOTE3ODY5LCAzODcyLCAKLSAgICA5MTc4NjgsIDAsIDg0MjksIDAsIDExODgwNiwgMjgzOCwgMTI4ODAyLCAwLCA5MTc4NjYsIDAsIDAsIDAsIDk4Mzk2NywgCi0gICAgOTQwMDUsIDExMDk2LCAxMjA4MTMsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgMCwgCi0gICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKLSAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCi0gICAgODU1NiwgMCwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDAsIDc4MTg1LCAwLCAwLCAKLSAgICA5MjcxMywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIAotICAgIDAsIDY4MDA5LCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgMTI4MDQyLCAxMjY1NDUsIDk4MzEzNywgMCwgNjMzNCwgMCwgMCwgCi0gICAgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIAotICAgIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgCi0gICAgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgCi0gICAgNjQ2NzEsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCAKLSAgICA3NDU4OCwgMTIwNzQ4LCAzMTQwLCAxMjg4NTQsIDc5NjAsIDQzMjcxLCAwLCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgCi0gICAgMTI0NzIsIDAsIDY5ODY0LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIDQyNjEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCA0MjM1MiwgMTc1MiwgCi0gICAgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAKLSAgICAwLCA0MzQwNiwgOTgzNzM2LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCA2NDA0MSwgCi0gICAgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMTE5MTM0LCAwLCAwLCAKLSAgICA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDkyMTkwLCAwLCAwLCAKLSAgICAxMDk5OSwgMTE3NTAsIDAsIDQzMjUxLCA2ODY2MCwgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIAotICAgIDExOTY0LCAwLCA5ODMxODUsIDAsIDAsIDY4NDU1LCA0Mjg2MywgNzM4MzksIDAsIDAsIDAsIDAsIDEyNjYyOSwgMCwgNDY4LCAKLSAgICA2MTIsIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDk4MzE2MywgMTIyODAsIDAsIDU0MCwgCi0gICAgNzQ1NjQsIDExOTAxNywgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIAotICAgIDAsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCAKLSAgICA2NDc0MiwgMTI4NjgyLCAxMjAyODIsIDAsIDk4MzQ1MCwgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDc4ODQ3LCAxODg0LCAKLSAgICA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAwLCAxMTk1LCA2NDg5OCwgNzkyNCwgMCwgNDExNTEsIDIwMTAsIDAsIAotICAgIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIDQzNjAsIDEyNzAwOSwgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDAsIAotICAgIDQyNTIxLCA4NTM5LCA5ODM3MjUsIDAsIDExODk4NiwgMCwgNDc4OCwgMCwgNjgwMjMsIDY1NzM0LCA5ODM0NTUsIDQzNzkwLCAKLSAgICAwLCAxMzA3NSwgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIAotICAgIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTk2MTcsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgCi0gICAgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA5MTc4MzcsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAKLSAgICAxMjcwOSwgNjk4NiwgOTIzNjQsIDY4MDE1LCAwLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIAotICAgIDEwMjU0LCAwLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMCwgNjA3LCAwLCAxMTk4NTIsIDEyODg0NiwgMTI5MjMsIAotICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAwLCAxMTk4MzQsIDQwOTc1LCA1ODQwLCAKLSAgICA0MjgzOCwgMCwgNDA5NzgsIDk4Mzg5NywgMTE5ODQwLCAwLCA5ODMwNzEsIDAsIDY2NDQ0LCAxMDUzOCwgMCwgMjU1MCwgCi0gICAgMTE5ODM2LCA2Nzc5LCAwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDAsIDAsIDU2MTksIDY1ODIyLCAxMjY1NjcsIAotICAgIDE5NDg4MiwgNzQ1NSwgMCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAwLCAxMjA1NTEsIDQyMzgwLCAKLSAgICA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCAKLSAgICA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgCi0gICAgNDYwMywgMzA4NCwgOTgzMTU1LCA5MjQ4NCwgOTg1OCwgNjAzNywgMCwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM3MDQsIAotICAgIDMwODMsIDEwMzIyLCAwLCAwLCAwLCA0MTAzNiwgMCwgMCwgNDMzMjEsIDY1NjA2LCAwLCA0MTAzMiwgNDIzODgsIDAsIAotICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDAsIDE5NDg5MSwgMCwgNDA5NjMsIAotICAgIDY0OTUyLCAxMDQwMiwgMCwgMCwgOTIzMDQsIDEwNjAzLCAwLCAwLCA5ODMxMTMsIDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAotICAgIDE5NDg5NSwgNzgzNjcsIDEyNzM3NywgMCwgOTM5NjMsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCA0Nzg3LCAKLSAgICAwLCA3NDgyOSwgMCwgNjU0MjMsIDAsIDEyODExOCwgOTU3MCwgNTUyNjAsIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDAsIAotICAgIDkxNzYyNCwgNDM3NDAsIDAsIDQwOTY2LCA5MTc2MjIsIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzQyMzcsIAotICAgIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgOTE3NjE3LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIAotICAgIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAxMTkxNTksIDEyODE4MywgMTk0ODc0LCA2NDY4LCAKLSAgICA0MTk3NiwgOTcyMCwgOTE3NjA2LCAxMTc2NywgNDE5NzAsIDE5NDU5NiwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIAorICAgIDY3NzA1LCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCAKKyAgICAxMjY1MTYsIDEwMjI5LCAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgCisgICAgOTIyMTEsIDE4MDgsIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCAKKyAgICA3ODY2NSwgNjc3MDQsIDAsIDExMDAzLCA5OTA0LCAwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKKyAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDAsIDAsIDY0MzIwLCAxMDI2NSwgNjcyNTIsIAorICAgIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgCisgICAgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAKKyAgICAzMTI2LCAwLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgMTI3ODczLCAxMzE1NywgMCwgOTE3NTQ0LCAKKyAgICAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIAorICAgIDExMDc1LCAwLCA2NTIxNiwgNzAxOTYsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAxMjg1NDMsIDc4MzksIDExOTkxMywgCisgICAgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyOTAzMiwgMTI0OTcwLCA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAKKyAgICAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgCisgICAgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDk4Mzk2MiwgMTEwNTYsIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAKKyAgICAxMTMyOCwgMTI0NTAsIDk4MzgxMSwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgCisgICAgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIDEyMDc2NywgCisgICAgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgMCwgMCwgMTI1MDI5LCA1MjA5LCAyOTcsIAorICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAorICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAxMjc1MDUsIAorICAgIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc4ODczLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAKKyAgICAxOTQ2NTgsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCAKKyAgICA4ODkyLCA3ODg3MiwgOTIzMzksIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI5MDM0LCA5MTc4NzEsIDQzNzk2LCAKKyAgICAxMDc5NywgNjM3OTQsIDAsIDAsIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIAorICAgIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgOTI5NTYsIDY5NjczLCAwLCAxMTEyOSwgOTI5MjksIDMyOSwgCisgICAgNzc5NjgsIDkyNzA3LCA5MTc1NDgsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCisgICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKKyAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDkzMDU1LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAorICAgIDU2MDMsIDAsIDQ0NzMsIDAsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgMTE5MjEzLCAKKyAgICA1MzQ3LCA2OTgwMiwgOTgzNjMyLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgNzg0MjIsIAorICAgIDEyMDY2MSwgNDU1NSwgNTM0MSwgMCwgNzAwNzEsIDEyODY3MCwgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgOTE3ODkyLCAKKyAgICA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDkxNzg4OCwgMTI3NTEwLCA2NjM4LCAwLCAKKyAgICA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIAorICAgIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCA2NTM1NSwgNTM0NSwgMTExMDMsIAorICAgIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgMTI2NjM1LCAyNDIzLCA3NDUxOCwgCisgICAgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgMCwgNDkxNiwgMCwgMzgwLCAKKyAgICAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCAKKyAgICA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgCisgICAgMCwgMCwgMCwgMCwgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCAKKyAgICA1NTM1LCA4MzI5LCA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCisgICAgMTI5MTg4LCA1NjA3LCA0MTA4OSwgMTI4NjI2LCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgCisgICAgODc2NCwgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDkyOTA5LCAKKyAgICAxMTg4LCA3MjU0LCAxMTAwLCAwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAKKyAgICAzNTcyLCAxMDAyMywgNDk1OSwgMTMwNzksIDAsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDAsIDY3Mjc4LCA0MzM2MSwgCisgICAgOTgzNzMzLCA2NzI3NiwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAKKyAgICAxMTA5NSwgODI3MywgNzQzMjIsIDM0NTEsIDk4MzMwOSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgNzM4ODMsIAorICAgIDY4MDIyLCA3Mzk0NSwgOTgzNzM1LCAyMjg4LCAxOTk1NSwgOTUzOCwgOTI5NTMsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIAorICAgIDEyODg5NywgMTEzOTYsIDk4MzQ0MCwgMTEwMTksIDAsIDEyODQxNiwgMCwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCAKKyAgICA1OTI3LCA3NzkxLCA5ODMwODcsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAKKyAgICA5Mzk5NSwgMjgyLCAxMjY1MTAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgMCwgMzQ3NCwgCisgICAgNjcyODcsIDAsIDY3Mjg2LCA2MDgxLCAxMjcyMTcsIDc4ODc0LCA2NzI4OSwgNjcyODMsIDAsIDcwMDAyLCAxMjg5MDgsIDAsIAorICAgIDkzMDEzLCA4NzUxLCAxMTQ5OSwgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgCisgICAgNjgwMTcsIDk2NDIsIDEwOTEyLCA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgCisgICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCAwLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDAsIAorICAgIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgOTE3ODczLCA5ODM5NzgsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDY3MzEyLCAKKyAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCisgICAgOTIzODEsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIAorICAgIDEyMDI2MywgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgMCwgODYwOCwgCisgICAgNDI3ODksIDEyMDYxMywgMTI4NzA0LCAwLCA3Mzg1NSwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKKyAgICA2NzMwNCwgMTY0MSwgMCwgMCwgODk2NiwgMCwgMTI3MjEyLCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIDY3MzEwLCAKKyAgICAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAKKyAgICAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIDAsIDk0MzYsIAorICAgIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCA1NjIyLCAxMjA0MzYsIAorICAgIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCA2NzMyNCwgMjQzNSwgCisgICAgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgMTIwNDQ3LCAzNzY4LCAKKyAgICA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgNDU2NCwgMCwgNzQ2MjMsIAorICAgIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAwLCAwLCAxMTk2MTUsIAorICAgIDY3MzE5LCA2NzMxOCwgNTYyNiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCA0MjYxNCwgNTM1MywgNTYyNSwgCisgICAgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgNjk5NDIsIDY5NTIsIDY3MzI5LCAKKyAgICA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIDEyMDAzOCwgCisgICAgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgNTYyNywgCisgICAgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgNzQzNjUsIDAsIDAsIAorICAgIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDk4MzE1MCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCA3MTE3MiwgCisgICAgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI2NDY0LCA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIAorICAgIDMwNDcsIDEwMzE3LCAxNzUsIDAsIDkzMDI5LCA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgCisgICAgNjc3NTMsIDQzNjUxLCAxMjkxMjksIDY4MTE4LCAxMjgwMjQsIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIAorICAgIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAwLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCAKKyAgICA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgMTIzNDIsIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCAKKyAgICA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgCisgICAgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIDAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAKKyAgICAxMjcxOTUsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgCisgICAgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4Mzk3MCwgMTE5NTg5LCAKKyAgICAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDc0MTMsIDY4MDEyLCA3ODAyOSwgODc2NiwgNDM4NjQsIDc4MDc5LCA1ODU0LCAKKyAgICAxMjUwMDAsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIDkxNzg2OCwgMCwgODQyOSwgMCwgCisgICAgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA5MTc4NjYsIDAsIDEyODQ3OCwgMCwgOTgzOTY3LCA5NDAwNSwgMTEwOTYsIAorICAgIDEyMDgxMywgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCA3Mzc0MiwgNjYsIDY1LCAKKyAgICA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIDgzLCAKKyAgICA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAwLCA5NjU5LCAKKyAgICAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCA3ODE4NSwgMTI4OTU5LCAwLCA5MjcxMywgCisgICAgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIDAsIAorICAgIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAxMTk5MTEsIDAsIDEyODA0MiwgMTI2NTQ1LCA2NjU4OSwgMCwgNjMzNCwgMCwgCisgICAgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCAKKyAgICA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCA3NDQwOSwgNDI0NjQsIDEyMDU2NywgNjY4OTksIAorICAgIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAwLCA2NzY4NywgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCAKKyAgICA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIAorICAgIDcxMDMsIDEyODI5MywgNzEwMiwgNzQ1ODgsIDEyMDc0OCwgMzE0MCwgMTI3Mjc2LCA3OTYwLCA0MzI3MSwgMCwgMTI1MTgsIAorICAgIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIAorICAgIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAwLCAwLCA3NDMwOCwgMCwgMTEzNzEyLCA2NzE1MywgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgCisgICAgNjQ1NTQsIDEwNTc0LCAzODc4LCA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAwLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgCisgICAgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAorICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCAwLCA2NDQ4OCwgMTI4OTc3LCAwLCA2NDA0MSwgCisgICAgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgNzg4NjEsIDExOTEzNCwgCisgICAgMCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgOTIxOTAsIAorICAgIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgCisgICAgODY3MiwgMTA4NDUsIDExOTY0LCAwLCAxMjgwMTQsIDAsIDAsIDY4NDU1LCA0Mjg2MywgNzM4MzksIDAsIDAsIDY3NzAwLCAwLCAKKyAgICAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgCisgICAgMTI5MTI2LCAxMjI4MCwgNzAzNjcsIDU0MCwgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDAsIDExMDczLCAwLCAKKyAgICA2NDMxNiwgMCwgMCwgODIwLCA0MTc0MSwgMCwgMTIwNjY3LCAxMjQ5ODEsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIAorICAgIDY5OTM0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgMCwgCisgICAgMTI3OTM4LCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIAorICAgIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMTI4ODgzLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCAKKyAgICA0MzYwLCAxMjcwMDksIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAxMjg2MDYsIDAsIAorICAgIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ1NSwgNDM3OTAsIDEyMDI3NCwgMTMwNzUsIAorICAgIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgCisgICAgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCAKKyAgICA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgCisgICAgOTIzNjQsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIAorICAgIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDAsIDYwNywgMCwgMTE5ODUyLCAxMjg4NDYsIDEyOTIzLCAKKyAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIAorICAgIDU4NDAsIDQyODM4LCAwLCA0MDk3OCwgOTgzODk3LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAxMDUzOCwgCisgICAgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIDAsIAorICAgIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgOTE3OTY2LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgCisgICAgMTA3MjcsIDU2MTUsIDEyOTA3MSwgMTIwNTUxLCA0MjM4MCwgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAKKyAgICAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgCisgICAgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgCisgICAgOTg1OCwgNjAzNywgMCwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIDEyOTAzMCwgCisgICAgMCwgNDEwMzYsIDY2ODk3LCAwLCA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAwLCA2NDcwMCwgMTAwMTEsIAorICAgIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAwLCA2NzcyNywgMTI1MTA2LCAyMjIzLCA2NDk1MiwgMTA0MDIsIAorICAgIDAsIDEyNzE3OSwgOTIzMDQsIDEwNjAzLCAwLCAwLCA5ODMxMTMsIDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIDE5NDg5NSwgCisgICAgNzgzNjcsIDY5OTc2LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIDAsIDc0ODI5LCAKKyAgICAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCAKKyAgICA5MTc2MjQsIDQzNzQwLCA5ODMxNzcsIDQwOTY2LCA5MTc2MjIsIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgCisgICAgNzQyMzcsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgOTE3NjE3LCAxNjUyLCA3NzIsIDY2ODgsIAorICAgIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAxMTkxNTksIDczOTU1LCA5MjMxNSwgNjQ2OCwgCisgICAgNDE5NzYsIDk3MjAsIDkxNzYwNiwgMTExNzksIDQxOTcwLCA2NjI1NSwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIAogICAgIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgCi0gICAgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIAotICAgIDM2MzgsIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCAwLCAKLSAgICAwLCAxMTc1OSwgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAxMjc1NTgsIDQxNjk4LCAKLSAgICA0MjIzNywgMCwgNzAwMiwgOTgzNjc4LCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAKLSAgICAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIAotICAgIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIAotICAgIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgCi0gICAgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCAKLSAgICA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgOTgzMTQwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAKLSAgICAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIDM5MTcsIDAsIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCAKLSAgICA0MTQ2MSwgMTI4ODIzLCAwLCAxMjc5MTIsIDAsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAotICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDAsIDAsIDkwOTQsIDAsIDExNzU4LCA2ODQyNSwgMCwgMTA2NCwgNDI0NjcsIAotICAgIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMCwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIAotICAgIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgOTgzMjY5LCAyOTExLCAwLCA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIAotICAgIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgCi0gICAgNjk5MjMsIDYwNzQsIDk2MTgsIDEyODY2OCwgOTgzOTUyLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgMCwgCi0gICAgMTIwNjAwLCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAxMjU5OCwgCi0gICAgOTgzMTkxLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDcwMDI5LCAKLSAgICA5OTA1LCAwLCA2NTczMCwgMCwgMTIwMzc0LCA4NDI3LCAxMjAzNzUsIDU1MjQ2LCAxMjAzNzYsIDAsIDExNDk3LCA2NDY4NywgCi0gICAgNzQwMDgsIDQyNTkyLCAzODcxLCAwLCAxMjgzMDUsIDkxMTEsIDU3NDEsIDAsIDE5NDg0NiwgMTIwMzY2LCAxMTkxMTEsIAotICAgIDEyMDc0NSwgMCwgMTIwMzY4LCAwLCAxMTY0OCwgMCwgMTk0ODczLCAxMjAzNjQsIDQxNTg3LCAxMjAzNjUsIDAsIDc0MzIyLCAKLSAgICA0MjExMywgMCwgMTI3MTU1LCAxMjE3MiwgMCwgNzQ1MzAsIDY1Mjk4LCA2NTcyMywgMTk0ODQwLCA3Mzg3MSwgNjU3MjQsIAotICAgIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIDAsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCAKLSAgICA5ODMxMTAsIDc4NzUsIDAsIDQxNTk4LCAzOTkzLCAwLCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjg1MjEsIDQzMDI5LCAwLCAwLCAKLSAgICA2NTE3MywgNjUyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMzc1LCA1NDAyLCAwLCAwLCAxNjg3LCAxMjA1MDMsIDkxNzgxNywgCi0gICAgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDc4NzUzLCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAwLCAKLSAgICA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCAwLCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIDAsIAotICAgIDEwNzEwLCAwLCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCAxOTUwOTEsIDAsIDExOTYzNiwgNjc4NTcsIDEyMDY4NywgCi0gICAgMCwgOTgzMDY2LCAxMTc1NSwgNjYzMDUsIDAsIDAsIDEwOTE3LCA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCAKLSAgICA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgMCwgMCwgMTE0MTMsIDAsIDAsIDUyODMsIDE1ODYsIDQ5NzgsIDAsIAotICAgIDE5ODQsIDExODMwLCAwLCA5MjI5MywgNDA5ODQsIDEyODMwNiwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDAsIDQxNjYzLCAwLCAKLSAgICAwLCAwLCA5MjM3LCA5Mzg1LCA0MTY0OCwgMCwgMTk0NTgwLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIAotICAgIDQxMjg3LCA5MjYxMCwgMCwgMCwgNDIyMTksIDEyODI1NywgMCwgNDE5ODcsIDQxNjc2LCA5ODMwNTksIDEyMDgyMywgCi0gICAgOTgzMTQ0LCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgCi0gICAgOTgzMTExLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgCi0gICAgNjQzNjgsIDk4MzIzOSwgMTI4Nzk1LCAwLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCAKLSAgICA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAwLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCi0gICAgMTE4ODMxLCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDAsIDAsIDAsIDU4MDQsIDExOTc2LCA4NTU0LCAKLSAgICA5MjcyMSwgMCwgMCwgOTA1NywgNDIyOTQsIDQxMjE4LCAwLCAwLCA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDc4MTQyLCAKLSAgICA0MTIyNSwgOTI2MjEsIDQyOTE1LCA5ODM2NzYsIDEyODY4NCwgMCwgNDQwNywgMCwgNjU4MDksIDExOTA3NCwgMTk0ODIxLCAKLSAgICA4NDQ4LCA3MTQxLCA3NDE4MywgMCwgMTI2NzUsIDEyNjU5LCAwLCA0MjM2MywgMTIwNjI0LCAxOTQ4MjQsIDU1MjczLCAKLSAgICAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMjA1MDAsIDExOTE1OCwgCi0gICAgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgCi0gICAgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCA2NDc5OSwgNDIwNDcsIDAsIDAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCAKLSAgICA5ODM3NjAsIDc0MzAwLCAwLCAxMjczMDgsIDc0ODQwLCAwLCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgCi0gICAgOTY4MywgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCAwLCA2NjMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYzMTcsIDY5OTQ1LCAKLSAgICA2NjMxNSwgMjEwNiwgMTIwMjIyLCAxMTI3MywgMCwgNDMwMDQsIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIDY2MzI0LCAKLSAgICA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgCi0gICAgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMCwgMjMyMiwgMTIwMzcxLCAKLSAgICA5ODM1ODQsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgMCwgMCwgMTI4NzkzLCA5ODMzOTgsIDQzMjE2LCAKLSAgICA2MDg5LCA3ODY4MiwgMCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgCi0gICAgNzQ0LCAwLCAwLCAwLCA2NTgyMywgMTI3ODI2LCAwLCAzNTUxLCAwLCAwLCA0NjIzLCA1NTI2OCwgMCwgNDU5OCwgOTgzMTYyLCAKLSAgICA2NTEzNiwgMTI3MTM2LCAwLCAwLCAxMDg1MSwgMCwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAxMjA3NzgsIAotICAgIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgMCwgMCwgCisgICAgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCA0MjkyNCwgOTI1ODgsIDExNDUwLCAwLCAKKyAgICAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIAorICAgIDY5MjQ0LCAxMjg0MTgsIDcwMzc1LCAxMTc1OSwgMTk0OTAzLCA2MzY4LCA3NDgyMywgNjczMDMsIDQxNDIzLCA4MDc4LCAKKyAgICAxMDUwNCwgMTI3NTU4LCA0MTY5OCwgNDIyMzcsIDk4MzQ1MiwgNzAwMiwgMTI1MTM1LCA0MTQzMCwgNDIyNjcsIDQxMDUxLCAKKyAgICA0MTQ4NCwgMCwgMTI4MDU2LCA0MTA1MCwgNDE0NzMsIDEwNDY2LCAxMzA5OSwgOTgzMzI3LCA3MDM3MSwgOTgzNzc3LCAKKyAgICA2NDM1LCAwLCAxMTM2MiwgMTI4OTczLCAwLCA2NTM4MiwgOTI3NzAsIDQxNDIwLCA5ODM2NTUsIDM2MjUsIDc4MTU3LCAKKyAgICA0MTQwOSwgMCwgNjk2MzksIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIDQxNDI0LCAKKyAgICA5MTc1OTgsIDEyMDU0NiwgMCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIAorICAgIDEyNzUzOCwgMCwgNzgyNTEsIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDEyNTE0MSwgMCwgCisgICAgMTI4MjU3LCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAKKyAgICAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDEyODQxMSwgMzkxNywgMCwgMTE3MzIsIDAsIAorICAgIDk4MzE4MCwgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCA4ODE5LCAxMjY2MywgMCwgNDExODQsIAorICAgIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgNjg0MjUsIAorICAgIDcxODg2LCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgMTMyMjQsIAorICAgIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA5ODMyNjksIDI5MTEsIDEyODIxOCwgCisgICAgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAzNzg3LCA0MTE3NCwgMCwgNDE0NTgsIDY3MTQ3LCA0MTQ2MywgNDI0MTMsIAorICAgIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgMTI4NjY4LCA5ODM3MjcsIDQzNDQwLCAKKyAgICA3NDUzOSwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgMTU5OSwgMTEzMzMsIAorICAgIDE5NDg5NiwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIDEyNTk4LCA5ODMxOTEsIDEyMDczNCwgNzg3NDUsIAorICAgIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIDAsIDY1NzMwLCAwLCAKKyAgICAxMjAzNzQsIDg0MjcsIDEyMDM3NSwgNTUyNDYsIDEyMDM3NiwgMTk0OTQwLCAxMTQ5NywgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgCisgICAgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDAsIDE5NDg0NiwgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAwLCAKKyAgICAxMjAzNjgsIDk4MzU3MCwgMTE2NDgsIDAsIDE5NDg3MywgMTIwMzY0LCA0MTU4NywgNzAzOTEsIDEyNzA2MSwgNzExMDgsIAorICAgIDQyMTEzLCAwLCAxMjcxNTUsIDEyMTcyLCA5Mjk4OCwgNzQ1MzAsIDY1Mjk4LCA2NTcyMywgNjgyODksIDczODcxLCA2NTcyNCwgCisgICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCAKKyAgICA5ODMxMTAsIDc4NzUsIDAsIDQxNTk4LCAzOTkzLCAxOTQ5MDksIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIAorICAgIDAsIDY1MTczLCA2NTI4NiwgMCwgNzAzMzEsIDkxNzc5OSwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCAxMjg3NDgsIDAsIAorICAgIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAKKyAgICAxMzM5LCAxMTczMSwgNzg3NTYsIDEyNzEwOCwgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgMCwgCisgICAgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAwLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIAorICAgIDkyOTAwLCAwLCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKKyAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgMCwgCisgICAgMTI4OTU4LCAxMTQxMywgMTI3MjUwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAxOTg0LCAxMTgzMCwgNDM4MTksIDkyMjkzLCAKKyAgICA0MDk4NCwgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCA5ODMwOTMsIDAsIDY4MzEzLCAKKyAgICA5MjM3LCA5Mzg1LCA0MTY0OCwgMCwgMTI4OTUzLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIDQxMjg3LCAKKyAgICA5MjYxMCwgMCwgNzE5MTcsIDQyMjE5LCA3MDExOCwgMCwgNDE5ODcsIDQxNjc2LCA5ODMwNTksIDEyMDgyMywgOTgzMTQ0LCAKKyAgICA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgOTgzMTExLCAKKyAgICA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIAorICAgIDEyNzI3MCwgMTI4Nzk1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTI3OTYyLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCisgICAgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDAsIDAsIDAsIDU4MDQsIDExOTc2LCA4NTU0LCAKKyAgICA5MjcyMSwgMCwgNzAxNjcsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMTI1MDk3LCAwLCA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIAorICAgIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODUxMiwgMCwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgCisgICAgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCAKKyAgICAxOTQ4MjQsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAKKyAgICAxMDI5NiwgMTE5MTU4LCA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgCisgICAgODcwOSwgMTI4MjgzLCAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMTk0ODIwLCA4NDcwLCAKKyAgICAxMTgwNywgNjU4OTcsIDU3NywgMCwgOTgzNzYwLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMTI2NDc0LCAwLCAxMjg3OTEsIAorICAgIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCAwLCA2NjMzMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTk0ODMwLCA2NjMxNywgNjk5NDUsIDY2MzE1LCAyMTA2LCA5Mjc2MiwgMTEyNzMsIDEyNTA2OCwgNDMwMDQsIAorICAgIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIAorICAgIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgCisgICAgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAKKyAgICAzNTQ3LCAwLCAwLCAxMTM3NDYsIDk4MzM5OCwgNDMyMTYsIDYwODksIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAKKyAgICAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCA5Mjg4MywgMTEzNzM5LCAwLCA2NTgyMywgCisgICAgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDAsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgNjUxMzYsIAorICAgIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMCwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAxMjA3NzgsIDc4NjQ4LCAKKyAgICAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgOTgzNjk2LCAwLCAKICAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKLSAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKLSAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCi0gICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAotICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKLSAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAotICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5NDYsIAotICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKLSAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwOSwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAotICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCi0gICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCi0gICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAotICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKLSAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKLSAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKLSAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCi0gICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAotICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjY4LCAKLSAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCi0gICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCi0gICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKLSAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4Mzk0OCwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKLSAgICA5ODMyNjAsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKLSAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNTIsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKLSAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAotICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKLSAgICA5ODM5NDUsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKLSAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MTEsIDg4MTAsIDc0NDk5LCA2ODYsIAotICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCi0gICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjQ4LCAwLCA2NTQ1NSwgCi0gICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAotICAgIDEwMzk2LCA3NDEzNSwgOTgzNDUzLCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAotICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKLSAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAotICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKLSAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKLSAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCi0gICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCi0gICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAotICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKLSAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKLSAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCi0gICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKLSAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCi0gICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCi0gICAgOTgzMjM1LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAotICAgIDk4MzIzNywgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAotICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCi0gICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCi0gICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAotICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCi0gICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKLSAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCi0gICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKLSAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCi0gICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKLSAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAotICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCi0gICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAotICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKLSAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkzMCwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAotICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NTUsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAotICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4NDI3LCAxMTQwLCAKLSAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCisgICAgODc1NCwgMTI4NjUyLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDEyMDIzOSwgOTEzNiwgNjY4ODksIDQ0MDEsIAorICAgIDQxMjgwLCA3MDgwMSwgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTI4MzI3LCAyMzE4LCA5ODMxODMsIDY2MzYxLCAKKyAgICA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA2NTI2NiwgMTIwODI3LCA2NzI3OSwgOTI0NjIsIDY5NzAsIDU0MDQsIAorICAgIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgCisgICAgNjU1MDUsIDEyMDAwMiwgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgNDIwNTIsIDAsIDY3MjY2LCA2NzY1MSwgMCwgCisgICAgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDAsIDAsIDAsIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgCisgICAgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIAorICAgIDExMzY4NiwgMCwgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDAsIDM1MTIsIDExOTYzMywgCisgICAgOTI5NjUsIDgxMDMsIDAsIDAsIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgCisgICAgNjUxNDYsIDcxMzE0LCAwLCAwLCAxMjkxNzcsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgCisgICAgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgOTgzMDcxLCAwLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAKKyAgICAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIAorICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIDEyODIxMywgCisgICAgMTk0ODYxLCAwLCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIDAsIDAsIAorICAgIDEyNTExNywgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjQ5NjEsIDEyNTA2MCwgMCwgMTIwNDkyLCAKKyAgICA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgNDI5LCAwLCAxMTkxMjksIDAsIDE5NDg0OCwgNjU3OTIsIAorICAgIDEyODQwOCwgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxMjg5NzAsIDAsIDAsIDQ5MTksIDEwNTkwLCAKKyAgICAxMjg1NTYsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDY4MjUzLCAxMjcwMDQsIAorICAgIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgODA1MCwgMCwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgNzAzNTQsIAorICAgIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCAKKyAgICA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgNjgyMjQsIDEyNTA1NSwgNDE3NjQsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCAKKyAgICA0Mjg5NiwgNzQxNDcsIDM1NTksIDk4MzkxOCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgNzA4NTMsIDExOTAyOCwgMCwgCisgICAgMCwgMTI4NDQyLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAxOTQ4ODQsIDY4MzIyLCA3MDA3OSwgODQ2MSwgNjc3MjEsIAorICAgIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgNDM4NDcsIDAsIDY4MSwgOTgzMjUyLCAKKyAgICA3MDMsIDAsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIDkyMjg4LCA3MDUxNCwgMCwgOTI1MzIsIDAsIAorICAgIDExMzM4LCAxMjA3NjgsIDMyNzYsIDAsIDAsIDY1OTI4LCAwLCAwLCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgCisgICAgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgCisgICAgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMCwgOTgzOTQ1LCA1NjIzLCA1NzE3LCAKKyAgICA1Nzc2LCA0MzQ4OCwgMCwgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCA2Nzg0OCwgCisgICAgMTI4MTI4LCAwLCAwLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKKyAgICA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCA2ODYsIDAsIAorICAgIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgNjUxMTgsIAorICAgIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIDAsIDY1NDU1LCAwLCAKKyAgICA3NDMyOCwgMCwgNzQ1NjEsIDk4MzcxOCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDEyODM1MCwgNDM1NTcsIDEwMzAwLCAKKyAgICAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgMTE4OTQ1LCA5OTg0LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzAzNDksIDE0NTgsIAorICAgIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEyNzkxMCwgMTE0NzksIDAsIDEyMDM1NiwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3ODExNCwgCisgICAgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAxMTM2NzMsIDc2MjYsIDAsIDAsIDEwNDUsIAorICAgIDAsIDU2MzEsIDQxMTEzLCAxMjc1NDQsIDAsIDQzNzA3LCA3NDEyNywgMCwgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIAorICAgIDQzNjIsIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMCwgCisgICAgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgMzk4OCwgCisgICAgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDAsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMCwgMCwgNDM0NDYsIAorICAgIDAsIDY2NTEzLCA2MjU2LCA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODg3OCwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIAorICAgIDAsIDQ0ODgsIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIAorICAgIDY4NDY2LCA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMTI0OTk4LCAKKyAgICA2MTQsIDcwMzYxLCAxMjcyMTUsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAKKyAgICAxMjcyMTEsIDEyODM2NiwgOTI1MTMsIDEwNTAsIDc1NDksIDAsIDAsIDkzMTQsIDcwMzY1LCA5Mjg5OCwgMTIwNjE2LCAwLCAKKyAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAKKyAgICAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCA2NzQ2LCAKKyAgICAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAorICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAwLCAxNTIxLCA5ODk2LCAKKyAgICA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAxMjUyNywgMCwgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCAKKyAgICA5ODQ5LCA1MjM5LCA2NTc3MSwgOTgzMjM1LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDk4MzEzOSwgCisgICAgMTE4OTc3LCAxMjg3MywgMjI4MywgOTI5MzEsIDAsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIDAsIDU1MjMxLCAKKyAgICA0MTEwMywgOTIyNTYsIDY0NTY1LCA0NzczLCAwLCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCA5MTc1NjcsIDg3MzEsIAorICAgIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgOTk5NywgMTI4MzQsIDAsIAorICAgIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAwLCA3NDc3NiwgNDI4MSwgNDc2OCwgMTIwNTcyLCA0MTUzNSwgCisgICAgNDA5OSwgOTAxNywgNjk5OTMsIDAsIDc4MDk1LCAyMjI1LCA3ODA5NiwgMTE4OTQ2LCAwLCAwLCA3ODA5OCwgMCwgNDI4MTQsIAorICAgIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCA3MDk1LCA4Mzc5LCAKKyAgICA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIDE5NTAwMywgOTk2MiwgCisgICAgMCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAKKyAgICAxMTM3MzAsIDc0NDE5LCAwLCAwLCA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA5MjQxNSwgMzc4MiwgCisgICAgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCA4MjYxLCAxMjg1OTUsIDAsIDEwODM1LCAwLCA2NTUzNiwgMCwgMTIwNDYzLCAKKyAgICAxMjUwNTEsIDc3MDIsIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgCisgICAgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgMTIwNDc5LCAxMjg1NzYsIDAsIDQyMjU3LCA1Njk2LCAKKyAgICA5MjY3NywgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIAorICAgIDQxNDkwLCAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCAKKyAgICA3ODA2NywgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIAorICAgIDQzMTk0LCA2NDcxMiwgMTA3NDQsIDAsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgCisgICAgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCAwLCAxOTQ5ODksIDE5NDcxOCwgMCwgNzgyMTIsIDEyNzc0NiwgCisgICAgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIDY0NzQ4LCAxOTQ5MTAsIDc4NzMzLCAxMDIwNSwgMzU0NSwgCisgICAgOTgzNTg1LCA2OTg0LCAwLCA3NDA1MSwgMTI4OTAxLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAwLCAxMjUwMzcsIDAsIDk5MTEsIAorICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4MjA4LCAxMTQwLCAKKyAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDY4MzI2LCA5MTc5NjUsIDE4MTUsIDE5OTEwLCA4OTAsIDAsIDMyNjcsIAogICAgIDkyMjkxLCAwLCAxMDEyMywgMCwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCAwLCAKICAgICAxMjgzNDcsIDAsIDAsIDAsIDE5OTM4LCA2NTkwNiwgMTI3ODE5LCAwLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgCi0gICAgMCwgNjEzNCwgNDEyNDYsIDY0NDAyLCAwLCA2OTg5OSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAotICAgIDUyNywgMCwgMCwgOTI2MTIsIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAotICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIAotICAgIDkyNzA4LCA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgCi0gICAgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgCi0gICAgNzM3MzQsIDAsIDAsIDAsIDY2NDQ5LCAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAwLCAwLCA5MjI5NCwgCi0gICAgMCwgMTA0NCwgNDEyNzYsIDAsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMCwgMCwgMCwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAKLSAgICAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCA5ODM0NTQsIDcwOTgsIDAsIAotICAgIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIAotICAgIDkyNTEwLCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzU3OCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIAotICAgIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgCi0gICAgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCAxMjY1ODYsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCAwLCAKLSAgICAwLCAwLCAwLCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDAsIDEyMTMwLCAKLSAgICAwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCAKLSAgICAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIAotICAgIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCA5ODM4MDgsIDEyMDQxMywgMCwgCi0gICAgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgOTgzOTIzLCAwLCAwLCAxMTkxODcsIDIxMzUsIDc4ODY4LCAwLCAwLCA3ODg2OSwgCi0gICAgNDIzMTMsIDU1NzksIDkyNDEyLCAwLCA5ODMwODIsIDk0MDAyLCAwLCA1NTc4LCA0MTc3NCwgMTI4MTE1LCA0MjAyMywgCi0gICAgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDAsIDAsIDEyNzUwNiwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCAKLSAgICA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDExOTAwNiwgNjU3MDIsIAotICAgIDAsIDEyMDgwMSwgNjUyNTEsIDAsIDY1NzEwLCAwLCAwLCA2NzY3MiwgMCwgNTM3MCwgMCwgMjkzMSwgMTYzOCwgMTA5NjYsIAotICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDEyODgzMCwgODE3MiwgNDIwMTcsIDAsIDEwODQ0LCAwLCAKLSAgICAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIAotICAgIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAxMjY0NjUsIDUyMTEsIDk4MzA4MywgNjQwMCwgMCwgCi0gICAgMTk0OTgzLCA3MDA1NCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgCi0gICAgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIDkwMDcsIDExODc5NiwgNDE1ODgsIAotICAgIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgMCwgNDIxMDQsIDAsIDk4Mzk4MCwgCi0gICAgMjMyOCwgOTI0MDksIDEwNzEsIDQyODk5LCAwLCA3NDg0OCwgMCwgOTgzNTgwLCAwLCAxMDQ3LCAwLCAwLCA2NDc5MCwgMCwgCi0gICAgNjk3MjMsIDEwNjUxLCAwLCAwLCAwLCAwLCA5MjIwNiwgMTE5MTgxLCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAKLSAgICAwLCA1NzEwLCAwLCA2NzkwLCA2NTE2OCwgMTMyMTYsIDAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIAotICAgIDU3MTUsIDY5NjU0LCAwLCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDczNzY4LCAKLSAgICAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA3NDQ5OCwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDAsIDc4NjA3LCAKLSAgICA5MTk2LCA2OTY3MCwgMCwgMCwgMCwgMCwgMTE4OTExLCAwLCAwLCAwLCAwLCAwLCAxMjAwMTAsIDAsIDg3MDEsIDY4MTMwLCAKLSAgICAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCA2NDk0NiwgCi0gICAgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIDY1NDU3LCAKLSAgICA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIDk4Mzk2NiwgCi0gICAgNTA4NCwgMCwgMCwgMTE4ODYxLCAwLCA3MzMsIDkxNzg3NiwgNzgwMTQsIDc4NDM2LCA3ODQzNSwgNDE2NzcsIDAsIDkyMTgsIAotICAgIDE3MzEsIDAsIDk4Mzc0NiwgMCwgNjc5OTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCAKLSAgICA1MzU4LCA5ODM3NDQsIDAsIDkxNzc2NywgNjQ0MjQsIDk4MzIzMSwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCA3ODMxNSwgCi0gICAgNjg0MzAsIDY3OTgwLCA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAKLSAgICAxMTU4MCwgMCwgNjQ2MDEsIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI4NCwgCi0gICAgOTgzNzIxLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIAotICAgIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAKLSAgICAwLCAwLCAwLCA5ODM5MjQsIDAsIDkwMTMsIDQwNTQsIDAsIDk4MzU3MCwgOTgzNjI4LCAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIAotICAgIDI1NDksIDc0NDY5LCAwLCAwLCA1NTg0LCA4MzU4LCAwLCA2NDIxNSwgOTIyMTksIDEwOTE5LCAwLCA3OTgwLCAxMjY2MDEsIAotICAgIDk4Mzc4NCwgMjIxOCwgNDE4MDAsIDU1ODksIDAsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAwLCAwLCAKLSAgICA0MzQ1MiwgNzg2MDksIDAsIDQyNTczLCA2Nzg1NiwgMCwgNzgxMjksIDAsIDAsIDc0MzkyLCA4MTM1LCA2NDUwLCAxMDA1NSwgCi0gICAgNzc5OTYsIDAsIDAsIDExOTIyNSwgNTY1NywgMCwgOTYyNiwgMCwgNzc5OTQsIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIAotICAgIDEyMDc5OSwgMCwgMCwgNTY1MiwgMTA5NDUsIDAsIDY2NDg2LCAwLCAzNjYxLCA3ODYzLCAwLCAwLCAwLCA3NDUwOSwgCi0gICAgOTgzODUyLCA1NjU5LCAwLCA3ODY5MiwgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDAsIDEwNTUsIDkxNzYyOCwgCi0gICAgMTI3NzkyLCA2NjMxMCwgNzQwMzAsIDAsIDEyMTQ2LCA3Mzk1NSwgNzM5NTYsIDExNjE4LCAwLCAxMjY5OTAsIDAsIDEwMjcyLCAKLSAgICAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgOTgzODg3LCA2NDg3MCwgMCwgMzQ2NywgCi0gICAgOTgzODkxLCAwLCAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCAKLSAgICA3MDAzNiwgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTgzNzI2LCAwLCA5NDAyMCwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCAKLSAgICA2Mzk5NCwgMCwgOTA5MSwgMTA3OTgsIDAsIDEyODE2NiwgMTAxODYsIDAsIDc3MzIsIDk4MzcyNCwgNjQ1NTYsIDAsIDAsIAotICAgIDU2NjgsIDc0NDQ1LCAwLCAxMjg2NjMsIDU2NzAsIDEyNjYxMCwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgCi0gICAgMTk5NTIsIDEyMDgwNywgMCwgMTI3NDksIDc0NTUxLCAwLCAwLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAKLSAgICAxNDk3LCAxMjgyODYsIDk0MDA0LCAwLCAwLCAzNTcxLCAxMzI0NywgMCwgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgCi0gICAgNjc4OTYsIDQzMTkyLCAwLCA3ODI2NSwgNTUzLCAxMjA2NTMsIDAsIDEyODU1NCwgNTgyOSwgMCwgNDU4NywgNzgyODUsIAotICAgIDY1OTEyLCAwLCAxMjc0NiwgMCwgMCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDk0MTAxLCA5NDEwMiwgOTQwOTksIDY0OTA1LCAKLSAgICA5NDEwNSwgOTUxMiwgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDAsIDQxNTY0LCAwLCA1NTIxOSwgCi0gICAgMTI4ODMyLCA5ODM4NTEsIDAsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAwLCAKLSAgICAxMjcyNzAsIDAsIDExODg4MCwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDAsIAotICAgIDk4MzgwOSwgNjk4MTUsIDU2MzYsIDAsIDUzMjksIDAsIDU2MzgsIDExOTkxOCwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgCi0gICAgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgMCwgMTE5MjAsIDgyNzQsIAotICAgIDAsIDAsIDE2NTcsIDQxNTYxLCA3ODI5OSwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIAotICAgIDc4MzAwLCA0MjIyNywgMCwgMCwgNDE2MzcsIDY3ODcyLCAwLCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAKLSAgICAxMTcwNSwgNTY0MiwgMCwgNTQ4NiwgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMCwgCi0gICAgMTA1OCwgMCwgNjc2MzAsIDAsIDAsIDExNDQsIDc4NzUwLCAwLCA0MjIyOCwgMCwgNzM4OTAsIDExODk3MiwgMCwgMjgwMCwgCi0gICAgMCwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMCwgNTYwOCwgNjU4OTAsIDQzODA4LCAwLCAKLSAgICA2NzYyMSwgMTE5OTM0LCA5MDAwLCAwLCAwLCA5MjY3MywgMTg2NSwgMCwgNTYxMywgNjk5NTAsIDAsIDAsIDU2MTAsIDAsIDAsIAotICAgIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgNDM5OTksIDI5OTcsIDAsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCAKLSAgICA2NTM3NiwgMjQxMiwgMCwgODE4NiwgOTgwNywgNzQyNjksIDkyNTQ3LCAxMzEzMCwgNjU4NzQsIDAsIDU4MDcsIDAsIAotICAgIDEwMDMwLCA1MzA2LCAxMjM2NCwgMTI4MDY0LCAwLCAxMTcwNCwgMCwgOTI1ODMsIDEwMjExLCAwLCAwLCAwLCAwLCAxMTcwNiwgCi0gICAgOTcxMCwgMCwgMCwgMCwgNDEzLCA2NTYyMywgNzExOCwgMCwgOTEzMywgNzQyNjIsIDAsIDEwNDIsIDAsIDY0Nzc5LCAKLSAgICAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMCwgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCA5ODM4OTksIAotICAgIDEzMDgsIDAsIDI1MzQsIDgxMCwgMCwgMCwgMCwgMCwgMCwgMTkxNywgMzAwMCwgMCwgMCwgMTIwNzM5LCAyMzY0LCA5MjQ0MywgCi0gICAgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgMTIwNzc5LCAxMDAyNywgMCwgMTI4MTU0LCAxMjMzNywgMTIwNzIyLCAxMjczNjgsIAotICAgIDk4MzE2NywgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgxODIsIDYzNjMsIDI3NDgsIDAsIDAsIDY1MDQxLCAKLSAgICA5MjI3NiwgNDQwMTEsIDg3MzAsIDk4MzA2NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCAwLCA3Mjc1LCA3ODMwNCwgCi0gICAgOTM1LCAwLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAxMjg4MzUsIDc4MzA4LCAKLSAgICA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDAsIDE5NDk5OCwgMCwgMTA2NzMsIAotICAgIDExOTIxNywgNzI0OCwgMCwgMTI4MzQ2LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgMTY0OSwgMCwgOTY0LCAwLCAxMjc4NzYsIAotICAgIDc4MjI2LCAxMjg3NzUsIDEyNzUxMiwgMCwgMCwgMCwgMCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgCi0gICAgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgMCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCAKLSAgICA5ODM5MTgsIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA5MjcyNCwgNjQ3OCwgCi0gICAgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCA5ODM3OTUsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIAotICAgIDQ0MDksIDAsIDAsIDY0Nzk4LCAwLCA1MzQ2LCAwLCA5NDA0NywgNjIzNywgNDg3NCwgMCwgOTE3NiwgMCwgMTI2NTUzLCAKLSAgICA2NTIzMSwgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAwLCAKLSAgICAwLCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgNTM0MiwgODMxNywgMCwgNjgxNjMsIDUzNDAsIDAsIDEyNzgyMCwgCi0gICAgNDM2MzUsIDczOTI4LCAxMjc1MjksIDAsIDAsIDAsIDEyODUxMCwgNjU0ODIsIDAsIDkxNDIsIDAsIDEyNjQ3MCwgMCwgCi0gICAgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMCwgMTI4MTc2LCA1MjksIDg1ODAsIDAsIDAsIDEwNTg2LCAKLSAgICAxMDc5MCwgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCA5ODM5MzgsIAotICAgIDExMzc2LCA3NDM3OSwgMTA3MjEsIDY3NjY0LCAzNDM4LCA0MjA5NywgMTI3MjY3LCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgCi0gICAgNzgzMDUsIDEyMDE4MywgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODg0NCwgCi0gICAgNDE4NzEsIDQxMzM4LCAzNzM0LCA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIAotICAgIDEyNzkzNywgMCwgNTE2MSwgMTA1NzIsIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAxMjY2MDUsIAotICAgIDExOTQ4LCA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgCi0gICAgMTAwMzEsIDAsIDk4NzAsIDY4NjQ1LCA4NjIwLCA2NTgyNCwgMCwgMTE5MzgsIDAsIDcyODUsIDAsIDExOTU3NywgNDI2NzgsIAotICAgIDAsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAwLCA5ODM5MzYsIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgCi0gICAgNjg2MjQsIDAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCAwLCAwLCA0MjczMiwgCi0gICAgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDAsIDAsIDEyODY0NSwgCi0gICAgNjM0OCwgMjQzLCAxMzIwMCwgOTgzODEzLCA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgCi0gICAgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAwLCA0MjMwLCAwLCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCAwLCAKLSAgICA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDAsIDAsIDc4NDY2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDAsIDY2MzExLCAKLSAgICA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCAwLCAwLCA3MDA0NywgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAKLSAgICAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgCi0gICAgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAxMjgxMjgsIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIAotICAgIDc4MjY4LCAwLCAwLCAwLCA3ODI3OSwgMCwgMCwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIAotICAgIDEyNDQ5LCAxMjg1NTIsIDAsIDAsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAwLCAxMTkyNDksIDAsIDExNTk1LCA2NDg5MywgCi0gICAgMCwgNDM0MzUsIDAsIDAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDAsIDU0OTQsIDQ2MzksIDk4MzE0NywgCi0gICAgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgCi0gICAgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIAotICAgIDk4MzY4MiwgMCwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCA5ODMyNDYsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCAKLSAgICA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgCi0gICAgNzEzMTcsIDY0OTIzLCAxMjgwNDAsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgMCwgCi0gICAgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDcwMDY4LCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDAsIDAsIAotICAgIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKLSAgICA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCi0gICAgOTgzMjU5LCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNTcsIDEyNzE2MywgNjgxOTMsIDM0NywgCi0gICAgMCwgMCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDc4NzY5LCAxMjE0MywgCi0gICAgNjk2NTcsIDc4NTEyLCAwLCA0MzQ0MSwgNDE4MDQsIDc4NTIzLCAwLCA3ODUyNSwgMCwgMTI4ODU5LCA0MTU4NCwgMTA2ODEsIAotICAgIDAsIDk4MzY5NSwgNzM5MzgsIDAsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgNzg1MzQsIDk1MTgsIAotICAgIDY2MDksIDEwNDM0LCAwLCAxMTMxOSwgMTA5NywgMCwgOTE3ODUwLCA0MTczMCwgOTgzMjE0LCAwLCA3Mzg0NywgNzg3NjEsIAotICAgIDY1MTcyLCA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCA5MTc2MTIsIDEzMTEwLCA0MTcyNiwgOTgzODU1LCAwLCAKLSAgICAxMDAwLCA2OTY1MSwgMCwgNDExNDAsIDEyMDksIDczOTc4LCAwLCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCAKLSAgICAwLCA2ODIxMywgMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMjcwNjIsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAotICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgMCwgMCwgCi0gICAgNjQzOTgsIDAsIDExOTk3MCwgMTIzMTEsIDk4MzcyNywgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCAKLSAgICA3ODc5MywgNjY2NzAsIDAsIDAsIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIAotICAgIDAsIDk2MjcsIDc4NTM2LCA3ODU0MiwgNzg1MzUsIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAKLSAgICAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgCi0gICAgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIAotICAgIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAKLSAgICAwLCAwLCA2NDMzMiwgMCwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIAotICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDAsIDAsIDk2NjAsIDk4MzI4MCwgMTMwMTIsIDQ1NzEsIDAsIDAsIDEyMDE2NCwgCi0gICAgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCA3Nzg3MCwgMCwgMTI3MDE1LCAwLCA0MTU5OSwgMCwgMTI4ODMxLCAwLCAKLSAgICAxMjk1MCwgOTIxNjAsIDM0ODYsIDAsIDc4MzExLCA0MjM5LCAwLCAxMjc3OTksIDY2NTExLCAwLCAyNjM3LCA2NDYyOSwgCi0gICAgODQ2MCwgMTI3MDUzLCA4NDc2LCA5ODM5NzUsIDAsIDAsIDAsIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIAotICAgIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgMCwgNzM4NjQsIDk4MzIwMywgNDE3MzQsIAotICAgIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCAKLSAgICA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDAsIDczOTYzLCAKLSAgICA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCAKLSAgICA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIDAsIDAsIDAsIAotICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDk4MzY5OSwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCA5MjIyMywgCi0gICAgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIDcwMDYzLCAyOTUyLCAKLSAgICA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA5NDA0MywgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIAotICAgIDQxNzIyLCAwLCA1MTcyLCAwLCA5ODMyNzgsIDQxNTksIDAsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIDQxMTk4LCAKLSAgICA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAwLCA0MjQyMSwgMCwgNDE3MjMsIAotICAgIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgMTI2NjM2LCAwLCA0MjM0OCwgNzM4OTIsIAotICAgIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwNiwgNjM4NTEsIDYzODUwLCA0MTkxMCwgMCwgNjM4NDYsIDI5NzIsIDEyOTMyLCAKLSAgICA3MjYyLCAwLCA2Mzg0OSwgNjM4NDgsIDYzODQ3LCAxMjgwNzAsIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAKLSAgICAxMDc0NiwgNzI1MCwgMTMyMTQsIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMCwgMTE4OTgzLCAxMTA1LCA0MTgwLCAwLCAxMjA5NCwgCi0gICAgOTQ5NywgMCwgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDExODkzMiwgMTY3OCwgMTMyNzQsIAotICAgIDU1MiwgMTIwNjU0LCA0NDAxMCwgMTA3ODUsIDAsIDExOTE3MCwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgCi0gICAgNjM4NjAsIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgCi0gICAgNjM4NTcsIDEzODgsIDc0MTY5LCAwLCAxMDc3LCA5ODM1NzcsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgMCwgMCwgCi0gICAgNDI3NzMsIDAsIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMCwgMTExMiwgMTE5MTIyLCA4Njg2LCAwLCA1MzM0LCA2NTA4MSwgCi0gICAgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAwLCA2NTA5LCAwLCA1MzI3LCAwLCAxOTkwNywgNjM4NjksIDM0NzgsIAotICAgIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgNjM4NjYsIDc4NjI2LCAxOTE1LCAKLSAgICA0ODQ2LCAwLCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgMTIwNzAsIAotICAgIDg3NjAsIDExMTcsIDExODk4NywgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIDAsIDc4MjQwLCAKLSAgICAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDk4MzgwNCwgNjM4MzMsIDYwNDIsIDY2MzYwLCA4MDgzLCAwLCAwLCAKLSAgICA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCA1MjI3LCA5MDQ3LCA2MzgyMiwgMTI3MTYyLCA2MDkxLCAwLCAKLSAgICAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCA2MzgxMSwgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgCi0gICAgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCAxMjAxNDMsIDc4MCwgMjA2LCA3NzkyNSwgNDkzNiwgNjUxNDcsIDgxNjgsIAotICAgIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIDEyODE1MCwgNjM5MjksIDM1NDYsIDE2MDUsIAotICAgIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgCi0gICAgMCwgNDYxOCwgNDIyMDksIDQzNDMxLCAxMzE2OSwgNTI5MCwgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAKLSAgICAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIDAsIDYzOTcwLCAxMjgzNTgsIDEwOTIsIDQ3NTQsIDcyNzMsIAotICAgIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAwLCA3NDA4LCAxMTgwOSwgOTE3NjE4LCAwLCAwLCAyOTY1LCA3MjU4LCAKLSAgICA4ODA4LCAwLCAxMDg5LCA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAwLCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgCi0gICAgNzQ0OTQsIDEyNDYzLCAyOTk0LCAwLCAxMTg4MjcsIDAsIDk2NjQsIDc3OTM5LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKLSAgICA3NDM0MywgMCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgNzc5NDEsIDc4NTA3LCAKLSAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgMCwgNzQxNTEsIDkyNjUyLCA2NTAyLCAwLCAxMjcxMTgsIDEyODY5NSwgNjM5NTEsIAotICAgIDEyNDY1LCAwLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIAotICAgIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCA5NDA3NiwgCi0gICAgMCwgMTI3NzczLCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgCi0gICAgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCAKLSAgICA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAwLCA0Mzk4MCwgNTQ4NSwgMCwgNDI2OTcsIDkwNjEsIDU1MzQsIAotICAgIDEwNjcyLCA0NTAyLCAwLCAyNTMsIDAsIDY4MjA4LCAwLCA5MjAzLCA3NDIzMSwgMCwgMTE1MzAsIDkyNTQyLCA2ODY2OCwgMCwgCi0gICAgMTE4OTA3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAxOTUwNjUsIDAsIAotICAgIDg0MTMsIDk4MzgxNiwgMCwgNTY5MywgNzI3MiwgMCwgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgCi0gICAgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAxMjgxMzMsIDEyNzc2NywgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCAKLSAgICA0MjkxMywgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIAotICAgIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgCi0gICAgMTMwNywgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIAotICAgIDU0MTMsIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjMzLCAKLSAgICA0NTE4LCAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDEyMDE1OCwgMjcxMCwgMCwgNjkyNDMsIDQxNzI0LCAwLCAKLSAgICA0MzA3MywgNDE2OTAsIDEyNDc5LCA5ODM2MzUsIDAsIDAsIDk4MzgxOCwgNzAwNDYsIDE2MjgsIDEyNzE0OSwgOTgzNDg3LCAKLSAgICA5ODM3MzEsIDY1MjYyLCA2MzMzLCAxMDc4MywgNDIzMTUsIDAsIDYzODU1LCA5NDA1NiwgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIAotICAgIDEzMDA0LCAwLCA0NDU3LCAwLCAwLCAxOTQ4MTgsIDAsIDU2ODQsIDg2NzgsIDEwOTE0LCAwLCA1Njg5LCA2NTgwNywgMCwgCisgICAgMCwgNjEzNCwgNDEyNDYsIDY0NDAyLCA5ODMxNDcsIDY5ODk5LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCAKKyAgICA2NTM0OCwgNTI3LCAwLCAxMTM3ODIsIDkyNjEyLCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIAorICAgIDQyNjk1LCAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDAsIDAsIDExMzcwNSwgMCwgCisgICAgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMCwgNzM4MjIsIDAsIDEyODAxMCwgCisgICAgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgNjM2NCwgOTU2LCAxMTM3OTIsIDEyODMwLCAKKyAgICAxMDQ2MiwgNzM3NDAsIDczNzM0LCAwLCAwLCAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgCisgICAgMCwgMCwgNjM4ODUsIDEyODUyOCwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIAorICAgIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAKKyAgICAxMTUzNywgMCwgNjY0NDEsIDEyMDc2MSwgNzA5OCwgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAwLCAzMDE2LCAKKyAgICA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCAKKyAgICA5ODMzMjgsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgCisgICAgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgCisgICAgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDAsIDcwMzI3LCAKKyAgICA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDQzNTE0LCAxMjEzMCwgCisgICAgOTgzNjIwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAKKyAgICAwLCAxMjAzNzksIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAKKyAgICAwLCAxMDA2OSwgNTgzMCwgMTI3NzczLCA0MzY4NSwgNzQzMDcsIDAsIDQyOTEwLCAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAKKyAgICAxMjg2MjEsIDEyMDQxMywgOTIxOTIsIDEyNzI1NywgNjU4OTQsIDk4MzU2NiwgMCwgNjQyOTYsIDk4MzkyMywgMCwgMCwgCisgICAgMTE5MTg3LCAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgCisgICAgNDM4NTQsIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDEyODQzOSwgCisgICAgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCAKKyAgICA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgMCwgMTIwODAxLCA2NTI1MSwgNjgyMjgsIAorICAgIDY1NzEwLCAxMjgzOTksIDEyODQyOSwgNjc2NzIsIDAsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAxMDk2NiwgMTAxODgsIAorICAgIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgMTA4NDQsIDAsIAorICAgIDEyODE5NSwgOTI0MjQsIDYzNzQsIDExOTk5OCwgMTI4NjkwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIDAsIAorICAgIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIDEyNjQ2NSwgCisgICAgNTIxMSwgOTgzMDgzLCA2NDAwLCAwLCAxOTQ5ODMsIDcwMDU0LCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIAorICAgIDExMzc4MywgNDIxMDIsIDQxNTg1LCAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCA2NzQyNywgMzMsIDY3NDI1LCAKKyAgICA2NzQyNCwgOTAwNywgNjc0MzAsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCAKKyAgICA5ODM5NDMsIDEwMzEsIDYyNTcsIDAsIDQyMTA0LCAwLCA5ODM5ODAsIDIzMjgsIDY2ODM3LCAxMDcxLCA0Mjg5OSwgCisgICAgMTI1MDg4LCA3NDg0OCwgMCwgMTEzNzkzLCAxOTQ5ODEsIDEwNDcsIDAsIDE5NDk0MywgNDI5MDgsIDEyODQ4MCwgNjk3MjMsIAorICAgIDEwNjUxLCA3MDM1NiwgMCwgMTI1MTEzLCA3MjQzMywgNjY4MjksIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCAKKyAgICA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgCisgICAgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDcxOTE1LCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIAorICAgIDU3MjIsIDAsIDg2NDMsIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIAorICAgIDY0NzksIDAsIDAsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIDEyNTA3MCwgMCwgMTI4MzM4LCAwLCAxMTg5MTEsIDAsIAorICAgIDExMzY4MiwgMTI5MTk0LCAwLCAwLCAxMjAwMTAsIDczNzk1LCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIAorICAgIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMCwgMCwgNjQ5NDYsIDEwOTkyLCAwLCAxMjAwMDksIAorICAgIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNDI5MDIsIDczODA4LCAwLCA2NTQ1NywgNDIyNDksIDc2MzksIAorICAgIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDcwMzY2LCAxMjAwMDUsIDExOTU4NSwgOTgzOTY2LCA1MDg0LCAwLCAKKyAgICAwLCAxMTg4NjEsIDAsIDczMywgNzQ2NDYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAwLCAKKyAgICA5MjkzNywgNzEwNzAsIDY3OTkwLCAwLCAwLCAwLCA3MDMyMywgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCAKKyAgICA5ODM3NDQsIDAsIDkxNzc2NywgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCA2ODQzMCwgCisgICAgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDEyNzk2MCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgCisgICAgMTE1ODAsIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIAorICAgIDk4MzI4NCwgOTgzNzIxLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMTE4OTE2LCAyNTQ0LCAKKyAgICA2NTA3NCwgMTE5MjExLCA5ODMyOTYsIDAsIDc4MDExLCAzNTEsIDc4MDEzLCAwLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgCisgICAgNzgwMDgsIDEyODA5NCwgMCwgNDIzNzcsIDAsIDAsIDAsIDExMzc2NywgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgCisgICAgMTEzNzQwLCAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIAorICAgIDEyODk3NSwgNjQyMTUsIDY2ODY0LCAxMDkxOSwgNzEyMDgsIDc5ODAsIDEyNjYwMSwgMTEzNjk4LCAyMjE4LCA0MTgwMCwgCisgICAgNTU4OSwgMCwgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDAsIDAsIDQzNDUyLCA2NzI0NSwgOTI5OTMsIAorICAgIDQyNTczLCA2Njg3OSwgMCwgNzgxMjksIDY5NzY3LCA3ODc1MiwgNzQzOTIsIDgxMzUsIDY0NTAsIDEwMDU1LCA3Nzk5NiwgMCwgCisgICAgMCwgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCAKKyAgICA3MTg2MCwgMCwgNTY1MiwgMTA5NDUsIDkxNzkyNywgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIDcwMzMyLCAKKyAgICAxMjcxOTQsIDU2NTksIDAsIDc4NjkyLCA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMTk0NTgxLCAxMDU1LCA3MTE3MSwgCisgICAgNzE4ODgsIDY2MzEwLCA3NDAzMCwgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCAwLCA0MjcyMCwgOTI5NDksIAorICAgIDEwMjcyLCAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgOTgzODg3LCA2NDg3MCwgCisgICAgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgCisgICAgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTgzNzI2LCAwLCA5NDAyMCwgNzAwNTYsIAorICAgIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgMCwgCisgICAgNzczMiwgOTgzNzI0LCA2NDU1NiwgMCwgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgMCwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgCisgICAgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgMTEzNzY2LCAxMjc0OSwgNzQ1NTEsIAorICAgIDY3NzU3LCAwLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgMCwgCisgICAgMzU3MSwgMTMyNDcsIDU4NzQsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIDc4MjY1LCAKKyAgICA1NTMsIDExMzc2OCwgMTI3MDEyLCA5MzA1MywgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAxOTQ5MTksIDEyNzQ2LCAKKyAgICAwLCA3MDMzOCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgOTUxMiwgCisgICAgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIDAsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg1MSwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIDEyNDkzNiwgCisgICAgMTI4MzkwLCAxMTg4ODAsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAwLCA5ODM4MDksIAorICAgIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIDAsIDU2MzgsIDExOTkxOCwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgCisgICAgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgNzExNjksIDExOTIwLCAKKyAgICA4Mjc0LCA2ODI0MCwgOTgzNjU4LCAxNjU3LCA0MTU2MSwgNzgyOTksIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCAKKyAgICA3ODMwMywgOTgzNjg1LCA3MTE3OSwgNDIyMjcsIDY4MzAxLCAwLCA0MTYzNywgNjc4NzIsIDE5NDgxMywgNzgzMTAsIAorICAgIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAKKyAgICAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDAsIDEwNTgsIDAsIDY3NjMwLCAwLCAwLCAxMTQ0LCA3ODc1MCwgCisgICAgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMjczNTIsIDI4MDAsIDAsIDU2NDUsIDY0OTY0LCA4NjUyLCAKKyAgICAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgCisgICAgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIDU2MTMsIDY2NDAxLCAwLCAwLCA1NjEwLCAwLCA3MTE5OSwgNjU4MjYsIAorICAgIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIAorICAgIDI0MTIsIDAsIDgxODYsIDk4MDcsIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCAwLCA1ODA3LCAxMTM2NzgsIDEwMDMwLCAKKyAgICA1MzA2LCAxMjM2NCwgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCA5ODMyMDIsIAorICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDAsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgOTgzOTQ5LCA5MTMzLCA3NDI2MiwgMCwgCisgICAgMTA0MiwgMCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAKKyAgICAxMjI0MSwgOTI3MjAsIDk4Mzg5OSwgMTMwOCwgMTk0OTkyLCAyNTM0LCA4MTAsIDAsIDAsIDEyODAxNiwgNzE4NDksIAorICAgIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCA2NjM4NywgNzQ0NzAsIDY2NjE4LCAKKyAgICA2NTY4MCwgNjY0MTEsIDEwMDI3LCA3MTg0MSwgMTI4MTU0LCAxMjMzNywgNzQyODMsIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCAKKyAgICA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgCisgICAgODczMCwgMTk0OTk3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCA5MzUsIDAsIDY1ODQwLCAKKyAgICAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgCisgICAgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgNzgzMDAsIDE5NDk5OCwgMCwgMTA2NzMsIDExOTIxNywgCisgICAgNzI0OCwgMCwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCA2Nzg3NiwgOTY0LCAwLCA2NjQwMywgNzgyMjYsIAorICAgIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAxMjc1MzQsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgCisgICAgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgCisgICAgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgCisgICAgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAKKyAgICAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIAorICAgIDkxNzYsIDkyODgyLCAxMjY1NTMsIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgCisgICAgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAKKyAgICAwLCA2ODE2MywgNTM0MCwgMTIwNTU5LCAxMjc4MjAsIDQzNjM1LCA3MzkyOCwgMTI3NTI5LCA3MTA2OSwgMTI4Mzk1LCAwLCAKKyAgICAxMjg1MTAsIDY1NDgyLCA5ODM1ODAsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCAKKyAgICA0ODI2LCAwLCAwLCA3MjQzOCwgNTI5LCA4NTgwLCAwLCAwLCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIAorICAgIDQxMjA3LCAwLCA5ODM4MjUsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCA5ODM5MzgsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAorICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgMTI3MjY3LCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgCisgICAgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODgzOSwgNDE4NzEsIDQxMzM4LCAzNzM0LCAKKyAgICA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEyNzkzNywgMCwgNTE2MSwgMTA1NzIsIDAsIAorICAgIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCA2OTIyMCwgCisgICAgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAorICAgIDEyNTA1OCwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCAwLCAxMTkzOCwgMCwgNzI4NSwgOTgzNTU3LCAxMTk1NzcsIAorICAgIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDEyOTE2OCwgOTgzOTM2LCA3ODE2OSwgCisgICAgNjYxOTksIDAsIDM2MDksIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCAKKyAgICA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgCisgICAgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDk4MzgxMywgNjAyNCwgOTIzMDksIDk5NzksIAorICAgIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgMCwgNDIzMCwgOTI4ODYsIAorICAgIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDAsIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCAKKyAgICA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgCisgICAgMCwgNzAwNDcsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgNDExMDcsIAorICAgIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgNzgyODMsIAorICAgIDAsIDEyNDUzLCA3MDg0NywgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDY2Mjc4LCAwLCAKKyAgICA3ODI3OSwgMCwgMCwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIDEyNDQ5LCAxMjg1NTIsIAorICAgIDcxMjI0LCA0Mzg2OCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDAsIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIAorICAgIDExODkwNSwgNDM0MzUsIDEyNDk2NCwgMTI1MDMwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCAKKyAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDAsIDEyNzI3MiwgNjk3MzQsIDI5NjAsIAorICAgIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCA3Mzk1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAKKyAgICAwLCAwLCAwLCA0OTUzLCA5ODM2ODIsIDk4MzcwMSwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCA5ODMyNDYsIDUwNjMsIAorICAgIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIAorICAgIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCAxMjA1NzEsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIAorICAgIDQxMjE1LCAwLCA2NTg4MywgMCwgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDcwMDY4LCAxMjA0MDgsIDEyOTEyLCAKKyAgICAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMCwgMTI4Mzg5LCAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDc0NjQyLCA0MzY5MSwgCisgICAgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgMTA1MjcsIDcxMDc5LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAKKyAgICAxMTM4MDAsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIDk4MzI1OSwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgCisgICAgOTgzMjU3LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIDk4MzA4NiwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCAKKyAgICA2NTU3OSwgMTI5ODAsIDc4NzY5LCAxMjE0MywgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIAorICAgIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAxMDY4MSwgMCwgOTgzNjk1LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgCisgICAgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIAorICAgIDEyODk2NCwgOTE3ODUwLCA0MTczMCwgMTI5MTgxLCAwLCA3Mzg0NywgNzg3NjEsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIAorICAgIDkxNzkxMSwgMTk0NzY5LCA5ODM3OTUsIDQxMjAzLCA5MTc2MTIsIDEzMTEwLCA0MTcyNiwgOTgzODU1LCA2NzA3NywgMTAwMCwgCisgICAgNjk2NTEsIDAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCAwLCAKKyAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAorICAgIDk4Mzk0OCwgMTI4ODMzLCA2NDM5OCwgMCwgMTE5OTcwLCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCAKKyAgICA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAwLCAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCAKKyAgICA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgNzg1MzUsIDk4MzIxMiwgMTk0NCwgCisgICAgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIDExOTk5NSwgMCwgCisgICAgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCA4MTU0LCAxMTk5ODUsIAorICAgIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgCisgICAgMCwgNDE4OTksIDk4MzI4NiwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgMCwgNjQzMzIsIDAsIDc4MTMsIDkwNjQsIAorICAgIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDY4MjQ2LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAKKyAgICAwLCAxMjkxMjMsIDk2NjAsIDk4MzI4MCwgMTMwMTIsIDQ1NzEsIDkxNzU4OCwgMCwgMTIwMTY0LCAxMjA3OCwgMjk3MCwgCisgICAgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDAsIDc3ODQxLCAwLCA0MTU5OSwgNzAxNTksIDEyODgzMSwgMCwgMTI5NTAsIAorICAgIDkyMTYwLCAzNDg2LCA5ODM5NzMsIDc4MzExLCA0MjM5LCAwLCAxMjc3OTksIDY2NTExLCA5MjczOSwgMjYzNywgNjQ2MjksIAorICAgIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAKKyAgICAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgCisgICAgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIAorICAgIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIAorICAgIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCAKKyAgICA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAKKyAgICA5MjcxNCwgMCwgMTI5MDI3LCA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCAxMjQ5NzIsIDc4NTExLCAzMTYxLCAyOTUsIAorICAgIDcxMjU3LCAwLCA5MjIyMywgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM1MDEsIDAsIAorICAgIDM5NzEsIDk4Mzk1OSwgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIAorICAgIDk0MDQzLCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI3OCwgNDE1OSwgOTgzNTYyLCAKKyAgICAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgCisgICAgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCAKKyAgICA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCAKKyAgICA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCAKKyAgICA2Mzg0OCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgCisgICAgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAwLCAKKyAgICA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgNTUyLCAKKyAgICAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKKyAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDYzODU3LCAKKyAgICAxMzg4LCA3MTkwMiwgMCwgMTA3NywgMTk1MDAwLCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDAsIDAsIDQyNzczLCAKKyAgICAxMjc4OTksIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCA1MzM0LCAKKyAgICA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDEyNzk2NSwgMTk5MDcsIAorICAgIDYzODY5LCAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCAKKyAgICA3ODYyNiwgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIAorICAgIDY0NDM4LCAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCAKKyAgICA2MzgzNCwgMCwgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgNzAxNzMsIDYzODMzLCA2MDQyLCA2NjM2MCwgCisgICAgODA4MywgMTI4MTY2LCAwLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCA1MjI3LCA5MDQ3LCA2MzgyMiwgCisgICAgMTI3MTYyLCA2MDkxLCAwLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCA2MzgxMSwgNjM4MTAsIAorICAgIDYzODA5LCAyMjg5LCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCAxMjAxNDMsIDc4MCwgMjA2LCA3MDEyNiwgCisgICAgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIDEyODE1MCwgCisgICAgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAwLCAKKyAgICA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgMjA4OSwgMTY5NSwgCisgICAgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIDAsIDYzOTcwLCAKKyAgICAxMjgzNTgsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAxMjg5MjAsIDc0MDgsIAorICAgIDExODA5LCA5MTc2MTgsIDEyNzkxNywgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIDQxODcsIDYzOTM3LCAKKyAgICA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIDEyNDYzLCAyOTk0LCAwLCAKKyAgICAxMTg4MjcsIDY4NTIyLCA5NjY0LCA3MDgzNCwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgNzQzNDMsIDY3MzcwLCAwLCA2NjAsIAorICAgIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAxMjU4MCwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAKKyAgICA5ODMzOTIsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTEwODUsIDEyODY5NSwgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIAorICAgIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCAKKyAgICA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAwLCA5MjQ2NCwgCisgICAgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAKKyAgICAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIAorICAgIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgNDI2OTcsIDkwNjEsIDU1MzQsIAorICAgIDEwNjcyLCA0NTAyLCAxMjQ5MzIsIDI1MywgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA2ODYzNCwgCisgICAgNjg2NjgsIDAsIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAKKyAgICAxOTUwNjUsIDAsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgCisgICAgMTk1MDYzLCAwLCAwLCAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIDY2ODQwLCAxMjc3NjcsIDY2NjA4LCAzMTExLCAKKyAgICA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIAorICAgIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgNzExODcsIAorICAgIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMTI4OTE4LCA2MjE4LCAKKyAgICAxMTM2NzUsIDE0MzAsIDAsIDEyNzc3OCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIAorICAgIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgCisgICAgMzc3MSwgNjcwOTMsIDI3MTAsIDAsIDY2Mjc3LCA0MTcyNCwgNjc3MTYsIDQzMDczLCA0MTY5MCwgMTI0NzksIDk4MzYzNSwgCisgICAgODM4MCwgMCwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjcxNDksIDEyODgxNywgMTI5MDY3LCA2NTI2MiwgNjMzMywgMTA3ODMsIAorICAgIDExMTcyLCAwLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgMCwgNTMzOSwgNzQzMjMsIDAsIDEzMDA0LCA2Njg0MywgNDQ1NywgMCwgCisgICAgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgNTY4NCwgODY3OCwgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIAogICAgIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIAotICAgIDc0MjUxLCAwLCAxMjA2NDcsIDAsIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgCi0gICAgMTMyNTksIDQ0NDgsIDAsIDk4Mzg0NSwgMCwgNzAwNDMsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIAotICAgIDkxNzYwNywgMTI3NTQ0LCAxMjcwNzksIDE5NTA1MCwgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAKLSAgICAxMTg4NzAsIDg4MTIsIDAsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgCi0gICAgNjk2MzIsIDk4OTQsIDAsIDAsIDAsIDQ2MzYsIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAKLSAgICAxMjA0OTUsIDAsIDEyODI4NCwgMTIyNzcsIDE5NDYyNywgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIAotICAgIDAsIDkyNDI2LCAwLCA2NTMxLCAwLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDAsIDk4MzY1MCwgMTg3MywgMTA4NywgMCwgMCwgMCwgCi0gICAgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgOTgzNTcxLCAwLCAKLSAgICA5NDg5LCAwLCAwLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIAotICAgIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIAotICAgIDAsIDQ5NSwgMTE5MDA3LCA0MTcxMiwgNzk4MywgMCwgOTM5OTcsIDAsIDYzNDcsIDEyMDE2NSwgNzY1NCwgNDE3MTAsIAotICAgIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgCi0gICAgNDk5OSwgMTk0NjQyLCAwLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgODA0NCwgNzQ4MzQsIDE5NDY0MywgCi0gICAgNDE3ODksIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKLSAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgNDMzOTksIDAsIDAsIDQxNzkxLCAKLSAgICAxMTA0LCAwLCAwLCAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCAwLCA2OTg0OSwgCi0gICAgNjc4MywgMCwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgOTgzODA3LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCAKLSAgICA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgCi0gICAgOTgzNjAzLCA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgCi0gICAgNTEyMiwgNDE1MjcsIDAsIDY2MzIwLCA5ODM4MTEsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIAotICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCAKLSAgICA2NDI5OSwgMTk0NjY0LCAwLCAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgCi0gICAgMTk0NjM2LCA3NDI3NywgNzQzMDIsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAKLSAgICAwLCA0NzYyLCAxMTAzLCAwLCAwLCA0NzY1LCA5ODM0OTIsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIAotICAgIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgCi0gICAgMTIyNzksIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgCi0gICAgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIAotICAgIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgCi0gICAgNDE3OTMsIDY1NzYzLCA3NDIyMSwgMTIwMTQxLCA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgCi0gICAgNTcwOSwgMCwgOTQwNTMsIDQzODE2LCAwLCAwLCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIAotICAgIDU3MDUsIDg3OTEsIDQwMDUsIDAsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIAotICAgIDEzMTcwLCAxMjU0MCwgOTE3NTc3LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCAKLSAgICA3NDg2NywgMTk0NjU0LCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCAKLSAgICA5MTc1ODcsIDkxNzU4NiwgOTE3NTg5LCA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIAotICAgIDkyMjI2LCAxMzI0NiwgODY0LCAwLCAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAKLSAgICAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAKLSAgICAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgMCwgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIAotICAgIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCAKLSAgICA0MTUyMiwgOTgzOTE1LCA5MjE2OCwgOTgzNzcyLCA5MTc4NTgsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCi0gICAgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAKLSAgICAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDAsIDk4Mzc2NSwgMCwgMCwgMTk0NjU4LCAwLCA2ODA5LCA2Mzc4NiwgCi0gICAgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAKLSAgICAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgOTgzMTMxLCAwLCAKLSAgICA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCAKLSAgICA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIAotICAgIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCAKLSAgICA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIAotICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAotICAgIDk4MzMyOSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgCi0gICAgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIAotICAgIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAKLSAgICAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgCi0gICAgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgCi0gICAgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIAotICAgIDY0NDMzLCAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDk0MDM5LCAKLSAgICAwLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDAsIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCAwLCAwLCAwLCAKLSAgICAxMDAyNSwgNjk5MTUsIDI5MTgsIDAsIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgCi0gICAgMTI3ODI5LCA2NTM5MywgMCwgNzQxMzgsIDAsIDAsIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCAKLSAgICA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDAsIDAsIDEwODg4LCA5ODM2MDQsIDY1MjQyLCAwLCAKLSAgICAzMzMwLCAwLCAwLCA5ODM5NzQsIDAsIDAsIDc0MjU5LCAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgCi0gICAgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDAsIDkwMzUsIDAsIAotICAgIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAxNjQsIDAsIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDAsIAotICAgIDcwMDE5LCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCA3MDAzMSwgMTI3NzU2LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAKLSAgICAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIDY1NTA5LCAwLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIAotICAgIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgMCwgCi0gICAgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAxMjgxNjEsIDExMDU3LCAwLCAxMzI3NiwgMCwgCi0gICAgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgMTIyMjksIDQxNTIzLCAwLCA0MzQxMSwgNzM3NTEsIDAsIAotICAgIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgNjQ5NTgsIDAsIDAsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIAotICAgIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDAsIAotICAgIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCA4MDkyLCAKLSAgICA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgMCwgMTIwMTgsIAotICAgIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgMCwgMTE3MDAsIAotICAgIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIDY3MzUsIDczOTc5LCAKLSAgICAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIDQyODU1LCAxMTg4NTYsIAotICAgIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgCi0gICAgOTgzNTY4LCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAxMTkzNTIsIAotICAgIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgOTgzMjQzLCAxMjY5OTQsIDQxMzczLCAKLSAgICA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgCi0gICAgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgMCwgMCwgNDI2ODgsIDEyNDQxLCAKLSAgICAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIAotICAgIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgCi0gICAgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIDExOTg3OSwgNjY1OTAsIAotICAgIDEyODEyMywgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNzM4NDksIDAsIDQzNjM4LCAKLSAgICA3ODUzNywgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIAotICAgIDEzMjA2LCAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgNDMyMzgsIDAsIDEzMTkwLCAKLSAgICAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCAKLSAgICA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcyOCwgNDM1NDQsIDEyNjQ2NiwgMCwgNDE0NDQsIDY1NjIxLCA2OTk1NSwgCi0gICAgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgCi0gICAgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgMTI4NTM3LCAzOTM2LCAxMTkzMzEsIAotICAgIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgCi0gICAgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDEyODI1MSwgMTIwNTA5LCAwLCA2NjIyNCwgNzM0LCAyOTc5LCAxMjAzMDMsIDY1NjE5LCAKLSAgICA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgMTIwMzEwLCA3NDUxMSwgNDE3NzAsIDE2NzAsIAotICAgIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAxMjAzMTUsIDEyMDMxNCwgMTE1MDYsIAotICAgIDAsIDQyODQxLCAxMzI2NywgMCwgMCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgCi0gICAgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCAKLSAgICA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAKLSAgICAxMjY2MzcsIDExOTY1LCAwLCA2ODM1OCwgMCwgNjk3ODksIDAsIDkyMjYwLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIAotICAgIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgCi0gICAgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCAKLSAgICA1NjczLCAxMjA1MzQsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIAotICAgIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgCi0gICAgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgCi0gICAgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCAKLSAgICA1OTgsIDAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTUsIDAsIDAsIDEyODg1NSwgCi0gICAgMCwgODQ3LCAxMjgyNDIsIDk1MjksIDAsIDY2NjU3LCA2OTgwLCA3ODQ4MywgMTIwMDM1LCA3ODQ4NCwgOTgzNDkxLCAwLCAKLSAgICAxMjAwMzMsIDc4NDg2LCAwLCAwLCAxMjAwMzksIDQyNjgzLCAwLCA5ODMwNTUsIDcxMTQsIDAsIDAsIDQzMTkwLCA2NTQ2MywgCi0gICAgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgMCwgMTk5NjMsIDU2OTgsIDAsIDAsIAotICAgIDAsIDAsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgMTIwMDIyLCAxMDE3NSwgCi0gICAgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDAsIDQxMDE1LCAxOTQ2OTIsIAotICAgIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgMCwgNDI2MDgsIDc4NDY5LCA5ODg0LCA0NzU5LCAwLCAwLCAxMDI2NiwgCi0gICAgNDEzNTksIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgMCwgNjM5MzYsIDEyODg3NSwgMTE2NjEsIAotICAgIDgxMjIsIDU4MTgsIDAsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCAwLCAwLCA4MDcsIAotICAgIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMCwgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAKLSAgICAxMjY2MTQsIDAsIDg2NzYsIDk4MzI5MSwgMCwgNTU4MiwgNDUxLCA2Mzk0MSwgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgCi0gICAgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgMTI4ODUzLCAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgCi0gICAgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAxMDA5NCwgMCwgMTE1MjksIDEwODU3LCAxMjA2NDMsIAotICAgIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIDgxNzEsIDAsIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIAotICAgIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCA5NDA0MCwgMCwgNTE4NywgNzEyOTYsIDEyNzI3NywgMTEyODYsIDY4NjIwLCAKLSAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDAsIDQxMDA1LCAwLCAwLCA5ODM4MjcsIDgyOTIsIDE5NTA3NCwgNDk4MCwgCi0gICAgODg2MCwgNzM5NDcsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgMCwgMCwgMTA2MzEsIDY2MDMxLCA3OTcyLCAKLSAgICAwLCA3ODc4NSwgMCwgNzkwMCwgMCwgMTEzMDksIDM4MDYsIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgOTI1NTIsIAotICAgIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgCi0gICAgMCwgMCwgMTI4MzYsIDAsIDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDAsIDAsIDc0NjQsIDAsIDY1ODY1LCAKLSAgICAwLCAxOTQ2NTAsIDEyNzE0NCwgMCwgOTM0MiwgMTIwNDY0LCAwLCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCA0MTAwNywgCi0gICAgNzQzNzUsIDAsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDExOTEzNiwgMCwgMCwgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTI3MTUzLCAKLSAgICA2ODY1MywgNDM1NTgsIDU1MjIsIDAsIDYxLCAwLCA3NDEwNSwgMzYzMywgOTgzOTAwLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCAKLSAgICA3ODI4MSwgOTc3MSwgOTgzOTA1LCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgMCwgODEyNiwgNjY0ODMsIAotICAgIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgCi0gICAgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTkxMDMsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgMCwgOTgzNjU5LCA4OTMwLCAKLSAgICA2NjY3OCwgNzQyNDksIDExOTMsIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDAsIDAsIDc3NDMsIDAsIDAsIAotICAgIDc3OTA0LCA5MjY0MCwgNzc5MDUsIDkwMzQsIDYwMzksIDAsIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgCi0gICAgMCwgMCwgMCwgNDI4MTUsIDAsIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgCi0gICAgMCwgMCwgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIAotICAgIDEyMzI2LCA5ODM4NTYsIDAsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDkxNzU4NCwgNDM3MDIsIDk4MzU3NiwgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgCi0gICAgNzQyOTYsIDQxOTA5LCAwLCAxMjAzMzIsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAKLSAgICAxMTg5MzksIDg3NjEsIDEyOTQyLCA1NzQ4LCAwLCAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIAotICAgIDEzMTQ2LCAxMjcxODUsIDYzOTMxLCAwLCA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIAotICAgIDAsIDk4MzY2MCwgMCwgNzM4NjAsIDAsIDAsIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIDE5NDk0MCwgMCwgMCwgNDM2NzksIAotICAgIDkxNzU4NSwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMCwgMzg0NCwgMTIwNjc1LCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgCi0gICAgMCwgMTI4Nzg5LCAwLCAwLCA3ODMsIDE5NDkzNSwgMCwgMCwgOTgzMDY0LCAxOTQ3MjAsIDY1MDU2LCAzNjIwLCA0MTE4MCwgCi0gICAgNjgzNzgsIDQ1NTYsIDAsIDAsIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDAsIDAsIAotICAgIDEyNzUyNywgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDAsIDEyODkxLCA5ODM3NTUsIDk4MzYzNiwgNjM5OTksIDIwMTYsIAotICAgIDQxOTE3LCA5Nzg4LCA2MzkyOCwgMCwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIAotICAgIDg1NzksIDQxOTE0LCA3OTgxLCAwLCA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAwLCA2NDU5MiwgCi0gICAgNzQyNzYsIDEyMDA4MCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCAwLCAwLCAxMjc1MzQsIDEyMTQ3LCA5MDI0LCA2NjM3OCwgCi0gICAgNjY0NzIsIDk4MzkyOSwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAKLSAgICAxMjY1MDUsIDExMDUxLCA5ODMyOTYsIDAsIDExMzU1LCA2NTg4NSwgMCwgMTI4MzEwLCA0MTIxNCwgMCwgMTIyOTksIDAsIAotICAgIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgMCwgCi0gICAgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIAotICAgIDQxOTU1LCAwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDY1NjA1LCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCAKLSAgICA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCAKLSAgICA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAwLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIAotICAgIDYzOTYwLCA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTEzOTcsIDI4ODAsIDAsIDAsIDI4NzIsIDAsIDAsIDM0OTgsIDQzNzgsIDkxNzUzOSwgNDI3MCwgMCwgCi0gICAgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMCwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgMCwgCi0gICAgMCwgMTI2NDc5LCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgCi0gICAgMCwgNjM5NjEsIDQ0NzIsIDAsIDAsIDc4MTU5LCA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAKLSAgICAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgMCwgNDI0NTMsIAotICAgIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMCwgODQ1NywgNDIzMDEsIDExMzcyLCAKLSAgICA2NDg3MywgMTE5OTIsIDAsIDAsIDYzOTgwLCAxMTgwMSwgMzYyMiwgOTgzMTI0LCA2NDMzNiwgMTIwMTcsIDEwNDYzLCAKLSAgICA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIDQzNjI4LCAwLCA5ODMyOTIsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCAKLSAgICA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCAwLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAKLSAgICAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCAwLCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDAsIDE5NDY3MCwgMCwgCi0gICAgOTIzNTEsIDAsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMCwgOTIzNTksIDY0OTQyLCA5ODM1NTksIDE5NDczMywgOTgzNjg2LCAKLSAgICAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgNjk3ODQsIDc0MDYwLCAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCAKLSAgICA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTk0NjY5LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgCi0gICAgMCwgNjY2MTYsIDY4NDIxLCA5ODM5MTksIDAsIDU0MDUsIDEyNzg3NSwgNjQ4NjYsIDAsIDExOTU4MywgMTI4MzQ1LCAKLSAgICA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIDY0NjkwLCAzMjU0LCAwLCAwLCAxMjgyMDcsIDQyMzkwLCA0MzY3OCwgCi0gICAgMTk0NzI1LCA5ODM5MDksIDY1MDc3LCAwLCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgMCwgCi0gICAgMzM3NywgMCwgMCwgMCwgMCwgNzgyMjgsIDAsIDk4Mzc2MiwgNDI2OTEsIDkxNzg4NiwgMTI3MTk4LCA3NDc2NywgMCwgCi0gICAgMTI3MDc1LCAxMzc5LCAyNDYsIDAsIDk4Mzc2MSwgMzc4OCwgOTgzMTA2LCAxMTA0MSwgOTI1NDksIDY2MzA0LCAwLCAwLCAKLSAgICA4OTE3LCA0MjQwMywgMzAxLCAwLCAwLCAwLCAwLCAwLCA5ODM2OTcsIDEwNjU2LCAwLCA2NTIxNCwgMTE5MjQyLCA0MjU2NywgCi0gICAgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIAotICAgIDQ3NTUsIDc0MjQ0LCAxOTQ2MjEsIDExNDQzLCAwLCA2NjMxOSwgNzQ1OTgsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCAKLSAgICA2NDIwNiwgMTE0ODMsIDc0NTEwLCAwLCA3NDQ4NSwgNDI0NDIsIDY1NDcwLCA5ODM5MDcsIDY0MjAyLCAxMzE2MCwgNzc1OSwgCi0gICAgNDI0ODIsIDQ4NSwgMTI4MDA2LCAwLCA5ODI4LCAwLCAwLCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIAotICAgIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgMCwgMTE4OTQ2LCAwLCAwLCA3NDA0MSwgMCwgCi0gICAgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIAotICAgIDkzMzcsIDEyMDUyLCAxMDY0MywgNTUyNzEsIDk4MzE3OSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIAotICAgIDY1NjExLCAwLCAwLCAxOTQ3NTYsIDc0MzEwLCA2NTU0LCAwLCAxMTkxNCwgNTQ1MiwgMCwgMCwgMCwgMCwgMCwgMTk0NjgxLCAKLSAgICA5MjU2MCwgMjcxMywgMCwgOTY1MCwgNDMzMzAsIDAsIDE5NDY3NSwgMTQwNiwgMCwgMCwgOTI2NTksIDAsIDY4MjIzLCAKLSAgICA0MTQzLCAxOTQ2NzcsIDAsIDY1NzQ4LCA0MTQxLCA5NjgyLCA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgCi0gICAgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCAKLSAgICA1NTI1MCwgOTE4NSwgOTU1MCwgMCwgNDM0MDMsIDAsIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDUsIAotICAgIDEyOTU1LCAxMDU5NiwgMjg4OCwgMTk0NjQ1LCAwLCAwLCA5NjU3LCA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIAotICAgIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCAKLSAgICA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAxMjY1NDIsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIAotICAgIDEyNjY0NywgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCA2NDgyMiwgMjg5MiwgMCwgNDMzOTQsIDU1NSwgMCwgMCwgCi0gICAgNjY2NDYsIDAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCAKLSAgICA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIAotICAgIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgOTE3NTUzLCA2ODI4LCAxNjI1LCA5MjMwMiwgMCwgMTM0MiwgNjg0NDAsIAotICAgIDY0MTcxLCAxMjY3MDQsIDEwOTAzLCA5ODM0OTQsIDAsIDAsIDAsIDAsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDk4MzExMiwgCi0gICAgMCwgNjQzODEsIDAsIDAsIDE5NTA5MCwgNDIyNDUsIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgMCwgOTEyNywgNjY2ODcsIAotICAgIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIAotICAgIDExOTcsIDEyODI4MiwgMTE0OSwgMTk0OTcwLCAwLCAwLCA0MDk5MCwgNDM3NjUsIDAsIDM0OTIsIDAsIDEyNzk0MiwgMCwgMCwgCi0gICAgMCwgMTI4MzgsIDk4Mzk3OCwgMTk5NDgsIDAsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCAKLSAgICA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNDE1NTAsIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIDAsIDAsIAotICAgIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMCwgMCwgOTI2ODAsIDk4Mzc4OSwgNjgxNTQsIDAsIDE3NDMsIDAsIDAsIAotICAgIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCAwLCA2NDQzOSwgMCwgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgCi0gICAgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgMTI2NTU3LCA0MTA5MSwgMzQyNiwgMTM0NCwgCi0gICAgODg3MCwgMCwgMCwgNDczNSwgMTI3MDE3LCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDk4MzgyNCwgNzQ4MTgsIDE0MjMsIDAsIAotICAgIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAwLCAxMTg4OTIsIDAsIDk0NzIsIDAsIDExOTI5LCAwLCA3MTcwLCAKLSAgICA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgNzg3MTMsIDAsIDE5NDc0MCwgMTI4NjkxLCA5MjE4NSwgNjY2OTksIAotICAgIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCA2ODQxNCwgMCwgNDM2MTksIAotICAgIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCAxMjcxNTgsIDY1NjI3LCAwLCAxMDcxOCwgCi0gICAgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIDc4MDE5LCAxMjAzMTksIDAsIAotICAgIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMCwgCi0gICAgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCAwLCAxMDg5OSwgNjU0NjksIAotICAgIDkyMzYyLCAwLCAwLCAyNDEwLCA5OTMsIDAsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAKLSAgICAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIDQyMjQsIDEzMzYsIAotICAgIDQxNTE4LCAwLCAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDAsIDAsIDI3MiwgCi0gICAgNDI2MywgODc5MywgMCwgMCwgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIDEzMzUsIDg0MSwgCi0gICAgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTk0ODA2LCA3MDAyNywgMjA5OSwgNTEyMCwgMjQwOSwgCi0gICAgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAKLSAgICAwLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgCi0gICAgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgCi0gICAgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgOTM5NjAsIDk4MzMyMiwgMTI2NTgxLCAKLSAgICAxMDY5NSwgMCwgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgCi0gICAgNjQzMjEsIDgzNTksIDAsIDEyNjg5LCAwLCAxOTQ1OTQsIDAsIDk4MzMxMiwgOTgzODgxLCA2ODE4MywgMCwgOTgzMzE0LCAKLSAgICAxMjg3LCA1NDM2LCAwLCA5ODMzMTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDExOTA3OCwgNjA1MSwgMTA0OTcsIDY5NjY4LCAKLSAgICA4OTg1LCAxMjEwOSwgOTgzMzIzLCAwLCAxMjcyNDIsIDAsIDAsIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIAotICAgIDI3OSwgNzM3NDUsIDAsIDAsIDAsIDE0ODksIDAsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCA5ODM1NTcsIDQyMTIyLCAKLSAgICA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgCi0gICAgNzg2MTAsIDAsIDEyMTUxLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgCi0gICAgNDkyLCA4Njg1LCAwLCA5ODM3NTksIDAsIDc4NjIyLCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgCisgICAgNzQyNTEsIDAsIDEyMDY0NywgMTI4OTMwLCA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgMCwgOTgzODE4LCAKKyAgICA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgNDQ0OCwgOTE3ODA0LCA5ODM4NDUsIDExMzczNCwgNzAwNDMsIDEzMjEsIDAsIAorICAgIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDEyNzg1MiwgMCwgMCwgCisgICAgOTgzMDc1LCAxMjUwMSwgNjQ2MDQsIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgMTE1MzgsIDg2NzMsIDEyNjUwLCAKKyAgICAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgMTI4OTQzLCA2OTk5NSwgNDYzNiwgCisgICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAxMjI3NywgMTk0NjI3LCAKKyAgICAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDAsIDkyNDI2LCAwLCA2NTMxLCAwLCAxMjc4NDYsIAorICAgIDQ3MywgNDM0MTUsIDkyOTM2LCA5ODM2NTAsIDE4NzMsIDEwODcsIDEyNDk2NiwgMCwgNzQyODAsIDc4NTI3LCA2NjQzOSwgCisgICAgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzExMTMsIDAsIDk4MzU3MSwgOTgzODg2LCA5NDg5LCAwLCAKKyAgICA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDE5NTA1NCwgCisgICAgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgMTMxMDAsIDEyOTU4LCAxMjA3MDYsIDc0MTY4LCAwLCA3MDg0NiwgNDQyMSwgCisgICAgMTA1OTIsIDAsIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgOTM5OTcsIDk4MzMzMCwgNjM0NywgNzg3MTUsIAorICAgIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIAorICAgIDQ5OTcsIDY0MzA2LCAwLCAwLCA0OTk5LCAxOTQ2NDIsIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgCisgICAgODA0NCwgNzQzMTMsIDE5NDY0MywgNDE3ODksIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCAKKyAgICA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDk4MzgwNCwgOTIxODYsIDEzMjI5LCAKKyAgICA3MTg0NSwgMTA1NzUsIDQzMzk5LCAwLCAwLCA0MTc5MSwgMTEwNCwgMCwgOTgzNzI1LCAxMDY1NSwgMCwgMCwgMCwgMCwgCisgICAgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDAsIDEyOTkzLCA4MDQ5LCAKKyAgICA0MTU0OCwgNDQwMjEsIDY0NTgsIDk4MzgwNywgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIAorICAgIDQzNDA3LCAxMjA2NzcsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMCwgCisgICAgOTI0NDksIDAsIDExMjE2LCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA5Mjk3MiwgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAorICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKKyAgICAxMjQ5MzksIDEyODQ2MiwgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCA2OTk4NCwgNjc3MjUsIDY1OTI2LCA3NzQ0LCAKKyAgICAxOTQ2MzYsIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIAorICAgIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTIsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgCisgICAgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCAKKyAgICA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgCisgICAgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgMCwgMTE5NTc1LCAyMjkzLCAKKyAgICA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjcxMjEsIDQzODUsIDEyODczNiwgMTMwMTEsIDAsIAorICAgIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDAsIDAsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgCisgICAgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMTI4Mjk2LCA3MTA3NiwgNDM4MTYsIDAsIAorICAgIDk4Mzg5NiwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAwLCAKKyAgICAxMDIzNywgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDkxNzU3NywgCisgICAgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgNzQ4NjcsIDY3NzMwLCAxMjcwNzgsIAorICAgIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA3NDAxNywgOTE3NTg2LCA5MTc1ODksIAorICAgIDEyOTE0MSwgMTIwNTQxLCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDAsIAorICAgIDExODkyNiwgODk3MiwgMTI4NDEwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCAKKyAgICA2Nzk4MiwgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCAKKyAgICA5Mzk5MywgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIAorICAgIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDk4MzI0NSwgCisgICAgNzEwNzEsIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAKKyAgICAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCAKKyAgICA2NTU4NiwgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDAsIDk4Mzc2NSwgNjY4MjgsIDAsIDEyNzgzOSwgMCwgCisgICAgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIAorICAgIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDY0NzEwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgCisgICAgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIAorICAgIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAxMjkwMjUsIDAsIDAsIAorICAgIDYzNzUzLCA2MzgwMiwgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgCisgICAgNDEwODIsIDgxNDAsIDYzNzk4LCA2MjYwLCAwLCAxMjgzOTEsIDk0MDc0LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDkyMjQ2LCAKKyAgICAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAKKyAgICAxMjUyMywgMTI5NDUsIDk4MzMyOSwgNDIyMDMsIDc5NTAsIDMxMjQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIAorICAgIDI3OTMsIDEyNDc1LCAxMjkxODAsIDEyODUwMSwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIDEzMTM1LCA4NTk2LCAKKyAgICA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgMCwgODc0MiwgMTk1MDI5LCAxMTA1MywgCisgICAgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIAorICAgIDY4NDI2LCA0MjA2MywgMTA5MCwgMTIwNjc5LCAxMjUwMDgsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIAorICAgIDk4MzQ1MSwgMCwgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIDYzNzczLCAxMzE5MSwgMTIxNzAsIAorICAgIDM1MDAsIDMxMzksIDEyMDUzOCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAxMjAwNzQsIAorICAgIDAsIDk0MSwgMCwgMTI5MDc5LCA5MTc4NTMsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDEyODM2OCwgMCwgCisgICAgOTQwMzksIDAsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgMCwgMTE5ODYzLCA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDAsIAorICAgIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgCisgICAgMzc5MywgMCwgMTI3ODI5LCA2NTM5MywgMTIwNTkyLCA3NDEzOCwgMCwgOTI3NTEsIDc3OTU4LCA3NDEzOSwgNzg3NzcsIAorICAgIDY1Mzk0LCAxMTU0OCwgNTI3MCwgOTgzMjM2LCA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDAsIDAsIAorICAgIDEwODg4LCAxMjc0OTAsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA2ODM0MCwgMCwgMCwgNzEyMDIsIDMzMDQsIDQyNzUzLCAKKyAgICA5MzA0NiwgMCwgNzQ2NDMsIDE2MjcsIDAsIDAsIDAsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIDQzMDk0LCAKKyAgICA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAKKyAgICAxMjg0NjcsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgMTMyNDUsIDAsIAorICAgIDAsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgCisgICAgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAxMjUxMDIsIDYzODA4LCAKKyAgICA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDAsIDc4MTQ2LCA5MjYxMSwgCisgICAgMCwgNzAyMDQsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDIzMDMsIDExMDU3LCAwLCAxMzI3NiwgMTI1MTMzLCA0MTUyNSwgCisgICAgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyOTE1OCwgMTI4MTEyLCAxMjIyOSwgMTE2ODAsIDAsIDQzNDExLCAKKyAgICA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCA2NDE3NSwgMzkzMiwgNjQ5NTgsIDEyMDQzMiwgMCwgNzM5ODksIAorICAgIDY4MTkyLCAwLCA2OTg0NywgMzY5LCAwLCA0MTc4NCwgMCwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIAorICAgIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgCisgICAgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgCisgICAgNDM4OCwgMCwgNzQ2LCAxMTg4MjYsIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNzU0NSwgMCwgMCwgMCwgNDQyMiwgCisgICAgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIAorICAgIDgwMzgsIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIAorICAgIDE5NDkwMiwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCA0Mjg1NSwgMTE4ODU2LCA0Mjg2NiwgMCwgMCwgCisgICAgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgOTgzNTY4LCAwLCAKKyAgICAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIDExOTM1MiwgMTU1NiwgCisgICAgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDMsIDEyNjk5NCwgNDEzNzMsIDY4NDg2LCAKKyAgICAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgCisgICAgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIDAsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIAorICAgIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgOTI5MDIsIDgwMzIsIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgCisgICAgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDcxMTAwLCAwLCA5ODY0LCAwLCAxMjA3ODUsIAorICAgIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDEyNDk0OSwgCisgICAgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDAsIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCAKKyAgICA2Nzg1NiwgMCwgNDM2MzgsIDc4NTM2LCAxMjgyODcsIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgCisgICAgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgMCwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIAorICAgIDQzMjM4LCA5ODMxNDIsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgCisgICAgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcyOCwgNDM1NDQsIDEyNjQ2NiwgCisgICAgMCwgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCAKKyAgICA4Mjg2LCAxMjg1MzcsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgCisgICAgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgOTI5MDcsIAorICAgIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgCisgICAgMTE5MjU2LCA3MTE5MiwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAxMjAzMTgsIAorICAgIDQxMTYzLCA3NDgzMiwgMTExMzYsIDcxODc2LCAxMTUwNiwgMCwgNDI4NDEsIDEzMjY3LCAwLCAwLCA0MTc3NSwgMCwgNzEzMCwgCisgICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCisgICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCAwLCAKKyAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAwLCAKKyAgICA2ODM1OCwgMCwgNjk3ODksIDQyNjUzLCA5MjI2MCwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAxMTk2NTEsIDEyODUxNCwgCisgICAgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIDEyODgyMiwgMTE4OTk3LCAKKyAgICA4MDEyLCA1Njc0LCAxMjM1MywgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCAxMjUwMDUsIDQxOTI1LCAxMjgxMjQsIAorICAgIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgCisgICAgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDEyNDkyOCwgMCwgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIAorICAgIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMCwgOTI4ODksIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAKKyAgICAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgCisgICAgOTMwMDksIDc5NTYsIDU5OCwgMCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NSwgCisgICAgMCwgMCwgMTI4ODU1LCAwLCA4NDcsIDEyODI0MiwgOTUyOSwgMTI4MDE5LCA2NjY1NywgNjk4MCwgNzg0ODMsIDQzNTEwLCAKKyAgICA3ODEyMiwgOTIyMTksIDAsIDY3NDExLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgNzE4NDgsIDk4MzA1NSwgNzExNCwgCisgICAgMCwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAKKyAgICAxOTk2MywgNTY5OCwgMTk0NzY4LCA5ODM5NDEsIDkyOTMzLCA3MTg4NywgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgCisgICAgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCisgICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCAKKyAgICA0MTgwMiwgMCwgNDI2MDgsIDc4NDY5LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIDExNzAsIAorICAgIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCAxMjcyMzksIDExNjYxLCA4MTIyLCA1ODE4LCAKKyAgICAwLCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgMCwgMCwgODA3LCA0MzA3OSwgMCwgCisgICAgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDAsIDQyMTU1LCA5ODMzMTcsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCA3MTA0MywgCisgICAgMTIwMDgwLCA4Njc2LCA5ODMyOTEsIDk0MDAyLCA1NTgyLCA0NTEsIDYzOTQxLCA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAKKyAgICAwLCA3ODY4MSwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgMTI4ODUzLCAxMjAwMTYsIDcwMzQyLCAxMTAwNSwgCisgICAgOTgzNjk3LCA2NjY1NiwgNjYwNDQsIDAsIDEyODU5MiwgMTI4NzkzLCAwLCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgCisgICAgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAKKyAgICAxMTg4ODgsIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIAorICAgIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgCisgICAgNDEwMDUsIDAsIDAsIDk4MzgyNywgODI5MiwgMTI1MTA4LCA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAKKyAgICAxMzE4MiwgMTk0NzA1LCAxMjgyMjQsIDEyNzk3NCwgMTA2MzEsIDY2MDMxLCA3OTcyLCAwLCA3ODc4NSwgMCwgNzkwMCwgCisgICAgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIAorICAgIDk4MzY5MCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDAsIAorICAgIDkxNzgzMSwgMTI4MzYsIDAsIDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDAsIDAsIDc0NjQsIDAsIAorICAgIDY1ODY1LCAwLCAxOTQ2NTAsIDEyNzE0NCwgMCwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCisgICAgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIAorICAgIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMTk0NzgwLCA3NDEwNSwgMzYzMywgOTgzOTAwLCA2NTE2MiwgCisgICAgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgOTgzOTA1LCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgCisgICAgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIAorICAgIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgCisgICAgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAKKyAgICAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgMTI0OTk2LCA3NzkwNCwgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAKKyAgICAxMjkxMzksIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMCwgNDI4MTUsIDkyOTg0LCAKKyAgICA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIAorICAgIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgMTI4NDY4LCA2NTMzMCwgNDI4MTIsIDAsIDAsIDEyMzI2LCAKKyAgICA3MTA4MSwgMTk0NjM4LCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODYxLCAwLCAxMjgzMjgsIDY2ODM5LCAwLCAKKyAgICAwLCA5MTc1ODQsIDQzNzAyLCA5ODMxNDgsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIAorICAgIDExMTg2LCA3NDI5NiwgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgCisgICAgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDAsIDEwNzczLCA3MDg2OCwgOTgzMjk1LCA4Nzk2LCA3ODE0OSwgCisgICAgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDEyNzE4NSwgNjM5MzEsIDAsIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgCisgICAgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMCwgOTgzNjYwLCAwLCA3Mzg2MCwgMCwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCisgICAgNzA4NzEsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgMCwgMTA0MjcsIDAsIDM4NDQsIDY4NDIsIDk3NTUsIAorICAgIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTI4Nzg5LCAwLCA5ODMwOTYsIDc4MywgMTk0OTM1LCAwLCAxMjcyMjEsIAorICAgIDkyNTQ5LCAxOTQ3MjAsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDAsIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAKKyAgICAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAKKyAgICAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzYzNiwgNjM5OTksIDIwMTYsIDQxOTE3LCA5Nzg4LCA2MzkyOCwgNjc2OTYsIAorICAgIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgCisgICAgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgCisgICAgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgOTgzOTI5LCAKKyAgICA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAKKyAgICAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTI4NzczLCAxMjc5NDEsIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgCisgICAgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIAorICAgIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMjY5OTAsIAorICAgIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAKKyAgICAzNDM1LCA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCAKKyAgICA5NTE3LCAxMTUxOCwgMTI4MTY4LCA3ODc5MCwgMCwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgCisgICAgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExMzk3LCAyODgwLCA3MDgwNiwgMCwgMjg3MiwgMCwgMTI4NTA2LCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIAorICAgIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgCisgICAgMCwgOTgzMTk4LCAxMTkxMDMsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAKKyAgICAyOTI3LCA3MTA1OCwgNjM5NjEsIDQ0NzIsIDAsIDAsIDc4MTU5LCA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgCisgICAgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgCisgICAgOTgxMywgMCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTI5MTk2LCAKKyAgICA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCA5ODMxMjQsIAorICAgIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDk4MzkwOCwgOTgzMjkyLCAKKyAgICAxOTQ3NjYsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgCisgICAgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgMCwgCisgICAgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAKKyAgICAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIDE5NDczMywgNzA0MTEsIDE5NDczMiwgMCwgNzQzMDEsIDEyNzg5MywgCisgICAgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIAorICAgIDU0MDksIDEyNzM3OSwgMTk0NjY5LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIAorICAgIDY2ODMyLCA5Mjk2NiwgMTI5MTA1LCA1NDA1LCAxMjc4NzUsIDY0ODY2LCAxMjc4NjQsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgCisgICAgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIDY0NjkwLCAzMjU0LCAwLCAwLCAxMjgyMDcsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAKKyAgICA5ODM5MDksIDY1MDc3LCAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCAwLCAKKyAgICAzMzc3LCAwLCAwLCA3NDM1NCwgMCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjcxOTgsIAorICAgIDc0NzY3LCAwLCAxMjcwNzUsIDEzNzksIDI0NiwgMCwgOTgzNzYxLCAzNzg4LCA5ODMxMDYsIDExMDQxLCA2NzIwMiwgCisgICAgNjYzMDQsIDAsIDAsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIDEwNjU2LCAKKyAgICAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAzMTgyLCAKKyAgICAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NjIxLCAxMTQ0MywgOTgzNjAzLCA2NjMxOSwgCisgICAgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIDQyNDQyLCAKKyAgICA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgMCwgCisgICAgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgCisgICAgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDAsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIDAsIDAsIAorICAgIDAsIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgMTA2NDMsIDU1MjcxLCAKKyAgICAxMjg5NTEsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMTk0ODIyLCAxOTQ3NTYsIAorICAgIDc0MzEwLCA2NTU0LCAwLCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIAorICAgIDEyOTAyOSwgOTY1MCwgNDMzMzAsIDAsIDEyODUwNSwgMTQwNiwgMTI1MDA3LCA0MjkyNSwgNzQ2MzgsIDE5NDU5MywgCisgICAgNjgyMjMsIDQxNDMsIDEyODEzNiwgMCwgNjU3NDgsIDQxNDEsIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIAorICAgIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgCisgICAgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCAwLCA0MzQwMywgMCwgMCwgMTk0NzgzLCA2NTczNiwgNDE5NTEsIDY0ODE2LCAKKyAgICA2NTc1NiwgOTgzMjA1LCAxMjk1NSwgMTA1OTYsIDI4ODgsIDE5NDY0NSwgMCwgMCwgOTY1NywgOTAxOSwgMTI1MDc3LCAwLCAKKyAgICAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIAorICAgIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgNDM4MzgsIDEwNjMyLCAKKyAgICAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDE5NDk3MCwgMTI2NjQ3LCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIAorICAgIDY0ODIyLCAyODkyLCAxMjcyNDIsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAxMjg5ODAsIDExOTAwMiwgMTMxNTEsIAorICAgIDc0NTEyLCA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDEyMDQ1NywgMTc4NCwgCisgICAgMTM2MSwgMTk1MDQ3LCAwLCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCAKKyAgICA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAwLCAxMzQyLCA2ODQ0MCwgNjQxNzEsIDkyNjQyLCAxMDkwMywgCisgICAgOTgzNDk0LCAwLCA5MjUyNywgMCwgNzA0MzgsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDk4MzExMiwgMCwgNjQzODEsIDAsIAorICAgIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCAwLCA5MTI3LCA2NjY4NywgNjY2MTksIAorICAgIDEyNjQ4OSwgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCA3MDE3NywgMTIwODMwLCAwLCAxMTk3LCAKKyAgICAxMjgyODIsIDExNDksIDY4MzE2LCAwLCAwLCA0MDk5MCwgNDM3NjUsIDAsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAwLCAwLCAKKyAgICAwLCAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIAorICAgIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAKKyAgICA5ODM5NzEsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMTI5MTU5LCAwLCA5MjY4MCwgOTgzNzg5LCA2ODE1NCwgMCwgCisgICAgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDAsIDY0NDM5LCAwLCAwLCA5MjY4NiwgCisgICAgOTgzODc1LCAwLCA0Mzg2NiwgMTI4ODgxLCAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMTI4Mzc2LCAwLCA3ODM2MiwgNjQ4MzAsIAorICAgIDAsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIAorICAgIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAKKyAgICAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIDExOTI5LCAxMjg5MDUsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgCisgICAgNDM2MjksIDExNTc5LCA3ODcxMywgMCwgOTI1MDEsIDEyNTA4MSwgOTIxODUsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIAorICAgIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgCisgICAgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDEyNzE1OCwgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgCisgICAgOTgzMDk0LCAwLCAwLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTIwMzE5LCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIAorICAgIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgNTE0MCwgMjA5LCAKKyAgICAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIDY1NDY5LCA3MDEyNSwgCisgICAgMCwgMCwgMjQxMCwgOTkzLCAwLCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCAKKyAgICA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDc4MTE4LCA0MjI0LCAxMzM2LCAKKyAgICA0MTUxOCwgOTgzOTMyLCAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgCisgICAgMCwgMjcyLCA0MjYzLCA4NzkzLCA5ODM4NTYsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEyNDk0MCwgMCwgCisgICAgMTE5MCwgNDEwOSwgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxOTQ4MDYsIDcwMDI3LCAKKyAgICAyMDk5LCA1MTIwLCAyNDA5LCA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgNDczMSwgOTIyNzksIDY2NjI5LCAwLCAwLCAxMjU1LCAKKyAgICA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAwLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAxMTY5NCwgOTI0NzUsIAorICAgIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAKKyAgICAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCAKKyAgICA5MjQ2NSwgMCwgOTM5NjAsIDk4MzMyMiwgMTI2NTgxLCAxMDY5NSwgMCwgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCAKKyAgICA2NTE2NCwgMCwgMCwgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgOTgzMzExLCAxMjY4OSwgCisgICAgOTgzMzEwLCAxOTQ1OTQsIDAsIDk4MzMxMiwgNzE4NTksIDY4MTgzLCAwLCA5ODMzMTQsIDEyODcsIDU0MzYsIDAsIDcxMDk3LCAKKyAgICA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgOTgzMzIzLCAwLCAKKyAgICA5MzA0MywgMCwgMCwgMzY1MiwgMTA1MzcsIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAKKyAgICAxMjg2NjQsIDAsIDE0ODksIDAsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgCisgICAgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAxMTk4MzIsIDkxNzYwMSwgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIAorICAgIDEyOTEzMSwgNjQzMCwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgCisgICAgODY4NSwgMTI4NDgxLCA5ODM3NTksIDAsIDc4NjIyLCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgCiAgICAgNzg2MTYsIDIyOTcsIDAsIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIAotICAgIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgCisgICAgMTIwMjc2LCA5OTMzLCA3NDAxMSwgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCAKICAgICA3ODYzMywgMTA4OTYsIDAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgCi0gICAgNDE1NTEsIDI0MzQsIDk0MDE4LCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIDAsIDYzMzgsIDQzMjE0LCAwLCAKLSAgICA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCA5Mzk4MywgMCwgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCAKLSAgICA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCAKLSAgICA3ODYzNCwgMTk0NywgMCwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIAotICAgIDY1MzU5LCAwLCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIAotICAgIDEyMDY5NiwgNDkwNCwgOTgzMzMzLCA2OTY1MCwgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAwLCAwLCAwLCAwLCAKLSAgICAxMTk1ODcsIDY0NDE1LCAwLCAwLCA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIAotICAgIDk4Mzc3NywgMTI3NjMsIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgCi0gICAgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAKLSAgICAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgCi0gICAgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgCi0gICAgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjMwLCAxMDQ2NywgMCwgCi0gICAgMjQ0MywgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAotICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAotICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAotICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAotICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCi0gICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAotICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAotICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCi0gICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKLSAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAotICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKLSAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKLSAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCi0gICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKLSAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3NywgCi0gICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKLSAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKLSAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAotICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjk1LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKLSAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCi0gICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKLSAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKLSAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKLSAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCA5ODMzMDEsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgCi0gICAgMTA0NzUsIDAsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIAotICAgIDEyNzEwMCwgNzA5OSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCAKLSAgICA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIAotICAgIDc3OTgyLCAwLCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIAotICAgIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgNjMyMywgCi0gICAgMTk0Njg0LCA4MjI0LCAwLCA4OTM4LCA2MDQzLCAxMjczOCwgMCwgOTgzMDc2LCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIAotICAgIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgCi0gICAgMTI4MTYzLCA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDcxMzEyLCAKLSAgICA1NzMxLCAxMzgxLCAyMzg3LCAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCAKLSAgICA5NjY4LCA5NzY2LCAwLCA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAKLSAgICAyODg3LCAwLCAzNTI2LCA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIAotICAgIDEyODI4OCwgNzc4OTUsIDQzMTU1LCAwLCAxMTk4NDksIDMxNDYsIDEwOTU5LCA5NDgzLCAwLCA3Nzg5MywgMTA5ODEsIDE2NiwgCi0gICAgOTE3ODQxLCA4NjM1LCA5ODM2MDYsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIAotICAgIDEyNzE3LCAwLCA3NjA3LCAxMDYzOSwgNDMzOTYsIDAsIDAsIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgCi0gICAgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA5Mzk5NCwgNzc5MDEsIDM0NzIsIAotICAgIDg2OTcsIDAsIDAsIDk4MzgxNSwgMCwgMCwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAKLSAgICAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIDY1MDE3LCA5ODM5NTMsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIAotICAgIDAsIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDExOTg1MywgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAKLSAgICAwLCA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCi0gICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKLSAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAotICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzI0MCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKLSAgICAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICA5ODM5NDAsIDAsIDAsIDEyNzg3MiwgNzEzNjMsIDU4MDMsIDc3OTcsIDYwNzAsIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCAKLSAgICA2NTAwOSwgOTgzOTQyLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIAotICAgIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgCi0gICAgOTM5NjgsIDEyODAxNSwgNjc5NjgsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIDExOTA3MiwgMCwgMCwgMjMwNSwgCi0gICAgNzgzNDgsIDY4MDk2LCAwLCA2MDU2LCA2NjU5LCA2Nzk2OSwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCAKLSAgICA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAKLSAgICAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIDY1MDUsIAotICAgIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCA5MjM3NiwgCi0gICAgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NTYsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAotICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCisgICAgNDE1NTEsIDI0MzQsIDk0MDE4LCAxMjY2NDIsIDY1MzUzLCAwLCA0NjMxLCAxMTg5OTYsIDAsIDY0MDcsIDExMzczNywgCisgICAgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIDk4MzM5MCwgOTM5ODMsIDAsIDAsIDAsIDkxNjQsIAorICAgIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCAKKyAgICA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgNzg2MjgsIDc4NjI1LCAKKyAgICAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCA3NDg1OSwgMzM2NywgOTIzMzQsIAorICAgIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA5MTc1NzksIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIAorICAgIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMTI1MDY1LCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgCisgICAgNzE5MDYsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDk4MzMzMywgNDM1MDMsIDEzNjUsIAorICAgIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCAwLCA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgMTI4ODY5LCAKKyAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDAsIDEyODA4MywgOTQ3NiwgMCwgCisgICAgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjY2MjYsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgOTI1MDIsIAorICAgIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgCisgICAgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAKKyAgICAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCAKKyAgICA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgNjgyOTMsIDkxNzkxNywgMTIyNzYsIDExOTExMCwgNjgzNzIsIDAsIDkyMjU5LCAKKyAgICA3MTg5MywgMCwgMTE5ODI4LCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgCisgICAgMCwgMTI0OTQyLCA3Mzk4NywgMTI3ODg1LCA3MTg5NSwgOTMwMTIsIDc5OTIsIDc3OTQzLCA2NTY3OCwgMTI4NjcsIAorICAgIDEyODc4NywgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCA2NTg1NywgMTI4MzYxLCAKKyAgICAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDk4Mzg2NiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgMTE4NDIsIDAsIAorICAgIDcxMDcyLCAwLCAwLCA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIDc5NiwgCisgICAgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA3NDQwMywgNjEyMCwgNDc4LCAKKyAgICA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgMTIwNiwgMzYxOSwgCisgICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDkyNzU0LCAKKyAgICA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCAKKyAgICA0MjM5NywgMzM0LCAxOTQ2NzYsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDY3MjQzLCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIAorICAgIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNTExNiwgMTExMDIsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAxMjAyNzMsIDY5NzUsIDAsIDU0MTUsIDEyMTc2LCAwLCAKKyAgICA3NDE5MywgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDAsIDEyNzI1NiwgOTc1OSwgMTI3MjU1LCA3MDA1NywgCisgICAgMTI3MjU0LCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgNzAxODksIAorICAgIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIAorICAgIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY2ODk2LCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIAorICAgIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgNTU3NSwgOTY3NSwgMTk1MDE4LCAKKyAgICA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3NywgOTI5NzksIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgCisgICAgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCA2OTg4OCwgNjU1MDgsIDAsIDAsIDAsIAorICAgIDg5MzUsIDc4MjM0LCAwLCA5ODM3NTcsIDAsIDYxNiwgNzQ3NTMsIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCA3NDYzMSwgCisgICAgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIAorICAgIDk2ODEsIDQ0NzUsIDY3NDI5LCA0MTE0MiwgMjEwMCwgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCAKKyAgICA2NDQ0MywgOTgzOTU3LCA5ODMyOTQsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIDY4NDg4LCAxMDM5MiwgCisgICAgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDcxMTgyLCA5ODAwLCA4OTc5LCAwLCAxMzMwNywgNDEwMDAsIDAsIAorICAgIDExOTIzOSwgNjQ4NywgMzM4NiwgMTI5MDk0LCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIAorICAgIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDAsIAorICAgIDEyMTczLCA3ODU0NSwgMCwgNjY4MjQsIDY1MzM4LCA5ODM2NzYsIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgCisgICAgMTI4NjQ0LCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgMCwgCisgICAgNDU2MCwgMCwgMCwgOTIyNzcsIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCAKKyAgICA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCA5ODMzMDEsIDEyNTQyLCAwLCA2NTM0MSwgNjc3MDMsIAorICAgIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgCisgICAgNjUyNzksIDEyNzEwMiwgNjgyMDcsIDEyNzEwMCwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCA3ODU1NCwgOTMzNiwgCisgICAgNDM3NTAsIDEyODUwNywgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIDQzMDE4LCAKKyAgICAxMjcwODIsIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3Nzk4MiwgNjY4NjYsIDUxMjcsIDExMjg1LCAKKyAgICA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAKKyAgICAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCAwLCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgODIyNCwgCisgICAgMTI4NDE3LCA4OTM4LCA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCAxOTQ3OTgsIDEyMDI1MSwgCisgICAgMjU4OSwgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCAwLCAwLCAxMjg1MTYsIAorICAgIDEyODE2MywgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCA5ODM4MjIsIDE1MDMsIDAsIDAsIAorICAgIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAKKyAgICAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgCisgICAgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgCisgICAgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgNDMxNTUsIDAsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgCisgICAgOTQ4MywgMCwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgOTE3ODQwLCAxMDYyMywgNDA4LCAxMTkwNTgsIAorICAgIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgNzYwNywgMTA2MzksIDQzMzk2LCAwLCAxMTkwODksIAorICAgIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjI5MywgNjY0NSwgNjQ2LCA2NjcyNiwgCisgICAgNjY3MTEsIDQyMTI5LCA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDAsIDk4MzgxNSwgMCwgMTk0NTk5LCAwLCA1ODA5LCAKKyAgICAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMCwgNDIxMzYsIDAsIDAsIDAsIDAsIDMyNDcsIDkyNDAyLCA2NTAxNywgCisgICAgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCA0MTU2NywgMCwgMCwgMCwgNzg0NDYsIAorICAgIDExOTg1MywgMTI3OTIyLCAwLCA4Mjg1LCAwLCA0NTA5LCA5MTc4MDIsIDY2NDcxLCAxMjIxNiwgMCwgNDA5ODgsIDkyNTkyLCAKKyAgICA3NDgwOSwgNDE3MjcsIDAsIDQyODQ4LCAyMzk2LCAxMjkwNzgsIDAsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAKKyAgICAzODg2LCAwLCA0MjQ1NywgOTI4ODgsIDExOTgzNCwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDkyNDEwLCA2OTY1MCwgCisgICAgMTE3MDcsIDgyMjIsIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAorICAgIDY5ODUzLCA0MDk4MywgMCwgOTgzMjQwLCAwLCA3MjAxLCAxMjU2MSwgMCwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIAorICAgIDEwMDUyLCA0MDk4MiwgMCwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDAsIDE1NjMsIAorICAgIDEyODAzNCwgOTYxOSwgOTgzOTQwLCAwLCA5ODMwODIsIDEyNzg3MiwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAKKyAgICAxMjg5MjIsIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCAwLCAwLCAKKyAgICAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCA5MTc5MDQsIAorICAgIDExOTEzMSwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgMCwgOTIxOTgsIDAsIDAsIAorICAgIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDAsIDIzMDUsIDc4MzQ4LCA2ODA5NiwgMCwgNjA1NiwgNjY1OSwgNjc5NjksIAorICAgIDk4MzI4OCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDk4Mzc4MywgNDAyOCwgCisgICAgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgCisgICAgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIAorICAgIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCAxMjk5MCwgMCwgOTIzNzYsIDEyNzQ1LCA5Njc4LCA5ODMxNDMsIDEyMDU4NywgOTg2OSwgCisgICAgMTI4ODE1LCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAwLCA0MjA4LCA3ODM0MSwgNzg1NjcsIDc4MzQyLCA2Nzc0MiwgCisgICAgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMCwgNzAwOTYsIDY4MzUsIDY4MDEwLCA2NjQ3NSwgMTIwMjYwLCA1MDI3LCAKKyAgICA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCA5Mjc3NCwgNzM3MzksIDUwMjYsIAogICAgIDk4MzI1MywgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKLSAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAKLSAgICAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjc5LCAxMDYwMCwgOTE3ODY3LCAKLSAgICA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIAotICAgIDY5ODkyLCA5ODMyMDksIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAotICAgIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgCi0gICAgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgOTgzMjI3LCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAKLSAgICAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAKLSAgICA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAxMjY0ODIsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgCi0gICAgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIAotICAgIDk4MzE4OCwgMCwgMCwgNzUzOCwgNTMxNSwgMTIwNjQ0LCA0MjQ5MSwgMCwgNDIwNjEsIDEyODA4OCwgNDU3NiwgMCwgCi0gICAgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCA0MDM5LCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAKLSAgICAxMTMzNywgNzgyMDksIDkxNzgyMCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgCi0gICAgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAwLCAzNjE4LCA3ODMzOCwgMCwgNDMzMDAsIDUxNTYsIDkyNjI5LCAKLSAgICAwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMCwgCi0gICAgMCwgMCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgNzg3MTUsIAotICAgIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDk4MzEyNywgNDI0NzYsIDc3MzAsIAotICAgIDk4Mzg1OSwgMTI4NTIyLCA0MjQ4MywgMCwgMCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDAsIDY2NDEsIDUyNSwgCi0gICAgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCAKLSAgICA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDAsIDc0MzYwLCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCAKLSAgICA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCA5ODMwOTIsIDExMzc0LCA3ODA0MywgMTA4ODksIAotICAgIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDczODQyLCAxMzMwOCwgCi0gICAgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAwLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNzc5NDcsIDc3OTQ0LCA2NDI5NiwgMTI3MDkwLCAKLSAgICA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgCi0gICAgNjQ0MzQsIDkyNTIwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgCi0gICAgNjMwLCAxMjcwOTQsIDAsIDEyMDc3NCwgOTI0NjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyODY2NCwgMzEzLCAKLSAgICA5MTc1NjMsIDQxODgxLCAwLCA0MjMxMSwgNzQ0NSwgMCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgCi0gICAgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDAsIDY2NDk1LCAwLCAwLCAxMjcyMzksIDQxNzE4LCAxMDcwNywgCi0gICAgMTYwMywgMCwgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCAwLCAxMDU0NiwgNzQyMTAsIAotICAgIDc4MTAxLCAxMTYwMCwgNzc5NjEsIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgCi0gICAgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAwLCA0MjI4MiwgNzc5NzEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgCi0gICAgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCAKLSAgICA4MjQ0LCAzNjIsIDkyNDM5LCAwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDAsIDc0ODQ1LCA1MTg1LCA3MTY1LCA1NTIxLCAKLSAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjgxMTIsIDEwMTA0LCAxMDI3LCA1MTgxLCAwLCAwLCAxMDUyMywgMTQ0NiwgCi0gICAgNDIzMjAsIDQxNjQ2LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA0Mjg5OCwgMzQwNSwgCi0gICAgMCwgMTk0NjQ0LCA1NTIzLCAwLCA0MjYyMCwgOTI0NDcsIDk4MzgxOSwgOTU0OSwgMCwgMTA1NDksIDU1MjgyLCA5NjYxLCAKLSAgICA0MzY4MiwgMCwgNzc5MTAsIDEyMDAyNiwgNzg3MDgsIDAsIDc3OTExLCAwLCA0MTk5MSwgOTgzODkzLCAwLCA3NjMwLCAKLSAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgCi0gICAgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAKLSAgICA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA3Nzk4NCwgNzQ0NDMsIDAsIDEwMjA5LCA4MzEzLCA0MTk1LCA3NDQzNSwgCi0gICAgMTMxNiwgNjY2OTAsIDEyMDAzMiwgNjMzMiwgNjQ4OTQsIDAsIDY1ODcxLCA3ODA2MCwgMTczNiwgOTgzNjg0LCAzOTAxLCAKLSAgICAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAKLSAgICAxMTk0OSwgOTgzNjY5LCAxMjAxNTIsIDExMDI2LCAxMjg3ODgsIDUzMzIsIDY5NDAsIDY0MTU0LCAxMjYzNSwgMTI3MDA3LCAKLSAgICA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgMTIwNzYzLCA3ODg0MCwgNzEzNjgsIDEyODI0LCAwLCA0NTI4LCAKLSAgICA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgMzc1NywgMCwgMCwgMCwgCi0gICAgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgCi0gICAgNzQwOTUsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCAwLCA0MDQ0LCA5MjY0NiwgMCwgMTIyMzMsIDk4Mzg3MSwgCi0gICAgMTAyMywgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMTI3ODY2LCA0MjI5NSwgMCwgMCwgNzEzMjIsIAotICAgIDkyNTE4LCA5ODM1LCA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAKLSAgICAxMDExOCwgMzEzMywgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgCi0gICAgMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCAKLSAgICA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgMTE5MTg0LCA5MjE5NywgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgMTkzNywgCi0gICAgOTgzNzUxLCAwLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMTIwNjAxLCAwLCAyOTMsIAotICAgIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIAotICAgIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgCi0gICAgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIAotICAgIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCAKLSAgICA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKLSAgICA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCA0MjQyMiwgMCwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAKLSAgICAxOTQ3MTksIDAsIDQyMzI4LCAxMDc2NywgMCwgODExNSwgMCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCi0gICAgMCwgNjU4NDgsIDAsIDAsIDY5ODYzLCAwLCAxMjY5ODcsIDQ0ODYsIDAsIDAsIDAsIDEwOTI1LCAwLCAwLCAwLCA5ODM1ODYsIAotICAgIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCAwLCAxMDMwNSwgNDI0NjEsIDAsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCi0gICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMCwgNDI0MjksIAotICAgIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIAotICAgIDAsIDAsIDY0OTMzLCAwLCA0MTk2MCwgNjY5OSwgMCwgMCwgMTI4MzU0LCA2ODIzLCA0MjM5MSwgMTU4OCwgNjU0MDAsIAotICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCi0gICAgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCAwLCAwLCAwLCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIAotICAgIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDc0NDU3LCAwLCAwLCA0MTU1NCwgMCwgCi0gICAgODIyMCwgOTE3OTQzLCA0MTU1NywgMCwgMCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCAKLSAgICA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDAsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgCi0gICAgMCwgMTE4OTMwLCA2NDUyNywgMCwgNzg3NywgNzM4MDMsIDk4Mzc5OCwgMTI3MzQ4LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAKKyAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAKKyAgICA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjc5LCAxMDYwMCwgCisgICAgOTE3ODY3LCA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDY4MTM3LCAKKyAgICA1MDI1LCA2OTg5MiwgOTgzMjA5LCAwLCAxMTg4ODUsIDEyNzk1NiwgNjU1NTcsIDAsIDc0NTQxLCAxMjg5MjQsIDExNTk5LCAKKyAgICAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIAorICAgIDc0MTk1LCAxMTU2OSwgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgNzEyMDMsIDEwODE1LCAxMTYxOSwgMjMwMSwgCisgICAgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCAKKyAgICA3ODQ5OCwgNDEwNDgsIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAxMjY0ODIsIDY2MTYsIDAsIAorICAgIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCA0MzYwNiwgNzExODUsIDY4Mzk3LCAKKyAgICA2NjM3MCwgNzQyODIsIDQyMzM1LCA5ODMxODgsIDcyNDIxLCA5ODM3OTksIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIAorICAgIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIDM1NjMsIDY0NDcyLCA0MjMzOCwgCisgICAgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgOTE3ODIwLCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIAorICAgIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDAsIDM2MTgsIDc4MzM4LCAKKyAgICAxOTQ5MjQsIDQzMzAwLCA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCAKKyAgICA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAwLCAwLCAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIAorICAgIDk4MzczNCwgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgCisgICAgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDAsIDEyODQwNCwgCisgICAgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCAKKyAgICA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIAorICAgIDEyODMyMSwgNzQzNjAsIDEyNTEwMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIAorICAgIDkyMzk4LCAwLCA3Mzg0MCwgOTgzMDkyLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgCisgICAgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgNzc5NDgsIAorICAgIDM2MywgMTEwMTUsIDY2ODE3LCA3Nzk0NCwgNDM4NTcsIDEyNzA5MCwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIAorICAgIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgCisgICAgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKKyAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTI5MDMzLCA0MTg4MSwgMCwgNDIzMTEsIDc0NDUsIAorICAgIDExOTI0NCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIAorICAgIDk0MjIsIDAsIDY2NDk1LCA2OTk5MCwgMCwgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAxMTkwMDMsIDAsIAorICAgIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAxMTYwMCwgCisgICAgNzc5NjEsIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAxMjM1MSwgCisgICAgNDIzOTUsIDAsIDExNjA3LCAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgNDI0MzMsIAorICAgIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIDM2MiwgCisgICAgOTI0MzksIDEyNTA5NiwgODAzNywgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIAorICAgIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgOTgzMTQ2LCAwLCAxMDUyMywgMTQ0NiwgCisgICAgNDIzMjAsIDY4NDUsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAwLCAKKyAgICAxOTQ2NDQsIDU1MjMsIDAsIDQyNjIwLCA5MjQ0NywgMTI0OTg4LCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIAorICAgIDQzNjgyLCAwLCA3NzkxMCwgNzgwNjgsIDY4MjQ3LCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgOTgzODkzLCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIAorICAgIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCA4MzEzLCA0MTk1LCAKKyAgICA3NDQzNSwgMTMxNiwgNjY2OTAsIDEyMDAzMiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDc4MDYwLCAxNzM2LCAKKyAgICA5ODM2ODQsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgMzE0LCAKKyAgICA2NDE0OSwgNDI0MjAsIDExOTQ5LCA5ODM2NjksIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgNjQxNTQsIAorICAgIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCA3MTM2OCwgCisgICAgMTI4MjQsIDAsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAKKyAgICAzNzU3LCAwLCAwLCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIAorICAgIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgNDA0NCwgOTI2NDYsIDAsIAorICAgIDEyMjMzLCA5ODM4NzEsIDEwMjMsIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDEyNzg2NiwgCisgICAgNDIyOTUsIDAsIDEyNTExNCwgNzEzMjIsIDkyNTE4LCAyMjIyLCA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAKKyAgICAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAxMDExOCwgMzEzMywgMTI4MDA4LCA3MTg1NywgMCwgOTYxMCwgODA2OCwgCisgICAgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgCisgICAgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDcxODU1LCAKKyAgICAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAKKyAgICA3Nzk2NSwgOTgzNzQ2LCAxMTAxNywgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgCisgICAgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgCisgICAgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIAorICAgIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgCisgICAgOTgzMTQ5LCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMCwgODkxNCwgNjY5MDgsIAorICAgIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNjY0MDgsIAorICAgIDAsIDY0NDE2LCA0MjQyMiwgMCwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxOTQ3MTksIDEyOTE0NSwgCisgICAgNDIzMjgsIDEwNzY3LCAwLCA4MTE1LCAwLCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCA5ODMyMzAsIAorICAgIDY1ODQ4LCA5Mjg4NCwgMCwgNjk4NjMsIDAsIDEyNjk4NywgNDQ4NiwgMTI4MDgyLCAwLCAwLCAxMDkyNSwgMCwgMTE5ODY4LCAKKyAgICAwLCAxMjQ5NTIsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAxMDMwNSwgNDI0NjEsIDAsIDQyMzQ5LCAKKyAgICA4ODMyLCA3ODA1MSwgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgCisgICAgNzc5NCwgMTE5ODY3LCA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCAKKyAgICA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgMCwgMTI4NzQ3LCA2NDkzMywgMTk0ODE1LCA0MTk2MCwgNjY5OSwgNDI5MDMsIAorICAgIDEyODc1NSwgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgCisgICAgNzEzMTUsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIAorICAgIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgCisgICAgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI5MDMxLCA0MTU1NywgCisgICAgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgCisgICAgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAKKyAgICAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCAxMjcyMywgOTgzNzk4LCAxMjczNDgsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIAogICAgIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIAotICAgIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIDc4ODM1LCA5MjQxMCwgCi0gICAgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDAsIAotICAgIDg2MzYsIDk4MzkyNywgODMxNSwgNjU0NDQsIDk4Mzc5MywgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyNzEwOCwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDAsIDY5NzkwLCA2NDQzNSwgMCwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAotICAgIDQ0ODUsIDEyNzEwNywgMCwgNjQ5MjYsIDAsIDAsIDAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgCi0gICAgMTI4MjUsIDAsIDAsIDEyNzI1LCAwLCAxMjcxMDYsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCAKLSAgICA2NDQ5OSwgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIAotICAgIDc4NjE5LCAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAKLSAgICAxMjEzLCAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMTI3MzY5LCA2NDM4NywgNDExNSwgMCwgNTAwNSwgCi0gICAgNjQwNzAsIDY0MDczLCAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCAKLSAgICA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3NDE5MiwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgCi0gICAgMTI4NTgsIDEyMDE1OSwgMCwgMTEzNzMsIDYzNzgsIDEyNzg1OSwgMTIwMTAzLCA4NjYzLCA5MzEyLCA0MTY0NCwgNDUzOSwgCi0gICAgMjEyOSwgMCwgOTIyMiwgOTgzNzM4LCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgCi0gICAgNDIzMzEsIDY0OTM1LCAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NjcsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAKLSAgICAzNjEzLCAxMjg4MzcsIDAsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIAotICAgIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCA2NDkwMywgODYzOCwgMCwgMCwgMCwgMCwgNjk4NDgsIDgyMzUsIAotICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMCwgNjkyMTYsIDAsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgCi0gICAgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgCi0gICAgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIAotICAgIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAKLSAgICAxMjAzMjUsIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgCi0gICAgMTIwMzI2LCAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIAotICAgIDAsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAKLSAgICAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCA5ODM5MDMsIDAsIDc4ODcxLCAxMjA0NDIsIDk4Mzc2OSwgMTkyMSwgCi0gICAgMTA5NDcsIDE5OTI3LCAwLCA2NTQwNiwgMCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIAotICAgIDEwOTU2LCA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDAsIDU3NzQsIDgzMjUsIDAsIDY1NDAzLCAKLSAgICA5ODMwODksIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgNjk4NDYsIDAsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCi0gICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKLSAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDE5NDY1MiwgMTI3NDczLCA4NDIxLCAxMjc0NzIsIAotICAgIDY5NjgyLCA0MzcwNSwgNTAyLCAwLCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgCi0gICAgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgMTI2NjQ4LCAxMjc4NzcsIDQyNDg4LCAwLCAKLSAgICA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIAotICAgIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIAotICAgIDY1NDUyLCAwLCAxMTMwMSwgNzgwMTMsIDc4MDA4LCA3ODAxMCwgOTg3NCwgNzgwMDcsIDAsIDEzMTksIDMwNTAsIDY1NDEwLCAKLSAgICAwLCAwLCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgCi0gICAgOTI3MDksIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgCi0gICAgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgMTE5NjExLCA3OTIzLCAzNzE2LCAKLSAgICA5MjM2MywgOTk5NiwgODUwOCwgMCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCAwLCA0MTcwNywgODQ5MywgCi0gICAgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIAotICAgIDAsIDAsIDkxMTksIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgCi0gICAgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgCi0gICAgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIAotICAgIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCAKLSAgICA0NTY5LCA3NDEzMCwgMCwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIAotICAgIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAKLSAgICAwLCA5ODM1ODEsIDc0MDU0LCAxMjc3NTQsIDE5NTAyOSwgMCwgODM5LCA5ODMzMTksIDc2OTUsIDg3NjksIDY1MjQ2LCAKLSAgICA0ODI5LCAxOTQ2NjMsIDQ4NTksIDY0NDY3LCAwLCA5ODM5NjMsIDExODk5OCwgNzIwNiwgMCwgNjY0NywgNDM5ODYsIDAsIAotICAgIDY5NzY2LCAwLCA2NDc2NCwgNDIxMCwgOTgzODYzLCAxMjc5MzYsIDgwNCwgMCwgMCwgMTIyOTgsIDAsIDY2NjUzLCAwLCAKLSAgICA2NDkyNCwgMTAwOTEsIDczOTMxLCA5NDY4LCA3NDI0NSwgMCwgMCwgNzQyNDYsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIAotICAgIDkyMjAyLCAwLCAxMjc5LCAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAwLCA5MjY5NywgNDMyMzksIDg0ODIsIDkyNDQwLCAKLSAgICAwLCA1MDMyLCA2OTY3NywgMTE5NDAsIDY3ODg4LCA2NjQsIDEyMDQzNywgNTAzNCwgMCwgMCwgMTI3NTI1LCA0MjcwMiwgCi0gICAgNzM4ODgsIDk4MzE0OSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAKLSAgICAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIAotICAgIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAKLSAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgMCwgMTY2MywgMTA0MTksIDc0MDI1LCAKLSAgICA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgMCwgNjc4NzYsIDAsIDAsIDAsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIAotICAgIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIAotICAgIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAKLSAgICAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAxMjA0MjcsIDEwNDUxLCAwLCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCAKLSAgICA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCAwLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIAotICAgIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCAwLCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCA3NDQwMiwgMTE4ODYwLCAwLCAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgCi0gICAgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDEyMDQxNywgMTIwNjYyLCAKLSAgICA2OTkyMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgOTQ1NSwgMCwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIAotICAgIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAwLCAwLCAwLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgCi0gICAgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAKLSAgICAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgMCwgOTM1NCwgOTgzMTY0LCAxMjg4MzMsIDQxMTk5LCAxMDEyMSwgMjAyOCwgCi0gICAgMCwgOTgzMTk0LCA2OTcxNSwgMCwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAwLCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIAotICAgIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDAsIDc0MDcxLCAwLCA5ODM0NTcsIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgCi0gICAgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgNTQyLCAwLCAxMTg3ODYsIDAsIAotICAgIDk4Mzk3OSwgMTIzMCwgMCwgMCwgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgMTI3OTM4LCA4MzUyLCAKLSAgICAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAwLCA3MDA4MCwgCi0gICAgNzEzMzgsIDAsIDg2NjAsIDEyNjQ5NSwgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgCi0gICAgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAKLSAgICAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCA2Nzk3OSwgOTgzNjkwLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgCi0gICAgNzQ3ODUsIDY5ODc1LCAwLCAwLCA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA3NDI4MCwgCi0gICAgMTA4NzcsIDExODg2OCwgNjQ4ODUsIDc0MjcyLCAwLCAwLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMCwgNzQ0NTYsIAotICAgIDY0NjA2LCA5OTE3LCAwLCA5MjIzMSwgNTAzNywgMCwgMTc3NiwgODQyMiwgMCwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCi0gICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAKKyAgICA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCA5ODM4MDgsIDEyNzM1NywgCisgICAgNzg4MzUsIDc4ODM2LCAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMTE4ODY3LCA4NjI1LCA2NDM0NiwgCisgICAgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCAKKyAgICA2MTUyLCAwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgCisgICAgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgNDQ4NSwgMTI3MTA3LCAwLCA2NDkyNiwgMCwgMCwgCisgICAgNDM4MzAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgMTI4MjUsIDAsIDAsIDEyNzI1LCA3NDA5MiwgCisgICAgMTI3MTA2LCA3ODYzNCwgMjIzLCA3ODYzNSwgNjk2NzUsIDEyMDE2NiwgNDI0NDQsIDEyODQ0OSwgNjQ0OTksIDY1MjQ1LCAKKyAgICAxMjkxMDQsIDExNzEsIDEyODgwMiwgNjk3MTcsIDEyMDExMywgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCAKKyAgICA3ODYxOSwgMTIwMTExLCAyMzM4LCAwLCAxMTg4NTMsIDAsIDQyNjc2LCAwLCA2NDgwMCwgMTMwOTIsIDExMTg1LCA2ODEyNiwgCisgICAgMTIxMywgMTI4NDE5LCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMTI3MzY5LCA2NDM4NywgNDExNSwgMCwgCisgICAgNTAwNSwgNjQwNzAsIDY0MDczLCAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCAKKyAgICA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3MDc5NSwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgCisgICAgMTI4NTgsIDEyMDE1OSwgMCwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAKKyAgICAyMTI5LCA3MDc4NSwgOTIyMiwgOTgzNzM4LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIAorICAgIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgNzE4NTgsIDcyNDQwLCAyNDU0LCAKKyAgICA0MjcxNywgMzYxMywgMTI4ODM3LCAwLCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMTEzNzIzLCAKKyAgICA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCA2NDkwMywgODYzOCwgMTI3MjY1LCA5MTc4ODYsIAorICAgIDAsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMCwgNjU0MzAsIAorICAgIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgMTIwMzE0LCA2NDI5MSwgMTIwMzE1LCA5OTgsIDEyMDMxMiwgMTEwNjIsIAorICAgIDEzMTcsIDY0MzI3LCAxNTU4LCA5ODM5MzQsIDE5OTEsIDc4ODIsIDQyMjU0LCAxMjg5NTQsIDQxNzAwLCA1MzAsIDAsIAorICAgIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIAorICAgIDUwMDQsIDc0MDMzLCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgNjYzNzMsIDk4MzI0NywgMCwgNjQ5MDgsIAorICAgIDkyNjkxLCA2MzExLCA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgCisgICAgOTIxODgsIDY1OTgsIDAsIDY1OTksIDY2ODIyLCA5MzAzMSwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDAsIDY1OTcsIDk0MTIsIAorICAgIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDEyODQ5NSwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICA5MzA1OSwgMTIwMjQzLCAyMzM2LCA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIAorICAgIDE5OTI3LCA3MDM5MCwgNjU0MDYsIDAsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgCisgICAgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCAKKyAgICA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIAorICAgIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgCisgICAgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIAorICAgIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTk0NjUyLCAxMjc0NzMsIDg0MjEsIAorICAgIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDAsIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCAKKyAgICA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCAxMjY2NDgsIAorICAgIDEyNzg3NywgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAKKyAgICAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgCisgICAgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgOTg3NCwgCisgICAgNzgwMDcsIDk4MzExNSwgMTMxOSwgMzA1MCwgNjU0MTAsIDY3Mzk5LCAwLCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgCisgICAgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgOTI3MDksIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCAKKyAgICA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCAKKyAgICA4ODk0LCA0MzE3OSwgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIDcwMTIsIDgxOTUsIAorICAgIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgCisgICAgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDAsIDkxMTksIDI3ODcsIDc5MjAsIAorICAgIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCA5MTc3OTIsIDAsIDc4MDIxLCA3ODAyMiwgNDEwLCA3ODAyMCwgCisgICAgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIDQxNjczLCAKKyAgICAxMjAzNzAsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIAorICAgIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIAorICAgIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA2ODQ5NSwgNDU2OSwgNzQxMzAsIDEyODY1OSwgNDM0ODcsIAorICAgIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIDE5NDg1OCwgNzQ4NTQsIDAsIDcwNDY2LCAKKyAgICA2NzM5MiwgNjYzODUsIDAsIDYyOTEsIDAsIDY4NDg3LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAwLCA5ODM1ODEsIDc0MDU0LCAKKyAgICAxMjc3NTQsIDEyODkxNywgMCwgODM5LCA5ODMzMTksIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgCisgICAgNjQ0NjcsIDAsIDk4Mzk2MywgMTE4OTk4LCA3MjA2LCAxMTk2MzYsIDY2NDcsIDQzOTg2LCA5ODM3OTYsIDY5NzY2LCAKKyAgICAxOTQ2NjQsIDY0NzY0LCA0MjEwLCA5ODMyNTQsIDEyNzkzNiwgODA0LCAxOTQ2NTEsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIAorICAgIDAsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIDY3MjA2LCA2NzIwNSwgNjcyMDQsIDY3MjAzLCA5MjUwMywgMTI4MzksIAorICAgIDY0NjY5LCA5MjIwMiwgNzE4NTEsIDEyNzksIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgOTI2OTcsIAorICAgIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDAsIAorICAgIDcwMjAwLCAxMjc1MjUsIDQyNzAyLCA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCAKKyAgICA5MTE1LCA3NDMwLCAxMjAzNzcsIDcwMTkxLCAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCAKKyAgICA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIAorICAgIDQxMTY0LCA2NDc0NCwgOTUyOCwgNjc3NDEsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgNzg4LCA3NDAyNywgMCwgNzE4ODEsIAorICAgIDAsIDE2NjMsIDEwNDE5LCA0MjkwMSwgNDI2MzYsIDY3MjExLCA2NzIxMCwgMCwgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIAorICAgIDY3MjEzLCA2NzIxMiwgMCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIAorICAgIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCA2NzIyMSwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIAorICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCA2NzIyNywgCisgICAgNDMzMzMsIDY3MjI1LCAxMjg0ODMsIDEyMDQyNywgMTA0NTEsIDY3MjI5LCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCAKKyAgICA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCA3Nzg0MiwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAKKyAgICAwLCAxMTAxMCwgMTExNjQsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgNDM4NDYsIDc2ODIsIDc0MDQ5LCAxNDYyLCAKKyAgICAxMDIzNSwgMCwgMCwgMCwgNDM0NDEsIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgMCwgNzQ0MDIsIDExODg2MCwgNzg2NjEsIAorICAgIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgCisgICAgNjQ3NjUsIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgNjk5MjAsIDE5NDcwMiwgNjIxNiwgNjcyMzAsIDEwNzU1LCA5NDU1LCAKKyAgICAxMTE1NSwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAKKyAgICAwLCAwLCAwLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMTIwMzY1LCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgCisgICAgNzg1NjIsIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI1MDEyLCAwLCAKKyAgICA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDk4MzE2NCwgMTI3OTU5LCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDEyMDI1MywgCisgICAgNjk3MTUsIDAsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDExOTQ4LCA5MjIwNSwgCisgICAgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgNzQwNzEsIDAsIDk4MzQ1NywgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIAorICAgIDc4NzcyLCAxMTM3NzAsIDE3MzQsIDAsIDc4MTQxLCAxMjcwNDAsIDY0NTk0LCAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgCisgICAgNTQyLCAwLCAxMTg3ODYsIDk4Mzg1OSwgMTk0Nzk3LCAxMjMwLCA5ODM5NTMsIDEyNjU1NSwgMzU5NywgNDQ0NiwgMTA1ODQsIAorICAgIDc0MjM1LCA5MjIxNSwgNDAzNywgNjc3MzcsIDgzNTIsIDAsIDU2ODcsIDAsIDY0NTE1LCAwLCAxOTQ4MDEsIDU1MjY1LCAKKyAgICA2Nzg0NiwgNzg0MzQsIDk3MDQsIDAsIDAsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDc4LCAwLCAwLCA3ODc3MywgCisgICAgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxOTQ4NTEsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgCisgICAgOTgzMTAxLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCAKKyAgICA2Nzk3OSwgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMCwgOTE3OTg2LCAKKyAgICA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA2NzY4MiwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIAorICAgIDc0MjcyLCAwLCAxOTQ2NzIsIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgOTkxNywgCisgICAgMCwgNzQ4NTUsIDUwMzcsIDAsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgNDMzMjgsIAorICAgIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgCiAgICAgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIAotICAgIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAKLSAgICAwLCA2NjcwMiwgMCwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgCi0gICAgNzAxNywgNDI4NTIsIDAsIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgOTgzODc4LCA3NDAzNSwgMCwgMTE5MTMsIAotICAgIDczODc0LCA2Njk2LCAwLCA4OTIwLCAxMTkyOTgsIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgCi0gICAgMCwgMCwgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCAKLSAgICA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAKLSAgICAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTYxLCAwLCAKLSAgICAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDU5LCAxOTUwNjIsIDk5NDksIAotICAgIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgCi0gICAgNDE0NjgsIDk4Mzc1NywgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgCi0gICAgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgCi0gICAgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgCisgICAgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDEyODQ5NiwgNjQ5LCAKKyAgICA2NTQyMSwgMCwgNjY3MDIsIDAsIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAKKyAgICAxMjY1MTksIDcwMTcsIDQyODUyLCAwLCA4MTU3LCA5NzM2LCA2NDUwMywgNjU0MTgsIDAsIDk4Mzg3OCwgNzQwMzUsIDAsIAorICAgIDExOTEzLCA3Mzg3NCwgNjY5NiwgMTI4Nzc1LCA4OTIwLCAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIAorICAgIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIAorICAgIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc0NjI3LCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAxMjgxMDgsIDAsIAorICAgIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIAorICAgIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgNzQ1ODIsIDc4MzM2LCA3ODMzOSwgOTU0MywgCisgICAgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIDc3ODMxLCA5ODM5NjEsIDAsIDEyNDUxLCAwLCA4Njg0LCAxMjgzMDEsIAorICAgIDYxMDIsIDAsIDUyOTgsIDAsIDUyOTQsIDAsIDAsIDEyODc0NiwgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAKKyAgICAxMTkyMTUsIDAsIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCAxMTkwNzYsIDAsIAorICAgIDUyOTIsIDU1MjcyLCA5ODM4ODMsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3OSwgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgMCwgCisgICAgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgMTMyMTksIDk1NjksIDAsIAorICAgIDc0MzgzLCAwLCA3NDE5NywgMTI5MDg5LCA1NTAwLCA4ODEzLCAwLCAxMjg2MTIsIDc0NTY2LCA1MzIyLCAwLCA3ODM0MCwgCisgICAgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIDMzNjAsIAorICAgIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgCiAgICAgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIAotICAgIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgCi0gICAgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDc0NDY2LCA5Mzk2NiwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCAKLSAgICA0MzMyNSwgMCwgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAKLSAgICAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCA5ODM0NTgsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAKLSAgICA5ODM2NTcsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCAKLSAgICA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAKLSAgICAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCAKLSAgICA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAotICAgIDEzOTQsIDc0NTE0LCAwLCA3NDUxNSwgMCwgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgCi0gICAgNDIwOTAsIDExOTE2NSwgMCwgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIAotICAgIDM2NzAsIDEyODY1NywgMTk0NjAwLCAwLCAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIAotICAgIDYxOSwgNDYzNSwgNjUwODAsIDAsIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgCisgICAgNDE4MTUsIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgNDExNTIsIAorICAgIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgNjcxNzUsIAorICAgIDY3MTc0LCAwLCA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAxMjg0OTcsIAorICAgIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgOTgzNDU4LCA3MjQwOSwgCisgICAgNzgyNTYsIDcyNDA4LCA3ODM1MiwgMCwgOTgzNjU3LCAwLCAwLCAxMzc4LCA5NTA5LCAwLCA5Mjk5NiwgNzI0MDcsIDMwNjYsIAorICAgIDkyMjIwLCA2Nzg0NywgNzI0MDYsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgNjcxODksIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgCisgICAgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDAsIDE5NDYxMiwgMCwgNzgzNjYsIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCAKKyAgICA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzEwNTAsIDgxMTksIDY0ODc0LCA3MTA1MiwgNzgxNzQsIAorICAgIDE5NDkzOSwgMTI4NjMwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIDEzOTQsIDc0NTE0LCAxMjg0MTMsIDc0NTE1LCAwLCA2NzE4NCwgCisgICAgMjk5OCwgOTUyNywgNjcxODEsIDY1MTkwLCAxMjk3NywgNDIwOTAsIDY3MTg1LCAwLCAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgCisgICAgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgNjcxOTMsIDY3MTkyLCAzNjcwLCA2NzE5MCwgNjcxOTcsIDY3MTk2LCAKKyAgICA2NzE5NSwgNzg5MCwgMTI4MDcwLCAxMTI5OCwgNDMzMTUsIDk4MzMxMywgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIAorICAgIDQ2MzUsIDY1MDgwLCAxMjc3NzksIDEyMTk0LCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCA2NzE5OSwgNjcxOTgsIAogICAgIDkzNjYsIDQyNzkwLCA0MjAwNiwgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIAogICAgIDY1MzIxLCA2NTMyMCwgNjUzMzUsIDY1MzM0LCA2NTMzMywgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCAKICAgICA5MjQyNywgOTEyOCwgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODMwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgCi0gICAgNjUzMTYsIDQxMDYsIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgCi0gICAgNDEyMzksIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgCi0gICAgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCAKLSAgICA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgOTgzNzg3LCAwLCAxMDM3LCAwLCAyMDI1LCAxMjgyNjMsIAotICAgIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgMCwgMjgzNSwgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgCi0gICAgMTI3MTkxLCAwLCAwLCAxMjYwNiwgNzg0MzMsIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIAotICAgIDczNjUsIDk4Mzc1MywgMTIwNTkzLCAxMzA3MSwgMCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIAotICAgIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgCi0gICAgMTY2OCwgMCwgMCwgMCwgMTE4NywgOTgzMzg1LCA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAKLSAgICAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgCi0gICAgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgCi0gICAgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIDkyMjk2LCA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIAotICAgIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgMTE0MDMsIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgCi0gICAgMTE0MjEsIDAsIDE5NTA3NiwgMCwgOTgzOTIyLCAwLCAwLCA2NDg1NywgMTI4MTA1LCAyODU1LCAxMjc4MjgsIDY2MzA4LCAKLSAgICA0MTYyMSwgNjgyMTQsIDEyNzI4MywgMTI3ODE3LCAxMDY1NCwgMCwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIAotICAgIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgMTk0ODIyLCA3NDI3MCwgMTI4Mjg5LCAwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgCi0gICAgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgOTgzNTc1LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgMCwgMCwgCi0gICAgMTE0MDksIDY4MzczLCA2MzgyLCAwLCA2NDYzNCwgMTI4Mjc5LCAwLCAxMTYxMiwgMCwgNjc2MDAsIDIzNzQsIDk0MDY2LCAKLSAgICA4NDc1LCAxMTYwOSwgNjYzMTMsIDAsIDAsIDUyODYsIDExOTI5NywgMCwgMCwgNjQ5MjUsIDEyMDI4MywgMTk0NTg0LCAKLSAgICAxMTg5ODIsIDE5NDU4MywgNzcwNSwgMTE5NDIsIDExMzA1LCAxOTQ1ODEsIDMzMDksIDAsIDAsIDAsIDAsIDY4MDIsIDAsIAotICAgIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIDQyNTY1LCA0MTY1MSwgMCwgMCwgMCwgNDE2NTAsIAotICAgIDY2NTA3LCA2NjQ3MCwgMCwgMTI5MTQsIDQxNDkxLCA2NjAxMCwgMTE5NTUyLCA2MDc4LCA5OTU0LCAwLCAxNDc1LCAKLSAgICAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAwLCAwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIAotICAgIDQzMjUyLCA3ODgyMywgOTE3OTA2LCA4NzI3LCAwLCA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAKLSAgICAwLCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgNzEzNTEsIDAsIDM2MzUsIDY0MzM3LCA5ODMyODEsIDAsIDAsIDcxOTUsIAotICAgIDAsIDIwMDcsIDY0NDMxLCAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAwLCAwLCAKLSAgICAxMTkyMTgsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIDQxNzYsIDcwMDUwLCAyMDM0LCA5MjU1MSwgMTIwODA1LCAKLSAgICA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODg2MCwgNzg1OTYsIDAsIDM2NDksIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIAotICAgIDM2MzQsIDEyMDI5MSwgMTE4OTI3LCA2NzY3NywgMTIwMTI0LCA3ODY2LCAwLCAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgCi0gICAgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgCi0gICAgMTE1OSwgMCwgNjk3MjksIDAsIDAsIDcxNzgsIDE5NDYzMiwgMCwgNDE2ODAsIDAsIDEyODIwMywgMTE1MzQsIDE1MTQsIAotICAgIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMCwgNjc4NzcsIDE5NDU2NywgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgCi0gICAgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAxMDgxOCwgMTI2NjQ0LCA5OTUzLCAwLCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgCi0gICAgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIAotICAgIDAsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxOTQ3NjgsIDAsIDY4MzY0LCA5ODMyMjQsIDQ4OTEsIDAsIDEwNjQxLCAKLSAgICAwLCA3Mzc0NiwgMCwgNjgzNTIsIDAsIDczNzg3LCAxOTQ4MjksIDE5NDYzMywgNzE5OSwgNjQ5NTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQyNjg1LCA0MjY3OSwgMTkzLCAwLCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgOTIzMTgsIDkyNTE3LCAxMTg4ODIsIDEzNjIsIAotICAgIDEzMjk3LCAwLCAxMjgwOTQsIDAsIDk4MzMzMSwgNzM3ODksIDAsIDY2NTgsIDQ0MjYsIDAsIDkyNjI4LCA5ODM4NDIsIAotICAgIDkyMzE5LCA3Mjc2LCA0MjE2MywgNTIyMCwgMCwgMCwgOTgzMzMwLCAyNDE2LCAzMzEwLCA0MjcwMywgMCwgMzc5LCAwLCAKLSAgICA0Mzc1NSwgMCwgMCwgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMCwgMCwgOTgzMTU0LCAxMjc3NjMsIAotICAgIDEwODA3LCA5NTU4LCAxOTQ2MTMsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCA2NTMwOCwgMzI5NCwgOTgzMzMyLCA4NTI5LCAKLSAgICAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgMCwgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIDAsIDIwMzEsIDAsIAotICAgIDcyMDIsIDAsIDEyNjc2LCA0MjcyOSwgOTIxOTgsIDMyMTUsIDAsIDc3MTAsIDE2MTAsIDczODAxLCAwLCAwLCA2NTY4MiwgMCwgCi0gICAgMTIwNTM3LCA2NTkyNCwgOTk3NCwgMjI4LCA2NjM1NCwgMTUwMSwgMCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDAsIAotICAgIDY1Nzk0LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIDAsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAotICAgIDc0ODMsIDAsIDAsIDgxMDQsIDAsIDc0NzQsIDc3OTc5LCAwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgCi0gICAgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDcwMDUyLCAxMjcxNjYsIDAsIAotICAgIDc0MTkwLCAwLCAwLCA5ODM3ODYsIDQyNzYyLCAwLCA0MjkxNCwgMTY1MCwgMjYyLCAxNjM3LCAwLCA3OTAxLCAzMjM4LCAKLSAgICAxMjgxNzMsIDQxODYxLCAwLCAxMjg1ODUsIDY1MTU4LCAxMDg2MCwgOTQwNTksIDQzNjU4LCA3NTI3LCAwLCA0MzMxOSwgCi0gICAgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMCwgMTE5ODEwLCA3MTk0LCA1MjkxLCAwLCA0MzY2NiwgMTMxMjksIDAsIAotICAgIDkwODQsIDAsIDg3MzcsIDAsIDEyODgxLCAwLCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgMCwgMCwgMCwgOTgzODc1LCAKLSAgICAxNzksIDY1ODk2LCAwLCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgOTgzODkwLCAxMTg5OTYsIDExOTAwOSwgMjg1MCwgCi0gICAgODA4NCwgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCAxMTk4NDEsIDQyMDcyLCAKLSAgICAxMTk4NDMsIDExOTg0MiwgMTAzOTgsIDk4MzA1NiwgMCwgODM3NywgMTI3MTE2LCA4MjQ1LCA2ODQwMSwgMzE1OCwgOTIzOTYsIAotICAgIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgMTE5ODU2LCAyOTIsIDEzMDAyLCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCi0gICAgOTI0NjMsIDQ2MTIsIDExOTg1MSwgMTE5ODUwLCA3MjUzLCAxMjcxMTAsIDY4MzkxLCAwLCAxMDc4MiwgMzYzNywgMTI5OTYsIAotICAgIDQzNTQyLCAwLCA2NDU3OCwgOTgzNjc1LCAzMjI4LCA2OTYzNiwgODc4MywgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgCi0gICAgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDAsIDc4NTg2LCA0MzMxNiwgNDE3NywgMTEyODMsIDkwODksIDAsIDczOTk2LCAKLSAgICA5ODMxNzMsIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIDAsIDAsIDYzNzksIDAsIDAsIDAsIDMyMDgsIDEyOTc1LCAKLSAgICA3NDc3NSwgMTI3MzgwLCA5ODM5MzEsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDAsIDk4MzY4MywgMjAzMywgNzg1NzcsIAotICAgIDc4NTc2LCAxOTUwMjYsIDU1MjU0LCA3NzQwLCAwLCAwLCAwLCA3Mzk2NCwgMCwgOTM5ODgsIDY3NjEyLCA2NTY3NCwgCi0gICAgMTI4MjQ0LCA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAwLCAxMjgwNjYsIAotICAgIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgMCwgMTIwNjA1LCA3MjMwLCA4MjU3LCAwLCA4Nzc4LCA0MTY4OCwgMCwgCi0gICAgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDAsIDc2MjgsIDY1MDkyLCA3MzkwMywgNjY3MjEsIDExMzQyLCAxMjg1NjEsIDAsIAotICAgIDAsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIDk4Mzk1MSwgMTI2NDY5LCAxMTk0NiwgMCwgCi0gICAgMzI1NywgMCwgMTIzMDcsIDE4NDUsIDk4MzE1NywgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAxMDA4OSwgODcwLCA3NjQ4LCAKLSAgICAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCA0NTYzLCAwLCAwLCAKLSAgICA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDEyNjYwNywgODY4LCA4NzMsIDc2NDIsIDAsIDg2OSwgODc0LCA3NjQ0LCAKLSAgICAxMjA2NzQsIDg3NSwgNzkwLCAxMjgzMDMsIDAsIDAsIDAsIDY2MTgyLCA5ODMyNTgsIDU0MjksIDE5NTA1NSwgNjYxODAsIAotICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyODksIDk4MzI0OCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKLSAgICAxOTQ2MjIsIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKLSAgICAwLCA2NzYzNywgMCwgOTY3OSwgNzQxMjIsIDAsIDAsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgNDYyOCwgNDI0NSwgCi0gICAgMTE5NjQ4LCAwLCAwLCAxODUxLCAwLCAxMjcxODksIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIDk4MzIwMiwgNDI3NzYsIAotICAgIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgOTI3MTQsIDAsIDkyMzIxLCA0MzMxOCwgMCwgODgwOSwgNjk4ODEsIDAsIAotICAgIDk4MzE0MiwgMTIwNjA0LCA5ODMwNTIsIDk4Mzg4MiwgMCwgOTgzMjcwLCAwLCAwLCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgCi0gICAgMCwgNzQ0ODQsIDE5NDk2OCwgMjQzMywgMCwgMTE5NjIyLCAzMzUyLCA3NDM2MywgOTgzODg1LCAwLCA3OTMsIDc0NDA0LCAwLCAKLSAgICAzMDUsIDU2NywgNjc2NjIsIDg0MiwgMTI4NTE5LCA4MjA4LCAwLCA0MTY5NSwgMTY0NywgMTE4ODc3LCAwLCA3ODM3LCAKLSAgICA5MTc2MjUsIDgxOCwgNTMzNywgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDEyNjU3NiwgMTIwNTk0LCA3NDA4NiwgCi0gICAgOTE3NjE1LCA5MTc2MTQsIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgCi0gICAgOTE3NjA1LCA5MTc2MDQsIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCAwLCAyODQwLCAwLCAxMTk5ODIsIAotICAgIDk4MzkzOSwgMCwgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAwLCAxMjk5MSwgMCwgMjY1MSwgNjgwMTYsIDk4MzI2NSwgCi0gICAgOTE3NjExLCAxMjcwMjYsIDEyODg4MywgMCwgMCwgNDM2NDgsIDEyMDgxMiwgMCwgNDMzMjIsIDkyNjYyLCAwLCAwLCAKLSAgICA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCAxMjg3NzksIDEyNzgyMSwgCi0gICAgMTE5OTg4LCA2NTYxMCwgMjM5MSwgMCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgCi0gICAgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAwLCAxMjgyNjYsIAotICAgIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMCwgMCwgNDYwNSwgMTI4MTc0LCA5ODMxOTIsIDQzMzcyLCA2NTk0NSwgMTI4ODM4LCAwLCAKLSAgICAxMTk1OTAsIDAsIDAsIDAsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgCi0gICAgMTI4Mjk3LCAwLCAwLCAwLCAwLCAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIAotICAgIDQ2MjcsIDk4Mzg5MiwgNTIwOCwgMCwgMTI4ODQyLCAxMDMzMiwgNTIxOCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgCi0gICAgNjk2NDcsIDczODk0LCAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA3NDAzMywgMTA1MTYsIDc3OTAsIDU1MjgsIDAsIAotICAgIDQyMTQwLCAxMjAyODEsIDAsIDAsIDQzNTQ1LCA5ODg3LCAwLCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIAotICAgIDEyMDI3OCwgNzg4NCwgMCwgMTI4NTY2LCA5MTc5ODksIDEyODY2NiwgMjExLCAyNTA5LCAxMjg4NTgsIDEyMDU3MywgCi0gICAgNjg2NzIsIDMyMjAsIDQyMjM1LCAwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDAsIDcwNDgsIDQ1OTAsIAotICAgIDEyNzI1OCwgNTg1MiwgMCwgMCwgMTI3MjU5LCAxNzA4LCAwLCA5ODMxNjUsIDI2MjMsIDExOTQzLCAwLCA2OTIyNiwgMCwgCi0gICAgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgOTgzODc2LCAxMjAyODUsIDc0MjI1LCA5NDExMSwgODI2NywgMCwgCi0gICAgMTI3MjY1LCAwLCA3NTE2LCAwLCAyNjI1LCA5ODM5NzcsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgCi0gICAgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgMTI2NjAsIDAsIDAsIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAKLSAgICAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgMCwgMzk5MCwgMCwgOTgzMjYyLCA2NjM2OCwgNTAxNywgCi0gICAgNjQ5NTYsIDcwNzEsIDAsIDExOTE0NCwgMTAzMCwgMTE4ODAwLCA5ODMxMjAsIDk1MTMsIDQxMDU5LCA5MzU3LCAwLCAxNzczLCAKLSAgICAwLCAxMjAzNTAsIDAsIDYzMzksIDc3NDUsIDk4NDQsIDAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDk4MzgzOCwgODkwOCwgCi0gICAgMCwgMTI4NzA3LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgMCwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM4LCAwLCAKLSAgICAxNzU3LCA2OTY0LCA0Njk2LCAwLCAxMjAzMzUsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCi0gICAgMCwgMTIwMzQ0LCA0Mzk4OCwgMCwgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIDY5ODk0LCAKLSAgICA0MzE3MSwgMTQ1OSwgMCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMCwgMTUwNCwgNzAwNjQsIDAsIDEyOTEzLCA3NDIwNiwgCi0gICAgNzUyOSwgMCwgMTI4Njk5LCA5ODM5NTcsIDEyMDc4MiwgNDExMywgMCwgMjM3MiwgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMCwgCi0gICAgNjgyLCA2NjQ1OCwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgMCwgOTgzOTU1LCA4MDMzLCA2OTk1MywgMCwgCi0gICAgOTgxMCwgMTI3MjY5LCAwLCAxMjk3MCwgMCwgNDIzNTEsIDEwMTA5LCA5MTc2MjMsIDAsIDE5NDY5MywgMCwgOTI2OTAsIDAsIAotICAgIDAsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgMCwgNzM4ODcsIDAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgCi0gICAgMCwgMCwgNzQyMzksIDQxMzE3LCA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDAsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAKLSAgICAwLCAxMDQ5OCwgMjA4MywgNzc4ODgsIDAsIDAsIDExOTIzNiwgNjM0LCAwLCAwLCAwLCA2OTc3OSwgNDE2NSwgODc0NiwgMCwgCi0gICAgOTY1NCwgMTI4NTYsIDY5MjQsIDAsIDcwNjYsIDk4MzcxOSwgMCwgMTI4MTM1LCA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAKLSAgICA0MTAzOSwgMTI3NDgzLCAwLCA2ODAsIDIzMDIsIDEyODIwMCwgMTE4MSwgNzA1NiwgMzE3NCwgMTI2NTE2LCAwLCA5MjY2OCwgCi0gICAgNjU2NjUsIDEyNzM3NSwgMTI2NTA2LCA2OTIwLCAwLCA5MjI5NSwgMCwgMTE4OTY1LCAwLCA2NDY0NCwgMTI2OTgxLCAKLSAgICA3NDExOSwgMCwgNDEwMjgsIDAsIDYyMzEsIDI2MTMsIDY1MzAyLCA0MDk4OSwgMCwgMTk0Njk2LCAwLCA0Mjc2MCwgMCwgCi0gICAgOTgzNTY2LCAwLCA0MDk4NywgNDY2NywgMCwgOTgzOTMyLCA4ODI4LCAwLCAwLCAxMjQ2LCA0NzQ2LCAwLCAwLCAxMTAyMSwgCi0gICAgNDc0OSwgOTI2NzUsIDAsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMCwgNjQ2NTMsIDc4Mzg2LCAKLSAgICAxMjgxMjEsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgMCwgMCwgOTgzODY3LCA3NjA0LCA5ODMyOTAsIDQwMDksIAotICAgIDEyNzgxNiwgOTgzNzEwLCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAxMjczNzAsIAotICAgIDQwNDgsIDk4MzU5OCwgMCwgNzAwMjQsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgMCwgMTE5ODkwLCAKKyAgICA2NTMxNiwgNDEwNiwgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTI4OTYwLCA2NTYwOSwgNDEyNDEsIAorICAgIDc5MDMsIDQxMjM5LCA0MzUzMywgNzg0NTksIDcxODksIDAsIDAsIDEyODc1MywgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgCisgICAgOTEzMSwgNjYyOTIsIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAKKyAgICAxMjE2OSwgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDk4Mzc4NywgMTI4MjgxLCAxMDM3LCAKKyAgICAxMjg2NzcsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgCisgICAgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgMTI3MTkxLCAwLCAwLCAxMjYwNiwgNzg0MzMsIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAKKyAgICAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDkyNjM0LCAxMjA1OTMsIDEzMDcxLCAxMjkwNTIsIDQ1MiwgNDEwNDksIAorICAgIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDAsIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCAKKyAgICA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzODUsIDQyNjI4LCAKKyAgICA3ODU3NSwgMCwgNzE4NjMsIDAsIDMyNDAsIDEyODUxOCwgMTIxNTEsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgMCwgCisgICAgMCwgMCwgNjY4MjcsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAxNTQxLCAKKyAgICA2NTA0OCwgMTkwOSwgODg2NCwgMCwgNjY0MDIsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgCisgICAgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAxMTkzMDEsIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDcwNDYyLCAKKyAgICA3MDE3MiwgMTE0MDMsIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgCisgICAgMTk1MDc2LCAxOTUwNzgsIDk4MzkyMiwgMCwgMCwgNjQ4NTcsIDEyODEwNSwgMjg1NSwgNzQ0MTgsIDY2MzA4LCA0MTYyMSwgCisgICAgNjgyMTQsIDEyNzI4MywgMTI3ODE3LCAxMDY1NCwgMTI3ODE4LCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgCisgICAgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIDEyODI4OSwgMTI1MDkwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIAorICAgIDk0MiwgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgOTgzNTc1LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgCisgICAgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgOTMwMDgsIAorICAgIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCA5ODM3NjksIDAsIDUyODYsIDExOTI5NywgMCwgCisgICAgOTgzMjUxLCA2NDkyNSwgMTIwMjgzLCAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgMTI3MjAzLCAKKyAgICAzMzA5LCAxMjg2MTksIDkyMDYsIDExOTE2NSwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIAorICAgIDEyMDk2LCAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDAsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDc0NDcyLCAKKyAgICAxMjkxNCwgNDE0OTEsIDY2MDEwLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgCisgICAgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA3MTg2MSwgCisgICAgODcyNywgMCwgNjU4NzUsIDAsIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMCwgMCwgMzI0OCwgNzQyOTcsIAorICAgIDMyNjEsIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgMCwgMjAwNywgCisgICAgNjQ0MzEsIDAsIDAsIDkyMTk3LCAwLCA2MzUsIDAsIDAsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAwLCAwLCAKKyAgICAxMTkyMTgsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIDQxNzYsIDcwMDUwLCAyMDM0LCA3ODQyMywgMTExNTQsIAorICAgIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCA3ODU5NiwgMTk0NjAyLCAzNjQ5LCAxMzE0OSwgNDIxNDUsIAorICAgIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCAwLCAxMTQwMiwgNDIxNDYsIDk0MDMyLCAKKyAgICA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIDExODEyLCA2NTM3OSwgNjgzODYsIAorICAgIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDE5NDYzMiwgOTgzODM2LCA0MTY4MCwgMCwgCisgICAgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAxMjg0OTAsIDY3ODc3LCAxOTQ1NjcsIAorICAgIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDEyNjY0NCwgOTk1MywgMCwgCisgICAgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIAorICAgIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTI1MDc5LCAKKyAgICAxMTM3ODAsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCA3Mzc0NiwgOTgzODM3LCA2ODM1MiwgMCwgNzM3ODcsIAorICAgIDE5NDgyOSwgMTk0NjMzLCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgOTgzODUyLCAwLCA0MjY4NSwgNDI2NzksIDE5MywgCisgICAgNzg3ODksIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA2ODMyMywgOTI1MTcsIDExODg4MiwgMTM2MiwgMTMyOTcsIDAsIDcxODgwLCAKKyAgICAwLCA5ODMzMzEsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCA2NjgzMCwgOTgzODQyLCA5MjMxOSwgNzI3NiwgNDIxNjMsIAorICAgIDUyMjAsIDAsIDAsIDEyNTA4MCwgMjQxNiwgMzMxMCwgNDI3MDMsIDEyNzgyOCwgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIAorICAgIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAwLCAwLCA5ODMxNTQsIDcwNzg0LCAxMDgwNywgOTU1OCwgCisgICAgOTMwMjcsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCA2NTMwOCwgMzI5NCwgOTgzMzMyLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCAKKyAgICA3NTY0LCAwLCA0MzMyOSwgMCwgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIDAsIDIwMzEsIDk4Mzg5MCwgNzIwMiwgCisgICAgMTI4NjE4LCAxMjY3NiwgNDI3MjksIDc0Nzc3LCAzMjE1LCAwLCA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIAorICAgIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgNjYzNTQsIDE1MDEsIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAKKyAgICAxMTg5MjcsIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCAKKyAgICA1NzYyLCAxOTY3LCA3NDgzLCAxMjUwODMsIDAsIDgxMDQsIDcwMTI4LCA3NDc0LCA3Nzk3OSwgMTI3MjAwLCAxMjY1MDcsIAorICAgIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIAorICAgIDI1NDUsIDcwMDUyLCAxMjcxNjYsIDAsIDc0MTkwLCAwLCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMCwgNDI5MTQsIDE2NTAsIAorICAgIDI2MiwgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCAxMjgxNzMsIDQxODYxLCAwLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgCisgICAgOTQwNTksIDQzNjU4LCA3NTI3LCAwLCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAKKyAgICAxMTk4MTAsIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAwLCA4NzM3LCA5ODMxNjUsIAorICAgIDEyODgxLCAwLCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCisgICAgMTI2NTAzLCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCA4MDg0LCAKKyAgICA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIDkyNzM2LCAKKyAgICAxMTk4NDIsIDEwMzk4LCA5ODMwNTYsIDAsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAzOTgzLCAKKyAgICA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgOTI0NjMsIAorICAgIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCA0MzU0MiwgCisgICAgMTEzNjc2LCA2NDU3OCwgOTgzNjc1LCAzMjI4LCA2OTYzNiwgODc4MywgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgCisgICAgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDEyOTEyOCwgNzA4MTMsIDQzMzE2LCA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIAorICAgIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgNjM3OSwgMCwgMTExNDIsIDEyNzE3NiwgMzIwOCwgCisgICAgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkzMSwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMCwgOTgzNjgzLCAyMDMzLCAKKyAgICA3ODU3NywgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDcwNDQ4LCAxMjc4OTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIAorICAgIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAKKyAgICAwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgODI1NywgCisgICAgMTk0OTM3LCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCA2NTA5MiwgCisgICAgNzM5MDMsIDY2NzIxLCAxMTM0MiwgMTI4NTYxLCAwLCA5ODM0MzIsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIAorICAgIDEwNzIzLCA5NjcsIDk4MzcxNywgMTI2NDY5LCAxMTk0NiwgOTgzNjAyLCAzMjU3LCAxMjcyMDksIDEyMzA3LCAxODQ1LCAKKyAgICA5ODMxNTcsIDQzNTI2LCAwLCAwLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgCisgICAgODc2LCA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgMCwgNzU5MSwgNjU4ODcsIAorICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKKyAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAwLCA5ODM2NDEsIDY2MTgyLCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIAorICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyODksIDkxNzkyOSwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKKyAgICAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKKyAgICAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCA5Mjk3OCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDAsIDE4NTEsIDEyNDk5NSwgMTI3MTg5LCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAKKyAgICAxOTQ4ODAsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDExMTEyLCAwLCA5MjMyMSwgNDMzMTgsIDkyMzAyLCAKKyAgICA4ODA5LCA2OTg4MSwgMCwgMTI2NTE4LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjc1LCA5ODM0MzEsIDk4MzI3MCwgMCwgCisgICAgMTIwNTc3LCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDE5NDk2OCwgMjQzMywgMTI4NjAyLCA2OTk3MywgCisgICAgMzM1MiwgNzQzNjMsIDk4Mzg4NSwgMCwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCA2OTk3OSwgCisgICAgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgMTk0NjI4LCAKKyAgICA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDEyNjU3NiwgMTIwNTk0LCA3NDA4NiwgOTE3NjE1LCA3MDE3OSwgOTE3NjEzLCAKKyAgICAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDE5NDY1NCwgOTM5NjcsIAorICAgIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDY3NzIzLCAyODQwLCAwLCA3ODgyOSwgOTgzOTM5LCA2Njg4NywgMzI0NSwgCisgICAgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAxMjgwNTEsIDEyOTkxLCAxMjQ5NzEsIDI2NTEsIDY4MDE2LCA5ODMyNjUsIAorICAgIDkxNzYxMSwgMTI1MDM4LCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDkxNzgzMywgNDMzMjIsIDkyNjYyLCAwLCAKKyAgICAwLCA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCAxMjg0NzUsIDExMTUyLCAKKyAgICA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKKyAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDEyODM0MCwgCisgICAgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODM0NSwgNzQyNDksIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCA0MzM3MiwgCisgICAgNjU5NDUsIDEyODgzOCwgMTExMTMsIDExOTU5MCwgMCwgMCwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAKKyAgICAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgMTI4Mjk3LCAwLCA3ODc2MiwgMCwgMCwgMTEzMzQsIDQzMzI2LCAxMjYwOSwgCisgICAgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMjc3ODQsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDI0MjQsIAorICAgIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgCisgICAgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCA5ODM2OTksIDQyMTQwLCAxMjAyODEsIDAsIDAsIDQzNTQ1LCA5ODg3LCAKKyAgICAxMjkwNDQsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIAorICAgIDkxNzk4OSwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgNjg2NzIsIDMyMjAsIDQyMjM1LCA3ODQ4MCwgCisgICAgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIDU4NTIsIDAsIDc4NDgyLCAKKyAgICAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgMTI4NzAwLCA2OTIyNiwgNjk5NzQsIDQ2OTgsIDY2NTA5LCAKKyAgICAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3MDQ0NywgOTQxMTEsIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCAKKyAgICA3NTE2LCAxMjc1NTIsIDI2MjUsIDk4Mzk3NywgODAzNCwgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIAorICAgIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAwLCAwLCA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIAorICAgIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODcsIDM5OTAsIDEyNTA1MCwgOTgzMjYyLCA2NjM2OCwgCisgICAgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgMCwgCisgICAgMTc3MywgNzc5MzksIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIDc0NzY2LCAKKyAgICAxMTM3MTksIDg5MDgsIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIDEyNjU3MiwgNDEzMDcsIAorICAgIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzM1LCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgCisgICAgMTI4MDU1LCAwLCAxMjc4ODMsIDAsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCAKKyAgICA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAxNTA0LCAKKyAgICA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCA3NTI5LCAxMjg3NDUsIDEyODY5OSwgNzAyMDMsIDEyMDc4MiwgNDExMywgMCwgCisgICAgMjM3MiwgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCA2ODIsIDc2NTUsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIAorICAgIDE3MDMsIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgMCwgCisgICAgNDIzNTEsIDEwMTA5LCA3NDUzNSwgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCAKKyAgICA0MzMxMiwgMCwgNzM4ODcsIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAwLCA3NDIzOSwgCisgICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCisgICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDAsIDkyMjkwLCAwLCA2OTc3OSwgNDE2NSwgCisgICAgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgOTgzNzE5LCA3MDQxNSwgMTI4MTM1LCAKKyAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAKKyAgICAxMTgxLCA3MDU2LCAzMTc0LCA2NzI0OCwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAorICAgIDAsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAyNjEzLCAKKyAgICA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCAxMjQ5ODksIDAsIDQwOTg3LCA0NjY3LCAwLCAKKyAgICA3MTg0MywgODgyOCwgMCwgNzA1MDYsIDEyNDYsIDQ3NDYsIDAsIDEyODUwOCwgMTEwMjEsIDQ3NDksIDkyNjc1LCA5MTc4ODIsIAorICAgIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMTI3MjEwLCA2NDY1MywgNzgzODYsIDc0NjE3LCAKKyAgICA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCA5Mjk4MywgOTgzODY3LCA3NjA0LCA5ODMyOTAsIDQwMDksIAorICAgIDcwNDI2LCA3MTg0NCwgMTIwNTYyLCAwLCA5ODM3MjAsIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCAKKyAgICA5ODM1OTgsIDAsIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDEyOTA0NywgMTE5ODkwLCAKICAgICAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCAKICAgICA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCAxOTQ2MTAsIDMzOTksIDk4NTEsIAotICAgIDk4MzcxNywgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDAsIDAsIDAsIDcxMzY3LCAwLCAwLCAxNzc3LCA5MTUxLCAKLSAgICAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIAotICAgIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgOTgzMjE2LCA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAKLSAgICAwLCAyNjAwLCA4ODQ4LCAxMjAxMzgsIDQxMjk3LCAwLCAzNjY2LCA3NDQ3MywgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgCi0gICAgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMCwgMCwgNjk3NjUsIDEyMDc1MCwgMjUyLCAwLCA0MTMwMiwgMCwgMCwgCi0gICAgMCwgNjk3NjMsIDAsIDExNzI5LCA4NzE5LCA5MDYwLCAwLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAwLCAxMTg3OTIsIDExNzM0LCAKLSAgICA5ODMyMjMsIDExNzMwLCAwLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgMCwgMCwgCi0gICAgNzc2NCwgOTgzNzE0LCAxMTA5NCwgMTIwODI1LCAwLCA5ODMyMjYsIDQyODIsIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAKLSAgICAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgCi0gICAgMCwgMCwgMCwgMCwgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIAotICAgIDAsIDI2MDIsIDEyODM0MSwgMCwgMTk0NzA3LCA0MTEzNSwgMCwgMCwgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIAotICAgIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDkyMTkzLCA3NTk3LCAxMDUyOCwgMCwgMCwgMzczMiwgNzM5MTAsIAotICAgIDE5NDU4OCwgNTM0NCwgMCwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIDAsIDAsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgCi0gICAgMCwgMCwgMTk0NzEyLCAxMDkwMCwgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCAwLCA2NDI5MiwgNDE1MjQsIDcyMjcsIAotICAgIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDkxNzk1NywgODUyNSwgMTI3MzQ3LCAzNTI0LCAKLSAgICA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIDY3ODY3LCAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgCi0gICAgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAKLSAgICA5ODMyMDEsIDYzNDAsIDExODg1NSwgMCwgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCAKLSAgICA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIDczNzc0LCAxMDkxMywgMCwgMCwgODY2NiwgCi0gICAgNjc1LCA0MjQ5MywgMCwgNDM1NzEsIDAsIDYyMTksIDAsIDk5ODAsIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAKLSAgICAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCAwLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIAotICAgIDk4MzM3OSwgMCwgOTgzMjIyLCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCA5ODMwODgsIDAsIDQzNzQ0LCAKLSAgICAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIAorICAgIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDEyODM5MiwgMCwgNzE4NDIsIDcwMTc4LCAwLCAwLCAKKyAgICAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCA3MjQzNSwgNzAxMjcsIAorICAgIDEyODk3MiwgNTk4OSwgMCwgNzQ2MzYsIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgOTgzMjE2LCAKKyAgICA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCAKKyAgICA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAxMjgwNjQsIDY5NzY1LCAKKyAgICA5Mjc3NSwgMjUyLCAwLCA0MTMwMiwgMTE5MzUwLCAxMjcwMDIsIDExODgzOSwgNjk3NjMsIDAsIDExNzI5LCA4NzE5LCAKKyAgICA5MDYwLCAxMjkwOTEsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgCisgICAgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgMCwgMCwgNzc2NCwgCisgICAgMTI5MTMyLCAxMTA5NCwgMTIwODI1LCAwLCA0MzQ4OSwgNDI4MiwgODI5OCwgMCwgMCwgNzAzMjgsIDAsIDcwMzI0LCAKKyAgICA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIDcwNDQyLCA2NTY3MCwgMCwgNzgyNTAsIDAsIDc3NzQsIAorICAgIDEwNjA3LCA5NzkyLCAwLCA3MDMyNiwgMCwgMCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCAKKyAgICA3MDA1MywgOTgzNzEyLCAzNjQ3LCAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMCwgMTI1MDQzLCA0MTEzNSwgMCwgMCwgCisgICAgMTI4NDU1LCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIAorICAgIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIDkwNjIsIAorICAgIDExOTI1MiwgMCwgOTI1MjgsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgMCwgMTEzNzA3LCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgCisgICAgMTI2MywgMzcyMCwgMTIwNDgsIDc0MDc1LCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIAorICAgIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDkxNzk1NywgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgCisgICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgMCwgNTg0NSwgMCwgMCwgMCwgCisgICAgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA5ODM2OTMsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDk4MzIwMSwgNjM0MCwgCisgICAgMTE4ODU1LCAxMjg5MzQsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIAorICAgIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIDY3NSwgNDI0OTMsIAorICAgIDAsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIAorICAgIDAsIDM3MzgsIDk0MDE2LCAwLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDk4MzM3OSwgCisgICAgMCwgNzQ0NzYsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgOTgzODE5LCA0Mzc0NCwgMCwgCisgICAgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCA5ODMxMjYsIDc0NDYxLCAzMjE4LCAKICAgICAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIAotICAgIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCA3ODcyNywgMTI3MzI2LCAxMjA0NjAsIAorICAgIDExMjEyLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCAxMjczMjYsIDEyMDQ2MCwgCiAgICAgNzQyNSwgMzIwNSwgNjgwMDMsIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCAKLSAgICA3Mzg5NywgMCwgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDAsIDAsIDk4MzMyMSwgMTIwNzM3LCAwLCA5ODM5NzEsIAotICAgIDk4MzMyMCwgMzc4LCAyNjEwLCAwLCA2NTA3OSwgOTgzMzI1LCA2NTY5NSwgMTI2NTU5LCAzNywgNzA2OCwgMCwgMTIwNDgwLCAKLSAgICAxMjA0NzksIDMyMDksIDEyMDQ3NywgMCwgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIDk4MzM5OSwgMCwgMCwgMCwgMCwgCi0gICAgNjU1MTAsIDAsIDAsIDUyMzMsIDk4MzMzNSwgNjQ3OTIsIDk4MzMzNCwgMCwgMTI2NjMzLCAwLCA3MDYwLCA5ODQ3LCAKLSAgICAxMjAxNDQsIDE2ODUsIDU5NSwgMCwgNzM5NzEsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAKLSAgICAwLCA2NTQxLCAwLCAwLCAwLCAzMjQzLCA5MDE0LCA1NjA2LCAwLCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCA3NDM5MSwgCi0gICAgNjU0NywgMTI4MTMyLCA4MjAzLCA3ODQ4OCwgOTgzMDkwLCA4NDU4LCA2NTIxMSwgODQ5NSwgMTE5OTA0LCAwLCA5MTc1NTIsIAotICAgIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIDAsIDcwNjUsIDc0MTU1LCAKLSAgICA0MzQ2LCAwLCA3Mzc5OCwgNTA0LCAwLCA5MjQxNCwgODk4MiwgMCwgMCwgMCwgNzgyLCAwLCAxMDg4MywgMCwgMTk0ODUyLCAKLSAgICA3MzIsIDM3MzcsIDEyNzI1MywgMTU0OCwgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCAKLSAgICA0Mzc2LCAwLCAxMTc4NywgMzc0NSwgMCwgMCwgNDI4ODgsIDY1NzEyLCA5ODMzMDQsIDM4NjksIDExOTM3LCA1NzI1LCAKLSAgICAxMjc1MzksIDE3ODMsIDY4NjQ4LCA1NzI4LCAwLCAwLCAwLCAxMTkxOCwgNjY1NjcsIDU3MjQsIDAsIDU3MjcsIDc4NTIxLCAKLSAgICAwLCAwLCA3NjQsIDAsIDEyODExNiwgNDM1MzEsIDAsIDkwMzMsIDAsIDQyNTMyLCA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAKLSAgICAxMTQyMywgMCwgMTE5ODYxLCA3MTM0NCwgNDM0NjUsIDAsIDEyODI2NywgNjU1OSwgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgCi0gICAgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMCwgNDMzNzcsIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgCi0gICAgMTE4MjUsIDI2MDcsIDY0NzQwLCAwLCA3NzM5LCA3NDU0MywgMCwgMCwgMCwgNjEzMiwgMCwgNjM3NjUsIDAsIDcwMDU4LCAKLSAgICA0MTE0NCwgMCwgOTI0MzgsIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCAwLCA5ODMxNDgsIDg4MjAsIDM5NDcsIAotICAgIDAsIDAsIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgOTE3Nzg1LCAxOTQ5MzIsIDAsIDc2ODgsIDkxNzc4NiwgCi0gICAgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIDk4MzM4MiwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgOTE3Nzg4LCAKLSAgICA3NDAyNCwgMTIyOTMsIDAsIDY0MzU3LCAxMTc5NCwgNDIwODIsIDAsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCAwLCAKLSAgICA5MzM1LCAxMjg1MCwgMTE5ODcwLCA2NTUzLCA3MDU1LCAwLCA4Mjc3LCAwLCAwLCA1NDc1LCA3NDc5NSwgNjc4MCwgMCwgMCwgCi0gICAgMTI5OTAsIDExNjAsIDQyMDg0LCAxMTk2NTAsIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDAsIDAsIDY4MTc2LCA1ODYzLCAKLSAgICAzMTM3LCAwLCA0MTQ3LCA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgOTgzMjk0LCAKKyAgICA3Mzg5NywgMCwgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDAsIDAsIDk4MzMyMSwgMTIwNzM3LCAxMjY1NTcsIAorICAgIDE5NDc3MywgOTgzMzIwLCAzNzgsIDI2MTAsIDk4MzMyNiwgNjUwNzksIDk4MzMyNSwgNjU2OTUsIDEyNjU1OSwgMzcsIAorICAgIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMCwgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIAorICAgIDk4MzM5OSwgOTIyMjUsIDAsIDk4MzMzOCwgMCwgNDM4NDAsIDAsIDAsIDUyMzMsIDk4MzMzNSwgNjQ3OTIsIDcxMjMzLCAwLCAKKyAgICAxMjY2MzMsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIDcwNDI4LCAxMjkyLCA4OTQwLCAKKyAgICA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgNDM4MzcsIDAsIDAsIDMyNDMsIDkwMTQsIDU2MDYsIDAsIAorICAgIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAxMjgxMzIsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgCisgICAgNjUyMTEsIDg0OTUsIDkyMzExLCAwLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgCisgICAgNTUyNzksIDk3MzAsIDkyODAsIDAsIDcwNjUsIDc0MTU1LCA0MzQ2LCAwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCAKKyAgICA4OTgyLCAwLCAxMjg3MTEsIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAKKyAgICAxMjcyNTMsIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgCisgICAgOTgzMzcwLCAxMTc4NywgMzc0NSwgMCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEyNzkxMywgMzg2OSwgMTE5MzcsIDU3MjUsIAorICAgIDEyNzUzOSwgMTc4MywgNzQxNiwgNTcyOCwgMCwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgCisgICAgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIAorICAgIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMCwgMTI4MjY3LCA2NTU5LCA2NDU1NywgCisgICAgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAKKyAgICAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgNzczOSwgNzQ1NDMsIDkxNzc2NSwgNjczOTMsIDAsIAorICAgIDYxMzIsIDAsIDYzNzY1LCAxMjgzOTYsIDcwMDU4LCA0MTE0NCwgNzE4OTksIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIAorICAgIDQzNjksIDkxNzc5MSwgMCwgMTk0Nzc2LCA4ODIwLCAzOTQ3LCAwLCAwLCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAKKyAgICAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAxMTM2OTEsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIAorICAgIDk4MzM4MiwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgOTE3Nzg4LCA3NDAyNCwgMTIyOTMsIDAsIDY0MzU3LCAKKyAgICAxMTc5NCwgNDIwODIsIDAsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCAwLCA5MzM1LCAxMjg1MCwgMTE5ODcwLCAKKyAgICA2NTUzLCA3MDU1LCAwLCA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAxMTYwLCAKKyAgICA0MjA4NCwgMTE5NjUwLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDk4Mzg2NSwgNjgxNzYsIDU4NjMsIAorICAgIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIDY4MzQxLCAKICAgICAxMzA3NiwgMzEzNSwgOTgzMjg3LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIAotICAgIDEwMTgzLCAwLCAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDAsIDEyNzE3MywgNjk3NDEsIDk4MzU4MiwgNjE2MywgCi0gICAgOTgzNTU4LCAwLCAxMjczMTQsIDAsIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCAxMTk1NzMsIAotICAgIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgMCwgMTIwODYsIDc0MDMsIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIAotICAgIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMCwgMCwgMjU3MCwgNzAyMSwgMCwgMCwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIAotICAgIDY5NzQsIDAsIDAsIDk4MzIxMSwgNTAwMiwgMCwgNDEyODYsIDY5OTQ2LCAxMjcwMTksIDAsIDQzNTg1LCAwLCA2NTUxLCAKLSAgICA5ODM5NjIsIDEyODIyOSwgMCwgNDEyODksIDAsIDE5NDYwMiwgMCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODc3OCwgCi0gICAgMTI4NjYxLCAwLCA5ODMzNzUsIDQxMjc5LCAwLCAwLCAwLCAxMTA4MSwgNDM2MTUsIDAsIDAsIDAsIDk4MzYxMiwgMTI3MjcsIAotICAgIDAsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCA5ODM4MjksIAotICAgIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIDI1OTYsIDQzNTg0LCAKLSAgICAwLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIDQxNTc0LCA3ODMzNywgMCwgCi0gICAgNzQwNTgsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDAsIDEyODIyMCwgMCwgNjk5NCwgMCwgCi0gICAgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTgyLCAzNzUxLCA5MTIwLCA5ODM0ODUsIDAsIDE3OTgsIDcwOSwgMCwgCi0gICAgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgOTI2NDIsIDAsIDAsIDI0NSwgMTI4MDk3LCAKLSAgICAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDk0MDQ2LCA2MTM2LCA5MTc2MDksIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIAotICAgIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTk0OTQ1LCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCAwLCAwLCAKLSAgICAxMjgyNzQsIDAsIDExOTY1OCwgMCwgMCwgMCwgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgCi0gICAgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgMCwgNjQ2NDAsIDAsIDk0MTA5LCAwLCA3NDEzNywgNzAwMzUsIDEwMDYzLCAKLSAgICAxMjY1MiwgMTIxOTksIDkyNDgwLCAwLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAwLCAxMDY1LCAwLCAwLCA0MzQwMCwgMjU3NiwgCi0gICAgNjY2OTYsIDkzOTk5LCAwLCA0MzYwNCwgMCwgMCwgNzQwODIsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCA0MzIxNSwgCi0gICAgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3NDU4MCwgNDMzOTgsIDI1ODAsIDk4MzgxMCwgNDEzNDEsIAotICAgIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDAsIDM3MzMsIDExMzQ2LCAwLCAxMjA1NCwgMCwgCi0gICAgNzQwOTgsIDQyODI3LCAwLCAxMzA5MSwgMCwgMCwgMCwgOTE3OTE1LCAwLCAxMjcwMjUsIDAsIDc0ODIxLCAwLCA5ODM3MzMsIAotICAgIDExOTA0MiwgMCwgMTI3ODY1LCAxMzA5MCwgNjY2NDMsIDAsIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIAotICAgIDQyNTY5LCAxMjc4MjQsIDAsIDY0NzYxLCAwLCA0MTAyMSwgODUxMCwgNDI0MzIsIDAsIDAsIDE5NDc4MiwgMCwgNjQ0OTYsIAotICAgIDc0MTA5LCA3MDAzMCwgOTkxNSwgMCwgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgCi0gICAgNDM0MDEsIDQyMzE5LCAxMzA4MiwgMCwgNzA2NywgNjgyMjEsIDAsIDEyNzM4MywgMTI3MTcxLCAwLCAwLCAxMjc3OTcsIAotICAgIDkwMjksIDQzNTQzLCAxMTkzMTUsIDIzNTMsIDYzMDgsIDAsIDc0NzkyLCAyNjExLCAxMTkxODYsIDAsIDAsIDAsIDQzNjY0LCAKLSAgICA5MjM5OSwgNjY2MjcsIDAsIDQ0ODQsIDg1MDksIDExODk3NiwgMTEwNjYsIDY1MjMzLCAwLCA0MTIyNCwgNDEwMTcsIDAsIAotICAgIDM3NDcsIDEwNTIyLCAwLCAwLCAxNjkxLCA0MTIyNiwgMCwgMTIxMDcsIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTk0OTg2LCAKLSAgICA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAwLCAwLCA5MjY0NCwgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgCi0gICAgMTI4MjIxLCAwLCAwLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIAotICAgIDExODc4NCwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCAKLSAgICA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIDEyODI1OCwgMCwgMCwgMCwgMTMxMjIsIDAsIAotICAgIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIDQxNTc4LCAwLCAKLSAgICA0MTU3NywgMCwgMTAwMDIsIDAsIDY1MzMsIDczODAyLCA0MTU3MCwgMCwgNjgzLCAzOTYsIDQxNTgwLCA2ODE0NiwgMCwgCi0gICAgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIDAsIDQ3NDMsIDAsIDAsIDc0MDQwLCAKLSAgICA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAwLCAzNzM5LCA2MjYzLCA3MTM0OSwgMCwgMzk2NCwgNjU5MiwgMCwgCi0gICAgMTI4NjkzLCA2NjA0MCwgMCwgNDI1NjgsIDY5ODA2LCAxMjgxMTMsIDE3NzgsIDM5NTYsIDAsIDQyMDcwLCA2NTYzLCAKLSAgICA0MzA3NSwgOTAxOCwgOTQwMDYsIDk4MzM5NiwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgMTI3OTY5LCAwLCAKLSAgICA4MTc1LCAwLCAyODQsIDgxMDgsIDkzNCwgMCwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAxMTg4MjIsIDE3NTAsIAotICAgIDAsIDQzOTQsIDY4MzY4LCAxODA3LCA5ODM4ODgsIDkyMjk4LCAwLCA1ODg5LCAwLCA3MTgwLCAwLCAxMTkxNDUsIDAsIAotICAgIDkxNzU1OCwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIDQ1MTIsIDExOTM2MCwgCi0gICAgNjUyMzAsIDEyODEwOSwgMCwgMCwgMzg1NSwgMCwgMCwgMCwgMCwgNzQyOTUsIDAsIDAsIDkyNDE2LCAzOTc1LCAwLCAKLSAgICA3NDA4NywgMCwgMTI2NzIsIDM3OTgsIDI3MDMsIDk4MzU5OSwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgMCwgNDEwOTUsIAotICAgIDM5NjIsIDAsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCAwLCAwLCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDAsIDAsIAotICAgIDQxODUxLCAxMjgyMzAsIDQxODQ2LCAwLCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAwLCAKLSAgICAxMjgwMzIsIDAsIDQyNTMxLCAxMTkxMDgsIDE1MTAsIDAsIDgyNTYsIDAsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIAotICAgIDkyNDc0LCA4NzcwLCAwLCAwLCA3ODM3NywgMTkxMCwgODY3MSwgNzgzNzQsIDQyODMsIDAsIDEyNzExNywgNjgzNjEsIAotICAgIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDAsIDAsIDAsIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIAotICAgIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgMCwgMCwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIAotICAgIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDAsIDAsIAotICAgIDkyMzQ3LCA5ODMwODcsIDQxMzUwLCA5MTI5LCAwLCAwLCAyMjk0LCAwLCA5MjQ4OSwgMCwgMTA0ODEsIDAsIDcwMDIyLCAKLSAgICA3MTcxLCAwLCAzNDAsIDkyNDk4LCA5Mzk3MiwgMCwgMCwgOTIyMDAsIDAsIDAsIDY3NjQsIDEyNzQ4NywgMCwgMCwgMCwgMCwgCi0gICAgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMCwgMzIxMCwgMCwgMCwgMTE4Nzk1LCAwLCAwLCAxMjc5NzAsIAotICAgIDkxNzYxOSwgMCwgMCwgMTAwNDMsIDAsIDExODYsIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyNjY0MiwgMzY3NSwgNTIwNywgCi0gICAgNjUwNjIsIDUyMTMsIDE5NDc2OSwgMjYxNywgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgCi0gICAgMTI4NTQ0LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAyNTg2LCA2NDg4NywgMCwgNTIxNywgNzEzMzYsIDAsIDAsIDAsIDY0MjkzLCAKLSAgICA2ODA5OCwgMjYzNSwgMCwgMCwgOTgzODQ2LCAwLCA5ODM2NDEsIDc4MzUsIDcwMDQwLCAwLCAxOTQ5ODgsIDkyMjg1LCAKLSAgICA2NDU1OCwgMTI3MTIyLCAwLCAxMjcxMjEsIDAsIDEyNzkxMywgMCwgNTc4NCwgOTgzMTAyLCAwLCAwLCA3MDAzMywgNDAxMSwgCi0gICAgOTE3NjE2LCA2ODEwMSwgMCwgNzg2NCwgNDI1NCwgNjUwOTUsIDk4MzQ5NiwgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgCi0gICAgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAxOTQ3ODAsIDAsIDExMjQsIDU1OTcsIAotICAgIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODQsIDk4MzQ4MSwgOTgzNDgyLCAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIAotICAgIDk2NzEsIDExMjUsIDQzOTksIDEyNzQ3OSwgOTE3NjEwLCA5ODM0ODgsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgCi0gICAgNTQ5MSwgMCwgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCAKLSAgICA2MzAwLCAwLCA3MTIyLCAwLCA0MzkwLCA0NTQsIDQxMzk3LCAwLCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIAotICAgIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAwLCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDEyMDAzNywgMCwgNDM0MjMsIAotICAgIDEyODY4MywgMTE5ODksIDAsIDAsIDAsIDAsIDAsIDgyNDksIDEyODE3MiwgMCwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCAKLSAgICA1MTMsIDAsIDY1ODYsIDg2NTYsIDAsIDEyMDcxMCwgNjUwMDgsIDAsIDE5NDc4NCwgMTk0OTg5LCAxOTQ3OTUsIDk4MzQ3MywgCi0gICAgOTI1MTUsIDY4NDc1LCA5Mzk3MywgMCwgMCwgNzg2MzcsIDEyNjQ3LCAwLCAxMjgwNDMsIDY5ODkzLCAxMDM2LCA5ODM0NzcsIAotICAgIDkyNDE5LCAxNzIzLCAxMjgwNTYsIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgMCwgMTA3MDUsIDczODc2LCA5ODM0NjksIAotICAgIDc0NDg2LCA5ODM0NjcsIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDY4NDM3LCAKLSAgICA3ODE0MCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCA0MjU3NCwgMTMyODUsIDU1MjYzLCAxMTkwNywgCi0gICAgMTk1MDAwLCA1NjkwLCA5MjI1NSwgOTM5OTIsIDAsIDQzMTgxLCAxMzA5NSwgMCwgMTI3ODU3LCA2NDQ5OCwgMCwgOTUwNiwgCi0gICAgNjk3OCwgMTk0OTkzLCA3Nzk5MiwgMCwgMCwgMTk0OTkyLCAwLCAxMjc4NDUsIDExMjIsIDMxNywgMCwgMCwgMCwgMCwgCi0gICAgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgNzgzNzgsIDEyMDEyNiwgNTIyMywgMTMwNCwgMCwgMTE5NTY0LCA1MjI2LCAKLSAgICAxMjYwMiwgOTQwNDQsIDAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgCi0gICAgNjkyMjksIDk2NzQsIDU2OTUsIDQxNzExLCA2NDYyNywgMTk5MDksIDAsIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCAKLSAgICAxMjc0OTAsIDk4MzQ0MSwgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNzQ3OTcsIDAsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgCi0gICAgNDExNzUsIDk4MzQ0OCwgOTgzNDQ1LCA5ODM0NDYsIDUyOTYsIDk4MzQ0NCwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgCi0gICAgMCwgMCwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgNjUxMiwgMCwgNzg1NiwgODY5MCwgMCwgMCwgMTIxMjIsIDExOTYwMiwgCi0gICAgNDM5NzYsIDAsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDE5NDgxMCwgNTEzOCwgMCwgMCwgMTE4ODY5LCAwLCA0NTQwLCAKLSAgICA0MTE4MSwgMCwgNjIwMCwgMCwgNTEzNCwgMCwgMzIyLCA0NjQzLCA1MTMyLCAwLCA2Mzg5LCAxMjg1MzMsIDUxNDMsIDAsIAotICAgIDg3OTAsIDEyODY5NCwgMCwgMTk0ODAyLCAwLCA4ODY5LCA2OTkxNiwgMCwgNDIwNjAsIDcxMzI2LCA5NjQ4LCAxOTQ4MDQsIAotICAgIDEyNzAxMiwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIDQzNTI5LCA2NjQ3NywgMCwgMCwgNzQxNzAsIDAsIDMyMzQsIAotICAgIDAsIDAsIDc0Mzc2LCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgMCwgNzQ0ODksIDk2OTUsIDEyMDc0NiwgCi0gICAgNTIwMSwgMCwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCAwLCAwLCAwLCAxMTAyNywgMCwgCi0gICAgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgMTI3MDcxLCA5ODM2NzAsIDMyMCwgMCwgCi0gICAgODY0NywgMCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAxMjczNTYsIDEyNzM1NSwgNjY0NzgsIDQ5NjAsIAorICAgIDEwMTgzLCA3NDYzNSwgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAwLCAxMjcxNzMsIDY1MjM2LCA5MTc4NzgsIAorICAgIDYxNjMsIDk4MzU1OCwgMTEzNzI4LCAxMjczMTQsIDAsIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCAKKyAgICAxMTk1NzMsIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgMTI3NDY2LCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIAorICAgIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgCisgICAgMTIzNCwgNjU0MCwgNjk3NCwgOTI3NTAsIDAsIDk4MzIxMSwgNTAwMiwgMCwgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIAorICAgIDQzNTg1LCAxMTM3MjAsIDY1NTEsIDk4MzM3MywgMTI4MjI5LCA5ODMyNzIsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAKKyAgICAxMjc5NTgsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIDEyODY2MSwgMTk0ODkwLCA5ODMzNzUsIDQxMjc5LCAwLCAKKyAgICAwLCA5MTc3OTUsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIAorICAgIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyOSwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgCisgICAgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAwLCAxMjc3NTcsIAorICAgIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDAsIAorICAgIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDczODc5LCAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgCisgICAgNjUyOSwgNzA2MywgOTgzMTgyLCAzNzUxLCA5MTIwLCA5ODM0ODUsIDAsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgCisgICAgMTMxNTIsIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgNjc3NTIsIDcwODUwLCAwLCAyNDUsIDEyODA5NywgMTE0NTYsIAorICAgIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCAKKyAgICA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTI3OTAxLCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCA5ODMxMzYsIDAsIAorICAgIDEyODI3NCwgMCwgMTE5NjU4LCAxMjgxODQsIDAsIDAsIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgCisgICAgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIDkyMjMxLCA2NDY0MCwgNjk5OTksIDk0MTA5LCAxMjg2MjUsIDc0MTM3LCAKKyAgICA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgNzQ2MjIsIDQzNDkyLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAwLCAxMDY1LCAKKyAgICAwLCAwLCA0MzQwMCwgMjU3NiwgNjY2OTYsIDY2ODE5LCAxMjg2MjQsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgCisgICAgNzQ1MDIsIDcwMDMyLCAyOTIxLCA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3NDU4MCwgCisgICAgNDMzOTgsIDI1ODAsIDk4MzgxMCwgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIAorICAgIDk4MzE4NSwgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDAsIDAsIAorICAgIDkxNzkxNSwgMTI3OTYxLCAxMjcwMjUsIDAsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDkyNzY1LCAwLCAxMjc4NjUsIDEzMDkwLCAKKyAgICA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgNjY4OTgsIAorICAgIDY0NzYxLCAwLCA0MTAyMSwgODUxMCwgNDI0MzIsIDAsIDExOTMxNywgMTk0NzgyLCAwLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCAKKyAgICA5OTE1LCAwLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIAorICAgIDEzMDgyLCAxMjQ5NzYsIDcwNjcsIDY4MjIxLCAwLCAxMjczODMsIDEyNzE3MSwgMCwgMTIwNzQ1LCA3NDIwOSwgOTAyOSwgCisgICAgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAxMjkxNTQsIDc0NzkyLCAyNjExLCAxMTkxODYsIDY2ODgxLCAwLCA2NTA2MywgCisgICAgNDM2NjQsIDkyMzk5LCA2NjYyNywgMTI1MDkzLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCA2NTIzMywgMCwgNDEyMjQsIAorICAgIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDEyNzIxNCwgMTIxMDcsIDcxMDAsIDEwOTA1LCAKKyAgICA2NTAxMCwgMTI3Mjc1LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAwLCA5MzA1OCwgNzc4NjEsIDEzMTIxLCAxMjAwMzYsIDAsIAorICAgIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTI1MDE0LCAwLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMCwgMTI3OTMzLCAKKyAgICA2NTY2OCwgOTIyNTcsIDY2MTgsIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgCisgICAgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIAorICAgIDAsIDAsIDAsIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIAorICAgIDQxMDcyLCA0MTU3OCwgMCwgNDE1NzcsIDAsIDEwMDAyLCAxOTUwMjgsIDY1MzMsIDczODAyLCA0MTU3MCwgOTE3OTE5LCAKKyAgICA2ODMsIDM5NiwgNDE1ODAsIDY4MTQ2LCA5ODMwNjcsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIAorICAgIDc4MTU0LCAwLCA0NzQzLCA2OTk4NywgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIAorICAgIDM3MzksIDYyNjMsIDcxMzQ5LCAwLCAzOTY0LCA2NTkyLCAwLCA2ODI4OCwgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgCisgICAgMTI4MTEzLCAxNzc4LCAzOTU2LCAxMjg0NDMsIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgOTQwMDYsIDk4MzM5NiwgCisgICAgMTIwNjcsIDQxMzEyLCA5Mjc2MywgNTU0NywgODkxNiwgMTI3OTY5LCAxMjg5NTAsIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAKKyAgICAxMjgwMzksIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIAorICAgIDY4MzY4LCAxODA3LCA5ODM4ODgsIDkyMjk4LCAwLCA1ODg5LCAwLCA3MTgwLCAwLCA2NzEyNywgMCwgNjcxMjYsIDQyNDcxLCAKKyAgICA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIAorICAgIDAsIDAsIDM4NTUsIDE5NDk4NiwgMTE3NjcsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgMzk3NSwgNjcxMjUsIDc0MDg3LCAKKyAgICAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgMzk2MiwgCisgICAgNjgyNDIsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAKKyAgICAxMjAwMzMsIDk4MzA1NywgNDE4MDMsIDEyODIzMCwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgCisgICAgNDMyMCwgMzIyNCwgMCwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgMCwgMTEzOTMsIAorICAgIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDcyNDE2LCAwLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIDQyODMsIAorICAgIDAsIDEyNzExNywgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDEyODI0MSwgMCwgNzIzOTQsIDY1MTA2LCAKKyAgICA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgNzQ0NzUsIAorICAgIDk4MzQ0MiwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgCisgICAgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDExOTE0NCwgMCwgOTIzNDcsIDE5NTA2NiwgNDEzNTAsIDkxMjksIDAsIDAsIAorICAgIDIyOTQsIDY0NTAxLCA5MjQ4OSwgMCwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAwLCAzNDAsIDcxMTA1LCA5Mzk3MiwgCisgICAgNjczNjAsIDAsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTI3NDg3LCAxMjgzOTMsIDAsIDkyNTA5LCAxMjg5NjIsIAorICAgIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgMCwgMTE4Nzk1LCAxMjc5NzYsIDk0MTAxLCAKKyAgICAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgCisgICAgMTI1MTIzLCAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgNzQ2MTYsIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAKKyAgICAxMjA1MzUsIDAsIDg2MzAsIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDk4MzY0NCwgNTIxNywgCisgICAgNzEzMzYsIDEyODY4NywgOTE3NjE0LCAwLCA2NDI5MywgNjgwOTgsIDI2MzUsIDkyNzYwLCAwLCA5ODM4NDYsIDAsIDkyNzQyLCAKKyAgICA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5ODgsIDkyMjg1LCA2NDU1OCwgMTI3MTIyLCAwLCA2NzA4MywgNjcwODUsIAorICAgIDcwMDk5LCAwLCA1Nzg0LCA5ODMxMDIsIDE5NTA1MCwgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgCisgICAgMTI0OTc4LCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk2LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAKKyAgICAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDEyOTA1NCwgMTI3MTAzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIAorICAgIDE5NDc3MiwgOTMyMSwgOTgzNDg0LCAxMTM3MDYsIDk4MzQ4MiwgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgCisgICAgMTEyNSwgNDM5OSwgMTI3NDc5LCA2NjI3NCwgOTgzNDg4LCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIAorICAgIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCAKKyAgICA2MzAwLCAxOTQ4MzcsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCAKKyAgICA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgCisgICAgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDAsIDAsIDAsIDc4Mjk2LCAwLCA4MjQ5LCAxMjgxNzIsIDExMTA5LCA3ODUzMSwgCisgICAgNjY0MCwgNzQ4MDYsIDI1OTgsIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCAKKyAgICA3ODM4MywgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgCisgICAgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgMTk0OTgyLCA5MjQxOSwgMTcyMywgNjgyMTUsIDc0MjE3LCAwLCA0MTU3OSwgCisgICAgMjQ0NCwgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDk4MzQ2OSwgNzQ0ODYsIDk4MzQ2NywgNzQwLCAxMTkyMjIsIDE5NDk3OCwgCisgICAgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgCisgICAgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAxMjkxMDcsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIAorICAgIDEzMDk1LCA3NzkyNSwgMTI3ODU3LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgNzAxNzYsIDc3OTkyLCAwLCAxMTM3NDMsIAorICAgIDc4Mzc5LCAwLCAxMjc4NDUsIDExMjIsIDMxNywgMCwgNzEwNTUsIDAsIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIAorICAgIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKKyAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKKyAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDEsIAorICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDc0Nzk3LCAxMjgxNTgsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIAorICAgIDEyNTAzMywgOTgzNDQ1LCA5ODM0NDYsIDUyOTYsIDk4MzQ0NCwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgCisgICAgNzQ4NTgsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKKyAgICAxMTk2MDIsIDQzOTc2LCAwLCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCAxOTQ4MTAsIDUxMzgsIDAsIDcxOTIyLCAKKyAgICAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCA1MTMyLCAwLCAKKyAgICA2Mzg5LCAxMjg1MzMsIDUxNDMsIDAsIDg3OTAsIDEyODY5NCwgMTIwMTIxLCAxOTQ4MDIsIDcxMTY4LCA4ODY5LCA2OTkxNiwgCisgICAgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgMTk0ODA0LCA3MTE3MCwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIAorICAgIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIDAsIDc0Mzc2LCA0MzEzOSwgMTE4ODE1LCAKKyAgICAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCA3MjQzOSwgNTIwMSwgMCwgNjIxNSwgMTI3MTQsIAorICAgIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAxMjg0NDQsIDExMDI3LCAxMjg1OTYsIDEwMDU5LCAKKyAgICAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIDY3MTE1LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgCisgICAgOTgzNzA1LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCiAgICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAogICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAogICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKLSAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKLSAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAotICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCi0gICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKLSAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIAotICAgIDk4MzIxNSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgNzg3MiwgODU4MSwgMCwgMTI2MCwgCi0gICAgMzE0OSwgNTM1OSwgMTIwMTM0LCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgCi0gICAgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIDQyOTE3LCAxMjA3OTMsIDAsIAotICAgIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIAotICAgIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIDEyMDYzMiwgMCwgMCwgCi0gICAgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIDczODE5LCAxMjA1ODgsIAotICAgIDUwMTIsIDc3OTEyLCA0MTM2MiwgNjk4NjIsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCA0MTM2NCwgMCwgCi0gICAgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAotICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCi0gICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCi0gICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKLSAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCi0gICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKLSAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAotICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCi0gICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCi0gICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAotICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCi0gICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCi0gICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCi0gICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAotICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKLSAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAotICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCi0gICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKLSAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAotICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKLSAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCi0gICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAotICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCi0gICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAotICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKLSAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAotICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCi0gICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDE5NDY4NiwgNzg4NTMsIDAsIDc4ODU0LCAKLSAgICAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgCi0gICAgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCAKLSAgICA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAKLSAgICAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCAKLSAgICA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3MDA4MywgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAotICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgMCwgMTE2MDMsIAotICAgIDk4Mzk1NCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDk4MzcwMCwgMCwgMCwgNDI1NzIsIDEyODI2NCwgCi0gICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIDAsIDc4MDA5LCAKLSAgICA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDEyODMwMCwgCi0gICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIAotICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCi0gICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMzQsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCi0gICAgMTk1MDU3LCAxMTQ0NSwgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKLSAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgCi0gICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCi0gICAgNDM5MSwgNjgxMzksIDk4MzA2MiwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAKLSAgICAwLCAzOTEzLCAwLCAwLCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIAotICAgIDExNzkxLCAwLCAwLCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCAKLSAgICA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCA5MTc1ODMsIDk4MzYzNCwgOTQwNjUsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgCi0gICAgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAKLSAgICAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAKLSAgICAxMjgwODYsIDkyNTY2LCA2OTkxMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIDExMDIyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAxMjM0MywgNjU3LCAKLSAgICAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgMCwgNDQ1NiwgCi0gICAgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIAotICAgIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgMCwgCi0gICAgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgCi0gICAgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgCi0gICAgNzAwNzAsIDMzNzUsIDEyODg2OSwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAotICAgIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDk4MzgyMiwgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAKLSAgICAxMjc4ODcsIDAsIDEyNzM4MSwgNDg2OCwgODI5NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgMCwgCi0gICAgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKLSAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAotICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCi0gICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKLSAgICAxMjc4MDksIDk4MzY0NCwgMTM5OSwgOTgzNjUyLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCi0gICAgMCwgOTgzNjM5LCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2NDMsIDAsIDQyNzgwLCAwLCAwLCAKLSAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKLSAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAotICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCi0gICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAotICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKLSAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAotICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzOSwgOTgzMzM4LCA5ODMzMzcsIDk4MzMzNiwgMjczNSwgCi0gICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCi0gICAgOTgzOTI4LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKLSAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzU4LCA2NzU4LCAKLSAgICA5ODM5MjYsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjgsIDcwMTAwLCAKLSAgICA5ODMzMjYsIDcyNjAsIDk4MzMyNCwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAotICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCi0gICAgNTMyLCA3ODY2MywgMCwgOTgzNzk2LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCi0gICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MTcsIDY1NDk1LCA2NDcwNiwgOTgzMzE4LCA0MzM0NCwgOTgzMzE2LCAKLSAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzExLCA5ODMzMTAsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAotICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAotICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKLSAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMzMDUsIAotICAgIDExNzE4LCA5ODMzMDMsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKLSAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKLSAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKLSAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjk5LCA5ODMyOTgsIDEyODI3MywgMTA3NDUsIAotICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKLSAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAotICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCi0gICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyODYsIDk4MzI4NSwgCi0gICAgMTI4NTcwLCAxMjEwNiwgOTgzMjgyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCi0gICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzksIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNzUsIDQxMSwgOTgzMjczLCAKLSAgICA5MTk5LCA5ODMyNzEsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MzcsIDU0MjgsIDE5NDc0MywgCi0gICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCi0gICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI2MywgOTM5NjIsIDI3OTQsIAotICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAotICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKLSAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAotICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQ5LCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCi0gICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCi0gICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKLSAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAotICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDEzLCAwLCAxMTczOSwgOTgzNDI2LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAotICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCi0gICAgNDE3MDMsIDk4MzYzOCwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAotICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKLSAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCi0gICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCi0gICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKLSAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAotICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKLSAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKLSAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKLSAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAotICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzgsIDY4NjI1LCA5ODM0MzYsIDcyNjksIDAsIAotICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyOSwgNDQzLCAKLSAgICA5ODM0MjcsIDQ5NDQsIDU0NjcsIDExOTYwMywgOTgzMjU0LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIAotICAgIDQxMzAzLCAwLCAxOTQ5MzEsIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCAKLSAgICA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIAotICAgIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgCi0gICAgMTE5ODMyLCA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIAotICAgIDc4MTcwLCA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIAotICAgIDEyNzAyNCwgMTg1NSwgOTgzNDEyLCA2ODY2OSwgOTgzNDEwLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgCi0gICAgMjc0NSwgMTE3OTcsIDk4MzQxOCwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MTQsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAKLSAgICAxMDUyNSwgNDY0OSwgNjUyMDksIDk4MzQxNywgMCwgNDY0OCwgNDMwODAsIDk4MzQwNiwgOTgzNDA3LCA5ODM0MDQsIDYyNDYsIAotICAgIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCAKLSAgICA4NjY5LCA5ODM0MTUsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTksIDAsIDY4MzY5LCAKLSAgICAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA3OTkyLCAwLCAwLCA0NjYyLCA3ODAzMywgCi0gICAgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgCi0gICAgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIAotICAgIDk4MzQxMSwgMCwgMCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAKLSAgICAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM5NSwgOTQwNzAsIDk4MzM5MywgCi0gICAgOTgzMzk0LCA5ODMzOTEsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgCi0gICAgNzg4ODMsIDk4MzM4NiwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDk4MzM4MCwgNTk1OCwgMCwgOTgzNDMzLCAKLSAgICA0MjE1LCA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDk4MzM4OSwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgNjU4MDMsIDAsIAotICAgIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCA5ODM0MDksIDAsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMCwgMCwgNDYzOCwgCi0gICAgOTgzNDA1LCAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTI3ODMzLCA1Mzc2LCAxODM1LCA1MzM1LCAKLSAgICAxOTQ5NjYsIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDEyODA5MywgNTM4NywgNTMzMywgMCwgMCwgCi0gICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDAsIAotICAgIDEyNjgsIDY1MDk3LCA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgCi0gICAgNDc1OCwgOTgzMzc0LCAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKLSAgICA3NDM4NCwgOTgzMzc4LCA2ODM3NywgNjI0OCwgOTgzMzYyLCA5ODMzNjMsIDk4MzM2MCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKLSAgICA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIAotICAgIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIAotICAgIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgCi0gICAgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDk4MzQyMCwgCi0gICAgOTgzODcyLCAxOTQ5MDcsIDQ0MDAzLCAwLCA5ODM0ODAsIDk4MzQyMywgMTIwNDk4LCAxMjc4NTEsIDE5NTAwOSwgOTgzODY1LCAKLSAgICA3NDAyMiwgOTgzNDIyLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgOTgzNDg5LCA1NzIxLCA5ODM0MDEsIDU1MTksIDg2MzIsIAotICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA5ODMzNTIsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzM1NSwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIAotICAgIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgOTgzMzQ5LCA5ODMzNDYsIDc3ODQ5LCA0NjA4LCA2NDI2MCwgCi0gICAgNDExMjQsIDUxOTAsIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgNjc5OTgsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgCi0gICAgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAKKyAgICAxMjYwMywgNzEzMSwgMTExMDgsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIAorICAgIDQyNTc2LCAwLCA1MjAwLCA5Mjk0NiwgMTI5MTQyLCA5ODM4OTUsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIAorICAgIDU0ODIsIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIAorICAgIDQzMzA3LCAxMjgzNjksIDExODk3MywgNzA0NjcsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAKKyAgICAxMjAxNCwgMTAzNzcsIDgwOTMsIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIAorICAgIDEwMjk0LCAxMDMyNiwgMTI3MzA5LCA1NzM4LCA5ODMyMTUsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgCisgICAgNjgxMTIsIDc4NzIsIDg1ODEsIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgMCwgNzkxNCwgNTM1NywgNzExOTAsIAorICAgIDc0MzM5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgCisgICAgNDIyNzEsIDc4Mjg5LCA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgzODUsIAorICAgIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIAorICAgIDMyMzIsIDczODI0LCA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDAsIDExNjEsIDQxODk1LCA3NDEwMywgCisgICAgOTcwMSwgODYyMiwgMTI1MDI1LCAwLCA3MzgxOSwgMTIwNTg4LCA1MDEyLCA3NzkxMiwgNDEzNjIsIDY5ODYyLCA2ODUwNywgCisgICAgMTE5MjEsIDAsIDExNzY5LCAxMjg0NzcsIDY4NjA5LCA0MTM2NCwgMCwgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIAorICAgIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk2MTgsIDY3NywgCisgICAgMTE5OTE2LCA5MTc4NzYsIDExOTkzMiwgMTI3MTY5LCAwLCAwLCAxMjUxMzYsIDMzNDksIDc0MTI1LCA3MDIyLCA4OTI3LCAKKyAgICA0NzM5LCA5MjU5OSwgNTgwMiwgMTk0ODc0LCA4NjE1LCAwLCAwLCA0OTEsIDc0NDAxLCAxMDE5MCwgMTIwNjk4LCA2NTgzNywgCisgICAgMTE5OTAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAxMDg1MiwgMCwgNDI2NDgsIAorICAgIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIDEyODYxMCwgMCwgNTgxNSwgNTE3MSwgCisgICAgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCA3MjQyNCwgNTE2OSwgCisgICAgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgCisgICAgMTIwNjYzLCA5ODMzLCAwLCA5ODMzNDEsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCAKKyAgICA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCAKKyAgICA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgMCwgNDEzODksIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgCisgICAgOTQwMywgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAKKyAgICAyNjMxLCA3MDgxMSwgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCAKKyAgICA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgCisgICAgMTI3MjA2LCAxMjA4NSwgNjY5MDIsIDU3NCwgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCAKKyAgICA2NTkzMiwgNDEzMjIsIDQyMjExLCA1NDQyLCA0MTkwLCA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgCisgICAgNzc4MzcsIDc3ODM4LCA3NzA4LCA3NzgzNiwgMTA4NTksIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgCisgICAgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAKKyAgICAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIAorICAgIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCAKKyAgICA0Mjg4NSwgNTUwNywgMTIwNDQsIDkyNjM2LCAwLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIAorICAgIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIAorICAgIDAsIDI2NzUsIDU1OTUsIDc4NDExLCA0Mzc2MiwgNDM2NywgMTI3OTEyLCAwLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgCisgICAgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIAorICAgIDc3ODU3LCA3Nzg1NCwgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIAorICAgIDY2OTA5LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIAorICAgIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDczOTcyLCAxNDQyLCAKKyAgICAxMjkwODAsIDU4OTQsIDcwMDY5LCAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAwLCAzMzM0LCAKKyAgICAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCA2OTc3MCwgMTY1MSwgMTI4NzcxLCA4ODYxLCAwLCAwLCAxMTQyLCAKKyAgICA5ODM4NjksIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgCisgICAgMzM0NCwgMTI4OTEwLCAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgCisgICAgNzg3MSwgNjcxMDYsIDE5NDY4NiwgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkwLCAxMTc4NCwgMCwgCisgICAgNzgwMTIsIDQ3MDAsIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgMCwgNzg4NTYsIDkyNDAwLCA3Nzg3OSwgNDk3MywgCisgICAgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgNzEyMjUsIDQzMTE4LCAwLCA0MjM2NCwgCisgICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKKyAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NTAzNSwgCisgICAgMCwgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAorICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgOTgzNzU4LCAxMTYwMywgCisgICAgOTgzOTU0LCAwLCA2NTg5LCAxMjg1NjQsIDE5NDY3OSwgMTI4OTYxLCAwLCA5ODM3MDAsIDAsIDEyOTA4NywgNDI1NzIsIAorICAgIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIAorICAgIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIAorICAgIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxOTQ2NzcsIDc4NjIxLCA2NzA5MCwgNjkyNSwgMCwgMCwgOTI4OTIsIDcxODU2LCAKKyAgICAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgMTExMzgsIDAsIDY3NTQsIDYzMTIsIDc3OTU2LCAKKyAgICA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIAorICAgIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDAsIDk4MzYwNSwgOTUzMiwgNjYzNTUsIDAsIDk4MzIzNCwgOTE3OTI1LCAKKyAgICA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTk1MDMxLCAwLCAxOTUwMzAsIDE5NTA1NywgMTE0NDUsIDY4Mjk0LCAyMTEyLCAKKyAgICAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIDc0NTQ0LCA4MDIzLCAxMjAwLCAKKyAgICAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgMCwgMTIwNDkzLCAzMzQzLCA0NDI0LCAxMTA0NywgCisgICAgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCA0MzkxLCA2ODEzOSwgOTgzMDYyLCAKKyAgICAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgMzU1OCwgMCwgMzkxMywgNzA0MjksIDAsIAorICAgIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDAsIDkxNzU4NywgCisgICAgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCA2NzA3NSwgNzEyMTksIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCAKKyAgICA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCA5MTc1ODMsIDkxNzU5NCwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMCwgOTIzMzEsIAorICAgIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgMCwgOTE3NTczLCA0MzAzMCwgCisgICAgNDIwMjcsIDEyMTE0LCAwLCAxMjg1OTcsIDY0OTM2LCAxOTQ2OTUsIDAsIDEyMDYyOSwgMTA1NjEsIDEyODk0MCwgODM2NSwgCisgICAgMTIwNTM5LCA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA5MTc1NzUsIDc4MzQsIAorICAgIDc0MTU5LCAwLCA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDcwODAzLCA2MzI3LCAKKyAgICA2NzI0LCAxMjQ5NTMsIDEyODA4NiwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgCisgICAgOTYwMCwgMTEwMjIsIDAsIDAsIDAsIDAsIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCisgICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKKyAgICA5Mjg5MSwgMTk0OTQ1LCAwLCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgOTMwNDQsIDkxNzU5NSwgCisgICAgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDEyOTA1OCwgCisgICAgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCA5MjYzOCwgCisgICAgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCAKKyAgICA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCA5Mzk5MCwgNzg4OSwgCisgICAgMjcyMiwgNDIyNjIsIDAsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDY3MDc5LCAwLCAKKyAgICA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAwLCA3MDE0NiwgNDg2OCwgCisgICAgODI5NywgMTE5OTY2LCA3MDE0OCwgMCwgMTI4NzQ0LCA0MzE2MSwgNzAxNDQsIDkyMzYwLCAwLCA1MTgyLCAwLCAxMjA1NDIsIAorICAgIDAsIDAsIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMCwgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCAKKyAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIDc4NiwgMTI2OTk1LCAKKyAgICA0MzE3NCwgNjQzNDAsIDAsIDE5NDc2NywgNzM5NzEsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAKKyAgICAwLCA5Mzk1NiwgMCwgNjg0NDQsIDAsIDkyNDM3LCAwLCAxMTkxNjAsIDEwMjA0LCA5MjY1NiwgMCwgMTI3ODA5LCAxMjg0MzEsIAorICAgIDEzOTksIDk4MzY1MiwgNjUyMTcsIDk4MzYzNywgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgMTI4NDI3LCAKKyAgICA5ODM2MzksIDc5MzIsIDk3MjcsIDEyODQ2MywgNzQyNTUsIDg3NDgsIDAsIDAsIDk4MzYzMSwgMCwgNDI3ODAsIDAsIAorICAgIDExMzY3NywgMCwgNDIxNywgOTMwMzQsIDg2NTAsIDAsIDEyMDY3MywgMCwgNjk5MDAsIDExODg3MiwgNDMwOTksIDM5NjUsIAorICAgIDExOTExOSwgNjcxOSwgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgNjYyODksIAorICAgIDAsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgMCwgNzI5NCwgMCwgCisgICAgNDM4NjksIDEyNTAzMiwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCAwLCAxMTg4MzEsIDkyODk5LCAKKyAgICA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIAorICAgIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAxMjg4MTksIDAsIDEyNzMyNywgOTgzNTk3LCA3NDMxMSwgCisgICAgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIAorICAgIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCAKKyAgICA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIAorICAgIDEyNzkwMywgOTgzMzM3LCA5ODMzMzYsIDI3MzUsIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIAorICAgIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMCwgMCwgNjgxNDAsIDk4MzkyOCwgOTU3NiwgOTI3ODMsIDMzNDcsIDQxNjAsIDUxNTQsIAorICAgIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgODM4MSwgNDU3MiwgCisgICAgMTI4NzYsIDY2NTYxLCAxMjg5MjEsIDY3NTgsIDk4MzkyNiwgMTYxNSwgNTg1NSwgODA5LCAwLCA5MjI4MywgMTI4MzE2LCAKKyAgICAxMjgwMDQsIDU3OTksIDEyODkyOSwgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI0LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCAKKyAgICA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDkxNzkxOCwgMCwgCisgICAgMTI3MDYwLCA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY2MywgNzg4MTcsIDEyODAyMSwgCisgICAgMTIwNjA5LCAwLCAzMzcwLCAwLCAxMTM2MSwgNTQ0MywgNzg3NzgsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgMCwgMjI5OCwgCisgICAgMCwgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMxOCwgNDMzNDQsIDk4MzMxNiwgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIAorICAgIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCA2ODIzMiwgMCwgMTI3MTc4LCAKKyAgICA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIDUxODYsIAorICAgIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAwLCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgCisgICAgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyODE3OCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgOTI0NjgsIDk4MzMwNSwgCisgICAgMTE3MTgsIDk4MzMwMywgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDAsIDAsIDEyNzQ3NiwgNTUyNDUsIDEyODkyNywgMTYzMCwgCisgICAgMTI4MjMyLCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIDcwMzY5LCA5ODMwNzIsIDExOTIxNCwgOTI4MywgCisgICAgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODI1MywgNzc4OTIsIAorICAgIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDE5NDYwNCwgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMyOTksIAorICAgIDk4MzI5OCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgCisgICAgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgOTQwNTUsIDk4MTIsIDAsIDQ0NjAsIDAsIDEyNDk1NiwgNzEzMDcsIAorICAgIDEyODAzOCwgMCwgMCwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzAxMjIsIAorICAgIDE4MDEsIDEyODM1LCA3NDg0NywgMCwgNzM4MjMsIDEyODY4MSwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCAKKyAgICA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgOTgzMjg1LCAxMjg1NzAsIDEyMTA2LCA5ODMyODIsIDc0MjA3LCAxNzU1LCAKKyAgICAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCA5NTIyLCA3NDA3OSwgNzgyNjYsIDY2NjA0LCAwLCAzMzg0LCAKKyAgICA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCA3NzkwMCwgODQ1MSwgMCwgMCwgMCwgNjY0NTgsIDEyODk1NywgCisgICAgMTI4ODcwLCAwLCAwLCAyOTA4LCAwLCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgOTE3ODcyLCAxMjQ5NTksIAorICAgIDQ0NDEsIDAsIDExMzc2NSwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyNTAzMSwgNDExLCA5ODMyNzMsIDkxOTksIDk4MzI3MSwgCisgICAgNDA1NiwgMTE4OTkyLCA0MTg5MCwgMTk0Njk4LCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIAorICAgIDQyMjY1LCA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDE5NDc0MiwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCAKKyAgICA0NDAxMiwgOTI2MjgsIDAsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAKKyAgICAwLCAwLCA2NTg5NSwgMTI1MDc2LCAwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgOTgzMjYzLCAKKyAgICA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgCisgICAgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMTI5MTA5LCAxMjkwNDAsIDAsIDM0MzAsIDAsIDQyOTA1LCAKKyAgICA3ODcxNywgMTI4OTAzLCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDEyNjUwNiwgCisgICAgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIAorICAgIDk4MzI0OSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgCisgICAgNTI4MSwgNTQ2OSwgNTEyMSwgMTE5MjQ1LCAxMTg5OTMsIDAsIDUxMzAsIDAsIDAsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIAorICAgIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMCwgMCwgMCwgOTIxODcsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDE5NTA1MiwgCisgICAgMCwgNTgwMywgNzE4NjcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIAorICAgIDk4MzQxMywgMCwgMTE3MzksIDkyNTI0LCA0MTk4MSwgOTI3NDMsIDU5MzgsIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgCisgICAgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMTI0OTk0LCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgNDE3MDMsIAorICAgIDk4MzYzOCwgMTIxNjUsIDEyOTE5MSwgMCwgOTg4NSwgMCwgODA3NywgOTI2MjAsIDEyNzkwOCwgMCwgOTgzNDM5LCAwLCAKKyAgICA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgMCwgMTI1MDc4LCAwLCAKKyAgICA5ODM0MjYsIDEyODU3NCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIDEyNjQ5MCwgMTk5NDQsIDc0MzU2LCA5MDA5LCAKKyAgICA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAxMjg4OTksIDAsIDEyMzEzLCAxMTE1MSwgNTE1LCAKKyAgICAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgCisgICAgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTgzNTYwLCA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIAorICAgIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgCisgICAgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCAKKyAgICA2NjE5MSwgNDExMTEsIDY2MTg5LCA3Mzc4OCwgNzc4OCwgNDg0NywgMCwgMTI3NzU5LCAwLCAxMjg0MzMsIDIyMjEsIDE1ODEsIAorICAgIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIDczOTQ0LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCAKKyAgICA0OTUwLCA5ODM0MzgsIDY4NjI1LCA5ODM0MzYsIDcyNjksIDAsIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyOSwgNDQzLCA5ODM0MjcsIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDAsIDE5NDkzMSwgMTE5OTYyLCA0MTMwNiwgCisgICAgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIDEyODY3NiwgMTIwOTEsIDY3MTE4LCAKKyAgICA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIDY1MDU5LCA0Mzg2MCwgNjczOSwgCisgICAgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCA0Njc3LCAxMjY4OCwgMzEwMiwgCisgICAgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCA3ODE2NiwgNDY3NCwgNDU0OCwgCisgICAgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCA5ODM0MTIsIDY4NjY5LCAKKyAgICA5ODM0MTAsIDkyNDQ1LCAxMjc1NTQsIDk4MzQxNywgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIDExNzk3LCA5ODM0MTgsIAorICAgIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgOTgzNDE0LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCA2NTIwOSwgCisgICAgOTgzNDE2LCAwLCA0NjQ4LCA0MzA4MCwgOTgzNDA2LCA5ODM0MDcsIDk4MzQwNCwgNjI0NiwgNjQ5NTAsIDc4MjgsIDQ2NTAsIAorICAgIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDc4MDA1LCA3NDYyNCwgNDMxODcsIDg2NjksIDEyMDY1OSwgNjgyMSwgCisgICAgNjUwOTMsIDAsIDc4ODgxLCAyNzE2LCAwLCA5ODMwNjAsIDcwNTAzLCAxOTQ5NTIsIDY4MzY5LCAxMjAwNTQsIDExMDYwLCAKKyAgICA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCA5ODM0MjEsIDAsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgCisgICAgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCAKKyAgICA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDExLCAKKyAgICAxMjg3MzcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAxMTEwMCwgMTAwMDgsIAorICAgIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM5NSwgOTQwNzAsIAorICAgIDk4MzM5MywgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDc4ODg3LCAxMjg4MCwgNjUzMDcsIAorICAgIDQ2MTcsIDc4ODgzLCA5ODMzODYsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCA5ODMzODAsIDU5NTgsIDAsIAorICAgIDk4MzQzMywgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCA5ODMzODksIDQxMzEzLCA1MjIsIDUzNjgsIDExMTM5LCAKKyAgICA2NTgwMywgMCwgNTM2NiwgMTIyMDEsIDUzNzIsIDAsIDk4MzQwOSwgMTk0OTc1LCA3NzIwLCA3MzkwLCAyNjk2LCA5ODM0MDAsIAorICAgIDAsIDQ2MzgsIDk4MzQwNSwgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAKKyAgICAxODM1LCA1MzM1LCAxOTQ5NjYsIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCAKKyAgICA1MzMzLCAwLCAxMjUxMzIsIDQyMDk0LCA1MzMxLCA0NjM0LCAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIAorICAgIDU5NzEsIDQyNDE0LCA0MzUwMCwgMTI2OCwgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCAKKyAgICA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDk4MzM3NCwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgCisgICAgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgOTgzMzc4LCA2ODM3NywgNjI0OCwgOTgzMzYyLCAKKyAgICAxMjg0MzIsIDk4MzM2MCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIAorICAgIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgMTI3MzAyLCA2NzEwMSwgCisgICAgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgCisgICAgNjUxMzksIDU1NzcsIDEyODk2NiwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIAorICAgIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgMTI3MzExLCA2NTA2NiwgCisgICAgNDQwMDMsIDEyMDY1MCwgOTgzNDgwLCA0Mzg0MywgMTIwNDk4LCAxMjc4NTEsIDE5NTAwOSwgNzQ4NTEsIDc0MDIyLCAKKyAgICA5ODM0MjIsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgNTcyMSwgOTgzNDAxLCA1NTE5LCA4NjMyLCA2NjQ2NSwgCisgICAgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgOTgzMzUyLCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAwLCA0NjA5LCAKKyAgICA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMzNTUsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgNDIxNiwgCisgICAgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDk4MzM0OSwgOTgzMzQ2LCA5MjA4LCA0NjA4LCA2NDI2MCwgNDExMjQsIDUxOTAsIAorICAgIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDAsIDY3OTk4LCA2NzYyMCwgOTMwNDcsIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgCisgICAgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCA2NzcyMiwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAKICAgICAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIAotICAgIDYyMzksIDExOTk1NiwgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIAorICAgIDYyMzksIDExOTk1NiwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAKICAgICAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCAKLSAgICA3MTkzLCA2ODEzNywgMCwgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCA5ODM4NDAsIDQ4NjksIDEyMDU2MywgMCwgCi0gICAgNDIyMywgMTI4MjAxLCA2NjUwLCAxMjY1MDksIDAsIDk4MzQ2MywgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCAKLSAgICA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIAotICAgIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgCi0gICAgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgNTk2NiwgOTgzNDg2LCA0Nzc4LCAwLCAxMDg2MywgMCwgNDc4MSwgMCwgCi0gICAgNjQ0MDcsIDAsIDEyODMyMywgODU3NywgMTI4NTYyLCA2ODE5NiwgNDMyODUsIDEwMjE2LCA0NzgyLCAwLCAwLCAxMjA3NTcsIAotICAgIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMCwgMTMxNzYsIAotICAgIDY4MzYzLCAxMDQyNiwgMCwgOTE3NTk5LCAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgCi0gICAgNDMyNzgsIDQyNjM1LCAwLCAwLCA1OTYzLCA5MTc5MjYsIDAsIDAsIDQ4NTAsIDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCAKLSAgICA0ODU0LCAxMjc5MTgsIDUxNjQsIDk4Mzg3MCwgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIAotICAgIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAKLSAgICAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgCi0gICAgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjQsIDMwMywgOTgzMTAxLCA5MjYyMiwgCi0gICAgOTgzNDI1LCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDAsIDQzMjkyLCAwLCAyNDQxLCAKLSAgICAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMTI2NTQxLCAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCAKLSAgICA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAwLCAwLCAKLSAgICAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgMTQwOCwgNTI2MSwgNDYwNywgMCwgMTgxLCAKLSAgICA5ODM0MzAsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgCi0gICAgOTgzNjAxLCAwLCA0OTY0LCA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgCi0gICAgNjQxNzksIDk0ODIsIDQ4NzMsIDQxMjMxLCAxODIyLCA0MjUyNiwgMTI4NTgxLCAxMjc1OCwgMzg2NSwgMCwgMCwgMTA1MDAsIAotICAgIDAsIDExOTAyNCwgNzgwMjgsIDkyNDA4LCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCAKLSAgICA1NDYzLCAwLCAzMTI1LCA5NTY3LCAwLCA0ODc4LCA1NDU5LCA0NjA0LCA5MTc5MzEsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAKLSAgICAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgOTgzNDM5LCA3ODcxNCwgNjQxOTEsIAotICAgIDY0MTkwLCA4ODk4LCA2NDE4OCwgMCwgNDEwMzAsIDc4ODM2LCAwLCA5MTc4MzUsIDc4ODIwLCA5MTc4MzQsIDAsIDc4ODA1LCAKKyAgICA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDk4Mzg0MCwgNDg2OSwgMTIwNTYzLCAKKyAgICAwLCA0MjIzLCAxMjgyMDEsIDY2NTAsIDEyNjUwOSwgMCwgOTgzNDYzLCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIAorICAgIDY3MTYsIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgCisgICAgMCwgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgCisgICAgNjg2MzEsIDQyNzc1LCAwLCAxMjg0NDUsIDAsIDMwOTcsIDAsIDU5NjYsIDk4MzQ4NiwgNDc3OCwgMCwgMTA4NjMsIDAsIAorICAgIDQ3ODEsIDkyOTg2LCA2NDQwNywgMTI4NTAzLCAxMjgzMjMsIDg1NzcsIDcxMjIxLCA2ODE5NiwgNDMyODUsIDEwMjE2LCAKKyAgICA0NzgyLCAwLCAwLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgCisgICAgODcwMCwgOTgzOTU1LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIAorICAgIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDEyNzIwNywgNTk2MywgOTE3OTI2LCA5ODM0ODEsIAorICAgIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgMTI3OTE4LCA1MTY0LCA3MzgwNywgMTM1MCwgCisgICAgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAKKyAgICAxMjg3NjgsIDQxMjY4LCA0ODQ4LCAyNTMwLCAxOTQ3MTEsIDIwNjgsIDE5NjQsIDAsIDczNzYyLCAxMDQ1OCwgOTgzNDE1LCAKKyAgICA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIAorICAgIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI0LCAzMDMsIDc0NjI1LCA2ODIyOSwgOTgzNDI1LCAyNDM3LCA3ODY1OSwgNDIyMSwgCisgICAgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMCwgCisgICAgNzA0MzYsIDExODkyOSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgCisgICAgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgMjcyNiwgMzEwNywgNzM5NTgsIAorICAgIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgOTgzNDMwLCA0OTQyLCA5NTM5LCAKKyAgICA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgCisgICAgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCAKKyAgICA0MTIzMSwgMTgyMiwgNDI1MjYsIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDAsIDEyODQ3MywgMTA1MDAsIDAsIDExOTAyNCwgCisgICAgNzgwMjgsIDkyNDA4LCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIAorICAgIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAKKyAgICAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgCisgICAgODg5OCwgNjQxODgsIDEyOTE1MywgNDEwMzAsIDc0MjI2LCAwLCA3NDYwMCwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAogICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQzNywgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAotICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCi0gICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKLSAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAotICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAotICAgIDEzMjgyLCA2NDE3NSwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgMCwgMCwgMCwgMCwgMjU0MywgCi0gICAgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCAKLSAgICA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAKLSAgICAxMjAzNzgsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNjcwNSwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIAotICAgIDcxODcsIDAsIDEwMzczLCAwLCAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgCi0gICAgNjUyMjIsIDY5OTgsIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIAotICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgCi0gICAgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAKLSAgICAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDk4Mzg3MywgCi0gICAgNDIxMzAsIDAsIDUxNTEsIDkxNzgyOSwgOTE3ODIzLCAwLCA5Mzk4MCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIAotICAgIDgzNTUsIDc4NTQsIDAsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIAotICAgIDEwNzExLCA0NTkzLCAxMjc3NDUsIDEyMDU4NCwgOTgzNDA4LCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCAKLSAgICA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCi0gICAgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgCi0gICAgMCwgOTgzNDUxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIAotICAgIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCA4NjE4LCA5ODM0MDIsIDk5MDgsIDk4Mzk4MSwgMCwgMCwgMzkzNywgCi0gICAgMTIzMTIsIDAsIDk4MzQwMywgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIAotICAgIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NzYsIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCAKLSAgICA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgMTE5OTQ4LCAKLSAgICA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIDAsIDAsIDEyODg3NCwgCi0gICAgMCwgMCwgNDMyOTcsIDk4MzA3OSwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCA2NjQ1MiwgCi0gICAgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIAotICAgIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCA5MjI4NywgCi0gICAgMTI4MjI0LCAwLCAwLCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCA5ODM0NjgsIDQzMDYxLCA3MDU0LCAKLSAgICA2NDE0NywgMCwgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCAxMjAwMDYsIDExOTgxLCAxMjIwMiwgMCwgCi0gICAgMTEwMzIsIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2ODY2MiwgNjU4NDMsIDE3MCwgMCwgMCwgNDE2OSwgMCwgNDE4NTksIAotICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgMCwgMCwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAotICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgOTE3ODY1LCA0NzM3LCAxMTc3OSwgNDc0MiwgMTIwNTY0LCA5MjM5MSwgCi0gICAgNzM3MzYsIDk4MzM2NCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCAwLCA5MjUyNSwgMCwgNTMwMCwgNDc0MSwgCi0gICAgNDIxMDgsIDk4MzM1NCwgNjQxNTksIDQ3MzYsIDY0MTQ4LCAwLCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIDAsIDY2NjIwLCAKLSAgICA5MTc5MTYsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2NiwgNzg3NiwgNjgxMzIsIDkxNzg3MiwgCi0gICAgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDAsIDQ4NDIsIDEyMDUzLCAxMjgxMjksIDAsIDQ4NDEsIDAsIAotICAgIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCAwLCAxMTk1OTEsIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDAsIDEwMTE0LCAKLSAgICA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgCi0gICAgNDgyNSwgNjkyNDAsIDkxNzg1MiwgNjg2NTUsIDAsIDk4MzM4OCwgMCwgMCwgNjg2MjgsIDk4MzM0NywgOTg1MCwgMTE4OTM3LCAKLSAgICAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgMCwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIAotICAgIDExMDIzLCAxMTk1NTksIDQ4MzAsIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDAsIDEyNjYyNiwgNjQxMDEsIDAsIDAsIAotICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDAsIDE4ODgsIDE5NjAsIDc4NjEsIDkxNzg1NiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgCi0gICAgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgMCwgNjIxMSwgMCwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAKLSAgICAxMDc1OCwgNjU3NzQsIDAsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgMCwgMCwgMTE5MDUzLCAwLCAxMjc2NSwgCi0gICAgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDEyNjU4MCwgNDAxNywgMTI4MjcsIDUyNDEsIDEyMDM5MiwgMCwgNDExMTgsIAotICAgIDM5MjQsIDAsIDExMzY2LCA5MTc4NDMsIDAsIDAsIDkxNzg0NiwgNDExMTYsIDkxNzg0NCwgOTE3NTY0LCAwLCAxMTM2MywgCi0gICAgMTIwNTcsIDExOTE3LCAxNTY3LCA3NDAwMCwgNDcyMSwgMTI2NjQxLCA2NjIwMiwgODk1NywgNDEzOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgOTgzMzgzLCA0NzI2LCAwLCAKLSAgICAxOTQ4OTIsIDk4MzYyMiwgMTI4MzIxLCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAKLSAgICAwLCAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAKLSAgICAwLCAwLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDAsIDY0MDY3LCAxMjczMjgsIDg1NTIsIDY0MTEzLCAKLSAgICA0MTg0NSwgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDAsIAotICAgIDAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDkyNTk5LCA2NzU4NSwgNzAxMDQsIDEyMDA1MywgOTIzNTAsIDEyMDA1MSwgMzkzOCwgCi0gICAgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgMTIwMDYxLCA2NTQxNSwgMTIwMDU5LCA2MjkyLCA2NTMwMywgNzk1NSwgCi0gICAgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCA5MTc4OTAsIDkxNzg5MSwgNjUxNTIsIDcxOSwgMTIwMDQ0LCAKKyAgICA3MDc5LCA1ODU2LCAxMjcwNDMsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMTE5MDEwLCAKKyAgICAxMDU2NCwgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIAorICAgIDQxODE0LCA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAKKyAgICAxMjY0NzEsIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgCisgICAgNjQxOTQsIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgNzQ0OTUsIDAsIAorICAgIDkxNzkyNCwgMCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCAKKyAgICA5MjE3NiwgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIAorICAgIDk0NTMsIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIAorICAgIDEyODQ2NCwgMTk1MDgwLCA5NTA0LCA3MTg3LCAwLCAxMDM3MywgMCwgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIAorICAgIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgCisgICAgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIAorICAgIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAKKyAgICAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDEyNTAyMywgNDI2MDksIAorICAgIDEyODM4OCwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDk4Mzg3MywgNDIxMzAsIDk4MzIyMywgNTE1MSwgOTE3ODI5LCAKKyAgICA5MTc4MjMsIDAsIDkzOTgwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMTI3NzkyLCA4MzU1LCA3ODU0LCAwLCA5NTQsIAorICAgIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAxMDcxMSwgNDU5MywgMTI3NzQ1LCAKKyAgICAxMjA1ODQsIDk4MzQwOCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMCwgMCwgNzg2NDIsIDY0NzU5LCAxMzI1LCAKKyAgICA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCA3ODIwNCwgNjQxMzEsIAorICAgIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAwLCA5MTc4MTAsIAorICAgIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA3MDIwMSwgMTE5OTYwLCAxNDc3LCAKKyAgICA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDIsIDk5MDgsIDk4Mzk4MSwgMCwgMCwgMzkzNywgMTIzMTIsIDAsIAorICAgIDk4MzQwMywgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIDkyMjA5LCAKKyAgICA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NzYsIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAKKyAgICAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgNzc4NTMsIAorICAgIDc0MzY2LCAwLCAwLCA0MjAzOSwgMTEzODE3LCAwLCA2NDE0MiwgNjI2LCAwLCA1ODk1LCAwLCAwLCA1NzgwLCAwLCA2NjQwNywgCisgICAgMTI4ODc0LCAwLCAwLCA0MzI5NywgNzAxODgsIDQzMTEsIDQ2NDQsIDg4MTgsIDc4MTU4LCAxMjgxODYsIDAsIDcxNDUsIAorICAgIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCAKKyAgICA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgCisgICAgNDIxMTcsIDkyMjg3LCA5MjIwNiwgMCwgMTE5MjU1LCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgNzExODAsIDAsIAorICAgIDk4MzQ2OCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIAorICAgIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDAsIDExMDMyLCA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAKKyAgICAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgCisgICAgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAKKyAgICAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCA2ODM0MiwgOTgzMzY0LCA5ODI1LCA2NDQ4LCAKKyAgICA2NzE1LCAxMjcwMDgsIDQ4MzEsIDk4MzM2MywgOTI1MjUsIDY3NzMxLCA1MzAwLCA0NzQxLCA0MjEwOCwgOTgzMzU0LCAKKyAgICA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIDEyNzUzMywgCisgICAgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY2LCA3ODc2LCA2ODEzMiwgNjYyODAsIDM5MjgsIAorICAgIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAxMjczMDMsIDQ4NDEsIDAsIAorICAgIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCAwLCAxMTk1OTEsIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAKKyAgICAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCAKKyAgICA5MTc4NDksIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIDY4NjU1LCAwLCA5ODMzODgsIDAsIDAsIDY4NjI4LCA5ODMzNDcsIDk4NTAsIAorICAgIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgCisgICAgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCA3ODY2OSwgCisgICAgNjQxMDEsIDAsIDAsIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDAsIDE4ODgsIDE5NjAsIDc4NjEsIDkxNzg1NiwgNzg1MjQsIAorICAgIDQxODM2LCA0MzAxMiwgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgMCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKKyAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDAsIAorICAgIDk4MzcwOCwgMTE5MDUzLCAwLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDEyNjU4MCwgNDAxNywgMTI4MjcsIAorICAgIDUyNDEsIDEyMDM5MiwgMCwgNDExMTgsIDM5MjQsIDAsIDExMzY2LCAxMjkwODQsIDAsIDAsIDkxNzg0NiwgNDExMTYsIAorICAgIDkxNzg0NCwgOTE3NTY0LCAxMjkwODEsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIAorICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMCwgOTgzMDc0LCAwLCAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAKKyAgICAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgMCwgMTk0ODkyLCA5ODM2MjIsIDcwMDI5LCA5MTc5MDUsIAorICAgIDkyOTEyLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDAsIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAKKyAgICAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDAsIDEyNTEyMSwgNDE4NDMsIDg3MjAsIAorICAgIDM5MDgsIDE0NTIsIDEzMTExLCA5ODM0MTksIDY0MDY3LCAxMjczMjgsIDg1NTIsIDY0MTEzLCA0MTg0NSwgMzg0OSwgCisgICAgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDAsIDkxNzYxMCwgCisgICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgNzA0MzIsIDkyMTY4LCAxMjAwNTEsIDM5MzgsIAorICAgIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCA3OTU1LCAKKyAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgMTI5MDczLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAogICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKLSAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMTI2NjA2LCAKLSAgICA2NjQzNywgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAotICAgIDkxNzg3NywgOTE3ODc4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA5MTc4ODIsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAKLSAgICAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMCwgNTkyNSwgNDgwOCwgNjQzMzAsIDAsIDY1NDc1LCAxMTg5NDAsIDE5NTAyOCwgCi0gICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKLSAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAotICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ3MCwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKLSAgICAxMjc4ODgsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgCi0gICAgNzgxMTYsIDAsIDk4MzEzOSwgMCwgOTgzMDc0LCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDk4Mzg3NCwgCi0gICAgMCwgOTgzNDM0LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIAotICAgIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDk4MzQzMiwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgCi0gICAgMjI5MSwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgCi0gICAgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDk4MzA1NywgNzk5OCwgMCwgMCwgMCwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDAsIAotICAgIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCA5ODM4ODYsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAotICAgIDExOTIzMiwgMCwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgMzkwNiwgMTIzNDksIAotICAgIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgCi0gICAgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgMCwgMTI4ODA1LCAKLSAgICA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIDEyNzE0MywgMCwgCi0gICAgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDk4MzM1NiwgNjk2ODUsIDk4Mzc1NiwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKLSAgICAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMCwgMCwgNTM1MiwgMCwgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIAotICAgIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgOTIyNDEsIDQzNjA3LCAwLCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgCi0gICAgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKLSAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMCwgNzg3NTEsIDcxNDYsIDAsIDY1MTUwLCAKLSAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgOTgzNDM1LCA2OTY0MSwgMTA3NTMsIAotICAgIDEwODMwLCAwLCA2MTUsIDY0NDkwLCA3NTc0LCA5MjYxNywgNzc5MjIsIDAsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgCi0gICAgMCwgMCwgNjc5OTYsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDAsIDc0MzI5LCAKLSAgICAwLCA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIAotICAgIDAsIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAotICAgIDAsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgCi0gICAgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAotICAgIDEyMDI4MCwgOTIxOTIsIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDAsIDAsIDEwODIwLCAKLSAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCi0gICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKLSAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKLSAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAwLCAKLSAgICA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgNDEwMTksIDAsIAotICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDc4MjA4LCAxMTg4NzksIAotICAgIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAwLCAxMzI3OSwgNzkxNywgNzQ3NTUsIDAsIDc3MzMsIDAsIAotICAgIDQ5OTgsIDk4Mzg5NiwgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCA3MDA2MSwgNDAxMywgMCwgMTA4ODEsIDAsIDAsIAotICAgIDAsIDc0Nzg4LCAyMDE0LCAwLCAwLCA5NzY1LCAwLCAwLCAwLCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgCi0gICAgMCwgMCwgMCwgMjAxNSwgMCwgMCwgMCwgNjYzMTgsIDQzMjMzLCAwLCA0MjUxNywgMCwgMCwgMCwgMTI2OTgsIDgwOTQsIAotICAgIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCAwLCAxMjY1NiwgMTI4MTIyLCAxMTkzNTMsIDEyODI3MCwgMTY2NSwgMCwgNDgzMywgCi0gICAgOTgzMDUzLCAxMTkzNTEsIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIAotICAgIDAsIDAsIDQ4MzcsIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgCi0gICAgMTI4MjA4LCA3ODg0OCwgMzg5NSwgMCwgNzQzNDEsIDM5NzYsIDAsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyODc4NSwgOTk5LCAwLCA2MzQ1LCAKKyAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgNjU0MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAwLCAKKyAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgMCwgMTEzNzU2LCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgCisgICAgMTI2NjA2LCA2NjQzNywgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCAKKyAgICA5MTc4ODAsIDkxNzg3NywgOTE3ODU4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA3ODYxNywgNTM2NSwgNDU0NSwgODkwMSwgCisgICAgOTI0MjEsIDExOTU1NSwgNDgxMywgMTI4MjYyLCAwLCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCA2NTQ3NSwgMTE4OTQwLCAKKyAgICA2ODI0NCwgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIAorICAgIDAsIDE5NTAyNywgNjQ1NiwgNzM4MjAsIDAsIDY2OTEsIDQyMTkzLCA2NjI4NCwgMTI4MTcxLCAwLCA2ODMzNywgMCwgCisgICAgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDAsIDY1MDYxLCAKKyAgICAwLCA5MTc4OTQsIDAsIDEyMjM1LCAwLCA5MjcwMSwgMTI3MjMzLCA2NDA5MiwgOTgzNDcwLCA2NDA4MCwgMCwgNjQwOTAsIAorICAgIDk4MzU4NiwgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgMTI3ODg4LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIAorICAgIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAwLCAxOTQ5NTksIDE5NTAyNCwgOTIxOTMsIAorICAgIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgOTgzODc0LCAxMjczMjUsIDk4MzQzNCwgMTE5MjAyLCAKKyAgICAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAxMjg0NTIsIDQ1MjksIDExOTIwMCwgCisgICAgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCAwLCAKKyAgICAyMjkxLCAxMjkwMiwgMCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgOTE3ODU3LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAKKyAgICAxMjg2MjgsIDQxOTMsIDY2ODIzLCA0MjQxLCAxMjkxOTUsIDc5OTgsIDExOTg0MCwgMCwgOTgzNTU0LCAxMjY2NDAsIDIzMTYsIAorICAgIDExODgyMSwgMCwgMCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgCisgICAgMzc2MiwgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgCisgICAgMCwgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIAorICAgIDM3NzksIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCAwLCA3ODMzNSwgOTgzODkyLCAwLCAyODAsIDc0NTU4LCAxMjczMzIsIAorICAgIDY3Mzk2LCAxMzA3MiwgMTg5NCwgMCwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIDAsIDAsIDExMTQ0LCAKKyAgICA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgNzE4NzcsIDEyODgwNSwgNDQ3MCwgCisgICAgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCA5ODMwNjYsIDUzNjcsIDg3NTYsIDEyNzE0MywgCisgICAgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgNjk2ODUsIDk4Mzc1NiwgMCwgMTEzNzk0LCAKKyAgICA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDcxMDU3LCAxMTk2MjQsIDE0NjUsIAorICAgIDEwODUwLCAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCA2NzE0OCwgNTM1MiwgMTEzNzUzLCAwLCAKKyAgICA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCA5MjI0MSwgNDM2MDcsIAorICAgIDcxMjU0LCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAKKyAgICAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgCisgICAgMTcwNiwgMTIwNzUwLCA3ODc1MSwgNzE0NiwgMCwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCAKKyAgICA4NjAsIDAsIDEwNTA2LCA5ODM0MzUsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgCisgICAgNzQwODIsIDc3OTIyLCAwLCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDAsIDEyNzAyOSwgNjc5OTYsIDIwMjAsIAorICAgIDk4MzM1MCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgOTE3ODE4LCA3NDMyOSwgMCwgCisgICAgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAKKyAgICA5ODM2MjgsIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgCisgICAgMTE4ODA3LCAwLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIAorICAgIDEwNzM4LCA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgCisgICAgMzU5NiwgMCwgMTI4MDkwLCA5NzYzLCAxMjAyODAsIDc0NjA5LCAxMjM0NywgMTI0LCAxMjk4MSwgNDExMjcsIDIwOTIsIAorICAgIDkyNjg3LCAwLCAxMjc1NTUsIDAsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAxNzY5LCA0MTcxNSwgMjQ2MywgNzEyMTQsIAorICAgIDk4Mzk0NywgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIAorICAgIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIDEyNzAzMywgMTIwMjg5LCAKKyAgICAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgMTIwMjg3LCAxMjAyODYsIDI2NTAsIDQ0OTEsIDE5NjEsIAorICAgIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDk4MzI2MCwgNjg2NzUsIAorICAgIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIDQxMDE5LCAxMjc5NDQsIAorICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDcwODY0LCAxMTg4NzksIAorICAgIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCA3NDc1NSwgOTE3OTQ4LCAKKyAgICA3NzMzLCAwLCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCA3MDA2MSwgNDAxMywgMTI4NzE4LCAKKyAgICAxMDg4MSwgMCwgMCwgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIDcxOTAxLCA5NzY1LCAwLCAwLCA5MTc4NTQsIDE5NTA1OSwgCisgICAgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAxMTkzMTUsIDIwMTUsIDAsIDAsIDcxODQwLCA2NjMxOCwgCisgICAgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgCisgICAgNDM0OTcsIDEyNjU2LCA2NjMzNSwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDcxODUzLCA0ODMzLCA5ODMwNTMsIDcxMTg4LCAKKyAgICAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgCisgICAgNjc0MTMsIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIDQxMDQyLCA5MjkxNSwgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIAorICAgIDc4ODQ4LCAzODk1LCAwLCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKKyAgICA0MzQ5NiwgMCwgMCwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyNzAxMCwgOTk5LCAwLCA2MzQ1LCAKICAgICA0MTg3NiwgMjY2MywgMjAxNywgMCwgMCwgMTEwNDAsIDEwMTUwLCAwLCA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgCiAgICAgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIAotICAgIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDAsIDEwODEyLCA3ODg1MSwgMCwgMCwgMzA3OCwgMTQwMiwgMCwgMTI4Mjc1LCAwLCAwLCAKLSAgICAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAwLCAxMjg1MjQsIDQyNCwgNjYzMjgsIDE5OTksIAotICAgIDY5NjU5LCA3MzkxNCwgMCwgMCwgMCwgMCwgNDIyMzEsIDgyNDYsIDAsIDAsIDAsIDQxODQwLCA5ODM2MDksIDIzNzcsIAotICAgIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAxMjU1OSwgMTI1NzAsIDc0NzksIDEwMDMsIDIzNzMsIDk0NDYsIAotICAgIDc0ODEsIDk0NDgsIDQ4LCAwLCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAotICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDAsIDAsIDk0MjQsIAotICAgIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAwLCAyMDA0LCA5MDk2LCA5NzgyLCAKLSAgICAxMjg4NDgsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMCwgNjQ3ODIsIAotICAgIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIDAsIDAsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIAotICAgIDExODgwNSwgMTAzNTMsIDEwNDE3LCAwLCAwLCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDk4MzI4OCwgNDMyODAsIDgyMTksIAotICAgIDY4NDAyLCAxODEyLCAxMTk5NjMsIDk4MzY5MiwgMCwgMTI2NDg4LCA0MjQxMCwgNzQ0NDgsIDExOTEzMiwgNjA1NCwgCi0gICAgMTA2OTcsIDMxNjksIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDAsIDEyODEzOSwgOTgzMjYxLCA2ODY3OCwgCi0gICAgMCwgMCwgMTA0OSwgMCwgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCA2NDc2MCwgCisgICAgMTI1NjYsIDEyNTY5LCAxMjU1NCwgMCwgMTA4MTIsIDc4ODUxLCAwLCA5MTc1NjMsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgCisgICAgMCwgMTI1MDcyLCAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAxMjkwNzIsIDEyODUyNCwgCisgICAgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAwLCA2NjkwMywgMCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgCisgICAgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCAKKyAgICA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCA3NDgxLCA5NDQ4LCA0OCwgMCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCAKKyAgICA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAKKyAgICAzOTg0LCA5NDM3LCAwLCA5MjkzNCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIAorICAgIDk2NTUsIDk4MzcwOSwgMjAwNCwgOTA5NiwgOTc4MiwgNzA4NDIsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIAorICAgIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCAKKyAgICA5MjE2NSwgMTM5MiwgMCwgOTgzMjE0LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgCisgICAgMTI4NzM5LCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAxMTk5NjMsIAorICAgIDk4MzY5MiwgMTI5MTQ0LCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAxMDY5NywgMzE2OSwgNDIyOTcsIAorICAgIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4ODQ4LCAxMjgxMzksIDk4MzI2MSwgNjg2NzgsIDkyOTE3LCA5ODM3OTAsIAorICAgIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKICAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAotICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDk4MzEzMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMCwgCi0gICAgMTgyLCAxOTQ3MTgsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAKLSAgICAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIAotICAgIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIAotICAgIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCAKLSAgICA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCAKLSAgICA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIAotICAgIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCAKLSAgICA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIAotICAgIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgCi0gICAgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgCi0gICAgOTI0NjcsIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDAsIDAsIDEyODExOSwgNDAwNCwgMCwgMTA5NjgsIDQzMjk2LCA5ODM2NDIsIAotICAgIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgCi0gICAgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDk4MzE3NCwgCi0gICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCAKLSAgICA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAKLSAgICAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAKLSAgICAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgCi0gICAgMCwgNTk1OSwgNjc5ODQsIDczOTc2LCAxMjAzMDUsIDQzMzcxLCA2OTQxLCAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgCisgICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAxMjc5ODUsIDc0MjQ1LCAKKyAgICA5NjQwLCAxMTk5NTEsIDAsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIAorICAgIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgCisgICAgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCAKKyAgICA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgCisgICAgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAwLCA2NTUwNiwgMCwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgOTkzMiwgCisgICAgNDM1MTYsIDkyNDIzLCAxMTk5NTUsIDExOTk0OCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCisgICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgMCwgCisgICAgNjA2NSwgNDMxNjAsIDEyODM3OSwgMTk0NzE1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIAorICAgIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgMCwgNTk1NiwgCisgICAgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCA0MjI0MSwgMTYxLCAKKyAgICA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCAKKyAgICA0MzI5MywgMTE5OTQ0LCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA5MjM1MCwgMTAxODcsIDE3MDAsIDExOTIyMywgMCwgMCwgCisgICAgMTI3MjAyLCA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDk4MzY0MiwgODUwNiwgMTEzNzQ0LCAxOTQ4MTIsIDEyNjk5NiwgCisgICAgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCAKKyAgICA0NzI4LCAwLCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgMTI4NjIzLCA0NzMwLCA0NDcsIDEzMTg2LCAKKyAgICAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAKKyAgICAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIAorICAgIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDk4MzgzMiwgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDkyMjg2LCAxMzgwLCAKKyAgICA2NTYxNywgMTExNjIsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIDY3NzA4LCA5NDk1LCAxMTkzNDYsIDEyNzE1NCwgCisgICAgNTk1OSwgNjc5ODQsIDczOTc2LCA2NjI3NSwgNDMzNzEsIDY5NDEsIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAKICAgICAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIAotICAgIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgCi0gICAgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIDY1NDk0LCA2ODE1MywgMCwgMCwgCi0gICAgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgCi0gICAgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAKLSAgICAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAotICAgIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDk4MzEwNywgOTU3MywgMCwgNjUyOTAsIDg4NDksIDAsIAotICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIDczODgsIDEwNjIxLCAKLSAgICA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCAKLSAgICA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDAsIDAsIDQyMSwgCi0gICAgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgMTIwMTIxLCA2NjAzNSwgCi0gICAgOTgzOTEzLCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAxMTgzMSwgMjM3MCwgCi0gICAgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKLSAgICA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTIwNDM0LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCAKLSAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCA5ODM3NDMsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCAKLSAgICA5OTk4LCAxMjg1NjQsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCi0gICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgCi0gICAgMCwgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCAKLSAgICA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDIyODUsIDkyMzQ0LCAzOTg2LCAKLSAgICA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDAsIDk4MzM1OCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAKLSAgICAxMTQ5OCwgMCwgOTgzMzU3LCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAwLCAKLSAgICA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5ODMzNTAsIDAsIDE2MDYsIDEyMDM0OCwgCi0gICAgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgOTgzMDYxLCAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIAotICAgIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIAotICAgIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMTE4ODM3LCAxMTk3MywgCi0gICAgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDAsIAotICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDEyNjQ4NSwgMCwgNDg5NSwgCi0gICAgNjUzNTgsIDAsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCA5Mzk5NiwgMjM3NiwgMCwgMTE5MzIwLCAKLSAgICAwLCA1MTk3LCAxMjcwNDYsIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDEyNzA1MSwgMTIwNTU0LCAxMjAwNDUsIDAsIAotICAgIDAsIDAsIDk4MzA4NCwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA5ODMwODYsIDk4MzU3MywgMTIwMDQ3LCAxMjg1NzUsIDAsIAotICAgIDAsIDEyMDA0OSwgMCwgMTg0NywgMCwgMTAzMzksIDk4MzM2NSwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgCi0gICAgNDMwMzIsIDAsIDQyMzY1LCAwLCAxMjY3MSwgMTEzODQsIDAsIDk4MzQ2NSwgMCwgNjQ3OTcsIDk4MzM0NSwgNTgyMCwgCi0gICAgOTgzMzQ0LCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgCi0gICAgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAKLSAgICA5ODMzNDAsIDExODkzOCwgMCwgMTA4NTMsIDkyNiwgOTgzMzY5LCA3NDE4NCwgOTgzMzY4LCAxMjAwNTUsIDAsIDQzMTc1LCAKLSAgICAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDAsIDMwOTEsIDQxMDM0LCAxMjczNTMsIDk4MzY4MSwgODM2MCwgMCwgNzgwNDQsIDMyMSwgNDIyOSwgCi0gICAgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCA5MjM4NiwgCi0gICAgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIAotICAgIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCi0gICAgMTIwNzY2LCAwLCA0MjYzMiwgOTE3OTczLCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgCi0gICAgNDMzNDEsIDAsIDE5OTE5LCAwLCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAwLCAwLCAzNTEzLCAwLCAxMTg4ODMsIDQzMzQyLCAKLSAgICAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgMTI4MTk3LCAwLCA2NDg1LCAxMzk3LCAwLCA0MTk4NiwgOTI2NzgsIDAsIDAsIAotICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNzA3LCAwLCAKLSAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKLSAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCi0gICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCAKLSAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKLSAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ5MywgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAotICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCi0gICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAotICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAotICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAotICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCi0gICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCi0gICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCi0gICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKLSAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKLSAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4Mzg0NywgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAotICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKLSAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKLSAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg1MCwgMTIxMTIsIDY5OTEyLCAwLCAKLSAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAotICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKLSAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAotICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCi0gICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCi0gICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAotICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAotICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAotICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCi0gICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAotICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAotICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAotICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCi0gICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCi0gICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgCi0gICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAotICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCi0gICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAotICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKLSAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAotICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKLSAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAotICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAotICAgIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzcwNiwgMzM5NCwgCi0gICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCi0gICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCi0gICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCi0gICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKLSAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCi0gICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKLSAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKLSAgICAwLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAotICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKLSAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKLSAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCi0gICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCi0gICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCi0gICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAotICAgIDEyODcwNSwgMCwgOTgzNjkzLCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKLSAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY5NiwgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKLSAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAotICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgCi0gICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc1NCwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCi0gICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKLSAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKLSAgICA5ODM2OTEsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCi0gICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKLSAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAotICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKLSAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKLSAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCi0gICAgOTgzMzU5LCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAotICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAotICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMCwgODgzNCwgMCwgCi0gICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAotICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKLSAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAotICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCi0gICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCi0gICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCi0gICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAotICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAotICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MTcsIDk4MzI0NywgCi0gICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKLSAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYzMSwgOTgzNjM3LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKKyAgICA3MTE4NiwgMjAyMSwgMTE5MzMyLCA0Mzg3NywgMTE5MTUwLCA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCAKKyAgICA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIAorICAgIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIAorICAgIDk4Mzc5NCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgCisgICAgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgCisgICAgMTIxNDUsIDY3MjYxLCAxMDA3NCwgNzg1NDgsIDkzOTk5LCAzNzY5LCAwLCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgMCwgCisgICAgNjUyOTAsIDg4NDksIDExOTI1NCwgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAKKyAgICAzNTAyLCAwLCA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDkyMjAzLCAxMjA0NTYsIAorICAgIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgCisgICAgMTA4MjQsIDEyMDYzOSwgMTM5MCwgNzAxODQsIDAsIDQyMSwgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCAKKyAgICA3NTk1LCA0MjU4OCwgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTUwOTEsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgCisgICAgMzE2OCwgNjc3MzMsIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIDEyODE4MywgMCwgMTIwMTMyLCAwLCAxODM2LCAKKyAgICAwLCAwLCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAxMjA0MzQsIAorICAgIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDExMzY5MCwgNzc5NzUsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCAKKyAgICAxMjQ5NjgsIDExOTIzNCwgMTA2MTgsIDI1ODQsIDAsIDAsIDEyODIyNSwgOTk5OCwgMTIwNTczLCAwLCAwLCAxMjc3NTAsIAorICAgIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgMTIwMTMwLCA0MjY3LCAKKyAgICAxNjMxLCA0MjIwNiwgNzc5ODMsIDEyODAxNSwgMTk1MDQ2LCA2NTcwMCwgNjYzODYsIDAsIDY0NjQ1LCAwLCA5Mjg4NywgCisgICAgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTIwMTAwLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCA3NzkzLCAKKyAgICA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDkyODg1LCA2NjE1LCAyMjg1LCA5MjM0NCwgMzk4NiwgNDQwMjUsIAorICAgIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCA5MjI0NywgOTgzMzU4LCA5NTQxLCA3ODI3NiwgMTEzNjY5LCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDAsIDk4MzM1NywgNDEwNDAsIDI0NTksIDEyODYyOSwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAKKyAgICA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTI4ODEsIDAsIDE2MDYsIAorICAgIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgCisgICAgMTIwMzM3LCAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIAorICAgIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDY3MTY3LCA2NzE2NiwgCisgICAgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAKKyAgICAxMTkzMTksIDAsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAKKyAgICAxMjY0ODUsIDAsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgCisgICAgNTc1OCwgMTI3NTQ2LCAwLCAwLCA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIAorICAgIDkzOTk2LCAyMzc2LCA3ODg0MSwgMTE5MzIwLCAwLCA1MTk3LCA3MDgzOSwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgCisgICAgMTI3MDUxLCA3MDgzNywgMTIwMDQ1LCAwLCAxMjg1NTQsIDAsIDk4MzA4NCwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCAKKyAgICA3ODQ1NSwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgMCwgMTg0NywgMCwgMTAzMzksIAorICAgIDk4MzM2NSwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEyNTAxMCwgNDIzNjUsIDAsIDEyNjcxLCAKKyAgICAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ1LCA1ODIwLCA5ODMzNDQsIDEyMDA1MiwgCisgICAgMTIwMDY1LCAxMjg4MjUsIDEyMDA2NCwgMTIwMDUzLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMTI4OTAwLCAKKyAgICA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCA5ODMzNDAsIAorICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMzNjksIDc0MTg0LCA5ODMzNjgsIDEyMDA1NSwgMTk0OTkzLCA0MzE3NSwgMCwgCisgICAgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAorICAgIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgNjYyOTgsIDk4MzY4MSwgODM2MCwgOTgzNDQzLCA3ODA0NCwgMzIxLCAKKyAgICA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDE5NDczNSwgOTE5NSwgCisgICAgOTIzODYsIDE4NjEsIDAsIDczNzMzLCAwLCAwLCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgMzg1OSwgMTIxODEsIDQxNjYwLCAKKyAgICA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMTEzNjk5LCAKKyAgICA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDkxNzk3MywgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIAorICAgIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgMCwgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDE5NDkwNywgCisgICAgMzUxMywgMTI4ODU0LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgNjU1MjksIDY1MzY0LCAxMjgxOTcsIDAsIDY0ODUsIDEzOTcsIAorICAgIDAsIDQxOTg2LCA5MjY3OCwgMCwgMTk0Nzg0LCA3NDA5NywgMCwgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgCisgICAgOTIzMTcsIDAsIDY3NDA2LCA5ODM3MDcsIDAsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgCisgICAgMTI4OTUyLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAwLCA2NTY3OSwgNjQ1NzMsIDY0ODk3LCAKKyAgICA0MjMsIDE4MTgsIDY1MTQ0LCAxMTM3NDgsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIAorICAgIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCA3MTIzNSwgCisgICAgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIDQzNTMwLCAyNzUyLCAKKyAgICAxMjczNjUsIDEyODQ1OSwgOTgzNDkzLCA1OSwgOTgzNjcxLCA5ODM1OTMsIDExMTQ5LCA3ODA3NCwgNzc4NzMsIDQxODEwLCAKKyAgICAwLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCA4MDA5LCAzMzA1LCA0MzAzMywgCisgICAgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIDEyMDIzNSwgOTE3OTc3LCA2NTkxNSwgCisgICAgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMCwgCisgICAgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTI5MDUwLCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgCisgICAgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCA5MTc5NzYsIDgxMjksIDkyOTk0LCAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAKKyAgICAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgMTE5MDEzLCA0MzM0MCwgMTExMjMsIAorICAgIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgCisgICAgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIDAsIDU3MjYsIDY0OTE1LCAKKyAgICA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIDk4MzU4OSwgMCwgNDM3MywgCisgICAgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDAsIDkyMzY1LCA5MTc3ODksIAorICAgIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgOTgzOTMwLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIAorICAgIDk4Mzg0NywgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgCisgICAgMCwgODk5MCwgMjg0OCwgOTI5ODEsIDEyODIyMywgNzM5NDIsIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIAorICAgIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIDAsIDY0ODI2LCAxMjQ5MzEsIDkxNzc5OCwgCisgICAgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgMTk0ODE0LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCAKKyAgICA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgMTIwMTA0LCA2ODAxOSwgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIAorICAgIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCAxMTEyMCwgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCAKKyAgICA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMjg2NDksIAorICAgIDgzNSwgNzEzNDAsIDY5ODE2LCAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgNTQyNiwgNDI1OCwgOTgzMjMxLCAwLCA1NDI0LCAKKyAgICAxMjgxMjcsIDgyODMsIDEyNzk3OCwgNTQzNCwgMTI1MDA0LCAwLCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIAorICAgIDE0MDQsIDMwOTUsIDExNDMyLCAxMjgzMDcsIDM0NjQsIDY0ODYsIDQ4MTksIDEyODIzMywgMCwgNTcwLCA4MDk1LCAzNjcyLCAKKyAgICAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAxMjg1MzksIDQzMSwgMTI1MDYyLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIAorICAgIDk4MzY2MywgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCAKKyAgICA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIAorICAgIDExNDE4LCAwLCA1ODc4LCAwLCAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCA3ODcxOCwgOTI3MjMsIAorICAgIDM1NDksIDE5NTA2NywgOTExMCwgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTI4NTg1LCA5MDk3LCAwLCA0MzAxNSwgODc4MiwgCisgICAgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMCwgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAKKyAgICAxMTg4MTgsIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgCisgICAgMzk1MywgMTg5NywgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCAKKyAgICA2ODQ3MywgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDAsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIAorICAgIDkxNzU1MywgMTE2MiwgOTE3ODQ3LCAyNjcxLCAxMjg1NjcsIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgCisgICAgMCwgMTk1MDA1LCAxMTg5MjgsIDAsIDE5OTIxLCA3NDMzMSwgMTE0MjQsIDE5NTAwNiwgNDU2NywgNDE4OTEsIDAsIAorICAgIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgMTM3NywgCisgICAgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA5MTc1NTgsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgCisgICAgMTk0OTQxLCA0MzI4MiwgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMjY5NzksIDEwNzE5LCAxMjg0NjksIDE4OTgsIAorICAgIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgCisgICAgODM4LCA3MDM3MiwgMTIwNjk3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIAorICAgIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAKKyAgICAxMTc2MSwgMTk0NjU1LCAxMTg4NzQsIDQxMDk0LCAwLCAxMjkxNzIsIDE5NDg5MywgNzg0MDMsIDkyNjg5LCA2MTk2LCAKKyAgICA2OTQ1LCA5Mzk2OSwgMTI3OTkwLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgMTI2NTY3LCA1NzMzLCAyOTMwLCA3ODQwNiwgMCwgCisgICAgNDEwOTgsIDkyNzcxLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMTI5MTEyLCAxOTQ3MTcsIDEyMzgsIDIwMCwgCisgICAgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCAwLCA5MjQ4NSwgMTI0OTMwLCAwLCA5ODM3MDYsIDMzOTQsIAorICAgIDE5NDg5NCwgMTIwNjY4LCAwLCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgNzI0MjUsIDQzMjg0LCAxMjcyMzYsIDc4MTcsIAorICAgIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDAsIAorICAgIDE5NDk5NSwgMTczMiwgNDAzMCwgMCwgMzk2MywgNjY2MTEsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDEyNzUxOCwgNjUzMjQsIAorICAgIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAKKyAgICA3MTkwOCwgMTIwMDksIDEyMzk5LCAwLCA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIAorICAgIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIAorICAgIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAwLCAwLCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIAorICAgIDEyNjU2MiwgOTgzMTI5LCAwLCAwLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIAorICAgIDExOTc1LCAxOTQ4NzgsIDAsIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQxMTMzLCA0MTg3MiwgNDM3MDYsIDQ0OTYsIAorICAgIDE5NDg3OSwgMTI4MDY1LCAxMjAyNDEsIDAsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIAorICAgIDcwMDc2LCA2NTU5NiwgOTIzMDYsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAKKyAgICAxMTE1NywgNzQzODYsIDAsIDgyMzMsIDEyODIwLCAwLCA2NjgzLCAxOTQ4NzYsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgCisgICAgMCwgMTQ3MywgNDI4MjAsIDY0MzI5LCAxMjc4MzIsIDAsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCA3MjQxNywgCisgICAgNDExMDQsIDk0MDAzLCAzNDA2LCAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDk4MzM4MywgNDQzNCwgMTA2OSwgMCwgCisgICAgMTE4ODYyLCA2NTczNywgMTk0NjM0LCAxMjg3MDUsIDAsIDEyNDk1NSwgOTY5MywgNDE5NDMsIDY4MzA1LCA0MTkzMSwgCisgICAgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTEsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTE3NzcwLCA2NTkzNywgCisgICAgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMCwgMTE4ODMzLCA5MjM3MiwgNzA0MjQsIDc0ODMwLCA3ODU2OSwgMTI3NDMsIAorICAgIDk4MzY4OSwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgNzc4OTUsIDYzMzUsIDY2NjAyLCAKKyAgICAxMTMxMiwgNjQ4MDcsIDkyOTYyLCA2OTk4OSwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCA0MzAyMCwgMTI4MjcxLCAzOTU1LCAKKyAgICA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMTI1MDQ3LCAKKyAgICAwLCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIAorICAgIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAxMTExNiwgNDM4NDIsIDU3NDcsIAorICAgIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAKKyAgICAwLCA5ODM2OTEsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA5ODMyMzksIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgCisgICAgNDMxMzcsIDY5NCwgMCwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIAorICAgIDEyNzYxLCAwLCA3NDQ2NiwgMTMwMjUsIDY0ODExLCA4NzU3LCA3ODgyNCwgNzgxODgsIDE1NzQsIDczODEsIDAsIDI1MjUsIAorICAgIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgCisgICAgNDE4NTgsIDExNTkyLCAxMjkxNTYsIDY5NzI1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIDQ3NzEsIDAsIAorICAgIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCA5MjUwMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgMCwgMTI1MDA5LCAxMjg4NzMsIAorICAgIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCA5ODMzNTksIDczOTA2LCA2NzQwOSwgMTI3MTE0LCAwLCAxMDIzNCwgCisgICAgNTg0MywgMTE5MzksIDcwMzQ2LCA0MjE1NywgMCwgMzE1NywgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAKKyAgICAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIAorICAgIDk4MzY2NSwgMCwgMzg2LCAwLCA4ODM0LCAwLCAxMjgxNSwgNDM1NzQsIDEyODQwNywgNzM5MDcsIDAsIDcwMTEzLCA3MjIwLCAKKyAgICAxMTgzOSwgMTI0OTg0LCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTk0NzUzLCAwLCAwLCAKKyAgICAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAxMjg0NzQsIDc1OTksIAorICAgIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCAxMjcxMTAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIDc0NDkyLCA2MDk3LCAKKyAgICA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAxOTQ3NjIsIDI2NzIsIDM3MzUsIAorICAgIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAxMjgzNzMsIAorICAgIDk0ODcsIDExOTk1OSwgOTI5MTMsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDExOTM0NCwgMCwgCisgICAgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA3ODQ2OCwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCA3MDAwNiwgCisgICAgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIDE5NjIsIAorICAgIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIDU0MzcsIDc0MTc0LCAKKyAgICAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDk4Mzc3NiwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgMTk0Njk5LCAKKyAgICAxOTQ4NDcsIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxOTUwNzAsIDY0NzIsIAorICAgIDY1ODE0LCA3MTkxOSwgMCwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MTcsIDExMzY4MCwgCisgICAgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCA3MTg3MiwgNjY3OSwgNzQ0MTIsIAorICAgIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzg1OTEsIDExMzczMywgMTk0ODMzLCAKICAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCi0gICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAxMjg4NDUsIDE5NDgyMCwgCi0gICAgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCA3MzkyNywgOTI0NDQsIDE5NDczNiwgCi0gICAgNjU3NDYsIDEyNzQ3NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxOTQ4MzEsIDE2NzcsIDAsIDAsIAorICAgIDExOTYxMCwgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAwLCAxMTMyMSwgMTI4ODQ1LCAxMjA4MDksIAorICAgIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDkzMDEwLCA3MzkyNywgOTI0NDQsIDEyNzMzNiwgCisgICAgNjU3NDYsIDExODc5NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxMjg5NzksIDE2NzcsIDAsIDAsIAogICAgIDEyNjU5MCwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIDAsIDc1ODUsIAotICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgCi0gICAgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgMTI3MTcwLCAwLCA5ODM2MjUsIDAsIAotICAgIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDk4Mzk0MywgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAwLCAwLCA1MDYsIAotICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgOTgzNjgwLCA4ODQxLCAwLCA1MTYsIAotICAgIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAotICAgIDExODI3LCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKLSAgICAxMTAzNywgMCwgMTc1OCwgMTI3MDkyLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAotICAgIDEyMDE5NiwgMTIwMTk1LCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIDY0NzAyLCAxMjY0MywgODI1LCAKLSAgICAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgNzg4MjksIAotICAgIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDAsIDExMzEzLCAwLCAzNDAzLCAwLCAwLCA2NDM2NCwgOTIyNjksIAotICAgIDAsIDc0NTgyLCA4OTk4LCAxMjk4OCwgMCwgOTE1MiwgOTgzODQ5LCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIAotICAgIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgCi0gICAgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCAKLSAgICA0MTM5MywgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgCi0gICAgNTczLCAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIAotICAgIDY3NjA3LCAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIAotICAgIDc4ODM3LCAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIAotICAgIDQyNzg4LCA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAKLSAgICAwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDAsIDQxNzIsIDAsIDAsIDgzNzMsIAotICAgIDEwODczLCAxMjE5NywgMCwgMCwgOTIyNjUsIDY5NzA2LCAwLCA3ODIxMCwgMCwgMTI4MTEwLCAxOTQ4NjUsIDEyNjk4MiwgCi0gICAgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDAsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAKLSAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk1MCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAotICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCi0gICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCi0gICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKLSAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCi0gICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAotICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCi0gICAgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAotICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKLSAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAotICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKLSAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKLSAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCi0gICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAotICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCi0gICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAotICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2NiwgMCwgNDc2NywgOTM0MywgCi0gICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKLSAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCi0gICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKLSAgICA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKLSAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAotICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCi0gICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgOTgzNjI3LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgMjk0LCAKLSAgICA0MTg3NCwgMCwgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAKLSAgICAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAxMTk4ODksIDExNDMzLCAKLSAgICAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCAxOTQ5NTUsIAotICAgIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgOTgzOTI1LCAwLCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCAKLSAgICA0MTU0OSwgNzg0OTYsIDk4MzMyNywgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKLSAgICAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgOTgzNjQ2LCAwLCAwLCAzMDU5LCAKLSAgICA0NDAyNCwgMTIwMjA0LCAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAKLSAgICAzNTkyLCAxMDA3OCwgMCwgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgCi0gICAgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIAorICAgIDY0NjU1LCAwLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAxMjcxNzAsIDAsIAorICAgIDk4MzYyNSwgOTI1NTAsIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIAorICAgIDAsIDcyMzg5LCAwLCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgCisgICAgOTgzNjgwLCA4ODQxLCAwLCA1MTYsIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIAorICAgIDE2MTIsIDc0MzMzLCAxMjAxODIsIDExODI3LCA2NzE2NSwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIAorICAgIDY3OTg2LCA2NTg0LCA3NzQ5LCAxMTAzNywgMTI4NzQzLCAxNzU4LCAxMTkwNzQsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCAKKyAgICA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgMTIwMTk2LCAxMjAxOTUsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgCisgICAgMTIxNywgNjQ3MDIsIDEyNjQzLCA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCAKKyAgICA3ODgzMSwgNzg4MzMsIDEyNjMxLCA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAKKyAgICAxMTMxMywgMTk0ODAzLCAzNDAzLCAwLCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTI3OTA0LCA3MjQzMSwgODk5OCwgMTI5ODgsIAorICAgIDExOTk4MywgOTE1MiwgOTgzODQ5LCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgCisgICAgMTU5NCwgNDIxOTIsIDY5MTQsIDY2MzkyLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAKKyAgICAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAKKyAgICAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgyLCAxMjA1NDMsIAorICAgIDExNDE3LCAxOTQ4ODYsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgMzk4MSwgCisgICAgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc4ODM3LCAxMTU4OSwgNDIxOTUsIAorICAgIDc0NDc3LCAxMTk5OTcsIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgNDI3ODgsIDY4NDE2LCA2NDQ4MCwgCisgICAgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDAsIDk5NywgMCwgMCwgOTI1NzcsIDAsIAorICAgIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCA3MjM5MCwgMCwgCisgICAgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAwLCA0MTcyLCA3MTI1MiwgMTE5OTkyLCA4MzczLCAKKyAgICAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgNjk3MDYsIDEyODU0MCwgNjgzNCwgMTI3MjUxLCAxMjgxMTAsIAorICAgIDE5NDg2NSwgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMTk0NTk4LCAxMTg4NDUsIAorICAgIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCAxMjY1MjMsIDk0MDQyLCA5ODM5NTAsIDc0NTIyLCA0MTk4OSwgMCwgCisgICAgMCwgMTEzNzY5LCAzMjYzLCAwLCA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgCisgICAgNjU1MTgsIDEyODQ5OCwgNzU2LCAxOTQ2MDUsIDAsIDAsIDAsIDcyNjEsIDkyNTQ3LCAxODYsIDAsIDExOTE1NiwgNTc3MCwgCisgICAgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCAKKyAgICA5MjQzNCwgNzQ2MjYsIDAsIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAKKyAgICAxNzk0LCA2ODMxMCwgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIAorICAgIDY0ODg2LCA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIAorICAgIDU1MDIsIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM3NzEsIDkyNTI2LCA0NTExLCAwLCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgCisgICAgMCwgNDMyNDUsIDEyMzEsIDkyMzkwLCA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIAorICAgIDk1NDYsIDAsIDAsIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCAKKyAgICA3ODIwMiwgNjQwNTgsIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIAorICAgIDcyMzg0LCA0MzEwMywgMCwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCAKKyAgICA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAKKyAgICAxMjc3NzEsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgCisgICAgMTI5MTU3LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCAxOTQ5MzAsIDEyNzE0MiwgNzgxNDUsIDcxODk4LCA0MzA5MCwgMCwgCisgICAgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIAorICAgIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgCisgICAgNzI0NywgNjQwNTQsIDk4MzI2NiwgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCAKKyAgICA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIAorICAgIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgCisgICAgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCA3ODI0NCwgOTgzMjMyLCAyMDI2LCA2NDAxOSwgCisgICAgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDAsIDc1ODIsIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgCisgICAgMCwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgNzc5MjAsIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIAorICAgIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCA3NDQ1NCwgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIAorICAgIDk4MzYyNywgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDAsIDY0NzkwLCA2NTkyOSwgMCwgCisgICAgMTI5MDYzLCAwLCAwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAKKyAgICAxMTk4ODgsIDcwMTUzLCAxMTk4ODYsIDExOTg5MSwgNzIzODcsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAwLCAKKyAgICA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDEyNzk1NywgMTEzNSwgMCwgMTI4ODA3LCAKKyAgICAxMjg1MjUsIDE5OTUsIDY3MjIsIDk4MzkyNSwgMCwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAorICAgIDc4NDk2LCA3MjM4NiwgMCwgNjY4MiwgOTgzOTE3LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIDEyODI5MSwgCisgICAgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgMTE5OTA4LCA5MTM3LCAKKyAgICA3MTU1LCA4OTk5LCAwLCA3ODUzMywgMzQ2NiwgMCwgMCwgMTk5NiwgMCwgMzQ1MywgNjI4MiwgMCwgMjAwMiwgMjAwMCwgCisgICAgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAwLCA5MjY3NCwgOTYyOCwgCisgICAgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgMCwgMTIwMDAxLCAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAKKyAgICAxMjc5OTEsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgCisgICAgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAwLCA3ODE2MiwgMTE5NTU4LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAKKyAgICAxMDc0MiwgNzI0MDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCiB9OwogCiAjZGVmaW5lIGNvZGVfbWFnaWMgNDcKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmNzc3NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0wLDAgKzEsNTMgQEAKKyNpZm5kZWYgUHlfV0lOUkVQQVJTRV9ICisjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KKyAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAorICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCit0eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICAgVUxPTkcgUmVwYXJzZVRhZzsKKyAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CisgICAgVVNIT1JUIFJlc2VydmVkOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKKyAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVPZmZzZXQ7CisgICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgVUxPTkcgRmxhZ3M7CisgICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOworICAgICAgICB9IFN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7CisgICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgV0NIQVIgIFBhdGhCdWZmZXJbMV07CisgICAgICAgIH0gTW91bnRQb2ludFJlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOworICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOworICAgIH07Cit9IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKKworI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworI2VuZGlmIC8qICFQeV9XSU5SRVBBUlNFX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVlY2RhYjkuLjQwYzE3NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtNDAsMTEgKzQwLDE4IEBACiAKIC8qIFh4byBtZXRob2RzICovCiAKLXN0YXRpYyB2b2lkCi1YeG9fZGVhbGxvYyhYeG9PYmplY3QgKnNlbGYpCitzdGF0aWMgaW50CitYeG9fdHJhdmVyc2UoWHhvT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnhfYXR0cik7Ci0gICAgKChmcmVlZnVuYylQeVR5cGVfR2V0U2xvdChQeV9UWVBFKHNlbGYpLCBQeV90cF9mcmVlKSkoc2VsZik7CisgICAgUHlfVklTSVQoc2VsZi0+eF9hdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorWHhvX2ZpbmFsaXplKFh4b09iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAyLDcgKzEwOSw4IEBACiAKIHN0YXRpYyBQeVR5cGVfU2xvdCBYeG9fVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9kb2MsICJUaGUgWHhvIHR5cGUifSwKLSAgICB7UHlfdHBfZGVhbGxvYywgWHhvX2RlYWxsb2N9LAorICAgIHtQeV90cF90cmF2ZXJzZSwgWHhvX3RyYXZlcnNlfSwKKyAgICB7UHlfdHBfZmluYWxpemUsIFh4b19maW5hbGl6ZX0sCiAgICAge1B5X3RwX2dldGF0dHJvLCBYeG9fZ2V0YXR0cm99LAogICAgIHtQeV90cF9zZXRhdHRyLCBYeG9fc2V0YXR0cn0sCiAgICAge1B5X3RwX21ldGhvZHMsIFh4b19tZXRob2RzfSwKQEAgLTExMyw3ICsxMjEsNyBAQAogICAgICJ4eGxpbWl0ZWQuWHhvIiwKICAgICBzaXplb2YoWHhvT2JqZWN0KSwKICAgICAwLAotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCiAgICAgWHhvX1R5cGVfc2xvdHMKIH07CiAKQEAgLTE2OSw3ICsxNzcsNyBAQAogCiAvKiAtLS0tLS0tLS0tICovCiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0geyAgICAKK3N0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9iYXNlLCBOVUxMfSwgLyogZmlsbGVkIG91dCBpbiBtb2R1bGUgaW5pdCBmdW5jdGlvbiAqLwogICAgIHswLCAwfSwKIH07CkBAIC0yMjIsMjUgKzIzMCw5IEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCi0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4bGltaXRlZCIsCi0gICAgbW9kdWxlX2RvYywKLSAgICAtMSwKLSAgICB4eF9tZXRob2RzLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfeHhsaW1pdGVkKHZvaWQpCitzdGF0aWMgaW50Cit4eF9tb2RleGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptID0gTlVMTDsKICAgICBQeU9iamVjdCAqbzsKIAogICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCkBAIC0yNTQsMTEgKzI0Niw2IEBACiAgICAgaWYgKFh4b19UeXBlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIC8qIENyZWF0ZSB0aGUgbW9kdWxlIGFuZCBhZGQgdGhlIGZ1bmN0aW9ucyAqLwotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4bW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwogICAgIGlmIChFcnJvck9iamVjdCA9PSBOVUxMKSB7CiAgICAgICAgIEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJ4eGxpbWl0ZWQuZXJyb3IiLCBOVUxMLCBOVUxMKTsKQEAgLTI2OCw2ICsyNTUsMTIgQEAKICAgICBQeV9JTkNSRUYoRXJyb3JPYmplY3QpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBFcnJvck9iamVjdCk7CiAKKyAgICAvKiBBZGQgWHhvICovCisgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmWHhvX1R5cGVfc3BlYyk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWHhvIiwgbyk7CisKICAgICAvKiBBZGQgU3RyICovCiAgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmU3RyX1R5cGVfc3BlYyk7CiAgICAgaWYgKG8gPT0gTlVMTCkKQEAgLTI3OSw4ICsyNzIsMzQgQEAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsIiwgbyk7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIDA7CiAgZmFpbDoKICAgICBQeV9YREVDUkVGKG0pOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAtMTsKK30KKworCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCB4eF9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgeHhfbW9kZXhlY30sCisgICAgezAsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4bW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAieHhsaW1pdGVkIiwKKyAgICBtb2R1bGVfZG9jLAorICAgIDAsCisgICAgeHhfbWV0aG9kcywKKyAgICB4eF9zbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworLyogRXhwb3J0IGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94eGxpbWl0ZWQodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eG1vZHVsZS5jIGIvTW9kdWxlcy94eG1vZHVsZS5jCmluZGV4IDBmZWZmNjYuLjg1MjMwZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKQEAgLTMzNCwyNiArMzM0LDEwIEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCiAKLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4IiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIHh4X21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF94eCh2b2lkKQorc3RhdGljIGludAoreHhfZXhlYyhQeU9iamVjdCAqbSkKIHsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KICAgICAvKiBEdWUgdG8gY3Jvc3MgcGxhdGZvcm0gY29tcGlsZXIgaXNzdWVzIHRoZSBzbG90cyBtdXN0IGJlIGZpbGxlZAogICAgICAqIGhlcmUuIEl0J3MgcmVxdWlyZWQgZm9yIHBvcnRhYmlsaXR5IHRvIFdpbmRvd3Mgd2l0aG91dCByZXF1aXJpbmcKICAgICAgKiBDKysuICovCkBAIC0zNjYsMTEgKzM1MCw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmWHhvX1R5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgYW5kIGFkZCB0aGUgZnVuY3Rpb25zICovCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmeHhtb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgaWYgKEVycm9yT2JqZWN0ID09IE5VTEwpIHsKICAgICAgICAgRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInh4LmVycm9yIiwgTlVMTCwgTlVMTCk7CkBAIC0zODksOCArMzY4LDMzIEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmTnVsbF9UeXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk51bGwiLCAoUHlPYmplY3QgKikmTnVsbF9UeXBlKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKICBmYWlsOgogICAgIFB5X1hERUNSRUYobSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QgeHhfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4X2V4ZWN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgeHhtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJ4eCIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLAorICAgIHh4X21ldGhvZHMsCisgICAgeHhfc2xvdHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKy8qIEV4cG9ydCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfeHgodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eHN1YnR5cGUuYyBiL01vZHVsZXMveHhzdWJ0eXBlLmMKaW5kZXggNjk0NGUzNy4uOGQwZDZhZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eHN1YnR5cGUuYworKysgYi9Nb2R1bGVzL3h4c3VidHlwZS5jCkBAIC0yNTcsMTMgKzI1Nyw1MCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgaW50Cit4eHN1YnR5cGVfZXhlYyhQeU9iamVjdCogbSkKK3sKKyAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCisgICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKKyAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAorICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCisgICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3BhbWxpc3RfdHlwZS50cF9iYXNlID0gJlB5TGlzdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1saXN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1kaWN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1kaWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdCB4eHN1YnR5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4c3VidHlwZV9leGVjfSwKKyAgICB7MCwgTlVMTH0sCit9OworCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4c3VidHlwZW1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgInh4c3VidHlwZSIsCiAgICAgeHhzdWJ0eXBlX19kb2NfXywKLSAgICAtMSwKKyAgICAwLAogICAgIHh4c3VidHlwZV9mdW5jdGlvbnMsCi0gICAgTlVMTCwKKyAgICB4eHN1YnR5cGVfc2xvdHMsCiAgICAgTlVMTCwKICAgICBOVUxMLAogICAgIE5VTEwKQEAgLTI3MywzNyArMzEwLDUgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfeHhzdWJ0eXBlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCi0gICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKLSAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAotICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCi0gICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzcGFtbGlzdF90eXBlLnRwX2Jhc2UgPSAmUHlMaXN0X1R5cGU7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4c3VidHlwZW1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtbGlzdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOwotICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRigmc3BhbWRpY3RfdHlwZSk7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWRpY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtZGljdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBtOworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ4eHN1YnR5cGVtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggZjJjYzI0NS4uMDZhYmIzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC0yMCwxNSArMjAsMTMgQEAKIAogLyogemlwX3NlYXJjaG9yZGVyIGRlZmluZXMgaG93IHdlIHNlYXJjaCBmb3IgYSBtb2R1bGUgaW4gdGhlIFppcAogICAgYXJjaGl2ZTogd2UgZmlyc3Qgc2VhcmNoIGZvciBhIHBhY2thZ2UgX19pbml0X18sIHRoZW4gZm9yCi0gICBub24tcGFja2FnZSAucHljLCAucHlvIGFuZCAucHkgZW50cmllcy4gVGhlIC5weWMgYW5kIC5weW8gZW50cmllcworICAgbm9uLXBhY2thZ2UgLnB5YywgYW5kIC5weSBlbnRyaWVzLiBUaGUgLnB5YyBlbnRyaWVzCiAgICBhcmUgc3dhcHBlZCBieSBpbml0emlwaW1wb3J0KCkgaWYgd2UgcnVuIGluIG9wdGltaXplZCBtb2RlLiBBbHNvLAogICAgJy8nIGlzIHJlcGxhY2VkIGJ5IFNFUCB0aGVyZS4gKi8KIHN0YXRpYyBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyIHppcF9zZWFyY2hvcmRlcltdID0gewogICAgIHsiL19faW5pdF9fLnB5YyIsIElTX1BBQ0tBR0UgfCBJU19CWVRFQ09ERX0sCi0gICAgeyIvX19pbml0X18ucHlvIiwgSVNfUEFDS0FHRSB8IElTX0JZVEVDT0RFfSwKICAgICB7Ii9fX2luaXRfXy5weSIsIElTX1BBQ0tBR0UgfCBJU19TT1VSQ0V9LAogICAgIHsiLnB5YyIsIElTX0JZVEVDT0RFfSwKLSAgICB7Ii5weW8iLCBJU19CWVRFQ09ERX0sCiAgICAgeyIucHkiLCBJU19TT1VSQ0V9LAogICAgIHsiIiwgMH0KIH07CkBAIC04NzUsOCArODczLDEyIEBACiAKICAgICBmcCA9IF9QeV9mb3Blbl9vYmooYXJjaGl2ZSwgInJiIik7CiAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CisgICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC05MzksNiArOTQxLDkgQEAKICAgICAgICAgaGVhZGVyX3NpemUgPSBuYW1lX3NpemUgKwogICAgICAgICAgICBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApICsKICAgICAgICAgICAgUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlKGZwKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgIGlmIChmcmVhZChkdW1teSwgMSwgOCwgZnApICE9IDgpIC8qIFNraXAgdW51c2VkIGZpZWxkcywgYXZvaWQgZnNlZWsgKi8KICAgICAgICAgICAgIGdvdG8gZmlsZV9lcnJvcjsKICAgICAgICAgZmlsZV9vZmZzZXQgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCkgKyBhcmNfb2Zmc2V0OwpAQCAtMTA3MywxMiArMTA3OCw4IEBACiAgICAgfQogCiAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKGFyY2hpdmUsICJyYiIpOwotICAgIGlmICghZnApIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAiemlwaW1wb3J0OiBjYW4gbm90IG9wZW4gZmlsZSAlVSIsIGFyY2hpdmUpOworICAgIGlmICghZnApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbG9jYWwgZmlsZSBoZWFkZXIgaXMgY29ycmVjdCAqLwogICAgIGlmIChmc2VlayhmcCwgZmlsZV9vZmZzZXQsIDApID09IC0xKSB7CkBAIC0xMzE1LDcgKzEzMTYsNyBAQAogICAgIHJldHVybiBta3RpbWUoJnN0bSk7CiB9CiAKLS8qIEdpdmVuIGEgcGF0aCB0byBhIC5weWMgb3IgLnB5byBmaWxlIGluIHRoZSBhcmNoaXZlLCByZXR1cm4gdGhlCisvKiBHaXZlbiBhIHBhdGggdG8gYSAucHljIGZpbGUgaW4gdGhlIGFyY2hpdmUsIHJldHVybiB0aGUKICAgIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBtYXRjaGluZyAucHkgZmlsZSwgb3IgMCBpZiBubyBzb3VyY2UKICAgIGlzIGF2YWlsYWJsZS4gKi8KIHN0YXRpYyB0aW1lX3QKQEAgLTE0NzgsMTcgKzE0NzksNiBAQAogICAgIC8qIENvcnJlY3QgZGlyZWN0b3J5IHNlcGFyYXRvciAqLwogICAgIHppcF9zZWFyY2hvcmRlclswXS5zdWZmaXhbMF0gPSBTRVA7CiAgICAgemlwX3NlYXJjaG9yZGVyWzFdLnN1ZmZpeFswXSA9IFNFUDsKLSAgICB6aXBfc2VhcmNob3JkZXJbMl0uc3VmZml4WzBdID0gU0VQOwotICAgIGlmIChQeV9PcHRpbWl6ZUZsYWcpIHsKLSAgICAgICAgLyogUmV2ZXJzZSAqLnB5YyBhbmQgKi5weW8gKi8KLSAgICAgICAgc3RydWN0IHN0X3ppcF9zZWFyY2hvcmRlciB0bXA7Ci0gICAgICAgIHRtcCA9IHppcF9zZWFyY2hvcmRlclswXTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzBdID0gemlwX3NlYXJjaG9yZGVyWzFdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbMV0gPSB0bXA7Ci0gICAgICAgIHRtcCA9IHppcF9zZWFyY2hvcmRlclszXTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzNdID0gemlwX3NlYXJjaG9yZGVyWzRdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbNF0gPSB0bXA7Ci0gICAgfQogCiAgICAgbW9kID0gUHlNb2R1bGVfQ3JlYXRlKCZ6aXBpbXBvcnRtb2R1bGUpOwogICAgIGlmIChtb2QgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggMGQyZTE4OC4uMTk5N2I0MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTgyLDEyICs4MiwxMSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSB6bGliCiBjbGFzcyB6bGliLkNvbXByZXNzICJjb21wb2JqZWN0ICoiICImQ29tcHR5cGUiCiBjbGFzcyB6bGliLkRlY29tcHJlc3MgImNvbXBvYmplY3QgKiIgIiZEZWNvbXB0eXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmZkNGMzNDA1NzNiYTkxZF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MDkzOTM1MTE1YzNlMzE1OF0qLwogCiBzdGF0aWMgY29tcG9iamVjdCAqCiBuZXdjb21wb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKQEAgLTI4MSw4ICsyODAsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsIHVuc2lnbmVkIGludCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllNTQ2NGU3MmRmOWNiNWYgaW5wdXQ9MGY0YjlhYmI3MTAzZjUwZV0qLworemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDRkMDk4N2YzNDI5NTc0IGlucHV0PTBmNGI5YWJiNzEwM2Y1MGVdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0X3N0ciA9IE5VTEw7CiAgICAgQnl0ZSAqaW5wdXQ7CkBAIC00MTEsOCArNDExLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODllNWE2YzE0NDljYWE5ZSBpbnB1dD1iMDM0ODQ3Zjg4MjFmNmFmXSovCit6bGliX2NvbXByZXNzb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGxldmVsLCBpbnQgbWV0aG9kLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjk0OWJiYjlhNTcyM2NjZCBpbnB1dD1iMDM0ODQ3Zjg4MjFmNmFmXSovCiB7CiAgICAgY29tcG9iamVjdCAqc2VsZiA9IE5VTEw7CiAgICAgaW50IGVycjsKQEAgLTcwNCw4ICs3MDUsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1NWNjY2M5MDg3YmZlNTUgaW5wdXQ9MDJjZmMwNDczNzdjZWM4Nl0qLworemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI4MmUyYTJjMTlmNWZlN2IgaW5wdXQ9MDJjZmMwNDczNzdjZWM4Nl0qLwogewogICAgIGludCBlcnI7CiAgICAgdW5zaWduZWQgaW50IG9sZF9sZW5ndGgsIGxlbmd0aCA9IERFRl9CVUZfU0laRTsKZGlmZiAtLWdpdCBhL09iamVjdHMvUkVBRE1FIGIvT2JqZWN0cy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0YjEwMwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1NvdXJjZSBmaWxlcyBmb3IgdmFyaW91cyBidWlsdGluIG9iamVjdHMKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCBjYWJiYWY1Li4zMWNjMGE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC0zMDUsNyArMzA1LDcgQEAKICAgICAgICAgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMIHx8CiAgICAgICAgICgoKnBiLT5iZl9nZXRidWZmZXIpKG9iaiwgJnZpZXcsIFB5QlVGX1dSSVRBQkxFKSAhPSAwKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIGEgd3JpdGFibGUgYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgd3JpdGFibGUgYnl0ZXMtbGlrZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMzI0LDcgKzMyNCw3IEBACiAKICAgICBpZiAocGIgPT0gTlVMTCB8fCBwYi0+YmZfZ2V0YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMTAwcyciLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzNywxNiArMzM3LDM1IEBACiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwogCi0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgcmV0dXJuICh2aWV3LT5uZGltID09IDEpOworICAgIC8qIDEpIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUKKyAgICAgICAyKSBpdGVtc2l6ZSA+IDAKKyAgICAgICAzKSBsZW4gPSAwIDw9PT4gZXhpc3RzIGk6IHNoYXBlW2ldID0gMCAqLworICAgIGlmICh2aWV3LT5sZW4gPT0gMCkgcmV0dXJuIDE7CisgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgeyAgLyogQy1jb250aWd1b3VzIGJ5IGRlZmluaXRpb24gKi8KKyAgICAgICAgLyogVHJpdmlhbGx5IEYtY29udGlndW91cyAqLworICAgICAgICBpZiAodmlldy0+bmRpbSA8PSAxKSByZXR1cm4gMTsKKworICAgICAgICAvKiBuZGltID4gMSBpbXBsaWVzIHNoYXBlICE9IE5VTEwgKi8KKyAgICAgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOworCisgICAgICAgIC8qIEVmZmVjdGl2ZWx5IDEtZCAqLworICAgICAgICBzZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgeworICAgICAgICAgICAgaWYgKHZpZXctPnNoYXBlW2ldID4gMSkgc2QgKz0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2QgPD0gMTsKKyAgICB9CisKKyAgICAvKiBzdHJpZGVzICE9IE5VTEwgaW1wbGllcyBib3RoIG9mIHRoZXNlICovCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgIT0gTlVMTCk7CiAKICAgICBzZCA9IHZpZXctPml0ZW1zaXplOwotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHJldHVybiAodmlldy0+c2hhcGVbMF0gPT0gMSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkID09IHZpZXctPnN0cmlkZXNbMF0pOwogICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgewogICAgICAgICBkaW0gPSB2aWV3LT5zaGFwZVtpXTsKLSAgICAgICAgaWYgKGRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXNbaV0gIT0gc2QpIHJldHVybiAwOworICAgICAgICBpZiAoZGltID4gMSAmJiB2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBzZCAqPSBkaW07CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMzU4LDE2ICszNzcsMjIgQEAKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CiAKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKSByZXR1cm4gMTsKKyAgICAvKiAxKSBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplCisgICAgICAgMikgaXRlbXNpemUgPiAwCisgICAgICAgMykgbGVuID0gMCA8PT0+IGV4aXN0cyBpOiBzaGFwZVtpXSA9IDAgKi8KKyAgICBpZiAodmlldy0+bGVuID09IDApIHJldHVybiAxOworICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpIHJldHVybiAxOyAvKiBDLWNvbnRpZ3VvdXMgYnkgZGVmaW5pdGlvbiAqLworCisgICAgLyogc3RyaWRlcyAhPSBOVUxMIGltcGxpZXMgYm90aCBvZiB0aGVzZSAqLworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOwogCiAgICAgc2QgPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAxKSByZXR1cm4gKHZpZXctPnNoYXBlWzBdID09IDEgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZCA9PSB2aWV3LT5zdHJpZGVzWzBdKTsKICAgICBmb3IgKGk9dmlldy0+bmRpbS0xOyBpPj0wOyBpLS0pIHsKICAgICAgICAgZGltID0gdmlldy0+c2hhcGVbaV07Ci0gICAgICAgIGlmIChkaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgICAgIGlmICh2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSByZXR1cm4gMDsKKyAgICAgICAgaWYgKGRpbSA+IDEgJiYgdmlldy0+c3RyaWRlc1tpXSAhPSBzZCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgc2QgKj0gZGltOwogICAgIH0KICAgICByZXR1cm4gMTsKQEAgLTQ5OSw4ICs1MjQsOCBAQAogICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoZGVzdCkgfHwKICAgICAgICAgIVB5T2JqZWN0X0NoZWNrQnVmZmVyKHNyYykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBoYXZlIHRoZSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBiZSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC01ODcsNyArNjEyLDEyIEBACiBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCisgICAgaWYgKHZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiUHlCdWZmZXJfRmlsbEluZm86IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGlmICgoKGZsYWdzICYgUHlCVUZfV1JJVEFCTEUpID09IFB5QlVGX1dSSVRBQkxFKSAmJgogICAgICAgICAocmVhZG9ubHkgPT0gMSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLApAQCAtNjYwLDggKzY5MCw5IEBACiAgICAgUHlfREVDUkVGKG1ldGgpOwogCiAgICAgaWYgKHJlc3VsdCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJfX2Zvcm1hdF9fIG1ldGhvZCBkaWQgbm90IHJldHVybiBzdHJpbmciKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAiX19mb3JtYXRfXyBtdXN0IHJldHVybiBhIHN0ciwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTkwNSw2ICs5MzYsMTIgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIHJldHVybiBiaW5hcnlfb3AodiwgdywgTkJfU0xPVChuYl9tYXRyaXhfbXVsdGlwbHkpLCAiQCIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCiB7CiAgICAgcmV0dXJuIGJpbmFyeV9vcCh2LCB3LCBOQl9TTE9UKG5iX2Zsb29yX2RpdmlkZSksICIvLyIpOwpAQCAtOTg1LDYgKzEwMjIsNyBAQAogSU5QTEFDRV9CSU5PUChQeU51bWJlcl9JblBsYWNlTHNoaWZ0LCBuYl9pbnBsYWNlX2xzaGlmdCwgbmJfbHNoaWZ0LCAiPDw9IikKIElOUExBQ0VfQklOT1AoUHlOdW1iZXJfSW5QbGFjZVJzaGlmdCwgbmJfaW5wbGFjZV9yc2hpZnQsIG5iX3JzaGlmdCwgIj4+PSIpCiBJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdCwgbmJfaW5wbGFjZV9zdWJ0cmFjdCwgbmJfc3VidHJhY3QsICItPSIpCitJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luTWF0cml4TXVsdGlwbHksIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LCBuYl9tYXRyaXhfbXVsdGlwbHksICJAPSIpCiAKIFB5T2JqZWN0ICoKIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCkBAIC0xMDUxLDYgKzEwODksMTMgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KSwKKyAgICAgICAgICAgICAgICAgICAgICBOQl9TTE9UKG5iX21hdHJpeF9tdWx0aXBseSksICJAPSIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKICAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfcmVtYWluZGVyKSwKQEAgLTIwMjgsMzIgKzIwNzMsODIgQEAKICAgICByZXR1cm4gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMobywgYSwgTlVMTCk7CiB9CiAKK1B5T2JqZWN0KgorX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpyZXN1bHQsIGNvbnN0IGNoYXIgKndoZXJlKQoreworICAgIGludCBlcnJfb2NjdXJyZWQgPSAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKTsKKworICAgIGFzc2VydCgoZnVuYyAhPSBOVUxMKSBeICh3aGVyZSAhPSBOVUxMKSk7CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFlcnJfb2NjdXJyZWQpIHsKKyAgICAgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBidWcgaXMgY2F0Y2hlZCBpbiBkZWJ1ZyBtb2RlICovCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJhIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIik7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXJyX29jY3VycmVkKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworCisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKworICAgICAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKKyAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZyBpcyBjYXRjaGVkIGluIGRlYnVnIG1vZGUgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQogewogICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICgoY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGwpICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKLSAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7Ci0jaWZkZWYgTkRFQlVHCi0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJOVUxMIHJlc3VsdCB3aXRob3V0IGVycm9yIGluIFB5T2JqZWN0X0NhbGwiKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgYXNzZXJ0KChyZXN1bHQgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLyogUHlPYmplY3RfQ2FsbCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9vc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CisgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKLSAgICAgICAgICAgICAgICAgZnVuYy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZywga3cpOworCisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMjQ5Miw2ICsyNTg3LDExIEBACiAgICAgaWYgKFB5X1RZUEUoaW5zdCkgPT0gKFB5VHlwZU9iamVjdCAqKWNscykKICAgICAgICAgcmV0dXJuIDE7CiAKKyAgICAvKiBXZSBrbm93IHdoYXQgdHlwZSdzIF9faW5zdGFuY2VjaGVja19fIGRvZXMuICovCisgICAgaWYgKFB5VHlwZV9DaGVja0V4YWN0KGNscykpIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc2luc3RhbmNlKGluc3QsIGNscyk7CisgICAgfQorCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soY2xzKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3QgbjsKQEAgLTI1MzAsNiArMjYzMCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBQcm9iYWJseSBuZXZlciByZWFjaGVkIGFueW1vcmUuICovCiAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc2luc3RhbmNlKGluc3QsIGNscyk7CiB9CiAKQEAgLTI1NTcsNiArMjY1OCwxNCBAQAogICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAorICAgIC8qIFdlIGtub3cgd2hhdCB0eXBlJ3MgX19zdWJjbGFzc2NoZWNrX18gZG9lcy4gKi8KKyAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QoY2xzKSkgeworICAgICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLworICAgICAgICBpZiAoZGVyaXZlZCA9PSBjbHMpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc3N1YmNsYXNzKGRlcml2ZWQsIGNscyk7CisgICAgfQorCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soY2xzKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3QgbjsKQEAgLTI1OTUsNiArMjcwNCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBQcm9iYWJseSBuZXZlciByZWFjaGVkIGFueW1vcmUuICovCiAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc3N1YmNsYXNzKGRlcml2ZWQsIGNscyk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDJlNDdhMWMuLjQ5ZGIzNjcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtNCw2ICs0LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgImJ5dGVzb2JqZWN0LmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKworLypbY2xpbmljIGlucHV0XQorY2xhc3MgYnl0ZWFycmF5ICJQeUJ5dGVBcnJheU9iamVjdCAqIiAiJlB5Qnl0ZUFycmF5X1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01NTM1Yjc3YzM3YTExOWUwXSovCiAKIGNoYXIgX1B5Qnl0ZUFycmF5X2VtcHR5X3N0cmluZ1tdID0gIiI7CiAKQEAgLTU0LDE4ICs2MSwxNyBAQAogc3RhdGljIGludAogYnl0ZWFycmF5X2dldGJ1ZmZlcihQeUJ5dGVBcnJheU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpbnQgcmV0OwogICAgIHZvaWQgKnB0cjsKICAgICBpZiAodmlldyA9PSBOVUxMKSB7Ci0gICAgICAgIG9iai0+b2JfZXhwb3J0cysrOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImJ5dGVhcnJheV9nZXRidWZmZXI6IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwdHIgPSAodm9pZCAqKSBQeUJ5dGVBcnJheV9BU19TVFJJTkcob2JqKTsKLSAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgcHRyLCBQeV9TSVpFKG9iaiksIDAsIGZsYWdzKTsKLSAgICBpZiAocmV0ID49IDApIHsKLSAgICAgICAgb2JqLT5vYl9leHBvcnRzKys7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgLyogY2Fubm90IGZhaWwgaWYgdmlldyAhPSBOVUxMIGFuZCByZWFkb25seSA9PSAwICovCisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIHB0ciwgUHlfU0laRShvYmopLCAwLCBmbGFncyk7CisgICAgb2JqLT5vYl9leHBvcnRzKys7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04NSw2ICs5MSw4IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpbmNsdWRlICJjbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCIKKwogLyogRGlyZWN0IEFQSSBmdW5jdGlvbnMgKi8KIAogUHlPYmplY3QgKgpAQCAtMjcxLDYgKzI3OSwzMSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfZm9ybWF0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYnl0ZXNfaW4sICpieXRlc19vdXQsICpyZXM7CisgICAgY2hhciAqYnl0ZXN0cmluZzsKKworICAgIGlmIChzZWxmID09IE5VTEwgfHwgIVB5Qnl0ZUFycmF5X0NoZWNrKHNlbGYpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGJ5dGVzdHJpbmcgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CisgICAgYnl0ZXNfaW4gPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXN0cmluZyk7CisgICAgaWYgKGJ5dGVzX2luID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGJ5dGVzX291dCA9IF9QeUJ5dGVzX0Zvcm1hdChieXRlc19pbiwgYXJncyk7CisgICAgUHlfREVDUkVGKGJ5dGVzX2luKTsKKyAgICBpZiAoYnl0ZXNfb3V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3QoYnl0ZXNfb3V0KTsKKyAgICBQeV9ERUNSRUYoYnl0ZXNfb3V0KTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXM7Cit9CisKIC8qIEZ1bmN0aW9ucyBzdHVmZmVkIGludG8gdGhlIHR5cGUgb2JqZWN0ICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC00MjUsNyArNDU4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGluZGV4KS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KQEAgLTYzMCw3ICs2NjUsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VyIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaW5kZXgpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMTEwOCw3ICsxMTQ1LDcgQEAKICAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0xMTI3LDE1ICsxMTY0LDMwIEBACiAgICAgICAgIHN1YiA9ICZieXRlOwogICAgICAgICBzdWJfbGVuID0gMTsKICAgICB9CisgICAgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7CiAKLSAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKKyAgICAgICAgcmVzID0gLTE7CisgICAgLyogSXNzdWUgIzIzNTczOiBGSVhNRSwgd2luZG93cyBoYXMgbm8gbWVtcmNocigpICovCisgICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxICYmIGRpciA+IDApIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOworICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCisgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgRkFTVF9TRUFSQ0gpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIH0KIAogICAgIGlmIChzdWJvYmopCiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CkBAIC0xMjA4LDI2ICsxMjYwLDM0IEBACiAgICAgcmV0dXJuIGNvdW50X29iajsKIH0KIAotUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKLSJCLmNsZWFyKCkgLT4gTm9uZVxuXAotXG5cCi1SZW1vdmUgYWxsIGl0ZW1zIGZyb20gQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5jbGVhcgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfY2xlYXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfY2xlYXJfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWU1MjRmZDMzMGFiY2RjMThdKi8KIHsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3B5X19kb2NfXywKLSJCLmNvcHkoKSAtPiBieXRlYXJyYXlcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmNvcHkKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisKK1JldHVybiBhIGNvcHkgb2YgQi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorYnl0ZWFycmF5X2NvcHlfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTZkNWQyOTc1YWEwZjMzZjNdKi8KIHsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKChQeU9iamVjdCAqKXNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7CkBAIC0xNDQ2LDM2ICsxNTA2LDQyIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHRyYW5zbGF0ZV9fZG9jX18sCi0iQi50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIsIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGVcblwKLW9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZ1xuXAotY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG5cCi10YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnRyYW5zbGF0ZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICB0YWJsZTogb2JqZWN0CisgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCisgICAgWworICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKKyAgICBdCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KKworQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK1RoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiZWJjODZhOWExZmYwODMgaW5wdXQ9Yjc0OWFkODVmNDg2MDgyNF0qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwotICAgIGNvbnN0IGNoYXIgKnRhYmxlOworICAgIGNvbnN0IGNoYXIgKnRhYmxlX2NoYXJzOwogICAgIFB5X3NzaXplX3QgaSwgYzsKICAgICBQeU9iamVjdCAqaW5wdXRfb2JqID0gKFB5T2JqZWN0KilzZWxmOwogICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydDsKICAgICBQeV9zc2l6ZV90IGlubGVuOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB0cmFuc190YWJsZVsyNTZdOwotICAgIFB5T2JqZWN0ICp0YWJsZW9iaiA9IE5VTEwsICpkZWxvYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciB2dGFibGUsIHZkZWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cmFuc2xhdGUiLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhYmxlb2JqLCAmZGVsb2JqKSkKLSAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICh0YWJsZW9iaiA9PSBQeV9Ob25lKSB7CisgICAgaWYgKHRhYmxlID09IFB5X05vbmUpIHsKKyAgICAgICAgdGFibGVfY2hhcnMgPSBOVUxMOwogICAgICAgICB0YWJsZSA9IE5VTEw7Ci0gICAgICAgIHRhYmxlb2JqID0gTlVMTDsKLSAgICB9IGVsc2UgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZW9iaiwgJnZ0YWJsZSwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgfSBlbHNlIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGUsICZ2dGFibGUsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAodnRhYmxlLmxlbiAhPSAyNTYpIHsKQEAgLTE0ODQsMTIgKzE1NTAsMTIgQEAKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ0YWJsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICB0YWJsZSA9IChjb25zdCBjaGFyKil2dGFibGUuYnVmOworICAgICAgICB0YWJsZV9jaGFycyA9IChjb25zdCBjaGFyKil2dGFibGUuYnVmOwogICAgIH0KIAotICAgIGlmIChkZWxvYmogIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbG9iaiwgJnZkZWwsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewotICAgICAgICAgICAgaWYgKHRhYmxlb2JqICE9IE5VTEwpCisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihkZWxldGVjaGFycywgJnZkZWwsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICAgICAgaWYgKHRhYmxlICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNTA2LDIxICsxNTcyLDIxIEBACiAgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpbnB1dF9vYmopOwogCi0gICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGUgIT0gTlVMTCkgeworICAgIGlmICh2ZGVsLmxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKICAgICAgICAgLyogSWYgbm8gZGVsZXRpb25zIGFyZSByZXF1aXJlZCwgdXNlIGZhc3RlciBjb2RlICovCiAgICAgICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwotICAgICAgICAgICAgKm91dHB1dCsrID0gdGFibGVbY107CisgICAgICAgICAgICAqb3V0cHV0KysgPSB0YWJsZV9jaGFyc1tjXTsKICAgICAgICAgfQogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKHRhYmxlID09IE5VTEwpIHsKKyAgICBpZiAodGFibGVfY2hhcnMgPT0gTlVMTCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKGkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKLSAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0sodGFibGVbaV0pOworICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZV9jaGFyc1tpXSk7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHZkZWwubGVuOyBpKyspCkBAIC0xNTQwLDE4ICsxNjA2LDM2IEBACiAgICAgICAgIH0KIAogZG9uZToKLSAgICBpZiAodGFibGVvYmogIT0gTlVMTCkKKyAgICBpZiAodGFibGUgIT0gTlVMTCkKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKLSAgICBpZiAoZGVsb2JqICE9IE5VTEwpCisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpCiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZkZWwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorCitAc3RhdGljbWV0aG9kCitieXRlYXJyYXkubWFrZXRyYW5zCisKKyAgICBmcm06IFB5X2J1ZmZlcgorICAgIHRvOiBQeV9idWZmZXIKKyAgICAvCisKK1JldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC4KKworVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0Cit0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by4KKworVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkZjI2N2Q5OWY1NmIxNWUgaW5wdXQ9NTkyNWE4MWQyZmJiZjE1MV0qLwogewotICAgICAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhhcmdzKTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhmcm0sIHRvKTsKIH0KIAogCkBAIC0yMDQyLDYxICsyMTI2LDYzIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLAotIkIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSkgLT4gYnl0ZWFycmF5XG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uXG5cCi1vbGQgcmVwbGFjZWQgYnkgbmV3LiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzXG5cCi1naXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJlcGxhY2UKKworICAgIG9sZDogUHlfYnVmZmVyCisgICAgbmV3OiBQeV9idWZmZXIKKyAgICBjb3VudDogUHlfc3NpemVfdCA9IC0xCisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LgorCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZQorcmVwbGFjZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVwbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcmVwbGFjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM5ODg0YzRkYzU5NDEyYSBpbnB1dD1hYTM3OWQ5ODg2MzdjN2ZiXSovCiB7Ci0gICAgUHlPYmplY3QgKnJlczsKLSAgICBQeV9idWZmZXIgb2xkID0ge05VTEwsIE5VTEx9OwotICAgIFB5X2J1ZmZlciBuZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsICZvbGQsICZuZXcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLmJ1Ziwgb2xkLmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LmJ1ZiwgbmV3LmxlbiwgY291bnQpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZUFycmF5T2JqZWN0ICopIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCi1QeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCi1JZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXAotKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3BsaXQKKworICAgIHNlcDogb2JqZWN0ID0gTm9uZQorICAgICAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LgorICAgICAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZWFycmF5X3NwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzM2UyY2YzODVkOWEwNGQgaW5wdXQ9MjRmODI2NjlmNDFiZjUyM10qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKLSAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnNwbGl0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJvYmosICZtYXhzcGxpdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChtYXhzcGxpdCA8IDApCiAgICAgICAgIG1heHNwbGl0ID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoc3Vib2JqID09IFB5X05vbmUpCisgICAgaWYgKHNlcCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMjEwOCwxOSArMjE5NCwzMCBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKLSJCLnBhcnRpdGlvbihzZXApIC0+IChoZWFkLCBzZXAsIHRhaWwpXG5cCi1cblwKLVNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gQiwgYW5kIHJldHVybiB0aGUgcGFydCBiZWZvcmUgaXQsXG5cCi10aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcblwKLWZvdW5kLCByZXR1cm5zIEIgYW5kIHR3byBlbXB0eSBieXRlYXJyYXkgb2JqZWN0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5wYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgc2VwOiBvYmplY3QKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZWFycmF5IGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci4KKworVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVhcnJheS4gSWYgdGhlIHNlcGFyYXRvciBpcworZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZQorc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWwKK2J5dGVhcnJheSBvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlYXJyYXkgb2JqZWN0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9wYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTdkN2ZlMzdiMTY5NmQ1MDZdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIAotICAgIGJ5dGVzZXAgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KHNlcF9vYmopOworICAgIGJ5dGVzZXAgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KHNlcCk7CiAgICAgaWYgKCEgYnl0ZXNlcCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIxMzUsMjAgKzIyMzIsMzAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCi0iQi5ycGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIsXG5cCi1hbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGVcblwKLXBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyB0d28gZW1wdHlcblwKLWJ5dGVhcnJheSBvYmplY3RzIGFuZCBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJwYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgc2VwOiBvYmplY3QKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LCBzdGFydGluZyBhbmQgdGhlIGVuZC4KK0lmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZQorc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5CitvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZWFycmF5IG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwX29iaikKK2J5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9OWI4Y2Q1NDBjMWI3NTg1M10qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCi0gICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwX29iaik7CisgICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwKTsKICAgICBpZiAoISBieXRlc2VwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjE2MywzNSArMjI3MCwzMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBieXRlYXJyYXlzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAotc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yc3BsaXQgPSBieXRlYXJyYXkuc3BsaXQKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuCisKK1NwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheSBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNTVlMGI1YTAzY2I2MTkwIGlucHV0PWE2ODI4NmU0ZGQ2OTJmZmVdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMjIwMywxMiArMjMwNiwxNyBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocmV2ZXJzZV9fZG9jX18sCi0iQi5yZXZlcnNlKCkgLT4gTm9uZVxuXAotXG5cCi1SZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmV2ZXJzZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHZhbHVlcyBpbiBCIGluIHBsYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JldmVyc2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NzkzM2E0OTliODU5N2JkMV0qLwogewogICAgIGNoYXIgc3dhcCwgKmhlYWQsICp0YWlsOwogICAgIFB5X3NzaXplX3QgaSwgaiwgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yMjI1LDU3ICsyMzMzLDc0IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihpbnNlcnRfX2RvY19fLAotIkIuaW5zZXJ0KGluZGV4LCBpbnQpIC0+IE5vbmVcblwKLVxuXAotSW5zZXJ0IGEgc2luZ2xlIGl0ZW0gaW50byB0aGUgYnl0ZWFycmF5IGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguIik7Ci1zdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2luc2VydChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnZhbHVlOwotICAgIGludCBpdmFsOwotICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwotICAgIGNoYXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwgJndoZXJlLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGJ5dGVzdmFsdWVfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50JworICAgIGNvbnZlcnRlciA9ICdfZ2V0Ynl0ZXZhbHVlJworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjljMmU3YzI2YzIxMjgxMl0qLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5pbnNlcnQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaW5kZXg6IFB5X3NzaXplX3QKKyAgICAgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC4KKyAgICBpdGVtOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSBpdGVtIHRvIGJlIGluc2VydGVkLgorICAgIC8KKworSW5zZXJ0IGEgc2luZ2xlIGl0ZW0gaW50byB0aGUgYnl0ZWFycmF5IGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9ODMzNzY2ODM2YmEzMGUxZV0qLworeworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgY2hhciAqYnVmOwogCiAgICAgaWYgKG4gPT0gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIG9iamVjdHMgdG8gYnl0ZWFycmF5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIV9nZXRieXRldmFsdWUodmFsdWUsICZpdmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuICsgMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAKLSAgICBpZiAod2hlcmUgPCAwKSB7Ci0gICAgICAgIHdoZXJlICs9IG47Ci0gICAgICAgIGlmICh3aGVyZSA8IDApCi0gICAgICAgICAgICB3aGVyZSA9IDA7CisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCArPSBuOworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KLSAgICBpZiAod2hlcmUgPiBuKQotICAgICAgICB3aGVyZSA9IG47Ci0gICAgbWVtbW92ZShidWYgKyB3aGVyZSArIDEsIGJ1ZiArIHdoZXJlLCBuIC0gd2hlcmUpOwotICAgIGJ1Zlt3aGVyZV0gPSBpdmFsOworICAgIGlmIChpbmRleCA+IG4pCisgICAgICAgIGluZGV4ID0gbjsKKyAgICBtZW1tb3ZlKGJ1ZiArIGluZGV4ICsgMSwgYnVmICsgaW5kZXgsIG4gLSBpbmRleCk7CisgICAgYnVmW2luZGV4XSA9IGl0ZW07CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGFwcGVuZF9fZG9jX18sCi0iQi5hcHBlbmQoaW50KSAtPiBOb25lXG5cCi1cblwKLUFwcGVuZCBhIHNpbmdsZSBpdGVtIHRvIHRoZSBlbmQgb2YgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5hcHBlbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaXRlbTogYnl0ZXN2YWx1ZQorICAgICAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4KKyAgICAvCisKK0FwcGVuZCBhIHNpbmdsZSBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9hcHBlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfYXBwZW5kX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBpdGVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9YWU1NmVhODczODA0MDdjY10qLwogewotICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogCi0gICAgaWYgKCEgX2dldGJ5dGV2YWx1ZShhcmcsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuID09IFBZX1NTSVpFX1RfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBvYmplY3RzIHRvIGJ5dGVhcnJheSIpOwpAQCAtMjI4NCwxOCArMjQwOSwyNSBAQAogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiArIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZilbbl0gPSB2YWx1ZTsKKyAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZilbbl0gPSBpdGVtOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihleHRlbmRfX2RvY19fLAotIkIuZXh0ZW5kKGl0ZXJhYmxlX29mX2ludHMpIC0+IE5vbmVcblwKLVxuXAotQXBwZW5kIGFsbCB0aGUgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmF0b3Igb3Igc2VxdWVuY2UgdG8gdGhlXG5cCi1lbmQgb2YgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5leHRlbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaXRlcmFibGVfb2ZfaW50czogb2JqZWN0CisgICAgICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuCisgICAgLworCitBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2V4dGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2ludHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jZTgzYTVkNzViNzBkODUwXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbSwgKmJ5dGVhcnJheV9vYmo7CiAgICAgUHlfc3NpemVfdCBidWZfc2l6ZSA9IDAsIGxlbiA9IDA7CkBAIC0yMzAzLDE5ICsyNDM1LDE5IEBACiAgICAgY2hhciAqYnVmOwogCiAgICAgLyogYnl0ZWFycmF5X3NldHNsaWNlIGNvZGUgb25seSBhY2NlcHRzIHNvbWV0aGluZyBzdXBwb3J0aW5nIFBFUCAzMTE4LiAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpKSB7Ci0gICAgICAgIGlmIChieXRlYXJyYXlfc2V0c2xpY2Uoc2VsZiwgUHlfU0laRShzZWxmKSwgUHlfU0laRShzZWxmKSwgYXJnKSA9PSAtMSkKKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoaXRlcmFibGVfb2ZfaW50cykpIHsKKyAgICAgICAgaWYgKGJ5dGVhcnJheV9zZXRzbGljZShzZWxmLCBQeV9TSVpFKHNlbGYpLCBQeV9TSVpFKHNlbGYpLCBpdGVyYWJsZV9vZl9pbnRzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihhcmcpOworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZV9vZl9pbnRzKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIGFyZ3VtZW50LiAzMiBpcyBhcmJpdHJhcnkuICovCi0gICAgYnVmX3NpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KGFyZywgMzIpOworICAgIGJ1Zl9zaXplID0gUHlPYmplY3RfTGVuZ3RoSGludChpdGVyYWJsZV9vZl9pbnRzLCAzMik7CiAgICAgaWYgKGJ1Zl9zaXplID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM2NywyOSArMjQ5OSwzNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocG9wX19kb2NfXywKLSJCLnBvcChbaW5kZXhdKSAtPiBpbnRcblwKLVxuXAotUmVtb3ZlIGFuZCByZXR1cm4gYSBzaW5nbGUgaXRlbSBmcm9tIEIuIElmIG5vIGluZGV4XG5cCi1hcmd1bWVudCBpcyBnaXZlbiwgd2lsbCBwb3AgdGhlIGxhc3QgdmFsdWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucG9wCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIGluZGV4OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLgorICAgIC8KKworUmVtb3ZlIGFuZCByZXR1cm4gYSBzaW5nbGUgaXRlbSBmcm9tIEIuCisKK0lmIG5vIGluZGV4IGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCBpdGVtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3BvcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcG9wX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0wNzk3ZTZjMGNhOWQ1YTg1XSovCiB7CiAgICAgaW50IHZhbHVlOwotICAgIFB5X3NzaXplX3Qgd2hlcmUgPSAtMSwgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsICZ3aGVyZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3AgZnJvbSBlbXB0eSBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3aGVyZSA8IDApCi0gICAgICAgIHdoZXJlICs9IFB5X1NJWkUoc2VsZik7Ci0gICAgaWYgKHdoZXJlIDwgMCB8fCB3aGVyZSA+PSBQeV9TSVpFKHNlbGYpKSB7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggKz0gUHlfU0laRShzZWxmKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJwb3AgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIzOTcsMjggKzI1MzYsMzIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgdmFsdWUgPSBidWZbd2hlcmVdOwotICAgIG1lbW1vdmUoYnVmICsgd2hlcmUsIGJ1ZiArIHdoZXJlICsgMSwgbiAtIHdoZXJlKTsKKyAgICB2YWx1ZSA9IGJ1ZltpbmRleF07CisgICAgbWVtbW92ZShidWYgKyBpbmRleCwgYnVmICsgaW5kZXggKyAxLCBuIC0gaW5kZXgpOwogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiAtIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKCh1bnNpZ25lZCBjaGFyKXZhbHVlKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlbW92ZV9fZG9jX18sCi0iQi5yZW1vdmUoaW50KSAtPiBOb25lXG5cCi1cblwKLVJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbHVlIGluIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmVtb3ZlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHZhbHVlOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuCisgICAgLworCitSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSB2YWx1ZSBpbiB0aGUgYnl0ZWFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlbW92ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2J5dGVhcnJheV9yZW1vdmVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9NDc1NjBiMTFmZDg1NmMyNF0qLwogewotICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IHdoZXJlLCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAKLSAgICBpZiAoISBfZ2V0Ynl0ZXZhbHVlKGFyZywgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBmb3IgKHdoZXJlID0gMDsgd2hlcmUgPCBuOyB3aGVyZSsrKSB7CiAgICAgICAgIGlmIChidWZbd2hlcmVdID09IHZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDU5LDEzMiArMjYwMiwxNDUgQEAKICAgICByZXR1cm4gaSArIDE7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpcF9fZG9jX18sCi0iQi5zdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudFxuXAotYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbmV3IGJ5dGVhcnJheS5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3RyaXBfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MDQxMjY2MWEzNGFkNWEgaW5wdXQ9ZWY3YmI1OWIwOWMyMWQ2Ml0qLwogewotICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYXJnc2l6ZTsKLSAgICBjaGFyICpteXB0ciwgKmFyZ3B0cjsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKLSAgICBQeV9idWZmZXIgdmFyZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICBsZWZ0ID0gbHN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOworICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGJ5dGVzcHRyLCBieXRlc2xlbik7CiAgICAgaWYgKGxlZnQgPT0gbXlzaXplKQogICAgICAgICByaWdodCA9IGxlZnQ7CiAgICAgZWxzZQotICAgICAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYXJncHRyLCBhcmdzaXplKTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgICAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIgKyBsZWZ0LCByaWdodCAtIGxlZnQpOwogfQogCi1QeURvY19TVFJWQVIobHN0cmlwX19kb2NfXywKLSJCLmxzdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIGxlYWRpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5sc3RyaXAKKworICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9sc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X2xzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDAwNWM5ZDBhYjkwOWU2NiBpbnB1dD04MDg0M2Y5NzVkZDdjNDgwXSovCiB7Ci0gICAgUHlfc3NpemVfdCBsZWZ0LCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86bHN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICBsZWZ0ID0gbHN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOworICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGJ5dGVzcHRyLCBieXRlc2xlbik7CiAgICAgcmlnaHQgPSBteXNpemU7Ci0gICAgaWYgKGFyZyAhPSBQeV9Ob25lKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIgKyBsZWZ0LCByaWdodCAtIGxlZnQpOwogfQogCi1QeURvY19TVFJWQVIocnN0cmlwX19kb2NfXywKLSJCLnJzdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudFxuXAotYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbmV3IGJ5dGVhcnJheS5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJzdHJpcAorCisgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1N0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yc3RyaXBfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzMGUyZmJkMmY3Mjc2YmQgaW5wdXQ9ZTcyOGI5OTQ5NTRjZmQ5MV0qLwogewotICAgIFB5X3NzaXplX3QgcmlnaHQsIG15c2l6ZSwgYXJnc2l6ZTsKLSAgICBjaGFyICpteXB0ciwgKmFyZ3B0cjsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKLSAgICBQeV9idWZmZXIgdmFyZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJzdHJpcCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgYXJncHRyID0gIlx0XG5cclxmXHYgIjsKLSAgICAgICAgYXJnc2l6ZSA9IDY7CisgICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBieXRlc2xlbjsKKyAgICBjaGFyICpteXB0ciwgKmJ5dGVzcHRyOworICAgIFB5X2J1ZmZlciB2Ynl0ZXM7CisKKyAgICBpZiAoYnl0ZXMgPT0gUHlfTm9uZSkgeworICAgICAgICBieXRlc3B0ciA9ICJcdFxuXHJcZlx2ICI7CisgICAgICAgIGJ5dGVzbGVuID0gNjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJ5dGVzLCAmdmJ5dGVzLCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXJncHRyID0gKGNoYXIgKikgdmFyZy5idWY7Ci0gICAgICAgIGFyZ3NpemUgPSB2YXJnLmxlbjsKKyAgICAgICAgYnl0ZXNwdHIgPSAoY2hhciAqKSB2Ynl0ZXMuYnVmOworICAgICAgICBieXRlc2xlbiA9IHZieXRlcy5sZW47CiAgICAgfQogICAgIG15cHRyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwogICAgIG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgcmlnaHQgPSByc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7Ci0gICAgaWYgKGFyZyAhPSBQeV9Ob25lKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIsIHJpZ2h0KTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlY29kZV9kb2MsCi0iQi5kZWNvZGUoZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKSAtPiBzdHJcblwKLVxuXAotRGVjb2RlIEIgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLiBEZWZhdWx0IGVuY29kaW5nXG5cCi1pcyAndXRmLTgnLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlXG5cCi1hIFVuaWNvZGVEZWNvZGVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJ1xuXAotYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXNcblwKLWFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuZGVjb2RlCisKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3V0Zi04JworICAgICAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS4KKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICdzdHJpY3QnCisgICAgICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGEKKyAgICAgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScKKyAgICAgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQKKyAgICAgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLgorCitEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1N2Q0M2Y0YTAwYjQyYzUgaW5wdXQ9ZjI4ZDhmOTAzMDIwMjU3Yl0qLwogewotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwga3dsaXN0LCAmZW5jb2RpbmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KChQeU9iamVjdCopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIFB5RG9jX1NUUlZBUihhbGxvY19kb2MsCkBAIC0yNTk4LDQ4ICsyNzU0LDQ3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5vYl9hbGxvYyk7CiB9CiAKLVB5RG9jX1NUUlZBUihqb2luX2RvYywKLSJCLmpvaW4oaXRlcmFibGVfb2ZfYnl0ZXMpIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1Db25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzL2J5dGVhcnJheSBvYmplY3RzLCB3aXRoIEJcblwKLWluIGJldHdlZW4gZWFjaCBwYWlyLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmpvaW4KKworICAgIGl0ZXJhYmxlX29mX2J5dGVzOiBvYmplY3QKKyAgICAvCisKK0NvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMvYnl0ZWFycmF5IG9iamVjdHMuCisKK1RoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci4KKworVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBieXRlYXJyYXkgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2pvaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZSkKK2J5dGVhcnJheV9qb2luKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg1MTYzNzBiZjY4YWUwOCBpbnB1dD1hYmE2YjFmOWIzMGZjYjhlXSovCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9ieXRlc19qb2luKHNlbGYsIGl0ZXJhYmxlKTsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKLSJCLnNwbGl0bGluZXMoW2tlZXBlbmRzXSkgLT4gbGlzdCBvZiBsaW5lc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiBCLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuXG5cCi1MaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHNcblwKLWlzIGdpdmVuIGFuZCB0cnVlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnNwbGl0bGluZXMKIAotc3RhdGljIFB5T2JqZWN0KgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKyAgICBrZWVwZW5kczogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVhcnJheSwgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgorCitMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kCit0cnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0bGluZXNfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyMjNjOTRiODk1ZjZhZDkgaW5wdXQ9OGNjYWRlOTQxZTVlYTBiZF0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKLSAgICBpbnQga2VlcGVuZHMgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwKICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGtlZXBlbmRzCiAgICAgICAgICk7CiB9CiAKLVB5RG9jX1NUUlZBUihmcm9taGV4X2RvYywKLSJieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpIC0+IGJ5dGVhcnJheSAoc3RhdGljIG1ldGhvZClcblwKLVxuXAotQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuXG5cCi1TcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG5cCi1FeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpLiIpOwotCiBzdGF0aWMgaW50CiBoZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKIHsKQEAgLTI2NTYsMjQgKzI4MTEsMzcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorYnl0ZWFycmF5LmZyb21oZXgKKworICAgIGNsczogc2VsZih0eXBlPSJQeU9iamVjdCoiKQorICAgIHN0cmluZzogdW5pY29kZQorICAgIC8KKworQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuCisKK1NwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC4KK0V4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KCdCOSAwMUVGJykgLT4gYnl0ZWFycmF5KGInXFx4YjlcXHgwMVxceGVmJykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzZGE2MDEyOWIzNzAwYyBpbnB1dD05MDdiYmQyZDM0ZDkzNjdhXSovCiB7Ci0gICAgUHlPYmplY3QgKm5ld2J5dGVzLCAqaGV4b2JqOworICAgIFB5T2JqZWN0ICpuZXdieXRlczsKICAgICBjaGFyICpidWY7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKICAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBraW5kOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKIAogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3Ynl0ZXMgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CkBAIC0yNzA1LDYgKzI4NzMsMTkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCisiQi5oZXgoKSAtPiBzdHJpbmdcblwKK1xuXAorQ3JlYXRlIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMgZnJvbSBhIGJ5dGVhcnJheSBvYmplY3QuXG5cCitFeGFtcGxlOiBieXRlYXJyYXkoWzB4YjksIDB4MDEsIDB4ZWZdKS5oZXgoKSAtPiAnYjkwMWVmJy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9oZXgoUHlCeXRlc09iamVjdCAqc2VsZikKK3sKKyAgICBjaGFyKiBhcmdidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CisgICAgUHlfc3NpemVfdCBhcmdsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleChhcmdidWYsIGFyZ2xlbik7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29tbW9uX3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQpAQCAtMjc0MSwzMyArMjkyMiw0OSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5Ll9fcmVkdWNlX18gYXMgYnl0ZWFycmF5X3JlZHVjZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD1mYmIwN2RlNGQxMDJhMDNhXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIDIpOwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2V4X2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19yZWR1Y2VfZXhfXyBhcyBieXRlYXJyYXlfcmVkdWNlX2V4CisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHByb3RvOiBpbnQgPSAwCisgICAgLworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PTBlMDkxYTQyY2E2ZGJkOTFdKi8KIHsKLSAgICBpbnQgcHJvdG8gPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgcHJvdG8pOwogfQogCi1QeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKLSJCLl9fc2l6ZW9mX18oKSAtPiBpbnRcblwKLSBcblwKLVJldHVybnMgdGhlIHNpemUgb2YgQiBpbiBtZW1vcnksIGluIGJ5dGVzIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19zaXplb2ZfXyBhcyBieXRlYXJyYXlfc2l6ZW9mCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBieXRlYXJyYXkgb2JqZWN0IGluIG1lbW9yeSwgaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc2l6ZW9mKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorYnl0ZWFycmF5X3NpemVvZl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9NmIyM2QzMDUzNjJiNDYyYl0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0yODAyLDI2ICsyOTk5LDI2IEBACiBzdGF0aWMgUHlNZXRob2REZWYKIGJ5dGVhcnJheV9tZXRob2RzW10gPSB7CiAgICAgeyJfX2FsbG9jX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2FsbG9jLCBNRVRIX05PQVJHUywgYWxsb2NfZG9jfSwKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAotICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsIHJlZHVjZV9leF9kb2N9LAotICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc2l6ZW9mLCBNRVRIX05PQVJHUywgc2l6ZW9mX2RvY30sCi0gICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2FwcGVuZCwgTUVUSF9PLCBhcHBlbmRfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfUkVEVUNFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRURVQ0VfRVhfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NJWkVPRl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfQVBQRU5EX01FVEhPRERFRgogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKLSAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jbGVhciwgTUVUSF9OT0FSR1MsIGNsZWFyX19kb2NfX30sCi0gICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3B5LCBNRVRIX05PQVJHUywgY29weV9fZG9jX199LAorICAgIEJZVEVBUlJBWV9DTEVBUl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRlY29kZV9kb2N9LAorICAgIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywgZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKLSAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZXh0ZW5kLCBNRVRIX08sIGV4dGVuZF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9FWFRFTkRfTUVUSE9EREVGCiAgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKLSAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLAotICAgICBmcm9taGV4X2RvY30sCisgICAgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGCisgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAogICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCi0gICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBpbnNlcnRfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRgogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCiAgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKQEAgLTI4MzYsMzkgKzMwMzMsNTEgQEAKICAgICAgX1B5X2lzdGl0bGVfX2RvY19ffSwKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAotICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfam9pbiwgTUVUSF9PLCBqb2luX2RvY30sCisgICAgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGCiAgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAotICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9sc3RyaXAsIE1FVEhfVkFSQVJHUywgbHN0cmlwX19kb2NfX30sCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLAotICAgICBfUHlfbWFrZXRyYW5zX19kb2NfX30sCi0gICAgeyJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3BhcnRpdGlvbiwgTUVUSF9PLCBwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InBvcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcG9wLCBNRVRIX1ZBUkFSR1MsIHBvcF9fZG9jX199LAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZW1vdmUsIE1FVEhfTywgcmVtb3ZlX19kb2NfX30sCi0gICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIHJlcGxhY2VfX2RvY19ffSwKLSAgICB7InJldmVyc2UiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JldmVyc2UsIE1FVEhfTk9BUkdTLCByZXZlcnNlX19kb2NfX30sCisgICAgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9QQVJUSVRJT05fTUVUSE9EREVGCisgICAgQllURUFSUkFZX1BPUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRgogICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCiAgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAotICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnBhcnRpdGlvbiwgTUVUSF9PLCBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCi0gICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfUlBBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SU1RSSVBfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NQTElUX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRgogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTICwKICAgICAgc3RhcnRzd2l0aF9fZG9jX199LAotICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIHN0cmlwX19kb2NfX30sCisgICAgQllURUFSUkFZX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIHRyYW5zbGF0ZV9fZG9jX199LAorICAgIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKICAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIGlmICghUHlCeXRlQXJyYXlfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICByZXR1cm4gYnl0ZWFycmF5X2Zvcm1hdCgoUHlCeXRlQXJyYXlPYmplY3QgKil2LCB3KTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlYXJyYXlfYXNfbnVtYmVyID0geworICAgIDAsICAgICAgICAgICAgICAvKm5iX2FkZCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfc3VidHJhY3QqLworICAgIDAsICAgICAgICAgICAgICAvKm5iX211bHRpcGx5Ki8KKyAgICBieXRlYXJyYXlfbW9kLCAgLypuYl9yZW1haW5kZXIqLworfTsKKwogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9kb2MsCiAiYnl0ZWFycmF5KGl0ZXJhYmxlX29mX2ludHMpIC0+IGJ5dGVhcnJheVxuXAogYnl0ZWFycmF5KHN0cmluZywgZW5jb2RpbmdbLCBlcnJvcnNdKSAtPiBieXRlYXJyYXlcblwKQEAgLTI4OTcsNyArMzEwNiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCiAgICAgKHJlcHJmdW5jKWJ5dGVhcnJheV9yZXByLCAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZieXRlYXJyYXlfYXNfbnVtYmVyLCAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICZieXRlYXJyYXlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgJmJ5dGVhcnJheV9hc19tYXBwaW5nLCAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KQEAgLTMwMjQsNyArMzIzMyw3IEBACiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5aXRlcl9sZW5ndGhfaGludCwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCiAgICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKLSAgICAgcmVkdWNlX2RvY30sCisgICAgIGJ5dGVhcnJheV9yZWR1Y2VfX2RvY19ffSwKICAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCiAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IDlmZjdhY2UuLmEyOTk5MTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0zNjQsMzkgKzM2NCwyNiBAQAogVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4iKTsKIAogUHlPYmplY3QgKgotX1B5X2J5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqYXJncykKK19QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCiB7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJmcm0gPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIGJ0byA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgY2hhciAqcDsKIAotICAgIGJmcm0ubGVuID0gLTE7Ci0gICAgYnRvLmxlbiA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsICZiZnJtLCAmYnRvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGJmcm0ubGVuICE9IGJ0by5sZW4pIHsKKyAgICBpZiAoZnJtLT5sZW4gIT0gdG8tPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJtYWtldHJhbnMgYXJndW1lbnRzIG11c3QgaGF2ZSBzYW1lIGxlbmd0aCIpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDI1Nik7Ci0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7CiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICBwW2ldID0gKGNoYXIpIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGJmcm0ubGVuOyBpKyspIHsKLSAgICAgICAgcFsoKHVuc2lnbmVkIGNoYXIgKiliZnJtLmJ1ZilbaV1dID0gKChjaGFyICopYnRvLmJ1ZilbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGZybS0+bGVuOyBpKyspIHsKKyAgICAgICAgcFsoKHVuc2lnbmVkIGNoYXIgKilmcm0tPmJ1ZilbaV1dID0gKChjaGFyICopdG8tPmJ1ZilbaV07CiAgICAgfQogCi1kb25lOgotICAgIGlmIChiZnJtLm9iaiAhPSBOVUxMKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiZnJtKTsKLSAgICBpZiAoYmZybS5vYmogIT0gTlVMTCkKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnRvKTsKICAgICByZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc29iamVjdC5jIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCmluZGV4IDU3NjgxNTQuLjZhNmU5MzAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKQEAgLTUsOCArNSwxNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0KiIgIiZQeUJ5dGVzX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYTFkOTEwMmFmYzFiMDBjXSovCisKKyNpbmNsdWRlICJjbGluaWMvYnl0ZXNvYmplY3QuYy5oIgorCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiBQeV9zc2l6ZV90IG51bGxfc3RyaW5ncywgb25lX3N0cmluZ3M7CiAjZW5kaWYKQEAgLTQ0LDYgKzUyLDQ1IEBACiAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCkpIG9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiB0aGUgYHN0cicKICAgIHBhcmFtZXRlciAoZm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpKS4KICovCitzdGF0aWMgUHlPYmplY3QgKgorX1B5Qnl0ZXNfRnJvbVNpemUoUHlfc3NpemVfdCBzaXplLCBpbnQgdXNlX2NhbGxvYykKK3sKKyAgICBQeUJ5dGVzT2JqZWN0ICpvcDsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDAgJiYgKG9wID0gbnVsbHN0cmluZykgIT0gTlVMTCkgeworI2lmZGVmIENPVU5UX0FMTE9DUworICAgICAgICBudWxsX3N0cmluZ3MrKzsKKyNlbmRpZgorICAgICAgICBQeV9JTkNSRUYob3ApOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopb3A7CisgICAgfQorCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLSBQeUJ5dGVzT2JqZWN0X1NJWkUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBzdHJpbmcgaXMgdG9vIGxhcmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIElubGluZSBQeU9iamVjdF9OZXdWYXIgKi8KKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X0NhbGxvYygxLCBQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBlbHNlCisgICAgICAgIG9wID0gKFB5Qnl0ZXNPYmplY3QgKilQeU9iamVjdF9NYWxsb2MoUHlCeXRlc09iamVjdF9TSVpFICsgc2l6ZSk7CisgICAgaWYgKG9wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKKyAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKKyAgICBpZiAoIXVzZV9jYWxsb2MpCisgICAgICAgIG9wLT5vYl9zdmFsW3NpemVdID0gJ1wwJzsKKyAgICAvKiBlbXB0eSBieXRlIHN0cmluZyBzaW5nbGV0b24gKi8KKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIG51bGxzdHJpbmcgPSBvcDsKKyAgICAgICAgUHlfSU5DUkVGKG9wKTsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKK30KKwogUHlPYmplY3QgKgogUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKQEAgLTUzLDEzICsxMDAsNiBAQAogICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChzaXplID09IDAgJiYgKG9wID0gbnVsbHN0cmluZykgIT0gTlVMTCkgewotI2lmZGVmIENPVU5UX0FMTE9DUwotICAgICAgICBudWxsX3N0cmluZ3MrKzsKLSNlbmRpZgotICAgICAgICBQeV9JTkNSRUYob3ApOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopb3A7Ci0gICAgfQogICAgIGlmIChzaXplID09IDEgJiYgc3RyICE9IE5VTEwgJiYKICAgICAgICAgKG9wID0gY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSkgIT0gTlVMTCkKICAgICB7CkBAIC03MCwyNiArMTEwLDE1IEBACiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gUHlCeXRlc09iamVjdF9TSVpFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGUgc3RyaW5nIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBJbmxpbmUgUHlPYmplY3RfTmV3VmFyICovCi0gICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X01BTExPQyhQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMCk7CiAgICAgaWYgKG9wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKLSAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKLSAgICBpZiAoc3RyICE9IE5VTEwpCi0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKLSAgICBvcC0+b2Jfc3ZhbFtzaXplXSA9ICdcMCc7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKKworICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCi0gICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICBudWxsc3RyaW5nID0gb3A7Ci0gICAgICAgIFB5X0lOQ1JFRihvcCk7Ci0gICAgfSBlbHNlIGlmIChzaXplID09IDEgJiYgc3RyICE9IE5VTEwpIHsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIGNoYXJhY3RlcnNbKnN0ciAmIFVDSEFSX01BWF0gPSBvcDsKICAgICAgICAgUHlfSU5DUkVGKG9wKTsKICAgICB9CkBAIC0zNDcsNiArMzc2LDU4MCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKy8qIEhlbHBlcnMgZm9yIGZvcm1hdHN0cmluZyAqLworCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK2dldG5leHRhcmcoUHlPYmplY3QgKmFyZ3MsIFB5X3NzaXplX3QgYXJnbGVuLCBQeV9zc2l6ZV90ICpwX2FyZ2lkeCkKK3sKKyAgICBQeV9zc2l6ZV90IGFyZ2lkeCA9ICpwX2FyZ2lkeDsKKyAgICBpZiAoYXJnaWR4IDwgYXJnbGVuKSB7CisgICAgICAgICgqcF9hcmdpZHgpKys7CisgICAgICAgIGlmIChhcmdsZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeVR1cGxlX0dldEl0ZW0oYXJncywgYXJnaWR4KTsKKyAgICB9CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggYXJndW1lbnRzIGZvciBmb3JtYXQgc3RyaW5nIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEZvcm1hdCBjb2RlcworICogRl9MSlVTVCAgICAgICctJworICogRl9TSUdOICAgICAgICcrJworICogRl9CTEFOSyAgICAgICcgJworICogRl9BTFQgICAgICAgICcjJworICogRl9aRVJPICAgICAgICcwJworICovCisjZGVmaW5lIEZfTEpVU1QgKDE8PDApCisjZGVmaW5lIEZfU0lHTiAgKDE8PDEpCisjZGVmaW5lIEZfQkxBTksgKDE8PDIpCisjZGVmaW5lIEZfQUxUICAgKDE8PDMpCisjZGVmaW5lIEZfWkVSTyAgKDE8PDQpCisKKy8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlCeXRlcyBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3sKKyAgICBjaGFyICpwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAocHJlYyA8IDApCisgICAgICAgIHByZWMgPSA2OworCisgICAgcCA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCB0eXBlLCBwcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzICYgRl9BTFQpID8gUHlfRFRTRl9BTFQgOiAwLCBOVUxMKTsKKworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKyAgICBQeU1lbV9GcmVlKHApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmb3JtYXRsb25nKFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqaW9iajsKKyAgICBpZiAodHlwZSA9PSAnaScpCisgICAgICAgIHR5cGUgPSAnZCc7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRm9ybWF0TG9uZyh2LCBmbGFncyAmIEZfQUxULCBwcmVjLCB0eXBlKTsKKyAgICBpZiAoUHlOdW1iZXJfQ2hlY2sodikpIHsKKyAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciBmb3IgbywgeCwgYW5kIFggKi8KKyAgICAgICAgaWYgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKQorICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KHYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKKyAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5TG9uZ19DaGVjayhpb2JqKSkKKyAgICAgICAgICAgIFB5X0NMRUFSKGlvYmopOworICAgICAgICBpZiAoaW9iaiAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlVbmljb2RlX0Zvcm1hdExvbmcoaW9iaiwgZmxhZ3MgJiBGX0FMVCwgcHJlYywgdHlwZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICIlJSVjIGZvcm1hdDogJXMgaXMgcmVxdWlyZWQsIG5vdCAlLjIwMHMiLCB0eXBlLAorICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpID8gImFuIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiYSBudW1iZXIiLAorICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKK3sKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpIHsKKyAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkgeworICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppb2JqOworICAgICAgICBsb25nIGl2YWw7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciAqLworICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKKyAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coYXJnLCAmb3ZlcmZsb3cpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KGFyZyk7CisgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coaW9iaiwgJm92ZXJmbG93KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW92ZXJmbG93ICYmIGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKG92ZXJmbG93IHx8ICEoMCA8PSBpdmFsICYmIGl2YWwgPD0gMjU1KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMjU2KSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKnAgPSAoY2hhcilpdmFsOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgIG9uRXJyb3I6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmb3JtYXRfb2JqKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICoqcGJ1ZiwgUHlfc3NpemVfdCAqcGxlbikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOworICAgIC8qIGlzIGl0IGEgYnl0ZXMgb2JqZWN0PyAqLworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHYpKSB7CisgICAgICAgICpwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICpwbGVuID0gUHlCeXRlc19HRVRfU0laRSh2KTsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHYpKSB7CisgICAgICAgICpwYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpOworICAgICAgICAqcGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAvKiBkb2VzIGl0IHN1cHBvcnQgX19ieXRlc19fPyAqLworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh2LCAmUHlJZF9fX2J5dGVzX18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnl0ZXNfXyByZXR1cm5lZCBub24tYnl0ZXMgKHR5cGUgJS4yMDBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICAqcGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiUlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKKworICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCB0aGUgaW50cyAmCisgICBjaGFycyBhcmUgZm9ybWF0dGVkLiBYWFggVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gRWFjaCBmb3JtYXR0aW5nCisgICByb3V0aW5lIGRvZXMgYm91bmRzIGNoZWNraW5nIHRvIGVuc3VyZSBubyBvdmVyZmxvdywgYnV0IGEgYmV0dGVyCisgICBzb2x1dGlvbiBtYXkgYmUgdG8gbWFsbG9jIGEgYnVmZmVyIG9mIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2gKKyAgIGZvcm1hdC4gRm9yIG5vdywgdGhlIGN1cnJlbnQgc29sdXRpb24gaXMgc3VmZmljaWVudC4KKyovCisjZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEyMAorCitQeU9iamVjdCAqCitfUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqZm10LCAqcmVzOworICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7CisgICAgUHlfc3NpemVfdCByZXNsZW4sIHJlc2NudCwgZm10Y250OworICAgIGludCBhcmdzX293bmVkID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgIVB5Qnl0ZXNfQ2hlY2soZm9ybWF0KSB8fCBhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhmb3JtYXQpOworICAgIGZtdGNudCA9IFB5Qnl0ZXNfR0VUX1NJWkUoZm9ybWF0KTsKKyAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHJlc2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgYXJnaWR4ID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ2xlbiA9IC0xOworICAgICAgICBhcmdpZHggPSAtMjsKKyAgICB9CisgICAgaWYgKFB5X1RZUEUoYXJncyktPnRwX2FzX21hcHBpbmcgJiYgUHlfVFlQRShhcmdzKS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0ICYmCisgICAgICAgICFQeVR1cGxlX0NoZWNrKGFyZ3MpICYmICFQeUJ5dGVzX0NoZWNrKGFyZ3MpICYmICFQeVVuaWNvZGVfQ2hlY2soYXJncykgJiYKKyAgICAgICAgIVB5Qnl0ZUFycmF5X0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBkaWN0ID0gYXJnczsKKyAgICB9CisgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKKyAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7CisgICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOworICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLworICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgd2lkdGggPSAtMTsKKyAgICAgICAgICAgIGludCBwcmVjID0gLTE7CisgICAgICAgICAgICBpbnQgYyA9ICdcMCc7CisgICAgICAgICAgICBpbnQgZmlsbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBidWYgPSBOVUxMOworICAgICAgICAgICAgaW50IHNpZ247CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CisgICAgICAgICAgICBjaGFyIG9uZWNoYXI7IC8qIEZvciBieXRlX2NvbnZlcnRlcigpICovCisKKyAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgY2hhciAqa2V5c3RhcnQ7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKKworICAgICAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCByZXF1aXJlcyBhIG1hcHBpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICAgICAgLS1mbXRjbnQ7CisgICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXQ7CisgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIGJhbGFuY2VkIHBhcmVudGhlc2VzICovCisgICAgICAgICAgICAgICAgd2hpbGUgKHBjb3VudCA+IDAgJiYgLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKScpCisgICAgICAgICAgICAgICAgICAgICAgICAtLXBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKCcpCisgICAgICAgICAgICAgICAgICAgICAgICArK3Bjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGtleWxlbiA9IGZtdCAtIGtleXN0YXJ0IC0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZm10Y250IDwgMCB8fCBwY291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2V5ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShrZXlzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlsZW4pOworICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfb3duZWQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdzID0gUHlPYmplY3RfR2V0SXRlbShkaWN0LCBrZXkpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnc19vd25lZCA9IDE7CisgICAgICAgICAgICAgICAgYXJnbGVuID0gLTE7CisgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgeworICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gRl9TSUdOOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcgJzogZmxhZ3MgfD0gRl9CTEFOSzsgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSAnIyc6IGZsYWdzIHw9IEZfQUxUOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzogZmxhZ3MgfD0gRl9aRVJPOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKKyAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIHdhbnRzIGludCIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aWR0aCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0xKVVNUOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDAgJiYgaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgIHdpZHRoID0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmZtdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgIHByZWMgPSAwOworICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIGlmIChjID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByZWMgPSBfUHlMb25nX0FzSW50KHYpOworICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAwICYmIGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmZtdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gKElOVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWMgdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gcHJlYyoxMCArIChjIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gLyogcHJlYyAqLworICAgICAgICAgICAgaWYgKGZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2gnIHx8IGMgPT0gJ2wnIHx8IGMgPT0gJ0wnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgIT0gJyUnKSB7CisgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2lnbiA9IDA7CisgICAgICAgICAgICBmaWxsID0gJyAnOworICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICBwYnVmID0gIiUiOworICAgICAgICAgICAgICAgIGxlbiA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAvLyAlciBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYQorICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X0FTQ0lJKHYpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IChjb25zdCBjaGFyICopUHlVbmljb2RlXzFCWVRFX0RBVEEodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKKyAgICAgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRfb2JqKHYsICZwYnVmLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyh2LCBmbGFncywgcHJlYywgYyk7CisgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkodGVtcCkpOworICAgICAgICAgICAgICAgIHBidWYgPSAoY29uc3QgY2hhciAqKVB5VW5pY29kZV8xQllURV9EQVRBKHRlbXApOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRlbXApOworICAgICAgICAgICAgICAgIHNpZ24gPSAxOworICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKKyAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgY2FzZSAnRSc6CisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICAgICAgY2FzZSAnZyc6CisgICAgICAgICAgICBjYXNlICdHJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRlbXApOworICAgICAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGVtcCk7CisgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQorICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgcGJ1ZiA9ICZvbmVjaGFyOworICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVfY29udmVydGVyKHYsICZvbmVjaGFyKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxlbikKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCisgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKKyAgICAgICAgICAgICAgICAgIGMsIGMsCisgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyhmb3JtYXQpKSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfU0lHTikKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcrJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCisgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKKyAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7CisgICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKKyAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKKyAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OworICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CisgICAgICAgICAgICAgICAgcmVzY250LS07CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzY250IC09IDI7CisgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CisgICAgICAgICAgICAgICAgbGVuIC09IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOworICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9NRU1DUFkocmVzLCBwYnVmLCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKyAgICAgICAgICAgIHJlc2NudCAtPSBsZW47CisgICAgICAgICAgICB3aGlsZSAoLS13aWR0aCA+PSBsZW4pIHsKKyAgICAgICAgICAgICAgICAtLXJlc2NudDsKKyAgICAgICAgICAgICAgICAqcmVzKysgPSAnICc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGljdCAmJiAoYXJnaWR4IDwgYXJnbGVuKSAmJiBjICE9ICclJykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgfSAvKiAnJScgKi8KKyAgICB9IC8qIHVudGlsIGVuZCAqLworICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGFyZ3Nfb3duZWQpIHsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbiAtIHJlc2NudCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXN1bHQ7CisKKyBlcnJvcjoKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKiA9LT0gKi8KKwogc3RhdGljIHZvaWQKIGJ5dGVzX2RlYWxsb2MoUHlPYmplY3QgKm9wKQogewpAQCAtNTQwLDggKzExNDMsOCBAQAogICAgIGlmIChsZW4gIT0gTlVMTCkKICAgICAgICAgKmxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqKTsKICAgICBlbHNlIGlmIChzdHJsZW4oKnMpICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShvYmopKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYnl0ZXMgd2l0aCBubyBudWxsIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVtYmVkZGVkIG51bGwgYnl0ZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtODMzLDYgKzE0MzYsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIHN0cmluZyIsIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlB5TG9uZ19UeXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzSW5zdGFuY2UoKFB5T2JqZWN0KiliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUHlMb25nX1R5cGUpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0J5dGVzV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcGFyaXNvbiBiZXR3ZWVuIGJ5dGVzIGFuZCBpbnQiLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKICAgICB9CkBAIC05NTcsNyArMTU3NCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk5NywzNyArMTYxNCwzNCBAQAogI2RlZmluZSBSSUdIVFNUUklQIDEKICNkZWZpbmUgQk9USFNUUklQIDIKIAotLyogQXJyYXlzIGluZGV4ZWQgYnkgYWJvdmUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zcGxpdAogCi0jZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKKyAgICBzZXA6IG9iamVjdCA9IE5vbmUKKyAgICAgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLgorICAgICAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgogCi1QeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuXAotSWYgc2VwIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgTm9uZSwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlXG5cCi1jaGFyYWN0ZXJzIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuXAotSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOworUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiZGU0NGRhY2IzNmVmMmUgaW5wdXQ9OGI4MDliMzkwNzRhYmJmYV0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMTAzNyw4NSArMTY1MSw4NCBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKLSJCLnBhcnRpdGlvbihzZXApIC0+IChoZWFkLCBzZXAsIHRhaWwpXG5cCi1cblwKLVNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gQiwgYW5kIHJldHVybiB0aGUgcGFydCBiZWZvcmUgaXQsXG5cCi10aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcblwKLWZvdW5kLCByZXR1cm5zIEIgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucGFydGl0aW9uCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMuIElmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsCityZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCitpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzCitvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcGFydGl0aW9uKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD1iYzg1NWRjNjNjYTk0OWRlXSovCiB7Ci0gICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXBfb2JqLCAmc2VwLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gc3RyaW5nbGliX3BhcnRpdGlvbigKKyAgICByZXR1cm4gc3RyaW5nbGliX3BhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIHNlcF9vYmosIHNlcC5idWYsIHNlcC5sZW4KKyAgICAgICAgc2VwLT5vYmosIChjb25zdCBjaGFyICopc2VwLT5idWYsIHNlcC0+bGVuCiAgICAgICAgICk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKLSAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCi0iQi5ycGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIsXG5cCi1hbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGVcblwKLXBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyB0d28gZW1wdHlcblwKLWJ5dGVzIG9iamVjdHMgYW5kIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5ycGFydGl0aW9uCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMsIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLiBJZgordGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlCitzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBieXRlcworb2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVzIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JwYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlc19ycGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTkxYjExNGNiYjAyOGU1MCBpbnB1dD02NTg4ZmZmMjYyYTkxNzBlXSovCiB7Ci0gICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXBfb2JqLCAmc2VwLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gc3RyaW5nbGliX3JwYXJ0aXRpb24oCisgICAgcmV0dXJuIHN0cmluZ2xpYl9ycGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgc2VwX29iaiwgc2VwLmJ1Ziwgc2VwLmxlbgorICAgICAgICBzZXAtPm9iaiwgKGNvbnN0IGNoYXIgKilzZXAtPmJ1Ziwgc2VwLT5sZW4KICAgICAgICAgKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOwotICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBieXRlc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlcixcblwKLXN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQiBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuXG5cCi1JZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXAotKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yc3BsaXQgPSBieXRlcy5zcGxpdAogCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorCitTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBpZiAoc3Vib2JqID09IFB5X05vbmUpCisgICAgaWYgKHNlcCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgbWF4c3BsaXQpOwotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0xMTI2LDE2ICsxNzM5LDI2IEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKGpvaW5fX2RvY19fLAotIkIuam9pbihpdGVyYWJsZV9vZl9ieXRlcykgLT4gYnl0ZXNcblwKLVxuXAotQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcyBvYmplY3RzLCB3aXRoIEIgaW4gYmV0d2VlbiBlYWNoIHBhaXIuXG5cCi1FeGFtcGxlOiBiJy4nLmpvaW4oW2InYWInLCBiJ3BxJywgYidycyddKSAtPiBiJ2FiLnBxLnJzJy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLmpvaW4KKworICAgIGl0ZXJhYmxlX29mX2J5dGVzOiBvYmplY3QKKyAgICAvCisKK0NvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy4KKworVGhlIGJ5dGVzIHdob3NlIG1ldGhvZCBpcyBjYWxsZWQgaXMgaW5zZXJ0ZWQgaW4gYmV0d2VlbiBlYWNoIHBhaXIuCisKK1RoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBuZXcgYnl0ZXMgb2JqZWN0LgorCitFeGFtcGxlOiBiJy4nLmpvaW4oW2InYWInLCBiJ3BxJywgYidycyddKSAtPiBiJ2FiLnBxLnJzJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZSkKK2J5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9ieXRlc19qb2luKHNlbGYsIGl0ZXJhYmxlKTsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTExNDMsNyArMTc2Niw3IEBACiB7CiAgICAgYXNzZXJ0KHNlcCAhPSBOVUxMICYmIFB5Qnl0ZXNfQ2hlY2soc2VwKSk7CiAgICAgYXNzZXJ0KHggIT0gTlVMTCk7Ci0gICAgcmV0dXJuIGJ5dGVzX2pvaW4oc2VwLCB4KTsKKyAgICByZXR1cm4gYnl0ZXNfam9pbigoUHlCeXRlc09iamVjdCopc2VwLCB4KTsKIH0KIAogLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KQEAgLTExNjgsNyArMTc5MSw3IEBACiAgICAgY2hhciBieXRlOwogICAgIFB5X2J1ZmZlciBzdWJidWY7CiAgICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKICAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKICAgICBQeV9zc2l6ZV90IHJlczsKIApAQCAtMTE4NywxNSArMTgxMCwzMCBAQAogICAgICAgICBzdWIgPSAmYnl0ZTsKICAgICAgICAgc3ViX2xlbiA9IDE7CiAgICAgfQorICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7CiAKLSAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICAvKiBJc3N1ZSAjMjM1NzM6IEZJWE1FLCB3aW5kb3dzIGhhcyBubyBtZW1yY2hyKCkgKi8KKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEgJiYgZGlyID4gMCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7CisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIEZBU1RfU0VBUkNIKTsKKyAgICAgICAgaWYgKHJlcyA+PSAwKQorICAgICAgICAgICAgcmVzICs9IHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQogCiAgICAgaWYgKHN1Ym9iaikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKQEAgLTEzNTQsNjIgKzE5OTIsNjkgQEAKIAogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLWRvX2FyZ3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQorZG9fYXJnc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmJ5dGVzKQogewotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHN0cmlwZm9ybWF0W3N0cmlwdHlwZV0sICZzZXApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzZXAgIT0gTlVMTCAmJiBzZXAgIT0gUHlfTm9uZSkgewotICAgICAgICByZXR1cm4gZG9feHN0cmlwKHNlbGYsIHN0cmlwdHlwZSwgc2VwKTsKKyAgICBpZiAoYnl0ZXMgIT0gTlVMTCAmJiBieXRlcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHJldHVybiBkb194c3RyaXAoc2VsZiwgc3RyaXB0eXBlLCBieXRlcyk7CiAgICAgfQogICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBzdHJpcHR5cGUpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zdHJpcAogCi1QeURvY19TVFJWQVIoc3RyaXBfX2RvY19fLAotIkIuc3RyaXAoW2J5dGVzXSkgLT4gYnl0ZXNcblwKLVxuXAotU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjMjI4ZDNiZDEwNGExYiBpbnB1dD0zN2RhYTVmYWQxMzk1ZDk1XSovCiB7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKLSAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIEJPVEhTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLmxzdHJpcAogCi1QeURvY19TVFJWQVIobHN0cmlwX19kb2NfXywKLSJCLmxzdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nICBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfbHN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfbHN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjAyZTU4NmY1MjRlODIgaW5wdXQ9ODg4MTFiMDlkZmJjMjk4OF0qLwogewotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCi0gICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBMRUZUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYXJncyk7CisgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yc3RyaXAKIAotUHlEb2NfU1RSVkFSKHJzdHJpcF9fZG9jX18sCi0iQi5yc3RyaXAoW2J5dGVzXSkgLT4gYnl0ZXNcblwKLVxuXAotU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzdHJpcChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PThmOTNjOWNkMzYxZjAxNDBdKi8KIHsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQotICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgUklHSFRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYXJncyk7CisgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCkBAIC0xNDYxLDQ1ICsyMTA2LDUxIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHRyYW5zbGF0ZV9fZG9jX18sCi0iQi50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgcmVtYWluaW5nXG5cCi1jaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cblwKLXRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy50cmFuc2xhdGUKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICB0YWJsZTogb2JqZWN0CisgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCisgICAgWworICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKKyAgICBdCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KKworQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK1RoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLCBpbnQgZ3JvdXBfcmlnaHRfMSwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzNkZjg1MGViNTBiZjhkIGlucHV0PWQ4ZmE1NTE5ZDdjYzRiZTddKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBQeV9idWZmZXIgdGFibGVfdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9idWZmZXIgZGVsX3RhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciAqdGFibGU7CisgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CiAgICAgUHlfc3NpemVfdCBpLCBjLCBjaGFuZ2VkID0gMDsKICAgICBQeU9iamVjdCAqaW5wdXRfb2JqID0gKFB5T2JqZWN0KilzZWxmOwotICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydCwgKmRlbF90YWJsZT1OVUxMOworICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydCwgKmRlbF90YWJsZV9jaGFycz1OVUxMOwogICAgIFB5X3NzaXplX3QgaW5sZW4sIHRhYmxlbiwgZGVsbGVuID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCB0cmFuc190YWJsZVsyNTZdOwotICAgIFB5T2JqZWN0ICp0YWJsZW9iaiwgKmRlbG9iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cmFuc2xhdGUiLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGVvYmosICZkZWxvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHRhYmxlb2JqKSkgewotICAgICAgICB0YWJsZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRhYmxlb2JqKTsKLSAgICAgICAgdGFibGVuID0gUHlCeXRlc19HRVRfU0laRSh0YWJsZW9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFibGUpKSB7CisgICAgICAgIHRhYmxlX2NoYXJzID0gUHlCeXRlc19BU19TVFJJTkcodGFibGUpOworICAgICAgICB0YWJsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRhYmxlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAodGFibGVvYmogPT0gUHlfTm9uZSkgewotICAgICAgICB0YWJsZSA9IE5VTEw7CisgICAgZWxzZSBpZiAodGFibGUgPT0gUHlfTm9uZSkgeworICAgICAgICB0YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIHRhYmxlbiA9IDI1NjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGVvYmosICZ0YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGUsICZ0YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdGFibGUgPSB0YWJsZV92aWV3LmJ1ZjsKKyAgICAgICAgdGFibGVfY2hhcnMgPSB0YWJsZV92aWV3LmJ1ZjsKICAgICAgICAgdGFibGVuID0gdGFibGVfdmlldy5sZW47CiAgICAgfQogCkBAIC0xNTEwLDIyICsyMTYxLDIyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChkZWxvYmogIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhkZWxvYmopKSB7Ci0gICAgICAgICAgICBkZWxfdGFibGUgPSBQeUJ5dGVzX0FTX1NUUklORyhkZWxvYmopOwotICAgICAgICAgICAgZGVsbGVuID0gUHlCeXRlc19HRVRfU0laRShkZWxvYmopOworICAgIGlmIChkZWxldGVjaGFycyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGRlbGV0ZWNoYXJzKSkgeworICAgICAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gUHlCeXRlc19BU19TVFJJTkcoZGVsZXRlY2hhcnMpOworICAgICAgICAgICAgZGVsbGVuID0gUHlCeXRlc19HRVRfU0laRShkZWxldGVjaGFycyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbG9iaiwgJmRlbF90YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsZXRlY2hhcnMsICZkZWxfdGFibGVfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxfdGFibGUgPSBkZWxfdGFibGVfdmlldy5idWY7CisgICAgICAgICAgICBkZWxfdGFibGVfY2hhcnMgPSBkZWxfdGFibGVfdmlldy5idWY7CiAgICAgICAgICAgICBkZWxsZW4gPSBkZWxfdGFibGVfdmlldy5sZW47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGRlbF90YWJsZSA9IE5VTEw7CisgICAgICAgIGRlbF90YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIGRlbGxlbiA9IDA7CiAgICAgfQogCkBAIC0xNTM5LDExICsyMTkwLDExIEBACiAgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19Bc1N0cmluZyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAotICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZSAhPSBOVUxMKSB7CisgICAgaWYgKGRlbGxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKICAgICAgICAgLyogSWYgbm8gZGVsZXRpb25zIGFyZSByZXF1aXJlZCwgdXNlIGZhc3RlciBjb2RlICovCiAgICAgICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCgqb3V0cHV0KysgPSB0YWJsZVtjXSkpICE9IGMpCisgICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKCpvdXRwdXQrKyA9IHRhYmxlX2NoYXJzW2NdKSkgIT0gYykKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gMTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNoYW5nZWQgJiYgUHlCeXRlc19DaGVja0V4YWN0KGlucHV0X29iaikpIHsKQEAgLTE1NTYsMTcgKzIyMDcsMTcgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgIGlmICh0YWJsZV9jaGFycyA9PSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0soaSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZVtpXSk7CisgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlX2NoYXJzW2ldKTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsbGVuOyBpKyspCi0gICAgICAgIHRyYW5zX3RhYmxlWyhpbnQpIFB5X0NIQVJNQVNLKGRlbF90YWJsZVtpXSldID0gLTE7CisgICAgICAgIHRyYW5zX3RhYmxlWyhpbnQpIFB5X0NIQVJNQVNLKGRlbF90YWJsZV9jaGFyc1tpXSldID0gLTE7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGVsX3RhYmxlX3ZpZXcpOwogCiAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKQEAgLTE1ODgsMTAgKzIyMzksMjggQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCisKK0BzdGF0aWNtZXRob2QKK2J5dGVzLm1ha2V0cmFucworCisgICAgZnJtOiBQeV9idWZmZXIKKyAgICB0bzogUHlfYnVmZmVyCisgICAgLworCitSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2VhYmxlIGZvciB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IHRyYW5zbGF0ZSBtZXRob2QuCisKK1RoZSByZXR1cm5lZCB0YWJsZSB3aWxsIGJlIG9uZSB3aGVyZSBlYWNoIGJ5dGUgaW4gZnJtIGlzIG1hcHBlZCB0byB0aGUgYnl0ZSBhdAordGhlIHNhbWUgcG9zaXRpb24gaW4gdG8uCisKK1RoZSBieXRlcyBvYmplY3RzIGZybSBhbmQgdG8gbXVzdCBiZSBvZiB0aGUgc2FtZSBsZW5ndGguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTM2ZjYzOTlkNGI3N2Y2ZiBpbnB1dD1kZTdhOGZjNTYzMmJiOGYxXSovCiB7Ci0gICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoYXJncyk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7CiB9CiAKIC8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KQEAgLTIwODYsMzEgKzI3NTUsMzEgQEAKICAgICB9CiB9CiAKLVB5RG9jX1NUUlZBUihyZXBsYWNlX19kb2NfXywKLSJCLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uXG5cCi1vbGQgcmVwbGFjZWQgYnkgbmV3LiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzXG5cCi1naXZlbiwgb25seSBmaXJzdCBjb3VudCBvY2N1cmFuY2VzIGFyZSByZXBsYWNlZC4iKTsKKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucmVwbGFjZQorCisgICAgb2xkOiBQeV9idWZmZXIKKyAgICBuZXc6IFB5X2J1ZmZlcgorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KKyAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCityZXBsYWNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDNkYzlkN2E4M2M1YTFkIGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwgJm9sZCwgJm5ldywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVzT2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC5idWYsIG9sZC5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy5idWYsIG5ldy5sZW4sIGNvdW50KTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVzT2JqZWN0ICopIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KQEAgLTIyNTcsNjAgKzI5MjYsNTEgQEAKIH0KIAogCi1QeURvY19TVFJWQVIoZGVjb2RlX19kb2NfXywKLSJCLmRlY29kZShlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpIC0+IHN0clxuXAotXG5cCi1EZWNvZGUgQiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIERlZmF1bHQgZW5jb2RpbmdcblwKLWlzICd1dGYtOCcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVW5pY29kZURlY29kZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzXG5cCi1hYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuZGVjb2RlCisKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3V0Zi04JworICAgICAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVzLgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3N0cmljdCcKKyAgICAgICAgVGhlIGVycm9yIGhhbmRsaW5nIHNjaGVtZSB0byB1c2UgZm9yIHRoZSBoYW5kbGluZyBvZiBkZWNvZGluZyBlcnJvcnMuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYQorICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJworICAgICAgICBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdAorICAgICAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuCisKK0RlY29kZSB0aGUgYnl0ZXMgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQyMDE2ZmY4ZTBiYjE3NiBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBrd2xpc3QsICZlbmNvZGluZywgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Qoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgoUHlPYmplY3QqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCiAKLVB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKLSJCLnNwbGl0bGluZXMoW2tlZXBlbmRzXSkgLT4gbGlzdCBvZiBsaW5lc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiBCLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuXG5cCi1MaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHNcblwKLWlzIGdpdmVuIGFuZCB0cnVlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuc3BsaXRsaW5lcwogCi1zdGF0aWMgUHlPYmplY3QqCi1ieXRlc19zcGxpdGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisgICAga2VlcGVuZHM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisKK1JldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlcywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgorCitMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kCit0cnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5NWMzNTk4Zjc4MzNjYWQgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKLSAgICBpbnQga2VlcGVuZHMgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAogICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBrZWVwZW5kcwogICAgICAgICApOwogfQogCi0KLVB5RG9jX1NUUlZBUihmcm9taGV4X2RvYywKLSJieXRlcy5mcm9taGV4KHN0cmluZykgLT4gYnl0ZXNcblwKLVxuXAotQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cblwKLVNwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC5cblwKLUV4YW1wbGU6IGJ5dGVzLmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBiJ1xceGI5XFx4MDFcXHhlZicuIik7Ci0KIHN0YXRpYyBpbnQKIGhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewpAQCAtMjMyNywyNCArMjk4NywzNiBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitieXRlcy5mcm9taGV4CisKKyAgICBzdHJpbmc6IHVuaWNvZGUKKyAgICAvCisKK0NyZWF0ZSBhIGJ5dGVzIG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuCisKK1NwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC4KK0V4YW1wbGU6IGJ5dGVzLmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBiJ1xceGI5XFx4MDFcXHhlZicuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nLCAqaGV4b2JqOworICAgIFB5T2JqZWN0ICpuZXdzdHJpbmc7CiAgICAgY2hhciAqYnVmOwogICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKICAgICBpbnQgdG9wLCBib3Q7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpmcm9taGV4IiwgJmhleG9iaikpCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soaGV4b2JqKSk7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShoZXhvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaGV4b2JqKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaGV4b2JqKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChoZXhvYmopOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CiAKICAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwogICAgIG5ld3N0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwpAQCAtMjM3Niw2ICszMDQ4LDIwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5RG9jX1NUUlZBUihoZXhfX2RvY19fLAorIkIuaGV4KCkgLT4gc3RyaW5nXG5cCitcblwKK0NyZWF0ZSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzIGZyb20gYSBieXRlcyBvYmplY3QuXG5cCitFeGFtcGxlOiBiJ1xceGI5XFx4MDFcXHhlZicuaGV4KCkgLT4gJ2I5MDFlZicuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19oZXgoUHlCeXRlc09iamVjdCAqc2VsZikKK3sKKyAgICBjaGFyKiBhcmdidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoYXJnYnVmLCBhcmdsZW4pOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZ2V0bmV3YXJncyhQeUJ5dGVzT2JqZWN0ICp2KQogewpAQCAtMjM5MCwxNCArMzA3NiwxNCBAQAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAogICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZGVjb2RlX19kb2NfX30sCisgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKICAgICAgZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKICAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCi0gICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2Zyb21oZXgsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLAotICAgICBmcm9taGV4X2RvY30sCisgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKICAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKQEAgLTI0MTMsMzggKzMwOTksNDkgQEAKICAgICAgX1B5X2lzdGl0bGVfX2RvY19ffSwKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAotICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlc19qb2luLCBNRVRIX08sIGpvaW5fX2RvY19ffSwKKyAgICBCWVRFU19KT0lOX01FVEhPRERFRgogICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKLSAgICB7ImxzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19sc3RyaXAsIE1FVEhfVkFSQVJHUywgbHN0cmlwX19kb2NfX30sCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsCi0gICAgIF9QeV9tYWtldHJhbnNfX2RvY19ffSwKLSAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19wYXJ0aXRpb24sIE1FVEhfTywgcGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAorICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCisgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCiAgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAogICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAotICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19ycGFydGl0aW9uLCBNRVRIX08sCi0gICAgIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHJzcGxpdF9fZG9jX199LAotICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCisgICAgQllURVNfUlNUUklQX01FVEhPRERFRgorICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgorICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKICAgICAgc3RhcnRzd2l0aF9fZG9jX199LAotICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKKyAgICBCWVRFU19TVFJJUF9NRVRIT0RERUYKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9zd2FwY2FzZV9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3RpdGxlLCBNRVRIX05PQVJHUywgX1B5X3RpdGxlX19kb2NfX30sCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIHRyYW5zbGF0ZV9fZG9jX199LAorICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAogICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCiAgICAge05VTEwsICAgICBOVUxMfSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdCh2LCB3KTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgIC8qbmJfYWRkKi8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9zdWJ0cmFjdCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfbXVsdGlwbHkqLworICAgIGJ5dGVzX21vZCwgICAgICAvKm5iX3JlbWFpbmRlciovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgogc3RyX3N1YnR5cGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NzEsNyArMzE2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewpAQCAtMjUyOCwxMSArMzIyNSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICAgICAgbmV3ID0gX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMSk7CiAgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoc2l6ZSA+IDApCi0gICAgICAgICAgICBtZW1zZXQoKChQeUJ5dGVzT2JqZWN0KiluZXcpLT5vYl9zdmFsLCAwLCBzaXplKTsKICAgICAgICAgcmV0dXJuIG5ldzsKICAgICB9CiAKQEAgLTI2MzAsMTAgKzMzMjUsMTIgQEAKICAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKICAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCiAgICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBzaXplICs9IDE7CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgc2l6ZSA9IDE7CiAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeV9SRUZDTlQobmV3KSA9PSAxKTsKIAogICAgIC8qIEdldCB0aGUgaXRlcmF0b3IgKi8KICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CkBAIC0yNzM1LDcgKzM0MzIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpYnl0ZXNfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZieXRlc19hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmJ5dGVzX2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICZieXRlc19hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYylieXRlc19oYXNoLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMjc3MCw3ICszNDY3LDYgQEAKIHZvaWQKIFB5Qnl0ZXNfQ29uY2F0KFB5T2JqZWN0ICoqcHYsIFB5T2JqZWN0ICp3KQogewotICAgIFB5T2JqZWN0ICp2OwogICAgIGFzc2VydChwdiAhPSBOVUxMKTsKICAgICBpZiAoKnB2ID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NzgsOSArMzQ3NCw0NSBAQAogICAgICAgICBQeV9DTEVBUigqcHYpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHYgPSBieXRlc19jb25jYXQoKnB2LCB3KTsKLSAgICBQeV9ERUNSRUYoKnB2KTsKLSAgICAqcHYgPSB2OworCisgICAgaWYgKFB5X1JFRkNOVCgqcHYpID09IDEgJiYgUHlCeXRlc19DaGVja0V4YWN0KCpwdikpIHsKKyAgICAgICAgLyogT25seSBvbmUgcmVmZXJlbmNlLCBzbyB3ZSBjYW4gcmVzaXplIGluIHBsYWNlICovCisgICAgICAgIFB5X3NzaXplX3Qgb2xkc2l6ZTsKKyAgICAgICAgUHlfYnVmZmVyIHdiOworCisgICAgICAgIHdiLmxlbiA9IC0xOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3YiwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiY2FuJ3QgY29uY2F0ICUuMTAwcyB0byAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodyktPnRwX25hbWUsIFB5X1RZUEUoKnB2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9DTEVBUigqcHYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgb2xkc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKnB2KTsKKyAgICAgICAgaWYgKG9sZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHdiLmxlbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShwdiwgb2xkc2l6ZSArIHdiLmxlbikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcoKnB2KSArIG9sZHNpemUsIHdiLmJ1Ziwgd2IubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmd2IpOworICAgICAgICByZXR1cm47CisKKyAgICAgIGVycm9yOgorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3Yik7CisgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbHNlIHsKKyAgICAgICAgLyogTXVsdGlwbGUgcmVmZXJlbmNlcywgbmVlZCB0byBjcmVhdGUgbmV3IG9iamVjdCAqLworICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgdiA9IGJ5dGVzX2NvbmNhdCgqcHYsIHcpOworICAgICAgICBQeV9ERUNSRUYoKnB2KTsKKyAgICAgICAgKnB2ID0gdjsKKyAgICB9CiB9CiAKIHZvaWQKQEAgLTI3OTEsMTQgKzM1MjMsMTQgQEAKIH0KIAogCi0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgc3RyaW5ncyBhcmUgaW1tdXRhYmxlOgotICAgaXQgY2hhbmdlcyB0aGUgc2l6ZSBvZiBhIHN0cmluZy4gIFdlIGdldCBhd2F5IHdpdGggdGhpcyBvbmx5IGlmIHRoZXJlCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgYnl0ZXMgYXJlIGltbXV0YWJsZToKKyAgIGl0IGNoYW5nZXMgdGhlIHNpemUgb2YgYSBieXRlcyBvYmplY3QuICBXZSBnZXQgYXdheSB3aXRoIHRoaXMgb25seSBpZiB0aGVyZQogICAgaXMgb25seSBvbmUgbW9kdWxlIHJlZmVyZW5jaW5nIHRoZSBvYmplY3QuICBZb3UgY2FuIGFsc28gdGhpbmsgb2YgaXQKLSAgIGFzIGNyZWF0aW5nIGEgbmV3IHN0cmluZyBvYmplY3QgYW5kIGRlc3Ryb3lpbmcgdGhlIG9sZCBvbmUsIG9ubHkKLSAgIG1vcmUgZWZmaWNpZW50bHkuICBJbiBhbnkgY2FzZSwgZG9uJ3QgdXNlIHRoaXMgaWYgdGhlIHN0cmluZyBtYXkKKyAgIGFzIGNyZWF0aW5nIGEgbmV3IGJ5dGVzIG9iamVjdCBhbmQgZGVzdHJveWluZyB0aGUgb2xkIG9uZSwgb25seQorICAgbW9yZSBlZmZpY2llbnRseS4gIEluIGFueSBjYXNlLCBkb24ndCB1c2UgdGhpcyBpZiB0aGUgYnl0ZXMgb2JqZWN0IG1heQogICAgYWxyZWFkeSBiZSBrbm93biB0byBzb21lIG90aGVyIHBhcnQgb2YgdGhlIGNvZGUuLi4KLSAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgc3RyaW5nLCB0aGUgb3JpZ2luYWwKLSAgIHN0cmluZyBvYmplY3QgYXQgKnB2IGlzIGRlYWxsb2NhdGVkLCAqcHYgaXMgc2V0IHRvIE5VTEwsIGFuICJvdXQgb2YKKyAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgYnl0ZXMgb2JqZWN0LCB0aGUKKyAgIG9yaWdpbmFsIGJ5dGVzIG9iamVjdCBhdCAqcHYgaXMgZGVhbGxvY2F0ZWQsICpwdiBpcyBzZXQgdG8gTlVMTCwgYW4gIm91dCBvZgogICAgbWVtb3J5IiBleGNlcHRpb24gaXMgc2V0LCBhbmQgLTEgaXMgcmV0dXJuZWQuICBFbHNlIChvbiBzdWNjZXNzKSAwIGlzCiAgICByZXR1cm5lZCwgYW5kIHRoZSB2YWx1ZSBpbiAqcHYgbWF5IG9yIG1heSBub3QgYmUgdGhlIHNhbWUgYXMgb24gaW5wdXQuCiAgICBBcyBhbHdheXMsIGFuIGV4dHJhIGJ5dGUgaXMgYWxsb2NhdGVkIGZvciBhIHRyYWlsaW5nIFwwIGJ5dGUgKG5ld3NpemUKQEAgLTI4MjEsNyArMzU1Myw3IEBACiAgICAgX1B5X0RFQ19SRUZUT1RBTDsKICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHYpOwogICAgICpwdiA9IChQeU9iamVjdCAqKQotICAgICAgICBQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CisgICAgICAgIFB5T2JqZWN0X1JFQUxMT0ModiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CiAgICAgaWYgKCpwdiA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCAwYzBiZDQ3Li41ZThhYzU5IDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKIAogUHlPYmplY3QgKgogUHlNZXRob2RfRnVuY3Rpb24oUHlPYmplY3QgKmltKQpAQCAtMjQzLDUxICsyNDQsMzMgQEAKIHsKICAgICBQeU9iamVjdCAqc2VsZiA9IGEtPmltX3NlbGY7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBhLT5pbV9mdW5jOwotICAgIFB5T2JqZWN0ICprbGFzczsKLSAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMICwqa2xhc3NuYW1lID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqZGVmbmFtZSA9ICI/IjsKKyAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkZWZuYW1lID0gIj8iOwogCi0gICAgaWYgKHNlbGYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGtsYXNzID0gKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpOwotCi0gICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19xdWFsbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnVuY25hbWUpKSB7CisKKyAgICBpZiAoZnVuY25hbWUgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKGZ1bmNuYW1lKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuY25hbWUpOwogICAgICAgICBmdW5jbmFtZSA9IE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGtsYXNzID09IE5VTEwpCi0gICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGtsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoa2xhc3MsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgaWYgKGtsYXNzbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmdW5jbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2xhc3NuYW1lKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGtsYXNzbmFtZSk7Ci0gICAgICAgICAgICBrbGFzc25hbWUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLyogWFhYIFNob3VsZG4ndCB1c2UgcmVwcigpLyVSIGhlcmUhICovCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYuJVYgb2YgJVI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbGFzc25hbWUsIGRlZm5hbWUsCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYgb2YgJVI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSwgZGVmbmFtZSwgc2VsZik7CiAKICAgICBQeV9YREVDUkVGKGZ1bmNuYW1lKTsKLSAgICBQeV9YREVDUkVGKGtsYXNzbmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3YTIyMQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKQEAgLTAsMCArMSw2OTggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRiAgICBcCisgICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY2xlYXIsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfY2xlYXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgQi4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY29weSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX18sCisidHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgorIlxuIgorIiAgdGFibGVcbiIKKyIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKKyJcbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhYmxlOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X21ha2V0cmFuc19fZG9jX18sCisibWFrZXRyYW5zKGZybSwgdG8sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2VhYmxlIGZvciB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IHRyYW5zbGF0ZSBtZXRob2QuXG4iCisiXG4iCisiVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0XG4iCisidGhlIHNhbWUgcG9zaXRpb24gaW4gdG8uXG4iCisiXG4iCisiVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlYXJyYXlfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCisgICAgaWYgKGZybS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICAvKiBDbGVhbnVwIGZvciB0byAqLworICAgIGlmICh0by5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdG8pOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRzZWxmLCBvbGQsIG5ldywgY291bnQ9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LlxuIgorIlxuIgorIiAgY291bnRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy5cbiIKKyJcbiIKKyJJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZVxuIgorInJlcGxhY2VkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVwbGFjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLworICAgIGlmIChvbGQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCisgICAgaWYgKG5ldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3BsaXRfX2RvY19fLAorInNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOworICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZWFycmF5IGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci5cbiIKKyJcbiIKKyJUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzXG4iCisiZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZVxuIgorInNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWxcbiIKKyJieXRlYXJyYXkgb2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZWFycmF5IG9iamVjdHMuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1BBUlRJVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3BhcnRpdGlvbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19fLAorInJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXksIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLlxuIgorIklmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZVxuIgorInNlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5XG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVhcnJheS5cbiIKKyIgICAgTm9uZSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuIgorIiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cbiIKKyIgIG1heHNwbGl0XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIHNwbGl0cyB0byBkby5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC5cbiIKKyJcbiIKKyJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmV2ZXJzZV9fZG9jX18sCisicmV2ZXJzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9yZXZlcnNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZXZlcnNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X2luc2VydF9fZG9jX18sCisiaW5zZXJ0KCRzZWxmLCBpbmRleCwgaXRlbSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBhIHNpbmdsZSBpdGVtIGludG8gdGhlIGJ5dGVhcnJheSBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC5cbiIKKyIgIGl0ZW1cbiIKKyIgICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbnNlcnQsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2luc2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2luc2VydF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBpbnQgaXRlbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCBpdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyY6aW5zZXJ0IiwKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYSBzaW5nbGUgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVtXG4iCisiICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGJ5dGVhcnJheV9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2FwcGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaXRlbTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2FwcGVuZF9pbXBsKHNlbGYsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZXh0ZW5kX19kb2NfXywKKyJleHRlbmQoJHNlbGYsIGl0ZXJhYmxlX29mX2ludHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVyYWJsZV9vZl9pbnRzXG4iCisiICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9leHRlbmQsIE1FVEhfTywgYnl0ZWFycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3BvcF9fZG9jX18sCisicG9wKCRzZWxmLCBpbmRleD0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhbmQgcmV0dXJuIGEgc2luZ2xlIGl0ZW0gZnJvbSBCLlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLlxuIgorIlxuIgorIklmIG5vIGluZGV4IGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCBpdGVtLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcG9wLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9wb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcG9wKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpbmRleCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcG9wX2ltcGwoc2VsZiwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVtb3ZlX19kb2NfXywKKyJyZW1vdmUoJHNlbGYsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gdGhlIGJ5dGVhcnJheS5cbiIKKyJcbiIKKyIgIHZhbHVlXG4iCisiICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFTU9WRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZW1vdmUsIE1FVEhfTywgYnl0ZWFycmF5X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoc2VsZiwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3RyaXBfX2RvY19fLAorInN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9zdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3N0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9sc3RyaXBfX2RvY19fLAorImxzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2xzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcnN0cmlwX19kb2NfXywKKyJyc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3JzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS5cbiIKKyIgIGVycm9yc1xuIgorIiAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy5cbiIKKyIgICAgVGhlIGRlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGFcbiIKKyIgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcgYW5kIFwncmVwbGFjZVwnXG4iCisiICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0XG4iCisiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfam9pbl9fZG9jX18sCisiam9pbigkc2VsZiwgaXRlcmFibGVfb2ZfYnl0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzL2J5dGVhcnJheSBvYmplY3RzLlxuIgorIlxuIgorIlRoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImpvaW4iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2pvaW4sIE1FVEhfTywgYnl0ZWFycmF5X2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlYXJyYXksIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cbiIKKyJcbiIKKyJMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kXG4iCisidHJ1ZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBpbnQga2VlcGVuZHMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtlZXBlbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuXG4iCisiXG4iCisiU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLlxuIgorIkV4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KFwnQjkgMDFFRlwnKSAtPiBieXRlYXJyYXkoYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcpIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlYXJyYXlfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cmluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZnJvbWhleF9pbXBsKChQeU9iamVjdCopY2xzLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVkdWNlX19kb2NfXywKKyJfX3JlZHVjZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVEVUNFX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfcmVkdWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3JlZHVjZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JlZHVjZV9leF9fZG9jX18sCisiX19yZWR1Y2VfZXhfXygkc2VsZiwgcHJvdG89MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFRFVDRV9FWF9NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZWR1Y2VfZXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBwcm90byA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLAorICAgICAgICAmcHJvdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKHNlbGYsIHByb3RvKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3NpemVvZl9fZG9jX18sCisiX19zaXplb2ZfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU0laRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfc2l6ZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NpemVvZihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3NpemVvZl9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2NmMxNWZmMjJjNWUyNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWE1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKQEAgLTAsMCArMSw0ODcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIC8sIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlcywgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUX01FVEhPRERFRiAgICBcCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCxcbiIKKyJyZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4iCisiaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzXG4iCisib2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZXMgb2JqZWN0cy4iKTsKKworI2RlZmluZSBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcGFydGl0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3BhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLworICAgIGlmIChzZXAub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX18sCisicnBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuXG4iCisiXG4iCisiVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVzLCBzdGFydGluZyBhbmQgdGhlIGVuZC4gSWZcbiIKKyJ0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGVcbiIKKyJzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzXG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVzIG9iamVjdC4iKTsKKworI2RlZmluZSBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JwYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpycGFydGl0aW9uIiwgJnNlcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19ycGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCisgICAgaWYgKHNlcC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuXG4iCisiICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiIKKyIgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG4iCisiICBtYXhzcGxpdFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuXG4iCisiXG4iCisiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19qb2luX19kb2NfXywKKyJqb2luKCRzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJFeGFtcGxlOiBiXCcuXCcuam9pbihbYlwnYWJcJywgYlwncHFcJywgYlwncnNcJ10pIC0+IGJcJ2FiLnBxLnJzXCcuIik7CisKKyNkZWZpbmUgQllURVNfSk9JTl9NRVRIT0RERUYgICAgXAorICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlc19qb2luLCBNRVRIX08sIGJ5dGVzX2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVzX3N0cmlwX19kb2NfXywKKyJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfc3RyaXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbHN0cmlwX19kb2NfXywKKyJsc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyAgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19MU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7ImxzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfbHN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbHN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3RyaXBfX2RvY19fLAorInJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19SU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcnN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAorInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKKyJcbiIKKyIgIHRhYmxlXG4iCisiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCisiXG4iCisiQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKKworI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3RyYW5zbGF0ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFibGU7CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZXMudHJhbnNsYXRlIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoZnJtLCB0bywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXRcbiIKKyJ0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOworCisjZGVmaW5lIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlc19tYWtldHJhbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFuc19pbXBsKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KKyAgICBpZiAoZnJtLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIC8qIENsZWFudXAgZm9yIHRvICovCisgICAgaWYgKHRvLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcmVwbGFjZV9fZG9jX18sCisicmVwbGFjZSgkc2VsZiwgb2xkLCBuZXcsIGNvdW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy5cbiIKKyJcbiIKKyIgIGNvdW50XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuXG4iCisiXG4iCisiSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmVcbiIKKyJyZXBsYWNlZC4iKTsKKworI2RlZmluZSBCWVRFU19SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCisgICAgaWYgKG9sZC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KKyAgICBpZiAobmV3Lm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBlbmNvZGluZz1cJ3V0Zi04XCcsIGVycm9ycz1cJ3N0cmljdFwnKVxuIgorIi0tXG4iCisiXG4iCisiRGVjb2RlIHRoZSBieXRlcyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVzLlxuIgorIiAgZXJyb3JzXG4iCisiICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLlxuIgorIiAgICBUaGUgZGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYVxuIgorIiAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCdcbiIKKyIgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXRcbiIKKyIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIEJZVEVTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlcywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLlxuIgorIlxuIgorIkxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmRcbiIKKyJ0cnVlLiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIGludCBrZWVwZW5kcyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAorICAgICAgICAma2VlcGVuZHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cbiIKKyJcbiIKKyJTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG4iCisiRXhhbXBsZTogYnl0ZXMuZnJvbWhleChcJ0I5IDAxRUZcJykgLT4gYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcuIik7CisKKyNkZWZpbmUgQllURVNfRlJPTUhFWF9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlc19mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZXNfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19mcm9taGV4KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQwY2U4ZjI1ZDdlMThmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODhiOWEKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaApAQCAtMCwwICsxLDQyIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZGljdF9mcm9ta2V5c19fZG9jX18sCisiZnJvbWtleXMoJHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBhIG5ldyBkaWN0IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdmFsdWUuIik7CisKKyNkZWZpbmUgRElDVF9GUk9NS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWtleXMiLCAoUHlDRnVuY3Rpb24pZGljdF9mcm9ta2V5cywgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsIGRpY3RfZnJvbWtleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGU7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGRpY3RfX19jb250YWluc19fX19kb2NfXywKKyJfX2NvbnRhaW5zX18oJHNlbGYsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgRCBoYXMgYSBrZXkgaywgZWxzZSBGYWxzZS4iKTsKKworI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDJhNzAwCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKQEAgLTAsMCArMSw0MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoeCwgeT1Ob25lLCB6PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yIHN0ci50cmFuc2xhdGUoKS5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBVbmljb2RlXG4iCisib3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgTm9uZS5cbiIKKyJDaGFyYWN0ZXIga2V5cyB3aWxsIGJlIHRoZW4gY29udmVydGVkIHRvIG9yZGluYWxzLlxuIgorIklmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsIGFuZFxuIgorImluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZCB0byB0aGVcbiIKKyJjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gSWYgdGhlcmUgaXMgYSB0aGlyZCBhcmd1bWVudCwgaXRcbiIKKyJtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKKworI2RlZmluZSBVTklDT0RFX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX21ha2V0cmFuc19pbXBsKFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSwgUHlPYmplY3QgKnopOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9tYWtldHJhbnModm9pZCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnkgPSBOVUxMOworICAgIFB5T2JqZWN0ICp6ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVVTptYWtldHJhbnMiLAorICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29tcGxleG9iamVjdC5jIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKaW5kZXggN2Y0Y2RkOS4uZGMxMjEyZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKQEAgLTEzLDcgKzEzLDcgQEAKIHN0YXRpYyBQeV9jb21wbGV4IGNfMSA9IHsxLiwgMC59OwogCiBQeV9jb21wbGV4Ci1jX3N1bShQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3N1bShQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gYS5yZWFsICsgYi5yZWFsOwpAQCAtMjIsNyArMjIsNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX2RpZmYoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19kaWZmKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSBhLnJlYWwgLSBiLnJlYWw7CkBAIC0zMSw3ICszMSw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfbmVnKFB5X2NvbXBsZXggYSkKK19QeV9jX25lZyhQeV9jb21wbGV4IGEpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IC1hLnJlYWw7CkBAIC00MCw3ICs0MCw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfcHJvZChQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3Byb2QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IGEucmVhbCpiLnJlYWwgLSBhLmltYWcqYi5pbWFnOwpAQCAtNDksNyArNDksNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX3F1b3QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19xdW90KFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICBUaGlzIHdhcyB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtLiAgSXQncyBncm9zc2x5IHByb25lIHRvIHNwdXJpb3VzCkBAIC0xMDcsNyArMTA3LDcgQEAKIH0KIAogUHlfY29tcGxleAotY19wb3coUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19wb3coUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB2YWJzLGxlbixhdCxwaGFzZTsKQEAgLTE0NSw5ICsxNDUsOSBAQAogICAgIHAgPSB4OwogICAgIHdoaWxlIChtYXNrID4gMCAmJiBuID49IG1hc2spIHsKICAgICAgICAgaWYgKG4gJiBtYXNrKQotICAgICAgICAgICAgciA9IGNfcHJvZChyLHApOworICAgICAgICAgICAgciA9IF9QeV9jX3Byb2QocixwKTsKICAgICAgICAgbWFzayA8PD0gMTsKLSAgICAgICAgcCA9IGNfcHJvZChwLHApOworICAgICAgICBwID0gX1B5X2NfcHJvZChwLHApOwogICAgIH0KICAgICByZXR1cm4gcjsKIH0KQEAgLTE2MCwxNyArMTYwLDE3IEBACiAgICAgaWYgKG4gPiAxMDAgfHwgbiA8IC0xMDApIHsKICAgICAgICAgY24ucmVhbCA9IChkb3VibGUpIG47CiAgICAgICAgIGNuLmltYWcgPSAwLjsKLSAgICAgICAgcmV0dXJuIGNfcG93KHgsY24pOworICAgICAgICByZXR1cm4gX1B5X2NfcG93KHgsY24pOwogICAgIH0KICAgICBlbHNlIGlmIChuID4gMCkKICAgICAgICAgcmV0dXJuIGNfcG93dSh4LG4pOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGNfcXVvdChjXzEsY19wb3d1KHgsLW4pKTsKKyAgICAgICAgcmV0dXJuIF9QeV9jX3F1b3QoY18xLCBjX3Bvd3UoeCwtbikpOwogCiB9CiAKIGRvdWJsZQotY19hYnMoUHlfY29tcGxleCB6KQorX1B5X2NfYWJzKFB5X2NvbXBsZXggeikKIHsKICAgICAvKiBzZXRzIGVycm5vID0gRVJBTkdFIG9uIG92ZXJmbG93OyAgb3RoZXJ3aXNlIGVycm5vID0gMCAqLwogICAgIGRvdWJsZSByZXN1bHQ7CkBAIC00NDUsNyArNDQ1LDcgQEAKICAgICBUT19DT01QTEVYKHYsIGEpOwogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9hZGQiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX3N1bShhLCBiKTsKKyAgICByZXN1bHQgPSBfUHlfY19zdW0oYSwgYik7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmVzdWx0KQogICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHJlc3VsdCk7CiB9CkBAIC00NTgsNyArNDU4LDcgQEAKICAgICBUT19DT01QTEVYKHYsIGEpOwogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9zdWIiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX2RpZmYoYSwgYik7CisgICAgcmVzdWx0ID0gX1B5X2NfZGlmZihhLCBiKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocmVzdWx0KTsKIH0KQEAgLTQ3MSw3ICs0NzEsNyBAQAogICAgIFRPX0NPTVBMRVgodiwgYSk7CiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X211bCIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfcHJvZChhLCBiKTsKKyAgICByZXN1bHQgPSBfUHlfY19wcm9kKGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHJlc3VsdCkKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleChyZXN1bHQpOwogfQpAQCAtNDg1LDcgKzQ4NSw3IEBACiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X2RpdiIsIHJldHVybiAwKQogICAgIGVycm5vID0gMDsKLSAgICBxdW90ID0gY19xdW90KGEsIGIpOworICAgIHF1b3QgPSBfUHlfY19xdW90KGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHF1b3QpCiAgICAgaWYgKGVycm5vID09IEVET00pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1plcm9EaXZpc2lvbkVycm9yLCAiY29tcGxleCBkaXZpc2lvbiBieSB6ZXJvIik7CkBAIC01MzIsNyArNTMyLDcgQEAKICAgICBpZiAoZXhwb25lbnQuaW1hZyA9PSAwLiAmJiBleHBvbmVudC5yZWFsID09IGludF9leHBvbmVudCkKICAgICAgICAgcCA9IGNfcG93aShhLCBpbnRfZXhwb25lbnQpOwogICAgIGVsc2UKLSAgICAgICAgcCA9IGNfcG93KGEsIGV4cG9uZW50KTsKKyAgICAgICAgcCA9IF9QeV9jX3BvdyhhLCBleHBvbmVudCk7CiAKICAgICBQeUZQRV9FTkRfUFJPVEVDVChwKQogICAgIFB5X0FESlVTVF9FUkFOR0UyKHAucmVhbCwgcC5pbWFnKTsKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAgIGRvdWJsZSByZXN1bHQ7CiAKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X2FicyIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfYWJzKHYtPmN2YWwpOworICAgIHJlc3VsdCA9IF9QeV9jX2Ficyh2LT5jdmFsKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAKICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKaW5kZXggNjE1ZjQ5OS4uOWZmYmNhNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jCisrKyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwpAQCAtMTMxMyw3ICsxMzEzLDcgQEAKICAgICB7ImZnZXQiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3BfZ2V0KSwgUkVBRE9OTFl9LAogICAgIHsiZnNldCIsIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9zZXQpLCBSRUFET05MWX0sCiAgICAgeyJmZGVsIiwgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RlbCksIFJFQURPTkxZfSwKLSAgICB7Il9fZG9jX18iLCAgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RvYyksIFJFQURPTkxZfSwKKyAgICB7Il9fZG9jX18iLCAgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RvYyksIDB9LAogICAgIHswfQogfTsKIApAQCAtMTM3Miw2ICsxMzcyLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwcm9wZXJ0eV9kZXNjcl9nZXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp0eXBlKQogeworICAgIHN0YXRpYyBQeU9iamVjdCAqIHZvbGF0aWxlIGNhY2hlZF9hcmdzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqcmV0OwogICAgIHByb3BlcnR5b2JqZWN0ICpncyA9IChwcm9wZXJ0eW9iamVjdCAqKXNlbGY7CiAKICAgICBpZiAob2JqID09IE5VTEwgfHwgb2JqID09IFB5X05vbmUpIHsKQEAgLTEzODIsNyArMTM4NSwyOSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJ1bnJlYWRhYmxlIGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ3MtPnByb3BfZ2V0LCBvYmosIE5VTEwpOworICAgIGFyZ3MgPSBjYWNoZWRfYXJnczsKKyAgICBpZiAoIWFyZ3MgfHwgUHlfUkVGQ05UKGFyZ3MpICE9IDEpIHsKKyAgICAgICAgUHlfQ0xFQVIoY2FjaGVkX2FyZ3MpOworICAgICAgICBpZiAoIShjYWNoZWRfYXJncyA9IGFyZ3MgPSBQeVR1cGxlX05ldygxKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIGFzc2VydCAoUHlfUkVGQ05UKGFyZ3MpID09IDIpOworICAgIFB5X0lOQ1JFRihvYmopOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgb2JqKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsKGdzLT5wcm9wX2dldCwgYXJncywgTlVMTCk7CisgICAgaWYgKGFyZ3MgPT0gY2FjaGVkX2FyZ3MpIHsKKyAgICAgICAgaWYgKFB5X1JFRkNOVChhcmdzKSA9PSAyKSB7CisgICAgICAgICAgICBvYmogPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob2JqKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKGNhY2hlZF9hcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludApAQCAtMTU4NCw2ICsxNjA5LDE0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3Byb3BlcnR5X2NsZWFyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHByb3BlcnR5b2JqZWN0ICpwcCA9IChwcm9wZXJ0eW9iamVjdCAqKXNlbGY7CisgICAgUHlfQ0xFQVIocHAtPnByb3BfZG9jKTsKKyAgICByZXR1cm4gMDsKK30KKwogUHlUeXBlT2JqZWN0IFB5UHJvcGVydHlfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJwcm9wZXJ0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMTYwOSw3ICsxNjQyLDcgQEAKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgcHJvcGVydHlfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICBwcm9wZXJ0eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChpbnF1aXJ5KXByb3BlcnR5X2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTJlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBQeV9ESUNUX0NPTU1PTl9ICisjZGVmaW5lIFB5X0RJQ1RfQ09NTU9OX0gKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgbWVfa2V5LiAqLworICAgIFB5X2hhc2hfdCBtZV9oYXNoOworICAgIFB5T2JqZWN0ICptZV9rZXk7CisgICAgUHlPYmplY3QgKm1lX3ZhbHVlOyAvKiBUaGlzIGZpZWxkIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgY29tYmluZWQgdGFibGVzICovCit9IFB5RGljdEtleUVudHJ5OworCit0eXBlZGVmIFB5RGljdEtleUVudHJ5ICooKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworCitzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKKyAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKyAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisgICAgZGljdF9sb29rdXBfZnVuYyBka19sb29rdXA7CisgICAgUHlfc3NpemVfdCBka191c2FibGU7CisgICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBiYWI2MjQyLi4zNzkxZDViIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtNjcsNiArNjcsNyBAQAogI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJkaWN0LWNvbW1vbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAvKltjbGluaWMgaW5wdXRdCkBAIC03NCwyNCArNzUsNiBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjE1N2E1YTBjZTk1ODlkNl0qLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KLX0gUHlEaWN0S2V5RW50cnk7Ci0KLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci0KLXN0cnVjdCBfZGljdGtleXNvYmplY3QgewotICAgIFB5X3NzaXplX3QgZGtfcmVmY250OwotICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKLSAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKLSAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKLSAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOwotfTsKLQogCiAvKgogVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZApAQCAtMjMzLDYgKzIxNiw4IEBACiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiAKKyNpbmNsdWRlICJjbGluaWMvZGljdG9iamVjdC5jLmgiCisKIGludAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKQEAgLTExMDEsNiArMTA4Niw0NCBAQAogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogV2UgY2FuIGFycml2ZSBoZXJlIHdpdGggYSBOVUxMIHRzdGF0ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb246IHRyeQorICAgICAgIHJ1bm5pbmcgInB5dGhvbiAtV2kiIGZvciBhbiBleGFtcGxlIHJlbGF0ZWQgdG8gc3RyaW5nIGludGVybmluZy4KKyAgICAgICBMZXQncyBqdXN0IGhvcGUgdGhhdCBubyBleGNlcHRpb24gb2NjdXJzIHRoZW4uLi4gIFRoaXMgbXVzdCBiZQorICAgICAgIF9QeVRocmVhZFN0YXRlX0N1cnJlbnQgYW5kIG5vdCBQeVRocmVhZFN0YXRlX0dFVCgpIGJlY2F1c2UgaW4gZGVidWcKKyAgICAgICBtb2RlLCB0aGUgbGF0dGVyIGNvbXBsYWlucyBpZiB0c3RhdGUgaXMgTlVMTC4gKi8KKyAgICB0c3RhdGUgPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoCisgICAgICAgICZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICBpZiAodHN0YXRlICE9IE5VTEwgJiYgdHN0YXRlLT5jdXJleGNfdHlwZSAhPSBOVUxMKSB7CisgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KKyAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOworICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAqdmFsdWVfYWRkcjsKK30KKwogLyogVmFyaWFudCBvZiBQeURpY3RfR2V0SXRlbSgpIHRoYXQgZG9lc24ndCBzdXBwcmVzcyBleGNlcHRpb25zLgogICAgVGhpcyByZXR1cm5zIE5VTEwgKndpdGgqIGFuIGV4Y2VwdGlvbiBzZXQgaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkLgogICAgSXQgcmV0dXJucyBOVUxMICp3aXRob3V0KiBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBrZXkgd2Fzbid0IHByZXNlbnQuCkBAIC0xMjA4LDYgKzEyMzEsMjQgQEAKIH0KIAogaW50CitfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXA7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNzZXJ0KGtleSk7CisgICAgYXNzZXJ0KHZhbHVlKTsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKKworICAgIC8qIGluc2VydGRpY3QoKSBoYW5kbGVzIGFueSByZXNpemluZyB0aGF0IG1pZ2h0IGJlIG5lY2Vzc2FyeSAqLworICAgIHJldHVybiBpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKTsKK30KKworaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKQEAgLTEzNjcsNiArMTQwOCwxNDEgQEAKICAgICByZXR1cm4gMTsKIH0KIAorLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBkaWN0LnBvcCgpLiAqLworUHlPYmplY3QgKgorX1B5RGljdF9Qb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgeworICAgICAgICBpZiAoZGVmbHQpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CisgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmx0KSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOworICAgICAgICAgICAgcmV0dXJuIGRlZmx0OworICAgICAgICB9CisgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgIG1wLT5tYV91c2VkLS07CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgICAgIFB5X0lOQ1JFRihkdW1teSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOworICAgIH0KKyAgICByZXR1cm4gb2xkX3ZhbHVlOworfQorCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QuZnJvbV9rZXlzKCkuICBJdCBpcyBzdWJjbGFzcy1mcmllbmRseS4gKi8KK1B5T2JqZWN0ICoKK19QeURpY3RfRnJvbUtleXMoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKml0ZXJhYmxlLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKml0OyAgICAgICAvKiBpdGVyKGl0ZXJhYmxlKSAqLworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmQ7CisgICAgaW50IHN0YXR1czsKKworICAgIGQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgTlVMTCk7CisgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkgJiYgKChQeURpY3RPYmplY3QgKilkKS0+bWFfdXNlZCA9PSAwKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGR2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChpdGVyYWJsZSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlBbnlTZXRfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmaGFzaCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ID09IE5VTEwpeworICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSkgeworICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgeworICAgICAgICAgICAgc3RhdHVzID0gUHlEaWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBQeU9iamVjdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBGYWlsOworICAgIFB5X0RFQ1JFRihpdCk7CisgICAgcmV0dXJuIGQ7CisKK0ZhaWw6CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9ERUNSRUYoZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIE1ldGhvZHMgKi8KIAogc3RhdGljIHZvaWQKQEAgLTE3MDEsMTIxICsxODc3LDExIEBACiBSZXR1cm5zIGEgbmV3IGRpY3Qgd2l0aCBrZXlzIGZyb20gaXRlcmFibGUgYW5kIHZhbHVlcyBlcXVhbCB0byB2YWx1ZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRpY3RfZnJvbWtleXNfX2RvY19fLAotImZyb21rZXlzKCR0eXBlLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgYSBuZXcgZGljdCB3aXRoIGtleXMgZnJvbSBpdGVyYWJsZSBhbmQgdmFsdWVzIGVxdWFsIHRvIHZhbHVlLiIpOwotCi0jZGVmaW5lIERJQ1RfRlJPTUtFWVNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZyb21rZXlzIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfZnJvbWtleXMsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLCBkaWN0X2Zyb21rZXlzX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X2Zyb21rZXlzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X2Zyb21rZXlzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0ZXJhYmxlOwotICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmcm9ta2V5cyIsCi0gICAgICAgIDEsIDIsCi0gICAgICAgICZpdGVyYWJsZSwgJnZhbHVlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGRpY3RfZnJvbWtleXNfaW1wbCh0eXBlLCBpdGVyYWJsZSwgdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X2Zyb21rZXlzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NWY4ZGMwZmZhODc0MDZmIGlucHV0PWI4NWE2NjdmOWJmNDY2OWRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZmI5OGU0YjEwMzg0OTk5IGlucHV0PWI4NWE2NjdmOWJmNDY2OWRdKi8KIHsKLSAgICBQeU9iamVjdCAqaXQ7ICAgICAgIC8qIGl0ZXIoc2VxKSAqLwotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgUHlPYmplY3QgKmQ7Ci0gICAgaW50IHN0YXR1czsKLQotICAgIGQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKXR5cGUsIE5VTEwpOwotICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGQpICYmICgoUHlEaWN0T2JqZWN0ICopZCktPm1hX3VzZWQgPT0gMCkgewotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgICAgICAgICBQeU9iamVjdCAqb2xkdmFsdWU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeV9TSVpFKGl0ZXJhYmxlKSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQoaXRlcmFibGUsICZwb3MsICZrZXksICZvbGR2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5QW55U2V0X0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3aGlsZSAoX1B5U2V0X05leHRFbnRyeShpdGVyYWJsZSwgJnBvcywgJmtleSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKXsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkpIHsKLSAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IFB5RGljdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIEZhaWw7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgc3RhdHVzID0gUHlPYmplY3RfU2V0SXRlbShkLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCi0gICAgICAgICAgICAgICAgZ290byBGYWlsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gRmFpbDsKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBkOwotCi1GYWlsOgotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfREVDUkVGKGQpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlEaWN0X0Zyb21LZXlzKChQeU9iamVjdCAqKXR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTIyMTAsMTggKzIyNzYsOSBAQAogVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGljdF9fX2NvbnRhaW5zX19fX2RvY19fLAotIl9fY29udGFpbnNfXygkc2VsZiwga2V5LCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlLiIpOwotCi0jZGVmaW5lIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2NvbnRhaW5zX18iLCAoUHlDRnVuY3Rpb24pZGljdF9fX2NvbnRhaW5zX18sIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGRpY3RfX19jb250YWluc19fX19kb2NfX30sCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X19fY29udGFpbnNfXyhQeURpY3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2NmM2Y4YWFmMmNjNWNjMyBpbnB1dD1iODUyYjJhMTliNTFhYjI0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTNkMDNkYjcwOWVkNmU2YiBpbnB1dD1iODUyYjJhMTliNTFhYjI0XSovCiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCA9IHNlbGY7CiAgICAgUHlfaGFzaF90IGhhc2g7CkBAIC0yMzM2LDUwICsyMzkzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9wb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CiAgICAgUHlPYmplY3QgKmtleSwgKmRlZmx0ID0gTlVMTDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3AiLCAxLCAyLCAma2V5LCAmZGVmbHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgewotICAgICAgICBpZiAoZGVmbHQpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVmbHQ7Ci0gICAgICAgIH0KLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRlZmx0KSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwotICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwotICAgICAgICB9Ci0gICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KLSAgICByZXR1cm4gb2xkX3ZhbHVlOworCisgICAgcmV0dXJuIF9QeURpY3RfUG9wKG1wLCBrZXksIGRlZmx0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0ODYsOCArMjUwNSw4IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfbmV3KFB5RGljdE9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X3NpemVvZihQeURpY3RPYmplY3QgKm1wKQorUHlPYmplY3QgKgorX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKIApAQCAtMjU1NSw3ICsyNTc0LDcgQEAKICAgICBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYKICAgICB7Il9fZ2V0aXRlbV9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3Rfc3Vic2NyaXB0LCAgICAgICAgTUVUSF9PIHwgTUVUSF9DT0VYSVNULAogICAgICBnZXRpdGVtX19kb2NfX30sCi0gICAgeyJfX3NpemVvZl9fIiwgICAgICAoUHlDRnVuY3Rpb24pZGljdF9zaXplb2YsICAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKV9QeURpY3RfU2l6ZU9mLCAgICAgICBNRVRIX05PQVJHUywKICAgICAgc2l6ZW9mX19kb2NfX30sCiAgICAgeyJnZXQiLCAgICAgICAgIChQeUNGdW5jdGlvbilkaWN0X2dldCwgICAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBnZXRfX2RvY19ffSwKQEAgLTMwODQsOCArMzEwMyw4IEBACiAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDAsIGtleSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDEsIHZhbHVlKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwogICAgIHJldHVybiByZXN1bHQ7CiAKIGZhaWw6CkBAIC0zMTgwLDI4ICszMTk5LDIyIEBACiAKIC8qIFRoZSBpbnN0YW5jZSBsYXktb3V0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhyZWU7IGJ1dCB0aGUgdHlwZSBkaWZmZXJzLiAqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIFB5RGljdE9iamVjdCAqZHZfZGljdDsKLX0gZGljdHZpZXdvYmplY3Q7Ci0KLQogc3RhdGljIHZvaWQKLWRpY3R2aWV3X2RlYWxsb2MoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdHZpZXdfZGVhbGxvYyhfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfWERFQ1JFRihkdi0+ZHZfZGljdCk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGR2KTsKIH0KIAogc3RhdGljIGludAotZGljdHZpZXdfdHJhdmVyc2UoZGljdHZpZXdvYmplY3QgKmR2LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK2RpY3R2aWV3X3RyYXZlcnNlKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoZHYtPmR2X2RpY3QpOwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotZGljdHZpZXdfbGVuKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3R2aWV3X2xlbihfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgIGlmIChkdi0+ZHZfZGljdCAhPSBOVUxMKQpAQCAtMzIwOSwxMCArMzIyMiwxMCBAQAogICAgIHJldHVybiBsZW47CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0dmlld19uZXcoUHlPYmplY3QgKmRpY3QsIFB5VHlwZU9iamVjdCAqdHlwZSkKK1B5T2JqZWN0ICoKK19QeURpY3RWaWV3X05ldyhQeU9iamVjdCAqZGljdCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewotICAgIGRpY3R2aWV3b2JqZWN0ICpkdjsKKyAgICBfUHlEaWN0Vmlld09iamVjdCAqZHY7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjI0LDcgKzMyMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgZGljdC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkdiA9IFB5T2JqZWN0X0dDX05ldyhkaWN0dmlld29iamVjdCwgdHlwZSk7CisgICAgZHYgPSBQeU9iamVjdF9HQ19OZXcoX1B5RGljdFZpZXdPYmplY3QsIHR5cGUpOwogICAgIGlmIChkdiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoZGljdCk7CkBAIC0zMzI4LDcgKzMzNDEsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdHZpZXdfcmVwcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmlld19yZXByKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBQeU9iamVjdCAqc2VxOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0zMzQ1LDcgKzMzNTgsNyBAQAogLyoqKiBkaWN0X2tleXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGtleXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0a2V5c19pdGVyKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTMzNTQsNyArMzM2Nyw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RrZXlzX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RrZXlzX2NvbnRhaW5zKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMzkyLDggKzM0MDUsOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWRpY3R2aWV3c19hbmQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvdGhlcikKK1B5T2JqZWN0KgorX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOwpAQCAtMzQ2Nyw3ICszNDgwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5iX2ludmVydCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypuYl9sc2hpZnQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbmJfcnNoaWZ0Ki8KLSAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3NfYW5kLCAgICAgICAgICAvKm5iX2FuZCovCisgICAgKGJpbmFyeWZ1bmMpX1B5RGljdFZpZXdfSW50ZXJzZWN0LCAgLypuYl9hbmQqLwogICAgIChiaW5hcnlmdW5jKWRpY3R2aWV3c194b3IsICAgICAgICAgIC8qbmJfeG9yKi8KICAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3Nfb3IsICAgICAgICAgICAvKm5iX29yKi8KIH07CkBAIC0zNDc5LDcgKzM0OTIsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtID0gTlVMTDsKIAogICAgIGlmIChzZWxmID09IG90aGVyKSB7Ci0gICAgICAgIGlmIChkaWN0dmlld19sZW4oKGRpY3R2aWV3b2JqZWN0ICopc2VsZikgPT0gMCkKKyAgICAgICAgaWYgKGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKSA9PSAwKQogICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTM0ODgsNyArMzUwMSw3IEBACiAgICAgLyogSXRlcmF0ZSBvdmVyIHRoZSBzaG9ydGVyIG9iamVjdCAob25seSBpZiBvdGhlciBpcyBhIHNldCwKICAgICAgKiBiZWNhdXNlIFB5U2VxdWVuY2VfQ29udGFpbnMgbWF5IGJlIGV4cGVuc2l2ZSBvdGhlcndpc2UpOiAqLwogICAgIGlmIChQeUFueVNldF9DaGVjayhvdGhlcikgfHwgUHlEaWN0Vmlld1NldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoZGljdHZpZXdvYmplY3QgKilzZWxmKTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKTsKICAgICAgICAgUHlfc3NpemVfdCBsZW5fb3RoZXIgPSBQeU9iamVjdF9TaXplKG90aGVyKTsKICAgICAgICAgaWYgKGxlbl9vdGhlciA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzUzNSw3ICszNTQ4LDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RLZXlzX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9rZXlzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM1NjgsMTMgKzM1ODEsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0a2V5c19uZXcoUHlPYmplY3QgKmRpY3QpCiB7Ci0gICAgcmV0dXJuIGRpY3R2aWV3X25ldyhkaWN0LCAmUHlEaWN0S2V5c19UeXBlKTsKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KGRpY3QsICZQeURpY3RLZXlzX1R5cGUpOwogfQogCiAvKioqIGRpY3RfaXRlbXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGl0ZW1zX2l0ZXIoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdGl0ZW1zX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzU4Myw3ICszNTk2LDcgQEAKIH0KIAogc3RhdGljIGludAotZGljdGl0ZW1zX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RpdGVtc19jb250YWlucyhfUHlEaWN0Vmlld09iamVjdCAqZHYsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZm91bmQ7CiAgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpCkBAIC0zNjIxLDcgKzM2MzQsNyBAQAogUHlUeXBlT2JqZWN0IFB5RGljdEl0ZW1zX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9pdGVtcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM2NTQsMTMgKzM2NjcsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0aXRlbXNfbmV3KFB5T2JqZWN0ICpkaWN0KQogewotICAgIHJldHVybiBkaWN0dmlld19uZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOwogfQogCiAvKioqIGRpY3RfdmFsdWVzICoqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRpY3R2YWx1ZXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzY4Niw3ICszNjk5LDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RWYWx1ZXNfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJkaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihkaWN0dmlld29iamVjdCksICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKF9QeURpY3RWaWV3T2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWRpY3R2aWV3X2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMzcxOSw3ICszNzMyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0dmFsdWVzX25ldyhQeU9iamVjdCAqZGljdCkKIHsKLSAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhkaWN0LCAmUHlEaWN0VmFsdWVzX1R5cGUpOwogfQogCiAvKiBSZXR1cm5zIE5VTEwgaWYgY2Fubm90IGFsbG9jYXRlIGEgbmV3IFB5RGljdEtleXNPYmplY3QsCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IGM3NmVjYTguLmQ0OTQ5OTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC00NzMsNiArNDczLDEzIEBACiAKIAogLyoKKyAqICAgIFN0b3BBc3luY0l0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgorICovCitTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3RvcEFzeW5jSXRlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX2FuZXh0X18oKS4iKTsKKworCisvKgogICogICAgU3RvcEl0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTI0NjgsNiArMjQ3NSw3IEBACiAgICAgUFJFX0lOSVQoQmFzZUV4Y2VwdGlvbikKICAgICBQUkVfSU5JVChFeGNlcHRpb24pCiAgICAgUFJFX0lOSVQoVHlwZUVycm9yKQorICAgIFBSRV9JTklUKFN0b3BBc3luY0l0ZXJhdGlvbikKICAgICBQUkVfSU5JVChTdG9wSXRlcmF0aW9uKQogICAgIFBSRV9JTklUKEdlbmVyYXRvckV4aXQpCiAgICAgUFJFX0lOSVQoU3lzdGVtRXhpdCkKQEAgLTI1MzgsNiArMjU0Niw3IEBACiAgICAgUE9TVF9JTklUKEJhc2VFeGNlcHRpb24pCiAgICAgUE9TVF9JTklUKEV4Y2VwdGlvbikKICAgICBQT1NUX0lOSVQoVHlwZUVycm9yKQorICAgIFBPU1RfSU5JVChTdG9wQXN5bmNJdGVyYXRpb24pCiAgICAgUE9TVF9JTklUKFN0b3BJdGVyYXRpb24pCiAgICAgUE9TVF9JTklUKEdlbmVyYXRvckV4aXQpCiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCkBAIC0yNzE4LDcgKzI3MjcsNyBAQAogICAgIHNhbWVfYmFzaWNfc2l6ZSA9ICgKICAgICAgICAgY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplIHx8CiAgICAgICAgIChQeVR5cGVfU1VQUE9SVFNfV0VBS1JFRlMoY2F1Z2h0X3R5cGUpICYmCi0gICAgICAgICAgICAoY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplICsgc2l6ZW9mKFB5T2JqZWN0ICopKQorICAgICAgICAgICAgKGNhdWdodF90eXBlX3NpemUgPT0gYmFzZV9leGNfc2l6ZSArIChQeV9zc2l6ZV90KXNpemVvZihQeU9iamVjdCAqKSkKICAgICAgICAgKQogICAgICk7CiAgICAgaWYgKGNhdWdodF90eXBlLT50cF9pbml0ICE9IChpbml0cHJvYylCYXNlRXhjZXB0aW9uX2luaXQgfHwKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggNTk2ZjkwOS4uMWIxODQxMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTM3Miw3ICszNzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHN0ZHByaW50ZXJfd3JpdGUoUHlTdGRQcmludGVyX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqYzsKKyAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkgewpAQCAtMzgzLDI2ICszODMsMTYgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiwgJmMpKSB7CisgICAgLyogZW5jb2RlIFVuaWNvZGUgdG8gVVRGLTggKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiLCAmc3RyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG4gPSBzdHJsZW4oYyk7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJybm8gPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAobiA+IElOVF9NQVgpCi0gICAgICAgIG4gPSBJTlRfTUFYOwotICAgIG4gPSB3cml0ZShzZWxmLT5mZCwgYywgKGludCluKTsKLSNlbHNlCi0gICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBjLCBuKTsKLSNlbmRpZgotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAobiA8IDApIHsKLSAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICBuID0gX1B5X3dyaXRlKHNlbGYtPmZkLCBzdHIsIHN0cmxlbihzdHIpKTsKKyAgICBpZiAobiA9PSAtMSkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCAxZGNhOTQ3Li5kNjgxOTgxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC05ODYsOCArOTg2LDkgQEAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJm9fbmRpZ2l0cykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCkgewotICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQ6IHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLworICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCB8fCBvX25kaWdpdHMgPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQgb3Igd2l0aCBOb25lIG5kaWdpdHM6CisgICAgICAgICAqIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLwogICAgICAgICByb3VuZGVkID0gcm91bmQoeCk7CiAgICAgICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQogICAgICAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCkBAIC0yMDMzLDcgKzIwMzQsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZmxvYXQgeSA9IChmbG9hdCl4OwotICAgICAgICBjb25zdCBjaGFyICpzID0gKGNoYXIqKSZ5OworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKHVuc2lnbmVkIGNoYXIqKSZ5OwogICAgICAgICBpbnQgaSwgaW5jciA9IDE7CiAKICAgICAgICAgaWYgKFB5X0lTX0lORklOSVRZKHkpICYmICFQeV9JU19JTkZJTklUWSh4KSkKQEAgLTIxNjksNyArMjE3MCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSAoY2hhciopJng7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciopJng7CiAgICAgICAgIGludCBpLCBpbmNyID0gMTsKIAogICAgICAgICBpZiAoKGRvdWJsZV9mb3JtYXQgPT0gaWVlZV9saXR0bGVfZW5kaWFuX2Zvcm1hdCAmJiAhbGUpCmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggNTVlZTU2My4uMTcyZjJjYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTk2LDYgKzE5Niw3IEBACiAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcCsrXSA9IGFkZHI7CiAgICAgICAgICAgICBpbl9maW5hbGx5W2Jsb2Nrc3RhY2tfdG9wLTFdID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzLDcgKzIwNCw4IEBACiAgICAgICAgIGNhc2UgUE9QX0JMT0NLOgogICAgICAgICAgICAgYXNzZXJ0KGJsb2Nrc3RhY2tfdG9wID4gMCk7CiAgICAgICAgICAgICBzZXR1cF9vcCA9IGNvZGVbYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcC0xXV07Ci0gICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzZXR1cF9vcCA9PSBTRVRVUF9BU1lOQ19XSVRIKSB7CiAgICAgICAgICAgICAgICAgaW5fZmluYWxseVtibG9ja3N0YWNrX3RvcC0xXSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTIxOCw3ICsyMjAsOCBAQAogICAgICAgICAgICAgICogYmUgc2VlaW5nIHN1Y2ggYW4gRU5EX0ZJTkFMTFkuKSAqLwogICAgICAgICAgICAgaWYgKGJsb2Nrc3RhY2tfdG9wID4gMCkgewogICAgICAgICAgICAgICAgIHNldHVwX29wID0gY29kZVtibG9ja3N0YWNrW2Jsb2Nrc3RhY2tfdG9wLTFdXTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldHVwX29wID09IFNFVFVQX0ZJTkFMTFkgfHwgc2V0dXBfb3AgPT0gU0VUVVBfV0lUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2V0dXBfb3AgPT0gU0VUVVBfQVNZTkNfV0lUSCkgewogICAgICAgICAgICAgICAgICAgICBibG9ja3N0YWNrX3RvcC0tOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI4MSw2ICsyODQsNyBAQAogICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgIGRlbHRhX2libG9jaysrOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDY3ZTZlZjkuLjVkM2I2NmMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtMTIsNiArMTIsOCBAQAogewogICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWdlbi0+Z2lfZnJhbWUpOwogICAgIFB5X1ZJU0lUKGdlbi0+Z2lfY29kZSk7CisgICAgUHlfVklTSVQoZ2VuLT5naV9uYW1lKTsKKyAgICBQeV9WSVNJVChnZW4tPmdpX3F1YWxuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjIsNiArMjQsMTkgQEAKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKKyAgICAvKiBJZiBgZ2VuYCBpcyBhIGNvcm91dGluZSwgYW5kIGlmIGl0IHdhcyBuZXZlciBhd2FpdGVkIG9uLAorICAgICAgIGlzc3VlIGEgUnVudGltZVdhcm5pbmcuICovCisgICAgaWYgKGdlbi0+Z2lfY29kZSAhPSBOVUxMCisgICAgICAgICAgICAmJiAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYgKENPX0NPUk9VVElORQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKQorICAgICAgICAgICAgJiYgZ2VuLT5naV9mcmFtZSAhPSBOVUxMCisgICAgICAgICAgICAmJiBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpID09IC0xCisgICAgICAgICAgICAmJiAhUHlFcnJfT2NjdXJyZWQoKQorICAgICAgICAgICAgJiYgUHlFcnJfV2FybkZvcm1hdChQeUV4Y19SdW50aW1lV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcm91dGluZSAnJS41MFMnIHdhcyBuZXZlciBhd2FpdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChnZW4tPmdpX2ZyYW1lID09IE5VTEwgfHwgZ2VuLT5naV9mcmFtZS0+Zl9zdGFja3RvcCA9PSBOVUxMKQogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDYgKzczLDggQEAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKICAgICBQeV9DTEVBUihnZW4tPmdpX2NvZGUpOworICAgIFB5X0NMRUFSKGdlbi0+Z2lfbmFtZSk7CisgICAgUHlfQ0xFQVIoZ2VuLT5naV9xdWFsbmFtZSk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGdlbik7CiB9CiAKQEAgLTEyNiw2ICsxNDMsNDggQEAKICAgICAgICAgfQogICAgICAgICBQeV9DTEVBUihyZXN1bHQpOwogICAgIH0KKyAgICBlbHNlIGlmICghcmVzdWx0ICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgLyogQ2hlY2sgZm9yIF9fZnV0dXJlX18gZ2VuZXJhdG9yX3N0b3AgYW5kIGNvbmRpdGlvbmFsbHkgdHVybgorICAgICAgICAgKiBhIGxlYWtpbmcgU3RvcEl0ZXJhdGlvbiBpbnRvIFJ1bnRpbWVFcnJvciAod2l0aCBpdHMgY2F1c2UKKyAgICAgICAgICogc2V0IGFwcHJvcHJpYXRlbHkpLiAqLworICAgICAgICBpZiAoKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgIChDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgfCBDT19DT1JPVVRJTkUgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUpKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKKyAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7CisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworCisgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworCisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CisgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgLyogZ2VuZXJhdG9yIGNhbid0IGJlIHJlcnVuLCBzbyByZWxlYXNlIHRoZSBmcmFtZSAqLwpAQCAtMzczLDExICs0MzIsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmV0OwotICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKLSAgICBQeV9YREVDUkVGKHZhbCk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICBpZiAoKChQeUNvZGVPYmplY3QqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lLW9iamVjdHMgZG8gbm90IHN1cHBvcnQgaXRlcmF0aW9uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIE5VTEwsIDApOwogfQogCiAvKgpAQCAtNDMzLDM0ICs0OTQsOTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGdlbmVyYXRvciBvYmplY3QgJVMgYXQgJXA+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4pOworICAgIGlmIChQeUdlbl9DaGVja0Nvcm91dGluZUV4YWN0KGdlbikpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8Y29yb3V0aW5lIG9iamVjdCAlUyBhdCAlcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSwgZ2VuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGdlbmVyYXRvciBvYmplY3QgJVMgYXQgJXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUsIGdlbik7CisgICAgfQogfQogCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1nZW5fZ2V0X25hbWUoUHlHZW5PYmplY3QgKmdlbikKK2dlbl9nZXRfbmFtZShQeUdlbk9iamVjdCAqb3ApCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX25hbWU7Ci0gICAgUHlfSU5DUkVGKG5hbWUpOwotICAgIHJldHVybiBuYW1lOworICAgIFB5X0lOQ1JFRihvcC0+Z2lfbmFtZSk7CisgICAgcmV0dXJuIG9wLT5naV9uYW1lOwogfQogCitzdGF0aWMgaW50CitnZW5fc2V0X25hbWUoUHlHZW5PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKnRtcDsKIAotUHlEb2NfU1RSVkFSKGdlbl9fbmFtZV9fZG9jX18sCi0iUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0b3IncyBhc3NvY2lhdGVkIGNvZGUgb2JqZWN0LiIpOworICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZ2VuLmdpX25hbWUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCisgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+Z2lfbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5naV9uYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZW5fZ2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmdpX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gb3AtPmdpX3F1YWxuYW1lOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2VuX2dldF9pdGVyKFB5R2VuT2JqZWN0ICpnZW4pCit7CisgICAgaWYgKCgoUHlDb2RlT2JqZWN0KilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmIENPX0NPUk9VVElORSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvcm91dGluZS1vYmplY3RzIGRvIG5vdCBzdXBwb3J0IGl0ZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZ2VuOworfQorCitzdGF0aWMgaW50CitnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisKKyAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCisgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeUdldFNldERlZiBnZW5fZ2V0c2V0bGlzdFtdID0gewotICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgTlVMTCwgZ2VuX19uYW1lX19kb2NfX30sCi0gICAge05VTEx9CisgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9uYW1lLCAoc2V0dGVyKWdlbl9zZXRfbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJuYW1lIG9mIHRoZSBnZW5lcmF0b3IiKX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfcXVhbG5hbWUsIChzZXR0ZXIpZ2VuX3NldF9xdWFsbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJxdWFsaWZpZWQgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIil9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIAotCiBzdGF0aWMgUHlNZW1iZXJEZWYgZ2VuX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImdpX2ZyYW1lIiwgICAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfZnJhbWUpLCAgICAgIFJFQURPTkxZfSwKLSAgICB7ImdpX3J1bm5pbmciLCAgICAgIFRfQk9PTCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCi0gICAgeyJnaV9jb2RlIiwgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfY29kZSksICBSRUFET05MWX0sCisgICAgeyJnaV9mcmFtZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgUkVBRE9OTFl9LAorICAgIHsiZ2lfcnVubmluZyIsICAgVF9CT09MLCAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgIFJFQURPTkxZfSwKKyAgICB7ImdpX2NvZGUiLCAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfY29kZSksICAgICBSRUFET05MWX0sCiAgICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTQ4MSw3ICs2MDEsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLwogICAgIChyZXByZnVuYylnZW5fcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwpAQCAtNDk5LDcgKzYxOSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfd2Vha3JlZmxpc3QpLCAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGdldGl0ZXJmdW5jKWdlbl9nZXRfaXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylnZW5faXRlcm5leHQsICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGdlbl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIGdlbl9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwpAQCAtNTI2LDcgKzY0Niw3IEBACiB9OwogCiBQeU9iamVjdCAqCi1QeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZikKK1B5R2VuX05ld1dpdGhRdWFsTmFtZShQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5R2VuT2JqZWN0ICpnZW4gPSBQeU9iamVjdF9HQ19OZXcoUHlHZW5PYmplY3QsICZQeUdlbl9UeXBlKTsKICAgICBpZiAoZ2VuID09IE5VTEwpIHsKQEAgLTUzOSwxMCArNjU5LDI2IEBACiAgICAgZ2VuLT5naV9jb2RlID0gKFB5T2JqZWN0ICopKGYtPmZfY29kZSk7CiAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICBnZW4tPmdpX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBpZiAobmFtZSAhPSBOVUxMKQorICAgICAgICBnZW4tPmdpX25hbWUgPSBuYW1lOworICAgIGVsc2UKKyAgICAgICAgZ2VuLT5naV9uYW1lID0gKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19uYW1lOworICAgIFB5X0lOQ1JFRihnZW4tPmdpX25hbWUpOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKQorICAgICAgICBnZW4tPmdpX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgZWxzZQorICAgICAgICBnZW4tPmdpX3F1YWxuYW1lID0gZ2VuLT5naV9uYW1lOworICAgIFB5X0lOQ1JFRihnZW4tPmdpX3F1YWxuYW1lKTsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soZ2VuKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZ2VuOwogfQogCitQeU9iamVjdCAqCitQeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICByZXR1cm4gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIE5VTEwsIE5VTEwpOworfQorCiBpbnQKIFB5R2VuX05lZWRzRmluYWxpemluZyhQeUdlbk9iamVjdCAqZ2VuKQogewpAQCAtNTYwLDMgKzY5Niw1NyBAQAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKIH0KKworLyoKKyAqICAgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmV0dXJucyBhbiBhd2FpdGFibGUgZm9yIGBvYDoKKyAqICAgICAtIGBvYCBpZiBgb2AgaXMgYSBjb3JvdXRpbmUtb2JqZWN0OworICogICAgIC0gYHR5cGUobyktPnRwX2FzX2FzeW5jLT5hbV9hd2FpdChvKWAKKyAqCisgKiAgIFJhaXNlcyBhIFR5cGVFcnJvciBpZiBpdCdzIG5vdCBwb3NzaWJsZSB0byByZXR1cm4KKyAqICAgYW4gYXdhaXRhYmxlIGFuZCByZXR1cm5zIE5VTEwuCisgKi8KK1B5T2JqZWN0ICoKK19QeUdlbl9HZXRBd2FpdGFibGVJdGVyKFB5T2JqZWN0ICpvKQoreworICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgIFB5VHlwZU9iamVjdCAqb3Q7CisKKyAgICBpZiAoUHlHZW5fQ2hlY2tDb3JvdXRpbmVFeGFjdChvKSkgeworICAgICAgICAvKiBGYXN0IHBhdGguIEl0J3MgYSBjZW50cmFsIGZ1bmN0aW9uIGZvciAnYXdhaXQnLiAqLworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KKworICAgIG90ID0gUHlfVFlQRShvKTsKKyAgICBpZiAob3QtPnRwX2FzX2FzeW5jICE9IE5VTEwpIHsKKyAgICAgICAgZ2V0dGVyID0gb3QtPnRwX2FzX2FzeW5jLT5hbV9hd2FpdDsKKyAgICB9CisgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXMgPSAoKmdldHRlcikobyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUl0ZXJfQ2hlY2socmVzKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2F3YWl0X18oKSByZXR1cm5lZCBub24taXRlcmF0b3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgdHlwZSAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0Nvcm91dGluZUV4YWN0KHJlcykpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogX19hd2FpdF9fIG11c3QgcmV0dXJuIGFuICppdGVyYXRvciosIG5vdAorICAgICAgICAgICAgICAgICAgICAgICBhIGNvcm91dGluZSBvciBhbm90aGVyIGF3YWl0YWJsZSAoc2VlIFBFUCA0OTIpICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hd2FpdF9fKCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuMTAwcyBjYW4ndCBiZSB1c2VkIGluICdhd2FpdCcgZXhwcmVzc2lvbiIsCisgICAgICAgICAgICAgICAgIG90LT50cF9uYW1lKTsKKworICAgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCAzMDQ3ZDZiLi4yZmIwYzg4IDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpbnQgb2s7Ci0gICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKICAgICAgICAgICAgIGlmIChvayA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCAxOTk2N2NhLi40NWU1NGNlIDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtMjQ0Nyw3ICsyNDQ3LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibGlzdCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYxMSw3ICsyNjExLDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibGlzdCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvbG9uZ29iamVjdC5jIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKaW5kZXggNzAzNmMwZS4uNDBkYTBiMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTIxLDcgKzIxLDYgQEAKICAgICAgICAgIFB5X1NJWkUoeCkgPCAwID8gLShzZGlnaXQpKHgpLT5vYl9kaWdpdFswXSA6ICAgXAogICAgICAgICAgICAgIChQeV9TSVpFKHgpID09IDAgPyAoc2RpZ2l0KTAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAoc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0pKQotI2RlZmluZSBBQlMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQogCiAjaWYgTlNNQUxMTkVHSU5UUyArIE5TTUFMTFBPU0lOVFMgPiAwCiAvKiBTbWFsbCBpbnRlZ2VycyBhcmUgcHJlYWxsb2NhdGVkIGluIHRoaXMgYXJyYXkgc28gdGhhdCB0aGV5CkBAIC01Nyw3ICs1Niw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIG1heWJlX3NtYWxsX2xvbmcoUHlMb25nT2JqZWN0ICp2KQogewotICAgIGlmICh2ICYmIEFCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CisgICAgaWYgKHYgJiYgUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpIHsKICAgICAgICAgc2RpZ2l0IGl2YWwgPSBNRURJVU1fVkFMVUUodik7CiAgICAgICAgIGlmICgtTlNNQUxMTkVHSU5UUyA8PSBpdmFsICYmIGl2YWwgPCBOU01BTExQT1NJTlRTKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0xMTQsNyArMTEzLDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogbG9uZ19ub3JtYWxpemUoUHlMb25nT2JqZWN0ICp2KQogewotICAgIFB5X3NzaXplX3QgaiA9IEFCUyhQeV9TSVpFKHYpKTsKKyAgICBQeV9zc2l6ZV90IGogPSBQeV9BQlMoUHlfU0laRSh2KSk7CiAgICAgUHlfc3NpemVfdCBpID0gajsKIAogICAgIHdoaWxlIChpID4gMCAmJiB2LT5vYl9kaWdpdFtpLTFdID09IDApCkBAIC03MTgsNyArNzE3LDcgQEAKIAogICAgIGFzc2VydCh2ICE9IE5VTEwpOwogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwotICAgIG5kaWdpdHMgPSBBQlMoUHlfU0laRSh2KSk7CisgICAgbmRpZ2l0cyA9IFB5X0FCUyhQeV9TSVpFKHYpKTsKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwpAQCAtMTU2NSw3ICsxNTY0LDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogZGl2cmVtMShQeUxvbmdPYmplY3QgKmEsIGRpZ2l0IG4sIGRpZ2l0ICpwcmVtKQogewotICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogCiAgICAgYXNzZXJ0KG4gPiAwICYmIG4gPD0gUHlMb25nX01BU0spOwpAQCAtMTU5Nyw3ICsxNTk2LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhdGl2ZSA9IFB5X1NJWkUoYSkgPCAwOwogCiAgICAgLyogcXVpY2sgYW5kIGRpcnR5IHVwcGVyIGJvdW5kIGZvciB0aGUgbnVtYmVyIG9mIGRpZ2l0cwpAQCAtMTc2Niw3ICsxNzY1LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhdGl2ZSA9IFB5X1NJWkUoYSkgPCAwOwogCiAgICAgLyogQ29tcHV0ZSBhIHJvdWdoIHVwcGVyIGJvdW5kIGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgKi8KQEAgLTIzMTMsNyArMjMxMiw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCwgKnN0cm9iajsKICAgICBjaGFyICplbmQgPSBOVUxMOwogCi0gICAgcmVzdWx0ID0gUHlMb25nX0Zyb21TdHJpbmcoKGNoYXIqKXMsICZlbmQsIGJhc2UpOworICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3RyaW5nKHMsICZlbmQsIGJhc2UpOwogICAgIGlmIChlbmQgPT0gTlVMTCB8fCAocmVzdWx0ICE9IE5VTEwgJiYgZW5kID09IHMgKyBsZW4pKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTIzODAsNyArMjM3OSw3IEBACiBsb25nX2RpdnJlbShQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYiwKICAgICAgICAgICAgIFB5TG9uZ09iamVjdCAqKnBkaXYsIFB5TG9uZ09iamVjdCAqKnByZW0pCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKIAogICAgIGlmIChzaXplX2IgPT0gMCkgewpAQCAtMjQzOSw3ICsyNDM4LDcgQEAKIH0KIAogLyogVW5zaWduZWQgaW50IGRpdmlzaW9uIHdpdGggcmVtYWluZGVyIC0tIHRoZSBhbGdvcml0aG0uICBUaGUgYXJndW1lbnRzIHYxCi0gICBhbmQgdzEgc2hvdWxkIHNhdGlzZnkgMiA8PSBBQlMoUHlfU0laRSh3MSkpIDw9IEFCUyhQeV9TSVpFKHYxKSkuICovCisgICBhbmQgdzEgc2hvdWxkIHNhdGlzZnkgMiA8PSBQeV9BQlMoUHlfU0laRSh3MSkpIDw9IFB5X0FCUyhQeV9TSVpFKHYxKSkuICovCiAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9kaXZyZW0oUHlMb25nT2JqZWN0ICp2MSwgUHlMb25nT2JqZWN0ICp3MSwgUHlMb25nT2JqZWN0ICoqcHJlbSkKQEAgLTI0NTksOCArMjQ1OCw4IEBACiAgICAgICAgdGhhdCB3b24ndCBvdmVyZmxvdyBhIGRpZ2l0LiAqLwogCiAgICAgLyogYWxsb2NhdGUgc3BhY2U7IHcgd2lsbCBhbHNvIGJlIHVzZWQgdG8gaG9sZCB0aGUgZmluYWwgcmVtYWluZGVyICovCi0gICAgc2l6ZV92ID0gQUJTKFB5X1NJWkUodjEpKTsKLSAgICBzaXplX3cgPSBBQlMoUHlfU0laRSh3MSkpOworICAgIHNpemVfdiA9IFB5X0FCUyhQeV9TSVpFKHYxKSk7CisgICAgc2l6ZV93ID0gUHlfQUJTKFB5X1NJWkUodzEpKTsKICAgICBhc3NlcnQoc2l6ZV92ID49IHNpemVfdyAmJiBzaXplX3cgPj0gMik7IC8qIEFzc2VydCBjaGVja3MgYnkgZGl2KCkgKi8KICAgICB2ID0gX1B5TG9uZ19OZXcoc2l6ZV92KzEpOwogICAgIGlmICh2ID09IE5VTEwpIHsKQEAgLTI1OTEsNyArMjU5MCw3IEBACiAgICAgICAgbXVsdGlwbGUgb2YgNCwgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDguICovCiAgICAgc3RhdGljIGNvbnN0IGludCBoYWxmX2V2ZW5fY29ycmVjdGlvbls4XSA9IHswLCAtMSwgLTIsIDEsIDAsIC0xLCAyLCAxfTsKIAotICAgIGFfc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBhX3NpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgaWYgKGFfc2l6ZSA9PSAwKSB7CiAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgMDogc2lnbmlmaWNhbmQgMC4wLCBleHBvbmVudCAwLiAqLwogICAgICAgICAqZSA9IDA7CkBAIC0yNzMyLDcgKzI3MzEsNyBAQAogICAgICAgICBzaWduID0gUHlfU0laRShhKSAtIFB5X1NJWkUoYik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGkgPSBBQlMoUHlfU0laRShhKSk7CisgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICAgICAgd2hpbGUgKC0taSA+PSAwICYmIGEtPm9iX2RpZ2l0W2ldID09IGItPm9iX2RpZ2l0W2ldKQogICAgICAgICAgICAgOwogICAgICAgICBpZiAoaSA8IDApCkBAIC0yODUwLDcgKzI4NDksNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiB4X2FkZChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBkaWdpdCBjYXJyeSA9IDA7CkBAIC0yODg0LDcgKzI4ODMsNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiB4X3N1YihQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbiA9IDE7CkBAIC0yOTQ0LDcgKzI5NDMsNyBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKLSAgICBpZiAoQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhNRURJVU1fVkFMVUUoYSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESVVNX1ZBTFVFKGIpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI5NzQsNyArMjk3Myw3IEBACiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAotICAgIGlmIChBQlMoUHlfU0laRShhKSkgPD0gMSAmJiBBQlMoUHlfU0laRShiKSkgPD0gMSkgeworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPD0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPD0gMSkgewogICAgICAgICBQeU9iamVjdCogcjsKICAgICAgICAgciA9IFB5TG9uZ19Gcm9tTG9uZyhNRURJVU1fVkFMVUUoYSktTUVESVVNX1ZBTFVFKGIpKTsKICAgICAgICAgcmV0dXJuIHI7CkBAIC0zMDAzLDggKzMwMDIsOCBAQAogeF9tdWwoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp6OwotICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOwotICAgIFB5X3NzaXplX3Qgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIHogPSBfUHlMb25nX05ldyhzaXplX2EgKyBzaXplX2IpOwpAQCAtMzA5OCw3ICszMDk3LDcgQEAKIHsKICAgICBQeUxvbmdPYmplY3QgKmhpLCAqbG87CiAgICAgUHlfc3NpemVfdCBzaXplX2xvLCBzaXplX2hpOwotICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZV9uID0gQUJTKFB5X1NJWkUobikpOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZV9uID0gUHlfQUJTKFB5X1NJWkUobikpOwogCiAgICAgc2l6ZV9sbyA9IFB5X01JTihzaXplX24sIHNpemUpOwogICAgIHNpemVfaGkgPSBzaXplX24gLSBzaXplX2xvOwpAQCAtMzEyNyw4ICszMTI2LDggQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgoga19tdWwoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBhc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBQeV9zc2l6ZV90IGJzaXplID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3QgYXNpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CisgICAgUHlfc3NpemVfdCBic2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeUxvbmdPYmplY3QgKmFoID0gTlVMTDsKICAgICBQeUxvbmdPYmplY3QgKmFsID0gTlVMTDsKICAgICBQeUxvbmdPYmplY3QgKmJoID0gTlVMTDsKQEAgLTMzNDgsOCArMzM0Nyw4IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGtfbG9wc2lkZWRfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewotICAgIGNvbnN0IFB5X3NzaXplX3QgYXNpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgUHlfc3NpemVfdCBic2l6ZSA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IGFzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3QgYnNpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlfc3NpemVfdCBuYmRvbmU7ICAgICAgICAgIC8qICMgb2YgYiBkaWdpdHMgYWxyZWFkeSBtdWx0aXBsaWVkICovCiAgICAgUHlMb25nT2JqZWN0ICpyZXQ7CiAgICAgUHlMb25nT2JqZWN0ICpic2xpY2UgPSBOVUxMOwpAQCAtMzQwNyw3ICszNDA2LDcgQEAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAogICAgIC8qIGZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IG11bHRpcGxpY2F0aW9uICovCi0gICAgaWYgKEFCUyhQeV9TSVpFKGEpKSA8PSAxICYmIEFCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIHN0d29kaWdpdHMgdiA9IChzdHdvZGlnaXRzKShNRURJVU1fVkFMVUUoYSkpICogTUVESVVNX1ZBTFVFKGIpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdik7CkBAIC0zNjE0LDggKzM2MTMsOCBAQAogICAgICovCiAKICAgICAvKiBSZWR1Y2UgdG8gY2FzZSB3aGVyZSBhIGFuZCBiIGFyZSBib3RoIHBvc2l0aXZlLiAqLwotICAgIGFfc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBiX3NpemUgPSBBQlMoUHlfU0laRShiKSk7CisgICAgYV9zaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIGJfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBuZWdhdGUgPSAoUHlfU0laRShhKSA8IDApIF4gKFB5X1NJWkUoYikgPCAwKTsKICAgICBpZiAoYl9zaXplID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1plcm9EaXZpc2lvbkVycm9yLApAQCAtMzczMSw3ICszNzMwLDcgQEAKICAgICAgICAgICAgIGluZXhhY3QgPSAxOwogICAgICAgICBQeV9ERUNSRUYocmVtKTsKICAgICB9Ci0gICAgeF9zaXplID0gQUJTKFB5X1NJWkUoeCkpOworICAgIHhfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKHgpKTsKICAgICBhc3NlcnQoeF9zaXplID4gMCk7IC8qIHJlc3VsdCBvZiBkaXZpc2lvbiBpcyBuZXZlciB6ZXJvICovCiAgICAgeF9iaXRzID0gKHhfc2l6ZS0xKSpQeUxvbmdfU0hJRlQrYml0c19pbl9kaWdpdCh4LT5vYl9kaWdpdFt4X3NpemUtMV0pOwogCkBAIC0zODQxLDcgKzM4NDAsNyBAQAogCiAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7ICAvKiBpZiBleHBvbmVudCBpcyBuZWdhdGl2ZSAqLwogICAgICAgICBpZiAoYykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBvdygpIDJuZCBhcmd1bWVudCAiCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBvdygpIDJuZCBhcmd1bWVudCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBiZSBuZWdhdGl2ZSB3aGVuIDNyZCBhcmd1bWVudCBzcGVjaWZpZWQiKTsKICAgICAgICAgICAgIGdvdG8gRXJyb3I7CiAgICAgICAgIH0KQEAgLTQwMDMsNyArNDAwMiw3IEBACiAgICAgLyogSW1wbGVtZW50IH54IGFzIC0oeCsxKSAqLwogICAgIFB5TG9uZ09iamVjdCAqeDsKICAgICBQeUxvbmdPYmplY3QgKnc7Ci0gICAgaWYgKEFCUyhQeV9TSVpFKHYpKSA8PTEpCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA8PTEpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLShNRURJVU1fVkFMVUUodikrMSkpOwogICAgIHcgPSAoUHlMb25nT2JqZWN0ICopUHlMb25nX0Zyb21Mb25nKDFMKTsKICAgICBpZiAodyA9PSBOVUxMKQpAQCAtNDAyMCw3ICs0MDE5LDcgQEAKIGxvbmdfbmVnKFB5TG9uZ09iamVjdCAqdikKIHsKICAgICBQeUxvbmdPYmplY3QgKno7Ci0gICAgaWYgKEFCUyhQeV9TSVpFKHYpKSA8PSAxKQorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPD0gMSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygtTUVESVVNX1ZBTFVFKHYpKTsKICAgICB6ID0gKFB5TG9uZ09iamVjdCAqKV9QeUxvbmdfQ29weSh2KTsKICAgICBpZiAoeiAhPSBOVUxMKQpAQCAtNDA3NSw3ICs0MDc0LDcgQEAKICAgICAgICAgICAgIGdvdG8gcnNoaWZ0X2Vycm9yOwogICAgICAgICB9CiAgICAgICAgIHdvcmRzaGlmdCA9IHNoaWZ0YnkgLyBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgIG5ld3NpemUgPSBBQlMoUHlfU0laRShhKSkgLSB3b3Jkc2hpZnQ7CisgICAgICAgIG5ld3NpemUgPSBQeV9BQlMoUHlfU0laRShhKSkgLSB3b3Jkc2hpZnQ7CiAgICAgICAgIGlmIChuZXdzaXplIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwogICAgICAgICBsb3NoaWZ0ID0gc2hpZnRieSAlIFB5TG9uZ19TSElGVDsKQEAgLTQxMjIsNyArNDEyMSw3IEBACiAgICAgd29yZHNoaWZ0ID0gc2hpZnRieSAvIFB5TG9uZ19TSElGVDsKICAgICByZW1zaGlmdCAgPSBzaGlmdGJ5IC0gd29yZHNoaWZ0ICogUHlMb25nX1NISUZUOwogCi0gICAgb2xkc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBvbGRzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIG5ld3NpemUgPSBvbGRzaXplICsgd29yZHNoaWZ0OwogICAgIGlmIChyZW1zaGlmdCkKICAgICAgICAgKytuZXdzaXplOwpAQCAtNDE4Myw3ICs0MTgyLDcgQEAKICAgICAgICByZXN1bHQgYmFjayB0byBzaWduLW1hZ25pdHVkZSBhdCB0aGUgZW5kLiAqLwogCiAgICAgLyogSWYgYSBpcyBuZWdhdGl2ZSwgcmVwbGFjZSBpdCBieSBpdHMgdHdvJ3MgY29tcGxlbWVudC4gKi8KLSAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CisgICAgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIG5lZ2EgPSBQeV9TSVpFKGEpIDwgMDsKICAgICBpZiAobmVnYSkgewogICAgICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKQEAgLTQxOTcsNyArNDE5Niw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhKTsKIAogICAgIC8qIFNhbWUgZm9yIGIuICovCi0gICAgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBuZWdiID0gUHlfU0laRShiKSA8IDA7CiAgICAgaWYgKG5lZ2IpIHsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfYik7CkBAIC00MzI4LDYgKzQzMjcsMjExIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKK1B5T2JqZWN0ICoKK19QeUxvbmdfR0NEKFB5T2JqZWN0ICphYXJnLCBQeU9iamVjdCAqYmFyZykKK3sKKyAgICBQeUxvbmdPYmplY3QgKmEsICpiLCAqYyA9IE5VTEwsICpkID0gTlVMTCwgKnI7CisgICAgc3R3b2RpZ2l0cyB4LCB5LCBxLCBzLCB0LCBjX2NhcnJ5LCBkX2NhcnJ5OworICAgIHN0d29kaWdpdHMgQSwgQiwgQywgRCwgVDsKKyAgICBpbnQgbmJpdHMsIGs7CisgICAgUHlfc3NpemVfdCBzaXplX2EsIHNpemVfYiwgYWxsb2NfYSwgYWxsb2NfYjsKKyAgICBkaWdpdCAqYV9kaWdpdCwgKmJfZGlnaXQsICpjX2RpZ2l0LCAqZF9kaWdpdCwgKmFfZW5kLCAqYl9lbmQ7CisKKyAgICBhID0gKFB5TG9uZ09iamVjdCAqKWFhcmc7CisgICAgYiA9IChQeUxvbmdPYmplY3QgKiliYXJnOworICAgIHNpemVfYSA9IFB5X1NJWkUoYSk7CisgICAgc2l6ZV9iID0gUHlfU0laRShiKTsKKyAgICBpZiAoLTIgPD0gc2l6ZV9hICYmIHNpemVfYSA8PSAyICYmIC0yIDw9IHNpemVfYiAmJiBzaXplX2IgPD0gMikgeworICAgICAgICBQeV9JTkNSRUYoYSk7CisgICAgICAgIFB5X0lOQ1JFRihiKTsKKyAgICAgICAgZ290byBzaW1wbGU7CisgICAgfQorCisgICAgLyogSW5pdGlhbCByZWR1Y3Rpb246IG1ha2Ugc3VyZSB0aGF0IDAgPD0gYiA8PSBhLiAqLworICAgIGEgPSAoUHlMb25nT2JqZWN0ICopbG9uZ19hYnMoYSk7CisgICAgaWYgKGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYiA9IChQeUxvbmdPYmplY3QgKilsb25nX2FicyhiKTsKKyAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChsb25nX2NvbXBhcmUoYSwgYikgPCAwKSB7CisgICAgICAgIHIgPSBhOworICAgICAgICBhID0gYjsKKyAgICAgICAgYiA9IHI7CisgICAgfQorICAgIC8qIFdlIG5vdyBvd24gcmVmZXJlbmNlcyB0byBhIGFuZCBiICovCisKKyAgICBhbGxvY19hID0gUHlfU0laRShhKTsKKyAgICBhbGxvY19iID0gUHlfU0laRShiKTsKKyAgICAvKiByZWR1Y2UgdW50aWwgYSBmaXRzIGludG8gMiBkaWdpdHMgKi8KKyAgICB3aGlsZSAoKHNpemVfYSA9IFB5X1NJWkUoYSkpID4gMikgeworICAgICAgICBuYml0cyA9IGJpdHNfaW5fZGlnaXQoYS0+b2JfZGlnaXRbc2l6ZV9hLTFdKTsKKyAgICAgICAgLyogZXh0cmFjdCB0b3AgMipQeUxvbmdfU0hJRlQgYml0cyBvZiBhIGludG8geCwgYWxvbmcgd2l0aAorICAgICAgICAgICBjb3JyZXNwb25kaW5nIGJpdHMgb2YgYiBpbnRvIHkgKi8KKyAgICAgICAgc2l6ZV9iID0gUHlfU0laRShiKTsKKyAgICAgICAgYXNzZXJ0KHNpemVfYiA8PSBzaXplX2EpOworICAgICAgICBpZiAoc2l6ZV9iID09IDApIHsKKyAgICAgICAgICAgIGlmIChzaXplX2EgPCBhbGxvY19hKSB7CisgICAgICAgICAgICAgICAgciA9IChQeUxvbmdPYmplY3QgKilfUHlMb25nX0NvcHkoYSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHIgPSBhOworICAgICAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICAgICAgUHlfWERFQ1JFRihjKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZCk7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopcjsKKyAgICAgICAgfQorICAgICAgICB4ID0gKCgodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W3NpemVfYS0xXSA8PCAoMipQeUxvbmdfU0hJRlQtbmJpdHMpKSB8CisgICAgICAgICAgICAgKCh0d29kaWdpdHMpYS0+b2JfZGlnaXRbc2l6ZV9hLTJdIDw8IChQeUxvbmdfU0hJRlQtbmJpdHMpKSB8CisgICAgICAgICAgICAgKGEtPm9iX2RpZ2l0W3NpemVfYS0zXSA+PiBuYml0cykpOworCisgICAgICAgIHkgPSAoKHNpemVfYiA+PSBzaXplX2EgLSAyID8gYi0+b2JfZGlnaXRbc2l6ZV9hLTNdID4+IG5iaXRzIDogMCkgfAorICAgICAgICAgICAgIChzaXplX2IgPj0gc2l6ZV9hIC0gMSA/ICh0d29kaWdpdHMpYi0+b2JfZGlnaXRbc2l6ZV9hLTJdIDw8IChQeUxvbmdfU0hJRlQtbmJpdHMpIDogMCkgfAorICAgICAgICAgICAgIChzaXplX2IgPj0gc2l6ZV9hID8gKHR3b2RpZ2l0cyliLT5vYl9kaWdpdFtzaXplX2EtMV0gPDwgKDIqUHlMb25nX1NISUZULW5iaXRzKSA6IDApKTsKKworICAgICAgICAvKiBpbm5lciBsb29wIG9mIExlaG1lcidzIGFsZ29yaXRobTsgQSwgQiwgQywgRCBuZXZlciBncm93CisgICAgICAgICAgIGxhcmdlciB0aGFuIFB5TG9uZ19NQVNLIGR1cmluZyB0aGUgYWxnb3JpdGhtLiAqLworICAgICAgICBBID0gMTsgQiA9IDA7IEMgPSAwOyBEID0gMTsKKyAgICAgICAgZm9yIChrPTA7OyBrKyspIHsKKyAgICAgICAgICAgIGlmICh5LUMgPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHEgPSAoeCsoQS0xKSkvKHktQyk7CisgICAgICAgICAgICBzID0gQitxKkQ7CisgICAgICAgICAgICB0ID0geC1xKnk7CisgICAgICAgICAgICBpZiAocyA+IHQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB4ID0geTsgeSA9IHQ7CisgICAgICAgICAgICB0ID0gQStxKkM7IEEgPSBEOyBCID0gQzsgQyA9IHM7IEQgPSB0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGsgPT0gMCkgeworICAgICAgICAgICAgLyogbm8gcHJvZ3Jlc3M7IGRvIGEgRXVjbGlkZWFuIHN0ZXAgKi8KKyAgICAgICAgICAgIGlmIChsX2Rpdm1vZChhLCBiLCBOVUxMLCAmcikgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICBhID0gYjsKKyAgICAgICAgICAgIGIgPSByOworICAgICAgICAgICAgYWxsb2NfYSA9IGFsbG9jX2I7CisgICAgICAgICAgICBhbGxvY19iID0gUHlfU0laRShiKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICBhLCBiID0gQSpiLUIqYSwgRCphLUMqYiBpZiBrIGlzIG9kZAorICAgICAgICAgIGEsIGIgPSBBKmEtQipiLCBEKmItQyphIGlmIGsgaXMgZXZlbgorICAgICAgICAqLworICAgICAgICBpZiAoayYxKSB7CisgICAgICAgICAgICBUID0gLUE7IEEgPSAtQjsgQiA9IFQ7CisgICAgICAgICAgICBUID0gLUM7IEMgPSAtRDsgRCA9IFQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGMgIT0gTlVMTCkKKyAgICAgICAgICAgIFB5X1NJWkUoYykgPSBzaXplX2E7CisgICAgICAgIGVsc2UgaWYgKFB5X1JFRkNOVChhKSA9PSAxKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoYSk7CisgICAgICAgICAgICBjID0gYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFsbG9jX2EgPSBzaXplX2E7CisgICAgICAgICAgICBjID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKKyAgICAgICAgICAgIGlmIChjID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkICE9IE5VTEwpCisgICAgICAgICAgICBQeV9TSVpFKGQpID0gc2l6ZV9hOworICAgICAgICBlbHNlIGlmIChQeV9SRUZDTlQoYikgPT0gMSAmJiBzaXplX2EgPD0gYWxsb2NfYikgeworICAgICAgICAgICAgUHlfSU5DUkVGKGIpOworICAgICAgICAgICAgZCA9IGI7CisgICAgICAgICAgICBQeV9TSVpFKGQpID0gc2l6ZV9hOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWxsb2NfYiA9IHNpemVfYTsKKyAgICAgICAgICAgIGQgPSBfUHlMb25nX05ldyhzaXplX2EpOworICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGFfZW5kID0gYS0+b2JfZGlnaXQgKyBzaXplX2E7CisgICAgICAgIGJfZW5kID0gYi0+b2JfZGlnaXQgKyBzaXplX2I7CisKKyAgICAgICAgLyogY29tcHV0ZSBuZXcgYSBhbmQgbmV3IGIgaW4gcGFyYWxsZWwgKi8KKyAgICAgICAgYV9kaWdpdCA9IGEtPm9iX2RpZ2l0OworICAgICAgICBiX2RpZ2l0ID0gYi0+b2JfZGlnaXQ7CisgICAgICAgIGNfZGlnaXQgPSBjLT5vYl9kaWdpdDsKKyAgICAgICAgZF9kaWdpdCA9IGQtPm9iX2RpZ2l0OworICAgICAgICBjX2NhcnJ5ID0gMDsKKyAgICAgICAgZF9jYXJyeSA9IDA7CisgICAgICAgIHdoaWxlIChiX2RpZ2l0IDwgYl9lbmQpIHsKKyAgICAgICAgICAgIGNfY2FycnkgKz0gKEEgKiAqYV9kaWdpdCkgLSAoQiAqICpiX2RpZ2l0KTsKKyAgICAgICAgICAgIGRfY2FycnkgKz0gKEQgKiAqYl9kaWdpdCsrKSAtIChDICogKmFfZGlnaXQrKyk7CisgICAgICAgICAgICAqY19kaWdpdCsrID0gKGRpZ2l0KShjX2NhcnJ5ICYgUHlMb25nX01BU0spOworICAgICAgICAgICAgKmRfZGlnaXQrKyA9IChkaWdpdCkoZF9jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgIGNfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgICAgIGRfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoYV9kaWdpdCA8IGFfZW5kKSB7CisgICAgICAgICAgICBjX2NhcnJ5ICs9IEEgKiAqYV9kaWdpdDsKKyAgICAgICAgICAgIGRfY2FycnkgLT0gQyAqICphX2RpZ2l0Kys7CisgICAgICAgICAgICAqY19kaWdpdCsrID0gKGRpZ2l0KShjX2NhcnJ5ICYgUHlMb25nX01BU0spOworICAgICAgICAgICAgKmRfZGlnaXQrKyA9IChkaWdpdCkoZF9jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgIGNfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgICAgIGRfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoY19jYXJyeSA9PSAwKTsKKyAgICAgICAgYXNzZXJ0KGRfY2FycnkgPT0gMCk7CisKKyAgICAgICAgUHlfSU5DUkVGKGMpOworICAgICAgICBQeV9JTkNSRUYoZCk7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBhID0gbG9uZ19ub3JtYWxpemUoYyk7CisgICAgICAgIGIgPSBsb25nX25vcm1hbGl6ZShkKTsKKyAgICB9CisgICAgUHlfWERFQ1JFRihjKTsKKyAgICBQeV9YREVDUkVGKGQpOworCitzaW1wbGU6CisgICAgYXNzZXJ0KFB5X1JFRkNOVChhKSA+IDApOworICAgIGFzc2VydChQeV9SRUZDTlQoYikgPiAwKTsKKyNpZiBMT05HX01BWCA+PiAyKlB5TG9uZ19TSElGVAorICAgIC8qIGEgZml0cyBpbnRvIGEgbG9uZywgc28gYiBtdXN0IHRvbyAqLworICAgIHggPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWEpOworICAgIHkgPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWIpOworI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiAyKlB5TG9uZ19TSElGVAorICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKilhKTsKKyAgICB5ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYik7CisjZWxzZQorIyBlcnJvciAiX1B5TG9uZ19HQ0QiCisjZW5kaWYKKyAgICB4ID0gUHlfQUJTKHgpOworICAgIHkgPSBQeV9BQlMoeSk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKworICAgIC8qIHVzdWFsIEV1Y2xpZGVhbiBhbGdvcml0aG0gZm9yIGxvbmdzICovCisgICAgd2hpbGUgKHkgIT0gMCkgeworICAgICAgICB0ID0geTsKKyAgICAgICAgeSA9IHggJSB5OworICAgICAgICB4ID0gdDsKKyAgICB9CisjaWYgTE9OR19NQVggPj4gMipQeUxvbmdfU0hJRlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHgpOworI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiAyKlB5TG9uZ19TSElGVAorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOworI2Vsc2UKKyMgZXJyb3IgIl9QeUxvbmdfR0NEIgorI2VuZGlmCisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgUHlfWERFQ1JFRihjKTsKKyAgICBQeV9YREVDUkVGKGQpOworICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogbG9uZ19mbG9hdChQeU9iamVjdCAqdikKIHsKQEAgLTQ2MzAsNyArNDgzNCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICByZXMgPSBvZmZzZXRvZihQeUxvbmdPYmplY3QsIG9iX2RpZ2l0KSArIEFCUyhQeV9TSVpFKHYpKSpzaXplb2YoZGlnaXQpOworICAgIHJlcyA9IG9mZnNldG9mKFB5TG9uZ09iamVjdCwgb2JfZGlnaXQpICsgUHlfQUJTKFB5X1NJWkUodikpKnNpemVvZihkaWdpdCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCkBAIC00NjQ0LDcgKzQ4NDgsNyBAQAogICAgIGFzc2VydCh2ICE9IE5VTEwpOwogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwogCi0gICAgbmRpZ2l0cyA9IEFCUyhQeV9TSVpFKHYpKTsKKyAgICBuZGlnaXRzID0gUHlfQUJTKFB5X1NJWkUodikpOwogICAgIGlmIChuZGlnaXRzID09IDApCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiAKQEAgLTQ4NDksNyArNTA1Myw3IEBACiAgICAgaWYgKHR5cGUgIT0gJlB5TG9uZ19UeXBlICYmIFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5TG9uZ19UeXBlKSkgewogICAgICAgICBQeUxvbmdPYmplY3QgKm5ld29iajsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIFB5X3NzaXplX3QgbiA9IEFCUyhQeV9TSVpFKGxvbmdfb2JqKSk7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5X0FCUyhQeV9TSVpFKGxvbmdfb2JqKSk7CiAKICAgICAgICAgbmV3b2JqID0gKFB5TG9uZ09iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgICAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKQEAgLTQ4NzQsOSArNTA3OCw3IEBACiBcblwKIFJldHVybiB0aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gYXJyYXkgb2YgYnl0ZXMuXG5cCiBcblwKLVRoZSBieXRlcyBhcmd1bWVudCBtdXN0IGVpdGhlciBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgb3IgYmUgYW5cblwKLWl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcgYnl0ZXMuICBCeXRlcyBhbmQgYnl0ZWFycmF5IGFyZSBleGFtcGxlcyBvZlxuXAotYnVpbHQtaW4gb2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbC5cblwKK1RoZSBieXRlcyBhcmd1bWVudCBtdXN0IGJlIGEgYnl0ZXMtbGlrZSBvYmplY3QgKGUuZy4gYnl0ZXMgb3IgYnl0ZWFycmF5KS5cblwKIFxuXAogVGhlIGJ5dGVvcmRlciBhcmd1bWVudCBkZXRlcm1pbmVzIHRoZSBieXRlIG9yZGVyIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuXAogaW50ZWdlci4gIElmIGJ5dGVvcmRlciBpcyAnYmlnJywgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBhdCB0aGVcblwKQEAgLTUwOTUsMTMgKzUyOTcsMTMgQEAKICAgICAgICAgICAgICAqIHRvIHRoZSBvcmlnaW5hbCByZWZjbnQgKyAxICovCiAgICAgICAgICAgICBQeV9SRUZDTlQob3ApID0gcmVmY250ICsgMTsKICAgICAgICAgICAgIGFzc2VydChQeV9TSVpFKG9wKSA9PSBzaXplKTsKLSAgICAgICAgICAgIGFzc2VydCh2LT5vYl9kaWdpdFswXSA9PSBhYnMoaXZhbCkpOworICAgICAgICAgICAgYXNzZXJ0KHYtPm9iX2RpZ2l0WzBdID09IChkaWdpdClhYnMoaXZhbCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKHZvaWQpUHlPYmplY3RfSU5JVCh2LCAmUHlMb25nX1R5cGUpOwogICAgICAgICB9CiAgICAgICAgIFB5X1NJWkUodikgPSBzaXplOwotICAgICAgICB2LT5vYl9kaWdpdFswXSA9IGFicyhpdmFsKTsKKyAgICAgICAgdi0+b2JfZGlnaXRbMF0gPSAoZGlnaXQpYWJzKGl2YWwpOwogICAgIH0KICNlbmRpZgogICAgIC8qIGluaXRpYWxpemUgaW50X2luZm8gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvbWVtb3J5b2JqZWN0LmMgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCmluZGV4IDBiZTg0OTMuLjU0ZmQwNWYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIE1lbW9yeXZpZXcgb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAKQEAgLTQ4LDkgKzQ5LDYgQEAKICovCiAKIAotI2RlZmluZSBYU1RSSU5HSVpFKHYpICN2Ci0jZGVmaW5lIFNUUklOR0laRSh2KSBYU1RSSU5HSVpFKHYpCi0KICNkZWZpbmUgQ0hFQ0tfTUJVRl9SRUxFQVNFRChtYnVmKSBcCiAgICAgaWYgKCgoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKW1idWYpLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpIHsgXAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE5NSwxMCArMTkzLDEwIEBACiAjZGVmaW5lIFZJRVdfQUREUihtdikgKCYoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+dmlldykKIAogLyogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBzdWJvZmZzZXRzIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uICovCi0jZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMpIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbMF0gPj0gMCkKKyNkZWZpbmUgSEFWRV9QVFIoc3Vib2Zmc2V0cywgZGltKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzW2RpbV0gPj0gMCkKIC8qIEFkanVzdCBwdHIgaWYgc3Vib2Zmc2V0cyBhcmUgcHJlc2VudC4gKi8KLSNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpIFwKLSAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cykgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbMF0gOiBwdHIpCisjZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCBkaW0pIFwKKyAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cywgZGltKSA/ICooKGNoYXIqKilwdHIpICsgc3Vib2Zmc2V0c1tkaW1dIDogcHRyKQogCiAvKiBNZW1vcnl2aWV3IGJ1ZmZlciBwcm9wZXJ0aWVzICovCiAjZGVmaW5lIE1WX0NfQ09OVElHVU9VUyhmbGFncykgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfQykpCkBAIC0yMjMsNyArMjIxLDcgQEAKIAogCiBQeURvY19TVFJWQVIobWVtb3J5X2RvYywKLSJtZW1vcnl2aWV3KG9iamVjdClcblwKKyJtZW1vcnl2aWV3KCRtb2R1bGUsIG9iamVjdClcbi0tXG5cCiBcblwKIENyZWF0ZSBhIG5ldyBtZW1vcnl2aWV3IG9iamVjdCB3aGljaCByZWZlcmVuY2VzIHRoZSBnaXZlbiBvYmplY3QuIik7CiAKQEAgLTMzNSwxMSArMzMzLDExIEBACiAgICAgICAgIGNoYXIgKnA7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpIDwgc2hhcGVbMF07IHArPWl0ZW1zaXplLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgICAgIG1lbWNweShwLCB4c3B0ciwgaXRlbXNpemUpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgZHB0cis9ZHN0cmlkZXNbMF0sIGkrKykgewotICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cywgMCk7CiAgICAgICAgICAgICBtZW1jcHkoeGRwdHIsIHAsIGl0ZW1zaXplKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM2Nyw4ICszNjUsOCBAQAogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgZHB0cis9ZHN0cmlkZXNbMF0sIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKLSAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzLCAwKTsKKyAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzLCAwKTsKIAogICAgICAgICBjb3B5X3JlYyhzaGFwZSsxLCBuZGltLTEsIGl0ZW1zaXplLAogICAgICAgICAgICAgICAgICB4ZHB0ciwgZHN0cmlkZXMrMSwgZHN1Ym9mZnNldHMgPyBkc3Vib2Zmc2V0cysxIDogTlVMTCwKQEAgLTY2MCw3ICs2NTgsNyBAQAogICAgIGlmIChzcmMtPm5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBudW1iZXIgb2YgZGltZW5zaW9ucyBtdXN0IG5vdCBleGNlZWQgIgotICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CisgICAgICAgICAgICBQeV9TVFJJTkdJRlkoUHlCVUZfTUFYX05ESU0pKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC03OTUsNyArNzkzLDcgQEAKICAgICB9CiAKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAibWVtb3J5dmlldzogJS4yMDBzIG9iamVjdCBkb2VzIG5vdCBoYXZlIHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnJS4yMDBzJyIsCiAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtODk1LDcgKzg5Myw3IEBACiAgICBUaGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBpcyB0aGUgc2FtZQogICAgKGkuZS4gdG9saXN0KGlucHV0KSA9PSB0b2xpc3Qob3V0cHV0KSksIGJ1dCB0aGUgcGh5c2ljYWwgbGF5b3V0IGluCiAgICBtZW1vcnkgY2FuIGJlIGV4cGxpY2l0bHkgY2hvc2VuLgotIAorCiAgICBBcyB1c3VhbCwgaWYgYnVmZmVydHlwZT1QeUJVRl9XUklURSwgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyIG11c3QgYmUgd3JpdGFibGUsCiAgICBvdGhlcndpc2UgaXQgbWF5IGJlIHdyaXRhYmxlIG9yIHJlYWQtb25seS4KIApAQCAtMTI0NCw3ICsxMjQyLDcgQEAKICAgICB2aWV3LT5zdWJvZmZzZXRzID0gTlVMTDsKIAogICAgIGluaXRfZmxhZ3MobXYpOwotIAorCiAgICAgcmV0ID0gMDsKIAogb3V0OgpAQCAtMTM4OSw3ICsxMzg3LDcgQEAKICAgICAgICAgaWYgKG5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCi0gICAgICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CisgICAgICAgICAgICAgICAgUHlfU1RSSU5HSUZZKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoc2VsZi0+dmlldy5uZGltICE9IDEgJiYgbmRpbSAhPSAxKSB7CkBAIC0yMDYwLDcgKzIwNTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHVucGFja19zaW5nbGUoeHB0ciwgZm10KTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CkBAIC0yMDk0LDcgKzIwOTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHRvbGlzdF9yZWMoeHB0ciwgbmRpbS0xLCBzaGFwZSsxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOwpAQCAtMjE2MSw2ICsyMTU5LDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfaGV4KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIFB5X2J1ZmZlciAqc3JjID0gVklFV19BRERSKHNlbGYpOworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KHNyYy0+YnVmLCBzcmMtPmxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCkBAIC0yMTc0LDMzICsyMTgwLDY2IEBACiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhpbmcgYW5kIHNsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgaXRlbSBhdCBpbmRleC4gKi8KIHN0YXRpYyBjaGFyICoKLXB0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBpbmRleCkKK2xvb2t1cF9kaW1lbnNpb24oUHlfYnVmZmVyICp2aWV3LCBjaGFyICpwdHIsIGludCBkaW0sIFB5X3NzaXplX3QgaW5kZXgpCiB7Ci0gICAgY2hhciAqcHRyOwotICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBnaXZlbiBkaW1lbnNpb24gKi8KIAogICAgIGFzc2VydCh2aWV3LT5zaGFwZSk7CiAgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMpOwogCi0gICAgbml0ZW1zID0gdmlldy0+c2hhcGVbMF07CisgICAgbml0ZW1zID0gdmlldy0+c2hhcGVbZGltXTsKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IG5pdGVtczsKICAgICB9CiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBuaXRlbXMpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbmRleEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMgb24gZGltZW5zaW9uICVkIiwgZGltICsgMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOwotICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogaW5kZXg7CisgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbZGltXSAqIGluZGV4OwogCi0gICAgcHRyID0gQURKVVNUX1BUUihwdHIsIHZpZXctPnN1Ym9mZnNldHMpOworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzLCBkaW0pOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KIAorLyogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBpdGVtIGF0IGluZGV4LiAqLworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICp2aWV3LCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgIHJldHVybiBsb29rdXBfZGltZW5zaW9uKHZpZXcsIHB0ciwgMCwgaW5kZXgpOworfQorCisvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgdHVwbGUuICovCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV90dXBsZShQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICp0dXApCit7CisgICAgY2hhciAqcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgUHlfc3NpemVfdCBkaW0sIG5pbmRpY2VzID0gUHlUdXBsZV9HRVRfU0laRSh0dXApOworCisgICAgaWYgKG5pbmRpY2VzID4gdmlldy0+bmRpbSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmRleCAlemQtZGltZW5zaW9uIHZpZXcgd2l0aCAlemQtZWxlbWVudCB0dXBsZSIsCisgICAgICAgICAgICAgICAgICAgICB2aWV3LT5uZGltLCBuaW5kaWNlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoZGltID0gMDsgZGltIDwgbmluZGljZXM7IGRpbSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgICAgIGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KFB5VHVwbGVfR0VUX0lURU0odHVwLCBkaW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRyID0gbG9va3VwX2RpbWVuc2lvbih2aWV3LCBwdHIsIGRpbSwgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKwogLyogUmV0dXJuIHRoZSBpdGVtIGF0IGluZGV4LiBJbiBhIG9uZS1kaW1lbnNpb25hbCB2aWV3LCB0aGlzIGlzIGFuIG9iamVjdAogICAgd2l0aCB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdmlldy0+Zm9ybWF0LiBPdGhlcndpc2UsIHRoZSBpdGVtIGlzIGEgc3ViLXZpZXcuCiAgICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBtZW1vcnlfc3Vic2NyaXB0KCkgYW5kIG1lbW9yeV9hc19zZXF1ZW5jZS4gKi8KQEAgLTIyMzIsNiArMjI3MSwzMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBSZXR1cm4gdGhlIGl0ZW0gYXQgcG9zaXRpb24gKmtleSogKGEgdHVwbGUgb2YgaW5kaWNlcykuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW1fbXVsdGkoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdHVwKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIFB5X3NzaXplX3QgbmluZGljZXMgPSBQeVR1cGxlX0dFVF9TSVpFKHR1cCk7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobmluZGljZXMgPCB2aWV3LT5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1Yi12aWV3cyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwdHIgPSBwdHJfZnJvbV90dXBsZSh2aWV3LCB0dXApOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOworfQorCiBQeV9MT0NBTF9JTkxJTkUoaW50KQogaW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCiB7CkBAIC0yMjgwLDYgKzIzNDUsMjIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIFB5X3NzaXplX3QKK2lzX211bHRpaW5kZXgoUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soa2V5KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoa2V5KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShrZXksIGkpOworICAgICAgICBpZiAoIVB5SW5kZXhfQ2hlY2soeCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIG12W29ial0gcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYgb2JqCiAgICBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnl2aWV3IG9yIGFub3RoZXIgbWVtb3J5dmlldyBvYmplY3QgaWYgaXQKICAgIGRvZXMgbm90LgpAQCAtMjI5MSw3ICsyMzcyLDcgQEAKIHsKICAgICBQeV9idWZmZXIgKnZpZXc7CiAgICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCisKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKIAogICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKQEAgLTIzMzUsNiArMjQxNiw5IEBACiAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNsaWNlZDsKICAgICB9CisgICAgZWxzZSBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbV9tdWx0aShzZWxmLCBrZXkpOworICAgIH0KICAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKQEAgLTIzNzksMTQgKzI0NjMsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIm1lbW9yeXZpZXcgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIG5kaW0gPSAxIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICAgICAgaWYgKDEgPCB2aWV3LT5uZGltKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViLXZpZXdzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOwpAQCAtMjQyMSw3ICsyNTA2LDE5IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSB8fCBpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA8IHZpZXctPm5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0cl9mcm9tX3R1cGxlKHZpZXcsIGtleSk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgfQorICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgfHwgaXNfbXVsdGlzbGljZShrZXkpKSB7CiAgICAgICAgIC8qIENhbGwgbWVtb3J5X3N1YnNjcmlwdCgpIHRvIHByb2R1Y2UgYSBzbGljZWQgbHZhbHVlLCB0aGVuIGNvcHkKICAgICAgICAgICAgcnZhbHVlIGludG8gbHZhbHVlLiBUaGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gX3Rlc3RidWZmZXIuYy4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCkBAIC0yNTk0LDggKzI2OTEsOCBAQAogICAgIGludCBlcXVhbDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKLSAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzLCAwKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHhwLCB4cSwgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOwogICAgICAgICBpZiAoZXF1YWwgPD0gMCkKICAgICAgICAgICAgIHJldHVybiBlcXVhbDsKQEAgLTI2MjksOCArMjcyNiw4IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgewotICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOwotICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMsIDApOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMsIDApOwogICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKQEAgLTI5NDgsNiArMzA0NSw3IEBACiBQeURvY19TVFJWQVIobWVtb3J5X2NvbnRpZ3VvdXNfZG9jLAogICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4iKTsKIAorCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKICAgICB7Im9iaiIsICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X29ial9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfb2JqX2RvY30sCiAgICAgeyJuYnl0ZXMiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uYnl0ZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X25ieXRlc19kb2N9LApAQCAtMjk2NSwyNSArMzA2MywzMCBAQAogfTsKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKLSJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCisicmVsZWFzZSgkc2VsZiwgLylcbi0tXG5cCiBcblwKIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV90b2J5dGVzX2RvYywKLSJNLnRvYnl0ZXMoKSAtPiBieXRlc1xuXAorInRvYnl0ZXMoJHNlbGYsIC8pXG4tLVxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGUgc3RyaW5nLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9oZXhfZG9jLAorImhleCgkc2VsZiwgLylcbi0tXG5cCitcblwKK1JldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3RvbGlzdF9kb2MsCi0iTS50b2xpc3QoKSAtPiBsaXN0XG5cCisidG9saXN0KCRzZWxmLCAvKVxuLS1cblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKLSJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCisiY2FzdCgkc2VsZiwgLywgZm9ybWF0LCAqLCBzaGFwZSlcbi0tXG5cCiBcblwKIENhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCiAgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJoZXgiLCAgICAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfaGV4LCBNRVRIX05PQVJHUywgbWVtb3J5X2hleF9kb2N9LAogICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKICAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKICAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCA5YjZlNWU0Li4xODE3NzIyIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTM3LDYgKzM3LDcgQEAKICAgICAgICAgaWYgKG9wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgb3AtPm1fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIG9wLT5tX21sID0gbWw7CiAgICAgUHlfWElOQ1JFRihzZWxmKTsKICAgICBvcC0+bV9zZWxmID0gc2VsZjsKQEAgLTc3LDY4ICs3OCw3MSBAQAogfQogCiBQeU9iamVjdCAqCi1QeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0jZGVmaW5lIENIRUNLX1JFU1VMVChyZXMpIGFzc2VydChyZXMgIT0gTlVMTCB8fCBQeUVycl9PY2N1cnJlZCgpKQotCiAgICAgUHlDRnVuY3Rpb25PYmplY3QqIGYgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmM7CiAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmFyZywgKnJlczsKICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzOwogCi0gICAgc3dpdGNoIChQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCkpIHsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUzoKLSAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApIHsKLSAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgYXJnKTsKLSAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6Ci0gICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZywga3cpOwotICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICBjYXNlIE1FVEhfTk9BUkdTOgotICAgICAgICBpZiAoa3cgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrdykgPT0gMCkgewotICAgICAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJnKTsKLSAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKm1ldGgpKHNlbGYsIE5VTEwpOwotICAgICAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNRVRIX086Ci0gICAgICAgIGlmIChrdyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3KSA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwotICAgICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApKTsKLSAgICAgICAgICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiQmFkIGNhbGwgZmxhZ3MgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgIlB5Q0Z1bmN0aW9uX0NhbGwuIE1FVEhfT0xEQVJHUyBpcyBubyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAvKiBQeUNGdW5jdGlvbl9DYWxsKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCk7CisKKyAgICBpZiAoZmxhZ3MgPT0gKE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMpKSB7CisgICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZ3MsIGt3ZHMpOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAotICAgICAgICAgICAgICAgICBmLT5tX21sLT5tbF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAotI3VuZGVmIENIRUNLX1JFU1VMVAorICAgICAgICBzd2l0Y2ggKGZsYWdzKSB7CisgICAgICAgIGNhc2UgTUVUSF9WQVJBUkdTOgorICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBhcmdzKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTUVUSF9OT0FSR1M6CisgICAgICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgICAgIGlmIChzaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1FVEhfTzoKKyAgICAgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcmcgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBhcmcpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIGNhbGwgZmxhZ3MgaW4gUHlDRnVuY3Rpb25fQ2FsbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRVRIX09MREFSR1MgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlcywgTlVMTCk7CiB9CiAKIC8qIE1ldGhvZHMgKHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2RzLCB0aGF0IGlzKSAqLwpAQCAtMTQ3LDYgKzE1MSw5IEBACiBtZXRoX2RlYWxsb2MoUHlDRnVuY3Rpb25PYmplY3QgKm0pCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sobSk7CisgICAgaWYgKG0tPm1fd2Vha3JlZmxpc3QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCopIG0pOworICAgIH0KICAgICBQeV9YREVDUkVGKG0tPm1fc2VsZik7CiAgICAgUHlfWERFQ1JFRihtLT5tX21vZHVsZSk7CiAgICAgaWYgKG51bWZyZWUgPCBQeUNGdW5jdGlvbl9NQVhGUkVFTElTVCkgewpAQCAtMzUyLDcgKzM1OSw3IEBACiAgICAgKHRyYXZlcnNlcHJvYyltZXRoX3RyYXZlcnNlLCAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICBtZXRoX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5Q0Z1bmN0aW9uT2JqZWN0LCBtX3dlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgbWV0aF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCBmNTA5OTMyLi43YjQxYjBiIDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICAgICB7MH0KIH07CiAKLXN0YXRpYyBQeVR5cGVPYmplY3QgbW9kdWxlZGVmX3R5cGUgPSB7CitQeVR5cGVPYmplY3QgUHlNb2R1bGVEZWZfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJtb2R1bGVkZWYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihzdHJ1Y3QgUHlNb2R1bGVEZWYpLCAgICAgICAgICAgICAgICAgLyogdHBfc2l6ZSAqLwpAQCAtMjgsMjQgKzI4LDQ0IEBACiB9OwogCiAKK1B5T2JqZWN0KgorUHlNb2R1bGVEZWZfSW5pdChzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU1vZHVsZURlZl9UeXBlKSA8IDApCisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZGVmLT5tX2Jhc2UubV9pbmRleCA9PSAwKSB7CisgICAgICAgIG1heF9tb2R1bGVfbnVtYmVyKys7CisgICAgICAgIFB5X1JFRkNOVChkZWYpID0gMTsKKyAgICAgICAgUHlfVFlQRShkZWYpID0gJlB5TW9kdWxlRGVmX1R5cGU7CisgICAgICAgIGRlZi0+bV9iYXNlLm1faW5kZXggPSBtYXhfbW9kdWxlX251bWJlcjsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCopZGVmOworfQorCiBzdGF0aWMgaW50CiBtb2R1bGVfaW5pdF9kaWN0KFB5TW9kdWxlT2JqZWN0ICptb2QsIFB5T2JqZWN0ICptZF9kaWN0LAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmRvYykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fbG9hZGVyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKwogICAgIGlmIChtZF9kaWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZG9jID09IE5VTEwpCiAgICAgICAgIGRvYyA9IFB5X05vbmU7CiAKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fbmFtZV9fIiwgbmFtZSkgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19uYW1lX18sIG5hbWUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fZG9jX18iLCBkb2MpICE9IDApCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKG1kX2RpY3QsICZQeUlkX19fZG9jX18sIGRvYykgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19wYWNrYWdlX18iLCBQeV9Ob25lKSAhPSAwKQorICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChtZF9kaWN0LCAmUHlJZF9fX3BhY2thZ2VfXywgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19sb2FkZXJfXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKG1kX2RpY3QsICZQeUlkX19fbG9hZGVyX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fc3BlY19fIiwgUHlfTm9uZSkgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19zcGVjX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QobmFtZSkpIHsKICAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwpAQCAtOTEsMjYgKzExMSwxMyBAQAogICAgIHJldHVybiBtb2R1bGU7CiB9CiAKLQotUHlPYmplY3QgKgotUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqIG1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKy8qIENoZWNrIEFQSS9BQkkgdmVyc2lvbgorICogSXNzdWVzIGEgd2FybmluZyBvbiBtaXNtYXRjaCwgd2hpY2ggaXMgdXN1YWxseSBub3QgZmF0YWwuCisgKiBSZXR1cm5zIDAgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAqLworc3RhdGljIGludAorY2hlY2tfYXBpX3ZlcnNpb24oY29uc3QgY2hhciAqbmFtZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKIHsKLSAgICBQeU9iamVjdCAqZCwgKnYsICpuOwotICAgIFB5TWV0aG9kRGVmICptbDsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIFB5TW9kdWxlT2JqZWN0ICptOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIGltcG9ydCBtYWNoaW5lcnkgbm90IGluaXRpYWxpemVkIik7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmbW9kdWxlZGVmX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1vZHVsZS0+bV9iYXNlLm1faW5kZXggPT0gMCkgewotICAgICAgICBtYXhfbW9kdWxlX251bWJlcisrOwotICAgICAgICBQeV9SRUZDTlQobW9kdWxlKSA9IDE7Ci0gICAgICAgIFB5X1RZUEUobW9kdWxlKSA9ICZtb2R1bGVkZWZfdHlwZTsKLSAgICAgICAgbW9kdWxlLT5tX2Jhc2UubV9pbmRleCA9IG1heF9tb2R1bGVfbnVtYmVyOwotICAgIH0KLSAgICBuYW1lID0gbW9kdWxlLT5tX25hbWU7CiAgICAgaWYgKG1vZHVsZV9hcGlfdmVyc2lvbiAhPSBQWVRIT05fQVBJX1ZFUlNJT04gJiYgbW9kdWxlX2FwaV92ZXJzaW9uICE9IFBZVEhPTl9BQklfVkVSU0lPTikgewogICAgICAgICBpbnQgZXJyOwogICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1J1bnRpbWVXYXJuaW5nLCAxLApAQCAtMTE5LDcgKzEyNiwzMCBAQAogICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgUFlUSE9OX0FQSV9WRVJTSU9OLCBuYW1lLCBtb2R1bGVfYXBpX3ZlcnNpb24pOwogICAgICAgICBpZiAoZXJyKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK1B5T2JqZWN0ICoKK1B5TW9kdWxlX0NyZWF0ZTIoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCit7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBQeU1vZHVsZU9iamVjdCAqbTsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKKyAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5dGhvbiBpbXBvcnQgbWFjaGluZXJ5IG5vdCBpbml0aWFsaXplZCIpOworICAgIGlmICghUHlNb2R1bGVEZWZfSW5pdChtb2R1bGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuYW1lID0gbW9kdWxlLT5tX25hbWU7CisgICAgaWYgKCFjaGVja19hcGlfdmVyc2lvbihuYW1lLCBtb2R1bGVfYXBpX3ZlcnNpb24pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobW9kdWxlLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vZHVsZSAlczogUHlNb2R1bGVfQ3JlYXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIG1fc2xvdHMiLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIE1ha2Ugc3VyZSBuYW1lIGlzIGZ1bGx5IHF1YWxpZmllZC4KIApAQCAtMTUwLDUyICsxODAsMjYxIEBACiAgICAgICAgIG1lbXNldChtLT5tZF9zdGF0ZSwgMCwgbW9kdWxlLT5tX3NpemUpOwogICAgIH0KIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KChQeU9iamVjdCopbSk7CiAgICAgaWYgKG1vZHVsZS0+bV9tZXRob2RzICE9IE5VTEwpIHsKLSAgICAgICAgbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgICAgICBpZiAobiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeU1vZHVsZV9BZGRGdW5jdGlvbnMoKFB5T2JqZWN0ICopIG0sIG1vZHVsZS0+bV9tZXRob2RzKSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBmb3IgKG1sID0gbW9kdWxlLT5tX21ldGhvZHM7IG1sLT5tbF9uYW1lICE9IE5VTEw7IG1sKyspIHsKLSAgICAgICAgICAgIGlmICgobWwtPm1sX2ZsYWdzICYgTUVUSF9DTEFTUykgfHwKLSAgICAgICAgICAgICAgICAobWwtPm1sX2ZsYWdzICYgTUVUSF9TVEFUSUMpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgZnVuY3Rpb25zIGNhbm5vdCBzZXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgTUVUSF9DTEFTUyBvciBNRVRIX1NUQVRJQyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ID0gUHlDRnVuY3Rpb25fTmV3RXgobWwsIChQeU9iamVjdCopbSwgbik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG4pOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBtbC0+bWxfbmFtZSwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihuKTsKICAgICB9CiAgICAgaWYgKG1vZHVsZS0+bV9kb2MgIT0gTlVMTCkgewotICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kdWxlLT5tX2RvYyk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZG9jX18iLCB2KSAhPSAwKSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICBpZiAoUHlNb2R1bGVfU2V0RG9jU3RyaW5nKChQeU9iamVjdCAqKSBtLCBtb2R1bGUtPm1fZG9jKSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQogICAgIG0tPm1kX2RlZiA9IG1vZHVsZTsKICAgICByZXR1cm4gKFB5T2JqZWN0KiltOwogfQogCitQeU9iamVjdCAqCitQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYsIFB5T2JqZWN0ICpzcGVjLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQoreworICAgIFB5TW9kdWxlRGVmX1Nsb3QqIGN1cl9zbG90OworICAgIFB5T2JqZWN0ICooKmNyZWF0ZSkoUHlPYmplY3QgKiwgUHlNb2R1bGVEZWYqKSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworICAgIGludCBoYXNfZXhlY3V0aW9uX3Nsb3RzID0gMDsKKyAgICBjaGFyICpuYW1lOworICAgIGludCByZXQ7CisKKyAgICBQeU1vZHVsZURlZl9Jbml0KGRlZik7CisKKyAgICBuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWVvYmopOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIWNoZWNrX2FwaV92ZXJzaW9uKG5hbWUsIG1vZHVsZV9hcGlfdmVyc2lvbikpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZGVmLT5tX3NpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vZHVsZSAlczogbV9zaXplIG1heSBub3QgYmUgbmVnYXRpdmUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIiwKKyAgICAgICAgICAgIG5hbWUpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZvciAoY3VyX3Nsb3QgPSBkZWYtPm1fc2xvdHM7IGN1cl9zbG90ICYmIGN1cl9zbG90LT5zbG90OyBjdXJfc2xvdCsrKSB7CisgICAgICAgIGlmIChjdXJfc2xvdC0+c2xvdCA9PSBQeV9tb2RfY3JlYXRlKSB7CisgICAgICAgICAgICBpZiAoY3JlYXRlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyBoYXMgbXVsdGlwbGUgY3JlYXRlIHNsb3RzIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWF0ZSA9IGN1cl9zbG90LT52YWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJfc2xvdC0+c2xvdCA8IDAgfHwgY3VyX3Nsb3QtPnNsb3QgPiBfUHlfbW9kX0xBU1RfU0xPVCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJtb2R1bGUgJXMgdXNlcyB1bmtub3duIHNsb3QgSUQgJWkiLAorICAgICAgICAgICAgICAgIG5hbWUsIGN1cl9zbG90LT5zbG90KTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBoYXNfZXhlY3V0aW9uX3Nsb3RzID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjcmVhdGUpIHsKKyAgICAgICAgbSA9IGNyZWF0ZShzcGVjLCBkZWYpOworICAgICAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiY3JlYXRpb24gb2YgbW9kdWxlICVzIGZhaWxlZCB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyZWF0aW9uIG9mIG1vZHVsZSAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBtID0gUHlNb2R1bGVfTmV3KG5hbWUpOworICAgICAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG0pKSB7CisgICAgICAgICgoUHlNb2R1bGVPYmplY3QqKW0pLT5tZF9zdGF0ZSA9IE5VTEw7CisgICAgICAgICgoUHlNb2R1bGVPYmplY3QqKW0pLT5tZF9kZWYgPSBkZWY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGRlZi0+bV9zaXplID4gMCB8fCBkZWYtPm1fdHJhdmVyc2UgfHwgZGVmLT5tX2NsZWFyIHx8IGRlZi0+bV9mcmVlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyBpcyBub3QgYSBtb2R1bGUgb2JqZWN0LCBidXQgcmVxdWVzdHMgbW9kdWxlIHN0YXRlIiwKKyAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc19leGVjdXRpb25fc2xvdHMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAibW9kdWxlICVzIHNwZWNpZmllcyBleGVjdXRpb24gc2xvdHMsIGJ1dCBkaWQgbm90IGNyZWF0ZSAiCisgICAgICAgICAgICAgICAgICAgICJhIE1vZHVsZVR5cGUgaW5zdGFuY2UiLAorICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fbWV0aG9kcyAhPSBOVUxMKSB7CisgICAgICAgIHJldCA9IFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhtLCBkZWYtPm1fbWV0aG9kcyk7CisgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fZG9jICE9IE5VTEwpIHsKKyAgICAgICAgcmV0ID0gUHlNb2R1bGVfU2V0RG9jU3RyaW5nKG0sIGRlZi0+bV9kb2MpOworICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG07CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICBQeV9YREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOworfQorCitpbnQKK1B5TW9kdWxlX0V4ZWNEZWYoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeU1vZHVsZURlZl9TbG90ICpjdXJfc2xvdDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGludCByZXQ7CisKKyAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShtb2R1bGUpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2R1bGUpICYmIGRlZi0+bV9zaXplID49IDApIHsKKyAgICAgICAgUHlNb2R1bGVPYmplY3QgKm1kID0gKFB5TW9kdWxlT2JqZWN0Kiltb2R1bGU7CisgICAgICAgIGlmIChtZC0+bWRfc3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogQWx3YXlzIHNldCBhIHN0YXRlIHBvaW50ZXI7IHRoaXMgc2VydmVzIGFzIGEgbWFya2VyIHRvIHNraXAKKyAgICAgICAgICAgICAqIG11bHRpcGxlIGluaXRpYWxpemF0aW9uIChpbXBvcnRsaWIucmVsb2FkKCkgaXMgbm8tb3ApICovCisgICAgICAgICAgICBtZC0+bWRfc3RhdGUgPSBQeU1lbV9NQUxMT0MoZGVmLT5tX3NpemUpOworICAgICAgICAgICAgaWYgKCFtZC0+bWRfc3RhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbXNldChtZC0+bWRfc3RhdGUsIDAsIGRlZi0+bV9zaXplKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fc2xvdHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKGN1cl9zbG90ID0gZGVmLT5tX3Nsb3RzOyBjdXJfc2xvdCAmJiBjdXJfc2xvdC0+c2xvdDsgY3VyX3Nsb3QrKykgeworICAgICAgICBzd2l0Y2ggKGN1cl9zbG90LT5zbG90KSB7CisgICAgICAgICAgICBjYXNlIFB5X21vZF9jcmVhdGU6CisgICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9DcmVhdGVGcm9tU2xvdHMgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHlfbW9kX2V4ZWM6CisgICAgICAgICAgICAgICAgcmV0ID0gKChpbnQgKCopKFB5T2JqZWN0ICopKWN1cl9zbG90LT52YWx1ZSkobW9kdWxlKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN1dGlvbiBvZiBtb2R1bGUgJXMgZmFpbGVkIHdpdGhvdXQgc2V0dGluZyBhbiBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uIG9mIG1vZHVsZSAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgJXMgaW5pdGlhbGl6ZWQgd2l0aCB1bmtub3duIHNsb3QgJWkiLAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBjdXJfc2xvdC0+c2xvdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK1B5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqbSwgUHlNZXRob2REZWYgKmZ1bmN0aW9ucykKK3sKKyAgICBQeU9iamVjdCAqbmFtZSwgKmZ1bmM7CisgICAgUHlNZXRob2REZWYgKmZkZWY7CisKKyAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZU9iamVjdChtKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGZkZWYgPSBmdW5jdGlvbnM7IGZkZWYtPm1sX25hbWUgIT0gTlVMTDsgZmRlZisrKSB7CisgICAgICAgIGlmICgoZmRlZi0+bWxfZmxhZ3MgJiBNRVRIX0NMQVNTKSB8fAorICAgICAgICAgICAgKGZkZWYtPm1sX2ZsYWdzICYgTUVUSF9TVEFUSUMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIGZ1bmN0aW9ucyBjYW5ub3Qgc2V0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgTUVUSF9DTEFTUyBvciBNRVRIX1NUQVRJQyIpOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChmZGVmLCAoUHlPYmplY3QqKW0sIG5hbWUpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgZmRlZi0+bWxfbmFtZSwgZnVuYykgIT0gMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIHJldHVybiAwOworfQorCitpbnQKK1B5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqZG9jKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIF9QeV9JREVOVElGSUVSKF9fZG9jX18pOworCisgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGRvYyk7CisgICAgaWYgKHYgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX19fZG9jX18sIHYpICE9IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYodik7CisgICAgcmV0dXJuIDA7Cit9CiAKIFB5T2JqZWN0ICoKIFB5TW9kdWxlX0dldERpY3QoUHlPYmplY3QgKm0pCkBAIC0yMTQsNiArNDUzLDcgQEAKIFB5T2JqZWN0KgogUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqbSkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewpAQCAtMjIyLDcgKzQ2Miw3IEBACiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSktPm1kX2RpY3Q7CiAgICAgaWYgKGQgPT0gTlVMTCB8fAotICAgICAgICAobmFtZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX25hbWVfXyIpKSA9PSBOVUxMIHx8CisgICAgICAgIChuYW1lID0gX1B5RGljdF9HZXRJdGVtSWQoZCwgJlB5SWRfX19uYW1lX18pKSA9PSBOVUxMIHx8CiAgICAgICAgICFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpCiAgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJuYW1lbGVzcyBtb2R1bGUiKTsKQEAgLTI0NSw2ICs0ODUsNyBAQAogUHlPYmplY3QqCiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbSkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX2ZpbGVfXyk7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgUHlPYmplY3QgKmZpbGVvYmo7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewpAQCAtMjUzLDcgKzQ5NCw3IEBACiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSktPm1kX2RpY3Q7CiAgICAgaWYgKGQgPT0gTlVMTCB8fAotICAgICAgICAoZmlsZW9iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIpKSA9PSBOVUxMIHx8CisgICAgICAgIChmaWxlb2JqID0gX1B5RGljdF9HZXRJdGVtSWQoZCwgJlB5SWRfX19maWxlX18pKSA9PSBOVUxMIHx8CiAgICAgICAgICFQeVVuaWNvZGVfQ2hlY2soZmlsZW9iaikpCiAgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJtb2R1bGUgZmlsZW5hbWUgbWlzc2luZyIpOwpAQCAtNDExLDYgKzY1MiwzMSBAQAogICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKGludGVycC0+aW1wb3J0bGliLCAiX21vZHVsZV9yZXByIiwgIk8iLCBtKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbW9kdWxlX2dldGF0dHJvKFB5TW9kdWxlT2JqZWN0ICptLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqYXR0ciwgKm1vZF9uYW1lOworICAgIGF0dHIgPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QgKiltLCBuYW1lKTsKKyAgICBpZiAoYXR0ciB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiBhdHRyOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKG0tPm1kX2RpY3QpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgICAgICBtb2RfbmFtZSA9IF9QeURpY3RfR2V0SXRlbUlkKG0tPm1kX2RpY3QsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKG1vZF9uYW1lKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlICclVScgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwgbW9kX25hbWUsIG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSBoYXMgbm8gYXR0cmlidXRlICclVSciLCBuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGludAogbW9kdWxlX3RyYXZlcnNlKFB5TW9kdWxlT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTQ2NCw3ICs3MzAsNiBAQAogICAgIHswfQogfTsKIAotCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJtb2R1bGUobmFtZVssIGRvY10pXG5cCiBcblwKQEAgLTQ4OCw3ICs3NTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChnZXRhdHRyb2Z1bmMpbW9kdWxlX2dldGF0dHJvLCAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggYTFhNjlmYS4uYmUxMmJlNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0zMyw2ICszMywyMiBAQAogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgcmV0dXJuIHRvdGFsOwogfQorCit2b2lkCitfUHlEZWJ1Z19QcmludFRvdGFsUmVmcyh2b2lkKSB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd3JlZmNvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dyZWZjb3VudCk7CisgICAgaWYgKHZhbHVlID09IFB5X1RydWUpCisgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICJbJSIgUFlfRk9STUFUX1NJWkVfVCAiZCByZWZzLCAiCisgICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYmxvY2tzXVxuIiwKKyAgICAgICAgICAgICAgICBfUHlfR2V0UmVmVG90YWwoKSwgX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpKTsKK30KICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCkBAIC0xNTQzLDYgKzE1NTksOSBAQAogdm9pZAogX1B5X1JlYWR5VHlwZXModm9pZCkKIHsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJhc2VPYmplY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9iamVjdCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVR5cGVfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHR5cGUgdHlwZSIpOwogCkBAIC0xNTU1LDYgKzE1NzQsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeVdlYWtyZWZfUHJveHlUeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgd2Vha3JlZiBwcm94eSB0eXBlIik7CiAKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJvb2xfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGJvb2wgdHlwZSIpOwogCkBAIC0xNTc5LDE1ICsxNjAxLDI3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTdXBlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc3VwZXIgdHlwZSIpOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCYXNlT2JqZWN0X1R5cGUpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvYmplY3QgdHlwZSIpOwotCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlSYW5nZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgcmFuZ2UgdHlwZSIpOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlEaWN0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBkaWN0IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIE9yZGVyZWREaWN0IHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RLZXlzX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVtc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfaXRlbXMgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdFZhbHVlc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfdmFsdWVzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlpdGVyYXRvciB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc2V0IHR5cGUiKTsKIApAQCAtMTYwNiw5ICsxNjQwLDYgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZsb2F0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmbG9hdCB0eXBlIik7CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7Ci0KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZyb3plblNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgZnJvemVuc2V0IHR5cGUiKTsKIApAQCAtMTgwOSw5ICsxODQwLDYgQEAKIAogI2VuZGlmCiAKLS8qIEhhY2sgdG8gZm9yY2UgbG9hZGluZyBvZiBweWNhcHN1bGUubyAqLwotUHlUeXBlT2JqZWN0ICpfUHlDYXBzdWxlX2hhY2sgPSAmUHlDYXBzdWxlX1R5cGU7Ci0KIAogLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIGFic3RyYWN0Lm8gKi8KIFB5X3NzaXplX3QgKCpfUHlfYWJzdHJhY3RfaGFjaykoUHlPYmplY3QgKikgPSBQeU9iamVjdF9TaXplOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDNjMzMyNTUuLjdjYzg4OWYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTUsNiArNSw3IEBACiAjaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogCkBAIC00Myw2ICs0NCw3IEBACiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU9iamVjdF9DYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogc3RhdGljIHZvaWQgX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogI2VuZGlmCkBAIC01MSw3ICs1Myw3IEBACiBzdGF0aWMgdm9pZCAqCiBfUHlNZW1fUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgLyogUHlNZW1fTWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCisgICAgLyogUHlNZW1fUmF3TWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCiAgICAgICAgZm9yIG1hbGxvYygwKSwgd2hpY2ggd291bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4gU29tZSBwbGF0Zm9ybXMgd291bGQKICAgICAgICByZXR1cm4gYSBwb2ludGVyIHdpdGggbm8gbWVtb3J5IGJlaGluZCBpdCwgd2hpY2ggd291bGQgYnJlYWsgcHltYWxsb2MuCiAgICAgICAgVG8gc29sdmUgdGhlc2UgcHJvYmxlbXMsIGFsbG9jYXRlIGFuIGV4dHJhIGJ5dGUuICovCkBAIC02MSw2ICs2MywyMCBAQAogfQogCiBzdGF0aWMgdm9pZCAqCitfUHlNZW1fUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIC8qIFB5TWVtX1Jhd0NhbGxvYygwLCAwKSBtZWFucyBjYWxsb2MoMSwgMSkuIFNvbWUgc3lzdGVtcyB3b3VsZCByZXR1cm4gTlVMTAorICAgICAgIGZvciBjYWxsb2MoMCwgMCksIHdoaWNoIHdvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIFNvbWUgcGxhdGZvcm1zCisgICAgICAgd291bGQgcmV0dXJuIGEgcG9pbnRlciB3aXRoIG5vIG1lbW9yeSBiZWhpbmQgaXQsIHdoaWNoIHdvdWxkIGJyZWFrCisgICAgICAgcHltYWxsb2MuICBUbyBzb2x2ZSB0aGVzZSBwcm9ibGVtcywgYWxsb2NhdGUgYW4gZXh0cmEgYnl0ZS4gKi8KKyAgICBpZiAobmVsZW0gPT0gMCB8fCBlbHNpemUgPT0gMCkgeworICAgICAgICBuZWxlbSA9IDE7CisgICAgICAgIGVsc2l6ZSA9IDE7CisgICAgfQorICAgIHJldHVybiBjYWxsb2MobmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkICoKIF9QeU1lbV9SYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA9PSAwKQpAQCAtMTIzLDkgKzEzOSw5IEBACiAjZW5kaWYKIAogCi0jZGVmaW5lIFBZUkFXX0ZVTkNTIF9QeU1lbV9SYXdNYWxsb2MsIF9QeU1lbV9SYXdSZWFsbG9jLCBfUHlNZW1fUmF3RnJlZQorI2RlZmluZSBQWVJBV19GVU5DUyBfUHlNZW1fUmF3TWFsbG9jLCBfUHlNZW1fUmF3Q2FsbG9jLCBfUHlNZW1fUmF3UmVhbGxvYywgX1B5TWVtX1Jhd0ZyZWUKICNpZmRlZiBXSVRIX1BZTUFMTE9DCi0jICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCisjICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X0NhbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCiAjZWxzZQogIyAgZGVmaW5lIFBZT0JKX0ZVTkNTIFBZUkFXX0ZVTkNTCiAjZW5kaWYKQEAgLTEzNSw3ICsxNTEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIFdlIHRhZyBlYWNoIGJsb2NrIHdpdGggYW4gQVBJIElEIGluIG9yZGVyIHRvIHRhZyBBUEkgdmlvbGF0aW9ucyAqLwogICAgIGNoYXIgYXBpX2lkOwotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiB9IGRlYnVnX2FsbG9jX2FwaV90Owogc3RhdGljIHN0cnVjdCB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgcmF3OwpAQCAtMTQ3LDEwICsxNjMsMTAgQEAKICAgICB7J28nLCB7TlVMTCwgUFlPQkpfRlVOQ1N9fQogICAgIH07CiAKLSNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCiAjZW5kaWYKIAotc3RhdGljIFB5TWVtQWxsb2NhdG9yIF9QeU1lbV9SYXcgPSB7CitzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTU4LDcgKzE3NCw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTY2LDcgKzE4Miw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5T2JqZWN0ID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5T2JqZWN0ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTkzLDkgKzIwOSwxMCBAQAogUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIApAQCAtMjIwLDcgKzIzNyw3IEBACiB9CiAKIHZvaWQKLVB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yMjgsMTYgKzI0NSwxNyBAQAogICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogKmFsbG9jYXRvciA9IF9QeU1lbTsgYnJlYWs7CiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiAqYWxsb2NhdG9yID0gX1B5T2JqZWN0OyBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duIGRvbWFpbiAqLworICAgICAgICAvKiB1bmtub3duIGRvbWFpbjogc2V0IGFsbCBhdHRyaWJ1dGVzIHRvIE5VTEwgKi8KICAgICAgICAgYWxsb2NhdG9yLT5jdHggPSBOVUxMOwogICAgICAgICBhbGxvY2F0b3ItPm1hbGxvYyA9IE5VTEw7CisgICAgICAgIGFsbG9jYXRvci0+Y2FsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5yZWFsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5mcmVlID0gTlVMTDsKICAgICB9CiB9CiAKIHZvaWQKLVB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yNzIsMTAgKzI5MCwxOCBAQAogICAgICAqLwogICAgIGlmIChzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5TWVtX1Jhdy5tYWxsb2MoX1B5TWVtX1Jhdy5jdHgsIHNpemUpOwogfQogCit2b2lkICoKK1B5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU1lbV9SYXcuY2FsbG9jKF9QeU1lbV9SYXcuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogdm9pZCoKIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC0zMDAsNiArMzI2LDE1IEBACiB9CiAKIHZvaWQgKgorUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAoZWxzaXplICE9IDAgJiYgbmVsZW0gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TWVtLmNhbGxvYyhfUHlNZW0uY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwordm9pZCAqCiBQeU1lbV9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLwpAQCAtMzUyLDYgKzM4NywxNSBAQAogfQogCiB2b2lkICoKK1B5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU9iamVjdC5jYWxsb2MoX1B5T2JqZWN0LmN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3ZvaWQgKgogUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KQEAgLTExMjIsOCArMTE2Niw5IEBACiAgKi8KIAogc3RhdGljIHZvaWQgKgotX1B5T2JqZWN0X01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlPYmplY3RfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogeworICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgYmxvY2sgKmJwOwogICAgIHBvb2xwIHBvb2w7CiAgICAgcG9vbHAgbmV4dDsKQEAgLTExMzEsNiArMTE3Niw5IEBACiAKICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzKys7CiAKKyAgICBhc3NlcnQobmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIGlmIChVTkxJS0VMWShydW5uaW5nX29uX3ZhbGdyaW5kID09IC0xKSkKICAgICAgICAgcnVubmluZ19vbl92YWxncmluZCA9IFJVTk5JTkdfT05fVkFMR1JJTkQ7CkBAIC0xMTM4LDkgKzExODYsOSBAQAogICAgICAgICBnb3RvIHJlZGlyZWN0OwogI2VuZGlmCiAKLSAgICAvKgotICAgICAqIFRoaXMgaW1wbGljaXRseSByZWRpcmVjdHMgbWFsbG9jKDApLgotICAgICAqLworICAgIGlmIChuZWxlbSA9PSAwIHx8IGVsc2l6ZSA9PSAwKQorICAgICAgICBnb3RvIHJlZGlyZWN0OworCiAgICAgaWYgKChuYnl0ZXMgLSAxKSA8IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEKSB7CiAgICAgICAgIExPQ0soKTsKICAgICAgICAgLyoKQEAgLTExNTgsNiArMTIwNiw4IEBACiAgICAgICAgICAgICBhc3NlcnQoYnAgIT0gTlVMTCk7CiAgICAgICAgICAgICBpZiAoKHBvb2wtPmZyZWVibG9jayA9ICooYmxvY2sgKiopYnApICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBVTkxPQ0soKTsKKyAgICAgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGJwLCAwLCBuYnl0ZXMpOwogICAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKWJwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyoKQEAgLTExNzAsNiArMTIyMCw4IEBACiAgICAgICAgICAgICAgICAgcG9vbC0+bmV4dG9mZnNldCArPSBJTkRFWDJTSVpFKHNpemUpOwogICAgICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBQb29sIGlzIGZ1bGwsIHVubGluayBmcm9tIHVzZWQgcG9vbHMuICovCkBAIC0xMTc4LDYgKzEyMzAsOCBAQAogICAgICAgICAgICAgbmV4dC0+cHJldnBvb2wgPSBwb29sOwogICAgICAgICAgICAgcG9vbC0+bmV4dHBvb2wgPSBuZXh0OwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjU3LDYgKzEzMTEsOCBAQAogICAgICAgICAgICAgICAgIGFzc2VydChicCAhPSBOVUxMKTsKICAgICAgICAgICAgICAgICBwb29sLT5mcmVlYmxvY2sgPSAqKGJsb2NrICoqKWJwOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKgpAQCAtMTI3Miw2ICsxMzI4LDggQEAKICAgICAgICAgICAgIHBvb2wtPmZyZWVibG9jayA9IGJwICsgc2l6ZTsKICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjgxLDcgKzEzMzksNyBAQAogICAgICAgICBwb29sID0gKHBvb2xwKXVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzczsKICAgICAgICAgYXNzZXJ0KChibG9jayopcG9vbCA8PSAoYmxvY2sqKXVzYWJsZV9hcmVuYXMtPmFkZHJlc3MgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSRU5BX1NJWkUgLSBQT09MX1NJWkUpOwotICAgICAgICBwb29sLT5hcmVuYWluZGV4ID0gdXNhYmxlX2FyZW5hcyAtIGFyZW5hczsKKyAgICAgICAgcG9vbC0+YXJlbmFpbmRleCA9ICh1aW50KSh1c2FibGVfYXJlbmFzIC0gYXJlbmFzKTsKICAgICAgICAgYXNzZXJ0KCZhcmVuYXNbcG9vbC0+YXJlbmFpbmRleF0gPT0gdXNhYmxlX2FyZW5hcyk7CiAgICAgICAgIHBvb2wtPnN6aWR4ID0gRFVNTVlfU0laRV9JRFg7CiAgICAgICAgIHVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzcyArPSBQT09MX1NJWkU7CkBAIC0xMzExLDEzICsxMzY5LDI5IEBACiAgICAgICogaGFzIGJlZW4gcmVhY2hlZC4KICAgICAgKi8KICAgICB7Ci0gICAgICAgIHZvaWQgKnJlc3VsdCA9IFB5TWVtX1Jhd01hbGxvYyhuYnl0ZXMpOworICAgICAgICB2b2lkICpyZXN1bHQ7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmVzdWx0ID0gUHlNZW1fUmF3Q2FsbG9jKG5lbGVtLCBlbHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBQeU1lbV9SYXdNYWxsb2MobmJ5dGVzKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzLS07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDAsIGN0eCwgMSwgbmJ5dGVzKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5T2JqZWN0X0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKIC8qIGZyZWUgKi8KIAogQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCkBAIC0xNTYxLDcgKzE2MzUsNyBAQAogI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5T2JqZWN0X01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIC8qIFRyZWF0IHJ1bm5pbmdfb25fdmFsZ3JpbmQgPT0gLTEgdGhlIHNhbWUgYXMgMCAqLwpAQCAtMTU4OSw3ICsxNjYzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXM7CiAgICAgICAgIH0KLSAgICAgICAgYnAgPSBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgYnAgPSBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogICAgICAgICBpZiAoYnAgIT0gTlVMTCkgewogICAgICAgICAgICAgbWVtY3B5KGJwLCBwLCBzaXplKTsKICAgICAgICAgICAgIF9QeU9iamVjdF9GcmVlKGN0eCwgcCk7CkBAIC0xNzQ1LDcgKzE4MTksNyBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKICAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KQEAgLTE3NTgsNyArMTgzMiwxMCBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIFB5X3NzaXplX3QgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CisgICAgZWxzZQorICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc2Nyw3ICsxODQ0LDcgQEAKICAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CiAgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKLSAgICBpZiAobmJ5dGVzID4gMCkKKyAgICBpZiAobmJ5dGVzID4gMCAmJiAhdXNlX2NhbGxvYykKICAgICAgICAgbWVtc2V0KHAgKyAyKlNTVCwgQ0xFQU5CWVRFLCBuYnl0ZXMpOwogCiAgICAgLyogYXQgdGFpbCwgd3JpdGUgcGFkIChTU1QgYnl0ZXMpIGFuZCBzZXJpYWxubyAoU1NUIGJ5dGVzKSAqLwpAQCAtMTc3OCw2ICsxODU1LDIxIEBACiAgICAgcmV0dXJuIHAgKyAyKlNTVDsKIH0KIAorc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgc2l6ZV90IG5ieXRlczsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7Cit9CisKIC8qIFRoZSBkZWJ1ZyBmcmVlIGZpcnN0IGNoZWNrcyB0aGUgMipTU1QgYnl0ZXMgb24gZWFjaCBlbmQgZm9yIHNhbml0eSAoaW4KICAgIHBhcnRpY3VsYXIsIHRoYXQgdGhlIEZPUkJJRERFTkJZVEVzIHdpdGggdGhlIGFwaSBJRCBhcmUgc3RpbGwgaW50YWN0KS4KICAgIFRoZW4gZmlsbHMgdGhlIG9yaWdpbmFsIGJ5dGVzIHdpdGggREVBREJZVEUuCkBAIC0xODExLDcgKzE5MDMsNyBAQAogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiAKICAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIGJ1bXBzZXJpYWxubygpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vZGljdG9iamVjdC5jIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMDk0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKQEAgLTAsMCArMSwyNDg2IEBACisvKiBPcmRlcmVkIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uLgorCitUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5lY2Vzc2FyaWx5IGV4cGxpY2l0bHkgZXF1aXZhbGVudCB0byB0aGUgcHVyZSBQeXRob24KK09yZGVyZWREaWN0IGNsYXNzIGluIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weS4gIFRoZSBzdHJhdGVneSB0aGVyZQoraW52b2x2ZXMgdXNpbmcgYSBkb3VibHktbGlua2VkLWxpc3QgdG8gY2FwdHVyZSB0aGUgb3JkZXIuICBXZSBrZWVwIHRvIHRoYXQKK3N0cmF0ZWd5LCB1c2luZyBhIGxvd2VyLWxldmVsIGxpbmtlZC1saXN0LgorCitBYm91dCB0aGUgTGlua2VkLUxpc3QKKz09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGhlIGxpbmtlZCBsaXN0IHdlIHVzZSBhIGJhc2ljIGRvdWJseS1saW5rZWQtbGlzdC4gIFVzaW5nIGEgY2lyY3VsYXJseS0KK2xpbmtlZC1saXN0IGRvZXMgaGF2ZSBzb21lIGJlbmVmaXRzLCBidXQgdGhleSBkb24ndCBhcHBseSBzbyBtdWNoIGhlcmUKK3NpbmNlIE9yZGVyZWREaWN0IGlzIGZvY3VzZWQgb24gdGhlIGVuZHMgb2YgdGhlIGxpc3QgKGZvciB0aGUgbW9zdCBwYXJ0KS4KK0Z1cnRoZXJtb3JlLCB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBvZiBnZW5lcmljIGxpbmtlZC1saXN0cyB0aGF0IHdlIHNpbXBseQorZG9uJ3QgbmVlZCBmb3IgT3JkZXJlZERpY3QuICBUaHVzIGEgc2ltcGxlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBtZWV0cyBvdXIKK25lZWRzLiAgQWx0ZXJuYXRpdmVzIHRvIG91ciBzaW1wbGUgYXBwcm9hY2ggaW5jbHVkZSB0aGUgUUNJUkNMRV8qCittYWNyb3MgZnJvbSBCU0QncyBxdWV1ZS5oLCBhbmQgdGhlIGxpbnV4J3MgbGlzdC5oLgorCitHZXR0aW5nIE8oMSkgTm9kZSBMb29rdXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgaW52YXJpYW50IG9mIFB5dGhvbidzIE9yZGVyZWREaWN0IGlzIHRoYXQgaXQgcHJlc2VydmVzIHRpbWUgY29tcGxleGl0eQorb2YgZGljdCdzIG1ldGhvZHMsIHBhcnRpY3VsYXJseSB0aGUgTygxKSBvcGVyYXRpb25zLiAgU2ltcGx5IGFkZGluZyBhCitsaW5rZWQtbGlzdCBvbiB0b3Agb2YgZGljdCBpcyBub3Qgc3VmZmljaWVudCBoZXJlOyBvcGVyYXRpb25zIGZvciBub2RlcyBpbgordGhlIG1pZGRsZSBvZiB0aGUgbGlua2VkLWxpc3QgaW1wbGljaXRseSByZXF1aXJlIGZpbmRpbmcgdGhlIG5vZGUgZmlyc3QuCitXaXRoIGEgc2ltcGxlIGxpbmtlZC1saXN0IGxpa2Ugd2UncmUgdXNpbmcsIHRoYXQgaXMgYW4gTyhuKSBvcGVyYXRpb24uCitDb25zZXF1ZW50bHksIG1ldGhvZHMgbGlrZSBfX2RlbGl0ZW1fXygpIHdvdWxkIGNoYW5nZSBmcm9tIE8oMSkgdG8gTyhuKSwKK3doaWNoIGlzIHVuYWNjZXB0YWJsZS4KKworSW4gb3JkZXIgdG8gcHJlc2VydmUgTygxKSBwZXJmb3JtYW5jZSBmb3Igbm9kZSByZW1vdmFsIChmaW5kaW5nIG5vZGVzKSwgd2UKK211c3QgZG8gYmV0dGVyIHRoYW4ganVzdCBsb29waW5nIHRocm91Z2ggdGhlIGxpbmtlZC1saXN0LiAgSGVyZSBhcmUgb3B0aW9ucword2UndmUgY29uc2lkZXJlZDoKKworMS4gdXNlIGEgc2Vjb25kIGRpY3QgdG8gbWFwIGtleXMgdG8gbm9kZXMgKGEgbGEgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24pLgorMi4ga2VlcCBhIHNpbXBsZSBoYXNoIHRhYmxlIG1pcnJvcmluZyB0aGUgb3JkZXIgb2YgZGljdCdzLCBtYXBwaW5nIGVhY2gga2V5CisgICB0byB0aGUgY29ycmVzcG9uZGluZyBub2RlIGluIHRoZSBsaW5rZWQtbGlzdC4KKzMuIHVzZSBhIHZlcnNpb24gb2Ygc2hhcmVkIGtleXMgKHNwbGl0IGRpY3QpIHRoYXQgYWxsb3dzIG5vbi11bmljb2RlIGtleXMuCis0LiBoYXZlIHRoZSB2YWx1ZSBzdG9yZWQgZm9yIGVhY2gga2V5IGJlIGEgKHZhbHVlLCBub2RlKSBwYWlyLCBhbmQgYWRqdXN0CisgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KKworVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAorbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCitXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCithcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKK3dvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKK3RoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBXZSBjb3VsZCBldmVuIGp1c3QgdXNlIGEgY3VzdG9tIGxvb2t1cCBmdW5jdGlvbgorZm9yIE9yZGVyZWREaWN0IHRoYXQgZmFjaWxpdGF0ZXMgb3VyIG5lZWQuICBIb3dldmVyLCBib3RoIGFwcHJvYWNoZXMgYXJlCitzaWduaWZpY2FudGx5IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBqdXN0IHVzaW5nIHBvaW50ZXIgYXJpdGhtZXRpYy4KKworVGhlIGNhdGNoIHdpdGggbWlycm9yaW5nIHRoZSBoYXNoIHRhYmxlIG9yZGVyaW5nIGlzIHRoYXQgd2UgaGF2ZSB0byBrZWVwCit0aGUgb3JkZXJpbmcgaW4gc3luYyB0aHJvdWdoIGFueSBkaWN0IHJlc2l6ZXMuICBIb3dldmVyLCB0aGF0IG9yZGVyIG9ubHkKK21hdHRlcnMgZHVyaW5nIG5vZGUgbG9va3VwLiAgV2UgY2FuIHNpbXBseSBkZWZlciBhbnkgcG90ZW50aWFsIHJlc2l6aW5nCit1bnRpbCB3ZSBuZWVkIHRvIGRvIGEgbG9va3VwLgorCitMaW5rZWQtTGlzdCBOb2RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3RvcmVzIGEgcG9pbnRlciB0byB0aGUgYXNzb2NpYXRlZCBrZXkgb25seS4KK09uZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIFB5RGljdEtleUVudHJ5IGluc3RlYWQuCitUaGlzIHdvdWxkIHNhdmUgb25lIHBvaW50ZXIgZGUtcmVmZXJlbmNlIHBlciBpdGVtLCB3aGljaCBpcyBuaWNlIGR1cmluZworY2FsbHMgdG8gdmFsdWVzKCkgYW5kIGl0ZW1zKCkuICBIb3dldmVyLCBpdCBhZGRzIHVubmVjZXNzYXJ5IG92ZXJoZWFkCitvdGhlcndpc2UsIHNvIHdlIHN0aWNrIHdpdGgganVzdCB0aGUga2V5LgorCitMaW5rZWQtTGlzdCBBUEkKKy0tLS0tLS0tLS0tLS0tLQorCitBcyBub3RlZCwgdGhlIGxpbmtlZC1saXN0IGltcGxlbWVudGVkIGhlcmUgZG9lcyBub3QgaGF2ZSBhbGwgdGhlIGJlbGxzIGFuZAord2hpc3RsZXMuICBIb3dldmVyLCB3ZSByZWNvZ25pemUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gbWF5IG5lZWQgdG8KK2NoYW5nZSB0byBhY2NvbW1vZGF0ZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgb3IgZXh0cmEgZnVuY3Rpb25hbGl0eS4gIFRvCit0aGF0IGVuZCwgV2UgdXNlIGEgc2ltcGxlIEFQSSB0byBpbnRlcmFjdCB3aXRoIHRoZSBsaW5rZWQtbGlzdC4gIEhlcmUncyBhCitzdW1tYXJ5IG9mIHRoZSBtZXRob2RzL21hY3JvczoKKworTm9kZSBpbmZvOgorCisqIF9vZGljdG5vZGVfS0VZKG5vZGUpCisqIF9vZGljdG5vZGVfVkFMVUUob2QsIG5vZGUpCisqIF9vZGljdG5vZGVfUFJFVihub2RlKQorKiBfb2RpY3Rub2RlX05FWFQobm9kZSkKKworTGlua2VkLUxpc3QgaW5mbzoKKworKiBfb2RpY3RfRklSU1Qob2QpCisqIF9vZGljdF9MQVNUKG9kKQorKiBfb2RpY3RfRU1QVFkob2QpCisqIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSAtIHVzZWQgaW4gcGxhY2Ugb2YgYGZvciAobm9kZT0uLi4pYAorCitGb3IgYWRkaW5nIG5vZGVzOgorCisqIF9vZGljdF9hZGRfaGVhZChvZCwgbm9kZSkKKyogX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKQorKiBfb2RpY3RfYWRkX25ld19ub2RlKG9kLCBrZXkpCisKK0ZvciByZW1vdmluZyBub2RlczoKKworKiBfb2RpY3RfcG9wX25vZGUob2QsIG5vZGUsIGtleSkKKyogX29kaWN0X2NsZWFyX25vZGUob2QsIG5vZGUpCisqIF9vZGljdF9jbGVhcl9ub2RlcyhvZCwgY2xlYXJfZWFjaCkKKworT3RoZXJzOgorCisqIF9vZGljdF9pbml0aWFsaXplKG9kKQorKiBfb2RpY3RfZmluZF9ub2RlKG9kLCBrZXkpCisqIF9vZGljdF9rZXlzX2VxdWFsKG9kMSwgb2QyKQorCitVc2VkLCBidXQgc3BlY2lmaWMgdG8gdGhlIGxpbmtlZC1saXN0IGltcGxlbWVudGF0aW9uOgorCisqIF9vZGljdF9mcmVlX2Zhc3Rfbm9kZXMob2QpCisKK0FuZCBoZXJlJ3MgYSBsb29rIGF0IGhvdyB0aGUgbGlua2VkLWxpc3QgcmVsYXRlcyB0byB0aGUgT3JkZXJlZERpY3QgQVBJOgorCis9PT09PT09PT09PT0gPT09ID09PSA9PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT09PSA9PT09ID09PT0gPT09ID09PT0gPT09ID09PQorbWV0aG9kICAgICAgIGtleSB2YWwgcHJldiBuZXh0IG1lbSAgMXN0IGxhc3QgZW1wdHkgaXRlciBmaW5kIGFkZCBybXYgIGNsciBrZXEKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CitfX2RlbF9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgWAorX19kZWxpdGVtX18gICAgICAgICAgICAgICAgICAgIGZyZWUgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICBub2RlCitfX2VxX18gICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19faXRlcl9fICAgICBYICAgICAgICAgICAgWAorX19uZXdfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCAgIFgKK19fcmVkdWNlX18gICBYICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fcmVwcl9fICAgICBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fcmV2ZXJzZWRfXyBYICAgICAgIFgKK19fc2V0aXRlbV9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkKK19fc2l6ZW9mX18gICAgICAgICAgICAgICAgICAgICBzaXplICAgICAgICAgIFgKK2NsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICB+ICAgICAgICAgICAgIH4gICAgICAgICAgICAgICAgICAgICAgICBYCitjb3B5ICAgICAgICAgWCAgIFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYCitpdGVtcyAgICAgICAgWCAgIFggICAgICAgIFgKK2tleXMgICAgICAgICBYICAgICAgICAgICAgWAorbW92ZV90b19lbmQgIFggICAgICAgICAgICAgICAgICAgICAgWCAgIFggICAgICAgICAgICAgICB+ICAgIGgvdCBrZXkKK3BvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Citwb3BpdGVtICAgICAgWCAgIFggICAgICAgICAgICAgZnJlZSBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUKK3NldGRlZmF1bHQgICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAgICB+Cit2YWx1ZXMgICAgICAgICAgIFggICAgICAgIFgKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CisKK19fZGVsaXRlbV9fIGlzIHRoZSBvbmx5IG1ldGhvZCB0aGF0IGRpcmVjdGx5IHJlbGllcyBvbiBmaW5kaW5nIGFuIGFyYml0cmFyeQorbm9kZSBpbiB0aGUgbGlua2VkLWxpc3QuICBFdmVyeXRoaW5nIGVsc2UgaXMgaXRlcmF0aW9uIG9yIHJlbGF0ZXMgdG8gdGhlCitlbmRzIG9mIHRoZSBsaW5rZWQtbGlzdC4KKworU2l0dWF0aW9uIHRoYXQgRW5kYW5nZXJzIENvbnNpc3RlbmN5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1VzaW5nIGEgcmF3IGxpbmtlZC1saXN0IGZvciBPcmRlcmVkRGljdCBleHBvc2VzIGEga2V5IHNpdHVhdGlvbiB0aGF0IGNhbgorY2F1c2UgcHJvYmxlbXMuICBJZiBhIG5vZGUgaXMgc3RvcmVkIGluIGEgdmFyaWFibGUsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQKK3RoZSBub2RlIG1heSBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQgYmVmb3JlIHRoZSB2YXJpYWJsZSBnZXRzIHVzZWQsIHRodXMKK3BvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzZWdtZW50YXRpb24gZmF1bHQuICBBIGtleSBwbGFjZSB3aGVyZSB0aGlzIHNob3dzCit1cCBpcyBkdXJpbmcgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0ICh2aWEgX29kaWN0X0ZPUkVBQ0ggb3IKK290aGVyd2lzZSkuCisKK0EgbnVtYmVyIG9mIHNvbHV0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHJlc29sdmUgdGhpcyBzaXR1YXRpb246CisKKyogZGVmZXIgbG9va2luZyB1cCB0aGUgbm9kZSB1bnRpbCBhcyBsYXRlIGFzIHBvc3NpYmxlIGFuZCBjZXJ0YWlubHkgYWZ0ZXIKKyAgYW55IGNvZGUgdGhhdCBjb3VsZCBwb3NzaWJseSByZXN1bHQgaW4gYSBkZWxldGlvbjsKKyogaWYgdGhlIG5vZGUgaXMgbmVlZGVkIGJvdGggYmVmb3JlIGFuZCBhZnRlciBhIHBvaW50IHdoZXJlIHRoZSBub2RlIG1pZ2h0CisgIGJlIHJlbW92ZWQsIGRvIGEgY2hlY2sgYmVmb3JlIHVzaW5nIHRoZSBub2RlIGF0IHRoZSAiYWZ0ZXIiIGxvY2F0aW9uIHRvCisgIHNlZSBpZiB0aGUgbm9kZSBpcyBzdGlsbCB2YWxpZDsKKyogbGlrZSB0aGUgbGFzdCBvbmUsIGJ1dCBzaW1wbHkgcHVsbCB0aGUgbm9kZSBhZ2FpbiB0byBlbnN1cmUgaXQncyByaWdodDsKKyoga2VlcCB0aGUga2V5IGluIHRoZSB2YXJpYWJsZSBpbnN0ZWFkIG9mIHRoZSBub2RlIGFuZCB0aGVuIGxvb2sgdXAgdGhlCisgIG5vZGUgdXNpbmcgdGhlIGtleSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIG5vZGUgaXMgbmVlZGVkICh0aGlzIGlzIHdoYXQKKyAgd2UgZG8gZm9yIHRoZSBpdGVyYXRvcnMpLgorCitBbm90aGVyIHJlbGF0ZWQgcHJvYmxlbSwgcHJlc2VydmluZyBjb25zaXN0ZW50IG9yZGVyaW5nIGR1cmluZyBpdGVyYXRpb24sCitpcyBkZXNjcmliZWQgYmVsb3cuICBUaGF0IG9uZSBpcyBub3QgZXhjbHVzaXZlIHRvIHVzaW5nIGxpbmtlZC1saXN0cy4KKworCitDaGFsbGVuZ2VzIGZyb20gU3ViY2xhc3NpbmcgZGljdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3JkZXJlZERpY3Qgc3ViY2xhc3NlcyBkaWN0LCB3aGljaCBpcyBhbiB1bnVzdWFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3bworYnVpbHRpbiB0eXBlcyAob3RoZXIgdGhhbiB0aGUgYmFzZSBvYmplY3QgdHlwZSkuICBEb2luZyBzbyByZXN1bHRzIGluCitzb21lIGNvbXBsaWNhdGlvbiBhbmQgZGVzZXJ2ZXMgZnVydGhlciBleHBsYW5hdGlvbi4gIFRoZXJlIGFyZSB0d28gdGhpbmdzCit0byBjb25zaWRlciBoZXJlLiAgRmlyc3QsIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyBvciB3aXRoIHdoYXQgYWRqdXN0bWVudHMKK2NhbiBPcmRlcmVkRGljdCBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZGljdCAoYXQgdGhlIEMgbGV2ZWwpPworU2Vjb25kLCBob3cgY2FuIHRoZSBPcmRlcmVkRGljdCBpbXBsZW1lbnRhdGlvbiBsZXZlcmFnZSB0aGUgZGljdAoraW1wbGVtZW50YXRpb24gZWZmZWN0aXZlbHkgd2l0aG91dCBpbnRyb2R1Y2luZyB1bm5lY2Vzc2FyeSBjb3VwbGluZyBvcgoraW5lZmZpY2llbmNpZXM/CisKK1RoaXMgc2Vjb25kIHBvaW50IGlzIHJlZmxlY3RlZCBoZXJlIGFuZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIHNvIHRoZQorZnVydGhlciBmb2N1cyBpcyBvbiB0aGUgZmlyc3QgcG9pbnQuICBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCBmb3IKK292ZXJyaWRkZW4gbWV0aG9kcywgdGhlIGRpY3QgaW1wbGVtZW50YXRpb24gaXMgZGVmZXJyZWQgdG8gYXMgbXVjaCBhcworcG9zc2libGUuICBGdXJ0aGVybW9yZSwgY291cGxpbmcgaXMgbGltaXRlZCB0byBhcyBsaXR0bGUgYXMgaXMgcmVhc29uYWJsZS4KKworQ29uY3JldGUgQVBJIENvbXBhdGliaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZSBvZiB0aGUgY29uY3JldGUgQy1BUEkgZm9yIGRpY3QgKFB5RGljdF8qKSB3aXRoIE9yZGVyZWREaWN0IGlzCitwcm9ibGVtYXRpYy4gIChTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwOTc3LikgIFRoZSBjb25jcmV0ZSBBUEkKK2hhcyBhIG51bWJlciBvZiBoYXJkLWNvZGVkIGFzc3VtcHRpb25zIHRpZWQgdG8gdGhlIGRpY3QgaW1wbGVtZW50YXRpb24uCitUaGlzIGlzLCBpbiBwYXJ0LCBkdWUgdG8gcGVyZm9ybWFuY2UgcmVhc29ucywgd2hpY2ggaXMgdW5kZXJzdGFuZGFibGUKK2dpdmVuIHRoZSBwYXJ0IGRpY3QgcGxheXMgaW4gUHl0aG9uLgorCitBbnkgYXR0ZW1wdCB0byByZXBsYWNlIGRpY3Qgd2l0aCBPcmRlcmVkRGljdCBmb3IgYW55IHJvbGUgaW4gdGhlCitpbnRlcnByZXRlciAoZS5nLiAqKmt3ZHMpIGZhY2VzIGEgY2hhbGxlbmdlLiAgU3VjaCBhbnkgZWZmb3J0IG11c3QKK3JlY29nbml6ZSB0aGF0IHRoZSBpbnN0YW5jZXMgaW4gYWZmZWN0ZWQgbG9jYXRpb25zIGN1cnJlbnRseSBpbnRlcmFjdCB3aXRoCit0aGUgY29uY3JldGUgQVBJLgorCitIZXJlIGFyZSBzb21lIHdheXMgdG8gYWRkcmVzcyB0aGlzIGNoYWxsZW5nZToKKworMS4gQ2hhbmdlIHRoZSByZWxldmFudCB1c2FnZSBvZiB0aGUgY29uY3JldGUgQVBJIGluIENQeXRob24gYW5kIGFkZAorICAgUHlEaWN0X0NoZWNrRXhhY3QoKSBjYWxscyB0byBlYWNoIG9mIHRoZSBjb25jcmV0ZSBBUEkgZnVuY2lvbnMuCisyLiBBZGp1c3QgdGhlIHJlbGV2YW50IGNvbmNyZXRlIEFQSSBmdW5jdGlvbnMgdG8gZXhwbGljaXRseSBhY2NvbW1vZGF0ZQorICAgT3JkZXJlZERpY3QuCiszLiBBcyB3aXRoICMxLCBhZGQgdGhlIGNoZWNrcywgYnV0IGltcHJvdmUgdGhlIGFic3RyYWN0IEFQSSB3aXRoIHNtYXJ0IGZhc3QKKyAgIHBhdGhzIGZvciBkaWN0IGFuZCBPcmRlcmVkRGljdCwgYW5kIHJlZmFjdG9yIENQeXRob24gdG8gdXNlIHRoZSBhYnN0cmFjdAorICAgQVBJLiAgSW1wcm92ZW1lbnRzIHRvIHRoZSBhYnN0cmFjdCBBUEkgd291bGQgYmUgdmFsdWFibGUgcmVnYXJkbGVzcy4KKworQWRkaW5nIHRoZSBjaGVja3MgdG8gdGhlIGNvbmNyZXRlIEFQSSB3b3VsZCBoZWxwIG1ha2UgYW55IGludGVycHJldGVyCitzd2l0Y2ggdG8gT3JkZXJlZERpY3QgbGVzcyBwYWluZnVsIGZvciBleHRlbnNpb24gbW9kdWxlcy4gIEhvd2V2ZXIsIHRoaXMKK3dvbid0IHdvcmsuICBUaGUgZXF1aXZhbGVudCBDIEFQSSBjYWxsIHRvIGBkaWN0Ll9fc2V0aXRlbV9fKG9iaiwgaywgdilgCitpcyAnUHlEaWN0X1NldEl0ZW0ob2JqLCBrLCB2KWAuICBUaGlzIGlsbHVzdHJhdGVzIGhvdyBzdWJjbGFzc2VzIGluIEMgY2FsbAordGhlIGJhc2UgY2xhc3MncyBtZXRob2RzLCBzaW5jZSB0aGVyZSBpcyBubyBlcXVpdmFsZW50IG9mIHN1cGVyKCkgaW4gdGhlCitDIEFQSS4gIENhbGxpbmcgaW50byBQeXRob24gZm9yIHBhcmVudCBjbGFzcyBBUEkgd291bGQgd29yaywgYnV0IHNvbWUKK2V4dGVuc2lvbiBtb2R1bGVzIGFscmVhZHkgcmVseSBvbiB0aGlzIGZlYXR1cmUgb2YgdGhlIGNvbmNyZXRlIEFQSS4KKworRm9yIHJlZmVyZW5jZSwgaGVyZSBpcyBhIGJyZWFrZG93biBvZiBzb21lIG9mIHRoZSBkaWN0IGNvbmNyZXRlIEFQSToKKworPT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PQorY29uY3JldGUgQVBJICAgICAgICAgICAgICAgdXNlcyAgICAgICAgICBhYnN0cmFjdCBBUEkKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0KK1B5RGljdF9DaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0NoZWNrCisoUHlEaWN0X0NoZWNrRXhhY3QpICAgICAgICAgICAgICAgICAgICAgIC0KKyhQeURpY3RfTmV3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorKFB5RGljdFByb3h5X05ldykgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfQ2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9Db250YWlucyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9Db250YWlucworUHlEaWN0X0NvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfU2V0SXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X1NldEl0ZW0KK1B5RGljdF9TZXRJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKK1B5RGljdF9EZWxJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0RlbEl0ZW0KK1B5RGljdF9EZWxJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0RlbEl0ZW1TdHJpbmcKK1B5RGljdF9HZXRJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IgICAgICAgICAgICAgICAgICBQeU9iamVjdF9HZXRJdGVtCitfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvciAgICAgICAgICAgICAgIC0KK1B5RGljdF9HZXRJdGVtU3RyaW5nICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKK1B5RGljdF9JdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0l0ZW1zCitQeURpY3RfS2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19LZXlzCitQeURpY3RfVmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19WYWx1ZXMKK1B5RGljdF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0xlbmd0aAorUHlEaWN0X05leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUl0ZXJfTmV4dAorX1B5RGljdF9OZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfTWVyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X01lcmdlRnJvbVNlcTIgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfQ2xlYXJGcmVlTGlzdCAgICAgICAgICAgICAgICAgICAgIC0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0hhc0tleVN0cmluZworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSGFzS2V5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09CisKKworVGhlIGRpY3QgSW50ZXJmYWNlIFJlbGF0aXZlIHRvIE9yZGVyZWREaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2luY2UgT3JkZXJlZERpY3Qgc3ViY2xhc3NlcyBkaWN0LCB1bmRlcnN0YW5kaW5nIHRoZSB2YXJpb3VzIG1ldGhvZHMgYW5kCithdHRyaWJ1dGVzIG9mIGRpY3QgaXMgaW1wb3J0YW50IGZvciBpbXBsZW1lbnRpbmcgT3JkZXJlZERpY3QuCisKK1JlbGV2YW50IFR5cGUgU2xvdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK3Nsb3QgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgICAgICAgb2JqZWN0ICAgICAgICAgICAgICBkaWN0Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQordHBfZGVhbGxvYyAgICAgICAgLSAgICAgICAgICAgICAgICBvYmplY3RfZGVhbGxvYyAgICAgIGRpY3RfZGVhbGxvYwordHBfcmVwciAgICAgICAgICAgX19yZXByX18gICAgICAgICBvYmplY3RfcmVwciAgICAgICAgIGRpY3RfcmVwcgorc3FfY29udGFpbnMgICAgICAgX19jb250YWluc19fICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfY29udGFpbnMKK21wX2xlbmd0aCAgICAgICAgIF9fbGVuX18gICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2xlbmd0aAorbXBfc3Vic2NyaXB0ICAgICAgX19nZXRpdGVtX18gICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3Rfc3Vic2NyaXB0CittcF9hc3Nfc3Vic2NyaXB0ICBfX3NldGl0ZW1fXyAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9hc3Nfc3ViCisgICAgICAgICAgICAgICAgICBfX2RlbGl0ZW1fXwordHBfaGFzaCAgICAgICAgICAgX19oYXNoX18gICAgICAgICBfUHlfSGFzaFBvaW50ZXIgICAgIC4uLl9IYXNoTm90SW1wbAordHBfc3RyICAgICAgICAgICAgX19zdHJfXyAgICAgICAgICBvYmplY3Rfc3RyICAgICAgICAgIC0KK3RwX2dldGF0dHJvICAgICAgIF9fZ2V0YXR0cmlidXRlX18gLi4uX0dlbmVyaWNHZXRBdHRyICAocmVwZWF0ZWQpCisgICAgICAgICAgICAgICAgICBfX2dldGF0dHJfXwordHBfc2V0YXR0cm8gICAgICAgX19zZXRhdHRyX18gICAgICAuLi5fR2VuZXJpY1NldEF0dHIgIChkaXNhYmxlZCkKK3RwX2RvYyAgICAgICAgICAgIF9fZG9jX18gICAgICAgICAgKGxpdGVyYWwpICAgICAgICAgICBkaWN0aW9uYXJ5X2RvYwordHBfdHJhdmVyc2UgICAgICAgLSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfdHJhdmVyc2UKK3RwX2NsZWFyICAgICAgICAgIC0gICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3RwX2NsZWFyCit0cF9yaWNoY29tcGFyZSAgICBfX2VxX18gICAgICAgICAgIG9iamVjdF9yaWNoY29tcGFyZSAgZGljdF9yaWNoY29tcGFyZQorICAgICAgICAgICAgICAgICAgX19uZV9fCit0cF93ZWFrbGlzdG9mZnNldCAoX193ZWFrcmVmX18pICAgIC0gICAgICAgICAgICAgICAgICAgLQordHBfaXRlciAgICAgICAgICAgX19pdGVyX18gICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfaXRlcgordHBfZGljdG9mZnNldCAgICAgKF9fZGljdF9fKSAgICAgICAtICAgICAgICAgICAgICAgICAgIC0KK3RwX2luaXQgICAgICAgICAgIF9faW5pdF9fICAgICAgICAgb2JqZWN0X2luaXQgICAgICAgICBkaWN0X2luaXQKK3RwX2FsbG9jICAgICAgICAgIC0gICAgICAgICAgICAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYyAocmVwZWF0ZWQpCit0cF9uZXcgICAgICAgICAgICBfX25ld19fICAgICAgICAgIG9iamVjdF9uZXcgICAgICAgICAgZGljdF9uZXcKK3RwX2ZyZWUgICAgICAgICAgIC0gICAgICAgICAgICAgICAgUHlPYmplY3RfRGVsICAgICAgICBQeU9iamVjdF9HQ19EZWwKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKK1JlbGV2YW50IE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0KKworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorbWV0aG9kICAgICAgICAgICBvYmplY3QgICAgICAgICAgICAgIGRpY3QKKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT0KK19fcmVkdWNlX18gICAgICAgb2JqZWN0X3JlZHVjZSAgICAgICAtCitfX3NpemVvZl9fICAgICAgIG9iamVjdF9zaXplb2YgICAgICAgZGljdF9zaXplb2YKK2NsZWFyICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2NsZWFyCitjb3B5ICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9jb3B5Citmcm9ta2V5cyAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9mcm9ta2V5cworZ2V0ICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfZ2V0CitpdGVtcyAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdGl0ZW1zX25ldwora2V5cyAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RrZXlzX25ldworcG9wICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfcG9wCitwb3BpdGVtICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9wb3BpdGVtCitzZXRkZWZhdWx0ICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9zZXRkZWZhdWx0Cit1cGRhdGUgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF91cGRhdGUKK3ZhbHVlcyAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0dmFsdWVzX25ldworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorCisKK1B1cmUgUHl0aG9uIE9yZGVyZWREaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitBcyBhbHJlYWR5IG5vdGVkLCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHB1cmUgUHl0aG9uIE9yZGVyZWREaWN0CitpbXBsZW1lbnRhdGlvbiBpcyBhIGtleSBnb2FsIG9mIHRoaXMgQyBpbXBsZW1lbnRhdGlvbi4gIFRvIGZ1cnRoZXIgdGhhdAorZ29hbCwgaGVyZSdzIGEgc3VtbWFyeSBvZiBob3cgT3JkZXJlZERpY3Qtc3BlY2lmaWMgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQKK2luIGNvbGxlY3Rpb25zL19faW5pdF9fLnB5LiAgQWxzbyBwcm92aWRlZCBpcyBhbiBpbmRpY2F0aW9uIG9mIHdoaWNoCittZXRob2RzIGRpcmVjdGx5IG11dGF0ZSBvciBpdGVyYXRlIHRoZSBvYmplY3QsIGFzIHdlbGwgYXMgYW55IHJlbGF0aW9uc2hpcAord2l0aCB0aGUgdW5kZXJseWluZyBsaW5rZWQtbGlzdC4KKworPT09PT09PT09PT09PSA9PT09PT09PT09PT09PSA9PSA9PT09PT09PT09PT09PT09ID09PSA9PT0gPT09PQorbWV0aG9kICAgICAgICBpbXBsIHVzZWQgICAgICBsbCB1c2VzICAgICAgICAgICAgIGlucSBtdXQgaXRlcgorPT09PT09PT09PT09PSA9PT09PT09PT09PT09PSA9PSA9PT09PT09PT09PT09PT09ID09PSA9PT0gPT09PQorX19jb250YWluc19fICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19fZGVsaXRlbV9fICAgT3JkZXJlZERpY3QgICAgWSAgZGljdC5fX2RlbGl0ZW1fXyAgICAgWAorX19lcV9fICAgICAgICBPcmRlcmVkRGljdCAgICBOICBPcmRlcmVkRGljdCAgICAgIH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdC5fX2VxX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyX18KK19fZ2V0aXRlbV9fICAgZGljdCAgICAgICAgICAgLSAgLSAgICAgICAgICAgICAgICBYCitfX2l0ZXJfXyAgICAgIE9yZGVyZWREaWN0ICAgIFkgIC0gICAgICAgICAgICAgICAgICAgICAgICBYCitfX2luaXRfXyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIHVwZGF0ZQorX19sZW5fXyAgICAgICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19fbmVfXyAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgX19lcV9fICAgICAgICAgICB+CitfX3JlZHVjZV9fICAgIE9yZGVyZWREaWN0ICAgIE4gIE9yZGVyZWREaWN0ICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dldGl0ZW1fXworX19yZXByX18gICAgICBPcmRlcmVkRGljdCAgICBOICBfX2NsYXNzX18gICAgICAgIH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMKK19fcmV2ZXJzZWRfXyAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgICAgIFgKK19fc2V0aXRlbV9fICAgT3JkZXJlZERpY3QgICAgWSAgX19jb250YWluc19fICAgICAgICAgWAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fCitfX3NpemVvZl9fICAgIE9yZGVyZWREaWN0ICAgIFkgIF9fbGVuX18gICAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RpY3RfXworY2xlYXIgICAgICAgICBPcmRlcmVkRGljdCAgICBZICBkaWN0LmNsZWFyICAgICAgICAgICBYCitjb3B5ICAgICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY2xhc3NfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luaXRfXworZnJvbWtleXMgICAgICBPcmRlcmVkRGljdCAgICBOICBfX3NldGl0ZW1fXworZ2V0ICAgICAgICAgICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIH4KK2l0ZW1zICAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgSXRlbXNWaWV3ICAgICAgICAgICAgICAgIFgKK2tleXMgICAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgS2V5c1ZpZXcgICAgICAgICAgICAgICAgIFgKK21vdmVfdG9fZW5kICAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgWAorcG9wICAgICAgICAgICBPcmRlcmVkRGljdCAgICBOICBfX2NvbnRhaW5zX18gICAgICAgICBYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVsaXRlbV9fCitwb3BpdGVtICAgICAgIE9yZGVyZWREaWN0ICAgIFkgIGRpY3QucG9wICAgICAgICAgICAgIFgKK3NldGRlZmF1bHQgICAgT3JkZXJlZERpY3QgICAgTiAgX19jb250YWluc19fICAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3NldGl0ZW1fXwordXBkYXRlICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBfX3NldGl0ZW1fXyAgICAgICAgICB+Cit2YWx1ZXMgICAgICAgIE11dGFibGVNYXBwaW5nIC0gIFZhbHVlc1ZpZXcgICAgICAgICAgICAgICBYCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CisKK19fcmV2ZXJzZWRfXyBhbmQgbW92ZV90b19lbmQgYXJlIGJvdGggZXhjbHVzaXZlIHRvIE9yZGVyZWREaWN0LgorCisKK0MgT3JkZXJlZERpY3QgSW1wbGVtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorc2xvdCAgICAgICAgICAgICAgaW1wbAorPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQordHBfZGVhbGxvYyAgICAgICAgb2RpY3RfZGVhbGxvYwordHBfcmVwciAgICAgICAgICAgb2RpY3RfcmVwcgorbXBfYXNzX3N1YnNjcmlwdCAgb2RpY3RfYXNzX3N1YgordHBfZG9jICAgICAgICAgICAgb2RpY3RfZG9jCit0cF90cmF2ZXJzZSAgICAgICBvZGljdF90cmF2ZXJzZQordHBfY2xlYXIgICAgICAgICAgb2RpY3RfdHBfY2xlYXIKK3RwX3JpY2hjb21wYXJlICAgIG9kaWN0X3JpY2hjb21wYXJlCit0cF93ZWFrbGlzdG9mZnNldCAob2Zmc2V0KQordHBfaXRlciAgICAgICAgICAgb2RpY3RfaXRlcgordHBfZGljdG9mZnNldCAgICAgKG9mZnNldCkKK3RwX2luaXQgICAgICAgICAgIG9kaWN0X2luaXQKK3RwX2FsbG9jICAgICAgICAgIChyZXBlYXRlZCkKK3RwX25ldyAgICAgICAgICAgIG9kaWN0X25ldworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CittZXRob2QgICAgICAgICAgICBpbXBsCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CitfX3JlZHVjZV9fICAgICAgICBvZGljdF9yZWR1Y2UKK19fc2l6ZW9mX18gICAgICAgIG9kaWN0X3NpemVvZgorY2xlYXIgICAgICAgICAgICAgb2RpY3RfY2xlYXIKK2NvcHkgICAgICAgICAgICAgIG9kaWN0X2NvcHkKK2Zyb21rZXlzICAgICAgICAgIG9kaWN0X2Zyb21rZXlzCitpdGVtcyAgICAgICAgICAgICBvZGljdGl0ZW1zX25ldwora2V5cyAgICAgICAgICAgICAgb2RpY3RrZXlzX25ldworcG9wICAgICAgICAgICAgICAgb2RpY3RfcG9wCitwb3BpdGVtICAgICAgICAgICBvZGljdF9wb3BpdGVtCitzZXRkZWZhdWx0ICAgICAgICBvZGljdF9zZXRkZWZhdWx0Cit1cGRhdGUgICAgICAgICAgICBvZGljdF91cGRhdGUKK3ZhbHVlcyAgICAgICAgICAgIG9kaWN0dmFsdWVzX25ldworPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorCitJbmhlcml0ZWQgdW5jaGFuZ2VkIGZyb20gb2JqZWN0L2RpY3Q6CisKKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT0KK21ldGhvZCAgICAgICAgICAgdHlwZSBmaWVsZAorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorLSAgICAgICAgICAgICAgICB0cF9mcmVlCitfX2NvbnRhaW5zX18gICAgIHRwX2FzX3NlcXVlbmNlLnNxX2NvbnRhaW5zCitfX2dldGF0dHJfXyAgICAgIHRwX2dldGF0dHJvCitfX2dldGF0dHJpYnV0ZV9fIHRwX2dldGF0dHJvCitfX2dldGl0ZW1fXyAgICAgIHRwX2FzX21hcHBpbmcubXBfc3Vic2NyaXB0CitfX2hhc2hfXyAgICAgICAgIHRwX2hhc2gKK19fbGVuX18gICAgICAgICAgdHBfYXNfbWFwcGluZy5tcF9sZW5ndGgKK19fc2V0YXR0cl9fICAgICAgdHBfc2V0YXR0cm8KK19fc3RyX18gICAgICAgICAgdHBfc3RyCitnZXQgICAgICAgICAgICAgIC0KKz09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitPdGhlciBDaGFsbGVuZ2VzCis9PT09PT09PT09PT09PT09CisKK1ByZXNlcnZpbmcgT3JkZXJpbmcgRHVyaW5nIEl0ZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEdXJpbmcgaXRlcmF0aW9uIHRocm91Z2ggYW4gT3JkZXJlZERpY3QsIGl0IGlzIHBvc3NpYmxlIHRoYXQgaXRlbXMgY291bGQKK2dldCBhZGRlZCwgcmVtb3ZlZCwgb3IgcmVvcmRlcmVkLiAgRm9yIGEgbGlua2VkLWxpc3QgaW1wbGVtZW50YXRpb24sIGFzCit3aXRoIHNvbWUgb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGF0IHNpdHVhdGlvbiBtYXkgbGVhZCB0byB1bmRlZmluZWQKK2JlaGF2aW9yLiAgVGhlIGRvY3VtZW50YXRpb24gZm9yIGRpY3QgbWVudGlvbnMgdGhpcyBpbiB0aGUgYGl0ZXIoKWAgc2VjdGlvbgorb2YgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvbGlicmFyeS9zdGR0eXBlcy5odG1sI2RpY3Rpb25hcnktdmlldy1vYmplY3RzLgorSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiB3ZSBmb2xsb3cgZGljdCdzIGxlYWQgKGFzIGRvZXMgdGhlIHB1cmUgUHl0aG9uCitpbXBsZW1lbnRhdGlvbikgZm9yIF9faXRlcl9fKCksIGtleXMoKSwgdmFsdWVzKCksIGFuZCBpdGVtcygpLgorCitGb3IgaW50ZXJuYWwgaXRlcmF0aW9uICh1c2luZyBfb2RpY3RfRk9SRUFDSCBvciBub3QpLCB0aGVyZSBpcyBzdGlsbCB0aGUKK3Jpc2sgdGhhdCBub3QgYWxsIG5vZGVzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNlZW4gaW4gdGhlIGxvb3AgYWN0dWFsbHkgZ2V0CitzZWVuLiAgVGh1cywgd2UgYXJlIGNhcmVmdWwgaW4gZWFjaCBvZiB0aG9zZSBwbGFjZXMgdG8gZW5zdXJlIHRoYXQgdGhleQorYXJlLiAgVGhpcyBjb21lcywgb2YgY291cnNlLCBhdCBhIHNtYWxsIHByaWNlIGF0IGVhY2ggbG9jYXRpb24uICBUaGUKK3NvbHV0aW9ucyBhcmUgbXVjaCB0aGUgc2FtZSBhcyB0aG9zZSBkZXRhaWxlZCBpbiB0aGUgYFNpdHVhdGlvbiB0aGF0CitFbmRhbmdlcnMgQ29uc2lzdGVuY3lgIHNlY3Rpb24gYWJvdmUuCisKKworUG90ZW50aWFsIE9wdGltaXphdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyogQWxsb2NhdGUgdGhlIG5vZGVzIGFzIGEgYmxvY2sgdmlhIG9kX2Zhc3Rfbm9kZXMgaW5zdGVhZCBvZiBpbmRpdmlkdWFsbHkuCisgIC0gU2V0IG5vZGUtPmtleSB0byBOVUxMIHRvIGluZGljYXRlIHRoZSBub2RlIGlzIG5vdC1pbi11c2UuCisgIC0gQWRkIF9vZGljdF9FWElTVFMoKT8KKyAgLSBIb3cgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgYWNyb3NzIHJlc2l6ZXM/ICBFeGlzdGluZyBub2RlIHBvaW50ZXJzCisgICAgd291bGQgYmUgaW52YWxpZGF0ZSBhZnRlciBhIHJlc2l6ZSwgd2hpY2ggaXMgcGFydGljdWxhcmx5IHByb2JsZW1hdGljCisgICAgZm9yIHRoZSBpdGVyYXRvcnMuCisqIFVzZSBhIG1vcmUgc3RyZWFtLWxpbmVkIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZSgpIGFuZCwgbGlrZWx5IGluZGlyZWN0bHksCisgIF9faW5pdF9fKCkuCisKKyovCisKKy8qIFRPRE8KKworc29vbmVyOgorLSByZWVudHJhbmN5IChtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBhdCBhIHRocmVhZC1zYWZlIHN0YXRlIHdoZW4gY2FsbGluZworICBpbnRvIFB5dGhvbikuICBJJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIG11bHRpcGxlIHRpbWVzLCBidXQgd2FudCB0bworICBtYWtlIG9uZSBtb3JlIHBhc3MuCistIGFkZCB1bml0IHRlc3RzIGZvciByZWVudHJhbmN5PworCitsYXRlcjoKKy0gbWFrZSB0aGUgZGljdCB2aWV3cyBzdXBwb3J0IHRoZSBmdWxsIHNldCBBUEkgKHRoZSBwdXJlIFB5dGhvbiBpbXBsIGRvZXMpCistIGltcGxlbWVudCBhIGZ1bGxlciBNdXRhYmxlTWFwcGluZyBBUEkgaW4gQz8KKy0gbW92ZSB0aGUgTXV0YWJsZU1hcHBpbmcgaW1wbGVtZW50YXRpb24gdG8gYWJzdHJhY3QuYz8KKy0gb3B0aW1pemUgbXV0YWJsZW1hcHBpbmdfdXBkYXRlCistIHVzZSBQeU9iamVjdF9NQUxMT0MgKHNtYWxsIG9iamVjdCBhbGxvY2F0b3IpIGZvciBvZGljdCBub2Rlcz8KKy0gc3VwcG9ydCBzdWJjbGFzc2VzIGJldHRlciAoZS5nLiBpbiBvZGljdF9yaWNoY29tcGFyZSkKKworKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKwordHlwZWRlZiBzdHJ1Y3QgX29kaWN0bm9kZSBfT0RpY3ROb2RlOworCisvKiBQeU9EaWN0T2JqZWN0ICovCitzdHJ1Y3QgX29kaWN0b2JqZWN0IHsKKyAgICBQeURpY3RPYmplY3Qgb2RfZGljdDsgICAgICAgIC8qIHRoZSB1bmRlcmx5aW5nIGRpY3QgKi8KKyAgICBfT0RpY3ROb2RlICpvZF9maXJzdDsgICAgICAgIC8qIGZpcnN0IG5vZGUgaW4gdGhlIGxpbmtlZCBsaXN0LCBpZiBhbnkgKi8KKyAgICBfT0RpY3ROb2RlICpvZF9sYXN0OyAgICAgICAgIC8qIGxhc3Qgbm9kZSBpbiB0aGUgbGlua2VkIGxpc3QsIGlmIGFueSAqLworICAgIC8qIG9kX3NpemUgYW5kIG9kX2Zhc3Rfbm9kZXMgYXJlIG1hbmFnZWQgYnkgX29kaWN0X3Jlc2l6ZSgpICovCisgICAgUHlfc3NpemVfdCBvZF9zaXplOyAgICAgICAgICAvKiBoYXNoIHRhYmxlIHRoYXQgbWlycm9ycyB0aGUgZGljdCB0YWJsZSAqLworICAgIF9PRGljdE5vZGUgKipvZF9mYXN0X25vZGVzOyAgLyogbWFuYWdlZCBieSBfb2RpY3RfcmVzaXplKCkgKi8KKyAgICBzaXplX3Qgb2Rfc3RhdGU7ICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBMTCBjaGFuZ2VzICovCisgICAgUHlPYmplY3QgKm9kX2luc3RfZGljdDsgICAgICAvKiBPcmRlcmVkRGljdCgpLl9fZGljdF9fICovCisgICAgUHlPYmplY3QgKm9kX3dlYWtyZWZsaXN0OyAgICAvKiBob2xkcyB3ZWFrcmVmcyB0byB0aGUgb2RpY3QgKi8KK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogb2RpY3Qga2V5cyAoYSBzaW1wbGUgZG91Ymx5LWxpbmtlZCBsaXN0KQorICovCisKK3N0cnVjdCBfb2RpY3Rub2RlIHsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIF9PRGljdE5vZGUgKm5leHQ7CisgICAgX09EaWN0Tm9kZSAqcHJldjsKK307CisKKyNkZWZpbmUgX29kaWN0bm9kZV9LRVkobm9kZSkgXAorICAgIChub2RlLT5rZXkpCisjZGVmaW5lIF9vZGljdG5vZGVfSEFTSChub2RlKSBcCisgICAgKG5vZGUtPmhhc2gpCisvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyNkZWZpbmUgX29kaWN0bm9kZV9WQUxVRShub2RlLCBvZCkgXAorICAgIFB5T0RpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilvZCwgX29kaWN0bm9kZV9LRVkobm9kZSkpCisvKiBJZiBuZWVkZWQgd2UgY291bGQgYWxzbyBoYXZlIF9vZGljdG5vZGVfSEFTSC4gKi8KKyNkZWZpbmUgX29kaWN0bm9kZV9QUkVWKG5vZGUpIChub2RlLT5wcmV2KQorI2RlZmluZSBfb2RpY3Rub2RlX05FWFQobm9kZSkgKG5vZGUtPm5leHQpCisKKyNkZWZpbmUgX29kaWN0X0ZJUlNUKG9kKSAoKChQeU9EaWN0T2JqZWN0ICopb2QpLT5vZF9maXJzdCkKKyNkZWZpbmUgX29kaWN0X0xBU1Qob2QpICgoKFB5T0RpY3RPYmplY3QgKilvZCktPm9kX2xhc3QpCisjZGVmaW5lIF9vZGljdF9FTVBUWShvZCkgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkKKyNkZWZpbmUgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIFwKKyAgICBmb3IgKG5vZGUgPSBfb2RpY3RfRklSU1Qob2QpOyBub2RlICE9IE5VTEw7IG5vZGUgPSBfb2RpY3Rub2RlX05FWFQobm9kZSkpCisKKworc3RhdGljIHZvaWQKK19vZGljdF9mcmVlX2Zhc3Rfbm9kZXMoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBpZiAob2QtPm9kX2Zhc3Rfbm9kZXMpIHsKKyAgICAgICAgUHlNZW1fRlJFRShvZC0+b2RfZmFzdF9ub2Rlcyk7CisgICAgfQorfQorCisvKiBSZXR1cm4gdGhlIGluZGV4IGludG8gdGhlIGhhc2ggdGFibGUsIHJlZ2FyZGxlc3Mgb2YgYSB2YWxpZCBub2RlLiAqLworc3RhdGljIFB5X3NzaXplX3QKK19vZGljdF9nZXRfaW5kZXhfaGFzaChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworCisgICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCisgICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKK30KKworLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KK3N0YXRpYyBpbnQKK19vZGljdF9yZXNpemUoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgX09EaWN0Tm9kZSAqKmZhc3Rfbm9kZXMsICpub2RlOworCisgICAgLyogSW5pdGlhbGl6ZSBhIG5ldyAiZmFzdCBub2RlcyIgdGFibGUuICovCisgICAgc2l6ZSA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzLT5ka19zaXplOworICAgIGZhc3Rfbm9kZXMgPSBQeU1lbV9ORVcoX09EaWN0Tm9kZSAqLCBzaXplKTsKKyAgICBpZiAoZmFzdF9ub2RlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgZmFzdF9ub2Rlc1tpXSA9IE5VTEw7CisKKyAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLworICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X2hhc2gob2QsIF9vZGljdG5vZGVfS0VZKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CisgICAgICAgIGlmIChpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBmYXN0X25vZGVzW2ldID0gbm9kZTsKKyAgICB9CisKKyAgICAvKiBSZXBsYWNlIHRoZSBvbGQgZmFzdCBub2RlcyB0YWJsZS4gKi8KKyAgICBfb2RpY3RfZnJlZV9mYXN0X25vZGVzKG9kKTsKKyAgICBvZC0+b2RfZmFzdF9ub2RlcyA9IGZhc3Rfbm9kZXM7CisgICAgb2QtPm9kX3NpemUgPSBzaXplOworICAgIHJldHVybiAwOworfQorCisvKiBSZXR1cm4gdGhlIGluZGV4IGludG8gdGhlIGhhc2ggdGFibGUsIHJlZ2FyZGxlc3Mgb2YgYSB2YWxpZCBub2RlLiAqLworc3RhdGljIFB5X3NzaXplX3QKK19vZGljdF9nZXRfaW5kZXgoUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5czsKKworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtleXMgPSAoKFB5RGljdE9iamVjdCAqKW9kKS0+bWFfa2V5czsKKworICAgIC8qIEVuc3VyZSBvZF9mYXN0X25vZGVzIGFuZCBka19lbnRyaWVzIGFyZSBpbiBzeW5jLiAqLworICAgIGlmIChrZXlzLT5ka19zaXplICE9IG9kLT5vZF9zaXplKSB7CisgICAgICAgIGludCByZXNpemVfcmVzID0gX29kaWN0X3Jlc2l6ZShvZCk7CisgICAgICAgIGlmIChyZXNpemVfcmVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gX29kaWN0X2dldF9pbmRleF9oYXNoKG9kLCBrZXksIGhhc2gpOworfQorCitzdGF0aWMgaW50Citfb2RpY3RfaW5pdGlhbGl6ZShQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBvZC0+b2Rfc3RhdGUgPSAwOworICAgIF9vZGljdF9GSVJTVChvZCkgPSBOVUxMOworICAgIF9vZGljdF9MQVNUKG9kKSA9IE5VTEw7CisgICAgcmV0dXJuIF9vZGljdF9yZXNpemUoKFB5T0RpY3RPYmplY3QgKilvZCk7Cit9CisKKy8qIFJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgc29tZSBlcnJvciBvciB0aGUga2V5IHdhcyBub3QgZm91bmQuICovCitzdGF0aWMgX09EaWN0Tm9kZSAqCitfb2RpY3RfZmluZF9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaW5kZXg7CisKKyAgICBpZiAoX29kaWN0X0VNUFRZKG9kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW5kZXggPSBfb2RpY3RfZ2V0X2luZGV4KG9kLCBrZXkpOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBvZC0+b2RfZmFzdF9ub2Rlc1tpbmRleF07Cit9CisKK3N0YXRpYyB2b2lkCitfb2RpY3RfYWRkX2hlYWQoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUpCit7CisgICAgaWYgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3Rub2RlX05FWFQobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IF9vZGljdF9GSVJTVChvZCk7CisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBub2RlOworICAgICAgICBfb2RpY3Rub2RlX1BSRVYoX29kaWN0X0ZJUlNUKG9kKSkgPSBub2RlOworICAgIH0KKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIHZvaWQKK19vZGljdF9hZGRfdGFpbChQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBpZiAoX29kaWN0X0xBU1Qob2QpID09IE5VTEwpIHsKKyAgICAgICAgX29kaWN0bm9kZV9QUkVWKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IG5vZGU7CisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IG5vZGU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBfb2RpY3RfTEFTVChvZCk7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChfb2RpY3RfTEFTVChvZCkpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisgICAgb2QtPm9kX3N0YXRlKys7Cit9CisKKy8qIGFkZHMgdGhlIG5vZGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCAqLworc3RhdGljIGludAorX29kaWN0X2FkZF9uZXdfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKworICAgIFB5X0lOQ1JFRihrZXkpOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4KG9kLCBrZXkpOworICAgIGlmIChpIDwgMCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgaWYgKG9kLT5vZF9mYXN0X25vZGVzW2ldICE9IE5VTEwpIHsKKyAgICAgICAgLyogV2UgYWxyZWFkeSBoYXZlIGEgbm9kZSBmb3IgdGhlIGtleSBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gYWRkIG9uZS4gKi8KKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIG11c3Qgbm90IGJlIGFkZGVkIHlldCAqLworICAgIG5vZGUgPSAoX09EaWN0Tm9kZSAqKVB5TWVtX01BTExPQyhzaXplb2YoX09EaWN0Tm9kZSkpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBfb2RpY3Rub2RlX0tFWShub2RlKSA9IGtleTsKKyAgICBfb2RpY3Rub2RlX0hBU0gobm9kZSkgPSBoYXNoOworICAgIF9vZGljdF9hZGRfdGFpbChvZCwgbm9kZSk7CisgICAgb2QtPm9kX2Zhc3Rfbm9kZXNbaV0gPSBub2RlOworICAgIHJldHVybiAwOworfQorCisvKiBQdXR0aW5nIHRoZSBkZWNyZWYgYWZ0ZXIgdGhlIGZyZWUgY2F1c2VzIHByb2JsZW1zLiAqLworI2RlZmluZSBfb2RpY3Rub2RlX0RFQUxMT0Mobm9kZSkgXAorICAgIGRvIHsgXAorICAgICAgICBQeV9ERUNSRUYoX29kaWN0bm9kZV9LRVkobm9kZSkpOyBcCisgICAgICAgIFB5TWVtX0ZSRUUoKHZvaWQgKilub2RlKTsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlcGVhdGVkIGNhbGxzIG9uIHRoZSBzYW1lIG5vZGUgYXJlIG5vLW9wcy4gKi8KK3N0YXRpYyB2b2lkCitfb2RpY3RfcmVtb3ZlX25vZGUoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUpCit7CisgICAgaWYgKF9vZGljdF9GSVJTVChvZCkgPT0gbm9kZSkKKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IF9vZGljdG5vZGVfTkVYVChub2RlKTsKKyAgICBlbHNlIGlmIChfb2RpY3Rub2RlX1BSRVYobm9kZSkgIT0gTlVMTCkKKyAgICAgICAgX29kaWN0bm9kZV9ORVhUKF9vZGljdG5vZGVfUFJFVihub2RlKSkgPSBfb2RpY3Rub2RlX05FWFQobm9kZSk7CisKKyAgICBpZiAoX29kaWN0X0xBU1Qob2QpID09IG5vZGUpCisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IF9vZGljdG5vZGVfUFJFVihub2RlKTsKKyAgICBlbHNlIGlmIChfb2RpY3Rub2RlX05FWFQobm9kZSkgIT0gTlVMTCkKKyAgICAgICAgX29kaWN0bm9kZV9QUkVWKF9vZGljdG5vZGVfTkVYVChub2RlKSkgPSBfb2RpY3Rub2RlX1BSRVYobm9kZSk7CisKKyAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBOVUxMOworICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IE5VTEw7CisgICAgb2QtPm9kX3N0YXRlKys7Cit9CisKK3N0YXRpYyBfT0RpY3ROb2RlICoKK19vZGljdF9wb3Bfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIG5vZGUgPSBfb2RpY3RfZmluZF9ub2RlKG9kLCBrZXkpOworICAgICAgICBpZiAobm9kZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIF9vZGljdF9yZW1vdmVfbm9kZShvZCwgbm9kZSk7CisgICAgcmV0dXJuIG5vZGU7Cit9CisKKy8qIElmIHNvbWVvbmUgY2FsbHMgUHlEaWN0X0RlbEl0ZW0oKSBkaXJlY3RseSBvbiBhbiBPcmRlcmVkRGljdCwgd2UnbGwKKyAgIGdldCBhbGwgc29ydHMgb2YgcHJvYmxlbXMgaGVyZS4gIEluIFB5T0RpY3RfRGVsSXRlbSB3ZSBtYWtlIHN1cmUgdG8KKyAgIGNhbGwgX29kaWN0X2NsZWFyX25vZGUgZmlyc3QuCisgCisgICBUaGlzIG1hdHRlcnMgaW4gdGhlIGNhc2Ugb2YgY29sbGlkaW5nIGtleXMuICBTdXBwb3NlIHdlIGFkZCAzIGtleXM6CisgICBbQSwgQiwgQ10sIHdoZXJlIHRoZSBoYXNoIG9mIEMgY29sbGlkZXMgd2l0aCBBIGFuZCB0aGUgbmV4dCBwb3NzaWJsZQorICAgaW5kZXggaW4gdGhlIGhhc2ggdGFibGUgaXMgb2NjdXBpZWQgYnkgQi4gIElmIHdlIHJlbW92ZSBCIHRoZW4gZm9yIEMKKyAgIHRoZSBkaWN0J3MgbG9va25vZGUgZnVuYyB3aWxsIGdpdmUgdXMgdGhlIG9sZCBpbmRleCBvZiBCIGluc3RlYWQgb2YKKyAgIHRoZSBpbmRleCB3ZSBnb3QgYmVmb3JlIGRlbGV0aW5nIEIuICBIb3dldmVyLCB0aGUgbm9kZSBmb3IgQyBpbgorICAgb2RfZmFzdF9ub2RlcyBpcyBzdGlsbCBhdCB0aGUgb2xkIGRpY3QgaW5kZXggb2YgQy4gIFRodXMgdG8gYmUgc3VyZQorICAgdGhpbmdzIGRvbid0IGdldCBvdXQgb2Ygc3luYywgd2UgY2xlYXIgdGhlIG5vZGUgaW4gb2RfZmFzdF9ub2RlcworICAgKmJlZm9yZSogY2FsbGluZyBQeURpY3RfRGVsSXRlbS4KKworICAgVGhlIHNhbWUgbXVzdCBiZSBkb25lIGZvciBhbnkgb3RoZXIgT3JkZXJlZERpY3Qgb3BlcmF0aW9ucyB3aGVyZQorICAgd2UgbW9kaWZ5IG9kX2Zhc3Rfbm9kZXMuCisqLworc3RhdGljIGludAorX29kaWN0X2NsZWFyX25vZGUoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUsIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKyAgICBpZiAoX29kaWN0X0VNUFRZKG9kKSkgeworICAgICAgICAvKiBMZXQgbGF0ZXIgY29kZSBkZWNpZGUgaWYgdGhpcyBpcyBhIEtleUVycm9yLiAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpID0gX29kaWN0X2dldF9pbmRleChvZCwga2V5KTsKKyAgICBpZiAoaSA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAwOworCisgICAgaWYgKG5vZGUgPT0gTlVMTCkKKyAgICAgICAgbm9kZSA9IG9kLT5vZF9mYXN0X25vZGVzW2ldOworICAgIGFzc2VydChub2RlID09IG9kLT5vZF9mYXN0X25vZGVzW2ldKTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIExldCBsYXRlciBjb2RlIGRlY2lkZSBpZiB0aGlzIGlzIGEgS2V5RXJyb3IuICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIE5vdyBjbGVhciB0aGUgbm9kZS4KKyAgICBvZC0+b2RfZmFzdF9ub2Rlc1tpXSA9IE5VTEw7CisgICAgX29kaWN0X3JlbW92ZV9ub2RlKG9kLCBub2RlKTsKKyAgICBfb2RpY3Rub2RlX0RFQUxMT0Mobm9kZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitfb2RpY3RfY2xlYXJfbm9kZXMoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgX09EaWN0Tm9kZSAqbm9kZSwgKm5leHQ7CisKKyAgICBpZiAoIV9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgbm9kZSA9IF9vZGljdF9GSVJTVChvZCk7CisgICAgICAgIHdoaWxlIChub2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG5leHQgPSBfb2RpY3Rub2RlX05FWFQobm9kZSk7CisgICAgICAgICAgICBfb2RpY3Rub2RlX0RFQUxMT0Mobm9kZSk7CisgICAgICAgICAgICBub2RlID0gbmV4dDsKKyAgICAgICAgfQorICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gTlVMTDsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gTlVMTDsKKyAgICB9CisKKyAgICBfb2RpY3RfZnJlZV9mYXN0X25vZGVzKG9kKTsKKyAgICBvZC0+b2RfZmFzdF9ub2RlcyA9IE5VTEw7Cit9CisKKy8qIFRoZXJlIGlzbid0IGFueSBtZW1vcnkgbWFuYWdlbWVudCBvZiBub2RlcyBwYXN0IHRoaXMgcG9pbnQuICovCisjdW5kZWYgX29kaWN0bm9kZV9ERUFMTE9DCisKK3N0YXRpYyBpbnQKK19vZGljdF9rZXlzX2VxdWFsKFB5T0RpY3RPYmplY3QgKmEsIFB5T0RpY3RPYmplY3QgKmIpCit7CisgICAgX09EaWN0Tm9kZSAqbm9kZV9hLCAqbm9kZV9iOworCisgICAgbm9kZV9hID0gX29kaWN0X0ZJUlNUKGEpOworICAgIG5vZGVfYiA9IF9vZGljdF9GSVJTVChiKTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAobm9kZV9hID09IE5VTEwgJiYgbm9kZV9iID09IE5VTEwpCisgICAgICAgICAgICAvKiBzdWNjZXNzOiBoaXQgdGhlIGVuZCBvZiBlYWNoIGF0IHRoZSBzYW1lIHRpbWUgKi8KKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBlbHNlIGlmIChub2RlX2EgPT0gTlVMTCB8fCBub2RlX2IgPT0gTlVMTCkKKyAgICAgICAgICAgIC8qIHVuZXF1YWwgbGVuZ3RoICovCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgcmVzID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilfb2RpY3Rub2RlX0tFWShub2RlX2EpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilfb2RpY3Rub2RlX0tFWShub2RlX2IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9FUSk7CisgICAgICAgICAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgZWxzZSBpZiAocmVzID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIC8qIG90aGVyd2lzZSBpdCBtdXN0IG1hdGNoLCBzbyBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZSAqLworICAgICAgICAgICAgbm9kZV9hID0gX29kaWN0bm9kZV9ORVhUKG5vZGVfYSk7CisgICAgICAgICAgICBub2RlX2IgPSBfb2RpY3Rub2RlX05FWFQobm9kZV9iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCBtYXBwaW5nIG1ldGhvZHMKKyAqLworCisvKiBtcF9hc3Nfc3Vic2NyaXB0OiBfX3NldGl0ZW1fXygpIGFuZCBfX2RlbGl0ZW1fXygpICovCisKK3N0YXRpYyBpbnQKK29kaWN0X21wX2Fzc19zdWIoUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICBpZiAodyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlPRGljdF9EZWxJdGVtKChQeU9iamVjdCAqKW9kLCB2KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeU9EaWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2QsIHYsIHcpOworfQorCisvKiB0cF9hc19tYXBwaW5nICovCisKK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG9kaWN0X2FzX21hcHBpbmcgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyptcF9sZW5ndGgqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbXBfc3Vic2NyaXB0Ki8KKyAgICAob2Jqb2JqYXJncHJvYylvZGljdF9tcF9hc3Nfc3ViLCAgICAvKm1wX2Fzc19zdWJzY3JpcHQqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCBtZXRob2RzCisgKi8KKworLyogX19kZWxpdGVtX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfZGVsaXRlbV9fZG9jX18sICJvZC5fX2RlbGl0ZW1fXyh5KSA8PT0+IGRlbCBvZFt5XSIpOworCisvKiBfX2VxX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfZXFfX2RvY19fLAorIm9kLl9fZXFfXyh5KSA8PT0+IG9kPT15LiAgQ29tcGFyaXNvbiB0byBhbm90aGVyIE9EIGlzIG9yZGVyLXNlbnNpdGl2ZSBcblwKKyAgICAgICAgd2hpbGUgY29tcGFyaXNvbiB0byBhIHJlZ3VsYXIgbWFwcGluZyBpcyBvcmRlci1pbnNlbnNpdGl2ZS5cblwKKyAgICAgICAgIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X2VxKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKK3sKKyAgICByZXR1cm4gb2RpY3RfcmljaGNvbXBhcmUoYSwgYiwgUHlfRVEpOworfQorCisvKiBfX2luaXRfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9pbml0X19kb2NfXywKKyJJbml0aWFsaXplIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXNcblwKKyAgICAgICAgcmVndWxhciBkaWN0aW9uYXJpZXMsIGJ1dCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgbm90IHJlY29tbWVuZGVkIGJlY2F1c2VcblwKKyAgICAgICAgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIGlzIGFyYml0cmFyeS5cblwKK1xuXAorICAgICAgICAiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIGludCBvZGljdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCisvKiBfX2l0ZXJfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9pdGVyX19kb2NfXywgIm9kLl9faXRlcl9fKCkgPD09PiBpdGVyKG9kKSIpOworCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdF9pdGVyKFB5T0RpY3RPYmplY3QgKnNlbGYpOyAgLyogZm9yd2FyZCAqLworCisvKiBfX25lX18oKSAqLworCisvKiBNYXBwaW5nLl9fbmVfXygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3RfbmVfX2RvY19fLCAiIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9uZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIG9kaWN0X3JpY2hjb21wYXJlKGEsIGIsIFB5X05FKTsKK30KKworLyogX19yZXByX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcmVwcl9fZG9jX18sICJvZC5fX3JlcHJfXygpIDw9PT4gcmVwcihvZCkiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RfcmVwcihQeU9EaWN0T2JqZWN0ICpzZWxmKTsgIC8qIGZvcndhcmQgKi8KKworLyogX19zZXRpdGVtX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3Rfc2V0aXRlbV9fZG9jX18sICJvZC5fX3NldGl0ZW1fXyhpLCB5KSA8PT0+IG9kW2ldPXkiKTsKKworLyogZnJvbWtleXMoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfZnJvbWtleXNfX2RvY19fLAorIk9ELmZyb21rZXlzKFNbLCB2XSkgLT4gTmV3IG9yZGVyZWQgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSBTLlxuXAorICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgdmFsdWUgZGVmYXVsdHMgdG8gTm9uZS5cblwKK1xuXAorICAgICAgICAiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X2Zyb21rZXlzKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAidmFsdWUiLCAwfTsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5X05vbmU7CisKKyAgICAvKiBib3RoIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmZyb21rZXlzIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXEsICZ2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlEaWN0X0Zyb21LZXlzKGNscywgc2VxLCB2YWx1ZSk7Cit9CisKKy8qIF9fc2l6ZW9mX18oKSAqLworCisvKiBPcmRlcmVkRGljdC5fX3NpemVvZl9fKCkgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4gKi8KK1B5RG9jX1NUUlZBUihvZGljdF9zaXplb2ZfX2RvY19fLCAiIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9zaXplb2YoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgUHlPYmplY3QgKnB5bG9uZzsKKyAgICBQeV9zc2l6ZV90IHJlcywgdGVtcDsKKworICAgIHB5bG9uZyA9IF9QeURpY3RfU2l6ZU9mKChQeURpY3RPYmplY3QgKilvZCk7CisgICAgaWYgKHB5bG9uZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeUxvbmdfQXNTc2l6ZV90KHB5bG9uZyk7CisgICAgUHlfREVDUkVGKHB5bG9uZyk7CisgICAgaWYgKHJlcyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlcyArPSBzaXplb2YoUHlPRGljdE9iamVjdCkgLSBzaXplb2YoUHlEaWN0T2JqZWN0KTsKKworICAgIC8qIGluc3RhbmNlIGRpY3QgKi8KKyAgICBweWxvbmcgPSBfUHlEaWN0X1NpemVPZigoUHlEaWN0T2JqZWN0ICopb2QtPm9kX2luc3RfZGljdCk7CisgICAgaWYgKHB5bG9uZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ZW1wID0gUHlMb25nX0FzU3NpemVfdChweWxvbmcpOworICAgIFB5X0RFQ1JFRihweWxvbmcpOworICAgIGlmICh0ZW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyArPSB0ZW1wOworCisgICAgcmVzICs9IHNpemVvZihfT0RpY3ROb2RlKSAqIG9kLT5vZF9zaXplOyAgLyogb2RfZmFzdF9ub2RlcyAqLworICAgIGlmICghX29kaWN0X0VNUFRZKG9kKSkgeworICAgICAgICByZXMgKz0gc2l6ZW9mKF9PRGljdE5vZGUpICogUHlPRGljdF9TSVpFKG9kKTsgIC8qIGxpbmtlZC1saXN0ICovCisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKK30KKworLyogX19yZWR1Y2VfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9yZWR1Y2VfX2RvY19fLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmVkdWNlKHJlZ2lzdGVyIFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworICAgIFB5T2JqZWN0ICp2YXJzID0gTlVMTCwgKm5zID0gTlVMTCwgKnJlc3VsdCA9IE5VTEwsICpjbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVtc19pdGVyID0gTlVMTCwgKml0ZW1zID0gTlVMTCwgKmFyZ3MgPSBOVUxMOworCisgICAgLyogY2FwdHVyZSBhbnkgaW5zdGFuY2Ugc3RhdGUgKi8KKyAgICB2YXJzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilvZCwgJlB5SWRfX19kaWN0X18pOworICAgIGlmICh2YXJzID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmVtcHR5LCAqb2RfdmFycywgKml0ZXJhdG9yLCAqa2V5OworICAgICAgICBpbnQgbnNfbGVuOworCisgICAgICAgIC8qIG9kLl9fZGljdF9fIGlzbid0IG5lY2Vzc2FyaWx5IGEgZGljdC4uLiAqLworICAgICAgICBucyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopdmFycywgImNvcHkiLCBOVUxMKTsKKyAgICAgICAgaWYgKG5zID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIGVtcHR5ID0gUHlPRGljdF9OZXcoKTsKKyAgICAgICAgaWYgKGVtcHR5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIG9kX3ZhcnMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWVtcHR5LCAmUHlJZF9fX2RpY3RfXyk7CisgICAgICAgIFB5X0RFQ1JFRihlbXB0eSk7CisgICAgICAgIGlmIChvZF92YXJzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihvZF92YXJzKTsKKyAgICAgICAgUHlfREVDUkVGKG9kX3ZhcnMpOworICAgICAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICB3aGlsZSAoIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpICkgeworICAgICAgICAgICAgaWYgKFB5TWFwcGluZ19IYXNLZXkobnMsIGtleSkgJiYgUHlNYXBwaW5nX0RlbEl0ZW0obnMsIGtleSkgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgbnNfbGVuID0gUHlPYmplY3RfTGVuZ3RoKG5zKTsKKyAgICAgICAgaWYgKG5zX2xlbiA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaWYgKCFuc19sZW4pIHsKKyAgICAgICAgICAgIC8qIG5vdGhpbmcgbm92ZWwgdG8gcGlja2xlIGluIG9kLl9fZGljdF9fICovCisgICAgICAgICAgICBQeV9DTEVBUihucyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBidWlsZCB0aGUgcmVzdWx0ICovCisgICAgY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilvZCwgJlB5SWRfX19jbGFzc19fKTsKKyAgICBpZiAoY2xzID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopb2QsICJpdGVtcyIsIE5VTEwpOworICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICBpdGVtc19pdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVtcyk7CisgICAgaWYgKGl0ZW1zX2l0ZXIgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDUsIGNscywgYXJncywgbnMgPyBucyA6IFB5X05vbmUsIFB5X05vbmUsIGl0ZW1zX2l0ZXIpOworCitEb25lOgorICAgIFB5X1hERUNSRUYodmFycyk7CisgICAgUHlfWERFQ1JFRihucyk7CisgICAgUHlfWERFQ1JFRihjbHMpOworICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfWERFQ1JFRihpdGVtcyk7CisgICAgUHlfWERFQ1JFRihpdGVtc19pdGVyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHNldGRlZmF1bHQoKSAqLworCitQeURvY19TVFJWQVIob2RpY3Rfc2V0ZGVmYXVsdF9fZG9jX18sCisgICAgICAgICJvZC5zZXRkZWZhdWx0KGtbLGRdKSAtPiBvZC5nZXQoayxkKSwgYWxzbyBzZXQgb2Rba109ZCBpZiBrIG5vdCBpbiBvZCIpOworCisvKiBTa2lwcyBfX21pc3NpbmdfXygpIGNhbGxzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3NldGRlZmF1bHQocmVnaXN0ZXIgUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCAwfTsKKyAgICBQeU9iamVjdCAqa2V5LCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CisKKyAgICAvKiBib3RoIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOnNldGRlZmF1bHQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwgJmZhaWxvYmopKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qob2QpKSB7CisgICAgICAgIHJlc3VsdCA9IFB5T0RpY3RfR2V0SXRlbVdpdGhFcnJvcihvZCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBhc3NlcnQoX29kaWN0X2ZpbmRfbm9kZShvZCwga2V5KSA9PSBOVUxMKTsKKyAgICAgICAgICAgIGlmIChQeU9EaWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSwgZmFpbG9iaikgPj0gMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhaWxvYmo7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBleGlzdHMgPSBQeVNlcXVlbmNlX0NvbnRhaW5zKChQeU9iamVjdCAqKW9kLCBrZXkpOworICAgICAgICBpZiAoZXhpc3RzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXhpc3RzKSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9HZXRJdGVtKChQeU9iamVjdCAqKW9kLCBrZXkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5T2JqZWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSwgZmFpbG9iaikgPj0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFpbG9iajsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmYWlsb2JqKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHBvcCgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9wb3BfX2RvY19fLAorIm9kLnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuXAorICAgICAgICB2YWx1ZS4gIElmIGtleSBpcyBub3QgZm91bmQsIGQgaXMgcmV0dXJuZWQgaWYgZ2l2ZW4sIG90aGVyd2lzZSBLZXlFcnJvclxuXAorICAgICAgICBpcyByYWlzZWQuXG5cCitcblwKKyAgICAgICAgIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeU9iamVjdCAqIF9vZGljdF9wb3BrZXkoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKKy8qIFNraXBzIF9fbWlzc2luZ19fKCkgY2FsbHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcG9wKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpmYWlsb2JqID0gTlVMTDsKKworICAgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOnBvcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmZmFpbG9iaikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9vZGljdF9wb3BrZXkob2QsIGtleSwgZmFpbG9iaik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfb2RpY3RfcG9wa2V5KFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmZhaWxvYmopCit7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgLyogUG9wIHRoZSBub2RlIGZpcnN0IHRvIGF2b2lkIGEgcG9zc2libGUgZGljdCByZXNpemUgKGR1ZSB0bworICAgICAgIGV2YWwgbG9vcCByZWVudHJhbmN5KSBhbmQgY29tcGxpY2F0aW9ucyBkdWUgdG8gaGFzaCBjb2xsaXNpb24KKyAgICAgICByZXNvbHV0aW9uLiAqLworICAgIG5vZGUgPSBfb2RpY3RfZmluZF9ub2RlKChQeU9EaWN0T2JqZWN0ICopb2QsIGtleSk7CisgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IHJlcyA9IF9vZGljdF9jbGVhcl9ub2RlKChQeU9EaWN0T2JqZWN0ICopb2QsIG5vZGUsIGtleSk7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE5vdyBkZWxldGUgdGhlIHZhbHVlIGZyb20gdGhlIGRpY3QuICovCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpIHsKKyAgICAgICAgaWYgKG5vZGUgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2UgY291bGQgZG8gUHlEaWN0X0dldEl0ZW0oKSBhbmQgUHlEaWN0X0RlbEl0ZW0oKSBkaXJlY3RseS4uLiAqLworICAgICAgICAgICAgdmFsdWUgPSBfUHlEaWN0X1BvcCgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgZmFpbG9iaik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBleGlzdHMgPSBQeVNlcXVlbmNlX0NvbnRhaW5zKG9kLCBrZXkpOworICAgICAgICBpZiAoZXhpc3RzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoZXhpc3RzKSB7CisgICAgICAgICAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0ob2QsIGtleSk7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9EZWxJdGVtKG9kLCBrZXkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0NMRUFSKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBBcHBseSB0aGUgZmFsbGJhY2sgdmFsdWUsIGlmIG5lY2Vzc2FyeS4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoZmFpbG9iaikgeworICAgICAgICAgICAgdmFsdWUgPSBmYWlsb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZhbHVlOworfQorCisvKiBwb3BpdGVtKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3BvcGl0ZW1fX2RvY19fLAorIm9kLnBvcGl0ZW0oKSAtPiAoaywgdiksIHJldHVybiBhbmQgcmVtb3ZlIGEgKGtleSwgdmFsdWUpIHBhaXIuXG5cCisgICAgICAgIFBhaXJzIGFyZSByZXR1cm5lZCBpbiBMSUZPIG9yZGVyIGlmIGxhc3QgaXMgdHJ1ZSBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLlxuXAorXG5cCisgICAgICAgICIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcG9waXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibGFzdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKml0ZW0gPSBOVUxMLCAqbGFzdCA9IE5VTEw7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBpbnQgcG9zID0gLTE7CisKKyAgICBpZiAoX29kaWN0X0VNUFRZKChQeU9EaWN0T2JqZWN0ICopb2QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImRpY3Rpb25hcnkgaXMgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogcHVsbCB0aGUgaXRlbSAqLworCisgICAgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpwb3BpdGVtIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsYXN0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobGFzdCAhPSBOVUxMKSB7CisgICAgICAgIGludCBpc190cnVlOworICAgICAgICBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKGxhc3QpOworICAgICAgICBpZiAoaXNfdHJ1ZSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwb3MgPSBpc190cnVlID8gLTEgOiAwOworICAgIH0KKyAgICBpZiAocG9zID09IDApCisgICAgICAgIG5vZGUgPSBfb2RpY3RfRklSU1QoKFB5T0RpY3RPYmplY3QgKilvZCk7CisgICAgZWxzZQorICAgICAgICBub2RlID0gX29kaWN0X0xBU1QoKFB5T0RpY3RPYmplY3QgKilvZCk7CisKKyAgICBrZXkgPSBfb2RpY3Rub2RlX0tFWShub2RlKTsKKyAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICB2YWx1ZSA9IF9vZGljdF9wb3BrZXkob2QsIGtleSwgTlVMTCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZW0gPSBQeVR1cGxlX1BhY2soMiwga2V5LCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKworLyoga2V5cygpICovCisKKy8qIE11dGFibGVNYXBwaW5nLmtleXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X2tleXNfX2RvY19fLCAiIik7CisKK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0a2V5c19uZXcoUHlPYmplY3QgKm9kKTsgIC8qIGZvcndhcmQgKi8KKworLyogdmFsdWVzKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcudmFsdWVzKCkgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4gKi8KK1B5RG9jX1NUUlZBUihvZGljdF92YWx1ZXNfX2RvY19fLCAiIik7CisKK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0dmFsdWVzX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiBpdGVtcygpICovCisKKy8qIE11dGFibGVNYXBwaW5nLml0ZW1zKCkgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4gKi8KK1B5RG9jX1NUUlZBUihvZGljdF9pdGVtc19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RpdGVtc19uZXcoUHlPYmplY3QgKm9kKTsgIC8qIGZvcndhcmQgKi8KKworLyogdXBkYXRlKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcudXBkYXRlKCkgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4gKi8KK1B5RG9jX1NUUlZBUihvZGljdF91cGRhdGVfX2RvY19fLCAiIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeU9iamVjdCAqIG11dGFibGVtYXBwaW5nX3VwZGF0ZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworI2RlZmluZSBvZGljdF91cGRhdGUgbXV0YWJsZW1hcHBpbmdfdXBkYXRlCisKKy8qIGNsZWFyKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2NsZWFyX19kb2NfXywKKyAgICAgICAgICAgICAib2QuY2xlYXIoKSAtPiBOb25lLiAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIG9kLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfY2xlYXIocmVnaXN0ZXIgUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgUHlEaWN0X0NsZWFyKChQeU9iamVjdCAqKW9kKTsKKyAgICBfb2RpY3RfY2xlYXJfbm9kZXMob2QpOworICAgIF9vZGljdF9GSVJTVChvZCkgPSBOVUxMOworICAgIF9vZGljdF9MQVNUKG9kKSA9IE5VTEw7CisgICAgaWYgKF9vZGljdF9yZXNpemUob2QpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIGNvcHkoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfY29weV9fZG9jX18sICJvZC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2Ygb2QiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X2NvcHkocmVnaXN0ZXIgUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBQeU9iamVjdCAqb2RfY29weTsKKworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qob2QpKQorICAgICAgICBvZF9jb3B5ID0gUHlPRGljdF9OZXcoKTsKKyAgICBlbHNlCisgICAgICAgIG9kX2NvcHkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKVB5X1RZUEUob2QpLCBOVUxMKTsKKyAgICBpZiAob2RfY29weSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qob2QpKSB7CisgICAgICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gX29kaWN0bm9kZV9LRVkobm9kZSk7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBfb2RpY3Rub2RlX1ZBTFVFKG5vZGUsIG9kKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFB5T0RpY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZF9jb3B5LCBrZXksIHZhbHVlKSAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQeU9iamVjdF9HZXRJdGVtKChQeU9iamVjdCAqKW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0tFWShub2RlKSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9TZXRJdGVtKChQeU9iamVjdCAqKW9kX2NvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfS0VZKG5vZGUpLCB2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb2RfY29weTsKKworZmFpbDoKKyAgICBQeV9ERUNSRUYob2RfY29weSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIF9fcmV2ZXJzZWRfXygpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9yZXZlcnNlZF9fZG9jX18sICJvZC5fX3JldmVyc2VkX18oKSA8PT0+IHJldmVyc2VkKG9kKSIpOworCisjZGVmaW5lIF9vZGljdF9JVEVSX1JFVkVSU0VEIDEKKyNkZWZpbmUgX29kaWN0X0lURVJfS0VZUyAyCisjZGVmaW5lIF9vZGljdF9JVEVSX1ZBTFVFUyA0CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0aXRlcl9uZXcoUHlPRGljdE9iamVjdCAqLCBpbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmV2ZXJzZWQoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcob2QsIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfUkVWRVJTRUQpOworfQorCisvKiBtb3ZlX3RvX2VuZCgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9tb3ZlX3RvX2VuZF9fZG9jX18sCisiTW92ZSBhbiBleGlzdGluZyBlbGVtZW50IHRvIHRoZSBlbmQgKG9yIGJlZ2lubmluZyBpZiBsYXN0PT1GYWxzZSkuXG5cCitcblwKKyAgICAgICAgUmFpc2VzIEtleUVycm9yIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGV4aXN0LlxuXAorICAgICAgICBXaGVuIGxhc3Q9VHJ1ZSwgYWN0cyBsaWtlIGEgZmFzdCB2ZXJzaW9uIG9mIHNlbGZba2V5XT1zZWxmLnBvcChrZXkpLlxuXAorXG5cCisgICAgICAgICIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfbW92ZV90b19lbmQoUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgImxhc3QiLCAwfTsKKyAgICBQeU9iamVjdCAqa2V5LCAqbGFzdCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAtMTsKKworICAgIC8qIGJvdGggYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86bW92ZV90b19lbmQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwgJmxhc3QpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoX29kaWN0X0VNUFRZKG9kKSkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobGFzdCAhPSBOVUxMKSB7CisgICAgICAgIGludCBpc190cnVlOworICAgICAgICBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKGxhc3QpOworICAgICAgICBpZiAoaXNfdHJ1ZSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwb3MgPSBpc190cnVlID8gLTEgOiAwOworICAgIH0KKyAgICBpZiAocG9zID09IDApIHsKKyAgICAgICAgLyogT25seSBtb3ZlIGlmIG5vdCBhbHJlYWR5IHRoZSBmaXJzdCBvbmUuICovCisgICAgICAgIFB5T2JqZWN0ICpmaXJzdF9rZXkgPSBfb2RpY3Rub2RlX0tFWShfb2RpY3RfRklSU1Qob2QpKTsKKyAgICAgICAgaW50IG5vdF9lcXVhbCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChrZXksIGZpcnN0X2tleSwgUHlfTkUpOworICAgICAgICBpZiAobm90X2VxdWFsID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChub3RfZXF1YWwpIHsKKyAgICAgICAgICAgIF9PRGljdE5vZGUgKm5vZGUgPSBfb2RpY3RfcG9wX25vZGUob2QsIE5VTEwsIGtleSk7CisgICAgICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgX29kaWN0X2FkZF9oZWFkKG9kLCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHBvcyA9PSAtMSkgeworICAgICAgICAvKiBPbmx5IG1vdmUgaWYgbm90IGFscmVhZHkgdGhlIGxhc3Qgb25lLiAqLworICAgICAgICBQeU9iamVjdCAqbGFzdF9rZXkgPSBfb2RpY3Rub2RlX0tFWShfb2RpY3RfTEFTVChvZCkpOworICAgICAgICBpbnQgbm90X2VxdWFsID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGtleSwgbGFzdF9rZXksIFB5X05FKTsKKyAgICAgICAgaWYgKG5vdF9lcXVhbCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAobm90X2VxdWFsKSB7CisgICAgICAgICAgICBfT0RpY3ROb2RlICpub2RlID0gX29kaWN0X3BvcF9ub2RlKG9kLCBOVUxMLCBrZXkpOworICAgICAgICAgICAgaWYgKG5vZGUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIF9vZGljdF9hZGRfdGFpbChvZCwgbm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCisvKiB0cF9tZXRob2RzICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdF9tZXRob2RzW10gPSB7CisKKyAgICAvKiBleHBsaWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIGFsaWduIGRvY3N0cmluZ3Mgd2l0aAorICAgICAqIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0ICovCisgICAgeyJfX2RlbGl0ZW1fXyIsICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfbXBfYXNzX3N1YiwgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9kZWxpdGVtX19kb2NfX30sCisgICAgeyJfX2VxX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfZXEsICAgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9lcV9fZG9jX199LAorICAgIHsiX19pbml0X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2luaXQsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaW5pdF9fZG9jX199LAorICAgIHsiX19pdGVyX18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2l0ZXIsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaXRlcl9fZG9jX199LAorICAgIHsiX19uZV9fIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X25lLCAgICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfbmVfX2RvY19ffSwKKyAgICB7Il9fcmVwcl9fIiwgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9yZXByLCAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3JlcHJfX2RvY19ffSwKKyAgICB7Il9fc2V0aXRlbV9fIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tcF9hc3Nfc3ViLCAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3NldGl0ZW1fX2RvY19ffSwKKyAgICB7ImZyb21rZXlzIiwgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9mcm9ta2V5cywKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUyB8IE1FVEhfQ0xBU1MsIG9kaWN0X2Zyb21rZXlzX19kb2NfX30sCisKKyAgICAvKiBvdmVycmlkZGVuIGRpY3QgbWV0aG9kcyAqLworICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3NpemVvZiwgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3Rfc2l6ZW9mX19kb2NfX30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9yZWR1Y2VfX2RvY19ffSwKKyAgICB7InNldGRlZmF1bHQiLCAgICAgIChQeUNGdW5jdGlvbilvZGljdF9zZXRkZWZhdWx0LAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9zZXRkZWZhdWx0X19kb2NfX30sCisgICAgeyJwb3AiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcG9wLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9wb3BfX2RvY19ffSwKKyAgICB7InBvcGl0ZW0iLCAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9wb3BpdGVtLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9wb3BpdGVtX19kb2NfX30sCisgICAgeyJrZXlzIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RrZXlzX25ldywgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9rZXlzX19kb2NfX30sCisgICAgeyJ2YWx1ZXMiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3R2YWx1ZXNfbmV3LCAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF92YWx1ZXNfX2RvY19ffSwKKyAgICB7Iml0ZW1zIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdGl0ZW1zX25ldywgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2l0ZW1zX19kb2NfX30sCisgICAgeyJ1cGRhdGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfdXBkYXRlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICBvZGljdF91cGRhdGVfX2RvY19ffSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9jbGVhciwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2NsZWFyX19kb2NfX30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfY29weSwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9jb3B5X19kb2NfX30sCisKKyAgICAvKiBuZXcgbWV0aG9kcyAqLworICAgIHsiX19yZXZlcnNlZF9fIiwgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3JldmVyc2VkLCAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfcmV2ZXJzZWRfX2RvY19ffSwKKyAgICB7Im1vdmVfdG9fZW5kIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tb3ZlX3RvX2VuZCwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgb2RpY3RfbW92ZV90b19lbmRfX2RvY19ffSwKKworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCBtZW1iZXJzCisgKi8KKworLyogdHBfbWVtYmVycyAqLworCitzdGF0aWMgUHlNZW1iZXJEZWYgb2RpY3RfbWVtYmVyc1tdID0geworICAgIHsiX19kaWN0X18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPRGljdE9iamVjdCwgb2RfaW5zdF9kaWN0KSwgUkVBRE9OTFl9LAorICAgIHswfQorfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcmRlcmVkRGljdCB0eXBlIHNsb3QgbWV0aG9kcworICovCisKKy8qIHRwX2RlYWxsb2MgKi8KKworc3RhdGljIHZvaWQKK29kaWN0X2RlYWxsb2MoUHlPRGljdE9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4oc2VsZik7CisgICAgUHlfWERFQ1JFRihzZWxmLT5vZF9pbnN0X2RpY3QpOworICAgIGlmIChzZWxmLT5vZF93ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKXNlbGYpOworCisgICAgX29kaWN0X2NsZWFyX25vZGVzKHNlbGYpOworICAgIFB5X1RSQVNIQ0FOX1NBRkVfRU5EKHNlbGYpOworCisgICAgLyogbXVzdCBiZSBsYXN0ICovCisgICAgUHlEaWN0X1R5cGUudHBfZGVhbGxvYygoUHlPYmplY3QgKilzZWxmKTsKK307CisKKy8qIHRwX3JlcHIgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3JlcHIoUHlPRGljdE9iamVjdCAqc2VsZikKK3sKKyAgICBpbnQgaTsKKyAgICBjb25zdCBjaGFyICpmb3JtYXRzdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOworICAgIFB5T2JqZWN0ICpwaWVjZXMgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTCwgKmNscyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNsYXNzbmFtZSA9IE5VTEwsICpmb3JtYXQgPSBOVUxMLCAqYXJncyA9IE5VTEw7CisKKyAgICBpID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKXNlbGYpOworICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgcmV0dXJuIGkgPiAwID8gUHlVbmljb2RlX0Zyb21TdHJpbmcoIi4uLiIpIDogTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPRGljdF9TSVpFKHNlbGYpID09IDApIHsKKyAgICAgICAgLyogIk9yZGVyZWREaWN0KCkiICovCisgICAgICAgIGdvdG8gRmluaXNoOworICAgIH0KKworICAgIGlmIChQeU9EaWN0X0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICAgICAgcGllY2VzID0gUHlMaXN0X05ldyhQeU9EaWN0X1NJWkUoc2VsZikpOworICAgICAgICBpZiAocGllY2VzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgX29kaWN0X0ZPUkVBQ0goc2VsZiwgbm9kZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnBhaXI7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gX29kaWN0bm9kZV9LRVkobm9kZSk7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBfb2RpY3Rub2RlX1ZBTFVFKG5vZGUsIHNlbGYpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyID0gUHlUdXBsZV9QYWNrKDIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKHBhaXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShwaWVjZXMsICsrY291bnQsIHBhaXIpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpdGVtcyIsIE5VTEwpOworICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgcGllY2VzID0gUHlTZXF1ZW5jZV9MaXN0KGl0ZW1zKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgaWYocGllY2VzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgfQorCitGaW5pc2g6CisgICAgY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2NsYXNzX18pOworICAgIGlmIChjbHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworICAgIGNsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CisgICAgaWYgKGNsYXNzbmFtZSA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICBpZiAocGllY2VzID09IE5VTEwpIHsKKyAgICAgICAgZm9ybWF0c3RyID0gIiVzKCkiOworICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIGNsYXNzbmFtZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3JtYXRzdHIgPSAiJXMoJXIpIjsKKyAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBjbGFzc25hbWUsIHBpZWNlcyk7CisgICAgfQorICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGZvcm1hdCA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKGZvcm1hdHN0cik7CisgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7CitEb25lOgorICAgIFB5X1hERUNSRUYocGllY2VzKTsKKyAgICBQeV9YREVDUkVGKGNscyk7CisgICAgUHlfWERFQ1JFRihjbGFzc25hbWUpOworICAgIFB5X1hERUNSRUYoZm9ybWF0KTsKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gcmVzdWx0OworfTsKKworLyogdHBfZG9jICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9kb2MsCisgICAgICAgICJEaWN0aW9uYXJ5IHRoYXQgcmVtZW1iZXJzIGluc2VydGlvbiBvcmRlciIpOworCisvKiB0cF90cmF2ZXJzZSAqLworCitzdGF0aWMgaW50CitvZGljdF90cmF2ZXJzZShQeU9EaWN0T2JqZWN0ICpvZCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQob2QtPm9kX2luc3RfZGljdCk7CisgICAgUHlfVklTSVQob2QtPm9kX3dlYWtyZWZsaXN0KTsKKyAgICByZXR1cm4gUHlEaWN0X1R5cGUudHBfdHJhdmVyc2UoKFB5T2JqZWN0ICopb2QsIHZpc2l0LCBhcmcpOworfQorCisvKiB0cF9jbGVhciAqLworCitzdGF0aWMgaW50CitvZGljdF90cF9jbGVhcihQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X0NMRUFSKG9kLT5vZF9pbnN0X2RpY3QpOworICAgIFB5X0NMRUFSKG9kLT5vZF93ZWFrcmVmbGlzdCk7CisgICAgcmVzID0gb2RpY3RfY2xlYXIob2QpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworfQorCisvKiB0cF9yaWNoY29tcGFyZSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgaWYgKCFQeU9EaWN0X0NoZWNrKHYpIHx8ICFQeURpY3RfQ2hlY2sodykpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgeworICAgICAgICBQeU9iamVjdCAqcmVzLCAqY21wOworICAgICAgICBpbnQgZXE7CisKKyAgICAgICAgY21wID0gUHlEaWN0X1R5cGUudHBfcmljaGNvbXBhcmUodiwgdywgb3ApOworICAgICAgICBpZiAoY21wID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeU9EaWN0X0NoZWNrKHcpKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgaWYgKG9wID09IFB5X0VRICYmIGNtcCA9PSBQeV9GYWxzZSkKKyAgICAgICAgICAgIHJldHVybiBjbXA7CisgICAgICAgIGlmIChvcCA9PSBQeV9ORSAmJiBjbXAgPT0gUHlfVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBjbXA7CisgICAgICAgIFB5X0RFQ1JFRihjbXApOworCisgICAgICAgIC8qIFRyeSBjb21wYXJpbmcgb2RpY3Qga2V5cy4gKi8KKyAgICAgICAgZXEgPSBfb2RpY3Rfa2V5c19lcXVhbCgoUHlPRGljdE9iamVjdCAqKXYsIChQeU9EaWN0T2JqZWN0ICopdyk7CisgICAgICAgIGlmIChlcSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICByZXMgPSAoZXEgPT0gKG9wID09IFB5X0VRKSkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIFB5X0lOQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9Cit9OworCisvKiB0cF9pdGVyICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9pdGVyKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KG9kLCBfb2RpY3RfSVRFUl9LRVlTKTsKK307CisKKy8qIHRwX2luaXQgKi8KKworc3RhdGljIGludAorb2RpY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeU9iamVjdF9MZW5ndGgoYXJncyk7CisKKyAgICBpZiAobGVuID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGxlbiA+IDEpIHsKKyAgICAgICAgY2hhciAqbXNnID0gImV4cGVjdGVkIGF0IG1vc3QgMSBhcmd1bWVudHMsIGdvdCAlZCI7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIG1zZywgbGVuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIF9faW5pdF9fKCkgdHJpZ2dlcmluZyB1cGRhdGUoKSBpcyBqdXN0IHRoZSB3YXkgdGhpbmdzIGFyZSEgKi8KKyAgICByZXMgPSBvZGljdF91cGRhdGUoc2VsZiwgYXJncywga3dkcyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworLyogdHBfbmV3ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm9kID0gUHlEaWN0X1R5cGUudHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmIChvZCAhPSBOVUxMKSB7CisgICAgICAgIGlmIChfb2RpY3RfaW5pdGlhbGl6ZSgoUHlPRGljdE9iamVjdCAqKW9kKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgKChQeU9EaWN0T2JqZWN0ICopb2QpLT5vZF9pbnN0X2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICgoUHlPRGljdE9iamVjdCAqKW9kKS0+b2Rfd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gb2Q7Cit9CisKKy8qIFB5T0RpY3RfVHlwZSAqLworCitQeVR5cGVPYmplY3QgUHlPRGljdF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiwgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5T0RpY3RPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3Ipb2RpY3RfZGVhbGxvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpb2RpY3RfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmb2RpY3RfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgb2RpY3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW9kaWN0X3RyYXZlcnNlLCAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpb2RpY3RfdHBfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChyaWNoY21wZnVuYylvZGljdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF93ZWFrcmVmbGlzdCksICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0X2l0ZXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG9kaWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylvZGljdF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAobmV3ZnVuYylvZGljdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiB0aGUgcHVibGljIE9yZGVyZWREaWN0IEFQSQorICovCisKK1B5T2JqZWN0ICoKK1B5T0RpY3RfTmV3KHZvaWQpIHsKKyAgICByZXR1cm4gb2RpY3RfbmV3KCZQeU9EaWN0X1R5cGUsIE5VTEwsIE5VTEwpOworfTsKKworaW50CitQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpIHsKKyAgICBpbnQgcmVzID0gUHlEaWN0X1NldEl0ZW0ob2QsIGtleSwgdmFsdWUpOworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICByZXMgPSBfb2RpY3RfYWRkX25ld19ub2RlKChQeU9EaWN0T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIC8qIFhYWCBSZXZlcnQgc2V0dGluZyB0aGUgdmFsdWUgb24gdGhlIGRpY3Q/ICovCisgICAgfQorICAgIHJldHVybiByZXM7Cit9OworCitpbnQKK1B5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpIHsKKyAgICBpbnQgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgTlVMTCwga2V5KTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeURpY3RfRGVsSXRlbShvZCwga2V5KTsKK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIE9yZGVyZWREaWN0IHZpZXdzIChrZXlzL3ZhbHVlcy9pdGVtcykKKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBraW5kOworICAgIFB5T0RpY3RPYmplY3QgKmRpX29kaWN0OworICAgIFB5X3NzaXplX3QgZGlfc2l6ZTsKKyAgICBzaXplX3QgZGlfc3RhdGU7CisgICAgUHlPYmplY3QgKmRpX2N1cnJlbnQ7CisgICAgUHlPYmplY3QgKmRpX3Jlc3VsdDsgLyogcmV1c2FibGUgcmVzdWx0IHR1cGxlIGZvciBpdGVyaXRlbXMgKi8KK30gb2RpY3RpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorb2RpY3RpdGVyX2RlYWxsb2Mob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkaSk7CisgICAgUHlfWERFQ1JFRihkaS0+ZGlfb2RpY3QpOworICAgIFB5X1hERUNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIGlmIChkaS0+a2luZCAmIChfb2RpY3RfSVRFUl9LRVlTIHwgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICBQeV9ERUNSRUYoZGktPmRpX3Jlc3VsdCk7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChkaSk7Cit9CisKK3N0YXRpYyBpbnQKK29kaWN0aXRlcl90cmF2ZXJzZShvZGljdGl0ZXJvYmplY3QgKmRpLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChkaS0+ZGlfb2RpY3QpOworICAgIFB5X1ZJU0lUKGRpLT5kaV9jdXJyZW50KTsgIC8qIEEga2V5IGNvdWxkIGJlIGFueSB0eXBlLCBub3QganVzdCBzdHIuICovCisgICAgUHlfVklTSVQoZGktPmRpX3Jlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEluIG9yZGVyIHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25zIGR1cmluZyBpdGVyYXRpb24sIHdlIHRyYWNrCisgKiB0aGUgY3VycmVudCBrZXkgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBub2RlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9uZXh0a2V5KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKmtleSA9IE5VTEw7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBpbnQgcmV2ZXJzZWQgPSBkaS0+a2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgaWYgKGRpLT5kaV9vZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZGktPmRpX2N1cnJlbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOyAgLyogV2UncmUgYWxyZWFkeSBkb25lLiAqLworCisgICAgLyogQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNoYW5nZXMuICovCisgICAgaWYgKGRpLT5kaV9vZGljdC0+b2Rfc3RhdGUgIT0gZGktPmRpX3N0YXRlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgaWYgKGRpLT5kaV9zaXplICE9IFB5T0RpY3RfU0laRShkaS0+ZGlfb2RpY3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgZGktPmRpX3NpemUgPSAtMTsgLyogTWFrZSB0aGlzIHN0YXRlIHN0aWNreSAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIGtleS4gKi8KKyAgICBub2RlID0gX29kaWN0X2ZpbmRfbm9kZShkaS0+ZGlfb2RpY3QsIGRpLT5kaV9jdXJyZW50KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIE11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQuICovCisgICAgICAgIFB5X0NMRUFSKGRpLT5kaV9jdXJyZW50KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IGRpLT5kaV9jdXJyZW50OworCisgICAgLyogQWR2YW5jZSB0byB0aGUgbmV4dCBrZXkuICovCisgICAgbm9kZSA9IHJldmVyc2VkID8gX29kaWN0bm9kZV9QUkVWKG5vZGUpIDogX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgLyogUmVhY2hlZCB0aGUgZW5kLiAqLworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgICAgICBQeV9JTkNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIH0KKworICAgIHJldHVybiBrZXk7CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX29kaWN0KTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX2l0ZXJuZXh0KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIFB5T2JqZWN0ICprZXkgPSBvZGljdGl0ZXJfbmV4dGtleShkaSk7ICAvKiBuZXcgcmVmZXJlbmNlICovCisKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogSGFuZGxlIHRoZSBrZXlzIGNhc2UuICovCisgICAgaWYgKCEgKGRpLT5raW5kICYgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKworICAgIC8qIEhhbmRsZSB0aGUgaXRlbXMgY2FzZS4gKi8KKyAgICBpZiAoZGktPmtpbmQgJiBfb2RpY3RfSVRFUl9LRVlTKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OworCisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKworICAgICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgeworICAgICAgICAgICAgLyogbm90IGluIHVzZSBzbyB3ZSBjYW4gcmV1c2UgaXQKKyAgICAgICAgICAgICAqICh0aGUgY29tbW9uIGNhc2UgZHVyaW5nIGl0ZXJhdGlvbikgKi8KKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIC8qIEhhbmRsZSB0aGUgdmFsdWVzIGNhc2UuICovCisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX2N1cnJlbnQpOworICAgIFB5X0NMRUFSKGRpLT5kaV9vZGljdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIE5vIG5lZWQgZm9yIHRwX2NsZWFyIGJlY2F1c2Ugb2RpY3RpdGVyb2JqZWN0IGlzIG5vdCBtdXRhYmxlLiAqLworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9yZWR1Y2Uob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdCwgKml0ZXI7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gb2RpY3RpdGVyX2l0ZXJuZXh0KGRpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGRvbmUgaXRlcmF0aW5nPyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaXRlciA9IF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIik7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIGl0ZXIsIGxpc3QpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb2RpY3RpdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJvZGljdF9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yob2RpY3RpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilvZGljdGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylvZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylvZGljdGl0ZXJfaXRlcm5leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZXJfbmV3KFB5T0RpY3RPYmplY3QgKm9kLCBpbnQga2luZCkKK3sKKyAgICBvZGljdGl0ZXJvYmplY3QgKmRpOworICAgIF9PRGljdE5vZGUgKm5vZGU7CisgICAgaW50IHJldmVyc2VkID0ga2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgZGkgPSBQeU9iamVjdF9HQ19OZXcob2RpY3RpdGVyb2JqZWN0LCAmUHlPRGljdEl0ZXJfVHlwZSk7CisgICAgaWYgKGRpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGtpbmQgJiAoX29kaWN0X0lURVJfS0VZUyB8IF9vZGljdF9JVEVSX1ZBTFVFUykpeworICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDIsIFB5X05vbmUsIFB5X05vbmUpOworICAgICAgICBpZiAoZGktPmRpX3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gTlVMTDsKKworICAgIGRpLT5raW5kID0ga2luZDsKKyAgICBub2RlID0gcmV2ZXJzZWQgPyBfb2RpY3RfTEFTVChvZCkgOiBfb2RpY3RfRklSU1Qob2QpOworICAgIGRpLT5kaV9jdXJyZW50ID0gbm9kZSA/IF9vZGljdG5vZGVfS0VZKG5vZGUpIDogTlVMTDsKKyAgICBQeV9YSU5DUkVGKGRpLT5kaV9jdXJyZW50KTsKKyAgICBkaS0+ZGlfc2l6ZSA9IFB5T0RpY3RfU0laRShvZCk7CisgICAgZGktPmRpX3N0YXRlID0gb2QtPm9kX3N0YXRlOworICAgIGRpLT5kaV9vZGljdCA9IG9kOworICAgIFB5X0lOQ1JFRihvZCk7CisKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soZGkpOworICAgIHJldHVybiAoUHlPYmplY3QgKilkaTsKK30KKworLyoga2V5cygpICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0a2V5c19yZXZlcnNlZChfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0a2V5c19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RrZXlzX3JldmVyc2VkLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IFB5T0RpY3RLZXlzX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3Rfa2V5cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RrZXlzX2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGtleXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RLZXlzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdEtleXNfVHlwZSk7Cit9CisKKy8qIGl0ZW1zKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlbXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1ZBTFVFUyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfVkFMVUVTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0aXRlbXNfbWV0aG9kc1tdID0geworICAgIHsiX19yZXZlcnNlZF9fIiwgKFB5Q0Z1bmN0aW9uKW9kaWN0aXRlbXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZW1zX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3RfaXRlbXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RpdGVtc19pdGVyLCAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZW1zX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RJdGVtc19UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhvZCwgJlB5T0RpY3RJdGVtc19UeXBlKTsKK30KKworLyogdmFsdWVzKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQoreworICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldygoUHlPRGljdE9iamVjdCAqKWR2LT5kdl9kaWN0LAorICAgICAgICAgICAgX29kaWN0X0lURVJfVkFMVUVTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX1ZBTFVFU3xfb2RpY3RfSVRFUl9SRVZFUlNFRCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdHZhbHVlc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3R2YWx1ZXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdFZhbHVlc19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm9kaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0dmFsdWVzX2l0ZXIsICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgb2RpY3R2YWx1ZXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAmUHlEaWN0VmFsdWVzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdFZhbHVlc19UeXBlKTsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBNdXRhYmxlTWFwcHBpbmcgaW1wbGVtZW50YXRpb25zCisKK01hcHBpbmc6CisKKz09PT09PT09PT09PSA9PT09PT09PT09PQorbWV0aG9kICAgICAgIHVzZXMKKz09PT09PT09PT09PSA9PT09PT09PT09PQorX19jb250YWluc19fIF9fZ2V0aXRlbV9fCitfX2VxX18gICAgICAgaXRlbXMKK19fZ2V0aXRlbV9fICArCitfX2l0ZXJfXyAgICAgKworX19sZW5fXyAgICAgICsKK19fbmVfXyAgICAgICBfX2VxX18KK2dldCAgICAgICAgICBfX2dldGl0ZW1fXworaXRlbXMgICAgICAgIEl0ZW1zVmlldwora2V5cyAgICAgICAgIEtleXNWaWV3Cit2YWx1ZXMgICAgICAgVmFsdWVzVmlldworPT09PT09PT09PT09ID09PT09PT09PT09CisKK0l0ZW1zVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCitLZXlzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19jb250YWluc19fLgorVmFsdWVzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCisKK011dGFibGVNYXBwaW5nOgorCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK21ldGhvZCAgICAgICB1c2VzCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK19fZGVsaXRlbV9fICArCitfX3NldGl0ZW1fXyAgKworY2xlYXIgICAgICAgIHBvcGl0ZW0KK3BvcCAgICAgICAgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fZGVsaXRlbV9fCitwb3BpdGVtICAgICAgX19pdGVyX18KKyAgICAgICAgICAgICBfZ2V0aXRlbV9fCisgICAgICAgICAgICAgX19kZWxpdGVtX18KK3NldGRlZmF1bHQgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fc2V0aXRlbV9fCit1cGRhdGUgICAgICAgX19zZXRpdGVtX18KKz09PT09PT09PT09PSA9PT09PT09PT09PQorKi8KKworc3RhdGljIGludAorbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGFpcnMpCit7CisgICAgUHlPYmplY3QgKnBhaXIsICppdGVyYXRvciwgKnVuZXhwZWN0ZWQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIocGFpcnMpOworICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHdoaWxlICgocGFpciA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkgIT0gTlVMTCkgeworICAgICAgICAvKiBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCAoc2VlIFVOUEFDS19TRVFVRU5DRSBpbiBjZXZhbC5jKSAqLworICAgICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnBhaXJfaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKHBhaXIpOworICAgICAgICBpZiAocGFpcl9pdGVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCisgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KHBhaXJfaXRlcmF0b3IpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDAgdmFsdWVzIHRvIHVucGFjayIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWUgPSBQeUl0ZXJfTmV4dChwYWlyX2l0ZXJhdG9yKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDEgdmFsdWUgdG8gdW5wYWNrIik7CisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIH0KKworICAgICAgICB1bmV4cGVjdGVkID0gUHlJdGVyX05leHQocGFpcl9pdGVyYXRvcik7CisgICAgICAgIGlmICh1bmV4cGVjdGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmV4cGVjdGVkKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyKSIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgcmVzID0gUHlPYmplY3RfU2V0SXRlbShzZWxmLCBrZXksIHZhbHVlKTsKKworRG9uZToKKyAgICAgICAgUHlfREVDUkVGKHBhaXIpOworICAgICAgICBQeV9YREVDUkVGKHBhaXJfaXRlcmF0b3IpOworICAgICAgICBQeV9YREVDUkVGKGtleSk7CisgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworCisgICAgaWYgKHJlcyA8IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK211dGFibGVtYXBwaW5nX3VwZGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJlcyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSAoYXJncyAhPSBOVUxMKSA/IFB5T2JqZWN0X1NpemUoYXJncykgOiAwOworCisgICAgLyogZmlyc3QgaGFuZGxlIGFyZ3MsIGlmIGFueSAqLworICAgIGlmIChsZW4gPCAwKSAvKiBQeU9iamVjdF9TaXplIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGxlbiA+IDEpIHsKKyAgICAgICAgY2hhciAqbXNnID0gInVwZGF0ZSgpIHRha2VzIGF0IG1vc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50ICglZCBnaXZlbikiOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBtc2csIGxlbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgICAgIGlmIChvdGhlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7CisgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG90aGVyLCAiaXRlbXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5TWFwcGluZ19JdGVtcyhvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvdGhlciwgImtleXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzLCAqaXRlcmF0b3IsICprZXk7CisgICAgICAgICAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvdGhlciwgImtleXMiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHJlcyA9PSAwICYmIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvdGhlciwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9TZXRJdGVtKHNlbGYsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogbm93IGhhbmRsZSBrd2FyZ3MgKi8KKyAgICBsZW4gPSAoa3dhcmdzICE9IE5VTEwpID8gUHlPYmplY3RfU2l6ZShrd2FyZ3MpIDogMDsKKyAgICBpZiAobGVuIDwgMCkgLyogUHlPYmplY3RfU2l6ZSByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuID4gMCkgeworICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGt3YXJncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBtYXBwaW5nIGZvciBrd2FyZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl0ZW1zID0gUHlNYXBwaW5nX0l0ZW1zKGt3YXJncyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCBjNGJhNzE1Li5kYTFkNzAzIDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC05OTQsNyArOTk0LDcgQEAKIGxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUobG9uZ3JhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBjbXA7Ci0gICAKKwogICAgIC8qIGNsaXAgdGhlIHZhbHVlICovCiAgICAgUHlPYmplY3QgKnplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgaWYgKHplcm8gPT0gTlVMTCkKQEAgLTEwMTQsNyArMTAxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbXAgPiAwKQogICAgICAgICBzdGF0ZSA9IHItPmxlbjsKLSAgICAKKwogICAgIFB5X0NMRUFSKHItPmluZGV4KTsKICAgICByLT5pbmRleCA9IHN0YXRlOwogICAgIFB5X0lOQ1JFRihyLT5pbmRleCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCAzMDQ1MTljLi5kOTYyYzFlIDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTQsNyArNCw3IEBACiAgICBXcml0dGVuIGFuZCBtYWludGFpbmVkIGJ5IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KICAgIERlcml2ZWQgZnJvbSBMaWIvc2V0cy5weSBhbmQgT2JqZWN0cy9kaWN0b2JqZWN0LmMuCiAKLSAgIENvcHlyaWdodCAoYykgMjAwMy0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgQ29weXJpZ2h0IChjKSAyMDAzLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGUgYmFzaWMgbG9va3VwIGZ1bmN0aW9uIHVzZWQgYnkgYWxsIG9wZXJhdGlvbnMuCkBAIC0yMyw3ICsyMyw3IEBACiAKICAgIEFsbCBhcml0aG1ldGljIG9uIGhhc2ggc2hvdWxkIGlnbm9yZSBvdmVyZmxvdy4KIAotICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbnMgY2FuIHJldHVybgorICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbiBjYW4gcmV0dXJuCiAgICBOVUxMIGlmIHRoZSByaWNoIGNvbXBhcmlzb24gcmV0dXJucyBhbiBlcnJvci4KICovCiAKQEAgLTU2LDEyMCArNTYsNzMgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yLiAqLworICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBlbnRyeTsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleSkKLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2ggJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVubGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpICAgICAvKiB1bmxpa2VseSAqLwogICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgaWYgKGNtcCA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogCi0gICAgICAgIGZvciAoaiA9IDEgOyBqIDw9IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKLSAgICAgICAgICAgIGVudHJ5ID0gJnRhYmxlWyhpICsgaikgJiBtYXNrXTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5KQotICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgeworICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgfQogCiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7Ci0gICAgICAgIGkgPSBpICogNSArIDEgKyBwZXJ0dXJiOworICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKIAotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7Ci0gICAgfQotICBmb3VuZF9udWxsOgotICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZW50cnkgOiBmcmVlc2xvdDsKLX0KLQotLyoKLSAqIEhhY2tlZCB1cCB2ZXJzaW9uIG9mIHNldF9sb29ra2V5IHdoaWNoIGNhbiBhc3N1bWUga2V5cyBhcmUgYWx3YXlzIHVuaWNvZGU7Ci0gKiBUaGlzIG1lYW5zIHdlIGNhbiBhbHdheXMgdXNlIHVuaWNvZGVfZXEgZGlyZWN0bHkgYW5kIG5vdCBoYXZlIHRvIGNoZWNrIHRvCi0gKiBzZWUgaWYgdGhlIGNvbXBhcmlzb24gYWx0ZXJlZCB0aGUgdGFibGUuCi0gKi8KLXN0YXRpYyBzZXRlbnRyeSAqCi1zZXRfbG9va2tleV91bmljb2RlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwotICAgIHNldGVudHJ5ICpmcmVlc2xvdCA9IE5VTEw7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKLSAgICBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwotICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoOwotICAgIHNpemVfdCBqOwotCi0gICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAotICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwotICAgICAgIHN0cmluZ3MgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCi0gICAgICAgdGhhdCBoZXJlLiAqLwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7Ci0gICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICB9Ci0KLSAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5Ci0gICAgICAgICAgICB8fCAoZW50cnktPmhhc2ggPT0gaGFzaAotICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVudHJ5LT5rZXksIGtleSkpKQotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKLQotICAgICAgICBmb3IgKGogPSAxIDsgaiA8PSBMSU5FQVJfUFJPQkVTIDsgaisrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZ0YWJsZVsoaSArIGopICYgbWFza107Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleQotICAgICAgICAgICAgICAgIHx8IChlbnRyeS0+aGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlbnRyeS0+a2V5LCBrZXkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7Ci0gICAgICAgIH0KLQotICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwotICAgICAgICBpID0gaSAqIDUgKyAxICsgcGVydHVyYjsKLQotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107CisgICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwogICAgIH0KQEAgLTE5MiwyMCArMTQ1LDIyIEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3Qpc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7CisgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIHNpemVfdCBqOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgZm9yIChqID0gMSA7IGogPD0gTElORUFSX1BST0JFUyA7IGorKykgewotICAgICAgICAgICAgZW50cnkgPSAmdGFibGVbKGkgKyBqKSAmIG1hc2tdOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgTElORUFSX1BST0JFUzsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKLSAgICAgICAgaSA9IGkgKiA1ICsgMSArIHBlcnR1cmI7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogICAgIH0KICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwpAQCAtMjI4LDE1ICsxODMsMTQgQEAKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBhc3NlcnQoc28tPmxvb2t1cCAhPSBOVUxMKTsKLSAgICBlbnRyeSA9IHNvLT5sb29rdXAoc28sIGtleSwgaGFzaCk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKICAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIHNvLT5maWxsKys7CiAgICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7CiAgICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKKyAgICAgICAgc28tPmZpbGwrKzsKICAgICAgICAgc28tPnVzZWQrKzsKICAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKICAgICAgICAgLyogRFVNTVkgKi8KQEAgLTI2MCwxMyArMjE0LDE1IEBACiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwogICAgIHNldGVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZW50cnk7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOworICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CiAKICAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICAvKiBYWFggc3BlZWQtdXAgd2l0aCBpbnRyaW5zaWNzICovCiAgICAgZm9yIChuZXdzaXplID0gUHlTZXRfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCkBAIC0zMTAsMTkgKzI2NiwyNyBAQAogCiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7Ci0gICAgc28tPnRhYmxlID0gbmV3dGFibGU7Ci0gICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKICAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihzZXRlbnRyeSkgKiBuZXdzaXplKTsKLSAgICBpID0gc28tPnVzZWQ7Ci0gICAgc28tPnVzZWQgPSAwOwogICAgIHNvLT5maWxsID0gMDsKKyAgICBzby0+dXNlZCA9IDA7CisgICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKKyAgICBzby0+dGFibGUgPSBuZXd0YWJsZTsKIAogICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKICAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCi0gICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBpID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgIC0taTsKLSAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAob2xkZmlsbCA9PSBvbGR1c2VkKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBvbGR1c2VkLS07CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgb2xkdXNlZC0tOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzQzLDcgKzMwNyw3IEBACiAgICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCiAgICAgbl91c2VkID0gc28tPnVzZWQ7CiAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpID09IC0xKSB7CisgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzU1LDggKzMxOSw4IEBACiBzdGF0aWMgaW50CiBzZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlfc3NpemVfdCBuX3VzZWQ7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKQEAgLTM2NCwxNiArMzI4LDkgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGFzc2VydChzby0+ZmlsbCA8PSBzby0+bWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IHNvLT51c2VkOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIShzby0+dXNlZCA+IG5fdXNlZCAmJiBzby0+ZmlsbCozID49IChzby0+bWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIGVudHJ5LmtleSA9IGtleTsKKyAgICBlbnRyeS5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogI2RlZmluZSBESVNDQVJEX05PVEZPVU5EIDAKQEAgLTM4MSwxNiArMzM4LDE4IEBACiAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKm9sZGVudHJ5KQoteyAgICAgICBzZXRlbnRyeSAqZW50cnk7Cit7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCi0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBvbGRlbnRyeS0+a2V5LCBvbGRlbnRyeS0+aGFzaCk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMICB8fCAgZW50cnktPmtleSA9PSBkdW1teSkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OworICAgIGVudHJ5LT5oYXNoID0gLTE7CiAgICAgc28tPnVzZWQtLTsKICAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CkBAIC0zOTksOSArMzU4LDggQEAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogCkBAIC00MTEsMTYgKzM2OSw5IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbnRyeSA9IChzby0+bG9va3VwKShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgIHx8ICBlbnRyeS0+a2V5ID09IGR1bW15KQotICAgICAgICByZXR1cm4gRElTQ0FSRF9OT1RGT1VORDsKLSAgICBvbGRfa2V5ID0gZW50cnktPmtleTsKLSAgICBlbnRyeS0+a2V5ID0gZHVtbXk7Ci0gICAgc28tPnVzZWQtLTsKLSAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQzNywyMCArMzg4LDE1IEBACiBzdGF0aWMgaW50CiBzZXRfY2xlYXJfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvKQogewotICAgIHNldGVudHJ5ICplbnRyeSwgKnRhYmxlOwotICAgIGludCB0YWJsZV9pc19tYWxsb2NlZDsKLSAgICBQeV9zc2l6ZV90IGZpbGw7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKKyAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKyAgICBpbnQgdGFibGVfaXNfbWFsbG9jZWQgPSB0YWJsZSAhPSBzby0+c21hbGx0YWJsZTsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCi0jaWZkZWYgUHlfREVCVUcKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5X3NzaXplX3QgbiA9IHNvLT5tYXNrICsgMTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwotICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgIGFzc2VydCh0YWJsZSAhPSBOVUxMKTsKLSAgICB0YWJsZV9pc19tYWxsb2NlZCA9IHRhYmxlICE9IHNvLT5zbWFsbHRhYmxlOwogCiAgICAgLyogVGhpcyBpcyBkZWxpY2F0ZS4gIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyB0aGUgc2V0LAogICAgICAqIGRlY3JlZnMgY2FuIGNhdXNlIHRoZSBzZXQgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uCkBAIC00NTgsNyArNDA0LDYgQEAKICAgICAgKiBjbGVhcmluZyB0aGUgc2xvdHMsIGFuZCBuZXZlciByZWZlciB0byBhbnl0aGluZyB2aWEgc28tPnJlZiB3aGlsZQogICAgICAqIGNsZWFyaW5nLgogICAgICAqLwotICAgIGZpbGwgPSBzby0+ZmlsbDsKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCiAgICAgICAgIHNldF9lbXB0eV90b19taW5zaXplKHNvKTsKIApAQCAtNDc3LDIwICs0MjIsMTEgQEAKICAgICAgKiBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgb24gdGFibGUgaXMgMSBub3csIGkuZS4gdGhhdCB0aGlzIGZ1bmN0aW9uCiAgICAgICogaGFzIHVuaXF1ZSBhY2Nlc3MgdG8gaXQsIHNvIGRlY3JlZiBzaWRlLWVmZmVjdHMgY2FuJ3QgYWx0ZXIgaXQuCiAgICAgICovCi0gICAgZm9yIChlbnRyeSA9IHRhYmxlOyBmaWxsID4gMDsgKytlbnRyeSkgewotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGFzc2VydChpIDwgbik7Ci0gICAgICAgICsraTsKLSNlbmRpZgotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOworICAgIGZvciAoZW50cnkgPSB0YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgdXNlZC0tOworICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOwogICAgICAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5rZXkgPT0gTlVMTCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCkBAIC01MzcsMTYgKzQ3MywxNiBAQAogc2V0X2RlYWxsb2MoUHlTZXRPYmplY3QgKnNvKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc28pOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4oc28pCiAgICAgaWYgKHNvLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzbyk7CiAKLSAgICBmb3IgKGVudHJ5ID0gc28tPnRhYmxlOyBmaWxsID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCisgICAgZm9yIChlbnRyeSA9IHNvLT50YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgICAgIHVzZWQtLTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW50cnktPmtleSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTIsMTYgKzU0OCwxNiBAQAogewogICAgIFB5U2V0T2JqZWN0ICpvdGhlcjsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2V0ZW50cnkgKnNvX2VudHJ5OworICAgIHNldGVudHJ5ICpvdGhlcl9lbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKG90aGVyc2V0KSk7CiAKICAgICBvdGhlciA9IChQeVNldE9iamVjdCopb3RoZXJzZXQ7CiAgICAgaWYgKG90aGVyID09IHNvIHx8IG90aGVyLT51c2VkID09IDApCi0gICAgICAgIC8qIGEudXBkYXRlKGEpIG9yIGEudXBkYXRlKHt9KTsgbm90aGluZyB0byBkbyAqLworICAgICAgICAvKiBhLnVwZGF0ZShhKSBvciBhLnVwZGF0ZShzZXQoKSk7IG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogRG8gb25lIGJpZyByZXNpemUgYXQgdGhlIHN0YXJ0LCByYXRoZXIgdGhhbgogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CkBAIC02MzEsMTQgKzU2Nyw0NCBAQAogICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyspIHsKLSAgICAgICAgZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOwotICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7Ci0gICAgICAgIGlmIChrZXkgIT0gTlVMTCAmJgotICAgICAgICAgICAga2V5ICE9IGR1bW15KSB7CisgICAgc29fZW50cnkgPSBzby0+dGFibGU7CisgICAgb3RoZXJfZW50cnkgPSBvdGhlci0+dGFibGU7CisKKyAgICAvKiBJZiBvdXIgdGFibGUgaXMgZW1wdHksIGFuZCBib3RoIHRhYmxlcyBoYXZlIHRoZSBzYW1lIHNpemUsIGFuZAorICAgICAgIHRoZXJlIGFyZSBubyBkdW1taWVzIHRvIGVsaW1pbmF0ZSwgdGhlbiBqdXN0IGNvcHkgdGhlIHBvaW50ZXJzLiAqLworICAgIGlmIChzby0+ZmlsbCA9PSAwICYmIHNvLT5tYXNrID09IG90aGVyLT5tYXNrICYmIG90aGVyLT5maWxsID09IG90aGVyLT51c2VkKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKywgc29fZW50cnkrKywgb3RoZXJfZW50cnkrKykgeworICAgICAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKKyAgICAgICAgICAgIGlmIChrZXkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGFzc2VydChzb19lbnRyeS0+a2V5ID09IE5VTEwpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIHNvX2VudHJ5LT5rZXkgPSBrZXk7CisgICAgICAgICAgICAgICAgc29fZW50cnktPmhhc2ggPSBvdGhlcl9lbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzby0+ZmlsbCA9IG90aGVyLT5maWxsOworICAgICAgICBzby0+dXNlZCA9IG90aGVyLT51c2VkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBJZiBvdXIgdGFibGUgaXMgZW1wdHksIHdlIGNhbiB1c2Ugc2V0X2luc2VydF9jbGVhbigpICovCisgICAgaWYgKHNvLT5maWxsID09IDApIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFdlIGNhbid0IGFzc3VyZSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcywgc28gZG8gbm9ybWFsIGluc2VydGlvbnMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKKyAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc2V0X2luc2VydF9rZXkoc28sIGtleSwgaGFzaCkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC02NDgsMTAgKzYxNCwyMyBAQAogfQogCiBzdGF0aWMgaW50CitzZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCit7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBzZXRlbnRyeSAqbHVfZW50cnk7CisKKyAgICBsdV9lbnRyeSA9IHNldF9sb29ra2V5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OworICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Cit9CisKK3N0YXRpYyBpbnQKIHNldF9jb250YWluc19rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQogeworICAgIHNldGVudHJ5IGVudHJ5OwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIHNldGVudHJ5ICplbnRyeTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewpAQCAtNjU5LDMwICs2MzgsMTYgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVudHJ5ID0gKHNvLT5sb29rdXApKHNvLCBrZXksIGhhc2gpOwotICAgIGlmIChlbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAga2V5ID0gZW50cnktPmtleTsKLSAgICByZXR1cm4ga2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15OwotfQotCi1zdGF0aWMgaW50Ci1zZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCi17Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICBzZXRlbnRyeSAqbHVfZW50cnk7Ci0KLSAgICBsdV9lbnRyeSA9IChzby0+bG9va3VwKShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwotICAgIGlmIChsdV9lbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAga2V5ID0gbHVfZW50cnktPmtleTsKLSAgICByZXR1cm4ga2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15OworICAgIGVudHJ5LmtleSA9IGtleTsKKyAgICBlbnRyeS5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3BvcChQeVNldE9iamVjdCAqc28pCiB7Ci0gICAgUHlfc3NpemVfdCBpID0gMDsKKyAgICAvKiBNYWtlIHN1cmUgdGhlIHNlYXJjaCBmaW5nZXIgaXMgaW4gYm91bmRzICovCisgICAgUHlfc3NpemVfdCBpID0gc28tPmZpbmdlciAmIHNvLT5tYXNrOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeU9iamVjdCAqa2V5OwogCkBAIC02OTIsMzIgKzY1NywxNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBTZXQgZW50cnkgdG8gInRoZSBmaXJzdCIgdW51c2VkIG9yIGR1bW15IHNldCBlbnRyeS4gIFdlIGFidXNlCi0gICAgICogdGhlIGhhc2ggZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZW50cnkgPSAmc28tPnRhYmxlWzBdOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBkdW1teSkgewotICAgICAgICBpID0gZW50cnktPmhhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IHNvLT5tYXNrIHx8IGkgPCAxKQotICAgICAgICAgICAgaSA9IDE7ICAgICAgICAgICAgICAvKiBza2lwIHNsb3QgMCAqLwotICAgICAgICB3aGlsZSAoKGVudHJ5ID0gJnNvLT50YWJsZVtpXSktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXk9PWR1bW15KSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IHNvLT5tYXNrKQotICAgICAgICAgICAgICAgIGkgPSAxOwotICAgICAgICB9CisgICAgd2hpbGUgKChlbnRyeSA9ICZzby0+dGFibGVbaV0pLT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5PT1kdW1teSkgeworICAgICAgICBpKys7CisgICAgICAgIGlmIChpID4gc28tPm1hc2spCisgICAgICAgICAgICBpID0gMDsKICAgICB9CiAgICAga2V5ID0gZW50cnktPmtleTsKICAgICBlbnRyeS0+a2V5ID0gZHVtbXk7CisgICAgZW50cnktPmhhc2ggPSAtMTsKICAgICBzby0+dXNlZC0tOwotICAgIHNvLT50YWJsZVswXS5oYXNoID0gaSArIDE7ICAvKiBuZXh0IHBsYWNlIHRvIHN0YXJ0ICovCisgICAgc28tPmZpbmdlciA9IGkgKyAxOyAgICAgICAgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KICAgICByZXR1cm4ga2V5OwogfQogCkBAIC03NjAsNyArNzA5LDcgQEAKICAgICBoYXNoICo9IChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMTsKICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKICAgICAgICAgLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2gKLSAgICAgICAgICAgdmFsdWVzLiAgVGhlIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueQorICAgICAgICAgICB2YWx1ZXMuICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueQogICAgICAgICAgICBjb21iaW5hdGlvbnMgb2YgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBuZWFyYnkKICAgICAgICAgICAgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdCBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seQogICAgICAgICAgICBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCkBAIC03NzAsNyArNzE5LDcgQEAKICAgICAvKiBNYWtlIHRoZSBmaW5hbCByZXN1bHQgc3ByZWFkLW91dCBpbiBhIGRpZmZlcmVudCBwYXR0ZXJuCiAgICAgICAgdGhhbiB0aGUgYWxnb3JpdGhtIGZvciB0dXBsZXMgb3Igb3RoZXIgcHl0aG9uIG9iamVjdHMuICovCiAgICAgaGFzaCA9IGhhc2ggKiA2OTA2OVUgKyA5MDcxMzM5MjNVTDsKLSAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICBpZiAoaGFzaCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgaGFzaCA9IDU5MDkyMzcxM1VMOwogICAgIHNvLT5oYXNoID0gaGFzaDsKICAgICByZXR1cm4gaGFzaDsKQEAgLTk3NCw3ICs5MjMsNyBAQAogCiAgICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKICAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpID09IC0xKQorICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTg1LDcgKzkzNCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChzZXRfYWRkX2tleShzbywga2V5KSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X2FkZF9rZXkoc28sIGtleSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMDUsNyArOTU0LDcgQEAKIAogICAgIGZvciAoaT0wIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCisgICAgICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMDE0LDYgKzk2MywxMiBAQAogUHlEb2NfU1RSVkFSKHVwZGF0ZV9kb2MsCiAiVXBkYXRlIGEgc2V0IHdpdGggdGhlIHVuaW9uIG9mIGl0c2VsZiBhbmQgb3RoZXJzLiIpOwogCisvKiBYWFggVG9kbzoKKyAgIElmIGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb25zIGJlY29tZSBhdmFpbGFibGUsIG1ha2UgdGhlCisgICBzZXQgb2JqZWN0IDY0IGJ5dGUgYWxpZ25lZCBzbyB0aGF0IG1vc3Qgb2YgdGhlIGZpZWxkcworICAgY2FuIGJlIHJldHJpZXZlZCBvciB1cGRhdGVkIGluIGEgc2luZ2xlIGNhY2hlIGxpbmUuCisqLworCiBzdGF0aWMgUHlPYmplY3QgKgogbWFrZV9uZXdfc2V0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewpAQCAtMTAyOCwxMiArOTgzLDEyIEBACiAgICAgc28tPnVzZWQgPSAwOwogICAgIHNvLT5tYXNrID0gUHlTZXRfTUlOU0laRSAtIDE7CiAgICAgc28tPnRhYmxlID0gc28tPnNtYWxsdGFibGU7Ci0gICAgc28tPmxvb2t1cCA9IHNldF9sb29ra2V5X3VuaWNvZGU7CiAgICAgc28tPmhhc2ggPSAtMTsKKyAgICBzby0+ZmluZ2VyID0gMDsKICAgICBzby0+d2Vha3JlZmxpc3QgPSBOVUxMOwogCiAgICAgaWYgKGl0ZXJhYmxlICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIGl0ZXJhYmxlKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgaXRlcmFibGUpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc28pOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTExMTcsMTAgKzEwNzIsOCBAQAogICAgICB0PXNldChhKTsgYS5jbGVhcigpOyBhLnVwZGF0ZShiKTsgYi5jbGVhcigpOyBiLnVwZGF0ZSh0KTsgZGVsIHQKIAogICAgVGhlIGZ1bmN0aW9uIGFsd2F5cyBzdWNjZWVkcyBhbmQgaXQgbGVhdmVzIGJvdGggb2JqZWN0cyBpbiBhIHN0YWJsZSBzdGF0ZS4KLSAgIFVzZWZ1bCBmb3IgY3JlYXRpbmcgdGVtcG9yYXJ5IGZyb3plbnNldHMgZnJvbSBzZXRzIGZvciBtZW1iZXJzaGlwIHRlc3RpbmcKLSAgIGluIF9fY29udGFpbnNfXygpLCBkaXNjYXJkKCksIGFuZCByZW1vdmUoKS4gIEFsc28gdXNlZnVsIGZvciBvcGVyYXRpb25zCi0gICB0aGF0IHVwZGF0ZSBpbi1wbGFjZSAoYnkgYWxsb3dpbmcgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdCB0byBiZSBzd2FwcGVkCi0gICBpbnRvIG9uZSBvZiB0aGUgb3JpZ2luYWwgaW5wdXRzKS4KKyAgIFVzZWZ1bCBmb3Igb3BlcmF0aW9ucyB0aGF0IHVwZGF0ZSBpbi1wbGFjZSAoYnkgYWxsb3dpbmcgYW4gaW50ZXJtZWRpYXRlCisgICByZXN1bHQgdG8gYmUgc3dhcHBlZCBpbnRvIG9uZSBvZiB0aGUgb3JpZ2luYWwgaW5wdXRzKS4KICovCiAKIHN0YXRpYyB2b2lkCkBAIC0xMTI4LDcgKzEwODEsNiBAQAogewogICAgIFB5X3NzaXplX3QgdDsKICAgICBzZXRlbnRyeSAqdTsKLSAgICBzZXRlbnRyeSAqKCpmKShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X3NzaXplX3QgaGFzaCk7CiAgICAgc2V0ZW50cnkgdGFiW1B5U2V0X01JTlNJWkVdOwogICAgIFB5X2hhc2hfdCBoOwogCkBAIC0xMTQ0LDggKzEwOTYsNiBAQAogICAgICAgICBhLT50YWJsZSA9IGEtPnNtYWxsdGFibGU7CiAgICAgYi0+dGFibGUgPSB1OwogCi0gICAgZiA9IGEtPmxvb2t1cDsgICBhLT5sb29rdXAgPSBiLT5sb29rdXA7ICAgICAgYi0+bG9va3VwID0gZjsKLQogICAgIGlmIChhLT50YWJsZSA9PSBhLT5zbWFsbHRhYmxlIHx8IGItPnRhYmxlID09IGItPnNtYWxsdGFibGUpIHsKICAgICAgICAgbWVtY3B5KHRhYiwgYS0+c21hbGx0YWJsZSwgc2l6ZW9mKHRhYikpOwogICAgICAgICBtZW1jcHkoYS0+c21hbGx0YWJsZSwgYi0+c21hbGx0YWJsZSwgc2l6ZW9mKHRhYikpOwpAQCAtMTIwMyw3ICsxMTUzLDcgQEAKICAgICAgICAgb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwocmVzdWx0LCBvdGhlcikgPT0gLTEpIHsKKyAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwocmVzdWx0LCBvdGhlcikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTEyMjksNyArMTE3OSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKLSAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHJlc3VsdCwgb3RoZXIpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMjQyLDcgKzExOTIsNyBAQAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKLSAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQorICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNvOwpAQCAtMTI3OCw3ICsxMjI4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTEzMTQsNyArMTI2NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgJmVudHJ5KSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKQEAgLTE1MjIsNyArMTQ3Miw3IEBACiAKICAgICBmb3IgKGk9MCA7IGk8UHlUdXBsZV9HRVRfU0laRShhcmdzKSA7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwotICAgICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCisgICAgICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTE1NzgsNyArMTUyOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgJmVudHJ5Y29weSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1OTUsNyArMTU0NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE2MjAsNyArMTU3MCw3IEBACiAKICAgICBmb3IgKGk9MSA7IGk8UHlUdXBsZV9HRVRfU0laRShhcmdzKSA7IGkrKykgewogICAgICAgICBvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBvdGhlcikgPT0gLTEpIHsKKyAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKilyZXN1bHQsIG90aGVyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTY0NSw3ICsxNTk1LDcgQEAKIHsKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNvOwpAQCAtMTY3OSw3ICsxNjI5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTcwNSw3ICsxNjU1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgZW50cnkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE4NTYsNyArMTgwNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2FkZChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpID09IC0xKQorICAgIGlmIChzZXRfYWRkX2tleShzbywga2V5KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0yNDAwLDcgKzIzNTAsNyBAQAogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc2V0X2NsZWFyX2ludGVybmFsKHNvKTsKLSAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgc3RyKSA9PSAtMSkgeworICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBzdHIpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCmluZGV4IGVlMWJmMmIuLjBmYzZiNTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC03MTgsNiArNzE4LDkzIEBACiAgICAgcmV0dXJuIGxlbiAtIChlbmQgLSBpbiArIDEpOwogI2VuZGlmCiB9CisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorIyBkZWZpbmUgU1dBQjQoQ0gsIHRtcCkgICgoQ0gpIDw8IDI0KSAvKiBoaWdoIGJ5dGVzIGFyZSB6ZXJvICovCisjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorIyBkZWZpbmUgU1dBQjQoQ0gsIHRtcCkgICh0bXAgPSAoQ0gpLCBcCisgICAgICAgICAgICAoKHRtcCAmIDB4MDBGRnUpIDw8IDI0KSArICgodG1wICYgMHhGRjAwdSkgPDwgOCkpCisgICAgICAgICAgICAvKiBoaWdoIGJ5dGVzIGFyZSB6ZXJvICovCisjZWxzZQorIyBkZWZpbmUgU1dBQjQoQ0gsIHRtcCkgICh0bXAgPSAoQ0gpLCBcCisgICAgICAgICAgICB0bXAgPSAoKHRtcCAmIDB4MDBGRjAwRkZ1KSA8PCA4KSArICgodG1wID4+IDgpICYgMHgwMEZGMDBGRnUpLCBcCisgICAgICAgICAgICAoKHRtcCAmIDB4MDAwMEZGRkZ1KSA8PCAxNikgKyAoKHRtcCA+PiAxNikgJiAweDAwMDBGRkZGdSkpCisjZW5kaWYKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorU1RSSU5HTElCKHV0ZjMyX2VuY29kZSkoY29uc3QgU1RSSU5HTElCX0NIQVIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQWV9VSU5UMzJfVCAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXRpdmVfb3JkZXJpbmcpCit7CisgICAgUFlfVUlOVDMyX1QgKm91dCA9ICpvdXRwdHI7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmVuZCA9IGluICsgbGVuOworICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnVucm9sbGVkX2VuZCA9IGluICsgX1B5X1NJWkVfUk9VTkRfRE9XTihsZW4sIDQpOworICAgICAgICB3aGlsZSAoaW4gPCB1bnJvbGxlZF9lbmQpIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICAvKiBjaGVjayBpZiBhbnkgY2hhcmFjdGVyIGlzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgaWYgKCgoaW5bMF0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzFdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblsyXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bM10gXiAweGQ4MDApICYgMHhmODAwKSA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgICAgICBvdXRbMF0gPSBpblswXTsKKyAgICAgICAgICAgIG91dFsxXSA9IGluWzFdOworICAgICAgICAgICAgb3V0WzJdID0gaW5bMl07CisgICAgICAgICAgICBvdXRbM10gPSBpblszXTsKKyAgICAgICAgICAgIGluICs9IDQ7IG91dCArPSA0OworICAgICAgICB9CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgICAgIGNoID0gKmluKys7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgeworICAgICAgICAgICAgICAgIC8qIHJlamVjdCBzdXJyb2dhdGUgY2hhcmFjdGVycyAoVStEODAwLVUrREZGRikgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICpvdXQrKyA9IGNoOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnVucm9sbGVkX2VuZCA9IGluICsgX1B5X1NJWkVfUk9VTkRfRE9XTihsZW4sIDQpOworICAgICAgICB3aGlsZSAoaW4gPCB1bnJvbGxlZF9lbmQpIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICBQeV9VQ1M0IGNoMSwgY2gyLCBjaDMsIGNoNDsKKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIGFueSBjaGFyYWN0ZXIgaXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICBpZiAoKChpblswXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMV0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzJdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblszXSBeIDB4ZDgwMCkgJiAweGY4MDApID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIG91dFswXSA9IFNXQUI0KGluWzBdLCBjaDEpOworICAgICAgICAgICAgb3V0WzFdID0gU1dBQjQoaW5bMV0sIGNoMik7CisgICAgICAgICAgICBvdXRbMl0gPSBTV0FCNChpblsyXSwgY2gzKTsKKyAgICAgICAgICAgIG91dFszXSA9IFNXQUI0KGluWzNdLCBjaDQpOworICAgICAgICAgICAgaW4gKz0gNDsgb3V0ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gKmluKys7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgeworICAgICAgICAgICAgICAgIC8qIHJlamVjdCBzdXJyb2dhdGUgY2hhcmFjdGVycyAoVStEODAwLVUrREZGRikgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICpvdXQrKyA9IFNXQUI0KGNoLCBjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgKm91dHB0ciA9IG91dDsKKyAgICByZXR1cm4gbGVuOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgZmFpbDoKKyAgICAqb3V0cHRyID0gb3V0OworICAgIHJldHVybiBsZW4gLSAoZW5kIC0gaW4gKyAxKTsKKyNlbmRpZgorfQorI3VuZGVmIFNXQUI0CisKICNlbmRpZgogCiAjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAppbmRleCBjZDdjYWM0Li5jZGE2OGU3IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCkBAIC0zNiw3ICszNiw3IEBACiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgY2gsIHVuc2lnbmVkIGNoYXIgbmVlZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50LCBpbnQgbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnB0ciA9IHM7CkBAIC0xMTUsNyArMTE1LDcgQEAKICAgICAgICAgICAgIGlmIChuZWVkbGUgIT0gMCkKICNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpCi0gICAgICAgICAgICAgICAgICAgICAgIChzLCBuLCBwWzBdLCBuZWVkbGUsIG1heGNvdW50LCBtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbW9kZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAppbmRleCA1MThlMDEyLi4xNDgxNWY2IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCkBAIC0xMSw4ICsxMSw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBwb3M7CiAKLSAgICBpZiAoc3RyX2xlbiA8IDApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoc3RyX2xlbiA+PSAwKTsKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogCkBAIC0zMSw4ICszMCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBwb3M7CiAKLSAgICBpZiAoc3RyX2xlbiA8IDApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoc3RyX2xlbiA+PSAwKTsKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gc3RyX2xlbiArIG9mZnNldDsKIApAQCAtNDQsMjcgKzQyLDExIEBACiAgICAgcmV0dXJuIHBvczsKIH0KIAotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQogU1RSSU5HTElCKGZpbmRfc2xpY2UpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwogICAgIHJldHVybiBTVFJJTkdMSUIoZmluZCkoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKIH0KIApAQCAtNzMsNyArNTUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzdHJfbGVuKTsKICAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCmluZGV4IGNhZTZlYTEuLmI1NTliNTMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCkBAIC01OSw3ICs1OSw3IEBACiAKICAgICBqID0gMDsKICAgICBxID0gU1RSSU5HTElCX1NUUih1KTsKLSAgICAKKwogICAgIGZvciAocCA9IFNUUklOR0xJQl9TVFIoc2VsZik7IHAgPCBlOyBwKyspIHsKICAgICAgICAgaWYgKCpwID09ICdcdCcpIHsKICAgICAgICAgICAgIGlmICh0YWJzaXplID4gMCkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IDhjMDAyMTAuLjdlZmExYTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTk3LDcgKzk3LDcgQEAKICNlbmRpZgogICAgIHsKICAgICAgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0KKyAgICAgICAgaWYgKChzaXplX3Qpc2l6ZSA+ICgoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0KICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5T2JqZWN0ICopKSAvIHNpemVvZihQeU9iamVjdCAqKSkgewogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIH0KQEAgLTc0Niw3ICs3NDYsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggZDM5Yzk0My4uODJjODcxMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTE0LDEwICsxNCwxMSBAQAogICAgTUNBQ0hFX01BWF9BVFRSX1NJWkUsIHNpbmNlIGl0IG1pZ2h0IGJlIGEgcHJvYmxlbSBpZiB2ZXJ5IGxhcmdlCiAgICBzdHJpbmdzIGFyZSB1c2VkIGFzIGF0dHJpYnV0ZSBuYW1lcy4gKi8KICNkZWZpbmUgTUNBQ0hFX01BWF9BVFRSX1NJWkUgICAgMTAwCi0jZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDkKKyNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgMTIKICNkZWZpbmUgTUNBQ0hFX0hBU0godmVyc2lvbiwgbmFtZV9oYXNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKCgodW5zaWduZWQgaW50KSh2ZXJzaW9uKSAqICh1bnNpZ25lZCBpbnQpKG5hbWVfaGFzaCkpICAgICAgICAgIFwKLSAgICAgICAgID4+ICg4KnNpemVvZih1bnNpZ25lZCBpbnQpIC0gTUNBQ0hFX1NJWkVfRVhQKSkKKyAgICAgICAgKCgodW5zaWduZWQgaW50KSh2ZXJzaW9uKSBeICh1bnNpZ25lZCBpbnQpKG5hbWVfaGFzaCkpICAgICAgICAgIFwKKyAgICAgICAgICYgKCgxIDw8IE1DQUNIRV9TSVpFX0VYUCkgLSAxKSkKKwogI2RlZmluZSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBNQ0FDSEVfSEFTSCgodHlwZSktPnRwX3ZlcnNpb25fdGFnLCAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG5hbWUpKS0+aGFzaCkKQEAgLTM1LDYgKzM2LDE0IEBACiBzdGF0aWMgc3RydWN0IG1ldGhvZF9jYWNoZV9lbnRyeSBtZXRob2RfY2FjaGVbMSA8PCBNQ0FDSEVfU0laRV9FWFBdOwogc3RhdGljIHVuc2lnbmVkIGludCBuZXh0X3ZlcnNpb25fdGFnID0gMDsKIAorI2RlZmluZSBNQ0FDSEVfU1RBVFMgMAorCisjaWYgTUNBQ0hFX1NUQVRTCitzdGF0aWMgc2l6ZV90IG1ldGhvZF9jYWNoZV9oaXRzID0gMDsKK3N0YXRpYyBzaXplX3QgbWV0aG9kX2NhY2hlX21pc3NlcyA9IDA7CitzdGF0aWMgc2l6ZV90IG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zID0gMDsKKyNlbmRpZgorCiAvKiBhbHBoYWJldGljYWwgb3JkZXIgKi8KIF9QeV9JREVOVElGSUVSKF9fYWJzdHJhY3RtZXRob2RzX18pOwogX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKQEAgLTU0LDYgKzYzLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CiAKK3N0YXRpYyB2b2lkCitjbGVhcl9zbG90ZGVmcyh2b2lkKTsKKwogLyoKICAqIGZpbmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3N0cmluZydzIGludHJvc3BlY3Rpb24gc2lnbmF0dXJlLgogICogaWYgcHJlc2VudCwgcmV0dXJucyBhIHBvaW50ZXIgcG9pbnRpbmcgdG8gdGhlIGZpcnN0ICcoJy4KQEAgLTEyNSw3ICsxMzcsNyBAQAogewogICAgIGNvbnN0IGNoYXIgKmRvYyA9IF9QeVR5cGVfRG9jV2l0aG91dFNpZ25hdHVyZShuYW1lLCBpbnRlcm5hbF9kb2MpOwogCi0gICAgaWYgKCFkb2MpIHsKKyAgICBpZiAoIWRvYyB8fCAqZG9jID09ICdcMCcpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CkBAIC0xNjIsNiArMTc0LDE4IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIHVuc2lnbmVkIGludCBjdXJfdmVyc2lvbl90YWcgPSBuZXh0X3ZlcnNpb25fdGFnIC0gMTsKIAorI2lmIE1DQUNIRV9TVEFUUworICAgIHNpemVfdCB0b3RhbCA9IG1ldGhvZF9jYWNoZV9oaXRzICsgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMgKyBtZXRob2RfY2FjaGVfbWlzc2VzOworICAgIGZwcmludGYoc3RkZXJyLCAiLS0gTWV0aG9kIGNhY2hlIGhpdHMgICAgICAgID0gJXpkICglZCUlKVxuIiwKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9oaXRzLCAoaW50KSAoMTAwLjAgKiBtZXRob2RfY2FjaGVfaGl0cyAvIHRvdGFsKSk7CisgICAgZnByaW50ZihzdGRlcnIsICItLSBNZXRob2QgY2FjaGUgdHJ1ZSBtaXNzZXMgPSAlemQgKCVkJSUpXG4iLAorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX21pc3NlcywgKGludCkgKDEwMC4wICogbWV0aG9kX2NhY2hlX21pc3NlcyAvIHRvdGFsKSk7CisgICAgZnByaW50ZihzdGRlcnIsICItLSBNZXRob2QgY2FjaGUgY29sbGlzaW9ucyAgPSAlemQgKCVkJSUpXG4iLAorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMsIChpbnQpICgxMDAuMCAqIG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zIC8gdG90YWwpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSBzaXplICAgICAgICA9ICV6ZCBLQlxuIiwKKyAgICAgICAgICAgIHNpemVvZihtZXRob2RfY2FjaGUpIC8gMTAyNCk7CisjZW5kaWYKKwogICAgIGZvciAoaSA9IDA7IGkgPCAoMSA8PCBNQ0FDSEVfU0laRV9FWFApOyBpKyspIHsKICAgICAgICAgbWV0aG9kX2NhY2hlW2ldLnZlcnNpb24gPSAwOwogICAgICAgICBQeV9DTEVBUihtZXRob2RfY2FjaGVbaV0ubmFtZSk7CkBAIC0xNzcsNiArMjAxLDcgQEAKIF9QeVR5cGVfRmluaSh2b2lkKQogewogICAgIFB5VHlwZV9DbGVhckNhY2hlKCk7CisgICAgY2xlYXJfc2xvdGRlZnMoKTsKIH0KIAogdm9pZApAQCAtMTIwMCw4ICsxMjI1LDExIEBACiAgICAgYXNzZXJ0KGJhc2VkZWFsbG9jKTsKICAgICBiYXNlZGVhbGxvYyhzZWxmKTsKIAotICAgIC8qIENhbid0IHJlZmVyZW5jZSBzZWxmIGJleW9uZCB0aGlzIHBvaW50ICovCi0gICAgUHlfREVDUkVGKHR5cGUpOworICAgIC8qIENhbid0IHJlZmVyZW5jZSBzZWxmIGJleW9uZCB0aGlzIHBvaW50LiBJdCdzIHBvc3NpYmxlIHRwX2RlbCBzd2l0Y2hlZAorICAgICAgIG91ciB0eXBlIGZyb20gYSBIRUFQVFlQRSB0byBhIG5vbi1IRUFQVFlQRSwgc28gYmUgY2FyZWZ1bCBhYm91dAorICAgICAgIHJlZmVyZW5jZSBjb3VudGluZy4gKi8KKyAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQorICAgICAgUHlfREVDUkVGKHR5cGUpOwogCiAgIGVuZGxhYmVsOgogICAgICsrX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CkBAIC0yNDc4LDYgKzI1MDYsNyBAQAogICAgICAgICB0eXBlLT50cF9mbGFncyB8PSBQeV9UUEZMQUdTX0hBVkVfR0M7CiAKICAgICAvKiBJbml0aWFsaXplIGVzc2VudGlhbCBmaWVsZHMgKi8KKyAgICB0eXBlLT50cF9hc19hc3luYyA9ICZldC0+YXNfYXN5bmM7CiAgICAgdHlwZS0+dHBfYXNfbnVtYmVyID0gJmV0LT5hc19udW1iZXI7CiAgICAgdHlwZS0+dHBfYXNfc2VxdWVuY2UgPSAmZXQtPmFzX3NlcXVlbmNlOwogICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmZXQtPmFzX21hcHBpbmc7CkBAIC0yNjE3LDkgKzI2NDYsMTAgQEAKICAgICB9CiAgICAgdHlwZS0+dHBfZGVhbGxvYyA9IHN1YnR5cGVfZGVhbGxvYzsKIAotICAgIC8qIEVuYWJsZSBHQyB1bmxlc3MgdGhlcmUgYXJlIHJlYWxseSBubyBpbnN0YW5jZSB2YXJpYWJsZXMgcG9zc2libGUgKi8KLSAgICBpZiAoISh0eXBlLT50cF9iYXNpY3NpemUgPT0gc2l6ZW9mKFB5T2JqZWN0KSAmJgotICAgICAgICAgIHR5cGUtPnRwX2l0ZW1zaXplID09IDApKQorICAgIC8qIEVuYWJsZSBHQyB1bmxlc3MgdGhpcyBjbGFzcyBpcyBub3QgYWRkaW5nIG5ldyBpbnN0YW5jZSB2YXJpYWJsZXMgYW5kCisgICAgICAgdGhlIGJhc2UgY2xhc3MgZGlkIG5vdCB1c2UgR0MuICovCisgICAgaWYgKChiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykgfHwKKyAgICAgICAgdHlwZS0+dHBfYmFzaWNzaXplID4gYmFzZS0+dHBfYmFzaWNzaXplKQogICAgICAgICB0eXBlLT50cF9mbGFncyB8PSBQeV9UUEZMQUdTX0hBVkVfR0M7CiAKICAgICAvKiBBbHdheXMgb3ZlcnJpZGUgYWxsb2NhdGlvbiBzdHJhdGVneSB0byB1c2UgcmVndWxhciBoZWFwICovCkBAIC0yNjY0LDYgKzI2OTQsNyBAQAogewogICAgIFB5SGVhcFR5cGVPYmplY3QgKnJlcyA9IChQeUhlYXBUeXBlT2JqZWN0KilQeVR5cGVfR2VuZXJpY0FsbG9jKCZQeVR5cGVfVHlwZSwgMCk7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlLCAqYmFzZTsKKyAgICBQeU9iamVjdCAqbW9kbmFtZTsKICAgICBjaGFyICpzOwogICAgIGNoYXIgKnJlc19zdGFydCA9IChjaGFyKilyZXM7CiAgICAgUHlUeXBlX1Nsb3QgKnNsb3Q7CkBAIC0yNzIyLDYgKzI3NTMsNyBAQAogICAgIH0KIAogICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX2FzeW5jID0gJnJlcy0+YXNfYXN5bmM7CiAgICAgdHlwZS0+dHBfYXNfbnVtYmVyID0gJnJlcy0+YXNfbnVtYmVyOwogICAgIHR5cGUtPnRwX2FzX3NlcXVlbmNlID0gJnJlcy0+YXNfc2VxdWVuY2U7CiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZyZXMtPmFzX21hcHBpbmc7CkBAIC0yNzM2LDcgKzI3NjgsOCBAQAogICAgIHR5cGUtPnRwX2l0ZW1zaXplID0gc3BlYy0+aXRlbXNpemU7CiAKICAgICBmb3IgKHNsb3QgPSBzcGVjLT5zbG90czsgc2xvdC0+c2xvdDsgc2xvdCsrKSB7Ci0gICAgICAgIGlmIChzbG90LT5zbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPCAwCisgICAgICAgICAgICB8fCAoc2l6ZV90KXNsb3QtPnNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgc2xvdCBvZmZzZXQiKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQpAQCAtMjc3NSwxMCArMjgwOCwyMCBAQAogCiAgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLwogICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7Ci0gICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywKLSAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgICAgICAgICBzcGVjLT5uYW1lLCAoUHlfc3NpemVfdCkocyAtIHNwZWMtPm5hbWUpKSk7CisgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICBtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpOworICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgImJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlIiwKKyAgICAgICAgICAgICAgICBzcGVjLT5uYW1lKSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CiAKICAgICByZXR1cm4gKFB5T2JqZWN0KilyZXM7CiAKQEAgLTI3OTYsMTEgKzI4MzksMTEgQEAKIHZvaWQgKgogUHlUeXBlX0dldFNsb3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgc2xvdCkKIHsKLSAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKHR5cGUsIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZSh0eXBlLCBQeV9UUEZMQUdTX0hFQVBUWVBFKSB8fCBzbG90IDwgMCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChzbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKKyAgICBpZiAoKHNpemVfdClzbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKICAgICAgICAgLyogRXh0ZW5zaW9uIG1vZHVsZSByZXF1ZXN0aW5nIHNsb3QgZnJvbSBhIGZ1dHVyZSB2ZXJzaW9uICovCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI4MjEsOCArMjg2NCwxMiBAQAogICAgICAgICAvKiBmYXN0IHBhdGggKi8KICAgICAgICAgaCA9IE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKTsKICAgICAgICAgaWYgKG1ldGhvZF9jYWNoZVtoXS52ZXJzaW9uID09IHR5cGUtPnRwX3ZlcnNpb25fdGFnICYmCi0gICAgICAgICAgICBtZXRob2RfY2FjaGVbaF0ubmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgbWV0aG9kX2NhY2hlW2hdLm5hbWUgPT0gbmFtZSkgeworI2lmIE1DQUNIRV9TVEFUUworICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2hpdHMrKzsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG1ldGhvZF9jYWNoZVtoXS52YWx1ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIExvb2sgaW4gdHBfZGljdCBvZiB0eXBlcyBpbiBNUk8gKi8KQEAgLTI4NTYsNiArMjkwMywxMyBAQAogICAgICAgICBtZXRob2RfY2FjaGVbaF0udmVyc2lvbiA9IHR5cGUtPnRwX3ZlcnNpb25fdGFnOwogICAgICAgICBtZXRob2RfY2FjaGVbaF0udmFsdWUgPSByZXM7ICAvKiBib3Jyb3dlZCAqLwogICAgICAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgICAgIGFzc2VydCgoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoICE9IC0xKTsKKyNpZiBNQ0FDSEVfU1RBVFMKKyAgICAgICAgaWYgKG1ldGhvZF9jYWNoZVtoXS5uYW1lICE9IFB5X05vbmUgJiYgbWV0aG9kX2NhY2hlW2hdLm5hbWUgIT0gbmFtZSkKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9jb2xsaXNpb25zKys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldGhvZF9jYWNoZV9taXNzZXMrKzsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYobWV0aG9kX2NhY2hlW2hdLm5hbWUpOwogICAgICAgICBtZXRob2RfY2FjaGVbaF0ubmFtZSA9IG5hbWU7CiAgICAgfQpAQCAtMzUwNiwxNyArMzU2MCwxOCBAQAogfQogCiBzdGF0aWMgaW50Ci1lcXVpdl9zdHJ1Y3RzKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQorY29tcGF0aWJsZV93aXRoX3RwX2Jhc2UoUHlUeXBlT2JqZWN0ICpjaGlsZCkKIHsKLSAgICByZXR1cm4gYSA9PSBiIHx8Ci0gICAgICAgICAgIChhICE9IE5VTEwgJiYKLSAgICAgICAgYiAhPSBOVUxMICYmCi0gICAgICAgIGEtPnRwX2Jhc2ljc2l6ZSA9PSBiLT50cF9iYXNpY3NpemUgJiYKLSAgICAgICAgYS0+dHBfaXRlbXNpemUgPT0gYi0+dHBfaXRlbXNpemUgJiYKLSAgICAgICAgYS0+dHBfZGljdG9mZnNldCA9PSBiLT50cF9kaWN0b2Zmc2V0ICYmCi0gICAgICAgIGEtPnRwX3dlYWtsaXN0b2Zmc2V0ID09IGItPnRwX3dlYWtsaXN0b2Zmc2V0ICYmCi0gICAgICAgICgoYS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpID09Ci0gICAgICAgICAoYi0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpKSk7CisgICAgUHlUeXBlT2JqZWN0ICpwYXJlbnQgPSBjaGlsZC0+dHBfYmFzZTsKKyAgICByZXR1cm4gKHBhcmVudCAhPSBOVUxMICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfYmFzaWNzaXplID09IHBhcmVudC0+dHBfYmFzaWNzaXplICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfaXRlbXNpemUgPT0gcGFyZW50LT50cF9pdGVtc2l6ZSAmJgorICAgICAgICAgICAgY2hpbGQtPnRwX2RpY3RvZmZzZXQgPT0gcGFyZW50LT50cF9kaWN0b2Zmc2V0ICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfd2Vha2xpc3RvZmZzZXQgPT0gcGFyZW50LT50cF93ZWFrbGlzdG9mZnNldCAmJgorICAgICAgICAgICAgKChjaGlsZC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpID09CisgICAgICAgICAgICAgKHBhcmVudC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hBVkVfR0MpKSAmJgorICAgICAgICAgICAgKGNoaWxkLT50cF9kZWFsbG9jID09IHN1YnR5cGVfZGVhbGxvYyB8fAorICAgICAgICAgICAgIGNoaWxkLT50cF9kZWFsbG9jID09IHBhcmVudC0+dHBfZGVhbGxvYykpOwogfQogCiBzdGF0aWMgaW50CkBAIC0zNTM0LDYgKzM1ODksMTAgQEAKICAgICAgICAgc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CiAKICAgICAvKiBDaGVjayBzbG90cyBjb21wbGlhbmNlICovCisgICAgaWYgKCEoYS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB8fAorICAgICAgICAhKGItPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHNsb3RzX2EgPSAoKFB5SGVhcFR5cGVPYmplY3QgKilhKS0+aHRfc2xvdHM7CiAgICAgc2xvdHNfYiA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKWIpLT5odF9zbG90czsKICAgICBpZiAoc2xvdHNfYSAmJiBzbG90c19iKSB7CkBAIC0zNTQ5LDkgKzM2MDgsNyBAQAogewogICAgIFB5VHlwZU9iamVjdCAqbmV3YmFzZSwgKm9sZGJhc2U7CiAKLSAgICBpZiAobmV3dG8tPnRwX2RlYWxsb2MgIT0gb2xkdG8tPnRwX2RlYWxsb2MgfHwKLSAgICAgICAgbmV3dG8tPnRwX2ZyZWUgIT0gb2xkdG8tPnRwX2ZyZWUpCi0gICAgeworICAgIGlmIChuZXd0by0+dHBfZnJlZSAhPSBvbGR0by0+dHBfZnJlZSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzIGFzc2lnbm1lbnQ6ICIKICAgICAgICAgICAgICAgICAgICAgICInJXMnIGRlYWxsb2NhdG9yIGRpZmZlcnMgZnJvbSAnJXMnIiwKQEAgLTM1NjAsMTEgKzM2MTcsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgIG9sZHRvLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIC8qCisgICAgIEl0J3MgdHJpY2t5IHRvIHRlbGwgaWYgdHdvIGFyYml0cmFyeSB0eXBlcyBhcmUgc3VmZmljaWVudGx5IGNvbXBhdGlibGUgYXMKKyAgICAgdG8gYmUgaW50ZXJjaGFuZ2VhYmxlOyBlLmcuLCBldmVuIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB0cF9iYXNpY3NpemUsIHRoZXkKKyAgICAgbWlnaHQgaGF2ZSB0b3RhbGx5IGRpZmZlcmVudCBzdHJ1Y3QgZmllbGRzLiBJdCdzIG11Y2ggZWFzaWVyIHRvIHRlbGwgaWYgYQorICAgICB0eXBlIGFuZCBpdHMgc3VwZXJ0eXBlIGFyZSBjb21wYXRpYmxlOyBlLmcuLCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUKKyAgICAgdHBfYmFzaWNzaXplLCB0aGVuIHRoYXQgbWVhbnMgdGhleSBoYXZlIGlkZW50aWNhbCBmaWVsZHMuIFNvIHRvIGNoZWNrCisgICAgIHdoZXRoZXIgdHdvIGFyYml0cmFyeSB0eXBlcyBhcmUgY29tcGF0aWJsZSwgd2UgZmlyc3QgZmluZCB0aGUgaGlnaGVzdAorICAgICBzdXBlcnR5cGUgdGhhdCBlYWNoIGlzIGNvbXBhdGlibGUgd2l0aCwgYW5kIHRoZW4gaWYgdGhvc2Ugc3VwZXJ0eXBlcyBhcmUKKyAgICAgY29tcGF0aWJsZSB0aGVuIHRoZSBvcmlnaW5hbCB0eXBlcyBtdXN0IGFsc28gYmUgY29tcGF0aWJsZS4KKyAgICAqLwogICAgIG5ld2Jhc2UgPSBuZXd0bzsKICAgICBvbGRiYXNlID0gb2xkdG87Ci0gICAgd2hpbGUgKGVxdWl2X3N0cnVjdHMobmV3YmFzZSwgbmV3YmFzZS0+dHBfYmFzZSkpCisgICAgd2hpbGUgKGNvbXBhdGlibGVfd2l0aF90cF9iYXNlKG5ld2Jhc2UpKQogICAgICAgICBuZXdiYXNlID0gbmV3YmFzZS0+dHBfYmFzZTsKLSAgICB3aGlsZSAoZXF1aXZfc3RydWN0cyhvbGRiYXNlLCBvbGRiYXNlLT50cF9iYXNlKSkKKyAgICB3aGlsZSAoY29tcGF0aWJsZV93aXRoX3RwX2Jhc2Uob2xkYmFzZSkpCiAgICAgICAgIG9sZGJhc2UgPSBvbGRiYXNlLT50cF9iYXNlOwogICAgIGlmIChuZXdiYXNlICE9IG9sZGJhc2UgJiYKICAgICAgICAgKG5ld2Jhc2UtPnRwX2Jhc2UgIT0gb2xkYmFzZS0+dHBfYmFzZSB8fApAQCAtMzU5OSwxNyArMzY2NiwxMiBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG5ld3RvID0gKFB5VHlwZU9iamVjdCAqKXZhbHVlOwotICAgIGlmICghKG5ld3RvLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8Ci0gICAgICAgICEob2xkdG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpCi0gICAgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIl9fY2xhc3NfXyBhc3NpZ25tZW50OiBvbmx5IGZvciBoZWFwIHR5cGVzIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQob2xkdG8sIG5ld3RvLCAiX19jbGFzc19fIikpIHsKLSAgICAgICAgUHlfSU5DUkVGKG5ld3RvKTsKKyAgICAgICAgaWYgKG5ld3RvLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCisgICAgICAgICAgICBQeV9JTkNSRUYobmV3dG8pOwogICAgICAgICBQeV9UWVBFKHNlbGYpID0gbmV3dG87Ci0gICAgICAgIFB5X0RFQ1JFRihvbGR0byk7CisgICAgICAgIGlmIChvbGR0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQorICAgICAgICAgICAgUHlfREVDUkVGKG9sZHRvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMzk3Miw0OCArNDAzNCw4NyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcmVkdWNlXzQoUHlPYmplY3QgKm9iaikKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKm5ld29iaiwgKm5ld2FyZ3MsICpzdGF0ZSwgKmxpc3RpdGVtcywgKmRpY3RpdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwogCi0gICAgaWYgKF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMob2JqLCAmYXJncywgJmt3YXJncykgPCAwKSB7CisgICAgaWYgKF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMob2JqLCAmYXJncywgJmt3YXJncykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKGt3YXJncyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICBQeV9YREVDUkVGKGt3YXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX2V4X18pOwotICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKLSAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3dhcmdzKSA9PSAwKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOworICAgICAgICBQeU9iamVjdCAqY2xzOworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOworICAgICAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX18pOworICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIGlmIChuZXdvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKG9iaik7CisgICAgICAgIFB5X0lOQ1JFRihjbHMpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIGNscyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSsxLCB2KTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGVsc2UgaWYgKHByb3RvID49IDQpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CisKKyAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKKyAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOworICAgICAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfUGFjaygzLCBQeV9UWVBFKG9iaiksIGFyZ3MsIGt3YXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdvYmopOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgdXNlIHByb3RvY29sIDQgb3IgZ3JlYXRlciB0byBjb3B5IHRoaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdDsgc2luY2UgX19nZXRuZXdhcmdzX2V4X18gcmV0dXJuZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnRzLiIpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdhcmdzID0gUHlUdXBsZV9QYWNrKDMsIFB5X1RZUEUob2JqKSwgYXJncywga3dhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCiAgICAgc3RhdGUgPSBfUHlPYmplY3RfR2V0U3RhdGUob2JqKTsKICAgICBpZiAoc3RhdGUgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKQEAgLTQwMzYsNzkgKzQxMzcsNiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1yZWR1Y2VfMihQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpjbHM7Ci0gICAgUHlPYmplY3QgKmFyZ3MgPSBOVUxMLCAqYXJnczIgPSBOVUxMLCAqa3dhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc3RhdGUgPSBOVUxMLCAqbGlzdGl0ZW1zID0gTlVMTCwgKmRpY3RpdGVtcyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMLCAqbmV3b2JqID0gTlVMTCwgKnJlcyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBpLCBuOwotICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOwotCi0gICAgaWYgKF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMob2JqLCAmYXJncywgJmt3YXJncykgPCAwKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCk7Ci0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoa3dhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9TaXplKGt3YXJncykgPiAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCB1c2UgcHJvdG9jb2wgNCBvciBncmVhdGVyIHRvIGNvcHkgdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdDsgc2luY2UgX19nZXRuZXdhcmdzX2V4X18gcmV0dXJuZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfQ0xFQVIoa3dhcmdzKTsKLSAgICB9Ci0KLSAgICBzdGF0ZSA9IF9QeU9iamVjdF9HZXRTdGF0ZShvYmopOwotICAgIGlmIChzdGF0ZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIGlmIChfUHlPYmplY3RfR2V0SXRlbXNJdGVyKG9iaiwgJmxpc3RpdGVtcywgJmRpY3RpdGVtcykgPCAwKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwotICAgIGlmIChjb3B5cmVnID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfXyk7Ci0gICAgaWYgKG5ld29iaiA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLQotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIGFyZ3MyID0gUHlUdXBsZV9OZXcobisxKTsKLSAgICBpZiAoYXJnczIgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgY2xzID0gKFB5T2JqZWN0ICopIFB5X1RZUEUob2JqKTsKLSAgICBQeV9JTkNSRUYoY2xzKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MyLCAwLCBjbHMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwotICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIGkrMSwgdik7Ci0gICAgfQotCi0gICAgcmVzID0gUHlUdXBsZV9QYWNrKDUsIG5ld29iaiwgYXJnczIsIHN0YXRlLCBsaXN0aXRlbXMsIGRpY3RpdGVtcyk7Ci0KLSAgZW5kOgotICAgIFB5X1hERUNSRUYoYXJncyk7Ci0gICAgUHlfWERFQ1JFRihhcmdzMik7Ci0gICAgUHlfWERFQ1JFRihzdGF0ZSk7Ci0gICAgUHlfWERFQ1JFRihsaXN0aXRlbXMpOwotICAgIFB5X1hERUNSRUYoZGljdGl0ZW1zKTsKLSAgICBQeV9YREVDUkVGKGNvcHlyZWcpOwotICAgIFB5X1hERUNSRUYobmV3b2JqKTsKLSAgICByZXR1cm4gcmVzOwotfQotCiAvKgogICogVGhlcmUgd2VyZSB0d28gcHJvYmxlbXMgd2hlbiBvYmplY3QuX19yZWR1Y2VfXyBhbmQgb2JqZWN0Ll9fcmVkdWNlX2V4X18KICAqIHdlcmUgaW1wbGVtZW50ZWQgaW4gdGhlIHNhbWUgZnVuY3Rpb246CkBAIC00MTI5LDEwICs0MTU3LDggQEAKIHsKICAgICBQeU9iamVjdCAqY29weXJlZywgKnJlczsKIAotICAgIGlmIChwcm90byA+PSA0KQotICAgICAgICByZXR1cm4gcmVkdWNlXzQoc2VsZik7Ci0gICAgZWxzZSBpZiAocHJvdG8gPj0gMikKLSAgICAgICAgcmV0dXJuIHJlZHVjZV8yKHNlbGYpOworICAgIGlmIChwcm90byA+PSAyKQorICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmLCBwcm90byk7CiAKICAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKICAgICBpZiAoIWNvcHlyZWcpCkBAIC00NTQ3LDYgKzQ1NzMsNyBAQAogI2RlZmluZSBDT1BZU0xPVChTTE9UKSBcCiAgICAgaWYgKCF0eXBlLT5TTE9UICYmIFNMT1RERUZJTkVEKFNMT1QpKSB0eXBlLT5TTE9UID0gYmFzZS0+U0xPVAogCisjZGVmaW5lIENPUFlBU1lOQyhTTE9UKSBDT1BZU0xPVCh0cF9hc19hc3luYy0+U0xPVCkKICNkZWZpbmUgQ09QWU5VTShTTE9UKSBDT1BZU0xPVCh0cF9hc19udW1iZXItPlNMT1QpCiAjZGVmaW5lIENPUFlTRVEoU0xPVCkgQ09QWVNMT1QodHBfYXNfc2VxdWVuY2UtPlNMT1QpCiAjZGVmaW5lIENPUFlNQVAoU0xPVCkgQ09QWVNMT1QodHBfYXNfbWFwcGluZy0+U0xPVCkKQEAgLTQ1OTIsNiArNDYxOSwxNyBAQAogICAgICAgICBDT1BZTlVNKG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGUpOwogICAgICAgICBDT1BZTlVNKG5iX2lucGxhY2VfZmxvb3JfZGl2aWRlKTsKICAgICAgICAgQ09QWU5VTShuYl9pbmRleCk7CisgICAgICAgIENPUFlOVU0obmJfbWF0cml4X211bHRpcGx5KTsKKyAgICAgICAgQ09QWU5VTShuYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSk7CisgICAgfQorCisgICAgaWYgKHR5cGUtPnRwX2FzX2FzeW5jICE9IE5VTEwgJiYgYmFzZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCkgeworICAgICAgICBiYXNlYmFzZSA9IGJhc2UtPnRwX2Jhc2U7CisgICAgICAgIGlmIChiYXNlYmFzZS0+dHBfYXNfYXN5bmMgPT0gTlVMTCkKKyAgICAgICAgICAgIGJhc2ViYXNlID0gTlVMTDsKKyAgICAgICAgQ09QWUFTWU5DKGFtX2F3YWl0KTsKKyAgICAgICAgQ09QWUFTWU5DKGFtX2FpdGVyKTsKKyAgICAgICAgQ09QWUFTWU5DKGFtX2FuZXh0KTsKICAgICB9CiAKICAgICBpZiAodHlwZS0+dHBfYXNfc2VxdWVuY2UgIT0gTlVMTCAmJiBiYXNlLT50cF9hc19zZXF1ZW5jZSAhPSBOVUxMKSB7CkBAIC00ODAzLDE0ICs0ODQxLDExIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqYiA9IFB5VHVwbGVfR0VUX0lURU0oYmFzZXMsIGkpOwogICAgICAgICAgICAgaWYgKFB5VHlwZV9DaGVjayhiKSAmJgogICAgICAgICAgICAgICAgICgoKFB5VHlwZU9iamVjdCAqKWIpLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMzAwXTsKLSAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJ1dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRzIGJhc2UgdHlwZSAnJS4xMDBzJyBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgKChQeVR5cGVPYmplY3QgKiliKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm4oUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCBidWYpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdHMgYmFzZSB0eXBlICclLjEwMHMnIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsICgoUHlUeXBlT2JqZWN0ICopYiktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDg2Niw2ICs0OTAxLDggQEAKICAgICAvKiBTb21lIG1vcmUgc3BlY2lhbCBzdHVmZiAqLwogICAgIGJhc2UgPSB0eXBlLT50cF9iYXNlOwogICAgIGlmIChiYXNlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHR5cGUtPnRwX2FzX2FzeW5jID09IE5VTEwpCisgICAgICAgICAgICB0eXBlLT50cF9hc19hc3luYyA9IGJhc2UtPnRwX2FzX2FzeW5jOwogICAgICAgICBpZiAodHlwZS0+dHBfYXNfbnVtYmVyID09IE5VTEwpCiAgICAgICAgICAgICB0eXBlLT50cF9hc19udW1iZXIgPSBiYXNlLT50cF9hc19udW1iZXI7CiAgICAgICAgIGlmICh0eXBlLT50cF9hc19zZXF1ZW5jZSA9PSBOVUxMKQpAQCAtNDg4NiwxNiArNDkyMyw2IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIC8qIFdhcm4gZm9yIGEgdHlwZSB0aGF0IGltcGxlbWVudHMgdHBfY29tcGFyZSAobm93IGtub3duIGFzCi0gICAgICAgdHBfcmVzZXJ2ZWQpIGJ1dCBub3QgdHBfcmljaGNvbXBhcmUuICovCi0gICAgaWYgKHR5cGUtPnRwX3Jlc2VydmVkICYmICF0eXBlLT50cF9yaWNoY29tcGFyZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIlR5cGUgJS4xMDBzIGRlZmluZXMgdHBfcmVzZXJ2ZWQgKGZvcm1lcmx5IHRwX2NvbXBhcmUpICIKLSAgICAgICAgICAgICJidXQgbm90IHRwX3JpY2hjb21wYXJlLiBDb21wYXJpc29ucyBtYXkgbm90IGJlaGF2ZSBhcyBpbnRlbmRlZC4iLAotICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCiAgICAgLyogQWxsIGRvbmUgLS0gc2V0IHRoZSByZWFkeSBmbGFnICovCiAgICAgYXNzZXJ0KHR5cGUtPnRwX2RpY3QgIT0gTlVMTCk7CiAgICAgdHlwZS0+dHBfZmxhZ3MgPQpAQCAtNTc2Miw2ICs1Nzg5LDcgQEAKIFNMT1QxQklOKHNsb3RfbmJfYWRkLCBuYl9hZGQsICJfX2FkZF9fIiwgIl9fcmFkZF9fIikKIFNMT1QxQklOKHNsb3RfbmJfc3VidHJhY3QsIG5iX3N1YnRyYWN0LCAiX19zdWJfXyIsICJfX3JzdWJfXyIpCiBTTE9UMUJJTihzbG90X25iX211bHRpcGx5LCBuYl9tdWx0aXBseSwgIl9fbXVsX18iLCAiX19ybXVsX18iKQorU0xPVDFCSU4oc2xvdF9uYl9tYXRyaXhfbXVsdGlwbHksIG5iX21hdHJpeF9tdWx0aXBseSwgIl9fbWF0bXVsX18iLCAiX19ybWF0bXVsX18iKQogU0xPVDFCSU4oc2xvdF9uYl9yZW1haW5kZXIsIG5iX3JlbWFpbmRlciwgIl9fbW9kX18iLCAiX19ybW9kX18iKQogU0xPVDFCSU4oc2xvdF9uYl9kaXZtb2QsIG5iX2Rpdm1vZCwgIl9fZGl2bW9kX18iLCAiX19yZGl2bW9kX18iKQogCkBAIC01ODU1LDYgKzU4ODMsNyBAQAogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX2FkZCwgIl9faWFkZF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3N1YnRyYWN0LCAiX19pc3ViX18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2VfbXVsdGlwbHksICJfX2ltdWxfXyIsIFB5T2JqZWN0ICosICJPIikKK1NMT1QxKHNsb3RfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksICJfX2ltYXRtdWxfXyIsIFB5T2JqZWN0ICosICJPIikKIFNMT1QxKHNsb3RfbmJfaW5wbGFjZV9yZW1haW5kZXIsICJfX2ltb2RfXyIsIFB5T2JqZWN0ICosICJPIikKIC8qIENhbid0IHVzZSBTTE9UMSBoZXJlLCBiZWNhdXNlIG5iX2lucGxhY2VfcG93ZXIgaXMgdGVybmFyeSAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYyNDUsNiArNjI3NCw1OSBAQAogICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X2FtX2F3YWl0KFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fYXdhaXRfXyk7CisKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2F3YWl0X18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuNTBzIGRvZXMgbm90IGhhdmUgX19hd2FpdF9fIG1ldGhvZCIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF9hbV9haXRlcihQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2FpdGVyX18pOworCisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19haXRlcl9fKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9iamVjdCAlLjUwcyBkb2VzIG5vdCBoYXZlIF9fYWl0ZXJfXyBtZXRob2QiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfYW1fYW5leHQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19hbmV4dF9fKTsKKworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fYW5leHRfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvYmplY3QgJS41MHMgZG9lcyBub3QgaGF2ZSBfX2FuZXh0X18gbWV0aG9kIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CiAKIC8qCiBUYWJsZSBtYXBwaW5nIF9fZm9vX18gbmFtZXMgdG8gdHBfZm9vIG9mZnNldHMgYW5kIHNsb3RfdHBfZm9vIHdyYXBwZXIgZnVuY3Rpb25zLgpAQCAtNjI2MSw2ICs2MzQzLDcgQEAKIAogI3VuZGVmIFRQU0xPVAogI3VuZGVmIEZMU0xPVAorI3VuZGVmIEFNU0xPVAogI3VuZGVmIEVUU0xPVAogI3VuZGVmIFNRU0xPVAogI3VuZGVmIE1QU0xPVApAQCAtNjI3OSw2ICs2MzYyLDggQEAKICNkZWZpbmUgRVRTTE9UKE5BTUUsIFNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpIFwKICAgICB7TkFNRSwgb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgU0xPVCksICh2b2lkICopKEZVTkNUSU9OKSwgV1JBUFBFUiwgXAogICAgICBQeURvY19TVFIoRE9DKX0KKyNkZWZpbmUgQU1TTE9UKE5BTUUsIFNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpIFwKKyAgICBFVFNMT1QoTkFNRSwgYXNfYXN5bmMuU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykKICNkZWZpbmUgU1FTTE9UKE5BTUUsIFNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpIFwKICAgICBFVFNMT1QoTkFNRSwgYXNfc2VxdWVuY2UuU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykKICNkZWZpbmUgTVBTTE9UKE5BTUUsIFNMT1QsIEZVTkNUSU9OLCBXUkFQUEVSLCBET0MpIFwKQEAgLTYzNTgsNiArNjQ0MywxMyBAQAogICAgICAgICAgICAiQ3JlYXRlIGFuZCByZXR1cm4gbmV3IG9iamVjdC4gIFNlZSBoZWxwKHR5cGUpIGZvciBhY2N1cmF0ZSBzaWduYXR1cmUuIiksCiAgICAgVFBTTE9UKCJfX2RlbF9fIiwgdHBfZmluYWxpemUsIHNsb3RfdHBfZmluYWxpemUsICh3cmFwcGVyZnVuYyl3cmFwX2RlbCwgIiIpLAogCisgICAgQU1TTE9UKCJfX2F3YWl0X18iLCBhbV9hd2FpdCwgc2xvdF9hbV9hd2FpdCwgd3JhcF91bmFyeWZ1bmMsCisgICAgICAgICAgICJfX2F3YWl0X18oJHNlbGYsIC8pXG4tLVxuXG5SZXR1cm4gYW4gaXRlcmF0b3IgdG8gYmUgdXNlZCBpbiBhd2FpdCBleHByZXNzaW9uLiIpLAorICAgIEFNU0xPVCgiX19haXRlcl9fIiwgYW1fYWl0ZXIsIHNsb3RfYW1fYWl0ZXIsIHdyYXBfdW5hcnlmdW5jLAorICAgICAgICAgICAiX19haXRlcl9fKCRzZWxmLCAvKVxuLS1cblxuUmV0dXJuIGFuIGF3YWl0YWJsZSwgdGhhdCByZXNvbHZlcyBpbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuIiksCisgICAgQU1TTE9UKCJfX2FuZXh0X18iLCBhbV9hbmV4dCwgc2xvdF9hbV9hbmV4dCwgd3JhcF91bmFyeWZ1bmMsCisgICAgICAgICAgICJfX2FuZXh0X18oJHNlbGYsIC8pXG4tLVxuXG5SZXR1cm4gYSB2YWx1ZSBvciByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24uIiksCisKICAgICBCSU5TTE9UKCJfX2FkZF9fIiwgbmJfYWRkLCBzbG90X25iX2FkZCwKICAgICAgICAgICAgIisiKSwKICAgICBSQklOU0xPVCgiX19yYWRkX18iLCBuYl9hZGQsIHNsb3RfbmJfYWRkLApAQCAtNjQzNSw2ICs2NTI3LDEyIEBACiAgICAgICAgICAgICJfX2luZGV4X18oJHNlbGYsIC8pXG4tLVxuXG4iCiAgICAgICAgICAgICJSZXR1cm4gc2VsZiBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciwgaWYgc2VsZiBpcyBzdWl0YWJsZSAiCiAgICAgICAgICAgICJmb3IgdXNlIGFzIGFuIGluZGV4IGludG8gYSBsaXN0LiIpLAorICAgIEJJTlNMT1QoIl9fbWF0bXVsX18iLCBuYl9tYXRyaXhfbXVsdGlwbHksIHNsb3RfbmJfbWF0cml4X211bHRpcGx5LAorICAgICAgICAgICAgIkAiKSwKKyAgICBSQklOU0xPVCgiX19ybWF0bXVsX18iLCBuYl9tYXRyaXhfbXVsdGlwbHksIHNsb3RfbmJfbWF0cml4X211bHRpcGx5LAorICAgICAgICAgICAgICJAIiksCisgICAgSUJTTE9UKCJfX2ltYXRtdWxfXyIsIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LCBzbG90X25iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LAorICAgICAgICAgICB3cmFwX2JpbmFyeWZ1bmMsICJAPSIpLAogICAgIE1QU0xPVCgiX19sZW5fXyIsIG1wX2xlbmd0aCwgc2xvdF9tcF9sZW5ndGgsIHdyYXBfbGVuZnVuYywKICAgICAgICAgICAgIl9fbGVuX18oJHNlbGYsIC8pXG4tLVxuXG5SZXR1cm4gbGVuKHNlbGYpLiIpLAogICAgIE1QU0xPVCgiX19nZXRpdGVtX18iLCBtcF9zdWJzY3JpcHQsIHNsb3RfbXBfc3Vic2NyaXB0LApAQCAtNjUwNCw2ICs2NjAyLDEwIEBACiAgICAgICAgIHB0ciA9IChjaGFyICopdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgICAgICBvZmZzZXQgLT0gb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbnVtYmVyKTsKICAgICB9CisgICAgZWxzZSBpZiAoKHNpemVfdClvZmZzZXQgPj0gb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfYXN5bmMpKSB7CisgICAgICAgIHB0ciA9IChjaGFyICopdHlwZS0+dHBfYXNfYXN5bmM7CisgICAgICAgIG9mZnNldCAtPSBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYyk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBwdHIgPSAoY2hhciAqKXR5cGU7CiAgICAgfQpAQCAtNjY1NSwxNSArNjc1NywxNSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNsb3RkZWZzX2luaXRpYWxpemVkID0gMDsKIC8qIEluaXRpYWxpemUgdGhlIHNsb3RkZWZzIHRhYmxlIGJ5IGFkZGluZyBpbnRlcm5lZCBzdHJpbmcgb2JqZWN0cyBmb3IgdGhlCi0gICBuYW1lcyBhbmQgc29ydGluZyB0aGUgZW50cmllcy4gKi8KKyAgIG5hbWVzLiAqLwogc3RhdGljIHZvaWQKIGluaXRfc2xvdGRlZnModm9pZCkKIHsKICAgICBzbG90ZGVmICpwOwotICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwogCi0gICAgaWYgKGluaXRpYWxpemVkKQorICAgIGlmIChzbG90ZGVmc19pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAocCA9IHNsb3RkZWZzOyBwLT5uYW1lOyBwKyspIHsKICAgICAgICAgLyogU2xvdHMgbXVzdCBiZSBvcmRlcmVkIGJ5IHRoZWlyIG9mZnNldCBpbiB0aGUgUHlIZWFwVHlwZU9iamVjdC4gKi8KQEAgLTY2NzIsNyArNjc3NCwxNyBAQAogICAgICAgICBpZiAoIXAtPm5hbWVfc3Ryb2JqKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiT3V0IG9mIG1lbW9yeSBpbnRlcm5pbmcgc2xvdGRlZiBuYW1lcyIpOwogICAgIH0KLSAgICBpbml0aWFsaXplZCA9IDE7CisgICAgc2xvdGRlZnNfaW5pdGlhbGl6ZWQgPSAxOworfQorCisvKiBVbmRvIGluaXRfc2xvdGRlZnMsIHJlbGVhc2luZyB0aGUgaW50ZXJuZWQgc3RyaW5ncy4gKi8KK3N0YXRpYyB2b2lkIGNsZWFyX3Nsb3RkZWZzKHZvaWQpCit7CisgICAgc2xvdGRlZiAqcDsKKyAgICBmb3IgKHAgPSBzbG90ZGVmczsgcC0+bmFtZTsgcCsrKSB7CisgICAgICAgIFB5X0NMRUFSKHAtPm5hbWVfc3Ryb2JqKTsKKyAgICB9CisgICAgc2xvdGRlZnNfaW5pdGlhbGl6ZWQgPSAwOwogfQogCiAvKiBVcGRhdGUgdGhlIHNsb3RzIGFmdGVyIGFzc2lnbm1lbnQgdG8gYSBjbGFzcyAodHlwZSkgYXR0cmlidXRlLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCmluZGV4IGNhYTFlMDMuLmRjNzUwY2MgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLmluYworKysgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKQEAgLTczLDMgKzczLDkgQEAKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfbWVtYmVycyksCiBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBodF90eXBlLnRwX2dldHNldCksCiBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBodF90eXBlLnRwX2ZyZWUpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbnVtYmVyLm5iX21hdHJpeF9tdWx0aXBseSksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19udW1iZXIubmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfYXN5bmMuYW1fYXdhaXQpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfYXN5bmMuYW1fYWl0ZXIpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfYXN5bmMuYW1fYW5leHQpLAorb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgaHRfdHlwZS50cF9maW5hbGl6ZSksCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5weSBiL09iamVjdHMvdHlwZXNsb3RzLnB5CmluZGV4IGIyNGM3ZjQuLmJhMzdjNDAgMTAwNzU1Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLnB5CisrKyBiL09iamVjdHMvdHlwZXNsb3RzLnB5CkBAIC0xMiw2ICsxMiw4IEBACiAgICAgbWVtYmVyID0gbS5ncm91cCgxKQogICAgIGlmIG1lbWJlci5zdGFydHN3aXRoKCJ0cF8iKToKICAgICAgICAgbWVtYmVyID0gImh0X3R5cGUuIittZW1iZXIKKyAgICBlbGlmIG1lbWJlci5zdGFydHN3aXRoKCJhbV8iKToKKyAgICAgICAgbWVtYmVyID0gImFzX2FzeW5jLiIrbWVtYmVyCiAgICAgZWxpZiBtZW1iZXIuc3RhcnRzd2l0aCgibmJfIik6CiAgICAgICAgIG1lbWJlciA9ICJhc19udW1iZXIuIittZW1iZXIKICAgICBlbGlmIG1lbWJlci5zdGFydHN3aXRoKCJtcF8iKToKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCmluZGV4IGVhNTQwZDYuLmQ4Yzk1YzggMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMKKysrIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBFWFRFTkRFRF9DQVNFX01BU0sgMHg0MDAwCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiAKKyAgICAvKgogICAgICAgIFRoZXNlIGFyZSBlaXRoZXIgZGVsdGFzIHRvIHRoZSBjaGFyYWN0ZXIgb3Igb2Zmc2V0cyBpbgogICAgICAgIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlLgogICAgICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IDg4NGVhZWYuLjFlYWYyZTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC0yOTAsNiArMjkwLDggQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCisjaW5jbHVkZSAiY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oIgorCiAvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KICAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQpAQCAtNTE5LDEwICs1MjEsNiBAQAogICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCi1zdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKLSNlbmRpZgotCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtNjQ1LDcgKzY0Myw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZml4dXAoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSk7CiAKLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBmaW5kY2hhcih2b2lkICpzLCBpbnQga2luZCwKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBmaW5kY2hhcihjb25zdCB2b2lkICpzLCBpbnQga2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKQEAgLTcyNyw3ICs3MjUsNyBAQAogICAgIF9QeV9ERUNfUkVGVE9UQUw7CiAgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSh1bmljb2RlKTsKIAotICAgIG5ld191bmljb2RlID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQygoY2hhciAqKXVuaWNvZGUsIG5ld19zaXplKTsKKyAgICBuZXdfdW5pY29kZSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0ModW5pY29kZSwgbmV3X3NpemUpOwogICAgIGlmIChuZXdfdW5pY29kZSA9PSBOVUxMKSB7CiAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UodW5pY29kZSk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC04MTYsNyArODE0LDcgQEAKICAgICBhc3NlcnQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICE9IE5VTEwpOwogCiAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgLSAxKSB7CisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3Qpc2l6ZW9mKHdjaGFyX3QpIC0gMSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtODg4LDcgKzg4Niw3IEBACiAgICAgfQogCiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwotICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CisgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QgKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICBpZiAobGVuZ3RoIDwgMCkgewpAQCAtMjMxMywzNSArMjMxMSw2IEBACiAKICNlbmRpZiAvKiBIQVZFX1dDSEFSX0ggKi8KIAotc3RhdGljIHZvaWQKLW1ha2VmbXQoY2hhciAqZm10LCBpbnQgbG9uZ2ZsYWcsIGludCBsb25nbG9uZ2ZsYWcsIGludCBzaXplX3RmbGFnLAotICAgICAgICBjaGFyIGMpCi17Ci0gICAgKmZtdCsrID0gJyUnOwotICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgKmZtdCsrID0gJ2wnOwotICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykgewotICAgICAgICAvKiBsb25nbG9uZ2ZsYWcgc2hvdWxkIG9ubHkgZXZlciBiZSBub256ZXJvIG9uIG1hY2hpbmVzIHdpdGgKLSAgICAgICAgICAgSEFWRV9MT05HX0xPTkcgZGVmaW5lZCAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIGNoYXIgKmYgPSBQWV9GT1JNQVRfTE9OR19MT05HOwotICAgICAgICB3aGlsZSAoKmYpCi0gICAgICAgICAgICAqZm10KysgPSAqZisrOwotI2Vsc2UKLSAgICAgICAgLyogd2Ugc2hvdWxkbid0IGV2ZXIgZ2V0IGhlcmUgKi8KLSAgICAgICAgYXNzZXJ0KDApOwotICAgICAgICAqZm10KysgPSAnbCc7Ci0jZW5kaWYKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykgewotICAgICAgICBjaGFyICpmID0gUFlfRk9STUFUX1NJWkVfVDsKLSAgICAgICAgd2hpbGUgKCpmKQotICAgICAgICAgICAgKmZtdCsrID0gKmYrKzsKLSAgICB9Ci0gICAgKmZtdCsrID0gYzsKLSAgICAqZm10ID0gJ1wwJzsKLX0KLQogLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsbGQgb3IgJXAuCiAgICBXZSBuZWVkIGF0IG1vc3QgY2VpbChsb2cxMCgyNTYpKlNJWkVPRl9MT05HX0xPTkcpIGRpZ2l0cywKICAgIHBsdXMgMSBmb3IgdGhlIHNpZ24uICA1My8yMiBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nMTAoMjU2KS4gKi8KQEAgLTI1MTcsNDggKzI0ODYsNDIgQEAKICAgICBjYXNlICd4JzoKICAgICB7CiAgICAgICAgIC8qIHVzZWQgYnkgc3ByaW50ZiAqLwotICAgICAgICBjaGFyIGZtdFsxMF07IC8qIHNob3VsZCBiZSBlbm91Z2ggZm9yICIlMGxsZFwwIiAqLwogICAgICAgICBjaGFyIGJ1ZmZlcltNQVhfTE9OR19MT05HX0NIQVJTXTsKICAgICAgICAgUHlfc3NpemVfdCBhcmdsZW47CiAKICAgICAgICAgaWYgKCpmID09ICd1JykgewotICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsICpmKTsKLQogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbHUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgbG9uZykpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgInUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgc2l6ZV90KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiV1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGludCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCpmID09ICd4JykgewotICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsICd4Jyk7Ci0gICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LCB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJXgiLCB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCAqZik7Ci0KICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcpKTsKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOwogI2VuZGlmCiAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFB5X3NzaXplX3QpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgaW50KSk7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKQEAgLTMyNDEsNyArMzIwNCw3IEBACiAgICAgd2xlbjIgPSB3Y3NsZW4od3N0cik7CiAgICAgaWYgKHdsZW4yICE9IHdsZW4pIHsKICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjQ5LDcgKzMyMTIsNyBAQAogICAgICAgICAvKiAic3Vycm9nYXRlZXNjYXBlIiBlcnJvciBoYW5kbGVyICovCiAgICAgICAgIGNoYXIgKnN0cjsKIAotICAgICAgICBzdHIgPSBfUHlfd2NoYXIyY2hhcih3c3RyLCAmZXJyb3JfcG9zKTsKKyAgICAgICAgc3RyID0gUHlfRW5jb2RlTG9jYWxlKHdzdHIsICZlcnJvcl9wb3MpOwogICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChlcnJvcl9wb3MgPT0gKHNpemVfdCktMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0zMzAyLDcgKzMyNjUsNyBAQAogCiAgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CiAgICAgICAgIHNpemVfdCBlcnJsZW47Ci0gICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOworICAgICAgICB3c3RyID0gUHlfRGVjb2RlTG9jYWxlKGVycm1zZywgJmVycmxlbik7CiAgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod3N0cik7CkBAIC0zNDc3LDcgKzM0NDAsNyBAQAogICAgIG1lbXNldCgmbWJzLCAwLCBzaXplb2YgbWJzKTsKICAgICB3aGlsZSAobGVuKQogICAgIHsKLSAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIChjaGFyKilzdHIsIGxlbiwgJm1icyk7CisgICAgICAgIGNvbnZlcnRlZCA9IG1icnRvd2MoJmNoLCBzdHIsIGxlbiwgJm1icyk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gMCkKICAgICAgICAgICAgIC8qIFJlYWNoZWQgZW5kIG9mIHN0cmluZyAqLwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTA4LDE5ICszNDcxLDIwIEBACiAgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKICAgICBzaXplX3QgZXJyb3JfcG9zOwogICAgIGNoYXIgKmVycm1zZzsKLSAgICBQeU9iamVjdCAqcmVhc29uLCAqZXhjOworICAgIFB5T2JqZWN0ICpyZWFzb24gPSBOVUxMOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLworICAgIFB5T2JqZWN0ICpleGM7CiAKICAgICBpZiAobG9jYWxlX2Vycm9yX2hhbmRsZXIoZXJyb3JzLCAmc3Vycm9nYXRlZXNjYXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgbGVuICE9IHN0cmxlbihzdHIpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgIGlmIChzdHJbbGVuXSAhPSAnXDAnIHx8IChzaXplX3QpbGVuICE9IHN0cmxlbihzdHIpKSAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgYnl0ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAoc3Vycm9nYXRlZXNjYXBlKSB7CiAgICAgICAgIC8qICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgKi8KLSAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKHN0ciwgJndsZW4pOworICAgICAgICB3c3RyID0gUHlfRGVjb2RlTG9jYWxlKHN0ciwgJndsZW4pOwogICAgICAgICBpZiAod3N0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAod2xlbiA9PSAoc2l6ZV90KS0xKQogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0zNTczLDcgKzM1MzcsNyBAQAogICAgIGVycm9yX3BvcyA9IG1ic3Rvd2NzX2Vycm9ycG9zKHN0ciwgbGVuKTsKICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgc2l6ZV90IGVycmxlbjsKLSAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoZXJybXNnLCAmZXJybGVuKTsKICAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOwogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3c3RyKTsKQEAgLTM2NDMsMjEgKzM2MDcsNiBAQAogCiAKIGludAotX1B5VW5pY29kZV9IYXNOVUxDaGFycyhQeU9iamVjdCogc3RyKQotewotICAgIFB5X3NzaXplX3QgcG9zOwotCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcG9zID0gZmluZGNoYXIoUHlVbmljb2RlX0RBVEEoc3RyKSwgUHlVbmljb2RlX0tJTkQoc3RyKSwKLSAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpLCAnXDAnLCAxKTsKLSAgICBpZiAocG9zID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAxOwotfQotCi1pbnQKIFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogewogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwpAQCAtMzY4Nyw4ICszNjM2LDggQEAKICAgICB9CiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUob3V0cHV0KTsKICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcob3V0cHV0KTsKLSAgICBpZiAoc2l6ZSAhPSBzdHJsZW4oZGF0YSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKKyAgICBpZiAoKHNpemVfdClzaXplICE9IHN0cmxlbihkYXRhKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgYnl0ZSIpOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMzczMiw3ICszNjgxLDcgQEAKICAgICB9CiAgICAgaWYgKGZpbmRjaGFyKFB5VW5pY29kZV9EQVRBKG91dHB1dCksIFB5VW5pY29kZV9LSU5EKG91dHB1dCksCiAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCksIDAsIDEpID49IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDgzNyw3ICs0Nzg2LDcgQEAKIAogICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCiAgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCi0gICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIDwgKHNpemUgKyAxKSkKKyAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2Yod2NoYXJfdCkgPCAoc2l6ZSArIDEpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB1bmljb2RlID0gUHlNZW1fUmF3TWFsbG9jKChzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghdW5pY29kZSkKQEAgLTUxMDIsMzIgKzUwNTEsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIGludCBraW5kOwotICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGNvbnN0IHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IG5zaXplLCBpOwotICAgIC8qIE9mZnNldHMgZnJvbSBwIGZvciBzdG9yaW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLworICAgIFBZX1VJTlQzMl9UICpvdXQ7CiAjaWYgUFlfTElUVExFX0VORElBTgotICAgIGludCBpb3JkZXJbXSA9IHswLCAxLCAyLCAzfTsKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CiAjZWxzZQotICAgIGludCBpb3JkZXJbXSA9IHszLCAyLCAxLCAwfTsKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyID49IDA7CiAjZW5kaWYKICAgICBjb25zdCBjaGFyICplbmNvZGluZzsKKyAgICBQeV9zc2l6ZV90IG5zaXplLCBwb3M7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CiAKLSNkZWZpbmUgU1RPUkVDSEFSKENIKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcFtpb3JkZXJbM11dID0gKChDSCkgPj4gMjQpICYgMHhmZjsgICAgIFwKLSAgICAgICAgcFtpb3JkZXJbMl1dID0gKChDSCkgPj4gMTYpICYgMHhmZjsgICAgIFwKLSAgICAgICAgcFtpb3JkZXJbMV1dID0gKChDSCkgPj4gOCkgJiAweGZmOyAgICAgIFwKLSAgICAgICAgcFtpb3JkZXJbMF1dID0gKENIKSAmIDB4ZmY7ICAgICAgICAgICAgIFwKLSAgICAgICAgcCArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTEzOCw1OSArNTA3Nyw1MyBAQAogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAKLSAgICBuc2l6ZSA9IGxlbiArIChieXRlb3JkZXIgPT0gMCk7Ci0gICAgaWYgKG5zaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDQgLSAoYnl0ZW9yZGVyID09IDApKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBuc2l6ZSA9IGxlbiArIChieXRlb3JkZXIgPT0gMCk7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiA0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIC8qIG91dHB1dCBidWZmZXIgaXMgNC1ieXRlcyBhbGlnbmVkICovCisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCA0KSk7CisgICAgb3V0ID0gKFBZX1VJTlQzMl9UICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQotICAgICAgICBTVE9SRUNIQVIoMHhGRUZGKTsKKyAgICAgICAgKm91dCsrID0gMHhGRUZGOwogICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaW9yZGVyWzBdID0gMDsKLSAgICAgICAgaW9yZGVyWzFdID0gMTsKLSAgICAgICAgaW9yZGVyWzJdID0gMjsKLSAgICAgICAgaW9yZGVyWzNdID0gMzsKKyAgICBpZiAoYnl0ZW9yZGVyID09IC0xKQogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMzItbGUiOwotICAgIH0KLSAgICBlbHNlIGlmIChieXRlb3JkZXIgPT0gMSkgewotICAgICAgICAvKiBmb3JjZSBCRSAqLwotICAgICAgICBpb3JkZXJbMF0gPSAzOwotICAgICAgICBpb3JkZXJbMV0gPSAyOwotICAgICAgICBpb3JkZXJbMl0gPSAxOwotICAgICAgICBpb3JkZXJbM10gPSAwOworICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA9PSAxKQogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMzItYmUiOwotICAgIH0KICAgICBlbHNlCiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0zMiI7CiAKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgICAgICBTVE9SRUNIQVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgdWNzMWxpYl91dGYzMl9lbmNvZGUoKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOykgeworICAgIHBvcyA9IDA7CisgICAgd2hpbGUgKHBvcyA8IGxlbikgewogICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG1vcmV1bml0czsKLSAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICBpKys7Ci0gICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7Ci0gICAgICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIHBvcyArPSB1Y3MybGliX3V0ZjMyX2VuY29kZSgoY29uc3QgUHlfVUNTMiAqKWRhdGEgKyBwb3MsIGxlbiAtIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgcG9zICs9IHVjczRsaWJfdXRmMzJfZW5jb2RlKChjb25zdCBQeV9VQ1M0ICopZGF0YSArIHBvcywgbGVuIC0gcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvcyA9PSBsZW4pCisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgZW5jb2RpbmcsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKLSAgICAgICAgICAgICAgICBzdHIsICZleGMsIGktMSwgaSwgJmkpOwotCisgICAgICAgICAgICAgICAgc3RyLCAmZXhjLCBwb3MsIHBvcyArIDEsICZwb3MpOwogICAgICAgICBpZiAoIXJlcCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTUxOTgsNyArNTEzMSw3IEBACiAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOwogICAgICAgICAgICAgaWYgKHJlcHNpemUgJiAzKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgaSAtIDEsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIHBvcyAtIDEsIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTUyMTEsNyArNTE0NCw3IEBACiAgICAgICAgICAgICBtb3JldW5pdHMgPSByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBpIC0gMSwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgcG9zIC0gMSwgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQpAQCAtNTIxOSw3ICs1MTUyLDcgQEAKIAogICAgICAgICAvKiBmb3VyIGJ5dGVzIGFyZSByZXNlcnZlZCBmb3IgZWFjaCBzdXJyb2dhdGUgKi8KICAgICAgICAgaWYgKG1vcmV1bml0cyA+IDEpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gcCAtICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtIChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBtb3JlYnl0ZXMgPSA0ICogKG1vcmV1bml0cyAtIDEpOwogICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodikgPiBQWV9TU0laRV9UX01BWCAtIG1vcmVieXRlcykgewogICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTUyMjgsMjAgKzUxNjEsMTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIFB5Qnl0ZXNfR0VUX1NJWkUodikgKyBtb3JlYnl0ZXMpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgcCA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CisgICAgICAgICAgICBvdXQgPSAoUFlfVUlOVDMyX1QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKLSAgICAgICAgICAgIHAgKz0gcmVwc2l6ZTsKKyAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgb3V0ICs9IG1vcmV1bml0czsKICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VDUzEgKnJlcGRhdGE7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7Ci0gICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVwKTsKLSAgICAgICAgICAgIHdoaWxlIChyZXBzaXplLS0pIHsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gKnJlcGRhdGErKzsKLSAgICAgICAgICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdWNzMWxpYl91dGYzMl9lbmNvZGUoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVwKSwgcmVwc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBQeV9DTEVBUihyZXApOwpAQCAtNTI1MCwxMSArNTE3OSwxMiBAQAogICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IsIGZvciBleGFtcGxlLAogICAgICAgIGVuY29kaW5nIG9mIGEgc3RyaW5nIGNvbnRhaW5pbmcgaXNvbGF0ZWQgc3Vycm9nYXRlcyBhbmQgdGhlICdpZ25vcmUnCiAgICAgICAgaGFuZGxlciBpcyB1c2VkLiAqLwotICAgIG5zaXplID0gcCAtICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgbnNpemUgPSAodW5zaWduZWQgY2hhciopIG91dCAtICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKG5zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUodikpCiAgICAgICBfUHlCeXRlc19SZXNpemUoJnYsIG5zaXplKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOworICBkb25lOgogICAgIHJldHVybiB2OwogICBlcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcCk7CkBAIC01MjYyLDcgKzUxOTIsNiBAQAogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKHYpOwogICAgIHJldHVybiBOVUxMOwotI3VuZGVmIFNUT1JFQ0hBUgogfQogCiBQeU9iamVjdCAqCkBAIC02ODQ5LDI4ICs2Nzc4LDYgQEAKICAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcoKm9iaik7CiB9CiAKLXN0YXRpYyBpbnQKLWlzX2RiY3NfbGVhZF9ieXRlKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICpzLCBpbnQgb2Zmc2V0KQotewotICAgIGNvbnN0IGNoYXIgKmN1cnIgPSBzICsgb2Zmc2V0OwotICAgIGNvbnN0IGNoYXIgKnByZXY7Ci0KLSAgICBpZiAoIUlzREJDU0xlYWRCeXRlRXgoY29kZV9wYWdlLCAqY3VycikpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcHJldiA9IENoYXJQcmV2RXhBKGNvZGVfcGFnZSwgcywgY3VyciwgMCk7Ci0gICAgaWYgKHByZXYgPT0gY3VycikKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgLyogRklYTUU6IFRoaXMgY29kZSBpcyBsaW1pdGVkIHRvICJ0cnVlIiBkb3VibGUtYnl0ZSBlbmNvZGluZ3MsCi0gICAgICAgYXMgaXQgYXNzdW1lcyBhbiBpbmNvbXBsZXRlIGNoYXJhY3RlciBjb25zaXN0cyBvZiBhIHNpbmdsZQotICAgICAgIGJ5dGUuICovCi0gICAgaWYgKGN1cnIgLSBwcmV2ID09IDIpCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpwcmV2KSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBEV09SRAogZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSkKIHsKQEAgLTY5NDUsNyArNjg1Miw3IEBACiBkZWNvZGVfY29kZV9wYWdlX2Vycm9ycyhVSU5UIGNvZGVfcGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqdiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluLCBjb25zdCBpbnQgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0aW4gPSBpbjsKICAgICBjb25zdCBjaGFyICplbmRpbiA9IGluICsgc2l6ZTsKQEAgLTY5NzIsNyArNjg3OSw3IEBACiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgIGlmICgoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApICYmIGZpbmFsKSB7CiAgICAgICAgIC8qIFRoZSBsYXN0IGVycm9yIHdhcyBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OLCB0aGVuIHdlIHJhaXNlIGEKICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLiAqLwogICAgICAgICBtYWtlX2RlY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIGluLCBzaXplLCAwLCAwLCByZWFzb24pOwpAQCAtNzAzNSw2ICs2OTQyLDEwIEBACiAgICAgICAgIGlmIChvdXRzaXplIDw9IDApIHsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvcywgZW5kaW5wb3MsIG91dHBvczsKIAorICAgICAgICAgICAgLyogbGFzdCBjaGFyYWN0ZXIgaW4gcGFydGlhbCBkZWNvZGU/ICovCisgICAgICAgICAgICBpZiAoaW4gKyBpbnNpemUgPj0gZW5kaW4gJiYgIWZpbmFsKQorICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBzdGFydGlucG9zID0gaW4gLSBzdGFydGluOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKICAgICAgICAgICAgIG91dHBvcyA9IG91dCAtIFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKQEAgLTcwNjMsNyArNjk3NCw4IEBACiAgICAgYXNzZXJ0KG91dHNpemUgPD0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKCp2KSk7CiAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG91dHNpemUpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXQgPSBzaXplOworICAgIC8qIChpbiAtIHN0YXJ0aW4pIDw9IHNpemUgYW5kIHNpemUgaXMgYW4gaW50ICovCisgICAgcmV0ID0gUHlfU0FGRV9ET1dOQ0FTVChpbiAtIHN0YXJ0aW4sIFB5X3NzaXplX3QsIGludCk7CiAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKQEAgLTcxMDQsMjQgKzcwMTYsMTkgQEAKICAgICAgICAgICAgIGRvbmUgPSAxOwogICAgICAgICB9CiAKLSAgICAgICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCi0gICAgICAgIGlmICghZmluYWwgJiYgaXNfZGJjc19sZWFkX2J5dGUoY29kZV9wYWdlLCBzLCBjaHVua19zaXplIC0gMSkpCi0gICAgICAgICAgICAtLWNodW5rX3NpemU7Ci0KICAgICAgICAgaWYgKGNodW5rX3NpemUgPT0gMCAmJiBkb25lKSB7CiAgICAgICAgICAgICBpZiAodiAhPSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgICAgIH0KIAotCiAgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUpOwogICAgICAgICBpZiAoY29udmVydGVkID09IC0yKQogICAgICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoY29kZV9wYWdlLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgICAgICBhc3NlcnQoY29udmVydGVkICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCBmaW5hbCk7CisgICAgICAgIGFzc2VydChjb252ZXJ0ZWQgIT0gMCB8fCBkb25lKTsKIAogICAgICAgICBpZiAoY29udmVydGVkIDwgMCkgewogICAgICAgICAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTcxNjksMTMgKzcwNzYsNyBAQAogZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkgewotICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpCi0gICAgICAgICAgICAvKiBDUF9VVEY4IHN1cHBvcnRzIFdDX0VSUl9JTlZBTElEX0NIQVJTIG9uIFdpbmRvd3MgVmlzdGEKLSAgICAgICAgICAgICAgIGFuZCBsYXRlciAqLwotICAgICAgICAgICAgcmV0dXJuIFdDX0VSUl9JTlZBTElEX0NIQVJTOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAvKiBDUF9VVEY4IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCBvbiBXaW5kb3dzIG9sZGVyIHRoYW4gVmlzdGEgKi8KLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7CiAgICAgfQogICAgIGVsc2UgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KSB7CiAgICAgICAgIC8qIENQX1VURjcgb25seSBzdXBwb3J0cyBmbGFncz0wICovCkBAIC03NDg1LDYgKzczODYsMTEgQEAKICAgICBQeV9zc2l6ZV90IG9mZnNldDsKICAgICBpbnQgY2h1bmtfbGVuLCByZXQsIGRvbmU7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKQEAgLTc1NTgsMTAgKzc0NjQsNiBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIE5VTEwpOwogfQogCkBAIC04NTI4LDEwICs4NDMwLDEwIEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh4KSkgewogICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FTX0xPTkcoeCk7Ci0gICAgICAgIGxvbmcgbWF4ID0gUHlVbmljb2RlX0dldE1heCgpOwotICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gbWF4KSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4JXgpIiwgbWF4KzEpOworICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4JXgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfVU5JQ09ERSsxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtODU1MCw3NiArODQ1MiwxNjggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KLS8qIGVuc3VyZSB0aGF0ICpvdXRvYmogaXMgYXQgbGVhc3QgcmVxdWlyZWRzaXplIGNoYXJhY3RlcnMgbG9uZywKLSAgIGlmIG5vdCByZWFsbG9jYXRlIGFuZCBhZGp1c3QgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLworCisvKiBsb29rdXAgdGhlIGNoYXJhY3Rlciwgd3JpdGUgdGhlIHJlc3VsdCBpbnRvIHRoZSB3cml0ZXIuCisgICBSZXR1cm4gMSBpZiB0aGUgcmVzdWx0IHdhcyB3cml0dGVuIGludG8gdGhlIHdyaXRlciwgcmV0dXJuIDAgaWYgdGhlIG1hcHBpbmcKKyAgIHdhcyB1bmRlZmluZWQsIHJhaXNlIGFuIGV4Y2VwdGlvbiByZXR1cm4gLTEgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1jaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeV9VQ1M0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpwc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSkKK2NoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KFB5X1VDUzQgY2gsIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewotICAgIFB5X3NzaXplX3Qgb2xkc2l6ZSA9ICpwc2l6ZTsKLSAgICBQeV9VQ1M0ICpuZXdfb3V0b2JqOwotICAgIGlmIChyZXF1aXJlZHNpemUgPiBvbGRzaXplKSB7Ci0gICAgICAgIC8qIGV4cG9uZW50aWFsbHkgb3ZlcmFsbG9jYXRlIHRvIG1pbmltaXplIHJlYWxsb2NhdGlvbnMgKi8KLSAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA8IDIgKiBvbGRzaXplKQotICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMiAqIG9sZHNpemU7Ci0gICAgICAgIG5ld19vdXRvYmogPSBQeU1lbV9SZWFsbG9jKCpvdXRvYmosIHJlcXVpcmVkc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7Ci0gICAgICAgIGlmIChuZXdfb3V0b2JqID09IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICpvdXRvYmogPSBuZXdfb3V0b2JqOwotICAgICAgICAqcHNpemUgPSByZXF1aXJlZHNpemU7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotLyogbG9va3VwIHRoZSBjaGFyYWN0ZXIsIHB1dCB0aGUgcmVzdWx0IGluIHRoZSBvdXRwdXQgc3RyaW5nIGFuZCBhZGp1c3QKLSAgIHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzLiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgdGhhdAotICAgd2FzIHB1dCBpbiB0aGUgb3V0cHV0IGJ1ZmZlciBpbiAqcmVzdWx0LCBvciBQeV9Ob25lLCBpZiB0aGUgbWFwcGluZyB3YXMKLSAgIHVuZGVmaW5lZCAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pLgotICAgVGhlIGNhbGxlZCBtdXN0IGRlY3JlZiByZXN1bHQuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KLXN0YXRpYyBpbnQKLWNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KFB5T2JqZWN0ICppbnB1dCwgUHlfc3NpemVfdCBpcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIFB5X1VDUzQgKipvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpvc2l6ZSwgUHlfc3NpemVfdCAqb3BvcywKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcmVzKQotewotICAgIFB5X1VDUzQgY3VyaW5wID0gUHlVbmljb2RlX1JFQURfQ0hBUihpbnB1dCwgaXBvcyk7Ci0gICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGN1cmlucCwgbWFwcGluZywgcmVzKSkKKyAgICBQeU9iamVjdCAqaXRlbTsKKworICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjaCwgbWFwcGluZywgJml0ZW0pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCpyZXM9PU5VTEwpIHsKKworICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgLyogbm90IGZvdW5kID0+IGRlZmF1bHQgdG8gMToxIG1hcHBpbmcgKi8KLSAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBjdXJpbnA7Ci0gICAgfQotICAgIGVsc2UgaWYgKCpyZXM9PVB5X05vbmUpCi0gICAgICAgIDsKLSAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSAoUHlfVUNTNClQeUxvbmdfQVNfTE9ORygqcmVzKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKCpyZXMpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSgqcmVzKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKHdyaXRlciwgY2gpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnJlcyk7Ci0gICAgICAgIGlmIChyZXBzaXplPT0xKSB7Ci0gICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIDApOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHJlcHNpemUhPTApIHsKLSAgICAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSA9ICpvcG9zICsKLSAgICAgICAgICAgICAgICAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpIC0gaXBvcykgKwotICAgICAgICAgICAgICAgIHJlcHNpemUgLSAxOwotICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKG91dHB1dCwgb3NpemUsIHJlcXVpcmVkc2l6ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVwc2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCBpKTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgZWxzZQorCisgICAgaWYgKGl0ZW0gPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgbG9uZyBjaCA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKGl0ZW0pOworICAgICAgICAvKiBQeUxvbmdfQVNfTE9ORygpIGNhbm5vdCBmYWlsLCBjaGFybWFwdHJhbnNsYXRlX2xvb2t1cCgpIGFscmVhZHkKKyAgICAgICAgICAgdXNlZCBpdCAqLworICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCBjaCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhpdGVtKSkgeworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIGl0ZW0pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfZmFzdF90cmFuc2xhdGVfbG9va3VwKFB5T2JqZWN0ICptYXBwaW5nLCBQeV9VQ1MxIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTMSAqdHJhbnNsYXRlKQoreworICAgIFB5T2JqZWN0ICppdGVtID0gTlVMTDsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjaCwgbWFwcGluZywgJml0ZW0pKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoaXRlbSA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIGRlbGV0aW9uICovCisgICAgICAgIHRyYW5zbGF0ZVtjaF0gPSAweGZlOworICAgIH0KKyAgICBlbHNlIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgLyogbm90IGZvdW5kID0+IGRlZmF1bHQgdG8gMToxIG1hcHBpbmcgKi8KKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IGNoOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIGxvbmcgcmVwbGFjZSA9IFB5TG9uZ19BU19MT05HKGl0ZW0pOworICAgICAgICAvKiBQeUxvbmdfQVNfTE9ORygpIGNhbm5vdCBmYWlsLCBjaGFybWFwdHJhbnNsYXRlX2xvb2t1cCgpIGFscmVhZHkKKyAgICAgICAgICAgdXNlZCBpdCAqLworICAgICAgICBpZiAoMTI3IDwgcmVwbGFjZSkgeworICAgICAgICAgICAgLyogaW52YWxpZCBjaGFyYWN0ZXIgb3IgY2hhcmFjdGVyIG91dHNpZGUgQVNDSUk6CisgICAgICAgICAgICAgICBza2lwIHRoZSBmYXN0IHRyYW5zbGF0ZSAqLworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHRyYW5zbGF0ZVtjaF0gPSAoUHlfVUNTMSlyZXBsYWNlOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgUHlfVUNTNCByZXBsYWNlOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSkgIT0gMSkKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgICByZXBsYWNlID0gUHlVbmljb2RlX1JFQURfQ0hBUihpdGVtLCAwKTsKKyAgICAgICAgaWYgKHJlcGxhY2UgPiAxMjcpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHRyYW5zbGF0ZVtjaF0gPSAoUHlfVUNTMSlyZXBsYWNlOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogbm90IE5vbmUsIE5VTEwsIGxvbmcgb3IgdW5pY29kZSAqLworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldCA9IDE7CisKKyAgZXhpdDoKKyAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogRmFzdCBwYXRoIGZvciBhc2NpaSA9PiBhc2NpaSB0cmFuc2xhdGlvbi4gUmV0dXJuIDEgaWYgdGhlIHdob2xlIHN0cmluZworICAgd2FzIHRyYW5zbGF0ZWQgaW50byB3cml0ZXIsIHJldHVybiAwIGlmIHRoZSBpbnB1dCBzdHJpbmcgd2FzIHBhcnRpYWxseQorICAgdHJhbnNsYXRlZCBpbnRvIHdyaXRlciwgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50Cit1bmljb2RlX2Zhc3RfdHJhbnNsYXRlKFB5T2JqZWN0ICppbnB1dCwgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgaW50IGlnbm9yZSkKK3sKKyAgICBQeV9VQ1MxIGFzY2lpX3RhYmxlWzEyOF0sIGNoLCBjaDI7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfVUNTMSAqaW4sICplbmQsICpvdXQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGlucHV0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOworCisgICAgbWVtc2V0KGFzY2lpX3RhYmxlLCAweGZmLCAxMjgpOworCisgICAgaW4gPSBQeVVuaWNvZGVfMUJZVEVfREFUQShpbnB1dCk7CisgICAgZW5kID0gaW4gKyBsZW47CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0FTQ0lJKHdyaXRlci0+YnVmZmVyKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSA9PSBsZW4pOworICAgIG91dCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGZvciAoOyBpbiA8IGVuZDsgaW4rKykgeworICAgICAgICBjaCA9ICppbjsKKyAgICAgICAgY2gyID0gYXNjaWlfdGFibGVbY2hdOworICAgICAgICBpZiAoY2gyID09IDB4ZmYpIHsKKyAgICAgICAgICAgIGludCB0cmFuc2xhdGUgPSB1bmljb2RlX2Zhc3RfdHJhbnNsYXRlX2xvb2t1cChtYXBwaW5nLCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaV90YWJsZSk7CisgICAgICAgICAgICBpZiAodHJhbnNsYXRlIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAodHJhbnNsYXRlID09IDApCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgY2gyID0gYXNjaWlfdGFibGVbY2hdOworICAgICAgICB9CisgICAgICAgIGlmIChjaDIgPT0gMHhmZSkgeworICAgICAgICAgICAgaWYgKGlnbm9yZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoY2gyIDwgMTI4KTsKKyAgICAgICAgKm91dCA9IGNoMjsKKyAgICAgICAgb3V0Kys7CisgICAgfQorICAgIHJlcyA9IDE7CisKK2V4aXQ6CisgICAgd3JpdGVyLT5wb3MgPSBvdXQgLSBQeVVuaWNvZGVfMUJZVEVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgpAQCAtODYyOCwyMiArODYyMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICAvKiBpbnB1dCBvYmplY3QgKi8KLSAgICBjaGFyICppZGF0YTsKKyAgICBjaGFyICpkYXRhOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKICAgICBpbnQga2luZDsKICAgICAvKiBvdXRwdXQgYnVmZmVyICovCi0gICAgUHlfVUNTNCAqb3V0cHV0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG9zaXplOwotICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICBQeV9zc2l6ZV90IG9wb3M7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgLyogZXJyb3IgaGFuZGxlciAqLwogICAgIGNoYXIgKnJlYXNvbiA9ICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiI7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLAotICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIGludCBpZ25vcmU7CisgICAgaW50IHJlczsKIAogICAgIGlmIChtYXBwaW5nID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKQEAgLTg2NTIsMTAgKzg2NDEsOSBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlkYXRhID0gKGNoYXIqKVB5VW5pY29kZV9EQVRBKGlucHV0KTsKKyAgICBkYXRhID0gKGNoYXIqKVB5VW5pY29kZV9EQVRBKGlucHV0KTsKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7Ci0gICAgaSA9IDA7CiAKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CkBAIC04NjY0LDEyMSArODY1Miw4MSBAQAogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSAxOjEgdHJhbnNsYXRpb24gd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KLSAgICBvc2l6ZSA9IHNpemU7Ci0gICAgb3V0cHV0ID0gUHlNZW1fTkVXKFB5X1VDUzQsIG9zaXplKTsKLSAgICBvcG9zID0gMDsKLSAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzaXplLCAxMjcpID09IC0xKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgfQogCisgICAgaWdub3JlID0gKGVycm9ycyAhPSBOVUxMICYmIHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSA9PSAwKTsKKworICAgIHJlcyA9IHVuaWNvZGVfZmFzdF90cmFuc2xhdGUoaW5wdXQsIG1hcHBpbmcsICZ3cml0ZXIsIGlnbm9yZSk7CisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHJlcyA9PSAxKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CisKKyAgICBpID0gd3JpdGVyLnBvczsKICAgICB3aGlsZSAoaTxzaXplKSB7CiAgICAgICAgIC8qIHRyeSB0byBlbmNvZGUgaXQgKi8KLSAgICAgICAgUHlPYmplY3QgKnggPSBOVUxMOwotICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoaW5wdXQsIGksIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0LCAmb3NpemUsICZvcG9zLCAmeCkpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7Ci0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgaWYgKHghPVB5X05vbmUpIC8qIGl0IHdvcmtlZCA9PiBhZGp1c3QgaW5wdXQgcG9pbnRlciAqLwotICAgICAgICAgICAgKytpOwotICAgICAgICBlbHNlIHsgLyogdW50cmFuc2xhdGFibGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHVuaTI7Ci0gICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBpOwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gaSsxOwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsOworICAgICAgICBpbnQgdHJhbnNsYXRlOworICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLworICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKKyAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW50cmFuc2xhdGFibGUgY2hhcnMgKi8KKyAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQ7CisgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZDsKKyAgICAgICAgUHlfVUNTNCBjaDsKIAotICAgICAgICAgICAgLyogZmluZCBhbGwgdW50cmFuc2xhdGFibGUgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgd2hpbGUgKGNvbGxlbmQgPCBzaXplKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5VW5pY29kZV9SRUFEKGtpbmQsaWRhdGEsIGNvbGxlbmQpLCBtYXBwaW5nLCAmeCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHgpOwotICAgICAgICAgICAgICAgIGlmICh4IT1QeV9Ob25lKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICArK2NvbGxlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAotICAgICAgICAgICAgICogKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgICAgICBtYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhjICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIHRyYW5zbGF0ZSA9IGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGNoLCBtYXBwaW5nLCAmd3JpdGVyKTsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgaWYgKHRyYW5zbGF0ZSAhPSAwKSB7CisgICAgICAgICAgICAvKiBpdCB3b3JrZWQgPT4gYWRqdXN0IGlucHV0IHBvaW50ZXIgKi8KKyAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyogdW50cmFuc2xhdGFibGUgY2hhcmFjdGVyICovCisgICAgICAgIGNvbGxzdGFydCA9IGk7CisgICAgICAgIGNvbGxlbmQgPSBpKzE7CisKKyAgICAgICAgLyogZmluZCBhbGwgdW50cmFuc2xhdGFibGUgY2hhcmFjdGVycyAqLworICAgICAgICB3aGlsZSAoY29sbGVuZCA8IHNpemUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp4OworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKTsKKyAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjaCwgbWFwcGluZywgJngpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHNwYWNlLCB0aGlzIGlzIGEgMToxIHJlcGxhY2VtZW50ICovCi0gICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7IGNvbGwrKykKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAnPyc7Ci0gICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOworICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKKyAgICAgICAgICAgIGlmICh4ICE9IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBpKSAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgaWRhdGEsIGkpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZvdXRwdXQsICZvc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3Mrc3RybGVuKGJ1ZmZlcikrKHNpemUtY29sbGVuZCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGNwID0gYnVmZmVyOyAqY3A7ICsrY3ApCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9ICpjcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaSA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwgaW5wdXQsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSAwOyByZXBzaXplLS0+MDsgKyt1bmkyKQotICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgdW5pMik7Ci0gICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKKyAgICAgICAgICAgICsrY29sbGVuZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpZ25vcmUpIHsKKyAgICAgICAgICAgIGkgPSBjb2xsZW5kOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKCZ3cml0ZXIsIHJlcHVuaWNvZGUpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIG91dHB1dCwgb3Bvcyk7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTg4ODAsNyArODgyOCw3IEBACiAKICAgICBtYXhjaGFyID0gMTI3OwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IHNbaV07CiAgICAgICAgIGlmIChjaCA+IDEyNykgewogICAgICAgICAgICAgaW50IGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CiAgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQpAQCAtODg5Nyw3ICs4ODQ1LDcgQEAKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoZGVjaW1hbCk7CiAgICAgLyogSXRlcmF0ZSBvdmVyIGNvZGUgcG9pbnRzICovCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCkBAIC04OTc4LDM1ICs4OTI2LDYxIEBACiAKIC8qIC0tLSBIZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLworI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAorICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwogc3RhdGljIFB5X3NzaXplX3QKIGFueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIHJlc3VsdDsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoczEpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoczIpOwotICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzMSwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gLTI7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCi0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzMiwga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQorICAgIGlmIChraW5kMSA8IGtpbmQyKQorICAgICAgICByZXR1cm4gLTE7CisKICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoczEpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMik7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHMxKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoczIpOworICAgIGlmIChsZW4yID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKKyAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxICsga2luZDEqc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQxLCBlbmQgLSBzdGFydCwgY2gsIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzdGFydCArIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHMyLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIHJldHVybiAtMjsKKyAgICB9CiAKICAgICBpZiAoZGlyZWN0aW9uID4gMCkgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kMSkgewogICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOwpAQCAtOTAyNCw3ICs4OTk4LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoczEpICYmIFB5VW5pY29kZV9JU19BU0NJSShzMikpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CkBAIC05MDQyLDkgKzkwMTYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkxMzQsMjEgKzkxMDYsNiBAQAogfQogCiAKLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCiBQeV9zc2l6ZV90CiBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLApAQCAtOTE1OCw3ICs5MTE1LDcgQEAKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc3ViX29iajsKLSAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKQEAgLTkxNzgsMjQgKzkxMzUsMzAgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKLSAgICBraW5kID0ga2luZDE7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkgewotICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZCk7CisgICAgaWYgKGtpbmQxIDwga2luZDIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoIWJ1ZjIpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7Ci0KICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQogICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCkBAIC05MjI3LDE0ICs5MTkwLDE0IEBACiAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKIAotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTkyODcsNiArOTI1MCw4IEBACiAgICAgfQogICAgIGlmIChlbmQgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKQogICAgICAgICBlbmQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGlmIChzdGFydCA+PSBlbmQpCisgICAgICAgIHJldHVybiAtMTsKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICByZXN1bHQgPSBmaW5kY2hhcihQeVVuaWNvZGVfMUJZVEVfREFUQShzdHIpICsga2luZCpzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICBraW5kLCBlbmQtc3RhcnQsIGNoLCBkaXJlY3Rpb24pOwpAQCAtOTMxNSwxNCArOTI4MCwxNCBAQAogICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgPT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CiAgICAgZW5kIC09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CiAgICAgaWYgKGVuZCA8IHN0YXJ0KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCisgICAgICAgIHJldHVybiAxOworCiAgICAga2luZF9zZWxmID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAgZGF0YV9zZWxmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAgICAga2luZF9zdWIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOwpAQCAtOTQ3NCw3ICs5NDM5LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IGo7CiAgICAgaW50IGZpbmFsX3NpZ21hOwotICAgIFB5X1VDUzQgYyA9IDA7CisgICAgUHlfVUNTNCBjID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICAvKiBVKzAzQTMgaXMgaW4gdGhlIEZpbmFsX1NpZ21hIGNvbnRleHQgd2hlbiwgaXQgaXMgZm91bmQgbGlrZSB0aGlzOgogCiAgICAgIFxwe2Nhc2VkfVxwe2Nhc2UtaWdub3JhYmxlfSpVKzAzQTMhKFxwe2Nhc2UtaWdub3JhYmxlfSpccHtjYXNlZH0pCkBAIC0xMDAzMyw3ICs5OTk4LDcgQEAKICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCiAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgUHlPYmplY3QqIG91dDsKQEAgLTEwMDc3LDIzICsxMDA0MiwyNSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCi0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOwotICAgIGlmICghYnVmMikgewotICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMiB8fCBsZW4xIDwgbGVuMikgeworICAgICAgICBvdXQgPSBQeUxpc3RfTmV3KDEpOworICAgICAgICBpZiAob3V0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICBQeUxpc3RfU0VUX0lURU0ob3V0LCAwLCBzZWxmKTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIHN3aXRjaCAoa2luZCkgeworICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfc3BsaXQoCkBAIC0xMDExMyw5ICsxMDA4MCw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgb3V0ID0gTlVMTDsKICAgICB9Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBvdXQ7CiB9CkBAIC0xMDEyNSw3ICsxMDA5MCw3IEBACiAgICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgUHlPYmplY3QqIG91dDsKQEAgLTEwMTY5LDIzICsxMDEzNCwyNSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCi0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOwotICAgIGlmICghYnVmMikgewotICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMiB8fCBsZW4xIDwgbGVuMikgeworICAgICAgICBvdXQgPSBQeUxpc3RfTmV3KDEpOworICAgICAgICBpZiAob3V0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICBQeUxpc3RfU0VUX0lURU0ob3V0LCAwLCBzZWxmKTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIHN3aXRjaCAoa2luZCkgeworICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnNwbGl0KApAQCAtMTAyMDUsOSArMTAxNzIsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG91dCA9IE5VTEw7CiAgICAgfQotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gb3V0OwogfQpAQCAtMTA0MjYsNyArMTAzOTEsNyBAQAogICAgICAgICB9CiAgICAgICAgIC8qIG5ld19zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgKyBuICogKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpIC0KICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSkpKTsgKi8KLSAgICAgICAgaWYgKGxlbjIgPiBsZW4xICYmIGxlbjIgLSBsZW4xID4gKFBZX1NTSVpFX1RfTUFYIC0gc2xlbikgLyBuKSB7CisgICAgICAgIGlmIChsZW4xIDwgbGVuMiAmJiBsZW4yIC0gbGVuMSA+IChQWV9TU0laRV9UX01BWCAtIHNsZW4pIC8gbikgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTA4MzUsNyArMTA4MDAsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChsZW4xID4gbGVuMikKICAgICAgICAgICAgIHJldHVybiAxOyAvKiB1bmkgaXMgbG9uZ2VyICovCi0gICAgICAgIGlmIChsZW4yID4gbGVuMSkKKyAgICAgICAgaWYgKGxlbjEgPCBsZW4yKQogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBzdHIgaXMgbG9uZ2VyICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTEwODQzLDcgKzEwODA4LDcgQEAKICAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaSk7CiAgICAgICAgIC8qIENvbXBhcmUgVW5pY29kZSBzdHJpbmcgYW5kIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IHN0cmluZyAqLwogICAgICAgICBmb3IgKGkgPSAwOyAoY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpICYmIHN0cltpXTsgaSsrKQotICAgICAgICAgICAgaWYgKGNociAhPSBzdHJbaV0pCisgICAgICAgICAgICBpZiAoY2hyICE9ICh1bnNpZ25lZCBjaGFyKXN0cltpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gKGNociA8ICh1bnNpZ25lZCBjaGFyKShzdHJbaV0pKSA/IC0xIDogMTsKICAgICAgICAgLyogVGhpcyBjaGVjayBrZWVwcyBQeXRob24gc3RyaW5ncyB0aGF0IGVuZCBpbiAnXDAnIGZyb20gY29tcGFyaW5nIGVxdWFsCiAgICAgICAgICB0byBDIHN0cmluZ3MgaWRlbnRpY2FsIHVwIHRvIHRoYXQgcG9pbnQuICovCkBAIC0xMDk0NywyMyArMTA5MTIsMzUgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGlmIChraW5kMiA+IGtpbmQxKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOwotICAgIH0KLSAgICBpZiAoIWJ1ZjIpIHsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgewogICAgICAgICBQeV9ERUNSRUYoc3ViKTsKICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOworICAgIGlmIChsZW4xIDwgbGVuMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBpZiAobGVuMiA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgYnVmMiwgMCk7CisgICAgICAgIHJlc3VsdCA9IGZpbmRjaGFyKChjb25zdCBjaGFyICopYnVmMSwga2luZDEsIGxlbjEsIGNoLCAxKSAhPSAtMTsKKyAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKQEAgLTExMTQ0LDExICsxMTEyMSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY291bnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBOVUxMOyAgIC8qIGluaXRpYWxpemUgdG8gZml4IGEgY29tcGlsZXIgd2FybmluZyAqLwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCkBAIC0xMTE1OCwyNCArMTExMzUsMjcgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMiA+IGtpbmQxKSB7CisgICAgaWYgKGtpbmQxIDwga2luZDIpIHsKICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgfQotICAgIGtpbmQgPSBraW5kMTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCi0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOwotICAgIGlmICghYnVmMikgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKLQogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIHN3aXRjaCAoa2luZCkgeworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlyZXN1bHQgPSB1Y3MxbGliX2NvdW50KAogICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKQEAgLTExMjAwLDcgKzExMTgwLDcgQEAKIAogICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpcmVzdWx0KTsKIAotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwpAQCAtMTEzMzIsNiArMTEzMTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfZmluZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgLyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKQEAgLTExNDE5LDYgKzExNDAwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CkBAIC0xMjQ5Nyw2ICsxMjQ3OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9yZmluZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgLyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKQEAgLTEyNTMzLDYgKzEyNTE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3JpbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgLyogaW5pdGlhbGl6ZSB2YXJpYWJsZXMgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKQEAgLTEyNjQ3LDggKzEyNjMxLDggQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7Ci0gICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwpAQCAtMTI2NjcsMjEgKzEyNjUxLDI5IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7Ci0gICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisgICAgaWYgKGtpbmQxIDwga2luZDIgfHwgbGVuMSA8IGxlbjIpIHsKKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIGlmICghdW5pY29kZV9lbXB0eSkKKyAgICAgICAgICAgIG91dCA9IE5VTEw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHN0cl9vYmosIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOwpAQCAtMTI3MDEsMTggKzEyNjkzLDE0IEBACiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7CiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCAmJiBidWYxKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0xMjcyNCw4ICsxMjcxMiw4IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKLSAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOwotICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgaW50IGtpbmQxLCBraW5kMjsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKQEAgLTEyNzM5LDIxICsxMjcyNywyOSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOwotICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHJfb2JqLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjEpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCi0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjIpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcF9vYmopOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpOworICAgICAgICBpZiAoIXVuaWNvZGVfZW1wdHkpCisgICAgICAgICAgICBvdXQgPSBOVUxMOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5LCBzdHJfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KIAotICAgIHN3aXRjaCAoa2luZCkgeworICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzZXBfb2JqKSkKICAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CkBAIC0xMjc3MywxOCArMTI3NjksMTQgQEAKIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTEyOTMwLDQ3ICsxMjkyMiw5IEBACiBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfXywKLSJtYWtldHJhbnMoeCwgeT1Ob25lLCB6PU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yIHN0ci50cmFuc2xhdGUoKS5cbiIKLSJcbiIKLSJJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBVbmljb2RlXG4iCi0ib3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgTm9uZS5cbiIKLSJDaGFyYWN0ZXIga2V5cyB3aWxsIGJlIHRoZW4gY29udmVydGVkIHRvIG9yZGluYWxzLlxuIgotIklmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsIGFuZFxuIgotImluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZCB0byB0aGVcbiIKLSJjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gSWYgdGhlcmUgaXMgYSB0aGlyZCBhcmd1bWVudCwgaXRcbiIKLSJtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKLQotI2RlZmluZSBVTklDT0RFX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAotICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX21ha2V0cmFuc19pbXBsKFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSwgUHlPYmplY3QgKnopOwotCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9tYWtldHJhbnModm9pZCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKng7Ci0gICAgUHlPYmplY3QgKnkgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp6ID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiT3xVVTptYWtldHJhbnMiLAotICAgICAgICAmeCwgJnksICZ6KSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NjZlZGY2MzBmNzc0MzZhIGlucHV0PTdiZmJmNTI5YTI5M2M2YzVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOTI1Yzg5NDUyYmQ1ODgxIGlucHV0PTdiZmJmNTI5YTI5M2M2YzVdKi8KIHsKICAgICBQeU9iamVjdCAqbmV3ID0gTlVMTCwgKmtleSwgKnZhbHVlOwogICAgIFB5X3NzaXplX3QgaSA9IDA7CkBAIC0xMzM5Nyw2ICsxMzM1MSw3IEBACiAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOwogICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IGxlbiA+IHdyaXRlci0+c2l6ZSAtIHdyaXRlci0+cG9zKSB7CiAgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMICYmICF3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAxOwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0cik7CiAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IHN0cjsKQEAgLTEzOTA1LDggKzEzODYwLDggQEAKICAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKICAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCiAgKi8KLXN0YXRpYyBQeU9iamVjdCoKLWZvcm1hdGxvbmcoUHlPYmplY3QgKnZhbCwgc3RydWN0IHVuaWNvZGVfZm9ybWF0X2FyZ190ICphcmcpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zvcm1hdExvbmcoUHlPYmplY3QgKnZhbCwgaW50IGFsdCwgaW50IHByZWMsIGludCB0eXBlKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGNoYXIgKmJ1ZjsKQEAgLTEzOTE2LDggKzEzODcxLDYgQEAKICAgICBQeV9zc2l6ZV90IGxsZW47CiAgICAgaW50IG51bWRpZ2l0czsgICAgICAvKiBsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzICovCiAgICAgaW50IG51bW5vbmRpZ2l0cyA9IDA7Ci0gICAgaW50IHByZWMgPSBhcmctPnByZWM7Ci0gICAgaW50IHR5cGUgPSBhcmctPmNoOwogCiAgICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCiAgICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKQEAgLTEzOTY2LDcgKzEzOTE5LDcgQEAKICAgICBpZiAobGxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5Qnl0ZXNfRm9ybWF0TG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5VW5pY29kZV9Gb3JtYXRMb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBsZW4gPSAoaW50KWxsZW47CkBAIC0xMzk3Niw3ICsxMzkyOSw3IEBACiAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOwogCiAgICAgLyogR2V0IHJpZCBvZiBiYXNlIG1hcmtlciB1bmxlc3MgRl9BTFQgKi8KLSAgICBpZiAoKChhcmctPmZsYWdzICYgRl9BTFQpID09IDAgJiYKKyAgICBpZiAoKChhbHQpID09IDAgJiYKICAgICAgICAgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSkpIHsKICAgICAgICAgYXNzZXJ0KGJ1ZltzaWduXSA9PSAnMCcpOwogICAgICAgICBhc3NlcnQoYnVmW3NpZ24rMV0gPT0gJ3gnIHx8IGJ1ZltzaWduKzFdID09ICdYJyB8fApAQCAtMTQwNTEsMjQgKzE0MDA0LDE0IEBACiAgICAgaWYgKCFQeU51bWJlcl9DaGVjayh2KSkKICAgICAgICAgZ290byB3cm9uZ3R5cGU7CiAKLSAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCi0gICAgLyogaWYgbm90LCBpc3N1ZSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBub3cgKi8KKyAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyIGZvciBvLCB4LCBhbmQgWCAqLwogICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CiAgICAgICAgIGlmICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykgewogICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KHYpOwogICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIGludCBjb252ZXJzaW9ucyBoYXZlIGJlZW4gZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9Mb25nKHYpOwotICAgICAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHdyb25ndHlwZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIHdyb25ndHlwZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNDEyMSw3ICsxNDA2NCw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHJlcyA9IGZvcm1hdGxvbmcoaW9iaiwgYXJnKTsKKyAgICByZXMgPSBfUHlVbmljb2RlX0Zvcm1hdExvbmcoaW9iaiwgYXJnLT5mbGFncyAmIEZfQUxULCBhcmctPnByZWMsIHR5cGUpOwogICAgIFB5X0RFQ1JFRihpb2JqKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0MTI5LDEwICsxNDA3MiwyMyBAQAogICAgIHJldHVybiAwOwogCiB3cm9uZ3R5cGU6Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICIlJSVjIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsICIKLSAgICAgICAgICAgICJub3QgJS4yMDBzIiwKLSAgICAgICAgICAgIHR5cGUsIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHN3aXRjaCh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlJSVjIGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUsIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJSUlYyBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCAiCisgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xNDE1MCwyMiArMTQxMDYsMTAgQEAKICAgICAgICAgUHlPYmplY3QgKmlvYmo7CiAgICAgICAgIGxvbmcgeDsKICAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciAqLwotICAgICAgICAvKiBpZiBub3QsIGlzc3VlIGRlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIG5vdyAqLwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgewogICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KHYpOwogICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIGludCBjb252ZXJzaW9ucyBoYXZlIGJlZW4gZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9Mb25nKHYpOwotICAgICAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwgKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdiA9IGlvYmo7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CkBAIC0xNDk5NywxMyArMTQ5NDEsNiBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Rm9ybWF0dGVySXRlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgZm9ybWF0dGVyIGl0ZXIgdHlwZSIpOwogCi0jaWZkZWYgSEFWRV9NQkNTCi0gICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKLSAgICBpZiAoIUdldFZlcnNpb25FeCgoT1NWRVJTSU9OSU5GTyopJndpbnZlcikpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTU0MTksNyArMTUzNTYsNyBAQAogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KLSAgICBpZiAobGVuID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgeworICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3Qpc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCAxZmRjMDkyLi4wYzFlMGI2IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC04MiwyNSArODIsMzEgQEAKICAgICB7LTIwNSwgMCwgLTIwNSwgMCwgMCwgOTk5M30sCiAgICAgey0yMDIsIDAsIC0yMDIsIDAsIDAsIDk5OTN9LAogICAgIHstMjAzLCAwLCAtMjAzLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMTksIDAsIDQyMzE5LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMTUsIDAsIDQyMzE1LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwNywgMCwgLTIwNywgMCwgMCwgOTk5M30sCiAgICAgezQyMjgwLCAwLCA0MjI4MCwgMCwgMCwgOTk5M30sCiAgICAgezQyMzA4LCAwLCA0MjMwOCwgMCwgMCwgOTk5M30sCiAgICAgey0yMDksIDAsIC0yMDksIDAsIDAsIDk5OTN9LAogICAgIHstMjExLCAwLCAtMjExLCAwLCAwLCA5OTkzfSwKICAgICB7MTA3NDMsIDAsIDEwNzQzLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMDUsIDAsIDQyMzA1LCAwLCAwLCA5OTkzfSwKICAgICB7MTA3NDksIDAsIDEwNzQ5LCAwLCAwLCA5OTkzfSwKICAgICB7LTIxMywgMCwgLTIxMywgMCwgMCwgOTk5M30sCiAgICAgey0yMTQsIDAsIC0yMTQsIDAsIDAsIDk5OTN9LAogICAgIHsxMDcyNywgMCwgMTA3MjcsIDAsIDAsIDk5OTN9LAogICAgIHstMjE4LCAwLCAtMjE4LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyODIsIDAsIDQyMjgyLCAwLCAwLCA5OTkzfSwKICAgICB7LTY5LCAwLCAtNjksIDAsIDAsIDk5OTN9LAogICAgIHstMjE3LCAwLCAtMjE3LCAwLCAwLCA5OTkzfSwKICAgICB7LTcxLCAwLCAtNzEsIDAsIDAsIDk5OTN9LAogICAgIHstMjE5LCAwLCAtMjE5LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyNTgsIDAsIDQyMjU4LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTQwODl9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1ODg5fSwKICAgICB7MTY3NzcyNDQsIDE3ODI1ODE4LCAxNjc3NzI0NCwgMCwgMCwgMzAyMTZ9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMzMyMX0sCisgICAgezAsIDExNiwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAzOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAzNywgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCA2NCwgMCwgMCwgMCwgMTAxMTN9LApAQCAtMTIyLDYgKzEyOCw3IEBACiAgICAgezE2Nzc3Mjc2LCAxNzgyNTg1MCwgMTY3NzcyNzYsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzcyNzksIDE3ODI1ODUzLCAxNjc3NzI3OSwgMCwgMCwgMjYzNzd9LAogICAgIHs3LCAwLCA3LCAwLCAwLCA5OTkzfSwKKyAgICB7LTExNiwgMCwgLTExNiwgMCwgMCwgOTk5M30sCiAgICAgezAsIC02MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHsxNjc3NzI4MiwgMTc4MjU4NTYsIDE2Nzc3MjgyLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03LCAwLCAwLCAwLCAxMDExM30sCkBAIC0yODAsNiArMjg3LDExIEBACiAgICAgezAsIC0zNTMzMiwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtNDIyODAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgLTQyMzA4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjMxOSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMzA1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI1OCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyODIsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAzMzU1NTA0MCwgMCwgMCwgMjYzNzd9LAogICAgIHszMzU1NTA0NSwgMTg4NzQ5NzgsIDMzNTU1MDQ3LCAwLCAwLCAyNjM3N30sCiAgICAgezMzNTU1MDUyLCAxODg3NDk4NSwgMzM1NTUwNTQsIDAsIDAsIDI2Mzc3fSwKQEAgLTI5Niw2ICszMDgsNyBAQAogICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKICAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA5MzQ0fSwKIH07CiAKIC8qIGV4dGVuZGVkIGNhc2UgbWFwcGluZ3MgKi8KQEAgLTEwMjksNDYgKzEwNDIsNTMgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIAogICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCi0gICAgNzEsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNTAsIDcxLCAxNTEsIDE1MiwgCi0gICAgMTUzLCA3MSwgMTU0LCA3MSwgMTU1LCA3MSwgNzEsIDcxLCAxNTYsIDcxLCA3MSwgNzEsIDE1NywgMTU4LCAxNTksIDE2MCwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTYxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjIsIDcxLCAKLSAgICAxNjMsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjQsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMTY1LCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjYsIDE2NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjgsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDY0LCAxNjksIDE3MCwgMTcxLCAxNzIsIDcxLCAxNzMsIDcxLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCi0gICAgMTc5LCAxODAsIDE4MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxODIsIDE4MywgNzEsIDcxLCAxODQsIAotICAgIDE4NSwgMTg2LCAxODcsIDE4OCwgNzEsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA2NSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxOTcsIDE5OCwgCi0gICAgMTk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjAwLCAKLSAgICAzNCwgMjAxLCAyMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKKyAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNDUsIDE0NSwgMTQ1LCAxNjIsIDE0NSwgMTQ1LCAxNDUsIDE2MywgCisgICAgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTQ1LCAxNDUsIDE3MCwgMTQ1LCAxNzEsIDE3MiwgMTczLCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNzQsIDE0NSwgMTQ1LCAxNDUsIDE3NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc2LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE3OCwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxODMsIDE4NCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE4NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE4NiwgMTg3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgNjQsIAorICAgIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTQ1LCAxOTIsIDE0NSwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAKKyAgICAyMDAsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjAxLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDIwMiwgMjAzLCAxNDUsIDE0NSwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDE0NSwgMjA5LCAyMTAsIDY0LCAKKyAgICAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjIwLCAyMjEsIDIyMiwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyMywgMzQsIDIyNCwgMjI1LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDMsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMjYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjI3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjI4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNiwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMjksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIApAQCAtMTA3NiwzNTggKzEwOTYsNDU4IEBACiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMzAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMjA4LCAzNCwgMjA5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDIwMywgMzQsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDIxMCwgNzEsIDIxMSwgMjEyLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAzNCwgMjMxLCAzNCwgMjMyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMjYsIDM0LCAzNCwgMjMyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMzMsIDE0NSwgMjM0LCAyMzUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMTQ2Myw4ICsxNTgzLDggQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDIzNiwgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDIxMywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTE1MDAsNyArMTYyMCw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDIxMywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAyMzYsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTUzNSwxMDYgKzE2NTUsMTA3IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjQsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCiAgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDc3LCAyMCwgMjAsIDgwLCAyMCwgODEsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDIwLCAyMCwgMjAsIDg0LCAyMCwgCi0gICAgODYsIDg3LCAyMCwgMjAsIDg4LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgODksIDIwLCAyMCwgOTAsIDIwLCAyMCwgCi0gICAgOTAsIDIwLCAyMCwgMjAsIDIwLCA5MCwgOTEsIDkyLCA5MiwgOTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTQsIDIwLCA1NSwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk1LCA5NSwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgCi0gICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NiwgNiwgOTYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAotICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCA4MCwgMjAsIDIwLCAKKyAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDIwLCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKKyAgICA4OSwgOTAsIDIwLCAyMCwgOTEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5MiwgMjAsIDIwLCA5MywgMjAsIDIwLCAKKyAgICA5MywgMjAsIDIwLCAyMCwgOTQsIDkzLCA5NSwgOTYsIDk2LCA5NywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OCwgMjAsIDU1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAorICAgIDEwMCwgMTAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMCwgMTAwLCA2LCA2LCA2LCA2LCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgMTAxLCA2LCAxMDEsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCA5NywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgMzAsIDMxLCAwLCAwLCAKLSAgICA5OCwgNTAsIDUwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgOTksIDI1LCAxMDAsIDEwMCwgMTAwLCAwLCAxMDEsIDAsIAotICAgIDEwMiwgMTAyLCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTA3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMSwgMTEyLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTQsIDExNSwgMTE2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMTcsIDExOCwgMTE5LCAyMCwgCi0gICAgMTIwLCAxMjEsIDUsIDMwLCAzMSwgMTIyLCAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMjMsIDEyMywgMTIzLCAxMjMsIAotICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDE3LCAxNywgMTcsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDEwMSwgNiwgMzAsIDMxLCAwLCAwLCAxMDMsIDUwLCA1MCwgNTAsIDUsIDEwNCwgMCwgCisgICAgMCwgMCwgMCwgNiwgNiwgMTA1LCAyNSwgMTA2LCAxMDYsIDEwNiwgMCwgMTA3LCAwLCAxMDgsIDEwOCwgMTA5LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDExMCwgMTExLCAxMTEsIDExMSwgMTEyLCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDExMywgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTE0LCAxMTUsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMTksIDExOSwgMTIwLCAxMjEsIAorICAgIDEyMiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgNSwgMzAsIDMxLCAxMjksIAorICAgIDMwLCAzMSwgMjAsIDY0LCA2NCwgNjQsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKICAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgCi0gICAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI1LCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTMyLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEzMywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDAsIDk2LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI5LCAwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCA1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIAorICAgIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAKKyAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgCisgICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAwLCAwLCAxMDEsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzYsIDAsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDUsIDI1LCAyNSwgNSwgMjUsIDI1LCAKLSAgICA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjEsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDk2LCA1LCA1LCA1LCA1LCA5NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDEsIDEwMSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMSwgMTAxLCA1LCA1LCA1LCA1LCAxMDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxMDEsIDI1LCAyNSwgMjUsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCiAgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAKQEAgLTE2NjYsMjAgKzE3ODcsMjAgQEAKICAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKICAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIAorICAgIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMjUsIDI1LCAwLCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCiAgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIApAQCAtMTY5MCw3OSArMTgxMSw3OSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAKICAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAKLSAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgCi0gICAgMTMwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDk2LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzcsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDEsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgMCwgNTUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDU1LCAxMzcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMTAxLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCisgICAgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgCisgICAgNTUsIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAxMzgsIDAsIDAsIDAsIDAsIDAsIDEzOCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgCi0gICAgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCkBAIC0xNzg2LDI4ICsxOTA3LDI4IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAotICAgIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDE0OCwgMTQ4LCAxNDgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgOTYsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDEwMSwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAKKyAgICAxMDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0xODE1LDU5MCArMTkzNiwyNjcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDEzMiwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxMzksIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgOTYsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAxMDEsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCAxNDIsIDIwLCAyMCwgMjAsIDE0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAorICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKKyAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCisgICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAorICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKKyAgICAxMDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDAsIDE0OSwgMjAsIAorICAgIDIwLCAyMCwgMTUwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMCwgMTAwLCAxMDAsIAorICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKKyAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCisgICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE0NCwgCi0gICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDIwLCAyMCwgMTUwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAwLCAwLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCi0gICAgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgCi0gICAgMTUyLCAxNTIsIDE1MiwgMCwgMCwgMTUzLCAxNTEsIDE1NCwgMTUxLCAxNTUsIDE1MSwgMTU2LCAxNTEsIDAsIDE1MiwgMCwgCi0gICAgMTUyLCAwLCAxNTIsIDAsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAKLSAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTcsIDE1NywgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTksIDE1OSwgCi0gICAgMTYwLCAxNjAsIDE2MSwgMTYxLCAxNjIsIDE2MiwgMCwgMCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKLSAgICAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgCi0gICAgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIAotICAgIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMTUxLCAKLSAgICAxNTEsIDIxMSwgMjEyLCAyMTMsIDAsIDIxNCwgMjE1LCAxNTIsIDE1MiwgMjE2LCAyMTYsIDIxNywgNiwgMjE4LCA2LCA2LCAKLSAgICA2LCAyMTksIDIyMCwgMjIxLCAwLCAyMjIsIDIyMywgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDYsIDYsIDYsIDE1MSwgCi0gICAgMTUxLCAyMjYsIDIyNywgMCwgMCwgMjI4LCAyMjksIDE1MiwgMTUyLCAyMzAsIDIzMCwgMCwgNiwgNiwgNiwgMTUxLCAxNTEsIAotICAgIDIzMSwgMjMyLCAyMzMsIDExOSwgMjM0LCAyMzUsIDE1MiwgMTUyLCAyMzYsIDIzNiwgMTIyLCA2LCA2LCA2LCAwLCAwLCAKLSAgICAyMzcsIDIzOCwgMjM5LCAwLCAyNDAsIDI0MSwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNDUsIDk1LCAwLCAwLCAKLSAgICAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCA1LCA1LCA1LCA1LCA1LCA5NSwgMjQ1LCAyNiwgMjIsIDIzLCAyNDYsIAotICAgIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCA1LCA1LCA1LCA1LCA1LCAwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAxMTMsIDUsIDUsIAotICAgIDUsIDUsIDExMywgNSwgNSwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMjAsIDUsIDExMywgNSwgCi0gICAgNSwgMjUyLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgNSwgNSwgNSwgNSwgNSwgMTEzLCA1LCAyNTMsIDUsIDExMywgCi0gICAgNSwgMjU0LCAyNTUsIDExMywgMTEzLCAyNTIsIDIwLCAxMTMsIDExMywgMjU2LCAxMTMsIDIwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjAsIDUsIDUsIDIwLCAyMCwgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDExMywgMjAsIDIwLCAyMCwgMjAsIDUsIDUsIDUsIAotICAgIDUsIDI1NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAKLSAgICAyNTgsIDI1OCwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAxNDEsIDE0MSwgMTQxLCAzMCwgMzEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAKLSAgICAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIAotICAgIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIAotICAgIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgCi0gICAgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ1LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAotICAgIDI0NSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIAotICAgIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCi0gICAgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAzMCwgMzEsIDI2MiwgMjYzLCAKLSAgICAyNjQsIDI2NSwgMjY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyNjcsIDI2OCwgMjY5LCAyNzAsIDIwLCAzMCwgMzEsIAotICAgIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCAyNzEsIDI3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDk2LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjczLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDIwLCAyMCwgMTU3LCAyMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OSwgMTU5LCAxNTksIDE1OSwgCisgICAgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAwLCAwLCAxNTksIDE1OSwgMTU5LCAKKyAgICAxNTksIDE1OSwgMTU5LCAwLCAwLCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU5LCAxNTksIAorICAgIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAKKyAgICAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMCwgCisgICAgMCwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMCwgMCwgMTYwLCAxNTgsIDE2MSwgMTU4LCAxNjIsIDE1OCwgMTYzLCAKKyAgICAxNTgsIDAsIDE1OSwgMCwgMTU5LCAwLCAxNTksIDAsIDE1OSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAKKyAgICAxNTgsIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNjQsIDE2NCwgMTY1LCAxNjUsIDE2NSwgCisgICAgMTY1LCAxNjYsIDE2NiwgMTY3LCAxNjcsIDE2OCwgMTY4LCAxNjksIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAKKyAgICAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgCisgICAgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIAorICAgIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAKKyAgICAyMTYsIDIxNywgMTU4LCAxNTgsIDIxOCwgMjE5LCAyMjAsIDAsIDIyMSwgMjIyLCAxNTksIDE1OSwgMjIzLCAyMjMsIDIyNCwgCisgICAgNiwgMjI1LCA2LCA2LCA2LCAyMjYsIDIyNywgMjI4LCAwLCAyMjksIDIzMCwgMjMxLCAyMzEsIDIzMSwgMjMxLCAyMzIsIDYsIAorICAgIDYsIDYsIDE1OCwgMTU4LCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIDE1OSwgMTU5LCAyMzcsIDIzNywgMCwgNiwgNiwgNiwgCisgICAgMTU4LCAxNTgsIDIzOCwgMjM5LCAyNDAsIDEyNSwgMjQxLCAyNDIsIDE1OSwgMTU5LCAyNDMsIDI0MywgMTI5LCA2LCA2LCA2LCAKKyAgICAwLCAwLCAyNDQsIDI0NSwgMjQ2LCAwLCAyNDcsIDI0OCwgMjQ5LCAyNDksIDI1MCwgMjUwLCAyNTEsIDYsIDYsIDAsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCisgICAgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNTIsIDEwMCwgCisgICAgMCwgMCwgMjUzLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgNSwgNSwgNSwgNSwgNSwgMTAwLCAyNTIsIDI2LCAyMiwgMjMsIAorICAgIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKKyAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCAxMTksIDUsIDUsIDUsIDUsIDExOSwgNSwgNSwgMjAsIDExOSwgMTE5LCAxMTksIDIwLCAyMCwgMTE5LCAxMTksIAorICAgIDExOSwgMjAsIDUsIDExOSwgNSwgNSwgMjU5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMTE5LCA1LCAyNjAsIDUsIDExOSwgNSwgMjYxLCAyNjIsIDExOSwgMTE5LCAyNTksIDIwLCAxMTksIDExOSwgMjYzLCAxMTksIAorICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgMjAsIDUsIDUsIDIwLCAyMCwgMTE5LCAxMTksIDUsIDUsIDUsIDUsIDUsIDExOSwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDI2NCwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCisgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAxNDgsIDE0OCwgMTQ4LCAzMCwgMzEsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDIsIDUsIDUsIDUsIDUsIDk2LCA1NSwgMTQxLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1LCA5NiwgCi0gICAgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDk2LCA1NSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDYsIDYsIDk2LCA5NiwgNTUsIAotICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDUsIDk2LCA5NiwgOTYsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1LCA1LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjUzLCAKKyAgICAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCisgICAgMjIsIDIzLCAyNTMsIDI1NCwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCisgICAgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNTIsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNTMsIDI1NCwgMjU1LCAKKyAgICAyNTYsIDI1NywgMjU4LCAyNywgMjUyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNzQsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjc0LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgMjc0LCAyNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNTUsIDI1LCA2LCA2LCA2LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNSwgOTYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIDIyLCAyMywgMjUzLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjcsIDI2LCAyMiwgCisgICAgMjMsIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI3LCAyNiwgMjIsIDIzLCAyNTMsIDI1NCwgMjU1LCAyNTYsIAorICAgIDI1NywgMjU4LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAKKyAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgCisgICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIAorICAgIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAzMCwgMzEsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyNzQsIDI3NSwgMjc2LCAKKyAgICAyNzcsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAwLCAxMDAsIDI3OCwgMjc4LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAyNzksIDI3OSwgMjc5LCAKKyAgICAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgCisgICAgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIAorICAgIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMCwgMjc5LCAwLCAwLCAwLCAwLCAwLCAyNzksIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCi0gICAgNiwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDI3NSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDk2LCA2LCA2LCAzMCwgMzEsIDI3NiwgMjAsIDAsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjgwLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NSwgOTUsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMiwgNSwgCisgICAgNSwgNSwgNSwgMTAxLCA1NSwgMTQ4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDE4LCA1LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgNSwgNSwgMTQ4LCAxNDgsIDE0OCwgMTAxLCAKKyAgICA1NSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgOTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgMTgsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICAwLCAwLCAyNSwgMjUsIDYsIDYsIDEwMSwgMTAxLCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA5NiwgNSwgNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDUsIDUsIDU1LCA5NiwgOTYsIAotICAgIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIAotICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDEsIDEwMSwgMTAxLCA1NSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjQwNiw0MjUgKzIyMDQsODk1IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgMjkwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjkwLCAyOTAsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIAotICAgIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDAsIDI5MCwgNTUsIDI5MCwgNTUsIAotICAgIDI5MCwgNTUsIDI5MCwgNTUsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjgxLCAKKyAgICA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDI4MSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyODEsIDU1LCAyODEsIDI4MSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA2LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI5MSwgMjkxLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDI4MSwgMjgxLCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI4MSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyODEsIDI4MSwgMjgxLCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAxMDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDEwMSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAxMDEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDAsIDEwMCwgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAyODIsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDEsIDYsIDYsIDMwLCAzMSwgMjgzLCAyMCwgMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAyODQsIDI4NSwgMjg2LCAyODcsIDAsIDAsIDI4OCwgMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTAwLCAxMDAsIDIwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDEwMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAxMDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDU1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDEwMSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDUsIDUsIDU1LCAxMDEsIDEwMSwgMTgsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIAorICAgIDE4LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDI4MSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwLCAKKyAgICAyOTEsIDI5MiwgMjkzLCAyOTQsIDI5NSwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTcsIAorICAgIDI5OCwgMjk5LCAzMDAsIDMwMSwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzAyLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzMDIsIDMwMiwgNSwgNSwgMCwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDE4LCA1LCA1LCA2LCAwLCA1LCAKKyAgICA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAzMDIsIDU1LCAzMDIsIDU1LCAzMDIsIDAsIDMwMiwgNTUsIDMwMiwgNTUsIDMwMiwgNTUsIDMwMiwgNTUsIAorICAgIDMwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDUsIDUsIDUsIDYsIDE4LCA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDEsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDMwMywgMzAzLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAKKyAgICAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCAwLCAwLCAwLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMTQ4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0OCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgCisgICAgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIAorICAgIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAKKyAgICAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA1LCAzMDUsIDMwNSwgCisgICAgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAKKyAgICAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMjUzLCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjUzLCAyNTQsIAorICAgIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyMiwgMjMsIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKLSAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgCi0gICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkzLCAyOTMsIAotICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKLSAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgCi0gICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI2LCAyMiwgMjMsIDI0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAKLSAgICAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAwLCAxMTMsIDExMywgMCwgMCwgMTEzLCAwLCAwLCAKLSAgICAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDAsIDAsIDAsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMjAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKLSAgICA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCi0gICAgMjUwLCAyNTEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAotICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTksIDAsIDExOSwgMTE5LCAwLCAwLCAxMTksIDAsIDAsIDExOSwgMTE5LCAwLCAwLCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAwLCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDAsIDAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAwLCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTE5LCAxMTksIDAsIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDAsIDExOSwgMCwgMCwgMCwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCA1LCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgCisgICAgMTE5LCAxMTksIDExOSwgMTE5LCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCA1LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAorICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKKyAgICAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTE5LCAyMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgCisgICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgCisgICAgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUyLCAyNTIsIDI2LCAyMiwgMjMsIAorICAgIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMzA2LCAKKyAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCisgICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKKyAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAorICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyODEsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODM0LDMxICszMTAyLDMzIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODY5LDM1ICszMTM5LDM0IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjgxLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIApAQCAtMjkxMCwxMyArMzE3OSwxNCBAQAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIAorICAgIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMjk0MSw2ICszMjExLDcgQEAKICAgICBjYXNlIDB4MEM3ODoKICAgICBjYXNlIDB4MENFNjoKICAgICBjYXNlIDB4MEQ2NjoKKyAgICBjYXNlIDB4MERFNjoKICAgICBjYXNlIDB4MEU1MDoKICAgICBjYXNlIDB4MEVEMDoKICAgICBjYXNlIDB4MEYyMDoKQEAgLTI5NjksNiArMzI0MCw3IEBACiAgICAgY2FzZSAweEE4RDA6CiAgICAgY2FzZSAweEE5MDA6CiAgICAgY2FzZSAweEE5RDA6CisgICAgY2FzZSAweEE5RjA6CiAgICAgY2FzZSAweEFBNTA6CiAgICAgY2FzZSAweEFCRjA6CiAgICAgY2FzZSAweEY5QjI6CkBAIC0yOTc5LDcgKzMyNTEsMTMgQEAKICAgICBjYXNlIDB4MTEwRjA6CiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKKyAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNEQwOgorICAgIGNhc2UgMHgxMTY1MDoKICAgICBjYXNlIDB4MTE2QzA6CisgICAgY2FzZSAweDExOEUwOgorICAgIGNhc2UgMHgxNkE2MDoKKyAgICBjYXNlIDB4MTZCNTA6CiAgICAgY2FzZSAweDFEN0NFOgogICAgIGNhc2UgMHgxRDdEODoKICAgICBjYXNlIDB4MUQ3RTI6CkBAIC0yOTg3LDYgKzMyNjUsOCBAQAogICAgIGNhc2UgMHgxRDdGNjoKICAgICBjYXNlIDB4MUYxMDA6CiAgICAgY2FzZSAweDFGMTAxOgorICAgIGNhc2UgMHgxRjEwQjoKKyAgICBjYXNlIDB4MUYxMEM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAwLjA7CiAgICAgY2FzZSAweDAwMzE6CiAgICAgY2FzZSAweDAwQjk6CkBAIC0zMDA0LDYgKzMyODQsNyBAQAogICAgIGNhc2UgMHgwQzdDOgogICAgIGNhc2UgMHgwQ0U3OgogICAgIGNhc2UgMHgwRDY3OgorICAgIGNhc2UgMHgwREU3OgogICAgIGNhc2UgMHgwRTUxOgogICAgIGNhc2UgMHgwRUQxOgogICAgIGNhc2UgMHgwRjIxOgpAQCAtMzA0Nyw2ICszMzI4LDcgQEAKICAgICBjYXNlIDB4QThEMToKICAgICBjYXNlIDB4QTkwMToKICAgICBjYXNlIDB4QTlEMToKKyAgICBjYXNlIDB4QTlGMToKICAgICBjYXNlIDB4QUE1MToKICAgICBjYXNlIDB4QUJGMToKICAgICBjYXNlIDB4RkYxMToKQEAgLTMwNTUsMzQgKzMzMzcsNDggQEAKICAgICBjYXNlIDB4MTAxNTg6CiAgICAgY2FzZSAweDEwMTU5OgogICAgIGNhc2UgMHgxMDE1QToKKyAgICBjYXNlIDB4MTAyRTE6CiAgICAgY2FzZSAweDEwMzIwOgogICAgIGNhc2UgMHgxMDNEMToKICAgICBjYXNlIDB4MTA0QTE6CiAgICAgY2FzZSAweDEwODU4OgorICAgIGNhc2UgMHgxMDg3OToKKyAgICBjYXNlIDB4MTA4QTc6CiAgICAgY2FzZSAweDEwOTE2OgogICAgIGNhc2UgMHgxMEE0MDoKICAgICBjYXNlIDB4MTBBN0Q6CisgICAgY2FzZSAweDEwQTlEOgorICAgIGNhc2UgMHgxMEFFQjoKICAgICBjYXNlIDB4MTBCNTg6CiAgICAgY2FzZSAweDEwQjc4OgorICAgIGNhc2UgMHgxMEJBOToKICAgICBjYXNlIDB4MTBFNjA6CiAgICAgY2FzZSAweDExMDUyOgogICAgIGNhc2UgMHgxMTA2NzoKICAgICBjYXNlIDB4MTEwRjE6CiAgICAgY2FzZSAweDExMTM3OgogICAgIGNhc2UgMHgxMTFEMToKKyAgICBjYXNlIDB4MTExRTE6CisgICAgY2FzZSAweDExMkYxOgorICAgIGNhc2UgMHgxMTREMToKKyAgICBjYXNlIDB4MTE2NTE6CiAgICAgY2FzZSAweDExNkMxOgorICAgIGNhc2UgMHgxMThFMToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKICAgICBjYXNlIDB4MTI0MzQ6CiAgICAgY2FzZSAweDEyNDRGOgogICAgIGNhc2UgMHgxMjQ1ODoKKyAgICBjYXNlIDB4MTZBNjE6CisgICAgY2FzZSAweDE2QjUxOgogICAgIGNhc2UgMHgxRDM2MDoKICAgICBjYXNlIDB4MUQ3Q0Y6CiAgICAgY2FzZSAweDFEN0Q5OgogICAgIGNhc2UgMHgxRDdFMzoKICAgICBjYXNlIDB4MUQ3RUQ6CiAgICAgY2FzZSAweDFEN0Y3OgorICAgIGNhc2UgMHgxRThDNzoKICAgICBjYXNlIDB4MUYxMDI6CiAgICAgY2FzZSAweDIwOTJBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wOwpAQCAtMzEwMiwxMSArMzM5OCwxMyBAQAogICAgIGNhc2UgMHgxMDE3NToKICAgICBjYXNlIDB4MTAxNzY6CiAgICAgY2FzZSAweDEwRTdCOgorICAgIGNhc2UgMHgxMjQ2NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKICAgICBjYXNlIDB4MTI0NUQ6CisgICAgY2FzZSAweDEyNDY1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzMuMDsKICAgICBjYXNlIDB4MDBCQzoKICAgICBjYXNlIDB4MDlGNzoKQEAgLTMxMTQsOSArMzQxMiwxMSBAQAogICAgIGNhc2UgMHgwRDczOgogICAgIGNhc2UgMHhBODMwOgogICAgIGNhc2UgMHgxMDE0MDoKKyAgICBjYXNlIDB4MTAxOEI6CiAgICAgY2FzZSAweDEwRTdDOgogICAgIGNhc2UgMHgxMjQ2MDoKICAgICBjYXNlIDB4MTI0NjI6CisgICAgY2FzZSAweDEyNDYzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQuMDsKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CkBAIC0zMTYzLDE1ICszNDYzLDI0IEBACiAgICAgY2FzZSAweDEwMTYyOgogICAgIGNhc2UgMHgxMDE2MzoKICAgICBjYXNlIDB4MTAxNjQ6CisgICAgY2FzZSAweDEwMkVBOgogICAgIGNhc2UgMHgxMDMyMjoKICAgICBjYXNlIDB4MTAzRDM6CiAgICAgY2FzZSAweDEwODVCOgorICAgIGNhc2UgMHgxMDg3RToKKyAgICBjYXNlIDB4MTA4QUQ6CiAgICAgY2FzZSAweDEwOTE3OgogICAgIGNhc2UgMHgxMEE0NDoKKyAgICBjYXNlIDB4MTBBOUU6CisgICAgY2FzZSAweDEwQUVEOgogICAgIGNhc2UgMHgxMEI1QzoKICAgICBjYXNlIDB4MTBCN0M6CisgICAgY2FzZSAweDEwQkFEOgogICAgIGNhc2UgMHgxMEU2OToKICAgICBjYXNlIDB4MTEwNUI6CisgICAgY2FzZSAweDExMUVBOgorICAgIGNhc2UgMHgxMThFQToKKyAgICBjYXNlIDB4MTZCNUI6CiAgICAgY2FzZSAweDFEMzY5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMDsKICAgICBjYXNlIDB4MEJGMToKQEAgLTMxODYsMTQgKzM0OTUsMjAgQEAKICAgICBjYXNlIDB4MTAxNEI6CiAgICAgY2FzZSAweDEwMTUyOgogICAgIGNhc2UgMHgxMDE2QToKKyAgICBjYXNlIDB4MTAyRjM6CiAgICAgY2FzZSAweDEwM0Q1OgogICAgIGNhc2UgMHgxMDg1RDoKKyAgICBjYXNlIDB4MTA4QUY6CiAgICAgY2FzZSAweDEwOTE5OgogICAgIGNhc2UgMHgxMEE0NjoKKyAgICBjYXNlIDB4MTBBRUY6CiAgICAgY2FzZSAweDEwQjVFOgogICAgIGNhc2UgMHgxMEI3RToKKyAgICBjYXNlIDB4MTBCQUY6CiAgICAgY2FzZSAweDEwRTcyOgogICAgIGNhc2UgMHgxMTA2NDoKKyAgICBjYXNlIDB4MTExRjM6CisgICAgY2FzZSAweDE2QjVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwLjA7CiAgICAgY2FzZSAweDBCRjI6CiAgICAgY2FzZSAweDBENzI6CkBAIC0zMjEyLDYgKzM1MjcsNyBAQAogICAgIGNhc2UgMHgxMEI1RjoKICAgICBjYXNlIDB4MTBCN0Y6CiAgICAgY2FzZSAweDExMDY1OgorICAgIGNhc2UgMHgxMTFGNDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAuMDsKICAgICBjYXNlIDB4MTM3QzoKICAgICBjYXNlIDB4MjE4MjoKQEAgLTMyMjAsMTMgKzM1MzYsMjAgQEAKICAgICBjYXNlIDB4MTAxMkI6CiAgICAgY2FzZSAweDEwMTU1OgogICAgIGNhc2UgMHgxMDg1RjoKKyAgICBjYXNlIDB4MTZCNUQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwMC4wOwogICAgIGNhc2UgMHgyMTg4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwLjA7CisgICAgY2FzZSAweDE2QjVFOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMC4wOwogICAgIGNhc2UgMHg0RUJGOgogICAgIGNhc2UgMHg1MTA0OgorICAgIGNhc2UgMHgxNkI1RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMC4wOworICAgIGNhc2UgMHgxNkI2MDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMDAwLjA7CiAgICAgY2FzZSAweDUxNDY6CisgICAgY2FzZSAweDE2QjYxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMDAwMDAwMC4wOwogICAgIGNhc2UgMHgyMTZBOgogICAgIGNhc2UgMHgyMTdBOgpAQCAtMzMwNSw2ICszNjI4LDcgQEAKICAgICBjYXNlIDB4MEM3RDoKICAgICBjYXNlIDB4MENFODoKICAgICBjYXNlIDB4MEQ2ODoKKyAgICBjYXNlIDB4MERFODoKICAgICBjYXNlIDB4MEU1MjoKICAgICBjYXNlIDB4MEVEMjoKICAgICBjYXNlIDB4MEYyMjoKQEAgLTMzNDksNiArMzY3Myw3IEBACiAgICAgY2FzZSAweEE4RDI6CiAgICAgY2FzZSAweEE5MDI6CiAgICAgY2FzZSAweEE5RDI6CisgICAgY2FzZSAweEE5RjI6CiAgICAgY2FzZSAweEFBNTI6CiAgICAgY2FzZSAweEFCRjI6CiAgICAgY2FzZSAweEY5Nzg6CkBAIC0zMzU4LDIwICszNjgzLDI5IEBACiAgICAgY2FzZSAweDEwMTVDOgogICAgIGNhc2UgMHgxMDE1RDoKICAgICBjYXNlIDB4MTAxNUU6CisgICAgY2FzZSAweDEwMkUyOgogICAgIGNhc2UgMHgxMDNEMjoKICAgICBjYXNlIDB4MTA0QTI6CiAgICAgY2FzZSAweDEwODU5OgorICAgIGNhc2UgMHgxMDg3QToKKyAgICBjYXNlIDB4MTA4QTg6CiAgICAgY2FzZSAweDEwOTFBOgogICAgIGNhc2UgMHgxMEE0MToKICAgICBjYXNlIDB4MTBCNTk6CiAgICAgY2FzZSAweDEwQjc5OgorICAgIGNhc2UgMHgxMEJBQToKICAgICBjYXNlIDB4MTBFNjE6CiAgICAgY2FzZSAweDExMDUzOgogICAgIGNhc2UgMHgxMTA2ODoKICAgICBjYXNlIDB4MTEwRjI6CiAgICAgY2FzZSAweDExMTM4OgogICAgIGNhc2UgMHgxMTFEMjoKKyAgICBjYXNlIDB4MTExRTI6CisgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTREMjoKKyAgICBjYXNlIDB4MTE2NTI6CiAgICAgY2FzZSAweDExNkMyOgorICAgIGNhc2UgMHgxMThFMjoKICAgICBjYXNlIDB4MTI0MDA6CiAgICAgY2FzZSAweDEyNDE2OgogICAgIGNhc2UgMHgxMjQxRjoKQEAgLTMzODIsMTIgKzM3MTYsMTUgQEAKICAgICBjYXNlIDB4MTI0NTA6CiAgICAgY2FzZSAweDEyNDU2OgogICAgIGNhc2UgMHgxMjQ1OToKKyAgICBjYXNlIDB4MTZBNjI6CisgICAgY2FzZSAweDE2QjUyOgogICAgIGNhc2UgMHgxRDM2MToKICAgICBjYXNlIDB4MUQ3RDA6CiAgICAgY2FzZSAweDFEN0RBOgogICAgIGNhc2UgMHgxRDdFNDoKICAgICBjYXNlIDB4MUQ3RUU6CiAgICAgY2FzZSAweDFEN0Y4OgorICAgIGNhc2UgMHgxRThDODoKICAgICBjYXNlIDB4MUYxMDM6CiAgICAgY2FzZSAweDIyMzkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wOwpAQCAtMzM5Niw2ICszNzMzLDcgQEAKICAgICBjYXNlIDB4MTBFN0U6CiAgICAgY2FzZSAweDEyNDVCOgogICAgIGNhc2UgMHgxMjQ1RToKKyAgICBjYXNlIDB4MTI0NjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjAvMy4wOwogICAgIGNhc2UgMHgyMTU2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wLzUuMDsKQEAgLTM0MDksMTcgKzM3NDcsMjYgQEAKICAgICBjYXNlIDB4NTM0NDoKICAgICBjYXNlIDB4NUVGRjoKICAgICBjYXNlIDB4MTAxMTE6CisgICAgY2FzZSAweDEwMkVCOgogICAgIGNhc2UgMHgxMDNENDoKICAgICBjYXNlIDB4MTA4NUM6CisgICAgY2FzZSAweDEwODdGOgorICAgIGNhc2UgMHgxMDhBRToKICAgICBjYXNlIDB4MTA5MTg6CiAgICAgY2FzZSAweDEwQTQ1OgorICAgIGNhc2UgMHgxMEE5RjoKKyAgICBjYXNlIDB4MTBBRUU6CiAgICAgY2FzZSAweDEwQjVEOgogICAgIGNhc2UgMHgxMEI3RDoKKyAgICBjYXNlIDB4MTBCQUU6CiAgICAgY2FzZSAweDEwRTZBOgogICAgIGNhc2UgMHgxMTA1QzoKKyAgICBjYXNlIDB4MTExRUI6CisgICAgY2FzZSAweDExOEVCOgogICAgIGNhc2UgMHgxRDM2QToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwLjA7CiAgICAgY2FzZSAweDEwMTFBOgorICAgIGNhc2UgMHgxMDJGNDoKICAgICBjYXNlIDB4MTBFNzM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMDAuMDsKICAgICBjYXNlIDB4MTAxMjM6CkBAIC0zNDYyLDYgKzM4MDksNyBAQAogICAgIGNhc2UgMHgwQzdFOgogICAgIGNhc2UgMHgwQ0U5OgogICAgIGNhc2UgMHgwRDY5OgorICAgIGNhc2UgMHgwREU5OgogICAgIGNhc2UgMHgwRTUzOgogICAgIGNhc2UgMHgwRUQzOgogICAgIGNhc2UgMHgwRjIzOgpAQCAtMzUwNSwyNCArMzg1MywzNCBAQAogICAgIGNhc2UgMHhBOEQzOgogICAgIGNhc2UgMHhBOTAzOgogICAgIGNhc2UgMHhBOUQzOgorICAgIGNhc2UgMHhBOUYzOgogICAgIGNhc2UgMHhBQTUzOgogICAgIGNhc2UgMHhBQkYzOgogICAgIGNhc2UgMHhGOTZCOgogICAgIGNhc2UgMHhGRjEzOgogICAgIGNhc2UgMHgxMDEwOToKKyAgICBjYXNlIDB4MTAyRTM6CiAgICAgY2FzZSAweDEwNEEzOgogICAgIGNhc2UgMHgxMDg1QToKKyAgICBjYXNlIDB4MTA4N0I6CisgICAgY2FzZSAweDEwOEE5OgogICAgIGNhc2UgMHgxMDkxQjoKICAgICBjYXNlIDB4MTBBNDI6CiAgICAgY2FzZSAweDEwQjVBOgogICAgIGNhc2UgMHgxMEI3QToKKyAgICBjYXNlIDB4MTBCQUI6CiAgICAgY2FzZSAweDEwRTYyOgogICAgIGNhc2UgMHgxMTA1NDoKICAgICBjYXNlIDB4MTEwNjk6CiAgICAgY2FzZSAweDExMEYzOgogICAgIGNhc2UgMHgxMTEzOToKICAgICBjYXNlIDB4MTExRDM6CisgICAgY2FzZSAweDExMUUzOgorICAgIGNhc2UgMHgxMTJGMzoKKyAgICBjYXNlIDB4MTE0RDM6CisgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKKyAgICBjYXNlIDB4MTE4RTM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC0zNTM4LDEyICszODk2LDE1IEBACiAgICAgY2FzZSAweDEyNDRCOgogICAgIGNhc2UgMHgxMjQ1MToKICAgICBjYXNlIDB4MTI0NTc6CisgICAgY2FzZSAweDE2QTYzOgorICAgIGNhc2UgMHgxNkI1MzoKICAgICBjYXNlIDB4MUQzNjI6CiAgICAgY2FzZSAweDFEN0QxOgogICAgIGNhc2UgMHgxRDdEQjoKICAgICBjYXNlIDB4MUQ3RTU6CiAgICAgY2FzZSAweDFEN0VGOgogICAgIGNhc2UgMHgxRDdGOToKKyAgICBjYXNlIDB4MUU4Qzk6CiAgICAgY2FzZSAweDFGMTA0OgogICAgIGNhc2UgMHgyMEFGRDoKICAgICBjYXNlIDB4MjBCMTk6CkBAIC0zNTc0LDEzICszOTM1LDE3IEBACiAgICAgY2FzZSAweDUzNDU6CiAgICAgY2FzZSAweDEwMTEyOgogICAgIGNhc2UgMHgxMDE2NToKKyAgICBjYXNlIDB4MTAyRUM6CiAgICAgY2FzZSAweDEwRTZCOgogICAgIGNhc2UgMHgxMTA1RDoKKyAgICBjYXNlIDB4MTExRUM6CisgICAgY2FzZSAweDExOEVDOgogICAgIGNhc2UgMHgxRDM2QjoKICAgICBjYXNlIDB4MjA5ODM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMC4wOwogICAgIGNhc2UgMHgxMDExQjoKICAgICBjYXNlIDB4MTAxNkI6CisgICAgY2FzZSAweDEwMkY1OgogICAgIGNhc2UgMHgxMEU3NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwMC4wOwogICAgIGNhc2UgMHgxMDEyNDoKQEAgLTM2MTgsNiArMzk4Myw3IEBACiAgICAgY2FzZSAweDBDNkE6CiAgICAgY2FzZSAweDBDRUE6CiAgICAgY2FzZSAweDBENkE6CisgICAgY2FzZSAweDBERUE6CiAgICAgY2FzZSAweDBFNTQ6CiAgICAgY2FzZSAweDBFRDQ6CiAgICAgY2FzZSAweDBGMjQ6CkBAIC0zNjU4LDIxICs0MDI0LDMyIEBACiAgICAgY2FzZSAweEE4RDQ6CiAgICAgY2FzZSAweEE5MDQ6CiAgICAgY2FzZSAweEE5RDQ6CisgICAgY2FzZSAweEE5RjQ6CiAgICAgY2FzZSAweEFBNTQ6CiAgICAgY2FzZSAweEFCRjQ6CiAgICAgY2FzZSAweEZGMTQ6CiAgICAgY2FzZSAweDEwMTBBOgorICAgIGNhc2UgMHgxMDJFNDoKICAgICBjYXNlIDB4MTA0QTQ6CisgICAgY2FzZSAweDEwODdDOgorICAgIGNhc2UgMHgxMDhBQToKKyAgICBjYXNlIDB4MTA4QUI6CiAgICAgY2FzZSAweDEwQTQzOgogICAgIGNhc2UgMHgxMEI1QjoKICAgICBjYXNlIDB4MTBCN0I6CisgICAgY2FzZSAweDEwQkFDOgogICAgIGNhc2UgMHgxMEU2MzoKICAgICBjYXNlIDB4MTEwNTU6CiAgICAgY2FzZSAweDExMDZBOgogICAgIGNhc2UgMHgxMTBGNDoKICAgICBjYXNlIDB4MTExM0E6CiAgICAgY2FzZSAweDExMUQ0OgorICAgIGNhc2UgMHgxMTFFNDoKKyAgICBjYXNlIDB4MTEyRjQ6CisgICAgY2FzZSAweDExNEQ0OgorICAgIGNhc2UgMHgxMTY1NDoKICAgICBjYXNlIDB4MTE2QzQ6CisgICAgY2FzZSAweDExOEU0OgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtMzY4OCwxMiArNDA2NSwxNiBAQAogICAgIGNhc2UgMHgxMjQ0QzoKICAgICBjYXNlIDB4MTI0NTI6CiAgICAgY2FzZSAweDEyNDUzOgorICAgIGNhc2UgMHgxMjQ2OToKKyAgICBjYXNlIDB4MTZBNjQ6CisgICAgY2FzZSAweDE2QjU0OgogICAgIGNhc2UgMHgxRDM2MzoKICAgICBjYXNlIDB4MUQ3RDI6CiAgICAgY2FzZSAweDFEN0RDOgogICAgIGNhc2UgMHgxRDdFNjoKICAgICBjYXNlIDB4MUQ3RjA6CiAgICAgY2FzZSAweDFEN0ZBOgorICAgIGNhc2UgMHgxRThDQToKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKQEAgLTM3MDYsMTMgKzQwODcsMTggQEAKICAgICBjYXNlIDB4MzJCNToKICAgICBjYXNlIDB4NTM0QzoKICAgICBjYXNlIDB4MTAxMTM6CisgICAgY2FzZSAweDEwMkVEOgogICAgIGNhc2UgMHgxMEU2QzoKICAgICBjYXNlIDB4MTEwNUU6CisgICAgY2FzZSAweDExMUVEOgorICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTI0Njc6CiAgICAgY2FzZSAweDFEMzZDOgogICAgIGNhc2UgMHgyMDk4QzoKICAgICBjYXNlIDB4MjA5OUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MC4wOwogICAgIGNhc2UgMHgxMDExQzoKKyAgICBjYXNlIDB4MTAyRjY6CiAgICAgY2FzZSAweDEwRTc1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDAwLjA7CiAgICAgY2FzZSAweDEwMTI1OgpAQCAtMzc1Miw2ICs0MTM4LDcgQEAKICAgICBjYXNlIDB4MEM2QjoKICAgICBjYXNlIDB4MENFQjoKICAgICBjYXNlIDB4MEQ2QjoKKyAgICBjYXNlIDB4MERFQjoKICAgICBjYXNlIDB4MEU1NToKICAgICBjYXNlIDB4MEVENToKICAgICBjYXNlIDB4MEYyNToKQEAgLTM3OTIsNiArNDE3OSw3IEBACiAgICAgY2FzZSAweEE4RDU6CiAgICAgY2FzZSAweEE5MDU6CiAgICAgY2FzZSAweEE5RDU6CisgICAgY2FzZSAweEE5RjU6CiAgICAgY2FzZSAweEFBNTU6CiAgICAgY2FzZSAweEFCRjU6CiAgICAgY2FzZSAweEZGMTU6CkBAIC0zODAxLDE1ICs0MTg5LDI0IEBACiAgICAgY2FzZSAweDEwMTRGOgogICAgIGNhc2UgMHgxMDE1RjoKICAgICBjYXNlIDB4MTAxNzM6CisgICAgY2FzZSAweDEwMkU1OgogICAgIGNhc2UgMHgxMDMyMToKICAgICBjYXNlIDB4MTA0QTU6CisgICAgY2FzZSAweDEwODdEOgorICAgIGNhc2UgMHgxMDhBQzoKKyAgICBjYXNlIDB4MTBBRUM6CiAgICAgY2FzZSAweDEwRTY0OgogICAgIGNhc2UgMHgxMTA1NjoKICAgICBjYXNlIDB4MTEwNkI6CiAgICAgY2FzZSAweDExMEY1OgogICAgIGNhc2UgMHgxMTEzQjoKICAgICBjYXNlIDB4MTExRDU6CisgICAgY2FzZSAweDExMUU1OgorICAgIGNhc2UgMHgxMTJGNToKKyAgICBjYXNlIDB4MTE0RDU6CisgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKKyAgICBjYXNlIDB4MTE4RTU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC0zODIxLDEyICs0MjE4LDE2IEBACiAgICAgY2FzZSAweDEyNDREOgogICAgIGNhc2UgMHgxMjQ1NDoKICAgICBjYXNlIDB4MTI0NTU6CisgICAgY2FzZSAweDEyNDZBOgorICAgIGNhc2UgMHgxNkE2NToKKyAgICBjYXNlIDB4MTZCNTU6CiAgICAgY2FzZSAweDFEMzY0OgogICAgIGNhc2UgMHgxRDdEMzoKICAgICBjYXNlIDB4MUQ3REQ6CiAgICAgY2FzZSAweDFEN0U3OgogICAgIGNhc2UgMHgxRDdGMToKICAgICBjYXNlIDB4MUQ3RkI6CisgICAgY2FzZSAweDFFOENCOgogICAgIGNhc2UgMHgxRjEwNjoKICAgICBjYXNlIDB4MjAxMjE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1LjA7CkBAIC0zODUyLDEwICs0MjUzLDE0IEBACiAgICAgY2FzZSAweDEwMTY4OgogICAgIGNhc2UgMHgxMDE2OToKICAgICBjYXNlIDB4MTAxNzQ6CisgICAgY2FzZSAweDEwMkVFOgogICAgIGNhc2UgMHgxMDMyMzoKICAgICBjYXNlIDB4MTBBN0U6CiAgICAgY2FzZSAweDEwRTZEOgogICAgIGNhc2UgMHgxMTA1RjoKKyAgICBjYXNlIDB4MTExRUU6CisgICAgY2FzZSAweDExOEVFOgorICAgIGNhc2UgMHgxMjQ2ODoKICAgICBjYXNlIDB4MUQzNkQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MC4wOwogICAgIGNhc2UgMHgyMTZFOgpAQCAtMzg2OSw2ICs0Mjc0LDcgQEAKICAgICBjYXNlIDB4MTAxNkU6CiAgICAgY2FzZSAweDEwMTZGOgogICAgIGNhc2UgMHgxMDE3MDoKKyAgICBjYXNlIDB4MTAyRjc6CiAgICAgY2FzZSAweDEwRTc2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwLjA7CiAgICAgY2FzZSAweDIxODE6CkBAIC0zODk1LDYgKzQzMDEsNyBAQAogICAgIGNhc2UgMHgwQzZDOgogICAgIGNhc2UgMHgwQ0VDOgogICAgIGNhc2UgMHgwRDZDOgorICAgIGNhc2UgMHgwREVDOgogICAgIGNhc2UgMHgwRTU2OgogICAgIGNhc2UgMHgwRUQ2OgogICAgIGNhc2UgMHgwRjI2OgpAQCAtMzkzNSwxMiArNDM0MiwxNCBAQAogICAgIGNhc2UgMHhBOEQ2OgogICAgIGNhc2UgMHhBOTA2OgogICAgIGNhc2UgMHhBOUQ2OgorICAgIGNhc2UgMHhBOUY2OgogICAgIGNhc2UgMHhBQTU2OgogICAgIGNhc2UgMHhBQkY2OgogICAgIGNhc2UgMHhGOUQxOgogICAgIGNhc2UgMHhGOUQzOgogICAgIGNhc2UgMHhGRjE2OgogICAgIGNhc2UgMHgxMDEwQzoKKyAgICBjYXNlIDB4MTAyRTY6CiAgICAgY2FzZSAweDEwNEE2OgogICAgIGNhc2UgMHgxMEU2NToKICAgICBjYXNlIDB4MTEwNTc6CkBAIC0zOTQ4LDcgKzQzNTcsMTIgQEAKICAgICBjYXNlIDB4MTEwRjY6CiAgICAgY2FzZSAweDExMTNDOgogICAgIGNhc2UgMHgxMTFENjoKKyAgICBjYXNlIDB4MTExRTY6CisgICAgY2FzZSAweDExMkY2OgorICAgIGNhc2UgMHgxMTRENjoKKyAgICBjYXNlIDB4MTE2NTY6CiAgICAgY2FzZSAweDExNkM2OgorICAgIGNhc2UgMHgxMThFNjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTM5NTYsMjMgKzQzNzAsMzEgQEAKICAgICBjYXNlIDB4MTI0Mjg6CiAgICAgY2FzZSAweDEyNDQwOgogICAgIGNhc2UgMHgxMjQ0RToKKyAgICBjYXNlIDB4MTI0NkI6CisgICAgY2FzZSAweDE2QTY2OgorICAgIGNhc2UgMHgxNkI1NjoKICAgICBjYXNlIDB4MUQzNjU6CiAgICAgY2FzZSAweDFEN0Q0OgogICAgIGNhc2UgMHgxRDdERToKICAgICBjYXNlIDB4MUQ3RTg6CiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKKyAgICBjYXNlIDB4MUU4Q0M6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKICAgICBjYXNlIDB4MTM3NzoKICAgICBjYXNlIDB4MzI0RDoKICAgICBjYXNlIDB4MTAxMTU6CisgICAgY2FzZSAweDEwMkVGOgogICAgIGNhc2UgMHgxMEU2RToKICAgICBjYXNlIDB4MTEwNjA6CisgICAgY2FzZSAweDExMUVGOgorICAgIGNhc2UgMHgxMThFRjoKICAgICBjYXNlIDB4MUQzNkU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MC4wOwogICAgIGNhc2UgMHgxMDExRToKKyAgICBjYXNlIDB4MTAyRjg6CiAgICAgY2FzZSAweDEwRTc3OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAwLjA7CiAgICAgY2FzZSAweDEwMTI3OgpAQCAtMzk5Miw2ICs0NDE0LDcgQEAKICAgICBjYXNlIDB4MEM2RDoKICAgICBjYXNlIDB4MENFRDoKICAgICBjYXNlIDB4MEQ2RDoKKyAgICBjYXNlIDB4MERFRDoKICAgICBjYXNlIDB4MEU1NzoKICAgICBjYXNlIDB4MEVENzoKICAgICBjYXNlIDB4MEYyNzoKQEAgLTQwMzIsMTAgKzQ0NTUsMTIgQEAKICAgICBjYXNlIDB4QThENzoKICAgICBjYXNlIDB4QTkwNzoKICAgICBjYXNlIDB4QTlENzoKKyAgICBjYXNlIDB4QTlGNzoKICAgICBjYXNlIDB4QUE1NzoKICAgICBjYXNlIDB4QUJGNzoKICAgICBjYXNlIDB4RkYxNzoKICAgICBjYXNlIDB4MTAxMEQ6CisgICAgY2FzZSAweDEwMkU3OgogICAgIGNhc2UgMHgxMDRBNzoKICAgICBjYXNlIDB4MTBFNjY6CiAgICAgY2FzZSAweDExMDU4OgpAQCAtNDA0Myw3ICs0NDY4LDEyIEBACiAgICAgY2FzZSAweDExMEY3OgogICAgIGNhc2UgMHgxMTEzRDoKICAgICBjYXNlIDB4MTExRDc6CisgICAgY2FzZSAweDExMUU3OgorICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0RDc6CisgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKKyAgICBjYXNlIDB4MTE4RTc6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC00MDUyLDEyICs0NDgyLDE2IEBACiAgICAgY2FzZSAweDEyNDQxOgogICAgIGNhc2UgMHgxMjQ0MjoKICAgICBjYXNlIDB4MTI0NDM6CisgICAgY2FzZSAweDEyNDZDOgorICAgIGNhc2UgMHgxNkE2NzoKKyAgICBjYXNlIDB4MTZCNTc6CiAgICAgY2FzZSAweDFEMzY2OgogICAgIGNhc2UgMHgxRDdENToKICAgICBjYXNlIDB4MUQ3REY6CiAgICAgY2FzZSAweDFEN0U5OgogICAgIGNhc2UgMHgxRDdGMzoKICAgICBjYXNlIDB4MUQ3RkQ6CisgICAgY2FzZSAweDFFOENEOgogICAgIGNhc2UgMHgxRjEwODoKICAgICBjYXNlIDB4MjAwMDE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjA7CkBAIC00MDY4LDExICs0NTAyLDE1IEBACiAgICAgY2FzZSAweDEzNzg6CiAgICAgY2FzZSAweDMyNEU6CiAgICAgY2FzZSAweDEwMTE2OgorICAgIGNhc2UgMHgxMDJGMDoKICAgICBjYXNlIDB4MTBFNkY6CiAgICAgY2FzZSAweDExMDYxOgorICAgIGNhc2UgMHgxMTFGMDoKKyAgICBjYXNlIDB4MTE4RjA6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CisgICAgY2FzZSAweDEwMkY5OgogICAgIGNhc2UgMHgxMEU3ODoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwMC4wOwogICAgIGNhc2UgMHgxMDEyODoKQEAgLTQwOTIsNiArNDUzMCw3IEBACiAgICAgY2FzZSAweDBDNkU6CiAgICAgY2FzZSAweDBDRUU6CiAgICAgY2FzZSAweDBENkU6CisgICAgY2FzZSAweDBERUU6CiAgICAgY2FzZSAweDBFNTg6CiAgICAgY2FzZSAweDBFRDg6CiAgICAgY2FzZSAweDBGMjg6CkBAIC00MTMwLDEwICs0NTY5LDEyIEBACiAgICAgY2FzZSAweEE4RDg6CiAgICAgY2FzZSAweEE5MDg6CiAgICAgY2FzZSAweEE5RDg6CisgICAgY2FzZSAweEE5Rjg6CiAgICAgY2FzZSAweEFBNTg6CiAgICAgY2FzZSAweEFCRjg6CiAgICAgY2FzZSAweEZGMTg6CiAgICAgY2FzZSAweDEwMTBFOgorICAgIGNhc2UgMHgxMDJFODoKICAgICBjYXNlIDB4MTA0QTg6CiAgICAgY2FzZSAweDEwRTY3OgogICAgIGNhc2UgMHgxMTA1OToKQEAgLTQxNDEsNyArNDU4MiwxMiBAQAogICAgIGNhc2UgMHgxMTBGODoKICAgICBjYXNlIDB4MTExM0U6CiAgICAgY2FzZSAweDExMUQ4OgorICAgIGNhc2UgMHgxMTFFODoKKyAgICBjYXNlIDB4MTEyRjg6CisgICAgY2FzZSAweDExNEQ4OgorICAgIGNhc2UgMHgxMTY1ODoKICAgICBjYXNlIDB4MTE2Qzg6CisgICAgY2FzZSAweDExOEU4OgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtNDE0OSwyMiArNDU5NSwzMCBAQAogICAgIGNhc2UgMHgxMjQyQToKICAgICBjYXNlIDB4MTI0NDQ6CiAgICAgY2FzZSAweDEyNDQ1OgorICAgIGNhc2UgMHgxMjQ2RDoKKyAgICBjYXNlIDB4MTZBNjg6CisgICAgY2FzZSAweDE2QjU4OgogICAgIGNhc2UgMHgxRDM2NzoKICAgICBjYXNlIDB4MUQ3RDY6CiAgICAgY2FzZSAweDFEN0UwOgogICAgIGNhc2UgMHgxRDdFQToKICAgICBjYXNlIDB4MUQ3RjQ6CiAgICAgY2FzZSAweDFEN0ZFOgorICAgIGNhc2UgMHgxRThDRToKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEzNzk6CiAgICAgY2FzZSAweDMyNEY6CiAgICAgY2FzZSAweDEwMTE3OgorICAgIGNhc2UgMHgxMDJGMToKICAgICBjYXNlIDB4MTBFNzA6CiAgICAgY2FzZSAweDExMDYyOgorICAgIGNhc2UgMHgxMTFGMToKKyAgICBjYXNlIDB4MTE4RjE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CisgICAgY2FzZSAweDEwMkZBOgogICAgIGNhc2UgMHgxMEU3OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwMC4wOwogICAgIGNhc2UgMHgxMDEyOToKQEAgLTQxODQsNiArNDYzOCw3IEBACiAgICAgY2FzZSAweDBDNkY6CiAgICAgY2FzZSAweDBDRUY6CiAgICAgY2FzZSAweDBENkY6CisgICAgY2FzZSAweDBERUY6CiAgICAgY2FzZSAweDBFNTk6CiAgICAgY2FzZSAweDBFRDk6CiAgICAgY2FzZSAweDBGMjk6CkBAIC00MjIzLDEwICs0Njc4LDEyIEBACiAgICAgY2FzZSAweEE4RDk6CiAgICAgY2FzZSAweEE5MDk6CiAgICAgY2FzZSAweEE5RDk6CisgICAgY2FzZSAweEE5Rjk6CiAgICAgY2FzZSAweEFBNTk6CiAgICAgY2FzZSAweEFCRjk6CiAgICAgY2FzZSAweEZGMTk6CiAgICAgY2FzZSAweDEwMTBGOgorICAgIGNhc2UgMHgxMDJFOToKICAgICBjYXNlIDB4MTA0QTk6CiAgICAgY2FzZSAweDEwRTY4OgogICAgIGNhc2UgMHgxMTA1QToKQEAgLTQyMzQsNyArNDY5MSwxMiBAQAogICAgIGNhc2UgMHgxMTBGOToKICAgICBjYXNlIDB4MTExM0Y6CiAgICAgY2FzZSAweDExMUQ5OgorICAgIGNhc2UgMHgxMTFFOToKKyAgICBjYXNlIDB4MTEyRjk6CisgICAgY2FzZSAweDExNEQ5OgorICAgIGNhc2UgMHgxMTY1OToKICAgICBjYXNlIDB4MTE2Qzk6CisgICAgY2FzZSAweDExOEU5OgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNDI0NCwxMiArNDcwNiwxNiBAQAogICAgIGNhc2UgMHgxMjQ0NzoKICAgICBjYXNlIDB4MTI0NDg6CiAgICAgY2FzZSAweDEyNDQ5OgorICAgIGNhc2UgMHgxMjQ2RToKKyAgICBjYXNlIDB4MTZBNjk6CisgICAgY2FzZSAweDE2QjU5OgogICAgIGNhc2UgMHgxRDM2ODoKICAgICBjYXNlIDB4MUQ3RDc6CiAgICAgY2FzZSAweDFEN0UxOgogICAgIGNhc2UgMHgxRDdFQjoKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgorICAgIGNhc2UgMHgxRThDRjoKICAgICBjYXNlIDB4MUYxMEE6CiAgICAgY2FzZSAweDJGODkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wOwpAQCAtNDI1NywxMiArNDcyMywxNiBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wLzIuMDsKICAgICBjYXNlIDB4MTM3QToKICAgICBjYXNlIDB4MTAxMTg6CisgICAgY2FzZSAweDEwMkYyOgogICAgIGNhc2UgMHgxMDM0MToKICAgICBjYXNlIDB4MTBFNzE6CiAgICAgY2FzZSAweDExMDYzOgorICAgIGNhc2UgMHgxMTFGMjoKKyAgICBjYXNlIDB4MTE4RjI6CiAgICAgY2FzZSAweDFEMzcxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAuMDsKICAgICBjYXNlIDB4MTAxMjE6CisgICAgY2FzZSAweDEwMkZCOgogICAgIGNhc2UgMHgxMDM0QToKICAgICBjYXNlIDB4MTBFN0E6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5MDAuMDsKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19iejIudmNwcm9qIGIvUEMvVlM5LjAvX2J6Mi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZWI4YzcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2J6Mi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9iejIiDQotCVByb2plY3RHVUlEPSJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCi0JUm9vdE5hbWVzcGFjZT0iYnoyIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxodWZmbWFuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2ogYi9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU1Y2JhMS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDcwNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2N0eXBlcyINCi0JUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qIGIvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAzMzU0Ni4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfY3R5cGVzX3Rlc3QiDQotCVByb2plY3RHVUlEPSJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlc190ZXN0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qIGIvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhYmIwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDc0MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2RlY2ltYWwiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCi0JUm9vdE5hbWVzcGFjZT0iX2RlY2ltYWwiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxkb2NzdHJpbmdzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHR5cGVhcml0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x1bW9kYXJpdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNjb21wYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNzdGRpbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXF9kZWNpbWFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udGV4dC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcaW8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbWVtb3J5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvaiBiL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZDczNzUuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2VsZW1lbnR0cmVlIg0KLQlQcm9qZWN0R1VJRD0iezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVJvb3ROYW1lc3BhY2U9Il9lbGVtZW50dHJlZSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2ogYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NDE3ZWMuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfaGFzaGxpYiINCi0JUHJvamVjdEdVSUQ9Ins0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KLQlSb290TmFtZXNwYWNlPSJfaGFzaGxpYiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19sem1hLnZjcHJvaiBiL1BDL1ZTOS4wL19sem1hLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M2MDAzZi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fbHptYS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9sem1hIg0KLQlQcm9qZWN0R1VJRD0ie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQotCVJvb3ROYW1lc3BhY2U9Imx6bWEiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sem1hbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX21zaS52Y3Byb2ogYi9QQy9WUzkuMC9fbXNpLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyMzBlMS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fbXNpLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX21zaSINCi0JUHJvamVjdEdVSUQ9InszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXNpIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfbXNpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2ogYi9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIzZDFlNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU0MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX211bHRpcHJvY2Vzc2luZyINCi0JUHJvamVjdEdVSUQ9Ins5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fc29ja2V0LnZjcHJvaiBiL1BDL1ZTOS4wL19zb2NrZXQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjFmNmQ0Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19zb2NrZXQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfc29ja2V0Ig0KLQlQcm9qZWN0R1VJRD0iezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmM1N2FlLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYwOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3NxbGl0ZTMiDQotCVByb2plY3RHVUlEPSJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCi0JUm9vdE5hbWVzcGFjZT0iX3NxbGl0ZTMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9fc3NsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ3ZGMyNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fc3NsLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3NzbCINCi0JUHJvamVjdEdVSUQ9IntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KLQlSb290TmFtZXNwYWNlPSJfc3NsIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NzbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzNzdlMS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il90ZXN0YnVmZmVyIg0KLQlQcm9qZWN0R1VJRD0ie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0YnVmZmVyIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGJ1ZmZlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTMzMDBhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il90ZXN0Y2FwaSINCi0JUHJvamVjdEdVSUQ9Ins2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZDkxMGQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUiDQotCVByb2plY3RHVUlEPSJ7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RpbXBvcnRtdWx0aXBsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvaiBiL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE2MzMxNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il90a2ludGVyIg0KLQlQcm9qZWN0R1VJRD0iezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVJvb3ROYW1lc3BhY2U9Il90a2ludGVyIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWJEZWJ1ZykiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliRGVidWcpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qIGIvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4Y2M3YWQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9ImJkaXN0X3dpbmluc3QiDQotCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUm9vdE5hbWVzcGFjZT0id2luaW5zdCINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvZGVidWcudnNwcm9wcyBiL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjQzY2IuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvZGVidWcudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJkZWJ1ZyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IktpbGxQeXRob25FeGUiDQotCQlWYWx1ZT0iJChPdXREaXIpXGtpbGxfcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9raWxsX3B5dGhvbi5jIGIvUEMvVlM5LjAva2lsbF9weXRob24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA0NzMxZi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiBIZWxwZXIgcHJvZ3JhbSBmb3Iga2lsbGluZyBsaW5nZXJpbmcgcHl0aG9uW19kXS5leGUgcHJvY2Vzc2VzIGJlZm9yZQotICogYnVpbGRpbmcsIHRodXMgYXR0ZW1wdGluZyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBkdWUgdG8gZmlsZXMgYmVpbmcKLSAqIGxvY2tlZC4KLSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jaW5jbHVkZSA8dGxoZWxwMzIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jcHJhZ21hIGNvbW1lbnQobGliLCAicHNhcGkiKQotCi0jaWZkZWYgX0RFQlVHCi0jZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob25fZC5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNykKLSNlbHNlCi0jZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEwKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uLmV4ZSIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE1KQotI2VuZGlmCi0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgSEFORExFICAgaHAsIGhzcCwgaHNtOyAvKiBwcm9jZXNzLCBzbmFwc2hvdCBwcm9jZXNzZXMsIHNuYXBzaG90IG1vZHVsZXMgKi8KLSAgICBEV09SRCAgICBkYWMsIG91cl9waWQ7Ci0gICAgc2l6ZV90ICAgbGVuOwotICAgIHdjaGFyX3QgIHBhdGhbTUFYX1BBVEgrMV07Ci0KLSAgICBNT0RVTEVFTlRSWTMyVyAgbWU7Ci0gICAgUFJPQ0VTU0VOVFJZMzJXIHBlOwotCi0gICAgbWUuZHdTaXplID0gc2l6ZW9mKE1PRFVMRUVOVFJZMzJXKTsKLSAgICBwZS5kd1NpemUgPSBzaXplb2YoUFJPQ0VTU0VOVFJZMzJXKTsKLQotICAgIG1lbXNldChwYXRoLCAwLCBNQVhfUEFUSCsxKTsKLQotICAgIG91cl9waWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7Ci0KLSAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIG91cl9waWQpOwotICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgewotICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBFbnVtZXJhdGUgb3ZlciB0aGUgbW9kdWxlcyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpbiBvcmRlciB0byBmaW5kCi0gICAgICoga2lsbF9wcm9jZXNzW19kXS5leGUsIHRoZW4gdGFrZSBhIG5vdGUgb2YgdGhlIGRpcmVjdG9yeSBpdCBsaXZlcyBpbi4KLSAgICAgKi8KLSAgICBkbyB7Ci0gICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIEtJTExfUFlUSE9OX0VYRSwgS0lMTF9QWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBsZW4gPSB3Y3NubGVuX3MobWUuc3pFeGVQYXRoLCBNQVhfUEFUSCkgLSBLSUxMX1BZVEhPTl9FWEVfTEVOOwotICAgICAgICB3Y3NuY3B5X3MocGF0aCwgTUFYX1BBVEgrMSwgbWUuc3pFeGVQYXRoLCBsZW4pOyAKLQotICAgICAgICBicmVhazsKLQotICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKLQotICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIHByaW50ZigiZmFpbGVkIHRvIGRpc2Nlcm4gZGlyZWN0b3J5IG9mIHJ1bm5pbmcgcHJvY2Vzc1xuIik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogVGFrZSBhIHNuYXBzaG90IG9mIHN5c3RlbSBwcm9jZXNzZXMuICBFbnVtZXJhdGUgb3ZlciB0aGUgc25hcHNob3QsCi0gICAgICogbG9va2luZyBmb3IgcHl0aG9uIHByb2Nlc3Nlcy4gIFdoZW4gd2UgZmluZCBvbmUsIHZlcmlmeSBpdCBsaXZlcwotICAgICAqIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3ZSBsaXZlIGluLiAgSWYgaXQgZG9lcywga2lsbCBpdC4gIElmIHdlJ3JlCi0gICAgICogdW5hYmxlIHRvIGtpbGwgaXQsIHRyZWF0IHRoaXMgYXMgYSBmYXRhbCBlcnJvciBhbmQgcmV0dXJuIDEuCi0gICAgICogCi0gICAgICogVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBpcyB0aGF0IHdlJ3JlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIAotICAgICAqIGJ1aWxkIHByb2Nlc3Mgb24gdGhlIGJhc2lzIHRoYXQgd2UnbGwgdGFrZSBjYXJlIG9mIGtpbGxpbmcgYW55Ci0gICAgICogcnVubmluZyBpbnN0YW5jZXMsIHN1Y2ggdGhhdCB0aGUgYnVpbGQgd29uJ3QgZW5jb3VudGVyIHBlcm1pc3Npb24KLSAgICAgKiBkZW5pZWQgZXJyb3JzIGR1cmluZyBsaW5raW5nLiBJZiB3ZSBjYW4ndCBraWxsIG9uZSBvZiB0aGUgcHJvY2Vzc2VzLAotICAgICAqIHdlIGNhbid0IHByb3ZpZGUgdGhpcyBhc3N1cmFuY2UsIGFuZCB0aGUgYnVpbGQgc2hvdWxkbid0IHN0YXJ0LgotICAgICAqLwotCi0gICAgaHNwID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQUFJPQ0VTUywgMCk7Ci0gICAgaWYgKGhzcCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsyXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGlmICghUHJvY2VzczMyRmlyc3RXKGhzcCwgJnBlKSkgewotICAgICAgICBwcmludGYoIlByb2Nlc3MzMkZpcnN0VyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGRhYyA9IFBST0NFU1NfUVVFUllfSU5GT1JNQVRJT04gfCBQUk9DRVNTX1ZNX1JFQUQgfCBQUk9DRVNTX1RFUk1JTkFURTsKLSAgICBkbyB7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKLSAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzRbX2RdLmRsbCksCi0gICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgotICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCi0gICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KLSAgICAgICAgICovCi0KLSAgICAgICAgaWYgKF93Y3NuaWNtcChwZS5zekV4ZUZpbGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBweXRob24gcHJvY2Vzcy4gKi8KLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8qIEl0J3MgYSBweXRob24gcHJvY2Vzcywgc28gZmlndXJlIG91dCB3aGljaCBkaXJlY3RvcnkgaXQncyBpbi4uLiAqLwotICAgICAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgLyogCi0gICAgICAgICAgICAgKiBJZiBvdXIgbW9kdWxlIHNuYXBzaG90IGZhaWxzICh3aGljaCB3aWxsIGhhcHBlbiBpZiB3ZSBkb24ndCBvd24KLSAgICAgICAgICAgICAqIHRoZSBwcm9jZXNzKSwganVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLiAgKEl0IHNlZW1zIGRpZmZlcmVudAotICAgICAgICAgICAgICogdmVyc2lvbnMgb2YgV2luZG93cyByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBmb3IgR2V0TGFzdEVycm9yKCkKLSAgICAgICAgICAgICAqIGluIHRoaXMgc2l0dWF0aW9uOyBpdCdzIGVhc2llciB0byBqdXN0IGlnbm9yZSBpdCBhbmQgbW92ZSBvbiB2cy4KLSAgICAgICAgICAgICAqIHN0b3BwaW5nIHRoZSBidWlsZCBmb3Igd2hhdCBjb3VsZCBiZSBhIGZhbHNlIHBvc2l0aXZlLikKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7Ci0gICAgICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAgICAgLyogV3JvbmcgbW9kdWxlLCB3ZSdyZSBsb29raW5nIGZvciBweXRob25bX2RdLmV4ZS4uLiAqLwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoX3djc25pY21wKHBhdGgsIG1lLnN6RXhlUGF0aCwgbGVuKSkKLSAgICAgICAgICAgICAgICAvKiBQcm9jZXNzIGRvZXNuJ3QgbGl2ZSBpbiBvdXIgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvKiBQeXRob24gcHJvY2VzcyByZXNpZGluZyBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LCBraWxsIGl0ISAgKi8KLSAgICAgICAgICAgIGhwID0gT3BlblByb2Nlc3MoZGFjLCBGQUxTRSwgcGUudGgzMlByb2Nlc3NJRCk7Ci0gICAgICAgICAgICBpZiAoIWhwKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJPcGVuUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIVRlcm1pbmF0ZVByb2Nlc3MoaHAsIDEpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJUZXJtaW5hdGVQcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLQotICAgIH0gd2hpbGUgKFByb2Nlc3MzMk5leHRXKGhzcCwgJnBlKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc3ApOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIHZpOiBzZXQgdHM9OCBzdz00IHN0cz00IGV4cGFuZHRhYiAqLwpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzQxMDdhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ia2lsbF9weXRob24iDQotCVByb2plY3RHVUlEPSJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi0JUm9vdE5hbWVzcGFjZT0ia2lsbF9weXRob24iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLlxraWxsX3B5dGhvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMgYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjRhNjRhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8aW8uaD4KLQotI2RlZmluZSBDTURfU0laRSA1MDAKLQotLyogVGhpcyBmaWxlIGNyZWF0ZXMgdGhlIGdldGJ1aWxkaW5mby5vIG9iamVjdCwgYnkgZmlyc3QKLSAgIGludm9raW5nIHN1YndjcmV2LmV4ZSAoaWYgZm91bmQpLCBhbmQgdGhlbiBpbnZva2luZyBjbC5leGUuCi0gICBBcyBhIHNpZGUgZWZmZWN0LCBpdCBtaWdodCBnZW5lcmF0ZSBQQ0J1aWxkXGdldGJ1aWxkaW5mbzIuYwotICAgYWxzby4gSWYgdGhpcyBpc24ndCBhIHN1YnZlcnNpb24gY2hlY2tvdXQsIG9yIHN1YndjcmV2IGlzbid0Ci0gICBmb3VuZCwgaXQgY29tcGlsZXMgLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBpbnN0ZWFkLgotCi0gICBDdXJyZW50bHksIHN1YndjcmV2LmV4ZSBpcyBmb3VuZCBmcm9tIHRoZSByZWdpc3RyeSBlbnRyaWVzCi0gICBvZiBUb3J0b2lzZVNWTi4KLQotICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHBsYWNlIGdldGJ1aWxkaW5mby5vIGludG8gdGhlIHByb3BlcgotICAgYmluYXJ5IGRpcmVjdG9yeS4gVGhpcyBpc24ndCBuZWNlc3NhcnksIGFzIHRoaXMgdG9vbCBpcwotICAgaW52b2tlZCBhcyBhIHByZS1saW5rIHN0ZXAgZm9yIHB5dGhvbmNvcmUsIHNvIHRoYXQgb3ZlcndyaXRlcwotICAgYW55IHByZXZpb3VzIGdldGJ1aWxkaW5mby5vLgotCi0gICBIb3dldmVyLCBpZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQKLSAgIGFzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGVyZSBhbnkgZ2V0YnVpbGRpbmZvMi5jIGFuZAotICAgZ2V0YnVpbGRpbmZvLm8gZmlsZXMgYXJlIHB1dC4gIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlCi0gICBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgYnVpbHQgaW4gcGFyYWxsZWwsIHRvIGF2b2lkIHRoZW0KLSAgIHRyYW1wbGluZyBlYWNoIG90aGVyJ3MgZmlsZXMuCi0KLSovCi0KLWludCBtYWtlX2J1aWxkaW5mbzIoY29uc3QgY2hhciAqdG1wcGF0aCkKLXsKLSAgICBzdHJ1Y3QgX3N0YXQgc3Q7Ci0gICAgSEtFWSBoVG9ydG9pc2U7Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFKzFdOwotICAgIERXT1JEIHR5cGUsIHNpemU7Ci0gICAgaWYgKF9zdGF0KCIuc3ZuIiwgJnN0KSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIC8qIEFsbG93IHN1cHByZXNzaW9uIG9mIHN1YndjcmV2LmV4ZSBpbnZvY2F0aW9uIGlmIGEgbm9fc3Vid2NyZXYgZmlsZSBpcyBwcmVzZW50LiAqLwotICAgIGlmIChfc3RhdCgibm9fc3Vid2NyZXYiLCAmc3QpID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChSZWdPcGVuS2V5KEhLRVlfTE9DQUxfTUFDSElORSwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MgJiYKLSAgICAgICAgUmVnT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIC8qIFRvcnRvaXNlIG5vdCBpbnN0YWxsZWQgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29tbWFuZFswXSA9ICciJzsgIC8qIHF1b3RlIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlICovCi0gICAgc2l6ZSA9IHNpemVvZihjb21tYW5kKSAtIDE7Ci0gICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoVG9ydG9pc2UsICJEaXJlY3RvcnkiLCAwLCAmdHlwZSwgY29tbWFuZCsxLCAmc2l6ZSkgIT0gRVJST1JfU1VDQ0VTUyB8fAotICAgICAgICB0eXBlICE9IFJFR19TWikKLSAgICAgICAgLyogUmVnaXN0cnkgY29ycnVwdGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiYmluXFxzdWJ3Y3Jldi5leGUiKTsKLSAgICBpZiAoX3N0YXQoY29tbWFuZCsxLCAmc3QpIDwgMCkKLSAgICAgICAgLyogc3Vid2NyZXYuZXhlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIgLi5cXC4uIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgXCIiKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7IC8qIHF1b3RlZCB0bXBwYXRoICovCi0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOwotCi0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1jb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OwotCi1pbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQotewotICAgIGludCByZXN1bHQgPSAwOwotICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOwotICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07Ci0KLSAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKLSAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgewotICAgICAgICBpbnQgcmM7Ci0KLSAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7Ci0gICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7Ci0gICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOwotICAgICAgICBpZiAocmMgPT0gMCkgewotICAgICAgICAgICAgRklMRSAqIGZwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKLSAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOwotCi0gICAgICAgICAgICAgICAgaWYgKGNwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCi17Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKLSAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7Ci0gICAgaW50IGRvX3VubGluaywgcmVzdWx0OwotICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7Ci0gICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoYXJnYyA+IDIpIHsKLSAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7Ci0gICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCi0gICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgotICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQotICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgotICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgotICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCi0gICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKLSAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOwotICAgIH0KLQotICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07Ci0gICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKLQotICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgewotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKLQotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7Ci0gICAgfQotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1Gb1wiIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm9cIiAtSS4uXFwuLlxcSW5jbHVkZSAtSS4uXFwuLlxcUEMiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gICAgaWYgKGRvX3VubGluaykgewotICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLSAgICAgICAgX3VubGluayhjb21tYW5kKTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNDA2NWQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCi0JUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFrZV9idWlsZGluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTFmZDI4Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTdmNjljLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDgNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjcHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCi0JUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQotCQkuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KLQkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZGVjaW1hbCIsICJfZGVjaW1hbC52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RpbXBvcnRtdWx0aXBsZSIsICJfdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvaiIsICJ7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjcHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9iejIiLCAiX2J6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbHptYSIsICJfbHptYS52Y3Byb2oiLCAie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3Byb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3Byb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjcHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjcHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGJ1ZmZlciIsICJfdGVzdGJ1ZmZlci52Y3Byb2oiLCAie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCi0JCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCVBHVXBkYXRlfFdpbjMyID0gUEdVcGRhdGV8V2luMzINCi0JCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NA0KLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCi0JCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcyBiL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWMxMTdiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBnaW5zdHJ1bWVudCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKE91dERpclBHSSkiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC1wZ2lcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJRmF2b3JTaXplT3JTcGVlZD0iMiINCi0JCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KLQkJRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz0iZmFsc2UiDQotCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQotCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCi0JCUVuYWJsZUNPTURBVEZvbGRpbmc9IjEiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSIyIg0KLQkJUHJvZmlsZUd1aWRlZERhdGFiYXNlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcJChUYXJnZXROYW1lKS5wZ2QiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Ik91dERpclBHSSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzIGIvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjZmMyZC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBndXBkYXRlIg0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1wiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPSIiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSI0Ig0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWQudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGMyMWUxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMiINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5weWQiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucGRiIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQlDb21tYW5kTGluZT0iIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWRfZC52c3Byb3BzIGIvUEMvVlM5LjAvcHlkX2QudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzYTMwYi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWRfZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZF9kIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjAiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMyINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnB5ZCINCi0JCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnBkYiINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJQ29tbWFuZExpbmU9IiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoU29sdXRpb25EaXIpcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGQyY2Q3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweWV4cGF0Ig0KLQlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTA5ODc1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5cHJvamVjdCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSINCi0JSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsgLi5cLi5cUEMiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjMyIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCVdhcm5pbmdMZXZlbD0iMyINCi0JCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQlDb21waWxlQXM9IjAiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIkKE91dERpcikiDQotCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCVN1YlN5c3RlbT0iMiINCi0JCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxJbmNsdWRlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzQiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKVxweXRob24uZXhlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJleHRlcm5hbHNEaXIiDQotCQlWYWx1ZT0iLi5cLi5cLi4iDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InNxbGl0ZTNEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjguMy4xIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJiejJEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJsem1hRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuNSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0ib3BlbnNzbERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0ayINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGs2NCINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGtMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1Zy5saWIgJCh0Y2x0a0RpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NExpYiINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0azY0RGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWJEZWJ1ZyINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGs2NERpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwN2RlMjEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHl0aG9uLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0ie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbl9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjEwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uLmljbyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDczMzNiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob24zZGxsIg0KLQlQcm9qZWN0R1VJRD0iezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQotCVJvb3ROYW1lc3BhY2U9InB5dGhvbjNkbGwiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zLmRlZiINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbjNkbGwuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSINCi0JCQk+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXYiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjA0NzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxODc3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob25jb3JlIg0KLQlQcm9qZWN0R1VJRD0ie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVJvb3ROYW1lc3BhY2U9InB5dGhvbmNvcmUiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IERlYnVnICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IERlYnVnICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJnF1b3Q7JChJbnREaXIpXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJnF1b3Q7JChJbnREaXIpZ2V0YnVpbGRpbmZvLm8mcXVvdDsiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkluY2x1ZGUiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhYnN0cmFjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhY2N1LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJpdHNldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2V2YWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlY3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGlsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRhdGV0aW1lLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGVycmNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXZhbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGV1dGlscy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtaW5pdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGltcG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRyY2hlY2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWFyc2hhbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmppbXBsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9wY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvc2RlZnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGFyc2V0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWFyZW5hLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZGVidWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHllcnJvcnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlleHBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWZwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWdldG9wdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGltZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3JvLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWVtLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RydG9kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR0b2EuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aG9ucnVuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhyZWFkLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNldG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0c2VxLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5bXRhYmxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5c21vZHVsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0aW1lZnVuY3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdG9rZW4uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVjbmhhc2guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJNb2R1bGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3N2LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9qc29uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xzcHJvZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcGlja2xlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3RydWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93aW5hcGkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xnY21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9vcGVyYXRvci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNyZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmVfY29uc3RhbnRzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNyZV9saWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4c3VidHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iX2lvIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemxpYi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJjamtjb2RlY3MiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJPYmplY3RzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWNjdS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZW51bW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZpbGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnVuY29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xnZW5vYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcaXRlcm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxvbmdvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxyZXBsYWNlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RydWN0c2VxLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUGFyc2VyIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxhY2NlbGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZmlyc3RzZXRzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIxLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbGlzdG5vZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG15cmVhZGxpbmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxub2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2V0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlBDIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnJlZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcY29uZmlnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZXJybWFwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xnZXRwYXRocC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUHl0aG9uIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc2RsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvZGVjcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvbXBpbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmaWxldXRpbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGFyZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldG9wdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0dmVyc2lvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdyYW1pbml0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtb2RzdXBwb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzbnByaW50Zi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c3RydG91bC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHBlZXBob2xlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlhcmVuYS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5Y3R5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5bWF0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGltZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RhdGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RydG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0gCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccmFuZG9tLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3ltdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeXNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWRfbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob253LnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVjMDRiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNjE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJweXRob253Ig0KLQlQcm9qZWN0R1VJRD0ie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253X2QuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMgYi9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGVmOTAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InJlbGVhc2UiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJLaWxsUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbi5leGUiDQotCS8+CQ0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zZWxlY3QudmNwcm9qIGIvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM3ZmQ5Ny4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzZWxlY3QiDQotCVByb2plY3RHVUlEPSJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUm9vdE5hbWVzcGFjZT0ic2VsZWN0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjhjMzI4Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0ie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVJvb3ROYW1lc3BhY2U9InNxbGl0ZTMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKHNxbGl0ZTNEaXIpJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzIGIvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTAyZGY1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iU1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCkiDQotCQlXYXJuaW5nTGV2ZWw9IjEiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9zc2wudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzBlODc3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InNzbCINCi0JUHJvamVjdEdVSUQ9IntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlSb290TmFtZXNwYWNlPSJzc2wiDQotCUtleXdvcmQ9Ik1ha2VGaWxlUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjZmZjcyLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0idW5pY29kZWRhdGEiDQotCVByb2plY3RHVUlEPSJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUm9vdE5hbWVzcGFjZT0idW5pY29kZWRhdGEiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdkYmYyOS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9IndpbnNvdW5kIg0KLQlQcm9qZWN0R1VJRD0iezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVJvb3ROYW1lc3BhY2U9IndpbnNvdW5kIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAveDY0LnZzcHJvcHMgYi9QQy9WUzkuMC94NjQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA2ZjQ3MC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC94NjQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJhbWQ2NCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKVxhbWQ2NFwiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0dTLSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lONjQ7X01fWDY0Ig0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKEhPU1RfUFlUSE9OKSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvaiBiL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYWFhZDYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDQxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ieHhsaW1pdGVkIg0KLQlQcm9qZWN0R1VJRD0ie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQotCVJvb3ROYW1lc3BhY2U9Inh4bGltaXRlZCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRztfV0lOMzI7X1dJTkRMTDtQeV9MSU1JVEVEX0FQSTskKE5PSU5IRVJJVCkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfTElNSVRFRF9BUEkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfTElNSVRFRF9BUEkiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4bGltaXRlZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oIGIvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKaW5kZXggMzFhNzgwNS4uNTBmZjE1YyAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9hcmNoaXZlLmgKQEAgLTEsMTAgKzEsOSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCiAjcHJhZ21hIHBhY2soMSkKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qIGIvUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiNDc0ZQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTAzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+d2luaW5zdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cLi5cUENCdWlsZFxweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKFB5U291cmNlUGF0aClsaWJcZGlzdHV0aWxzXGNvbW1hbmRcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxUYXJnZXROYW1lPndpbmluc3QtJChWaXN1YWxTdHVkaW9WZXJzaW9uKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4kKFRhcmdldE5hbWUpLWFtZDY0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXRFeHQ+LmV4ZTwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcil3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClQQ1xiZGlzdF93aW5pbnN0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJleHRyYWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJpbnN0YWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iYXJjaGl2ZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Imluc3RhbGwucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9IlB5dGhvblBvd2VyZWQuYm1wIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzIGIvUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpyZW5hbWUgdG8gUEMvYmRpc3Rfd2luaW5zdC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQgYi9QQy9iZGlzdF93aW5pbnN0L2J1aWxkLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWY1NjVjCi0tLSAvZGV2L251bGwKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQKQEAgLTAsMCArMSwyMiBAQAorQGVjaG8gb2ZmDQorc2V0bG9jYWwNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSV+ZHAwLi5cLi5cUENCdWlsZFwNCisNCisNCitlY2hvIEJ1aWxkaW5nIExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LXh4LjAuZXhlDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQoraWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKw0KK21zYnVpbGQgIiVEJWJkaXN0X3dpbmluc3QudmN4cHJvaiIgIi9wOlNvbHV0aW9uRGlyPSVQQ0JVSUxEJVwiIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMg0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCisNCitlY2hvIEJ1aWxkaW5nIExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LXh4LjAtYW1kNjQuZXhlDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2X2FtZDY0DQoraWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKw0KK21zYnVpbGQgIiVEJWJkaXN0X3dpbmluc3QudmN4cHJvaiIgIi9wOlNvbHV0aW9uRGlyPSVQQ0JVSUxEJVwiIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT14NjQNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYyBiL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCmluZGV4IGFlYzhlZGEuLjAyNDlkOWYgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvZXh0cmFjdC5jCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKaW5kZXggZjRjZjM0OC4uZjM5YjM4MSAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKQEAgLTEsMTAgKzEsOSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCiAvKgpAQCAtMTIxNiw3ICsxMjE1LDcgQEAKIAogI2luY2x1ZGUgPHByc2h0Lmg+CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEludHJvRGxnUHJvYyhIV05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIExQTk1IRFIgbHBubTsKQEAgLTE1NjUsNyArMTU2NCw3IEBACiAgICAgcmV0dXJuIG9sZF9zY2hlbWU7CiB9CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIFNlbGVjdFB5dGhvbkRsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0xODY3LDcgKzE4NjYsNyBAQAogICAgICAgICBmY2xvc2UobG9nZmlsZSk7CiB9CiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEluc3RhbGxGaWxlc0RsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0yMDIyLDcgKzIwMjEsNyBAQAogfQogCiAKLUJPT0wgQ0FMTEJBQ0sKK0lOVF9QVFIgQ0FMTEJBQ0sKIEZpbmlzaGVkRGxnUHJvYyhIV05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIExQTk1IRFIgbHBubTsKQEAgLTIxOTgsMjMgKzIxOTcsNiBAQAogICAgIHJldHVybiBUUlVFOwogfQogCi0vLyBSZXR1cm5zIFRSVUUgaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIFVBQy4KLUJPT0wgUGxhdGZvcm1TdXBwb3J0c1VBQygpCi17Ci0gICAgLy8gTm90ZSB0aGF0IHdpbjJrIGRvZXMgc2VlbSB0byBzdXBwb3J0IFNoZWxsRXhlY3V0ZSB3aXRoICdydW5hcycsCi0gICAgLy8gYnV0IGRvZXMgKm5vdCogc3VwcG9ydCBJc1VzZXJBbkFkbWluIC0gc28gd2UganVzdCBwcmV0ZW5kIHRoaW5ncwotICAgIC8vIG9ubHkgd29yayBvbiBYUCBhbmQgbGF0ZXIuCi0gICAgQk9PTCBiSXNXaW5kb3dzWFBvckxhdGVyOwotICAgIE9TVkVSU0lPTklORk8gd2ludmVyaW5mbzsKLSAgICB3aW52ZXJpbmZvLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyaW5mbyk7Ci0gICAgaWYgKCFHZXRWZXJzaW9uRXgoJndpbnZlcmluZm8pKQotICAgICAgICByZXR1cm4gRkFMU0U7IC8vIHNvbWV0aGluZyBiYWQgaGFzIGdvbmUgd3JvbmcKLSAgICBiSXNXaW5kb3dzWFBvckxhdGVyID0KLSAgICAgICAoICh3aW52ZXJpbmZvLmR3TWFqb3JWZXJzaW9uID4gNSkgfHwKLSAgICAgICAoICh3aW52ZXJpbmZvLmR3TWFqb3JWZXJzaW9uID09IDUpICYmICh3aW52ZXJpbmZvLmR3TWlub3JWZXJzaW9uID49IDEpICkpOwotICAgIHJldHVybiBiSXNXaW5kb3dzWFBvckxhdGVyOwotfQotCiAvLyBTcGF3biBvdXJzZWxmIGFzIGFuIGVsZXZhdGVkIGFwcGxpY2F0aW9uLiAgT24gZmFpbHVyZSwgYSBtZXNzYWdlIGlzCiAvLyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgLSBidXQgdGhpcyBhcHAgd2lsbCBhbHdheXMgdGVybWluYXRlLCBldmVuCiAvLyBvbiBlcnJvci4KQEAgLTIyNzAsNyArMjI1Miw3IEBACiAKICAgICAvLyBTZWUgaWYgd2UgbmVlZCB0byBkbyB0aGUgVmlzdGEgVUFDIG1hZ2ljLgogICAgIGlmIChzdHJjbXAodXNlcl9hY2Nlc3NfY29udHJvbCwgImZvcmNlIik9PTApIHsKLSAgICAgICAgaWYgKFBsYXRmb3JtU3VwcG9ydHNVQUMoKSAmJiAhTXlJc1VzZXJBbkFkbWluKCkpIHsKKyAgICAgICAgaWYgKCFNeUlzVXNlckFuQWRtaW4oKSkgewogICAgICAgICAgICAgU3Bhd25VQUMoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0yMjc4LDcgKzIyNjAsNyBAQAogICAgIH0gZWxzZSBpZiAoc3RyY21wKHVzZXJfYWNjZXNzX2NvbnRyb2wsICJhdXRvIik9PTApIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgbG9va3MgbGlrZSB3ZSBuZWVkIFVBQyBjb250cm9sLCBiYXNlZAogICAgICAgICAvLyBvbiBob3cgUHl0aG9uIGl0c2VsZiB3YXMgaW5zdGFsbGVkLgotICAgICAgICBpZiAoUGxhdGZvcm1TdXBwb3J0c1VBQygpICYmICFNeUlzVXNlckFuQWRtaW4oKSAmJiBOZWVkQXV0b1VBQygpKSB7CisgICAgICAgIGlmICghTXlJc1VzZXJBbkFkbWluKCkgJiYgTmVlZEF1dG9VQUMoKSkgewogICAgICAgICAgICAgU3Bhd25VQUMoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMKaW5kZXggZDAxOGI0OC4uZGZhMmZmYyAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5yYwpAQCAtMSw5NyArMSwyMCBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCi0vL01pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCi0vLworI2luY2x1ZGUgPHdpbnJlcy5oPgogI2luY2x1ZGUgInJlc291cmNlLmgiCiAKLSNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KLS8vCi0jaW5jbHVkZSAiYWZ4cmVzLmgiCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gTmV1dHJhbCByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfTkVVKQotI2lmZGVmIF9XSU4zMgogTEFOR1VBR0UgTEFOR19ORVVUUkFMLCBTVUJMQU5HX05FVVRSQUwKICNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBCaXRtYXAKLS8vCiAKIElEQl9CSVRNQVAgICAgICAgICAgICAgIEJJVE1BUCAgRElTQ0FSREFCTEUgICAgICJQeXRob25Qb3dlcmVkLmJtcCIKLSNlbmRpZiAgICAvLyBOZXV0cmFsIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VybWFuIChHZXJtYW55KSByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfREVVKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfR0VSTUFOCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFRFWFRJTkNMVURFCi0vLwotCi0xIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAicmVzb3VyY2UuaFwwIgotRU5ECi0KLTIgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUgCi1CRUdJTgotICAgICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgotICAgICJcMCIKLUVORAotCi0zIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKLQotI2VuZGlmICAgIC8vIEdlcm1hbiAoR2VybWFueSkgcmVzb3VyY2VzCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5HX0VOR0xJU0hfVVMKLSNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBEaWFsb2cKLS8vCi0KIElERF9JTlRSTyBESUFMT0dFWCAwLCAwLCAzNzksIDE3OAogU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRCB8IFdTX0NBUFRJT04KIENBUFRJT04gIlNldHVwIgpAQCAtMTUyLDc4ICs3NSwzIEBACiAgICAgRURJVFRFWFQgICAgICAgIElEQ19JTkZPLDEyNSw0MCwyNDcsMTMxLEVTX01VTFRJTElORSB8IEVTX1JFQURPTkxZIHwgCiAgICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19IU0NST0xMIHwgTk9UIFdTX1RBQlNUT1AKIEVORAotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gREVTSUdOSU5GTwotLy8KLQotI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKLUdVSURFTElORVMgREVTSUdOSU5GTyBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgSUREX0lOVFJPLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDMxCi0gICAgRU5ECi0KLSAgICBJRERfU0VMRUNUUFlUSE9OLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi0KLSAgICBJRERfSU5TVEFMTEZJTEVTLCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA3Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzEKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi0KLSAgICBJRERfRklOSVNIRUQsIERJQUxPRwotICAgIEJFR0lOCi0gICAgICAgIExFRlRNQVJHSU4sIDYKLSAgICAgICAgUklHSFRNQVJHSU4sIDM3MgotICAgICAgICBWRVJUR1VJREUsIDEyNQotICAgICAgICBWRVJUR1VJREUsIDM3MgotICAgICAgICBUT1BNQVJHSU4sIDcKLSAgICAgICAgQk9UVE9NTUFSR0lOLCAxNzEKLSAgICAgICAgSE9SWkdVSURFLCA4Ci0gICAgICAgIEhPUlpHVUlERSwgNDEKLSAgICBFTkQKLUVORAotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKLQotI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4KLS8vCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRAotCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmggYi9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmgKaW5kZXggMzViYTNjMi4uODZhZWFiYiAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvcmVzb3VyY2UuaApAQCAtMSwxNiArMSwxMSBAQAogLyoKLSAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBXSU5JTlNULTYuRVhFIE1VU1QgQkUgUkVDT01QSUxFRAotICBXSVRIIFRIRSBNU1ZDNiBXSU5JTlNULkRTVyBXT1JLU1BBQ0UgRklMRSBNQU5VQUxMWSwgQU5EIFdJTklOU1QtNy4xLkVYRSBNVVNUCi0gIEJFIFJFQ09NUElMRUQgV0lUSCBUSEUgTVNWQyAyMDAzLk5FVCBXSU5JTlNULTcuMS5WQ1BST0ogRklMRSBNQU5VQUxMWS4KKyAgSU1QT1JUQU5UIE5PVEU6IElGIFRISVMgRklMRSBJUyBDSEFOR0VELCBQQ0JVSUxEXEJESVNUX1dJTklOU1QuVkNYUFJPSiBNVVNUCisgIEJFIFJFQlVJTFQgQVMgV0VMTC4KIAotICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTlRPIFBZVEhPTiBDVlMsIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTCi0gIE1VU1QgQkUgQ0hFQ0tFRCBJTiBBUyBXRUxMIQorICBJRiBDSEFOR0VTIFRPIFRISVMgRklMRSBBUkUgQ0hFQ0tFRCBJTiwgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMgTVVTVCBCRQorICBDSEVDS0VEIElOIEFTIFdFTEwhCiAqLwogCi0vL3t7Tk9fREVQRU5ERU5DSUVTfX0KLS8vIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCi0vLyBVc2VkIGJ5IGluc3RhbGwucmMKLS8vCiAjZGVmaW5lIElERF9ESUFMT0cxICAgICAgICAgICAgICAgICAgICAgMTAxCiAjZGVmaW5lIElEQl9CSVRNQVAxICAgICAgICAgICAgICAgICAgICAgMTAzCiAjZGVmaW5lIElERF9JTlRSTyAgICAgICAgICAgICAgICAgICAgICAgMTA3CkBAIC0zNCwxNCArMjksMyBAQAogI2RlZmluZSBJRENfQlVJTERfSU5GTyAgICAgICAgICAgICAgICAgIDEwMjQKICNkZWZpbmUgSURDX0JJVE1BUCAgICAgICAgICAgICAgICAgICAgICAxMDI1CiAjZGVmaW5lIElEQ19PVEhFUlBZVEhPTiAgICAgICAgICAgICAgICAgMTAyNgotCi0vLyBOZXh0IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cwotLy8gCi0jaWZkZWYgQVBTVFVESU9fSU5WT0tFRAotI2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0jZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTEyCi0jZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgNDAwMDEKLSNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDI4Ci0jZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTAxCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4gYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwNWQyNS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDANCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbmluc3QiLCAid2luaW5zdC03LjEudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWcgPSBEZWJ1Zw0KLQkJUmVsZWFzZSA9IFJlbGVhc2UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGRhYWU5Li4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVNjY1Byb2plY3ROYW1lPSIiDQotCVNjY0xvY2FsUGF0aD0iIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4zXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMS5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9IlRSVUUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlwuLlx6bGliLTEuMi4xIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4xXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMV9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iZXh0cmFjdC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5yYyI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IlB5dGhvblBvd2VyZWQuYm1wIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTguc2xuIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTguc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWYxNmNmLi4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDkuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwNQ0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luaW5zdCIsICJ3aW5pbnN0LTgudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0N2QxYi4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Indpbmluc3QiDQotCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUm9vdE5hbWVzcGFjZT0id2luaW5zdCINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLXJlbGVhc2UiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtOC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzEudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtZGVidWcvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJT2JqZWN0RmlsZT0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC04X2QuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImV4dHJhY3QuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJ6bGliIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImFyY2hpdmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IlB5dGhvblBvd2VyZWQuYm1wIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3AgYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTg1NTY5Li4wMDAwMDAwCi0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ3aW5pbnN0IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIgMHgwMTAxDQotDQotQ0ZHPXdpbmluc3QgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAid2luaW5zdC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAid2luaW5zdC5tYWsiIENGRz0id2luaW5zdCAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJ3aW5pbnN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgIndpbmluc3QgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gIndpbmluc3QgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0ZW1wLXJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08xIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi5cLi5cLi5cemxpYi0xLjIuMyIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tZGxnMzIubGliIG9sZTMyLmxpYiBjb21jdGwzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IkxJQkMiIC9vdXQ6Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYuMC5leGUiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIndpbmluc3QgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGVtcC1kZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9aNyAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLlwuLlwuLlx6bGliLTEuMi4xIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRlIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwNyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tZGxnMzIubGliIG9sZTMyLmxpYiBjb21jdGwzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvcGRiOm5vbmUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoiTElCQyIgL291dDoiLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtNi4wX2QuZXhlIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAid2luaW5zdCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJ3aW5pbnN0IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cZXh0cmFjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5caW5zdGFsbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5caW5zdGFsbC5yYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9LlxhcmNoaXZlLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXFB5dGhvblBvd2VyZWQuYm1wDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHN3IGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjNjZhYS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHN3CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gV29ya3NwYWNlIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAid2luaW5zdCI9Llx3aW5pbnN0LmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1HbG9iYWw6DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTwzPg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZTZlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtMCwwICsxLDU1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKG1zdmNydF9oZWFwbWluX19kb2NfXywKKyJoZWFwbWluKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNaW5pbWl6ZSB0aGUgbWFsbG9jKCkgaGVhcC5cbiIKKyJcbiIKKyJGb3JjZSB0aGUgbWFsbG9jKCkgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzXG4iCisidG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIE9TRXJyb3IuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0hFQVBNSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImhlYXBtaW4iLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2hlYXBtaW4sIE1FVEhfTk9BUkdTLCBtc3ZjcnRfaGVhcG1pbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2hlYXBtaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG1zdmNydF9oZWFwbWluX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9sb2NraW5nX19kb2NfXywKKyJsb2NraW5nKCRtb2R1bGUsIGZkLCBtb2RlLCBuYnl0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciBmZCBmcm9tIHRoZSBDIHJ1bnRpbWUuXG4iCisiXG4iCisiUmFpc2VzIElPRXJyb3Igb24gZmFpbHVyZS4gVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tXG4iCisidGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgbmJ5dGVzIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZFxuIgorInRoZSBlbmQgb2YgdGhlIGZpbGUuIG1vZGUgbXVzdCBiZSBvbmUgb2YgdGhlIExLXyogY29uc3RhbnRzIGxpc3RlZFxuIgorImJlbG93LiBNdWx0aXBsZSByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dFxuIgorIm1heSBub3Qgb3ZlcmxhcC4gQWRqYWNlbnQgcmVnaW9ucyBhcmUgbm90IG1lcmdlZDsgdGhleSBtdXN0IGJlIHVubG9ja2VkXG4iCisiaW5kaXZpZHVhbGx5LiIpOworCisjZGVmaW5lIE1TVkNSVF9MT0NLSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NraW5nIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9sb2NraW5nLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9sb2NraW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfbG9ja2luZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUsIGxvbmcgbmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9sb2NraW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgbW9kZTsKKyAgICBsb25nIG5ieXRlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlsOmxvY2tpbmciLAorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3NldG1vZGVfX2RvY19fLAorInNldG1vZGUoJG1vZHVsZSwgZmQsIG1vZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGxpbmUtZW5kIHRyYW5zbGF0aW9uIG1vZGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiVG8gc2V0IGl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXRcbiIKKyJzaG91bGQgYmUgb3MuT19CSU5BUlkuXG4iCisiXG4iCisiUmV0dXJuIHZhbHVlIGlzIHRoZSBwcmV2aW91cyBtb2RlLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRtb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9zZXRtb2RlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9zZXRtb2RlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfc2V0bW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9zZXRtb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgZmxhZ3M7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRtb2RlIiwKKyAgICAgICAgJmZkLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfXywKKyJvcGVuX29zZmhhbmRsZSgkbW9kdWxlLCBoYW5kbGUsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBmaWxlIGhhbmRsZSBoYW5kbGUuXG4iCisiXG4iCisiVGhlIGZsYWdzIHBhcmFtZXRlciBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIG9zLk9fQVBQRU5ELCBvcy5PX1JET05MWSxcbiIKKyJhbmQgb3MuT19URVhULiBUaGUgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyXG4iCisidG8gb3MuZmRvcGVuKCkgdG8gY3JlYXRlIGEgZmlsZSBvYmplY3QuIik7CisKKyNkZWZpbmUgTVNWQ1JUX09QRU5fT1NGSEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuX29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgbXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnQgZmxhZ3M7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiX1B5X1BBUlNFX0lOVFBUUiJpOm9wZW5fb3NmaGFuZGxlIiwKKyAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2dldF9vc2ZoYW5kbGVfX2RvY19fLAorImdldF9vc2ZoYW5kbGUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuIgorIlxuIgorIlJhaXNlcyBJT0Vycm9yIGlmIGZkIGlzIG5vdCByZWNvZ25pemVkLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBQeV9pbnRwdHJfdAorbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldF9vc2ZoYW5kbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfaW50cHRyX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKG1vZHVsZSwgZmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfa2JoaXRfX2RvY19fLAorImtiaGl0KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdHJ1ZSBpZiBhIGtleXByZXNzIGlzIHdhaXRpbmcgdG8gYmUgcmVhZC4iKTsKKworI2RlZmluZSBNU1ZDUlRfS0JISVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImtiaGl0IiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9rYmhpdCwgTUVUSF9OT0FSR1MsIG1zdmNydF9rYmhpdF9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X2tiaGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfa2JoaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2tiaGl0X2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRjaF9fZG9jX18sCisiZ2V0Y2goJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYSBrZXlwcmVzcyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIGFzIGEgYnl0ZSBzdHJpbmcuXG4iCisiXG4iCisiTm90aGluZyBpcyBlY2hvZWQgdG8gdGhlIGNvbnNvbGUuIFRoaXMgY2FsbCB3aWxsIGJsb2NrIGlmIGEga2V5cHJlc3MgaXNcbiIKKyJub3QgYWxyZWFkeSBhdmFpbGFibGUsIGJ1dCB3aWxsIG5vdCB3YWl0IGZvciBFbnRlciB0byBiZSBwcmVzc2VkLiBJZiB0aGVcbiIKKyJwcmVzc2VkIGtleSB3YXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGtleSwgdGhpcyB3aWxsIHJldHVybiBcJ1xcMDAwXCcgb3JcbiIKKyJcJ1xceGUwXCc7IHRoZSBuZXh0IGNhbGwgd2lsbCByZXR1cm4gdGhlIGtleWNvZGUuIFRoZSBDb250cm9sLUMga2V5cHJlc3NcbiIKKyJjYW5ub3QgYmUgcmVhZCB3aXRoIHRoaXMgZnVuY3Rpb24uIik7CisKKyNkZWZpbmUgTVNWQ1JUX0dFVENIX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0Y2gsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfZ2V0Y2hfX2RvY19ffSwKKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIHNbMV07CisKKyAgICBzWzBdID0gbXN2Y3J0X2dldGNoX2ltcGwobW9kdWxlKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXR3Y2hfX2RvY19fLAorImdldHdjaCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2goKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldHdjaCwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXR3Y2hfX2RvY19ffSwKKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9nZXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB3Y2hhcl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldHdjaF9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRjaGVfX2RvY19fLAorImdldGNoZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2ltaWxhciB0byBnZXRjaCgpLCBidXQgdGhlIGtleXByZXNzIHdpbGwgYmUgZWNob2VkIGlmIHBvc3NpYmxlLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRDSEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGNoZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0Y2hlLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldGNoZV9fZG9jX199LAorCitzdGF0aWMgaW50Cittc3ZjcnRfZ2V0Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0Y2hlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBzWzFdOworCisgICAgc1swXSA9IG1zdmNydF9nZXRjaGVfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2dldHdjaGVfX2RvY19fLAorImdldHdjaGUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoZSgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRXQ0hFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR3Y2hlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXR3Y2hlLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldHdjaGVfX2RvY19ffSwKKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0d2NoZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHdjaGFyX3QgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfZ2V0d2NoZV9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9wdXRjaF9fZG9jX18sCisicHV0Y2goJG1vZHVsZSwgY2hhciwgLylcbiIKKyItLVxuIgorIlxuIgorIlByaW50IHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIHRoZSBjb25zb2xlIHdpdGhvdXQgYnVmZmVyaW5nLiIpOworCisjZGVmaW5lIE1TVkNSVF9QVVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsicHV0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3B1dGNoLCBNRVRIX08sIG1zdmNydF9wdXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3B1dGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXRjaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgY2hhcl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9wdXR3Y2hfX2RvY19fLAorInB1dHdjaCgkbW9kdWxlLCB1bmljb2RlX2NoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiBwdXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9QVVRXQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dHdjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfcHV0d2NoLCBNRVRIX08sIG1zdmNydF9wdXR3Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdW5pY29kZV9jaGFyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3B1dHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3VuZ2V0Y2hfX2RvY19fLAorInVuZ2V0Y2goJG1vZHVsZSwgY2hhciwgLylcbiIKKyItLVxuIgorIlxuIgorIk9wcG9zaXRlIG9mIGdldGNoLlxuIgorIlxuIgorIkNhdXNlIHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIGJlIFwicHVzaGVkIGJhY2tcIiBpbnRvIHRoZVxuIgorImNvbnNvbGUgYnVmZmVyOyBpdCB3aWxsIGJlIHRoZSBuZXh0IGNoYXJhY3RlciByZWFkIGJ5XG4iCisiZ2V0Y2goKSBvciBnZXRjaGUoKS4iKTsKKworI2RlZmluZSBNU1ZDUlRfVU5HRVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsidW5nZXRjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfdW5nZXRjaCwgTUVUSF9PLCBtc3ZjcnRfdW5nZXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjaGFyIGNoYXJfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIGNoYXJfdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X3VuZ2V0d2NoX19kb2NfXywKKyJ1bmdldHdjaCgkbW9kdWxlLCB1bmljb2RlX2NoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiB1bmdldGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuIik7CisKKyNkZWZpbmUgTVNWQ1JUX1VOR0VUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJ1bmdldHdjaCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfdW5nZXR3Y2gsIE1FVEhfTywgbXN2Y3J0X3VuZ2V0d2NoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfdW5nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldHdjaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB1bmljb2RlX2NoYXI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9fZG9jX18sCisiQ3J0U2V0UmVwb3J0RmlsZSgkbW9kdWxlLCB0eXBlLCBmaWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydEZpbGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJDcnRTZXRSZXBvcnRGaWxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9DcnRTZXRSZXBvcnRGaWxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9DcnRTZXRSZXBvcnRGaWxlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdHlwZTsKKyAgICBpbnQgZmlsZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydEZpbGUiLAorICAgICAgICAmdHlwZSwgJmZpbGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRGaWxlX2ltcGwobW9kdWxlLCB0eXBlLCBmaWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX0RFQlVHKSAqLworCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9fZG9jX18sCisiQ3J0U2V0UmVwb3J0TW9kZSgkbW9kdWxlLCB0eXBlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydE1vZGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJDcnRTZXRSZXBvcnRNb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9DcnRTZXRSZXBvcnRNb2RlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9DcnRTZXRSZXBvcnRNb2RlX19kb2NfX30sCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdHlwZTsKKyAgICBpbnQgbW9kZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydE1vZGUiLAorICAgICAgICAmdHlwZSwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRNb2RlX2ltcGwobW9kdWxlLCB0eXBlLCBtb2RlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX0RFQlVHKSAqLworCisjaWYgZGVmaW5lZChfREVCVUcpCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfc2V0X2Vycm9yX21vZGVfX2RvY19fLAorInNldF9lcnJvcl9tb2RlKCRtb2R1bGUsIG1vZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcmFwcGVyIGFyb3VuZCBfc2V0X2Vycm9yX21vZGUuXG4iCisiXG4iCisiT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2Vycm9yX21vZGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3NldF9lcnJvcl9tb2RlLCBNRVRIX08sIG1zdmNydF9zZXRfZXJyb3JfbW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3NldF9lcnJvcl9tb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworUHlEb2NfU1RSVkFSKG1zdmNydF9TZXRFcnJvck1vZGVfX2RvY19fLAorIlNldEVycm9yTW9kZSgkbW9kdWxlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgU2V0RXJyb3JNb2RlLiIpOworCisjZGVmaW5lIE1TVkNSVF9TRVRFUlJPUk1PREVfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldEVycm9yTW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfU2V0RXJyb3JNb2RlLCBNRVRIX08sIG1zdmNydF9TZXRFcnJvck1vZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9TZXRFcnJvck1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1bnNpZ25lZCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IG1vZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X1NldEVycm9yTW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9DUlRTRVRSRVBPUlRGSUxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9DUlRTRVRSRVBPUlRNT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNjYxM2QzMTE5YTFmZDQ0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiMzMyZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCkBAIC0wLDAgKzEsMTA1OSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9fZG9jX18sCisiQ2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgdGhlIHVuZGVybHlpbmcgV2luZG93cyBoYW5kbGUuXG4iCisiXG4iCisiSWYgdGhlIGhhbmRsZSBpcyBhbHJlYWR5IGNsb3NlZCwgbm8gZXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2UiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX0Nsb3NlLCBNRVRIX05PQVJHUywgd2lucmVnX0hLRVlUeXBlX0Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0Nsb3NlKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gd2lucmVnX0hLRVlUeXBlX0Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfRGV0YWNoX19kb2NfXywKKyJEZXRhY2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEZXRhY2hlcyB0aGUgV2luZG93cyBoYW5kbGUgZnJvbSB0aGUgaGFuZGxlIG9iamVjdC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgaGFuZGxlIGJlZm9yZSBpdCBpcyBkZXRhY2hlZC4gIElmIHRoZVxuIgorImhhbmRsZSBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGlzIHdpbGwgcmV0dXJuIHplcm8uXG4iCisiXG4iCisiQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgaGFuZGxlIGlzIGVmZmVjdGl2ZWx5IGludmFsaWRhdGVkLFxuIgorImJ1dCB0aGUgaGFuZGxlIGlzIG5vdCBjbG9zZWQuICBZb3Ugd291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4geW91XG4iCisibmVlZCB0aGUgdW5kZXJseWluZyB3aW4zMiBoYW5kbGUgdG8gZXhpc3QgYmV5b25kIHRoZSBsaWZldGltZSBvZiB0aGVcbiIKKyJoYW5kbGUgb2JqZWN0LiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9ERVRBQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7IkRldGFjaCIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfRGV0YWNoLCBNRVRIX05PQVJHUywgd2lucmVnX0hLRVlUeXBlX0RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKFB5SEtFWU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfRGV0YWNoKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gd2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19fZG9jX18sCisiX19lbnRlcl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FTlRFUl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZW50ZXJfXywgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX19fX2RvY19ffSwKKworc3RhdGljIFB5SEtFWU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9fX2VudGVyX18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5SEtFWU9iamVjdCAqX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoc2VsZik7CisgICAgcmV0dXJuX3ZhbHVlID0gKFB5T2JqZWN0ICopX3JldHVybl92YWx1ZTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19fLAorIl9fZXhpdF9fKCRzZWxmLCAvLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9fX0VYSVRfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmV4Y190eXBlOworICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CisgICAgUHlPYmplY3QgKnRyYWNlYmFjazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DbG9zZUtleV9fZG9jX18sCisiQ2xvc2VLZXkoJG1vZHVsZSwgaGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlcyBhIHByZXZpb3VzbHkgb3BlbmVkIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGhrZXlcbiIKKyIgICAgQSBwcmV2aW91c2x5IG9wZW5lZCBrZXkuXG4iCisiXG4iCisiTm90ZSB0aGF0IGlmIHRoZSBrZXkgaXMgbm90IGNsb3NlZCB1c2luZyB0aGlzIG1ldGhvZCwgaXQgd2lsbCBiZVxuIgorImNsb3NlZCB3aGVuIHRoZSBoa2V5IG9iamVjdCBpcyBkZXN0cm95ZWQgYnkgUHl0aG9uLiIpOworCisjZGVmaW5lIFdJTlJFR19DTE9TRUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2VLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0Nsb3NlS2V5LCBNRVRIX08sIHdpbnJlZ19DbG9zZUtleV9fZG9jX199LAorCitQeURvY19TVFJWQVIod2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9fZG9jX18sCisiQ29ubmVjdFJlZ2lzdHJ5KCRtb2R1bGUsIGNvbXB1dGVyX25hbWUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byB0aGUgcmVnaXN0cnkgb24gb24gYW5vdGhlciBjb21wdXRlci5cbiIKKyJcbiIKKyIgIGNvbXB1dGVyX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBjb21wdXRlciwgb2YgdGhlIGZvcm0gclwiXFxcXGNvbXB1dGVybmFtZVwiLiAgSWZcbiIKKyIgICAgTm9uZSwgdGhlIGxvY2FsIGNvbXB1dGVyIGlzIHVzZWQuXG4iCisiICBrZXlcbiIKKyIgICAgVGhlIHByZWRlZmluZWQga2V5IHRvIGNvbm5lY3QgdG8uXG4iCisiXG4iCisiVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgorIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19DT05ORUNUUkVHSVNUUllfTUVUSE9EREVGICAgIFwKKyAgICB7IkNvbm5lY3RSZWdpc3RyeSIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19Db25uZWN0UmVnaXN0cnlfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19Db25uZWN0UmVnaXN0cnlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21wdXRlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19Db25uZWN0UmVnaXN0cnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqY29tcHV0ZXJfbmFtZTsKKyAgICBIS0VZIGtleTsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAorICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwobW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXkpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DcmVhdGVLZXlfX2RvY19fLAorIkNyZWF0ZUtleSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCisiXG4iCisiSWYga2V5IGlzIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBrZXlzLCBzdWJfa2V5IG1heSBiZSBOb25lLiBJbiB0aGF0IGNhc2UsXG4iCisidGhlIGhhbmRsZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBrZXkgaGFuZGxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24uXG4iCisiXG4iCisiSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfQ3JlYXRlS2V5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ3JlYXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0NyZWF0ZUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0NyZWF0ZUtleUV4X19kb2NfXywKKyJDcmVhdGVLZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsXG4iCisiICAgICAgICAgICAgYWNjZXNzPXdpbnJlZy5LRVlfV1JJVEUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCisiICByZXNlcnZlZFxuIgorIiAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uXG4iCisiICBhY2Nlc3NcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGVcbiIKKyIgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLlxuIgorIlxuIgorIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgorInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgorIlxuIgorIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleVxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX0NyZWF0ZUtleUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0NyZWF0ZUtleUV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlS2V5X19kb2NfXywKKyJEZWxldGVLZXkoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHN1YmtleSBvZiB0aGUga2V5IGlkZW50aWZpZWQgYnlcbiIKKyIgICAgdGhlIGtleSBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdFxuIgorIiAgICBoYXZlIHN1YmtleXMuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuXG4iCisiXG4iCisiSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLFxuIgorImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfREVMRVRFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRGVsZXRlS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19fLAorIkRlbGV0ZUtleUV4KCRtb2R1bGUsIC8sIGtleSwgc3ViX2tleSwgYWNjZXNzPXdpbnJlZy5LRVlfV09XNjRfNjRLRVksXG4iCisiICAgICAgICAgICAgcmVzZXJ2ZWQ9MClcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHN1YmtleSBvZiB0aGUga2V5IGlkZW50aWZpZWQgYnlcbiIKKyIgICAgdGhlIGtleSBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdFxuIgorIiAgICBoYXZlIHN1YmtleXMuXG4iCisiICBhY2Nlc3NcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGVcbiIKKyIgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dPVzY0XzY0S0VZLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgorIlxuIgorIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKKyJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iCisiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XT1c2NF82NEtFWTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmYWNjZXNzLCAmcmVzZXJ2ZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIGFjY2VzcywgcmVzZXJ2ZWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGVsZXRlVmFsdWVfX2RvY19fLAorIkRlbGV0ZVZhbHVlKCRtb2R1bGUsIGtleSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICB2YWx1ZVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlIHRvIHJlbW92ZS4iKTsKKworI2RlZmluZSBXSU5SRUdfREVMRVRFVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IkRlbGV0ZVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVWYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRGVsZXRlVmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlVmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpEZWxldGVWYWx1ZSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19FbnVtS2V5X19kb2NfXywKKyJFbnVtS2V5KCRtb2R1bGUsIGtleSwgaW5kZXgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgaW5kZXhcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuXG4iCisiXG4iCisiVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzXG4iCisicmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VOVU1LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkVudW1LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0VudW1LZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0VudW1LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FbnVtS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bUtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW51bVZhbHVlX19kb2NfXywKKyJFbnVtVmFsdWUoJG1vZHVsZSwga2V5LCBpbmRleCwgLylcbiIKKyItLVxuIgorIlxuIgorIkVudW1lcmF0ZXMgdmFsdWVzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIGluZGV4XG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuXG4iCisiXG4iCisiVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhbiBPU0Vycm9yIGV4Y2VwdGlvblxuIgorImlzIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczpcbiIKKyIgIHZhbHVlX25hbWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS5cbiIKKyIgIHZhbHVlX2RhdGFcbiIKKyIgICAgQW4gb2JqZWN0IHRoYXQgaG9sZHMgdGhlIHZhbHVlIGRhdGEsIGFuZCB3aG9zZSB0eXBlIGRlcGVuZHNcbiIKKyIgICAgb24gdGhlIHVuZGVybHlpbmcgcmVnaXN0cnkgdHlwZS5cbiIKKyIgIGRhdGFfdHlwZVxuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgZGF0YS4iKTsKKworI2RlZmluZSBXSU5SRUdfRU5VTVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJFbnVtVmFsdWUiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0VudW1WYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfRW51bVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIGludCBpbmRleDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOkVudW1WYWx1ZSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX19kb2NfXywKKyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoJG1vZHVsZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhwYW5kIGVudmlyb25tZW50IHZhcnMuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VYUEFOREVOVklST05NRU5UU1RSSU5HU19NRVRIT0RERUYgICAgXAorICAgIHsiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MsIE1FVEhfTywgd2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0ZsdXNoS2V5X19kb2NfXywKKyJGbHVzaEtleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIGEga2V5IHRvIHRoZSByZWdpc3RyeS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjYWxsIEZsdXNoS2V5IHRvIGNoYW5nZSBhIGtleS4gIFJlZ2lzdHJ5IGNoYW5nZXNcbiIKKyJhcmUgZmx1c2hlZCB0byBkaXNrIGJ5IHRoZSByZWdpc3RyeSB1c2luZyBpdHMgbGF6eSBmbHVzaGVyLiAgUmVnaXN0cnlcbiIKKyJjaGFuZ2VzIGFyZSBhbHNvIGZsdXNoZWQgdG8gZGlzayBhdCBzeXN0ZW0gc2h1dGRvd24uICBVbmxpa2VcbiIKKyJDbG9zZUtleSgpLCB0aGUgRmx1c2hLZXkoKSBtZXRob2QgcmV0dXJucyBvbmx5IHdoZW4gYWxsIHRoZSBkYXRhIGhhc1xuIgorImJlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuXG4iCisiXG4iCisiQW4gYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgY2FsbCBGbHVzaEtleSgpIGlmIGl0IHJlcXVpcmVzIGFic29sdXRlXG4iCisiY2VydGFpbnR5IHRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb25cJ3Qga25vdyB3aGV0aGVyXG4iCisiYSBGbHVzaEtleSgpIGNhbGwgaXMgcmVxdWlyZWQsIGl0IHByb2JhYmx5IGlzblwndC4iKTsKKworI2RlZmluZSBXSU5SRUdfRkxVU0hLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkZsdXNoS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19GbHVzaEtleSwgTUVUSF9PLCB3aW5yZWdfRmx1c2hLZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19GbHVzaEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19GbHVzaEtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpGbHVzaEtleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRmx1c2hLZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19Mb2FkS2V5X19kb2NfXywKKyJMb2FkS2V5KCRtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5zZXJ0IGRhdGEgaW50byB0aGUgcmVnaXN0cnkgZnJvbSBhIGZpbGUuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yi1rZXkgdG8gbG9hZC5cbiIKKyIgIGZpbGVfbmFtZVxuIgorIiAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBsb2FkIHJlZ2lzdHJ5IGRhdGEgZnJvbS4gIFRoaXMgZmlsZSBtdXN0XG4iCisiICAgIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggdGhlIFNhdmVLZXkoKSBmdW5jdGlvbi4gIFVuZGVyIHRoZSBmaWxlXG4iCisiICAgIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW0sIHRoZSBmaWxlbmFtZSBtYXkgbm90IGhhdmUgYW5cbiIKKyIgICAgZXh0ZW5zaW9uLlxuIgorIlxuIgorIkNyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlcyByZWdpc3RyYXRpb25cbiIKKyJpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKKyJcbiIKKyJBIGNhbGwgdG8gTG9hZEtleSgpIGZhaWxzIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QgaGF2ZSB0aGVcbiIKKyJTRV9SRVNUT1JFX1BSSVZJTEVHRSBwcml2aWxlZ2UuXG4iCisiXG4iCisiSWYga2V5IGlzIGEgaGFuZGxlIHJldHVybmVkIGJ5IENvbm5lY3RSZWdpc3RyeSgpLCB0aGVuIHRoZSBwYXRoXG4iCisic3BlY2lmaWVkIGluIGZpbGVOYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuXG4iCisiXG4iCisiVGhlIE1TRE4gZG9jcyBpbXBseSBrZXkgbXVzdCBiZSBpbiB0aGUgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORVxuIgorInRyZWUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0xPQURLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkxvYWRLZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0xvYWRLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0xvYWRLZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19Mb2FkS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfTG9hZEtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfT3BlbktleV9fZG9jX18sCisiT3BlbktleSgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz13aW5yZWcuS0VZX1JFQUQpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyIHRoYXQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKKyIgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX09wZW5LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIGludCByZXNlcnZlZCA9IDA7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19PcGVuS2V5RXhfX2RvY19fLAorIk9wZW5LZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz13aW5yZWcuS0VZX1JFQUQpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyIHRoYXQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKKyIgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfT1BFTktFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX09wZW5LZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKyAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19RdWVyeUluZm9LZXlfX2RvY19fLAorIlF1ZXJ5SW5mb0tleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczpcbiIKKyJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHN1YiBrZXlzIHRoaXMga2V5IGhhcy5cbiIKKyJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGlzIGtleSBoYXMuXG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGUga2V5IHdhcyBsYXN0IG1vZGlmaWVkIChpZiBhdmFpbGFibGUpXG4iCisiYXMgMTAwXCdzIG9mIG5hbm9zZWNvbmRzIHNpbmNlIEphbiAxLCAxNjAwLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWUlORk9LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5SW5mb0tleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfUXVlcnlJbmZvS2V5LCBNRVRIX08sIHdpbnJlZ19RdWVyeUluZm9LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlJbmZvS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlJbmZvS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlWYWx1ZV9fZG9jX18sCisiUXVlcnlWYWx1ZSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXRyaWV2ZXMgdGhlIHVubmFtZWQgdmFsdWUgZm9yIGEga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBob2xkcyB0aGUgbmFtZSBvZiB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlXG4iCisiICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb25cbiIKKyIgICAgcmV0cmlldmVzIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIFNldFZhbHVlKCkgbWV0aG9kIGZvciB0aGUga2V5XG4iCisiICAgIGlkZW50aWZpZWQgYnkga2V5LlxuIgorIlxuIgorIlZhbHVlcyBpbiB0aGUgcmVnaXN0cnkgaGF2ZSBuYW1lLCB0eXBlLCBhbmQgZGF0YSBjb21wb25lbnRzLiBUaGlzIG1ldGhvZFxuIgorInJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBrZXlcJ3MgZmlyc3QgdmFsdWUgdGhhdCBoYXMgYSBOVUxMIG5hbWUuXG4iCisiQnV0IHNpbmNlIHRoZSB1bmRlcmx5aW5nIEFQSSBjYWxsIGRvZXNuXCd0IHJldHVybiB0aGUgdHlwZSwgeW91XCdsbFxuIgorInByb2JhYmx5IGJlIGhhcHBpZXIgdXNpbmcgUXVlcnlWYWx1ZUV4OyB0aGlzIGZ1bmN0aW9uIGlzIGp1c3QgaGVyZSBmb3JcbiIKKyJjb21wbGV0ZW5lc3MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5VmFsdWUiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5VmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX1F1ZXJ5VmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlWYWx1ZUV4X19kb2NfXywKKyJRdWVyeVZhbHVlRXgoJG1vZHVsZSwga2V5LCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmVzIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiBhIHNwZWNpZmllZCBzdWIta2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIG5hbWVcbiIKKyIgICAgQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmFsdWUgdG8gcXVlcnkuXG4iCisiXG4iCisiQmVoYXZlcyBtb3N0bHkgbGlrZSBRdWVyeVZhbHVlKCksIGJ1dCBhbHNvIHJldHVybnMgdGhlIHR5cGUgb2YgdGhlXG4iCisic3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHZhbHVlIGFuZCB0aGUgdHlwZV9pZC4iKTsKKworI2RlZmluZSBXSU5SRUdfUVVFUllWQUxVRUVYX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeVZhbHVlRXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5VmFsdWVFeCwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfUXVlcnlWYWx1ZUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWVFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZUV4IiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfU2F2ZUtleV9fZG9jX18sCisiU2F2ZUtleSgkbW9kdWxlLCBrZXksIGZpbGVfbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBmaWxlX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gc2F2ZSByZWdpc3RyeSBkYXRhIHRvLiAgVGhpcyBmaWxlIGNhbm5vdFxuIgorIiAgICBhbHJlYWR5IGV4aXN0LiBJZiB0aGlzIGZpbGVuYW1lIGluY2x1ZGVzIGFuIGV4dGVuc2lvbiwgaXQgY2Fubm90IGJlXG4iCisiICAgIHVzZWQgb24gZmlsZSBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtcyBieSB0aGUgTG9hZEtleSgpLFxuIgorIiAgICBSZXBsYWNlS2V5KCkgb3IgUmVzdG9yZUtleSgpIG1ldGhvZHMuXG4iCisiXG4iCisiSWYga2V5IHJlcHJlc2VudHMgYSBrZXkgb24gYSByZW1vdGUgY29tcHV0ZXIsIHRoZSBwYXRoIGRlc2NyaWJlZCBieVxuIgorImZpbGVfbmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgorIlxuIgorIlRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbXVzdCBwb3NzZXNzIHRoZSBTZUJhY2t1cFByaXZpbGVnZVxuIgorInNlY3VyaXR5IHByaXZpbGVnZS4gIFRoaXMgZnVuY3Rpb24gcGFzc2VzIE5VTEwgZm9yIHNlY3VyaXR5X2F0dHJpYnV0ZXNcbiIKKyJ0byB0aGUgQVBJLiIpOworCisjZGVmaW5lIFdJTlJFR19TQVZFS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJTYXZlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TYXZlS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19TYXZlS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2F2ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpmaWxlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NhdmVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6U2F2ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2F2ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBmaWxlX25hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfU2V0VmFsdWVfX2RvY19fLAorIlNldFZhbHVlKCRtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBc3NvY2lhdGVzIGEgdmFsdWUgd2l0aCBhIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWUgaXMgYXNzb2NpYXRlZC5cbiIKKyIgIHR5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YS4gIEN1cnJlbnRseSB0aGlzIG11c3RcbiIKKyIgICAgYmUgUkVHX1NaLCBtZWFuaW5nIG9ubHkgc3RyaW5ncyBhcmUgc3VwcG9ydGVkLlxuIgorIiAgdmFsdWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS5cbiIKKyJcbiIKKyJJZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgc3ViX2tleSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhpc3QsIHRoZVxuIgorIlNldFZhbHVlIGZ1bmN0aW9uIGNyZWF0ZXMgaXQuXG4iCisiXG4iCisiVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuXG4iCisiMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluXG4iCisidGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0cnkgdG8gaGVscCB0aGUgcmVnaXN0cnkgcGVyZm9ybSBlZmZpY2llbnRseS5cbiIKKyJcbiIKKyJUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGhcbiIKKyJLRVlfU0VUX1ZBTFVFIGFjY2Vzcy4iKTsKKworI2RlZmluZSBXSU5SRUdfU0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TZXRWYWx1ZSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfU2V0VmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgRFdPUkQgdHlwZSwgUHlfVU5JQ09ERSAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBEV09SRCB0eXBlOworICAgIFB5X1VOSUNPREUgKnZhbHVlOworICAgIFB5X3NzaXplX2NsZWFuX3QgdmFsdWVfbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlprdSM6U2V0VmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCB0eXBlLCB2YWx1ZSwgdmFsdWVfbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NldFZhbHVlRXhfX2RvY19fLAorIlNldFZhbHVlRXgoJG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdG9yZXMgZGF0YSBpbiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgdmFsdWVfbmFtZVxuIgorIiAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuXG4iCisiICByZXNlcnZlZFxuIgorIiAgICBDYW4gYmUgYW55dGhpbmcgLSB6ZXJvIGlzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIEFQSS5cbiIKKyIgIHR5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOlxuIgorIiAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgorIiAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKKyIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCisiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgorIiAgICAgICAgICAgICAgICAgICAgICVQQVRIJSkuXG4iCisiICAgIFJFR19MSU5LIC0tIEEgVW5pY29kZSBzeW1ib2xpYyBsaW5rLlxuIgorIiAgICBSRUdfTVVMVElfU1ogLS0gQW4gc2VxdWVuY2Ugb2YgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIHRlcm1pbmF0ZWRcbiIKKyIgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXNcbiIKKyIgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS5cbiIKKyIgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgorIiAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKKyIgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy5cbiIKKyIgIHZhbHVlXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZVxuIgorInNwZWNpZmllZCBrZXkuICBUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW5cbiIKKyJvcGVuZWQgd2l0aCBLRVlfU0VUX1ZBTFVFIGFjY2Vzcy5cbiIKKyJcbiIKKyJUbyBvcGVuIHRoZSBrZXksIHVzZSB0aGUgQ3JlYXRlS2V5RXgoKSBvciBPcGVuS2V5RXgoKSBtZXRob2RzLlxuIgorIlxuIgorIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgorIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpblxuIgorInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuIik7CisKKyNkZWZpbmUgV0lOUkVHX1NFVFZBTFVFRVhfTUVUSE9EREVGICAgIFwKKyAgICB7IlNldFZhbHVlRXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1NldFZhbHVlRXgsIE1FVEhfVkFSQVJHUywgd2lucmVnX1NldFZhbHVlRXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXNlcnZlZCwgRFdPUkQgdHlwZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TZXRWYWx1ZUV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnZhbHVlX25hbWU7CisgICAgUHlPYmplY3QgKnJlc2VydmVkOworICAgIERXT1JEIHR5cGU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfX2RvY19fLAorIkRpc2FibGVSZWZsZWN0aW9uS2V5KCRtb2R1bGUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRpc2FibGVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIDMyYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjRiaXQgT1MuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIldpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuXG4iCisiXG4iCisiSWYgdGhlIGtleSBpcyBub3Qgb24gdGhlIHJlZmxlY3Rpb24gbGlzdCwgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzIGJ1dCBoYXNcbiIKKyJubyBlZmZlY3QuICBEaXNhYmxpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb25cbiIKKyJvZiBhbnkgc3Via2V5cy4iKTsKKworI2RlZmluZSBXSU5SRUdfRElTQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleSwgTUVUSF9PLCB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJFbmFibGVSZWZsZWN0aW9uS2V5KCRtb2R1bGUsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlc3RvcmVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIHRoZSBzcGVjaWZpZWQgZGlzYWJsZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLlxuIgorIlJlc3RvcmluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbiBvZiBhbnlcbiIKKyJzdWJrZXlzLiIpOworCisjZGVmaW5lIFdJTlJFR19FTkFCTEVSRUZMRUNUSU9OS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJFbmFibGVSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5LCBNRVRIX08sIHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfX2RvY19fLAorIlF1ZXJ5UmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSByZWZsZWN0aW9uIHN0YXRlIGZvciB0aGUgc3BlY2lmaWVkIGtleSBhcyBhIGJvb2wuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIldpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZUkVGTEVDVElPTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiUXVlcnlSZWZsZWN0aW9uS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXksIE1FVEhfTywgd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWY1YmMzMGI2NDY4MDdiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5zb3VuZC5jLmggYi9QQy9jbGluaWMvd2luc291bmQuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYTVhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0wLDAgKzEsMTAwIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKKyJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLlxuIgorIlxuIgorIiAgc291bmRcbiIKKyIgICAgVGhlIHNvdW5kIHRvIHBsYXk7IGEgZmlsZW5hbWUsIGRhdGEsIG9yIE5vbmUuXG4iCisiICBmbGFnc1xuIgorIiAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKKworI2RlZmluZSBXSU5TT1VORF9QTEFZU09VTkRfTUVUSE9EREVGICAgIFwKKyAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfVkFSQVJHUywgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICpzb3VuZDsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2luc291bmRfQmVlcF9fZG9jX18sCisiQmVlcCgkbW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS5cbiIKKyJcbiIKKyIgIGZyZXF1ZW5jeVxuIgorIiAgICBGcmVxdWVuY3kgb2YgdGhlIHNvdW5kIGluIGhlcnR6LlxuIgorIiAgICBNdXN0IGJlIGluIHRoZSByYW5nZSAzNyB0aHJvdWdoIDMyLDc2Ny5cbiIKKyIgIGR1cmF0aW9uXG4iCisiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOworCisjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKKyAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9CZWVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX0JlZXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZyZXF1ZW5jeTsKKyAgICBpbnQgZHVyYXRpb247CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkJlZXAiLAorICAgICAgICAmZnJlcXVlbmN5LCAmZHVyYXRpb24pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfQmVlcF9pbXBsKG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKKyJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLlxuIgorIlxuIgorInggZGVmYXVsdHMgdG8gTUJfT0suIik7CisKKyNkZWZpbmUgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGICAgIFwKKyAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB4KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnNvdW5kX01lc3NhZ2VCZWVwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB4ID0gTUJfT0s7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwKKyAgICAgICAgJngpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzViMDE4YWM5ZGMxZjUwMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDcyYzkzODEuLjY2YmY0NTggMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0xLDcgKzEsNyBAQAogLyogTW9kdWxlIGNvbmZpZ3VyYXRpb24gKi8KIAogLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgotICAgU2VlIGluaXRfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLworICAgU2VlIGNyZWF0ZV9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKIApAQCAtMTksNyArMTksNyBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX21kNSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X250KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX29wZXJhdG9yKHZvaWQpOwotZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfc2lnbmFsKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NpZ25hbCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGExKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTI1Nih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGE1MTIodm9pZCk7CkBAIC05MSw3ICs5MSw3IEBACiAgICAgeyJtYXRoIiwgUHlJbml0X21hdGh9LAogICAgIHsibnQiLCBQeUluaXRfbnR9LCAvKiBVc2UgdGhlIE5UIG9zIGZ1bmN0aW9ucywgbm90IHBvc2l4ICovCiAgICAgeyJfb3BlcmF0b3IiLCBQeUluaXRfX29wZXJhdG9yfSwKLSAgICB7InNpZ25hbCIsIFB5SW5pdF9zaWduYWx9LAorICAgIHsiX3NpZ25hbCIsIFB5SW5pdF9fc2lnbmFsfSwKICAgICB7Il9tZDUiLCBQeUluaXRfX21kNX0sCiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LApkaWZmIC0tZ2l0IGEvUEMvZGxfbnQuYyBiL1BDL2RsX250LmMKaW5kZXggYWUxMGZiNS4uYzg3YzUxZSAxMDA2NDQKLS0tIGEvUEMvZGxfbnQuYworKysgYi9QQy9kbF9udC5jCkBAIC0xMiw3ICsxMiwxMiBAQAogI2luY2x1ZGUgIndpbmRvd3MuaCIKIAogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKKyNpZmRlZiBNU19ETExfSUQKKy8vIFRoZSBzdHJpbmcgaXMgYXZhaWxhYmxlIGF0IGJ1aWxkLCBzbyBmaWxsIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkKK2NoYXIgZGxsVmVyc2lvbkJ1ZmZlclsxNl0gPSBNU19ETExfSUQ7CisjZWxzZQogY2hhciBkbGxWZXJzaW9uQnVmZmVyWzE2XSA9ICIiOyAvLyBhIHByaXZhdGUgYnVmZmVyCisjZW5kaWYKIAogLy8gUHl0aG9uIEdsb2JhbHMKIEhNT0RVTEUgUHlXaW5fRExMaE1vZHVsZSA9IE5VTEw7CkBAIC04OCw4ICs5MywxMSBAQAogICAgIHsKICAgICAgICAgY2FzZSBETExfUFJPQ0VTU19BVFRBQ0g6CiAgICAgICAgICAgICBQeVdpbl9ETExoTW9kdWxlID0gaEluc3Q7CisjaWZuZGVmIE1TX0RMTF9JRAorICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBNU19ETExfSUQsIHdlIGRvbid0IG5lZWQgdG8gbG9hZCB0aGUgc3RyaW5nLgogICAgICAgICAgICAgLy8gMTAwMCBpcyBhIG1hZ2ljIG51bWJlciBJIHBpY2tlZCBvdXQgb2YgdGhlIGFpci4gIENvdWxkIGRvIHdpdGggYSAjZGVmaW5lLCBJIHNwb3NlLi4uCiAgICAgICAgICAgICBMb2FkU3RyaW5nKGhJbnN0LCAxMDAwLCBkbGxWZXJzaW9uQnVmZmVyLCBzaXplb2YoZGxsVmVyc2lvbkJ1ZmZlcikpOworI2VuZGlmCiAKICNpZiBIQVZFX1NYUwogICAgICAgICAgICAgLy8gYW5kIGNhcHR1cmUgb3VyIGFjdGl2YXRpb24gY29udGV4dCBmb3IgdXNlIHdoZW4gbG9hZGluZyBleHRlbnNpb25zLgpkaWZmIC0tZ2l0IGEvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvaiBiL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKaW5kZXggZGYzNjM0MS4uZDgyZjc2ZSAxMDA2NDQKLS0tIGEvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagorKysgYi9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCkBAIC0zOSw3ICszOSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvZXhwb3J0OmluaXRleGFtcGxlIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24zNC5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjM1LmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iLlxSZWxlYXNlL2V4YW1wbGUucHlkIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCkBAIC0xMDUsNyArMTA1LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9leHBvcnQ6aW5pdGV4YW1wbGUiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjM0X2QubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24zNV9kLmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iLlxEZWJ1Zy9leGFtcGxlX2QucHlkIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCmRpZmYgLS1naXQgYS9QQy9leGFtcGxlX250L3JlYWRtZS50eHQgYi9QQy9leGFtcGxlX250L3JlYWRtZS50eHQKaW5kZXggYjgzODg4Yy4uZDhlZmE3NCAxMDA2NDQKLS0tIGEvUEMvZXhhbXBsZV9udC9yZWFkbWUudHh0CisrKyBiL1BDL2V4YW1wbGVfbnQvcmVhZG1lLnR4dApAQCAtMyw3ICszLDcgQEAKIAogVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZXZlcnl0aGluZyBuZWVkZWQgKGV4Y2VwdCBmb3IgdGhlIFB5dGhvbgogZGlzdHJpYnV0aW9uISkgdG8gYnVpbGQgYSBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSB1c2luZyBNaWNyb3NvZnQgVkMrKy4KLU5vdGljZSB0aGF0IHlvdSBuZWVkIHRvIHVzZSB0aGUgc2FtZSBjb21waWxlciB2ZXJzaW9uIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgCitOb3RpY2UgdGhhdCB5b3UgbmVlZCB0byB1c2UgdGhlIHNhbWUgY29tcGlsZXIgdmVyc2lvbiB0aGF0IHdhcyB1c2VkIHRvIGJ1aWxkCiBQeXRob24gaXRzZWxmLgogCiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGJ1aWxkIHRoaXMgZXhhbXBsZSBpcyB0byB1c2UgdGhlIGRpc3R1dGlscyBzY3JpcHQKQEAgLTE2LDcgKzE2LDcgQEAKICAgJSBweXRob24gLWMgImltcG9ydCBleGFtcGxlOyBleGFtcGxlLmZvbygpIgogICBIZWxsbywgd29ybGQKIAotU2VlIHNldHVwLnB5IGZvciBtb3JlIGRldGFpbHMuICBhbHRlcm5hdGl2ZWx5LCBzZWUgYmVsb3cgZm9yIGluc3RydWN0aW9ucyBvbiAKK1NlZSBzZXR1cC5weSBmb3IgbW9yZSBkZXRhaWxzLiAgYWx0ZXJuYXRpdmVseSwgc2VlIGJlbG93IGZvciBpbnN0cnVjdGlvbnMgb24KIGhvdyB0byBidWlsZCBpbnNpZGUgdGhlIFZpc3VhbCBTdHVkaW8gZW52aXJvbm1lbnQuCiAKIFZpc3VhbCBTdHVkaW8gQnVpbGQgSW5zdHJ1Y3Rpb25zCkBAIC0yNyw4ICsyNyw4IEBACiB2ZXJzaW9uLiAgSW4gZ2VuZXJhbCwgaXQgaXMgcmVjb21tZW5kZWQgeW91IHVzZSB0aGUgJ3NldHVwLnB5JyBpbnN0cnVjdGlvbnMKIGFib3ZlLgogCi1JdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBWQysrIDcuMSBvbiBQeXRob24gMi40LiAgWW91IGNhbiBhbHNvIHVzZSBlYXJsaWVyIAotdmVyc2lvbnMgb2YgVkMgdG8gYnVpbGQgUHl0aG9uIGV4dGVuc2lvbnMsIGJ1dCB0aGUgc2FtcGxlIFZDIHByb2plY3QgZmlsZSAKK0l0IGhhcyBiZWVuIHRlc3RlZCB3aXRoIFZDKysgNy4xIG9uIFB5dGhvbiAyLjQuICBZb3UgY2FuIGFsc28gdXNlIGVhcmxpZXIKK3ZlcnNpb25zIG9mIFZDIHRvIGJ1aWxkIFB5dGhvbiBleHRlbnNpb25zLCBidXQgdGhlIHNhbXBsZSBWQyBwcm9qZWN0IGZpbGUKIChleGFtcGxlLmRzdyBpbiB0aGlzIGRpcmVjdG9yeSkgaXMgaW4gVkMgNy4xIGZvcm1hdC4KIAogQ09QWSBUSElTIERJUkVDVE9SWSEKQEAgLTEyOSw3ICsxMjksNyBAQAogKFRoaXMgaXMgYW4gYW5ub3lpbmcgbGl0dGxlIGZpbGUgd2l0aCBvbmx5IHR3byBsaW5lcy4gIEFuIGFsdGVybmF0aXZlCiBhcHByb2FjaCBpcyB0byBmb3JnZXQgYWJvdXQgdGhlIC5kZWYgZmlsZSwgYW5kIGFkZCB0aGUgb3B0aW9uCiAiL2V4cG9ydDppbml0c3BhbSIgc29tZXdoZXJlIHRvIHRoZSBMaW5rIHNldHRpbmdzLCBieSBtYW51YWxseSBlZGl0aW5nIHRoZQotIlByb2plY3QgLT4gUHJvcGVydGllcyAtPiBMaW5rZXIgLT4gQ29tbWFuZCBMaW5lIC0+IEFkZGl0aW9uYWwgT3B0aW9ucyIgCisiUHJvamVjdCAtPiBQcm9wZXJ0aWVzIC0+IExpbmtlciAtPiBDb21tYW5kIExpbmUgLT4gQWRkaXRpb25hbCBPcHRpb25zIgogYm94KS4KIAogWW91IGFyZSBub3cgYWxsIHNldCB0byBidWlsZCB5b3VyIGV4dGVuc2lvbiwgdW5sZXNzIGl0IHJlcXVpcmVzIG90aGVyCkBAIC0xNDIsMTMgKzE0MiwxMyBAQAogVXNlIHRoZQogICAgIEZpbGUgLT4gTmV3IC0+IFByb2plY3QuLi4KIGRpYWxvZyB0byBjcmVhdGUgYSBuZXcgUHJvamVjdCBXb3Jrc3BhY2UuICBTZWxlY3QgIlZpc3VhbCBDKysgUHJvamVjdHMvV2luMzIvCi1XaW4zMiBQcm9qZWN0IiwgZW50ZXIgdGhlIG5hbWUgKCJzcGFtIiksIGFuZCBtYWtlIHN1cmUgdGhlICJMb2NhdGlvbiIgaXMgCi1zZXQgdG8gcGFyZW50IG9mIHRoZSBzcGFtIGRpcmVjdG9yeSB5b3UgaGF2ZSBjcmVhdGVkICh3aGljaCBzaG91bGQgYmUgYSBkaXJlY3QgCi1zdWJkaXJlY3Rvcnkgb2YgdGhlIFB5dGhvbiBidWlsZCB0cmVlLCBhIHNpYmxpbmcgb2YgSW5jbHVkZSBhbmQgUEMpLiAgCitXaW4zMiBQcm9qZWN0IiwgZW50ZXIgdGhlIG5hbWUgKCJzcGFtIiksIGFuZCBtYWtlIHN1cmUgdGhlICJMb2NhdGlvbiIgaXMKK3NldCB0byBwYXJlbnQgb2YgdGhlIHNwYW0gZGlyZWN0b3J5IHlvdSBoYXZlIGNyZWF0ZWQgKHdoaWNoIHNob3VsZCBiZSBhIGRpcmVjdAorc3ViZGlyZWN0b3J5IG9mIHRoZSBQeXRob24gYnVpbGQgdHJlZSwgYSBzaWJsaW5nIG9mIEluY2x1ZGUgYW5kIFBDKS4KIEluICJBcHBsaWNhdGlvbiBTZXR0aW5ncyIsIHNlbGVjdCAiRExMIiwgYW5kICJFbXB0eSBQcm9qZWN0Ii4gIENsaWNrIE9LLgogCiBZb3Ugc2hvdWxkIG5vdyBjcmVhdGUgdGhlIGZpbGUgc3BhbS5kZWYgYXMgaW5zdHJ1Y3RlZCBpbiB0aGUgcHJldmlvdXMKLXNlY3Rpb24uIEFkZCB0aGUgc291cmNlIGZpbGVzIChpbmNsdWRpbmcgdGhlIC5kZWYgZmlsZSkgdG8gdGhlIHByb2plY3QsIAorc2VjdGlvbi4gQWRkIHRoZSBzb3VyY2UgZmlsZXMgKGluY2x1ZGluZyB0aGUgLmRlZiBmaWxlKSB0byB0aGUgcHJvamVjdCwKIHVzaW5nICJQcm9qZWN0IiwgIkFkZCBFeGlzdGluZyBJdGVtIi4KIAogTm93IG9wZW4gdGhlCkBAIC0xNzQsNyArMTc0LDcgQEAKIAogU2VsZWN0ICJEZWJ1ZyIgaW4gdGhlICJTZXR0aW5ncyBmb3I6IiBkcm9wZG93biBsaXN0LCBhbmQgYXBwZW5kCiAicHl0aG9uMjRfZC5saWIiIHRvIHRoZSBsaXN0IGluIHRoZSBBZGRpdGlvbmFsIERlcGVuZGVuY2llcyIgYm94LiAgVGhlbgotY2xpY2sgb24gdGhlIEMvQysrIHRhYiwgc2VsZWN0ICJDb2RlIEdlbmVyYXRpb24iLCBhbmQgc2VsZWN0IAorY2xpY2sgb24gdGhlIEMvQysrIHRhYiwgc2VsZWN0ICJDb2RlIEdlbmVyYXRpb24iLCBhbmQgc2VsZWN0CiAiTXVsdGktdGhyZWFkZWQgRGVidWcgRExMIiBmcm9tIHRoZSAiUnVudGltZSBsaWJyYXJ5IiBkcm9wZG93biBsaXN0LgogCiBTZWxlY3QgIlJlbGVhc2UiIGFnYWluIGZyb20gdGhlICJTZXR0aW5ncyBmb3I6IiBkcm9wZG93biBsaXN0LgpkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggZGViNDBlNy4uMjViMzI4YiAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC0xMTMsNyArMTEzLDEwIEBACiBzdGF0aWMgdm9pZAogcmVkdWNlKHdjaGFyX3QgKmRpcikKIHsKLSAgICBzaXplX3QgaSA9IHdjc2xlbihkaXIpOworICAgIHNpemVfdCBpID0gd2Nzbmxlbl9zKGRpciwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKwogICAgIHdoaWxlIChpID4gMCAmJiAhaXNfc2VwKGRpcltpXSkpCiAgICAgICAgIC0taTsKICAgICBkaXJbaV0gPSAnXDAnOwpAQCAtMTMwLDE2ICsxMzMsMjMgQEAKICAgIG1heSBleHRlbmQgJ2ZpbGVuYW1lJyBieSBvbmUgY2hhcmFjdGVyLgogKi8KIHN0YXRpYyBpbnQKLWlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lKSAgICAgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCitpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7CisgICAgaW50IG47CisKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvKiBDaGVjayBmb3IgdGhlIGNvbXBpbGVkIHZlcnNpb24gb2YgcHJlZml4LiAqLwotICAgIGlmICh3Y3NsZW4oZmlsZW5hbWUpIDwgTUFYUEFUSExFTikgewotICAgICAgICB3Y3NjYXQoZmlsZW5hbWUsIFB5X09wdGltaXplRmxhZyA/IEwibyIgOiBMImMiKTsKLSAgICAgICAgaWYgKGV4aXN0cyhmaWxlbmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICBuID0gd2Nzbmxlbl9zKGZpbGVuYW1lLCBNQVhQQVRITEVOKzEpOworICAgIGlmIChuIDwgTUFYUEFUSExFTikgeworICAgICAgICBpbnQgZXhpc3QgPSAwOworICAgICAgICBmaWxlbmFtZVtuXSA9IFB5X09wdGltaXplRmxhZyA/IEwnbycgOiBMJ2MnOworICAgICAgICBmaWxlbmFtZVtuICsgMV0gPSBMJ1wwJzsKKyAgICAgICAgZXhpc3QgPSBleGlzdHMoZmlsZW5hbWUpOworICAgICAgICBpZiAoIXVwZGF0ZV9maWxlbmFtZSkKKyAgICAgICAgICAgIGZpbGVuYW1lW25dID0gTCdcMCc7CisgICAgICAgIHJldHVybiBleGlzdDsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNTQsMjMgKzE2NCwyMyBAQAogICAgc3R1ZmYgYXMgZml0cyB3aWxsIGJlIGFwcGVuZGVkLgogKi8KIHN0YXRpYyB2b2lkCi1qb2luKHdjaGFyX3QgKmJ1ZmZlciwgd2NoYXJfdCAqc3R1ZmYpCitqb2luKHdjaGFyX3QgKmJ1ZmZlciwgY29uc3Qgd2NoYXJfdCAqc3R1ZmYpCiB7Ci0gICAgc2l6ZV90IG4sIGs7Ci0gICAgaWYgKGlzX3NlcChzdHVmZlswXSkpCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgewotICAgICAgICBuID0gd2NzbGVuKGJ1ZmZlcik7Ci0gICAgICAgIGlmIChuID4gMCAmJiAhaXNfc2VwKGJ1ZmZlcltuLTFdKSAmJiBuIDwgTUFYUEFUSExFTikKLSAgICAgICAgICAgIGJ1ZmZlcltuKytdID0gU0VQOworICAgIHNpemVfdCBuOworICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pIHx8CisgICAgICAgICh3Y3NubGVuX3Moc3R1ZmYsIDQpID49IDMgJiYgc3R1ZmZbMV0gPT0gJzonICYmIGlzX3NlcChzdHVmZlsyXSkpKSB7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChuID4gTUFYUEFUSExFTikKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2lucGF0aCgpIik7Ci0gICAgayA9IHdjc2xlbihzdHVmZik7Ci0gICAgaWYgKG4gKyBrID4gTUFYUEFUSExFTikKLSAgICAgICAgayA9IE1BWFBBVEhMRU4gLSBuOwotICAgIHdjc25jcHkoYnVmZmVyK24sIHN0dWZmLCBrKTsKLSAgICBidWZmZXJbbitrXSA9ICdcMCc7CisKKyAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgeworICAgICAgICBidWZmZXJbbl0gPSBTRVA7CisgICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIH0KKyAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTgxLDExICsxOTEsMTAgQEAKIGdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIGludCBvazsKLSAgICBQeV9zc2l6ZV90IG47CisgICAgUHlfc3NpemVfdCBuID0gd2Nzbmxlbl9zKHByZWZpeCwgTUFYUEFUSExFTik7CiAKLSAgICBuID0gd2NzbGVuKHByZWZpeCk7CiAgICAgam9pbihwcmVmaXgsIGxhbmRtYXJrKTsKLSAgICBvayA9IGlzbW9kdWxlKHByZWZpeCk7CisgICAgb2sgPSBpc21vZHVsZShwcmVmaXgsIEZBTFNFKTsKICAgICBwcmVmaXhbbl0gPSAnXDAnOwogICAgIHJldHVybiBvazsKIH0KQEAgLTE5Niw3ICsyMDUsNyBAQAogc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgLyogU2VhcmNoIGZyb20gYXJndjBfcGF0aCwgdW50aWwgbGFuZG1hcmsgaXMgZm91bmQgKi8KLSAgICB3Y3NjcHkocHJlZml4LCBhcmd2MF9wYXRoKTsKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4gKyAxLCBhcmd2MF9wYXRoKTsKICAgICBkbyB7CiAgICAgICAgIGlmIChnb3RsYW5kbWFyayhsYW5kbWFyaykpCiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTIzNiw3ICsyNDUsNyBAQAogICAgIFdDSEFSICpkYXRhQnVmID0gTlVMTDsKICAgICBzdGF0aWMgY29uc3QgV0NIQVIga2V5UHJlZml4W10gPSBMIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCI7CiAgICAgc3RhdGljIGNvbnN0IFdDSEFSIGtleVN1ZmZpeFtdID0gTCJcXFB5dGhvblBhdGgiOwotICAgIHNpemVfdCB2ZXJzaW9uTGVuOworICAgIHNpemVfdCB2ZXJzaW9uTGVuLCBrZXlCdWZMZW47CiAgICAgRFdPUkQgaW5kZXg7CiAgICAgV0NIQVIgKmtleUJ1ZiA9IE5VTEw7CiAgICAgV0NIQVIgKmtleUJ1ZlB0cjsKQEAgLTI0NSwxMiArMjU0LDEzIEBACiAgICAgLyogVHJpZWQgdG8gdXNlIHN5c2dldCgid2ludmVyIikgYnV0IGhlcmUgaXMgdG9vIGVhcmx5IDotKCAqLwogICAgIHZlcnNpb25MZW4gPSBzdHJsZW4oUHlXaW5fRExMVmVyc2lvblN0cmluZyk7CiAgICAgLyogU3BhY2UgZm9yIGFsbCB0aGUgY2hhcnMsIHBsdXMgb25lIFwwICovCi0gICAga2V5QnVmID0ga2V5QnVmUHRyID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZihrZXlQcmVmaXgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdDSEFSKSoodmVyc2lvbkxlbi0xKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpKTsKKyAgICBrZXlCdWZMZW4gPSBzaXplb2Yoa2V5UHJlZml4KSArCisgICAgICAgICAgICAgICAgc2l6ZW9mKFdDSEFSKSoodmVyc2lvbkxlbi0xKSArCisgICAgICAgICAgICAgICAgc2l6ZW9mKGtleVN1ZmZpeCk7CisgICAga2V5QnVmID0ga2V5QnVmUHRyID0gUHlNZW1fUmF3TWFsbG9jKGtleUJ1Zkxlbik7CiAgICAgaWYgKGtleUJ1Zj09TlVMTCkgZ290byBkb25lOwogCi0gICAgbWVtY3B5KGtleUJ1ZlB0ciwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS1zaXplb2YoV0NIQVIpKTsKKyAgICBtZW1jcHlfcyhrZXlCdWZQdHIsIGtleUJ1Zkxlbiwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS1zaXplb2YoV0NIQVIpKTsKICAgICBrZXlCdWZQdHIgKz0gUHlfQVJSQVlfTEVOR1RIKGtleVByZWZpeCkgLSAxOwogICAgIG1ic3Rvd2NzKGtleUJ1ZlB0ciwgUHlXaW5fRExMVmVyc2lvblN0cmluZywgdmVyc2lvbkxlbik7CiAgICAga2V5QnVmUHRyICs9IHZlcnNpb25MZW47CkBAIC00NTEsMTEgKzQ2MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1ZmZlciwgTUFYUEFUSExFTiAqIDIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOwogICAgICAgICAgICAgaWYgKGsgPj0gMCkgewotICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2sodG1wYnVmZmVyLCBMIiBcdFxyXG4iKTsKKyAgICAgICAgICAgICAgICB3Y2hhcl90ICogY29udGV4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgd2NoYXJfdCAqIHRvayA9IHdjc3Rva19zKHRtcGJ1ZmZlciwgTCIgXHRcclxuIiwgJmNvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIiBcdCIpOworICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2tfcyhOVUxMLCBMIiBcdCIsICZjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIEwiPSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCJcclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2tfcyhOVUxMLCBMIlxyXG4iLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NuY3B5KHZhbHVlLCB0b2ssIE1BWFBBVEhMRU4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CkBAIC00ODMsNyArNDk0LDcgQEAKICAgICB3Y2hhcl90ICptYWNoaW5lcGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCAqdXNlcnBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgemlwX3BhdGhbTUFYUEFUSExFTisxXTsKLSAgICBzaXplX3QgbGVuOworICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CkBAIC01MDEsNyArNTEyLDcgQEAKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCi0gICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoKTsKKyAgICB3Y3NjcHlfcyhhcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEsIHByb2dwYXRoKTsKICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCkBAIC01MTAsMjcgKzUyMSwzOSBAQAogICAgICovCiAKICAgICB7CisgICAgICAgIHdjaGFyX3QgZW52YnVmZmVyW01BWFBBVEhMRU4rMV07CiAgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4rMV07Ci0gICAgICAgIHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOworICAgICAgICBjb25zdCB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKICAgICAgICAgRklMRSAqIGVudl9maWxlID0gTlVMTDsKIAotICAgICAgICB3Y3NjcHkodG1wYnVmZmVyLCBhcmd2MF9wYXRoKTsKLSAgICAgICAgam9pbih0bXBidWZmZXIsIGVudl9jZmcpOwotICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgd2NzY3B5X3MoZW52YnVmZmVyLCBNQVhQQVRITEVOKzEsIGFyZ3YwX3BhdGgpOworICAgICAgICBqb2luKGVudmJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3BlbihlbnZidWZmZXIsIEwiciIpOwogICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgewogICAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7Ci0gICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKLSAgICAgICAgICAgIGpvaW4odG1wYnVmZmVyLCBlbnZfY2ZnKTsKLSAgICAgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICAgICAgcmVkdWNlKGVudmJ1ZmZlcik7CisgICAgICAgICAgICByZWR1Y2UoZW52YnVmZmVyKTsKKyAgICAgICAgICAgIGpvaW4oZW52YnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3BlbihlbnZidWZmZXIsIEwiciIpOwogICAgICAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBlcnJubyA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudl9maWxlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIExvb2sgZm9yIGFuICdhcHBsb2NhbCcgdmFyaWFibGUgYW5kLCBpZiB0cnVlLCBpZ25vcmUgYWxsIHJlZ2lzdHJ5CisgICAgICAgICAgICAgKiBrZXlzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGJ1dCByZXRhaW4gdGhlIGRlZmF1bHQgcGF0aHMKKyAgICAgICAgICAgICAqIChETExzLCBMaWIpIGFuZCB0aGUgemlwIGZpbGUuIFNldHRpbmcgcHl0aG9uaG9tZSBoZXJlIHN1cHByZXNzZXMKKyAgICAgICAgICAgICAqIHRoZSBzZWFyY2ggZm9yIExBTkRNQVJLIGJlbG93IGFuZCBvdmVycmlkZXMgJVBZVEhPTkhPTUUlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImFwcGxvY2FsIiwgdG1wYnVmZmVyKSAmJgorICAgICAgICAgICAgICAgIChhcHBsb2NhbCA9ICh3Y3NpY21wKHRtcGJ1ZmZlciwgTCJ0cnVlIikgPT0gMCkpKSB7CisgICAgICAgICAgICAgICAgZW52cGF0aCA9IE5VTEw7CisgICAgICAgICAgICAgICAgcHl0aG9uaG9tZSA9IGFyZ3YwX3BhdGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIC8qIExvb2sgZm9yIGEgJ2hvbWUnIHZhcmlhYmxlIGFuZCBzZXQgYXJndjBfcGF0aCB0byBpdCwgaWYgZm91bmQgKi8KICAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiaG9tZSIsIHRtcGJ1ZmZlcikpIHsKLSAgICAgICAgICAgICAgICB3Y3NjcHkoYXJndjBfcGF0aCwgdG1wYnVmZmVyKTsKKyAgICAgICAgICAgICAgICB3Y3NjcHlfcyhhcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEsIHRtcGJ1ZmZlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOwogICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOwpAQCAtNTQ0LDMzICs1NjcsMzAgQEAKICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBOVUxMOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHdjc25jcHkocHJlZml4LCBweXRob25ob21lLCBNQVhQQVRITEVOKTsKKyAgICAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOKzEsIHB5dGhvbmhvbWUpOwogCiAgICAgaWYgKGVudnBhdGggJiYgKmVudnBhdGggPT0gJ1wwJykKICAgICAgICAgZW52cGF0aCA9IE5VTEw7CiAKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBDYWxjdWxhdGUgemlwIGFyY2hpdmUgcGF0aCAqLwotICAgIGlmIChkbGxwYXRoWzBdKSAgICAgICAgICAgICAvKiB1c2UgbmFtZSBvZiBweXRob24gRExMICovCi0gICAgICAgIHdjc25jcHkoemlwX3BhdGgsIGRsbHBhdGgsIE1BWFBBVEhMRU4pOwotICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAvKiB1c2UgbmFtZSBvZiBleGVjdXRhYmxlIHByb2dyYW0gKi8KLSAgICAgICAgd2NzbmNweSh6aXBfcGF0aCwgcHJvZ3BhdGgsIE1BWFBBVEhMRU4pOwotICAgIHppcF9wYXRoW01BWFBBVEhMRU5dID0gJ1wwJzsKLSAgICBsZW4gPSB3Y3NsZW4oemlwX3BhdGgpOwotICAgIGlmIChsZW4gPiA0KSB7Ci0gICAgICAgIHppcF9wYXRoW2xlbi0zXSA9ICd6JzsgICAgICAgICAgLyogY2hhbmdlIGVuZGluZyB0byAiemlwIiAqLwotICAgICAgICB6aXBfcGF0aFtsZW4tMl0gPSAnaSc7Ci0gICAgICAgIHppcF9wYXRoW2xlbi0xXSA9ICdwJzsKLSAgICB9CisgICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggZnJvbSBETEwgb3IgZXhlIHBhdGggKi8KKyAgICBpZiAod2NzY3B5X3MoemlwX3BhdGgsIE1BWFBBVEhMRU4rMSwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCkpCisgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KKyAgICAgICAgemlwX3BhdGhbMF0gPSAnXDAnOwogICAgIGVsc2UgewotICAgICAgICB6aXBfcGF0aFswXSA9IDA7CisgICAgICAgIHdjaGFyX3QgKmRvdCA9IHdjc3JjaHIoemlwX3BhdGgsICcuJyk7CisgICAgICAgIGlmICghZG90IHx8IHdjc2NweV9zKGRvdCwgTUFYUEFUSExFTisxIC0gKGRvdCAtIHppcF9wYXRoKSwgTCIuemlwIikpCisgICAgICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCisgICAgICAgICAgICB6aXBfcGF0aFswXSA9IEwnXDAnOwogICAgIH0KIAogICAgIHNraXBob21lID0gcHl0aG9uaG9tZT09TlVMTCA/IDAgOiAxOwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKLSAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7Ci0gICAgdXNlcnBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfQ1VSUkVOVF9VU0VSLCBza2lwaG9tZSk7CisgICAgaWYgKCFhcHBsb2NhbCkgeworICAgICAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7CisgICAgICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOworICAgIH0KICNlbmRpZgogICAgIC8qIFdlIG9ubHkgdXNlIHRoZSBkZWZhdWx0IHJlbGF0aXZlIFBZVEhPTlBBVEggaWYgd2UgaGF2ZW50CiAgICAgICAgYW55dGhpbmcgYmV0dGVyIHRvIHVzZSEgKi8KQEAgLTU4OSw2ICs2MDksNyBAQAogICAgICAgIEV4dHJhIHJ1bGVzOgogICAgICAgIC0gSWYgUFlUSE9OSE9NRSBpcyBzZXQgKGluIGFueSB3YXkpIGl0ZW0gKDMpIGlzIGlnbm9yZWQuCiAgICAgICAgLSBJZiByZWdpc3RyeSB2YWx1ZXMgYXJlIHVzZWQsICg0KSBhbmQgKDUpIGFyZSBpZ25vcmVkLgorICAgICAgIC0gSWYgYXBwbG9jYWwgaXMgc2V0LCAoMSksICgzKSwgYW5kIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgaWdub3JlZAogICAgICovCiAKICAgICAvKiBDYWxjdWxhdGUgc2l6ZSBvZiByZXR1cm4gYnVmZmVyICovCkBAIC02MDYsOSArNjI3LDkgQEAKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICh1c2VycGF0aCkKKyAgICBpZiAoIWFwcGxvY2FsICYmIHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAobWFjaGluZXBhdGgpCisgICAgaWYgKCFhcHBsb2NhbCAmJiBtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7CiAjZW5kaWYKQEAgLTYzNSwzOCArNjU2LDQ1IEBACiAgICAgfQogCiAgICAgaWYgKGVudnBhdGgpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgZW52cGF0aCk7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIGVudnBhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoemlwX3BhdGhbMF0pIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgemlwX3BhdGgpOworICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCB6aXBfcGF0aCkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9CiAgICAgaWYgKHVzZXJwYXRoKSB7Ci0gICAgICAgIHdjc2NweShidWYsIHVzZXJwYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgdXNlcnBhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodXNlcnBhdGgpOwogICAgIH0KICAgICBpZiAobWFjaGluZXBhdGgpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgbWFjaGluZXBhdGgpOworICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCBtYWNoaW5lcGF0aCkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgUHlNZW1fUmF3RnJlZShtYWNoaW5lcGF0aCk7CiAgICAgfQogICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFza2lwZGVmYXVsdCkgewotICAgICAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7CisgICAgICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCBQWVRIT05QQVRIKSkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKKyAgICAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMKSB7CiAgICAgICAgIHdjc2NweShidWYsIFBZVEhPTlBBVEgpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CisgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgZWxzZSB7CkBAIC02ODAsMjUgKzcwOCwyNiBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG4gPSBxLXA7CiAgICAgICAgICAgICBpZiAocFswXSA9PSAnLicgJiYgaXNfc2VwKHBbMV0pKSB7Ci0gICAgICAgICAgICAgICAgd2NzY3B5KGJ1ZiwgcHl0aG9uaG9tZSk7CisgICAgICAgICAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgcHl0aG9uaG9tZSkpCisgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgICAgICAgICAgbi0tOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2NzbmNweShidWYsIHAsIG4pOwogICAgICAgICAgICAgYnVmICs9IG47CisgICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgICAgIGlmIChxID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgICAgIHAgPSBxKzE7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGFyZ3YwX3BhdGgpIHsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIHdjc2NweShidWYsIGFyZ3YwX3BhdGgpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CisgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSAgICAqYnVmID0gTCdcMCc7CisgICAgKihidWYgLSAxKSA9IEwnXDAnOwogICAgIC8qIE5vdyB0byBwdWxsIG9uZSBsYXN0IGhhY2svdHJpY2suICBJZiBzeXMucHJlZml4IGlzCiAgICAgICAgZW1wdHksIHRoZW4gdHJ5IGFuZCBmaW5kIGl0IHNvbWV3aGVyZSBvbiB0aGUgcGF0aHMKICAgICAgICB3ZSBjYWxjdWxhdGVkLiAgV2Ugc2NhbiBiYWNrd2FyZHMsIGFzIG91ciBnZW5lcmFsIHBvbGljeQpkaWZmIC0tZ2l0IGEvUEMvaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jIGIvUEMvaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MzQ3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyLmMKQEAgLTAsMCArMSwyMiBAQAorI2lmZGVmIF9NU0NfVkVSCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmIF9NU0NfVkVSID49IDE5MDAKKy8qIHB5Y29uZmlnLmggdXNlcyB0aGlzIGZ1bmN0aW9uIGluIHRoZSBfUHlfQkVHSU4vRU5EX1NVUFBSRVNTX0lQSAorICogbWFjcm9zLiBJdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmluZWQgd2hlbiBidWlsZGluZyB1c2luZyBNU1ZDCisgKiBlYXJsaWVyIHRoYW4gMTQuMCAoX01TQ19WRVIgPT0gMTkwMCkuCisgKi8KKworc3RhdGljIHZvaWQgX19jZGVjbCBfc2lsZW50X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoCisgICAgd2NoYXJfdCBjb25zdCogZXhwcmVzc2lvbiwKKyAgICB3Y2hhcl90IGNvbnN0KiBmdW5jdGlvbiwKKyAgICB3Y2hhcl90IGNvbnN0KiBmaWxlLAorICAgIHVuc2lnbmVkIGludCBsaW5lLAorICAgIHVpbnRwdHJfdCBwUmVzZXJ2ZWQpIHsgfQorCitfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBfUHlfc2lsZW50X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgPSBfc2lsZW50X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXI7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmMgYi9QQy9sYXVuY2hlci5jCmluZGV4IGZhMDg2ODQuLmZhZGE0YzkgMTAwNjQ0Ci0tLSBhL1BDL2xhdW5jaGVyLmMKKysrIGIvUEMvbGF1bmNoZXIuYwpAQCAtODcsMTYgKzg3LDE2IEBACiAgICAgaWYgKHJjID09IDApIHsgIC8qIGEgV2luZG93cyBlcnJvciAqLwogICAgICAgICB3aW5lcnJvcihHZXRMYXN0RXJyb3IoKSwgd2luX21lc3NhZ2UsIE1TR1NJWkUpOwogICAgICAgICBpZiAobGVuID49IDApIHsKLSAgICAgICAgICAgIF9zbndwcmludGZfcygmbWVzc2FnZVtsZW5dLCBNU0dTSVpFIC0gbGVuLCBfVFJVTkNBVEUsIEwiOiAlcyIsCisgICAgICAgICAgICBfc253cHJpbnRmX3MoJm1lc3NhZ2VbbGVuXSwgTVNHU0laRSAtIGxlbiwgX1RSVU5DQVRFLCBMIjogJWxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5fbWVzc2FnZSk7CiAgICAgICAgIH0KICAgICB9CiAKICNpZiAhZGVmaW5lZChfV0lORE9XUykKLSAgICBmd3ByaW50ZihzdGRlcnIsIEwiJXNcbiIsIG1lc3NhZ2UpOworICAgIGZ3cHJpbnRmKHN0ZGVyciwgTCIlbHNcbiIsIG1lc3NhZ2UpOwogI2Vsc2UKICAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksCi0gICAgICAgICAgICAgICBNQl9PSyk7IAorICAgICAgICAgICAgICAgTUJfT0spOwogI2VuZGlmCiAgICAgRXhpdFByb2Nlc3MocmMpOwogfQpAQCAtMTU3LDE0ICsxNTcsMTkgQEAKIAogc3RhdGljIHNpemVfdCBudW1faW5zdGFsbGVkX3B5dGhvbnMgPSAwOwogCi0vKiB0byBob2xkIFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXFguWVxJbnN0YWxsUGF0aCAqLworLyoKKyAqIFRvIGhvbGQgU09GVFdBUkVcUHl0aG9uXFB5dGhvbkNvcmVcWC5ZLi4uXEluc3RhbGxQYXRoCisgKiBUaGUgdmVyc2lvbiBuYW1lIGNhbiBiZSBsb25nZXIgdGhhbiBNQVhfVkVSU0lPTl9TSVpFLCBidXQgd2lsbCBiZQorICogdHJ1bmNhdGVkIHRvIGp1c3QgWC5ZIGZvciBjb21wYXJpc29ucy4KKyAqLwogI2RlZmluZSBJUF9CQVNFX1NJWkUgNDAKLSNkZWZpbmUgSVBfU0laRSAoSVBfQkFTRV9TSVpFICsgTUFYX1ZFUlNJT05fU0laRSkKKyNkZWZpbmUgSVBfVkVSU0lPTl9TSVpFIDgKKyNkZWZpbmUgSVBfU0laRSAoSVBfQkFTRV9TSVpFICsgSVBfVkVSU0lPTl9TSVpFKQogI2RlZmluZSBDT1JFX1BBVEggTCJTT0ZUV0FSRVxcUHl0aG9uXFxQeXRob25Db3JlIgogCiBzdGF0aWMgd2NoYXJfdCAqIGxvY2F0aW9uX2NoZWNrc1tdID0gewogICAgIEwiXFwiLAotICAgIEwiXFxQQ0J1aWxkXFwiLAorICAgIEwiXFxQQ0J1aWxkXFx3aW4zMlxcIiwKICAgICBMIlxcUENCdWlsZFxcYW1kNjRcXCIsCiAgICAgTlVMTAogfTsKQEAgLTE5NiwzNSArMjAxLDM4IEBACiAgICAgQk9PTCBvazsKICAgICBEV09SRCB0eXBlLCBkYXRhX3NpemUsIGF0dHJzOwogICAgIElOU1RBTExFRF9QWVRIT04gKiBpcCwgKiBwaXA7CisgICAgd2NoYXJfdCBpcF92ZXJzaW9uW0lQX1ZFUlNJT05fU0laRV07CiAgICAgd2NoYXJfdCBpcF9wYXRoW0lQX1NJWkVdOwogICAgIHdjaGFyX3QgKiBjaGVjazsKICAgICB3Y2hhcl90ICoqIGNoZWNrcDsKICAgICB3Y2hhcl90ICprZXlfbmFtZSA9IChyb290ID09IEhLRVlfTE9DQUxfTUFDSElORSkgPyBMIkhLTE0iIDogTCJIS0NVIjsKIAogICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiB1bmFibGUgdG8gb3BlbiBQeXRob25Db3JlIGtleSBpbiAlc1xuIiwKKyAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiB1bmFibGUgdG8gb3BlbiBQeXRob25Db3JlIGtleSBpbiAlbHNcbiIsCiAgICAgICAgICAgICAgIGtleV9uYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgaXAgPSAmaW5zdGFsbGVkX3B5dGhvbnNbbnVtX2luc3RhbGxlZF9weXRob25zXTsKICAgICAgICAgZm9yIChpID0gMDsgbnVtX2luc3RhbGxlZF9weXRob25zIDwgTUFYX0lOU1RBTExFRF9QWVRIT05TOyBpKyspIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IFJlZ0VudW1LZXlXKGNvcmVfcm9vdCwgaSwgaXAtPnZlcnNpb24sIE1BWF9WRVJTSU9OX1NJWkUpOworICAgICAgICAgICAgc3RhdHVzID0gUmVnRW51bUtleVcoY29yZV9yb290LCBpLCBpcF92ZXJzaW9uLCBJUF9WRVJTSU9OX1NJWkUpOwogICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9OT19NT1JFX0lURU1TKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZXJyb3IgKi8KICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJDYW4ndCBlbnVtZXJhdGUgcmVnaXN0cnkga2V5IGZvciB2ZXJzaW9uICVzOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24sIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIkNhbid0IGVudW1lcmF0ZSByZWdpc3RyeSBrZXkgZm9yIHZlcnNpb24gJWxzOiAlbHNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwX3ZlcnNpb24sIG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHdjc25jcHlfcyhpcC0+dmVyc2lvbiwgTUFYX1ZFUlNJT05fU0laRSwgaXBfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1ZFUlNJT05fU0laRS0xKTsKICAgICAgICAgICAgICAgICBfc253cHJpbnRmX3MoaXBfcGF0aCwgSVBfU0laRSwgX1RSVU5DQVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzXFwlc1xcSW5zdGFsbFBhdGgiLCBDT1JFX1BBVEgsIGlwLT52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlbHNcXCVsc1xcSW5zdGFsbFBhdGgiLCBDT1JFX1BBVEgsIGlwX3ZlcnNpb24pOwogICAgICAgICAgICAgICAgIHN0YXR1cyA9IFJlZ09wZW5LZXlFeFcocm9vdCwgaXBfcGF0aCwgMCwgZmxhZ3MsICZpcF9rZXkpOwogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgICAgICB3aW5lcnJvcihzdGF0dXMsIG1lc3NhZ2UsIE1TR1NJWkUpOwogICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiAnbWVzc2FnZScgYWxyZWFkeSBoYXMgYSB0cmFpbGluZyBcbgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVzXFwlczogJXMiLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJWxzXFwlbHM6ICVscyIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSA9IHNpemVvZihpcC0+ZXhlY3V0YWJsZSkgLSAxOwpAQCAtMjMzLDcgKzI0MSw3IEBACiAgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoaXBfa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzXG4iLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJWxzXFwlbHM6ICVsc1xuIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUkVHX1NaKSB7CkBAIC0yNDYsMjcgKzI1NCwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZpcC0+ZXhlY3V0YWJsZVtkYXRhX3NpemVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRIIC0gZGF0YV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRIIC0gZGF0YV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJXMlcyIsIGNoZWNrLCBQWVRIT05fRVhFQ1VUQUJMRSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlbHMlbHMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1coaXAtPmV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVsczogJWxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRycyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJyVzJyBpcyBhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICclbHMnIGlzIGEgXAogZGlyZWN0b3J5XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBhdHRycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmaW5kX2V4aXN0aW5nX3B5dGhvbihpcC0+ZXhlY3V0YWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBhbHJlYWR5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVsczogYWxyZWFkeSBcCiBmb3VuZFxuIiwgaXAtPmV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgdGhlIGV4ZWN1dGFibGUgdHlwZS4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvayA9IEdldEJpbmFyeVR5cGVXKGlwLT5leGVjdXRhYmxlLCAmYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJGYWlsdXJlIGdldHRpbmcgYmluYXJ5IHR5cGU6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIkZhaWx1cmUgZ2V0dGluZyBiaW5hcnkgdHlwZTogJWxzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMjc3LDcgKzI4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5iaXRzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwLT5iaXRzID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJWxzOiBcCiBpbnZhbGlkIGJpbmFyeSB0eXBlOiAlWFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBhdHRycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI5MSw3ICsyOTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlW24gKyAxXSA9IEwnXCInOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlW24gKyAyXSA9IEwnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVscyBcCiBpcyBhICVkYml0IGV4ZWN1dGFibGVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIGlwLT5iaXRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtX2luc3RhbGxlZF9weXRob25zOwpAQCAtMzQxLDcgKzM0OSw3IEBACiAgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZKTsKICAgICAgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0xPQ0FMX01BQ0hJTkUsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZKTsKICAgICB9Ci0jZW5kaWYgICAgCisjZW5kaWYKICAgICAvLyBub3cgaGl0IHRoZSAibmF0aXZlIiBrZXkgZm9yIHRoaXMgcHJvY2VzcyBiaXR0ZWRuZXNzLgogICAgIGRlYnVnKEwibG9jYXRpbmcgUHl0aG9ucyBpbiBuYXRpdmUgcmVnaXN0cnlcbiIpOwogICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEKTsKQEAgLTM3Niw2ICszODQsMzEgQEAKIH0KIAogCitzdGF0aWMgd2NoYXJfdCAqCitmaW5kX3B5dGhvbl9ieV92ZW52KCkKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCB2ZW52X3B5dGhvbltNQVhfUEFUSF07CisgICAgd2NoYXJfdCAqdmlydHVhbF9lbnYgPSBnZXRfZW52KEwiVklSVFVBTF9FTlYiKTsKKyAgICBEV09SRCBhdHRyczsKKworICAgIC8qIENoZWNrIGZvciBWSVJUVUFMX0VOViBlbnZpcm9ubWVudCB2YXJpYWJsZSAqLworICAgIGlmICh2aXJ0dWFsX2VudiA9PSBOVUxMIHx8IHZpcnR1YWxfZW52WzBdID09IEwnXDAnKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENoZWNrIGZvciBhIHB5dGhvbiBleGVjdXRhYmxlIGluIHRoZSB2ZW52ICovCisgICAgZGVidWcoTCJDaGVja2luZyBmb3IgUHl0aG9uIGV4ZWN1dGFibGUgaW4gdmlydHVhbCBlbnYgJyVscydcbiIsIHZpcnR1YWxfZW52KTsKKyAgICBfc253cHJpbnRmX3ModmVudl9weXRob24sIE1BWF9QQVRILCBfVFJVTkNBVEUsCisgICAgICAgICAgICBMIiVsc1xcU2NyaXB0c1xcJWxzIiwgdmlydHVhbF9lbnYsIFBZVEhPTl9FWEVDVVRBQkxFKTsKKyAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh2ZW52X3B5dGhvbik7CisgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgIGRlYnVnKEwiUHl0aG9uIGV4ZWN1dGFibGUgJWxzIG1pc3NpbmcgZnJvbSB2aXJ0dWFsIGVudlxuIiwgdmVudl9weXRob24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gdmVudl9weXRob247Cit9CisKIHN0YXRpYyB3Y2hhcl90IGFwcGRhdGFfaW5pX3BhdGhbTUFYX1BBVEhdOwogc3RhdGljIHdjaGFyX3QgbGF1bmNoZXJfaW5pX3BhdGhbTUFYX1BBVEhdOwogCkBAIC0zOTcsNyArNDMwLDcgQEAKICAgICBEV09SRCBzaXplOwogCiAgICAgLyogRmlyc3QsIHNlYXJjaCB0aGUgZW52aXJvbm1lbnQuICovCi0gICAgX3Nud3ByaW50Zl9zKGNvbmZpZ3VyZWRfdmFsdWUsIE1TR1NJWkUsIF9UUlVOQ0FURSwgTCJweV8lcyIsIGtleSk7CisgICAgX3Nud3ByaW50Zl9zKGNvbmZpZ3VyZWRfdmFsdWUsIE1TR1NJWkUsIF9UUlVOQ0FURSwgTCJweV8lbHMiLCBrZXkpOwogICAgIHJlc3VsdCA9IGdldF9lbnYoY29uZmlndXJlZF92YWx1ZSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmIGFwcGRhdGFfaW5pX3BhdGhbMF0pIHsKICAgICAgICAgLyogTm90IGluIGVudmlyb25tZW50OiBjaGVjayBsb2NhbCBjb25maWd1cmF0aW9uLiAqLwpAQCAtNDIwLDEwICs0NTMsMTAgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIGRlYnVnKEwiZm91bmQgY29uZmlndXJlZCB2YWx1ZSAnJXM9JXMnIGluICVzXG4iLAorICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVscz0lbHMnIGluICVsc1xuIiwKICAgICAgICAgICAgICAga2V5LCByZXN1bHQsIGZvdW5kX2luID8gZm91bmRfaW4gOiBMIih1bmtub3duKSIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVzJ1xuIiwga2V5KTsKKyAgICAgICAgZGVidWcoTCJmb3VuZCBubyBjb25maWd1cmVkIHZhbHVlIGZvciAnJWxzJ1xuIiwga2V5KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ0OSw5ICs0ODIsOSBAQAogICAgIH0KICAgICBpZiAoKndhbnRlZF92ZXIpIHsKICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbih3YW50ZWRfdmVyKTsKLSAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIFB5dGhvbiB2ZXJzaW9uICclcycgZm91bmQgIiwgd2FudGVkX3Zlcik7CisgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJWxzJyBmb3VuZCAiLCB3YW50ZWRfdmVyKTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgZGVidWcoTCInJXMnXG4iLCByZXN1bHQtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgZGVidWcoTCInJWxzJ1xuIiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOwogICAgICAgICB9CkBAIC00NjcsNyArNTAwLDcgQEAKICAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CiAgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBkZWZhdWx0IFB5dGhvbiBmb3VuZCAiKTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVzIGF0ICclcydcbiIsCisgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJWxzIGF0ICclbHMnXG4iLAogICAgICAgICAgICAgICAgICAgcmVzdWx0LT52ZXJzaW9uLCByZXN1bHQtPmV4ZWN1dGFibGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVidWcoTCJubyBpbnRlcnByZXRlclxuIik7CkBAIC01MDUsMTkgKzUzOCwxOSBAQAogICAgIHBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZVcoTlVMTCwgd3JhcHBlZF9zY3JpcHRfcGF0aCwgTUFYX1BBVEgpOwogICAgIHAgPSB3Y3NyY2hyKHdyYXBwZWRfc2NyaXB0X3BhdGgsIEwnLicpOwogICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgZGVidWcoTCJHZXRNb2R1bGVGaWxlTmFtZVcgcmV0dXJuZWQgdmFsdWUgaGFzIG5vIGV4dGVuc2lvbjogJXNcbiIsCisgICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBleHRlbnNpb246ICVsc1xuIiwKICAgICAgICAgICAgICAgd3JhcHBlZF9zY3JpcHRfcGF0aCk7Ci0gICAgICAgIGVycm9yKFJDX05PX1NDUklQVCwgTCJXcmFwcGVyIG5hbWUgJyVzJyBpcyBub3QgdmFsaWQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGVycm9yKFJDX05PX1NDUklQVCwgTCJXcmFwcGVyIG5hbWUgJyVscycgaXMgbm90IHZhbGlkLiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwogICAgIH0KIAogICAgIHdjc25jcHlfcyhwLCBNQVhfUEFUSCAtIChwIC0gd3JhcHBlZF9zY3JpcHRfcGF0aCkgKyAxLCBTQ1JJUFRfU1VGRklYLCBfVFJVTkNBVEUpOwogICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdyYXBwZWRfc2NyaXB0X3BhdGgpOwogICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwotICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiU2NyaXB0IGZpbGUgJyVzJyBpcyBub3QgcHJlc2VudC4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKKyAgICAgICAgZGVidWcoTCJGaWxlICclbHMnIG5vbi1leGlzdGVudFxuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGVycm9yKFJDX05PX1NDUklQVCwgTCJTY3JpcHQgZmlsZSAnJWxzJyBpcyBub3QgcHJlc2VudC4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICB9CiAKLSAgICBkZWJ1ZyhMIlVzaW5nIHdyYXBwZWQgc2NyaXB0IGZpbGUgJyVzJ1xuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgZGVidWcoTCJVc2luZyB3cmFwcGVkIHNjcmlwdCBmaWxlICclbHMnXG4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKIH0KICNlbmRpZgogCkBAIC01NzEsNyArNjA0LDcgQEAKICAgICAvLyB3aW5kb3csIG9yIGZldGNoaW5nIGEgbWVzc2FnZSkuICBBcyB0aGlzIGxhdW5jaGVyIGRvZXNuJ3QgZG8gdGhpcwogICAgIC8vIGRpcmVjdGx5LCB0aGF0IGN1cnNvciByZW1haW5zIGV2ZW4gYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MgZG9lcyB0aGVzZQogICAgIC8vIHRoaW5ncy4gIFdlIGF2b2lkIHRoYXQgYnkgZG9pbmcgYSBzaW1wbGUgcG9zdCtnZXQgbWVzc2FnZS4KLSAgICAvLyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MjkwIGFuZCAKKyAgICAvLyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MjkwIGFuZAogICAgIC8vIGh0dHBzOi8vYml0YnVja2V0Lm9yZy92aW5heS5zYWppcC9weWxhdW5jaGVyL2lzc3VlLzIwL2J1c3ktY3Vyc29yLWZvci1hLWxvbmctdGltZS13aGVuLXJ1bm5pbmcKICAgICBNU0cgbXNnOwogCkBAIC01NzksNyArNjEyLDcgQEAKICAgICBHZXRNZXNzYWdlKCZtc2csIDAsIDAsIDApOwogI2VuZGlmCiAKLSAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclcydcbiIsIGNtZGxpbmUpOworICAgIGRlYnVnKEwicnVuX2NoaWxkOiBhYm91dCB0byBydW4gJyVscydcbiIsIGNtZGxpbmUpOwogICAgIGpvYiA9IENyZWF0ZUpvYk9iamVjdChOVUxMLCBOVUxMKTsKICAgICBvayA9IFF1ZXJ5SW5mb3JtYXRpb25Kb2JPYmplY3Qoam9iLCBKb2JPYmplY3RFeHRlbmRlZExpbWl0SW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8sIHNpemVvZihpbmZvKSwgJnJjKTsKQEAgLTYxMSw3ICs2NDQsNyBAQAogICAgIG9rID0gQ3JlYXRlUHJvY2Vzc1coTlVMTCwgY21kbGluZSwgTlVMTCwgTlVMTCwgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwsICZzaSwgJnBpKTsKICAgICBpZiAoIW9rKQotICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJVbmFibGUgdG8gY3JlYXRlIHByb2Nlc3MgdXNpbmcgJyVzJyIsIGNtZGxpbmUpOworICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJVbmFibGUgdG8gY3JlYXRlIHByb2Nlc3MgdXNpbmcgJyVscyciLCBjbWRsaW5lKTsKICAgICBBc3NpZ25Qcm9jZXNzVG9Kb2JPYmplY3Qoam9iLCBwaS5oUHJvY2Vzcyk7CiAgICAgQ2xvc2VIYW5kbGUocGkuaFRocmVhZCk7CiAgICAgV2FpdEZvclNpbmdsZU9iamVjdEV4KHBpLmhQcm9jZXNzLCBJTkZJTklURSwgRkFMU0UpOwpAQCAtNjQ4LDExICs2ODEsMTEgQEAKICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSk7CiAgICAgICAgIGlmIChub19zdWZmaXgpCiAgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJWxzICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSwgY21kbGluZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIF9zbndwcmludGZfcyhjaGlsZF9jb21tYW5kLCBjaGlsZF9jb21tYW5kX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplIC0gMSwgTCIlcyAlcyAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplIC0gMSwgTCIlbHMgJWxzICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSwgc3VmZml4LCBjbWRsaW5lKTsKICAgICAgICAgcnVuX2NoaWxkKGNoaWxkX2NvbW1hbmQpOwogICAgICAgICBmcmVlKGNoaWxkX2NvbW1hbmQpOwpAQCAtNzkxLDcgKzgyNCw3IEBACiBhZGRfY29tbWFuZCh3Y2hhcl90ICogbmFtZSwgd2NoYXJfdCAqIGNtZGxpbmUpCiB7CiAgICAgaWYgKG51bV9jb21tYW5kcyA+PSBNQVhfQ09NTUFORFMpIHsKLSAgICAgICAgZGVidWcoTCJjYW4ndCBhZGQgJXMgPSAnJXMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKKyAgICAgICAgZGVidWcoTCJjYW4ndCBhZGQgJWxzID0gJyVscyc6IG5vIHJvb21cbiIsIG5hbWUsIGNtZGxpbmUpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgQ09NTUFORCAqIGNwID0gJmNvbW1hbmRzW251bV9jb21tYW5kcysrXTsKQEAgLTgxMywxNCArODQ2LDE0IEBACiAgICAgcmVhZCA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImNvbW1hbmRzIiwgTlVMTCwgTlVMTCwga2V5bmFtZXMsIE1TR1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCk7CiAgICAgaWYgKHJlYWQgPT0gTVNHU0laRSAtIDEpIHsKLSAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgbmFtZXNcbiIsIGNvbmZpZ19wYXRoKTsKKyAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlbHM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yIG5hbWVzXG4iLCBjb25maWdfcGF0aCk7CiAgICAgfQogICAgIGtleSA9IGtleW5hbWVzOwogICAgIHdoaWxlICgqa2V5KSB7CiAgICAgICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIGtleSwgTlVMTCwgdmFsdWUsIE1TR1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCk7CiAgICAgICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7Ci0gICAgICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVzOiBub3QgZW5vdWdoIHNwYWNlIGZvciAlc1xuIiwKKyAgICAgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJWxzOiBub3QgZW5vdWdoIHNwYWNlIGZvciAlbHNcbiIsCiAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCwga2V5KTsKICAgICAgICAgfQogICAgICAgICBjbWRwID0gc2tpcF93aGl0ZXNwYWNlKHZhbHVlKTsKQEAgLTEwOTcsNyArMTEzMCw3IEBACiAgICAgICAgIGlmICgocmVhZCA+PSA0KSAmJiAoYnVmZmVyWzNdID09ICdcbicpICYmIChidWZmZXJbMl0gPT0gJ1xyJykpIHsKICAgICAgICAgICAgIGlwID0gZmluZF9ieV9tYWdpYygoYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF0pICYgMHhGRkZGKTsKICAgICAgICAgICAgIGlmIChpcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlc1xuIiwKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMInNjcmlwdCBmaWxlIGlzIGNvbXBpbGVkIGFnYWluc3QgUHl0aG9uICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICBpcC0+dmVyc2lvbik7CiAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBOVUxMLCBjbWRsaW5lKTsKICAgICAgICAgICAgIH0KQEAgLTEyMDAsNyArMTIzMyw3IEBACiAgICAgICAgICAgICAgICAgaXNfdmlydCA9IHBhcnNlX3NoZWJhbmcoc2hlYmFuZ19saW5lLCBuY2hhcnMsICZjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWZmaXgsICZzZWFyY2gpOwogICAgICAgICAgICAgICAgIGlmIChjb21tYW5kICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJwYXJzZV9zaGViYW5nOiBmb3VuZCBjb21tYW5kOiAlc1xuIiwgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwicGFyc2Vfc2hlYmFuZzogZm91bmQgY29tbWFuZDogJWxzXG4iLCBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc192aXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY29tbWFuZCwgc3VmZml4LCBjbWRsaW5lKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NuY21wKGNvbW1hbmQsIEwicHl0aG9uIiwgNikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJVbmtub3duIHZpcnR1YWwgXAotcGF0aCAnJXMnIiwgY29tbWFuZCk7CitwYXRoICclbHMnIiwgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kICs9IDY7ICAgLyogc2tpcCBwYXN0ICJweXRob24iICovCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoICYmICgoKmNvbW1hbmQgPT0gTCdcMCcpIHx8IGlzc3BhY2UoKmNvbW1hbmQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbW1hbmQgaXMgZWxpZ2libGUgZm9yIHBhdGggc2VhcmNoLCBhbmQgdGhlcmUKQEAgLTEyMjAsOSArMTI1Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJzZWFyY2hpbmcgUEFUSCBmb3IgcHl0aG9uIGV4ZWN1dGFibGVcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9IGZpbmRfb25fcGF0aChMInB5dGhvbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiUHl0aG9uIG9uIHBhdGg6ICVzXG4iLCBjbWQgPyBjbWQtPnZhbHVlIDogTCI8bm90IGZvdW5kPiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiUHl0aG9uIG9uIHBhdGg6ICVsc1xuIiwgY21kID8gY21kLT52YWx1ZSA6IEwiPG5vdCBmb3VuZD4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY21kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlZCBweXRob24gb24gUEFUSDogJXNcbiIsIGNtZC0+dmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZWQgcHl0aG9uIG9uIFBBVEg6ICVsc1xuIiwgY21kLT52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChjbWQtPnZhbHVlLCBzdWZmaXgsIGNtZGxpbmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFeGl0IGhlcmUsIGFzIHdlIGhhdmUgZm91bmQgdGhlIGNvbW1hbmQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIzMywxNCArMTI2NiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpjb21tYW5kICYmICF2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX0JBRF9WSVJUVUFMX1BBVEgsIEwiSW52YWxpZCB2ZXJzaW9uIFwKLXNwZWNpZmljYXRpb246ICclcycuXG5JbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2NyaXB0LCAncHl0aG9uJyBuZWVkcyB0byBiZSBcCitzcGVjaWZpY2F0aW9uOiAnJWxzJy5cbkluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzY3JpcHQsICdweXRob24nIG5lZWRzIHRvIGJlIFwKIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdmVyc2lvbiBzcGVjaWZpZXIuXG5QbGVhc2UgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE8gY291bGQgY2FsbCB2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpICovCiAgICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gXAotKCVzKSBpcyBub3QgaW5zdGFsbGVkIiwgY29tbWFuZCk7CisoJWxzKSBpcyBub3QgaW5zdGFsbGVkIiwgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CkBAIC0xMzAxLDYgKzEzMzQsNyBAQAogewogICAgIHdjaGFyX3QgKiB3cDsKICAgICB3Y2hhcl90ICogY29tbWFuZDsKKyAgICB3Y2hhcl90ICogZXhlY3V0YWJsZTsKICAgICB3Y2hhcl90ICogcDsKICAgICBpbnQgcmMgPSAwOwogICAgIHNpemVfdCBwbGVuOwpAQCAtMTM0NywxNyArMTM4MSwxNyBAQAogICAgICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSBwbGVuLCBMIlxccHkuaW5pIiwgX1RSVU5DQVRFKTsKICAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1coYXBwZGF0YV9pbmlfcGF0aCk7CiAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJWxzJyBub24tZXhpc3RlbnRcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOwogICAgICAgICAgICAgYXBwZGF0YV9pbmlfcGF0aFswXSA9IEwnXDAnOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoTCJVc2luZyBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVzJ1xuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJWxzJ1xuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcGxlbiA9IEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBsYXVuY2hlcl9pbmlfcGF0aCwgTUFYX1BBVEgpOwogICAgIHNpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhsYXVuY2hlcl9pbmlfcGF0aCwgJnNpemUpOwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOwotICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mb1NpemUgZmFpbGVkOiAlc1xuIiwgbWVzc2FnZSk7CisgICAgICAgIGRlYnVnKEwiR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSBmYWlsZWQ6ICVsc1xuIiwgbWVzc2FnZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB2ZXJzaW9uX2RhdGEgPSBtYWxsb2Moc2l6ZSk7CkBAIC0xMzgxLDcgKzE0MTUsNyBAQAogICAgIH0KICAgICBwID0gd2NzcmNocihsYXVuY2hlcl9pbmlfcGF0aCwgTCdcXCcpOwogICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgZGVidWcoTCJHZXRNb2R1bGVGaWxlTmFtZVcgcmV0dXJuZWQgdmFsdWUgaGFzIG5vIGJhY2tzbGFzaDogJXNcbiIsCisgICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBiYWNrc2xhc2g6ICVsc1xuIiwKICAgICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGgpOwogICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOwogICAgIH0KQEAgLTEzOTAsMTUgKzE0MjQsMTUgQEAKICAgICAgICAgICAgICAgICAgIF9UUlVOQ0FURSk7CiAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGxhdW5jaGVyX2luaV9wYXRoKTsKICAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7Ci0gICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJWxzJyBub24tZXhpc3RlbnRcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKICAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoWzBdID0gTCdcMCc7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVzJ1xuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlICclbHMnXG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBjb21tYW5kID0gc2tpcF9tZShHZXRDb21tYW5kTGluZVcoKSk7Ci0gICAgZGVidWcoTCJDYWxsZWQgd2l0aCBjb21tYW5kIGxpbmU6ICVzXG4iLCBjb21tYW5kKTsKKyAgICBkZWJ1ZyhMIkNhbGxlZCB3aXRoIGNvbW1hbmQgbGluZTogJWxzXG4iLCBjb21tYW5kKTsKIAogI2lmIGRlZmluZWQoU0NSSVBUX1dSQVBQRVIpCiAgICAgLyogVGhlIGxhdW5jaGVyIGlzIGJlaW5nIHVzZWQgaW4gInNjcmlwdCB3cmFwcGVyIiBtb2RlLgpAQCAtMTQyMiw3ICsxNDU2LDcgQEAKICAgICAgICAgd2NzY3B5X3MobmV3Y29tbWFuZCwgbmV3bGVuLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICAgICAgd2NzY2F0X3MobmV3Y29tbWFuZCwgbmV3bGVuLCBMIiAiKTsKICAgICAgICAgd2NzY2F0X3MobmV3Y29tbWFuZCwgbmV3bGVuLCBjb21tYW5kKTsKLSAgICAgICAgZGVidWcoTCJSdW5uaW5nIHdyYXBwZWQgc2NyaXB0IHdpdGggY29tbWFuZCBsaW5lICclcydcbiIsIG5ld2NvbW1hbmQpOworICAgICAgICBkZWJ1ZyhMIlJ1bm5pbmcgd3JhcHBlZCBzY3JpcHQgd2l0aCBjb21tYW5kIGxpbmUgJyVscydcbiIsIG5ld2NvbW1hbmQpOwogICAgICAgICByZWFkX2NvbW1hbmRzKCk7CiAgICAgICAgIGF2WzBdID0gd3JhcHBlZF9zY3JpcHRfcGF0aDsKICAgICAgICAgYXZbMV0gPSBOVUxMOwpAQCAtMTQ0Myw4ICsxNDc3LDkgQEAKICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0pOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJXMpIG5vdCBcCisgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJWxzKSBub3QgXAogaW5zdGFsbGVkIiwgJnBbMV0pOworICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGlwLT5leGVjdXRhYmxlOwogICAgICAgICAgICAgY29tbWFuZCArPSB3Y3NsZW4ocCk7CiAgICAgICAgICAgICBjb21tYW5kID0gc2tpcF93aGl0ZXNwYWNlKGNvbW1hbmQpOwogICAgICAgICB9CkBAIC0xNDYyLDkgKzE0OTcsMTYgQEAKICNlbmRpZgogCiAgICAgaWYgKCF2YWxpZCkgewotICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKLSAgICAgICAgaWYgKGlwID09IE5VTEwpCi0gICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiQ2FuJ3QgZmluZCBhIGRlZmF1bHQgUHl0aG9uLiIpOworICAgICAgICAvKiBMb29rIGZvciBhbiBhY3RpdmUgdmlydHVhbGVudiAqLworICAgICAgICBleGVjdXRhYmxlID0gZmluZF9weXRob25fYnlfdmVudigpOworCisgICAgICAgIC8qIElmIHdlIGRpZG4ndCBmaW5kIG9uZSwgbG9vayBmb3IgdGhlIGRlZmF1bHQgUHl0aG9uICovCisgICAgICAgIGlmIChleGVjdXRhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOworICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBpcC0+ZXhlY3V0YWJsZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoKGFyZ2MgPT0gMikgJiYgKCFfd2NzaWNtcChwLCBMIi1oIikgfHwgIV93Y3NpY21wKHAsIEwiLS1oZWxwIikpKSB7CiAjaWYgZGVmaW5lZChfTV9YNjQpCiAgICAgICAgICAgICBCT09MIGNhbkRvNjRiaXQgPSBUUlVFOwpAQCAtMTQ3Niw5ICsxNTE4LDkgQEAKIAogICAgICAgICAgICAgZ2V0X3ZlcnNpb25faW5mbyh2ZXJzaW9uX3RleHQsIE1BWF9QQVRIKTsKICAgICAgICAgICAgIGZ3cHJpbnRmKHN0ZG91dCwgTCJcCi1QeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgVmVyc2lvbiAlc1xuXG4iLCB2ZXJzaW9uX3RleHQpOworUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIFZlcnNpb24gJWxzXG5cbiIsIHZlcnNpb25fdGV4dCk7CiAgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAotdXNhZ2U6ICVzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gWyBweXRob24tYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOwordXNhZ2U6ICVscyBbIGxhdW5jaGVyLWFyZ3VtZW50cyBdIFsgcHl0aG9uLWFyZ3VtZW50cyBdIHNjcmlwdCBbIHNjcmlwdC1hcmd1bWVudHMgXVxuXG4iLCBhcmd2WzBdKTsKICAgICAgICAgICAgIGZwdXR3cyhMIlwKIExhdW5jaGVyIGFyZ3VtZW50czpcblxuXAogLTIgICAgIDogTGF1bmNoIHRoZSBsYXRlc3QgUHl0aG9uIDIueCB2ZXJzaW9uXG5cCkBAIC0xNDkyLDcgKzE1MzQsNyBAQAogICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBOVUxMLCBjb21tYW5kKTsKKyAgICBpbnZva2VfY2hpbGQoZXhlY3V0YWJsZSwgTlVMTCwgY29tbWFuZCk7CiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS9QQy9tc3ZjcnRtb2R1bGUuYyBiL1BDL21zdmNydG1vZHVsZS5jCmluZGV4IDE4ZGVjNmQuLjUyZDQxMDAgMTAwNjQ0Ci0tLSBhL1BDL21zdmNydG1vZHVsZS5jCisrKyBiL1BDL21zdmNydG1vZHVsZS5jCkBAIC0zMiw0MjEgKzMyLDQ1MSBAQAogI2VuZGlmCiAjZW5kaWYKIAotLy8gRm9yY2UgdGhlIG1hbGxvYyBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCwgYW5kIGZyZWUgdW51c2VkIGJsb2NrcwotLy8gYmFjayB0byB0aGUgT1MuICAoQWNjb3JkaW5nIHRvIHRoZSBkb2NzLCBvbmx5IHdvcmtzIG9uIE5ULikKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfaGVhcG1pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aGVhcG1pbiIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIFB5X2ludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X2ludHB0cl90JworICAgIGZvcm1hdF91bml0ID0gJyJfUHlfUEFSU0VfSU5UUFRSIicKIAorY2xhc3MgaGFuZGxlX3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X2ludHB0cl90JworICAgIGNhc3QgPSAnKHZvaWQgKiknCisgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVZvaWRQdHInCisKK2NsYXNzIGJ5dGVfY2hhcl9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50JworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIGRhdGEuZGVjbGFyYXRpb25zLmFwcGVuZCgnY2hhciBzWzFdOycpCisgICAgICAgIGRhdGEucmV0dXJuX3ZhbHVlID0gJ3NbMF0nCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7XG4nKQorCitjbGFzcyB3Y2hhcl90X3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICd3Y2hhcl90JworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoX3JldHVybl92YWx1ZSk7XG4nKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmE1NGZjNGU3M2QwYjM2N10qLworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgbXN2Y3J0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mMzFhODdhNzgzZDAzNmNkXSovCisKKyNpbmNsdWRlICJjbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmhlYXBtaW4KKworTWluaW1pemUgdGhlIG1hbGxvYygpIGhlYXAuCisKK0ZvcmNlIHRoZSBtYWxsb2MoKSBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3MKK3RvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyBPU0Vycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2hlYXBtaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2NGY4NjZmZWI1N2M0MzYgaW5wdXQ9ODJlMTc3MWQyMWJkZTJkOF0qLworewogICAgIGlmIChfaGVhcG1pbigpICE9IDApCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQubG9ja2luZwogCi1QeURvY19TVFJWQVIoaGVhcG1pbl9kb2MsCi0iaGVhcG1pbigpIC0+IE5vbmVcblwKLVxuXAotRm9yY2UgdGhlIG1hbGxvYygpIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwIGFuZCByZXR1cm4gdW51c2VkIGJsb2Nrc1xuXAotdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIElPRXJyb3IuIik7CisgICAgZmQ6IGludAorICAgIG1vZGU6IGludAorICAgIG5ieXRlczogbG9uZworICAgIC8KIAotLy8gUGVyZm9ybSBsb2NraW5nIG9wZXJhdGlvbnMgb24gYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yLgorTG9jayBwYXJ0IG9mIGEgZmlsZSBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQgZnJvbSB0aGUgQyBydW50aW1lLgorCitSYWlzZXMgSU9FcnJvciBvbiBmYWlsdXJlLiBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20KK3RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yIG5ieXRlcyBieXRlcywgYW5kIG1heSBjb250aW51ZSBiZXlvbmQKK3RoZSBlbmQgb2YgdGhlIGZpbGUuIG1vZGUgbXVzdCBiZSBvbmUgb2YgdGhlIExLXyogY29uc3RhbnRzIGxpc3RlZAorYmVsb3cuIE11bHRpcGxlIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0CittYXkgbm90IG92ZXJsYXAuIEFkamFjZW50IHJlZ2lvbnMgYXJlIG5vdCBtZXJnZWQ7IHRoZXkgbXVzdCBiZSB1bmxvY2tlZAoraW5kaXZpZHVhbGx5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2xvY2tpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXN2Y3J0X2xvY2tpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlLCBsb25nIG5ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZmY0MWU1ZTc2ZDU0NGRlIGlucHV0PWQ5ZjEzZjBmNmE3MTNiYTddKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgaW50IG1vZGU7Ci0gICAgbG9uZyBuYnl0ZXM7CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlsOmxvY2tpbmciLCAmZmQsICZtb2RlLCAmbmJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZXJyID0gX2xvY2tpbmcoZmQsIG1vZGUsIG5ieXRlcyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihsb2NraW5nX2RvYywKLSJsb2NraW5nKGZkLCBtb2RlLCBuYnl0ZXMpIC0+IE5vbmVcblwKLVxuXAotTG9jayBwYXJ0IG9mIGEgZmlsZSBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQgZnJvbSB0aGUgQyBydW50aW1lLlxuXAotUmFpc2VzIElPRXJyb3Igb24gZmFpbHVyZS4gVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tXG5cCi10aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGZvciBuYnl0ZXMgYnl0ZXMsIGFuZCBtYXkgY29udGludWUgYmV5b25kXG5cCi10aGUgZW5kIG9mIHRoZSBmaWxlLiBtb2RlIG11c3QgYmUgb25lIG9mIHRoZSBMS18qIGNvbnN0YW50cyBsaXN0ZWRcblwKLWJlbG93LiBNdWx0aXBsZSByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dFxuXAotbWF5IG5vdCBvdmVybGFwLiBBZGphY2VudCByZWdpb25zIGFyZSBub3QgbWVyZ2VkOyB0aGV5IG11c3QgYmUgdW5sb2NrZWRcblwKLWluZGl2aWR1YWxseS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5zZXRtb2RlIC0+IGxvbmcKIAotLy8gU2V0IHRoZSBmaWxlIHRyYW5zbGF0aW9uIG1vZGUgZm9yIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvci4KLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfc2V0bW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgZmQ6IGludAorICAgIG1vZGUgYXMgZmxhZ3M6IGludAorICAgIC8KKworU2V0IHRoZSBsaW5lLWVuZCB0cmFuc2xhdGlvbiBtb2RlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCitUbyBzZXQgaXQgdG8gdGV4dCBtb2RlLCBmbGFncyBzaG91bGQgYmUgb3MuT19URVhUOyBmb3IgYmluYXJ5LCBpdAorc2hvdWxkIGJlIG9zLk9fQklOQVJZLgorCitSZXR1cm4gdmFsdWUgaXMgdGhlIHByZXZpb3VzIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfc2V0bW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjODRlNWIzN2M1ODZkMGQgaW5wdXQ9NzZlN2MwMWY2YjEzN2Y3NV0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgZmxhZ3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpOnNldG1vZGUiLCAmZmQsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZmxhZ3MgPSBfc2V0bW9kZShmZCwgZmxhZ3MpOwogICAgIGlmIChmbGFncyA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhmbGFncyk7CisgICAgcmV0dXJuIGZsYWdzOwogfQogCi1QeURvY19TVFJWQVIoc2V0bW9kZV9kb2MsCi0ic2V0bW9kZShmZCwgbW9kZSkgLT4gUHJldmlvdXMgbW9kZVxuXAotXG5cCi1TZXQgdGhlIGxpbmUtZW5kIHRyYW5zbGF0aW9uIG1vZGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuIFRvIHNldFxuXAotaXQgdG8gdGV4dCBtb2RlLCBmbGFncyBzaG91bGQgYmUgb3MuT19URVhUOyBmb3IgYmluYXJ5LCBpdCBzaG91bGQgYmVcblwKLW9zLk9fQklOQVJZLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlIC0+IGxvbmcKIAotLy8gQ29udmVydCBhbiBPUyBmaWxlIGhhbmRsZSB0byBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IuCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgZmxhZ3M6IGludAorICAgIC8KKworQ3JlYXRlIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBmaWxlIGhhbmRsZSBoYW5kbGUuCisKK1RoZSBmbGFncyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgYml0d2lzZSBPUiBvZiBvcy5PX0FQUEVORCwgb3MuT19SRE9OTFksCithbmQgb3MuT19URVhULiBUaGUgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yIG1heSBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyCit0byBvcy5mZG9wZW4oKSB0byBjcmVhdGUgYSBmaWxlIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NmJjZTMyNTgyYzQ5YzA2IGlucHV0PTRkODUxNmVkMzJkYjhmNjVdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7Ci0gICAgaW50IGZsYWdzOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICJpOm9wZW5fb3NmaGFuZGxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBmZCA9IF9vcGVuX29zZmhhbmRsZShoYW5kbGUsIGZsYWdzKTsKICAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZmQpOworICAgIHJldHVybiBmZDsKIH0KIAotUHlEb2NfU1RSVkFSKG9wZW5fb3NmaGFuZGxlX2RvYywKLSJvcGVuX29zZmhhbmRsZShoYW5kbGUsIGZsYWdzKSAtPiBmaWxlIGRlc2NyaXB0b3JcblwKLVxuXAotQ3JlYXRlIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBmaWxlIGhhbmRsZSBoYW5kbGUuIFRoZVxuXAotZmxhZ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGJpdHdpc2UgT1Igb2Ygb3MuT19BUFBFTkQsIG9zLk9fUkRPTkxZLFxuXAotYW5kIG9zLk9fVEVYVC4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCBhcyBhIHBhcmFtZXRlclxuXAotdG8gb3MuZmRvcGVuKCkgdG8gY3JlYXRlIGEgZmlsZSBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0X29zZmhhbmRsZSAtPiBoYW5kbGUKIAotLy8gQ29udmVydCBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgdG8gYW4gT1MgZmlsZSBoYW5kbGUuCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldF9vc2ZoYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICAvCisKK1JldHVybiB0aGUgZmlsZSBoYW5kbGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKK1JhaXNlcyBJT0Vycm9yIGlmIGZkIGlzIG5vdCByZWNvZ25pemVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfaW50cHRyX3QKK21zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3NmJmZjUyNTg2YjU1YTYgaW5wdXQ9YzdkMThkMDJjODAxN2VjMV0qLwogewotICAgIGludCBmZDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgUHlfaW50cHRyX3QgaGFuZGxlID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoYW5kbGUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICB9CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0KLSAgICBoYW5kbGUgPSBfZ2V0X29zZmhhbmRsZShmZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLQotICAgIC8qIHRlY2huaWNhbGx5ICdoYW5kbGUnIGlzIG5vdCBhIHBvaW50ZXIsIGJ1dCBhIGludGVnZXIgYXMKLSAgICAgICBsYXJnZSBhcyBhIHBvaW50ZXIsIFB5dGhvbidzICpWb2lkUHRyIGludGVyZmFjZSBpcyB0aGUKLSAgICAgICBtb3N0IGFwcHJvcHJpYXRlIGhlcmUgKi8KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkKiloYW5kbGUpOworICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXRfb3NmaGFuZGxlX2RvYywKLSJnZXRfb3NmaGFuZGxlKGZkKSAtPiBmaWxlIGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBSYWlzZXMgSU9FcnJvclxuXAotaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuIik7Ci0KIC8qIENvbnNvbGUgSS9PICovCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQua2JoaXQgLT4gbG9uZwogCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2tiaGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JldHVybiB0cnVlIGlmIGEga2V5cHJlc3MgaXMgd2FpdGluZyB0byBiZSByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X2tiaGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYjcyOTNmY2JlNWNiMjRlIGlucHV0PWU3MGQ2NzhhNWMyZjZhY2NdKi8KIHsKLSAgICBpbnQgb2s7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjprYmhpdCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG9rID0gX2tiaGl0KCk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvayk7CisgICAgcmV0dXJuIF9rYmhpdCgpOwogfQogCi1QeURvY19TVFJWQVIoa2JoaXRfZG9jLAotImtiaGl0KCkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gdHJ1ZSBpZiBhIGtleXByZXNzIGlzIHdhaXRpbmcgdG8gYmUgcmVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5nZXRjaCAtPiBieXRlX2NoYXIKIAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitSZWFkIGEga2V5cHJlc3MgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBhcyBhIGJ5dGUgc3RyaW5nLgorCitOb3RoaW5nIGlzIGVjaG9lZCB0byB0aGUgY29uc29sZS4gVGhpcyBjYWxsIHdpbGwgYmxvY2sgaWYgYSBrZXlwcmVzcyBpcworbm90IGFscmVhZHkgYXZhaWxhYmxlLCBidXQgd2lsbCBub3Qgd2FpdCBmb3IgRW50ZXIgdG8gYmUgcHJlc3NlZC4gSWYgdGhlCitwcmVzc2VkIGtleSB3YXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGtleSwgdGhpcyB3aWxsIHJldHVybiAnXDAwMCcgb3IKKydceGUwJzsgdGhlIG5leHQgY2FsbCB3aWxsIHJldHVybiB0aGUga2V5Y29kZS4gVGhlIENvbnRyb2wtQyBrZXlwcmVzcworY2Fubm90IGJlIHJlYWQgd2l0aCB0aGlzIGZ1bmN0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Cittc3ZjcnRfZ2V0Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5OWUzZDg5ZjQ5YzE2NmEgaW5wdXQ9MzdhNDBjZjBlZDBkMTE1M10qLwogewogICAgIGludCBjaDsKLSAgICBjaGFyIHNbMV07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXRjaCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXRjaCgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgc1swXSA9IGNoOwotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworICAgIHJldHVybiBjaDsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGNoX2RvYywKLSJnZXRjaCgpIC0+IGtleSBjaGFyYWN0ZXJcblwKLVxuXAotUmVhZCBhIGtleXByZXNzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgYXMgYSBieXRlIHN0cmluZy5cblwKLU5vdGhpbmcgaXMgZWNob2VkIHRvIHRoZSBjb25zb2xlLiBUaGlzIGNhbGwgd2lsbCBibG9jayBpZiBhIGtleXByZXNzIGlzXG5cCi1ub3QgYWxyZWFkeSBhdmFpbGFibGUsIGJ1dCB3aWxsIG5vdCB3YWl0IGZvciBFbnRlciB0byBiZSBwcmVzc2VkLiBJZiB0aGVcblwKLXByZXNzZWQga2V5IHdhcyBhIHNwZWNpYWwgZnVuY3Rpb24ga2V5LCB0aGlzIHdpbGwgcmV0dXJuICdcXDAwMCcgb3JcblwKLSdcXHhlMCc7IHRoZSBuZXh0IGNhbGwgd2lsbCByZXR1cm4gdGhlIGtleWNvZGUuIFRoZSBDb250cm9sLUMga2V5cHJlc3NcblwKLWNhbm5vdCBiZSByZWFkIHdpdGggdGhpcyBmdW5jdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5nZXR3Y2ggLT4gd2NoYXJfdAogCi0jaWZkZWYgX1dDT05JT19ERUZJTkVECi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitXaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaCgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgd2NoYXJfdAorbXN2Y3J0X2dldHdjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWQzNzYyODYxMzI4YjFmZSBpbnB1dD0yN2IzZGVjOGFkODIzZDdjXSovCiB7CiAgICAgd2NoYXJfdCBjaDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldHdjaCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2goKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOworICAgIHJldHVybiBjaDsKIH0KIAotUHlEb2NfU1RSVkFSKGdldHdjaF9kb2MsCi0iZ2V0d2NoKCkgLT4gVW5pY29kZSBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuIik7Ci0jZW5kaWYKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5nZXRjaGUgLT4gYnl0ZV9jaGFyCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0Y2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1NpbWlsYXIgdG8gZ2V0Y2goKSwgYnV0IHRoZSBrZXlwcmVzcyB3aWxsIGJlIGVjaG9lZCBpZiBwb3NzaWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGFhMzY5YmU2NTUwMDY4ZSBpbnB1dD00MzMxMWFkZTllZDRhOWMwXSovCiB7CiAgICAgaW50IGNoOwotICAgIGNoYXIgc1sxXTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldGNoZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXRjaGUoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHNbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXRjaGVfZG9jLAotImdldGNoZSgpIC0+IGtleSBjaGFyYWN0ZXJcblwKLVxuXAotU2ltaWxhciB0byBnZXRjaCgpLCBidXQgdGhlIGtleXByZXNzIHdpbGwgYmUgZWNob2VkIGlmIGl0IHJlcHJlc2VudHNcblwKLWEgcHJpbnRhYmxlIGNoYXJhY3Rlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5nZXR3Y2hlIC0+IHdjaGFyX3QKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXR3Y2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1dpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoZSgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgd2NoYXJfdAorbXN2Y3J0X2dldHdjaGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2OTNjZjc4ZTNlYTBjZjYgaW5wdXQ9NDkzMzdkNTlkMWE1OTFmOF0qLwogewogICAgIHdjaGFyX3QgY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXR3Y2hlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldHdjaGUoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOworICAgIHJldHVybiBjaDsKIH0KIAotUHlEb2NfU1RSVkFSKGdldHdjaGVfZG9jLAotImdldHdjaGUoKSAtPiBVbmljb2RlIGtleSBjaGFyYWN0ZXJcblwKLVxuXAotV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2hlKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuIik7Ci0jZW5kaWYKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5wdXRjaAorCisgICAgY2hhcjogY2hhcgorICAgIC8KKworUHJpbnQgdGhlIGJ5dGUgc3RyaW5nIGNoYXIgdG8gdGhlIGNvbnNvbGUgd2l0aG91dCBidWZmZXJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfcHV0Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXN2Y3J0X3B1dGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwNTU0OGIxMTU1NGYzNmYgaW5wdXQ9ZWMwNzhkZDEwY2IwNTRkNl0qLwogewotICAgIGNoYXIgY2g7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImM6cHV0Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIF9wdXRjaChjaCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIF9wdXRjaChjaGFyX3ZhbHVlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHB1dGNoX2RvYywKLSJwdXRjaChjaGFyKSAtPiBOb25lXG5cCi1cblwKLVByaW50IHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIHRoZSBjb25zb2xlIHdpdGhvdXQgYnVmZmVyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnB1dHdjaAogCi0jaWZkZWYgX1dDT05JT19ERUZJTkVECisgICAgdW5pY29kZV9jaGFyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworV2lkZSBjaGFyIHZhcmlhbnQgb2YgcHV0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9wdXR3Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXN2Y3J0X3B1dHdjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB1bmljb2RlX2NoYXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzIxNmE3MzY5NGNhNzNkZCBpbnB1dD05OTZjY2QwYmJjYmFjNGMzXSovCiB7Ci0gICAgaW50IGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDOnB1dHdjaCIsICZjaCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgX3B1dHdjaChjaCk7CisgICAgX3B1dHdjaCh1bmljb2RlX2NoYXIpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiB9CiAKLVB5RG9jX1NUUlZBUihwdXR3Y2hfZG9jLAotInB1dHdjaCh1bmljb2RlX2NoYXIpIC0+IE5vbmVcblwKLVxuXAotV2lkZSBjaGFyIHZhcmlhbnQgb2YgcHV0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKLSNlbmRpZgorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnVuZ2V0Y2gKKworICAgIGNoYXI6IGNoYXIKKyAgICAvCisKK09wcG9zaXRlIG9mIGdldGNoLgorCitDYXVzZSB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byBiZSAicHVzaGVkIGJhY2siIGludG8gdGhlCitjb25zb2xlIGJ1ZmZlcjsgaXQgd2lsbCBiZSB0aGUgbmV4dCBjaGFyYWN0ZXIgcmVhZCBieQorZ2V0Y2goKSBvciBnZXRjaGUoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF91bmdldGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF91bmdldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5YTRjZDMyNDk3MDllYzkgaW5wdXQ9MjJmMDdlZTkwMDFiYmYwZl0qLwogewotICAgIGNoYXIgY2g7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImM6dW5nZXRjaCIsICZjaCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF91bmdldGNoKGNoKSA9PSBFT0YpCisgICAgaWYgKF91bmdldGNoKGNoYXJfdmFsdWUpID09IEVPRikKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmdldGNoX2RvYywKLSJ1bmdldGNoKGNoYXIpIC0+IE5vbmVcblwKLVxuXAotQ2F1c2UgdGhlIGJ5dGUgc3RyaW5nIGNoYXIgdG8gYmUgXCJwdXNoZWQgYmFja1wiIGludG8gdGhlXG5cCi1jb25zb2xlIGJ1ZmZlcjsgaXQgd2lsbCBiZSB0aGUgbmV4dCBjaGFyYWN0ZXIgcmVhZCBieVxuXAotZ2V0Y2goKSBvciBnZXRjaGUoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC51bmdldHdjaAogCi0jaWZkZWYgX1dDT05JT19ERUZJTkVECisgICAgdW5pY29kZV9jaGFyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworV2lkZSBjaGFyIHZhcmlhbnQgb2YgdW5nZXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3VuZ2V0d2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF91bmdldHdjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB1bmljb2RlX2NoYXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWVlNzY3NDcxMDMyMmJkMSBpbnB1dD04M2VjMDQ5MmJlMDRkNTY0XSovCiB7Ci0gICAgaW50IGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDOnVuZ2V0d2NoIiwgJmNoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoX3VuZ2V0d2NoKGNoKSA9PSBXRU9GKQorICAgIGlmIChfdW5nZXR3Y2godW5pY29kZV9jaGFyKSA9PSBXRU9GKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLQotUHlEb2NfU1RSVkFSKHVuZ2V0d2NoX2RvYywKLSJ1bmdldHdjaCh1bmljb2RlX2NoYXIpIC0+IE5vbmVcblwKLVxuXAotV2lkZSBjaGFyIHZhcmlhbnQgb2YgdW5nZXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCi0KLXN0YXRpYyB2b2lkCi1pbnNlcnRpbnQoUHlPYmplY3QgKmQsIGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCAqdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgdmFsdWUpOwotICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgLyogRG9uJ3QgYm90aGVyIHJlcG9ydGluZyB0aGlzIGVycm9yICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2lmZGVmIF9ERUJVRworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUgLT4gbG9uZwogCi1zdGF0aWMgUHlPYmplY3QqCi1tc3ZjcnRfc2V0cmVwb3J0ZmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgdHlwZTogaW50CisgICAgZmlsZTogaW50CisgICAgLworCitXcmFwcGVyIGFyb3VuZCBfQ3J0U2V0UmVwb3J0RmlsZS4KKworT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IGZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGMzNjQ0ZmIyZWRmYTgwOCBpbnB1dD1iYjhmNzIxYTYwNGZjYzQ1XSovCiB7Ci0gICAgaW50IHR5cGUsIGZpbGU7Ci0gICAgX0hGSUxFIHJlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmdHlwZSwgJmZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBfQ3J0U2V0UmVwb3J0RmlsZSh0eXBlLCAoX0hGSUxFKWZpbGUpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmVzKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIChsb25nKV9DcnRTZXRSZXBvcnRGaWxlKHR5cGUsIChfSEZJTEUpZmlsZSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1zdmNydF9zZXRyZXBvcnRtb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5DcnRTZXRSZXBvcnRNb2RlIC0+IGxvbmcKKworICAgIHR5cGU6IGludAorICAgIG1vZGU6IGludAorICAgIC8KKworV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydE1vZGUuCisKK09ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9DcnRTZXRSZXBvcnRNb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHR5cGUsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0MDdmYmY4NzE2YTUyYjkgaW5wdXQ9OTMxOWQyOWI0MzE5NDI2Yl0qLwogewotICAgIGludCB0eXBlLCBtb2RlOwogICAgIGludCByZXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJnR5cGUsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzID0gX0NydFNldFJlcG9ydE1vZGUodHlwZSwgbW9kZSk7CiAgICAgaWYgKHJlcyA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJlcyk7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tc3ZjcnRfc2V0ZXJyb3Jtb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgbW9kZSwgcmVzOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LnNldF9lcnJvcl9tb2RlIC0+IGxvbmcKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gX3NldF9lcnJvcl9tb2RlKG1vZGUpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKKyAgICBtb2RlOiBpbnQKKyAgICAvCisKK1dyYXBwZXIgYXJvdW5kIF9zZXRfZXJyb3JfbW9kZS4KKworT25seSBhdmFpbGFibGUgb24gRGVidWcgYnVpbGRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjIxNDhhZGZmYTkwODY3ZCBpbnB1dD0wNDZmY2E1OWMwZjIwODcyXSovCit7CisgICAgcmV0dXJuIF9zZXRfZXJyb3JfbW9kZShtb2RlKTsKIH0KKyNlbmRpZiAvKiBfREVCVUcgKi8KIAotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuU2V0RXJyb3JNb2RlCiAKLXN0YXRpYyBQeU9iamVjdCoKLXNldGVycm9ybW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgbW9kZTogdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSkKKyAgICAvCisKK1dyYXBwZXIgYXJvdW5kIFNldEVycm9yTW9kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9TZXRFcnJvck1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1bnNpZ25lZCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDRjNjBiMDg1YmU3OWM2IGlucHV0PWQ4YjE2NzI1OGQzMmQ5MDddKi8KIHsKLSAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcmVzOworICAgIHVuc2lnbmVkIGludCByZXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkkiLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFNldEVycm9yTW9kZShtb2RlKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZGEzOWEzZWU1ZTZiNGIwZF0qLwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtc3ZjcnRfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJoZWFwbWluIiwgICAgICAgICAgICAgICAgIG1zdmNydF9oZWFwbWluLCBNRVRIX1ZBUkFSR1MsIGhlYXBtaW5fZG9jfSwKLSAgICB7ImxvY2tpbmciLCAgICAgICAgICAgICBtc3ZjcnRfbG9ja2luZywgTUVUSF9WQVJBUkdTLCBsb2NraW5nX2RvY30sCi0gICAgeyJzZXRtb2RlIiwgICAgICAgICAgICAgICAgIG1zdmNydF9zZXRtb2RlLCBNRVRIX1ZBUkFSR1MsIHNldG1vZGVfZG9jfSwKLSAgICB7Im9wZW5fb3NmaGFuZGxlIiwgICAgICAgICAgbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG9wZW5fb3NmaGFuZGxlX2RvY30sCi0gICAgeyJnZXRfb3NmaGFuZGxlIiwgICAgICAgICAgIG1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIGdldF9vc2ZoYW5kbGVfZG9jfSwKLSAgICB7ImtiaGl0IiwgICAgICAgICAgICAgICAgICAgbXN2Y3J0X2tiaGl0LCBNRVRIX1ZBUkFSR1MsIGtiaGl0X2RvY30sCi0gICAgeyJnZXRjaCIsICAgICAgICAgICAgICAgICAgIG1zdmNydF9nZXRjaCwgTUVUSF9WQVJBUkdTLCBnZXRjaF9kb2N9LAotICAgIHsiZ2V0Y2hlIiwgICAgICAgICAgICAgICAgICBtc3ZjcnRfZ2V0Y2hlLCBNRVRIX1ZBUkFSR1MsIGdldGNoZV9kb2N9LAotICAgIHsicHV0Y2giLCAgICAgICAgICAgICAgICAgICBtc3ZjcnRfcHV0Y2gsIE1FVEhfVkFSQVJHUywgcHV0Y2hfZG9jfSwKLSAgICB7InVuZ2V0Y2giLCAgICAgICAgICAgICAgICAgbXN2Y3J0X3VuZ2V0Y2gsIE1FVEhfVkFSQVJHUywgdW5nZXRjaF9kb2N9LAotICAgIHsiU2V0RXJyb3JNb2RlIiwgICAgICAgICAgICBzZXRlcnJvcm1vZGUsIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgX0RFQlVHCi0gICAgeyJDcnRTZXRSZXBvcnRGaWxlIiwgICAgICAgIG1zdmNydF9zZXRyZXBvcnRmaWxlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiQ3J0U2V0UmVwb3J0TW9kZSIsICAgICAgICBtc3ZjcnRfc2V0cmVwb3J0bW9kZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InNldF9lcnJvcl9tb2RlIiwgICAgICAgICAgbXN2Y3J0X3NldGVycm9ybW9kZSwgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAotICAgIHsiZ2V0d2NoIiwgICAgICAgICAgICAgICAgICBtc3ZjcnRfZ2V0d2NoLCBNRVRIX1ZBUkFSR1MsIGdldHdjaF9kb2N9LAotICAgIHsiZ2V0d2NoZSIsICAgICAgICAgICAgICAgICBtc3ZjcnRfZ2V0d2NoZSwgTUVUSF9WQVJBUkdTLCBnZXR3Y2hlX2RvY30sCi0gICAgeyJwdXR3Y2giLCAgICAgICAgICAgICAgICAgIG1zdmNydF9wdXR3Y2gsIE1FVEhfVkFSQVJHUywgcHV0d2NoX2RvY30sCi0gICAgeyJ1bmdldHdjaCIsICAgICAgICAgICAgICAgIG1zdmNydF91bmdldHdjaCwgTUVUSF9WQVJBUkdTLCB1bmdldHdjaF9kb2N9LAotI2VuZGlmCisgICAgTVNWQ1JUX0hFQVBNSU5fTUVUSE9EREVGCisgICAgTVNWQ1JUX0xPQ0tJTkdfTUVUSE9EREVGCisgICAgTVNWQ1JUX1NFVE1PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX09QRU5fT1NGSEFORExFX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRgorICAgIE1TVkNSVF9LQkhJVF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVENIRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfUFVUQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX1VOR0VUQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX1NFVEVSUk9STU9ERV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVFdDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUV0NIRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfUFVUV0NIX01FVEhPRERFRgorICAgIE1TVkNSVF9VTkdFVFdDSF9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0KIH07CiAKQEAgLTQ2Myw2ICs0OTMsMjAgQEAKICAgICBOVUxMCiB9OwogCitzdGF0aWMgdm9pZAoraW5zZXJ0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCit7CisgICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsKKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIC8qIERvbid0IGJvdGhlciByZXBvcnRpbmcgdGhpcyBlcnJvciAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgbmFtZSwgdik7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICB9Cit9CisKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfbXN2Y3J0KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBlMWMxOTg4Li4zMjRhMTMwIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTE0NSwxOCArMTQ1LDIwIEBACiAjaWYgZGVmaW5lZChfTV9JQTY0KQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiNjQgYml0IChJdGFuaXVtKSIpCiAjZGVmaW5lIE1TX1dJTkk2NAorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW5faWE2NCIKICNlbGlmIGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiNjQgYml0IChBTUQ2NCkiKQogI2RlZmluZSBNU19XSU5YNjQKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2FtZDY0IgogI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoVW5rbm93bikiKQogI2VuZGlmCiAjZW5kaWYgLyogTVNfV0lONjQgKi8KIAogLyogc2V0IHRoZSB2ZXJzaW9uIG1hY3JvcyBmb3IgdGhlIHdpbmRvd3MgaGVhZGVycyAqLwotLyogUHl0aG9uIDMuNCsgcmVxdWlyZXMgV2luZG93cyBYUCBvciBncmVhdGVyICovCi0jZGVmaW5lIFB5X1dJTlZFUiAweDA1MDEgLyogX1dJTjMyX1dJTk5UX1dJTlhQICovCi0jZGVmaW5lIFB5X05URERJIE5URERJX1dJTlhQCisvKiBQeXRob24gMy41KyByZXF1aXJlcyBXaW5kb3dzIFZpc3RhIG9yIGdyZWF0ZXIgKi8KKyNkZWZpbmUgUHlfV0lOVkVSIDB4MDYwMCAvKiBfV0lOMzJfV0lOTlRfVklTVEEgKi8KKyNkZWZpbmUgUHlfTlREREkgTlRERElfVklTVEEKIAogLyogV2Ugb25seSBzZXQgdGhlc2UgdmFsdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIC0gd2UgZG9uJ3Qgd2FudCB0byBmb3JjZQogICAgdGhlc2UgdmFsdWVzIG9uIGV4dGVuc2lvbnMsIGFzIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHByb3RvdHlwZXMgYW5kCkBAIC0xOTMsOCArMTk1LDEwIEBACiAjaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoTVNfV0lONjQpCiAjaWYgZGVmaW5lZChfTV9JWDg2KQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiMzIgYml0IChJbnRlbCkiKQorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW4zMiIKICNlbGlmIGRlZmluZWQoX01fQVJNKQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiMzIgYml0IChBUk0pIikKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2FybSIKICNlbHNlCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKFVua25vd24pIikKICNlbmRpZgpAQCAtMjEzLDYgKzIxNywxMyBAQAogI2RlZmluZSBoeXBvdCBfaHlwb3QKICNlbmRpZgogCisvKiBWUyAyMDE1IGRlZmluZXMgdGhlc2UgbmFtZXMgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZSAqLworI2lmIF9NU0NfVkVSID49IDE5MDAKKyNkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25lCisjZGVmaW5lIGRheWxpZ2h0IF9kYXlsaWdodAorI2RlZmluZSB0em5hbWUgX3R6bmFtZQorI2VuZGlmCisKIC8qIFNpZGUgYnkgU2lkZSBhc3NlbWJsaWVzIHN1cHBvcnRlZCBpbiBWUyAyMDA1IGFuZCBWUyAyMDA4IGJ1dCBub3QgMjAxMCovCiAjaWYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE2MDAKICNkZWZpbmUgSEFWRV9TWFMgMQpAQCAtMjI3LDM1ICsyMzgsNiBAQAogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBUaGUgQm9ybGFuZCBjb21waWxlciBkZWZpbmVzIF9fQk9STEFORENfXyAqLwotLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LiAqLwotI2lmZGVmIF9fQk9STEFORENfXwotI2RlZmluZSBDT01QSUxFUiAiW0JvcmxhbmRdIgotCi0jaWZkZWYgX1dJTjMyCi0vKiB0ZXN0ZWQgd2l0aCBCQ0MgNS41IChfX0JPUkxBTkRDX18gPj0gMHgwNTUwKQotICovCi0KLXR5cGVkZWYgaW50IHBpZF90OwotLyogQkNDNTUgc2VlbXMgdG8gdW5kZXJzdGFuZCBfX2RlY2xzcGVjKGRsbGltcG9ydCksIGl0IGlzIHVzZWQgaW4gaXRzCi0gICBvd24gaGVhZGVyIGZpbGVzICh3aW5udC5oLCAuLi4pIC0gc28gd2UgY2FuIGRvIG5vdGhpbmcgYW5kIGdldCB0aGUgZGVmYXVsdCovCi0KLSN1bmRlZiBIQVZFX1NZU19VVElNRV9ICi0jZGVmaW5lIEhBVkVfVVRJTUVfSAotI2RlZmluZSBIQVZFX0RJUkVOVF9ICi0KLS8qIHJlbmFtZSBhIGZldyBmdW5jdGlvbnMgZm9yIHRoZSBCb3JsYW5kIGNvbXBpbGVyICovCi0jaW5jbHVkZSA8aW8uaD4KLSNkZWZpbmUgX2Noc2l6ZSBjaHNpemUKLSNkZWZpbmUgX3NldG1vZGUgc2V0bW9kZQotCi0jZWxzZSAvKiAhX1dJTjMyICovCi0jZXJyb3IgIk9ubHkgV2luMzIgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQiCi0jZW5kaWYgLyogIV9XSU4zMiAqLwotCi0jZW5kaWYgLyogQk9STEFOREMgKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIGVnY3MvZ251LXdpbjMyIGRlZmluZXMgX19HTlVDX18gYW5kIF9XSU4zMiAqLwogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX1dJTjMyKQogLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LgpAQCAtMzIyLDExICszMDQsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM0X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNV9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzQubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNS5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggZGY1ODI0YS4uNjM0YjhkNiAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyAoQ29uc29sZSkiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJweSIKLSAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKICAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgInB5IgogICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCmRpZmYgLS1naXQgYS9QQy9weXRob24ubWFuaWZlc3QgYi9QQy9weXRob24ubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FjMjYzMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbi5tYW5pZmVzdApAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+Cis8YXNzZW1ibHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYxIiBtYW5pZmVzdFZlcnNpb249IjEuMCI+CisgIDxjb21wYXRpYmlsaXR5IHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmNvbXBhdGliaWxpdHkudjEiPiAKKyAgICA8YXBwbGljYXRpb24+IAorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7ZTIwMTE0NTctMTU0Ni00M2M1LWE1ZmUtMDA4ZGVlZTNkM2YwfSIvPiAKKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezM1MTM4YjlhLTVkOTYtNGZiZC04ZTJkLWEyNDQwMjI1ZjkzYX0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezRhMmYyOGUzLTUzYjktNDQ0MS1iYTljLWQ2OWQ0YTRhNmUzOH0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezFmNjc2Yzc2LTgwZTEtNDIzOS05NWJiLTgzZDBmNmQwZGE3OH0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezhlMGY3YTEyLWJmYjMtNGZlOC1iOWE1LTQ4ZmQ1MGExNWE5YX0iLz4KKyAgICA8L2FwcGxpY2F0aW9uPiAKKyAgPC9jb21wYXRpYmlsaXR5PgorPC9hc3NlbWJseT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDM3ZTQ1NGIuLjg4YzA3NDIgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0xLDcwMSArMSw3MTMgQEAKLTsgV2hlbiBjaGFuZ2luZyB0aGlzIGZpbGUsIHJ1biBweXRob24zNGdlbi5weQorOyBUaGlzIGZpbGUgc3BlY2lmaWVzIHRoZSBpbXBvcnQgZm9yd2FyZGluZyBmb3IgcHl0aG9uMy5kbGwKKzsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzQuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNC5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNC5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzQuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNC5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM0LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNC5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzQuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzQuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM0LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzQuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNC5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzQuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNC5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM0LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM0LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzQuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzQuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzQuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNC5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM0LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzQuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNC5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNC5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzQuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNC5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzQuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM0LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzQuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNC5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNC5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNC5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNC5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM0LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzQuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNC5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM0LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzQuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM0LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNC5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzQuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM0LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNC5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNC5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNC5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzQuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzQuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM0LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM0LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM0LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM0LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzQuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzQuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM0LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzQuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM0LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzQuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzQuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzQuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNC5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNC5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM0LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNC5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNC5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzQuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzQuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNC5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzQuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzQuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM0LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNC5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzQuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM0LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzQuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNC5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNC5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNC5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNC5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNC5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzQuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM0LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM0LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM0LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzQuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM0LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzQuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM0LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzQuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM0LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzQuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM0LlB5RXJyX0Zvcm1hdAotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzQuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNC5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNC5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM0LlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNC5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzQuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzQuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zNC5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM0LlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzQuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzQuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNC5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM0LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzQuUHlFcnJfU2V0SW50ZXJydXB0Ci0gIFB5RXJyX1NldE5vbmU9cHl0aG9uMzQuUHlFcnJfU2V0Tm9uZQotICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzQuUHlFcnJfU2V0T2JqZWN0Ci0gIFB5RXJyX1NldFN0cmluZz1weXRob24zNC5QeUVycl9TZXRTdHJpbmcKLSAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzQuUHlFcnJfU3ludGF4TG9jYXRpb24KLSAgUHlFcnJfV2FybkV4PXB5dGhvbjM0LlB5RXJyX1dhcm5FeAotICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzQuUHlFcnJfV2FybkV4cGxpY2l0Ci0gIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzQuUHlFcnJfV2FybkZvcm1hdAotICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzQuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi0gIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNC5QeUV2YWxfQWNxdWlyZUxvY2sKLSAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX0FjcXVpcmVUaHJlYWQKLSAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNC5QeUV2YWxfQ2FsbEZ1bmN0aW9uCi0gIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM0LlB5RXZhbF9DYWxsTWV0aG9kCi0gIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM0LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi0gIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNC5QeUV2YWxfRXZhbENvZGUKLSAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzQuUHlFdmFsX0V2YWxDb2RlRXgKLSAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNC5QeUV2YWxfRXZhbEZyYW1lCi0gIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNC5QeUV2YWxfRXZhbEZyYW1lRXgKLSAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM0LlB5RXZhbF9HZXRCdWlsdGlucwotICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM0LlB5RXZhbF9HZXRDYWxsU3RhdHMKLSAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM0LlB5RXZhbF9HZXRGcmFtZQotICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzQuUHlFdmFsX0dldEZ1bmNEZXNjCi0gIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNC5QeUV2YWxfR2V0RnVuY05hbWUKLSAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzQuUHlFdmFsX0dldEdsb2JhbHMKLSAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNC5QeUV2YWxfR2V0TG9jYWxzCi0gIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNC5QeUV2YWxfSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzQuUHlFdmFsX1JlSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM0LlB5RXZhbF9SZWxlYXNlTG9jawotICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNC5QeUV2YWxfUmVsZWFzZVRocmVhZAotICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNC5QeUV2YWxfUmVzdG9yZVRocmVhZAotICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNC5QeUV2YWxfU2F2ZVRocmVhZAotICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM0LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLSAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM0LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCi0gIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM0LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzQuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQotICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM0LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQotICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNC5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCi0gIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNC5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzQuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzQuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM0LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzQuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM0LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzQuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzQuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM0LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNC5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNC5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNC5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzQuUHlFeGNfS2V5RXJyb3IgREFUQQotICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNC5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCi0gIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM0LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzQuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzQuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM0LlB5RXhjX05hbWVFcnJvciBEQVRBCi0gIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzQuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCi0gIFB5RXhjX09TRXJyb3I9cHl0aG9uMzQuUHlFeGNfT1NFcnJvciBEQVRBCi0gIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzQuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCi0gIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzQuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNC5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNC5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNC5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNC5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCi0gIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzQuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCi0gIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM0LlB5RXhjX1N5bnRheEVycm9yIERBVEEKLSAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNC5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzQuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQotICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM0LlB5RXhjX1N5c3RlbUV4aXQgREFUQQotICBQeUV4Y19UYWJFcnJvcj1weXRob24zNC5QeUV4Y19UYWJFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNC5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNC5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNC5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNC5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zNC5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzQuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQotICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM0LlB5RXhjZXB0aW9uX0dldENvbnRleHQKLSAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM0LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM0LlB5RXhjZXB0aW9uX1NldENvbnRleHQKLSAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM0LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM0LlB5RmlsZV9Gcm9tRmQKLSAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzQuUHlGaWxlX0dldExpbmUKLSAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM0LlB5RmlsZV9Xcml0ZU9iamVjdAotICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzQuUHlGaWxlX1dyaXRlU3RyaW5nCi0gIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzQuUHlGaWx0ZXJfVHlwZSBEQVRBCi0gIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzQuUHlGbG9hdF9Bc0RvdWJsZQotICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzQuUHlGbG9hdF9Gcm9tRG91YmxlCi0gIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNC5QeUZsb2F0X0Zyb21TdHJpbmcKLSAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM0LlB5RmxvYXRfR2V0SW5mbwotICBQeUZsb2F0X0dldE1heD1weXRob24zNC5QeUZsb2F0X0dldE1heAotICBQeUZsb2F0X0dldE1pbj1weXRob24zNC5QeUZsb2F0X0dldE1pbgotICBQeUZsb2F0X1R5cGU9cHl0aG9uMzQuUHlGbG9hdF9UeXBlIERBVEEKLSAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM0LlB5RnJvemVuU2V0X05ldwotICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM0LlB5RnJvemVuU2V0X1R5cGUgREFUQQotICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzQuUHlHQ19Db2xsZWN0Ci0gIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM0LlB5R0lMU3RhdGVfRW5zdXJlCi0gIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM0LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi0gIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNC5QeUdJTFN0YXRlX1JlbGVhc2UKLSAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM0LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCi0gIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9BZGRNb2R1bGUKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNC5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzQuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM0LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM0LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNC5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNC5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNC5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM0LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNC5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi0gIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM0LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM0LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfTmV3Ci0gIFB5SXRlcl9OZXh0PXB5dGhvbjM0LlB5SXRlcl9OZXh0Ci0gIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNC5QeUxpc3RJdGVyX1R5cGUgREFUQQotICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzQuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0X0FwcGVuZD1weXRob24zNC5QeUxpc3RfQXBwZW5kCi0gIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM0LlB5TGlzdF9Bc1R1cGxlCi0gIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM0LlB5TGlzdF9HZXRJdGVtCi0gIFB5TGlzdF9HZXRTbGljZT1weXRob24zNC5QeUxpc3RfR2V0U2xpY2UKLSAgUHlMaXN0X0luc2VydD1weXRob24zNC5QeUxpc3RfSW5zZXJ0Ci0gIFB5TGlzdF9OZXc9cHl0aG9uMzQuUHlMaXN0X05ldwotICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNC5QeUxpc3RfUmV2ZXJzZQotICBQeUxpc3RfU2V0SXRlbT1weXRob24zNC5QeUxpc3RfU2V0SXRlbQotICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzQuUHlMaXN0X1NldFNsaWNlCi0gIFB5TGlzdF9TaXplPXB5dGhvbjM0LlB5TGlzdF9TaXplCi0gIFB5TGlzdF9Tb3J0PXB5dGhvbjM0LlB5TGlzdF9Tb3J0Ci0gIFB5TGlzdF9UeXBlPXB5dGhvbjM0LlB5TGlzdF9UeXBlIERBVEEKLSAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzQuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzQuUHlMb25nX0FzRG91YmxlCi0gIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzQuUHlMb25nX0FzTG9uZwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzQuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdMb25nCi0gIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzQuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzQuUHlMb25nX0FzU2l6ZV90Ci0gIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzQuUHlMb25nX0FzU3NpemVfdAotICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLSAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNC5QeUxvbmdfQXNWb2lkUHRyCi0gIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM0LlB5TG9uZ19Gcm9tRG91YmxlCi0gIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbUxvbmcKLSAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbUxvbmdMb25nCi0gIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Gcm9tU2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNC5QeUxvbmdfRnJvbVNzaXplX3QKLSAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21TdHJpbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzQuUHlMb25nX0Zyb21Wb2lkUHRyCi0gIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM0LlB5TG9uZ19HZXRJbmZvCi0gIFB5TG9uZ19UeXBlPXB5dGhvbjM0LlB5TG9uZ19UeXBlIERBVEEKLSAgUHlNYXBfVHlwZT1weXRob24zNC5QeU1hcF9UeXBlIERBVEEKLSAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM0LlB5TWFwcGluZ19DaGVjawotICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM0LlB5TWFwcGluZ19IYXNLZXkKLSAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi0gIFB5TWFwcGluZ19JdGVtcz1weXRob24zNC5QeU1hcHBpbmdfSXRlbXMKLSAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzQuUHlNYXBwaW5nX0tleXMKLSAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNC5QeU1hcHBpbmdfTGVuZ3RoCi0gIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19TaXplPXB5dGhvbjM0LlB5TWFwcGluZ19TaXplCi0gIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzQuUHlNYXBwaW5nX1ZhbHVlcwotICBQeU1lbV9GcmVlPXB5dGhvbjM0LlB5TWVtX0ZyZWUKLSAgUHlNZW1fTWFsbG9jPXB5dGhvbjM0LlB5TWVtX01hbGxvYwotICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM0LlB5TWVtX1JlYWxsb2MKLSAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM0LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM0LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi0gIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM0LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKLSAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM0LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM0LlB5TW9kdWxlX0FkZEludENvbnN0YW50Ci0gIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNC5QeU1vZHVsZV9BZGRPYmplY3QKLSAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzQuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLSAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNC5QeU1vZHVsZV9DcmVhdGUyCi0gIFB5TW9kdWxlX0dldERlZj1weXRob24zNC5QeU1vZHVsZV9HZXREZWYKLSAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNC5QeU1vZHVsZV9HZXREaWN0Ci0gIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM0LlB5TW9kdWxlX0dldEZpbGVuYW1lCi0gIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM0LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzQuUHlNb2R1bGVfR2V0TmFtZQotICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNC5QeU1vZHVsZV9HZXRTdGF0ZQotICBQeU1vZHVsZV9OZXc9cHl0aG9uMzQuUHlNb2R1bGVfTmV3Ci0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzQuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzQuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCi0gIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM0LlB5TnVtYmVyX0Fic29sdXRlCi0gIFB5TnVtYmVyX0FkZD1weXRob24zNC5QeU51bWJlcl9BZGQKLSAgUHlOdW1iZXJfQW5kPXB5dGhvbjM0LlB5TnVtYmVyX0FuZAotICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzQuUHlOdW1iZXJfQXNTc2l6ZV90Ci0gIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM0LlB5TnVtYmVyX0NoZWNrCi0gIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNC5QeU51bWJlcl9EaXZtb2QKLSAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzQuUHlOdW1iZXJfRmxvYXQKLSAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlQWRkCi0gIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUFuZAotICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci0gIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlT3IKLSAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VQb3dlcgotICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUnNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKLSAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlWG9yCi0gIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM0LlB5TnVtYmVyX0luZGV4Ci0gIFB5TnVtYmVyX0ludmVydD1weXRob24zNC5QeU51bWJlcl9JbnZlcnQKLSAgUHlOdW1iZXJfTG9uZz1weXRob24zNC5QeU51bWJlcl9Mb25nCi0gIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNC5QeU51bWJlcl9Mc2hpZnQKLSAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzQuUHlOdW1iZXJfTXVsdGlwbHkKLSAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzQuUHlOdW1iZXJfTmVnYXRpdmUKLSAgUHlOdW1iZXJfT3I9cHl0aG9uMzQuUHlOdW1iZXJfT3IKLSAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzQuUHlOdW1iZXJfUG9zaXRpdmUKLSAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzQuUHlOdW1iZXJfUG93ZXIKLSAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM0LlB5TnVtYmVyX1JlbWFpbmRlcgotICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfUnNoaWZ0Ci0gIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM0LlB5TnVtYmVyX1N1YnRyYWN0Ci0gIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNC5QeU51bWJlcl9Ub0Jhc2UKLSAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNC5QeU51bWJlcl9UcnVlRGl2aWRlCi0gIFB5TnVtYmVyX1hvcj1weXRob24zNC5QeU51bWJlcl9Yb3IKLSAgUHlPU19BZnRlckZvcms9cHl0aG9uMzQuUHlPU19BZnRlckZvcmsKLSAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNC5QeU9TX0luaXRJbnRlcnJ1cHRzCi0gIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM0LlB5T1NfSW5wdXRIb29rIERBVEEKLSAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNC5QeU9TX0ludGVycnVwdE9jY3VycmVkCi0gIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzQuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCi0gIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNC5QeU9TX2RvdWJsZV90b19zdHJpbmcKLSAgUHlPU19nZXRzaWc9cHl0aG9uMzQuUHlPU19nZXRzaWcKLSAgUHlPU19teXN0cmljbXA9cHl0aG9uMzQuUHlPU19teXN0cmljbXAKLSAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM0LlB5T1NfbXlzdHJuaWNtcAotICBQeU9TX3NldHNpZz1weXRob24zNC5QeU9TX3NldHNpZwotICBQeU9TX3NucHJpbnRmPXB5dGhvbjM0LlB5T1Nfc25wcmludGYKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM0LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotICBQeU9TX3N0cnRvbD1weXRob24zNC5QeU9TX3N0cnRvbAotICBQeU9TX3N0cnRvdWw9cHl0aG9uMzQuUHlPU19zdHJ0b3VsCi0gIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM0LlB5T1NfdnNucHJpbnRmCi0gIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM0LlB5T2JqZWN0X0FTQ0lJCi0gIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLSAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNC5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi0gIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi0gIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM0LlB5T2JqZWN0X0J5dGVzCi0gIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbAotICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzQuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxNZXRob2QKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNC5QeU9iamVjdF9DYWxsT2JqZWN0Ci0gIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNC5QeU9iamVjdF9DbGVhcldlYWtSZWZzCi0gIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzQuUHlPYmplY3RfRGVsSXRlbQotICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlPYmplY3RfRGlyPXB5dGhvbjM0LlB5T2JqZWN0X0RpcgotICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzQuUHlPYmplY3RfRm9ybWF0Ci0gIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzQuUHlPYmplY3RfRnJlZQotICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzQuUHlPYmplY3RfR0NfRGVsCi0gIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM0LlB5T2JqZWN0X0dDX1RyYWNrCi0gIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzQuUHlPYmplY3RfR0NfVW5UcmFjawotICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgotICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X0dldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNC5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzQuUHlPYmplY3RfR2V0SXRlbQotICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM0LlB5T2JqZWN0X0dldEl0ZXIKLSAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNC5QeU9iamVjdF9IYXNBdHRyCi0gIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfSGFzQXR0clN0cmluZwotICBQeU9iamVjdF9IYXNoPXB5dGhvbjM0LlB5T2JqZWN0X0hhc2gKLSAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM0LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAotICBQeU9iamVjdF9Jbml0PXB5dGhvbjM0LlB5T2JqZWN0X0luaXQKLSAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNC5QeU9iamVjdF9Jbml0VmFyCi0gIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzQuUHlPYmplY3RfSXNJbnN0YW5jZQotICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM0LlB5T2JqZWN0X0lzU3ViY2xhc3MKLSAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM0LlB5T2JqZWN0X0lzVHJ1ZQotICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzQuUHlPYmplY3RfTGVuZ3RoCi0gIFB5T2JqZWN0X01hbGxvYz1weXRob24zNC5QeU9iamVjdF9NYWxsb2MKLSAgUHlPYmplY3RfTm90PXB5dGhvbjM0LlB5T2JqZWN0X05vdAotICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM0LlB5T2JqZWN0X1JlYWxsb2MKLSAgUHlPYmplY3RfUmVwcj1weXRob24zNC5QeU9iamVjdF9SZXByCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM0LlB5T2JqZWN0X1JpY2hDb21wYXJlCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNC5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLSAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzQuUHlPYmplY3RfU2VsZkl0ZXIKLSAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9TZXRBdHRyCi0gIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfU2V0QXR0clN0cmluZwotICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X1NldEl0ZW0KLSAgUHlPYmplY3RfU2l6ZT1weXRob24zNC5QeU9iamVjdF9TaXplCi0gIFB5T2JqZWN0X1N0cj1weXRob24zNC5QeU9iamVjdF9TdHIKLSAgUHlPYmplY3RfVHlwZT1weXRob24zNC5QeU9iamVjdF9UeXBlIERBVEEKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzQuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNC5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UHJvcGVydHlfVHlwZT1weXRob24zNC5QeVByb3BlcnR5X1R5cGUgREFUQQotICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM0LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeVJhbmdlX1R5cGU9cHl0aG9uMzQuUHlSYW5nZV9UeXBlIERBVEEKLSAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM0LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCi0gIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzQuUHlTZXFJdGVyX05ldwotICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNC5QeVNlcUl0ZXJfVHlwZSBEQVRBCi0gIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzQuUHlTZXF1ZW5jZV9DaGVjawotICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNC5QeVNlcXVlbmNlX0NvbmNhdAotICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM0LlB5U2VxdWVuY2VfQ29udGFpbnMKLSAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNC5QeVNlcXVlbmNlX0NvdW50Ci0gIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNC5QeVNlcXVlbmNlX0RlbEl0ZW0KLSAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNC5QeVNlcXVlbmNlX0RlbFNsaWNlCi0gIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNC5QeVNlcXVlbmNlX0Zhc3QKLSAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM0LlB5U2VxdWVuY2VfR2V0SXRlbQotICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM0LlB5U2VxdWVuY2VfR2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNC5QeVNlcXVlbmNlX0luCi0gIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNC5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLSAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM0LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM0LlB5U2VxdWVuY2VfSW5kZXgKLSAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzQuUHlTZXF1ZW5jZV9MZW5ndGgKLSAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM0LlB5U2VxdWVuY2VfTGlzdAotICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNC5QeVNlcXVlbmNlX1JlcGVhdAotICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzQuUHlTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzQuUHlTZXF1ZW5jZV9TZXRTbGljZQotICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzQuUHlTZXF1ZW5jZV9TaXplCi0gIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzQuUHlTZXF1ZW5jZV9UdXBsZQotICBQeVNldEl0ZXJfVHlwZT1weXRob24zNC5QeVNldEl0ZXJfVHlwZSBEQVRBCi0gIFB5U2V0X0FkZD1weXRob24zNC5QeVNldF9BZGQKLSAgUHlTZXRfQ2xlYXI9cHl0aG9uMzQuUHlTZXRfQ2xlYXIKLSAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzQuUHlTZXRfQ29udGFpbnMKLSAgUHlTZXRfRGlzY2FyZD1weXRob24zNC5QeVNldF9EaXNjYXJkCi0gIFB5U2V0X05ldz1weXRob24zNC5QeVNldF9OZXcKLSAgUHlTZXRfUG9wPXB5dGhvbjM0LlB5U2V0X1BvcAotICBQeVNldF9TaXplPXB5dGhvbjM0LlB5U2V0X1NpemUKLSAgUHlTZXRfVHlwZT1weXRob24zNC5QeVNldF9UeXBlIERBVEEKLSAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM0LlB5U2xpY2VfR2V0SW5kaWNlcwotICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNC5QeVNsaWNlX0dldEluZGljZXNFeAotICBQeVNsaWNlX05ldz1weXRob24zNC5QeVNsaWNlX05ldwotICBQeVNsaWNlX1R5cGU9cHl0aG9uMzQuUHlTbGljZV9UeXBlIERBVEEKLSAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM0LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCi0gIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNC5QeVN0YXRlX0ZpbmRNb2R1bGUKLSAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9BZGRNb2R1bGUKLSAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX05ldwotICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi0gIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTdXBlcl9UeXBlPXB5dGhvbjM0LlB5U3VwZXJfVHlwZSBEQVRBCi0gIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzQuUHlTeXNfQWRkV2Fybk9wdGlvbgotICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNC5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzQuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNC5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM0LlB5U3lzX0dldE9iamVjdAotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNC5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM0LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zNC5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNC5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM0LlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjM0LlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzQuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzQuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNC5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNC5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNC5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM0LlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzQuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNC5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNC5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM0LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzQuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzQuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zNC5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzQuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNC5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjM0LlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzQuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzQuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM0LlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzQuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzQuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNC5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzQuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM0LlB5VHlwZV9HZXRTbG90Ci0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzQuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzQuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zNC5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzQuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM0LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM0LlB5VW5pY29kZV9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNC5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNC5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKLSAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM0LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0Ci0gIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM0LlB5VW5pY29kZV9Db21wYXJlCi0gIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzQuUHlVbmljb2RlX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzQuUHlVbmljb2RlX0NvbnRhaW5zCi0gIFB5VW5pY29kZV9Db3VudD1weXRob24zNC5QeVVuaWNvZGVfQ291bnQKLSAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKLSAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0gIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUxhdGluMQotICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjE2Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjgKLSAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNC5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNC5QeVVuaWNvZGVfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM0LlB5VW5pY29kZV9GaW5kCi0gIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzQuUHlVbmljb2RlX0Zvcm1hdAotICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNC5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKLSAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAotICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfRnJvbVN0cmluZwotICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzQuUHlVbmljb2RlX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNC5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCi0gIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM0LlB5VW5pY29kZV9Kb2luCi0gIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzQuUHlVbmljb2RlX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNC5QeVVuaWNvZGVfUlBhcnRpdGlvbgotICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM0LlB5VW5pY29kZV9SU3BsaXQKLSAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzQuUHlVbmljb2RlX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNC5QeVVuaWNvZGVfUmVzaXplCi0gIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNC5QeVVuaWNvZGVfUmljaENvbXBhcmUKLSAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zNC5QeVVuaWNvZGVfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzQuUHlVbmljb2RlX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNC5QeVVuaWNvZGVfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzQuUHlVbmljb2RlX1RyYW5zbGF0ZQotICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNC5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGNwotICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLSAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNC5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNC5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLSAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzQuUHlVbmljb2RlX0ludGVybkluUGxhY2UKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzQuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM0LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQotICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1Byb3h5Ci0gIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1JlZgotICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM0LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQotICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM0LlB5V3JhcHBlcl9OZXcKLSAgUHlaaXBfVHlwZT1weXRob24zNC5QeVppcF9UeXBlIERBVEEKLSAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzQuUHlfQWRkUGVuZGluZ0NhbGwKLSAgUHlfQXRFeGl0PXB5dGhvbjM0LlB5X0F0RXhpdAotICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM0LlB5X0J1aWxkVmFsdWUKLSAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNC5QeV9Db21waWxlU3RyaW5nCi0gIFB5X0RlY1JlZj1weXRob24zNC5QeV9EZWNSZWYKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzQuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zNC5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzQuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zNC5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzQuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjM0LlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zNC5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNC5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzQuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNC5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzQuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNC5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzQuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNC5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM0LlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzQuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzQuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzQuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjM0LlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNC5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM0LlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zNC5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjM0LlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNC5QeV9TZXRQcm9ncmFtTmFtZQotICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM0LlB5X1NldFB5dGhvbkhvbWUKLSAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzQuUHlfU2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzQuUHlfU3ltdGFibGVTdHJpbmcKLSAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM0LlB5X1ZhQnVpbGRWYWx1ZQotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM0Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNC5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM0Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNC5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNC5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM0Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM0Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzQuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM0Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfQnVpbGRWYWx1ZV9TaXplVAotICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNC5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCi0gIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzQuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotICBfUHlfRGVhbGxvYz1weXRob24zNC5fUHlfRGVhbGxvYwotICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzQuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKLSAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM0Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob25lU3RydWN0IERBVEEKLSAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCi0gIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzQuX1B5X1N3YXBwZWRPcCBEQVRBCi0gIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM0Ll9QeV9UcnVlU3RydWN0IERBVEEKLSAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi0gIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19WYVBhcnNlX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzQuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAorICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKKyAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKKyAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKKyAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKKyAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAorICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCisgIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKKyAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKKyAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAorICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAorICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKKyAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCisgIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgorICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yaworICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKKyAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQorICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKKyAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKKyAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZworICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZworICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAorICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCisgIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCisgIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgorICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCisgIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCisgIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKKyAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKKyAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKKyAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgorICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKKyAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKKyAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKKyAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAorICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncworICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQorICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCisgIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3CisgIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KKyAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKKyAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKKyAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAorICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAorICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAorICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucworICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCisgIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAorICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKKyAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgorICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0CisgIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKKyAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCisgIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZworICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCisgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCisgIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKKyAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQorICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKKyAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3CisgIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCisgIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCisgIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKKyAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCisgIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZworICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCisgIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCisgIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAorICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKKyAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbworICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgorICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0CisgIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAorICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKKyAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KKyAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAorICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCisgIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCisgIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQorICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAorICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KKyAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgorICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKKyAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAorICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKKyAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCisgIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscworICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgorICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCisgIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKKyAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKKyAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCisgIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0CisgIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCisgIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKKyAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAorICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKKyAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3CisgIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgorICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKKyAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3CisgIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgorICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCisgIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAorICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYworICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKKyAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQorICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAorICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KKyAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQorICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKKyAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKKyAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCisgIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQorICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCisgIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQorICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQorICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCisgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAorICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob24zLm1hayBiL1BDL3B5dGhvbjMubWFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjhlN2FhLi4wMDAwMDAwCi0tLSBhL1BDL3B5dGhvbjMubWFrCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotJChPdXREaXIpcHl0aG9uMy5kbGw6CXB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIKLQljbCAvTEQgL0ZlJChPdXREaXIpcHl0aG9uMy5kbGwgcHl0aG9uM2RsbC5jIHB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIKLQotJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYjoJcHl0aG9uMzRzdHViLmRlZgotCWxpYiAvZGVmOnB5dGhvbjM0c3R1Yi5kZWYgL291dDokKE91dERpcilweXRob24zNHN0dWIubGliIC9NQUNISU5FOiQoTUFDSElORSkKLQotY2xlYW46Ci0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMy5kbGwgZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMy5saWIgZGVsICQoT3V0RGlyKXB5dGhvbjMubGliCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYiBkZWwgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjMuZXhwIGRlbCAkKE91dERpcilweXRob24zLmV4cAotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5leHAgZGVsICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5leHAKLQotcmVidWlsZDogY2xlYW4gJChPdXREaXIpcHl0aG9uMy5kbGwKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjM0Z2VuLnB5IGIvUEMvcHl0aG9uMzRnZW4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MGNlMTEuLjAwMDAwMDAKLS0tIGEvUEMvcHl0aG9uMzRnZW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIEdlbmVyYXRlIHB5dGhvbjM0c3R1Yi5kZWYgb3V0IG9mIHB5dGhvbjMuZGVmCi0jIFRoZSByZWd1bGFyIGltcG9ydCBsaWJyYXJ5IGNhbm5vdCBiZSB1c2VkLAotIyBzaW5jZSBpdCBkb2Vzbid0IHByb3ZpZGUgdGhlIHJpZ2h0IHN5bWJvbHMgZm9yCi0jIGRhdGEgZm9yd2FyZGluZwotb3V0ID0gb3BlbigicHl0aG9uMzRzdHViLmRlZiIsICJ3IikKLW91dC53cml0ZSgnTElCUkFSWSAicHl0aG9uMzQiXG4nKQotb3V0LndyaXRlKCdFWFBPUlRTXG4nKQotCi1pbnAgPSBvcGVuKCJweXRob24zLmRlZiIpCi1saW5lID0gaW5wLnJlYWRsaW5lKCkKLXdoaWxlIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCc7Jyk6Ci0gICAgbGluZSA9IGlucC5yZWFkbGluZSgpCi1saW5lID0gaW5wLnJlYWRsaW5lKCkgIyBMSUJSQVJZCi1hc3NlcnQgbGluZS5zdHJpcCgpPT0nRVhQT1JUUycKLQotZm9yIGxpbmUgaW4gaW5wOgotICAgICMgU1lNMT1weXRob24zNC5TWU0yWyBEQVRBXQotICAgIGhlYWQsIHRhaWwgPSBsaW5lLnNwbGl0KCcuJykKLSAgICBpZiAnREFUQScgaW4gdGFpbDoKLSAgICAgICAgc3ltYm9sLCB0YWlsID0gdGFpbC5zcGxpdCgnICcpCi0gICAgZWxzZToKLSAgICAgICAgc3ltYm9sID0gdGFpbC5zdHJpcCgpCi0gICAgb3V0LndyaXRlKHN5bWJvbCsnXG4nKQotCi1pbnAuY2xvc2UoKQotb3V0LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjM0c3R1Yi5kZWYgYi9QQy9weXRob24zNHN0dWIuZGVmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDc0Y2YzLi4wMDAwMDAwCi0tLSBhL1BDL3B5dGhvbjM0c3R1Yi5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSw3MDAgKzAsMCBAQAotTElCUkFSWSAicHl0aG9uMzQiCi1FWFBPUlRTCi1QeUFyZ19QYXJzZQotUHlBcmdfUGFyc2VUdXBsZQotUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi1QeUFyZ19VbnBhY2tUdXBsZQotUHlBcmdfVmFQYXJzZQotUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLVB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotUHlCYXNlT2JqZWN0X1R5cGUKLVB5Qm9vbF9Gcm9tTG9uZwotUHlCb29sX1R5cGUKLVB5Qnl0ZUFycmF5SXRlcl9UeXBlCi1QeUJ5dGVBcnJheV9Bc1N0cmluZwotUHlCeXRlQXJyYXlfQ29uY2F0Ci1QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci1QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotUHlCeXRlQXJyYXlfUmVzaXplCi1QeUJ5dGVBcnJheV9TaXplCi1QeUJ5dGVBcnJheV9UeXBlCi1QeUJ5dGVzSXRlcl9UeXBlCi1QeUJ5dGVzX0FzU3RyaW5nCi1QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotUHlCeXRlc19Db25jYXQKLVB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi1QeUJ5dGVzX0RlY29kZUVzY2FwZQotUHlCeXRlc19Gcm9tRm9ybWF0Ci1QeUJ5dGVzX0Zyb21Gb3JtYXRWCi1QeUJ5dGVzX0Zyb21PYmplY3QKLVB5Qnl0ZXNfRnJvbVN0cmluZwotUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotUHlCeXRlc19SZXByCi1QeUJ5dGVzX1NpemUKLVB5Qnl0ZXNfVHlwZQotUHlDRnVuY3Rpb25fQ2FsbAotUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLVB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi1QeUNGdW5jdGlvbl9HZXRTZWxmCi1QeUNGdW5jdGlvbl9OZXcKLVB5Q0Z1bmN0aW9uX05ld0V4Ci1QeUNGdW5jdGlvbl9UeXBlCi1QeUNhbGxJdGVyX05ldwotUHlDYWxsSXRlcl9UeXBlCi1QeUNhbGxhYmxlX0NoZWNrCi1QeUNhcHN1bGVfR2V0Q29udGV4dAotUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLVB5Q2Fwc3VsZV9HZXROYW1lCi1QeUNhcHN1bGVfR2V0UG9pbnRlcgotUHlDYXBzdWxlX0ltcG9ydAotUHlDYXBzdWxlX0lzVmFsaWQKLVB5Q2Fwc3VsZV9OZXcKLVB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci1QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotUHlDYXBzdWxlX1NldE5hbWUKLVB5Q2Fwc3VsZV9TZXRQb2ludGVyCi1QeUNhcHN1bGVfVHlwZQotUHlDbGFzc01ldGhvZERlc2NyX1R5cGUKLVB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotUHlDb2RlY19EZWNvZGUKLVB5Q29kZWNfRGVjb2RlcgotUHlDb2RlY19FbmNvZGUKLVB5Q29kZWNfRW5jb2RlcgotUHlDb2RlY19JZ25vcmVFcnJvcnMKLVB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi1QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotUHlDb2RlY19Lbm93bkVuY29kaW5nCi1QeUNvZGVjX0xvb2t1cEVycm9yCi1QeUNvZGVjX1JlZ2lzdGVyCi1QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLVB5Q29kZWNfUmVwbGFjZUVycm9ycwotUHlDb2RlY19TdHJlYW1SZWFkZXIKLVB5Q29kZWNfU3RyZWFtV3JpdGVyCi1QeUNvZGVjX1N0cmljdEVycm9ycwotUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotUHlDb21wbGV4X0Zyb21Eb3VibGVzCi1QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi1QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi1QeUNvbXBsZXhfVHlwZQotUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotUHlEZXNjcl9OZXdHZXRTZXQKLVB5RGVzY3JfTmV3TWVtYmVyCi1QeURlc2NyX05ld01ldGhvZAotUHlEaWN0SXRlbXNfVHlwZQotUHlEaWN0SXRlckl0ZW1fVHlwZQotUHlEaWN0SXRlcktleV9UeXBlCi1QeURpY3RJdGVyVmFsdWVfVHlwZQotUHlEaWN0S2V5c19UeXBlCi1QeURpY3RQcm94eV9OZXcKLVB5RGljdFByb3h5X1R5cGUKLVB5RGljdFZhbHVlc19UeXBlCi1QeURpY3RfQ2xlYXIKLVB5RGljdF9Db250YWlucwotUHlEaWN0X0NvcHkKLVB5RGljdF9EZWxJdGVtCi1QeURpY3RfRGVsSXRlbVN0cmluZwotUHlEaWN0X0dldEl0ZW0KLVB5RGljdF9HZXRJdGVtU3RyaW5nCi1QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotUHlEaWN0X0l0ZW1zCi1QeURpY3RfS2V5cwotUHlEaWN0X01lcmdlCi1QeURpY3RfTWVyZ2VGcm9tU2VxMgotUHlEaWN0X05ldwotUHlEaWN0X05leHQKLVB5RGljdF9TZXRJdGVtCi1QeURpY3RfU2V0SXRlbVN0cmluZwotUHlEaWN0X1NpemUKLVB5RGljdF9UeXBlCi1QeURpY3RfVXBkYXRlCi1QeURpY3RfVmFsdWVzCi1QeUVsbGlwc2lzX1R5cGUKLVB5RW51bV9UeXBlCi1QeUVycl9CYWRBcmd1bWVudAotUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi1QeUVycl9DaGVja1NpZ25hbHMKLVB5RXJyX0NsZWFyCi1QeUVycl9EaXNwbGF5Ci1QeUVycl9FeGNlcHRpb25NYXRjaGVzCi1QeUVycl9GZXRjaAotUHlFcnJfRm9ybWF0Ci1QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLVB5RXJyX05ld0V4Y2VwdGlvbgotUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotUHlFcnJfTm9NZW1vcnkKLVB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotUHlFcnJfT2NjdXJyZWQKLVB5RXJyX1ByaW50Ci1QeUVycl9QcmludEV4Ci1QeUVycl9Qcm9ncmFtVGV4dAotUHlFcnJfUmVzdG9yZQotUHlFcnJfU2V0RnJvbUVycm5vCi1QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLVB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotUHlFcnJfU2V0SW50ZXJydXB0Ci1QeUVycl9TZXROb25lCi1QeUVycl9TZXRPYmplY3QKLVB5RXJyX1NldFN0cmluZwotUHlFcnJfU3ludGF4TG9jYXRpb24KLVB5RXJyX1dhcm5FeAotUHlFcnJfV2FybkV4cGxpY2l0Ci1QeUVycl9XYXJuRm9ybWF0Ci1QeUVycl9Xcml0ZVVucmFpc2FibGUKLVB5RXZhbF9BY3F1aXJlTG9jawotUHlFdmFsX0FjcXVpcmVUaHJlYWQKLVB5RXZhbF9DYWxsRnVuY3Rpb24KLVB5RXZhbF9DYWxsTWV0aG9kCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotUHlFdmFsX0V2YWxDb2RlCi1QeUV2YWxfRXZhbENvZGVFeAotUHlFdmFsX0V2YWxGcmFtZQotUHlFdmFsX0V2YWxGcmFtZUV4Ci1QeUV2YWxfR2V0QnVpbHRpbnMKLVB5RXZhbF9HZXRDYWxsU3RhdHMKLVB5RXZhbF9HZXRGcmFtZQotUHlFdmFsX0dldEZ1bmNEZXNjCi1QeUV2YWxfR2V0RnVuY05hbWUKLVB5RXZhbF9HZXRHbG9iYWxzCi1QeUV2YWxfR2V0TG9jYWxzCi1QeUV2YWxfSW5pdFRocmVhZHMKLVB5RXZhbF9SZUluaXRUaHJlYWRzCi1QeUV2YWxfUmVsZWFzZUxvY2sKLVB5RXZhbF9SZWxlYXNlVGhyZWFkCi1QeUV2YWxfUmVzdG9yZVRocmVhZAotUHlFdmFsX1NhdmVUaHJlYWQKLVB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLVB5RXhjX0FyaXRobWV0aWNFcnJvcgotUHlFeGNfQXNzZXJ0aW9uRXJyb3IKLVB5RXhjX0F0dHJpYnV0ZUVycm9yCi1QeUV4Y19CYXNlRXhjZXB0aW9uCi1QeUV4Y19CdWZmZXJFcnJvcgotUHlFeGNfQnl0ZXNXYXJuaW5nCi1QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcKLVB5RXhjX0VPRkVycm9yCi1QeUV4Y19FbnZpcm9ubWVudEVycm9yCi1QeUV4Y19FeGNlcHRpb24KLVB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcgotUHlFeGNfRnV0dXJlV2FybmluZwotUHlFeGNfR2VuZXJhdG9yRXhpdAotUHlFeGNfSU9FcnJvcgotUHlFeGNfSW1wb3J0RXJyb3IKLVB5RXhjX0ltcG9ydFdhcm5pbmcKLVB5RXhjX0luZGVudGF0aW9uRXJyb3IKLVB5RXhjX0luZGV4RXJyb3IKLVB5RXhjX0tleUVycm9yCi1QeUV4Y19LZXlib2FyZEludGVycnVwdAotUHlFeGNfTG9va3VwRXJyb3IKLVB5RXhjX01lbW9yeUVycm9yCi1QeUV4Y19NZW1vcnlFcnJvckluc3QKLVB5RXhjX05hbWVFcnJvcgotUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcgotUHlFeGNfT1NFcnJvcgotUHlFeGNfT3ZlcmZsb3dFcnJvcgotUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZwotUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0Ci1QeUV4Y19SZWZlcmVuY2VFcnJvcgotUHlFeGNfUnVudGltZUVycm9yCi1QeUV4Y19SdW50aW1lV2FybmluZwotUHlFeGNfU3RvcEl0ZXJhdGlvbgotUHlFeGNfU3ludGF4RXJyb3IKLVB5RXhjX1N5bnRheFdhcm5pbmcKLVB5RXhjX1N5c3RlbUVycm9yCi1QeUV4Y19TeXN0ZW1FeGl0Ci1QeUV4Y19UYWJFcnJvcgotUHlFeGNfVHlwZUVycm9yCi1QeUV4Y19VbmJvdW5kTG9jYWxFcnJvcgotUHlFeGNfVW5pY29kZURlY29kZUVycm9yCi1QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IKLVB5RXhjX1VuaWNvZGVFcnJvcgotUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yCi1QeUV4Y19Vbmljb2RlV2FybmluZwotUHlFeGNfVXNlcldhcm5pbmcKLVB5RXhjX1ZhbHVlRXJyb3IKLVB5RXhjX1dhcm5pbmcKLVB5RXhjX1plcm9EaXZpc2lvbkVycm9yCi1QeUV4Y2VwdGlvbl9HZXRDYXVzZQotUHlFeGNlcHRpb25fR2V0Q29udGV4dAotUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi1QeUV4Y2VwdGlvbl9TZXRDYXVzZQotUHlFeGNlcHRpb25fU2V0Q29udGV4dAotUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi1QeUZpbGVfRnJvbUZkCi1QeUZpbGVfR2V0TGluZQotUHlGaWxlX1dyaXRlT2JqZWN0Ci1QeUZpbGVfV3JpdGVTdHJpbmcKLVB5RmlsdGVyX1R5cGUKLVB5RmxvYXRfQXNEb3VibGUKLVB5RmxvYXRfRnJvbURvdWJsZQotUHlGbG9hdF9Gcm9tU3RyaW5nCi1QeUZsb2F0X0dldEluZm8KLVB5RmxvYXRfR2V0TWF4Ci1QeUZsb2F0X0dldE1pbgotUHlGbG9hdF9UeXBlCi1QeUZyb3plblNldF9OZXcKLVB5RnJvemVuU2V0X1R5cGUKLVB5R0NfQ29sbGVjdAotUHlHSUxTdGF0ZV9FbnN1cmUKLVB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi1QeUdJTFN0YXRlX1JlbGVhc2UKLVB5R2V0U2V0RGVzY3JfVHlwZQotUHlJbXBvcnRfQWRkTW9kdWxlCi1QeUltcG9ydF9BcHBlbmRJbml0dGFiCi1QeUltcG9ydF9DbGVhbnVwCi1QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi1QeUltcG9ydF9HZXRJbXBvcnRlcgotUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLVB5SW1wb3J0X0dldE1hZ2ljVGFnCi1QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci1QeUltcG9ydF9JbXBvcnQKLVB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi1QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLVB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLVB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLVB5SXRlcl9OZXh0Ci1QeUxpc3RJdGVyX1R5cGUKLVB5TGlzdFJldkl0ZXJfVHlwZQotUHlMaXN0X0FwcGVuZAotUHlMaXN0X0FzVHVwbGUKLVB5TGlzdF9HZXRJdGVtCi1QeUxpc3RfR2V0U2xpY2UKLVB5TGlzdF9JbnNlcnQKLVB5TGlzdF9OZXcKLVB5TGlzdF9SZXZlcnNlCi1QeUxpc3RfU2V0SXRlbQotUHlMaXN0X1NldFNsaWNlCi1QeUxpc3RfU2l6ZQotUHlMaXN0X1NvcnQKLVB5TGlzdF9UeXBlCi1QeUxvbmdSYW5nZUl0ZXJfVHlwZQotUHlMb25nX0FzRG91YmxlCi1QeUxvbmdfQXNMb25nCi1QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLVB5TG9uZ19Bc0xvbmdMb25nCi1QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci1QeUxvbmdfQXNTaXplX3QKLVB5TG9uZ19Bc1NzaXplX3QKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLVB5TG9uZ19Bc1ZvaWRQdHIKLVB5TG9uZ19Gcm9tRG91YmxlCi1QeUxvbmdfRnJvbUxvbmcKLVB5TG9uZ19Gcm9tTG9uZ0xvbmcKLVB5TG9uZ19Gcm9tU2l6ZV90Ci1QeUxvbmdfRnJvbVNzaXplX3QKLVB5TG9uZ19Gcm9tU3RyaW5nCi1QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi1QeUxvbmdfRnJvbVZvaWRQdHIKLVB5TG9uZ19HZXRJbmZvCi1QeUxvbmdfVHlwZQotUHlNYXBfVHlwZQotUHlNYXBwaW5nX0NoZWNrCi1QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotUHlNYXBwaW5nX0hhc0tleQotUHlNYXBwaW5nX0hhc0tleVN0cmluZwotUHlNYXBwaW5nX0l0ZW1zCi1QeU1hcHBpbmdfS2V5cwotUHlNYXBwaW5nX0xlbmd0aAotUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLVB5TWFwcGluZ19TaXplCi1QeU1hcHBpbmdfVmFsdWVzCi1QeU1lbV9GcmVlCi1QeU1lbV9NYWxsb2MKLVB5TWVtX1JlYWxsb2MKLVB5TWVtYmVyRGVzY3JfVHlwZQotUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLVB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi1QeU1lbW9yeVZpZXdfVHlwZQotUHlNZXRob2REZXNjcl9UeXBlCi1QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotUHlNb2R1bGVfQWRkT2JqZWN0Ci1QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotUHlNb2R1bGVfQ3JlYXRlMgotUHlNb2R1bGVfR2V0RGVmCi1QeU1vZHVsZV9HZXREaWN0Ci1QeU1vZHVsZV9HZXRGaWxlbmFtZQotUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLVB5TW9kdWxlX0dldE5hbWUKLVB5TW9kdWxlX0dldFN0YXRlCi1QeU1vZHVsZV9OZXcKLVB5TW9kdWxlX1R5cGUKLVB5TnVsbEltcG9ydGVyX1R5cGUKLVB5TnVtYmVyX0Fic29sdXRlCi1QeU51bWJlcl9BZGQKLVB5TnVtYmVyX0FuZAotUHlOdW1iZXJfQXNTc2l6ZV90Ci1QeU51bWJlcl9DaGVjawotUHlOdW1iZXJfRGl2bW9kCi1QeU51bWJlcl9GbG9hdAotUHlOdW1iZXJfRmxvb3JEaXZpZGUKLVB5TnVtYmVyX0luUGxhY2VBZGQKLVB5TnVtYmVyX0luUGxhY2VBbmQKLVB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci1QeU51bWJlcl9JblBsYWNlT3IKLVB5TnVtYmVyX0luUGxhY2VQb3dlcgotUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci1QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotUHlOdW1iZXJfSW5QbGFjZVhvcgotUHlOdW1iZXJfSW5kZXgKLVB5TnVtYmVyX0ludmVydAotUHlOdW1iZXJfTG9uZwotUHlOdW1iZXJfTHNoaWZ0Ci1QeU51bWJlcl9NdWx0aXBseQotUHlOdW1iZXJfTmVnYXRpdmUKLVB5TnVtYmVyX09yCi1QeU51bWJlcl9Qb3NpdGl2ZQotUHlOdW1iZXJfUG93ZXIKLVB5TnVtYmVyX1JlbWFpbmRlcgotUHlOdW1iZXJfUnNoaWZ0Ci1QeU51bWJlcl9TdWJ0cmFjdAotUHlOdW1iZXJfVG9CYXNlCi1QeU51bWJlcl9UcnVlRGl2aWRlCi1QeU51bWJlcl9Yb3IKLVB5T1NfQWZ0ZXJGb3JrCi1QeU9TX0luaXRJbnRlcnJ1cHRzCi1QeU9TX0lucHV0SG9vawotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcgotUHlPU19kb3VibGVfdG9fc3RyaW5nCi1QeU9TX2dldHNpZwotUHlPU19teXN0cmljbXAKLVB5T1NfbXlzdHJuaWNtcAotUHlPU19zZXRzaWcKLVB5T1Nfc25wcmludGYKLVB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotUHlPU19zdHJ0b2wKLVB5T1Nfc3RydG91bAotUHlPU192c25wcmludGYKLVB5T2JqZWN0X0FTQ0lJCi1QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLVB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLVB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotUHlPYmplY3RfQnl0ZXMKLVB5T2JqZWN0X0NhbGwKLVB5T2JqZWN0X0NhbGxGdW5jdGlvbgotUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotUHlPYmplY3RfQ2FsbE1ldGhvZAotUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLVB5T2JqZWN0X0NhbGxPYmplY3QKLVB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotUHlPYmplY3RfRGVsSXRlbQotUHlPYmplY3RfRGVsSXRlbVN0cmluZwotUHlPYmplY3RfRGlyCi1QeU9iamVjdF9Gb3JtYXQKLVB5T2JqZWN0X0ZyZWUKLVB5T2JqZWN0X0dDX0RlbAotUHlPYmplY3RfR0NfVHJhY2sKLVB5T2JqZWN0X0dDX1VuVHJhY2sKLVB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi1QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotUHlPYmplY3RfR2V0QXR0cgotUHlPYmplY3RfR2V0QXR0clN0cmluZwotUHlPYmplY3RfR2V0SXRlbQotUHlPYmplY3RfR2V0SXRlcgotUHlPYmplY3RfSGFzQXR0cgotUHlPYmplY3RfSGFzQXR0clN0cmluZwotUHlPYmplY3RfSGFzaAotUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi1QeU9iamVjdF9Jbml0Ci1QeU9iamVjdF9Jbml0VmFyCi1QeU9iamVjdF9Jc0luc3RhbmNlCi1QeU9iamVjdF9Jc1N1YmNsYXNzCi1QeU9iamVjdF9Jc1RydWUKLVB5T2JqZWN0X0xlbmd0aAotUHlPYmplY3RfTWFsbG9jCi1QeU9iamVjdF9Ob3QKLVB5T2JqZWN0X1JlYWxsb2MKLVB5T2JqZWN0X1JlcHIKLVB5T2JqZWN0X1JpY2hDb21wYXJlCi1QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLVB5T2JqZWN0X1NlbGZJdGVyCi1QeU9iamVjdF9TZXRBdHRyCi1QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi1QeU9iamVjdF9TZXRJdGVtCi1QeU9iamVjdF9TaXplCi1QeU9iamVjdF9TdHIKLVB5T2JqZWN0X1R5cGUKLVB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi1QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi1QeVByb3BlcnR5X1R5cGUKLVB5UmFuZ2VJdGVyX1R5cGUKLVB5UmFuZ2VfVHlwZQotUHlSZXZlcnNlZF9UeXBlCi1QeVNlcUl0ZXJfTmV3Ci1QeVNlcUl0ZXJfVHlwZQotUHlTZXF1ZW5jZV9DaGVjawotUHlTZXF1ZW5jZV9Db25jYXQKLVB5U2VxdWVuY2VfQ29udGFpbnMKLVB5U2VxdWVuY2VfQ291bnQKLVB5U2VxdWVuY2VfRGVsSXRlbQotUHlTZXF1ZW5jZV9EZWxTbGljZQotUHlTZXF1ZW5jZV9GYXN0Ci1QeVNlcXVlbmNlX0dldEl0ZW0KLVB5U2VxdWVuY2VfR2V0U2xpY2UKLVB5U2VxdWVuY2VfSW4KLVB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci1QeVNlcXVlbmNlX0luZGV4Ci1QeVNlcXVlbmNlX0xlbmd0aAotUHlTZXF1ZW5jZV9MaXN0Ci1QeVNlcXVlbmNlX1JlcGVhdAotUHlTZXF1ZW5jZV9TZXRJdGVtCi1QeVNlcXVlbmNlX1NldFNsaWNlCi1QeVNlcXVlbmNlX1NpemUKLVB5U2VxdWVuY2VfVHVwbGUKLVB5U2V0SXRlcl9UeXBlCi1QeVNldF9BZGQKLVB5U2V0X0NsZWFyCi1QeVNldF9Db250YWlucwotUHlTZXRfRGlzY2FyZAotUHlTZXRfTmV3Ci1QeVNldF9Qb3AKLVB5U2V0X1NpemUKLVB5U2V0X1R5cGUKLVB5U2xpY2VfR2V0SW5kaWNlcwotUHlTbGljZV9HZXRJbmRpY2VzRXgKLVB5U2xpY2VfTmV3Ci1QeVNsaWNlX1R5cGUKLVB5U29ydFdyYXBwZXJfVHlwZQotUHlTdGF0ZV9GaW5kTW9kdWxlCi1QeVN0YXRlX0FkZE1vZHVsZQotUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLVB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLVB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi1QeVN1cGVyX1R5cGUKLVB5U3lzX0FkZFdhcm5PcHRpb24KLVB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi1QeVN5c19Gb3JtYXRTdGRlcnIKLVB5U3lzX0Zvcm1hdFN0ZG91dAotUHlTeXNfR2V0T2JqZWN0Ci1QeVN5c19IYXNXYXJuT3B0aW9ucwotUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotUHlTeXNfU2V0QXJndgotUHlTeXNfU2V0QXJndkV4Ci1QeVN5c19TZXRPYmplY3QKLVB5U3lzX1NldFBhdGgKLVB5U3lzX1dyaXRlU3RkZXJyCi1QeVN5c19Xcml0ZVN0ZG91dAotUHlUaHJlYWRTdGF0ZV9DbGVhcgotUHlUaHJlYWRTdGF0ZV9EZWxldGUKLVB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotUHlUaHJlYWRTdGF0ZV9HZXQKLVB5VGhyZWFkU3RhdGVfR2V0RGljdAotUHlUaHJlYWRTdGF0ZV9OZXcKLVB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLVB5VGhyZWFkU3RhdGVfU3dhcAotUHlUcmFjZUJhY2tfSGVyZQotUHlUcmFjZUJhY2tfUHJpbnQKLVB5VHJhY2VCYWNrX1R5cGUKLVB5VHVwbGVJdGVyX1R5cGUKLVB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotUHlUdXBsZV9HZXRJdGVtCi1QeVR1cGxlX0dldFNsaWNlCi1QeVR1cGxlX05ldwotUHlUdXBsZV9QYWNrCi1QeVR1cGxlX1NldEl0ZW0KLVB5VHVwbGVfU2l6ZQotUHlUdXBsZV9UeXBlCi1QeVR5cGVfQ2xlYXJDYWNoZQotUHlUeXBlX0Zyb21TcGVjCi1QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKLVB5VHlwZV9HZW5lcmljQWxsb2MKLVB5VHlwZV9HZW5lcmljTmV3Ci1QeVR5cGVfR2V0RmxhZ3MKLVB5VHlwZV9HZXRTbG90Ci1QeVR5cGVfSXNTdWJ0eXBlCi1QeVR5cGVfTW9kaWZpZWQKLVB5VHlwZV9SZWFkeQotUHlUeXBlX1R5cGUKLVB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLVB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLVB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci1QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLVB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLVB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci1QeVVuaWNvZGVJdGVyX1R5cGUKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLVB5VW5pY29kZV9BcHBlbmQKLVB5VW5pY29kZV9BcHBlbmRBbmREZWwKLVB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi1QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCi1QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci1QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQotUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLVB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLVB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCi1QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi1QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi1QeVVuaWNvZGVfQXNXaWRlQ2hhcgotUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKLVB5VW5pY29kZV9Db21wYXJlCi1QeVVuaWNvZGVfQ29uY2F0Ci1QeVVuaWNvZGVfQ29udGFpbnMKLVB5VW5pY29kZV9Db3VudAotUHlVbmljb2RlX0RlY29kZQotUHlVbmljb2RlX0RlY29kZUFTQ0lJCi1QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAotUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLVB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLVB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi1QeVVuaWNvZGVfRGVjb2RlVVRGMTYKLVB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi1QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLVB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi1QeVVuaWNvZGVfRGVjb2RlVVRGOAotUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKLVB5VW5pY29kZV9GU0NvbnZlcnRlcgotUHlVbmljb2RlX0ZTRGVjb2RlcgotUHlVbmljb2RlX0ZpbmQKLVB5VW5pY29kZV9Gb3JtYXQKLVB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotUHlVbmljb2RlX0Zyb21Gb3JtYXQKLVB5VW5pY29kZV9Gcm9tRm9ybWF0VgotUHlVbmljb2RlX0Zyb21PYmplY3QKLVB5VW5pY29kZV9Gcm9tT3JkaW5hbAotUHlVbmljb2RlX0Zyb21TdHJpbmcKLVB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwotUHlVbmljb2RlX0dldFNpemUKLVB5VW5pY29kZV9Jc0lkZW50aWZpZXIKLVB5VW5pY29kZV9Kb2luCi1QeVVuaWNvZGVfUGFydGl0aW9uCi1QeVVuaWNvZGVfUlBhcnRpdGlvbgotUHlVbmljb2RlX1JTcGxpdAotUHlVbmljb2RlX1JlcGxhY2UKLVB5VW5pY29kZV9SZXNpemUKLVB5VW5pY29kZV9SaWNoQ29tcGFyZQotUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotUHlVbmljb2RlX1NwbGl0Ci1QeVVuaWNvZGVfU3BsaXRsaW5lcwotUHlVbmljb2RlX1RhaWxtYXRjaAotUHlVbmljb2RlX1RyYW5zbGF0ZQotUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi1QeVVuaWNvZGVfRGVjb2RlVVRGNwotUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLVB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotUHlVbmljb2RlX0ludGVybkluUGxhY2UKLVB5VW5pY29kZV9UeXBlCi1QeVdlYWtyZWZfR2V0T2JqZWN0Ci1QeVdlYWtyZWZfTmV3UHJveHkKLVB5V2Vha3JlZl9OZXdSZWYKLVB5V3JhcHBlckRlc2NyX1R5cGUKLVB5V3JhcHBlcl9OZXcKLVB5WmlwX1R5cGUKLVB5X0FkZFBlbmRpbmdDYWxsCi1QeV9BdEV4aXQKLVB5X0J1aWxkVmFsdWUKLVB5X0NvbXBpbGVTdHJpbmcKLVB5X0RlY1JlZgotUHlfRW5kSW50ZXJwcmV0ZXIKLVB5X0V4aXQKLVB5X0ZhdGFsRXJyb3IKLVB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcKLVB5X0ZpbmFsaXplCi1QeV9HZXRCdWlsZEluZm8KLVB5X0dldENvbXBpbGVyCi1QeV9HZXRDb3B5cmlnaHQKLVB5X0dldEV4ZWNQcmVmaXgKLVB5X0dldFBhdGgKLVB5X0dldFBsYXRmb3JtCi1QeV9HZXRQcmVmaXgKLVB5X0dldFByb2dyYW1GdWxsUGF0aAotUHlfR2V0UHJvZ3JhbU5hbWUKLVB5X0dldFB5dGhvbkhvbWUKLVB5X0dldFJlY3Vyc2lvbkxpbWl0Ci1QeV9HZXRWZXJzaW9uCi1QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nCi1QeV9JbmNSZWYKLVB5X0luaXRpYWxpemUKLVB5X0luaXRpYWxpemVFeAotUHlfSXNJbml0aWFsaXplZAotUHlfTWFpbgotUHlfTWFrZVBlbmRpbmdDYWxscwotUHlfTmV3SW50ZXJwcmV0ZXIKLVB5X1JlcHJFbnRlcgotUHlfUmVwckxlYXZlCi1QeV9TZXRQcm9ncmFtTmFtZQotUHlfU2V0UHl0aG9uSG9tZQotUHlfU2V0UmVjdXJzaW9uTGltaXQKLVB5X1N5bXRhYmxlU3RyaW5nCi1QeV9WYUJ1aWxkVmFsdWUKLV9QeUVycl9CYWRJbnRlcm5hbENhbGwKLV9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKLV9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi1fUHlPYmplY3RfR0NfTWFsbG9jCi1fUHlPYmplY3RfR0NfTmV3Ci1fUHlPYmplY3RfR0NfTmV3VmFyCi1fUHlPYmplY3RfR0NfUmVzaXplCi1fUHlPYmplY3RfTmV3Ci1fUHlPYmplY3RfTmV3VmFyCi1fUHlTdGF0ZV9BZGRNb2R1bGUKLV9QeVRocmVhZFN0YXRlX0luaXQKLV9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi1fUHlUcmFzaF9kZWxldGVfbGF0ZXIKLV9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nCi1fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZQotX1B5V2Vha3JlZl9Qcm94eVR5cGUKLV9QeVdlYWtyZWZfUmVmVHlwZQotX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLV9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0Ci1fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi1fUHlfRGVhbGxvYwotX1B5X0VsbGlwc2lzT2JqZWN0Ci1fUHlfRmFsc2VTdHJ1Y3QKLV9QeV9Ob25lU3RydWN0Ci1fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QKLV9QeV9Td2FwcGVkT3AKLV9QeV9UcnVlU3RydWN0Ci1fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi1fUHlBcmdfUGFyc2VfU2l6ZVQKLV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi1fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi1fUHlBcmdfVmFQYXJzZV9TaXplVAotX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi1fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX2V4ZS5yYyBiL1BDL3B5dGhvbl9leGUucmMKaW5kZXggMTRlMjU3NC4uOTE3ODVhMSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX2V4ZS5yYworKysgYi9QQy9weXRob25fZXhlLnJjCkBAIC0xICsxLDQ5IEBACi0xICAgICAgICAgICBJQ09OICAgIERJU0NBUkRBQkxFICAgICAicHljb24uaWNvIiAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJweWNvbi5pY28iIAorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKKyBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAorIEZJTEVGTEFHU01BU0sgMHgzZkwKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwKKyNlbmRpZgorIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgorIEZJTEVUWVBFIFZGVF9BUFAKKyBGSUxFU1VCVFlQRSAweDBMCitCRUdJTgorICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBCTE9DSyAiMDAwMDA0YjAiCisgICAgICAgIEJFR0lOCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUHl0aG9uIENvbnNvbGVcMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9uIiBQWVRIT05fREVCVUdfRVhUICIuZXhlXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHgwLCAxMjAwCisgICAgRU5ECitFTkQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9udC5yYyBiL1BDL3B5dGhvbl9udC5yYwppbmRleCBmODVkNTM5Li5mYWM2MTA1IDEwMDY0NAotLS0gYS9QQy9weXRob25fbnQucmMKKysrIGIvUEMvcHl0aG9uX250LnJjCkBAIC0xLDMzICsxLDExIEBACiAvLyBSZXNvdXJjZSBzY3JpcHQgZm9yIFB5dGhvbiBjb3JlIERMTC4KLS8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCi0vLwotI2luY2x1ZGUgIndpbnZlci5oIgogCi0jZGVmaW5lIE1TX1dJTkRPV1MKLSNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCi0jaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgotI2lmZGVmIF9ERUJVRwotIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjX2QuaCIKLSNlbHNlCi0jICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKLSNlbmRpZgorI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKIAotLyogZS5nLiwgMy4zLjBhMQotICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCi0gKi8KLSNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCi0KLS8qIDY0LWJpdCB2ZXJzaW9uIG51bWJlciBhcyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA0IDE2LWJpdCBpbnRzICovCi0jaWYgUFlfTUlDUk9fVkVSU0lPTiA+IDY0Ci0jICAgZXJyb3IgIlBZX01JQ1JPX1ZFUlNJT04gPiA2NCIKLSNlbmRpZgotI2lmIFBZX1JFTEVBU0VfTEVWRUwgPiA5OQotIyAgIGVycm9yICJQWV9SRUxFQVNFX0xFVkVMID4gOTkiCi0jZW5kaWYKLSNpZiBQWV9SRUxFQVNFX1NFUklBTCA+IDkKLSMgICBlcnJvciAiUFlfUkVMRUFTRV9TRVJJQUwgPiA5IgotI2VuZGlmCi0jZGVmaW5lIFBZVkVSU0lPTjY0IFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04sIEZJRUxEMywgUFlUSE9OX0FQSV9WRVJTSU9OCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMiBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgogCiAvLyBTdHJpbmcgVGFibGVzCiBTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpAQCAtNDUsMjMgKzIzLDIzIEBACiAgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKICBGSUxFRkxBR1NNQVNLIDB4M2ZMCiAjaWZkZWYgX0RFQlVHCi0gRklMRUZMQUdTIDB4MUwKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKICNlbHNlCiAgRklMRUZMQUdTIDB4MEwKICNlbmRpZgotIEZJTEVPUyAweDQwMDA0TAotIEZJTEVUWVBFIDB4MUwKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfRExMCiAgRklMRVNVQlRZUEUgMHgwTAogQkVHSU4KICAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgICAgQkVHSU4KICAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgogICAgICAgICBCRUdJTgotICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uXDAiCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBDb3JlXDAiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gRExMXDAiCi0gICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMjAwMS0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgqSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCCpIDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgqSAxOTkxLTE5OTUgU01DLlwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsIFBZVEhPTl9ETExfTkFNRSAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCiAgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX3Zlcl9yYy5oIGIvUEMvcHl0aG9uX3Zlcl9yYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyN2U5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9weXRob25fdmVyX3JjLmgKQEAgLTAsMCArMSwzNSBAQAorLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCisvLyBDdXJyZW50bHkgb25seSBob2xkcyB2ZXJzaW9uIGluZm9ybWF0aW9uLgorLy8KKyNpbmNsdWRlICJ3aW52ZXIuaCIKKworI2RlZmluZSBQWVRIT05fQ09NUEFOWSAgICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyNkZWZpbmUgUFlUSE9OX0NPUFlSSUdIVCAiQ29weXJpZ2h0IFx4QTkgMjAwMS0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgXHhBOSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCBceEE5IDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgXHhBOSAxOTkxLTE5OTUgU01DLiIKKworI2RlZmluZSBNU19XSU5ET1dTCisjaW5jbHVkZSAibW9kc3VwcG9ydC5oIgorI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKKyNpZmRlZiBfREVCVUcKKyMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCisjICAgZGVmaW5lIFBZVEhPTl9ERUJVR19FWFQgIl9kIgorI2Vsc2UKKyMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgorIyAgIGRlZmluZSBQWVRIT05fREVCVUdfRVhUCisjZW5kaWYKKworLyogZS5nLiwgMy4zLjBhMQorICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNobGV2ZWwuaAorICovCisjZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgorCisvKiA2NC1iaXQgdmVyc2lvbiBudW1iZXIgYXMgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgNCAxNi1iaXQgaW50cyAqLworI2lmIFBZX01JQ1JPX1ZFUlNJT04gPiA2NAorIyAgIGVycm9yICJQWV9NSUNST19WRVJTSU9OID4gNjQiCisjZW5kaWYKKyNpZiBQWV9SRUxFQVNFX0xFVkVMID4gOTkKKyMgICBlcnJvciAiUFlfUkVMRUFTRV9MRVZFTCA+IDk5IgorI2VuZGlmCisjaWYgUFlfUkVMRUFTRV9TRVJJQUwgPiA5CisjICAgZXJyb3IgIlBZX1JFTEVBU0VfU0VSSUFMID4gOSIKKyNlbmRpZgorI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgpkaWZmIC0tZ2l0IGEvUEMvcmVhZG1lLnR4dCBiL1BDL3JlYWRtZS50eHQKaW5kZXggNjBmMjMxZS4uODYzOWRjMyAxMDA2NDQKLS0tIGEvUEMvcmVhZG1lLnR4dAorKysgYi9QQy9yZWFkbWUudHh0CkBAIC03NCwxMSArNzQsNiBAQAogZXhhbXBsZV9udCAgICAgQSBzdWJkaXJlY3Rvcnkgc2hvd2luZyBob3cgdG8gYnVpbGQgYW4gZXh0ZW5zaW9uIGFzIGEKICAgICAgICAgICAgICAgIERMTC4KIAotTGVnYWN5IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1UaGUgc3ViZGlyZWN0b3JpZXMgVkM2LCBWUzcuMSBhbmQgVlM4LjAgY29udGFpbiBsZWdhY3kgc3VwcG9ydCBvbGRlcgotdmVyc2lvbnMgb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uIFNlZSBQQ2J1aWxkL3JlYWRtZS50eHQuCi0KIE5vdGUgZm9yIFdpbmRvd3MgMy54IGFuZCBET1MgdXNlcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCAxOWQ1YTcwLi4zMzEzMjAyIDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIndpbmRvd3MuaCIKIAogc3RhdGljIEJPT0wgUHlIS0VZX0FzSEtFWShQeU9iamVjdCAqb2IsIEhLRVkgKnBSZXMsIEJPT0wgYk5vbmVPSyk7CitzdGF0aWMgQk9PTCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iLCB2b2lkICpwKTsKIHN0YXRpYyBQeU9iamVjdCAqUHlIS0VZX0Zyb21IS0VZKEhLRVkgaCk7CiBzdGF0aWMgQk9PTCBQeUhLRVlfQ2xvc2UoUHlPYmplY3QgKm9iSGFuZGxlKTsKIApAQCAtNDYsMTAgKzQ3LDEyIEBACiAiRGVsZXRlVmFsdWUoKSAtIFJlbW92ZXMgYSBuYW1lZCB2YWx1ZSBmcm9tIHRoZSBzcGVjaWZpZWQgcmVnaXN0cnkga2V5LlxuIgogIkVudW1LZXkoKSAtIEVudW1lcmF0ZXMgc3Via2V5cyBvZiB0aGUgc3BlY2lmaWVkIG9wZW4gcmVnaXN0cnkga2V5LlxuIgogIkVudW1WYWx1ZSgpIC0gRW51bWVyYXRlcyB2YWx1ZXMgb2YgdGhlIHNwZWNpZmllZCBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKLSJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoKSAtIEV4cGFuZCB0aGUgZW52IHN0cmluZ3MgaW4gYSBSRUdfRVhQQU5EX1NaIHN0cmluZy5cbiIKKyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoKSAtIEV4cGFuZCB0aGUgZW52IHN0cmluZ3MgaW4gYSBSRUdfRVhQQU5EX1NaXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuXG4iCiAiRmx1c2hLZXkoKSAtIFdyaXRlcyBhbGwgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHNwZWNpZmllZCBrZXkgdG8gdGhlIHJlZ2lzdHJ5LlxuIgotIkxvYWRLZXkoKSAtIENyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORSBhbmQgc3RvcmVzXG4iCi0iICAgICAgICAgICAgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXQgc3Via2V5LlxuIgorIkxvYWRLZXkoKSAtIENyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORSBhbmRcbiIKKyIgICAgICAgICAgICBzdG9yZXMgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXRcbiIKKyIgICAgICAgICAgICBzdWJrZXkuXG4iCiAiT3BlbktleSgpIC0gT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCiAiT3BlbktleUV4KCkgLSBBbGlhcyBvZiBPcGVuS2V5KCkuXG4iCiAiUXVlcnlWYWx1ZSgpIC0gUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVubmFtZWQgdmFsdWUgZm9yIGFcbiIKQEAgLTcxLDI5OSArNzQsNiBAQAogInRvIHNlZSB3aGF0IGNvbnN0YW50cyBhcmUgdXNlZCwgYW5kIHdoZXJlLiIpOwogCiAKLVB5RG9jX1NUUlZBUihDbG9zZUtleV9kb2MsCi0iQ2xvc2VLZXkoaGtleSlcbiIKLSJDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0iVGhlIGhrZXkgYXJndW1lbnQgc3BlY2lmaWVzIGEgcHJldmlvdXNseSBvcGVuZWQga2V5LlxuIgotIlxuIgotIk5vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmVcbiIKLSJjbG9zZWQgd2hlbiB0aGUgaGtleSBvYmplY3QgaXMgZGVzdHJveWVkIGJ5IFB5dGhvbi4iKTsKLQotUHlEb2NfU1RSVkFSKENvbm5lY3RSZWdpc3RyeV9kb2MsCi0iQ29ubmVjdFJlZ2lzdHJ5KGNvbXB1dGVyX25hbWUsIGtleSkgLT4ga2V5XG4iCi0iRXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIGEgcHJlZGVmaW5lZCByZWdpc3RyeSBoYW5kbGUgb24gYW5vdGhlciBjb21wdXRlci5cbiIKLSJcbiIKLSJjb21wdXRlcl9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgY29tcHV0ZXIsIG9mIHRoZSBmb3JtIFxcXFxjb21wdXRlcm5hbWUuXG4iCi0iICAgICAgICAgICAgICBJZiBOb25lLCB0aGUgbG9jYWwgY29tcHV0ZXIgaXMgdXNlZC5cbiIKLSJrZXkgaXMgdGhlIHByZWRlZmluZWQgaGFuZGxlIHRvIGNvbm5lY3QgdG8uXG4iCi0iXG4iCi0iVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoQ3JlYXRlS2V5X2RvYywKLSJDcmVhdGVLZXkoa2V5LCBzdWJfa2V5KSAtPiBrZXlcbiIKLSJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgotIlxuIgotIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgotInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgotIlxuIgotIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS5cbiIKLSJcbiIKLSJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihDcmVhdGVLZXlFeF9kb2MsCi0iQ3JlYXRlS2V5RXgoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX1dSSVRFKSAtPiBrZXlcbiIKLSJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50c1xuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCi0icmVzZXJ2ZWQgaXMgYSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgotImFjY2VzcyBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBcbiIKLSIgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLlxuIgotIlxuIgotIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgotInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgotIlxuIgotIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleVxuIgotIlxuIgotIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKERlbGV0ZUtleV9kb2MsCi0iRGVsZXRlS2V5KGtleSwgc3ViX2tleSlcbiIKLSJEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG11c3QgYmUgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXlcbiIKLSIgICAgICAgIHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90IGhhdmVcbiIKLSIgICAgICAgIHN1YmtleXMuXG4iCi0iXG4iCi0iVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuXG4iCi0iXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLFxuIgotImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKERlbGV0ZUtleUV4X2RvYywKLSJEZWxldGVLZXlFeChrZXksIHN1Yl9rZXksIGFjY2Vzcz1LRVlfV09XNjRfNjRLRVksIHJlc2VydmVkPTApXG4iCi0iRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleSAoNjQtYml0IE9TIG9ubHkpLlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG11c3QgYmUgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXlcbiIKLSIgICAgICAgIHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90IGhhdmVcbiIKLSIgICAgICAgIHN1YmtleXMuXG4iCi0icmVzZXJ2ZWQgaXMgYSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgotImFjY2VzcyBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBcbiIKLSIgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dPVzY0XzY0S0VZLlxuIgotIlxuIgotIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgotIlxuIgotIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iCi0iT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVWYWx1ZV9kb2MsCi0iRGVsZXRlVmFsdWUoa2V5LCB2YWx1ZSlcbiIKLSJSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgdmFsdWUgdG8gcmVtb3ZlLiIpOwotCi1QeURvY19TVFJWQVIoRW51bUtleV9kb2MsCi0iRW51bUtleShrZXksIGluZGV4KSAtPiBzdHJpbmdcbiIKLSJFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJpbmRleCBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIGtleSB0byByZXRyaWV2ZS5cbiIKLSJcbiIKLSJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb24gaXNcbiIKLSJyYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4iKTsKLQotUHlEb2NfU1RSVkFSKEVudW1WYWx1ZV9kb2MsCi0iRW51bVZhbHVlKGtleSwgaW5kZXgpIC0+IHR1cGxlXG4iCi0iRW51bWVyYXRlcyB2YWx1ZXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJpbmRleCBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLlxuIgotIlxuIgotIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgotIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb25cbiIKLSJpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuXG4iCi0iXG4iCi0iVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCi0idmFsdWVfbmFtZSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlLlxuIgotInZhbHVlX2RhdGEgaXMgYW4gb2JqZWN0IHRoYXQgaG9sZHMgdGhlIHZhbHVlIGRhdGEsIGFuZCB3aG9zZSB0eXBlIGRlcGVuZHNcbiIKLSIgICAgICAgICAgIG9uIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJ5IHR5cGUuXG4iCi0iZGF0YV90eXBlIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBkYXRhLiIpOwotCi1QeURvY19TVFJWQVIoRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX2RvYywKLSJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3Moc3RyaW5nKSAtPiBzdHJpbmdcbiIKLSJFeHBhbmQgZW52aXJvbm1lbnQgdmFycy5cbiIpOwotCi1QeURvY19TVFJWQVIoRmx1c2hLZXlfZG9jLAotIkZsdXNoS2V5KGtleSlcbiIKLSJXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIGEga2V5IHRvIHRoZSByZWdpc3RyeS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotIlxuIgotIkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBGbHVzaEtleSB0byBjaGFuZ2UgYSBrZXkuICBSZWdpc3RyeSBjaGFuZ2VzIGFyZVxuIgotImZsdXNoZWQgdG8gZGlzayBieSB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIGxhenkgZmx1c2hlci4gIFJlZ2lzdHJ5IGNoYW5nZXMgYXJlXG4iCi0iYWxzbyBmbHVzaGVkIHRvIGRpc2sgYXQgc3lzdGVtIHNodXRkb3duLiAgVW5saWtlIENsb3NlS2V5KCksIHRoZSBGbHVzaEtleSgpXG4iCi0ibWV0aG9kIHJldHVybnMgb25seSB3aGVuIGFsbCB0aGUgZGF0YSBoYXMgYmVlbiB3cml0dGVuIHRvIHRoZSByZWdpc3RyeS5cbiIKLSJcbiIKLSJBbiBhcHBsaWNhdGlvbiBzaG91bGQgb25seSBjYWxsIEZsdXNoS2V5KCkgaWYgaXQgcmVxdWlyZXMgYWJzb2x1dGUgY2VydGFpbnR5XG4iCi0idGhhdCByZWdpc3RyeSBjaGFuZ2VzIGFyZSBvbiBkaXNrLiAgSWYgeW91IGRvbid0IGtub3cgd2hldGhlciBhIEZsdXNoS2V5KClcbiIKLSJjYWxsIGlzIHJlcXVpcmVkLCBpdCBwcm9iYWJseSBpc24ndC4iKTsKLQotUHlEb2NfU1RSVkFSKExvYWRLZXlfZG9jLAotIkxvYWRLZXkoa2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpXG4iCi0iQ3JlYXRlcyBhIHN1YmtleSB1bmRlciB0aGUgc3BlY2lmaWVkIGtleSBhbmQgc3RvcmVzIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvblxuIgotImZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXQgc3Via2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gbG9hZC5cbiIKLSJmaWxlX25hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZCByZWdpc3RyeSBkYXRhIGZyb20uICBUaGlzIGZpbGUgbXVzdFxuIgotIiAgICAgICAgICBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBTYXZlS2V5KCkgZnVuY3Rpb24uICBVbmRlciB0aGUgZmlsZVxuIgotIiAgICAgICAgICBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtLCB0aGUgZmlsZW5hbWUgbWF5IG5vdCBoYXZlIGFuXG4iCi0iICAgICAgICAgIGV4dGVuc2lvbi5cbiIKLSJcbiIKLSJBIGNhbGwgdG8gTG9hZEtleSgpIGZhaWxzIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QgaGF2ZSB0aGVcbiIKLSJTRV9SRVNUT1JFX1BSSVZJTEVHRSBwcml2aWxlZ2UuXG4iCi0iXG4iCi0iSWYga2V5IGlzIGEgaGFuZGxlIHJldHVybmVkIGJ5IENvbm5lY3RSZWdpc3RyeSgpLCB0aGVuIHRoZSBwYXRoIHNwZWNpZmllZFxuIgotImluIGZpbGVOYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuXG4iCi0iXG4iCi0iVGhlIGRvY3MgaW1wbHkga2V5IG11c3QgYmUgaW4gdGhlIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUgdHJlZSIpOwotCi1QeURvY19TVFJWQVIoT3BlbktleV9kb2MsCi0iT3BlbktleShrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz1LRVlfUkVBRCkgLT4ga2V5XG4iCi0iT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLlxuIgotInJlc2VydmVkIGlzIGEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKLSJhY2Nlc3MgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgZGVzaXJlZFxuIgotIiAgICAgICBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuICBEZWZhdWx0IGlzIEtFWV9SRUFEXG4iCi0iXG4iCi0iVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXlcbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKE9wZW5LZXlFeF9kb2MsICJTZWUgT3BlbktleSgpIik7Ci0KLVB5RG9jX1NUUlZBUihRdWVyeUluZm9LZXlfZG9jLAotIlF1ZXJ5SW5mb0tleShrZXkpIC0+IHR1cGxlXG4iCi0iUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotIlxuIgotIlRoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOiIKLSJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHN1YiBrZXlzIHRoaXMga2V5IGhhcy5cbiIKLSJBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGlzIGtleSBoYXMuXG4iCi0iQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGUga2V5IHdhcyBsYXN0IG1vZGlmaWVkIChpZiBhdmFpbGFibGUpXG4iCi0iIGFzIDEwMCdzIG9mIG5hbm9zZWNvbmRzIHNpbmNlIEphbiAxLCAxNjAwLiIpOwotCi1QeURvY19TVFJWQVIoUXVlcnlWYWx1ZV9kb2MsCi0iUXVlcnlWYWx1ZShrZXksIHN1Yl9rZXkpIC0+IHN0cmluZ1xuIgotIlJldHJpZXZlcyB0aGUgdW5uYW1lZCB2YWx1ZSBmb3IgYSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgaG9sZHMgdGhlIG5hbWUgb2YgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZVxuIgotIiAgICAgICAgaXMgYXNzb2NpYXRlZC4gIElmIHRoaXMgcGFyYW1ldGVyIGlzIE5vbmUgb3IgZW1wdHksIHRoZSBmdW5jdGlvblxuIgotIiAgICAgICAgcmV0cmlldmVzIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIFNldFZhbHVlKCkgbWV0aG9kIGZvciB0aGUga2V5XG4iCi0iICAgICAgICBpZGVudGlmaWVkIGJ5IGtleS4iCi0iXG4iCi0iVmFsdWVzIGluIHRoZSByZWdpc3RyeSBoYXZlIG5hbWUsIHR5cGUsIGFuZCBkYXRhIGNvbXBvbmVudHMuIFRoaXMgbWV0aG9kXG4iCi0icmV0cmlldmVzIHRoZSBkYXRhIGZvciBhIGtleSdzIGZpcnN0IHZhbHVlIHRoYXQgaGFzIGEgTlVMTCBuYW1lLlxuIgotIkJ1dCB0aGUgdW5kZXJseWluZyBBUEkgY2FsbCBkb2Vzbid0IHJldHVybiB0aGUgdHlwZSwgTGFtZSBMYW1lIExhbWUsIERPTlQgVVNFIFRISVMhISEiKTsKLQotUHlEb2NfU1RSVkFSKFF1ZXJ5VmFsdWVFeF9kb2MsCi0iUXVlcnlWYWx1ZUV4KGtleSwgdmFsdWVfbmFtZSkgLT4gKHZhbHVlLCB0eXBlX2lkKVxuIgotIlJldHJpZXZlcyB0aGUgdHlwZSBhbmQgZGF0YSBmb3IgYSBzcGVjaWZpZWQgdmFsdWUgbmFtZSBhc3NvY2lhdGVkIHdpdGggYW5cbiIKLSJvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInZhbHVlX25hbWUgaXMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmFsdWUgdG8gcXVlcnkiKTsKLQotUHlEb2NfU1RSVkFSKFNhdmVLZXlfZG9jLAotIlNhdmVLZXkoa2V5LCBmaWxlX25hbWUpXG4iCi0iU2F2ZXMgdGhlIHNwZWNpZmllZCBrZXksIGFuZCBhbGwgaXRzIHN1YmtleXMgdG8gdGhlIHNwZWNpZmllZCBmaWxlLlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0iZmlsZV9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHNhdmUgcmVnaXN0cnkgZGF0YSB0by4gIFRoaXMgZmlsZSBjYW5ub3RcbiIKLSIgICAgICAgICAgYWxyZWFkeSBleGlzdC4gSWYgdGhpcyBmaWxlbmFtZSBpbmNsdWRlcyBhbiBleHRlbnNpb24sIGl0IGNhbm5vdCBiZVxuIgotIiAgICAgICAgICB1c2VkIG9uIGZpbGUgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbXMgYnkgdGhlIExvYWRLZXkoKSxcbiIKLSIgICAgICAgICAgUmVwbGFjZUtleSgpIG9yIFJlc3RvcmVLZXkoKSBtZXRob2RzLlxuIgotIlxuIgotIklmIGtleSByZXByZXNlbnRzIGEga2V5IG9uIGEgcmVtb3RlIGNvbXB1dGVyLCB0aGUgcGF0aCBkZXNjcmliZWQgYnkgZmlsZV9uYW1lXG4iCi0iaXMgcmVsYXRpdmUgdG8gdGhlIHJlbW90ZSBjb21wdXRlci5cbiIKLSJcbiIKLSJUaGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG11c3QgcG9zc2VzcyB0aGUgU2VCYWNrdXBQcml2aWxlZ2Ugc2VjdXJpdHlcbiIKLSJwcml2aWxlZ2UuICBUaGlzIGZ1bmN0aW9uIHBhc3NlcyBOVUxMIGZvciBzZWN1cml0eV9hdHRyaWJ1dGVzIHRvIHRoZSBBUEkuIik7Ci0KLVB5RG9jX1NUUlZBUihTZXRWYWx1ZV9kb2MsCi0iU2V0VmFsdWUoa2V5LCBzdWJfa2V5LCB0eXBlLCB2YWx1ZSlcbiIKLSJBc3NvY2lhdGVzIGEgdmFsdWUgd2l0aCBhIHNwZWNpZmllZCBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZSBpcyBhc3NvY2lhdGVkLlxuIgotInR5cGUgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YS4gIEN1cnJlbnRseSB0aGlzIG11c3RcbiIKLSIgICAgIGJlIFJFR19TWiwgbWVhbmluZyBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC5cbiIKLSJ2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmV3IHZhbHVlLlxuIgotIlxuIgotIklmIHRoZSBrZXkgc3BlY2lmaWVkIGJ5IHRoZSBzdWJfa2V5IHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCwgdGhlIFNldFZhbHVlXG4iCi0iZnVuY3Rpb24gY3JlYXRlcyBpdC5cbiIKLSJcbiIKLSJWYWx1ZSBsZW5ndGhzIGFyZSBsaW1pdGVkIGJ5IGF2YWlsYWJsZSBtZW1vcnkuIExvbmcgdmFsdWVzIChtb3JlIHRoYW5cbiIKLSIyMDQ4IGJ5dGVzKSBzaG91bGQgYmUgc3RvcmVkIGFzIGZpbGVzIHdpdGggdGhlIGZpbGVuYW1lcyBzdG9yZWQgaW4gXG4iCi0idGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0cnkuICBUaGlzIGhlbHBzIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LlxuIgotIlxuIgotIlRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5IHBhcmFtZXRlciBtdXN0IGhhdmUgYmVlbiBvcGVuZWQgd2l0aFxuIgotIktFWV9TRVRfVkFMVUUgYWNjZXNzLiIpOwotCi1QeURvY19TVFJWQVIoU2V0VmFsdWVFeF9kb2MsCi0iU2V0VmFsdWVFeChrZXksIHZhbHVlX25hbWUsIHJlc2VydmVkLCB0eXBlLCB2YWx1ZSlcbiIKLSJTdG9yZXMgZGF0YSBpbiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJ2YWx1ZV9uYW1lIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIHZhbHVlIHRvIHNldCwgb3IgTm9uZS5cbiIKLSJyZXNlcnZlZCBjYW4gYmUgYW55dGhpbmcgLSB6ZXJvIGlzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIEFQSS5cbiIKLSJ0eXBlIGlzIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBUaGlzIHNob3VsZCBiZSBvbmUgb2Y6XG4iCi0iICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgotIiAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKLSIgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC5cbiIKLSIgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKLSIgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZCByZWZlcmVuY2VzXG4iCi0iICAgICAgICAgICAgICAgICAgIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsICVQQVRIJSkuXG4iCi0iICBSRUdfTElOSyAtLSBBIFVuaWNvZGUgc3ltYm9saWMgbGluay5cbiIKLSIgIFJFR19NVUxUSV9TWiAtLSBBbiBzZXF1ZW5jZSBvZiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncywgdGVybWluYXRlZCBieVxuIgotIiAgICAgICAgICAgICAgICAgIHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXMgdGhpc1xuIgotIiAgICAgICAgICAgICAgICAgIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCi0iICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuXG4iCi0iICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKLSIgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCi0idmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS5cbiIKLSJcbiIKLSJUaGlzIG1ldGhvZCBjYW4gYWxzbyBzZXQgYWRkaXRpb25hbCB2YWx1ZSBhbmQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdGhlXG4iCi0ic3BlY2lmaWVkIGtleS4gIFRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5IHBhcmFtZXRlciBtdXN0IGhhdmUgYmVlblxuIgotIm9wZW5lZCB3aXRoIEtFWV9TRVRfVkFMVUUgYWNjZXNzLlxuIgotIlxuIgotIlRvIG9wZW4gdGhlIGtleSwgdXNlIHRoZSBDcmVhdGVLZXlFeCgpIG9yIE9wZW5LZXlFeCgpIG1ldGhvZHMuXG4iCi0iXG4iCi0iVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuXG4iCi0iMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluIFxuIgotInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5LiAgVGhpcyBoZWxwcyB0aGUgcmVnaXN0cnkgcGVyZm9ybSBlZmZpY2llbnRseS4iKTsKLQotUHlEb2NfU1RSVkFSKERpc2FibGVSZWZsZWN0aW9uS2V5X2RvYywKLSJEaXNhYmxlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciAzMi1iaXQgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gYSA2NC1iaXRcbiIKLSJPcGVyYXRpbmcgU3lzdGVtLiAgV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb25cbiIKLSJhIDMyLWJpdCBPcGVyYXRpbmcgU3lzdGVtLlxuIgotIlxuIgotIklmIHRoZSBrZXkgaXMgbm90IG9uIHRoZSByZWZsZWN0aW9uIGxpc3QsIHRoZSBmdW5jdGlvbiBzdWNjZWVkcyBidXQgaGFzIG5vIGVmZmVjdC5cbiIKLSJEaXNhYmxpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24gb2YgYW55IHN1YmtleXMuIik7Ci0KLVB5RG9jX1NUUlZBUihFbmFibGVSZWZsZWN0aW9uS2V5X2RvYywKLSJSZXN0b3JlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGRpc2FibGVkIGtleS5cbiIKLSJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyLWJpdCBPcGVyYXRpbmcgU3lzdGVtLlxuIgotIlJlc3RvcmluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbiBvZiBhbnkgc3Via2V5cy4iKTsKLQotUHlEb2NfU1RSVkFSKFF1ZXJ5UmVmbGVjdGlvbktleV9kb2MsCi0iUXVlcnlSZWZsZWN0aW9uS2V5KGhrZXkpIC0+IGJvb2xcbiIKLSJEZXRlcm1pbmVzIHRoZSByZWZsZWN0aW9uIHN0YXRlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyLWJpdCBPcGVyYXRpbmcgU3lzdGVtLlxuIik7CiAKIC8qIFB5SEtFWSBkb2NzdHJpbmdzICovCiBQeURvY19TVFJWQVIoUHlIS0VZX2RvYywKQEAgLTM4OSwyNCArOTksNiBAQAogInJpY2ggY29tcGFyaXNvbiAtIEhhbmRsZSBvYmplY3RzIGFyZSBjb21wYXJlZCB1c2luZyB0aGUgaGFuZGxlIHZhbHVlLiIpOwogCiAKLVB5RG9jX1NUUlZBUihQeUhLRVlfQ2xvc2VfZG9jLAotImtleS5DbG9zZSgpXG4iCi0iQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIFdpbmRvd3MgaGFuZGxlLlxuIgotIlxuIgotIklmIHRoZSBoYW5kbGUgaXMgYWxyZWFkeSBjbG9zZWQsIG5vIGVycm9yIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKFB5SEtFWV9EZXRhY2hfZG9jLAotImtleS5EZXRhY2goKSAtPiBpbnRcbiIKLSJEZXRhY2hlcyB0aGUgV2luZG93cyBoYW5kbGUgZnJvbSB0aGUgaGFuZGxlIG9iamVjdC5cbiIKLSJcbiIKLSJUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgaGFuZGxlIGJlZm9yZSBpdCBpcyBkZXRhY2hlZC4gIElmIHRoZVxuIgotImhhbmRsZSBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGlzIHdpbGwgcmV0dXJuIHplcm8uXG4iCi0iXG4iCi0iQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgaGFuZGxlIGlzIGVmZmVjdGl2ZWx5IGludmFsaWRhdGVkLFxuIgotImJ1dCB0aGUgaGFuZGxlIGlzIG5vdCBjbG9zZWQuICBZb3Ugd291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4geW91XG4iCi0ibmVlZCB0aGUgdW5kZXJseWluZyB3aW4zMiBoYW5kbGUgdG8gZXhpc3QgYmV5b25kIHRoZSBsaWZldGltZSBvZiB0aGVcbiIKLSJoYW5kbGUgb2JqZWN0LiIpOwotCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIApAQCAtNTE2LDE2ICsyMDgsMTM1IEBACiAgICAgUHlIS0VZX3VuYXJ5RmFpbHVyZUZ1bmMsICAgICAgICAgICAgLyogbmJfZmxvYXQgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqUHlIS0VZX0Nsb3NlTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9EZXRhY2hNZXRob2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKLXN0YXRpYyBQeU9iamVjdCAqUHlIS0VZX0VudGVyKFB5T2JqZWN0ICpzZWxmKTsKLXN0YXRpYyBQeU9iamVjdCAqUHlIS0VZX0V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSB3aW5yZWcKK2NsYXNzIHdpbnJlZy5IS0VZVHlwZSAiUHlIS0VZT2JqZWN0ICoiICImUHlIS0VZX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD00Yzk2NGViYTNiZjkxNGQ2XSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIFJFR1NBTV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdSRUdTQU0nCisgICAgZm9ybWF0X3VuaXQgPSAnaScKKworY2xhc3MgRFdPUkRfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnRFdPUkQnCisgICAgZm9ybWF0X3VuaXQgPSAnaycKKworY2xhc3MgSEtFWV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdIS0VZJworICAgIGNvbnZlcnRlciA9ICdjbGluaWNfSEtFWV9jb252ZXJ0ZXInCisKK2NsYXNzIEhLRVlfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0hLRVknCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCisgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmX251bGxfcG9pbnRlcigiX3JldHVybl92YWx1ZSIsIGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTtcbicpCisKKyMgSEFDSzogdGhpcyBvbmx5IHdvcmtzIGZvciBQeUhLRVlPYmplY3RzLCBub3RoaW5nIGVsc2UuCisjICAgICAgIFNob3VsZCB0aGlzIGJlIGdlbmVyYWxpemVkIGFuZCBlbnNocmluZWQgaW4gY2xpbmljLnB5LAorIyAgICAgICBkZXN0cm95IHRoaXMgY29udmVydGVyIHdpdGggcHJlanVkaWNlLgorY2xhc3Mgc2VsZl9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlIS0VZT2JqZWN0IConCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IChQeU9iamVjdCAqKV9yZXR1cm5fdmFsdWU7XG4nKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjJmN2FlZGM2ZDY4ZTgwZV0qLworCisjaW5jbHVkZSAiY2xpbmljL3dpbnJlZy5jLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworICBUaGUgUHlIS0VZIG9iamVjdCBtZXRob2RzCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5IS0VZVHlwZS5DbG9zZQorCitDbG9zZXMgdGhlIHVuZGVybHlpbmcgV2luZG93cyBoYW5kbGUuCisKK0lmIHRoZSBoYW5kbGUgaXMgYWxyZWFkeSBjbG9zZWQsIG5vIGVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9DbG9zZV9pbXBsKFB5SEtFWU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mY2VkM2E2MjRmYjBjMzQ0IGlucHV0PTY3ODZhYzc1ZjZiODlkZTZdKi8KK3sKKyAgICBpZiAoIVB5SEtFWV9DbG9zZSgoUHlPYmplY3QgKilzZWxmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5IS0VZVHlwZS5EZXRhY2gKKworRGV0YWNoZXMgdGhlIFdpbmRvd3MgaGFuZGxlIGZyb20gdGhlIGhhbmRsZSBvYmplY3QuCisKK1RoZSByZXN1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSBoYW5kbGUgYmVmb3JlIGl0IGlzIGRldGFjaGVkLiAgSWYgdGhlCitoYW5kbGUgaXMgYWxyZWFkeSBkZXRhY2hlZCwgdGhpcyB3aWxsIHJldHVybiB6ZXJvLgorCitBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBoYW5kbGUgaXMgZWZmZWN0aXZlbHkgaW52YWxpZGF0ZWQsCitidXQgdGhlIGhhbmRsZSBpcyBub3QgY2xvc2VkLiAgWW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdQorbmVlZCB0aGUgdW5kZXJseWluZyB3aW4zMiBoYW5kbGUgdG8gZXhpc3QgYmV5b25kIHRoZSBsaWZldGltZSBvZiB0aGUKK2hhbmRsZSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfRGV0YWNoX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRkYTVhOWUxYTAxYWU3OGYgaW5wdXQ9ZGQyY2MwOWU2YzZiYTgzM10qLworeworICAgIHZvaWQqIHJldDsKKyAgICByZXQgPSAodm9pZCopc2VsZi0+aGtleTsKKyAgICBzZWxmLT5oa2V5ID0gMDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHJldCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5IS0VZVHlwZS5fX2VudGVyX18gLT4gc2VsZgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlIS0VZT2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9fX2VudGVyX19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJjMzQ5ODZkYWIyODk5MCBpbnB1dD1jNDBmYWIxZjA2OTBhOGUyXSovCit7CisgICAgUHlfWElOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuX19leGl0X18KKworICAgIGV4Y190eXBlOiBvYmplY3QKKyAgICBleGNfdmFsdWU6IG9iamVjdAorICAgIHRyYWNlYmFjazogb2JqZWN0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTIzZWJlNzM4OWU2YTI2MyBpbnB1dD1mYjMyNDg5ZWU5MjQwM2M3XSovCit7CisgICAgaWYgKCFQeUhLRVlfQ2xvc2UoKFB5T2JqZWN0ICopc2VsZikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kYTM5YTNlZTVlNmI0YjBkXSovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgUHlIS0VZX21ldGhvZHNbXSA9IHsKLSAgICB7IkNsb3NlIiwgIFB5SEtFWV9DbG9zZU1ldGhvZCwgTUVUSF9WQVJBUkdTLCBQeUhLRVlfQ2xvc2VfZG9jfSwKLSAgICB7IkRldGFjaCIsIFB5SEtFWV9EZXRhY2hNZXRob2QsIE1FVEhfVkFSQVJHUywgUHlIS0VZX0RldGFjaF9kb2N9LAotICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKVB5SEtFWV9FbnRlciwgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHsiX19leGl0X18iLCBQeUhLRVlfRXhpdCwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICBXSU5SRUdfSEtFWVRZUEVfQ0xPU0VfTUVUSE9EREVGCisgICAgV0lOUkVHX0hLRVlUWVBFX0RFVEFDSF9NRVRIT0RERUYKKyAgICBXSU5SRUdfSEtFWVRZUEVfX19FTlRFUl9fX01FVEhPRERFRgorICAgIFdJTlJFR19IS0VZVFlQRV9fX0VYSVRfX19NRVRIT0RERUYKICAgICB7TlVMTH0KIH07CiAKQEAgLTU3MCw1MCArMzgxLDYgQEAKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotICBUaGUgUHlIS0VZIG9iamVjdCBtZXRob2RzCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1QeUhLRVlfQ2xvc2VNZXRob2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkNsb3NlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0Nsb3NlKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1QeUhLRVlfRGV0YWNoTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICB2b2lkKiByZXQ7Ci0gICAgUHlIS0VZT2JqZWN0ICpwVGhpcyA9IChQeUhLRVlPYmplY3QgKilzZWxmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkRldGFjaCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSAodm9pZCopcFRoaXMtPmhrZXk7Ci0gICAgcFRoaXMtPmhrZXkgPSAwOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIocmV0KTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLVB5SEtFWV9FbnRlcihQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeV9YSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiBzZWxmOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotUHlIS0VZX0V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGlmICghUHlIS0VZX0Nsb3NlKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBUaGUgcHVibGljIFB5SEtFWSBBUEkgKHdlbGwsIG5vdCBwdWJsaWMgeWV0IDotKQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogUHlPYmplY3QgKgpAQCAtNjc1LDYgKzQ0MiwxNCBAQAogICAgIHJldHVybiBUUlVFOwogfQogCitCT09MCitjbGluaWNfSEtFWV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iLCB2b2lkICpwKQoreworICAgIGlmICghUHlIS0VZX0FzSEtFWShvYiwgKEhLRVkgKilwLCBGQUxTRSkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogUHlPYmplY3QgKgogUHlIS0VZX0Zyb21IS0VZKEhLRVkgaCkKIHsKQEAgLTk4NSwxMjAgKzc2MCwxOTkgQEAKIAogLyogVGhlIFB5dGhvbiBtZXRob2RzICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1QeUNsb3NlS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOkNsb3NlS2V5IiwgJm9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQ2xvc2Uob2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19CisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuQ2xvc2VLZXkKKworICAgIGhrZXk6IG9iamVjdAorICAgICAgICBBIHByZXZpb3VzbHkgb3BlbmVkIGtleS4KKyAgICAvCisKK0Nsb3NlcyBhIHByZXZpb3VzbHkgb3BlbmVkIHJlZ2lzdHJ5IGtleS4KKworTm90ZSB0aGF0IGlmIHRoZSBrZXkgaXMgbm90IGNsb3NlZCB1c2luZyB0aGlzIG1ldGhvZCwgaXQgd2lsbCBiZQorY2xvc2VkIHdoZW4gdGhlIGhrZXkgb2JqZWN0IGlzIGRlc3Ryb3llZCBieSBQeXRob24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUNvbm5lY3RSZWdpc3RyeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfQ2xvc2VLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmhrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk2ZjczNDM5NDAzYTA2NCBpbnB1dD01YjFhYWM2NWJhNTEyN2FkXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzekNvbXBOYW1lID0gTlVMTDsKKyAgICBpZiAoIVB5SEtFWV9DbG9zZShoa2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5Db25uZWN0UmVnaXN0cnkgLT4gSEtFWQorCisgICAgY29tcHV0ZXJfbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVtb3RlIGNvbXB1dGVyLCBvZiB0aGUgZm9ybSByIlxcY29tcHV0ZXJuYW1lIi4gIElmCisgICAgICAgIE5vbmUsIHRoZSBsb2NhbCBjb21wdXRlciBpcyB1c2VkLgorICAgIGtleTogSEtFWQorICAgICAgICBUaGUgcHJlZGVmaW5lZCBrZXkgdG8gY29ubmVjdCB0by4KKyAgICAvCisKK0VzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byB0aGUgcmVnaXN0cnkgb24gb24gYW5vdGhlciBjb21wdXRlci4KKworVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tcHV0ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YzUyZjZmN2JhNmU3YjQ2IGlucHV0PTlhMDU2NTU4Y2UzMTg0MzNdKi8KK3sKICAgICBIS0VZIHJldEtleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWk86Q29ubmVjdFJlZ2lzdHJ5IiwgJnN6Q29tcE5hbWUsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnQ29ubmVjdFJlZ2lzdHJ5VyhzekNvbXBOYW1lLCBoS2V5LCAmcmV0S2V5KTsKKyAgICByYyA9IFJlZ0Nvbm5lY3RSZWdpc3RyeVcoY29tcHV0ZXJfbmFtZSwga2V5LCAmcmV0S2V5KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdFJlZ2lzdHJ5Iik7Ci0gICAgcmV0dXJuIFB5SEtFWV9Gcm9tSEtFWShyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ29ubmVjdFJlZ2lzdHJ5Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmV0S2V5OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlDcmVhdGVLZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQord2lucmVnLkNyZWF0ZUtleSAtPiBIS0VZCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBUaGUgbmFtZSBvZiB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuCisgICAgLworCitDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LgorCitJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSwKK3RoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLgorCitJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCisKK1RoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4KK0lmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEtFWQord2lucmVnX0NyZWF0ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNkNjg0M2YzMGE3M2ZjMGUgaW5wdXQ9M2NkZDE2MjI0ODhhY2VhMl0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqc3ViS2V5OwogICAgIEhLRVkgcmV0S2V5OwogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPWjpDcmVhdGVLZXkiLCAmb2JLZXksICZzdWJLZXkpKQorCisgICAgcmMgPSBSZWdDcmVhdGVLZXlXKGtleSwgc3ViX2tleSwgJnJldEtleSk7CisgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJDcmVhdGVLZXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYyA9IFJlZ0NyZWF0ZUtleVcoaEtleSwgc3ViS2V5LCAmcmV0S2V5KTsKLSAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5Iik7Ci0gICAgcmV0dXJuIFB5SEtFWV9Gcm9tSEtFWShyZXRLZXkpOworICAgIH0KKyAgICByZXR1cm4gcmV0S2V5OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlDcmVhdGVLZXlFeChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuQ3JlYXRlS2V5RXggLT4gSEtFWQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLgorICAgIHJlc2VydmVkOiBpbnQgPSAwCisgICAgICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby4KKyAgICBhY2Nlc3M6IFJFR1NBTShjX2RlZmF1bHQ9J0tFWV9XUklURScpID0gd2lucmVnLktFWV9XUklURQorICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZQorICAgICAgICBkZXNpcmVkIHNlY3VyaXR5IGFjY2VzcyBmb3IgdGhlIGtleS4gRGVmYXVsdCBpcyBLRVlfV1JJVEUuCisKK0NyZWF0ZXMgb3Igb3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuCisKK0lmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLAordGhlIGhhbmRsZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBrZXkgaGFuZGxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24uCisKK0lmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleQorCitUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuCitJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhLRVkKK3dpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRiODM1ZDViZTg0ZTcyYjIgaW5wdXQ9NDJjMmIwM2Y5ODQwNmI2Nl0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHdjaGFyX3QgKnN1Yl9rZXk7CiAgICAgSEtFWSByZXRLZXk7Ci0gICAgaW50IHJlc2VydmVkID0gMDsKLSAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dSSVRFOwogICAgIGxvbmcgcmM7CiAKLSAgICBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPWnxpaTpDcmVhdGVLZXlFeCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKGtleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByYyA9IFJlZ0NyZWF0ZUtleUV4VyhoS2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgTlVMTCwgKERXT1JEKU5VTEwsCisgICAgcmMgPSBSZWdDcmVhdGVLZXlFeFcoa2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgTlVMTCwgKERXT1JEKU5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzLCBOVUxMLCAmcmV0S2V5LCBOVUxMKTsKLSAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5RXgiKTsKLSAgICByZXR1cm4gUHlIS0VZX0Zyb21IS0VZKHJldEtleSk7CisgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJDcmVhdGVLZXlFeCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkRlbGV0ZUtleQorICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERQorICAgICAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5CisgICAgICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3QKKyAgICAgICAgaGF2ZSBzdWJrZXlzLgorICAgIC8KKworRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS4KKworVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuCisKK0lmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywKK2lzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RGVsZXRlS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19EZWxldGVLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzVjODkxN2RhY2JjOTlkIGlucHV0PWIzMWQyMjViOTM1ZTQyMTFdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3U6RGVsZXRlS2V5IiwgJm9iS2V5LCAmc3ViS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYyA9IFJlZ0RlbGV0ZUtleVcoaEtleSwgc3ViS2V5ICk7CisgICAgcmMgPSBSZWdEZWxldGVLZXlXKGtleSwgc3ViX2tleSApOwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdEZWxldGVLZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EZWxldGVLZXlFeAorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFCisgICAgICAgIEEgc3RyaW5nIHRoYXQgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHN1YmtleSBvZiB0aGUga2V5IGlkZW50aWZpZWQgYnkKKyAgICAgICAgdGhlIGtleSBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdAorICAgICAgICBoYXZlIHN1YmtleXMuCisgICAgYWNjZXNzOiBSRUdTQU0oY19kZWZhdWx0PSdLRVlfV09XNjRfNjRLRVknKSA9IHdpbnJlZy5LRVlfV09XNjRfNjRLRVkKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUKKyAgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dPVzY0XzY0S0VZLgorICAgIHJlc2VydmVkOiBpbnQgPSAwCisgICAgICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby4KKworRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleSAoNjQtYml0IE9TIG9ubHkpLgorCitUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy4KKworSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLAoraXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeURlbGV0ZUtleUV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzNjJhMGFjNjUwMjM3OWYgaW5wdXQ9NzExZDlkODllN2VjYmVkN10qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqa2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUkRLRUZ1bmMpKEhLRVksIGNvbnN0IHdjaGFyX3QqLCBSRUdTQU0sIGludCk7CiAgICAgUkRLRUZ1bmMgcGZuID0gTlVMTDsKLSAgICB3Y2hhcl90ICpzdWJfa2V5OwogICAgIGxvbmcgcmM7Ci0gICAgaW50IHJlc2VydmVkID0gMDsKLSAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dPVzY0XzY0S0VZOwotCi0gICAgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk91fGlpOkRlbGV0ZUtleUV4Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXksICZzdWJfa2V5LCAmYWNjZXNzLCAmcmVzZXJ2ZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkoa2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuICovCkBAIC0xMTEyLDQyICs5NjYsNjAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9ICgqcGZuKShoS2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKKyAgICByYyA9ICgqcGZuKShrZXksIHN1Yl9rZXksIGFjY2VzcywgcmVzZXJ2ZWQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRGVsZXRlS2V5RXgiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EZWxldGVWYWx1ZQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICB2YWx1ZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlIHRvIHJlbW92ZS4KKyAgICAvCisKK1JlbW92ZXMgYSBuYW1lZCB2YWx1ZSBmcm9tIGEgcmVnaXN0cnkga2V5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlEZWxldGVWYWx1ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzA4NTUwYjhjZGNmZDhlMSBpbnB1dD1hNzhkMzQwN2E0MTk3YjIxXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9aOkRlbGV0ZVZhbHVlIiwgJm9iS2V5LCAmc3ViS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdEZWxldGVWYWx1ZVcoaEtleSwgc3ViS2V5KTsKKyAgICByYyA9IFJlZ0RlbGV0ZVZhbHVlVyhrZXksIHZhbHVlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPUVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdEZWxldGVWYWx1ZSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkVudW1LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgaW5kZXg6IGludAorICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIGtleSB0byByZXRyaWV2ZS4KKyAgICAvCisKK0VudW1lcmF0ZXMgc3Via2V5cyBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuCitJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb24gaXMKK3JhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcyBhcmUgYXZhaWxhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlFbnVtS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19FbnVtS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODA3NGZmYWJiYzY3ODk2IGlucHV0PWZhZDlhN2MwMGFiMGUwNGJdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIGludCBpbmRleDsKICAgICBsb25nIHJjOwogICAgIFB5T2JqZWN0ICpyZXRTdHI7CiAKQEAgLTExNjAsMTMgKzEwMzIsOCBAQAogICAgIHdjaGFyX3QgdG1wYnVmWzI1N107CiAgICAgRFdPUkQgbGVuID0gc2l6ZW9mKHRtcGJ1Zikvc2l6ZW9mKHdjaGFyX3QpOyAvKiBpbmNsdWRlcyBOVUxMIHRlcm1pbmF0b3IgKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2k6RW51bUtleSIsICZvYktleSwgJmluZGV4KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFJlZ0VudW1LZXlFeFcoaEtleSwgaW5kZXgsIHRtcGJ1ZiwgJmxlbiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgcmMgPSBSZWdFbnVtS2V5RXhXKGtleSwgaW5kZXgsIHRtcGJ1ZiwgJmxlbiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRW51bUtleUV4Iik7CkBAIC0xMTc1LDEyICsxMDQyLDM1IEBACiAgICAgcmV0dXJuIHJldFN0cjsgIC8qIGNhbiBiZSBOVUxMICovCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5FbnVtVmFsdWUKKworICAgIGtleTogSEtFWQorICAgICAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIGluZGV4OiBpbnQKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byByZXRyaWV2ZS4KKyAgICAvCisKK0VudW1lcmF0ZXMgdmFsdWVzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LgorCitUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4KK0l0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb24KK2lzIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy4KKworVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6CisgIHZhbHVlX25hbWUKKyAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlLgorICB2YWx1ZV9kYXRhCisgICAgQW4gb2JqZWN0IHRoYXQgaG9sZHMgdGhlIHZhbHVlIGRhdGEsIGFuZCB3aG9zZSB0eXBlIGRlcGVuZHMKKyAgICBvbiB0aGUgdW5kZXJseWluZyByZWdpc3RyeSB0eXBlLgorICBkYXRhX3R5cGUKKyAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RW51bVZhbHVlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19FbnVtVmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgaW50IGluZGV4KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NzAzNjdlYmFmMGU5NzkgaW5wdXQ9NDQxNGY0N2E2ZmIyMzhiNV0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgaW50IGluZGV4OwogICAgIGxvbmcgcmM7CiAgICAgd2NoYXJfdCAqcmV0VmFsdWVCdWY7CiAgICAgQllURSAqdG1wQnVmOwpAQCAtMTE5MSwxMiArMTA4MSw3IEBACiAgICAgUHlPYmplY3QgKm9iRGF0YTsKICAgICBQeU9iamVjdCAqcmV0VmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaTpFbnVtVmFsdWUiLCAmb2JLZXksICZpbmRleCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoKHJjID0gUmVnUXVlcnlJbmZvS2V5VyhoS2V5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAorICAgIGlmICgocmMgPSBSZWdRdWVyeUluZm9LZXlXKGtleSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmV0VmFsdWVTaXplLCAmcmV0RGF0YVNpemUsIE5VTEwsIE5VTEwpKQogICAgICAgICAhPSBFUlJPUl9TVUNDRVNTKQpAQCAtMTIxNyw3ICsxMTAyLDcgQEAKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBSZWdFbnVtVmFsdWVXKGhLZXksCisgICAgICAgIHJjID0gUmVnRW51bVZhbHVlVyhrZXksCiAgICAgICAgICAgICAgICAgICBpbmRleCwKICAgICAgICAgICAgICAgICAgIHJldFZhbHVlQnVmLAogICAgICAgICAgICAgICAgICAgJnJldFZhbHVlU2l6ZSwKQEAgLTEyNjAsMTkgKzExNDUsMjUgQEAKICAgICByZXR1cm4gcmV0VmFsOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzCisKKyAgICBzdHJpbmc6IFB5X1VOSUNPREUKKyAgICAvCisKK0V4cGFuZCBlbnZpcm9ubWVudCB2YXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Y2I2OTE0MDY1YTg2NjNjIGlucHV0PWIyYTk3MTRkMmI3NTFhYTZdKi8KIHsKICAgICB3Y2hhcl90ICpyZXRWYWx1ZSA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqc3JjOwogICAgIERXT1JEIHJldFZhbHVlU2l6ZTsKICAgICBEV09SRCByYzsKICAgICBQeU9iamVjdCAqbzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3JjKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXRWYWx1ZVNpemUgPSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKHNyYywgcmV0VmFsdWUsIDApOworICAgIHJldFZhbHVlU2l6ZSA9IEV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coc3RyaW5nLCByZXRWYWx1ZSwgMCk7CiAgICAgaWYgKHJldFZhbHVlU2l6ZSA9PSAwKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyZXRWYWx1ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIpOwpAQCAtMTI4Miw3ICsxMTczLDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogCi0gICAgcmMgPSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKHNyYywgcmV0VmFsdWUsIHJldFZhbHVlU2l6ZSk7CisgICAgcmMgPSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKHN0cmluZywgcmV0VmFsdWUsIHJldFZhbHVlU2l6ZSk7CiAgICAgaWYgKHJjID09IDApIHsKICAgICAgICAgUHlNZW1fRnJlZShyZXRWYWx1ZSk7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyZXRWYWx1ZVNpemUsCkBAIC0xMjkzLDkwICsxMTg0LDE2NiBAQAogICAgIHJldHVybiBvOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRmx1c2hLZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIGEga2V5IHRvIHRoZSByZWdpc3RyeS4KKworSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjYWxsIEZsdXNoS2V5IHRvIGNoYW5nZSBhIGtleS4gIFJlZ2lzdHJ5IGNoYW5nZXMKK2FyZSBmbHVzaGVkIHRvIGRpc2sgYnkgdGhlIHJlZ2lzdHJ5IHVzaW5nIGl0cyBsYXp5IGZsdXNoZXIuICBSZWdpc3RyeQorY2hhbmdlcyBhcmUgYWxzbyBmbHVzaGVkIHRvIGRpc2sgYXQgc3lzdGVtIHNodXRkb3duLiAgVW5saWtlCitDbG9zZUtleSgpLCB0aGUgRmx1c2hLZXkoKSBtZXRob2QgcmV0dXJucyBvbmx5IHdoZW4gYWxsIHRoZSBkYXRhIGhhcworYmVlbiB3cml0dGVuIHRvIHRoZSByZWdpc3RyeS4KKworQW4gYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgY2FsbCBGbHVzaEtleSgpIGlmIGl0IHJlcXVpcmVzIGFic29sdXRlCitjZXJ0YWludHkgdGhhdCByZWdpc3RyeSBjaGFuZ2VzIGFyZSBvbiBkaXNrLiAgSWYgeW91IGRvbid0IGtub3cgd2hldGhlcgorYSBGbHVzaEtleSgpIGNhbGwgaXMgcmVxdWlyZWQsIGl0IHByb2JhYmx5IGlzbid0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlGbHVzaEtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRmx1c2hLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWE3YTZlNDA1NDY2NDIwIGlucHV0PWY1NzQ1N2MxMjI5N2Q4MmZdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOkZsdXNoS2V5IiwgJm9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdGbHVzaEtleShoS2V5KTsKKyAgICByYyA9IFJlZ0ZsdXNoS2V5KGtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRmx1c2hLZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci1zdGF0aWMgUHlPYmplY3QgKgotUHlMb2FkS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKLSAgICB3Y2hhcl90ICpmaWxlTmFtZTsKIAorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuTG9hZEtleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFCisgICAgICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViLWtleSB0byBsb2FkLgorICAgIGZpbGVfbmFtZTogUHlfVU5JQ09ERQorICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBsb2FkIHJlZ2lzdHJ5IGRhdGEgZnJvbS4gIFRoaXMgZmlsZSBtdXN0CisgICAgICAgIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggdGhlIFNhdmVLZXkoKSBmdW5jdGlvbi4gIFVuZGVyIHRoZSBmaWxlCisgICAgICAgIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW0sIHRoZSBmaWxlbmFtZSBtYXkgbm90IGhhdmUgYW4KKyAgICAgICAgZXh0ZW5zaW9uLgorICAgIC8KKworSW5zZXJ0IGRhdGEgaW50byB0aGUgcmVnaXN0cnkgZnJvbSBhIGZpbGUuCisKK0NyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24KK2luZm9ybWF0aW9uIGZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXQgc3Via2V5LgorCitBIGNhbGwgdG8gTG9hZEtleSgpIGZhaWxzIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QgaGF2ZSB0aGUKK1NFX1JFU1RPUkVfUFJJVklMRUdFIHByaXZpbGVnZS4KKworSWYga2V5IGlzIGEgaGFuZGxlIHJldHVybmVkIGJ5IENvbm5lY3RSZWdpc3RyeSgpLCB0aGVuIHRoZSBwYXRoCitzcGVjaWZpZWQgaW4gZmlsZU5hbWUgaXMgcmVsYXRpdmUgdG8gdGhlIHJlbW90ZSBjb21wdXRlci4KKworVGhlIE1TRE4gZG9jcyBpbXBseSBrZXkgbXVzdCBiZSBpbiB0aGUgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORQordHJlZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19Mb2FkS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOGI3MDBlMzljNjk1YjkwIGlucHV0PWUzYjViNDVhZGUzMTE1ODJdKi8KK3sKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3V1OkxvYWRLZXkiLCAmb2JLZXksICZzdWJLZXksICZmaWxlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdMb2FkS2V5VyhoS2V5LCBzdWJLZXksIGZpbGVOYW1lICk7CisgICAgcmMgPSBSZWdMb2FkS2V5VyhrZXksIHN1Yl9rZXksIGZpbGVfbmFtZSApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0xvYWRLZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1QeU9wZW5LZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorLypbY2xpbmljIGlucHV0XQord2lucmVnLk9wZW5LZXkgLT4gSEtFWQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgc3ViX2tleSB0byBvcGVuLgorICAgIHJlc2VydmVkOiBpbnQgPSAwCisgICAgICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciB0aGF0IG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby4KKyAgICBhY2Nlc3M6IFJFR1NBTShjX2RlZmF1bHQ9J0tFWV9SRUFEJykgPSB3aW5yZWcuS0VZX1JFQUQKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgZGVzaXJlZAorICAgICAgICBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuICBEZWZhdWx0IGlzIEtFWV9SRUFELgorCitPcGVucyB0aGUgc3BlY2lmaWVkIGtleS4KKworVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuCitJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhLRVkKK3dpbnJlZ19PcGVuS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2VzcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTgxOGVhMzU2NDkwYTU1IGlucHV0PTA5ODUwNWFjMzZhOWFlMjhdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICB3Y2hhcl90ICpzdWJfa2V5OwotICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgSEtFWSByZXRLZXk7CiAgICAgbG9uZyByYzsKLSAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7Ci0KLSAgICBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPWnxpaTpPcGVuS2V5Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkoa2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFJlZ09wZW5LZXlFeFcoaEtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2VzcywgJnJldEtleSk7CisgICAgcmMgPSBSZWdPcGVuS2V5RXhXKGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2VzcywgJnJldEtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnT3BlbktleUV4Iik7Ci0gICAgcmV0dXJuIFB5SEtFWV9Gcm9tSEtFWShyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnT3BlbktleUV4Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmV0S2V5OwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuT3BlbktleUV4ID0gd2lucmVnLk9wZW5LZXkKKworT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuCisKK1RoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkZDlmMjllODRlYTJkYmMgaW5wdXQ9YzZjNDk3MmFmODYyMjk1OV0qLworeworICAgIHJldHVybiB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKK30KKworLypbY2xpbmljIGlucHV0XQord2lucmVnLlF1ZXJ5SW5mb0tleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICAvCisKK1JldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBrZXkuCisKK1RoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOgorQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBzdWIga2V5cyB0aGlzIGtleSBoYXMuCitBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGlzIGtleSBoYXMuCitBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB3aGVuIHRoZSBrZXkgd2FzIGxhc3QgbW9kaWZpZWQgKGlmIGF2YWlsYWJsZSkKK2FzIDEwMCdzIG9mIG5hbm9zZWNvbmRzIHNpbmNlIEphbiAxLCAxNjAwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlRdWVyeUluZm9LZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlODg1MjIyZmU5NjZhMzQgaW5wdXQ9YzM1OTM4MDIzOTBjZGUxZl0qLwogewotICBIS0VZIGhLZXk7Ci0gIFB5T2JqZWN0ICpvYktleTsKICAgbG9uZyByYzsKICAgRFdPUkQgblN1YktleXMsIG5WYWx1ZXM7CiAgIEZJTEVUSU1FIGZ0OwogICBMQVJHRV9JTlRFR0VSIGxpOwogICBQeU9iamVjdCAqbDsKICAgUHlPYmplY3QgKnJldDsKLSAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOlF1ZXJ5SW5mb0tleSIsICZvYktleSkpCi0gICAgcmV0dXJuIE5VTEw7Ci0gIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICByZXR1cm4gTlVMTDsKLSAgaWYgKChyYyA9IFJlZ1F1ZXJ5SW5mb0tleShoS2V5LCBOVUxMLCBOVUxMLCAwLCAmblN1YktleXMsIE5VTEwsIE5VTEwsCisKKyAgaWYgKChyYyA9IFJlZ1F1ZXJ5SW5mb0tleShrZXksIE5VTEwsIE5VTEwsIDAsICZuU3ViS2V5cywgTlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmblZhbHVlcywgIE5VTEwsICBOVUxMLCBOVUxMLCAmZnQpKQogICAgICAgIT0gRVJST1JfU1VDQ0VTUykKICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdRdWVyeUluZm9LZXkiKTsKQEAgLTEzOTAsMTIgKzEzNTcsMzEgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlF1ZXJ5VmFsdWUKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyB0aGF0IGhvbGRzIHRoZSBuYW1lIG9mIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWUKKyAgICAgICAgaXMgYXNzb2NpYXRlZC4gIElmIHRoaXMgcGFyYW1ldGVyIGlzIE5vbmUgb3IgZW1wdHksIHRoZSBmdW5jdGlvbgorICAgICAgICByZXRyaWV2ZXMgdGhlIHZhbHVlIHNldCBieSB0aGUgU2V0VmFsdWUoKSBtZXRob2QgZm9yIHRoZSBrZXkKKyAgICAgICAgaWRlbnRpZmllZCBieSBrZXkuCisgICAgLworCitSZXRyaWV2ZXMgdGhlIHVubmFtZWQgdmFsdWUgZm9yIGEga2V5LgorCitWYWx1ZXMgaW4gdGhlIHJlZ2lzdHJ5IGhhdmUgbmFtZSwgdHlwZSwgYW5kIGRhdGEgY29tcG9uZW50cy4gVGhpcyBtZXRob2QKK3JldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBrZXkncyBmaXJzdCB2YWx1ZSB0aGF0IGhhcyBhIE5VTEwgbmFtZS4KK0J1dCBzaW5jZSB0aGUgdW5kZXJseWluZyBBUEkgY2FsbCBkb2Vzbid0IHJldHVybiB0aGUgdHlwZSwgeW91J2xsCitwcm9iYWJseSBiZSBoYXBwaWVyIHVzaW5nIFF1ZXJ5VmFsdWVFeDsgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGhlcmUgZm9yCitjb21wbGV0ZW5lc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVF1ZXJ5VmFsdWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX1F1ZXJ5VmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTFjYjZmNjIzYzNiNjVhIGlucHV0PTQxY2FmYmJmNDIzYjIxZDZdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKICAgICBsb25nIHJjOwogICAgIFB5T2JqZWN0ICpyZXRTdHI7CiAgICAgd2NoYXJfdCAqcmV0QnVmOwpAQCAtMTQwMywxMyArMTM4OSw3IEBACiAgICAgRFdPUkQgcmV0U2l6ZSA9IDA7CiAgICAgd2NoYXJfdCAqdG1wOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPWjpRdWVyeVZhbHVlIiwgJm9iS2V5LCAmc3ViS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhoS2V5LCBzdWJLZXksIE5VTEwsICZyZXRTaXplKTsKKyAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVXKGtleSwgc3ViX2tleSwgTlVMTCwgJnJldFNpemUpOwogICAgIGlmIChyYyA9PSBFUlJPUl9NT1JFX0RBVEEpCiAgICAgICAgIHJldFNpemUgPSAyNTY7CiAgICAgZWxzZSBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTE0MjMsNyArMTQwMyw3IEBACiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICByZXRTaXplID0gYnVmU2l6ZTsKLSAgICAgICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhoS2V5LCBzdWJLZXksIHJldEJ1ZiwgJnJldFNpemUpOworICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVXKGtleSwgc3ViX2tleSwgcmV0QnVmLCAmcmV0U2l6ZSk7CiAgICAgICAgIGlmIChyYyAhPSBFUlJPUl9NT1JFX0RBVEEpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTQ0NywxMyArMTQyNywyOCBAQAogICAgIHJldHVybiByZXRTdHI7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1QeVF1ZXJ5VmFsdWVFeChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICp2YWx1ZU5hbWU7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeVZhbHVlRXgKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSB2YWx1ZSB0byBxdWVyeS4KKyAgICAvCisKK1JldHJpZXZlcyB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgYSBzcGVjaWZpZWQgc3ViLWtleS4KKworQmVoYXZlcyBtb3N0bHkgbGlrZSBRdWVyeVZhbHVlKCksIGJ1dCBhbHNvIHJldHVybnMgdGhlIHR5cGUgb2YgdGhlCitzcGVjaWZpZWQgdmFsdWUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG9wZW4gcmVnaXN0cnkga2V5LgorCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHZhbHVlIGFuZCB0aGUgdHlwZV9pZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlRXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGIwN2Y3ODA3MTk0ZjIzIGlucHV0PWNmMzY2Y2FkYTQ4MzY4OTFdKi8KK3sKICAgICBsb25nIHJjOwogICAgIEJZVEUgKnJldEJ1ZiwgKnRtcDsKICAgICBEV09SRCBidWZTaXplID0gMCwgcmV0U2l6ZTsKQEAgLTE0NjEsMTMgKzE0NTYsNyBAQAogICAgIFB5T2JqZWN0ICpvYkRhdGE7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1o6UXVlcnlWYWx1ZUV4IiwgJm9iS2V5LCAmdmFsdWVOYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIHZhbHVlTmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgJmJ1ZlNpemUpOworICAgIHJjID0gUmVnUXVlcnlWYWx1ZUV4VyhrZXksIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsICZidWZTaXplKTsKICAgICBpZiAocmMgPT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICBidWZTaXplID0gMjU2OwogICAgIGVsc2UgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0xNDc5LDcgKzE0NjgsNyBAQAogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcmV0U2l6ZSA9IGJ1ZlNpemU7Ci0gICAgICAgIHJjID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCB2YWx1ZU5hbWUsIE5VTEwsICZ0eXAsCisgICAgICAgIHJjID0gUmVnUXVlcnlWYWx1ZUV4VyhrZXksIG5hbWUsIE5VTEwsICZ0eXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCWVRFICopcmV0QnVmLCAmcmV0U2l6ZSk7CiAgICAgICAgIGlmIChyYyAhPSBFUlJPUl9NT1JFX0RBVEEpCiAgICAgICAgICAgICBicmVhazsKQEAgLTE1MDcsOTEgKzE0OTYsMTQ5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlNhdmVLZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgZmlsZV9uYW1lOiBQeV9VTklDT0RFCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHNhdmUgcmVnaXN0cnkgZGF0YSB0by4gIFRoaXMgZmlsZSBjYW5ub3QKKyAgICAgICAgYWxyZWFkeSBleGlzdC4gSWYgdGhpcyBmaWxlbmFtZSBpbmNsdWRlcyBhbiBleHRlbnNpb24sIGl0IGNhbm5vdCBiZQorICAgICAgICB1c2VkIG9uIGZpbGUgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbXMgYnkgdGhlIExvYWRLZXkoKSwKKyAgICAgICAgUmVwbGFjZUtleSgpIG9yIFJlc3RvcmVLZXkoKSBtZXRob2RzLgorICAgIC8KKworU2F2ZXMgdGhlIHNwZWNpZmllZCBrZXksIGFuZCBhbGwgaXRzIHN1YmtleXMgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgorCitJZiBrZXkgcmVwcmVzZW50cyBhIGtleSBvbiBhIHJlbW90ZSBjb21wdXRlciwgdGhlIHBhdGggZGVzY3JpYmVkIGJ5CitmaWxlX25hbWUgaXMgcmVsYXRpdmUgdG8gdGhlIHJlbW90ZSBjb21wdXRlci4KKworVGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtdXN0IHBvc3Nlc3MgdGhlIFNlQmFja3VwUHJpdmlsZWdlCitzZWN1cml0eSBwcml2aWxlZ2UuICBUaGlzIGZ1bmN0aW9uIHBhc3NlcyBOVUxMIGZvciBzZWN1cml0eV9hdHRyaWJ1dGVzCit0byB0aGUgQVBJLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTYXZlS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19TYXZlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKmZpbGVfbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMzEwOWI5NmJmYWJlZjhmIGlucHV0PWRhNzM1MjQxZjkxYWM3YTJdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKmZpbGVOYW1lOwogICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBwU0EgPSBOVUxMOwogCiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk91OlNhdmVLZXkiLCAmb2JLZXksICZmaWxlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAvKiAgT25lIGRheSB3ZSBtYXkgZ2V0IHNlY3VyaXR5IGludG8gdGhlIGNvcmU/CiAgICAgaWYgKCFQeVdpbk9iamVjdF9Bc1NFQ1VSSVRZX0FUVFJJQlVURVMob2JTQSwgJnBTQSwgVFJVRSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdTYXZlS2V5VyhoS2V5LCBmaWxlTmFtZSwgcFNBICk7CisgICAgcmMgPSBSZWdTYXZlS2V5VyhrZXksIGZpbGVfbmFtZSwgcFNBICk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnU2F2ZUtleSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlNldFZhbHVlCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlIGlzIGFzc29jaWF0ZWQuCisgICAgdHlwZTogRFdPUkQKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YS4gIEN1cnJlbnRseSB0aGlzIG11c3QKKyAgICAgICAgYmUgUkVHX1NaLCBtZWFuaW5nIG9ubHkgc3RyaW5ncyBhcmUgc3VwcG9ydGVkLgorICAgIHZhbHVlOiBQeV9VTklDT0RFKHplcm9lcz1UcnVlKQorICAgICAgICBBIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmV3IHZhbHVlLgorICAgIC8KKworQXNzb2NpYXRlcyBhIHZhbHVlIHdpdGggYSBzcGVjaWZpZWQga2V5LgorCitJZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgc3ViX2tleSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhpc3QsIHRoZQorU2V0VmFsdWUgZnVuY3Rpb24gY3JlYXRlcyBpdC4KKworVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuCisyMDQ4IGJ5dGVzKSBzaG91bGQgYmUgc3RvcmVkIGFzIGZpbGVzIHdpdGggdGhlIGZpbGVuYW1lcyBzdG9yZWQgaW4KK3RoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuCisKK1RoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5IHBhcmFtZXRlciBtdXN0IGhhdmUgYmVlbiBvcGVuZWQgd2l0aAorS0VZX1NFVF9WQUxVRSBhY2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNldFZhbHVlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19TZXRWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgRFdPUkQgdHlwZSwgUHlfVU5JQ09ERSAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYzljN2MyNzY5ZThmOTUzIGlucHV0PTJjZDJhZGFiNzkzMzljNTNdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKLSAgICB3Y2hhcl90ICpzdHI7Ci0gICAgRFdPUkQgdHlwOwotICAgIERXT1JEIGxlbjsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1ppdSM6U2V0VmFsdWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh0eXAgIT0gUkVHX1NaKSB7CisKKyAgICBpZiAodHlwZSAhPSBSRUdfU1opIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUeXBlIG11c3QgYmUgd2lucmVnLlJFR19TWiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdTZXRWYWx1ZVcoaEtleSwgc3ViS2V5LCBSRUdfU1osIHN0ciwgbGVuKzEpOworICAgIHJjID0gUmVnU2V0VmFsdWVXKGtleSwgc3ViX2tleSwgUkVHX1NaLCB2YWx1ZSwgdmFsdWVfbGVuZ3RoKzEpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ1NldFZhbHVlIik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuU2V0VmFsdWVFeAorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICB2YWx1ZV9uYW1lOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIHZhbHVlIHRvIHNldCwgb3IgTm9uZS4KKyAgICByZXNlcnZlZDogb2JqZWN0CisgICAgICAgIENhbiBiZSBhbnl0aGluZyAtIHplcm8gaXMgYWx3YXlzIHBhc3NlZCB0byB0aGUgQVBJLgorICAgIHR5cGU6IERXT1JECisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjoKKyAgICAgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS4KKyAgICAgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci4KKyAgICAgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LgorICAgICAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAlUEFUSCUpLgorICAgICAgICBSRUdfTElOSyAtLSBBIFVuaWNvZGUgc3ltYm9saWMgbGluay4KKyAgICAgICAgUkVHX01VTFRJX1NaIC0tIEFuIHNlcXVlbmNlIG9mIG51bGwtdGVybWluYXRlZCBzdHJpbmdzLCB0ZXJtaW5hdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS4KKyAgICAgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCisgICAgICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCisgICAgdmFsdWU6IG9iamVjdAorICAgICAgICBBIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmV3IHZhbHVlLgorICAgIC8KKworU3RvcmVzIGRhdGEgaW4gdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LgorCitUaGlzIG1ldGhvZCBjYW4gYWxzbyBzZXQgYWRkaXRpb25hbCB2YWx1ZSBhbmQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdGhlCitzcGVjaWZpZWQga2V5LiAgVGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXkgcGFyYW1ldGVyIG11c3QgaGF2ZSBiZWVuCitvcGVuZWQgd2l0aCBLRVlfU0VUX1ZBTFVFIGFjY2Vzcy4KKworVG8gb3BlbiB0aGUga2V5LCB1c2UgdGhlIENyZWF0ZUtleUV4KCkgb3IgT3BlbktleUV4KCkgbWV0aG9kcy4KKworVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuCisyMDQ4IGJ5dGVzKSBzaG91bGQgYmUgc3RvcmVkIGFzIGZpbGVzIHdpdGggdGhlIGZpbGVuYW1lcyBzdG9yZWQgaW4KK3RoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNldFZhbHVlRXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWEwOTJhOTM1YzM2MTU4MiBpbnB1dD1lNzNkZWM1MzVlYmVlYTdkXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICp2YWx1ZU5hbWU7Ci0gICAgUHlPYmplY3QgKm9iUmVzOwotICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBCWVRFICpkYXRhOwogICAgIERXT1JEIGxlbjsKLSAgICBEV09SRCB0eXA7CiAKICAgICBMT05HIHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPWk9pTzpTZXRWYWx1ZUV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JSZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeTJSZWcodmFsdWUsIHR5cCwgJmRhdGEsICZsZW4pKQorICAgIGlmICghUHkyUmVnKHZhbHVlLCB0eXBlLCAmZGF0YSwgJmxlbikpCiAgICAgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE1OTksMzEgKzE2NDYsNDAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFJlZ1NldFZhbHVlRXhXKGhLZXksIHZhbHVlTmFtZSwgMCwgdHlwLCBkYXRhLCBsZW4pOworICAgIHJjID0gUmVnU2V0VmFsdWVFeFcoa2V5LCB2YWx1ZV9uYW1lLCAwLCB0eXBlLCBkYXRhLCBsZW4pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlNZW1fREVMKGRhdGEpOwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnU2V0VmFsdWVFeCIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkRpc2FibGVSZWZsZWN0aW9uS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIC8KKworRGlzYWJsZXMgcmVnaXN0cnkgcmVmbGVjdGlvbiBmb3IgMzJiaXQgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gYSA2NGJpdCBPUy4KKworV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy4KKworSWYgdGhlIGtleSBpcyBub3Qgb24gdGhlIHJlZmxlY3Rpb24gbGlzdCwgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzIGJ1dCBoYXMKK25vIGVmZmVjdC4gIERpc2FibGluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbgorb2YgYW55IHN1YmtleXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeURpc2FibGVSZWZsZWN0aW9uS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwZmU2ZTI2MDQzMjRjZGQgaW5wdXQ9YTZjOWU1Y2E1NDEwMTkzY10qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7CiAgICAgSE1PRFVMRSBoTW9kOwogICAgIHR5cGVkZWYgTE9ORyAoV0lOQVBJICpSRFJLRnVuYykoSEtFWSk7CiAgICAgUkRSS0Z1bmMgcGZuID0gTlVMTDsKICAgICBMT05HIHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgJm9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KICAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwpAQCAtMTYzNiwzMCArMTY5MiwzNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gKCpwZm4pKGhLZXkpOworICAgIHJjID0gKCpwZm4pKGtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0Rpc2FibGVSZWZsZWN0aW9uS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRW5hYmxlUmVmbGVjdGlvbktleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICAvCisKK1Jlc3RvcmVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIHRoZSBzcGVjaWZpZWQgZGlzYWJsZWQga2V5LgorCitXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLgorUmVzdG9yaW5nIHJlZmxlY3Rpb24gZm9yIGEga2V5IGRvZXMgbm90IGFmZmVjdCByZWZsZWN0aW9uIG9mIGFueQorc3Via2V5cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RW5hYmxlUmVmbGVjdGlvbktleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUzZjIzZWRiNDE0ZjI0YTQgaW5wdXQ9Nzc0OGFiYmFjZDFlMTY2YV0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7CiAgICAgSE1PRFVMRSBoTW9kOwogICAgIHR5cGVkZWYgTE9ORyAoV0lOQVBJICpSRVJLRnVuYykoSEtFWSk7CiAgICAgUkVSS0Z1bmMgcGZuID0gTlVMTDsKICAgICBMT05HIHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCAmb2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwogICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CkBAIC0xNjcyLDMxICsxNzM1LDM2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSAoKnBmbikoaEtleSk7CisgICAgcmMgPSAoKnBmbikoa2V5KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRW5hYmxlUmVmbGVjdGlvbktleSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlF1ZXJ5UmVmbGVjdGlvbktleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICAvCisKK1JldHVybnMgdGhlIHJlZmxlY3Rpb24gc3RhdGUgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGFzIGEgYm9vbC4KKworV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5UXVlcnlSZWZsZWN0aW9uS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTQ5YzU2NGNhMTYyZTUwIGlucHV0PTlmMzI1ZWFjYjVhNjVkODhdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUlFSS0Z1bmMpKEhLRVksIEJPT0wgKik7CiAgICAgUlFSS0Z1bmMgcGZuID0gTlVMTDsKICAgICBCT09MIHJlc3VsdDsKICAgICBMT05HIHJjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOlF1ZXJ5UmVmbGVjdGlvbktleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCiAgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKQEAgLTE3MDksNyArMTc3Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSAoKnBmbikoaEtleSwgJnJlc3VsdCk7CisgICAgcmMgPSAoKnBmbikoa2V5LCAmcmVzdWx0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCkBAIC0xNzE4LDM0ICsxNzg2LDI5IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgd2lucmVnX21ldGhvZHNbXSA9IHsKLSAgICB7IkNsb3NlS2V5IiwgICAgICAgICBQeUNsb3NlS2V5LCAgICAgICAgTUVUSF9WQVJBUkdTLCBDbG9zZUtleV9kb2N9LAotICAgIHsiQ29ubmVjdFJlZ2lzdHJ5IiwgIFB5Q29ubmVjdFJlZ2lzdHJ5LCBNRVRIX1ZBUkFSR1MsIENvbm5lY3RSZWdpc3RyeV9kb2N9LAotICAgIHsiQ3JlYXRlS2V5IiwgICAgICAgIFB5Q3JlYXRlS2V5LCAgICAgICBNRVRIX1ZBUkFSR1MsIENyZWF0ZUtleV9kb2N9LAotICAgIHsiQ3JlYXRlS2V5RXgiLCAgICAgIChQeUNGdW5jdGlvbilQeUNyZWF0ZUtleUV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIENyZWF0ZUtleUV4X2RvY30sCi0gICAgeyJEZWxldGVLZXkiLCAgICAgICAgUHlEZWxldGVLZXksICAgICAgIE1FVEhfVkFSQVJHUywgRGVsZXRlS2V5X2RvY30sCi0gICAgeyJEZWxldGVLZXlFeCIsICAgICAgKFB5Q0Z1bmN0aW9uKVB5RGVsZXRlS2V5RXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgRGVsZXRlS2V5RXhfZG9jfSwKLSAgICB7IkRlbGV0ZVZhbHVlIiwgICAgICBQeURlbGV0ZVZhbHVlLCAgICAgTUVUSF9WQVJBUkdTLCBEZWxldGVWYWx1ZV9kb2N9LAotICAgIHsiRGlzYWJsZVJlZmxlY3Rpb25LZXkiLCBQeURpc2FibGVSZWZsZWN0aW9uS2V5LCBNRVRIX1ZBUkFSR1MsIERpc2FibGVSZWZsZWN0aW9uS2V5X2RvY30sCi0gICAgeyJFbmFibGVSZWZsZWN0aW9uS2V5IiwgIFB5RW5hYmxlUmVmbGVjdGlvbktleSwgIE1FVEhfVkFSQVJHUywgRW5hYmxlUmVmbGVjdGlvbktleV9kb2N9LAotICAgIHsiRW51bUtleSIsICAgICAgICAgIFB5RW51bUtleSwgICAgICAgICBNRVRIX1ZBUkFSR1MsIEVudW1LZXlfZG9jfSwKLSAgICB7IkVudW1WYWx1ZSIsICAgICAgICBQeUVudW1WYWx1ZSwgICAgICAgTUVUSF9WQVJBUkdTLCBFbnVtVmFsdWVfZG9jfSwKLSAgICB7IkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsIFB5RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIEV4cGFuZEVudmlyb25tZW50U3RyaW5nc19kb2MgfSwKLSAgICB7IkZsdXNoS2V5IiwgICAgICAgICBQeUZsdXNoS2V5LCAgICAgICAgTUVUSF9WQVJBUkdTLCBGbHVzaEtleV9kb2N9LAotICAgIHsiTG9hZEtleSIsICAgICAgICAgIFB5TG9hZEtleSwgICAgICAgICBNRVRIX1ZBUkFSR1MsIExvYWRLZXlfZG9jfSwKLSAgICB7Ik9wZW5LZXkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlPcGVuS2V5LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5LZXlfZG9jfSwKLSAgICB7Ik9wZW5LZXlFeCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlPcGVuS2V5LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5LZXlFeF9kb2N9LAotICAgIHsiUXVlcnlWYWx1ZSIsICAgICAgIFB5UXVlcnlWYWx1ZSwgICAgICBNRVRIX1ZBUkFSR1MsIFF1ZXJ5VmFsdWVfZG9jfSwKLSAgICB7IlF1ZXJ5VmFsdWVFeCIsICAgICBQeVF1ZXJ5VmFsdWVFeCwgICAgTUVUSF9WQVJBUkdTLCBRdWVyeVZhbHVlRXhfZG9jfSwKLSAgICB7IlF1ZXJ5SW5mb0tleSIsICAgICBQeVF1ZXJ5SW5mb0tleSwgICAgTUVUSF9WQVJBUkdTLCBRdWVyeUluZm9LZXlfZG9jfSwKLSAgICB7IlF1ZXJ5UmVmbGVjdGlvbktleSIsUHlRdWVyeVJlZmxlY3Rpb25LZXksTUVUSF9WQVJBUkdTLCBRdWVyeVJlZmxlY3Rpb25LZXlfZG9jfSwKLSAgICB7IlNhdmVLZXkiLCAgICAgICAgICBQeVNhdmVLZXksICAgICAgICAgTUVUSF9WQVJBUkdTLCBTYXZlS2V5X2RvY30sCi0gICAgeyJTZXRWYWx1ZSIsICAgICAgICAgUHlTZXRWYWx1ZSwgICAgICAgIE1FVEhfVkFSQVJHUywgU2V0VmFsdWVfZG9jfSwKLSAgICB7IlNldFZhbHVlRXgiLCAgICAgICBQeVNldFZhbHVlRXgsICAgICAgTUVUSF9WQVJBUkdTLCBTZXRWYWx1ZUV4X2RvY30sCisgICAgV0lOUkVHX0NMT1NFS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19DT05ORUNUUkVHSVNUUllfTUVUSE9EREVGCisgICAgV0lOUkVHX0NSRUFURUtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGCisgICAgV0lOUkVHX0RFTEVURUtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfREVMRVRFS0VZRVhfTUVUSE9EREVGCisgICAgV0lOUkVHX0RFTEVURVZBTFVFX01FVEhPRERFRgorICAgIFdJTlJFR19ESVNBQkxFUkVGTEVDVElPTktFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRU5BQkxFUkVGTEVDVElPTktFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRU5VTUtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRU5VTVZBTFVFX01FVEhPRERFRgorICAgIFdJTlJFR19FWFBBTkRFTlZJUk9OTUVOVFNUUklOR1NfTUVUSE9EREVGCisgICAgV0lOUkVHX0ZMVVNIS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19MT0FES0VZX01FVEhPRERFRgorICAgIFdJTlJFR19PUEVOS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19PUEVOS0VZRVhfTUVUSE9EREVGCisgICAgV0lOUkVHX1FVRVJZVkFMVUVfTUVUSE9EREVGCisgICAgV0lOUkVHX1FVRVJZVkFMVUVFWF9NRVRIT0RERUYKKyAgICBXSU5SRUdfUVVFUllJTkZPS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19RVUVSWVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX1NBVkVLRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX1NFVFZBTFVFX01FVEhPRERFRgorICAgIFdJTlJFR19TRVRWQUxVRUVYX01FVEhPRERFRgogICAgIE5VTEwsCiB9OwogCmRpZmYgLS1naXQgYS9QQy93aW5zb3VuZC5jIGIvUEMvd2luc291bmQuYwppbmRleCBiNTY0ZWFiLi44ZTc3ZDEzIDEwMDY0NAotLS0gYS9QQy93aW5zb3VuZC5jCisrKyBiL1BDL3dpbnNvdW5kLmMKQEAgLTM5LDIyICszOSw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPG1tc3lzdGVtLmg+CiAKLVB5RG9jX1NUUlZBUihzb3VuZF9wbGF5c291bmRfZG9jLAotIlBsYXlTb3VuZChzb3VuZCwgZmxhZ3MpIC0gYSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJXG4iCi0iXG4iCi0iVGhlIHNvdW5kIGFyZ3VtZW50IGNhbiBiZSBhIGZpbGVuYW1lLCBkYXRhLCBvciBOb25lLlxuIgotIkZvciBmbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlciwgc2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLiIpOwotCi1QeURvY19TVFJWQVIoc291bmRfYmVlcF9kb2MsCi0iQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIGEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUElcbiIKLSJcbiIKLSJUaGUgZnJlcXVlbmN5IGFyZ3VtZW50IHNwZWNpZmllcyBmcmVxdWVuY3ksIGluIGhlcnR6LCBvZiB0aGUgc291bmQuXG4iCi0iVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMzcgdGhyb3VnaCAzMiw3NjcuXG4iCi0iVGhlIGR1cmF0aW9uIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiIpOwotCi1QeURvY19TVFJWQVIoc291bmRfbXNnYmVlcF9kb2MsCi0iTWVzc2FnZUJlZXAoeCkgLSBjYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuIHggZGVmYXVsdHMgdG8gTUJfT0suIik7Ci0KIFB5RG9jX1NUUlZBUihzb3VuZF9tb2R1bGVfZG9jLAogIlBsYXlTb3VuZChzb3VuZCwgZmxhZ3MpIC0gcGxheSBhIHNvdW5kXG4iCiAiU05EX0ZJTEVOQU1FIC0gc291bmQgaXMgYSB3YXYgZmlsZSBuYW1lXG4iCkBAIC02Nyw3OSArNTEsMTEyIEBACiAiU05EX05PU1RPUCAtIERvIG5vdCBpbnRlcnJ1cHQgYW55IHNvdW5kcyBjdXJyZW50bHkgcGxheWluZ1xuIiAgLy8gUmFpc2luZyBSdW50aW1lRXJyb3IgaWYgbmVlZGVkCiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCi0iQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuIik7CisiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCisiTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSB3aW5zb3VuZAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YTE4NDAxMTQyZDk3YjhkNV0qLworCisjaW5jbHVkZSAiY2xpbmljL3dpbnNvdW5kLmMuaCIKKworLypbY2xpbmljIGlucHV0XQord2luc291bmQuUGxheVNvdW5kCisKKyAgICBzb3VuZDogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KKyAgICBmbGFnczogaW50CisgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgorICAgIC8KKworQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc291bmRfcGxheXNvdW5kKFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnNvdW5kLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjE0MjczNzg0YmY1OWU1YyBpbnB1dD0zNDExYjFiN2MxZjM2ZDkzXSovCiB7Ci0gICAgd2NoYXJfdCAqd3NvdW5kOwotICAgIGludCBmbGFnczsKICAgICBpbnQgb2s7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWmk6UGxheVNvdW5kIiwgJndzb3VuZCwgJmZsYWdzKSkgewotICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgICAgICAvKiBTaWRlc3RlcCByZWZlcmVuY2UgY291bnRpbmcgaGVhZGFjaGU7IHVuZm9ydHVuYXRlbHkgdGhpcyBhbHNvCi0gICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkNhbm5vdCBwbGF5IGFzeW5jaHJvbm91c2x5IGZyb20gbWVtb3J5Iik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKCFvaykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkZhaWxlZCB0byBwbGF5IHNvdW5kIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChmbGFncyAmIFNORF9BU1lOQyAmJiBmbGFncyAmIFNORF9NRU1PUlkpIHsKKyAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbworICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBQbGF5U291bmRXKHNvdW5kLCBOVUxMLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnNvdW5kLkJlZXAKKworICAgIGZyZXF1ZW5jeTogaW50CisgICAgICAgIEZyZXF1ZW5jeSBvZiB0aGUgc291bmQgaW4gaGVydHouCisgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgorICAgIGR1cmF0aW9uOiBpbnQKKyAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCisgICAgLworCitBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc291bmRfYmVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9CZWVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3NWYyODIwMzVhODcyYmQgaW5wdXQ9NjI4YTk5ZDJkZGY3Mzc5OF0qLwogewotICAgIGludCBmcmVxOwotICAgIGludCBkdXI7CiAgICAgQk9PTCBvazsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6QmVlcCIsICZmcmVxLCAgJmR1cikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZyZXEgPCAzNyB8fCBmcmVxID4gMzI3NjcpIHsKKyAgICBpZiAoZnJlcXVlbmN5IDwgMzcgfHwgZnJlcXVlbmN5ID4gMzI3NjcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlcXVlbmN5IG11c3QgYmUgaW4gMzcgdGhydSAzMjc2NyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgb2sgPSBCZWVwKGZyZXEsIGR1cik7CisgICAgb2sgPSBCZWVwKGZyZXF1ZW5jeSwgZHVyYXRpb24pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKCFvaykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCJGYWlsZWQgdG8gYmVlcCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnNvdW5kLk1lc3NhZ2VCZWVwCisKKyAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKKyAgICAvCisKK0NhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KKworeCBkZWZhdWx0cyB0byBNQl9PSy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNvdW5kX21zZ2JlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgeCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MmFhNmE4MjJiZGM2NmFkIGlucHV0PWE3NzZjOGE4NWM5ODUzZjZdKi8KIHsKLSAgICBpbnQgeCA9IE1CX09LOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6TWVzc2FnZUJlZXAiLCAmeCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIE1lc3NhZ2VCZWVwKHgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBzb3VuZF9tZXRob2RzW10gPQogewotICAgIHsiUGxheVNvdW5kIiwgc291bmRfcGxheXNvdW5kLCBNRVRIX1ZBUkFSR1MsIHNvdW5kX3BsYXlzb3VuZF9kb2N9LAotICAgIHsiQmVlcCIsICAgICAgc291bmRfYmVlcCwgICAgICBNRVRIX1ZBUkFSR1MsIHNvdW5kX2JlZXBfZG9jfSwKLSAgICB7Ik1lc3NhZ2VCZWVwIiwgc291bmRfbXNnYmVlcCwgTUVUSF9WQVJBUkdTLCBzb3VuZF9tc2diZWVwX2RvY30sCisgICAgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRgorICAgIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGCisgICAgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGCiAgICAge05VTEwsICBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYnoyLnZjeHByb2ogYi9QQ2J1aWxkL19iejIudmN4cHJvagppbmRleCA5Mzg3ZTU0Li42NGMzZGNkIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19iejIudmN4cHJvagorKysgYi9QQ2J1aWxkL19iejIudmN4cHJvagpAQCAtMzksMTE3ICszOSwyOCBAQAogICAgIDxSb290TmFtZXNwYWNlPmJ6MjwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTgsODMgKzY5LDYgQEAKICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKaW5kZXggMjAyY2IxZi4uNjhiOGUyOSAxMDA2NDQKLS0tIGEvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKKysrIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKQEAgLTM5LDIwNCArMzksMzMgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fY3R5cGVzPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC0yNTcsMzAgKzg2LDE0IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQ+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIjwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoSW50RGlyKXdpbjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgogICAgIDwvQ3VzdG9tQnVpbGQ+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvaiBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2oKaW5kZXggMzVlMjk5Yi4uYzEyNjBiNSAxMDA2NDQKLS0tIGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagorKysgYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qCkBAIC0zOCwxNDMgKzM4LDI4IEBACiAgICAgPFByb2plY3RHdWlkPns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fY3R5cGVzX3Rlc3Q8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvaiBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagppbmRleCA5OGJhODFkLi45NDNiZmIwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2oKKysrIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCkBAIC0zOSwyMDggKzM5LDM3IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X2RlY2ltYWw8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztNQVNNOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ1dpbjMyJyI+Q09ORklHXzMyO1BQUk87JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAneDY0JyI+Q09ORklHXzY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOy4uXEluY2x1ZGU7Li5cUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIiAvPgpAQCAtMjc5LDIyICsxMDgsOSBAQAogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIjwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CiAgICAgPC9DdXN0b21CdWlsZD4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagppbmRleCA3ODAyYWIzLi40MTRiZDhiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKQEAgLTM5LDExNyArMzksMjcgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fZWxlbWVudHRyZWU8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1OCw4MyArNjgsNiBAQAogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCmluZGV4IDU1MTk3YWYuLmY3NzE0YzAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagorKysgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKQEAgLTksNiArOSwyMiBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMjIsMTUyICszOCwzMiBAQAogICAgIDxQcm9qZWN0R3VpZD57MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfTwvUHJvamVjdEd1aWQ+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICAgIDxSb290TmFtZXNwYWNlPl9mcmVlemVfaW1wb3J0bGliPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2ZyZWV6ZV9pbXBvcnRsaWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXF9mcmVlemVfaW1wb3J0bGliLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CkBAIC0xODUsNCArODEsMjYgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgIDxUYXJnZXQgTmFtZT0iUmVidWlsZEltcG9ydExpYiIgQWZ0ZXJUYXJnZXRzPSJBZnRlckJ1aWxkIiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyI+CisgICAgPEV4ZWMgQ29tbWFuZD0nIiQoVGFyZ2V0UGF0aCkiICIkKFB5U291cmNlUGF0aClMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiICIkKEludERpcilpbXBvcnRsaWIuZy5oIicgLz4KKyAgICAKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxfT2xkQ29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYi5oJykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCcpLlJlcGxhY2UoYCYjeDBEOyYjeDBBO2AsIGAmI3gwQTtgKSk8L19PbGRDb250ZW50PgorICAgICAgPF9OZXdDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpPC9fTmV3Q29udGVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPENvcHkgU291cmNlRmlsZXM9IiQoSW50RGlyKWltcG9ydGxpYi5nLmgiCisgICAgICAgICAgRGVzdGluYXRpb25GaWxlcz0iJChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYi5oIgorICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykgYW5kICckKF9PbGRDb250ZW50KScgIT0gJyQoX05ld0NvbnRlbnQpJyIgLz4KKyAgICAKKyAgICA8V2FybmluZyBUZXh0PSJpbXBvcnRsaWIuaCBoYXMgYmVlbiB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykgYW5kICckKF9PbGRDb250ZW50KScgIT0gJyQoX05ld0NvbnRlbnQpJyBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIiAvPgorICAgIDxFcnJvciBUZXh0PSJpbXBvcnRsaWIuaCBoYXMgYmVlbiB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgorICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KScgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIiAvPgorICA8L1RhcmdldD4KKyAgPFRhcmdldCBOYW1lPSJfQ2xlYW5JbXBvcnRMaWIiIEJlZm9yZVRhcmdldHM9IkNvcmVDbGVhbiI+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxDbGVhbiBJbmNsdWRlPSIkKEludERpcilpbXBvcnRsaWIuZy5oIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTBlYzE5My4uY2NhZDA1MyAxMDA2NDQKLS0tIGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMKQEAgLTE1LDcgKzE1LDcgQEAKICAgICA8L0ZpbHRlcj4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mcmVlemVfaW1wb3J0bGliLmMiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHJvZ3JhbXNcX2ZyZWV6ZV9pbXBvcnRsaWIuYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KQEAgLTI0LDQgKzI0LDQgQEAKICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ogYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2oKaW5kZXggNTI0MzNlZC4uZDgyYjI2NiAxMDA2NDQKLS0tIGEvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagpAQCAtMzksMjM5ICszOSw0NyBAQAogICAgIDxSb290TmFtZXNwYWNlPl9oYXNobGliPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChPdXREaXIpbGliZWF5JChQeURlYnVnRXh0KS5saWI7JChPdXREaXIpc3NsZWF5JChQeURlYnVnRXh0KS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ic3NsLnZjeHByb2oiPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbGVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMDYxNWIyNC03M2JmLTRlZmEtOTNhYS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGliZWF5LnZjeHByb2oiPgogICAgICAgPFByb2plY3Q+e2U1YjA0Y2MwLWViNGMtNDJhYi1iNGRjLTE4ZWY5NWY4NjRiMH08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvaiBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagppbmRleCBhYzI1YzgwLi5hZjUwNDk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19sem1hLnZjeHByb2oKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC0zOSwyMDAgKzM5LDM1IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+bHptYTwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmN4cHJvaiBiL1BDYnVpbGQvX21zaS52Y3hwcm9qCmluZGV4IDEzMjNkMTYuLmY1YmE3YmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX21zaS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX21zaS52Y3hwcm9qCkBAIC0zOSwxNzggKzM5LDMyIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X21zaTwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y2FiaW5ldC5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfbXNpLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ogYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvagppbmRleCBiNGJiNTY4Li4xZWI5MmI2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvagorKysgYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvagpAQCAtMzksMTc4ICszOSwzMiBAQAogICAgIDxSb290TmFtZXNwYWNlPl9tdWx0aXByb2Nlc3Npbmc8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fb3ZlcmxhcHBlZC52Y3hwcm9qIGIvUENidWlsZC9fb3ZlcmxhcHBlZC52Y3hwcm9qCmluZGV4IGQwZWU3MmYuLjU1MzAxZWEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX292ZXJsYXBwZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL19vdmVybGFwcGVkLnZjeHByb2oKQEAgLTM5LDE4NiArMzksMzIgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fb3ZlcmxhcHBlZDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcb3ZlcmxhcHBlZC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2oKaW5kZXggNjM4MzZlOS4uMDNiNmY3NSAxMDA2NDQKLS0tIGEvUENidWlsZC9fc29ja2V0LnZjeHByb2oKKysrIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2oKQEAgLTM5LDE3OCArMzksMzIgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fc29ja2V0PC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKaW5kZXggZWQzNWQ1Yi4uNWU4ODlkMCAxMDA2NDQKLS0tIGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagpAQCAtMzksMTE3ICszOSwyNyBAQAogICAgIDxSb290TmFtZXNwYWNlPl9zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTgsODMgKzY4LDYgQEAKICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qIGIvUENidWlsZC9fc3NsLnZjeHByb2oKaW5kZXggNzM3ODc5NC4uODU5NGEwNiAxMDA2NDQKLS0tIGEvUENidWlsZC9fc3NsLnZjeHByb2oKKysrIGIvUENidWlsZC9fc3NsLnZjeHByb2oKQEAgLTM5LDI0MiArMzksNTAgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fc3NsPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChPdXREaXIpbGliZWF5JChQeURlYnVnRXh0KS5saWI7JChPdXREaXIpc3NsZWF5JChQeURlYnVnRXh0KS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NzbC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJsaWJlYXkudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbGVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMDYxNWIyNC03M2JmLTRlZmEtOTNhYS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iX3NvY2tldC52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0Pns4NjkzN2Y1My1jMTg5LTQwZWYtOGNlOC04NzU5ZDhlN2Q0ODB9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvagppbmRleCBlMTI2NWY2Li44Y2JmMTI1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCkBAIC0zOCwxNzEgKzM4LDMzIEBACiAgICAgPFByb2plY3RHdWlkPntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGJ1ZmZlcjwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvagppbmRleCBlOTlhN2U0Li5kYmY0NGU2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2oKQEAgLTM4LDE3MSArMzgsMzMgQEAKICAgICA8UHJvamVjdEd1aWQ+ezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPl90ZXN0Y2FwaTwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvagppbmRleCA4M2M3YWQyLi5mMGU0ZDlmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvagpAQCAtOSw2ICs5LDIyIEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0yMiwxMzcgKzM4LDM3IEBACiAgICAgPFByb2plY3RHdWlkPns2REFDNjZEOS1FNzAzLTQ2MjQtQkUwMy00OTExMkFCNUFBNjJ9PC9Qcm9qZWN0R3VpZD4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RlbWJlZDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0ZW1iZWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXF90ZXN0ZW1iZWQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgotICAgICAgPFByaXZhdGU+dHJ1ZTwvUHJpdmF0ZT4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT50cnVlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPmZhbHNlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPgotICAgICAgPExpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPnRydWU8L0xpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPgotICAgICAgPFVzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzPmZhbHNlPC9Vc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvai5maWx0ZXJzCmluZGV4IGRlYTU0ZDQuLmY3ZjlhYmUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2ouZmlsdGVycwpAQCAtMTUsNyArMTUsNyBAQAogICAgIDwvRmlsdGVyPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RlbWJlZC5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXF90ZXN0ZW1iZWQuYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGltcG9ydG11bHRpcGxlLnZjeHByb2oKaW5kZXggODQ5ODRmZi4uY2VjMDQyYyAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGltcG9ydG11bHRpcGxlLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGVzdGltcG9ydG11bHRpcGxlLnZjeHByb2oKQEAgLTM4LDE3MSArMzgsMzMgQEAKICAgICA8UHJvamVjdEd1aWQ+ezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPl90ZXN0aW1wb3J0bXVsdGlwbGU8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0aW1wb3J0bXVsdGlwbGUuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0bXVsdGlwaGFzZS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDdiMzgwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvagpAQCAtMCwwICsxLDgwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0bXVsdGlwaGFzZTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0bXVsdGlwaGFzZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjUxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0bXVsdGlwaGFzZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0bXVsdGlwaGFzZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvaiBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvagppbmRleCA2N2Y3MmZlLi5mMzE4NWViIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCkBAIC0zOSwyMDIgKzM5LDM2IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X3RraW50ZXI8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0idGNsdGsucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliRGVidWcpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWJEZWJ1Zyk7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQnVpbGRGb3JSZWxlYXNlKScgIT0gJ3RydWUnIj5QeV9UQ0xUS19ESVI9IiQodGNsdGtEaXIuVHJpbUVuZCgnXCcpLlJlcGxhY2UoJ1wnLCAnXFwnKSkiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3RraW50ZXIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGthcHBpbml0LmMiIC8+CkBAIC0yNDQsNiArNzgsMTIgQEAKICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0idGNsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2I1ZmQ2ZjFkLTEyOWUtNGJmZi05MzQwLTAzNjA2ZmFjNzI4M308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRrLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezdlODVlY2NmLWE3MmMtNGRhNC05ZTUyLTg4NDUwOGU4MGJhMX08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5Mjc2YTIuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+d2luaW5zdDwvUm9vdE5hbWVzcGFjZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxUYXJnZXRFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+LmV4ZTwvVGFyZ2V0RXh0PgotICAgIDxUYXJnZXRFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi5leGU8L1RhcmdldEV4dD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+Ci0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDAwMDA8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQzsuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNvbWN0bDMyLmxpYjtpbWFnZWhscC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjAuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPkxJQkM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgotICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgotICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+Ci0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLWFtZDY0LmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgotICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgotICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZC5iYXQgYi9QQ2J1aWxkL2J1aWxkLmJhdAppbmRleCBmM2JjMWUzLi4zZjhlMjMxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkLmJhdApAQCAtNiwxMyArNiwxMyBAQAogcmVtICAtYyAgU2V0IHRoZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBSZWxlYXNlKQ0KIHJlbSAgLXAgIFNldCB0aGUgcGxhdGZvcm0gKHg2NCBvciBXaW4zMiwgZGVmYXVsdDogV2luMzIpDQogcmVtICAtciAgVGFyZ2V0IFJlYnVpbGQgaW5zdGVhZCBvZiBCdWlsZA0KLXJlbSAgLXQgIFNldCB0aGUgdGFyZ2V0IG1hbnVhbGx5IChCdWlsZCwgUmVidWlsZCwgb3IgQ2xlYW4pDQorcmVtICAtdCAgU2V0IHRoZSB0YXJnZXQgbWFudWFsbHkgKEJ1aWxkLCBSZWJ1aWxkLCBDbGVhbiwgb3IgQ2xlYW5BbGwpDQogcmVtICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnDQogcmVtICAtZSAgUHVsbCBpbiBleHRlcm5hbCBsaWJyYXJpZXMgdXNpbmcgZ2V0X2V4dGVybmFscy5iYXQNCi1yZW0gIC1tICBFbmFibGUgcGFyYWxsZWwgYnVpbGQNCi1yZW0gIC1NICBEaXNhYmxlIHBhcmFsbGVsIGJ1aWxkIChkaXNhYmxlZCBieSBkZWZhdWx0KQ0KK3JlbSAgLW0gIEVuYWJsZSBwYXJhbGxlbCBidWlsZCAoZW5hYmxlZCBieSBkZWZhdWx0KQ0KK3JlbSAgLU0gIERpc2FibGUgcGFyYWxsZWwgYnVpbGQNCiByZW0gIC12ICBJbmNyZWFzZWQgb3V0cHV0IG1lc3NhZ2VzDQotcmVtICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nDQorcmVtICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nICh1c3VhbGx5IHVubmVjZXNzYXJ5KQ0KIA0KIHNldGxvY2FsDQogc2V0IHBsYXRmPVdpbjMyDQpAQCAtMjAsMTAgKzIwLDkgQEAKIHNldCBjb25mPVJlbGVhc2UNCiBzZXQgdGFyZ2V0PUJ1aWxkDQogc2V0IGRpcj0lfmRwMA0KLXNldCBwYXJhbGxlbD0NCitzZXQgcGFyYWxsZWw9L20NCiBzZXQgdmVyYm9zZT0vbm9sb2dvIC92Om0NCiBzZXQga2lsbD0NCi1zZXQgYnVpbGRfdGtpbnRlcj0NCiANCiA6Q2hlY2tPcHRzDQogaWYgJyUxJz09Jy1jJyAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMzEsNzcgKzMwLDIzIEBACiBpZiAnJTEnPT0nLXInIChzZXQgdGFyZ2V0PVJlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIGlmICclMSc9PSctdCcgKHNldCB0YXJnZXQ9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgJyUxJz09Jy1kJyAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctZScgY2FsbCAiJWRpciVnZXRfZXh0ZXJuYWxzLmJhdCIgJiAoc2V0IGJ1aWxkX3RraW50ZXI9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgJyUxJz09Jy1lJyBjYWxsICIlZGlyJWdldF9leHRlcm5hbHMuYmF0IiAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiBpZiAnJTEnPT0nLW0nIChzZXQgcGFyYWxsZWw9L20pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIGlmICclMSc9PSctTScgKHNldCBwYXJhbGxlbD0pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIGlmICclMSc9PSctdicgKHNldCB2ZXJib3NlPS92Om4pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIGlmICclMSc9PSctaycgKHNldCBraWxsPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLWlmICclY29uZiUnPT0nRGVidWcnIChzZXQgZGJnX2V4dD1fZCkgZWxzZSAoc2V0IGRiZ19leHQ9KQ0KLWlmICclcGxhdGYlJz09J3g2NCcgKA0KLSAgICBzZXQgdnNfcGxhdGY9eDg2X2FtZDY0DQotICAgIHNldCBidWlsZGRpcj0lZGlyJWFtZDY0XA0KLSkgZWxzZSAoDQotICAgIHNldCBidWlsZGRpcj0lZGlyJQ0KLSkNCitpZiAnJXBsYXRmJSc9PSd4NjQnIChzZXQgdnNfcGxhdGY9eDg2X2FtZDY0KQ0KIA0KIHJlbSBTZXR1cCB0aGUgZW52aXJvbm1lbnQNCi1jYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUNCitjYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUgPm51bA0KIA0KIGlmICcla2lsbCUnPT0ndHJ1ZScgKA0KLSAgICBtc2J1aWxkICIlZGlyJWtpbGxfcHl0aG9uLnZjeHByb2oiICV2ZXJib3NlJSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlICYmICIlYnVpbGRkaXIla2lsbF9weXRob24lZGJnX2V4dCUuZXhlIg0KLSkNCi0NCi1zZXQgZXh0ZXJuYWxzX2Rpcj0lZGlyJS4uXGV4dGVybmFscw0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiAnJXBsYXRmJSc9PSd4NjQnICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGs2NA0KLSAgICAgICAgc2V0IG1hY2hpbmU9QU1ENjQNCi0gICAgKSBlbHNlICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGsNCi0gICAgICAgIHNldCBtYWNoaW5lPUlYODYNCi0gICAgKQ0KLSAgICBpZiAnJWNvbmYlJz09J0RlYnVnJyAoDQotICAgICAgICBzZXQgdGNsX2RiZ19leHQ9Zw0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MQ0KLSAgICAgICAgc2V0IG9wdGlvbnM9c3ltYm9scw0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgc2V0IHRjbF9kYmdfZXh0PQ0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MA0KLSAgICAgICAgc2V0IG9wdGlvbnM9DQotICAgICkNCi0gICAgc2V0IHRjbGRpcj0lZXh0ZXJuYWxzX2RpciVcdGNsLTguNi4xLjANCi0gICAgc2V0IHRrZGlyPSVleHRlcm5hbHNfZGlyJVx0ay04LjYuMS4wDQotICAgIHNldCB0aXhkaXI9JWV4dGVybmFsc19kaXIlXHRpeC04LjQuMy40DQotKQ0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcYmluXHRjbDg2dCV0Y2xfZGJnX2V4dCUuZGxsIiAoDQotICAgICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwNCi0gICAgICAgIHB1c2hkICIldGNsZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBjbGVhbiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMNCi0gICAgICAgIHBvcGQNCi0gICAgKQ0KLQ0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcYmluXHRrODZ0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGtkaXIlXHdpbiINCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGNsZWFuDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMNCi0gICAgICAgIHBvcGQNCi0gICAgKQ0KLQ0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcbGliXHRpeDguNC4zXHRpeDg0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGl4ZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgY2xlYW4NCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsDQotICAgICAgICBwb3BkDQotICAgICkNCisgICAgbXNidWlsZCAvdjptIC9ub2xvZ28gL3RhcmdldDpLaWxsUHl0aG9uICIlcGNidWlsZCVccHl0aG9uY29yZS52Y3hwcm9qIiAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlIC9wOktpbGxQeXRob249dHJ1ZQ0KICkNCiANCiByZW0gQ2FsbCBvbiBNU0J1aWxkIHRvIGRvIHRoZSB3b3JrLCBlY2hvIHRoZSBjb21tYW5kLg0KIHJlbSBQYXNzaW5nICUxLTkgaXMgbm90IHRoZSBwcmVmZXJyZWQgb3B0aW9uLCBidXQgYXJndW1lbnQgcGFyc2luZyBpbg0KIHJlbSBiYXRjaCBpcywgc2hhbGwgd2Ugc2F5LCAibGFja2x1c3RlciINCiBlY2hvIG9uDQotbXNidWlsZCAiJWRpciVwY2J1aWxkLnNsbiIgL3Q6JXRhcmdldCUgJXBhcmFsbGVsJSAldmVyYm9zZSUgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KK21zYnVpbGQgIiVkaXIlcGNidWlsZC5wcm9qIiAvdDoldGFyZ2V0JSAlcGFyYWxsZWwlICV2ZXJib3NlJSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9wZ28uYmF0IGIvUENidWlsZC9idWlsZF9wZ28uYmF0CmluZGV4IGQ3ZTRlOGIuLjc5ZWMyNjcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKQEAgLTcsMTQgKzcsMTYgQEAKIA0KIHNldGxvY2FsDQogc2V0IHBsYXRmPVdpbjMyDQorc2V0IHBhcmFsbGVsPS9tDQorc2V0IGRpcj0lfmRwMA0KIA0KIHJlbSB1c2UgdGhlIHBlcmZvcm1hbmNlIHRlc3RzdWl0ZS4gIFRoaXMgaXMgcXVpY2sgYW5kIHNpbXBsZQ0KLXNldCBqb2IxPS4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSAtbiAxIC1DIDEgLS13aXRoLWdjDQotc2V0IHBhdGgxPS4uXHRvb2xzXHB5YmVuY2gNCitzZXQgam9iMT0iJWRpciUuLlx0b29sc1xweWJlbmNoXHB5YmVuY2gucHkiIC1uIDEgLUMgMSAtLXdpdGgtZ2MNCitzZXQgcGF0aDE9IiVkaXIlLi5cdG9vbHNccHliZW5jaCINCiANCiByZW0gb3IgdGhlIHdob2xlIHRlc3RzdWl0ZSBmb3IgbW9yZSB0aG9yb3VnaCB0ZXN0aW5nDQotc2V0IGpvYjI9Li5cbGliXHRlc3RccmVncnRlc3QucHkNCi1zZXQgcGF0aDI9Li5cbGliDQorc2V0IGpvYjI9IiVkaXIlLi5cbGliXHRlc3RccmVncnRlc3QucHkiDQorc2V0IHBhdGgyPSIlZGlyJS4uXGxpYiINCiANCiBzZXQgam9iPSVqb2IxJQ0KIHNldCBjbHJwYXRoPSVwYXRoMSUNCkBAIC0yMiwyMCArMjQsMjUgQEAKIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii0yIiAoc2V0IGpvYj0lam9iMiUpICYgKHNldCBjbHJwYXRoPSVwYXRoMiUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSItTSIgKHNldCBwYXJhbGxlbD0pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLXNldCBQR0k9JXBsYXRmJS1wZ2kNCi1zZXQgUEdPPSVwbGF0ZiUtcGdvDQogDQotQGVjaG8gb24NCityZW0gV2UgY2Fubm90IGNyb3NzIGNvbXBpbGUgUEdPIGJ1aWxkcywgYXMgdGhlIG9wdGltaXphdGlvbiBuZWVkcyB0byBiZSBydW4gbmF0aXZlbHkNCitzZXQgdnNfcGxhdGY9eDg2DQorc2V0IFBHTz0lZGlyJXdpbjMyLXBnbw0KKw0KK2lmICIlcGxhdGYlIj09Ing2NCIgKHNldCB2c19wbGF0Zj1hbWQ2NCkgJiAoc2V0IFBHTz0lZGlyJWFtZDY0LXBnbykNCityZW0gU2V0dXAgdGhlIGVudmlyb25tZW50DQorY2FsbCAiJWRpciVlbnYuYmF0IiAldnNfcGxhdGYlDQorDQorDQogcmVtIGJ1aWxkIHRoZSBpbnN0cnVtZW50ZWQgdmVyc2lvbg0KLWNhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR0luc3RydW1lbnQNCittc2J1aWxkICIlZGlyJXBjYnVpbGQucHJvaiIgJXBhcmFsbGVsJSAvdDpCdWlsZCAvcDpDb25maWd1cmF0aW9uPVBHSW5zdHJ1bWVudCAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQogDQogcmVtIHJlbW92ZSAucHljIGZpbGVzLCAucGdjIGZpbGVzIGFuZCBleGVjdXRlIHRoZSBqb2INCi0lUEdJJVxweXRob24uZXhlIHJtcHljLnB5ICVjbHJwYXRoJQ0KLWRlbCAlUEdJJVwqLnBnYw0KLSVQR0klXHB5dGhvbi5leGUgJWpvYiUNCisiJVBHTyVccHl0aG9uLmV4ZSIgIiVkaXIlcm1weWMucHkiICVjbHJwYXRoJQ0KK2RlbCAiJVBHTyVcKi5wZ2MiDQorIiVQR08lXHB5dGhvbi5leGUiICVqb2IlDQogDQotcmVtIGZpbmFsbHkgYnVpbGQgdGhlIG9wdGltaXplZCB2ZXJzaW9uDQotaWYgZXhpc3QgJVBHTyUgZGVsIC9zIC9xICVQR08lDQotY2FsbCBidWlsZCAtcCAlcGxhdGYlIC1jIFBHVXBkYXRlDQotDQorcmVtIGJ1aWxkIG9wdGltaXplZCB2ZXJzaW9uDQorbXNidWlsZCAiJWRpciVwY2J1aWxkLnByb2oiICVwYXJhbGxlbCUgL3Q6QnVpbGQgL3A6Q29uZmlndXJhdGlvbj1QR1VwZGF0ZSAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9zc2wuYmF0IGIvUENidWlsZC9idWlsZF9zc2wuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc1YjhkLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUBlY2hvIG9mZg0KLWlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCi0gIGlmICUxIEVRVSBEZWJ1ZyAoDQotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM0X2QuZGxsIGV4aXQgMQ0KLSAgKSBFTFNFICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM0LmRsbCBleGl0IDENCi0gICkNCi0pDQotJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMNCi0NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5weSBiL1BDYnVpbGQvYnVpbGRfc3NsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWVlNzE1Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjY5ICswLDAgQEAKLSMgU2NyaXB0IGZvciBidWlsZGluZyB0aGUgX3NzbCBhbmQgX2hhc2hsaWIgbW9kdWxlcyBmb3IgV2luZG93cy4KLSMgVXNlcyBQZXJsIHRvIHNldHVwIHRoZSBPcGVuU1NMIGVudmlyb25tZW50IGNvcnJlY3RseQotIyBhbmQgYnVpbGQgT3BlblNTTCwgdGhlbiBpbnZva2VzIGEgc2ltcGxlIG5tYWtlIHNlc3Npb24KLSMgZm9yIHRoZSBhY3R1YWwgX3NzbC5weWQgYW5kIF9oYXNobGliLnB5ZCBETExzLgotCi0jIFRIRU9SRVRJQ0FMTFksIHlvdSBjYW46Ci0jICogVW5wYWNrIHRoZSBsYXRlc3QgU1NMIHJlbGVhc2Ugb25lIGxldmVsIGFib3ZlIHlvdXIgbWFpbiBQeXRob24gc291cmNlCi0jICAgZGlyZWN0b3J5LiAgSXQgaXMgbGlrZWx5IHlvdSB3aWxsIGFscmVhZHkgZmluZCB0aGUgemxpYiBsaWJyYXJ5IGFuZAotIyAgIGFueSBvdGhlciBleHRlcm5hbCBwYWNrYWdlcyB0aGVyZS4KLSMgKiBJbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBpcyBzb21ld2hlcmUgb24geW91ciBwYXRoLgotIyAqIFJ1biB0aGlzIHNjcmlwdCBmcm9tIHRoZSBQQ0J1aWxkIGRpcmVjdG9yeS4KLSMKLSMgaXQgc2hvdWxkIGNvbmZpZ3VyZSBhbmQgYnVpbGQgU1NMLCB0aGVuIGJ1aWxkIHRoZSBfc3NsIGFuZCBfaGFzaGxpYgotIyBQeXRob24gZXh0ZW5zaW9ucyB3aXRob3V0IGludGVydmVudGlvbi4KLQotIyBNb2RpZmllZCBieSBDaHJpc3RpYW4gSGVpbWVzCi0jIE5vdyB0aGlzIHNjcmlwdCBzdXBwb3J0cyBwcmUtZ2VuZXJhdGVkIG1ha2VmaWxlcyBhbmQgYXNzZW1ibHkgZmlsZXMuCi0jIERldmVsb3BlcnMgZG9uJ3QgbmVlZCBhbiBpbnN0YWxsYXRpb24gb2YgUGVybCBhbnltb3JlIHRvIGJ1aWxkIFB5dGhvbi4gQSBzdm4KLSMgY2hlY2tvdXQgZnJvbSBvdXIgc3ZuIHJlcG9zaXRvcnkgaXMgZW5vdWdoLgotIwotIyBJbiBPcmRlciB0byBjcmVhdGUgdGhlIGZpbGVzIGluIHRoZSBjYXNlIG9mIGFuIHVwZGF0ZSB5b3Ugc3RpbGwgbmVlZCBQZXJsLgotIyBSdW4gYnVpbGRfc3NsIGluIHRoaXMgb3JkZXI6Ci0jIHB5dGhvbi5leGUgYnVpbGRfc3NsLnB5IFJlbGVhc2UgeDY0Ci0jIHB5dGhvbi5leGUgYnVpbGRfc3NsLnB5IFJlbGVhc2UgV2luMzIKLQotaW1wb3J0IG9zLCBzeXMsIHJlLCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi0KLSMgRmluZCBhbGwgImZvby5leGUiIGZpbGVzIG9uIHRoZSBQQVRILgotZGVmIGZpbmRfYWxsX29uX3BhdGgoZmlsZW5hbWUsIGV4dHJhcyA9IE5vbmUpOgotICAgIGVudHJpZXMgPSBvcy5lbnZpcm9uWyJQQVRIIl0uc3BsaXQob3MucGF0aHNlcCkKLSAgICByZXQgPSBbXQotICAgIGZvciBwIGluIGVudHJpZXM6Ci0gICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgaWYgZXh0cmFzOgotICAgICAgICBmb3IgcCBpbiBleHRyYXM6Ci0gICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgcmV0dXJuIHJldAotCi0jIEZpbmQgYSBzdWl0YWJsZSBQZXJsIGluc3RhbGxhdGlvbiBmb3IgT3BlblNTTC4KLSMgY3lnd2luIHBlcmwgZG9lcyAqbm90KiB3b3JrLiAgQWN0aXZlUGVybCBkb2VzLgotIyBCZWluZyBhIFBlcmwgZHVtbXksIHRoZSBzaW1wbGVzdCB3YXkgSSBjYW4gY2hlY2sgaXMgaWYgdGhlICJXaW4zMiIgcGFja2FnZQotIyBpcyBhdmFpbGFibGUuCi1kZWYgZmluZF93b3JraW5nX3BlcmwocGVybHMpOgotICAgIGZvciBwZXJsIGluIHBlcmxzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbcGVybCwgIi1lIiwgInVzZSBXaW4zMjsiXSkKLSAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBwZXJsCi0KLSAgICBpZiBwZXJsczoKLSAgICAgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZDoiKQotICAgICAgICBmb3IgcCBpbiBwZXJsczoKLSAgICAgICAgICAgIHByaW50KCIgIiwgcCkKLSAgICAgICAgcHJpbnQoIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIk5PIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQgb24gdGhpcyBtYWNoaW5lIGF0IGFsbCEiKQotICAgIHByaW50KCIgUGxlYXNlIGluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGFwcGVhcnMgb24geW91ciBwYXRoIikKLQotIyBGZXRjaCBTU0wgZGlyZWN0b3J5IGZyb20gVkMgcHJvcGVydGllcwotZGVmIGdldF9zc2xfZGlyKCk6Ci0gICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QucHJvcHMnKSkKLSAgICB3aXRoIG9wZW4ocHJvcGZpbGUsIGVuY29kaW5nPSd1dGYtOC1zaWcnKSBhcyBmOgotICAgICAgICBtID0gcmUuc2VhcmNoKCdvcGVuc3NsLShbXjxdKyk8JywgZi5yZWFkKCkpCi0gICAgICAgIHJldHVybiAiLi5cZXh0ZXJuYWxzXG9wZW5zc2wtIittLmdyb3VwKDEpCi0KLQotZGVmIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpOgotICAgICIiIkNyZWF0ZSBhbmQgZml4IG1ha2VmaWxlIGZvciA2NGJpdAotCi0gICAgUmVwbGFjZSAzMiB3aXRoIDY0Yml0IGRpcmVjdG9yaWVzCi0gICAgIiIiCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG0zMik6Ci0gICAgICAgIHJldHVybgotICAgIHdpdGggb3BlbihtMzIpIGFzIGZpbjoKLSAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPXRtcDMyIiwgIj10bXA2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPW91dDMyIiwgIj1vdXQ2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPWluYzMyIiwgIj1pbmM2NCIpCi0gICAgICAgICAgICAgICAgIyBmb3JjZSA2NCBiaXQgbWFjaGluZQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk1LTElCPWxpYiIsICJNS0xJQj1saWIgL01BQ0hJTkU6WDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJMRkxBR1M9IiwgIkxGTEFHUz0vTUFDSElORTpYNjQgIikKLSAgICAgICAgICAgICAgICAjIGRvbid0IGxpbmsgYWdhaW5zdCB0aGUgbGliIG9uIDY0Yml0IHN5c3RlbXMKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJidWZmZXJvdmVyZmxvd3UubGliIiwgIiIpCi0gICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQotICAgIG9zLnVubGluayhtMzIpCi0KLWRlZiBmaXhfbWFrZWZpbGUobWFrZWZpbGUpOgotICAgICIiIkZpeCBzb21lIHN0dWZmIGluIGFsbCBtYWtlZmlsZXMKLSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgotICAgICAgICByZXR1cm4KLSAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKLSAgICAgICAgbGluZXMgPSBmaW4ucmVhZGxpbmVzKCkKLSAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBFUkw9Iik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ1A9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJDUD1jb3B5XG4iCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk1LRElSPSIpOgotICAgICAgICAgICAgICAgIGxpbmUgPSAiTUtESVI9bWtkaXJcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ0ZMQUc9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgICAgIGZvciBhbGdvIGluICgiUkM1IiwgIk1EQzIiLCAiSURFQSIpOgotICAgICAgICAgICAgICAgICAgICBub2FsZ28gPSAiIC1ET1BFTlNTTF9OT18lcyIgJSBhbGdvCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vYWxnbyBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgbm9hbGdvCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAnXG4nCi0gICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0KLWRlZiBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KToKLSAgICBwcmludCgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIG9zLnN5c3RlbSgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIHByaW50KGRvX3NjcmlwdCkKLSAgICBvcy5zeXN0ZW0oZG9fc2NyaXB0KQotCi1kZWYgY21wKGYxLCBmMik6Ci0gICAgYnVmc2l6ZSA9IDEwMjQgKiA4Ci0gICAgd2l0aCBvcGVuKGYxLCAncmInKSBhcyBmcDEsIG9wZW4oZjIsICdyYicpIGFzIGZwMjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGIxID0gZnAxLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGIyID0gZnAyLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIGIxICE9IGIyOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IGIxOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLWRlZiBjb3B5KHNyYywgZHN0KToKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShkc3QpIGFuZCBjbXAoc3JjLCBkc3QpOgotICAgICAgICByZXR1cm4KLSAgICBzaHV0aWwuY29weShzcmMsIGRzdCkKLQotZGVmIG1haW4oKToKLSAgICBidWlsZF9hbGwgPSAiLWEiIGluIHN5cy5hcmd2Ci0gICAgaWYgc3lzLmFyZ3ZbMV0gPT0gIlJlbGVhc2UiOgotICAgICAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgZWxpZiBzeXMuYXJndlsxXSA9PSAiRGVidWciOgotICAgICAgICBkZWJ1ZyA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihzeXMuYXJndikpCi0KLSAgICBpZiBzeXMuYXJndlsyXSA9PSAiV2luMzIiOgotICAgICAgICBhcmNoID0gIng4NiIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjMyIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX25hc20iCi0gICAgICAgIG1ha2VmaWxlPSJtc1xcbnQubWFrIgotICAgICAgICBtMzIgPSBtYWtlZmlsZQotICAgICAgICBkaXJzdWZmaXggPSAiMzIiCi0gICAgZWxpZiBzeXMuYXJndlsyXSA9PSAieDY0IjoKLSAgICAgICAgYXJjaD0iYW1kNjQiCi0gICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU42NEEiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fd2luNjRhIgotICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQ2NC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlLnJlcGxhY2UoJzY0JywgJycpCi0gICAgICAgIGRpcnN1ZmZpeCA9ICI2NCIKLSAgICAgICAgI29zLmVudmlyb25bIlZTRVhUQ09NUF9VU0VDTCJdID0gIk1TX09QVEVST04iCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoc3lzLmFyZ3YpKQotCi0gICAgbWFrZV9mbGFncyA9ICIiCi0gICAgaWYgYnVpbGRfYWxsOgotICAgICAgICBtYWtlX2ZsYWdzID0gIi1hIgotICAgICMgcGVybCBzaG91bGQgYmUgb24gdGhlIHBhdGgsIGJ1dCB3ZSBhbHNvIGxvb2sgaW4gIlxwZXJsIiBhbmQgImM6XFxwZXJsIgotICAgICMgYXMgIndlbGwga25vd24iIGxvY2F0aW9ucwotICAgIHBlcmxzID0gZmluZF9hbGxfb25fcGF0aCgicGVybC5leGUiLCBbciJccGVybFxiaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsXGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlxwZXJsNjRcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiQzpccGVybDY0XGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgcGVybCA9IGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKQotICAgIGlmIHBlcmw6Ci0gICAgICAgIHByaW50KCJGb3VuZCBhIHdvcmtpbmcgcGVybCBhdCAnJXMnIiAlIChwZXJsLCkpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIk5vIFBlcmwgaW5zdGFsbGF0aW9uIHdhcyBmb3VuZC4gRXhpc3RpbmcgTWFrZWZpbGVzIGFyZSB1c2VkLiIpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgIyBMb29rIGZvciBTU0wgMiBsZXZlbHMgdXAgZnJvbSBwY2J1aWxkIC0gaWUsIHNhbWUgcGxhY2UgemxpYiBldGMgYWxsIGxpdmUuCi0gICAgc3NsX2RpciA9IGdldF9zc2xfZGlyKCkKLSAgICBpZiBzc2xfZGlyIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAjIGFkZCBvdXIgY29weSBvZiBOQVNNIHRvIFBBVEguICBJdCB3aWxsIGJlIG9uIHRoZSBzYW1lIGxldmVsIGFzIG9wZW5zc2wKLSAgICBmb3IgZGlyIGluIG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNzbF9kaXIsIG9zLnBhcmRpcikpOgotICAgICAgICBpZiBkaXIuc3RhcnRzd2l0aCgnbmFzbScpOgotICAgICAgICAgICAgbmFzbV9kaXIgPSBvcy5wYXRoLmpvaW4oc3NsX2Rpciwgb3MucGFyZGlyLCBkaXIpCi0gICAgICAgICAgICBuYXNtX2RpciA9IG9zLnBhdGguYWJzcGF0aChuYXNtX2RpcikKLSAgICAgICAgICAgIG9sZF9wYXRoID0gb3MuZW52aXJvblsnUEFUSCddCi0gICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvcy5wYXRoc2VwLmpvaW4oW25hc21fZGlyLCBvbGRfcGF0aF0pCi0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCdOQVNNIHdhcyBub3QgZm91bmQsIG1ha2Ugc3VyZSBpdCBpcyBvbiBQQVRIJykKLQotCi0gICAgb2xkX2NkID0gb3MuZ2V0Y3dkKCkKLSAgICB0cnk6Ci0gICAgICAgIG9zLmNoZGlyKHNzbF9kaXIpCi0gICAgICAgICMgcmVidWlsZCBtYWtlZmlsZSB3aGVuIHdlIGRvIHRoZSByb2xlIG92ZXIgZnJvbSAzMiB0byA2NCBidWlsZAotICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCIgYW5kIG9zLnBhdGguaXNmaWxlKG0zMikgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsobTMyKQotCi0gICAgICAgICMgSWYgdGhlIHNzbCBtYWtlZmlsZXMgZG8gbm90IGV4aXN0LCB3ZSBpbnZva2UgUGVybCB0byBnZW5lcmF0ZSB0aGVtLgotICAgICAgICAjIER1ZSB0byBhIGJ1ZyBpbiB0aGlzIHNjcmlwdCwgdGhlIG1ha2VmaWxlIHNvbWV0aW1lcyBlbmRlZCB1cCBlbXB0eQotICAgICAgICAjIEZvcmNlIGEgcmVnZW5lcmF0aW9uIGlmIGl0IGlzLgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpIG9yIG9zLnBhdGguZ2V0c2l6ZShtYWtlZmlsZSk9PTA6Ci0gICAgICAgICAgICBpZiBwZXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlBlcmwgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIG1ha2VmaWxlcyEiKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgICAgIHByaW50KCJDcmVhdGluZyB0aGUgbWFrZWZpbGVzLi4uIikKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgIyBQdXQgb3VyIHdvcmtpbmcgUGVybCBhdCB0aGUgZnJvbnQgb2Ygb3VyIHBhdGgKLSAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLnBhdGguZGlybmFtZShwZXJsKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGhzZXAgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0KLSAgICAgICAgICAgIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpCi0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBwcmludCgiT3BlblNTTCBkZWJ1ZyBidWlsZHMgYXJlbid0IHN1cHBvcnRlZC4iKQotICAgICAgICAgICAgI2lmIGFyY2g9PSJ4ODYiIGFuZCBkZWJ1ZzoKLSAgICAgICAgICAgICMgICAgIyB0aGUgZG9fbWFzbSBzY3JpcHQgaW4gb3BlbnNzbCBkb2Vzbid0IGdlbmVyYXRlIGEgZGVidWcKLSAgICAgICAgICAgICMgICAgIyBidWlsZCBtYWtlZmlsZSBzbyB3ZSBnZW5lcmF0ZSBpdCBoZXJlOgotICAgICAgICAgICAgIyAgICBvcy5zeXN0ZW0oInBlcmwgdXRpbFxtazFtZi5wbCBkZWJ1ZyAiK2NvbmZpZ3VyZSsiID4iK21ha2VmaWxlKQotCi0gICAgICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCI6Ci0gICAgICAgICAgICAgICAgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMikKLSAgICAgICAgICAgIGZpeF9tYWtlZmlsZShtYWtlZmlsZSkKLSAgICAgICAgICAgIGNvcHkociJjcnlwdG9cYnVpbGRpbmYuaCIsIHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCkKLSAgICAgICAgICAgIGNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmYuaCIsIHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCkKLQotICAgICAgICAjIElmIHRoZSBhc3NlbWJsZXIgZmlsZXMgZG9uJ3QgZXhpc3QgaW4gdG1wWFgsIGNvcHkgdGhlbSB0aGVyZQotICAgICAgICBpZiBwZXJsIGlzIE5vbmUgYW5kIG9zLnBhdGguZXhpc3RzKCJhc20iK2RpcnN1ZmZpeCk6Ci0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoInRtcCIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBvcy5ta2RpcigidG1wIitkaXJzdWZmaXgpCi0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKCJhc20iK2RpcnN1ZmZpeCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGYuZW5kc3dpdGgoIi5hc20iKTogY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShyInRtcCVzXCVzIiAlIChkaXJzdWZmaXgsIGYpKTogY29udGludWUKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weShyImFzbSVzXCVzIiAlIChkaXJzdWZmaXgsIGYpLCAidG1wIitkaXJzdWZmaXgpCi0KLSAgICAgICAgIyBOb3cgcnVuIG1ha2UuCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJuYXNtIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWcgbXNcXHVwdGFibGUuYXNtIikKLSAgICAgICAgICAgIGlmIHJjOgotICAgICAgICAgICAgICAgIHByaW50KCJuYXNtIGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQocmMpCi0KLSAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZl8lcy5oIiAlIGFyY2gsIHIiY3J5cHRvXGJ1aWxkaW5mLmgiKQotICAgICAgICBjb3B5KHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cb3BlbnNzbGNvbmYuaCIpCi0KLSAgICAgICAgI21ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gUEVSTD1cIiVzXCIgLWYgXCIlc1wiIiAlKHBlcmwsIG1ha2VmaWxlKQotICAgICAgICBtYWtlQ29tbWFuZCA9ICJubWFrZSAvbm9sb2dvIC1mIFwiJXNcIiIgJSBtYWtlZmlsZQotICAgICAgICBwcmludCgiRXhlY3V0aW5nIHNzbCBtYWtlZmlsZXM6IiwgbWFrZUNvbW1hbmQpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKLSAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBwcmludCgiRXhlY3V0aW5nICIrbWFrZWZpbGUrIiBmYWlsZWQiKQotICAgICAgICAgICAgcHJpbnQocmMpCi0gICAgICAgICAgICBzeXMuZXhpdChyYykKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy5jaGRpcihvbGRfY2QpCi0gICAgc3lzLmV4aXQocmMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5IGIvUENidWlsZC9idWlsZF90a2ludGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODA3ZTdiLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLSIiIlNjcmlwdCB0byBjb21waWxlIHRoZSBkZXBlbmRlbmNpZXMgb2YgX3RraW50ZXIKLQotQ29weXJpZ2h0IChjKSAyMDA3IGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBjaGVpbWVzLmRlPgotCi1MaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCi0iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXBhciA9IG9zLnBhdGgucGFyZGlyCi0KLVRDTCA9ICJ0Y2w4LjYuMSIKLVRLID0gInRrOC42LjEiCi1USVggPSAidGl4LTguNC4zLjMiCi0KLVJPT1QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhciwgcGFyKSkKLU5NQUtFID0gKCdubWFrZSAvbm9sb2dvIC9mICVzICVzICVzJykKLQotZGVmIG5tYWtlKG1ha2VmaWxlLCBjb21tYW5kPSIiLCAqKmt3KToKLSAgICBkZWZpbmVzID0gJyAnLmpvaW4oaysnPScrc3RyKHYpIGZvciBrLCB2IGluIGt3Lml0ZW1zKCkpCi0gICAgY21kID0gTk1BS0UgJSAobWFrZWZpbGUsIGRlZmluZXMsIGNvbW1hbmQpCi0gICAgcHJpbnQoIlxuXG4iK2NtZCsiXG4iKQotICAgIGlmIG9zLnN5c3RlbShjbWQpICE9IDA6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihjbWQpCi0KLWRlZiBidWlsZChwbGF0Zm9ybSwgY2xlYW4pOgotICAgIGlmIHBsYXRmb3JtID09ICJXaW4zMiI6Ci0gICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oUk9PVCwgInRjbHRrIikKLSAgICAgICAgbWFjaGluZSA9ICJJWDg2IgotICAgIGVsaWYgcGxhdGZvcm0gPT0gIkFNRDY0IjoKLSAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGs2NCIpCi0gICAgICAgIG1hY2hpbmUgPSAiQU1ENjQiCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihwbGF0Zm9ybSkKLQotICAgICMgVENMCi0gICAgdGNsZGlyID0gb3MucGF0aC5qb2luKFJPT1QsIFRDTCkKLSAgICBpZiAxOgotICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4odGNsZGlyLCAid2luIikpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImNsZWFuIikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgTUFDSElORT1tYWNoaW5lKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIElOU1RBTExESVI9ZGVzdCwgTUFDSElORT1tYWNoaW5lKQotCi0gICAgIyBUSwotICAgIGlmIDE6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihST09ULCBUSywgIndpbiIpKQotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsICJjbGVhbiIsIERFQlVHPTAsIFRDTERJUj10Y2xkaXIpCi0gICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsIERFQlVHPTAsIE1BQ0hJTkU9bWFjaGluZSwgVENMRElSPXRjbGRpcikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImluc3RhbGwiLCBERUJVRz0wLCBJTlNUQUxMRElSPWRlc3QsIE1BQ0hJTkU9bWFjaGluZSwgVENMRElSPXRjbGRpcikKLQotICAgICMgVElYCi0gICAgaWYgMToKLSAgICAgICAgIyBweXRob245Lm1hayBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3N2bi5weXRob24ub3JnCi0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihST09ULCBUSVgsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgicHl0aG9uLm1hayIsICJjbGVhbiIpCi0gICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgTUFDSElORT1tYWNoaW5lLCBJTlNUQUxMX0RJUj1kZXN0KQotICAgICAgICBubWFrZSgicHl0aG9uLm1hayIsICJpbnN0YWxsIiwgTUFDSElORT1tYWNoaW5lLCBJTlNUQUxMX0RJUj1kZXN0KQotCi1kZWYgbWFpbigpOgotICAgIGlmIGxlbihzeXMuYXJndikgPCAyIG9yIHN5cy5hcmd2WzFdIG5vdCBpbiAoIldpbjMyIiwgIkFNRDY0Iik6Ci0gICAgICAgIHByaW50KCIlcyBXaW4zMnxBTUQ2NCIgJSBzeXMuYXJndlswXSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmICItYyIgaW4gc3lzLmFyZ3Y6Ci0gICAgICAgIGNsZWFuID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIGNsZWFuID0gRmFsc2UKLQotICAgIGJ1aWxkKHN5cy5hcmd2WzFdLCBjbGVhbikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9jbGVhbi5iYXQgYi9QQ2J1aWxkL2NsZWFuLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODUxN2QyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9jbGVhbi5iYXQKQEAgLTAsMCArMSw1IEBACitAZWNobyBvZmYNCityZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGNsZWFuIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uLA0KK3JlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4NCisNCitjYWxsICV+ZHAwYnVpbGQuYmF0IC10IENsZWFuICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9kZWJ1Zy5wcm9wcyBiL1BDYnVpbGQvZGVidWcucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliN2E2NWEuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9kZWJ1Zy5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgotICAgIDxQeURlYnVnRXh0Pl9kPC9QeURlYnVnRXh0PgotICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uX2QuZXhlPC9LaWxsUHl0aG9uRXhlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KLSAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iS2lsbFB5dGhvbkV4ZSI+Ci0gICAgICA8VmFsdWU+JChLaWxsUHl0aG9uRXhlKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2Vudi5iYXQgYi9QQ2J1aWxkL2Vudi5iYXQKaW5kZXggMDE3MGJjZS4uMmIyYzAwNSAxMDA2NDQKLS0tIGEvUENidWlsZC9lbnYuYmF0CisrKyBiL1BDYnVpbGQvZW52LmJhdApAQCAtMSw0ICsxLDE2IEBACiBAZWNobyBvZmYNCi1lY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NA0KK3JlbSBUaGlzIHNjcmlwdCBhZGRzIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHRvb2xzIHRvIHRoZSBwYXRoIGZvciB0aGUgY3VycmVudA0KK3JlbSBjb21tYW5kIHdpbmRvdy4gSG93ZXZlciwgbW9zdCBidWlsZHMgb2YgUHl0aG9uIHdpbGwgaWdub3JlIHRoZSB2ZXJzaW9uDQorcmVtIG9mIHRoZSB0b29scyBvbiBQQVRIIGFuZCB1c2UgUGxhdGZvcm1Ub29sc2V0IGluc3RlYWQuIElkZWFsbHksIGJvdGggc2V0cyBvZg0KK3JlbSB0b29scyBzaG91bGQgYmUgdGhlIHNhbWUgdmVyc2lvbiB0byBhdm9pZCBwb3RlbnRpYWwgY29uZmxpY3RzLg0KK3JlbQ0KK3JlbSBUbyBidWlsZCBQeXRob24gd2l0aCBhbiBlYXJsaWVyIHRvb2xzZXQsIHBhc3MgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIiAob3INCityZW0gJ3YxMTAnLCAndjEyMCcgb3IgJ3YxNDAnKSB0byB0aGUgYnVpbGQgc2NyaXB0Lg0KKw0KK2VjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGFtZDY0LCB4ODZfYW1kNjQNCiBlY2hvLg0KLWNhbGwgIiVWUzEwMENPTU5UT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KK3NldCBWU1RPT0xTPSVWUzE0MENPTU5UT09MUyUNCitpZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTIwQ09NTlRPT0xTJQ0KK2lmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMTBDT01OVE9PTFMlDQoraWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzEwMENPTU5UT09MUyUNCitjYWxsICIlVlNUT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CmluZGV4IDM4MzZlZTQuLjkyNmJkNWYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKKysrIGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdApAQCAtNTUsOCArNTUsOCBAQAogICAgICAgICAgICAgYnppcDItMS4wLjYNCiAgICAgICAgICAgICBuYXNtLTIuMTEuMDYNCiAgICAgICAgICAgICBvcGVuc3NsLTEuMC4yYQ0KLSAgICAgICAgICAgIHRjbC04LjYuMS4wDQotICAgICAgICAgICAgdGstOC42LjEuMA0KKyAgICAgICAgICAgIHRjbC1jb3JlLTguNi40LjENCisgICAgICAgICAgICB0ay04LjYuNC4xDQogICAgICAgICAgICAgdGl4LTguNC4zLjQNCiAgICAgICAgICAgICBzcWxpdGUtMy44LjMuMQ0KICAgICAgICAgICAgIHh6LTUuMC41DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9pZGxlLmJhdCBiL1BDYnVpbGQvaWRsZS5iYXQKaW5kZXggNWFiMTVmNS4uYmFjYWFhOCAxMDA2NDQKLS0tIGEvUENidWlsZC9pZGxlLmJhdAorKysgYi9QQ2J1aWxkL2lkbGUuYmF0CkBAIC00LDEwICs0LDEwIEBACiByZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQogDQogc2V0bG9jYWwNCi1zZXQgZXhlPXB5dGhvbg0KLVBBVEggJVBBVEglOy4uXC4uXHRjbHRrXGJpbg0KK3NldCBleGU9d2luMzJccHl0aG9uDQorUEFUSCAlUEFUSCU7Li5cZXh0ZXJuYWxzXHRjbHRrXGJpbg0KIA0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQNCitpZiAiJTEiPT0iLWQiIChzZXQgZXhlPSVleGUlX2QpICYgc2hpZnQNCiANCiBzZXQgY21kPSVleGUlIC4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCiANCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2luc3RhbGxlci5ibXAgYi9QQ2J1aWxkL2luc3RhbGxlci5ibXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NzVlMTkuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9pbnN0YWxsZXIuYm1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi5jIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDQ3MzFmLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQva2lsbF9weXRob24uYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKLSAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCi0gKiBsb2NrZWQuCi0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHRsaGVscDMyLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKLQotI2lmZGVmIF9ERUJVRwotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCi0jZWxzZQotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKLSNlbmRpZgotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCi0gICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOwotICAgIHNpemVfdCAgIGxlbjsKLSAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOwotCi0gICAgTU9EVUxFRU5UUlkzMlcgIG1lOwotICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKLQotICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7Ci0gICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7Ci0KLSAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7Ci0KLSAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwotCi0gICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKLSAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAotICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCi0gICAgICovCi0gICAgZG8gewotICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKLSAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCi0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAotICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKLSAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQotICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgotICAgICAqIAotICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKLSAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQotICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCi0gICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKLSAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KLSAgICAgKi8KLQotICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOwotICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKLSAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7Ci0gICAgZG8gewotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCi0gICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjM0W19kXS5kbGwpLAotICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KLSAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAotICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCi0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChfd2NzbmljbXAocGUuc3pFeGVGaWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgcHl0aG9uIHByb2Nlc3MuICovCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvKiBJdCdzIGEgcHl0aG9uIHByb2Nlc3MsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGl0J3MgaW4uLi4gKi8KLSAgICAgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBwZS50aDMyUHJvY2Vzc0lEKTsKLSAgICAgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIC8qIAotICAgICAgICAgICAgICogSWYgb3VyIG1vZHVsZSBzbmFwc2hvdCBmYWlscyAod2hpY2ggd2lsbCBoYXBwZW4gaWYgd2UgZG9uJ3Qgb3duCi0gICAgICAgICAgICAgKiB0aGUgcHJvY2VzcyksIGp1c3QgaWdub3JlIGl0IGFuZCBjb250aW51ZS4gIChJdCBzZWVtcyBkaWZmZXJlbnQKLSAgICAgICAgICAgICAqIHZlcnNpb25zIG9mIFdpbmRvd3MgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZm9yIEdldExhc3RFcnJvcigpCi0gICAgICAgICAgICAgKiBpbiB0aGlzIHNpdHVhdGlvbjsgaXQncyBlYXNpZXIgdG8ganVzdCBpZ25vcmUgaXQgYW5kIG1vdmUgb24gdnMuCi0gICAgICAgICAgICAgKiBzdG9wcGluZyB0aGUgYnVpbGQgZm9yIHdoYXQgY291bGQgYmUgYSBmYWxzZSBwb3NpdGl2ZS4pCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgewotICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1syXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgICAgIC8qIFdyb25nIG1vZHVsZSwgd2UncmUgbG9va2luZyBmb3IgcHl0aG9uW19kXS5leGUuLi4gKi8KLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChwYXRoLCBtZS5zekV4ZVBhdGgsIGxlbikpCi0gICAgICAgICAgICAgICAgLyogUHJvY2VzcyBkb2Vzbid0IGxpdmUgaW4gb3VyIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLyogUHl0aG9uIHByb2Nlc3MgcmVzaWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdG9yeSwga2lsbCBpdCEgICovCi0gICAgICAgICAgICBocCA9IE9wZW5Qcm9jZXNzKGRhYywgRkFMU0UsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICAgICAgaWYgKCFocCkgewotICAgICAgICAgICAgICAgIHByaW50ZigiT3BlblByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFUZXJtaW5hdGVQcm9jZXNzKGhwLCAxKSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRlUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOwotCi0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0KLSAgICB9IHdoaWxlIChQcm9jZXNzMzJOZXh0Vyhoc3AsICZwZSkpOwotCi0gICAgQ2xvc2VIYW5kbGUoaHNwKTsKLQotICAgIHJldHVybiAwOwotfQotCi0vKiB2aTogc2V0IHRzPTggc3c9NCBzdHM9NCBleHBhbmR0YWIgKi8KZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvaiBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY2N2M0MC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+ezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPmtpbGxfcHl0aG9uPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJraWxsX3B5dGhvbi5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzNkNzUxLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDg2MDY1OTEtYzhiNi00MWE1LTk1YzUtOWEwODkwYzU1MDRmfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJraWxsX3B5dGhvbi5jIj4KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbGliZWF5LnZjeHByb2ogYi9QQ2J1aWxkL2xpYmVheS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NjJjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2xpYmVheS52Y3hwcm9qCkBAIC0wLDAgKzEsOTA3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bGliZWF5PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgCisgIDxJbXBvcnQgUHJvamVjdD0ib3BlbnNzbC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisKKyAgPFRhcmdldCBOYW1lPSJDcmVhdGVCdWlsZGluZkgiIElucHV0cz0iJChNU0J1aWxkUHJvamVjdEZ1bGxQYXRoKSIgT3V0cHV0cz0iJChJbnREaXIpXGJ1aWxkaW5mLmgiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxfREFURVZhbHVlPiNkZWZpbmUgREFURSAiJChbU3lzdGVtLkRhdGVUaW1lXTo6Tm93LlRvU3RyaW5nKGBkZGQgTU1NIGRkIEhIJzonbW0nOidzcyB5eXl5YCkpIjwvX0RBVEVWYWx1ZT4KKyAgICAgIDxfQ0ZMQUdTVmFsdWU+I2RlZmluZSBDRkxBR1MgImNsIC9NRCAvT3ggLVczIC1HczAgLUd5IC1ub2xvZ28gQChQcmVwcm9jZXNzb3JEZWZpbml0aW9ucy0+Jy1EJShJZGVudGl0eSknLCcgJykiPC9fQ0ZMQUdTVmFsdWU+CisgICAgICA8X1BMQVRGT1JNVmFsdWUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKT09J1dpbjMyJyI+I2RlZmluZSBQTEFURk9STSAiVkMtV0lOMzIiPC9fUExBVEZPUk1WYWx1ZT4KKyAgICAgIDxfUExBVEZPUk1WYWx1ZSBDb25kaXRpb249IiQoUGxhdGZvcm0pPT0neDY0JyI+I2RlZmluZSBQTEFURk9STSAiVkMtV0lONjRBIjwvX1BMQVRGT1JNVmFsdWU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKVxidWlsZGluZi5oIgorICAgICAgICAgICAgICAgICAgICAgIExpbmVzPSIkKF9EQVRFVmFsdWUpOyQoX0NGTEFHU1ZhbHVlKTskKF9QTEFURk9STVZhbHVlKSIKKyAgICAgICAgICAgICAgICAgICAgICBPdmVyd3JpdGU9InRydWUiIC8+CisgICAgPE1lc3NhZ2UgVGV4dD0iVXBkYXRpbmcgYnVpbGRpbmYuaDoKKyAgICAkKF9EQVRFVmFsdWUpCisgICAgJChfQ0ZMQUdTVmFsdWUpCisgICAgJChfUExBVEZPUk1WYWx1ZSkiIEltcG9ydGFuY2U9Im5vcm1hbCIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJTdXBwcmVzc09yaWdpbmFsQnVpbGRpbmZIIiBDb25kaXRpb249IkV4aXN0cygnJChvcGVuc3NsRGlyKWNyeXB0b1xidWlsZGluZi5oJykiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgPE1vdmUgU291cmNlRmlsZXM9IiQob3BlbnNzbERpciljcnlwdG9cYnVpbGRpbmYuaCIgRGVzdGluYXRpb25GaWxlcz0iJChvcGVuc3NsRGlyKWNyeXB0b1xidWlsZGluZi5oLm9yaWciIC8+CisgIDwvVGFyZ2V0PgorCisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGN2ZXJzaW9uLmMiPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChJbnREaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpYXBwc1xlcnJzdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19jZmIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19jdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19lY2IuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19pZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19taXNjLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhZXNcYWVzX29mYi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhZXNcYWVzX3dyYXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2JpdHN0ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfYm9vbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfYnl0ZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2QyaV9mcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfZGlnZXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9kdXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2VudW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2dlbnRtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9pMmRfZnAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2ludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfbWJzdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfb2N0ZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3N0cmV4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zdHJuaWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3RpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3R5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX3V0Y3RtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV91dGY4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV92ZXJpZnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhbWV0aF9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc25fbWltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbl9tb2lkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuX3BhY2suYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc24xX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbjFfZ2VuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuMV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc24xX3Bhci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGJpb19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYmlvX25kZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxkMmlfcHIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZDJpX3B1LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZXZwX2FzbjEuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZl9lbnVtLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZl9pbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxmX3N0cmluZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGkyZF9wci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxpMmRfcHUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxuX3BrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxuc3NlcS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHA1X3BiZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHA1X3BiZXYyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFccDhfcGtleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0X2JpdHN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9jcmwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0X3BrZXkuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9yZXEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0X3Nwa2kuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0X3g1MDkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0X3g1MDlhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9kZWMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fZnJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9uZXcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX3Bybi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fdHlwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl91dGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2FsZ29yLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9hdHRyaWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2JpZ251bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfY3JsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9leHRlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfaW5mby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfbG9uZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfbmFtZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfbng1MDkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3BrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3B1YmtleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfcmVxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9zaWcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3Nwa2kuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3ZhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfeDUwOS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfeDUwOWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmZcYmZfY2ZiNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmZcYmZfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX29mYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX3NrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJfZHVtcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYl9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYl9zb2NrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xiZl9idWZmLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmZfbmJpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmZfbnVsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmlvX2NiLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xiaW9fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xiaW9fbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX2FjcHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19iaW8uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19jb25uLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX2RncmFtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfZmQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19maWxlLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX2xvZy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX251bGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19zb2NrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2FkZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9ibGluZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fY29uc3QuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fY3R4LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9kZXByLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2Rpdi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZXhwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2V4cDIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZ2NkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2dmMm0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fa3Jvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbW9kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX21vbnQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX21waS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9tdWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbmlzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9wcmltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9yYW5kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3JlY3AuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fc2hpZnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fc3FyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3NxcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fd29yZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5feDkzMXAuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYnVmZmVyXGJ1Zl9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYnVmZmVyXGJ1Zl9zdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYnVmZmVyXGJ1ZmZlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYW1lbGxpYVxjbWxsX2NmYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9jdHIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9lY2IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9vZmIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF91dGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FzdFxjX2NmYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19lY2IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FzdFxjX29mYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtYWNcY21fYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21hY1xjbV9wbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbWFjXGNtYWMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfYXR0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2NkLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19lbnYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19lcnIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZXNzLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19rYXJpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfcHdyaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX3NkLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX3NtaW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbXBcY19ybGUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29tcFxjX3psaWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29tcFxjb21wX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb21wXGNvbXBfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9hcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX2RlZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb25mXGNvbmZfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX21hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX21vZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX3NhcC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjcHRfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNyeXB0bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjYmNfY2tzbS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGNiY19lbmMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGNmYl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGNmYjY0ZWRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjZmI2NGVuYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGRlc19vbGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGRlc19vbGQyLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlY2JfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlY2IzX2VuYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGVkZV9jYmNtX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZW5jX3JlYWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGVuY193cml0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xmY3J5cHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXG9mYl9lbmMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXG9mYjY0ZWRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xvZmI2NGVuYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHBjYmNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xxdWRfY2tzbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNccmFuZF9rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHJlYWQycHdkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xycGNfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xzZXRfa2V5LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcc3RyMmtleS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNceGNiY19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9jaGVjay5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfZ2VuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2tkZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX3BtZXRoLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9wcm4uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfcmZjNTExNC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfYXNuMS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9kZXByLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfZ2VuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2Ffa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2Ffb3NzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX3BtZXRoLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX3Bybi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV92cmYuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fYmVvcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX2RsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fZGxmY24uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fbnVsbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX29wZW5zc2wuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fdm1zLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fd2luMzIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGViY2RpYy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19hbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19hc24xLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19jaGVjay5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19jdXJ2ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19jdnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfbXVsdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19vY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfcG1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWMyX211bHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWMyX29jdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlYzJfc21wbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY2tfcHJuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9tb250LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9uaXN0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdHAyMjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX25pc3RwMjU2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9uaXN0cDUyMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdHB1dGlsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9vY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX3NtcGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkaFxlY2hfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX2tkZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RoXGVjaF9rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkaFxlY2hfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX29zc2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkc2FcZWNzX2FzbjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkc2FcZWNzX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3NfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19vc3NsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc192cmYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19jbmYuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfY3J5cHRvZGV2LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfY3RybC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2R5bi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2ZhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2luaXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19saXN0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX29wZW5zc2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19wa2V5LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX3JkcmFuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX3JzYXguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ190YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfYXNubXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9jaXBoZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2RoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9kaWdlc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2RzYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfZWNkaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfZWNkc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3BrbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfcmFuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfcnNhLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfc3RvcmUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXJyXGVyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlcnJcZXJyX2FsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlcnJcZXJyX3Bybi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcYmlvX2I2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcYmlvX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcYmlvX21kLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcYmlvX29rLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxjX2FsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcY19hbGxjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxjX2FsbGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGRpZ2VzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9hZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYWVzX2NiY19obWFjX3NoYTEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYWVzX2NiY19obWFjX3NoYTI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9iZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9jYW1lbGxpYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9jYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX2Rlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9kZXMzLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9pZGVhLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX251bGwuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX29sZC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9yYzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfcmM0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3JjNF9obWFjX21kNS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfcmM1LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3NlZWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfeGNiY19kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlbmNvZGUuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfYWNuZi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2NuZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2Vyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9maXBzLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfcGJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfcGtleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9kc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fZHNzMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9lY2RzYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9tZDQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fbWQ1LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9udWxsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX3JpcGVtZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9zaGEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fc2hhMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9zaWd2ZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fd3AuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG5hbWVzLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccF9kZWMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccF9vcGVuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwX3NlYWwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfc2lnbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccF92ZXJpZnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHA1X2NycHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHA1X2NycHQyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwbWV0aF9mbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccG1ldGhfZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBtZXRoX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xleF9kYXRhLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xmaXBzX2Vycy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xobWFjXGhtX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGhtYWNcaG1fcG1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9caG1hY1xobWFjLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xrcmI1XGtyYjVfYXNuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGxoYXNoXGxoX3N0YXRzLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGxoYXNoXGxoYXNoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1kNFxtZDRfZGdzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWQ0XG1kNF9vbmUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWQ1XG1kNV9kZ3N0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtZDVcbWQ1X29uZS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWVtX2RiZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xjYmMxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY2NtMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGNmYjEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xjdHIxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY3RzMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGdjbTEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xvZmIxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcd3JhcDEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1x4dHMxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb19kaXIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9fZmlwcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX2luaXQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9fc3RyLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9fdGltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvYmplY3RzXG9fbmFtZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvYmpfZGF0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9iamVjdHNcb2JqX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvYmplY3RzXG9ial9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvYmpfeHJlZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3BfYXNuLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3BfY2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2Vyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2V4dC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3BfaHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX3Bybi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3Bfc3J2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF92ZnkuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV9hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV9pbmZvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fb3RoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fcGs4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fcGtleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV9zZWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fc2lnbi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3g1MDkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV94YXV4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwdmtmbXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9hZGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9hc24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9hdHRyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfY3JwdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9jcnQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9kZWNyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX2luaXQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9raXNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfbXV0bC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9ucGFzLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfcDhkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfcDhlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwazEyZXJyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xiaW9fcGs3LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19hdHRyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19kb2l0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19taW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3M3XHBrN19zbWltZS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwa2NzN2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwcXVldWVccHF1ZXVlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRcbWRfcmFuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXHJhbmRfZWdkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX253LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9vczIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX3VuaXguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX3dpbi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kZmlsZS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzJccmMyX2NiYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzJccmMyX2VjYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzJccmMyX3NrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMmNmYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJjMlxyYzJvZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzRccmM0X3V0bC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyaXBlbWRccm1kX2Rnc3QuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJpcGVtZFxybWRfb25lLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9hc24xLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2Noay5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2NycHQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2VheS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX25vbmUuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfbnVsbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX29hZXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9wazEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9wbWV0aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9wcm4uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9wc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9zYW9zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2Ffc2lnbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX3NzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX3g5MzEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2VlZFxzZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZF9jYmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2VlZFxzZWVkX2NmYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzZWVkXHNlZWRfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZF9vZmIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYV9kZ3N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGFfb25lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGExX29uZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhMWRnc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYTI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhNTEyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNycFxzcnBfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNycFxzcnBfdmZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHN0YWNrXHN0YWNrLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX2NvbmYuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfZXJyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfcmVxX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JlcV91dGlscy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19yc3BfcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfcnNwX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfcnNwX3V0aWxzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JzcF92ZXJpZnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfdmVyaWZ5X2N0eC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0eHRfZGJcdHh0X2RiLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV9jb21wYXQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdWlcdWlfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHVpXHVpX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV9vcGVuc3NsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHVpXHVpX3V0aWwuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHVpZC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x3aHJscG9vbFx3cF9kZ3N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlcYnlfZGlyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlcYnlfZmlsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHhfYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9hdHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2NtcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfZDIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2RlZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9leHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2x1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9vYmouYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9yMnguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3JlcS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3NldC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfdHJzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV90eHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3YzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV92ZnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3ZwbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDljc2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOW5hbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5cnNldC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5c3BraS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDl0eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfY2FjaGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHBjeV9kYXRhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfbWFwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfbm9kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X3RyZWUuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19hZGRyLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19ha2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19ha2V5YS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWx0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYXNpZC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYmNvbnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2JpdHN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19jb25mLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19jcG9scy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfY3JsZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfZW51bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfZXh0a3UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2dlbm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2lhNS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfaW5mby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX25jb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19vY3NwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wY2kuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3BjaWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3Bjb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wa3UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3BtYXBzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3B1cnAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3NjdHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3NrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX3N4bmV0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M191dGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZV9nb3N0X2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RfYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2FzbjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2NyeXB0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9jdGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2VuZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3Rfa2V5d3JhcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RfbWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X3BhcmFtcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RfcG1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0MjAwMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3QyMDAxX2tleXguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0ODkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0OTRfa2V5eC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RoYXNoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlXzQ3NThjY2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfYWVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2F0YWxsYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9jYXBpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2NoaWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfY3N3aWZ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2dtcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9udXJvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9wYWRsb2NrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX3N1cmV3YXJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX3Vic2VjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfZXh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX3NydnIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAnV2luMzInIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cd2hybHBvb2xcd3BfYmxvY2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9hc20uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9taXNjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGRlc19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGZjcnlwdF9iLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICAgIAorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyI+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxhZXMtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGFlc25pLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxiZi01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcYm4tNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGNhc3QtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGNtbGwteDg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGNvLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjcnlwdDU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxkZXMtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGdoYXNoLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxtZDUtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHJjNC01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJccm1kLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxzaGExLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxzaGEyNTYtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHNoYTUxMi01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcdnBhZXMteDg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHdwLW1teC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlx4ODZjcHVpZC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlx4ODYtZ2YybS5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlx4ODYtbW9udC5hc20iIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktc2hhMS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktc2hhMS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktZ2NtLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxhZXNuaS1tYi14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktc2hhMjU2LXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxhZXNuaS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxic2Flcy14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcY21sbC14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcZ2hhc2gteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XG1kNS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRccmM0LW1kNS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRccmM0LXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxzaGExLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxzaGExLW1iLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxzaGEyNTYtbWIteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHNoYTI1Ni14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhNTEyLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx2cGFlcy14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcd3AteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHg4Nl82NGNwdWlkLmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHg4Nl82NC1nZjJtLmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHg4Nl82NC1tb250LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHg4Nl82NC1tb250NS5hc20iIC8+CisgIDwvSXRlbUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxEZWxldGUgRmlsZXM9IiQoVGFyZ2V0UGF0aCkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YWFkZWUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGlvLmg+Ci0KLSNkZWZpbmUgQ01EX1NJWkUgNTAwCi0KLS8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0Ci0gICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgotICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENCdWlsZFxnZXRidWlsZGluZm8yLmMKLSAgIGFsc28uIElmIHRoaXMgaXNuJ3QgYSBzdWJ2ZXJzaW9uIGNoZWNrb3V0LCBvciBzdWJ3Y3JldiBpc24ndAotICAgZm91bmQsIGl0IGNvbXBpbGVzIC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBpbnN0ZWFkLgotCi0gICBDdXJyZW50bHksIHN1YndjcmV2LmV4ZSBpcyBmb3VuZCBmcm9tIHRoZSByZWdpc3RyeSBlbnRyaWVzCi0gICBvZiBUb3J0b2lzZVNWTi4KLQotICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHBsYWNlIGdldGJ1aWxkaW5mby5vIGludG8gdGhlIHByb3BlcgotICAgYmluYXJ5IGRpcmVjdG9yeS4gVGhpcyBpc24ndCBuZWNlc3NhcnksIGFzIHRoaXMgdG9vbCBpcwotICAgaW52b2tlZCBhcyBhIHByZS1saW5rIHN0ZXAgZm9yIHB5dGhvbmNvcmUsIHNvIHRoYXQgb3ZlcndyaXRlcwotICAgYW55IHByZXZpb3VzIGdldGJ1aWxkaW5mby5vLgotCi0gICBIb3dldmVyLCBpZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQKLSAgIGFzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGVyZSBhbnkgZ2V0YnVpbGRpbmZvMi5jIGFuZAotICAgZ2V0YnVpbGRpbmZvLm8gZmlsZXMgYXJlIHB1dC4gIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlCi0gICBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgYnVpbHQgaW4gcGFyYWxsZWwsIHRvIGF2b2lkIHRoZW0KLSAgIHRyYW1wbGluZyBlYWNoIG90aGVyJ3MgZmlsZXMuCi0KLSovCi0KLWludCBtYWtlX2J1aWxkaW5mbzIoY29uc3QgY2hhciAqdG1wcGF0aCkKLXsKLSAgICBzdHJ1Y3QgX3N0YXQgc3Q7Ci0gICAgSEtFWSBoVG9ydG9pc2U7Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFKzFdOwotICAgIERXT1JEIHR5cGUsIHNpemU7Ci0gICAgaWYgKF9zdGF0KCIuc3ZuIiwgJnN0KSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIC8qIEFsbG93IHN1cHByZXNzaW9uIG9mIHN1YndjcmV2LmV4ZSBpbnZvY2F0aW9uIGlmIGEgbm9fc3Vid2NyZXYgZmlsZSBpcyBwcmVzZW50LiAqLwotICAgIGlmIChfc3RhdCgibm9fc3Vid2NyZXYiLCAmc3QpID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChSZWdPcGVuS2V5KEhLRVlfTE9DQUxfTUFDSElORSwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MgJiYKLSAgICAgICAgUmVnT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIC8qIFRvcnRvaXNlIG5vdCBpbnN0YWxsZWQgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29tbWFuZFswXSA9ICciJzsgIC8qIHF1b3RlIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlICovCi0gICAgc2l6ZSA9IHNpemVvZihjb21tYW5kKSAtIDE7Ci0gICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoVG9ydG9pc2UsICJEaXJlY3RvcnkiLCAwLCAmdHlwZSwgY29tbWFuZCsxLCAmc2l6ZSkgIT0gRVJST1JfU1VDQ0VTUyB8fAotICAgICAgICB0eXBlICE9IFJFR19TWikKLSAgICAgICAgLyogUmVnaXN0cnkgY29ycnVwdGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiYmluXFxzdWJ3Y3Jldi5leGUiKTsKLSAgICBpZiAoX3N0YXQoY29tbWFuZCsxLCAmc3QpIDwgMCkKLSAgICAgICAgLyogc3Vid2NyZXYuZXhlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIgLi4gLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIFwiIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOyAvKiBxdW90ZWQgdG1wcGF0aCAqLwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICBpZiAoc3lzdGVtKGNvbW1hbmQpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLWNvbnN0IGNoYXIgREVMSU1TW10gPSB7ICIgXG4iIH07Ci0KLWludCBnZXRfbWVyY3VyaWFsX2luZm8oY2hhciAqIGhnYnJhbmNoLCBjaGFyICogaGd0YWcsIGNoYXIgKiBoZ3JldiwgaW50IHNpemUpCi17Ci0gICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgY2hhciBmaWxlbmFtZVtDTURfU0laRV07Ci0gICAgY2hhciBjbWRsaW5lW0NNRF9TSVpFXTsKLQotICAgIHN0cmNweV9zKGZpbGVuYW1lLCBDTURfU0laRSwgInRtcFhYWFhYWCIpOwotICAgIGlmIChfbWt0ZW1wX3MoZmlsZW5hbWUsIENNRF9TSVpFKSA9PSAwKSB7Ci0gICAgICAgIGludCByYzsKLQotICAgICAgICBzdHJjcHlfcyhjbWRsaW5lLCBDTURfU0laRSwgImhnIGlkIC1iaXQgPiAiKTsKLSAgICAgICAgc3RyY2F0X3MoY21kbGluZSwgQ01EX1NJWkUsIGZpbGVuYW1lKTsKLSAgICAgICAgcmMgPSBzeXN0ZW0oY21kbGluZSk7Ci0gICAgICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgICAgICBGSUxFICogZnA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChmb3Blbl9zKCZmcCwgZmlsZW5hbWUsICJyIikgPT0gMCkgewotICAgICAgICAgICAgICAgIGNoYXIgKiBjcCA9IGZnZXRzKGNtZGxpbmUsIENNRF9TSVpFLCBmcCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY3ApIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqIGNvbnRleHQgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBjaGFyICogdHAgPSBzdHJ0b2tfcyhjcCwgREVMSU1TLCAmY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdyZXYsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ2JyYW5jaCwgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhndGFnLCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgX3VubGluayhmaWxlbmFtZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKmFyZ3ZbXSkKLXsKLSAgICBjaGFyIGNvbW1hbmRbQ01EX1NJWkVdID0gImNsLmV4ZSAtYyAtRF9XSU4zMiAtRFVTRV9ETF9FWFBPUlQgLURfV0lORE9XUyAtRFdJTjMyIC1EX1dJTkRMTCAiOwotICAgIGNoYXIgdG1wcGF0aFtDTURfU0laRV0gPSAiIjsKLSAgICBpbnQgZG9fdW5saW5rLCByZXN1bHQ7Ci0gICAgY2hhciAqdG1wZGlyID0gTlVMTDsKLSAgICBpZiAoYXJnYyA8PSAyIHx8IGFyZ2MgPiAzKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAibWFrZV9idWlsZGluZm8gJChDb25maWd1cmF0aW9uTmFtZSkgW3RtcGRpcl1cbiIpOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlIikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJEZWJ1ZyIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItRF9ERUJVRyAtTURkICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VJdGFuaXVtIikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAvVVNFQ0w6TVNfSVRBTklVTSAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlQU1ENjQiKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAvVVNFQ0w6TVNfT1BURVJPTiAiKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiAlc1xuIiwgYXJndlsxXSk7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgfQotICAgIGlmIChhcmdjID4gMikgewotICAgICAgICB0bXBkaXIgPSBhcmd2WzJdOwotICAgICAgICBzdHJjYXRfcyh0bXBwYXRoLCBfY291bnRvZih0bXBwYXRoKSwgdG1wZGlyKTsKLSAgICAgICAgLyogSGFjayBmaXggZm9yIGJhZCBjb21tYW5kIGxpbmU6ICBJZiB0aGUgY29tbWFuZCBpcyBpc3N1ZWQgbGlrZSB0aGlzOgotICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSIKLSAgICAgICAgICogd2Ugd2lsbCBnZXQgYSB0cmFpbGluZyBxdW90ZSBiZWNhdXNlIEludERpciBlbmRzIHdpdGggYSBiYWNrc2xhc2ggdGhhdCB0aGVuCi0gICAgICAgICAqIGVzY2FwZXMgdGhlIGZpbmFsICIuICBUbyBzaW1wbGlmeSB0aGUgbGlmZSBmb3IgZGV2ZWxvcGVycywgY2F0Y2ggdGhhdCBwcm9ibGVtCi0gICAgICAgICAqIGhlcmUgYnkgY3V0dGluZyBpdCBvZmYuCi0gICAgICAgICAqIFRoZSBwcm9wZXIgY29tbWFuZCBsaW5lLCBidHcgaXM6Ci0gICAgICAgICAqICQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpXCIKLSAgICAgICAgICogSG9vcmF5IGZvciBjb21tYW5kIGxpbmUgcGFyc2luZyBvbiB3aW5kb3dzLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHN0cmxlbih0bXBwYXRoKSA+IDAgJiYgdG1wcGF0aFtzdHJsZW4odG1wcGF0aCktMV0gPT0gJyInKQotICAgICAgICAgICAgdG1wcGF0aFtzdHJsZW4odG1wcGF0aCktMV0gPSAnXDAnOwotICAgICAgICBzdHJjYXRfcyh0bXBwYXRoLCBfY291bnRvZih0bXBwYXRoKSwgIlxcIik7Ci0gICAgfQotCi0gICAgaWYgKChkb191bmxpbmsgPSBtYWtlX2J1aWxkaW5mbzIodG1wcGF0aCkpKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIC1EU1VCV0NSRVYgIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBjaGFyIGhndGFnW0NNRF9TSVpFXTsKLSAgICAgICAgY2hhciBoZ2JyYW5jaFtDTURfU0laRV07Ci0gICAgICAgIGNoYXIgaGdyZXZbQ01EX1NJWkVdOwotCi0gICAgICAgIGlmIChnZXRfbWVyY3VyaWFsX2luZm8oaGdicmFuY2gsIGhndGFnLCBoZ3JldiwgQ01EX1NJWkUpKSB7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1ESEdCUkFOQ0g9XFxcIiIpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhnYnJhbmNoKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOwotCi0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVEFHPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3RhZyk7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKLQotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1ZFUlNJT049XFxcIiIpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhncmV2KTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiAiKTsKLSAgICAgICAgfQotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOwotICAgIH0KLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcSW5jbHVkZSAtSS4uXFxQQyIpOwotICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOwotICAgIHJlc3VsdCA9IHN5c3RlbShjb21tYW5kKTsKLSAgICBpZiAoZG9fdW5saW5rKSB7Ci0gICAgICAgIGNvbW1hbmRbMF0gPSAnXDAnOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOwotICAgICAgICBfdW5saW5rKGNvbW1hbmQpOwotICAgIH0KLSAgICBpZiAocmVzdWx0IDwgMCkKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvaiBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVlN2Y5MS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPm1ha2VfYnVpbGRpbmZvPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpciltYWtlX2J1aWxkaW5mby5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLmMiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qLmZpbHRlcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMjdmOGMuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8uYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvaiBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2Y1MDdiLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjAwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX3ZlcnNpb25pbmZvPC9Sb290TmFtZXNwYWNlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaDslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgICAgPElucHV0cz4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9JbnB1dHM+Ci0gICAgPC9DdXN0b21CdWlsZFN0ZXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50IC8+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaAotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgPC9DdXN0b21CdWlsZFN0ZXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9uX250LmgKLTwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaAotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxJbnB1dHM+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9JbnB1dHM+Ci0gICAgPC9DdXN0b21CdWlsZFN0ZXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaDslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udF9kLmgKLTwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmMwNDM0Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlNDE4MDk1NC1jM2E1LTQ3NDktYjlhNC0zMWI4MDRlZTRmYTh9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlZjdhYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwpAQCAtMCwwICsxLDc1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxJbnREaXI+JChvcGVuc3NsRGlyKXRtcFwkKEFyY2hOYW1lKV8kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChvcGVuc3NsRGlyKXRtcFwkKEFyY2hOYW1lKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJdGVtR3JvdXA+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IkRTT19XSU4zMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iV0lOMzJfTEVBTl9BTkRfTUVBTiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iTF9FTkRJQU4iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfVEhSRUFEUyIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9TWVNOQU1FX1dJTjMyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0lBMzJfU1NFMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9DUFVJRF9PQkoiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTFfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEEyNTZfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEE1MTJfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJNRDVfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJBRVNfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJWUEFFU19BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IldISVJMUE9PTF9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IkdIQVNIX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19JREVBIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX1JDNSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19NRDIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fTURDMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19LUkI1IiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0pQQUtFIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX1JEUkFORCIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19SU0FYIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0RZTkFNSUNfRU5HSU5FIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9HRjJtIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9QQVJUX1dPUkRTIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9NT05UIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJSTUQxNjBfQVNNIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJlcHJvY2Vzc29yRGVmaW5pdGlvbkxpc3Q+QChQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L19QcmVwcm9jZXNzb3JEZWZpbml0aW9uTGlzdD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDwhLS0gU3VwcHJlc3MgNjQtYml0IHRydW5jYXRpb24gd2FybmluZ3MgLSB0aGV5IGFyZW4ndCBvdXJzIHRvIHdvcnJ5IGFib3V0IC0tPgorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQyNDQ7NDI2NzwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpOyQob3BlbnNzbERpcilpbmNsdWRlOyQob3BlbnNzbERpciljcnlwdG87JChvcGVuc3NsRGlyKWNyeXB0b1xhc24xOyQob3BlbnNzbERpciljcnlwdG9cZXZwOyQob3BlbnNzbERpciljcnlwdG9cbW9kZXM8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChfUHJlcHJvY2Vzc29yRGVmaW5pdGlvbkxpc3QpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICAKKyAgPFRhcmdldCBOYW1lPSJGaW5kTmFzbSI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8bmFzbSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICdXaW4zMiciPm5hc20uZXhlIC1mIHdpbjMyPC9uYXNtPgorICAgICAgPG5hc20gQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+bmFzbS5leGUgLWYgd2luNjQgLURORUFSIC1PeCAtZzwvbmFzbT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iQnVpbGROYXNtRmlsZXMiIEJlZm9yZVRhcmdldHM9IlByZUJ1aWxkRXZlbnQiIERlcGVuZHNPblRhcmdldHM9IlByZXBhcmVGb3JCdWlsZDtGaW5kTmFzbSIgSW5wdXRzPSJAKE5hc21Db21waWxlKSIgT3V0cHV0cz0iQChOYXNtQ29tcGlsZS0+JyQoSW50RGlyKSUoRmlsZW5hbWUpLm9iaicpIj4KKyAgICA8RXhlYyBDb21tYW5kPSdzZXRsb2NhbAorc2V0IFBBVEg9JChuYXNtRGlyKTslUEFUSCUKKyQobmFzbSkgLW8gIiQoSW50RGlyKSUoTmFzbUNvbXBpbGUuRmlsZW5hbWUpLm9iaiIgIiUoTmFzbUNvbXBpbGUuRnVsbFBhdGgpIicgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPExpbmsgSW5jbHVkZT0iJChJbnREaXIpJShOYXNtQ29tcGlsZS5GaWxlbmFtZSkub2JqIiAvPgorICAgICAgPExpYiBJbmNsdWRlPSIkKEludERpciklKE5hc21Db21waWxlLkZpbGVuYW1lKS5vYmoiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5wcm9qIGIvUENidWlsZC9wY2J1aWxkLnByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEzODMxZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCkBAIC0wLDAgKzEsODQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57Q0M5QjkzQTItNDM5RC00MDU4LTlEMjktNkRDRjQzNzc0NDA1fTwvUHJvamVjdEd1aWQ+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDxJbmNsdWRlRXh0ZW5zaW9ucyBDb25kaXRpb249IickKEluY2x1ZGVFeHRlbnNpb25zKScgPT0gJyciPnRydWU8L0luY2x1ZGVFeHRlbnNpb25zPgorICAgIDxJbmNsdWRlVGVzdHMgQ29uZGl0aW9uPSInJChJbmNsdWRlVGVzdCknID09ICcnIj50cnVlPC9JbmNsdWRlVGVzdHM+CisgICAgPEluY2x1ZGVTU0wgQ29uZGl0aW9uPSInJChJbmNsdWRlU1NMKScgPT0gJyciPnRydWU8L0luY2x1ZGVTU0w+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8UHJvamVjdHM+CisgICAgICA8UGxhdGZvcm0+JChQbGF0Zm9ybSk8L1BsYXRmb3JtPgorICAgICAgPENvbmZpZ3VyYXRpb24+JChDb25maWd1cmF0aW9uKTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQcm9wZXJ0aWVzPjwvUHJvcGVydGllcz4KKyAgICAgIDxCdWlsZFRhcmdldD5CdWlsZDwvQnVpbGRUYXJnZXQ+CisgICAgICA8Q2xlYW5UYXJnZXQ+Q2xlYW48L0NsZWFuVGFyZ2V0PgorICAgICAgPENsZWFuQWxsVGFyZ2V0PkNsZWFuQWxsPC9DbGVhbkFsbFRhcmdldD4KKyAgICAgIDxCdWlsZEluUGFyYWxsZWw+dHJ1ZTwvQnVpbGRJblBhcmFsbGVsPgorICAgIDwvUHJvamVjdHM+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8IS0tIHB5dGhvblhZLmRsbCAtLT4KKyAgICA8IS0tCisgICAgUGFyYWxsZWwgYnVpbGQgaXMgZXhwbGljaXRseSBkaXNhYmxlZCBmb3IgdGhpcyBwcm9qZWN0IGJlY2F1c2UgaXQKKyAgICBjYXVzZXMgbWFueSBjb25mbGljdHMgYmV0d2VlbiBweXRob25jb3JlIGFuZCBwcm9qZWN0cyB0aGF0IGRlcGVuZAorICAgIGluIHB5dGhvbmNvcmUuIE9uY2UgdGhlIGNvcmUgRExMIGhhcyBiZWVuIGJ1aWx0LCBzdWJzZXF1ZW50CisgICAgcHJvamVjdHMgd2lsbCBiZSBidWlsdCBpbiBwYXJhbGxlbC4KKyAgICAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxCdWlsZEluUGFyYWxsZWw+ZmFsc2U8L0J1aWxkSW5QYXJhbGxlbD4KKyAgICA8L1Byb2plY3RzPgorICAgIDwhLS0gcHl0aG9uW3ddLmV4ZSAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0icHl0aG9uLnZjeHByb2o7cHl0aG9udy52Y3hwcm9qIiAvPgorICAgIDwhLS0gcHl0aG9uMy5kbGwgLS0+CisgICAgPFByb2plY3RzIEluY2x1ZGU9InB5dGhvbjNkbGwudmN4cHJvaiIgLz4KKyAgICA8IS0tIHB5W3ddLmV4ZSAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0icHlsYXVuY2hlci52Y3hwcm9qO3B5d2xhdW5jaGVyLnZjeHByb2oiIC8+CisgICAgPCEtLSBfZnJlZXplX2ltcG9ydGxpYiAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0iX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiIgLz4KKyAgICA8IS0tIEV4dGVuc2lvbiBtb2R1bGVzIC0tPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9iejI7X2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X2x6bWE7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO19zcWxpdGUzO190a2ludGVyO3RpeDtweWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZCIgLz4KKyAgICA8IS0tIF9zc2wgd2lsbCBidWlsZCBfc29ja2V0IGFzIHdlbGwsIHdoaWNoIG1heSBjYXVzZSBjb25mbGljdHMgaW4gcGFyYWxsZWwgYnVpbGRzIC0tPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9zb2NrZXQiIENvbmRpdGlvbj0iISQoSW5jbHVkZVNTTCkiIC8+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX3NzbDtfaGFzaGxpYiIgQ29uZGl0aW9uPSIkKEluY2x1ZGVTU0wpIiAvPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKEV4dGVuc2lvbk1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZW5zaW9ucykiIC8+CisgICAgPCEtLSBUZXN0IG1vZHVsZXMgLS0+CisgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZSIgLz4KKyAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0ieHhsaW1pdGVkIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnUmVsZWFzZSciIC8+CisgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoVGVzdE1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlVGVzdHMpIj4KKyAgICAgIDwhLS0gRGlzYWJsZSBwYXJhbGxlbCBidWlsZCBmb3IgdGVzdCBtb2R1bGVzIC0tPgorICAgICAgPEJ1aWxkSW5QYXJhbGxlbD5mYWxzZTwvQnVpbGRJblBhcmFsbGVsPgorICAgIDwvUHJvamVjdHM+CisgIDwvSXRlbUdyb3VwPgorCisgIDxUYXJnZXQgTmFtZT0iQnVpbGQiPgorICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFByb2plY3RzKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSUoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JShQbGF0Zm9ybSk7JShQcm9wZXJ0aWVzKSIKKyAgICAgICAgICAgICBCdWlsZEluUGFyYWxsZWw9IiUoQnVpbGRJblBhcmFsbGVsKSIKKyAgICAgICAgICAgICBUYXJnZXRzPSIlKEJ1aWxkVGFyZ2V0KSIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJDbGVhbiI+CisgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUHJvamVjdHMpIgorICAgICAgICAgICAgIFByb3BlcnRpZXM9IkNvbmZpZ3VyYXRpb249JShDb25maWd1cmF0aW9uKTtQbGF0Zm9ybT0lKFBsYXRmb3JtKTslKFByb3BlcnRpZXMpIgorICAgICAgICAgICAgIEJ1aWxkSW5QYXJhbGxlbD0iJShCdWlsZEluUGFyYWxsZWwpIgorICAgICAgICAgICAgIFN0b3BPbkZpcnN0RmFpbHVyZT0iZmFsc2UiCisgICAgICAgICAgICAgQ29uZGl0aW9uPSIlKENsZWFuVGFyZ2V0KSAhPSAnJyIKKyAgICAgICAgICAgICBUYXJnZXRzPSIlKENsZWFuVGFyZ2V0KSIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUHJvamVjdHMpIgorICAgICAgICAgICAgIFByb3BlcnRpZXM9IkNvbmZpZ3VyYXRpb249JShDb25maWd1cmF0aW9uKTtQbGF0Zm9ybT0lKFBsYXRmb3JtKTslKFByb3BlcnRpZXMpIgorICAgICAgICAgICAgIEJ1aWxkSW5QYXJhbGxlbD0iJShCdWlsZEluUGFyYWxsZWwpIgorICAgICAgICAgICAgIFN0b3BPbkZpcnN0RmFpbHVyZT0iZmFsc2UiCisgICAgICAgICAgICAgQ29uZGl0aW9uPSIlKENsZWFuQWxsVGFyZ2V0KSAhPSAnJyIKKyAgICAgICAgICAgICBUYXJnZXRzPSIlKENsZWFuQWxsVGFyZ2V0KSIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJSZWJ1aWxkIiBEZXBlbmRzT25UYXJnZXRzPSJDbGVhbjtCdWlsZCIgLz4KKyAgPFRhcmdldCBOYW1lPSJSZWJ1aWxkQWxsIiBEZXBlbmRzT25UYXJnZXRzPSJDbGVhbkFsbDtCdWlsZCIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQuc2xuIGIvUENidWlsZC9wY2J1aWxkLnNsbgppbmRleCBhMzQ2ZTEwLi43NjZhODcwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQuc2xuCisrKyBiL1BDYnVpbGQvcGNidWlsZC5zbG4KQEAgLTEsNSArMSw3IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDEwDQorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDANCisjIFZpc3VhbCBTdHVkaW8gMTQNCitWaXN1YWxTdHVkaW9WZXJzaW9uID0gMTQuMC4yMjgyMy4xDQorTWluaW11bVZpc3VhbFN0dWRpb1ZlcnNpb24gPSAxMC4wLjQwMjE5LjENCiBQcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KIAlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QNCiAJCS4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQpAQCAtOCwxNCArMTAsMTAgQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmN4cHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmN4cHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmN4cHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3hwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLUVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjeHByb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCkBAIC01MCw3ICs0OCw3IEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmN4cHJvaiIsICJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmN4cHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiLi5cUENcYmRpc3Rfd2luaW5zdFxiZGlzdF93aW5pbnN0LnZjeHByb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmN4cHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCiBFbmRQcm9qZWN0DQpAQCAtNTgsMTAgKzU2LDYgQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmN4cHJvaiIsICJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3hwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLUVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3hwcm9qIiwgIns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInh4bGltaXRlZCIsICJ4eGxpbWl0ZWQudmN4cHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCkBAIC03OCw2ICs3MiwxOCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RlbWJlZCIsICJfdGVzdGVtYmVkLnZjeHByb2oiLCAiezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0iDQogRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RtdWx0aXBoYXNlIiwgIl90ZXN0bXVsdGlwaGFzZS52Y3hwcm9qIiwgInsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRjbCIsICJ0Y2wudmN4cHJvaiIsICJ7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0aXgiLCAidGl4LnZjeHByb2oiLCAie0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGsiLCAidGsudmN4cHJvaiIsICJ7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJlYXkiLCAibGliZWF5LnZjeHByb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsZWF5IiwgInNzbGVheS52Y3hwcm9qIiwgInsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9Ig0KK0VuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCiAJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCkBAIC0xMDYsMjIgKzExMiw2IEBACiAJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KQEAgLTE0MiwzNCArMTMyLDE4IEBACiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KQEAgLTIyMiwxNCArMTk2LDE0IEBACiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTMzNCwxNCArMzA4LDE0IEBACiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTQ0Miw3ICs0MTYsNyBAQAogCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTQ5OCw0OSArNDcyLDE4IEBACiAJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQpAQCAtNTYzLDE0ICs1MDYsMTQgQEAKIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQpAQCAtNTc5LDM0ICs1MjIsMzQgQEAKIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQpAQCAtNjE0LDcgKzU1Nyw5IEBACiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtFQjZFNjlERC0wNEJGLTQ1NDMtOUI5Mi00OUZBQUJDRUFDMkV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7RUI2RTY5REQtMDRCRi00NTQzLTlCOTItNDlGQUFCQ0VBQzJFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtFQjZFNjlERC0wNEJGLTQ1NDMtOUI5Mi00OUZBQUJDRUFDMkV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC02NDUsNiArNTkwLDEwMCBAQAogCQl7NkRBQzY2RDktRTcwMy00NjI0LUJFMDMtNDkxMTJBQjVBQTYyfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7NkRBQzY2RDktRTcwMy00NjI0LUJFMDMtNDkxMTJBQjVBQTYyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzIGIvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ODQ5OTUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KLSAgICA8T3V0RGlyUEdJPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSktcGdpXDwvT3V0RGlyUEdJPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyPiQoT3V0RGlyUEdJKVw8L091dERpcj4KLSAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxGYXZvclNpemVPclNwZWVkPlNpemU8L0Zhdm9yU2l6ZU9yU3BlZWQ+Ci0gICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+Ci0gICAgICA8RW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz5mYWxzZTwvRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz4KLSAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4KLSAgICAgIDwvRXhjZXB0aW9uSGFuZGxpbmc+Ci0gICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbj5QR0luc3RydW1lbnQ8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+Ci0gICAgICA8UHJvZmlsZUd1aWRlZERhdGFiYXNlPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkPC9Qcm9maWxlR3VpZGVkRGF0YWJhc2U+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4kKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iT3V0RGlyUEdJIj4KLSAgICAgIDxWYWx1ZT4kKE91dERpclBHSSk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BndXBkYXRlLnByb3BzIGIvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc3NWEwMi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3BndXBkYXRlLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXHBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdvXDwvT3V0RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4KLSAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uPlBHVXBkYXRlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgotICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDhhOWYzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKQEAgLTAsMCArMSwxMiBAQAorQGVjaG8gb2ZmDQoraWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKA0KKyAgaWYgJTEgRVFVIERlYnVnICgNCisgICAgc2hpZnQNCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICApIEVMU0UgKA0KKyAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzUuZGxsIGV4aXQgMQ0KKyAgKQ0KKykNCislSE9TVF9QWVRIT04lIHByZXBhcmVfc3NsLnB5ICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5weSBiL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxZTUyNgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkKQEAgLTAsMCArMSwyNDcgQEAKKyMgU2NyaXB0IGZvciBwcmVwYXJpbmcgT3BlblNTTCBmb3IgYnVpbGRpbmcgb24gV2luZG93cy4KKyMgVXNlcyBQZXJsIHRvIGNyZWF0ZSBubWFrZSBtYWtlZmlsZXMgYW5kIG90aGVyd2lzZSBwcmVwYXJlIHRoZSB3YXkKKyMgZm9yIGJ1aWxkaW5nIG9uIDMyIG9yIDY0IGJpdCBwbGF0Zm9ybXMuCisKKyMgU2NyaXB0IG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTWFyayBIYW1tb25kLgorIyBNYWpvciByZXZpc2lvbnMgYnk6CisjICAgTWFydGluIHYuIEzDtndpcworIyAgIENocmlzdGlhbiBIZWltZXMKKyMgICBaYWNoYXJ5IFdhcmUKKworIyBUSEVPUkVUSUNBTExZLCB5b3UgY2FuOgorIyAqIFVucGFjayB0aGUgbGF0ZXN0IE9wZW5TU0wgcmVsZWFzZSB3aGVyZSAkKG9wZW5zc2xEaXIpIGluCisjICAgUENidWlsZFxweXByb2plY3QucHJvcHMgZXhwZWN0cyBpdCB0byBiZS4KKyMgKiBJbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBpcyBzb21ld2hlcmUgb24geW91ciBwYXRoLgorIyAqIFJ1biB0aGlzIHNjcmlwdCB3aXRoIHRoZSBPcGVuU1NMIHNvdXJjZSBkaXIgYXMgdGhlIG9ubHkgYXJndW1lbnQuCisjCisjIGl0IHNob3VsZCBjb25maWd1cmUgT3BlblNTTCBzdWNoIHRoYXQgaXQgaXMgcmVhZHkgdG8gYmUgYnVpbHQgYnkKKyMgc3NsLnZjeHByb2ogb24gMzIgb3IgNjQgYml0IHBsYXRmb3Jtcy4KKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCisKKyMgRmluZCBhbGwgImZvby5leGUiIGZpbGVzIG9uIHRoZSBQQVRILgorZGVmIGZpbmRfYWxsX29uX3BhdGgoZmlsZW5hbWUsIGV4dHJhcyA9IE5vbmUpOgorICAgIGVudHJpZXMgPSBvcy5lbnZpcm9uWyJQQVRIIl0uc3BsaXQob3MucGF0aHNlcCkKKyAgICByZXQgPSBbXQorICAgIGZvciBwIGluIGVudHJpZXM6CisgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKKyAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCisgICAgaWYgZXh0cmFzOgorICAgICAgICBmb3IgcCBpbiBleHRyYXM6CisgICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCisgICAgcmV0dXJuIHJldAorCisjIEZpbmQgYSBzdWl0YWJsZSBQZXJsIGluc3RhbGxhdGlvbiBmb3IgT3BlblNTTC4KKyMgY3lnd2luIHBlcmwgZG9lcyAqbm90KiB3b3JrLiAgQWN0aXZlUGVybCBkb2VzLgorIyBCZWluZyBhIFBlcmwgZHVtbXksIHRoZSBzaW1wbGVzdCB3YXkgSSBjYW4gY2hlY2sgaXMgaWYgdGhlICJXaW4zMiIgcGFja2FnZQorIyBpcyBhdmFpbGFibGUuCitkZWYgZmluZF93b3JraW5nX3BlcmwocGVybHMpOgorICAgIGZvciBwZXJsIGluIHBlcmxzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbcGVybCwgIi1lIiwgInVzZSBXaW4zMjsiXSkKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBwZXJsCisKKyAgICBpZiBwZXJsczoKKyAgICAgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZDoiKQorICAgICAgICBmb3IgcCBpbiBwZXJsczoKKyAgICAgICAgICAgIHByaW50KCIgIiwgcCkKKyAgICAgICAgcHJpbnQoIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIk5PIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQgb24gdGhpcyBtYWNoaW5lIGF0IGFsbCEiKQorICAgIHByaW50KCIgUGxlYXNlIGluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGFwcGVhcnMgb24geW91ciBwYXRoIikKKworZGVmIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpOgorICAgICIiIkNyZWF0ZSBhbmQgZml4IG1ha2VmaWxlIGZvciA2NGJpdAorCisgICAgUmVwbGFjZSAzMiB3aXRoIDY0Yml0IGRpcmVjdG9yaWVzCisgICAgIiIiCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG0zMik6CisgICAgICAgIHJldHVybgorICAgIHdpdGggb3BlbihtMzIpIGFzIGZpbjoKKyAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPXRtcDMyIiwgIj10bXA2NCIpCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPW91dDMyIiwgIj1vdXQ2NCIpCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPWluYzMyIiwgIj1pbmM2NCIpCisgICAgICAgICAgICAgICAgIyBmb3JjZSA2NCBiaXQgbWFjaGluZQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk1LTElCPWxpYiIsICJNS0xJQj1saWIgL01BQ0hJTkU6WDY0IikKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJMRkxBR1M9IiwgIkxGTEFHUz0vTUFDSElORTpYNjQgIikKKyAgICAgICAgICAgICAgICAjIGRvbid0IGxpbmsgYWdhaW5zdCB0aGUgbGliIG9uIDY0Yml0IHN5c3RlbXMKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJidWZmZXJvdmVyZmxvd3UubGliIiwgIiIpCisgICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorICAgIG9zLnVubGluayhtMzIpCisKK2RlZiBjcmVhdGVfYXNtcyhtYWtlZmlsZSk6CisgICAgI2NyZWF0ZSBhIGN1c3RvbSBtYWtlZmlsZSBvdXQgb2YgdGhlIHByb3ZpZGVkIG9uZQorICAgIGFzbV9tYWtlZmlsZSA9IG9zLnBhdGguc3BsaXRleHQobWFrZWZpbGUpWzBdICsgJy5hc20ubWFrJworICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgorICAgICAgICB3aXRoIG9wZW4oYXNtX21ha2VmaWxlLCAndycpIGFzIGZvdXQ6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICAgICAgIyBLZWVwIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGluc3RhbGwgdGFyZ2V0IChpdCdzIGNvbnZlbmllbnQpCisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdpbnN0YWxsOiBhbGwnKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisgICAgICAgICAgICBhc21zID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICBpZiAnLmFzbScgaW4gbGluZSBhbmQgbGluZS5zdHJpcCgpLmVuZHN3aXRoKCcucGwnKToKKyAgICAgICAgICAgICAgICAgICAgYXNtcy5hcHBlbmQobGluZS5zcGxpdCgnOicpWzBdKQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBsaW5lLnN0cmlwKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbmV4dChmaW4pCisgICAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUoJ1xuJykKKworICAgICAgICAgICAgZm91dC53cml0ZSgnYXNtczogJChUTVBfRCkgJykKKyAgICAgICAgICAgIGZvdXQud3JpdGUoJyAnLmpvaW4oYXNtcykpCisgICAgICAgICAgICBmb3V0LndyaXRlKCdcbicpCisKKyAgICBvcy5zeXN0ZW0oJ25tYWtlIC9mIHt9IFBFUkw9cGVybCBhc21zJy5mb3JtYXQoYXNtX21ha2VmaWxlKSkKKyAgICBvcy51bmxpbmsoYXNtX21ha2VmaWxlKQorCisKKworZGVmIGZpeF9tYWtlZmlsZShtYWtlZmlsZSk6CisgICAgIiIiRml4IHNvbWUgc3R1ZmYgaW4gYWxsIG1ha2VmaWxlcworICAgICIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6CisgICAgICAgIHJldHVybgorICAgIGNvcHlfaWZfZGlmZmVyZW50ID0gcickKFBFUkwpICQoU1JDX0QpXHV0aWxcY29weS1pZi1kaWZmZXJlbnQucGwnCisgICAgd2l0aCBvcGVuKG1ha2VmaWxlKSBhcyBmaW46CisgICAgICAgIGxpbmVzID0gZmluLnJlYWRsaW5lcygpCisgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6CisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQRVJMPSIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkNQPSIpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAiQ1A9Y29weVxuIgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJNS0RJUj0iKToKKyAgICAgICAgICAgICAgICBsaW5lID0gIk1LRElSPW1rZGlyXG4iCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkNGTEFHPSIpOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBmb3IgYWxnbyBpbiAoIlJDNSIsICJNREMyIiwgIklERUEiKToKKyAgICAgICAgICAgICAgICAgICAgbm9hbGdvID0gIiAtRE9QRU5TU0xfTk9fJXMiICUgYWxnbworICAgICAgICAgICAgICAgICAgICBpZiBub2FsZ28gbm90IGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArIG5vYWxnbworICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgJ1xuJworICAgICAgICAgICAgaWYgY29weV9pZl9kaWZmZXJlbnQgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKGNvcHlfaWZfZGlmZmVyZW50LCAnY29weSAvWScpCisgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisKK2RlZiBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KToKKyAgICBwcmludCgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQorICAgIG9zLnN5c3RlbSgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQorICAgIHByaW50KGRvX3NjcmlwdCkKKyAgICBvcy5zeXN0ZW0oZG9fc2NyaXB0KQorCitkZWYgY21wKGYxLCBmMik6CisgICAgYnVmc2l6ZSA9IDEwMjQgKiA4CisgICAgd2l0aCBvcGVuKGYxLCAncmInKSBhcyBmcDEsIG9wZW4oZjIsICdyYicpIGFzIGZwMjoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGIxID0gZnAxLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgICAgIGIyID0gZnAyLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgICAgIGlmIGIxICE9IGIyOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGIxOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKK2RlZiBjb3B5KHNyYywgZHN0KToKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShkc3QpIGFuZCBjbXAoc3JjLCBkc3QpOgorICAgICAgICByZXR1cm4KKyAgICBzaHV0aWwuY29weShzcmMsIGRzdCkKKworZGVmIHByZXAoYXJjaCk6CisgICAgaWYgYXJjaCA9PSAieDg2IjoKKyAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjMyIgorICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX25hc20iCisgICAgICAgIG1ha2VmaWxlPSJtc1xcbnQubWFrIgorICAgICAgICBtMzIgPSBtYWtlZmlsZQorICAgICAgICBkaXJzdWZmaXggPSAiMzIiCisgICAgZWxpZiBhcmNoID09ICJhbWQ2NCI6CisgICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU42NEEiCisgICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fd2luNjRhIgorICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQ2NC5tYWsiCisgICAgICAgIG0zMiA9IG1ha2VmaWxlLnJlcGxhY2UoJzY0JywgJycpCisgICAgICAgIGRpcnN1ZmZpeCA9ICI2NCIKKyAgICAgICAgI29zLmVudmlyb25bIlZTRVhUQ09NUF9VU0VDTCJdID0gIk1TX09QVEVST04iCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pemVkIHBsYXRmb3JtOiAlcycgJSBhcmNoKQorCisgICAgIyByZWJ1aWxkIG1ha2VmaWxlIHdoZW4gd2UgZG8gdGhlIHJvbGUgb3ZlciBmcm9tIDMyIHRvIDY0IGJ1aWxkCisgICAgaWYgYXJjaCA9PSAiYW1kNjQiIGFuZCBvcy5wYXRoLmlzZmlsZShtMzIpIGFuZCBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgorICAgICAgICBvcy51bmxpbmsobTMyKQorCisgICAgIyBJZiB0aGUgc3NsIG1ha2VmaWxlcyBkbyBub3QgZXhpc3QsIHdlIGludm9rZSBQZXJsIHRvIGdlbmVyYXRlIHRoZW0uCisgICAgIyBEdWUgdG8gYSBidWcgaW4gdGhpcyBzY3JpcHQsIHRoZSBtYWtlZmlsZSBzb21ldGltZXMgZW5kZWQgdXAgZW1wdHkKKyAgICAjIEZvcmNlIGEgcmVnZW5lcmF0aW9uIGlmIGl0IGlzLgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKG1ha2VmaWxlKT09MDoKKyAgICAgICAgcHJpbnQoIkNyZWF0aW5nIHRoZSBtYWtlZmlsZXMuLi4iKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCkKKworICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCI6CisgICAgICAgICAgICBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKQorICAgICAgICBmaXhfbWFrZWZpbGUobWFrZWZpbGUpCisgICAgICAgIGNvcHkociJjcnlwdG9cYnVpbGRpbmYuaCIsIHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCkKKyAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZi5oIiwgciJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KG1ha2VmaWxlLCAnYWxyZWFkeSBleGlzdHMhJykKKworICAgIHByaW50KCdjcmVhdGluZyBhc21zLi4uJykKKyAgICBjcmVhdGVfYXNtcyhtYWtlZmlsZSkKKworZGVmIG1haW4oKToKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6CisgICAgICAgIHByaW50KCJOb3QgZW5vdWdoIGFyZ3VtZW50czogZGlyZWN0b3J5IGNvbnRhaW5pbmcgT3BlblNTTCIsCisgICAgICAgICAgICAgICJzb3VyY2VzIG11c3QgYmUgc3VwcGxpZWQiKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDI6CisgICAgICAgIHByaW50KCJUb28gbWFueSBhcmd1bWVudHMgc3VwcGxpZWQsIGFsbCB3ZSBuZWVkIGlzIHRoZSBkaXJlY3RvcnkiLAorICAgICAgICAgICAgICAiY29udGFpbmluZyBPcGVuU1NMIHNvdXJjZXMiKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgc3NsX2RpciA9IHN5cy5hcmd2WzFdCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihzc2xfZGlyKToKKyAgICAgICAgcHJpbnQoc3NsX2RpciwgImlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnkhIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICMgcGVybCBzaG91bGQgYmUgb24gdGhlIHBhdGgsIGJ1dCB3ZSBhbHNvIGxvb2sgaW4gIlxwZXJsIiBhbmQgImM6XFxwZXJsIgorICAgICMgYXMgIndlbGwga25vd24iIGxvY2F0aW9ucworICAgIHBlcmxzID0gZmluZF9hbGxfb25fcGF0aCgicGVybC5leGUiLCBbciJccGVybFxiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsXGJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlxwZXJsNjRcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiQzpccGVybDY0XGJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgcGVybCA9IGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKQorICAgIGlmIHBlcmw6CisgICAgICAgIHByaW50KCJGb3VuZCBhIHdvcmtpbmcgcGVybCBhdCAnJXMnIiAlIChwZXJsLCkpCisgICAgZWxzZToKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworICAgICMgUHV0IG91ciB3b3JraW5nIFBlcmwgYXQgdGhlIGZyb250IG9mIG91ciBwYXRoCisgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MucGF0aC5kaXJuYW1lKHBlcmwpICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoc2VwICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0KKworICAgIG9sZF9jd2QgPSBvcy5nZXRjd2QoKQorICAgIHRyeToKKyAgICAgICAgb3MuY2hkaXIoc3NsX2RpcikKKyAgICAgICAgZm9yIGFyY2ggaW4gWydhbWQ2NCcsICd4ODYnXToKKyAgICAgICAgICAgIHByZXAoYXJjaCkKKyAgICBmaW5hbGx5OgorICAgICAgICBvcy5jaGRpcihvbGRfY3dkKQorCitpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkLnByb3BzIGIvUENidWlsZC9weWQucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2OTk2NmUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9weWQucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgotICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgotICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfQlVJTERfQ09SRV9NT0RVTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgIDwvTGluaz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWRfZC5wcm9wcyBiL1BDYnVpbGQvcHlkX2QucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjMyODguLjAwMDAwMDAKLS0tIGEvUENidWlsZC9weWRfZC5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+Ci0gICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+Ci0gICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+Ci0gICAgPFRhcmdldE5hbWU+JChQcm9qZWN0TmFtZSlfZDwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rIC8+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwIC8+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjeHByb2ogYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagppbmRleCA5NzRmZDNkLi40ZTc2MjFlYyAxMDA2NDQKLS0tIGEvUENidWlsZC9weWV4cGF0LnZjeHByb2oKKysrIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2oKQEAgLTM1LDE4NiArMzUsMzMgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KICAgICA8UHJvamVjdEd1aWQ+e0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnB5ZXhwYXQ8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKU1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvaiBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCmluZGV4IDlmYTkzZGQuLjZhMjE3ODUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCkBAIC0zNywyNTYgKzM3LDMzIEBACiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+ezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnB5bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHlfZDwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxUYXJnZXROYW1lPnB5X2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICA8L0xpbms+CkBAIC0zMDAsMTEgKzc3LDYgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CiAgIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCA3ZTZjN2RkLi4xYWZiZmUxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtMSw0OCArMSw0OSBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcik8L091dERpcj4KLSAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4gIAotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPF9Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+YW1kNjQ8L19Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+Ci0gICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKWFtZDY0XDwvT3V0RGlyPgotICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxWaXN1YWxTdHVkaW9WZXJzaW9uIENvbmRpdGlvbj0iJyQoVmlzdWFsU3R1ZGlvVmVyc2lvbiknID09ICcnIj4xMC4wPC9WaXN1YWxTdHVkaW9WZXJzaW9uPgorICAgIDxPdXREaXI+JChCdWlsZFBhdGgpPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKW9ialwkKEFyY2hOYW1lKV8kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChTb2x1dGlvbkRpcilvYmpcJChBcmNoTmFtZSlcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChUYXJnZXROYW1lKScgPT0gJyciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPiQoVGFyZ2V0TmFtZSkkKFB5RGVidWdFeHQpPC9UYXJnZXROYW1lPgorICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgorICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgorICAgIDxTdXBwb3J0UEdPIENvbmRpdGlvbj0iJyQoU3VwcG9ydFBHTyknID09ICcnIj50cnVlPC9TdXBwb3J0UEdPPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKFN1cHBvcnRTaWduaW5nKScgPT0gJyciPnRydWU8L1N1cHBvcnRTaWduaW5nPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5mYWxzZTwvU3VwcG9ydFNpZ25pbmc+CisgICAgPFN1cHBvcnRTaWduaW5nIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvblR5cGUpJyA9PSAnU3RhdGljTGlicmFyeSciPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPFB5RGxsTmFtZT5weXRob24zNCQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KLSAgICA8UHl0aG9uRXhlPiQoT3V0RGlyKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+Ci0gICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob24kKFB5RGVidWdFeHQpLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KLSAgICA8ZXh0ZXJuYWxzRGlyPi4uXGV4dGVybmFsczwvZXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy44LjMuMTwvc3FsaXRlM0Rpcj4KLSAgICA8YnoyRGlyPiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNjwvYnoyRGlyPgotICAgIDxsem1hRGlyPiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuNTwvbHptYURpcj4KLSAgICA8b3BlbnNzbERpcj4kKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMmE8L29wZW5zc2xEaXI+Ci0gICAgPHRjbHRrRGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azwvdGNsdGtEaXI+Ci0gICAgPHRjbHRrNjREaXI+JChleHRlcm5hbHNEaXIpXHRjbHRrNjQ8L3RjbHRrNjREaXI+Ci0gICAgPHRjbHRrTGliPiQodGNsdGtEaXIpXGxpYlx0Y2w4NnQubGliOyQodGNsdGtEaXIpXGxpYlx0azg2dC5saWI8L3RjbHRrTGliPgotICAgIDx0Y2x0a0xpYkRlYnVnPiQodGNsdGtEaXIpXGxpYlx0Y2w4NnRnLmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NnRnLmxpYjwvdGNsdGtMaWJEZWJ1Zz4KLSAgICA8dGNsdGs2NExpYj4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NnQubGliOyQodGNsdGs2NERpcilcbGliXHRrODZ0LmxpYjwvdGNsdGs2NExpYj4KLSAgICA8dGNsdGs2NExpYkRlYnVnPiQodGNsdGs2NERpcilcbGliXHRjbDg2dGcubGliOyQodGNsdGs2NERpcilcbGliXHRrODZ0Zy5saWI8L3RjbHRrNjRMaWJEZWJ1Zz4KKworICA8UHJvcGVydHlHcm91cD4KKyAgICA8X0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj5OREVCVUc7PC9fRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5fREVCVUc7PC9fRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPl9XSU4zMjs8L19QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24+CisgICAgPF9QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24gQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+X1dJTjY0O19NX1g2NDs8L19QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24+CisgICAgPF9QeWRQcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChUYXJnZXRFeHQpID09ICcucHlkJyI+UHlfQlVJTERfQ09SRV9NT0RVTEU7PC9fUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpSW5jbHVkZTskKFB5U291cmNlUGF0aClQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyOyQoX1BsYXRmb3JtUHJlcHJvY2Vzc29yRGVmaW5pdGlvbikkKF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24pJChfUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiklKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICAKICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyAuLlxQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPEV4Y2VwdGlvbkhhbmRsaW5nPgotICAgICAgPC9FeGNlcHRpb25IYW5kbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxFeGNlcHRpb25IYW5kbGluZz48L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgogICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+ZmFsc2U8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JChPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CkBAIC01MSw1NCArNTIsMTA1IEBACiAgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KICAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+dHJ1ZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgogICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPnRydWU8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPkxJQkM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPFRhcmdldE1hY2hpbmUgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZSBDb25kaXRpb249IiQoU3VwcG9ydFBHTykiPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGdkPC9Qcm9maWxlR3VpZGVkRGF0YWJhc2U+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIj5Vc2VMaW5rVGltZUNvZGVHZW5lcmF0aW9uPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIj5QR0luc3RydW1lbnQ8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoU3VwcG9ydFBHTykgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+UEdVcGRhdGU8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CiAgICAgPC9MaW5rPgorICAgIDxMaWI+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIj50cnVlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIj50cnVlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPnRydWU8L0xpbmtUaW1lQ29kZUdlbmVyYXRpb24+CisgICAgPC9MaWI+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKVBDOyQoUHlTb3VyY2VQYXRoKUluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24pJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiklKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudCBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPlg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKXdpbmluc3QudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGxsTmFtZSI+Ci0gICAgICA8VmFsdWU+JChQeURsbE5hbWUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iZXh0ZXJuYWxzRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGV4dGVybmFsc0Rpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJzcWxpdGUzRGlyIj4KLSAgICAgIDxWYWx1ZT4kKHNxbGl0ZTNEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iYnoyRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGJ6MkRpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJsem1hRGlyIj4KLSAgICAgIDxWYWx1ZT4kKGx6bWFEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ib3BlbnNzbERpciI+Ci0gICAgICA8VmFsdWU+JChvcGVuc3NsRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrRGlyIj4KLSAgICAgIDxWYWx1ZT4kKHRjbHRrRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjREaXIiPgotICAgICAgPFZhbHVlPiQodGNsdGs2NERpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYiI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0a0xpYik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYkRlYnVnIj4KLSAgICAgIDxWYWx1ZT4kKHRjbHRrTGliRGVidWcpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NExpYiI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0azY0TGliKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWJEZWJ1ZyI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0azY0TGliRGVidWcpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgorCisgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVQeXRob25OdFJjSCIKKyAgICAgICAgICBCZWZvcmVUYXJnZXRzPSIkKE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldCkiCisgICAgICAgICAgSW5wdXRzPSIkKFB5U291cmNlUGF0aClJbmNsdWRlXHBhdGNobGV2ZWwuaCIKKyAgICAgICAgICBPdXRwdXRzPSIkKFB5U291cmNlUGF0aClQQ1xweXRob25udF9yYyQoUHlEZWJ1Z0V4dCkuaCI+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChQeVNvdXJjZVBhdGgpUENccHl0aG9ubnRfcmMkKFB5RGVidWdFeHQpLmgiIE92ZXJ3cml0ZT0idHJ1ZSIgRW5jb2Rpbmc9ImFzY2lpIgorICAgICAgICAgICAgICAgICAgICAgIExpbmVzPScvKiBUaGlzIGZpbGUgY3JlYXRlZCBieSBweXRob24ucHJvcHMgL3Q6R2VuZXJhdGVQeXRob25OdFJjSCAqLworI2RlZmluZSBGSUVMRDMgJChGaWVsZDNWYWx1ZSkKKyNkZWZpbmUgTVNfRExMX0lEICIkKFN5c1dpblZlcikiCisjZGVmaW5lIFBZVEhPTl9ETExfTkFNRSAiJChQeURsbE5hbWUpLmRsbCIKKycgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClQQ1xweXRob25udF9yYyQoUHlEZWJ1Z0V4dCkuaCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+CisKKyAgPFVzaW5nVGFzayBUYXNrTmFtZT0iS2lsbFB5dGhvbiIgVGFza0ZhY3Rvcnk9IkNvZGVUYXNrRmFjdG9yeSIgQXNzZW1ibHlGaWxlPSIkKE1TQnVpbGRUb29sc1BhdGgpXE1pY3Jvc29mdC5CdWlsZC5UYXNrcy52NC4wLmRsbCI+CisgICAgPFBhcmFtZXRlckdyb3VwPgorICAgICAgPEZpbGVOYW1lIFJlcXVpcmVkPSJ0cnVlIiAvPgorICAgIDwvUGFyYW1ldGVyR3JvdXA+CisgICAgPFRhc2s+CisgICAgICA8Q29kZSBUeXBlPSJGcmFnbWVudCIgTGFuZ3VhZ2U9ImNzIj4KKzwhW0NEQVRBWworc3RyaW5nIGZ1bGxQYXRoID0gU3lzdGVtLklPLlBhdGguR2V0RnVsbFBhdGgoRmlsZU5hbWUpOworTG9nLkxvZ01lc3NhZ2UoIkxvb2tpbmcgZm9yICIgKyBmdWxsUGF0aCwgTWVzc2FnZUltcG9ydGFuY2UuTm9ybWFsKTsKK2ZvcmVhY2ggKFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzIHAgaW4gU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MuR2V0UHJvY2Vzc2VzKCkpIHsKKyAgICB0cnkgeworICAgICAgICBMb2cuTG9nTWVzc2FnZSgiRm91bmQgcnVubmluZyBwcm9jZXNzOiAiICsgcC5NYWluTW9kdWxlLkZpbGVOYW1lLCBNZXNzYWdlSW1wb3J0YW5jZS5Mb3cpOworICAgICAgICBpZiAoZnVsbFBhdGguRXF1YWxzKFN5c3RlbS5JTy5QYXRoLkdldEZ1bGxQYXRoKHAuTWFpbk1vZHVsZS5GaWxlTmFtZSksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKSB7CisgICAgICAgICAgICBMb2cuTG9nTWVzc2FnZSgiVGVybWluYXRpbmcgIiArIHAuTWFpbk1vZHVsZS5GaWxlTmFtZSwgTWVzc2FnZUltcG9ydGFuY2UuSGlnaCk7CisgICAgICAgICAgICBwLktpbGwoKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggeworICAgIH0KK30KK11dPgorICAgICAgPC9Db2RlPgorICAgIDwvVGFzaz4KKyAgPC9Vc2luZ1Rhc2s+CisgIAorICA8VGFyZ2V0IE5hbWU9IktpbGxQeXRob24iIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSInJChLaWxsUHl0aG9uKScgPT0gJ3RydWUnIj4KKyAgICA8TWVzc2FnZSBUZXh0PSJLaWxsaW5nIGFueSBydW5uaW5nIHB5dGhvbi5leGUgaW5zdGFuY2VzLi4uIiBJbXBvcnRhbmNlPSJoaWdoIiAvPgorICAgIDxLaWxsUHl0aG9uIEZpbGVOYW1lPSIkKE91dERpcilweXRob24kKFB5RGVidWdFeHQpLmV4ZSIgLz4KKyAgPC9UYXJnZXQ+CisgIAorICA8IS0tCisgIEEgZGVmYXVsdCB0YXJnZXQgdG8gaGFuZGxlIG1zYnVpbGQgcGNidWlsZC5wcm9qIC90OkNsZWFuQWxsLgorICAKKyAgU29tZSBleHRlcm5hbHMgcHJvamVjdHMgZG9uJ3QgcmVzcG9uZCB0byAvdDpDbGVhbiwgc28gd2UgaW52b2tlCisgIENsZWFuQWxsIG9uIHRoZW0gd2hlbiB3ZSByZWFsbHkgd2FudCB0byBjbGVhbiB1cC4KKyAgLS0+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiIERlcGVuZHNPblRhcmdldHM9IkNsZWFuIj4KKyAgICA8TVNCdWlsZCBQcm9qZWN0cz0iQChQcm9qZWN0UmVmZXJlbmNlLT4nJShGdWxsUGF0aCknKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSQoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JChQbGF0Zm9ybSkiCisgICAgICAgICAgICAgQnVpbGRJblBhcmFsbGVsPSJ0cnVlIgorICAgICAgICAgICAgIFN0b3BPbkZpcnN0RmFpbHVyZT0iZmFsc2UiCisgICAgICAgICAgICAgQ29uZGl0aW9uPSJFeGlzdHMoJShGdWxsUGF0aCkpIgorICAgICAgICAgICAgIFRhcmdldHM9IkNsZWFuQWxsIiAvPgorICA8L1RhcmdldD4KKworICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+CisgICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IickKFNpZ25Ub29sUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3Q4MSlcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KKyAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdClcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KKyAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KKyAgICA8X1NpZ25Db21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiIkKFNpZ25Ub29sUGF0aCkiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL3QgaHR0cDovL3RpbWVzdGFtcC52ZXJpc2lnbi5jb20vc2NyaXB0cy90aW1lc3RhbXAuZGxsIC9kICJQeXRob24gJChQeXRob25WZXJzaW9uKSI8L19TaWduQ29tbWFuZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPFRhcmdldCBOYW1lPSJfU2lnbkJ1aWxkIiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KKyAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgPEV4ZWMgQ29tbWFuZD0nJChfU2lnbkNvbW1hbmQpICIkKFRhcmdldFBhdGgpIiB8fCAkKF9TaWduQ29tbWFuZCkgIiQoVGFyZ2V0UGF0aCkiIHx8ICQoX1NpZ25Db21tYW5kKSAiJChUYXJnZXRQYXRoKSInIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnByb3BzIGIvUENidWlsZC9weXRob24ucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3NDBmZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCkBAIC0wLDAgKzEsMTE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8UGxhdGZvcm0gQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICcnIj5XaW4zMjwvUGxhdGZvcm0+CisgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgPCEtLQorICAgIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uIG9mIFZpc3VhbCBTdHVkaW8gdG8gYnVpbGQuIFRvIG92ZXJyaWRlCisgICAgdGhpcyBhbmQgYnVpbGQgd2l0aCBhbiBlYXJsaWVyIHZlcnNpb24sIHBhc3MgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIgorICAgIChmb3IgZXhhbXBsZSkgd2hlbiBidWlsZGluZy4KKyAgICAtLT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxNCknICE9ICcnIj52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTIpJyAhPSAnJyI+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAnJyBhbmQgJyQoVkNUYXJnZXRzUGF0aDExKScgIT0gJyciPnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxMCknICE9ICcnIj52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgCisgICAgPCEtLQorICAgIENvbnZpbmNpbmcgTVNWQy9NU0J1aWxkIHRvIHByZWZlciBvdXIgcGxhdGZvcm0gbmFtZXMgaXMgdG9vIGRpZmZpY3VsdCwKKyAgICBzbyB3ZSBkZWZpbmUgb3VyIG93biBjb25zdGFudCBBcmNoTmFtZSBhbmQgdXNlIHdoZXJldmVyIHdlIG5lZWQgaXQuCisgICAgLS0+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyBhbmQgJChQbGF0Zm9ybSkgPT0gJ3g2NCciPmFtZDY0PC9BcmNoTmFtZT4KKyAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIj53aW4zMjwvQXJjaE5hbWU+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoQXJjaE5hbWUpLXBnbzwvQXJjaE5hbWU+CisgICAgCisgICAgPCEtLSBSb290IGRpcmVjdG9yeSBvZiB0aGUgcmVwb3NpdG9yeSAtLT4KKyAgICA8UHlTb3VyY2VQYXRoIENvbmRpdGlvbj0iJyQoUHlTb3VyY2VQYXRoKScgPT0gJyciPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXC4uXCkpPC9QeVNvdXJjZVBhdGg+CisgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoUHlTb3VyY2VQYXRoKSkiPiQoUHlTb3VyY2VQYXRoKVw8L1B5U291cmNlUGF0aD4KKyAgICAKKyAgICA8IS0tIERpcmVjdG9yeSB3aGVyZSBidWlsZCBvdXRwdXRzIGFyZSBwdXQgLS0+CisgICAgPEJ1aWxkUGF0aCBDb25kaXRpb249IickKEJ1aWxkUGF0aCknID09ICcnIj4kKFB5U291cmNlUGF0aClQQ0J1aWxkXCQoQXJjaE5hbWUpXDwvQnVpbGRQYXRoPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKEJ1aWxkUGF0aCkpIj4kKEJ1aWxkUGF0aClcPC9CdWlsZFBhdGg+CisgICAgCisgICAgPCEtLSBEaXJlY3RvcmllcyBvZiBleHRlcm5hbCBwcm9qZWN0cy4gdGNsdGsgaXMgaGFuZGxlZCBpbiB0Y2x0ay5wcm9wcyAtLT4KKyAgICA8RXh0ZXJuYWxzRGlyPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoYCQoUHlTb3VyY2VQYXRoKWV4dGVybmFsc1xgKSk8L0V4dGVybmFsc0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy44LjMuMVw8L3NxbGl0ZTNEaXI+CisgICAgPGJ6MkRpcj4kKEV4dGVybmFsc0RpciliemlwMi0xLjAuNlw8L2J6MkRpcj4KKyAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjAuNVw8L2x6bWFEaXI+CisgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmFcPC9vcGVuc3NsRGlyPgorICAgIDxuYXNtRGlyPiQoRXh0ZXJuYWxzRGlyKVxuYXNtLTIuMTEuMDZcPC9uYXNtRGlyPgorICAgIAorICAgIDwhLS0gU3VmZml4IGZvciBhbGwgYmluYXJpZXMgd2hlbiBidWlsZGluZyBmb3IgZGVidWcgLS0+CisgICAgPFB5RGVidWdFeHQgQ29uZGl0aW9uPSInJChQeURlYnVnRXh0KScgPT0gJycgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+X2Q8L1B5RGVidWdFeHQ+CisgICAgCisgICAgPCEtLSBGdWxsIHBhdGggb2YgdGhlIHJlc3VsdGluZyBweXRob24uZXhlIGJpbmFyeSAtLT4KKyAgICA8UHl0aG9uRXhlIENvbmRpdGlvbj0iJyQoUHl0aG9uRXhlKScgPT0gJyciPiQoQnVpbGRQYXRoKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+CisKKyAgICA8IS0tCisgICAgUmVhZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gSW5jbHVkZVxwYXRjaGxldmVsLmguIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgc2V0OgorICAgIAorICAgICAgICBNYWpvclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzMnIGluICczLjUuMmExJworICAgICAgICBNaW5vclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzUnIGluICczLjUuMmExJworICAgICAgICBNaWNyb1ZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzInIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlU2VyaWFsICAgICAgIC0gICB0aGUgJzEnIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlTGV2ZWxOYW1lICAgIC0gICB0aGUgJ2ExJyBpbiAnMy41LjJhMScKKyAgICAgICAgUHl0aG9uVmVyc2lvbk51bWJlciAtICAgJzMuNS4yJyBmb3IgJzMuNS4yYTEnCisgICAgICAgIFB5dGhvblZlcnNpb24gICAgICAgLSAgICczLjUuMmExJworICAgICAgICBQeXRob25WZXJzaW9uSGV4ICAgIC0gICAweDAzMDUwMmExIGZvciAnMy41LjJhMScKKyAgICAgICAgUmVsZWFzZUxldmVsTnVtYmVyICAtICAgMTAgZm9yIGFscGhhLCAxMSBmb3IgYmV0YSwgMTIgZm9yIFJDIChnYW1tYSksIGFuZCAxNSBmb3IgZmluYWwKKyAgICAgICAgRmllbGQzVmFsdWUgICAgICAgICAtICAgMjEwMSBmb3IgJzMuNS4yYTEnICg9PSAxMDAwKjIgKyAxMCoxMCAoJ2EnKSArIDEpCisgICAgLS0+CisgICAgPF9QYXRjaExldmVsQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KGAkKFB5U291cmNlUGF0aClJbmNsdWRlXHBhdGNobGV2ZWwuaGApKTwvX1BhdGNoTGV2ZWxDb250ZW50PgorICAgIDxNYWpvclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUFKT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWFqb3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaW5vclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlOT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWlub3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaWNyb1ZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlDUk9fVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWljcm9WZXJzaW9uTnVtYmVyPgorICAgIDxfUmVsZWFzZUxldmVsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoX1BhdGNoTGV2ZWxDb250ZW50KSwgYGRlZmluZVxzK1BZX1JFTEVBU0VfTEVWRUxccytQWV9SRUxFQVNFX0xFVkVMXyhcdyspYCkuR3JvdXBzWzFdLlZhbHVlKTwvX1JlbGVhc2VMZXZlbD4KKyAgICA8UmVsZWFzZVNlcmlhbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9SRUxFQVNFX1NFUklBTFxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyPjE1PC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+MTA8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnQkVUQSciPjExPC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0dBTU1BJyI+MTI8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTmFtZSBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+YSQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdCRVRBJyI+YiQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdHQU1NQSciPnJjJChSZWxlYXNlU2VyaWFsKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgICAKKyAgICA8UHl0aG9uVmVyc2lvbk51bWJlcj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvUHl0aG9uVmVyc2lvbk51bWJlcj4KKyAgICA8UHl0aG9uVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSk8L1B5dGhvblZlcnNpb24+CisgICAgPFB5dGhvblZlcnNpb25IZXg+JChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoTWFqb3JWZXJzaW9uTnVtYmVyKSwgMTY3NzcyMTYpKSwKKyAgICAgICAgJChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pbm9yVmVyc2lvbk51bWJlciksIDY1NTM2KSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6Qml0d2lzZU9yKAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pY3JvVmVyc2lvbk51bWJlciksIDI1NikpLAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpCaXR3aXNlT3IoCisgICAgICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDE2KSksCisgICAgICAgICAgICAgICAgICAgICQoUmVsZWFzZVNlcmlhbCkKKyAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgKSkKKyAgICAgICAgKSkKKyAgICApKTwvUHl0aG9uVmVyc2lvbkhleD4KKyAgICA8RmllbGQzVmFsdWU+JChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgJChSZWxlYXNlU2VyaWFsKSwKKyAgICAgICAgJChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDEwKSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6TXVsdGlwbHkoJChNaWNyb1ZlcnNpb25OdW1iZXIpLCAxMDAwKSkKKyAgICAgICAgKSkKKyAgICApKTwvRmllbGQzVmFsdWU+CisgICAgCisgICAgPCEtLSBUaGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5nIHB5dGhvblhZLmRsbCAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSAtLT4KKyAgICA8UHlEbGxOYW1lPnB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KKworICAgIDwhLS0gVGhlIHZlcnNpb24gYW5kIHBsYXRmb3JtIHRhZyB0byBpbmNsdWRlIGluIC5weWQgZmlsZW5hbWVzIC0tPgorICAgIDxQeWRUYWcgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAnV2luMzInIG9yICQoUGxhdGZvcm0pID09ICd4ODYnIj4uY3AkKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlciktd2luMzI8L1B5ZFRhZz4KKyAgICA8UHlkVGFnIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPi5jcCQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKS13aW5fYW1kNjQ8L1B5ZFRhZz4KKyAgICAKKyAgICA8IS0tIFRoZSB2ZXJzaW9uIG51bWJlciBmb3Igc3lzLndpbnZlciAtLT4KKyAgICA8U3lzV2luVmVyPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcik8L1N5c1dpblZlcj4KKyAgICA8U3lzV2luVmVyIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyBvciAkKFBsYXRmb3JtKSA9PSAneDg2JyI+JChTeXNXaW5WZXIpLTMyPC9TeXNXaW5WZXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDwhLS0gRGlzcGxheXMgdGhlIGNhbGN1bGF0ZWQgdmVyc2lvbiBpbmZvIC0tPgorICA8VGFyZ2V0IE5hbWU9IlNob3dWZXJzaW9uSW5mbyI+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iUHl0aG9uVmVyc2lvbk51bWJlcjogJChQeXRob25WZXJzaW9uTnVtYmVyKSIgLz4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJQeXRob25WZXJzaW9uOiAgICAgICAkKFB5dGhvblZlcnNpb24pIiAvPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IiQoW1N5c3RlbS5TdHJpbmddOjpGb3JtYXQoYFB5dGhvblZlcnNpb25IZXg6ICAgIDB4ezA6eH1gLCAkKFtTeXN0ZW0uVUludDMyXTo6UGFyc2UoJChQeXRob25WZXJzaW9uSGV4KSkpKSkiIC8+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iRmllbGQzVmFsdWU6ICAgICAgICAgJChGaWVsZDNWYWx1ZSkiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKaW5kZXggYmQxMjYyNC4uMGFlNDg4MiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC0zNiw0NCArMzYsMTEgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+e0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX08L1Byb2plY3RHdWlkPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KQEAgLTgxLDI2OCArNDgsMjQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+NDE5NDMwNDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIiAvPgogICA8L0l0ZW1Hcm91cD4KQEAgLTM1MCw3ICs3Myw3IEBACiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHl0aG9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KQEAgLTM2MSw0ICs4NCwxOSBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgorICA8VGFyZ2V0IE5hbWU9IkdlbmVyYXRlUHl0aG9uQmF0IiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9Db250ZW50PkByZW0gVGhpcyBzY3JpcHQgaW52b2tlcyB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBQeXRob24gd2l0aCBhbGwgYXJndW1lbnRzCitAcmVtIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBpbnRlcnByZXRlci4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlCitAcmVtIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSBjaGFuZ2VzICp3aWxsKiBiZSB0aHJvd24gYXdheSBieSB0aGUgbmV4dAorQHJlbSByZWJ1aWxkLgorQHJlbSBUaGlzIGlzIG9ubHkgbWVhbnQgYXMgYSBjb252ZW5pZW5jZSBmb3IgZGV2ZWxvcGluZyBDUHl0aG9uCitAcmVtIGFuZCB1c2luZyBpdCBvdXRzaWRlIG9mIHRoYXQgY29udGV4dCBpcyBpbGwtYWR2aXNlZC4KK0BlY2hvIFJ1bm5pbmcgJChDb25maWd1cmF0aW9uKV58JChQbGF0Zm9ybSkgaW50ZXJwcmV0ZXIuLi4KK0AiJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGUiICUqCis8L19Db250ZW50PgorICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKXB5dGhvbi5iYXQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCcpKTwvX0V4aXN0aW5nQ29udGVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCIgTGluZXM9IiQoX0NvbnRlbnQpIiBPdmVyd3JpdGU9InRydWUiIENvbmRpdGlvbj0iJyQoX0NvbnRlbnQpJyAhPSAnJChfRXhpc3RpbmdDb250ZW50KSciIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwppbmRleCBlNDkwNmE0Li4wNjYyYTRlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0xOSw4ICsxOSw4IEBACiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCmluZGV4IGJjOGZmMzEuLmIwM2QwOWYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCkBAIC0xLDYgKzEsMTQgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzAsMTQ0ICszOCw0MyBAQAogICAgIDxQcm9qZWN0R3VpZD57ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uM2RsbDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFRhcmdldE5hbWU+cHl0aG9uMzwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPF9NYWNoaW5lPlg4NjwvX01hY2hpbmU+CisgICAgPF9NYWNoaW5lIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPlg2NDwvX01hY2hpbmU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxCdWZmZXJTZWN1cml0eUNoZWNrPmZhbHNlPC9CdWZmZXJTZWN1cml0eUNoZWNrPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSAhPSAnRGVidWcnIj4kKFB5U291cmNlUGF0aClQQ1xweXRob24zLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPiQoSW50RGlyKXB5dGhvbjNfZC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPgorICAgICAgPEVudHJ5UG9pbnRTeW1ib2w+RGxsTWFpbjwvRW50cnlQb2ludFN5bWJvbD4KKyAgICA8L0xpbms+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPmxpYiAvbm9sb2dvIC9kZWY6IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiIgL291dDoiJChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliIiAvTUFDSElORTokKF9NYWNoaW5lKTwvQ29tbWFuZD4KKyAgICAgIDxNZXNzYWdlPlJlYnVpbGRpbmcgJChUYXJnZXROYW1lKXN0dWIubGliPC9NZXNzYWdlPgorICAgICAgPE91dHB1dHM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9PdXRwdXRzPgorICAgIDwvUHJlTGlua0V2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiIC8+CkBAIC0xODEsNCArODgsNTUgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQnVpbGRQeXRob24zX2REZWYiIEJlZm9yZVRhcmdldHM9IkJ1aWxkU3R1YkRlZiIgSW5wdXRzPSIuLlxQQ1xweXRob24zLmRlZiIgT3V0cHV0cz0iJChJbnREaXIpcHl0aG9uM19kLmRlZiIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0RlZkxpbmVzIFJlbW92ZT0iQChfRGVmTGluZXMpIiAvPgorICAgICAgPF9MaW5lcyBSZW1vdmU9IkAoX0xpbmVzKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8UmVhZExpbmVzRnJvbUZpbGUgRmlsZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJMaW5lcyIgSXRlbU5hbWU9Il9EZWZMaW5lcyIgLz4KKyAgICA8L1JlYWRMaW5lc0Zyb21GaWxlPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9QYXR0ZXJuMT4oPXB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSlcLjwvX1BhdHRlcm4xPgorICAgICAgPF9TdWIxPiQxX2QuPC9fU3ViMT4KKyAgICAgIDxfUGF0dGVybjI+InB5dGhvbjMiPC9fUGF0dGVybjI+CisgICAgICA8X1N1YjI+InB5dGhvbjNfZCI8L19TdWIyPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9MaW5lcyBJbmNsdWRlPSJAKF9EZWZMaW5lcykiPgorICAgICAgICA8TmV3PiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OlJlcGxhY2UoJChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6UmVwbGFjZShgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybjEpYCwgYCQoX1N1YjEpYCkpLCBgJChfUGF0dGVybjIpYCwgYCQoX1N1YjIpYCkpPC9OZXc+CisgICAgICA8L19MaW5lcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKXB5dGhvbjNfZC5kZWYiIExpbmVzPSJAKF9MaW5lcy0+JyUoTmV3KScpIiAvPgorICA8L1RhcmdldD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQnVpbGRTdHViRGVmIiBCZWZvcmVUYXJnZXRzPSJQcmVMaW5rRXZlbnQiIElucHV0cz0iLi5cUENccHl0aG9uMy5kZWYiIE91dHB1dHM9IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiI+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxfRGVmTGluZXMgUmVtb3ZlPSJAKF9EZWZMaW5lcykiIC8+CisgICAgICA8X0xpbmVzIFJlbW92ZT0iQChfTGluZXMpIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxSZWFkTGluZXNGcm9tRmlsZSBGaWxlPSIuLlxQQ1xweXRob24zLmRlZiI+CisgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IkxpbmVzIiBJdGVtTmFtZT0iX0RlZkxpbmVzIiAvPgorICAgIDwvUmVhZExpbmVzRnJvbUZpbGU+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X1BhdHRlcm4+Xltcdy5dKz0uKz9cLihbXiBdKykuKiQ8L19QYXR0ZXJuPgorICAgICAgPF9TdWI+JDE8L19TdWI+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0xpbmVzIEluY2x1ZGU9IkVYUE9SVFMiIC8+CisgICAgICA8X1N5bWJvbHMgSW5jbHVkZT0iQChfRGVmTGluZXMpIiBDb25kaXRpb249IiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OklzTWF0Y2goYCUoSWRlbnRpdHkpYCwgYCQoX1BhdHRlcm4pYCkpIj4KKyAgICAgICAgPFN5bWJvbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpSZXBsYWNlKGAlKElkZW50aXR5KWAsIGAkKF9QYXR0ZXJuKWAsIGAkKF9TdWIpYCkpPC9TeW1ib2w+CisgICAgICA8L19TeW1ib2xzPgorICAgICAgPF9MaW5lcyBJbmNsdWRlPSJAKF9TeW1ib2xzLT4nJShTeW1ib2wpJykiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPE1ha2VEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKEludERpcilweXRob24zc3R1Yi5kZWYiIExpbmVzPSJAKF9MaW5lcykiIC8+CisgIDwvVGFyZ2V0PgorICA8VGFyZ2V0IE5hbWU9Il9DbGVhblN0dWJEZWYiIEJlZm9yZVRhcmdldHM9IkNvcmVDbGVhbiI+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxDbGVhbiBJbmNsdWRlPSIkKEludERpcilweXRob24zc3R1Yi5kZWYiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgIDwvVGFyZ2V0PgogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKaW5kZXggNjAyMWNkNy4uOWNiZThiOSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKQEAgLTM4LDQwNSArMzgsNDEgQEAKICAgICA8UHJvamVjdEd1aWQ+e0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnB5dGhvbmNvcmU8L1Jvb3ROYW1lc3BhY2U+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPEtpbGxQeXRob24+dHJ1ZTwvS2lsbFB5dGhvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWU+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8Q3VzdG9tQnVpbGRCZWZvcmVUYXJnZXRzPkxpbms8L0N1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKVB5dGhvbjskKFB5U291cmNlUGF0aClNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtNU19ETExfSUQ9IiQoU3lzV2luVmVyKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKEtpbGxQeXRob25FeGUpCi1JRiAlRVJST1JMRVZFTCUgTkVRIDAgKAotICAgIGVjaG8ga2lsbF9weXRob246IHdhcl5uaW5nOiBjb3VsZCBub3Qga2lsbCBydW5uaW5nIFB5dGhvbnMsIGV4aXQgY29kZSAlRVJST1JMRVZFTCUKLSAgICBleGl0IC9iIDAKLSk8L0NvbW1hbmQ+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+S2lsbGluZyBhbnkgcnVubmluZyAkKFB5dGhvbkV4ZSkgaW5zdGFuY2VzLi4uPC9NZXNzYWdlPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKEtpbGxQeXRob25FeGUpCi1JRiAlRVJST1JMRVZFTCUgTkVRIDAgKAotICAgIGVjaG8ga2lsbF9weXRob246IHdhcl5uaW5nOiBjb3VsZCBub3Qga2lsbCBydW5uaW5nIFB5dGhvbnMsIGV4aXQgY29kZSAlRVJST1JMRVZFTCUKLSAgICBleGl0IC9iIDAKLSk8L0NvbW1hbmQ+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+S2lsbGluZyBhbnkgcnVubmluZyAkKFB5dGhvbkV4ZSkgaW5zdGFuY2VzLi4uPC9NZXNzYWdlPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpXCI8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKEtpbGxQeXRob25FeGUpCi1JRiAlRVJST1JMRVZFTCUgTkVRIDAgKAotICAgIGVjaG8ga2lsbF9weXRob246IHdhcl5uaW5nOiBjb3VsZCBub3Qga2lsbCBydW5uaW5nIFB5dGhvbnMsIGV4aXQgY29kZSAlRVJST1JMRVZFTCUKLSAgICBleGl0IC9iIDAKLSk8L0NvbW1hbmQ+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+S2lsbGluZyBhbnkgcnVubmluZyAkKFB5dGhvbkV4ZSkgaW5zdGFuY2VzLi4uPC9NZXNzYWdlPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpXCI8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQeURsbE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKEtpbGxQeXRob25FeGUpCi1JRiAlRVJST1JMRVZFTCUgTkVRIDAgKAotICAgIGVjaG8ga2lsbF9weXRob246IHdhcl5uaW5nOiBjb3VsZCBub3Qga2lsbCBydW5uaW5nIFB5dGhvbnMsIGV4aXQgY29kZSAlRVJST1JMRVZFTCUKLSAgICBleGl0IC9iIDAKLSk8L0NvbW1hbmQ+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPE1lc3NhZ2U+S2lsbGluZyBhbnkgcnVubmluZyAkKFB5dGhvbkV4ZSkgaW5zdGFuY2VzLi4uPC9NZXNzYWdlPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWJzdHJhY3QuaCIgLz4KQEAgLTQ4Niw2ICsxMjIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxub2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmppbXBsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9kaWN0b2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCIgLz4KQEAgLTUwMiw2ICsxMzksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWV4cGF0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZnBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bGlmZWN5Y2xlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWF0aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRpbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYWNyby5oIiAvPgpAQCAtNTEwLDYgKzE0OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJjbXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJ0b2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJoZXguaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHRvYS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi5oIiAvPgpAQCAtNjc1LDYgKzMxNCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYmplY3QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JtYWxsb2MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2RpY3RvYmplY3QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2V0b2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiIC8+CkBAIC02OTYsOSArMzM2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXRvay5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHRva2VuaXplci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2lucmVnLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xjb25maWcuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGRsX250LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xnZXRwYXRocC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbXN2Y3J0bW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHloYXNoLmMiIC8+CkBAIC03MzQsMTAgKzM3NCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5YXJlbmEuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWN0eXBlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWxpZmVjeWNsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bWF0aC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGltZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RhdGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmNtcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RyaGV4LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJ0b2QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkdG9hLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cUHl0aG9uLWFzdC5jIiAvPgpAQCAtNzQ5LDIzICszOTEsMzAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0cmFjZWJhY2suYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xkbF9udC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJraWxsX3B5dGhvbi52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0Pns2ZGUxMDc0NC1lMzk2LTQwYTUtYjRlMi0xYjY5YWE3YzhkMzF9PC9Qcm9qZWN0PgotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57YzczZjBlYzEtMzU4Yi00MTc3LTk0MGYtMDg0NmFjOGIwNGNkfTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KKyAgPFRhcmdldCBOYW1lPSJfR2V0QnVpbGRJbmZvIiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC1iICZndDsgJnF1b3Q7JChJbnREaXIpaGdicmFuY2gudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPEV4ZWMgQ29tbWFuZD0iaGcgaWQgLWkgJmd0OyAmcXVvdDskKEludERpciloZ3ZlcnNpb24udHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPEV4ZWMgQ29tbWFuZD0iaGcgaWQgLXQgJmd0OyAmcXVvdDskKEludERpciloZ3RhZy50eHQmcXVvdDsiIENvbnRpbnVlT25FcnJvcj0idHJ1ZSIgLz4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxIZ0JyYW5jaCBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGdicmFuY2gudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhnYnJhbmNoLnR4dCcpLlRyaW0oKSk8L0hnQnJhbmNoPgorICAgICAgPEhnVmVyc2lvbiBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGd2ZXJzaW9uLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpciloZ3ZlcnNpb24udHh0JykuVHJpbSgpKTwvSGdWZXJzaW9uPgorICAgICAgPEhnVGFnIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpciloZ3RhZy50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaGd0YWcudHh0JykuVHJpbSgpKTwvSGdUYWc+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMiPgorICAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+SEdWRVJTSU9OPSIkKEhnVmVyc2lvbikiO0hHVEFHPSIkKEhnVGFnKSI7SEdCUkFOQ0g9IiQoSGdCcmFuY2gpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8L0NsQ29tcGlsZT4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+CisgIDxUYXJnZXQgTmFtZT0iX1dhcm5BYm91dFRvb2xzZXQiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgIT0gJ3YxNDAnIj4KKyAgICA8V2FybmluZyBUZXh0PSJUb29sc2V0ICQoUGxhdGZvcm1Ub29sc2V0KSBpcyBub3QgdXNlZCBmb3Igb2ZmaWNpYWwgYnVpbGRzLiBZb3VyIGJ1aWxkIG1heSBoYXZlIGVycm9ycyBvciBpbmNvbXBhdGliaWxpdGllcy4iIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDhjNjUyNDcuLjNiMjc1YmIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjE2LDYgKzIxNiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bGlmZWN5Y2xlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWF0aC5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjQwLDYgKzI0Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyaGV4LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTg5MCw2ICs4OTYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5ZnBlLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWxpZmVjeWNsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHltYXRoLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTkwMiw2ICs5MTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RyY21wLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmhleC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJ0b2QuYyI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtOTUzLDYgKzk2NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGhhc2h0YWJsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagppbmRleCAxMjE0NTY5Li5iMGEyMDlhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtMzYsMjk2ICszNiwzMCBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfTwvUHJvamVjdEd1aWQ+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KICAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9ud19kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qCmluZGV4IDk2ZWE0MjEuLjg4MmYxYzQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKQEAgLTM3LDIwMCArMzcsMzcgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHl3bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CiAgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3X2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHO19XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyIgLz4KICAgPC9JdGVtR3JvdXA+CkBAIC0yNDAsMTEgKzc3LDYgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CiAgIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IGMyN2FmOTkuLjI2NjIyZjUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsNDkgKzEsNTUgQEAKK1F1aWNrIFN0YXJ0IEd1aWRlDQorLS0tLS0tLS0tLS0tLS0tLS0NCisNCisxLiAgSW5zdGFsbCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDE1LCBhbnkgZWRpdGlvbi4NCisyLiAgSW5zdGFsbCBTdWJ2ZXJzaW9uLCBhbmQgbWFrZSBzdXJlICdzdm4uZXhlJyBpcyBvbiB5b3VyIFBBVEguDQorMy4gIFJ1biAiYnVpbGQuYmF0IC1lIiB0byBidWlsZCBQeXRob24gaW4gMzItYml0IFJlbGVhc2UgY29uZmlndXJhdGlvbi4NCis0LiAgKE9wdGlvbmFsLCBidXQgcmVjb21tZW5kZWQpIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoICJydC5iYXQgLXEiLg0KKw0KKw0KIEJ1aWxkaW5nIFB5dGhvbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKw0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIFRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgQ1B5dGhvbiBmb3IgTWljcm9zb2Z0IFdpbmRvd3MgTlQgdmVyc2lvbg0KLTUuMSBvciBoaWdoZXIgKFdpbmRvd3MgWFAsIFdpbmRvd3MgU2VydmVyIDIwMDMsIG9yIGxhdGVyKSBvbiAzMiBhbmQgNjQNCis2LjAgb3IgaGlnaGVyIChXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIFNlcnZlciAyMDA4LCBvciBsYXRlcikgb24gMzIgYW5kIDY0DQogYml0IHBsYXRmb3Jtcy4gIFVzaW5nIHRoaXMgZGlyZWN0b3J5IHJlcXVpcmVzIGFuIGluc3RhbGxhdGlvbiBvZg0KLU1pY3Jvc29mdCBWaXN1YWwgQysrIDIwMTAgKE1TVkMgMTAuMCkgb2YgYW55IGVkaXRpb24uICBUaGUgc3BlY2lmaWMNCitNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDE1IChNU1ZDIDE0LjApIG9mIGFueSBlZGl0aW9uLiAgVGhlIHNwZWNpZmljDQogcmVxdWlyZW1lbnRzIGFyZSBhcyBmb2xsb3dzOg0KIA0KLVZpc3VhbCBDKysgMjAxMCBFeHByZXNzIEVkaXRpb24NCi0gICAgUmVxdWlyZWQgZm9yIGJ1aWxkaW5nIDMyLWJpdCBEZWJ1ZyBhbmQgUmVsZWFzZSBjb25maWd1cmF0aW9uIGJ1aWxkcy4NCitWaXN1YWwgU3R1ZGlvIEV4cHJlc3MgMjAxNSBmb3IgRGVza3RvcA0KK1Zpc3VhbCBTdHVkaW8gUHJvZmVzc2lvbmFsIDIwMTUNCisgICAgRWl0aGVyIGVkaXRpb24gaXMgc3VmZmljaWVudCBmb3IgYnVpbGRpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGV4Y2VwdA0KKyAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uLg0KICAgICBUaGUgUHl0aG9uIGJ1aWxkIHNvbHV0aW9uIHBjYnVpbGQuc2xuIG1ha2VzIHVzZSBvZiBTb2x1dGlvbiBGb2xkZXJzLA0KICAgICB3aGljaCB0aGlzIGVkaXRpb24gZG9lcyBub3Qgc3VwcG9ydC4gIEFueSB0aW1lIHBjYnVpbGQuc2xuIGlzIG9wZW5lZA0KLSAgICBvciByZWxvYWRlZCBieSBWaXN1YWwgQysrLCBhIHdhcm5pbmcgYWJvdXQgU29sdXRpb24gRm9sZGVycyB3aWxsIGJlDQotICAgIGRpc3BsYXllZCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQorICAgIG9yIHJlbG9hZGVkIGJ5IFZpc3VhbCBTdHVkaW8sIGEgd2FybmluZyBhYm91dCBTb2x1dGlvbiBGb2xkZXJzIHdpbGwNCisgICAgYmUgZGlzcGxheWVkLCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQogICAgIGFiaWxpdHkgdG8gYnVpbGQgUHl0aG9uLg0KLVZpc3VhbCBTdHVkaW8gMjAxMCBQcm9mZXNzaW9uYWwgRWRpdGlvbg0KICAgICBSZXF1aXJlZCBmb3IgYnVpbGRpbmcgNjQtYml0IERlYnVnIGFuZCBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzDQotVmlzdWFsIFN0dWRpbyAyMDEwIFByZW1pdW0gRWRpdGlvbg0KK1Zpc3VhbCBTdHVkaW8gUHJlbWl1bSAyMDE1DQogICAgIFJlcXVpcmVkIGZvciBidWlsZGluZyBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIHRoYXQgbWFrZSB1c2Ugb2YNCiAgICAgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIChQR08pLCBvbiBlaXRoZXIgcGxhdGZvcm0uDQogDQotSW5zdGFsbGluZyBTZXJ2aWNlIFBhY2sgMSBmb3IgVmlzdWFsIFN0dWRpbyAyMDEwIGlzIGhpZ2hseSByZWNvbW1lbmRlZA0KLXRvIGF2b2lkIExOSzExMjMgZXJyb3JzLg0KLQ0KIEFsbCB5b3UgbmVlZCB0byBkbyB0byBidWlsZCBpcyBvcGVuIHRoZSBzb2x1dGlvbiAicGNidWlsZC5zbG4iIGluIFZpc3VhbA0KIFN0dWRpbywgc2VsZWN0IHRoZSBkZXNpcmVkIGNvbWJpbmF0aW9uIG9mIGNvbmZpZ3VyYXRpb24gYW5kIHBsYXRmb3JtLA0KLXRoZW4gYnVpbGQgd2l0aCAiQnVpbGQgU29sdXRpb24iIG9yIHRoZSBGNyBrZXlib2FyZCBzaG9ydGN1dC4gIFlvdSBjYW4NCi1hbHNvIGJ1aWxkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMNCi1kaXJlY3RvcnkuICBUaGUgc29sdXRpb24gaXMgY29uZmlndXJlZCB0byBidWlsZCB0aGUgcHJvamVjdHMgaW4gdGhlDQotY29ycmVjdCBvcmRlci4NCit0aGVuIGJ1aWxkIHdpdGggIkJ1aWxkIFNvbHV0aW9uIi4gIFlvdSBjYW4gYWxzbyBidWlsZCBmcm9tIHRoZSBjb21tYW5kDQorbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5OyBzZWUgYmVsb3cgZm9yDQorZGV0YWlscy4gIFRoZSBzb2x1dGlvbiBpcyBjb25maWd1cmVkIHRvIGJ1aWxkIHRoZSBwcm9qZWN0cyBpbiB0aGUgY29ycmVjdA0KK29yZGVyLg0KIA0KIFRoZSBzb2x1dGlvbiBjdXJyZW50bHkgc3VwcG9ydHMgdHdvIHBsYXRmb3Jtcy4gIFRoZSBXaW4zMiBwbGF0Zm9ybSBpcw0KLXVzZWQgdG8gYnVpbGQgc3RhbmRhcmQgeDg2LWNvbXBhdGlibGUgMzItYml0IGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGlzDQotZGlyZWN0b3J5LiAgVGhlIHg2NCBwbGF0Zm9ybSBpcyB1c2VkIGZvciBidWlsZGluZyA2NC1iaXQgQU1ENjQgKGFrYQ0KLXg4Nl82NCBvciBFTTY0VCkgYmluYXJpZXMsIG91dHB1dCBpbnRvIHRoZSBhbWQ2NCBzdWItZGlyZWN0b3J5IHdoaWNoDQotd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4gIFRoZSBJdGFuaXVtIChJQS02NCkNCi1wbGF0Zm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgU2VlIHRoZSAiQnVpbGRpbmcgZm9yIEFNRDY0IiBzZWN0aW9uDQotYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgNjQtYml0IGJ1aWxkcy4NCit1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIHg4Ni1jb21wYXRpYmxlIDMyLWJpdCBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlDQord2luMzIgc3ViLWRpcmVjdG9yeS4gIFRoZSB4NjQgcGxhdGZvcm0gaXMgdXNlZCBmb3IgYnVpbGRpbmcgNjQtYml0IEFNRDY0DQorKGFrYSB4ODZfNjQgb3IgRU02NFQpIGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGUgYW1kNjQgc3ViLWRpcmVjdG9yeS4NCitUaGUgSXRhbml1bSAoSUEtNjQpIHBsYXRmb3JtIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuICBTZWUgdGhlICJCdWlsZGluZw0KK2ZvciBBTUQ2NCIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCA2NC1iaXQgYnVpbGRzLg0KIA0KIEZvdXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIHNvbHV0aW9uOg0KIERlYnVnDQogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzRfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNV9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtNTIsMjggKzU4LDUzIEBACiAgICAgcmVxdWlyZXMgUHJlbWl1bSBFZGl0aW9uIG9mIFZpc3VhbCBTdHVkaW8uICBTZWUgdGhlICJQcm9maWxlDQogICAgIEd1aWRlZCBPcHRpbWl6YXRpb24iIHNlY3Rpb24gYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBCdWlsZA0KICAgICBvdXRwdXQgZnJvbSBlYWNoIG9mIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGxhbmRzIGluIGl0cyBvd24NCi0gICAgc3ViLWRpcmVjdG9yeSBvZiB0aGlzIGRpcmVjdG9yeS4gIFRoZSBvZmZpY2lhbCBQeXRob24gcmVsZWFzZXMgYXJlDQotICAgIGJ1aWx0IHVzaW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zLg0KKyAgICBzdWItZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LiAgVGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcyBtYXkNCisgICAgYmUgYnVpbHQgdXNpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMuDQogUmVsZWFzZQ0KICAgICBVc2VkIHRvIGJ1aWxkIFB5dGhvbiBhcyBpdCBpcyBtZWFudCB0byBiZSB1c2VkIGluIHByb2R1Y3Rpb24NCiAgICAgc2V0dGluZ3MsIHRob3VnaCB3aXRob3V0IFBHTy4NCiANCiANCi1MZWdhY3kgc3VwcG9ydA0KLS0tLS0tLS0tLS0tLS0tDQorQnVpbGRpbmcgUHl0aG9uIHVzaW5nIHRoZSBidWlsZC5iYXQgc2NyaXB0DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KLVlvdSBjYW4gZmluZCBidWlsZCBkaXJlY3RvcmllcyBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpbyBhbmQNCi1WaXN1YWwgQysrIGluIHRoZSBQQyBkaXJlY3RvcnkuIFRoZSBsZWdhY3kgYnVpbGQgZGlyZWN0b3JpZXMgYXJlIG5vDQotbG9uZ2VyIGFjdGl2ZWx5IG1haW50YWluZWQgYW5kIG1heSBub3Qgd29yayBvdXQgb2YgdGhlIGJveC4NCitJbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgYnVpbGQuYmF0LCBhIHNjcmlwdCBkZXNpZ25lZCB0byBtYWtlDQorYnVpbGRpbmcgUHl0aG9uIG9uIFdpbmRvd3Mgc2ltcGxlci4gIFRoaXMgc2NyaXB0IHdpbGwgdXNlIHRoZSBlbnYuYmF0DQorc2NyaXB0IHRvIGRldGVjdCBvbmUgb2YgVmlzdWFsIFN0dWRpbyAyMDE1LCAyMDEzLCAyMDEyLCBvciAyMDEwLCBhbnkgb2YNCit3aGljaCBtYXkgYmUgdXNlZCB0byBidWlsZCBQeXRob24sIHRob3VnaCBvbmx5IFZpc3VhbCBTdHVkaW8gMjAxNSBpcw0KK29mZmljaWFsbHkgc3VwcG9ydGVkLg0KIA0KLUN1cnJlbnRseSwgdGhlIG9ubHkgbGVnYWN5IGJ1aWxkIGRpcmVjdG9yeSBpcyBQQ1xWUzkuMCwgZm9yIFZpc3VhbA0KLVN0dWRpbyAyMDA4ICg5LjApLg0KK0J5IGRlZmF1bHQsIGJ1aWxkLmJhdCB3aWxsIGJ1aWxkIFB5dGhvbiBpbiBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gZm9yDQordGhlIDMyLWJpdCBXaW4zMiBwbGF0Zm9ybS4gIEl0IGFjY2VwdHMgc2V2ZXJhbCBhcmd1bWVudHMgdG8gY2hhbmdlDQordGhpcyBiZWhhdmlvcjoNCisNCisgICAtYyA8Y29uZmlndXJhdGlvbj4gIFNldCB0aGUgY29uZmlndXJhdGlvbiAoc2VlIGFib3ZlKQ0KKyAgIC1kICAgICAgICAgICAgICAgICAgU2hvcnRjdXQgZm9yICItYyBEZWJ1ZyINCisgICAtcCA8cGxhdGZvcm0+ICAgICAgIFNldCB0aGUgcGxhdGZvcm0gdG8gYnVpbGQgZm9yICgiV2luMzIiIG9yICJ4NjQiKQ0KKyAgIC1yICAgICAgICAgICAgICAgICAgUmVidWlsZCBpbnN0ZWFkIG9mIGp1c3QgYnVpbGRpbmcNCisgICAtdCA8dGFyZ2V0PiAgICAgICAgIFNldCB0aGUgdGFyZ2V0IChCdWlsZCwgUmVidWlsZCwgQ2xlYW4gb3IgQ2xlYW5BbGwpDQorICAgLWUgICAgICAgICAgICAgICAgICBVc2UgZ2V0X2V4dGVybmFscy5iYXQgdG8gZmV0Y2ggZXh0ZXJuYWwgc291cmNlcw0KKyAgIC1NICAgICAgICAgICAgICAgICAgRG9uJ3QgYnVpbGQgaW4gcGFyYWxsZWwNCisgICAtdiAgICAgICAgICAgICAgICAgIEluY3JlYXNlZCBvdXRwdXQgbWVzc2FnZXMNCisNCitVcCB0byA5IE1TQnVpbGQgc3dpdGNoZXMgY2FuIGFsc28gYmUgcGFzc2VkLCB0aG91Z2ggdGhleSBtdXN0IGJlIHBhc3NlZA0KK2FmdGVyIHNwZWNpZnlpbmcgYW55IG9mIHRoZSBhYm92ZSBzd2l0Y2hlcy4gIEZvciBleGFtcGxlLCB1c2U6DQorDQorICAgYnVpbGQuYmF0IC1lIC1kIC9mbA0KKw0KK3RvIGRvIGEgZGVidWcgYnVpbGQgd2l0aCBleHRlcm5hbHMgZmV0Y2hlZCBhcyBuZWVkZWQgYW5kIHdyaXRlIGRldGFpbGVkDQorYnVpbGQgbG9ncyB0byBhIGZpbGUuICBJZiB0aGUgTVNCdWlsZCBzd2l0Y2ggcmVxdWlyZXMgYW4gZXF1YWwgc2lnbg0KKygiPSIpLCB0aGUgZW50aXJlIHN3aXRjaCBtdXN0IGJlIHF1b3RlZDoNCisNCisgICBidWlsZC5iYXQgLWUgLWQgIi9wOkV4dGVybmFsc0Rpcj1QOlxjcHl0aG9uLWV4dGVybmFscyINCisNCitUaGVyZSBtYXkgYWxzbyBiZSBvdGhlciBzaXR1YXRpb25zIHdoZXJlIHF1b3RlcyBhcmUgbmVjZXNzYXJ5Lg0KIA0KIA0KIEMgUnVudGltZQ0KIC0tLS0tLS0tLQ0KIA0KLVZpc3VhbCBTdHVkaW8gMjAxMCB1c2VzIHZlcnNpb24gMTAgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUMTApLiAgVGhlDQorVmlzdWFsIFN0dWRpbyAyMDE1IHVzZXMgdmVyc2lvbiAxNCBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQxNCkuICBUaGUNCiBleGVjdXRhYmxlcyBubyBsb25nZXIgdXNlIHRoZSAiU2lkZSBieSBTaWRlIiBhc3NlbWJsaWVzIHVzZWQgaW4gcHJldmlvdXMNCiB2ZXJzaW9ucyBvZiB0aGUgY29tcGlsZXIuICBUaGlzIHNpbXBsaWZpZXMgZGlzdHJpYnV0aW9uIG9mIGFwcGxpY2F0aW9ucy4NCiANCkBAIC05OCwxMCArMTI5LDYgQEAKICAgICAuZGxsIGFuZCAubGliDQogcHl0aG9uDQogICAgIC5leGUNCi1raWxsX3B5dGhvbg0KLSAgICBraWxsX3B5dGhvbi5leGUsIGEgc21hbGwgcHJvZ3JhbSBkZXNpZ25lZCB0byBraWxsIGFueSBpbnN0YW5jZXMgb2YNCi0gICAgcHl0aG9uKF9kKS5leGUgdGhhdCBhcmUgcnVubmluZyBhbmQgbGl2ZSBpbiB0aGUgYnVpbGQgb3V0cHV0DQotICAgIGRpcmVjdG9yeTsgdGhpcyBpcyBtZWFudCB0byBhdm9pZCBidWlsZCBpc3N1ZXMgZHVlIHRvIGxvY2tlZCBmaWxlcw0KIG1ha2VfYnVpbGRpbmZvLCBtYWtlX3ZlcnNpb25pbmZvDQogICAgIGhlbHBlcnMgdG8gcHJvdmlkZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gdGhlIGJ1aWxkIHByb2Nlc3MNCiANCkBAIC0xMjEsMTMgKzE0OCwxMiBAQAogICAgIHB1cnBvc2VzLCB1c2VkIGJ5IHRlc3RfY2FwaS5weQ0KIA0KIFRoZXNlIGFyZSBtaXNjZWxsYW5lb3VzIHN1Yi1wcm9qZWN0cyB0aGF0IGRvbid0IHJlYWxseSBmaXQgdGhlIG90aGVyDQotY2F0ZWdvcmllcy4gIEJ5IGRlZmF1bHQsIHRoZXNlIHByb2plY3RzIGRvIG5vdCBidWlsZCBpbiBEZWJ1Zw0KLWNvbmZpZ3VyYXRpb246DQorY2F0ZWdvcmllczoNCiBfZnJlZXplX2ltcG9ydGxpYg0KICAgICBfZnJlZXplX2ltcG9ydGxpYi5leGUsIHVzZWQgdG8gcmVnZW5lcmF0ZSBQeXRob25caW1wb3J0bGliLmggYWZ0ZXINCiAgICAgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkNCiBiZGlzdF93aW5pbnN0DQotICAgIC4uXExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjBbLWFtZDY0XS5leGUsIHRoZSBiYXNlDQorICAgIC4uXExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTE0LjBbLWFtZDY0XS5leGUsIHRoZSBiYXNlDQogICAgIGV4ZWN1dGFibGUgdXNlZCBieSB0aGUgZGlzdHV0aWxzIGJkaXN0X3dpbmluc3QgY29tbWFuZA0KIHB5dGhvbjNkbGwNCiAgICAgcHl0aG9uMy5kbGwsIHRoZSBQRVAgMzg0IFN0YWJsZSBBQkkgZGxsDQpAQCAtMTcxLDcgKzE5Nyw3IEBACiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vdHVrYWFuaS5vcmcveHovDQogX3NzbA0KLSAgICBQeXRob24gd3JhcHBlciBmb3IgdmVyc2lvbiAxLjAuMmEgb2YgdGhlIE9wZW5TU0wgc2VjdXJlIHNvY2tldHMNCisgICAgUHl0aG9uIHdyYXBwZXIgZm9yIHZlcnNpb24gMS4wLjFqIG9mIHRoZSBPcGVuU1NMIHNlY3VyZSBzb2NrZXRzDQogICAgIGxpYnJhcnksIHdoaWNoIGlzIGJ1aWx0IGJ5IHNzbC52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8NCkBAIC0xODQsMzUgKzIxMCwyNyBAQAogICAgIHlvdSBzaG91bGQgZmlyc3QgdHJ5IHRvIHVwZGF0ZSBOQVNNIGFuZCBkbyBhIGZ1bGwgcmVidWlsZCBvZg0KICAgICBPcGVuU1NMLiAgSWYgeW91IHVzZSB0aGUgUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCBtZXRob2QNCiAgICAgZm9yIGdldHRpbmcgc291cmNlcywgaXQgYWxzbyBkb3dubG9hZHMgYSB2ZXJzaW9uIG9mIE5BU00gd2hpY2ggdGhlDQotICAgIHNzbCBidWlsZCBzY3JpcHQgd2lsbCBhZGQgdG8gUEFUSC4NCisgICAgbGliZWF5L3NzbGVheSBzdWItcHJvamVjdHMgdXNlLg0KIA0KLSAgICBJZiB5b3UgbGlrZSB0byB1c2UgdGhlIG9mZmljaWFsIHNvdXJjZXMgaW5zdGVhZCBvZiB0aGUgZmlsZXMgZnJvbQ0KLSAgICBweXRob24ub3JnJ3Mgc3VidmVyc2lvbiByZXBvc2l0b3J5LCBQZXJsIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZQ0KLSAgICBuZWNlc3NhcnkgbWFrZWZpbGVzIGFuZCBhc3NlbWJseSBmaWxlcy4gIEFjdGl2ZVBlcmwgaXMgYXZhaWxhYmxlDQotICAgIGZyb20NCisgICAgVGhlIGxpYmVheS9zc2xlYXkgc3ViLXByb2plY3RzIGV4cGVjdCB5b3VyIE9wZW5TU0wgc291cmNlcyB0byBoYXZlDQorICAgIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIGFuZCBiZSByZWFkeSB0byBidWlsZC4gIElmIHlvdSBnZXQgeW91ciBzb3VyY2VzDQorICAgIGZyb20gc3ZuLnB5dGhvbi5vcmcgYXMgc3VnZ2VzdGVkIGluIHRoZSAiR2V0dGluZyBFeHRlcm5hbCBTb3VyY2VzIg0KKyAgICBzZWN0aW9uIGJlbG93LCB0aGUgT3BlblNTTCBzb3VyY2Ugd2lsbCBhbHJlYWR5IGJlIHJlYWR5IHRvIGdvLiAgSWYNCisgICAgeW91IHdhbnQgdG8gYnVpbGQgYSBkaWZmZXJlbnQgdmVyc2lvbiwgeW91IHdpbGwgbmVlZCB0byBydW4NCisNCisgICAgICAgUENidWlsZFxwcmVwYXJlX3NzbC5weSBwYXRoXHRvXG9wZW5zc2wtc291cmNlLWRpcg0KKw0KKyAgICBUaGF0IHNjcmlwdCB3aWxsIHByZXBhcmUgeW91ciBPcGVuU1NMIHNvdXJjZXMgaW4gdGhlIHNhbWUgd2F5IHRoYXQNCisgICAgdGhvc2UgYXZhaWxhYmxlIG9uIHN2bi5weXRob24ub3JnIGhhdmUgYmVlbiBwcmVwYXJlZC4gIE5vdGUgdGhhdA0KKyAgICBQZXJsIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgb24geW91ciBQQVRIIHRvIGNvbmZpZ3VyZQ0KKyAgICBPcGVuU1NMLiAgQWN0aXZlUGVybCBpcyByZWNvbW1lbmRlZCBhbmQgaXMgYXZhaWxhYmxlIGZyb20NCiAgICAgICAgIGh0dHA6Ly93d3cuYWN0aXZlc3RhdGUuY29tL2FjdGl2ZXBlcmwvDQotICAgIFRoZSBzdm4ucHl0aG9uLm9yZyB2ZXJzaW9uIGNvbnRhaW5zIHByZS1idWlsdCBtYWtlZmlsZXMgYW5kIGFzc2VtYmx5DQotICAgIGZpbGVzLg0KIA0KLSAgICBUaGUgYnVpbGQgcHJvY2VzcyBtYWtlcyBzdXJlIHRoYXQgbm8gcGF0ZW50ZWQgYWxnb3JpdGhtcyBhcmUNCi0gICAgaW5jbHVkZWQuICBGb3Igbm93IFJDNSwgTURDMiBhbmQgSURFQSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgYnVpbGQuDQotICAgIFlvdSBtYXkgaGF2ZSB0byBtYW51YWxseSByZW1vdmUgJChPQkpfRClcaV8qLm9iaiBmcm9tIG1zXG50Lm1hayBpZg0KLSAgICB1c2luZyBvZmZpY2lhbCBzb3VyY2VzOyB0aGUgc3ZuLnB5dGhvbi5vcmctaG9zdGVkIHZlcnNpb24gaXMgYWxyZWFkeQ0KLSAgICBmaXhlZC4NCi0NCi0gICAgVGhlIHNzbC52Y3hwcm9qIHN1Yi1wcm9qZWN0IHNpbXBseSBpbnZva2VzIFBDYnVpbGQvYnVpbGRfc3NsLnB5LA0KLSAgICB3aGljaCBsb2NhdGVzIGFuZCBidWlsZHMgT3BlblNTTC4NCi0NCi0gICAgYnVpbGRfc3NsLnB5IGF0dGVtcHRzIHRvIGNhdGNoIHRoZSBtb3N0IGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgbm90DQotICAgIGJlaW5nIGFibGUgdG8gZmluZCBPcGVuU1NMIHNvdXJjZXMsIG9yIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgYSBQZXJsDQotICAgIHRoYXQgd29ya3Mgd2l0aCBPcGVuU1NMKSBhbmQgZ2l2ZSBhIHJlYXNvbmFibGUgZXJyb3IgbWVzc2FnZS4gIElmDQotICAgIHlvdSBoYXZlIGEgcHJvYmxlbSB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSBoYW5kbGVkIGNvcnJlY3RseSAoZS5nLiwNCi0gICAgeW91IGtub3cgeW91IGhhdmUgQWN0aXZlUGVybCBidXQgd2UgY2FuJ3QgZmluZCBpdCksIHBsZWFzZSB0YWtlIGENCi0gICAgcGVlayBhdCBidWlsZF9zc2wucHkgYW5kIHN1Z2dlc3QgcGF0Y2hlcy4gIE5vdGUgdGhhdCBidWlsZF9zc2wucHkNCi0gICAgc2hvdWxkIGJlIGFibGUgdG8gYmUgcnVuIGRpcmVjdGx5IGZyb20gdGhlIGNvbW1hbmQtbGluZS4NCi0NCi0gICAgVGhlIHNzbCBzdWItcHJvamVjdCBkb2VzIG5vdCBoYXZlIHRoZSBhYmlsaXR5IHRvIGNsZWFuIHRoZSBPcGVuU1NMDQotICAgIGJ1aWxkOyBpZiB5b3UgbmVlZCB0byByZWJ1aWxkLCB5b3UnbGwgaGF2ZSB0byBjbGVhbiBpdCBieSBoYW5kLg0KKyAgICBUaGUgbGliZWF5IGFuZCBzc2xlYXkgc3ViLXByb2plY3RzIHdpbGwgYnVpbGQgdGhlIG1vZHVsZXMgb2YgT3BlblNTTA0KKyAgICByZXF1aXJlZCBieSBfc3NsIGFuZCBfaGFzaGxpYiBhbmQgbWF5IG5lZWQgdG8gYmUgbWFudWFsbHkgdXBkYXRlZCB3aGVuDQorICAgIHVwZ3JhZGluZyB0byBhIG5ld2VyIHZlcnNpb24gb2YgT3BlblNTTCBvciB3aGVuIGFkZGluZyBuZXcNCisgICAgZnVuY3Rpb25hbGl0eSB0byBfc3NsIG9yIF9oYXNobGliLiBUaGV5IHdpbGwgbm90IGNsZWFuIHVwIHRoZWlyIG91dHB1dA0KKyAgICB3aXRoIHRoZSBub3JtYWwgQ2xlYW4gdGFyZ2V0OyBDbGVhbkFsbCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLg0KIF9zcWxpdGUzDQogICAgIFdyYXBzIFNRTGl0ZSAzLjguMy4xLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KQEAgLTIyMiwxMiArMjQwLDE5IEBACiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnRjbC50ay8NCiANCi0gICAgVW5saWtlIHRoZSBvdGhlciBleHRlcm5hbCBsaWJyYXJpZXMgbGlzdGVkIGFib3ZlLCBUayBtdXN0IGJlIGJ1aWx0DQotICAgIHNlcGFyYXRlbHkgYmVmb3JlIHRoZSBfdGtpbnRlciBtb2R1bGUgY2FuIGJlIGJ1aWx0LiBUaGlzIG1lYW5zIHRoYXQNCi0gICAgYSBwcmUtYnVpbHQgVGNsL1RrIGluc3RhbGxhdGlvbiBpcyBleHBlY3RlZCBpbiAuLlxleHRlcm5hbHNcdGNsdGsNCi0gICAgKHRjbHRrNjQgZm9yIDY0LWJpdCkgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuICBTZWUgIkdldHRpbmcNCi0gICAgRXh0ZXJuYWwgU291cmNlcyIgYmVsb3cgZm9yIHRoZSBlYXNpZXN0IG1ldGhvZCB0byBlbnN1cmUgVGNsL1RrIGlzDQotICAgIGJ1aWx0Lg0KKyAgICBUa2ludGVyJ3MgZGVwZW5kZW5jaWVzIGFyZSBidWlsdCBieSB0aGUgdGNsLnZjeHByb2ogYW5kIHRrLnZjeHByb2oNCisgICAgcHJvamVjdHMuICBUaGUgdGl4LnZjeHByb2ogcHJvamVjdCBhbHNvIGJ1aWxkcyB0aGUgVGl4IGV4dGVuZGVkDQorICAgIHdpZGdldCBzZXQgZm9yIHVzZSB3aXRoIFRraW50ZXIuDQorDQorICAgIFRob3NlIHRocmVlIHByb2plY3RzIGluc3RhbGwgdGhlaXIgcmVzcGVjdGl2ZSBjb21wb25lbnRzIGluIGENCisgICAgZGlyZWN0b3J5IGFsb25nc2lkZSB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGNhbGxlZCAidGNsdGsiIG9uDQorICAgIFdpbjMyIGFuZCAidGNsdGs2NCIgb24geDY0LiAgVGhleSBhbHNvIGNvcHkgdGhlIFRjbCBhbmQgVGsgRExMcw0KKyAgICBpbnRvIHRoZSBjdXJyZW50IG91dHB1dCBkaXJlY3RvcnksIHdoaWNoIHNob3VsZCBlbnN1cmUgdGhhdCBUa2ludGVyDQorICAgIGlzIGFibGUgdG8gbG9hZCBUY2wvVGsgd2l0aG91dCBoYXZpbmcgdG8gY2hhbmdlIHlvdXIgUEFUSC4NCisNCisgICAgVGhlIHRjbCwgdGssIGFuZCB0aXggc3ViLXByb2plY3RzIGRvIG5vdCBjbGVhbiB0aGVpciBidWlsZHMgd2l0aA0KKyAgICB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgaWYgeW91IG5lZWQgdG8gcmVidWlsZCwgeW91IHNob3VsZCB1c2UgdGhlDQorICAgIENsZWFuQWxsIHRhcmdldCBvciBtYW51YWxseSBkZWxldGUgdGhlaXIgYnVpbGRzLg0KIA0KIA0KIEdldHRpbmcgRXh0ZXJuYWwgU291cmNlcw0KQEAgLTIzNiwxMyArMjYxLDE4IEBACiBUaGUgbGFzdCBjYXRlZ29yeSBvZiBzdWItcHJvamVjdHMgbGlzdGVkIGFib3ZlIHdyYXAgZXh0ZXJuYWwgcHJvamVjdHMNCiBQeXRob24gZG9lc24ndCBjb250cm9sLCBhbmQgYXMgc3VjaCBhIGxpdHRsZSBtb3JlIHdvcmsgaXMgcmVxdWlyZWQgaW4NCiBvcmRlciB0byBkb3dubG9hZCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGZvciBlYWNoIHByb2plY3QgYmVmb3JlIHRoZXkNCi1jYW4gYmUgYnVpbHQuICBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byB1c2UgdGhlIGBidWlsZC5iYXRgDQotc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5IHRvIGJ1aWxkIFB5dGhvbiwgYW5kIHBhc3MgdGhlICctZScgc3dpdGNoIHRvDQotdGVsbCBpdCB0byB1c2UgZ2V0X2V4dGVybmFscy5iYXQgdG8gZmV0Y2ggZXh0ZXJuYWwgc291cmNlcyBhbmQgYnVpbGQNCi1UY2wvVGsgYW5kIFRpeC4gIFRvIHVzZSBnZXRfZXh0ZXJuYWxzLmJhdCwgeW91J2xsIG5lZWQgdG8gaGF2ZQ0KLVN1YnZlcnNpb24gaW5zdGFsbGVkIGFuZCBzdm4uZXhlIG9uIHlvdXIgUEFUSC4gIFRoZSBzY3JpcHQgd2lsbCBmZXRjaA0KLWV4dGVybmFsIGxpYnJhcnkgc291cmNlcyBmcm9tIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9leHRlcm5hbCBhbmQgcGxhY2UNCi10aGVtIGluIC4uXGV4dGVybmFscyAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpLg0KK2NhbiBiZSBidWlsdC4gIEhvd2V2ZXIsIGEgc2ltcGxlIHNjcmlwdCBpcyBwcm92aWRlZCB0byBtYWtlIHRoaXMgYXMNCitwYWlubGVzcyBhcyBwb3NzaWJsZSwgY2FsbGVkICJnZXRfZXh0ZXJuYWxzLmJhdCIgYW5kIGxvY2F0ZWQgaW4gdGhpcw0KK2RpcmVjdG9yeS4gIFRoaXMgc2NyaXB0IGV4dHJhY3RzIGFsbCB0aGUgZXh0ZXJuYWwgc3ViLXByb2plY3RzIGZyb20NCisgICAgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsDQordmlhIFN1YnZlcnNpb24gKHNvIHlvdSdsbCBuZWVkIHN2bi5leGUgb24geW91ciBQQVRIKSBhbmQgcGxhY2VzIHRoZW0NCitpbiAuLlxleHRlcm5hbHMgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4NCisNCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRvd25sb2FkIHNvdXJjZXMgZnJvbSBlYWNoIHByb2plY3QncyBob21lcGFnZSwNCit0aG91Z2ggeW91IG1heSBoYXZlIHRvIGNoYW5nZSBmb2xkZXIgbmFtZXMgb3IgcGFzcyB0aGUgbmFtZXMgdG8gTVNCdWlsZA0KK2FzIHRoZSB2YWx1ZXMgb2YgY2VydGFpbiBwcm9wZXJ0aWVzIGluIG9yZGVyIGZvciB0aGUgYnVpbGQgc29sdXRpb24gdG8NCitmaW5kIHRoZW0uICBUaGlzIGlzIGFuIGFkdmFuY2VkIHRvcGljIGFuZCBub3QgbmVjZXNzYXJpbHkgZnVsbHkNCitzdXBwb3J0ZWQuDQogDQogDQogQnVpbGRpbmcgZm9yIEFNRDY0DQpAQCAtMjUxLDkgKzI4MSw3IEBACiBUaGUgYnVpbGQgcHJvY2VzcyBmb3IgQU1ENjQgLyB4NjQgaXMgdmVyeSBzaW1pbGFyIHRvIHN0YW5kYXJkIGJ1aWxkcywNCiB5b3UganVzdCBoYXZlIHRvIHNldCB4NjQgYXMgcGxhdGZvcm0uIEluIGFkZGl0aW9uLCB0aGUgSE9TVF9QWVRIT04NCiBlbnZpcm9ubWVudCB2YXJpYWJsZSBtdXN0IHBvaW50IHRvIGEgUHl0aG9uIGludGVycHJldGVyIChhdCBsZWFzdCAyLjQpLA0KLXRvIHN1cHBvcnQgY3Jvc3MtY29tcGlsYXRpb24gZnJvbSBXaW4zMi4gIE5vdGUgdGhhdCBWaXN1YWwgU3R1ZGlvDQotcmVxdWlyZXMgUHJvZmVzc2lvbmFsIEVkaXRpb24gb3IgYmV0dGVyIGluIG9yZGVyIHRvIGJ1aWxkIDY0LWJpdA0KLWJpbmFyaWVzLg0KK3RvIHN1cHBvcnQgY3Jvc3MtY29tcGlsYXRpb24gZnJvbSBXaW4zMi4NCiANCiANCiBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24NCkBAIC0yODgsMzAgKzMxNiwyMiBAQAogVmlzdWFsIFN0dWRpbyBwcm9wZXJ0aWVzDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQotVGhlIFBDYnVpbGQgc29sdXRpb24gbWFrZXMgaGVhdnkgdXNlIG9mIFZpc3VhbCBTdHVkaW8gcHJvcGVydHkgZmlsZXMNCi0oKi5wcm9wcykuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSB2aWV3ZWQgYW5kIGFsdGVyZWQgaW4gdGhlIFByb3BlcnR5DQotTWFuYWdlciAoVmlldyAtPiBPdGhlciBXaW5kb3dzIC0+IFByb3BlcnR5IE1hbmFnZXIpLg0KK1RoZSBQQ2J1aWxkIHNvbHV0aW9uIG1ha2VzIHVzZSBvZiBWaXN1YWwgU3R1ZGlvIHByb3BlcnR5IGZpbGVzICgqLnByb3BzKQ0KK3RvIHNpbXBsaWZ5IGVhY2ggcHJvamVjdC4gVGhlIHByb3BlcnRpZXMgY2FuIGJlIHZpZXdlZCBpbiB0aGUgUHJvcGVydHkNCitNYW5hZ2VyIChWaWV3IC0+IE90aGVyIFdpbmRvd3MgLT4gUHJvcGVydHkgTWFuYWdlcikgYnV0IHNob3VsZCBiZQ0KK2NhcmVmdWxseSBtb2RpZmllZCBieSBoYW5kLg0KIA0KLVRoZSBwcm9wZXJ0eSBmaWxlcyB1c2VkIGFyZSAoKy0tID0gImFsc28gaW1wb3J0cyIpOg0KLSAqIGRlYnVnIChkZWJ1ZyBtYWNybzogX0RFQlVHKQ0KLSAqIHBnaW5zdHJ1bWVudCAoUEdPKQ0KLSAqIHBndXBkYXRlIChQR08pDQotICAgICstLSBwZ2luc3RydW1lbnQNCi0gKiBweWQgKHB5dGhvbiBleHRlbnNpb24sIHJlbGVhc2UgYnVpbGQpDQotICAgICstLSByZWxlYXNlDQotICAgICstLSBweXByb2plY3QNCi0gKiBweWRfZCAocHl0aG9uIGV4dGVuc2lvbiwgZGVidWcgYnVpbGQpDQotICAgICstLSBkZWJ1Zw0KLSAgICArLS0gcHlwcm9qZWN0DQotICogcHlwcm9qZWN0IChiYXNlIHNldHRpbmdzIGZvciBhbGwgcHJvamVjdHMsIHVzZXIgbWFjcm9zIGxpa2UgUHlEbGxOYW1lKQ0KLSAqIHJlbGVhc2UgKHJlbGVhc2UgbWFjcm86IE5ERUJVRykNCi0gKiBzcWxpdGUzICh1c2VkIG9ubHkgYnkgc3FsaXRlMy52Y3hwcm9qKQ0KLSAqIHg2NCAoQU1ENjQgLyB4NjQgcGxhdGZvcm0gc3BlY2lmaWMgc2V0dGluZ3MpDQorVGhlIHByb3BlcnR5IGZpbGVzIHVzZWQgYXJlOg0KKyAqIHB5dGhvbiAodmVyc2lvbnMsIGRpcmVjdG9yaWVzIGFuZCBidWlsZCBuYW1lcykNCisgKiBweXByb2plY3QgKGJhc2Ugc2V0dGluZ3MgZm9yIGFsbCBwcm9qZWN0cykNCisgKiBvcGVuc3NsICh1c2VkIGJ5IGxpYmVheSBhbmQgc3NsZWF5IHByb2plY3RzKQ0KKyAqIHRjbHRrICh1c2VkIGJ5IF90a2ludGVyLCB0Y2wsIHRrIGFuZCB0aXggcHJvamVjdHMpDQogDQotVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgX1dJTjMyIGFuZCB4NjQgZGVmaW5lcyBfV0lONjQgYW5kDQotX01fWDY0IGFsdGhvdWdoIHRoZSBtYWNyb3MgYXJlIHNldCBieSB0aGUgY29tcGlsZXIsIHRvby4gVGhlIEdVSSBkb2Vzbid0DQotYWx3YXlzIGtub3cgYWJvdXQgdGhlIG1hY3JvcyBhbmQgY29uZnVzZSB0aGUgdXNlciB3aXRoIGZhbHNlDQotaW5mb3JtYXRpb24uDQorVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgYWxsIG9mIHRoZSBidWlsZCBzZXR0aW5ncyBmb3IgZWFjaA0KK3Byb2plY3QsIHdpdGggc29tZSBwcm9qZWN0cyBvdmVycmlkaW5nIGNlcnRhaW4gc3BlY2lmaWMgdmFsdWVzLiBUaGUgR1VJDQorZG9lc24ndCBhbHdheXMgcmVmbGVjdCB0aGUgY29ycmVjdCBzZXR0aW5ncyBhbmQgbWF5IGNvbmZ1c2UgdGhlIHVzZXINCit3aXRoIGZhbHNlIGluZm9ybWF0aW9uLCBlc3BlY2lhbGx5IGZvciBzZXR0aW5ncyB0aGF0IGF1dG9tYXRpY2FsbHkgYWRhcHQNCitmb3IgZGlmZmlyZW50IGNvbmZpZ3VyYXRpb25zLg0KIA0KIA0KIFlvdXIgT3duIEV4dGVuc2lvbiBETExzDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnByb3BzIGIvUENidWlsZC9yZWxlYXNlLnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZlM2U0Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcmVsZWFzZS5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgotICAgIDxQeURlYnVnRXh0IC8+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgotICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCAxM2M5ZDYyLi4wMzljODEwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtMjgsMjUgKzI4LDIzIEBACiBzZXRsb2NhbA0KIA0KIHNldCBwY2J1aWxkPSV+ZHAwDQotc2V0IHByZWZpeD0lcGNidWlsZCUNCitzZXQgcHJlZml4PSVwY2J1aWxkJXdpbjMyXA0KIHNldCBzdWZmaXg9DQogc2V0IHFtb2RlPQ0KIHNldCBkYXNoTz0NCi1zZXQgdGNsdGs9dGNsdGsNCiANCiA6Q2hlY2tPcHRzDQogaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1xIiAoc2V0IHFtb2RlPXllcykgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1kIiAoc2V0IHN1ZmZpeD1fZCkgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiUxIj09Ii14NjQiIChzZXQgcHJlZml4PSVwcmVmaXglYW1kNjQpICYgKHNldCB0Y2x0az10Y2x0azY0KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXBjYnVpbGQlYW1kNjRcKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCi1QQVRIICVQQVRIJTslcGNidWlsZCUuLlxleHRlcm5hbHNcJXRjbHRrJVxiaW4NCi1zZXQgZXhlPSIlcHJlZml4JVxweXRob24lc3VmZml4JSINCi1zZXQgY21kPSVleGUlICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQorc2V0IGV4ZT0lcHJlZml4JXB5dGhvbiVzdWZmaXglLmV4ZQ0KK3NldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgIiVwY2J1aWxkJS4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KIGlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQ0KIA0KIGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLg0KLSVleGUlICIlcGNidWlsZCVccm1weWMucHkiDQorIiVleGUlIiAiJXBjYnVpbGQlcm1weWMucHkiDQogDQogZWNobyBvbg0KICVjbWQlDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zZWxlY3QudmN4cHJvaiBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKaW5kZXggN2MzNmQ2NC4uM2NkMDY5NCAxMDA2NDQKLS0tIGEvUENidWlsZC9zZWxlY3QudmN4cHJvagorKysgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCkBAIC0zNywxODggKzM3LDMzIEBACiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+ezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM308L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnNlbGVjdDwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnByb3BzIGIvUENidWlsZC9zcWxpdGUzLnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2VlMDJjLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvc3FsaXRlMy5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCmluZGV4IGRhZjAxMGQuLmI2MjQ2ZmEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCkBAIC0zNywxODggKzM3LDMxIEBACiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+e0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnNxbGl0ZTM8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC0yMjgsMTIgKzcxLDYgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIiAvPgogICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJraWxsX3B5dGhvbi52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0Pns2ZGUxMDc0NC1lMzk2LTQwYTUtYjRlMi0xYjY5YWE3YzhkMzF9PC9Qcm9qZWN0PgotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9zc2wudmN4cHJvaiBiL1BDYnVpbGQvc3NsLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZWFjOWEuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9zc2wudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+c3NsPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPk1ha2VGaWxlUHJvajwvS2V5d29yZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbGVheS52Y3hwcm9qIGIvUENidWlsZC9zc2xlYXkudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzllM2FjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zc2xlYXkudmN4cHJvagpAQCAtMCwwICsxLDExOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNzbGVheTwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9Im9wZW5zc2wucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorCisgIDxJdGVtR3JvdXA+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxiaW9fc3NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX2JvdGguYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbWV0aC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9wa3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfc3J0cC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxrc3NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19ib3RoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2NiYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19wa3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfYWxncy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfY2VydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfY2lwaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9lcnIyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX3JzYS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfc2Vzcy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX3N0YXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX3R4dC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfdXRzdC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9yZW5lZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHRsc19zcnAuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2wudmN4cHJvaiBiL1BDYnVpbGQvdGNsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyNTQ0YQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdGNsLnZjeHByb2oKQEAgLTAsMCArMSw5MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M308L1Byb2plY3RHdWlkPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0idGNsdGsucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8T3V0RGlyPiQodGNsdGtEaXIpPC9PdXREaXI+CisgICAgPFRhcmdldFBhdGg+JChPdXREaXIpYmluXCQodGNsRExMTmFtZSk8L1RhcmdldFBhdGg+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPEV4cGVjdGVkT3V0cHV0cyBJbmNsdWRlPSIKKyAgICAgICAgJChPdXREaXIpXGJpblwkKHRjbERMTE5hbWUpOworICAgICAgICAkKE91dERpcilcYmluXCQodGNsU2hFeGVOYW1lKTsKKyAgICAgICAgJChPdXREaXIpXGluY2x1ZGVcdGNsLmg7CisgICAgICAgICQoT3V0RGlyKVxsaWJcdGNsJChUY2xNYWpvclZlcnNpb24pOworICAgICAgICAkKE91dERpcilcbGliXHRjbCQoVGNsTWFqb3JWZXJzaW9uKS4kKFRjbE1pbm9yVmVyc2lvbik7CisgICAgICAgICQoT3V0RGlyKVxsaWJcJCh0Y2xMaWJOYW1lKSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUY2xPcHRzIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5zeW1ib2xzPC9UY2xPcHRzPgorICAgIDxUY2xEaXJzPklOU1RBTExESVI9IiQoT3V0RGlyLlRyaW1FbmQoYFxgKSkiIElOU1RBTExfRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIjwvVGNsRGlycz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5ERUJVR0ZMQUdTPSItd2Q0NDU2IC13ZDQ0NTcgLXdkNDQ1OCAtd2Q0NDU5IC13ZDQ5OTYiPC9EZWJ1Z0ZsYWdzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmU+c2V0bG9jYWwKK0AoRXhwZWN0ZWRPdXRwdXRzLT4naWYgbm90IGV4aXN0ICIlKEZ1bGxQYXRoKSIgZ290byBidWlsZCcsJworJykKK2dvdG8gOmVvZgorOmJ1aWxkCitzZXQgVkNJTlNUQUxMRElSPSQoVkNJbnN0YWxsRGlyKQorY2QgL0QgIiQodGNsRGlyKXdpbiIKK25tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGNsT3B0cykgJChUY2xEaXJzKSAkKERlYnVnRmxhZ3MpIGNvcmUgc2hlbGwgZGxscworbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0kKFRjbE1hY2hpbmUpIE9QVFM9JChUY2xPcHRzKSAkKFRjbERpcnMpICQoRGVidWdGbGFncykgaW5zdGFsbC1iaW5hcmllcyBpbnN0YWxsLWxpYnJhcmllcworPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICAKKyAgPFRhcmdldCBOYW1lPSJDb3B5RGxsIiBJbnB1dHM9IiQoT3V0RGlyKVxiaW5cJCh0Y2xETExOYW1lKSIgT3V0cHV0cz0iJChCdWlsZFBhdGgpJCh0Y2xETExOYW1lKSIgQWZ0ZXJUYXJnZXRzPSJCdWlsZCI+CisgICAgPENvcHkgU291cmNlRmlsZXM9IiQoT3V0RGlyKVxiaW5cJCh0Y2xETExOYW1lKSIgRGVzdGluYXRpb25GaWxlcz0iJChCdWlsZFBhdGgpJCh0Y2xETExOYW1lKSIgLz4KKyAgPC9UYXJnZXQ+CisgIAorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpOyQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbHRrLnByb3BzIGIvUENidWlsZC90Y2x0ay5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmJkNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90Y2x0ay5wcm9wcwpAQCAtMCwwICsxLDQ1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRjbE1ham9yVmVyc2lvbj44PC9UY2xNYWpvclZlcnNpb24+CisgICAgPFRjbE1pbm9yVmVyc2lvbj42PC9UY2xNaW5vclZlcnNpb24+CisgICAgPFRjbFBhdGNoTGV2ZWw+NDwvVGNsUGF0Y2hMZXZlbD4KKyAgICA8VGNsUmV2aXNpb24+MTwvVGNsUmV2aXNpb24+CisgICAgPFRrTWFqb3JWZXJzaW9uPiQoVGNsTWFqb3JWZXJzaW9uKTwvVGtNYWpvclZlcnNpb24+CisgICAgPFRrTWlub3JWZXJzaW9uPiQoVGNsTWlub3JWZXJzaW9uKTwvVGtNaW5vclZlcnNpb24+CisgICAgPFRrUGF0Y2hMZXZlbD4kKFRjbFBhdGNoTGV2ZWwpPC9Ua1BhdGNoTGV2ZWw+CisgICAgPFRrUmV2aXNpb24+JChUY2xSZXZpc2lvbik8L1RrUmV2aXNpb24+CisgICAgPFRpeE1ham9yVmVyc2lvbj44PC9UaXhNYWpvclZlcnNpb24+CisgICAgPFRpeE1pbm9yVmVyc2lvbj40PC9UaXhNaW5vclZlcnNpb24+CisgICAgPFRpeFBhdGNoTGV2ZWw+MzwvVGl4UGF0Y2hMZXZlbD4KKyAgICA8VGl4UmV2aXNpb24+NDwvVGl4UmV2aXNpb24+CisgICAgPHRjbERpcj4kKEV4dGVybmFsc0Rpcil0Y2wtY29yZS0kKFRjbE1ham9yVmVyc2lvbikuJChUY2xNaW5vclZlcnNpb24pLiQoVGNsUGF0Y2hMZXZlbCkuJChUY2xSZXZpc2lvbilcPC90Y2xEaXI+CisgICAgPHRrRGlyPiQoRXh0ZXJuYWxzRGlyKXRrLSQoVGtNYWpvclZlcnNpb24pLiQoVGtNaW5vclZlcnNpb24pLiQoVGtQYXRjaExldmVsKS4kKFRrUmV2aXNpb24pXDwvdGtEaXI+CisgICAgPHRpeERpcj4kKEV4dGVybmFsc0Rpcil0aXgtJChUaXhNYWpvclZlcnNpb24pLiQoVGl4TWlub3JWZXJzaW9uKS4kKFRpeFBhdGNoTGV2ZWwpLiQoVGl4UmV2aXNpb24pXDwvdGl4RGlyPgorICAgIDx0Y2x0a0Rpcj4kKEV4dGVybmFsc0Rpcil0Y2x0a1w8L3RjbHRrRGlyPgorICAgIDx0Y2x0a0RpciBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQoRXh0ZXJuYWxzRGlyKXRjbHRrNjRcPC90Y2x0a0Rpcj4KKyAgICA8VGNsRGVidWdFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+ZzwvVGNsRGVidWdFeHQ+CisgICAgPHRjbERMTE5hbWU+dGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmRsbDwvdGNsRExMTmFtZT4KKyAgICA8dGNsTGliTmFtZT50Y2wkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90Y2xMaWJOYW1lPgorICAgIDx0Y2xTaEV4ZU5hbWU+dGNsc2gkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkuZXhlPC90Y2xTaEV4ZU5hbWU+CisgICAgPHRrRExMTmFtZT50ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkuZGxsPC90a0RMTE5hbWU+CisgICAgPHRrTGliTmFtZT50ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90a0xpYk5hbWU+CisgICAgPHRpeERMTE5hbWU+dGl4JChUaXhNYWpvclZlcnNpb24pJChUaXhNaW5vclZlcnNpb24pJChUY2xEZWJ1Z0V4dCkuZGxsPC90aXhETExOYW1lPgorICAgIDx0aXhETExQYXRoPiQodGNsdGtEaXIpbGliXHRpeCQoVGl4TWFqb3JWZXJzaW9uKS4kKFRpeE1pbm9yVmVyc2lvbikuJChUaXhQYXRjaExldmVsKVwkKHRpeERMTE5hbWUpPC90aXhETExQYXRoPgorICAgIDx0Y2x0a0xpYj4kKHRjbHRrRGlyKWxpYlx0Y2wkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliOyQodGNsdGtEaXIpbGliXHRrJChUa01ham9yVmVyc2lvbikkKFRrTWlub3JWZXJzaW9uKXQkKFRjbERlYnVnRXh0KS5saWI8L3RjbHRrTGliPgorICAgIDxUY2xNYWNoaW5lPklYODY8L1RjbE1hY2hpbmU+CisgICAgPFRjbE1hY2hpbmUgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj5BTUQ2NDwvVGNsTWFjaGluZT4KKyAgICA8VGNsVmVyc2lvbnM+VENMX01BSk9SX1ZFUlNJT049JChUY2xNYWpvclZlcnNpb24pIFRDTF9NSU5PUl9WRVJTSU9OPSQoVGNsTWlub3JWZXJzaW9uKSBUQ0xfUEFUQ0hfTEVWRUw9JChUY2xQYXRjaExldmVsKTwvVGNsVmVyc2lvbnM+CisgICAgPFRjbFNob3J0VmVyc2lvbnM+VENMX01BSk9SPSQoVGNsTWFqb3JWZXJzaW9uKSBUQ0xfTUlOT1I9JChUY2xNaW5vclZlcnNpb24pIFRDTF9QQVRDSD0kKFRjbFBhdGNoTGV2ZWwpPC9UY2xTaG9ydFZlcnNpb25zPgorICAgIDxUa1ZlcnNpb25zPlRLX01BSk9SX1ZFUlNJT049JChUa01ham9yVmVyc2lvbikgVEtfTUlOT1JfVkVSU0lPTj0kKFRrTWlub3JWZXJzaW9uKSBUS19QQVRDSF9MRVZFTD0kKFRrUGF0Y2hMZXZlbCk8L1RrVmVyc2lvbnM+CisKKyAgICA8QnVpbGREaXJUb3A+UmVsZWFzZTwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5EZWJ1ZzwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChUY2xNYWNoaW5lKSAhPSAnSVg4NiciPiQoQnVpbGREaXJUb3ApXyQoVGNsTWFjaGluZSk8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzE0LjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEzPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxMi4wJyI+JChCdWlsZERpclRvcClfVkMxMjwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChWaXN1YWxTdHVkaW9WZXJzaW9uKSA9PSAnMTEuMCciPiQoQnVpbGREaXJUb3ApX1ZDMTE8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzEwLjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEwPC9CdWlsZERpclRvcD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGl4LnZjeHByb2ogYi9QQ2J1aWxkL3RpeC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YTZiODQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3RpeC52Y3hwcm9qCkBAIC0wLDAgKzEsOTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT50aXg8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSJ0Y2x0ay5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxPdXREaXI+JCh0Y2x0a0Rpcik8L091dERpcj4KKyAgICA8VGFyZ2V0UGF0aD4kKHRpeERMTFBhdGgpPC9UYXJnZXRQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxFeHBlY3RlZE91dHB1dHMgSW5jbHVkZT0iJChUYXJnZXRQYXRoKSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUa09wdHM+bXN2Y3J0PC9Ua09wdHM+CisgICAgPFRrT3B0cyBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+c3ltYm9scyxtc3ZjcnQ8L1RrT3B0cz4KKyAgICA8VGl4RGlycz5CVUlMRERJUlRPUD0iJChCdWlsZERpclRvcCkiIFRDTF9ESVI9IiQodGNsRGlyLlRyaW1FbmQoYFxgKSkiIFRLX0RJUj0iJCh0a0Rpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMX0RJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RpeERpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUc9MSBOT0RFQlVHPTAgVENMX0RCR1g9ZyBERUJVR0ZMQUdTPSItd2Q0NDU2IC13ZDQ0NTcgLXdkNDQ1OCAtd2Q0NDU5IC13ZDQ5OTYiPC9EZWJ1Z0ZsYWdzPgorICAgIDxEZWJ1Z0ZsYWdzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknICE9ICdEZWJ1ZyciPkRFQlVHPTAgTk9ERUJVRz0xPC9EZWJ1Z0ZsYWdzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmU+c2V0bG9jYWwKK0AoRXhwZWN0ZWRPdXRwdXRzLT4naWYgbm90IGV4aXN0ICIlKEZ1bGxQYXRoKSIgZ290byBidWlsZCcsJworJykKK2dvdG8gOmVvZgorOmJ1aWxkCitzZXQgVkNJTlNUQUxMRElSPSQoVkNJbnN0YWxsRGlyKQorY2QgL0QgIiQodGl4RGlyKXdpbiIKK25tYWtlIC9ub2xvZ28gLWYgbWFrZWZpbGUudmMgTUFDSElORT0kKFRjbE1hY2hpbmUpICQoRGVidWdGbGFncykgJChUY2xTaG9ydFZlcnNpb25zKSAkKFRpeERpcnMpIGFsbCBpbnN0YWxsCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lPnJtZGlyIC9xL3MgIiQoT3V0RGlyLlRyaW1FbmQoYFxgKSkiPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0idGNsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2I1ZmQ2ZjFkLTEyOWUtNGJmZi05MzQwLTAzNjA2ZmFjNzI4M308L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0ay52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns3ZTg1ZWNjZi1hNzJjLTRkYTQtOWU1Mi04ODQ1MDhlODBiYTF9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisKKyAgPFRhcmdldCBOYW1lPSJDbGVhbiIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChPdXREaXIpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC90ay52Y3hwcm9qIGIvUENidWlsZC90ay52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzQ5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3RrLnZjeHByb2oKQEAgLTAsMCArMSw5NSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnRrPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSJ0Y2x0ay5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxPdXREaXI+JCh0Y2x0a0Rpcik8L091dERpcj4KKyAgICA8VGFyZ2V0UGF0aD4kKE91dERpciliaW5cJCh0a0RMTE5hbWUpPC9UYXJnZXRQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxFeHBlY3RlZE91dHB1dHMgSW5jbHVkZT0iCisgICAgICAgICQoT3V0RGlyKWJpblwkKHRrRExMTmFtZSk7CisgICAgICAgICQoT3V0RGlyKWluY2x1ZGVcdGsuaDsKKyAgICAgICAgJChPdXREaXIpbGliXCQodGtMaWJOYW1lKTsKKyAgICAgICAgJChPdXREaXIpbGliXHRrJChUa01ham9yVmVyc2lvbikuJChUa01pbm9yVmVyc2lvbikiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGtPcHRzPm1zdmNydDwvVGtPcHRzPgorICAgIDxUa09wdHMgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPnN5bWJvbHMsbXN2Y3J0PC9Ua09wdHM+CisgICAgPFRrRGlycz5UQ0xESVI9IiQodGNsRGlyLlRyaW1FbmQoYFxgKSkiIElOU1RBTExESVI9IiQoT3V0RGlyLlRyaW1FbmQoYFxgKSkiPC9Ua0RpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUdGTEFHUz0iLXdkNDQ1NiAtd2Q0NDU3IC13ZDQ0NTggLXdkNDQ1OSAtd2Q0OTk2IjwvRGVidWdGbGFncz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lPnNldGxvY2FsCitAKEV4cGVjdGVkT3V0cHV0cy0+J2lmIG5vdCBleGlzdCAiJShGdWxsUGF0aCkiIGdvdG8gYnVpbGQnLCcKKycpCitnb3RvIDplb2YKKzpidWlsZAorc2V0IFZDSU5TVEFMTERJUj0kKFZDSW5zdGFsbERpcikKK2NkIC9EICIkKHRrRGlyKXdpbiIKK25tYWtlIC9ub2xvZ28gLWYgbWFrZWZpbGUudmMgUkM9cmMgTUFDSElORT0kKFRjbE1hY2hpbmUpIE9QVFM9JChUa09wdHMpICQoVGtEaXJzKSAkKERlYnVnRmxhZ3MpIGFsbAorbm1ha2UgL25vbG9nbyAtZiBtYWtlZmlsZS52YyBSQz1yYyBNQUNISU5FPSQoVGNsTWFjaGluZSkgT1BUUz0kKFRrT3B0cykgJChUa0RpcnMpICQoRGVidWdGbGFncykgaW5zdGFsbC1iaW5hcmllcyBpbnN0YWxsLWxpYnJhcmllcworPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0Y2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjVmZDZmMWQtMTI5ZS00YmZmLTkzNDAtMDM2MDZmYWM3MjgzfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQ29weURsbCIgSW5wdXRzPSIkKE91dERpcilcYmluXCQodGtETExOYW1lKSIgT3V0cHV0cz0iJChCdWlsZFBhdGgpJCh0a0RMTE5hbWUpIiBBZnRlclRhcmdldHM9IkJ1aWxkIj4KKyAgICA8Q29weSBTb3VyY2VGaWxlcz0iJChPdXREaXIpXGJpblwkKHRrRExMTmFtZSkiIERlc3RpbmF0aW9uRmlsZXM9IiQoQnVpbGRQYXRoKSQodGtETExOYW1lKSIgLz4KKyAgPC9UYXJnZXQ+CisgIAorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpOyQoQnVpbGRQYXRoKSQodGtETExOYW1lKSIgLz4KKyAgICA8UmVtb3ZlRGlyIERpcmVjdG9yaWVzPSIkKEludERpcikiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvaiBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagppbmRleCBjOWQ1Mjc4Li5hMzA3MWZiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKKysrIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCkBAIC0zOSwxNzAgKzM5LDMxIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+dW5pY29kZWRhdGE8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ZzOXRvMTAucHkgYi9QQ2J1aWxkL3ZzOXRvMTAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViN2RhYjUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC92czl0bzEwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotI1J1biB0aGlzIGZpbGUgYWZ0ZXIgYXV0b21hdGljIGNvbnZlcnNpb24gb2YgdGhlIFZpc3VhbFN0dWRpbyAyMDA4IHNvbHV0aW9uIGJ5IFZpc3VhbFN0dWRpbyAyMDEwLgotI1RoaXMgY2FuIGJlIGRvbmUgd2hlbmV2ZXIgdGhlIDIwMDggc29sdXRpb24gY2hhbmdlcy4KLSNJdCB3aWxsIG1ha2UgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIGFuZCB1cGRhdGVzIHRvIHRoZSB2Y3hwcm9qIGZpbGVzCi0jdGhlIC5wcm9wcyBmaWxlcyBuZWVkIHRvIGJlIG1haW50YWluZWQgYnkgaGFuZCBpZiB0aGUgLnZzcHJvcHMgZmlsZXMgY2hhbmdlCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLQotZGVmIHZzOXRvMTAoc3JjLCBkZXN0KToKLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHNyYyk6Ci0gICAgICAgIHBhdGgsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgZXh0Lmxvd2VyKCkgbm90IGluICgnLnZjeHByb2onLCk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc3JjLCBuYW1lKSkKLSAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkZXN0LCBuYW1lKSkKLSAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChmaWxlbmFtZSwgZGVzdG5hbWUpKQotCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgbGFzdGxpbmUgPSBiIiIKLSAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZpbjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKLSAgICAgICAgICAgICAgICAjcmVtb3ZlIHJlZHVuZGFudCBsaW5rZXIgb3V0cHV0IGluZm8KLSAgICAgICAgICAgICAgICBpZiBiIjxPdXRwdXRMaW5lPiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBiIjxQcm9ncmFtRGF0YWJhc2VGaWxlPiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRMaWJyYXJ5PiIgaW4gbGluZSBhbmQgYiI8L0ltcG9ydExpYnJhcnk+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgI2FkZCBuZXcgcHJvcGVydHkgc2hlZXQgdG8gdGhlIHB5dGhvbmNvcmUKLSAgICAgICAgICAgICAgICBpZiBpbXBvcnRncm91cCBhbmQgInB5dGhvbmNvcmUiIGluIG5hbWUubG93ZXIoKToKLSAgICAgICAgICAgICAgICAgICAgaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIiZGVidWcucHJvcHMiIGluIGxhc3RsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmVfZC5wcm9wcyIgLz5cclxuJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYiJweXRob25jb3JlIiBub3QgaW4gbGFzdGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZS5wcm9wcyIgLz5cclxuJykKLSAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRHcm91cCBDb25kaXRpb24iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgICAgIGxhc3RsaW5lID0gbGluZQotICAgICAgICB3aXRoIG9wZW4oZGVzdG5hbWUsICd3YicpIGFzIGZvdXQ6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgc3JjID0gIi4iIGlmIGxlbihzeXMuYXJndikgPCAyIGVsc2Ugc3lzLmFyZ3ZbMV0KLSAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLmFic3BhdGgoc3JjKSkKLSAgICBkZXN0ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmMsICIuLiIsIG5hbWUgKyAiVXBkIikpCi0gICAgb3MubWFrZWRpcnMoZGVzdCkKLSAgICB2czl0bzEwKHNyYywgZGVzdCkKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdnM5dG84LnB5IGIvUENidWlsZC92czl0bzgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiODhhMTYuLjAwMDAwMDAKLS0tIGEvUENidWlsZC92czl0bzgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgb3MKLQotZGVmIHZzOXRvOChzcmMsIGRlc3QpOgotICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgcGF0aCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBleHQubG93ZXIoKSBub3QgaW4gKCcuc2xuJywgJy52Y3Byb2onLCAnLnZzcHJvcHMnKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzcmMsIG5hbWUpKQotICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRlc3QsIG5hbWUpKQotICAgICAgICBwcmludCgiJXMgLT4gJXMiICUgKGZpbGVuYW1lLCBkZXN0bmFtZSkpCi0KLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnclUnKSBhcyBmaW46Ci0gICAgICAgICAgICBsaW5lcyA9IGZpbi5yZWFkKCkKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnVmVyc2lvbj0iOSwwMCInLCAnVmVyc2lvbj0iOC4wMCInKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCdWZXJzaW9uPSI5LjAwIicsICdWZXJzaW9uPSI4LjAwIicpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ0Zvcm1hdCBWZXJzaW9uIDEwLjAwJywgJ0Zvcm1hdCBWZXJzaW9uIDkuMDAnKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCdWaXN1YWwgU3R1ZGlvIDIwMDgnLCAnVmlzdWFsIFN0dWRpbyAyMDA1JykKLQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCd3aW5pbnN0LTkuMCcsICd3aW5pbnN0LTguMCcpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJy4uXFwnLCAnLi5cXC4uXFwnKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCcuLlxcLi5cXC4uXFwuLlxcJywgJy4uXFwuLlxcLi5cXCcpCi0KLSAgICAgICAgICAgICMgQmFoLiBWUzguMCBkb2VzIG5vdCBleHBhbmQgbWFjcm9zIGluIGZpbGUgbmFtZXMuCi0gICAgICAgICAgICAjIFJlcGxhY2UgdGhlbSBoZXJlLgotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCckKHNxbGl0ZTNEaXIpJywgJy4uXFwuLlxcLi5cXHNxbGl0ZS0zLjYuMjEnKQotCi0gICAgICAgIHdpdGggb3BlbihkZXN0bmFtZSwgJ3diJykgYXMgZm91dDoKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgiXG4iLCAiXHJcbiIpLmVuY29kZSgpCi0gICAgICAgICAgICBmb3V0LndyaXRlKGxpbmVzKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHZzOXRvOChzcmM9Ii4iLCBkZXN0PSIuLi9QQy9WUzguMCIpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ogYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKaW5kZXggY2Y1MThlOS4uNTQwMjM1YSAxMDA2NDQKLS0tIGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagpAQCAtMzksMTcwICszOSwzMSBAQAogICAgIDxSb290TmFtZXNwYWNlPndpbnNvdW5kPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnNvdW5kLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC94NjQucHJvcHMgYi9QQ2J1aWxkL3g2NC5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg1YzBlZi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3g2NC5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIENvbmRpdGlvbj0iJyQoSE9TVF9QWVRIT04pJyE9JyciPgotICAgIDxQeXRob25FeGU+JChIT1NUX1BZVEhPTik8L1B5dGhvbkV4ZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5dGhvbkV4ZSI+Ci0gICAgICA8VmFsdWU+JChQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKaW5kZXggYWJmNDFmOS4uMDE0NGZhOSAxMDA2NDQKLS0tIGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC0xLDYgKzEsMTQgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzEsMTU4ICszOSw0NCBAQAogICAgIDxSb290TmFtZXNwYWNlPnh4bGltaXRlZDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19XSU4zMjtfV0lORExMO1B5X0xJTUlURURfQVBJPTB4MDMwNDAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO1B5X0xJTUlURURfQVBJPTB4MDMwNTAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJPTB4MDMwNDAwMDA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk9MHgwMzA0MDAwMDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24zZGxsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezg4NWQ0ODk4LWQwOGQtNDA5MS05YzQwLWM3MDBjZmUzZmM1YX08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KZGlmZiAtLWdpdCBhL1BhcnNlci9QeXRob24uYXNkbCBiL1BhcnNlci9QeXRob24uYXNkbAppbmRleCBkZWJkODllLi5jZDA4MzJkIDEwMDY0NAotLS0gYS9QYXJzZXIvUHl0aG9uLmFzZGwKKysrIGIvUGFyc2VyL1B5dGhvbi5hc2RsCkBAIC05LDEzICs5LDE0IEBACiAgICAgICAgIC0tIG5vdCByZWFsbHkgYW4gYWN0dWFsIG5vZGUgYnV0IHVzZWZ1bCBpbiBKeXRob24ncyB0eXBlc3lzdGVtLgogICAgICAgICB8IFN1aXRlKHN0bXQqIGJvZHkpCiAKLSAgICBzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHByKiBkZWNvcmF0b3JfbGlzdCwgZXhwcj8gcmV0dXJucykKLSAgICAgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgCisgICAgc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQorICAgICAgICAgIHwgQXN5bmNGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHByKiBkZWNvcmF0b3JfbGlzdCwgZXhwcj8gcmV0dXJucykKKworICAgICAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLAogICAgICAgICAgICAgIGV4cHIqIGJhc2VzLAogICAgICAgICAgICAgIGtleXdvcmQqIGtleXdvcmRzLAotICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLAotICAgICAgICAgICAgIGV4cHI/IGt3YXJncywKICAgICAgICAgICAgICBzdG10KiBib2R5LAogICAgICAgICAgICAgIGV4cHIqIGRlY29yYXRvcl9saXN0KQogICAgICAgICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQpAQCAtMjYsOSArMjcsMTEgQEAKIAogICAgICAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKICAgICAgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBBc3luY0ZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCiAgICAgICAgICAgfCBXaGlsZShleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKICAgICAgICAgICB8IElmKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQogICAgICAgICAgIHwgV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHkpCisgICAgICAgICAgfCBBc3luY1dpdGgod2l0aGl0ZW0qIGl0ZW1zLCBzdG10KiBib2R5KQogCiAgICAgICAgICAgfCBSYWlzZShleHByPyBleGMsIGV4cHI/IGNhdXNlKQogICAgICAgICAgIHwgVHJ5KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UsIHN0bXQqIGZpbmFsYm9keSkKQEAgLTU5LDEzICs2MiwxMyBAQAogICAgICAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKICAgICAgICAgIHwgR2VuZXJhdG9yRXhwKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQogICAgICAgICAgLS0gdGhlIGdyYW1tYXIgY29uc3RyYWlucyB3aGVyZSB5aWVsZCBleHByZXNzaW9ucyBjYW4gb2NjdXIKKyAgICAgICAgIHwgQXdhaXQoZXhwciB2YWx1ZSkKICAgICAgICAgIHwgWWllbGQoZXhwcj8gdmFsdWUpCiAgICAgICAgICB8IFlpZWxkRnJvbShleHByIHZhbHVlKQogICAgICAgICAgLS0gbmVlZCBzZXF1ZW5jZXMgZm9yIGNvbXBhcmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgogICAgICAgICAgLS0geCA8IDQgPCAzIGFuZCAoeCA8IDQpIDwgMwogICAgICAgICAgfCBDb21wYXJlKGV4cHIgbGVmdCwgY21wb3AqIG9wcywgZXhwciogY29tcGFyYXRvcnMpCi0gICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcywKLSAgICAgICAgICAgICBleHByPyBzdGFyYXJncywgZXhwcj8ga3dhcmdzKQorICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMpCiAgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KICAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CiAgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCkBAIC03Nyw3ICs4MCw3IEBACiAgICAgICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKICAgICAgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQogICAgICAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCi0gICAgICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCisgICAgICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkKICAgICAgICAgIHwgVHVwbGUoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkKIAogICAgICAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKQEAgLTg1LDEzICs4OCwxMyBAQAogCiAgICAgZXhwcl9jb250ZXh0ID0gTG9hZCB8IFN0b3JlIHwgRGVsIHwgQXVnTG9hZCB8IEF1Z1N0b3JlIHwgUGFyYW0KIAotICAgIHNsaWNlID0gU2xpY2UoZXhwcj8gbG93ZXIsIGV4cHI/IHVwcGVyLCBleHByPyBzdGVwKSAKLSAgICAgICAgICB8IEV4dFNsaWNlKHNsaWNlKiBkaW1zKSAKLSAgICAgICAgICB8IEluZGV4KGV4cHIgdmFsdWUpIAorICAgIHNsaWNlID0gU2xpY2UoZXhwcj8gbG93ZXIsIGV4cHI/IHVwcGVyLCBleHByPyBzdGVwKQorICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpCisgICAgICAgICAgfCBJbmRleChleHByIHZhbHVlKQogCi0gICAgYm9vbG9wID0gQW5kIHwgT3IgCisgICAgYm9vbG9wID0gQW5kIHwgT3IKIAotICAgIG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKKyAgICBvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBNYXRNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0CiAgICAgICAgICAgICAgICAgIHwgUlNoaWZ0IHwgQml0T3IgfCBCaXRYb3IgfCBCaXRBbmQgfCBGbG9vckRpdgogCiAgICAgdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCkBAIC0xMDksOCArMTEyLDggQEAKICAgICBhcmcgPSAoaWRlbnRpZmllciBhcmcsIGV4cHI/IGFubm90YXRpb24pCiAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0gICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbAotICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCisgICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbCAoTlVMTCBpZGVudGlmaWVyIGZvciAqKmt3YXJncykKKyAgICBrZXl3b3JkID0gKGlkZW50aWZpZXI/IGFyZywgZXhwciB2YWx1ZSkKIAogICAgIC0tIGltcG9ydCBuYW1lIHdpdGggb3B0aW9uYWwgJ2FzJyBhbGlhcy4KICAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggZmMxYjE2Yy4uMTIxY2RhYiAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTEsMjU1ICsxLDUyIEBACi0iIiJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgWmVwaHlyIEFic3RyYWN0IFN5bnRheCBEZWZpbml0aW9uIExhbmd1YWdlLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGFyc2VyIGZvciBBU0RMIFsxXSBkZWZpbml0aW9uIGZpbGVzLiBSZWFkcyBpbiBhbiBBU0RMIGRlc2NyaXB0aW9uIGFuZCBwYXJzZXMKKyMgaXQgaW50byBhbiBBU1QgdGhhdCBkZXNjcmliZXMgaXQuCisjCisjIFRoZSBFQk5GIHdlJ3JlIHBhcnNpbmcgaGVyZTogRmlndXJlIDEgb2YgdGhlIHBhcGVyIFsxXS4gRXh0ZW5kZWQgdG8gc3VwcG9ydAorIyBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGFmdGVyIGEgcHJvZHVjdC4gV29yZHMgc3RhcnRpbmcgd2l0aCBDYXBpdGFsIGxldHRlcnMKKyMgYXJlIHRlcm1pbmFscy4gTGl0ZXJhbCB0b2tlbnMgYXJlIGluICJkb3VibGUgcXVvdGVzIi4gT3RoZXJzIGFyZQorIyBub24tdGVybWluYWxzLiBJZCBpcyBlaXRoZXIgVG9rZW5JZCBvciBDb25zdHJ1Y3RvcklkLgorIworIyBtb2R1bGUgICAgICAgIDo6PSAibW9kdWxlIiBJZCAieyIgW2RlZmluaXRpb25zXSAifSIKKyMgZGVmaW5pdGlvbnMgICA6Oj0geyBUeXBlSWQgIj0iIHR5cGUgfQorIyB0eXBlICAgICAgICAgIDo6PSBwcm9kdWN0IHwgc3VtCisjIHByb2R1Y3QgICAgICAgOjo9IGZpZWxkcyBbImF0dHJpYnV0ZXMiIGZpZWxkc10KKyMgZmllbGRzICAgICAgICA6Oj0gIigiIHsgZmllbGQsICIsIiB9IGZpZWxkICIpIgorIyBmaWVsZCAgICAgICAgIDo6PSBUeXBlSWQgWyI/IiB8ICIqIl0gW0lkXQorIyBzdW0gICAgICAgICAgIDo6PSBjb25zdHJ1Y3RvciB7ICJ8IiBjb25zdHJ1Y3RvciB9IFsiYXR0cmlidXRlcyIgZmllbGRzXQorIyBjb25zdHJ1Y3RvciAgIDo6PSBDb25zdHJ1Y3RvcklkIFtmaWVsZHNdCisjCisjIFsxXSAiVGhlIFplcGh5ciBBYnN0cmFjdCBTeW50YXggRGVzY3JpcHRpb24gTGFuZ3VhZ2UiIGJ5IFdhbmcsIGV0LiBhbC4gU2VlCisjICAgICBodHRwOi8vYXNkbC5zb3VyY2Vmb3JnZS5uZXQvCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQoraW1wb3J0IHJlCiAKLVNlZSBodHRwOi8vYXNkbC5zb3VyY2Vmb3JnZS5uZXQvIGFuZAotaHR0cDovL3d3dy5jcy5wcmluY2V0b24uZWR1L3Jlc2VhcmNoL3RlY2hyZXBzL1RSLTU1NC05NworX19hbGxfXyA9IFsKKyAgICAnYnVpbHRpbl90eXBlcycsICdwYXJzZScsICdBU1QnLCAnTW9kdWxlJywgJ1R5cGUnLCAnQ29uc3RydWN0b3InLAorICAgICdGaWVsZCcsICdTdW0nLCAnUHJvZHVjdCcsICdWaXNpdG9yQmFzZScsICdDaGVjaycsICdjaGVjayddCiAKLU9ubHkgc3VwcG9ydHMgdG9wIGxldmVsIG1vZHVsZSBkZWNsLCBub3Qgdmlldy4gIEknbSBndWVzc2luZyB0aGF0IHZpZXcKLWlzIGludGVuZGVkIHRvIHN1cHBvcnQgdGhlIGJyb3dzZXIgYW5kIEknbSBub3QgaW50ZXJlc3RlZCBpbiB0aGUKLWJyb3dzZXIuCisjIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBkZWZpbmUgbm9kZXMgaW50byB3aGljaCB0aGUgQVNETCBkZXNjcmlwdGlvbiBpcyBwYXJzZWQuCisjIE5vdGU6IHRoaXMgaXMgYSAibWV0YS1BU1QiLiBBU0RMIGZpbGVzIChzdWNoIGFzIFB5dGhvbi5hc2RsKSBkZXNjcmliZSB0aGUgQVNUCisjIHN0cnVjdHVyZSB1c2VkIGJ5IGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIEJ1dCBBU0RMIGZpbGVzIHRoZW1zZWx2ZXMgbmVlZCB0byBiZQorIyBwYXJzZWQuIFRoaXMgbW9kdWxlIHBhcnNlcyBBU0RMIGZpbGVzIGFuZCB1c2VzIGEgc2ltcGxlIEFTVCB0byByZXByZXNlbnQgdGhlbS4KKyMgU2VlIHRoZSBFQk5GIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWNhbCBjb25uZWN0aW9uCisjIGJldHdlZW4gdGhlIHZhcmlvdXMgbm9kZSB0eXBlcy4KIAotQ2hhbmdlcyBmb3IgUHl0aG9uOiBBZGQgc3VwcG9ydCBmb3IgbW9kdWxlIHZlcnNpb25zCi0iIiIKK2J1aWx0aW5fdHlwZXMgPSB7J2lkZW50aWZpZXInLCAnc3RyaW5nJywgJ2J5dGVzJywgJ2ludCcsICdvYmplY3QnLCAnc2luZ2xldG9uJ30KIAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBzcGFyawotCi1kZWYgb3V0cHV0KCpzdHJpbmdzKToKLSAgICBmb3IgcyBpbiBzdHJpbmdzOgotICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0cihzKSArICJcbiIpCi0KLQotY2xhc3MgVG9rZW4ob2JqZWN0KToKLSAgICAjIHNwYXJrIHNlZW1zIHRvIGRpc3BhdGNoIGluIHRoZSBwYXJzZXIgYmFzZWQgb24gYSB0b2tlbidzCi0gICAgIyB0eXBlIGF0dHJpYnV0ZQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBsaW5lbm8pOgotICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudHlwZQotCitjbGFzcyBBU1Q6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc3RyKHNlbGYpCi0KLWNsYXNzIElkKFRva2VuKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUsIGxpbmVubyk6Ci0gICAgICAgIHNlbGYudHlwZSA9ICdJZCcKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKLQotY2xhc3MgU3RyaW5nKFRva2VuKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUsIGxpbmVubyk6Ci0gICAgICAgIHNlbGYudHlwZSA9ICdTdHJpbmcnCi0gICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotCi1jbGFzcyBBU0RMU3ludGF4RXJyb3IoRXhjZXB0aW9uKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lbm8sIHRva2VuPU5vbmUsIG1zZz1Ob25lKToKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLSAgICAgICAgc2VsZi50b2tlbiA9IHRva2VuCi0gICAgICAgIHNlbGYubXNnID0gbXNnCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5tc2cgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAiRXJyb3IgYXQgJyVzJywgbGluZSAlZCIgJSAoc2VsZi50b2tlbiwgc2VsZi5saW5lbm8pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIiVzLCBsaW5lICVkIiAlIChzZWxmLm1zZywgc2VsZi5saW5lbm8pCi0KLWNsYXNzIEFTRExTY2FubmVyKHNwYXJrLkdlbmVyaWNTY2FubmVyLCBvYmplY3QpOgotCi0gICAgZGVmIHRva2VuaXplKHNlbGYsIGlucHV0KToKLSAgICAgICAgc2VsZi5ydiA9IFtdCi0gICAgICAgIHNlbGYubGluZW5vID0gMQotICAgICAgICBzdXBlcihBU0RMU2Nhbm5lciwgc2VsZikudG9rZW5pemUoaW5wdXQpCi0gICAgICAgIHJldHVybiBzZWxmLnJ2Ci0KLSAgICBkZWYgdF9pZChzZWxmLCBzKToKLSAgICAgICAgciJbXHdcLl0rIgotICAgICAgICAjIFhYWCBkb2Vzbid0IGRpc3Rpbmd1aXNoIHVwcGVyIHZzLiBsb3dlciwgd2hpY2ggaXMKLSAgICAgICAgIyBzaWduaWZpY2FudCBmb3IgQVNETC4KLSAgICAgICAgc2VsZi5ydi5hcHBlbmQoSWQocywgc2VsZi5saW5lbm8pKQotCi0gICAgZGVmIHRfc3RyaW5nKHNlbGYsIHMpOgotICAgICAgICByJyJbXiJdKiInCi0gICAgICAgIHNlbGYucnYuYXBwZW5kKFN0cmluZyhzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF94eHgoc2VsZiwgcyk6ICMgbm90IHN1cmUgd2hhdCB0aGlzIHByb2R1Y3Rpb24gbWVhbnMKLSAgICAgICAgciI8PSIKLSAgICAgICAgc2VsZi5ydi5hcHBlbmQoVG9rZW4ocywgc2VsZi5saW5lbm8pKQotCi0gICAgZGVmIHRfcHVuY3R1YXRpb24oc2VsZiwgcyk6Ci0gICAgICAgIHIiW1x7XH1cKlw9XHxcKFwpXCxcP1w6XSIKLSAgICAgICAgc2VsZi5ydi5hcHBlbmQoVG9rZW4ocywgc2VsZi5saW5lbm8pKQotCi0gICAgZGVmIHRfY29tbWVudChzZWxmLCBzKToKLSAgICAgICAgciJcLVwtW15cbl0qIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdF9uZXdsaW5lKHNlbGYsIHMpOgotICAgICAgICByIlxuIgotICAgICAgICBzZWxmLmxpbmVubyArPSAxCi0KLSAgICBkZWYgdF93aGl0ZXNwYWNlKHNlbGYsIHMpOgotICAgICAgICByIlsgXHRdKyIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRfZGVmYXVsdChzZWxmLCBzKToKLSAgICAgICAgciIgLiArIgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bm1hdGNoZWQgaW5wdXQ6ICVyIiAlIHMpCi0KLWNsYXNzIEFTRExQYXJzZXIoc3BhcmsuR2VuZXJpY1BhcnNlciwgb2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHN1cGVyKEFTRExQYXJzZXIsIHNlbGYpLl9faW5pdF9fKCJtb2R1bGUiKQotCi0gICAgZGVmIHR5cGVzdHJpbmcoc2VsZiwgdG9rKToKLSAgICAgICAgcmV0dXJuIHRvay50eXBlCi0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgdG9rKToKLSAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHRvay5saW5lbm8sIHRvaykKLQotICAgIGRlZiBwX21vZHVsZV8wKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgeyB9ICIKLSAgICAgICAgbW9kdWxlLCBuYW1lLCBfMCwgXzEgPSBpbmZvCi0gICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lKQotCi0gICAgZGVmIHBfbW9kdWxlKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgeyBkZWZpbml0aW9ucyB9ICIKLSAgICAgICAgbW9kdWxlLCBuYW1lLCBfMCwgZGVmaW5pdGlvbnMsIF8xID0gaW5mbwotICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmaW5pdGlvbnMpCi0KLSAgICBkZWYgcF9kZWZpbml0aW9uXzAoc2VsZiwgZGVmaW5pdGlvbik6Ci0gICAgICAgICIgZGVmaW5pdGlvbnMgOjo9IGRlZmluaXRpb24gIgotICAgICAgICByZXR1cm4gZGVmaW5pdGlvblswXQotCi0gICAgZGVmIHBfZGVmaW5pdGlvbl8xKHNlbGYsIGRlZmluaXRpb25zKToKLSAgICAgICAgIiBkZWZpbml0aW9ucyA6Oj0gZGVmaW5pdGlvbiBkZWZpbml0aW9ucyAiCi0gICAgICAgIHJldHVybiBkZWZpbml0aW9uc1swXSArIGRlZmluaXRpb25zWzFdCi0KLSAgICBkZWYgcF9kZWZpbml0aW9uKHNlbGYsIGluZm8pOgotICAgICAgICAiIGRlZmluaXRpb24gOjo9IElkID0gdHlwZSAiCi0gICAgICAgIGlkLCBfLCB0eXBlID0gaW5mbwotICAgICAgICByZXR1cm4gW1R5cGUoaWQsIHR5cGUpXQotCi0gICAgZGVmIHBfdHlwZV8wKHNlbGYsIHByb2R1Y3QpOgotICAgICAgICAiIHR5cGUgOjo9IHByb2R1Y3QgIgotICAgICAgICByZXR1cm4gcHJvZHVjdFswXQotCi0gICAgZGVmIHBfdHlwZV8xKHNlbGYsIHN1bSk6Ci0gICAgICAgICIgdHlwZSA6Oj0gc3VtICIKLSAgICAgICAgcmV0dXJuIFN1bShzdW1bMF0pCi0KLSAgICBkZWYgcF90eXBlXzIoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgdHlwZSA6Oj0gc3VtIElkICggZmllbGRzICkgIgotICAgICAgICBzdW0sIGlkLCBfMCwgYXR0cmlidXRlcywgXzEgPSBpbmZvCi0gICAgICAgIGlmIGlkLnZhbHVlICE9ICJhdHRyaWJ1dGVzIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihpZC5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCBhdHRyaWJ1dGVzLCBmb3VuZCAlcyIgJSBpZCkKLSAgICAgICAgcmV0dXJuIFN1bShzdW0sIGF0dHJpYnV0ZXMpCi0KLSAgICBkZWYgcF9wcm9kdWN0XzAoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgcHJvZHVjdCA6Oj0gKCBmaWVsZHMgKSAiCi0gICAgICAgIF8wLCBmaWVsZHMsIF8xID0gaW5mbwotICAgICAgICByZXR1cm4gUHJvZHVjdChmaWVsZHMpCi0KLSAgICBkZWYgcF9wcm9kdWN0XzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgcHJvZHVjdCA6Oj0gKCBmaWVsZHMgKSBJZCAoIGZpZWxkcyApICIKLSAgICAgICAgXzAsIGZpZWxkcywgXzEsIGlkLCBfMiwgYXR0cmlidXRlcywgXzMgPSBpbmZvCi0gICAgICAgIGlmIGlkLnZhbHVlICE9ICJhdHRyaWJ1dGVzIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihpZC5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCBhdHRyaWJ1dGVzLCBmb3VuZCAlcyIgJSBpZCkKLSAgICAgICAgcmV0dXJuIFByb2R1Y3QoZmllbGRzLCBhdHRyaWJ1dGVzKQotCi0gICAgZGVmIHBfc3VtXzAoc2VsZiwgY29uc3RydWN0b3IpOgotICAgICAgICAiIHN1bSA6Oj0gY29uc3RydWN0b3IgIgotICAgICAgICByZXR1cm4gW2NvbnN0cnVjdG9yWzBdXQotCi0gICAgZGVmIHBfc3VtXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgc3VtIDo6PSBjb25zdHJ1Y3RvciB8IHN1bSAiCi0gICAgICAgIGNvbnN0cnVjdG9yLCBfLCBzdW0gPSBpbmZvCi0gICAgICAgIHJldHVybiBbY29uc3RydWN0b3JdICsgc3VtCi0KLSAgICBkZWYgcF9zdW1fMihzZWxmLCBpbmZvKToKLSAgICAgICAgIiBzdW0gOjo9IGNvbnN0cnVjdG9yIHwgc3VtICIKLSAgICAgICAgY29uc3RydWN0b3IsIF8sIHN1bSA9IGluZm8KLSAgICAgICAgcmV0dXJuIFtjb25zdHJ1Y3Rvcl0gKyBzdW0KLQotICAgIGRlZiBwX2NvbnN0cnVjdG9yXzAoc2VsZiwgaWQpOgotICAgICAgICAiIGNvbnN0cnVjdG9yIDo6PSBJZCAiCi0gICAgICAgIHJldHVybiBDb25zdHJ1Y3RvcihpZFswXSkKLQotICAgIGRlZiBwX2NvbnN0cnVjdG9yXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICggZmllbGRzICkgIgotICAgICAgICBpZCwgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgIHJldHVybiBDb25zdHJ1Y3RvcihpZCwgZmllbGRzKQotCi0gICAgZGVmIHBfZmllbGRzXzAoc2VsZiwgZmllbGQpOgotICAgICAgICAiIGZpZWxkcyA6Oj0gZmllbGQgIgotICAgICAgICByZXR1cm4gW2ZpZWxkWzBdXQotCi0gICAgZGVmIHBfZmllbGRzXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZHMgLCBmaWVsZCAiCi0gICAgICAgIGZpZWxkcywgXywgZmllbGQgPSBpbmZvCi0gICAgICAgIHJldHVybiBmaWVsZHMgKyBbZmllbGRdCi0KLSAgICBkZWYgcF9maWVsZF8wKHNlbGYsIHR5cGVfKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgIgotICAgICAgICByZXR1cm4gRmllbGQodHlwZV9bMF0pCi0KLSAgICBkZWYgcF9maWVsZF8xKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCBJZCAiCi0gICAgICAgIHR5cGUsIG5hbWUgPSBpbmZvCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlLCBuYW1lKQotCi0gICAgZGVmIHBfZmllbGRfMihzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgKiBJZCAiCi0gICAgICAgIHR5cGUsIF8sIG5hbWUgPSBpbmZvCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlLCBuYW1lLCBzZXE9VHJ1ZSkKLQotICAgIGRlZiBwX2ZpZWxkXzMoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkID8gSWQgIgotICAgICAgICB0eXBlLCBfLCBuYW1lID0gaW5mbwotICAgICAgICByZXR1cm4gRmllbGQodHlwZSwgbmFtZSwgb3B0PVRydWUpCi0KLSAgICBkZWYgcF9maWVsZF80KHNlbGYsIHR5cGVfKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgKiAiCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlX1swXSwgc2VxPVRydWUpCi0KLSAgICBkZWYgcF9maWVsZF81KHNlbGYsIHR5cGVfKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgPyAiCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlWzBdLCBvcHQ9VHJ1ZSkKLQotYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiYnl0ZXMiLCAiaW50IiwgIm9iamVjdCIsICJzaW5nbGV0b24iKQotCi0jIGJlbG93IGlzIGEgY29sbGVjdGlvbiBvZiBjbGFzc2VzIHRvIGNhcHR1cmUgdGhlIEFTVCBvZiBhbiBBU1QgOi0pCi0jIG5vdCBzdXJlIGlmIGFueSBvZiB0aGUgbWV0aG9kcyBhcmUgdXNlZnVsIHlldCwgYnV0IEknbSBhZGRpbmcgdGhlbQotIyBwaWVjZW1lYWwgYXMgdGhleSBzZWVtIGhlbHBmdWwKLQotY2xhc3MgQVNUKG9iamVjdCk6Ci0gICAgcGFzcyAjIGEgbWFya2VyIGNsYXNzCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogY2xhc3MgTW9kdWxlKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRmbnMpOgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuZGZucyA9IGRmbnMKLSAgICAgICAgc2VsZi50eXBlcyA9IHt9ICMgbWFwcyB0eXBlIG5hbWUgdG8gdmFsdWUgKGZyb20gZGZucykKLSAgICAgICAgZm9yIHR5cGUgaW4gZGZuczoKLSAgICAgICAgICAgIHNlbGYudHlwZXNbdHlwZS5uYW1lLnZhbHVlXSA9IHR5cGUudmFsdWUKKyAgICAgICAgc2VsZi50eXBlcyA9IHt0eXBlLm5hbWU6IHR5cGUudmFsdWUgZm9yIHR5cGUgaW4gZGZuc30KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJNb2R1bGUoJXMsICVzKSIgJSAoc2VsZi5uYW1lLCBzZWxmLmRmbnMpCisgICAgICAgIHJldHVybiAnTW9kdWxlKHswLm5hbWV9LCB7MC5kZm5zfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBUeXBlKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHZhbHVlKToKQEAgLTI1Nyw3ICs1NCw3IEBACiAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlR5cGUoJXMsICVzKSIgJSAoc2VsZi5uYW1lLCBzZWxmLnZhbHVlKQorICAgICAgICByZXR1cm4gJ1R5cGUoezAubmFtZX0sIHswLnZhbHVlfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBDb25zdHJ1Y3RvcihBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBmaWVsZHM9Tm9uZSk6CkBAIC0yNjUsNyArNjIsNyBAQAogICAgICAgICBzZWxmLmZpZWxkcyA9IGZpZWxkcyBvciBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkNvbnN0cnVjdG9yKCVzLCAlcykiICUgKHNlbGYubmFtZSwgc2VsZi5maWVsZHMpCisgICAgICAgIHJldHVybiAnQ29uc3RydWN0b3IoezAubmFtZX0sIHswLmZpZWxkc30pJy5mb3JtYXQoc2VsZikKIAogY2xhc3MgRmllbGQoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZSwgbmFtZT1Ob25lLCBzZXE9RmFsc2UsIG9wdD1GYWxzZSk6CkBAIC0yODIsOSArNzksOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXh0cmEgPSAiIgogICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAiRmllbGQoJXMlcykiICUgKHNlbGYudHlwZSwgZXh0cmEpCisgICAgICAgICAgICByZXR1cm4gJ0ZpZWxkKHswLnR5cGV9ezF9KScuZm9ybWF0KHNlbGYsIGV4dHJhKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJGaWVsZCglcywgJXMlcykiICUgKHNlbGYudHlwZSwgc2VsZi5uYW1lLCBleHRyYSkKKyAgICAgICAgICAgIHJldHVybiAnRmllbGQoezAudHlwZX0sIHswLm5hbWV9ezF9KScuZm9ybWF0KHNlbGYsIGV4dHJhKQogCiBjbGFzcyBTdW0oQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZXMsIGF0dHJpYnV0ZXM9Tm9uZSk6CkBAIC0yOTIsMTAgKzg5LDEwIEBACiAgICAgICAgIHNlbGYuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgb3IgW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIlN1bSglcykiICUgc2VsZi50eXBlcworICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICByZXR1cm4gJ1N1bSh7MC50eXBlc30sIHswLmF0dHJpYnV0ZXN9KScuZm9ybWF0KHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIlN1bSglcywgJXMpIiAlIChzZWxmLnR5cGVzLCBzZWxmLmF0dHJpYnV0ZXMpCisgICAgICAgICAgICByZXR1cm4gJ1N1bSh7MC50eXBlc30pJy5mb3JtYXQoc2VsZikKIAogY2xhc3MgUHJvZHVjdChBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWVsZHMsIGF0dHJpYnV0ZXM9Tm9uZSk6CkBAIC0zMDMsNDkgKzEwMCw0MyBAQAogICAgICAgICBzZWxmLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIG9yIFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuYXR0cmlidXRlcyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJQcm9kdWN0KCVzKSIgJSBzZWxmLmZpZWxkcworICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICByZXR1cm4gJ1Byb2R1Y3QoezAuZmllbGRzfSwgezAuYXR0cmlidXRlc30pJy5mb3JtYXQoc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiUHJvZHVjdCglcywgJXMpIiAlIChzZWxmLmZpZWxkcywgc2VsZi5hdHRyaWJ1dGVzKQorICAgICAgICAgICAgcmV0dXJuICdQcm9kdWN0KHswLmZpZWxkc30pJy5mb3JtYXQoc2VsZikKKworIyBBIGdlbmVyaWMgdmlzaXRvciBmb3IgdGhlIG1ldGEtQVNUIHRoYXQgZGVzY3JpYmVzIEFTREwuIFRoaXMgY2FuIGJlIHVzZWQgYnkKKyMgZW1pdHRlcnMuIE5vdGUgdGhhdCB0aGlzIHZpc2l0b3IgZG9lcyBub3QgcHJvdmlkZSBhIGdlbmVyaWMgdmlzaXQgbWV0aG9kLCBzbyBhCisjIHN1YmNsYXNzIG5lZWRzIHRvIGRlZmluZSB2aXNpdCBtZXRob2RzIGZyb20gdmlzaXRNb2R1bGUgdG8gYXMgZGVlcCBhcyB0aGUKKyMgaW50ZXJlc3Rpbmcgbm9kZS4KKyMgV2UgYWxzbyBkZWZpbmUgYSBDaGVjayB2aXNpdG9yIHRoYXQgbWFrZXMgc3VyZSB0aGUgcGFyc2VkIEFTREwgaXMgd2VsbC1mb3JtZWQuCiAKIGNsYXNzIFZpc2l0b3JCYXNlKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2tpcD1GYWxzZSk6CisgICAgIiIiR2VuZXJpYyB0cmVlIHZpc2l0b3IgZm9yIEFTVHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNhY2hlID0ge30KLSAgICAgICAgc2VsZi5za2lwID0gc2tpcAogCi0gICAgZGVmIHZpc2l0KHNlbGYsIG9iamVjdCwgKmFyZ3MpOgotICAgICAgICBtZXRoID0gc2VsZi5fZGlzcGF0Y2gob2JqZWN0KQotICAgICAgICBpZiBtZXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWV0aChvYmplY3QsICphcmdzKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgb3V0cHV0KCJFcnJvciB2aXNpdGluZyIgKyByZXByKG9iamVjdCkpCi0gICAgICAgICAgICBvdXRwdXQoc3RyKHN5cy5leGNfaW5mbygpWzFdKSkKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgIyBYWFggaGFjawotICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnZmlsZScpOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5mbHVzaCgpCi0gICAgICAgICAgICBvcy5fZXhpdCgxKQotCi0gICAgZGVmIF9kaXNwYXRjaChzZWxmLCBvYmplY3QpOgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvYmplY3QsIEFTVCksIHJlcHIob2JqZWN0KQotICAgICAgICBrbGFzcyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICBkZWYgdmlzaXQoc2VsZiwgb2JqLCAqYXJncyk6CisgICAgICAgIGtsYXNzID0gb2JqLl9fY2xhc3NfXwogICAgICAgICBtZXRoID0gc2VsZi5jYWNoZS5nZXQoa2xhc3MpCiAgICAgICAgIGlmIG1ldGggaXMgTm9uZToKICAgICAgICAgICAgIG1ldGhuYW1lID0gInZpc2l0IiArIGtsYXNzLl9fbmFtZV9fCi0gICAgICAgICAgICBpZiBzZWxmLnNraXA6Ci0gICAgICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgbWV0aG5hbWUsIE5vbmUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsIG1ldGhuYW1lKQorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgbWV0aG5hbWUsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmNhY2hlW2tsYXNzXSA9IG1ldGgKLSAgICAgICAgcmV0dXJuIG1ldGgKKyAgICAgICAgaWYgbWV0aDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtZXRoKG9iaiwgKmFyZ3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHZpc2l0aW5nICVyOiAlcyIgJSAob2JqLCBlKSkKKyAgICAgICAgICAgICAgICByYWlzZQogCiBjbGFzcyBDaGVjayhWaXNpdG9yQmFzZSk6CisgICAgIiIiQSB2aXNpdG9yIHRoYXQgY2hlY2tzIGEgcGFyc2VkIEFTREwgdHJlZSBmb3IgY29ycmVjdG5lc3MuCiAKKyAgICBFcnJvcnMgYXJlIHByaW50ZWQgYW5kIGFjY3VtdWxhdGVkLgorICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoQ2hlY2ssIHNlbGYpLl9faW5pdF9fKHNraXA9VHJ1ZSkKKyAgICAgICAgc3VwZXIoQ2hlY2ssIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5jb25zID0ge30KICAgICAgICAgc2VsZi5lcnJvcnMgPSAwCiAgICAgICAgIHNlbGYudHlwZXMgPSB7fQpAQCAtMzY3LDggKzE1OCw4IEBACiAgICAgICAgIGlmIGNvbmZsaWN0IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmNvbnNba2V5XSA9IG5hbWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCgiUmVkZWZpbml0aW9uIG9mIGNvbnN0cnVjdG9yICVzIiAlIGtleSkKLSAgICAgICAgICAgIG91dHB1dCgiRGVmaW5lZCBpbiAlcyBhbmQgJXMiICUgKGNvbmZsaWN0LCBuYW1lKSkKKyAgICAgICAgICAgIHByaW50KCdSZWRlZmluaXRpb24gb2YgY29uc3RydWN0b3Ige30nLmZvcm1hdChrZXkpKQorICAgICAgICAgICAgcHJpbnQoJ0RlZmluZWQgaW4ge30gYW5kIHt9Jy5mb3JtYXQoY29uZmxpY3QsIG5hbWUpKQogICAgICAgICAgICAgc2VsZi5lcnJvcnMgKz0gMQogICAgICAgICBmb3IgZiBpbiBjb25zLmZpZWxkczoKICAgICAgICAgICAgIHNlbGYudmlzaXQoZiwga2V5KQpAQCAtMzgzLDYgKzE3NCwxMSBAQAogICAgICAgICAgICAgc2VsZi52aXNpdChmLCBuYW1lKQogCiBkZWYgY2hlY2sobW9kKToKKyAgICAiIiJDaGVjayB0aGUgcGFyc2VkIEFTREwgdHJlZSBmb3IgY29ycmVjdG5lc3MuCisKKyAgICBSZXR1cm4gVHJ1ZSBpZiBzdWNjZXNzLiBGb3IgZmFpbHVyZSwgdGhlIGVycm9ycyBhcmUgcHJpbnRlZCBvdXQgYW5kIEZhbHNlCisgICAgaXMgcmV0dXJuZWQuCisgICAgIiIiCiAgICAgdiA9IENoZWNrKCkKICAgICB2LnZpc2l0KG1vZCkKIApAQCAtMzkwLDQ3ICsxODYsMTkwIEBACiAgICAgICAgIGlmIHQgbm90IGluIG1vZC50eXBlcyBhbmQgbm90IHQgaW4gYnVpbHRpbl90eXBlczoKICAgICAgICAgICAgIHYuZXJyb3JzICs9IDEKICAgICAgICAgICAgIHVzZXMgPSAiLCAiLmpvaW4odi50eXBlc1t0XSkKLSAgICAgICAgICAgIG91dHB1dCgiVW5kZWZpbmVkIHR5cGUgJXMsIHVzZWQgaW4gJXMiICUgKHQsIHVzZXMpKQotCisgICAgICAgICAgICBwcmludCgnVW5kZWZpbmVkIHR5cGUge30sIHVzZWQgaW4ge30nLmZvcm1hdCh0LCB1c2VzKSkKICAgICByZXR1cm4gbm90IHYuZXJyb3JzCiAKLWRlZiBwYXJzZShmaWxlKToKLSAgICBzY2FubmVyID0gQVNETFNjYW5uZXIoKQotICAgIHBhcnNlciA9IEFTRExQYXJzZXIoKQorIyBUaGUgQVNETCBwYXJzZXIgaXRzZWxmIGNvbWVzIG5leHQuIFRoZSBvbmx5IGludGVyZXN0aW5nIGV4dGVybmFsIGludGVyZmFjZQorIyBoZXJlIGlzIHRoZSB0b3AtbGV2ZWwgcGFyc2UgZnVuY3Rpb24uCiAKLSAgICBmID0gb3BlbihmaWxlKQotICAgIHRyeToKLSAgICAgICAgYnVmID0gZi5yZWFkKCkKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKLSAgICB0b2tlbnMgPSBzY2FubmVyLnRva2VuaXplKGJ1ZikKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBwYXJzZXIucGFyc2UodG9rZW5zKQotICAgIGV4Y2VwdCBBU0RMU3ludGF4RXJyb3I6Ci0gICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgIG91dHB1dChzdHIoZXJyKSkKLSAgICAgICAgbGluZXMgPSBidWYuc3BsaXQoIlxuIikKLSAgICAgICAgb3V0cHV0KGxpbmVzW2Vyci5saW5lbm8gLSAxXSkgIyBsaW5lcyBzdGFydHMgYXQgMCwgZmlsZXMgYXQgMQorZGVmIHBhcnNlKGZpbGVuYW1lKToKKyAgICAiIiJQYXJzZSBBU0RMIGZyb20gdGhlIGdpdmVuIGZpbGUgYW5kIHJldHVybiBhIE1vZHVsZSBub2RlIGRlc2NyaWJpbmcgaXQuIiIiCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICBwYXJzZXIgPSBBU0RMUGFyc2VyKCkKKyAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShmLnJlYWQoKSkKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgZ2xvYgotICAgIGltcG9ydCBzeXMKKyMgVHlwZXMgZm9yIGRlc2NyaWJpbmcgdG9rZW5zIGluIGFuIEFTREwgc3BlY2lmaWNhdGlvbi4KK2NsYXNzIFRva2VuS2luZDoKKyAgICAiIiJUb2tlbktpbmQgaXMgcHJvdmlkZXMgYSBzY29wZSBmb3IgZW51bWVyYXRlZCB0b2tlbiBraW5kcy4iIiIKKyAgICAoQ29uc3RydWN0b3JJZCwgVHlwZUlkLCBFcXVhbHMsIENvbW1hLCBRdWVzdGlvbiwgUGlwZSwgQXN0ZXJpc2ssCisgICAgIExQYXJlbiwgUlBhcmVuLCBMQnJhY2UsIFJCcmFjZSkgPSByYW5nZSgxMSkKIAotICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgotICAgICAgICBmaWxlcyA9IHN5cy5hcmd2WzE6XQotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RkaXIgPSAidGVzdHMiCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iKHRlc3RkaXIgKyAiLyouYXNkbCIpCisgICAgb3BlcmF0b3JfdGFibGUgPSB7CisgICAgICAgICc9JzogRXF1YWxzLCAnLCc6IENvbW1hLCAgICAnPyc6IFF1ZXN0aW9uLCAnfCc6IFBpcGUsICAgICcoJzogTFBhcmVuLAorICAgICAgICAnKSc6IFJQYXJlbiwgJyonOiBBc3RlcmlzaywgJ3snOiBMQnJhY2UsICAgJ30nOiBSQnJhY2V9CiAKLSAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAgICAgICAgb3V0cHV0KGZpbGUpCi0gICAgICAgIG1vZCA9IHBhcnNlKGZpbGUpCi0gICAgICAgIGlmIG5vdCBtb2Q6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBvdXRwdXQoIm1vZHVsZSIsIG1vZC5uYW1lKQotICAgICAgICBvdXRwdXQobGVuKG1vZC5kZm5zKSwgImRlZmluaXRpb25zIikKLSAgICAgICAgaWYgbm90IGNoZWNrKG1vZCk6Ci0gICAgICAgICAgICBvdXRwdXQoIkNoZWNrIGZhaWxlZCIpCitUb2tlbiA9IG5hbWVkdHVwbGUoJ1Rva2VuJywgJ2tpbmQgdmFsdWUgbGluZW5vJykKKworY2xhc3MgQVNETFN5bnRheEVycm9yKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgbGluZW5vPU5vbmUpOgorICAgICAgICBzZWxmLm1zZyA9IG1zZworICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubyBvciAnPHVua25vd24+JworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnU3ludGF4IGVycm9yIG9uIGxpbmUgezAubGluZW5vfTogezAubXNnfScuZm9ybWF0KHNlbGYpCisKK2RlZiB0b2tlbml6ZV9hc2RsKGJ1Zik6CisgICAgIiIiVG9rZW5pemUgdGhlIGdpdmVuIGJ1ZmZlci4gWWllbGQgVG9rZW4gb2JqZWN0cy4iIiIKKyAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShidWYuc3BsaXRsaW5lcygpLCAxKToKKyAgICAgICAgZm9yIG0gaW4gcmUuZmluZGl0ZXIocidccyooXHcrfC0tLip8LiknLCBsaW5lLnN0cmlwKCkpOgorICAgICAgICAgICAgYyA9IG0uZ3JvdXAoMSkKKyAgICAgICAgICAgIGlmIGNbMF0uaXNhbHBoYSgpOgorICAgICAgICAgICAgICAgICMgU29tZSBraW5kIG9mIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBjWzBdLmlzdXBwZXIoKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW4oVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQsIGMsIGxpbmVubykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihUb2tlbktpbmQuVHlwZUlkLCBjLCBsaW5lbm8pCisgICAgICAgICAgICBlbGlmIGNbOjJdID09ICctLSc6CisgICAgICAgICAgICAgICAgIyBDb21tZW50CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBPcGVyYXRvcnMKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9wX2tpbmQgPSBUb2tlbktpbmQub3BlcmF0b3JfdGFibGVbY10KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcignSW52YWxpZCBvcGVyYXRvciAlcycgJSBjLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgeWllbGQgVG9rZW4ob3Bfa2luZCwgYywgbGluZW5vKQorCitjbGFzcyBBU0RMUGFyc2VyOgorICAgICIiIlBhcnNlciBmb3IgQVNETCBmaWxlcy4KKworICAgIENyZWF0ZSwgdGhlbiBjYWxsIHRoZSBwYXJzZSBtZXRob2Qgb24gYSBidWZmZXIgY29udGFpbmluZyBBU0RMLgorICAgIFRoaXMgaXMgYSBzaW1wbGUgcmVjdXJzaXZlIGRlc2NlbnQgcGFyc2VyIHRoYXQgdXNlcyB0b2tlbml6ZV9hc2RsIGZvciB0aGUKKyAgICBsZXhpbmcuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl90b2tlbml6ZXIgPSBOb25lCisgICAgICAgIHNlbGYuY3VyX3Rva2VuID0gTm9uZQorCisgICAgZGVmIHBhcnNlKHNlbGYsIGJ1Zik6CisgICAgICAgICIiIlBhcnNlIHRoZSBBU0RMIGluIHRoZSBidWZmZXIgYW5kIHJldHVybiBhbiBBU1Qgd2l0aCBhIE1vZHVsZSByb290LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fdG9rZW5pemVyID0gdG9rZW5pemVfYXNkbChidWYpCisgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VfbW9kdWxlKCkKKworICAgIGRlZiBfcGFyc2VfbW9kdWxlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hdF9rZXl3b3JkKCdtb2R1bGUnKToKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKLSAgICAgICAgICAgICAgICBvdXRwdXQoZGZuLm5hbWUsIGRmbi52YWx1ZSkKKyAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgIm1vZHVsZSIgKGZvdW5kIHt9KScuZm9ybWF0KHNlbGYuY3VyX3Rva2VuLnZhbHVlKSwKKyAgICAgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi5saW5lbm8pCisgICAgICAgIG5hbWUgPSBzZWxmLl9tYXRjaChzZWxmLl9pZF9raW5kcykKKyAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkxCcmFjZSkKKyAgICAgICAgZGVmcyA9IHNlbGYuX3BhcnNlX2RlZmluaXRpb25zKCkKKyAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLlJCcmFjZSkKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZzKQorCisgICAgZGVmIF9wYXJzZV9kZWZpbml0aW9ucyhzZWxmKToKKyAgICAgICAgZGVmcyA9IFtdCisgICAgICAgIHdoaWxlIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLlR5cGVJZDoKKyAgICAgICAgICAgIHR5cGVuYW1lID0gc2VsZi5fYWR2YW5jZSgpCisgICAgICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuRXF1YWxzKQorICAgICAgICAgICAgdHlwZSA9IHNlbGYuX3BhcnNlX3R5cGUoKQorICAgICAgICAgICAgZGVmcy5hcHBlbmQoVHlwZSh0eXBlbmFtZSwgdHlwZSkpCisgICAgICAgIHJldHVybiBkZWZzCisKKyAgICBkZWYgX3BhcnNlX3R5cGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLkxQYXJlbjoKKyAgICAgICAgICAgICMgSWYgd2Ugc2VlIGEgKCwgaXQncyBhIHByb2R1Y3QKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9wcm9kdWN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlIGl0J3MgYSBzdW0uIExvb2sgZm9yIENvbnN0cnVjdG9ySWQKKyAgICAgICAgICAgIHN1bWxpc3QgPSBbQ29uc3RydWN0b3Ioc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9vcHRpb25hbF9maWVsZHMoKSldCisgICAgICAgICAgICB3aGlsZSBzZWxmLmN1cl90b2tlbi5raW5kICA9PSBUb2tlbktpbmQuUGlwZToKKyAgICAgICAgICAgICAgICAjIE1vcmUgY29uc3RydWN0b3JzCisgICAgICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgICAgICAgICAgc3VtbGlzdC5hcHBlbmQoQ29uc3RydWN0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5Db25zdHJ1Y3RvcklkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2Vfb3B0aW9uYWxfZmllbGRzKCkpKQorICAgICAgICAgICAgcmV0dXJuIFN1bShzdW1saXN0LCBzZWxmLl9wYXJzZV9vcHRpb25hbF9hdHRyaWJ1dGVzKCkpCisKKyAgICBkZWYgX3BhcnNlX3Byb2R1Y3Qoc2VsZik6CisgICAgICAgIHJldHVybiBQcm9kdWN0KHNlbGYuX3BhcnNlX2ZpZWxkcygpLCBzZWxmLl9wYXJzZV9vcHRpb25hbF9hdHRyaWJ1dGVzKCkpCisKKyAgICBkZWYgX3BhcnNlX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkxQYXJlbikKKyAgICAgICAgd2hpbGUgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuVHlwZUlkOgorICAgICAgICAgICAgdHlwZW5hbWUgPSBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIGlzX3NlcSwgaXNfb3B0ID0gc2VsZi5fcGFyc2Vfb3B0aW9uYWxfZmllbGRfcXVhbnRpZmllcigpCisgICAgICAgICAgICBpZCA9IChzZWxmLl9hZHZhbmNlKCkgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCBpbiBzZWxmLl9pZF9raW5kcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9uZSkKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoRmllbGQodHlwZW5hbWUsIGlkLCBzZXE9aXNfc2VxLCBvcHQ9aXNfb3B0KSkKKyAgICAgICAgICAgIGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLlJQYXJlbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5Db21tYToKKyAgICAgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLlJQYXJlbikKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisgICAgZGVmIF9wYXJzZV9vcHRpb25hbF9maWVsZHMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLkxQYXJlbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9maWVsZHMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcGFyc2Vfb3B0aW9uYWxfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXRfa2V5d29yZCgnYXR0cmlidXRlcycpOgorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VfZmllbGRzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3BhcnNlX29wdGlvbmFsX2ZpZWxkX3F1YW50aWZpZXIoc2VsZik6CisgICAgICAgIGlzX3NlcSwgaXNfb3B0ID0gRmFsc2UsIEZhbHNlCisgICAgICAgIGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLkFzdGVyaXNrOgorICAgICAgICAgICAgaXNfc2VxID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgIGVsaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuUXVlc3Rpb246CisgICAgICAgICAgICBpc19vcHQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgcmV0dXJuIGlzX3NlcSwgaXNfb3B0CisKKyAgICBkZWYgX2FkdmFuY2Uoc2VsZik6CisgICAgICAgICIiIiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IHRva2VuIGFuZCByZWFkIHRoZSBuZXh0IG9uZSBpbnRvCisgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi4KKyAgICAgICAgIiIiCisgICAgICAgIGN1cl92YWwgPSBOb25lIGlmIHNlbGYuY3VyX3Rva2VuIGlzIE5vbmUgZWxzZSBzZWxmLmN1cl90b2tlbi52YWx1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmN1cl90b2tlbiA9IG5leHQoc2VsZi5fdG9rZW5pemVyKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuID0gTm9uZQorICAgICAgICByZXR1cm4gY3VyX3ZhbAorCisgICAgX2lkX2tpbmRzID0gKFRva2VuS2luZC5Db25zdHJ1Y3RvcklkLCBUb2tlbktpbmQuVHlwZUlkKQorCisgICAgZGVmIF9tYXRjaChzZWxmLCBraW5kKToKKyAgICAgICAgIiIiVGhlICdtYXRjaCcgcHJpbWl0aXZlIG9mIFJEIHBhcnNlcnMuCisKKyAgICAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBjdXJyZW50IHRva2VuIGlzIG9mIHRoZSBnaXZlbiBraW5kIChraW5kIGNhbgorICAgICAgICAgIGJlIGEgdHVwbGUsIGluIHdoaWNoIHRoZSBraW5kIG11c3QgbWF0Y2ggb25lIG9mIGl0cyBtZW1iZXJzKS4KKyAgICAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCB0b2tlbgorICAgICAgICAqIFJlYWRzIGluIHRoZSBuZXh0IHRva2VuCisgICAgICAgICIiIgorICAgICAgICBpZiAoaXNpbnN0YW5jZShraW5kLCB0dXBsZSkgYW5kIHNlbGYuY3VyX3Rva2VuLmtpbmQgaW4ga2luZCBvcgorICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBraW5kCisgICAgICAgICAgICApOgorICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmN1cl90b2tlbi52YWx1ZQorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcigKKyAgICAgICAgICAgICAgICAnVW5tYXRjaGVkIHt9IChmb3VuZCB7fSknLmZvcm1hdChraW5kLCBzZWxmLmN1cl90b2tlbi5raW5kKSwKKyAgICAgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi5saW5lbm8pCisKKyAgICBkZWYgX2F0X2tleXdvcmQoc2VsZiwga2V5d29yZCk6CisgICAgICAgIHJldHVybiAoc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuVHlwZUlkIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLnZhbHVlID09IGtleXdvcmQpCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQppbmRleCBkNjA4NmU2Li5hNWUzNWQ5IDEwMDc1NQotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTEsOSArMSw2IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCiAiIiJHZW5lcmF0ZSBDIGNvZGUgZnJvbSBhbiBBU0RMIGRlc2NyaXB0aW9uLiIiIgogCi0jIFRPIERPCi0jIGhhbmRsZSBmaWVsZHMgdGhhdCBoYXZlIGEgdHlwZSBidXQgbm8gbmFtZQotCiBpbXBvcnQgb3MsIHN5cwogCiBpbXBvcnQgYXNkbApAQCAtMTQsMTIgKzExLDggQEAKIGRlZiBnZXRfY190eXBlKG5hbWUpOgogICAgICIiIlJldHVybiBhIHN0cmluZyBmb3IgdGhlIEMgbmFtZSBvZiB0aGUgdHlwZS4KIAotICAgIFRoaXMgZnVuY3Rpb24gc3BlY2lhbCBjYXNlcyB0aGUgZGVmYXVsdCB0eXBlcyBwcm92aWRlZCBieSBhc2RsOgotICAgIGlkZW50aWZpZXIsIHN0cmluZywgaW50LgorICAgIFRoaXMgZnVuY3Rpb24gc3BlY2lhbCBjYXNlcyB0aGUgZGVmYXVsdCB0eXBlcyBwcm92aWRlZCBieSBhc2RsLgogICAgICIiIgotICAgICMgWFhYIGFjayEgIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBJZCBpcyB1c2VmdWwgYW5kIHdoZXJlIHN0cmluZwotICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgYXNkbC5JZCk6Ci0gICAgICAgIG5hbWUgPSBuYW1lLnZhbHVlCiAgICAgaWYgbmFtZSBpbiBhc2RsLmJ1aWx0aW5fdHlwZXM6CiAgICAgICAgIHJldHVybiBuYW1lCiAgICAgZWxzZToKQEAgLTE0NCw3ICsxMzcsNyBAQAogCiAKIGNsYXNzIFN0cnVjdFZpc2l0b3IoRW1pdFZpc2l0b3IpOgotICAgICIiIlZpc2l0b3IgdG8gZ2VuZXJhdGUgdHlwZGVmcyBmb3IgQVNULiIiIgorICAgICIiIlZpc2l0b3IgdG8gZ2VuZXJhdGUgdHlwZWRlZnMgZm9yIEFTVC4iIiIKIAogICAgIGRlZiB2aXNpdE1vZHVsZShzZWxmLCBtb2QpOgogICAgICAgICBmb3IgZGZuIGluIG1vZC5kZm5zOgpAQCAtMTg4LDkgKzE4MSw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi52aXNpdChmLCBkZXB0aCArIDEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoIn0gJXM7IiAlIGNvbnMubmFtZSwgZGVwdGgpCiAgICAgICAgICAgICBzZWxmLmVtaXQoIiIsIGRlcHRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBYWFggbm90IHN1cmUgd2hhdCBJIHdhbnQgaGVyZSwgbm90aGluZyBpcyBwcm9iYWJseSBmaW5lCi0gICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgdmlzaXRGaWVsZChzZWxmLCBmaWVsZCwgZGVwdGgpOgogICAgICAgICAjIFhYWCBuZWVkIHRvIGxvb2t1cCBmaWVsZC50eXBlLCBiZWNhdXNlIGl0IG1pZ2h0IGJlIHNvbWV0aGluZwpAQCAtMTk4LDcgKzE4OCw3IEBACiAgICAgICAgIGN0eXBlID0gZ2V0X2NfdHlwZShmaWVsZC50eXBlKQogICAgICAgICBuYW1lID0gZmllbGQubmFtZQogICAgICAgICBpZiBmaWVsZC5zZXE6Ci0gICAgICAgICAgICBpZiBmaWVsZC50eXBlLnZhbHVlIGluICgnY21wb3AnLCk6CisgICAgICAgICAgICBpZiBmaWVsZC50eXBlID09ICdjbXBvcCc6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJhc2RsX2ludF9zZXEgKiUobmFtZSlzOyIgJSBsb2NhbHMoKSwgZGVwdGgpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiYXNkbF9zZXEgKiUobmFtZSlzOyIgJSBsb2NhbHMoKSwgZGVwdGgpCkBAIC0yNTMsNyArMjQzLDcgQEAKICAgICAgICAgICAgICAgICBuYW1lID0gZi5uYW1lCiAgICAgICAgICAgICAjIFhYWCBzaG91bGQgZXh0ZW5kIGdldF9jX3R5cGUoKSB0byBoYW5kbGUgdGhpcwogICAgICAgICAgICAgaWYgZi5zZXE6Ci0gICAgICAgICAgICAgICAgaWYgZi50eXBlLnZhbHVlIGluICgnY21wb3AnLCk6CisgICAgICAgICAgICAgICAgaWYgZi50eXBlID09ICdjbXBvcCc6CiAgICAgICAgICAgICAgICAgICAgIGN0eXBlID0gImFzZGxfaW50X3NlcSAqIgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGN0eXBlID0gImFzZGxfc2VxICoiCkBAIC00MzcsNyArNDI3LDcgQEAKICAgICAgICAgICAgIHNlbGYuZW1pdCgiIiwgMCkKICAgICAgICAgICAgIGZvciBmIGluIHQuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYudmlzaXRGaWVsZChmLCB0Lm5hbWUsIHN1bT1zdW0sIGRlcHRoPTIpCi0gICAgICAgICAgICBhcmdzID0gW2YubmFtZS52YWx1ZSBmb3IgZiBpbiB0LmZpZWxkc10gKyBbYS5uYW1lLnZhbHVlIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzXQorICAgICAgICAgICAgYXJncyA9IFtmLm5hbWUgZm9yIGYgaW4gdC5maWVsZHNdICsgW2EubmFtZSBmb3IgYSBpbiBzdW0uYXR0cmlidXRlc10KICAgICAgICAgICAgIHNlbGYuZW1pdCgiKm91dCA9ICVzKCVzKTsiICUgKHQubmFtZSwgc2VsZi5idWlsZEFyZ3MoYXJncykpLCAyKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsiLCAyKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gMDsiLCAyKQpAQCAtNDY1LDcgKzQ1NSw3IEBACiAgICAgICAgIHNlbGYuZW1pdCgiIiwgMCkKICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CiAgICAgICAgICAgICBzZWxmLnZpc2l0RmllbGQoZiwgbmFtZSwgcHJvZD1wcm9kLCBkZXB0aD0xKQotICAgICAgICBhcmdzID0gW2YubmFtZS52YWx1ZSBmb3IgZiBpbiBwcm9kLmZpZWxkc10KKyAgICAgICAgYXJncyA9IFtmLm5hbWUgZm9yIGYgaW4gcHJvZC5maWVsZHNdCiAgICAgICAgIHNlbGYuZW1pdCgiKm91dCA9ICVzKCVzKTsiICUgKG5hbWUsIHNlbGYuYnVpbGRBcmdzKGFyZ3MpKSwgMSkKICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gMDsiLCAxKQogICAgICAgICBzZWxmLmVtaXQoImZhaWxlZDoiLCAwKQpAQCAtNDg3LDggKzQ3Nyw4IEBACiAKICAgICBkZWYgaXNTaW1wbGVTdW0oc2VsZiwgZmllbGQpOgogICAgICAgICAjIFhYWCBjYW4gdGhlIG1lbWJlcnMgb2YgdGhpcyBsaXN0IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseT8KLSAgICAgICAgcmV0dXJuIGZpZWxkLnR5cGUudmFsdWUgaW4gKCdleHByX2NvbnRleHQnLCAnYm9vbG9wJywgJ29wZXJhdG9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmFyeW9wJywgJ2NtcG9wJykKKyAgICAgICAgcmV0dXJuIGZpZWxkLnR5cGUgaW4gKCdleHByX2NvbnRleHQnLCAnYm9vbG9wJywgJ29wZXJhdG9yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmFyeW9wJywgJ2NtcG9wJykKIAogICAgIGRlZiBpc051bWVyaWMoc2VsZiwgZmllbGQpOgogICAgICAgICByZXR1cm4gZ2V0X2NfdHlwZShmaWVsZC50eXBlKSBpbiAoImludCIsICJib29sIikKQEAgLTk2MCw3ICs5NTAsNyBAQAogCiAgICAgZGVmIHZpc2l0UHJvZHVjdChzZWxmLCBwcm9kLCBuYW1lKToKICAgICAgICAgaWYgcHJvZC5maWVsZHM6Ci0gICAgICAgICAgICBmaWVsZHMgPSBuYW1lLnZhbHVlKyJfZmllbGRzIgorICAgICAgICAgICAgZmllbGRzID0gbmFtZSsiX2ZpZWxkcyIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZpZWxkcyA9ICJOVUxMIgogICAgICAgICBzZWxmLmVtaXQoJyVzX3R5cGUgPSBtYWtlX3R5cGUoIiVzIiwgJkFTVF90eXBlLCAlcywgJWQpOycgJQpAQCAtOTg3LDcgKzk3Nyw3IEBACiAKICAgICBkZWYgdmlzaXRDb25zdHJ1Y3RvcihzZWxmLCBjb25zLCBuYW1lLCBzaW1wbGUpOgogICAgICAgICBpZiBjb25zLmZpZWxkczoKLSAgICAgICAgICAgIGZpZWxkcyA9IGNvbnMubmFtZS52YWx1ZSsiX2ZpZWxkcyIKKyAgICAgICAgICAgIGZpZWxkcyA9IGNvbnMubmFtZSsiX2ZpZWxkcyIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZpZWxkcyA9ICJOVUxMIgogICAgICAgICBzZWxmLmVtaXQoJyVzX3R5cGUgPSBtYWtlX3R5cGUoIiVzIiwgJXNfdHlwZSwgJXMsICVkKTsnICUKQEAgLTExNzAsNyArMTE2MCw3IEBACiAgICAgZGVmIHNldChzZWxmLCBmaWVsZCwgdmFsdWUsIGRlcHRoKToKICAgICAgICAgaWYgZmllbGQuc2VxOgogICAgICAgICAgICAgIyBYWFggc2hvdWxkIHJlYWxseSBjaGVjayBmb3IgaXNfc2ltcGxlLCBidXQgdGhhdCByZXF1aXJlcyBhIHN5bWJvbCB0YWJsZQotICAgICAgICAgICAgaWYgZmllbGQudHlwZS52YWx1ZSA9PSAiY21wb3AiOgorICAgICAgICAgICAgaWYgZmllbGQudHlwZSA9PSAiY21wb3AiOgogICAgICAgICAgICAgICAgICMgV2hpbGUgdGhlIHNlcXVlbmNlIGVsZW1lbnRzIGFyZSBzdG9yZWQgYXMgdm9pZCosCiAgICAgICAgICAgICAgICAgIyBhc3Qyb2JqX2NtcG9wIGV4cGVjdHMgYW4gZW51bQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgieyIsIGRlcHRoKQpAQCAtMTI0OSwxMiArMTIzOSwxNSBAQAogCiBjb21tb25fbXNnID0gIi8qIEZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgJXMuICovXG5cbiIKIAotZGVmIG1haW4oc3JjZmlsZSk6CitkZWYgbWFpbihzcmNmaWxlLCBkdW1wX21vZHVsZT1GYWxzZSk6CiAgICAgYXJndjAgPSBzeXMuYXJndlswXQogICAgIGNvbXBvbmVudHMgPSBhcmd2MC5zcGxpdChvcy5zZXApCiAgICAgYXJndjAgPSBvcy5zZXAuam9pbihjb21wb25lbnRzWy0yOl0pCiAgICAgYXV0b19nZW5fbXNnID0gY29tbW9uX21zZyAlIGFyZ3YwCiAgICAgbW9kID0gYXNkbC5wYXJzZShzcmNmaWxlKQorICAgIGlmIGR1bXBfbW9kdWxlOgorICAgICAgICBwcmludCgnUGFyc2VkIE1vZHVsZTonKQorICAgICAgICBwcmludChtb2QpCiAgICAgaWYgbm90IGFzZGwuY2hlY2sobW9kKToKICAgICAgICAgc3lzLmV4aXQoMSkKICAgICBpZiBJTkNfRElSOgpAQCAtMTMwMSwxNiArMTI5NCwxOSBAQAogCiAgICAgSU5DX0RJUiA9ICcnCiAgICAgU1JDX0RJUiA9ICcnCi0gICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiaDpjOiIpCi0gICAgaWYgbGVuKG9wdHMpICE9IDE6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIk11c3Qgc3BlY2lmeSBleGFjdGx5IG9uZSBvdXRwdXQgZmlsZVxuIikKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBkdW1wX21vZHVsZSA9IEZhbHNlCisgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiZGg6YzoiKQogICAgIGZvciBvLCB2IGluIG9wdHM6CiAgICAgICAgIGlmIG8gPT0gJy1oJzoKICAgICAgICAgICAgIElOQ19ESVIgPSB2CiAgICAgICAgIGlmIG8gPT0gJy1jJzoKICAgICAgICAgICAgIFNSQ19ESVIgPSB2Ci0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIk11c3Qgc3BlY2lmeSBzaW5nbGUgaW5wdXQgZmlsZVxuIikKKyAgICAgICAgaWYgbyA9PSAnLWQnOgorICAgICAgICAgICAgZHVtcF9tb2R1bGUgPSBUcnVlCisgICAgaWYgSU5DX0RJUiBhbmQgU1JDX0RJUjoKKyAgICAgICAgcHJpbnQoJ011c3Qgc3BlY2lmeSBleGFjdGx5IG9uZSBvdXRwdXQgZmlsZScpCiAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgbWFpbihhcmdzWzBdKQorICAgIGVsaWYgbGVuKGFyZ3MpICE9IDE6CisgICAgICAgIHByaW50KCdNdXN0IHNwZWNpZnkgc2luZ2xlIGlucHV0IGZpbGUnKQorICAgICAgICBzeXMuZXhpdCgxKQorICAgIG1haW4oYXJnc1swXSwgZHVtcF9tb2R1bGUpCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCA1NjRiZDkxLi4wMDEwMzI0IDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTcwLDggKzcwLDggQEAKICAqIE5vdGUgdGhhdCB0aGlzIHdvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZCBpZiBhIG5vZGUgc3RvcmVkIGl0cyBjdXJyZW50CiAgKiBjYXBhY2l0eS4gIFRoZSBjb2RlIGlzIHRyaWNreSB0byBhdm9pZCB0aGF0LgogICovCi0jZGVmaW5lIFhYWFJPVU5EVVAobikgKChuKSA8PSAxID8gKG4pIDogICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIChuKSA8PSAxMjggPyBfUHlfU0laRV9ST1VORF9VUCgobiksIDQpIDogXAorI2RlZmluZSBYWFhST1VORFVQKG4pICgobikgPD0gMSA/IChuKSA6ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgIChuKSA8PSAxMjggPyAoaW50KV9QeV9TSVpFX1JPVU5EX1VQKChuKSwgNCkgOiAgICBcCiAgICAgICAgICAgICAgICBmYW5jeV9yb3VuZHVwKG4pKQogCiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VuLmMgYi9QYXJzZXIvcGdlbi5jCmluZGV4IGIyZjg0NzAuLmYzMDMxYWUgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VuLmMKKysrIGIvUGFyc2VyL3BnZW4uYwpAQCAtMTM2LDExICsxMzYsMTIgQEAKIAogc3RhdGljIGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CiAKLSNkZWZpbmUgUkVRTihpLCBjb3VudCkgXAorI2RlZmluZSBSRVFOKGksIGNvdW50KSBkbyB7IFwKICAgICBpZiAoaSA8IGNvdW50KSB7IFwKICAgICAgICAgZnByaW50ZihzdGRlcnIsIFJFUU5GTVQsIGNvdW50KTsgXAogICAgICAgICBQeV9GYXRhbEVycm9yKCJSRVFOIik7IFwKLSAgICB9IGVsc2UKKyAgICB9IFwKK30gd2hpbGUgKDApCiAKICNlbHNlCiAjZGVmaW5lIFJFUU4oaSwgY291bnQpICAvKiBlbXB0eSAqLwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCAwMTdhNGY5Li4wZjA1NWQ2IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtOTYsMTAgKzk2LDExIEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUGFyc2luZyBlcnJvciAlZCwgbGluZSAlZC5cbiIsCiAgICAgICAgICAgICBlcnIuZXJyb3IsIGVyci5saW5lbm8pOwogICAgICAgICBpZiAoZXJyLnRleHQgIT0gTlVMTCkgewotICAgICAgICAgICAgc2l6ZV90IGk7CisgICAgICAgICAgICBzaXplX3QgbGVuOworICAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgZXJyLnRleHQpOwotICAgICAgICAgICAgaSA9IHN0cmxlbihlcnIudGV4dCk7Ci0gICAgICAgICAgICBpZiAoaSA9PSAwIHx8IGVyci50ZXh0W2ktMV0gIT0gJ1xuJykKKyAgICAgICAgICAgIGxlbiA9IHN0cmxlbihlcnIudGV4dCk7CisgICAgICAgICAgICBpZiAobGVuID09IDAgfHwgZXJyLnRleHRbbGVuLTFdICE9ICdcbicpCiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVyci5vZmZzZXQ7IGkrKykgewogICAgICAgICAgICAgICAgIGlmIChlcnIudGV4dFtpXSA9PSAnXHQnKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL3ByaW50Z3JhbW1hci5jIGIvUGFyc2VyL3ByaW50Z3JhbW1hci5jCmluZGV4IGRkN2U2YWUuLjczMTFlNTUgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wcmludGdyYW1tYXIuYworKysgYi9QYXJzZXIvcHJpbnRncmFtbWFyLmMKQEAgLTg0LDcgKzg0LDcgQEAKIHByaW50ZGZhcyhncmFtbWFyICpnLCBGSUxFICpmcCkKIHsKICAgICBkZmEgKmQ7Ci0gICAgaW50IGksIGo7CisgICAgaW50IGksIGosIG47CiAKICAgICBwcmludHN0YXRlcyhnLCBmcCk7CiAgICAgZnByaW50ZihmcCwgInN0YXRpYyBkZmEgZGZhc1slZF0gPSB7XG4iLCBnLT5nX25kZmFzKTsKQEAgLTkzLDcgKzkzLDggQEAKICAgICAgICAgZnByaW50ZihmcCwgIiAgICB7JWQsIFwiJXNcIiwgJWQsICVkLCBzdGF0ZXNfJWQsXG4iLAogICAgICAgICAgICAgZC0+ZF90eXBlLCBkLT5kX25hbWUsIGQtPmRfaW5pdGlhbCwgZC0+ZF9uc3RhdGVzLCBpKTsKICAgICAgICAgZnByaW50ZihmcCwgIiAgICAgXCIiKTsKLSAgICAgICAgZm9yIChqID0gMDsgaiA8IE5CWVRFUyhnLT5nX2xsLmxsX25sYWJlbHMpOyBqKyspCisgICAgICAgIG4gPSBOQllURVMoZy0+Z19sbC5sbF9ubGFiZWxzKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykKICAgICAgICAgICAgIGZwcmludGYoZnAsICJcXCUwM28iLCBkLT5kX2ZpcnN0W2pdICYgMHhmZik7CiAgICAgICAgIGZwcmludGYoZnAsICJcIn0sXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9QYXJzZXIvc3BhcmsucHkgYi9QYXJzZXIvc3BhcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YzFhODkuLjAwMDAwMDAKLS0tIGEvUGFyc2VyL3NwYXJrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODQ5ICswLDAgQEAKLSMgIENvcHlyaWdodCAoYykgMTk5OC0yMDAyIEpvaG4gQXljb2NrCi0jCi0jICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSMgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotIyAgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0jICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSMKLSMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0jICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSMKLSMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0jICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0jICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQotIyAgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKLSMgIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCi0jICBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotX192ZXJzaW9uX18gPSAnU1BBUkstMC43IChwcmUtYWxwaGEtNSknCi0KLWltcG9ydCByZQotCi0jIENvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBweXRob25zLgotZGVmIG91dHB1dChzdHJpbmc9JycsIGVuZD0nXG4nKToKLSAgICBzeXMuc3Rkb3V0LndyaXRlKHN0cmluZyArIGVuZCkKLQotdHJ5OgotICAgIHNvcnRlZAotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBkZWYgc29ydGVkKHNlcSk6Ci0gICAgICAgIHNlcTIgPSBzZXFbOl0KLSAgICAgICAgc2VxMi5zb3J0KCkKLSAgICAgICAgcmV0dXJuIHNlcTIKLQotZGVmIF9uYW1lbGlzdChpbnN0YW5jZSk6Ci0gICAgbmFtZWxpc3QsIG5hbWVkaWN0LCBjbGFzc2xpc3QgPSBbXSwge30sIFtpbnN0YW5jZS5fX2NsYXNzX19dCi0gICAgZm9yIGMgaW4gY2xhc3NsaXN0OgotICAgICAgICBmb3IgYiBpbiBjLl9fYmFzZXNfXzoKLSAgICAgICAgICAgIGNsYXNzbGlzdC5hcHBlbmQoYikKLSAgICAgICAgZm9yIG5hbWUgaW4gYy5fX2RpY3RfXy5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBuYW1lZGljdDoKLSAgICAgICAgICAgICAgICBuYW1lbGlzdC5hcHBlbmQobmFtZSkKLSAgICAgICAgICAgICAgICBuYW1lZGljdFtuYW1lXSA9IDEKLSAgICByZXR1cm4gbmFtZWxpc3QKLQotY2xhc3MgR2VuZXJpY1NjYW5uZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsYWdzPTApOgotICAgICAgICBwYXR0ZXJuID0gc2VsZi5yZWZsZWN0KCkKLSAgICAgICAgc2VsZi5yZSA9IHJlLmNvbXBpbGUocGF0dGVybiwgcmUuVkVSQk9TRXxmbGFncykKLQotICAgICAgICBzZWxmLmluZGV4MmZ1bmMgPSB7fQotICAgICAgICBmb3IgbmFtZSwgbnVtYmVyIGluIHNlbGYucmUuZ3JvdXBpbmRleC5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5pbmRleDJmdW5jW251bWJlci0xXSA9IGdldGF0dHIoc2VsZiwgJ3RfJyArIG5hbWUpCi0KLSAgICBkZWYgbWFrZVJFKHNlbGYsIG5hbWUpOgotICAgICAgICBkb2MgPSBnZXRhdHRyKHNlbGYsIG5hbWUpLl9fZG9jX18KLSAgICAgICAgcnYgPSAnKD9QPCVzPiVzKScgJSAobmFtZVsyOl0sIGRvYykKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgcmVmbGVjdChzZWxmKToKLSAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgbmFtZSBpbiBfbmFtZWxpc3Qoc2VsZik6Ci0gICAgICAgICAgICBpZiBuYW1lWzoyXSA9PSAndF8nIGFuZCBuYW1lICE9ICd0X2RlZmF1bHQnOgotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChzZWxmLm1ha2VSRShuYW1lKSkKLQotICAgICAgICBydi5hcHBlbmQoc2VsZi5tYWtlUkUoJ3RfZGVmYXVsdCcpKQotICAgICAgICByZXR1cm4gJ3wnLmpvaW4ocnYpCi0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgcywgcG9zKToKLSAgICAgICAgb3V0cHV0KCJMZXhpY2FsIGVycm9yIGF0IHBvc2l0aW9uICVzIiAlIHBvcykKLSAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAotCi0gICAgZGVmIHRva2VuaXplKHNlbGYsIHMpOgotICAgICAgICBwb3MgPSAwCi0gICAgICAgIG4gPSBsZW4ocykKLSAgICAgICAgd2hpbGUgcG9zIDwgbjoKLSAgICAgICAgICAgIG0gPSBzZWxmLnJlLm1hdGNoKHMsIHBvcykKLSAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKHMsIHBvcykKLQotICAgICAgICAgICAgZ3JvdXBzID0gbS5ncm91cHMoKQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGdyb3VwcykpOgotICAgICAgICAgICAgICAgIGlmIGdyb3Vwc1tpXSBhbmQgaSBpbiBzZWxmLmluZGV4MmZ1bmM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kZXgyZnVuY1tpXShncm91cHNbaV0pCi0gICAgICAgICAgICBwb3MgPSBtLmVuZCgpCi0KLSAgICBkZWYgdF9kZWZhdWx0KHNlbGYsIHMpOgotICAgICAgICByJyggLiB8IFxuICkrJwotICAgICAgICBvdXRwdXQoIlNwZWNpZmljYXRpb24gZXJyb3I6IHVubWF0Y2hlZCBpbnB1dCIpCi0gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKLQotIwotIyAgRXh0cmFjdGVkIGZyb20gR2VuZXJpY1BhcnNlciBhbmQgbWFkZSBnbG9iYWwgc28gdGhhdCBbdW5dcGlja2luZyB3b3Jrcy4KLSMKLWNsYXNzIF9TdGF0ZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhdGVubywgaXRlbXMpOgotICAgICAgICBzZWxmLlQsIHNlbGYuY29tcGxldGUsIHNlbGYuaXRlbXMgPSBbXSwgW10sIGl0ZW1zCi0gICAgICAgIHNlbGYuc3RhdGVubyA9IHN0YXRlbm8KLQotY2xhc3MgR2VuZXJpY1BhcnNlcjoKLSAgICAjCi0gICAgIyAgQW4gRWFybGV5IHBhcnNlciwgYXMgcGVyIEouIEVhcmxleSwgIkFuIEVmZmljaWVudCBDb250ZXh0LUZyZWUKLSAgICAjICBQYXJzaW5nIEFsZ29yaXRobSIsIENBQ00gMTMoMiksIHBwLiA5NC0xMDIuICBBbHNvIEouIEMuIEVhcmxleSwKLSAgICAjICAiQW4gRWZmaWNpZW50IENvbnRleHQtRnJlZSBQYXJzaW5nIEFsZ29yaXRobSIsIFBoLkQuIHRoZXNpcywKLSAgICAjICBDYXJuZWdpZS1NZWxsb24gVW5pdmVyc2l0eSwgQXVndXN0IDE5NjguICBOZXcgZm9ybXVsYXRpb24gb2YKLSAgICAjICB0aGUgcGFyc2VyIGFjY29yZGluZyB0byBKLiBBeWNvY2ssICJQcmFjdGljYWwgRWFybGV5IFBhcnNpbmcKLSAgICAjICBhbmQgdGhlIFNQQVJLIFRvb2xraXQiLCBQaC5ELiB0aGVzaXMsIFVuaXZlcnNpdHkgb2YgVmljdG9yaWEsCi0gICAgIyAgMjAwMSwgYW5kIEouIEF5Y29jayBhbmQgUi4gTi4gSG9yc3Bvb2wsICJQcmFjdGljYWwgRWFybGV5Ci0gICAgIyAgUGFyc2luZyIsIHVucHVibGlzaGVkIHBhcGVyLCAyMDAxLgotICAgICMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCk6Ci0gICAgICAgIHNlbGYucnVsZXMgPSB7fQotICAgICAgICBzZWxmLnJ1bGUyZnVuYyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJuYW1lID0ge30KLSAgICAgICAgc2VsZi5jb2xsZWN0UnVsZXMoKQotICAgICAgICBzZWxmLmF1Z21lbnQoc3RhcnQpCi0gICAgICAgIHNlbGYucnVsZXNjaGFuZ2VkID0gMQotCi0gICAgX05VTExBQkxFID0gJ1xlXycKLSAgICBfU1RBUlQgPSAnU1RBUlQnCi0gICAgX0JPRiA9ICd8LScKLQotICAgICMKLSAgICAjICBXaGVuIHBpY2tsaW5nLCB0YWtlIHRoZSB0aW1lIHRvIGdlbmVyYXRlIHRoZSBmdWxsIHN0YXRlIG1hY2hpbmU7Ci0gICAgIyAgc29tZSBpbmZvcm1hdGlvbiBpcyB0aGVuIGV4dHJhbmVvdXMsIHRvby4gIFVuZm9ydHVuYXRlbHkgd2UKLSAgICAjICBjYW4ndCBzYXZlIHRoZSBydWxlMmZ1bmMgbWFwLgotICAgICMKLSAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bGVzY2hhbmdlZDoKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIFhYWCAtIGR1cGxpY2F0ZWQgZnJvbSBwYXJzZSgpCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBzZWxmLmNvbXB1dGVOdWxsKCkKLSAgICAgICAgICAgIHNlbGYubmV3cnVsZXMgPSB7fQotICAgICAgICAgICAgc2VsZi5uZXcyb2xkID0ge30KLSAgICAgICAgICAgIHNlbGYubWFrZU5ld1J1bGVzKCkKLSAgICAgICAgICAgIHNlbGYucnVsZXNjaGFuZ2VkID0gMAotICAgICAgICAgICAgc2VsZi5lZGdlcywgc2VsZi5jb3JlcyA9IHt9LCB7fQotICAgICAgICAgICAgc2VsZi5zdGF0ZXMgPSB7IDA6IHNlbGYubWFrZVN0YXRlMCgpIH0KLSAgICAgICAgICAgIHNlbGYubWFrZVN0YXRlKDAsIHNlbGYuX0JPRikKLSAgICAgICAgIwotICAgICAgICAjICBYWFggLSBzaG91bGQgZmluZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4uCi0gICAgICAgICMKLSAgICAgICAgY2hhbmdlcyA9IDEKLSAgICAgICAgd2hpbGUgY2hhbmdlczoKLSAgICAgICAgICAgIGNoYW5nZXMgPSAwCi0gICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmVkZ2VzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgdiBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgc3ltID0gawotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSBpbiBzZWxmLnN0YXRlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ290byhzdGF0ZSwgc3ltKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyA9IDEKLSAgICAgICAgcnYgPSBzZWxmLl9fZGljdF9fLmNvcHkoKQotICAgICAgICBmb3IgcyBpbiBzZWxmLnN0YXRlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIGRlbCBzLml0ZW1zCi0gICAgICAgIGRlbCBydlsncnVsZTJmdW5jJ10KLSAgICAgICAgZGVsIHJ2WydudWxsYWJsZSddCi0gICAgICAgIGRlbCBydlsnY29yZXMnXQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgRCk6Ci0gICAgICAgIHNlbGYucnVsZXMgPSB7fQotICAgICAgICBzZWxmLnJ1bGUyZnVuYyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJuYW1lID0ge30KLSAgICAgICAgc2VsZi5jb2xsZWN0UnVsZXMoKQotICAgICAgICBzdGFydCA9IERbJ3J1bGVzJ11bc2VsZi5fU1RBUlRdWzBdWzFdWzFdICAgICAgICAjIEJsZWNoLgotICAgICAgICBzZWxmLmF1Z21lbnQoc3RhcnQpCi0gICAgICAgIERbJ3J1bGUyZnVuYyddID0gc2VsZi5ydWxlMmZ1bmMKLSAgICAgICAgRFsnbWFrZVNldCddID0gc2VsZi5tYWtlU2V0X2Zhc3QKLSAgICAgICAgc2VsZi5fX2RpY3RfXyA9IEQKLQotICAgICMKLSAgICAjICBBIGhvb2sgZm9yIEdlbmVyaWNBU1RCdWlsZGVyIGFuZCBHZW5lcmljQVNUTWF0Y2hlci4gIE1lc3MKLSAgICAjICB0aGVlIG5vdCB3aXRoIHRoaXM7IG5vciBzaGFsbCB0aGVlIHRvdWNoZXRoIHRoZSBfcHJlcHJvY2VzcwotICAgICMgIGFyZ3VtZW50IHRvIGFkZFJ1bGUuCi0gICAgIwotICAgIGRlZiBwcmVwcm9jZXNzKHNlbGYsIHJ1bGUsIGZ1bmMpOiAgICAgICByZXR1cm4gcnVsZSwgZnVuYwotCi0gICAgZGVmIGFkZFJ1bGUoc2VsZiwgZG9jLCBmdW5jLCBfcHJlcHJvY2Vzcz0xKToKLSAgICAgICAgZm4gPSBmdW5jCi0gICAgICAgIHJ1bGVzID0gZG9jLnNwbGl0KCkKLQotICAgICAgICBpbmRleCA9IFtdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihydWxlcykpOgotICAgICAgICAgICAgaWYgcnVsZXNbaV0gPT0gJzo6PSc6Ci0gICAgICAgICAgICAgICAgaW5kZXguYXBwZW5kKGktMSkKLSAgICAgICAgaW5kZXguYXBwZW5kKGxlbihydWxlcykpCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGluZGV4KS0xKToKLSAgICAgICAgICAgIGxocyA9IHJ1bGVzW2luZGV4W2ldXQotICAgICAgICAgICAgcmhzID0gcnVsZXNbaW5kZXhbaV0rMjppbmRleFtpKzFdXQotICAgICAgICAgICAgcnVsZSA9IChsaHMsIHR1cGxlKHJocykpCi0KLSAgICAgICAgICAgIGlmIF9wcmVwcm9jZXNzOgotICAgICAgICAgICAgICAgIHJ1bGUsIGZuID0gc2VsZi5wcmVwcm9jZXNzKHJ1bGUsIGZ1bmMpCi0KLSAgICAgICAgICAgIGlmIGxocyBpbiBzZWxmLnJ1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYucnVsZXNbbGhzXS5hcHBlbmQocnVsZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydWxlc1tsaHNdID0gWyBydWxlIF0KLSAgICAgICAgICAgIHNlbGYucnVsZTJmdW5jW3J1bGVdID0gZm4KLSAgICAgICAgICAgIHNlbGYucnVsZTJuYW1lW3J1bGVdID0gZnVuYy5fX25hbWVfX1syOl0KLSAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAxCi0KLSAgICBkZWYgY29sbGVjdFJ1bGVzKHNlbGYpOgotICAgICAgICBmb3IgbmFtZSBpbiBfbmFtZWxpc3Qoc2VsZik6Ci0gICAgICAgICAgICBpZiBuYW1lWzoyXSA9PSAncF8nOgotICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICAgICAgZG9jID0gZnVuYy5fX2RvY19fCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRSdWxlKGRvYywgZnVuYykKLQotICAgIGRlZiBhdWdtZW50KHNlbGYsIHN0YXJ0KToKLSAgICAgICAgcnVsZSA9ICclcyA6Oj0gJXMgJXMnICUgKHNlbGYuX1NUQVJULCBzZWxmLl9CT0YsIHN0YXJ0KQotICAgICAgICBzZWxmLmFkZFJ1bGUocnVsZSwgbGFtYmRhIGFyZ3M6IGFyZ3NbMV0sIDApCi0KLSAgICBkZWYgY29tcHV0ZU51bGwoc2VsZik6Ci0gICAgICAgIHNlbGYubnVsbGFibGUgPSB7fQotICAgICAgICB0YmQgPSBbXQotCi0gICAgICAgIGZvciBydWxlbGlzdCBpbiBzZWxmLnJ1bGVzLnZhbHVlcygpOgotICAgICAgICAgICAgbGhzID0gcnVsZWxpc3RbMF1bMF0KLSAgICAgICAgICAgIHNlbGYubnVsbGFibGVbbGhzXSA9IDAKLSAgICAgICAgICAgIGZvciBydWxlIGluIHJ1bGVsaXN0OgotICAgICAgICAgICAgICAgIHJocyA9IHJ1bGVbMV0KLSAgICAgICAgICAgICAgICBpZiBsZW4ocmhzKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm51bGxhYmxlW2xoc10gPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgIFdlIG9ubHkgbmVlZCB0byBjb25zaWRlciBydWxlcyB3aGljaAotICAgICAgICAgICAgICAgICMgIGNvbnNpc3QgZW50aXJlbHkgb2Ygbm9udGVybWluYWwgc3ltYm9scy4KLSAgICAgICAgICAgICAgICAjICBUaGlzIHNob3VsZCBiZSBhIHNhdmluZ3Mgb24gdHlwaWNhbAotICAgICAgICAgICAgICAgICMgIGdyYW1tYXJzLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBmb3Igc3ltIGluIHJoczoKLSAgICAgICAgICAgICAgICAgICAgaWYgc3ltIG5vdCBpbiBzZWxmLnJ1bGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0YmQuYXBwZW5kKHJ1bGUpCi0gICAgICAgIGNoYW5nZXMgPSAxCi0gICAgICAgIHdoaWxlIGNoYW5nZXM6Ci0gICAgICAgICAgICBjaGFuZ2VzID0gMAotICAgICAgICAgICAgZm9yIGxocywgcmhzIGluIHRiZDoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLm51bGxhYmxlW2xoc106Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZm9yIHN5bSBpbiByaHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLm51bGxhYmxlW3N5bV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubnVsbGFibGVbbGhzXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyA9IDEKLQotICAgIGRlZiBtYWtlU3RhdGUwKHNlbGYpOgotICAgICAgICBzMCA9IF9TdGF0ZSgwLCBbXSkKLSAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5uZXdydWxlc1tzZWxmLl9TVEFSVF06Ci0gICAgICAgICAgICBzMC5pdGVtcy5hcHBlbmQoKHJ1bGUsIDApKQotICAgICAgICByZXR1cm4gczAKLQotICAgIGRlZiBmaW5hbFN0YXRlKHNlbGYsIHRva2Vucyk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgWXVjay4KLSAgICAgICAgIwotICAgICAgICBpZiBsZW4oc2VsZi5uZXdydWxlc1tzZWxmLl9TVEFSVF0pID09IDIgYW5kIGxlbih0b2tlbnMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBzdGFydCA9IHNlbGYucnVsZXNbc2VsZi5fU1RBUlRdWzBdWzFdWzFdCi0gICAgICAgIHJldHVybiBzZWxmLmdvdG8oMSwgc3RhcnQpCi0KLSAgICBkZWYgbWFrZU5ld1J1bGVzKHNlbGYpOgotICAgICAgICB3b3JrbGlzdCA9IFtdCi0gICAgICAgIGZvciBydWxlbGlzdCBpbiBzZWxmLnJ1bGVzLnZhbHVlcygpOgotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gcnVsZWxpc3Q6Ci0gICAgICAgICAgICAgICAgd29ya2xpc3QuYXBwZW5kKChydWxlLCAwLCAxLCBydWxlKSkKLQotICAgICAgICBmb3IgcnVsZSwgaSwgY2FuZGlkYXRlLCBvbGRydWxlIGluIHdvcmtsaXN0OgotICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgICAgICBuID0gbGVuKHJocykKLSAgICAgICAgICAgIHdoaWxlIGkgPCBuOgotICAgICAgICAgICAgICAgIHN5bSA9IHJoc1tpXQotICAgICAgICAgICAgICAgIGlmIHN5bSBub3QgaW4gc2VsZi5ydWxlcyBvciBcCi0gICAgICAgICAgICAgICAgICAgbm90IHNlbGYubnVsbGFibGVbc3ltXToKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gMAotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG5ld3JocyA9IGxpc3QocmhzKQotICAgICAgICAgICAgICAgIG5ld3Joc1tpXSA9IHNlbGYuX05VTExBQkxFK3N5bQotICAgICAgICAgICAgICAgIG5ld3J1bGUgPSAobGhzLCB0dXBsZShuZXdyaHMpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZCgobmV3cnVsZSwgaSsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlLCBvbGRydWxlKSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSAwCi0gICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZToKLSAgICAgICAgICAgICAgICAgICAgbGhzID0gc2VsZi5fTlVMTEFCTEUrbGhzCi0gICAgICAgICAgICAgICAgICAgIHJ1bGUgPSAobGhzLCByaHMpCi0gICAgICAgICAgICAgICAgaWYgbGhzIGluIHNlbGYubmV3cnVsZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3cnVsZXNbbGhzXS5hcHBlbmQocnVsZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm5ld3J1bGVzW2xoc10gPSBbIHJ1bGUgXQotICAgICAgICAgICAgICAgIHNlbGYubmV3Mm9sZFtydWxlXSA9IG9sZHJ1bGUKLQotICAgIGRlZiB0eXBlc3RyaW5nKHNlbGYsIHRva2VuKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBlcnJvcihzZWxmLCB0b2tlbik6Ci0gICAgICAgIG91dHB1dCgiU3ludGF4IGVycm9yIGF0IG9yIG5lYXIgYCVzJyB0b2tlbiIgJSB0b2tlbikKLSAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAotCi0gICAgZGVmIHBhcnNlKHNlbGYsIHRva2Vucyk6Ci0gICAgICAgIHNldHMgPSBbIFsoMSwwKSwgKDIsMCldIF0KLSAgICAgICAgc2VsZi5saW5rcyA9IHt9Ci0KLSAgICAgICAgaWYgc2VsZi5ydWxlc2NoYW5nZWQ6Ci0gICAgICAgICAgICBzZWxmLmNvbXB1dGVOdWxsKCkKLSAgICAgICAgICAgIHNlbGYubmV3cnVsZXMgPSB7fQotICAgICAgICAgICAgc2VsZi5uZXcyb2xkID0ge30KLSAgICAgICAgICAgIHNlbGYubWFrZU5ld1J1bGVzKCkKLSAgICAgICAgICAgIHNlbGYucnVsZXNjaGFuZ2VkID0gMAotICAgICAgICAgICAgc2VsZi5lZGdlcywgc2VsZi5jb3JlcyA9IHt9LCB7fQotICAgICAgICAgICAgc2VsZi5zdGF0ZXMgPSB7IDA6IHNlbGYubWFrZVN0YXRlMCgpIH0KLSAgICAgICAgICAgIHNlbGYubWFrZVN0YXRlKDAsIHNlbGYuX0JPRikKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4odG9rZW5zKSk6Ci0gICAgICAgICAgICBzZXRzLmFwcGVuZChbXSkKLQotICAgICAgICAgICAgaWYgc2V0c1tpXSA9PSBbXToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2VsZi5tYWtlU2V0KHRva2Vuc1tpXSwgc2V0cywgaSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNldHMuYXBwZW5kKFtdKQotICAgICAgICAgICAgc2VsZi5tYWtlU2V0KE5vbmUsIHNldHMsIGxlbih0b2tlbnMpKQotCi0gICAgICAgICNfZHVtcCh0b2tlbnMsIHNldHMsIHNlbGYuc3RhdGVzKQotCi0gICAgICAgIGZpbmFsaXRlbSA9IChzZWxmLmZpbmFsU3RhdGUodG9rZW5zKSwgMCkKLSAgICAgICAgaWYgZmluYWxpdGVtIG5vdCBpbiBzZXRzWy0yXToKLSAgICAgICAgICAgIGlmIGxlbih0b2tlbnMpID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKHRva2Vuc1tpLTFdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKE5vbmUpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuYnVpbGRUcmVlKHNlbGYuX1NUQVJULCBmaW5hbGl0ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMsIGxlbihzZXRzKS0yKQotCi0gICAgZGVmIGlzbnVsbGFibGUoc2VsZiwgc3ltKToKLSAgICAgICAgIwotICAgICAgICAjICBGb3Igc3ltYm9scyBpbiBHX2Ugb25seS4gIElmIHdlIHdlcmVuJ3Qgc3VwcG9ydGluZyAxLjUsCi0gICAgICAgICMgIGNvdWxkIGp1c3QgdXNlIHN5bS5zdGFydHN3aXRoKCkuCi0gICAgICAgICMKLSAgICAgICAgcmV0dXJuIHNlbGYuX05VTExBQkxFID09IHN5bVswOmxlbihzZWxmLl9OVUxMQUJMRSldCi0KLSAgICBkZWYgc2tpcChzZWxmLCBocywgcG9zPTApOgotICAgICAgICBuID0gbGVuKGhzWzFdKQotICAgICAgICB3aGlsZSBwb3MgPCBuOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNudWxsYWJsZShoc1sxXVtwb3NdKToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcG9zID0gcG9zICsgMQotICAgICAgICByZXR1cm4gcG9zCi0KLSAgICBkZWYgbWFrZVN0YXRlKHNlbGYsIHN0YXRlLCBzeW0pOgotICAgICAgICBhc3NlcnQgc3ltIGlzIG5vdCBOb25lCi0gICAgICAgICMKLSAgICAgICAgIyAgQ29tcHV0ZSBcZXBzaWxvbi1rZXJuZWwgc3RhdGUncyBjb3JlIGFuZCBzZWUgaWYKLSAgICAgICAgIyAgaXQgZXhpc3RzIGFscmVhZHkuCi0gICAgICAgICMKLSAgICAgICAga2l0ZW1zID0gW10KLSAgICAgICAgZm9yIHJ1bGUsIHBvcyBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uaXRlbXM6Ci0gICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgIGlmIHJoc1twb3M6cG9zKzFdID09IChzeW0sKToKLSAgICAgICAgICAgICAgICBraXRlbXMuYXBwZW5kKChydWxlLCBzZWxmLnNraXAocnVsZSwgcG9zKzEpKSkKLSAgICAgICAgY29yZSA9IGtpdGVtcwotCi0gICAgICAgIGNvcmUuc29ydCgpCi0gICAgICAgIHRjb3JlID0gdHVwbGUoY29yZSkKLSAgICAgICAgaWYgdGNvcmUgaW4gc2VsZi5jb3JlczoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcmVzW3Rjb3JlXQotICAgICAgICAjCi0gICAgICAgICMgIE5vcGUsIGRvZXNuJ3QgZXhpc3QuICBDb21wdXRlIGl0IGFuZCB0aGUgYXNzb2NpYXRlZAotICAgICAgICAjICBcZXBzaWxvbi1ub25rZXJuZWwgc3RhdGUgdG9nZXRoZXI7IHdlJ2xsIG5lZWQgaXQgcmlnaHQgYXdheS4KLSAgICAgICAgIwotICAgICAgICBrID0gc2VsZi5jb3Jlc1t0Y29yZV0gPSBsZW4oc2VsZi5zdGF0ZXMpCi0gICAgICAgIEssIE5LID0gX1N0YXRlKGssIGtpdGVtcyksIF9TdGF0ZShrKzEsIFtdKQotICAgICAgICBzZWxmLnN0YXRlc1trXSA9IEsKLSAgICAgICAgcHJlZGljdGVkID0ge30KLQotICAgICAgICBlZGdlcyA9IHNlbGYuZWRnZXMKLSAgICAgICAgcnVsZXMgPSBzZWxmLm5ld3J1bGVzCi0gICAgICAgIGZvciBYIGluIEssIE5LOgotICAgICAgICAgICAgd29ya2xpc3QgPSBYLml0ZW1zCi0gICAgICAgICAgICBmb3IgaXRlbSBpbiB3b3JrbGlzdDoKLSAgICAgICAgICAgICAgICBydWxlLCBwb3MgPSBpdGVtCi0gICAgICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgICAgICAgICAgaWYgcG9zID09IGxlbihyaHMpOgotICAgICAgICAgICAgICAgICAgICBYLmNvbXBsZXRlLmFwcGVuZChydWxlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgbmV4dFN5bSA9IHJoc1twb3NdCi0gICAgICAgICAgICAgICAga2V5ID0gKFguc3RhdGVubywgbmV4dFN5bSkKLSAgICAgICAgICAgICAgICBpZiBuZXh0U3ltIG5vdCBpbiBydWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBlZGdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VzW2tleV0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBYLlQuYXBwZW5kKG5leHRTeW0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZWRnZXNba2V5XSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV4dFN5bSBub3QgaW4gcHJlZGljdGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljdGVkW25leHRTeW1dID0gMQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBydWxlIGluIHJ1bGVzW25leHRTeW1dOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwb3MgPSBzZWxmLnNraXAocHJ1bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ID0gKHBydWxlLCBwcG9zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5LLml0ZW1zLmFwcGVuZChuZXcpCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjICBQcm9ibGVtOiB3ZSBrbm93IEsgbmVlZHMgZ2VuZXJhdGluZywgYnV0IHdlCi0gICAgICAgICAgICAjICBkb24ndCB5ZXQga25vdyBhYm91dCBOSy4gIENhbid0IGNvbW1pdCBhbnl0aGluZwotICAgICAgICAgICAgIyAgcmVnYXJkaW5nIE5LIHRvIHNlbGYuZWRnZXMgdW50aWwgd2UncmUgc3VyZS4gIFNob3VsZAotICAgICAgICAgICAgIyAgd2UgZGVsYXkgY29tbWl0dGluZyBvbiBib3RoIEsgYW5kIE5LIHRvIGF2b2lkIHRoaXMKLSAgICAgICAgICAgICMgIGhhY2t5IGNvZGU/ICBUaGlzIGNyZWF0ZXMgb3RoZXIgcHJvYmxlbXMuLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgaWYgWCBpcyBLOgotICAgICAgICAgICAgICAgIGVkZ2VzID0ge30KLQotICAgICAgICBpZiBOSy5pdGVtcyA9PSBbXToKLSAgICAgICAgICAgIHJldHVybiBrCi0KLSAgICAgICAgIwotICAgICAgICAjICBDaGVjayBmb3IgXGVwc2lsb24tbm9ua2VybmVsJ3MgY29yZS4gIFVuZm9ydHVuYXRlbHkgd2UKLSAgICAgICAgIyAgbmVlZCB0byBrbm93IHRoZSBlbnRpcmUgc2V0IG9mIHByZWRpY3RlZCBub250ZXJtaW5hbHMKLSAgICAgICAgIyAgdG8gZG8gdGhpcyB3aXRob3V0IGFjY2lkZW50YWxseSBkdXBsaWNhdGluZyBzdGF0ZXMuCi0gICAgICAgICMKLSAgICAgICAgY29yZSA9IHNvcnRlZChwcmVkaWN0ZWQua2V5cygpKQotICAgICAgICB0Y29yZSA9IHR1cGxlKGNvcmUpCi0gICAgICAgIGlmIHRjb3JlIGluIHNlbGYuY29yZXM6Ci0gICAgICAgICAgICBzZWxmLmVkZ2VzWyhrLCBOb25lKV0gPSBzZWxmLmNvcmVzW3Rjb3JlXQotICAgICAgICAgICAgcmV0dXJuIGsKLQotICAgICAgICBuayA9IHNlbGYuY29yZXNbdGNvcmVdID0gc2VsZi5lZGdlc1soaywgTm9uZSldID0gTksuc3RhdGVubwotICAgICAgICBzZWxmLmVkZ2VzLnVwZGF0ZShlZGdlcykKLSAgICAgICAgc2VsZi5zdGF0ZXNbbmtdID0gTksKLSAgICAgICAgcmV0dXJuIGsKLQotICAgIGRlZiBnb3RvKHNlbGYsIHN0YXRlLCBzeW0pOgotICAgICAgICBrZXkgPSAoc3RhdGUsIHN5bSkKLSAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLmVkZ2VzOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAgTm8gdHJhbnNpdGlvbnMgZnJvbSBzdGF0ZSBvbiBzeW0uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJ2ID0gc2VsZi5lZGdlc1trZXldCi0gICAgICAgIGlmIHJ2IGlzIE5vbmU6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjICBUYXJnZXQgc3RhdGUgaXNuJ3QgZ2VuZXJhdGVkIHlldC4gIFJlbWVkeSB0aGlzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgcnYgPSBzZWxmLm1ha2VTdGF0ZShzdGF0ZSwgc3ltKQotICAgICAgICAgICAgc2VsZi5lZGdlc1trZXldID0gcnYKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgZ290b1Qoc2VsZiwgc3RhdGUsIHQpOgotICAgICAgICByZXR1cm4gW3NlbGYuZ290byhzdGF0ZSwgdCldCi0KLSAgICBkZWYgZ290b1NUKHNlbGYsIHN0YXRlLCBzdCk6Ci0gICAgICAgIHJ2ID0gW10KLSAgICAgICAgZm9yIHQgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLlQ6Ci0gICAgICAgICAgICBpZiBzdCA9PSB0OgotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChzZWxmLmdvdG8oc3RhdGUsIHQpKQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBhZGQoc2VsZiwgc2V0LCBpdGVtLCBpPU5vbmUsIHByZWRlY2Vzc29yPU5vbmUsIGNhdXNhbD1Ob25lKToKLSAgICAgICAgaWYgcHJlZGVjZXNzb3IgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIHNldDoKLSAgICAgICAgICAgICAgICBzZXQuYXBwZW5kKGl0ZW0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBrZXkgPSAoaXRlbSwgaSkKLSAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIHNldDoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0gPSBbXQotICAgICAgICAgICAgICAgIHNldC5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XS5hcHBlbmQoKHByZWRlY2Vzc29yLCBjYXVzYWwpKQotCi0gICAgZGVmIG1ha2VTZXQoc2VsZiwgdG9rZW4sIHNldHMsIGkpOgotICAgICAgICBjdXIsIG5leHQgPSBzZXRzW2ldLCBzZXRzW2krMV0KLQotICAgICAgICB0dHlwZSA9IHRva2VuIGlzIG5vdCBOb25lIGFuZCBzZWxmLnR5cGVzdHJpbmcodG9rZW4pIG9yIE5vbmUKLSAgICAgICAgaWYgdHR5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmbiwgYXJnID0gc2VsZi5nb3RvVCwgdHR5cGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZuLCBhcmcgPSBzZWxmLmdvdG9TVCwgdG9rZW4KLQotICAgICAgICBmb3IgaXRlbSBpbiBjdXI6Ci0gICAgICAgICAgICBwdHIgPSAoaXRlbSwgaSkKLSAgICAgICAgICAgIHN0YXRlLCBwYXJlbnQgPSBpdGVtCi0gICAgICAgICAgICBhZGQgPSBmbihzdGF0ZSwgYXJnKQotICAgICAgICAgICAgZm9yIGsgaW4gYWRkOgotICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChrLCBwYXJlbnQpLCBpKzEsIHB0cikKLSAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChuZXh0LCAobmssIGkrMSkpCi0KLSAgICAgICAgICAgIGlmIHBhcmVudCA9PSBpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZvciBydWxlIGluIHNlbGYuc3RhdGVzW3N0YXRlXS5jb21wbGV0ZToKLSAgICAgICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgICAgICBmb3IgcGl0ZW0gaW4gc2V0c1twYXJlbnRdOgotICAgICAgICAgICAgICAgICAgICBwc3RhdGUsIHBwYXJlbnQgPSBwaXRlbQotICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5nb3RvKHBzdGF0ZSwgbGhzKQotICAgICAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgd2h5ID0gKGl0ZW0sIGksIHJ1bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcHRyID0gKHBpdGVtLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChjdXIsIChrLCBwcGFyZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIHBwdHIsIHdoeSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChjdXIsIChuaywgaSkpCi0KLSAgICBkZWYgbWFrZVNldF9mYXN0KHNlbGYsIHRva2VuLCBzZXRzLCBpKToKLSAgICAgICAgIwotICAgICAgICAjICBDYWxsICpvbmx5KiB3aGVuIHRoZSBlbnRpcmUgc3RhdGUgbWFjaGluZSBoYXMgYmVlbiBidWlsdCEKLSAgICAgICAgIyAgSXQgcmVsaWVzIG9uIHNlbGYuZWRnZXMgYmVpbmcgZmlsbGVkIGluIGNvbXBsZXRlbHksIGFuZAotICAgICAgICAjICB0aGVuIGR1cGxpY2F0ZXMgYW5kIGlubGluZXMgY29kZSB0byBib29zdCBzcGVlZCBhdCB0aGUKLSAgICAgICAgIyAgY29zdCBvZiBleHRyZW1lIHVnbGluZXNzLgotICAgICAgICAjCi0gICAgICAgIGN1ciwgbmV4dCA9IHNldHNbaV0sIHNldHNbaSsxXQotICAgICAgICB0dHlwZSA9IHRva2VuIGlzIG5vdCBOb25lIGFuZCBzZWxmLnR5cGVzdHJpbmcodG9rZW4pIG9yIE5vbmUKLQotICAgICAgICBmb3IgaXRlbSBpbiBjdXI6Ci0gICAgICAgICAgICBwdHIgPSAoaXRlbSwgaSkKLSAgICAgICAgICAgIHN0YXRlLCBwYXJlbnQgPSBpdGVtCi0gICAgICAgICAgICBpZiB0dHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBrID0gc2VsZi5lZGdlcy5nZXQoKHN0YXRlLCB0dHlwZSksIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgI3NlbGYuYWRkKG5leHQsIChrLCBwYXJlbnQpLCBpKzEsIHB0cikKLSAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgIG5ldyA9IChrLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIGtleSA9IChuZXcsIGkrMSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV3IG5vdCBpbiBuZXh0OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldLmFwcGVuZCgocHRyLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS1eCi0gICAgICAgICAgICAgICAgICAgICNuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZWRnZXMuZ2V0KChrLCBOb25lKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjc2VsZi5hZGQobmV4dCwgKG5rLCBpKzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAobmssIGkrMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ldyBub3QgaW4gbmV4dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcGVuZChuZXcpCi0gICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWRkID0gc2VsZi5nb3RvU1Qoc3RhdGUsIHRva2VuKQotICAgICAgICAgICAgICAgIGZvciBrIGluIGFkZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChrLCBwYXJlbnQpLCBpKzEsIHB0cikKLSAgICAgICAgICAgICAgICAgICAgICAgICNuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmVkZ2VzLmdldCgoaywgTm9uZSksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChuZXh0LCAobmssIGkrMSkpCi0KLSAgICAgICAgICAgIGlmIHBhcmVudCA9PSBpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZvciBydWxlIGluIHNlbGYuc3RhdGVzW3N0YXRlXS5jb21wbGV0ZToKLSAgICAgICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgICAgICBmb3IgcGl0ZW0gaW4gc2V0c1twYXJlbnRdOgotICAgICAgICAgICAgICAgICAgICBwc3RhdGUsIHBwYXJlbnQgPSBwaXRlbQotICAgICAgICAgICAgICAgICAgICAjayA9IHNlbGYuZ290byhwc3RhdGUsIGxocykKLSAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYuZWRnZXMuZ2V0KChwc3RhdGUsIGxocyksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aHkgPSAoaXRlbSwgaSwgcnVsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBwdHIgPSAocGl0ZW0sIHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChjdXIsIChrLCBwcGFyZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgIGksIHBwdHIsIHdoeSkKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tdgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3ID0gKGssIHBwYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSAobmV3LCBpKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3IG5vdCBpbiBjdXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XS5hcHBlbmQoKHBwdHIsIHdoeSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLSAgICAgICAgICAgICAgICAgICAgICAgICNuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmVkZ2VzLmdldCgoaywgTm9uZSksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VsZi5hZGQoY3VyLCAobmssIGkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IChuaywgaSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIGN1cjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyLmFwcGVuZChuZXcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS1eCi0KLSAgICBkZWYgcHJlZGVjZXNzb3Ioc2VsZiwga2V5LCBjYXVzYWwpOgotICAgICAgICBmb3IgcCwgYyBpbiBzZWxmLmxpbmtzW2tleV06Ci0gICAgICAgICAgICBpZiBjID09IGNhdXNhbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcAotICAgICAgICBhc3NlcnQgMAotCi0gICAgZGVmIGNhdXNhbChzZWxmLCBrZXkpOgotICAgICAgICBsaW5rcyA9IHNlbGYubGlua3Nba2V5XQotICAgICAgICBpZiBsZW4obGlua3MpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gbGlua3NbMF1bMV0KLSAgICAgICAgY2hvaWNlcyA9IFtdCi0gICAgICAgIHJ1bGUyY2F1c2UgPSB7fQotICAgICAgICBmb3IgcCwgYyBpbiBsaW5rczoKLSAgICAgICAgICAgIHJ1bGUgPSBjWzJdCi0gICAgICAgICAgICBjaG9pY2VzLmFwcGVuZChydWxlKQotICAgICAgICAgICAgcnVsZTJjYXVzZVtydWxlXSA9IGMKLSAgICAgICAgcmV0dXJuIHJ1bGUyY2F1c2Vbc2VsZi5hbWJpZ3VpdHkoY2hvaWNlcyldCi0KLSAgICBkZWYgZGVyaXZlRXBzaWxvbihzZWxmLCBudCk6Ci0gICAgICAgIGlmIGxlbihzZWxmLm5ld3J1bGVzW250XSkgPiAxOgotICAgICAgICAgICAgcnVsZSA9IHNlbGYuYW1iaWd1aXR5KHNlbGYubmV3cnVsZXNbbnRdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcnVsZSA9IHNlbGYubmV3cnVsZXNbbnRdWzBdCi0gICAgICAgICNvdXRwdXQocnVsZSkKLQotICAgICAgICByaHMgPSBydWxlWzFdCi0gICAgICAgIGF0dHIgPSBbTm9uZV0gKiBsZW4ocmhzKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihyaHMpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgICBhdHRyW2ldID0gc2VsZi5kZXJpdmVFcHNpbG9uKHJoc1tpXSkKLSAgICAgICAgcmV0dXJuIHNlbGYucnVsZTJmdW5jW3NlbGYubmV3Mm9sZFtydWxlXV0oYXR0cikKLQotICAgIGRlZiBidWlsZFRyZWUoc2VsZiwgbnQsIGl0ZW0sIHRva2Vucywgayk6Ci0gICAgICAgIHN0YXRlLCBwYXJlbnQgPSBpdGVtCi0KLSAgICAgICAgY2hvaWNlcyA9IFtdCi0gICAgICAgIGZvciBydWxlIGluIHNlbGYuc3RhdGVzW3N0YXRlXS5jb21wbGV0ZToKLSAgICAgICAgICAgIGlmIHJ1bGVbMF0gPT0gbnQ6Ci0gICAgICAgICAgICAgICAgY2hvaWNlcy5hcHBlbmQocnVsZSkKLSAgICAgICAgcnVsZSA9IGNob2ljZXNbMF0KLSAgICAgICAgaWYgbGVuKGNob2ljZXMpID4gMToKLSAgICAgICAgICAgIHJ1bGUgPSBzZWxmLmFtYmlndWl0eShjaG9pY2VzKQotICAgICAgICAjb3V0cHV0KHJ1bGUpCi0KLSAgICAgICAgcmhzID0gcnVsZVsxXQotICAgICAgICBhdHRyID0gW05vbmVdICogbGVuKHJocykKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocmhzKS0xLCAtMSwgLTEpOgotICAgICAgICAgICAgc3ltID0gcmhzW2ldCi0gICAgICAgICAgICBpZiBzeW0gbm90IGluIHNlbGYubmV3cnVsZXM6Ci0gICAgICAgICAgICAgICAgaWYgc3ltICE9IHNlbGYuX0JPRjoKLSAgICAgICAgICAgICAgICAgICAgYXR0cltpXSA9IHRva2Vuc1trLTFdCi0gICAgICAgICAgICAgICAgICAgIGtleSA9IChpdGVtLCBrKQotICAgICAgICAgICAgICAgICAgICBpdGVtLCBrID0gc2VsZi5wcmVkZWNlc3NvcihrZXksIE5vbmUpCi0gICAgICAgICAgICAjZWxpZiBzZWxmLmlzbnVsbGFibGUoc3ltKToKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fTlVMTEFCTEUgPT0gc3ltWzA6bGVuKHNlbGYuX05VTExBQkxFKV06Ci0gICAgICAgICAgICAgICAgYXR0cltpXSA9IHNlbGYuZGVyaXZlRXBzaWxvbihzeW0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGtleSA9IChpdGVtLCBrKQotICAgICAgICAgICAgICAgIHdoeSA9IHNlbGYuY2F1c2FsKGtleSkKLSAgICAgICAgICAgICAgICBhdHRyW2ldID0gc2VsZi5idWlsZFRyZWUoc3ltLCB3aHlbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucywgd2h5WzFdKQotICAgICAgICAgICAgICAgIGl0ZW0sIGsgPSBzZWxmLnByZWRlY2Vzc29yKGtleSwgd2h5KQotICAgICAgICByZXR1cm4gc2VsZi5ydWxlMmZ1bmNbc2VsZi5uZXcyb2xkW3J1bGVdXShhdHRyKQotCi0gICAgZGVmIGFtYmlndWl0eShzZWxmLCBydWxlcyk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgWFhYIC0gcHJvYmxlbSBoZXJlIGFuZCBpbiBjb2xsZWN0UnVsZXMoKSBpZiB0aGUgc2FtZSBydWxlCi0gICAgICAgICMgICAgICAgIGFwcGVhcnMgaW4gPjEgbWV0aG9kLiAgQWxzbyB1bmRlZmluZWQgcmVzdWx0cyBpZiBydWxlcwotICAgICAgICAjICAgICAgICBjYXVzaW5nIHRoZSBhbWJpZ3VpdHkgYXBwZWFyIGluIHRoZSBzYW1lIG1ldGhvZC4KLSAgICAgICAgIwotICAgICAgICBzb3J0bGlzdCA9IFtdCi0gICAgICAgIG5hbWUyaW5kZXggPSB7fQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocnVsZXMpKToKLSAgICAgICAgICAgIGxocywgcmhzID0gcnVsZSA9IHJ1bGVzW2ldCi0gICAgICAgICAgICBuYW1lID0gc2VsZi5ydWxlMm5hbWVbc2VsZi5uZXcyb2xkW3J1bGVdXQotICAgICAgICAgICAgc29ydGxpc3QuYXBwZW5kKChsZW4ocmhzKSwgbmFtZSkpCi0gICAgICAgICAgICBuYW1lMmluZGV4W25hbWVdID0gaQotICAgICAgICBzb3J0bGlzdC5zb3J0KCkKLSAgICAgICAgbGlzdCA9IFtiIGZvciBhLCBiIGluIHNvcnRsaXN0XQotICAgICAgICByZXR1cm4gcnVsZXNbbmFtZTJpbmRleFtzZWxmLnJlc29sdmUobGlzdCldXQotCi0gICAgZGVmIHJlc29sdmUoc2VsZiwgbGlzdCk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgUmVzb2x2ZSBhbWJpZ3VpdHkgaW4gZmF2b3Igb2YgdGhlIHNob3J0ZXN0IFJIUy4KLSAgICAgICAgIyAgU2luY2Ugd2Ugd2FsayB0aGUgdHJlZSBmcm9tIHRoZSB0b3AgZG93biwgdGhpcwotICAgICAgICAjICBzaG91bGQgZWZmZWN0aXZlbHkgcmVzb2x2ZSBpbiBmYXZvciBvZiBhICJzaGlmdCIuCi0gICAgICAgICMKLSAgICAgICAgcmV0dXJuIGxpc3RbMF0KLQotIwotIyAgR2VuZXJpY0FTVEJ1aWxkZXIgYXV0b21hZ2ljYWxseSBjb25zdHJ1Y3RzIGEgY29uY3JldGUvYWJzdHJhY3Qgc3ludGF4IHRyZWUKLSMgIGZvciBhIGdpdmVuIGlucHV0LiAgVGhlIGV4dHJhIGFyZ3VtZW50IGlzIGEgY2xhc3MgKG5vdCBhbiBpbnN0YW5jZSEpCi0jICB3aGljaCBzdXBwb3J0cyB0aGUgIl9fc2V0c2xpY2VfXyIgYW5kICJfX2xlbl9fIiBtZXRob2RzLgotIwotIyAgWFhYIC0gc2lsZW50bHkgb3ZlcnJpZGVzIGFueSB1c2VyIGNvZGUgaW4gbWV0aG9kcy4KLSMKLQotY2xhc3MgR2VuZXJpY0FTVEJ1aWxkZXIoR2VuZXJpY1BhcnNlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIEFTVCwgc3RhcnQpOgotICAgICAgICBHZW5lcmljUGFyc2VyLl9faW5pdF9fKHNlbGYsIHN0YXJ0KQotICAgICAgICBzZWxmLkFTVCA9IEFTVAotCi0gICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgcnVsZSwgZnVuYyk6Ci0gICAgICAgIHJlYmluZCA9IGxhbWJkYSBsaHMsIHNlbGY9c2VsZjogXAotICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGFyZ3MsIGxocz1saHMsIHNlbGY9c2VsZjogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkQVNUTm9kZShhcmdzLCBsaHMpCi0gICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICByZXR1cm4gcnVsZSwgcmViaW5kKGxocykKLQotICAgIGRlZiBidWlsZEFTVE5vZGUoc2VsZiwgYXJncywgbGhzKToKLSAgICAgICAgY2hpbGRyZW4gPSBbXQotICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgc2VsZi5BU1QpOgotICAgICAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChhcmcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChzZWxmLnRlcm1pbmFsKGFyZykpCi0gICAgICAgIHJldHVybiBzZWxmLm5vbnRlcm1pbmFsKGxocywgY2hpbGRyZW4pCi0KLSAgICBkZWYgdGVybWluYWwoc2VsZiwgdG9rZW4pOiAgICAgIHJldHVybiB0b2tlbgotCi0gICAgZGVmIG5vbnRlcm1pbmFsKHNlbGYsIHR5cGUsIGFyZ3MpOgotICAgICAgICBydiA9IHNlbGYuQVNUKHR5cGUpCi0gICAgICAgIHJ2WzpsZW4oYXJncyldID0gYXJncwotICAgICAgICByZXR1cm4gcnYKLQotIwotIyAgR2VuZXJpY0FTVFRyYXZlcnNhbCBpcyBhIFZpc2l0b3IgcGF0dGVybiBhY2NvcmRpbmcgdG8gRGVzaWduIFBhdHRlcm5zLiAgRm9yCi0jICBlYWNoIG5vZGUgaXQgYXR0ZW1wdHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgbl88bm9kZSB0eXBlPiwgZmFsbGluZwotIyAgYmFjayBvbnRvIHRoZSBkZWZhdWx0KCkgbWV0aG9kIGlmIHRoZSBuXyogY2FuJ3QgYmUgZm91bmQuICBUaGUgcHJlb3JkZXIKLSMgIHRyYXZlcnNhbCBhbHNvIGxvb2tzIGZvciBhbiBleGl0IGhvb2sgbmFtZWQgbl88bm9kZSB0eXBlPl9leGl0IChubyBkZWZhdWx0Ci0jICByb3V0aW5lIGlzIGNhbGxlZCBpZiBpdCdzIG5vdCBmb3VuZCkuICBUbyBwcmVtYXR1cmVseSBoYWx0IHRyYXZlcnNhbAotIyAgb2YgYSBzdWJ0cmVlLCBjYWxsIHRoZSBwcnVuZSgpIG1ldGhvZCAtLSB0aGlzIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGEKLSMgIHByZW9yZGVyIHRyYXZlcnNhbC4gIE5vZGUgdHlwZSBpcyBkZXRlcm1pbmVkIHZpYSB0aGUgdHlwZXN0cmluZygpIG1ldGhvZC4KLSMKLQotY2xhc3MgR2VuZXJpY0FTVFRyYXZlcnNhbFBydW5pbmdFeGNlcHRpb246Ci0gICAgcGFzcwotCi1jbGFzcyBHZW5lcmljQVNUVHJhdmVyc2FsOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhc3QpOgotICAgICAgICBzZWxmLmFzdCA9IGFzdAotCi0gICAgZGVmIHR5cGVzdHJpbmcoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBub2RlLnR5cGUKLQotICAgIGRlZiBwcnVuZShzZWxmKToKLSAgICAgICAgcmFpc2UgR2VuZXJpY0FTVFRyYXZlcnNhbFBydW5pbmdFeGNlcHRpb24KLQotICAgIGRlZiBwcmVvcmRlcihzZWxmLCBub2RlPU5vbmUpOgotICAgICAgICBpZiBub2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlID0gc2VsZi5hc3QKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gJ25fJyArIHNlbGYudHlwZXN0cmluZyhub2RlKQotICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKLSAgICAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgICAgIGZ1bmMobm9kZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0KG5vZGUpCi0gICAgICAgIGV4Y2VwdCBHZW5lcmljQVNUVHJhdmVyc2FsUHJ1bmluZ0V4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBraWQgaW4gbm9kZToKLSAgICAgICAgICAgIHNlbGYucHJlb3JkZXIoa2lkKQotCi0gICAgICAgIG5hbWUgPSBuYW1lICsgJ19leGl0JwotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkKLSAgICAgICAgICAgIGZ1bmMobm9kZSkKLQotICAgIGRlZiBwb3N0b3JkZXIoc2VsZiwgbm9kZT1Ob25lKToKLSAgICAgICAgaWYgbm9kZSBpcyBOb25lOgotICAgICAgICAgICAgbm9kZSA9IHNlbGYuYXN0Ci0KLSAgICAgICAgZm9yIGtpZCBpbiBub2RlOgotICAgICAgICAgICAgc2VsZi5wb3N0b3JkZXIoa2lkKQotCi0gICAgICAgIG5hbWUgPSAnbl8nICsgc2VsZi50eXBlc3RyaW5nKG5vZGUpCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgZnVuYyhub2RlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5kZWZhdWx0KG5vZGUpCi0KLQotICAgIGRlZiBkZWZhdWx0KHNlbGYsIG5vZGUpOgotICAgICAgICBwYXNzCi0KLSMKLSMgIEdlbmVyaWNBU1RNYXRjaGVyLiAgQVNUIG5vZGVzIG11c3QgaGF2ZSAiX19nZXRpdGVtX18iIGFuZCAiX19jbXBfXyIKLSMgIGltcGxlbWVudGVkLgotIwotIyAgWFhYIC0gbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgaG93IEdlbmVyaWNQYXJzZXIgd2Fsa3MgdGhlIHBhcnNlIHRyZWUuCi0jCi0KLWNsYXNzIEdlbmVyaWNBU1RNYXRjaGVyKEdlbmVyaWNQYXJzZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgYXN0KToKLSAgICAgICAgR2VuZXJpY1BhcnNlci5fX2luaXRfXyhzZWxmLCBzdGFydCkKLSAgICAgICAgc2VsZi5hc3QgPSBhc3QKLQotICAgIGRlZiBwcmVwcm9jZXNzKHNlbGYsIHJ1bGUsIGZ1bmMpOgotICAgICAgICByZWJpbmQgPSBsYW1iZGEgZnVuYywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYXJncywgZnVuYz1mdW5jLCBzZWxmPXNlbGY6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3VuZE1hdGNoKGFyZ3MsIGZ1bmMpCi0gICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICByaHNsaXN0ID0gbGlzdChyaHMpCi0gICAgICAgIHJoc2xpc3QucmV2ZXJzZSgpCi0KLSAgICAgICAgcmV0dXJuIChsaHMsIHR1cGxlKHJoc2xpc3QpKSwgcmViaW5kKGZ1bmMpCi0KLSAgICBkZWYgZm91bmRNYXRjaChzZWxmLCBhcmdzLCBmdW5jKToKLSAgICAgICAgZnVuYyhhcmdzWy0xXSkKLSAgICAgICAgcmV0dXJuIGFyZ3NbLTFdCi0KLSAgICBkZWYgbWF0Y2hfcihzZWxmLCBub2RlKToKLSAgICAgICAgc2VsZi5pbnB1dC5pbnNlcnQoMCwgbm9kZSkKLSAgICAgICAgY2hpbGRyZW4gPSAwCi0KLSAgICAgICAgZm9yIGNoaWxkIGluIG5vZGU6Ci0gICAgICAgICAgICBpZiBjaGlsZHJlbiA9PSAwOgotICAgICAgICAgICAgICAgIHNlbGYuaW5wdXQuaW5zZXJ0KDAsICcoJykKLSAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gKyAxCi0gICAgICAgICAgICBzZWxmLm1hdGNoX3IoY2hpbGQpCi0KLSAgICAgICAgaWYgY2hpbGRyZW4gPiAwOgotICAgICAgICAgICAgc2VsZi5pbnB1dC5pbnNlcnQoMCwgJyknKQotCi0gICAgZGVmIG1hdGNoKHNlbGYsIGFzdD1Ob25lKToKLSAgICAgICAgaWYgYXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICBhc3QgPSBzZWxmLmFzdAotICAgICAgICBzZWxmLmlucHV0ID0gW10KLQotICAgICAgICBzZWxmLm1hdGNoX3IoYXN0KQotICAgICAgICBzZWxmLnBhcnNlKHNlbGYuaW5wdXQpCi0KLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBsaXN0KToKLSAgICAgICAgIwotICAgICAgICAjICBSZXNvbHZlIGFtYmlndWl0eSBpbiBmYXZvciBvZiB0aGUgbG9uZ2VzdCBSSFMuCi0gICAgICAgICMKLSAgICAgICAgcmV0dXJuIGxpc3RbLTFdCi0KLWRlZiBfZHVtcCh0b2tlbnMsIHNldHMsIHN0YXRlcyk6Ci0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNldHMpKToKLSAgICAgICAgb3V0cHV0KCdzZXQgJWQnICUgaSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2V0c1tpXToKLSAgICAgICAgICAgIG91dHB1dCgnXHQnLCBpdGVtKQotICAgICAgICAgICAgZm9yIChsaHMsIHJocyksIHBvcyBpbiBzdGF0ZXNbaXRlbVswXV0uaXRlbXM6Ci0gICAgICAgICAgICAgICAgb3V0cHV0KCdcdFx0JywgbGhzLCAnOjo9JywgZW5kPScnKQotICAgICAgICAgICAgICAgIG91dHB1dCgnICcuam9pbihyaHNbOnBvc10pLCBlbmQ9JycpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCcuJywgZW5kPScnKQotICAgICAgICAgICAgICAgIG91dHB1dCgnICcuam9pbihyaHNbcG9zOl0pKQotICAgICAgICBpZiBpIDwgbGVuKHRva2Vucyk6Ci0gICAgICAgICAgICBvdXRwdXQoKQotICAgICAgICAgICAgb3V0cHV0KCd0b2tlbiAlcycgJSBzdHIodG9rZW5zW2ldKSkKLSAgICAgICAgICAgIG91dHB1dCgpCmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmMgYi9QYXJzZXIvdG9rZW5pemVyLmMKaW5kZXggNWUwNDFlYS4uZDQ0NzZhZSAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5jCisrKyBiL1BhcnNlci90b2tlbml6ZXIuYwpAQCAtOTgsMTAgKzk4LDEzIEBACiAgICAgIkRPVUJMRVNMQVNIIiwKICAgICAiRE9VQkxFU0xBU0hFUVVBTCIsCiAgICAgIkFUIiwKKyAgICAiQVRFUVVBTCIsCiAgICAgIlJBUlJPVyIsCiAgICAgIkVMTElQU0lTIiwKICAgICAvKiBUaGlzIHRhYmxlIG11c3QgbWF0Y2ggdGhlICNkZWZpbmVzIGluIHRva2VuLmghICovCiAgICAgIk9QIiwKKyAgICAiQVdBSVQiLAorICAgICJBU1lOQyIsCiAgICAgIjxFUlJPUlRPS0VOPiIsCiAgICAgIjxOX1RPS0VOUz4iCiB9OwpAQCAtMTIzLDYgKzEyNiwxMSBAQAogICAgIHRvay0+dGFic2l6ZSA9IFRBQlNJWkU7CiAgICAgdG9rLT5pbmRlbnQgPSAwOwogICAgIHRvay0+aW5kc3RhY2tbMF0gPSAwOworCisgICAgdG9rLT5kZWYgPSAwOworICAgIHRvay0+ZGVmc3RhY2tbMF0gPSAwOworICAgIHRvay0+ZGVmdHlwZXN0YWNrWzBdID0gMDsKKwogICAgIHRvay0+YXRib2wgPSAxOwogICAgIHRvay0+cGVuZGluID0gMDsKICAgICB0b2stPnByb21wdCA9IHRvay0+bmV4dHByb21wdCA9IE5VTEw7CkBAIC0xMTMxLDcgKzExMzksNyBAQAogICAgIGNhc2UgJ30nOiAgICAgICAgICAgcmV0dXJuIFJCUkFDRTsKICAgICBjYXNlICdeJzogICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYOwogICAgIGNhc2UgJ34nOiAgICAgICAgICAgcmV0dXJuIFRJTERFOwotICAgIGNhc2UgJ0AnOiAgICAgICByZXR1cm4gQVQ7CisgICAgY2FzZSAnQCc6ICAgICAgICAgICByZXR1cm4gQVQ7CiAgICAgZGVmYXVsdDogICAgICAgICAgICByZXR1cm4gT1A7CiAgICAgfQogfQpAQCAtMTIwNyw2ICsxMjE1LDExIEBACiAgICAgICAgIGNhc2UgJz0nOiAgICAgICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYRVFVQUw7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnQCc6CisgICAgICAgIHN3aXRjaCAoYzIpIHsKKyAgICAgICAgY2FzZSAnPSc6ICAgICAgICAgICAgICAgcmV0dXJuIEFURVFVQUw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBPUDsKIH0KQEAgLTEzMjksNiArMTM0MiwxMSBAQAogICAgIGludCBjOwogICAgIGludCBibGFua2xpbmUsIG5vbmFzY2lpOwogCisgICAgaW50IHRva19sZW47CisgICAgc3RydWN0IHRva19zdGF0ZSBhaGVhZF90b2s7CisgICAgY2hhciAqYWhlYWRfdG9rX3N0YXJ0ID0gTlVMTCwgKmFoZWFkX3RvcF9lbmQgPSBOVUxMOworICAgIGludCBhaGVhZF90b2tfa2luZDsKKwogICAgICpwX3N0YXJ0ID0gKnBfZW5kID0gTlVMTDsKICAgbmV4dGxpbmU6CiAgICAgdG9rLT5zdGFydCA9IE5VTEw7CkBAIC0xNDE2LDYgKzE0MzQsMTEgQEAKICAgICBpZiAodG9rLT5wZW5kaW4gIT0gMCkgewogICAgICAgICBpZiAodG9rLT5wZW5kaW4gPCAwKSB7CiAgICAgICAgICAgICB0b2stPnBlbmRpbisrOworCisgICAgICAgICAgICB3aGlsZSAodG9rLT5kZWYgJiYgdG9rLT5kZWZzdGFja1t0b2stPmRlZl0gPj0gdG9rLT5pbmRlbnQpIHsKKyAgICAgICAgICAgICAgICB0b2stPmRlZi0tOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByZXR1cm4gREVERU5UOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQ3NSw2ICsxNDk4LDY2IEBACiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKKworICAgICAgICB0b2tfbGVuID0gdG9rLT5jdXIgLSB0b2stPnN0YXJ0OworICAgICAgICBpZiAodG9rX2xlbiA9PSAzICYmIG1lbWNtcCh0b2stPnN0YXJ0LCAiZGVmIiwgMykgPT0gMCkgeworICAgICAgICAgICAgaWYgKHRvay0+ZGVmICYmIHRvay0+ZGVmdHlwZXN0YWNrW3Rvay0+ZGVmXSA9PSAzKSB7CisgICAgICAgICAgICAgICAgdG9rLT5kZWZ0eXBlc3RhY2tbdG9rLT5kZWZdID0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHRvay0+ZGVmc3RhY2tbdG9rLT5kZWZdIDwgdG9rLT5pbmRlbnQpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSBhZHZhbmNlIGRlZnMgc3RhY2sgb25seSB3aGVuIHdlIHNlZSAiZGVmIiAqYW5kKgorICAgICAgICAgICAgICAgICAgIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB3YXMgaW5jcmVhc2VkIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgIHByZXZpb3VzICJkZWYiLiAqLworCisgICAgICAgICAgICAgICAgaWYgKHRvay0+ZGVmICsgMSA+PSBNQVhJTkRFTlQpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT09ERUVQOworICAgICAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0b2stPmRlZisrOworICAgICAgICAgICAgICAgIHRvay0+ZGVmc3RhY2tbdG9rLT5kZWZdID0gdG9rLT5pbmRlbnQ7CisgICAgICAgICAgICAgICAgdG9rLT5kZWZ0eXBlc3RhY2tbdG9rLT5kZWZdID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0b2tfbGVuID09IDUpIHsKKyAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgeworICAgICAgICAgICAgICAgIG1lbWNweSgmYWhlYWRfdG9rLCB0b2ssIHNpemVvZihhaGVhZF90b2spKTsKKworICAgICAgICAgICAgICAgIGFoZWFkX3Rva19raW5kID0gdG9rX2dldCgmYWhlYWRfdG9rLCAmYWhlYWRfdG9rX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWhlYWRfdG9wX2VuZCk7CisKKyAgICAgICAgICAgICAgICBpZiAoYWhlYWRfdG9rX2tpbmQgPT0gTkFNRSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgYWhlYWRfdG9rLmN1ciAtIGFoZWFkX3Rvay5zdGFydCA9PSAzICYmCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jbXAoYWhlYWRfdG9rLnN0YXJ0LCAiZGVmIiwgMykgPT0gMCkgeworCisgICAgICAgICAgICAgICAgICAgIGlmICh0b2stPmRlZiArIDEgPj0gTUFYSU5ERU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPT0RFRVA7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0b2stPmRlZisrOworICAgICAgICAgICAgICAgICAgICB0b2stPmRlZnN0YWNrW3Rvay0+ZGVmXSA9IHRvay0+aW5kZW50OworICAgICAgICAgICAgICAgICAgICB0b2stPmRlZnR5cGVzdGFja1t0b2stPmRlZl0gPSAzOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBU1lOQzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rLT5kZWYgJiYgdG9rLT5kZWZ0eXBlc3RhY2tbdG9rLT5kZWZdID09IDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0b2stPmRlZnN0YWNrW3Rvay0+ZGVmXSA8IHRvay0+aW5kZW50KSB7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhd2FpdCIsIDUpID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHRvay0+ZGVmICYmIHRvay0+ZGVmdHlwZXN0YWNrW3Rvay0+ZGVmXSA9PSAyCisgICAgICAgICAgICAgICAgICAgICAgICAmJiB0b2stPmRlZnN0YWNrW3Rvay0+ZGVmXSA8IHRvay0+aW5kZW50KSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gQVdBSVQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gTkFNRTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuaCBiL1BhcnNlci90b2tlbml6ZXIuaAppbmRleCAxY2U2ZWViLi4zYmNkYWQ2IDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmgKKysrIGIvUGFyc2VyL3Rva2VuaXplci5oCkBAIC02NSw2ICs2NSwxMyBAQAogICAgIGNvbnN0IGNoYXIqIGVuYzsgICAgICAgIC8qIEVuY29kaW5nIGZvciB0aGUgY3VycmVudCBzdHIuICovCiAgICAgY29uc3QgY2hhciogc3RyOwogICAgIGNvbnN0IGNoYXIqIGlucHV0OyAvKiBUb2tlbml6ZXIncyBuZXdsaW5lIHRyYW5zbGF0ZWQgY29weSBvZiB0aGUgc3RyaW5nLiAqLworCisgICAgaW50IGRlZnN0YWNrW01BWElOREVOVF07ICAgICAvKiBzdGFjayBpZiBmdW5jcyAmIGluZGVudHMgd2hlcmUgdGhleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VyZSBkZWZpbmVkICovCisgICAgaW50IGRlZnR5cGVzdGFja1tNQVhJTkRFTlRdOyAvKiBzdGFjayBvZiBmdW5jIHR5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCBub3QgZnVuYzsgMTogImRlZiBuYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOiAiYXN5bmMgZGVmIG5hbWUiKSAqLworICAgIGludCBkZWY7ICAgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIHN0YWNrIG9mIGZ1bmMgdHlwZXMgKi8KIH07CiAKIGV4dGVybiBzdHJ1Y3QgdG9rX3N0YXRlICpQeVRva2VuaXplcl9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKiwgaW50KTsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL1JFQURNRSBiL1Byb2dyYW1zL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQ1NzhiCi0tLSAvZGV2L251bGwKKysrIGIvUHJvZ3JhbXMvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1NvdXJjZSBmaWxlcyBmb3IgYmluYXJ5IGV4ZWN1dGFibGVzIChhcyBvcHBvc2VkIHRvIHNoYXJlZCBtb2R1bGVzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKcmVuYW1lIHRvIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggNTdiMWFjMC4uYWVjYjEyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisrKyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTEyLDEyICsxMiwxMSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLQogLyogVG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGZyb3plbi5vLCB3ZSBjcmVhdGUgb3VyIG93biBzdHJ1Y3R1cmUKICAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCiAgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCiAKLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgezAsIDAsIDB9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yOCwxOCArMjcsMTkgQEAKIGNvbnN0IHN0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovIjsKK2NvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7CiAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGg7CisgICAgY2hhciAqaW5wYXRoLCAqb3V0cGF0aCwgKmNvZGVfbmFtZTsKICAgICBGSUxFICppbmZpbGUgPSBOVUxMLCAqb3V0ZmlsZSA9IE5VTEw7Ci0gICAgc3RydWN0IHN0YXQgc3Q7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CiAgICAgc2l6ZV90IHRleHRfc2l6ZSwgZGF0YV9zaXplLCBuOwogICAgIGNoYXIgKnRleHQgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqbWFyc2hhbGxlZCA9IE5VTEw7CisgICAgaW50IGlzX2Jvb3RzdHJhcCA9IDE7CiAKICAgICBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzID0gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CiAKQEAgLTU0LDExICs1NCwxMSBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHJlYWRpbmdcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGlmIChmc3RhdChmaWxlbm8oaW5maWxlKSwgJnN0KSkgeworICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oaW5maWxlKSwgJnN0YXR1cykpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgdGV4dF9zaXplID0gc3Quc3Rfc2l6ZTsKKyAgICB0ZXh0X3NpemUgPSBzdGF0dXMuc3Rfc2l6ZTsKICAgICB0ZXh0ID0gKGNoYXIgKikgbWFsbG9jKHRleHRfc2l6ZSArIDEpOwogICAgIGlmICh0ZXh0ID09IE5VTEwpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCAobG9uZykgdGV4dF9zaXplKTsKQEAgLTgyLDggKzgyLDE0IEBACiAgICAgLyogRG9uJ3QgaW5zdGFsbCBpbXBvcnRsaWIsIHNpbmNlIGl0IGNvdWxkIGV4ZWN1dGUgb3V0ZGF0ZWQgYnl0ZWNvZGUuICovCiAgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKDEsIDApOwogCi0gICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmdFeEZsYWdzKHRleHQsICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOworICAgIGlmIChzdHJzdHIoaW5wYXRoLCAiX2V4dGVybmFsIikgIT0gTlVMTCkgeworICAgICAgICBpc19ib290c3RyYXAgPSAwOworICAgIH0KKworICAgIGNvZGVfbmFtZSA9IGlzX2Jvb3RzdHJhcCA/CisgICAgICAgICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIgOgorICAgICAgICAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iOworICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nRXhGbGFncyh0ZXh0LCBjb2RlX25hbWUsIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZnJlZSh0ZXh0KTsKQEAgLTEwNiw3ICsxMTIsMTEgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZnByaW50ZihvdXRmaWxlLCAiJXNcbiIsIGhlYWRlcik7Ci0gICAgZnByaW50ZihvdXRmaWxlLCAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBpZiAoaXNfYm9vdHN0cmFwKQorICAgICAgICBmcHJpbnRmKG91dGZpbGUsICJjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHtcbiIpOworICAgIGVsc2UKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLAorICAgICAgICAgICAgICAgICJjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWxbXSA9IHtcbiIpOwogICAgIGZvciAobiA9IDA7IG4gPCBkYXRhX3NpemU7IG4gKz0gMTYpIHsKICAgICAgICAgc2l6ZV90IGksIGVuZCA9IFB5X01JTihuICsgMTYsIGRhdGFfc2l6ZSk7CiAgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiAgICAiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RlbWJlZC5jIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIE1vZHVsZXMvX3Rlc3RlbWJlZC5jCnJlbmFtZSB0byBQcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYTIxZDI1MS4uMzlmZjA5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKysrIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCkBAIC0xMDksMTEgKzEwOSwxMSBAQAogICAgIHByaW50ZigiLS0tIFVzZSBkZWZhdWx0cyAtLS1cbiIpOwogICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgTlVMTCk7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVycm9ycyBvbmx5IC0tLVxuIik7Ci0gICAgY2hlY2tfc3RkaW9fZGV0YWlscyhOVUxMLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgY2hlY2tfc3RkaW9fZGV0YWlscyhOVUxMLCAiaWdub3JlIik7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVuY29kaW5nIG9ubHkgLS0tXG4iKTsKICAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgTlVMTCk7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVuY29kaW5nIGFuZCBlcnJvcnMgLS0tXG4iKTsKLSAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoImxhdGluLTEiLCAicmVwbGFjZSIpOwogCiAgICAgLyogQ2hlY2sgY2FsbGluZyBhZnRlciBpbml0aWFsaXphdGlvbiBmYWlscyAqLwogICAgIFB5X0luaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHl0aG9uLmMgYi9Qcm9ncmFtcy9weXRob24uYwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBNb2R1bGVzL3B5dGhvbi5jCnJlbmFtZSB0byBQcm9ncmFtcy9weXRob24uYwppbmRleCA5ODExYzAxLi4yZTVlNGUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC01Miw3ICs1Miw3IEBACiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKKyAgICAgICAgYXJndl9jb3B5W2ldID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbaV0sIE5VTEwpOwogICAgICAgICBpZiAoIWFyZ3ZfY29weVtpXSkgewogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShvbGRsb2MpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICIKZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IDQ0ZmRhZmMuLjhhMmRjN2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtNDUsMTcgKzQ1LDIxIEBACiAgICAgImRlY29yYXRvcl9saXN0IiwKICAgICAicmV0dXJucyIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQXN5bmNGdW5jdGlvbkRlZl90eXBlOworc3RhdGljIGNoYXIgKkFzeW5jRnVuY3Rpb25EZWZfZmllbGRzW109eworICAgICJuYW1lIiwKKyAgICAiYXJncyIsCisgICAgImJvZHkiLAorICAgICJkZWNvcmF0b3JfbGlzdCIsCisgICAgInJldHVybnMiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNsYXNzRGVmX3R5cGU7CiBfUHlfSURFTlRJRklFUihiYXNlcyk7CiBfUHlfSURFTlRJRklFUihrZXl3b3Jkcyk7Ci1fUHlfSURFTlRJRklFUihzdGFyYXJncyk7Ci1fUHlfSURFTlRJRklFUihrd2FyZ3MpOwogc3RhdGljIGNoYXIgKkNsYXNzRGVmX2ZpZWxkc1tdPXsKICAgICAibmFtZSIsCiAgICAgImJhc2VzIiwKICAgICAia2V5d29yZHMiLAotICAgICJzdGFyYXJncyIsCi0gICAgImt3YXJncyIsCiAgICAgImJvZHkiLAogICAgICJkZWNvcmF0b3JfbGlzdCIsCiB9OwpAQCAtOTEsNiArOTUsMTMgQEAKICAgICAiYm9keSIsCiAgICAgIm9yZWxzZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQXN5bmNGb3JfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY0Zvcl9maWVsZHNbXT17CisgICAgInRhcmdldCIsCisgICAgIml0ZXIiLAorICAgICJib2R5IiwKKyAgICAib3JlbHNlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpXaGlsZV90eXBlOwogX1B5X0lERU5USUZJRVIodGVzdCk7CiBzdGF0aWMgY2hhciAqV2hpbGVfZmllbGRzW109ewpAQCAtMTEwLDYgKzEyMSwxMSBAQAogICAgICJpdGVtcyIsCiAgICAgImJvZHkiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jV2l0aF90eXBlOworc3RhdGljIGNoYXIgKkFzeW5jV2l0aF9maWVsZHNbXT17CisgICAgIml0ZW1zIiwKKyAgICAiYm9keSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmFpc2VfdHlwZTsKIF9QeV9JREVOVElGSUVSKGV4Yyk7CiBfUHlfSURFTlRJRklFUihjYXVzZSk7CkBAIC0yMzIsNiArMjQ4LDEwIEBACiAgICAgImVsdCIsCiAgICAgImdlbmVyYXRvcnMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkF3YWl0X3R5cGU7CitzdGF0aWMgY2hhciAqQXdhaXRfZmllbGRzW109eworICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqWWllbGRfdHlwZTsKIHN0YXRpYyBjaGFyICpZaWVsZF9maWVsZHNbXT17CiAgICAgInZhbHVlIiwKQEAgLTI1NCw4ICsyNzQsNiBAQAogICAgICJmdW5jIiwKICAgICAiYXJncyIsCiAgICAgImtleXdvcmRzIiwKLSAgICAic3RhcmFyZ3MiLAotICAgICJrd2FyZ3MiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk51bV90eXBlOwogX1B5X0lERU5USUZJRVIobik7CkBAIC0zNDksMTMgKzM2NywxNCBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqT3JfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKm9wZXJhdG9yX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QgKkFkZF9zaW5nbGV0b24sICpTdWJfc2luZ2xldG9uLCAqTXVsdF9zaW5nbGV0b24sCi0qRGl2X3NpbmdsZXRvbiwgKk1vZF9zaW5nbGV0b24sICpQb3dfc2luZ2xldG9uLCAqTFNoaWZ0X3NpbmdsZXRvbiwKLSpSU2hpZnRfc2luZ2xldG9uLCAqQml0T3Jfc2luZ2xldG9uLCAqQml0WG9yX3NpbmdsZXRvbiwgKkJpdEFuZF9zaW5nbGV0b24sCi0qRmxvb3JEaXZfc2luZ2xldG9uOworKk1hdE11bHRfc2luZ2xldG9uLCAqRGl2X3NpbmdsZXRvbiwgKk1vZF9zaW5nbGV0b24sICpQb3dfc2luZ2xldG9uLAorKkxTaGlmdF9zaW5nbGV0b24sICpSU2hpZnRfc2luZ2xldG9uLCAqQml0T3Jfc2luZ2xldG9uLCAqQml0WG9yX3NpbmdsZXRvbiwKKypCaXRBbmRfc2luZ2xldG9uLCAqRmxvb3JEaXZfc2luZ2xldG9uOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX29wZXJhdG9yKG9wZXJhdG9yX3R5KTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkFkZF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqU3ViX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNdWx0X3R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpNYXRNdWx0X3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaXZfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk1vZF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqUG93X3R5cGU7CkBAIC04MTEsNyArODMwLDEwIEBACiAgICAgRnVuY3Rpb25EZWZfdHlwZSA9IG1ha2VfdHlwZSgiRnVuY3Rpb25EZWYiLCBzdG10X3R5cGUsIEZ1bmN0aW9uRGVmX2ZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUpOwogICAgIGlmICghRnVuY3Rpb25EZWZfdHlwZSkgcmV0dXJuIDA7Ci0gICAgQ2xhc3NEZWZfdHlwZSA9IG1ha2VfdHlwZSgiQ2xhc3NEZWYiLCBzdG10X3R5cGUsIENsYXNzRGVmX2ZpZWxkcywgNyk7CisgICAgQXN5bmNGdW5jdGlvbkRlZl90eXBlID0gbWFrZV90eXBlKCJBc3luY0Z1bmN0aW9uRGVmIiwgc3RtdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3luY0Z1bmN0aW9uRGVmX2ZpZWxkcywgNSk7CisgICAgaWYgKCFBc3luY0Z1bmN0aW9uRGVmX3R5cGUpIHJldHVybiAwOworICAgIENsYXNzRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkNsYXNzRGVmIiwgc3RtdF90eXBlLCBDbGFzc0RlZl9maWVsZHMsIDUpOwogICAgIGlmICghQ2xhc3NEZWZfdHlwZSkgcmV0dXJuIDA7CiAgICAgUmV0dXJuX3R5cGUgPSBtYWtlX3R5cGUoIlJldHVybiIsIHN0bXRfdHlwZSwgUmV0dXJuX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFSZXR1cm5fdHlwZSkgcmV0dXJuIDA7CkBAIC04MjMsMTIgKzg0NSwxNiBAQAogICAgIGlmICghQXVnQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEZvcl90eXBlID0gbWFrZV90eXBlKCJGb3IiLCBzdG10X3R5cGUsIEZvcl9maWVsZHMsIDQpOwogICAgIGlmICghRm9yX3R5cGUpIHJldHVybiAwOworICAgIEFzeW5jRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jRm9yIiwgc3RtdF90eXBlLCBBc3luY0Zvcl9maWVsZHMsIDQpOworICAgIGlmICghQXN5bmNGb3JfdHlwZSkgcmV0dXJuIDA7CiAgICAgV2hpbGVfdHlwZSA9IG1ha2VfdHlwZSgiV2hpbGUiLCBzdG10X3R5cGUsIFdoaWxlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFXaGlsZV90eXBlKSByZXR1cm4gMDsKICAgICBJZl90eXBlID0gbWFrZV90eXBlKCJJZiIsIHN0bXRfdHlwZSwgSWZfZmllbGRzLCAzKTsKICAgICBpZiAoIUlmX3R5cGUpIHJldHVybiAwOwogICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDIpOwogICAgIGlmICghV2l0aF90eXBlKSByZXR1cm4gMDsKKyAgICBBc3luY1dpdGhfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNXaXRoIiwgc3RtdF90eXBlLCBBc3luY1dpdGhfZmllbGRzLCAyKTsKKyAgICBpZiAoIUFzeW5jV2l0aF90eXBlKSByZXR1cm4gMDsKICAgICBSYWlzZV90eXBlID0gbWFrZV90eXBlKCJSYWlzZSIsIHN0bXRfdHlwZSwgUmFpc2VfZmllbGRzLCAyKTsKICAgICBpZiAoIVJhaXNlX3R5cGUpIHJldHVybiAwOwogICAgIFRyeV90eXBlID0gbWFrZV90eXBlKCJUcnkiLCBzdG10X3R5cGUsIFRyeV9maWVsZHMsIDQpOwpAQCAtODc3LDEzICs5MDMsMTUgQEAKICAgICBHZW5lcmF0b3JFeHBfdHlwZSA9IG1ha2VfdHlwZSgiR2VuZXJhdG9yRXhwIiwgZXhwcl90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckV4cF9maWVsZHMsIDIpOwogICAgIGlmICghR2VuZXJhdG9yRXhwX3R5cGUpIHJldHVybiAwOworICAgIEF3YWl0X3R5cGUgPSBtYWtlX3R5cGUoIkF3YWl0IiwgZXhwcl90eXBlLCBBd2FpdF9maWVsZHMsIDEpOworICAgIGlmICghQXdhaXRfdHlwZSkgcmV0dXJuIDA7CiAgICAgWWllbGRfdHlwZSA9IG1ha2VfdHlwZSgiWWllbGQiLCBleHByX3R5cGUsIFlpZWxkX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFZaWVsZF90eXBlKSByZXR1cm4gMDsKICAgICBZaWVsZEZyb21fdHlwZSA9IG1ha2VfdHlwZSgiWWllbGRGcm9tIiwgZXhwcl90eXBlLCBZaWVsZEZyb21fZmllbGRzLCAxKTsKICAgICBpZiAoIVlpZWxkRnJvbV90eXBlKSByZXR1cm4gMDsKICAgICBDb21wYXJlX3R5cGUgPSBtYWtlX3R5cGUoIkNvbXBhcmUiLCBleHByX3R5cGUsIENvbXBhcmVfZmllbGRzLCAzKTsKICAgICBpZiAoIUNvbXBhcmVfdHlwZSkgcmV0dXJuIDA7Ci0gICAgQ2FsbF90eXBlID0gbWFrZV90eXBlKCJDYWxsIiwgZXhwcl90eXBlLCBDYWxsX2ZpZWxkcywgNSk7CisgICAgQ2FsbF90eXBlID0gbWFrZV90eXBlKCJDYWxsIiwgZXhwcl90eXBlLCBDYWxsX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFDYWxsX3R5cGUpIHJldHVybiAwOwogICAgIE51bV90eXBlID0gbWFrZV90eXBlKCJOdW0iLCBleHByX3R5cGUsIE51bV9maWVsZHMsIDEpOwogICAgIGlmICghTnVtX3R5cGUpIHJldHVybiAwOwpAQCAtOTcwLDYgKzk5OCwxMCBAQAogICAgIGlmICghTXVsdF90eXBlKSByZXR1cm4gMDsKICAgICBNdWx0X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE11bHRfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFNdWx0X3NpbmdsZXRvbikgcmV0dXJuIDA7CisgICAgTWF0TXVsdF90eXBlID0gbWFrZV90eXBlKCJNYXRNdWx0Iiwgb3BlcmF0b3JfdHlwZSwgTlVMTCwgMCk7CisgICAgaWYgKCFNYXRNdWx0X3R5cGUpIHJldHVybiAwOworICAgIE1hdE11bHRfc2luZ2xldG9uID0gUHlUeXBlX0dlbmVyaWNOZXcoTWF0TXVsdF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoIU1hdE11bHRfc2luZ2xldG9uKSByZXR1cm4gMDsKICAgICBEaXZfdHlwZSA9IG1ha2VfdHlwZSgiRGl2Iiwgb3BlcmF0b3JfdHlwZSwgTlVMTCwgMCk7CiAgICAgaWYgKCFEaXZfdHlwZSkgcmV0dXJuIDA7CiAgICAgRGl2X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KERpdl90eXBlLCBOVUxMLCBOVUxMKTsKQEAgLTEyMDIsOSArMTIzNCwzOSBAQAogfQogCiBzdG10X3R5Ci1DbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsIGV4cHJfdHkKLSAgICAgICAgIHN0YXJhcmdzLCBleHByX3R5IGt3YXJncywgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LAotICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQXN5bmNGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50c190eSBhcmdzLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxCisgICAgICAgICAgICAgICAgICogZGVjb3JhdG9yX2xpc3QsIGV4cHJfdHkgcmV0dXJucywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgbmFtZSBpcyByZXF1aXJlZCBmb3IgQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFhcmdzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFyZ3MgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNGdW5jdGlvbkRlZl9raW5kOworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5uYW1lID0gbmFtZTsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyA9IGFyZ3M7CisgICAgcC0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHkgPSBib2R5OworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCA9IGRlY29yYXRvcl9saXN0OworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zID0gcmV0dXJuczsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKK0NsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKiBiYXNlcywgYXNkbF9zZXEgKiBrZXl3b3JkcywgYXNkbF9zZXEgKgorICAgICAgICAgYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICphcmVuYSkKIHsKICAgICBzdG10X3R5IHA7CiAgICAgaWYgKCFuYW1lKSB7CkBAIC0xMjE5LDggKzEyODEsNiBAQAogICAgIHAtPnYuQ2xhc3NEZWYubmFtZSA9IG5hbWU7CiAgICAgcC0+di5DbGFzc0RlZi5iYXNlcyA9IGJhc2VzOwogICAgIHAtPnYuQ2xhc3NEZWYua2V5d29yZHMgPSBrZXl3b3JkczsKLSAgICBwLT52LkNsYXNzRGVmLnN0YXJhcmdzID0gc3RhcmFyZ3M7Ci0gICAgcC0+di5DbGFzc0RlZi5rd2FyZ3MgPSBrd2FyZ3M7CiAgICAgcC0+di5DbGFzc0RlZi5ib2R5ID0gYm9keTsKICAgICBwLT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0ID0gZGVjb3JhdG9yX2xpc3Q7CiAgICAgcC0+bGluZW5vID0gbGluZW5vOwpAQCAtMTMzOCw2ICsxMzk4LDM0IEBACiB9CiAKIHN0bXRfdHkKK0FzeW5jRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludAorICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHRhcmdldCBpcyByZXF1aXJlZCBmb3IgQXN5bmNGb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghaXRlcikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBpdGVyIGlzIHJlcXVpcmVkIGZvciBBc3luY0ZvciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBc3luY0Zvcl9raW5kOworICAgIHAtPnYuQXN5bmNGb3IudGFyZ2V0ID0gdGFyZ2V0OworICAgIHAtPnYuQXN5bmNGb3IuaXRlciA9IGl0ZXI7CisgICAgcC0+di5Bc3luY0Zvci5ib2R5ID0gYm9keTsKKyAgICBwLT52LkFzeW5jRm9yLm9yZWxzZSA9IG9yZWxzZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIFdoaWxlKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywgaW50CiAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTEzOTgsNiArMTQ4NiwyMiBAQAogfQogCiBzdG10X3R5CitBc3luY1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKKyAgICAgICAgICBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBc3luY1dpdGhfa2luZDsKKyAgICBwLT52LkFzeW5jV2l0aC5pdGVtcyA9IGl0ZW1zOworICAgIHAtPnYuQXN5bmNXaXRoLmJvZHkgPSBib2R5OworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworc3RtdF90eQogUmFpc2UoZXhwcl90eSBleGMsIGV4cHJfdHkgY2F1c2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBzdG10X3R5IHA7CkBAIC0xODI1LDYgKzE5MjksMjUgQEAKIH0KIAogZXhwcl90eQorQXdhaXQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBBd2FpdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBd2FpdF9raW5kOworICAgIHAtPnYuQXdhaXQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIFlpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CkBAIC0xODgwLDggKzIwMDMsOCBAQAogfQogCiBleHByX3R5Ci1DYWxsKGV4cHJfdHkgZnVuYywgYXNkbF9zZXEgKiBhcmdzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBleHByX3R5IHN0YXJhcmdzLAotICAgICBleHByX3R5IGt3YXJncywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgaW50IGxpbmVubywgaW50CisgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGV4cHJfdHkgcDsKICAgICBpZiAoIWZ1bmMpIHsKQEAgLTE4OTYsOCArMjAxOSw2IEBACiAgICAgcC0+di5DYWxsLmZ1bmMgPSBmdW5jOwogICAgIHAtPnYuQ2FsbC5hcmdzID0gYXJnczsKICAgICBwLT52LkNhbGwua2V5d29yZHMgPSBrZXl3b3JkczsKLSAgICBwLT52LkNhbGwuc3RhcmFyZ3MgPSBzdGFyYXJnczsKLSAgICBwLT52LkNhbGwua3dhcmdzID0ga3dhcmdzOwogICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKICAgICByZXR1cm4gcDsKQEAgLTIyNzEsMTEgKzIzOTIsNiBAQAoga2V5d29yZChpZGVudGlmaWVyIGFyZywgZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAga2V5d29yZF90eSBwOwotICAgIGlmICghYXJnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFyZyBpcyByZXF1aXJlZCBmb3Iga2V5d29yZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3Iga2V5d29yZCIpOwpAQCAtMjQxOSw2ICsyNTM1LDM2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFzeW5jRnVuY3Rpb25EZWZfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5Bc3luY0Z1bmN0aW9uRGVmLm5hbWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2FyZ3VtZW50cyhvLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leHByKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVjb3JhdG9yX2xpc3QsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JldHVybnMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KENsYXNzRGVmX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yNDM3LDE2ICsyNTgzLDYgQEAKICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYuc3RhcmFyZ3MpOwotICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYua3dhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCkBAIC0yNTMzLDYgKzI2NjksMzAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFzeW5jRm9yX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXN5bmNGb3IudGFyZ2V0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlciwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGb3IuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGb3Iub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFdoaWxlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yNTg1LDYgKzI3NDUsMjAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBc3luY1dpdGhfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY1dpdGguaXRlbXMsIGFzdDJvYmpfd2l0aGl0ZW0pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVtcywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNXaXRoLmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFJhaXNlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yODk4LDYgKzMwNzIsMTUgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEF3YWl0X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXdhaXQudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoWWllbGRfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTI5NTksMTYgKzMxNDIsNiBAQAogICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXdvcmRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwua3dhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoTnVtX3R5cGUsIE5VTEwsIE5VTEwpOwpAQCAtMzIzMiw2ICszNDA1LDkgQEAKICAgICAgICAgY2FzZSBNdWx0OgogICAgICAgICAgICAgUHlfSU5DUkVGKE11bHRfc2luZ2xldG9uKTsKICAgICAgICAgICAgIHJldHVybiBNdWx0X3NpbmdsZXRvbjsKKyAgICAgICAgY2FzZSBNYXRNdWx0OgorICAgICAgICAgICAgUHlfSU5DUkVGKE1hdE11bHRfc2luZ2xldG9uKTsKKyAgICAgICAgICAgIHJldHVybiBNYXRNdWx0X3NpbmdsZXRvbjsKICAgICAgICAgY2FzZSBEaXY6CiAgICAgICAgICAgICBQeV9JTkNSRUYoRGl2X3NpbmdsZXRvbik7CiAgICAgICAgICAgICByZXR1cm4gRGl2X3NpbmdsZXRvbjsKQEAgLTM4NTksNiArNDAzNSwxMDIgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXN5bmNGdW5jdGlvbkRlZl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgaWRlbnRpZmllciBuYW1lOworICAgICAgICBhcmd1bWVudHNfdHkgYXJnczsKKyAgICAgICAgYXNkbF9zZXEqIGJvZHk7CisgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKKyAgICAgICAgZXhwcl90eSByZXR1cm5zOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYXJndW1lbnRzKHRtcCwgJmFyZ3MsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0Z1bmN0aW9uRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBib2R5ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChkZWNvcmF0b3JfbGlzdCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChkZWNvcmF0b3JfbGlzdCwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9yZXR1cm5zKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmcmV0dXJucywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm5zID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXN5bmNGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCwgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUNsYXNzRGVmX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMzg2Nyw4ICs0MTM5LDYgQEAKICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICBhc2RsX3NlcSogYmFzZXM7CiAgICAgICAgIGFzZGxfc2VxKiBrZXl3b3JkczsKLSAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICBhc2RsX3NlcSogZGVjb3JhdG9yX2xpc3Q7CiAKQEAgLTM5MzEsMjYgKzQyMDEsNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2t3YXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKLSAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGt3YXJncyA9IE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtMzk5OSw4ICs0MjQ5LDggQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICAqb3V0ID0gQ2xhc3NEZWYobmFtZSwgYmFzZXMsIGtleXdvcmRzLCBzdGFyYXJncywga3dhcmdzLCBib2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAqb3V0ID0gQ2xhc3NEZWYobmFtZSwgYmFzZXMsIGtleXdvcmRzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDIzNyw2ICs0NDg3LDkwIEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgZXhwcl90eSBpdGVyOworICAgICAgICBhc2RsX3NlcSogYm9keTsKKyAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVyKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVyKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVyXCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0ZvciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgYm9keSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jRm9yIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIG9yZWxzZSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAob3JlbHNlID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFzeW5jRm9yKHRhcmdldCwgaXRlciwgYm9keSwgb3JlbHNlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopV2hpbGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC00NDQxLDYgKzQ3NzUsNjYgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXN5bmNXaXRoX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBhc2RsX3NlcSogaXRlbXM7CisgICAgICAgIGFzZGxfc2VxKiBib2R5OworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNXaXRoIGZpZWxkIFwiaXRlbXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgaXRlbXMgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgd2l0aGl0ZW1fdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF93aXRoaXRlbShQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVtc1wiIG1pc3NpbmcgZnJvbSBBc3luY1dpdGgiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jV2l0aCBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgYm9keSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBBc3luY1dpdGgiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBc3luY1dpdGgoaXRlbXMsIGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilSYWlzZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTUzNzUsNiArNTc2OSwyOCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBd2FpdF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEF3YWl0Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXdhaXQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilZaWVsZF90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTU0OTgsOCArNTkxNCw2IEBACiAgICAgICAgIGV4cHJfdHkgZnVuYzsKICAgICAgICAgYXNkbF9zZXEqIGFyZ3M7CiAgICAgICAgIGFzZGxfc2VxKiBrZXl3b3JkczsKLSAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAKICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9mdW5jKSkgewogICAgICAgICAgICAgaW50IHJlczsKQEAgLTU1NjAsMjggKzU5NzQsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3N0YXJhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7Ci0gICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfa3dhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICBQeV9DTEVBUih0bXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAga3dhcmdzID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAqb3V0ID0gQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsIGt3YXJncywgbGluZW5vLCBjb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CisgICAgICAgICpvdXQgPSBDYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTYxNzUsNiArNjU2OCwxNCBAQAogICAgICAgICAqb3V0ID0gTXVsdDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0ICopTWF0TXVsdF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgKm91dCA9IE1hdE11bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCAqKURpdl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTY3MjEsNyArNzEyMiw3IEBACiAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgeworICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9hcmcpKSB7CiAgICAgICAgIGludCByZXM7CiAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmcpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNjcyOSw4ICs3MTMwLDcgQEAKICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfQ0xFQVIodG1wKTsKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20ga2V5d29yZCIpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgYXJnID0gTlVMTDsKICAgICB9CiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgaW50IHJlczsKQEAgLTY4NDcsNiArNzI0Nyw4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJzdG10IiwgKFB5T2JqZWN0KilzdG10X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGdW5jdGlvbkRlZiIsIChQeU9iamVjdCopRnVuY3Rpb25EZWZfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRnVuY3Rpb25EZWYiLAorICAgICAgICAoUHlPYmplY3QqKUFzeW5jRnVuY3Rpb25EZWZfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNsYXNzRGVmIiwgKFB5T2JqZWN0KilDbGFzc0RlZl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUmV0dXJuIiwgKFB5T2JqZWN0KilSZXR1cm5fdHlwZSkgPCAwKSByZXR1cm4KQEAgLTY4NTgsMTAgKzcyNjAsMTQgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3IiLCAoUHlPYmplY3QqKUZvcl90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGb3IiLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJXaGlsZSIsIChQeU9iamVjdCopV2hpbGVfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklmIiwgKFB5T2JqZWN0KilJZl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiV2l0aCIsIChQeU9iamVjdCopV2l0aF90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNXaXRoIiwgKFB5T2JqZWN0KilBc3luY1dpdGhfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlJhaXNlIiwgKFB5T2JqZWN0KilSYWlzZV90eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5IiwgKFB5T2JqZWN0KilUcnlfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKQEAgLTY5MDIsNiArNzMwOCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiR2VuZXJhdG9yRXhwIiwgKFB5T2JqZWN0KilHZW5lcmF0b3JFeHBfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF3YWl0IiwgKFB5T2JqZWN0KilBd2FpdF90eXBlKSA8IDApIHJldHVybgorICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGQiLCAoUHlPYmplY3QqKVlpZWxkX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZEZyb20iLCAoUHlPYmplY3QqKVlpZWxkRnJvbV90eXBlKSA8IDApCkBAIC02OTU2LDYgKzczNjQsOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQWRkIiwgKFB5T2JqZWN0KilBZGRfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YiIsIChQeU9iamVjdCopU3ViX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNdWx0IiwgKFB5T2JqZWN0KilNdWx0X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNYXRNdWx0IiwgKFB5T2JqZWN0KilNYXRNdWx0X3R5cGUpIDwgMCkgcmV0dXJuCisgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJEaXYiLCAoUHlPYmplY3QqKURpdl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTW9kIiwgKFB5T2JqZWN0KilNb2RfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlBvdyIsIChQeU9iamVjdCopUG93X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9QeXRob24vUkVBRE1FIGIvUHl0aG9uL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTNiNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL1JFQURNRQpAQCAtMCwwICsxIEBACitNaXNjZWxsYW5lb3VzIHNvdXJjZSBmaWxlcyBmb3IgdGhlIG1haW4gUHl0aG9uIHNoYXJlZCBsaWJyYXJ5CmRpZmYgLS1naXQgYS9QeXRob24vX3dhcm5pbmdzLmMgYi9QeXRob24vX3dhcm5pbmdzLmMKaW5kZXggNmRmZjBhMi4uMjJmNjE3YSAxMDA2NDQKLS0tIGEvUHl0aG9uL193YXJuaW5ncy5jCisrKyBiL1B5dGhvbi9fd2FybmluZ3MuYwpAQCAtNTgwLDEzICs1ODAsMTIgQEAKICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKCpmaWxlbmFtZSk7CiAKICNkZWZpbmUgYXNjaWlfbG93ZXIoYykgKChjIDw9IDEyNykgPyBQeV9UT0xPV0VSKGMpIDogMCkKLSAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKTogKi8KKyAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgiLnB5YyIpOiAqLwogICAgICAgICBpZiAobGVuID49IDQgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi00KSA9PSAnLicgJiYKICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0zKSkgPT0gJ3AnICYmCiAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMikpID09ICd5JyAmJgotICAgICAgICAgICAgKGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ2MnIHx8Ci0gICAgICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnbycpKQorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnYycpCiAgICAgICAgIHsKICAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoKmZpbGVuYW1lLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqZmlsZW5hbWUpLTEpOwpAQCAtNjU0LDE2ICs2NTMsMTcgQEAKIAogICAgIGlmIChyYyA9PSAxKQogICAgICAgICBjYXRlZ29yeSA9IChQeU9iamVjdCopbWVzc2FnZS0+b2JfdHlwZTsKLSAgICBlbHNlIGlmIChjYXRlZ29yeSA9PSBOVUxMKQorICAgIGVsc2UgaWYgKGNhdGVnb3J5ID09IE5VTEwgfHwgY2F0ZWdvcnkgPT0gUHlfTm9uZSkKICAgICAgICAgY2F0ZWdvcnkgPSBQeUV4Y19Vc2VyV2FybmluZzsKIAogICAgIC8qIFZhbGlkYXRlIGNhdGVnb3J5LiAqLwogICAgIHJjID0gUHlPYmplY3RfSXNTdWJjbGFzcyhjYXRlZ29yeSwgUHlFeGNfV2FybmluZyk7Ci0gICAgaWYgKHJjID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmMgPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSBpcyBub3QgYSBzdWJjbGFzcyBvZiBXYXJuaW5nIik7CisgICAgLyogY2F0ZWdvcnkgaXMgbm90IGEgc3ViY2xhc3Mgb2YgUHlFeGNfV2FybmluZyBvcgorICAgICAgIFB5T2JqZWN0X0lzU3ViY2xhc3MgcmFpc2VkIGFuIGVycm9yICovCisgICAgaWYgKHJjID09IC0xIHx8IHJjID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShjYXRlZ29yeSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IDc0ZmE5NDEuLmRmMzg3YjIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtNSwyMSArNSwyMSBAQAogX1B5X2FzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfc2VxICpzZXEgPSBOVUxMOwotICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOworICAgIHNpemVfdCBuOwogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCi0gICAgaWYgKHNpemUgPCAwIHx8IHNpemUgPT0gSU5UX01JTiB8fAotICAgICAgICAoc2l6ZSAmJiAoKHNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgaWYgKHNpemUgPCAwIHx8CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwogICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQogICAgIG4gKz0gc2l6ZW9mKGFzZGxfc2VxKTsKIAogICAgIHNlcSA9IChhc2RsX3NlcSAqKVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBuKTsKQEAgLTM2LDIxICszNiwyMSBAQAogX1B5X2FzZGxfaW50X3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX2ludF9zZXEgKnNlcSA9IE5VTEw7Ci0gICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CisgICAgc2l6ZV90IG47CiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KLSAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA9PSBJTlRfTUlOIHx8Ci0gICAgICAgIChzaXplICYmICgoc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKKyAgICBpZiAoc2l6ZSA8IDAgfHwKKyAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KICAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KICAgICBuICs9IHNpemVvZihhc2RsX3NlcSk7CiAKICAgICBzZXEgPSAoYXNkbF9pbnRfc2VxICopUHlBcmVuYV9NYWxsb2MoYXJlbmEsIG4pOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IGQ1MGNiODAuLmJiMjg0MzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhcmdzLT5rd2FyZyAmJiBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiAKKyAgICBpZiAoYXJncy0+a3dhcmcgJiYgYXJncy0+a3dhcmctPmFubm90YXRpb24KICAgICAgICAgJiYgIXZhbGlkYXRlX2V4cHIoYXJncy0+a3dhcmctPmFubm90YXRpb24sIExvYWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjQsNiArMTY0LDggQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGNoZWNrX2N0eCA9IDA7CisgICAgICAgIC8qIHNldCBhY3R1YWxfY3R4IHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KKyAgICAgICAgYWN0dWFsX2N0eCA9IDA7CiAgICAgfQogICAgIGlmIChjaGVja19jdHggJiYgYWN0dWFsX2N0eCAhPSBjdHgpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJleHByZXNzaW9uIG11c3QgaGF2ZSAlcyBjb250ZXh0IGJ1dCBoYXMgJXMgaW5zdGVhZCIsCkBAIC0yMTcsNiArMjE5LDggQEAKICAgICAgICAgcmV0dXJuICFleHAtPnYuWWllbGQudmFsdWUgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGQudmFsdWUsIExvYWQpOwogICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZEZyb20udmFsdWUsIExvYWQpOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkF3YWl0LnZhbHVlLCBMb2FkKTsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXBhcmUgd2l0aCBubyBjb21wYXJhdG9ycyIpOwpAQCAtMjMzLDkgKzIzNyw3IEBACiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpICYmCi0gICAgICAgICAgICAoIWV4cC0+di5DYWxsLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuc3RhcmFyZ3MsIExvYWQpKSAmJgotICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5rd2FyZ3MsIExvYWQpKTsKKyAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTMyMCw5ICszMjIsNyBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkNsYXNzRGVmLmJvZHksICJDbGFzc0RlZiIpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmJhc2VzLCBMb2FkLCAwKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoc3RtdC0+di5DbGFzc0RlZi5rZXl3b3JkcykgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCi0gICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzLCBMb2FkKSkgJiYKLSAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLmt3YXJncywgTG9hZCkpOworICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCk7CiAgICAgY2FzZSBSZXR1cm5fa2luZDoKICAgICAgICAgcmV0dXJuICFzdG10LT52LlJldHVybi52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmV0dXJuLnZhbHVlLCBMb2FkKTsKICAgICBjYXNlIERlbGV0ZV9raW5kOgpAQCAtMzM4LDYgKzMzOCwxMSBAQAogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci5pdGVyLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LkZvci5ib2R5LCAiRm9yIikgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuRm9yLm9yZWxzZSk7CisgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkFzeW5jRm9yLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXN5bmNGb3IuaXRlciwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Bc3luY0Zvci5ib2R5LCAiQXN5bmNGb3IiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Bc3luY0Zvci5vcmVsc2UpOwogICAgIGNhc2UgV2hpbGVfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5XaGlsZS50ZXN0LCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LldoaWxlLmJvZHksICJXaGlsZSIpICYmCkBAIC0zNTYsNiArMzYxLDE2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaXRoLmJvZHksICJXaXRoIik7CisgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5Bc3luY1dpdGguaXRlbXMsICJpdGVtcyIsICJBc3luY1dpdGgiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuQXN5bmNXaXRoLml0ZW1zKTsgaSsrKSB7CisgICAgICAgICAgICB3aXRoaXRlbV90eSBpdGVtID0gYXNkbF9zZXFfR0VUKHN0bXQtPnYuQXN5bmNXaXRoLml0ZW1zLCBpKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihpdGVtLT5jb250ZXh0X2V4cHIsIExvYWQpIHx8CisgICAgICAgICAgICAgICAgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMgJiYgIXZhbGlkYXRlX2V4cHIoaXRlbS0+b3B0aW9uYWxfdmFycywgU3RvcmUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkFzeW5jV2l0aC5ib2R5LCAiQXN5bmNXaXRoIik7CiAgICAgY2FzZSBSYWlzZV9raW5kOgogICAgICAgICBpZiAoc3RtdC0+di5SYWlzZS5leGMpIHsKICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmFpc2UuZXhjLCBMb2FkKSAmJgpAQCAtNDA3LDYgKzQyMiwxMiBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuTm9ubG9jYWwubmFtZXMsICJuYW1lcyIsICJOb25sb2NhbCIpOwogICAgIGNhc2UgRXhwcl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkV4cHIudmFsdWUsIExvYWQpOworICAgIGNhc2UgQXN5bmNGdW5jdGlvbkRlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSwgIkFzeW5jRnVuY3Rpb25EZWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYXJndW1lbnRzKHN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnMsIExvYWQpKTsKICAgICBjYXNlIFBhc3Nfa2luZDoKICAgICBjYXNlIEJyZWFrX2tpbmQ6CiAgICAgY2FzZSBDb250aW51ZV9raW5kOgpAQCAtNDUxLDcgKzQ3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgZGlzYWxsb3dlZCBpbiBleHByZXNzaW9uIGxpc3QiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTUwNSw2ICs1MjYsOSBAQAogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl90ZXN0bGlzdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKik7CiBzdGF0aWMgc3RtdF90eSBhc3RfZm9yX2NsYXNzZGVmKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBhc2RsX3NlcSAqKTsKIAorc3RhdGljIHN0bXRfdHkgYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGludCk7CitzdGF0aWMgc3RtdF90eSBhc3RfZm9yX2Zvcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBpbnQpOworCiAvKiBOb3RlIGRpZmZlcmVudCBzaWduYXR1cmUgZm9yIGFzdF9mb3JfY2FsbCAqLwogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBleHByX3R5KTsKIApAQCAtODI1LDYgKzg0OSw4IEBACiAgICAgICAgICAgICByZXR1cm4gU3ViOwogICAgICAgICBjYXNlIFNUQVI6CiAgICAgICAgICAgICByZXR1cm4gTXVsdDsKKyAgICAgICAgY2FzZSBBVDoKKyAgICAgICAgICAgIHJldHVybiBNYXRNdWx0OwogICAgICAgICBjYXNlIFNMQVNIOgogICAgICAgICAgICAgcmV0dXJuIERpdjsKICAgICAgICAgY2FzZSBET1VCTEVTTEFTSDoKQEAgLTg0NCw3ICs4NzAsOCBAQAogfTsKIAogc3RhdGljIGludAotZm9yYmlkZGVuX25hbWUoc3RydWN0IGNvbXBpbGluZyAqYywgaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLCBpbnQgZnVsbF9jaGVja3MpCitmb3JiaWRkZW5fbmFtZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sCisgICAgICAgICAgICAgICBpbnQgZnVsbF9jaGVja3MpCiB7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhuYW1lKSk7CiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2RlYnVnX18iKSA9PSAwKSB7CkBAIC05NDAsNiArOTY3LDkgQEAKICAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJ5aWVsZCBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgICAgICBleHByX25hbWUgPSAiYXdhaXQgZXhwcmVzc2lvbiI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxpc3QgY29tcHJlaGVuc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzAsNiArMTA2MCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFBvdzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdDsKKyAgICAgICAgY2FzZSAnQCc6CisgICAgICAgICAgICByZXR1cm4gTWF0TXVsdDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQgYXVnYXNzaWduOiAlcyIsIFNUUihuKSk7CiAgICAgICAgICAgICByZXR1cm4gKG9wZXJhdG9yX3R5KTA7CkBAIC0xNDM5LDcgKzE0NzEsNyBAQAogICAgICAgICBuYW1lX2V4cHIgPSBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChOQ0gobikgPT0gNSkgeyAvKiBDYWxsIHdpdGggbm8gYXJndW1lbnRzICovCi0gICAgICAgIGQgPSBDYWxsKG5hbWVfZXhwciwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTElORU5PKG4pLAorICAgICAgICBkID0gQ2FsbChuYW1lX2V4cHIsIE5VTEwsIE5VTEwsIExJTkVOTyhuKSwKICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFkKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDc3LDcgKzE1MDksOCBAQAogfQogCiBzdGF0aWMgc3RtdF90eQotYXN0X2Zvcl9mdW5jZGVmKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxKQorYXN0X2Zvcl9mdW5jZGVmX2ltcGwoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwKKyAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgLyogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZSAqLwogICAgIGlkZW50aWZpZXIgbmFtZTsKQEAgLTE1MDYsMTQgKzE1MzksNjggQEAKICAgICBpZiAoIWJvZHkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIEZ1bmN0aW9uRGVmKG5hbWUsIGFyZ3MsIGJvZHksIGRlY29yYXRvcl9zZXEsIHJldHVybnMsIExJTkVOTyhuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIHJldHVybiBBc3luY0Z1bmN0aW9uRGVmKG5hbWUsIGFyZ3MsIGJvZHksIGRlY29yYXRvcl9zZXEsIHJldHVybnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3Jfc2VxLCByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KKworc3RhdGljIHN0bXRfdHkKK2FzdF9mb3JfYXN5bmNfZnVuY2RlZihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSkKK3sKKyAgICAvKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCisgICAgUkVRKG4sIGFzeW5jX2Z1bmNkZWYpOworICAgIFJFUShDSElMRChuLCAwKSwgQVNZTkMpOworICAgIFJFUShDSElMRChuLCAxKSwgZnVuY2RlZik7CisKKyAgICByZXR1cm4gYXN0X2Zvcl9mdW5jZGVmX2ltcGwoYywgQ0hJTEQobiwgMSksIGRlY29yYXRvcl9zZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyogaXNfYXN5bmMgKi8pOworfQorCitzdGF0aWMgc3RtdF90eQorYXN0X2Zvcl9mdW5jZGVmKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxKQoreworICAgIC8qIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUgKi8KKyAgICByZXR1cm4gYXN0X2Zvcl9mdW5jZGVmX2ltcGwoYywgbiwgZGVjb3JhdG9yX3NlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBpc19hc3luYyAqLyk7Cit9CisKKworc3RhdGljIHN0bXRfdHkKK2FzdF9mb3JfYXN5bmNfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCisgICAgUkVRKG4sIGFzeW5jX3N0bXQpOworICAgIFJFUShDSElMRChuLCAwKSwgQVNZTkMpOworCisgICAgc3dpdGNoIChUWVBFKENISUxEKG4sIDEpKSkgeworICAgICAgICBjYXNlIGZ1bmNkZWY6CisgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9mdW5jZGVmX2ltcGwoYywgQ0hJTEQobiwgMSksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvKiBpc19hc3luYyAqLyk7CisgICAgICAgIGNhc2Ugd2l0aF9zdG10OgorICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfd2l0aF9zdG10KGMsIENISUxEKG4sIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyogaXNfYXN5bmMgKi8pOworCisgICAgICAgIGNhc2UgZm9yX3N0bXQ6CisgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9mb3Jfc3RtdChjLCBDSElMRChuLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyogaXNfYXN5bmMgKi8pOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYXN5bmMgc3RhbWVudDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNUUihDSElMRChuLCAxKSkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogfQogCiBzdGF0aWMgc3RtdF90eQogYXN0X2Zvcl9kZWNvcmF0ZWQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICAvKiBkZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikgKi8KKyAgICAvKiBkZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZiB8IGFzeW5jX2Z1bmNkZWYpICovCiAgICAgc3RtdF90eSB0aGluZyA9IE5VTEw7CiAgICAgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEgPSBOVUxMOwogCkBAIC0xNTI0LDEyICsxNjExLDE1IEBACiAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGFzc2VydChUWVBFKENISUxEKG4sIDEpKSA9PSBmdW5jZGVmIHx8CisgICAgICAgICAgIFRZUEUoQ0hJTEQobiwgMSkpID09IGFzeW5jX2Z1bmNkZWYgfHwKICAgICAgICAgICAgVFlQRShDSElMRChuLCAxKSkgPT0gY2xhc3NkZWYpOwogCiAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGZ1bmNkZWYpIHsKICAgICAgIHRoaW5nID0gYXN0X2Zvcl9mdW5jZGVmKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxKTsKICAgICB9IGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGNsYXNzZGVmKSB7CiAgICAgICB0aGluZyA9IGFzdF9mb3JfY2xhc3NkZWYoYywgQ0hJTEQobiwgMSksIGRlY29yYXRvcl9zZXEpOworICAgIH0gZWxzZSBpZiAoVFlQRShDSElMRChuLCAxKSkgPT0gYXN5bmNfZnVuY2RlZikgeworICAgICAgdGhpbmcgPSBhc3RfZm9yX2FzeW5jX2Z1bmNkZWYoYywgQ0hJTEQobiwgMSksIGRlY29yYXRvcl9zZXEpOwogICAgIH0KICAgICAvKiB3ZSBjb3VudCB0aGUgZGVjb3JhdG9ycyBpbiB3aGVuIHRhbGtpbmcgYWJvdXQgdGhlIGNsYXNzJyBvcgogICAgICAqIGZ1bmN0aW9uJ3MgbGluZSBudW1iZXIgKi8KQEAgLTE3MjksMTYgKzE4MTksMjIgQEAKIHN0YXRpYyBleHByX3R5CiBhc3RfZm9yX2l0ZXJjb21wKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCB0eXBlKQogewotICAgIC8qIHRlc3RsaXN0X2NvbXA6IHRlc3QgKCBjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddICkKLSAgICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSB0ZXN0IFtjb21wX2Zvcl0gICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0ICovCisgICAgLyogdGVzdGxpc3RfY29tcDogKHRlc3R8c3Rhcl9leHByKQorICAgICAqICAgICAgICAgICAgICAgICggY29tcF9mb3IgfCAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXSApICovCiAgICAgZXhwcl90eSBlbHQ7CiAgICAgYXNkbF9zZXEgKmNvbXBzOworICAgIG5vZGUgKmNoOwogCiAgICAgYXNzZXJ0KE5DSChuKSA+IDEpOwogCi0gICAgZWx0ID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDApKTsKKyAgICBjaCA9IENISUxEKG4sIDApOworICAgIGVsdCA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CiAgICAgaWYgKCFlbHQpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBjaCwgIml0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGNvbXBzID0gYXN0X2Zvcl9jb21wcmVoZW5zaW9uKGMsIENISUxEKG4sIDEpKTsKICAgICBpZiAoIWNvbXBzKQpAQCAtMTc1NSwyMyArMTg1MSw1OSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyogRmlsbHMgaW4gdGhlIGtleSwgdmFsdWUgcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBkaWN0IGVsZW1lbnQuICBJbiBjYXNlCisgKiBvZiBhbiB1bnBhY2tpbmcsIGtleSBpcyBOVUxMLiAgKmkgaXMgYWR2YW5jZWQgYnkgdGhlIG51bWJlciBvZiBhc3QKKyAqIGVsZW1lbnRzLiAgSWZmIHN1Y2Nlc3NmdWwsIG5vbnplcm8gaXMgcmV0dXJuZWQuCisgKi8KK3N0YXRpYyBpbnQKK2FzdF9mb3JfZGljdGVsZW1lbnQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICppLAorICAgICAgICAgICAgICAgICAgICBleHByX3R5ICprZXksIGV4cHJfdHkgKnZhbHVlKQoreworICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKKyAgICBpZiAoVFlQRShDSElMRChuLCAqaSkpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgYXNzZXJ0KE5DSChuKSAtICppID49IDIpOworCisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgKmkgKyAxKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqa2V5ID0gTlVMTDsKKyAgICAgICAgKnZhbHVlID0gZXhwcmVzc2lvbjsKKworICAgICAgICAqaSArPSAyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KE5DSChuKSAtICppID49IDMpOworCisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgKmkpKTsKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICprZXkgPSBleHByZXNzaW9uOworCisgICAgICAgIFJFUShDSElMRChuLCAqaSArIDEpLCBDT0xPTik7CisKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAqaSArIDIpKTsKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICp2YWx1ZSA9IGV4cHJlc3Npb247CisKKyAgICAgICAgKmkgKz0gMzsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBleHByX3R5CiBhc3RfZm9yX2RpY3Rjb21wKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgZXhwcl90eSBrZXksIHZhbHVlOwogICAgIGFzZGxfc2VxICpjb21wczsKKyAgICBpbnQgaSA9IDA7CiAKLSAgICBhc3NlcnQoTkNIKG4pID4gMyk7Ci0gICAgUkVRKENISUxEKG4sIDEpLCBDT0xPTik7Ci0KLSAgICBrZXkgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMCkpOwotICAgIGlmICgha2V5KQorICAgIGlmICghYXN0X2Zvcl9kaWN0ZWxlbWVudChjLCBuLCAmaSwgJmtleSwgJnZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsdWUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMikpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChrZXkpOworICAgIGFzc2VydChOQ0gobikgLSBpID49IDEpOwogCi0gICAgY29tcHMgPSBhc3RfZm9yX2NvbXByZWhlbnNpb24oYywgQ0hJTEQobiwgMykpOworICAgIGNvbXBzID0gYXN0X2Zvcl9jb21wcmVoZW5zaW9uKGMsIENISUxEKG4sIGkpKTsKICAgICBpZiAoIWNvbXBzKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc3OSw2ICsxOTExLDM5IEBACiB9CiAKIHN0YXRpYyBleHByX3R5Cithc3RfZm9yX2RpY3RkaXNwbGF5KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgaW50IGk7CisgICAgaW50IGo7CisgICAgaW50IHNpemU7CisgICAgYXNkbF9zZXEgKmtleXMsICp2YWx1ZXM7CisKKyAgICBzaXplID0gKE5DSChuKSArIDEpIC8gMzsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLworICAgIGtleXMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOworICAgIGlmICgha2V5cykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB2YWx1ZXMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOworICAgIGlmICghdmFsdWVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGogPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkrKykgeworICAgICAgICBleHByX3R5IGtleSwgdmFsdWU7CisKKyAgICAgICAgaWYgKCFhc3RfZm9yX2RpY3RlbGVtZW50KGMsIG4sICZpLCAma2V5LCAmdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzZGxfc2VxX1NFVChrZXlzLCBqLCBrZXkpOworICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBqLCB2YWx1ZSk7CisKKyAgICAgICAgaisrOworICAgIH0KKyAgICBrZXlzLT5zaXplID0gajsKKyAgICB2YWx1ZXMtPnNpemUgPSBqOworICAgIHJldHVybiBEaWN0KGtleXMsIHZhbHVlcywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCitzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9nZW5leHAoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBhc3NlcnQoVFlQRShuKSA9PSAodGVzdGxpc3RfY29tcCkgfHwgVFlQRShuKSA9PSAoYXJndW1lbnQpKTsKQEAgLTE3OTksNiArMTk2NCwyNyBAQAogICAgIHJldHVybiBhc3RfZm9yX2l0ZXJjb21wKGMsIG4sIENPTVBfU0VUQ09NUCk7CiB9CiAKK3N0YXRpYyBleHByX3R5Cithc3RfZm9yX3NldGRpc3BsYXkoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgc2l6ZTsKKyAgICBhc2RsX3NlcSAqZWx0czsKKworICAgIGFzc2VydChUWVBFKG4pID09IChkaWN0b3JzZXRtYWtlcikpOworICAgIHNpemUgPSAoTkNIKG4pICsgMSkgLyAyOyAvKiArMSBpbiBjYXNlIG5vIHRyYWlsaW5nIGNvbW1hICovCisgICAgZWx0cyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFlbHRzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpICs9IDIpIHsKKyAgICAgICAgZXhwcl90eSBleHByZXNzaW9uOworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIGkpKTsKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzZGxfc2VxX1NFVChlbHRzLCBpIC8gMiwgZXhwcmVzc2lvbik7CisgICAgfQorICAgIHJldHVybiBTZXQoZWx0cywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQogCiBzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9hdG9tKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCkBAIC0xOTA5LDYyICsyMDk1LDQyIEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2xpc3Rjb21wKGMsIGNoKTsKICAgICBjYXNlIExCUkFDRTogewotICAgICAgICAvKiBkaWN0b3JzZXRtYWtlcjogdGVzdCAnOicgdGVzdCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSB8Ci0gICAgICAgICAqICAgICAgICAgICAgICAgICB0ZXN0IChnZW5fZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pICAqLwotICAgICAgICBpbnQgaSwgc2l6ZTsKLSAgICAgICAgYXNkbF9zZXEgKmtleXMsICp2YWx1ZXM7Ci0KKyAgICAgICAgLyogZGljdG9yc2V0bWFrZXI6ICggKCh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyB0ZXN0KQorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgdGVzdCkpKiBbJywnXSkpIHwKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgKCh0ZXN0IHwgJyonIHRlc3QpCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0IHwgJyonIHRlc3QpKSogWycsJ10pKSApICovCiAgICAgICAgIGNoID0gQ0hJTEQobiwgMSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBSQlJBQ0UpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYW4gZW1wdHkgZGljdCAqLworICAgICAgICAgICAgLyogSXQncyBhbiBlbXB0eSBkaWN0LiAqLwogICAgICAgICAgICAgcmV0dXJuIERpY3QoTlVMTCwgTlVMTCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICB9IGVsc2UgaWYgKE5DSChjaCkgPT0gMSB8fCBUWVBFKENISUxEKGNoLCAxKSkgPT0gQ09NTUEpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBzaW1wbGUgc2V0ICovCi0gICAgICAgICAgICBhc2RsX3NlcSAqZWx0czsKLSAgICAgICAgICAgIHNpemUgPSAoTkNIKGNoKSArIDEpIC8gMjsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLwotICAgICAgICAgICAgZWx0cyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgICAgICBpZiAoIWVsdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKGNoKTsgaSArPSAyKSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBleHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIGkpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChlbHRzLCBpIC8gMiwgZXhwcmVzc2lvbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgaXNfZGljdCA9IChUWVBFKENISUxEKGNoLCAwKSkgPT0gRE9VQkxFU1RBUik7CisgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAxIHx8CisgICAgICAgICAgICAgICAgICAgIChOQ0goY2gpID4gMSAmJgorICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMSkpID09IENPTU1BKSkgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBzZXQgZGlzcGxheS4gKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9zZXRkaXNwbGF5KGMsIGNoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTZXQoZWx0cywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICB9IGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgLyogaXQncyBhIHNldCBjb21wcmVoZW5zaW9uICovCi0gICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9zZXRjb21wKGMsIGNoKTsKLSAgICAgICAgfSBlbHNlIGlmIChOQ0goY2gpID4gMyAmJiBUWVBFKENISUxEKGNoLCAzKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2RpY3Rjb21wKGMsIGNoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBkaWN0ICovCi0gICAgICAgICAgICBzaXplID0gKE5DSChjaCkgKyAxKSAvIDQ7IC8qICsxIGluIGNhc2Ugbm8gdHJhaWxpbmcgY29tbWEgKi8KLSAgICAgICAgICAgIGtleXMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOwotICAgICAgICAgICAgaWYgKCFrZXlzKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICB2YWx1ZXMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0goY2gpOyBpICs9IDQpIHsKLSAgICAgICAgICAgICAgICBleHByX3R5IGV4cHJlc3Npb247Ci0KLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCBpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChrZXlzLCBpIC8gNCwgZXhwcmVzc2lvbik7Ci0KLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCBpICsgMikpOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpIC8gNCwgZXhwcmVzc2lvbik7CisgICAgICAgICAgICBlbHNlIGlmIChOQ0goY2gpID4gMSAmJgorICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgICAgICAgICAvKiBJdCdzIGEgc2V0IGNvbXByZWhlbnNpb24uICovCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfc2V0Y29tcChjLCBjaCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gRGljdChrZXlzLCB2YWx1ZXMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKE5DSChjaCkgPiAzIC0gaXNfZGljdCAmJgorICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKGNoLCAzIC0gaXNfZGljdCkpID09IGNvbXBfZm9yKSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaXNfZGljdCkgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImRpY3QgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdCBjb21wcmVoZW5zaW9uIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kaWN0Y29tcChjLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBJdCdzIGEgZGljdGlvbmFyeSBkaXNwbGF5LiAqLworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2RpY3RkaXNwbGF5KGMsIGNoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMjEwMCw3ICsyMjY2LDcgQEAKICAgICBSRVEobiwgdHJhaWxlcik7CiAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IExQQVIpIHsKICAgICAgICAgaWYgKE5DSChuKSA9PSAyKQotICAgICAgICAgICAgcmV0dXJuIENhbGwobGVmdF9leHByLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCisgICAgICAgICAgICByZXR1cm4gQ2FsbChsZWZ0X2V4cHIsIE5VTEwsIE5VTEwsIExJTkVOTyhuKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2NhbGwoYywgQ0hJTEQobiwgMSksIGxlZnRfZXhwcik7CkBAIC0yMTkyLDE5ICsyMzU4LDI5IEBACiB9CiAKIHN0YXRpYyBleHByX3R5Ci1hc3RfZm9yX3Bvd2VyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCithc3RfZm9yX2F0b21fZXhwcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIC8qIHBvd2VyOiBhdG9tIHRyYWlsZXIqICgnKionIGZhY3RvcikqCi0gICAgICovCi0gICAgaW50IGk7CisgICAgaW50IGksIG5jaCwgc3RhcnQgPSAwOwogICAgIGV4cHJfdHkgZSwgdG1wOwotICAgIFJFUShuLCBwb3dlcik7Ci0gICAgZSA9IGFzdF9mb3JfYXRvbShjLCBDSElMRChuLCAwKSk7CisKKyAgICBSRVEobiwgYXRvbV9leHByKTsKKyAgICBuY2ggPSBOQ0gobik7CisKKyAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVdBSVQpIHsKKyAgICAgICAgc3RhcnQgPSAxOworICAgICAgICBhc3NlcnQobmNoID4gMSk7CisgICAgfQorCisgICAgZSA9IGFzdF9mb3JfYXRvbShjLCBDSElMRChuLCBzdGFydCkpOwogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKE5DSChuKSA9PSAxKQorICAgIGlmIChuY2ggPT0gMSkKICAgICAgICAgcmV0dXJuIGU7Ci0gICAgZm9yIChpID0gMTsgaSA8IE5DSChuKTsgaSsrKSB7CisgICAgaWYgKHN0YXJ0ICYmIG5jaCA9PSAyKSB7CisgICAgICAgIHJldHVybiBBd2FpdChlLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQorCisgICAgZm9yIChpID0gc3RhcnQgKyAxOyBpIDwgbmNoOyBpKyspIHsKICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgaWYgKFRZUEUoY2gpICE9IHRyYWlsZXIpCiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMTUsNiArMjM5MSwyOCBAQAogICAgICAgICB0bXAtPmNvbF9vZmZzZXQgPSBlLT5jb2xfb2Zmc2V0OwogICAgICAgICBlID0gdG1wOwogICAgIH0KKworICAgIGlmIChzdGFydCkgeworICAgICAgICAvKiB0aGVyZSB3YXMgYW4gQVdBSVQgKi8KKyAgICAgICAgcmV0dXJuIEF3YWl0KGUsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBlOworICAgIH0KK30KKworc3RhdGljIGV4cHJfdHkKK2FzdF9mb3JfcG93ZXIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICAgICAqLworICAgIGV4cHJfdHkgZTsKKyAgICBSRVEobiwgcG93ZXIpOworICAgIGUgPSBhc3RfZm9yX2F0b21fZXhwcihjLCBDSElMRChuLCAwKSk7CisgICAgaWYgKCFlKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoTkNIKG4pID09IDEpCisgICAgICAgIHJldHVybiBlOwogICAgIGlmIChUWVBFKENISUxEKG4sIE5DSChuKSAtIDEpKSA9PSBmYWN0b3IpIHsKICAgICAgICAgZXhwcl90eSBmID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIE5DSChuKSAtIDEpKTsKICAgICAgICAgaWYgKCFmKQpAQCAtMjI1Nyw5ICsyNDU1LDExIEBACiAgICAgICAgYW5kX2V4cHI6IHNoaWZ0X2V4cHIgKCcmJyBzaGlmdF9leHByKSoKICAgICAgICBzaGlmdF9leHByOiBhcml0aF9leHByICgoJzw8J3wnPj4nKSBhcml0aF9leHByKSoKICAgICAgICBhcml0aF9leHByOiB0ZXJtICgoJysnfCctJykgdGVybSkqCi0gICAgICAgdGVybTogZmFjdG9yICgoJyonfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKKyAgICAgICB0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKICAgICAgICBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLSAgICAgICBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICAgICAgIHBvd2VyOiBhdG9tX2V4cHIgWycqKicgZmFjdG9yXQorICAgICAgIGF0b21fZXhwcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqCisgICAgICAgeWllbGRfZXhwcjogJ3lpZWxkJyBbeWllbGRfYXJnXQogICAgICovCiAKICAgICBhc2RsX3NlcSAqc2VxOwpAQCAtMjQwOSwxNSArMjYwOSwxNCBAQAogYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGV4cHJfdHkgZnVuYykKIHsKICAgICAvKgotICAgICAgYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXXwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdCi0gICAgICAgICAgICAgICB8ICcqKicgdGVzdCkKLSAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddICh0ZXN0KSBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKKyAgICAgIGFyZ2xpc3Q6IGFyZ3VtZW50ICgnLCcgYXJndW1lbnQpKiAgWycsJ10KKyAgICAgIGFyZ3VtZW50OiAoIHRlc3QgW2NvbXBfZm9yXSB8ICcqJyB0ZXN0IHwgdGVzdCAnPScgdGVzdCB8ICcqKicgdGVzdCApCiAgICAgKi8KIAogICAgIGludCBpLCBuYXJncywgbmtleXdvcmRzLCBuZ2VuczsKKyAgICBpbnQgbmRvdWJsZXN0YXJzOwogICAgIGFzZGxfc2VxICphcmdzOwogICAgIGFzZGxfc2VxICprZXl3b3JkczsKLSAgICBleHByX3R5IHZhcmFyZyA9IE5VTEwsIGt3YXJnID0gTlVMTDsKIAogICAgIFJFUShuLCBhcmdsaXN0KTsKIApAQCAtMjQzMSw3ICsyNjMwLDEwIEBACiAgICAgICAgICAgICAgICAgbmFyZ3MrKzsKICAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikKICAgICAgICAgICAgICAgICBuZ2VucysrOworICAgICAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRChjaCwgMCkpID09IFNUQVIpCisgICAgICAgICAgICAgICAgbmFyZ3MrKzsKICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAvKiBUWVBFKENISUxEKGNoLCAwKSkgPT0gRE9VQkxFU1RBUiBvciBrZXl3b3JkIGFyZ3VtZW50ICovCiAgICAgICAgICAgICAgICAgbmtleXdvcmRzKys7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDUyLDQxICsyNjU0LDgyIEBACiAgICAga2V5d29yZHMgPSBfUHlfYXNkbF9zZXFfbmV3KG5rZXl3b3JkcywgYy0+Y19hcmVuYSk7CiAgICAgaWYgKCFrZXl3b3JkcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFyZ3MgPSAwOwotICAgIG5rZXl3b3JkcyA9IDA7CisKKyAgICBuYXJncyA9IDA7ICAvKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyArIGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KKyAgICBua2V5d29yZHMgPSAwOyAgLyoga2V5d29yZCBhcmd1bWVudHMgKyBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KKyAgICBuZG91Ymxlc3RhcnMgPSAwOyAgLyoganVzdCBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZ3MgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgaWYgKFRZUEUoY2gpID09IGFyZ3VtZW50KSB7CiAgICAgICAgICAgICBleHByX3R5IGU7CisgICAgICAgICAgICBub2RlICpjaGNoID0gQ0hJTEQoY2gsIDApOwogICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChua2V5d29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24ta2V5d29yZCBhcmcgYWZ0ZXIga2V5d29yZCBhcmciKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKFRZUEUoY2hjaCkgPT0gc3Rhcl9leHByKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGFuIGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyAqLworICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJyZWQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZG91Ymxlc3RhcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUgYXJndW1lbnQgdW5wYWNraW5nIGZvbGxvd3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2hjaCwgMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWUpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnJlZCA9IFN0YXJyZWQoZSwgTG9hZCwgTElORU5PKGNoY2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoY2gtPm5fY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGFycmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBzdGFycmVkKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHZhcmFyZykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgbmFtZWQgYXJndW1lbnRzIG1heSBmb2xsb3cgKmV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGEgcG9zaXRpb25hbCBhcmd1bWVudCAqLworICAgICAgICAgICAgICAgICAgICBpZiAobmtleXdvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmRvdWJsZXN0YXJzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIGNoY2gpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWUpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIG5hcmdzKyssIGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChUWVBFKGNoY2gpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgICAgICAgICAvKiBhIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nICovCisgICAgICAgICAgICAgICAga2V5d29yZF90eSBrdzsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgMSkpOwogICAgICAgICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIG5hcmdzKyssIGUpOworICAgICAgICAgICAgICAgIGt3ID0ga2V5d29yZChOVUxMLCBlLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CisgICAgICAgICAgICAgICAgbmRvdWJsZXN0YXJzKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGUgbG9uZSBnZW5lcmF0b3IgZXhwcmVzc2lvbiAqLwogICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2dlbmV4cChjLCBjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYXJncywgbmFyZ3MrKywgZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBhIGtleXdvcmQgYXJndW1lbnQgKi8KICAgICAgICAgICAgICAgICBrZXl3b3JkX3R5IGt3OwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIga2V5LCB0bXA7CiAgICAgICAgICAgICAgICAgaW50IGs7CiAKLSAgICAgICAgICAgICAgICAvKiBDSElMRChjaCwgMCkgaXMgdGVzdCwgYnV0IG11c3QgYmUgYW4gaWRlbnRpZmllcj8gKi8KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgLyogY2hjaCBpcyB0ZXN0LCBidXQgbXVzdCBiZSBhbiBpZGVudGlmaWVyPyAqLworICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgY2hjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAvKiBmKGxhbWJkYSB4OiB4WzBdID0gMykgZW5kcyB1cCBnZXR0aW5nIHBhcnNlZCB3aXRoCkBAIC0yNDk1LDE5ICsyNzM4LDI0IEBACiAgICAgICAgICAgICAgICAgICogdGhlbiBpcyB2ZXJ5IGNvbmZ1c2luZy4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoZS0+a2luZCA9PSBMYW1iZGFfa2luZCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGtleSA9IGUtPnYuTmFtZS5pZDsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmtleXdvcmRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaykpLT5hcmc7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUodG1wLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOworICAgICAgICAgICAgICAgICAgICBpZiAodG1wICYmICFQeVVuaWNvZGVfQ29tcGFyZSh0bXAsIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yNTIwLDIxICsyNzY4LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gU1RBUikgewotICAgICAgICAgICAgdmFyYXJnID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIGkrMSkpOwotICAgICAgICAgICAgaWYgKCF2YXJhcmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAga3dhcmcgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgaSsxKSk7Ci0gICAgICAgICAgICBpZiAoIWt3YXJnKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaSsrOwotICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHZhcmFyZywga3dhcmcsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleHByX3R5CkBAIC0yNTY4LDcgKzI4MDQsNyBAQAogICAgIC8qIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpCiAgICAgICAgICAgICAgICAgfCAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0KSkqKQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KLSAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nCisgICAgICAgYXVnYXNzaWduOiAnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScKICAgICAgICAgICAgICAgICB8ICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nCiAgICAgICAgdGVzdDogLi4uIGhlcmUgc3RhcnRzIHRoZSBvcGVyYXRvciBwcmVjZW5kZW5jZSBkYW5jZQogICAgICAqLwpAQCAtMzI4OCw3ICszNTI0LDcgQEAKIH0KIAogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK2FzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGFzZGxfc2VxICpfdGFyZ2V0LCAqc2VxID0gTlVMTCwgKnN1aXRlX3NlcTsKICAgICBleHByX3R5IGV4cHJlc3Npb247CkBAIC0zMzIyLDggKzM1NTgsMTQgQEAKICAgICBpZiAoIXN1aXRlX3NlcSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgaWYgKGlzX2FzeW5jKQorICAgICAgICByZXR1cm4gQXN5bmNGb3IodGFyZ2V0LCBleHByZXNzaW9uLCBzdWl0ZV9zZXEsIHNlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsCisgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleGNlcHRoYW5kbGVyX3R5CkBAIC0zNDcwLDcgKzM3MTIsNyBAQAogCiAvKiB3aXRoX3N0bXQ6ICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUgKi8KIHN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGludCBpLCBuX2l0ZW1zOwogICAgIGFzZGxfc2VxICppdGVtcywgKmJvZHk7CkBAIC0zNDkyLDcgKzM3MzQsMTAgQEAKICAgICBpZiAoIWJvZHkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIHJldHVybiBBc3luY1dpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBXaXRoKGl0ZW1zLCBib2R5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBzdG10X3R5CkBAIC0zNTE0LDggKzM3NTksOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAotICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLCBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KIAogICAgIGlmIChUWVBFKENISUxEKG4sIDMpKSA9PSBSUEFSKSB7IC8qIGNsYXNzIE5BTUUgJygnICcpJyAnOicgc3VpdGUgKi8KQEAgLTM1MjcsOCArMzc3Miw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogCiAgICAgLyogY2xhc3MgTkFNRSAnKCcgYXJnbGlzdCAnKScgJzonIHN1aXRlICovCkBAIC0zNTUzLDggKzM3OTgsNyBAQAogICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICBjYWxsLT52LkNhbGwuc3RhcmFyZ3MsIGNhbGwtPnYuQ2FsbC5rd2FyZ3MsIHMsCisgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgY2FsbC0+di5DYWxsLmFyZ3MsIGNhbGwtPnYuQ2FsbC5rZXl3b3JkcywgcywKICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX3NlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCkBAIC0zNjAwLDcgKzM4NDQsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10CiAgICAgICAgICovCiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIFJFUShuLCBjb21wb3VuZF9zdG10KTsKQEAgLTM2MTAsMTcgKzM4NTQsMTkgQEAKICAgICAgICAgICAgIGNhc2Ugd2hpbGVfc3RtdDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aGlsZV9zdG10KGMsIGNoKTsKICAgICAgICAgICAgIGNhc2UgZm9yX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Zvcl9zdG10KGMsIGNoLCAwKTsKICAgICAgICAgICAgIGNhc2UgdHJ5X3N0bXQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfdHJ5X3N0bXQoYywgY2gpOwogICAgICAgICAgICAgY2FzZSB3aXRoX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfd2l0aF9zdG10KGMsIGNoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aXRoX3N0bXQoYywgY2gsIDApOwogICAgICAgICAgICAgY2FzZSBmdW5jZGVmOgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWYoYywgY2gsIE5VTEwpOwogICAgICAgICAgICAgY2FzZSBjbGFzc2RlZjoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9jbGFzc2RlZihjLCBjaCwgTlVMTCk7CiAgICAgICAgICAgICBjYXNlIGRlY29yYXRlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kZWNvcmF0ZWQoYywgY2gpOworICAgICAgICAgICAgY2FzZSBhc3luY19zdG10OgorICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2FzeW5jX3N0bXQoYywgY2gpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmhhbmRsZWQgc21hbGxfc3RtdDogVFlQRT0lZCBOQ0g9JWRcbiIsCmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IDRiNGY5NzkuLjJmMjIyMDkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC00NiwxMyArNDYsMTYgQEAKIF9QeV9JREVOVElGSUVSKHN0ZG91dCk7CiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogCisjaW5jbHVkZSAiY2xpbmljL2JsdGlubW9kdWxlLmMuaCIKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgd2FpdGluZyBmb3IgKmFyZ3Mgc3VwcG9ydCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqY2VsbDsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwotICAgIGludCBpc2NsYXNzOworICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewpAQCAtMjI5LDI1ICsyMzIsNDIgQEAKIGlzIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb2R1bGUuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorYWJzIGFzIGJ1aWx0aW5fYWJzCisKKyAgICB4OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hYnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjgzMzA0N2M0OTNlY2VhMiBpbnB1dD1iZWQ0Y2ExNGUyOWMyMGQxXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Fic29sdXRlKHYpOworICAgIHJldHVybiBQeU51bWJlcl9BYnNvbHV0ZSh4KTsKIH0KIAotUHlEb2NfU1RSVkFSKGFic19kb2MsCi0iYWJzKG51bWJlcikgLT4gbnVtYmVyXG5cCi1cblwKLVJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LiIpOworLypbY2xpbmljIGlucHV0XQorYWxsIGFzIGJ1aWx0aW5fYWxsCisKKyAgICBpdGVyYWJsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFsbCB2YWx1ZXMgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FsbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlcmFibGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDg5ZTZkMWI3YmRlMjdiMSBpbnB1dD0xYTdjNWQxYmMzNDM4YTIxXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CiAgICAgaW50IGNtcDsKIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CkBAIC0yNzcsMjAgKzI5NywyNiBAQAogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCi1QeURvY19TVFJWQVIoYWxsX2RvYywKLSJhbGwoaXRlcmFibGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbGwgdmFsdWVzIHggaW4gdGhlIGl0ZXJhYmxlLlxuXAotSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gVHJ1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FueSBhcyBidWlsdGluX2FueQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbnkgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hbnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZXJhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiZTk5NGIyYzIzMDc0OTIgaW5wdXQ9NDFkNzQ1MWMyMzM4NGYyNF0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CiAgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOwogICAgIGludCBjbXA7CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodik7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwpAQCAtMzIwLDU2ICszNDYsNjcgQEAKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUihhbnlfZG9jLAotImFueShpdGVyYWJsZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS5cblwKLUlmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLiIpOworLypbY2xpbmljIGlucHV0XQorYXNjaWkgYXMgYnVpbHRpbl9hc2NpaQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBhbiBBU0NJSS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4KKworQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhbgorb2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CityZXByKCkgdXNpbmcgXFx4LCBcXHUgb3IgXFxVIGVzY2FwZXMuIFRoaXMgZ2VuZXJhdGVzIGEgc3RyaW5nIHNpbWlsYXIKK3RvIHRoYXQgcmV0dXJuZWQgYnkgcmVwcigpIGluIFB5dGhvbiAyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hc2NpaShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FzY2lpKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDRlODYyYzQ4YWYyYTkzMyBpbnB1dD00YzYyNzMyZTFiM2EzY2M5XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0FTQ0lJKHYpOworICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogfQogCi1QeURvY19TVFJWQVIoYXNjaWlfZG9jLAotImFzY2lpKG9iamVjdCkgLT4gc3RyaW5nXG5cCi1cblwKLUFzIHJlcHIoKSwgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW5cblwKLW9iamVjdCwgYnV0IGVzY2FwZSB0aGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieVxuXAotcmVwcigpIHVzaW5nIFxceCwgXFx1IG9yIFxcVSBlc2NhcGVzLiAgVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhclxuXAotdG8gdGhhdCByZXR1cm5lZCBieSByZXByKCkgaW4gUHl0aG9uIDIuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2JpbiBhcyBidWlsdGluX2JpbgorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuCisKKyAgID4+PiBiaW4oMjc5NjIwMikKKyAgICcwYjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2JpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2JpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZWUyNmM2Y2YzYmJiNTQgaW5wdXQ9NTNmOGEwMjY0YmFjYWY5MF0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgMik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDIpOwogfQogCi1QeURvY19TVFJWQVIoYmluX2RvYywKLSJiaW4obnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGJpbigyNzk2MjAyKVxuXAotICAgJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMCdcblwKLSIpOwogCisvKltjbGluaWMgaW5wdXRdCitjYWxsYWJsZSBhcyBidWlsdGluX2NhbGxhYmxlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS4KKworTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhCitfX2NhbGxfXygpIG1ldGhvZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY2FsbGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9jYWxsYWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0ZGYyY2U5MjM2NGI2NTYgaW5wdXQ9MTQyM2JhYjk5Y2M0MWY1OF0qLwogewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpUHlDYWxsYWJsZV9DaGVjayh2KSk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylQeUNhbGxhYmxlX0NoZWNrKG9iaikpOwogfQogCi1QeURvY19TVFJWQVIoY2FsbGFibGVfZG9jLAotImNhbGxhYmxlKG9iamVjdCkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlIChpLmUuLCBzb21lIGtpbmQgb2YgZnVuY3Rpb24pLlxuXAotTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhXG5cCi1fX2NhbGxfXygpIG1ldGhvZC4iKTsKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNTI0LDQwICs1NjEsNDIgQEAKIH07CiAKIAorLypbY2xpbmljIGlucHV0XQorZm9ybWF0IGFzIGJ1aWx0aW5fZm9ybWF0CisKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgZm9ybWF0X3NwZWM6IHVuaWNvZGUoY19kZWZhdWx0PSJOVUxMIikgPSAnJworICAgIC8KKworUmV0dXJuIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpCisKK2Zvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZm9ybWF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5fZm9ybWF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0MWZkNzhhNWYwMTc2NCBpbnB1dD02MzI1ZTc1MWExYjI5Yjg2XSovCiB7Ci0gICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLCAmdmFsdWUsICZmb3JtYXRfc3BlYykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm9ybWF0X3NwZWMpOwogfQogCi1QeURvY19TVFJWQVIoZm9ybWF0X2RvYywKLSJmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pIC0+IHN0cmluZ1xuXAotXG5cCi1SZXR1cm5zIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpXG5cCi1mb3JtYXRfc3BlYyBkZWZhdWx0cyB0byBcIlwiIik7CisvKltjbGluaWMgaW5wdXRdCitjaHIgYXMgYnVpbHRpbl9jaHIKKworICAgIGk6IGludAorICAgIC8KKworUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jaHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9jaHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02N2ZlNGQ4N2U2OTBmMzczIGlucHV0PTNmNjA0ZWY0NWE3MDc1MGRdKi8KIHsKLSAgICBpbnQgeDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjaHIiLCAmeCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogfQogCi1QeURvY19TVFJWQVIoY2hyX2RvYywKLSJjaHIoaSkgLT4gVW5pY29kZSBjaGFyYWN0ZXJcblwKLVxuXAotUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOwotCiAKIHN0YXRpYyBjb25zdCBjaGFyICoKIHNvdXJjZV9hc19zdHJpbmcoUHlPYmplY3QgKmNtZCwgY29uc3QgY2hhciAqZnVuY25hbWUsIGNvbnN0IGNoYXIgKndoYXQsIFB5Q29tcGlsZXJGbGFncyAqY2YsIFB5X2J1ZmZlciAqdmlldykKQEAgLTU4Miw4ICs2MjEsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgIGlmIChzdHJsZW4oc3RyKSAhPSAoc2l6ZV90KXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSh2aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01OTEsMzUgKzYzMCw0NyBAQAogICAgIHJldHVybiBzdHI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NvbXBpbGUgYXMgYnVpbHRpbl9jb21waWxlCisKKyAgICBzb3VyY2U6IG9iamVjdAorICAgIGZpbGVuYW1lOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNEZWNvZGVyIikKKyAgICBtb2RlOiBzdHIKKyAgICBmbGFnczogaW50ID0gMAorICAgIGRvbnRfaW5oZXJpdDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICBvcHRpbWl6ZTogaW50ID0gLTEKKworQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuCisKK1RoZSBzb3VyY2UgY29kZSBtYXkgcmVwcmVzZW50IGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uCitUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy4KK1RoZSBtb2RlIG11c3QgYmUgJ2V4ZWMnIHRvIGNvbXBpbGUgYSBtb2R1bGUsICdzaW5nbGUnIHRvIGNvbXBpbGUgYQorc2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciAnZXZhbCcgdG8gY29tcGlsZSBhbiBleHByZXNzaW9uLgorVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2UKK3RoZSBjb21waWxhdGlvbiBvZiB0aGUgY29kZS4KK1RoZSBkb250X2luaGVyaXQgYXJndW1lbnQsIGlmIHRydWUsIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nCit0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmcKK2NvbXBpbGU7IGlmIGFic2VudCBvciBmYWxzZSB0aGVzZSBzdGF0ZW1lbnRzIGRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24sCitpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J1aWx0aW5fY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2luaGVyaXQsIGludCBvcHRpbWl6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTg4MTc2MmMxYmI5MGM0IGlucHV0PTlkNTNlOGNmYjNjODY0MTRdKi8KIHsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIGNoYXIgKnN0YXJ0c3RyOwotICAgIGludCBtb2RlID0gLTE7Ci0gICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7Ci0gICAgaW50IHN1cHBsaWVkX2ZsYWdzID0gMDsKLSAgICBpbnQgb3B0aW1pemUgPSAtMTsKKyAgICBpbnQgY29tcGlsZV9tb2RlID0gLTE7CiAgICAgaW50IGlzX2FzdDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7Ci0gICAgUHlPYmplY3QgKmNtZDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OwogICAgIGludCBzdGFydFtdID0ge1B5X2ZpbGVfaW5wdXQsIFB5X2V2YWxfaW5wdXQsIFB5X3NpbmdsZV9pbnB1dH07CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyZzfGlpaTpjb21waWxlIiwgIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzdHIsICZzdXBwbGllZF9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjZi5jZl9mbGFncyA9IGZsYWdzIHwgUHlDRl9TT1VSQ0VfSVNfVVRGODsKIAotICAgIGNmLmNmX2ZsYWdzID0gc3VwcGxpZWRfZmxhZ3MgfCBQeUNGX1NPVVJDRV9JU19VVEY4OwotCi0gICAgaWYgKHN1cHBsaWVkX2ZsYWdzICYKKyAgICBpZiAoZmxhZ3MgJgogICAgICAgICB+KFB5Q0ZfTUFTSyB8IFB5Q0ZfTUFTS19PQlNPTEVURSB8IFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgfCBQeUNGX09OTFlfQVNUKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNjM4LDI1ICs2ODksMjUgQEAKICAgICAgICAgUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAoc3RhcnRzdHIsICJleGVjIikgPT0gMCkKLSAgICAgICAgbW9kZSA9IDA7Ci0gICAgZWxzZSBpZiAoc3RyY21wKHN0YXJ0c3RyLCAiZXZhbCIpID09IDApCi0gICAgICAgIG1vZGUgPSAxOwotICAgIGVsc2UgaWYgKHN0cmNtcChzdGFydHN0ciwgInNpbmdsZSIpID09IDApCi0gICAgICAgIG1vZGUgPSAyOworICAgIGlmIChzdHJjbXAobW9kZSwgImV4ZWMiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAwOworICAgIGVsc2UgaWYgKHN0cmNtcChtb2RlLCAiZXZhbCIpID09IDApCisgICAgICAgIGNvbXBpbGVfbW9kZSA9IDE7CisgICAgZWxzZSBpZiAoc3RyY21wKG1vZGUsICJzaW5nbGUiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAyOwogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21waWxlKCkgYXJnIDMgbXVzdCBiZSAnZXhlYycsICdldmFsJyBvciAnc2luZ2xlJyIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBpbGUoKSBtb2RlIG11c3QgYmUgJ2V4ZWMnLCAnZXZhbCcgb3IgJ3NpbmdsZSciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBpc19hc3QgPSBQeUFTVF9DaGVjayhjbWQpOworICAgIGlzX2FzdCA9IFB5QVNUX0NoZWNrKHNvdXJjZSk7CiAgICAgaWYgKGlzX2FzdCA9PSAtMSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoaXNfYXN0KSB7Ci0gICAgICAgIGlmIChzdXBwbGllZF9mbGFncyAmIFB5Q0ZfT05MWV9BU1QpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihjbWQpOwotICAgICAgICAgICAgcmVzdWx0ID0gY21kOworICAgICAgICBpZiAoZmxhZ3MgJiBQeUNGX09OTFlfQVNUKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc291cmNlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hOwpAQCAtNjY1LDcgKzcxNiw3IEBACiAgICAgICAgICAgICBhcmVuYSA9IFB5QXJlbmFfTmV3KCk7CiAgICAgICAgICAgICBpZiAoYXJlbmEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgbW9kID0gUHlBU1Rfb2JqMm1vZChjbWQsIGFyZW5hLCBtb2RlKTsKKyAgICAgICAgICAgIG1vZCA9IFB5QVNUX29iajJtb2Qoc291cmNlLCBhcmVuYSwgY29tcGlsZV9tb2RlKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTY4MSwxMSArNzMyLDExIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKKyAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHNvdXJjZSwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W21vZGVdLCAmY2YsIG9wdGltaXplKTsKKyAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W2NvbXBpbGVfbW9kZV0sICZjZiwgb3B0aW1pemUpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIGdvdG8gZmluYWxseTsKIApAQCAtNjk2LDIxICs3NDcsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihjb21waWxlX2RvYywKLSJjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGVbLCBmbGFnc1ssIGRvbnRfaW5oZXJpdF1dKSAtPiBjb2RlIG9iamVjdFxuXAotXG5cCi1Db21waWxlIHRoZSBzb3VyY2UgKGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24pXG5cCi1pbnRvIGEgY29kZSBvYmplY3QgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYnkgZXhlYygpIG9yIGV2YWwoKS5cblwKLVRoZSBmaWxlbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHJ1bi10aW1lIGVycm9yIG1lc3NhZ2VzLlxuXAotVGhlIG1vZGUgbXVzdCBiZSAnZXhlYycgdG8gY29tcGlsZSBhIG1vZHVsZSwgJ3NpbmdsZScgdG8gY29tcGlsZSBhXG5cCi1zaW5nbGUgKGludGVyYWN0aXZlKSBzdGF0ZW1lbnQsIG9yICdldmFsJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG5cCi1UaGUgZmxhZ3MgYXJndW1lbnQsIGlmIHByZXNlbnQsIGNvbnRyb2xzIHdoaWNoIGZ1dHVyZSBzdGF0ZW1lbnRzIGluZmx1ZW5jZVxuXAotdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLlxuXAotVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgbm9uLXplcm8sIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nXG5cCi10aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcblwKLWNvbXBpbGU7IGlmIGFic2VudCBvciB6ZXJvIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbixcblwKLWluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MzUsMzMgKzc3Miw1MSBAQAogIiAgZm9yIGFueSBvdGhlciBvYmplY3Q6IGl0cyBhdHRyaWJ1dGVzLCBpdHMgY2xhc3MncyBhdHRyaWJ1dGVzLCBhbmRcbiIKICIgICAgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNsYXNzJ3MgYmFzZSBjbGFzc2VzLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9kaXZtb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp2LCAqdzsKKy8qW2NsaW5pYyBpbnB1dF0KK2Rpdm1vZCBhcyBidWlsdGluX2Rpdm1vZAogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwgMiwgMiwgJnYsICZ3KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Rpdm1vZCh2LCB3KTsKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhZDAwNzYxMjBlYmY5YWMgaW5wdXQ9N2ZkYjE1ZjhhOTdhNWZlN10qLworeworICAgIHJldHVybiBQeU51bWJlcl9EaXZtb2QoeCwgeSk7CiB9CiAKLVB5RG9jX1NUUlZBUihkaXZtb2RfZG9jLAotImRpdm1vZCh4LCB5KSAtPiAoZGl2LCBtb2QpXG5cCi1cblwKLVJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorZXZhbCBhcyBidWlsdGluX2V2YWwKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXZhbHVhdGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuCisKK1RoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI4NDUwMWZiN2I0ZDY2NiBpbnB1dD0xMWVlNzE4YTg2NDBlNTI3XSovCiB7Ci0gICAgUHlPYmplY3QgKmNtZCwgKnJlc3VsdCwgKnRtcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lLCAqbG9jYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wID0gTlVMTDsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgUHlDb21waWxlckZsYWdzIGNmOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsIDEsIDMsICZjbWQsICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGxvY2FscyAhPSBQeV9Ob25lICYmICFQeU1hcHBpbmdfQ2hlY2sobG9jYWxzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzk2LDE3ICs4NTEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2soY21kKSkgewotICAgICAgICBpZiAoUHlDb2RlX0dldE51bUZyZWUoKFB5Q29kZU9iamVjdCAqKWNtZCkgPiAwKSB7CisgICAgaWYgKFB5Q29kZV9DaGVjayhzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopc291cmNlKSA+IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICJjb2RlIG9iamVjdCBwYXNzZWQgdG8gZXZhbCgpIG1heSBub3QgY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5RXZhbF9FdmFsQ29kZShjbWQsIGdsb2JhbHMsIGxvY2Fscyk7CisgICAgICAgIHJldHVybiBQeUV2YWxfRXZhbENvZGUoc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogICAgIH0KIAogICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9TT1VSQ0VfSVNfVVRGODsKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImV2YWwiLCAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgc3RyID0gc291cmNlX2FzX3N0cmluZyhzb3VyY2UsICJldmFsIiwgInN0cmluZywgYnl0ZXMgb3IgY29kZSIsICZjZiwgJnZpZXcpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTgyMCwyNCArODc1LDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKGV2YWxfZG9jLAotImV2YWwoc291cmNlWywgZ2xvYmFsc1ssIGxvY2Fsc11dKSAtPiB2YWx1ZVxuXAotXG5cCi1FdmFsdWF0ZSB0aGUgc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cblwKLVRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uXG5cCi1vciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cblwKLVRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuXAotZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuXG5cCi1JZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC5cbiIpOworLypbY2xpbmljIGlucHV0XQorZXhlYyBhcyBidWlsdGluX2V4ZWMKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy4KKworVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBvciBtb3JlIFB5dGhvbiBzdGF0ZW1lbnRzCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXhlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V4ZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODNkNTc0ZWY5ZDVkMGI0NiBpbnB1dD0wMWNhM2UxYzAxNjkyODI5XSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKnByb2csICpnbG9iYWxzID0gUHlfTm9uZSwgKmxvY2FscyA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwgMSwgMywgJnByb2csICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGdsb2JhbHMgPSBQeUV2YWxfR2V0R2xvYmFscygpOwpAQCAtODU2LDEzICs5MTYsMTMgQEAKICAgICAgICAgbG9jYWxzID0gZ2xvYmFsczsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKGdsb2JhbHMpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleGVjKCkgYXJnIDIgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZXhlYygpIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhsb2NhbHMpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgbG9jYWxzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtODcyLDIyICs5MzIsMjIgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2socHJvZykpIHsKLSAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilwcm9nKSA+IDApIHsKKyAgICBpZiAoUHlDb2RlX0NoZWNrKHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilzb3VyY2UpID4gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAiY29kZSBvYmplY3QgcGFzc2VkIHRvIGV4ZWMoKSBtYXkgbm90ICIKICAgICAgICAgICAgICAgICAiY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShwcm9nLCBnbG9iYWxzLCBsb2NhbHMpOworICAgICAgICB2ID0gUHlFdmFsX0V2YWxDb2RlKHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwogICAgICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICAgICAgY2YuY2ZfZmxhZ3MgPSBQeUNGX1NPVVJDRV9JU19VVEY4OwotICAgICAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHByb2csICJleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoc291cmNlLCAiZXhlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpKQpAQCAtOTAzLDE1ICs5NjMsOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZXhlY19kb2MsCi0iZXhlYyhvYmplY3RbLCBnbG9iYWxzWywgbG9jYWxzXV0pXG5cCi1cblwKLVJlYWQgYW5kIGV4ZWN1dGUgY29kZSBmcm9tIGFuIG9iamVjdCwgd2hpY2ggY2FuIGJlIGEgc3RyaW5nIG9yIGEgY29kZVxuXAotb2JqZWN0LlxuXAotVGhlIGdsb2JhbHMgYW5kIGxvY2FscyBhcmUgZGljdGlvbmFyaWVzLCBkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50XG5cCi1nbG9iYWxzIGFuZCBsb2NhbHMuICBJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fZ2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NDUsOCArOTk4LDE4IEBACiBleGlzdDsgd2l0aG91dCBpdCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGF0IGNhc2UuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorZ2xvYmFscyBhcyBidWlsdGluX2dsb2JhbHMKKworUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBnbG9iYWwgdmFyaWFibGVzLgorCitOT1RFOiBVcGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSAqd2lsbCogYWZmZWN0IG5hbWUgbG9va3VwcyBpbiB0aGUgY3VycmVudAorZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9nbG9iYWxzKFB5T2JqZWN0ICpzZWxmKQorYnVpbHRpbl9nbG9iYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OTU4NjQ1ZTk2ZGQ4MTM4IGlucHV0PTkzMjc1NzZmOTJiYjQ4YmFdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtOTU1LDI2ICsxMDE4LDMxIEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihnbG9iYWxzX2RvYywKLSJnbG9iYWxzKCkgLT4gZGljdGlvbmFyeVxuXAotXG5cCi1SZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZSdzIGdsb2JhbCB2YXJpYWJsZXMuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2F0dHIgYXMgYnVpbHRpbl9oYXNhdHRyCisKKyAgICBvYmo6IG9iamVjdAorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCisKK1RoaXMgaXMgZG9uZSBieSBjYWxsaW5nIGdldGF0dHIob2JqLCBuYW1lKSBhbmQgY2F0Y2hpbmcgQXR0cmlidXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2hhc2F0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9oYXNhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODExNTRmZGQ2MzYzNDY5NiBpbnB1dD0wZmFlYzk3ODdkOTc5NTQyXSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNhdHRyKCk6IGF0dHJpYnV0ZSBuYW1lIG11c3QgYmUgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKKyAgICB2ID0gUHlPYmplY3RfR2V0QXR0cihvYmosIG5hbWUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtOTg2LDI1ICsxMDU0LDMxIEBACiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNhdHRyX2RvYywKLSJoYXNhdHRyKG9iamVjdCwgbmFtZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cblwKLShUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iamVjdCwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLikiKTsKIAorLyogQUM6IGdkYidzIGludGVncmF0aW9uIHdpdGggQ1B5dGhvbiByZWxpZXMgb24gYnVpbHRpbl9pZCBoYXZpbmcKKyAqIHRoZSAqZXhhY3QqIHBhcmFtZXRlciBuYW1lcyBvZiAic2VsZiIgYW5kICJ2Iiwgc28gd2UgZW5zdXJlIHdlCisgKiBwcmVzZXJ2ZSB0aG9zZSBuYW1lIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBBQyBkZWZhdWx0cy4KKyAqLworLypbY2xpbmljIGlucHV0XQoraWQgYXMgYnVpbHRpbl9pZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeU1vZHVsZURlZiAqIikKKyAgICBvYmogYXMgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4KKworVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbW9uZyBzaW11bHRhbmVvdXNseSBleGlzdGluZyBvYmplY3RzLgorKENQeXRob24gdXNlcyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2lkKFB5TW9kdWxlRGVmICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYWE2NDA3ODVmNjk3ZjY1IGlucHV0PTVhNTM0MTM2NDE5NjMxZjRdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHYpOwogfQogCi1QeURvY19TVFJWQVIoaWRfZG9jLAotImlkKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4gIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmdcblwKLXNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuICAoSGludDogaXQncyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKSIpOwotCiAKIC8qIG1hcCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMTc3LDYgKzEyNTEsOCBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX25leHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTIxOCw4MyArMTI5NCwxMDAgQEAKIGlzIGV4aGF1c3RlZCwgaXQgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIFN0b3BJdGVyYXRpb24uIik7CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnZhbHVlOworLypbY2xpbmljIGlucHV0XQorc2V0YXR0ciBhcyBidWlsdGluX3NldGF0dHIKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLCAzLCAzLCAmdiwgJm5hbWUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKHYsIG5hbWUsIHZhbHVlKSAhPSAwKQorICAgIG9iajogb2JqZWN0CisgICAgbmFtZTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKworc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2JycKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ODFjNjU1YzBmN2UzNGYgaW5wdXQ9YmQyYjdjYTY4NzVhMTg5OV0qLworeworICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKG9iaiwgbmFtZSwgdmFsdWUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGF0dHJfZG9jLAotInNldGF0dHIob2JqZWN0LCBuYW1lLCB2YWx1ZSlcblwKLVxuXAotU2V0IGEgbmFtZWQgYXR0cmlidXRlIG9uIGFuIG9iamVjdDsgc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG9cblwKLWBgeC55ID0gdicnLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitkZWxhdHRyIGFzIGJ1aWx0aW5fZGVsYXR0cgorCisgICAgb2JqOiBvYmplY3QKKyAgICBuYW1lOiBvYmplY3QKKyAgICAvCisKK0RlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuCisKK2RlbGF0dHIoeCwgJ3knKSBpcyBlcXVpdmFsZW50IHRvIGBgZGVsIHgueScnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2RlbGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9kZWxhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY2NTNlNjk4YTBiNDE4NyBpbnB1dD1kYjE2Njg1ZDZiNGI5NDEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHIodiwgbmFtZSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0cihvYmosIG5hbWUsIChQeU9iamVjdCAqKU5VTEwpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlbGF0dHJfZG9jLAotImRlbGF0dHIob2JqZWN0LCBuYW1lKVxuXAotXG5cCi1EZWxldGUgYSBuYW1lZCBhdHRyaWJ1dGUgb24gYW4gb2JqZWN0OyBkZWxhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0b1xuXAotYGBkZWwgeC55JycuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2ggYXMgYnVpbHRpbl9oYXNoCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LgorCitUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZQorcmV2ZXJzZSBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGFzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2hhc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZjMyZmYxNTRjMWY3NTFhIGlucHV0PTU4YzQ4YmU4MjJiZjljNTRdKi8KIHsKICAgICBQeV9oYXNoX3QgeDsKIAotICAgIHggPSBQeU9iamVjdF9IYXNoKHYpOworICAgIHggPSBQeU9iamVjdF9IYXNoKG9iaik7CiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNoX2RvYywKLSJoYXNoKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYXNoIHZhbHVlIGZvciB0aGUgb2JqZWN0LiAgVHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXZlXG5cCi10aGUgc2FtZSBoYXNoIHZhbHVlLiAgVGhlIHJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUsIGJ1dCBsaWtlbHkuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hleCBhcyBidWlsdGluX2hleAorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KKworICAgPj4+IGhleCgxMjY0ODQzMCkKKyAgICcweGMwZmZlZScKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5faGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpudW1iZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjE4NDg5Y2UzY2JjNTg1OCBpbnB1dD1lNjQ1YWZmNWZjN2Q1NDBlXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZSh2LCAxNik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDE2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGhleF9kb2MsCi0iaGV4KG51bWJlcikgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGhleCgzNzM1OTI4NTU5KVxuXAotICAgJzB4ZGVhZGJlZWYnXG5cCi0iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5faXRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzIxLDI1ICsxNDE0LDQxIEBACiBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjYWxsYWJsZSBpcyBjYWxsZWQgdW50aWwgaXQgcmV0dXJucyB0aGUgc2VudGluZWwuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorbGVuIGFzIGJ1aWx0aW5fbGVuCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBjb250YWluZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2xlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNTgzN2I2ZjgxZDkxNWIgaW5wdXQ9YmM1NTU5OGRhOWU5YzliNV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gUHlPYmplY3RfU2l6ZSh2KTsKKyAgICByZXMgPSBQeU9iamVjdF9TaXplKG9iaik7CiAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIobGVuX2RvYywKLSJsZW4ob2JqZWN0KVxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBvZiBhIHNlcXVlbmNlIG9yIGNvbGxlY3Rpb24uIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2xvY2FscyBhcyBidWlsdGluX2xvY2FscworCitSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuCisKK05PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpbgordGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3QKK2NvdmVyZWQgYnkgYW55IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xvY2FscyhQeU9iamVjdCAqc2VsZikKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjVhNDFmMTJlMTlkMTNhIGlucHV0PTc4NzQwMThkNDc4ZDVjNGJdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtMTM0OCwxMSArMTQ1Nyw2IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihsb2NhbHNfZG9jLAotImxvY2FscygpIC0+IGRpY3Rpb25hcnlcblwKLVxuXAotVXBkYXRlIGFuZCByZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuIik7Ci0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1pbl9tYXgoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgb3ApCkBAIC0xNDU1LDYgKzE1NTksNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0NzEsNiArMTU3Niw3IEBACiBXaXRoIHR3byBvciBtb3JlIGFyZ3VtZW50cywgcmV0dXJuIHRoZSBzbWFsbGVzdCBhcmd1bWVudC4iKTsKIAogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0ODcsNTYgKzE1OTMsNzAgQEAKIFdpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIGxhcmdlc3QgYXJndW1lbnQuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorb2N0IGFzIGJ1aWx0aW5fb2N0CisKKyAgICBudW1iZXI6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLgorCisgICA+Pj4gb2N0KDM0MjM5MSkKKyAgICcwbzEyMzQ1NjcnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX29jdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX29jdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4ZjcwMWJjNmQ4ZjgwNGEgaW5wdXQ9YWQ2YjI3NGFmNDAxNmM3Ml0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgOCk7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDgpOwogfQogCi1QeURvY19TVFJWQVIob2N0X2RvYywKLSJvY3QobnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuXAotXG5cCi0gICA+Pj4gb2N0KDM0MjM5MSlcblwKLSAgICcwbzEyMzQ1NjcnXG5cCi0iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3JkIGFzIGJ1aWx0aW5fb3JkCisKKyAgICBjOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9vcmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBvYmopCitidWlsdGluX29yZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNGZkMjcyNzJkOTQ2MmY2IGlucHV0PTMwNjRlNWQ2MjAzYWQwMTJdKi8KIHsKICAgICBsb25nIG9yZDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYykpIHsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYyk7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlc19BU19TVFJJTkcob2JqKSk7CisgICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZXNfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGMpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihjLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYykpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwotICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGMpOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJvcmQoKSBleHBlY3RlZCBzdHJpbmcgb2YgbGVuZ3RoIDEsIGJ1dCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMgZm91bmQiLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyBmb3VuZCIsIGMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1NDcsMzEgKzE2NjcsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfVkFSKG9yZF9kb2MpID0gUHlEb2NfU1RSKAotIm9yZChjKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiB0aGUgaW50ZWdlciBvcmRpbmFsIG9mIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIgotKTsKIAorLypbY2xpbmljIGlucHV0XQorcG93IGFzIGJ1aWx0aW5fcG93CisKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICB6OiBvYmplY3QgPSBOb25lCisgICAgLworCitFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKQorCitTb21lIHR5cGVzLCBzdWNoIGFzIGludHMsIGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB3aGVuCitpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9wb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9wb3dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmEyNjhhZGJhOWI0NWYgaW5wdXQ9NjUzZDU3ZDM4ZDQxZmMwN10qLwogewotICAgIFB5T2JqZWN0ICp2LCAqdywgKnogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwgMiwgMywgJnYsICZ3LCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU51bWJlcl9Qb3dlcih2LCB3LCB6KTsKKyAgICByZXR1cm4gUHlOdW1iZXJfUG93ZXIoeCwgeSwgeik7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3dfZG9jLAotInBvdyh4LCB5Wywgel0pIC0+IG51bWJlclxuXAotXG5cCi1XaXRoIHR3byBhcmd1bWVudHMsIGVxdWl2YWxlbnQgdG8geCoqeS4gIFdpdGggdGhyZWUgYXJndW1lbnRzLFxuXAotZXF1aXZhbGVudCB0byAoeCoqeSkgJSB6LCBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IChlLmcuIGZvciBpbnRzKS4iKTsKIAotCi0KKy8qIEFDOiBjYW5ub3QgY29udmVydCB5ZXQsIHdhaXRpbmcgZm9yICphcmdzIHN1cHBvcnQgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3ByaW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNjY3LDEwICsxNzg2LDI1IEBACiBmbHVzaDogd2hldGhlciB0byBmb3JjaWJseSBmbHVzaCB0aGUgc3RyZWFtLiIpOwogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2lucHV0IGFzIGJ1aWx0aW5faW5wdXQKKworICAgIHByb21wdDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gTm9uZQorICAgIC8KKworUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuCisKK1RoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbiwgaXMgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQgd2l0aG91dCBhCit0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSByZWFkaW5nIGlucHV0LgorCitJZiB0aGUgdXNlciBoaXRzIEVPRiAoKm5peDogQ3RybC1ELCBXaW5kb3dzOiBDdHJsLVorUmV0dXJuKSwgcmFpc2UgRU9GRXJyb3IuCitPbiAqbml4IHN5c3RlbXMsIHJlYWRsaW5lIGlzIHVzZWQgaWYgYXZhaWxhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pbnB1dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNzc3MzFmNTllMTUxNWM0IGlucHV0PTVlOGJiNzBjMjkwOGZlM2NdKi8KIHsKLSAgICBQeU9iamVjdCAqcHJvbXB0YXJnID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGluKTsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CkBAIC0xNjc4LDEwICsxODEyLDYgQEAKICAgICBsb25nIGZkOwogICAgIGludCB0dHk7CiAKLSAgICAvKiBQYXJzZSBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsIDAsIDEsICZwcm9tcHRhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIENoZWNrIHRoYXQgc3RkaW4vb3V0L2VyciBhcmUgaW50YWN0ICovCiAgICAgaWYgKGZpbiA9PSBOVUxMIHx8IGZpbiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNzM3LDcgKzE4NjcsNyBAQAogICAgIC8qIElmIHdlJ3JlIGludGVyYWN0aXZlLCB1c2UgKEdOVSkgcmVhZGxpbmUgKi8KICAgICBpZiAodHR5KSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgICAgIGNoYXIgKnByb21wdDsKKyAgICAgICAgY2hhciAqcHJvbXB0c3RyOwogICAgICAgICBjaGFyICpzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnN0ZGluX2VuY29kaW5nID0gTlVMTCwgKnN0ZGluX2Vycm9ycyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpzdGRvdXRfZW5jb2RpbmcgPSBOVUxMLCAqc3Rkb3V0X2Vycm9ycyA9IE5VTEw7CkBAIC0xNzYwLDcgKzE4OTAsNyBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIGlmIChwcm9tcHRhcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKQEAgLTE3NzIsNyArMTkwMiw3IEBACiAgICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZ19zdHIgfHwgIXN0ZG91dF9lcnJvcnNfc3RyKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHN0cmluZ3BvID0gUHlPYmplY3RfU3RyKHByb21wdGFyZyk7CisgICAgICAgICAgICBzdHJpbmdwbyA9IFB5T2JqZWN0X1N0cihwcm9tcHQpOwogICAgICAgICAgICAgaWYgKHN0cmluZ3BvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwogICAgICAgICAgICAgcG8gPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0cmluZ3BvLApAQCAtMTc4MiwxNSArMTkxMiwxNSBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0ID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0ID09IE5VTEwpCisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBvKTsKKyAgICAgICAgICAgIGlmIChwcm9tcHRzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7Ci0gICAgICAgICAgICBwcm9tcHQgPSAiIjsKKyAgICAgICAgICAgIHByb21wdHN0ciA9ICIiOwogICAgICAgICB9Ci0gICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdCk7CisgICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdHN0cik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTgzMiw4ICsxOTYyLDggQEAKICAgICB9CiAKICAgICAvKiBGYWxsYmFjayBpZiB3ZSdyZSBub3QgaW50ZXJhY3RpdmUgKi8KLSAgICBpZiAocHJvbXB0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKKyAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHQsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xODQ0LDI4ICsxOTc0LDI5IEBACiAgICAgcmV0dXJuIFB5RmlsZV9HZXRMaW5lKGZpbiwgLTEpOwogfQogCi1QeURvY19TVFJWQVIoaW5wdXRfZG9jLAotImlucHV0KFtwcm9tcHRdKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuXG5cCi1JZiB0aGUgdXNlciBoaXRzIEVPRiAoVW5peDogQ3RsLUQsIFdpbmRvd3M6IEN0bC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuXAotT24gVW5peCwgR05VIHJlYWRsaW5lIGlzIHVzZWQgaWYgZW5hYmxlZC4gIFRoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbixcblwKLWlzIHByaW50ZWQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3JlcHIgYXMgYnVpbHRpbl9yZXByCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKK0ZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX3JlcHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9yZXByKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGM0MTc4NGZhNDM0MTgzNCBpbnB1dD0xYzllNmQ2NmQzZTNiZTA0XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIodik7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlcHJfZG9jLAotInJlcHIob2JqZWN0KSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG5cCi1Gb3IgbW9zdCBvYmplY3QgdHlwZXMsIGV2YWwocmVwcihvYmplY3QpKSA9PSBvYmplY3QuIik7CiAKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QKKyAqICAgICBvciBhIHNlbWFudGljIGNoYW5nZSB0byBhY2NlcHQgTm9uZSBmb3IgIm5kaWdpdHMiCisgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3JvdW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xOTA3LDYgKzIwMzgsMzUgQEAKIHNhbWUgdHlwZSBhcyB0aGUgbnVtYmVyLiBuZGlnaXRzIG1heSBiZSBuZWdhdGl2ZS4iKTsKIAogCisvKkFDOiB3ZSBuZWVkIHRvIGtlZXAgdGhlIGt3ZHMgZGljdCBpbnRhY3QgdG8gZWFzaWx5IGNhbGwgaW50byB0aGUKKyAqIGxpc3Quc29ydCBtZXRob2QsIHdoaWNoIGlzbid0IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gQUMuIFNvIHdlIGp1c3QgdXNlCisgKiB0aGUgaW5pdGlhbGx5IGdlbmVyYXRlZCBzaWduYXR1cmUgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4KKyAqLworLyogW2Rpc2FibGVkIGNsaW5pYyBpbnB1dF0KK3NvcnRlZCBhcyBidWlsdGluX3NvcnRlZAorCisgICAgaXRlcmFibGUgYXMgc2VxOiBvYmplY3QKKyAgICBrZXkgYXMga2V5ZnVuYzogb2JqZWN0ID0gTm9uZQorICAgIHJldmVyc2U6IG9iamVjdCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgYWxsIGl0ZW1zIGZyb20gdGhlIGl0ZXJhYmxlIGluIGFzY2VuZGluZyBvcmRlci4KKworQSBjdXN0b20ga2V5IGZ1bmN0aW9uIGNhbiBiZSBzdXBwbGllZCB0byBjdXN0b21pc2UgdGhlIHNvcnQgb3JkZXIsIGFuZCB0aGUKK3JldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHJlc3VsdCBpbiBkZXNjZW5kaW5nIG9yZGVyLgorW2VuZCBkaXNhYmxlZCBjbGluaWMgaW5wdXRdKi8KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc29ydGVkX19kb2NfXywKKyJzb3J0ZWQoJG1vZHVsZSwgaXRlcmFibGUsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IGxpc3QgY29udGFpbmluZyBhbGwgaXRlbXMgZnJvbSB0aGUgaXRlcmFibGUgaW4gYXNjZW5kaW5nIG9yZGVyLlxuIgorIlxuIgorIkEgY3VzdG9tIGtleSBmdW5jdGlvbiBjYW4gYmUgc3VwcGxpZWQgdG8gY3VzdG9taXNlIHRoZSBzb3J0IG9yZGVyLCBhbmQgdGhlXG4iCisicmV2ZXJzZSBmbGFnIGNhbiBiZSBzZXQgdG8gcmVxdWVzdCB0aGUgcmVzdWx0IGluIGRlc2NlbmRpbmcgb3JkZXIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGICAgIFwKKyAgICB7InNvcnRlZCIsIChQeUNGdW5jdGlvbilidWlsdGluX3NvcnRlZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fc29ydGVkX19kb2NfX30sCisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3NvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTk0OCw5ICsyMTA4LDggQEAKICAgICByZXR1cm4gbmV3bGlzdDsKIH0KIAotUHlEb2NfU1RSVkFSKHNvcnRlZF9kb2MsCi0ic29ydGVkKGl0ZXJhYmxlLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLS0+IG5ldyBzb3J0ZWQgbGlzdCIpOwogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fdmFycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTgyLDE3ICsyMTQxLDI5IEBACiBXaXRob3V0IGFyZ3VtZW50cywgZXF1aXZhbGVudCB0byBsb2NhbHMoKS5cblwKIFdpdGggYW4gYXJndW1lbnQsIGVxdWl2YWxlbnQgdG8gb2JqZWN0Ll9fZGljdF9fLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1idWlsdGluX3N1bShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3N1bSBhcyBidWlsdGluX3N1bQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIHN0YXJ0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gdGhlIHN1bSBvZiBhICdzdGFydCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVycworCitXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS4KK1RoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5CityZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnN0YXJ0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMzNjU1YjI0OGIyMWQ1ODEgaW5wdXQ9M2I1YjdhOWQ3NjExYzczYV0qLwogewotICAgIFB5T2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IHN0YXJ0OwogICAgIFB5T2JqZWN0ICp0ZW1wLCAqaXRlbSwgKml0ZXI7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLCAxLCAyLCAmc2VxLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjAyMiw3ICsyMTkzLDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yMTQ4LDYyICsyMzE4LDYyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHN1bV9kb2MsCi0ic3VtKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiB2YWx1ZVxuXAotXG5cCi1SZXR1cm4gdGhlIHN1bSBvZiBhbiBpdGVyYWJsZSBvZiBudW1iZXJzIChOT1Qgc3RyaW5ncykgcGx1cyB0aGUgdmFsdWVcblwKLW9mIHBhcmFtZXRlciAnc3RhcnQnICh3aGljaCBkZWZhdWx0cyB0byAwKS4gIFdoZW4gdGhlIGl0ZXJhYmxlIGlzXG5cCi1lbXB0eSwgcmV0dXJuIHN0YXJ0LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitpc2luc3RhbmNlIGFzIGJ1aWx0aW5faXNpbnN0YW5jZQorCisgICAgb2JqOiBvYmplY3QKKyAgICBjbGFzc19vcl90dXBsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuCisKK0EgdHVwbGUsIGFzIGluIGBgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG8KK2NoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKQorb3IgLi4uYGAgZXRjLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pc2luc3RhbmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5faXNpbnN0YW5jZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjk2MGI3YzEyZGJiZWRhMCBpbnB1dD1mZmE3NDNkYjFkYWY3NTQ5XSovCiB7Ci0gICAgUHlPYmplY3QgKmluc3Q7Ci0gICAgUHlPYmplY3QgKmNsczsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsIDIsIDIsICZpbnN0LCAmY2xzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGluc3QsIGNscyk7CisgICAgcmV0dmFsID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIGNsYXNzX29yX3R1cGxlKTsKICAgICBpZiAocmV0dmFsIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXR2YWwpOwogfQogCi1QeURvY19TVFJWQVIoaXNpbnN0YW5jZV9kb2MsCi0iaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzLW9yLXR5cGUtb3ItdHVwbGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgb3Igb2YgYSBzdWJjbGFzcyB0aGVyZW9mLlxuXAotV2l0aCBhIHR5cGUgYXMgc2Vjb25kIGFyZ3VtZW50LCByZXR1cm4gd2hldGhlciB0aGF0IGlzIHRoZSBvYmplY3QncyB0eXBlLlxuXAotVGhlIGZvcm0gdXNpbmcgYSB0dXBsZSwgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSksIGlzIGEgc2hvcnRjdXQgZm9yXG5cCi1pc2luc3RhbmNlKHgsIEEpIG9yIGlzaW5zdGFuY2UoeCwgQikgb3IgLi4uIChldGMuKS4iKTsKIAorLypbY2xpbmljIGlucHV0XQoraXNzdWJjbGFzcyBhcyBidWlsdGluX2lzc3ViY2xhc3MKKworICAgIGNsczogb2JqZWN0CisgICAgY2xhc3Nfb3JfdHVwbGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgJ2NscycgaXMgYSBkZXJpdmVkIGZyb20gYW5vdGhlciBjbGFzcyBvciBpcyB0aGUgc2FtZSBjbGFzcy4KKworQSB0dXBsZSwgYXMgaW4gYGBpc3N1YmNsYXNzKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0bworY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNzdWJjbGFzcyh4LCBBKSBvciBpc3N1YmNsYXNzKHgsIEIpCitvciAuLi5gYCBldGMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2lzc3ViY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNscywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjAxMmExNTE5NDBiYmYyIGlucHV0PWFmNWYzNWU5Y2VhZGRhZjZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVyaXZlZDsKLSAgICBQeU9iamVjdCAqY2xzOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwgMiwgMiwgJmRlcml2ZWQsICZjbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICByZXR2YWwgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGNscywgY2xhc3Nfb3JfdHVwbGUpOwogICAgIGlmIChyZXR2YWwgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldHZhbCk7CiB9CiAKLVB5RG9jX1NUUlZBUihpc3N1YmNsYXNzX2RvYywKLSJpc3N1YmNsYXNzKEMsIEIpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgY2xhc3MgQyBpcyBhIHN1YmNsYXNzIChpLmUuLCBhIGRlcml2ZWQgY2xhc3MpIG9mIGNsYXNzIEIuXG5cCi1XaGVuIHVzaW5nIGEgdHVwbGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBpc3N1YmNsYXNzKFgsIChBLCBCLCAuLi4pKSxcblwKLWlzIGEgc2hvcnRjdXQgZm9yIGlzc3ViY2xhc3MoWCwgQSkgb3IgaXNzdWJjbGFzcyhYLCBCKSBvciAuLi4gKGV0Yy4pLiIpOwotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0yMzk4LDQ0ICsyNTY4LDQ0IEBACiAgICAgeyJfX2J1aWxkX2NsYXNzX18iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18sCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGJ1aWxkX2NsYXNzX2RvY30sCiAgICAgeyJfX2ltcG9ydF9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2ltcG9ydF9fLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBpbXBvcnRfZG9jfSwKLSAgICB7ImFicyIsICAgICAgICAgICAgIGJ1aWx0aW5fYWJzLCAgICAgICAgTUVUSF9PLCBhYnNfZG9jfSwKLSAgICB7ImFsbCIsICAgICAgICAgICAgIGJ1aWx0aW5fYWxsLCAgICAgICAgTUVUSF9PLCBhbGxfZG9jfSwKLSAgICB7ImFueSIsICAgICAgICAgICAgIGJ1aWx0aW5fYW55LCAgICAgICAgTUVUSF9PLCBhbnlfZG9jfSwKLSAgICB7ImFzY2lpIiwgICAgICAgICAgIGJ1aWx0aW5fYXNjaWksICAgICAgTUVUSF9PLCBhc2NpaV9kb2N9LAotICAgIHsiYmluIiwgICAgICAgICAgICAgYnVpbHRpbl9iaW4sICAgICAgICBNRVRIX08sIGJpbl9kb2N9LAotICAgIHsiY2FsbGFibGUiLCAgICAgICAgYnVpbHRpbl9jYWxsYWJsZSwgICBNRVRIX08sIGNhbGxhYmxlX2RvY30sCi0gICAgeyJjaHIiLCAgICAgICAgICAgICBidWlsdGluX2NociwgICAgICAgIE1FVEhfVkFSQVJHUywgY2hyX2RvY30sCi0gICAgeyJjb21waWxlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBjb21waWxlX2RvY30sCi0gICAgeyJkZWxhdHRyIiwgICAgICAgICBidWlsdGluX2RlbGF0dHIsICAgIE1FVEhfVkFSQVJHUywgZGVsYXR0cl9kb2N9LAorICAgIEJVSUxUSU5fQUJTX01FVEhPRERFRgorICAgIEJVSUxUSU5fQUxMX01FVEhPRERFRgorICAgIEJVSUxUSU5fQU5ZX01FVEhPRERFRgorICAgIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGCisgICAgQlVJTFRJTl9CSU5fTUVUSE9EREVGCisgICAgQlVJTFRJTl9DQUxMQUJMRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NIUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGCisgICAgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRgogICAgIHsiZGlyIiwgICAgICAgICAgICAgYnVpbHRpbl9kaXIsICAgICAgICBNRVRIX1ZBUkFSR1MsIGRpcl9kb2N9LAotICAgIHsiZGl2bW9kIiwgICAgICAgICAgYnVpbHRpbl9kaXZtb2QsICAgICBNRVRIX1ZBUkFSR1MsIGRpdm1vZF9kb2N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgYnVpbHRpbl9ldmFsLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV2YWxfZG9jfSwKLSAgICB7ImV4ZWMiLCAgICAgICAgYnVpbHRpbl9leGVjLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV4ZWNfZG9jfSwKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIGJ1aWx0aW5fZm9ybWF0LCAgICAgTUVUSF9WQVJBUkdTLCBmb3JtYXRfZG9jfSwKKyAgICBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0VWQUxfTUVUSE9EREVGCisgICAgQlVJTFRJTl9FWEVDX01FVEhPRERFRgorICAgIEJVSUxUSU5fRk9STUFUX01FVEhPRERFRgogICAgIHsiZ2V0YXR0ciIsICAgICAgICAgYnVpbHRpbl9nZXRhdHRyLCAgICBNRVRIX1ZBUkFSR1MsIGdldGF0dHJfZG9jfSwKLSAgICB7Imdsb2JhbHMiLCAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsICAgIE1FVEhfTk9BUkdTLCBnbG9iYWxzX2RvY30sCi0gICAgeyJoYXNhdHRyIiwgICAgICAgICBidWlsdGluX2hhc2F0dHIsICAgIE1FVEhfVkFSQVJHUywgaGFzYXR0cl9kb2N9LAotICAgIHsiaGFzaCIsICAgICAgICAgICAgYnVpbHRpbl9oYXNoLCAgICAgICBNRVRIX08sIGhhc2hfZG9jfSwKLSAgICB7ImhleCIsICAgICAgICAgICAgIGJ1aWx0aW5faGV4LCAgICAgICAgTUVUSF9PLCBoZXhfZG9jfSwKLSAgICB7ImlkIiwgICAgICAgICAgICAgIGJ1aWx0aW5faWQsICAgICAgICAgTUVUSF9PLCBpZF9kb2N9LAotICAgIHsiaW5wdXQiLCAgICAgICAgICAgYnVpbHRpbl9pbnB1dCwgICAgICBNRVRIX1ZBUkFSR1MsIGlucHV0X2RvY30sCi0gICAgeyJpc2luc3RhbmNlIiwgIGJ1aWx0aW5faXNpbnN0YW5jZSwgTUVUSF9WQVJBUkdTLCBpc2luc3RhbmNlX2RvY30sCi0gICAgeyJpc3N1YmNsYXNzIiwgIGJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBpc3N1YmNsYXNzX2RvY30sCisgICAgQlVJTFRJTl9HTE9CQUxTX01FVEhPRERFRgorICAgIEJVSUxUSU5fSEFTQVRUUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0hBU0hfTUVUSE9EREVGCisgICAgQlVJTFRJTl9IRVhfTUVUSE9EREVGCisgICAgQlVJTFRJTl9JRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lOUFVUX01FVEhPRERFRgorICAgIEJVSUxUSU5fSVNJTlNUQU5DRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lTU1VCQ0xBU1NfTUVUSE9EREVGCiAgICAgeyJpdGVyIiwgICAgICAgICAgICBidWlsdGluX2l0ZXIsICAgICAgIE1FVEhfVkFSQVJHUywgaXRlcl9kb2N9LAotICAgIHsibGVuIiwgICAgICAgICAgICAgYnVpbHRpbl9sZW4sICAgICAgICBNRVRIX08sIGxlbl9kb2N9LAotICAgIHsibG9jYWxzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCAgICAgTUVUSF9OT0FSR1MsIGxvY2Fsc19kb2N9LAorICAgIEJVSUxUSU5fTEVOX01FVEhPRERFRgorICAgIEJVSUxUSU5fTE9DQUxTX01FVEhPRERFRgogICAgIHsibWF4IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbWF4LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgbWF4X2RvY30sCiAgICAgeyJtaW4iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9taW4sICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBtaW5fZG9jfSwKICAgICB7Im5leHQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX25leHQsICAgICAgIE1FVEhfVkFSQVJHUywgbmV4dF9kb2N9LAotICAgIHsib2N0IiwgICAgICAgICAgICAgYnVpbHRpbl9vY3QsICAgICAgICBNRVRIX08sIG9jdF9kb2N9LAotICAgIHsib3JkIiwgICAgICAgICAgICAgYnVpbHRpbl9vcmQsICAgICAgICBNRVRIX08sIG9yZF9kb2N9LAotICAgIHsicG93IiwgICAgICAgICAgICAgYnVpbHRpbl9wb3csICAgICAgICBNRVRIX1ZBUkFSR1MsIHBvd19kb2N9LAorICAgIEJVSUxUSU5fT0NUX01FVEhPRERFRgorICAgIEJVSUxUSU5fT1JEX01FVEhPRERFRgorICAgIEJVSUxUSU5fUE9XX01FVEhPRERFRgogICAgIHsicHJpbnQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcHJpbnQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcHJpbnRfZG9jfSwKLSAgICB7InJlcHIiLCAgICAgICAgICAgIGJ1aWx0aW5fcmVwciwgICAgICAgTUVUSF9PLCByZXByX2RvY30sCisgICAgQlVJTFRJTl9SRVBSX01FVEhPRERFRgogICAgIHsicm91bmQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcm91bmQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcm91bmRfZG9jfSwKLSAgICB7InNldGF0dHIiLCAgICAgICAgIGJ1aWx0aW5fc2V0YXR0ciwgICAgTUVUSF9WQVJBUkdTLCBzZXRhdHRyX2RvY30sCi0gICAgeyJzb3J0ZWQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zb3J0ZWQsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzb3J0ZWRfZG9jfSwKLSAgICB7InN1bSIsICAgICAgICAgICAgIGJ1aWx0aW5fc3VtLCAgICAgICAgTUVUSF9WQVJBUkdTLCBzdW1fZG9jfSwKKyAgICBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TVU1fTUVUSE9EREVGCiAgICAgeyJ2YXJzIiwgICAgICAgICAgICBidWlsdGluX3ZhcnMsICAgICAgIE1FVEhfVkFSQVJHUywgdmFyc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA3NjU2YjhlLi42NDFmOWRiIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTIsOCArMTIsMTAgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0xNTA0LDYgKzE1MDYsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQklOQVJZX01BVFJJWF9NVUxUSVBMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQklOQVJZX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xNjk0LDYgKzE3MDgsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChJTlBMQUNFX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xOTAwLDExICsxOTI2LDEzMyBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChHRVRfQUlURVIpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmF3YWl0YWJsZSA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gVE9QKCk7CisgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKG9iaik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9haXRlcjsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaXRlciA9ICgqZ2V0dGVyKShvYmopOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gb2JqZWN0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19haXRlcl9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUdlbl9HZXRBd2FpdGFibGVJdGVyKGl0ZXIpOworICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgU0VUX1RPUChOVUxMKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgImZyb20gX19haXRlcl9fOiAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZXIpLT50cF9uYW1lKTsKKworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworCisgICAgICAgICAgICBTRVRfVE9QKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEdFVF9BTkVYVCkgeworICAgICAgICAgICAgdW5hcnlmdW5jIGdldHRlciA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV4dF9pdGVyID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphd2FpdGFibGUgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmFpdGVyID0gVE9QKCk7CisgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKGFpdGVyKTsKKworICAgICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX2FzeW5jICE9IE5VTEwpCisgICAgICAgICAgICAgICAgZ2V0dGVyID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0OworCisgICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBuZXh0X2l0ZXIgPSAoKmdldHRlcikoYWl0ZXIpOworICAgICAgICAgICAgICAgIGlmIChuZXh0X2l0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICJfX2FuZXh0X18gbWV0aG9kLCBnb3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5R2VuX0dldEF3YWl0YWJsZUl0ZXIobmV4dF9pdGVyKTsKKyAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV4dF9pdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisKKyAgICAgICAgICAgIFBVU0goYXdhaXRhYmxlKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoR0VUX0FXQUlUQUJMRSkgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IF9QeUdlbl9HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsgLyogRXZlbiBpZiBpdCdzIE5VTEwgKi8KKworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSkgeworICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgKCgoUHlDb2RlT2JqZWN0KikgXAorICAgICAgICAgICAgICAgICAgICAgICAgKChQeUdlbk9iamVjdCopcmVjaWV2ZXIpLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19DT1JPVVRJTkUpCisgICAgICAgICAgICAgICAgICAgICYmICEoY28tPmNvX2ZsYWdzICYgKENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogSWYgd2UncmUgeWllbGRpbmctZnJvbSBhIGNvcm91dGluZSBvYmplY3QgZnJvbSBhIHJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yIG9iamVjdCAtIHJhaXNlIGFuIGVycm9yLiAqLworCisgICAgICAgICAgICAgICAgICAgIFB5X0NMRUFSKHYpOworICAgICAgICAgICAgICAgICAgICBQeV9DTEVBUihyZWNpZXZlcik7CisgICAgICAgICAgICAgICAgICAgIFNFVF9UT1AoTlVMTCk7CisKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgJ3lpZWxkIGZyb20nIGEgY29yb3V0aW5lIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBhIGdlbmVyYXRvciIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKilyZWNpZXZlciwgdik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNlbmQpOwpAQCAtMjM1NSw2ICsyNTAzLDQzIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9UVVBMRV9VTlBBQ0ssIF9idWlsZF9saXN0X3VucGFjaykKKyAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKQorICAgICAgICBfYnVpbGRfbGlzdF91bnBhY2s6IHsKKyAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlID09IEJVSUxEX1RVUExFX1VOUEFDSzsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vbmVfdmFsOworCisgICAgICAgICAgICAgICAgbm9uZV92YWwgPSBfUHlMaXN0X0V4dGVuZCgoUHlMaXN0T2JqZWN0ICopc3VtLCBQRUVLKGkpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9uZV92YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5vbmVfdmFsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnZlcnRfdG9fdHVwbGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUxpc3RfQXNUdXBsZShzdW0pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgIGlmIChyZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHN1bTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0gocmV0dXJuX3ZhbHVlKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfU0VUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2V0ID0gUHlTZXRfTmV3KE5VTEwpOwogICAgICAgICAgICAgaW50IGVyciA9IDA7CkBAIC0yMzc0LDI2ICsyNTU5LDEyNCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChCVUlMRF9TRVRfVU5QQUNLKSB7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeVNldF9OZXcoTlVMTCk7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5U2V0X1VwZGF0ZShzdW0sIFBFRUsoaSkpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICBQVVNIKHN1bSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOwogICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB3aGlsZSAoLS1vcGFyZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBUT1AoKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gU0VDT05EKCk7CisgICAgICAgICAgICAgICAgU1RBQ0tBREooLTIpOworICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKG1hcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChtYXApOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9NQVApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFNFQ09ORCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IFRISVJEKCk7Ci0gICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG1hcCkpOwotICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQorICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogeworICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKKyAgICAgICAgICAgIGludCBudW1fbWFwczsKKyAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbjsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgeworICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSBudW1fbWFwczsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKHN1bSwgYXJnKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjY0NiwxMSArMjkyOSwyNiBAQAogICAgICAgICBUQVJHRVQoR0VUX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW29ial07IGFmdGVyIFtnZXRpdGVyKG9iaildICovCiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOwotICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsKLSAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyOworICAgICAgICAgICAgLyogSWYgd2UgaGF2ZSBhIGdlbmVyYXRvciBvYmplY3Qgb24gdG9wIC0tIGtlZXAgaXQgdGhlcmUsCisgICAgICAgICAgICAgICBpdCdzIGFscmVhZHkgYW4gaXRlcmF0b3IuCisKKyAgICAgICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIHRvIGFsbG93IHVzZSBvZiAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCisgICAgICAgICAgICAgICBpbiAneWllbGQgZnJvbScgZXhwcmVzc2lvbiBmcm9tIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzCisgICAgICAgICAgICAgICAoZGVjb3JhdGVkIHdpdGggdHlwZXMuY29yb3V0aW5lKCkpLgorCisgICAgICAgICAgICAgICAneWllbGQgZnJvbScgaXMgY29tcGlsZWQgdG8gR0VUX0lURVIuLllJRUxEX0ZST00gY29tYmluYXRpb24sCisgICAgICAgICAgICAgICBidXQgc2luY2UgY29yb3V0aW5lcyByYWlzZSBUeXBlRXJyb3IgaW4gdGhlaXIgJ3RwX2l0ZXInIHdlCisgICAgICAgICAgICAgICBuZWVkIGEgd2F5IGZvciB0aGVtIHRvICJwYXNzIHRocm91Z2giIHRoZSBHRVRfSVRFUi4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIVB5R2VuX0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7CisgICAgICAgICAgICAgICAgLyogYGl0ZXJhYmxlYCBpcyBub3QgYSBnZW5lcmF0b3IuICovCisgICAgICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUFJFRElDVChGT1JfSVRFUik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CkBAIC0yNzA3LDYgKzMwMDUsMzkgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQkVGT1JFX0FTWU5DX1dJVEgpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWV4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2FlbnRlcl9fKTsKKworICAgICAgICAgICAgUHlPYmplY3QgKm1nciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fYWV4aXRfXyksCisgICAgICAgICAgICAgICAgICAgICAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgaWYgKGV4aXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIGVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2FlbnRlcl9fKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOworICAgICAgICAgICAgaWYgKGVudGVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZW50ZXIsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGVudGVyKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChTRVRVUF9BU1lOQ19XSVRIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICAvKiBTZXR1cCB0aGUgZmluYWxseSBibG9jayBiZWZvcmUgcHVzaGluZyB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICBvZiBfX2FlbnRlcl9fIG9uIHRoZSBzdGFjay4gKi8KKyAgICAgICAgICAgIFB5RnJhbWVfQmxvY2tTZXR1cChmLCBTRVRVUF9GSU5BTExZLCBJTlNUUl9PRkZTRVQoKSArIG9wYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX0xFVkVMKCkpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwpAQCAtMjczMyw3ICszMDY0LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoV0lUSF9DTEVBTlVQKSB7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfU1RBUlQpIHsKICAgICAgICAgICAgIC8qIEF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFyZSAxLTYgdmFsdWVzIGluZGljYXRpbmcKICAgICAgICAgICAgICAgIGhvdy93aHkgd2UgZW50ZXJlZCB0aGUgZmluYWxseSBjbGF1c2U6CiAgICAgICAgICAgICAgICAtIFRPUCA9IE5vbmUKQEAgLTI3NjEsNyArMzA5Miw2IEBACiAKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGl0X2Z1bmM7CiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gVE9QKCksICp2YWwgPSBQeV9Ob25lLCAqdGIgPSBQeV9Ob25lLCAqcmVzOwotICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIGlmIChleGMgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgICh2b2lkKVBPUCgpOwogICAgICAgICAgICAgICAgIGV4aXRfZnVuYyA9IFRPUCgpOwpAQCAtMjgxMSwxMSArMzE0MSwyNiBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyAgICAgICAgICAgIFB5X0lOQ1JFRihleGMpOyAvKiBEdXBsaWNhdGluZyB0aGUgZXhjZXB0aW9uIG9uIHRoZSBzdGFjayAqLworICAgICAgICAgICAgUFVTSChleGMpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChXSVRIX0NMRUFOVVBfRklOSVNIKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBQUkVESUNURUQoV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfRklOSVNIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworCiAgICAgICAgICAgICBpZiAoZXhjICE9IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKKwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKIAogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMwMjYsNiArMzM3MSw3IEBACiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCisKICNpZiBVU0VfQ09NUFVURURfR09UT1MKICAgICAgICAgX3Vua25vd25fb3Bjb2RlOgogI2VuZGlmCkBAIC0zMTY4LDggKzM1MTQsNyBAQAogICAgIGlmICh3aHkgIT0gV0hZX1JFVFVSTikKICAgICAgICAgcmV0dmFsID0gTlVMTDsKIAotICAgIGFzc2VydCgocmV0dmFsICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICB8fCAocmV0dmFsID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOworICAgIGFzc2VydCgocmV0dmFsICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOwogCiBmYXN0X3lpZWxkOgogICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19HRU5FUkFUT1IpIHsKQEAgLTMyMzAsNyArMzU3NSw3IEBACiAgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogICAgIHRzdGF0ZS0+ZnJhbWUgPSBmLT5mX2JhY2s7CiAKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChOVUxMLCByZXR2YWwsICJQeUV2YWxfRXZhbEZyYW1lRXgiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzODcsMTAgKzM3MzIsMTEgQEAKICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCiAKLVB5T2JqZWN0ICoKLVB5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKICAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKLSAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwpAQCAtMzU3NCw2ICszOTIwLDIwIEBACiAgICAgfQogCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgICAgICBQeU9iamVjdCAqZ2VuOworICAgICAgICBQeU9iamVjdCAqY29yb193cmFwcGVyID0gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKKyAgICAgICAgaW50IGlzX2Nvcm8gPSBjby0+Y29fZmxhZ3MgJiAoQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKTsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyKSB7CisgICAgICAgICAgICBhc3NlcnQoY29yb193cmFwcGVyICE9IE5VTEwpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIgJS4yMDBSIGF0dGVtcHRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHJlY3Vyc2l2ZWx5IHdyYXAgJS4yMDBSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3dyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKICAgICAgICAgLyogRG9uJ3QgbmVlZCB0byBrZWVwIHRoZSByZWZlcmVuY2UgdG8gZl9iYWNrLCBpdCB3aWxsIGJlIHNldAogICAgICAgICAgKiB3aGVuIHRoZSBnZW5lcmF0b3IgaXMgcmVzdW1lZC4gKi8KICAgICAgICAgUHlfQ0xFQVIoZi0+Zl9iYWNrKTsKQEAgLTM1ODIsNyArMzk0MiwxOSBAQAogCiAgICAgICAgIC8qIENyZWF0ZSBhIG5ldyBnZW5lcmF0b3IgdGhhdCBvd25zIHRoZSByZWFkeSB0byBydW4gZnJhbWUKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5R2VuX05ldyhmKTsKKyAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICAgICAgaWYgKGdlbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKGlzX2Nvcm8gJiYgY29yb193cmFwcGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp3cmFwcGVkOworICAgICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDE7CisgICAgICAgICAgICB3cmFwcGVkID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNvcm9fd3JhcHBlciwgIk4iLCBnZW4pOworICAgICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisgICAgICAgICAgICByZXR1cm4gd3JhcHBlZDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnZW47CiAgICAgfQogCiAgICAgcmV0dmFsID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7CkBAIC0zNjAxLDYgKzM5NzMsMTYgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitQeU9iamVjdCAqCitQeUV2YWxfRXZhbENvZGVFeChQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKKyAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQoreworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoX2NvLCBnbG9iYWxzLCBsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwga3dzLCBrd2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsIGt3ZGVmcywgY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICppZCkKQEAgLTM3OTEsOSArNDE3MywxNyBAQAogICAgICAgICBpZiAodyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBJdGVyYXRvciBkb25lLCB2aWEgZXJyb3Igb3IgZXhoYXVzdGlvbi4gKi8KICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAibmVlZCBtb3JlIHRoYW4gJWQgdmFsdWUlcyB0byB1bnBhY2siLAotICAgICAgICAgICAgICAgICAgICBpLCBpID09IDEgPyAiIiA6ICJzIik7CisgICAgICAgICAgICAgICAgaWYgKGFyZ2NudGFmdGVyID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgJWQsIGdvdCAlZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnY250LCBpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKGV4cGVjdGVkIGF0IGxlYXN0ICVkLCBnb3QgJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2NudCArIGFyZ2NudGFmdGVyLCBpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIEVycm9yOwogICAgICAgICB9CkBAIC0zODEwLDggKzQyMDAsOSBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgIgotICAgICAgICAgICAgICAgICAgICAgIihleHBlY3RlZCAlZCkiLCBhcmdjbnQpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJ0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAlZCkiLAorICAgICAgICAgICAgYXJnY250KTsKICAgICAgICAgZ290byBFcnJvcjsKICAgICB9CiAKQEAgLTM4MjMsOCArNDIxNCw5IEBACiAKICAgICBsbCA9IFB5TGlzdF9HRVRfU0laRShsKTsKICAgICBpZiAobGwgPCBhcmdjbnRhZnRlcikgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm5lZWQgbW9yZSB0aGFuICV6ZCB2YWx1ZXMgdG8gdW5wYWNrIiwKLSAgICAgICAgICAgICAgICAgICAgIGFyZ2NudCArIGxsKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCBhdCBsZWFzdCAlZCwgZ290ICV6ZCkiLAorICAgICAgICAgICAgYXJnY250ICsgYXJnY250YWZ0ZXIsIGFyZ2NudCArIGxsKTsKICAgICAgICAgZ290byBFcnJvcjsKICAgICB9CiAKQEAgLTQwMDgsNiArNDQwMCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHRzdGF0ZS0+Y19wcm9maWxlZnVuYyAhPSBOVUxMKSk7CiB9CiAKK3ZvaWQKK19QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihQeU9iamVjdCAqd3JhcHBlcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CisKKyAgICBQeV9YSU5DUkVGKHdyYXBwZXIpOworICAgIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXIgPSB3cmFwcGVyOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOworfQorCiBQeU9iamVjdCAqCiBQeUV2YWxfR2V0QnVpbHRpbnModm9pZCkKIHsKQEAgLTQwODYsOCArNDQ5Niw4IEBACiAKICNpZmRlZiBQeV9ERUJVRwogICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCi0gICAgICAgc2V0LCBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKLSAgICAgICBhbmQgc28gdGhlIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgICAgIHNldC4gSXQgcmFpc2VzIGEgbmV3IGV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIG9yIGlmCisgICAgICAgUHlUdXBsZV9OZXcoKSBmYWlscywgYW5kIHNvIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXMgbG9zdC4gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKQEAgLTQxMTQsOCArNDUyNCw2IEBACiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmcsIGt3KTsKICAgICBQeV9ERUNSRUYoYXJnKTsKIAotICAgIGFzc2VydCgocmVzdWx0ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8IChyZXN1bHQgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDIxOCwxMSArNDYyNiwxNSBAQAogICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKICAgICAgICAgICAgIGlmIChmbGFncyAmIE1FVEhfTk9BUkdTICYmIG5hID09IDApIHsKICAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixOVUxMKSk7CisKKyAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIE1FVEhfTyAmJiBuYSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKICAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixhcmcpKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnKTsKKworICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVycl9hcmdzKGZ1bmMsIGZsYWdzLCBuYSk7CkBAIC00MjQyLDcgKzQ2NTQsOCBAQAogICAgICAgICAgICAgICAgIHggPSBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBvcHRpbWl6ZSBhY2Nlc3MgdG8gYm91bmQgbWV0aG9kcyAqLwogICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKQEAgLTQyNjQsOSArNDY3Nyw5IEBACiAgICAgICAgICAgICB4ID0gZG9fY2FsbChmdW5jLCBwcF9zdGFjaywgbmEsIG5rKTsKICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKworICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgfQotICAgIGFzc2VydCgoeCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAoeCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKIAogICAgIC8qIENsZWFyIHRoZSBzdGFjayBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgQWxzbyByZW1vdmVzCiAgICAgICAgdGhlIGFyZ3VtZW50cyBpbiBjYXNlIHRoZXkgd2VyZW4ndCBjb25zdW1lZCBhbHJlYWR5CkBAIC00Mjc4LDggKzQ2OTEsNyBAQAogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KIAotICAgIGFzc2VydCgoeCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAoeCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQyOTksNiArNDcxMSw4IEBACiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CiAgICAgUHlPYmplY3QgKipkID0gTlVMTDsKICAgICBpbnQgbmQgPSAwOwogCkBAIC00MzQxLDEwICs0NzU1LDExIEBACiAgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKICAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOwogICAgIH0KLSAgICByZXR1cm4gUHlFdmFsX0V2YWxDb2RlRXgoKFB5T2JqZWN0KiljbywgZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHF1YWxuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1MDgsNiArNDkyMywxMiBAQAogICAgICAgICAgICAga3dkaWN0ID0gZDsKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAobmsgPiAwKSB7CisgICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7CisgICAgfQorCiAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewogICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwogICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKQEAgLTQ1MjksMTEgKzQ5NTAsNiBAQAogICAgICAgICB9CiAgICAgICAgIG5zdGFyID0gUHlUdXBsZV9HRVRfU0laRShzdGFyYXJnKTsKICAgICB9Ci0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKGt3ZGljdCwgbmssIHBwX3N0YWNrLCBmdW5jKTsKLSAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgIH0KICAgICBjYWxsYXJncyA9IHVwZGF0ZV9zdGFyX2FyZ3MobmEsIG5zdGFyLCBzdGFyYXJnLCBwcF9zdGFjayk7CiAgICAgaWYgKGNhbGxhcmdzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKQEAgLTQ1NjMsMTIgKzQ5NzksMTAgQEAKICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKICAgICBQeV9YREVDUkVGKGt3ZGljdCk7CiAgICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKLSAgICBhc3NlcnQoKHJlc3VsdCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEV4dHJhY3QgYSBzbGljZSBpbmRleCBmcm9tIGEgUHlJbnQgb3IgUHlMb25nIG9yIGFuIG9iamVjdCB3aXRoIHRoZQorLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCiAgICBuYl9pbmRleCBzbG90IGRlZmluZWQsIGFuZCBzdG9yZSBpbiAqcGkuCiAgICBTaWxlbnRseSByZWR1Y2UgdmFsdWVzIGxhcmdlciB0aGFuIFBZX1NTSVpFX1RfTUFYIHRvIFBZX1NTSVpFX1RfTUFYLAogICAgYW5kIHNpbGVudGx5IGJvb3N0IHZhbHVlcyBsZXNzIHRoYW4gLVBZX1NTSVpFX1RfTUFYLTEgdG8gLVBZX1NTSVpFX1RfTUFYLTEuCkBAIC00NjU4LDExICs1MDcyLDI5IEBACiBpbXBvcnRfZnJvbShQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKng7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIFB5T2JqZWN0ICpmdWxsbW9kbmFtZSwgKnBrZ25hbWU7CiAKICAgICB4ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKLSAgICBpZiAoeCA9PSBOVUxMICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgaWYgKHggIT0gTlVMTCB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiB4OworICAgIC8qIElzc3VlICMxNzYzNjogaW4gY2FzZSB0aGlzIGZhaWxlZCBiZWNhdXNlIG9mIGEgY2lyY3VsYXIgcmVsYXRpdmUKKyAgICAgICBpbXBvcnQsIHRyeSB0byBmYWxsYmFjayBvbiByZWFkaW5nIHRoZSBtb2R1bGUgZGlyZWN0bHkgZnJvbQorICAgICAgIHN5cy5tb2R1bGVzLiAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcGtnbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19uYW1lX18pOworICAgIGlmIChwa2duYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZ1bGxtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLiVVIiwgcGtnbmFtZSwgbmFtZSk7CisgICAgUHlfREVDUkVGKHBrZ25hbWUpOworICAgIGlmIChmdWxsbW9kbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB4ID0gUHlEaWN0X0dldEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBmdWxsbW9kbmFtZSk7CisgICAgaWYgKHggPT0gTlVMTCkKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLCAiY2Fubm90IGltcG9ydCBuYW1lICVSIiwgbmFtZSk7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfSU5DUkVGKHgpOworICAgIFB5X0RFQ1JFRihmdWxsbW9kbmFtZSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCAyNzAyZDVjLi5hYWZjYmMyIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC0zMSw3ICszMSw3IEBACiAgICAgIHZhcmlhYmxlIChnaWxfZHJvcF9yZXF1ZXN0KSBpcyB1c2VkIGZvciB0aGF0IHB1cnBvc2UsIHdoaWNoIGlzIGNoZWNrZWQKICAgICAgYXQgZXZlcnkgdHVybiBvZiB0aGUgZXZhbCBsb29wLiBUaGF0IHZhcmlhYmxlIGlzIHNldCBhZnRlciBhIHdhaXQgb2YKICAgICAgYGludGVydmFsYCBtaWNyb3NlY29uZHMgb24gYGdpbF9jb25kYCBoYXMgdGltZWQgb3V0LgotICAgICAgCisKICAgICAgIFtBY3R1YWxseSwgYW5vdGhlciB2b2xhdGlsZSBib29sZWFuIHZhcmlhYmxlIChldmFsX2JyZWFrZXIpIGlzIHVzZWQKICAgICAgICB3aGljaCBPUnMgc2V2ZXJhbCBjb25kaXRpb25zIGludG8gb25lLiBWb2xhdGlsZSBib29sZWFucyBhcmUKICAgICAgICBzdWZmaWNpZW50IGFzIGludGVyLXRocmVhZCBzaWduYWxsaW5nIG1lYW5zIHNpbmNlIFB5dGhvbiBpcyBydW4KQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgdGltZSAoYGludGVydmFsYCBtaWNyb3NlY29uZHMpIGJlZm9yZSBzZXR0aW5nIGdpbF9kcm9wX3JlcXVlc3QuIFRoaXMKICAgICAgZW5jb3VyYWdlcyBhIGRlZmluZWQgc3dpdGNoaW5nIHBlcmlvZCwgYnV0IGRvZXNuJ3QgZW5mb3JjZSBpdCBzaW5jZQogICAgICBvcGNvZGVzIGNhbiB0YWtlIGFuIGFyYml0cmFyeSB0aW1lIHRvIGV4ZWN1dGUuCi0gCisKICAgICAgVGhlIGBpbnRlcnZhbGAgdmFsdWUgaXMgYXZhaWxhYmxlIGZvciB0aGUgdXNlciB0byByZWFkIGFuZCBtb2RpZnkKICAgICAgdXNpbmcgdGhlIFB5dGhvbiBBUEkgYHN5cy57Z2V0LHNldH1zd2l0Y2hpbnRlcnZhbCgpYC4KIApAQCAtNTEsNyArNTEsNyBAQAogICAgICB0aGUgdmFsdWUgb2YgZ2lsX2xhc3RfaG9sZGVyIGlzIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiBpdHMKICAgICAgb3duIHRocmVhZCBzdGF0ZSBwb2ludGVyLCBpbmRpY2F0aW5nIHRoYXQgYW5vdGhlciB0aHJlYWQgd2FzIGFibGUgdG8KICAgICAgdGFrZSB0aGUgR0lMLgotIAorCiAgICAgIFRoaXMgaXMgbWVhbnQgdG8gcHJvaGliaXQgdGhlIGxhdGVuY3ktYWR2ZXJzZSBiZWhhdmlvdXIgb24gbXVsdGktY29yZQogICAgICBtYWNoaW5lcyB3aGVyZSBvbmUgdGhyZWFkIHdvdWxkIHNwZWN1bGF0aXZlbHkgcmVsZWFzZSB0aGUgR0lMLCBidXQgc3RpbGwKICAgICAgcnVuIGFuZCBlbmQgdXAgYmVpbmcgdGhlIGZpcnN0IHRvIHJlLWFjcXVpcmUgaXQsIG1ha2luZyB0aGUgInRpbWVzbGljZXMiCkBAIC0xODYsMTIgKzE4NiwxMiBAQAogICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xvY2tlZCwgMCk7CiAgICAgQ09ORF9TSUdOQUwoZ2lsX2NvbmQpOwogICAgIE1VVEVYX1VOTE9DSyhnaWxfbXV0ZXgpOwotICAgIAorCiAjaWZkZWYgRk9SQ0VfU1dJVENISU5HCiAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfZHJvcF9yZXF1ZXN0KSAmJiB0c3RhdGUgIT0gTlVMTCkgewogICAgICAgICBNVVRFWF9MT0NLKHN3aXRjaF9tdXRleCk7CiAgICAgICAgIC8qIE5vdCBzd2l0Y2hlZCB5ZXQgPT4gd2FpdCAqLwotICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikgPT0gdHN0YXRlKSB7CisgICAgICAgIGlmICgoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikgPT0gdHN0YXRlKSB7CiAgICAgICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKICAgICAgICAgICAgIC8qIE5PVEU6IGlmIENPTkRfV0FJVCBkb2VzIG5vdCBhdG9taWNhbGx5IHN0YXJ0IHdhaXRpbmcgd2hlbgogICAgICAgICAgICAgICAgcmVsZWFzaW5nIHRoZSBtdXRleCwgYW5vdGhlciB0aHJlYWQgY2FuIHJ1biB0aHJvdWdoLCB0YWtlCkBAIC0yMTUsNyArMjE1LDcgQEAKIAogICAgIGlmICghX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sb2NrZWQpKQogICAgICAgICBnb3RvIF9yZWFkeTsKLSAgICAKKwogICAgIHdoaWxlIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xvY2tlZCkpIHsKICAgICAgICAgaW50IHRpbWVkX291dCA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2F2ZWRfc3dpdGNobnVtOwpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbG9ja2VkLCAxKTsKICAgICBfUHlfQU5OT1RBVEVfUldMT0NLX0FDUVVJUkVEKCZnaWxfbG9ja2VkLCAvKmlzX3dyaXRlPSovMSk7CiAKLSAgICBpZiAodHN0YXRlICE9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7CisgICAgaWYgKHRzdGF0ZSAhPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikpIHsKICAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIHRzdGF0ZSk7CiAgICAgICAgICsrZ2lsX3N3aXRjaF9udW1iZXI7CiAgICAgfQpAQCAtMjU0LDcgKzI1NCw3IEBACiAgICAgaWYgKHRzdGF0ZS0+YXN5bmNfZXhjICE9IE5VTEwpIHsKICAgICAgICAgX1B5RXZhbF9TaWduYWxBc3luY0V4YygpOwogICAgIH0KLSAgICAKKwogICAgIE1VVEVYX1VOTE9DSyhnaWxfbXV0ZXgpOwogICAgIGVycm5vID0gZXJyOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmggYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzY5MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKQEAgLTAsMCArMSw2NjMgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Fic19fZG9jX18sCisiYWJzKCRtb2R1bGUsIHgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4iKTsKKworI2RlZmluZSBCVUlMVElOX0FCU19NRVRIT0RERUYgICAgXAorICAgIHsiYWJzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYWJzLCBNRVRIX08sIGJ1aWx0aW5fYWJzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2FsbF9fZG9jX18sCisiYWxsKCRtb2R1bGUsIGl0ZXJhYmxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbGwgdmFsdWVzIHggaW4gdGhlIGl0ZXJhYmxlLlxuIgorIlxuIgorIklmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIFRydWUuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9BTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImFsbCIsIChQeUNGdW5jdGlvbilidWlsdGluX2FsbCwgTUVUSF9PLCBidWlsdGluX2FsbF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9hbnlfX2RvY19fLAorImFueSgkbW9kdWxlLCBpdGVyYWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYW55IHggaW4gdGhlIGl0ZXJhYmxlLlxuIgorIlxuIgorIklmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQU5ZX01FVEhPRERFRiAgICBcCisgICAgeyJhbnkiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9hbnksIE1FVEhfTywgYnVpbHRpbl9hbnlfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYXNjaWlfX2RvY19fLAorImFzY2lpKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBBU0NJSS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC5cbiIKKyJcbiIKKyJBcyByZXByKCksIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4iCisib2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5XG4iCisicmVwcigpIHVzaW5nIFxcXFx4LCBcXFxcdSBvciBcXFxcVSBlc2NhcGVzLiBUaGlzIGdlbmVyYXRlcyBhIHN0cmluZyBzaW1pbGFyXG4iCisidG8gdGhhdCByZXR1cm5lZCBieSByZXByKCkgaW4gUHl0aG9uIDIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9BU0NJSV9NRVRIT0RERUYgICAgXAorICAgIHsiYXNjaWkiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9hc2NpaSwgTUVUSF9PLCBidWlsdGluX2FzY2lpX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Jpbl9fZG9jX18sCisiYmluKCRtb2R1bGUsIG51bWJlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuXG4iCisiXG4iCisiICAgPj4+IGJpbigyNzk2MjAyKVxuIgorIiAgIFwnMGIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwXCciKTsKKworI2RlZmluZSBCVUlMVElOX0JJTl9NRVRIT0RERUYgICAgXAorICAgIHsiYmluIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYmluLCBNRVRIX08sIGJ1aWx0aW5fYmluX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2NhbGxhYmxlX19kb2NfXywKKyJjYWxsYWJsZSgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlIChpLmUuLCBzb21lIGtpbmQgb2YgZnVuY3Rpb24pLlxuIgorIlxuIgorIk5vdGUgdGhhdCBjbGFzc2VzIGFyZSBjYWxsYWJsZSwgYXMgYXJlIGluc3RhbmNlcyBvZiBjbGFzc2VzIHdpdGggYVxuIgorIl9fY2FsbF9fKCkgbWV0aG9kLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQ0FMTEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbGxhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY2FsbGFibGUsIE1FVEhfTywgYnVpbHRpbl9jYWxsYWJsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9mb3JtYXRfX2RvY19fLAorImZvcm1hdCgkbW9kdWxlLCB2YWx1ZSwgZm9ybWF0X3NwZWM9XCdcJywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB2YWx1ZS5fX2Zvcm1hdF9fKGZvcm1hdF9zcGVjKVxuIgorIlxuIgorImZvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmciKTsKKworI2RlZmluZSBCVUlMVElOX0ZPUk1BVF9NRVRIT0RERUYgICAgXAorICAgIHsiZm9ybWF0IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZm9ybWF0LCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZm9ybWF0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Zvcm1hdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZm9ybWF0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFU6Zm9ybWF0IiwKKyAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9mb3JtYXRfaW1wbChtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fY2hyX19kb2NfXywKKyJjaHIoJG1vZHVsZSwgaSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIFVuaWNvZGUgc3RyaW5nIG9mIG9uZSBjaGFyYWN0ZXIgd2l0aCBvcmRpbmFsIGk7IDAgPD0gaSA8PSAweDEwZmZmZi4iKTsKKworI2RlZmluZSBCVUlMVElOX0NIUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2hyIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY2hyLCBNRVRIX08sIGJ1aWx0aW5fY2hyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Nocl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fY2hyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jaHJfaW1wbChtb2R1bGUsIGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2NvbXBpbGVfX2RvY19fLAorImNvbXBpbGUoJG1vZHVsZSwgLywgc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3M9MCxcbiIKKyIgICAgICAgIGRvbnRfaW5oZXJpdD1GYWxzZSwgb3B0aW1pemU9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJDb21waWxlIHNvdXJjZSBpbnRvIGEgY29kZSBvYmplY3QgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYnkgZXhlYygpIG9yIGV2YWwoKS5cbiIKKyJcbiIKKyJUaGUgc291cmNlIGNvZGUgbWF5IHJlcHJlc2VudCBhIFB5dGhvbiBtb2R1bGUsIHN0YXRlbWVudCBvciBleHByZXNzaW9uLlxuIgorIlRoZSBmaWxlbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHJ1bi10aW1lIGVycm9yIG1lc3NhZ2VzLlxuIgorIlRoZSBtb2RlIG11c3QgYmUgXCdleGVjXCcgdG8gY29tcGlsZSBhIG1vZHVsZSwgXCdzaW5nbGVcJyB0byBjb21waWxlIGFcbiIKKyJzaW5nbGUgKGludGVyYWN0aXZlKSBzdGF0ZW1lbnQsIG9yIFwnZXZhbFwnIHRvIGNvbXBpbGUgYW4gZXhwcmVzc2lvbi5cbiIKKyJUaGUgZmxhZ3MgYXJndW1lbnQsIGlmIHByZXNlbnQsIGNvbnRyb2xzIHdoaWNoIGZ1dHVyZSBzdGF0ZW1lbnRzIGluZmx1ZW5jZVxuIgorInRoZSBjb21waWxhdGlvbiBvZiB0aGUgY29kZS5cbiIKKyJUaGUgZG9udF9pbmhlcml0IGFyZ3VtZW50LCBpZiB0cnVlLCBzdG9wcyB0aGUgY29tcGlsYXRpb24gaW5oZXJpdGluZ1xuIgorInRoZSBlZmZlY3RzIG9mIGFueSBmdXR1cmUgc3RhdGVtZW50cyBpbiBlZmZlY3QgaW4gdGhlIGNvZGUgY2FsbGluZ1xuIgorImNvbXBpbGU7IGlmIGFic2VudCBvciBmYWxzZSB0aGVzZSBzdGF0ZW1lbnRzIGRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24sXG4iCisiaW4gYWRkaXRpb24gdG8gYW55IGZlYXR1cmVzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQ09NUElMRV9NRVRIT0RERUYgICAgXAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2luaGVyaXQsIGludCBvcHRpbWl6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2NvbXBpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc291cmNlOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyAgICBjb25zdCBjaGFyICptb2RlOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7CisgICAgaW50IG9wdGltaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLAorICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2NvbXBpbGVfaW1wbChtb2R1bGUsIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzLCBkb250X2luaGVyaXQsIG9wdGltaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9kaXZtb2RfX2RvY19fLAorImRpdm1vZCgkbW9kdWxlLCB4LCB5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0dXBsZSAoKHgteCV5KS95LCB4JXkpLiAgSW52YXJpYW50OiBkaXYqeSArIG1vZCA9PSB4LiIpOworCisjZGVmaW5lIEJVSUxUSU5fRElWTU9EX01FVEhPRERFRiAgICBcCisgICAgeyJkaXZtb2QiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9kaXZtb2QsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9kaXZtb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp4OworICAgIFB5T2JqZWN0ICp5OworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJngsICZ5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGl2bW9kX2ltcGwobW9kdWxlLCB4LCB5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9ldmFsX19kb2NfXywKKyJldmFsKCRtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV2YWx1YXRlIHRoZSBnaXZlbiBzb3VyY2UgaW4gdGhlIGNvbnRleHQgb2YgZ2xvYmFscyBhbmQgbG9jYWxzLlxuIgorIlxuIgorIlRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uXG4iCisib3IgYSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSBjb21waWxlKCkuXG4iCisiVGhlIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3Rpb25hcnkgYW5kIGxvY2FscyBjYW4gYmUgYW55IG1hcHBpbmcsXG4iCisiZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuXG4iCisiSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9FVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJldmFsIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZXZhbCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2V2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZXZhbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsIFB5T2JqZWN0ICpnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2Fscyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2V2YWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNvdXJjZTsKKyAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxvY2FscyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJldmFsIiwKKyAgICAgICAgMSwgMywKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9ldmFsX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZXhlY19fZG9jX18sCisiZXhlYygkbW9kdWxlLCBzb3VyY2UsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIHRoZSBnaXZlbiBzb3VyY2UgaW4gdGhlIGNvbnRleHQgb2YgZ2xvYmFscyBhbmQgbG9jYWxzLlxuIgorIlxuIgorIlRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBvbmUgb3IgbW9yZSBQeXRob24gc3RhdGVtZW50c1xuIgorIm9yIGEgY29kZSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgY29tcGlsZSgpLlxuIgorIlRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuIgorImRlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLlxuIgorIklmIG9ubHkgZ2xvYmFscyBpcyBnaXZlbiwgbG9jYWxzIGRlZmF1bHRzIHRvIGl0LiIpOworCisjZGVmaW5lIEJVSUxUSU5fRVhFQ19NRVRIT0RERUYgICAgXAorICAgIHsiZXhlYyIsIChQeUNGdW5jdGlvbilidWlsdGluX2V4ZWMsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9leGVjX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2V4ZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9leGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2U7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXhlYyIsCisgICAgICAgIDEsIDMsCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXhlY19pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2dsb2JhbHNfX2RvY19fLAorImdsb2JhbHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjdXJyZW50IHNjb3BlXCdzIGdsb2JhbCB2YXJpYWJsZXMuXG4iCisiXG4iCisiTk9URTogVXBkYXRlcyB0byB0aGlzIGRpY3Rpb25hcnkgKndpbGwqIGFmZmVjdCBuYW1lIGxvb2t1cHMgaW4gdGhlIGN1cnJlbnRcbiIKKyJnbG9iYWwgc2NvcGUgYW5kIHZpY2UtdmVyc2EuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9HTE9CQUxTX01FVEhPRERFRiAgICBcCisgICAgeyJnbG9iYWxzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZ2xvYmFscywgTUVUSF9OT0FSR1MsIGJ1aWx0aW5fZ2xvYmFsc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9nbG9iYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2dsb2JhbHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnVpbHRpbl9nbG9iYWxzX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faGFzYXR0cl9fZG9jX18sCisiaGFzYXR0cigkbW9kdWxlLCBvYmosIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cbiIKKyJcbiIKKyJUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iaiwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLiIpOworCisjZGVmaW5lIEJVSUxUSU5fSEFTQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsiaGFzYXR0ciIsIChQeUNGdW5jdGlvbilidWlsdGluX2hhc2F0dHIsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9oYXNhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2hhc2F0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2hhc2F0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImhhc2F0dHIiLAorICAgICAgICAyLCAyLAorICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2hhc2F0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faWRfX2RvY19fLAorImlkKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaWRlbnRpdHkgb2YgYW4gb2JqZWN0LlxuIgorIlxuIgorIlRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmcgc2ltdWx0YW5lb3VzbHkgZXhpc3Rpbmcgb2JqZWN0cy5cbiIKKyIoQ1B5dGhvbiB1c2VzIHRoZSBvYmplY3RcJ3MgbWVtb3J5IGFkZHJlc3MuKSIpOworCisjZGVmaW5lIEJVSUxUSU5fSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImlkIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faWQsIE1FVEhfTywgYnVpbHRpbl9pZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9zZXRhdHRyX19kb2NfXywKKyJzZXRhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXRzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgb24gdGhlIGdpdmVuIG9iamVjdCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuIgorIlxuIgorInNldGF0dHIoeCwgXCd5XCcsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2XCdcJyIpOworCisjZGVmaW5lIEJVSUxUSU5fU0VUQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0YXR0ciIsIChQeUNGdW5jdGlvbilidWlsdGluX3NldGF0dHIsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9zZXRhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3NldGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3NldGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRhdHRyIiwKKyAgICAgICAgMywgMywKKyAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3NldGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2RlbGF0dHJfX2RvY19fLAorImRlbGF0dHIoJG1vZHVsZSwgb2JqLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGVsZXRlcyB0aGUgbmFtZWQgYXR0cmlidXRlIGZyb20gdGhlIGdpdmVuIG9iamVjdC5cbiIKKyJcbiIKKyJkZWxhdHRyKHgsIFwneVwnKSBpcyBlcXVpdmFsZW50IHRvIGBgZGVsIHgueVwnXCciKTsKKworI2RlZmluZSBCVUlMVElOX0RFTEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlbGF0dHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9kZWxhdHRyLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZGVsYXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9kZWxhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9kZWxhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kZWxhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2hhc2hfX2RvY19fLAorImhhc2goJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LlxuIgorIlxuIgorIlR3byBvYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtdXN0IGFsc28gaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLCBidXQgdGhlXG4iCisicmV2ZXJzZSBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS4iKTsKKworI2RlZmluZSBCVUlMVElOX0hBU0hfTUVUSE9EREVGICAgIFwKKyAgICB7Imhhc2giLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9oYXNoLCBNRVRIX08sIGJ1aWx0aW5faGFzaF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9oZXhfX2RvY19fLAorImhleCgkbW9kdWxlLCBudW1iZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuXG4iCisiXG4iCisiICAgPj4+IGhleCgxMjY0ODQzMClcbiIKKyIgICBcJzB4YzBmZmVlXCciKTsKKworI2RlZmluZSBCVUlMVElOX0hFWF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faGV4LCBNRVRIX08sIGJ1aWx0aW5faGV4X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2xlbl9fZG9jX18sCisibGVuKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgY29udGFpbmVyLiIpOworCisjZGVmaW5lIEJVSUxUSU5fTEVOX01FVEhPRERFRiAgICBcCisgICAgeyJsZW4iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9sZW4sIE1FVEhfTywgYnVpbHRpbl9sZW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fbG9jYWxzX19kb2NfXywKKyJsb2NhbHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZVwncyBsb2NhbCB2YXJpYWJsZXMuXG4iCisiXG4iCisiTk9URTogV2hldGhlciBvciBub3QgdXBkYXRlcyB0byB0aGlzIGRpY3Rpb25hcnkgd2lsbCBhZmZlY3QgbmFtZSBsb29rdXBzIGluXG4iCisidGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3RcbiIKKyJjb3ZlcmVkIGJ5IGFueSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBndWFyYW50ZWVzLiIpOworCisjZGVmaW5lIEJVSUxUSU5fTE9DQUxTX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NhbHMiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9sb2NhbHMsIE1FVEhfTk9BUkdTLCBidWlsdGluX2xvY2Fsc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9sb2NhbHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fbG9jYWxzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGJ1aWx0aW5fbG9jYWxzX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fb2N0X19kb2NfXywKKyJvY3QoJG1vZHVsZSwgbnVtYmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuIgorIlxuIgorIiAgID4+PiBvY3QoMzQyMzkxKVxuIgorIiAgIFwnMG8xMjM0NTY3XCciKTsKKworI2RlZmluZSBCVUlMVElOX09DVF9NRVRIT0RERUYgICAgXAorICAgIHsib2N0IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fb2N0LCBNRVRIX08sIGJ1aWx0aW5fb2N0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX29yZF9fZG9jX18sCisib3JkKCRtb2R1bGUsIGMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBmb3IgYSBvbmUtY2hhcmFjdGVyIHN0cmluZy4iKTsKKworI2RlZmluZSBCVUlMVElOX09SRF9NRVRIT0RERUYgICAgXAorICAgIHsib3JkIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fb3JkLCBNRVRIX08sIGJ1aWx0aW5fb3JkX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX3Bvd19fZG9jX18sCisicG93KCRtb2R1bGUsIHgsIHksIHo9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkVxdWl2YWxlbnQgdG8geCoqeSAod2l0aCB0d28gYXJndW1lbnRzKSBvciB4Kip5ICUgeiAod2l0aCB0aHJlZSBhcmd1bWVudHMpXG4iCisiXG4iCisiU29tZSB0eXBlcywgc3VjaCBhcyBpbnRzLCBhcmUgYWJsZSB0byB1c2UgYSBtb3JlIGVmZmljaWVudCBhbGdvcml0aG0gd2hlblxuIgorImludm9rZWQgdXNpbmcgdGhlIHRocmVlIGFyZ3VtZW50IGZvcm0uIik7CisKKyNkZWZpbmUgQlVJTFRJTl9QT1dfTUVUSE9EREVGICAgIFwKKyAgICB7InBvdyIsIChQeUNGdW5jdGlvbilidWlsdGluX3BvdywgTUVUSF9WQVJBUkdTLCBidWlsdGluX3Bvd19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9wb3dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fcG93KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp4OworICAgIFB5T2JqZWN0ICp5OworICAgIFB5T2JqZWN0ICp6ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvdyIsCisgICAgICAgIDIsIDMsCisgICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9wb3dfaW1wbChtb2R1bGUsIHgsIHksIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2lucHV0X19kb2NfXywKKyJpbnB1dCgkbW9kdWxlLCBwcm9tcHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYSBzdHJpbmcgZnJvbSBzdGFuZGFyZCBpbnB1dC4gIFRoZSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkLlxuIgorIlxuIgorIlRoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbiwgaXMgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQgd2l0aG91dCBhXG4iCisidHJhaWxpbmcgbmV3bGluZSBiZWZvcmUgcmVhZGluZyBpbnB1dC5cbiIKKyJcbiIKKyJJZiB0aGUgdXNlciBoaXRzIEVPRiAoKm5peDogQ3RybC1ELCBXaW5kb3dzOiBDdHJsLVorUmV0dXJuKSwgcmFpc2UgRU9GRXJyb3IuXG4iCisiT24gKm5peCBzeXN0ZW1zLCByZWFkbGluZSBpcyB1c2VkIGlmIGF2YWlsYWJsZS4iKTsKKworI2RlZmluZSBCVUlMVElOX0lOUFVUX01FVEhPRERFRiAgICBcCisgICAgeyJpbnB1dCIsIChQeUNGdW5jdGlvbilidWlsdGluX2lucHV0LCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faW5wdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faW5wdXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcHJvbXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faW5wdXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnByb21wdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwcm9tcHQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pbnB1dF9pbXBsKG1vZHVsZSwgcHJvbXB0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9yZXByX19kb2NfXywKKyJyZXByKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY2Fub25pY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LlxuIgorIlxuIgorIkZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouIik7CisKKyNkZWZpbmUgQlVJTFRJTl9SRVBSX01FVEhPRERFRiAgICBcCisgICAgeyJyZXByIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcmVwciwgTUVUSF9PLCBidWlsdGluX3JlcHJfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc3VtX19kb2NfXywKKyJzdW0oJG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0PTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHN1bSBvZiBhIFwnc3RhcnRcJyB2YWx1ZSAoZGVmYXVsdDogMCkgcGx1cyBhbiBpdGVyYWJsZSBvZiBudW1iZXJzXG4iCisiXG4iCisiV2hlbiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiB0aGUgc3RhcnQgdmFsdWUuXG4iCisiVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBzcGVjaWZpY2FsbHkgZm9yIHVzZSB3aXRoIG51bWVyaWMgdmFsdWVzIGFuZCBtYXlcbiIKKyJyZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TVU1fTUVUSE9EREVGICAgIFwKKyAgICB7InN1bSIsIChQeUNGdW5jdGlvbilidWlsdGluX3N1bSwgTUVUSF9WQVJBUkdTLCBidWlsdGluX3N1bV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zdW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICpzdGFydCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGU7CisgICAgUHlPYmplY3QgKnN0YXJ0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN1bSIsCisgICAgICAgIDEsIDIsCisgICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc3VtX2ltcGwobW9kdWxlLCBpdGVyYWJsZSwgc3RhcnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2lzaW5zdGFuY2VfX2RvY19fLAorImlzaW5zdGFuY2UoJG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB3aGV0aGVyIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIG9yIG9mIGEgc3ViY2xhc3MgdGhlcmVvZi5cbiIKKyJcbiIKKyJBIHR1cGxlLCBhcyBpbiBgYGlzaW5zdGFuY2UoeCwgKEEsIEIsIC4uLikpYGAsIG1heSBiZSBnaXZlbiBhcyB0aGUgdGFyZ2V0IHRvXG4iCisiY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNpbnN0YW5jZSh4LCBBKSBvciBpc2luc3RhbmNlKHgsIEIpXG4iCisib3IgLi4uYGAgZXRjLiIpOworCisjZGVmaW5lIEJVSUxUSU5fSVNJTlNUQU5DRV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNpbnN0YW5jZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2lzaW5zdGFuY2UsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9pc2luc3RhbmNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lzaW5zdGFuY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNsYXNzX29yX3R1cGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faXNpbnN0YW5jZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzaW5zdGFuY2UiLAorICAgICAgICAyLCAyLAorICAgICAgICAmb2JqLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc2luc3RhbmNlX2ltcGwobW9kdWxlLCBvYmosIGNsYXNzX29yX3R1cGxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pc3N1YmNsYXNzX19kb2NfXywKKyJpc3N1YmNsYXNzKCRtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBcJ2Nsc1wnIGlzIGEgZGVyaXZlZCBmcm9tIGFub3RoZXIgY2xhc3Mgb3IgaXMgdGhlIHNhbWUgY2xhc3MuXG4iCisiXG4iCisiQSB0dXBsZSwgYXMgaW4gYGBpc3N1YmNsYXNzKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0b1xuIgorImNoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzc3ViY2xhc3MoeCwgQSkgb3IgaXNzdWJjbGFzcyh4LCBCKVxuIgorIm9yIC4uLmBgIGV0Yy4iKTsKKworI2RlZmluZSBCVUlMVElOX0lTU1VCQ0xBU1NfTUVUSE9EREVGICAgIFwKKyAgICB7Imlzc3ViY2xhc3MiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pc3N1YmNsYXNzLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faXNzdWJjbGFzc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNscywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lzc3ViY2xhc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNsczsKKyAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJmNscywgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNzdWJjbGFzc19pbXBsKG1vZHVsZSwgY2xzLCBjbGFzc19vcl90dXBsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWMzMzk5YzBhZWU5OGQ3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaCBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2I1YjE3Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCkBAIC0wLDAgKzEsMzI4IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2ltcF9sb2NrX2hlbGRfX2RvY19fLAorImxvY2tfaGVsZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlIEZhbHNlLlxuIgorIlxuIgorIk9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHJldHVybiBGYWxzZS4iKTsKKworI2RlZmluZSBfSU1QX0xPQ0tfSEVMRF9NRVRIT0RERUYgICAgXAorICAgIHsibG9ja19oZWxkIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfbG9ja19oZWxkLCBNRVRIX05PQVJHUywgX2ltcF9sb2NrX2hlbGRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfbG9ja19oZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2xvY2tfaGVsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW1wX2xvY2tfaGVsZF9pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2FjcXVpcmVfbG9ja19fZG9jX18sCisiYWNxdWlyZV9sb2NrKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBY3F1aXJlcyB0aGUgaW50ZXJwcmV0ZXJcJ3MgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC5cbiIKKyJcbiIKKyJUaGlzIGxvY2sgc2hvdWxkIGJlIHVzZWQgYnkgaW1wb3J0IGhvb2tzIHRvIGVuc3VyZSB0aHJlYWQtc2FmZXR5IHdoZW4gaW1wb3J0aW5nXG4iCisibW9kdWxlcy4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7CisKKyNkZWZpbmUgX0lNUF9BQ1FVSVJFX0xPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjcXVpcmVfbG9jayIsIChQeUNGdW5jdGlvbilfaW1wX2FjcXVpcmVfbG9jaywgTUVUSF9OT0FSR1MsIF9pbXBfYWNxdWlyZV9sb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2FjcXVpcmVfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9hY3F1aXJlX2xvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoX2ltcF9yZWxlYXNlX2xvY2tfX2RvY19fLAorInJlbGVhc2VfbG9jaygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVsZWFzZSB0aGUgaW50ZXJwcmV0ZXJcJ3MgaW1wb3J0IGxvY2suXG4iCisiXG4iCisiT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7CisKKyNkZWZpbmUgX0lNUF9SRUxFQVNFX0xPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbGVhc2VfbG9jayIsIChQeUNGdW5jdGlvbilfaW1wX3JlbGVhc2VfbG9jaywgTUVUSF9OT0FSR1MsIF9pbXBfcmVsZWFzZV9sb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX3JlbGVhc2VfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9yZWxlYXNlX2xvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2ltcF9yZWxlYXNlX2xvY2tfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfXywKKyJfZml4X2NvX2ZpbGVuYW1lKCRtb2R1bGUsIGNvZGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2VzIGNvZGUuY29fZmlsZW5hbWUgdG8gc3BlY2lmeSB0aGUgcGFzc2VkLWluIGZpbGUgcGF0aC5cbiIKKyJcbiIKKyIgIGNvZGVcbiIKKyIgICAgQ29kZSBvYmplY3QgdG8gY2hhbmdlLlxuIgorIiAgcGF0aFxuIgorIiAgICBGaWxlIHBhdGggdG8gdXNlLiIpOworCisjZGVmaW5lIF9JTVBfX0ZJWF9DT19GSUxFTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2ZpeF9jb19maWxlbmFtZSIsIChQeUNGdW5jdGlvbilfaW1wX19maXhfY29fZmlsZW5hbWUsIE1FVEhfVkFSQVJHUywgX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeUNvZGVPYmplY3QgKmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX19maXhfY29fZmlsZW5hbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlDb2RlT2JqZWN0ICpjb2RlOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIVU6X2ZpeF9jb19maWxlbmFtZSIsCisgICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKG1vZHVsZSwgY29kZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfY3JlYXRlX2J1aWx0aW5fX2RvY19fLAorImNyZWF0ZV9idWlsdGluKCRtb2R1bGUsIHNwZWMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYW4gZXh0ZW5zaW9uIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0NSRUFURV9CVUlMVElOX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2NyZWF0ZV9idWlsdGluLCBNRVRIX08sIF9pbXBfY3JlYXRlX2J1aWx0aW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX19kb2NfXywKKyJleHRlbnNpb25fc3VmZml4ZXMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyB1c2VkIHRvIGlkZW50aWZ5IGV4dGVuc2lvbiBtb2R1bGVzLiIpOworCisjZGVmaW5lIF9JTVBfRVhURU5TSU9OX1NVRkZJWEVTX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbnNpb25fc3VmZml4ZXMiLCAoUHlDRnVuY3Rpb24pX2ltcF9leHRlbnNpb25fc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfaW5pdF9mcm96ZW5fX2RvY19fLAorImluaXRfZnJvemVuKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbml0aWFsaXplcyBhIGZyb3plbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9JTklUX0ZST1pFTl9NRVRIT0RERUYgICAgXAorICAgIHsiaW5pdF9mcm96ZW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pbml0X2Zyb3plbiwgTUVUSF9PLCBfaW1wX2luaXRfZnJvemVuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2luaXRfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pbml0X2Zyb3plbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfX2RvY19fLAorImdldF9mcm96ZW5fb2JqZWN0KCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBjb2RlIG9iamVjdCBmb3IgYSBmcm96ZW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfR0VUX0ZST1pFTl9PQkpFQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9mcm96ZW5fb2JqZWN0IiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZ2V0X2Zyb3plbl9vYmplY3QsIE1FVEhfTywgX2ltcF9nZXRfZnJvemVuX29iamVjdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZ2V0X2Zyb3plbl9vYmplY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfXywKKyJpc19mcm96ZW5fcGFja2FnZSgkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBpcyBvZiBhIGZyb3plbiBwYWNrYWdlLiIpOworCisjZGVmaW5lIF9JTVBfSVNfRlJPWkVOX1BBQ0tBR0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzX2Zyb3plbl9wYWNrYWdlIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaXNfZnJvemVuX3BhY2thZ2UsIE1FVEhfTywgX2ltcF9pc19mcm96ZW5fcGFja2FnZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfZnJvemVuX3BhY2thZ2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2lzX2J1aWx0aW5fX2RvY19fLAorImlzX2J1aWx0aW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBidWlsdC1pbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9JU19CVUlMVElOX01FVEhPRERFRiAgICBcCisgICAgeyJpc19idWlsdGluIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaXNfYnVpbHRpbiwgTUVUSF9PLCBfaW1wX2lzX2J1aWx0aW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2lzX2Zyb3plbl9fZG9jX18sCisiaXNfZnJvemVuKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgZnJvemVuIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0lTX0ZST1pFTl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNfZnJvemVuIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaXNfZnJvemVuLCBNRVRIX08sIF9pbXBfaXNfZnJvemVuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfZnJvemVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQorCitQeURvY19TVFJWQVIoX2ltcF9jcmVhdGVfZHluYW1pY19fZG9jX18sCisiY3JlYXRlX2R5bmFtaWMoJG1vZHVsZSwgc3BlYywgZmlsZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRlX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9jcmVhdGVfZHluYW1pYywgTUVUSF9WQVJBUkdTLCBfaW1wX2NyZWF0ZV9keW5hbWljX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2NyZWF0ZV9keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNwZWMsIFB5T2JqZWN0ICpmaWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfY3JlYXRlX2R5bmFtaWMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNwZWM7CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiY3JlYXRlX2R5bmFtaWMiLAorICAgICAgICAxLCAyLAorICAgICAgICAmc3BlYywgJmZpbGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKG1vZHVsZSwgc3BlYywgZmlsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9EWU5BTUlDX0xPQURJTkcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQorCitQeURvY19TVFJWQVIoX2ltcF9leGVjX2R5bmFtaWNfX2RvY19fLAorImV4ZWNfZHluYW1pYygkbW9kdWxlLCBtb2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4ZWNfZHluYW1pYyIsIChQeUNGdW5jdGlvbilfaW1wX2V4ZWNfZHluYW1pYywgTUVUSF9PLCBfaW1wX2V4ZWNfZHluYW1pY19fZG9jX199LAorCitzdGF0aWMgaW50CitfaW1wX2V4ZWNfZHluYW1pY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9leGVjX2R5bmFtaWMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfZHluYW1pY19pbXBsKG1vZHVsZSwgbW9kKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9EWU5BTUlDX0xPQURJTkcpICovCisKKyNpZm5kZWYgX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGYxMDU5NzY2ZGQ1OGY4OCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggMjdmMmFlYi4uNTk2YmQ4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtOSw2ICs5LDcgQEAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKIGNvbnN0IGNoYXIgKlB5X2hleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKQEAgLTg1Niw2ICs4NTcsMTE5IEBACiAKIFB5T2JqZWN0ICpQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKIHsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OworICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKKyAgICBpbnQgcmVzc2l6ZTsKKyAgICBQeV9VQ1M0IGM7CisKKyAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKHAgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19Bc1N0cmluZyhvYmplY3QpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDQgKiAoZW5kIC0gc3RhcnQpLCAxMjcpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyssIG91dHAgKz0gNCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgICAgIG91dHBbMF0gPSAnXFwnOworICAgICAgICAgICAgb3V0cFsxXSA9ICd4JzsKKyAgICAgICAgICAgIG91dHBbMl0gPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICBvdXRwWzNdID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9UeXBlQ2hlY2soZXhjLCAoUHlUeXBlT2JqZWN0ICopUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KSkKKyAgICAgICAgZW5kID0gc3RhcnQgKyBQWV9TU0laRV9UX01BWCAvICgxKzErOCk7CisgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKKyAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErMjsKKyAgICB9CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgKm91dHArKyA9ICdcXCc7CisgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpvdXRwKysgPSAnVSc7CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjApJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAqb3V0cCsrID0gJ3UnOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvdXRwKysgPSAneCc7CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOworICAgIH0KKworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7Cit9CisKK3N0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKK3N0YXRpYyBpbnQgdWNuaGFzaF9pbml0aWFsaXplZCA9IDA7CisKK1B5T2JqZWN0ICpQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCit7CiAgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKQEAgLTg2NSwzNiArOTc5LDU3IEBACiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHA7CiAgICAgICAgIFB5X3NzaXplX3QgcmVzc2l6ZTsKKyAgICAgICAgaW50IHJlcGxzaXplOwogICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgIGNoYXIgYnVmZmVyWzI1Nl07IC8qIE5BTUVfTUFYTEVOICovCiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPiBQWV9TU0laRV9UX01BWCAvICgxKzErOCkpCi0gICAgICAgICAgICBlbmQgPSBzdGFydCArIFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KTsKKyAgICAgICAgaWYgKCF1Y25oYXNoX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAvKiBsb2FkIHRoZSB1bmljb2RlIGRhdGEgbW9kdWxlICovCisgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7CisgICAgICAgICAgICB1Y25oYXNoX2luaXRpYWxpemVkID0gMTsKKyAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSBzdGFydCwgcmVzc2l6ZSA9IDA7IGkgPCBlbmQ7ICsraSkgewogICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLwogICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKLSAgICAgICAgICAgIGlmIChjID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OworICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSAmJgorICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0bmFtZShOVUxMLCBjLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAxKSkgeworICAgICAgICAgICAgICAgIHJlcGxzaXplID0gMSsxKzErKGludClzdHJsZW4oYnVmZmVyKSsxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICAgICAgcmVwbHNpemUgPSAxKzErODsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs0OworICAgICAgICAgICAgICAgIHJlcGxzaXplID0gMSsxKzQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErMjsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSsyOworICAgICAgICAgICAgaWYgKHJlc3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcGxzaXplKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmVzc2l6ZSArPSByZXBsc2l6ZTsKICAgICAgICAgfQorICAgICAgICBlbmQgPSBpOwogICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgIGlmIChyZXM9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSBzdGFydCwgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CiAgICAgICAgICAgICBpIDwgZW5kOyArK2kpIHsKICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICAqb3V0cCsrID0gJ1xcJzsKKyAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgJiYKKyAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldG5hbWUoTlVMTCwgYywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMSkpIHsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ04nOworICAgICAgICAgICAgICAgICpvdXRwKysgPSAneyc7CisgICAgICAgICAgICAgICAgc3RyY3B5KChjaGFyICopb3V0cCwgYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBvdXRwICs9IHN0cmxlbihidWZmZXIpOworICAgICAgICAgICAgICAgICpvdXRwKysgPSAnfSc7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYyA+PSAweDAwMDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICdVJzsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKQEAgLTkxNSw2ICsxMDUwLDcgQEAKICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOwogICAgICAgICB9CiAKKyAgICAgICAgYXNzZXJ0KG91dHAgPT0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSArIHJlc3NpemUpOwogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOwogICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwpAQCAtOTI2LDYgKzEwNjIsNyBAQAogICAgIH0KIH0KIAorI2RlZmluZSBFTkNfVU5LTk9XTiAgICAgLTEKICNkZWZpbmUgRU5DX1VURjggICAgICAgIDAKICNkZWZpbmUgRU5DX1VURjE2QkUgICAgIDEKICNkZWZpbmUgRU5DX1VURjE2TEUgICAgIDIKQEAgLTk0MSw3ICsxMDc4LDExIEBACiAgICAgICAgIGVuY29kaW5nICs9IDM7CiAgICAgICAgIGlmICgqZW5jb2RpbmcgPT0gJy0nIHx8ICplbmNvZGluZyA9PSAnXycgKQogICAgICAgICAgICAgZW5jb2RpbmcrKzsKLSAgICAgICAgaWYgKGVuY29kaW5nWzBdID09ICcxJyAmJiBlbmNvZGluZ1sxXSA9PSAnNicpIHsKKyAgICAgICAgaWYgKGVuY29kaW5nWzBdID09ICc4JyAmJiBlbmNvZGluZ1sxXSA9PSAnXDAnKSB7CisgICAgICAgICAgICAqYnl0ZWxlbmd0aCA9IDM7CisgICAgICAgICAgICByZXR1cm4gRU5DX1VURjg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZW5jb2RpbmdbMF0gPT0gJzEnICYmIGVuY29kaW5nWzFdID09ICc2JykgewogICAgICAgICAgICAgZW5jb2RpbmcgKz0gMjsKICAgICAgICAgICAgICpieXRlbGVuZ3RoID0gMjsKICAgICAgICAgICAgIGlmICgqZW5jb2RpbmcgPT0gJ1wwJykgewpAQCAtOTgwLDkgKzExMjEsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiB1dGYtOCAqLwotICAgICpieXRlbGVuZ3RoID0gMzsKLSAgICByZXR1cm4gRU5DX1VURjg7CisgICAgZWxzZSBpZiAoc3RyY21wKGVuY29kaW5nLCAiQ1BfVVRGOCIpID09IDApIHsKKyAgICAgICAgKmJ5dGVsZW5ndGggPSAzOworICAgICAgICByZXR1cm4gRU5DX1VURjg7CisgICAgfQorICAgIHJldHVybiBFTkNfVU5LTk9XTjsKIH0KIAogLyogVGhpcyBoYW5kbGVyIGlzIGRlY2xhcmVkIHN0YXRpYyB1bnRpbCBzb21lb25lIGRlbW9uc3RyYXRlcwpAQCAtMTAyMCw2ICsxMTYzLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgY29kZSA9IGdldF9zdGFuZGFyZF9lbmNvZGluZyhlbmNvZGluZywgJmJ5dGVsZW5ndGgpOwogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlKTsKKyAgICAgICAgaWYgKGNvZGUgPT0gRU5DX1VOS05PV04pIHsKKyAgICAgICAgICAgIC8qIE5vdCBzdXBwb3J0ZWQsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZCAtIHN0YXJ0ID4gUFlfU1NJWkVfVF9NQVggLyBieXRlbGVuZ3RoKQogICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBQWV9TU0laRV9UX01BWCAvIGJ5dGVsZW5ndGg7CkBAIC0xMDk2LDYgKzEyNDUsMTIgQEAKICAgICAgICAgfQogICAgICAgICBjb2RlID0gZ2V0X3N0YW5kYXJkX2VuY29kaW5nKGVuY29kaW5nLCAmYnl0ZWxlbmd0aCk7CiAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGUpOworICAgICAgICBpZiAoY29kZSA9PSBFTkNfVU5LTk9XTikgeworICAgICAgICAgICAgLyogTm90IHN1cHBvcnRlZCwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAogICAgICAgICAvKiBUcnkgZGVjb2RpbmcgYSBzaW5nbGUgc3Vycm9nYXRlIGNoYXJhY3Rlci4gSWYKICAgICAgICAgICAgdGhlcmUgYXJlIG1vcmUsIGxldCB0aGUgY29kZWMgY2FsbCB1cyBhZ2Fpbi4gKi8KQEAgLTEyNTIsNiArMTQwNywxMSBAQAogICAgIHJldHVybiBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoZXhjKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICpuYW1lcmVwbGFjZV9lcnJvcnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGMpCit7CisgICAgcmV0dXJuIFB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMoZXhjKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICpzdXJyb2dhdGVwYXNzX2Vycm9ycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmV4YykKIHsKICAgICByZXR1cm4gUHlDb2RlY19TdXJyb2dhdGVQYXNzRXJyb3JzKGV4Yyk7CkBAIC0xMzE3LDggKzE0NzcsMTkgQEAKICAgICAgICAgICAgICAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgICAgICBNRVRIX08sCiAgICAgICAgICAgICAgICAgUHlEb2NfU1RSKCJJbXBsZW1lbnRzIHRoZSAnYmFja3NsYXNocmVwbGFjZScgZXJyb3IgaGFuZGxpbmcsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIndoaWNoIHJlcGxhY2VzIG1hbGZvcm1lZCBkYXRhIHdpdGggYSBiYWNrc2xhc2hlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlc2NhcGUgc2VxdWVuY2UuIikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWVyZXBsYWNlIiwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZXJlcGxhY2VfZXJyb3JzIiwKKyAgICAgICAgICAgICAgICBuYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICAgICAgTUVUSF9PLAorICAgICAgICAgICAgICAgIFB5RG9jX1NUUigiSW1wbGVtZW50cyB0aGUgJ25hbWVyZXBsYWNlJyBlcnJvciBoYW5kbGluZywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAid2hpY2ggcmVwbGFjZXMgYW4gdW5lbmNvZGFibGUgY2hhcmFjdGVyIHdpdGggYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZS4iKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCA2ODY1MTBjLi5jYmMyM2FhIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTMwLDggKzMwLDYgQEAKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgogCi1pbnQgUHlfT3B0aW1pemVGbGFnID0gMDsKLQogI2RlZmluZSBERUZBVUxUX0JMT0NLX1NJWkUgMTYKICNkZWZpbmUgREVGQVVMVF9CTE9DS1MgOAogI2RlZmluZSBERUZBVUxUX0NPREVfU0laRSAxMjgKQEAgLTk0LDYgKzkyLDcgQEAKICAgICBDT01QSUxFUl9TQ09QRV9NT0RVTEUsCiAgICAgQ09NUElMRVJfU0NPUEVfQ0xBU1MsCiAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sCisgICAgQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04sCiAgICAgQ09NUElMRVJfU0NPUEVfTEFNQkRBLAogICAgIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCiB9OwpAQCAtMTk1LDExICsxOTQsMTEgQEAKIHN0YXRpYyBpbnQgZXhwcl9jb25zdGFudChzdHJ1Y3QgY29tcGlsZXIgKiwgZXhwcl90eSk7CiAKIHN0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBQeV9zc2l6ZV90IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdHJ5X2V4Y2VwdChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3NldF9xdWFsbmFtZShzdHJ1Y3QgY29tcGlsZXIgKik7CiAKQEAgLTY3Nyw3ICs2NzYsOSBAQAogICAgICAgICBwYXJlbnQgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeUNhcHN1bGVfR2V0UG9pbnRlcihjYXBzdWxlLCBDQVBTVUxFX05BTUUpOwogICAgICAgICBhc3NlcnQocGFyZW50KTsKIAotICAgICAgICBpZiAodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OIHx8IHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykgeworICAgICAgICBpZiAodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OCisgICAgICAgICAgICB8fCB1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04KKyAgICAgICAgICAgIHx8IHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykgewogICAgICAgICAgICAgYXNzZXJ0KHUtPnVfbmFtZSk7CiAgICAgICAgICAgICBtYW5nbGVkID0gX1B5X01hbmdsZShwYXJlbnQtPnVfcHJpdmF0ZSwgdS0+dV9uYW1lKTsKICAgICAgICAgICAgIGlmICghbWFuZ2xlZCkKQEAgLTY5MSw2ICs2OTIsNyBAQAogCiAgICAgICAgIGlmICghZm9yY2VfZ2xvYmFsKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04KKyAgICAgICAgICAgICAgICB8fCBwYXJlbnQtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTgogICAgICAgICAgICAgICAgIHx8IHBhcmVudC0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0xBTUJEQSkgewogICAgICAgICAgICAgICAgIGRvdF9sb2NhbHNfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJmRvdF9sb2NhbHMpOwogICAgICAgICAgICAgICAgIGlmIChkb3RfbG9jYWxzX3N0ciA9PSBOVUxMKQpAQCAtODgxLDYgKzg4Myw3IEBACiAKICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgIGNhc2UgQklOQVJZX01VTFRJUExZOgorICAgICAgICBjYXNlIEJJTkFSWV9NQVRSSVhfTVVMVElQTFk6CiAgICAgICAgIGNhc2UgQklOQVJZX01PRFVMTzoKICAgICAgICAgY2FzZSBCSU5BUllfQUREOgogICAgICAgICBjYXNlIEJJTkFSWV9TVUJUUkFDVDoKQEAgLTg5NSwxMiArODk4LDExIEBACiAgICAgICAgIGNhc2UgSU5QTEFDRV9BREQ6CiAgICAgICAgIGNhc2UgSU5QTEFDRV9TVUJUUkFDVDoKICAgICAgICAgY2FzZSBJTlBMQUNFX01VTFRJUExZOgorICAgICAgICBjYXNlIElOUExBQ0VfTUFUUklYX01VTFRJUExZOgogICAgICAgICBjYXNlIElOUExBQ0VfTU9EVUxPOgogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIFNUT1JFX1NVQlNDUjoKICAgICAgICAgICAgIHJldHVybiAtMzsKLSAgICAgICAgY2FzZSBTVE9SRV9NQVA6Ci0gICAgICAgICAgICByZXR1cm4gLTI7CiAgICAgICAgIGNhc2UgREVMRVRFX1NVQlNDUjoKICAgICAgICAgICAgIHJldHVybiAtMjsKIApAQCAtOTI5LDcgKzkzMSw5IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgcmV0dXJuIDc7Ci0gICAgICAgIGNhc2UgV0lUSF9DTEVBTlVQOgorICAgICAgICBjYXNlIFdJVEhfQ0xFQU5VUF9TVEFSVDoKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIFdJVEhfQ0xFQU5VUF9GSU5JU0g6CiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIFhYWCBTb21ldGltZXMgbW9yZSAqLwogICAgICAgICBjYXNlIFJFVFVSTl9WQUxVRToKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTk3Myw2ICs5NzcsMTMgQEAKICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICBjYXNlIEJVSUxEX1NFVDoKICAgICAgICAgICAgIHJldHVybiAxLW9wYXJnOworICAgICAgICBjYXNlIEJVSUxEX0xJU1RfVU5QQUNLOgorICAgICAgICBjYXNlIEJVSUxEX1RVUExFX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9TRVRfVU5QQUNLOgorICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0s6CisgICAgICAgICAgICByZXR1cm4gMSAtIG9wYXJnOworICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOgorICAgICAgICAgICAgcmV0dXJuIDEgLSAob3BhcmcgJiAweEZGKTsKICAgICAgICAgY2FzZSBCVUlMRF9NQVA6CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBMT0FEX0FUVFI6CkBAIC0xMDQzLDYgKzEwNTQsMTYgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBERUxFVEVfREVSRUY6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHRVRfQVdBSVRBQkxFOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKKyAgICAgICAgICAgIHJldHVybiA2OworICAgICAgICBjYXNlIEJFRk9SRV9BU1lOQ19XSVRIOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR0VUX0FJVEVSOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR0VUX0FORVhUOgorICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUFlfSU5WQUxJRF9TVEFDS19FRkZFQ1Q7CiAgICAgfQpAQCAtMTYzNywxOSArMTY1OCw0MyBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK2NvbXBpbGVyX2Z1bmN0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpmaXJzdF9jb25zdCA9IFB5X05vbmU7Ci0gICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7Ci0gICAgZXhwcl90eSByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOwotICAgIGFzZGxfc2VxKiBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgYXJndW1lbnRzX3R5IGFyZ3M7CisgICAgZXhwcl90eSByZXR1cm5zOworICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICBhc2RsX3NlcSogZGVjb3M7CisgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgc3RtdF90eSBzdDsKICAgICBQeV9zc2l6ZV90IGksIG4sIGFyZ2xlbmd0aDsKICAgICBpbnQgZG9jc3RyaW5nLCBrd19kZWZhdWx0X2NvdW50ID0gMDsKICAgICBpbnQgbnVtX2Fubm90YXRpb25zOworICAgIGludCBzY29wZV90eXBlOwogCi0gICAgYXNzZXJ0KHMtPmtpbmQgPT0gRnVuY3Rpb25EZWZfa2luZCk7CisKKyAgICBpZiAoaXNfYXN5bmMpIHsKKyAgICAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQXN5bmNGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3M7CisgICAgICAgIHJldHVybnMgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJuczsKKyAgICAgICAgZGVjb3MgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZTsKKyAgICAgICAgYm9keSA9IHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5OworCisgICAgICAgIHNjb3BlX3R5cGUgPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTjsKKyAgICB9IGVsc2UgeworICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOworICAgICAgICByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOworICAgICAgICBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkZ1bmN0aW9uRGVmLm5hbWU7CisgICAgICAgIGJvZHkgPSBzLT52LkZ1bmN0aW9uRGVmLmJvZHk7CisKKyAgICAgICAgc2NvcGVfdHlwZSA9IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OOworICAgIH0KIAogICAgIGlmICghY29tcGlsZXJfZGVjb3JhdG9ycyhjLCBkZWNvcykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2NywxMiArMTcxMiwxMiBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sICh2b2lkICopcywKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZV90eXBlLCAodm9pZCAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgMCk7CisgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwogICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCiAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKQEAgLTE2ODMsMTAgKzE3MjgsMTAgQEAKIAogICAgIGMtPnUtPnVfYXJnY291bnQgPSBhc2RsX3NlcV9MRU4oYXJncy0+YXJncyk7CiAgICAgYy0+dS0+dV9rd29ubHlhcmdjb3VudCA9IGFzZGxfc2VxX0xFTihhcmdzLT5rd29ubHlhcmdzKTsKLSAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CisgICAgbiA9IGFzZGxfc2VxX0xFTihib2R5KTsKICAgICAvKiBpZiB0aGVyZSB3YXMgYSBkb2NzdHJpbmcsIHdlIG5lZWQgdG8gc2tpcCB0aGUgZmlyc3Qgc3RhdGVtZW50ICovCiAgICAgZm9yIChpID0gZG9jc3RyaW5nOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgaSk7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKGJvZHksIGkpOwogICAgICAgICBWSVNJVF9JTl9TQ09QRShjLCBzdG10LCBzdCk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CkBAIC0xNzA2LDEyICsxNzUxLDE5IEBACiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCisgICAgaWYgKGlzX2FzeW5jKSB7CisgICAgICAgIGNvLT5jb19mbGFncyB8PSBDT19DT1JPVVRJTkU7CisgICAgICAgIC8qIEFuIGFzeW5jIGZ1bmN0aW9uIGlzIGFsd2F5cyBhIGdlbmVyYXRvciwgZXZlbgorICAgICAgICAgICBpZiB0aGVyZSBpcyBubyAneWllbGQnIGV4cHJlc3Npb25zIGluIGl0LiAqLworICAgICAgICBjby0+Y29fZmxhZ3MgfD0gQ09fR0VORVJBVE9SOworICAgIH0KKwogICAgIC8qIGRlY29yYXRvcnMgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGRlY29zKTsgaSsrKSB7CiAgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbXBpbGVyX25hbWVvcChjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsIFN0b3JlKTsKKyAgICByZXR1cm4gY29tcGlsZXJfbmFtZW9wKGMsIG5hbWUsIFN0b3JlKTsKIH0KIAogc3RhdGljIGludApAQCAtMTgyMSw5ICsxODczLDcgQEAKICAgICAvKiA1LiBnZW5lcmF0ZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBmb3IgdGhlIGNhbGwgKi8KICAgICBpZiAoIWNvbXBpbGVyX2NhbGxfaGVscGVyKGMsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5DbGFzc0RlZi5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmt3YXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmtleXdvcmRzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiA2LiBhcHBseSBkZWNvcmF0b3JzICovCkBAIC0xOTM4LDcgKzE5ODgsNyBAQAogICAgIH0gZWxzZSBpZiAoY29uc3RhbnQgPT0gMSkgewogICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5JZi5ib2R5KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAocy0+di5JZi5vcmVsc2UpIHsKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihzLT52LklmLm9yZWxzZSkpIHsKICAgICAgICAgICAgIG5leHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CiAgICAgICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk0OCw4ICsxOTk4LDggQEAKICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5JZi50ZXN0KTsKICAgICAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgbmV4dCk7CiAgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LklmLmJvZHkpOwotICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKLSAgICAgICAgaWYgKHMtPnYuSWYub3JlbHNlKSB7CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4ocy0+di5JZi5vcmVsc2UpKSB7CisgICAgICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKICAgICAgICAgICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIG5leHQpOwogICAgICAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuSWYub3JlbHNlKTsKICAgICAgICAgfQpAQCAtMTk4Niw2ICsyMDM2LDkyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKworc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RvcGl0ZXJfZXJyb3IgPSBOVUxMOworICAgIGJhc2ljYmxvY2sgKnRyeSwgKmV4Y2VwdCwgKmVuZCwgKmFmdGVyX3RyeSwgKnRyeV9jbGVhbnVwLAorICAgICAgICAgICAgICAgKmFmdGVyX2xvb3AsICphZnRlcl9sb29wX2Vsc2U7CisKKyAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICBzdG9waXRlcl9lcnJvciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJTdG9wQXN5bmNJdGVyYXRpb24iKTsKKyAgICAgICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGVuZCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYWZ0ZXJfbG9vcCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl9sb29wX2Vsc2UgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAodHJ5ID09IE5VTEwgfHwgZXhjZXB0ID09IE5VTEwgfHwgZW5kID09IE5VTEwKKyAgICAgICAgICAgIHx8IGFmdGVyX3RyeSA9PSBOVUxMIHx8IHRyeV9jbGVhbnVwID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9MT09QLCBhZnRlcl9sb29wKTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIExPT1AsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVklTSVQoYywgZXhwciwgcy0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeSk7CisKKworICAgIEFERE9QX0pSRUwoYywgU0VUVVBfRVhDRVBULCBleGNlcHQpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCB0cnkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFERE9QKGMsIEdFVF9BTkVYVCk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQXN5bmNGb3IudGFyZ2V0KTsKKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCB0cnkpOworICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBhZnRlcl90cnkpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOworICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1AoYywgUE9QX0JMT0NLKTsgLyogZm9yIFNFVFVQX0xPT1AgKi8KKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGFmdGVyX2xvb3BfZWxzZSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeV9jbGVhbnVwKTsKKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl90cnkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LkFzeW5jRm9yLmJvZHkpOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7IC8qIGZvciBTRVRVUF9MT09QICovCisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBMT09QLCB0cnkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcCk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBlbmQpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcF9lbHNlKTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Gb3Iub3JlbHNlKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGVuZCk7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGludAogY29tcGlsZXJfd2hpbGUoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CkBAIC0yNTEyLDcgKzI2NDgsNyBAQAogCiAgICAgc3dpdGNoIChzLT5raW5kKSB7CiAgICAgY2FzZSBGdW5jdGlvbkRlZl9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfZnVuY3Rpb24oYywgcyk7CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAwKTsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jbGFzcyhjLCBzKTsKICAgICBjYXNlIFJldHVybl9raW5kOgpAQCAtMjU5MSw3ICsyNzI3LDE0IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb250aW51ZShjKTsKICAgICBjYXNlIFdpdGhfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcywgMCk7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAxKTsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCAwKTsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY19mb3IoYywgcyk7CiAgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTI2MjQsNiArMjc2Nyw4IEBACiAgICAgICAgIHJldHVybiBCSU5BUllfU1VCVFJBQ1Q7CiAgICAgY2FzZSBNdWx0OgogICAgICAgICByZXR1cm4gQklOQVJZX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIEJJTkFSWV9NQVRSSVhfTVVMVElQTFk7CiAgICAgY2FzZSBEaXY6CiAgICAgICAgIHJldHVybiBCSU5BUllfVFJVRV9ESVZJREU7CiAgICAgY2FzZSBNb2Q6CkBAIC0yNjg4LDYgKzI4MzMsOCBAQAogICAgICAgICByZXR1cm4gSU5QTEFDRV9TVUJUUkFDVDsKICAgICBjYXNlIE11bHQ6CiAgICAgICAgIHJldHVybiBJTlBMQUNFX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIElOUExBQ0VfTUFUUklYX01VTFRJUExZOwogICAgIGNhc2UgRGl2OgogICAgICAgICByZXR1cm4gSU5QTEFDRV9UUlVFX0RJVklERTsKICAgICBjYXNlIE1vZDoKQEAgLTI3NDksOCArMjg5Niw3IEBACiAgICAgICAgICAgICBvcHR5cGUgPSBPUF9GQVNUOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9JTVBMSUNJVDoKLSAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrICYmCi0gICAgICAgICAgICAhYy0+dS0+dV9zdGUtPnN0ZV91bm9wdGltaXplZCkKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgb3B0eXBlID0gT1BfR0xPQkFMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9FWFBMSUNJVDoKQEAgLTI4NjgsNjcgKzMwMTQsMTQ1IEBACiB9CiAKIHN0YXRpYyBpbnQKK3N0YXJ1bnBhY2tfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMsCisgICAgICAgICAgICAgICAgICBpbnQgc2luZ2xlX29wLCBpbnQgaW5uZXJfb3AsIGludCBvdXRlcl9vcCkKK3sKKyAgICBQeV9zc2l6ZV90IG4gPSBhc2RsX3NlcV9MRU4oZWx0cyk7CisgICAgUHlfc3NpemVfdCBpLCBuc3ViaXRlbXMgPSAwLCBuc2VlbiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChlbHRzLCBpKTsKKyAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKKyAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgIEFERE9QX0koYywgaW5uZXJfb3AsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Yml0ZW1zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBuc2VlbisrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChuc3ViaXRlbXMpIHsKKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIGlubmVyX29wLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIG91dGVyX29wLCBuc3ViaXRlbXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIEFERE9QX0koYywgc2luZ2xlX29wLCBuc2Vlbik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Fzc2lnbm1lbnRfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMpCit7CisgICAgUHlfc3NpemVfdCBuID0gYXNkbF9zZXFfTEVOKGVsdHMpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgc2Vlbl9zdGFyID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGVsdHMsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCAmJiAhc2Vlbl9zdGFyKSB7CisgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8CisgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKKyAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgIEFERE9QX0koYywgVU5QQUNLX0VYLCAoaSArICgobi1pLTEpIDw8IDgpKSk7CisgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOworICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghc2Vlbl9zdGFyKSB7CisgICAgICAgIEFERE9QX0koYywgVU5QQUNLX1NFUVVFTkNFLCBuKTsKKyAgICB9CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9saXN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52Lkxpc3QuZWx0cyk7CisgICAgYXNkbF9zZXEgKmVsdHMgPSBlLT52Lkxpc3QuZWx0czsKICAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5MaXN0LmVsdHMsIGkpOwotICAgICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQgJiYgIXNlZW5fc3RhcikgewotICAgICAgICAgICAgICAgIGlmICgoaSA+PSAoMSA8PCA4KSkgfHwKLSAgICAgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXhwcmVzc2lvbnMgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19FWCwgKGkgKyAoKG4taS0xKSA8PCA4KSkpOwotICAgICAgICAgICAgICAgIHNlZW5fc3RhciA9IDE7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGUtPnYuTGlzdC5lbHRzLCBpLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKLSAgICAgICAgICAgICAgICAgICAgInR3byBzdGFycmVkIGV4cHJlc3Npb25zIGluIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXNlZW5fc3RhcikgewotICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfU0VRVUVOQ0UsIG4pOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBhc3NpZ25tZW50X2hlbHBlcihjLCBlbHRzKTsKICAgICB9Ci0gICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuTGlzdC5lbHRzKTsKLSAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVCwgbik7CisgICAgZWxzZSBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7CisgICAgICAgIHJldHVybiBzdGFydW5wYWNrX2hlbHBlcihjLCBlbHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfTElTVCwgQlVJTERfVFVQTEUsIEJVSUxEX0xJU1RfVU5QQUNLKTsKICAgICB9CisgICAgZWxzZQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZWx0cyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3R1cGxlKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpOworICAgIGFzZGxfc2VxICplbHRzID0gZS0+di5UdXBsZS5lbHRzOwogICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5UdXBsZS5lbHRzLCBpKTsKLSAgICAgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kICYmICFzZWVuX3N0YXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgIChuLWktMSA+PSAoSU5UX01BWCA+PiA4KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdGFyLXVucGFja2luZyBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfRVgsIChpICsgKChuLWktMSkgPDwgOCkpKTsKLSAgICAgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChlLT52LlR1cGxlLmVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4gYXNzaWdubWVudF9oZWxwZXIoYywgZWx0cyk7CisgICAgfQorICAgIGVsc2UgaWYgKGUtPnYuVHVwbGUuY3R4ID09IExvYWQpIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUlMRF9UVVBMRSwgQlVJTERfVFVQTEUsIEJVSUxEX1RVUExFX1VOUEFDSyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zZXQoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGUtPnYuU2V0LmVsdHMsIEJVSUxEX1NFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfU0VULCBCVUlMRF9TRVRfVU5QQUNLKTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4sIGNvbnRhaW5lcnMsIGVsZW1lbnRzOworICAgIGludCBpc191bnBhY2tpbmcgPSAwOworICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5EaWN0LnZhbHVlcyk7CisgICAgY29udGFpbmVycyA9IDA7CisgICAgZWxlbWVudHMgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSA9PSBOVUxMOworICAgICAgICBpZiAoZWxlbWVudHMgPT0gMHhGRkZGIHx8IChlbGVtZW50cyAmJiBpc191bnBhY2tpbmcpKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICAgICAgY29udGFpbmVycysrOworICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2Vlbl9zdGFyKSB7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19TRVFVRU5DRSwgbik7CisgICAgICAgIGlmIChpc191bnBhY2tpbmcpIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBjb250YWluZXJzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQotICAgIFZJU0lUX1NFUShjLCBleHByLCBlLT52LlR1cGxlLmVsdHMpOwotICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG4pOworICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgY29udGFpbmVycysrOworICAgIH0KKyAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldworICAgICAqIGRpY3QuICBJZiB0aGVyZSBpcyBvbmUgZGljdCBhbmQgaXQncyBhbiB1bnBhY2tpbmcsIHRoZW4gaXQgbmVlZHMKKyAgICAgKiB0byBiZSBjb3BpZWQgaW50byBhIG5ldyBkaWN0LiIgKi8KKyAgICB3aGlsZSAoY29udGFpbmVycyA+IDEgfHwgaXNfdW5wYWNraW5nKSB7CisgICAgICAgIGludCBvcGFyZyA9IGNvbnRhaW5lcnMgPCAyNTUgPyBjb250YWluZXJzIDogMjU1OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0ssIG9wYXJnKTsKKyAgICAgICAgY29udGFpbmVycyAtPSAob3BhcmcgLSAxKTsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0yOTg0LDkgKzMyMDgsNyBAQAogICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQ2FsbC5mdW5jKTsKICAgICByZXR1cm4gY29tcGlsZXJfY2FsbF9oZWxwZXIoYywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLnN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwua3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAogLyogc2hhcmVkIGNvZGUgYmV0d2VlbiBjb21waWxlcl9jYWxsIGFuZCBjb21waWxlcl9jbGFzcyAqLwpAQCAtMjk5NCwyNiArMzIxNiwxMDIgQEAKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLwogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpCiB7CiAgICAgaW50IGNvZGUgPSAwOworICAgIFB5X3NzaXplX3QgbmVsdHMsIGksIG5zZWVuLCBua3c7CiAKLSAgICBuICs9IGFzZGxfc2VxX0xFTihhcmdzKTsKLSAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncyk7Ci0gICAgaWYgKGtleXdvcmRzKSB7Ci0gICAgICAgIFZJU0lUX1NFUShjLCBrZXl3b3JkLCBrZXl3b3Jkcyk7Ci0gICAgICAgIG4gfD0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKSA8PCA4OworICAgIC8qIHRoZSBudW1iZXIgb2YgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgb24gdGhlIHN0YWNrICovCisgICAgUHlfc3NpemVfdCBuc3ViYXJncyA9IDAsIG5zdWJrd2FyZ3MgPSAwOworCisgICAgbmt3ID0gMDsKKyAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLworICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGFyZ3MpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICAgICAgLyogQSBzdGFyLWFyZy4gSWYgd2UndmUgc2VlbiBwb3NpdGlvbmFsIGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYQorICAgICAgICAgICAgICAgdHVwbGUuICovCisgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgICAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzKSB7CisgICAgICAgICAgICAvKiBXZSd2ZSBzZWVuIHN0YXItYXJncyBhbHJlYWR5LCBzbyB3ZQorICAgICAgICAgICAgICAgY291bnQgdG93YXJkcyBpdGVtcy10by1wYWNrLWludG8tdHVwbGUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cworICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoc3RhcmFyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwgc3RhcmFyZ3MpOworICAgIGlmIChuc2VlbikgeworICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOworICAgICAgICBuc3ViYXJncysrOworICAgIH0KKyAgICBpZiAobnN1YmFyZ3MpIHsKICAgICAgICAgY29kZSB8PSAxOworICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAorICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNUX1VOUEFDSywgbnN1YmFyZ3MpOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChrd2FyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwga3dhcmdzKTsKKworICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCisgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuc3Via3dhcmdzKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGRpY3QuICovCisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGtleXdvcmQgYXJndW1lbnQgKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGtleXdvcmQsIGt3KQorICAgICAgICAgICAgbmt3Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG5zZWVuKSB7CisgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOworICAgICAgICBuc3Via3dhcmdzKys7CisgICAgfQorICAgIGlmIChuc3Via3dhcmdzKSB7CiAgICAgICAgIGNvZGUgfD0gMjsKKyAgICAgICAgaWYgKG5zdWJrd2FyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBQYWNrIGl0IGFsbCB1cCAqLworICAgICAgICAgICAgaW50IGZ1bmN0aW9uX3BvcyA9IG4gKyAoY29kZSAmIDEpICsgbmt3ICsgMTsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MgfCAoZnVuY3Rpb25fcG9zIDw8IDgpKTsKKyAgICAgICAgfQogICAgIH0KKyAgICBhc3NlcnQobiA8IDE8PDgpOworICAgIGFzc2VydChua3cgPCAxPDwyNCk7CisgICAgbiB8PSBua3cgPDwgODsKKwogICAgIHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgMDoKICAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKQEAgLTMxMzgsOCArMzQzNiw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLCBpZGVudGlmaWVyIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwpCitjb21waWxlcl9jb21wcmVoZW5zaW9uKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgZXhwcl90eSBlbHQsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwogICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CkBAIC0zMzEyLDYgKzM2MTEsMTAyIEBACiAgICAgfQogfQogCisKKy8qCisgICBJbXBsZW1lbnRzIHRoZSBhc3luYyB3aXRoIHN0YXRlbWVudC4KKworICAgVGhlIHNlbWFudGljcyBvdXRsaW5lZCBpbiB0aGF0IFBFUCBhcmUgYXMgZm9sbG93czoKKworICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjoKKyAgICAgICBCTE9DSworCisgICBJdCBpcyBpbXBsZW1lbnRlZCByb3VnaGx5IGFzOgorCisgICBjb250ZXh0ID0gRVhQUgorICAgZXhpdCA9IGNvbnRleHQuX19hZXhpdF9fICAjIG5vdCBjYWxsaW5nIGl0CisgICB2YWx1ZSA9IGF3YWl0IGNvbnRleHQuX19hZW50ZXJfXygpCisgICB0cnk6CisgICAgICAgVkFSID0gdmFsdWUgICMgaWYgVkFSIHByZXNlbnQgaW4gdGhlIHN5bnRheAorICAgICAgIEJMT0NLCisgICBmaW5hbGx5OgorICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgorICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICBlbHNlOgorICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CisgICAgICAgICAgIHJhaXNlCisgKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBwb3MpCit7CisgICAgYmFzaWNibG9jayAqYmxvY2ssICpmaW5hbGx5OworICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQocy0+di5Bc3luY1dpdGguaXRlbXMsIHBvcyk7CisKKyAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY1dpdGhfa2luZCk7CisKKyAgICBibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBmaW5hbGx5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmICghYmxvY2sgfHwgIWZpbmFsbHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogRXZhbHVhdGUgRVhQUiAqLworICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisKKyAgICBBRERPUChjLCBCRUZPUkVfQVNZTkNfV0lUSCk7CisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9BU1lOQ19XSVRILCBmaW5hbGx5KTsKKworICAgIC8qIFNFVFVQX0FTWU5DX1dJVEggcHVzaGVzIGEgZmluYWxseSBibG9jay4gKi8KKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBibG9jayk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAvKiBEaXNjYXJkIHJlc3VsdCBmcm9tIGNvbnRleHQuX19hZW50ZXJfXygpICovCisgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIH0KKworICAgIHBvcysrOworICAgIGlmIChwb3MgPT0gYXNkbF9zZXFfTEVOKHMtPnYuQXN5bmNXaXRoLml0ZW1zKSkKKyAgICAgICAgLyogQkxPQ0sgY29kZSAqLworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Bc3luY1dpdGguYm9keSkKKyAgICBlbHNlIGlmICghY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCBwb3MpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBFbmQgb2YgdHJ5IGJsb2NrOyBzdGFydCB0aGUgZmluYWxseSBibG9jayAqLworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spOworCisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGZpbmFsbHkpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIEZpbmFsbHkgYmxvY2sgc3RhcnRzOyBjb250ZXh0Ll9fZXhpdF9fIGlzIG9uIHRoZSBzdGFjayB1bmRlcgorICAgICAgIHRoZSBleGNlcHRpb24gb3IgcmV0dXJuIGluZm9ybWF0aW9uLiBKdXN0IGlzc3VlIG91ciBtYWdpYworICAgICAgIG9wY29kZS4gKi8KKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfU1RBUlQpOworCisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisKKyAgICAvKiBGaW5hbGx5IGJsb2NrIGVuZHMuICovCisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpOworICAgIHJldHVybiAxOworfQorCisKIC8qCiAgICBJbXBsZW1lbnRzIHRoZSB3aXRoIHN0YXRlbWVudCBmcm9tIFBFUCAzNDMuCiAKQEAgLTMzODUsNyArMzc4MCw4IEBACiAgICAgLyogRmluYWxseSBibG9jayBzdGFydHM7IGNvbnRleHQuX19leGl0X18gaXMgb24gdGhlIHN0YWNrIHVuZGVyCiAgICAgICAgdGhlIGV4Y2VwdGlvbiBvciByZXR1cm4gaW5mb3JtYXRpb24uIEp1c3QgaXNzdWUgb3VyIG1hZ2ljCiAgICAgICAgb3Bjb2RlLiAqLwotICAgIEFERE9QKGMsIFdJVEhfQ0xFQU5VUCk7CisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX1NUQVJUKTsKKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfRklOSVNIKTsKIAogICAgIC8qIEZpbmFsbHkgYmxvY2sgZW5kcy4gKi8KICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CkBAIC0zMzk2LDggKzM3OTIsNiBAQAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0KICAgICAvKiBJZiBleHByIGUgaGFzIGEgZGlmZmVyZW50IGxpbmUgbnVtYmVyIHRoYW4gdGhlIGxhc3QgZXhwci9zdG10LAogICAgICAgIHNldCBhIG5ldyBsaW5lIG51bWJlciBmb3IgdGhlIG5leHQgaW5zdHJ1Y3Rpb24uCiAgICAgKi8KQEAgLTM0MjQsMjMgKzM4MTgsOSBAQAogICAgIGNhc2UgSWZFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2lmZXhwKGMsIGUpOwogICAgIGNhc2UgRGljdF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwotICAgICAgICAvKiBCVUlMRF9NQVAgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCB0byBwcmVhbGxvY2F0ZSB0aGUgZGljdGlvbmFyeSwKLSAgICAgICAgICAgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGV4YWN0ICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCAobj4weEZGRkYgPyAweEZGRkYgOiBuKSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7Ci0gICAgICAgICAgICBBRERPUChjLCBTVE9SRV9NQVApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfZGljdChjLCBlKTsKICAgICBjYXNlIFNldF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuU2V0LmVsdHMpOwotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5TZXQuZWx0cyk7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfU0VULCBuKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBjb21waWxlcl9zZXQoYywgZSk7CiAgICAgY2FzZSBHZW5lcmF0b3JFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2dlbmV4cChjLCBlKTsKICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CkBAIC0zNDUyLDYgKzM4MzIsOCBAQAogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOwogICAgICAgICB9CkBAIC0zNDYzLDExICszODQ1LDI4IEBACiAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQgZnJvbScgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik7CisKICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZEZyb20udmFsdWUpOwogICAgICAgICBBRERPUChjLCBHRVRfSVRFUik7CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKICAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKworICAgICAgICAvKiB0aGlzIGNoZWNrIHdvbid0IGJlIHRyaWdnZXJlZCB3aGlsZSB3ZSBoYXZlIEFXQUlUIHRva2VuICovCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBhc3luYyBmdW5jdGlvbiIpOworCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOworICAgICAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgpAQCAtMzU1MSw3ICszOTUwLDcgQEAKICAgICAgICAgICAgICAgICAic3RhcnJlZCBhc3NpZ25tZW50IHRhcmdldCBtdXN0IGJlIGluIGEgbGlzdCBvciB0dXBsZSIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgImNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lX2tpbmQ6CkBAIC00MTgxLDkgKzQ1ODAsNyBAQAogICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIGlmIChzdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2spIHsKLSAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTOwotICAgICAgICBpZiAoIXN0ZS0+c3RlX3Vub3B0aW1pemVkKQotICAgICAgICAgICAgZmxhZ3MgfD0gQ09fT1BUSU1JWkVEOworICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFMgfCBDT19PUFRJTUlaRUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9uZXN0ZWQpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19ORVNURUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaAppbmRleCBlZjgxOGM0Li5iYjViMWI2IDEwMDY0NAotLS0gYS9QeXRob24vY29uZHZhci5oCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTEsNCArMSw0IEBACi0vKiAKKy8qCiAgKiBQb3J0YWJsZSBjb25kaXRpb24gdmFyaWFibGUgc3VwcG9ydCBmb3Igd2luZG93cyBhbmQgcHRocmVhZHMuCiAgKiBFdmVyeXRoaW5nIGlzIGlubGluZSwgdGhpcyBoZWFkZXIgY2FuIGJlIGluY2x1ZGVkIHdoZXJlIG5lZWRlZC4KICAqCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgZWxzZSBpZiAocikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGVsc2UgCisgICAgZWxzZQogICAgICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjU1LDcgKzI1NSw3IEBACiAgICAgICAgICAqIGEgbmV3IHRocmVhZCBjb21lcyBhbG9uZywgaXQgd2lsbCBwYXNzIHJpZ2h0IHRocm91aGdoLCBoYXZpbmcKICAgICAgICAgICogYWRqdXN0ZWQgaXQgdG8gKHdhaXRpbmcgPT0gMCAmJiBzZW0uY291bnQgPT0gMCkuCiAgICAgICAgICAqLwotICAgICAgICAgCisKICAgICBpZiAod2FpdCA9PSBXQUlUX0ZBSUxFRCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIC8qIHJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gdGltZW91dCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggODk5NmE3Mi4uM2RhNTQ2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0zNzMsNyArMzczLDcgQEAKICAgICAgICAgeCA9IDEgPDwgazsKICAgICAgICAgbGVuID0gKHNpemVvZihCaWdpbnQpICsgKHgtMSkqc2l6ZW9mKFVMb25nKSArIHNpemVvZihkb3VibGUpIC0gMSkKICAgICAgICAgICAgIC9zaXplb2YoZG91YmxlKTsKLSAgICAgICAgaWYgKGsgPD0gS21heCAmJiBwbWVtX25leHQgLSBwcml2YXRlX21lbSArIGxlbiA8PSBQUklWQVRFX21lbSkgeworICAgICAgICBpZiAoayA8PSBLbWF4ICYmIHBtZW1fbmV4dCAtIHByaXZhdGVfbWVtICsgbGVuIDw9IChQeV9zc2l6ZV90KVBSSVZBVEVfbWVtKSB7CiAgICAgICAgICAgICBydiA9IChCaWdpbnQqKXBtZW1fbmV4dDsKICAgICAgICAgICAgIHBtZW1fbmV4dCArPSBsZW47CiAgICAgICAgIH0KQEAgLTEwODcsNyArMTA4Nyw3IEBACiAgICAgYiA9IEJhbGxvYygxKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIC8qIEZpcnN0IGNvbnN0cnVjdCBiIGFuZCBlIGFzc3VtaW5nIHRoYXQgc2NhbGUgPT0gMC4gKi8KICAgICBiLT53ZHMgPSAyOwogICAgIGItPnhbMF0gPSB3b3JkMShkKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2FpeC5jIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKaW5kZXggNWFjMzBlZC4uYjNmZjhlMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKQEAgLTE1NCw4ICsxNTQsOSBAQAogfQogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2RsLmMgYi9QeXRob24vZHlubG9hZF9kbC5jCmluZGV4IDU4MzZjYjNiLi4yYmVjNjQ1IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9kbC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKQEAgLTEyLDExICsxMiwxMiBAQAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5vIiwgTlVMTH07CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogICAgIHJldHVybiBkbF9sb2FkbW9kKFB5X0dldFByb2dyYW1OYW1lKCksIHBhdGhuYW1lLCBmdW5jbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9ocHV4LmMgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKaW5kZXggYzk1NTQxNC4uNDk2N2FmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwpAQCAtOCwxNSArOCwxNiBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKICNpZiBkZWZpbmVkKF9faHA5MDAwczMwMCkKLSNkZWZpbmUgRlVOQ05BTUVfUEFUVEVSTiAiX1B5SW5pdF8lLjIwMHMiCisjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIl8lLjIwc18lLjIwMHMiCiAjZWxzZQotI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJQeUluaXRfJS4yMDBzIgorI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICIlLjIwc18lLjIwMHMiCiAjZW5kaWYKIAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7U0hMSUJfRVhULCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBzaGxfdCBsaWI7CkBAIC01MCw3ICs1MSw4IEBACiAgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCBGVU5DTkFNRV9QQVRURVJOLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sCisgICAgICAgICAgICAgICAgICBwcmVmaXgsIHNob3J0bmFtZSk7CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICBwcmludGYoInNobF9maW5kc3ltICVzXG4iLCBmdW5jbmFtZSk7CiAgICAgaWYgKHNobF9maW5kc3ltKCZsaWIsIGZ1bmNuYW1lLCBUWVBFX1VOREVGSU5FRCwgKHZvaWQgKikgJnApID09IC0xKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9uZXh0LmMgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKaW5kZXggODVjOTViNC4uODNhOGIyYmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX25leHQuYworKysgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKQEAgLTI3LDggKzI3LDkgQEAKICNkZWZpbmUgTElOS09QVElPTlMgTlNMSU5LTU9EVUxFX09QVElPTl9CSU5ETk9XfCBcCiAgICAgTlNMSU5LTU9EVUxFX09QVElPTl9SRVRVUk5fT05fRVJST1J8TlNMSU5LTU9EVUxFX09QVElPTl9QUklWQVRFCiAjZW5kaWYKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHAgPSBOVUxMOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKQEAgLTM5LDcgKzQwLDcgQEAKICAgICBjb25zdCBjaGFyICplcnJTdHJpbmc7CiAgICAgY2hhciBlcnJCdWZbNTEyXTsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJfUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIl8lLjIwc18lLjIwMHMiLCBwcmVmaXgsIHNob3J0bmFtZSk7CiAKICNpZmRlZiBVU0VfRFlMRF9HTE9CQUxfTkFNRVNQQUNFCiAgICAgaWYgKE5TSXNTeW1ib2xOYW1lRGVmaW5lZChmdW5jbmFtZSkpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCmluZGV4IDVjZDFlZmQuLjdmOGYxMzQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwpAQCAtNTEsOCArNTEsMTAgQEAKIHN0YXRpYyBpbnQgbmhhbmRsZXMgPSAwOwogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIKK19QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAgICAgdm9pZCAqaGFuZGxlOwpAQCAtNjcsMjYgKzY5LDI0IEBACiAgICAgfQogCiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwKLSAgICAgICAgICAgICAgICAgIExFQURfVU5ERVJTQ09SRSAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgICAgICAgICAgICAgICBMRUFEX1VOREVSU0NPUkUgIiUuMjBzXyUuMjAwcyIsIHByZWZpeCwgc2hvcnRuYW1lKTsKIAogICAgIGlmIChmcCAhPSBOVUxMKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YjsKLSAgICAgICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdGF0YikgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CisgICAgICAgIGlmIChfUHlfZnN0YXQoZmlsZW5vKGZwKSwgJnN0YXR1cykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmhhbmRsZXM7IGkrKykgewotICAgICAgICAgICAgaWYgKHN0YXRiLnN0X2RldiA9PSBoYW5kbGVzW2ldLmRldiAmJgotICAgICAgICAgICAgICAgIHN0YXRiLnN0X2lubyA9PSBoYW5kbGVzW2ldLmlubykgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9kZXYgPT0gaGFuZGxlc1tpXS5kZXYgJiYKKyAgICAgICAgICAgICAgICBzdGF0dXMuc3RfaW5vID09IGhhbmRsZXNbaV0uaW5vKSB7CiAgICAgICAgICAgICAgICAgcCA9IChkbF9mdW5jcHRyKSBkbHN5bShoYW5kbGVzW2ldLmhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobmhhbmRsZXMgPCAxMjgpIHsKLSAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmRldiA9IHN0YXRiLnN0X2RldjsKLSAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmlubyA9IHN0YXRiLnN0X2lubzsKKyAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmRldiA9IHN0YXR1cy5zdF9kZXY7CisgICAgICAgICAgICBoYW5kbGVzW25oYW5kbGVzXS5pbm8gPSBzdGF0dXMuc3RfaW5vOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF93aW4uYyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCmluZGV4IGZmY2YwZWUuLmYyYzc5NmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3dpbi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgorI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIC8vICJhY3RpdmF0aW9uIGNvbnRleHQiIG1hZ2ljIC0gc2VlIGRsX250LmMuLi4KQEAgLTE3LDE2ICsxOCwyOCBAQAogdm9pZCBfUHlfRGVhY3RpdmF0ZUFjdEN0eChVTE9OR19QVFIgY29va2llKTsKICNlbmRpZgogCi1jb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKICNpZmRlZiBfREVCVUcKLSAgICAiX2QucHlkIiwKKyNkZWZpbmUgUFlEX0RFQlVHX1NVRkZJWCAiX2QiCiAjZWxzZQotICAgICIucHlkIiwKKyNkZWZpbmUgUFlEX0RFQlVHX1NVRkZJWCAiIgogI2VuZGlmCisKKyNkZWZpbmUgU1RSSU5HSVpFMih4KSAjeAorI2RlZmluZSBTVFJJTkdJWkUoeCkgU1RSSU5HSVpFMih4KQorI2lmZGVmIFBZRF9QTEFURk9STV9UQUcKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgorI2Vsc2UKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2VuZGlmCisKKyNkZWZpbmUgUFlEX1VOVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIucHlkIgorCitjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKKyAgICBQWURfVEFHR0VEX1NVRkZJWCwKKyAgICBQWURfVU5UQUdHRURfU1VGRklYLAogICAgIE5VTEwKIH07CiAKLQogLyogQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyZSwgdG8gYXZvaWQgYW55IGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyCiAgICBDIFJUTCBpbXBsZW1lbnRhdGlvbnMgKi8KIApAQCAtMTczLDggKzE4Niw5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cldpbmRvd3MoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBjaGFyIGZ1bmNuYW1lWzI1OF0sICppbXBvcnRfcHl0aG9uOwpAQCAtMTg4LDcgKzIwMiw3IEBACiAgICAgaWYgKHdwYXRobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogCiAgICAgewogICAgICAgICBISU5TVEFOQ0UgaERMTCA9IE5VTEw7CmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggYjBhZDlhYS4uMTE3MmM1OSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNzQsMTEgKzc0LDExIEBACiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICAgICAgLyogV2UgbXVzdCBub3JtYWxpemUgdGhlIHZhbHVlIHJpZ2h0IG5vdyAqLwogICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpmaXhlZF92YWx1ZTsKLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICAgICAgLyogaW4gZGVidWcgbW9kZSwgUHlFdmFsX0V2YWxGcmFtZUV4KCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24KLSAgICAgICAgICAgICAgIGVycm9yIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KKworICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBQeUV2YWxfQ2FsbE9iamVjdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgICAgICAgICBleGNlcHRpb24gc2V0ICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCisKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTc3MywzNCArNzczLDM4IEBACiAjZGVmaW5lIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoX19GSUxFX18sIF9fTElORV9fKQogCiAKK1B5T2JqZWN0ICoKK1B5RXJyX0Zvcm1hdFYoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0KiBzdHJpbmc7CisKKyAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgZXhjZXB0aW9uIHNldCwgaXQgY2FsbHMgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGxpa2UgUHlPYmplY3RfUmVwcigpICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKworICAgIFB5RXJyX1NldE9iamVjdChleGNlcHRpb24sIHN0cmluZyk7CisgICAgUHlfWERFQ1JFRihzdHJpbmcpOworICAgIHJldHVybiBOVUxMOworfQorCiAKIFB5T2JqZWN0ICoKIFB5RXJyX0Zvcm1hdChQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhcmdzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7Ci0KICNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCiAgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotCi0jaWZkZWYgUHlfREVCVUcKLSAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbiBlcnJvcgotICAgICAgIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KLSAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCi0KLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KGV4Y2VwdGlvbiwgc3RyaW5nKTsKLSAgICBQeV9YREVDUkVGKHN0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIAotCiBQeU9iamVjdCAqCiBQeUVycl9OZXdFeGNlcHRpb24oY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsIFB5T2JqZWN0ICpkaWN0KQogewpAQCAtMTEyMSw2ICsxMTI1LDEwIEBACiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgbGluZW5vIDw9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZwID0gX1B5X2ZvcGVuX29iaihmaWxlbmFtZSwgInIiIFBZX1NURElPVEVYVE1PREUpOworICAgIGlmIChmcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gZXJyX3Byb2dyYW10ZXh0KGZwLCBsaW5lbm8pOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMzE2ODljMC4uYmNjZDMyMSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMyw3ICszLDkgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgogIyAgaW5jbHVkZSA8d2luZG93cy5oPgorZXh0ZXJuIGludCB3aW5lcnJvcl90b19lcnJubyhpbnQpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKQEAgLTI5LDcgKzMxLDggQEAKICAgICAwOiBvcGVuKCkgaWdub3JlcyBPX0NMT0VYRUMgZmxhZywgZXg6IExpbnV4IGtlcm5lbCBvbGRlciB0aGFuIDIuNi4yMwogICAgIDE6IG9wZW4oKSBzdXBwb3J0cyBPX0NMT0VYRUMgZmxhZywgY2xvc2Utb24tZXhlYyBpcyBzZXQKIAotICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBpby5GaWxlSU8gYW5kIG9zLm9wZW4oKSAqLworICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBfUHlfb3Blbl9ub3JhaXNlKCksIGlvLkZpbGVJTworICAgYW5kIG9zLm9wZW4oKS4gKi8KIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzID0gLTE7CiAjZW5kaWYKIApAQCAtMzksOSArNDIsMTMgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgVUlOVCBjcDsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgeworICAgIGludCB2YWxpZDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgdmFsaWQgPSBfUHlWZXJpZnlfZmQoZmQpICYmIGlzYXR0eShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAoIXZhbGlkKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9CisKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaWYgKGZkID09IDApCiAgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CkBAIC04MiwxMSArODksMTEgQEAKIAogICAgVmFsdWVzIG9mIGZvcmNlX2FzY2lpOgogCi0gICAgICAgMTogdGhlIHdvcmthcm91bmQgaXMgdXNlZDogX1B5X3djaGFyMmNoYXIoKSB1c2VzCi0gICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBfUHlfY2hhcjJ3Y2hhcigpIHVzZXMKKyAgICAgICAxOiB0aGUgd29ya2Fyb3VuZCBpcyB1c2VkOiBQeV9FbmNvZGVMb2NhbGUoKSB1c2VzCisgICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzCiAgICAgICAgICAgZGVjb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpCi0gICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IF9QeV93Y2hhcjJjaGFyKCkgdXNlcyB3Y3N0b21icygpIGFuZAotICAgICAgICAgIF9QeV9jaGFyMndjaGFyKCkgdXNlcyBtYnN0b3djcygpCisgICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IFB5X0VuY29kZUxvY2FsZSgpIHVzZXMgd2NzdG9tYnMoKSBhbmQKKyAgICAgICAgICBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzIG1ic3Rvd2NzKCkKICAgICAgIC0xOiB1bmtub3duLCBuZWVkIHRvIGNhbGwgY2hlY2tfZm9yY2VfYXNjaWkoKSB0byBnZXQgdGhlIHZhbHVlCiAqLwogc3RhdGljIGludCBmb3JjZV9hc2NpaSA9IC0xOwpAQCAtMjQ0LDI0ICsyNTEsMjYgQEAKIAogCiAvKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyICh1bmRlY29kYWJsZSBieXRlcyBhcmUgZGVjb2RlZCBhcyBjaGFyYWN0ZXJzCi0gICBpbiByYW5nZSBVK0RDODAuLlUrRENGRikuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZQorICAgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXI6IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSBkZWNvZGVkIGFzIGNoYXJhY3RlcnMKKyAgIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUKICAgIGNoYXJhY3RlciwgZXNjYXBlIHRoZSBieXRlcyB1c2luZyB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgaW5zdGVhZAogICAgb2YgZGVjb2RpbmcgdGhlbS4KIAotICAgVXNlIF9QeV93Y2hhcjJjaGFyKCkgdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIGJhY2sgdG8gYSBieXRlIHN0cmluZy4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLCB1c2UKKyAgIFB5TWVtX1Jhd0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IE5VTEwsIHdyaXRlIHRoZSBudW1iZXIgb2YKKyAgIHdpZGUgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKHVzZQotICAgUHlNZW1fUmF3RnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCi0gICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgotICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAotICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCi0gICBlcnJvci4KKyAgIFJldHVybiBOVUxMIG9uIGRlY29kaW5nIGVycm9yIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiBJZiAqc2l6ZSogaXMgbm90CisgICBOVUxMLCAqc2l6ZSBpcyBzZXQgdG8gKHNpemVfdCktMSBvbiBtZW1vcnkgZXJyb3Igb3Igc2V0IHRvIChzaXplX3QpLTIgb24KKyAgIGRlY29kaW5nIGVycm9yLgogCi0gICBDb252ZXJzaW9uIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMKLSAgIGxpYnJhcnkuICovCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIFB5X0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9uIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZyBiYWNrIHRvIGEKKyAgIGJ5dGUgc3RyaW5nLiAqLwogd2NoYXJfdCoKLV9QeV9jaGFyMndjaGFyKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQogewogI2lmZGVmIF9fQVBQTEVfXwogICAgIHdjaGFyX3QgKndzdHI7CkBAIC0zOTksMTkgKzQwOCwyMCBAQAogI2VuZGlmICAgLyogX19BUFBMRV9fICovCiB9CiAKLS8qIEVuY29kZSBhICh3aWRlKSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIChjaGFyYWN0ZXJzIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGIGFyZQotICAgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYpLgorLyogRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyOiBzdXJyb2dhdGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgIFUrREM4MC4uVStEQ0ZGIGFyZSBjb252ZXJ0ZWQgdG8gYnl0ZXMgMHg4MC4uMHhGRi4KIAotICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV2ZXJzZSBvZiBfUHlfY2hhcjJ3Y2hhcigpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZywgdXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCisgICB0aGUgbWVtb3J5LiBSZXR1cm4gTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KKyAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTCwgKmVycm9yX3BvcyBpcyBzZXQgdG8gdGhlIGluZGV4IG9mIHRoZSBpbnZhbGlkCisgICBjaGFyYWN0ZXIgb24gZW5jb2RpbmcgZXJyb3IsIG9yIHNldCB0byAoc2l6ZV90KS0xIG90aGVyd2lzZS4KIAotICAgSWYgZXJyb3JfcG9zIGlzIG5vdCBOVUxMOiAqZXJyb3JfcG9zIGlzIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKLSAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIFVzZSB0aGUgUHlfRGVjb2RlTG9jYWxlKCkgZnVuY3Rpb24gdG8gZGVjb2RlIHRoZSBieXRlcyBzdHJpbmcgYmFjayB0byBhIHdpZGUKKyAgIGNoYXJhY3RlciBzdHJpbmcuICovCiBjaGFyKgotX1B5X3djaGFyMmNoYXIoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCitQeV9FbmNvZGVMb2NhbGUoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCiB7CiAjaWZkZWYgX19BUFBMRV9fCiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC01MTQsMzQgKzUyNCwxNzkgQEAKICNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLwogfQogCi0vKiBJbiBwcmluY2lwbGUsIHRoaXMgc2hvdWxkIHVzZSBIQVZFX19XU1RBVCwgYW5kIF93c3RhdAotICAgc2hvdWxkIGJlIGRldGVjdGVkIGJ5IGF1dG9jb25mLiBIb3dldmVyLCBubyBjdXJyZW50Ci0gICBQT1NJWCBzeXN0ZW0gcHJvdmlkZXMgdGhhdCBmdW5jdGlvbiwgc28gdGVzdGluZyBmb3IKLSAgIGl0IGlzIHBvaW50bGVzcy4KLSAgIE5vdCBzdXJlIHdoZXRoZXIgdGhlIE1TX1dJTkRPV1MgZ3VhcmRzIGFyZSBuZWNlc3Nhcnk6Ci0gICBwZXJoYXBzIGZvciBjeWd3aW4vbWluZ3cgYnVpbGRzPwotKi8KLSNpZiBkZWZpbmVkKEhBVkVfU1RBVCkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKIAotLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgX19pbnQ2NCBzZWNzX2JldHdlZW5fZXBvY2hzID0gMTE2NDQ0NzM2MDA7IC8qIFNlY29uZHMgYmV0d2VlbiAxLjEuMTYwMSBhbmQgMS4xLjE5NzAgKi8KIAotaW50Ci1fUHlfd3N0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3N0YXRpYyB2b2lkCitGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoRklMRVRJTUUgKmluX3B0ciwgdGltZV90ICp0aW1lX291dCwgaW50KiBuc2VjX291dCkKIHsKLSAgICBpbnQgZXJyOwotICAgIGNoYXIgKmZuYW1lOwotICAgIGZuYW1lID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7Ci0gICAgaWYgKGZuYW1lID09IE5VTEwpIHsKLSAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBYWFggZW5kaWFubmVzcy4gU2hvdWxkbid0IG1hdHRlciwgYXMgYWxsIFdpbmRvd3MgaW1wbGVtZW50YXRpb25zIGFyZSBsaXR0bGUtZW5kaWFuICovCisgICAgLyogQ2Fubm90IHNpbXBseSBjYXN0IGFuZCBkZXJlZmVyZW5jZSBpbl9wdHIsCisgICAgICAgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsaWduZWQgcHJvcGVybHkgKi8KKyAgICBfX2ludDY0IGluOworICAgIG1lbWNweSgmaW4sIGluX3B0ciwgc2l6ZW9mKGluKSk7CisgICAgKm5zZWNfb3V0ID0gKGludCkoaW4gJSAxMDAwMDAwMCkgKiAxMDA7IC8qIEZJTEVUSU1FIGlzIGluIHVuaXRzIG9mIDEwMCBuc2VjLiAqLworICAgICp0aW1lX291dCA9IFB5X1NBRkVfRE9XTkNBU1QoKGluIC8gMTAwMDAwMDApIC0gc2Vjc19iZXR3ZWVuX2Vwb2NocywgX19pbnQ2NCwgdGltZV90KTsKK30KKwordm9pZAorX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodGltZV90IHRpbWVfaW4sIGludCBuc2VjX2luLCBGSUxFVElNRSAqb3V0X3B0cikKK3sKKyAgICAvKiBYWFggZW5kaWFubmVzcyAqLworICAgIF9faW50NjQgb3V0OworICAgIG91dCA9IHRpbWVfaW4gKyBzZWNzX2JldHdlZW5fZXBvY2hzOworICAgIG91dCA9IG91dCAqIDEwMDAwMDAwICsgbnNlY19pbiAvIDEwMDsKKyAgICBtZW1jcHkob3V0X3B0ciwgJm91dCwgc2l6ZW9mKG91dCkpOworfQorCisvKiBCZWxvdywgd2UgKmtub3cqIHRoYXQgdWdvK3IgaXMgMDQ0NCAqLworI2lmIF9TX0lSRUFEICE9IDA0MDAKKyNlcnJvciBVbnN1cHBvcnRlZCBDIGxpYnJhcnkKKyNlbmRpZgorc3RhdGljIGludAorYXR0cmlidXRlc190b19tb2RlKERXT1JEIGF0dHIpCit7CisgICAgaW50IG0gPSAwOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICBtIHw9IF9TX0lGRElSIHwgMDExMTsgLyogSUZFWEVDIGZvciB1c2VyLGdyb3VwLG90aGVyICovCisgICAgZWxzZQorICAgICAgICBtIHw9IF9TX0lGUkVHOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCisgICAgICAgIG0gfD0gMDQ0NDsKKyAgICBlbHNlCisgICAgICAgIG0gfD0gMDY2NjsKKyAgICByZXR1cm4gbTsKK30KKwordm9pZAorX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HIHJlcGFyc2VfdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQoreworICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemVvZigqcmVzdWx0KSk7CisgICAgcmVzdWx0LT5zdF9tb2RlID0gYXR0cmlidXRlc190b19tb2RlKGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMpOworICAgIHJlc3VsdC0+c3Rfc2l6ZSA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVTaXplSGlnaCk8PDMyKSArIGluZm8tPm5GaWxlU2l6ZUxvdzsKKyAgICByZXN1bHQtPnN0X2RldiA9IGluZm8tPmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworICAgIHJlc3VsdC0+c3RfcmRldiA9IHJlc3VsdC0+c3RfZGV2OworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRDcmVhdGlvblRpbWUsICZyZXN1bHQtPnN0X2N0aW1lLCAmcmVzdWx0LT5zdF9jdGltZV9uc2VjKTsKKyAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdFdyaXRlVGltZSwgJnJlc3VsdC0+c3RfbXRpbWUsICZyZXN1bHQtPnN0X210aW1lX25zZWMpOworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0QWNjZXNzVGltZSwgJnJlc3VsdC0+c3RfYXRpbWUsICZyZXN1bHQtPnN0X2F0aW1lX25zZWMpOworICAgIHJlc3VsdC0+c3RfbmxpbmsgPSBpbmZvLT5uTnVtYmVyT2ZMaW5rczsKKyAgICByZXN1bHQtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZUluZGV4TG93OworICAgIGlmIChyZXBhcnNlX3RhZyA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKSB7CisgICAgICAgIC8qIGZpcnN0IGNsZWFyIHRoZSBTX0lGTVQgYml0cyAqLworICAgICAgICByZXN1bHQtPnN0X21vZGUgXj0gKHJlc3VsdC0+c3RfbW9kZSAmIFNfSUZNVCk7CisgICAgICAgIC8qIG5vdyBzZXQgdGhlIGJpdHMgdGhhdCBtYWtlIHRoaXMgYSBzeW1saW5rICovCisgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSBTX0lGTE5LOwogICAgIH0KLSAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOwotICAgIFB5TWVtX0ZyZWUoZm5hbWUpOwotICAgIHJldHVybiBlcnI7CisgICAgcmVzdWx0LT5zdF9maWxlX2F0dHJpYnV0ZXMgPSBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzOwogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1NUQVQKKy8qIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUuCisKKyAgIE9uIFBPU0lYLCB1c2UgZnN0YXQoKS4KKworICAgT24gV2luZG93cywgdXNlIEdldEZpbGVUeXBlKCkgYW5kIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgd2hpY2ggc3VwcG9ydAorICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4gIGZzdGF0KCkgbWF5IGZhaWwgd2l0aCBFT1ZFUkZMT1cgb24gZmlsZXMgbGFyZ2VyCisgICB0aGFuIDIgR0IgYmVjYXVzZSB0aGUgZmlsZSBzaXplIHR5cGUgaXMgYW4gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyOiBzZWUgaXNzdWUKKyAgICMyMzE1Mi4KKworICAgT24gV2luZG93cywgc2V0IHRoZSBsYXN0IFdpbmRvd3MgZXJyb3IgYW5kIHJldHVybiBub256ZXJvIG9uIGVycm9yLiBPbgorICAgUE9TSVgsIHNldCBlcnJubyBhbmQgcmV0dXJuIG5vbnplcm8gb24gZXJyb3IuIEZpbGwgc3RhdHVzIGFuZCByZXR1cm4gMCBvbgorICAgc3VjY2Vzcy4gKi8KK2ludAorX1B5X2ZzdGF0X25vcmFpc2UoaW50IGZkLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87CisgICAgSEFORExFIGg7CisgICAgaW50IHR5cGU7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgfQorCisgICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgLyogZXJybm8gaXMgYWxyZWFkeSBzZXQgYnkgX2dldF9vc2ZoYW5kbGUsIGJ1dCB3ZSBhbHNvIHNldAorICAgICAgICAgICB0aGUgV2luMzIgZXJyb3IgZm9yIGNhbGxlcnMgd2hvIGV4cGVjdCB0aGF0ICovCisgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9JTlZBTElEX0hBTkRMRSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbWVtc2V0KHN0YXR1cywgMCwgc2l6ZW9mKCpzdGF0dXMpKTsKKworICAgIHR5cGUgPSBHZXRGaWxlVHlwZShoKTsKKyAgICBpZiAodHlwZSA9PSBGSUxFX1RZUEVfVU5LTk9XTikgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZXJyb3IgIT0gMCkgeworICAgICAgICAgICAgZXJybm8gPSB3aW5lcnJvcl90b19lcnJubyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogZWxzZTogdmFsaWQgYnV0IHVua25vd24gZmlsZSAqLworICAgIH0KKworICAgIGlmICh0eXBlICE9IEZJTEVfVFlQRV9ESVNLKSB7CisgICAgICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9DSEFSKQorICAgICAgICAgICAgc3RhdHVzLT5zdF9tb2RlID0gX1NfSUZDSFI7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1BJUEUpCisgICAgICAgICAgICBzdGF0dXMtPnN0X21vZGUgPSBfU19JRklGTzsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoLCAmaW5mbykpIHsKKyAgICAgICAgLyogVGhlIFdpbjMyIGVycm9yIGlzIGFscmVhZHkgc2V0LCBidXQgd2UgYWxzbyBzZXQgZXJybm8gZm9yCisgICAgICAgICAgIGNhbGxlcnMgd2hvIGV4cGVjdCBpdCAqLworICAgICAgICBlcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCAwLCBzdGF0dXMpOworICAgIC8qIHNwZWNpZmljIHRvIGZzdGF0KCkgKi8KKyAgICBzdGF0dXMtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby5uRmlsZUluZGV4SGlnaCk8PDMyKSArIGluZm8ubkZpbGVJbmRleExvdzsKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgcmV0dXJuIGZzdGF0KGZkLCBzdGF0dXMpOworI2VuZGlmCit9CisKKy8qIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUuCisKKyAgIE9uIFBPU0lYLCB1c2UgZnN0YXQoKS4KKworICAgT24gV2luZG93cywgdXNlIEdldEZpbGVUeXBlKCkgYW5kIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgd2hpY2ggc3VwcG9ydAorICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4gIGZzdGF0KCkgbWF5IGZhaWwgd2l0aCBFT1ZFUkZMT1cgb24gZmlsZXMgbGFyZ2VyCisgICB0aGFuIDIgR0IgYmVjYXVzZSB0aGUgZmlsZSBzaXplIHR5cGUgaXMgYW4gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyOiBzZWUgaXNzdWUKKyAgICMyMzE1Mi4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuIE9uIFdpbmRvd3MsIHNldCB0aGUgbGFzdCBXaW5kb3dzCisgICBlcnJvciBvbiBlcnJvci4gT24gUE9TSVgsIHNldCBlcnJubyBvbiBlcnJvci4gRmlsbCBzdGF0dXMgYW5kIHJldHVybiAwIG9uCisgICBzdWNjZXNzLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBHZXRGaWxlVHlwZSgpIGFuZCBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSgpLCBvcgorICAgdG8gY2FsbCBmc3RhdCgpLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgR0lMLiAqLworaW50CitfUHlfZnN0YXQoaW50IGZkLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpCit7CisgICAgaW50IHJlczsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBfUHlfZnN0YXRfbm9yYWlzZShmZCwgc3RhdHVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcyAhPSAwKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyNlbHNlCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQogCiAvKiBDYWxsIF93c3RhdCgpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQKICAgIGNhbGwgc3RhdCgpIG90aGVyd2lzZS4gT25seSBmaWxsIHN0X21vZGUgYXR0cmlidXRlIG9uIFdpbmRvd3MuCkBAIC01NzUsNyArNzMwLDYgQEAKICNlbmRpZgogfQogCi0jZW5kaWYKIAogc3RhdGljIGludAogZ2V0X2luaGVyaXRhYmxlKGludCBmZCwgaW50IHJhaXNlKQpAQCAtNTkwLDcgKzc0NCw5IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTY2NSw3ICs4MjEsOSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC03NjcsNDAgKzkyNSw5MCBAQAogICAgIHJldHVybiBzZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCAxLCBhdG9taWNfZmxhZ193b3Jrcyk7CiB9CiAKLS8qIE9wZW4gYSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBmbGFncyAod3JhcHBlciB0byBvcGVuKCkgZnVuY3Rpb24pLgotICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4gKi8KLWludAotX1B5X29wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncykKK3N0YXRpYyBpbnQKK19QeV9vcGVuX2ltcGwoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgaW50IGdpbF9oZWxkKQogewogICAgIGludCBmZDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyB8IE9fTk9JTkhFUklUKTsKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gZmQ7Ci0jZWxzZQotCisgICAgaW50IGFzeW5jX2VyciA9IDA7CisjaWZuZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzOwotI2lmZGVmIE9fQ0xPRVhFQworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgZmxhZ3MgfD0gT19OT0lOSEVSSVQ7CisjZWxpZiBkZWZpbmVkKE9fQ0xPRVhFQykKICAgICBhdG9taWNfZmxhZ193b3JrcyA9ICZfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogICAgIGZsYWdzIHw9IE9fQ0xPRVhFQzsKICNlbHNlCiAgICAgYXRvbWljX2ZsYWdfd29ya3MgPSBOVUxMOwogI2VuZGlmCi0gICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIGZkOwogCi0gICAgaWYgKHNldF9pbmhlcml0YWJsZShmZCwgMCwgMCwgYXRvbWljX2ZsYWdfd29ya3MpIDwgMCkgeworICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aG5hbWUsIGZsYWdzKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gd2hpbGUgKGZkIDwgMAorICAgICAgICAgICAgICAgICAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgICAgIGlmIChhc3luY19lcnIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19PU0Vycm9yLCBwYXRobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MpOworICAgICAgICBpZiAoZmQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHNldF9pbmhlcml0YWJsZShmZCwgMCwgZ2lsX2hlbGQsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KKyNlbmRpZgorCiAgICAgcmV0dXJuIGZkOwogfQogCisvKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KKyAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbgorICAgZXJyb3IuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKG9wZW4oKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwsCisgICBleGNlcHQgaWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBvcGVuKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitpbnQKK19QeV9vcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCit7CisgICAgLyogX1B5X29wZW4oKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gKi8KKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyAgICByZXR1cm4gX1B5X29wZW5faW1wbChwYXRobmFtZSwgZmxhZ3MsIDEpOworfQorCisvKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KKyAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciBvbiBzdWNjZXNzLiBTZXQgZXJybm8gYW5kIHJldHVybiAtMSBvbiBlcnJvci4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgSWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGZhaWwgd2l0aCBFSU5UUi4gKi8KK2ludAorX1B5X29wZW5fbm9yYWlzZShjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworICAgIHJldHVybiBfUHlfb3Blbl9pbXBsKHBhdGhuYW1lLCBmbGFncywgMCk7Cit9CisKIC8qIE9wZW4gYSBmaWxlLiBVc2UgX3dmb3BlbigpIG9uIFdpbmRvd3MsIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlCi0gICBlbmNvZGluZyBhbmQgdXNlIGZvcGVuKCkgb3RoZXJ3aXNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQKLSAgIG5vbi1pbmhlcml0YWJsZS4gKi8KKyAgIGVuY29kaW5nIGFuZCB1c2UgZm9wZW4oKSBvdGhlcndpc2UuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIElmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBmYWlsIHdpdGggRUlOVFIuICovCiBGSUxFICoKIF9QeV93Zm9wZW4oY29uc3Qgd2NoYXJfdCAqcGF0aCwgY29uc3Qgd2NoYXJfdCAqbW9kZSkKIHsKQEAgLTgxNCw3ICsxMDIyLDcgQEAKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcGF0aCA9IF9QeV93Y2hhcjJjaGFyKHBhdGgsIE5VTEwpOworICAgIGNwYXRoID0gUHlfRW5jb2RlTG9jYWxlKHBhdGgsIE5VTEwpOwogICAgIGlmIChjcGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmID0gZm9wZW4oY3BhdGgsIGNtb2RlKTsKQEAgLTgzMSw3ICsxMDM5LDExIEBACiAgICAgcmV0dXJuIGY7CiB9CiAKLS8qIFdyYXBwZXIgdG8gZm9wZW4oKS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4gKi8KKy8qIFdyYXBwZXIgdG8gZm9wZW4oKS4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgSWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGZhaWwgd2l0aCBFSU5UUi4gKi8KIEZJTEUqCiBfUHlfZm9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCiB7CkBAIC04NDYsMjAgKzEwNTgsMzAgQEAKIH0KIAogLyogT3BlbiBhIGZpbGUuIENhbGwgX3dmb3BlbigpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbQotICAgZW5jb2RpbmcgYW5kIGNhbGwgZm9wZW4oKSBvdGhlcndpc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZAotICAgbm9uLWluaGVyaXRhYmxlLgorICAgZW5jb2RpbmcgYW5kIGNhbGwgZm9wZW4oKSBvdGhlcndpc2UuCiAKLSAgIFJldHVybiB0aGUgbmV3IGZpbGUgb2JqZWN0IG9uIHN1Y2Nlc3MsIG9yIE5VTEwgaWYgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW4gb3IKLSAgIChpZiBQeUVycl9PY2N1cnJlZCgpKSBvbiB1bmljb2RlIGVycm9yLiAqLworICAgUmV0dXJuIHRoZSBuZXcgZmlsZSBvYmplY3Qgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTAorICAgb24gZXJyb3IuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKG9wZW4oKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwsCisgICBleGNlcHQgaWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBfd2ZvcGVuKCkgb3IgZm9wZW4oKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQKKyAgIHRoZSBHSUwuICovCiBGSUxFKgogX1B5X2ZvcGVuX29iaihQeU9iamVjdCAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKIHsKICAgICBGSUxFICpmOworICAgIGludCBhc3luY19lcnIgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICp3cGF0aDsKICAgICB3Y2hhcl90IHdtb2RlWzEwXTsKICAgICBpbnQgdXNpemU7CiAKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyIGZpbGUgcGF0aCBleHBlY3RlZCB1bmRlciBXaW5kb3dzLCBnb3QgJVIiLApAQCAtODcxLDI2ICsxMDkzLDI0NyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIG1vZGUsIC0xLCB3bW9kZSwgc2l6ZW9mKHdtb2RlKSk7Ci0gICAgaWYgKHVzaXplID09IDApCisgICAgaWYgKHVzaXplID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZiA9PSBOVUxMCisgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogI2Vsc2UKICAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgY2hhciAqcGF0aF9ieXRlczsKKworICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworCiAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIocGF0aCwgJmJ5dGVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZiA9IGZvcGVuKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbW9kZSk7CisgICAgcGF0aF9ieXRlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBmID0gZm9wZW4ocGF0aF9ieXRlcywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZiA9PSBOVUxMCisgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworCiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICNlbmRpZgotICAgIGlmIChmID09IE5VTEwpCisgICAgaWYgKGFzeW5jX2VycikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1ha2Vfbm9uX2luaGVyaXRhYmxlKGZpbGVubyhmKSkgPCAwKSB7CisKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNldF9pbmhlcml0YWJsZShmaWxlbm8oZiksIDAsIDEsIE5VTEwpIDwgMCkgewogICAgICAgICBmY2xvc2UoZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZjsKIH0KIAorLyogUmVhZCBjb3VudCBieXRlcyBmcm9tIGZkIGludG8gYnVmLgorCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiByZWFkIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudC4KKyAgIElmIHRoZSBjdXJyZW50IGZpbGUgb2Zmc2V0IGlzIGF0IG9yIHBhc3QgdGhlIGVuZCBvZiBmaWxlLCBubyBieXRlcyBhcmUgcmVhZCwKKyAgIGFuZCByZWFkKCkgcmV0dXJucyB6ZXJvLgorCisgICBPbiBlcnJvciwgcmFpc2UgYW4gZXhjZXB0aW9uLCBzZXQgZXJybm8gYW5kIHJldHVybiAtMS4KKworICAgV2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAocmVhZCgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbC4KKyAgIElmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgLTEKKyAgICh0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCkuCisKKyAgIFJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHJlYWQoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK1B5X3NzaXplX3QKK19QeV9yZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgUHlfc3NpemVfdCBuOworICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICAvKiBfUHlfcmVhZCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAorICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGNvdW50ID4gSU5UX01BWCkgeworICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgY291bnQgcGFyYW1ldGVyIG9mIHJlYWQoKSBpcyBhbiBpbnQgKi8KKyAgICAgICAgY291bnQgPSBJTlRfTUFYOworICAgIH0KKyNlbHNlCisgICAgaWYgKGNvdW50ID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgLyogaWYgY291bnQgaXMgZ3JlYXRlciB0aGFuIFBZX1NTSVpFX1RfTUFYLAorICAgICAgICAgKiByZWFkKCkgcmVzdWx0IGlzIHVuZGVmaW5lZCAqLworICAgICAgICBjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBuID0gcmVhZChmZCwgYnVmLCAoaW50KWNvdW50KTsKKyNlbHNlCisgICAgICAgIG4gPSByZWFkKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9DaGVja1NpZ25hbHMoKQorICAgICAgICAgKiBhbmQgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKGFzeW5jX2VycikgeworICAgICAgICAvKiByZWFkKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aCBFSU5UUikKKyAgICAgICAgICogYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgYXNzZXJ0KGVycm5vID09IEVJTlRSICYmIFB5RXJyX09jY3VycmVkKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CitfUHlfd3JpdGVfaW1wbChpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBpbnQgZ2lsX2hlbGQpCit7CisgICAgUHlfc3NpemVfdCBuOworICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgaWYgKGdpbF9oZWxkKSB7CisgICAgICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjb3VudCA+IDMyNzY3ICYmIGlzYXR0eShmZCkpIHsKKyAgICAgICAgLyogSXNzdWUgIzExMzk1OiB0aGUgV2luZG93cyBjb25zb2xlIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QKKyAgICAgICAgICAgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmIHN0ZG91dCBtb2RlIGlzCisgICAgICAgICAgIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAorICAgICAgICAgICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuICovCisgICAgICAgIGNvdW50ID0gMzI3Njc7CisgICAgfQorICAgIGVsc2UgaWYgKGNvdW50ID4gSU5UX01BWCkKKyAgICAgICAgY291bnQgPSBJTlRfTUFYOworI2Vsc2UKKyAgICBpZiAoY291bnQgPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAvKiB3cml0ZSgpIHNob3VsZCB0cnVuY2F0ZSBjb3VudCB0byBQWV9TU0laRV9UX01BWCwgYnV0IGl0J3Mgc2FmZXIKKyAgICAgICAgICogdG8gZG8gaXQgb3Vyc2VsZiB0byBoYXZlIGEgcG9ydGFibGUgYmVoYXZpb3VyLiAqLworICAgICAgICBjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGdpbF9oZWxkKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBuID0gd3JpdGUoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfQ2hlY2tTaWduYWxzKCkKKyAgICAgICAgICAgICAqIGFuZCBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVyciA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBuID0gd3JpdGUoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVyciA9PSBFSU5UUik7CisgICAgfQorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAoYXN5bmNfZXJyKSB7CisgICAgICAgIC8qIHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aCBFSU5UUikKKyAgICAgICAgICAgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiAoaWYgZ2lsX2hlbGQgaXMKKyAgICAgICAgICAgbm9uemVybykuICovCisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICBhc3NlcnQoZXJybm8gPT0gRUlOVFIgJiYgKCFnaWxfaGVsZCB8fCBQeUVycl9PY2N1cnJlZCgpKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIGlmIChnaWxfaGVsZCkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyogV3JpdGUgY291bnQgYnl0ZXMgb2YgYnVmIGludG8gZmQuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMsIGl0IGNhbiBiZSBsb3dlciB0aGFuIGNvdW50CisgICBpbmNsdWRpbmcgMC4gT24gZXJyb3IsIHJhaXNlIGFuIGV4Y2VwdGlvbiwgc2V0IGVycm5vIGFuZCByZXR1cm4gLTEuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHdyaXRlKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsLgorICAgSWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAtMQorICAgKHRoZSBzeXNjYWxsIGlzIG5vdCByZXRyaWVkKS4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgd3JpdGUoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK1B5X3NzaXplX3QKK19QeV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIC8qIF9QeV93cml0ZSgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgd3JpdGUoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKKyAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIHJldHVybiBfUHlfd3JpdGVfaW1wbChmZCwgYnVmLCBjb3VudCwgMSk7Cit9CisKKy8qIFdyaXRlIGNvdW50IGJ5dGVzIG9mIGJ1ZiBpbnRvIGZkLgorICoKKyAqIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMsIGl0IGNhbiBiZSBsb3dlciB0aGFuIGNvdW50CisgKiBpbmNsdWRpbmcgMC4gT24gZXJyb3IsIHNldCBlcnJubyBhbmQgcmV0dXJuIC0xLgorICoKKyAqIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHdyaXRlKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsCisgKiB3aXRob3V0IGNhbGxpbmcgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlci4gKi8KK1B5X3NzaXplX3QKK19QeV93cml0ZV9ub3JhaXNlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIF9QeV93cml0ZV9pbXBsKGZkLCBidWYsIGNvdW50LCAwKTsKK30KKwogI2lmZGVmIEhBVkVfUkVBRExJTksKIAogLyogUmVhZCB2YWx1ZSBvZiBzeW1ib2xpYyBsaW5rLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZywgZGVjb2RlCkBAIC05MDUsNyArMTM0OCw3IEBACiAgICAgaW50IHJlczsKICAgICBzaXplX3QgcjE7CiAKLSAgICBjcGF0aCA9IF9QeV93Y2hhcjJjaGFyKHBhdGgsIE5VTEwpOworICAgIGNwYXRoID0gUHlfRW5jb2RlTG9jYWxlKHBhdGgsIE5VTEwpOwogICAgIGlmIChjcGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CkBAIC05MTksNyArMTM2Miw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgY2J1ZltyZXNdID0gJ1wwJzsgLyogYnVmIHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkICovCi0gICAgd2J1ZiA9IF9QeV9jaGFyMndjaGFyKGNidWYsICZyMSk7CisgICAgd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShjYnVmLCAmcjEpOwogICAgIGlmICh3YnVmID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTk1MCw3ICsxMzkzLDcgQEAKICAgICB3Y2hhcl90ICp3cmVzb2x2ZWRfcGF0aDsKICAgICBjaGFyICpyZXM7CiAgICAgc2l6ZV90IHI7Ci0gICAgY3BhdGggPSBfUHlfd2NoYXIyY2hhcihwYXRoLCBOVUxMKTsKKyAgICBjcGF0aCA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKICAgICBpZiAoY3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NjAsNyArMTQwMyw3IEBACiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHdyZXNvbHZlZF9wYXRoID0gX1B5X2NoYXIyd2NoYXIoY3Jlc29sdmVkX3BhdGgsICZyKTsKKyAgICB3cmVzb2x2ZWRfcGF0aCA9IFB5X0RlY29kZUxvY2FsZShjcmVzb2x2ZWRfcGF0aCwgJnIpOwogICAgIGlmICh3cmVzb2x2ZWRfcGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk5Myw3ICsxNDM2LDcgQEAKIAogICAgIGlmIChnZXRjd2QoZm5hbWUsIFB5X0FSUkFZX0xFTkdUSChmbmFtZSkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHduYW1lID0gX1B5X2NoYXIyd2NoYXIoZm5hbWUsICZsZW4pOworICAgIHduYW1lID0gUHlfRGVjb2RlTG9jYWxlKGZuYW1lLCAmbGVuKTsKICAgICBpZiAod25hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPD0gbGVuKSB7CkBAIC0xMDI1LDcgKzE0NjgsOSBAQAogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTAzNSw3ICsxNDgwLDkgQEAKICAgICBmdHlwZSA9IEdldEZpbGVUeXBlKGhhbmRsZSk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZHVwKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC0xMDQ1LDEzICsxNDkyLDE3IEBACiAgICAgLyogQ2hhcmFjdGVyIGZpbGVzIGxpa2UgY29uc29sZSBjYW5ub3QgYmUgbWFrZSBub24taW5oZXJpdGFibGUgKi8KICAgICBpZiAoZnR5cGUgIT0gRklMRV9UWVBFX0NIQVIpIHsKICAgICAgICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIDAsIE5VTEwpIDwgMCkgeworICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KICNlbGlmIGRlZmluZWQoSEFWRV9GQ05UTF9IKSAmJiBkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZmNudGwoZmQsIEZfRFVQRkRfQ0xPRVhFQywgMCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA2MCw3ICsxNTExLDkgQEAKIAogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZHVwKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC0xMDY4LDEwICsxNTIxLDE1MiBAQAogICAgIH0KIAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBOVUxMKSA8IDApIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gZmQ7CiB9CiAKKyNpZm5kZWYgTVNfV0lORE9XUworLyogR2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IuCisgICBSZXR1cm4gMCBpZiB0aGUgT19OT05CTE9DSyBmbGFnIGlzIHNldCwgMSBpZiB0aGUgZmxhZyBpcyBjbGVhcmVkLAorICAgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeV9nZXRfYmxvY2tpbmcoaW50IGZkKQoreworICAgIGludCBmbGFnczsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCwgMCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAoZmxhZ3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAhKGZsYWdzICYgT19OT05CTE9DSyk7Cit9CisKKy8qIFNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KKworICAgU2V0IHRoZSBPX05PTkJMT0NLIGZsYWcgaWYgYmxvY2tpbmcgaXMgRmFsc2UsIGNsZWFyIHRoZSBPX05PTkJMT0NLIGZsYWcKKyAgIG90aGVyd2lzZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeV9zZXRfYmxvY2tpbmcoaW50IGZkLCBpbnQgYmxvY2tpbmcpCit7CisjaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKSAmJiBkZWZpbmVkKEZJT05CSU8pCisgICAgaW50IGFyZyA9ICFibG9ja2luZzsKKyAgICBpZiAoaW9jdGwoZmQsIEZJT05CSU8sICZhcmcpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbHNlCisgICAgaW50IGZsYWdzLCByZXM7CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCwgMCk7CisgICAgaWYgKGZsYWdzID49IDApIHsKKyAgICAgICAgaWYgKGJsb2NraW5nKQorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyAmICh+T19OT05CTE9DSyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBPX05PTkJMT0NLOworCisgICAgICAgIHJlcyA9IGZjbnRsKGZkLCBGX1NFVEZMLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbmRpZgorICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgcmV0dXJuIC0xOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCisvKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KKyAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKKyAqLworCisvKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCisgKiB2YWxpZCBhbmQgcmFpc2UgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgorICogTm9ybWFsbHksIGFuIGludmFsaWQgZmQgaXMgbGlrZWx5IHRvIGJlIGEgQyBwcm9ncmFtIGVycm9yIGFuZCB0aGVyZWZvcmUKKyAqIGFuIGFzc2VydGlvbiBjYW4gYmUgdXNlZnVsLCBidXQgaXQgZG9lcyBjb250cmFkaWN0IHRoZSBQT1NJWCBzdGFuZGFyZAorICogd2hpY2ggZm9yIHdyaXRlKDIpIHN0YXRlczoKKyAqICAgICJPdGhlcndpc2UsIC0xIHNoYWxsIGJlIHJldHVybmVkIGFuZCBlcnJubyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiIKKyAqICAgICJbRUJBREZdIFRoZSBmaWxkZXMgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIG9wZW4gZm9yCisgKiAgICAgd3JpdGluZy4iCisgKiBGdXJ0aGVybW9yZSwgcHl0aG9uIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbnkgb2xkIGludGVnZXIKKyAqIGFzIGEgZmQgYW5kIHNob3VsZCBtZXJlbHkgcmFpc2UgYSBweXRob24gZXhjZXB0aW9uIG9uIGVycm9yLgorICogVGhlIE1pY3Jvc29mdCBDUlQgZG9lc24ndCBwcm92aWRlIGFuIG9mZmljaWFsIHdheSB0byBjaGVjayBmb3IgdGhlCisgKiB2YWxpZGl0eSBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IHdlIGNhbiBlbXVsYXRlIGl0cyBpbnRlcm5hbCBiZWhhdmlvdXIKKyAqIGJ5IHVzaW5nIHRoZSBleHBvcnRlZCBfX3BpbmZvIGRhdGEgbWVtYmVyIGFuZCBrbm93bGVkZ2Ugb2YgdGhlCisgKiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGludm9sdmVkLgorICogVGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSB1cGRhdGVkIGZvciBlYWNoIHZlcnNpb24gb2YgdmlzdWFsIHN0dWRpbworICogYWNjb3JkaW5nIHRvIHRoZSBmaWxlIGludGVybmFsLmggaW4gdGhlIENSVCBzb3VyY2UsIHVudGlsIE1TIGNvbWVzCisgKiB1cCB3aXRoIGEgbGVzcyBoYWNreSB3YXkgdG8gZG8gdGhpcy4KKyAqIChhbGwgb2YgdGhpcyBpcyB0byBhdm9pZCBnbG9iYWxseSBtb2RpZnlpbmcgdGhlIENSVCBiZWhhdmlvdXIgdXNpbmcKKyAqIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpIGFuZCBfQ3J0U2V0UmVwb3J0TW9kZSgpKQorICovCisvKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCisgKiBPbmx5IHRoZSBmaXJzdCBpdGVtcyBtdXN0IGJlIHByZXNlbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnRwdHJfdCBvc2ZobmQ7CisgICAgY2hhciBvc2ZpbGU7Cit9IG15X2lvaW5mbzsKKworZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyICogX19waW9pbmZvW107CisjZGVmaW5lIElPSU5GT19MMkUgNQorI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0CisjZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKKyNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQorI2RlZmluZSBGT1BFTiAweDAxCisjZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKKworLyogVGhpcyBmdW5jdGlvbiBlbXVsYXRlcyB3aGF0IHRoZSB3aW5kb3dzIENSVCBkb2VzIHRvIHZhbGlkYXRlIGZpbGUgaGFuZGxlcyAqLworaW50CitfUHlWZXJpZnlfZmQoaW50IGZkKQoreworICAgIGNvbnN0IGludCBpMSA9IGZkID4+IElPSU5GT19MMkU7CisgICAgY29uc3QgaW50IGkyID0gZmQgJiAoKDEgPDwgSU9JTkZPX0wyRSkgLSAxKTsKKworICAgIHN0YXRpYyBzaXplX3Qgc2l6ZW9mX2lvaW5mbyA9IDA7CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBpb2luZm8gc3RydWN0dXJlLAorICAgICAqIGFzIHVzZWQgYnkgdGhlIENSVCBsb2FkZWQgaW4gbWVtb3J5CisgICAgICovCisgICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCAmJiBfX3Bpb2luZm9bMF0gIT0gTlVMTCkgeworICAgICAgICBzaXplb2ZfaW9pbmZvID0gX21zaXplKF9fcGlvaW5mb1swXSkgLyBJT0lORk9fQVJSQVlfRUxUUzsKKyAgICB9CisgICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCkgeworICAgICAgICAvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLi4uICovCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICAvKiBTZWUgdGhhdCBpdCBpc24ndCBhIHNwZWNpYWwgQ0xFQVIgZmlsZW5vICovCisgICAgaWYgKGZkICE9IF9OT19DT05TT0xFX0ZJTEVOTykgeworICAgICAgICAvKiBNaWNyb3NvZnQgQ1JUIHdvdWxkIGNoZWNrIHRoYXQgMDw9ZmQ8X25oYW5kbGUgYnV0IHdlIGNhbid0IGRvIHRoYXQuICBJbnN0ZWFkCisgICAgICAgICAqIHdlIGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkgYW5kIG90aGVyIGluZm8KKyAgICAgICAgICovCisgICAgICAgIGlmICgwIDw9IGkxICYmIGkxIDwgSU9JTkZPX0FSUkFZUyAmJiBfX3Bpb2luZm9baTFdICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIGZpbmFsbHksIGNoZWNrIHRoYXQgdGhlIGZpbGUgaXMgb3BlbiAqLworICAgICAgICAgICAgbXlfaW9pbmZvKiBpbmZvID0gKG15X2lvaW5mbyopKF9fcGlvaW5mb1tpMV0gKyBpMiAqIHNpemVvZl9pb2luZm8pOworICAgICAgICAgICAgaWYgKGluZm8tPm9zZmlsZSAmIEZPUEVOKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgIGZhaWw6CisgICAgZXJybm8gPSBFQkFERjsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggZTNhODE0OS4uMDU2YmI3NiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTg0Niw2ICs4NDYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KKyAgICAgICAgLyogZXJyb3IgdG8gcmVxdWVzdCBhbHRlcm5hdGUgZm9ybWF0ICovCisgICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAKICAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCiAgICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggOWJjNjYyYi4uNjc2ZjM5NSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMyw2ICszLDcgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImltcG9ydGxpYi5oIgorI2luY2x1ZGUgImltcG9ydGxpYl9leHRlcm5hbC5oIgogCiAvKiBJbiBvcmRlciB0byB0ZXN0IHRoZSBzdXBwb3J0IGZvciBmcm96ZW4gbW9kdWxlcywgYnkgZGVmYXVsdCB3ZQogICAgZGVmaW5lIGEgc2luZ2xlIGZyb3plbiBtb2R1bGUsIF9faGVsbG9fXy4gIExvYWRpbmcgaXQgd2lsbCBwcmludApAQCAtMzEsNiArMzIsOCBAQAogc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgLyogaW1wb3J0bGliICovCiAgICAgeyJfZnJvemVuX2ltcG9ydGxpYiIsIF9QeV9NX19pbXBvcnRsaWIsIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWIpfSwKKyAgICB7Il9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsIiwgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbCwKKyAgICAgICAgKGludClzaXplb2YoX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbCl9LAogICAgIC8qIFRlc3QgbW9kdWxlICovCiAgICAgeyJfX2hlbGxvX18iLCBNX19faGVsbG9fXywgU0laRX0sCiAgICAgLyogVGVzdCBwYWNrYWdlIChuZWdhdGl2ZSBzaXplIGluZGljYXRlcyBwYWNrYWdlLW5lc3MpICovCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVubWFpbi5jIGIvUHl0aG9uL2Zyb3plbm1haW4uYwppbmRleCBiMDVjOTRhLi5kZThiZDM1IDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVubWFpbi5jCisrKyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGFyZ3ZfY29weVtpXSA9IF9QeV9jaGFyMndjaGFyKGFyZ3ZbaV0sIE5VTEwpOworICAgICAgICBhcmd2X2NvcHlbaV0gPSBQeV9EZWNvZGVMb2NhbGUoYXJndltpXSwgTlVMTCk7CiAgICAgICAgIGFyZ3ZfY29weTJbaV0gPSBhcmd2X2NvcHlbaV07CiAgICAgICAgIGlmICghYXJndl9jb3B5W2ldKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCmRpZmYgLS1naXQgYS9QeXRob24vZnV0dXJlLmMgYi9QeXRob24vZnV0dXJlLmMKaW5kZXggODFlYWI1NC4uMTYzZjg3ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Z1dHVyZS5jCisrKyBiL1B5dGhvbi9mdXR1cmUuYwpAQCAtNDAsNiArNDAsOCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsIEZVVFVSRV9CQVJSWV9BU19CREZMKSA9PSAwKSB7CiAgICAgICAgICAgICBmZi0+ZmZfZmVhdHVyZXMgfD0gQ09fRlVUVVJFX0JBUlJZX0FTX0JERkw7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsIEZVVFVSRV9HRU5FUkFUT1JfU1RPUCkgPT0gMCkgeworICAgICAgICAgICAgZmYtPmZmX2ZlYXR1cmVzIHw9IENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUDsKICAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZmVhdHVyZSwgImJyYWNlcyIpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGEgY2hhbmNlIik7CmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCA2OTAyZDEzLi5jMzY1ZmMyIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTg3MiwxMCArODcyLDEwIEBACiAgICAgICAgICAgICBTVE9SRV9TSVpFKGNvdW50KTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0cmxlbigqcCkgIT0gY291bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJieXRlcyB3aXRob3V0IG51bGwgYnl0ZXMiLAotICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICBpZiAoc3RybGVuKCpwKSAhPSAoc2l6ZV90KWNvdW50KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk0OCwxNiArOTQ4LDE1IEBACiAgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKHN0cmxlbihzYXJnKSAhPSAoc2l6ZV90KWxlbikgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICpwID0gc2FyZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihjID09ICd6JyA/ICJzdHIgb3IgTm9uZSIgOiAic3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiBzYXJnICE9IE5VTEwgJiYgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gbGVuKQotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk5NSwxMCArOTk0LDEwIEBACiAgICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZsZW4pOwogICAgICAgICAgICAgICAgIGlmICgqcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gbGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSAoc2l6ZV90KWxlbikgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAnWicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTI0Niw3ICsxMjQ1LDggQEAKICAgICAgICAgICAgc3VwcG9ydHMgaXQgZGlyZWN0bHkuICovCiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCBQeUJVRl9XUklUQUJMRSkgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInJlYWQtd3JpdGUgYnVmZmVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInJlYWQtd3JpdGUgYnl0ZXMtbGlrZSBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGlmICghUHlCdWZmZXJfSXNDb250aWd1b3VzKChQeV9idWZmZXIqKXAsICdDJykpIHsKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKFB5X2J1ZmZlciopcCk7CkBAIC0xMjg0LDcgKzEyODQsNyBAQAogICAgICplcnJtc2cgPSBOVUxMOwogICAgICpwID0gTlVMTDsKICAgICBpZiAocGIgIT0gTlVMTCAmJiBwYi0+YmZfcmVsZWFzZWJ1ZmZlciAhPSBOVUxMKSB7Ci0gICAgICAgICplcnJtc2cgPSAicmVhZC1vbmx5IHBpbm5lZCBidWZmZXIiOworICAgICAgICAqZXJybXNnID0gInJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCI7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTEzMDAsNyArMTMwMCw3IEBACiBnZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQogewogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKLSAgICAgICAgKmVycm1zZyA9ICJieXRlcyBvciBidWZmZXIiOworICAgICAgICAqZXJybXNnID0gImJ5dGVzLWxpa2Ugb2JqZWN0IjsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnQycpKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IGUwNDk5OWIuLjE0YWMyNGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC05MiwzOTMgKzkyLDQwNiBAQAogc3RhdGljIGFyYyBhcmNzXzVfMFsxXSA9IHsKICAgICB7MTYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNV8xWzNdID0gewogICAgIHsxOCwgMn0sCiAgICAgezE5LCAyfSwKKyAgICB7MjAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNVszXSA9IHsKICAgICB7MSwgYXJjc181XzB9LAotICAgIHsyLCBhcmNzXzVfMX0sCisgICAgezMsIGFyY3NfNV8xfSwKICAgICB7MSwgYXJjc181XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzBbMV0gPSB7Ci0gICAgezIwLCAxfSwKKyAgICB7MjEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKKyAgICB7MTksIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzJbMV0gPSB7Ci0gICAgezIyLCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzZfM1syXSA9IHsKLSAgICB7MjMsIDR9LAotICAgIHsyNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfNFsxXSA9IHsKLSAgICB7MjQsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzVbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNl82WzFdID0gewotICAgIHsyNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182WzhdID0geworc3RhdGljIHN0YXRlIHN0YXRlc182WzNdID0gewogICAgIHsxLCBhcmNzXzZfMH0sCiAgICAgezEsIGFyY3NfNl8xfSwKICAgICB7MSwgYXJjc182XzJ9LAotICAgIHsyLCBhcmNzXzZfM30sCi0gICAgezEsIGFyY3NfNl80fSwKLSAgICB7MSwgYXJjc182XzV9LAotICAgIHsxLCBhcmNzXzZfNn0sCi0gICAgezEsIGFyY3NfNl83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfN18wWzFdID0gewotICAgIHsxMywgMX0sCisgICAgezIyLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfN18xWzJdID0gewotICAgIHsyNywgMn0sCi0gICAgezE1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183XzFbMV0gPSB7CisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfN18yWzFdID0gewotICAgIHsxNSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzdfM1sxXSA9IHsKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183WzRdID0gewotICAgIHsxLCBhcmNzXzdfMH0sCi0gICAgezIsIGFyY3NfN18xfSwKLSAgICB7MSwgYXJjc183XzJ9LAotICAgIHsxLCBhcmNzXzdfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMFszXSA9IHsKLSAgICB7MjgsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xWzNdID0gewotICAgIHsyOSwgNH0sCi0gICAgezMwLCA1fSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMlszXSA9IHsKLSAgICB7MjgsIDZ9LAotICAgIHszMCwgN30sCi0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzNbMV0gPSB7Ci0gICAgezI4LCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF80WzFdID0gewotICAgIHsyNCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNVs0XSA9IHsKLSAgICB7MjgsIDEwfSwKLSAgICB7MzEsIDExfSwKLSAgICB7MzIsIDN9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF82WzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzdbMl0gPSB7Ci0gICAgezI4LCAxMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF84WzFdID0gewotICAgIHswLCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF85WzJdID0gewotICAgIHszMCwgNX0sCi0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEwWzNdID0gewotICAgIHszMCwgNX0sCi0gICAgezI5LCA0fSwKLSAgICB7MCwgMTB9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzExWzNdID0gewotICAgIHsyOCwgMTN9LAotICAgIHszMCwgMTR9LAotICAgIHswLCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTJbM10gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MjksIDE1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEzWzJdID0gewotICAgIHszMCwgMTR9LAotICAgIHswLCAxM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTRbMl0gPSB7Ci0gICAgezI4LCAxNn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xNVsxXSA9IHsKLSAgICB7MjQsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE2WzNdID0gewotICAgIHszMCwgMTR9LAotICAgIHsyOSwgMTd9LAotICAgIHswLCAxNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTdbMV0gPSB7Ci0gICAgezI0LCAxM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc184WzE4XSA9IHsKLSAgICB7MywgYXJjc184XzB9LAotICAgIHszLCBhcmNzXzhfMX0sCi0gICAgezMsIGFyY3NfOF8yfSwKLSAgICB7MSwgYXJjc184XzN9LAotICAgIHsxLCBhcmNzXzhfNH0sCi0gICAgezQsIGFyY3NfOF81fSwKLSAgICB7MiwgYXJjc184XzZ9LAotICAgIHsyLCBhcmNzXzhfN30sCi0gICAgezEsIGFyY3NfOF84fSwKLSAgICB7MiwgYXJjc184Xzl9LAotICAgIHszLCBhcmNzXzhfMTB9LAotICAgIHszLCBhcmNzXzhfMTF9LAotICAgIHszLCBhcmNzXzhfMTJ9LAotICAgIHsyLCBhcmNzXzhfMTN9LAotICAgIHsyLCBhcmNzXzhfMTR9LAotICAgIHsxLCBhcmNzXzhfMTV9LAotICAgIHszLCBhcmNzXzhfMTZ9LAotICAgIHsxLCBhcmNzXzhfMTd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc185XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xWzJdID0gewotICAgIHsyNSwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc185XzJbMV0gPSB7CiAgICAgezI0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzdfM1syXSA9IHsKKyAgICB7MjUsIDR9LAorICAgIHsyNywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfNFsxXSA9IHsKKyAgICB7MjYsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzVbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfN182WzFdID0geworICAgIHsyNywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183WzhdID0geworICAgIHsxLCBhcmNzXzdfMH0sCisgICAgezEsIGFyY3NfN18xfSwKKyAgICB7MSwgYXJjc183XzJ9LAorICAgIHsyLCBhcmNzXzdfM30sCisgICAgezEsIGFyY3NfN180fSwKKyAgICB7MSwgYXJjc183XzV9LAorICAgIHsxLCBhcmNzXzdfNn0sCisgICAgezEsIGFyY3NfN183fSwKK307CitzdGF0aWMgYXJjIGFyY3NfOF8wWzFdID0geworICAgIHsxMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMVsyXSA9IHsKKyAgICB7MjksIDJ9LAorICAgIHsxNSwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMlsxXSA9IHsKKyAgICB7MTUsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOVs0XSA9IHsKLSAgICB7MSwgYXJjc185XzB9LAotICAgIHsyLCBhcmNzXzlfMX0sCi0gICAgezEsIGFyY3NfOV8yfSwKLSAgICB7MSwgYXJjc185XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc184WzRdID0geworICAgIHsxLCBhcmNzXzhfMH0sCisgICAgezIsIGFyY3NfOF8xfSwKKyAgICB7MSwgYXJjc184XzJ9LAorICAgIHsxLCBhcmNzXzhfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzBbM10gPSB7Ci0gICAgezM0LCAxfSwKLSAgICB7MzEsIDJ9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV8wWzNdID0geworICAgIHszMCwgMX0sCisgICAgezMzLCAyfSwKKyAgICB7MzQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xWzNdID0gewotICAgIHsyOSwgNH0sCi0gICAgezMwLCA1fSwKK3N0YXRpYyBhcmMgYXJjc185XzFbM10gPSB7CisgICAgezMxLCA0fSwKKyAgICB7MzIsIDV9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMlszXSA9IHsKLSAgICB7MzQsIDZ9LAotICAgIHszMCwgN30sCitzdGF0aWMgYXJjIGFyY3NfOV8yWzNdID0geworICAgIHszMCwgNn0sCisgICAgezMyLCA3fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzNbMV0gPSB7Ci0gICAgezM0LCA4fSwKK3N0YXRpYyBhcmMgYXJjc185XzNbMV0gPSB7CisgICAgezMwLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNFsxXSA9IHsKLSAgICB7MjQsIDl9LAorc3RhdGljIGFyYyBhcmNzXzlfNFsxXSA9IHsKKyAgICB7MjYsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF81WzRdID0gewotICAgIHszNCwgMTB9LAotICAgIHszMSwgMTF9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV81WzRdID0geworICAgIHszMCwgMTB9LAorICAgIHszMywgMTF9LAorICAgIHszNCwgM30sCiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF82WzJdID0gewotICAgIHszMCwgN30sCitzdGF0aWMgYXJjIGFyY3NfOV82WzJdID0geworICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF83WzJdID0gewotICAgIHszNCwgMTJ9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV83WzJdID0geworICAgIHszMCwgMTJ9LAorICAgIHszNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV84WzFdID0gewogICAgIHswLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfOVsyXSA9IHsKLSAgICB7MzAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzlfOVsyXSA9IHsKKyAgICB7MzIsIDV9LAogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTBbM10gPSB7Ci0gICAgezMwLCA1fSwKLSAgICB7MjksIDR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTBbM10gPSB7CisgICAgezMyLCA1fSwKKyAgICB7MzEsIDR9LAogICAgIHswLCAxMH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzExWzNdID0gewotICAgIHszNCwgMTN9LAotICAgIHszMCwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTFbM10gPSB7CisgICAgezMwLCAxM30sCisgICAgezMyLCAxNH0sCiAgICAgezAsIDExfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTJbM10gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MjksIDE1fSwKK3N0YXRpYyBhcmMgYXJjc185XzEyWzNdID0geworICAgIHszMiwgN30sCisgICAgezMxLCAxNX0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTNbMl0gPSB7Ci0gICAgezMwLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfOV8xM1syXSA9IHsKKyAgICB7MzIsIDE0fSwKICAgICB7MCwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xNFsyXSA9IHsKLSAgICB7MzQsIDE2fSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfMTRbMl0gPSB7CisgICAgezMwLCAxNn0sCisgICAgezM0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTVbMV0gPSB7Ci0gICAgezI0LCA2fSwKK3N0YXRpYyBhcmMgYXJjc185XzE1WzFdID0geworICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE2WzNdID0gewotICAgIHszMCwgMTR9LAotICAgIHsyOSwgMTd9LAorc3RhdGljIGFyYyBhcmNzXzlfMTZbM10gPSB7CisgICAgezMyLCAxNH0sCisgICAgezMxLCAxN30sCiAgICAgezAsIDE2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTdbMV0gPSB7Ci0gICAgezI0LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfOV8xN1sxXSA9IHsKKyAgICB7MjYsIDEzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzEwWzE4XSA9IHsKLSAgICB7MywgYXJjc18xMF8wfSwKLSAgICB7MywgYXJjc18xMF8xfSwKLSAgICB7MywgYXJjc18xMF8yfSwKLSAgICB7MSwgYXJjc18xMF8zfSwKLSAgICB7MSwgYXJjc18xMF80fSwKLSAgICB7NCwgYXJjc18xMF81fSwKLSAgICB7MiwgYXJjc18xMF82fSwKLSAgICB7MiwgYXJjc18xMF83fSwKLSAgICB7MSwgYXJjc18xMF84fSwKLSAgICB7MiwgYXJjc18xMF85fSwKLSAgICB7MywgYXJjc18xMF8xMH0sCi0gICAgezMsIGFyY3NfMTBfMTF9LAotICAgIHszLCBhcmNzXzEwXzEyfSwKLSAgICB7MiwgYXJjc18xMF8xM30sCi0gICAgezIsIGFyY3NfMTBfMTR9LAotICAgIHsxLCBhcmNzXzEwXzE1fSwKLSAgICB7MywgYXJjc18xMF8xNn0sCi0gICAgezEsIGFyY3NfMTBfMTd9LAorc3RhdGljIHN0YXRlIHN0YXRlc185WzE4XSA9IHsKKyAgICB7MywgYXJjc185XzB9LAorICAgIHszLCBhcmNzXzlfMX0sCisgICAgezMsIGFyY3NfOV8yfSwKKyAgICB7MSwgYXJjc185XzN9LAorICAgIHsxLCBhcmNzXzlfNH0sCisgICAgezQsIGFyY3NfOV81fSwKKyAgICB7MiwgYXJjc185XzZ9LAorICAgIHsyLCBhcmNzXzlfN30sCisgICAgezEsIGFyY3NfOV84fSwKKyAgICB7MiwgYXJjc185Xzl9LAorICAgIHszLCBhcmNzXzlfMTB9LAorICAgIHszLCBhcmNzXzlfMTF9LAorICAgIHszLCBhcmNzXzlfMTJ9LAorICAgIHsyLCBhcmNzXzlfMTN9LAorICAgIHsyLCBhcmNzXzlfMTR9LAorICAgIHsxLCBhcmNzXzlfMTV9LAorICAgIHszLCBhcmNzXzlfMTZ9LAorICAgIHsxLCBhcmNzXzlfMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8wWzFdID0gewotICAgIHsyMSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfMFsxXSA9IHsKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzEwXzFbMl0gPSB7CisgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMVsyXSA9IHsKLSAgICB7MSwgYXJjc18xMV8wfSwKLSAgICB7MSwgYXJjc18xMV8xfSwKK3N0YXRpYyBhcmMgYXJjc18xMF8yWzFdID0geworICAgIHsyNiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEyXzBbMl0gPSB7Ci0gICAgezMsIDF9LAotICAgIHs0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xMF8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzEwWzRdID0geworICAgIHsxLCBhcmNzXzEwXzB9LAorICAgIHsyLCBhcmNzXzEwXzF9LAorICAgIHsxLCBhcmNzXzEwXzJ9LAorICAgIHsxLCBhcmNzXzEwXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8wWzNdID0geworICAgIHszNiwgMX0sCisgICAgezMzLCAyfSwKKyAgICB7MzQsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xWzNdID0geworICAgIHszMSwgNH0sCisgICAgezMyLCA1fSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzJbM10gPSB7CisgICAgezM2LCA2fSwKKyAgICB7MzIsIDd9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfM1sxXSA9IHsKKyAgICB7MzYsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV80WzFdID0geworICAgIHsyNiwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzVbNF0gPSB7CisgICAgezM2LCAxMH0sCisgICAgezMzLCAxMX0sCisgICAgezM0LCAzfSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzZbMl0gPSB7CisgICAgezMyLCA3fSwKKyAgICB7MCwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzdbMl0gPSB7CisgICAgezM2LCAxMn0sCisgICAgezM0LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfOFsxXSA9IHsKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzlbMl0gPSB7CisgICAgezMyLCA1fSwKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzEwWzNdID0geworICAgIHszMiwgNX0sCisgICAgezMxLCA0fSwKKyAgICB7MCwgMTB9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMVszXSA9IHsKKyAgICB7MzYsIDEzfSwKKyAgICB7MzIsIDE0fSwKKyAgICB7MCwgMTF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMlszXSA9IHsKKyAgICB7MzIsIDd9LAorICAgIHszMSwgMTV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzEzWzJdID0geworICAgIHszMiwgMTR9LAorICAgIHswLCAxM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE0WzJdID0geworICAgIHszNiwgMTZ9LAorICAgIHszNCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE1WzFdID0geworICAgIHsyNiwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE2WzNdID0geworICAgIHszMiwgMTR9LAorICAgIHszMSwgMTd9LAorICAgIHswLCAxNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE3WzFdID0geworICAgIHsyNiwgMTN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMThdID0geworICAgIHszLCBhcmNzXzExXzB9LAorICAgIHszLCBhcmNzXzExXzF9LAorICAgIHszLCBhcmNzXzExXzJ9LAorICAgIHsxLCBhcmNzXzExXzN9LAorICAgIHsxLCBhcmNzXzExXzR9LAorICAgIHs0LCBhcmNzXzExXzV9LAorICAgIHsyLCBhcmNzXzExXzZ9LAorICAgIHsyLCBhcmNzXzExXzd9LAorICAgIHsxLCBhcmNzXzExXzh9LAorICAgIHsyLCBhcmNzXzExXzl9LAorICAgIHszLCBhcmNzXzExXzEwfSwKKyAgICB7MywgYXJjc18xMV8xMX0sCisgICAgezMsIGFyY3NfMTFfMTJ9LAorICAgIHsyLCBhcmNzXzExXzEzfSwKKyAgICB7MiwgYXJjc18xMV8xNH0sCisgICAgezEsIGFyY3NfMTFfMTV9LAorICAgIHszLCBhcmNzXzExXzE2fSwKKyAgICB7MSwgYXJjc18xMV8xN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzEyXzBbMV0gPSB7CisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTJfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18xMlsyXSA9IHsKLSAgICB7MiwgYXJjc18xMl8wfSwKKyAgICB7MSwgYXJjc18xMl8wfSwKICAgICB7MSwgYXJjc18xMl8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMFsxXSA9IHsKLSAgICB7MzUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzEzXzBbMl0gPSB7CisgICAgezMsIDF9LAorICAgIHs0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMVsyXSA9IHsKLSAgICB7MzYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzEzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTNbMl0gPSB7CisgICAgezIsIGFyY3NfMTNfMH0sCisgICAgezEsIGFyY3NfMTNfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE0XzBbMV0gPSB7CisgICAgezM3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTRfMVsyXSA9IHsKKyAgICB7MzgsIDJ9LAogICAgIHsyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMlsyXSA9IHsKLSAgICB7MzUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE0XzJbMl0gPSB7CisgICAgezM3LCAxfSwKICAgICB7MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTRfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xM1s0XSA9IHsKLSAgICB7MSwgYXJjc18xM18wfSwKLSAgICB7MiwgYXJjc18xM18xfSwKLSAgICB7MiwgYXJjc18xM18yfSwKLSAgICB7MSwgYXJjc18xM18zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTRbNF0gPSB7CisgICAgezEsIGFyY3NfMTRfMH0sCisgICAgezIsIGFyY3NfMTRfMX0sCisgICAgezIsIGFyY3NfMTRfMn0sCisgICAgezEsIGFyY3NfMTRfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE0XzBbOF0gPSB7Ci0gICAgezM3LCAxfSwKLSAgICB7MzgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE1XzBbOF0gPSB7CiAgICAgezM5LCAxfSwKICAgICB7NDAsIDF9LAogICAgIHs0MSwgMX0sCiAgICAgezQyLCAxfSwKICAgICB7NDMsIDF9LAogICAgIHs0NCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE0XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTRbMl0gPSB7Ci0gICAgezgsIGFyY3NfMTRfMH0sCi0gICAgezEsIGFyY3NfMTRfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE1XzBbMV0gPSB7CiAgICAgezQ1LCAxfSwKKyAgICB7NDYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8xWzNdID0gewotICAgIHs0NiwgMn0sCi0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18xNV8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfMlsyXSA9IHsKLSAgICB7NDcsIDR9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xNVsyXSA9IHsKKyAgICB7OCwgYXJjc18xNV8wfSwKKyAgICB7MSwgYXJjc18xNV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfMFsxXSA9IHsKKyAgICB7NDcsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl8xWzNdID0geworICAgIHs0OCwgMn0sCisgICAgezMxLCAzfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzJbMl0gPSB7CisgICAgezQ5LCA0fSwKICAgICB7OSwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzNbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfM1syXSA9IHsKKyAgICB7NDksIDV9LAogICAgIHs0NywgNX0sCi0gICAgezQ1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xNl80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfNVsyXSA9IHsKLSAgICB7MjksIDN9LAorc3RhdGljIGFyYyBhcmNzXzE2XzVbMl0gPSB7CisgICAgezMxLCAzfSwKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xNVs2XSA9IHsKLSAgICB7MSwgYXJjc18xNV8wfSwKLSAgICB7MywgYXJjc18xNV8xfSwKLSAgICB7MiwgYXJjc18xNV8yfSwKLSAgICB7MiwgYXJjc18xNV8zfSwKLSAgICB7MSwgYXJjc18xNV80fSwKLSAgICB7MiwgYXJjc18xNV81fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbNl0gPSB7CisgICAgezEsIGFyY3NfMTZfMH0sCisgICAgezMsIGFyY3NfMTZfMX0sCisgICAgezIsIGFyY3NfMTZfMn0sCisgICAgezIsIGFyY3NfMTZfM30sCisgICAgezEsIGFyY3NfMTZfNH0sCisgICAgezIsIGFyY3NfMTZfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8xWzJdID0gewotICAgIHszMCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMlszXSA9IHsKLSAgICB7MjQsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMlszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MCwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbM10gPSB7Ci0gICAgezIsIGFyY3NfMTZfMH0sCi0gICAgezIsIGFyY3NfMTZfMX0sCi0gICAgezMsIGFyY3NfMTZfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzNdID0geworICAgIHsyLCBhcmNzXzE3XzB9LAorICAgIHsyLCBhcmNzXzE3XzF9LAorICAgIHszLCBhcmNzXzE3XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18wWzEyXSA9IHsKLSAgICB7NDksIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMThfMFsxM10gPSB7CiAgICAgezUxLCAxfSwKICAgICB7NTIsIDF9LAogICAgIHs1MywgMX0sCkBAIC00ODksNjQgKzUwMiw1NyBAQAogICAgIHs1OCwgMX0sCiAgICAgezU5LCAxfSwKICAgICB7NjAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzJdID0gewotICAgIHsxMiwgYXJjc18xN18wfSwKLSAgICB7MSwgYXJjc18xN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMFsxXSA9IHsKICAgICB7NjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewotICAgIHs2MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbM10gPSB7Ci0gICAgezEsIGFyY3NfMThfMH0sCi0gICAgezEsIGFyY3NfMThfMX0sCi0gICAgezEsIGFyY3NfMThfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CisgICAgezYyLCAxfSwKICAgICB7NjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzE4XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzJdID0geworICAgIHsxMywgYXJjc18xOF8wfSwKKyAgICB7MSwgYXJjc18xOF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTlfMFsxXSA9IHsKKyAgICB7NjQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0geworICAgIHs2NSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE5XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbM10gPSB7CiAgICAgezEsIGFyY3NfMTlfMH0sCiAgICAgezEsIGFyY3NfMTlfMX0sCisgICAgezEsIGFyY3NfMTlfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIwXzBbNV0gPSB7Ci0gICAgezY0LCAxfSwKLSAgICB7NjUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7CiAgICAgezY2LCAxfSwKLSAgICB7NjcsIDF9LAotICAgIHs2OCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbMl0gPSB7Ci0gICAgezUsIGFyY3NfMjBfMH0sCisgICAgezEsIGFyY3NfMjBfMH0sCiAgICAgezEsIGFyY3NfMjBfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIxXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjFfMFs1XSA9IHsKKyAgICB7NjcsIDF9LAorICAgIHs2OCwgMX0sCiAgICAgezY5LCAxfSwKKyAgICB7NzAsIDF9LAorICAgIHs3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIxXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjFbMl0gPSB7Ci0gICAgezEsIGFyY3NfMjFfMH0sCisgICAgezUsIGFyY3NfMjFfMH0sCiAgICAgezEsIGFyY3NfMjFfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIyXzBbMV0gPSB7Ci0gICAgezcwLCAxfSwKKyAgICB7NzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8xWzFdID0gewogICAgIHswLCAxfSwKQEAgLTU1NiwxNDggKzU2MiwxMzkgQEAKICAgICB7MSwgYXJjc18yMl8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjNfMFsxXSA9IHsKLSAgICB7NzEsIDF9LAorICAgIHs3MywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIzXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjNfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yM1syXSA9IHsKKyAgICB7MSwgYXJjc18yM18wfSwKKyAgICB7MSwgYXJjc18yM18xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKKyAgICB7NzQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNF8xWzJdID0gewogICAgIHs5LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIzXzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjRfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yM1szXSA9IHsKLSAgICB7MSwgYXJjc18yM18wfSwKLSAgICB7MiwgYXJjc18yM18xfSwKLSAgICB7MSwgYXJjc18yM18yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKLSAgICB7NDcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNFszXSA9IHsKICAgICB7MSwgYXJjc18yNF8wfSwKLSAgICB7MSwgYXJjc18yNF8xfSwKKyAgICB7MiwgYXJjc18yNF8xfSwKKyAgICB7MSwgYXJjc18yNF8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKLSAgICB7NzIsIDF9LAorICAgIHs0OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI1XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18yNV8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMlsyXSA9IHsKLSAgICB7NzMsIDN9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfM1sxXSA9IHsKLSAgICB7MjQsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzVdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNVsyXSA9IHsKICAgICB7MSwgYXJjc18yNV8wfSwKLSAgICB7MiwgYXJjc18yNV8xfSwKLSAgICB7MiwgYXJjc18yNV8yfSwKLSAgICB7MSwgYXJjc18yNV8zfSwKLSAgICB7MSwgYXJjc18yNV80fSwKKyAgICB7MSwgYXJjc18yNV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMFsyXSA9IHsKLSAgICB7NzQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzI2XzBbMV0gPSB7CiAgICAgezc1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8xWzJdID0geworICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbMl0gPSB7Ci0gICAgezIsIGFyY3NfMjZfMH0sCi0gICAgezEsIGFyY3NfMjZfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzBbMV0gPSB7Ci0gICAgezc2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKLSAgICB7NzcsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI2XzJbMl0gPSB7CisgICAgezc2LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yN1szXSA9IHsKLSAgICB7MSwgYXJjc18yN18wfSwKLSAgICB7MSwgYXJjc18yN18xfSwKLSAgICB7MSwgYXJjc18yN18yfSwKK3N0YXRpYyBhcmMgYXJjc18yNl8zWzFdID0geworICAgIHsyNiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7Ci0gICAgezczLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yNl80WzFdID0geworICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMVszXSA9IHsKLSAgICB7NzgsIDJ9LAotICAgIHs3OSwgMn0sCi0gICAgezEyLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbNV0gPSB7CisgICAgezEsIGFyY3NfMjZfMH0sCisgICAgezIsIGFyY3NfMjZfMX0sCisgICAgezIsIGFyY3NfMjZfMn0sCisgICAgezEsIGFyY3NfMjZfM30sCisgICAgezEsIGFyY3NfMjZfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzJbNF0gPSB7Ci0gICAgezc4LCAyfSwKLSAgICB7NzksIDJ9LAotICAgIHsxMiwgM30sCi0gICAgezc2LCA0fSwKK3N0YXRpYyBhcmMgYXJjc18yN18wWzJdID0geworICAgIHs3NywgMX0sCisgICAgezc4LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfM1sxXSA9IHsKLSAgICB7NzYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF80WzNdID0gewotICAgIHszMSwgNX0sCi0gICAgezEzLCA2fSwKLSAgICB7ODAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNlsxXSA9IHsKLSAgICB7ODAsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF83WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOFs4XSA9IHsKLSAgICB7MSwgYXJjc18yOF8wfSwKLSAgICB7MywgYXJjc18yOF8xfSwKLSAgICB7NCwgYXJjc18yOF8yfSwKLSAgICB7MSwgYXJjc18yOF8zfSwKLSAgICB7MywgYXJjc18yOF80fSwKLSAgICB7MSwgYXJjc18yOF81fSwKLSAgICB7MSwgYXJjc18yOF82fSwKLSAgICB7MSwgYXJjc18yOF83fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8xWzJdID0gewotICAgIHs4MiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI5XzJbMV0gPSB7Ci0gICAgezIxLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbMl0gPSB7CisgICAgezIsIGFyY3NfMjdfMH0sCisgICAgezEsIGFyY3NfMjdfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7CisgICAgezc5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjhfMVsxXSA9IHsKKyAgICB7ODAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzNdID0geworICAgIHsxLCBhcmNzXzI4XzB9LAorICAgIHsxLCBhcmNzXzI4XzF9LAorICAgIHsxLCBhcmNzXzI4XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0geworICAgIHs3NiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzFbM10gPSB7CisgICAgezgxLCAyfSwKKyAgICB7ODIsIDJ9LAorICAgIHsxMiwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzJbNF0gPSB7CisgICAgezgxLCAyfSwKKyAgICB7ODIsIDJ9LAorICAgIHsxMiwgM30sCisgICAgezc5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjlfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezc5LCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzRdID0geworc3RhdGljIGFyYyBhcmNzXzI5XzRbM10gPSB7CisgICAgezMzLCA1fSwKKyAgICB7MTMsIDZ9LAorICAgIHs4MywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV82WzFdID0geworICAgIHs4MywgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzdbMV0gPSB7CisgICAgezE1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzhdID0gewogICAgIHsxLCBhcmNzXzI5XzB9LAotICAgIHsyLCBhcmNzXzI5XzF9LAotICAgIHsxLCBhcmNzXzI5XzJ9LAorICAgIHszLCBhcmNzXzI5XzF9LAorICAgIHs0LCBhcmNzXzI5XzJ9LAogICAgIHsxLCBhcmNzXzI5XzN9LAorICAgIHszLCBhcmNzXzI5XzR9LAorICAgIHsxLCBhcmNzXzI5XzV9LAorICAgIHsxLCBhcmNzXzI5XzZ9LAorICAgIHsxLCBhcmNzXzI5Xzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0gewotICAgIHsxMiwgMX0sCisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAorICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8yWzFdID0gewotICAgIHsyMSwgM30sCisgICAgezIzLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfM1sxXSA9IHsKICAgICB7MCwgM30sCkBAIC03MDksMzcgKzcwNiw0NSBAQAogICAgIHsxLCBhcmNzXzMwXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8wWzFdID0gewotICAgIHs4MSwgMX0sCisgICAgezEyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMV8yWzJdID0gewotICAgIHs4MSwgMX0sCi0gICAgezAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzMxXzJbMV0gPSB7CisgICAgezIzLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMxWzNdID0geworc3RhdGljIGFyYyBhcmNzXzMxXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzFbNF0gPSB7CiAgICAgezEsIGFyY3NfMzFfMH0sCiAgICAgezIsIGFyY3NfMzFfMX0sCi0gICAgezIsIGFyY3NfMzFfMn0sCisgICAgezEsIGFyY3NfMzFfMn0sCisgICAgezEsIGFyY3NfMzFfM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzBbMV0gPSB7Ci0gICAgezgzLCAxfSwKKyAgICB7ODQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8xWzJdID0gewotICAgIHszMCwgMH0sCisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMl8yWzJdID0geworICAgIHs4NCwgMX0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbM10gPSB7CiAgICAgezEsIGFyY3NfMzJfMH0sCiAgICAgezIsIGFyY3NfMzJfMX0sCisgICAgezIsIGFyY3NfMzJfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKKyAgICB7ODYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewotICAgIHs3OCwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zM1syXSA9IHsKQEAgLTc0NywyOCArNzUyLDI0IEBACiAgICAgezIsIGFyY3NfMzNfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzBbMV0gPSB7Ci0gICAgezg0LCAxfSwKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNF8xWzFdID0gewotICAgIHsyMSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzRfMVsyXSA9IHsKKyAgICB7ODEsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzRfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM0WzNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zNFsyXSA9IHsKICAgICB7MSwgYXJjc18zNF8wfSwKLSAgICB7MSwgYXJjc18zNF8xfSwKLSAgICB7MiwgYXJjc18zNF8yfSwKKyAgICB7MiwgYXJjc18zNF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMFsxXSA9IHsKLSAgICB7ODUsIDF9LAorICAgIHs4NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8yWzJdID0gewotICAgIHszMCwgMX0sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zNVszXSA9IHsKQEAgLTc3Nyw1MDQgKzc3OCw1MTQgQEAKICAgICB7MiwgYXJjc18zNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMFsxXSA9IHsKLSAgICB7ODYsIDF9LAorICAgIHs4OCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8yWzJdID0gewotICAgIHszMCwgM30sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM2XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzZfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNls1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzZbM10gPSB7CiAgICAgezEsIGFyY3NfMzZfMH0sCiAgICAgezEsIGFyY3NfMzZfMX0sCiAgICAgezIsIGFyY3NfMzZfMn0sCi0gICAgezEsIGFyY3NfMzZfM30sCi0gICAgezEsIGFyY3NfMzZfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM3XzBbOF0gPSB7Ci0gICAgezg3LCAxfSwKLSAgICB7ODgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzM3XzBbMV0gPSB7CiAgICAgezg5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN18yWzJdID0geworICAgIHszMiwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN18zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM3XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbNV0gPSB7CisgICAgezEsIGFyY3NfMzdfMH0sCisgICAgezEsIGFyY3NfMzdfMX0sCisgICAgezIsIGFyY3NfMzdfMn0sCisgICAgezEsIGFyY3NfMzdfM30sCisgICAgezEsIGFyY3NfMzdfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzBbOV0gPSB7CiAgICAgezkwLCAxfSwKICAgICB7OTEsIDF9LAorICAgIHs5MiwgMX0sCisgICAgezkzLCAxfSwKKyAgICB7OTQsIDF9LAogICAgIHsxOSwgMX0sCiAgICAgezE4LCAxfSwKICAgICB7MTcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzJdID0gewotICAgIHs4LCBhcmNzXzM3XzB9LAotICAgIHsxLCBhcmNzXzM3XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8wWzFdID0gewotICAgIHs5MiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzRbM10gPSB7Ci0gICAgezkzLCAxfSwKLSAgICB7OTQsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfNVsxXSA9IHsKLSAgICB7MjUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF82WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbOF0gPSB7Ci0gICAgezEsIGFyY3NfMzhfMH0sCi0gICAgezEsIGFyY3NfMzhfMX0sCi0gICAgezEsIGFyY3NfMzhfMn0sCi0gICAgezEsIGFyY3NfMzhfM30sCi0gICAgezMsIGFyY3NfMzhfNH0sCi0gICAgezEsIGFyY3NfMzhfNX0sCi0gICAgezEsIGFyY3NfMzhfNn0sCi0gICAgezEsIGFyY3NfMzhfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7CiAgICAgezk1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMVsxXSA9IHsKLSAgICB7MjQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbMl0gPSB7CisgICAgezksIGFyY3NfMzhfMH0sCisgICAgezEsIGFyY3NfMzhfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7CisgICAgezIxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzlfMVszXSA9IHsKKyAgICB7MTksIDJ9LAorICAgIHs5NCwgMn0sCisgICAgezkyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzlfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV80WzJdID0gewotICAgIHs5NCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV81WzFdID0gewotICAgIHsyNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzZbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOVs4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbM10gPSB7CiAgICAgezEsIGFyY3NfMzlfMH0sCi0gICAgezEsIGFyY3NfMzlfMX0sCisgICAgezMsIGFyY3NfMzlfMX0sCiAgICAgezEsIGFyY3NfMzlfMn0sCi0gICAgezEsIGFyY3NfMzlfM30sCi0gICAgezIsIGFyY3NfMzlfNH0sCi0gICAgezEsIGFyY3NfMzlfNX0sCi0gICAgezEsIGFyY3NfMzlfNn0sCi0gICAgezEsIGFyY3NfMzlfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CiAgICAgezk2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfMVsxXSA9IHsKLSAgICB7NjIsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzJbMV0gPSB7Ci0gICAgezk3LCAzfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8zWzFdID0gewotICAgIHs5LCA0fSwKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF80WzFdID0gewotICAgIHsyNSwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDBfNFszXSA9IHsKKyAgICB7OTcsIDF9LAorICAgIHs5OCwgNX0sCisgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF81WzFdID0gewotICAgIHsyNiwgNn0sCisgICAgezI3LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNlsyXSA9IHsKLSAgICB7OTQsIDd9LAotICAgIHswLCA2fSwKK3N0YXRpYyBhcmMgYXJjc180MF82WzFdID0geworICAgIHsyOCwgN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzdbMV0gPSB7Ci0gICAgezI1LCA4fSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzhbMV0gPSB7Ci0gICAgezI2LCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MFsxMF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzhdID0gewogICAgIHsxLCBhcmNzXzQwXzB9LAogICAgIHsxLCBhcmNzXzQwXzF9LAogICAgIHsxLCBhcmNzXzQwXzJ9LAogICAgIHsxLCBhcmNzXzQwXzN9LAotICAgIHsxLCBhcmNzXzQwXzR9LAorICAgIHszLCBhcmNzXzQwXzR9LAogICAgIHsxLCBhcmNzXzQwXzV9LAotICAgIHsyLCBhcmNzXzQwXzZ9LAorICAgIHsxLCBhcmNzXzQwXzZ9LAogICAgIHsxLCBhcmNzXzQwXzd9LAotICAgIHsxLCBhcmNzXzQwXzh9LAotICAgIHsxLCBhcmNzXzQwXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8wWzFdID0gewotICAgIHs5OCwgMX0sCisgICAgezk5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMVsxXSA9IHsKLSAgICB7MjUsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzJbMV0gPSB7Ci0gICAgezI2LCAzfSwKKyAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV8zWzJdID0gewotICAgIHs5OSwgNH0sCi0gICAgezEwMCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDFfM1sxXSA9IHsKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV80WzFdID0gewotICAgIHsyNSwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDFfNFsyXSA9IHsKKyAgICB7OTgsIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfNVsxXSA9IHsKLSAgICB7MjUsIDd9LAorICAgIHsyNywgNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzZbMV0gPSB7Ci0gICAgezI2LCA4fSwKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV83WzFdID0gewotICAgIHsyNiwgOX0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV84WzRdID0gewotICAgIHs5OSwgNH0sCi0gICAgezk0LCAxMH0sCi0gICAgezEwMCwgNX0sCi0gICAgezAsIDh9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV85WzFdID0gewotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfMTBbMV0gPSB7Ci0gICAgezI1LCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQxXzExWzFdID0gewotICAgIHsyNiwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV8xMlsyXSA9IHsKLSAgICB7MTAwLCA1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDFbMTNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MVs4XSA9IHsKICAgICB7MSwgYXJjc180MV8wfSwKICAgICB7MSwgYXJjc180MV8xfSwKICAgICB7MSwgYXJjc180MV8yfSwKLSAgICB7MiwgYXJjc180MV8zfSwKLSAgICB7MSwgYXJjc180MV80fSwKKyAgICB7MSwgYXJjc180MV8zfSwKKyAgICB7MiwgYXJjc180MV80fSwKICAgICB7MSwgYXJjc180MV81fSwKICAgICB7MSwgYXJjc180MV82fSwKICAgICB7MSwgYXJjc180MV83fSwKLSAgICB7NCwgYXJjc180MV84fSwKLSAgICB7MSwgYXJjc180MV85fSwKLSAgICB7MSwgYXJjc180MV8xMH0sCi0gICAgezEsIGFyY3NfNDFfMTF9LAotICAgIHsyLCBhcmNzXzQxXzEyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMFsxXSA9IHsKLSAgICB7MTAxLCAxfSwKKyAgICB7MTAwLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMVsxXSA9IHsKLSAgICB7MTAyLCAyfSwKKyAgICB7NjUsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml8yWzJdID0gewotICAgIHszMCwgMX0sCi0gICAgezI1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180Ml8yWzFdID0geworICAgIHsxMDEsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8zWzFdID0gewotICAgIHsyNiwgNH0sCisgICAgezksIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml80WzFdID0gewotICAgIHswLCA0fSwKKyAgICB7MjcsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbNV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDJfNVsxXSA9IHsKKyAgICB7MjgsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml82WzJdID0geworICAgIHs5OCwgN30sCisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml83WzFdID0geworICAgIHsyNywgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQyXzhbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfOVsxXSA9IHsKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180MlsxMF0gPSB7CiAgICAgezEsIGFyY3NfNDJfMH0sCiAgICAgezEsIGFyY3NfNDJfMX0sCi0gICAgezIsIGFyY3NfNDJfMn0sCisgICAgezEsIGFyY3NfNDJfMn0sCiAgICAgezEsIGFyY3NfNDJfM30sCiAgICAgezEsIGFyY3NfNDJfNH0sCisgICAgezEsIGFyY3NfNDJfNX0sCisgICAgezIsIGFyY3NfNDJfNn0sCisgICAgezEsIGFyY3NfNDJfN30sCisgICAgezEsIGFyY3NfNDJfOH0sCisgICAgezEsIGFyY3NfNDJfOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzBbMV0gPSB7Ci0gICAgezI0LCAxfSwKKyAgICB7MTAyLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc180M18xWzFdID0geworICAgIHsyNywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzJbMV0gPSB7Ci0gICAgezEwMywgM30sCisgICAgezI4LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfM1sxXSA9IHsKLSAgICB7MCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDNfM1syXSA9IHsKKyAgICB7MTAzLCA0fSwKKyAgICB7MTA0LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzRdID0geworc3RhdGljIGFyYyBhcmNzXzQzXzRbMV0gPSB7CisgICAgezI3LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfNVsxXSA9IHsKKyAgICB7MjcsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M182WzFdID0geworICAgIHsyOCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzdbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfOFs0XSA9IHsKKyAgICB7MTAzLCA0fSwKKyAgICB7OTgsIDEwfSwKKyAgICB7MTA0LCA1fSwKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M18xMFsxXSA9IHsKKyAgICB7MjcsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfMTFbMV0gPSB7CisgICAgezI4LCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzEyWzJdID0geworICAgIHsxMDQsIDV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180M1sxM10gPSB7CiAgICAgezEsIGFyY3NfNDNfMH0sCi0gICAgezIsIGFyY3NfNDNfMX0sCisgICAgezEsIGFyY3NfNDNfMX0sCiAgICAgezEsIGFyY3NfNDNfMn0sCi0gICAgezEsIGFyY3NfNDNfM30sCisgICAgezIsIGFyY3NfNDNfM30sCisgICAgezEsIGFyY3NfNDNfNH0sCisgICAgezEsIGFyY3NfNDNfNX0sCisgICAgezEsIGFyY3NfNDNfNn0sCisgICAgezEsIGFyY3NfNDNfN30sCisgICAgezQsIGFyY3NfNDNfOH0sCisgICAgezEsIGFyY3NfNDNfOX0sCisgICAgezEsIGFyY3NfNDNfMTB9LAorICAgIHsxLCBhcmNzXzQzXzExfSwKKyAgICB7MiwgYXJjc180M18xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzBbMV0gPSB7Ci0gICAgezEwNCwgMX0sCisgICAgezEwNSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNDRfMVsxXSA9IHsKKyAgICB7MTA2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMlsyXSA9IHsKLSAgICB7ODIsIDN9LAotICAgIHswLCAyfSwKKyAgICB7MzIsIDF9LAorICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzNbMV0gPSB7Ci0gICAgezIxLCA0fSwKKyAgICB7MjgsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF80WzFdID0gewogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzVdID0gewogICAgIHsxLCBhcmNzXzQ0XzB9LAotICAgIHsyLCBhcmNzXzQ0XzF9LAorICAgIHsxLCBhcmNzXzQ0XzF9LAogICAgIHsyLCBhcmNzXzQ0XzJ9LAogICAgIHsxLCBhcmNzXzQ0XzN9LAogICAgIHsxLCBhcmNzXzQ0XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NV8wWzJdID0gewotICAgIHszLCAxfSwKLSAgICB7MiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzFbMl0gPSB7CisgICAgezg1LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ1XzJbMV0gPSB7Ci0gICAgezEwNSwgM30sCisgICAgezEwNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7Ci0gICAgezYsIDR9LAorICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfNFsyXSA9IHsKLSAgICB7NiwgNH0sCi0gICAgezEwNiwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180NVs1XSA9IHsKLSAgICB7MiwgYXJjc180NV8wfSwKLSAgICB7MSwgYXJjc180NV8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNF0gPSB7CisgICAgezEsIGFyY3NfNDVfMH0sCisgICAgezIsIGFyY3NfNDVfMX0sCiAgICAgezEsIGFyY3NfNDVfMn0sCiAgICAgezEsIGFyY3NfNDVfM30sCi0gICAgezIsIGFyY3NfNDVfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzBbMl0gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezEwOCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNDZfMFsxXSA9IHsKKyAgICB7MTA4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMVsyXSA9IHsKLSAgICB7OTIsIDN9LAorICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ2XzJbMl0gPSB7CisgICAgezg1LCAzfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7Ci0gICAgezEwNywgNH0sCisgICAgezIzLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfNFsxXSA9IHsKLSAgICB7OTQsIDV9LAorICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfNVsxXSA9IHsKLSAgICB7MjQsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNl0gPSB7Ci0gICAgezIsIGFyY3NfNDZfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzVdID0geworICAgIHsxLCBhcmNzXzQ2XzB9LAogICAgIHsyLCBhcmNzXzQ2XzF9LAotICAgIHsxLCBhcmNzXzQ2XzJ9LAorICAgIHsyLCBhcmNzXzQ2XzJ9LAogICAgIHsxLCBhcmNzXzQ2XzN9LAogICAgIHsxLCBhcmNzXzQ2XzR9LAotICAgIHsxLCBhcmNzXzQ2XzV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180N18wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHsxMTAsIDF9LAorICAgIHszLCAxfSwKKyAgICB7MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ3XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfMlsxXSA9IHsKKyAgICB7MTA5LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKKyAgICB7NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzRbMl0gPSB7CisgICAgezYsIDR9LAorICAgIHsxMTAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7CiAgICAgezIsIGFyY3NfNDdfMH0sCiAgICAgezEsIGFyY3NfNDdfMX0sCisgICAgezEsIGFyY3NfNDdfMn0sCisgICAgezEsIGFyY3NfNDdfM30sCisgICAgezIsIGFyY3NfNDdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKICAgICB7MTExLCAxfSwKKyAgICB7MTEyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfMVsyXSA9IHsKLSAgICB7MzMsIDJ9LAotICAgIHsyNSwgM30sCisgICAgezk2LCAzfSwKKyAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKKyAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKKyAgICB7MTExLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfNFsxXSA9IHsKLSAgICB7MCwgNH0sCisgICAgezk4LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzVdID0gewotICAgIHsxLCBhcmNzXzQ4XzB9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzVbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzZdID0geworICAgIHsyLCBhcmNzXzQ4XzB9LAogICAgIHsyLCBhcmNzXzQ4XzF9LAogICAgIHsxLCBhcmNzXzQ4XzJ9LAogICAgIHsxLCBhcmNzXzQ4XzN9LAogICAgIHsxLCBhcmNzXzQ4XzR9LAorICAgIHsxLCBhcmNzXzQ4XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OV8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzBbMl0gPSB7CiAgICAgezExMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzFbMl0gPSB7Ci0gICAgezMzLCAyfSwKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8yWzFdID0gewotICAgIHsyNSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzNbMV0gPSB7Ci0gICAgezEwOSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDlfMH0sCi0gICAgezIsIGFyY3NfNDlfMX0sCi0gICAgezEsIGFyY3NfNDlfMn0sCi0gICAgezEsIGFyY3NfNDlfM30sCi0gICAgezEsIGFyY3NfNDlfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7Ci0gICAgezExMiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7Ci0gICAgezExMywgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTBfMH0sCi0gICAgezIsIGFyY3NfNTBfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7CiAgICAgezExNCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7Ci0gICAgezExNSwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNDlfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181MVsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbMl0gPSB7CisgICAgezIsIGFyY3NfNDlfMH0sCisgICAgezEsIGFyY3NfNDlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7CisgICAgezExNSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7CisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181MFs1XSA9IHsKKyAgICB7MSwgYXJjc181MF8wfSwKKyAgICB7MiwgYXJjc181MF8xfSwKKyAgICB7MSwgYXJjc181MF8yfSwKKyAgICB7MSwgYXJjc181MF8zfSwKKyAgICB7MSwgYXJjc181MF80fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfMFsxXSA9IHsKKyAgICB7MTE1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfMVsyXSA9IHsKKyAgICB7MzUsIDJ9LAorICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzJbMV0gPSB7CisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfM1sxXSA9IHsKKyAgICB7MTEzLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181MVs1XSA9IHsKICAgICB7MSwgYXJjc181MV8wfSwKICAgICB7MiwgYXJjc181MV8xfSwKKyAgICB7MSwgYXJjc181MV8yfSwKKyAgICB7MSwgYXJjc181MV8zfSwKKyAgICB7MSwgYXJjc181MV80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Ml8wWzFdID0gewogICAgIHsxMTYsIDF9LAotICAgIHsxMTcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Ml8xWzFdID0gewotICAgIHsxMTQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzUyXzFbMl0gPSB7CisgICAgezExNywgMH0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzNdID0gewotICAgIHsyLCBhcmNzXzUyXzB9LAotICAgIHsxLCBhcmNzXzUyXzF9LAotICAgIHsxLCBhcmNzXzUyXzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc181MlsyXSA9IHsKKyAgICB7MSwgYXJjc181Ml8wfSwKKyAgICB7MiwgYXJjc181Ml8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMFsxXSA9IHsKLSAgICB7MTAzLCAxfSwKKyAgICB7MTE4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMVsyXSA9IHsKLSAgICB7MTE4LCAwfSwKKyAgICB7MTE5LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181M1syXSA9IHsKICAgICB7MSwgYXJjc181M18wfSwKICAgICB7MiwgYXJjc181M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMFsxMF0gPSB7Ci0gICAgezExOSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMFsyXSA9IHsKICAgICB7MTIwLCAxfSwKLSAgICB7MTIxLCAxfSwKLSAgICB7MTIyLCAxfSwKKyAgICB7MTIxLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKKyAgICB7MTE4LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NFszXSA9IHsKKyAgICB7MiwgYXJjc181NF8wfSwKKyAgICB7MSwgYXJjc181NF8xfSwKKyAgICB7MSwgYXJjc181NF8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMFsxXSA9IHsKKyAgICB7MTA3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMVsyXSA9IHsKKyAgICB7MTIyLCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NVsyXSA9IHsKKyAgICB7MSwgYXJjc181NV8wfSwKKyAgICB7MiwgYXJjc181NV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMFsxMF0gPSB7CiAgICAgezEyMywgMX0sCiAgICAgezEyNCwgMX0sCiAgICAgezEyNSwgMX0sCi0gICAgezk3LCAxfSwKLSAgICB7MTE2LCAyfSwKLSAgICB7MTI2LCAzfSwKKyAgICB7MTI2LCAxfSwKKyAgICB7MTI3LCAxfSwKKyAgICB7MTI4LCAxfSwKKyAgICB7MTI5LCAxfSwKKyAgICB7MTAxLCAxfSwKKyAgICB7MTIwLCAyfSwKKyAgICB7MTMwLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Nl8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKLSAgICB7OTcsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU2XzJbMV0gPSB7CisgICAgezEwMSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzNbMl0gPSB7Ci0gICAgezExNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTZfM1syXSA9IHsKKyAgICB7MTIwLCAxfSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181NFs0XSA9IHsKLSAgICB7MTAsIGFyY3NfNTRfMH0sCi0gICAgezEsIGFyY3NfNTRfMX0sCi0gICAgezEsIGFyY3NfNTRfMn0sCi0gICAgezIsIGFyY3NfNTRfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7Ci0gICAgezMxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMVsxXSA9IHsKLSAgICB7MTAzLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NVszXSA9IHsKLSAgICB7MSwgYXJjc181NV8wfSwKLSAgICB7MSwgYXJjc181NV8xfSwKLSAgICB7MSwgYXJjc181NV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMFsxXSA9IHsKLSAgICB7MTI3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMVsyXSA9IHsKLSAgICB7MTI4LCAwfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NlsyXSA9IHsKLSAgICB7MSwgYXJjc181Nl8wfSwKLSAgICB7MiwgYXJjc181Nl8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbNF0gPSB7CisgICAgezEwLCBhcmNzXzU2XzB9LAorICAgIHsxLCBhcmNzXzU2XzF9LAorICAgIHsxLCBhcmNzXzU2XzJ9LAorICAgIHsyLCBhcmNzXzU2XzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181N18wWzFdID0gewotICAgIHsxMjksIDF9LAorICAgIHszMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU3XzFbMl0gPSB7Ci0gICAgezEzMCwgMH0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU3XzFbMV0gPSB7CisgICAgezEwNywgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181N1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181N18yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzNdID0gewogICAgIHsxLCBhcmNzXzU3XzB9LAotICAgIHsyLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OF8wWzFdID0gewogICAgIHsxMzEsIDF9LApAQCAtMTI5MCw3NTIgKzEzMDEsNzkzIEBACiBzdGF0aWMgYXJjIGFyY3NfNTlfMFsxXSA9IHsKICAgICB7MTMzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTlfMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181OV8xWzJdID0gewogICAgIHsxMzQsIDB9LAotICAgIHsxMzUsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzU5WzJdID0gewogICAgIHsxLCBhcmNzXzU5XzB9LAotICAgIHszLCBhcmNzXzU5XzF9LAorICAgIHsyLCBhcmNzXzU5XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8wWzFdID0gewotICAgIHsxMzYsIDF9LAorICAgIHsxMzUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MF8xWzNdID0gewotICAgIHsxMzcsIDB9LAotICAgIHsxMzgsIDB9LAorc3RhdGljIGFyYyBhcmNzXzYwXzFbMl0gPSB7CisgICAgezEzNiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjBbMl0gPSB7CiAgICAgezEsIGFyY3NfNjBfMH0sCi0gICAgezMsIGFyY3NfNjBfMX0sCisgICAgezIsIGFyY3NfNjBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYxXzBbMV0gPSB7Ci0gICAgezEzOSwgMX0sCisgICAgezEzNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYxXzFbNV0gPSB7Ci0gICAgezMxLCAwfSwKLSAgICB7MTQwLCAwfSwKLSAgICB7MTQxLCAwfSwKLSAgICB7MTQyLCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MV8xWzNdID0geworICAgIHsxMzgsIDB9LAorICAgIHsxMzksIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYxWzJdID0gewogICAgIHsxLCBhcmNzXzYxXzB9LAotICAgIHs1LCBhcmNzXzYxXzF9LAorICAgIHszLCBhcmNzXzYxXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8wWzRdID0gewotICAgIHsxMzcsIDF9LAotICAgIHsxMzgsIDF9LAotICAgIHsxNDMsIDF9LAotICAgIHsxNDQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzYyXzBbMV0gPSB7CisgICAgezE0MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYyXzFbMV0gPSB7Ci0gICAgezEzOSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYyXzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbM10gPSB7Ci0gICAgezQsIGFyY3NfNjJfMH0sCi0gICAgezEsIGFyY3NfNjJfMX0sCi0gICAgezEsIGFyY3NfNjJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7Ci0gICAgezE0NSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYzXzFbM10gPSB7Ci0gICAgezE0NiwgMX0sCi0gICAgezMyLCAyfSwKK3N0YXRpYyBhcmMgYXJjc182Ml8xWzNdID0geworICAgIHsxNDEsIDB9LAorICAgIHsxNDIsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjNfMlsxXSA9IHsKLSAgICB7MTM5LCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbMl0gPSB7CisgICAgezEsIGFyY3NfNjJfMH0sCisgICAgezMsIGFyY3NfNjJfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7CisgICAgezE0MywgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182M1s0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc182M18xWzZdID0geworICAgIHszMywgMH0sCisgICAgezExLCAwfSwKKyAgICB7MTQ0LCAwfSwKKyAgICB7MTQ1LCAwfSwKKyAgICB7MTQ2LCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182M1syXSA9IHsKICAgICB7MSwgYXJjc182M18wfSwKLSAgICB7MywgYXJjc182M18xfSwKLSAgICB7MSwgYXJjc182M18yfSwKLSAgICB7MSwgYXJjc182M18zfSwKKyAgICB7NiwgYXJjc182M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMFsxMF0gPSB7Ci0gICAgezEzLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182NF8wWzRdID0geworICAgIHsxNDEsIDF9LAorICAgIHsxNDIsIDF9LAorICAgIHsxNDcsIDF9LAogICAgIHsxNDgsIDJ9LAotICAgIHsxNTAsIDN9LAotICAgIHsyMSwgNH0sCi0gICAgezE1MywgNH0sCi0gICAgezE1NCwgNX0sCi0gICAgezc5LCA0fSwKLSAgICB7MTU1LCA0fSwKLSAgICB7MTU2LCA0fSwKLSAgICB7MTU3LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMVszXSA9IHsKLSAgICB7NDcsIDZ9LAotICAgIHsxNDcsIDZ9LAotICAgIHsxNSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMVsxXSA9IHsKKyAgICB7MTQzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMlsyXSA9IHsKLSAgICB7MTQ3LCA3fSwKLSAgICB7MTQ5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NF8yWzFdID0geworICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfM1syXSA9IHsKLSAgICB7MTUxLCA4fSwKLSAgICB7MTUyLCA0fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbM10gPSB7CisgICAgezQsIGFyY3NfNjRfMH0sCisgICAgezEsIGFyY3NfNjRfMX0sCisgICAgezEsIGFyY3NfNjRfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzRbMV0gPSB7Ci0gICAgezAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY1XzBbMV0gPSB7CisgICAgezE0OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzVbMl0gPSB7Ci0gICAgezE1NCwgNX0sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF82WzFdID0gewotICAgIHsxNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY0XzdbMV0gPSB7Ci0gICAgezE0OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY0XzhbMV0gPSB7Ci0gICAgezE1MiwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182NFs5XSA9IHsKLSAgICB7MTAsIGFyY3NfNjRfMH0sCi0gICAgezMsIGFyY3NfNjRfMX0sCi0gICAgezIsIGFyY3NfNjRfMn0sCi0gICAgezIsIGFyY3NfNjRfM30sCi0gICAgezEsIGFyY3NfNjRfNH0sCi0gICAgezIsIGFyY3NfNjRfNX0sCi0gICAgezEsIGFyY3NfNjRfNn0sCi0gICAgezEsIGFyY3NfNjRfN30sCi0gICAgezEsIGFyY3NfNjRfOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY1XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NV8xWzNdID0gewotICAgIHsxNTgsIDJ9LAotICAgIHszMCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNjVfMVsyXSA9IHsKKyAgICB7MzQsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezE0MywgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzNbM10gPSB7Ci0gICAgezI0LCA0fSwKLSAgICB7NDgsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY1XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV80WzJdID0gewotICAgIHszMCwgM30sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbNV0gPSB7Ci0gICAgezIsIGFyY3NfNjVfMH0sCi0gICAgezMsIGFyY3NfNjVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzRdID0geworICAgIHsxLCBhcmNzXzY1XzB9LAorICAgIHsyLCBhcmNzXzY1XzF9LAogICAgIHsxLCBhcmNzXzY1XzJ9LAotICAgIHszLCBhcmNzXzY1XzN9LAotICAgIHsyLCBhcmNzXzY1XzR9LAorICAgIHsxLCBhcmNzXzY1XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzBbMl0gPSB7CisgICAgezE1MCwgMX0sCisgICAgezE1MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY2XzFbMV0gPSB7CisgICAgezE1MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY2XzJbMl0gPSB7CisgICAgezE1MiwgMn0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbM10gPSB7CisgICAgezIsIGFyY3NfNjZfMH0sCisgICAgezEsIGFyY3NfNjZfMX0sCisgICAgezIsIGFyY3NfNjZfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzBbMTBdID0gewogICAgIHsxMywgMX0sCi0gICAgezE0OCwgMn0sCi0gICAgezc4LCAzfSwKKyAgICB7MTU0LCAyfSwKKyAgICB7MTU2LCAzfSwKKyAgICB7MjMsIDR9LAorICAgIHsxNTksIDR9LAorICAgIHsxNjAsIDV9LAorICAgIHs4MiwgNH0sCisgICAgezE2MSwgNH0sCisgICAgezE2MiwgNH0sCisgICAgezE2MywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY2XzFbMl0gPSB7Ci0gICAgezE0LCA0fSwKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8yWzFdID0gewotICAgIHsxNTksIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8zWzFdID0gewotICAgIHsyMSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzRbMV0gPSB7Ci0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzZbMV0gPSB7Ci0gICAgezE0OSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182Nls3XSA9IHsKLSAgICB7MywgYXJjc182Nl8wfSwKLSAgICB7MiwgYXJjc182Nl8xfSwKLSAgICB7MSwgYXJjc182Nl8yfSwKLSAgICB7MSwgYXJjc182Nl8zfSwKLSAgICB7MSwgYXJjc182Nl80fSwKLSAgICB7MSwgYXJjc182Nl81fSwKLSAgICB7MSwgYXJjc182Nl82fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMFsxXSA9IHsKLSAgICB7MTYwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182N18xWzNdID0geworICAgIHs0OSwgNn0sCisgICAgezE1MywgNn0sCisgICAgezE1LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjdfMlsyXSA9IHsKLSAgICB7MTYwLCAxfSwKLSAgICB7MCwgMn0sCisgICAgezE1MywgN30sCisgICAgezE1NSwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182N1szXSA9IHsKLSAgICB7MSwgYXJjc182N18wfSwKLSAgICB7MiwgYXJjc182N18xfSwKK3N0YXRpYyBhcmMgYXJjc182N18zWzJdID0geworICAgIHsxNTcsIDh9LAorICAgIHsxNTgsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfNVsyXSA9IHsKKyAgICB7MTYwLCA1fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzZbMV0gPSB7CisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfN1sxXSA9IHsKKyAgICB7MTU1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfOFsxXSA9IHsKKyAgICB7MTU4LCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzldID0geworICAgIHsxMCwgYXJjc182N18wfSwKKyAgICB7MywgYXJjc182N18xfSwKICAgICB7MiwgYXJjc182N18yfSwKKyAgICB7MiwgYXJjc182N18zfSwKKyAgICB7MSwgYXJjc182N180fSwKKyAgICB7MiwgYXJjc182N181fSwKKyAgICB7MSwgYXJjc182N182fSwKKyAgICB7MSwgYXJjc182N183fSwKKyAgICB7MSwgYXJjc182N184fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjhfMFsyXSA9IHsKLSAgICB7MjQsIDF9LAotICAgIHsyNSwgMn0sCisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8xWzJdID0gewotICAgIHsyNSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjhfMVszXSA9IHsKKyAgICB7MTY0LCAyfSwKKyAgICB7MzIsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMlszXSA9IHsKLSAgICB7MjQsIDN9LAotICAgIHsxNjEsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY4XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8zWzJdID0gewotICAgIHsxNjEsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY4XzNbM10gPSB7CisgICAgezI2LCA0fSwKKyAgICB7NTAsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OF80WzJdID0geworICAgIHszMiwgM30sCiAgICAgezAsIDR9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbNV0gPSB7CiAgICAgezIsIGFyY3NfNjhfMH0sCi0gICAgezIsIGFyY3NfNjhfMX0sCi0gICAgezMsIGFyY3NfNjhfMn0sCi0gICAgezIsIGFyY3NfNjhfM30sCi0gICAgezEsIGFyY3NfNjhfNH0sCisgICAgezMsIGFyY3NfNjhfMX0sCisgICAgezEsIGFyY3NfNjhfMn0sCisgICAgezMsIGFyY3NfNjhfM30sCisgICAgezIsIGFyY3NfNjhfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzBbMV0gPSB7Ci0gICAgezI1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc182OV8wWzNdID0geworICAgIHsxMywgMX0sCisgICAgezE1NCwgMn0sCisgICAgezgxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjlfMVsyXSA9IHsKLSAgICB7MjQsIDJ9LAotICAgIHswLCAxfSwKKyAgICB7MTQsIDR9LAorICAgIHsxNSwgNX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxNjUsIDZ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbM10gPSB7Ci0gICAgezEsIGFyY3NfNjlfMH0sCitzdGF0aWMgYXJjIGFyY3NfNjlfM1sxXSA9IHsKKyAgICB7MjMsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV80WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV82WzFdID0geworICAgIHsxNTUsIDV9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbN10gPSB7CisgICAgezMsIGFyY3NfNjlfMH0sCiAgICAgezIsIGFyY3NfNjlfMX0sCiAgICAgezEsIGFyY3NfNjlfMn0sCisgICAgezEsIGFyY3NfNjlfM30sCisgICAgezEsIGFyY3NfNjlfNH0sCisgICAgezEsIGFyY3NfNjlfNX0sCisgICAgezEsIGFyY3NfNjlfNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzBbMl0gPSB7Ci0gICAgezEwMywgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MF8wWzFdID0geworICAgIHsxNjYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183MF8xWzJdID0gewotICAgIHszMCwgMn0sCisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzJbM10gPSB7Ci0gICAgezEwMywgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MF8yWzJdID0geworICAgIHsxNjYsIDF9LAogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzNdID0gewotICAgIHsyLCBhcmNzXzcwXzB9LAorICAgIHsxLCBhcmNzXzcwXzB9LAogICAgIHsyLCBhcmNzXzcwXzF9LAotICAgIHszLCBhcmNzXzcwXzJ9LAorICAgIHsyLCBhcmNzXzcwXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8wWzFdID0gewotICAgIHsyNCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHsyNywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKKyAgICB7MjcsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMlsyXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzJbM10gPSB7CisgICAgezI2LCAzfSwKKyAgICB7MTY3LCA0fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MVszXSA9IHsKLSAgICB7MSwgYXJjc183MV8wfSwKK3N0YXRpYyBhcmMgYXJjc183MV8zWzJdID0geworICAgIHsxNjcsIDR9LAorICAgIHswLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzFfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183MVs1XSA9IHsKKyAgICB7MiwgYXJjc183MV8wfSwKICAgICB7MiwgYXJjc183MV8xfSwKLSAgICB7MiwgYXJjc183MV8yfSwKKyAgICB7MywgYXJjc183MV8yfSwKKyAgICB7MiwgYXJjc183MV8zfSwKKyAgICB7MSwgYXJjc183MV80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzJfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzFbNF0gPSB7Ci0gICAgezI1LCAyfSwKLSAgICB7MTU4LCAzfSwKLSAgICB7MzAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CisgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcyXzJbMV0gPSB7Ci0gICAgezI0LCA1fSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml80WzJdID0gewotICAgIHsyNCwgNn0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml81WzNdID0gewotICAgIHsxNTgsIDN9LAotICAgIHszMCwgN30sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml82WzJdID0gewotICAgIHszMCwgNH0sCi0gICAgezAsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml83WzJdID0gewotICAgIHsyNCwgOH0sCi0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml84WzFdID0gewotICAgIHsyNSwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzcyXzlbMV0gPSB7Ci0gICAgezI0LCAxMH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzcyXzEwWzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDEwfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzExXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbM10gPSB7CiAgICAgezEsIGFyY3NfNzJfMH0sCi0gICAgezQsIGFyY3NfNzJfMX0sCisgICAgezIsIGFyY3NfNzJfMX0sCiAgICAgezEsIGFyY3NfNzJfMn0sCi0gICAgezEsIGFyY3NfNzJfM30sCi0gICAgezIsIGFyY3NfNzJfNH0sCi0gICAgezMsIGFyY3NfNzJfNX0sCi0gICAgezIsIGFyY3NfNzJfNn0sCi0gICAgezIsIGFyY3NfNzJfN30sCi0gICAgezEsIGFyY3NfNzJfOH0sCi0gICAgezEsIGFyY3NfNzJfOX0sCi0gICAgezIsIGFyY3NfNzJfMTB9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183M18wWzFdID0gewotICAgIHsxNjIsIDF9LAorc3RhdGljIGFyYyBhcmNzXzczXzBbMl0gPSB7CisgICAgezEwNywgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMVsxXSA9IHsKLSAgICB7MjEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18yWzJdID0gewotICAgIHsxMywgM30sCi0gICAgezI1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfM1syXSA9IHsKLSAgICB7MTQsIDV9LAotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzRbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfNVsxXSA9IHsKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M182WzFdID0gewotICAgIHsyNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbOF0gPSB7Ci0gICAgezEsIGFyY3NfNzNfMH0sCi0gICAgezEsIGFyY3NfNzNfMX0sCi0gICAgezIsIGFyY3NfNzNfMn0sCi0gICAgezIsIGFyY3NfNzNfM30sCi0gICAgezEsIGFyY3NfNzNfNH0sCi0gICAgezEsIGFyY3NfNzNfNX0sCi0gICAgezEsIGFyY3NfNzNfNn0sCi0gICAgezEsIGFyY3NfNzNfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc0XzBbM10gPSB7Ci0gICAgezE2MywgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183NF8xWzJdID0gewotICAgIHszMCwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMlsxXSA9IHsKLSAgICB7MjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzczXzJbM10gPSB7CisgICAgezEwNywgMX0sCisgICAgezUwLCAxfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzNbMV0gPSB7Ci0gICAgezI0LCA2fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbM10gPSB7CisgICAgezIsIGFyY3NfNzNfMH0sCisgICAgezIsIGFyY3NfNzNfMX0sCisgICAgezMsIGFyY3NfNzNfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzRbNF0gPSB7Ci0gICAgezE2MywgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAotICAgIHswLCA0fSwKK3N0YXRpYyBhcmMgYXJjc183NF8wWzFdID0geworICAgIHsyNiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzVbMl0gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfNlsxXSA9IHsKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMlsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfN1syXSA9IHsKLSAgICB7MTYzLCA1fSwKLSAgICB7MzIsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzRbOF0gPSB7Ci0gICAgezMsIGFyY3NfNzRfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzNdID0geworICAgIHsxLCBhcmNzXzc0XzB9LAogICAgIHsyLCBhcmNzXzc0XzF9LAotICAgIHsxLCBhcmNzXzc0XzJ9LAotICAgIHsxLCBhcmNzXzc0XzN9LAotICAgIHs0LCBhcmNzXzc0XzR9LAotICAgIHsyLCBhcmNzXzc0XzV9LAotICAgIHsxLCBhcmNzXzc0XzZ9LAotICAgIHsyLCBhcmNzXzc0Xzd9LAorICAgIHsyLCBhcmNzXzc0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8wWzFdID0gewotICAgIHsyNCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfMFszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHszNCwgMn0sCisgICAgezUwLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMVszXSA9IHsKLSAgICB7MTU4LCAyfSwKLSAgICB7MjksIDN9LAorc3RhdGljIGFyYyBhcmNzXzc1XzFbNF0gPSB7CisgICAgezI3LCA0fSwKKyAgICB7MTY0LCA1fSwKKyAgICB7MzIsIDZ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezEwNywgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzNbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzRdID0gewotICAgIHsxLCBhcmNzXzc1XzB9LAotICAgIHszLCBhcmNzXzc1XzF9LAotICAgIHsxLCBhcmNzXzc1XzJ9LAotICAgIHsxLCBhcmNzXzc1XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8wWzJdID0gewotICAgIHsxNTgsIDF9LAotICAgIHsxNjUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzJdID0gewotICAgIHsyLCBhcmNzXzc2XzB9LAotICAgIHsxLCBhcmNzXzc2XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18wWzFdID0gewotICAgIHs5NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc3XzFbMV0gPSB7Ci0gICAgezYyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMlsxXSA9IHsKLSAgICB7OTcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18zWzFdID0gewotICAgIHsxMDcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N180WzJdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzNbM10gPSB7CiAgICAgezE2NCwgNX0sCi0gICAgezAsIDR9LAorICAgIHszMiwgNn0sCisgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N181WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzRbMV0gPSB7CisgICAgezI2LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183N1s2XSA9IHsKLSAgICB7MSwgYXJjc183N18wfSwKLSAgICB7MSwgYXJjc183N18xfSwKLSAgICB7MSwgYXJjc183N18yfSwKLSAgICB7MSwgYXJjc183N18zfSwKLSAgICB7MiwgYXJjc183N180fSwKLSAgICB7MSwgYXJjc183N181fSwKK3N0YXRpYyBhcmMgYXJjc183NV82WzNdID0geworICAgIHsyNiwgOH0sCisgICAgezUwLCA4fSwKKyAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzBbMV0gPSB7Ci0gICAgezkyLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NV83WzNdID0geworICAgIHsxNjQsIDV9LAorICAgIHszMiwgOX0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8xWzFdID0gewotICAgIHsxMDksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzc1XzhbMl0gPSB7CisgICAgezMyLCA2fSwKKyAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzJbMl0gPSB7Ci0gICAgezE2NCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNzVfOVszXSA9IHsKKyAgICB7MjYsIDEwfSwKKyAgICB7MzQsIDExfSwKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzEwWzFdID0geworICAgIHsyNywgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMVsxXSA9IHsKKyAgICB7MTA3LCAxM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzEyWzFdID0geworICAgIHsyNiwgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xM1syXSA9IHsKKyAgICB7MzIsIDl9LAorICAgIHswLCAxM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183NVsxNF0gPSB7CisgICAgezMsIGFyY3NfNzVfMH0sCisgICAgezQsIGFyY3NfNzVfMX0sCisgICAgezEsIGFyY3NfNzVfMn0sCisgICAgezMsIGFyY3NfNzVfM30sCisgICAgezEsIGFyY3NfNzVfNH0sCisgICAgezEsIGFyY3NfNzVfNX0sCisgICAgezMsIGFyY3NfNzVfNn0sCisgICAgezMsIGFyY3NfNzVfN30sCisgICAgezIsIGFyY3NfNzVfOH0sCisgICAgezMsIGFyY3NfNzVfOX0sCisgICAgezEsIGFyY3NfNzVfMTB9LAorICAgIHsxLCBhcmNzXzc1XzExfSwKKyAgICB7MSwgYXJjc183NV8xMn0sCisgICAgezIsIGFyY3NfNzVfMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8wWzFdID0geworICAgIHsxNjgsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0geworICAgIHsyMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzJbMl0gPSB7CisgICAgezEzLCAzfSwKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8zWzJdID0geworICAgIHsxNCwgNX0sCisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKKyAgICB7MjgsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl81WzFdID0geworICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzZbMV0gPSB7CisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183Nls4XSA9IHsKKyAgICB7MSwgYXJjc183Nl8wfSwKKyAgICB7MSwgYXJjc183Nl8xfSwKKyAgICB7MiwgYXJjc183Nl8yfSwKKyAgICB7MiwgYXJjc183Nl8zfSwKKyAgICB7MSwgYXJjc183Nl80fSwKKyAgICB7MSwgYXJjc183Nl81fSwKKyAgICB7MSwgYXJjc183Nl82fSwKKyAgICB7MSwgYXJjc183Nl83fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKKyAgICB7MTY5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKKyAgICB7MTY5LCAxfSwKICAgICB7MCwgMn0sCiB9Oworc3RhdGljIHN0YXRlIHN0YXRlc183N1szXSA9IHsKKyAgICB7MSwgYXJjc183N18wfSwKKyAgICB7MiwgYXJjc183N18xfSwKKyAgICB7MiwgYXJjc183N18yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMFszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHszNCwgMn0sCisgICAgezUwLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMVszXSA9IHsKKyAgICB7MTY0LCAzfSwKKyAgICB7MzEsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMlsxXSA9IHsKKyAgICB7MjYsIDN9LAorfTsKIHN0YXRpYyBhcmMgYXJjc183OF8zWzFdID0gewogICAgIHswLCAzfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzRdID0gewotICAgIHsxLCBhcmNzXzc4XzB9LAotICAgIHsxLCBhcmNzXzc4XzF9LAotICAgIHsyLCBhcmNzXzc4XzJ9LAorICAgIHszLCBhcmNzXzc4XzB9LAorICAgIHszLCBhcmNzXzc4XzF9LAorICAgIHsxLCBhcmNzXzc4XzJ9LAogICAgIHsxLCBhcmNzXzc4XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OV8wWzFdID0gewotICAgIHsyMSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzlfMFsyXSA9IHsKKyAgICB7MTY0LCAxfSwKKyAgICB7MTcxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzlfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183OVsyXSA9IHsKLSAgICB7MSwgYXJjc183OV8wfSwKKyAgICB7MiwgYXJjc183OV8wfSwKICAgICB7MSwgYXJjc183OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMFsxXSA9IHsKLSAgICB7MTY3LCAxfSwKKyAgICB7MTAwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMVsyXSA9IHsKLSAgICB7MTY4LCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODBfMVsxXSA9IHsKKyAgICB7NjUsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTAxLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzNdID0geworc3RhdGljIGFyYyBhcmNzXzgwXzNbMV0gPSB7CisgICAgezExMSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgwXzRbMl0gPSB7CisgICAgezE3MCwgNX0sCisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MF81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzZdID0gewogICAgIHsxLCBhcmNzXzgwXzB9LAotICAgIHsyLCBhcmNzXzgwXzF9LAorICAgIHsxLCBhcmNzXzgwXzF9LAogICAgIHsxLCBhcmNzXzgwXzJ9LAorICAgIHsxLCBhcmNzXzgwXzN9LAorICAgIHsyLCBhcmNzXzgwXzR9LAorICAgIHsxLCBhcmNzXzgwXzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8wWzJdID0gewotICAgIHs3MywgMX0sCi0gICAgezksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzBbMV0gPSB7CisgICAgezk2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKLSAgICB7MjQsIDJ9LAorICAgIHsxMTMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzgxXzJbMl0gPSB7CisgICAgezE3MCwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbM10gPSB7Ci0gICAgezIsIGFyY3NfODFfMH0sCi0gICAgezEsIGFyY3NfODFfMX0sCi0gICAgezEsIGFyY3NfODFfMn0sCitzdGF0aWMgYXJjIGFyY3NfODFfM1sxXSA9IHsKKyAgICB7MCwgM30sCiB9Owotc3RhdGljIGRmYSBkZmFzWzgyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbNF0gPSB7CisgICAgezEsIGFyY3NfODFfMH0sCisgICAgezEsIGFyY3NfODFfMX0sCisgICAgezIsIGFyY3NfODFfMn0sCisgICAgezEsIGFyY3NfODFfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzgyXzBbMV0gPSB7CisgICAgezIzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODJfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MlsyXSA9IHsKKyAgICB7MSwgYXJjc184Ml8wfSwKKyAgICB7MSwgYXJjc184Ml8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKKyAgICB7MTczLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMVsyXSA9IHsKKyAgICB7MTc0LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbM10gPSB7CisgICAgezEsIGFyY3NfODNfMH0sCisgICAgezIsIGFyY3NfODNfMX0sCisgICAgezEsIGFyY3NfODNfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzBbMl0gPSB7CisgICAgezc2LCAxfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184NFszXSA9IHsKKyAgICB7MiwgYXJjc184NF8wfSwKKyAgICB7MSwgYXJjc184NF8xfSwKKyAgICB7MSwgYXJjc184NF8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODVdID0gewogICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKICAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAogICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCiAgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCiAgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2MSwgImRlY29yYXRlZCIsIDAsIDMsIHN0YXRlc181LAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCi0gICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MywgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfNywKKyAgICB7MjYyLCAiYXN5bmNfZnVuY2RlZiIsIDAsIDMsIHN0YXRlc182LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjMsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzcsCisgICAgICJcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NCwgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfOCwKICAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY0LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NiwgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzExLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAotICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAotICAgIHsyNjksICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xMywKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKLSAgICB7MjcwLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKLSAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHsyNzIsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezI3MywgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzZcMDM3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NSwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAotICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzgsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7MjgxLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNSwKKyAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOSwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY2LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzEwLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTEsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OCwgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY5LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMywKKyAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICB7MjcwLCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgezI3MSwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgezI3MiwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MjczLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHsyNzQsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzcwXDM3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NSwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NywgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKKyAgICB7Mjc4LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgyLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODQsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOCwKKyAgICB7Mjc5LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMjksCisgICAgezI4MCwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODEsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAorICAgIHsyODIsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODMsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OCwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTQsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEzMVwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAorICAgIHsyOTUsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzM5LAogICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkyLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCi0gICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NSwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKKyAgICB7Mjk2LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MCwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAxLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDUsCi0gICAgICJcMDA0XDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDQsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA3LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTAsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMjIwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxMywgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE2LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTksICJwb3dlciIsIDAsIDQsIHN0YXRlc182MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIyLCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMjUsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzY5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyOCwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTEsIHN0YXRlc183MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCi0gICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMzMSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAorICAgIHsyOTcsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAwLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwMiwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMywgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ3LAorICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHszMDQsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDUsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzA2LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA3LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOCwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwOSwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTAsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzExLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzEyLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwzNzFcMDA3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzEzLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTQsICJleHByIiwgMCwgMiwgc3RhdGVzXzU4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTUsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzE2LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxNywgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxOCwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxOSwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzIxLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMiwgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzIzLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI0LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI1LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDAifSwKKyAgICB7MzI2LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI3LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjgsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMjksICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzMwLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMSwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzMyLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCisgICAgezMzMywgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzNCwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzUsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNiwgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzcsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgxLAogICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzQsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzc4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAotICAgIHszMzcsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAyXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMzOCwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOSwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCisgICAgezM0MCwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE2OV0gPSB7CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE3NV0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKLSAgICB7MjY5LCAwfSwKLSAgICB7MjkzLCAwfSwKKyAgICB7MjcwLCAwfSwKKyAgICB7Mjk0LCAwfSwKICAgICB7MjU3LCAwfSwKLSAgICB7MjY4LCAwfSwKKyAgICB7MjY5LCAwfSwKICAgICB7MCwgMH0sCiAgICAgezI1OCwgMH0sCi0gICAgezMyNywgMH0sCisgICAgezMzMCwgMH0sCiAgICAgezI1OSwgMH0sCiAgICAgezQ5LCAwfSwKLSAgICB7Mjg5LCAwfSwKKyAgICB7MjkwLCAwfSwKICAgICB7NywgMH0sCi0gICAgezMzMCwgMH0sCisgICAgezMzMywgMH0sCiAgICAgezgsIDB9LAogICAgIHsyNjAsIDB9LAogICAgIHsyNjEsIDB9LAotICAgIHszMjksIDB9LAorICAgIHszMzIsIDB9LAorICAgIHsyNjMsIDB9LAogICAgIHsyNjIsIDB9LAorICAgIHs1NSwgMH0sCiAgICAgezEsICJkZWYifSwKICAgICB7MSwgMH0sCi0gICAgezI2MywgMH0sCi0gICAgezUwLCAwfSwKLSAgICB7MzAyLCAwfSwKLSAgICB7MTEsIDB9LAotICAgIHszMDEsIDB9LAogICAgIHsyNjQsIDB9LAorICAgIHs1MSwgMH0sCisgICAgezMwNCwgMH0sCisgICAgezExLCAwfSwKKyAgICB7MzAzLCAwfSwKICAgICB7MjY1LCAwfSwKKyAgICB7MjY2LCAwfSwKICAgICB7MjIsIDB9LAogICAgIHsxMiwgMH0sCiAgICAgezE2LCAwfSwKICAgICB7MzUsIDB9LAotICAgIHsyNjYsIDB9LAogICAgIHsyNjcsIDB9LAotICAgIHsyNzAsIDB9LAotICAgIHsxMywgMH0sCisgICAgezI2OCwgMH0sCiAgICAgezI3MSwgMH0sCi0gICAgezI3NCwgMH0sCisgICAgezEzLCAwfSwKKyAgICB7MjcyLCAwfSwKICAgICB7Mjc1LCAwfSwKICAgICB7Mjc2LCAwfSwKLSAgICB7MjgyLCAwfSwKLSAgICB7MjkwLCAwfSwKKyAgICB7Mjc3LCAwfSwKKyAgICB7MjgzLCAwfSwKICAgICB7MjkxLCAwfSwKICAgICB7MjkyLCAwfSwKLSAgICB7MjcyLCAwfSwKKyAgICB7MjkzLCAwfSwKICAgICB7MjczLCAwfSwKLSAgICB7MzM2LCAwfSwKLSAgICB7MzExLCAwfSwKKyAgICB7Mjc0LCAwfSwKKyAgICB7MzM5LCAwfSwKKyAgICB7MzEzLCAwfSwKICAgICB7MzYsIDB9LAogICAgIHszNywgMH0sCiAgICAgezM4LCAwfSwKKyAgICB7NTAsIDB9LAogICAgIHszOSwgMH0sCiAgICAgezQwLCAwfSwKICAgICB7NDEsIDB9LApAQCAtMjA0NiwzNiArMjA5OCwzNyBAQAogICAgIHs0NiwgMH0sCiAgICAgezQ4LCAwfSwKICAgICB7MSwgImRlbCJ9LAotICAgIHszMjYsIDB9LAorICAgIHszMjksIDB9LAogICAgIHsxLCAicGFzcyJ9LAotICAgIHsyNzcsIDB9LAogICAgIHsyNzgsIDB9LAogICAgIHsyNzksIDB9LAotICAgIHsyODEsIDB9LAogICAgIHsyODAsIDB9LAorICAgIHsyODIsIDB9LAorICAgIHsyODEsIDB9LAogICAgIHsxLCAiYnJlYWsifSwKICAgICB7MSwgImNvbnRpbnVlIn0sCiAgICAgezEsICJyZXR1cm4ifSwKICAgICB7MSwgInJhaXNlIn0sCiAgICAgezEsICJmcm9tIn0sCi0gICAgezI4MywgMH0sCiAgICAgezI4NCwgMH0sCi0gICAgezEsICJpbXBvcnQifSwKLSAgICB7Mjg4LCAwfSwKLSAgICB7MjMsIDB9LAotICAgIHs1MSwgMH0sCi0gICAgezI4NywgMH0sCiAgICAgezI4NSwgMH0sCi0gICAgezEsICJhcyJ9LAorICAgIHsxLCAiaW1wb3J0In0sCisgICAgezI4OSwgMH0sCisgICAgezIzLCAwfSwKKyAgICB7NTIsIDB9LAorICAgIHsyODgsIDB9LAogICAgIHsyODYsIDB9LAorICAgIHsxLCAiYXMifSwKKyAgICB7Mjg3LCAwfSwKICAgICB7MSwgImdsb2JhbCJ9LAogICAgIHsxLCAibm9ubG9jYWwifSwKICAgICB7MSwgImFzc2VydCJ9LAotICAgIHsyOTQsIDB9LAotICAgIHsyOTUsIDB9LAogICAgIHsyOTYsIDB9LAogICAgIHsyOTcsIDB9LAogICAgIHsyOTgsIDB9LAorICAgIHsyOTksIDB9LAorICAgIHszMDAsIDB9LAorICAgIHsyOTUsIDB9LAogICAgIHsxLCAiaWYifSwKICAgICB7MSwgImVsaWYifSwKICAgICB7MSwgImVsc2UifSwKQEAgLTIwODMsMjYgKzIxMzYsMjYgQEAKICAgICB7MSwgImZvciJ9LAogICAgIHsxLCAiaW4ifSwKICAgICB7MSwgInRyeSJ9LAotICAgIHszMDAsIDB9LAorICAgIHszMDIsIDB9LAogICAgIHsxLCAiZmluYWxseSJ9LAogICAgIHsxLCAid2l0aCJ9LAotICAgIHsyOTksIDB9LAotICAgIHszMTIsIDB9LAorICAgIHszMDEsIDB9LAorICAgIHszMTQsIDB9LAogICAgIHsxLCAiZXhjZXB0In0sCiAgICAgezUsIDB9LAogICAgIHs2LCAwfSwKLSAgICB7MzA2LCAwfSwKLSAgICB7MzA0LCAwfSwKLSAgICB7MzAzLCAwfSwKLSAgICB7MzA1LCAwfSwKLSAgICB7MSwgImxhbWJkYSJ9LAotICAgIHszMDcsIDB9LAotICAgIHsxLCAib3IifSwKICAgICB7MzA4LCAwfSwKKyAgICB7MzA2LCAwfSwKKyAgICB7MzA1LCAwfSwKKyAgICB7MzA3LCAwfSwKKyAgICB7MSwgImxhbWJkYSJ9LAorICAgIHszMDksIDB9LAorICAgIHsxLCAib3IifSwKKyAgICB7MzEwLCAwfSwKICAgICB7MSwgImFuZCJ9LAogICAgIHsxLCAibm90In0sCi0gICAgezMwOSwgMH0sCi0gICAgezMxMCwgMH0sCisgICAgezMxMSwgMH0sCisgICAgezMxMiwgMH0sCiAgICAgezIwLCAwfSwKICAgICB7MjEsIDB9LAogICAgIHsyNywgMH0sCkBAIC0yMTExLDUyICsyMTY0LDU0IEBACiAgICAgezI4LCAwfSwKICAgICB7MjgsIDB9LAogICAgIHsxLCAiaXMifSwKLSAgICB7MzEzLCAwfSwKLSAgICB7MTgsIDB9LAotICAgIHszMTQsIDB9LAotICAgIHszMiwgMH0sCiAgICAgezMxNSwgMH0sCi0gICAgezE5LCAwfSwKKyAgICB7MTgsIDB9LAogICAgIHszMTYsIDB9LAorICAgIHszMiwgMH0sCisgICAgezMxNywgMH0sCisgICAgezE5LCAwfSwKKyAgICB7MzE4LCAwfSwKICAgICB7MzMsIDB9LAogICAgIHszNCwgMH0sCi0gICAgezMxNywgMH0sCisgICAgezMxOSwgMH0sCiAgICAgezE0LCAwfSwKICAgICB7MTUsIDB9LAotICAgIHszMTgsIDB9LAorICAgIHszMjAsIDB9LAogICAgIHsxNywgMH0sCiAgICAgezI0LCAwfSwKICAgICB7NDcsIDB9LAogICAgIHszMSwgMH0sCi0gICAgezMxOSwgMH0sCi0gICAgezMyMCwgMH0sCi0gICAgezMyMiwgMH0sCiAgICAgezMyMSwgMH0sCisgICAgezMyMiwgMH0sCisgICAgezU0LCAwfSwKKyAgICB7MzIzLCAwfSwKKyAgICB7MzI1LCAwfSwKKyAgICB7MzI0LCAwfSwKICAgICB7OSwgMH0sCiAgICAgezEwLCAwfSwKICAgICB7MjUsIDB9LAotICAgIHszMjgsIDB9LAorICAgIHszMzEsIDB9LAogICAgIHsyNiwgMH0sCiAgICAgezIsIDB9LAogICAgIHszLCAwfSwKICAgICB7MSwgIk5vbmUifSwKICAgICB7MSwgIlRydWUifSwKICAgICB7MSwgIkZhbHNlIn0sCi0gICAgezMzMywgMH0sCi0gICAgezMyMywgMH0sCi0gICAgezMyNCwgMH0sCi0gICAgezMyNSwgMH0sCisgICAgezMzNiwgMH0sCisgICAgezMyNiwgMH0sCisgICAgezMyNywgMH0sCisgICAgezMyOCwgMH0sCiAgICAgezEsICJjbGFzcyJ9LAotICAgIHszMzEsIDB9LAotICAgIHszMzIsIDB9LAogICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAotICAgIHsxLCAieWllbGQifSwKICAgICB7MzM3LCAwfSwKKyAgICB7MzM4LCAwfSwKKyAgICB7MSwgInlpZWxkIn0sCisgICAgezM0MCwgMH0sCiB9OwogZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hciA9IHsKLSAgICA4MiwKKyAgICA4NSwKICAgICBkZmFzLAotICAgIHsxNjksIGxhYmVsc30sCisgICAgezE3NSwgbGFiZWxzfSwKICAgICAyNTYKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0LmMgYi9QeXRob24vaW1wb3J0LmMKaW5kZXggNGYwNzY1YS4uNDRhYWU4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydC5jCisrKyBiL1B5dGhvbi9pbXBvcnQuYwpAQCAtMzYsNiArMzYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OWMzMzI0NzVkODY4NjI4NF0qLwogCisjaW5jbHVkZSAiY2xpbmljL2ltcG9ydC5jLmgiCisKIC8qW3B5dGhvbiBpbnB1dF0KIGNsYXNzIGZzX3VuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlPYmplY3QgKicKQEAgLTIzOSwyOSArMjQxLDkgQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHJldHVybiBGYWxzZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfbG9ja19oZWxkX19kb2NfXywKLSJsb2NrX2hlbGQoJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBUcnVlIGlmIHRoZSBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZSBGYWxzZS5cbiIKLSJcbiIKLSJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9MT0NLX0hFTERfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvY2tfaGVsZCIsIChQeUNGdW5jdGlvbilfaW1wX2xvY2tfaGVsZCwgTUVUSF9OT0FSR1MsIF9pbXBfbG9ja19oZWxkX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvY2tfaGVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2NrX2hlbGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKLXsKLSAgICByZXR1cm4gX2ltcF9sb2NrX2hlbGRfaW1wbChtb2R1bGUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9sb2NrX2hlbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZTY1Njc0OTY2YmFhNjUgaW5wdXQ9OWIwODhmOWIyMTdkOWJkZl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3YThjYzNhNTE2OTA4MWEgaW5wdXQ9OWIwODhmOWIyMTdkOWJkZl0qLwogewogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhpbXBvcnRfbG9ja190aHJlYWQgIT0gLTEpOwpAQCAtMjc5LDMwICsyNjEsOSBAQAogbW9kdWxlcy4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2FjcXVpcmVfbG9ja19fZG9jX18sCi0iYWNxdWlyZV9sb2NrKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJBY3F1aXJlcyB0aGUgaW50ZXJwcmV0ZXJcJ3MgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC5cbiIKLSJcbiIKLSJUaGlzIGxvY2sgc2hvdWxkIGJlIHVzZWQgYnkgaW1wb3J0IGhvb2tzIHRvIGVuc3VyZSB0aHJlYWQtc2FmZXR5IHdoZW4gaW1wb3J0aW5nXG4iCi0ibW9kdWxlcy4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7Ci0KLSNkZWZpbmUgX0lNUF9BQ1FVSVJFX0xPQ0tfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjcXVpcmVfbG9jayIsIChQeUNGdW5jdGlvbilfaW1wX2FjcXVpcmVfbG9jaywgTUVUSF9OT0FSR1MsIF9pbXBfYWNxdWlyZV9sb2NrX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2FjcXVpcmVfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9hY3F1aXJlX2xvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKLXsKLSAgICByZXR1cm4gX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChtb2R1bGUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3OGYxZmEwODlmZGI5YTQgaW5wdXQ9NGEyZDQzODE4NjZkNWZkY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNjMTQzYjFkMTY0MjJjYWUgaW5wdXQ9NGEyZDQzODE4NjZkNWZkY10qLwogewogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7CkBAIC0zMTksMjkgKzI4MCw5IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfcmVsZWFzZV9sb2NrX19kb2NfXywKLSJyZWxlYXNlX2xvY2soJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJlbGVhc2UgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrLlxuIgotIlxuIgotIk9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwotCi0jZGVmaW5lIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRiAgICBcCi0gICAgeyJyZWxlYXNlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX3JlbGVhc2VfbG9ja19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9yZWxlYXNlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfcmVsZWFzZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNmM3N2E2ODMyZmRhZmQ0IGlucHV0PTkzNGZiMTE1MTZkZDc3OGJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGQyOGUzOGViZTJiMjI0IGlucHV0PTkzNGZiMTE1MTZkZDc3OGJdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKQEAgLTU1MCw4ICs0OTEsMTMgQEAKIHsKICAgICBsb25nIHJlczsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBQeU9iamVjdCAqZXh0ZXJuYWwsICpweWNfbWFnaWM7CisKKyAgICBleHRlcm5hbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsICJfYm9vdHN0cmFwX2V4dGVybmFsIik7CisgICAgaWYgKGV4dGVybmFsID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBweWNfbWFnaWMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV4dGVybmFsLCAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBQeV9ERUNSRUYoZXh0ZXJuYWwpOwogICAgIGlmIChweWNfbWFnaWMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJlcyA9IFB5TG9uZ19Bc0xvbmcocHljX21hZ2ljKTsKQEAgLTc5Niw3ICs3NDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNwYXRobmFtZSkKIHsKICAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnBhdGhvYmogPSBOVUxMLCAqY3BhdGhvYmogPSBOVUxMLCAqZXh0ZXJuYWw9IE5VTEw7CiAKICAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CiAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKQEAgLTgyNCw5ICs3NzAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGludGVycHJldGVyISIpOwogICAgICAgICB9CiAKLSAgICAgICAgcGF0aG9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBleHRlcm5hbD0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICAgICAgaWYgKGV4dGVybmFsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhleHRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZ2V0X3NvdXJjZWZpbGUsIGNwYXRob2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKKyAgICAgICAgfQogICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CkBAIC04OTIsNyArODQzLDcgQEAKIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjcGF0aG5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKmQsICpyZXM7CisgICAgUHlPYmplY3QgKmQsICpleHRlcm5hbCwgKnJlczsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBfUHlfSURFTlRJRklFUihfZml4X3VwX21vZHVsZSk7CiAKQEAgLTkwNCw5ICs4NTUsMTMgQEAKICAgICBpZiAocGF0aG5hbWUgPT0gTlVMTCkgewogICAgICAgICBwYXRobmFtZSA9ICgoUHlDb2RlT2JqZWN0ICopY28pLT5jb19maWxlbmFtZTsKICAgICB9Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgZXh0ZXJuYWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCAiX2Jvb3RzdHJhcF9leHRlcm5hbCIpOworICAgIGlmIChleHRlcm5hbCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhleHRlcm5hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZml4X3VwX21vZHVsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZXh0ZXJuYWwpOwogICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmVzID0gZXhlY19jb2RlX2luX21vZHVsZShuYW1lLCBkLCBjbyk7CkBAIC05NjYsNDMgKzkyMSwxMCBAQAogQ2hhbmdlcyBjb2RlLmNvX2ZpbGVuYW1lIHRvIHNwZWNpZnkgdGhlIHBhc3NlZC1pbiBmaWxlIHBhdGguCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19fLAotIl9maXhfY29fZmlsZW5hbWUoJG1vZHVsZSwgY29kZSwgcGF0aCwgLylcbiIKLSItLVxuIgotIlxuIgotIkNoYW5nZXMgY29kZS5jb19maWxlbmFtZSB0byBzcGVjaWZ5IHRoZSBwYXNzZWQtaW4gZmlsZSBwYXRoLlxuIgotIlxuIgotIiAgY29kZVxuIgotIiAgICBDb2RlIG9iamVjdCB0byBjaGFuZ2UuXG4iCi0iICBwYXRoXG4iCi0iICAgIEZpbGUgcGF0aCB0byB1c2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9fRklYX0NPX0ZJTEVOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfX2ZpeF9jb19maWxlbmFtZSwgTUVUSF9WQVJBUkdTLCBfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5Q29kZU9iamVjdCAqY29kZSwgUHlPYmplY3QgKnBhdGgpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9fZml4X2NvX2ZpbGVuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5Q29kZU9iamVjdCAqY29kZTsKLSAgICBQeU9iamVjdCAqcGF0aDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAotICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeUNvZGVPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpwYXRoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiNGIxZWRlYjBkNTVjNWQgaW5wdXQ9ODk1YmE1MGU3OGI4MmYwNV0qLworX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRkYjU2YWFjMGExMzI3ZiBpbnB1dD04OTViYTUwZTc4YjgyZjA1XSovCiAKIHsKICAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKGNvZGUsIHBhdGgpOwpAQCAtMTEwNCw1MCArMTAyNiw3NCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2ltcC5jcmVhdGVfYnVpbHRpbgogCi1zdGF0aWMgaW50IGluaXRfYnVpbHRpbihQeU9iamVjdCAqKTsgLyogRm9yd2FyZCAqLworICAgIHNwZWM6IG9iamVjdAorICAgIC8KIAotLyogSW5pdGlhbGl6ZSBhIGJ1aWx0LWluIG1vZHVsZS4KLSAgIFJldHVybiAxIGZvciBzdWNjZXNzLCAwIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLCBhbmQgLTEgd2l0aAotICAgYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiAqLworQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBpbnQKLWluaXRfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2NyZWF0ZV9idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzcGVjKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwMzhmNDY3NjE3MjI2YmQgaW5wdXQ9MzdmOTY2Zjg5MDM4NGU0N10qLwogewogICAgIHN0cnVjdCBfaW5pdHRhYiAqcDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBjaGFyICpuYW1lc3RyOwogICAgIFB5T2JqZWN0ICptb2Q7CiAKKyAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgbW9kID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgbmFtZSk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobW9kICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOworICAgIGlmIChtb2QgfHwgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICByZXR1cm4gbW9kOworICAgIH0KKworICAgIG5hbWVzdHIgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWUpOworICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Jbml0dGFiOyBwLT5uYW1lICE9IE5VTEw7IHArKykgewotICAgICAgICBQeU9iamVjdCAqbW9kOwogICAgICAgICBQeU1vZHVsZURlZiAqZGVmOwogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJVIiLAotICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgLyogQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICgic3lzIiBvciAiYnVpbHRpbnMiKSAqLworICAgICAgICAgICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lc3RyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1vZCA9ICgqcC0+aW5pdGZ1bmMpKCk7Ci0gICAgICAgICAgICBpZiAobW9kID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KLSAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOwotICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcC0+aW5pdGZ1bmM7Ci0gICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAotICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCi0gICAgICAgICAgICBQeV9ERUNSRUYobW9kKTsKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhtb2QsICZQeU1vZHVsZURlZl9UeXBlKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMoKFB5TW9kdWxlRGVmKiltb2QsIHNwZWMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLworICAgICAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOworICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOworICAgICAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lLCBuYW1lKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKQEAgLTEzMzcsNiArMTI4Myw3IEBACiByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewogICAgIGNvbnN0IGNoYXIgKmltcG9ydGxpYl9maWxlbmFtZSA9ICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiI7CisgICAgY29uc3QgY2hhciAqZXh0ZXJuYWxfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iOwogICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CiAgICAgaW50IGFsd2F5c190cmltID0gMDsKICAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKQEAgLTEzNjYsNyArMTMxMywxMCBAQAogICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKICAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2ZpbGVuYW1lKSA9PSAwKTsKICAgICAgICAgaWYgKG5vd19pbl9pbXBvcnRsaWIgJiYgIWluX2ltcG9ydGxpYikgewogICAgICAgICAgICAgLyogVGhpcyBpcyB0aGUgbGluayB0byB0aGlzIGNodW5rIG9mIGltcG9ydGxpYiB0cmFjZWJhY2tzICovCiAgICAgICAgICAgICBvdXRlcl9saW5rID0gcHJldl9saW5rOwpAQCAtMTg2OCwyNyArMTgxOCw5IEBACiBSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX19kb2NfXywKLSJleHRlbnNpb25fc3VmZml4ZXMoJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyB1c2VkIHRvIGlkZW50aWZ5IGV4dGVuc2lvbiBtb2R1bGVzLiIpOwotCi0jZGVmaW5lIF9JTVBfRVhURU5TSU9OX1NVRkZJWEVTX01FVEhPRERFRiAgICBcCi0gICAgeyJleHRlbnNpb25fc3VmZml4ZXMiLCAoUHlDRnVuY3Rpb24pX2ltcF9leHRlbnNpb25fc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjMwYTI0MzgxNjc3OThjIGlucHV0PWVjZGVlZWNmY2I2ZjgzOWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDRjMTU2NmVmMzYyMjI5IGlucHV0PWVjZGVlZWNmY2I2ZjgzOWVdKi8KIHsKICAgICBQeU9iamVjdCAqbGlzdDsKICAgICBjb25zdCBjaGFyICpzdWZmaXg7CkBAIC0xOTE3LDYyICsxODQ5LDYgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotX2ltcC5pbml0X2J1aWx0aW4KLQotICAgIG5hbWU6IHVuaWNvZGUKLSAgICAvCi0KLUluaXRpYWxpemVzIGEgYnVpbHQtaW4gbW9kdWxlLgotW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi1QeURvY19TVFJWQVIoX2ltcF9pbml0X2J1aWx0aW5fX2RvY19fLAotImluaXRfYnVpbHRpbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iSW5pdGlhbGl6ZXMgYSBidWlsdC1pbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9JTklUX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImluaXRfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2luaXRfYnVpbHRpbiwgTUVUSF9WQVJBUkdTLCBfaW1wX2luaXRfYnVpbHRpbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppbml0X2J1aWx0aW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTAyNDQ5NDhhNDNmOGUyNiBpbnB1dD1mOTM0ZDIyMzFlYzUyYTJlXSovCi17Ci0gICAgaW50IHJldDsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIHJldCA9IGluaXRfYnVpbHRpbihuYW1lKTsKLSAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7Ci0gICAgUHlfWElOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLypbY2xpbmljIGlucHV0XQogX2ltcC5pbml0X2Zyb3plbgogCiAgICAgbmFtZTogdW5pY29kZQpAQCAtMTk4MSwzNyArMTg1Nyw5IEBACiBJbml0aWFsaXplcyBhIGZyb3plbiBtb2R1bGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2luaXRfZnJvemVuX19kb2NfXywKLSJpbml0X2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImluaXRfZnJvemVuIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaW5pdF9mcm96ZW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pbml0X2Zyb3plbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aW5pdF9mcm96ZW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0YmMyYmZmMjk2ZjhmMjIgaW5wdXQ9MTMwMTlhZGZjMDRmM2ZiM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5ZGU0OTNiZGQ3MTE4NzggaW5wdXQ9MTMwMTlhZGZjMDRmM2ZiM10qLwogewogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07CkBAIC0yMDM3LDM3ICsxODg1LDkgQEAKIENyZWF0ZSBhIGNvZGUgb2JqZWN0IGZvciBhIGZyb3plbiBtb2R1bGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfXywKLSJnZXRfZnJvemVuX29iamVjdCgkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iQ3JlYXRlIGEgY29kZSBvYmplY3QgZm9yIGEgZnJvemVuIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0dFVF9GUk9aRU5fT0JKRUNUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRfZnJvemVuX29iamVjdCIsIChQeUNGdW5jdGlvbilfaW1wX2dldF9mcm96ZW5fb2JqZWN0LCBNRVRIX1ZBUkFSR1MsIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2dldF9mcm96ZW5fb2JqZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmdldF9mcm96ZW5fb2JqZWN0IiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDg5ZWM3MDJhOWQ3MGM1IGlucHV0PWVkNjg5YmMwNTM1OGZkYmRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTE0Yzk3MGE0N2YyZTNjIGlucHV0PWVkNjg5YmMwNTM1OGZkYmRdKi8KIHsKICAgICByZXR1cm4gZ2V0X2Zyb3plbl9vYmplY3QobmFtZSk7CiB9CkBAIC0yMDgxLDM3ICsxOTAxLDkgQEAKIFJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgaXMgb2YgYSBmcm96ZW4gcGFja2FnZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfX2RvY19fLAotImlzX2Zyb3plbl9wYWNrYWdlKCRtb2R1bGUsIG5hbWUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGlzIG9mIGEgZnJvemVuIHBhY2thZ2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9JU19GUk9aRU5fUEFDS0FHRV9NRVRIT0RERUYgICAgXAotICAgIHsiaXNfZnJvemVuX3BhY2thZ2UiLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW5fcGFja2FnZSwgTUVUSF9WQVJBUkdTLCBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5fcGFja2FnZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppc19mcm96ZW5fcGFja2FnZSIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODZhYWIxNGRjZDRiOTU5YiBpbnB1dD04MWI2Y2RlY2QwODBmYmI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U0Y2FiODAyYjU2ZDY0OSBpbnB1dD04MWI2Y2RlY2QwODBmYmI4XSovCiB7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMjEyNSwzNyArMTkxNyw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pc19idWlsdGluX19kb2NfXywKLSJpc19idWlsdGluKCRtb2R1bGUsIG5hbWUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfQlVJTFRJTl9NRVRIT0RERUYgICAgXAotICAgIHsiaXNfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2J1aWx0aW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pc19idWlsdGluX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfYnVpbHRpbiIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaXNfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ1ODQ3ZjhjYWM1MDk0NmUgaW5wdXQ9ODZiZWZkYWMwMjFkZDFjN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkZWVjOWNhYzZmYjlhN2UgaW5wdXQ9ODZiZWZkYWMwMjFkZDFjN10qLwogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaXNfYnVpbHRpbihuYW1lKSk7CiB9CkBAIC0yMTY5LDM3ICsxOTMzLDkgQEAKIFJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fX2RvY19fLAotImlzX2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGZyb3plbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9JU19GUk9aRU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbiwgTUVUSF9WQVJBUkdTLCBfaW1wX2lzX2Zyb3plbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2Zyb3plbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppc19mcm96ZW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaXNfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY5MWFmODg0YmE0OTg3ZCBpbnB1dD03MzAxZGJjYTE4OTdkNjZiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2RlOGUyNjBjOGUzNmFlZCBpbnB1dD03MzAxZGJjYTE4OTdkNjZiXSovCiB7CiAgICAgY29uc3Qgc3RydWN0IF9mcm96ZW4gKnA7CiAKQEAgLTIyMTAsODEgKzE5NDYsMTA2IEBACiAjaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKIAogLypbY2xpbmljIGlucHV0XQotX2ltcC5sb2FkX2R5bmFtaWMKK19pbXAuY3JlYXRlX2R5bmFtaWMKIAotICAgIG5hbWU6IHVuaWNvZGUKLSAgICBwYXRoOiBmc191bmljb2RlCisgICAgc3BlYzogb2JqZWN0CiAgICAgZmlsZTogb2JqZWN0ID0gTlVMTAogICAgIC8KIAotTG9hZHMgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KK0NyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19fLAotImxvYWRfZHluYW1pYygkbW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJMb2FkcyBhbiBleHRlbnNpb24gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2FkX2R5bmFtaWMsIE1FVEhfVkFSQVJHUywgX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9hZF9keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqZmlsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvYWRfZHluYW1pYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYywgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM1Y2RlNWIzODcyZDU2ZCBpbnB1dD1jMzFiOTU0ZjRjZjRlMDlkXSovCiB7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVTyZ8Tzpsb2FkX2R5bmFtaWMiLAotICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgsICZmaWxlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfbG9hZF9keW5hbWljX2ltcGwobW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2FkX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpmaWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZDExYTFmYmQxZWEwYTggaW5wdXQ9YWY2NGYwNmU0YmFkMzUyNl0qLwotewotICAgIFB5T2JqZWN0ICptb2Q7CisgICAgUHlPYmplY3QgKm1vZCwgKm5hbWUsICpwYXRoOwogICAgIEZJTEUgKmZwOwogCisgICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJvcmlnaW4iKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbW9kID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgcmV0dXJuIG1vZDsKKyAgICB9CisKICAgICBpZiAoZmlsZSAhPSBOVUxMKSB7CiAgICAgICAgIGZwID0gX1B5X2ZvcGVuX29iaihwYXRoLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZnAgPSBOVUxMOwotICAgIG1vZCA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShuYW1lLCBwYXRoLCBmcCk7CisKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhzcGVjLCBmcCk7CisKKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICByZXR1cm4gbW9kOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW1wLmV4ZWNfZHluYW1pYyAtPiBpbnQKKworICAgIG1vZDogb2JqZWN0CisgICAgLworCitJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pbXBfZXhlY19keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Yjg0ZjEzMDFiMjJkNGJkIGlucHV0PTlmZGJmY2IyNTAyODBkM2FdKi8KK3sKKyAgICBQeU1vZHVsZURlZiAqZGVmOworICAgIHZvaWQgKnN0YXRlOworCisgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtb2QpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOworICAgIGlmIChkZWYgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBzdGF0ZSA9IFB5TW9kdWxlX0dldFN0YXRlKG1vZCk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc3RhdGUpIHsKKyAgICAgICAgLyogQWxyZWFkeSBpbml0aWFsaXplZDsgc2tpcCByZWxvYWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKK30KKworCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAogLypbY2xpbmljIGlucHV0XQogZHVtcCBidWZmZXIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLQotI2lmbmRlZiBfSU1QX0xPQURfRFlOQU1JQ19NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMDdjMWQ0YTM0M2E5NTc5IGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KIAogCiBQeURvY19TVFJWQVIoZG9jX2ltcCwKQEAgLTIyOTcsMTEgKzIwNTgsMTIgQEAKICAgICBfSU1QX1JFTEVBU0VfTE9DS19NRVRIT0RERUYKICAgICBfSU1QX0dFVF9GUk9aRU5fT0JKRUNUX01FVEhPRERFRgogICAgIF9JTVBfSVNfRlJPWkVOX1BBQ0tBR0VfTUVUSE9EREVGCi0gICAgX0lNUF9JTklUX0JVSUxUSU5fTUVUSE9EREVGCisgICAgX0lNUF9DUkVBVEVfQlVJTFRJTl9NRVRIT0RERUYKICAgICBfSU1QX0lOSVRfRlJPWkVOX01FVEhPRERFRgogICAgIF9JTVBfSVNfQlVJTFRJTl9NRVRIT0RERUYKICAgICBfSU1QX0lTX0ZST1pFTl9NRVRIT0RERUYKLSAgICBfSU1QX0xPQURfRFlOQU1JQ19NRVRIT0RERUYKKyAgICBfSU1QX0NSRUFURV9EWU5BTUlDX01FVEhPRERFRgorICAgIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogICAgIF9JTVBfX0ZJWF9DT19GSUxFTkFNRV9NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwpAQCAtMjM4NCw3ICsyMTQ2LDcgQEAKIAogICAgIG1lbXNldChuZXd0YWIsICdcMCcsIHNpemVvZiBuZXd0YWIpOwogCi0gICAgbmV3dGFiWzBdLm5hbWUgPSAoY2hhciAqKW5hbWU7CisgICAgbmV3dGFiWzBdLm5hbWUgPSBuYW1lOwogICAgIG5ld3RhYlswXS5pbml0ZnVuYyA9IGluaXRmdW5jOwogCiAgICAgcmV0dXJuIFB5SW1wb3J0X0V4dGVuZEluaXR0YWIobmV3dGFiKTsKQEAgLTIzOTMsNCArMjE1NSwzIEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0ZGwuYyBiL1B5dGhvbi9pbXBvcnRkbC5jCmluZGV4IGI2MGYxYzcuLjFhYTU4NWQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRkbC5jCisrKyBiL1B5dGhvbi9pbXBvcnRkbC5jCkBAIC0xMyw4NyArMTMsMTg1IEBACiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKLWV4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCk7CitleHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHJXaW5kb3dzKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKmZwKTsKICNlbHNlCi1leHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CitleHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwogI2VuZGlmCiAKLVB5T2JqZWN0ICoKLV9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIEZJTEUgKmZwKQotewotICAgIFB5T2JqZWN0ICptID0gTlVMTDsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXM7Ci0jZW5kaWYKLSAgICBQeU9iamVjdCAqbmFtZWFzY2lpOwotICAgIGNoYXIgKm5hbWVzdHIsICpsYXN0ZG90LCAqc2hvcnRuYW1lLCAqcGFja2FnZWNvbnRleHQsICpvbGRjb250ZXh0OwotICAgIGRsX2Z1bmNwdHIgcDA7Ci0gICAgUHlPYmplY3QqICgqcCkodm9pZCk7Ci0gICAgc3RydWN0IFB5TW9kdWxlRGVmICpkZWY7CitzdGF0aWMgY29uc3QgY2hhciAqYXNjaWlfb25seV9wcmVmaXggPSAiUHlJbml0IjsKK3N0YXRpYyBjb25zdCBjaGFyICpub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKLSAgICBtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7Ci0gICAgaWYgKG0gIT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYobSk7Ci0gICAgICAgIHJldHVybiBtOworLyogR2V0IHRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgbW9kdWxlJ3MgZXhwb3J0IHN5bWJvbCBuYW1lLgorICogUmV0dXJucyBhIGJ5dGVzIGluc3RhbmNlLiBGb3Igbm9uLUFTQ0lJLW5hbWVkIG1vZHVsZXMsIHRoZSBuYW1lIGlzCisgKiBlbmNvZGVkIGFzIHBlciBQRVAgNDg5LgorICogVGhlIGhvb2tfcHJlZml4IHBvaW50ZXIgaXMgc2V0IHRvIGVpdGhlciBhc2NpaV9vbmx5X3ByZWZpeCBvcgorICogbm9uYXNjaWlfcHJlZml4LCBhcyBhcHByb3ByaWF0ZS4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9lbmNvZGVkX25hbWUoUHlPYmplY3QgKm5hbWUsIGNvbnN0IGNoYXIgKipob29rX3ByZWZpeCkgeworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlPYmplY3QgKmVuY29kZWQgPSBOVUxMOworICAgIFB5T2JqZWN0ICptb2RuYW1lID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG5hbWVfbGVuLCBsYXN0ZG90OworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOworCisgICAgLyogR2V0IHRoZSBzaG9ydCBuYW1lIChzdWJzdHJpbmcgYWZ0ZXIgbGFzdCBkb3QpICovCisgICAgbmFtZV9sZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKG5hbWUpOworICAgIGxhc3Rkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLCBuYW1lX2xlbiwgLTEpOworICAgIGlmIChsYXN0ZG90IDwgLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIGlmIChsYXN0ZG90ID49IDApIHsKKyAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCBsYXN0ZG90ICsgMSwgbmFtZV9sZW4pOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbmFtZSA9IHRtcDsKKyAgICAgICAgLyogIm5hbWUiIG5vdyBob2xkcyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIHN1YnN0cmluZyAqLworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICB9CiAKLSAgICAvKiBuYW1lIG11c3QgYmUgZW5jb2RhYmxlIHRvIEFTQ0lJIGJlY2F1c2UgZHluYW1pYyBtb2R1bGUgbXVzdCBoYXZlIGEKLSAgICAgICBmdW5jdGlvbiBjYWxsZWQgIlB5SW5pdF9OQU1FIiwgdGhleSBhcmUgd3JpdHRlbiBpbiBDLCBhbmQgdGhlIEMgbGFuZ3VhZ2UKLSAgICAgICBkb2Vzbid0IGFjY2VwdCBub24tQVNDSUkgaWRlbnRpZmllcnMuICovCi0gICAgbmFtZWFzY2lpID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAiYXNjaWkiLCBOVUxMKTsKLSAgICBpZiAobmFtZWFzY2lpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIEVuY29kZSB0byBBU0NJSSBvciBQdW55Y29kZSwgYXMgbmVlZGVkICovCisgICAgZW5jb2RlZCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcobmFtZSwgImFzY2lpIiwgTlVMTCk7CisgICAgaWYgKGVuY29kZWQgIT0gTlVMTCkgeworICAgICAgICAqaG9va19wcmVmaXggPSBhc2NpaV9vbmx5X3ByZWZpeDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgZW5jb2RlZCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcobmFtZSwgInB1bnljb2RlIiwgTlVMTCk7CisgICAgICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpob29rX3ByZWZpeCA9IG5vbmFzY2lpX3ByZWZpeDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBuYW1lc3RyID0gUHlCeXRlc19BU19TVFJJTkcobmFtZWFzY2lpKTsKLSAgICBpZiAobmFtZXN0ciA9PSBOVUxMKQorICAgIC8qIFJlcGxhY2UgJy0nIGJ5ICdfJyAqLworICAgIG1vZG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGVuY29kZWQsICZQeUlkX3JlcGxhY2UsICJjYyIsICctJywgJ18nKTsKKyAgICBpZiAobW9kbmFtZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbGFzdGRvdCA9IHN0cnJjaHIobmFtZXN0ciwgJy4nKTsKLSAgICBpZiAobGFzdGRvdCA9PSBOVUxMKSB7Ci0gICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gTlVMTDsKLSAgICAgICAgc2hvcnRuYW1lID0gbmFtZXN0cjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gbmFtZXN0cjsKLSAgICAgICAgc2hvcnRuYW1lID0gbGFzdGRvdCsxOworICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CisgICAgcmV0dXJuIG1vZG5hbWU7CitlcnJvcjoKKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgUHlfWERFQ1JFRihlbmNvZGVkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlV2l0aFNwZWMoUHlPYmplY3QgKnNwZWMsIEZJTEUgKmZwKQoreworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKnBhdGhieXRlcyA9IE5VTEw7CisjZW5kaWYKKyAgICBQeU9iamVjdCAqbmFtZV91bmljb2RlID0gTlVMTCwgKm5hbWUgPSBOVUxMLCAqcGF0aCA9IE5VTEwsICptID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lX2J1ZiwgKmhvb2tfcHJlZml4OworICAgIGNoYXIgKm9sZGNvbnRleHQ7CisgICAgZGxfZnVuY3B0ciBleHBvcnRmdW5jOworICAgIFB5TW9kdWxlRGVmICpkZWY7CisgICAgUHlPYmplY3QgKigqcDApKHZvaWQpOworCisgICAgbmFtZV91bmljb2RlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lX3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBuYW1lID0gZ2V0X2VuY29kZWRfbmFtZShuYW1lX3VuaWNvZGUsICZob29rX3ByZWZpeCk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBuYW1lX2J1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpOworCisgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm9yaWdpbiIpOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3Moc2hvcnRuYW1lLCBwYXRoLCBmcCk7CisgICAgZXhwb3J0ZnVuYyA9IF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cldpbmRvd3MoaG9va19wcmVmaXgsIG5hbWVfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIGZwKTsKICNlbHNlCiAgICAgcGF0aGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKICAgICBpZiAocGF0aGJ5dGVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyksIGZwKTsKKyAgICBleHBvcnRmdW5jID0gX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGhvb2tfcHJlZml4LCBuYW1lX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcCk7CiAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CiAjZW5kaWYKLSAgICBwID0gKFB5T2JqZWN0KigqKSh2b2lkKSlwMDsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZHluYW1pYyBtb2R1bGUgZG9lcyBub3QgZGVmaW5lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbml0IGZ1bmN0aW9uIChQeUluaXRfJXMpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0bmFtZSk7Ci0gICAgICAgIGlmIChtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgbmFtZSwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihtc2cpOworCisgICAgaWYgKGV4cG9ydGZ1bmMgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptc2c7CisgICAgICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAiZHluYW1pYyBtb2R1bGUgZG9lcyBub3QgZGVmaW5lICIKKyAgICAgICAgICAgICAgICAibW9kdWxlIGV4cG9ydCBmdW5jdGlvbiAoJXNfJXMpIiwKKyAgICAgICAgICAgICAgICBob29rX3ByZWZpeCwgbmFtZV9idWYpOworICAgICAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWVfdW5pY29kZSwgcGF0aCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBvbGRjb250ZXh0ID0gX1B5X1BhY2thZ2VDb250ZXh0OwotICAgIF9QeV9QYWNrYWdlQ29udGV4dCA9IHBhY2thZ2Vjb250ZXh0OwotICAgIG0gPSAoKnApKCk7Ci0gICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gb2xkY29udGV4dDsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICBwMCA9IChQeU9iamVjdCAqKCopKHZvaWQpKWV4cG9ydGZ1bmM7CisKKyAgICAvKiBQYWNrYWdlIGNvbnRleHQgaXMgbmVlZGVkIGZvciBzaW5nbGUtcGhhc2UgaW5pdCAqLworICAgIG9sZGNvbnRleHQgPSBfUHlfUGFja2FnZUNvbnRleHQ7CisgICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gUHlVbmljb2RlX0FzVVRGOChuYW1lX3VuaWNvZGUpOworICAgIG0gPSBwMCgpOworICAgIF9QeV9QYWNrYWdlQ29udGV4dCA9IG9sZGNvbnRleHQ7CisKKyAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyBmYWlsZWQgd2l0aG91dCByYWlzaW5nIGFuIGV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgbmFtZV9idWYpOworICAgICAgICB9CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfSBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCisgICAgICAgICAgICBuYW1lX2J1Zik7CisgICAgICAgIG0gPSBOVUxMOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoUHlfVFlQRShtKSA9PSBOVUxMKSB7CisgICAgICAgIC8qIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGEgUHlNb2R1bGVEZWYgaXMgcmV0dXJuZWQgd2l0aG91dCBjYWxsaW5nCisgICAgICAgICAqIFB5TW9kdWxlRGVmX0luaXQgb24gaXQKKyAgICAgICAgICovCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAotICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICJpbml0IGZ1bmN0aW9uIG9mICVzIHJldHVybmVkIHVuaW5pdGlhbGl6ZWQgb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgIG5hbWVfYnVmKTsKKyAgICAgICAgbSA9IE5VTEw7IC8qIHByZXZlbnQgc2VnZmF1bHQgaW4gREVDUkVGICovCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9UeXBlQ2hlY2sobSwgJlB5TW9kdWxlRGVmX1R5cGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lX3VuaWNvZGUpOworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgcmV0dXJuIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjKChQeU1vZHVsZURlZiopbSwgc3BlYyk7CisgICAgfQorCisgICAgLyogRmFsbCBiYWNrIHRvIHNpbmdsZS1waGFzZSBpbml0IG1lY2hhbmlzbSAqLworCisgICAgaWYgKGhvb2tfcHJlZml4ID09IG5vbmFzY2lpX3ByZWZpeCkgeworICAgICAgICAvKiBkb24ndCBhbGxvdyBsZWdhY3kgaW5pdCBmb3Igbm9uLUFTQ0lJIG1vZHVsZSBuYW1lcyAqLworICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAqIGRpZCBub3QgcmV0dXJuIFB5TW9kdWxlRGVmIiwKKyAgICAgICAgICAgIG5hbWVfYnVmKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTEwMiwxMCArMjAwLDEwIEBACiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyBkaWQgbm90IHJldHVybiBhbiBleHRlbnNpb24gIgotICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsIHNob3J0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgbmFtZV9idWYpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwOworICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAwOwogCiAgICAgLyogUmVtZW1iZXIgdGhlIGZpbGVuYW1lIGFzIHRoZSBfX2ZpbGVfXyBhdHRyaWJ1dGUgKi8KICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfX2ZpbGVfXyIsIHBhdGgpIDwgMCkKQEAgLTExMywxMyArMjExLDE5IEBACiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYocGF0aCk7CiAKLSAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG0sIG5hbWUsIHBhdGgpIDwgMCkKKyAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG0sIG5hbWVfdW5pY29kZSwgcGF0aCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworCisgICAgUHlfREVDUkVGKG5hbWVfdW5pY29kZSk7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKKwogICAgIHJldHVybiBtOwogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYobmFtZWFzY2lpKTsKKyAgICBQeV9ERUNSRUYobmFtZV91bmljb2RlKTsKKyAgICBQeV9YREVDUkVGKG5hbWUpOworICAgIFB5X1hERUNSRUYocGF0aCk7CiAgICAgUHlfWERFQ1JFRihtKTsKICAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5oIGIvUHl0aG9uL2ltcG9ydGRsLmgKaW5kZXggNmE1MWE5MS4uOTg0NzY1MiAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmgKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmgKQEAgLTgsOCArOCw3IEBACiAKIGV4dGVybiBjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXTsKIAotZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKik7CitleHRlcm4gUHlPYmplY3QgKl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZVdpdGhTcGVjKFB5T2JqZWN0ICpzcGVjLCBGSUxFICopOwogCiAvKiBNYXggbGVuZ3RoIG9mIG1vZHVsZSBzdWZmaXggc2VhcmNoZWQgZm9yIC0tIGFjY29tbW9kYXRlcyAibW9kdWxlLnNsYiIgKi8KICNkZWZpbmUgTUFYU1VGRklYU0laRSAxMgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGVmOGJmMjcuLmQ1ZDM0MDYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMjI2MiArMSwxNDUyIEBACi0vKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8KKy8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIyOCw0LDAsMCwxMDAsMCwwLDkwLDAsMCwKLSAgICAxMDAsMTYzLDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCi0gICAgNiwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxNiwKLSAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTAsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDExLAotICAgIDAsMTAwLDI1LDAsMTAwLDI2LDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwyNywwLAotICAgIDEwMCwyOCwwLDEzMiwwLDAsOTAsMTMsMCwxMDEsMTQsMCwxMDEsMTIsMCwxMDYsCi0gICAgMTUsMCwxMzEsMSwwLDkwLDE2LDAsNzEsMTAwLDI5LDAsMTAwLDMwLDAsMTMyLAotICAgIDAsMCwxMDAsMzAsMCwxMzEsMiwwLDkwLDE3LDAsMTA1LDAsMCw5MCwxOCwKLSAgICAwLDEwNSwwLDAsOTAsMTksMCw3MSwxMDAsMzEsMCwxMDAsMzIsMCwxMzIsMCwKLSAgICAwLDEwMCwzMiwwLDEwMSwyMCwwLDEzMSwzLDAsOTAsMjEsMCw3MSwxMDAsMzMsCi0gICAgMCwxMDAsMzQsMCwxMzIsMCwwLDEwMCwzNCwwLDEzMSwyLDAsOTAsMjIsMCwKLSAgICA3MSwxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDEwMCwzNiwwLDEzMSwyLDAsCi0gICAgOTAsMjMsMCw3MSwxMDAsMzcsMCwxMDAsMzgsMCwxMzIsMCwwLDEwMCwzOCwwLAotICAgIDEzMSwyLDAsOTAsMjQsMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLAotICAgIDI1LDAsMTAwLDQxLDAsMTAwLDQyLDAsMTMyLDAsMCw5MCwyNiwwLDEwMCw0MywKLSAgICAwLDEwMCw0NCwwLDEzMiwwLDAsOTAsMjcsMCwxMDAsNDUsMCwxMDYsMjgsMCwKLSAgICAxMDAsNDYsMCwxMDAsNDcsMCwxMzEsMiwwLDEwMCw0OCwwLDIzLDkwLDI5LDAsCi0gICAgMTAxLDMwLDAsMTA2LDMxLDAsMTAxLDI5LDAsMTAwLDQ3LDAsMTMxLDIsMCw5MCwKLSAgICAzMiwwLDEwMCw0OSwwLDkwLDMzLDAsMTAwLDUwLDAsMTAzLDEsMCw5MCwzNCwKLSAgICAwLDEwMCw1MSwwLDEwMywxLDAsOTAsMzUsMCwxMDAsNTIsMCwxMDMsMSwwLAotICAgIDkwLDM2LDAsMTAwLDUzLDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDEsMCw5MCwKLSAgICAzNywwLDEwMCw1NiwwLDEwMCw1NywwLDEzMiwwLDAsOTAsMzgsMCwxMDAsNTgsCi0gICAgMCwxMDAsNTksMCwxMzIsMCwwLDkwLDM5LDAsMTAwLDYwLDAsMTAwLDYxLDAsCi0gICAgMTMyLDAsMCw5MCw0MCwwLDEwMCw2MiwwLDEwMCw2MywwLDEwMCw2NCwwLDEwMCwKLSAgICA2NSwwLDEzMiwwLDEsOTAsNDEsMCwxMDAsNjYsMCwxMDAsNjcsMCwxMzIsMCwKLSAgICAwLDkwLDQyLDAsMTAwLDY4LDAsMTAwLDY5LDAsMTMyLDAsMCw5MCw0MywwLAotICAgIDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwwLDAsOTAsNDQsMCwxMDAsNzIsMCwxMDAsCi0gICAgNzMsMCwxMzIsMCwwLDkwLDQ1LDAsMTAwLDc0LDAsMTAwLDc1LDAsMTMyLDAsCi0gICAgMCw5MCw0NiwwLDEwMCw1MywwLDEwMCw1MywwLDEwMCw1MywwLDEwMCw3NiwwLAotICAgIDEwMCw3NywwLDEzMiwzLDAsOTAsNDcsMCwxMDAsNTMsMCwxMDAsNTMsMCwxMDAsCi0gICAgNTMsMCwxMDAsNzgsMCwxMDAsNzksMCwxMzIsMywwLDkwLDQ4LDAsMTAwLDgwLAotICAgIDAsMTAwLDgwLDAsMTAwLDgxLDAsMTAwLDgyLDAsMTMyLDIsMCw5MCw0OSwwLAotICAgIDEwMCw4MywwLDEwMCw4NCwwLDEzMiwwLDAsOTAsNTAsMCwxMDAsODUsMCwxMDAsCi0gICAgODYsMCwxMzIsMCwwLDkwLDUxLDAsNzEsMTAwLDg3LDAsMTAwLDg4LDAsMTMyLAotICAgIDAsMCwxMDAsODgsMCwxMzEsMiwwLDkwLDUyLDAsNzEsMTAwLDg5LDAsMTAwLAotICAgIDkwLDAsMTMyLDAsMCwxMDAsOTAsMCwxMzEsMiwwLDkwLDUzLDAsMTAwLDkxLAotICAgIDAsMTAwLDUzLDAsMTAwLDkyLDAsMTAwLDUzLDAsMTAwLDkzLDAsMTAwLDk0LDAsCi0gICAgMTMyLDAsMiw5MCw1NCwwLDEwMSw1NSwwLDEzMSwwLDAsOTAsNTYsMCwxMDAsCi0gICAgNTMsMCwxMDAsOTUsMCwxMDAsNTMsMCwxMDAsOTYsMCwxMDEsNTYsMCwxMDAsOTcsCi0gICAgMCwxMDAsOTgsMCwxMzIsMSwyLDkwLDU3LDAsMTAwLDUzLDAsMTAwLDUzLDAsCi0gICAgMTAwLDk5LDAsMTAwLDEwMCwwLDEzMiwyLDAsOTAsNTgsMCw3MSwxMDAsMTAxLDAsCi0gICAgMTAwLDEwMiwwLDEzMiwwLDAsMTAwLDEwMiwwLDEzMSwyLDAsOTAsNTksMCwxMDAsCi0gICAgNTMsMCwxMDAsMTAzLDAsMTAwLDEwNCwwLDEzMiwxLDAsOTAsNjAsMCw3MSwxMDAsCi0gICAgMTA1LDAsMTAwLDEwNiwwLDEzMiwwLDAsMTAwLDEwNiwwLDEzMSwyLDAsOTAsNjEsCi0gICAgMCw3MSwxMDAsMTA3LDAsMTAwLDEwOCwwLDEzMiwwLDAsMTAwLDEwOCwwLDEzMSwyLAotICAgIDAsOTAsNjIsMCw3MSwxMDAsMTA5LDAsMTAwLDExMCwwLDEzMiwwLDAsMTAwLDExMCwKLSAgICAwLDEzMSwyLDAsOTAsNjMsMCw3MSwxMDAsMTExLDAsMTAwLDExMiwwLDEzMiwwLAotICAgIDAsMTAwLDExMiwwLDEzMSwyLDAsOTAsNjQsMCw3MSwxMDAsMTEzLDAsMTAwLDExNCwKLSAgICAwLDEzMiwwLDAsMTAwLDExNCwwLDEwMSw2NCwwLDEzMSwzLDAsOTAsNjUsMCwKLSAgICA3MSwxMDAsMTE1LDAsMTAwLDExNiwwLDEzMiwwLDAsMTAwLDExNiwwLDEzMSwyLDAsCi0gICAgOTAsNjYsMCw3MSwxMDAsMTE3LDAsMTAwLDExOCwwLDEzMiwwLDAsMTAwLDExOCwwLAotICAgIDEwMSw2NiwwLDEwMSw2NSwwLDEzMSw0LDAsOTAsNjcsMCw3MSwxMDAsMTE5LDAsCi0gICAgMTAwLDEyMCwwLDEzMiwwLDAsMTAwLDEyMCwwLDEwMSw2NiwwLDEwMSw2NCwwLDEzMSwKLSAgICA0LDAsOTAsNjgsMCwxMDMsMCwwLDkwLDY5LDAsNzEsMTAwLDEyMSwwLDEwMCwKLSAgICAxMjIsMCwxMzIsMCwwLDEwMCwxMjIsMCwxMzEsMiwwLDkwLDcwLDAsNzEsMTAwLAotICAgIDEyMywwLDEwMCwxMjQsMCwxMzIsMCwwLDEwMCwxMjQsMCwxMzEsMiwwLDkwLDcxLAotICAgIDAsNzEsMTAwLDEyNSwwLDEwMCwxMjYsMCwxMzIsMCwwLDEwMCwxMjYsMCwxMzEsMiwKLSAgICAwLDkwLDcyLDAsNzEsMTAwLDEyNywwLDEwMCwxMjgsMCwxMzIsMCwwLDEwMCwxMjgsCi0gICAgMCwxMzEsMiwwLDkwLDczLDAsNzEsMTAwLDEyOSwwLDEwMCwxMzAsMCwxMzIsMCwKLSAgICAwLDEwMCwxMzAsMCwxMzEsMiwwLDkwLDc0LDAsNzEsMTAwLDEzMSwwLDEwMCwxMzIsCi0gICAgMCwxMzIsMCwwLDEwMCwxMzIsMCwxMzEsMiwwLDkwLDc1LDAsMTAwLDEzMywwLAotICAgIDEwMCwxMzQsMCwxMzIsMCwwLDkwLDc2LDAsMTAwLDEzNSwwLDEwMCwxMzYsMCwxMzIsCi0gICAgMCwwLDkwLDc3LDAsMTAwLDUzLDAsMTAwLDEzNywwLDEwMCwxMzgsMCwxMzIsMSwKLSAgICAwLDkwLDc4LDAsMTAwLDEzOSwwLDEwMCwxNDAsMCwxMzIsMCwwLDkwLDc5LDAsCi0gICAgMTAwLDE0MSwwLDkwLDgwLDAsMTAxLDgwLDAsMTAwLDE0MiwwLDIzLDkwLDgxLDAsCi0gICAgMTAwLDE0MywwLDEwMCwxNDQsMCwxMzIsMCwwLDkwLDgyLDAsMTAwLDE0NSwwLDEwMCwKLSAgICAxNDYsMCwxMzIsMCwwLDkwLDgzLDAsMTAwLDUzLDAsMTAwLDgwLDAsMTAwLDE0NywKLSAgICAwLDEwMCwxNDgsMCwxMzIsMiwwLDkwLDg0LDAsMTAwLDE0OSwwLDEwMCwxNTAsMCwKLSAgICAxMzIsMCwwLDkwLDg1LDAsMTAwLDE1MSwwLDEwMCwxNTIsMCwxMzIsMCwwLDkwLAotICAgIDg2LDAsMTAwLDE1MywwLDEwMCwxNTQsMCwxMzIsMCwwLDkwLDg3LDAsMTAwLDUzLAotICAgIDAsMTAwLDUzLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsMTU1LDAsMTAwLDE1NiwwLAotICAgIDEzMiw0LDAsOTAsODgsMCwxMDAsMTU3LDAsMTAwLDE1OCwwLDEzMiwwLDAsOTAsCi0gICAgODksMCwxMDAsMTU5LDAsMTAwLDE2MCwwLDEzMiwwLDAsOTAsOTAsMCwxMDAsMTYxLAotICAgIDAsMTAwLDE2MiwwLDEzMiwwLDAsOTAsOTEsMCwxMDAsNTMsMCw4Myw0MSwxNjQsCi0gICAgOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLAotICAgIDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwKLSAgICAxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsCi0gICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LAotICAgIDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLAotICAgIDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwKLSAgICAxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwKLSAgICAxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwKLSAgICAzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LAotICAgIDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LAotICAgIDEyMSwxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsCi0gICAgMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNCw3OCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDgzLDAsMCwwLAotICAgIDExNSwxMywwLDAsMCwxMDAsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLAotICAgIDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLAotICAgIDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLDY5LDc5LDc1LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwyNTAsMjksNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAotICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSwKLSAgICA5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCi0gICAgMzcsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwKLSAgICAxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LAotICAgIDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsCi0gICAgMTAwLDEsMCw4Myw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LAotICAgIDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LAotICAgIDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCw2LDAsMCwwLDM0LDAsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiw0MSw0LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LAotICAgIDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwKLSAgICAxMTksMTA1LDExNiwxMDQsMjE4LDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LAotICAgIDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LAotICAgIDgzLDQxLDEsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwKLSAgICAxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDI4LDAsMCwwLDExNSw4LDAsCi0gICAgMCwwLDAsMSwxOCwxLDE1LDQsMTIsMywxMTQsMTEsMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTAwLDEsMCw2NCwxMDYsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDQsMTIyLDQyLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LAotICAgIDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLAotICAgIDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwKLSAgICA0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDIzMyw0LDAsMCwKLSAgICAwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsCi0gICAgMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDcsCi0gICAgOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0MCwwLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsMTE0LDE3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCwKLSAgICA4Myw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw1MiwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsCi0gICAgMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDEwMSwKLSAgICAxMDMsMTAxLDExNCw0NiwxMTQsMTMsMCwwLDAsNDEsMiwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMSw5MCw5LAotICAgIDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNyw5NSwxMTQsOTUsMTA4LDExMSwxMTAsCi0gICAgMTAzLDQ1LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAotICAgIDAsMCw3MSwwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwwLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDgzLDQxLDMsMTIyLDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA0NiwxMDYsMTExLDEwNSwxMTAsNDAsNDEsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsNCwwLDAsMCw4MywwLDAsMCwxMTUsMzcsMCwKLSAgICAwLDAsMTAzLDAsMCwxMjQsMCwwLDkzLDI3LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDExNCw2LDAsMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTMxLDEsMCwKLSAgICAxNDUsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwwLDAsNDEsMiwyMTgsNiwKLSAgICAxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsCi0gICAgOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCw0LDExMiwKLSAgICA5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNTIsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsOSwxLDEyMiwzMCw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLAotICAgIDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwxMCwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNiwxMTEsMTA1LDExMCw1MCwwLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTUsCi0gICAgMSwxMTQsMjgsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMTM0LDAsMCwwLAotICAgIDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsCi0gICAgNTIsMCwxMjQsMCwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsMSwwLDkyLDMsCi0gICAgMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwwLDEyNCwzLDAsCi0gICAgMTAyLDIsMCw4MywxMjAsNjksMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICA2OCw5Myw1NSwwLDEyNSw0LDAsMTI0LDQsMCwxMTYsMSwwLDEwNyw2LDAsCi0gICAgMTE0LDY1LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCw0LDAsMTAwLDIsMCwxMDAsCi0gICAgMSwwLDEzMSwxLDEsOTIsMiwwLDEyNSwxLDAsMTI1LDMsMCwxMjQsMSwKLSAgICAwLDEyNCwzLDAsMTAyLDIsMCw4MywxMTMsNjUsMCw4NywxMDAsMywwLDEyNCwKLSAgICAwLDAsMTAyLDIsMCw4Myw0MSw0LDEyMiwzMiw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCw0MSw0NiwyMzMsMSwwLDAsMCw5MCwKLSAgICA4LDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwKLSAgICAxMDEsMTEwLDExNCwyMSwwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsCi0gICAgMTA1LDExMSwxMTAsMTE0LDI1LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LAotICAgIDEwMSwxMDAsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsCi0gICAgMTE2LDEwNCw5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE0LDE2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLAotICAgIDEwOCwxMDUsMTE2LDU2LDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTgsMSwKLSAgICAyNCwxLDEwLDEsMTksMSwxMiwxLDI3LDEsMTQsMSwxMTQsMzgsMCwwLAotICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwxMjYsODMsMTE2LDk3LDExNiwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3Nyw5NywxMDAsMTAxLDMyLDk3LDMyLDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTAxLDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwOSw5NywxMDcsMTAxLAotICAgIDMyLDEwNSwxMTYsMzIsMTAxLDk3LDExNSwxMDUsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExMSwxMTgsCi0gICAgMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExMCwzMiwxMDEsMTIwLDExMiwxMDEsMTE0LDEwNSwKLSAgICAxMDksMTAxLDExMCwxMTYsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCi0gICAgOTksOTcsOTksMTA0LDEwMSwzMiwxMTUsMTE2LDk3LDExNiwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LAotICAgIDExNiwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNDEsMiwxMTQsMywwLDAsCi0gICAgMCw5MCw0LDExNSwxMTYsOTcsMTE2LDQxLDEsMTE0LDM1LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiw2OCwwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDcsMTE0LDM5LDAsMCwwLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw1OCwKLSAgICAwLDAsMCwxMjEsMTYsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCi0gICAgMiwwLDg3LDExMCwyMiwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDAsMCwKLSAgICAxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDYsCi0gICAgMiwwLDEwMCwyLDAsNjQsMTI0LDEsMCwxMDcsMiwwLDgzLDQxLDMsMTIyLAotICAgIDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsCi0gICAgMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExNiwxMjEsMTEyLAotICAgIDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLDQxLDMsMTE0LDM5LDAsMCwwLDIxOCwKLSAgICA3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwyMTgsNywxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLAotICAgIDEwMSw0MSwzLDExNCwzNSwwLDAsMCwyMTgsNCwxMDksMTExLDEwMCwxMDEsOTAsOSwKLSAgICAxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE4LDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw3OCwwLDAsMCwKLSAgICAxMTUsMTAsMCwwLDAsMCwyLDMsMSwxNiwxLDEzLDEsOSwxLDExNCwKLSAgICA0MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDMxLDgyLAotICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwKLSAgICAxMjgsMCwwLDQxLDEsMTE0LDQzLDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw4NywwLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDQ0LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLDAsMTE1LDIxLDAsMTE2LDAsCi0gICAgMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDAsMCwxMTAsMCwwLDExNiwyLDAsCi0gICAgMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsMzAsODIsMTAxLAotICAgIDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsNjQsMCwKLSAgICAwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksMTE5LDEwMCwKLSAgICAxMTQsNDMsMCwwLDAsNDEsMSwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTIsMCwwLDAsMTE1LDYsMCwwLAotICAgIDAsMCwyLDYsMSwxNSwxLDExNCw0NiwwLDAsMCwxMDUsMTgyLDEsMCwKLSAgICAwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxOTIsMCwwLDAsMTAwLDEsMCwxMDYsMCwKLSAgICAwLDEyNCwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCwKLSAgICAxMjUsMywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMywwLDExNiwyLDAsMTA2LAotICAgIDQsMCwxMTYsMiwwLDEwNiw1LDAsNjYsMTE2LDIsMCwxMDYsNiwwLDY2LAotICAgIDEyNCwyLDAsMTAwLDIsMCw2NCwxMzEsMywwLDEyNSw0LDAsMTIxLDYwLDAsCi0gICAgMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDMsMCwxMzEsMiwwLDE0MywKLSAgICAyMCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsOSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxLDg3LDEwMCw0LDAsODEsODgsMTE2LDIsMCwxMDYsMTAsMCwxMjQsMywKLSAgICAwLDEyNCwwLDAsMTMxLDIsMCwxLDg3LDExMCw1OSwwLDQsMTE2LDExLDAsCi0gICAgMTA3LDEwLDAsMTE0LDE4NywwLDEsMSwxLDEyMSwxNywwLDExNiwyLDAsMTA2LAotICAgIDEyLDAsMTI0LDMsMCwxMzEsMSwwLDEsODcsMTEwLDE4LDAsNCwxMTYsMTEsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTc5LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMzAsCi0gICAgMCwwLDg5LDExMCwxLDAsODgsMTAwLDQsMCw4Myw0MSw1LDEyMiwxNjIsNjYsCi0gICAgMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLDExNywxMTAsOTksMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwzMiwxMDAsOTcsMTE2LAotICAgIDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE2LDExMSwxMDksCi0gICAgMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLDY2LDEwMSwzMiwxMTIsCi0gICAgMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsCi0gICAgMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsMTE0LDExNCwxMDEsMTEwLAotICAgIDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsCi0gICAgNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLDAsOTAsMiwxMTksCi0gICAgOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwyMTgsMiwxMDUsMTAwLAotICAgIDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLDYsNzksOTUsNjksCi0gICAgODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCw5MCw4LDc5LDk1LAotICAgIDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LDYsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywxMTQsMTAxLDExMiwxMDgsCi0gICAgOTcsOTksMTAxLDExNCw0MCwwLDAsMCw5MCw2LDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LAotICAgIDQxLDYsMTE0LDM1LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsOTcsMTE0LDQyLDAsCi0gICAgMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsOTAsMiwxMDIsMTAwLAotICAgIDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsCi0gICAgMTExLDEwOSwxMDUsOTksOTksMCwwLDAsMTE1LDI2LDAsMCwwLDAsNSwyNCwKLSAgICAxLDksMSwzMywxLDMsMywyMSwxLDE5LDEsMjAsMSwxMywxLDMsCi0gICAgMSwxNywxLDEzLDEsNSwxLDExNCw1NSwwLDAsMCw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCw3LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw5NSwwLDAsMCwxMjAsNjksMCwxMDAsMSwwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMDAsNCwwLDEwMyw0LDAsNjgsOTMsNDksMCwxMjUsMiwwLDExNiwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwyLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTMxLDIsMCwxMzEsMywwLDEsMTEzLDE5LDAsMTEzLDE5LDAsODcsMTI0LDAsCi0gICAgMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsCi0gICAgMSwxMDAsNSwwLDgzLDQxLDYsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCi0gICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAotICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAotICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCi0gICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCi0gICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwKLSAgICAxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsCi0gICAgMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LAotICAgIDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LAotICAgIDEwMCwxMTQsNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDUsOTUsMTE5LDExNCw5NywxMTIsMTIxLDAsMCwwLAotICAgIDExNSw4LDAsMCwwLDAsMiwyNSwxLDE1LDEsMzIsMSwxMTQsNjUsMCwKLSAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsCi0gICAgMSwwLDEzMSwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMiwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMTE0LDcsMCwwLDAsNDEsMSwyMTgsNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsMTEsOTUsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTI5LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTQsNjgsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsNTgsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsCi0gICAgMTAwLDgsMCw4Myw0MSw5LDIxOCwxMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwKLSAgICAxMDEsMTA4LDExMSw5NywxMDAsMTIyLDYzLDc3LDk3LDExMCw5NywxMDMsMTAxLDExNSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsOTksMTA4LDEwMSw5NywKLSAgICAxMTAsNDUsMTE3LDExMiwzMiwxMTEsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw0MCw0MSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSwxLDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDQxLDIsMjE4LDQsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDExNCw2NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTQxLAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLAotICAgIDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMDYsMiwwLDEwNyw2LDAsMTI0LDAsMCw5NSwzLAotICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDcwLDAsMCwwLDExNCwKLSAgICA3LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwyMTgsMTAsOTUsCi0gICAgMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDQxLDEsMTE0LDcxLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICA5LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsMTQ0LDAsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMSwxMjIsMjMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLAotICAgIDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNzEsCi0gICAgMCwwLDAsMTE1LDgwLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEzMiwwLDAsMTI0LDEsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE0LDc2LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyLDExNCw3NiwwLDEyMSwxNywwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsNjEsODcsMTEzLDc2LDAsNCwKLSAgICAxMTYsNSwwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMyw3NiwwLAotICAgIDg4LDExMCwwLDAsMTAwLDAsMCw4Myw0MSwzLDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLAotICAgIDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDksMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDIxOCwKLSAgICAzLDk3LDExNCwxMDMsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE0OCwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDQxLDk1LDc3LDk3LDExMCw5NywKLSAgICAxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsCi0gICAgOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwxMjEsMTE0LDc0LDAsMCwwLAotICAgIDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNzAsMCwwLDAsMjE4LAotICAgIDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE0NywKLSAgICAwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLDM1LDEsMywxLDE3LDEsCi0gICAgMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsCi0gICAgMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw3LDExNCw1NywwLAotICAgIDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsCi0gICAgMCwxMTQsNzIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw4MSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsNjksMCwwLDAsMTM3LDAsMCwwLDExNSw4LDAsCi0gICAgMCwwLDEyLDIsNiwyLDEyLDMsMTIsMywxMTQsNjksMCwwLDAsOTksCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKLSAgICA2NCwwLDAsMCwxMTUsMTYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLAotICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw4Myw0MSwyLDIxOCwxNCw5NSw2OCwxMDEsCi0gICAgOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw3OCw0MSwzLDExNCw1NywKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4MiwwLDAsMCwxNjIsMCwwLDAsMTE1LDIsMCwwLDAsMTIsCi0gICAgMSwxMTQsODIsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsODIsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAotICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsCi0gICAgMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsCi0gICAgNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwKLSAgICAwLDgzLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKLSAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAotICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCi0gICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKLSAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKLSAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKLSAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKLSAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAotICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDcwLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwKLSAgICAwLDAsOTUsMiwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLAotICAgIDAsOTUsMywwLDEyNCwxLDAsMTI0LDAsMCw5NSw0LDAsMTAwLDAsMCwKLSAgICAxMjQsMCwwLDk1LDUsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNiwwLDEwMCwKLSAgICAxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDIzMywKLSAgICAwLDAsMCwwLDQxLDgsMjE4LDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5MCwKLSAgICAxMyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDIxOCw0LAotICAgIDEwOCwxMTEsOTksMTA3LDIxOCw2LDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE0LDY3LDAsMCwKLSAgICAwLDIxOCw1LDExMSwxMTksMTEwLDEwMSwxMTQsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDIxOCwKLSAgICA3LDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LDQxLDIsMTE0LDcxLDAsMCwwLDExNCwKLSAgICA2NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsNzIsMCwwLDAsMTcyLDAsMCwwLDExNSwxMiwwLDAsCi0gICAgMCwwLDEsMTUsMSwxNSwxLDksMSw5LDEsOSwxLDEyMiwyMCw5NSwKLSAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICAyLDAsMTIwLDYwLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwyLDAsMTMxLDEsCi0gICAgMCwxMjUsMywwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw1NSwwLAotICAgIDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwKLSAgICAxMjQsMSwwLDEwNywyLDAsMTE0LDI0LDAsMTAwLDIsMCw4MywxMTMsMjQsMCwKLSAgICA4NywxMDAsMCwwLDgzLDQxLDMsNzgsNzAsODQsNDEsNSwxMTQsODUsMCwwLAotICAgIDAsMjE4LDksMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTQsODgsMCwwLAotICAgIDAsMjE4LDEyLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMjE4LAotICAgIDMsMTAzLDEwMSwxMTYsNDEsNCwxMTQsNzEsMCwwLDAsMjE4LDIsMTA5LDEwMSwyMTgsCi0gICAgMywxMTYsMTA1LDEwMCwxMTQsODYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSwKLSAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsMTgwLDAsMCwwLDExNSwxOCwwLDAsMCwwLAotICAgIDIsMTIsMSw5LDEsMywxLDE1LDEsMTIsMSw0LDEsOSwxLDEyLAotICAgIDEsMTIyLDI0LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMDQsCi0gICAgOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDE2LDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyMTUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsCi0gICAgMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCw2MCwxMjIsMTc4LDAsMTIwLDE3MSwKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTMwLDAsMSwxMjQsMCwwLDEwNiw0LAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsMiwwLDU1LDIsOTUsNCwKLSAgICAwLDEwMCwzLDAsODMsMTI0LDAsMCwxMDYsNiwwLDEzMSwwLDAsMTE0LDEyNywKLSAgICAwLDExNiw3LDAsMTAwLDQsMCwxMjQsMCwwLDIyLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEwMCw1LDAsCi0gICAgMTMxLDEsMCwxMTQsMTYzLDAsMTI0LDAsMCw0LDEwNiwxMCwwLDEwMCwyLDAsCi0gICAgNTUsMiw5NSwxMCwwLDExMCwwLDAsODcsMTAwLDYsMCw4MSw4OCwxMjQsMCwKLSAgICAwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsMTI0LDAsMCwxMDYsOCwKLSAgICAwLDEwNiwxMSwwLDEzMSwwLDAsMSwxMTMsMjgsMCw4Nyw4NywxMDAsNiwwLAotICAgIDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsNiwwLDgzLDQxLDcsMTIyLDE4NSwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAotICAgIDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsCi0gICAgMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKLSAgICAxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsCi0gICAgMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsCi0gICAgMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw4NCwwLDAsMCwxMTQsMjksCi0gICAgMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LDQxLAotICAgIDEyLDExNCw4NSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDkyLDAsMCwwLAotICAgIDExNCw4NiwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwKLSAgICA5NiwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDg3LDAsMCwwLDIxOCw3LAotICAgIDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDkwLDAsMCwwLDIxOCw3LDExNCwxMDEsCi0gICAgMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDcxLDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsOTcsMCwwLDAsMTkyLDAsMCwwLDExNSwzMiwwLDAsMCwwLDYsCi0gICAgMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwxLAotICAgIDQsMSwxMiwxLDE5LDEsMTgsMSwyNCwyLDEzLDEsMjEsMiwxMjIsMTksCi0gICAgOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCi0gICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE2NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwxNDMsCi0gICAgMTM4LDAsMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywwLDExNCwKLSAgICA1MiwwLDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MywwLAotICAgIDExNiw2LDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLAotICAgIDU2LDIsOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLAotICAgIDAsMTE0LDE1NSwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDExNCwxNTUsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLAotICAgIDU2LDIsOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLAotICAgIDAsMSwxMTMsMTU1LDAsMTEwLDAsMCw4NywxMDAsMCwwLDgxLDg4LDEwMCwwLAotICAgIDAsODMsNDEsNCw3OCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsCi0gICAgMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LDg0LDAsMCwwLDExNCwyOSwwLDAsMCwKLSAgICA0MSwxMCwxMTQsODUsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw4NiwwLDAsCi0gICAgMCwxMTQsODgsMCwwLDAsMjE4LDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsODksMCwwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwKLSAgICAxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCw5MCwwLDAsMCwxMTQsODcsCi0gICAgMCwwLDAsMTE0LDk4LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwKLSAgICA5NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsOTgsMCwwLDAsMjE3LDAsMCwwLDExNSwyMiwwLDAsCi0gICAgMCwwLDEsMTIsMSwxMCwxLDE1LDEsMTUsMSwyMSwxLDE1LDEsMTUsCi0gICAgMSw5LDEsOSwxLDE1LDEsMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsCi0gICAgMiw3OCwxMjIsMjMsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLAotICAgIDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDQ3LDAsCi0gICAgMCwwLDExNCw2NywwLDAsMCwxMTQsNDgsMCwwLDAsNDEsMSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDIzMCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOSwKLSAgICAxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsCi0gICAgNTksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsOTcsCi0gICAgMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgzLDAsMCwwLDE2NiwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsCi0gICAgNCw2LDIsMTIsOCwxMiwxMiwxMiwyNSwxMiwxMywxMTQsODMsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsCi0gICAgMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLAotICAgIDQxLDExLDIxOCwxNiw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDEyMiw4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSwKLSAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCwKLSAgICA5NywxMDgsMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLAotICAgIDEsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LAotICAgIDg0LDAsMCwwLDQxLDIsMTE0LDY3LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDcyLDAsMCwwLAotICAgIDIzOCwwLDAsMCwxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLAotICAgIDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMSwwLDU1LDIsOTUsMCwKLSAgICAwLDEwMCwyLDAsODMsNDEsMyw3OCwxMTQsMjksMCwwLDAsODQsNDEsMSwKLSAgICAxMTQsODksMCwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDk3LDAsMCwwLAotICAgIDI0MiwwLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTUsMSwxMjIsMjQsOTUsCi0gICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwKLSAgICA5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDMwLDAsCi0gICAgMTE2LDEsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwKLSAgICAwLDAsNCwxMDYsMCwwLDEwMCwzLDAsNTYsMiw5NSwwLDAsMTAwLDAsCi0gICAgMCw4Myw0MSw0LDc4LDExNCw4NCwwLDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwKLSAgICAxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksCi0gICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LDI5LDAsMCwwLAotICAgIDQxLDIsMTE0LDg5LDAsMCwwLDExNCw5OSwwLDAsMCw0MSwxLDExNCw3MSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsOTgsMCwwLDAsMjQ2LDAsMCwwLDExNSw2LDAsMCwwLAotICAgIDAsMSwxNSwxLDE1LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLAotICAgIDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDIsNzgsMTIyLDI4LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNiwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMTY5LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAorICAgIDEwMCwxLDAsOTcsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDIsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwzLDAsNzEsMTAwLAorICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsMTAwLDcsMCwxMzEsMiwwLDkwLDQsCisgICAgMCwxMDUsMCwwLDkwLDUsMCwxMDUsMCwwLDkwLDYsMCw3MSwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCwxMDAsOSwwLDEwMSw3LDAsMTMxLDMsMCwKKyAgICA5MCw4LDAsNzEsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMDAsMTEsMCwKKyAgICAxMzEsMiwwLDkwLDksMCw3MSwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLAorICAgIDEwMCwxMywwLDEzMSwyLDAsOTAsMTAsMCw3MSwxMDAsMTQsMCwxMDAsMTUsMCwKKyAgICAxMzIsMCwwLDEwMCwxNSwwLDEzMSwyLDAsOTAsMTEsMCwxMDAsMTYsMCwxMDAsCisgICAgMTcsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsCisgICAgMCw5MCwxMywwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsMTQsMCwKKyAgICAxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMDAsMjUsMCwxMzIsMCwxLDkwLAorICAgIDE1LDAsMTAwLDI2LDAsMTAwLDI3LDAsMTMyLDAsMCw5MCwxNiwwLDEwMCwyOCwKKyAgICAwLDEwMCwyOSwwLDEzMiwwLDAsOTAsMTcsMCwxMDAsMzAsMCwxMDAsMzEsMCwKKyAgICAxMzIsMCwwLDkwLDE4LDAsMTAwLDMyLDAsMTAwLDMzLDAsMTMyLDAsMCw5MCwKKyAgICAxOSwwLDcxLDEwMCwzNCwwLDEwMCwzNSwwLDEzMiwwLDAsMTAwLDM1LDAsMTMxLAorICAgIDIsMCw5MCwyMCwwLDcxLDEwMCwzNiwwLDEwMCwzNywwLDEzMiwwLDAsMTAwLAorICAgIDM3LDAsMTMxLDIsMCw5MCwyMSwwLDEwMCwzOCwwLDEwMCwxLDAsMTAwLDM5LAorICAgIDAsMTAwLDEsMCwxMDAsNDAsMCwxMDAsNDEsMCwxMzIsMCwyLDkwLDIyLDAsCisgICAgMTAxLDIzLDAsMTMxLDAsMCw5MCwyNCwwLDEwMCwxLDAsMTAwLDEsMCwxMDAsCisgICAgNDIsMCwxMDAsNDMsMCwxMzIsMiwwLDkwLDI1LDAsMTAwLDQ0LDAsMTAwLDQ1LAorICAgIDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTMyLDAsMSw5MCwyNiwwLDEwMCw0OCwwLAorICAgIDEwMCw0OSwwLDEzMiwwLDAsOTAsMjcsMCwxMDAsNTAsMCwxMDAsNTEsMCwxMzIsCisgICAgMCwwLDkwLDI4LDAsMTAwLDUyLDAsMTAwLDUzLDAsMTMyLDAsMCw5MCwyOSwKKyAgICAwLDEwMCw1NCwwLDEwMCw1NSwwLDEzMiwwLDAsOTAsMzAsMCwxMDAsNTYsMCwKKyAgICAxMDAsNTcsMCwxMzIsMCwwLDkwLDMxLDAsMTAwLDU4LDAsMTAwLDU5LDAsMTMyLAorICAgIDAsMCw5MCwzMiwwLDcxLDEwMCw2MCwwLDEwMCw2MSwwLDEzMiwwLDAsMTAwLAorICAgIDYxLDAsMTMxLDIsMCw5MCwzMywwLDcxLDEwMCw2MiwwLDEwMCw2MywwLDEzMiwKKyAgICAwLDAsMTAwLDYzLDAsMTMxLDIsMCw5MCwzNCwwLDcxLDEwMCw2NCwwLDEwMCwKKyAgICA2NSwwLDEzMiwwLDAsMTAwLDY1LDAsMTMxLDIsMCw5MCwzNSwwLDEwMCw2NiwKKyAgICAwLDEwMCw2NywwLDEzMiwwLDAsOTAsMzYsMCwxMDAsNjgsMCwxMDAsNjksMCwKKyAgICAxMzIsMCwwLDkwLDM3LDAsMTAwLDEsMCwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsCisgICAgMSwwLDkwLDM4LDAsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsMCw5MCwzOSwKKyAgICAwLDEwMCw3NCwwLDkwLDQwLDAsMTAxLDQwLDAsMTAwLDc1LDAsMjMsOTAsNDEsCisgICAgMCwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDkwLDQyLDAsMTAwLDc4LDAsCisgICAgMTAwLDc5LDAsMTMyLDAsMCw5MCw0MywwLDEwMCwxLDAsMTAwLDgwLDAsMTAwLAorICAgIDgxLDAsMTAwLDgyLDAsMTMyLDIsMCw5MCw0NCwwLDEwMCw4MywwLDEwMCw4NCwKKyAgICAwLDEzMiwwLDAsOTAsNDUsMCwxMDAsODUsMCwxMDAsODYsMCwxMzIsMCwwLAorICAgIDkwLDQ2LDAsMTAwLDEsMCwxMDAsMSwwLDEwMiwwLDAsMTAwLDgwLDAsMTAwLAorICAgIDg3LDAsMTAwLDg4LDAsMTMyLDQsMCw5MCw0NywwLDEwMCw4OSwwLDEwMCw5MCwKKyAgICAwLDEzMiwwLDAsOTAsNDgsMCwxMDAsOTEsMCwxMDAsOTIsMCwxMzIsMCwwLAorICAgIDkwLDQ5LDAsMTAwLDkzLDAsMTAwLDk0LDAsMTMyLDAsMCw5MCw1MCwwLDEwMCwKKyAgICAxLDAsODMsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LAorICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsCisgICAgMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCwKKyAgICA5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwKKyAgICAzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LAorICAgIDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsCisgICAgMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwKKyAgICAxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAorICAgIDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLAorICAgIDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksCisgICAgMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDkyLDAsMCwwLDEyMCw2NiwwLDEwMCwxLDAsMTAwLDIsCisgICAgMCwxMDAsMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0NiwwLDEyNSwyLAorICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwKKyAgICAxMTYsMSwwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LAorICAgIDIsMCwxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCw4NywxMjQsMCwwLAorICAgIDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxLAorICAgIDEwMCw1LDAsODMsNDEsNiwxMjIsNDcsODMsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiwxMTUsCisgICAgMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDIsMTE3LAorICAgIDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsOTUsMTE5LAorICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMjE4LDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSwKKyAgICA5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwxMDAsCisgICAgMTExLDk5LDk1LDk1LDc4LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsCisgICAgMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLAorICAgIDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLAorICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTY5LDAsMTE0LDEwLDAsMCwwLAorICAgIDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsCisgICAgNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDIsMjUsMSwxNSwxLDI5LDEsMTE0LDEyLDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEyNCwKKyAgICAwLDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsMTE2LDEyMSwxMTIsCisgICAgMTAxLDIxOCwzLDExNSwxMjEsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM1LDAsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMTQsMTYsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgNTgsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCw4Myw0MSw5LAorICAgIDIxOCwxMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsMTIyLAorICAgIDYzLDc3LDk3LDExMCw5NywxMDMsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTExLDExNSwKKyAgICAxMTUsMTA1LDk4LDEwOCwxMDEsMzIsOTksMTA4LDEwMSw5NywxMTAsNDUsMTE3LDExMiwzMiwxMTEsCisgICAgMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSw0NiwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwxLDIxOCw1LDk1LDExMCwKKyAgICA5NywxMDksMTAxLDQxLDIsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgOCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDMsMCwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LAorICAgIDExMSw5NywxMDAsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDI1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwKKyAgICAyLDAsMTA3LDYsMCwxMjQsMCwwLDk1LDMsMCwxMDAsMCwwLDgzLDQxLAorICAgIDEsNzgsNDEsNCwxMTQsMTgsMCwwLDAsMTE0LDE0LDAsMCwwLDIxOCw3LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwyMTgsMTAsOTUsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwKKyAgICAxMTEsOTcsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LDk1LDk1LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMTQsOTUsOTUsNDYsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKKyAgICAyMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsCisgICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxMSwwLDAsMCw3MSwwLDAsMCwxMTUsNzcsMCwKKyAgICAwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwKKyAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTQsNzMsMCwxMjQsMCwwLDEwNiwxLAorICAgIDAsMTIsMTE0LDczLDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwwLAorICAgIDAsMTA2LDQsMCw2MSw4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsCisgICAgMTE0LDcyLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLAorICAgIDMsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKKyAgICAwLDAsMCwxMTUsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsCisgICAgMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsCisgICAgMTEzLDMsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDEwLDAsMCwwLDQxLAorICAgIDIsMjE4LDIsNDYsNDgsMjE4LDMsOTcsMTE0LDEwMywxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsNTAsMCwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwKKyAgICA0MSw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsCisgICAgOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNiwyMTgsMyw5NywxMTAsCisgICAgMTIxLDExNCwyMiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAorICAgIDExNCwxOCwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCw0MSwKKyAgICAyLDExNCwxOSwwLDAsMCwyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDEsCisgICAgMTIwLDEwNSwxMTYsOTUsOTUsNDksMCwwLDAsMTE1LDEwLDAsMCwwLDAsMSwKKyAgICAzNSwxLDMsMSwxNywxLDEzLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsCisgICAgMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsCisgICAgNzgsNDEsNywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLAorICAgIDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE3LDAsMCwwLDM5LAorICAgIDAsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLDMsMTIsMywKKyAgICAxMTQsMTcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCw2NCwwLDAsMCwxMTUsMTYsMCwwLDAsMTAxLAorICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw4Myw0MSwKKyAgICAyLDIxOCwxNCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAorICAgIDExNCw3OCw0MSwzLDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzEsMCwwLDAsNjQsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMTIsMSwxMTQsMzEsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsODIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAorICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKKyAgICAxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsCisgICAgOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLAorICAgIDAsOTAsOCwwLDEwMCwxMiwwLDgzLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsCisgICAgMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LAorICAgIDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwKKyAgICAzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsCisgICAgMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsCisgICAgMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLAorICAgIDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLAorICAgIDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcwLDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsMiwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMzEsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSw0LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMSwwLDEyNCwKKyAgICAwLDAsOTUsNiwwLDEwMCwxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDAsCisgICAgMCw4Myw0MSwyLDc4LDIzMywwLDAsMCwwLDQxLDgsMjE4LDcsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCw5MCwxMyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTAxLDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDIxOCw0LDEwOCwxMTEsOTksMTA3LDIxOCw2LDExOSw5NywxMDcsMTAxLAorICAgIDExNywxMTIsMTE0LDE1LDAsMCwwLDIxOCw1LDExMSwxMTksMTEwLDEwMSwxMTQsMjE4LDUsCisgICAgOTksMTExLDExNywxMTAsMTE2LDIxOCw3LDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LDQxLDIsCisgICAgMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNzQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDAsMSwxNSwxLDE1LDEsOSwxLDksCisgICAgMSw5LDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsODgsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsCisgICAgMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjAsNjAsMCwxMTYsMywwLDEwNiw0LAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMCwwLAorICAgIDEwNyw4LDAsMTE0LDU1LDAsMTAwLDEsMCw4MywxMjQsMywwLDEwNiwyLDAsCisgICAgMTI1LDIsMCwxMjQsMiwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsMjQsMCwxMDAsCisgICAgMiwwLDgzLDExMywyNCwwLDg3LDEwMCwwLDAsODMsNDEsMyw3OCw3MCw4NCwKKyAgICA0MSw1LDExNCwzNCwwLDAsMCwyMTgsOSwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwKKyAgICAxMTAsMTE2LDExNCwzNywwLDAsMCwyMTgsMTIsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LAorICAgIDExMCwxMDMsOTUsMTExLDExMCwyMTgsMywxMDMsMTAxLDExNiw0MSw0LDExNCwxOSwwLDAsCisgICAgMCw5MCwyLDEwOSwxMDEsMjE4LDMsMTE2LDEwNSwxMDAsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMiwKKyAgICAxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDgyLDAsMCwwLAorICAgIDExNSwxOCwwLDAsMCwwLDIsMTIsMSw5LDEsMywxLDE1LDEsMTIsCisgICAgMSw0LDEsOSwxLDEyLDEsMTIyLDI0LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNyw0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksCisgICAgMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDE2LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyMTAsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCwKKyAgICA2MCwxMjIsMTczLDAsMTIwLDE2NiwwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTI0LDAsCisgICAgMSwxMjQsMCwwLDEwNiw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLAorICAgIDEyNCwwLDAsMTA2LDUsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LAorICAgIDEsMCwxMjQsMCwwLDk1LDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsCisgICAgMiwwLDU1LDIsOTUsNCwwLDEwMCwzLDAsODMsMTI0LDAsMCwxMDYsNiwKKyAgICAwLDEzMSwwLDAsMTE0LDEyNCwwLDExNiw3LDAsMTAwLDQsMCwxMjQsMCwwLAorICAgIDIyLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwKKyAgICAxMDAsNSwwLDEzMSwxLDAsMTE0LDE1NywwLDEyNCwwLDAsNCwxMDYsMTAsMCwKKyAgICAxMDAsMiwwLDU1LDIsOTUsMTAsMCw4NywxMDAsNiwwLDgxLDgyLDg4LDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMjQsMCwwLDEwNiwKKyAgICA4LDAsMTA2LDExLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDg3LDEwMCw2LAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw2LDAsODMsNDEsNywxMjIsCisgICAgMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSwKKyAgICA5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsCisgICAgMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LAorICAgIDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICA4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsCisgICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDMzLDAsMCwwLDIzMywKKyAgICAxLDAsMCwwLDg0LDEyMiwyMywxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwKKyAgICAxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCwKKyAgICA0MSwxMiwxMTQsMzQsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw0MSwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwzNywwLDAsMCwKKyAgICAxMTQsNDQsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwzNiwwLDAsMCwyMTgsCisgICAgNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNCwzOSwwLDAsMCwyMTgsNywxMTQsCisgICAgMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLDExNCwxOSwwLDAsMCwxMTQsNDMsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDQ2LDAsMCwwLDk0LDAsMCwwLDExNSwzMiwwLDAsMCwwLAorICAgIDYsMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwKKyAgICAxLDQsMSwxMiwxLDE2LDEsMTgsMSwyMiwyLDEzLDEsMjEsMiwxMjIsCisgICAgMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NywwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwKKyAgICAxNDMsMTI5LDAsMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywwLAorICAgIDExNCw0OSwwLDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LAorICAgIDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDQsMCwxMTUsNzAsMCwxMTYsNiwKKyAgICAwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiw1LDAsMTAwLDMsMCw1NiwyLAorICAgIDk1LDUsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsMiwwLDExNCwKKyAgICAxNDYsMCwxMDAsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwwLDAsMTA2LDcsCisgICAgMCwxMTQsMTQ2LDAsMTI0LDAsMCw0LDEwNiw3LDAsMTAwLDMsMCw1NiwyLAorICAgIDk1LDcsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsCisgICAgODcsMTAwLDAsMCw4MSw4Miw4OCwxMDAsMCwwLDgzLDQxLDQsNzgsMTIyLDMxLAorICAgIDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsCisgICAgMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwKKyAgICAzMywwLDAsMCwxMTQsNDUsMCwwLDAsNDEsMTAsMTE0LDM0LDAsMCwwLAorICAgIDExNCw0MCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwKKyAgICAxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsCisgICAgMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTQsMzksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsNDMsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwKKyAgICAwLDExOSwwLDAsMCwxMTUsMjIsMCwwLDAsMCwxLDEyLDEsMTAsMSwKKyAgICAxNSwxLDEyLDEsMjEsMSwxNSwxLDE1LDEsOSwxLDksMSwxNSwxLAorICAgIDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwKKyAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTAwLAorICAgIDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwwLAorICAgIDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLDIsNzgsMTIyLDIzLDk1LDc3LDExMSwKICAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywKLSAgICAxMTYsMzIsMTIzLDEyNSw0MSwzLDExNCw0NywwLDAsMCwxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDQ4LDAsMCwwLDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMDEsMCwwLDAsCi0gICAgMjUxLDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LAotICAgIDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwKLSAgICAxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOCwxMTQsNTcsMCwwLDAsMTE0LDU2LAotICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsCi0gICAgMCwwLDExNCw5NywwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDEwMSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwxMTQsMTAyLDAsMCwwLDIzNCwwLDAsMCwxMTUsMTAsCi0gICAgMCwwLDAsMTIsMiw2LDIsMTIsNCwxMiw0LDEyLDUsMTE0LDEwMiwwLAotICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDY0LDAsMCwwLDExNSw1MiwwLDAsMCwxMDEsMCwwLDkwLAotICAgIDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsCi0gICAgMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDgzLAotICAgIDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3NywKLSAgICA5NywxMTAsOTcsMTAzLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMCwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw3MCwwLDAsMCwKLSAgICAyMTgsNSw5NSwxMDgsMTExLDk5LDEwNyw0MSwyLDExNCw3MSwwLDAsMCwxMTQsNjcsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDcyLDAsMCwwLDEsMSwwLDAsMTE1LDQsMCwwLDAsCi0gICAgMCwxLDksMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksCi0gICAgMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCi0gICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTAsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDUzLDAsMCwwLDEyMiwyMiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwyLDAsCi0gICAgODcsMTAwLDAsMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsMCwxLDg4LDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDcwLDAsMCwwLDExNCwxMDQsMCwwLAotICAgIDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAotICAgIDk1LDEwOCwxMTEsOTksMTA3LDExNCw5NywwLDAsMCw0MSwxLDExNCw3MSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsNzUsMCwwLDAsNSwxLDAsMCwxMTUsOCwwLDAsMCwwLDEsCi0gICAgMywxLDIyLDIsMTEsMSwxMjIsMjgsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEwLDExNiwKLSAgICAxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDEsMCwwLDAsNzksMCwwLDAsMTE1LDE3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCw5OCwwLDAsMCw0MSwzLAotICAgIDExNCw3MSwwLDAsMCwxMTQsODAsMCwwLDAsMjE4LDYsMTA3LDExOSw5NywxMTQsCi0gICAgMTAzLDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsODEsMCwwLDAsMTIsMSwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsCi0gICAgMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSwKLSAgICA2LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLAotICAgIDExNCw3MiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwxMDMsMCwwLDAsMjU1LDAsMCwwLDExNSw2LDAsMCwKLSAgICAwLDEyLDIsMTIsNCwxMiw3LDExNCwxMDMsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsMywwLDAsCi0gICAgMCwxMTUsMTQyLDAsMCwwLDEwMCwxLDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsCi0gICAgMCwwLDEzNiwwLDAsMjUsMTMxLDAsMCwxMjUsMSwwLDg3LDExMCwxOCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDMsMCwxLDEsMSw4OSwxMTAsMSwKLSAgICAwLDg4LDEyNCwxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzgsMCwxMTYsMiwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsODMsMCwxMTYsMywwLDEzNiwwLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwwLDExNiw0LDAsMTM2LDAsMCwxMzEsCi0gICAgMSwwLDEyNSwxLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsCi0gICAgMCwxMzQsMCwwLDEyNSwyLDAsMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDExNiwwLDAsMTM2LDAsMCw2MCwxMTAsMCwwLAotICAgIDEyNCwxLDAsODMsNDEsNCwxMjIsMTA5LDcxLDEwMSwxMTYsMzIsMTExLDExNCwzMiw5OSwKLSAgICAxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLAotICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiwKLSAgICA5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsCi0gICAgOTcsMTA3LDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTEsMCwwLDAsCi0gICAgMTE2LDAsMCwxMzYsMCwwLDYxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwxLAotICAgIDIxOCwxMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsNDEsCi0gICAgMSwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsNjcsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDIsOTksOTgsMzIsMSwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsCi0gICAgNjIsNDYsOTksOTgsNDEsNywxMTQsMTA5LDAsMCwwLDExNCw3OSwwLDAsMCwKLSAgICAxMTQsODUsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsODMsMCwwLDAsMjE4LAotICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAotICAgIDExNCw2NywwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCw0MSwxLDExNCw2NywwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTA1LDAsMCwwLDE4LDEsMCwwLDExNSwyNCwwLDAsMCwwLDQsCi0gICAgNiwxLDMsMSwxNywxLDEzLDEsNSwxLDEyLDEsMTIsMSwxNSwyLAotICAgIDEyLDEsMTgsMiwyNSwxLDExNCwxMDUsMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDcxLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLAotICAgIDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMSwxMjEsMTQsMCwxMjQsMSwKLSAgICAwLDEwNiwzLDAsMTMxLDAsMCwxLDg3LDExMCwxOCwwLDQsMTE2LDQsMCwKLSAgICAxMDcsMTAsMCwxMTQsNTYsMCwxLDEsMSw4OSwxMTAsMTEsMCw4OCwxMjQsMSwKLSAgICAwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsMiw5NywyMSwKLSAgICAxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLAotICAgIDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywKLSAgICAzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKLSAgICAxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwKLSAgICAxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsCi0gICAgMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwKLSAgICA5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwKLSAgICAxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsCi0gICAgMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LAotICAgIDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAotICAgIDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDEsNiwxMTQsMTA1LDAsMCwwLAotICAgIDExNCwxMDYsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LAotICAgIDgyLDAsMCwwLDExNCw5OCwwLDAsMCw0MSwyLDExNCw2NywwLDAsMCwKLSAgICAxMTQsODYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSwKLSAgICA5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzcsMSwwLDAsMTE1LDE0LDAsCi0gICAgMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsMyw1LDIsCi0gICAgMTE0LDExMiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLDQxLDEsOTcsNDYsCi0gICAgMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwKLSAgICA5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywzMiw5OSw5NywxMDgsMTA4LAotICAgIDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLAotICAgIDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwxMTAsMTExLDExNCwxMDksOTcsCi0gICAgMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsMTA4LDk3LDk5LDEwMSwxMTUsCi0gICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDExNiwxMTQsMTExLDEwMCwKLSAgICAxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LDEwMSwxMDAsMzIsMTEwLDExMSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE2LDExNCw5NywKLSAgICA5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE0LDQsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDgwLDAsMCwwLAotICAgIDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LAotICAgIDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwKLSAgICA1NywxLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMDUsMjM4LDEyLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTMsMCwwLDAsMTE1LAotICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDk1LDk1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsNDYsMTEyLDEyMSw5OSwxMjIsNCwKLSAgICA0NiwxMTIsMTIxLDExMSw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsMTEsMCwKLSAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTkyLDAsMCwwLDEyNCwKLSAgICAxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNSwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMDYsMiwwLDEyLDExMCwzLDAsMTI0LDEsMCwxMjUsMiwwLDEyNCwyLAotICAgIDAsMTE0LDQ2LDAsMTE2LDMsMCwxMjUsMywwLDExMCw2LDAsMTE2LDQsMCwKLSAgICAxMjUsMywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsCi0gICAgNCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsNiwwLDEwMCwyLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDYsMCwxMjUsNywwLDEyNSw4LDAsMTE2LDAsMCwKLSAgICAxMDYsNywwLDEwNiw4LDAsMTI1LDksMCwxMjQsOSwwLDEwMCwxLDAsMTA3LAotICAgIDgsMCwxMTQsMTMzLDAsMTE2LDksMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMTAsMCwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LDYsMCwxMTQsMTUxLDAsCi0gICAgMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsMCwxMjQsOSwwLDEyNCwKLSAgICAzLDAsMTAwLDUsMCwyNSwxMDMsNCwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LAotICAgIDExLDAsMTI0LDQsMCwxMTYsMTIsMCwxMjQsMTAsMCwxMzEsMywwLDgzLDQxLAotICAgIDYsOTcsMjQ0LDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSw5OSw0NywKLSAgICA0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwKLSAgICAxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCi0gICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsMTEyLDEyMSwKLSAgICA5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LAotICAgIDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDEsMTIwLAotICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMCwzMiwzMiwzMiwzMiwxMTksMTA1LDEwOCwxMDgsCi0gICAgMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTE3LDExMCwxMDgsMTAxLDExNSwxMTUsMzIsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LAotICAgIDEyMiwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExMCw0NSwxMjIsMTAxLDExNCwxMTEsNDQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTEwLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwKLSAgICA0NiwxMTIsMTIxLDExMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTAwLDEwMSwKLSAgICA5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LAotICAgIDExNiwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk3LDMyLDk4LDExMSwxMTEsMTA4LAotICAgIDEwMSw5NywxMTAsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDExMiwxMDgsOTcsOTksMTAxLDMyLDExMSwxMDIsMzIsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LAotICAgIDEyMiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwKLSAgICAxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwyMTgsMSw0NiwxMjIsMzYsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLAotICAgIDc4LDExMSwxMTAsMTAxLDExNCwzMCwwLDAsMCwxMTQsODQsMCwwLDAsNDEsMTMsCi0gICAgMTE0LDcsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LDIxOCw4LDExMSwxMTIsCi0gICAgMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDIzLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LAotICAgIDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDIxOCwKLSAgICAyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSw2NywKLSAgICA3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsMzgsMCwwLAotICAgIDAsMTE0LDMyLDAsMCwwLDIxOCwxNCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAotICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI2LDAsMCwwLDExNCwyOCwwLDAsMCwKLSAgICAyMTgsOCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSw0MSwxMSwxMTQsMzUsMCwwLAotICAgIDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKLSAgICAxMDEsMjE4LDUsMTAwLDEwMSw5OCwxMTcsMTAzLDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLAotICAgIDEwMSwxMTUsMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM3LDAsMCwwLDIxOCw0LDk4LAotICAgIDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwxMTUsMTE2LDkwLDMsCi0gICAgMTE2LDk3LDEwMywyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTgxLAotICAgIDEsMCwwLDExNSwyMiwwLDAsMCwwLDEzLDMxLDEsNiwxLDksMiwKLSAgICA2LDEsMTgsMSwyNCwxLDEyLDEsMTIsMSwxNSwxLDQzLDEsMTE0LDEzMiwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA1LDAsMCwwLDY3LDAsMCwwLDExNSwxOTMsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMywwLDExNiwKLSAgICAzLDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwOCwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTA2LDgsMCwxMDAsCi0gICAgNCwwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwxNTMsMCwxMTYsNiwKLSAgICAwLDEwMCw2LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwKLSAgICAxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOSwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsNywwLDI1LDEyNSw0LDAsMTE2LDEwLDAsMTI0LDEsMCwxMjQsCi0gICAgNCwwLDExNiwxMSwwLDEwMCw3LDAsMjUsMjMsMTMxLDIsMCw4Myw0MSw4LAotICAgIDk3LDEyMSwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDQ3LDQ2LAotICAgIDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwKLSAgICAzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAotICAgIDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwKLSAgICAxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwKLSAgICAxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LAotICAgIDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksODAsCi0gICAgMzIsNTEsNDksNTIsNTUsMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0NCwzMiw4Niw5NywKLSAgICAxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwKLSAgICAzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsCi0gICAgNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LAotICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLAotICAgIDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwKLSAgICAzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMTEsCi0gICAgMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAotICAgIDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDExNCwxMTYsMCwwLAotICAgIDAsMTE0LDExNSwwLDAsMCwxMjIsMjgsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwxMTQsODQsMCwwLDAsNDEsMTIsMTE0LDcsMCwwLDAsCi0gICAgMTE0LDEyMSwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAotICAgIDM4LDAsMCwwLDExNCwxMjQsMCwwLDAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDcsMCwwLDAsMTE0LDg5LDAsMCwwLDIxOCwKLSAgICA5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDI4LDAsMCwwLDIxOCwKLSAgICAxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKLSAgICA0MSw1LDExNCwzNSwwLDAsMCwxMTQsMTI3LDAsMCwwLDkwLDE2LDExMiwxMjEsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywKLSAgICAxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsMTMsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwKLSAgICAxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjA4LDEsMCwwLDExNSwyNCwwLDAsCi0gICAgMCwwLDksMTgsMSwxNSwxLDE4LDEsMTgsMSwxMiwxLDksMSwxOCwKLSAgICAxLDIxLDEsOSwxLDE1LDEsMTksMSwxMTQsMTM2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDEyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwwLDEwMCwyLDAsODMsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwKLSAgICAxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwxMjQsMywwLAotICAgIDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLDIsMCwyNSwKLSAgICAxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsMCwKLSAgICAxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw0MCwwLAotICAgIDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywwLAotICAgIDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwxMDAsOSwwLDEzMywyLDAsMjUsCi0gICAgMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiw2LDAsMTI0LDQsMCwxMzEsMSwKLSAgICAwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDEsMTAsMTIyLDE4OCwKLSAgICA2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwKLSAgICA5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwKLSAgICAxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwKLSAgICAxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLAotICAgIDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LAotICAgIDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwKLSAgICAwLDc4LDExNCwxMTYsMCwwLDAsMjMzLDMsMCwwLDAsMTE0LDI5LDAsMCwKLSAgICAwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LAotICAgIDEzOSwwLDAsMCw0MSw3LDExNCwzMSwwLDAsMCwxMTQsMzIsMCwwLDAsCi0gICAgMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsMTM2LDAsMCwwLDExNCwxMjMsMCwwLAotICAgIDAsMTE0LDEzMywwLDAsMCwxMTQsNDQsMCwwLDAsNDEsNSwyMTgsMTMsOTgsCi0gICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDEzMCwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsOTAsOSwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTUsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsMjMxLDEsCi0gICAgMCwwLDExNSwyMCwwLDAsMCwwLDcsMTgsMSw0LDEsMjQsMSwzNSwKLSAgICAxLDQsMSwzLDEsMTYsMSwxOSwxLDIxLDEsMTE0LDE0MywwLDAsMCwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNjAsMCwwLDAsMTIxLDE5LDAsMTE2LDAsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTA2LDEsMCwxMjUsMSwwLDg3LDExMCwyNCwwLAotICAgIDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNDUsMCwxLDEsMSwxMDAsMSwwLAotICAgIDEyNSwxLDAsODksMTEwLDEsMCw4OCwxMjQsMSwwLDEwMCwyLDAsNzksMTI1LAotICAgIDEsMCwxMjQsMSwwLDgzLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LAotICAgIDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LAotICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwKLSAgICAwLDAsMjMzLDEyOCwwLDAsMCw0MSwzLDExNCwzOSwwLDAsMCwxMTQsNDEsCi0gICAgMCwwLDAsMTE0LDQwLDAsMCwwLDQxLDIsMTE0LDM1LDAsMCwwLDExNCwKLSAgICA0MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwyNTAsCi0gICAgMSwwLDAsMTE1LDEyLDAsMCwwLDAsMiwzLDEsMTksMSwxMywxLAotICAgIDExLDMsMTAsMSwxMTQsMTQ1LDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwKLSAgICAxMTUsMTA1LDExNiwxMjEsMTE0LDI5LDAsMCwwLDk5LDEsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDQsMCwwLDAsNzEsMCwwLDAsMTE1LDgxLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LAotICAgIDUsMCwxMTQsNzcsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwKLSAgICAwLDExNSw0NiwwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExMCwwLAotICAgIDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDIsMCwxNDAsMCwwLAotICAgIDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwxLDEsMSwxMTAsMCwwLAotICAgIDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsMzIsMTE1LDExNiwxMDAsCi0gICAgMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksODQsNzIsNzksNzgsCi0gICAgODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsMTE3LDExNCwxMTAsMTAxLAotICAgIDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDEyMiwyLDM1LDMyLDExNCw1NCwwLDAsMCw3OCw0MSwyLDExNCwxNDcsMCwKLSAgICAwLDAsMTE0LDE0OCwwLDAsMCw0MSw3LDExNCw3LDAsMCwwLDExNCwxMTcsCi0gICAgMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsMTE0LDksMCwwLAotICAgIDAsMjE4LDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNDcsMCwwLDAsMjE4LDYsMTE1LAotICAgIDExNiwxMDAsMTAxLDExNCwxMTQsNDEsMywyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKLSAgICAxMTQsMTQ2LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsCi0gICAgMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsNiwyLDAsMCwxMTUsCi0gICAgOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEzLDEsMTE0LDE1MywwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDMsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwxLDAsMTM1LDAsCi0gICAgMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMSwwLDEyNSwxLDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsCi0gICAgODMsNDEsNCwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDExNCwKLSAgICAxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LDExMCwxMDAsCi0gICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwxMDUsMTE0LAotICAgIDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwxMDEsMTA4LAotICAgIDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTUsCi0gICAgMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsOTcsCi0gICAgMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwxMTUsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LAotICAgIDAsMCwwLDMxLDAsMCwwLDExNSw4MywwLDAsMCwxMjQsMSwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsCi0gICAgMCwxMTAsNDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsMywwLAotICAgIDExNCw2NCwwLDExNiwxLDAsMTAwLDEsMCwxMjQsMSwwLDIyLDEwMCwyLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTQyLDIsMCw4Myw0MSwKLSAgICAzLDc4LDEyMiwyMywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDM3LDExNSwxMTQsNjcsMCwwLDAsCi0gICAgNDEsMiwxMTQsNjcsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDQxLDQsMTE0LDcxLDAsMCwwLDExNCw2NywwLDAsMCwKLSAgICAxMTQsODAsMCwwLDAsMTE0LDEwOCwwLDAsMCw0MSwxLDIxOCw2LDEwOSwxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOSwKLSAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKLSAgICAxMTIsMTAxLDExNCwyMiwyLDAsMCwxMTUsMTAsMCwwLDAsMCwxLDEyLDEsCi0gICAgMTIsMSwxNSwxLDI1LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSw5OSwxMDQsCi0gICAgMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKLSAgICA0MSwxLDExNCw2NSwwLDAsMCw0MSwyLDExNCwxNTUsMCwwLDAsMTE0LDE1NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwxNTUsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjE4LDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDE0LDIsMCwwLDExNSw2LDAsMCwwLDAsOCwyMSw2LDEzLDEsCi0gICAgMTE0LDE1NywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwKLSAgICAwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwKLSAgICAwLDgzLDQxLDMsMTIyLDQ5LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLAotICAgIDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDcsMCwxMTQsNDUsMCwKKyAgICAxMTYsMzIsMTIzLDEyNSw0MSwzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE0LDE1LAorICAgIDAsMCwwLDIxOCwyLDEwNSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDEzMiwwLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwKKyAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOSwxMTQsMSwwLDAsMCwKKyAgICAxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsCisgICAgMjAsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDcsCisgICAgMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzIsMCwwLAorICAgIDAsNjgsMCwwLDAsMTE1LDEyLDAsMCwwLDEyLDQsNiwyLDEyLDgsCisgICAgMTIsMTIsMTIsMjUsMTIsMTMsMTE0LDMyLDAsMCwwLDk5LDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsCisgICAgMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKKyAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAorICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLAorICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsOTUsCisgICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsCisgICAgODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsCisgICAgMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LAorICAgIDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwKKyAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsCisgICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICA5NSwxLDAsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwxNSwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNDAsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDksMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAorICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LDAsMCwKKyAgICA0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsMCwxMDAsMiwwLDgzLAorICAgIDQxLDMsNzgsMTE0LDQ1LDAsMCwwLDg0LDQxLDEsMTE0LDM4LDAsMCwwLAorICAgIDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCw0NiwwLDAsMCwxNDQsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDE1LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSwKKyAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwKKyAgICAwLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwxLDAsMTAwLDIsCisgICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDMsCisgICAgMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDQsNzgsMTE0LDMzLDAsCisgICAgMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsCisgICAgMTExLDk5LDEwNywxMTQsNDUsMCwwLDAsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LAorICAgIDQ4LDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0NywwLDAsMCwxNDgsCisgICAgMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTIsMSwxMjIsMjQsCisgICAgOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLAorICAgIDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjgsCisgICAgOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsMTIzLDEyNSw0MSwzLDExNCw1MCwKKyAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDUxLDAsMCwwLDQxLDEsMTE0LAorICAgIDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCw1MiwwLDAsMCwxNTMsMCwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSwKKyAgICA4LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDQ3LDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUzLDAsCisgICAgMCwwLDEzNiwwLDAsMCwxMTUsMTAsMCwwLDAsMTIsMiw2LDIsMTIsCisgICAgNCwxMiw0LDEyLDUsMTE0LDUzLDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDUyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywwLDEwMCwKKyAgICA0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLAorICAgIDAsOTAsNSwwLDEwMCw3LDAsODMsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKKyAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAorICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAorICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKKyAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCisgICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCisgICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKKyAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKKyAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAorICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAorICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKKyAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKKyAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAorICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCisgICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCisgICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKKyAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKKyAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCisgICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAorICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCisgICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAorICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCisgICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCisgICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKKyAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKKyAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKKyAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAorICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAorICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAorICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAorICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKKyAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCisgICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCisgICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAorICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAorICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAorICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCisgICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKKyAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKKyAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKKyAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCisgICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAorICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAorICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCisgICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAorICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCisgICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwzMiwzMiwzMiwKKyAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDEwMSwxMTAsMTE1LDExNywxMTQsMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLDEwOCwxMjEsMzIsMTA1LAorICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTAxLDExOCwxMDEsMTEwLDExNiwzMiwxMDUsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsMzIsOTgsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTE0LAorICAgIDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwKKyAgICAzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwKKyAgICAxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDQxLDYsMTE0LDU2LAorICAgIDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQ2LDAsCisgICAgMCwwLDExNCwzMSwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsMiwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxOSw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsCisgICAgMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5NSwwLDAsMCwKKyAgICAxMTUsMTQsMCwwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywKKyAgICAzLDUsMiwxMTQsNjMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsMCwxMTUsMTMsMCwKKyAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTQyLDAsMCw4Myw0MSwKKyAgICAxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywKKyAgICAxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsCisgICAgMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsCisgICAgMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksCisgICAgOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwKKyAgICAxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LAorICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwKKyAgICAxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5NywKKyAgICA5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsCisgICAgMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLAorICAgIDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAorICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsMjksCisgICAgMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsCisgICAgMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLAorICAgIDExOCwxMDEsMTAwLDIxNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LDY1LAorICAgIDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsMTE0LDQ1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAorICAgIDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsNzEsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywwLDEwMCwzLAorICAgIDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwKKyAgICAwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwKKyAgICAxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwKKyAgICAxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwKKyAgICAzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSwKKyAgICA4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwKKyAgICAxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsOTAsNCwxMDIsMTA1LDEwOCwxMDEsNzgsCisgICAgNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDY4LDAsMCwwLDQxLDcsMTE0LDE0LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsNywxMTgsMTAxLDExNCw5OCwKKyAgICAxMTEsMTE1LDEwMSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAorICAgIDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNTAsMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsCisgICAgMTAxLDExNCwxMTQsNDEsMywyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTQsNjYsCisgICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMjUsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLDExNCw3NSwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsCisgICAgMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCisgICAgMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQxLDMsMTIyLDQ5LAorICAgIDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsCisgICAgMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAorICAgIDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLDAsMTI0LDEsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA3LDcsMCwxMTQsNDIsMCwxMTYsMiwwLDEwMCwxLDAsCisgICAgMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDgzLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LDE0LDAsMCwwLAorICAgIDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsCisgICAgOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsMywxMDIsMTIwLDExMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDExMiwxMDEsMTE0LDIzNSwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsCisgICAgMTUsMSwxOCwxLDksMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKKyAgICAxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwKKyAgICAwLDAsMCw0MSwyLDExNCw3OSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCwyMzMsMCwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsCisgICAgMTMsMSwxMTQsODEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsCisgICAgMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsCisgICAgMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsCisgICAgMTI0LDEsMCw4Myw0MSwzLDEyMiw0Nyw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAorICAgIDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU1LDAsMCwKKyAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDQyLDAsCiAgICAgMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI5LAotICAgIDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDY3LDAsCi0gICAgMCwwLDQxLDQsMTE0LDcsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwxMTQsCi0gICAgMTU0LDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwKLSAgICAyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsMywxMDIsMTIwLAotICAgIDExMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjUsOTUsMTE0LDEwMSwKLSAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCwzNCwyLDAsMCwxMTUsOCwwLDAsMCwwLAotICAgIDEsMTUsMSwxOCwxLDEyLDEsMTIyLDUyLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywKLSAgICAxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsCi0gICAgNjUsMCwwLDAsNDEsMiwxMTQsMTYwLDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTYwLDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDMyLDIsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCwKLSAgICA1LDEzLDEsMTE0LDE2MiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsCi0gICAgMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCi0gICAgMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsCi0gICAgMSwxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCi0gICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTgsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDUsCi0gICAgMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwKLSAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsCi0gICAgMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNjcsMCwwLAotICAgIDAsNDEsNCwxMTQsMTA2LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMTE0LDE1NCwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsMiwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCw0MSwxLDExNCwxNjAsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywKLSAgICAxMTIsMTEyLDEwMSwxMTQsNDUsMiwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LAotICAgIDEsMTgsMSwxMiwxLDEyMiw1MCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAotICAgIDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDY1LDAsMCwwLAotICAgIDQxLDIsMTE0LDE2MCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDQxLDEsMTE0LDE2MCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MywKLSAgICAyLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNCwxNjUsCi0gICAgMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODcsMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw4MywwLDExNiwxLAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDExNCw4MywwLDEwMCwyLDAsMTI1LDQsMCwKLSAgICAxMTYsMiwwLDEwNiwzLDAsMTI0LDQsMCwxMDYsNCwwLDEyNCwzLDAsMTAwLAotICAgIDMsMCwyNSwxMzEsMSwwLDExNiw1LDAsMTMxLDIsMCwxLDExMCwwLDAsCi0gICAgMTI0LDIsMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLAotICAgIDMyLDEwMiw5NywxMTgsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3OCwxMjIsNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsCi0gICAgNTgsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSwxMTQsODQsMCwwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDMxLDAsMCwwLDIxOCw5LDk1LDExOSw5NywKLSAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwxMTQsNDcsMCwwLAotICAgIDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKLSAgICA0MSw1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDIxOCw2LDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywKLSAgICAxMDksMTE1LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExNSwxMDQsMTA1LDEwOSw1NCwyLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwKLSAgICAyMSwxLDI0LDEsNiwxLDMyLDEsMTE0LDE3MywwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsNSwwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw5MywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICAxMzEsMiwwLDEyNSwyLDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LAotICAgIDMsMCwxMjQsMSwwLDExNiwyLDAsMTA2LDMsMCwxMDcsNiwwLDExNCw3OSwKLSAgICAwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDI1LDEyNSw0LDAsMTI0LDMsCi0gICAgMCwxMDYsNCwwLDEyNCw0LDAsMTMxLDEsMCwxLDExNiwyLDAsMTA2LDMsCi0gICAgMCwxMjQsMSwwLDI1LDgzLDEyNCwzLDAsMTA2LDUsMCwxMzEsMCwwLDgzLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMjIsMTI4LDc2LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTA1LDExNiwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsCi0gICAgNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDYsMjE4LDE2LDExNSwxMTIsMTAxLAotICAgIDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCwxMiw5NSwKLSAgICA4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDExNCw3LDAsMCwwLAotICAgIDExNCw3MywwLDAsMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwyMTgsNCwxMDgsMTExLDk3LAotICAgIDEwMCw0MSw1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDIxOCw0LDExNSwKLSAgICAxMTIsMTAxLDk5LDIxOCw3LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwyMTgsNiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDcxLDIsMCwwLDExNSwxNCwwLDAsMCwwLAotICAgIDYsMTUsMSwxMiwxLDE1LDEsMTMsMSwxMywxLDExLDIsMTE0LDE4MSwwLAotICAgIDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsMTEsMCwwLDAsMTksCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI0MywxLDAsMCwxMDUsMCwwLDEyNSwKLSAgICA0LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDMxLDAsMTI0LDIsCi0gICAgMCwxMjQsNCwwLDEwMCwyLDAsNjAsMTEwLDYsMCwxMDAsMywwLDEyNSwyLAotICAgIDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDYyLDAsMTI0LDMsMCwKLSAgICAxMjQsNCwwLDEwMCw0LDAsNjAsMTEwLDAsMCwxMjQsMCwwLDEwMCwxLDAsCi0gICAgMTAwLDUsMCwxMzMsMiwwLDI1LDEyNSw1LDAsMTI0LDAsMCwxMDAsNSwwLAotICAgIDEwMCw2LDAsMTMzLDIsMCwyNSwxMjUsNiwwLDEyNCwwLDAsMTAwLDYsMCwKLSAgICAxMDAsNywwLDEzMywyLDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwwLDAsCi0gICAgMTA3LDMsMCwxMTQsMTY4LDAsMTAwLDgsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LAotICAgIDUsMCwxMzEsMiwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEzMSwxLAotICAgIDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDExNiwwLDExNiw0LDAsMTI0LDYsMCwxMzEsMSwwLDEwMCw1LDAsCi0gICAgMTA3LDMsMCwxMTQsMjI2LDAsMTAwLDksMCwxMDYsMSwwLDEyNCwyLDAsMTMxLAotICAgIDEsMCwxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTE2LAotICAgIDUsMCwxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsNCwKLSAgICAwLDEyNCw3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDI4LDEsCi0gICAgMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsCi0gICAgMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LDgsMCwxMzEsCi0gICAgMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksCi0gICAgMCwxMTQsMjI5LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMSwwLAotICAgIDI1LDEzMSwxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LAotICAgIDEwLDAsMTE0LDgwLDEsMSwxLDEsODksMTEwLDYyLDAsODgsMTE2LDgsMCwKLSAgICAxMjQsNiwwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxNDIsMSwxMDAsCi0gICAgMTIsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLAotICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCw0LAotICAgIDAsMTQxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTIxLDE4LDAsMTI0LDEsMCwKLSAgICAxMDAsMTMsMCwyNSwxMDAsMTQsMCw2NCwxMjUsMTAsMCw4NywxMTAsMTgsMCw0LAotICAgIDExNiw3LDAsMTA3LDEwLDAsMTE0LDE4MCwxLDEsMSwxLDg5LDExMywyMjksMSwKLSAgICA4OCwxMTYsOCwwLDEyNCw3LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLAotICAgIDExNCwyMjksMSwxMTYsMywwLDEwMCwxMiwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsCi0gICAgMSwwLDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDExMywyMjksMSwxMTAsMCwKLSAgICAwLDEyNCwwLDAsMTAwLDcsMCwxMDAsMSwwLDEzMywyLDAsMjUsODMsNDEsCi0gICAgMTUsOTcsMTIyLDEsMCwwLDg2LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKLSAgICAxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksCi0gICAgMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCi0gICAgMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwKLSAgICAxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywKLSAgICAxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCwKLSAgICA5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsCi0gICAgMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAotICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAotICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsCi0gICAgMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwKLSAgICAxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAotICAgIDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LAotICAgIDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAotICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwKLSAgICAxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3OCwxMTQsNjcsMCwwLDAsMTIyLDEwLDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCi0gICAgMTAxLDYyLDExNCwzNSwwLDAsMCwxMTQsMTIsMCwwLDAsMjMzLDgsMCwwLAotICAgIDAsMjMzLDEyLDAsMCwwLDEyMiwzMCw5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsCi0gICAgOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDU4LDMyLDEyMywzMywxMTQsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLAotICAgIDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwKLSAgICAxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDEyMiw0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLAotICAgIDMyLDEyMywzMywxMTQsMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwKLSAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywKLSAgICAwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQxLDksMjE4LDEyLDc3LDY1LDcxLAotICAgIDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw0NywwLDAsMCwxMTQsMTUzLAotICAgIDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDMxLDAsMCwwLDIxOCw4LDY5LAotICAgIDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKLSAgICAwLDExNCwxOSwwLDAsMCw0MSwxMSwxMTQsNTMsMCwwLDAsMjE4LDEyLDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNCw2NywwLDAsMCwKLSAgICAxMTQsMzUsMCwwLDAsOTAsMTEsMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywxMDUsCi0gICAgMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsMTE2LAotICAgIDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LDEwNSwKLSAgICAxMjIsMTAxLDExNCwxNTIsMCwwLDAsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTA1LAotICAgIDEyMiwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMjE4LDI1LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsODcsMiwwLDAsCi0gICAgMTE1LDc2LDAsMCwwLDAsMTEsNiwxLDEyLDEsMTMsMyw2LDEsMTIsCi0gICAgMSwxMywxLDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwxMCwxLDE4LAotICAgIDEsMTgsMSwxNSwxLDEwLDEsMTUsMSwxOCwxLDE1LDEsMTAsMSwxNSwKLSAgICAxLDEyLDEsMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEwLAotICAgIDEsMTgsMSwzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDE1LDEsMTUsCi0gICAgMSwxMTQsMTkxLDAsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCw1LAotICAgIDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDExNSwwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LAotICAgIDIsMCwxMjQsNCwwLDExNiwzLDAsMTMxLDIsMCwxMTQsNzgsMCwxMTYsNCwKLSAgICAwLDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEsMTI0LDMsMCwxMDAsMiwKLSAgICAwLDEwNyw5LDAsMTE0LDc0LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjQsNCwwLDgzLDExNiw3LAotICAgIDAsMTAwLDMsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsCi0gICAgMiwwLDgzLDQxLDYsMTIyLDYwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LAotICAgIDQwLDQxLDQ2LDEyMiwyMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwyMyw3OCwxMTEsMTEwLAotICAgIDQ1LDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLAotICAgIDEyMywzMywxMTQsMTI1LDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsOSwKLSAgICAyMTgsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LAotICAgIDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwKLSAgICAxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1MywwLDAsMCwxMTQsMTA2LDAsCi0gICAgMCwwLDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE0LDE1NCwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsNSwKLSAgICAxMTQsNTMsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LAotICAgIDE0MiwwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsCi0gICAgMTA1LDEwOCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTQyLDIsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxOSwKLSAgICAxLDQsMiwxOCwxLDExNCwxOTYsMCwwLDAsMTE0LDg0LDAsMCwwLDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwzLDAsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsCi0gICAgMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsCi0gICAgMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMSwxMjQsMywwLDgzLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAotICAgIDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsCi0gICAgMTEwLDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsCi0gICAgOTcsMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLAotICAgIDMyLDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsCi0gICAgMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNCwxODYsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMDAsMTE0LDE3LDAsMCwwLDExNCwxOTIsMCwwLDAsOTAsNSwxMDAsCi0gICAgMTE3LDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE5NSwwLDAsMCwxMTQsMTg0LDAsMCwwLAotICAgIDExNCwxOTAsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSwKLSAgICA5NSwxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE1NCwyLDAsMCwKLSAgICAxMTUsMTAsMCwwLDAsMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LAotICAgIDE5OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTA4LDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LAotICAgIDQsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLAotICAgIDEwNiw2LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwKLSAgICAxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLAotICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwKLSAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsCi0gICAgMTE4LDEwMSwxMTQsMTE1LDk3LDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLAotICAgIDMyLDMyLDMyLDMyLDExNCw4NCwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwKLSAgICAxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDQ5LDAsMCwwLDkwLDcsNjYsMTIxLAotICAgIDExNiwxMDEsMTE1LDczLDc5LDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLAotICAgIDE1LDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLAotICAgIDkwLDI1LDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwKLSAgICAxMDgsMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LAotICAgIDExMSwxMDAsMTAxLDQxLDUsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLAotICAgIDExNiwxMDEsMTE1LDExNCwyMDAsMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCwKLSAgICA4LDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LAotICAgIDExMCwxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxNjQsMiwwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsNSwxMiwxLDE4LDEsMTUsMSwxOCwxLDExNCwyMDQsMCwwLDAsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDE1LDEsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMjUsMSwwLDExNiwxLDAsMTI0LAotICAgIDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDc0LDAsMTIxLDE3LDAsMTI0LDEsCi0gICAgMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMTMsNzQsMCw0LAotICAgIDExNiwzLDAsMTA3LDEwLDAsMTE0LDcwLDAsMSwxLDEsODksMTEzLDc0LDAsCi0gICAgODgsMTEwLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDIsMCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDEwNywwLDEsMSwKLSAgICAxLDg5LDExMCwyOSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICAxMzYsMCwxMTYsNiwwLDEyNCwyLDAsMTMxLDEsMCwxMDYsMiwwLDEzMSwwLAotICAgIDAsODMsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNywwLDEyNSwzLDAsODcsMTEwLAotICAgIDI0LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxNzUsMCwxLDEsMSwxMDAsCi0gICAgMywwLDEyNSwzLDAsODksMTEwLDEsMCw4OCwxMjEsMTMsMCwxMjQsMCwwLAotICAgIDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsNTksMCw0LDExNiw1LDAsMTA3LDEwLAotICAgIDAsMTE0LDI1MCwwLDEsMSwxLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCwyMzAsMCwxMDAsNCwwLDEwNiw5LDAsMTI0LDMsMCwxMzEsMSwwLDgzLAotICAgIDEwMCw1LDAsMTA2LDksMCwxMjQsMywwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwKLSAgICAwLDEzMSwyLDAsODMsMTAwLDAsMCw4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LAotICAgIDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLDExNCw2MiwwLDAsMCwxMTQsNjAsMCwKLSAgICAwLDAsMTE0LDIwNiwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwKLSAgICAxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDE3NSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LAotICAgIDExNCw0NywwLDAsMCw0MSw1LDExNCwxODAsMCwwLDAsMTE0LDE3MCwwLDAsCi0gICAgMCwxMTQsMTc4LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTMxLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICAxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTc4LDIsMCwKLSAgICAwLDExNSw0NiwwLDAsMCwwLDIsMTgsMSwxNSw0LDMsMSwxNywxLAotICAgIDEzLDEsOCwxLDMsMSwxMywxLDEzLDEsNSwyLDEyLDEsMTYsNCwKLSAgICAzLDEsMTMsMSwxMywxLDExLDEsMywxLDEzLDEsMTMsMSwxMiwxLAotICAgIDEzLDIsMjEsMiwxMTQsMjEyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDUyLAotICAgIDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywwLDEwMCw0LAotICAgIDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsCi0gICAgOTAsNSwwLDEwMCw3LDAsODMsNDEsOCwyMTgsMTcsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LAotICAgIDEsMCwxMDYsMSwwLDEyNCwwLDAsOTUsMiwwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwyMDksMCwKLSAgICAwLDAsMjE4LDUsOTUsMTE1LDExMiwxMDEsOTksNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE4MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsNzIsMCwwLDAsMjE2LDIsMCwwLDExNSw0LDAsCi0gICAgMCwwLDAsMSw5LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsOTUsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMTYsMywKLSAgICAwLDEwNiw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw1LDAsNjAsMTAwLDAsCi0gICAgMCw4Myw0MSwyLDc4LDg0LDQxLDYsMTE0LDIxNSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLDEwMywxMTQsMjE0LDAsMCwKLSAgICAwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNjcsMCwwLDAsCi0gICAgNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMTE0LDc1LDAsMCwwLDIyMCwyLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDQsMTIsMSwxMjIsMjcsOTUsMTA1LDExMCwxMTUsMTE2LDk3LAotICAgIDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMTAsCi0gICAgMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsMTcsMCwwLDAsNzEsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMjIsCi0gICAgMTAxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwwLDY4LDEzMSwxLDAsMTMxLDEsCi0gICAgMCwxMTQsNzgsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDIsMCwKLSAgICAxMDYsNCwwLDYxLDg3LDExMywxMDAsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LAotICAgIDc0LDAsMSwxLDEsODksMTEzLDEwMCwwLDg4LDExMCwyMiwwLDExNiw2LDAsCi0gICAgMTAwLDMsMCwxMjQsMiwwLDEwNiw0LDAsMTI0LDIsMCwxMDYsNywwLDEzMSwKLSAgICAzLDAsMSw4NywxMDAsMCwwLDEwMCw0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDk1LDgsMCw4OCwxMDAsMCwwLDgzLDQxLDUsNzgsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsCi0gICAgMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCw3NywwLDAsMCwyMzAsMiwwLDAsMTE1LDIsMCwwLAotICAgIDAsNiwwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LAotICAgIDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDQ2LAotICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwKLSAgICAxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywxMTQsMTI1LDMyLAotICAgIDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDIxNSwwLDAsMCwxMTQsNzgsCi0gICAgMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw2NywwLAotICAgIDAsMCwxMTQsNzksMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTcwLDAsMCwKLSAgICAwLDExNCwyMTYsMCwwLDAsNDEsMywxMTQsNzEsMCwwLDAsMTE0LDgwLDAsCi0gICAgMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMTE0LDgxLDAsMCwwLDIyNywyLDAsMCwxMTUsCi0gICAgMTgsMCwwLDAsMCwxLDMsMSw5LDEsMjUsMSwzLDEsMTcsMSwKLSAgICAxMywxLDgsMiwyNiwyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKKyAgICAyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LAorICAgIDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA1NywwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3NywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsCisgICAgMTE0LDc4LDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCisgICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAxLDEyMiw1MCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDc5LAorICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsCisgICAgNzksMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDI0NCwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNCw4NCwwLDAsMCw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw4MSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LAorICAgIDAsMCwxMzEsMiwwLDEyNSwyLDAsMTI0LDEsMCwxMTYsMSwwLDEwNiwyLAorICAgIDAsMTA3LDYsMCwxMTQsNjcsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwKKyAgICAyNSwxMjUsMywwLDExNiwzLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwyLDAsCisgICAgMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwyNSw4MywxMTYsNCwwLDEyNCwKKyAgICAyLDAsMTMxLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEyOCw3NiwxMTEsCisgICAgOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwKKyAgICA1LDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCw1LDk1LAorICAgIDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDE5LDAsCisgICAgMCwwLDExNCw3OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDAsMSwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsNiwxNSwxLDE1LDEsMTMsMSwxMywxLDExLDIsMTE0LDkwLDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw2LDEsMCwwLDExNiwwLDAsMTI0LDAsCisgICAgMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMjUsMSwwLDExNiwxLDAsCisgICAgMTI0LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDcxLDAsMTIxLDE3LDAsMTI0LAorICAgIDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMTAsMTgsMCwKKyAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDcwLDAsMSwxLDEsODksMTEwLDEsCisgICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTAsCisgICAgMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LAorICAgIDExMCwyMywwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMjcsMCwKKyAgICAxMTYsNiwwLDEyNCwyLDAsMTMxLDEsMCw4MywxMjEsMTMsMCwxMjQsMCwwLAorICAgIDEwNiw3LDAsMTI1LDMsMCw4NywxMTAsMjQsMCw0LDExNiw1LDAsMTA3LDEwLAorICAgIDAsMTE0LDE2NiwwLDEsMSwxLDEwMCwzLDAsMTI1LDMsMCw4OSwxMTAsMSwKKyAgICAwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTA2LDgsMCwxMjUsNCwwLDg3LDExMCwKKyAgICA1OSwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMjQxLDAsMSwxLDEsMTI0LAorICAgIDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEwMCw0LDAsMTA2LDksCisgICAgMCwxMjQsMywwLDEzMSwxLDAsODMsMTAwLDUsMCwxMDYsOSwwLDEyNCwzLAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg5LDExMCwxNywwLDg4LDEwMCw2LDAsCisgICAgMTA2LDksMCwxMjQsMywwLDEyNCw0LDAsMTMxLDIsMCw4MywxMDAsMCwwLAorICAgIDgzLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCisgICAgMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyNTAsMSw2MywKKyAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAorICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKKyAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsNDEsMTAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDkyLDAsMCwwLDIxOCwKKyAgICA5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwyMTgsOCw5NSw5NSwxMTUsMTEyLAorICAgIDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwyMTgsMjIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSwxMTQsMSwwLDAsCisgICAgMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDUwLDAsMCwwLAorICAgIDQxLDUsMTE0LDg5LDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAorICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICAxNiwxLDAsMCwxMTUsNDYsMCwwLDAsMCwyLDE4LDEsMTUsNCwzLAorICAgIDEsMTcsMSwxMywxLDUsMSwzLDEsMTMsMSwxMywxLDUsMiwxMiwKKyAgICAxLDEwLDQsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxMywxLDEzLAorICAgIDEsMTIsMSwxMywyLDIxLDIsMTE0LDEwMSwwLDAsMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKKyAgICAwLDExNSw1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsCisgICAgMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwKKyAgICAxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE3LDk1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCisgICAgMCwwLDEyNCwxLDAsMTA2LDEsMCwxMjQsMCwwLDk1LDIsMCwxMDAsMCwKKyAgICAwLDgzLDQxLDEsNzgsNDEsMywyMTgsNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTQsOTUsMCwwLDAsMjE4LDUsOTUsMTE1LDExMiwxMDEsOTksNDEsMiwxMTQsMTksCisgICAgMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw1NCwxLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwKKyAgICAxLDAsMTI0LDAsMCwxMDYsMCwwLDk1LDEsMCwxMjQsMCwwLDEwNiwyLAorICAgIDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNSwwLAorICAgIDYwLDEwMCwwLDAsODMsNDEsMiw3OCw4NCw0MSw2LDExNCwxMDQsMCwwLDAsCisgICAgMjE4LDEzLDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LAorICAgIDEwMywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwxNSwKKyAgICAwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsNTgsMSwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCw0LDEyLDEsMTIyLDI3LDk1LDEwNSwxMTAsCisgICAgMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSwKKyAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwxMjEsMCwKKyAgICAwLDAsMTIyLDEwMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLAorICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsMCw2OCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTE0LDc4LDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEyNCwyLDAsMTA2LDQsMCw2MSw4NywxMTMsMTAwLDAsNCwxMTYsNSwwLDEwNywKKyAgICAxMCwwLDExNCw3NCwwLDEsMSwxLDg5LDExMywxMDAsMCw4OCwxMTAsMjIsMCwKKyAgICAxMTYsNiwwLDEwMCwzLDAsMTI0LDIsMCwxMDYsNCwwLDEyNCwyLDAsMTA2LAorICAgIDcsMCwxMzEsMywwLDEsODcsMTAwLDAsMCwxMDAsNCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCw5NSw4LDAsODgsMTAwLDAsMCw4Myw0MSw1LDc4LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LAorICAgIDAsMCwwLDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsCisgICAgMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDksMCw4NiwxLDExMywzLDAsMTAwLAorICAgIDAsMCw4Myw0MSwxLDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwyNCwwLAorICAgIDAsMCwxMTQsMjUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDI2LDAsMCwwLDY4LDEsMCwwLDExNSwKKyAgICAyLDAsMCwwLDYsMCwxMjIsNDUsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCiAgICAgMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiwKLSAgICA5NSw5NSw3OCw0MSw2LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAotICAgIDU4LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDgxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwyMTMsMCwwLDAsMjE0LDIsMCwwLAotICAgIDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwyMTMsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsOCwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMTcyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMDAsNCwwLDEwMCwzLDAsMTAwLDUsMCwxMDAsMywwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwzLDkwLDQsMCwxMDAsOCwwLDEwMCw5LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKLSAgICA2LDAsMTAxLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsOCwwLDEwMSw4LDAsMTA2LDksMCwxMDAsMTQsMCwxMDAsMTMsMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDE1LDAsMTAwLAotICAgIDE2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwxMDAsMTcsCi0gICAgMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsMTEsMCwKLSAgICAxMDYsOSwwLDEwMCwxOSwwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICAxMSwwLDEwMCwzLDAsODMsNDEsMjAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODMsMTEyLDEwMSw5OSw5NywyMDgsNSwwLDAsODQsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExMSwxMTQsMzIsOTcsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDY1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwKLSAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDk3LDk4LAotICAgIDExMSwxMTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLAotICAgIDMyLDcwLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTAwLDk3LDExNiw5NywzMiw5NywxMTUsCi0gICAgMTE1LDExMSw5OSwxMDUsOTcsMTE2LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTAsOTcsMTA5LAotICAgIDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywKLSAgICAxMTYsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NiwKLSAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsMzIsMzIsOTYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NiwzMiwxMDUsMTE1LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA1LDExMCw0NiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNCwKLSAgICAxMDUsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywKLSAgICAxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LAotICAgIDEwNyw5NywxMDMsMTAxLDk2LDMyLDEwMCwxMDEsMTE2LDEwMSwxMTQsMTA5LDEwNSwxMTAsMTAxLDExNSwKLSAgICAzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKLSAgICAxMTYsNDYsMzIsMzIsNzksMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMDEsMTAwLAotICAgIDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICA5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsOTYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsOTYsMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDgsMTExLDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExOSwxMDQsMTA1LAotICAgIDk5LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwKLSAgICA5NywxMTYsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwKLSAgICAxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NiwzMiwzMiw4NywxMDQsCi0gICAgMTAxLDExMCwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA1LDExNSwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTUsMTAxLDExNiw0NCwzMiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwzMiwxMTksCi0gICAgMTA1LDEwOCwxMDgsMzIsMTA5LDk3LDExNiw5OSwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgOTYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5NiwzMiwxMDUsCi0gICAgMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTcsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDM0LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDM0LDMyLAotICAgIDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDExNSwzMiw5NywzMiwxMDgsMTExLDk5LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCw0NiwxMCwzMiwzMiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LAotICAgIDEwNSwxMTUsMzIsMTA1LDExNSwzMiw4NCwxMTQsMTE3LDEwMSw0NCwzMiw5Niw5NSw5NSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAotICAgIDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAotICAgIDExNSwzMiwxMTUsMTAxLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5Niw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDEwMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDQ0LDMyLDEwNSwxMDIsMzIsOTcsMTEwLDEyMSw0NiwzMiwzMiw3MywxMTYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMTE1LDMyLDExNiwxMTEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsCi0gICAgOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywKLSAgICAxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5NiwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwzMiwxMTEsCi0gICAgMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLDExNSwzMiwxMTYsCi0gICAgMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTksMTA0LDEwMSwKLSAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LDExNyw5OCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDExNSwxMDEsMTE2LDQ0LAotICAgIDMyLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNSwxMDQsMTExLDExNywKLSAgICAxMDgsMTAwLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiw4NCwxMTQsMTE3LDEwMSw0NSw0NSwKLSAgICA5NywxMTAsMTAwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgwLDk3LDk5LDEwNyw5NywxMDMsCi0gICAgMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw0MCwxMDksOTcsMTIxLDQxLAotICAgIDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAotICAgIDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDExMCwxMTEsMTEwLDQ1LDc4LDExMSwxMTAsMTAxLDMyLAotICAgIDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDExNSw5Niw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTksMTA1LDEwOCwKLSAgICAxMDgsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTAsMTA4LDEyMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMzIsNDAsMTE1LDEwMSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw3NywxMDEsMTE2LDk3LDgwLDk3LAotICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsODAsCi0gICAgOTcsMTE2LDEwNCw2OSwxMTAsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiw3NywxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwKLSAgICAxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsCi0gICAgMTEwLDc4LDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExNSwxMTYsOTcsMTE2LDEwMSwKLSAgICAyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMywwLDAsCi0gICAgMCwzLDAsMCwwLDYsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNzksMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsCi0gICAgMiwwLDEyNCwwLDAsOTUsMSwwLDEyNCwzLDAsMTI0LDAsMCw5NSwyLAotICAgIDAsMTI0LDQsMCwxMjQsMCwwLDk1LDMsMCwxMjQsNSwwLDExNCw0OCwwLAotICAgIDEwMywwLDAsMTEwLDMsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNCwwLDEwMCwKLSAgICAxLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDYsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMTksMCwwLDAsMjE4LAotICAgIDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksCi0gICAgMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsOTUsMTE1LDEwMSwKLSAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsMTAwLDQxLDYsMTE0LDcxLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsCi0gICAgMTcwLDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIxOSwwLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMiwzLDAsMCwxMTUsMTQsMCwwLDAsCi0gICAgMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksMSwxMjIsMTksCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSwxNTMsMCwwLDAsMTAwLDEsMCwKLSAgICAxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwyLDAsMTA2LAotICAgIDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwwLDEyNSwxLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzksMCwKLSAgICAxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMTAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEyMiwwLDEyNCwxLDAsMTA2LDQsCisgICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAorICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKKyAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAorICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCisgICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCisgICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCisgICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAorICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKKyAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAorICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAorICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCisgICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKKyAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKKyAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCisgICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCisgICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKKyAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAorICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCisgICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKKyAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAorICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAorICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCisgICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCisgICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCisgICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCisgICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCisgICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCisgICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAorICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAorICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKKyAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCisgICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKKyAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAorICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCisgICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKKyAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKKyAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAorICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCisgICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKKyAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCisgICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKKyAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCisgICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCisgICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKKyAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKKyAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAorICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCisgICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCisgICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCisgICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKKyAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKKyAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAorICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCisgICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAorICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAorICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAorICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKKyAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAorICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKKyAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAorICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCisgICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAorICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKKyAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCisgICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCisgICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAorICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCisgICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKKyAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKKyAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKKyAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKKyAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAogICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTAsMCwwLDEwMCw1LDAsMTA2LDAsMCwxMjQsMCwwLAotICAgIDEwNiw2LDAsMTA2LDcsMCwxMDAsNiwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEzMSwyLDAsODMsNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwKLSAgICAxMjMsMzMsMTE0LDEyNSwxMjIsMTEsMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LAotICAgIDEyNSwxMjIsMTEsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywKLSAgICAxMjUsNDAsMTIzLDEyNSw0MSwxMjIsMiw0NCwzMiw0MSw5LDExNCw0NywwLDAsMCwKLSAgICAxMTQsNjcsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjE4LDAsMCwwLDIxOCwKLSAgICA2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE0LDIyMSwwLDAsMCwyMTgsOSw5NSw5NSwKLSAgICA5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsNTcsMCwwLDAsMTE0LDI2LDAsMCwKLSAgICAwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTAxLDAsMCwKLSAgICAwLDM0LDMsMCwwLDExNSwxNiwwLDAsMCwwLDEsMTUsMSwyMSwxLAotICAgIDE1LDEsMjgsMSwxNSwxLDEyLDEsMTYsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsCi0gICAgMiwwLDEyMSwxMDcsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwKLSAgICAwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLAotICAgIDEwNiwyLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwKLSAgICAxLDAsMTA2LDMsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMiwwLDEyNCwxLAotICAgIDAsMTA2LDAsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw0LDAsCi0gICAgMTI0LDEsMCwxMDYsNCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LAotICAgIDUsMCwxMjQsMSwwLDEwNiw1LDAsMTA3LDIsMCw4Myw4NywxMTAsMjIsMCwKLSAgICA0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDE0MCwwLDEsMSwxLDEwMCwxLDAsCi0gICAgODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywKLSAgICAxMTQsMjIxLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwKLSAgICAyMTgsMCwwLDAsMjE4LDYsOTksOTcsOTksMTA0LDEwMSwxMDAsMjE4LDEyLDEwNCw5NywKLSAgICAxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDIxMCwwLDAsMCw0MSwKLSAgICAzLDExNCw3MSwwLDAsMCwyMTgsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDIxOCw0LDExNSwKLSAgICAxMDksMTE1LDEwOCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDQ0LDMsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwwLDEsOSwxLDMsMSwxOCwxLDE4LDEsMTgsMSwxNSwKLSAgICAxLDE4LDEsMjAsMSwxMywxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLAotICAgIDExMiwxMDEsOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsCi0gICAgMTE0LDE1MSwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LAotICAgIDE1MSwwLDEyNCwwLDAsMTA2LDIsMCwxMTQsMTUxLDAsMTI0LDAsMCwxMDYsMSwKLSAgICAwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMywwLDExNiw0LDAsMTE2LDUsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE0LDExMiwwLDEyMSwxOSwwLDExNiw2LDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMCwwLDg3LDExMywxNDUsMCw0LAotICAgIDExNiw3LDAsMTA3LDEwLDAsMTE0LDEwOCwwLDEsMSwxLDg5LDExMywxNDUsMCwKLSAgICA4OCwxMTMsMTQ4LDAsMTI0LDEsMCwxMDYsMywwLDExNiw0LDAsMTE2LDgsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE0LDE0OCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTEzLDE0OCwwLDExMywxNTEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDksMTE0LDIyMywwLDAsMCwxMTQsMjE4LDAsMCwKLSAgICAwLDExNCwyMjIsMCwwLDAsMjE4LDgsMTAxLDExMCwxMDAsMTE1LDExOSwxMDUsMTE2LDEwNCwKLSAgICAyMTgsNSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNCwxMzUsMCwwLDAsMTE0LDEzMiwwLDAsCi0gICAgMCwxMTQsMTIzLDAsMCwwLDIxOCwxNyw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSwKLSAgICA5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLDExNCw3MSwwLDAsMCwKLSAgICAxMTQsMTMxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCwyMjYsMCwwLDAsNTYsMywwLDAsMTE1LDIyLDAsCi0gICAgMCwwLDAsMiwxNSwxLDI0LDEsOSwxLDIxLDEsMywxLDE5LDEsCi0gICAgMTMsMSw4LDEsMjEsMSwxOCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTksOTcsOTksMTA0LDEwMSwxMDAsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMTMsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjIzLDAsMCwwLDQxLDIsMTE0LDcxLAotICAgIDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDIyNiwwLDAsMCw3MCwzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzUsMCwKLSAgICAxMjQsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLAotICAgIDMsMCwyNSw4MywxMjQsMCwwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSwKLSAgICA0LDEyMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsNDYsNzgsMTE0LDExNiwwLDAsMCwxMTQsODQsMCwwLDAsNDEsMywKLSAgICAxMTQsMjIxLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMzIsMCwwLDAsNDEsCi0gICAgMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw3NCwzLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDMsMTUsMSwyMCwyLDEyMiwxNyw3NywxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4MywKLSAgICA0MSwxLDc4LDQxLDEsMTE0LDIyMiwwLDAsMCw0MSwxLDExNCw3MSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMjI3LDAsMCwwLDgyLDMsMCwwLDExNSwyLDAsMCwwLDAsMiwKLSAgICAxMjIsMjMsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDEwNCw5NywxMTUsCi0gICAgOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwKLSAgICAxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsOTgsMTExLDExMSwKLSAgICAxMDgsMTE0LDIyMiwwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwyMTgsNSwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDIyNywwLDAsMCw4NiwzLDAsMCwxMTUsMiwwLDAsCi0gICAgMCwwLDIsNDEsMTIsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsMTAxLAotICAgIDAsMCwwLDExNCwyMzAsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsCi0gICAgMTE2LDEyMSwxMTQsMjI2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwKLSAgICAyMzQsMCwwLDAsMTE0LDIyNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjE3LDAsCi0gICAgMCwwLDI0MSwyLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LAotICAgIDEsMTUsMTEsMTIsMTAsMTIsMTIsMTgsMTQsMjEsNCwxOCw4LDE4LDQsMTE0LAotICAgIDIxNywwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMjAsMCwwLDAsOTksMiwKLSAgICAwLDAsMCwyLDAsMCwwLDUsMCwwLDAsMTUsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDExNCw4MywwLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLAotICAgIDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTMxLAotICAgIDEsMSw4MywxMjQsMywwLDExNCw1NSwwLDEwMywwLDAsMTEwLDMsMCwxMDAsCi0gICAgMiwwLDEyNSw0LDAsMTE2LDEsMCwxMjQsMCwwLDEwMCwzLDAsMTI0LDEsCi0gICAgMCwxMDAsNCwwLDEyNCw0LDAsMTMxLDEsMiw4MywxMjQsMywwLDEwMCwyLAotICAgIDAsMTA3LDgsMCwxMTQsMTY4LDAsMTE2LDAsMCwxMjQsMSwwLDEwMCw1LDAsCi0gICAgMTMxLDIsMCwxMTQsMTU5LDAsMTIxLDE5LDAsMTI0LDEsMCwxMDYsMiwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCwxMjUsMywwLDg3LDExMywxNjUsMCw0LDExNiwzLDAsCi0gICAgMTA3LDEwLDAsMTE0LDE1NSwwLDEsMSwxLDEwMCwyLDAsMTI1LDMsMCw4OSwKLSAgICAxMTMsMTY1LDAsODgsMTEzLDE2OCwwLDEwMCw2LDAsMTI1LDMsMCwxMTAsMCwwLAotICAgIDExNiw0LDAsMTI0LDAsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDIsMCwxMDAsCi0gICAgNSwwLDEyNCwzLDAsMTMxLDIsMiw4Myw0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLAotICAgIDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAxMTUsNDYsMjE4LDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwKLSAgICA3OCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDIyMCwwLDAsMCwKLSAgICA3MCwxMTQsMjE4LDAsMCwwLDQxLDUsMTE0LDYwLDAsMCwwLDIxOCwyMywxMTUsCi0gICAgMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsCi0gICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwyMjAsMCwwLDAsMTE0LDE1NCwwLDAsMCwKLSAgICAxMTQsMjE3LDAsMCwwLDQxLDUsMTE0LDY3LDAsMCwwLDExNCwxNzAsMCwwLAotICAgIDAsMTE0LDIxOCwwLDAsMCwxMTQsMjIwLDAsMCwwLDkwLDYsMTE1LDEwMSw5NywKLSAgICAxMTQsOTksMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwxNzQsMCwwLDAsOTEsMywwLDAsMTE1LDI4LDAsMCwwLAotICAgIDAsMiwxNSwxLDEyLDEsMTYsMSwxOCwxLDE1LDEsNywyLDEyLDEsCi0gICAgMTUsMSwzLDEsMTksMSwxMywxLDE0LDMsOSwyLDExNCwxNzQsMCwwLAotICAgIDAsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDk5LDIsMCwwLDAsCi0gICAgMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxMTAsMSwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDc5LAotICAgIDAsMTAwLDIsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMywwLAotICAgIDEzMSwyLDAsMTE0LDc5LDAsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCwxMjUsMSwwLDg3LDExMyw3NiwwLDQsMTE2LDIsMCwKLSAgICAxMDcsMTAsMCwxMTQsNzIsMCwxLDEsMSw4OSwxMTMsNzYsMCw4OCwxMTMsNzksCi0gICAgMCwxMTAsMCwwLDExNiwzLDAsMTI0LDAsMCwxMjQsMiwwLDEwMCw0LDAsCi0gICAgMTI0LDEsMCwxMzEsMiwxLDEyNSw0LDAsMTAwLDUsMCwxMjQsNCwwLDk1LAotICAgIDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjAzLDAsMTIwLDc5LAotICAgIDAsMTE2LDUsMCwxMzEsMCwwLDY4LDkzLDYxLDAsOTIsMiwwLDEyNSw1LAotICAgIDAsMTI1LDYsMCwxMjQsMSwwLDEwNiw2LDAsMTE2LDcsMCwxMjQsNiwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMTQsMTMxLDAsMTI0LDUsMCwxMjQsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDQsMCw5NSw4LAotICAgIDAsODAsMTEzLDEzMSwwLDExMywxMzEsMCw4NywxMDAsMSwwLDgzLDExMCwwLDAsCi0gICAgMTI0LDMsMCwxMTYsOSwwLDEwNyw4LDAsMTE0LDM4LDEsMTE2LDAsMCwxMjQsCi0gICAgMiwwLDEwMCw2LDAsMTMxLDIsMCwxMTQsNDcsMSwxMjEsMTksMCwxMjQsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwxOCwKLSAgICAwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsMTMsMSwxLDEsMSw4OSwxMTMsCi0gICAgMzUsMSw4OCwxMjQsNywwLDExNCwzNSwxLDEwMywwLDAsMTI0LDQsMCw5NSwKLSAgICAxMSwwLDExMywzNSwxLDExMyw0NywxLDExMCw5LDAsMTI0LDMsMCwxMjQsNCwKLSAgICAwLDk1LDExLDAsMTI0LDQsMCwxMDYsMTEsMCwxMDMsMCwwLDEwNywyLDAsCi0gICAgMTE0LDEwNiwxLDEyNCwxLDAsMTE0LDEwNiwxLDExNiwxMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMDAsNywwLDI1LDEyNSw4LDAsMTI0LDQsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTMsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTA2LDEsMTEwLDAsMCwxMjQsCi0gICAgNCwwLDgzLDQxLDgsOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKLSAgICAzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCwKLSAgICA5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsCi0gICAgMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsCi0gICAgMTA4LDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LAotICAgIDEyMSwzMiwxMTIsOTcsMTE2LDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LAotICAgIDExNywxMDIsMTAyLDEwNSw5OSwxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywKLSAgICAxMDQsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksCi0gICAgMTA1LDExNSwxMDEsMzIsMTE3LDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LAotICAgIDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwKLSAgICAxMjEsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwKLSAgICAxMTksMTEwLDYyLDExNCwyMzksMCwwLDAsMTE0LDIxOCwwLDAsMCw4NCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw4NCwwLDAsMCw0MSwxNCwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDIzOSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwyMTcsMCwwLDAsMTE0LDIyMiwKLSAgICAwLDAsMCwyMTgsMjcsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAotICAgIDExNCwyMzEsMCwwLDAsMTE0LDIzMiwwLDAsMCwxMTQsMTcwLDAsMCwwLDIxOCwKLSAgICA5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwyMjAsMCwwLDAsMTE0LAotICAgIDIyMSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDIyNCwwLDAsMCw0MSw5LAotICAgIDExNCw2NywwLDAsMCwyMTgsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsCi0gICAgMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDE3OCwwLDAsMCwyMTgsMTIsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwxMTQsMTI2LDAsMCwKLSAgICAwLDExNCwyMjAsMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LDEwMSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjQwLAotICAgIDAsMCwwLDExNiwzLDAsMCwxMTUsNjAsMCwwLDAsMCwxMiwxMiw0LAotICAgIDYsMSwxNSwyLDMsMSwxOSwxLDEzLDEsMTEsOCwyMSwxLDksMywKLSAgICAxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSw4LDIsNywzLDEyLDIsCi0gICAgMTUsMSwzLDEsMTksMSwxMywxLDUsMiw2LDEsMTgsMiw5LDEsCi0gICAgMTUsMSw2LDEsMTYsMSwyMiwyLDExNCwyNDAsMCwwLDAsOTksMywwLAorICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAorICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCisgICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKKyAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAorICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKKyAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKKyAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCisgICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCisgICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCisgICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKKyAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCisgICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAorICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCisgICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKKyAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCisgICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKKyAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAorICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAorICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKKyAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCisgICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAorICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKKyAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKKyAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCisgICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCisgICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKKyAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAorICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAorICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAorICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCisgICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAorICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKKyAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAorICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKKyAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMSwKKyAgICAxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxNjMsMSwwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsCisgICAgMSw3OCw0MSwxLDExNCwxMTEsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDExNywwLDAsMCwxNzEsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDEsCisgICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCw5OCwxMTEsMTExLDEwOCwKKyAgICAxMTQsMTExLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCw1LDExOCw5NywKKyAgICAxMDgsMTE3LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsMTE3LDAsMCwwLDE3NSwxLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDIsNDEsMTIsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCisgICAgMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw1MiwwLAorICAgIDAsMCwxMTQsMTE4LDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDExNiwKKyAgICAxMjEsMTE0LDExNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsMTIzLAorICAgIDAsMCwwLDExNCwxMTcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDYsMCwwLAorICAgIDAsNzksMSwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwxLAorICAgIDE1LDExLDEyLDEwLDEyLDEyLDE4LDksMjEsNCwxOCw4LDE4LDQsMTE0LDEwNiwKKyAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsOTksMiwwLAorICAgIDAsMCwyLDAsMCwwLDYsMCwwLDAsMTUsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDIxNywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDExNCwxMTAsMCwxMTYsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsCisgICAgMzMsMCwxMTYsMiwwLDEzMCwxLDAsMTE2LDEsMCwxMDYsMywwLDEyNSw0LAorICAgIDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDcwLDAsMTI0LDQsMCwKKyAgICAxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMSwxLDgzLDEyNCwzLDAsCisgICAgMTE0LDgyLDAsMTAzLDAsMCwxMTAsMywwLDEwMCwyLDAsMTI1LDUsMCwxMjQsCisgICAgNCwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEwMCw0LDAsMTI0LDUsCisgICAgMCwxMzEsMSwyLDgzLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxOTIsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMzEsMiwwLDExNCwxODYsMCwKKyAgICAxMjEsMTksMCwxMjQsMSwwLDEwNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKKyAgICAzLDAsODcsMTEzLDE5MiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTgyLDAsCisgICAgMSwxLDEsMTAwLDIsMCwxMjUsMywwLDg5LDExMywxOTIsMCw4OCwxMTAsNiwKKyAgICAwLDEwMCw2LDAsMTI1LDMsMCwxMTYsNiwwLDEyNCwwLDAsMTI0LDEsMCwKKyAgICAxMDAsNywwLDEyNCwyLDAsMTAwLDUsMCwxMjQsMywwLDEzMSwyLDIsODMsCisgICAgNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsCisgICAgMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLAorICAgIDAsMCwxMTQsMTA5LDAsMCwwLDcwLDExNCwxMDcsMCwwLDAsNDEsNywxMTQsCisgICAgNCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsMjE4LDIzLAorICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwOSwwLDAsMCwxMTQsNzcsMCwwLAorICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw2LDExNCwxNSwwLDAsMCwxMTQsOTksMCwKKyAgICAwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjgsMCwwLAorICAgIDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg1LDAsMCwwLDE4MCwxLDAsCisgICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTIsMSw2LDEsOSwyLAorICAgIDEyLDEsMTYsMSwxOCwxLDE1LDEsNywyLDEyLDEsMTUsMSwzLDEsCisgICAgMTksMSwxMywxLDE0LDMsNiwyLDExNCw4NSwwLDAsMCw5OSwzLDAsCiAgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTI0LDEsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAwLDAsMTE1LDExOCwxLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiwwLDAsCiAgICAgMTI1LDMsMCw4NywxMTAsMTgsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDMzLAogICAgIDAsMSwxLDEsODksMTEwLDE3LDAsODgsMTI0LDMsMCwxMDAsMCwwLDEwNywKICAgICA5LDAsMTE0LDUwLDAsMTI0LDMsMCw4MywxMjQsMCwwLDEwNiwyLDAsMTI1LAotICAgIDQsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTA4LDAsMTIxLDEzLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNSwxLDAsODcsMTEzLDEwOCwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEzLDEwOCwwLDg4LAotICAgIDExMCwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSw1LDAsODcsCi0gICAgMTEwLDI0LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxNDcsMCwxLDEsMSwKLSAgICAxMDAsMCwwLDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjI0LDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsCi0gICAgMTE0LDIxNSwwLDEyMSwxMywwLDEyNCwxLDAsMTA2LDUsMCwxMjUsMiwwLDg3LAotICAgIDExMywyMjEsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDIxMSwwLDEsMSwxLAotICAgIDEwMCwwLDAsMTI1LDIsMCw4OSwxMTMsMjIxLDAsODgsMTEzLDIyNCwwLDEyNCw1LAotICAgIDAsMTI1LDIsMCwxMTAsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDYsMCwKLSAgICAxMjUsNiwwLDg3LDExMCwyNCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsNywKLSAgICAxLDEsMSwxLDEwMCwwLDAsMTI1LDYsMCw4OSwxMTAsMSwwLDg4LDEyMSwKLSAgICAxOSwwLDExNiw3LDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCw4NywxMTAsMjQsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDUzLDEsMSwKLSAgICAxLDEsMTAwLDAsMCwxMjUsNywwLDg5LDExMCwxLDAsODgsMTE2LDksMCwKLSAgICAxMjQsNCwwLDEyNCwxLDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDEsMTI1LAotICAgIDMsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsOTMsMSwxMDAsMiwKLSAgICAwLDExMCwzLDAsMTAwLDMsMCwxMjQsMywwLDk1LDEwLDAsMTI0LDYsMCwKLSAgICAxMjQsMywwLDk1LDExLDAsMTI0LDcsMCwxMjQsMywwLDk1LDEyLDAsMTI0LAotICAgIDMsMCw4Myw0MSw0LDc4LDExNCwyMTgsMCwwLDAsNzAsODQsNDEsMTMsMTE0LAotICAgIDIwOSwwLDAsMCwxMTQsMjEwLDAsMCwwLDExNCw1NywwLDAsMCwxMTQsMjA1LAotICAgIDAsMCwwLDExNCwyMTEsMCwwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3MywKLSAgICA3OCwyMTgsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LAotICAgIDEwNSwxMTUsMTE2LDIxOCw4LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwyMTcsMCwKLSAgICAwLDAsMTE0LDIyMiwwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLAotICAgIDAsNDEsOCwxMTQsMTgwLDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIxOCwwLAotICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMjQzLDAsMCwKLSAgICAwLDExNCwyMjYsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsCi0gICAgOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE4MCwzLDAsCi0gICAgMCwxMTUsNzIsMCwwLDAsMCwyLDMsMSwxMywxLDEzLDEsNSwyLAotICAgIDEyLDEsNCwyLDksMSwxMiwxLDMsMSwxMywxLDEzLDIsOCwxLAotICAgIDMsMSwxMywxLDEzLDEsMTEsMSwxMiwxLDEyLDEsMywxLDEzLDEsCi0gICAgMTMsMSwxNCwyLDksMSwzLDEsMTMsMSwxMywxLDExLDEsMywxLAotICAgIDE5LDEsMTMsMSwxMSwyLDIxLDEsMjcsMSw5LDEsOSwxLDExNCwyNDgsCi0gICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNiwwLDAsMCw2NCwwLDAsMCwxMTUsMTQyLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LAotICAgIDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEwMCw4LDAsCi0gICAgMTAwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwyLDkwLDYsMCwxMDAsCi0gICAgMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTQsMCwxMDAsMTUsCi0gICAgMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLAotICAgIDkwLDksMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwwLDkwLDEwLDAsMTAwLAotICAgIDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwyMiwwLDEwMCwyMywKLSAgICAwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMjQsMCw4Myw0MSwyNSwxMTQsMTc1LDAsCi0gICAgMCwwLDEyMiw3Nyw2NywxMTEsMTEwLDExOCwxMDEsMTEwLDEwNSwxMDEsMTEwLDk5LDEwMSwzMiwKLSAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwzMiw5NywxMTQsMTExLDExNywxMTAsMTAwLDMyLDExNSwKLSAgICAxMTIsMTAxLDk5LDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsMzIsMTE2LDExMSwzMiwxMTIsCi0gICAgMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMzIsMTE1LDExMiwxMDEsOTksNDUsMTE1LDExMiwxMDEsOTksCi0gICAgMTA1LDEwMiwxMDUsOTksMTAsMzIsMzIsMzIsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LAotICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsCi0gICAgMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMTE0LDE3OCwwLAotICAgIDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MiwwLAotICAgIDAsMCwyMzIsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMSw5NSwKLSAgICA4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk1LDk1LDEwNSwxMTAsCi0gICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMzAsMCwxMDAsMiwwLDExMCw2LDAsMTI0LDEsMCwxMDYsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTA0LDAsMTI0LDEsMCwxMDYsMywwLDEwMCwxLDAsMTA3LDgsMCwKLSAgICAxMTQsODIsMCwxMDAsMywwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDgzLAotICAgIDEwMCw0LDAsMTA2LDQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsCi0gICAgMiwwLDgzLDExMCw1MCwwLDEyNCwxLDAsMTA2LDUsMCwxMTQsMTMyLDAsMTAwLAotICAgIDUsMCwxMDYsNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsMiwwLDEzMSwyLAotICAgIDAsODMsMTAwLDYsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDEwNiwyLDAsMTMxLDIsMCw4MywxMDAsMSwwLDgzLDQxLDcsMTIyLDM4LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLAotICAgIDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDIwNywwLDAsMCwxMjIsMTMsNjAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLAotICAgIDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsNDEsNjIsNDEsNiwKLSAgICAxMTQsMTc4LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwKLSAgICAxNzAsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwyMjcsMCwwLDAsNDEsMywKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwNiwKLSAgICAwLDAsMCwyMzUsMywwLDAsMTE1LDE4LDAsMCwwLDAsMyw5LDEsCi0gICAgMzAsMSwxNSwxLDE1LDEsMTMsMiwyMiwyLDksMSwxOSwyLDEyMiwyNCwKLSAgICA5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyMTgsOSw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LAotICAgIDEwNSwxMDAsMTAxLDcwLDIxOCwxMSw5NSwxMDIsMTExLDExNCw5OSwxMDEsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsODQsOTksMiwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNTksCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDc1LDIsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjUsNCwwLDEyNCwyLDAsMTE1LDQ1LDAsMTI0LDMsMCwxMTUsNDUsCi0gICAgMCwxMTYsMSwwLDEyNCwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwzLDAsCi0gICAgMTAwLDIsMCwxMDcsOCwwLDExNCw4NSwwLDEyMSwxNiwwLDEyNCw0LDAsMTA2LAotICAgIDIsMCwxMjQsMSwwLDk1LDMsMCw4NywxMTMsODUsMCw0LDExNiw0LDAsCi0gICAgMTA3LDEwLDAsMTE0LDgxLDAsMSwxLDEsODksMTEzLDg1LDAsODgsMTEwLDAsCi0gICAgMCwxMjQsMiwwLDExNSwxMTUsMCwxMTYsMSwwLDEyNCwxLDAsMTAwLDMsMCwKLSAgICAxMDAsMiwwLDEzMSwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwyMjEsMCwxMjQsCi0gICAgNCwwLDEwNiw1LDAsMTI1LDUsMCwxMjQsNSwwLDEwMCwyLDAsMTA3LDgsCi0gICAgMCwxMTQsMTg0LDAsMTI0LDQsMCwxMDYsNiwwLDEwMCwyLDAsMTA3LDksMCwKLSAgICAxMTQsMTg0LDAsMTE2LDcsMCwxMDYsOCwwLDExNiw3LDAsMTMxLDEsMCwxMjUsCi0gICAgNSwwLDEyNCw0LDAsMTA2LDYsMCwxMjQsNSwwLDk1LDksMCwxMTMsMTg0LAotICAgIDAsMTEwLDAsMCwxMjEsMTMsMCwxMjQsNSwwLDEyNCwxLDAsOTUsMTAsMCwKLSAgICA4NywxMTMsMjIxLDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwyMTcsMCwxLDEsCi0gICAgMSw4OSwxMTMsMjIxLDAsODgsMTEwLDAsMCwxMjQsMiwwLDExNSwyNTEsMCwxMTYsCi0gICAgMSwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMiwwLDEzMSwzLDAsMTAwLDIsCi0gICAgMCwxMDcsOCwwLDExNCwzNSwxLDEyMSwxNiwwLDEyNCw0LDAsMTA2LDExLDAsCi0gICAgMTI0LDEsMCw5NSwxMiwwLDg3LDExMywzNSwxLDQsMTE2LDQsMCwxMDcsMTAsCi0gICAgMCwxMTQsMzEsMSwxLDEsMSw4OSwxMTMsMzUsMSw4OCwxMTAsMCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTI0LDEsMCw5NSwxMywwLDg3LDExMCwxOCwwLDQsCi0gICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsNjgsMSwxLDEsMSw4OSwxMTAsMSwwLAotICAgIDg4LDEyNCwyLDAsMTE1LDk5LDEsMTE2LDEsMCwxMjQsMSwwLDEwMCw1LDAsCi0gICAgMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTU3LDEsMTI0LAotICAgIDQsMCwxMDYsNiwwLDEwMCwyLDAsMTA3LDksMCwxMTQsMTU3LDEsMTIxLDE2LAotICAgIDAsMTI0LDQsMCwxMDYsNiwwLDEyNCwxLDAsOTUsMTQsMCw4NywxMTMsMTU0LAotICAgIDEsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxNTAsMSwxLDEsMSw4OSwxMTMsCi0gICAgMTU0LDEsODgsMTEzLDE1NywxLDExMCwwLDAsMTI0LDQsMCwxMDYsMTUsMCwxMTQsCi0gICAgNzEsMiwxMjQsMiwwLDExNSwxOTYsMSwxMTYsMSwwLDEyNCwxLDAsMTAwLDYsCi0gICAgMCwxMDAsMiwwLDEzMSwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwyMzYsMSwKLSAgICAxMjEsMTYsMCwxMjQsNCwwLDEwNiwxNiwwLDEyNCwxLDAsOTUsMTcsMCw4NywKLSAgICAxMTMsMjM2LDEsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwyMzIsMSwxLDEsMSwKLSAgICA4OSwxMTMsMjM2LDEsODgsMTEwLDAsMCwxMjQsMiwwLDExNSwxMCwyLDExNiwxLAotICAgIDAsMTI0LDEsMCwxMDAsNywwLDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLAotICAgIDEwNyw4LDAsMTE0LDcxLDIsMTI0LDQsMCwxMDYsMTgsMCwxMDAsMiwwLDEwNywKLSAgICA5LDAsMTE0LDY4LDIsMTIxLDE2LDAsMTI0LDQsMCwxMDYsMTgsMCwxMjQsMSwKLSAgICAwLDk1LDE5LDAsODcsMTEzLDY1LDIsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwKLSAgICA2MSwyLDEsMSwxLDg5LDExMyw2NSwyLDg4LDExMyw2OCwyLDExMyw3MSwyLAotICAgIDExMCwwLDAsMTAwLDIsMCw4Myw0MSw4LDk3LDI5LDIsMCwwLDgzLDEwMSwKLSAgICAxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDk3LAotICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDUsMTE0LDEwMSwxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwKLSAgICAzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDQ2LDMyLDMyLDcyLAotICAgIDEwMSwxMTQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTA0LAotICAgIDExMSwxMTksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE2LDExNiwxMTQsCi0gICAgMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDksOTcsMTEyLDMyLDExMSwxMTAsMTE2LDExMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1OCwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMTAsOTcsMTA5LDEwMSwzMiw0NSwKLSAgICA2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKLSAgICA5NSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMDgsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDQ1LDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LAotICAgIDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiw0NSwKLSAgICA2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsCi0gICAgOTksMzIsNDUsNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzksMTEyLAotICAgIDExNiwxMDUsMTExLDExMCw5NywxMDgsNTgsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksNDYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzIsNDUsNjIsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDMyLDQwLAotICAgIDEwNSwxMDIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDk3LDExNiwxMTYsMTE0LDMyLDEwNSwxMTUsMzIsMTE2LDExNCwxMTcsMTAxLDQxLDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDMyLDQ1LDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsMTAwLDk1LDk1LDMyLDQwLDEwNSwxMDIsMzIsOTUsOTUsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDk1LDk1LDMyLDk3LDEwOCwxMTUsMTExLDMyLDExNSwxMDEsMTE2LDQxLDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExNSwxMTcsOTgsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDExNSwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwKLSAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw0MCwxMDUsMTAyLDMyLDExNSwxMDEsMTE2LAotICAgIDQxLDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw1NywwLDAsMCwKLSAgICA3OCwxMTQsMjA1LDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsOTUsOTUsMTE0LDI0NywwLDAsMCwxMTQsMjExLDAsMCwwLDExNCwyNDUsMCwKLSAgICAwLDAsNDEsMjAsMTE0LDE3OCwwLDAsMCwxMTQsNjIsMCwwLDAsMTE0LDY3LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCwxMTQsMjEwLDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDIyMSwwLDAsMCwyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDcsOTUsOTUsMTEwLDEwMSwxMTksCi0gICAgOTUsOTUsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIwNSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsMjQ3LDAsCi0gICAgMCwwLDExNCwyMjcsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjExLDAsMCwKLSAgICAwLDExNCwyMjYsMCwwLDAsMTE0LDI0NSwwLDAsMCw0MSw2LDExNCw3MSwwLAotICAgIDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDI1MCwwLDAsCi0gICAgMCwxMTQsMTc4LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsMjUxLDMsMCwKLSAgICAwLDExNSw4OCwwLDAsMCwwLDE3LDksNiwxMiwxLDI0LDEsMywxLAotICAgIDE2LDEsMTMsMSw4LDMsMzAsMSw5LDEsMTIsMiwxNSwxLDE1LDEsCi0gICAgMTgsMSwzLDEsMTMsMSwxMywxLDgsMywzMCwxLDMsMSwxNiwxLAotICAgIDEzLDEsOCwzLDMsMSwxMywxLDEzLDEsNSwzLDMwLDEsMTUsMSwKLSAgICAzLDEsMTYsMSwxMywxLDExLDIsOSwyLDMwLDEsMywxLDE2LDEsCi0gICAgMTMsMSw4LDMsMzAsMSwxNSwxLDMsMSwxNiwxLDEzLDEsMTIyLDMwLAotICAgIDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMDEsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLAotICAgIDAsMTE2LDEsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDEsMCwxMzEsMiwwLAotICAgIDExNCw0OCwwLDEyNCwxLDAsMTA2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDExMCw2LDAsMTAwLDIsMCwxMjUsMiwwLDEyNCwyLAotICAgIDAsMTAwLDIsMCwxMDcsOCwwLDExNCw4NCwwLDExNiw0LDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEzMSwxLDAsMTI1LDIsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDYsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMjQsMiwwLDgzLDQxLDMsMTIyLAotICAgIDE1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwxMDEsMTE5LDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NSwxMTQsMTAxLDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LAotICAgIDMyLDk3LDExNCwxMDEsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTE1LDEwMSwxMTYsMzIsMTE5LDEwNSwKLSAgICAxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LAotICAgIDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwKLSAgICAxMTUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDIxOCwxMyw5OSwxMTQsMTAxLDk3LAotICAgIDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsNywxMTQsMTc4LDAsMCwKLSAgICAwLDExNCw2MCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwwLDEsMCwwLAotICAgIDExNCw2OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDI1NSwwLDAsMCw0MSwKLSAgICAzLDExNCw3MSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAotICAgIDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDc1LDQsMCwwLDExNSwxNiwwLDAsMCwKLSAgICAwLDcsOSwyLDE4LDMsMjEsMiw2LDEsMTIsNCwxOCwxLDEzLDEsCi0gICAgMTIyLDE5LDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTksCi0gICAgMTE0LDEwMSw5NywxMTYsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwxODksNjgsMTExLDMyLDEwMSwxMTgsMTAxLAotICAgIDExNCwxMjEsMTE2LDEwNCwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDk5LDEwMSwxMTUsMTE1LDk3LDExNCwKLSAgICAxMjEsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLAotICAgIDExMSwxMDIsMzIsOTYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTcsCi0gICAgMTE1LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNiw5NywxMTQsMTAzLDEwMSwKLSAgICAxMTYsMzIsMTExLDEwMiwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDM5LDExNSwzMiw5NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw0MCw0MSw5NiwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLDExNCwxNzgsMCwwLDAsMTE0LAotICAgIDE3MCwwLDAsMCwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNSw5NSwxMDEsCi0gICAgMTIwLDEwMSw5OSw5OCw0LDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDE4LAotICAgIDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTUsMTAxLDEyMCwKLSAgICAxMDEsOTksOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMTEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE3LDEsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMDYsMSwwLDEyNSwyLDAsMTE2LDIsMCwxMDYsMywwLDEzMSwwLAotICAgIDAsMSwxMTYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxNDMsMjI2LDAsMSwxMTYsCi0gICAgNSwwLDEwNiw2LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDEsCi0gICAgMCwxMDcsOSwwLDExNCw5NSwwLDEwMCwxLDAsMTA2LDgsMCwxMjQsMiwwLAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMTYsOSwwLDEyNCwzLDAsMTAwLDIsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDYsMTAsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE4MSwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMDYsMTEsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE1OCwwLDExNiwKLSAgICA5LDAsMTAwLDQsMCwxMDAsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDEyLDAsCi0gICAgMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDEsMSwxLDEyNCwxLDAsCi0gICAgODMsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDEwMCw1LDAsMTAwLDYsMCwKLSAgICAxMzEsMSwxLDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxMCwwLAotICAgIDEwMCw3LDAsMTMxLDIsMCwxMTUsMjQzLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwKLSAgICAxMCwwLDEwNiwxNCwwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxMywwLDEyNCwKLSAgICAwLDAsMTA2LDE1LDAsMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDMsMCwKLSAgICA4MSw4OCwxMTYsNSwwLDEwNiw2LDAsMTI0LDIsMCwyNSw4Myw0MSw4LDEyMiwKLSAgICA1MSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDMyLDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTA1LDExMCwxMDMsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwxMTQsNjcsMCwwLDAsNzgsMTIyLDE0LDEwOSwxMDUsMTE1LDExNSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwyNDksMCwwLDAsODQsCi0gICAgMTE0LDIsMSwwLDAsNDEsMTYsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCwyMTgsMTIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKLSAgICAxMDgsMTExLDk5LDEwNywxMTQsMTAzLDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywKLSAgICAwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwxNTQsMCwKLSAgICAwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwyNTUsMCwwLAotICAgIDAsMTE0LDYwLDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMywxLDAsMCw0MSw0LDExNCw3MSwwLDAsMCwxMTQsCi0gICAgMTgwLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTcyLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNzYsMCwKLSAgICAwLDAsMTA4LDQsMCwwLDExNSwzMiwwLDAsMCwwLDIsMTIsMSwxMCwKLSAgICAxLDEzLDEsMjQsMSwxNSwxLDIxLDEsMTgsMSwxOCwxLDI3LDIsMTksCi0gICAgMSw0LDEsMTksMSwyMSw0LDIyLDIsMTksMSwxMjIsMTcsOTUsODMsMTEyLAotICAgIDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMjQsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDYsMywwLAotICAgIDEzMSwxLDAsMSwxMTYsNCwwLDEwNiw1LDAsMTI0LDEsMCwxMDYsMywwLAotICAgIDI1LDEyNSwyLDAsMTE2LDYsMCwxMjQsMiwwLDEwMCwxLDAsMTAwLDAsMCwKLSAgICAxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTA4LDAsMTIxLDE2LDAsMTI0LAotICAgIDEsMCwxMDYsMSwwLDEyNCwyLDAsOTUsNywwLDg3LDExMywxMDgsMCw0LAotICAgIDExNiw4LDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMywxMDgsMCwKLSAgICA4OCwxMTAsMCwwLDExNiw2LDAsMTI0LDIsMCwxMDAsMiwwLDEwMCwwLDAsCi0gICAgMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIxNSwwLDEyMSw1OSwwLDEyNCwKLSAgICAyLDAsMTA2LDksMCwxMjQsMiwwLDk1LDEwLDAsMTE2LDExLDAsMTI0LDIsCi0gICAgMCwxMDAsMywwLDEzMSwyLDAsMTE1LDE5MCwwLDEyNCwxLDAsMTA2LDMsMCwKLSAgICAxMDYsMTIsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLDUsMCwyNSwxMjQsMiwwLAotICAgIDk1LDEwLDAsMTEwLDAsMCw4NywxMTMsMjE1LDAsNCwxMTYsOCwwLDEwNywxMCwKLSAgICAwLDExNCwyMTEsMCwxLDEsMSw4OSwxMTMsMjE1LDAsODgsMTEwLDAsMCwxMTYsCi0gICAgNiwwLDEyNCwyLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMCwxLDEyMSwxMywwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICA5NSwxMywwLDg3LDExMywyMCwxLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMTYsCi0gICAgMSwxLDEsMSw4OSwxMTMsMjAsMSw4OCwxMTAsMCwwLDEyNCwyLDAsODMsCi0gICAgNDEsNyw3OCwxMTQsMjA1LDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDI0NywwLAotICAgIDAsMCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsMjA5LDAsMCwKLSAgICAwLDQxLDE0LDExNCwxNzgsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsNSwxLAotICAgIDAsMCwxMTQsNjcsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDczLDAsMCwKLSAgICAwLDExNCw2MiwwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCwyMTAsMCwwLDAsCi0gICAgMTE0LDU3LDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzMiwwLDAsMCwxMTQsMjA5LDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxNzgsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjUsOTUsMTA4LDExMSw5NywxMDAsCi0gICAgOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksMTEyLDk3LDExNiwKLSAgICAxMDUsOTgsMTA4LDEwMSwxMzIsNCwwLDAsMTE1LDQyLDAsMCwwLDAsNCw5LAotICAgIDEsMTksMiwxNiwxLDI0LDEsMywxLDE2LDEsMTMsMSw4LDEsMjQsCi0gICAgMSwzLDQsMTIsMSwxNSwxLDMyLDEsMTMsMSw4LDEsMjQsMSwzLAotICAgIDEsMTMsMSwxMywxLDgsMSwxMjIsMzgsOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSwxMDgsMTExLDk3LDEwMCw5NSw5OCw5Nyw5OSwxMDcsCi0gICAgMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwxMTIsOTcsMTE2LDEwNSw5OCwxMDgsMTAxLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNzksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw1MiwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMiwwLDExNSw1MiwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMCwwLDgzLDExMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsNCwwLDEzMSwwLDAsMTI1LDEsMCwxMTYsNSwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxNDMsODQsMCwxLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMTQzLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw2LAotICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxNTYsMCwxMTYsNywwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMzEsMSwxLDEzMCwKLSAgICAxLDAsMTEzLDE1NiwwLDExMCwxMywwLDEyNCwwLDAsMTA2LDksMCwxMjQsMSwKLSAgICAwLDEzMSwxLDAsMSw4NywxMDAsMCwwLDgxLDg4LDExNiwxMCwwLDEwNiwxMSwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDYsOCwwLDI1LDgzLDQxLDQsNzgsMTE0LAotICAgIDIsMSwwLDAsMTIyLDE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDExNCw2NywwLDAsMCw0MSwxMiwxMTQsMTc4LDAsMCwwLAotICAgIDExNCwxNzAsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCw2LDEsMCwwLDExNCwKLSAgICAxLDEsMCwwLDExNCwyMTMsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMTU0LAotICAgIDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMywxLDAsMCwxMTQsNywwLAotICAgIDAsMCwxMTQsNzMsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE4MCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywKLSAgICAxMDEsMTAwLDE2Miw0LDAsMCwxMTUsMjAsMCwwLDAsMCwyLDE4LDIsMjEsCi0gICAgMSwxMywyLDEyLDEsMTMsMSwxOCwxLDE4LDEsMzAsMywxOSw1LDEyMiwKLSAgICAyNyw5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk1LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCw4LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLAotICAgIDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTMxLDEsMCwxNDMsCi0gICAgMTUsMCwxLDEyNCwwLDAsMTA2LDUsMCwxMzEsMCwwLDgzLDg3LDEwMCwxLAotICAgIDAsODEsODgsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMDcsODIsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsCi0gICAgOTgsMTA2LDEwMSw5OSwxMTYsNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiw5OCwxMjEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDEwMCwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLAotICAgIDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExNCwxMDEsCi0gICAgOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNSw0NCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDEwNSwxMTAsCi0gICAgMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSw2LDExNCwxMDYsMCwKLSAgICAwLDAsMTE0LDQsMSwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTc4LDAsMCwKLSAgICAwLDExNCw2NywwLDAsMCwxMTQsNywxLDAsMCw0MSwxLDExNCw3MSwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsMTc3LDAsMCwwLDE4NSw0LDAsMCwxMTUsNiwwLDAsMCwwLAotICAgIDksMTAsMSwxOSwxLDEyMiwxNyw5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LAotICAgIDExMSwxMDAsMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDc4LDQxLDEzLDExNCw1NywwLDAsMCwKLSAgICAxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsCi0gICAgNzIsMCwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMjU1LDAsMCwwLDExNCwxLAotICAgIDEsMCwwLDExNCwzLDEsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDYsMSwKLSAgICAwLDAsMTE0LDcsMSwwLDAsMTE0LDE3NywwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTc1LDAsMCwwLDIyNSwzLDAsMCwxMTUsMjAsMCwwLDAsMTIsMywKLSAgICA2LDQsMTIsMywxMiwxNiwyNCw4MCwxMiwyMywxMiwxMCwxMiwyNCwxMiwzMCwKLSAgICAxMiwyMywxMTQsMTc1LDAsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCwKLSAgICA2LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwyMDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsNCwwLAotICAgIDEyNCwwLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDUsMCwxMjQsCi0gICAgNCwwLDExNSwxMDIsMCwxMjQsNSwwLDExNCw1NCwwLDEyNCw1LDAsMTA2LDEsCi0gICAgMCwxMjUsNCwwLDExMywxMDIsMCwxMjQsMiwwLDEyNCwzLDAsMTA3LDIsMCwKLSAgICAxMTQsODQsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwKLSAgICA0LDAsMTEzLDEwMiwwLDExNiwzLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLAotICAgIDAsMTI1LDQsMCwxMTAsMCwwLDEyNCw1LDAsMTE1LDEzMiwwLDExNiw0LDAsCi0gICAgMTI0LDEsMCwxMjQsMiwwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwxLDEyNSwKLSAgICA1LDAsMTEwLDAsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLDAsMTAwLDIsCi0gICAgMCw2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsMiwwLDEyNCwKLSAgICAwLDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLDUsMCw2MCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5NiwwLDEsMSwKLSAgICAxLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LDExNCwyMDUsMCwKLSAgICAwLDAsMTE0LDIwOSwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMTEsMCwwLAotICAgIDAsMTE0LDI0NSwwLDAsMCw0MSw2LDExNCw5MywwLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwyMTgsMTYsODMsMTExLDExNywxMTQsOTksMTAxLAotICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMjQwLDAsMCwwLDExNCwKLSAgICAyMDgsMCwwLDAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDY3LDAsMCwwLDkwLAotICAgIDgsMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsMTE2LDEwNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTQsMTcwLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDk1LAotICAgIDEwMiwxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk5LDQsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxNSwxLDYsMSw2LDEsCi0gICAgMTIsMSwxMiwxLDE4LDIsMTgsMSw2LDEsMjQsMSwzLDEsMTAsMSwKLSAgICAxMCwxLDEwLDEsMTQsMSwxMywyLDExNCwxMCwxLDAsMCw5OSwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDY0LDAsCi0gICAgMCwwLDExNSwxODEsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKLSAgICA5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwwLDEwMCw0LAotICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDIsMCwxMzEsMSwwLAotICAgIDkwLDcsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwKLSAgICAxLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDYsMCwxMDEsOSwwLDEwMCw5LAotICAgIDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTAsMCwKLSAgICAxMDEsNiwwLDEwMSw5LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLDEwMSw5LDAsMTAwLDEzLAotICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwKLSAgICAxMDEsNiwwLDEwMSw5LDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsNCwwLDgzLDQxLDE3LDIxOCwxNSwKLSAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLAotICAgIDE0NCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LAotICAgIDEwNCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywKLSAgICAxMTYsMTA1LDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LAotICAgIDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLAotICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLAotICAgIDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LAotICAgIDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDEyMiwyNCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwKLSAgICAzMiw0MCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsNDEsMSwxMTQsMTgwLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDYsCi0gICAgMCwwLDAsMjMzLDQsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsCi0gICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw1OCwwLDAsMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgMTYsMCwxMDAsMCwwLDgzLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTE0LDUwLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEzMSwyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLAotICAgIDQxLDMsNzgsMTE0LDIxOCwwLDAsMCwxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCi0gICAgMTA1LDExMCw0MSwzLDExNCwxMDYsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsMTA1LDExMCwxMTQsMTc0LDAsMCwwLDQxLDQsMjE4LDMsOTksMTA4LAotICAgIDExNSwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LAotICAgIDEwMywxMDEsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyNDIsNCwwLAotICAgIDAsMTE1LDEwLDAsMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsCi0gICAgMTIyLDI1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNDEsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsCi0gICAgMTE0LDM3LDAsMTI0LDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwKLSAgICAxMjIsMTc1LDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiwKLSAgICA0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMSwxMTgsMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywKLSAgICAzMiwxMDIsOTcsMTA1LDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsCi0gICAgMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LAotICAgIDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzgsNDEsMiwxMTQsMTQsMSwwLDAsMTE0LDE3MCwwLDAsMCw0MSw0LAotICAgIDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMjUxLDQsMCwwLDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwKLSAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwzLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA1OSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxNDMsMjMsMCwKLSAgICAxLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDIsMCwKLSAgICAxMjUsMiwwLDg3LDEwMCwxLDAsODEsODgsMTI0LDAsMCwxMjQsMiwwLDk1LAotICAgIDQsMCwxMDAsMiwwLDEyNCwyLDAsOTUsNSwwLDEyNCwyLDAsODMsNDEsCi0gICAgMywxMjIsMjMsNzYsMTExLDk3LDEwMCwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCi0gICAgMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsMzAsMCwwLDAsCi0gICAgNDEsNiwxMTQsNjksMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTA2LDAsMCwKLSAgICAwLDkwLDEyLDEwNSwxMTAsMTA1LDExNiw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTQsCi0gICAgMjA1LDAsMCwwLDExNCwyNTEsMCwwLDAsNDEsMywxMTQsMTIsMSwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLDcsNSwKLSAgICAwLDAsMTE1LDEwLDAsMCwwLDAsNiwxMywxLDI0LDEsOSwxLDksCi0gICAgMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgNCwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDUsMCwxMjEsMTMsCisgICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwKKyAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMCwxLDAsODgsCisgICAgMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSw1LDAsODcsMTEwLDI0LDAsCisgICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxNDQsMCwxLDEsMSwxMDAsMCwwLAorICAgIDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDgsCisgICAgMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIxMiwwLAorICAgIDEyMSwxMywwLDEyNCwxLDAsMTA2LDUsMCwxMjUsMiwwLDg3LDExMywyMTgsMCwKKyAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDIwOCwwLDEsMSwxLDEwMCwwLDAsCisgICAgMTI1LDIsMCw4OSwxMTMsMjE4LDAsODgsMTEwLDYsMCwxMjQsNSwwLDEyNSwyLAorICAgIDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNiwwLDEyNSw2LDAsODcsMTEwLDI0LAorICAgIDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxLDEsMSwxLDEsMTAwLDAsCisgICAgMCwxMjUsNiwwLDg5LDExMCwxLDAsODgsMTIxLDE5LDAsMTE2LDcsMCwxMjQsCisgICAgMCwwLDEwNiw4LDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsCisgICAgMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDcsMSwxLDEsMSwxMDAsMCwwLDEyNSwKKyAgICA3LDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCw0LDAsMTI0LDEsMCwKKyAgICAxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMSwxMjUsMywwLDEyNCw1LDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCw4NywxLDEwMCwyLDAsMTEwLDMsMCwxMDAsMywKKyAgICAwLDEyNCwzLDAsOTUsMTAsMCwxMjQsNiwwLDEyNCwzLDAsOTUsMTEsMCwKKyAgICAxMjQsNywwLDEyNCwzLDAsOTUsMTIsMCwxMjQsMywwLDgzLDQxLDQsNzgsCisgICAgMTE0LDEwNywwLDAsMCw3MCw4NCw0MSwxMywxMTQsOTUsMCwwLDAsMTE0LDk2LAorICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTgsMCwKKyAgICAwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LDk1LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDYsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsNDEsOCwxMTQsODksMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDg4LDAsMCwKKyAgICAwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsOTksCisgICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIwOSwxLDAsMCwKKyAgICAxMTUsNzIsMCwwLDAsMCwyLDMsMSwxMywxLDEzLDEsNSwyLDEyLAorICAgIDEsNCwyLDksMSwxMiwxLDMsMSwxMywxLDEzLDIsNSwxLDMsCisgICAgMSwxMywxLDEzLDEsMTEsMSwxMiwxLDEyLDEsMywxLDEzLDEsMTMsCisgICAgMSwxNCwyLDYsMSwzLDEsMTMsMSwxMywxLDExLDEsMywxLDE5LAorICAgIDEsMTMsMSwxMSwyLDIxLDEsMjcsMSw5LDEsOSwxLDExNCwxMzIsMCwKKyAgICAwLDAsMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw3MCw5OSwyLDAsCisgICAgMCwwLDEsMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNTQsMiwwLDAsMTI0LDIsMCwxMTUsMzAsMCwxMTYsMCwwLAorICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw2NywwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKKyAgICAwLDk1LDIsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LAorICAgIDY2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NywwLAorICAgIDExNiwwLDAsMTI0LDEsMCwxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsCisgICAgMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMywKKyAgICAwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxODcsMCwxMjQsMCwwLAorICAgIDEwNiw1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxODcsMCwxMTYsNiwwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsMTUxLDAsMTE2LDcsMCwxMzAsMSwwLDExNiw2LAorICAgIDAsMTA2LDgsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDksMCwxMjQsNCwwLAorICAgIDEzMSwxLDAsMTI1LDMsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDMsMCw5NSwKKyAgICAxMCwwLDEyMSwxMywwLDEyNCwzLDAsMTI0LDEsMCw5NSwxMSwwLDg3LDExMCwKKyAgICAxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIwLDAsMSwxLDEsODksCisgICAgMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTEsMCwxMTYsMCwwLDEyNCwxLDAsCisgICAgMTAwLDMsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKKyAgICAzMiwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCw5NSwxMywKKyAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMzEsMSwxLAorICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKKyAgICA5NSwxNCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjUsCisgICAgMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk2LDEsMTE2LAorICAgIDAsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAorICAgIDAsMTA3LDgsMCwxMTQsMTQ4LDEsMTI0LDAsMCwxMDYsNSwwLDEwMCwwLDAsCisgICAgMTA3LDksMCwxMTQsMTQ4LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwKKyAgICAxLDAsOTUsMTUsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsCisgICAgMTE0LDE0NywxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDAsMCwxMDYsMTYsCisgICAgMCwxMTQsNTAsMiwxMjQsMiwwLDExNSwxODcsMSwxMTYsMCwwLDEyNCwxLDAsCisgICAgMTAwLDUsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKKyAgICAyMjQsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxNywwLDEyNCwxLDAsOTUsMTgsCisgICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMywxLDEsCisgICAgMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjU0LDEsMTE2LDAsMCwKKyAgICAxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAorICAgIDgsMCwxMTQsNTAsMiwxMjQsMCwwLDEwNiwxOSwwLDEwMCwwLDAsMTA3LDksCisgICAgMCwxMTQsNTAsMiwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxOSwwLDEyNCwxLDAsCisgICAgOTUsMjAsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ5LAorICAgIDIsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCisgICAgMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE0LDEzMSwwLDAsMCwxMTQsOTgsMCwwLAorICAgIDAsMTE0LDEyOSwwLDAsMCw0MSwyMSwxMTQsNiwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5OSwwLDAsCisgICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwKKyAgICAyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMjE4LDcsOTUsOTUsMTEwLDEwMSwxMTksOTUsOTUsOTAsNSw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTQsOTEsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTM0LDAsMCwKKyAgICAwLDExNCw5NSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwxMTcsMCwwLDAsCisgICAgMTE0LDEwNywwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCisgICAgMTI5LDAsMCwwLDQxLDUsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKKyAgICAxMTQsMTMzLDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwKKyAgICAxMTQsMTE1LDI1NCwxLDAsMCwxMTUsOTIsMCwwLDAsMCw0LDMwLDEsMywKKyAgICAxLDE2LDEsMTMsMSw1LDIsMzAsMSw5LDEsMTIsMiwxNSwxLDEyLAorICAgIDEsNiwxLDksMiwxNSwxLDEyLDEsMywxLDEzLDEsMTMsMSw1LAorICAgIDIsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzLDEsMTMsMSwxMywKKyAgICAxLDUsMiwzMCwxLDE1LDEsMywxLDE2LDEsMTMsMSw1LDIsOSwKKyAgICAxLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMzAsMSwxNSwxLDMsCisgICAgMSwxNiwxLDEzLDEsNSwxLDExNCwxMzcsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTI5LDAsMCwwLDEwMCwxLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDQ1LDAsMTI0LDAsCisgICAgMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsCisgICAgMTEwLDQwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDMsMCwxMzEsCisgICAgMiwwLDExNCw4NSwwLDExNiwzLDAsMTA2LDQsMCwxMDAsNCwwLDExNiw1LAorICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMjQsMSwwLDEwMCwxLAorICAgIDAsMTA3LDgsMCwxMTQsMTEyLDAsMTE2LDYsMCwxMjQsMCwwLDEwNiw3LDAsCisgICAgMTMxLDEsMCwxMjUsMSwwLDExNiw4LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKKyAgICAyLDAsMSwxMjQsMSwwLDgzLDQxLDcsMTIyLDQzLDY3LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMDAsCisgICAgMzIsMTE1LDExMiwxMDEsOTksNDYsNzgsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTIyLDg3LDExNSwxMTYsOTcsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDUsMTEwLAorICAgIDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsNTEsNDYsNTQsNDQsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMDEsMTIwLAorICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsCisgICAgMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDkwLDEwLDExNSwxMTYsCisgICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMjMzLDIsMCwwLDAsNDEsOSwxMTQsCisgICAgNCwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzOCwwLDAsMCwyMTgsOSwKKyAgICA5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LAorICAgIDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsOTcsMTE0LDExMCwKKyAgICAxMDUsMTEwLDEwMywxMTQsMTYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzcsMCwKKyAgICAwLDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksNTgsCisgICAgMiwwLDAsMTE1LDIwLDAsMCwwLDAsMyw2LDEsMTgsMywyMSwxLAorICAgIDE4LDEsOSwyLDEzLDEsMTIsMSwxNSwxLDEzLDEsMTE0LDE0NCwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMDAsMiwwLDExMCw2LDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwKKyAgICAxLDAsMTA3LDgsMCwxMTQsOTUsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDEsCisgICAgMCwxMDcsOCwwLDExNCw3MywwLDEwMCwzLDAsMTA2LDMsMCwxMjQsMSwwLAorICAgIDEzMSwxLDAsODMsMTAwLDQsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsMiwwLDEzMSwyLDAsODMsMTEwLDUwLDAsMTI0LDAsMCwxMDYsNCwwLAorICAgIDExNCwxMjMsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDIsMCw4MywxMDAsNiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDgzLDEwMCwxLDAsODMsCisgICAgNDEsNywxMjIsMzgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsOTMsMCwwLDAsCisgICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKKyAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCisgICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCwKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LAorICAgIDQxLDYyLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDk5LAorICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE3LDAsMCwwLDQxLDIsMTE0LAorICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTcsMCwwLDAsNzYsMiwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDAsMywzMCwxLDE1LDEsMTUsMSwxMywyLAorICAgIDIyLDIsOSwxLDE5LDIsMTE0LDk3LDAsMCwwLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwyNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCisgICAgMCwxMDYsMiwwLDEzMSwwLDAsMSwxMTYsMywwLDEyNCwyLDAsMTMxLDEsCisgICAgMCwxNDMsMjA4LDAsMSwxMTYsNCwwLDEwNiw1LDAsMTA2LDYsMCwxMjQsMiwKKyAgICAwLDEzMSwxLDAsMTI0LDEsMCwxMDcsOSwwLDExNCw4OSwwLDEwMCwxLDAsCisgICAgMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwKKyAgICAzLDAsMTAwLDIsMCwxMjQsMiwwLDEzMSwxLDEsMTMwLDEsMCwxMjQsMCwKKyAgICAwLDEwNiw5LDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNjMsMCwxMjQsMCwwLAorICAgIDEwNiwxMCwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTQwLDAsMTE2LDgsMCwxMDAsCisgICAgNCwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwxLDEsMTMwLDEsCisgICAgMCwxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLAorICAgIDEzMSwyLDEsMSwxMjQsMSwwLDgzLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsCisgICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDExNiwxMiwwLDEyNCwwLAorICAgIDAsMTA2LDksMCwxMDAsNywwLDEzMSwyLDAsMTE1LDIxOSwwLDEyNCwwLDAsCisgICAgMTA2LDksMCwxMDYsMTMsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTYsMCwKKyAgICAxMjQsMCwwLDEwNiw5LDAsMTA2LDE0LDAsMTI0LDEsMCwxMzEsMSwwLDEsCisgICAgODcsMTAwLDMsMCw4MSw4Miw4OCwxMTYsNCwwLDEwNiw1LDAsMTI0LDIsMCwKKyAgICAyNSw4Myw0MSw4LDEyMiw1MSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LAorICAgIDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsCisgICAgMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsNzgsMTIyLAorICAgIDE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKKyAgICAxMzMsMCwwLDAsODQsMTE0LDEzOSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDU3LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDExNCw1NCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAorICAgIDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDc3LDAsCisgICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMzcsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNCwxMzksMCwwLDAsNDEsNCwxMTQsODgsMCwwLDAsMTE0LAorICAgIDg5LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKKyAgICAwLDAsOTMsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw5LDEsMTAsCisgICAgMSwxMywxLDI0LDEsMTUsMSwxOCwxLDE1LDEsMTUsMSwyMSwyLDE5LAorICAgIDEsNCwxLDE5LDEsMTgsNCwxOSwyLDIzLDEsMTE0LDg2LDAsMCwwLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDI3LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzLDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEsMTE2LDMsMCwKKyAgICAxMDYsNCwwLDEyNCwwLDAsMTA2LDIsMCwyNSwxMjUsMSwwLDExNiw1LDAsCisgICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDk2LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAorICAgIDAsOTUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCisgICAgOTUsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiw1LDAsMTI0LDEsMCwKKyAgICAxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAorICAgIDE5NywwLDEyMSw1NiwwLDEyNCwxLDAsMTA2LDgsMCwxMjQsMSwwLDk1LDksCisgICAgMCwxMTYsMTAsMCwxMjQsMSwwLDEwMCwzLDAsMTMxLDIsMCwxMTUsMTc1LDAsCisgICAgMTI0LDAsMCwxMDYsMiwwLDEwNiwxMSwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsCisgICAgNSwwLDI1LDEyNCwxLDAsOTUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCisgICAgMCwxMDcsMTAsMCwxMTQsMTk2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsCisgICAgNSwwLDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCisgICAgMCwxMDcsOCwwLDExNCwyNTUsMCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgOTUsMTIsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDI1NCwKKyAgICAwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAorICAgIDExNCw5MSwwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LAorICAgIDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDEzLAorICAgIDExNCw5OSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsCisgICAgMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCw2LDAsMCwwLDExNCw5MSwKKyAgICAwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDEzNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw5NSwwLDAsCisgICAgMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LAorICAgIDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTE4LDIsMCwwLDExNSw0MCwwLDAsMCwKKyAgICAwLDQsMTksMiwxNiwxLDI0LDEsMywxLDE2LDEsMTMsMSw1LDEsCisgICAgMjQsMSwzLDQsMTIsMSwxNSwxLDI5LDEsMTMsMSw1LDEsMjQsMSwKKyAgICAzLDEsMTMsMSwxMywxLDUsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsCisgICAgMTA3LDksMCwxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsCisgICAgMSwwLDEzMSwyLDAsMTE1LDQzLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLAorICAgIDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTYsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxNDMsNzUsMCwxLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEyMiwwLDEyNCwwLDAsMTA2LDUsMCwKKyAgICAxMDAsMCwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiw2LDAsMTAwLDIsMCwxMDAsCisgICAgMywwLDEyNCwwLDAsMTA2LDcsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDE2LAorICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEsODcsMTAwLDAsMCw4MSw4Miw4OCwxMTYsOSwwLDEwNiwxMCwwLDEyNCwwLAorICAgIDAsMTA2LDcsMCwyNSw4Myw0MSw0LDc4LDExNCwxMzksMCwwLDAsMTIyLDE0LAorICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwxNSwKKyAgICAwLDAsMCw0MSwxMSwxMTQsOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDE0OCwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDExMCwKKyAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzksMCwKKyAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCw0MSwyLDExNCw4OCwKKyAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKKyAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNDcsMiwwLDAsMTE1LDIwLDAsMCwwLAorICAgIDAsMiwxNSwyLDE4LDEsMTAsMiwxMiwxLDEzLDEsMTUsMSwxNSwxLAorICAgIDI0LDMsMjMsNSwxMTQsMTQ5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTE2LDIsMCwKKyAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDEsMCwxNDMsMTUsMCwxLDExNiw0LDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiwxOTEsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsCisgICAgMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCisgICAgNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwMCwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwKKyAgICAxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgNzMsMTAyLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsCisgICAgMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsCisgICAgMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsCisgICAgMCwwLDExNCw1NCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE0OSwwLDAsCisgICAgMCw0MSwxLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsODcsMCwwLDAsMTcwLDIsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsOSwxMCwxLDE2LDEsMTE0LDg3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwNSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKKyAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LAorICAgIDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLAorICAgIDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCwKKyAgICA4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LAorICAgIDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNiwwLAorICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSwKKyAgICA2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxNSwwLAorICAgIDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAxLAorICAgIDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsMTAxLDE1LDAsMTMxLDEsMCwKKyAgICA5MCwxNiwwLDEwMCw0LDAsODMsNDEsMTksMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLAorICAgIDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLAorICAgIDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLAorICAgIDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDI0LDYwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDk4LDExNywxMDUsCisgICAgMTA4LDExNiw0NSwxMDUsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLAorICAgIDAsMCwwLDQxLDEsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5MiwwLDAsMCwxOTUsMiwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwwLDAsMCwKKyAgICA0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwKKyAgICAwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxNiwwLDEwMCwwLDAsCisgICAgODMsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTQsNTAsMCwKKyAgICAxMTYsMiwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLAorICAgIDIsMSw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LAorICAgIDAsMCwwLDEyMiw4LDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQxLDMsMTE0LAorICAgIDU3LDAsMCwwLDkwLDEwLDEwNSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCisgICAgMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDMsOTksMTA4LDExNSwxMTQsNzgsMCwwLAorICAgIDAsMjE4LDQsMTEyLDk3LDExNiwxMDQsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMjA0LDIsMCwwLDExNSwxMCwwLAorICAgIDAsMCwwLDIsMTIsMSw0LDEsMTUsMSwxOSwyLDEyMiwyNSw2NiwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwKKyAgICA0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwKKyAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwKKyAgICAzLDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDE3NSw3MCwxMDUsCisgICAgMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LAorICAgIDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsCisgICAgOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwKKyAgICAxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsCisgICAgMTE0LDE1NCwwLDAsMCwxMTQsOTksMCwwLDAsNDEsNCwxMTQsMTUxLDAsMCwKKyAgICAwLDExNCw3OCwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCw4OCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxMywyLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDksMTgsMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwKKyAgICAxMjQsMSwwLDEwNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEwNyw3LDAsMTE0LAorICAgIDUxLDAsMTE2LDMsMCwxMDAsMSwwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMCwKKyAgICAwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEwNiwwLDAsMTMxLDEsMSwKKyAgICAxMzAsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDYsNywwLDEyNCwxLDAsMTMxLAorICAgIDIsMCw4Myw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLAorICAgIDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LAorICAgIDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsCisgICAgNzYsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNjUsCisgICAgMCwwLDAsMTE0LDU3LDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICA5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDEzOCwwLDAsMCwyMjUsMiwwLDAsMTE1LDgsMCwwLAorICAgIDAsMCwzLDE4LDEsMjEsMSwxMiwxLDEyMiwyOSw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsCisgICAgMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsCisgICAgMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsCisgICAgMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiw5NywKKyAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA3OCw0MSwzLDExNCw2NSwwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTIsMTAxLAorICAgIDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSw0MSwyLDExNCwxOSwwLAorICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAorICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCisgICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAorICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAorICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NywKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDU2LAogICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LAogICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICAxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSwxOSw1LDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLAotICAgIDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKLSAgICA0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAotICAgIDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsODIsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsCi0gICAgMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwKLSAgICAxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDI1LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDUyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCi0gICAgNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsCi0gICAgMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCwxMTQsNCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMzEsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNiwKLSAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMTQsMTE0LDU3LDAsMCwKLSAgICAwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLAotICAgIDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDIwNiwKLSAgICAwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwKLSAgICA1LDEsMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTEsMSwwLDAsMjI0LDQsMCwwLAotICAgIDExNSwyOCwwLDAsMCwxMiw3LDYsMiwxOCw5LDMsMSwyMSw4LDMsCi0gICAgMSwxOCwxMSwzLDEsMjEsMTEsMywxLDIxLDUsMywxLDIxLDUsMywKLSAgICAxLDExNCwxMSwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCw1LDAsMCwwLDY0LDAsMCwwLDExNSwxOTMsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDUsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDQsMCwxMDAsNSwwLAotICAgIDEwMCw2LDAsMTMyLDIsMCwxMzEsMSwwLDkwLDcsMCwxMDEsNiwwLDEwMCwKLSAgICA0LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwxLDAsMTMxLDEsMCw5MCw4LAotICAgIDAsMTAxLDQsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw5LDAsMTAxLDYsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTAsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxMywwLDEwMCwxNCwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDYsMCwKLSAgICAxMDEsMTEsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE3LDAsMTAwLDE4LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDAsNCwwLAotICAgIDgzLDQxLDE5LDIxOCwxNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LAotICAgIDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLAotICAgIDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsCi0gICAgMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywKLSAgICAxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsCi0gICAgMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwKLSAgICAxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LAotICAgIDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwKLSAgICAxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDQ3LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw0MSwxLDIxOCwxLDEwOSwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjA2LDAsMCwKLSAgICAwLDQ3LDUsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LAotICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwwLAotICAgIDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLAorICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyNDQsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAorICAgIDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAorICAgIDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMDksMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAorICAgIDE3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMTE0LDkyLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LAorICAgIDEzOCwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTU2LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTAsMCwKKyAgICAwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKKyAgICAxODYsMiwwLDAsMTE1LDMwLDAsMCwwLDEyLDcsNiwyLDE4LDksMywKKyAgICAxLDIxLDgsMywxLDE4LDExLDE4LDgsMTgsNSwzLDEsMjEsNSwzLAorICAgIDEsMjEsNSwzLDEsMjEsNSwxMTQsMTUwLDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDIxMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCisgICAgNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsCisgICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMSwwLDEwMCwKKyAgICAxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAwLDEzLAorICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwKKyAgICAxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDEyLDAsMTAwLDE3LDAsMTAwLDE4LAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLAorICAgIDEwMSwxMiwwLDEwMCwxOSwwLDEwMCwyMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDE1LDAsMTAwLDQsMCw4Myw0MSwyMSwyMTgsMTQsNzAsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsMTE2LAorICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwKKyAgICA0MSwxLDIxOCwxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzQsMCwxMTYsMiwwLDEyNCwxLDAsCisgICAgMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLAorICAgIDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LDAsMCwwLDkwLDYsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsMywxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwKKyAgICAwLDExNCw4NSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsCisgICAgMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU0LDAsMCwwLAorICAgIDIxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxNSwxLDE5LDIsMTIyLAorICAgIDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywKICAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCwKLSAgICAzNCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsCi0gICAgMCwxMzEsMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LAotICAgIDExNCwyMTgsMCwwLDAsOTAsNiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCwKLSAgICAxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDQsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxMywxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMTQsMSwwLDAsNTYsNSwwLDAsMTE1LDYsMCwwLAotICAgIDAsMCwyLDE1LDEsMTksMiwxMjIsMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLAotICAgIDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDE5LDAsMTI0LDAsMCw4MywxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKLSAgICAzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwKLSAgICA0MSwzLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTUsMSwwLDAsNjMsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LAotICAgIDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKLSAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsOTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTI1LAotICAgIDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw1NywKLSAgICAwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTE2LAotICAgIDYsMCwxMTYsMiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLAotICAgIDAsMTE2LDgsMCwxMjQsMiwwLDEyNCwwLDAsMTA2LDksMCwxMzEsMiwwLAotICAgIDEsMTAwLDAsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCw2NywwLDAsMCw0MSwxMCwxMTQsMjA5LDAsMCwKLSAgICAwLDExNCw2NywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxNjMsMCwwLDAsCi0gICAgMTE0LDE1NCwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsCi0gICAgMTcsMTAzLDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsCi0gICAgOTksMTE2LDExNCwxNzYsMCwwLDAsMTE0LDYzLDAsMCwwLDQxLDMsMTE0LDE4MCwKLSAgICAwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsCi0gICAgMCw3Miw1LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEyLDEsMTUsMSwKLSAgICAxOCwxLDEyLDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCisgICAgMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsOTMsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDU3LAorICAgIDAsMCwwLDExNCw4MiwwLDAsMCw0MSwzLDExNCwxNTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NSwwLDAsMCwyOCwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LAorICAgIDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsCisgICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsODgsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDEzOCwwLDAsMCwzNywzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMjgsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDkyLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLAorICAgIDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMTUsCisgICAgNTQsMCwxMTYsNCwwLDEwMCwxLDAsMTA2LDUsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTYsNiwwLAorICAgIDExNiwyLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMTYsCisgICAgOCwwLDEyNCwyLDAsMTI0LDAsMCwxMDYsOSwwLDEzMSwyLDAsMSwxMDAsCisgICAgMCwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDEwLDExNCw5NSwwLDAsMCwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwwLDAsMCwyMTgsMTcsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwwLDQxLDMsMTE0LDg5LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwKKyAgICAwLDQxLDMsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTIsMSwxNSwxLAorICAgIDE4LDEsOSwxLDE4LDEsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LAogICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKICAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCiAgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LApAQCAtMjI2NiwxMCArMTQ1NiwxMCBAQAogICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKICAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAogICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDE4MSwKLSAgICAwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LAotICAgIDEsMCwwLDgxLDUsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAorICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKKyAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAogICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKICAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKICAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LApAQCAtMjI3Nyw5ICsxNDY3LDkgQEAKICAgICA4Myw0MSwxLDEyMiw0NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0Niw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDIyLDEsMCwwLDQxLDIsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE2LDEsMCwwLDkwLDUsCisgICAgMTAxLDQ2LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU2LDAsMCwwLDU5LDMsCiAgICAgMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjMsNzAsMTE0LDExMSwxMjIsMTAxLAogICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAogICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKQEAgLTIyODcsMTAgKzE0NzcsMTAgQEAKICAgICA0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAogICAgIDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLAotICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLAotICAgIDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLAotICAgIDk2LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCisgICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKICAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCiAgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKICAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKQEAgLTIyOTgsMjA3OSArMTQ4OCw1MDEgQEAKICAgICA0Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsCi0gICAgMiwxMTQsMTA2LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMDIsNSwwLDAsMTE1LDIsMCwKKyAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCisgICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKICAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAogICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNSwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwKLSAgICAxMTQsNTksMCwwLDAsMTE0LDE4LDEsMCwwLDExNCwyMDYsMCwwLDAsMTE0LAotICAgIDE5LDEsMCwwLDExNCwxNCwxLDAsMCwxMTQsMTUsMSwwLDAsMTE0LDIsCi0gICAgMSwwLDAsMTE0LDUsMSwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTYsMSwKLSAgICAwLDAsMTE0LDE3LDEsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDIwLDEsMCwwLDM4LDUsMCwwLDExNSwyOCwwLDAsMCwxMiw3LAotICAgIDYsMiwxOCw5LDMsMSwyMSw2LDMsMSwxOCw4LDE4LDksMTgsOSwKLSAgICAzLDEsMjEsNSwzLDEsMjEsNSwzLDEsMTE0LDIwLDEsMCwwLDk5LAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsCi0gICAgMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsMCwxMDEsNywwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSwKLSAgICA3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LAotICAgIDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwxMDAsOSwwLDEwMCwKLSAgICAxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMCw5LAotICAgIDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsCi0gICAgMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsMTE2LAotICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsCi0gICAgMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLDU5LDgzLDExMSwxMDIsCi0gICAgMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsCi0gICAgMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLAotICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLDEwMiwxMTYsMTE5LDk3LAotICAgIDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLAotICAgIDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LAotICAgIDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMTAsMzcsMCwKLSAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLDEsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNSwyMTgsNywKLSAgICA5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsMTEwLDc1LDEwMSwxMjEsCi0gICAgOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksNzgsODQsOTUsODUsCi0gICAgODMsNjksODIsMTE0LDQwLDAsMCwwLDkwLDE4LDcyLDc1LDY5LDg5LDk1LDc2LAotICAgIDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQxLDIsMTE0LDEyLAotICAgIDEsMCwwLDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LAotICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMjEsNSwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNDIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LAotICAgIDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLAotICAgIDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ2LDAsMTI0LDAsCi0gICAgMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLAotICAgIDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsCi0gICAgNSwwLDg3LDEwMCwwLDAsODEsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwwLAotICAgIDEwNywxMCwwLDExNCwxMzcsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxNTksMCwwLDAsOTAsMTEsCi0gICAgMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDMwLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKLSAgICA4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsCi0gICAgNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLDY5LDcxLDczLDgzLDg0LAotICAgIDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0NywwLDAsMCwxMTQsNywwLDAsMCwKLSAgICAyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDI2LDEsMCwwLDExNCwyNCwKLSAgICAxLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsMTE0LAotICAgIDQwLDAsMCwwLDQxLDYsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsCi0gICAgOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsMjUsCi0gICAgMSwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMiwKLSAgICA5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LAotICAgIDExNSwxMTYsMTE0LDEyMSwxMjgsNSwwLDAsMTE1LDIyLDAsMCwwLDAsMiw5LAotICAgIDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI4LDEsMTMsCi0gICAgMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LAotICAgIDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LAotICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc4LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxNTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzMSwKLSAgICAwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY5LDAsCi0gICAgMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLDg4LDEyMCw3OCwwLDExNiwKLSAgICAzLDAsMTMxLDAsMCw2OCw5Myw2NywwLDkyLDIsMCwxMjUsNSwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsMTI0LDYsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMjQsMSwwLDEyNCw1LDAsCi0gICAgMTI0LDEsMCwxMjQsNCwwLDEzMSwyLDAsMTAwLDEsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDEsMTI1LDcsMCwxMjQsNywwLDgzLDExMyw4MCwwLDg3LDEwMCwwLDAsCi0gICAgODMsNDEsMiw3OCwxMTQsMjE4LDAsMCwwLDQxLDcsMTE0LDMyLDEsMCwwLAotICAgIDExNCwzOSwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsCi0gICAgMjMxLDAsMCwwLDExNCwyMzIsMCwwLDAsMTE0LDE3NCwwLDAsMCw0MSw4LAotICAgIDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgMTMsMSwwLDAsMTE0LDMxLDEsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDEyNiwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNCwxLDAsMCwxNDMsNSwwLDAsCi0gICAgMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLDMsMSwxNCwKLSAgICAxLDEzLDEsOSwxLDIyLDEsMjEsMSwyMSwxLDksMSwxMjIsMzEsODcsCi0gICAgMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKLSAgICAwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwKLSAgICAxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQsMSwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCw0MSw0LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNSwxLDAsMCwxNTgsNSwwLDAsCi0gICAgMTE1LDgsMCwwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LAotICAgIDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MSwxMiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsCi0gICAgMCwxMTQsNTksMCwwLDAsMTE0LDI5LDEsMCwwLDExNCwyOCwxLDAsMCwKLSAgICAxMTQsMjcsMSwwLDAsMTE0LDE5LDEsMCwwLDExNCwyNiwxLDAsMCwxMTQsCi0gICAgMzIsMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMjMsMSwwLDAsMTA5LDUsMCwwLDExNSwyMCwwLDAsMCwKLSAgICAxMiwyLDYsMyw2LDMsNiwyLDYsMiwxOCw3LDE4LDE1LDMsMSwKLSAgICAyMSwxNCwzLDEsMTE0LDIzLDEsMCwwLDk5LDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDUyLAotICAgIDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKLSAgICAxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsCi0gICAgMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCwKLSAgICA5MCw3LDAsMTAwLDYsMCw4Myw0MSw3LDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLDgzLDY2LDk3LDExNSwxMDEsMzIsOTksCi0gICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsCi0gICAgMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsCi0gICAgMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDUsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMjUsMiwwLAotICAgIDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDIsMCwxMDAsCi0gICAgMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwxMDYsMywwLDEwMCwyLDAsMTMxLAotICAgIDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDMsMCwxMDAsNSwwLDEwNywKLSAgICAyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsNSwwLDEwNywzLDAsODMsNDEsCi0gICAgNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwKLSAgICAxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwKLSAgICAxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsCi0gICAgMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LAotICAgIDExNCwyOSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsCi0gICAgMTE1LDAsMCwwLDExNCw3MiwwLDAsMCw0MSw0LDExNCwzOCwwLDAsMCwKLSAgICAxMTQsMjM5LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsCi0gICAgNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTMxLDAsMCwwLAotICAgIDkwLDEzLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDkwLAotICAgIDksMTE2LDk3LDEwNSwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyMCwwLDAsMCwxNzcsNSwKLSAgICAwLDAsMTE1LDgsMCwwLDAsMCwzLDI1LDEsMjIsMSwxOSwxLDEyMiwKLSAgICAyNCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LAotICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU3LAotICAgIDAsMTE2LDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTE2LDQsMCwxMTYsCi0gICAgNSwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMDAsCi0gICAgMSwwLDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwKLSAgICAxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsCi0gICAgMTAxLDQxLDcsMTE0LDE2LDEsMCwwLDExNCw1NywwLDAsMCwxMTQsMTU0LDAsCi0gICAgMCwwLDExNCw0NywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxNzYsMCwwLAotICAgIDAsMTE0LDYzLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDExNCwxODAsMCwKLSAgICAwLDAsMTE0LDE5NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsMCwxODUsNSwwLDAsMTE1LAotICAgIDEwLDAsMCwwLDAsMiwxOCwxLDEyLDEsOSwxLDE4LDEsMTIyLDI1LAotICAgIDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCw1NywwLDAsCi0gICAgMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwKLSAgICAxMTQsMjIwLDAsMCwwLDExNCwyLDEsMCwwLDExNCwxODEsMCwwLDAsMTE0LAotICAgIDUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDMzLDEsMCwwLDE3Miw1LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDgsMTE0LDMzLAotICAgIDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsCi0gICAgMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsMTQsCi0gICAgMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLAotICAgIDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsNzksCi0gICAgMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwKLSAgICAxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKLSAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiwKLSAgICA3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsCi0gICAgMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDksCi0gICAgMTE2LDEwNSwxMDksMTAxLDE5OCw1LDAsMCwxMTUsMiwwLDAsMCwwLDYsMTIyLAotICAgIDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAotICAgIDAsMCwxMDUsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCw1NCw4Myw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAotICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LAotICAgIDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsNDAsMTE1LDExNiwxMTQsNDEsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsODAsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTA3LDEwMSwxMjEsCi0gICAgMTE1LDU4LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDEwOSwxMTYsCi0gICAgMTA1LDEwOSwxMDEsMzksMzIsNDAsMTA5LDk3LDExMCwxMDAsOTcsMTE2LDExMSwxMTQsMTIxLDQxLAotICAgIDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsCi0gICAgMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMTEsMTAyLDMyLDEwOCw5NywxMTUsCi0gICAgMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsOTksMTExLDEwMCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDU5LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLAotICAgIDM5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiw0MCwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsCi0gICAgNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTA1LDExMCwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLAotICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsCi0gICAgMTExLDExOSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTYsCi0gICAgMTExLDMyLDExNCwxMDEsOTcsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsCi0gICAgOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LAotICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwKLSAgICAxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTg0LDAsMCwwLDQxLDEsMTE0LDM2LAotICAgIDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDIwNiw1LDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMTQyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIxOSw1LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw1MywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMzgsMSwwLDAsMjI5LDUsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSwKLSAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LAotICAgIDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwKLSAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNSwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDg3LDExMCw1OCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEyNSwKLSAgICA0LDAsMSwxMjIsMjYsMCwxMTYsMywwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDEsMTI0LDQsMCwxMzAsMiwwLDg3LDg5LDEwMCwzLDAsCi0gICAgMTAwLDMsMCwxMjUsNCwwLDEyNiw0LDAsODgsMTEwLDEsMCw4OCwxMTYsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw1Miw2NywxMTEsMTEwLDk5LAotICAgIDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LAotICAgIDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywKLSAgICAxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LDMyLDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsMTE0LDY3LDAsMCwwLDc4LDQxLAotICAgIDUsMTE0LDIzOSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAotICAgIDExNCw0MCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwyMDQsMCwwLDAsNDEsCi0gICAgNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsCi0gICAgMTE0LDIwMiwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNywxLDAsMCwyMzYsNSwKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDAsMiwxNSwxLDMsMSwxOSwxLDE4LAotICAgIDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTgsOSwKLSAgICA5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNCwyOSwwLDAsMCw5OSwzLAotICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw5LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwzMSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsCi0gICAgMTI0LDMsMCwxMzEsNCwyLDgzLDQxLDUsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LAotICAgIDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAotICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwzOSwxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LAotICAgIDEwOSwxMDEsMTEwLDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsCi0gICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLAotICAgIDExNCwxMTYsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxNzYsMCwKLSAgICAwLDAsMjE4LDEyLDEwMCwxMTEsMTEwLDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsCi0gICAgODQsMTE0LDExOCwwLDAsMCw0MSwyLDExNCwxMTQsMCwwLDAsMjE4LDcsOTksCi0gICAgMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LDUzLDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCwxMTQsNDIsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyNDYsNSwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCw1LDE4LDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLAotICAgIDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLAotICAgIDAsMCw0MywwLDAsMCw2NywwLDAsMCwxMTUsMTc3LDEsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwKLSAgICAwLDEyNSwzLDAsMTIxLDE2LDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDQsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDYzLAotICAgIDAsMSwxLDEsMTAwLDEsMCwxMjUsNCwwLDg5LDExMCwyMDIsMCw4OCwxMjEsCi0gICAgMTksMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxMDMsMCwxLAotICAgIDEsMSw4OSwxMTAsMTYyLDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwyLDAsCi0gICAgMjUsMTMxLDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE1OSwwLDEsMSwxLDg5LDExMCwxMDYsMCw4OCwxMjEsCi0gICAgMzQsMCwxMTYsOCwwLDEyNCw2LDAsMTAwLDMsMCwxMjQsNSwwLDEwMCw0LAotICAgIDAsMTI0LDEsMCwxMDAsNSwwLDEyNCw0LDAsMTMxLDEsMywxMjUsNywwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwKLSAgICAwLDExNCwyMjAsMCwxLDEsMSw4OSwxMTAsNDUsMCw4OCwxMTYsMTEsMCwxMDAsCi0gICAgNiwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTI0LAotICAgIDcsMCwxMDAsNCwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsNCwwLDEwMCw4LAotICAgIDAsMTI0LDIsMCwxMzEsMSwzLDgzLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwKLSAgICAwLDEzMSwxLDAsMTI1LDgsMCwxMjQsMCwwLDEwNiwxMywwLDEyNCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDEyNSw5LDAsMTE2LDExLDAsMTAwLDksMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMSwxMTYsMTQsMCwxMDYsMTUsMCwxMiwxMTQsMTczLDEsCi0gICAgMTI0LDQsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE3MywxLDEyNCwzLDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCwxNzMsMSwxMTYsMTYsMCwxMjQsOSwwLDEyNCwzLAotICAgIDAsMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwzLDAsMTI1LDYsMCwKLSAgICAxMjEsMzYsMCwxMjQsMCwwLDEwNiwxOCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsCi0gICAgNiwwLDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsMTAsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsMTczLDEsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksCi0gICAgMSwxLDEsMSw4OSwxMTMsMTczLDEsODgsMTEwLDAsMCwxMjQsOSwwLDgzLAotICAgIDQxLDExLDEyMiwxOTAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsCi0gICAgMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsCi0gICAgMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksCi0gICAgMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsMTE0LDE4NCwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwKLSAgICAxMDQsMTAxLDExNSwzMiwxMjMsMTI1LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsMCwKLSAgICAxMjIsMTksOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsCi0gICAgMTExLDEwOSwzMiwxMjMsMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDQxLDE5LDExNCwyMzksMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTIzLDAsCi0gICAgMCwwLDExNCwzNywxLDAsMCwxMTQsMzUsMSwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCw0MCwxLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDE5MSwwLDAsMCwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCw0NSwxLDAsMCwxMTQsNywwLDAsMCwyMTgsMTksCi0gICAgMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMTE0LDE5OSwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM5LDEsCi0gICAgMCwwLDQxLDEwLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxNDIsCi0gICAgMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQxLDAsMCwwLDIxOCwyLDExNSwKLSAgICAxMTYsMTE0LDUzLDAsMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LAotICAgIDExNiw5NywxMTQsMjAyLDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwKLSAgICAxMDYsMTAxLDk5LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMTYsMSwwLDAsMjU0LDUsMCwwLDExNSw3OCwwLDAsCi0gICAgMCwwLDcsMTUsMSw2LDEsMywxLDE2LDEsMTMsMSwxMSwyLDMsCi0gICAgMSwxOSwxLDEzLDEsNSwyLDE2LDEsMywxLDE5LDEsMTMsMSw1LAotICAgIDIsMywxLDksMSwxMiwxLDEzLDEsMTksMSw1LDIsOSwxLDcsCi0gICAgMSwxNSwxLDYsMSw3LDEsMTUsMSwxOCwxLDEzLDEsMjIsMSwxMiwKLSAgICAxLDksMSwxNSwxLDMsMSwxOSwxLDE3LDEsMTMsMSw4LDEsMTIyLAotICAgIDIxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKLSAgICAxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsMTE0LDEzOSwwLDAsMCw0MSwxMCwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsMzYsMSwKLSAgICAwLDAsMTE0LDM3LDEsMCwwLDExNCwzOSwxLDAsMCwxMTQsMzgsMSwwLAotICAgIDAsMTE0LDE3LDEsMCwwLDExNCw0NSwxLDAsMCwxMTQsMTYsMSwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDM0LDEsMCwwLDE5Niw1LDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMTIsMiwxMiw4LDEyLDEzLDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwKLSAgICAxMTQsMzQsMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwwLDAsMCwwLDExNSwxMTIsMCwwLDAsMTAxLAotICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsCi0gICAgMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLAotICAgIDAsMCw5MCw2LDAsMTAxLDcsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzNCwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwKLSAgICAxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMCwKLSAgICAxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsMTAsMCwxMzUsMCwwLDgzLDQxLAotICAgIDE0LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2NiwKLSAgICA5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsCi0gICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LAotICAgIDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LAotICAgIDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwyLDExNCw2NywwLDAsMCwxMTQsMzUsMCwKLSAgICAwLDAsNDEsMywxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDcyLDAsMCwwLDU1LDYsMCwwLDExNSw0LDAsMCwwLAotICAgIDAsMyw5LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsCi0gICAgMiwwLDExMSwzMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLAotICAgIDAsMTA3LDIsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIyNSwwLDAsMCwxMTQsCi0gICAgNjMsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDIyOCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCi0gICAgMjMwLDAsMCwwLDYxLDYsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwKLSAgICAxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCi0gICAgMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsMSw3OCw0MSwzLDIxOCw0LDEwNCwKLSAgICA5NywxMTUsMTA0LDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsNjUsNiwwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTI0LDAsMCwKLSAgICAxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwKLSAgICAxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCw0OSwKLSAgICAxLDAsMCwxMTQsNSwxLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDQxLDEsMTE0LDIyNSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCw2OCw2LDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwKLSAgICAxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNSwKLSAgICAwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzksCi0gICAgMCwwLDAsODAsNiwwLDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwyMywKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAzLDAsMCwwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwKLSAgICAxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLDgzLAotICAgIDg3LDEwMCwyLDAsODEsODgsMTAwLDIsMCw4Myw0MSwzLDEyMiwzOSw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwKLSAgICAxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsNDksMCwwLDAsCi0gICAgMTE0LDUwLDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsMywxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCw1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNDAsMSwwLDAsCi0gICAgODUsNiwwLDAsMTE1LDQsMCwwLDAsMCwyLDIxLDEsMTIyLDE5LDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCi0gICAgMTE2LDk3LDQxLDExLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDIzMCwwLAotICAgIDAsMCwxMTQsNTEsMSwwLDAsMTE0LDE1NywwLDAsMCwxMTQsNSwxLDAsCi0gICAgMCwxMTQsMjM5LDAsMCwwLDExNCw0MCwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjUsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDQ5LDEsMCwwLDUwLDYsMCwwLDExNSwxNCwwLDAsMCwxMiwKLSAgICAzLDYsMiwxMiw2LDEyLDQsMTIsMywyNCwxMiwxOCw1LDExNCw0OSwxLAotICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LAotICAgIDAsMCwwLDY0LDAsMCwwLDExNSw2NCwwLDAsMCwxMDEsMCwwLDkwLAotICAgIDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMSw5MCw2LDAsMTAwLDEwLDAsODMsNDEsMTEsMTE0LDksCi0gICAgMSwwLDAsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsCi0gICAgMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LAotICAgIDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDUsMiwwLDEyNCwyLDAsMTA2LAotICAgIDEsMCwxMDAsMSwwLDU0LDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDU0LAotICAgIDgzLDQxLDMsMTIyLDMzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTQsMTg0LDAsMCwwLDExNCwxODUsMCwwLDAsCi0gICAgNDEsMywxMTQsMzksMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksMTE2LDEwNSwxMDksCi0gICAgMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsNzEsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCw0NywxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMzcsMSwwLDAsOTUsCi0gICAgNiwwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDI3LDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwwLAotICAgIDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwwLDEyNCw0LAotICAgIDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwKLSAgICAyLDExNCwxNDUsMCwwLDAsMTE0LDM4LDEsMCwwLDQxLDUsMTE0LDcxLDAsCi0gICAgMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNTMsMCwwLAotICAgIDAsMTE0LDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwzOSwxLDAsMCwxMDAsNiwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNTUsMSwwLDAsMTA1LDE4MiwKLSAgICAxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwwLDAsMCwKLSAgICAxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMDMsCi0gICAgMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsMCwxMTYsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwwLDEyNCw0LAotICAgIDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLDEyNCw2LDAsCi0gICAgMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCw4NywxMjAsMTMyLAotICAgIDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LDAsMTI1LDcsCi0gICAgMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLDEyNSw0LDAsCi0gICAgMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsMCwxLAotICAgIDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LDAsMSwxLAotICAgIDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKLSAgICAyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLDEwMCwxLDAsCi0gICAgMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLDgzLDg3LDg5LAotICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEzLDk0LDAsCi0gICAgODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsMTA3LDEwLDAsCi0gICAgMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksMCwxMDAsMSwKLSAgICAwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksMTAwLDIsMCwKLSAgICAxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLDg4LDEwMCwyLAotICAgIDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLAotICAgIDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSwKLSAgICA5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwKLSAgICAxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLDExLDExNCwKLSAgICAzOCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMzMsCi0gICAgMCwwLDAsMTE0LDI4LDAsMCwwLDExNCwzLDAsMCwwLDkwLDUsMTA5LAotICAgIDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQwLDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LAotICAgIDU1LDAsMCwwLDQxLDksMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCwKLSAgICAxMTQsNTMsMCwwLDAsMTE0LDU1LDEsMCwwLDExNCwyMzQsMCwwLDAsMTE0LAotICAgIDEzMSwwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLDExNCw0MSwKLSAgICAxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMzgsMSwwLDAsMTA1LDYsMCwwLDExNSwzOCwwLDAsMCwKLSAgICAwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwxNSwxLAotICAgIDMsMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLDMsMSwKLSAgICAxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LAotICAgIDk3LDc4LDQxLDcsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsCi0gICAgMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwzNywxLDAsMCwxMTQsMzksMSwKLSAgICAwLDAsMTE0LDM4LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw5LDEsMCwwLAotICAgIDkxLDYsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLDUsMTIsCi0gICAgNSwxMTQsOSwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKKyAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCisgICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAorICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKKyAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCisgICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCisgICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAorICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKICAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKICAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAogICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCiAgICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAxMTQsOCwxLDAsMCwxMjIsNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsCi0gICAgMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDc2LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsCi0gICAgMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsMCwxMDAsMSwwLDEyNCwxLDAsCi0gICAgMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsODMsNDEsNCw3OCwxMTQsNjcsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsNCwxMTQsMjM5LAotICAgIDAsMCwwLDExNCw0MCwxLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxOTYsMCwKLSAgICAwLDAsNDEsNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsMTE0LDUzLDAsMCwwLDExNCw0OCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTYsMSwwLAotICAgIDAsMTM4LDYsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE1LDEsCi0gICAgMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsCi0gICAgMTQ0LDYsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzEsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwKLSAgICA1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwKLSAgICAwLDAsMCwxMTQsMTYsMSwwLDAsMTE0LDE3LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4LDEsMCwwLDEzNCw2LDAsMCwxMTUsNiwwLDAsMCwxMiwKLSAgICAyLDYsMiwxMiw2LDExNCw4LDEsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDEzMCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDEsNywwLDEwMCw4LDAsCi0gICAgMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMCwxMCwwLDEwMCwKLSAgICAxMSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLAotICAgIDAsOTAsMTAsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDExLDAsCi0gICAgMTAxLDcsMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsCi0gICAgMTIsMCwxMDAsMTgsMCw4Myw0MSwxOSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMTksMTExLDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsCi0gICAgMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMywxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsCi0gICAgMTYxLDYsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI4LDY5LAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwzNCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwKLSAgICAwLDEwNywyLDAsMTExLDMzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsCi0gICAgMTA2LDEsMCwxMDcsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjI1LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMjI4LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMzAsMCwwLDAsMTY1LDYsMCwwLDExNSw0LDAsMCwwLDAsCi0gICAgMSwxOCwxLDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwxLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsCi0gICAgMCw2NSw4Myw0MSwxLDc4LDQxLDMsMTE0LDUwLDEsMCwwLDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUxLDEsCi0gICAgMCwwLDE2OSw2LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxODMsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDI5LAotICAgIDAsMSwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLAotICAgIDAsMTA2LDQsMCwxMzEsMywwLDEyNSwyLDAsODcsMTAwLDEsMCw4MSw4OCwKLSAgICAxMTYsNSwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTI0LAotICAgIDMsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMjQsMiwwLDEwMCwzLDAsMTMxLDIsCi0gICAgMCwxMiwxMTQsMTI0LDAsMTE2LDgsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxMDAsNCwwLDI1LDEwMywxLDAsMTI0LDIsMCw5NSw5LDAsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEyNCwyLDAsOTUsMTAsMCwxMjQsMiwwLDEwNiwxMSwwLAotICAgIDEyNCwyLDAsOTUsMTIsMCwxMjQsMywwLDExNSwxNzksMCwxMjQsMiwwLDEwNiwKLSAgICAxMiwwLDEwNiwxMywwLDEwMCw1LDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNCwKLSAgICAyLDAsOTUsMTIsMCwxMTAsMCwwLDEyNCwyLDAsODMsNDEsNiwxMjIsMjUsCi0gICAgNzYsMTExLDk3LDEwMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDMzLDEwMSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDExNCwyNDcsMCwKLSAgICAwLDAsMTE0LDg0LDAsMCwwLDExNCwxMTYsMCwwLDAsNDEsMTQsMTE0LDY5LAotICAgIDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDEwNiwwLDAsMCw5MCwxMiwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwzNSwwLDAsMCwKLSAgICAxMTQsMTUzLDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzOCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LDU3LAotICAgIDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLDQsMTE0LAotICAgIDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw1LDEsMCwwLDE3Miw2LDAsMCwxMTUsMjQsMCwwLDAsCi0gICAgMCw1LDEzLDEsOSwxLDIxLDEsMTYsMSwxNSwxLDIyLDEsMjgsMSwKLSAgICA5LDEsMTIsMSw2LDEsMjgsMSwxMjIsMzEsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKLSAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDExNSw0OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsMywwLDY4LDEzMSwxLDAsMTMxLAotICAgIDEsMCw4Myw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwKLSAgICAxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwKLSAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDI5LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNTEsMCwKLSAgICAwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsOTMsMjEsMCwxMjUsMSwwLAotICAgIDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLDIzLDEwNywyLDAsODYsMSwxMTMsCi0gICAgMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsNzIsMCwwLDAsNzgsMTE0LDQsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLAotICAgIDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc3LDAsMCwwLDE5Myw2LAotICAgIDAsMCwxMTUsMiwwLDAsMCw2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwKLSAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwKLSAgICAxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsMzgsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw3OCwwLDAsMCwyMTgsMTgsNjksCi0gICAgODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksCi0gICAgODMsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCw0MSwxLDExNCw1OSwxLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDE5MCw2LDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSwKLSAgICAxOCwxLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICA5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsCi0gICAgMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCi0gICAgOTksMTE2LDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDE2LDEsMCwwLDE5Niw2LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDIsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAotICAgIDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLAotICAgIDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLDIwMCwKLSAgICA2LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsCi0gICAgMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNSwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzksMCwwLDAsCi0gICAgMjA0LDYsMCwwLDExNSwyLDAsMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDEzLAotICAgIDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwKLSAgICA1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsNTEsCi0gICAgMSwwLDAsMTE0LDE1NywwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMjIwLDAsCi0gICAgMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIzOSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwxMTQsNTcsMSwwLDAsMTUzLDYsMCwwLDExNSwxOCwKLSAgICAwLDAsMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxOCwxOCwxMiwKLSAgICA2LDEyLDQsMTIsNCwxMTQsNTcsMSwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTQsCi0gICAgMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwxMTUsCi0gICAgMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwxMTIsCi0gICAgMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LAotICAgIDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLAotICAgIDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAotICAgIDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCi0gICAgNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywKLSAgICAxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LAotICAgIDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LAotICAgIDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKLSAgICAxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwKLSAgICAyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwKLSAgICAwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsCi0gICAgODMsNDEsMSw3OCw0MSw2LDExNCw3MCwwLDAsMCwxMTQsMjU0LDAsMCwwLAotICAgIDExNCwyMzIsMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDEyLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LDcxLDAsMCwwLDExNCwKLSAgICA2NywwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw3MiwwLDAsMCwyMTcsNiwwLDAsMTE1LDgsCi0gICAgMCwwLDAsMCwxLDksMSw5LDEsMjEsMSwxMjIsMjMsOTUsNzgsOTcsCi0gICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTAsCi0gICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1MywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsOTIsMywwLAotICAgIDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDIsMCwxMDcsCi0gICAgMiwwLDExNCw0MywwLDEwMCw2LDAsODMsMTI0LDEsMCwxMDAsNSwwLDEwMiwKLSAgICAyLDAsODMsNDEsNywxMjIsNjIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsCi0gICAgMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwKLSAgICAxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwKLSAgICAxMTAsOTcsMTA5LDEwMSw0MSwxMTQsMTE2LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsCi0gICAgNywwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDI0NywwLDAsMCw0MSwyLAotICAgIDEyMiwzLDExNSwxMjEsMTE1LDEyMiw0LDExMiw5NywxMTYsMTA0LDQxLDIsMTE0LDcwLDAsCi0gICAgMCwwLDExNCwzMiwwLDAsMCw0MSw0LDExNCw3MSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDExNCw5NCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjMsOTUsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE1LDIyMyw2LDAsMCwxMTUsOCwwLDAsMCwwLDIsCi0gICAgMjcsMSwxMiwyLDQsMywxMjIsMzgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LAotICAgIDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsCi0gICAgMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLDExNiwxLDAsMTE2LDIsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMjUsMTI0LDIsMCwxMzEsMiwwLDgzLDQxLDEsCi0gICAgNzgsNDEsNCwxMTQsNjcsMSwwLDAsMTE0LDYyLDAsMCwwLDExNCw3LDAsCi0gICAgMCwwLDExNCw3MywwLDAsMCw0MSwzLDExNCw3MSwwLDAsMCw5MCwxOCwKLSAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywKLSAgICAxMDksMTAxLDkwLDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw2MiwxLDAsMCwyMzMsNiwwLDAsMTE1LDQsMCwwLDAsMCwKLSAgICAxLDE4LDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCi0gICAgOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEyNywwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywwLDExNCwxMjAsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMDgsMCwKLSAgICAxMjQsMiwwLDEwNiw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDgsMCwxMjQsCi0gICAgMiwwLDEwNiw2LDAsMTE0LDEwOCwwLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwKLSAgICAwLDk1LDcsMCwxMTMsMTA4LDAsMTEwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgOTUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsNywwLDgzLDQxLDEsNzgsCi0gICAgNDEsOCwxMTQsMjMyLDAsMCwwLDExNCw2MiwxLDAsMCwxMTQsNjMsMSwwLAotICAgIDAsMTE0LDY0LDEsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwyMjEsMCwwLDAsMTE0LDI1NCwwLDAsMCw0MSwzLDExNCw3MSwwLDAsCi0gICAgMCw5MCwxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNzgsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKLSAgICAyMzcsNiwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLDE1LDEsMjEsCi0gICAgMywyNywxLDksMSwxOCwxLDEyLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDY4LDEsMCwwLAotICAgIDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwKLSAgICAyNTAsNiwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMyw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwKLSAgICAxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDMxLDAsMCwwLDExNCw2OCwxLDAsMCw0MSwxLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwyNTMsNiwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDIwLDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LAotICAgIDEyNSw0MSw0MSwyLDExNCw0NywwLDAsMCwxMTQsMjU0LDAsMCwwLDQxLDEsCi0gICAgMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCwxMDEsMCwwLDAsMCw3LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCi0gICAgODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTMxLDAsMCwxMDcsNiwwLDgzLDQxLDEsNzgsNDEsMSwxMTQsNjgsMSwwLAotICAgIDAsNDEsMiwxMTQsNzEsMCwwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMiw5NSwKLSAgICA5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwzLDcsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsCi0gICAgMTE1LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsCi0gICAgODMsNDEsMSw3OCw0MSwyLDExNCwyNTQsMCwwLDAsMTE0LDIyNCwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsNzIsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyNCwwLDAsMCwKLSAgICA2LDcsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjEsOTUsNzgsOTcsCi0gICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLAotICAgIDExMCwxMDAsNzgsNDEsMTMsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsNjcsCi0gICAgMSwwLDAsMTE0LDYyLDEsMCwwLDExNCw2OCwxLDAsMCwxMTQsNzAsMSwKLSAgICAwLDAsMTE0LDcxLDEsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDczLDEsMCwKLSAgICAwLDExNCwyMjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDYxLDEsMCwwLDIxMCwKLSAgICA2LDAsMCwxMTUsMjAsMCwwLDAsMTIsNSw2LDIsMTIsNiwxMiwxMCwKLSAgICAxMiw0LDEyLDEzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDYxLDEsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwKLSAgICA5MCwzLDAsMTAxLDQsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDUsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsCi0gICAgMTAwLDEwLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLAotICAgIDAsMCw5MCw5LDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwKLSAgICAwLDEwMCwxNSwwLDgzLDQxLDE2LDExNCwyNTIsMCwwLDAsOTksNCwwLDAsCisgICAgMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LAorICAgIDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwKKyAgICAyLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDEsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwyMywwLDAsMCw4NCwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsMTIyLDI4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsCisgICAgMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsCisgICAgMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiw2MCw4MiwxMDEsMTA4LDEwMSw5NywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCisgICAgOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLDExMSwxMDIsCisgICAgMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsOTksMTAxLAorICAgIDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwKKyAgICA1OCwwLDAsMCw0MSw0LDExNCwxOSwwLDAsMCw5MCw4LDEwMSwxMjAsOTksCisgICAgOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsCisgICAgOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLAorICAgIDAsMCwwLDg4LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsCisgICAgOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwKKyAgICAxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLAorICAgIDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsCisgICAgMCwwLDExNCwyMywwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNjUsMCwwLDAsODAsMywwLDAsMTE1LDYsMCwwLDAsMTIsMiwKKyAgICA2LDIsMTIsNCwxMTQsMTY1LDAsMCwwLDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LAorICAgIDAsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLAorICAgIDIsMCwyNCwxMzEsMiwwLDEyNSwzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwKKyAgICAxLDAsMTI0LDIsMCwxMDcsMCwwLDExNCw1MiwwLDExNiwyLDAsMTAwLDMsCisgICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LAorICAgIDAsMTI0LDAsMCwxMTQsODQsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwKKyAgICAxMjQsMCwwLDEzMSwyLDAsODMsMTI0LDQsMCw4Myw0MSw2LDEyMiw1MCw4MiwKKyAgICAxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwKKyAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwKKyAgICAzMiw5NywxMTAsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsCisgICAgNDYsMTE0LDEyMSwwLDAsMCwxMTQsNDUsMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsCisgICAgMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwKKyAgICAxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LAorICAgIDMzLDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDIxOCw2LDExNCwKKyAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwzLDEwOCwxMDEsMTEwLDIxOCwxMCw4Niw5NywxMDgsMTE3LAorICAgIDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDUsMTE0LDE1LDAsCisgICAgMCwwLDIxOCw3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMTgsNSwxMDgsMTAxLDExOCwKKyAgICAxMDEsMTA4LDkwLDQsOTgsMTA1LDExNiwxMTUsOTAsNCw5OCw5NywxMTUsMTAxLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwKKyAgICAxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTMsMywwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTIsMSwxMCwxLDExNCwKKyAgICAxNzEsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsCisgICAgMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDAsMCw4MywKKyAgICAxMTYsMSwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsNzgsCisgICAgNDEsMiwxMTQsMTU1LDAsMCwwLDExNCw4NSwwLDAsMCw0MSw0LDIxOCw2LAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLAorICAgIDExNCw5OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSwxMDIsMywwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwzLDE4LDEsMTIsMSw0LDEsMTE0LDE3MywwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsOSwwLDAsMCwyNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDIsMSwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsCisgICAgMTA3LDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsCisgICAgMTE2LDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsCisgICAgMTI0LDAsMCwxMTYsMCwwLDEwNiw1LDAsMTA3LDYsMCwxMjUsMywwLDEyMCwKKyAgICAyMzUsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsMjIwLDAsMTI1LDQsMCwxMTYsCisgICAgNiwwLDEzMSwwLDAsMTQzLDkwLDAsMSwxMjEsMTMsMCwxMjQsNCwwLDEwNiwKKyAgICA3LDAsMTI1LDUsMCw4NywxMTAsNTEsMCw0LDExNiw4LDAsMTA3LDEwLDAsCisgICAgMTE0LDE0OCwwLDEsMSwxLDExNiw5LDAsMTI0LDQsMCwxMjQsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDMsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDEsMCwxMDcsOCwKKyAgICAwLDExNCwxNDQsMCwxMTksNjYsMCw4OSwxMTAsMTksMCw4OCwxMjQsNSwwLDEyNCwKKyAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDYsMCw4NywxMDAsCisgICAgMSwwLDgxLDgyLDg4LDEyNCw2LDAsMTAwLDEsMCwxMDcsOSwwLDExNCw2NiwKKyAgICAwLDEyNCwzLDAsMTIsMTE0LDI2LDEsMTI0LDAsMCwxMTYsMCwwLDEwNiw1LAorICAgIDAsMTA3LDYsMCwxMTQsMjYsMSwxMTYsMCwwLDEwNiw1LDAsMTI0LDAsMCwKKyAgICAyNSwxMjUsNywwLDEyMSwxMywwLDEyNCw3LDAsMTA2LDEwLDAsMTI1LDgsMCwKKyAgICA4NywxMTAsMjIsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIsMSwxLDEsCisgICAgMSwxMjQsNiwwLDgzLDg5LDExMywzMCwxLDg4LDEyNCw4LDAsMTAwLDEsMCwKKyAgICAxMDcsOCwwLDExNCwxOSwxLDEyNCw2LDAsODMsMTI0LDgsMCw4MywxMTMsNjYsCisgICAgMCwxMjQsNiwwLDgzLDExMyw2NiwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKKyAgICA4Myw0MSwzLDEyMiwyMyw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0Niw3OCwxMjIsMjIsMTE1LAorICAgIDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwKKyAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDQxLDExLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLAorICAgIDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTQxLDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKKyAgICAxMTQsMjEsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwKKyAgICA5NiwwLDAsMCwxMTQsMTczLDAsMCwwLDExNCw5NSwwLDAsMCw0MSw5LAorICAgIDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTMsMCwwLDAsOTAsCisgICAgOSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE0LDE3MiwwLDAsMCwxMTQsCisgICAgMTU0LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDk1LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTExLDMsCisgICAgMCwwLDExNSw0OCwwLDAsMCwwLDIsMjUsMSwxNiw0LDE1LDEsMTYsCisgICAgMSwxMCwxLDMsMSwxMywxLDEzLDEsMTgsMSwxMiwxLDgsMiwyNSwKKyAgICAxLDEyLDIsMjIsMSwxMywxLDMsMSwxMywxLDEzLDQsOSwyLDEyLAorICAgIDEsNCwyLDcsMiw4LDIsMTE0LDE3NiwwLDAsMCw5OSwzLDAsMCwKICAgICAwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDIsMTE0LDYxLDEsMCwwLDExNCwyNTQsMCwwLDAsNDEsNCwKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgNjUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDcyLDAsMCwwLDEyLDcsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsCi0gICAgMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwKLSAgICAxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLAotICAgIDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDQ3LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTgwLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMDYsMCwwLDAsMTUsNywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICA3LDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsCi0gICAgODQsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsMjIwLDAsMCwwLDI0LDcsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LAotICAgIDMwLDAsMCwwLDExNCw0LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDE3LDEsMCwwLDI3LDcsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAwLDUsMCwxMzEsMywxLAotICAgIDgzLDQxLDYsNzgsMTE0LDMwLDAsMCwwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwKLSAgICAxMTAsMTAzLDYyLDExNCwxNzYsMCwwLDAsMTE0LDQzLDEsMCwwLDg0LDQxLDEsCi0gICAgMTE0LDQ0LDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDE2LDEsMCwwLDMwLDcsMCwwLDExNSwyLDAsMCwwLDAsMSwKLSAgICAxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwwLAotICAgIDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsCi0gICAgMCwzMyw3LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwKLSAgICAxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDI5LDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTMxLDIsMCwxLDExNiwyLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsCi0gICAgODMsNDEsMiwxMjIsOTgsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsCi0gICAgNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsCi0gICAgMywxMTQsMTUzLDAsMCwwLDExNCwyNTQsMCwwLDAsMTE0LDE4MSwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLAotICAgIDM2LDcsMCwwLDExNSw0LDAsMCwwLDAsNywxNiwxLDEyMiwyOCw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMSwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDE5LDEsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDIyMCwwLDAsCi0gICAgMCwxMTQsMTcsMSwwLDAsMTE0LDE2LDEsMCwwLDExNCwyLDEsMCwwLAotICAgIDExNCw1LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNTIsMCwwLDAsMTEsNywKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDEyLDEsMTIsMywxOCw5LDEyLDMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTE0LDI1MiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICAxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLAotICAgIDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLDEwMSw0LDAsMTAwLDYsMCwKLSAgICAxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDAsCi0gICAgOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNCwKLSAgICAwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsMTMxLDEsMCwKLSAgICA5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNCwwLDEwMCwxMCwKLSAgICAwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsMTMxLDEsMCw5MCwxMSwwLAotICAgIDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAotICAgIDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsMCwxMjAsNTEsMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDY4LDkzLDM0LDAsMTI1LAotICAgIDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwxNiwKLSAgICAwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLDEsMTEzLDE2LDAsMTEzLDE2LAotICAgIDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsCi0gICAgMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAotICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKLSAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDcsMCwKLSAgICAwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwKLSAgICA2MCwwLDAsMCwxMTQsNzUsMSwwLDAsNDEsMiwxMTQsMTIsMSwwLDAsCi0gICAgMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDEsMCwwLDUzLDcsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywKLSAgICAxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjAsCi0gICAgNTksMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsNDQsMCwxMjUsMiwwLDEyMSwKLSAgICAxNCwwLDEyNCwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDg3LDExMywzOCwwLAotICAgIDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsODEsMCwxLDEsMSwxMTksMzgsMCwKLSAgICA4OSwxMTMsMzgsMCw4OCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLDEwMCwyLDAsCi0gICAgODMsNDEsMywxMjIsMTEzLDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywKLSAgICAxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTAyLDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsOTcsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksCi0gICAgMTEyLDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDM5LDEwNCwxMTEsMTExLDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsCi0gICAgMTA4LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LAotICAgIDQxLDYsMTE0LDcsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNywxMTUsMTE0LDE2NywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwKLSAgICAwLDAsMTE0LDE1NCwwLDAsMCw0MSwzLDExNCwxMiwxLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNCwxMTEsMTExLDEwNywxMTUsNjEsNywwLDAsMTE1LDE2LDAsMCwwLDAsNywKLSAgICA5LDEsMTksMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsMiwxMjIsMjIsCi0gICAgODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDk3LDAsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsMTA2LAotICAgIDEsMCwxMzEsMCwwLDEyNSwxLDAsMTEwLDAsMCwxMjEsMTcsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsCi0gICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsOTIsMCwxLDEsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsCi0gICAgODMsNDEsMiwxMjIsMjEwLDcxLDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCi0gICAgMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAotICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsCi0gICAgMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LAotICAgIDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsCi0gICAgNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzAsMCwwLDAsNDEsNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDc2LDEsCi0gICAgMCwwLDExNCw3OSwwLDAsMCwxMTQsODAsMSwwLDAsNDEsMywxMTQsMTIsCi0gICAgMSwwLDAsMTE0LDM1LDAsMCwwLDExNCw3OCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjAsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDc4LDcsMCwwLDExNSwxNiwwLDAsMCwwLDgsMTIsMSwxNSwKLSAgICAxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwzMSw4MCw5NywxMTYsCi0gICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwwLAotICAgIDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDExMywwLDAsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMzEsCi0gICAgMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsMCwxMjQsMiwwLAotICAgIDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTAzLDAsMCwxMjUsCi0gICAgNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw4NSwwLDExNiwzLAotICAgIDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTMxLDIsMCwxMjUsNSwwLDEyNCw0LDAsMTI0LDUsMCwKLSAgICA5NSw1LDAsMTI0LDUsMCw4Myw0MSwyLDc4LDExNCwxNjYsMCwwLDAsNDEsCi0gICAgNiwxMTQsNjAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTUsMSwwLDAsCi0gICAgMTE0LDE3NCwwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwyMjEsMCwwLDAsNDEsCi0gICAgNiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNzgsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LAotICAgIDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSw3LDAsMCwxMTUsMTgsMCwwLDAsMCw0LDE1LDEsMjQsMiwxNSwKLSAgICAxLDYsMSwxMiwxLDEzLDEsMTUsMSw5LDEsMTIyLDI3LDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjUyLAotICAgIDAsMCwwLDEwMywwLDAsMTI1LDQsMCwxMjAsMjM5LDAsMTI0LDIsMCw2OCwKLSAgICA5MywyMDMsMCwxMjUsNSwwLDExNiwwLDAsMTI0LDUsMCwxMTYsMSwwLDExNiwKLSAgICAyLDAsMTAyLDIsMCwxMzEsMiwwLDExNSw0NiwwLDExMywxMywwLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLAotICAgIDEyNCw2LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LAotICAgIDYsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDEwOSwwLDEyNCw2LDAsMTA2LDUsCi0gICAgMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLAotICAgIDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsCi0gICAgNywwLDEyNCw3LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNDUsMCwxMTMsMTMsCi0gICAgMCwxMTAsMCwwLDEyNCw3LDAsMTA2LDcsMCwxMDAsMSwwLDEwNyw5LDAsCi0gICAgMTE0LDE2NCwwLDEyNCw3LDAsODMsMTI0LDcsMCwxMDYsOCwwLDEyNSw4LDAsCi0gICAgMTI0LDgsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIwMCwwLDExNiw5LDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwNiwxMCwKLSAgICAwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDExNiwKLSAgICAxMSwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDQsCi0gICAgMCwxMjQsNywwLDk1LDgsMCwxMjQsNywwLDgzLDEwMCwxLDAsODMsNDEsCi0gICAgNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEwLDk3LDEwOSwKLSAgICAxMDEsNDYsNzgsMTE0LDE0LDEsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwzMiwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwxMiwxMTQsCi0gICAgMTkzLDAsMCwwLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw1LDk4LDEyMSwxMTYsMTAxLDExNSwKLSAgICAxMTQsODEsMSwwLDAsMTE0LDYwLDAsMCwwLDExNCwxNCwxLDAsMCwxMTQsCi0gICAgODIsMSwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwxNTQsCi0gICAgMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsMjE3LDAsMCwwLDQxLDksMTE0LAotICAgIDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxMywKLSAgICAxLDAsMCwyMTgsMTQsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTAsNSwxMDEsMTEwLDExNiwxMTQsMTIxLDExNCw3OCwxLDAsMCwxMTQsCi0gICAgMTc4LDAsMCwwLDExNCwxNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMiwxMDEsOTksMTEwLDcsMCwwLDExNSw0MCwwLDAsMCwwLDUsNiwxLAotICAgIDEzLDEsMjEsMSw2LDEsMTUsMSwxMiwxLDE1LDEsMjEsMiwxOCwxLAotICAgIDEyLDEsNiwxLDE1LDEsNCwxLDksMSwxMiwxLDE1LDUsMjAsMiwKLSAgICAxNSwxLDksMSwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDk5LDQsMCwwLDAsMCwKLSAgICAwLDAsMCw2LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0MywwLDAsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDIsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNSw0LAotICAgIDAsMTI0LDQsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDYxLDAsMTAwLDEsMCwKLSAgICA4MywxMjQsNCwwLDEwNiwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzUsMCwKLSAgICAxMjQsNCwwLDEwNiw0LDAsMTI1LDUsMCwxMjQsNSwwLDExNCwxMjgsMCwxMDAsCi0gICAgMiwwLDEyNCw0LDAsOTUsNSwwLDExNiw2LDAsMTI0LDEsMCwxMjQsNSwKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMywwLDEyNCw0LDAsOTUsNCwwLAotICAgIDEyNCw0LDAsODMsMTAwLDEsMCw4MywxMTAsNCwwLDEyNCw0LDAsODMsMTAwLAotICAgIDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwKLSAgICAxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAotICAgIDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw3OCw5MCw5LDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwKLSAgICAwLDExNCw4NiwxLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsCi0gICAgMTE0LDIxOCwwLDAsMCwxMTQsNjEsMSwwLDAsNDEsNiwxMTQsMTIsMSwwLAotICAgIDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEzLDEsMCwwLAotICAgIDExNCwxNzgsMCwwLDAsMTE0LDg1LDEsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNCwxLDAsMCwxNDIsNywKLSAgICAwLDAsMTE1LDI2LDAsMCwwLDAsNCwxMiwxLDEyLDEsMjEsMSwxMiwKLSAgICAxLDQsMSwxNSwxLDksMSw2LDMsOSwxLDI0LDEsNCwyLDcsCi0gICAgMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsCi0gICAgMSwwLDgzLDEyNCwzLDAsMTA2LDEsMCw4Myw0MSwyLDEyMiwxNzAsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsCi0gICAgMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE0LDEsMCwwLAotICAgIDExNCwxNzAsMCwwLDAsNDEsNCwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTUsMSwwLDAsMTY0LAotICAgIDcsMCwwLDExNSw4LDAsMCwwLDAsOCwxOCwxLDEyLDEsNCwxLAotICAgIDEyMiwyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsMTksCi0gICAgMSwwLDAsMTE0LDc1LDEsMCwwLDExNCw4MCwxLDAsMCwxMTQsODEsMSwKLSAgICAwLDAsMTE0LDgyLDEsMCwwLDExNCw4NiwxLDAsMCwxMTQsMTQsMSwwLAotICAgIDAsMTE0LDE1LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NCwxLDAsMCw0OSwKLSAgICA3LDAsMCwxMTUsMjIsMCwwLDAsMTIsMiw2LDIsMTgsOCwxOCwxNywKLSAgICAxOCwxNywxOCwxNSwzLDEsMTgsMzEsMywxLDIxLDIxLDMsMSwxMTQsNzQsCi0gICAgMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCw2NCwwLDAsMCwxMTUsMTMzLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LAotICAgIDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCw5MCw3LDAsMTAwLDYsMCwKLSAgICAxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsCi0gICAgMCwwLDkwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMSwKLSAgICAwLDkwLDEwLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMSwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICAxMywwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsOTAsMTQsMCwxMDAsMTAsCi0gICAgMCw4Myw0MSwxOSwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICAxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDExMCwxMTYsMTAxLDExNCw5NywKLSAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTcsMTE0LDEwMSwzMiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTIsMTAxLDExNCwxMDIsMTExLAotICAgIDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDQsOTcsMTEwLAotICAgIDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNywKLSAgICAwLDAsMCwxMTUsMTIyLDAsMCwwLDEwMywwLDAsMTI1LDMsMCwxMjAsNTIsCi0gICAgMCwxMjQsMiwwLDY4LDkzLDQ0LDAsOTIsMiwwLDEzNywwLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwNiwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsCi0gICAgMTAwLDIsMCwxMzQsMCwwLDEyNCw0LDAsNjgsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEsMTEzLDEzLDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMSwKLSAgICAwLDExMiw3OSwwLDEwMCwzLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDYsMCwKLSAgICAxMjQsMCwwLDk1LDMsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKLSAgICA1LDAsMTE2LDQsMCwxMzEsMCwwLDEyNCwwLDAsOTUsNiwwLDEwMCw1LAotICAgIDAsODMsNDEsNywxMjIsMTU0LDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsCi0gICAgMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDExMSwxMTAsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICA5NywzMiwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwKLSAgICAxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw1MCw0NSwxMTYsCi0gICAgMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ2LAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLAotICAgIDAsNTEsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwKLSAgICAxMjUsMSwwLDEyNCwxLDAsMTM2LDAsMCwxMDIsMiwwLDg2LDEsMTEzLDMsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsCi0gICAgMjIsMCwwLDAsMTE0LDU4LDEsMCwwLDQxLDEsMTE0LDE3MCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsMTkzLAotICAgIDcsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsCi0gICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsCi0gICAgNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLAotICAgIDExNCw2MiwxMTQsMTE2LDAsMCwwLDExNCwyOSwwLDAsMCw3OCwxMTQsMTM5LDAsCi0gICAgMCwwLDQxLDcsMTE0LDE5OCwwLDAsMCwyMTgsOCw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDExNSwxMTQsMzUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDMsMTE1LDEwMSwxMTYsMjE4LDExLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDE5LDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsCi0gICAgMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDEsNSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAxMTUsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDcyLDAsMCwwLDE4Nyw3LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLDM2LDEsOSwyLDE1LAotICAgIDEsOSwxLDEyLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDEwMCwzLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDIsMCwKLSAgICA4Myw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDQ2LDExNCwyOSwwLDAsMCw3OCwxMTQsMTM5LDAsMCwwLDQxLAotICAgIDEsMTE0LDg5LDEsMCwwLDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NSwxLDAsCi0gICAgMCwyMDEsNywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAotICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNywwLDEwMCwKLSAgICAxLDAsMTAzLDAsMCwxMDIsMiwwLDgzLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMiwwLDEwNiwyLDAsMTEyLDU1LDAsMTAzLDAsMCwxMDIsMiwwLDgzLDQxLAotICAgIDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LAotICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwKLSAgICAxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCi0gICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LAotICAgIDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwKLSAgICAwLDExNCwxNTksMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTY2LDAsMCwwLDIwNywKLSAgICA3LDAsMCwxMTUsOCwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsCi0gICAgMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNiwwLDAsMCwwLDAsMCwKLSAgICAwLDcsMCwwLDAsNywwLDAsMCw2NywwLDAsMCwxMTUsNDAsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwKLSAgICAwLDExNiwwLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDYsMCwKLSAgICAxMDAsMiwwLDEyNCw0LDAsMTMxLDIsMiw4Myw0MSwzLDc4LDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDIyMSwwLDAsMCw0MSwxLDExNCwyNDAsMCwwLDAsNDEsNywKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDI0NCwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICAzNSwwLDAsMCwxMTQsMjI5LDAsMCwwLDExNCwxMywxLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw4NiwxLDAsMCwyMTksNywwLDAsMTE1LDYsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTgsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsMTQsMCwwLDAsMTUsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDAsMSwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMCwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDEyNSw0LDAsCi0gICAgMTIxLDM0LDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTEyLDQ5LDAsMTE2LAotICAgIDMsMCwxMDYsNCwwLDEzMSwwLDAsMTMxLDEsMCwxMDYsNSwwLDEyNSw1LAotICAgIDAsODcsMTEwLDI0LDAsNCwxMTYsNiwwLDEwNywxMCwwLDExNCw4NSwwLDEsCi0gICAgMSwxLDEwMCwxMCwwLDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsNSwwLAotICAgIDEyNCwwLDAsMTA2LDcsMCwxMDcsMywwLDExNCwxMjMsMCwxMjQsMCwwLDEwNiwKLSAgICA4LDAsMTMxLDAsMCwxLDEyNCw1LDAsMTI0LDAsMCw5NSw3LDAsMTEwLAotICAgIDAsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1NiwwLDEyNCwwLDAsMTA2LDEwLAotICAgIDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLDEzMSwwLDAsMTI1LDcsMCwKLSAgICAxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSw2LDAsMTI0LDQsMCwxMjUsCi0gICAgNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwwLDExNCw1MSwxLDExNiwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEzMSwyLDAsMTI1LDgsMCwKLSAgICAxMjAsMTAzLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCw5Myw3NywwLDkyLDIsMCwKLSAgICAxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LDksMCwyMywxMjUsMTEsMCwKLSAgICAxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwyLDAsMTI1LDEyLDAsMTE2LAotICAgIDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjExLDAsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEyNCw4LDAsMTAzLDEsMCwKLSAgICAxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIxMSwwLDg3LDExNiwxNywwLDEyNCw4LAotICAgIDAsMTMxLDEsMCwxMjUsMywwLDExMCwwLDAsMTIwLDEyNiwwLDEyNCwwLDAsCi0gICAgMTA2LDE0LDAsNjgsOTMsMTE1LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsCi0gICAgMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTI0LDksMCwyMywKLSAgICAxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsMTA2LDE5LDAsMTI0LAotICAgIDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLDEsMSwxLDEyNCwKLSAgICA3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsMTE0LDYxLDEsMTE2LAotICAgIDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMTc2LDEsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsMTI0LDIsMCwKLSAgICAxMzEsNSwwLDgzLDExMyw2MSwxLDExMyw2MSwxLDg3LDEyNCwzLDAsMTE0LDIzNiwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMjQsMSwwLDEwMCw4LDAsMTMxLDIsMCwKLSAgICAxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsMjEsMCwxMjQsCi0gICAgMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMjUsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsNzAsMTE0LDExNiwwLDAsMCwxMTQsMTE1LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsNzIsMCwwLDAsMTIyLDksMTE2LAotICAgIDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwxMTQsMTQ2LDAsMCwwLDc4LDEyMiwyNSwKLSAgICAxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsMTM5LDAsMCwwLDQxLDIyLAotICAgIDExNCwzMiwwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAzLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNTQsMSwwLDAsMTE0LDQwLAotICAgIDAsMCwwLDExNCw4OSwxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE0LDYsMCwwLDAsMTE0LDkyLDEsMCwwLDExNCwKLSAgICAxNDAsMCwwLDAsMTE0LDkxLDEsMCwwLDExNCwyOCwwLDAsMCwxMTQsODgsCi0gICAgMSwwLDAsMTE0LDQ0LDAsMCwwLDExNCw4NiwxLDAsMCwxMTQsNDYsMCwKLSAgICAwLDAsMTE0LDE1MywwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDIxNywwLDAsCi0gICAgMCwxMTQsMjIxLDAsMCwwLDQxLDE0LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsCi0gICAgMCwwLDExNCwxMywxLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNCwxODQsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDEyLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCw5NywKLSAgICAxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw1OCwxLDAsMCwxMTQsMjQ0LDAsMCwKLSAgICAwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCi0gICAgOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE3OCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCi0gICAgMTQsMSwwLDAsMjI0LDcsMCwwLDExNSw2OCwwLDAsMCwwLDMsNiwKLSAgICAxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwKLSAgICAyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwyMiwKLSAgICAxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTUsMiwyMiwxLDIyLDEsMjUsCi0gICAgMSwxNiwxLDEyLDEsMzIsMSw2LDEsMTksMSwxNSwxLDEyLDEsNCwKLSAgICAxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTQsMSwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDMxLDAsMTE2LDEsMCwKLSAgICAxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsMCwxMDYsMywwLDEzMSwKLSAgICAwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LDQsMCwKLSAgICAxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNzUsMCwxLAotICAgIDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsNywwLAotICAgIDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDExMiwwLDExNiwKLSAgICAxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDExLDAsMTEwLDExMSwKLSAgICAwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwxMjQsMiwwLAotICAgIDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMCwyLDAsCi0gICAgMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSw3LDAsMTI0LAotICAgIDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwxMjQsNSwwLDEyNCw3LAotICAgIDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsMTEwLDYsMCwKLSAgICAxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsMCwxMjQsOCwwLDEzMSwKLSAgICAxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDExLDAsCi0gICAgMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LDAsMTMxLDEsMCwxMTQsCi0gICAgMTAsMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjQsMiwwLDY4LDEzMSwKLSAgICAxLDAsMTI0LDAsMCw5NSwxNywwLDExMCwwLDAsMTAwLDYsMCw4Myw0MSwKLSAgICA3LDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwKLSAgICAxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCwxMTYsMCwwLAotICAgIDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDI4LDAsCi0gICAgMCwwLDEwNCwwLDAsMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsMTI0LDEsCi0gICAgMCwxMDYsMCwwLDEzMSwwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDE0MCwwLDAsMCw0MSwyLDExNCwyMiwwLDAsCi0gICAgMCw5MCwyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDIsCi0gICAgOCwwLDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsMTAxLDExNiwKLSAgICA5OSwxMTEsMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzUsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ1LDAsMCwwLAotICAgIDIxOCwxNyw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMjE4LDE1LDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwyMTgsMTgsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LDEwMSw5OSwxMTYsCi0gICAgMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw3LDAsMCwwLDExNCw4LDAsCi0gICAgMCwwLDExNCw5LDAsMCwwLDExNCw5MCwxLDAsMCwxMTQsOTEsMSwwLAotICAgIDAsMTE0LDEzNCwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDAsMTAwLDExNCwxMCwwLDAsMCwxMTQsOTIsMSwwLDAsNDEsCi0gICAgOSwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDgsOTksMTExLDExMCwKLSAgICAxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsCi0gICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCw3MiwxLDAsCi0gICAgMCwxMTQsNjcsMCwwLDAsMTE0LDY2LDEsMCwwLDExNCw1OCwxLDAsMCwKLSAgICA5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw5NCwxLDAsMCwxMyw4LAotICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLDEsMzEsMSwyMiwKLSAgICAzLDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LDEsNiwxLDI3LAotICAgIDIsNiwxLDE3LDEsOSwxLDE4LDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLAotICAgIDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCi0gICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCi0gICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCi0gICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwKLSAgICAxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywKLSAgICAxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLAotICAgIDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKLSAgICAxOSwwLDAsMCwxMTUsNDYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTE1LDMzLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsCi0gICAgMTM2LDEsMCwxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsCi0gICAgMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsCi0gICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsCi0gICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsCi0gICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsCi0gICAgNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwKLSAgICA0MSwyLDExNCwxMiwxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAotICAgIDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDU0LDgsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDIxLDEsMTIyLAotICAgIDU0LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxMiwKLSAgICAxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDEwMCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDksMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ0LDgsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsMTAsMjEsNiwxMjIsMjAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDE2LAotICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsCi0gICAgNDEsMiwxMTQsNDcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDEsMTE0LDcxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwxMDEsMCwwLDAsNjIsOCwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAotICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsNTcsMCwwLDAsMTE0LDU2LAotICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsCi0gICAgMCwwLDExNCw3NSwxLDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNSwxLDAsCi0gICAgMCwxMTQsMTY2LDAsMCwwLDExNCw4NiwxLDAsMCwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDk0LDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsMTAxLDEsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDg3LDEsMCwwLDE3OCw3LDAsCi0gICAgMCwxMTUsMjAsMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsCi0gICAgMTIsMTIsMTIsNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsODcsMSwwLDAsOTksCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICA2NCwwLDAsMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLAotICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLAotICAgIDkwLDUsMCwxMDAsNiwwLDgzLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsCi0gICAgMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAotICAgIDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKLSAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMjQsNjUsCi0gICAgOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LAotICAgIDQsMSwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDAsMCwwLDcyLAotICAgIDgsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LAotICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsCi0gICAgMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwzMiw5NywxMTAsMTIxLDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsCi0gICAgNzgsNDEsMiwxMTQsMTA2LDAsMCwwLDExNCwxMDcsMCwwLDAsNDEsNCwxMTQsCi0gICAgNzEsMCwwLDAsOTAsOCwxMDEsMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LAotICAgIDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwxMTcsMTAxLDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LAotICAgIDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCw4MSwwLDAsMCw3Niw4LDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDI3LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLAotICAgIDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTAyLDEsMCwwLDY4LDgsCi0gICAgMCwwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDQsMTE0LDEwMiwxLAotICAgIDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMjQsMTMxLDIsMCwxMjUsCi0gICAgMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsMSwwLDEyNCwyLDAsMTA3LDAsCi0gICAgMCwxMTQsNTUsMCwxMTYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwwLAotICAgIDExMCwwLDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDAsMCwKLSAgICAxMTQsODcsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwxMjQsMCwwLDEzMSwKLSAgICAyLDAsODMsMTI0LDQsMCw4Myw0MSw2LDEyMiw1MCw4MiwxMDEsMTE1LDExMSwxMDgsCi0gICAgMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsCi0gICAgOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsNDYsMTE0LDExNiwwLAotICAgIDAsMCwxMTQsMjksMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LAotICAgIDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwKLSAgICAxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDg0LDAsMCwwLAotICAgIDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDExNCwzNCwwLDAsMCwxMTQsMzEsCi0gICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsNDcsMCwwLDAsNDEsNSwxMTQsCi0gICAgNjcsMCwwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSwxMTQsMTI4LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMywKLSAgICA5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsODEsOCwwLAotICAgIDAsMTE1LDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTUsMSwxMCwxLAotICAgIDExNCwxMDUsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwKLSAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMSwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMTUsMSwwLDAsMTE0LDE3NCwwLDAsMCw0MSw0LDExNCwKLSAgICA3OCwxLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDgsCi0gICAgMTAxLDEwMyw5Nyw5OSwxMjEsOTAsOCwwLDAsMTE1LDgsMCwwLDAsMCwzLAotICAgIDE4LDEsMTIsMSw0LDEsMTE0LDEwNiwxLDAsMCw5OSwzLDAsMCwwLAotICAgIDAsMCwwLDAsOSwwLDAsMCwyNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMzQsMSwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNSwyOCwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLDIsMCwxLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMTYsMCwwLDEwNiw1LDAsMTA3LDYsMCwxMjUsMywwLAotICAgIDEyMCwyNDAsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsMjI1LDAsMTI1LDQsMCwKLSAgICAxMTYsNiwwLDEzMSwwLDAsMTQzLDkzLDAsMSwxMjEsMTMsMCwxMjQsNCwwLAotICAgIDEwNiw3LDAsMTI1LDUsMCw4NywxMTAsNTQsMCw0LDExNiw4LDAsMTA3LDEwLAotICAgIDAsMTE0LDEzOCwwLDEsMSwxLDExNiw5LDAsMTI0LDQsMCwxMjQsMCwwLAotICAgIDEyNCwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDIsMCwxMDcsCi0gICAgOCwwLDExNCwxMzQsMCwxMTksNTMsMCwxMTAsMCwwLDg5LDExMCwxOSwwLDg4LAotICAgIDEyNCw1LDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsCi0gICAgNiwwLDg3LDEwMCwyLDAsODEsODgsMTI0LDYsMCwxMDAsMiwwLDEwNyw5LAotICAgIDAsMTE0LDUzLDAsMTI0LDMsMCwxMiwxMTQsMTUsMSwxMjQsMCwwLDExNiwwLAotICAgIDAsMTA2LDUsMCwxMDcsNiwwLDExNCwxNSwxLDExNiwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMCwwLDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwKLSAgICAxMjUsOCwwLDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjQ3LAotICAgIDAsMSwxLDEsMTI0LDYsMCw4Myw4OSwxMTMsMTksMSw4OCwxMjQsOCwwLAotICAgIDEwMCwyLDAsMTA3LDgsMCwxMTQsOCwxLDEyNCw2LDAsODMsMTI0LDgsMCwKLSAgICA4MywxMTMsMjIsMSwxMjQsNiwwLDgzLDExMyw1MywwLDExMyw1MywwLDg3LDEwMCwKLSAgICAyLDAsODMsMTAwLDIsMCw4Myw0MSwzLDEyMiwyMyw3MCwxMDUsMTEwLDEwMCwzMiwKLSAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQxLDExLDExNCw3LDAsCi0gICAgMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCw3MywwLDAsCi0gICAgMCwxMTQsMTAyLDEsMCwwLDExNCwxNCwxLDAsMCwxMTQsMjEwLDAsMCwwLAotICAgIDExNCwxMDYsMSwwLDAsMTE0LDIwOSwwLDAsMCw0MSw5LDExNCw2NywwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDEzLDEsMCwwLDkwLDksMTA1LDExNSw5NSwKLSAgICAxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCw3OCwxLDAsMCwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyMDksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLAotICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSw4LDAsMCwxMTUsNDgsCi0gICAgMCwwLDAsMCwyLDksMSwxOSw0LDE1LDEsMTYsMSwxMCwxLDMsCi0gICAgMSwxMywxLDEzLDEsMTgsMSwxMiwxLDExLDIsMjQsMSwxMiwyLDIyLAotICAgIDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwxLDQsMiw3LAotICAgIDIsMTEsMiwxMTQsMTA4LDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsCi0gICAgMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE5NCwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsMiwwLDExNSw0NSwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LAotICAgIDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDcyLDAsMTE2LDUsMCwxMDAsMywKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwxLDAsMTE0LDE1NiwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDEwOCwwLDExNiwKLSAgICAyLDAsMTAwLDQsMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDEyNCwxLAotICAgIDAsMTE2LDYsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDE1NiwwLDEwMCw1LDAsCi0gICAgMTI1LDMsMCwxMTYsOCwwLDEyNCwzLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTMxLDEsMCwxMzAsMSwwLDExMywxNTYsMCwxMTAsMCwwLDEyNCwwLAotICAgIDAsMTIsMTE0LDE5MCwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCwxOTAsCi0gICAgMCwxMTYsNSwwLDEwMCw2LDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsCi0gICAgMTAwLDcsMCw4Myw0MSw4LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LAotICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsCi0gICAgMTEwLDEwMSwzNCw0NiwxMjIsMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwKLSAgICAxMDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsCi0gICAgMTExLDExNiwzMiwxMjMsMTI1LDExNCw4NCwwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLAotICAgIDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSwKLSAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsCi0gICAgNjEsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsCi0gICAgMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LAotICAgIDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSw3OCw0MSw5LDExNCwxOTMsMCwwLDAsMTE0LDgzLDEsMCwwLDIxOCw5LAotICAgIDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDcsMCwwLDAsMTE0LDY2LAotICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLDExNCw0MSwKLSAgICA0LDExNCw2NywwLDAsMCwxMTQsMTAzLDEsMCwwLDExNCwxMDQsMSwwLDAsCi0gICAgMTE0LDE3MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsCi0gICAgMTAxLDk5LDEwNywxMzksOCwwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLAotICAgIDMwLDEsMTIsMSwxNSwxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsCi0gICAgMjcsMSwxOSwxLDExNCwxMTEsMSwwLDAsMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwKLSAgICAxMjUsOTksMiwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDUyLDEsMCwwLDEwMCwwLDAsMTI1LDIsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsCi0gICAgMjUsMTI1LDMsMCwxMjQsMywwLDExNCwxNzgsMCwxMjQsMywwLDExNiwxLDAsCi0gICAgMTA2LDIsMCwxMDcsNywwLDExNCw2MiwwLDExNiwzLDAsMTI0LDEsMCwxMjQsCi0gICAgMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMDYsCi0gICAgMiwwLDEwNyw2LDAsMTE0LDg4LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLAotICAgIDAsMjUsODMsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwKLSAgICAxMjEsMTMsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTMsMTc4LDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxNzQsMCwxLDEsMSwxMTYsNiwwLAotICAgIDEwMCwzLDAsMjMsMTA2LDcsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNSwwLDExNiw4LDAsMTI0LDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDg5LDExMywxNzgsMCw4OCwxMTAsMCwwLDExNiw5LDAsCi0gICAgMTI0LDAsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjM1LDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTEwLDE4LDAsMTE2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEwNiwKLSAgICAxMSwwLDEzMSwwLDAsMTI1LDcsMCwxMjQsMywwLDExNCw0OCwxLDExNiwxLAotICAgIDAsMTA2LDIsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTE2LDEyLDAsMTI0LDQsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsCi0gICAgMjUsMTI0LDcsMCwxMzEsMywwLDEsMTEwLDAsMCwxMjQsNywwLDgzLDQxLAotICAgIDYsNzgsMTE0LDExNiwwLDAsMCwxMTQsODQsMCwwLDAsMTIyLDIzLDU5LDMyLAorICAgIDAsMTE1LDE3OSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsCisgICAgMiwwLDExNSw0MiwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLAorICAgIDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLDExNCw2NiwwLDExNiw1LDAsMTAwLAorICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsMTQ0LDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTAyLDAsMTE2LDIsMCwKKyAgICAxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNDIsMCwxMjQsMSwwLDExNiwKKyAgICA2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNDQsMCwxMDAsNSwwLDEyNSwzLAorICAgIDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLDExNCwxNzUsMCwxMjQsMiwwLAorICAgIDEwMCwyLDAsMTA3LDIsMCwxMTQsMTc1LDAsMTE2LDUsMCwxMDAsNiwwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLDgsMTIyLDI4LDg2LDEwMSwxMTQsCisgICAgMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsCisgICAgMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwKKyAgICAxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsMTE0LDMzLDAsMCwwLDEyMiwKKyAgICAxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsCisgICAgNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsCisgICAgMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLAorICAgIDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDksODQsMTIxLDExMiwxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LAorICAgIDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCwxMSwKKyAgICA4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLDExNCw0MSw0LDExNCwxNSwwLAorICAgIDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDE0NywwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywxNTEsCisgICAgMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDI3LDEsMTIsMSwKKyAgICAxMiwxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsMjEsMSwxOSwxLAorICAgIDExNCwxODEsMCwwLDAsMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwxMjUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsMTIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQwLDEsMCwwLDEwMCwwLDAsMTI1LDIsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwKKyAgICAxMjQsMywwLDExNCwxNzUsMCwxMjQsMywwLDExNiwxLDAsMTA2LDIsMCwxMDcsCisgICAgNywwLDExNCw1OSwwLDExNiwzLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLAorICAgIDAsMSwxMjQsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNiwwLDExNCw4NSwKKyAgICAwLDExNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDI1LDgzLDExNiwxLDAsMTA2LAorICAgIDIsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCisgICAgNCwwLDEyNSwyLDAsODcsMTEwLDYxLDAsNCwxMTYsNSwwLDEwNywxMCwwLAorICAgIDExNCwxNzQsMCwxLDEsMSwxMTYsNiwwLDEwMCwzLDAsMjMsMTA2LDcsMCwKKyAgICAxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNSwwLDExNiw4LDAsMTI0LAorICAgIDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMDAsMCwwLDEzMCwyLAorICAgIDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCwwLDAsMTI0LDIsMCwxMzEsCisgICAgMiwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIzMiwKKyAgICAwLDExNiw4LDAsMTE2LDYsMCwxMDYsNywwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwxMiwwLDExNiwKKyAgICAxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLDEyNCwzLDAsMTE0LDM2LAorICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTEsCisgICAgMCwxMjQsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsCisgICAgMTAwLDUsMCwyNSwxMjQsNywwLDEzMSwzLDAsMSwxMjQsNywwLDgzLDQxLAorICAgIDYsNzgsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTIyLDIzLDU5LDMyLAogICAgIDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNCw2NywwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLAotICAgIDEzLDExNCwzMiwwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsCi0gICAgMTE0LDExNCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwyMTAsMCwwLDAsMjE4LAotICAgIDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDQ3LDAsMCwwLDExNCwxNTQsCi0gICAgMCwwLDAsMTE0LDEwOCwxLDAsMCwxMTQsMTc1LDAsMCwwLDExNCw3LDEsCi0gICAgMCwwLDExNCw2MSwwLDAsMCw0MSw4LDExNCw2NywwLDAsMCwyMTgsNywKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMzUsMCwwLDAsMTE0LDIzNCwwLDAsCi0gICAgMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMywKLSAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsCi0gICAgMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTU5LDgsMCwwLDExNSw0MiwwLDAsMCwKLSAgICAwLDEsNiwxLDE5LDEsNiwxLDE1LDEsMTYsMiwxNSwxLDExLDEsCi0gICAgMTMsMSwzLDEsMTMsMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLDEsCi0gICAgMzAsMiwxOCwxLDYsMiwxMywxLDMyLDEsMTE0LDExNCwxLDAsMCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTQzLDE4LDAsMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDg3LDEwMCwxLDAsODEsODgsMTAwLDEsMCw4Myw0MSwyLDEyMiwKLSAgICA1NCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE0LAotICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwKLSAgICAxMTQsMSwwLDAsNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDExMywxLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTg2LAotICAgIDgsMCwwLDExNSw0LDAsMCwwLDAsMiwxMywxLDExNCwxMTUsMSwwLAotICAgIDAsOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTcyLDAsMCwwLDExNiwwLDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDcsNCwwLDExNCw0OSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsMTA2LDUsMCwxMDcsCi0gICAgNywwLDExNCw4NywwLDExNiw2LDAsMTI0LDAsMCwxMTYsNywwLDEzMSwyLAotICAgIDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsMTI1LDMsMCwxMjQsCi0gICAgMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTU4LDAsMTE2LDIsMCwxMDYsOCwKLSAgICAwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTE2LDExLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDEsMTI0LDMsMCw4Myw0MSw1LDk3LDUwLDEsMCwwLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDEwNSwxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKLSAgICAxMDgsMTA4LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLAotICAgIDEwOSw5NywxMDAsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksCi0gICAgMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLAotICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCi0gICAgMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsCi0gICAgOTksMTExLDEwOSwxMDksMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LAotICAgIDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDEwNSwxMTYsMTIxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwKLSAgICAxMDAsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsMTA0LAotICAgIDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsCi0gICAgMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMCwxMDUsMTAwLDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNCw4NCwwLDAsMCw3OCwxMjIsNDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLAotICAgIDEwMiwzMiwxMjMsMTI1LDMyLDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCi0gICAgMTE0LDY3LDAsMCwwLDQxLDEyLDExNCwxMTEsMSwwLDAsMTE0LDEwNSwxLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDExNCw0LDEsMCwwLDExNCw3LDAsMCwwLAotICAgIDExNCw3MywwLDAsMCwxMTQsMTE1LDEsMCwwLDIxOCwxMSw5NSwxMDMsOTksMTAwLAotICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCwxMDcsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDExNCwxNTQsMCwwLDAsMTE0LDExMiwwLDAsMCw0MSw1LDExNCw2NywwLAotICAgIDAsMCwxMTQsMTAzLDEsMCwwLDExNCwxMDQsMSwwLDAsMTE0LDE4MCwwLDAsCi0gICAgMCwxMTQsMTUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwxMTYsMSwwLDAsMTkyLDgsMCwwLDExNSwyOCwKLSAgICAwLDAsMCwwLDksMTYsMSwxMiwxLDIxLDEsMTAsMSwxNSwxLDEzLAotICAgIDEsMTMsMSwxMiwxLDEwLDEsNiwxLDksMSwyMSwxLDEwLDEsMTE0LAotICAgIDExNiwxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsCi0gICAgMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsMSwxLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyNTMsMCwxMDAsMiwwLAotICAgIDEyNCwxLDAsMTA3LDYsMCwxMTQsODksMCwxMTYsMSwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw4OSwKLSAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsMCwKLSAgICAxLDExMyw4OSwwLDExMCwwLDAsMTIwLDE2MSwwLDEyNCwxLDAsNjgsOTMsMTUwLAotICAgIDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDExNSw5NiwwLDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLDE3LDAsMTE2LDcsMCwxMjQsMiwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMywyNDYsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDI0MiwwLDEsMTI1LDUsMCwxLDEyMiw1MywwLDExNiw5LAotICAgIDAsMTI0LDUsMCwxMzEsMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsCi0gICAgMTE0LDIyMSwwLDEyNCw1LDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwKLSAgICAyMjEsMCwxMTksOTYsMCwxMTMsMjIxLDAsMTEwLDAsMCwxMzAsMCwwLDg3LDg5LAotICAgIDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEzLDI0NiwwLAotICAgIDg4LDExMyw5NiwwLDExMyw5NiwwLDg3LDExMCwwLDAsMTI0LDAsMCw4Myw0MSwKLSAgICA2LDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LAotICAgIDk3LDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LAotICAgIDExMSwxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwKLSAgICAxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksCi0gICAgMzIsOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMjQ3LDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsCi0gICAgOTUsOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw2MCwwLDAsCi0gICAgMCwxMTQsMjQ2LDAsMCwwLDIxOCw2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDExOCwxLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDU3LDAsCi0gICAgMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsODMsMSwwLAotICAgIDAsMTE0LDksMCwwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLAotICAgIDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCw2NywwLDAsMCw0MSw2LDExNCwxODAsCi0gICAgMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsMTEzLDEsCi0gICAgMCwwLDExNCwxNiwwLDAsMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMTQsNDEsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsCi0gICAgMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMTYsOCwwLDAsMTE1LDM0LDAsMCwKLSAgICAwLDAsMTAsMTUsMSwxMiwxLDEyLDEsMTMsMSwxNSwxLDIyLDEsMTMsCi0gICAgMSwxNSwxLDIxLDEsMywxLDE3LDEsMTgsNCwyMSwxLDE1LDEsOSwKLSAgICAxLDMyLDEsMTE0LDEyMiwxLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw3OCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDc0LDAsMTI0LDAsMCwKLSAgICAxMDAsMywwLDI1LDEyNSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEwNyw3LDAsCi0gICAgMTE0LDc0LDAsMTI0LDEsMCwxMDYsMSwwLDEwMCw1LDAsMTMxLDEsMCwxMDAsCi0gICAgNiwwLDI1LDEyNSwxLDAsMTEzLDc0LDAsMTEwLDAsMCwxMjQsMSwwLDgzLAotICAgIDQxLDcsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsCi0gICAgOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsCi0gICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsCi0gICAgMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLAotICAgIDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwKLSAgICAxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwKLSAgICAxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywKLSAgICAxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDI1MSwwLDAsMCwKLSAgICA3OCwxMTQsNTcsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTE2LDAsMCwwLAotICAgIDExNCw4NCwwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMzIsMCwwLAotICAgIDAsNDEsMiwyMTgsNywxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNCwxMDMsMSwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMjE4LDE3LDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsOTUsOTUsMjQ4LDgsMCwwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwKLSAgICAxMiwxLDEwLDEsMTIsMSwyNSwxLDExNCwxMjQsMSwwLDAsOTksMCwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTMxLDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwxMTYsNCwwLDEwMiwKLSAgICAyLDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDIsMCwxMjUsMiwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLDAsODMsNDEsMSwKLSAgICAxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LAotICAgIDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwKLSAgICAzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwKLSAgICAzMiw0MSw3LDExNCw1NywxLDAsMCwxMTQsMTA2LDAsMCwwLDIxOCwxOCwxMDEsCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCi0gICAgMTE1LDExNCw5LDEsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDgsMSwwLDAsCi0gICAgMTE0LDIzMywwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsMTE2LAotICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjQxLDAsMCwwLDcsOSwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwyNDEsMCwwLDAsOTksCi0gICAgNSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjI3LDAsMCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsCi0gICAgMiwwLDExNCwyNywwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw1LAotICAgIDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDQ1LDAsCi0gICAgMTI0LDEsMCwxMTAsMywwLDEwNSwwLDAsMTI1LDYsMCwxMTYsMSwwLDEyNCwKLSAgICA2LDAsMTMxLDEsMCwxMjUsNywwLDExNiwwLDAsMTI0LDAsMCwxMjQsNywKLSAgICAwLDEyNCw0LDAsMTMxLDMsMCwxMjUsNSwwLDEyNCwzLDAsMTE1LDIwNywwLAotICAgIDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMDAsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwwLDEyNCw1LDAsODMsMTE2LDMsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTE2LDMsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwyNCwxMjUsOCwwLAotICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsNSwwLDEwNiw2LDAsMTAwLDIsMCwxMTYsCi0gICAgMywwLDEyNCw1LDAsMTA2LDYsMCwxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLAotICAgIDIsMCwyNSwyNSw4MywxMTAsMTYsMCwxMTYsNywwLDEyNCw1LDAsMTI0LDMsCi0gICAgMCwxMTYsMCwwLDEzMSwzLDAsODMsMTAwLDIsMCw4Myw0MSw0LDk3LDIxNCwKLSAgICAxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwKLSAgICAxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LAotICAgIDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksMTE3LDExNCwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LAotICAgIDExMSwxMDksMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLAotICAgIDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMTUsNDYsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMzksMzIsCi0gICAgOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTA1LDEwMywxMTAsMTExLAotICAgIDExNCwxMDEsMTAwLDQ2LDMyLDg0LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzksMTAyLDExNCwKLSAgICAxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDExNSwzMiwxMTksMTA0LDk3LDExNiwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDMyLDk3LDExNSwzMiwKLSAgICA5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwKLSAgICAxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsNDAsMTAxLDQ2LDEwMywKLSAgICA0NiwzMiw5Niw5NiwxMDIsMTE0LDExMSwxMDksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNjAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwKLSAgICA2Miw5Niw5Niw0MSw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwKLSAgICAxMDgsMzksMTAsMzIsMzIsMzIsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLAotICAgIDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LAotICAgIDExMCwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsNDYsNDYsMTEyLDEwNywxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA5LDExMSwxMDAsOTYsOTYsMzIsMTE5LDExMSwxMTcsMTA4LDEwMCwzMiwxMDQsOTcsCi0gICAgMTE4LDEwMSwzMiw5NywzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDMyLDExMSwxMDIsMzIsCi0gICAgNTAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwwLDc4LDExNCwKLSAgICAxMTYsMCwwLDAsNDEsOCwxMTQsMTE2LDEsMCwwLDExNCwxMjQsMSwwLDAsCi0gICAgMTE0LDEzNCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LAotICAgIDczLDAsMCwwLDExNCw1NywwLDAsMCwxMTQsMTIyLDEsMCwwLDQxLDksCi0gICAgMTE0LDY3LDAsMCwwLDExNCwxMjMsMSwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywKLSAgICAxMDgsMTE1LDExNCwxMjEsMSwwLDAsMTE0LDEwNCwxLDAsMCwxMTQsMTgwLDAsMCwKLSAgICAwLDkwLDgsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwxMTQsMTAzLDEsMCwwLAotICAgIDkwLDcsOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsOTUsOTUsMTgsOSwwLDAsMTE1LDI2LDAsMCwwLDAsMTEsMTIsCi0gICAgMSwxNSwyLDI0LDEsMTIsMSwxOCwxLDYsMywxMiwxLDIzLDEsNiwKLSAgICAxLDQsNCwzNSwzLDQwLDIsMTE0LDEyNywxLDAsMCw5OSwxLDAsMCwKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDE0MCwwLDAsMCw0MSwKKyAgICAxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDk2LDAsMCwwLDIxOCwKKyAgICA4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCw1MCwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCw3LDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLDAsMCw5MCwxMywxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMDEsMTAwLDE3MSwzLDAsMCwxMTUsNDIsMCwwLDAsMCwxLDYsMSwxOSwKKyAgICAxLDYsMSwxNSwxLDEzLDIsMTUsMSwxMSwxLDEzLDEsMywxLDEzLAorICAgIDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwxLDMwLDIsMTIsMSw2LAorICAgIDIsMTMsMSwyOSwxLDExNCwxODQsMCwwLDAsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDM3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDE0MywxOCwwLAorICAgIDEsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMDAsCisgICAgMSwwLDgxLDgyLDg4LDEwMCwxLDAsODMsNDEsMiwxMjIsNTQsNzAsMTA1LDExMCwKKyAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCisgICAgOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDU0LDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTk4LDMsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMiwxMywxLDExNCwxODUsMCwwLDAsMTE0LDMzLDAsCisgICAgMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2NiwwLDAsMCwxMTYsMCwwLDEyNCwKKyAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMjQsMiwwLDEwMCwKKyAgICAxLDAsMTA3LDQsMCwxMTQsNDYsMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsCisgICAgMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDAsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTMxLDAsMCwxLDEyNCwwLDAsMTE2LDQsMCwxMDYsNSwwLDEwNyw3LDAsCisgICAgMTE0LDg0LDAsMTE2LDYsMCwxMjQsMCwwLDExNiw3LDAsMTMxLDIsMCw4MywKKyAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwyNSwxMjUsMywwLDEyNCwzLDAsCisgICAgMTAwLDIsMCwxMDcsOCwwLDExNCwxNTIsMCwxMTYsMiwwLDEwNiw4LDAsMTMxLAorICAgIDAsMCwxLDEwMCwzLDAsMTA2LDksMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAorICAgIDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwKKyAgICAxLDEzMCwxLDAsMTE2LDExLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTI0LDMsCisgICAgMCw4Myw0MSw1LDk3LDUwLDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDEwNSwKKyAgICAxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwOSw5NywxMDAsMTAxLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMDEsCisgICAgMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksMTAxLDExMCwxMTYsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsOTksMTExLDEwOSwxMDksMTExLAorICAgIDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LDExMSwxMTQsMzIsMTExLDEwMiwKKyAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDEwNSwxMTYsMTIxLDEwLDMyLAorICAgIDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwxMDAsMzIsOTUsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExMCwKKyAgICA5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDEwMiwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMCwxMDUsMTAwLAorICAgIDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwKKyAgICA3OCwxMjIsNDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLDEwMiwzMiwxMjMsMTI1LDMyLAorICAgIDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE0LDE1LDAsMCwwLAorICAgIDQxLDEyLDExNCwxODEsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsNTcsMCwwLAorICAgIDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAorICAgIDExNCwxODUsMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE0LDU4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwwLAorICAgIDAsMTE0LDYzLDAsMCwwLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxNjksMCwKKyAgICAwLDAsMTE0LDE3MCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDc0LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxODYsMCwwLDAsMjA0LDMsMCwwLDExNSwyOCwwLDAsMCwwLDksCisgICAgMTYsMSwxMiwxLDE4LDEsMTAsMSwxNSwxLDEzLDEsMTMsMSwxMiwxLAorICAgIDEwLDEsNiwxLDksMSwxOCwxLDEwLDEsMTE0LDE4NiwwLDAsMCw5OSwKKyAgICAzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjM5LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsCisgICAgMSwwLDEzMSwyLDAsMTE0LDIzNSwwLDEwMCwyLDAsMTI0LDEsMCwxMDcsNiwKKyAgICAwLDExNCw4MywwLDExNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwxLDAsCisgICAgMTI0LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMDAsMywwLDEzMSwyLDAsMTE0LDgzLDAsMTI0LDEsMCwxMDYsCisgICAgMywwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwwLDEsMTIwLDE0OSwwLDEyNCwKKyAgICAxLDAsNjgsOTMsMTQxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDMsMCwxMzEsMiwwLDExNSw5MCwwLDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwKKyAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLDE3LDAsCisgICAgMTE2LDcsMCwxMjQsMiwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMyw5MCwKKyAgICAwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjMwLDAsMSwxMjUsNSwwLDEsCisgICAgMTIyLDQ3LDAsMTE2LDksMCwxMjQsNSwwLDEzMSwxLDAsMTA2LDEwLDAsMTE2LAorICAgIDExLDAsMTMxLDEsMCwxMTQsMjA5LDAsMTI0LDUsMCwxMDYsMTIsMCwxMjQsNCwKKyAgICAwLDEwNywyLDAsMTE0LDIwOSwwLDExOSw5MCwwLDEzMCwwLDAsODcsODksMTAwLAorICAgIDUsMCwxMDAsNSwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsOTAsMCw4OCwKKyAgICAxMTMsOTAsMCw4NywxMjQsMCwwLDgzLDQxLDYsMTIyLDIzOCw3MCwxMDUsMTAzLDExNywKKyAgICAxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLAorICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsCisgICAgMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LAorICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LAorICAgIDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMzEsMCwwLDAsMjUwLAorICAgIDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwxMjMsMTI1LDQ2LAorICAgIDEyMywxMjUsNzgsNDEsMTMsMTE0LDQsMCwwLDAsMTE0LDEzMCwwLDAsMCwyMTgsCisgICAgNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsCisgICAgMTg4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsNjUsCisgICAgMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDcxLDAsCisgICAgMCwwLDIxOCwxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSw5NSw4MCw4Miw2OSwKKyAgICA3MCw3Myw4OCwxMTQsMTUsMCwwLDAsNDEsNiwxMTQsODksMCwwLDAsMjE4LAorICAgIDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsMTgzLDAsMCwwLDIxOCwxLAorICAgIDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwxMjAsCisgICAgOTksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsCisgICAgMTE1LDExNiwyMjgsMywwLDAsMTE1LDM0LDAsMCwwLDAsMTAsMTUsMSwxMiwKKyAgICAxLDEyLDEsMTMsMSwxNSwxLDE2LDEsMTMsMSwxNSwxLDIxLDEsMywKKyAgICAxLDE3LDEsMTgsNCwyMSwxLDE1LDEsMywxLDI2LDEsMTE0LDE5NCwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLDAsMCwxMjQsMCwwLDEwNiwKKyAgICAwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMiwKKyAgICAwLDEwNyw4LDAsMTE0LDY4LDAsMTI0LDAsMCwxMDAsMywwLDI1LDEyNSwxLAorICAgIDAsMTAwLDQsMCwxMjQsMCwwLDEwNyw3LDAsMTE0LDY4LDAsMTI0LDEsMCwKKyAgICAxMDYsMSwwLDEwMCw1LDAsMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSwxLDAsCisgICAgMTI0LDEsMCw4Myw0MSw3LDEyMiwxNjcsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICAxMzQsMCwwLDAsNzgsMTE0LDEsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCisgICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCw0MSwyLDExNCw0MiwwLDAsMCwKKyAgICAxMTQsMTIyLDAsMCwwLDQxLDIsMjE4LDcsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwKKyAgICAxMTQsMTY5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDQsNCwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsNywxNSwxLDEyLDEsMTAsMSwxMiwxLDE5LDEsMTE0LDE5NiwwLDAsCisgICAgMCw5OSw1LDAsMCwwLDAsMCwwLDAsOSwwLDAsMCw1LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsMTI0LDQsMCwxMDAsMSwKKyAgICAwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsCisgICAgMTI1LDUsMCwxMTAsNTQsMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDksMCwxMTQsCisgICAgNDUsMCwxMjQsMSwwLDExMCwzLDAsMTA1LDAsMCwxMjUsNiwwLDExNiwxLAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEyNCw3LDAsMTI0LDQsMCwxMzEsMywwLDEyNSw1LDAsMTI0LDMsMCwxMTUsCisgICAgMjA3LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDEyMiwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDI1LDEzMSwxLDAsODMsMTI0LDAsMCwxMTUsMTMyLDAsMTI0LDUsMCw4MywxMTYsCisgICAgMywwLDEyNCwwLDAsMTMxLDEsMCwxMTYsMywwLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMDAsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDI0LDEyNSwKKyAgICA4LDAsMTE2LDQsMCwxMDYsNSwwLDEyNCw1LDAsMTA2LDYsMCwxMDAsMiwKKyAgICAwLDExNiwzLDAsMTI0LDUsMCwxMDYsNiwwLDEzMSwxLDAsMTI0LDgsMCwKKyAgICAyNCwxMzMsMiwwLDI1LDI1LDgzLDExMCwxNiwwLDExNiw3LDAsMTI0LDUsMCwKKyAgICAxMjQsMywwLDExNiwwLDAsMTMxLDMsMCw4MywxMDAsMiwwLDgzLDQxLDQsCisgICAgOTcsMjE0LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLAorICAgIDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICAzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLAorICAgIDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwKKyAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsCisgICAgMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsCisgICAgMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsCisgICAgMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAorICAgIDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLAorICAgIDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLAorICAgIDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsCisgICAgNzgsMTE0LDEyMSwwLDAsMCw0MSw4LDExNCwxODYsMCwwLDAsMTE0LDE5NiwwLAorICAgIDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNjcsMCwKKyAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMSwwLDAsCisgICAgMCwxMTQsMTk0LDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTUsMCwKKyAgICAwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxOTIsMCwwLDAsMTE0LAorICAgIDE3MCwwLDAsMCwxMTQsODksMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywKKyAgICAxMDgsMTE1LDk1LDExNCwxNjksMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsCisgICAgMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwxOSw0LDAsMCwKKyAgICAxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLDE1LDIsMjQsMSwxMiwxLDE4LAorICAgIDEsNiwzLDEyLDEsMjMsMSw2LDEsNCw0LDM1LDMsNDAsMiwxMTQsCisgICAgMTk5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLAorICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsNDMsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LAorICAgIDAsMCwyMywxMzEsMSwwLDEzMCwxLDAsMTE2LDMsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsCisgICAgMzIsNDEsNCwxMTQsMTUwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDc3LDAsCisgICAgMCwwLDExNCwxNDksMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDg4LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTQsNCwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICAxLDE1LDEsMTIsMSwxNiwxLDExNCwyMDAsMCwwLDAsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw3NCwxLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsMCwwLDk3LAorICAgIDEsMCwxMTYsMiwwLDExNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMCwxMjMsCisgICAgMCwxMTYsMSwwLDEwNiwzLDAsMTA2LDQsMCwxMzEsMCwwLDY4LDkzLDEwNiwKKyAgICAwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTE2LDUsMCwxMjQsNCwwLAorICAgIDEyNCwyLDAsMTMxLDIsMCwxMTQsNDAsMCwxMjQsMywwLDExNiwxLDAsMTA2LAorICAgIDYsMCwxMDcsNiwwLDExNCw5MSwwLDExNiw3LDAsMTI1LDUsMCwxMTAsMjcsCisgICAgMCwxMTYsMCwwLDEwNiw4LDAsMTI0LDMsMCwxMzEsMSwwLDExNCw0MCwwLAorICAgIDExNiw5LDAsMTI1LDUsMCwxMTAsMywwLDExMyw0MCwwLDExNiwxMCwwLDEyNCwKKyAgICA0LDAsMTI0LDUsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDExLDAsMTI0LDYsCisgICAgMCwxMjQsNCwwLDEzMSwyLDAsMSwxMTMsNDAsMCw4NywxMTYsMSwwLDEwNiwKKyAgICAzLDAsMTE2LDEyLDAsMjUsMTI1LDcsMCwxMjAsNzMsMCwxMDAsNSwwLDY4LAorICAgIDkzLDY1LDAsMTI1LDgsMCwxMjQsOCwwLDExNiwxLDAsMTA2LDMsMCwxMDcsCisgICAgNywwLDExNCwyMDYsMCwxMTYsMTMsMCwxMjQsOCwwLDEzMSwxLDAsMTI1LDksCisgICAgMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLDAsMTI0LDgsMCwyNSwxMjUsOSwKKyAgICAwLDExNiwxNCwwLDEyNCw3LDAsMTI0LDgsMCwxMjQsOSwwLDEzMSwzLDAsCisgICAgMSwxMTMsMTcwLDAsODcsMTIxLDE2LDAsMTE2LDEzLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAwLDEyNSwxMCwwLDg3LDExMCwyNCwwLDQsMTE2LDE1LDAsMTA3LDEwLDAsMTE0LAorICAgIDI1LDEsMSwxLDEsMTAwLDMsMCwxMjUsMTAsMCw4OSwxMTAsMSwwLDg4LAorICAgIDExNiwxNCwwLDEyNCw3LDAsMTAwLDIsMCwxMjQsMTAsMCwxMzEsMywwLDEsCisgICAgMTE2LDEzLDAsMTAwLDQsMCwxMzEsMSwwLDEyNSwxMSwwLDExNiwxNCwwLDEyNCwKKyAgICA3LDAsMTAwLDQsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTAwLDMsMCw4MywKKyAgICA0MSw2LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LAorICAgIDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwKKyAgICAxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsCisgICAgOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywKKyAgICAxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTQxLAorICAgIDAsMCwwLDExNCwzNCwwLDAsMCw3OCwxMTQsNjIsMCwwLDAsNDEsMSwKKyAgICAxMjIsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsNDEsMTYsMTE0LDU3LDAsCisgICAgMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsMCwKKyAgICAwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsMCwKKyAgICAwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLDAsCisgICAgMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLDAsCisgICAgMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsNDEsCisgICAgMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSw5NSwKKyAgICAxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLDAsCisgICAgMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsMTA4LAorICAgIDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLDAsCisgICAgMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwxNSwKKyAgICAxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsMTMsCisgICAgMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsMTMsCisgICAgMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwwLAogICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDY4LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNDYsCi0gICAgMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDAsMCwyMywxMzEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDAsMCwxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsMTA2LDQsMCwxMzEsMCwwLDgzLDQxLDIsNzgsMTIyLDI1LDExMCwKLSAgICAxMTEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDQxLDUsMTE0LDExLDEsMCwwLDExNCwKLSAgICAxNCwxLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDcsCi0gICAgMSwwLDAsNDEsMywxMTQsNjcsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCi0gICAgMTc5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LAotICAgIDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTMsOSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsMSwxNSwxLDEyLDEsMTksMSwxMiwxLDExNCwxMjgsMSwwLDAsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDE5LDAsMCwwLDEyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyMzIsMiwwLDAsMTI0LDEsMCw5NywwLDAsMTI0LAotICAgIDAsMCw5NywxLDAsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE0LDMzLAotICAgIDAsMTE2LDQsMCw5Nyw1LDAsMTEwLDYsMCwxMTYsNiwwLDk3LDUsMCwKLSAgICAxMTYsNywwLDExNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMCwxMzgsMCwxMTYsCi0gICAgMSwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDY4LDkzLDEyMSwwLDkyLAotICAgIDIsMCwxMjUsMywwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTE0LDY3LDAsMTI0LDMsMCwxMTYsMSwwLDEwNiwxMSwwLAotICAgIDEwNyw2LDAsMTE0LDExOCwwLDExNiwxMiwwLDEyNSw1LDAsMTEwLDI3LDAsMTE2LAotICAgIDAsMCwxMDYsMTMsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDY3LDAsMTE2LDE0LAotICAgIDAsMTI1LDUsMCwxMTAsMywwLDExMyw2NywwLDExNiwxNSwwLDEyNCw0LDAsCi0gICAgMTI0LDUsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDE2LDAsMTI0LDYsMCwxMzEsCi0gICAgMSwwLDEyNSw3LDAsMTI0LDcsMCwxMDYsMTcsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMSwxMTMsNjcsMCwxMTMsNjcsMCw4NywxMTYsMSwwLDEwNiw4LDAsMTE2LAotICAgIDE4LDAsMjUsMTI1LDgsMCwxMjAsNzMsMCwxMDAsMjYsMCw2OCw5Myw2NSwwLAotICAgIDEyNSw5LDAsMTI0LDksMCwxMTYsMSwwLDEwNiw4LDAsMTA3LDcsMCwxMTQsCi0gICAgMjQ4LDAsMTE2LDE5LDAsMTI0LDksMCwxMzEsMSwwLDEyNSwxMCwwLDExMCwxMywKLSAgICAwLDExNiwxLDAsMTA2LDgsMCwxMjQsOSwwLDI1LDEyNSwxMCwwLDExNiwyMCwKLSAgICAwLDEyNCw4LDAsMTI0LDksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTEzLDIxMiwKLSAgICAwLDg3LDEwMCw1LDAsMTAwLDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsCi0gICAgMCwxMDAsOCwwLDEwMCw2LDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsCi0gICAgMTI1LDExLDAsMTIwLDE0NiwwLDEyNCwxMSwwLDY4LDkzLDEyNiwwLDkyLDIsMCwKLSAgICAxMjUsMTIsMCwxMjUsMTMsMCwxMTYsMjEsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwKLSAgICAwLDAsMTI0LDEzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNSwxMDgsMSwxMTYsCi0gICAgMjIsMCwxMzAsMSwwLDEyNCwxMywwLDEwMCwxMSwwLDI1LDEyNSwxNCwwLDEyNCwKLSAgICAxMiwwLDExNiwxLDAsMTA2LDgsMCwxMDcsNiwwLDExNCwxNTAsMSwxMTYsMSwKLSAgICAwLDEwNiw4LDAsMTI0LDEyLDAsMjUsMTI1LDE1LDAsODAsMTEzLDY1LDEsMTIxLAotICAgIDE3LDAsMTE2LDE5LDAsMTI0LDEyLDAsMTMxLDEsMCwxMjUsMTUsMCw4MCw4NywKLSAgICAxMTMsNjUsMSw0LDExNiwyMywwLDEwNywxMCwwLDExNCwxOTAsMSwxLDEsMSwKLSAgICAxMTksNjUsMSw4OSwxMTMsNjUsMSw4OCwxMTMsNjUsMSw4NywxMTYsMjMsMCwxMDAsCi0gICAgMTIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTMsCi0gICAgMCwxMjQsMTUsMCwxMzEsMywwLDEsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTQsCi0gICAgMCwxMjQsMTQsMCwxMzEsMywwLDEsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTUsCi0gICAgMCwxMDAsMTYsMCwxMDYsMjQsMCwxMjQsMTMsMCwxMzEsMSwwLDEzMSwzLDAsCi0gICAgMSwxMjEsMTYsMCwxMTYsMTksMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSwxNiwwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDUwLDIsMSwxLAotICAgIDEsMTAwLDE4LDAsMTI1LDE2LDAsODksMTEwLDEsMCw4OCwxMTYsMjAsMCwxMjQsCi0gICAgOCwwLDEwMCwxNywwLDEyNCwxNiwwLDEzMSwzLDAsMSwxMTYsMTksMCwxMDAsCi0gICAgMTksMCwxMzEsMSwwLDEyNSwxNywwLDExNiwyMCwwLDEyNCw4LDAsMTAwLDE5LAotICAgIDAsMTI0LDE3LDAsMTMxLDMsMCwxLDEyNCwxMiwwLDEwMCw3LDAsMTA3LDIsCi0gICAgMCwxMTQsMTM4LDIsMTE2LDE5LDAsMTAwLDIwLDAsMTMxLDEsMCwxMjUsMTgsMCwKLSAgICAxMTYsMjAsMCwxMjQsOCwwLDEwMCwyMSwwLDEyNCwxOCwwLDEzMSwzLDAsMSwKLSAgICAxMTAsMCwwLDExNiwyMCwwLDEyNCw4LDAsMTAwLDIyLDAsMTE2LDI1LDAsMTMxLAotICAgIDAsMCwxMzEsMywwLDEsMTE2LDI2LDAsMTA2LDI3LDAsMTE2LDAsMCwxMDYsCi0gICAgMjgsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsMTIsMCwxMDAsNywwLDEwNywKLSAgICAyLDAsMTE0LDIyOCwyLDExNiwyOSwwLDEwNiwzMCwwLDEwMCwyMywwLDEzMSwxLAotICAgIDAsMSwxMDAsMjQsMCwxMTYsMjYsMCwxMDcsNiwwLDExNCwyMjgsMiwxMDAsMjUsCi0gICAgMCwxMTYsMzEsMCw5NSwzMiwwLDExMywyMjgsMiwxMTAsMCwwLDEwMCwxOCwwLAotICAgIDgzLDQxLDI3LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsCi0gICAgMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsCi0gICAgMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKLSAgICAxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwKLSAgICAxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLAotICAgIDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsCi0gICAgMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiwKLSAgICA5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCi0gICAgNDksMCwwLDAsMTE0LDE2NywwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCwxMTUsMTE0LDE5MiwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLAotICAgIDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCi0gICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTE0LDI5LDAsMCwwLDc4LDQxLDEsMTE0LDMxLAotICAgIDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc3LAotICAgIDAsMCwwLDEwNSw5LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDI1LAotICAgIDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsODQsMCwwLDAsMTIyLDMwLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsMjUsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLAotICAgIDAsMCwxMTQsODUsMCwwLDAsNzgsMTE0LDExMSwwLDAsMCw5MCw2LDExOSwKLSAgICAxMDUsMTEwLDExNCwxMDEsMTAzLDExNCwyNCwxLDAsMCwxMTQsNiwwLDAsMCwxMjIsCi0gICAgNCw0NiwxMTIsMTIxLDExOSwxMjIsNiw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwKLSAgICAxMjIsMyw5NSwxMDUsMTExLDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwKLSAgICAxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTIyLDcsMTA5LDk3LDExNCwxMTUsCi0gICAgMTA0LDk3LDEwOCw0MSwzMywxMTQsMTA2LDAsMCwwLDExNCw3LDAsMCwwLDExNCwKLSAgICAxMTcsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwyMzMsCi0gICAgMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE5MywwLDAsMCwxMTQsMTU4LAotICAgIDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwyMCwxLAotICAgIDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMTE0LDEyOCwxLDAsMCwxMTQsNjEsMCwwLDAsCi0gICAgMjE4LDMsOTcsMTA4LDEwOCwxMTQsMTAwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAotICAgIDI2LDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNjAsMSwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTI1LDEsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDIyNCwwLAotICAgIDAsMCwxMTQsMjMsMSwwLDAsMTE0LDI3LDEsMCwwLDQxLDE5LDIxOCwxMCwKLSAgICAxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsOTUsMTA1LDEwOSwxMTIsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDExNCw2NywwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTc5LDAsMCwwLDkwLDExLDExNSwKLSAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LAotICAgIDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMSwxMTUsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwyNSwwLDAsMCw5MCw5LDExMSwxMTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDYxLDksMCwwLDExNSwxMDgsCi0gICAgMCwwLDAsMCw5LDYsMSw2LDIsMTIsMSw5LDIsNiwzLDEyLAotICAgIDEsMjgsMSwxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwKLSAgICAxLDEyLDEsMjAsMywxMywxLDEzLDEsMTUsMSwxNSwyLDEzLDEsMjAsCi0gICAgMywzMywxLDE5LDIsMzEsMSwxMCwxLDE1LDEsMTMsMSw0LDIsMywKLSAgICAxLDEyLDEsNSwxLDEzLDEsMTIsMiwxMiwxLDE2LDEsMTYsMSwyNSwKLSAgICAzLDMsMSwxNiwxLDEzLDIsMTEsMSwxNiwzLDEyLDEsMTYsMywxMiwKLSAgICAxLDEyLDEsMTksMywxOSwxLDE5LDEsMTIsMSwxMywxLDEyLDEsMTE0LAotICAgIDEzNywxLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMzYsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwxLDExNiwxLDAsMTMxLDAsCi0gICAgMCwxMjUsMiwwLDExNiwyLDAsMTA2LDMsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTA2LDYsMCwxMjQsMiwwLDE0MCwwLDAsMTAzLDEsMCwxMzEsMSwwLDEsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDksMCwxMzEsMSwwLDEsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDEwLDAsMTMxLDEsMCwxLAotICAgIDExNiwxMSwwLDEwNiwxMiwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTE2LDAsMTE2LAotICAgIDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDEzLDAsMTMxLDEsMCwxLDExMCwKLSAgICAwLDAsMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDE0LDAsMTMxLDEsCi0gICAgMCwxLDEwMCwyLDAsODMsNDEsMywxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LAotICAgIDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTQsMTMxLDEsMCwKLSAgICAwLDc4LDQxLDE1LDExNCwxMzcsMSwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsNywKLSAgICAwLDAsMCwxMTQsNzksMSwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsODcsMSwKLSAgICAwLDAsMTE0LDEwMSwxLDAsMCwxMTQsMTA3LDEsMCwwLDExNCwyMjQsMCwwLAotICAgIDAsMTE0LDExLDEsMCwwLDExNCwyMCwxLDAsMCwxMTQsMywwLDAsMCwKLSAgICAxMTQsNTcsMCwwLDAsMTE0LDIzLDEsMCwwLDExNCw3NCwxLDAsMCw0MSwKLSAgICAzLDExNCwxMzUsMSwwLDAsMTE0LDEzNiwxLDAsMCw5MCwxNywxMTUsMTE3LDExMiwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSwKLSAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxNDgsOSwwLDAsMTE1LDE2LDAsMCwwLAotICAgIDAsMiwxMywxLDksMSwyOCwxLDE2LDEsMTYsMSwxNSwxLDE5LDEsCi0gICAgMTE0LDEzOCwxLDAsMCw0MSwzLDEyMiwzLDExOSwxMDUsMTEwLDExNCwxLDAsMCwKLSAgICAwLDExNCwyLDAsMCwwLDQxLDkyLDExNCw1OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwxMTQsMTksMCwwLAotICAgIDAsMTE0LDI4LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMzksMCwwLDAsCi0gICAgMTE0LDQzLDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAotICAgIDU1LDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY2LAotICAgIDAsMCwwLDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxOTQsMCwKLSAgICAwLDAsMTE0LDY5LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDkyLDAsMCwKLSAgICAwLDExNCw5OSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLAotICAgIDExNCwxMDIsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCwKLSAgICAxMTIsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE4NiwKLSAgICAwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDE4LDAsMCwwLDkwLDE3LDk1LAotICAgIDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLAotICAgIDExNCwxMjQsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwKLSAgICAxMjAsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTM2LDAsMCwwLDExNCwxNDMsCi0gICAgMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxNTcsMCwKLSAgICAwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzMsMCwwLAotICAgIDAsMTE0LDE4MSwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxOTYsMCwwLDAsCi0gICAgMTE0LDE5OSwwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LAotICAgIDIxMywwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwxNzQsMCwwLDAsMjE4LDYsCi0gICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwyNDIsMCwwLDAsMTE0LDI0MCwwLDAsMCwKLSAgICAxMTQsMjQ4LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwKLSAgICAxMSwxLDAsMCwxMTQsMjAsMSwwLDAsMTE0LDIzLDEsMCwwLDExNCwzMywKLSAgICAxLDAsMCwxMTQsMzQsMSwwLDAsMTE0LDQ5LDEsMCwwLDExNCw5LDEsCi0gICAgMCwwLDExNCw4LDEsMCwwLDExNCw2MCwxLDAsMCwxMTQsNTcsMSwwLAotICAgIDAsMTE0LDYxLDEsMCwwLDExNCwyNTIsMCwwLDAsMTE0LDc0LDEsMCwwLAotICAgIDExNCw4NywxLDAsMCwxMTQsMTAyLDEsMCwwLDExNCwxMDUsMSwwLDAsMTE0LAotICAgIDEwNiwxLDAsMCwxMTQsMTA4LDEsMCwwLDExNCwxMTEsMSwwLDAsMTE0LDEyMCwKLSAgICAxLDAsMCwxMTQsMTEyLDEsMCwwLDExNCwxMTQsMSwwLDAsMTE0LDExNSwxLAotICAgIDAsMCwxMTQsMTE2LDEsMCwwLDExNCwxMjIsMSwwLDAsMTE0LDEyNCwxLDAsCi0gICAgMCwxMTQsMjQxLDAsMCwwLDExNCwxMjcsMSwwLDAsMTE0LDEyOCwxLDAsMCwKLSAgICAxMTQsMTM3LDEsMCwwLDExNCwxMzgsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDgsCi0gICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTcwLDAsMCwKLSAgICAwLDYsMTcsNiwzLDEyLDEyLDEyLDUsMTIsNSwxMiw2LDEyLDEyLDEyLAotICAgIDEwLDEyLDksMTIsNSwxMiw3LDE1LDIyLDEyLDgsMTIsNCwxNSw0LDE5LAotICAgIDIwLDYsMiw2LDMsMjIsNCwxOSw2OCwxOSwyMSwxOSwxOSwxMiwxOSwxMiwKLSAgICAyMCwxMiwxMTQsMjIsMSwxOCwyLDYsMiw5LDIsOSwxLDksMiwxNSwKLSAgICAyNywxMiwyMywxMiwxOSwxMiwxMiwxOCw4LDEyLDE4LDEyLDExLDEyLDExLDEyLAotICAgIDE3LDEyLDE2LDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDEyLDM2LDE5LDI3LDE5LAotICAgIDEwNiwyNCwyMiw5LDMsMTIsMSwxNSw2MywxOCw0NSwxOSwyMzAsMTUsMjUsMTksCi0gICAgNzAsMTksNzEsMTksNjMsMTksMjQsMjIsMTEwLDE5LDQxLDI1LDQzLDI1LDE2LDYsCi0gICAgMywxOSw1NywxOSw1NywxOSwzOCwxOSwxMjksMTksMTQ2LDE5LDEzLDEyLDksMTIsCi0gICAgOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwyNywxMiw2LDE4LDI0LDEyLAotICAgIDMyLDEyLDE1LDEyLDExLDI0LDM1LDEyLDgsMTIsODcsCisgICAgMCwxMTUsODcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAorICAgIDIsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw0LDAsMTMxLAorICAgIDEsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw1LDAsMTMxLAorICAgIDEsMCwxLDEwMCwxLDAsMTAwLDIsMCwxMDgsNiwwLDEyNSwyLDAsMTI0LAorICAgIDIsMCw5Nyw3LDAsMTI0LDIsMCwxMDYsOCwwLDExNiwxLDAsMTA2LDksCisgICAgMCwxMTYsMTAsMCwyNSwxMzEsMSwwLDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwKKyAgICA1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDQ2LDExNCwzMywwLDAsMCw3OCw0MSwxMSwxMTQsMjA0LDAsMCwwLAorICAgIDExNCwxNCwwLDAsMCwxMTQsMTc0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LAorICAgIDE1MCwwLDAsMCwxMTQsMTYwLDAsMCwwLDIxOCwyNiw5NSwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMSwxMjAsMTE2LAorICAgIDEwMSwxMTQsMTEwLDk3LDEwOCwxMTQsMTE5LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMDgsMTA4LDExNCwyMSwwLDAsMCwxMTQsMSwwLDAsMCw0MSwzLAorICAgIDExNCwyMDIsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMDYsCisgICAgMCwwLDAsMTA4LDQsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTMsMiwKKyAgICAxNiwxLDE2LDMsMTIsMSw2LDEsMTE0LDIwNiwwLDAsMCw0MSw1MSwxMTQsCisgICAgMywwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMiwwLDAsMCwxMTQsMTYsCisgICAgMCwwLDAsMTE0LDE3LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE0LDQ4LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzIsMCwwLAorICAgIDAsMTE0LDUzLDAsMCwwLDExNCw1NCwwLDAsMCwxMTQsNTYsMCwwLDAsCisgICAgMTE0LDYzLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEwMSwKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDg1LDAsCisgICAgMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LDExNiw5MCw5LDk1LDgwLDc5LDgwLAorICAgIDg1LDc2LDY1LDg0LDY5LDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsCisgICAgMTQ0LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE0OCwKKyAgICAwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw4NywwLDAsMCwxMTQsMTUwLDAsCisgICAgMCwwLDExNCwxNjAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcxLDAsMCwKKyAgICAwLDExNCwxNzMsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTgxLDAsMCwwLAorICAgIDExNCwxOTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwKKyAgICAxODUsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxOTYsCisgICAgMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwyMDQsMCwKKyAgICAwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsNjAsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsOTYsMCwwLDAsNiwxNywKKyAgICA2LDIsMTIsOCwxMiw0LDE5LDIwLDYsMiw2LDMsMjIsNCwxOSw2OCwKKyAgICAxOSwyMSwxOSwxOSwxMiwxOSwxMiwxOSwxMiwxMSwxOCw4LDEyLDExLDEyLDEyLAorICAgIDEyLDE2LDEyLDM2LDE5LDI3LDE5LDEwMSwyNCwyNiw5LDMsMTgsNDUsMTgsNjAsCisgICAgMTIsMTgsMTIsMTcsMTIsMjUsMTIsMjksMTIsMjMsMTIsMTYsMTksNzMsMTksNzcsCisgICAgMTksMTMsMTIsOSwxMiw5LDE1LDQwLDEyLDE3LDYsMSwxMCwyLDEyLDI3LAorICAgIDEyLDYsMTgsMjQsMTIsMzIsMTIsMTUsMjQsMzUsMTIsNywxMiw0NywKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmggYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmMzQyYgotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApAQCAtMCwwICsxLDI1OTYgQEAKKy8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK2NvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbFtdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIyOCwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsOTYsMCw5MCwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCisgICAgMiwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDMsMCwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKKyAgICA2LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE2LAorICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE4LDAsMTAwLDE5LDAsCisgICAgMTMyLDAsMCw5MCw5LDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwKKyAgICAxMCwwLDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEzMiwxLDAsOTAsMTEsCisgICAgMCwxMDEsMTIsMCwxMDEsMTEsMCwxMDYsMTMsMCwxMzEsMSwwLDkwLDE0LDAsCisgICAgMTAwLDI1LDAsMTA2LDE1LDAsMTAwLDI2LDAsMTAwLDI3LDAsMTMxLDIsMCwxMDAsCisgICAgMjgsMCwyMyw5MCwxNiwwLDEwMSwxNywwLDEwNiwxOCwwLDEwMSwxNiwwLDEwMCwKKyAgICAyNywwLDEzMSwyLDAsOTAsMTksMCwxMDAsMjksMCw5MCwyMCwwLDEwMCwzMCwKKyAgICAwLDkwLDIxLDAsMTAwLDMxLDAsMTAzLDEsMCw5MCwyMiwwLDEwMCwzMiwwLAorICAgIDEwMywxLDAsOTAsMjMsMCwxMDEsMjMsMCw0LDkwLDI0LDAsOTAsMjUsMCwKKyAgICAxMDAsMzMsMCwxMDAsMzQsMCwxMDAsMzMsMCwxMDAsMzUsMCwxMDAsMzYsMCwxMzIsCisgICAgMSwxLDkwLDI2LDAsMTAwLDM3LDAsMTAwLDM4LDAsMTMyLDAsMCw5MCwyNywKKyAgICAwLDEwMCwzOSwwLDEwMCw0MCwwLDEzMiwwLDAsOTAsMjgsMCwxMDAsNDEsMCwKKyAgICAxMDAsNDIsMCwxMzIsMCwwLDkwLDI5LDAsMTAwLDQzLDAsMTAwLDQ0LDAsMTMyLAorICAgIDAsMCw5MCwzMCwwLDEwMCw0NSwwLDEwMCw0NiwwLDEwMCw0NywwLDEwMCw0OCwKKyAgICAwLDEzMiwwLDEsOTAsMzEsMCwxMDAsNDksMCwxMDAsNTAsMCwxMzIsMCwwLAorICAgIDkwLDMyLDAsMTAwLDUxLDAsMTAwLDUyLDAsMTMyLDAsMCw5MCwzMywwLDEwMCwKKyAgICAzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1MywwLDEwMCw1NCwwLDEzMiwzLAorICAgIDAsOTAsMzQsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTUsMCwKKyAgICAxMDAsNTYsMCwxMzIsMywwLDkwLDM1LDAsMTAwLDU3LDAsMTAwLDU3LDAsMTAwLAorICAgIDU4LDAsMTAwLDU5LDAsMTMyLDIsMCw5MCwzNiwwLDEwMCw2MCwwLDEwMCw2MSwKKyAgICAwLDEzMiwwLDAsOTAsMzcsMCwxMDEsMzgsMCwxMzEsMCwwLDkwLDM5LDAsCisgICAgMTAwLDMzLDAsMTAwLDYyLDAsMTAwLDMzLDAsMTAwLDYzLDAsMTAxLDM5LDAsMTAwLAorICAgIDY0LDAsMTAwLDY1LDAsMTMyLDEsMiw5MCw0MCwwLDcxLDEwMCw2NiwwLDEwMCwKKyAgICA2NywwLDEzMiwwLDAsMTAwLDY3LDAsMTMxLDIsMCw5MCw0MSwwLDcxLDEwMCwKKyAgICA2OCwwLDEwMCw2OSwwLDEzMiwwLDAsMTAwLDY5LDAsMTMxLDIsMCw5MCw0MiwKKyAgICAwLDcxLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwwLDAsMTAwLDcxLDAsMTAxLDQyLAorICAgIDAsMTMxLDMsMCw5MCw0MywwLDcxLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwwLAorICAgIDAsMTAwLDczLDAsMTMxLDIsMCw5MCw0NCwwLDcxLDEwMCw3NCwwLDEwMCw3NSwKKyAgICAwLDEzMiwwLDAsMTAwLDc1LDAsMTAxLDQ0LDAsMTAxLDQzLDAsMTMxLDQsMCwKKyAgICA5MCw0NSwwLDcxLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsMTAwLDc3LDAsCisgICAgMTAxLDQ0LDAsMTAxLDQyLDAsMTMxLDQsMCw5MCw0NiwwLDEwMywwLDAsOTAsCisgICAgNDcsMCw3MSwxMDAsNzgsMCwxMDAsNzksMCwxMzIsMCwwLDEwMCw3OSwwLDEwMSwKKyAgICA0NCwwLDEwMSw0MiwwLDEzMSw0LDAsOTAsNDgsMCw3MSwxMDAsODAsMCwxMDAsCisgICAgODEsMCwxMzIsMCwwLDEwMCw4MSwwLDEzMSwyLDAsOTAsNDksMCw3MSwxMDAsCisgICAgODIsMCwxMDAsODMsMCwxMzIsMCwwLDEwMCw4MywwLDEzMSwyLDAsOTAsNTAsCisgICAgMCw3MSwxMDAsODQsMCwxMDAsODUsMCwxMzIsMCwwLDEwMCw4NSwwLDEzMSwyLAorICAgIDAsOTAsNTEsMCw3MSwxMDAsODYsMCwxMDAsODcsMCwxMzIsMCwwLDEwMCw4NywKKyAgICAwLDEzMSwyLDAsOTAsNTIsMCwxMDAsMzMsMCwxMDAsODgsMCwxMDAsODksMCwKKyAgICAxMzIsMSwwLDkwLDUzLDAsMTAwLDkwLDAsMTAwLDkxLDAsMTMyLDAsMCw5MCwKKyAgICA1NCwwLDEwMCw5MiwwLDEwMCw5MywwLDEzMiwwLDAsOTAsNTUsMCwxMDAsOTQsCisgICAgMCwxMDAsOTUsMCwxMzIsMCwwLDkwLDU2LDAsMTAwLDMzLDAsODMsNDEsOTcsCisgICAgOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsCisgICAgODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCwKKyAgICA3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLAorICAgIDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwKKyAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LAorICAgIDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywKKyAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsCisgICAgMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLAorICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LAorICAgIDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsCisgICAgMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwxMDMsMTE5LDEwNSwxMTAsCisgICAgMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw0OSwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAorICAgIDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI1LDAsMCwKKyAgICAxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsMCwxMjUsMCwwLDEyNCwKKyAgICAwLDAsODMsNDEsNCw3OCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDgzLDAsMCwwLDExNSwxMywwLDAsMCwKKyAgICAxMDAsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDgzLDQxLDIsMTIyLAorICAgIDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LAorICAgIDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LAorICAgIDc4LDY3LDY1LDgzLDY5LDc5LDc1LDQxLDIsMjE4LDMsOTUsMTExLDExNSw5MCw3LAorICAgIDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwyNTAsMzgsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDYyLDIxOCwxMSw5NSwxMTQsMTAxLAorICAgIDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzMCwwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTIyLDM3LDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwKKyAgICA5NSw5OSw5NywxMTUsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICAxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDgzLDAsMCwwLDExNSwKKyAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAzNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsNDEsNCwyMTgsMywxMTUsCisgICAgMTIxLDExNSwyMTgsOCwxMTIsMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsCisgICAgOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwyNyw5NSw2Nyw2NSw4Myw2OSw5NSwKKyAgICA3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCwKKyAgICA3MCw3OSw4Miw3Nyw4Myw0MSwxLDExNCw2LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMDksOTcsCisgICAgMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwyOCwwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDEsMTgsMSwxNSw0LDEyLDMsMTE0LDExLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsNjQsMTA2LDEsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMxLDIsMCw4Myw0MSw0LDEyMiw0Miw2NywxMTEsMTEwLDExOCwxMDEsCisgICAgMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwKKyAgICAxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsCisgICAgMTAwLDEwNSw5NywxMTAsNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCwKKyAgICAyMzMsNCwwLDAsMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0MSwyLDIxOCwKKyAgICAzLDEwNSwxMTAsMTE2LDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDEsCisgICAgMjE4LDEsMTIwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDIxOCw3LDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDAsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDExNCwxNywwLDAsMCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsCisgICAgMzIsNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LAorICAgIDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwKKyAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDEzLDAsMCwwLDQxLDIsMTE0LAorICAgIDE0LDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDQxLDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDcsOTUsMTE0LAorICAgIDk1LDEwOCwxMTEsMTEwLDEwMyw0NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTE0LDE5LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMCwKKyAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCw4Myw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsODMsMCwwLAorICAgIDAsMTE1LDM3LDAsMCwwLDEwMywwLDAsMTI0LDAsMCw5MywyNywwLDEyNSwKKyAgICAxLDAsMTI0LDEsMCwxMTQsNiwwLDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwKKyAgICAwLDEzMSwxLDAsMTQ1LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwwLAorICAgIDQxLDIsMjE4LDYsMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsMiwyMTgsMiw0NiwKKyAgICA0OCwyMTgsNCwxMTIsOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksCisgICAgMTEyLDYyLDUyLDAsMCwwLDExNSwyLDAsMCwwLDksMSwxMjIsMzAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0Niw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDEsMiwyMTgsCisgICAgOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCisgICAgMSwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNTAsMCwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwyLDE1LDEsMTE0LDI4LDAsMCwwLDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEzNCwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDEwNywyLDAsMTE0LDUyLDAsMTI0LDAsMCwxMDYsMiwwLDExNiwzLDAsMTMxLAorICAgIDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsCisgICAgMCwxMjQsMywwLDEwMiwyLDAsODMsMTIwLDY5LDAsMTE2LDQsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsNjgsOTMsNTUsMCwxMjUsNCwwLDEyNCw0LDAsMTE2LDEsCisgICAgMCwxMDcsNiwwLDExNCw2NSwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsNCwwLAorICAgIDEwMCwyLDAsMTAwLDEsMCwxMzEsMSwxLDkyLDIsMCwxMjUsMSwwLDEyNSwKKyAgICAzLDAsMTI0LDEsMCwxMjQsMywwLDEwMiwyLDAsODMsMTEzLDY1LDAsODcsCisgICAgMTAwLDMsMCwxMjQsMCwwLDEwMiwyLDAsODMsNDEsNCwxMjIsMzIsODIsMTAxLAorICAgIDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsCisgICAgMCwwLDAsOTAsOCwxMDksOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDAsNDEsCisgICAgNiwyMTgsMywxMDgsMTAxLDExMCwxMTQsMjEsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsCisgICAgMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyNSwwLDAsMCwyMTgsOCwxMTQsMTAxLAorICAgIDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDQxLDUsCisgICAgMjE4LDQsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDIsMTE0LDExMSwxMTAsMTE2LDIxOCwxLDk1LAorICAgIDIxOCw0LDExNiw5NywxMDUsMTA4LDExNCwxNiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiw1NiwwLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwyLDE4LDEsMjQsMSwxMCwxLDE5LDEsMTIsMSwyNywxLDE0LDEsCisgICAgMTE0LDM4LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDEsMSwxMjIsMTI2LAorICAgIDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiw5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsCisgICAgOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwKKyAgICAxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSw5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LAorICAgIDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwKKyAgICAxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LAorICAgIDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDQxLDIsCisgICAgMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LDk3LDExNiw0MSwxLDExNCwzNSwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsNjgsMCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCw3LDExNCwzOSwwLDAsMCw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNTgsMCwwLDAsMTIxLDE2LDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwxLDAsMTA3LDEwLAorICAgIDAsMTE0LDQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwxMTAsMSwwLDg4LAorICAgIDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDY0LDEyNCwxLDAsMTA3LDIsMCwKKyAgICA4Myw0MSwzLDEyMiw0OSw4NCwxMDEsMTE1LDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTYsMTIxLDExMiwxMDEsNDYsNzAsMTA1LDAsMjQwLDAsMCw0MSwzLDExNCwzOSwKKyAgICAwLDAsMCwyMTgsNyw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDcsMTE1LDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMDEsNDEsMywxMTQsMzUsMCwwLDAsMjE4LDQsMTA5LDExMSwKKyAgICAxMDAsMTAxLDkwLDksMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDIsMTExLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgNzgsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLDEsMTYsMSwxMywKKyAgICAxLDksMSwxMTQsNDMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKKyAgICAyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0MywwLDAsMCw0MSwxLAorICAgIDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LAorICAgIDEwOCwxMDEsODcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCw0NCwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwwLDExNSwKKyAgICAxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwwLDAsMTE2LDIsCisgICAgMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiwzMCw4MiwKKyAgICAxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwKKyAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwKKyAgICAwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsMTAxLDExNiw5OSwxMTksCisgICAgMTAwLDExNCw0MywwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5MiwwLDAsMCwxMTUsNiwwLAorICAgIDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ2LDAsMCwwLDEwNSwxODIsMSwKKyAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMDAsMSwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwKKyAgICAwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwKKyAgICAxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsCisgICAgNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjEsCisgICAgMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsCisgICAgMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwwLDEwNiwxMCwwLAorICAgIDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsCisgICAgMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsCisgICAgMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LAorICAgIDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSw4OSwxMTAsMSwwLAorICAgIDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQxLDUsMTIyLAorICAgIDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDEwMCwKKyAgICA5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTYsCisgICAgMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsNjYsMTAxLAorICAgIDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywxMTQsMTE0LAorICAgIDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsCisgICAgMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsMCw5MCwKKyAgICAyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDIxOCwyLAorICAgIDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwxMTAsOTAsNiw3OSwKKyAgICA5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LDY1LDg0LDkwLDgsCisgICAgNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LDExMSwyMTgsNiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLDIxOCw3LDExNCwxMDEsCisgICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQwLDAsMCwwLDkwLDYsMTE3LDExMCwxMDgsMTA1LAorICAgIDExMCwxMDcsNDEsNiwxMTQsMzUsMCwwLDAsMjE4LDQsMTAwLDk3LDExNiw5NywxMTQsCisgICAgNDIsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsMTA5LDExMiw5MCwyLAorICAgIDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LAorICAgIDk3LDExNiwxMTEsMTA5LDEwNSw5OSw5OSwwLDAsMCwxMTUsMjYsMCwwLDAsMCwKKyAgICA1LDI0LDEsOSwxLDMzLDEsMywzLDIxLDEsMjAsMSwyMCwxLDEzLAorICAgIDEsMywxLDE3LDEsMTMsMSw1LDEsMTE0LDU1LDAsMCwwLDEwNSwxMiwKKyAgICAxMywwLDAsMjMzLDIsMCwwLDAsMTE0LDEzLDAsMCwwLDExNSwyLDAsCisgICAgMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICA5NSwxMjIsNCwxMTEsMTEyLDExNiw0NSwxMjIsMyw0NiwxMTIsMTIxLDEyMiw0LDQ2LDExMiwKKyAgICAxMjEsOTksNzgsMjE4LDEyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTksMiwwLDAsMCwxLDAsMCwwLDExLDAsMCwwLDYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDg3LDEsMCwwLDEyNCwxLDAsMTAwLDEsCisgICAgMCwxMDcsOSwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMiwwLAorICAgIDExNiwyLDAsMTMxLDIsMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsOSwwLAorICAgIDExNCw1OCwwLDEwMCwzLDAsMTI1LDMsMCwxMTYsMywwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEyNCwxLDAsMTE0LDcwLDAsMTAwLDQsMCwxMTAsMywKKyAgICAwLDEwMCw1LDAsMTI1LDIsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICA5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDUsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsOTIsMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwKKyAgICAwLDExNiw2LDAsMTA2LDcsMCwxMDYsOCwwLDEyNSw5LDAsMTI0LDksMCwKKyAgICAxMDAsMSwwLDEwNyw4LDAsMTE0LDE1NCwwLDExNiw5LDAsMTAwLDcsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTAwLDQsMCwxMDYsMTAsMCwxMjQsNiwwLDExNCwxNzIsCisgICAgMCwxMjQsNiwwLDExMCwzLDAsMTI0LDgsMCwxMjQsNywwLDEyNCw5LDAsCisgICAgMTAzLDMsMCwxMzEsMSwwLDEyNSwxMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsCisgICAgOCwwLDExNCwyNDEsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEwMCw4LAorICAgIDAsMTA3LDIsMCwxMTQsMjI5LDAsMTAwLDQsMCwxMjUsMiwwLDExMCwxMiwwLAorICAgIDExNiw2LDAsMTA2LDExLDAsMTA2LDEyLDAsMTI1LDIsMCwxMTYsMTMsMCwxMjQsCisgICAgMiwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCw0LDAsMTA3LDMsCisgICAgMCwxMTQsNjMsMSwxMjQsMiwwLDEwNiwxNCwwLDEzMSwwLDAsMTE1LDQyLDEsCisgICAgMTE2LDE1LDAsMTAwLDksMCwxMDYsMTYsMCwxMjQsMiwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEwMCwxMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDExNiwxNywKKyAgICAwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMTAsMCwxMTYsMTgsMCwxMjQsNCwwLAorICAgIDExNiwxOSwwLDEyNCwxMCwwLDExNiwyMCwwLDEwMCw4LDAsMjUsMjMsMTMxLDMsCisgICAgMCw4Myw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsCisgICAgMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsCisgICAgMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwKKyAgICA5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAorICAgIDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LAorICAgIDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwKKyAgICAxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLAorICAgIDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsMTAwLAorICAgIDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsCisgICAgOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLDEwOCwKKyAgICAxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsCisgICAgMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsCisgICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDczLAorICAgIDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLDMyLAorICAgIDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsMTAxLAorICAgIDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLDExNiwKKyAgICAxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsCisgICAgMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsCisgICAgMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSwKKyAgICA5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCwKKyAgICA5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSwKKyAgICA5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLAorICAgIDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKKyAgICAzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLAorICAgIDc4LDExMSwxMTAsMTAxLDExNCwzMCwwLDAsMCwxMTQsMjksMCwwLDAsMjE4LDEsCisgICAgNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsCisgICAgMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLDMzLAorICAgIDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsCisgICAgMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSw0MSwKKyAgICAyMSwyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LAorICAgIDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsCisgICAgOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE0LDM4LDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsNywwLDAsMCwKKyAgICAyMTgsMTQsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDIxOCw5LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyMTgsMTksNzgsMTExLDExNiwKKyAgICA3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCwyNiwwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwKKyAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsNywxMDUsMTE1LDk3LAorICAgIDEwOCwxMTAsMTE3LDEwOSwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCw0NywwLDAsMCwyMTgsNCw5NSw3OSw4MCw4NCwxMTQsMjgsMCwwLDAsCisgICAgMjE4LDgsOTUsODAsODksNjcsNjUsNjcsNzIsNjksMjE4LDE3LDY2LDg5LDg0LDY5LAorICAgIDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDExLDExNCwKKyAgICAzNSwwLDAsMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LAorICAgIDExNCwxMDUsMTAwLDEwMSwxMTQsNTcsMCwwLDAsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM3LDAsMCwwLDkwLDQsOTgsCisgICAgOTcsMTE1LDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywKKyAgICAxMTYsOTcsMTAzLDkwLDE1LDk3LDEwOCwxMDksMTExLDExNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDIxOCwxNyw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDI0MiwwLDAsMCwxMTUsNDYsMCwwLDAsMCwKKyAgICAxOCwxMiwxLDksMSw3LDEsMTIsMSw2LDEsMTIsMSwxOCwxLDE4LAorICAgIDEsMjQsMSwxMiwxLDEyLDEsMTIsMSwzNiwxLDEyLDEsMTgsMSw5LAorICAgIDIsMTIsMSwxMiwxLDEyLDEsMTIsMSwyMSwxLDIxLDEsMTE0LDc5LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDEsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMDYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzAsMCwxMTYsMywKKyAgICAwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTI0LDAsMCwKKyAgICAxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDMsMCwxMjQsMywKKyAgICAwLDExNiw1LDAsMTA3LDMsMCwxMTQsMTAyLDAsMTE2LDYsMCwxMDAsMywwLAorICAgIDEwNiw3LDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwyLDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDEyNCwyLDAsMTA2LDgsMCwxMDAsNCwwLDEzMSwxLDAsMTI1LDQsCisgICAgMCwxMjQsNCwwLDEwMCwxMSwwLDEwNyw3LDAsMTE0LDE1MywwLDExNiw2LDAsCisgICAgMTAwLDcsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTEwLDEyNSwwLDEyNCw0LDAsMTAwLDYsMCwxMDcsMiwwLDExNCwyMiwKKyAgICAxLDEyNCwyLDAsMTA2LDksMCwxMDAsNCwwLDEwMCw1LDAsMTMxLDIsMCwKKyAgICAxMDAsMTIsMCwyNSwxMjUsNSwwLDEyNCw1LDAsMTA2LDEwLDAsMTE2LDExLDAsCisgICAgMTMxLDEsMCwxMTUsMjIzLDAsMTE2LDYsMCwxMDAsOCwwLDEwNiw3LDAsMTE2LAorICAgIDExLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDUsMCwxMTYsMTIsCisgICAgMCwxMTYsMTEsMCwxMzEsMSwwLDEwMCwxLDAsMTMzLDIsMCwyNSwxMjUsNiwKKyAgICAwLDEyNCw2LDAsMTA2LDEzLDAsMTMxLDAsMCwxMTUsMjIsMSwxMTYsNiwwLAorICAgIDEwMCw5LDAsMTA2LDcsMCwxMjQsNSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDEyNCwyLDAsMTA2LDE0LDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwxMCwKKyAgICAwLDI1LDEyNSw3LDAsMTE2LDE1LDAsMTI0LDEsMCwxMjQsNywwLDExNiwxNiwKKyAgICAwLDEwMCwxMCwwLDI1LDIzLDEzMSwyLDAsODMsNDEsMTMsOTcsMTEwLDEsMCwKKyAgICAwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsOTksNDYsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwKKyAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsCisgICAgMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwKKyAgICAxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwKKyAgICAxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksCisgICAgMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwzMiw4MCw2OSw4MCwzMiw1MSw0OSwKKyAgICA1Miw1NSw0Nyw1Miw1Niw1NiwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LAorICAgIDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsCisgICAgMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwKKyAgICAxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsCisgICAgMTE1LDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LAorICAgIDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsCisgICAgOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDU4LDAsCisgICAgMCwwLDExNCw1NiwwLDAsMCwyMzMsMywwLDAsMCwxMjIsMzMsMTAxLDEyMCwKKyAgICAxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMTEsMTE0LAorICAgIDMyLDUxLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiwKKyAgICA1NywxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMiwxMTEsCisgICAgMTE0LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LAorICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNTIsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTEwLDMyLDk3LDEwOCwKKyAgICAxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICAxMTQsNTksMCwwLDAsNjIsMiwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAorICAgIDgwLDAsMCwwLDIzMywyNTQsMjU1LDI1NSwyNTUsNDEsMTcsMTE0LDcsMCwwLDAsCisgICAgMTE0LDY0LDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LAorICAgIDM4LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDQ3LAorICAgIDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzQsMCwwLDAsMTE0LAorICAgIDksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsNzAsCisgICAgMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjgsCisgICAgMCwwLDAsMjE4LDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLAorICAgIDczLDg4LDY5LDgzLDQxLDgsMTE0LDM1LDAsMCwwLDExNCw3NiwwLDAsMCwKKyAgICA5MCwxNiwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDkwLDcsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDksMTAwLDExMSwxMTYsCisgICAgOTUsOTksMTExLDExNywxMTAsMTE2LDExNCw1NywwLDAsMCw5MCw5LDExMSwxMTIsMTE2LAorICAgIDk1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsMTMsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsCisgICAgMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsMzAsMSwwLDAsMTE1LDQ0LDAsMCwwLAorICAgIDAsOSwxOCwxLDEyLDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE1LDEsCisgICAgMTUsMSwxMiwxLDksMSwxNSwxLDEyLDEsMjIsMSwxNSwxLDksMSwKKyAgICAxMiwxLDIyLDEsMTIsMSw5LDEsMTIsMSwxOSwxLDExNCw4NSwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDAsMTI0LDAsCisgICAgMCwxMzEsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjIsMCwxMDAsMiwwLAorICAgIDgzLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwxLDAsOTIsMywwLAorICAgIDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsMTIsMTE1LDgxLDAsCisgICAgMTI0LDMsMCwxMDYsMiwwLDEzMSwwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMywKKyAgICAyLDAsMjUsMTAwLDYsMCwxMDcsMywwLDExNCw4NSwwLDEyNCwwLDAsODMsCisgICAgMTIxLDE2LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCw4NywKKyAgICAxMTAsNDAsMCw0LDExNiw0LDAsMTE2LDUsMCwxMDIsMiwwLDEwNywxMCwwLAorICAgIDExNCwxNDMsMCwxLDEsMSwxMjQsMCwwLDEwMCwyLDAsMTAwLDksMCwxMzMsCisgICAgMiwwLDI1LDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCw0LAorICAgIDAsMTMxLDEsMCwxMTQsMTYwLDAsMTI0LDQsMCw4MywxMjQsMCwwLDgzLDQxLAorICAgIDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA1OSwwLDAsMCw3OCwxMTQsNTgsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwKKyAgICAyOSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwKKyAgICAyNTUsMjU1LDExNCw4NywwLDAsMCw0MSw3LDExNCwzMSwwLDAsMCwxMTQsMzIsCisgICAgMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODUsMCwwLDAsMTE0LAorICAgIDY2LDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNDQsMCwwLDAsNDEsNSwKKyAgICAyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDc4LDAsMCwwLDExNCwzNiwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LAorICAgIDEwMSw2MywxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLAorICAgIDI0LDEsMzUsMSw0LDEsMywxLDE2LDEsMTksMSwyMSwxLDExNCw5MSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDExNiwxLDAsMTE2LDIsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LAorICAgIDU5LDAsMTIxLDE0LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsCisgICAgMTEzLDg4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NSwwLDEsMSwxLAorICAgIDg5LDExMyw4OCwwLDg4LDExMCwyOSwwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwKKyAgICAwLDExNiw1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4NCwwLDEyNCwwLDAsCisgICAgODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsOCwKKyAgICAxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE0LAorICAgIDg0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDc0LAorICAgIDAsMCwwLDQxLDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw4MiwxLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMCwxLDIxLDEsMywxLDE0LDEsMTMsMSw4LDEsCisgICAgMjEsMSw0LDIsMTE0LDk1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw2MCwKKyAgICAwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDYsCisgICAgMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLAorICAgIDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsMTI1LDEsMCw4OSwxMTAsMSwwLAorICAgIDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsCisgICAgMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLAorICAgIDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLDAsMCwyMzMsMTI4LDAsMCwwLAorICAgIDQxLDMsMTE0LDM5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDAsMCwwLAorICAgIDAsNDEsMiwxMTQsMzUsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSw5OSwKKyAgICA5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDk0LDEsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDIsMywxLDE5LDEsMTMsMSwxMSwzLDEwLDEsMTE0LDk3LDAsCisgICAgMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsMTE0LDI5LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDQsCisgICAgMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsNzEsMCwxMjQsMCwKKyAgICAwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywwLDEwMCwzLDAsCisgICAgMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwwLAorICAgIDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwxMzEsCisgICAgMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwxMTYsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwKKyAgICAxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCwKKyAgICA3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsCisgICAgMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsMTE0LDU0LDAsMCwwLDc4LDQxLDIsCisgICAgMTE0LDk5LDAsMCwwLDExNCwxMDAsMCwwLDAsNDEsNywxMTQsNywwLDAsCisgICAgMCwxMTQsNjcsMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsMTE0LAorICAgIDksMCwwLDAsMjE4LDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNDcsMCwwLDAsCisgICAgMjE4LDYsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDEsMywxMTQsNzUsMCwwLDAsMTE0LAorICAgIDk4LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwKKyAgICAxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMDYsMSwwLDAsMTE1LAorICAgIDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLDExNCwxMDUsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKKyAgICAwLDAsMywwLDAsMCwxMTUsODQsMCwwLDAsMTAwLDEsMCwxMzUsMCwKKyAgICAwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLDAsMTI1LDEsMCwKKyAgICAxMjEsMTMsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCw4NywxMTAsMzAsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY2LDAsMSwxLDEsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLAorICAgIDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQxLAorICAgIDYsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMywKKyAgICAxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LAorICAgIDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsMTAxLDEwOCwxMDIsNDEsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LAorICAgIDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDEwLAorICAgIDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLDMyLDk3LDEwMyw5NywKKyAgICAxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDksCisgICAgMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLDAsCisgICAgMCwzMSwwLDAsMCwxMTUsODksMCwwLDAsMTI0LDEsMCwxMDAsMCwwLAorICAgIDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTEwLAorICAgIDQ2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LDMsMCwxMTQsNzAsCisgICAgMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsCisgICAgMTAyLDIsMCwyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsCisgICAgMiwwLDgzLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTEwLAorICAgIDEwMCwxMDgsMTAxLDMyLDM3LDExNSwyMTgsNCwxMTAsOTcsMTA5LDEwMSw0MSwyLDExNCwxMDYsCisgICAgMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDYsMCwwLDAsMTE0LDEwNCwwLAorICAgIDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwyMTgsNiwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTksCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsMTIyLDEsMCwwLDExNSwxMiwwLDAsMCwwLDEsMTIsMSwKKyAgICAxMiwxLDE1LDEsNiwxLDI1LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICA5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LAorICAgIDAsMCwwLDgzLDAsMCwwLDExNSw5MiwwLDAsMCwxMjAsNjYsMCwxMDAsCisgICAgMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LDAsNjgsOTMsCisgICAgNDYsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLAorICAgIDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsMTE2LDIsMCwKKyAgICAxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLDEsMTEzLDE5LDAsCisgICAgODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMywwLAorICAgIDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDUsNzgsMjE4LDEwLDk1LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsCisgICAgNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywKKyAgICAxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLAorICAgIDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsCisgICAgNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLAorICAgIDExMSwxMDgsMTAwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwxMzMsMSwKKyAgICAwLDAsMTE1LDgsMCwwLDAsMCwxLDI1LDEsMTUsMSwyOSwxLDEyMiwKKyAgICAyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCw5NywxMTIsNDEsMywyMTgsMTAsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMjAsMCwwLDAsMjE4LDksCisgICAgNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywxMTQsMTA5LDAsMCwwLAorICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKKyAgICAxLDExNCwxMDksMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDExNCwxLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMCw4LDIxLDcsMywxLDEzLDEsMTMsMiwxNyw1LDEzLDEsMTE0LAorICAgIDEyMywwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4NCwwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMiwwLAorICAgIDEyNSwzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDgwLDAsMTE2LAorICAgIDEsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgwLDAsMTAwLDIsMCwxMjUsNCwKKyAgICAwLDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LDAsMTI0LDMsMCwKKyAgICAxMDAsMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwwLDEsMTI0LDIsCisgICAgMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsCisgICAgMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDEwMiwKKyAgICA5NywxMTgsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw3OCwxMjIsNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLAorICAgIDEwMywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsNTgsMzIsCisgICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICAxMTQsNTksMCwwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE0LDMxLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsNjEsCisgICAgMCwwLDAsMTE0LDQ3LDAsMCwwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDEsNSwxMTQsMTA4LDAsMCwwLDIxOCw4LAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDIxOCw4LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsMTA5LDExNSwxMDMsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LAorICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwKKyAgICAxMDksMTQyLDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLDIxLDEsMjQsMSwKKyAgICA2LDEsMjksMSwxMTQsMTMwLDAsMCwwLDk5LDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMjI4LAorICAgIDEsMCwwLDEwNSwwLDAsMTI1LDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMzEsMCwxMjQsMiwwLDEyNCw0LDAsMTAwLDIsMCw2MCwxMTAsCisgICAgNiwwLDEwMCwzLDAsMTI1LDIsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksCisgICAgMCwxMTQsNTksMCwxMjQsMywwLDEyNCw0LDAsMTAwLDQsMCw2MCwxMjQsMCwKKyAgICAwLDEwMCwxLDAsMTAwLDUsMCwxMzMsMiwwLDI1LDEyNSw1LDAsMTI0LDAsCisgICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMzLDIsMCwyNSwxMjUsNiwwLDEyNCwwLAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMywyLDAsMjUsMTI1LDcsMCwxMjQsNSwKKyAgICAwLDExNiwwLDAsMTA3LDMsMCwxMTQsMTY1LDAsMTAwLDgsMCwxMDYsMSwwLAorICAgIDEyNCwyLDAsMTI0LDUsMCwxMzEsMiwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LDQsMCwxNDEsCisgICAgMSwwLDEzMCwxLDAsMTEwLDExMywwLDExNiw0LDAsMTI0LDYsMCwxMzEsMSwKKyAgICAwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjIzLDAsMTAwLDksMCwxMDYsMSwwLAorICAgIDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsCisgICAgMSwwLDEsMTE2LDUsMCwxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCisgICAgNTUsMCwxMTYsNCwwLDEyNCw3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLAorICAgIDAsMTE0LDIyLDEsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCisgICAgMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiw1LDAsCisgICAgMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNywKKyAgICA5LDAsMTE0LDIxNCwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTEsCisgICAgMCwyNSwxMzEsMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAorICAgIDEwNywxMCwwLDExNCw3NCwxLDEsMSwxLDg5LDExMCw1OSwwLDg4LDExNiw4LAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTMzLDEsCisgICAgMTAwLDEyLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsCisgICAgMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsCisgICAgNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjEsMTgsMCwxMjQsMSwwLDEwMCwxMywKKyAgICAwLDI1LDEwMCwxNCwwLDY0LDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCisgICAgMCwxMDcsMTAsMCwxMTQsMTcxLDEsMSwxLDEsODksMTEwLDQzLDAsODgsMTE2LAorICAgIDgsMCwxMjQsNywwLDEzMSwxLDAsMTI0LDEwLDAsMTA3LDMsMCwxMTQsMjE0LAorICAgIDEsMTE2LDMsMCwxMDAsMTIsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKKyAgICAxMjQsNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEwMCw3LDAsMTAwLAorICAgIDEsMCwxMzMsMiwwLDI1LDgzLDQxLDE1LDk3LDEyMiwxLDAsMCw4Niw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDQ1LAorICAgIDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTAzLDk3LDEwNSwKKyAgICAxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwKKyAgICAzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsNDEsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwKKyAgICA5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwKKyAgICA5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDk3LDExNCwxMDMsCisgICAgMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsCisgICAgMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsCisgICAgMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDExNSwxMTYsOTcsCisgICAgMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LDExNywxMTAsOTksOTcsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LDEwNiwwLDAsMCwxMjIsMTAsCisgICAgNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAxMiwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsMTIsMCwwLDAsMTIyLDMwLAorICAgIDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQzLAorICAgIDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiwKKyAgICA5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQ4LDExNCwxMDEsOTcsCisgICAgOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsCisgICAgMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTExLDEwMiwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMjE4LDUsMTA5LAorICAgIDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLAorICAgIDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksCisgICAgODIsMTE0LDQ3LDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LDEwNywwLDAsMCwKKyAgICAxMTQsMzEsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwKKyAgICAxNCwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTksCisgICAgMCwwLDAsNDEsMTEsMTE0LDUzLDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLAorICAgIDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLAorICAgIDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LAorICAgIDc1LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNSwKKyAgICA5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE1OSwxLDAsMCwxMTUsNzYsMCwKKyAgICAwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwxMiwxLDEwLDEsCisgICAgMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEwLDEsMTgsMSwxOCwxLAorICAgIDE1LDEsMTAsMSwxNSwxLDE4LDEsMTUsMSwxMCwxLDEyLDEsMTIsMSwKKyAgICAzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsMTAsMSwxNSwxLAorICAgIDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSw5LDEsMTE0LDE0MSwKKyAgICAwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwyLDAsMTI0LAorICAgIDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LDQsMCwxMDAsMSwKKyAgICAwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwKKyAgICAwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEyNCwzLDAsCisgICAgMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsMywwLDEwNiw4LAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNSwwLAorICAgIDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsODMsNDEsNiwxMjIsCisgICAgNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDEwNiwKKyAgICAwLDAsMCwxMTQsMzUsMCwwLDAsNDEsOSwyMTgsNywxMDksOTcsMTE0LDExNSwKKyAgICAxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsCisgICAgMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLAorICAgIDExMiwxMDEsMTE0LDEwNSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiw5MCwxNiw5NSwKKyAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCwKKyAgICAxMDcsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDUsMTE0LDUzLDAsMCwwLAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5MCwwLDAsMCwyMTgsCisgICAgNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjE0LDEsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLDQsMiwxOCwxLAorICAgIDExNCwxNDcsMCwwLDAsMTE0LDU5LDAsMCwwLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwzLDAsCisgICAgMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsNCwwLDEwNiwKKyAgICA1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDgzLAorICAgIDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsCisgICAgMTIxLDExNCwxMzUsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE3LAorICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLAorICAgIDQsMTE0LDE0NiwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxNDAsMCwwLDAsCisgICAgMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyNiwxLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLDEwMCwyLDAsMTA4LAorICAgIDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLAorICAgIDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMiwwLAorICAgIDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsMTAwLDIsMCwxMDAsCisgICAgMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiw2LDAsMTI0LDAsCisgICAgMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDEzMSwxLAorICAgIDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsMTE4LDEwMSwxMTQsMTE1LDk3LAorICAgIDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsCisgICAgMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA1OSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LAorICAgIDEyMiwxMDEsMTE0LDQ5LDAsMCwwLDkwLDcsNjYsMTIxLDExNiwxMDEsMTE1LDczLDc5LAorICAgIDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LDEwMCwxMDEsMTE2LDEwMSwKKyAgICA5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDI1LDczLDExMCw5OSwKKyAgICAxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsNjgsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDQxLDUsCisgICAgMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCwxNTEsCisgICAgMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LDEwMSwxMTAsOTksMTExLAorICAgIDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsOTUsMTAwLDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwyMzYsMSwwLDAsMTE1LDEwLDAsMCwwLDAsNSwxMiwxLAorICAgIDE4LDEsMTUsMSwxOCwxLDExNCwxNTUsMCwwLDAsMTE0LDEyNywwLDAsMCwKKyAgICAyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk5LDIsMCwwLAorICAgIDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMiwwLDEwMCwzLAorICAgIDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwwLDEwNiwxLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKKyAgICAwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LAorICAgIDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsNCwwLDEyNCwxLAorICAgIDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsMCw5NSw1LDAsCisgICAgMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLDEyMCw3MywwLDExNiwKKyAgICA2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwxMjUsNSwwLDEyNSwKKyAgICA2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LDYsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsOTUsOSwwLDgwLAorICAgIDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LDEwLDAsMTA3LDgsCisgICAgMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsMCwxMzEsMiwwLAorICAgIDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsMTI0LDAsMCwxMzEsCisgICAgMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLAorICAgIDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LDcsMCwxMTQsMzIsCisgICAgMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwwLDEyNCwzLDAsCisgICAgMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsMTAzLDAsMCwxMDcsCisgICAgMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LDEzLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsNCwwLDEwNiwxMiwKKyAgICAwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCw0LDAsODMsNDEsCisgICAgOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLAorICAgIDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwzMiwxMDUsMTEwLDEwMCwKKyAgICAxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTE3LDk4LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsCisgICAgMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsMzIsMTAxLDEwOSwxMTIsCisgICAgMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSwzMiwKKyAgICAxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsMzIsMTE1LDExMiwxMDEsCisgICAgOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5NSw5NSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMyw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNjIsMjE4LAorICAgIDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMTEsCisgICAgMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMTE0LDU5LDAsMCwwLDQxLDE1LDExNCwxMTUsMCwwLDAsMTE0LDE1NywKKyAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMjEsMCwwLDAsMjE4LDEwLDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwxMTUsMTAxLDExNiw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMjcsMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsNjUsODQsNjksMTE0LAorICAgIDE1OSwwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwzOCwwLDAsMCwyMTgsNiwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwNiwwLDAsMCw5MCw4LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjcsMCwwLDAsMTE0LDE1NiwwLDAsCisgICAgMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwKKyAgICAxNTksMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjMsMTE1LDExMiwKKyAgICAxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwyNTMsMSwwLDAsMTE1LDYwLDAsMCwwLDAsMTIsCisgICAgMTIsNCw2LDEsMTUsMiwzLDEsMTksMSwxMywxLDUsOCwyNCwxLAorICAgIDksMywxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSw1LDIsNCwzLAorICAgIDEyLDIsMTUsMSwzLDEsMTksMSwxMywxLDUsMiw2LDEsMTIsMiwKKyAgICA5LDEsMTUsMSw2LDEsMTYsMSwxNiwyLDExNCwxNjcsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwKKyAgICAwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwKKyAgICAwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwwLDEwMSw3LDAsCisgICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLAorICAgIDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksCisgICAgMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLDEwMCw5LDAsMTAwLAorICAgIDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDksCisgICAgMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsCisgICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMTUsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMjIsNTksODMsMTExLDEwMiwKKyAgICAxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsCisgICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDEyMiw2NSw4MywxMTEsMTAyLDExNiwxMTksOTcsCisgICAgMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCisgICAgNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAorICAgIDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsMTA2LDEsMCwxMTYsCisgICAgMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCwzNywwLAorICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsMSwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCw4MywKKyAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCw0MSw1LDIxOCw3LAorICAgIDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSwKKyAgICA5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCw4NCw5NSw4NSwKKyAgICA4Myw2OSw4MiwxMTQsNDAsMCwwLDAsOTAsMTgsNzIsNzUsNjksODksOTUsNzYsCisgICAgNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsMiwyMTgsMywKKyAgICA5OSwxMDgsMTE1LDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3NSwyLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE0MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE0LDIxLAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksMCwxMjQsMCwwLAorICAgIDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMjQsCisgICAgMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwwLDAsMTAwLDMsCisgICAgMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsNDcsMCwxMjQsMCwKKyAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwwLDEyNSw0LDAsCisgICAgMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwxMzEsMiwwLDEyNSwKKyAgICA1LDAsODcsMTAwLDAsMCw4MSw4Miw4OCw4NywxMTAsMjIsMCw0LDExNiw5LAorICAgIDAsMTA3LDEwLDAsMTE0LDEzOCwwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLAorICAgIDEsMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDEyNiwwLDAsMCw5MCwKKyAgICAxMSwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDgwLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsCisgICAgNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LAorICAgIDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4MywKKyAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNDcsMCwwLDAsMTE0LDcsMCwwLAorICAgIDAsMjE4LDcsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxNzIsMCwwLDAsMTE0LAorICAgIDE2OSwwLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsCisgICAgMTE0LDQwLDAsMCwwLDQxLDYsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwKKyAgICAwLDkwLDEyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwxMjEsMTE0LAorICAgIDE3MSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDgyLDIsMCwwLDExNSwyMiwwLDAsMCwwLDIsCisgICAgOSwxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsMTgsMSwyOSwxLAorICAgIDEzLDEsOSwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTUsMTAxLDk3LAorICAgIDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3OCw5OSw0LDAsCisgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLAorICAgIDEzMSwxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMzEsMCwxMDAsMCwwLDgzLDEyMSwxNCwwLDExNiwxLDAsMTI0LDQsMCwxMzEsCisgICAgMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2OSwKKyAgICAwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsMCw4OCwxMjAsODEsMCwKKyAgICAxMTYsMywwLDEzMSwwLDAsNjgsOTMsNzAsMCw5MiwyLDAsMTI1LDUsMCwKKyAgICAxMjUsNiwwLDEyNCw0LDAsMTA2LDQsMCwxMTYsNSwwLDEyNCw2LDAsMTMxLAorICAgIDEsMCwxMzEsMSwwLDExNCw4MCwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwKKyAgICAwLDEyNCw1LDAsMTI0LDEsMCwxMjQsNCwwLDEzMSwyLDAsMTAwLDEsMCwKKyAgICAxMjQsNCwwLDEzMSwyLDEsMTI1LDcsMCwxMjQsNywwLDgzLDExMyw4MCwwLAorICAgIDg3LDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMTU4LDAsMCwwLDQxLDgsMTE0LAorICAgIDE3OCwwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxNjEsCisgICAgMCwwLDAsMTE0LDkyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTIxLDAsCisgICAgMCwwLDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0MSw4LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsMTc3LDAsCisgICAgMCwwLDExNCwxMjcsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTY0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5NywyLDAsMCwxMTUsCisgICAgMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsMywxLDE0LDEsCisgICAgMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLDksMSwxMjIsMzEsCisgICAgODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCisgICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCisgICAgMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwKKyAgICAwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgxLDAsMCwwLDExNCwxMjcsCisgICAgMCwwLDAsNDEsNCwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LAorICAgIDM1LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTMsMiwwLDAsMTE1LDgsMCwwLDAsMCw3LAorICAgIDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsMTEyLDAsMCwwLAorICAgIDExNCwxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwKKyAgICAxNzUsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTczLDAsMCwwLDIxOCwxMSwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTcyLDAsMCwwLAorICAgIDExNCwxNzgsMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwxNjgsMCwwLDAsNjMsMiwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LDcsMTgsMTUsMywKKyAgICAxLDIxLDE1LDMsMSwxMTQsMTY4LDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTMsOTUsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDEyMiw4Myw2Niw5NywxMTUsCisgICAgMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksMTExLDEwOSwxMDksMTExLAorICAgIDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMjEsCisgICAgMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLDEwMCwxLDAsMjUsCisgICAgMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwxMDAsMSwwLDEzMSwKKyAgICAyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsMTA2LDMsMCwxMDAsCisgICAgMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLDEyNCwzLDAsMTAwLAorICAgIDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLDUsMCwxMDcsMywKKyAgICAwLDgzLDQxLDYsMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsMTA1LDExMCwxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLAorICAgIDEyMSwzOSw0NiwxMTQsMjksMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLAorICAgIDAsMCwxMTQsNTYsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDQxLDQsMTE0LDM4LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDM0LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCw0MSw1LDExNCwxMDgsMCwwLDAsMTE0LDEyNiwKKyAgICAwLDAsMCwxMTQsOTQsMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTU5LDAsMCwwLDEzMiwyLDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDMsMjUsMSwyMiwxLDE5LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCisgICAgMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsCisgICAgMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLAorICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNDAsMiwwLAorICAgIDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2NiwKKyAgICA5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LAorICAgIDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LDIsMCwxMDAsMiwKKyAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLDEyNCwyLDAsMTI0LAorICAgIDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLDgzLDQxLDMsMTIyLAorICAgIDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTksCisgICAgMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDAsNDEsMzIsMTE0LAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLDgsMjE4LDgsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExMiwwLDAsMCwxMTQsMTA3LDAsMCwKKyAgICAwLDExNCw0NywwLDAsMCwxMTQsMTIxLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywKKyAgICAxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwKKyAgICAxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsMTE4LDAsMCwKKyAgICAwLDQxLDMsMTE0LDEwOCwwLDAsMCwyMTgsNiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTQsMTQ2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxNDMsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwxOCwxLDEyLDEsCisgICAgOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsCisgICAgMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwxMjEsCisgICAgMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTUxLDIsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwKKyAgICAwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTU5LDAsMCwwLAorICAgIDExNCwxODYsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsMTkzLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwxODQsMCwwLDAsMTI3LDIsMCwwLDExNSwxMCwwLDAsCisgICAgMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsMTg0LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwKKyAgICAzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LAorICAgIDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDEwMCw4LDAsCisgICAgMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDkwLAorICAgIDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwKKyAgICAxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDkwLDksMCwKKyAgICAxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwKKyAgICAwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsNzksMTEyLDExNiwxMDUsCisgICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsCisgICAgOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKKyAgICAxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsCisgICAgMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSwxNTcsMiwwLDAsMTE1LDIsMCwwLDAsMCw2LDEyMiwyMyw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTAwLAorICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwNSwxLAorICAgIDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywKKyAgICAxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LAorICAgIDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDAsMTA1LAorICAgIDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsCisgICAgMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLDExNSw1OCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LDEwNSwxMDksMTAxLDM5LAorICAgIDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwzMiwxMDUsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LDExNiwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMTUsMTA1LDEyMiwKKyAgICAxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDQxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTQsMTAxLAorICAgIDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLAorICAgIDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwKKyAgICAxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTE0LDEzMywwLDAsMCw0MSwxLDExNCwxOTYsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDExNiw5NywxMTYsMTE1LDE2NSwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICA0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwKKyAgICAxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwKKyAgICAxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMjE4LDgsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDkwLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDE3OCwyLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsMTUwLAorICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTA4LAorICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5OCwwLDAsCisgICAgMCwxODgsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsODcsMTEwLDU4LDAsCisgICAgNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LDQsMCwxLDEyMiwKKyAgICAyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsCisgICAgMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwxMDAsMywwLDEyNSwKKyAgICA0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LDAsMTI0LDMsMCwKKyAgICAxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTIyLDM5LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsCisgICAgMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLAorICAgIDk3LDExNiw5Nyw0MCw0MSwxMTQsMTA2LDAsMCwwLDc4LDQxLDUsMTE0LDE1NywwLAorICAgIDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNCw0MCwwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDExNCwxNTUsMCwwLDAsNDEsNSwxMTQsMTA4LDAsCisgICAgMCwwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNTMsMCwwLAorICAgIDAsMjE4LDMsMTAxLDEyMCw5OSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxOTUsMiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwxNSwxLDMsMSwKKyAgICAxOSwxLDE4LDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNCwyOSwwLDAsCisgICAgMCw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw5LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTAwLDQsMCwxMjQsMywwLDEzMSw0LDIsODMsNDEsNSwxMjIsCisgICAgMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsOTcsCisgICAgMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwKKyAgICAxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwxMTIsCisgICAgMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLAorICAgIDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTE0LDE4OSwwLDAsMCwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwKKyAgICAxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiw4NCwxMTQsNjgsMCwwLDAsNDEsMywxMTQsMTIxLAorICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMjE4LDcsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwKKyAgICAxMDEsNDEsNCwxMTQsMTA4LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMzUsMCwKKyAgICAwLDAsMTE0LDIwMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsCisgICAgMTExLDk1LDk5LDExMSwxMDAsMTAxLDIwNSwyLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDUsMjEsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwwLDQzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxNzQsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsMTI1LDMsMCwxMjEsCisgICAgMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCwKKyAgICAyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsMCwxLDEsMSwxMDAsCisgICAgMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwxOSwwLDEyNCwwLDAsCisgICAgMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsMCw4NywxMTAsMTgsMCwKKyAgICA0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsMSwxLDg5LDExMCwxNjIsCisgICAgMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwyNSwxMzEsMSwwLDEyNSwKKyAgICAzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsCisgICAgMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCisgICAgMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwzNCwwLDExNiw4LDAsCisgICAgMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMSwwLDEwMCwKKyAgICA1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKKyAgICAxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIyMCwwLDEsCisgICAgMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCw2LDAsMTI0LDQsMCwKKyAgICAxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsNywwLDEwMCw0LDAsCisgICAgMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCisgICAgOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwxMjQsMiwwLDEzMSwyLAorICAgIDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwyLDAsMTMxLDIsMCwKKyAgICAxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzAsMSwxMjQsNCwwLDEwMCwxLAorICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDE3MCwxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsMCwxMTYsMTcsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyMSwzNiwwLDEyNCwwLAorICAgIDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCw2LDAsMTMxLDMsMCwKKyAgICAxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMCwKKyAgICAxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsMTY5LDEsMSwxLDEsODksCisgICAgMTEwLDEsMCw4OCwxMjQsOSwwLDgzLDQxLDExLDEyMiwxOTAsNjcsMTExLDExMCw5OSwKKyAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLAorICAgIDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsCisgICAgMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDEzMywwLDAsMCwKKyAgICAxMTQsMTM4LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDEyMiwKKyAgICAxMywxMjMsMTI1LDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTIzLDEyNSwxMTQsODksCisgICAgMCwwLDAsMTE0LDkwLDAsMCwwLDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsCisgICAgOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwKKyAgICAxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTksMTE0LDE1NywwLDAsMCwKKyAgICAxMTQsNzksMCwwLDAsMTE0LDY2LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LAorICAgIDE5NSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsNDAsCisgICAgMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMzYsMCwKKyAgICAwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyMDYsMCwwLAorICAgIDAsMTE0LDcsMCwwLDAsMjE4LDE5LDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LDEwNSwKKyAgICAxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxNTAsMCwwLDAsCisgICAgMTE0LDMxLDAsMCwwLDExNCwxOTksMCwwLDAsNDEsMTAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTI2LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMTM5LDAsMCwwLAorICAgIDExNCw4OSwwLDAsMCwyMTgsMiwxMTUsMTE2LDExNCw1MywwLDAsMCwyMTgsMTAsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LDE1MywwLDAsMCw5MCwKKyAgICAxMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NywwLDAsMCwKKyAgICAyMTMsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxNSwxLDYsMSwzLAorICAgIDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LDIsMTYsCisgICAgMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsOSwxLDEyLDEsMTMsCisgICAgMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsNiwxLDcsMSwxNSwKKyAgICAxLDE4LDEsMTMsMSwyMiwxLDEyLDEsOSwxLDE1LDEsMywxLDE5LAorICAgIDEsMTcsMSwxMywxLDUsMSwxMjIsMjEsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwxMTQsCisgICAgODcsMCwwLDAsNDEsMTAsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxMTMsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICAxOTksMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCwyMDYsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTk0LDAsMCwKKyAgICAwLDE1NSwyLDAsMCwxMTUsMTQsMCwwLDAsMTIsMiwxMiw4LDEyLDEzLAorICAgIDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwxMTQsMTk0LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMTUsMTEyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCisgICAgMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMSw3LDAsCisgICAgMTM1LDAsMCwxMDIsMSwwLDEwMCw4LDAsMTAwLDksMCwxMzQsMCwwLDEzMSwKKyAgICAxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCisgICAgMCwxMzEsMSwwLDkwLDksMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLAorICAgIDkwLDEwLDAsMTM1LDAsMCw4Myw0MSwxNCwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwKKyAgICAxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKKyAgICAwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDEsMCw4Myw0MSwyLAorICAgIDEyMiw3NSw2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDEsMiwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NSwwLDAsMCwxNCwKKyAgICAzLDAsMCwxMTUsNCwwLDAsMCwwLDMsOSwxLDEyMiwxOSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsODMsNDEsMSw3OCwKKyAgICA0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNCwxMTgsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDIxOCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAorICAgIDYsOTUsOTUsMTAxLDExMyw5NSw5NSwyMCwzLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAwLDEsMTgsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLDEsNzgsNDEsMywKKyAgICAyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsCisgICAgMjQsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsCisgICAgMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLAorICAgIDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsCisgICAgMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsCisgICAgMTE0LDExNCwyMTAsMCwwLDAsMTE0LDE5MywwLDAsMCw0MSwyLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCw0MSwxLDExNCwyMTEsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5MywwLDAsMCwyNywzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLAorICAgIDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwKKyAgICAxLDExNCwzNSwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTU3LDAsMCwwLDM5LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMywxMjIsMjMsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTQzLDE3LDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTMxLAorICAgIDAsMCw4Myw4NywxMDAsMiwwLDgxLDgyLDg4LDEwMCwyLDAsODMsNDEsMywKKyAgICAxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LAorICAgIDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMjE4LDEsMTE0LDc4LDQxLDMsMTE0LAorICAgIDQ5LDAsMCwwLDExNCw1MCwwLDAsMCw5MCw0LDExNCwxMDEsOTcsMTAwLDQxLAorICAgIDMsMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDU0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAyMDAsMCwwLDAsNDQsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDIxLAorICAgIDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDExLDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLAorICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE4NSwwLDAsCisgICAgMCwxMTQsMjEzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDEyMywwLDAsMCwKKyAgICAxMTQsMTkzLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMTEsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMTE0LDIxMCwwLDAsMCw5LDMsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwxMiwzLDYsMiwxMiw2LDEyLDQsMTIsMywyNCwxMiwxOCwKKyAgICA1LDExNCwyMTAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsNjQsMCwwLDAsCisgICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKKyAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsCisgICAgMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLDEwMCwxMCwwLDgzLAorICAgIDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LAorICAgIDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwxMjQsMiwwLAorICAgIDEwNiwxLDAsMTAwLDIsMCwxMjQsMiwwLDEwNiwyLDAsMTA1LDIsMCw4MywKKyAgICA0MSwzLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTE0LDEzMywwLDAsMCwxMTQsMTM0LDAsMCwwLDQxLAorICAgIDMsMTE0LDM5LDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICA5MCw3LDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE0LDIwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTk3LDAsMCwwLDU0LDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwyNyw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLAorICAgIDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsNCwwLAorICAgIDEzMSwyLDEsODMsNDEsMiw3OCwyMTgsNSw5NSwxMDksMTExLDEwMCwxMDEsNDEsMiwKKyAgICAxMTQsOTcsMCwwLDAsMTE0LDE5OCwwLDAsMCw0MSw1LDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDkwLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsNTMsMCwwLDAsCisgICAgMTE0LDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxOTksMCwwLDAsNTksMywwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjIwLDAsMCwwLDEwNSwxODIsMSwKKyAgICAwLDAsOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTcsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLDExNiwwLDAsMTI0LAorICAgIDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTAzLDAsCisgICAgMCwxMjUsNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLDAsMTE2LDEsMCwKKyAgICAxMjQsNCwwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsMCwxMjQsNCwwLAorICAgIDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwxMjQsNiwwLDEwNiwKKyAgICAyLDAsMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsODcsMTIwLDEzMiwwLAorICAgIDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwwLDEyNSw3LDAsCisgICAgMTE2LDQsMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwxMjUsNCwwLDEyMSwKKyAgICAxNywwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMSw4NywKKyAgICAxMTMsOTQsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwwLDEsMSwxLAorICAgIDExOSw5NCwwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjExLAorICAgIDAsMSwxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwxMDAsMSwwLDEyNCwKKyAgICA0LDAsMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCw4Myw4Nyw4OSwxMDAsCisgICAgMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMyw5NCwwLDg4LAorICAgIDExMyw5NCwwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMjQsMywwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLDAsMTI0LDEsMCwKKyAgICAxMzEsMiwwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKKyAgICA0OCwxLDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LDAsMTAwLDEsMCwKKyAgICAxMjQsMSwwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LDEwMCwyLDAsMTAwLAorICAgIDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCw4OCwxMDAsMiwwLAorICAgIDgzLDQxLDQsMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwKKyAgICAxMjIsMjcsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMTIsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxMSwxMTQsMzgsCisgICAgMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDMzLDAsCisgICAgMCwwLDExNCwyOCwwLDAsMCwxMTQsMywwLDAsMCw5MCw1LDEwOSwxMDcsCisgICAgMTAwLDEwNSwxMTQsMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCw1NSwKKyAgICAwLDAsMCw0MSw5LDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKKyAgICA1MywwLDAsMCwxMTQsMjIwLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsMTE0LDk0LDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTk4LDAsMCwwLDY0LDMsMCwwLDExNSwzOCwwLAorICAgIDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwKKyAgICAxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLAorICAgIDMsMSwxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICAxOTksMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjE4LDAsCisgICAgMCwwLDUwLDMsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLAorICAgIDUsMTIsNSwxMTQsMjE4LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsCisgICAgMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4MywKKyAgICA0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKKyAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICA1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDc2LDAsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LAorICAgIDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDEyNCwyLAorICAgIDAsMTMxLDEsMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsMCwxMDAsMSwwLAorICAgIDEyNCwxLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsODMsNDEsNCw3OCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsODksMCwwLDAsNDEsCisgICAgNCwxMTQsMTU3LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE0MSwwLDAsMCwKKyAgICAxMTQsMTQ3LDAsMCwwLDQxLDUsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDIwOSwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTg3LDAsMCwwLDk3LDMsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwKKyAgICAxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLAorICAgIDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwMiwKKyAgICAwLDAsMCwxMDMsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwzMSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LAorICAgIDQxLDYsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLAorICAgIDAsMTE0LDExNCwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCwyMDIsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDIyMywwLDAsMCw5MywzLDAsMCwxMTUsNiwwLAorICAgIDAsMCwxMiwyLDYsMiwxMiw2LDExNCwyMjMsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsMTM2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCisgICAgMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsCisgICAgMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsCisgICAgMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksCisgICAgMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsCisgICAgMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMSwxMiwwLDEwMCwxOCwwLDEwMCwKKyAgICAxOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMywwLDEwMCwyMCwwLDgzLDQxLAorICAgIDIxLDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LAorICAgIDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksCisgICAgMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsNDEsMywxMTQsMTA4LDAsMCwwLDExNCwxMDYsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxODUsMCwwLDAsMTIwLDMsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsMSw5LDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLDAsMTExLDMzLDAsCisgICAgMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsMiwwLDgzLAorICAgIDQxLDEsNzgsNDEsMiwxMTQsMjExLDAsMCwwLDExNCwxMTgsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxMywwLDAsMCwxMjQsCisgICAgMywwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LDEsMTIyLDI2LDY5LDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMTYsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLDEsNzgsNDEsCisgICAgMywxMTQsMjE0LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwxMTQsMjE1LDAsMCwwLDEyOCwzLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywKKyAgICAxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMiwwLAorICAgIDEyNSwyLDAsMTE2LDQsMCwxMDAsMSwwLDEyNCwxLDAsMTA2LDUsMCwxMjQsCisgICAgMCwwLDEwNiw2LDAsMTMxLDMsMCwxLDEyNCwyLDAsODMsNDEsMiwxMjIsCisgICAgMzgsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDExMCwzMiwxMTcsMTEwLDEwNSwxMTYsMTA1LAorICAgIDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDQxLAorICAgIDcsMTE0LDEyMSwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxNDUsMCwwLDAsCisgICAgOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksCisgICAgMTE0LDEwNSwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwKKyAgICAzLDExNCwxMDgsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAxODYsMCwwLDAsMTMxLDMsMCwwLDExNSwxMCwwLDAsMCwwLDIsNiwKKyAgICAxLDE1LDEsNiwxLDE2LDEsMTIyLDMzLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsCisgICAgOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEyNCwxLDAsMTMxLDIsMCwxLDExNiw0LDAsMTAwLDEsMCwxMjQsMCwwLAorICAgIDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMDAsMiwwLAorICAgIDgzLDQxLDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsCisgICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsCisgICAgMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDQxLDcsCisgICAgMTE0LDEyMSwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxNDUsMCwwLDAsOTAsCisgICAgMTIsMTAxLDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTA1LDAsCisgICAgMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxOTEsMCwwLDAsMTM5LDMsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsMiwxOSwxLDYsMSwxMjIsMzEsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwKKyAgICAwLDExNSw0OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCisgICAgMSwwLDEwMCwxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsMywwLDY4LDEzMSwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDI5LDAsMCwwLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAorICAgIDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsOTMsMjEsMCwKKyAgICAxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLDIzLDEwNywyLDAsCisgICAgODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsMTg1LDAsMCwwLAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDIxOCw2LDExNSwKKyAgICAxMTcsMTAyLDEwMiwxMDUsMTIwLDQxLDEsMjE4LDksMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI1MCw5LDYwLDEwMywKKyAgICAxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNDgsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgNiwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDM4LDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSwKKyAgICA3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjYsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE1OSwwLDAsMCwxNDUsMywwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwyLDE5LDEsMTgsMSwxMjIsMzAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDYzLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LDExMCwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwxMTQsNCwwLAorICAgIDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg3LDAsCisgICAgMCwwLDE1MSwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDY5LAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LAorICAgIDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyMDIsMCwwLDAsMTU1LDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDQxLDEsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxNTcsMCwwLDAsMTU5LDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMTIsMCwwLDAsMTE0LDExMSwKKyAgICAwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE4NSwwLAorICAgIDAsMCwxMTQsMjEzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE4NiwwLDAsCisgICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE4NywwLDAsMCwKKyAgICAxMTQsMjAyLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMjI0LDAsMCwwLDExMiwzLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsMTIsNiw2LDIsMTIsNCwxMiw0LDEyLDMsMTIsOCwxMiw2LDEyLAorICAgIDYsMTIsNCwxMiw0LDExNCwyMjQsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTQsCisgICAgMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsCisgICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsOTAsCisgICAgMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwxMTIsCisgICAgMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLAorICAgIDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCisgICAgNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywKKyAgICAxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LAorICAgIDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LAorICAgIDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwKKyAgICAwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsCisgICAgODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDIxOCw1LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNCw5MywwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LAorICAgIDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsMTA4LAorICAgIDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCwxMSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg1LDAsMCwwLDE3MiwzLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDEyMiwKKyAgICAyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsCisgICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsCisgICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwKKyAgICAxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwwLAorICAgIDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LAorICAgIDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LAorICAgIDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw1OCwwLDAsMCwxMTQsMzAsCisgICAgMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDgsOTUsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMjIsMywxMTUsMTIxLDExNSwxMjIsNCwKKyAgICAxMTIsOTcsMTE2LDEwNCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDMyLDAsMCwwLAorICAgIDQxLDQsMTE0LDEwOCwwLDAsMCwxMTQsMjIyLDAsMCwwLDIxOCwzLDEwMCwxMTEsCisgICAgMTE2LDkwLDIsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE3OCwzLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMjcsMSwxMiwyLDQsMywxMjIsMzgsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCw5MiwyLDAsMTI1LDEsMCwxMjUsCisgICAgMiwwLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMjUsMTI0LAorICAgIDIsMCwxMzEsMiwwLDgzLDQxLDEsNzgsNDEsNCwxMTQsMjM4LDAsMCwwLAorICAgIDExNCwxMTcsMCwwLDAsMTE0LDcsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwOCwwLDAsMCw5MCwxOCwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzMsMCwKKyAgICAwLDAsMTg4LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLDEyMiwKKyAgICAzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMTgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMjQsCisgICAgMCwwLDEwNiwyLDAsMTA3LDMsMCwxMTQsMTExLDAsMTI0LDAsMCwxMDYsMywKKyAgICAwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwKKyAgICAxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsCisgICAgNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwKKyAgICAwLDExNCwxMDIsMCwxMjQsMiwwLDEwNiw2LDAsMTI0LDAsMCw5NSw3LDAsCisgICAgMTI0LDEsMCwxMjQsMCwwLDk1LDIsMCwxMjQsMCwwLDEwNiw3LDAsODMsCisgICAgNDEsMSw3OCw0MSw4LDExNCw5MywwLDAsMCwxMTQsMjMzLDAsMCwwLDExNCwKKyAgICAyMzQsMCwwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjMxLDAsMCwwLDExNCwxMjcsCisgICAgMCwwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMjMyLDAsMCwwLDQxLDMsMTE0LAorICAgIDEwOCwwLDAsMCw5MCwxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsCisgICAgOTcsMTE2LDEwMSwxOTIsMywwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLAorICAgIDE1LDEsMjEsMywyNywxLDksMSwxMiwxLDksMSwxMjIsMjcsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsCisgICAgOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwKKyAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwKKyAgICAxLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDEwNSwxMTYsMTAxLDExNCwxMTQsMjQwLAorICAgIDAsMCwwLDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsMjA1LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCisgICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsCisgICAgODMsNDEsMSw3OCw0MSwyLDExNCwzMSwwLDAsMCwxMTQsMjQwLDAsMCwwLAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwyMDgsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsCisgICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLAorICAgIDIwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwKKyAgICAxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw0NywwLDAsMCwxMTQsMjMyLDAsMCwKKyAgICAwLDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsCisgICAgOTUsMjExLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDEwNyw2LDAsODMsNDEsCisgICAgMSw3OCw0MSwxLDExNCwyNDAsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLAorICAgIDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwKKyAgICAxMTUsOTUsOTUsMjE0LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzIsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDI0NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDIxNywzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDEzLDExNCwxMTIsMCwKKyAgICAwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLAorICAgIDAsMTE0LDE4NSwwLDAsMCwxMTQsMjM4LDAsMCwwLDExNCwyMzMsMCwwLDAsCisgICAgMTE0LDI0MCwwLDAsMCwxMTQsMjQyLDAsMCwwLDExNCwyNDMsMCwwLDAsMTE0LAorICAgIDI0NCwwLDAsMCwxMTQsMjQ2LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDIzMCwwLDAsMCwxNjUsMywwLDAsMTE1LDIwLDAsMCwwLAorICAgIDEyLDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMywxMiwzLDEyLDMsCisgICAgMTIsMywxMiwzLDExNCwyMzAsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsMTE4LAorICAgIDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMCw1LDAsCisgICAgMTAwLDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTMyLAorICAgIDAsMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDkwLDgsCisgICAgMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTMsMCwKKyAgICAxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLAorICAgIDAsMCw5MCwxMSwwLDEwMCwxNywwLDgzLDQxLDE4LDIxOCwxNiw5NSw3OCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSw0LDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMjQsMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4MywKKyAgICA0MSwxLDc4LDQxLDIsMTE0LDIzMCwwLDAsMCwxMTQsMjMyLDAsMCwwLDQxLAorICAgIDQsMTE0LDEwOCwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICAxMTQsMjM2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxODUsMCwwLDAsMjIzLDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsCisgICAgMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwKKyAgICAxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LAorICAgIDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDQ3LDAsCisgICAgMCwwLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTcwLDAsMCwwLDExNCwxOTAsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyMjYsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAorICAgIDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsODQsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE1OSwwLDAsMCwyMzUsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKKyAgICAwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsMzAsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwMiwwLAorICAgIDAsMCwyMzgsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSwKKyAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwxMTQsMzAsMCwKKyAgICAwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LDE4OSwwLDAsCisgICAgMCwxMTQsMjA0LDAsMCwwLDg0LDQxLDEsMTE0LDIwNSwwLDAsMCw0MSwyLAorICAgIDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg3LDAsMCwwLDI0MSwzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDE2NCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTg2LDAsMCwwLDI0NCwzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMzAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAorICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTkwLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDExNCwxOTEsMCwwLDAsMjQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMzEsMiwwLDEsMTE2LDIsMCwxMDYsMywwLDEyNCwwLAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDk4LDc2LDExMSw5NywxMDAsCisgICAgMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwKKyAgICAxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LAorICAgIDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDM4LAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEyMywzMywxMTQsMTI1LDQxLDQsMTE0LDEwNSwwLDAsMCwxMTQsMjMyLDAsCisgICAgMCwwLDExNCwxMjEsMCwwLDAsMTE0LDE5MiwwLDAsMCw0MSwyLDExNCwxMDgsCisgICAgMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTkzLDAsMCwwLDI1MCwzLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMTQsMTgzLAorICAgIDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMjAyLDAsCisgICAgMCwwLDExNCwxODcsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTkxLDAsMCwKKyAgICAwLDExNCwxOTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI0NywwLDAsMCwyMjIsCisgICAgMywwLDAsMTE1LDE2LDAsMCwwLDEyLDEsMTIsMywxOCw5LDEyLDMsCisgICAgMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsMjQ3LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLAorICAgIDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsMCwKKyAgICAxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDEsCisgICAgNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwKKyAgICAwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCwKKyAgICAxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMCwwLDEwMCwKKyAgICAxMywwLDEwMCwxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw0LAorICAgIDAsMTAwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwxMzEsMSwwLAorICAgIDkwLDExLDAsMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsMCwwLDEyMCwKKyAgICA0OCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsCisgICAgMzEsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLAorICAgIDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsCisgICAgMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwKKyAgICAzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAorICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsNywwLAorICAgIDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LAorICAgIDExNSwwLDAsMCwxMTQsMjUwLDAsMCwwLDQxLDIsMTE0LDE3MCwwLDAsMCwKKyAgICAyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMjUwLDAsMCwwLDExLDQsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywKKyAgICAxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMDcsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCisgICAgNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsMTE2LDIsMCwxMDYsCisgICAgMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTIwLDU5LDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsMTQsMCwxMjQsCisgICAgMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsNTEsMCw0LDExNiw1LAorICAgIDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxLDEsMTE5LDUxLDAsODksMTEzLDUxLAorICAgIDAsODgsMTEzLDUxLDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQxLDMsCisgICAgMTIyLDExMyw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsCisgICAgMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwKKyAgICAzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LDEwOCwxMTUsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSw2LDExNCwKKyAgICA3LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LAorICAgIDExNCw2MCwwLDAsMCwxMTQsNjEsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsCisgICAgMTA3LDAsMCwwLDQxLDMsMTE0LDE3MCwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMTksNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywyNSwxLDE2LAorICAgIDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLDIsMTIyLDIyLDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMjMsMCwwLDAsMTI0LDEsMCwKKyAgICAxMDAsMSwwLDEwNywyLDAsMTE0LDUzLDAsMTIxLDE2LDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMjIsMCw0LDExNiwyLDAsCisgICAgMTA3LDEwLDAsMTE0LDUyLDAsMSwxLDEsMTAwLDIsMCw4Myw4OSwxMTAsMSwKKyAgICAwLDg4LDEyMSwxNywwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDI1LDEyNSwKKyAgICAyLDAsODcsMTEwLDQ2LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMTgsMCwKKyAgICAxLDEsMSwxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKKyAgICAyLDAsMTI0LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCw2MCw4OSwKKyAgICAxMTAsMSwwLDg4LDEyNCwyLDAsODMsNDEsMywxMjIsMjEwLDcxLDEwMSwxMTYsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsCisgICAgMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCwKKyAgICA5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzAsCisgICAgMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDUsMCwwLDAsCisgICAgMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsNywwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwxMzcsMCwKKyAgICAwLDAsMTE0LDI1NSwwLDAsMCw0MSwzLDExNCwxNzAsMCwwLDAsMTE0LDM1LAorICAgIDAsMCwwLDExNCwyNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwzNiw0LDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMCw4LDEyLDEsMywxLDE2LDEsMTMsMywKKyAgICA5LDEsMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTIyLDMxLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTE5LDAsMCwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTE0LDM5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLAorICAgIDEsMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwwLDExMCwyMSwwLDEyNCwyLAorICAgIDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMDMsMCwwLAorICAgIDEyNSw0LDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDg4LDAsMTE2LAorICAgIDMsMCwxMDYsNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDExNiwKKyAgICAzLDAsMTA2LDUsMCwxMjQsMSwwLDEwMCwwLDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDEyNCw0LDAsMTI0LDUsMCw5NSw2LDAsMTI0LDUsMCw4Myw0MSwyLAorICAgIDc4LDExNCwxMjQsMCwwLDAsNDEsNywxMTQsMTE1LDAsMCwwLDExNCwxMjQsMCwKKyAgICAwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwxNzksMCwwLAorICAgIDAsMTE0LDE2MCwwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLDYsMTE0LDE3MCwwLAorICAgIDAsMCwxMTQsMTI2LDAsMCwwLDExNCwyNTMsMCwwLDAsMTE0LDEyNywwLDAsCisgICAgMCwxMTQsMTI4LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwOCwxMDEsMTAzLAorICAgIDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw1OCw0LDAsMCwKKyAgICAxMTUsMTgsMCwwLDAsMCw0LDE1LDEsMjQsMiwxNSwxLDYsMSwxMiwKKyAgICAxLDE2LDEsMTgsMSw5LDEsMTIyLDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsMCwwLDksMCwKKyAgICAwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjQzLDAsMCwwLDEwMywKKyAgICAwLDAsMTI1LDQsMCwxMjAsMjMwLDAsMTI0LDIsMCw2OCw5MywxOTEsMCwxMjUsCisgICAgNSwwLDExNiwwLDAsMTI0LDUsMCwxMTYsMSwwLDExNiwyLDAsMTAyLDIsCisgICAgMCwxMzEsMiwwLDExNSw0MywwLDExMywxMywwLDEyNCwwLDAsMTA2LDMsMCwKKyAgICAxMjQsNSwwLDEzMSwxLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMTMsMCwxMTYsNCwwLDEyNCw2LDAsMTAwLDIsMCwxMzEsMiwKKyAgICAwLDExNCwxMDYsMCwxMjQsNiwwLDEwNiw1LDAsMTI0LDEsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMTI1LDcsMCwxMTAsMTgsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAorICAgIDEsMCwxMjQsNiwwLDEzMSwyLDAsMTI1LDcsMCwxMjQsNywwLDEwMCwxLAorICAgIDAsMTA3LDgsMCwxMTQsMTM5LDAsMTEzLDEzLDAsMTI0LDcsMCwxMDYsNywwLAorICAgIDEwMCwxLDAsMTA3LDksMCwxMTQsMTU4LDAsMTI0LDcsMCw4MywxMjQsNywwLAorICAgIDEwNiw4LDAsMTI1LDgsMCwxMjQsOCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgMTkxLDAsMTE2LDksMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsNCwKKyAgICAwLDEwNiwxMCwwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDExNiwKKyAgICAxMSwwLDEwNiwxMiwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDEyNSw3LAorICAgIDAsMTI0LDQsMCwxMjQsNywwLDk1LDgsMCwxMjQsNywwLDgzLDEwMCwxLAorICAgIDAsODMsNDEsNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsNDYsNzgsMTE0LDE4MSwwLDAsMCwxMjIsMTksMTE1LDExMiwxMDEsCisgICAgOTksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDEsMTMsMTE0LDE0MywwLDAsMCwxMTQsNjksMCwwLDAsMjE4LDUsOTgsMTIxLAorICAgIDExNiwxMDEsMTE1LDExNCwxLDEsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE4MSwwLAorICAgIDAsMCwxMTQsMiwxLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLAorICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwxMjEsMCwwLDAsCisgICAgMTE0LDE2MCwwLDAsMCw0MSw5LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDE4MCwwLDAsMCwyMTgsMTQsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDEsMTEwLDExNiwKKyAgICAxMTQsMTIxLDExNCwyNTMsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCw5LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDczLDQsMCwwLDExNSwKKyAgICA0MCwwLDAsMCwwLDUsNiwxLDEzLDEsMjEsMSwzLDEsMTUsMSwKKyAgICAxMiwxLDE1LDEsMjEsMiwxOCwxLDEyLDEsMywxLDE1LDEsNCwxLAorICAgIDksMSwxMiwxLDEyLDUsMTcsMiwxOCwxLDksMSwxMjIsMjAsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsCisgICAgMTAxLDk5LDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMjQsMiwwLDEwMCwKKyAgICAxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsCisgICAgMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsCisgICAgMTMxLDMsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICA1OCwwLDEwMCwxLDAsODMsMTI0LDQsMCwxMDYsMywwLDEwMCwxLDAsMTA3LAorICAgIDgsMCwxMTQsMTMyLDAsMTI0LDQsMCwxMDYsNCwwLDEyNSw1LDAsMTI0LDUsCisgICAgMCwxMTQsMTI1LDAsMTAwLDIsMCwxMjQsNCwwLDk1LDUsMCwxMTYsNiwwLAorICAgIDEyNCwxLDAsMTI0LDUsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDMsMCwxMjQsCisgICAgNCwwLDk1LDQsMCwxMjQsNCwwLDgzLDEwMCwxLDAsODMsMTEwLDQsMCwKKyAgICAxMjQsNCwwLDgzLDEwMCwxLDAsODMsNDEsMywxMjIsOTgsMTAyLDEwNSwxMTAsMTAwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LAorICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwKKyAgICAzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNzgsOTAsCisgICAgOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCw3LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMTI3LDAsMCwwLAorICAgIDExNCwxNTYsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMjMwLDAsMCwwLDQxLAorICAgIDYsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICAxMTQsMTgwLDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4MSwKKyAgICAwLDAsMCwxMDUsNCwwLDAsMTE1LDI2LDAsMCwwLDAsNCwxMiwxLAorICAgIDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsMyw5LDEsCisgICAgMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwKKyAgICAwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwwLDgzLDQxLAorICAgIDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsCisgICAgMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKKyAgICAxMTQsMTgxLDAsMCwwLDExNCwxMjcsMCwwLDAsNDEsNCwxMTQsMTcwLDAsMCwKKyAgICAwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNjQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDE4MiwwLDAsMCwxMjcsNCwwLDAsMTE1LDgsMCwwLDAsMCw4LDE4LAorICAgIDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LAorICAgIDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwKKyAgICAwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwyNTAsMCwwLDAsMTE0LDI1NSwwLAorICAgIDAsMCwxMTQsMSwxLDAsMCwxMTQsMiwxLDAsMCwxMTQsNSwxLDAsCisgICAgMCwxMTQsMTgxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDI0OSwwLDAsMCw3LDQsMCwwLDExNSwyMiwwLDAsMCwxMiwyLDYsCisgICAgMiwxOCw4LDE4LDE3LDE4LDIyLDE4LDE1LDMsMSwxOCwzMSwzLDEsMjEsCisgICAgMjEsMywxLDExNCwyNDksMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsMTMzLDAsCisgICAgMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCw5MCwKKyAgICA3LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMDAsMTIsMCwxMzIsMSwwLDkwLDEwLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLAorICAgIDAsMCw5MCwxMSwwLDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLAorICAgIDAsMTMxLDEsMCw5MCwxMywwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsCisgICAgOTAsMTQsMCwxMDAsMTAsMCw4Myw0MSwxOSwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsCisgICAgMTAwLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLAorICAgIDExMCwxMTYsMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksCisgICAgMzIsOTcsMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiw5OCwxMDEsMTA1LAorICAgIDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsCisgICAgMTExLDExNCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LDExNSwzMiw5OCwKKyAgICAxMDEsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDUsMCwwLDAsNywwLDAsMCwxMTUsMTIyLDAsMCwwLDEwMywwLDAsCisgICAgMTI1LDMsMCwxMjAsNTIsMCwxMjQsMiwwLDY4LDkzLDQ0LDAsOTIsMiwwLAorICAgIDEzNywwLDAsMTI1LDQsMCwxMjQsMywwLDEwNiwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNCw0LDAsNjgsMTMxLAorICAgIDEsMCwxMzEsMSwwLDEsMTEzLDEzLDAsODcsMTI0LDMsMCwxMjQsMCwwLAorICAgIDk1LDEsMCwxMjQsMSwwLDExMiw3OSwwLDEwMCwzLDAsMTI0LDAsMCw5NSwKKyAgICAyLDAsMTAwLDYsMCwxMjQsMCwwLDk1LDMsMCwxMTYsNCwwLDEzMSwwLAorICAgIDAsMTI0LDAsMCw5NSw1LDAsMTE2LDQsMCwxMzEsMCwwLDEyNCwwLDAsCisgICAgOTUsNiwwLDEwMCw1LDAsODMsNDEsNywxMjIsMTU0LDczLDExMCwxMDUsMTE2LDEwNSwKKyAgICA5NywxMDgsMTA1LDEyMiwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDExMSwxMTAsCisgICAgMzIsOTcsMTEwLDEwMCwzMiw5NywzMiwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLAorICAgIDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw1MCw0NSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwxMTEsMTEwLDExNiw5NywKKyAgICAxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMDEsOTksMTExLDEwMywxMTAsCisgICAgMTA1LDEyMiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNTEsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwKKyAgICAwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTM2LDAsMCwxMDIsMiwKKyAgICAwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LDIyNSwwLDAsMCw0MSwxLAorICAgIDExNCwxMjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDIyNywwLDAsMCwxNTYsNCwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwKKyAgICAzOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLAorICAgIDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw1OCwwLDAsMCwxMTQsMjksMCwwLAorICAgIDAsNzgsMTE0LDg3LDAsMCwwLDQxLDcsMTE0LDE0OSwwLDAsMCwyMTgsOCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMzUsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDMsMTE1LDEwMSwxMTYsMjE4LAorICAgIDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDE5LDk1LDExNCwKKyAgICAxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsNDEsNSwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsMTQsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw3LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgNDEsMSwxMTQsMTI3LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODUsMCwwLAorICAgIDAsMTUwLDQsMCwwLDExNSwxNiwwLDAsMCwwLDQsNiwxLDE5LDEsCisgICAgMzYsMSw5LDIsMTUsMSw5LDEsMTIsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDMsMCwxMjQsMCwwLDk1LAorICAgIDAsMCwxMDAsMiwwLDgzLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwKKyAgICAxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwKKyAgICAxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDI5LDAsMCwwLDc4LDExNCwKKyAgICA4NywwLDAsMCw0MSwxLDExNCw4LDEsMCwwLDQxLDEsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMjUwLDAsMCwwLDE2NCw0LDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwKKyAgICAxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LAorICAgIDAsMTE0LDM3LDAsMTAwLDEsMCwxMDMsMCwwLDEwMiwyLDAsODMsMTI0LDIsCisgICAgMCwxMDYsMSwwLDEyNCwyLDAsMTA2LDIsMCwxMTIsNTUsMCwxMDMsMCwwLAorICAgIDEwMiwyLDAsODMsNDEsMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsCisgICAgNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LAorICAgIDExMSwxMTAsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLAorICAgIDExNCwxODEsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLAorICAgIDMsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwxNjQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDEyNCwwLDAsMCwxNzAsNCwwLDAsMTE1LDgsMCwwLDAsMCw3LDE1LAorICAgIDEsMTIsMSwxMCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDYsMCwKKyAgICAwLDAsMCwwLDAsMCw3LDAsMCwwLDcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQwLDAsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMTI1LDYsMCwxMTYsMCwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsCisgICAgMSwwLDEyNCw2LDAsMTAwLDIsMCwxMjQsNCwwLDEzMSwyLDIsODMsNDEsCisgICAgMyw3OCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLDAsNDEsMSwxMTQsMTY3LAorICAgIDAsMCwwLDQxLDcsMTE0LDEwOCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwKKyAgICAxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDQsMTE1LDEwOSwxMTUsMTA4LDExNCwKKyAgICAxODAsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCwxODIsNCwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTgsMSwxMjIsMjAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLAorICAgIDEwMSw5OSw3OCw5OSwzLDAsMCwwLDAsMCwwLDAsMTQsMCwwLDAsCisgICAgMTUsMCwwLDAsNjcsMCwwLDAsMTE1LDIzNCwxLDAsMCwxMDAsMSwwLAorICAgIDEyNSwzLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsCisgICAgMywwLDI1LDEyNSw0LDAsMTIxLDM0LDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwKKyAgICAyLDAsMTEyLDQ5LDAsMTE2LDMsMCwxMDYsNCwwLDEzMSwwLDAsMTMxLDEsCisgICAgMCwxMDYsNSwwLDEyNSw1LDAsODcsMTEwLDI0LDAsNCwxMTYsNiwwLDEwNywKKyAgICAxMCwwLDExNCw4NSwwLDEsMSwxLDEwMCwxMCwwLDEyNSw1LDAsODksMTEwLAorICAgIDEsMCw4OCwxMjQsNSwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsMywwLDExNCwKKyAgICAxMjAsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCw1LDAsMTI0LAorICAgIDAsMCw5NSw3LDAsMTE2LDksMCwxMzEsMCwwLDExNCwxNTMsMCwxMjQsMCwKKyAgICAwLDEwNiwxMCwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsMTEsMCwxMzEsMCwwLAorICAgIDEyNSw3LDAsMTEwLDE1LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjUsNiwwLDEyNCwKKyAgICA0LDAsMTI1LDcsMCwxMjQsNywwLDEyNCw2LDAsMTA3LDYsMCwxMTQsNDUsCisgICAgMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMzEsMiwwLAorICAgIDEyNSw4LDAsMTIwLDEwMCwwLDEyNCwwLDAsMTA2LDE0LDAsNjgsOTMsNzcsMCwKKyAgICA5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwxMDAsNSwwLDEyNCw5LDAsMjMsCisgICAgMTI1LDExLDAsMTE2LDEzLDAsMTI0LDgsMCwxMjQsMTEsMCwxMzEsMiwwLDEyNSwKKyAgICAxMiwwLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDIwOCwwLDEyNCwwLAorICAgIDAsMTA2LDE2LDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwxMjQsOCwwLAorICAgIDEwMywxLDAsMTI0LDIsMCwxMzEsNSwwLDgzLDExMywyMDgsMCw4NywxMTYsMTcsCisgICAgMCwxMjQsOCwwLDEzMSwxLDAsMTI1LDMsMCwxMjAsMTIzLDAsMTI0LDAsMCwKKyAgICAxMDYsMTQsMCw2OCw5MywxMTIsMCw5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwKKyAgICAxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMjQsOSwwLDIzLAorICAgIDEzMSwyLDAsMTI1LDEyLDAsMTE2LDE4LDAsMTAwLDYsMCwxMDYsMTksMCwxMjQsCisgICAgMTIsMCwxMzEsMSwwLDEwMCw3LDAsMTAwLDMsMCwxMzEsMSwxLDEsMTI0LAorICAgIDcsMCwxMjQsOSwwLDIzLDEyNCw2LDAsMTA3LDYsMCwxMTQsNTUsMSwxMTYsCisgICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCw1NSwxLDEyNCwwLDAsMTA2LDE2LAorICAgIDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwxMDAsOCwwLDEyNCwyLDAsCisgICAgMTMxLDUsMCw4MywxMTMsNTUsMSw4NywxMjQsMywwLDExNCwyMzAsMSwxMTYsMTgsCisgICAgMCwxMDAsOSwwLDEwNiwxOSwwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEsMTE2LDIwLDAsMTA2LDIxLDAsMTI0LDEsMCwxMDAsOCwwLDEzMSwyLDAsCisgICAgMTI1LDEzLDAsMTI0LDgsMCwxMDMsMSwwLDEyNCwxMywwLDk1LDIyLDAsMTI0LAorICAgIDEzLDAsODMsMTAwLDgsMCw4Myw0MSwxMSwxMjIsMTI1LDg0LDExNCwxMjEsMzIsMTE2LAorICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDcwLDExNCw1OCwwLDAsMCwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxODUsMCwwLDAsMTIyLDksMTE2LAorICAgIDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwxMTQsOTgsMCwwLDAsNzgsMTIyLDI1LAorICAgIDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCw4NywwLDAsMCw0MSwyMywKKyAgICAxMTQsMzIsMCwwLDAsMTE0LDM5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDIxOSwwLDAsMCwxMTQsNDAsCisgICAgMCwwLDAsMTE0LDgsMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDExNCw2LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwyOCwwLDAsMCwxMTQsNywKKyAgICAxLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDQ2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwxMjEsMCwwLAorICAgIDAsMTE0LDE2MCwwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLDE0LDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMTgwLDAsMCwwLDkwLDEyLDEwNSwxMTUsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzMywwLDAsMCw5MCw1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsOTAsMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5MCw5LDk4LDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyNSwwLDAsCisgICAgMCwxMTQsMTY1LDAsMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTgxLDAsMCwwLDE4Nyw0LDAsMCwxMTUsNjgsMCwKKyAgICAwLDAsMCwzLDYsMSwxOSwxLDMsMSwzNCwxLDEzLDEsMTEsMSwKKyAgICAxNSwxLDEwLDEsOSwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLAorICAgIDEyLDEsMTgsMSwyMiwxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTIsMiwKKyAgICAyMiwxLDIyLDEsMjUsMSwxNiwxLDEyLDEsMjksMSw2LDEsMTksMSwKKyAgICAxOCwxLDEyLDEsNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTEsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLAorICAgIDMxLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsCisgICAgMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywKKyAgICAwLDQsMTE2LDQsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsCisgICAgMCwxMTQsNzUsMCwxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsCisgICAgMCw4OCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLAorICAgIDAsMTE1LDExMiwwLDExNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLAorICAgIDk1LDExLDAsMTEwLDExMSwwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsCisgICAgOTAsMCwxMjQsMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKKyAgICAxMiwwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwKKyAgICAwLDEyNSw3LDAsMTI0LDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwKKyAgICAxMjQsNSwwLDEyNCw3LDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSwKKyAgICA4LDAsMTEwLDYsMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsCisgICAgMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsCisgICAgMCwwLDk1LDExLDAsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LAorICAgIDAsMTMxLDEsMCwxMTQsNywxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLAorICAgIDEyNCwyLDAsNjgsMTMxLDEsMCwxMjQsMCwwLDk1LDE3LDAsMTAwLDYsMCwKKyAgICA4Myw0MSw3LDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsCisgICAgMjgsMCwwLDAsMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDEwNiwwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsCisgICAgMTE0LDQsMCwwLDAsNDEsMSwxMTQsODgsMCwwLDAsNDEsMiwxMTQsMjIsCisgICAgMCwwLDAsOTAsMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLAorICAgIDYyLDUsNSwwLDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsCisgICAgMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDMsMCwwLDAsOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ1LDAsCisgICAgMCwwLDExNCwwLDEsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwKKyAgICAxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LAorICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNywwLDAsCisgICAgMCwxMTQsOCwwLDAsMCwxMTQsOSwwLDAsMCwxMTQsOSwxLDAsMCwKKyAgICAxMTQsMTAsMSwwLDAsMTE0LDgzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDEsMCwwLDQxLDksMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsOTAsCisgICAgOCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCwKKyAgICA5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsCisgICAgMTE0LDI0NSwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwyMzcsMCwwLDAsMTE0LAorICAgIDIyNSwwLDAsMCw5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMywxLAorICAgIDAsMCwyMzIsNCwwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywKKyAgICAxLDMxLDEsMjIsMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwKKyAgICAxLDYsMSwyNywyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDMsMCwwLDAsNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LAorICAgIDAsMCwxMzUsMSwwLDEwMiwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDIsMCwxMjQsMiwwLDgzLDQxLDMsOTcsMjAsMSwwLDAsNjUsCisgICAgMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwKKyAgICAxMDUsOTksMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwxMDgsCisgICAgMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsOTksMTAxLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLAorICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDQsMCwwLDAsMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsCisgICAgMiwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsCisgICAgMCwxMzYsMSwwLDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDQsMTExLDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLAorICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLAorICAgIDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNSwwLDAsMCw0MSwyLAorICAgIDExNCw0NiwwLDAsMCwxMTQsMTA3LDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwKKyAgICAwLDQxLDIsMTE0LDE3MCwwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDE3LDUsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsCisgICAgMTIyLDU0LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwKKyAgICAxNzAsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwxOCwxLDAsMCwxMTQsNCwKKyAgICAwLDAsMCw0MSwyLDExNCwxNzAsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw3LAorICAgIDUsMCwwLDExNSw0LDAsMCwwLDAsMTAsMjEsNiwxMjIsMjAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLAorICAgIDE2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsCisgICAgNDEsNDEsMiwxMTQsNDcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDEsMTE0LAorICAgIDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMjQ0LDAsMCwwLDI1LDUsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNDEsMTUsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTg1LAorICAgIDAsMCwwLDExNCwyNTAsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTgyLDAsCisgICAgMCwwLDExNCwxMjQsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDE4MSwwLDAsCisgICAgMCwxMTQsMTMsMSwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTksMSwwLDAsCisgICAgMTE0LDI0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwxLDAsMCwxNDEsNCwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDEyLDcsNiwyLDEyLDE0LDEyLDQsNiwKKyAgICAyLDEyLDEyLDEyLDUsMTUsNDUsMTIsMzEsMTgsMTgsMTE0LDYsMSwwLDAsCisgICAgOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTAwLDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKKyAgICAyLDAsMTMxLDEsMCwxMjUsNSwwLDEyNCw0LDAsMTE1LDk5LDAsMTI0LDUsCisgICAgMCwxMTQsNTQsMCwxMjQsNSwwLDEwNiwxLDAsMTI1LDQsMCwxMTAsNDUsMCwKKyAgICAxMjQsMiwwLDEyNCwzLDAsMTA3LDIsMCwxMTQsODQsMCwxMTYsMiwwLDEyNCwKKyAgICAxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTEwLDE1LDAsMTE2LDMsCisgICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw1LDAsCisgICAgMTE1LDEyNiwwLDExNiw0LDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwzLDAsMTI0LAorICAgIDQsMCwxMzEsMiwxLDEyNSw1LDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwKKyAgICAwLDEwMCwyLDAsNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LAorICAgIDIsMCwxMjQsMCwwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCwKKyAgICA1LDAsNjAsODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTAsCisgICAgMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwKKyAgICAyMTgsMTAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsOCw5NSw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSw5NSwxMTQsMTI3LDAsMCwwLDkwLDgsOTUsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk1LDk1LDkwLDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LAorICAgIDk1LDQxLDYsMjE4LDMsMTAzLDEwMSwxMTYsMTE0LDEyNywwLDAsMCwxMTQsMjIzLDAsCisgICAgMCwwLDExNCwyMTgsMCwwLDAsMTE0LDE2NywwLDAsMCwyMTgsOSw2OSwxMjAsCisgICAgOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwNiwwLAorICAgIDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLAorICAgIDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEyNywwLDAsMCwxMTQsMTY0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCwxNCw5NSwxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMxLDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxNSwxLDYsCisgICAgMSw2LDEsMTIsMSwxMiwxLDE4LDIsMTUsMSw2LDEsMjEsMSwzLAorICAgIDEsMTAsMSwxMCwxLDEwLDEsMTQsMSwxMywyLDExNCwyNCwxLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsCisgICAgMTA2LDIsMCwxMzEsMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiwKKyAgICA0LDAsMTAyLDIsMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwKKyAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCwKKyAgICA4Myw0MSwxLDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsCisgICAgMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwKKyAgICAzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLAorICAgIDMyLDMyLDMyLDMyLDQxLDcsMTE0LDIyNCwwLDAsMCwxMTQsMTQ1LDAsMCwwLAorICAgIDIxOCwxOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCwxMDEsMTE1LDExNCwyMTgsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwyMjMsCisgICAgMCwwLDAsMTE0LDc0LDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNjEsMCwwLDAsNTQsNSwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwxNjEsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MCwyLDAsMCwxMjQsMCwwLDk3LAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsOTcsMSwwLDExNiwwLDAsMTA2LDIsCisgICAgMCw5NywyLDAsMTE2LDEsMCwxMDYsMywwLDExNiw0LDAsMjUsMTI1LDEsCisgICAgMCwxMjAsNzYsMCwxMDAsMjYsMCw2OCw5Myw2OCwwLDEyNSwyLDAsMTI0LDIsCisgICAgMCwxMTYsMSwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsODMsMCwxMTYsMCwwLAorICAgIDEwNiw1LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDEzLDAsMTE2LAorICAgIDEsMCwxMDYsMywwLDEyNCwyLDAsMjUsMTI1LDMsMCwxMTYsNiwwLDEyNCwKKyAgICAxLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMSwxMTMsNDQsMCw4NywKKyAgICAxMDAsNSwwLDEwMCw2LDAsMTAzLDEsMCwxMDIsMiwwLDEwMCw3LDAsMTAwLAorICAgIDgsMCwxMDAsNiwwLDEwMywyLDAsMTAyLDIsMCwxMDIsMiwwLDEyNSw0LAorICAgIDAsMTIwLDE0OSwwLDEyNCw0LDAsNjgsOTMsMTI5LDAsOTIsMiwwLDEyNSw1LAorICAgIDAsMTI1LDYsMCwxMTYsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwKKyAgICAxMjQsNiwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTUsMTk5LDAsMTE2LDgsMCwKKyAgICAxMzAsMSwwLDEyNCw2LDAsMTAwLDExLDAsMjUsMTI1LDcsMCwxMjQsNSwwLAorICAgIDExNiwxLDAsMTA2LDMsMCwxMDcsNiwwLDExNCwyNDEsMCwxMTYsMSwwLDEwNiwKKyAgICAzLDAsMTI0LDUsMCwyNSwxMjUsOCwwLDgwLDExMywxNTYsMCwxMjEsMjAsMCwKKyAgICAxMTYsMCwwLDEwNiw1LDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw4LDAsODAsCisgICAgODcsMTEzLDE1NiwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMjgsMSwxLDEsCisgICAgMSwxMTksMTU2LDAsODksMTEzLDE1NiwwLDg4LDExMywxNTYsMCw4NywxMTYsOSwwLAorICAgIDEwMCwxMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLAorICAgIDEzLDAsMTI0LDgsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwKKyAgICAxNCwwLDEyNCw3LDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsCisgICAgMTUsMCwxMDAsMTYsMCwxMDYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTMxLDMsCisgICAgMCwxLDEyMSwxOSwwLDExNiwwLDAsMTA2LDUsMCwxMDAsMTcsMCwxMzEsMSwKKyAgICAwLDEyNSw5LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwKKyAgICAxNDcsMSwxLDEsMSwxMDAsMTgsMCwxMjUsOSwwLDg5LDExMCwxLDAsODgsCisgICAgMTE2LDYsMCwxMjQsMSwwLDEwMCwxNywwLDEyNCw5LDAsMTMxLDMsMCwxLAorICAgIDExNiwwLDAsMTA2LDUsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMCwwLDExNiwKKyAgICA2LDAsMTI0LDEsMCwxMDAsMTksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTI0LAorICAgIDUsMCwxMDAsNywwLDEwNywyLDAsMTE0LDIzOCwxLDExNiwwLDAsMTA2LDUsCisgICAgMCwxMDAsMjAsMCwxMzEsMSwwLDEyNSwxMSwwLDExNiw2LDAsMTI0LDEsMCwKKyAgICAxMDAsMjEsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLAorICAgIDEwMCwyMiwwLDExNiwxMSwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwxMiwwLAorICAgIDEwNiwxMywwLDExNiwyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMSwwLDEsCisgICAgMTI0LDUsMCwxMDAsNywwLDEwNywyLDAsMTE0LDY2LDIsMTE2LDE1LDAsMTA2LAorICAgIDE2LDAsMTAwLDIzLDAsMTMxLDEsMCwxLDEwMCwyNCwwLDExNiwxMiwwLDEwNywKKyAgICA2LDAsMTE0LDY2LDIsMTAwLDI1LDAsMTE2LDE3LDAsOTUsMTgsMCwxMDAsMTgsCisgICAgMCw4Myw0MSwyNywxMjIsMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwzMiwxMDUsCisgICAgMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LAorICAgIDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSwzMiwKKyAgICA5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDExNCw0OSwwLDAsMCwxMTQsNjAsMCwwLDAsMjE4LDgsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNCwxNDIsMCwwLDAsOTAsNSwxMTIsMTExLAorICAgIDExNSwxMDUsMTIwLDI1MCwxLDQ3LDIxOCwyLDExMCwxMTYsMjUwLDEsOTIsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwKKyAgICAwLDAsMTE1LDMzLDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLAorICAgIDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwKKyAgICAxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwyOSwwLDAsMCw3OCwKKyAgICA0MSwxLDExNCwzMSwwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDIyNywwLDAsMCw5MCw1LDAsMCwxMTUsMiwwLDAsMCwKKyAgICA2LDAsMTIyLDI1LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNTksMCwKKyAgICAwLDAsMTIyLDMwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsCisgICAgMTEwLDExNiwxMTQsMywwLDAsMCwxMTQsMjUsMCwwLDAsMTE0LDIxLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCw5MCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNzgsCisgICAgOTAsOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCw2LDExOSwxMDUsMTEwLDExNCwKKyAgICAxMDEsMTAzLDExNCwxNjksMCwwLDAsMTE0LDYsMCwwLDAsMTIyLDQsNDYsMTEyLAorICAgIDEyMSwxMTksMTIyLDYsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTIyLDMsOTUsCisgICAgMTA1LDExMSwxMjIsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTIyLDgsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDEyMiw3LDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsCisgICAgNDEsMTksMTE0LDEyMSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsMTQ1LDAsMCwKKyAgICAwLDExNCwyMzksMCwwLDAsMTE0LDExMiwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDExNiwwLDAsMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsCisgICAgMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA3LDAsMCwwLDExNCwyNiwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIyOSwwLDAsMCwxMTQsMTQ5LDAsCisgICAgMCwwLDExNCwyNSwxLDAsMCwxMTQsODQsMCwwLDAsMTE0LDE2MywwLDAsCisgICAgMCwxMTQsMTY4LDAsMCwwLDExNCwxNzMsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5MCwxMSwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwKKyAgICAxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKKyAgICA5NSwxMTEsMTE1LDExNCwyMSwwLDAsMCwxMTQsMjUsMCwwLDAsOTAsOSwxMTEsCisgICAgMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw1LDAsCisgICAgMCwxMTUsODIsMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsCisgICAgMTMsMSwxNSwxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLAorICAgIDEwLDEsMTUsMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwKKyAgICAxMiwyLDEyLDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwKKyAgICAxMSwxLDE2LDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsCisgICAgMTksMSwxMiwxLDEzLDEsMTIsMSwxMTQsMzMsMSwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEsMTE2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEwNiw0LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsCisgICAgMSwwLDEzMSwxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsCisgICAgMiwwLDExNCw3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsCisgICAgMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwKKyAgICAwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywKKyAgICAwLDEyNCwwLDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLAorICAgIDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsCisgICAgOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwKKyAgICAxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI4LDEsMCwwLDc4LDQxLDE0LAorICAgIDExNCwzMywxLDAsMCwxMTQsMTYxLDAsMCwwLDExNCw3LDAsMCwwLDExNCwKKyAgICAyNTQsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTksCisgICAgMSwwLDAsMTE0LDMsMCwwLDAsMTE0LDExMiwwLDAsMCwyMTgsOSwxMDksCisgICAgMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYzLDAsMCwwLDExNCwxNjgsMCwKKyAgICAwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjE4LDAsMCwwLDQxLDIsMTE0LDMyLAorICAgIDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEzMywKKyAgICA1LDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsCisgICAgMTUsMSwxNiwxLDE2LDQsOSwxLDExNCwzNSwxLDAsMCw0MSwzLDEyMiwKKyAgICAzLDExOSwxMDUsMTEwLDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDU3LAorICAgIDExNCwxMTQsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMTcsMCwwLDAsMTE0LDE5LDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMzgsCisgICAgMCwwLDAsMTE0LDM5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsNDQsMCwKKyAgICAwLDAsMTE0LDQ2LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCwxMTYsMTIxLAorICAgIDExMiwxMDEsMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NCwwLDAsCisgICAgMCwxMTQsMTUsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDE4LDAsMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLAorICAgIDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw3MywwLDAsMCwxMTQsNzIsMCwKKyAgICAwLDAsMTE0LDg0LDAsMCwwLDExNCw3NCwwLDAsMCw5MCwyMyw2OCw2OSwKKyAgICA2Niw4NSw3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCwKKyAgICA3MCw3Myw4OCw2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTQsNzksMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MSwwLDAsCisgICAgMCwxMTQsOTUsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMDUsMCwwLDAsCisgICAgMTE0LDEyMywwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LAorICAgIDE0NywwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCwxNTUsMCwwLDAsMjE4LDYsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwxNjIsMCwwLDAsMTE0LDE2NywwLDAsMCwKKyAgICAxMTQsMTY4LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCisgICAgMjEwLDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIyMywwLDAsMCwxMTQsMjI5LAorICAgIDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjQ3LDAsCisgICAgMCwwLDExNCwyNDksMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDI0LDEsMCwKKyAgICAwLDExNCwxNjEsMCwwLDAsMTE0LDMzLDEsMCwwLDExNCwzNSwxLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsCisgICAgMCwwLDExNSwxMDAsMCwwLDAsNiwxNyw2LDMsMTIsMTIsMTIsNSwxMiwKKyAgICA1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsMTUsCisgICAgMTA5LDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwyMSwKKyAgICA0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LDIxLAorICAgIDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LDE5LAorICAgIDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsMTksCisgICAgNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKK307CmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA2ZjBlZTVlLi5mODljZDA0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEyLDggKzEyLDcgQEAKICNpbmNsdWRlICJsb25naW50cmVwci5oIgogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCi0KLSNkZWZpbmUgQUJTKHgpICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKKyNpbmNsdWRlICIuLi9Nb2R1bGVzL2hhc2h0YWJsZS5oIgogCiAvKiBIaWdoIHdhdGVyIG1hcmsgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIG1hcnNoYWxsZWQgb2JqZWN0IGlzIGRhbmdlcm91c2x5IGRlZXAKICAqIGFuZCByaXNrcyBjb3JpbmcgdGhlIGludGVycHJldGVyLiAgV2hlbiB0aGUgb2JqZWN0IHN0YWNrIGdldHMgdGhpcyBkZWVwLApAQCAtMjEsNyArMjAsNyBAQAogICogT24gV2luZG93cyBkZWJ1ZyBidWlsZHMsIHJlZHVjZSB0aGlzIHZhbHVlLgogICovCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKF9ERUJVRykKLSNkZWZpbmUgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggMTUwMAorI2RlZmluZSBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAxMDAwCiAjZWxzZQogI2RlZmluZSBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAyMDAwCiAjZW5kaWYKQEAgLTY2LDU0ICs2NSw4MyBAQAogICAgIEZJTEUgKmZwOwogICAgIGludCBlcnJvcjsgIC8qIHNlZSBXRkVSUl8qIHZhbHVlcyAqLwogICAgIGludCBkZXB0aDsKLSAgICAvKiBJZiBmcCA9PSBOVUxMLCB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDogKi8KLSAgICBQeU9iamVjdCAqcmVhZGFibGU7ICAgIC8qIFN0cmVhbS1saWtlIG9iamVjdCBiZWluZyByZWFkIGZyb20gKi8KICAgICBQeU9iamVjdCAqc3RyOwotICAgIFB5T2JqZWN0ICpjdXJyZW50X2ZpbGVuYW1lOwogICAgIGNoYXIgKnB0cjsKICAgICBjaGFyICplbmQ7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgYnVmX3NpemU7Ci0gICAgUHlPYmplY3QgKnJlZnM7IC8qIGRpY3Qgb24gbWFyc2hhbCwgbGlzdCBvbiB1bm1hcnNoYWwgKi8KKyAgICBfUHlfaGFzaHRhYmxlX3QgKmhhc2h0YWJsZTsKICAgICBpbnQgdmVyc2lvbjsKIH0gV0ZJTEU7CiAKLSNkZWZpbmUgd19ieXRlKGMsIHApIGlmICgoKHApLT5mcCkpIHB1dGMoKGMpLCAocCktPmZwKTsgXAotICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwKS0+cHRyICE9IChwKS0+ZW5kKSAqKHApLT5wdHIrKyA9IChjKTsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB3X21vcmUoKGMpLCBwKQorI2RlZmluZSB3X2J5dGUoYywgcCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICgocCktPnB0ciAhPSAocCktPmVuZCB8fCB3X3Jlc2VydmUoKHApLCAxKSkgIFwKKyAgICAgICAgICAgICoocCktPnB0cisrID0gKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUoMCkKIAogc3RhdGljIHZvaWQKLXdfbW9yZShjaGFyIGMsIFdGSUxFICpwKQord19mbHVzaChXRklMRSAqcCkKIHsKLSAgICBQeV9zc2l6ZV90IHNpemUsIG5ld3NpemU7Ci0gICAgaWYgKHAtPnN0ciA9PSBOVUxMKQotICAgICAgICByZXR1cm47IC8qIEFuIGVycm9yIGFscmVhZHkgb2NjdXJyZWQgKi8KLSAgICBzaXplID0gUHlCeXRlc19TaXplKHAtPnN0cik7Ci0gICAgbmV3c2l6ZSA9IHNpemUgKyBzaXplICsgMTAyNDsKLSAgICBpZiAobmV3c2l6ZSA+IDMyKjEwMjQqMTAyNCkgewotICAgICAgICBuZXdzaXplID0gc2l6ZSArIChzaXplID4+IDMpOyAgICAgICAgICAgLyogMTIuNSUgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICBhc3NlcnQocC0+ZnAgIT0gTlVMTCk7CisgICAgZndyaXRlKHAtPmJ1ZiwgMSwgcC0+cHRyIC0gcC0+YnVmLCBwLT5mcCk7CisgICAgcC0+cHRyID0gcC0+YnVmOworfQorCitzdGF0aWMgaW50Cit3X3Jlc2VydmUoV0ZJTEUgKnAsIFB5X3NzaXplX3QgbmVlZGVkKQoreworICAgIFB5X3NzaXplX3QgcG9zLCBzaXplLCBkZWx0YTsKKyAgICBpZiAocC0+cHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOyAvKiBBbiBlcnJvciBhbHJlYWR5IG9jY3VycmVkICovCisgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKKyAgICAgICAgd19mbHVzaChwKTsKKyAgICAgICAgcmV0dXJuIG5lZWRlZCA8PSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnAtPnN0ciwgbmV3c2l6ZSkgIT0gMCkgewotICAgICAgICBwLT5wdHIgPSBwLT5lbmQgPSBOVUxMOworICAgIGFzc2VydChwLT5zdHIgIT0gTlVMTCk7CisgICAgcG9zID0gcC0+cHRyIC0gcC0+YnVmOworICAgIHNpemUgPSBQeUJ5dGVzX1NpemUocC0+c3RyKTsKKyAgICBpZiAoc2l6ZSA+IDE2KjEwMjQqMTAyNCkKKyAgICAgICAgZGVsdGEgPSAoc2l6ZSA+PiAzKTsgICAgICAgICAgICAvKiAxMi41JSBvdmVyYWxsb2NhdGlvbiAqLworICAgIGVsc2UKKyAgICAgICAgZGVsdGEgPSBzaXplICsgMTAyNDsKKyAgICBkZWx0YSA9IFB5X01BWChkZWx0YSwgbmVlZGVkKTsKKyAgICBpZiAoZGVsdGEgPiBQWV9TU0laRV9UX01BWCAtIHNpemUpIHsKKyAgICAgICAgcC0+ZXJyb3IgPSBXRkVSUl9OT01FTU9SWTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHNpemUgKz0gZGVsdGE7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcC0+c3RyLCBzaXplKSAhPSAwKSB7CisgICAgICAgIHAtPnB0ciA9IHAtPmJ1ZiA9IHAtPmVuZCA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcC0+cHRyID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKilwLT5zdHIpICsgc2l6ZTsKLSAgICAgICAgcC0+ZW5kID0KLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopcC0+c3RyKSArIG5ld3NpemU7Ci0gICAgICAgICpwLT5wdHIrKyA9IGM7CisgICAgICAgIHAtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHAtPnN0cik7CisgICAgICAgIHAtPnB0ciA9IHAtPmJ1ZiArIHBvczsKKyAgICAgICAgcC0+ZW5kID0gcC0+YnVmICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogfQogCiBzdGF0aWMgdm9pZAogd19zdHJpbmcoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBuLCBXRklMRSAqcCkKIHsKKyAgICBQeV9zc2l6ZV90IG07CisgICAgaWYgKCFuIHx8IHAtPnB0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgbSA9IHAtPmVuZCAtIHAtPnB0cjsKICAgICBpZiAocC0+ZnAgIT0gTlVMTCkgewotICAgICAgICBmd3JpdGUocywgMSwgbiwgcC0+ZnApOworICAgICAgICBpZiAobiA8PSBtKSB7CisgICAgICAgICAgICBQeV9NRU1DUFkocC0+cHRyLCBzLCBuKTsKKyAgICAgICAgICAgIHAtPnB0ciArPSBuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgd19mbHVzaChwKTsKKyAgICAgICAgICAgIGZ3cml0ZShzLCAxLCBuLCBwLT5mcCk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHdoaWxlICgtLW4gPj0gMCkgewotICAgICAgICAgICAgd19ieXRlKCpzLCBwKTsKLSAgICAgICAgICAgIHMrKzsKKyAgICAgICAgaWYgKG4gPD0gbSB8fCB3X3Jlc2VydmUocCwgbiAtIG0pKSB7CisgICAgICAgICAgICBQeV9NRU1DUFkocC0+cHRyLCBzLCBuKTsKKyAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTkyLDcgKzIyMCw3IEBACiAgICAgfQogCiAgICAgLyogc2V0IGwgdG8gbnVtYmVyIG9mIGJhc2UgUHlMb25nX01BUlNIQUxfQkFTRSBkaWdpdHMgKi8KLSAgICBuID0gQUJTKFB5X1NJWkUob2IpKTsKKyAgICBuID0gUHlfQUJTKFB5X1NJWkUob2IpKTsKICAgICBsID0gKG4tMSkgKiBQeUxvbmdfTUFSU0hBTF9SQVRJTzsKICAgICBkID0gb2ItPm9iX2RpZ2l0W24tMV07CiAgICAgYXNzZXJ0KGQgIT0gMCk7IC8qIGEgUHlMb25nIGlzIGFsd2F5cyBub3JtYWxpemVkICovCkBAIC0yMjUsNDYgKzI1MywzOCBAQAogc3RhdGljIGludAogd19yZWYoUHlPYmplY3QgKnYsIGNoYXIgKmZsYWcsIFdGSUxFICpwKQogewotICAgIFB5T2JqZWN0ICppZDsKLSAgICBQeU9iamVjdCAqaWR4OworICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CisgICAgaW50IHc7CiAKLSAgICBpZiAocC0+dmVyc2lvbiA8IDMgfHwgcC0+cmVmcyA9PSBOVUxMKQorICAgIGlmIChwLT52ZXJzaW9uIDwgMyB8fCBwLT5oYXNodGFibGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vdCB3cml0aW5nIG9iamVjdCByZWZlcmVuY2VzICovCiAKICAgICAvKiBpZiBpdCBoYXMgb25seSBvbmUgcmVmZXJlbmNlLCBpdCBkZWZpbml0ZWx5IGlzbid0IHNoYXJlZCAqLwogICAgIGlmIChQeV9SRUZDTlQodikgPT0gMSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZCA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCopdik7Ci0gICAgaWYgKGlkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyOwotICAgIGlkeCA9IFB5RGljdF9HZXRJdGVtKHAtPnJlZnMsIGlkKTsKLSAgICBpZiAoaWR4ICE9IE5VTEwpIHsKKyAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHAtPmhhc2h0YWJsZSwgdik7CisgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgLyogd3JpdGUgdGhlIHJlZmVyZW5jZSBpbmRleCB0byB0aGUgc3RyZWFtICovCi0gICAgICAgIGxvbmcgdyA9IFB5TG9uZ19Bc0xvbmcoaWR4KTsKLSAgICAgICAgUHlfREVDUkVGKGlkKTsKLSAgICAgICAgaWYgKHcgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIH0KKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEocC0+aGFzaHRhYmxlLCAmdywgc2l6ZW9mKHcpLCBlbnRyeSk7CiAgICAgICAgIC8qIHdlIGRvbid0IHN0b3JlICJsb25nIiBpbmRpY2VzIGluIHRoZSBkaWN0ICovCiAgICAgICAgIGFzc2VydCgwIDw9IHcgJiYgdyA8PSAweDdmZmZmZmZmKTsKICAgICAgICAgd19ieXRlKFRZUEVfUkVGLCBwKTsKICAgICAgICAgd19sb25nKHcsIHApOwogICAgICAgICByZXR1cm4gMTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnQgb2s7Ci0gICAgICAgIFB5X3NzaXplX3QgcyA9IFB5RGljdF9TaXplKHAtPnJlZnMpOworICAgICAgICBzaXplX3QgcyA9IHAtPmhhc2h0YWJsZS0+ZW50cmllczsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3VwcG9ydCBsb25nIGluZGljZXMgKi8KICAgICAgICAgaWYgKHMgPj0gMHg3ZmZmZmZmZikgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0b28gbWFueSBvYmplY3RzIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQotICAgICAgICBpZHggPSBQeUxvbmdfRnJvbVNzaXplX3Qocyk7Ci0gICAgICAgIG9rID0gaWR4ICYmIFB5RGljdF9TZXRJdGVtKHAtPnJlZnMsIGlkLCBpZHgpID09IDA7Ci0gICAgICAgIFB5X0RFQ1JFRihpZCk7Ci0gICAgICAgIFB5X1hERUNSRUYoaWR4KTsKLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAgdyA9IChpbnQpczsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICBpZiAoX1B5X0hBU0hUQUJMRV9TRVQocC0+aGFzaHRhYmxlLCB2LCB3KSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CiAgICAgICAgICpmbGFnIHw9IEZMQUdfUkVGOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC01NDcsMzcgKzU2Nyw4MSBAQAogICAgIH0KIH0KIAorc3RhdGljIGludAord19pbml0X3JlZnMoV0ZJTEUgKndmLCBpbnQgdmVyc2lvbikKK3sKKyAgICBpZiAodmVyc2lvbiA+PSAzKSB7CisgICAgICAgIHdmLT5oYXNodGFibGUgPSBfUHlfaGFzaHRhYmxlX25ldyhzaXplb2YoaW50KSwgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOworICAgICAgICBpZiAod2YtPmhhc2h0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit3X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICpQeV9VTlVTRUQoZGF0YSkpCit7CisgICAgUHlfWERFQ1JFRihlbnRyeS0+a2V5KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3dfY2xlYXJfcmVmcyhXRklMRSAqd2YpCit7CisgICAgaWYgKHdmLT5oYXNodGFibGUgIT0gTlVMTCkgeworICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2god2YtPmhhc2h0YWJsZSwgd19kZWNyZWZfZW50cnksIE5VTEwpOworICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kod2YtPmhhc2h0YWJsZSk7CisgICAgfQorfQorCiAvKiB2ZXJzaW9uIGN1cnJlbnRseSBoYXMgbm8gZWZmZWN0IGZvciB3cml0aW5nIGludHMuICovCiB2b2lkCiBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlKGxvbmcgeCwgRklMRSAqZnAsIGludCB2ZXJzaW9uKQogeworICAgIGNoYXIgYnVmWzRdOwogICAgIFdGSUxFIHdmOworICAgIG1lbXNldCgmd2YsIDAsIHNpemVvZih3ZikpOwogICAgIHdmLmZwID0gZnA7CisgICAgd2YucHRyID0gd2YuYnVmID0gYnVmOworICAgIHdmLmVuZCA9IHdmLnB0ciArIHNpemVvZihidWYpOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7Ci0gICAgd2YuZGVwdGggPSAwOwotICAgIHdmLnJlZnMgPSBOVUxMOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwogICAgIHdfbG9uZyh4LCAmd2YpOworICAgIHdfZmx1c2goJndmKTsKIH0KIAogdm9pZAogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9GaWxlKFB5T2JqZWN0ICp4LCBGSUxFICpmcCwgaW50IHZlcnNpb24pCiB7CisgICAgY2hhciBidWZbQlVGU0laXTsKICAgICBXRklMRSB3ZjsKKyAgICBtZW1zZXQoJndmLCAwLCBzaXplb2Yod2YpKTsKICAgICB3Zi5mcCA9IGZwOworICAgIHdmLnB0ciA9IHdmLmJ1ZiA9IGJ1ZjsKKyAgICB3Zi5lbmQgPSB3Zi5wdHIgKyBzaXplb2YoYnVmKTsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwotICAgIHdmLmRlcHRoID0gMDsKLSAgICBpZiAodmVyc2lvbiA+PSAzKSB7Ci0gICAgICAgIGlmICgod2YucmVmcyA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybjsgLyogY2FsbGVyIG11c2ggY2hlY2sgUHlFcnJfT2NjdXJyZWQoKSAqLwotICAgIH0gZWxzZQotICAgICAgICB3Zi5yZWZzID0gTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKKyAgICBpZiAod19pbml0X3JlZnMoJndmLCB2ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuOyAvKiBjYWxsZXIgbXVzaCBjaGVjayBQeUVycl9PY2N1cnJlZCgpICovCiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnJlZnMpOworICAgIHdfY2xlYXJfcmVmcygmd2YpOworICAgIHdfZmx1c2goJndmKTsKIH0KIAotdHlwZWRlZiBXRklMRSBSRklMRTsgLyogU2FtZSBzdHJ1Y3Qgd2l0aCBkaWZmZXJlbnQgaW52YXJpYW50cyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEZJTEUgKmZwOworICAgIGludCBkZXB0aDsKKyAgICBQeU9iamVjdCAqcmVhZGFibGU7ICAvKiBTdHJlYW0tbGlrZSBvYmplY3QgYmVpbmcgcmVhZCBmcm9tICovCisgICAgUHlPYmplY3QgKmN1cnJlbnRfZmlsZW5hbWU7CisgICAgY2hhciAqcHRyOworICAgIGNoYXIgKmVuZDsKKyAgICBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBidWZfc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVmczsgIC8qIGEgbGlzdCAqLworfSBSRklMRTsKIAogc3RhdGljIGNoYXIgKgogcl9zdHJpbmcoUHlfc3NpemVfdCBuLCBSRklMRSAqcCkKQEAgLTcyNyw4ICs3OTEsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBzaXplID0gMSArIChBQlMobikgLSAxKSAvIFB5TG9uZ19NQVJTSEFMX1JBVElPOwotICAgIHNob3J0c19pbl90b3BfZGlnaXQgPSAxICsgKEFCUyhuKSAtIDEpICUgUHlMb25nX01BUlNIQUxfUkFUSU87CisgICAgc2l6ZSA9IDEgKyAoUHlfQUJTKG4pIC0gMSkgLyBQeUxvbmdfTUFSU0hBTF9SQVRJTzsKKyAgICBzaG9ydHNfaW5fdG9wX2RpZ2l0ID0gMSArIChQeV9BQlMobikgLSAxKSAlIFB5TG9uZ19NQVJTSEFMX1JBVElPOwogICAgIG9iID0gX1B5TG9uZ19OZXcoc2l6ZSk7CiAgICAgaWYgKG9iID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQxNywxOCArMTQ4MSwyMCBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLSNpZmRlZiBIQVZFX0ZTVEFUCi0vKiBSZXR1cm4gc2l6ZSBvZiBmaWxlIGluIGJ5dGVzOyA8IDAgaWYgdW5rbm93bi4gKi8KKy8qIFJldHVybiBzaXplIG9mIGZpbGUgaW4gYnl0ZXM7IDwgMCBpZiB1bmtub3duIG9yIElOVF9NQVggaWYgdG9vIGJpZyAqLwogc3RhdGljIG9mZl90CiBnZXRmaWxlc2l6ZShGSUxFICpmcCkKIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBpZiAoZnN0YXQoZmlsZW5vKGZwKSwgJnN0KSAhPSAwKQorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKGZpbGVubyhmcCksICZzdCkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHN0LnN0X3NpemU7Ci19CisjaWYgU0laRU9GX09GRl9UID09IDQKKyAgICBlbHNlIGlmIChzdC5zdF9zaXplID49IElOVF9NQVgpCisgICAgICAgIHJldHVybiAob2ZmX3QpSU5UX01BWDsKICNlbmRpZgorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChvZmZfdClzdC5zdF9zaXplOworfQogCiAvKiBJZiB3ZSBjYW4gZ2V0IHRoZSBzaXplIG9mIHRoZSBmaWxlIHVwLWZyb250LCBhbmQgaXQncyByZWFzb25hYmx5IHNtYWxsLAogICogcmVhZCBpdCBpbiBvbmUgZ3VscCBhbmQgZGVsZWdhdGUgdG8gLi4uRnJvbVN0cmluZygpIGluc3RlYWQuICBNdWNoIHF1aWNrZXIKQEAgLTE0NDEsNyArMTUwNyw2IEBACiB7CiAvKiBSRUFTT05BQkxFX0ZJTEVfTElNSVQgaXMgYnkgZGVmbiBzb21ldGhpbmcgYmlnIGVub3VnaCBmb3IgVGtpbnRlci5weWMuICovCiAjZGVmaW5lIFJFQVNPTkFCTEVfRklMRV9MSU1JVCAoMUwgPDwgMTgpCi0jaWZkZWYgSEFWRV9GU1RBVAogICAgIG9mZl90IGZpbGVzaXplOwogICAgIGZpbGVzaXplID0gZ2V0ZmlsZXNpemUoZnApOwogICAgIGlmIChmaWxlc2l6ZSA+IDAgJiYgZmlsZXNpemUgPD0gUkVBU09OQUJMRV9GSUxFX0xJTUlUKSB7CkBAIC0xNDU0LDcgKzE1MTksNiBAQAogICAgICAgICB9CiAKICAgICB9Ci0jZW5kaWYKICAgICAvKiBXZSBkb24ndCBoYXZlIGZzdGF0LCBvciB3ZSBkbyBidXQgdGhlIGZpbGUgaXMgbGFyZ2VyIHRoYW4KICAgICAgKiBSRUFTT05BQkxFX0ZJTEVfTElNSVQgb3IgbWFsbG9jIGZhaWxlZCAtLSByZWFkIGEgYnl0ZSBhdCBhIHRpbWUuCiAgICAgICovCkBAIC0xNTExLDI1ICsxNTc1LDIwIEBACiB7CiAgICAgV0ZJTEUgd2Y7CiAKLSAgICB3Zi5mcCA9IE5VTEw7Ci0gICAgd2YucmVhZGFibGUgPSBOVUxMOworICAgIG1lbXNldCgmd2YsIDAsIHNpemVvZih3ZikpOwogICAgIHdmLnN0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCA1MCk7CiAgICAgaWYgKHdmLnN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3Zi5wdHIgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXdmLnN0cik7CisgICAgd2YucHRyID0gd2YuYnVmID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKil3Zi5zdHIpOwogICAgIHdmLmVuZCA9IHdmLnB0ciArIFB5Qnl0ZXNfU2l6ZSh3Zi5zdHIpOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7Ci0gICAgd2YuZGVwdGggPSAwOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwotICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgaWYgKCh3Zi5yZWZzID0gUHlEaWN0X05ldygpKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYod2Yuc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHdmLnJlZnMgPSBOVUxMOworICAgIGlmICh3X2luaXRfcmVmcygmd2YsIHZlcnNpb24pKSB7CisgICAgICAgIFB5X0RFQ1JFRih3Zi5zdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnJlZnMpOworICAgIHdfY2xlYXJfcmVmcygmd2YpOwogICAgIGlmICh3Zi5zdHIgIT0gTlVMTCkgewogICAgICAgICBjaGFyICpiYXNlID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKil3Zi5zdHIpOwogICAgICAgICBpZiAod2YucHRyIC0gYmFzZSA+IFBZX1NTSVpFX1RfTUFYKSB7CmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IGY5MGExN2EuLmVkMmExMzUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfVU5BUllfSU5WRVJULAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0JJTkFSWV9NQVRSSVhfTVVMVElQTFksCisgICAgJiZUQVJHRVRfSU5QTEFDRV9NQVRSSVhfTVVMVElQTFksCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQklOQVJZX1BPV0VSLAogICAgICYmVEFSR0VUX0JJTkFSWV9NVUxUSVBMWSwKQEAgLTQ5LDExICs0OSwxMSBAQAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0dFVF9BSVRFUiwKKyAgICAmJlRBUkdFVF9HRVRfQU5FWFQsCisgICAgJiZUQVJHRVRfQkVGT1JFX0FTWU5DX1dJVEgsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfU1RPUkVfTUFQLAogICAgICYmVEFSR0VUX0lOUExBQ0VfQURELAogICAgICYmVEFSR0VUX0lOUExBQ0VfU1VCVFJBQ1QsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9NVUxUSVBMWSwKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAmJlRBUkdFVF9QUklOVF9FWFBSLAogICAgICYmVEFSR0VUX0xPQURfQlVJTERfQ0xBU1MsCiAgICAgJiZUQVJHRVRfWUlFTERfRlJPTSwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9HRVRfQVdBSVRBQkxFLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0lOUExBQ0VfTFNISUZULAogICAgICYmVEFSR0VUX0lOUExBQ0VfUlNISUZULApAQCAtODAsOCArODAsOCBAQAogICAgICYmVEFSR0VUX0lOUExBQ0VfWE9SLAogICAgICYmVEFSR0VUX0lOUExBQ0VfT1IsCiAgICAgJiZUQVJHRVRfQlJFQUtfTE9PUCwKLSAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVAsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX1NUQVJULAorICAgICYmVEFSR0VUX1dJVEhfQ0xFQU5VUF9GSU5JU0gsCiAgICAgJiZUQVJHRVRfUkVUVVJOX1ZBTFVFLAogICAgICYmVEFSR0VUX0lNUE9SVF9TVEFSLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApAQCAtMTQ4LDEyICsxNDgsMTIgQEAKICAgICAmJlRBUkdFVF9TRVRfQURELAogICAgICYmVEFSR0VUX01BUF9BREQsCiAgICAgJiZUQVJHRVRfTE9BRF9DTEFTU0RFUkVGLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0JVSUxEX0xJU1RfVU5QQUNLLAorICAgICYmVEFSR0VUX0JVSUxEX01BUF9VTlBBQ0ssCisgICAgJiZUQVJHRVRfQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsCisgICAgJiZUQVJHRVRfQlVJTERfVFVQTEVfVU5QQUNLLAorICAgICYmVEFSR0VUX0JVSUxEX1NFVF9VTlBBQ0ssCisgICAgJiZUQVJHRVRfU0VUVVBfQVNZTkNfV0lUSCwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKZGlmZiAtLWdpdCBhL1B5dGhvbi9wZWVwaG9sZS5jIGIvUHl0aG9uL3BlZXBob2xlLmMKaW5kZXggYzU2YzhmYy4uNTlhZDNiNyAxMDA2NDQKLS0tIGEvUHl0aG9uL3BlZXBob2xlLmMKKysrIGIvUHl0aG9uL3BlZXBob2xlLmMKQEAgLTE4LDcgKzE4LDExIEBACiAgICAgfHwgb3A9PUpVTVBfSUZfRkFMU0VfT1JfUE9QIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQogI2RlZmluZSBKVU1QU19PTl9UUlVFKG9wKSAob3A9PVBPUF9KVU1QX0lGX1RSVUUgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCiAjZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoR0VUQVJHKGFycixpKSArIChBQlNPTFVURV9KVU1QKGFycltpXSkgPyAwIDogaSszKSkKLSNkZWZpbmUgU0VUQVJHKGFyciwgaSwgdmFsKSBhcnJbaSsyXSA9IHZhbD4+ODsgYXJyW2krMV0gPSB2YWwgJiAyNTUKKyNkZWZpbmUgU0VUQVJHKGFyciwgaSwgdmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhc3NlcnQoMCA8PSB2YWwgJiYgdmFsIDw9IDB4ZmZmZik7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcnJbaSsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpPj44KTsgICAgIFwKKyAgICBhcnJbaSsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpICYgMjU1KTsgIFwKK30gd2hpbGUoMCkKICNkZWZpbmUgQ09ERVNJWkUob3ApICAoSEFTX0FSRyhvcCkgPyAzIDogMSkKICNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGJ5dGVzKSBcCiAgICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tzdGFydCtieXRlcy0xXSkKQEAgLTMxNSw2ICszMTksNyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9FWENFUFQ6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEpVTVBUR1QoY29kZSwgaSk7CiAgICAgICAgICAgICAgICAgYmxvY2tzW2pdID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM1NSw3ICszNjAsOCBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmxpbmVubzsKICAgICBpbnQgKmFkZHJtYXAgPSBOVUxMOwotICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lLCB0YWJzaXo7CisgICAgaW50IG5ld19saW5lLCBjdW1fb3JpZ19saW5lLCBsYXN0X2xpbmU7CisgICAgUHlfc3NpemVfdCB0YWJzaXo7CiAgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKQEAgLTYxNSw2ICs2MjEsNyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9FWENFUFQ6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgdGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCBpKTsKICAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIEpVTVBfKiB0byBhIFJFVFVSTiBpbnRvIGp1c3QgYSBSRVRVUk4gKi8KICAgICAgICAgICAgICAgICBpZiAoVU5DT05ESVRJT05BTF9KVU1QKG9wY29kZSkgJiYKQEAgLTY2MCw3ICs2NjcsOCBAQAogCiAgICAgLyogRml4dXAgbGluZW5vdGFiICovCiAgICAgZm9yIChpPTAsIG5vcHM9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKLSAgICAgICAgYWRkcm1hcFtpXSA9IGkgLSBub3BzOworICAgICAgICBhc3NlcnQoaSAtIG5vcHMgPD0gSU5UX01BWCk7CisgICAgICAgIGFkZHJtYXBbaV0gPSAoaW50KShpIC0gbm9wcyk7CiAgICAgICAgIGlmIChjb2Rlc3RyW2ldID09IE5PUCkKICAgICAgICAgICAgIG5vcHMrKzsKICAgICB9CkBAIC02OTgsNiArNzA2LDcgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgorICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBhZGRybWFwW0dFVEFSRyhjb2Rlc3RyLCBpKSArIGkgKyAzXSAtIGFkZHJtYXBbaV0gLSAzOwogICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWZwZS5jIGIvUHl0aG9uL3B5ZnBlLmMKaW5kZXggNGI3ZjViYS4uYWIwZWY4MyAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5ZnBlLmMKKysrIGIvUHl0aG9uL3B5ZnBlLmMKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAicHljb25maWcuaCIKICNpbmNsdWRlICJweWZwZS5oIgotLyogCisvKgogICogVGhlIHNpZ25hbCBoYW5kbGVyIGZvciBTSUdGUEUgaXMgYWN0dWFsbHkgZGVjbGFyZWQgaW4gYW4gZXh0ZXJuYWwKICAqIG1vZHVsZSBmcGVjdGwsIG9yIGFzIHByZWZlcnJlZCBieSB0aGUgdXNlci4gIFRoZXNlIHZhcmlhYmxlCiAgKiBkZWZpbml0aW9ucyBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBQeXRob24gd2l0aG91dApAQCAtMTMsNyArMTMsNyBAQAogaW50IFB5RlBFX2NvdW50ZXIgPSAwOwogI2VuZGlmCiAKLS8qIEhhdmUgdGhpcyBvdXRzaWRlIHRoZSBhYm92ZSAjaWZkZWYsIHNpbmNlIHNvbWUgcGlja3kgQU5TSSBjb21waWxlcnMgaXNzdWUgYSAKKy8qIEhhdmUgdGhpcyBvdXRzaWRlIHRoZSBhYm92ZSAjaWZkZWYsIHNpbmNlIHNvbWUgcGlja3kgQU5TSSBjb21waWxlcnMgaXNzdWUgYQogICAgd2FybmluZyB3aGVuIGNvbXBpbGluZyBhbiBlbXB0eSBmaWxlLiAqLwogCiBkb3VibGUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWxpZmVjeWNsZS5jIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3YWRmNwotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCkBAIC0wLDAgKzEsMTU4NiBAQAorCisvKiBQeXRob24gaW50ZXJwcmV0ZXIgdG9wLWxldmVsIHJvdXRpbmVzLCBpbmNsdWRpbmcgaW5pdC9leGl0ICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKKyN1bmRlZiBZaWVsZCAvKiB1bmRlZmluZSBtYWNybyBjb25mbGljdGluZyB3aXRoIHdpbmJhc2UuaCAqLworI2luY2x1ZGUgImdyYW1tYXIuaCIKKyNpbmNsdWRlICJub2RlLmgiCisjaW5jbHVkZSAidG9rZW4uaCIKKyNpbmNsdWRlICJwYXJzZXRvay5oIgorI2luY2x1ZGUgImVycmNvZGUuaCIKKyNpbmNsdWRlICJjb2RlLmgiCisjaW5jbHVkZSAic3ltdGFibGUuaCIKKyNpbmNsdWRlICJhc3QuaCIKKyNpbmNsdWRlICJtYXJzaGFsLmgiCisjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpZmRlZiBIQVZFX1NJR05BTF9ICisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJtYWxsb2MuaCIgLyogZm9yIGFsbG9jYSAqLworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKKyNpbmNsdWRlIDxsYW5naW5mby5oPgorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisjdW5kZWYgQllURQorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNlbmRpZgorCitfUHlfSURFTlRJRklFUihmbHVzaCk7CitfUHlfSURFTlRJRklFUihuYW1lKTsKK19QeV9JREVOVElGSUVSKHN0ZGluKTsKK19QeV9JREVOVElGSUVSKHN0ZG91dCk7CitfUHlfSURFTlRJRklFUihzdGRlcnIpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOworCitleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCisKKy8qIEZvcndhcmQgKi8KK3N0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKK3N0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOworc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7CitzdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKK3N0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOworc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7CitzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CitzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUhhc2hfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfSW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECitleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOworZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfRmluaSh2b2lkKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisvKiBHbG9iYWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYXJlIGluIHB5ZGVidWcuaCAqLworLyogWFhYIChuY29naGxhbik6IG1vdmUgdGhvc2UgZGVjbGFyYXRpb25zIHRvIHB5bGlmZWN5Y2xlLmg/ICovCitpbnQgUHlfRGVidWdGbGFnOyAvKiBOZWVkZWQgYnkgcGFyc2VyLmMgKi8KK2ludCBQeV9WZXJib3NlRmxhZzsgLyogTmVlZGVkIGJ5IGltcG9ydC5jICovCitpbnQgUHlfUXVpZXRGbGFnOyAvKiBOZWVkZWQgYnkgc3lzbW9kdWxlLmMgKi8KK2ludCBQeV9JbnRlcmFjdGl2ZUZsYWc7IC8qIE5lZWRlZCBieSBQeV9GZElzSW50ZXJhY3RpdmUoKSBiZWxvdyAqLworaW50IFB5X0luc3BlY3RGbGFnOyAvKiBOZWVkZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZXhpdCBhdCBTeXN0ZW1FeGl0ICovCitpbnQgUHlfT3B0aW1pemVGbGFnID0gMDsgLyogTmVlZGVkIGJ5IGNvbXBpbGUuYyAqLworaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KK2ludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCitpbnQgUHlfVXNlQ2xhc3NFeGNlcHRpb25zRmxhZyA9IDE7IC8qIE5lZWRlZCBieSBibHRpbm1vZHVsZS5jOiBkZXByZWNhdGVkICovCitpbnQgUHlfRnJvemVuRmxhZzsgLyogTmVlZGVkIGJ5IGdldHBhdGguYyAqLworaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsgLyogZS5nLiBQWVRIT05QQVRILCBQWVRIT05IT01FICovCitpbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KK2ludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCitpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLworaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KK2ludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisKK1B5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKKworLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLworaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCisgICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLworCisvKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgorc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCitQeU9iamVjdCAqCitQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQoreworICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Cit9CisKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOworCisvKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCisKK2ludAorUHlfSXNJbml0aWFsaXplZCh2b2lkKQoreworICAgIHJldHVybiBpbml0aWFsaXplZDsKK30KKworLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCisgKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCisgKi8KKworc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKK3N0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOworCitpbnQKK1B5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCisgICAgICogaW5pdGlhbGlzZWQgeWV0LgorICAgICAqCisgICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQorICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAorICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KKyAgICAgKi8KKyAgICBpZiAoZW5jb2RpbmcpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKKyAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgeworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorICAgIGlmIChlcnJvcnMpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOworICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAorICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcworICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQorICAgYmVlbiBjcmVhdGVkLgorCisgICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KKyAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bworICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCisKKyovCisKK3N0YXRpYyBpbnQKK2FkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQoreworICAgIGludCBlbnYgPSBhdG9pKGVudnMpOworICAgIGlmIChmbGFnIDwgZW52KQorICAgICAgICBmbGFnID0gZW52OworICAgIGlmIChmbGFnIDwgMSkKKyAgICAgICAgZmxhZyA9IDE7CisgICAgcmV0dXJuIGZsYWc7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCit7CisgICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7CisgICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7CisKKyAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7CisgICAgaWYgKCFjb2RlYykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKKyAgICBQeV9DTEVBUihjb2RlYyk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbmFtZV9zdHI7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoY29kZWMpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCisgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KKyAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7CisgICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworICAgIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOworICAgIH0KKworICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW1wbW9kKTsKKworICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Cit9CisKKwordm9pZAorX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKmJpbW9kLCAqc3lzbW9kLCAqcHN0ZGVycjsKKyAgICBjaGFyICpwOworICAgIGV4dGVybiB2b2lkIF9QeV9SZWFkeVR5cGVzKHZvaWQpOworCisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQgPSAxOworICAgIF9QeV9GaW5hbGl6aW5nID0gTlVMTDsKKworI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfU0VUTE9DQUxFKQorICAgIC8qIFNldCB1cCB0aGUgTENfQ1RZUEUgbG9jYWxlLCBzbyB3ZSBjYW4gb2J0YWluCisgICAgICAgdGhlIGxvY2FsZSdzIGNoYXJzZXQgd2l0aG91dCBoYXZpbmcgdG8gc3dpdGNoCisgICAgICAgbG9jYWxlcy4gKi8KKyAgICBzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKyNlbmRpZgorCisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ERUJVRyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9EZWJ1Z0ZsYWcgPSBhZGRfZmxhZyhQeV9EZWJ1Z0ZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OVkVSQk9TRSIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9WZXJib3NlRmxhZyA9IGFkZF9mbGFnKFB5X1ZlcmJvc2VGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTk9QVElNSVpFIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X09wdGltaXplRmxhZyA9IGFkZF9mbGFnKFB5X09wdGltaXplRmxhZywgcCk7CisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcgPSBhZGRfZmxhZyhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcsIHApOworICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKKyAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7CisKKyAgICBfUHlSYW5kb21fSW5pdCgpOworCisgICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCBpbnRlcnByZXRlciIpOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgZmlyc3QgdGhyZWFkIik7CisgICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCisgICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KKyAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgorICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCisgICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCisgICAgX1B5RXZhbF9GaW5pVGhyZWFkcygpOworCisgICAgLyogQXV0by10aHJlYWQtc3RhdGUgQVBJICovCisgICAgX1B5R0lMU3RhdGVfSW5pdChpbnRlcnAsIHRzdGF0ZSk7CisjZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KKworICAgIF9QeV9SZWFkeVR5cGVzKCk7CisKKyAgICBpZiAoIV9QeUZyYW1lX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmcmFtZXMiKTsKKworICAgIGlmICghX1B5TG9uZ19Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgbG9uZ3MiKTsKKworICAgIGlmICghUHlCeXRlQXJyYXlfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGJ5dGVhcnJheSIpOworCisgICAgaWYgKCFfUHlGbG9hdF9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgZmxvYXQiKTsKKworICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7CisKKyAgICAvKiBJbml0IFVuaWNvZGUgaW1wbGVtZW50YXRpb247IHJlbGllcyBvbiB0aGUgY29kZWMgcmVnaXN0cnkgKi8KKyAgICBpZiAoX1B5VW5pY29kZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHVuaWNvZGUiKTsKKyAgICBpZiAoX1B5U3RydWN0U2VxdWVuY2VfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzdHJ1Y3RzZXEiKTsKKworICAgIGJpbW9kID0gX1B5QnVpbHRpbl9Jbml0KCk7CisgICAgaWYgKGJpbW9kID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgbW9kdWxlcyIpOworICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oYmltb2QsICJidWlsdGlucyIpOworICAgIGludGVycC0+YnVpbHRpbnMgPSBQeU1vZHVsZV9HZXREaWN0KGJpbW9kKTsKKyAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGJ1aWx0aW5zIGRpY3QiKTsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7CisKKyAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKKworICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7CisgICAgaWYgKHN5c21vZCA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyIpOworICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKKyAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIGRpY3QiKTsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKKyAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKHN5c21vZCwgInN5cyIpOworICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPm1vZHVsZXMpOworCisgICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKKyAgICAgICBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGlvIG1vZHVsZSBpbiBwbGFjZS4gKi8KKyAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOworICAgIGlmIChwc3RkZXJyID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNldCBwcmVsaW1pbmFyeSBzdGRlcnIiKTsKKyAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKKyAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKKyAgICBQeV9ERUNSRUYocHN0ZGVycik7CisKKyAgICBfUHlJbXBvcnRfSW5pdCgpOworCisgICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOworCisgICAgLyogSW5pdGlhbGl6ZSBfd2FybmluZ3MuICovCisgICAgX1B5V2FybmluZ3NfSW5pdCgpOworCisgICAgaWYgKCFpbnN0YWxsX2ltcG9ydGxpYikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9QeVRpbWVfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB0aW1lIik7CisKKyAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7CisKKyAgICAvKiBpbml0aWFsaXplIHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgaWYgKF9QeUZhdWx0aGFuZGxlcl9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgZmF1bHRoYW5kbGVyIik7CisKKyAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IHVuYWJsZSB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBjb2RlYyIpOworCisgICAgaWYgKGluc3RhbGxfc2lncykKKyAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLworCisgICAgaWYgKF9QeVRyYWNlTWFsbG9jX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdHJhY2VtYWxsb2MiKTsKKworICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLworICAgIGlmIChpbml0c3RkaW8oKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoCisgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOworCisgICAgLyogSW5pdGlhbGl6ZSB3YXJuaW5ncy4gKi8KKyAgICBpZiAoUHlTeXNfSGFzV2Fybk9wdGlvbnMoKSkgeworICAgICAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ3YXJuaW5ncyIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJ2ltcG9ydCB3YXJuaW5ncycgZmFpbGVkOyB0cmFjZWJhY2s6XG4iKTsKKyAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgIH0KKworICAgIGlmICghUHlfTm9TaXRlRmxhZykKKyAgICAgICAgaW5pdHNpdGUoKTsgLyogTW9kdWxlIHNpdGUgKi8KK30KKwordm9pZAorUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCit7CisgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGluc3RhbGxfc2lncywgMSk7Cit9CisKK3ZvaWQKK1B5X0luaXRpYWxpemUodm9pZCkKK3sKKyAgICBQeV9Jbml0aWFsaXplRXgoMSk7Cit9CisKKworI2lmZGVmIENPVU5UX0FMTE9DUworZXh0ZXJuIHZvaWQgZHVtcF9jb3VudHMoRklMRSopOworI2VuZGlmCisKKy8qIEZsdXNoIHN0ZG91dCBhbmQgc3RkZXJyICovCisKK3N0YXRpYyBpbnQKK2ZpbGVfaXNfY2xvc2VkKFB5T2JqZWN0ICpmb2JqKQoreworICAgIGludCByOworICAgIFB5T2JqZWN0ICp0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvYmosICJjbG9zZWQiKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHIgPSBQeU9iamVjdF9Jc1RydWUodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAociA8IDApCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIHIgPiAwOworfQorCitzdGF0aWMgdm9pZAorZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCit7CisgICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKKyAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOworICAgIFB5T2JqZWN0ICp0bXA7CisKKyAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgeworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KK30KKworLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KKworICAgQmV3YXJlOiBpZiBtdWx0aXBsZSBpbnRlcnByZXRlciBhbmQvb3IgdGhyZWFkIHN0YXRlcyBleGlzdCwgdGhlc2UKKyAgIGFyZSBub3Qgd2lwZWQgb3V0OyBvbmx5IHRoZSBjdXJyZW50IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUKKyAgIGFyZSBkZWxldGVkLiAgQnV0IHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxldGVkLCB0aG9zZSBvdGhlcgorICAgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCBzdGF0ZXMgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgorCisgICAoWFhYIFdlIHNob3VsZCBkbyBiZXR0ZXIsIGUuZy4gd2lwZSBvdXQgYWxsIGludGVycHJldGVycyBhbmQKKyAgIHRocmVhZHMuKQorCisgICBMb2NraW5nOiBhcyBhYm92ZS4KKworKi8KKwordm9pZAorUHlfRmluYWxpemUodm9pZCkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKKworICAgIC8qIFRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBlbnRpcmVseSBpbnRhY3QgYXQgdGhpcyBwb2ludCwgYW5kIHRoZQorICAgICAqIGV4aXQgZnVuY3MgbWF5IGJlIHJlbHlpbmcgb24gdGhhdC4gIEluIHBhcnRpY3VsYXIsIGlmIHNvbWUgdGhyZWFkCisgICAgICogb3IgZXhpdCBmdW5jIGlzIHN0aWxsIHdhaXRpbmcgdG8gZG8gYW4gaW1wb3J0LCB0aGUgaW1wb3J0IG1hY2hpbmVyeQorICAgICAqIGV4cGVjdHMgUHlfSXNJbml0aWFsaXplZCgpIHRvIHJldHVybiB0cnVlLiAgU28gZG9uJ3Qgc2F5IHRoZQorICAgICAqIGludGVycHJldGVyIGlzIHVuaW5pdGlhbGl6ZWQgdW50aWwgYWZ0ZXIgdGhlIGV4aXQgZnVuY3MgaGF2ZSBydW4uCisgICAgICogTm90ZSB0aGF0IFRocmVhZGluZy5weSB1c2VzIGFuIGV4aXQgZnVuYyB0byBkbyBhIGpvaW4gb24gYWxsIHRoZQorICAgICAqIHRocmVhZHMgY3JlYXRlZCB0aHJ1IGl0LCBzbyB0aGlzIGFsc28gcHJvdGVjdHMgcGVuZGluZyBpbXBvcnRzIGluCisgICAgICogdGhlIHRocmVhZHMgY3JlYXRlZCB2aWEgVGhyZWFkaW5nLgorICAgICAqLworICAgIGNhbGxfcHlfZXhpdGZ1bmNzKCk7CisKKyAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworCisgICAgLyogUmVtYWluaW5nIHRocmVhZHMgKGUuZy4gZGFlbW9uIHRocmVhZHMpIHdpbGwgYXV0b21hdGljYWxseSBleGl0CisgICAgICAgYWZ0ZXIgdGFraW5nIHRoZSBHSUwgKGluIFB5RXZhbF9SZXN0b3JlVGhyZWFkKCkpLiAqLworICAgIF9QeV9GaW5hbGl6aW5nID0gdHN0YXRlOworICAgIGluaXRpYWxpemVkID0gMDsKKworICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KKyAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKworICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCisgICAgUHlPU19GaW5pSW50ZXJydXB0cygpOworCisgICAgLyogQ29sbGVjdCBnYXJiYWdlLiAgVGhpcyBtYXkgY2FsbCBmaW5hbGl6ZXJzOyBpdCdzIG5pY2UgdG8gY2FsbCB0aGVzZQorICAgICAqIGJlZm9yZSBhbGwgbW9kdWxlcyBhcmUgZGVzdHJveWVkLgorICAgICAqIFhYWCBJZiBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgaGVyZSwgYW5kIHRyaWVzIHRvCisgICAgICogWFhYIGltcG9ydCBhIG1vZHVsZSwgYmFkIHRoaW5ncyBjYW4gaGFwcGVuLCBiZWNhdXNlIFB5dGhvbiBubworICAgICAqIFhYWCBsb25nZXIgYmVsaWV2ZXMgaXQncyBpbml0aWFsaXplZC4KKyAgICAgKiBYWFggICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogSW50ZXJwcmV0ZXIgbm90IGluaXRpYWxpemVkICh2ZXJzaW9uIG1pc21hdGNoPykKKyAgICAgKiBYWFggaXMgZWFzeSB0byBwcm92b2tlIHRoYXQgd2F5LiAgSSd2ZSBhbHNvIHNlZW4sIGUuZy4sCisgICAgICogWFhYICAgICBFeGNlcHRpb24gZXhjZXB0aW9ucy5JbXBvcnRFcnJvcjogJ05vIG1vZHVsZSBuYW1lZCBzaGEnCisgICAgICogWFhYICAgICAgICAgaW4gPGZ1bmN0aW9uIGNhbGxiYWNrIGF0IDB4MDA4RjU3MTg+IGlnbm9yZWQKKyAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKKyAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KKyAgICAgKi8KKyAgICBQeUdDX0NvbGxlY3QoKTsKKyNpZmRlZiBDT1VOVF9BTExPQ1MKKyAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgorICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQorICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCisgICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyNlbmRpZgorICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KKyAgICBQeUltcG9ydF9DbGVhbnVwKCk7CisKKyAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLworICAgIGZsdXNoX3N0ZF9maWxlcygpOworCisgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQorICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KKyAgICAgKiBYWFggVGhpcyBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGNhdXNlZCB0b28gbWFueSBwcm9ibGVtcy4gIElmCisgICAgICogWFhYIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIHRyaWdnZXJzIGhlcmUsIFB5dGhvbiBjb2RlIGhhcworICAgICAqIFhYWCBhIGhhcmQgdGltZSBydW5uaW5nLCBiZWNhdXNlIGV2ZW4gdGhlIHN5cyBtb2R1bGUgaGFzIGJlZW4KKyAgICAgKiBYWFggY2xlYXJlZCBvdXQgKHN5cy5zdGRvdXQgaXMgZ29uZSwgc3lzLmV4Y2VwdGhvb2sgaXMgZ29uZSwgZXRjKS4KKyAgICAgKiBYWFggT25lIHN5bXB0b20gaXMgYSBzZXF1ZW5jZSBvZiBpbmZvcm1hdGlvbi1mcmVlIG1lc3NhZ2VzCisgICAgICogWFhYIGNvbWluZyBmcm9tIHRocmVhZHMgKGlmIGEgX19kZWxfXyBvciBjYWxsYmFjayBpcyBpbnZva2VkLAorICAgICAqIFhYWCBvdGhlciB0aHJlYWRzIGNhbiBleGVjdXRlIHRvbywgYW5kIGFueSBleGNlcHRpb24gdGhleSBlbmNvdW50ZXIKKyAgICAgKiBYWFggdHJpZ2dlcnMgYSBjb21lZHkgb2YgZXJyb3JzIGFzIHN1YnN5c3RlbSBhZnRlciBzdWJzeXN0ZW0KKyAgICAgKiBYWFggZmFpbHMgdG8gZmluZCB3aGF0IGl0ICpleHBlY3RzKiB0byBmaW5kIGluIHN5cyB0byBoZWxwIHJlcG9ydAorICAgICAqIFhYWCB0aGUgZXhjZXB0aW9uIGFuZCBjb25zZXF1ZW50IHVuZXhwZWN0ZWQgZmFpbHVyZXMpLiAgSSd2ZSBhbHNvCisgICAgICogWFhYIHNlZW4gc2VnZmF1bHRzIHRoZW4sIGFmdGVyIGFkZGluZyBwcmludCBzdGF0ZW1lbnRzIHRvIHRoZQorICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KKyAgICAgKi8KKyNpZiAwCisgICAgUHlHQ19Db2xsZWN0KCk7CisjZW5kaWYKKworICAgIC8qIERpc2FibGUgdHJhY2VtYWxsb2MgYWZ0ZXIgYWxsIFB5dGhvbiBvYmplY3RzIGhhdmUgYmVlbiBkZXN0cm95ZWQsCisgICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gdXNlIHRyYWNlbWFsbG9jIGluIG9iamVjdHMgZGVzdHJ1Y3Rvci4gKi8KKyAgICBfUHlUcmFjZU1hbGxvY19GaW5pKCk7CisKKyAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KKyAgICBfUHlJbXBvcnRfRmluaSgpOworCisgICAgLyogQ2xlYW51cCB0eXBlb2JqZWN0LmMncyBpbnRlcm5hbCBjYWNoZXMuICovCisgICAgX1B5VHlwZV9GaW5pKCk7CisKKyAgICAvKiB1bmxvYWQgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLworICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7CisKKyAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KKyNpZmRlZiBDT1VOVF9BTExPQ1MKKyAgICBkdW1wX2NvdW50cyhzdGRvdXQpOworI2VuZGlmCisgICAgLyogZHVtcCBoYXNoIHN0YXRzICovCisgICAgX1B5SGFzaF9GaW5pKCk7CisKKyAgICBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpOworCisjaWZkZWYgUHlfVFJBQ0VfUkVGUworICAgIC8qIERpc3BsYXkgYWxsIG9iamVjdHMgc3RpbGwgYWxpdmUgLS0gdGhpcyBjYW4gaW52b2tlIGFyYml0cmFyeQorICAgICAqIF9fcmVwcl9fIG92ZXJyaWRlcywgc28gcmVxdWlyZXMgYSBtb3N0bHktaW50YWN0IGludGVycHJldGVyLgorICAgICAqIEFsYXMsIGEgbG90IG9mIHN0dWZmIG1heSBzdGlsbCBiZSBhbGl2ZSBub3cgdGhhdCB3aWxsIGJlIGNsZWFuZWQKKyAgICAgKiB1cCBsYXRlci4KKyAgICAgKi8KKyAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQorICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VzKHN0ZGVycik7CisjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLworCisgICAgLyogQ2xlYXIgaW50ZXJwcmV0ZXIgc3RhdGUgYW5kIGFsbCB0aHJlYWQgc3RhdGVzLiAqLworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihpbnRlcnApOworCisgICAgLyogTm93IHdlIGRlY3JlZiB0aGUgZXhjZXB0aW9uIGNsYXNzZXMuICBBZnRlciB0aGlzIHBvaW50IG5vdGhpbmcKKyAgICAgICBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhhdCdzIG9rYXksIGJlY2F1c2UgZWFjaCBGaW5pKCkgbWV0aG9kCisgICAgICAgYmVsb3cgaGFzIGJlZW4gY2hlY2tlZCB0byBtYWtlIHN1cmUgbm8gZXhjZXB0aW9ucyBhcmUgZXZlcgorICAgICAgIHJhaXNlZC4KKyAgICAqLworCisgICAgX1B5RXhjX0ZpbmkoKTsKKworICAgIC8qIFN1bmRyeSBmaW5hbGl6ZXJzICovCisgICAgUHlNZXRob2RfRmluaSgpOworICAgIFB5RnJhbWVfRmluaSgpOworICAgIFB5Q0Z1bmN0aW9uX0ZpbmkoKTsKKyAgICBQeVR1cGxlX0ZpbmkoKTsKKyAgICBQeUxpc3RfRmluaSgpOworICAgIFB5U2V0X0ZpbmkoKTsKKyAgICBQeUJ5dGVzX0ZpbmkoKTsKKyAgICBQeUJ5dGVBcnJheV9GaW5pKCk7CisgICAgUHlMb25nX0ZpbmkoKTsKKyAgICBQeUZsb2F0X0ZpbmkoKTsKKyAgICBQeURpY3RfRmluaSgpOworICAgIFB5U2xpY2VfRmluaSgpOworICAgIF9QeUdDX0ZpbmkoKTsKKyAgICBfUHlSYW5kb21fRmluaSgpOworCisgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCisgICAgX1B5VW5pY29kZV9GaW5pKCk7CisKKyAgICAvKiByZXNldCBmaWxlIHN5c3RlbSBkZWZhdWx0IGVuY29kaW5nICovCisgICAgaWYgKCFQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpIHsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSgoY2hhciopUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBOVUxMOworICAgIH0KKworICAgIC8qIFhYWCBTdGlsbCBhbGxvY2F0ZWQ6CisgICAgICAgLSB2YXJpb3VzIHN0YXRpYyBhZC1ob2MgcG9pbnRlcnMgdG8gaW50ZXJuZWQgc3RyaW5ncworICAgICAgIC0gaW50IGFuZCBmbG9hdCBmcmVlIGxpc3QgYmxvY2tzCisgICAgICAgLSB3aGF0ZXZlciB2YXJpb3VzIG1vZHVsZXMgYW5kIGxpYnJhcmllcyBhbGxvY2F0ZQorICAgICovCisKKyAgICBQeUdyYW1tYXJfUmVtb3ZlQWNjZWxlcmF0b3JzKCZfUHlQYXJzZXJfR3JhbW1hcik7CisKKyAgICAvKiBDbGVhbnVwIGF1dG8tdGhyZWFkLXN0YXRlICovCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlHSUxTdGF0ZV9GaW5pKCk7CisjZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KKworICAgIC8qIERlbGV0ZSBjdXJyZW50IHRocmVhZC4gQWZ0ZXIgdGhpcywgbWFueSBDIEFQSSBjYWxscyBiZWNvbWUgY3Jhc2h5LiAqLworICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKyAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKGludGVycCk7CisKKyNpZmRlZiBQeV9UUkFDRV9SRUZTCisgICAgLyogRGlzcGxheSBhZGRyZXNzZXMgKCYgcmVmY250cykgb2YgYWxsIG9iamVjdHMgc3RpbGwgYWxpdmUuCisgICAgICogQW4gYWRkcmVzcyBjYW4gYmUgdXNlZCB0byBmaW5kIHRoZSByZXByIG9mIHRoZSBvYmplY3QsIHByaW50ZWQKKyAgICAgKiBhYm92ZSBieSBfUHlfUHJpbnRSZWZlcmVuY2VzLgorICAgICAqLworICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCisgICAgICAgIF9QeV9QcmludFJlZmVyZW5jZUFkZHJlc3NlcyhzdGRlcnIpOworI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KKyNpZmRlZiBQWU1BTExPQ19ERUJVRworICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisjZW5kaWYKKworICAgIGNhbGxfbGxfZXhpdGZ1bmNzKCk7Cit9CisKKy8qIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBpbnRlcnByZXRlciBhbmQgdGhyZWFkLCBhbmQgcmV0dXJuIHRoZQorICAgbmV3IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCBQeV9Jbml0aWFsaXplKCkgaGFzIGJlZW4gY2FsbGVkCisgICBmaXJzdC4KKworICAgVW5zdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uIHlpZWxkcyBhIE5VTEwgcG9pbnRlci4gIE5vdGUgdGhhdCAqbm8qCisgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGV2ZW4gaW4gdGhpcyBjYXNlIC0tIHRoZQorICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIGhlbGQgaW4gdGhlIHRocmVhZCwgYW5kIHRoZXJlIGlzIG5vCisgICB0aHJlYWQuCisKKyAgIExvY2tpbmc6IGFzIGFib3ZlLgorCisqLworCitQeVRocmVhZFN0YXRlICoKK1B5X05ld0ludGVycHJldGVyKHZvaWQpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCAqc2F2ZV90c3RhdGU7CisgICAgUHlPYmplY3QgKmJpbW9kLCAqc3lzbW9kOworCisgICAgaWYgKCFpbml0aWFsaXplZCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfTmV3SW50ZXJwcmV0ZXI6IGNhbGwgUHlfSW5pdGlhbGl6ZSBmaXJzdCIpOworCisgICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05ldyhpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgeworICAgICAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKGludGVycCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNhdmVfdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CisKKyAgICAvKiBYWFggVGhlIGZvbGxvd2luZyBpcyBsYXggaW4gZXJyb3IgY2hlY2tpbmcgKi8KKworICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKKworICAgIGJpbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJidWlsdGlucyIpOworICAgIGlmIChiaW1vZCAhPSBOVUxMKSB7CisgICAgICAgIGludGVycC0+YnVpbHRpbnMgPSBQeU1vZHVsZV9HZXREaWN0KGJpbW9kKTsKKyAgICAgICAgaWYgKGludGVycC0+YnVpbHRpbnMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworICAgICAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7CisgICAgfQorCisgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KKyAgICBfUHlFeGNfSW5pdChiaW1vZCk7CisKKyAgICBzeXNtb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oInN5cyIpOworICAgIGlmIChiaW1vZCAhPSBOVUxMICYmIHN5c21vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpwc3RkZXJyOworCisgICAgICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKKyAgICAgICAgaWYgKGludGVycC0+c3lzZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisgICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPnN5c2RpY3QpOworICAgICAgICBQeVN5c19TZXRQYXRoKFB5X0dldFBhdGgoKSk7CisgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGludGVycC0+c3lzZGljdCwgIm1vZHVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPm1vZHVsZXMpOworICAgICAgICAvKiBTZXQgdXAgYSBwcmVsaW1pbmFyeSBzdGRlcnIgcHJpbnRlciB1bnRpbCB3ZSBoYXZlIGVub3VnaAorICAgICAgICAgICBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGlvIG1vZHVsZSBpbiBwbGFjZS4gKi8KKyAgICAgICAgcHN0ZGVyciA9IFB5RmlsZV9OZXdTdGRQcmludGVyKGZpbGVubyhzdGRlcnIpKTsKKyAgICAgICAgaWYgKHBzdGRlcnIgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNldCBwcmVsaW1pbmFyeSBzdGRlcnIiKTsKKyAgICAgICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGVyciwgcHN0ZGVycik7CisgICAgICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHBzdGRlcnIpOworICAgICAgICBQeV9ERUNSRUYocHN0ZGVycik7CisKKyAgICAgICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOworCisgICAgICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgICAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCisgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKKworICAgICAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKKyAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CisgICAgICAgIGluaXRtYWluKGludGVycCk7CisgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKKyAgICAgICAgICAgIGluaXRzaXRlKCk7CisgICAgfQorCisgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gdHN0YXRlOworCitoYW5kbGVfZXJyb3I6CisgICAgLyogT29wcywgaXQgZGlkbid0IHdvcmsuICBVbmRvIGl0IGFsbC4gKi8KKworICAgIFB5RXJyX1ByaW50RXgoMCk7CisgICAgUHlUaHJlYWRTdGF0ZV9DbGVhcih0c3RhdGUpOworICAgIFB5VGhyZWFkU3RhdGVfU3dhcChzYXZlX3RzdGF0ZSk7CisgICAgUHlUaHJlYWRTdGF0ZV9EZWxldGUodHN0YXRlKTsKKyAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKGludGVycCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogRGVsZXRlIGFuIGludGVycHJldGVyIGFuZCBpdHMgbGFzdCB0aHJlYWQuICBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlCisgICBnaXZlbiB0aHJlYWQgc3RhdGUgaXMgY3VycmVudCwgdGhhdCB0aGUgdGhyZWFkIGhhcyBubyByZW1haW5pbmcKKyAgIGZyYW1lcywgYW5kIHRoYXQgaXQgaXMgaXRzIGludGVycHJldGVyJ3Mgb25seSByZW1haW5pbmcgdGhyZWFkLgorICAgSXQgaXMgYSBmYXRhbCBlcnJvciB0byB2aW9sYXRlIHRoZXNlIGNvbnN0cmFpbnRzLgorCisgICAoUHlfRmluYWxpemUoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcworICAgZXZlcnl0aGluZywgcmVnYXJkbGVzcy4pCisKKyAgIExvY2tpbmc6IGFzIGFib3ZlLgorCisqLworCit2b2lkCitQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICp0c3RhdGUpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIGlmICh0c3RhdGUgIT0gUHlUaHJlYWRTdGF0ZV9HRVQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBpcyBub3QgY3VycmVudCIpOworICAgIGlmICh0c3RhdGUtPmZyYW1lICE9IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiB0aHJlYWQgc3RpbGwgaGFzIGEgZnJhbWUiKTsKKworICAgIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bigpOworCisgICAgaWYgKHRzdGF0ZSAhPSBpbnRlcnAtPnRzdGF0ZV9oZWFkIHx8IHRzdGF0ZS0+bmV4dCAhPSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogbm90IHRoZSBsYXN0IHRocmVhZCIpOworCisgICAgUHlJbXBvcnRfQ2xlYW51cCgpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihpbnRlcnApOworICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKyAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKGludGVycCk7Cit9CisKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbiI7CisjZWxzZQorc3RhdGljIHdjaGFyX3QgKnByb2duYW1lID0gTCJweXRob24zIjsKKyNlbmRpZgorCit2b2lkCitQeV9TZXRQcm9ncmFtTmFtZSh3Y2hhcl90ICpwbikKK3sKKyAgICBpZiAocG4gJiYgKnBuKQorICAgICAgICBwcm9nbmFtZSA9IHBuOworfQorCit3Y2hhcl90ICoKK1B5X0dldFByb2dyYW1OYW1lKHZvaWQpCit7CisgICAgcmV0dXJuIHByb2duYW1lOworfQorCitzdGF0aWMgd2NoYXJfdCAqZGVmYXVsdF9ob21lID0gTlVMTDsKK3N0YXRpYyB3Y2hhcl90IGVudl9ob21lW01BWFBBVEhMRU4rMV07CisKK3ZvaWQKK1B5X1NldFB5dGhvbkhvbWUod2NoYXJfdCAqaG9tZSkKK3sKKyAgICBkZWZhdWx0X2hvbWUgPSBob21lOworfQorCit3Y2hhcl90ICoKK1B5X0dldFB5dGhvbkhvbWUodm9pZCkKK3sKKyAgICB3Y2hhcl90ICpob21lID0gZGVmYXVsdF9ob21lOworICAgIGlmIChob21lID09IE5VTEwgJiYgIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgeworICAgICAgICBjaGFyKiBjaG9tZSA9IFB5X0dFVEVOVigiUFlUSE9OSE9NRSIpOworICAgICAgICBpZiAoY2hvbWUpIHsKKyAgICAgICAgICAgIHNpemVfdCBzaXplID0gUHlfQVJSQVlfTEVOR1RIKGVudl9ob21lKTsKKyAgICAgICAgICAgIHNpemVfdCByID0gbWJzdG93Y3MoZW52X2hvbWUsIGNob21lLCBzaXplKTsKKyAgICAgICAgICAgIGlmIChyICE9IChzaXplX3QpLTEgJiYgciA8IHNpemUpCisgICAgICAgICAgICAgICAgaG9tZSA9IGVudl9ob21lOworICAgICAgICB9CisKKyAgICB9CisgICAgcmV0dXJuIGhvbWU7Cit9CisKKy8qIENyZWF0ZSBfX21haW5fXyBtb2R1bGUgKi8KKworc3RhdGljIHZvaWQKK2luaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQoreworICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlcjsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfX21haW5fXyIpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGNyZWF0ZSBfX21haW5fXyBtb2R1bGUiKTsKKyAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKKyAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOworICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIGJ1aWx0aW5zIG1vZHVsZSIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIiwgYmltb2QpIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19idWlsdGluc19fIik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGJpbW9kKTsKKyAgICB9CisgICAgLyogTWFpbiBpcyBhIGxpdHRsZSBzcGVjaWFsIC0gaW1wLmlzX2J1aWx0aW4oIl9fbWFpbl9fIikgd2lsbCByZXR1cm4KKyAgICAgKiBGYWxzZSwgYnV0IEJ1aWx0aW5JbXBvcnRlciBpcyBzdGlsbCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBpbml0aWFsCisgICAgICogc2V0dGluZyBmb3IgaXRzIF9fbG9hZGVyX18gYXR0cmlidXRlLiBBIG1vcmUgc3VpdGFibGUgdmFsdWUgd2lsbAorICAgICAqIGJlIHNldCBpZiBfX21haW5fXyBnZXRzIGZ1cnRoZXIgaW5pdGlhbGl6ZWQgbGF0ZXIgaW4gdGhlIHN0YXJ0dXAKKyAgICAgKiBwcm9jZXNzLgorICAgICAqLworICAgIGxvYWRlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIik7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMIHx8IGxvYWRlciA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICpsb2FkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIEJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIsIGxvYWRlcikgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2xvYWRlcl9fIik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7CisgICAgfQorfQorCitzdGF0aWMgaW50Citpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKK3sKKyAgICBQeU9iamVjdCAqY29kZWM7CisKKyAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IGdldF9sb2NhbGVfZW5jb2RpbmcoKTsKKyAgICAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IFVuYWJsZSB0byBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyIpOworCisgICAgICAgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOworICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiB0aGUgZW5jb2RpbmcgaXMgbWJjcywgdXRmLTggb3IgYXNjaWkgKi8KKyAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKKyAgICBpZiAoIWNvZGVjKSB7CisgICAgICAgIC8qIFN1Y2ggZXJyb3IgY2FuIG9ubHkgb2NjdXJzIGluIGNyaXRpY2FsIHNpdHVhdGlvbnM6IG5vIG1vcmUKKyAgICAgICAgICogbWVtb3J5LCBpbXBvcnQgYSBtb2R1bGUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZmFpbGVkLAorICAgICAgICAgKiBldGMuICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfREVDUkVGKGNvZGVjKTsKKyAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOworICAgIHJldHVybiAwOworfQorCisvKiBJbXBvcnQgdGhlIHNpdGUgbW9kdWxlIChub3QgaW50byBfX21haW5fXyB0aG91Z2gpICovCisKK3N0YXRpYyB2b2lkCitpbml0c2l0ZSh2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworICAgIG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInNpdGUiKTsKKyAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGltcG9ydCB0aGUgc2l0ZSBtb2R1bGVcbiIpOworICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICBQeV9GaW5hbGl6ZSgpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlX3N0ZGlvKFB5T2JqZWN0KiBpbywKKyAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjaGFyKiBuYW1lLAorICAgIGNoYXIqIGVuY29kaW5nLCBjaGFyKiBlcnJvcnMpCit7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyYXcgPSBOVUxMLCAqcmVzOworICAgIGNvbnN0IGNoYXIqIG1vZGU7CisgICAgY29uc3QgY2hhciogbmV3bGluZTsKKyAgICBQeU9iamVjdCAqbGluZV9idWZmZXJpbmc7CisgICAgaW50IGJ1ZmZlcmluZywgaXNhdHR5OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoVGV4dElPV3JhcHBlcik7CisgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CisKKyAgICAvKiBzdGRpbiBpcyBhbHdheXMgb3BlbmVkIGluIGJ1ZmZlcmVkIG1vZGUsIGZpcnN0IGJlY2F1c2UgaXQgc2hvdWxkbid0CisgICAgICAgbWFrZSBhIGRpZmZlcmVuY2UgaW4gY29tbW9uIHVzZSBjYXNlcywgc2Vjb25kIGJlY2F1c2UgVGV4dElPV3JhcHBlcgorICAgICAgIGRlcGVuZHMgb24gdGhlIHByZXNlbmNlIG9mIGEgcmVhZDEoKSBtZXRob2Qgd2hpY2ggb25seSBleGlzdHMgb24KKyAgICAgICBidWZmZXJlZCBzdHJlYW1zLgorICAgICovCisgICAgaWYgKFB5X1VuYnVmZmVyZWRTdGRpb0ZsYWcgJiYgd3JpdGVfbW9kZSkKKyAgICAgICAgYnVmZmVyaW5nID0gMDsKKyAgICBlbHNlCisgICAgICAgIGJ1ZmZlcmluZyA9IC0xOworICAgIGlmICh3cml0ZV9tb2RlKQorICAgICAgICBtb2RlID0gIndiIjsKKyAgICBlbHNlCisgICAgICAgIG1vZGUgPSAicmIiOworICAgIGJ1ZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lPT09pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoYnVmZmVyaW5nKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJhdyk7CisgICAgICAgIHJhdyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYnVmLCAmUHlJZF9yYXcpOworICAgICAgICBpZiAocmF3ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmF3ID0gYnVmOworICAgICAgICBQeV9JTkNSRUYocmF3KTsKKyAgICB9CisKKyAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKHRleHQgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHJhdywgJlB5SWRfbmFtZSwgdGV4dCkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksICIiKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaXNhdHR5ID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgaWYgKGlzYXR0eSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoaXNhdHR5IHx8IFB5X1VuYnVmZmVyZWRTdGRpb0ZsYWcpCisgICAgICAgIGxpbmVfYnVmZmVyaW5nID0gUHlfVHJ1ZTsKKyAgICBlbHNlCisgICAgICAgIGxpbmVfYnVmZmVyaW5nID0gUHlfRmFsc2U7CisKKyAgICBQeV9DTEVBUihyYXcpOworICAgIFB5X0NMRUFSKHRleHQpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIHN5cy5zdGRpbjogZW5hYmxlIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUsIHRyYW5zbGF0ZSAiXHJcbiIgYW5kICJcciIKKyAgICAgICBuZXdsaW5lcyB0byAiXG4iLgorICAgICAgIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnI6IHRyYW5zbGF0ZSAiXG4iIHRvICJcclxuIi4gKi8KKyAgICBuZXdsaW5lID0gTlVMTDsKKyNlbHNlCisgICAgLyogc3lzLnN0ZGluOiBzcGxpdCBsaW5lcyBhdCAiXG4iLgorICAgICAgIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnI6IGRvbid0IHRyYW5zbGF0ZSBuZXdsaW5lcyAodXNlICJcbiIpLiAqLworICAgIG5ld2xpbmUgPSAiXG4iOworI2VuZGlmCisKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9UZXh0SU9XcmFwcGVyLCAiT3Nzc08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOworICAgIFB5X0NMRUFSKGJ1Zik7CisgICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKHdyaXRlX21vZGUpCisgICAgICAgIG1vZGUgPSAidyI7CisgICAgZWxzZQorICAgICAgICBtb2RlID0gInIiOworICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2RlKTsKKyAgICBpZiAoIXRleHQgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChzdHJlYW0sICZQeUlkX21vZGUsIHRleHQpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUih0ZXh0KTsKKyAgICByZXR1cm4gc3RyZWFtOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGJ1Zik7CisgICAgUHlfWERFQ1JFRihzdHJlYW0pOworICAgIFB5X1hERUNSRUYodGV4dCk7CisgICAgUHlfWERFQ1JFRihyYXcpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50Citpc192YWxpZF9mZChpbnQgZmQpCit7CisgICAgaW50IGR1bW15X2ZkOworICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiAwOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkdW1teV9mZCA9IGR1cChmZCk7CisgICAgaWYgKGR1bW15X2ZkID49IDApCisgICAgICAgIGNsb3NlKGR1bW15X2ZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiBkdW1teV9mZCA+PSAwOworfQorCisvKiBJbml0aWFsaXplIHN5cy5zdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGJ1aWx0aW5zLm9wZW4gKi8KK3N0YXRpYyBpbnQKK2luaXRzdGRpbyh2b2lkKQoreworICAgIFB5T2JqZWN0ICppb21vZCA9IE5VTEwsICp3cmFwcGVyOworICAgIFB5T2JqZWN0ICpiaW1vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm07CisgICAgUHlPYmplY3QgKnN0ZCA9IE5VTEw7CisgICAgaW50IHN0YXR1cyA9IDAsIGZkOworICAgIFB5T2JqZWN0ICogZW5jb2RpbmdfYXR0cjsKKyAgICBjaGFyICpweXRob25pb2VuY29kaW5nID0gTlVMTCwgKmVuY29kaW5nLCAqZXJyb3JzOworCisgICAgLyogSGFjayB0byBhdm9pZCBhIG5hc3R5IHJlY3Vyc2lvbiBpc3N1ZSB3aGVuIFB5dGhvbiBpcyBpbnZva2VkCisgICAgICAgaW4gdmVyYm9zZSBtb2RlOiBwcmUtaW1wb3J0IHRoZSBMYXRpbi0xIGFuZCBVVEYtOCBjb2RlY3MgKi8KKyAgICBpZiAoKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy51dGZfOCIpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy5sYXRpbl8xIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKGJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICghKGlvbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoISh3cmFwcGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpb21vZCwgIk9wZW5XcmFwcGVyIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGJ1aWx0aW5zLm9wZW4gKi8KKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhiaW1vZCwgIm9wZW4iLCB3cmFwcGVyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKworICAgIGVuY29kaW5nID0gX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2Rpbmc7CisgICAgZXJyb3JzID0gX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzOworICAgIGlmICghZW5jb2RpbmcgfHwgIWVycm9ycykgeworICAgICAgICBpZiAoIWVycm9ycykgeworICAgICAgICAgICAgLyogV2hlbiB0aGUgTENfQ1RZUEUgbG9jYWxlIGlzIHRoZSBQT1NJWCBsb2NhbGUgKCJDIGxvY2FsZSIpLAorICAgICAgICAgICAgICAgc3RkaW4gYW5kIHN0ZG91dCB1c2UgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGJ5CisgICAgICAgICAgICAgICBkZWZhdWx0LCBpbnN0ZWFkIG9mIHRoZSBzdHJpY3QgZXJyb3IgaGFuZGxlci4gKi8KKyAgICAgICAgICAgIGNoYXIgKmxvYyA9IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CisgICAgICAgICAgICBpZiAobG9jICE9IE5VTEwgJiYgc3RyY21wKGxvYywgIkMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVycm9ycyA9ICJzdXJyb2dhdGVlc2NhcGUiOworICAgICAgICB9CisKKyAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IFB5X0dFVEVOVigiUFlUSE9OSU9FTkNPRElORyIpOworICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZykgeworICAgICAgICAgICAgY2hhciAqZXJyOworICAgICAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IF9QeU1lbV9TdHJkdXAocHl0aG9uaW9lbmNvZGluZyk7CisgICAgICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJyID0gc3RyY2hyKHB5dGhvbmlvZW5jb2RpbmcsICc6Jyk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgKmVyciA9ICdcMCc7CisgICAgICAgICAgICAgICAgZXJyKys7CisgICAgICAgICAgICAgICAgaWYgKCplcnIgJiYgIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpweXRob25pb2VuY29kaW5nICYmICFlbmNvZGluZykgeworICAgICAgICAgICAgICAgIGVuY29kaW5nID0gcHl0aG9uaW9lbmNvZGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFNldCBzeXMuc3RkaW4gKi8KKyAgICBmZCA9IGZpbGVubyhzdGRpbik7CisgICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBtYXkgbm90IGJlIGNvbm5lY3RlZAorICAgICAqIGFuZCBmaWxlbm8oKSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCisgICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCisgICAgICovCisgICAgaWYgKCFpc192YWxpZF9mZChmZCkpIHsKKyAgICAgICAgc3RkID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHN0ZCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAwLCAiPHN0ZGluPiIsIGVuY29kaW5nLCBlcnJvcnMpOworICAgICAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0gLyogaWYgKGZkIDwgMCkgKi8KKyAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkaW5fXyIsIHN0ZCk7CisgICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGluLCBzdGQpOworICAgIFB5X0RFQ1JFRihzdGQpOworCisgICAgLyogU2V0IHN5cy5zdGRvdXQgKi8KKyAgICBmZCA9IGZpbGVubyhzdGRvdXQpOworICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKSB7CisgICAgICAgIHN0ZCA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihzdGQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRvdXQ+IiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgICAgIGlmIChzdGQgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfSAvKiBpZiAoZmQgPCAwKSAqLworICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRvdXRfXyIsIHN0ZCk7CisgICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZG91dCwgc3RkKTsKKyAgICBQeV9ERUNSRUYoc3RkKTsKKworI2lmIDEgLyogRGlzYWJsZSB0aGlzIGlmIHlvdSBoYXZlIHRyb3VibGUgZGVidWdnaW5nIGJvb3RzdHJhcCBzdHVmZiAqLworICAgIC8qIFNldCBzeXMuc3RkZXJyLCByZXBsYWNlcyB0aGUgcHJlbGltaW5hcnkgc3RkZXJyICovCisgICAgZmQgPSBmaWxlbm8oc3RkZXJyKTsKKyAgICBpZiAoIWlzX3ZhbGlkX2ZkKGZkKSkgeworICAgICAgICBzdGQgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoc3RkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3RkZXJyPiIsIGVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpOworICAgICAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0gLyogaWYgKGZkIDwgMCkgKi8KKworICAgIC8qIFNhbWUgYXMgaGFjayBhYm92ZSwgcHJlLWltcG9ydCBzdGRlcnIncyBjb2RlYyB0byBhdm9pZCByZWN1cnNpb24KKyAgICAgICB3aGVuIGltcG9ydC5jIHRyaWVzIHRvIHdyaXRlIHRvIHN0ZGVyciBpbiB2ZXJib3NlIG1vZGUuICovCisgICAgZW5jb2RpbmdfYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RkLCAiZW5jb2RpbmciKTsKKyAgICBpZiAoZW5jb2RpbmdfYXR0ciAhPSBOVUxMKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKiBzdGRfZW5jb2Rpbmc7CisgICAgICAgIHN0ZF9lbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmdfYXR0cik7CisgICAgICAgIGlmIChzdGRfZW5jb2RpbmcgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVjX2luZm8gPSBfUHlDb2RlY19Mb29rdXAoc3RkX2VuY29kaW5nKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoY29kZWNfaW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nX2F0dHIpOworICAgIH0KKyAgICBQeUVycl9DbGVhcigpOyAgLyogTm90IGEgZmF0YWwgZXJyb3IgaWYgY29kZWMgaXNuJ3QgYXZhaWxhYmxlICovCisKKyAgICBpZiAoUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgc3RkKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0ZCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBzdGQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RkKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKHN0ZCk7CisjZW5kaWYKKworICAgIGlmICgwKSB7CisgIGVycm9yOgorICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICB9CisKKyAgICAvKiBXZSB3b24ndCBuZWVkIHRoZW0gYW55bW9yZS4gKi8KKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7CisgICAgfQorICAgIFB5TWVtX0ZyZWUocHl0aG9uaW9lbmNvZGluZyk7CisgICAgUHlfWERFQ1JFRihiaW1vZCk7CisgICAgUHlfWERFQ1JFRihpb21vZCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKKyAqIG9yIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrLgorICoKKyAqIERvbid0IGNhbGwgUHlFcnJfUHJpbnRFeCgpIGFuZCB0aGUgZXhjZXB0IGhvb2ssIGJlY2F1c2UgUHlfRmF0YWxFcnJvcigpIGlzCisgKiBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzLiAqLworCitzdGF0aWMgdm9pZAorX1B5X1ByaW50RmF0YWxFcnJvcihpbnQgZmQpCit7CisgICAgUHlPYmplY3QgKmZlcnIsICpyZXM7CisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnYsICp0YjsKKyAgICBpbnQgaGFzX3RiOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICAvKiBObyBjdXJyZW50IGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOworICAgIGlmIChmZXJyID09IE5VTEwgfHwgZmVyciA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIHN5cy5zdGRlcnIgaXMgbm90IHNldCB5ZXQgb3Igc2V0IHRvIE5vbmUsCisgICAgICAgICAgIG5vIG5lZWQgdG8gdHJ5IHRvIGRpc3BsYXkgdGhlIGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmICh0YiA9PSBOVUxMKSB7CisgICAgICAgIHRiID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHRiKTsKKyAgICB9CisgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHYsIHRiKTsKKyAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKKyAgICAgICAgLyogUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCkgZmFpbGVkICovCisgICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKKyAgICB9CisKKyAgICBoYXNfdGIgPSAodGIgIT0gUHlfTm9uZSk7CisgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKKyAgICBQeV9YREVDUkVGKGV4Y2VwdGlvbik7CisgICAgUHlfWERFQ1JFRih2KTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKworICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgIGlmIChoYXNfdGIpCisgICAgICAgIHJldHVybjsKKworZGlzcGxheV9zdGFjazoKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLworICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisjZWxzZQorICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisjZW5kaWYKKyAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5CisgICAgICAgICAqIGZyYW1lcyAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKworICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKK30KKy8qIFByaW50IGZhdGFsIGVycm9yIG1lc3NhZ2UgYW5kIGFib3J0ICovCisKK3ZvaWQKK1B5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKQoreworICAgIGNvbnN0IGludCBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIHN0YXRpYyBpbnQgcmVlbnRyYW50ID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgc2l6ZV90IGxlbjsKKyAgICBXQ0hBUiogYnVmZmVyOworICAgIHNpemVfdCBpOworI2VuZGlmCisKKyAgICBpZiAocmVlbnRyYW50KSB7CisgICAgICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBjYXVzZWQgYSBzZWNvbmQgZmF0YWwgZXJyb3IuCisgICAgICAgICAgIEV4YW1wbGU6IGZsdXNoX3N0ZF9maWxlcygpIHJhaXNlcyBhIHJlY3Vyc2lvbiBlcnJvci4gKi8KKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZWVudHJhbnQgPSAxOworCisgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOworICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCisKKyAgICAvKiBQcmludCB0aGUgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCisgICAgICogb3IgZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2suICovCisgICAgX1B5X1ByaW50RmF0YWxFcnJvcihmZCk7CisKKyAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBUaGUgbWFpbiBwdXJwb3NlIG9mIGZhdWx0aGFuZGxlciBpcyB0byBkaXNwbGF5IHRoZSB0cmFjZWJhY2suIFdlIGFscmVhZHkKKyAgICAgKiBkaWQgb3VyIGJlc3QgdG8gZGlzcGxheSBpdC4gU28gZmF1bHRoYW5kbGVyIGNhbiBub3cgYmUgZGlzYWJsZWQuCisgICAgICogKERvbid0IHRyaWdnZXIgaXQgb24gYWJvcnQoKS4pICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBsZW4gPSBzdHJsZW4obXNnKTsKKworICAgIC8qIENvbnZlcnQgdGhlIG1lc3NhZ2UgdG8gd2NoYXJfdC4gVGhpcyB1c2VzIGEgc2ltcGxlIG9uZS10by1vbmUKKyAgICBjb252ZXJzaW9uLCBhc3N1bWluZyB0aGF0IHRoZSB0aGlzIGVycm9yIG1lc3NhZ2UgYWN0dWFsbHkgdXNlcyBBU0NJSQorICAgIG9ubHkuIElmIHRoaXMgY2Vhc2VzIHRvIGJlIHRydWUsIHdlIHdpbGwgaGF2ZSB0byBjb252ZXJ0LiAqLworICAgIGJ1ZmZlciA9IGFsbG9jYSggKGxlbisxKSAqIChzaXplb2YgKmJ1ZmZlcikpOworICAgIGZvciggaT0wOyBpPD1sZW47ICsraSkKKyAgICAgICAgYnVmZmVyW2ldID0gbXNnW2ldOworICAgIE91dHB1dERlYnVnU3RyaW5nVyhMIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKGJ1ZmZlcik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiXG4iKTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKK2V4aXQ6CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKF9ERUJVRykKKyAgICBEZWJ1Z0JyZWFrKCk7CisjZW5kaWYKKyAgICBhYm9ydCgpOworfQorCisvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKK3N0YXRpYyB2b2lkICgqcHlleGl0ZnVuYykodm9pZCkgPSBOVUxMOworLyogRm9yIHRoZSBhdGV4aXQgbW9kdWxlLiAqLwordm9pZCBfUHlfUHlBdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQoreworICAgIHB5ZXhpdGZ1bmMgPSBmdW5jOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9weV9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICBpZiAocHlleGl0ZnVuYyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICAoKnB5ZXhpdGZ1bmMpKCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKK30KKworLyogV2FpdCB1bnRpbCB0aHJlYWRpbmcuX3NodXRkb3duIGNvbXBsZXRlcywgcHJvdmlkZWQKKyAgIHRoZSB0aHJlYWRpbmcgbW9kdWxlIHdhcyBpbXBvcnRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICBUaGUgc2h1dGRvd24gcm91dGluZSB3aWxsIHdhaXQgdW50aWwgYWxsIG5vbi1kYWVtb24KKyAgICJ0aHJlYWRpbmciIHRocmVhZHMgaGF2ZSBjb21wbGV0ZWQuICovCitzdGF0aWMgdm9pZAord2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlfSURFTlRJRklFUihfc2h1dGRvd24pOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5nID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcodHN0YXRlLT5pbnRlcnAtPm1vZHVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aHJlYWRpbmciKTsKKyAgICBpZiAodGhyZWFkaW5nID09IE5VTEwpIHsKKyAgICAgICAgLyogdGhyZWFkaW5nIG5vdCBpbXBvcnRlZCAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgUHlfREVDUkVGKHRocmVhZGluZyk7CisjZW5kaWYKK30KKworI2RlZmluZSBORVhJVEZVTkNTIDMyCitzdGF0aWMgdm9pZCAoKmV4aXRmdW5jc1tORVhJVEZVTkNTXSkodm9pZCk7CitzdGF0aWMgaW50IG5leGl0ZnVuY3MgPSAwOworCitpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSkKK3sKKyAgICBpZiAobmV4aXRmdW5jcyA+PSBORVhJVEZVTkNTKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZXhpdGZ1bmNzW25leGl0ZnVuY3MrK10gPSBmdW5jOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9sbF9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICB3aGlsZSAobmV4aXRmdW5jcyA+IDApCisgICAgICAgICgqZXhpdGZ1bmNzWy0tbmV4aXRmdW5jc10pKCk7CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwordm9pZAorUHlfRXhpdChpbnQgc3RzKQoreworICAgIFB5X0ZpbmFsaXplKCk7CisKKyAgICBleGl0KHN0cyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0c2lncyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfSUdOKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0lHTik7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0lHTik7CisjZW5kaWYKKyAgICBQeU9TX0luaXRJbnRlcnJ1cHRzKCk7IC8qIE1heSBpbXBseSBpbml0c2lnbmFsKCkgKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgc2lnbmFsIik7CisgICAgfQorfQorCisKKy8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4KKyAqCisgKiBBbGwgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgdXNlIGFzeW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9ucywKKyAqIGxpc3RlZCBhdCBgbWFuIDcgc2lnbmFsYCBvcgorICogaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy94c2hfY2hhcDAyXzA0Lmh0bWwuCisgKi8KK3ZvaWQKK19QeV9SZXN0b3JlU2lnbmFscyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfREZMKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0RGTCk7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0RGTCk7CisjZW5kaWYKK30KKworCisvKgorICogVGhlIGZpbGUgZGVzY3JpcHRvciBmZCBpcyBjb25zaWRlcmVkIGBgaW50ZXJhY3RpdmUnJyBpZiBlaXRoZXIKKyAqICAgYSkgaXNhdHR5KGZkKSBpcyBUUlVFLCBvcgorICogICBiKSB0aGUgLWkgZmxhZyB3YXMgZ2l2ZW4sIGFuZCB0aGUgZmlsZW5hbWUgYXNzb2NpYXRlZCB3aXRoCisgKiAgICAgIHRoZSBkZXNjcmlwdG9yIGlzIE5VTEwgb3IgIjxzdGRpbj4iIG9yICI/Pz8iLgorICovCitpbnQKK1B5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisgICAgaWYgKGlzYXR0eSgoaW50KWZpbGVubyhmcCkpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIVB5X0ludGVyYWN0aXZlRmxhZykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIChmaWxlbmFtZSA9PSBOVUxMKSB8fAorICAgICAgICAgICAoc3RyY21wKGZpbGVuYW1lLCAiPHN0ZGluPiIpID09IDApIHx8CisgICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI/Pz8iKSA9PSAwKTsKK30KKworCisvKiBXcmFwcGVycyBhcm91bmQgc2lnYWN0aW9uKCkgb3Igc2lnbmFsKCkuICovCisKK1B5T1Nfc2lnaGFuZGxlcl90CitQeU9TX2dldHNpZyhpbnQgc2lnKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0OworICAgIGlmIChzaWdhY3Rpb24oc2lnLCBOVUxMLCAmY29udGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBTSUdfRVJSOworICAgIHJldHVybiBjb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXI7CisvKiBTcGVjaWFsIHNpZ25hbCBoYW5kbGluZyBmb3IgdGhlIHNlY3VyZSBDUlQgaW4gVmlzdWFsIFN0dWRpbyAyMDA1ICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAorICAgIHN3aXRjaCAoc2lnKSB7CisgICAgLyogT25seSB0aGVzZSBzaWduYWxzIGFyZSB2YWxpZCAqLworICAgIGNhc2UgU0lHSU5UOgorICAgIGNhc2UgU0lHSUxMOgorICAgIGNhc2UgU0lHRlBFOgorICAgIGNhc2UgU0lHU0VHVjoKKyAgICBjYXNlIFNJR1RFUk06CisgICAgY2FzZSBTSUdCUkVBSzoKKyAgICBjYXNlIFNJR0FCUlQ6CisgICAgICAgIGJyZWFrOworICAgIC8qIERvbid0IGNhbGwgc2lnbmFsKCkgd2l0aCBvdGhlciB2YWx1ZXMgb3IgaXQgd2lsbCBhc3NlcnQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU0lHX0VSUjsKKyAgICB9CisjZW5kaWYgLyogX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAqLworICAgIGhhbmRsZXIgPSBzaWduYWwoc2lnLCBTSUdfSUdOKTsKKyAgICBpZiAoaGFuZGxlciAhPSBTSUdfRVJSKQorICAgICAgICBzaWduYWwoc2lnLCBoYW5kbGVyKTsKKyAgICByZXR1cm4gaGFuZGxlcjsKKyNlbmRpZgorfQorCisvKgorICogQWxsIG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IHVzZSBhc3luYy1zaWduYWwtc2FmZSBmdW5jdGlvbnMsCisgKiBsaXN0ZWQgYXQgYG1hbiA3IHNpZ25hbGAgb3IKKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5odG1sLgorICovCitQeU9TX3NpZ2hhbmRsZXJfdAorUHlPU19zZXRzaWcoaW50IHNpZywgUHlPU19zaWdoYW5kbGVyX3QgaGFuZGxlcikKK3sKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIC8qIFNvbWUgY29kZSBpbiBNb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGRlcGVuZHMgb24gc2lnYWN0aW9uKCkgYmVpbmcKKyAgICAgKiB1c2VkIGhlcmUgaWYgSEFWRV9TSUdBQ1RJT04gaXMgZGVmaW5lZC4gIEZpeCB0aGF0IGlmIHRoaXMgY29kZQorICAgICAqIGNoYW5nZXMgdG8gaW52YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uCisgICAgICovCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0LCBvY29udGV4dDsKKyAgICBjb250ZXh0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZjb250ZXh0LnNhX21hc2spOworICAgIGNvbnRleHQuc2FfZmxhZ3MgPSAwOworICAgIGlmIChzaWdhY3Rpb24oc2lnLCAmY29udGV4dCwgJm9jb250ZXh0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFNJR19FUlI7CisgICAgcmV0dXJuIG9jb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IG9sZGhhbmRsZXI7CisgICAgb2xkaGFuZGxlciA9IHNpZ25hbChzaWcsIGhhbmRsZXIpOworI2lmZGVmIEhBVkVfU0lHSU5URVJSVVBUCisgICAgc2lnaW50ZXJydXB0KHNpZywgMSk7CisjZW5kaWYKKyAgICByZXR1cm4gb2xkaGFuZGxlcjsKKyNlbmRpZgorfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RhdGUuYyBiL1B5dGhvbi9weXN0YXRlLmMKaW5kZXggMmFjMmZkNS4uN2UwMjY3YSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RhdGUuYworKysgYi9QeXRob24vcHlzdGF0ZS5jCkBAIC0yMTIsNiArMjEyLDkgQEAKICAgICAgICAgdHN0YXRlLT5vbl9kZWxldGUgPSBOVUxMOwogICAgICAgICB0c3RhdGUtPm9uX2RlbGV0ZV9kYXRhID0gTlVMTDsKIAorICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CiAKQEAgLTI1Myw2ICsyNTYsOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAobW9kdWxlLT5tX3Nsb3RzKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoaW5kZXggPT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpCkBAIC0yNjYsNyArMjcyLDEzIEBACiBpbnQKIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CisgICAgaWYgKGRlZi0+bV9zbG90cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHlTdGF0ZV9BZGRNb2R1bGUgY2FsbGVkIG9uIG1vZHVsZSB3aXRoIHNsb3RzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgaWYgKCFkZWYpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIXN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CkBAIC0zMDYsOCArMzE4LDE0IEBACiBpbnQKIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQogeworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoZGVmLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQeVN0YXRlX1JlbW92ZU1vZHVsZSBjYWxsZWQgb24gbW9kdWxlIHdpdGggc2xvdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpZiAoaW5kZXggPT0gMCkgewogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3Miw2ICszOTAsOCBAQAogICAgIHRzdGF0ZS0+Y190cmFjZWZ1bmMgPSBOVUxMOwogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y19wcm9maWxlb2JqKTsKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOworCisgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CiB9CiAKIApAQCAtNDAzLDcgKzQyMyw3IEBACiB2b2lkCiBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7Ci0gICAgaWYgKHRzdGF0ZSA9PSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCisgICAgaWYgKHRzdGF0ZSA9PSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVRocmVhZFN0YXRlX0RlbGV0ZTogdHN0YXRlIGlzIHN0aWxsIGN1cnJlbnQiKTsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChhdXRvSW50ZXJwcmV0ZXJTdGF0ZSAmJiBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpID09IHRzdGF0ZSkKQEAgLTY2Miw3ICs2ODIsNyBAQAogewogICAgIC8qIE11c3QgYmUgdGhlIHRzdGF0ZSBmb3IgdGhpcyB0aHJlYWQgKi8KICAgICBhc3NlcnQoUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKT09dHN0YXRlKTsKLSAgICByZXR1cm4gdHN0YXRlID09IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICByZXR1cm4gdHN0YXRlID09IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJoZXguYyBiL1B5dGhvbi9weXN0cmhleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTllZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vcHlzdHJoZXguYwpAQCAtMCwwICsxLDYxIEBACisvKiBieXRlcyB0byBoZXggaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCitzdGF0aWMgUHlPYmplY3QgKl9QeV9zdHJoZXhfaW1wbChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldHVybl9ieXRlcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworICAgIFB5X1VDUzEqIHJldGJ1ZjsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisKKyAgICBhc3NlcnQoYXJnbGVuID49IDApOworICAgIGlmIChhcmdsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICAvKiBJZiBfUHlCeXRlc19Gcm9tU2l6ZSgpIHdlcmUgcHVibGljIHdlIGNvdWxkIGF2b2lkIG1hbGxvYytjb3B5LiAqLworICAgICAgICByZXRidWYgPSAoUHlfVUNTMSopIFB5TWVtX01hbGxvYyhhcmdsZW4qMik7CisJaWYgKCFyZXRidWYpCisJICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR2YWwgPSBOVUxMOyAgLyogc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcsIGFzc2lnbmVkIGxhdGVyLiAqLworICAgIH0gZWxzZSB7CisJcmV0dmFsID0gUHlVbmljb2RlX05ldyhhcmdsZW4qMiwgMTI3KTsKKwlpZiAoIXJldHZhbCkKKwkgICAgcmV0dXJuIE5VTEw7CisJcmV0YnVmID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKKyAgICB9CisKKyAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLworICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKKyAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CisgICAgfQorCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopcmV0YnVmLCBhcmdsZW4qMik7CisgICAgICAgIFB5TWVtX0ZyZWUocmV0YnVmKTsKKyAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDApOworfQorCisvKiBTYW1lIGFzIGFib3ZlIGJ1dCByZXR1cm5zIGEgYnl0ZXMoKSBpbnN0ZWFkIG9mIHN0cigpIHRvIGF2b2lkIHRoZQorICogbmVlZCB0byBkZWNvZGUgdGhlIHN0cigpIHdoZW4gYnl0ZXMgYXJlIG5lZWRlZC4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDEpOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDliMjQwNWYuLmViZWRkMTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhc3QuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBIQVZFX1NJR05BTF9ICiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC0yNSwxOCArMjYsMTIgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSNlbmRpZgotCi0jaWZkZWYgX19nbnVfaHVyZF9fCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KICNlbmRpZgogCiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CkBAIC00NSw3ICs0MCw2IEBACiBfUHlfSURFTlRJRklFUihsYXN0X3RyYWNlYmFjayk7CiBfUHlfSURFTlRJRklFUihsYXN0X3R5cGUpOwogX1B5X0lERU5USUZJRVIobGFzdF92YWx1ZSk7Ci1fUHlfSURFTlRJRklFUihuYW1lKTsKIF9QeV9JREVOVElGSUVSKHBzMSk7CiBfUHlfSURFTlRJRklFUihwczIpOwogX1B5X0lERU5USUZJRVIoc3RkaW4pOwpAQCAtNTMsNDMgKzQ3LDEzIEBACiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9zdHJpbmcsICI8c3RyaW5nPiIpOwogCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1zdGF0aWMKLXZvaWQgX3ByaW50X3RvdGFsX3JlZnModm9pZCkgewotICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOwotICAgIF9QeV9JREVOVElGSUVSKHNob3dyZWZjb3VudCk7Ci0KLSAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7Ci0gICAgaWYgKHhvcHRpb25zID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93cmVmY291bnQpOwotICAgIGlmICh2YWx1ZSA9PSBQeV9UcnVlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAiWyUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgcmVmcywgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIGJsb2Nrc11cbiIsCi0gICAgICAgICAgICAgICAgX1B5X0dldFJlZlRvdGFsKCksIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3MoKSk7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBQeV9SRUZfREVCVUcKLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpCi0jZWxzZSAvKiBQeV9SRUZfREVCVUcgKi8KLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpIF9wcmludF90b3RhbF9yZWZzKCkKLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLWV4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOwotCiBleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCiAKIC8qIEZvcndhcmQgKi8KLXN0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKLXN0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwotc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7Ci1zdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKIHN0YXRpYyB2b2lkIGZsdXNoX2lvKHZvaWQpOwogc3RhdGljIFB5T2JqZWN0ICpydW5fbW9kKG1vZF90eSwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICosIFB5QXJlbmEgKik7CkBAIC05NywxMTgyICs2MSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKik7CiBzdGF0aWMgdm9pZCBlcnJfaW5wdXQocGVycmRldGFpbCAqKTsKIHN0YXRpYyB2b2lkIGVycl9mcmVlKHBlcnJkZXRhaWwgKik7Ci1zdGF0aWMgdm9pZCBpbml0c2lncyh2b2lkKTsKLXN0YXRpYyB2b2lkIGNhbGxfcHlfZXhpdGZ1bmNzKHZvaWQpOwotc3RhdGljIHZvaWQgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpOwotc3RhdGljIHZvaWQgY2FsbF9sbF9leGl0ZnVuY3Modm9pZCk7Ci1leHRlcm4gaW50IF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKLWV4dGVybiBpbnQgX1B5U3RydWN0U2VxdWVuY2VfSW5pdCh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeVVuaWNvZGVfRmluaSh2b2lkKTsKLWV4dGVybiBpbnQgX1B5TG9uZ19Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHlMb25nX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeUZhdWx0aGFuZGxlcl9Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCk7Ci1leHRlcm4gdm9pZCBfUHlIYXNoX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0Zpbmkodm9pZCk7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfSW5pdChQeUludGVycHJldGVyU3RhdGUgKiwgUHlUaHJlYWRTdGF0ZSAqKTsKLWV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0Zpbmkodm9pZCk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotaW50IFB5X0RlYnVnRmxhZzsgLyogTmVlZGVkIGJ5IHBhcnNlci5jICovCi1pbnQgUHlfVmVyYm9zZUZsYWc7IC8qIE5lZWRlZCBieSBpbXBvcnQuYyAqLwotaW50IFB5X1F1aWV0RmxhZzsgLyogTmVlZGVkIGJ5IHN5c21vZHVsZS5jICovCi1pbnQgUHlfSW50ZXJhY3RpdmVGbGFnOyAvKiBOZWVkZWQgYnkgUHlfRmRJc0ludGVyYWN0aXZlKCkgYmVsb3cgKi8KLWludCBQeV9JbnNwZWN0RmxhZzsgLyogTmVlZGVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGV4aXQgYXQgU3lzdGVtRXhpdCAqLwotaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KLWludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCi1pbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KLWludCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnID0gMTsgLyogTmVlZGVkIGJ5IGJsdGlubW9kdWxlLmM6IGRlcHJlY2F0ZWQgKi8KLWludCBQeV9Gcm96ZW5GbGFnOyAvKiBOZWVkZWQgYnkgZ2V0cGF0aC5jICovCi1pbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOyAvKiBlLmcuIFBZVEhPTlBBVEgsIFBZVEhPTkhPTUUgKi8KLWludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCi1pbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwotaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KLWludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCi0KLVB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLwotaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCi0gICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLwotCi0vKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgotc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCi1QeU9iamVjdCAqCi1QeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQotewotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwotCi0vKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCi0KLWludAotUHlfSXNJbml0aWFsaXplZCh2b2lkKQotewotICAgIHJldHVybiBpbml0aWFsaXplZDsKLX0KLQotLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCi0gKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCi0gKi8KLQotc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKLXN0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOwotCi1pbnQKLVB5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLXsKLSAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCi0gICAgICogaW5pdGlhbGlzZWQgeWV0LgotICAgICAqCi0gICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQotICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAotICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KLSAgICAgKi8KLSAgICBpZiAoZW5jb2RpbmcpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKLSAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgewotICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChlcnJvcnMpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOwotICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgewotICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gLTM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgotICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwotICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQotICAgYmVlbiBjcmVhdGVkLgotCi0gICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KLSAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bwotICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCi0KLSovCi0KLXN0YXRpYyBpbnQKLWFkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQotewotICAgIGludCBlbnYgPSBhdG9pKGVudnMpOwotICAgIGlmIChmbGFnIDwgZW52KQotICAgICAgICBmbGFnID0gZW52OwotICAgIGlmIChmbGFnIDwgMSkKLSAgICAgICAgZmxhZyA9IDE7Ci0gICAgcmV0dXJuIGZsYWc7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCi17Ci0gICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7Ci0gICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7Ci0KLSAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7Ci0gICAgaWYgKCFjb2RlYykKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKLSAgICBQeV9DTEVBUihjb2RlYyk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gbmFtZV9zdHI7Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoY29kZWMpOwotICAgIFB5X1hERUNSRUYobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBjaGFyIGNvZGVwYWdlWzEwMF07Ci0gICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7Ci0gICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKLSNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCi0gICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLSNlbHNlCi0gICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZAotaW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCi17Ci0gICAgUHlPYmplY3QgKmltcG9ydGxpYjsKLSAgICBQeU9iamVjdCAqaW1wbW9kOwotICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0KLSAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCi0gICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7Ci0gICAgfQotICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKLSAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOwotICAgIH0KLSAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwotCi0gICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KLSAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7Ci0gICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7Ci0gICAgfQotICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKLSAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOwotICAgIH0KLQotICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICBQeV9ERUNSRUYoaW1wbW9kKTsKLQotICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Ci19Ci0KLQotdm9pZAotX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0gICAgUHlPYmplY3QgKmJpbW9kLCAqc3lzbW9kLCAqcHN0ZGVycjsKLSAgICBjaGFyICpwOwotICAgIGV4dGVybiB2b2lkIF9QeV9SZWFkeVR5cGVzKHZvaWQpOwotCi0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOwotICAgIF9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfU0VUTE9DQUxFKQotICAgIC8qIFNldCB1cCB0aGUgTENfQ1RZUEUgbG9jYWxlLCBzbyB3ZSBjYW4gb2J0YWluCi0gICAgICAgdGhlIGxvY2FsZSdzIGNoYXJzZXQgd2l0aG91dCBoYXZpbmcgdG8gc3dpdGNoCi0gICAgICAgbG9jYWxlcy4gKi8KLSAgICBzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKLSNlbmRpZgotCi0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ERUJVRyIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9EZWJ1Z0ZsYWcgPSBhZGRfZmxhZyhQeV9EZWJ1Z0ZsYWcsIHApOwotICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OVkVSQk9TRSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9WZXJib3NlRmxhZyA9IGFkZF9mbGFnKFB5X1ZlcmJvc2VGbGFnLCBwKTsKLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTk9QVElNSVpFIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X09wdGltaXplRmxhZyA9IGFkZF9mbGFnKFB5X09wdGltaXplRmxhZywgcCk7Ci0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcgPSBhZGRfZmxhZyhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcsIHApOwotICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKLSAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7Ci0KLSAgICBfUHlSYW5kb21fSW5pdCgpOwotCi0gICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOwotICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCBpbnRlcnByZXRlciIpOwotCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKLSAgICBpZiAodHN0YXRlID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgZmlyc3QgdGhyZWFkIik7Ci0gICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCi0gICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KLSAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgotICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCi0gICAgX1B5RXZhbF9GaW5pVGhyZWFkcygpOwotCi0gICAgLyogQXV0by10aHJlYWQtc3RhdGUgQVBJICovCi0gICAgX1B5R0lMU3RhdGVfSW5pdChpbnRlcnAsIHRzdGF0ZSk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotICAgIF9QeV9SZWFkeVR5cGVzKCk7Ci0KLSAgICBpZiAoIV9QeUZyYW1lX0luaXQoKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmcmFtZXMiKTsKLQotICAgIGlmICghX1B5TG9uZ19Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgbG9uZ3MiKTsKLQotICAgIGlmICghUHlCeXRlQXJyYXlfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGJ5dGVhcnJheSIpOwotCi0gICAgaWYgKCFfUHlGbG9hdF9Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgZmxvYXQiKTsKLQotICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7Ci0KLSAgICAvKiBJbml0IFVuaWNvZGUgaW1wbGVtZW50YXRpb247IHJlbGllcyBvbiB0aGUgY29kZWMgcmVnaXN0cnkgKi8KLSAgICBpZiAoX1B5VW5pY29kZV9Jbml0KCkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHVuaWNvZGUiKTsKLSAgICBpZiAoX1B5U3RydWN0U2VxdWVuY2VfSW5pdCgpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzdHJ1Y3RzZXEiKTsKLQotICAgIGJpbW9kID0gX1B5QnVpbHRpbl9Jbml0KCk7Ci0gICAgaWYgKGJpbW9kID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgbW9kdWxlcyIpOwotICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oYmltb2QsICJidWlsdGlucyIpOwotICAgIGludGVycC0+YnVpbHRpbnMgPSBQeU1vZHVsZV9HZXREaWN0KGJpbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGJ1aWx0aW5zIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7Ci0gICAgaWYgKHN5c21vZCA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyIpOwotICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKLSAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKHN5c21vZCwgInN5cyIpOwotICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPm1vZHVsZXMpOwotCi0gICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKLSAgICAgICBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGlvIG1vZHVsZSBpbiBwbGFjZS4gKi8KLSAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgIGlmIChwc3RkZXJyID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNldCBwcmVsaW1pbmFyeSBzdGRlcnIiKTsKLSAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKLSAgICBQeV9ERUNSRUYocHN0ZGVycik7Ci0KLSAgICBfUHlJbXBvcnRfSW5pdCgpOwotCi0gICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOwotCi0gICAgLyogSW5pdGlhbGl6ZSBfd2FybmluZ3MuICovCi0gICAgX1B5V2FybmluZ3NfSW5pdCgpOwotCi0gICAgaWYgKCFpbnN0YWxsX2ltcG9ydGxpYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgLyogaW5pdGlhbGl6ZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIGlmIChfUHlGYXVsdGhhbmRsZXJfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGZhdWx0aGFuZGxlciIpOwotCi0gICAgX1B5VGltZV9Jbml0KCk7Ci0KLSAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IHVuYWJsZSB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBjb2RlYyIpOwotCi0gICAgaWYgKGluc3RhbGxfc2lncykKLSAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwotCi0gICAgaWYgKF9QeVRyYWNlTWFsbG9jX0luaXQoKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdHJhY2VtYWxsb2MiKTsKLQotICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLwotICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwotCi0gICAgLyogSW5pdGlhbGl6ZSB3YXJuaW5ncy4gKi8KLSAgICBpZiAoUHlTeXNfSGFzV2Fybk9wdGlvbnMoKSkgewotICAgICAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ3YXJuaW5ncyIpOwotICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJ2ltcG9ydCB3YXJuaW5ncycgZmFpbGVkOyB0cmFjZWJhY2s6XG4iKTsKLSAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfWERFQ1JFRih3YXJuaW5nc19tb2R1bGUpOwotICAgIH0KLQotICAgIGlmICghUHlfTm9TaXRlRmxhZykKLSAgICAgICAgaW5pdHNpdGUoKTsgLyogTW9kdWxlIHNpdGUgKi8KLX0KLQotdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCi17Ci0gICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGluc3RhbGxfc2lncywgMSk7Ci19Ci0KLXZvaWQKLVB5X0luaXRpYWxpemUodm9pZCkKLXsKLSAgICBQeV9Jbml0aWFsaXplRXgoMSk7Ci19Ci0KLQotI2lmZGVmIENPVU5UX0FMTE9DUwotZXh0ZXJuIHZvaWQgZHVtcF9jb3VudHMoRklMRSopOwotI2VuZGlmCi0KLS8qIEZsdXNoIHN0ZG91dCBhbmQgc3RkZXJyICovCi0KLXN0YXRpYyBpbnQKLWZpbGVfaXNfY2xvc2VkKFB5T2JqZWN0ICpmb2JqKQotewotICAgIGludCByOwotICAgIFB5T2JqZWN0ICp0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvYmosICJjbG9zZWQiKTsKLSAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHIgPSBQeU9iamVjdF9Jc1RydWUodG1wKTsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICBpZiAociA8IDApCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgcmV0dXJuIHIgPiAwOwotfQotCi1zdGF0aWMgdm9pZAotZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKLSAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLQotICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLX0KLQotLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KLQotICAgQmV3YXJlOiBpZiBtdWx0aXBsZSBpbnRlcnByZXRlciBhbmQvb3IgdGhyZWFkIHN0YXRlcyBleGlzdCwgdGhlc2UKLSAgIGFyZSBub3Qgd2lwZWQgb3V0OyBvbmx5IHRoZSBjdXJyZW50IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUKLSAgIGFyZSBkZWxldGVkLiAgQnV0IHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxldGVkLCB0aG9zZSBvdGhlcgotICAgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCBzdGF0ZXMgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgotCi0gICAoWFhYIFdlIHNob3VsZCBkbyBiZXR0ZXIsIGUuZy4gd2lwZSBvdXQgYWxsIGludGVycHJldGVycyBhbmQKLSAgIHRocmVhZHMuKQotCi0gICBMb2NraW5nOiBhcyBhYm92ZS4KLQotKi8KLQotdm9pZAotUHlfRmluYWxpemUodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKLQotICAgIC8qIFRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBlbnRpcmVseSBpbnRhY3QgYXQgdGhpcyBwb2ludCwgYW5kIHRoZQotICAgICAqIGV4aXQgZnVuY3MgbWF5IGJlIHJlbHlpbmcgb24gdGhhdC4gIEluIHBhcnRpY3VsYXIsIGlmIHNvbWUgdGhyZWFkCi0gICAgICogb3IgZXhpdCBmdW5jIGlzIHN0aWxsIHdhaXRpbmcgdG8gZG8gYW4gaW1wb3J0LCB0aGUgaW1wb3J0IG1hY2hpbmVyeQotICAgICAqIGV4cGVjdHMgUHlfSXNJbml0aWFsaXplZCgpIHRvIHJldHVybiB0cnVlLiAgU28gZG9uJ3Qgc2F5IHRoZQotICAgICAqIGludGVycHJldGVyIGlzIHVuaW5pdGlhbGl6ZWQgdW50aWwgYWZ0ZXIgdGhlIGV4aXQgZnVuY3MgaGF2ZSBydW4uCi0gICAgICogTm90ZSB0aGF0IFRocmVhZGluZy5weSB1c2VzIGFuIGV4aXQgZnVuYyB0byBkbyBhIGpvaW4gb24gYWxsIHRoZQotICAgICAqIHRocmVhZHMgY3JlYXRlZCB0aHJ1IGl0LCBzbyB0aGlzIGFsc28gcHJvdGVjdHMgcGVuZGluZyBpbXBvcnRzIGluCi0gICAgICogdGhlIHRocmVhZHMgY3JlYXRlZCB2aWEgVGhyZWFkaW5nLgotICAgICAqLwotICAgIGNhbGxfcHlfZXhpdGZ1bmNzKCk7Ci0KLSAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgLyogUmVtYWluaW5nIHRocmVhZHMgKGUuZy4gZGFlbW9uIHRocmVhZHMpIHdpbGwgYXV0b21hdGljYWxseSBleGl0Ci0gICAgICAgYWZ0ZXIgdGFraW5nIHRoZSBHSUwgKGluIFB5RXZhbF9SZXN0b3JlVGhyZWFkKCkpLiAqLwotICAgIF9QeV9GaW5hbGl6aW5nID0gdHN0YXRlOwotICAgIGluaXRpYWxpemVkID0gMDsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCi0gICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwotCi0gICAgLyogQ29sbGVjdCBnYXJiYWdlLiAgVGhpcyBtYXkgY2FsbCBmaW5hbGl6ZXJzOyBpdCdzIG5pY2UgdG8gY2FsbCB0aGVzZQotICAgICAqIGJlZm9yZSBhbGwgbW9kdWxlcyBhcmUgZGVzdHJveWVkLgotICAgICAqIFhYWCBJZiBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgaGVyZSwgYW5kIHRyaWVzIHRvCi0gICAgICogWFhYIGltcG9ydCBhIG1vZHVsZSwgYmFkIHRoaW5ncyBjYW4gaGFwcGVuLCBiZWNhdXNlIFB5dGhvbiBubwotICAgICAqIFhYWCBsb25nZXIgYmVsaWV2ZXMgaXQncyBpbml0aWFsaXplZC4KLSAgICAgKiBYWFggICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogSW50ZXJwcmV0ZXIgbm90IGluaXRpYWxpemVkICh2ZXJzaW9uIG1pc21hdGNoPykKLSAgICAgKiBYWFggaXMgZWFzeSB0byBwcm92b2tlIHRoYXQgd2F5LiAgSSd2ZSBhbHNvIHNlZW4sIGUuZy4sCi0gICAgICogWFhYICAgICBFeGNlcHRpb24gZXhjZXB0aW9ucy5JbXBvcnRFcnJvcjogJ05vIG1vZHVsZSBuYW1lZCBzaGEnCi0gICAgICogWFhYICAgICAgICAgaW4gPGZ1bmN0aW9uIGNhbGxiYWNrIGF0IDB4MDA4RjU3MTg+IGlnbm9yZWQKLSAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKLSAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KLSAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgotICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQotICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKLSAgICAgICAgLyogbm90aGluZyAqLzsKLSNlbmRpZgotICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0KLSAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOwotCi0gICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQotICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KLSAgICAgKiBYWFggVGhpcyBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGNhdXNlZCB0b28gbWFueSBwcm9ibGVtcy4gIElmCi0gICAgICogWFhYIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIHRyaWdnZXJzIGhlcmUsIFB5dGhvbiBjb2RlIGhhcwotICAgICAqIFhYWCBhIGhhcmQgdGltZSBydW5uaW5nLCBiZWNhdXNlIGV2ZW4gdGhlIHN5cyBtb2R1bGUgaGFzIGJlZW4KLSAgICAgKiBYWFggY2xlYXJlZCBvdXQgKHN5cy5zdGRvdXQgaXMgZ29uZSwgc3lzLmV4Y2VwdGhvb2sgaXMgZ29uZSwgZXRjKS4KLSAgICAgKiBYWFggT25lIHN5bXB0b20gaXMgYSBzZXF1ZW5jZSBvZiBpbmZvcm1hdGlvbi1mcmVlIG1lc3NhZ2VzCi0gICAgICogWFhYIGNvbWluZyBmcm9tIHRocmVhZHMgKGlmIGEgX19kZWxfXyBvciBjYWxsYmFjayBpcyBpbnZva2VkLAotICAgICAqIFhYWCBvdGhlciB0aHJlYWRzIGNhbiBleGVjdXRlIHRvbywgYW5kIGFueSBleGNlcHRpb24gdGhleSBlbmNvdW50ZXIKLSAgICAgKiBYWFggdHJpZ2dlcnMgYSBjb21lZHkgb2YgZXJyb3JzIGFzIHN1YnN5c3RlbSBhZnRlciBzdWJzeXN0ZW0KLSAgICAgKiBYWFggZmFpbHMgdG8gZmluZCB3aGF0IGl0ICpleHBlY3RzKiB0byBmaW5kIGluIHN5cyB0byBoZWxwIHJlcG9ydAotICAgICAqIFhYWCB0aGUgZXhjZXB0aW9uIGFuZCBjb25zZXF1ZW50IHVuZXhwZWN0ZWQgZmFpbHVyZXMpLiAgSSd2ZSBhbHNvCi0gICAgICogWFhYIHNlZW4gc2VnZmF1bHRzIHRoZW4sIGFmdGVyIGFkZGluZyBwcmludCBzdGF0ZW1lbnRzIHRvIHRoZQotICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KLSAgICAgKi8KLSNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7Ci0jZW5kaWYKLQotICAgIC8qIERpc2FibGUgdHJhY2VtYWxsb2MgYWZ0ZXIgYWxsIFB5dGhvbiBvYmplY3RzIGhhdmUgYmVlbiBkZXN0cm95ZWQsCi0gICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gdXNlIHRyYWNlbWFsbG9jIGluIG9iamVjdHMgZGVzdHJ1Y3Rvci4gKi8KLSAgICBfUHlUcmFjZU1hbGxvY19GaW5pKCk7Ci0KLSAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KLSAgICBfUHlJbXBvcnRfRmluaSgpOwotCi0gICAgLyogQ2xlYW51cCB0eXBlb2JqZWN0LmMncyBpbnRlcm5hbCBjYWNoZXMuICovCi0gICAgX1B5VHlwZV9GaW5pKCk7Ci0KLSAgICAvKiB1bmxvYWQgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7Ci0KLSAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOwotI2VuZGlmCi0gICAgLyogZHVtcCBoYXNoIHN0YXRzICovCi0gICAgX1B5SGFzaF9GaW5pKCk7Ci0KLSAgICBQUklOVF9UT1RBTF9SRUZTKCk7Ci0KLSNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gICAgLyogRGlzcGxheSBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZSAtLSB0aGlzIGNhbiBpbnZva2UgYXJiaXRyYXJ5Ci0gICAgICogX19yZXByX18gb3ZlcnJpZGVzLCBzbyByZXF1aXJlcyBhIG1vc3RseS1pbnRhY3QgaW50ZXJwcmV0ZXIuCi0gICAgICogQWxhcywgYSBsb3Qgb2Ygc3R1ZmYgbWF5IHN0aWxsIGJlIGFsaXZlIG5vdyB0aGF0IHdpbGwgYmUgY2xlYW5lZAotICAgICAqIHVwIGxhdGVyLgotICAgICAqLwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCi0gICAgICAgIF9QeV9QcmludFJlZmVyZW5jZXMoc3RkZXJyKTsKLSNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0KLSAgICAvKiBDbGVhciBpbnRlcnByZXRlciBzdGF0ZSBhbmQgYWxsIHRocmVhZCBzdGF0ZXMuICovCi0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0KLSAgICAvKiBOb3cgd2UgZGVjcmVmIHRoZSBleGNlcHRpb24gY2xhc3Nlcy4gIEFmdGVyIHRoaXMgcG9pbnQgbm90aGluZwotICAgICAgIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBUaGF0J3Mgb2theSwgYmVjYXVzZSBlYWNoIEZpbmkoKSBtZXRob2QKLSAgICAgICBiZWxvdyBoYXMgYmVlbiBjaGVja2VkIHRvIG1ha2Ugc3VyZSBubyBleGNlcHRpb25zIGFyZSBldmVyCi0gICAgICAgcmFpc2VkLgotICAgICovCi0KLSAgICBfUHlFeGNfRmluaSgpOwotCi0gICAgLyogU3VuZHJ5IGZpbmFsaXplcnMgKi8KLSAgICBQeU1ldGhvZF9GaW5pKCk7Ci0gICAgUHlGcmFtZV9GaW5pKCk7Ci0gICAgUHlDRnVuY3Rpb25fRmluaSgpOwotICAgIFB5VHVwbGVfRmluaSgpOwotICAgIFB5TGlzdF9GaW5pKCk7Ci0gICAgUHlTZXRfRmluaSgpOwotICAgIFB5Qnl0ZXNfRmluaSgpOwotICAgIFB5Qnl0ZUFycmF5X0ZpbmkoKTsKLSAgICBQeUxvbmdfRmluaSgpOwotICAgIFB5RmxvYXRfRmluaSgpOwotICAgIFB5RGljdF9GaW5pKCk7Ci0gICAgUHlTbGljZV9GaW5pKCk7Ci0gICAgX1B5R0NfRmluaSgpOwotICAgIF9QeVJhbmRvbV9GaW5pKCk7Ci0KLSAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KLSAgICBfUHlVbmljb2RlX0ZpbmkoKTsKLQotICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KLSAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKLSAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7Ci0gICAgfQotCi0gICAgLyogWFhYIFN0aWxsIGFsbG9jYXRlZDoKLSAgICAgICAtIHZhcmlvdXMgc3RhdGljIGFkLWhvYyBwb2ludGVycyB0byBpbnRlcm5lZCBzdHJpbmdzCi0gICAgICAgLSBpbnQgYW5kIGZsb2F0IGZyZWUgbGlzdCBibG9ja3MKLSAgICAgICAtIHdoYXRldmVyIHZhcmlvdXMgbW9kdWxlcyBhbmQgbGlicmFyaWVzIGFsbG9jYXRlCi0gICAgKi8KLQotICAgIFB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMoJl9QeVBhcnNlcl9HcmFtbWFyKTsKLQotICAgIC8qIENsZWFudXAgYXV0by10aHJlYWQtc3RhdGUgKi8KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUdJTFN0YXRlX0ZpbmkoKTsKLSNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwotCi0gICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCi0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotI2lmZGVmIFB5X1RSQUNFX1JFRlMKLSAgICAvKiBEaXNwbGF5IGFkZHJlc3NlcyAoJiByZWZjbnRzKSBvZiBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZS4KLSAgICAgKiBBbiBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIHJlcHIgb2YgdGhlIG9iamVjdCwgcHJpbnRlZAotICAgICAqIGFib3ZlIGJ5IF9QeV9QcmludFJlZmVyZW5jZXMuCi0gICAgICovCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKLSAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7Ci0jZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSNlbmRpZgotCi0gICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKLX0KLQotLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCi0gICBuZXcgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IFB5X0luaXRpYWxpemUoKSBoYXMgYmVlbiBjYWxsZWQKLSAgIGZpcnN0LgotCi0gICBVbnN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24geWllbGRzIGEgTlVMTCBwb2ludGVyLiAgTm90ZSB0aGF0ICpubyoKLSAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZXZlbiBpbiB0aGlzIGNhc2UgLS0gdGhlCi0gICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgaGVsZCBpbiB0aGUgdGhyZWFkLCBhbmQgdGhlcmUgaXMgbm8KLSAgIHRocmVhZC4KLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLVB5VGhyZWFkU3RhdGUgKgotUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUsICpzYXZlX3RzdGF0ZTsKLSAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2Q7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7Ci0KLSAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7Ci0gICAgaWYgKGludGVycCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7Ci0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc2F2ZV90c3RhdGUgPSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKLQotICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwotCi0gICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotCi0gICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKLSAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKLSAgICB9Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7Ci0KLSAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKLSAgICAgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7Ci0gICAgICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7Ci0gICAgICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCi0gICAgICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLwotICAgICAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgICAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOwotICAgICAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICAgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7Ci0gICAgICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKLQotICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7Ci0KLSAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKLSAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwotCi0gICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKLSAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQotICAgICAgICAgICAgaW5pdHNpdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiB0c3RhdGU7Ci0KLWhhbmRsZV9lcnJvcjoKLSAgICAvKiBPb3BzLCBpdCBkaWRuJ3Qgd29yay4gIFVuZG8gaXQgYWxsLiAqLwotCi0gICAgUHlFcnJfUHJpbnRFeCgwKTsKLSAgICBQeVRocmVhZFN0YXRlX0NsZWFyKHRzdGF0ZSk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKHNhdmVfdHN0YXRlKTsKLSAgICBQeVRocmVhZFN0YXRlX0RlbGV0ZSh0c3RhdGUpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBEZWxldGUgYW4gaW50ZXJwcmV0ZXIgYW5kIGl0cyBsYXN0IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKLSAgIGdpdmVuIHRocmVhZCBzdGF0ZSBpcyBjdXJyZW50LCB0aGF0IHRoZSB0aHJlYWQgaGFzIG5vIHJlbWFpbmluZwotICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCi0gICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCi0KLSAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCi0gICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLXZvaWQKLVB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgaWYgKHRzdGF0ZSAhPSBQeVRocmVhZFN0YXRlX0dFVCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIGlzIG5vdCBjdXJyZW50Iik7Ci0gICAgaWYgKHRzdGF0ZS0+ZnJhbWUgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBzdGlsbCBoYXMgYSBmcmFtZSIpOwotCi0gICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7Ci0KLSAgICBpZiAodHN0YXRlICE9IGludGVycC0+dHN0YXRlX2hlYWQgfHwgdHN0YXRlLT5uZXh0ICE9IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiBub3QgdGhlIGxhc3QgdGhyZWFkIik7Ci0KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLX0KLQotI2lmZGVmIE1TX1dJTkRPV1MKLXN0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uIjsKLSNlbHNlCi1zdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbjMiOwotI2VuZGlmCi0KLXZvaWQKLVB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKnBuKQotewotICAgIGlmIChwbiAmJiAqcG4pCi0gICAgICAgIHByb2duYW1lID0gcG47Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCkKLXsKLSAgICByZXR1cm4gcHJvZ25hbWU7Ci19Ci0KLXN0YXRpYyB3Y2hhcl90ICpkZWZhdWx0X2hvbWUgPSBOVUxMOwotc3RhdGljIHdjaGFyX3QgZW52X2hvbWVbTUFYUEFUSExFTisxXTsKLQotdm9pZAotUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICpob21lKQotewotICAgIGRlZmF1bHRfaG9tZSA9IGhvbWU7Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHl0aG9uSG9tZSh2b2lkKQotewotICAgIHdjaGFyX3QgKmhvbWUgPSBkZWZhdWx0X2hvbWU7Ci0gICAgaWYgKGhvbWUgPT0gTlVMTCAmJiAhUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7Ci0gICAgICAgIGNoYXIqIGNob21lID0gUHlfR0VURU5WKCJQWVRIT05IT01FIik7Ci0gICAgICAgIGlmIChjaG9tZSkgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoZW52X2hvbWUpOwotICAgICAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyhlbnZfaG9tZSwgY2hvbWUsIHNpemUpOwotICAgICAgICAgICAgaWYgKHIgIT0gKHNpemVfdCktMSAmJiByIDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBob21lID0gZW52X2hvbWU7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICByZXR1cm4gaG9tZTsKLX0KLQotLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLwotCi1zdGF0aWMgdm9pZAotaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCi17Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOwotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoYmltb2QpOwotICAgIH0KLSAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgotICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKLSAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCi0gICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAotICAgICAqIHByb2Nlc3MuCi0gICAgICovCi0gICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKTsKLSAgICBpZiAobG9hZGVyID09IE5VTEwgfHwgbG9hZGVyID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKLSAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLWluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQotewotICAgIFB5T2JqZWN0ICpjb2RlYzsKLQotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCi0gICAgewotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwotICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7Ci0KLSAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7Ci0gICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwotICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwotICAgIGlmICghY29kZWMpIHsKLSAgICAgICAgLyogU3VjaCBlcnJvciBjYW4gb25seSBvY2N1cnMgaW4gY3JpdGljYWwgc2l0dWF0aW9uczogbm8gbW9yZQotICAgICAgICAgKiBtZW1vcnksIGltcG9ydCBhIG1vZHVsZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBmYWlsZWQsCi0gICAgICAgICAqIGV0Yy4gKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29kZWMpOwotICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEltcG9ydCB0aGUgc2l0ZSBtb2R1bGUgKG5vdCBpbnRvIF9fbWFpbl9fIHRob3VnaCkgKi8KLQotc3RhdGljIHZvaWQKLWluaXRzaXRlKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOwotICAgIGlmIChtID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgfQotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1jcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKLXsKLSAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7Ci0gICAgY29uc3QgY2hhciogbW9kZTsKLSAgICBjb25zdCBjaGFyKiBuZXdsaW5lOwotICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKLSAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7Ci0gICAgX1B5X0lERU5USUZJRVIob3Blbik7Ci0gICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKLSAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKLSAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKLQotICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKLSAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCi0gICAgICAgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSByZWFkMSgpIG1ldGhvZCB3aGljaCBvbmx5IGV4aXN0cyBvbgotICAgICAgIGJ1ZmZlcmVkIHN0cmVhbXMuCi0gICAgKi8KLSAgICBpZiAoUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyAmJiB3cml0ZV9tb2RlKQotICAgICAgICBidWZmZXJpbmcgPSAwOwotICAgIGVsc2UKLSAgICAgICAgYnVmZmVyaW5nID0gLTE7Ci0gICAgaWYgKHdyaXRlX21vZGUpCi0gICAgICAgIG1vZGUgPSAid2IiOwotICAgIGVsc2UKLSAgICAgICAgbW9kZSA9ICJyYiI7Ci0gICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOwotICAgIGlmIChidWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChidWZmZXJpbmcpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKLSAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7Ci0gICAgICAgIGlmIChyYXcgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByYXcgPSBidWY7Ci0gICAgICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIH0KLQotICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKLSAgICBQeV9ERUNSRUYocmVzKTsKLSAgICBpZiAoaXNhdHR5ID09IC0xKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChpc2F0dHkgfHwgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZykKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9UcnVlOwotICAgIGVsc2UKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9GYWxzZTsKLQotICAgIFB5X0NMRUFSKHJhdyk7Ci0gICAgUHlfQ0xFQVIodGV4dCk7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogc3lzLnN0ZGluOiBlbmFibGUgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSwgdHJhbnNsYXRlICJcclxuIiBhbmQgIlxyIgotICAgICAgIG5ld2xpbmVzIHRvICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogdHJhbnNsYXRlICJcbiIgdG8gIlxyXG4iLiAqLwotICAgIG5ld2xpbmUgPSBOVUxMOwotI2Vsc2UKLSAgICAvKiBzeXMuc3RkaW46IHNwbGl0IGxpbmVzIGF0ICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzICh1c2UgIlxuIikuICovCi0gICAgbmV3bGluZSA9ICJcbiI7Ci0jZW5kaWYKLQotICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7Ci0gICAgUHlfQ0xFQVIoYnVmKTsKLSAgICBpZiAoc3RyZWFtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBpZiAod3JpdGVfbW9kZSkKLSAgICAgICAgbW9kZSA9ICJ3IjsKLSAgICBlbHNlCi0gICAgICAgIG1vZGUgPSAiciI7Ci0gICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0NMRUFSKHRleHQpOwotICAgIHJldHVybiBzdHJlYW07Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoYnVmKTsKLSAgICBQeV9YREVDUkVGKHN0cmVhbSk7Ci0gICAgUHlfWERFQ1JFRih0ZXh0KTsKLSAgICBQeV9YREVDUkVGKHJhdyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBpbnQKLWlzX3ZhbGlkX2ZkKGludCBmZCkKLXsKLSAgICBpbnQgZHVtbXlfZmQ7Ci0gICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZHVtbXlfZmQgPSBkdXAoZmQpOwotICAgIGlmIChkdW1teV9mZCA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGNsb3NlKGR1bW15X2ZkKTsKLSAgICByZXR1cm4gMTsKLX0KLQotLyogSW5pdGlhbGl6ZSBzeXMuc3RkaW4sIHN0ZG91dCwgc3RkZXJyIGFuZCBidWlsdGlucy5vcGVuICovCi1zdGF0aWMgaW50Ci1pbml0c3RkaW8odm9pZCkKLXsKLSAgICBQeU9iamVjdCAqaW9tb2QgPSBOVUxMLCAqd3JhcHBlcjsKLSAgICBQeU9iamVjdCAqYmltb2QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOwotICAgIFB5T2JqZWN0ICpzdGQgPSBOVUxMOwotICAgIGludCBzdGF0dXMgPSAwLCBmZDsKLSAgICBQeU9iamVjdCAqIGVuY29kaW5nX2F0dHI7Ci0gICAgY2hhciAqcHl0aG9uaW9lbmNvZGluZyA9IE5VTEwsICplbmNvZGluZywgKmVycm9yczsKLQotICAgIC8qIEhhY2sgdG8gYXZvaWQgYSBuYXN0eSByZWN1cnNpb24gaXNzdWUgd2hlbiBQeXRob24gaXMgaW52b2tlZAotICAgICAgIGluIHZlcmJvc2UgbW9kZTogcHJlLWltcG9ydCB0aGUgTGF0aW4tMSBhbmQgVVRGLTggY29kZWNzICovCi0gICAgaWYgKChtID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJlbmNvZGluZ3MudXRmXzgiKSkgPT0gTlVMTCkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9ERUNSRUYobSk7Ci0KLSAgICBpZiAoIShtID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJlbmNvZGluZ3MubGF0aW5fMSIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9ERUNSRUYobSk7Ci0KLSAgICBpZiAoIShiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKSkpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBpZiAoIShpb21vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW8iKSkpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgaWYgKCEod3JhcHBlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW9tb2QsICJPcGVuV3JhcHBlciIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIC8qIFNldCBidWlsdGlucy5vcGVuICovCi0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoYmltb2QsICJvcGVuIiwgd3JhcHBlcikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHdyYXBwZXIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9ERUNSRUYod3JhcHBlcik7Ci0KLSAgICBlbmNvZGluZyA9IF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nOwotICAgIGVycm9ycyA9IF9QeV9TdGFuZGFyZFN0cmVhbUVycm9yczsKLSAgICBpZiAoIWVuY29kaW5nIHx8ICFlcnJvcnMpIHsKLSAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IFB5X0dFVEVOVigiUFlUSE9OSU9FTkNPRElORyIpOwotICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZykgewotICAgICAgICAgICAgY2hhciAqZXJyOwotICAgICAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IF9QeU1lbV9TdHJkdXAocHl0aG9uaW9lbmNvZGluZyk7Ci0gICAgICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyID0gc3RyY2hyKHB5dGhvbmlvZW5jb2RpbmcsICc6Jyk7Ci0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgKmVyciA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgZXJyKys7Ci0gICAgICAgICAgICAgICAgaWYgKCplcnIgJiYgIWVycm9ycykgewotICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpweXRob25pb2VuY29kaW5nICYmICFlbmNvZGluZykgewotICAgICAgICAgICAgICAgIGVuY29kaW5nID0gcHl0aG9uaW9lbmNvZGluZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIFNldCBzeXMuc3RkaW4gKi8KLSAgICBmZCA9IGZpbGVubyhzdGRpbik7Ci0gICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBtYXkgbm90IGJlIGNvbm5lY3RlZAotICAgICAqIGFuZCBmaWxlbm8oKSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCi0gICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCi0gICAgICovCi0gICAgaWYgKCFpc192YWxpZF9mZChmZCkpIHsKLSAgICAgICAgc3RkID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHN0ZCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAwLCAiPHN0ZGluPiIsIGVuY29kaW5nLCBlcnJvcnMpOwotICAgICAgICBpZiAoc3RkID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0gLyogaWYgKGZkIDwgMCkgKi8KLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkaW5fXyIsIHN0ZCk7Ci0gICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGluLCBzdGQpOwotICAgIFB5X0RFQ1JFRihzdGQpOwotCi0gICAgLyogU2V0IHN5cy5zdGRvdXQgKi8KLSAgICBmZCA9IGZpbGVubyhzdGRvdXQpOwotICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKSB7Ci0gICAgICAgIHN0ZCA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihzdGQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRvdXQ+IiwgZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgICAgIGlmIChzdGQgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfSAvKiBpZiAoZmQgPCAwKSAqLwotICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRvdXRfXyIsIHN0ZCk7Ci0gICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZG91dCwgc3RkKTsKLSAgICBQeV9ERUNSRUYoc3RkKTsKLQotI2lmIDEgLyogRGlzYWJsZSB0aGlzIGlmIHlvdSBoYXZlIHRyb3VibGUgZGVidWdnaW5nIGJvb3RzdHJhcCBzdHVmZiAqLwotICAgIC8qIFNldCBzeXMuc3RkZXJyLCByZXBsYWNlcyB0aGUgcHJlbGltaW5hcnkgc3RkZXJyICovCi0gICAgZmQgPSBmaWxlbm8oc3RkZXJyKTsKLSAgICBpZiAoIWlzX3ZhbGlkX2ZkKGZkKSkgewotICAgICAgICBzdGQgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYoc3RkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3RkZXJyPiIsIGVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpOwotICAgICAgICBpZiAoc3RkID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0gLyogaWYgKGZkIDwgMCkgKi8KLQotICAgIC8qIFNhbWUgYXMgaGFjayBhYm92ZSwgcHJlLWltcG9ydCBzdGRlcnIncyBjb2RlYyB0byBhdm9pZCByZWN1cnNpb24KLSAgICAgICB3aGVuIGltcG9ydC5jIHRyaWVzIHRvIHdyaXRlIHRvIHN0ZGVyciBpbiB2ZXJib3NlIG1vZGUuICovCi0gICAgZW5jb2RpbmdfYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RkLCAiZW5jb2RpbmciKTsKLSAgICBpZiAoZW5jb2RpbmdfYXR0ciAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKiBzdGRfZW5jb2Rpbmc7Ci0gICAgICAgIHN0ZF9lbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmdfYXR0cik7Ci0gICAgICAgIGlmIChzdGRfZW5jb2RpbmcgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVjX2luZm8gPSBfUHlDb2RlY19Mb29rdXAoc3RkX2VuY29kaW5nKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoY29kZWNfaW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nX2F0dHIpOwotICAgIH0KLSAgICBQeUVycl9DbGVhcigpOyAgLyogTm90IGEgZmF0YWwgZXJyb3IgaWYgY29kZWMgaXNuJ3QgYXZhaWxhYmxlICovCi0KLSAgICBpZiAoUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgc3RkKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHN0ZCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGlmIChfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBzdGQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoc3RkKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHN0ZCk7Ci0jZW5kaWYKLQotICAgIGlmICgwKSB7Ci0gIGVycm9yOgotICAgICAgICBzdGF0dXMgPSAtMTsKLSAgICB9Ci0KLSAgICAvKiBXZSB3b24ndCBuZWVkIHRoZW0gYW55bW9yZS4gKi8KLSAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKLSAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7Ci0gICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKLSAgICB9Ci0gICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyk7Ci0gICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7Ci0gICAgfQotICAgIFB5TWVtX0ZyZWUocHl0aG9uaW9lbmNvZGluZyk7Ci0gICAgUHlfWERFQ1JFRihiaW1vZCk7Ci0gICAgUHlfWERFQ1JFRihpb21vZCk7Ci0gICAgcmV0dXJuIHN0YXR1czsKLX0KIAogLyogUGFyc2UgaW5wdXQgZnJvbSBhIGZpbGUgYW5kIGV4ZWN1dGUgaXQgKi8KIApAQCAtMTMyMiw3ICsxMTAsNyBAQAogICAgIGVyciA9IC0xOwogICAgIGZvciAoOzspIHsKICAgICAgICAgcmV0ID0gUHlSdW5fSW50ZXJhY3RpdmVPbmVPYmplY3QoZnAsIGZpbGVuYW1lLCBmbGFncyk7Ci0gICAgICAgIFBSSU5UX1RPVEFMX1JFRlMoKTsKKyAgICAgICAgX1BZX0RFQlVHX1BSSU5UX1RPVEFMX1JFRlMoKTsKICAgICAgICAgaWYgKHJldCA9PSBFX0VPRikgewogICAgICAgICAgICAgZXJyID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3Nyw3ICsyNjUsNyBAQAogc3RhdGljIGludAogbWF5YmVfcHljX2ZpbGUoRklMRSAqZnAsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBleHQsIGludCBjbG9zZWl0KQogewotICAgIGlmIChzdHJjbXAoZXh0LCAiLnB5YyIpID09IDAgfHwgc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQorICAgIGlmIChzdHJjbXAoZXh0LCAiLnB5YyIpID09IDApCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogT25seSBsb29rIGludG8gdGhlIGZpbGUgaWYgd2UgYXJlIGFsbG93ZWQgdG8gY2xvc2UgaXQsIHNpbmNlCkBAIC0xNTE2LDcgKzMwNCw3IEBACiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmosICpsb2FkZXJfdHlwZSwgKmxvYWRlcjsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWVfb2JqLCAqYm9vdHN0cmFwLCAqbG9hZGVyX3R5cGUgPSBOVUxMLCAqbG9hZGVyOwogICAgIGludCByZXN1bHQgPSAwOwogCiAgICAgZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CkBAIC0xNTI1LDcgKzMxMywxMiBAQAogICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLwogICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7Ci0gICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCBsb2FkZXJfbmFtZSk7CisgICAgYm9vdHN0cmFwID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfYm9vdHN0cmFwX2V4dGVybmFsIik7CisgICAgaWYgKGJvb3RzdHJhcCAhPSBOVUxMKSB7CisgICAgICAgIGxvYWRlcl90eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhib290c3RyYXAsIGxvYWRlcl9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGJvb3RzdHJhcCk7CisgICAgfQogICAgIGlmIChsb2FkZXJfdHlwZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZV9vYmopOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNTgzLDkgKzM3Niw2IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogQ2FuJ3QgcmVvcGVuIC5weWMgZmlsZVxuIik7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KLSAgICAgICAgLyogVHVybiBvbiBvcHRpbWl6YXRpb24gaWYgYSAucHlvIGZpbGUgaXMgZ2l2ZW4gKi8KLSAgICAgICAgaWYgKHN0cmNtcChleHQsICIucHlvIikgPT0gMCkKLSAgICAgICAgICAgIFB5X09wdGltaXplRmxhZyA9IDE7CiAKICAgICAgICAgaWYgKHNldF9tYWluX2xvYWRlcihkLCBmaWxlbmFtZSwgIlNvdXJjZWxlc3NGaWxlTG9hZGVyIikgPCAwKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKQEAgLTE3MjksNyArNTE5LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9mZnNldCA+PSAwKSB7Ci0gICAgICAgIGlmIChvZmZzZXQgPiAwICYmIG9mZnNldCA9PSBzdHJsZW4odGV4dCkgJiYgdGV4dFtvZmZzZXQgLSAxXSA9PSAnXG4nKQorICAgICAgICBpZiAob2Zmc2V0ID4gMCAmJiAoc2l6ZV90KW9mZnNldCA9PSBzdHJsZW4odGV4dCkgJiYgdGV4dFtvZmZzZXQgLSAxXSA9PSAnXG4nKQogICAgICAgICAgICAgb2Zmc2V0LS07CiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIG5sID0gc3RyY2hyKHRleHQsICdcbicpOwpAQCAtMjE5MywxMyArOTgzLDE3IEBACiAKICAgICBtYWdpYyA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICBpZiAobWFnaWMgIT0gUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluIC5weWMgZmlsZSIpOworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAucHljIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIFNraXAgbXRpbWUgYW5kIHNpemUgKi8KICAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgdiA9IFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlKGZwKTsKICAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUNvZGVfQ2hlY2sodikpIHsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTI1ODcsMjcyICsxMzgxLDYgQEAKICAgICB9CiB9CiAKLS8qIFByaW50IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiAoaWYgYW4gZXhjZXB0aW9uIGlzIHNldCkgd2l0aCBpdHMgdHJhY2ViYWNrLAotICogb3IgZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2suCi0gKgotICogRG9uJ3QgY2FsbCBQeUVycl9QcmludEV4KCkgYW5kIHRoZSBleGNlcHQgaG9vaywgYmVjYXVzZSBQeV9GYXRhbEVycm9yKCkgaXMKLSAqIGNhbGxlZCBvbiBjYXRhc3Ryb3BoaWMgY2FzZXMuICovCi0KLXN0YXRpYyB2b2lkCi1fUHlfUHJpbnRGYXRhbEVycm9yKGludCBmZCkKLXsKLSAgICBQeU9iamVjdCAqZmVyciwgKnJlczsKLSAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdiwgKnRiOwotICAgIGludCBoYXNfdGI7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwotCi0gICAgUHlFcnJfRmV0Y2goJmV4Y2VwdGlvbiwgJnYsICZ0Yik7Ci0gICAgaWYgKGV4Y2VwdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE5vIGN1cnJlbnQgZXhjZXB0aW9uICovCi0gICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKLSAgICB9Ci0KLSAgICBmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7Ci0gICAgaWYgKGZlcnIgPT0gTlVMTCB8fCBmZXJyID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogc3lzLnN0ZGVyciBpcyBub3Qgc2V0IHlldCBvciBzZXQgdG8gTm9uZSwKLSAgICAgICAgICAgbm8gbmVlZCB0byB0cnkgdG8gZGlzcGxheSB0aGUgZXhjZXB0aW9uICovCi0gICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKLSAgICB9Ci0KLSAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4Y2VwdGlvbiwgJnYsICZ0Yik7Ci0gICAgaWYgKHRiID09IE5VTEwpIHsKLSAgICAgICAgdGIgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYodGIpOwotICAgIH0KLSAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodiwgdGIpOwotICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgewotICAgICAgICAvKiBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oKSBmYWlsZWQgKi8KLSAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOwotICAgIH0KLQotICAgIGhhc190YiA9ICh0YiAhPSBOVUxMICYmIHRiICE9IFB5X05vbmUpOwotICAgIFB5RXJyX0Rpc3BsYXkoZXhjZXB0aW9uLCB2LCB0Yik7Ci0gICAgUHlfWERFQ1JFRihleGNlcHRpb24pOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgUHlfWERFQ1JFRih0Yik7Ci0KLSAgICAvKiBzeXMuc3RkZXJyIG1heSBiZSBidWZmZXJlZDogY2FsbCBzeXMuc3RkZXJyLmZsdXNoKCkgKi8KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0KLSAgICBpZiAoaGFzX3RiKQotICAgICAgICByZXR1cm47Ci0KLWRpc3BsYXlfc3RhY2s6Ci0gICAgLyogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSB3b3JrcyBldmVuIGlmIHRoZSBHSUwgd2FzIHJlbGVhc2VkICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLQotICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKLX0KLQotLyogUHJpbnQgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgYWJvcnQgKi8KLQotdm9pZAotUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCi17Ci0gICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7Ci0gICAgc3RhdGljIGludCByZWVudHJhbnQgPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBzaXplX3QgbGVuOwotICAgIFdDSEFSKiBidWZmZXI7Ci0gICAgc2l6ZV90IGk7Ci0jZW5kaWYKLQotICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgLyogUHlfRmF0YWxFcnJvcigpIGNhdXNlZCBhIHNlY29uZCBmYXRhbCBlcnJvci4KLSAgICAgICAgICAgRXhhbXBsZTogZmx1c2hfc3RkX2ZpbGVzKCkgcmFpc2VzIGEgcmVjdXJzaW9uIGVycm9yLiAqLwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotICAgIHJlZW50cmFudCA9IDE7Ci0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7Ci0gICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KLQotICAgIC8qIFByaW50IHRoZSBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKLSAgICAgKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4gKi8KLSAgICBfUHlfUHJpbnRGYXRhbEVycm9yKGZkKTsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIFRoZSBtYWluIHB1cnBvc2Ugb2YgZmF1bHRoYW5kbGVyIGlzIHRvIGRpc3BsYXkgdGhlIHRyYWNlYmFjay4gV2UgYWxyZWFkeQotICAgICAqIGRpZCBvdXIgYmVzdCB0byBkaXNwbGF5IGl0LiBTbyBmYXVsdGhhbmRsZXIgY2FuIG5vdyBiZSBkaXNhYmxlZC4KLSAgICAgKiAoRG9uJ3QgdHJpZ2dlciBpdCBvbiBhYm9ydCgpLikgKi8KLSAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGxlbiA9IHN0cmxlbihtc2cpOwotCi0gICAgLyogQ29udmVydCB0aGUgbWVzc2FnZSB0byB3Y2hhcl90LiBUaGlzIHVzZXMgYSBzaW1wbGUgb25lLXRvLW9uZQotICAgIGNvbnZlcnNpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHRoaXMgZXJyb3IgbWVzc2FnZSBhY3R1YWxseSB1c2VzIEFTQ0lJCi0gICAgb25seS4gSWYgdGhpcyBjZWFzZXMgdG8gYmUgdHJ1ZSwgd2Ugd2lsbCBoYXZlIHRvIGNvbnZlcnQuICovCi0gICAgYnVmZmVyID0gYWxsb2NhKCAobGVuKzEpICogKHNpemVvZiAqYnVmZmVyKSk7Ci0gICAgZm9yKCBpPTA7IGk8PWxlbjsgKytpKQotICAgICAgICBidWZmZXJbaV0gPSBtc2dbaV07Ci0gICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coYnVmZmVyKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coTCJcbiIpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotZXhpdDoKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoX0RFQlVHKQotICAgIERlYnVnQnJlYWsoKTsKLSNlbmRpZgotICAgIGFib3J0KCk7Ci19Ci0KLS8qIENsZWFuIHVwIGFuZCBleGl0ICovCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7Ci0vKiBGb3IgdGhlIGF0ZXhpdCBtb2R1bGUuICovCi12b2lkIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpCi17Ci0gICAgcHlleGl0ZnVuYyA9IGZ1bmM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX3B5X2V4aXRmdW5jcyh2b2lkKQotewotICAgIGlmIChweWV4aXRmdW5jID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLQotICAgICgqcHlleGl0ZnVuYykoKTsKLSAgICBQeUVycl9DbGVhcigpOwotfQotCi0vKiBXYWl0IHVudGlsIHRocmVhZGluZy5fc2h1dGRvd24gY29tcGxldGVzLCBwcm92aWRlZAotICAgdGhlIHRocmVhZGluZyBtb2R1bGUgd2FzIGltcG9ydGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KLSAgIFRoZSBzaHV0ZG93biByb3V0aW5lIHdpbGwgd2FpdCB1bnRpbCBhbGwgbm9uLWRhZW1vbgotICAgInRocmVhZGluZyIgdGhyZWFkcyBoYXZlIGNvbXBsZXRlZC4gKi8KLXN0YXRpYyB2b2lkCi13YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCkKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeV9JREVOVElGSUVSKF9zaHV0ZG93bik7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVhZGluZyIpOwotICAgIGlmICh0aHJlYWRpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiB0aHJlYWRpbmcgbm90IGltcG9ydGVkICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgIH0KLSAgICBQeV9ERUNSRUYodGhyZWFkaW5nKTsKLSNlbmRpZgotfQotCi0jZGVmaW5lIE5FWElURlVOQ1MgMzIKLXN0YXRpYyB2b2lkICgqZXhpdGZ1bmNzW05FWElURlVOQ1NdKSh2b2lkKTsKLXN0YXRpYyBpbnQgbmV4aXRmdW5jcyA9IDA7Ci0KLWludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQotewotICAgIGlmIChuZXhpdGZ1bmNzID49IE5FWElURlVOQ1MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBleGl0ZnVuY3NbbmV4aXRmdW5jcysrXSA9IGZ1bmM7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX2xsX2V4aXRmdW5jcyh2b2lkKQotewotICAgIHdoaWxlIChuZXhpdGZ1bmNzID4gMCkKLSAgICAgICAgKCpleGl0ZnVuY3NbLS1uZXhpdGZ1bmNzXSkoKTsKLQotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIGZmbHVzaChzdGRlcnIpOwotfQotCi12b2lkCi1QeV9FeGl0KGludCBzdHMpCi17Ci0gICAgUHlfRmluYWxpemUoKTsKLQotICAgIGV4aXQoc3RzKTsKLX0KLQotc3RhdGljIHZvaWQKLWluaXRzaWdzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19JR04pOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfSUdOKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfSUdOKTsKLSNlbmRpZgotICAgIFB5T1NfSW5pdEludGVycnVwdHMoKTsgLyogTWF5IGltcGx5IGluaXRzaWduYWwoKSAqLwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBzaWduYWwiKTsKLSAgICB9Ci19Ci0KLQotLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLgotICoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotdm9pZAotX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19ERkwpOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfREZMKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfREZMKTsKLSNlbmRpZgotfQotCi0KLS8qCi0gKiBUaGUgZmlsZSBkZXNjcmlwdG9yIGZkIGlzIGNvbnNpZGVyZWQgYGBpbnRlcmFjdGl2ZScnIGlmIGVpdGhlcgotICogICBhKSBpc2F0dHkoZmQpIGlzIFRSVUUsIG9yCi0gKiAgIGIpIHRoZSAtaSBmbGFnIHdhcyBnaXZlbiwgYW5kIHRoZSBmaWxlbmFtZSBhc3NvY2lhdGVkIHdpdGgKLSAqICAgICAgdGhlIGRlc2NyaXB0b3IgaXMgTlVMTCBvciAiPHN0ZGluPiIgb3IgIj8/PyIuCi0gKi8KLWludAotUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoaXNhdHR5KChpbnQpZmlsZW5vKGZwKSkpCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmICghUHlfSW50ZXJhY3RpdmVGbGFnKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGZpbGVuYW1lID09IE5VTEwpIHx8Ci0gICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI8c3RkaW4+IikgPT0gMCkgfHwKLSAgICAgICAgICAgKHN0cmNtcChmaWxlbmFtZSwgIj8/PyIpID09IDApOwotfQotCiAKICNpZiBkZWZpbmVkKFVTRV9TVEFDS0NIRUNLKQogI2lmIGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoX01TQ19WRVIpCkBAIC0yODkxLDczICsxNDE5LDYgQEAKIAogI2VuZGlmIC8qIFVTRV9TVEFDS0NIRUNLICovCiAKLQotLyogV3JhcHBlcnMgYXJvdW5kIHNpZ2FjdGlvbigpIG9yIHNpZ25hbCgpLiAqLwotCi1QeU9TX3NpZ2hhbmRsZXJfdAotUHlPU19nZXRzaWcoaW50IHNpZykKLXsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgTlVMTCwgJmNvbnRleHQpID09IC0xKQotICAgICAgICByZXR1cm4gU0lHX0VSUjsKLSAgICByZXR1cm4gY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBoYW5kbGVyOwotLyogU3BlY2lhbCBzaWduYWwgaGFuZGxpbmcgZm9yIHRoZSBzZWN1cmUgQ1JUIGluIFZpc3VhbCBTdHVkaW8gMjAwNSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAKLSAgICBzd2l0Y2ggKHNpZykgewotICAgIC8qIE9ubHkgdGhlc2Ugc2lnbmFscyBhcmUgdmFsaWQgKi8KLSAgICBjYXNlIFNJR0lOVDoKLSAgICBjYXNlIFNJR0lMTDoKLSAgICBjYXNlIFNJR0ZQRToKLSAgICBjYXNlIFNJR1NFR1Y6Ci0gICAgY2FzZSBTSUdURVJNOgotICAgIGNhc2UgU0lHQlJFQUs6Ci0gICAgY2FzZSBTSUdBQlJUOgotICAgICAgICBicmVhazsKLSAgICAvKiBEb24ndCBjYWxsIHNpZ25hbCgpIHdpdGggb3RoZXIgdmFsdWVzIG9yIGl0IHdpbGwgYXNzZXJ0ICovCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFNJR19FUlI7Ci0gICAgfQotI2VuZGlmIC8qIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgKi8KLSAgICBoYW5kbGVyID0gc2lnbmFsKHNpZywgU0lHX0lHTik7Ci0gICAgaWYgKGhhbmRsZXIgIT0gU0lHX0VSUikKLSAgICAgICAgc2lnbmFsKHNpZywgaGFuZGxlcik7Ci0gICAgcmV0dXJuIGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotUHlPU19zaWdoYW5kbGVyX3QKLVB5T1Nfc2V0c2lnKGludCBzaWcsIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXIpCi17Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAvKiBTb21lIGNvZGUgaW4gTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBkZXBlbmRzIG9uIHNpZ2FjdGlvbigpIGJlaW5nCi0gICAgICogdXNlZCBoZXJlIGlmIEhBVkVfU0lHQUNUSU9OIGlzIGRlZmluZWQuICBGaXggdGhhdCBpZiB0aGlzIGNvZGUKLSAgICAgKiBjaGFuZ2VzIHRvIGludmFsaWRhdGUgdGhhdCBhc3N1bXB0aW9uLgotICAgICAqLwotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dCwgb2NvbnRleHQ7Ci0gICAgY29udGV4dC5zYV9oYW5kbGVyID0gaGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmY29udGV4dC5zYV9tYXNrKTsKLSAgICBjb250ZXh0LnNhX2ZsYWdzID0gMDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgJmNvbnRleHQsICZvY29udGV4dCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBTSUdfRVJSOwotICAgIHJldHVybiBvY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBvbGRoYW5kbGVyOwotICAgIG9sZGhhbmRsZXIgPSBzaWduYWwoc2lnLCBoYW5kbGVyKTsKLSNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotICAgIHNpZ2ludGVycnVwdChzaWcsIDEpOwotI2VuZGlmCi0gICAgcmV0dXJuIG9sZGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQogLyogRGVwcmVjYXRlZCBDIEFQSSBmdW5jdGlvbnMgc3RpbGwgcHJvdmlkZWQgZm9yIGJpbmFyeSBjb21wYXRpYmxpdHkgKi8KIAogI3VuZGVmIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IGRlNmE0MWYuLjAyYTkzNzQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTMsMTE1ICszLDI1IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQotICAvKgotICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKLSAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQotICAgKiB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgYmluYXJ5IGJ1aWxkIG9uIE9TWCAxMC40IG9uIGVhcmxpZXIKLSAgICogcmVsZWFzZXMgb2YgdGhlIE9TLiBUaGVyZWZvcmUgY2xhaW0gd2UgZG9uJ3Qgc3VwcG9ydCBmdGltZS4KLSAgICovCi0jIHVuZGVmIEhBVkVfRlRJTUUKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZgorLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLworI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCi1zdGF0aWMgdm9pZAotcHlnZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7Ci0gICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7Ci0gICAgVUxPTkdMT05HIG1pY3Jvc2Vjb25kczsKKy8qIFRvIG1pY3Jvc2Vjb25kcyAoMTBeLTYpICovCisjZGVmaW5lIE1TX1RPX1VTIDEwMDAKKyNkZWZpbmUgU0VDX1RPX1VTIChTRUNfVE9fTVMgKiBNU19UT19VUykKIAotICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7Ci0gICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKLSAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMDogbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuCi0gICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCi0gICAgICAgZGF5cykuICovCi0gICAgbWljcm9zZWNvbmRzID0gbGFyZ2UuUXVhZFBhcnQgLyAxMCAtIDExNjQ0NDczNjAwMDAwMDAwOwotICAgIHRwLT50dl9zZWMgPSBtaWNyb3NlY29uZHMgLyAxMDAwMDAwOwotICAgIHRwLT50dl91c2VjID0gbWljcm9zZWNvbmRzICUgMTAwMDAwMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKLSAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQ7CisvKiBUbyBuYW5vc2Vjb25kcyAoMTBeLTkpICovCisjZGVmaW5lIFVTX1RPX05TIDEwMDAKKyNkZWZpbmUgTVNfVE9fTlMgKE1TX1RPX1VTICogVVNfVE9fTlMpCisjZGVmaW5lIFNFQ19UT19OUyAoU0VDX1RPX01TICogTVNfVE9fTlMpCiAKLSAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICh2b2lkKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgfQotI2Vsc2UKLSAgICAvKiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBnZXQgdGhlIHRpbWU6Ci0gICAgICAoMSkgZ2V0dGltZW9mZGF5KCkgLS0gcmVzb2x1dGlvbiBpbiBtaWNyb3NlY29uZHMKLSAgICAgICgyKSBmdGltZSgpIC0tIHJlc29sdXRpb24gaW4gbWlsbGlzZWNvbmRzCi0gICAgICAoMykgdGltZSgpIC0tIHJlc29sdXRpb24gaW4gc2Vjb25kcwotICAgICAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm4gdmFsdWUgaW4gYSB0aW1ldmFsIHN0cnVjdC4KLSAgICAgIFNpbmNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTQ08gT0RUIDMuMCkgZ2V0dGltZW9mZGF5KCkgbWF5Ci0gICAgICBmYWlsLCBzbyB3ZSBmYWxsIGJhY2sgb24gZnRpbWUoKSBvciB0aW1lKCkuCi0gICAgICBOb3RlOiBjbG9jayByZXNvbHV0aW9uIGRvZXMgbm90IGltcGx5IGNsb2NrIGFjY3VyYWN5ISAqLwotCi0jaWZkZWYgSEFWRV9HRVRUSU1FT0ZEQVkKLSAgICBpbnQgZXJyOwotI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCk7Ci0jZWxzZQotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOwotI2VuZGlmCi0gICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7Ci0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKLSAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmICAgLyogSEFWRV9HRVRUSU1FT0ZEQVkgKi8KLQotI2lmIGRlZmluZWQoSEFWRV9GVElNRSkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCB0aW1lYiB0OwotICAgICAgICBmdGltZSgmdCk7Ci0gICAgICAgIHRwLT50dl9zZWMgPSB0LnRpbWU7Ci0gICAgICAgIHRwLT50dl91c2VjID0gdC5taWxsaXRtICogMTAwMDsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImZ0aW1lKCkiOwotICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTM7Ci0gICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZSAvKiAhSEFWRV9GVElNRSAqLwotICAgIHRwLT50dl9zZWMgPSB0aW1lKE5VTEwpOwotICAgIHRwLT50dl91c2VjID0gMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lKCkiOwotICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wOwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICB9Ci0jZW5kaWYgLyogIUhBVkVfRlRJTUUgKi8KLQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLX0KLQotdm9pZAotX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCkKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgTlVMTCk7Ci19Ci0KLXZvaWQKLV9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgaW5mbyk7Ci19CisvKiBDb252ZXJzaW9uIGZyb20gbmFub3NlY29uZHMgKi8KKyNkZWZpbmUgTlNfVE9fTVMgKDEwMDAgKiAxMDAwKQorI2RlZmluZSBOU19UT19VUyAoMTAwMCkKIAogc3RhdGljIHZvaWQKIGVycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQpAQCAtMTY4LDE3ICs3OCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGludHBhcnQgPj0gMCkgewotICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IDAuMDsKLSAgICAgICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7CisgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOworICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IGZsb29yKGZsb2F0cGFydCk7CiAgICAgICAgIH0KIAogICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OwpAQCAtMjA3LDEyICsxMTUsMTAgQEAKICAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKIAogICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGQgPj0gMCkKLSAgICAgICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0yNDUsOCArMTUxLDUyOCBAQAogICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOwogfQogCi12b2lkCi1fUHlUaW1lX0luaXQoKQorc3RhdGljIHZvaWQKK19QeVRpbWVfb3ZlcmZsb3codm9pZCkKIHsKLSAgICAvKiBEbyBub3RoaW5nLiAgTmVlZGVkIHRvIGZvcmNlIGxpbmtpbmcuICovCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyBfUHlUaW1lX3QiKTsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0Zyb21TZWNvbmRzKGludCBzZWNvbmRzKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKKyAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKKyAgICAgICBiaXRzKS4gKi8KKyAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgcmV0dXJuIHQ7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIFBZX0xPTkdfTE9ORywgX1B5VGltZV90KTsKKyAgICByZXR1cm4gdDsKK30KKworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIGludAorX1B5VGltZV9Gcm9tVGltZXNwZWMoX1B5VGltZV90ICp0cCwgc3RydWN0IHRpbWVzcGVjICp0cywgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSB0cy0+dHZfbnNlYzsKKworICAgICp0cCA9IHQ7CisgICAgcmV0dXJuIHJlczsKK30KKyNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCitzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21UaW1ldmFsKF9QeVRpbWVfdCAqdHAsIHN0cnVjdCB0aW1ldmFsICp0diwgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0di0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSAoX1B5VGltZV90KXR2LT50dl91c2VjICogVVNfVE9fTlM7CisKKyAgICAqdHAgPSB0OworICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQsIGVycjsKKworICAgICAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7CisKKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CisKKyAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7CisgICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOworICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworI2Vsc2UKKyAgICAgICAgbG9uZyBzZWM7CisgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyNlbmRpZgorICAgICAgICBpZiAoc2VjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHRvX25hbm9zZWNvbmRzOworICAgICAgICBpZiAoKnQgLyB0b19uYW5vc2Vjb25kcyAhPSBzZWMpIHsKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Gcm9tT2JqZWN0KHQsIG9iaiwgcm91bmQsIFNFQ19UT19OUyk7Cit9CisKK2ludAorX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0Zyb21PYmplY3QodCwgb2JqLCByb3VuZCwgTVNfVE9fTlMpOworfQorCitkb3VibGUKK19QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQoreworICAgIF9QeVRpbWVfdCBzZWMsIG5zOworICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KKyAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICBzZWMgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKyAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKK30KKworUHlPYmplY3QgKgorX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQoreworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOworI2Vsc2UKKyAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOworI2VuZGlmCit9CisKK3N0YXRpYyBfUHlUaW1lX3QKK19QeVRpbWVfRGl2aWRlKF9QeVRpbWVfdCB0LCBfUHlUaW1lX3QgaywgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIGFzc2VydChrID4gMSk7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgICAgICBpZiAodCA+PSAwKQorICAgICAgICAgICAgcmV0dXJuICh0ICsgayAtIDEpIC8gazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICh0IC0gKGsgLSAxKSkgLyBrOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiB0IC8gazsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKF9QeVRpbWVfdCB0LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfRGl2aWRlKHQsIE5TX1RPX01TLCByb3VuZCk7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhfUHlUaW1lX3QgdCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0RpdmlkZSh0LCBOU19UT19VUywgcm91bmQpOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0FzVGltZXZhbF9pbXBsKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsIF9QeVRpbWVfcm91bmRfdCByb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCBzZWNzLCBuczsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIHNlY3MgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKyAgICBpZiAobnMgPCAwKSB7CisgICAgICAgIG5zICs9IFNFQ19UT19OUzsKKyAgICAgICAgc2VjcyAtPSAxOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBPbiBXaW5kb3dzLCB0aW1ldmFsLnR2X3NlYyBpcyBhIGxvbmcgKDMyIGJpdCksCisgICAgICAgd2hlcmVhcyB0aW1lX3QgY2FuIGJlIDY0LWJpdC4gKi8KKyAgICBhc3NlcnQoc2l6ZW9mKHR2LT50dl9zZWMpID09IHNpemVvZihsb25nKSk7CisjaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCisgICAgaWYgKHNlY3MgPiBMT05HX01BWCkgeworICAgICAgICBzZWNzID0gTE9OR19NQVg7CisgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBlbHNlIGlmIChzZWNzIDwgTE9OR19NSU4pIHsKKyAgICAgICAgc2VjcyA9IExPTkdfTUlOOworICAgICAgICByZXMgPSAtMTsKKyAgICB9CisjZW5kaWYKKyAgICB0di0+dHZfc2VjID0gKGxvbmcpc2VjczsKKyNlbHNlCisgICAgLyogT24gT3BlbkJTRCA1LjQsIHRpbWV2YWwudHZfc2VjIGlzIGEgbG9uZy4KKyAgICAgICBFeGFtcGxlOiBsb25nIGlzIDY0LWJpdCwgd2hlcmVhcyB0aW1lX3QgaXMgMzItYml0LiAqLworICAgIHR2LT50dl9zZWMgPSBzZWNzOworICAgIGlmICgoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykKKyAgICAgICAgcmVzID0gLTE7CisjZW5kaWYKKworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCisgICAgICAgIHR2LT50dl91c2VjID0gKGludCkoKG5zICsgVVNfVE9fTlMgLSAxKSAvIFVTX1RPX05TKTsKKyAgICBlbHNlCisgICAgICAgIHR2LT50dl91c2VjID0gKGludCkobnMgLyBVU19UT19OUyk7CisKKyAgICBpZiAodHYtPnR2X3VzZWMgPj0gU0VDX1RPX1VTKSB7CisgICAgICAgIHR2LT50dl91c2VjIC09IFNFQ19UT19VUzsKKyAgICAgICAgdHYtPnR2X3NlYyArPSAxOworICAgIH0KKworICAgIGlmIChyZXMgJiYgcmFpc2UpCisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKworICAgIGFzc2VydCgwIDw9IHR2LT50dl91c2VjICYmIHR2LT50dl91c2VjIDw9IDk5OTk5OSk7CisgICAgcmV0dXJuIHJlczsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNUaW1ldmFsX2ltcGwodCwgdHYsIHJvdW5kLCAxKTsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Bc1RpbWV2YWxfaW1wbCh0LCB0diwgcm91bmQsIDApOworfQorCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIHx8IGRlZmluZWQoSEFWRV9LUVVFVUUpCitpbnQKK19QeVRpbWVfQXNUaW1lc3BlYyhfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWVzcGVjICp0cykKK3sKKyAgICBfUHlUaW1lX3Qgc2VjcywgbnNlYzsKKworICAgIHNlY3MgPSB0IC8gU0VDX1RPX05TOworICAgIG5zZWMgPSB0ICUgU0VDX1RPX05TOworICAgIGlmIChuc2VjIDwgMCkgeworICAgICAgICBuc2VjICs9IFNFQ19UT19OUzsKKyAgICAgICAgc2VjcyAtPSAxOworICAgIH0KKyAgICB0cy0+dHZfc2VjID0gKHRpbWVfdClzZWNzOworICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdHMtPnR2X25zZWMgPSBuc2VjOworCisgICAgYXNzZXJ0KDAgPD0gdHMtPnR2X25zZWMgJiYgdHMtPnR2X25zZWMgPD0gOTk5OTk5OTk5KTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50CitweWdldHRpbWVvZmRheV9uZXcoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBGSUxFVElNRSBzeXN0ZW1fdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisgICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJnN5c3RlbV90aW1lKTsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSBzeXN0ZW1fdGltZS5kd0xvd0RhdGVUaW1lOworICAgIGxhcmdlLnUuSGlnaFBhcnQgPSBzeXN0ZW1fdGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICAvKiAxMSw2NDQsNDczLDYwMCwwMDAsMDAwLDAwMDogbnVtYmVyIG9mIG5hbm9zZWNvbmRzIGJldHdlZW4KKyAgICAgICB0aGUgMXN0IGphbnVhcnkgMTYwMSBhbmQgdGhlIDFzdCBqYW51YXJ5IDE5NzAgKDM2OSB5ZWFycyArIDg5IGxlYXAKKyAgICAgICBkYXlzKS4gKi8KKyAgICAqdHAgPSBsYXJnZS5RdWFkUGFydCAqIDEwMCAtIDExNjQ0NDczNjAwMDAwMDAwMDAwOworICAgIGlmIChpbmZvKSB7CisgICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OworICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZCwgb2s7CisKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgIG9rID0gR2V0U3lzdGVtVGltZUFkanVzdG1lbnQoJnRpbWVBZGp1c3RtZW50LCAmdGltZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNUaW1lQWRqdXN0bWVudERpc2FibGVkKTsKKyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICB9CisKKyNlbHNlICAgLyogTVNfV0lORE9XUyAqLworICAgIGludCBlcnI7CisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgc3RydWN0IHRpbWVzcGVjIHRzOworI2Vsc2UKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyNlbmRpZgorCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICBlcnIgPSBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChfUHlUaW1lX0Zyb21UaW1lc3BlYyh0cCwgJnRzLCByYWlzZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSI7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKENMT0NLX1JFQUxUSU1FLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgIH0KKyNlbHNlICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCisKKyAgICAgLyogdGVzdCBnZXR0aW1lb2ZkYXkoKSAqLworI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgorICAgIGVyciA9IGdldHRpbWVvZmRheSgmdHYpOworI2Vsc2UKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkoJnR2LCAoc3RydWN0IHRpbWV6b25lICopTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoX1B5VGltZV9Gcm9tVGltZXZhbCh0cCwgJnR2LCByYWlzZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS02OworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICB9CisjZW5kaWYgICAvKiAhSEFWRV9DTE9DS19HRVRUSU1FICovCisjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLworICAgIHJldHVybiAwOworfQorCitfUHlUaW1lX3QKK19QeVRpbWVfR2V0U3lzdGVtQ2xvY2sodm9pZCkKK3sKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBpZiAocHlnZXR0aW1lb2ZkYXlfbmV3KCZ0LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4sIF9QeVRpbWVfSW5pdCgpIGNoZWNrZWQgdGhlIGNsb2NrIGF0IHN0YXJ0dXAgKi8KKyAgICAgICAgYXNzZXJ0KDApOworCisgICAgICAgIC8qIHVzZSBhIGZpeGVkIHZhbHVlIGluc3RlYWQgb2YgYSByYW5kb20gdmFsdWUgZnJvbSB0aGUgc3RhY2sgKi8KKyAgICAgICAgdCA9IDA7CisgICAgfQorICAgIHJldHVybiB0OworfQorCitpbnQKK19QeVRpbWVfR2V0U3lzdGVtQ2xvY2tXaXRoSW5mbyhfUHlUaW1lX3QgKnQsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcmV0dXJuIHB5Z2V0dGltZW9mZGF5X25ldyh0LCBpbmZvLCAxKTsKK30KKworCitzdGF0aWMgaW50CitweW1vbm90b25pY19uZXcoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQoreworI2lmZGVmIFB5X0RFQlVHCisgICAgc3RhdGljIGludCBsYXN0X3NldCA9IDA7CisgICAgc3RhdGljIF9QeVRpbWVfdCBsYXN0ID0gMDsKKyNlbmRpZgorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBVTE9OR0xPTkcgcmVzdWx0OworCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworCisgICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7CisgICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OworICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZCwgb2s7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudDY0KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisKKyAgICAvKiBhcHBseSB0aW1lYmFzZSBmYWN0b3IgKi8KKyAgICB0aW1lICo9IHRpbWViYXNlLm51bWVyOworICAgIHRpbWUgLz0gdGltZWJhc2UuZGVub207CisKKyAgICAqdHAgPSB0aW1lOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAibWFjaF9hYnNvbHV0ZV90aW1lKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gKGRvdWJsZSl0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorCisjZWxzZQorICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyAgICBpZiAoY2xvY2tfZ2V0dGltZShjbGtfaWQsICZ0cykgIT0gMCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbjsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgfQorICAgIGlmIChfUHlUaW1lX0Zyb21UaW1lc3BlYyh0cCwgJnRzLCByYWlzZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIG1vbm90b25pYyBjbG9jayBjYW5ub3QgZ28gYmFja3dhcmQgKi8KKyAgICBhc3NlcnQoIWxhc3Rfc2V0IHx8IGxhc3QgPD0gKnRwKTsKKyAgICBsYXN0ID0gKnRwOworICAgIGxhc3Rfc2V0ID0gMTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitfUHlUaW1lX3QKK19QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2sodm9pZCkKK3sKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBpZiAocHltb25vdG9uaWNfbmV3KCZ0LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4sIF9QeVRpbWVfSW5pdCgpIGNoZWNrZWQgdGhhdCBtb25vdG9uaWMgY2xvY2sgYXQKKyAgICAgICAgICAgc3RhcnR1cCAqLworICAgICAgICBhc3NlcnQoMCk7CisKKyAgICAgICAgLyogdXNlIGEgZml4ZWQgdmFsdWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBzdGFjayAqLworICAgICAgICB0ID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHQ7Cit9CisKK2ludAorX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcmV0dXJuIHB5bW9ub3RvbmljX25ldyh0cCwgaW5mbywgMSk7Cit9CisKK2ludAorX1B5VGltZV9Jbml0KHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgc3lzdGVtIGNsb2NrIHdvcmtzICovCisgICAgaWYgKF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBhIG1vbm90b25pYyBjbG9jayAqLworICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIE5VTEwpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogY2hlY2sgdGhhdCBfUHlUaW1lX0Zyb21TZWNvbmRzKCkgY2Fubm90IG92ZXJmbG93ICovCisgICAgYXNzZXJ0KElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIGFzc2VydChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCAzZjMwN2NmLi45YzlkNTA1IDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDExICsxLDE0IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCisjICBpbmNsdWRlIDxmY250bC5oPgorIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjICAgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjICBlbmRpZgorIyAgaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorIyAgICBpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorIyAgZW5kaWYKICNlbmRpZgogCiAjaWZkZWYgUHlfREVCVUcKQEAgLTEwMiwxMyArMTA1LDc0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbHNlCisjZWxzZSAgIC8qICFIQVZFX0dFVEVOVFJPUFkgKi8KKworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKK3N0YXRpYyBpbnQKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQoreworICAgIC8qIGlzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/CisgICAgICogbmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBsYXRlciAqLworICAgIHN0YXRpYyBpbnQgZ2V0cmFuZG9tX3dvcmtzID0gMTsKKyAgICAvKiBVc2UgL2Rldi91cmFuZG9tLCBibG9jayBpZiB0aGUga2VybmVsIGhhcyBubyBlbnRyb3B5ICovCisgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgbjsKKworICAgIGlmICghZ2V0cmFuZG9tX3dvcmtzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHdoaWxlICgwIDwgc2l6ZSkgeworICAgICAgICBlcnJubyA9IDA7CisKKyAgICAgICAgLyogVXNlIHN5c2NhbGwoKSBiZWNhdXNlIHRoZSBsaWJjIGRvZXNuJ3QgZXhwb3NlIGdldHJhbmRvbSgpIHlldCwgc2VlOgorICAgICAgICAgKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZSwgZmxhZ3MpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZSwgZmxhZ3MpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTKSB7CisgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgLyogTm90ZTogRUlOVFIgc2hvdWxkIG5vdCBvY2N1ciB3aXRoIGZsYWdzPTAgKi8KKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyYWlzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBzaXplIC09IG47CisgICAgfQorICAgIHJldHVybiAxOworfQorI2VuZGlmCisKIHN0YXRpYyBzdHJ1Y3QgewogICAgIGludCBmZDsKICAgICBkZXZfdCBzdF9kZXY7CiAgICAgaW5vX3Qgc3RfaW5vOwogfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogCisKIC8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KICAgIENhbGwgUHlfRmF0YWxFcnJvcigpIG9uIGVycm9yLiAqLwogc3RhdGljIHZvaWQKQEAgLTExOSw3ICsxODMsMTQgQEAKIAogICAgIGFzc2VydCAoMCA8IHNpemUpOwogCi0gICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIC8qIGdldHJhbmRvbSgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLCBmYWxsIGJhY2sKKyAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLworI2VuZGlmCisKKyAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKIApAQCAtMTQ3LDE0ICsyMTgsMjcgQEAKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIHN0cnVjdCBzdGF0IHN0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIGludCByZXM7CisjZW5kaWYKIAogICAgIGlmIChzaXplIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDEpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHJlcyA9PSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCisgICAgICogb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KKyNlbmRpZgorCiAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewogICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0gICAgICAgIGlmIChmc3RhdCh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCiAgICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewogICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCkBAIC0xNjYsMTcgKzI1MCwxMyBAQAogICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCiAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChmZCA8IDApCi0gICAgICAgIHsKKyAgICAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAogICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CkBAIC0xODYsOCArMjY2LDcgQEAKICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChmc3RhdChmZCwgJnN0KSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtMTk5LDI5ICsyNzgsMjEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBkbyB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAgICAgICAgaWYgKG4gPD0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSAoUHlfc3NpemVfdCluOwotICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKG4gPD0gMCkKLSAgICB7Ci0gICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0gICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgZWxzZQorICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgaWYgKG4gPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChuID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAorICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBzaXplIC09IG47CisgICAgfSB3aGlsZSAoMCA8IHNpemUpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggOTUxMjY3My4uMzY3N2U1OSAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTQ3LDcgKzQ3LDYgQEAKICAgICBzdGUtPnN0ZV9kaXJlY3RpdmVzID0gTlVMTDsKIAogICAgIHN0ZS0+c3RlX3R5cGUgPSBibG9jazsKLSAgICBzdGUtPnN0ZV91bm9wdGltaXplZCA9IDA7CiAgICAgc3RlLT5zdGVfbmVzdGVkID0gMDsKICAgICBzdGUtPnN0ZV9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV92YXJhcmdzID0gMDsKQEAgLTExMyw3ICsxMTIsNiBAQAogICAgIHsic3ltYm9scyIsICBUX09CSkVDVCwgT0ZGKHN0ZV9zeW1ib2xzKSwgUkVBRE9OTFl9LAogICAgIHsidmFybmFtZXMiLCBUX09CSkVDVCwgT0ZGKHN0ZV92YXJuYW1lcyksIFJFQURPTkxZfSwKICAgICB7ImNoaWxkcmVuIiwgVF9PQkpFQ1QsIE9GRihzdGVfY2hpbGRyZW4pLCBSRUFET05MWX0sCi0gICAgeyJvcHRpbWl6ZWQiLFRfSU5ULCAgICBPRkYoc3RlX3Vub3B0aW1pemVkKSwgUkVBRE9OTFl9LAogICAgIHsibmVzdGVkIiwgICBUX0lOVCwgICAgT0ZGKHN0ZV9uZXN0ZWQpLCBSRUFET05MWX0sCiAgICAgeyJ0eXBlIiwgICAgIFRfSU5ULCAgICBPRkYoc3RlX3R5cGUpLCBSRUFET05MWX0sCiAgICAgeyJsaW5lbm8iLCAgIFRfSU5ULCAgICBPRkYoc3RlX2xpbmVubyksIFJFQURPTkxZfSwKQEAgLTE4Miw3ICsxODAsNyBAQAogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9wYXJhbXMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhc2RsX3NlcSAqYXJncyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpbnQgcG9zKTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKTsKK3N0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzLCBhcmd1bWVudHNfdHksIGV4cHJfdHkpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCkBAIC0yNzEsNyArMjY5LDYgQEAKICAgICB9CiAKICAgICBzdC0+c3RfdG9wID0gc3QtPnN0X2N1cjsKLSAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgPSBPUFRfVE9QTEVWRUw7CiAgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKICAgICBjYXNlIE1vZHVsZV9raW5kOgogICAgICAgICBzZXEgPSBtb2QtPnYuTW9kdWxlLmJvZHk7CkBAIC0xMDg2LDEzICsxMDgzLDEzIEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfS1dPTkxZREVGQVVMVFMoU1QsIEtXX0RFRkFVTFRTKSB7IFwKKyNkZWZpbmUgVklTSVRfU0VRX1dJVEhfTlVMTChTVCwgVFlQRSwgU0VRKSB7ICAgICBcCiAgICAgaW50IGkgPSAwOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChLV19ERUZBVUxUUyk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAorICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsgXAotICAgICAgICBleHByX3R5IGVsdCA9IChleHByX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCisgICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIWVsdCkgY29udGludWU7IC8qIGNhbiBiZSBOVUxMICovIFwKLSAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9leHByKChTVCksIGVsdCkpIFwKKyAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCBlbHQpKSBcCiAgICAgICAgICAgICBWSVNJVF9RVUlUKChTVCksIDApOyAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CkBAIC0xMTQ5LDkgKzExNDYsOSBAQAogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5hcmdzLT5kZWZhdWx0cykKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5GdW5jdGlvbkRlZi5hcmdzLT5kZWZhdWx0cyk7CiAgICAgICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLmFyZ3MtPmt3X2RlZmF1bHRzKQotICAgICAgICAgICAgVklTSVRfS1dPTkxZREVGQVVMVFMoc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cyk7Ci0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3QsIHMpKQorICAgICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwgcy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3QsIHMsIHMtPnYuRnVuY3Rpb25EZWYuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpKQogICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KQogICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KTsKQEAgLTExNzAsMTAgKzExNjcsNiBAQAogICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5DbGFzc0RlZi5iYXNlcyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwga2V5d29yZCwgcy0+di5DbGFzc0RlZi5rZXl3b3Jkcyk7Ci0gICAgICAgIGlmIChzLT52LkNsYXNzRGVmLnN0YXJhcmdzKQotICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MpOwotICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5rd2FyZ3MpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5DbGFzc0RlZi5rd2FyZ3MpOwogICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCkKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIHMtPnYuQ2xhc3NEZWYubmFtZSwgQ2xhc3NCbG9jaywKQEAgLTEyNDUsMjEgKzEyMzgsOSBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEltcG9ydF9raW5kOgogICAgICAgICBWSVNJVF9TRVEoc3QsIGFsaWFzLCBzLT52LkltcG9ydC5uYW1lcyk7Ci0gICAgICAgIC8qIFhYWCBEb24ndCBoYXZlIHRoZSBsaW5lbm8gYXZhaWxhYmxlIGluc2lkZQotICAgICAgICAgICB2aXNpdF9hbGlhcyAqLwotICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX3Vub3B0aW1pemVkICYmICFzdC0+c3RfY3VyLT5zdGVfb3B0X2xpbmVubykgewotICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX29wdF9saW5lbm8gPSBzLT5saW5lbm87Ci0gICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfb3B0X2NvbF9vZmZzZXQgPSBzLT5jb2xfb2Zmc2V0OwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW1wb3J0RnJvbV9raW5kOgogICAgICAgICBWSVNJVF9TRVEoc3QsIGFsaWFzLCBzLT52LkltcG9ydEZyb20ubmFtZXMpOwotICAgICAgICAvKiBYWFggRG9uJ3QgaGF2ZSB0aGUgbGluZW5vIGF2YWlsYWJsZSBpbnNpZGUKLSAgICAgICAgICAgdmlzaXRfYWxpYXMgKi8KLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV91bm9wdGltaXplZCAmJiAhc3QtPnN0X2N1ci0+c3RlX29wdF9saW5lbm8pIHsKLSAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9vcHRfbGluZW5vID0gcy0+bGluZW5vOwotICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX29wdF9jb2xfb2Zmc2V0ID0gcy0+Y29sX29mZnNldDsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdsb2JhbF9raW5kOiB7CiAgICAgICAgIGludCBpOwpAQCAtMTMzNSw2ICsxMzE2LDM5IEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuV2l0aC5pdGVtcyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5XaXRoLmJvZHkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSwgREVGX0xPQ0FMKSkKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBpZiAocy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MtPmRlZmF1bHRzKQorICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpOworICAgICAgICBpZiAocy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MtPmt3X2RlZmF1bHRzKQorICAgICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MtPmt3X2RlZmF1bHRzKTsKKyAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdCwgcywgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnMpKQorICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgIGlmIChzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QpCisgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCk7CisgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQmxvY2ssICh2b2lkICopcywgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpKQorICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSk7CisgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgVklTSVRfU0VRKHN0LCB3aXRoaXRlbSwgcy0+di5Bc3luY1dpdGguaXRlbXMpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNXaXRoLmJvZHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzeW5jRm9yLnRhcmdldCk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzeW5jRm9yLml0ZXIpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGb3IuYm9keSk7CisgICAgICAgIGlmIChzLT52LkFzeW5jRm9yLm9yZWxzZSkKKyAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5Bc3luY0Zvci5vcmVsc2UpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgVklTSVRfUVVJVChzdCwgMSk7CiB9CkBAIC0xMzY0LDggKzEzNzgsNyBAQAogICAgICAgICBpZiAoZS0+di5MYW1iZGEuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuTGFtYmRhLmFyZ3MtPmRlZmF1bHRzKTsKICAgICAgICAgaWYgKGUtPnYuTGFtYmRhLmFyZ3MtPmt3X2RlZmF1bHRzKQotICAgICAgICAgICAgVklTSVRfS1dPTkxZREVGQVVMVFMoc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgICAgICBWSVNJVF9TRVFfV0lUSF9OVUxMKHN0LCBleHByLCBlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cyk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIGxhbWJkYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIGUtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jb2xfb2Zmc2V0KSkKQEAgLTEzODIsNyArMTM5NSw3IEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LklmRXhwLm9yZWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGljdF9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuRGljdC5rZXlzKTsKKyAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwgZS0+di5EaWN0LmtleXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuRGljdC52YWx1ZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldF9raW5kOgpAQCAtMTQxMyw2ICsxNDI2LDEwIEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5jb21wYXJhdG9ycyk7CkBAIC0xNDIwLDExICsxNDM3LDcgQEAKICAgICBjYXNlIENhbGxfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ2FsbC5mdW5jKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkNhbGwuYXJncyk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKLSAgICAgICAgaWYgKGUtPnYuQ2FsbC5zdGFyYXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwuc3RhcmFyZ3MpOwotICAgICAgICBpZiAoZS0+di5DYWxsLmt3YXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwua3dhcmdzKTsKKyAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICBjYXNlIFN0cl9raW5kOgpAQCAtMTUxNywxMCArMTUzMCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcykKK3N5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c190eSBhLCBleHByX3R5IHJldHVybnMpCiB7Ci0gICAgYXJndW1lbnRzX3R5IGEgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7Ci0KICAgICBpZiAoYS0+YXJncyAmJiAhc3ltdGFibGVfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3QsIGEtPmFyZ3MpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoYS0+dmFyYXJnICYmIGEtPnZhcmFyZy0+YW5ub3RhdGlvbikKQEAgLTE1MjksNyArMTU0MSw3IEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBhLT5rd2FyZy0+YW5ub3RhdGlvbik7CiAgICAgaWYgKGEtPmt3b25seWFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0LCBhLT5rd29ubHlhcmdzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYucmV0dXJucykKKyAgICBpZiAocmV0dXJucykKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYucmV0dXJucyk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNjE1LDcgKzE2MjcsNiBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHN0b3JlX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgc3QtPnN0X2N1ci0+c3RlX3Vub3B0aW1pemVkIHw9IE9QVF9JTVBPUlRfU1RBUjsKICAgICAgICAgUHlfREVDUkVGKHN0b3JlX25hbWUpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKaW5kZXggMjkwZWVjMS4uZjYwMGJhZiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5c21vZHVsZS5jCisrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwpAQCAtNjQ1LDYgKzY0NSw0OCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX3NldF9jb3JvdXRpbmVfd3JhcHBlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKndyYXBwZXIpCit7CisgICAgaWYgKHdyYXBwZXIgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sod3JhcHBlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGV4cGVjdGVkLCBnb3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUod3JhcHBlciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKHdyYXBwZXIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKE5VTEwpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2MsCisic2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXBwZXIpXG5cCitcblwKK1NldCBhIHdyYXBwZXIgZm9yIGNvcm91dGluZSBvYmplY3RzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0X2Nvcm91dGluZV93cmFwcGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqd3JhcHBlciA9IF9QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcigpOworICAgIGlmICh3cmFwcGVyID09IE5VTEwpIHsKKyAgICAgICAgd3JhcHBlciA9IFB5X05vbmU7CisgICAgfQorICAgIFB5X0lOQ1JFRih3cmFwcGVyKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworUHlEb2NfU1RSVkFSKGdldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2MsCisiZ2V0X2Nvcm91dGluZV93cmFwcGVyKClcblwKK1xuXAorUmV0dXJuIHRoZSB3cmFwcGVyIGZvciBjb3JvdXRpbmUgb2JqZWN0cyBzZXQgYnkgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlci4iCispOworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgSGFzaF9JbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGhhc2hfaW5mb19kb2MsCkBAIC03NzIsNiArODE0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWEgaW5kZXhpbmcsIHRoZSByZXN0IGFyZSBuYW1lIG9ubHkgKi8KIH07CiAKKy8qIERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgYWJvdXQgR2V0VmVyc2lvbkV4IGFzIHRoZSByZXN1bHQgaXMKKyAgIGJlaW5nIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBjYWxsZXIsIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgIHVzaW5nIGl0IGNvcnJlY3RseS4gKi8KKyNwcmFnbWEgd2FybmluZyhwdXNoKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikKKwogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19nZXR3aW5kb3dzdmVyc2lvbihQeU9iamVjdCAqc2VsZikKIHsKQEAgLTgwMyw2ICs4NTEsOCBAQAogICAgIHJldHVybiB2ZXJzaW9uOwogfQogCisjcHJhZ21hIHdhcm5pbmcocG9wKQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAjaWZkZWYgSEFWRV9ETE9QRU4KQEAgLTExMjEsNiArMTE3MSwxNiBAQAogIl9jbGVhcl90eXBlX2NhY2hlKCkgLT4gTm9uZVxuXAogQ2xlYXIgdGhlIGludGVybmFsIHR5cGUgbG9va3VwIGNhY2hlLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2lzX2ZpbmFsaXppbmcoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoX1B5X0ZpbmFsaXppbmcgIT0gTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihpc19maW5hbGl6aW5nX2RvYywKKyJpc19maW5hbGl6aW5nKClcblwKK1JldHVybiBUcnVlIGlmIFB5dGhvbiBpcyBleGl0aW5nLiIpOworCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBzeXNfbWV0aG9kc1tdID0gewogICAgIC8qIE1pZ2h0IGFzIHdlbGwga2VlcCB0aGlzIGluIGFscGhhYmV0aWMgb3JkZXIgKi8KQEAgLTExNjcsNiArMTIyNyw3IEBACiAgICAgIGdldHdpbmRvd3N2ZXJzaW9uX2RvY30sCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIHsiaW50ZXJuIiwgICAgICAgICAgc3lzX2ludGVybiwgICAgIE1FVEhfVkFSQVJHUywgaW50ZXJuX2RvY30sCisgICAgeyJpc19maW5hbGl6aW5nIiwgICBzeXNfaXNfZmluYWxpemluZywgTUVUSF9OT0FSR1MsIGlzX2ZpbmFsaXppbmdfZG9jfSwKICNpZmRlZiBVU0VfTUFMTE9QVAogICAgIHsibWRlYnVnIiwgICAgICAgICAgc3lzX21kZWJ1ZywgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpAQCAtMTE5Niw2ICsxMjU3LDEwIEBACiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LAogICAgIHsiX2RlYnVnbWFsbG9jc3RhdHMiLCBzeXNfZGVidWdtYWxsb2NzdGF0cywgTUVUSF9OT0FSR1MsCiAgICAgIGRlYnVnbWFsbG9jc3RhdHNfZG9jfSwKKyAgICB7InNldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19zZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTywKKyAgICAgc2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCisgICAgeyJnZXRfY29yb3V0aW5lX3dyYXBwZXIiLCBzeXNfZ2V0X2Nvcm91dGluZV93cmFwcGVyLCBNRVRIX05PQVJHUywKKyAgICAgZ2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE2NzAsOCArMTczNSw4IEBACiAgICAgdGhlIHNoZWxsIGFscmVhZHkgcHJldmVudHMgdGhhdC4gKi8KICNpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHsKLSAgICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgICAgIGlmIChmc3RhdChmaWxlbm8oc3RkaW4pLCAmc2IpID09IDAgJiYKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzYjsKKyAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKGZpbGVubyhzdGRpbiksICZzYikgPT0gMCAmJgogICAgICAgICAgICAgU19JU0RJUihzYi5zdF9tb2RlKSkgewogICAgICAgICAgICAgLyogVGhlcmUncyBub3RoaW5nIG1vcmUgd2UgY2FuIGRvLiAqLwogICAgICAgICAgICAgLyogUHlfRmF0YWxFcnJvcigpIHdpbGwgY29yZSBkdW1wLCBzbyBqdXN0IGV4aXQuICovCkBAIC0xNjgxLDcgKzE3NDYsNyBAQAogICAgIH0KICNlbmRpZgogCi0gICAgLyogc3RkaW4vc3Rkb3V0L3N0ZGVyciBhcmUgbm93IHNldCBieSBweXRob25ydW4uYyAqLworICAgIC8qIHN0ZGluL3N0ZG91dC9zdGRlcnIgYXJlIHNldCBpbiBweWxpZmVjeWNsZS5jICovCiAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HX0JPUlJPVygiX19kaXNwbGF5aG9va19fIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbVN0cmluZyhzeXNkaWN0LCAiZGlzcGxheWhvb2siKSk7CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkLmMgYi9QeXRob24vdGhyZWFkLmMKaW5kZXggNGU2OTVhZS4uNDRjMDcxZSAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZC5jCisrKyBiL1B5dGhvbi90aHJlYWQuYwpAQCAtNDMxLDcgKzQzMSw3IEBACiAgICAgICYmIGRlZmluZWQoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04pKQogICAgIHZhbHVlID0gTlVMTDsKICAgICBsZW4gPSBjb25mc3RyKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKLSAgICBpZiAoMSA8IGxlbiAmJiBsZW4gPCBzaXplb2YoYnVmZmVyKSkgeworICAgIGlmICgxIDwgbGVuICYmIChzaXplX3QpbGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKICAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWZmZXIsIGxlbi0xKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9mb29iYXIuaCBiL1B5dGhvbi90aHJlYWRfZm9vYmFyLmgKaW5kZXggZDJiNzhjNS4uZWE5NmY5YyAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9mb29iYXIuaAorKysgYi9QeXRob24vdGhyZWFkX2Zvb2Jhci5oCkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICogSW5pdGlhbGl6YXRpb24uCiAgKi8KQEAgLTYxLDEwICs2MCwxOCBAQAogaW50CiBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKIHsKKyAgICByZXR1cm4gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIHdhaXRmbGFnID8gLTEgOiAwLCAwKTsKK30KKworUHlMb2NrU3RhdHVzCitQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIFBZX1RJTUVPVVRfVCBtaWNyb3NlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludHJfZmxhZykKK3sKICAgICBpbnQgc3VjY2VzczsKIAotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOworICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoJXAsICVsbGQsICVkKSBjYWxsZWRcbiIsIGxvY2ssIG1pY3Jvc2Vjb25kcywgaW50cl9mbGFnKSk7CisgICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZCglcCwgJWxsZCwgJWQpIC0+ICVkXG4iLAorCSAgICAgbG9jaywgbWljcm9zZWNvbmRzLCBpbnRyX2ZsYWcsIHN1Y2Nlc3MpKTsKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIApAQCAtNzMsMyArODAsNTMgQEAKIHsKICAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKIH0KKworLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSBuZWVkZWQgaWYgbmF0aXZlIFRMUyBzdXBwb3J0IGV4aXN0cyAqLworI2RlZmluZSBQeV9IQVZFX05BVElWRV9UTFMKKworI2lmZGVmIFB5X0hBVkVfTkFUSVZFX1RMUworaW50CitQeVRocmVhZF9jcmVhdGVfa2V5KHZvaWQpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkCitQeVRocmVhZF9kZWxldGVfa2V5KGludCBrZXkpCit7CisKK30KKworaW50CitQeVRocmVhZF9zZXRfa2V5X3ZhbHVlKGludCBrZXksIHZvaWQgKnZhbHVlKQoreworICAgIGludCBvazsKKworICAgIC8qIEEgZmFpbHVyZSBpbiB0aGlzIGNhc2UgcmV0dXJucyAtMSAqLworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCAqCitQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKGludCBrZXkpCit7CisgICAgdm9pZCAqcmVzdWx0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAorUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZShpbnQga2V5KQoreworCit9CisKK3ZvaWQKK1B5VGhyZWFkX1JlSW5pdFRMUyh2b2lkKQoreworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAppbmRleCBkOWY3Yzc2Li4yN2UwZGM4IDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAorKysgYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaApAQCAtNjA4LDcgKzYwOCwxNSBAQAogewogICAgIHB0aHJlYWRfa2V5X3Qga2V5OwogICAgIGludCBmYWlsID0gcHRocmVhZF9rZXlfY3JlYXRlKCZrZXksIE5VTEwpOwotICAgIHJldHVybiBmYWlsID8gLTEgOiBrZXk7CisgICAgaWYgKGZhaWwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoa2V5ID4gSU5UX01BWCkgeworICAgICAgICAvKiBJc3N1ZSAjMjIyMDY6IGhhbmRsZSBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgIHB0aHJlYWRfa2V5X2RlbGV0ZShrZXkpOworICAgICAgICBlcnJubyA9IEVOT01FTTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gKGludClrZXk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCAyYmVhMjllLi43MWZmZWNkIDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0xMyw3ICsxMyw3IEBACiAKICNkZWZpbmUgT0ZGKHgpIG9mZnNldG9mKFB5VHJhY2ViYWNrT2JqZWN0LCB4KQogCi0jZGVmaW5lIFBVVFMoZmQsIHN0cikgd3JpdGUoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSBfUHlfd3JpdGVfbm9yYWlzZShmZCwgc3RyLCAoaW50KXN0cmxlbihzdHIpKQogI2RlZmluZSBNQVhfU1RSSU5HX0xFTkdUSCA1MDAKICNkZWZpbmUgTUFYX0ZSQU1FX0RFUFRIIDEwMAogI2RlZmluZSBNQVhfTlRIUkVBRFMgMTAwCkBAIC0yMzEsNyArMjMxLDcgQEAKICAgICAgICAgfQogICAgICAgICBzdHJjcHkobmFtZWJ1ZiwgUHlCeXRlc19BU19TVFJJTkcocGF0aCkpOwogICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgIGlmIChzdHJsZW4obmFtZWJ1ZikgIT0gbGVuKQorICAgICAgICBpZiAoc3RybGVuKG5hbWVidWYpICE9IChzaXplX3QpbGVuKQogICAgICAgICAgICAgY29udGludWU7IC8qIHYgY29udGFpbnMgJ1wwJyAqLwogICAgICAgICBpZiAobGVuID4gMCAmJiBuYW1lYnVmW2xlbi0xXSAhPSBTRVApCiAgICAgICAgICAgICBuYW1lYnVmW2xlbisrXSA9IFNFUDsKQEAgLTUxMiw3ICs1MTIsNyBAQAogICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlICh2YWx1ZSk7CiAgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7CisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKIH0KIAogLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGFkZWNpbWFsIG9mICd3aWR0aCcgZGlnaXRzLApAQCAtNTMyLDcgKzUzMiw3IEBACiAgICAgICAgIGxlbisrOwogICAgIH0gd2hpbGUgKGxlbiA8IHdpZHRoIHx8IHZhbHVlKTsKICAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOwogfQogCiAvKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCkBAIC01ODIsMTUgKzU4MiwxNiBAQAogICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2ggPSB3c3RyW2ldOwotICAgICAgICBpZiAoY2ggPCAxMjgpIHsKKyAgICAgICAgaWYgKCcgJyA8PSBjaCAmJiBjaCA8PSAxMjYpIHsKKyAgICAgICAgICAgIC8qIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGNoYXIgYyA9IChjaGFyKWNoOwotICAgICAgICAgICAgd3JpdGUoZmQsICZjLCAxKTsKKyAgICAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCAmYywgMSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweGZmKSB7CisgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKICAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmZmZikgeworICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKICAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKICAgICAgICAgfQpAQCAtNjE4LDkgKzYxOSw5IEBACiAgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19maWxlbmFtZSAhPSBOVUxMCiAgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19maWxlbmFtZSkpCiAgICAgewotICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgICAgIFBVVFMoZmQsICJcIiIpOwogICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7Ci0gICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICAgICAgUFVUUyhmZCwgIlwiIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOwogICAgIH0KQEAgLTYzNyw3ICs2MzgsNyBAQAogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOwogCi0gICAgd3JpdGUoZmQsICJcbiIsIDEpOworICAgIFBVVFMoZmQsICJcbiIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjY3LDYgKzY2OCwxMiBAQAogICAgIH0KIH0KIAorLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGEgUHl0aG9uIHRocmVhZCBpbnRvIGZkLiBVc2Ugd3JpdGUoKSB0byB3cml0ZSB0aGUKKyAgIHRyYWNlYmFjayBhbmQgcmV0cnkgaWYgd3JpdGUoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGgKKyAgIEVJTlRSKSwgYnV0IGRvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlci4KKworICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSB0byBjYWxsIFB5RXJyX0NoZWNrU2lnbmFscygpIHRvIGNhbGwgUHl0aG9uIHNpZ25hbAorICAgaGFuZGxlcnMgaWYgc2lnbmFscyB3ZXJlIHJlY2VpdmVkLiAqLwogdm9pZAogX1B5X0R1bXBUcmFjZWJhY2soaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7CkBAIC02ODUsMTAgKzY5MiwxNiBAQAogICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKICAgICBlbHNlCiAgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKLSAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgc2l6ZW9mKGxvbmcpKjIpOworICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YodW5zaWduZWQgbG9uZykqMik7CiAgICAgUFVUUyhmZCwgIiAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKIH0KIAorLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGFsbCBQeXRob24gdGhyZWFkcyBpbnRvIGZkLiBVc2Ugd3JpdGUoKSB0byB3cml0ZSB0aGUKKyAgIHRyYWNlYmFjayBhbmQgcmV0cnkgaWYgd3JpdGUoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGgKKyAgIEVJTlRSKSwgYnV0IGRvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlci4KKworICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSB0byBjYWxsIFB5RXJyX0NoZWNrU2lnbmFscygpIHRvIGNhbGwgUHl0aG9uIHNpZ25hbAorICAgaGFuZGxlcnMgaWYgc2lnbmFscyB3ZXJlIHJlY2VpdmVkLiAqLwogY29uc3QgY2hhcioKIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQpAQCAtNzA0LDEwICs3MTcsMTEgQEAKICAgICAvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgZWFjaCB0aHJlYWQgKi8KICAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOwogICAgIG50aHJlYWRzID0gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgZG8KICAgICB7CiAgICAgICAgIGlmIChudGhyZWFkcyAhPSAwKQotICAgICAgICAgICAgd3JpdGUoZmQsICJcbiIsIDEpOworICAgICAgICAgICAgUFVUUyhmZCwgIlxuIik7CiAgICAgICAgIGlmIChudGhyZWFkcyA+PSBNQVhfTlRIUkVBRFMpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MTcsNiArNzMxLDcgQEAKICAgICAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXh0KHRzdGF0ZSk7CiAgICAgICAgIG50aHJlYWRzKys7CiAgICAgfSB3aGlsZSAodHN0YXRlICE9IE5VTEwpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCAyNzc1MTUxLi5mMmE2MTVjIDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xLDUgKzEsNSBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjQuMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjUuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTUsOCArMTUsNiBAQAogCiBPbiBVbml4LCBMaW51eCwgQlNELCBPU1gsIGFuZCBDeWd3aW46CiAKLU5ldyB0ZXh0Ci0KICAgICAuL2NvbmZpZ3VyZQogICAgIG1ha2UKICAgICBtYWtlIHRlc3QKQEAgLTUyLDkgKzUwLDkgQEAKIC0tLS0tLS0tLS0KIAogV2UgdHJ5IHRvIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNCIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy41IiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy40L3doYXRzbmV3LzMuNC5odG1sCisgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvd2hhdHNuZXcvMy41Lmh0bWwKIAogRm9yIGEgbW9yZSBkZXRhaWxlZCBjaGFuZ2UgbG9nLCByZWFkIE1pc2MvTkVXUyAodGhvdWdoIHRoaXMgZmlsZSwgdG9vLCBpcwogaW5jb21wbGV0ZSwgYW5kIGFsc28gZG9lc24ndCBsaXN0IGFueXRoaW5nIG1lcmdlZCBpbiBmcm9tIHRoZSAyLjcgcmVsZWFzZSB1bmRlcgpAQCAtNjcsOSArNjUsOSBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi1Eb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy40IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKK0RvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvCisgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtOTQsNyArOTIsNyBAQAogQSBzb3VyY2UtdG8tc291cmNlIHRyYW5zbGF0aW9uIHRvb2wsICIydG8zIiwgY2FuIHRha2UgY2FyZSBvZiB0aGUgbXVuZGFuZSB0YXNrCiBvZiBjb252ZXJ0aW5nIGxhcmdlIGFtb3VudHMgb2Ygc291cmNlIGNvZGUuICBJdCBpcyBub3QgYSBjb21wbGV0ZSBzb2x1dGlvbiBidXQKIGlzIGNvbXBsZW1lbnRlZCBieSB0aGUgZGVwcmVjYXRpb24gd2FybmluZ3MgaW4gMi42LiAgU2VlCi1odHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKQEAgLTEzMiw3ICsxMzAsNyBAQAogSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwogIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy40IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE2OCw3ICsxNjYsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQyOSBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjkvCitTZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKaW5kZXggNGNhNTYwNC4uZTNjMmRiZCAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdApAQCAtMSwyMSArMSw5IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJidWlsZG1zaSIgc3RlcC4NCitzZXRsb2NhbA0KIA0KLWNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQNCi1AcmVtIGJ1aWxkIHJlbGVhc2UgdmVyc2lvbnMgb2YgdGhpbmdzDQotY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCINCitwdXNoZA0KIA0KLUByZW0gYnVpbGQgUHl0aG9uDQotbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMg0KK0ByZW0gYnVpbGQgYm90aCBzbmFwc2hvdCBNU0lzDQorY2FsbCAiJX5kcDAuLlxtc2lcYnVpbGQuYmF0IiAteDg2IC14NjQNCiANCi1AcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uDQotYmFzaC5leGUgLWMgJ2NkIERvYzttYWtlIFBZVEhPTj1weXRob24yLjUgdXBkYXRlIGh0bWxoZWxwJw0KLSIlUHJvZ3JhbUZpbGVzJVxIVE1MIEhlbHAgV29ya3Nob3BcaGhjLmV4ZSIgRG9jXGJ1aWxkXGh0bWxoZWxwXHB5dGhvbjI2YTMuaGhwDQotDQotQHJlbSBidWlsZCB0aGUgTVNJIGZpbGUNCi1jZCBQQw0KLW5tYWtlIC9mIGljb25zLm1haw0KLWNkIC4uXFRvb2xzXG1zaQ0KLWRlbCAqLm1zaQ0KLW5tYWtlIC9mIG1zaXN1cHBvcnQubWFrDQotJUhPU1RfUFlUSE9OJSBtc2kucHkNCi0NCitwb3BkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2xpbmljL2NsaW5pYy5weSBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKaW5kZXggYzZhYzNiOS4uM2NlMzU4NyAxMDA3NTUKLS0tIGEvVG9vbHMvY2xpbmljL2NsaW5pYy5weQorKysgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CkBAIC0yNiw4ICsyNiwxMiBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHV1aWQKIAorZnJvbSB0eXBlcyBpbXBvcnQgKgorTm9uZVR5cGUgPSB0eXBlKE5vbmUpCisKICMgVE9ETzoKICMKICMgc29vbjoKQEAgLTY2LDYgKzcwLDEwIEBACiAKIHVua25vd24gPSBVbmtub3duKCkKIAorc2lnX2VuZF9tYXJrZXIgPSAnLS0nCisKKworX3RleHRfYWNjdW11bGF0b3JfbnQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJfdGV4dF9hY2N1bXVsYXRvciIsICJ0ZXh0IGFwcGVuZCBvdXRwdXQiKQogCiBkZWYgX3RleHRfYWNjdW11bGF0b3IoKToKICAgICB0ZXh0ID0gW10KQEAgLTczLDkgKzgxLDExIEBACiAgICAgICAgIHMgPSAnJy5qb2luKHRleHQpCiAgICAgICAgIHRleHQuY2xlYXIoKQogICAgICAgICByZXR1cm4gcwotICAgIHJldHVybiB0ZXh0LCB0ZXh0LmFwcGVuZCwgb3V0cHV0CisgICAgcmV0dXJuIF90ZXh0X2FjY3VtdWxhdG9yX250KHRleHQsIHRleHQuYXBwZW5kLCBvdXRwdXQpCiAKIAordGV4dF9hY2N1bXVsYXRvcl9udCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoInRleHRfYWNjdW11bGF0b3IiLCAidGV4dCBhcHBlbmQiKQorCiBkZWYgdGV4dF9hY2N1bXVsYXRvcigpOgogICAgICIiIgogICAgIENyZWF0ZXMgYSBzaW1wbGUgdGV4dCBhY2N1bXVsYXRvciAvIGpvaW5lci4KQEAgLTg4LDcgKzk4LDcgQEAKICAgICAgICBlbXB0aWVzIHRoZSBhY2N1bXVsYXRvci4KICAgICAiIiIKICAgICB0ZXh0LCBhcHBlbmQsIG91dHB1dCA9IF90ZXh0X2FjY3VtdWxhdG9yKCkKLSAgICByZXR1cm4gYXBwZW5kLCBvdXRwdXQKKyAgICByZXR1cm4gdGV4dF9hY2N1bXVsYXRvcl9udChhcHBlbmQsIG91dHB1dCkKIAogCiBkZWYgd2Fybl9vcl9mYWlsKGZhaWw9RmFsc2UsICphcmdzLCBmaWxlbmFtZT1Ob25lLCBsaW5lX251bWJlcj1Ob25lKToKQEAgLTUyMSw2ICs1MzEsNTggQEAKICAgICByZXR1cm4gcwogCiAKK2RlZiB3cmFwX2RlY2xhcmF0aW9ucyh0ZXh0LCBsZW5ndGg9NzgpOgorICAgICIiIgorICAgIEEgc2ltcGxlLW1pbmRlZCB0ZXh0IHdyYXBwZXIgZm9yIEMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorCisgICAgSXQgdmlld3MgYSBkZWNsYXJhdGlvbiBsaW5lIGFzIGxvb2tpbmcgbGlrZSB0aGlzOgorICAgICAgICB4eHh4eHh4eCh4eHh4eHh4eHgseHh4eHh4eHh4KQorICAgIElmIGNhbGxlZCB3aXRoIGxlbmd0aD0zMCwgaXQgd291bGQgd3JhcCB0aGF0IGxpbmUgaW50bworICAgICAgICB4eHh4eHh4eCh4eHh4eHh4eHgsCisgICAgICAgICAgICAgICAgIHh4eHh4eHh4eCkKKyAgICAoSWYgdGhlIGRlY2xhcmF0aW9uIGhhcyB6ZXJvIG9yIG9uZSBwYXJhbWV0ZXJzLCB0aGlzCisgICAgZnVuY3Rpb24gd29uJ3Qgd3JhcCBpdC4pCisKKyAgICBJZiB0aGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSwgaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8KKyAgICBzdGFydCBmcm9tIHNjcmF0Y2ggd2l0aCBhIG1vcmUgc29waGlzdGljYXRlZCBhbGdvcml0aG0sCisgICAgcmF0aGVyIHRoYW4gdHJ5IGFuZCBpbXByb3ZlL2RlYnVnIHRoaXMgZHVtYiBsaXR0bGUgZnVuY3Rpb24uCisgICAgIiIiCisgICAgbGluZXMgPSBbXQorICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXQoJ1xuJyk6CisgICAgICAgIHByZWZpeCwgXywgYWZ0ZXJfbF9wYXJlbiA9IGxpbmUucGFydGl0aW9uKCcoJykKKyAgICAgICAgaWYgbm90IGFmdGVyX2xfcGFyZW46CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhcmFtZXRlcnMsIF8sIGFmdGVyX3JfcGFyZW4gPSBhZnRlcl9sX3BhcmVuLnBhcnRpdGlvbignKScpCisgICAgICAgIGlmIG5vdCBfOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnLCcgbm90IGluIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhcmFtZXRlcnMgPSBbeC5zdHJpcCgpICsgIiwgIiBmb3IgeCBpbiBwYXJhbWV0ZXJzLnNwbGl0KCcsJyldCisgICAgICAgIHByZWZpeCArPSAiKCIKKyAgICAgICAgaWYgbGVuKHByZWZpeCkgPCBsZW5ndGg6CisgICAgICAgICAgICBzcGFjZXMgPSAiICIgKiBsZW4ocHJlZml4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3BhY2VzID0gIiAiICogNAorCisgICAgICAgIHdoaWxlIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBsaW5lID0gcHJlZml4CisgICAgICAgICAgICBmaXJzdCA9IFRydWUKKyAgICAgICAgICAgIHdoaWxlIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgKG5vdCBmaXJzdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgKGxlbihsaW5lKSArIGxlbihwYXJhbWV0ZXJzWzBdKSA+IGxlbmd0aCkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbmUgKz0gcGFyYW1ldGVycy5wb3AoMCkKKyAgICAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoIiwgIikgKyAiKSIgKyBhZnRlcl9yX3BhcmVuCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZS5yc3RyaXAoKSkKKyAgICAgICAgICAgIHByZWZpeCA9IHNwYWNlcworICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCisKKwogY2xhc3MgQ0xhbmd1YWdlKExhbmd1YWdlKToKIAogICAgIGJvZHlfcHJlZml4ICAgPSAiIyIKQEAgLTU1NSw4ICs2MTcsMTMgQEAKICAgICAgICAgICAgIGFkZChxdW90ZWRfZm9yX2Nfc3RyaW5nKGxpbmUpKQogICAgICAgICAgICAgYWRkKCdcXG4iXG4nKQogCi0gICAgICAgIHRleHQucG9wKCkKLSAgICAgICAgYWRkKCciJykKKyAgICAgICAgaWYgdGV4dFstMl0gPT0gc2lnX2VuZF9tYXJrZXI6CisgICAgICAgICAgICAjIElmIHdlIG9ubHkgaGF2ZSBhIHNpZ25hdHVyZSwgYWRkIHRoZSBibGFuayBsaW5lIHRoYXQgdGhlCisgICAgICAgICAgICAjIF9fdGV4dF9zaWduYXR1cmVfXyBnZXR0ZXIgZXhwZWN0cyB0byBiZSB0aGVyZS4KKyAgICAgICAgICAgIGFkZCgnIlxcbiInKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dC5wb3AoKQorICAgICAgICAgICAgYWRkKCciJykKICAgICAgICAgcmV0dXJuICcnLmpvaW4odGV4dCkKIAogICAgIGRlZiBvdXRwdXRfdGVtcGxhdGVzKHNlbGYsIGYpOgpAQCAtNTg5LDggKzY1Niw2IEBACiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKICAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKLSAgICAgICAgICAgICAgaXNpbnN0YW5jZShjb252ZXJ0ZXJzWzBdLCBvYmplY3RfY29udmVydGVyKSBhbmQKLSAgICAgICAgICAgICAgY29udmVydGVyc1swXS5mb3JtYXRfdW5pdCA9PSAnTycgYW5kCiAgICAgICAgICAgICAgIG5vdCBuZXdfb3JfaW5pdCkKIAogICAgICAgICAjIHdlIGhhdmUgdG8gc2V0IHRoZXNlIHRoaW5ncyBiZWZvcmUgd2UncmUgZG9uZToKQEAgLTY5NiwyMiArNzYxLDM4IEBACiAgICAgICAgIGVsaWYgbWV0aF9vOgogICAgICAgICAgICAgZmxhZ3MgPSAiTUVUSF9PIgogCi0gICAgICAgICAgICBtZXRoX29fcHJvdG90eXBlID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKLSAgICAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe2ltcGxfcGFyYW1ldGVyc30pCi0gICAgICAgICAgICAgICAgIiIiKQorICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoY29udmVydGVyc1swXSwgb2JqZWN0X2NvbnZlcnRlcikgYW5kCisgICAgICAgICAgICAgICAgY29udmVydGVyc1swXS5mb3JtYXRfdW5pdCA9PSAnTycpOgorICAgICAgICAgICAgICAgIG1ldGhfb19wcm90b3R5cGUgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtpbXBsX3BhcmFtZXRlcnN9KQorICAgICAgICAgICAgICAgICAgICAiIiIpCiAKLSAgICAgICAgICAgIGlmIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlcjoKLSAgICAgICAgICAgICAgICAjIG1hcHMgcGVyZmVjdGx5IHRvIE1FVEhfTywgZG9lc24ndCBuZWVkIGEgcmV0dXJuIGNvbnZlcnRlci4KLSAgICAgICAgICAgICAgICAjIHNvIHdlIHNraXAgbWFraW5nIGEgcGFyc2UgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAjIGFuZCBjYWxsIGRpcmVjdGx5IGludG8gdGhlIGltcGwgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgaW1wbF9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX2RlZmluaXRpb24gPSAnJwotICAgICAgICAgICAgICAgIGltcGxfZGVmaW5pdGlvbiA9IG1ldGhfb19wcm90b3R5cGUKKyAgICAgICAgICAgICAgICBpZiBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXI6CisgICAgICAgICAgICAgICAgICAgICMgbWFwcyBwZXJmZWN0bHkgdG8gTUVUSF9PLCBkb2Vzbid0IG5lZWQgYSByZXR1cm4gY29udmVydGVyLgorICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIHNraXAgbWFraW5nIGEgcGFyc2UgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgY2FsbCBkaXJlY3RseSBpbnRvIHRoZSBpbXBsIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICBpbXBsX3Byb3RvdHlwZSA9IHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfZGVmaW5pdGlvbiA9ICcnCisgICAgICAgICAgICAgICAgICAgIGltcGxfZGVmaW5pdGlvbiA9IG1ldGhfb19wcm90b3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFNMSUdIVCBIQUNLCisgICAgICAgICAgICAgICAgICAgICMgdXNlIGltcGxfcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlciBoZXJlIQorICAgICAgICAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gbWV0aF9vX3Byb3RvdHlwZQorICAgICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUpCisKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTTElHSFQgSEFDSwotICAgICAgICAgICAgICAgICMgdXNlIGltcGxfcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlciBoZXJlIQotICAgICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBtZXRoX29fcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlKQorICAgICAgICAgICAgICAgIGFyZ25hbWUgPSAnYXJnJworICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNbMF0ubmFtZSA9PSBhcmduYW1lOgorICAgICAgICAgICAgICAgICAgICBhcmduYW1lICs9ICdfJworICAgICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0IColcykKKyAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSkKKworICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUsIGluZGVudD00KSkKIAogICAgICAgICBlbGlmIGhhc19vcHRpb25fZ3JvdXBzOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2l0aCBvcHRpb24gZ3JvdXBzCkBAIC03NDYsOCArODI3LDcgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX3ZhcmFyZ3MKIAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKQEAgLTc1OSwxNCArODM5LDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQpAQCAtODIwLDcgKzg5OCw4IEBACiAgICAgICAgICAgICBjcHBfaWYgPSAiI2lmICIgKyBjb25kaXRpb25hbAogICAgICAgICAgICAgY3BwX2VuZGlmID0gIiNlbmRpZiAvKiAiICsgY29uZGl0aW9uYWwgKyAiICovIgogCi0gICAgICAgICAgICBpZiBtZXRob2RkZWZfZGVmaW5lOgorICAgICAgICAgICAgaWYgbWV0aG9kZGVmX2RlZmluZSBhbmQgZi5uYW1lIG5vdCBpbiBjbGluaWMuaWZuZGVmX3N5bWJvbHM6CisgICAgICAgICAgICAgICAgY2xpbmljLmlmbmRlZl9zeW1ib2xzLmFkZChmLm5hbWUpCiAgICAgICAgICAgICAgICAgbWV0aG9kZGVmX2lmbmRlZiA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIHttZXRob2RkZWZfbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICNkZWZpbmUge21ldGhvZGRlZl9uYW1lfQpAQCAtMTAyMCw3ICsxMDk5LDcgQEAKICAgICAgICAgIyBNRVRIX08sIHdlIGhhdmUgZXhhY3RseSBvbmUgYW55d2F5LCBzbyB3ZSBrbm93IGV4YWN0bHkKICAgICAgICAgIyB3aGVyZSBpdCBpcy4KICAgICAgICAgaWYgKCJNRVRIX08iIGluIHRlbXBsYXRlc1snbWV0aG9kZGVmX2RlZmluZSddIGFuZAotICAgICAgICAgICAgbm90IGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgICAgICAgICAne2ltcGxfcGFyYW1ldGVyc30nIGluIHRlbXBsYXRlc1sncGFyc2VyX3Byb3RvdHlwZSddKToKICAgICAgICAgICAgIGRhdGEuZGVjbGFyYXRpb25zLnBvcCgwKQogCiAgICAgICAgIHRlbXBsYXRlX2RpY3QgPSB7fQpAQCAtMTA3OCw3ICsxMTU3LDggQEAKICAgICAgICAgaWYgaGFzX29wdGlvbl9ncm91cHM6CiAgICAgICAgICAgICBzZWxmLnJlbmRlcl9vcHRpb25fZ3JvdXBfcGFyc2luZyhmLCB0ZW1wbGF0ZV9kaWN0KQogCi0gICAgICAgIGZvciBuYW1lLCBkZXN0aW5hdGlvbiBpbiBjbGluaWMuZmllbGRfZGVzdGluYXRpb25zLml0ZW1zKCk6CisgICAgICAgICMgYnVmZmVycywgbm90IGRlc3RpbmF0aW9uCisgICAgICAgIGZvciBuYW1lLCBkZXN0aW5hdGlvbiBpbiBjbGluaWMuZGVzdGluYXRpb25fYnVmZmVycy5pdGVtcygpOgogICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNbbmFtZV0KICAgICAgICAgICAgIGlmIGhhc19vcHRpb25fZ3JvdXBzOgogICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbGluZWFyX2Zvcm1hdCh0ZW1wbGF0ZSwKQEAgLTExMDAsNiArMTE4MCwxMSBAQAogCiAgICAgICAgICAgICBzID0gdGVtcGxhdGUuZm9ybWF0X21hcCh0ZW1wbGF0ZV9kaWN0KQogCisgICAgICAgICAgICAjIG1pbGQgaGFjazoKKyAgICAgICAgICAgICMgcmVmbG93IGxvbmcgaW1wbCBkZWNsYXJhdGlvbnMKKyAgICAgICAgICAgIGlmIG5hbWUgaW4geyJpbXBsX3Byb3RvdHlwZSIsICJpbXBsX2RlZmluaXRpb24ifToKKyAgICAgICAgICAgICAgICBzID0gd3JhcF9kZWNsYXJhdGlvbnMocykKKwogICAgICAgICAgICAgaWYgY2xpbmljLmxpbmVfcHJlZml4OgogICAgICAgICAgICAgICAgIHMgPSBpbmRlbnRfYWxsX2xpbmVzKHMsIGNsaW5pYy5saW5lX3ByZWZpeCkKICAgICAgICAgICAgIGlmIGNsaW5pYy5saW5lX3N1ZmZpeDoKQEAgLTEyNTIsMTAgKzEzMzcsMTEgQEAKICAgICAgICAgbWF0Y2ggPSBzZWxmLnN0YXJ0X3JlLm1hdGNoKGxpbmUubHN0cmlwKCkpCiAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlIE5vbmUKIAotICAgIGRlZiBfbGluZShzZWxmKToKKyAgICBkZWYgX2xpbmUoc2VsZiwgbG9va2FoZWFkPUZhbHNlKToKICAgICAgICAgc2VsZi5saW5lX251bWJlciArPSAxCiAgICAgICAgIGxpbmUgPSBzZWxmLmlucHV0LnBvcCgpCi0gICAgICAgIHNlbGYubGFuZ3VhZ2UucGFyc2VfbGluZShsaW5lKQorICAgICAgICBpZiBub3QgbG9va2FoZWFkOgorICAgICAgICAgICAgc2VsZi5sYW5ndWFnZS5wYXJzZV9saW5lKGxpbmUpCiAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICBkZWYgcGFyc2VfdmVyYmF0aW1fYmxvY2soc2VsZik6CkBAIC0xMzExLDcgKzEzOTcsNyBAQAogICAgICAgICBvdXRwdXRfYWRkLCBvdXRwdXRfb3V0cHV0ID0gdGV4dF9hY2N1bXVsYXRvcigpCiAgICAgICAgIGFyZ3VtZW50cyA9IE5vbmUKICAgICAgICAgd2hpbGUgc2VsZi5pbnB1dDoKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lKCkKKyAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lKGxvb2thaGVhZD1UcnVlKQogICAgICAgICAgICAgbWF0Y2ggPSBjaGVja3N1bV9yZS5tYXRjaChsaW5lLmxzdHJpcCgpKQogICAgICAgICAgICAgYXJndW1lbnRzID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBpZiBhcmd1bWVudHM6CkBAIC0xNDAyLDEyICsxNDg4LDQ4IEBACiAgICAgICAgIHNlbGYuZi53cml0ZSh0ZXh0KQogCiAKK2NsYXNzIEJ1ZmZlclNlcmllczoKKyAgICAiIiIKKyAgICBCZWhhdmVzIGxpa2UgYSAiZGVmYXVsdGxpc3QiLgorICAgIFdoZW4geW91IGFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0IHlldCwKKyAgICB0aGUgb2JqZWN0IGdyb3dzIHRoZSBsaXN0IHVudGlsIHRoYXQgaXRlbSBleGlzdHMuCisgICAgU28gb1tuXSB3aWxsIGFsd2F5cyB3b3JrLgorCisgICAgU3VwcG9ydHMgbmVnYXRpdmUgaW5kaWNlcyBmb3IgYWN0dWFsIGl0ZW1zLgorICAgIGUuZy4gb1stMV0gaXMgYW4gZWxlbWVudCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgb1swXS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX2FycmF5ID0gW10KKyAgICAgICAgc2VsZi5fY29uc3RydWN0b3IgPSBfdGV4dF9hY2N1bXVsYXRvcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgICAgICBpIC09IHNlbGYuX3N0YXJ0CisgICAgICAgIGlmIGkgPCAwOgorICAgICAgICAgICAgc2VsZi5fc3RhcnQgKz0gaQorICAgICAgICAgICAgcHJlZml4ID0gW3NlbGYuX2NvbnN0cnVjdG9yKCkgZm9yIHggaW4gcmFuZ2UoLWkpXQorICAgICAgICAgICAgc2VsZi5fYXJyYXkgPSBwcmVmaXggKyBzZWxmLl9hcnJheQorICAgICAgICAgICAgaSA9IDAKKyAgICAgICAgd2hpbGUgaSA+PSBsZW4oc2VsZi5fYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5fYXJyYXkuYXBwZW5kKHNlbGYuX2NvbnN0cnVjdG9yKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVtpXQorCisgICAgZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICBmb3IgdGEgaW4gc2VsZi5fYXJyYXk6CisgICAgICAgICAgICB0YS5fdGV4dC5jbGVhcigpCisKKyAgICBkZWYgZHVtcChzZWxmKToKKyAgICAgICAgdGV4dHMgPSBbdGEub3V0cHV0KCkgZm9yIHRhIGluIHNlbGYuX2FycmF5XQorICAgICAgICByZXR1cm4gIiIuam9pbih0ZXh0cykKKworCiBjbGFzcyBEZXN0aW5hdGlvbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdHlwZSwgY2xpbmljLCAqYXJncyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi50eXBlID0gdHlwZQogICAgICAgICBzZWxmLmNsaW5pYyA9IGNsaW5pYwotICAgICAgICB2YWxpZF90eXBlcyA9ICgnYnVmZmVyJywgJ2ZpbGUnLCAnc3VwcHJlc3MnLCAndHdvLXBhc3MnKQorICAgICAgICB2YWxpZF90eXBlcyA9ICgnYnVmZmVyJywgJ2ZpbGUnLCAnc3VwcHJlc3MnKQogICAgICAgICBpZiB0eXBlIG5vdCBpbiB2YWxpZF90eXBlczoKICAgICAgICAgICAgIGZhaWwoIkludmFsaWQgZGVzdGluYXRpb24gdHlwZSAiICsgcmVwcih0eXBlKSArICIgZm9yICIgKyBuYW1lICsgIiAsIG11c3QgYmUgIiArICcsICcuam9pbih2YWxpZF90eXBlcykpCiAgICAgICAgIGV4dHJhX2FyZ3VtZW50cyA9IDEgaWYgdHlwZSA9PSAiZmlsZSIgZWxzZSAwCkBAIC0xNDI2LDEwICsxNTQ4LDggQEAKICAgICAgICAgICAgIGRbJ2Jhc2VuYW1lJ10gPSBiYXNlbmFtZQogICAgICAgICAgICAgZFsnYmFzZW5hbWVfcm9vdCddLCBkWydiYXNlbmFtZV9leHRlbnNpb24nXSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gYXJnc1swXS5mb3JtYXRfbWFwKGQpCi0gICAgICAgIGlmIHR5cGUgPT0gJ3R3by1wYXNzJzoKLSAgICAgICAgICAgIHNlbGYuaWQgPSBOb25lCiAKLSAgICAgICAgc2VsZi50ZXh0LCBzZWxmLmFwcGVuZCwgc2VsZi5fZHVtcCA9IF90ZXh0X2FjY3VtdWxhdG9yKCkKKyAgICAgICAgc2VsZi5idWZmZXJzID0gQnVmZmVyU2VyaWVzKCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi50eXBlID09ICdmaWxlJzoKQEAgLTE0NDEsMTUgKzE1NjEsMTAgQEAKICAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYudHlwZSAhPSAnYnVmZmVyJzoKICAgICAgICAgICAgIGZhaWwoIkNhbid0IGNsZWFyIGRlc3RpbmF0aW9uIiArIHNlbGYubmFtZSArICIgLCBpdCdzIG5vdCBvZiB0eXBlIGJ1ZmZlciIpCi0gICAgICAgIHNlbGYudGV4dC5jbGVhcigpCisgICAgICAgIHNlbGYuYnVmZmVycy5jbGVhcigpCiAKICAgICBkZWYgZHVtcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi50eXBlID09ICd0d28tcGFzcyc6Ci0gICAgICAgICAgICBpZiBzZWxmLmlkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5pZCA9IHN0cih1dWlkLnV1aWQ0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaWQKLSAgICAgICAgICAgIGZhaWwoIllvdSBjYW4gb25seSBkdW1wIGEgdHdvLXBhc3MgYnVmZmVyIGV4YWN0bHkgb25jZSEiKQotICAgICAgICByZXR1cm4gc2VsZi5fZHVtcCgpCisgICAgICAgIHJldHVybiBzZWxmLmJ1ZmZlcnMuZHVtcCgpCiAKIAogIyBtYXBzIHN0cmluZ3MgdG8gTGFuZ3VhZ2Ugb2JqZWN0cy4KQEAgLTE0ODgsNDkgKzE2MDMsNDQgQEAKICAgICBwcmVzZXRzX3RleHQgPSAiIiIKIHByZXNldCBibG9jawogZXZlcnl0aGluZyBibG9jaworbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwogY3BwX2lmIHN1cHByZXNzCiBjcHBfZW5kaWYgc3VwcHJlc3MKLW1ldGhvZGRlZl9pZm5kZWYgYnVmZmVyCiAKIHByZXNldCBvcmlnaW5hbAogZXZlcnl0aGluZyBibG9jaworbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwogY3BwX2lmIHN1cHByZXNzCiBjcHBfZW5kaWYgc3VwcHJlc3MKLW1ldGhvZGRlZl9pZm5kZWYgYnVmZmVyCiAKIHByZXNldCBmaWxlCiBldmVyeXRoaW5nIGZpbGUKK21ldGhvZGRlZl9pZm5kZWYgZmlsZSAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIHN1cHByZXNzCiBwYXJzZXJfcHJvdG90eXBlIHN1cHByZXNzCiBpbXBsX2RlZmluaXRpb24gYmxvY2sKIAogcHJlc2V0IGJ1ZmZlcgogZXZlcnl0aGluZyBidWZmZXIKK21ldGhvZGRlZl9pZm5kZWYgYnVmZmVyIDEKK2ltcGxfZGVmaW5pdGlvbiBibG9jawogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogaW1wbF9wcm90b3R5cGUgc3VwcHJlc3MKIHBhcnNlcl9wcm90b3R5cGUgc3VwcHJlc3MKLWltcGxfZGVmaW5pdGlvbiBibG9jawogCiBwcmVzZXQgcGFydGlhbC1idWZmZXIKIGV2ZXJ5dGhpbmcgYnVmZmVyCittZXRob2RkZWZfaWZuZGVmIGJ1ZmZlciAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIGJsb2NrCiBpbXBsX3Byb3RvdHlwZSBzdXBwcmVzcwogbWV0aG9kZGVmX2RlZmluZSBibG9jawogcGFyc2VyX3Byb3RvdHlwZSBibG9jawogaW1wbF9kZWZpbml0aW9uIGJsb2NrCiAKLXByZXNldCB0d28tcGFzcwotZXZlcnl0aGluZyBidWZmZXIKLWRvY3N0cmluZ19wcm90b3R5cGUgdHdvLXBhc3MKLWltcGxfcHJvdG90eXBlIHN1cHByZXNzCi1tZXRob2RkZWZfZGVmaW5lIHR3by1wYXNzCi1wYXJzZXJfcHJvdG90eXBlIHR3by1wYXNzCi1pbXBsX2RlZmluaXRpb24gYmxvY2sKLQogIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGFuZ3VhZ2UsIHByaW50ZXI9Tm9uZSwgKiwgZm9yY2U9RmFsc2UsIHZlcmlmeT1UcnVlLCBmaWxlbmFtZT1Ob25lKToKQEAgLTE1NTQsMjUgKzE2NjQsMjUgQEAKICAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oImJsb2NrIiwgImJ1ZmZlciIpCiAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJzdXBwcmVzcyIsICJzdXBwcmVzcyIpCiAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJidWZmZXIiLCAiYnVmZmVyIikKLSAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oInR3by1wYXNzIiwgInR3by1wYXNzIikKICAgICAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigiZmlsZSIsICJmaWxlIiwgIntkaXJuYW1lfS9jbGluaWMve2Jhc2VuYW1lfS5oIikKIAotICAgICAgICBkID0gc2VsZi5kZXN0aW5hdGlvbnMuZ2V0Ci0gICAgICAgIHNlbGYuZmllbGRfZGVzdGluYXRpb25zID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKAotICAgICAgICAgICAgKCdjcHBfaWYnLCBkKCdzdXBwcmVzcycpKSwKKyAgICAgICAgZCA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uX2J1ZmZlcgorICAgICAgICBzZWxmLmRlc3RpbmF0aW9uX2J1ZmZlcnMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgoCisgICAgICAgICAgICAoJ2NwcF9pZicsIGQoJ2ZpbGUnKSksCiAgICAgICAgICAgICAoJ2RvY3N0cmluZ19wcm90b3R5cGUnLCBkKCdzdXBwcmVzcycpKSwKLSAgICAgICAgICAgICgnZG9jc3RyaW5nX2RlZmluaXRpb24nLCBkKCdibG9jaycpKSwKLSAgICAgICAgICAgICgnbWV0aG9kZGVmX2RlZmluZScsIGQoJ2Jsb2NrJykpLAotICAgICAgICAgICAgKCdpbXBsX3Byb3RvdHlwZScsIGQoJ2Jsb2NrJykpLAorICAgICAgICAgICAgKCdkb2NzdHJpbmdfZGVmaW5pdGlvbicsIGQoJ2ZpbGUnKSksCisgICAgICAgICAgICAoJ21ldGhvZGRlZl9kZWZpbmUnLCBkKCdmaWxlJykpLAorICAgICAgICAgICAgKCdpbXBsX3Byb3RvdHlwZScsIGQoJ2ZpbGUnKSksCiAgICAgICAgICAgICAoJ3BhcnNlcl9wcm90b3R5cGUnLCBkKCdzdXBwcmVzcycpKSwKLSAgICAgICAgICAgICgncGFyc2VyX2RlZmluaXRpb24nLCBkKCdibG9jaycpKSwKLSAgICAgICAgICAgICgnY3BwX2VuZGlmJywgZCgnc3VwcHJlc3MnKSksCi0gICAgICAgICAgICAoJ21ldGhvZGRlZl9pZm5kZWYnLCBkKCdidWZmZXInKSksCisgICAgICAgICAgICAoJ3BhcnNlcl9kZWZpbml0aW9uJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnY3BwX2VuZGlmJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnbWV0aG9kZGVmX2lmbmRlZicsIGQoJ2ZpbGUnLCAxKSksCiAgICAgICAgICAgICAoJ2ltcGxfZGVmaW5pdGlvbicsIGQoJ2Jsb2NrJykpLAogICAgICAgICApKQogCi0gICAgICAgIHNlbGYuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrID0gW10KKyAgICAgICAgc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrID0gW10KKyAgICAgICAgc2VsZi5pZm5kZWZfc3ltYm9scyA9IHNldCgpCiAKICAgICAgICAgc2VsZi5wcmVzZXRzID0ge30KICAgICAgICAgcHJlc2V0ID0gTm9uZQpAQCAtMTU4MCwzNyArMTY5MCw0MyBAQAogICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG5hbWUsIHZhbHVlID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBuYW1lLCB2YWx1ZSwgKm9wdGlvbnMgPSBsaW5lLnNwbGl0KCkKICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ3ByZXNldCc6CiAgICAgICAgICAgICAgICAgc2VsZi5wcmVzZXRzW3ZhbHVlXSA9IHByZXNldCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uKHZhbHVlKQorICAgICAgICAgICAgaWYgbGVuKG9wdGlvbnMpOgorICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG9wdGlvbnNbMF0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluZGV4ID0gMAorICAgICAgICAgICAgYnVmZmVyID0gc2VsZi5nZXRfZGVzdGluYXRpb25fYnVmZmVyKHZhbHVlLCBpbmRleCkKIAogICAgICAgICAgICAgaWYgbmFtZSA9PSAnZXZlcnl0aGluZyc6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWVsZF9kZXN0aW5hdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHByZXNldFtuYW1lXSA9IGRlc3RpbmF0aW9uCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzOgorICAgICAgICAgICAgICAgICAgICBwcmVzZXRbbmFtZV0gPSBidWZmZXIKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBhc3NlcnQgbmFtZSBpbiBzZWxmLmZpZWxkX2Rlc3RpbmF0aW9ucwotICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gZGVzdGluYXRpb24KKyAgICAgICAgICAgIGFzc2VydCBuYW1lIGluIHNlbGYuZGVzdGluYXRpb25fYnVmZmVycworICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gYnVmZmVyCiAKICAgICAgICAgZ2xvYmFsIGNsaW5pYwogICAgICAgICBjbGluaWMgPSBzZWxmCiAKLSAgICBkZWYgZ2V0X2Rlc3RpbmF0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHQ9dW5zcGVjaWZpZWQpOgotICAgICAgICBkID0gc2VsZi5kZXN0aW5hdGlvbnMuZ2V0KG5hbWUpCi0gICAgICAgIGlmIG5vdCBkOgotICAgICAgICAgICAgaWYgZGVmYXVsdCBpcyBub3QgdW5zcGVjaWZpZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgICAgIGZhaWwoIkRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0OiAiICsgcmVwcihuYW1lKSkKLSAgICAgICAgcmV0dXJuIGQKLQogICAgIGRlZiBhZGRfZGVzdGluYXRpb24oc2VsZiwgbmFtZSwgdHlwZSwgKmFyZ3MpOgogICAgICAgICBpZiBuYW1lIGluIHNlbGYuZGVzdGluYXRpb25zOgogICAgICAgICAgICAgZmFpbCgiRGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHM6ICIgKyByZXByKG5hbWUpKQogICAgICAgICBzZWxmLmRlc3RpbmF0aW9uc1tuYW1lXSA9IERlc3RpbmF0aW9uKG5hbWUsIHR5cGUsIHNlbGYsICphcmdzKQogCisgICAgZGVmIGdldF9kZXN0aW5hdGlvbihzZWxmLCBuYW1lKToKKyAgICAgICAgZCA9IHNlbGYuZGVzdGluYXRpb25zLmdldChuYW1lKQorICAgICAgICBpZiBub3QgZDoKKyAgICAgICAgICAgIGZhaWwoIkRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0OiAiICsgcmVwcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBnZXRfZGVzdGluYXRpb25fYnVmZmVyKHNlbGYsIG5hbWUsIGl0ZW09MCk6CisgICAgICAgIGQgPSBzZWxmLmdldF9kZXN0aW5hdGlvbihuYW1lKQorICAgICAgICByZXR1cm4gZC5idWZmZXJzW2l0ZW1dCisKICAgICBkZWYgcGFyc2Uoc2VsZiwgaW5wdXQpOgogICAgICAgICBwcmludGVyID0gc2VsZi5wcmludGVyCiAgICAgICAgIHNlbGYuYmxvY2tfcGFyc2VyID0gQmxvY2tQYXJzZXIoaW5wdXQsIHNlbGYubGFuZ3VhZ2UsIHZlcmlmeT1zZWxmLnZlcmlmeSkKQEAgLTE2MzAsMTcgKzE3NDYsMTEgQEAKIAogICAgICAgICBzZWNvbmRfcGFzc19yZXBsYWNlbWVudHMgPSB7fQogCisgICAgICAgICMgdGhlc2UgYXJlIGRlc3RpbmF0aW9ucyBub3QgYnVmZmVycwogICAgICAgICBmb3IgbmFtZSwgZGVzdGluYXRpb24gaW4gc2VsZi5kZXN0aW5hdGlvbnMuaXRlbXMoKToKICAgICAgICAgICAgIGlmIGRlc3RpbmF0aW9uLnR5cGUgPT0gJ3N1cHByZXNzJzoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgb3V0cHV0ID0gZGVzdGluYXRpb24uX2R1bXAoKQotCi0gICAgICAgICAgICBpZiBkZXN0aW5hdGlvbi50eXBlID09ICd0d28tcGFzcyc6Ci0gICAgICAgICAgICAgICAgaWYgZGVzdGluYXRpb24uaWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlY29uZF9wYXNzX3JlcGxhY2VtZW50c1tkZXN0aW5hdGlvbi5pZF0gPSBvdXRwdXQKLSAgICAgICAgICAgICAgICBlbGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgZmFpbCgiVHdvLXBhc3MgYnVmZmVyICIgKyByZXByKG5hbWUpICsgIiBub3QgZW1wdHkgYXQgZW5kIG9mIGZpbGUhIikKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3V0cHV0ID0gZGVzdGluYXRpb24uZHVtcCgpCiAKICAgICAgICAgICAgIGlmIG91dHB1dDoKIApAQCAtMTgzMiw2ICsxOTQyLDcgQEAKIF9faWFuZF9fCiBfX2lmbG9vcmRpdl9fCiBfX2lsc2hpZnRfXworX19pbWF0bXVsX18KIF9faW1vZF9fCiBfX2ltdWxfXwogX19pbmRleF9fCkBAIC0xODQ4LDYgKzE5NTksNyBAQAogX19sZW5fXwogX19sc2hpZnRfXwogX19sdF9fCitfX21hdG11bF9fCiBfX21vZF9fCiBfX211bF9fCiBfX25lZ19fCkBAIC0xODYyLDYgKzE5NzQsNyBAQAogX19yZXByX18KIF9fcmZsb29yZGl2X18KIF9fcmxzaGlmdF9fCitfX3JtYXRtdWxfXwogX19ybW9kX18KIF9fcm11bF9fCiBfX3Jvcl9fCkBAIC0yMzc5LDEyICsyNDkyLDEyIEBACiAKIGNsYXNzIGNoYXJfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnY2hhcicKLSAgICBkZWZhdWx0X3R5cGUgPSBzdHIKKyAgICBkZWZhdWx0X3R5cGUgPSAoYnl0ZXMsIGJ5dGVhcnJheSkKICAgICBmb3JtYXRfdW5pdCA9ICdjJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIidcMCciCiAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5kZWZhdWx0LCBzdHIpIGFuZCAobGVuKHNlbGYuZGVmYXVsdCkgIT0gMSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5kZWZhdWx0LCBzZWxmLmRlZmF1bHRfdHlwZSkgYW5kIChsZW4oc2VsZi5kZWZhdWx0KSAhPSAxKToKICAgICAgICAgICAgIGZhaWwoImNoYXJfY29udmVydGVyOiBpbGxlZ2FsIGRlZmF1bHQgdmFsdWUgIiArIHJlcHIoc2VsZi5kZWZhdWx0KSkKIAogCkBAIC0yNDE3LDE4ICsyNTMwLDIwIEBACiAgICAgICAgIGlmIG5vdCBiaXR3aXNlOgogICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgc2hvcnRzIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ0MnLCB0eXBlcz0nc3RyJykKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdDJywgYWNjZXB0PXtzdHJ9KQogY2xhc3MgaW50X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2ludCcKICAgICBkZWZhdWx0X3R5cGUgPSBpbnQKICAgICBmb3JtYXRfdW5pdCA9ICdpJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgdHlwZXM9J2ludCcpOgotICAgICAgICBpZiB0eXBlcyA9PSAnc3RyJzoKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtpbnR9LCB0eXBlPU5vbmUpOgorICAgICAgICBpZiBhY2NlcHQgPT0ge3N0cn06CiAgICAgICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gJ0MnCi0gICAgICAgIGVsaWYgdHlwZXMgIT0gJ2ludCc6Ci0gICAgICAgICAgICBmYWlsKCJpbnRfY29udmVydGVyOiBpbGxlZ2FsICd0eXBlcycgYXJndW1lbnQiKQorICAgICAgICBlbGlmIGFjY2VwdCAhPSB7aW50fToKKyAgICAgICAgICAgIGZhaWwoImludF9jb252ZXJ0ZXI6IGlsbGVnYWwgJ2FjY2VwdCcgYXJndW1lbnQgIiArIHJlcHIoYWNjZXB0KSkKKyAgICAgICAgaWYgdHlwZSAhPSBOb25lOgorICAgICAgICAgICAgc2VsZi50eXBlID0gdHlwZQogCiBjbGFzcyB1bnNpZ25lZF9pbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAndW5zaWduZWQgaW50JwpAQCAtMjUxNywxMzcgKzI2MzIsMTUzIEBACiAgICAgICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCiAKIAotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3MjJywgbGVuZ3RoPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneScsIHR5cGVzPSJieXRlcyIpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneSMnLCB0eXBlcz0iYnl0ZXMiLCBsZW5ndGg9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6JywgbnVsbGFibGU9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6IycsIG51bGxhYmxlPVRydWUsIGxlbmd0aD1UcnVlKQorIworIyBXZSBkZWZpbmUgdGhyZWUgY29udmVudGlvbnMgZm9yIGJ1ZmZlciB0eXBlcyBpbiB0aGUgJ2FjY2VwdCcgYXJndW1lbnQ6CisjCisjICBidWZmZXIgIDogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlCisjICByd2J1ZmZlcjogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBiZSB3cml0ZWFibGUKKyMgIHJvYnVmZmVyOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIGJ1dCBtdXN0IG5vdCBiZSB3cml0ZWFibGUKKyMKKworY2xhc3MgYnVmZmVyOiBwYXNzCitjbGFzcyByd2J1ZmZlcjogcGFzcworY2xhc3Mgcm9idWZmZXI6IHBhc3MKKworZGVmIHN0cl9jb252ZXJ0ZXJfa2V5KHR5cGVzLCBlbmNvZGluZywgemVyb2VzKToKKyAgICByZXR1cm4gKGZyb3plbnNldCh0eXBlcyksIGJvb2woZW5jb2RpbmcpLCBib29sKHplcm9lcykpCisKK3N0cl9jb252ZXJ0ZXJfYXJndW1lbnRfbWFwID0ge30KKwogY2xhc3Mgc3RyX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2NvbnN0IGNoYXIgKicKICAgICBkZWZhdWx0X3R5cGUgPSAoc3RyLCBOdWxsLCBOb25lVHlwZSkKICAgICBmb3JtYXRfdW5pdCA9ICdzJwogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGVuY29kaW5nPU5vbmUsIHR5cGVzPSJzdHIiLAotICAgICAgICBsZW5ndGg9RmFsc2UsIG51bGxhYmxlPUZhbHNlLCB6ZXJvZXM9RmFsc2UpOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhY2NlcHQ9e3N0cn0sIGVuY29kaW5nPU5vbmUsIHplcm9lcz1GYWxzZSk6CiAKLSAgICAgICAgdHlwZXMgPSBzZXQodHlwZXMuc3RyaXAoKS5zcGxpdCgpKQotICAgICAgICBieXRlc190eXBlID0gc2V0KCgiYnl0ZXMiLCkpCi0gICAgICAgIHN0cl90eXBlID0gc2V0KCgic3RyIiwpKQotICAgICAgICBhbGxfM190eXBlID0gc2V0KCgiYnl0ZWFycmF5IiwpKSB8IGJ5dGVzX3R5cGUgfCBzdHJfdHlwZQotICAgICAgICBpc19ieXRlcyA9IHR5cGVzID09IGJ5dGVzX3R5cGUKLSAgICAgICAgaXNfc3RyID0gdHlwZXMgPT0gc3RyX3R5cGUKLSAgICAgICAgaXNfYWxsXzMgPSB0eXBlcyA9PSBhbGxfM190eXBlCi0KLSAgICAgICAgc2VsZi5sZW5ndGggPSBib29sKGxlbmd0aCkKLSAgICAgICAgZm9ybWF0X3VuaXQgPSBOb25lCi0KLSAgICAgICAgaWYgZW5jb2Rpbmc6Ci0gICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLQotICAgICAgICAgICAgaWYgaXNfc3RyIGFuZCBub3QgKGxlbmd0aCBvciB6ZXJvZXMgb3IgbnVsbGFibGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2VzJwotICAgICAgICAgICAgZWxpZiBpc19hbGxfMyBhbmQgbm90IChsZW5ndGggb3IgemVyb2VzIG9yIG51bGxhYmxlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdldCcKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBsZW5ndGggYW5kIHplcm9lcyBhbmQgbm90IG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2VzIycKLSAgICAgICAgICAgIGVsaWYgaXNfYWxsXzMgYW5kIGxlbmd0aCBhbmQgbm90IChudWxsYWJsZSBvciB6ZXJvZXMpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2V0IycKLQotICAgICAgICAgICAgaWYgZm9ybWF0X3VuaXQuZW5kc3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICBmYWlsKCJTb3JyeTogY29kZSB1c2luZyBmb3JtYXQgdW5pdCAiLCByZXByKGZvcm1hdF91bml0KSwgInByb2JhYmx5IGRvZXNuJ3Qgd29yayBwcm9wZXJseSB5ZXQuXG5HaXZlIExhcnJ5IHlvdXIgdGVzdCBjYXNlIGFuZCBoZSdsbCBpdC4iKQotICAgICAgICAgICAgICAgICMgVE9ETyBzZXQgcG9pbnRlciB0byBOVUxMCi0gICAgICAgICAgICAgICAgIyBUT0RPIGFkZCBjbGVhbnVwIGZvciBidWZmZXIKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHplcm9lczoKLSAgICAgICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyAoemVyb2VzIGlzIG9ubHkgbGVnYWwgd2l0aCBhbiBlbmNvZGluZykiKQotCi0gICAgICAgICAgICBpZiBpc19ieXRlcyBhbmQgbm90IChudWxsYWJsZSBvciBsZW5ndGgpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3knCi0gICAgICAgICAgICBlbGlmIGlzX2J5dGVzIGFuZCBsZW5ndGggYW5kIG5vdCBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd5IycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBub3QgKG51bGxhYmxlIG9yIGxlbmd0aCk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBsZW5ndGggYW5kIG5vdCBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdzIycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBudWxsYWJsZSAgYW5kIG5vdCBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneicKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBudWxsYWJsZSBhbmQgbGVuZ3RoOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3ojJwotCisgICAgICAgIGtleSA9IHN0cl9jb252ZXJ0ZXJfa2V5KGFjY2VwdCwgZW5jb2RpbmcsIHplcm9lcykKKyAgICAgICAgZm9ybWF0X3VuaXQgPSBzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcC5nZXQoa2V5KQogICAgICAgICBpZiBub3QgZm9ybWF0X3VuaXQ6Ci0gICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyIpCisgICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyIsIGtleSkKKwogICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gZm9ybWF0X3VuaXQKKyAgICAgICAgc2VsZi5sZW5ndGggPSBib29sKHplcm9lcykKKyAgICAgICAgaWYgZW5jb2Rpbmc6CisgICAgICAgICAgICBpZiBzZWxmLmRlZmF1bHQgbm90IGluIChOdWxsLCBOb25lLCB1bnNwZWNpZmllZCk6CisgICAgICAgICAgICAgICAgZmFpbCgic3RyX2NvbnZlcnRlcjogQXJndW1lbnQgQ2xpbmljIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0IHZhbHVlcyBmb3IgZW5jb2RlZCBzdHJpbmdzIikKKyAgICAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICAgICAgc2VsZi50eXBlID0gJ2NoYXIgKicKKyAgICAgICAgICAgICMgc29ycnksIGNsaW5pYyBjYW4ndCBzdXBwb3J0IHByZWFsbG9jYXRlZCBidWZmZXJzCisgICAgICAgICAgICAjIGZvciBlcyMgYW5kIGV0IworICAgICAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAiTlVMTCIKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmVuY29kaW5nOgorICAgICAgICAgICAgbmFtZSA9IGVuc3VyZV9sZWdhbF9jX2lkZW50aWZpZXIoc2VsZi5uYW1lKQorICAgICAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIilcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG4iXSkKKworIworIyBUaGlzIGlzIHRoZSBmb3VydGggb3IgZmlmdGggcmV3cml0ZSBvZiByZWdpc3RlcmluZyBhbGwgdGhlCisjIGNyYXp5IHN0cmluZyBjb252ZXJ0ZXIgZm9ybWF0IHVuaXRzLiAgUHJldmlvdXMgYXBwcm9hY2hlcyBoaWQKKyMgYnVncy0tZ2VuZXJhbGx5IG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQKKyMgdW5pdCBhbmQgdGhlIGFyZ3VtZW50cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRob3NlIHNlbWFudGljcworIyBwcm9wZXJseS4gIEhvcGVmdWxseSB3aXRoIHRoaXMgYXBwcm9hY2ggd2UnbGwgZ2V0IGl0IDEwMCUgcmlnaHQuCisjCisjIFRoZSByKCkgZnVuY3Rpb24gKHNob3J0IGZvciAicmVnaXN0ZXIiKSBib3RoIHJlZ2lzdGVycyB0aGUKKyMgbWFwcGluZyBmcm9tIGFyZ3VtZW50cyB0byBmb3JtYXQgdW5pdCAqYW5kKiByZWdpc3RlcnMgdGhlCisjIGxlZ2FjeSBDIGNvbnZlcnRlciBmb3IgdGhhdCBmb3JtYXQgdW5pdC4KKyMKK2RlZiByKGZvcm1hdF91bml0LCAqLCBhY2NlcHQsIGVuY29kaW5nPUZhbHNlLCB6ZXJvZXM9RmFsc2UpOgorICAgIGlmIG5vdCBlbmNvZGluZyBhbmQgZm9ybWF0X3VuaXQgIT0gJ3MnOgorICAgICAgICAjIGFkZCB0aGUgbGVnYWN5IGMgY29udmVydGVycyBoZXJlIHRvby4KKyAgICAgICAgIworICAgICAgICAjIG5vdGU6IGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIgY2FuJ3Qgd29yayBmb3IKKyAgICAgICAgIyAgIGVzLCBlcyMsIGV0LCBvciBldCMKKyAgICAgICAgIyAgIGJlY2F1c2Ugb2YgdGhlaXIgZXh0cmEgZW5jb2RpbmcgYXJndW1lbnQKKyAgICAgICAgIworICAgICAgICAjIGFsc28gZG9uJ3QgYWRkIHRoZSBjb252ZXJ0ZXIgZm9yICdzJyBiZWNhdXNlCisgICAgICAgICMgdGhlIG1ldGFjbGFzcyBmb3IgQ0NvbnZlcnRlciBhZGRzIGl0IGZvciB1cy4KKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgaWYgYWNjZXB0ICE9IHtzdHJ9OgorICAgICAgICAgICAga3dhcmdzWydhY2NlcHQnXSA9IGFjY2VwdAorICAgICAgICBpZiB6ZXJvZXM6CisgICAgICAgICAgICBrd2FyZ3NbJ3plcm9lcyddID0gVHJ1ZQorICAgICAgICBhZGRlZF9mID0gZnVuY3Rvb2xzLnBhcnRpYWwoc3RyX2NvbnZlcnRlciwgKiprd2FyZ3MpCisgICAgICAgIGxlZ2FjeV9jb252ZXJ0ZXJzW2Zvcm1hdF91bml0XSA9IGFkZGVkX2YKKworICAgIGQgPSBzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcAorICAgIGtleSA9IHN0cl9jb252ZXJ0ZXJfa2V5KGFjY2VwdCwgZW5jb2RpbmcsIHplcm9lcykKKyAgICBpZiBrZXkgaW4gZDoKKyAgICAgICAgc3lzLmV4aXQoIkR1cGxpY2F0ZSBrZXlzIHNwZWNpZmllZCBmb3Igc3RyX2NvbnZlcnRlcl9hcmd1bWVudF9tYXAhIikKKyAgICBkW2tleV0gPSBmb3JtYXRfdW5pdAorCityKCdlcycsICBlbmNvZGluZz1UcnVlLCAgICAgICAgICAgICAgYWNjZXB0PXtzdHJ9KQorcignZXMjJywgZW5jb2Rpbmc9VHJ1ZSwgemVyb2VzPVRydWUsIGFjY2VwdD17c3RyfSkKK3IoJ2V0JywgIGVuY29kaW5nPVRydWUsICAgICAgICAgICAgICBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pCityKCdldCMnLCBlbmNvZGluZz1UcnVlLCB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9KQorcigncycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17c3RyfSkKK3IoJ3MjJywgICAgICAgICAgICAgICAgIHplcm9lcz1UcnVlLCBhY2NlcHQ9e3JvYnVmZmVyLCBzdHJ9KQorcigneScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17cm9idWZmZXJ9KQorcigneSMnLCAgICAgICAgICAgICAgICAgemVyb2VzPVRydWUsIGFjY2VwdD17cm9idWZmZXJ9KQorcigneicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCityKCd6IycsICAgICAgICAgICAgICAgICB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtyb2J1ZmZlciwgc3RyLCBOb25lVHlwZX0pCitkZWwgcgogCiAKIGNsYXNzIFB5Qnl0ZXNPYmplY3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlCeXRlc09iamVjdCAqJwogICAgIGZvcm1hdF91bml0ID0gJ1MnCisgICAgIyBhY2NlcHQgPSB7Ynl0ZXN9CiAKIGNsYXNzIFB5Qnl0ZUFycmF5T2JqZWN0X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5Qnl0ZUFycmF5T2JqZWN0IConCiAgICAgZm9ybWF0X3VuaXQgPSAnWScKKyAgICAjIGFjY2VwdCA9IHtieXRlYXJyYXl9CiAKIGNsYXNzIHVuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlPYmplY3QgKicKICAgICBkZWZhdWx0X3R5cGUgPSAoc3RyLCBOdWxsLCBOb25lVHlwZSkKICAgICBmb3JtYXRfdW5pdCA9ICdVJwogCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndSMnLCBsZW5ndGg9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaJywgbnVsbGFibGU9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaIycsIG51bGxhYmxlPVRydWUsIGxlbmd0aD1UcnVlKQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3UjJywgemVyb2VzPVRydWUpCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWicsIGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWiMnLCBhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSkKIGNsYXNzIFB5X1VOSUNPREVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlfVU5JQ09ERSAqJwogICAgIGRlZmF1bHRfdHlwZSA9IChzdHIsIE51bGwsIE5vbmVUeXBlKQogICAgIGZvcm1hdF91bml0ID0gJ3UnCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgbnVsbGFibGU9RmFsc2UsIGxlbmd0aD1GYWxzZSk6Ci0gICAgICAgIGZvcm1hdF91bml0ID0gJ1onIGlmIG51bGxhYmxlIGVsc2UgJ3UnCi0gICAgICAgIGlmIGxlbmd0aDoKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtzdHJ9LCB6ZXJvZXM9RmFsc2UpOgorICAgICAgICBmb3JtYXRfdW5pdCA9ICdaJyBpZiBhY2NlcHQ9PXtzdHIsIE5vbmVUeXBlfSBlbHNlICd1JworICAgICAgICBpZiB6ZXJvZXM6CiAgICAgICAgICAgICBmb3JtYXRfdW5pdCArPSAnIycKICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gVHJ1ZQogICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gZm9ybWF0X3VuaXQKIAotIwotIyBXZSBkZWZpbmUgdGhyZWUgc3RyaW5nIGNvbnZlbnRpb25zIGZvciBidWZmZXIgdHlwZXMgaW4gdGhlICd0eXBlcycgYXJndW1lbnQ6Ci0jICAnYnVmZmVyJyA6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZQotIyAgJ3J3YnVmZmVyJzogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBiZSB3cml0ZWFibGUKLSMgICdyb2J1ZmZlcic6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSwgYnV0IG11c3Qgbm90IGJlIHdyaXRlYWJsZQotIwotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3MqJywgdHlwZXM9J3N0ciBieXRlcyBieXRlYXJyYXkgYnVmZmVyJykKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6KicsIHR5cGVzPSdzdHIgYnl0ZXMgYnl0ZWFycmF5IGJ1ZmZlcicsIG51bGxhYmxlPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndyonLCB0eXBlcz0nYnl0ZWFycmF5IHJ3YnVmZmVyJykKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdzKicsIGFjY2VwdD17c3RyLCBidWZmZXJ9KQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3oqJywgYWNjZXB0PXtzdHIsIGJ1ZmZlciwgTm9uZVR5cGV9KQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3cqJywgYWNjZXB0PXtyd2J1ZmZlcn0pCiBjbGFzcyBQeV9idWZmZXJfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlfYnVmZmVyJwogICAgIGZvcm1hdF91bml0ID0gJ3kqJwogICAgIGltcGxfYnlfcmVmZXJlbmNlID0gVHJ1ZQogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIntOVUxMLCBOVUxMfSIKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IGJ1ZmZlcicsIG51bGxhYmxlPUZhbHNlKToKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtidWZmZXJ9KToKICAgICAgICAgaWYgc2VsZi5kZWZhdWx0IG5vdCBpbiAodW5zcGVjaWZpZWQsIE5vbmUpOgogICAgICAgICAgICAgZmFpbCgiVGhlIG9ubHkgbGVnYWwgZGVmYXVsdCB2YWx1ZSBmb3IgUHlfYnVmZmVyIGlzIE5vbmUuIikKLSAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSBzZWxmLmNfaWdub3JlZF9kZWZhdWx0Ci0gICAgICAgIHR5cGVzID0gc2V0KHR5cGVzLnN0cmlwKCkuc3BsaXQoKSkKLSAgICAgICAgYnl0ZXNfdHlwZSA9IHNldCgoJ2J5dGVzJywpKQotICAgICAgICBieXRlYXJyYXlfdHlwZSA9IHNldCgoJ2J5dGVhcnJheScsKSkKLSAgICAgICAgYnVmZmVyX3R5cGUgPSBzZXQoKCdidWZmZXInLCkpCi0gICAgICAgIHJ3YnVmZmVyX3R5cGUgPSBzZXQoKCdyd2J1ZmZlcicsKSkKLSAgICAgICAgcm9idWZmZXJfdHlwZSA9IHNldCgoJ3JvYnVmZmVyJywpKQotICAgICAgICBzdHJfdHlwZSA9IHNldCgoJ3N0cicsKSkKLSAgICAgICAgYnl0ZXNfYnl0ZWFycmF5X2J1ZmZlcl90eXBlID0gYnl0ZXNfdHlwZSB8IGJ5dGVhcnJheV90eXBlIHwgYnVmZmVyX3R5cGUKIAotICAgICAgICBmb3JtYXRfdW5pdCA9IE5vbmUKLSAgICAgICAgaWYgdHlwZXMgPT0gKHN0cl90eXBlIHwgYnl0ZXNfYnl0ZWFycmF5X2J1ZmZlcl90eXBlKToKLSAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3MqJyBpZiBub3QgbnVsbGFibGUgZWxzZSAneionCisgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gc2VsZi5jX2lnbm9yZWRfZGVmYXVsdAorCisgICAgICAgIGlmIGFjY2VwdCA9PSB7c3RyLCBidWZmZXIsIE5vbmVUeXBlfToKKyAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3oqJworICAgICAgICBlbGlmIGFjY2VwdCA9PSB7c3RyLCBidWZmZXJ9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncyonCisgICAgICAgIGVsaWYgYWNjZXB0ID09IHtidWZmZXJ9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneSonCisgICAgICAgIGVsaWYgYWNjZXB0ID09IHtyd2J1ZmZlcn06CisgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd3KicKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZhaWwoJ1B5X2J1ZmZlcl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIChudWxsYWJsZT1UcnVlKScpCi0gICAgICAgICAgICBlbGlmIHR5cGVzID09IChieXRlc19ieXRlYXJyYXlfYnVmZmVyX3R5cGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3kqJwotICAgICAgICAgICAgZWxpZiB0eXBlcyA9PSAoYnl0ZWFycmF5X3R5cGUgfCByd2J1ZmZlcl90eXBlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd3KicKLSAgICAgICAgaWYgbm90IGZvcm1hdF91bml0OgogICAgICAgICAgICAgZmFpbCgiUHlfYnVmZmVyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMiKQogCiAgICAgICAgIHNlbGYuZm9ybWF0X3VuaXQgPSBmb3JtYXRfdW5pdApAQCAtMjg2MywxMCArMjk5NCwxMSBAQAogICAgIHR5cGUgPSAnbG9uZycKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tTG9uZycKICAgICBjYXN0ID0gJycKKyAgICB1bnNpZ25lZF9jYXN0ID0gJycKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKLSAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0gLTEiLCBkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSB7fS0xIi5mb3JtYXQoc2VsZi51bnNpZ25lZF9jYXN0KSwgZGF0YSkKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAnJy5qb2luKCgncmV0dXJuX3ZhbHVlID0gJywgc2VsZi5jb252ZXJzaW9uX2ZuLCAnKCcsIHNlbGYuY2FzdCwgJ19yZXR1cm5fdmFsdWUpO1xuJykpKQogCkBAIC0yODg3LDEwICszMDE5LDEyIEBACiBjbGFzcyB1bnNpZ25lZF9sb25nX3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3Vuc2lnbmVkIGxvbmcnCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZycKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyh1bnNpZ25lZCBsb25nKScKIAogY2xhc3MgdW5zaWduZWRfaW50X3JldHVybl9jb252ZXJ0ZXIodW5zaWduZWRfbG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3Vuc2lnbmVkIGludCcKICAgICBjYXN0ID0gJyh1bnNpZ25lZCBsb25nKScKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyh1bnNpZ25lZCBpbnQpJwogCiBjbGFzcyBQeV9zc2l6ZV90X3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X3NzaXplX3QnCkBAIC0yODk5LDYgKzMwMzMsNyBAQAogY2xhc3Mgc2l6ZV90X3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3NpemVfdCcKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tU2l6ZV90JworICAgIHVuc2lnbmVkX2Nhc3QgPSAnKHNpemVfdCknCiAKIAogY2xhc3MgZG91YmxlX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CkBAIC0yOTI2LDYgKzMwNjEsMjQgQEAKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpO1xuJykKIAogCitkZWYgZXZhbF9hc3RfZXhwcihub2RlLCBnbG9iYWxzLCAqLCBmaWxlbmFtZT0nLScpOgorICAgICIiIgorICAgIFRha2VzIGFuIGFzdC5FeHByIG5vZGUuICBDb21waWxlcyBhbmQgZXZhbHVhdGVzIGl0LgorICAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi4KKworICAgIGdsb2JhbHMgcmVwcmVzZW50cyB0aGUgZ2xvYmFscyBkaWN0IHRoZSBleHByZXNzaW9uCisgICAgc2hvdWxkIHNlZS4gIChUaGVyZSdzIG5vIGVxdWl2YWxlbnQgZm9yICJsb2NhbHMiIGhlcmUuKQorICAgICIiIgorCisgICAgaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuRXhwcik6CisgICAgICAgIG5vZGUgPSBub2RlLnZhbHVlCisKKyAgICBub2RlID0gYXN0LkV4cHJlc3Npb24obm9kZSkKKyAgICBjbyA9IGNvbXBpbGUobm9kZSwgZmlsZW5hbWUsICdldmFsJykKKyAgICBmbiA9IHR5cGVzLkZ1bmN0aW9uVHlwZShjbywgZ2xvYmFscykKKyAgICByZXR1cm4gZm4oKQorCisKIGNsYXNzIEluZGVudFN0YWNrOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5pbmRlbnRzID0gW10KQEAgLTMwOTQsNDMgKzMyNDcsNDMgQEAKICAgICAgICAgZmFpbCgidW5rbm93biBkZXN0aW5hdGlvbiBjb21tYW5kIiwgcmVwcihjb21tYW5kKSkKIAogCi0gICAgZGVmIGRpcmVjdGl2ZV9vdXRwdXQoc2VsZiwgZmllbGQsIGRlc3RpbmF0aW9uPScnKToKLSAgICAgICAgZmQgPSBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnMKKyAgICBkZWYgZGlyZWN0aXZlX291dHB1dChzZWxmLCBjb21tYW5kX29yX25hbWUsIGRlc3RpbmF0aW9uPScnKToKKyAgICAgICAgZmQgPSBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzCiAKLSAgICAgICAgaWYgZmllbGQgPT0gInByZXNldCI6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicHJlc2V0IjoKICAgICAgICAgICAgIHByZXNldCA9IHNlbGYuY2xpbmljLnByZXNldHMuZ2V0KGRlc3RpbmF0aW9uKQogICAgICAgICAgICAgaWYgbm90IHByZXNldDoKICAgICAgICAgICAgICAgICBmYWlsKCJVbmtub3duIHByZXNldCAiICsgcmVwcihkZXN0aW5hdGlvbikgKyAiISIpCiAgICAgICAgICAgICBmZC51cGRhdGUocHJlc2V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgZmllbGQgPT0gInB1c2giOgotICAgICAgICAgICAgc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrLmFwcGVuZChmZC5jb3B5KCkpCisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicHVzaCI6CisgICAgICAgICAgICBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrLmFwcGVuZChmZC5jb3B5KCkpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBmaWVsZCA9PSAicG9wIjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnNfc3RhY2s6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicG9wIjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrOgogICAgICAgICAgICAgICAgIGZhaWwoIkNhbid0ICdvdXRwdXQgcG9wJywgc3RhY2sgaXMgZW1wdHkhIikKLSAgICAgICAgICAgIHByZXZpb3VzX2ZkID0gc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrLnBvcCgpCisgICAgICAgICAgICBwcmV2aW91c19mZCA9IHNlbGYuY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnNfc3RhY2sucG9wKCkKICAgICAgICAgICAgIGZkLnVwZGF0ZShwcmV2aW91c19mZCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgc2VjcmV0IGNvbW1hbmQgZm9yIGRlYnVnZ2luZyEKLSAgICAgICAgaWYgZmllbGQgPT0gInByaW50IjoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJwcmludCI6CiAgICAgICAgICAgICBzZWxmLmJsb2NrLm91dHB1dC5hcHBlbmQocHByaW50LnBmb3JtYXQoZmQpKQogICAgICAgICAgICAgc2VsZi5ibG9jay5vdXRwdXQuYXBwZW5kKCdcbicpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBkID0gc2VsZi5jbGluaWMuZ2V0X2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogCi0gICAgICAgIGlmIGZpZWxkID09ICJldmVyeXRoaW5nIjoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJldmVyeXRoaW5nIjoKICAgICAgICAgICAgIGZvciBuYW1lIGluIGxpc3QoZmQpOgogICAgICAgICAgICAgICAgIGZkW25hbWVdID0gZAogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgZmllbGQgbm90IGluIGZkOgotICAgICAgICAgICAgZmFpbCgiSW52YWxpZCBmaWVsZCAiICsgcmVwcihmaWVsZCkgKyAiLCBtdXN0IGJlIG9uZSBvZjpcbiAgcHJlc2V0IHB1c2ggcG9wIHByaW50IGV2ZXJ5dGhpbmcgIiArICIgIi5qb2luKGZkKSkKLSAgICAgICAgZmRbZmllbGRdID0gZAorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgbm90IGluIGZkOgorICAgICAgICAgICAgZmFpbCgiSW52YWxpZCBjb21tYW5kIC8gZGVzdGluYXRpb24gbmFtZSAiICsgcmVwcihjb21tYW5kX29yX25hbWUpICsgIiwgbXVzdCBiZSBvbmUgb2Y6XG4gIHByZXNldCBwdXNoIHBvcCBwcmludCBldmVyeXRoaW5nICIgKyAiICIuam9pbihmZCkpCisgICAgICAgIGZkW2NvbW1hbmRfb3JfbmFtZV0gPSBkCiAKICAgICBkZWYgZGlyZWN0aXZlX2R1bXAoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYuYmxvY2sub3V0cHV0LmFwcGVuZChzZWxmLmNsaW5pYy5nZXRfZGVzdGluYXRpb24obmFtZSkuZHVtcCgpKQpAQCAtMzUxMyw3ICszNjY2LDcgQEAKICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgdGhlIGxhc3QgPSB3YXMgcHJvYmFibHkgaW5zaWRlIGEgZnVuY3Rpb24gY2FsbCwgbGlrZQotICAgICAgICAgICAgICAgICMgICBpOiBpbnQobnVsbGFibGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAjICAgYzogaW50KGFjY2VwdD17c3RyfSkKICAgICAgICAgICAgICAgICAjIHNvIGFzc3VtZSB0aGVyZSB3YXMgbm8gYWN0dWFsIGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IE5vbmUKICAgICAgICAgICAgICAgICBhc3RfaW5wdXQgPSAiZGVmIHgoe30pOiBwYXNzIi5mb3JtYXQobGluZSkKQEAgLTM1MjQsNiArMzY3NywxNCBAQAogICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIGludmFsaWQgcGFyYW1ldGVyIGRlY2xhcmF0aW9uOlxuXHQiICsgbGluZSkKIAogICAgICAgICBmdW5jdGlvbl9hcmdzID0gbW9kdWxlLmJvZHlbMF0uYXJncworCisgICAgICAgIGlmIGxlbihmdW5jdGlvbl9hcmdzLmFyZ3MpID4gMToKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoY29tbWE/KTpcblx0IiArIGxpbmUpCisgICAgICAgIGlmIGZ1bmN0aW9uX2FyZ3MuZGVmYXVsdHMgb3IgZnVuY3Rpb25fYXJncy5rd19kZWZhdWx0czoKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoZGVmYXVsdCB2YWx1ZT8pOlxuXHQiICsgbGluZSkKKyAgICAgICAgaWYgZnVuY3Rpb25fYXJncy52YXJhcmcgb3IgZnVuY3Rpb25fYXJncy5rd2FyZzoKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoKmFyZ3M/ICoqa3dhcmdzPyk6XG5cdCIgKyBsaW5lKQorCiAgICAgICAgIHBhcmFtZXRlciA9IGZ1bmN0aW9uX2FyZ3MuYXJnc1swXQogCiAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0gcGFyYW1ldGVyLmFyZwpAQCAtMzY4Niw3ICszODQ3LDkgQEAKICAgICAgICAgICAgIGZhaWwoIkFubm90YXRpb25zIG11c3QgYmUgZWl0aGVyIGEgbmFtZSwgYSBmdW5jdGlvbiBjYWxsLCBvciBhIHN0cmluZy4iKQogCiAgICAgICAgIG5hbWUgPSBhbm5vdGF0aW9uLmZ1bmMuaWQKLSAgICAgICAga3dhcmdzID0ge25vZGUuYXJnOiBhc3QubGl0ZXJhbF9ldmFsKG5vZGUudmFsdWUpIGZvciBub2RlIGluIGFubm90YXRpb24ua2V5d29yZHN9CisgICAgICAgIHN5bWJvbHMgPSBnbG9iYWxzKCkKKworICAgICAgICBrd2FyZ3MgPSB7bm9kZS5hcmc6IGV2YWxfYXN0X2V4cHIobm9kZS52YWx1ZSwgc3ltYm9scykgZm9yIG5vZGUgaW4gYW5ub3RhdGlvbi5rZXl3b3Jkc30KICAgICAgICAgcmV0dXJuIG5hbWUsIEZhbHNlLCBrd2FyZ3MKIAogICAgIGRlZiBwYXJzZV9zcGVjaWFsX3N5bWJvbChzZWxmLCBzeW1ib2wpOgpAQCAtMzk1OSw3ICs0MTIyLDcgQEAKICAgICAgICAgIyAgICAgYWRkKGYucmV0dXJuX2NvbnZlcnRlci5weV9kZWZhdWx0KQogCiAgICAgICAgIGlmIG5vdCBmLmRvY3N0cmluZ19vbmx5OgotICAgICAgICAgICAgYWRkKCJcbi0tXG4iKQorICAgICAgICAgICAgYWRkKCJcbiIgKyBzaWdfZW5kX21hcmtlciArICJcbiIpCiAKICAgICAgICAgZG9jc3RyaW5nX2ZpcnN0X2xpbmUgPSBvdXRwdXQoKQogCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IDY0OTc5MGYuLmM1MWYwNDEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICBkZWYgZW5kX2ludChzZWxmLCB0ZXh0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGludCh0ZXh0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBOb25lCiAKICAgICBlbmRfbG9uZyA9IGVuZF9pbnQKQEAgLTI2OSwxMyArMjY5LDEzIEBACiAgICAgZGVmIGVuZF9kb3VibGUoc2VsZiwgdGV4dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBmbG9hdCh0ZXh0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBOb25lCiAKICAgICBkZWYgZW5kX2NvbXBsZXgoc2VsZiwgdGV4dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBjb21wbGV4KHRleHQpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IE5vbmUKIAogICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIHRleHQpOgpAQCAtNzYzLDcgKzc2Myw3IEBACiAgICAgICAgICAgICBmb3IgY2xzIGluIGludCwgZmxvYXQsIGNvbXBsZXg6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNscyh0ZXh0KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgY2VsbCA9IE51bWVyaWNDZWxsKHZhbHVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL1JFQURNRSBiL1Rvb2xzL2ZyZWV6ZS9SRUFETUUKaW5kZXggODFiZTJjOC4uNWJjNWIwNCAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL1JFQURNRQorKysgYi9Ub29scy9mcmVlemUvUkVBRE1FCkBAIC0xMDAsOCArMTAwLDggQEAKIHRoZW4gZGVjbGFyZSB0aGVzZSBkaXJlY3RvcmllcyBpbiB5b3VyIGZyb3plbiBQeXRob24gcHJvZ3JhbSB1c2luZwogdGhlIFRDTF9MSUJSQVJZLCBUS19MSUJSQVJZIGFuZCBUSVhfTElCUkFSWSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAKLUZvciBleGFtcGxlLCBhc3N1bWUgeW91IHdpbGwgc2hpcCB5b3VyIGZyb3plbiBwcm9ncmFtIGluIHRoZSBkaXJlY3RvcnkgCi08cm9vdD4vYmluL3dpbmRvd3MteDg2IGFuZCB3aWxsIHBsYWNlIHlvdXIgVGNsIGxpYnJhcnkgZmlsZXMgCitGb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSB3aWxsIHNoaXAgeW91ciBmcm96ZW4gcHJvZ3JhbSBpbiB0aGUgZGlyZWN0b3J5Cis8cm9vdD4vYmluL3dpbmRvd3MteDg2IGFuZCB3aWxsIHBsYWNlIHlvdXIgVGNsIGxpYnJhcnkgZmlsZXMKIGluIDxyb290Pi9saWIvdGNsOC4yIGFuZCB5b3VyIFRrIGxpYnJhcnkgZmlsZXMgaW4gPHJvb3Q+L2xpYi90azguMi4gVGhlbgogcGxhY2luZyB0aGUgZm9sbG93aW5nIGxpbmVzIGluIHlvdXIgZnJvemVuIFB5dGhvbiBzY3JpcHQgYmVmb3JlIGltcG9ydGluZwogVGtpbnRlciBvciBUaXggd291bGQgc2V0IHRoZSBlbnZpcm9ubWVudCBjb3JyZWN0bHkgZm9yIFRjbC9Uay9UaXg6CkBAIC0xMzgsOCArMTM4LDggQEAKIGVudmlyb25tZW50IHZhcmlhYmxlIExEX0xJQlJBUllfUEFUSCBhbmQvb3IgdGhlIHN5c3RlbQogc2hhcmVkIGxpYnJhcnkgY2FjaGUgKGxkLnNvKS4gQW4gYWRkaXRpb25hbCBwcmVmZXJyZWQgZGlyZWN0b3J5IGZvcgogZmluZGluZyB0aGUgZHluYW1pYyBsaWJyYXJpZXMgaXMgYnVpbHQgaW50byB0aGUgLmRsbCBvciAuc28gZmlsZXMgYXQKLWNvbXBpbGUgdGltZSAtIHNlZSB0aGUgTElCX1JVTlRJTUVfRElSIHZhcmlhYmxlIGluIHRoZSBUY2wgbWFrZWZpbGUuIAotVGhlIE9TIG11c3QgZmluZCB0aGUgZHluYW1pYyBsaWJyYXJpZXMgb3IgeW91ciBmcm96ZW4gcHJvZ3JhbSB3b24ndCBzdGFydC4gCitjb21waWxlIHRpbWUgLSBzZWUgdGhlIExJQl9SVU5USU1FX0RJUiB2YXJpYWJsZSBpbiB0aGUgVGNsIG1ha2VmaWxlLgorVGhlIE9TIG11c3QgZmluZCB0aGUgZHluYW1pYyBsaWJyYXJpZXMgb3IgeW91ciBmcm96ZW4gcHJvZ3JhbSB3b24ndCBzdGFydC4KIFVzdWFsbHkgSSBtYWtlIHN1cmUgdGhhdCB0aGUgLnNvIG9yIC5kbGwgZmlsZXMgYXJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQogYXMgdGhlIGV4ZWN1dGFibGUsIGJ1dCB0aGlzIG1heSBub3QgYmUgZm9vbHByb29mLgogCkBAIC0xNDksOCArMTQ5LDggQEAKIHRvIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIHdoZW4gdGhlIHByb2dyYW0gcnVuczsgdGhpcyBpcyBjdXJyZW50bHkgbGVmdAogYXMgYW4gZXhlcmNpc2UgZm9yIHRoZSByZWFkZXIuICBBbiBlYXNpZXIgYXBwcm9hY2ggaXMgdG8gZnJlZXplIHRoZQogVGNsL1RrL1RpeCBjb2RlIGludG8gdGhlIGR5bmFtaWMgbGlicmFyaWVzIHVzaW5nIHRoZSBUY2wgRVQgY29kZSwKLW9yIHRoZSBUaXggU3RhbmQtQWxvbmUtTW9kdWxlIGNvZGUuIE9mIGNvdXJzZSwgeW91IGNhbiBhbHNvIHNpbXBseSAKLXJlcXVpcmUgdGhhdCBUY2wvVGsgaXMgcmVxdWlyZWQgb24gdGhlIHRhcmdldCBpbnN0YWxsYXRpb24sIGJ1dCBiZSAKK29yIHRoZSBUaXggU3RhbmQtQWxvbmUtTW9kdWxlIGNvZGUuIE9mIGNvdXJzZSwgeW91IGNhbiBhbHNvIHNpbXBseQorcmVxdWlyZSB0aGF0IFRjbC9UayBpcyByZXF1aXJlZCBvbiB0aGUgdGFyZ2V0IGluc3RhbGxhdGlvbiwgYnV0IGJlCiBjYXJlZnVsIHRoYXQgdGhlIHZlcnNpb24gY29ycmVzcG9uZHMuCiAKIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgdXNpbmcgZnJvemVuIFRraW50ZXIgYXBwbGljYXRpb25zOgpAQCAtMTY0LDcgKzE2NCw3IEBACiBBIHdhcm5pbmcgYWJvdXQgc2hhcmVkIGxpYnJhcnkgbW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gdXNlcyBzaGFyZWQgbGlicmFyeSBtb2R1bGVzIHN1Y2ggYXMgCitXaGVuIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiB1c2VzIHNoYXJlZCBsaWJyYXJ5IG1vZHVsZXMgc3VjaCBhcwogX3RraW50ZXIucHlkLCB0aGVzZSB3aWxsIG5vdCBiZSBpbmNvcnBvcmF0ZWQgaW4gdGhlIGZyb3plbiBwcm9ncmFtLgogIEFnYWluLCB0aGUgZnJvemVuIHByb2dyYW0gd2lsbCB3b3JrIHdoZW4geW91IHRlc3QgaXQsIGJ1dCBpdCB3b24ndAogIHdvcmsgd2hlbiB5b3Ugc2hpcCBpdCB0byBhIHNpdGUgd2l0aG91dCBhIFB5dGhvbiBpbnN0YWxsYXRpb24uCkBAIC0yNzUsOSArMjc1LDkgQEAKICAgICAgICAgICAgICAgYXJlIHJlYWQgYW5kIHRoZSAtaSBvcHRpb24gcmVwbGFjZWQgd2l0aCB0aGUgcGFyc2VkCiAgICAgICAgICAgICAgIHBhcmFtcyAobm90ZSAtIHF1b3RpbmcgYXJncyBpbiB0aGlzIGZpbGUgaXMgTk9UIHN1cHBvcnRlZCkKIAotLXMgc3Vic3lzdGVtOiBTcGVjaWZ5IHRoZSBzdWJzeXN0ZW0gKEZvciBXaW5kb3dzIG9ubHkuKTsgCistcyBzdWJzeXN0ZW06IFNwZWNpZnkgdGhlIHN1YnN5c3RlbSAoRm9yIFdpbmRvd3Mgb25seS4pOwogICAgICAgICAgICAgICAnY29uc29sZScgKGRlZmF1bHQpLCAnd2luZG93cycsICdzZXJ2aWNlJyBvciAnY29tX2RsbCcKLSAgICAgICAgICAgICAgCisKIC13OiAgICAgICAgICAgVG9nZ2xlIFdpbmRvd3MgKE5UIG9yIDk1KSBiZWhhdmlvci4KICAgICAgICAgICAgICAgKEZvciBkZWJ1Z2dpbmcgb25seSAtLSBvbiBhIHdpbjMyIHBsYXRmb3JtLCB3aW4zMiBiZWhhdmlvcgogICAgICAgICAgICAgICBpcyBhdXRvbWF0aWMuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2JrZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkKaW5kZXggNmFiYWNjOS4uMjBhNzBiMCAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL2JrZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvYmtmaWxlLnB5CkBAIC0xLDQ5ICsxLDI2IEBACiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9vcmlnX29wZW4KIAotY2xhc3MgX0JrRmlsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZSwgYnVmc2l6ZSk6Ci0gICAgICAgIGltcG9ydCBvcwotICAgICAgICBzZWxmLl9fZmlsZW5hbWUgPSBmaWxlCi0gICAgICAgIHNlbGYuX19iYWNrdXAgPSBmaWxlICsgJ34nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLl9fYmFja3VwKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MucmVuYW1lKGZpbGUsIHNlbGYuX19iYWNrdXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5fX2JhY2t1cCA9IE5vbmUKLSAgICAgICAgc2VsZi5fX2ZpbGUgPSBfb3JpZ19vcGVuKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCi0gICAgICAgIHNlbGYuY2xvc2VkID0gc2VsZi5fX2ZpbGUuY2xvc2VkCi0gICAgICAgIHNlbGYuZmlsZW5vID0gc2VsZi5fX2ZpbGUuZmlsZW5vCi0gICAgICAgIHNlbGYuZmx1c2ggPSBzZWxmLl9fZmlsZS5mbHVzaAotICAgICAgICBzZWxmLmlzYXR0eSA9IHNlbGYuX19maWxlLmlzYXR0eQotICAgICAgICBzZWxmLm1vZGUgPSBzZWxmLl9fZmlsZS5tb2RlCi0gICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX19maWxlLm5hbWUKLSAgICAgICAgc2VsZi5yZWFkID0gc2VsZi5fX2ZpbGUucmVhZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnJlYWRpbnRvID0gc2VsZi5fX2ZpbGUucmVhZGludG8KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLnJlYWRsaW5lID0gc2VsZi5fX2ZpbGUucmVhZGxpbmUKLSAgICAgICAgc2VsZi5yZWFkbGluZXMgPSBzZWxmLl9fZmlsZS5yZWFkbGluZXMKLSAgICAgICAgc2VsZi5zZWVrID0gc2VsZi5fX2ZpbGUuc2VlawotICAgICAgICBzZWxmLnRlbGwgPSBzZWxmLl9fZmlsZS50ZWxsCi0gICAgICAgIHNlbGYudHJ1bmNhdGUgPSBzZWxmLl9fZmlsZS50cnVuY2F0ZQotICAgICAgICBzZWxmLndyaXRlID0gc2VsZi5fX2ZpbGUud3JpdGUKLSAgICAgICAgc2VsZi53cml0ZWxpbmVzID0gc2VsZi5fX2ZpbGUud3JpdGVsaW5lcwotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9fZmlsZS5jbG9zZSgpCi0gICAgICAgIGlmIHNlbGYuX19iYWNrdXAgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpbXBvcnQgZmlsZWNtcAotICAgICAgICBpZiBmaWxlY21wLmNtcChzZWxmLl9fYmFja3VwLCBzZWxmLl9fZmlsZW5hbWUsIHNoYWxsb3cgPSAwKToKLSAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuX19maWxlbmFtZSkKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLl9fYmFja3VwLCBzZWxmLl9fZmlsZW5hbWUpCi0KLWRlZiBvcGVuKGZpbGUsIG1vZGUgPSAncicsIGJ1ZnNpemUgPSAtMSk6CitkZWYgb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAgICAgaWYgJ3cnIG5vdCBpbiBtb2RlOgogICAgICAgICByZXR1cm4gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQotICAgIHJldHVybiBfQmtGaWxlKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCisgICAgaW1wb3J0IG9zCisgICAgYmFja3VwID0gZmlsZSArICd+JworICAgIHRyeToKKyAgICAgICAgb3MudW5saW5rKGJhY2t1cCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHRyeToKKyAgICAgICAgb3MucmVuYW1lKGZpbGUsIGJhY2t1cCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcmV0dXJuIF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKKyAgICBmID0gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQorICAgIF9vcmlnX2Nsb3NlID0gZi5jbG9zZQorICAgIGRlZiBjbG9zZSgpOgorICAgICAgICBfb3JpZ19jbG9zZSgpCisgICAgICAgIGltcG9ydCBmaWxlY21wCisgICAgICAgIGlmIGZpbGVjbXAuY21wKGJhY2t1cCwgZmlsZSwgc2hhbGxvdz1GYWxzZSk6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQorICAgICAgICAgICAgb3MucmVuYW1lKGJhY2t1cCwgZmlsZSkKKyAgICBmLmNsb3NlID0gY2xvc2UKKyAgICByZXR1cm4gZgpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pIGIvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pCmluZGV4IDFlMzZhYmEuLmQwMWZkNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9leHRlbnNpb25zX3dpbjMyLmluaQorKysgYi9Ub29scy9mcmVlemUvZXh0ZW5zaW9uc193aW4zMi5pbmkKQEAgLTYsNyArNiw3IEBACiAKIDsgVGhpcyBpcyBhbGwgc2V0dXAgZm9yIGFsbCB0aGUgd2luMzIgZXh0ZW5zaW9uIG1vZHVsZXMKIDsgcmVsZWFzZWQgYnkgTWFyayBIYW1tb25kLgotOyBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUFlUSE9ORVggaXMgc2V0IAorOyBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUFlUSE9ORVggaXMgc2V0CiA7IHRvIHBvaW50IHRvIHRoZSByb290IHdpbjMyIGV4dGVuc2lvbnMgZGlyZWN0b3J5CiAKIDsgUFlUSE9OUFJFRklYIG11c3QgcG9pbnQgdG8gdGhlIFB5dGhvbiBidWlsZCByb290IGRpcmVjdG9yeQpAQCAtNDksNyArNDksNyBAQAogCiBbemxpYl0KIGRzcD0lUFlUSE9OUFJFRklYJVxQQ0J1aWxkXHpsaWIuZHNwCi1jbD0vSSAlUFlUSE9OUFJFRklYJVwuLlx6bGliLTEuMS40IC9EIF9XSU5ET1dTIC9EIFdJTjMyIAorY2w9L0kgJVBZVEhPTlBSRUZJWCVcLi5cemxpYi0xLjEuNCAvRCBfV0lORE9XUyAvRCBXSU4zMgogbGlicz0lUFlUSE9OUFJFRklYJVwuLlx6bGliLTEuMS40XHpsaWIubGliIC9ub2RlZmF1bHRsaWI6bGliYwogCiBbd2lucmVnXQpAQCAtOTUsNyArOTUsNyBAQAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMyZmlsZV0KLWRzcD0lUFlUSE9ORVglXHdpbjMyXHdpbjMyZmlsZS5kc3AgCitkc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMmZpbGUuZHNwCiBjbD0vSSAlUFlUSE9ORVglXHdpbjMyXHNyYwogCiBbd2luMzJuZXRdCkBAIC0xMDgsNyArMTA4LDcgQEAKIGNsPS9JICVQWVRIT05FWCVcd2luMzJcc3JjCiAKIFt3aW4zMnBpcGVdCi1kc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMnBpcGUuZHNwIAorZHNwPSVQWVRIT05FWCVcd2luMzJcd2luMzJwaXBlLmRzcAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMyc2VjdXJpdHldCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvZnJlZXplLnB5IGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQppbmRleCBlMGM2YzJjLi5jMDc1ODA3IDEwMDc1NQotLS0gYS9Ub29scy9mcmVlemUvZnJlZXplLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKQEAgLTM2Niw4ICszNjYsMTAgQEAKICAgICAgICAgICAgIG1mLmxvYWRfZmlsZShtb2QpCiAKICAgICAjIEFsaWFzICJpbXBvcnRsaWIuX2Jvb3RzdHJhcCIgdG8gIl9mcm96ZW5faW1wb3J0bGliIiBzbyB0aGF0IHRoZQotICAgICMgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYm9vdHN0cmFwLgorICAgICMgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYm9vdHN0cmFwLiAgRG8gdGhlIHNhbWUgZm9yCisgICAgIyBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC4KICAgICBtZi5tb2R1bGVzWyJfZnJvemVuX2ltcG9ydGxpYiJdID0gbWYubW9kdWxlc1siaW1wb3J0bGliLl9ib290c3RyYXAiXQorICAgIG1mLm1vZHVsZXNbIl9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsIl0gPSBtZi5tb2R1bGVzWyJpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCJdCiAKICAgICAjIEFkZCB0aGUgbWFpbiBzY3JpcHQgYXMgZWl0aGVyIF9fbWFpbl9fLCBvciB0aGUgYWN0dWFsIG1vZHVsZSBuYW1lLgogICAgIGlmIHB5dGhvbl9lbnRyeV9pc19tYWluOgpAQCAtNDM5LDI1ICs0NDEsMTcgQEAKICAgICAgICAgICAgICAgICAgZnJvemVuZGxsbWFpbl9jLCBvcy5wYXRoLmJhc2VuYW1lKGV4dGVuc2lvbnNfYyldICsgZmlsZXMKICAgICAgICAgbWFpbmRlZm4gPSBjaGVja2V4dGVuc2lvbnNfd2luMzIuQ0V4dGVuc2lvbiggJ19fbWFpbl9fJywgeHRyYXMgKQogICAgICAgICBmcm96ZW5fZXh0ZW5zaW9ucy5hcHBlbmQoIG1haW5kZWZuICkKLSAgICAgICAgb3V0ZnAgPSBvcGVuKG1ha2VmaWxlLCAndycpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIG91dGZwOgogICAgICAgICAgICAgd2lubWFrZW1ha2VmaWxlLm1ha2VtYWtlZmlsZShvdXRmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb3plbl9leHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHRhcmdldCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvdXRmcC5jbG9zZSgpCiAgICAgICAgIHJldHVybgogCiAgICAgIyBnZW5lcmF0ZSBjb25maWcuYyBhbmQgTWFrZWZpbGUKICAgICBidWlsdGlucy5zb3J0KCkKLSAgICBpbmZwID0gb3Blbihjb25maWdfY19pbikKLSAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKGNvbmZpZ19jLCAndycpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbihjb25maWdfY19pbikgYXMgaW5mcCwgYmtmaWxlLm9wZW4oY29uZmlnX2MsICd3JykgYXMgb3V0ZnA6CiAgICAgICAgIG1ha2Vjb25maWcubWFrZWNvbmZpZyhpbmZwLCBvdXRmcCwgYnVpbHRpbnMpCi0gICAgZmluYWxseToKLSAgICAgICAgb3V0ZnAuY2xvc2UoKQotICAgIGluZnAuY2xvc2UoKQogCiAgICAgY2ZsYWdzID0gWyckKE9QVCknXQogICAgIGNwcGZsYWdzID0gZGVmaW5lcyArIGluY2x1ZGVzCkBAIC00NzUsMTEgKzQ2OSw4IEBACiAgICAgICAgICAgICBmaWxlcyArIHN1cHBfc291cmNlcyArICBhZGRmaWxlcyArIGxpYnMgKyBcCiAgICAgICAgICAgICBbJyQoTU9ETElCUyknLCAnJChMSUJTKScsICckKFNZU0xJQlMpJ10KIAotICAgIG91dGZwID0gYmtmaWxlLm9wZW4obWFrZWZpbGUsICd3JykKLSAgICB0cnk6CisgICAgd2l0aCBia2ZpbGUub3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBvdXRmcDoKICAgICAgICAgbWFrZW1ha2VmaWxlLm1ha2VtYWtlZmlsZShvdXRmcCwgc29tZXZhcnMsIGZpbGVzLCBiYXNlX3RhcmdldCkKLSAgICBmaW5hbGx5OgotICAgICAgICBvdXRmcC5jbG9zZSgpCiAKICAgICAjIERvbmUhCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9tYWtlZnJlZXplLnB5IGIvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKaW5kZXggZWYxOGVjNy4uNjRlM2U2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKQEAgLTM5LDM2ICszOSwzNCBAQAogICAgICAgICBtYW5nbGVkID0gIl9fIi5qb2luKG1vZC5zcGxpdCgiLiIpKQogICAgICAgICBpZiBtLl9fY29kZV9fOgogICAgICAgICAgICAgZmlsZSA9ICdNXycgKyBtYW5nbGVkICsgJy5jJwotICAgICAgICAgICAgb3V0ZnAgPSBia2ZpbGUub3BlbihiYXNlICsgZmlsZSwgJ3cnKQotICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGZpbGUpCi0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBwcmludCgiZnJlZXppbmciLCBtb2QsICIuLi4iKQotICAgICAgICAgICAgc3RyID0gbWFyc2hhbC5kdW1wcyhtLl9fY29kZV9fKQotICAgICAgICAgICAgc2l6ZSA9IGxlbihzdHIpCi0gICAgICAgICAgICBpZiBtLl9fcGF0aF9fOgotICAgICAgICAgICAgICAgICMgSW5kaWNhdGUgcGFja2FnZSBieSBuZWdhdGl2ZSBzaXplCi0gICAgICAgICAgICAgICAgc2l6ZSA9IC1zaXplCi0gICAgICAgICAgICBkb25lLmFwcGVuZCgobW9kLCBtYW5nbGVkLCBzaXplKSkKLSAgICAgICAgICAgIHdyaXRlY29kZShvdXRmcCwgbWFuZ2xlZCwgc3RyKQotICAgICAgICAgICAgb3V0ZnAuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBia2ZpbGUub3BlbihiYXNlICsgZmlsZSwgJ3cnKSBhcyBvdXRmcDoKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoImZyZWV6aW5nIiwgbW9kLCAiLi4uIikKKyAgICAgICAgICAgICAgICBzdHIgPSBtYXJzaGFsLmR1bXBzKG0uX19jb2RlX18pCisgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihzdHIpCisgICAgICAgICAgICAgICAgaWYgbS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICAgICAgIyBJbmRpY2F0ZSBwYWNrYWdlIGJ5IG5lZ2F0aXZlIHNpemUKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IC1zaXplCisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQoKG1vZCwgbWFuZ2xlZCwgc2l6ZSkpCisgICAgICAgICAgICAgICAgd3JpdGVjb2RlKG91dGZwLCBtYW5nbGVkLCBzdHIpCiAgICAgaWYgZGVidWc6CiAgICAgICAgIHByaW50KCJnZW5lcmF0aW5nIHRhYmxlIG9mIGZyb3plbiBtb2R1bGVzIikKLSAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKGJhc2UgKyAnZnJvemVuLmMnLCAndycpCi0gICAgZm9yIG1vZCwgbWFuZ2xlZCwgc2l6ZSBpbiBkb25lOgotICAgICAgICBvdXRmcC53cml0ZSgnZXh0ZXJuIHVuc2lnbmVkIGNoYXIgTV8lc1tdO1xuJyAlIG1hbmdsZWQpCi0gICAgb3V0ZnAud3JpdGUoaGVhZGVyKQotICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKLSAgICAgICAgb3V0ZnAud3JpdGUoJ1x0eyIlcyIsIE1fJXMsICVkfSxcbicgJSAobW9kLCBtYW5nbGVkLCBzaXplKSkKLSAgICBvdXRmcC53cml0ZSgnXG4nKQotICAgICMgVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgYSBOVUxMIGNvZGUgcG9pbnRlciwgaW5kaWNhdGluZwotICAgICMgdGhhdCB0aGUgZnJvemVuIHByb2dyYW0gc2hvdWxkIG5vdCBzZWFyY2ggZm9yIHRoZW0gb24gdGhlIGhvc3QKLSAgICAjIHN5c3RlbS4gSW1wb3J0aW5nIHRoZW0gd2lsbCAqYWx3YXlzKiByYWlzZSBhbiBJbXBvcnRFcnJvci4KLSAgICAjIFRoZSB6ZXJvIHZhbHVlIHNpemUgaXMgbmV2ZXIgdXNlZC4KLSAgICBmb3IgbW9kIGluIGZhaWxfaW1wb3J0OgotICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTlVMTCwgMH0sXG4nICUgKG1vZCwpKQotICAgIG91dGZwLndyaXRlKHRyYWlsZXIpCi0gICAgb3V0ZnAud3JpdGUoZW50cnlfcG9pbnQpCi0gICAgb3V0ZnAuY2xvc2UoKQorICAgIHdpdGggYmtmaWxlLm9wZW4oYmFzZSArICdmcm96ZW4uYycsICd3JykgYXMgb3V0ZnA6CisgICAgICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKKyAgICAgICAgICAgIG91dGZwLndyaXRlKCdleHRlcm4gdW5zaWduZWQgY2hhciBNXyVzW107XG4nICUgbWFuZ2xlZCkKKyAgICAgICAgb3V0ZnAud3JpdGUoaGVhZGVyKQorICAgICAgICBmb3IgbW9kLCBtYW5nbGVkLCBzaXplIGluIGRvbmU6CisgICAgICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTV8lcywgJWR9LFxuJyAlIChtb2QsIG1hbmdsZWQsIHNpemUpKQorICAgICAgICBvdXRmcC53cml0ZSgnXG4nKQorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBoYXZlIGEgTlVMTCBjb2RlIHBvaW50ZXIsIGluZGljYXRpbmcKKyAgICAgICAgIyB0aGF0IHRoZSBmcm96ZW4gcHJvZ3JhbSBzaG91bGQgbm90IHNlYXJjaCBmb3IgdGhlbSBvbiB0aGUgaG9zdAorICAgICAgICAjIHN5c3RlbS4gSW1wb3J0aW5nIHRoZW0gd2lsbCAqYWx3YXlzKiByYWlzZSBhbiBJbXBvcnRFcnJvci4KKyAgICAgICAgIyBUaGUgemVybyB2YWx1ZSBzaXplIGlzIG5ldmVyIHVzZWQuCisgICAgICAgIGZvciBtb2QgaW4gZmFpbF9pbXBvcnQ6CisgICAgICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTlVMTCwgMH0sXG4nICUgKG1vZCwpKQorICAgICAgICBvdXRmcC53cml0ZSh0cmFpbGVyKQorICAgICAgICBvdXRmcC53cml0ZShlbnRyeV9wb2ludCkKICAgICByZXR1cm4gZmlsZXMKIAogCmRpZmYgLS1naXQgYS9Ub29scy9pMThuL21ha2Vsb2NhbGVhbGlhcy5weSBiL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CmluZGV4IDEwODg3Y2UuLmM3ZWNhY2UgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CisrKyBiL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CkBAIC04LDkgKzgsMTIgQEAKICIiIgogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cworX2xvY2FsZSA9IGxvY2FsZQogCi0jIExvY2F0aW9uIG9mIHRoZSBhbGlhcyBmaWxlCisjIExvY2F0aW9uIG9mIHRoZSBYMTEgYWxpYXMgZmlsZS4KIExPQ0FMRV9BTElBUyA9ICcvdXNyL3NoYXJlL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzJworIyBMb2NhdGlvbiBvZiB0aGUgZ2xpYmMgU1VQUE9SVEVEIGxvY2FsZXMgZmlsZS4KK1NVUFBPUlRFRCA9ICcvdXNyL3NoYXJlL2kxOG4vU1VQUE9SVEVEJwogCiBkZWYgcGFyc2UoZmlsZW5hbWUpOgogCkBAIC00NCwxMCArNDcsMzkgQEAKICAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcucmVwbGFjZSgnLScsICcnKQogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCdfJywgJycpCiAgICAgICAgICAgICBsb2NhbGUgPSBsYW5nICsgJy4nICsgZW5jb2RpbmcKLSAgICAgICAgICAgIGlmIGVuY29kaW5nLmxvd2VyKCkgPT0gJ3V0ZjgnOgotICAgICAgICAgICAgICAgICMgSWdub3JlIFVURi04IG1hcHBpbmdzIC0gdGhpcyBlbmNvZGluZyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAjIGF2YWlsYWJsZSBmb3IgYWxsIGxvY2FsZXMKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBkYXRhW2xvY2FsZV0gPSBhbGlhcworICAgIHJldHVybiBkYXRhCisKK2RlZiBwYXJzZV9nbGliY19zdXBwb3J0ZWQoZmlsZW5hbWUpOgorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0nbGF0aW4xJykgYXMgZjoKKyAgICAgICAgbGluZXMgPSBsaXN0KGYpCisgICAgZGF0YSA9IHt9CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBsaW5lWzoxXSA9PSAnIyc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCcvJywgJyAnKS5zdHJpcCgpCisgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgnXFwnKS5yc3RyaXAoKQorICAgICAgICB3b3JkcyA9IGxpbmUuc3BsaXQoKQorICAgICAgICBpZiBsZW4od29yZHMpICE9IDI6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBhbGlhcywgYWxpYXNfZW5jb2RpbmcgPSB3b3JkcworICAgICAgICAjIExvd2VyLWNhc2UgbG9jYWxlCisgICAgICAgIGxvY2FsZSA9IGFsaWFzLmxvd2VyKCkKKyAgICAgICAgIyBOb3JtYWxpemUgZW5jb2RpbmcsIGlmIGdpdmVuCisgICAgICAgIGlmICcuJyBpbiBsb2NhbGU6CisgICAgICAgICAgICBsYW5nLCBlbmNvZGluZyA9IGxvY2FsZS5zcGxpdCgnLicpWzoyXQorICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCctJywgJycpCisgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLnJlcGxhY2UoJ18nLCAnJykKKyAgICAgICAgICAgIGxvY2FsZSA9IGxhbmcgKyAnLicgKyBlbmNvZGluZworICAgICAgICAjIEFkZCBhbiBlbmNvZGluZyB0byBhbGlhcworICAgICAgICBhbGlhcywgXywgbW9kaWZpZXIgPSBhbGlhcy5wYXJ0aXRpb24oJ0AnKQorICAgICAgICBhbGlhcyA9IF9sb2NhbGUuX3JlcGxhY2VfZW5jb2RpbmcoYWxpYXMsIGFsaWFzX2VuY29kaW5nKQorICAgICAgICBpZiBtb2RpZmllciBhbmQgbm90IChtb2RpZmllciA9PSAnZXVybycgYW5kIGFsaWFzX2VuY29kaW5nID09ICdJU08tODg1OS0xNScpOgorICAgICAgICAgICAgYWxpYXMgKz0gJ0AnICsgbW9kaWZpZXIKICAgICAgICAgZGF0YVtsb2NhbGVdID0gYWxpYXMKICAgICByZXR1cm4gZGF0YQogCkBAIC05Miw5ICsxMjQsMjUgQEAKICAgICByZXR1cm4gZXJyb3JzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWxlLWFsaWFzJywgZGVmYXVsdD1MT0NBTEVfQUxJQVMsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdsb2NhdGlvbiBvZiB0aGUgWDExIGFsaWFzIGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQ6ICVhKScgJSBMT0NBTEVfQUxJQVMpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1nbGliYy1zdXBwb3J0ZWQnLCBkZWZhdWx0PVNVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2xvY2F0aW9uIG9mIHRoZSBnbGliYyBTVVBQT1JURUQgbG9jYWxlcyBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAlYSknICUgU1VQUE9SVEVEKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKICAgICBkYXRhID0gbG9jYWxlLmxvY2FsZV9hbGlhcy5jb3B5KCkKLSAgICBkYXRhLnVwZGF0ZShwYXJzZShMT0NBTEVfQUxJQVMpKQotICAgIGRhdGEgPSBvcHRpbWl6ZShkYXRhKQorICAgIGRhdGEudXBkYXRlKHBhcnNlX2dsaWJjX3N1cHBvcnRlZChhcmdzLmdsaWJjX3N1cHBvcnRlZCkpCisgICAgZGF0YS51cGRhdGUocGFyc2UoYXJncy5sb2NhbGVfYWxpYXMpKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgUmVwZWF0IG9wdGltaXphdGlvbiB3aGlsZSB0aGUgc2l6ZSBpcyBkZWNyZWFzZWQuCisgICAgICAgIG4gPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IG9wdGltaXplKGRhdGEpCisgICAgICAgIGlmIGxlbihkYXRhKSA9PSBuOgorICAgICAgICAgICAgYnJlYWsKICAgICBwcmludF9kaWZmZXJlbmNlcyhkYXRhLCBsb2NhbGUubG9jYWxlX2FsaWFzKQogICAgIHByaW50KCkKICAgICBwcmludCgnbG9jYWxlX2FsaWFzID0geycpCmRpZmYgLS1naXQgYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weSBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CmluZGV4IDlmZmViMTcuLjNjNmMxNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CisrKyBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CkBAIC00NDEsOSArNDQxLDcgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBmcCk6CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9fb3B0aW9ucwotICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTSslWicpCi0gICAgICAgICMgVGhlIHRpbWUgc3RhbXAgaW4gdGhlIGhlYWRlciBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgZm9ybWF0IGFzIHRoYXQKLSAgICAgICAgIyBnZW5lcmF0ZWQgYnkgeGdldHRleHQuLi4KKyAgICAgICAgdGltZXN0YW1wID0gdGltZS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU0leicpCiAgICAgICAgIGVuY29kaW5nID0gZnAuZW5jb2RpbmcgaWYgZnAuZW5jb2RpbmcgZWxzZSAnVVRGLTgnCiAgICAgICAgIHByaW50KHBvdF9oZWFkZXIgJSB7J3RpbWUnOiB0aW1lc3RhbXAsICd2ZXJzaW9uJzogX192ZXJzaW9uX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYXJzZXQnOiBlbmNvZGluZywKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9SRUFETUUudHh0IGIvVG9vbHMvbXNpL1JFQURNRS50eHQKaW5kZXggZGM0YWU5MC4uMWU0MWNjMSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL1JFQURNRS50eHQKKysrIGIvVG9vbHMvbXNpL1JFQURNRS50eHQKQEAgLTEsMjUgKzEsNDg4IEBACi1QYWNrYWdpbmcgUHl0aG9uIGFzIGEgTWljcm9zb2Z0IEluc3RhbGxlciBQYWNrYWdlIChNU0kpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitRdWljayBCdWlsZCBJbmZvCis9PT09PT09PT09PT09PT09CiAKLVVzaW5nIHRoaXMgbGlicmFyeSwgUHl0aG9uIGNhbiBiZSBwYWNrYWdlZCBhcyBhIE1TLVdpbmRvd3MKLU1TSSBmaWxlLiBUbyBnZW5lcmF0ZSBhbiBpbnN0YWxsZXIgcGFja2FnZSwgeW91IG5lZWQKLWEgYnVpbGQgdHJlZS4gQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHRyZWUgcm9vdCBkaXJlY3RvcnkKLWlzIGFzc3VtZWQgdG8gYmUgaW4gIi4uLy4uIi4gVGhpcyBsb2NhdGlvbiBjYW4gYmUgY2hhbmdlZAotYnkgYWRkaW5nIGEgZmlsZSBjb25maWcucHk7IHNlZSB0aGUgYmVnaW5uaW5nIG9mIG1zaS5weQotZm9yIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbiBvcHRpb25zLgorRm9yIHRlc3RpbmcsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlIFRvb2xzL21zaS9idWlsZC5iYXQKK3NjcmlwdDoKIAotVGhlIHBhY2thZ2luZyBwcm9jZXNzIGFzc3VtZXMgdGhhdCBiaW5hcmllcyBoYXZlIGJlZW4gCi1nZW5lcmF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMgaW4gUENCdWlsZC9SRUFETUUudHh0LAotYW5kIHRoYXQgeW91IGhhdmUgZWl0aGVyIFZpc3VhbCBTdHVkaW8gb3IgdGhlIFBsYXRmb3JtIFNESwotaW5zdGFsbGVkLiBJbiBhZGRpdGlvbiwgeW91IG5lZWQgdGhlIFB5dGhvbiBDT00gZXh0ZW5zaW9ucywKLWVpdGhlciBmcm9tIFB5dGhvbldpbiwgb3IgZnJvbSBBY3RpdmVQeXRob24uCisgICAgYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tZG9jXQogCi1UbyBpbnZva2UgdGhlIHNjcmlwdCwgb3BlbiBhIGNtZC5leGUgd2luZG93IHdoaWNoIGhhcyAKLWNhYmFyYy5leGUgaW4gaXRzIFBBVEggKGUuZy4gIlZpc3VhbCBTdHVkaW8gLk5FVCAyMDAzCi1Db21tYW5kIFByb21wdCIpLiBUaGVuIGludm9rZQorRm9yIGFuIG9mZmljaWFsIHJlbGVhc2UsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlCitUb29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBzY3JpcHQgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlczoKIAotPHBhdGgtdG8tcHl0aG9uLmV4ZT4gbXNpLnB5CisgICAgc2V0IFBZVEhPTj08cGF0aCB0byBQeXRob24gMi43PgorICAgIHNldCBTUEhJTlhCVUlMRD08cGF0aCB0byBzcGhpbngtYnVpbGQuZXhlPgorICAgIHNldCBQQVRIPTxwYXRoIHRvIE1lcmN1cmlhbCAoaGcuZXhlKT47CisgICAgICAgICAgICAgPHBhdGggdG8gSFRNTCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKT47JVBBVEglCiAKLUlmIGV2ZXJ5dGhpbmcgc3VjY2VlZHMsIHB5dGhvblguWS5aLm1zaSBpcyBnZW5lcmF0ZWQKLWluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICBidWlsZHJlbGVhc2UuYmF0IFsteDg2XSBbLXg2NF0gWy1EXSBbLUJdCisgICAgICAgIFstbyA8b3V0cHV0IGRpcmVjdG9yeT5dIFstYyA8Y2VydGlmaWNhdGUgbmFtZT5dCisKK1NlZSB0aGUgQnVpbGRpbmcgdGhlIEluc3RhbGxlciBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitPdmVydmlldworPT09PT09PT0KKworUHl0aG9uIGlzIGRpc3RyaWJ1dGVkIG9uIFdpbmRvd3MgYXMgYW4gaW5zdGFsbGVyIHRoYXQgd2lsbCBjb25maWd1cmUgdGhlCit1c2VyJ3Mgc3lzdGVtLiBUaGlzIGFsbG93cyB1c2VycyB0byBoYXZlIGEgZnVuY3Rpb25pbmcgY29weSBvZiBQeXRob24KK3dpdGhvdXQgaGF2aW5nIHRvIGJ1aWxkIGl0IHRoZW1zZWx2ZXMuCisKK1RoZSBtYWluIHRhc2tzIG9mIHRoZSBpbnN0YWxsZXIgYXJlOgorCisqIGNvcHkgcmVxdWlyZWQgZmlsZXMgaW50byB0aGUgZXhwZWN0ZWQgbGF5b3V0CisqIGNvbmZpZ3VyZSBzeXN0ZW0gc2V0dGluZ3Mgc28gdGhlIGluc3RhbGxhdGlvbiBjYW4gYmUgbG9jYXRlZCBieQorICBvdGhlciBwcm9ncmFtcworKiBhZGQgZW50cnkgcG9pbnRzIGZvciBtb2RpZnlpbmcsIHJlcGFpcmluZyBhbmQgdW5pbnN0YWxsaW5nIFB5dGhvbgorKiBtYWtlIGl0IGVhc3kgdG8gbGF1bmNoIFB5dGhvbiwgaXRzIGRvY3VtZW50YXRpb24sIGFuZCBJRExFCisKK0VhY2ggb2YgdGhlc2UgaXMgZGlzY3Vzc2VkIGluIGEgbGF0ZXIgc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgorCitTdHJ1Y3R1cmUgb2YgdGhlIEluc3RhbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGluc3RhbGxlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgJ2xheW91dCcsIHdoaWNoIGNvbnNpc3RzIG9mIGEgbnVtYmVyIG9mCitDQUIgYW5kIE1TSSBmaWxlcyBhbmQgYSBzaW5nbGUgRVhFLgorCitUaGUgRVhFIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGludG8gdGhlIGluc3RhbGxlci4gSXQgY29udGFpbnMgdGhlIFVJCithbmQgY29tbWFuZC1saW5lIGxvZ2ljLCBhcyB3ZWxsIGFzIHRoZSBhYmlsaXR5IHRvIGxvY2F0ZSBhbmQgb3B0aW9uYWxseQorZG93bmxvYWQgb3RoZXIgcGFydHMgb2YgdGhlIGxheW91dC4KKworRWFjaCBNU0kgY29udGFpbnMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGluc3RhbGwgYSBjb21wb25lbnQgb3IgZmVhdHVyZQorb2YgUHl0aG9uLiBUaGVzZSBNU0lzIHNob3VsZCBub3QgYmUgbGF1bmNoZWQgZGlyZWN0bHkgYnkgdXNlcnMuIE1TSXMgY2FuCitiZSBlbWJlZGRlZCBpbnRvIHRoZSBFWEUgb3IgYXV0b21hdGljYWxseSBkb3dubG9hZGVkIGFzIG5lZWRlZC4KKworRWFjaCBDQUIgY29udGFpbnMgdGhlIGZpbGVzIG1ha2luZyB1cCBhIFB5dGhvbiBpbnN0YWxsYXRpb24uIENBQnMgYXJlCitlbWJlZGRlZCBpbnRvIHRoZWlyIGFzc29jaWF0ZWQgTVNJIGFuZCBhcmUgbmV2ZXIgc2VlbiBieSB1c2Vycy4KKworTVNJcyBhcmUgb25seSByZXF1aXJlZCB3aGVuIHRoZSByZWxhdGVkIGZlYXR1cmUgb3IgY29tcG9uZW50IGlzIGJlaW5nCitpbnN0YWxsZWQuIFdoZW4gY29tcG9uZW50cyBhcmUgbm90IHNlbGVjdGVkIGZvciBpbnN0YWxsYXRpb24sIHRoZQorYXNzb2NpYXRlZCBNU0kgaXMgbm90IGRvd25sb2FkZWQuIFRoaXMgYWxsb3dzIHRoZSBpbnN0YWxsZXIgdG8gb2ZmZXIKK29wdGlvbnMgdG8gaW5zdGFsbCBkZWJ1Z2dpbmcgc3ltYm9scyBhbmQgYmluYXJpZXMgd2l0aG91dCBpbmNyZWFzaW5nCit0aGUgaW5pdGlhbCBkb3dubG9hZCBzaXplIGJ5IHNlcGFyYXRpbmcgdGhlbSBpbnRvIHRoZWlyIG93biBNU0lzLgorCitCdWlsZGluZyB0aGUgSW5zdGFsbGVyCis9PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciB0ZXN0aW5nLCB0aGUgaW5zdGFsbGVyIHNob3VsZCBiZSBidWlsdCB3aXRoIHRoZSBUb29scy9tc2kvYnVpbGQuYmF0CitzY3JpcHQ6CisKKyAgICBidWlsZC5iYXQgWy14ODZdIFsteDY0XSBbLS1kb2NdCisKK1RoaXMgc2NyaXB0IHdpbGwgYnVpbGQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIG9mIFB5dGhvbiBhbmQKK2dlbmVyYXRlIGFuIGluc3RhbGxlciBsYXlvdXQgaW4gUENCdWlsZC8od2luMzJ8YW1kNjQpL2VuLXVzLgorCitTcGVjaWZ5IC14ODYgYW5kL29yIC14NjQgdG8gYnVpbGQgZm9yIGVhY2ggcGxhdGZvcm0uIElmIG5laXRoZXIgaXMKK3NwZWNpZmllZCwgYm90aCBwbGF0Zm9ybXMgd2lsbCBiZSBidWlsdC4gQ3VycmVudGx5LCBib3RoIHRoZSBkZWJ1ZyBhbmQKK3JlbGVhc2UgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxlci4KKworU3BlY2lmeSAtLWRvYyB0byBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbiAoLmNobSkgZmlsZS4gSWYgdGhlIGZpbGUgaXMgbm90CithdmFpbGFibGUsIGl0IHdpbGwgc2ltcGx5IGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGluc3RhbGxlci4gRW5zdXJlCislUFlUSE9OJSBhbmQgJVNQSElOWEJVSUxEJSBhcmUgc2V0IHdoZW4gcGFzc2luZyB0aGlzIG9wdGlvbi4gWW91IG1heQorYWxzbyBzZXQgJUhUTUxIRUxQJSB0byB0aGUgSHRtbCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKSwgb3IgcHV0IEhIQyBvbgoreW91ciBQQVRIIG9yIGluIGV4dGVybmFscy8uCisKK0lmIFdpWCBpcyBub3QgZm91bmQgb24geW91ciBzeXN0ZW0sIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBkb3dubG9hZGVkCithbmQgZXh0cmFjdGVkIHRvIHRoZSBleHRlcm5hbHMvIGRpcmVjdG9yeS4KKworCitGb3IgYW4gb2ZmaWNpYWwgcmVsZWFzZSwgdGhlIGluc3RhbGxlciBzaG91bGQgYmUgYnVpbHQgd2l0aCB0aGUKK1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IHNjcmlwdDoKKworICAgIHNldCBQWVRIT049PHBhdGggdG8gUHl0aG9uIDIuNz4KKyAgICBzZXQgU1BISU5YQlVJTEQ9PHBhdGggdG8gc3BoaW54LWJ1aWxkLmV4ZT4KKyAgICBzZXQgUEFUSD08cGF0aCB0byBNZXJjdXJpYWwgKGhnLmV4ZSk+OworICAgICAgICAgICAgIDxwYXRoIHRvIEhUTUwgSGVscCBDb21waWxlciAoaGhjLmV4ZSk+OyVQQVRIJQorCisgICAgYnVpbGRyZWxlYXNlLmJhdCBbLXg4Nl0gWy14NjRdIFstRF0gWy1CXQorICAgICAgICBbLW8gPG91dHB1dCBkaXJlY3Rvcnk+XSBbLWMgPGNlcnRpZmljYXRlIG5hbWU+XQorCitTcGVjaWZ5IC14ODYgYW5kL29yIC14NjQgdG8gYnVpbGQgZm9yIGVhY2ggcGxhdGZvcm0uIElmIG5laXRoZXIgaXMKK3NwZWNpZmllZCwgYm90aCBwbGF0Zm9ybXMgd2lsbCBiZSBidWlsdC4gQ3VycmVudGx5LCBib3RoIHRoZSBkZWJ1ZyBhbmQKK3JlbGVhc2UgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxlci4KKworU3BlY2lmeSAtRCB0byBza2lwIHJlYnVpbGRpbmcgdGhlIGRvY3VtZW50YXRpb24uIFRoZSBkb2N1bWVudGF0aW9uIGlzCityZXF1aXJlZCBmb3IgYSByZWxlYXNlIGFuZCB0aGUgYnVpbGQgd2lsbCBmYWlsIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCisKK1NwZWNpZnkgLUIgdG8gc2tpcCByZWJ1aWxkaW5nIFB5dGhvbi4gVGhpcyBpcyB1c2VmdWwgdG8gb25seSByZWJ1aWxkIHRoZQoraW5zdGFsbGVyIGxheW91dCBhZnRlciBhIHByZXZpb3VzIGNhbGwgdG8gYnVpbGRyZWxlYXNlLmJhdC4KKworU3BlY2lmeSAtbyB0byBzZXQgYW4gb3V0cHV0IGRpcmVjdG9yeS4gVGhlIGluc3RhbGxlciBsYXlvdXRzIHdpbGwgYmUKK2NvcGllZCB0byBwbGF0Zm9ybS1zcGVjaWZpYyBzdWJkaXJlY3RvcmllcyBvZiB0aGlzIHBhdGguCisKK1NwZWNpZnkgLWMgdG8gY2hvb3NlIGEgY29kZS1zaWduaW5nIGNlcnRpZmljYXRlIHRvIGJlIHVzZWQgZm9yIGFsbCB0aGUKK3NpZ25hYmxlIGJpbmFyaWVzIGluIFB5dGhvbiBhcyB3ZWxsIGFzIGVhY2ggZmlsZSBtYWtpbmcgdXAgdGhlCitpbnN0YWxsZXIuIE9mZmljaWFsIHJlbGVhc2VzIG9mIFB5dGhvbiBtdXN0IGJlIHNpZ25lZC4KKworRW5zdXJlICVQWVRIT04lIGFuZCAlU1BISU5YQlVJTEQlIGFyZSBzZXQgd2hlbiBwYXNzaW5nIHRoaXMgb3B0aW9uLiBZb3UKK21heSBhbHNvIHNldCAlSFRNTEhFTFAlIHRvIHRoZSBIdG1sIEhlbHAgQ29tcGlsZXIgKGhoYy5leGUpLCBvciBwdXQgSEhDCitvbiB5b3VyIFBBVEggb3IgaW4gZXh0ZXJuYWxzLy4gWW91IHdpbGwgYWxzbyBuZWVkIE1lcmN1cmlhbCAoaGcuZXhlKSBvbgoreW91ciBQQVRILgorCitJZiBXaVggaXMgbm90IGZvdW5kIG9uIHlvdXIgc3lzdGVtLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZAorYW5kIGV4dHJhY3RlZCB0byB0aGUgZXh0ZXJuYWxzLyBkaXJlY3RvcnkuCisKK1RvIG1hbnVhbGx5IGJ1aWxkIGxheW91dHMgb2YgdGhlIGluc3RhbGxlciwgYnVpbGQgb25lIG9mIHRoZSBwcm9qZWN0cyBpbgordGhlIGJ1bmRsZSBmb2xkZXIuCisKKyAgICBtc2J1aWxkIGJ1bmRsZVxzbmFwc2hvdC53aXhwcm9qCisgICAgbXNidWlsZCBidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qCisgICAgbXNidWlsZCBidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oKKyAgICBtc2J1aWxkIGJ1bmRsZVxmdWxsLndpeHByb2oKKworc25hcHNob3Qud2l4cHJvaiBwcm9kdWNlcyBhIHRlc3QgaW5zdGFsbGVyIHZlcnNpb25lZCBiYXNlZCBvbiB0aGUgZGF0ZS4KKworcmVsZWFzZXdlYi53aXhwcm9qIHByb2R1Y2VzIGEgcmVsZWFzZSBpbnN0YWxsZXIgdGhhdCBkb2VzIG5vdCBlbWJlZCBhbnkKK29mIHRoZSBsYXlvdXQuCisKK3JlbGVhc2Vsb2NhbC53aXhwcm9qIHByb2R1Y2VzIGEgcmVsZWFzZSBpbnN0YWxsZXIgdGhhdCBlbWJlZHMgdGhlIGZpbGVzCityZXF1aXJlZCBmb3IgYSBkZWZhdWx0IGluc3RhbGxhdGlvbi4KKworZnVsbC53aXhwcm9qIHByb2R1Y2VzIGEgdGVzdCBpbnN0YWxsZXIgdGhhdCBlbWJlZHMgdGhlIGVudGlyZSBsYXlvdXQuCisKK1RoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBtYXkgYmUgcGFzc2VkIHdoZW4gYnVpbGRpbmcgdGhlc2UgcHJvamVjdHMuCisKKyAgL3A6QnVpbGRGb3JSZWxlYXNlPSh0cnVlfGZhbHNlKQorICAgIFdoZW4gdHJ1ZSwgYWRkcyBleHRyYSB2ZXJpZmljYXRpb24gdG8gZW5zdXJlIGEgY29tcGxldGUgaW5zdGFsbGVyIGlzCisgICAgcHJvZHVjZWQuIEZvciBleGFtcGxlLCBiaW51dGlscyBpcyByZXF1aXJlZCB3aGVuIGJ1aWxkaW5nIGZvciBhIHJlbGVhc2UKKyAgICB0byBnZW5lcmF0ZSBNaW5HVy1jb21wYXRpYmxlIGxpYnJhcmllcywgYW5kIHRoZSBidWlsZCB3aWxsIGJlIGFib3J0ZWQgaWYKKyAgICB0aGlzIGZhaWxzLiBEZWZhdWx0cyB0byBmYWxzZS4KKworICAvcDpSZWxlYXNlVXJpPShhbnkgVVJJKQorICAgIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcyBmb3IgdGhlIGluc3RhbGxlcnMgdG8gYWxsb3cgc2lkZS1ieS1zaWRlCisgICAgaW5zdGFsbGF0aW9uLiBGb3JrcyBvZiBQeXRob24gY2FuIHVzZSB0aGUgc2FtZSBpbnN0YWxsZXIgaW5mcmFzdHJ1Y3R1cmUKKyAgICBieSBwcm92aWRpbmcgYSB1bmlxdWUgVVJJIGZvciB0aGlzIHByb3BlcnR5LiBJdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGFuCisgICAgYWN0aXZlIGludGVybmV0IGFkZHJlc3MuIERlZmF1bHRzIHRvICQoQ29tcHV0ZXJOYW1lKS4KKworICAgIE9mZmljaWFsIHJlbGVhc2VzIHVzZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvKGFyY2hpdGVjdHVyZSBuYW1lKQorCisgIC9wOkRvd25sb2FkVXJsQmFzZT0oYW55IFVSSSkKKyAgICBTcGVjaWZpZXMgdGhlIGJhc2Ugb2YgYSBVUkwgd2hlcmUgbWlzc2luZyBwYXJ0cyBvZiB0aGUgaW5zdGFsbGVyIGxheW91dAorICAgIGNhbiBiZSBkb3dubG9hZGVkIGZyb20uIFRoZSBidWlsZCB2ZXJzaW9uIGFuZCBhcmNoaXRlY3R1cmUgd2lsbCBiZQorICAgIGFwcGVuZGVkIHRvIGNyZWF0ZSB0aGUgZnVsbCBhZGRyZXNzLiBJZiBvbWl0dGVkLCBtaXNzaW5nIGNvbXBvbmVudHMgd2lsbAorICAgIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGRvd25sb2FkZWQuCisKKyAgL3A6RG93bmxvYWRVcmw9KGFueSBVUkkpCisgICAgU3BlY2lmaWVzIHRoZSBmdWxsIFVSTCB3aGVyZSBtaXNzaW5nIHBhcnRzIG9mIHRoZSBpbnN0YWxsZXIgbGF5b3V0IGNhbgorICAgIGJlIGRvd25sb2FkZWQgZnJvbS4gU2hvdWxkIG5vcm1hbGx5IGluY2x1ZGUgJ3syfScsIHdoaWNoIHdpbGwgYmUKKyAgICBzdWJzdGl0dXRlZCBmb3IgdGhlIGZpbGVuYW1lLiBJZiBvbWl0dGVkLCBtaXNzaW5nIGNvbXBvbmVudHMgd2lsbCBub3QgYmUKKyAgICBhdXRvbWF0aWNhbGx5IGRvd25sb2FkZWQuIElmIHNwZWNpZmllZCwgdGhpcyB2YWx1ZSBvdmVycmlkZXMKKyAgICBEb3dubG9hZFVybEJhc2UuCisKKyAgL3A6U2lnbmluZ0NlcnRpZmljYXRlPShjZXJ0aWZpY2F0ZSBuYW1lKQorICAgIFNwZWNpZmllcyB0aGUgY2VydGlmaWNhdGUgdG8gc2lnbiB0aGUgaW5zdGFsbGVyIGxheW91dCB3aXRoLiBJZiBvbWl0dGVkLAorICAgIHRoZSBsYXlvdXQgd2lsbCBub3QgYmUgc2lnbmVkLgorCisgIC9wOlJlYnVpbGRBbGw9KHRydWV8ZmFsc2UpCisgICAgV2hlbiB0cnVlLCByZWJ1aWxkcyBhbGwgb2YgdGhlIE1TSXMgbWFraW5nIHVwIHRoZSBsYXlvdXQuIERlZmF1bHRzIHRvCisgICAgdHJ1ZS4KKworTW9kaWZ5aW5nIHRoZSBJbnN0YWxsZXIKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjb2RlIGZvciB0aGUgaW5zdGFsbGVyIGlzIGRpdmlkZWQgaW50byB0aHJlZSBtYWluIGdyb3VwczogcGFja2FnZXMsCit0aGUgYnVuZGxlIGFuZCB0aGUgYm9vdHN0cmFwIGFwcGxpY2F0aW9uLgorCitQYWNrYWdlcworLS0tLS0tLS0KKworUGFja2FnZXMgYXBwZWFyIGFzIHN1YmRpcmVjdG9yaWVzIG9mIFRvb2xzL21zaSAob3RoZXIgdGhhbiB0aGUgYnVuZGxlLworZGlyZWN0b3J5KS4gVGhlIHByb2plY3QgZmlsZSBpcyBhIC53aXhwcm9qIGFuZCB0aGUgYnVpbGQgb3V0cHV0IGlzIGEKK3NpbmdsZSBNU0kuIFBhY2thZ2VzIGFyZSBidWlsdCB3aXRoIHRoZSBXaVggVG9vbHNldC4gU29tZSBwcm9qZWN0IGZpbGVzCitzaGFyZSBzb3VyY2UgZmlsZXMgYW5kIHVzZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyB0byBlbmFibGUgcGFydGljdWxhcgorZmVhdHVyZXMuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdXNlZCB0byBrZWVwIHRoZSBzb3VyY2VzIGNsb3NlIHdoZW4gdGhlCitmaWxlcyBhcmUgcmVsYXRlZCwgYnV0IHByb2R1Y2UgbXVsdGlwbGUgaW5kZXBlbmRlbnQgcGFja2FnZXMuCisKK0EgcGFja2FnZSBpcyB0aGUgc21hbGxlc3QgZWxlbWVudCB0aGF0IG1heSBiZSBpbmRlcGVuZGVudGx5IGluc3RhbGxlZCBvcgordW5pbnN0YWxsZWQgKGFzIHVzZWQgaW4gdGhpcyBpbnN0YWxsZXIpLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3Qgc3VpdGUgaGFzCitpdHMgb3duIHBhY2thZ2UsIGFzIHVzZXJzIGNhbiBjaG9vc2UgdG8gYWRkIG9yIHJlbW92ZSBpdCBhZnRlciB0aGUKK2luaXRpYWwgaW5zdGFsbGF0aW9uLgorCitBbGwgdGhlIGZpbGVzIGluc3RhbGxlZCBieSBhIHNpbmdsZSBwYWNrYWdlIHNob3VsZCBiZSByZWxhdGVkLCB0aG91Z2gKK3NvbWUgcGFja2FnZXMgbWF5IG5vdCBpbnN0YWxsIGFueSBmaWxlcy4gRm9yIGV4YW1wbGUsIHRoZSBwaXAgcGFja2FnZQorZXhlY3V0ZXMgdGhlIGVuc3VyZXBpcCBwYWNrYWdlLCBidXQgZG9lcyBub3QgYWRkIG9yIHJlbW92ZSBhbnkgb2YgaXRzCitvd24gZmlsZXMuIChJdCBpcyByZXByZXNlbnRlZCBhcyBhIHBhY2thZ2UgYmVjYXVzZSBvZiBpdHMKK2luc3RhbGxlZC91bmluc3RhbGxlZCBuYXR1cmUsIGFzIG9wcG9zZWQgdG8gdGhlICJwcmVjb21waWxlIHN0YW5kYXJkCitsaWJyYXJ5IiBvcHRpb24sIGZvciBleGFtcGxlLikgRGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMgYXJlIGhhbmRsZWQKK2J5IHRoZSBidW5kbGUsIGJ1dCBwYWNrYWdlcyBzaG91bGQgZGV0ZWN0IHdoZW4gZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nCithbmQgcmFpc2UgYW4gZXJyb3IuCisKK1BhY2thZ2VzIHRoYXQgaW5jbHVkZSBhIGxvdCBvZiBmaWxlcyBtYXkgdXNlIGFuIEluc3RhbGxGaWxlcyBlbGVtZW50IGluCit0aGUgLndpeHByb2ogZmlsZSB0byBnZW5lcmF0ZSBzb3VyY2VzLiBTZWUgbGliL2xpYi53aXhwcm9qIGZvciBhbgorZXhhbXBsZSwgYW5kIG1zaS50YXJnZXRzIGFuZCBjc3ZfdG9fd3hzLnB5IGZvciB0aGUgaW1wbGVtZW50YXRpb24uIFRoaXMKK2VsZW1lbnQgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgY29kZSBmb3IgY2xlYW5pbmcgdXAgYW5kCityZW1vdmluZyBfX3B5Y2FjaGVfXyBmb2xkZXJzIGluIGFueSBkaXJlY3RvcnkgY29udGFpbmluZyAucHkgZmlsZXMuCisKK0FsbCBwYWNrYWdlcyBhcmUgYnVpbHQgd2l0aCB0aGUgVG9vbHMvbXNpL2NvbW1vbi53eHMgZmlsZSwgYW5kIHNvIGFueQorZGlyZWN0b3J5IG9yIHByb3BlcnR5IGluIHRoaXMgZmlsZSBtYXkgYmUgcmVmZXJlbmNlZC4gT2YgcGFydGljdWxhcgoraW50ZXJlc3Q6CisKKyAgUkVHSVNUUllLRVkgKHByb3BlcnR5KQorICAgIFRoZSByZWdpc3RyeSBrZXkgZm9yIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbi4KKworICBJbnN0YWxsRGlyZWN0b3J5IChkaXJlY3RvcnkpCisgICAgVGhlIHJvb3QgaW5zdGFsbCBkaXJlY3RvcnkgZm9yIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbi4gU3ViZGlyZWN0b3JpZXMKKyAgICBhcmUgYWxzbyBzcGVjaWZpZWQgaW4gdGhpcyBmaWxlIChETExzLCBMaWIsIGV0Yy4pCisKKyAgTWVudURpciAoZGlyZWN0b3J5KQorICAgIFRoZSBTdGFydCBNZW51IGZvbGRlciBmb3IgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uLgorCisgIFVwZ3JhZGVUYWJsZSAocHJvcGVydHkpCisgICAgRXZlcnkgcGFja2FnZSBzaG91bGQgcmVmZXJlbmNlIHRoaXMgcHJvcGVydHkgdG8gaW5jbHVkZSB1cGdyYWRlCisgICAgaW5mb3JtYXRpb24uCisKK1RoZSAud3hsX3RlbXBsYXRlIGZpbGUgaXMgc3BlY2lhbGx5IGhhbmRsZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgdGhpcworcHJvamVjdCB0byBwZXJmb3JtIHt7c3Vic3RpdHV0aW9uc319IGFzIGRlZmluZWQgaW4gbXNpLnRhcmdldHMuIFRoZXkKK3Nob3VsZCBiZSBpbmNsdWRlZCBpbiBwcm9qZWN0cyBhcyA8V3hsVGVtcGxhdGU+IGl0ZW1zLCB3aGVyZSAud3hsIGZpbGVzCithcmUgbm9ybWFsbHkgaW5jbHVkZWQgYXMgPEVtYmVkZGVkUmVzb3VyY2U+IGl0ZW1zLgorCitCdW5kbGUKKy0tLS0tLQorCitUaGUgYnVuZGxlIGlzIGNvbXBpbGVkIHRvIHRoZSBtYWluIEVYRSBlbnRyeSBwb2ludCB0aGF0IGZvciBtb3N0IHVzZXJzCit3aWxsIHJlcHJlc2VudCB0aGUgUHl0aG9uIGluc3RhbGxlci4gSXQgaXMgYnVpbHQgZnJvbSBUb29scy9tc2kvYnVuZGxlCit3aXRoIHBhY2thZ2VzIHJlZmVyZW5jZXMgaW4gVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzLgorCitCdWlsZCBsb2dpYyBmb3IgdGhlIGJ1bmRsZSBpcyBpbiBidW5kbGUudGFyZ2V0cywgYnV0IHNob3VsZCBiZSBpbnZva2VkCit0aHJvdWdoIG9uZSBvZiB0aGUgLndpeHByb2ogZmlsZXMgYXMgZGVzY3JpYmVkIGluIEJ1aWxkaW5nIHRoZQorSW5zdGFsbGVyLgorCitUaGUgVUkgaXMgc2VwYXJhdGVkIGJldHdlZW4gRGVmYXVsdC50aG0gKFVJIGxheW91dCksIERlZmF1bHQud3hsCisoc3RyaW5ncyksIGJ1bmRsZS53eHMgKHByb3BlcnRpZXMpIGFuZCB0aGUgYm9vdHN0cmFwIGFwcGxpY2F0aW9uLgorQnVuZGxlLnd4cyBhbHNvIGNvbnRhaW5zIHRoZSBjaGFpbiwgd2hpY2ggaXMgdGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8KK2luc3RhbGwgYW5kIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSBpbnN0YWxsZWQgaW4uIFRoZXNlIHJlZmVyIHRvIG5hbWVkCitwYWNrYWdlIGdyb3VwcyBpbiBidW5kbGUvcGFja2FnZWdyb3Vwcy4KKworRWFjaCBwYWNrYWdlIGdyb3VwIHNwZWNpZmllcyBvbmUgb3IgbW9yZSBwYWNrYWdlcyB0byBpbnN0YWxsLiBNb3N0CitwYWNrYWdlcyByZXF1aXJlIHR3byBzZXBhcmF0ZSBlbnRyaWVzIHRvIHN1cHBvcnQgYm90aCBwZXItdXNlciBhbmQKK2FsbC11c2VycyBpbnN0YWxsYXRpb25zLiBCZWNhdXNlIHRoZXNlIHJldXNlIHRoZSBzYW1lIHBhY2thZ2UsIGl0IGRvZXMKK25vdCBpbmNyZWFzZSB0aGUgb3ZlcmFsbCBzaXplIG9mIHRoZSBwYWNrYWdlLgorCitQYWNrYWdlIGdyb3VwcyByZWZlciB0byBwYXlsb2FkIGdyb3Vwcywgd2hpY2ggYWxsb3cgYmV0dGVyIGNvbnRyb2wgb3ZlcgorZW1iZWRkaW5nIGFuZCBkb3dubG9hZGluZyBmaWxlcyB0aGFuIHRoZSBkZWZhdWx0IHNldHRpbmdzLiBXaGV0aGVyIGZpbGVzCithcmUgZW1iZWRkZWQgYW5kIHdoZXJlIHRoZXkgYXJlIGRvd25sb2FkZWQgZnJvbSBkZXBlbmRzIG9uIHNldHRpbmdzCitjcmVhdGVkIGJ5IHRoZSBwcm9qZWN0IGZpbGVzLgorCitQYWNrYWdlIHJlZmVyZW5jZXMgY2FuIGluY2x1ZGUgaW5zdGFsbCBjb25kaXRpb25zIHRoYXQgZGV0ZXJtaW5lIHdoZW4gdG8KK2luc3RhbGwgdGhlIHBhY2thZ2UuIFdoZW4gYSBwYWNrYWdlIGlzIGEgZGVwZW5kZW5jeSBmb3Igb3RoZXJzLCB0aGUKK2NvbmRpdGlvbiBzaG91bGQgYmUgY3JhZnRlZCB0byBlbnN1cmUgaXQgaXMgaW5zdGFsbGVkLgorCitNU0kgcGFja2FnZXMgYXJlIGluc3RhbGxlZCBvciB1bmluc3RhbGxlZCBiYXNlZCBvbiB0aGVpciBjdXJyZW50IHN0YXRlCithbmQgdGhlIGluc3RhbGwgY29uZGl0aW9uLiBUaGlzIG1ha2VzIHRoZW0gbW9zdCBzdWl0YWJsZSBmb3IgZmVhdHVyZXMKK3RoYXQgYXJlIGNsZWFybHkgcHJlc2VudCBvciBhYnNlbnQgZnJvbSB0aGUgdXNlcidzIG1hY2hpbmUuCisKK0VYRSBwYWNrYWdlcyBhcmUgZXhlY3V0ZWQgYmFzZWQgb24gYSBjdXN0b21pc2FibGUgY29uZGl0aW9uIHRoYXQgY2FuIGJlCitvbWl0dGVkLiBUaGlzIG1ha2VzIHRoZW0gc3VpdGFibGUgZm9yIHByZS0gb3IgcG9zdC1pbnN0YWxsIHRhc2tzIHRoYXQKK25lZWQgdG8gcnVuIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworQm9vdHN0cmFwIEFwcGxpY2F0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbiBpcyBhIEMrKyBhcHBsaWNhdGlvbiB0aGF0IGNvbnRyb2xzIHRoZSBVSSBhbmQKK2luc3RhbGxhdGlvbi4gV2hpbGUgaXQgZG9lcyBub3QgZGlyZWN0bHkgY29tcGlsZSBpbnRvIHRoZSBtYWluIEVYRSBvZgordGhlIGluc3RhbGxlciwgaXQgZm9ybXMgdGhlIG1haW4gYWN0aXZlIGNvbXBvbmVudC4gTW9zdCBvZiB0aGUKK2luc3RhbGxhdGlvbiBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IFdpWCwgYW5kIHNvIHRoZSBib290c3RyYXAKK2FwcGxpY2F0aW9uIGlzIHByZWRvbWluYW50bHkgcmVzcG9uc2libGUgZm9yIHRoZSBjb2RlIGJlaGluZCB0aGUgVUkgdGhhdAoraXMgZGVmaW5lZCBpbiB0aGUgRGVmYXVsdC50aG0gZmlsZS4gVGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbiBjb2RlIGlzIGluCitidW5kbGUvYm9vdHN0cmFwIGFuZCBpcyBidWlsdCBhdXRvbWF0aWNhbGx5IHdoZW4gYnVpbGRpbmcgdGhlIGJ1bmRsZS4KKworSW5zdGFsbGF0aW9uIExheW91dAorPT09PT09PT09PT09PT09PT09PQorCitUaGVyZSBhcmUgdHdvIGluc3RhbGxhdGlvbiBsYXlvdXRzIGZvciBQeXRob24gb24gV2luZG93cywgd2l0aCB0aGUgb25seQorZGlmZmVyZW5jZXMgYmVpbmcgc3VwcG9ydGluZyBmaWxlcy4gQSBsYXlvdXQgaXMgc2VsZWN0ZWQgaW1wbGljaXRseQorYmFzZWQgb24gd2hldGhlciB0aGUgaW5zdGFsbCBpcyBmb3IgYWxsIHVzZXJzIG9mIHRoZSBtYWNoaW5lIG9yIGp1c3QgZm9yCit0aGUgdXNlciBwZXJmb3JtaW5nIHRoZSBpbnN0YWxsYXRpb24uCisKK1RoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBsb2NhdGlvbiB3aGVuIGluc3RhbGxpbmcgZm9yIGFsbCB1c2VycyBpcworIiVQcm9ncmFtRmlsZXMlXFB5dGhvbiAzLlgiIGZvciB0aGUgNjQtYml0IGludGVycHJldGVyIGFuZAorIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHl0aG9uIDMuWCIgZm9yIHRoZSAzMi1iaXQgaW50ZXJwcmV0ZXIuIChOb3RlIHRoYXQKK3RoZSBsYXR0ZXIgcGF0aCBpcyBlcXVpdmFsZW50IHRvICIlUHJvZ3JhbUZpbGVzJVxQeXRob24gMy5YIiB3aGVuCitydW5uaW5nIGEgMzItYml0IHZlcnNpb24gb2YgV2luZG93cy4pIFRoaXMgbG9jYXRpb24gcmVxdWlyZXMKK2FkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMgdG8gaW5zdGFsbCBvciBsYXRlciBtb2RpZnkgdGhlIGluc3RhbGxhdGlvbi4KKworVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIHdoZW4gaW5zdGFsbGluZyBmb3IgdGhlIGN1cnJlbnQgdXNlcgoraXMgIiVMb2NhbEFwcERhdGElXFByb2dyYW1zXFB5dGhvblxQeXRob24zWCIgZm9yIHRoZSA2NC1iaXQgaW50ZXJwcmV0ZXIKK2FuZCAiJUxvY2FsQXBwRGF0YSVcUHJvZ3JhbXNcUHl0aG9uXFB5dGhvbjNYLTMyIiBmb3IgdGhlIDMyLWJpdAoraW50ZXJwcmV0ZXIuIE9ubHkgdGhlIGN1cnJlbnQgdXNlciBjYW4gYWNjZXNzIHRoaXMgbG9jYXRpb24uIFRoaXMKK3Byb3ZpZGVzIGEgc3VpdGFibGUgbGV2ZWwgb2YgcHJvdGVjdGlvbiBhZ2FpbnN0IG1hbGljaW91cyBtb2RpZmljYXRpb24KK29mIFB5dGhvbidzIGZpbGVzLgorCitXaXRoaW4gdGhpcyBpbnN0YWxsIGRpcmVjdG9yeSBpcyB0aGUgZm9sbG93aW5nIGFwcHJveGltYXRlIGxheW91dDoKKworLlxweXRob25bd10uZXhlIFRoZSBjb3JlIGV4ZWN1dGFibGUgZmlsZXMKKy5cRExMcyAgICAgICAgICBTdGRsaWIgZXh0ZW5zaW9ucyAoKi5weWQpIGFuZCBkZXBlbmRlbmNpZXMKKy5cRG9jICAgICAgICAgICBEb2N1bWVudGF0aW9uICgqLmNobSkKKy5caW5jbHVkZSAgICAgICBEZXZlbG9wbWVudCBoZWFkZXJzICgqLmgpCisuXExpYiAgICAgICAgICAgU3RhbmRhcmQgbGlicmFyeQorLlxMaWJcdGVzdCAgICAgIFRlc3Qgc3VpdGUKKy5cbGlicyAgICAgICAgICBEZXZlbG9wbWVudCBsaWJyYXJpZXMgKCoubGliKQorLlxTY3JpcHRzICAgICAgIExhdW5jaGVyIHNjcmlwdHMgKCouZXhlLCAqLnB5KQorLlx0Y2wgICAgICAgICAgIFRjbCBkZXBlbmRlbmNpZXMgKCouZGxsLCAqLnRjbCBhbmQgb3RoZXJzKQorLlxUb29scyAgICAgICAgIFRvb2wgc2NyaXB0cyAoKi5weSkKKworV2hlbiBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycywgdGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgaW5zdGFsbGVkIHRvCitlaXRoZXIgIiVTeXN0ZW1Sb290JVxTeXN0ZW0zMiIgb3IgIiVTeXN0ZW1Sb290JVxTeXNXT1c2NCIgYXMKK2FwcHJvcHJpYXRlLiBGb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhleSBhcmUgaW5zdGFsbGVkIGluIHRoZSBQeXRob24KK2luc3RhbGwgZGlyZWN0b3J5LgorCisuXHB5dGhvbjN4LmRsbCAgICAgIFRoZSBjb3JlIGludGVycHJldGVyCisuXHB5dGhvbjMuZGxsICAgICAgIFRoZSBzdGFibGUgQUJJIHJlZmVyZW5jZQorLlxhcHBjcnQxNDAuZGxsICAgICBNaWNyb3NvZnQgVmlzdWFsIEMgUnVudGltZQorLlxkZXNrdG9wY3J0MTQwLmRsbCBNaWNyb3NvZnQgVmlzdWFsIEMgUnVudGltZQorLlx2Y3J1bnRpbWUxNDAuZGxsICBNaWNyb3NvZnQgVmlzdWFsIEMgUnVudGltZQorCitXaGVuIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzLCB0aGUgZm9sbG93aW5nIGZpbGVzIGFyZSBpbnN0YWxsZWQgdG8KKyIlU3lzdGVtUm9vdCUiICh0eXBpY2FsbHkgIkM6XFdpbmRvd3MiKSB0byBlbnN1cmUgdGhleSBhcmUgYWx3YXlzCithdmFpbGFibGUgb24gUEFUSC4gKFNlZSBMYXVuY2hpbmcgUHl0aG9uIGJlbG93LikgRm9yIHRoZSBjdXJyZW50IHVzZXIsCit0aGV5IGFyZSBpbnN0YWxsZWQgaW4gdGhlIFB5dGhvbiBpbnN0YWxsIGRpcmVjdG9yeS4KKworLlxweVt3XS5leGUgICAgICAgICBQRVAgMzk3IGxhdW5jaGVyCisKK1N5c3RlbSBTZXR0aW5ncworPT09PT09PT09PT09PT09CisKK09uIGluc3RhbGxhdGlvbiwgcmVnaXN0cnkga2V5cyBhcmUgY3JlYXRlZCBzbyB0aGF0IG90aGVyIGFwcGxpY2F0aW9ucworY2FuIGxvY2F0ZSBhbmQgaWRlbnRpZnkgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24uIFRoZSBsb2NhdGlvbnMgb2YgdGhlc2UKK2tleXMgdmFyeSBiYXNlZCBvbiB0aGUgaW5zdGFsbCB0eXBlLgorCitGb3IgNjQtYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycywgdGhlIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwzLlgKKworRm9yIDMyLWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSA2NC1iaXQgb3BlcmF0aW5nCitzeXN0ZW0sIHRoZSByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcV293NjQzMk5vZGVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YLTMyCisKK0ZvciAzMi1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzIG9uIGEgMzItYml0IG9wZXJhdGluZworc3lzdGVtLCB0aGUgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWC0zMgorCitGb3IgNjQtYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXI6CisgICAgSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YCisKK0ZvciAzMi1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlcjoKKyAgICBIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwzLlgtMzIKKworV2hlbiB0aGUgY29yZSBQeXRob24gZXhlY3V0YWJsZXMgYXJlIGluc3RhbGxlZCwgYSBrZXkgIkluc3RhbGxQYXRoIiBpcworY3JlYXRlZCB3aXRoaW4gdGhlIHJvb3Qga2V5IHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZQorZXhlY3V0YWJsZSdzIGluc3RhbGwgZGlyZWN0b3J5LiBXaXRoaW4gdGhpcyBrZXksIGEga2V5ICJJbnN0YWxsR3JvdXAiIGlzCitjcmVhdGVkIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBwcm9kdWN0IG5hbWUgIlB5dGhvbiAzLlgiLgorCitXaGVuIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBpcyBpbnN0YWxsZWQsIGEga2V5ICJQeXRob25QYXRoIiBpcworY3JlYXRlZCB3aXRoaW4gdGhlIHJvb3Qga2V5IHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBmdWxsIHBhdGgKK3RvIHRoZSBMaWIgZm9sZGVyIGZvbGxvd2VkIGJ5IHRoZSBwYXRoIHRvIHRoZSBETExzIGZvbGRlciwgc2VwYXJhdGVkIGJ5CithIHNlbWljb2xvbi4KKworV2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBpbnN0YWxsZWQsIGEga2V5ICJIZWxwIiBpcyBjcmVhdGVkIHdpdGhpbiB0aGUKK3Jvb3Qga2V5LCB3aXRoIGEgc3Via2V5ICJNYWluIFB5dGhvbiBEb2N1bWVudGF0aW9uIiB3aXRoIGl0cyBkZWZhdWx0Cit2YWx1ZSBzZXQgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgaW5zdGFsbGVkIENITSBmaWxlLgorCisKK1RoZSBweS5leGUgbGF1bmNoZXIgaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgYSByZWd1bGFyIFB5dGhvbiBpbnN0YWxsLAorYnV0IHVzaW5nIGEgc2VwYXJhdGUgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGl0IHRvIG1vcmUgZWFzaWx5IHNwYW4KK3ZlcnNpb25zIG9mIFB5dGhvbi4gQXMgYSByZXN1bHQsIGl0IGhhcyBkaWZmZXJlbnQgcm9vdCBrZXlzIGZvciBpdHMKK3JlZ2lzdHJ5IGVudHJpZXM6CisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSA2NC1iaXQgb3BlcmF0aW5nIHN5c3RlbSwgdGhlCitsYXVuY2hlcidzIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxXb3c2NDMyTm9kZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycyBvbiBhIDMyLWJpdCBvcGVyYXRpbmcgc3lzdGVtLCB0aGUKK2xhdW5jaGVyJ3Mgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFB5dGhvblxMYXVuY2hlcgorCitXaGVuIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlcjoKKyAgICBIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiB0aGUgbGF1bmNoZXIgaXMgaW5zdGFsbGVkLCBhIGtleSAiSW5zdGFsbFBhdGgiIGlzIGNyZWF0ZWQgd2l0aGluCitpdHMgcm9vdCBrZXkgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlIGxhdW5jaGVyJ3MgaW5zdGFsbAorZGlyZWN0b3J5LiBGaWxlIGFzc29jaWF0aW9ucyBhcmUgYWxzbyBjcmVhdGVkIGZvciAucHksIC5weXcsIC5weWMgYW5kCisucHlvIGZpbGVzLgorCitMYXVuY2hpbmcgUHl0aG9uCis9PT09PT09PT09PT09PT09CisKK1doZW4gYSBmZWF0dXJlIG9mZmVyaW5nIHVzZXIgZW50cnkgcG9pbnRzIGluIHRoZSBTdGFydCBNZW51IGlzCitpbnN0YWxsZWQsIGEgZm9sZGVyICJQeXRob24gMy5YIiBpcyBjcmVhdGVkLiBFdmVyeSBzaG9ydGN1dCBzaG91bGQgYmUKK2NyZWF0ZWQgd2l0aGluIHRoaXMgZm9sZGVyLCBhbmQgZWFjaCBzaG9ydGN1dCBzaG91bGQgaW5jbHVkZSB0aGUgdmVyc2lvbgorYW5kIHBsYXRmb3JtIHRvIGFsbG93IHVzZXJzIHRvIGlkZW50aWZ5IHRoZSBzaG9ydGN1dCBpbiBhIHNlYXJjaCByZXN1bHRzCitwYWdlLgorCitUaGUgY29yZSBQeXRob24gZXhlY3V0YWJsZXMgY3JlYXRlcyBhIHNob3J0Y3V0ICJQeXRob24gMy5YICgzMi1iaXQpIiBvcgorIlB5dGhvbiAzLlggKDY0LWJpdCkiIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJwcmV0ZXIuCisKK1RoZSBkb2N1bWVudGF0aW9uIGNyZWF0ZXMgYSBzaG9ydGN1dCAiUHl0aG9uIDMuWCAzMi1iaXQgTWFudWFscyIgb3IKKyJQeXRob24gMy5YIDY0LWJpdCBNYW51YWxzIi4gVGhlIGRvY3VtZW50YXRpb24gaXMgaWRlbnRpY2FsIGZvciBhbGwKK3BsYXRmb3JtcywgYnV0IHRoZSBzaG9ydGN1dHMgbmVlZCB0byBiZSBzZXBhcmF0ZSB0byBhdm9pZCB1bmluc3RhbGxhdGlvbgorY29uZmxpY3RzLgorCitJbnN0YWxsaW5nIElETEUgY3JlYXRlcyBhIHNob3J0Y3V0ICJJRExFIChQeXRob24gMy5YIDMyLWJpdCkiIG9yICJJRExFCisoUHl0aG9uIDMuWCA2NC1iaXQpIiBkZXBlbmRpbmcgb24gdGhlIGludGVycHJldGVyLgorCisKK0ZvciB1c2VycyB3aG8gb2Z0ZW4gbGF1bmNoIFB5dGhvbiBmcm9tIGEgQ29tbWFuZCBQcm9tcHQsIGFuIG9wdGlvbiBpcworcHJvdmlkZWQgdG8gYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBweXRob24uZXhlIHRvIHRoZSB1c2VyIG9yCitzeXN0ZW0gUEFUSCB2YXJpYWJsZS4gSWYgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5CithbmQgdGhlIFNjcmlwdHMgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzeXN0ZW0gUEFUSAorZm9yIGFuIGFsbCB1c2VycyBpbnN0YWxsIGFuZCB0aGUgdXNlciBQQVRIIGZvciBhIHBlci11c2VyIGluc3RhbGwuCisKK1doZW4gdGhlIHVzZXIgb25seSBoYXMgb25lIHZlcnNpb24gb2YgUHl0aG9uIGluc3RhbGxlZCwgdGhpcyB3aWxsIGJlaGF2ZQorYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIGJlY2F1c2UgV2luZG93cyBzZWFyY2hlcyB0aGUgc3lzdGVtIFBBVEggYmVmb3JlCit0aGUgdXNlciBQQVRILCB1c2VycyBjYW5ub3Qgb3ZlcnJpZGUgYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gb2YKK1B5dGhvbiBvbiB0aGVpciBQQVRILiBGdXJ0aGVyLCBiZWNhdXNlIHRoZSBpbnN0YWxsZXIgY2FuIG9ubHkgcHJlcGVuZCB0bwordGhlIHBhdGgsIGxhdGVyIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIKK2VhcmxpZXIgaW5zdGFsbGF0aW9ucywgcmVnYXJkbGVzcyBvZiBpbnRlcnByZXRlciB2ZXJzaW9uLgorCitCZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHNlbnNpYmxlIFBBVEgKK2NvbmZpZ3VyYXRpb24sIHVzZXJzIGFyZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIHB5LmV4ZSBsYXVuY2hlciBhbmQKK21hbnVhbGx5IG1vZGlmeSB0aGVpciBQQVRIIHZhcmlhYmxlIHRvIGFkZCBTY3JpcHRzIGRpcmVjdG9yaWVzIGluIHRoZWlyCitwcmVmZXJyZWQgb3JkZXIuIFN5c3RlbS13aWRlIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIHNob3VsZCBjb25zaWRlciBub3QKK21vZGlmeWluZyBQQVRILCBvciB1c2luZyBhbiBhbHRlcm5hdGl2ZSB0ZWNobm9sb2d5IHRvIG1vZGlmeSB0aGVpcgordXNlcnMnIFBBVEggdmFyaWFibGVzLgorCisKK1RoZSBweS5leGUgbGF1bmNoZXIgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBpdCB1c2VzIGEgY29uc2lzdGVudCBhbmQKK3NlbnNpYmxlIHNlYXJjaCBvcmRlciBmb3IgUHl0aG9uIGluc3RhbGxhdGlvbnMuIFVzZXIgaW5zdGFsbGF0aW9ucyBhcmUKK3ByZWZlcnJlZCBvdmVyIHN5c3RlbS13aWRlIGluc3RhbGxzLCBhbmQgbGF0ZXIgdmVyc2lvbnMgYXJlIHByZWZlcnJlZAorcmVnYXJkbGVzcyBvZiBpbnN0YWxsYXRpb24gb3JkZXIgKHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHB5LmV4ZQorY3VycmVudGx5IHByZWZlcnMgMi54IHZlcnNpb25zIG92ZXIgMy54IHZlcnNpb25zIHdpdGhvdXQgdGhlIC0zIGNvbW1hbmQKK2xpbmUgYXJndW1lbnQpLgorCitGb3IgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlcnByZXRlcnMsIHRoZSAzMi1iaXQgdmVyc2lvbiBvZiB0aGUKK2xhdW5jaGVyIGlzIGluc3RhbGxlZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHNlYXJjaCBvcmRlciBpcyBhbHdheXMKK2NvbnNpc3RlbnQgKGFzIHRoZSA2NC1iaXQgbGF1bmNoZXIgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIHRoZSAzMi1iaXQKK2xhdW5jaGVyKSBhbmQgYWxzbyBhdm9pZHMgdGhlIG5lZWQgdG8gaW5zdGFsbCBpdCBtdWx0aXBsZSB0aW1lcy4gRnV0dXJlCit2ZXJzaW9ucyBvZiBQeXRob24gd2lsbCB1cGdyYWRlIHRoZSBsYXVuY2hlciBpbi1wbGFjZSwgdXNpbmcgV2luZG93cworSW5zdGFsbGVyJ3MgdXBncmFkZSBmdW5jdGlvbmFsaXR5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGVhcmxpZXIKK2luc3RhbGxlZCB2ZXJzaW9ucy4KKworV2hlbiBpbnN0YWxsZWQsIGZpbGUgYXNzb2NpYXRpb25zIGFyZSBjcmVhdGVkIGZvciAucHksIC5weWMgYW5kIC5weW8KK2ZpbGVzIHRvIGxhdW5jaCB3aXRoIHB5LmV4ZSBhbmQgLnB5dyBmaWxlcyB0byBsYXVuY2ggd2l0aCBweXcuZXhlLiBUaGlzCittYWtlcyBQeXRob24gZmlsZXMgcmVzcGVjdCBzaGViYW5nIGxpbmVzIGJ5IGRlZmF1bHQgYW5kIGFsc28gYXZvaWRzCitjb25mbGljdHMgYmV0d2VlbiBtdWx0aXBsZSBQeXRob24gaW5zdGFsbGF0aW9ucy4KKworCitSZXBhaXIsIE1vZGlmeSBhbmQgVW5pbnN0YWxsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FmdGVyIGluc3RhbGxhdGlvbiwgUHl0aG9uIG1heSBiZSBtb2RpZmllZCwgcmVwYWlyZWQgb3IgdW5pbnN0YWxsZWQgYnkKK3J1bm5pbmcgdGhlIG9yaWdpbmFsIEVYRSBhZ2FpbiBvciB2aWEgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBhcHBsZXQKKyhmb3JtZXJseSBrbm93biBhcyBBZGQgb3IgUmVtb3ZlIFByb2dyYW1zKS4KKworTW9kaWZpY2F0aW9ucyBhbGxvdyBmZWF0dXJlcyB0byBiZSBhZGRlZCBvciByZW1vdmVkLiBUaGUgaW5zdGFsbAorZGlyZWN0b3J5IGFuZCBraW5kIChhbGwgdXNlcnMvc2luZ2xlIHVzZXIpIGNhbm5vdCBiZSBtb2RpZmllZC4gQmVjYXVzZQorV2luZG93cyBJbnN0YWxsZXIgY2FjaGVzIGluc3RhbGxhdGlvbiBwYWNrYWdlcywgcmVtb3ZpbmcgZmVhdHVyZXMgd2lsbAorbm90IHJlcXVpcmUgaW50ZXJuZXQgYWNjZXNzIHVubGVzcyB0aGUgcGFja2FnZSBjYWNoZSBoYXMgYmVlbiBjb3JydXB0ZWQKK29yIGRlbGV0ZWQuIEFkZGluZyBmZWF0dXJlcyB0aGF0IHdlcmUgbm90IHByZXZpb3VzbHkgaW5zdGFsbGVkIGFuZCBhcmUKK25vdCBlbWJlZGRlZCBvciBvdGhlcndpc2UgYXZhaWxhYmxlIHdpbGwgcmVxdWlyZSBpbnRlcm5ldCBhY2Nlc3MuCisKK1JlcGFpcmluZyB3aWxsIHJlcnVuIHRoZSBpbnN0YWxsYXRpb24gZm9yIGFsbCBjdXJyZW50bHkgaW5zdGFsbGVkCitmZWF0dXJlcywgcmVzdG9yaW5nIGZpbGVzIGFuZCByZWdpc3RyeSBrZXlzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIG9yCityZW1vdmVkLiBUaGlzIG9wZXJhdGlvbiBnZW5lcmFsbHkgd2lsbCBub3QgcmVkb3dubG9hZCBhbnkgZmlsZXMgdW5sZXNzCit0aGUgY2FjaGVkIHBhY2thZ2VzIGhhdmUgYmVlbiBjb3JydXB0ZWQgb3IgZGVsZXRlZC4KKworUmVtb3ZpbmcgUHl0aG9uIHdpbGwgY2xlYW4gdXAgYWxsIHRoZSBmaWxlcyBhbmQgcmVnaXN0cnkga2V5cyB0aGF0IHdlcmUKK2NyZWF0ZWQgYnkgdGhlIGluc3RhbGxlciwgYXMgd2VsbCBhcyBfX3B5Y2FjaGVfXyBmb2xkZXJzIHRoYXQgYXJlCitleHBsaWNpdGx5IGhhbmRsZWQgYnkgdGhlIGluc3RhbGxlci4gUHl0aG9uIHBhY2thZ2VzIGluc3RhbGxlZCBsYXRlcgordXNpbmcgYSB0b29sIGxpa2UgcGlwIHdpbGwgbm90IGJlIHJlbW92ZWQuIFNvbWUgY29tcG9uZW50cyBtYXkgYmUKK2luc3RhbGxlZCBieSBvdGhlciBpbnN0YWxsZXJzIChzdWNoIGFzIHRoZSBNU1ZDUlQpIGFuZCB0aGVzZSB3aWxsIG5vdCBiZQorcmVtb3ZlZCBpZiBhbm90aGVyIHByb2R1Y3QgaGFzIGEgZGVwZW5kZW5jeSBvbiB0aGVtLgogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVpbGQuYmF0IGIvVG9vbHMvbXNpL2J1aWxkLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGZhNWZiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1aWxkLmJhdApAQCAtMCwwICsxLDQ2IEBACitAZWNobyBvZmYNCitzZXRsb2NhbA0KK3NldCBEPSV+ZHAwDQorc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwNCisNCitzZXQgQlVJTERYODY9DQorc2V0IEJVSUxEWDY0PQ0KK3NldCBCVUlMRERPQz0NCisNCis6Q2hlY2tPcHRzDQoraWYgJyUxJz09Jy14ODYnIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAnJTEnPT0nLXg2NCcgKHNldCBCVUlMRFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICclMSc9PSctLWRvYycgKHNldCBCVUlMRERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KKw0KK2lmIG5vdCBkZWZpbmVkIEJVSUxEWDg2IGlmIG5vdCBkZWZpbmVkIEJVSUxEWDY0IChzZXQgQlVJTERYODY9MSkgJiYgKHNldCBCVUlMRFg2ND0xKQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKw0KK2lmIGRlZmluZWQgQlVJTERYODYgKA0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1kDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0Ig0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KK2lmIGRlZmluZWQgQlVJTERYNjQgKA0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1wIHg2NCAtZA0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLXAgeDY0DQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQorDQoraWYgZGVmaW5lZCBCVUlMRERPQyAoDQorICAgIGNhbGwgIiVQQ0JVSUxEJS4uXERvY1xtYWtlLmJhdCIgaHRtbGhlbHANCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCisNCitpZiBkZWZpbmVkIEJVSUxEWDg2ICgNCisgICAgIiVQQ0JVSUxEJXdpbjMyXHB5dGhvbi5leGUiICIlRCVnZXRfd2l4LnB5Ig0KKyAgICBtc2J1aWxkICIlRCVidW5kbGVcc25hcHNob3Qud2l4cHJvaiINCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCitpZiBkZWZpbmVkIEJVSUxEWDY0ICgNCisgICAgIiVQQ0JVSUxEJWFtZDY0XHB5dGhvbi5leGUiICIlRCVnZXRfd2l4LnB5Ig0KKyAgICBtc2J1aWxkICIlRCVidW5kbGVcc25hcHNob3Qud2l4cHJvaiIgL3A6UGxhdGZvcm09eDY0DQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTczZjhmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTAsMCArMSwxNjYgQEAKK0BzZXRsb2NhbA0KK0BlY2hvIG9mZg0KKw0KK3JlbSBUaGlzIHNjcmlwdCBpcyBpbnRlbmRlZCBmb3IgYnVpbGRpbmcgb2ZmaWNpYWwgcmVsZWFzZXMgb2YgUHl0aG9uLg0KK3JlbSBUbyB1c2UgaXQgdG8gYnVpbGQgYWx0ZXJuYXRpdmUgcmVsZWFzZXMsIHlvdSBzaG91bGQgY2xvbmUgdGhpcyBmaWxlDQorcmVtIGFuZCBtb2RpZnkgdGhlIGZvbGxvd2luZyB0aHJlZSBVUklzLg0KK3JlbQ0KK3JlbSBUaGUgZmlyc3QgdHdvIHdpbGwgZW5zdXJlIHRoYXQgeW91ciByZWxlYXNlIGNhbiBiZSBpbnN0YWxsZWQNCityZW0gYWxvbmdzaWRlIGFuIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlLCB3aGlsZSB0aGUgc2Vjb25kIHNwZWNpZmllcw0KK3JlbSB0aGUgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRvd25sb2FkIGluc3RhbGxhdGlvbiBmaWxlcy4gVGhlDQorcmVtIGZpbGVzIGF2YWlsYWJsZSBmcm9tIHRoaXMgVVJMICp3aWxsKiBjb25mbGljdCB3aXRoIHlvdXIgaW5zdGFsbGVyLg0KK3JlbSBUcnVzdCBtZSwgeW91IGRvbid0IHdhbnQgdGhlbSwgZXZlbiBpZiBpdCBzZWVtcyBsaWtlIGEgZ29vZCBpZGVhLg0KKw0KK3NldCBSRUxFQVNFX1VSSV9YODY9aHR0cDovL3d3dy5weXRob24ub3JnL3dpbjMyDQorc2V0IFJFTEVBU0VfVVJJX1g2ND1odHRwOi8vd3d3LnB5dGhvbi5vcmcvYW1kNjQNCitzZXQgRE9XTkxPQURfVVJMX0JBU0U9aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uDQorc2V0IERPV05MT0FEX1VSTD0NCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEJVSUxEWDg2PQ0KK3NldCBCVUlMRFg2ND0NCitzZXQgVEFSR0VUPVJlYnVpbGQNCitzZXQgVEVTVFRBUkdFVERJUj0NCisNCisNCis6Q2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1oIiBnb3RvIEhlbHANCitpZiAiJTEiIEVRVSAiLWMiIChzZXQgQ0VSVE5BTUU9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWNlcnRpZmljYXRlIiAoc2V0IENFUlROQU1FPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLW8iIChzZXQgT1VURElSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1vdXQiIChzZXQgT1VURElSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLUQiIChzZXQgU0tJUERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXNraXAtZG9jIiAoc2V0IFNLSVBET0M9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLUIiIChzZXQgU0tJUEJVSUxEPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1idWlsZCIgKHNldCBTS0lQQlVJTEQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1kb3dubG9hZCIgKHNldCBET1dOTE9BRF9VUkw9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRlc3QiIChzZXQgVEVTVFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1iIiAoc2V0IFRBUkdFVD1CdWlsZCkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1idWlsZCIgKHNldCBUQVJHRVQ9QnVpbGQpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBCVUlMRFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KKw0KK2lmIG5vdCBkZWZpbmVkIEJVSUxEWDg2IGlmIG5vdCBkZWZpbmVkIEJVSUxEWDY0IChzZXQgQlVJTERYODY9MSkgJiYgKHNldCBCVUlMRFg2ND0xKQ0KKw0KKzpidWlsZGRvYw0KK2lmICIlU0tJUEJVSUxEJSIgRVFVICIxIiBnb3RvIHNraXBkb2MNCitpZiAiJVNLSVBET0MlIiBFUVUgIjEiIGdvdG8gc2tpcGRvYw0KKw0KK2lmIG5vdCBkZWZpbmVkIFBZVEhPTiB3aGVyZSBweSAtcSB8fCBlY2hvIENhbm5vdCBmaW5kIHB5IG9uIHBhdGggYW5kIFBZVEhPTiBpcyBub3Qgc2V0LiAmJiBleGl0IC9CIDENCitpZiBub3QgZGVmaW5lZCBTUEhJTlhCVUlMRCB3aGVyZSBzcGhpbngtYnVpbGQgLXEgfHwgZWNobyBDYW5ub3QgZmluZCBzcGhpbngtYnVpbGQgb24gcGF0aCBhbmQgU1BISU5YQlVJTEQgaXMgbm90IHNldC4gJiYgZXhpdCAvQiAxDQorY2FsbCAiJUQlLi5cLi5cZG9jXG1ha2UuYmF0IiBodG1saGVscA0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCis6c2tpcGRvYw0KKw0KK3doZXJlIGhnIC9xIHx8IGVjaG8gQ2Fubm90IGZpbmQgTWVyY3VyaWFsIG9uIFBBVEggJiYgZXhpdCAvQiAxDQorDQord2hlcmUgZGxsdG9vbCAvcSAmJiBnb3RvIHNraXBkbGx0b29sc2VhcmNoDQorc2V0IF9ETExUT09MX1BBVEg9DQord2hlcmUgL1IgIiVEJS4uXC4uXGV4dGVybmFscyIgZGxsdG9vbCA+ICIlVEVNUCVcZGxsdG9vbC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgX0RMTFRPT0xfUEFUSD0gPCAiJVRFTVAlXGRsbHRvb2wubG9jIiAmIGRlbCAiJVRFTVAlXGRsbHRvb2wubG9jIiANCitpZiBub3QgZXhpc3QgIiVfRExMVE9PTF9QQVRIJSIgZWNobyBDYW5ub3QgZmluZCBiaW51dGlscyBvbiBQQVRIIG9yIGluIGV4dGVybmFsICYmIGV4aXQgL0IgMQ0KK2ZvciAlJWYgaW4gKCVfRExMVE9PTF9QQVRIJSkgZG8gc2V0IFBBVEg9JVBBVEglOyUlfmRwZg0KK3NldCBfRExMVE9PTF9QQVRIPQ0KKzpza2lwZGxsdG9vbHNlYXJjaA0KKw0KK2lmIGRlZmluZWQgQlVJTERYODYgKA0KKyAgICBjYWxsIDpidWlsZCB4ODYNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZGVmaW5lZCBCVUlMRFg2NCAoDQorICAgIGNhbGwgOmJ1aWxkIHg2NA0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitpZiBkZWZpbmVkIFRFU1RUQVJHRVRESVIgKA0KKyAgICBjYWxsICIlRCV0ZXN0cmVsZWFzZS5iYXQiIC10ICIlVEVTVFRBUkdFVERJUiUiDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzpidWlsZA0KK0BzZXRsb2NhbA0KK0BlY2hvIG9mZg0KKw0KK2lmICIlMSIgRVFVICJ4ODYiICgNCisgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorICAgIHNldCBCVUlMRD0lUENCVUlMRCV3aW4zMlwNCisgICAgc2V0IEJVSUxEX1BMQVQ9V2luMzINCisgICAgc2V0IE9VVERJUl9QTEFUPXdpbjMyDQorICAgIHNldCBPQkpESVJfUExBVD14ODYNCisgICAgc2V0IFJFTEVBU0VfVVJJPSVSRUxFQVNFX1VSSV9YODYlDQorKSBFTFNFICgNCisgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2X2FtZDY0DQorICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQorICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KKyAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQorICAgIHNldCBSRUxFQVNFX1VSST0lUkVMRUFTRV9VUklfWDY0JQ0KKykNCisNCitpZiBleGlzdCAiJUJVSUxEJWVuLXVzIiAoDQorICAgIGVjaG8gRGVsZXRpbmcgJUJVSUxEJWVuLXVzDQorICAgIHJtZGlyIC9xL3MgIiVCVUlMRCVlbi11cyINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZXhpc3QgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiICgNCisgICAgZWNobyBEZWxldGluZyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgcm1kaXIgL3EvcyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgbm90ICIlQ0VSVE5BTUUlIiBFUVUgIiIgKA0KKyAgICBzZXQgQ0VSVE9QVFM9Ii9wOlNpZ25pbmdDZXJ0aWZpY2F0ZT0lQ0VSVE5BTUUlIg0KKykgZWxzZSAoDQorICAgIHNldCBDRVJUT1BUUz0NCispDQorDQoraWYgbm90ICIlU0tJUEJVSUxEJSIgRVFVICIxIiAoDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1kIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCisgICAgQGVjaG8gb2ZmDQorKQ0KKw0KKyIlQlVJTEQlcHl0aG9uLmV4ZSIgIiVEJWdldF93aXgucHkiDQorDQorc2V0IEJVSUxET1BUUz0vcDpQbGF0Zm9ybT0lMSAvcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCitpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQoraWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisNCittc2J1aWxkICIlRCVtYWtlX3ppcC5wcm9qIiAvdDpCdWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlDQorDQoraWYgbm90ICIlT1VURElSJSIgRVFVICIiICgNCisgICAgbWtkaXIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLmNhYiIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLmV4ZSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLm1zaSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLm1zdSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzpIZWxwDQorZWNobyBidWlsZHJlbGVhc2UuYmF0IFstLW91dCBESVJdIFsteDg2XSBbLXg2NF0gWy0tY2VydGlmaWNhdGUgQ0VSVE5BTUVdIFstLWJ1aWxkXSBbLS1za2lwLWJ1aWxkXQ0KK2VjaG8gICAgICAgICAgICAgICAgICBbLS1za2lwLWRvY10gWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0gWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLW91dCAoLW8pICAgICAgICAgIFNwZWNpZnkgYW4gYWRkaXRpb25hbCBvdXRwdXQgZGlyZWN0b3J5IGZvciBpbnN0YWxsZXJzDQorZWNobyAgICAteDg2ICAgICAgICAgICAgICAgIEJ1aWxkIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCitlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCitlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tZG93bmxvYWQgICAgICAgICAgU3BlY2lmeSB0aGUgZnVsbCBkb3dubG9hZCBVUkwgZm9yIE1TSXMgKHNob3VsZCBpbmNsdWRlIHsyfSkNCitlY2hvICAgIC0tdGVzdCAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgdGVzdCBkaXJlY3RvcnkgdG8gcnVuIHRoZSBpbnN0YWxsZXIgdGVzdHMNCitlY2hvICAgIC1oICAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KK2VjaG8gSWYgbm8gYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmllZCwgYWxsIGFyY2hpdGVjdHVyZXMgd2lsbCBiZSBidWlsdC4NCitlY2hvIElmIC0tdGVzdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgaW5zdGFsbGVyIHRlc3RzIGFyZSBub3QgcnVuLg0KK2VjaG8uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobSBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVlMTk2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTAsMCArMSwxMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8VGhlbWUgeG1sbnM9Imh0dHA6Ly93aXh0b29sc2V0Lm9yZy9zY2hlbWFzL3RobXV0aWwvMjAxMCI+CisgICAgPFdpbmRvdyBXaWR0aD0iNjQwIiBIZWlnaHQ9IjM4MiIgSGV4U3R5bGU9IjEwMGEwMDAwIiBGb250SWQ9IjAiPiMobG9jLkNhcHRpb24pPC9XaW5kb3c+CisgICAgPEZvbnQgSWQ9IjAiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSIxIiBIZWlnaHQ9Ii0yNCIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9IjAwMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIj5TZWdvZSBVSTwvRm9udD4KKyAgICA8Rm9udCBJZD0iMiIgSGVpZ2h0PSItMjIiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSI4MDgwODAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjMiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSI0IiBIZWlnaHQ9Ii0xMiIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9ImZmMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIiBVbmRlcmxpbmU9InllcyI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjUiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iODA4MDgwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorCisgICAgPFBhZ2UgTmFtZT0iSGVscCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5IZWxwSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSI1MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSItMzUiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5IZWxwVGV4dCk8L1RleHQ+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJJbnN0YWxsIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzMiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkluc3RhbGxIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE2MiIgSGVpZ2h0PSIzNTIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjUwIiBGb250SWQ9IjMiIFRhYlN0b3A9InllcyI+Iyhsb2MuSW5zdGFsbE1lc3NhZ2UpPC9UZXh0PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbEp1c3RGb3JNZUJ1dHRvbiIgWD0iMTc1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMTI5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuSW5zdGFsbEp1c3RGb3JNZUJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ3VzdG9tQnV0dG9uIiBYPSIxNzUiIFk9IjI0MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxDdXN0b21CdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IlByZXBlbmRQYXRoIiBYPSIxODUiIFk9Ii0xMyIgV2lkdGg9Ii0xMDAiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIj4jKGxvYy5TaG9ydFByZXBlbmRQYXRoTGFiZWwpPC9DaGVja2JveD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IlNpbXBsZUluc3RhbGwiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjMyIiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuSW5zdGFsbEhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTYyIiBIZWlnaHQ9IjM1MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbFNpbXBsZUJ1dHRvbiIgWD0iMTc1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIEhleFN0eWxlPSIweEYiPiMobG9jLkluc3RhbGxTaW1wbGVCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijc1IiBIZWlnaHQ9IjIzIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJDdXN0b20xIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzMiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkN1c3RvbTFIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE2MiIgSGVpZ2h0PSIzNTIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX2RvYyIgWD0iMTg1IiBZPSI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV9kb2NMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX2RvY0hlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9waXAiIFg9IjE4NSIgWT0iOTYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfcGlwTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPFRleHQgWD0iMjA1IiBZPSIxMTYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9Im5vIiBGb250SWQ9IjUiPiMobG9jLkluY2x1ZGVfcGlwSGVscExhYmVsKTwvVGV4dD4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3RjbHRrIiBYPSIxODUiIFk9IjE0MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV90Y2x0a0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IFg9IjIwNSIgWT0iMTYxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX3RjbHRrSGVscExhYmVsKTwvVGV4dD4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3Rlc3QiIFg9IjE4NSIgWT0iMTg2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX3Rlc3RMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjIwNiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV90ZXN0SGVscExhYmVsKTwvVGV4dD4KKworICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgWD0iMTg1IiBZPSIyMzEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfbGF1bmNoZXJMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV9sYXVuY2hlckhlbHBMYWJlbCk8L1RleHQ+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b20xQmFja0J1dHRvbiIgWD0iMTg1IiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkN1c3RvbUJhY2tCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tTmV4dEJ1dHRvbiIgWD0iLTkxIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkN1c3RvbU5leHRCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tMUNhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iQ3VzdG9tMiI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5DdXN0b20ySGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBYPSIxODUiIFk9IjUxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLkluc3RhbGxBbGxVc2Vyc0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJBc3NvY2lhdGVGaWxlcyIgWD0iMTg1IiBZPSI3NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5Bc3NvY2lhdGVGaWxlc0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJTaG9ydGN1dHMiIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLlNob3J0Y3V0c0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJQcmVwZW5kUGF0aCIgWD0iMTg1IiBZPSIxMjYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuUHJlcGVuZFBhdGhMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iQ29tcGlsZUFsbCIgWD0iMTg1IiBZPSIxNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuUHJlY29tcGlsZUxhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX3N5bWJvbHMiIFg9IjE4NSIgWT0iMTc2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLkluY2x1ZGVfc3ltYm9sc0xhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX2RlYnVnIiBYPSIxODUiIFk9IjIwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5JbmNsdWRlX2RlYnVnTGFiZWwpPC9DaGVja2JveD4KKworICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjI0MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIxNyIgRm9udElkPSIzIj4jKGxvYy5DdXN0b21Mb2NhdGlvbkxhYmVsKTwvVGV4dD4KKyAgICAgICAgPEVkaXRib3ggTmFtZT0iVGFyZ2V0RGlyIiBYPSIxODUiIFk9IjI1NyIgV2lkdGg9Ii05MSIgSGVpZ2h0PSIyMSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEZpbGVTeXN0ZW1BdXRvQ29tcGxldGU9InllcyIgLz4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b21Ccm93c2VCdXR0b24iIFg9Ii0xMSIgWT0iMjU2IiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIj4jKGxvYy5DdXN0b21Ccm93c2VCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxUZXh0IE5hbWU9IkN1c3RvbUJyb3dzZUJ1dHRvbkxhYmVsIiBYPSIxODUiIFk9IjI4MSIgV2lkdGg9Ii05MSIgSGVpZ2h0PSIzNSIgRm9udElkPSI1IiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkN1c3RvbUxvY2F0aW9uSGVscExhYmVsKTwvVGV4dD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbTJCYWNrQnV0dG9uIiBYPSIxODUiIFk9Ii0xMSIgV2lkdGg9Ijc1IiBIZWlnaHQ9IjIzIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ3VzdG9tQmFja0J1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b21JbnN0YWxsQnV0dG9uIiBYPSItOTEiIFk9Ii0xMSIgV2lkdGg9Ijk1IiBIZWlnaHQ9IjIzIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ3VzdG9tSW5zdGFsbEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b20yQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijc1IiBIZWlnaHQ9IjIzIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJQcm9ncmVzcyI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5Qcm9ncmVzc0hlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTYyIiBIZWlnaHQ9IjM1MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTExIiBXaWR0aD0iNzAiIEhlaWdodD0iMTciIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5Qcm9ncmVzc0xhYmVsKTwvVGV4dD4KKyAgICAgICAgPFRleHQgTmFtZT0iT3ZlcmFsbFByb2dyZXNzUGFja2FnZVRleHQiIFg9IjE4NSIgWT0iMTQxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjE3IiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuT3ZlcmFsbFByb2dyZXNzUGFja2FnZVRleHQpPC9UZXh0PgorICAgICAgICA8UHJvZ3Jlc3NiYXIgTmFtZT0iT3ZlcmFsbENhbGN1bGF0ZWRQcm9ncmVzc2JhciIgWD0iMTg1IiBZPSIxNjMiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIC8+CisgICAgICAgIDxCdXR0b24gTmFtZT0iUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9Ik1vZGlmeSI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5Nb2RpZnlIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE2MiIgSGVpZ2h0PSIzNTIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ik1vZGlmeUJ1dHRvbiIgWD0iMTc1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhGIj4jKGxvYy5Nb2RpZnlNb2RpZnlCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iUmVwYWlyQnV0dG9uIiBYPSIxNzUiIFk9IjE3MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLk1vZGlmeVJlcGFpckJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJVbmluc3RhbGxCdXR0b24iIFg9IjE3NSIgWT0iMjQxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuTW9kaWZ5VW5pbnN0YWxsQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iTW9kaWZ5Q2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijc1IiBIZWlnaHQ9IjIzIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJTdWNjZXNzIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzMiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE2MiIgSGVpZ2h0PSIzNTIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTMxIiBIZWlnaHQ9IjEwMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgorCisgICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItMTAwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgorICAgICAgICA8QnV0dG9uIE5hbWU9IkxhdW5jaEJ1dHRvbiIgWD0iMTg1IiBZPSItNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhGIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NMYXVuY2hCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIFg9Ii05MSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iRmFpbHVyZSI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5GYWlsdXJlSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJGYWlsdXJlTG9nRmlsZUxpbmsiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItMTEiIEhlaWdodD0iNjAiIEZvbnRJZD0iMyIgVGFiU3RvcD0ieWVzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkZhaWx1cmVIeXBlcmxpbmtMb2dUZXh0KTwvSHlwZXJ0ZXh0PgorICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IkZhaWx1cmVNZXNzYWdlVGV4dCIgWD0iMjA1IiBZPSItMTAwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjYwIiBGb250SWQ9IjMiIFRhYlN0b3A9InllcyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj48L0h5cGVydGV4dD4KKyAgICAgICAgPFRleHQgTmFtZT0iRmFpbHVyZVJlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii00MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuRmFpbHVyZVJlc3RhcnRUZXh0KTwvVGV4dD4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJGYWlsdXJlUmVzdGFydEJ1dHRvbiIgWD0iLTkxIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuRmFpbHVyZVJlc3RhcnRCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iRmFpbHVyZUNhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKzwvVGhlbWU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VjYjJmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTAsMCArMSwxMTAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiBMYW5ndWFnZT0iMTAzMyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgPFN0cmluZyBJZD0iQ2FwdGlvbiI+W1dpeEJ1bmRsZU5hbWVdIFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlRpdGxlIj5bV2l4QnVuZGxlTmFtZV08L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbGluZyI+SW5zdGFsbGluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsYXRpb24iPlNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeWluZyI+VXBkYXRpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZpY2F0aW9uIj5Nb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyaW5nIj5SZXBhaXJpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyIj5SZXBhaXI8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iVW5pbnN0YWxsaW5nIj5SZW1vdmluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxhdGlvbiI+VW5pbnN0YWxsPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJFbGV2YXRlRm9yQ1JUSW5zdGFsbCI+WW91IHdpbGwgYmUgcHJvbXB0ZWQgZm9yIEFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBpbnN0YWxsIGEgQyBSdW50aW1lIExpYnJhcnkgdXBkYXRlIChLQjI5OTkyMjYpLgorCisKK0NvbnRpbnVlPzwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iQ2FuY2VsQnV0dG9uIj4mYW1wO0NhbmNlbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDbG9zZUJ1dHRvbiI+JmFtcDtDbG9zZTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsSGVhZGVyIj5JbnN0YWxsIFtXaXhCdW5kbGVOYW1lXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTWVzc2FnZSI+U2VsZWN0IEluc3RhbGwgTm93IHRvIGluc3RhbGwgUHl0aG9uIHdpdGggZGVmYXVsdCBzZXR0aW5ncywgb3IgY2hvb3NlIEN1c3RvbWl6ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFZlcnNpb24iPlZlcnNpb24gW1dpeEJ1bmRsZVZlcnNpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkNvbmZpcm1DYW5jZWxNZXNzYWdlIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsPzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJFeGVjdXRlVXBncmFkZVJlbGF0ZWRCdW5kbGVNZXNzYWdlIj5QcmV2aW91cyB2ZXJzaW9uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkhlbHBIZWFkZXIiPlNldHVwIEhlbHA8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSGVscFRleHQiPi91bmluc3RhbGwKKyAgICBVbmluc3RhbGxzIFB5dGhvbiB3aXRob3V0IHByb21wdGluZyBmb3IgY29uZmlybWF0aW9uLgorCisvbGF5b3V0IFtcW11kaXJlY3RvcnlbXF1dCisgICAgRG93bmxvYWRzIGFsbCBjb21wb25lbnRzIGZvciBvZmZsaW5lIGluc3RhbGxhdGlvbi4KKworL3Bhc3NpdmUKKyAgICBEaXNwbGF5cyBwcm9ncmVzcyB3aXRob3V0IHJlcXVpcmluZyB1c2VyIGludGVyYWN0aW9uLgorCisvcXVpZXQKKyAgICBQZXJmb3JtcyB0aGUgcmVxdWVzdGVkIGFjdGlvbiB3aXRob3V0IGRpc3BsYXlpbmcgYW55IFVJLgorCisvbG9nIFtcW11maWxlbmFtZVtcXV0KKyAgICBMb2dzIHRvIGEgc3BlY2lmaWMgZmlsZS4gQnkgZGVmYXVsdCwgbG9nIGZpbGVzIGFyZSBjcmVhdGVkIGluICVURU1QJS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbExpY2Vuc2VMaW5rVGV4dCI+W1dpeEJ1bmRsZU5hbWVdICZsdDthIGhyZWY9IiMiJmd0O2xpY2Vuc2UgdGVybXMmbHQ7L2EmZ3Q7LjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQWNjZXB0Q2hlY2tib3giPkkgJmFtcDthZ3JlZSB0byB0aGUgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsSnVzdEZvck1lQnV0dG9uIj4mYW1wO0luc3RhbGwgTm93PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxKdXN0Rm9yTWVCdXR0b25Ob3RlIj5bRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpcl0KKworSW5jbHVkZXMgSURMRSwgcGlwIGFuZCBkb2N1bWVudGF0aW9uCitDcmVhdGVzIHNob3J0Y3V0cyBhbmQgZmlsZSBhc3NvY2lhdGlvbnM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEN1c3RvbUJ1dHRvbiI+QyZhbXA7dXN0b21pemUgaW5zdGFsbGF0aW9uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxDdXN0b21CdXR0b25Ob3RlIj5DaG9vc2UgbG9jYXRpb24gYW5kIGZlYXR1cmVzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxTaW1wbGVCdXR0b24iPiZhbXA7SW5zdGFsbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsU2ltcGxlQnV0dG9uTm90ZSI+VXNlcyBzZXR0aW5nIHByZXNlbGVjdGVkIGJ5IHlvdXIgYWRtaW5pc3RyYXRvcjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b20xSGVhZGVyIj5PcHRpb25hbCBGZWF0dXJlczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b20ySGVhZGVyIj5BZHZhbmNlZCBPcHRpb25zPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUxvY2F0aW9uTGFiZWwiPkN1c3RvbWl6ZSBpbnN0YWxsIGxvY2F0aW9uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUxvY2F0aW9uSGVscExhYmVsIj5Zb3Ugd2lsbCByZXF1aXJlIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgbG9jYXRpb24uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUluc3RhbGxCdXR0b24iPiZhbXA7SW5zdGFsbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21OZXh0QnV0dG9uIj4mYW1wO05leHQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tQmFja0J1dHRvbiI+JmFtcDtCYWNrPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUJyb3dzZUJ1dHRvbiI+QiZhbXA7cm93c2U8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9kb2NMYWJlbCI+JmFtcDtEb2N1bWVudGF0aW9uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZG9jSGVscExhYmVsIj5JbnN0YWxscyB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gZmlsZS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9waXBMYWJlbCI+JmFtcDtwaXA8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9waXBIZWxwTGFiZWwiPkluc3RhbGxzIHBpcCwgd2hpY2ggY2FuIGRvd25sb2FkIGFuZCBpbnN0YWxsIG90aGVyIFB5dGhvbiBwYWNrYWdlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90Y2x0a0xhYmVsIj50Y2wvdGsgYW5kICZhbXA7SURMRTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX3RjbHRrSGVscExhYmVsIj5JbnN0YWxscyB0a2ludGVyIGFuZCB0aGUgSURMRSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90ZXN0TGFiZWwiPlB5dGhvbiAmYW1wO3Rlc3Qgc3VpdGU8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90ZXN0SGVscExhYmVsIj5JbnN0YWxscyB0aGUgc3RhbmRhcmQgbGlicmFyeSB0ZXN0IHN1aXRlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2xhdW5jaGVyTGFiZWwiPnB5ICZhbXA7bGF1bmNoZXI8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9sYXVuY2hlckhlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIGdsb2JhbCAncHknIGxhdW5jaGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHN0YXJ0IFB5dGhvbi48L1N0cmluZz4KKyAgCisgIDxTdHJpbmcgSWQ9IkFzc29jaWF0ZUZpbGVzTGFiZWwiPkFzc29jaWF0ZSAmYW1wO2ZpbGVzIHdpdGggUHl0aG9uIChyZXF1aXJlcyB0aGUgcHkgbGF1bmNoZXIpPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0c0xhYmVsIj5DcmVhdGUgc2hvcnRjdXRzIGZvciBpbnN0YWxsZWQgYXBwbGljYXRpb25zPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlByZXBlbmRQYXRoTGFiZWwiPkFkZCBQeXRob24gdG8gJmFtcDtlbnZpcm9ubWVudCB2YXJpYWJsZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU2hvcnRQcmVwZW5kUGF0aExhYmVsIj5BZGQgJmFtcDtQeXRob24gW1Nob3J0VmVyc2lvbl0gdG8gUEFUSDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQWxsVXNlcnNMYWJlbCI+SW5zdGFsbCBhcyAmYW1wO0FkbWluaXN0cmF0b3I8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUHJlY29tcGlsZUxhYmVsIj4mYW1wO1ByZWNvbXBpbGUgc3RhbmRhcmQgbGlicmFyeTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX3N5bWJvbHNMYWJlbCI+SW5zdGFsbCBkZWJ1Z2dpbmcgJmFtcDtzeW1ib2xzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZGVidWdMYWJlbCI+SW5zdGFsbCBkZWJ1JmFtcDtnIGJpbmFyaWVzIChyZXF1aXJlcyBWUyAyMDE1IG9yIGxhdGVyKTwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iUHJvZ3Jlc3NIZWFkZXIiPltBY3Rpb25MaWtlSW5zdGFsbGF0aW9uXSBQcm9ncmVzczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJQcm9ncmVzc0xhYmVsIj5bQWN0aW9uTGlrZUluc3RhbGxpbmddOjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJPdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCI+SW5pdGlhbGl6aW5nLi4uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeUhlYWRlciI+TW9kaWZ5IFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeU1vZGlmeUJ1dHRvbiI+JmFtcDtNb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5QnV0dG9uTm90ZSI+QWRkIG9yIHJlbW92ZSBpbmRpdmlkdWFsIGZlYXR1cmVzLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlSZXBhaXJCdXR0b24iPiZhbXA7UmVwYWlyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlJlcGFpckJ1dHRvbk5vdGUiPkVuc3VyZSBhbGwgY3VycmVudCBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGluc3RhbGxlZC48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5VW5pbnN0YWxsQnV0dG9uIj4mYW1wO1VuaW5zdGFsbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxCdXR0b25Ob3RlIj5SZW1vdmUgdGhlIGVudGlyZSBbV2l4QnVuZGxlTmFtZV0gaW5zdGFsbGF0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSGVhZGVyIj5bQWN0aW9uTGlrZUluc3RhbGxhdGlvbl0gd2FzIHN1Y2Nlc3NmdWw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc0xhdW5jaEJ1dHRvbiI+JmFtcDtMYXVuY2g8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRUZXh0Ij5Zb3UgbWF5IG5lZWQgdG8gcmVzdGFydCB5b3VyIGNvbXB1dGVyIHRvIGZpbmlzaCB1cGRhdGluZyBmaWxlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iPiZhbXA7UmVzdGFydDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSW5zdGFsbE1lc3NhZ2UiPlNwZWNpYWwgdGhhbmtzIHRvIE1hcmsgSGFtbW9uZCwgd2l0aG91dCB3aG9zZSB5ZWFycyBvZiBmcmVlbHkgc2hhcmVkIFdpbmRvd3MgZXhwZXJ0aXNlLCBQeXRob24gZm9yIFdpbmRvd3Mgd291bGQgc3RpbGwgYmUgUHl0aG9uIGZvciBET1MuCisKK05ldyB0byBQeXRob24/IFN0YXJ0IHdpdGggdGhlICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL3R1dG9yaWFsL2luZGV4Lmh0bWwiJmd0O29ubGluZSB0dXRvcmlhbCZsdDsvYSZndDsgYW5kICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL2luZGV4Lmh0bWwiJmd0O2RvY3VtZW50YXRpb24mbHQ7L2EmZ3Q7LgorCitTZWUgJmx0O2EgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vd2hhdHNuZXcvW1Nob3J0VmVyc2lvbl0uaHRtbCImZ3Q7d2hhdCdzIG5ldyZsdDsvYSZndDsgaW4gdGhpcyByZWxlYXNlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTW9kaWZ5TWVzc2FnZSI+VGhhbmsgeW91IGZvciB1c2luZyBbV2l4QnVuZGxlTmFtZV0uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NSZXBhaXJNZXNzYWdlIj5UaGFuayB5b3UgZm9yIHVzaW5nIFtXaXhCdW5kbGVOYW1lXS4KKworRmVlbCBmcmVlIHRvIGVtYWlsICZsdDthIGhyZWY9Im1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnIiZndDtweXRob24tbGlzdEBweXRob24ub3JnJmx0Oy9hJmd0OyBpZiB5b3UgY29udGludWUgdG8gZW5jb3VudGVyIGlzc3Vlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1JlbW92ZU1lc3NhZ2UiPlRoYW5rIHlvdSBmb3IgdXNpbmcgW1dpeEJ1bmRsZU5hbWVdLgorCitGZWVsIGZyZWUgdG8gZW1haWwgJmx0O2EgaHJlZj0ibWFpbHRvOnB5dGhvbi1saXN0QHB5dGhvbi5vcmciJmd0O3B5dGhvbi1saXN0QHB5dGhvbi5vcmcmbHQ7L2EmZ3Q7IGlmIHlvdSBlbmNvdW50ZXJlZCBwcm9ibGVtcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZUhlYWRlciI+U2V0dXAgZmFpbGVkPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVIeXBlcmxpbmtMb2dUZXh0Ij5PbmUgb3IgbW9yZSBpc3N1ZXMgY2F1c2VkIHRoZSBzZXR1cCB0byBmYWlsLiBQbGVhc2UgZml4IHRoZSBpc3N1ZXMgYW5kIHRoZW4gcmV0cnkgc2V0dXAuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgJmx0O2EgaHJlZj0iIyImZ3Q7bG9nIGZpbGUmbHQ7L2EmZ3Q7LjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydFRleHQiPllvdSBtdXN0IHJlc3RhcnQgeW91ciBjb21wdXRlciB0byBjb21wbGV0ZSB0aGUgcm9sbGJhY2sgb2YgdGhlIHNvZnR3YXJlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydEJ1dHRvbiI+JmFtcDtSZXN0YXJ0PC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvU2lkZUJhci5wbmcgYi9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMThmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0IGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvTElDRU5TRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5MWE3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgbGljZW5zZSBhcHBsaWVzIHRvIHRoZSBib290c3RyYXBwZXIgYXBwbGljYXRpb24gdGhhdCBpcyBlbWJlZGRlZCB3aXRoaW4gdGhlIGluc3RhbGxlci4gSXQgaGFzIG5vIGltcGFjdCBvbiB0aGUgbGljZW5zaW5nIGZvciB0aGUgcmVzdCBvZiB0aGUgaW5zdGFsbGVyIG9yIFB5dGhvbiBpdHNlbGYsIGFzIG5vIGNvZGUgY292ZXJlZCBieSB0aGlzIGxpY2Vuc2UgZXhpc3RzIGluIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBwcm9kdWN0LgorCistLS0KKworTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpCisKK1RoaXMgbGljZW5zZSBnb3Zlcm5zIHVzZSBvZiB0aGUgYWNjb21wYW55aW5nIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoZSBzb2Z0d2FyZSwgeW91IGFjY2VwdCB0aGlzIGxpY2Vuc2UuIElmIHlvdSBkbyBub3QgYWNjZXB0IHRoZSBsaWNlbnNlLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKworMS4gRGVmaW5pdGlvbnMKKyBUaGUgdGVybXMgInJlcHJvZHVjZSwiICJyZXByb2R1Y3Rpb24sIiAiZGVyaXZhdGl2ZSB3b3JrcywiIGFuZCAiZGlzdHJpYnV0aW9uIiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgaGVyZSBhcyB1bmRlciBVLlMuIGNvcHlyaWdodCBsYXcuCisgQSAiY29udHJpYnV0aW9uIiBpcyB0aGUgb3JpZ2luYWwgc29mdHdhcmUsIG9yIGFueSBhZGRpdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgc29mdHdhcmUuCisgQSAiY29udHJpYnV0b3IiIGlzIGFueSBwZXJzb24gdGhhdCBkaXN0cmlidXRlcyBpdHMgY29udHJpYnV0aW9uIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAiTGljZW5zZWQgcGF0ZW50cyIgYXJlIGEgY29udHJpYnV0b3IncyBwYXRlbnQgY2xhaW1zIHRoYXQgcmVhZCBkaXJlY3RseSBvbiBpdHMgY29udHJpYnV0aW9uLgorCisyLiBHcmFudCBvZiBSaWdodHMKKyAoQSkgQ29weXJpZ2h0IEdyYW50LSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIGxpY2Vuc2UsIGluY2x1ZGluZyB0aGUgbGljZW5zZSBjb25kaXRpb25zIGFuZCBsaW1pdGF0aW9ucyBpbiBzZWN0aW9uIDMsIGVhY2ggY29udHJpYnV0b3IgZ3JhbnRzIHlvdSBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSBpdHMgY29udHJpYnV0aW9uLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YgaXRzIGNvbnRyaWJ1dGlvbiwgYW5kIGRpc3RyaWJ1dGUgaXRzIGNvbnRyaWJ1dGlvbiBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrcyB0aGF0IHlvdSBjcmVhdGUuCisgKEIpIFBhdGVudCBHcmFudC0gU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBsaWNlbnNlLCBpbmNsdWRpbmcgdGhlIGxpY2Vuc2UgY29uZGl0aW9ucyBhbmQgbGltaXRhdGlvbnMgaW4gc2VjdGlvbiAzLCBlYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBsaWNlbnNlIHVuZGVyIGl0cyBsaWNlbnNlZCBwYXRlbnRzIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBhbmQvb3Igb3RoZXJ3aXNlIGRpc3Bvc2Ugb2YgaXRzIGNvbnRyaWJ1dGlvbiBpbiB0aGUgc29mdHdhcmUgb3IgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgY29udHJpYnV0aW9uIGluIHRoZSBzb2Z0d2FyZS4KKworMy4gQ29uZGl0aW9ucyBhbmQgTGltaXRhdGlvbnMKKyAoQSkgUmVjaXByb2NhbCBHcmFudHMtIEZvciBhbnkgZmlsZSB5b3UgZGlzdHJpYnV0ZSB0aGF0IGNvbnRhaW5zIGNvZGUgZnJvbSB0aGUgc29mdHdhcmUgKGluIHNvdXJjZSBjb2RlIG9yIGJpbmFyeSBmb3JtYXQpLCB5b3UgbXVzdCBwcm92aWRlIHJlY2lwaWVudHMgdGhlIHNvdXJjZSBjb2RlIHRvIHRoYXQgZmlsZSBhbG9uZyB3aXRoIGEgY29weSBvZiB0aGlzIGxpY2Vuc2UsIHdoaWNoIGxpY2Vuc2Ugd2lsbCBnb3Zlcm4gdGhhdCBmaWxlLiBZb3UgbWF5IGxpY2Vuc2Ugb3RoZXIgZmlsZXMgdGhhdCBhcmUgZW50aXJlbHkgeW91ciBvd24gd29yayBhbmQgZG8gbm90IGNvbnRhaW4gY29kZSBmcm9tIHRoZSBzb2Z0d2FyZSB1bmRlciBhbnkgdGVybXMgeW91IGNob29zZS4KKyAoQikgTm8gVHJhZGVtYXJrIExpY2Vuc2UtIFRoaXMgbGljZW5zZSBkb2VzIG5vdCBncmFudCB5b3UgcmlnaHRzIHRvIHVzZSBhbnkgY29udHJpYnV0b3JzJyBuYW1lLCBsb2dvLCBvciB0cmFkZW1hcmtzLgorIChDKSBJZiB5b3UgYnJpbmcgYSBwYXRlbnQgY2xhaW0gYWdhaW5zdCBhbnkgY29udHJpYnV0b3Igb3ZlciBwYXRlbnRzIHRoYXQgeW91IGNsYWltIGFyZSBpbmZyaW5nZWQgYnkgdGhlIHNvZnR3YXJlLCB5b3VyIHBhdGVudCBsaWNlbnNlIGZyb20gc3VjaCBjb250cmlidXRvciB0byB0aGUgc29mdHdhcmUgZW5kcyBhdXRvbWF0aWNhbGx5LgorIChEKSBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUsIHlvdSBtdXN0IHJldGFpbiBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kIGF0dHJpYnV0aW9uIG5vdGljZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgc29mdHdhcmUuCisgKEUpIElmIHlvdSBkaXN0cmlidXRlIGFueSBwb3J0aW9uIG9mIHRoZSBzb2Z0d2FyZSBpbiBzb3VyY2UgY29kZSBmb3JtLCB5b3UgbWF5IGRvIHNvIG9ubHkgdW5kZXIgdGhpcyBsaWNlbnNlIGJ5IGluY2x1ZGluZyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhpcyBsaWNlbnNlIHdpdGggeW91ciBkaXN0cmlidXRpb24uIElmIHlvdSBkaXN0cmlidXRlIGFueSBwb3J0aW9uIG9mIHRoZSBzb2Z0d2FyZSBpbiBjb21waWxlZCBvciBvYmplY3QgY29kZSBmb3JtLCB5b3UgbWF5IG9ubHkgZG8gc28gdW5kZXIgYSBsaWNlbnNlIHRoYXQgY29tcGxpZXMgd2l0aCB0aGlzIGxpY2Vuc2UuCisgKEYpIFRoZSBzb2Z0d2FyZSBpcyBsaWNlbnNlZCAiYXMtaXMuIiBZb3UgYmVhciB0aGUgcmlzayBvZiB1c2luZyBpdC4gVGhlIGNvbnRyaWJ1dG9ycyBnaXZlIG5vIGV4cHJlc3Mgd2FycmFudGllcywgZ3VhcmFudGVlcyBvciBjb25kaXRpb25zLiBZb3UgbWF5IGhhdmUgYWRkaXRpb25hbCBjb25zdW1lciByaWdodHMgdW5kZXIgeW91ciBsb2NhbCBsYXdzIHdoaWNoIHRoaXMgbGljZW5zZSBjYW5ub3QgY2hhbmdlLiBUbyB0aGUgZXh0ZW50IHBlcm1pdHRlZCB1bmRlciB5b3VyIGxvY2FsIGxhd3MsIHRoZSBjb250cmlidXRvcnMgZXhjbHVkZSB0aGUgaW1wbGllZCB3YXJyYW50aWVzIG9mIG1lcmNoYW50YWJpbGl0eSwgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UgYW5kIG5vbi1pbmZyaW5nZW1lbnQuCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJiOTYxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI4MDcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJXaXhTdGFuZGFyZEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcCIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKy8vICAgQ29weXJpZ2h0IChjKSAyMDA0LCBPdXRlcmN1cnZlIEZvdW5kYXRpb24uCisvLyAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorLy8gICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKy8vICAgTElDRU5TRS5UWFQgYXQgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24uCisvLyA8L2NvcHlyaWdodD4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyNpbmNsdWRlICJwY2guaCIKKworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9XSU5ET1dfQ0xBU1MgPSBMIlB5dGhvbkJBIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIID0gTCJMYXVuY2hUYXJnZXQiOworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEID0gTCJMYXVuY2hUYXJnZXRFbGV2YXRlZElkIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyA9IEwiTGF1bmNoQXJndW1lbnRzIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTiA9IEwiTGF1bmNoSGlkZGVuIjsKK3N0YXRpYyBjb25zdCBEV09SRCBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSA9IDMwOworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OID0gTCJXaXhCdW5kbGVGaWxlVmVyc2lvbiI7CisKK2VudW0gUFlCQV9TVEFURSB7CisgICAgUFlCQV9TVEFURV9JTklUSUFMSVpJTkcsCisgICAgUFlCQV9TVEFURV9JTklUSUFMSVpFRCwKKyAgICBQWUJBX1NUQVRFX0hFTFAsCisgICAgUFlCQV9TVEFURV9ERVRFQ1RJTkcsCisgICAgUFlCQV9TVEFURV9ERVRFQ1RFRCwKKyAgICBQWUJBX1NUQVRFX1BMQU5OSU5HLAorICAgIFBZQkFfU1RBVEVfUExBTk5FRCwKKyAgICBQWUJBX1NUQVRFX0FQUExZSU5HLAorICAgIFBZQkFfU1RBVEVfQ0FDSElORywKKyAgICBQWUJBX1NUQVRFX0NBQ0hFRCwKKyAgICBQWUJBX1NUQVRFX0VYRUNVVElORywKKyAgICBQWUJBX1NUQVRFX0VYRUNVVEVELAorICAgIFBZQkFfU1RBVEVfQVBQTElFRCwKKyAgICBQWUJBX1NUQVRFX0ZBSUxFRCwKK307CisKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9TSE9XX0hFTFAgPSBXTV9BUFAgKyAxMDA7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfREVURUNUX1BBQ0tBR0VTID0gV01fQVBQICsgMTAxOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX1BMQU5fUEFDS0FHRVMgPSBXTV9BUFAgKyAxMDI7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfQVBQTFlfUEFDS0FHRVMgPSBXTV9BUFAgKyAxMDM7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfQ0hBTkdFX1NUQVRFID0gV01fQVBQICsgMTA0Oworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX1NIT1dfRkFJTFVSRSA9IFdNX0FQUCArIDEwNTsKKworLy8gVGhpcyBlbnVtIG11c3QgYmUga2VwdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgUEFHRV9OQU1FUyBhcnJheS4KK2VudW0gUEFHRSB7CisgICAgUEFHRV9MT0FESU5HLAorICAgIFBBR0VfSEVMUCwKKyAgICBQQUdFX0lOU1RBTEwsCisgICAgUEFHRV9TSU1QTEVfSU5TVEFMTCwKKyAgICBQQUdFX0NVU1RPTTEsCisgICAgUEFHRV9DVVNUT00yLAorICAgIFBBR0VfTU9ESUZZLAorICAgIFBBR0VfUFJPR1JFU1MsCisgICAgUEFHRV9QUk9HUkVTU19QQVNTSVZFLAorICAgIFBBR0VfU1VDQ0VTUywKKyAgICBQQUdFX0ZBSUxVUkUsCisgICAgQ09VTlRfUEFHRSwKK307CisKKy8vIFRoaXMgYXJyYXkgbXVzdCBiZSBrZXB0IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBQQUdFIGVudW0uCitzdGF0aWMgTFBDV1NUUiBQQUdFX05BTUVTW10gPSB7CisgICAgTCJMb2FkaW5nIiwKKyAgICBMIkhlbHAiLAorICAgIEwiSW5zdGFsbCIsCisgICAgTCJTaW1wbGVJbnN0YWxsIiwKKyAgICBMIkN1c3RvbTEiLAorICAgIEwiQ3VzdG9tMiIsCisgICAgTCJNb2RpZnkiLAorICAgIEwiUHJvZ3Jlc3MiLAorICAgIEwiUHJvZ3Jlc3NQYXNzaXZlIiwKKyAgICBMIlN1Y2Nlc3MiLAorICAgIEwiRmFpbHVyZSIsCit9OworCitlbnVtIENPTlRST0xfSUQgeworICAgIC8vIE5vbi1wYWdlZCBjb250cm9scworICAgIElEX0NMT1NFX0JVVFRPTiA9IFRIRU1FX0ZJUlNUX0FTU0lHTl9DT05UUk9MX0lELAorICAgIElEX01JTklNSVpFX0JVVFRPTiwKKworICAgIC8vIFdlbGNvbWUgcGFnZQorICAgIElEX0lOU1RBTExfQUxMX1VTRVJTX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX0pVU1RfRk9SX01FX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLAorICAgIElEX0lOU1RBTExfQ0FOQ0VMX0JVVFRPTiwKKyAgICAKKyAgICAvLyBDdXN0b21pemUgUGFnZQorICAgIElEX1RBUkdFVERJUl9FRElUQk9YLAorICAgIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YLAorICAgIElEX0NVU1RPTV9DT01QSUxFX0FMTF9DSEVDS0JPWCwKKyAgICBJRF9DVVNUT01fQlJPV1NFX0JVVFRPTiwKKyAgICBJRF9DVVNUT01fQlJPV1NFX0JVVFRPTl9MQUJFTCwKKyAgICBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sCisgICAgSURfQ1VTVE9NX05FWFRfQlVUVE9OLAorICAgIElEX0NVU1RPTTFfQkFDS19CVVRUT04sCisgICAgSURfQ1VTVE9NMl9CQUNLX0JVVFRPTiwKKyAgICBJRF9DVVNUT00xX0NBTkNFTF9CVVRUT04sCisgICAgSURfQ1VTVE9NMl9DQU5DRUxfQlVUVE9OLAorCisgICAgLy8gTW9kaWZ5IHBhZ2UKKyAgICBJRF9NT0RJRllfQlVUVE9OLAorICAgIElEX1JFUEFJUl9CVVRUT04sCisgICAgSURfVU5JTlNUQUxMX0JVVFRPTiwKKyAgICBJRF9NT0RJRllfQ0FOQ0VMX0JVVFRPTiwKKworICAgIC8vIFByb2dyZXNzIHBhZ2UKKyAgICBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsCisgICAgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLAorICAgIElEX0NBQ0hFX1BST0dSRVNTX1RFWFQsCisKKyAgICBJRF9FWEVDVVRFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwKKyAgICBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwKKyAgICBJRF9FWEVDVVRFX1BST0dSRVNTX1RFWFQsCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19BQ1RJT05EQVRBX1RFWFQsCisKKyAgICBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwKKyAgICBJRF9PVkVSQUxMX1BST0dSRVNTX0JBUiwKKyAgICBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLAorICAgIElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwKKworICAgIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBTdWNjZXNzIHBhZ2UKKyAgICBJRF9MQVVOQ0hfQlVUVE9OLAorICAgIElEX1NVQ0NFU1NfVEVYVCwKKyAgICBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwKKyAgICBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLAorICAgIElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwKKworICAgIC8vIEZhaWx1cmUgcGFnZQorICAgIElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLAorICAgIElEX0ZBSUxVUkVfTUVTU0FHRV9URVhULAorICAgIElEX0ZBSUxVUkVfUkVTVEFSVF9URVhULAorICAgIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sCisgICAgSURfRkFJTFVSRV9DQU5DRUxfQlVUVE9OCit9OworCitzdGF0aWMgVEhFTUVfQVNTSUdOX0NPTlRST0xfSUQgQ09OVFJPTF9JRF9OQU1FU1tdID0geworICAgIHsgSURfQ0xPU0VfQlVUVE9OLCBMIkNsb3NlQnV0dG9uIiB9LAorICAgIHsgSURfTUlOSU1JWkVfQlVUVE9OLCBMIk1pbmltaXplQnV0dG9uIiB9LAorCisgICAgeyBJRF9JTlNUQUxMX0FMTF9VU0VSU19CVVRUT04sIEwiSW5zdGFsbEFsbFVzZXJzQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9KVVNUX0ZPUl9NRV9CVVRUT04sIEwiSW5zdGFsbEp1c3RGb3JNZUJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfQ1VTVE9NX0JVVFRPTiwgTCJJbnN0YWxsQ3VzdG9tQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLCBMIkluc3RhbGxTaW1wbGVCdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT04sIEwiSW5zdGFsbENhbmNlbEJ1dHRvbiIgfSwKKworICAgIHsgSURfVEFSR0VURElSX0VESVRCT1gsIEwiVGFyZ2V0RGlyIiB9LAorICAgIHsgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgTCJBc3NvY2lhdGVGaWxlcyIgfSwKKyAgICB7IElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCwgTCJJbnN0YWxsQWxsVXNlcnMiIH0sCisgICAgeyBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsIEwiQ29tcGlsZUFsbCIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbkxhYmVsIiB9LAorICAgIHsgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBMIkN1c3RvbUluc3RhbGxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT01fTkVYVF9CVVRUT04sIEwiQ3VzdG9tTmV4dEJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTTFfQkFDS19CVVRUT04sIEwiQ3VzdG9tMUJhY2tCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0JBQ0tfQlVUVE9OLCBMIkN1c3RvbTJCYWNrQnV0dG9uIiB9LAorICAgIHsgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OLCBMIkN1c3RvbTFDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0NBTkNFTF9CVVRUT04sIEwiQ3VzdG9tMkNhbmNlbEJ1dHRvbiIgfSwKKworICAgIHsgSURfTU9ESUZZX0JVVFRPTiwgTCJNb2RpZnlCdXR0b24iIH0sCisgICAgeyBJRF9SRVBBSVJfQlVUVE9OLCBMIlJlcGFpckJ1dHRvbiIgfSwKKyAgICB7IElEX1VOSU5TVEFMTF9CVVRUT04sIEwiVW5pbnN0YWxsQnV0dG9uIiB9LAorICAgIHsgSURfTU9ESUZZX0NBTkNFTF9CVVRUT04sIEwiTW9kaWZ5Q2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiQ2FjaGVQcm9ncmVzc1BhY2thZ2VUZXh0IiB9LAorICAgIHsgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLCBMIkNhY2hlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19URVhULCBMIkNhY2hlUHJvZ3Jlc3NUZXh0IiB9LAorICAgIHsgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwgTCJFeGVjdXRlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULCBMIkV4ZWN1dGVQcm9ncmVzc0FjdGlvbkRhdGFUZXh0IiB9LAorICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX0JBUiwgTCJPdmVyYWxsUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLCBMIk92ZXJhbGxDYWxjdWxhdGVkUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEwiUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIH0sCisKKyAgICB7IElEX0xBVU5DSF9CVVRUT04sIEwiTGF1bmNoQnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19URVhULCBMIlN1Y2Nlc3NUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIEwiU3VjY2Vzc1Jlc3RhcnRUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgTCJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJTdWNjZXNzQ2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCisgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgTCJGYWlsdXJlUmVzdGFydFRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBMIkZhaWx1cmVSZXN0YXJ0QnV0dG9uIiB9LAorICAgIHsgSURfRkFJTFVSRV9DQU5DRUxfQlVUVE9OLCBMIkZhaWx1cmVDYW5jZWxCdXR0b24iIH0sCit9OworCitjbGFzcyBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbiA6IHB1YmxpYyBDQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIHsKKyAgICB2b2lkIFNob3dQYWdlKERXT1JEIG5ld1BhZ2VJZCkgeworICAgICAgICAvLyBQcm9jZXNzIGVhY2ggY29udHJvbCBmb3Igc3BlY2lhbCBoYW5kbGluZyBpbiB0aGUgbmV3IHBhZ2UuCisgICAgICAgIFByb2Nlc3NQYWdlQ29udHJvbHMoVGhlbWVHZXRQYWdlKF90aGVtZSwgbmV3UGFnZUlkKSk7CisKKyAgICAgICAgLy8gRW5hYmxlIGRpc2FibGUgY29udHJvbHMgcGVyLXBhZ2UuCisgICAgICAgIGlmIChfcGFnZUlkc1tQQUdFX0lOU1RBTExdID09IG5ld1BhZ2VJZCB8fCBfcGFnZUlkc1tQQUdFX1NJTVBMRV9JTlNUQUxMXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIEluc3RhbGxQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX0NVU1RPTTFdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgQ3VzdG9tMVBhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfQ1VTVE9NMl0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBDdXN0b20yUGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9NT0RJRlldID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgTW9kaWZ5UGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9TVUNDRVNTXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIFN1Y2Nlc3NQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX0ZBSUxVUkVdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgRmFpbHVyZVBhZ2VfU2hvdygpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHJldmVudCByZXBhaW50aW5nIHdoaWxlIHN3aXRjaGluZyBwYWdlIHRvIGF2b2lkIHVnbHkgZmxpY2tlcmluZworICAgICAgICBfc3VwcHJlc3NQYWludCA9IFRSVUU7CisgICAgICAgIFRoZW1lU2hvd1BhZ2UoX3RoZW1lLCBuZXdQYWdlSWQsIFNXX1NIT1cpOworICAgICAgICBUaGVtZVNob3dQYWdlKF90aGVtZSwgX3Zpc2libGVQYWdlSWQsIFNXX0hJREUpOworICAgICAgICBfc3VwcHJlc3NQYWludCA9IEZBTFNFOworICAgICAgICBJbnZhbGlkYXRlUmVjdChfdGhlbWUtPmh3bmRQYXJlbnQsIG51bGxwdHIsIFRSVUUpOworICAgICAgICBfdmlzaWJsZVBhZ2VJZCA9IG5ld1BhZ2VJZDsKKworICAgICAgICAvLyBPbiB0aGUgaW5zdGFsbCBwYWdlIHNldCB0aGUgZm9jdXMgdG8gdGhlIGluc3RhbGwgYnV0dG9uIG9yCisgICAgICAgIC8vIHRoZSBuZXh0IGVuYWJsZWQgY29udHJvbCBpZiBpbnN0YWxsIGlzIGRpc2FibGVkCisgICAgICAgIGlmIChfcGFnZUlkc1tQQUdFX0lOU1RBTExdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgVGhlbWVTZXRGb2N1cyhfdGhlbWUsIElEX0lOU1RBTExfQUxMX1VTRVJTX0JVVFRPTik7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9TSU1QTEVfSU5TVEFMTF0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBUaGVtZVNldEZvY3VzKF90aGVtZSwgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gSGFuZGxlcyBjb250cm9sIGNsaWNrcworICAgIC8vCisgICAgdm9pZCBPbkNvbW1hbmQoQ09OVFJPTF9JRCBpZCkgeworICAgICAgICBMUFdTVFIgZGVmYXVsdERpciA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyOworICAgICAgICBMT05HTE9ORyBlbGV2YXRlZCwgY3J0SW5zdGFsbGVkOworICAgICAgICBCT09MIGNoZWNrZWQ7CisgICAgICAgIFdDSEFSIHd6UGF0aFtNQVhfUEFUSF0gPSB7IH07CisgICAgICAgIEJST1dTRUlORk9XIGJyb3dzZUluZm8gPSB7IH07CisgICAgICAgIFBJRExJU1RfQUJTT0xVVEUgcGlkbCA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIHN3aXRjaChpZCkgeworICAgICAgICBjYXNlIElEX0NMT1NFX0JVVFRPTjoKKyAgICAgICAgICAgIE9uQ2xpY2tDbG9zZUJ1dHRvbigpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gSW5zdGFsbCBjb21tYW5kcworICAgICAgICBjYXNlIElEX0lOU1RBTExfU0lNUExFX0JVVFRPTjoKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICF0YXJnZXREaXIgfHwgISp0YXJnZXREaXIpIHsKKyAgICAgICAgICAgICAgICBMT05HTE9ORyBpbnN0YWxsQWxsOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiSW5zdGFsbEFsbFVzZXJzIiwgJmluc3RhbGxBbGwpKSAmJiBpbnN0YWxsQWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiLCAmZGVmYXVsdERpcik7CisgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IHRoZSBkZWZhdWx0IGFsbCB1c2VycyBpbnN0YWxsIGRpcmVjdG9yeSIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiwgJmRlZmF1bHREaXIpOworICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCB0aGUgZGVmYXVsdCBwZXItdXNlciBpbnN0YWxsIGRpcmVjdG9yeSIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdERpciB8fCAhKmRlZmF1bHREaXIpIHsKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoRV9JTlZBTElEQVJHLCAiRGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBpcyBibGFuayIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHREaXIsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCAnJWxzJyIsIGRlZmF1bHREaXIpOworCisgICAgICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIlRhcmdldERpciIsIHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0YXJnZXREaXIpOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2V0IGluc3RhbGwgdGFyZ2V0IGRpcmVjdG9yeSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKHRhcmdldERpcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0FMTF9VU0VSU19CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbEFsbFVzZXJzIiwgMSk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCBMIkZhaWxlZCB0byBzZXQgaW5zdGFsbCBzY29wZSIpOworCisgICAgICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkNvbXBpbGVBbGwiLCAxKTsKKyAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsIEwiRmFpbGVkIHRvIHNldCBjb21waWxlIGFsbCBzZXR0aW5nIik7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiLCAmZGVmYXVsdERpcik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCB0aGUgZGVmYXVsdCBhbGwgdXNlcnMgaW5zdGFsbCBkaXJlY3RvcnkiKTsKKworICAgICAgICAgICAgaWYgKCFkZWZhdWx0RGlyIHx8ICEqZGVmYXVsdERpcikgeworICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKEVfSU5WQUxJREFSRywgIkRlZmF1bHQgaW5zdGFsbCBkaXJlY3RvcnkgaXMgYmxhbmsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJnRhcmdldERpcik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgJyVscyciLCBkZWZhdWx0RGlyKTsKKworICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIlRhcmdldERpciIsIHRhcmdldERpcik7CisgICAgICAgICAgICBSZWxlYXNlU3RyKHRhcmdldERpcik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNldCBpbnN0YWxsIHRhcmdldCBkaXJlY3RvcnkiKTsKKworICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0lOU1RBTExfSlVTVF9GT1JfTUVfQlVUVE9OOgorICAgICAgICAgICAgU2F2ZVBhZ2VTZXR0aW5ncygpOworCisgICAgICAgICAgICBpZiAoIVF1ZXJ5RWxldmF0ZUZvckNydEluc3RhbGwoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxBbGxVc2VycyIsIDApOworICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgTCJGYWlsZWQgdG8gc2V0IGluc3RhbGwgc2NvcGUiKTsKKworICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJDb21waWxlQWxsIiwgMCk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCBMIkZhaWxlZCB0byB1bnNldCBDb21waWxlQWxsIik7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiwgJmRlZmF1bHREaXIpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgdGhlIGRlZmF1bHQgcGVyLXVzZXIgaW5zdGFsbCBkaXJlY3RvcnkiKTsKKworICAgICAgICAgICAgaWYgKCFkZWZhdWx0RGlyIHx8ICEqZGVmYXVsdERpcikgeworICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKEVfSU5WQUxJREFSRywgIkRlZmF1bHQgaW5zdGFsbCBkaXJlY3RvcnkgaXMgYmxhbmsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJnRhcmdldERpcik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgJyVscyciLCBkZWZhdWx0RGlyKTsKKworICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIlRhcmdldERpciIsIHRhcmdldERpcik7CisgICAgICAgICAgICBSZWxlYXNlU3RyKHRhcmdldERpcik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNldCBpbnN0YWxsIHRhcmdldCBkaXJlY3RvcnkiKTsKKworICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTTFfQkFDS19CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICBpZiAoX21vZGlmeWluZykgeworICAgICAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfTU9ESUZZKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9JTlNUQUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9DVVNUT01fQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICBjYXNlIElEX0NVU1RPTTJfQkFDS19CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fTkVYVF9CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT046CisgICAgICAgICAgICBTYXZlUGFnZVNldHRpbmdzKCk7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogQ2hlY2sgd2hldGhlciBkaXJlY3RvcnkgZXhpc3RzIGFuZCBjb250YWlucyBhbm90aGVyIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2hlY2tlZCA9IFRoZW1lSXNDb250cm9sQ2hlY2tlZChfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCk7CisgICAgICAgICAgICBpZiAoIWNoZWNrZWQgJiYgIVF1ZXJ5RWxldmF0ZUZvckNydEluc3RhbGwoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPblBsYW4oX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YOgorICAgICAgICAgICAgaHIgPSBCYWxHZXROdW1lcmljVmFyaWFibGUoTCJXaXhCdW5kbGVFbGV2YXRlZCIsICZlbGV2YXRlZCk7CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBjaGVja2VkICYmIChGQUlMRUQoaHIpIHx8ICFlbGV2YXRlZCkpOworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsICFjaGVja2VkKTsKKyAgICAgICAgICAgIGlmIChjaGVja2VkKSB7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIDEpOworICAgICAgICAgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgSURfQ1VTVE9NX0NPTVBJTEVfQUxMX0NIRUNLQk9YLCBCTV9TRVRDSEVDSywgQlNUX0NIRUNLRUQsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVGhlbWVHZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXREaXIpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgY3VycmVudCB2YWx1ZSBhZ2FpbnN0IHRoZSBkZWZhdWx0IHRvIHNlZQorICAgICAgICAgICAgICAgIC8vIGlmIHdlIHNob3VsZCBzd2l0Y2ggaXQgYXV0b21hdGljYWxseS4KKyAgICAgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICBjaGVja2VkID8gTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiA6IEwiRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiwKKyAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHREaXIpIHsKKyAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGZvcm1hdHRlZCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJmZvcm1hdHRlZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzY21wKGZvcm1hdHRlZCwgdGFyZ2V0RGlyKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihkZWZhdWx0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGZvcm1hdHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkID8gTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIDogTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHREaXIgJiYgZGVmYXVsdERpclswXSAmJiBTVUNDRUVERUQoQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHREaXIsICZmb3JtYXR0ZWQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfVEFSR0VURElSX0VESVRCT1gsIGZvcm1hdHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihkZWZhdWx0RGlyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OOgorICAgICAgICAgICAgYnJvd3NlSW5mby5od25kT3duZXIgPSBfaFduZDsKKyAgICAgICAgICAgIGJyb3dzZUluZm8ucHN6RGlzcGxheU5hbWUgPSB3elBhdGg7CisgICAgICAgICAgICBicm93c2VJbmZvLmxwc3pUaXRsZSA9IF90aGVtZS0+c2N6Q2FwdGlvbjsKKyAgICAgICAgICAgIGJyb3dzZUluZm8udWxGbGFncyA9IEJJRl9SRVRVUk5PTkxZRlNESVJTIHwgQklGX1VTRU5FV1VJOworICAgICAgICAgICAgcGlkbCA9IDo6U0hCcm93c2VGb3JGb2xkZXJXKCZicm93c2VJbmZvKTsKKyAgICAgICAgICAgIGlmIChwaWRsICYmIDo6U0hHZXRQYXRoRnJvbUlETGlzdFcocGlkbCwgd3pQYXRoKSkgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgd3pQYXRoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBpZGwpIHsKKyAgICAgICAgICAgICAgICA6OkNvVGFza01lbUZyZWUocGlkbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBNb2RpZnkgY29tbWFuZHMKKyAgICAgICAgY2FzZSBJRF9NT0RJRllfQlVUVE9OOgorICAgICAgICAgICAgLy8gU29tZSB2YXJpYWJsZXMgY2Fubm90IGJlIG1vZGlmaWVkCisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkluc3RhbGxBbGxVc2Vyc1N0YXRlIiwgTCJkaXNhYmxlIik7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIlRhcmdldERpclN0YXRlIiwgTCJkaXNhYmxlIik7CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIkN1c3RvbUJyb3dzZUJ1dHRvblN0YXRlIiwgTCJkaXNhYmxlIik7CisgICAgICAgICAgICBfbW9kaWZ5aW5nID0gVFJVRTsKKyAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfQ1VTVE9NMSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX1JFUEFJUl9CVVRUT046CisgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9SRVBBSVIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9VTklOU1RBTExfQlVUVE9OOgorICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZvaWQgSW5zdGFsbFBhZ2VfU2hvdygpIHsKKyAgICAgICAgLy8gRW5zdXJlIHRoZSBBbGwgVXNlcnMgaW5zdGFsbCBidXR0b24gaGFzIGEgVUFDIHNoaWVsZAorICAgICAgICBMT05HTE9ORyBlbGV2YXRlZCwgaW5zdGFsbEFsbDsKKworICAgICAgICBpZiAoRkFJTEVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKSkpIHsKKyAgICAgICAgICAgIGVsZXZhdGVkID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9BTExfVVNFUlNfQlVUVE9OLCAhZWxldmF0ZWQpOworCisgICAgICAgIGlmIChTVUNDRUVERUQoQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiSW5zdGFsbEFsbFVzZXJzIiwgJmluc3RhbGxBbGwpKSAmJiBpbnN0YWxsQWxsKSB7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX0lOU1RBTExfU0lNUExFX0JVVFRPTiwgIWVsZXZhdGVkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgQ3VzdG9tMVBhZ2VfU2hvdygpIHsKKyAgICB9CisKKyAgICB2b2lkIEN1c3RvbTJQYWdlX1Nob3coKSB7CisgICAgICAgIEhSRVNVTFQgaHI7CisgICAgICAgIExPTkdMT05HIGluc3RhbGxBbGwsIGVsZXZhdGVkLCBpbmNsdWRlTGF1bmNoZXI7CisgICAgICAgIAorICAgICAgICBpZiAoRkFJTEVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKSkpIHsKKyAgICAgICAgICAgIGVsZXZhdGVkID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkluc3RhbGxBbGxVc2VycyIsICZpbnN0YWxsQWxsKSkpIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBpbnN0YWxsQWxsICYmICFlbGV2YXRlZCk7CisgICAgICAgICAgICBUaGVtZVNob3dDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIFNXX0hJREUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5zdGFsbEFsbCA9IDA7CisgICAgICAgICAgICBUaGVtZVNob3dDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbmNsdWRlX2xhdW5jaGVyIiwgJmluY2x1ZGVMYXVuY2hlcikpICYmIGluY2x1ZGVMYXVuY2hlcikgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgVFJVRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEJNX1NFVENIRUNLLCBCU1RfVU5DSEVDS0VELCAwKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyOworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIHRhcmdldERpciAmJiB0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIFN0ckZyZWUodGFyZ2V0RGlyKTsKKyAgICAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICBMUFdTVFIgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiRGVmYXVsdEN1c3RvbVRhcmdldERpciIsICZkZWZhdWx0VGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHRUYXJnZXREaXIgJiYgIWRlZmF1bHRUYXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICBTdHJGcmVlKGRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgICAgIGRlZmF1bHRUYXJnZXREaXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdFRhcmdldERpcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBkZWZhdWx0VGFyZ2V0RGlyKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRUYXJnZXREaXJbMF0gJiYgU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0VGFyZ2V0RGlyLCAmdGFyZ2V0RGlyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB0YXJnZXREaXIpOworICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0ckZyZWUoZGVmYXVsdFRhcmdldERpcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIE1vZGlmeVBhZ2VfU2hvdygpIHsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUkVQQUlSX0JVVFRPTiwgIV9zdXBwcmVzc1JlcGFpcik7CisgICAgfQorCisgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKyAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKKyAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgCisgICAgICAgIGlmIChfcmVzdGFydFJlcXVpcmVkKSB7CisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKKyAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEw6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NJbnN0YWxsTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NNb2RpZnlNZXNzYWdlKSIsICZzdWNjZXNzVGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjoKKyAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuU3VjY2Vzc1JlcGFpck1lc3NhZ2UpIiwgJnN1Y2Nlc3NUZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMOgorICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5TdWNjZXNzUmVtb3ZlTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VjY2Vzc1RleHQpIHsKKyAgICAgICAgICAgIExQV1NUUiBmb3JtYXR0ZWRTdHJpbmcgPSBudWxscHRyOworICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHN1Y2Nlc3NUZXh0LT53elRleHQsICZmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFN0cmluZykgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9TVUNDRVNTX1RFWFQsIGZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICAgICAgU3RyRnJlZShmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIkZhaWx1cmUiIHBhZ2UsIHNob3cgZXJyb3IgbWVzc2FnZSBhbmQgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgorCisgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9nIGZpbGUgdmFyaWFibGUgdGhlbiB3ZSdsbCBhc3N1bWUgdGhlIGxvZyBmaWxlIGV4aXN0cy4KKyAgICAgICAgQk9PTCBzaG93TG9nTGluayA9IChfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlICYmICpfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlKTsKKyAgICAgICAgQk9PTCBzaG93RXJyb3JNZXNzYWdlID0gRkFMU0U7CisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKworICAgICAgICBpZiAoRkFJTEVEKF9ockZpbmFsKSkgeworICAgICAgICAgICAgTFBXU1RSIHVuZm9ybWF0dGVkVGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICBMUFdTVFIgdGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhlIGZhaWx1cmUgbWVzc2FnZSwgdXNlIHRoYXQuCisgICAgICAgICAgICBpZiAoX2ZhaWxlZE1lc3NhZ2UgJiYgKl9mYWlsZWRNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgU3RyQWxsb2NTdHJpbmcoJnVuZm9ybWF0dGVkVGV4dCwgX2ZhaWxlZE1lc3NhZ2UsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyB0cnkgdG8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGVycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgU3RyQWxsb2NGcm9tRXJyb3IoJnVuZm9ybWF0dGVkVGV4dCwgX2hyRmluYWwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGlmICghdW5mb3JtYXR0ZWRUZXh0IHx8ICEqdW5mb3JtYXR0ZWRUZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEVfRkFJTCwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEID09IF9ockZpbmFsKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkVGV4dCkgeworICAgICAgICAgICAgICAgICAgICBTdHJBbGxvY1N0cmluZygmdGV4dCwgdW5mb3JtYXR0ZWRUZXh0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZ0ZXh0LCBMIjB4JTA4eCAtICVscyIsIF9ockZpbmFsLCB1bmZvcm1hdHRlZFRleHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dCkgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgdGV4dCk7CisgICAgICAgICAgICAgICAgc2hvd0Vycm9yTWVzc2FnZSA9IFRSVUU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlbGVhc2VTdHIodGV4dCk7CisgICAgICAgICAgICBSZWxlYXNlU3RyKHVuZm9ybWF0dGVkVGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgeworICAgICAgICAgICAgc2hvd1Jlc3RhcnRCdXR0b24gPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIHNob3dMb2dMaW5rKTsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIHNob3dFcnJvck1lc3NhZ2UpOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisKK3B1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgRFdPUkQgZHdVSVRocmVhZElkID0gMDsKKworICAgICAgICAvLyBjcmVhdGUgVUkgdGhyZWFkCisgICAgICAgIF9oVWlUaHJlYWQgPSA6OkNyZWF0ZVRocmVhZChudWxscHRyLCAwLCBVaVRocmVhZFByb2MsIHRoaXMsIDAsICZkd1VJVGhyZWFkSWQpOworICAgICAgICBpZiAoIV9oVWlUaHJlYWQpIHsKKyAgICAgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblNodXRkb3duKCkgeworICAgICAgICBpbnQgblJlc3VsdCA9IElETk9BQ1RJT047CisKKyAgICAgICAgLy8gd2FpdCBmb3IgVUkgdGhyZWFkIHRvIHRlcm1pbmF0ZQorICAgICAgICBpZiAoX2hVaVRocmVhZCkgeworICAgICAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KF9oVWlUaHJlYWQsIElORklOSVRFKTsKKyAgICAgICAgICAgIFJlbGVhc2VIYW5kbGUoX2hVaVRocmVhZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgd2FzIHJlcXVpcmVkLgorICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBfYWxsb3dSZXN0YXJ0KSB7CisgICAgICAgICAgICBuUmVzdWx0ID0gSURSRVNUQVJUOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkRldGVjdFJlbGF0ZWRCdW5kbGUoCisgICAgICAgIF9faW4gTFBDV1NUUiB3ekJ1bmRsZUlkLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVElPTl9UWVBFIHJlbGF0aW9uVHlwZSwKKyAgICAgICAgX19pbiBMUENXU1RSIC8qd3pCdW5kbGVUYWcqLywKKyAgICAgICAgX19pbiBCT09MIGZQZXJNYWNoaW5lLAorICAgICAgICBfX2luIERXT1JENjQgLypkdzY0VmVyc2lvbiovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTiBvcGVyYXRpb24KKyAgICApIHsKKyAgICAgICAgQmFsSW5mb0FkZFJlbGF0ZWRCdW5kbGVBc1BhY2thZ2UoJl9idW5kbGUucGFja2FnZXMsIHd6QnVuZGxlSWQsIHJlbGF0aW9uVHlwZSwgZlBlck1hY2hpbmUpOworCisgICAgICAgIC8vIFJlbWVtYmVyIHdoZW4gb3VyIGJ1bmRsZSB3b3VsZCBjYXVzZSBhIGRvd25ncmFkZS4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9ET1dOR1JBREUgPT0gb3BlcmF0aW9uKSB7CisgICAgICAgICAgICBfZG93bmdyYWRpbmcgPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkRldGVjdFBhY2thZ2VDb21wbGV0ZSgKKyAgICAgICAgX19pbiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIEhSRVNVTFQgLypoclN0YXR1cyovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9QQUNLQUdFX1NUQVRFIHN0YXRlCisgICAgKSB7IH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRGV0ZWN0Q29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpICYmIF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgZGV0ZWN0IGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25EZXRlY3RDb21wbGV0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIGhyU3RhdHVzID0gRXZhbHVhdGVDb25kaXRpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0RFVEVDVEVELCBoclN0YXR1cyk7CisKKyAgICAgICAgLy8gSWYgd2UncmUgbm90IGludGVyYWN0aW5nIHdpdGggdGhlIHVzZXIgb3Igd2UncmUgZG9pbmcgYSBsYXlvdXQgb3Igd2UncmUganVzdCBhZnRlciBhIGZvcmNlIHJlc3RhcnQKKyAgICAgICAgLy8gdGhlbiBhdXRvbWF0aWNhbGx5IHN0YXJ0IHBsYW5uaW5nLgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA+IF9jb21tYW5kLmRpc3BsYXkgfHwKKyAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9BQ1RJT05fTEFZT1VUID09IF9jb21tYW5kLmFjdGlvbiB8fAorICAgICAgICAgICAgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPT0gX2NvbW1hbmQuYWN0aW9uIHx8CisgICAgICAgICAgICBCT09UU1RSQVBQRVJfUkVTVU1FX1RZUEVfUkVCT09UID09IF9jb21tYW5kLnJlc3VtZVR5cGUpIHsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX1BZQkFfUExBTl9QQUNLQUdFUywgMCwgX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25QbGFuUmVsYXRlZEJ1bmRsZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgLyp3ekJ1bmRsZUlkKi8sCisgICAgICAgIF9faW5vdXRfeiBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURSogcFJlcXVlc3RlZFN0YXRlCisgICAgKSB7CisgICAgICAgIHJldHVybiBDaGVja0NhbmNlbGVkKCkgPyBJRENBTkNFTCA6IElET0s7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblBsYW5QYWNrYWdlQmVnaW4oCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2lub3V0IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFICpwUmVxdWVzdFN0YXRlCisgICAgKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBCQUxfSU5GT19QQUNLQUdFKiBwUGFja2FnZSA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCkgeworICAgICAgICAgICAgLy8gQWZ0ZXIgcmVzdGFydCB3ZSBuZWVkIHRvIGZpbmlzaCB0aGUgZGVwZW5kZW5jeSByZWdpc3RyYXRpb24gZm9yIG91ciBwYWNrYWdlIHNvIGFsbG93IHRoZSBwYWNrYWdlCisgICAgICAgICAgICAvLyB0byBnbyBwcmVzZW50LgorICAgICAgICAgICAgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgd3pQYWNrYWdlSWQsIC0xLCBfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQsIC0xKSkgeworICAgICAgICAgICAgICAgIC8vIERvIG5vdCBhbGxvdyBhIHJlcGFpciBiZWNhdXNlIHRoYXQgY291bGQgcHV0IHVzIGluIGEgcGVycGV0dWFsIHJlc3RhcnQgbG9vcC4KKyAgICAgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEVfUkVQQUlSID09ICpwUmVxdWVzdFN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgICpwUmVxdWVzdFN0YXRlID0gQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEVfUFJFU0VOVDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWxlYXNlTnVsbFN0cihfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOyAvLyBubyBtb3JlIHNraXBwaW5nIG5vdy4KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gbm90IHRoZSBtYXRjaGluZyBwYWNrYWdlLCBzbyBza2lwIGl0LgorICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiU2tpcHBpbmcgcGFja2FnZTogJWxzLCBhZnRlciByZXN0YXJ0IGJlY2F1c2UgaXQgd2FzIGFwcGxpZWQgYmVmb3JlIHRoZSByZXN0YXJ0LiIsIHd6UGFja2FnZUlkKTsKKworICAgICAgICAgICAgICAgICpwUmVxdWVzdFN0YXRlID0gQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEVfTk9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgoX3BsYW5uZWRBY3Rpb24gPT0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMIHx8IF9wbGFubmVkQWN0aW9uID09IEJPT1RTVFJBUFBFUl9BQ1RJT05fTU9ESUZZKSAmJgorICAgICAgICAgICAgICAgICAgIFNVQ0NFRURFRChCYWxJbmZvRmluZFBhY2thZ2VCeUlkKCZfYnVuZGxlLnBhY2thZ2VzLCB3elBhY2thZ2VJZCwgJnBQYWNrYWdlKSkpIHsKKyAgICAgICAgICAgIEJPT0wgZiA9IEZBTFNFOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChfZW5naW5lLT5FdmFsdWF0ZUNvbmRpdGlvbihwUGFja2FnZS0+c2N6SW5zdGFsbENvbmRpdGlvbiwgJmYpKSAmJiBmKSB7CisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0U3RhdGUgPSBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9QUkVTRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblBsYW5Nc2lGZWF0dXJlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pGZWF0dXJlSWQsCisgICAgICAgIF9faW5vdXQgQk9PVFNUUkFQUEVSX0ZFQVRVUkVfU1RBVEUqIHBSZXF1ZXN0ZWRTdGF0ZQorICAgICkgeworICAgICAgICBMT05HTE9ORyBpbnN0YWxsOworICAgICAgICAKKyAgICAgICAgaWYgKHdjc2NtcCh3ekZlYXR1cmVJZCwgTCJBc3NvY2lhdGVGaWxlcyIpID09IDAgfHwgd2NzY21wKHd6RmVhdHVyZUlkLCBMIlNob3J0Y3V0cyIpID09IDApIHsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoX2VuZ2luZS0+R2V0VmFyaWFibGVOdW1lcmljKHd6RmVhdHVyZUlkLCAmaW5zdGFsbCkpICYmIGluc3RhbGwpIHsKKyAgICAgICAgICAgICAgICAqcFJlcXVlc3RlZFN0YXRlID0gQk9PVFNUUkFQUEVSX0ZFQVRVUkVfU1RBVEVfTE9DQUw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpwUmVxdWVzdGVkU3RhdGUgPSBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURV9BQlNFTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcFJlcXVlc3RlZFN0YXRlID0gQk9PVFNUUkFQUEVSX0ZFQVRVUkVfU1RBVEVfTE9DQUw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSUROT0FDVElPTjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25QbGFuQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpICYmIF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgcGxhbiBjb21wbGV0ZSBCQSBmdW5jdGlvbiIpOworICAgICAgICAgICAgX2JhRnVuY3Rpb24tPk9uUGxhbkNvbXBsZXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX1BMQU5ORUQsIGhyU3RhdHVzKTsKKworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX1BZQkFfQVBQTFlfUEFDS0FHRVMsIDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgX3N0YXJ0ZWRFeGVjdXRpb24gPSBGQUxTRTsKKyAgICAgICAgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzID0gMDsKKyAgICAgICAgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MgPSAwOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25DYWNoZVBhY2thZ2VCZWdpbigKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gRFdPUkQgY0NhY2hlUGF5bG9hZHMsCisgICAgICAgIF9faW4gRFdPUkQ2NCBkdzY0UGFja2FnZUNhY2hlU2l6ZQorICAgICkgeworICAgICAgICBpZiAod3pQYWNrYWdlSWQgJiYgKnd6UGFja2FnZUlkKSB7CisgICAgICAgICAgICBCQUxfSU5GT19QQUNLQUdFKiBwUGFja2FnZSA9IG51bGxwdHI7CisgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsSW5mb0ZpbmRQYWNrYWdlQnlJZCgmX2J1bmRsZS5wYWNrYWdlcywgd3pQYWNrYWdlSWQsICZwUGFja2FnZSk7CisgICAgICAgICAgICBMUENXU1RSIHd6ID0gKFNVQ0NFRURFRChocikgJiYgcFBhY2thZ2UtPnNjekRpc3BsYXlOYW1lKSA/IHBQYWNrYWdlLT5zY3pEaXNwbGF5TmFtZSA6IHd6UGFja2FnZUlkOworCisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfQ0FDSEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULCB3eik7CisKKyAgICAgICAgICAgIC8vIElmIHNvbWV0aGluZyBzdGFydGVkIGV4ZWN1dGluZywgbGVhdmUgaXQgaW4gdGhlIG92ZXJhbGwgcHJvZ3Jlc3MgdGV4dC4KKyAgICAgICAgICAgIGlmICghX3N0YXJ0ZWRFeGVjdXRpb24pIHsKKyAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkNhY2hlUGFja2FnZUJlZ2luKHd6UGFja2FnZUlkLCBjQ2FjaGVQYXlsb2FkcywgZHc2NFBhY2thZ2VDYWNoZVNpemUpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25DYWNoZUFjcXVpcmVQcm9ncmVzcygKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlT3JDb250YWluZXJJZCwKKyAgICAgICAgX19pbl96X29wdCBMUENXU1RSIHd6UGF5bG9hZElkLAorICAgICAgICBfX2luIERXT1JENjQgZHc2NFByb2dyZXNzLAorICAgICAgICBfX2luIERXT1JENjQgZHc2NFRvdGFsLAorICAgICAgICBfX2luIERXT1JEIGR3T3ZlcmFsbFBlcmNlbnRhZ2UKKyAgICApIHsKKyAgICAgICAgV0NIQVIgd3pQcm9ncmVzc1s1XSA9IHsgfTsKKworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25DYWNoZUFjcXVpcmVQcm9ncmVzcygpIC0gY29udGFpbmVyL3BhY2thZ2U6ICVscywgcGF5bG9hZDogJWxzLCBwcm9ncmVzczogJUk2NHUsIHRvdGFsOiAlSTY0dSwgb3ZlcmFsbCBwcm9ncmVzczogJXUlJSIsIHd6UGFja2FnZU9yQ29udGFpbmVySWQsIHd6UGF5bG9hZElkLCBkdzY0UHJvZ3Jlc3MsIGR3NjRUb3RhbCwgZHdPdmVyYWxsUGVyY2VudGFnZSk7CisjZW5kaWYKKworICAgICAgICA6OlN0cmluZ0NjaFByaW50Zlcod3pQcm9ncmVzcywgY291bnRvZih3elByb2dyZXNzKSwgTCIldSUlIiwgZHdPdmVyYWxsUGVyY2VudGFnZSk7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19URVhULCB3elByb2dyZXNzKTsKKworICAgICAgICBUaGVtZVNldFByb2dyZXNzQ29udHJvbChfdGhlbWUsIElEX0NBQ0hFX1BST0dSRVNTX0JBUiwgZHdPdmVyYWxsUGVyY2VudGFnZSk7CisKKyAgICAgICAgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzID0gZHdPdmVyYWxsUGVyY2VudGFnZSAqIFBZQkFfQUNRVUlSRV9QRVJDRU5UQUdFIC8gMTAwOworICAgICAgICBUaGVtZVNldFByb2dyZXNzQ29udHJvbChfdGhlbWUsIElEX09WRVJBTExfQ0FMQ1VMQVRFRF9QUk9HUkVTU19CQVIsIF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyArIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzKTsKKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkNhY2hlQWNxdWlyZVByb2dyZXNzKHd6UGFja2FnZU9yQ29udGFpbmVySWQsIHd6UGF5bG9hZElkLCBkdzY0UHJvZ3Jlc3MsIGR3NjRUb3RhbCwgZHdPdmVyYWxsUGVyY2VudGFnZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlQWNxdWlyZUNvbXBsZXRlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VPckNvbnRhaW5lcklkLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW4gSFJFU1VMVCBoclN0YXR1cywKKyAgICAgICAgX19pbiBpbnQgblJlY29tbWVuZGF0aW9uCisgICAgKSB7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHJTdGF0dXMpOworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25DYWNoZUFjcXVpcmVDb21wbGV0ZSh3elBhY2thZ2VPckNvbnRhaW5lcklkLCB3elBheWxvYWRJZCwgaHJTdGF0dXMsIG5SZWNvbW1lbmRhdGlvbik7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlVmVyaWZ5Q29tcGxldGUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBheWxvYWRJZCwKKyAgICAgICAgX19pbiBIUkVTVUxUIGhyU3RhdHVzLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShoclN0YXR1cyk7CisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkNhY2hlVmVyaWZ5Q29tcGxldGUod3pQYWNrYWdlSWQsIHd6UGF5bG9hZElkLCBoclN0YXR1cywgblJlY29tbWVuZGF0aW9uKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkNhY2hlQ29tcGxldGUoX19pbiBIUkVTVUxUIC8qaHJTdGF0dXMqLykgeworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfQ0FDSEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULCBMIiIpOworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0NBQ0hFRCwgU19PSyk7IC8vIHdlIGFsd2F5cyByZXR1cm4gc3VjY2VzcyBoZXJlIGFuZCBsZXQgT25BcHBseUNvbXBsZXRlKCkgZGVhbCB3aXRoIHRoZSBlcnJvci4KKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXJyb3IoCisgICAgICAgIF9faW4gQk9PVFNUUkFQUEVSX0VSUk9SX1RZUEUgZXJyb3JUeXBlLAorICAgICAgICBfX2luIExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gRFdPUkQgZHdDb2RlLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3ekVycm9yLAorICAgICAgICBfX2luIERXT1JEIGR3VUlIaW50LAorICAgICAgICBfX2luIERXT1JEIC8qY0RhdGEqLywKKyAgICAgICAgX19pbl9lY291bnRfel9vcHQoY0RhdGEpIExQQ1dTVFIqIC8qcmd3ekRhdGEqLywKKyAgICAgICAgX19pbiBpbnQgblJlY29tbWVuZGF0aW9uCisgICAgKSB7CisgICAgICAgIGludCBuUmVzdWx0ID0gblJlY29tbWVuZGF0aW9uOworICAgICAgICBMUFdTVFIgc2N6RXJyb3IgPSBudWxscHRyOworCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9FTUJFRERFRCA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBIUkVTVUxUIGhyID0gX2VuZ2luZS0+U2VuZEVtYmVkZGVkRXJyb3IoZHdDb2RlLCB3ekVycm9yLCBkd1VJSGludCwgJm5SZXN1bHQpOworICAgICAgICAgICAgaWYgKEZBSUxFRChocikpIHsKKyAgICAgICAgICAgICAgICBuUmVzdWx0ID0gSURFUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gYXV0aGVudGljYXRpb24gZmFpbHVyZSwgbGV0IHRoZSBlbmdpbmUgdHJ5IHRvIGhhbmRsZSBpdCBmb3IgdXMuCisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0VSUk9SX1RZUEVfSFRUUF9BVVRIX1NFUlZFUiA9PSBlcnJvclR5cGUgfHwgQk9PVFNUUkFQUEVSX0VSUk9SX1RZUEVfSFRUUF9BVVRIX1BST1hZID09IGVycm9yVHlwZSkgeworICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBJRFRSWUFHQUlOOworICAgICAgICAgICAgfSBlbHNlIC8vIHNob3cgYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgYm94LgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJhbFJldHJ5RXJyb3JPY2N1cnJlZCh3elBhY2thZ2VJZCwgZHdDb2RlKTsKKworICAgICAgICAgICAgICAgIGlmICghX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm8gZXJyb3IgbWVzc2FnZSB3YXMgcHJvdmlkZWQsIHVzZSB0aGUgZXJyb3IgY29kZSB0byB0cnkgYW5kIGdldCBhbiBlcnJvciBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICBpZiAoIXd6RXJyb3IgfHwgISp3ekVycm9yIHx8IEJPT1RTVFJBUFBFUl9FUlJPUl9UWVBFX1dJTkRPV1NfSU5TVEFMTEVSICE9IGVycm9yVHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IFN0ckFsbG9jRnJvbUVycm9yKCZzY3pFcnJvciwgZHdDb2RlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICFzY3pFcnJvciB8fCAhKnNjekVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyQWxsb2NGb3JtYXR0ZWQoJnNjekVycm9yLCBMIjB4JXgiLCBkd0NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgblJlc3VsdCA9IDo6TWVzc2FnZUJveFcoX2hXbmQsIHNjekVycm9yID8gc2N6RXJyb3IgOiB3ekVycm9yLCBfdGhlbWUtPnNjekNhcHRpb24sIGR3VUlIaW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFNldFByb2dyZXNzU3RhdGUoSFJFU1VMVF9GUk9NX1dJTjMyKGR3Q29kZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8ganVzdCB0YWtlIG5vdGUgb2YgdGhlIGVycm9yIGNvZGUgYW5kIGxldCB0aGluZ3MgY29udGludWUuCisgICAgICAgICAgICBCYWxSZXRyeUVycm9yT2NjdXJyZWQod3pQYWNrYWdlSWQsIGR3Q29kZSk7CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlU3RyKHNjekVycm9yKTsKKyAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkV4ZWN1dGVNc2lNZXNzYWdlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBJTlNUQUxMTUVTU0FHRSBtdCwKKyAgICAgICAgX19pbiBVSU5UIHVpRmxhZ3MsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6TWVzc2FnZSwKKyAgICAgICAgX19pbiBEV09SRCBjRGF0YSwKKyAgICAgICAgX19pbl9lY291bnRfel9vcHQoY0RhdGEpIExQQ1dTVFIqIHJnd3pEYXRhLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IE9uRXhlY3V0ZU1zaU1lc3NhZ2UoKSAtIHBhY2thZ2U6ICVscywgbWVzc2FnZTogJWxzIiwgd3pQYWNrYWdlSWQsIHd6TWVzc2FnZSk7CisjZW5kaWYKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSAmJiAoSU5TVEFMTE1FU1NBR0VfV0FSTklORyA9PSBtdCB8fCBJTlNUQUxMTUVTU0FHRV9VU0VSID09IG10KSkgeworICAgICAgICAgICAgaW50IG5SZXN1bHQgPSA6Ok1lc3NhZ2VCb3hXKF9oV25kLCB3ek1lc3NhZ2UsIF90aGVtZS0+c2N6Q2FwdGlvbiwgdWlGbGFncyk7CisgICAgICAgICAgICByZXR1cm4gblJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChJTlNUQUxMTUVTU0FHRV9BQ1RJT05TVEFSVCA9PSBtdCkgeworICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULCB3ek1lc3NhZ2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uRXhlY3V0ZU1zaU1lc3NhZ2Uod3pQYWNrYWdlSWQsIG10LCB1aUZsYWdzLCB3ek1lc3NhZ2UsIGNEYXRhLCByZ3d6RGF0YSwgblJlY29tbWVuZGF0aW9uKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUHJvZ3Jlc3MoX19pbiBEV09SRCBkd1Byb2dyZXNzUGVyY2VudGFnZSwgX19pbiBEV09SRCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpIHsKKyAgICAgICAgV0NIQVIgd3pQcm9ncmVzc1s1XSA9IHsgfTsKKworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25Qcm9ncmVzcygpIC0gcHJvZ3Jlc3M6ICV1JSUsIG92ZXJhbGwgcHJvZ3Jlc3M6ICV1JSUiLCBkd1Byb2dyZXNzUGVyY2VudGFnZSwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyNlbmRpZgorCisgICAgICAgIDo6U3RyaW5nQ2NoUHJpbnRmVyh3elByb2dyZXNzLCBjb3VudG9mKHd6UHJvZ3Jlc3MpLCBMIiV1JSUiLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19URVhULCB3elByb2dyZXNzKTsKKworICAgICAgICBUaGVtZVNldFByb2dyZXNzQ29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfQkFSLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25Qcm9ncmVzcyhkd1Byb2dyZXNzUGVyY2VudGFnZSwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXhlY3V0ZVBhY2thZ2VCZWdpbihfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwgX19pbiBCT09MIGZFeGVjdXRlKSB7CisgICAgICAgIExQV1NUUiBzY3pGb3JtYXR0ZWRTdHJpbmcgPSBudWxscHRyOworCisgICAgICAgIF9zdGFydGVkRXhlY3V0aW9uID0gVFJVRTsKKworICAgICAgICBpZiAod3pQYWNrYWdlSWQgJiYgKnd6UGFja2FnZUlkKSB7CisgICAgICAgICAgICBCQUxfSU5GT19QQUNLQUdFKiBwUGFja2FnZSA9IG51bGxwdHI7CisgICAgICAgICAgICBCYWxJbmZvRmluZFBhY2thZ2VCeUlkKCZfYnVuZGxlLnBhY2thZ2VzLCB3elBhY2thZ2VJZCwgJnBQYWNrYWdlKTsKKworICAgICAgICAgICAgTFBDV1NUUiB3eiA9IHd6UGFja2FnZUlkOworICAgICAgICAgICAgaWYgKHBQYWNrYWdlKSB7CisgICAgICAgICAgICAgICAgTE9DX1NUUklORyogcExvY1N0cmluZyA9IG51bGxwdHI7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBQYWNrYWdlLT50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBCQUxfSU5GT19QQUNLQUdFX1RZUEVfQlVORExFX0FERE9OOgorICAgICAgICAgICAgICAgICAgICBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5FeGVjdXRlQWRkb25SZWxhdGVkQnVuZGxlTWVzc2FnZSkiLCAmcExvY1N0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBCQUxfSU5GT19QQUNLQUdFX1RZUEVfQlVORExFX1BBVENIOgorICAgICAgICAgICAgICAgICAgICBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5FeGVjdXRlUGF0Y2hSZWxhdGVkQnVuZGxlTWVzc2FnZSkiLCAmcExvY1N0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBCQUxfSU5GT19QQUNLQUdFX1RZUEVfQlVORExFX1VQR1JBREU6CisgICAgICAgICAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkV4ZWN1dGVVcGdyYWRlUmVsYXRlZEJ1bmRsZU1lc3NhZ2UpIiwgJnBMb2NTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocExvY1N0cmluZykgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlIGluIHRoZSBVSSwgdGhlbiBvYnZpb3VzbHkgdGhleSBkb24ndCBjYXJlIGFib3V0IGtlZXBpbmcgaXQgc2FmZQorICAgICAgICAgICAgICAgICAgICAvLyBzbyBkb24ndCBnbyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkgZnJlZWQuCisgICAgICAgICAgICAgICAgICAgIEJhbEZvcm1hdFN0cmluZyhwTG9jU3RyaW5nLT53elRleHQsICZzY3pGb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHd6ID0gc2N6Rm9ybWF0dGVkU3RyaW5nID8gc2N6Rm9ybWF0dGVkU3RyaW5nIDogcFBhY2thZ2UtPnNjekRpc3BsYXlOYW1lID8gcFBhY2thZ2UtPnNjekRpc3BsYXlOYW1lIDogd3pQYWNrYWdlSWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gcFBhY2thZ2UgJiYgcFBhY2thZ2UtPmZEaXNwbGF5SW50ZXJuYWxVSTsKKworICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULCB3eik7CisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlU3RyKHNjekZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkV4ZWN1dGVQYWNrYWdlQmVnaW4od3pQYWNrYWdlSWQsIGZFeGVjdXRlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgaW50IF9fc3RkY2FsbCBPbkV4ZWN1dGVQcm9ncmVzcygKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gRFdPUkQgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsCisgICAgICAgIF9faW4gRFdPUkQgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlCisgICAgKSB7CisgICAgICAgIFdDSEFSIHd6UHJvZ3Jlc3NbOF0gPSB7IH07CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IE9uRXhlY3V0ZVByb2dyZXNzKCkgLSBwYWNrYWdlOiAlbHMsIHByb2dyZXNzOiAldSUlLCBvdmVyYWxsIHByb2dyZXNzOiAldSUlIiwgd3pQYWNrYWdlSWQsIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworI2VuZGlmCisKKyAgICAgICAgOjpTdHJpbmdDY2hQcmludGZXKHd6UHJvZ3Jlc3MsIGNvdW50b2Yod3pQcm9ncmVzcyksIEwiJXUlJSIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX1RFWFQsIHd6UHJvZ3Jlc3MpOworCisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19CQVIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisKKyAgICAgICAgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MgPSBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UgKiAoMTAwIC0gUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UpIC8gMTAwOworICAgICAgICBUaGVtZVNldFByb2dyZXNzQ29udHJvbChfdGhlbWUsIElEX09WRVJBTExfQ0FMQ1VMQVRFRF9QUk9HUkVTU19CQVIsIF9jYWxjdWxhdGVkQ2FjaGVQcm9ncmVzcyArIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzKTsKKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkV4ZWN1dGVQcm9ncmVzcyh3elBhY2thZ2VJZCwgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkV4ZWN1dGVQYWNrYWdlQ29tcGxldGUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJFeGl0Q29kZSwKKyAgICAgICAgX19pbiBCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVCByZXN0YXJ0LAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShockV4aXRDb2RlKTsKKworICAgICAgICBpZiAoX3djc25pY21wKHd6UGFja2FnZUlkLCBMInBhdGhfIiwgNSkgPT0gMCAmJiBTVUNDRUVERUQoaHJFeGl0Q29kZSkpIHsKKyAgICAgICAgICAgIFNlbmRNZXNzYWdlVGltZW91dFcoCisgICAgICAgICAgICAgICAgSFdORF9CUk9BRENBU1QsCisgICAgICAgICAgICAgICAgV01fU0VUVElOR0NIQU5HRSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPihMIkVudmlyb25tZW50IiksCisgICAgICAgICAgICAgICAgU01UT19BQk9SVElGSFVORywKKyAgICAgICAgICAgICAgICAxMDAwLAorICAgICAgICAgICAgICAgIG51bGxwdHIKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgblJlc3VsdCA9IF9fc3VwZXI6Ok9uRXhlY3V0ZVBhY2thZ2VDb21wbGV0ZSh3elBhY2thZ2VJZCwgaHJFeGl0Q29kZSwgcmVzdGFydCwgblJlY29tbWVuZGF0aW9uKTsKKworICAgICAgICByZXR1cm4gblJlc3VsdDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkV4ZWN1dGVDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULCBMIiIpOworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19BQ1RJT05EQVRBX1RFWFQsIEwiIik7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCIiKTsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgRkFMU0UpOyAvLyBubyBtb3JlIGNhbmNlbC4KKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0VYRUNVVEVELCBTX09LKTsgLy8gd2UgYWx3YXlzIHJldHVybiBzdWNjZXNzIGhlcmUgYW5kIGxldCBPbkFwcGx5Q29tcGxldGUoKSBkZWFsIHdpdGggdGhlIGVycm9yLgorICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyU3RhdHVzKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUmVzb2x2ZVNvdXJjZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlT3JDb250YWluZXJJZCwKKyAgICAgICAgX19pbl96X29wdCBMUENXU1RSIHd6UGF5bG9hZElkLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3ekxvY2FsU291cmNlLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pEb3dubG9hZFNvdXJjZQorICAgICkgeworICAgICAgICBpbnQgblJlc3VsdCA9IElERVJST1I7IC8vIGFzc3VtZSB3ZSB3b24ndCByZXNvbHZlIHNvdXJjZSBhbmQgdGhhdCBpcyB1bmV4cGVjdGVkLgorCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIGlmICh3ekRvd25sb2FkU291cmNlKSB7CisgICAgICAgICAgICAgICAgblJlc3VsdCA9IElERE9XTkxPQUQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIHByb21wdCB0byBjaGFuZ2UgdGhlIHNvdXJjZSBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBPUEVORklMRU5BTUVXIG9mbiA9IHsgfTsKKyAgICAgICAgICAgICAgICBXQ0hBUiB3ekZpbGVbTUFYX1BBVEhdID0geyB9OworCisgICAgICAgICAgICAgICAgOjpTdHJpbmdDY2hDb3B5Vyh3ekZpbGUsIGNvdW50b2Yod3pGaWxlKSwgd3pMb2NhbFNvdXJjZSk7CisKKyAgICAgICAgICAgICAgICBvZm4ubFN0cnVjdFNpemUgPSBzaXplb2Yob2ZuKTsKKyAgICAgICAgICAgICAgICBvZm4uaHduZE93bmVyID0gX2hXbmQ7CisgICAgICAgICAgICAgICAgb2ZuLmxwc3RyRmlsZSA9IHd6RmlsZTsKKyAgICAgICAgICAgICAgICBvZm4ubk1heEZpbGUgPSBjb3VudG9mKHd6RmlsZSk7CisgICAgICAgICAgICAgICAgb2ZuLmxwc3RyRmlsdGVyID0gTCJBbGwgRmlsZXNcMCouKlwwIjsKKyAgICAgICAgICAgICAgICBvZm4ubkZpbHRlckluZGV4ID0gMTsKKyAgICAgICAgICAgICAgICBvZm4uRmxhZ3MgPSBPRk5fUEFUSE1VU1RFWElTVCB8IE9GTl9GSUxFTVVTVEVYSVNUOworICAgICAgICAgICAgICAgIG9mbi5scHN0clRpdGxlID0gX3RoZW1lLT5zY3pDYXB0aW9uOworCisgICAgICAgICAgICAgICAgaWYgKDo6R2V0T3BlbkZpbGVOYW1lVygmb2ZuKSkgeworICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gX2VuZ2luZS0+U2V0TG9jYWxTb3VyY2Uod3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIG9mbi5scHN0ckZpbGUpOworICAgICAgICAgICAgICAgICAgICBuUmVzdWx0ID0gU1VDQ0VFREVEKGhyKSA/IElEUkVUUlkgOiBJREVSUk9SOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBJRENBTkNFTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAod3pEb3dubG9hZFNvdXJjZSkgeworICAgICAgICAgICAgLy8gSWYgZG9pbmcgYSBub24taW50ZXJhY3RpdmUgaW5zdGFsbCBhbmQgZG93bmxvYWQgc291cmNlIGlzIGF2YWlsYWJsZSwgbGV0J3MgdHJ5IGRvd25sb2FkaW5nIHRoZSBwYWNrYWdlIHNpbGVudGx5CisgICAgICAgICAgICBuUmVzdWx0ID0gSURET1dOTE9BRDsKKyAgICAgICAgfQorICAgICAgICAvLyBlbHNlIHRoZXJlJ3Mgbm90aGluZyBtb3JlIHdlIGNhbiBkbyBpbiBub24taW50ZXJhY3RpdmUgbW9kZQorCisgICAgICAgIHJldHVybiBDaGVja0NhbmNlbGVkKCkgPyBJRENBTkNFTCA6IG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkFwcGx5Q29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUIHJlc3RhcnQpIHsKKyAgICAgICAgX3Jlc3RhcnRSZXN1bHQgPSByZXN0YXJ0OyAvLyByZW1lbWJlciB0aGUgcmVzdGFydCByZXN1bHQgc28gd2UgcmV0dXJuIHRoZSBjb3JyZWN0IGVycm9yIGNvZGUgbm8gbWF0dGVyIHdoYXQgdGhlIHVzZXIgY2hvb3NlcyB0byBkbyBpbiB0aGUgVUkuCisKKyAgICAgICAgLy8gSWYgYSByZXN0YXJ0IHdhcyBlbmNvdW50ZXJlZCBhbmQgd2UgYXJlIG5vdCBzdXBwcmVzc2luZyByZXN0YXJ0cywgdGhlbiByZXN0YXJ0IGlzIHJlcXVpcmVkLgorICAgICAgICBfcmVzdGFydFJlcXVpcmVkID0gKEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUX05PTkUgIT0gcmVzdGFydCAmJiBCT09UU1RSQVBQRVJfUkVTVEFSVF9ORVZFUiA8IF9jb21tYW5kLnJlc3RhcnQpOworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgaXMgcmVxdWlyZWQgYW5kIHdlJ3JlIG5vdCBkaXNwbGF5aW5nIGEgVUkgb3Igd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBwcm9tcHQgZm9yIHJlc3RhcnQgdGhlbiBhbGxvdyB0aGUgcmVzdGFydC4KKyAgICAgICAgX2FsbG93UmVzdGFydCA9IF9yZXN0YXJ0UmVxdWlyZWQgJiYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5IHx8IEJPT1RTVFJBUFBFUl9SRVNUQVJUX1BST01QVCA8IF9jb21tYW5kLnJlc3RhcnQpOworCisgICAgICAgIC8vIElmIHdlIGFyZSBzaG93aW5nIFVJLCB3YWl0IGEgYmVhdCBiZWZvcmUgbW92aW5nIHRvIHRoZSBmaW5hbCBzY3JlZW4uCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FIDwgX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgOjpTbGVlcCgyNTApOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9BUFBMSUVELCBoclN0YXR1cyk7CisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcygxMDApOyAvLyBzaG93IGZ1bGwgcHJvZ3Jlc3MgYmFyLCBncmVlbiwgeWVsbG93LCBvciByZWQKKworICAgICAgICByZXR1cm4gSUROT0FDVElPTjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25MYXVuY2hBcHByb3ZlZEV4ZUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cywgX19pbiBEV09SRCAvKnByb2Nlc3NJZCovKSB7CisgICAgICAgIGlmIChIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfQUNDRVNTX0RFTklFRCkgPT0gaHJTdGF0dXMpIHsKKyAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCisgICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworICAgICAgICB9CisgICAgfQorCisKK3ByaXZhdGU6CisgICAgLy8KKyAgICAvLyBVaVRocmVhZFByb2MgLSBlbnRyeXBvaW50IGZvciBVSSB0aHJlYWQuCisgICAgLy8KKyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIFVpVGhyZWFkUHJvYyhfX2luIExQVk9JRCBwdkNvbnRleHQpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiBwVGhpcyA9IChQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbiopcHZDb250ZXh0OworICAgICAgICBCT09MIGNvbUluaXRpYWxpemVkID0gRkFMU0U7CisgICAgICAgIEJPT0wgcmV0ID0gRkFMU0U7CisgICAgICAgIE1TRyBtc2cgPSB7IH07CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBDT00gYW5kIHRoZW1lLgorICAgICAgICBociA9IDo6Q29Jbml0aWFsaXplKG51bGxwdHIpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgQ09NLiIpOworICAgICAgICBjb21Jbml0aWFsaXplZCA9IFRSVUU7CisKKyAgICAgICAgaHIgPSBUaGVtZUluaXRpYWxpemUocFRoaXMtPl9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZW1lIG1hbmFnZXIuIik7CisKKyAgICAgICAgaHIgPSBwVGhpcy0+SW5pdGlhbGl6ZURhdGEoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRhdGEgaW4gYm9vdHN0cmFwcGVyIGFwcGxpY2F0aW9uLiIpOworCisgICAgICAgIC8vIENyZWF0ZSBtYWluIHdpbmRvdy4KKyAgICAgICAgcFRoaXMtPkluaXRpYWxpemVUYXNrYmFyQnV0dG9uKCk7CisgICAgICAgIGhyID0gcFRoaXMtPkNyZWF0ZU1haW5XaW5kb3coKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgbWFpbiB3aW5kb3cuIik7CisKKyAgICAgICAgaWYgKEZBSUxFRChwVGhpcy0+X2hyRmluYWwpKSB7CisgICAgICAgICAgICBwVGhpcy0+U2V0U3RhdGUoUFlCQV9TVEFURV9GQUlMRUQsIGhyKTsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKHBUaGlzLT5faFduZCwgV01fUFlCQV9TSE9XX0ZBSUxVUkUsIDAsIDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT2theSwgd2UncmUgcmVhZHkgZm9yIHBhY2thZ2VzIG5vdy4KKyAgICAgICAgICAgIHBUaGlzLT5TZXRTdGF0ZShQWUJBX1NUQVRFX0lOSVRJQUxJWkVELCBocik7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhwVGhpcy0+X2hXbmQsIEJPT1RTVFJBUFBFUl9BQ1RJT05fSEVMUCA9PSBwVGhpcy0+X2NvbW1hbmQuYWN0aW9uID8gV01fUFlCQV9TSE9XX0hFTFAgOiBXTV9QWUJBX0RFVEVDVF9QQUNLQUdFUywgMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBtZXNzYWdlIHB1bXAKKyAgICAgICAgd2hpbGUgKDAgIT0gKHJldCA9IDo6R2V0TWVzc2FnZVcoJm1zZywgbnVsbHB0ciwgMCwgMCkpKSB7CisgICAgICAgICAgICBpZiAoLTEgPT0gcmV0KSB7CisgICAgICAgICAgICAgICAgaHIgPSBFX1VORVhQRUNURUQ7CisgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIlVuZXhwZWN0ZWQgcmV0dXJuIHZhbHVlIGZyb20gbWVzc2FnZSBwdW1wLiIpOworICAgICAgICAgICAgfSBlbHNlIGlmICghVGhlbWVIYW5kbGVLZXlib2FyZE1lc3NhZ2UocFRoaXMtPl90aGVtZSwgbXNnLmh3bmQsICZtc2cpKSB7CisgICAgICAgICAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICAgICAgICAgIDo6RGlzcGF0Y2hNZXNzYWdlVygmbXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN1Y2NlZWRlZCB0aHVzIGZhciwgY2hlY2sgdG8gc2VlIGlmIGFueXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgYWN0dWFsbHkKKyAgICAgICAgLy8gZXhlY3V0aW5nIGNoYW5nZXMuCisgICAgICAgIGlmIChGQUlMRUQocFRoaXMtPl9ockZpbmFsKSkgeworICAgICAgICAgICAgaHIgPSBwVGhpcy0+X2hyRmluYWw7CisgICAgICAgIH0gZWxzZSBpZiAocFRoaXMtPkNoZWNrQ2FuY2VsZWQoKSkgeworICAgICAgICAgICAgaHIgPSBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVEFMTF9VU0VSRVhJVCk7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICAvLyBkZXN0cm95IG1haW4gd2luZG93CisgICAgICAgIHBUaGlzLT5EZXN0cm95TWFpbldpbmRvdygpOworCisgICAgICAgIC8vIGluaXRpYXRlIGVuZ2luZSBzaHV0ZG93bgorICAgICAgICBEV09SRCBkd1F1aXQgPSBIUkVTVUxUX0NPREUoaHIpOworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfSU5JVElBVEVEID09IHBUaGlzLT5fcmVzdGFydFJlc3VsdCkgeworICAgICAgICAgICAgZHdRdWl0ID0gRVJST1JfU1VDQ0VTU19SRUJPT1RfSU5JVElBVEVEOworICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUX1JFUVVJUkVEID09IHBUaGlzLT5fcmVzdGFydFJlc3VsdCkgeworICAgICAgICAgICAgZHdRdWl0ID0gRVJST1JfU1VDQ0VTU19SRUJPT1RfUkVRVUlSRUQ7CisgICAgICAgIH0KKyAgICAgICAgcFRoaXMtPl9lbmdpbmUtPlF1aXQoZHdRdWl0KTsKKworICAgICAgICBSZWxlYXNlVGhlbWUocFRoaXMtPl90aGVtZSk7CisgICAgICAgIFRoZW1lVW5pbml0aWFsaXplKCk7CisKKyAgICAgICAgLy8gdW5pbml0aWFsaXplIENPTQorICAgICAgICBpZiAoY29tSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgIDo6Q29VbmluaXRpYWxpemUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZURhdGEgLSBpbml0aWFsaXplcyBhbGwgdGhlIHBhY2thZ2UgaW5mb3JtYXRpb24uCisgICAgLy8KKyAgICBIUkVTVUxUIEluaXRpYWxpemVEYXRhKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjek1vZHVsZVBhdGggPSBudWxscHRyOworICAgICAgICBJWE1MRE9NRG9jdW1lbnQgKnBpeGRNYW5pZmVzdCA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBCYWxNYW5pZmVzdExvYWQoX2hNb2R1bGUsICZwaXhkTWFuaWZlc3QpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgYm9vdHN0cmFwcGVyIGFwcGxpY2F0aW9uIG1hbmlmZXN0LiIpOworCisgICAgICAgIGhyID0gUGFyc2VPdmVycmlkYWJsZVZhcmlhYmxlc0Zyb21YbWwocGl4ZE1hbmlmZXN0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byByZWFkIG92ZXJyaWRhYmxlIHZhcmlhYmxlcy4iKTsKKworICAgICAgICBociA9IFByb2Nlc3NDb21tYW5kTGluZSgmX2xhbmd1YWdlKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIlVua25vd24gY29tbWFuZGxpbmUgcGFyYW1ldGVycy4iKTsKKworICAgICAgICBociA9IFBhdGhSZWxhdGl2ZVRvTW9kdWxlKCZzY3pNb2R1bGVQYXRoLCBudWxscHRyLCBfaE1vZHVsZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG1vZHVsZSBwYXRoLiIpOworCisgICAgICAgIGhyID0gTG9hZExvY2FsaXphdGlvbihzY3pNb2R1bGVQYXRoLCBfbGFuZ3VhZ2UpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgbG9jYWxpemF0aW9uLiIpOworCisgICAgICAgIGhyID0gTG9hZFRoZW1lKHNjek1vZHVsZVBhdGgsIF9sYW5ndWFnZSk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCB0aGVtZS4iKTsKKworICAgICAgICBociA9IEJhbEluZm9QYXJzZUZyb21YbWwoJl9idW5kbGUsIHBpeGRNYW5pZmVzdCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBidW5kbGUgaW5mb3JtYXRpb24uIik7CisKKyAgICAgICAgaHIgPSBCYWxDb25kaXRpb25zUGFyc2VGcm9tWG1sKCZfY29uZGl0aW9ucywgcGl4ZE1hbmlmZXN0LCBfd2l4TG9jKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGNvbmRpdGlvbnMgZnJvbSBYTUwuIik7CisKKyAgICAgICAgaHIgPSBMb2FkQm9vdHN0cmFwcGVyQkFGdW5jdGlvbnMoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGJvb3RzdHJhcHBlciBmdW5jdGlvbnMuIik7CisgICAgICAgIGhyID0gVXBkYXRlVUlTdHJpbmdzKF9jb21tYW5kLmFjdGlvbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBVSSBzdHJpbmdzLiIpOworCisgICAgICAgIEdldEJ1bmRsZUZpbGVWZXJzaW9uKCk7CisgICAgICAgIC8vIGRvbid0IGZhaWwgaWYgd2UgY291bGRuJ3QgZ2V0IHRoZSB2ZXJzaW9uIGluZm87IGJlc3QtZWZmb3J0IG9ubHkKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZU9iamVjdChwaXhkTWFuaWZlc3QpOworICAgICAgICBSZWxlYXNlU3RyKHNjek1vZHVsZVBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gUHJvY2Vzc0NvbW1hbmRMaW5lIC0gcHJvY2VzcyB0aGUgcHJvdmlkZWQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKyAgICAvLworICAgIEhSRVNVTFQgUHJvY2Vzc0NvbW1hbmRMaW5lKF9faW5vdXQgTFBXU1RSKiBwc2N6TGFuZ3VhZ2UpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIGludCBhcmdjID0gMDsKKyAgICAgICAgTFBXU1RSKiBhcmd2ID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjelZhcmlhYmxlTmFtZSA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pWYXJpYWJsZVZhbHVlID0gbnVsbHB0cjsKKworICAgICAgICBpZiAoX2NvbW1hbmQud3pDb21tYW5kTGluZSAmJiAqX2NvbW1hbmQud3pDb21tYW5kTGluZSkgeworICAgICAgICAgICAgYXJndiA9IDo6Q29tbWFuZExpbmVUb0FyZ3ZXKF9jb21tYW5kLnd6Q29tbWFuZExpbmUsICZhcmdjKTsKKyAgICAgICAgICAgIEV4aXRPbk51bGxXaXRoTGFzdEVycm9yKGFyZ3YsIGhyLCAiRmFpbGVkIHRvIGdldCBjb21tYW5kIGxpbmUuIik7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3ZbaV1bMF0gPT0gTCctJyB8fCBhcmd2W2ldWzBdID09IEwnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfSU5WQVJJQU5ULCBOT1JNX0lHTk9SRUNBU0UsICZhcmd2W2ldWzFdLCAtMSwgTCJsYW5nIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPj0gYXJnYykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gRV9JTlZBTElEQVJHOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJNdXN0IHNwZWNpZnkgYSBsYW5ndWFnZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKytpOworCisgICAgICAgICAgICAgICAgICAgICAgICBociA9IFN0ckFsbG9jU3RyaW5nKHBzY3pMYW5ndWFnZSwgJmFyZ3ZbaV1bMF0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjb3B5IGxhbmd1YWdlLiIpOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX292ZXJyaWRhYmxlVmFyaWFibGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcHdjID0gd2NzY2hyKGFyZ3ZbaV0sIEwnPScpOworICAgICAgICAgICAgICAgICAgICBpZiAocHdjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBociA9IFN0ckFsbG9jU3RyaW5nKCZzY3pWYXJpYWJsZU5hbWUsIGFyZ3ZbaV0sIHB3YyAtIGFyZ3ZbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjb3B5IHZhcmlhYmxlIG5hbWUuIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gRGljdEtleUV4aXN0cyhfb3ZlcnJpZGFibGVWYXJpYWJsZXMsIHNjelZhcmlhYmxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRV9OT1RGT1VORCA9PSBocikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiSWdub3JpbmcgYXR0ZW1wdCB0byBzZXQgbm9uLW92ZXJyaWRhYmxlIHZhcmlhYmxlOiAnJWxzJy4iLCBzY3pWYXJpYWJsZU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU19PSzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY2hlY2sgdGhlIGRpY3Rpb25hcnkgb2Ygb3ZlcnJpZGFibGUgdmFyaWFibGVzLiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBociA9IFN0ckFsbG9jU3RyaW5nKCZzY3pWYXJpYWJsZVZhbHVlLCArK3B3YywgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNvcHkgdmFyaWFibGUgdmFsdWUuIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICg6OlN0clRvSW50RXgoc2N6VmFyaWFibGVWYWx1ZSwgU1RJRl9ERUZBVUxULCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6VmFyaWFibGVOYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoc2N6VmFyaWFibGVOYW1lLCBzY3pWYXJpYWJsZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2V0IHZhcmlhYmxlLiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJJZ25vcmluZyB1bmtub3duIGFyZ3VtZW50OiAlbHMiLCBhcmd2W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIGlmIChhcmd2KSB7CisgICAgICAgICAgICA6OkxvY2FsRnJlZShhcmd2KTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbGVhc2VTdHIoc2N6VmFyaWFibGVOYW1lKTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pWYXJpYWJsZVZhbHVlKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgSFJFU1VMVCBMb2FkTG9jYWxpemF0aW9uKF9faW5feiBMUENXU1RSIHd6TW9kdWxlUGF0aCwgX19pbl96X29wdCBMUENXU1RSIHd6TGFuZ3VhZ2UpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pMb2NQYXRoID0gbnVsbHB0cjsKKyAgICAgICAgTFBDV1NUUiB3ekxvY0ZpbGVOYW1lID0gTCJEZWZhdWx0Lnd4bCI7CisKKyAgICAgICAgaHIgPSBMb2NQcm9iZUZvckZpbGUod3pNb2R1bGVQYXRoLCB3ekxvY0ZpbGVOYW1lLCB3ekxhbmd1YWdlLCAmc2N6TG9jUGF0aCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUyKGhyLCAiRmFpbGVkIHRvIHByb2JlIGZvciBsb2MgZmlsZTogJWxzIGluIHBhdGg6ICVscyIsIHd6TG9jRmlsZU5hbWUsIHd6TW9kdWxlUGF0aCk7CisKKyAgICAgICAgaHIgPSBMb2NMb2FkRnJvbUZpbGUoc2N6TG9jUGF0aCwgJl93aXhMb2MpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsb2FkIGxvYyBmaWxlIGZyb20gcGF0aDogJWxzIiwgc2N6TG9jUGF0aCk7CisKKyAgICAgICAgaWYgKFdJWF9MT0NBTElaQVRJT05fTEFOR1VBR0VfTk9UX1NFVCAhPSBfd2l4TG9jLT5kd0xhbmdJZCkgeworICAgICAgICAgICAgOjpTZXRUaHJlYWRMb2NhbGUoX3dpeExvYy0+ZHdMYW5nSWQpOworICAgICAgICB9CisKKyAgICAgICAgaHIgPSBTdHJBbGxvY1N0cmluZygmX2NvbmZpcm1DbG9zZU1lc3NhZ2UsIEwiIyhsb2MuQ29uZmlybUNhbmNlbE1lc3NhZ2UpIiwgMCk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25maXJtIG1lc3NhZ2UgbG9jIGlkZW50aWZpZXIuIik7CisKKyAgICAgICAgaHIgPSBMb2NMb2NhbGl6ZVN0cmluZyhfd2l4TG9jLCAmX2NvbmZpcm1DbG9zZU1lc3NhZ2UpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsb2NhbGl6ZSBjb25maXJtIGNsb3NlIG1lc3NhZ2U6ICVscyIsIF9jb25maXJtQ2xvc2VNZXNzYWdlKTsKKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekxvY1BhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIEhSRVNVTFQgTG9hZFRoZW1lKF9faW5feiBMUENXU1RSIHd6TW9kdWxlUGF0aCwgX19pbl96X29wdCBMUENXU1RSIHd6TGFuZ3VhZ2UpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pUaGVtZVBhdGggPSBudWxscHRyOworICAgICAgICBMUENXU1RSIHd6VGhlbWVGaWxlTmFtZSA9IEwiRGVmYXVsdC50aG0iOworICAgICAgICBMUFdTVFIgc2N6Q2FwdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBMb2NQcm9iZUZvckZpbGUod3pNb2R1bGVQYXRoLCB3elRoZW1lRmlsZU5hbWUsIHd6TGFuZ3VhZ2UsICZzY3pUaGVtZVBhdGgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMihociwgIkZhaWxlZCB0byBwcm9iZSBmb3IgdGhlbWUgZmlsZTogJWxzIGluIHBhdGg6ICVscyIsIHd6VGhlbWVGaWxlTmFtZSwgd3pNb2R1bGVQYXRoKTsKKworICAgICAgICBociA9IFRoZW1lTG9hZEZyb21GaWxlKHNjelRoZW1lUGF0aCwgJl90aGVtZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvYWQgdGhlbWUgZnJvbSBwYXRoOiAlbHMiLCBzY3pUaGVtZVBhdGgpOworCisgICAgICAgIGhyID0gVGhlbWVMb2NhbGl6ZShfdGhlbWUsIF93aXhMb2MpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsb2NhbGl6ZSB0aGVtZTogJWxzIiwgc2N6VGhlbWVQYXRoKTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIGNhcHRpb24gaWYgdGhlcmUgYXJlIGFueSBmb3JtYXR0ZWQgc3RyaW5ncyBpbiBpdC4KKyAgICAgICAgLy8gSWYgdGhlIHdpeCBkZXZlbG9wZXIgaXMgc2hvd2luZyBhIGhpZGRlbiB2YXJpYWJsZSBpbiB0aGUgVUksIHRoZW4KKyAgICAgICAgLy8gb2J2aW91c2x5IHRoZXkgZG9uJ3QgY2FyZSBhYm91dCBrZWVwaW5nIGl0IHNhZmUgc28gZG9uJ3QgZ28gZG93biB0aGUKKyAgICAgICAgLy8gcmFiYml0IGhvbGUgb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5IGZyZWVkLgorICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhfdGhlbWUtPnNjekNhcHRpb24sICZzY3pDYXB0aW9uKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgIFRoZW1lVXBkYXRlQ2FwdGlvbihfdGhlbWUsIHNjekNhcHRpb24pOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZVN0cihzY3pDYXB0aW9uKTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pUaGVtZVBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIEhSRVNVTFQgUGFyc2VPdmVycmlkYWJsZVZhcmlhYmxlc0Zyb21YbWwoX19pbiBJWE1MRE9NRG9jdW1lbnQqIHBpeGRNYW5pZmVzdCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgSVhNTERPTU5vZGUqIHBOb2RlID0gbnVsbHB0cjsKKyAgICAgICAgSVhNTERPTU5vZGVMaXN0KiBwTm9kZXMgPSBudWxscHRyOworICAgICAgICBEV09SRCBjTm9kZXMgPSAwOworICAgICAgICBMUFdTVFIgc2N6ID0gbnVsbHB0cjsKKyAgICAgICAgQk9PTCBoaWRkZW4gPSBGQUxTRTsKKworICAgICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIHVzZXJzIGNhbiBvdmVycmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lCisgICAgICAgIGhyID0gWG1sU2VsZWN0Tm9kZXMocGl4ZE1hbmlmZXN0LCBMIi9Cb290c3RyYXBwZXJBcHBsaWNhdGlvbkRhdGEvV2l4U3RkYmFPdmVycmlkYWJsZVZhcmlhYmxlIiwgJnBOb2Rlcyk7CisgICAgICAgIGlmIChTX0ZBTFNFID09IGhyKSB7CisgICAgICAgICAgICBFeGl0RnVuY3Rpb24xKGhyID0gU19PSyk7CisgICAgICAgIH0KKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZWxlY3Qgb3ZlcnJpZGFibGUgdmFyaWFibGUgbm9kZXMuIik7CisKKyAgICAgICAgaHIgPSBwTm9kZXMtPmdldF9sZW5ndGgoKGxvbmcqKSZjTm9kZXMpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBvdmVycmlkYWJsZSB2YXJpYWJsZSBub2RlIGNvdW50LiIpOworCisgICAgICAgIGlmIChjTm9kZXMpIHsKKyAgICAgICAgICAgIGhyID0gRGljdENyZWF0ZVN0cmluZ0xpc3QoJl9vdmVycmlkYWJsZVZhcmlhYmxlcywgMzIsIERJQ1RfRkxBR19OT05FKTsKKyAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBzdHJpbmcgZGljdGlvbmFyeS4iKTsKKworICAgICAgICAgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IGNOb2RlczsgKytpKSB7CisgICAgICAgICAgICAgICAgaHIgPSBYbWxOZXh0RWxlbWVudChwTm9kZXMsICZwTm9kZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgbmV4dCBub2RlLiIpOworCisgICAgICAgICAgICAgICAgLy8gQE5hbWUKKyAgICAgICAgICAgICAgICBociA9IFhtbEdldEF0dHJpYnV0ZUV4KHBOb2RlLCBMIk5hbWUiLCAmc2N6KTsKKyAgICAgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBATmFtZS4iKTsKKworICAgICAgICAgICAgICAgIGhyID0gWG1sR2V0WWVzTm9BdHRyaWJ1dGUocE5vZGUsIEwiSGlkZGVuIiwgJmhpZGRlbik7CisKKyAgICAgICAgICAgICAgICBpZiAoIWhpZGRlbikgeworICAgICAgICAgICAgICAgICAgICBociA9IERpY3RBZGRLZXkoX292ZXJyaWRhYmxlVmFyaWFibGVzLCBzY3opOworICAgICAgICAgICAgICAgICAgICBFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBhZGQgXCIlbHNcIiB0byB0aGUgc3RyaW5nIGRpY3Rpb25hcnkuIiwgc2N6KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBwcmVwYXJlIG5leHQgaXRlcmF0aW9uCisgICAgICAgICAgICAgICAgUmVsZWFzZU51bGxPYmplY3QocE5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZSk7CisgICAgICAgIFJlbGVhc2VPYmplY3QocE5vZGVzKTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3opOworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIEdldCB0aGUgZmlsZSB2ZXJzaW9uIG9mIHRoZSBib290c3RyYXBwZXIgYW5kIHJlY29yZCBpbiBib290c3RyYXBwZXIgbG9nIGZpbGUKKyAgICAvLworICAgIEhSRVNVTFQgR2V0QnVuZGxlRmlsZVZlcnNpb24oKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBVTEFSR0VfSU5URUdFUiB1bGlWZXJzaW9uID0geyB9OworICAgICAgICBMUFdTVFIgc2N6Q3VycmVudFBhdGggPSBudWxscHRyOworCisgICAgICAgIGhyID0gUGF0aEZvckN1cnJlbnRQcm9jZXNzKCZzY3pDdXJyZW50UGF0aCwgbnVsbHB0cik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IGJ1bmRsZSBwYXRoLiIpOworCisgICAgICAgIGhyID0gRmlsZVZlcnNpb24oc2N6Q3VycmVudFBhdGgsICZ1bGlWZXJzaW9uLkhpZ2hQYXJ0LCAmdWxpVmVyc2lvbi5Mb3dQYXJ0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgYnVuZGxlIGZpbGUgdmVyc2lvbi4iKTsKKworICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlVmVyc2lvbihQWUJBX1ZBUklBQkxFX0JVTkRMRV9GSUxFX1ZFUlNJT04sIHVsaVZlcnNpb24uUXVhZFBhcnQpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNldCBXaXhCdW5kbGVGaWxlVmVyc2lvbiB2YXJpYWJsZS4iKTsKKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekN1cnJlbnRQYXRoKTsKKworICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIENyZWF0ZU1haW5XaW5kb3cgLSBjcmVhdGVzIHRoZSBtYWluIGluc3RhbGwgd2luZG93LgorICAgIC8vCisgICAgSFJFU1VMVCBDcmVhdGVNYWluV2luZG93KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgSElDT04gaEljb24gPSByZWludGVycHJldF9jYXN0PEhJQ09OPihfdGhlbWUtPmhJY29uKTsKKyAgICAgICAgV05EQ0xBU1NXIHdjID0geyB9OworICAgICAgICBEV09SRCBkd1dpbmRvd1N0eWxlID0gMDsKKyAgICAgICAgaW50IHggPSBDV19VU0VERUZBVUxUOworICAgICAgICBpbnQgeSA9IENXX1VTRURFRkFVTFQ7CisgICAgICAgIFBPSU5UIHB0Q3Vyc29yID0geyB9OworICAgICAgICBITU9OSVRPUiBoTW9uaXRvciA9IG51bGxwdHI7CisgICAgICAgIE1PTklUT1JJTkZPIG1pID0geyB9OworICAgICAgICBDT0xPUlJFRiBmZywgYmc7CisgICAgICAgIEhCUlVTSCBiZ0JydXNoOworCisgICAgICAgIC8vIElmIHRoZSB0aGVtZSBkaWQgbm90IHByb3ZpZGUgYW4gaWNvbiwgdHJ5IHVzaW5nIHRoZSBpY29uIGZyb20gdGhlIGJ1bmRsZSBlbmdpbmUuCisgICAgICAgIGlmICghaEljb24pIHsKKyAgICAgICAgICAgIEhNT0RVTEUgaEJvb3RzdHJhcHBlckVuZ2luZSA9IDo6R2V0TW9kdWxlSGFuZGxlVyhudWxscHRyKTsKKyAgICAgICAgICAgIGlmIChoQm9vdHN0cmFwcGVyRW5naW5lKSB7CisgICAgICAgICAgICAgICAgaEljb24gPSA6OkxvYWRJY29uVyhoQm9vdHN0cmFwcGVyRW5naW5lLCBNQUtFSU5UUkVTT1VSQ0VXKDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZnID0gUkdCKDAsIDAsIDApOworICAgICAgICBiZyA9IFJHQigyNTUsIDI1NSwgMjU1KTsKKyAgICAgICAgYmdCcnVzaCA9IChIQlJVU0gpKENPTE9SX1dJTkRPVysxKTsKKyAgICAgICAgaWYgKF90aGVtZS0+ZHdGb250SWQgPCBfdGhlbWUtPmNGb250cykgeworICAgICAgICAgICAgVEhFTUVfRk9OVCAqZm9udCA9ICZfdGhlbWUtPnJnRm9udHNbX3RoZW1lLT5kd0ZvbnRJZF07CisgICAgICAgICAgICBmZyA9IGZvbnQtPmNyRm9yZWdyb3VuZDsKKyAgICAgICAgICAgIGJnID0gZm9udC0+Y3JCYWNrZ3JvdW5kOworICAgICAgICAgICAgYmdCcnVzaCA9IGZvbnQtPmhCYWNrZ3JvdW5kOworICAgICAgICAgICAgUmVtYXBDb2xvcigmZmcsICZiZywgJmJnQnJ1c2gpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVnaXN0ZXIgdGhlIHdpbmRvdyBjbGFzcyBhbmQgY3JlYXRlIHRoZSB3aW5kb3cuCisgICAgICAgIHdjLmxwZm5XbmRQcm9jID0gUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb246OlduZFByb2M7CisgICAgICAgIHdjLmhJbnN0YW5jZSA9IF9oTW9kdWxlOworICAgICAgICB3Yy5oSWNvbiA9IGhJY29uOworICAgICAgICB3Yy5oQ3Vyc29yID0gOjpMb2FkQ3Vyc29yVyhudWxscHRyLCAoTFBDV1NUUilJRENfQVJST1cpOworICAgICAgICB3Yy5oYnJCYWNrZ3JvdW5kID0gYmdCcnVzaDsKKyAgICAgICAgd2MubHBzek1lbnVOYW1lID0gbnVsbHB0cjsKKyAgICAgICAgd2MubHBzekNsYXNzTmFtZSA9IFBZQkFfV0lORE9XX0NMQVNTOworICAgICAgICBpZiAoITo6UmVnaXN0ZXJDbGFzc1coJndjKSkgeworICAgICAgICAgICAgRXhpdFdpdGhMYXN0RXJyb3IoaHIsICJGYWlsZWQgdG8gcmVnaXN0ZXIgd2luZG93LiIpOworICAgICAgICB9CisKKyAgICAgICAgX3JlZ2lzdGVyZWQgPSBUUlVFOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgd2luZG93IHN0eWxlIGJhc2VkIG9uIHRoZSB0aGVtZSBzdHlsZSBhbmQgY29tbWFuZCBkaXNwbGF5IHZhbHVlLgorICAgICAgICBkd1dpbmRvd1N0eWxlID0gX3RoZW1lLT5kd1N0eWxlOworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA+PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBkd1dpbmRvd1N0eWxlICY9IH5XU19WSVNJQkxFOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG9uJ3Qgc2hvdyB0aGUgd2luZG93IGlmIHRoZXJlIGlzIGEgc3BsYXNoIHNjcmVlbiAoaXQgd2lsbCBiZSBtYWRlIHZpc2libGUgd2hlbiB0aGUgc3BsYXNoIHNjcmVlbiBpcyBoaWRkZW4pCisgICAgICAgIGlmICg6OklzV2luZG93KF9jb21tYW5kLmh3bmRTcGxhc2hTY3JlZW4pKSB7CisgICAgICAgICAgICBkd1dpbmRvd1N0eWxlICY9IH5XU19WSVNJQkxFOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2VudGVyIHRoZSB3aW5kb3cgb24gdGhlIG1vbml0b3Igd2l0aCB0aGUgbW91c2UuCisgICAgICAgIGlmICg6OkdldEN1cnNvclBvcygmcHRDdXJzb3IpKSB7CisgICAgICAgICAgICBoTW9uaXRvciA9IDo6TW9uaXRvckZyb21Qb2ludChwdEN1cnNvciwgTU9OSVRPUl9ERUZBVUxUVE9ORUFSRVNUKTsKKyAgICAgICAgICAgIGlmIChoTW9uaXRvcikgeworICAgICAgICAgICAgICAgIG1pLmNiU2l6ZSA9IHNpemVvZihtaSk7CisgICAgICAgICAgICAgICAgaWYgKDo6R2V0TW9uaXRvckluZm9XKGhNb25pdG9yLCAmbWkpKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSBtaS5yY1dvcmsubGVmdCArIChtaS5yY1dvcmsucmlnaHQgLSBtaS5yY1dvcmsubGVmdCAtIF90aGVtZS0+bldpZHRoKSAvIDI7CisgICAgICAgICAgICAgICAgICAgIHkgPSBtaS5yY1dvcmsudG9wICsgKG1pLnJjV29yay5ib3R0b20gLSBtaS5yY1dvcmsudG9wIC0gX3RoZW1lLT5uSGVpZ2h0KSAvIDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgX2hXbmQgPSA6OkNyZWF0ZVdpbmRvd0V4VygKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICB3Yy5scHN6Q2xhc3NOYW1lLAorICAgICAgICAgICAgX3RoZW1lLT5zY3pDYXB0aW9uLAorICAgICAgICAgICAgZHdXaW5kb3dTdHlsZSwKKyAgICAgICAgICAgIHgsCisgICAgICAgICAgICB5LAorICAgICAgICAgICAgX3RoZW1lLT5uV2lkdGgsCisgICAgICAgICAgICBfdGhlbWUtPm5IZWlnaHQsCisgICAgICAgICAgICBIV05EX0RFU0tUT1AsCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgX2hNb2R1bGUsCisgICAgICAgICAgICB0aGlzCisgICAgICAgICk7CisgICAgICAgIEV4aXRPbk51bGxXaXRoTGFzdEVycm9yKF9oV25kLCBociwgIkZhaWxlZCB0byBjcmVhdGUgd2luZG93LiIpOworCisgICAgICAgIGhyID0gU19PSzsKKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICAvLworICAgIC8vIEluaXRpYWxpemVUYXNrYmFyQnV0dG9uIC0gaW5pdGlhbGl6ZXMgdGFza2JhciBidXR0b24gZm9yIHByb2dyZXNzLgorICAgIC8vCisgICAgdm9pZCBJbml0aWFsaXplVGFza2JhckJ1dHRvbigpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisKKyAgICAgICAgaHIgPSA6OkNvQ3JlYXRlSW5zdGFuY2UoQ0xTSURfVGFza2Jhckxpc3QsIG51bGxwdHIsIENMU0NUWF9BTEwsIF9fdXVpZG9mKElUYXNrYmFyTGlzdDMpLCByZWludGVycHJldF9jYXN0PExQVk9JRCo+KCZfdGFza2Jhckxpc3QpKTsKKyAgICAgICAgaWYgKFJFR0RCX0VfQ0xBU1NOT1RSRUcgPT0gaHIpIHsKKyAgICAgICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIFdpbmRvd3MgNworICAgICAgICAgICAgRXhpdEZ1bmN0aW9uMShociA9IFNfT0spOworICAgICAgICB9CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY3JlYXRlIElUYXNrYmFyTGlzdDMuIENvbnRpbnVpbmcuIik7CisKKyAgICAgICAgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSA9IDo6UmVnaXN0ZXJXaW5kb3dNZXNzYWdlVyhMIlRhc2tiYXJCdXR0b25DcmVhdGVkIik7CisgICAgICAgIEJhbEV4aXRPbk51bGxXaXRoTGFzdEVycm9yKF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UsIGhyLCAiRmFpbGVkIHRvIGdldCBUYXNrYmFyQnV0dG9uQ3JlYXRlZCBtZXNzYWdlLiBDb250aW51aW5nLiIpOworCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLworICAgIC8vIERlc3Ryb3lNYWluV2luZG93IC0gY2xlYW4gdXAgYWxsIHRoZSB3aW5kb3cgcmVnaXN0cmF0aW9uLgorICAgIC8vCisgICAgdm9pZCBEZXN0cm95TWFpbldpbmRvdygpIHsKKyAgICAgICAgaWYgKDo6SXNXaW5kb3coX2hXbmQpKSB7CisgICAgICAgICAgICA6OkRlc3Ryb3lXaW5kb3coX2hXbmQpOworICAgICAgICAgICAgX2hXbmQgPSBudWxscHRyOworICAgICAgICAgICAgX3Rhc2tiYXJCdXR0b25PSyA9IEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKF9yZWdpc3RlcmVkKSB7CisgICAgICAgICAgICA6OlVucmVnaXN0ZXJDbGFzc1coUFlCQV9XSU5ET1dfQ0xBU1MsIF9oTW9kdWxlKTsKKyAgICAgICAgICAgIF9yZWdpc3RlcmVkID0gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8vCisgICAgLy8gV25kUHJvYyAtIHN0YW5kYXJkIHdpbmRvd3MgbWVzc2FnZSBoYW5kbGVyLgorICAgIC8vCisgICAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgV25kUHJvYygKKyAgICAgICAgX19pbiBIV05EIGhXbmQsCisgICAgICAgIF9faW4gVUlOVCB1TXNnLAorICAgICAgICBfX2luIFdQQVJBTSB3UGFyYW0sCisgICAgICAgIF9faW4gTFBBUkFNIGxQYXJhbQorICAgICkgeworI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjQzMTIpCisgICAgICAgIGF1dG8gcEJBID0gcmVpbnRlcnByZXRfY2FzdDxQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbio+KDo6R2V0V2luZG93TG9uZ1B0clcoaFduZCwgR1dMUF9VU0VSREFUQSkpOworCisgICAgICAgIHN3aXRjaCAodU1zZykgeworICAgICAgICBjYXNlIFdNX05DQ1JFQVRFOiB7CisgICAgICAgICAgICBMUENSRUFURVNUUlVDVCBscGNzID0gcmVpbnRlcnByZXRfY2FzdDxMUENSRUFURVNUUlVDVD4obFBhcmFtKTsKKyAgICAgICAgICAgIHBCQSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qPihscGNzLT5scENyZWF0ZVBhcmFtcyk7CisjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6NDI0NCkKKyAgICAgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0clcoaFduZCwgR1dMUF9VU0VSREFUQSwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4ocEJBKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgV01fTkNERVNUUk9ZOiB7CisgICAgICAgICAgICBMUkVTVUxUIGxyZXMgPSBUaGVtZURlZldpbmRvd1Byb2MocEJBID8gcEJBLT5fdGhlbWUgOiBudWxscHRyLCBoV25kLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHJXKGhXbmQsIEdXTFBfVVNFUkRBVEEsIDApOworICAgICAgICAgICAgcmV0dXJuIGxyZXM7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFdNX0NSRUFURTogCisgICAgICAgICAgICBpZiAoIXBCQS0+T25DcmVhdGUoaFduZCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX1FVRVJZRU5EU0VTU0lPTjoKKyAgICAgICAgICAgIHJldHVybiBJRENBTkNFTCAhPSBwQkEtPk9uU3lzdGVtU2h1dGRvd24oc3RhdGljX2Nhc3Q8RFdPUkQ+KGxQYXJhbSksIElEQ0FOQ0VMKTsKKworICAgICAgICBjYXNlIFdNX0NMT1NFOgorICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgY2hvc2Ugbm90IHRvIGNsb3NlLCBkbyAqbm90KiBsZXQgdGhlIGRlZmF1bHQgd2luZG93IHByb2MgaGFuZGxlIHRoZSBtZXNzYWdlLgorICAgICAgICAgICAgaWYgKCFwQkEtPk9uQ2xvc2UoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9ERVNUUk9ZOgorICAgICAgICAgICAgOjpQb3N0UXVpdE1lc3NhZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX1BBSU5UOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICBjYXNlIFdNX0VSQVNFQktHTkQ6CisgICAgICAgICAgICBpZiAocEJBICYmIHBCQS0+X3N1cHByZXNzUGFpbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fUFlCQV9TSE9XX0hFTFA6CisgICAgICAgICAgICBwQkEtPk9uU2hvd0hlbHAoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9ERVRFQ1RfUEFDS0FHRVM6CisgICAgICAgICAgICBwQkEtPk9uRGV0ZWN0KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfUExBTl9QQUNLQUdFUzoKKyAgICAgICAgICAgIHBCQS0+T25QbGFuKHN0YXRpY19jYXN0PEJPT1RTVFJBUFBFUl9BQ1RJT04+KGxQYXJhbSkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX0FQUExZX1BBQ0tBR0VTOgorICAgICAgICAgICAgcEJBLT5PbkFwcGx5KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfQ0hBTkdFX1NUQVRFOgorICAgICAgICAgICAgcEJBLT5PbkNoYW5nZVN0YXRlKHN0YXRpY19jYXN0PFBZQkFfU1RBVEU+KGxQYXJhbSkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX1NIT1dfRkFJTFVSRToKKyAgICAgICAgICAgIHBCQS0+T25TaG93RmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9DT01NQU5EOgorICAgICAgICAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgeworICAgICAgICAgICAgLy8gQ3VzdG9taXplIGNvbW1hbmRzCisgICAgICAgICAgICAvLyBTdWNjZXNzL2ZhaWx1cmUgY29tbWFuZHMKKyAgICAgICAgICAgIGNhc2UgSURfTEFVTkNIX0JVVFRPTjoKKyAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgY2FzZSBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OOgorICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja1Jlc3RhcnRCdXR0b24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgY2FzZSBJRENBTkNFTDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfSU5TVEFMTF9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9DVVNUT00xX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0NVU1RPTTJfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfTU9ESUZZX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9DTE9TRV9CVVRUT046CisgICAgICAgICAgICAgICAgcEJBLT5PbkNvbW1hbmQoSURfQ0xPU0VfQlVUVE9OKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBwQkEtPk9uQ29tbWFuZCgoQ09OVFJPTF9JRClMT1dPUkQod1BhcmFtKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX05PVElGWToKKyAgICAgICAgICAgIGlmIChsUGFyYW0pIHsKKyAgICAgICAgICAgICAgICBMUE5NSERSIHBubWhkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TFBOTUhEUj4obFBhcmFtKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBubWhkci0+Y29kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgTk1fQ0xJQ0s6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICAgICAgY2FzZSBOTV9SRVRVUk46CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8RFdPUkQ+KHBubWhkci0+aWRGcm9tKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LOgorICAgICAgICAgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrTG9nRmlsZUxpbmsoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9DVExDT0xPUlNUQVRJQzoKKyAgICAgICAgY2FzZSBXTV9DVExDT0xPUkJUTjoKKyAgICAgICAgICAgIGlmIChwQkEpIHsKKyAgICAgICAgICAgICAgICBIQlJVU0ggYnJ1c2ggPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChwQkEtPlNldENvbnRyb2xDb2xvcigoSFdORClsUGFyYW0sIChIREMpd1BhcmFtLCAmYnJ1c2gpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoTFJFU1VMVClicnVzaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQkEgJiYgcEJBLT5fdGFza2Jhckxpc3QgJiYgdU1zZyA9PSBwQkEtPl90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UpIHsKKyAgICAgICAgICAgIHBCQS0+X3Rhc2tiYXJCdXR0b25PSyA9IFRSVUU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBUaGVtZURlZldpbmRvd1Byb2MocEJBID8gcEJBLT5fdGhlbWUgOiBudWxscHRyLCBoV25kLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPbkNyZWF0ZSAtIGZpbmlzaGVzIGxvYWRpbmcgdGhlIHRoZW1lLgorICAgIC8vCisgICAgQk9PTCBPbkNyZWF0ZShfX2luIEhXTkQgaFduZCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBociA9IFRoZW1lTG9hZENvbnRyb2xzKF90aGVtZSwgaFduZCwgQ09OVFJPTF9JRF9OQU1FUywgY291bnRvZihDT05UUk9MX0lEX05BTUVTKSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCB0aGVtZSBjb250cm9scy4iKTsKKworICAgICAgICBDX0FTU0VSVChDT1VOVF9QQUdFID09IGNvdW50b2YoUEFHRV9OQU1FUykpOworICAgICAgICBDX0FTU0VSVChjb3VudG9mKF9wYWdlSWRzKSA9PSBjb3VudG9mKFBBR0VfTkFNRVMpKTsKKworICAgICAgICBUaGVtZUdldFBhZ2VJZHMoX3RoZW1lLCBQQUdFX05BTUVTLCBfcGFnZUlkcywgY291bnRvZihfcGFnZUlkcykpOworCisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRleHQgb24gYWxsICJhcHBsaWNhdGlvbiIgKG5vbi1wYWdlKSBjb250cm9scy4KKyAgICAgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IF90aGVtZS0+Y0NvbnRyb2xzOyArK2kpIHsKKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgaTsKKyAgICAgICAgICAgIExQV1NUUiB0ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIExQV1NUUiBuYW1lID0gbnVsbHB0cjsKKyAgICAgICAgICAgIExPQ19TVFJJTkcgKmxvY1RleHQgPSBudWxscHRyOworCisgICAgICAgICAgICAvLyBJZiBhIGNvbW1hbmQgbGluayBoYXMgYSBub3RlLCB0aGVuIGFkZCBpdC4KKyAgICAgICAgICAgIGlmICgocENvbnRyb2wtPmR3U3R5bGUgJiBCU19UWVBFTUFTSykgPT0gQlNfQ09NTUFORExJTksgfHwKKyAgICAgICAgICAgICAgICAocENvbnRyb2wtPmR3U3R5bGUgJiBCU19UWVBFTUFTSykgPT0gQlNfREVGQ09NTUFORExJTkspIHsKKyAgICAgICAgICAgICAgICBociA9IFN0ckFsbG9jRm9ybWF0dGVkKCZuYW1lLCBMIiMobG9jLiVsc05vdGUpIiwgcENvbnRyb2wtPnNjek5hbWUpOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIG5hbWUsICZsb2NUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgbG9jVGV4dCAmJiBsb2NUZXh0LT53elRleHQgJiYgbG9jVGV4dC0+d3pUZXh0WzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhsb2NUZXh0LT53elRleHQsICZ0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIHRleHQgJiYgdGV4dFswXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgcENvbnRyb2wtPndJZCwgQkNNX1NFVE5PVEUsIDAsIChMUEFSQU0pdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBociA9IFNfT0s7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcENvbnRyb2wtPndQYWdlSWQgJiYgcENvbnRyb2wtPnNjelRleHQgJiYgKnBDb250cm9sLT5zY3pUZXh0KSB7CisgICAgICAgICAgICAgICAgSFJFU1VMVCBockZvcm1hdDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlIGluIHRoZSBVSSwKKyAgICAgICAgICAgICAgICAvLyB0aGVuIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQga2VlcGluZyBpdCBzYWZlIHNvIGRvbid0CisgICAgICAgICAgICAgICAgLy8gZ28gZG93biB0aGUgcmFiYml0IGhvbGUgb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5CisgICAgICAgICAgICAgICAgLy8gZnJlZWQuCisgICAgICAgICAgICAgICAgaHJGb3JtYXQgPSBCYWxGb3JtYXRTdHJpbmcocENvbnRyb2wtPnNjelRleHQsICZ0ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyRm9ybWF0KSkgeworICAgICAgICAgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgcENvbnRyb2wtPndJZCwgdGV4dCk7CisgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChocik7CisgICAgfQorCisgICAgdm9pZCBSZW1hcENvbG9yKENPTE9SUkVGICpmZywgQ09MT1JSRUYgKmJnLCBIQlJVU0ggKmJnQnJ1c2gpIHsKKyAgICAgICAgaWYgKCpmZyA9PSBSR0IoMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICpmZyA9IEdldFN5c0NvbG9yKENPTE9SX1dJTkRPV1RFWFQpOworICAgICAgICB9IGVsc2UgaWYgKCpmZyA9PSBSR0IoMTI4LCAxMjgsIDEyOCkpIHsKKyAgICAgICAgICAgICpmZyA9IEdldFN5c0NvbG9yKENPTE9SX0dSQVlURVhUKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmJnQnJ1c2ggJiYgKmJnID09IFJHQigyNTUsIDI1NSwgMjU1KSkgeworICAgICAgICAgICAgKmJnID0gR2V0U3lzQ29sb3IoQ09MT1JfV0lORE9XKTsKKyAgICAgICAgICAgICpiZ0JydXNoID0gR2V0U3lzQ29sb3JCcnVzaChDT0xPUl9XSU5ET1cpOworICAgICAgICB9CisgICAgfQorCisgICAgQk9PTCBTZXRDb250cm9sQ29sb3IoSFdORCBoV25kLCBIREMgaERDLCBIQlJVU0ggKmJydXNoKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX3RoZW1lLT5jQ29udHJvbHM7ICsraSkgeworICAgICAgICAgICAgaWYgKF90aGVtZS0+cmdDb250cm9sc1tpXS5oV25kICE9IGhXbmQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRFdPUkQgZm9udElkID0gX3RoZW1lLT5yZ0NvbnRyb2xzW2ldLmR3Rm9udElkOworICAgICAgICAgICAgaWYgKGZvbnRJZCA+IF90aGVtZS0+Y0ZvbnRzKSB7CisgICAgICAgICAgICAgICAgZm9udElkID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRIRU1FX0ZPTlQgKmZudCA9ICZfdGhlbWUtPnJnRm9udHNbZm9udElkXTsKKworICAgICAgICAgICAgQ09MT1JSRUYgZmcgPSBmbnQtPmNyRm9yZWdyb3VuZCwgYmcgPSBmbnQtPmNyQmFja2dyb3VuZDsKKyAgICAgICAgICAgICpicnVzaCA9IGZudC0+aEJhY2tncm91bmQ7CisgICAgICAgICAgICBSZW1hcENvbG9yKCZmZywgJmJnLCBicnVzaCk7CisgICAgICAgICAgICBTZXRUZXh0Q29sb3IoaERDLCBmZyk7CisgICAgICAgICAgICBTZXRCa0NvbG9yKGhEQywgYmcpOworCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblNob3dGYWlsdXJlIC0gZGlzcGxheSB0aGUgZmFpbHVyZSBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPblNob3dGYWlsdXJlKCkgeworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0ZBSUxFRCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uU2hvd0hlbHAgLSBkaXNwbGF5IHRoZSBoZWxwIHBhZ2UuCisgICAgLy8KKyAgICB2b2lkIE9uU2hvd0hlbHAoKSB7CisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfSEVMUCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uRGV0ZWN0IC0gc3RhcnQgdGhlIHByb2Nlc3Npbmcgb2YgcGFja2FnZXMuCisgICAgLy8KKyAgICB2b2lkIE9uRGV0ZWN0KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBkZXRlY3QgQkEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGhyID0gX2JhRnVuY3Rpb24tPk9uRGV0ZWN0KCk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIGNhbGxpbmcgZGV0ZWN0IEJBIGZ1bmN0aW9uLiIpOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKworICAgICAgICAvLyBJZiB0aGUgVUkgc2hvdWxkIGJlIHZpc2libGUsIGRpc3BsYXkgaXQgbm93IGFuZCBoaWRlIHRoZSBzcGxhc2ggc2NyZWVuCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FIDwgX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgOjpTaG93V2luZG93KF90aGVtZS0+aHduZFBhcmVudCwgU1dfU0hPVyk7CisgICAgICAgIH0KKworICAgICAgICBfZW5naW5lLT5DbG9zZVNwbGFzaFNjcmVlbigpOworCisgICAgICAgIC8vIFRlbGwgdGhlIGNvcmUgd2UncmUgcmVhZHkgZm9yIHRoZSBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgbm93LgorICAgICAgICBociA9IF9lbmdpbmUtPkRldGVjdCgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHN0YXJ0IGRldGVjdGluZyBjaGFpbi4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSFJFU1VMVCBVcGRhdGVVSVN0cmluZ3MoX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBDV1NUUiBsaWtlSW5zdGFsbGluZyA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgbGlrZUluc3RhbGxhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIkluc3RhbGxpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiSW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fTU9ESUZZOgorICAgICAgICAgICAgLy8gRm9yIG1vZGlmeSwgd2UgYWN0dWFsbHkgd2FudCB0byBwYXNzIElOU1RBTEwKKyAgICAgICAgICAgIGFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsaW5nID0gTCJNb2RpZnlpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiTW9kaWZpY2F0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIlJlcGFpcmluZyI7CisgICAgICAgICAgICBsaWtlSW5zdGFsbGF0aW9uID0gTCJSZXBhaXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICBsaWtlSW5zdGFsbGluZyA9IEwiVW5pbnN0YWxsaW5nIjsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsYXRpb24gPSBMIlVuaW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpa2VJbnN0YWxsaW5nKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsaW5nKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbG9jTmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIobG9jTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZygKKyAgICAgICAgICAgICAgICBMIkFjdGlvbkxpa2VJbnN0YWxsaW5nIiwKKyAgICAgICAgICAgICAgICBTVUNDRUVERUQoaHIpICYmIGxvY1RleHQgPyBsb2NUZXh0LT53elRleHQgOiBsaWtlSW5zdGFsbGluZworICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaWtlSW5zdGFsbGF0aW9uKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsYXRpb24pOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBsb2NOYW1lLCAmbG9jVGV4dCk7CisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihsb2NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKAorICAgICAgICAgICAgICAgIEwiQWN0aW9uTGlrZUluc3RhbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ID8gbG9jVGV4dC0+d3pUZXh0IDogbGlrZUluc3RhbGxhdGlvbgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblBsYW4gLSBwbGFuIHRoZSBkZXRlY3RlZCBjaGFuZ2VzLgorICAgIC8vCisgICAgdm9pZCBPblBsYW4oX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBfcGxhbm5lZEFjdGlvbiA9IGFjdGlvbjsKKworICAgICAgICBociA9IFVwZGF0ZVVJU3RyaW5ncyhhY3Rpb24pOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHVwZGF0ZSBzdHJpbmdzIik7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGdvaW5nIHRvIGFwcGx5IGEgZG93bmdyYWRlLCBiYWlsLgorICAgICAgICBpZiAoX2Rvd25ncmFkaW5nICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgYWN0aW9uKSB7CisgICAgICAgICAgICBpZiAoX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSkgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiQSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgcHJvZHVjdCBpcyBpbnN0YWxsZWQgYnV0IGRvd25ncmFkZSBmYWlsdXJlIGhhcyBiZWVuIHN1cHByZXNzZWQ7IGNvbnRpbnVpbmcuLi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaHIgPSBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfUFJPRFVDVF9WRVJTSU9OKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiQ2Fubm90IGluc3RhbGwgYSBwcm9kdWN0IHdoZW4gYSBuZXdlciB2ZXJzaW9uIGlzIGluc3RhbGxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5JTkcsIGhyKTsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuKCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IF9lbmdpbmUtPlBsYW4oYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzdGFydCBwbGFubmluZyBwYWNrYWdlcy4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9QTEFOTklORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkFwcGx5IC0gYXBwbHkgdGhlIHBhY2thZ2VzLgorICAgIC8vCisgICAgdm9pZCBPbkFwcGx5KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExZSU5HLCBocik7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHIpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoMCk7CisKKyAgICAgICAgaHIgPSBfZW5naW5lLT5BcHBseShfaFduZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc3RhcnQgYXBwbHlpbmcgcGFja2FnZXMuIik7CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgVFJVRSk7IC8vIGVuc3VyZSB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZy4KKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9BUFBMWUlORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNoYW5nZVN0YXRlIC0gY2hhbmdlIHN0YXRlLgorICAgIC8vCisgICAgdm9pZCBPbkNoYW5nZVN0YXRlKF9faW4gUFlCQV9TVEFURSBzdGF0ZSkgeworICAgICAgICBMUFdTVFIgdW5mb3JtYXR0ZWRUZXh0ID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBzdGF0ZTsKKworICAgICAgICAvLyBJZiBvdXIgaW5zdGFsbCBpcyBhdCB0aGUgZW5kIChzdWNjZXNzIG9yIGZhaWx1cmUpIGFuZCB3ZSdyZSBub3Qgc2hvd2luZyBmdWxsIFVJCisgICAgICAgIC8vIHRoZW4gZXhpdCAocHJvbXB0IGZvciByZXN0YXJ0IGlmIHJlcXVpcmVkKS4KKyAgICAgICAgaWYgKChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlICYmIEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5KSkgeworICAgICAgICAgICAgLy8gSWYgYSByZXN0YXJ0IHdhcyByZXF1aXJlZCBidXQgd2Ugd2VyZSBub3QgYXV0b21hdGljYWxseSBhbGxvd2VkIHRvCisgICAgICAgICAgICAvLyBhY2NlcHQgdGhlIHJlYm9vdCB0aGVuIGRvIHRoZSBwcm9tcHQuCisgICAgICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiAhX2FsbG93UmVzdGFydCkgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRCksIG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgX2FsbG93UmVzdGFydCA9IElET0sgPT0gOjpNZXNzYWdlQm94VygKKyAgICAgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkVGV4dCA/IHVuZm9ybWF0dGVkVGV4dCA6IEwiVGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC4gQ2hhbmdlcyB3aWxsIG5vdCBiZSBlZmZlY3RpdmUgdW50aWwgdGhlIHN5c3RlbSBpcyByZWJvb3RlZC4iLAorICAgICAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICAgICAgICAgIE1CX0lDT05FWENMQU1BVElPTiB8IE1CX09LQ0FOQ0VMCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUXVpZXRseSBleGl0LgorICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsgLy8gdHJ5IHRvIGNoYW5nZSB0aGUgcGFnZXMuCisgICAgICAgICAgICBEV09SRCBuZXdQYWdlSWQgPSAwOworICAgICAgICAgICAgRGV0ZXJtaW5lUGFnZUlkKF9zdGF0ZSwgJm5ld1BhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChfdmlzaWJsZVBhZ2VJZCAhPSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgICAgICBTaG93UGFnZShuZXdQYWdlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cih1bmZvcm1hdHRlZFRleHQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBzaG93aW5nIGEgcGFnZSB0byBoYW5kbGUgYWxsIGNvbnRyb2xzLgorICAgIC8vCisgICAgdm9pZCBQcm9jZXNzUGFnZUNvbnRyb2xzKFRIRU1FX1BBR0UgKnBQYWdlKSB7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5hbWVkIGNvbnRyb2wsIHRyeSB0byBzZXQgaXRzIGRlZmF1bHQgc3RhdGUuCisgICAgICAgICAgICBpZiAocENvbnRyb2wtPnNjek5hbWUgJiYgKnBDb250cm9sLT5zY3pOYW1lKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNoZWNrYWJsZSBjb250cm9sLCB0cnkgdG8gc2V0IGl0cyBkZWZhdWx0IHN0YXRlCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHN0YXRlIG9mIGEgbWF0Y2hpbmcgbmFtZWQgQnVybiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBpZiAoSXNDaGVja2FibGUocENvbnRyb2wpKSB7CisgICAgICAgICAgICAgICAgICAgIExPTkdMT05HIGxsVmFsdWUgPSAwOworICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKHBDb250cm9sLT5zY3pOYW1lLCAmbGxWYWx1ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnRyb2wgdmFsdWUgaXNuJ3Qgc2V0IHRoZW4gZGlzYWJsZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBwQ29udHJvbC0+d0lkLCBGQUxTRSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhlbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENvbnRyb2wtPndJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTV9TRVRDSEVDSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQoaHIpICYmIGxsVmFsdWUgPyBCU1RfQ0hFQ0tFRCA6IEJTVF9VTkNIRUNLRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEhpZGUgb3IgZGlzYWJsZSBjb250cm9scyBiYXNlZCBvbiB0aGUgY29udHJvbCBuYW1lIHdpdGggJ1N0YXRlJyBhcHBlbmRlZAorICAgICAgICAgICAgICAgIExQV1NUUiBjb250cm9sTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IFN0ckFsbG9jRm9ybWF0dGVkKCZjb250cm9sTmFtZSwgTCIlbHNTdGF0ZSIsIHBDb250cm9sLT5zY3pOYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICBMUFdTVFIgY29udHJvbFN0YXRlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShjb250cm9sTmFtZSwgJmNvbnRyb2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGNvbnRyb2xTdGF0ZSAmJiAqY29udHJvbFN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9ORVVUUkFMLCAwLCBjb250cm9sU3RhdGUsIC0xLCBMImRpc2FibGUiLCAtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkRpc2FibGUgY29udHJvbCAlbHMiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgcENvbnRyb2wtPndJZCwgRkFMU0UpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIGNvbnRyb2xTdGF0ZSwgLTEsIEwiaGlkZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiSGlkZSBjb250cm9sICVscyIsIHBDb250cm9sLT5zY3pOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGRvZXNuJ3Qgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW1lU2hvd0NvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCBTV19ISURFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0ckZyZWUoY29udHJvbE5hbWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGb3JtYXQgdGhlIHRleHQgaW4gZWFjaCBvZiB0aGUgbmV3IHBhZ2UncyBjb250cm9scworICAgICAgICAgICAgaWYgKHBDb250cm9sLT5zY3pUZXh0ICYmICpwQ29udHJvbC0+c2N6VGV4dCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgVUksIHRoZW4gb2J2aW91c2x5IHRoZXkgZG9uJ3QgY2FyZSBhYm91dAorICAgICAgICAgICAgICAgIC8vIGtlZXBpbmcgaXQgc2FmZSBzbyBkb24ndCBnbyBkb3duIHRoZSByYWJiaXQgaG9sZQorICAgICAgICAgICAgICAgIC8vIG9mIG1ha2luZyBzdXJlIHRoYXQgdGhpcyBpcyBzZWN1cmVseSBmcmVlZC4KKyAgICAgICAgICAgICAgICBMUFdTVFIgdGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEZvcm1hdFN0cmluZyhwQ29udHJvbC0+c2N6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uQ2xvc2UgLSBjYWxsZWQgd2hlbiB0aGUgd2luZG93IGlzIHRyeWluZyB0byBiZSBjbG9zZWQuCisgICAgLy8KKyAgICBCT09MIE9uQ2xvc2UoKSB7CisgICAgICAgIEJPT0wgY2xvc2UgPSBGQUxTRTsKKworICAgICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHN1Y2NlZWRlZCBvciBmYWlsZWQgb3Igc2hvd2luZyB0aGUgaGVscCBwYWdlLCBqdXN0IGNsb3NlIChwcm9tcHRzIGFyZSBhbm5veWluZyBpZiB0aGUgYm9vdHN0cmFwcGVyIGlzIGRvbmUpLgorICAgICAgICBpZiAoUFlCQV9TVEFURV9BUFBMSUVEIDw9IF9zdGF0ZSB8fCBQWUJBX1NUQVRFX0hFTFAgPT0gX3N0YXRlKSB7CisgICAgICAgICAgICBjbG9zZSA9IFRSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBwcm9tcHQgdGhlIHVzZXIgb3IgZm9yY2UgdGhlIGNhbmNlbCBpZiB0aGVyZSBpcyBubyBVSS4KKyAgICAgICAgICAgIGNsb3NlID0gUHJvbXB0Q2FuY2VsKAorICAgICAgICAgICAgICAgIF9oV25kLAorICAgICAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgIT0gX2NvbW1hbmQuZGlzcGxheSwKKyAgICAgICAgICAgICAgICBfY29uZmlybUNsb3NlTWVzc2FnZSA/IF9jb25maXJtQ2xvc2VNZXNzYWdlIDogTCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsPyIsCisgICAgICAgICAgICAgICAgX3RoZW1lLT5zY3pDYXB0aW9uCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UncmUgZG9pbmcgcHJvZ3Jlc3MgdGhlbiB3ZSBuZXZlciBjbG9zZSwgd2UganVzdCBjYW5jZWwgdG8gbGV0IHJvbGxiYWNrIG9jY3VyLgorICAgICAgICBpZiAoUFlCQV9TVEFURV9BUFBMWUlORyA8PSBfc3RhdGUgJiYgUFlCQV9TVEFURV9BUFBMSUVEID4gX3N0YXRlKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBjYW5jZWxlZCBkaXNhYmxlIGNhbmNlbCBidXR0b24gc2luY2UgY2xpY2tpbmcgaXQgYWdhaW4gaXMgc2lsbHkuCisgICAgICAgICAgICBpZiAoY2xvc2UpIHsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNsb3NlID0gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvc2U7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPbkNsaWNrQ2xvc2VCdXR0b24gLSBjbG9zZSB0aGUgYXBwbGljYXRpb24uCisgICAgLy8KKyAgICB2b2lkIE9uQ2xpY2tDbG9zZUJ1dHRvbigpIHsKKyAgICAgICAgOjpTZW5kTWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gT25DbGlja0xhdW5jaEJ1dHRvbiAtIGxhdW5jaCB0aGUgYXBwIGZyb20gdGhlIHN1Y2Nlc3MgcGFnZS4KKyAgICAvLworICAgIHZvaWQgT25DbGlja0xhdW5jaEJ1dHRvbigpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXQgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pBcmd1bWVudHMgPSBudWxscHRyOworICAgICAgICBpbnQgbkNtZFNob3cgPSBTV19TSE9XTk9STUFMOworCisgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgsICZzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKKworICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCwgJnNjekxhdW5jaFRhcmdldCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7CisKKyAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCkpIHsKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lELCAmc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCBlbGV2YXRlZCBpZCAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUykpIHsKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTLCAmc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCBhcmd1bWVudHMgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4pKSB7CisgICAgICAgICAgICBuQ21kU2hvdyA9IFNXX0hJREU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCAmJiAhX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCkgeworICAgICAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IFRSVUU7CisgICAgICAgICAgICBociA9IF9lbmdpbmUtPkxhdW5jaEFwcHJvdmVkRXhlKF9oV25kLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgMCk7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCBlbGV2YXRlZCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOworCisgICAgICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpIHsKKyAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgJnNjekFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCBhcmd1bWVudHMgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBTaGVsRXhlYyhzY3pMYXVuY2hUYXJnZXQsIHNjekFyZ3VtZW50cywgTCJvcGVuIiwgbnVsbHB0ciwgbkNtZFNob3csIF9oV25kLCBudWxscHRyKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldCk7CisKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pBcmd1bWVudHMpOworICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKKyAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6TGF1bmNoVGFyZ2V0KTsKKyAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNsaWNrUmVzdGFydEJ1dHRvbiAtIGFsbG93cyB0aGUgcmVzdGFydCBhbmQgY2xvc2VzIHRoZSBhcHAuCisgICAgLy8KKyAgICB2b2lkIE9uQ2xpY2tSZXN0YXJ0QnV0dG9uKCkgeworICAgICAgICBBc3NlcnRTeihfcmVzdGFydFJlcXVpcmVkLCAiUmVzdGFydCBtdXN0IGJlIHJlcXVlc3RlZCB0byBiZSBhYmxlIHRvIGNsaWNrIG9uIHRoZSByZXN0YXJ0IGJ1dHRvbi4iKTsKKworICAgICAgICBfYWxsb3dSZXN0YXJ0ID0gVFJVRTsKKyAgICAgICAgOjpTZW5kTWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tMb2dGaWxlTGluayAtIHNob3cgdGhlIGxvZyBmaWxlLgorICAgIC8vCisgICAgdm9pZCBPbkNsaWNrTG9nRmlsZUxpbmsoKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6TG9nRmlsZSA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlLCAmc2N6TG9nRmlsZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsb2cgZmlsZSB2YXJpYWJsZSAnJWxzJy4iLCBfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlKTsKKworICAgICAgICBociA9IFNoZWxFeGVjKEwibm90ZXBhZC5leGUiLCBzY3pMb2dGaWxlLCBMIm9wZW4iLCBudWxscHRyLCBTV19TSE9XREVGQVVMVCwgX2hXbmQsIG51bGxwdHIpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBvcGVuIGxvZyBmaWxlIHRhcmdldDogJWxzIiwgc2N6TG9nRmlsZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZVN0cihzY3pMb2dGaWxlKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIFNldFN0YXRlCisgICAgLy8KKyAgICB2b2lkIFNldFN0YXRlKF9faW4gUFlCQV9TVEFURSBzdGF0ZSwgX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChGQUlMRUQoaHJTdGF0dXMpKSB7CisgICAgICAgICAgICBfaHJGaW5hbCA9IGhyU3RhdHVzOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEZBSUxFRChfaHJGaW5hbCkpIHsKKyAgICAgICAgICAgIHN0YXRlID0gUFlCQV9TVEFURV9GQUlMRUQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3N0YXRlICE9IHN0YXRlKSB7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9DSEFOR0VfU1RBVEUsIDAsIHN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gR29Ub1BhZ2UKKyAgICAvLworICAgIHZvaWQgR29Ub1BhZ2UoX19pbiBQQUdFIHBhZ2UpIHsKKyAgICAgICAgX2luc3RhbGxQYWdlID0gcGFnZTsKKyAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX1BZQkFfQ0hBTkdFX1NUQVRFLCAwLCBfc3RhdGUpOworICAgIH0KKworICAgIHZvaWQgRGV0ZXJtaW5lUGFnZUlkKF9faW4gUFlCQV9TVEFURSBzdGF0ZSwgX19vdXQgRFdPUkQqIHBkd1BhZ2VJZCkgeworICAgICAgICBMT05HTE9ORyBzaW1wbGU7CisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX1BBU1NJVkUgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0lOSVRJQUxJWkVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBCT09UU1RSQVBQRVJfQUNUSU9OX0hFTFAgPT0gX2NvbW1hbmQuYWN0aW9uCisgICAgICAgICAgICAgICAgICAgID8gX3BhZ2VJZHNbUEFHRV9IRUxQXQorICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfTE9BRElOR107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9IRUxQOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0hFTFBdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfREVURUNUSU5HOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0xPQURJTkddCisgICAgICAgICAgICAgICAgICAgID8gX3BhZ2VJZHNbUEFHRV9MT0FESU5HXQorICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NfUEFTU0lWRV0KKyAgICAgICAgICAgICAgICAgICAgICAgID8gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU19QQVNTSVZFXQorICAgICAgICAgICAgICAgICAgICAgICAgOiBfcGFnZUlkc1tQQUdFX1BST0dSRVNTXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0RFVEVDVEVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX1BMQU5OSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX1BMQU5ORUQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQVBQTFlJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQ0FDSElORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9DQUNIRUQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRVhFQ1VUSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0VYRUNVVEVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgID8gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU19QQVNTSVZFXQorICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0lOSVRJQUxJWklORzoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0lOSVRJQUxJWkVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBCT09UU1RSQVBQRVJfQUNUSU9OX0hFTFAgPT0gX2NvbW1hbmQuYWN0aW9uCisgICAgICAgICAgICAgICAgICAgID8gX3BhZ2VJZHNbUEFHRV9IRUxQXQorICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfTE9BRElOR107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9IRUxQOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0hFTFBdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfREVURUNUSU5HOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0xPQURJTkddOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfREVURUNURUQ6CisgICAgICAgICAgICAgICAgaWYgKF9pbnN0YWxsUGFnZSA9PSBQQUdFX0xPQURJTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfY29tbWFuZC5hY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEw6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIlNpbXBsZUluc3RhbGwiLCAmc2ltcGxlKSkgJiYgc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9TSU1QTEVfSU5TVEFMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9JTlNUQUxMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWTogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfTU9ESUZZOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW19pbnN0YWxsUGFnZV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTklORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTkVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0FQUExZSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQ0FDSEVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0VYRUNVVElORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMSUVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX1NVQ0NFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRkFJTEVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0ZBSUxVUkVdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQk9PTCBJc0NydEluc3RhbGxlZCgpIHsKKyAgICAgICAgaWYgKF9jcnRJbnN0YWxsZWRUb2tlbiA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9IGVsc2UgaWYgKF9jcnRJbnN0YWxsZWRUb2tlbiA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgYXQgbGVhc3QgQ1JUIHYxMC4wLjk5MjQuMCBpcyBhdmFpbGFibGUuCisgICAgICAgIC8vIEl0IHNob3VsZCBvbmx5IGJlIGluc3RhbGxlZCBhcyBhIFdpbmRvd3MgVXBkYXRlIHBhY2thZ2UsIHdoaWNoIG1lYW5zCisgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgMzItYml0LzY0LWJpdC4KKyAgICAgICAgLy8gSG93ZXZlciwgc2luY2UgdGhlIFdVIHBhY2thZ2UgZG9lcyBub3QgaW5jbHVkZSB2Y3J1bnRpbWUxNDAuZGxsLCB3ZQorICAgICAgICAvLyBzdGlsbCBpbnN0YWxsIHRoYXQgb3Vyc2VsdmVzLgorICAgICAgICBMUENXU1RSIGNydEZpbGUgPSBMImFwaS1tcy13aW4tY3J0LXJ1bnRpbWUtbDEtMS0wLmRsbCI7CisKKyAgICAgICAgRFdPUkQgY2JWZXIgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjcnRGaWxlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFjYlZlcikgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgKnBEYXRhID0gbWFsbG9jKGNiVmVyKTsKKyAgICAgICAgaWYgKCFwRGF0YSkgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjcnRGaWxlLCAwLCBjYlZlciwgcERhdGEpKSB7CisgICAgICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgICAgIF9jcnRJbnN0YWxsZWRUb2tlbiA9IDA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBWU19GSVhFREZJTEVJTkZPICpmZmk7CisgICAgICAgIFVJTlQgY2I7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICAgICAgaWYgKFZlclF1ZXJ5VmFsdWVXKHBEYXRhLCBMIlxcIiwgKExQVk9JRCopJmZmaSwgJmNiKSAmJgorICAgICAgICAgICAgZmZpLT5kd0ZpbGVWZXJzaW9uTVMgPT0gMHgwMDBBMDAwMCAmJiBmZmktPmR3RmlsZVZlcnNpb25MUyA+PSAweDI2QzQwMDAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gcmVzdWx0ID8gMSA6IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQk9PTCBRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkgeworICAgICAgICAvLyBDYWxsZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHRoYXQgZXZlbiB0aG91Z2ggdGhleSB0aGluayB0aGV5IHdvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gZWxldmF0ZSwgdGhleSBhY3R1YWxseSB3aWxsIGJlY2F1c2Ugb2YgdGhlIENSVCBpbnN0YWxsLgorICAgICAgICBpZiAoSXNDcnRJbnN0YWxsZWQoKSkgeworICAgICAgICAgICAgLy8gQ1JUIGlzIGFscmVhZHkgaW5zdGFsbGVkIC0gbm8gbmVlZCB0byBwcm9tcHQKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMT05HTE9ORyBlbGV2YXRlZDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxldmF0ZWQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgZWxldmF0ZWQgLSBubyBuZWVkIHRvIHByb21wdAorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBMT0NfU1RSSU5HICpsb2NTdHI7CisgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRWxldmF0ZUZvckNSVEluc3RhbGwpIiwgJmxvY1N0cik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBnZXQgRWxldmF0ZUZvckNSVEluc3RhbGwgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDo6TWVzc2FnZUJveFcoX2hXbmQsIGxvY1N0ci0+d3pUZXh0LCBfdGhlbWUtPnNjekNhcHRpb24sIE1CX1lFU05PKSAhPSBJRE5POworICAgIH0KKworICAgIEhSRVNVTFQgRXZhbHVhdGVDb25kaXRpb25zKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKKworICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX2NvbmRpdGlvbnMuY0NvbmRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgQkFMX0NPTkRJVElPTiogcENvbmRpdGlvbiA9IF9jb25kaXRpb25zLnJnQ29uZGl0aW9ucyArIGk7CisKKyAgICAgICAgICAgIGhyID0gQmFsQ29uZGl0aW9uRXZhbHVhdGUocENvbmRpdGlvbiwgX2VuZ2luZSwgJnJlc3VsdCwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZXZhbHVhdGUgY29uZGl0aW9uLiIpOworCisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIC8vIEhvcGUgdGhleSBkaWRuJ3QgaGF2ZSBoaWRkZW4gdmFyaWFibGVzIGluIHRoZWlyIG1lc3NhZ2UsIGJlY2F1c2UgaXQncyBnb2luZyBpbiB0aGUgbG9nIGluIHBsYWludGV4dC4KKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIiVscyIsIF9mYWlsZWRNZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIGhyID0gRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEOworICAgICAgICAgICAgICAgIC8vIHRvZG86IHJlbW92ZSBpbiBXaVggdjQsIGluIGNhc2UgcGVvcGxlIGFyZSByZWx5aW5nIG9uIHYzLnggbG9nZ2luZyBiZWhhdmlvcgorICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiQnVuZGxlIGNvbmRpdGlvbiBldmFsdWF0ZWQgdG8gZmFsc2U6ICVscyIsIHBDb25kaXRpb24tPnNjekNvbmRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlTnVsbFN0clNlY3VyZShfZmFpbGVkTWVzc2FnZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX19pbiBEV09SRCBkd092ZXJhbGxQZXJjZW50YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NWYWx1ZShfaFduZCwgZHdPdmVyYWxsUGVyY2VudGFnZSwgMTAwVUwpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHByb2dyZXNzIHRvOiAlZCUlLiIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoX19pbiBUQlBGTEFHIHRicEZsYWdzKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NTdGF0ZShfaFduZCwgdGJwRmxhZ3MpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHN0YXRlLiIsIHRicEZsYWdzKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHZvaWQgU2V0UHJvZ3Jlc3NTdGF0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgVEJQRkxBRyBmbGFnID0gVEJQRl9OT1JNQUw7CisKKyAgICAgICAgaWYgKElzQ2FuY2VsZWQoKSB8fCBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVEFMTF9VU0VSRVhJVCkgPT0gaHJTdGF0dXMpIHsKKyAgICAgICAgICAgIGZsYWcgPSBUQlBGX1BBVVNFRDsKKyAgICAgICAgfSBlbHNlIGlmIChJc1JvbGxpbmdCYWNrKCkgfHwgRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgZmxhZyA9IFRCUEZfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoZmxhZyk7CisgICAgfQorCisKKyAgICBIUkVTVUxUIExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pCYWZQYXRoID0gbnVsbHB0cjsKKworICAgICAgICBociA9IFBhdGhSZWxhdGl2ZVRvTW9kdWxlKCZzY3pCYWZQYXRoLCBMImJhZnVuY3Rpb25zLmRsbCIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgcGF0aCB0byBCQSBmdW5jdGlvbiBETEwuIik7CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gQkEgZnVuY3Rpb24gRExMICVscyIsIHNjekJhZlBhdGgpOworI2VuZGlmCisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSA6OkxvYWRMaWJyYXJ5VyhzY3pCYWZQYXRoKTsKKyAgICAgICAgaWYgKF9oQkFGTW9kdWxlKSB7CisgICAgICAgICAgICBhdXRvIHBmbkJBRnVuY3Rpb25DcmVhdGUgPSByZWludGVycHJldF9jYXN0PFBGTl9CT09UU1RSQVBQRVJfQkFfRlVOQ1RJT05fQ1JFQVRFPig6OkdldFByb2NBZGRyZXNzKF9oQkFGTW9kdWxlLCAiQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbk51bGxXaXRoTGFzdEVycm9yMShwZm5CQUZ1bmN0aW9uQ3JlYXRlLCBociwgIkZhaWxlZCB0byBnZXQgQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiBlbnRyeS1wb2ludCBmcm9tOiAlbHMiLCBzY3pCYWZQYXRoKTsKKworICAgICAgICAgICAgaHIgPSBwZm5CQUZ1bmN0aW9uQ3JlYXRlKF9lbmdpbmUsIF9oQkFGTW9kdWxlLCAmX2JhRnVuY3Rpb24pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgQkEgZnVuY3Rpb24uIik7CisgICAgICAgIH0KKyNpZmRlZiBERUJVRworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEJhbExvZ0Vycm9yKEhSRVNVTFRfRlJPTV9XSU4zMig6OkdldExhc3RFcnJvcigpKSwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gRmFpbGVkIHRvIGxvYWQgRExMICVscyIsIHNjekJhZlBhdGgpOworICAgICAgICB9CisjZW5kaWYKKworICAgIExFeGl0OgorICAgICAgICBpZiAoX2hCQUZNb2R1bGUgJiYgIV9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICA6OkZyZWVMaWJyYXJ5KF9oQkFGTW9kdWxlKTsKKyAgICAgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBSZWxlYXNlU3RyKHNjekJhZlBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBCT09MIElzQ2hlY2thYmxlKFRIRU1FX0NPTlRST0wqIHBDb250cm9sKSB7CisgICAgICAgIGlmICghcENvbnRyb2wtPnNjek5hbWUgfHwgIXBDb250cm9sLT5zY3pOYW1lWzBdKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocENvbnRyb2wtPnR5cGUgPT0gVEhFTUVfQ09OVFJPTF9UWVBFX0NIRUNLQk9YKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQ29udHJvbC0+dHlwZSA9PSBUSEVNRV9DT05UUk9MX1RZUEVfQlVUVE9OKSB7CisgICAgICAgICAgICBpZiAoKHBDb250cm9sLT5kd1N0eWxlICYgQlNfVFlQRU1BU0spID09IEJTX0FVVE9SQURJT0JVVFRPTikgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHZvaWQgU2F2ZVBhZ2VTZXR0aW5ncygpIHsKKyAgICAgICAgRFdPUkQgcGFnZUlkID0gMDsKKyAgICAgICAgVEhFTUVfUEFHRSogcFBhZ2UgPSBudWxscHRyOworCisgICAgICAgIERldGVybWluZVBhZ2VJZChfc3RhdGUsICZwYWdlSWQpOworICAgICAgICBwUGFnZSA9IFRoZW1lR2V0UGFnZShfdGhlbWUsIHBhZ2VJZCk7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGNoZWNrYWJsZSBjb250cm9scyBhbmQgc2V0IGEgQnVybiB2YXJpYWJsZQorICAgICAgICAgICAgLy8gd2l0aCB0aGF0IG5hbWUgdG8gdHJ1ZSBvciBmYWxzZS4KKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIGlmIChJc0NoZWNrYWJsZShwQ29udHJvbCkgJiYgVGhlbWVDb250cm9sRW5hYmxlZChfdGhlbWUsIHBDb250cm9sLT53SWQpKSB7CisgICAgICAgICAgICAgICAgQk9PTCBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgcENvbnRyb2wtPndJZCk7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHBDb250cm9sLT5zY3pOYW1lLCBjaGVja2VkID8gMSA6IDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBlZGl0Ym94IGNvbnRyb2xzIHdpdGggbmFtZXMgYW5kIHNldCBhCisgICAgICAgICAgICAvLyBCdXJuIHZhcmlhYmxlIHdpdGggdGhhdCBuYW1lIHRvIHRoZSBjb250ZW50cy4KKyAgICAgICAgICAgIGlmIChUSEVNRV9DT05UUk9MX1RZUEVfRURJVEJPWCA9PSBwQ29udHJvbC0+dHlwZSAmJiBwQ29udHJvbC0+c2N6TmFtZSAmJiAqcENvbnRyb2wtPnNjek5hbWUpIHsKKyAgICAgICAgICAgICAgICBMUFdTVFIgc2N6VmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIFRoZW1lR2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCAmc2N6VmFsdWUpOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHBDb250cm9sLT5zY3pOYW1lLCBzY3pWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKworcHVibGljOgorICAgIC8vCisgICAgLy8gQ29uc3RydWN0b3IgLSBpbml0aWFsaXplIG1lbWJlciB2YXJpYWJsZXMuCisgICAgLy8KKyAgICBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbigKKyAgICAgICAgX19pbiBITU9EVUxFIGhNb2R1bGUsCisgICAgICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICAgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQKKyAgICApIDogQ0JhbEJhc2VCb290c3RyYXBwZXJBcHBsaWNhdGlvbihwRW5naW5lLCBwQ29tbWFuZCwgMywgMzAwMCkgeworICAgICAgICBfaE1vZHVsZSA9IGhNb2R1bGU7CisgICAgICAgIG1lbWNweV9zKCZfY29tbWFuZCwgc2l6ZW9mKF9jb21tYW5kKSwgcENvbW1hbmQsIHNpemVvZihCT09UU1RSQVBQRVJfQ09NTUFORCkpOworCisgICAgICAgIExPTkdMT05HIGxsSW5zdGFsbGVkID0gMDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUluc3RhbGxlZCIsICZsbEluc3RhbGxlZCk7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgIT0gX2NvbW1hbmQucmVzdW1lVHlwZSAmJiAwIDwgbGxJbnN0YWxsZWQgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMID09IF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgX2NvbW1hbmQuYWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk7CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBsbEluc3RhbGxlZCAmJiAoQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlkgPT0gX2NvbW1hbmQuYWN0aW9uIHx8IEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSID09IF9jb21tYW5kLmFjdGlvbikpIHsKKyAgICAgICAgICAgIF9jb21tYW5kLmFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgfQorCisgICAgICAgIF9wbGFubmVkQWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9VTktOT1dOOworCisKKyAgICAgICAgLy8gV2hlbiByZXN1bWluZyBmcm9tIHJlc3RhcnQgZG9pbmcgc29tZSBpbnN0YWxsLWxpa2Ugb3BlcmF0aW9uLCB0cnkgdG8gZmluZCB0aGUgcGFja2FnZSB0aGF0IGZvcmNlZCB0aGUKKyAgICAgICAgLy8gcmVzdGFydC4gV2UnbGwgdXNlIHRoaXMgaW5mb3JtYXRpb24gZHVyaW5nIHBsYW5uaW5nLgorICAgICAgICBfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQgPSBudWxscHRyOworCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVU1FX1RZUEVfUkVCT09UID09IF9jb21tYW5kLnJlc3VtZVR5cGUgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPCBfY29tbWFuZC5hY3Rpb24pIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZm9yY2VkIHJlc3RhcnQgcGFja2FnZSB2YXJpYWJsZSBpcyBudWxsIHdoZW4gaXQgaXMgYW4gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiV2l4QnVuZGxlRm9yY2VkUmVzdGFydFBhY2thZ2UiLCAmX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICFfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQgfHwgISpfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBSZWxlYXNlTnVsbFN0cihfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gLTE7CisgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkNSVEluc3RhbGxlZCIsIElzQ3J0SW5zdGFsbGVkKCkgPyAxIDogMCk7CisKKyAgICAgICAgX3dpeExvYyA9IG51bGxwdHI7CisgICAgICAgIG1lbXNldCgmX2J1bmRsZSwgMCwgc2l6ZW9mKF9idW5kbGUpKTsKKyAgICAgICAgbWVtc2V0KCZfY29uZGl0aW9ucywgMCwgc2l6ZW9mKF9jb25kaXRpb25zKSk7CisgICAgICAgIF9jb25maXJtQ2xvc2VNZXNzYWdlID0gbnVsbHB0cjsKKyAgICAgICAgX2ZhaWxlZE1lc3NhZ2UgPSBudWxscHRyOworCisgICAgICAgIF9sYW5ndWFnZSA9IG51bGxwdHI7CisgICAgICAgIF90aGVtZSA9IG51bGxwdHI7CisgICAgICAgIG1lbXNldChfcGFnZUlkcywgMCwgc2l6ZW9mKF9wYWdlSWRzKSk7CisgICAgICAgIF9oVWlUaHJlYWQgPSBudWxscHRyOworICAgICAgICBfcmVnaXN0ZXJlZCA9IEZBTFNFOworICAgICAgICBfaFduZCA9IG51bGxwdHI7CisKKyAgICAgICAgX3N0YXRlID0gUFlCQV9TVEFURV9JTklUSUFMSVpJTkc7CisgICAgICAgIF92aXNpYmxlUGFnZUlkID0gMDsKKyAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9MT0FESU5HOworICAgICAgICBfaHJGaW5hbCA9IGhySG9zdEluaXRpYWxpemF0aW9uOworCisgICAgICAgIF9kb3duZ3JhZGluZyA9IEZBTFNFOworICAgICAgICBfcmVzdGFydFJlc3VsdCA9IEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUX05PTkU7CisgICAgICAgIF9yZXN0YXJ0UmVxdWlyZWQgPSBGQUxTRTsKKyAgICAgICAgX2FsbG93UmVzdGFydCA9IEZBTFNFOworCisgICAgICAgIF9zdXBwcmVzc0Rvd25ncmFkZUZhaWx1cmUgPSBGQUxTRTsKKyAgICAgICAgX3N1cHByZXNzUmVwYWlyID0gRkFMU0U7CisgICAgICAgIF9tb2RpZnlpbmcgPSBGQUxTRTsKKworICAgICAgICBfb3ZlcnJpZGFibGVWYXJpYWJsZXMgPSBudWxscHRyOworICAgICAgICBfdGFza2Jhckxpc3QgPSBudWxscHRyOworICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gVUlOVF9NQVg7CisgICAgICAgIF90YXNrYmFyQnV0dG9uT0sgPSBGQUxTRTsKKyAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKKyAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IEZBTFNFOworCisgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CisKKyAgICAgICAgcEVuZ2luZS0+QWRkUmVmKCk7CisgICAgICAgIF9lbmdpbmUgPSBwRW5naW5lOworCisgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgX2JhRnVuY3Rpb24gPSBudWxscHRyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yIC0gcmVsZWFzZSBtZW1iZXIgdmFyaWFibGVzLgorICAgIC8vCisgICAgflB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKCkgeworICAgICAgICBBc3NlcnRTeighOjpJc1dpbmRvdyhfaFduZCksICJXaW5kb3cgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYmVmb3JlIGRlc3RydWN0b3IuIik7CisgICAgICAgIEFzc2VydFN6KCFfdGhlbWUsICJUaGVtZSBzaG91bGQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJlZm9yZSBkZXN0cnVjdG9yLiIpOworCisgICAgICAgIFJlbGVhc2VPYmplY3QoX3Rhc2tiYXJMaXN0KTsKKyAgICAgICAgUmVsZWFzZURpY3QoX292ZXJyaWRhYmxlVmFyaWFibGVzKTsKKyAgICAgICAgUmVsZWFzZVN0cihfZmFpbGVkTWVzc2FnZSk7CisgICAgICAgIFJlbGVhc2VTdHIoX2NvbmZpcm1DbG9zZU1lc3NhZ2UpOworICAgICAgICBCYWxDb25kaXRpb25zVW5pbml0aWFsaXplKCZfY29uZGl0aW9ucyk7CisgICAgICAgIEJhbEluZm9VbmluaXRpYWxpemUoJl9idW5kbGUpOworICAgICAgICBMb2NGcmVlKF93aXhMb2MpOworCisgICAgICAgIFJlbGVhc2VTdHIoX2xhbmd1YWdlKTsKKyAgICAgICAgUmVsZWFzZVN0cihfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICBSZWxlYXNlTnVsbE9iamVjdChfZW5naW5lKTsKKworICAgICAgICBpZiAoX2hCQUZNb2R1bGUpIHsKKyAgICAgICAgICAgIDo6RnJlZUxpYnJhcnkoX2hCQUZNb2R1bGUpOworICAgICAgICAgICAgX2hCQUZNb2R1bGUgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEhNT0RVTEUgX2hNb2R1bGU7CisgICAgQk9PVFNUUkFQUEVSX0NPTU1BTkQgX2NvbW1hbmQ7CisgICAgSUJvb3RzdHJhcHBlckVuZ2luZSogX2VuZ2luZTsKKyAgICBCT09UU1RSQVBQRVJfQUNUSU9OIF9wbGFubmVkQWN0aW9uOworCisgICAgTFBXU1RSIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydDsKKworICAgIFdJWF9MT0NBTElaQVRJT04qIF93aXhMb2M7CisgICAgQkFMX0lORk9fQlVORExFIF9idW5kbGU7CisgICAgQkFMX0NPTkRJVElPTlMgX2NvbmRpdGlvbnM7CisgICAgTFBXU1RSIF9mYWlsZWRNZXNzYWdlOworICAgIExQV1NUUiBfY29uZmlybUNsb3NlTWVzc2FnZTsKKworICAgIExQV1NUUiBfbGFuZ3VhZ2U7CisgICAgVEhFTUUqIF90aGVtZTsKKyAgICBEV09SRCBfcGFnZUlkc1tjb3VudG9mKFBBR0VfTkFNRVMpXTsKKyAgICBIQU5ETEUgX2hVaVRocmVhZDsKKyAgICBCT09MIF9yZWdpc3RlcmVkOworICAgIEhXTkQgX2hXbmQ7CisKKyAgICBQWUJBX1NUQVRFIF9zdGF0ZTsKKyAgICBIUkVTVUxUIF9ockZpbmFsOworICAgIERXT1JEIF92aXNpYmxlUGFnZUlkOworICAgIFBBR0UgX2luc3RhbGxQYWdlOworCisgICAgQk9PTCBfc3RhcnRlZEV4ZWN1dGlvbjsKKyAgICBEV09SRCBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3M7CisgICAgRFdPUkQgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3M7CisKKyAgICBCT09MIF9kb3duZ3JhZGluZzsKKyAgICBCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVCBfcmVzdGFydFJlc3VsdDsKKyAgICBCT09MIF9yZXN0YXJ0UmVxdWlyZWQ7CisgICAgQk9PTCBfYWxsb3dSZXN0YXJ0OworCisgICAgQk9PTCBfc3VwcHJlc3NEb3duZ3JhZGVGYWlsdXJlOworICAgIEJPT0wgX3N1cHByZXNzUmVwYWlyOworICAgIEJPT0wgX21vZGlmeWluZzsKKworICAgIGludCBfY3J0SW5zdGFsbGVkVG9rZW47CisKKyAgICBTVFJJTkdESUNUX0hBTkRMRSBfb3ZlcnJpZGFibGVWYXJpYWJsZXM7CisKKyAgICBJVGFza2Jhckxpc3QzKiBfdGFza2Jhckxpc3Q7CisgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOworICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKKyAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOworICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKKworICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CisKKyAgICBITU9EVUxFIF9oQkFGTW9kdWxlOworICAgIElCb290c3RyYXBwZXJCQUZ1bmN0aW9uKiBfYmFGdW5jdGlvbjsKK307CisKKy8vCisvLyBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbiAtIGNyZWF0ZXMgYSBuZXcgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIG9iamVjdC4KKy8vCitIUkVTVUxUIENyZWF0ZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgIF9faW4gSE1PRFVMRSBoTW9kdWxlLAorICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQsCisgICAgX19vdXQgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiogcHBBcHBsaWNhdGlvbgorICAgICkgeworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgaWYgKGZQcmVyZXEpIHsKKyAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgfQorCisgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBBcHBsaWNhdGlvbiA9IG51bGxwdHI7CisKKyAgICBwQXBwbGljYXRpb24gPSBuZXcgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24oaE1vZHVsZSwgZlByZXJlcSwgaHJIb3N0SW5pdGlhbGl6YXRpb24sIHBFbmdpbmUsIHBDb21tYW5kKTsKKyAgICBFeGl0T25OdWxsKHBBcHBsaWNhdGlvbiwgaHIsIEVfT1VUT0ZNRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gb2JqZWN0LiIpOworCisgICAgKnBwQXBwbGljYXRpb24gPSBwQXBwbGljYXRpb247CisgICAgcEFwcGxpY2F0aW9uID0gbnVsbHB0cjsKKworTEV4aXQ6CisgICAgUmVsZWFzZU9iamVjdChwQXBwbGljYXRpb24pOworICAgIHJldHVybiBocjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWYzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICJwY2guaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1NjQxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJwcmVjb21wLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLyAKKy8vIDxzdW1tYXJ5PgorLy8gICAgUHJlY29tcGlsZWQgaGVhZGVyIGZvciBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24uCisvLyA8L3N1bW1hcnk+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8Z2RpcGx1cy5oPgorI2luY2x1ZGUgPFV4dGhlbWUuaD4KKyNpbmNsdWRlIDxtc2lxdWVyeS5oPgorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ryc2FmZS5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSAiZHV0aWwuaCIKKyNpbmNsdWRlICJtZW11dGlsLmgiCisjaW5jbHVkZSAiZGljdHV0aWwuaCIKKyNpbmNsdWRlICJkaXJ1dGlsLmgiCisjaW5jbHVkZSAiZmlsZXV0aWwuaCIKKyNpbmNsdWRlICJsb2N1dGlsLmgiCisjaW5jbHVkZSAibG9ndXRpbC5oIgorI2luY2x1ZGUgInBhdGh1dGlsLmgiCisjaW5jbHVkZSAicmVzcnV0aWwuaCIKKyNpbmNsdWRlICJzaGVsdXRpbC5oIgorI2luY2x1ZGUgInN0cnV0aWwuaCIKKyNpbmNsdWRlICJ0aG11dGlsLmgiCisjaW5jbHVkZSAidXJpdXRpbC5oIgorI2luY2x1ZGUgInhtbHV0aWwuaCIKKworI2luY2x1ZGUgIklCb290c3RyYXBwZXJFbmdpbmUuaCIKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uaCIKKworI2luY2x1ZGUgIkJhbEJhc2VCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5oIgorI2luY2x1ZGUgImJhbGluZm8uaCIKKyNpbmNsdWRlICJiYWxjb25kaXRpb24uaCIKKworSFJFU1VMVCBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbigKKyAgICBfX2luIEhNT0RVTEUgaE1vZHVsZSwKKyAgICBfX2luIEJPT0wgZlByZXJlcSwKKyAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgIF9faW4gY29uc3QgQk9PVFNUUkFQUEVSX0NPTU1BTkQqIHBDb21tYW5kLAorICAgIF9fb3V0IElCb290c3RyYXBwZXJBcHBsaWNhdGlvbioqIHBwQXBwbGljYXRpb24KKyk7CisKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQkFGdW5jdGlvbi5oIgorCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlNDVhZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmNwcApAQCAtMCwwICsxLDc2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEuY3BwIiBjb21wYW55PSJPdXRlcmN1cnZlIEZvdW5kYXRpb24iPgorLy8gICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKy8vICAgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNaWNyb3NvZnQgUmVjaXByb2NhbCBMaWNlbnNlIChNUy1STCkuCisvLyAgIFRoZSBsaWNlbnNlIGFuZCBmdXJ0aGVyIGNvcHlyaWdodCB0ZXh0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorLy8gICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIDwvY29weXJpZ2h0PgorLy8KKy8vIDxzdW1tYXJ5PgorLy8gU2V0dXAgY2hhaW5lci9ib290c3RyYXBwZXIgc3RhbmRhcmQgVUkgZm9yIFdpWCB0b29sc2V0LgorLy8gPC9zdW1tYXJ5PgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJwY2guaCIKKworc3RhdGljIEhJTlNUQU5DRSB2aEluc3RhbmNlID0gTlVMTDsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWluKAorICAgIElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsCisgICAgSU4gRFdPUkQgZHdSZWFzb24sCisgICAgSU4gTFBWT0lEIC8qIHB2UmVzZXJ2ZWQgKi8KKyAgICApCit7CisgICAgc3dpdGNoKGR3UmVhc29uKQorICAgIHsKKyAgICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKKyAgICAgICAgOjpEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzKGhJbnN0YW5jZSk7CisgICAgICAgIHZoSW5zdGFuY2UgPSBoSW5zdGFuY2U7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHZoSW5zdGFuY2UgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitleHRlcm4gIkMiIEhSRVNVTFQgV0lOQVBJIEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uQ3JlYXRlKAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgQmFsSW5pdGlhbGl6ZShwRW5naW5lKTsKKworICAgIGhyID0gQ3JlYXRlQm9vdHN0cmFwcGVyQXBwbGljYXRpb24odmhJbnN0YW5jZSwgRkFMU0UsIFNfT0ssIHBFbmdpbmUsIHBDb21tYW5kLCBwcEFwcGxpY2F0aW9uKTsKKyAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBib290c3RyYXBwZXIgYXBwbGljYXRpb24gaW50ZXJmYWNlLiIpOworCitMRXhpdDoKKyAgICByZXR1cm4gaHI7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreworICAgIEJhbFVuaW5pdGlhbGl6ZSgpOworfQorCisKK2V4dGVybiAiQyIgSFJFU1VMVCBXSU5BUEkgTWJhUHJlcmVxQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUoCisgICAgX19pbiBIUkVTVUxUIGhySG9zdEluaXRpYWxpemF0aW9uLAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreyB9CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliM2ZhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmRlZgpAQCAtMCwwICsxLDE4IEBACis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyA8Y29weXJpZ2h0IGZpbGU9IndpeHN0ZGJhLmRlZiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKzsgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKzsgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKzsgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKzsgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKzsgPC9jb3B5cmlnaHQ+Cis7IAorOyA8c3VtbWFyeT4KKzsgICAgV2lYIFN0YW5kYXJkIEJvb3RzdHJhcHBlciBBcHBsaWNhdGlvbiBETEwgZW50cnkgcG9pbnRzLgorOyA8L3N1bW1hcnk+Cis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFWFBPUlRTCisgICAgQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUKKyAgICBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3kKKyAgICBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkNyZWF0ZQorICAgIE1iYVByZXJlcUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNDNmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5zbG4KQEAgLTAsMCArMSwyMiBAQAor77u/CitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMTMKK1Zpc3VhbFN0dWRpb1ZlcnNpb24gPSAxMi4wLjMwNTAxLjAKK01pbmltdW1WaXN1YWxTdHVkaW9WZXJzaW9uID0gMTAuMC40MDIxOS4xCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmJhIiwgInB5dGhvbmJhLnZjeHByb2oiLCAiezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnZjeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkODMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCkBAIC0wLDAgKzEsNjkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEudmN4cHJvaiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKyAgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKyAgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKyAgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKyAgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgPC9jb3B5cmlnaHQ+CistLT4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxNCknICE9ICcnIj52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTIpJyAhPSAnJyI+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQcm9qZWN0R3VpZD57N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfTwvUHJvamVjdEd1aWQ+CisgICAgPFRhcmdldE5hbWU+UHl0aG9uQkE8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlx3aXgucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxJbnREaXI+JChQcm9qZWN0RGlyKS4uXC4uXG9ialwkKENvbmZpZ3VyYXRpb24pX0Jvb3RzdHJhcFw8L0ludERpcj4KKyAgICA8T3V0RGlyPiQoSW50RGlyKTwvT3V0RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU1RESU9fTEVHQUNZX1dJREVfU1BFQ0lGSUVSUz0xOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoV2l4SW5zdGFsbFBhdGgpc2RrXGluYzwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wY2guaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2dkaXBsdXMubGliO21zaW1nMzIubGliO3NobHdhcGkubGliO3dpbmluZXQubGliO2R1dGlsLmxpYjtiYWx1dGlsLmxpYjt2ZXJzaW9uLmxpYjt1eHRoZW1lLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAndjE0MCciPiQoV2l4SW5zdGFsbFBhdGgpc2RrXHZzMjAxNVxsaWJceDg2PC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAndjEyMCciPiQoV2l4SW5zdGFsbFBhdGgpc2RrXHZzMjAxM1xsaWJceDg2PC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPnB5dGhvbmJhLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nRGVidWcnIj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJweXRob25iYS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwY2guY3BwIj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InBjaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVzb3VyY2UuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0icHl0aG9uYmEuZGVmIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9yZXNvdXJjZS5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2MwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaApAQCAtMCwwICsxLDI1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0icmVzb3VyY2UuaCIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKy8vICAgQ29weXJpZ2h0IChjKSAyMDA0LCBPdXRlcmN1cnZlIEZvdW5kYXRpb24uCisvLyAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorLy8gICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKy8vICAgTElDRU5TRS5UWFQgYXQgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24uCisvLyA8L2NvcHlyaWdodD4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvL3t7Tk9fREVQRU5ERU5DSUVTfX0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCisvLworI2RlZmluZSBJRENfU1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCisKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEwMgorI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMworI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWI2MjllCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnRhcmdldHMgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjN2U0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzCkBAIC0wLDAgKzEsMTAyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyIgVHJlYXRBc0xvY2FsUHJvcGVydHk9IkRvd25sb2FkVXJsIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0VHlwZT5CdW5kbGU8L091dHB1dFR5cGU+CisgICAgICAgIAorICAgICAgICA8Qm9vdHN0cmFwQ29uZmlndXJhdGlvbiBDb25kaXRpb249IickKEJvb3RzdHJhcENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQm9vdHN0cmFwQ29uZmlndXJhdGlvbj4KKyAgICAgICAgPExpbmtlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4xMTMyOzExMzU7MTE0MDwvTGlua2VyU3VwcHJlc3NTcGVjaWZpY1dhcm5pbmdzPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiQoQnVpbGRGb3JSZWxlYXNlKSI+JChPdXRwdXROYW1lKS0kKFB5dGhvblZlcnNpb24pPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiEkKEJ1aWxkRm9yUmVsZWFzZSkiPiQoT3V0cHV0TmFtZSktJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcikuJChSZXZpc2lvbk51bWJlcik8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXROYW1lIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPiQoT3V0cHV0TmFtZSktYW1kNjQ8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXROYW1lIENvbmRpdGlvbj0iJyQoT3V0cHV0U3VmZml4KScgIT0gJyciPiQoT3V0cHV0TmFtZSktJChPdXRwdXRTdWZmaXgpPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj4kKE91dHB1dE5hbWUpLWQ8L091dHB1dE5hbWU+CisgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSk8L1RhcmdldE5hbWU+CisKKyAgICAgICAgPE91dHB1dFBhdGg+JChPdXRwdXRQYXRoKWVuLXVzXDwvT3V0cHV0UGF0aD4KKyAgICAgICAgPE91dERpcj4kKE91dHB1dFBhdGgpPC9PdXREaXI+CisgICAgICAgIAorICAgICAgICA8RG93bmxvYWRVcmwgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybCknID09ICcnIGFuZCAnJChEb3dubG9hZFVybEJhc2UpJyAhPSAnJyI+JChEb3dubG9hZFVybEJhc2UuVHJpbUVuZChgL2ApKS8kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKS8kKEFyY2hOYW1lKSQoUmVsZWFzZUxldmVsTmFtZSkvPC9Eb3dubG9hZFVybD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKERvd25sb2FkVXJsKScgIT0gJyciPiQoRGVmaW5lQ29uc3RhbnRzKTtEb3dubG9hZFVybD0kKERvd25sb2FkVXJsKXsyfTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJyQoRG93bmxvYWRVcmwpJyA9PSAnJyI+JChEZWZpbmVDb25zdGFudHMpO0Rvd25sb2FkVXJsPXsyfTwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8V2l4RXh0ZW5zaW9uIEluY2x1ZGU9IldpeFV0aWxFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeFV0aWxFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4VXRpbEV4dGVuc2lvbjwvTmFtZT4KKyAgICAgICAgPC9XaXhFeHRlbnNpb24+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4RGVwZW5kZW5jeUV4dGVuc2lvbiI+CisgICAgICAgICAgICA8SGludFBhdGg+V2l4RGVwZW5kZW5jeUV4dGVuc2lvbjwvSGludFBhdGg+CisgICAgICAgICAgICA8TmFtZT5XaXhEZXBlbmRlbmN5RXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICAgICAgPFdpeEV4dGVuc2lvbiBJbmNsdWRlPSJXaXhCYWxFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeEJhbEV4dGVuc2lvbjwvSGludFBhdGg+CisgICAgICAgICAgICA8TmFtZT5XaXhCYWxFeHRlbnNpb248L05hbWU+CisgICAgICAgIDwvV2l4RXh0ZW5zaW9uPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImJ1bmRsZS53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InBhY2thZ2Vncm91cHNcKi53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbnRlbnQgSW5jbHVkZT0iRGVmYXVsdC50aG0iIC8+CisgICAgICAgIDxDb250ZW50IEluY2x1ZGU9IkRlZmF1bHQud3hsIiAvPgorICAgICAgICA8Q29udGVudCBJbmNsdWRlPSJTaWRlQmFyLnBuZyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJidW5kbGUud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKl9lbi1VUy53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoT3V0cHV0UGF0aCkiPgorICAgICAgICAgICAgPEJpbmROYW1lPjwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgICAgIDxQYWNrYWdlPgorICAgICAgICAgICAgPFByb3BlcnRpZXM+QnVpbGRGb3JSZWxlYXNlPSQoQnVpbGRGb3JSZWxlYXNlKTwvUHJvcGVydGllcz4KKyAgICAgICAgPC9QYWNrYWdlPgorICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxjb3JlXGNvcmUqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXGNydFxjcnQqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXGRldlxkZXYqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXGRvY1xkb2MqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXGV4ZVxleGUqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXGxpYlxsaWIqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHBhdGhccGF0aCoud2l4cHJvaiIgLz4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5ccGlwXHBpcCoud2l4cHJvaiIgLz4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5cdGNsdGtcdGNsdGsqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRlc3RcdGVzdCoud2l4cHJvaiIgLz4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5cdG9vbHNcdG9vbHMqLndpeHByb2oiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZFBhY2thZ2VzIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCIgQ29uZGl0aW9uPSInJChSZWJ1aWxkQWxsKScgIT0gJ2ZhbHNlJyI+CisgICAgICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFBhY2thZ2UpIiBCdWlsZEluUGFyYWxsZWw9InRydWUiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZExhdW5jaGVyIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCIgQ29uZGl0aW9uPSInJChSZWJ1aWxkQWxsKScgIT0gJ2ZhbHNlJyI+CisgICAgICAgIDwhLS0gQnVpbGQgdGhlIGxhdW5jaGVyIE1TSSB1c2luZyBFeGVjIHJhdGhlciB0aGFuIE1TQnVpbGQgLS0+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9J21zYnVpbGQgLi5cbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiAvcDpQbGF0Zm9ybT14ODYgL3A6T3V0cHV0UGF0aD0iJChCdWlsZFBhdGguVHJpbUVuZChgXGApKSIgL3A6T3V0cHV0U3VmZml4PSQoUGxhdGZvcm0pIC9wOkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSknCisgICAgICAgICAgICAgIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZEJvb3RzdHJhcEFwcGxpY2F0aW9uIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCI+CisgICAgICAgIDxNZXNzYWdlIFRleHQ9IkJ1aWxkaW5nIGJvb3RzdHJhcCBhcHAiIEltcG9ydGFuY2U9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8TVNCdWlsZCBQcm9qZWN0cz0iYm9vdHN0cmFwXHB5dGhvbmJhLnZjeHByb2oiCisgICAgICAgICAgICAgICAgIFRhcmdldHM9IkJ1aWxkO0dldE5hdGl2ZVRhcmdldFBhdGgiCisgICAgICAgICAgICAgICAgIFVzZVJlc3VsdHNDYWNoZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgUHJvcGVydGllcz0iQ29uZmlndXJhdGlvbj0kKEJvb3RzdHJhcENvbmZpZ3VyYXRpb24pO1BsYXRmb3JtPVdpbjMyIj4KKyAgICAgICAgICAgIDxPdXRwdXQgVGFza1BhcmFtZXRlcj0iVGFyZ2V0T3V0cHV0cyIgUHJvcGVydHlOYW1lPSJCb290c3RyYXBBcHBQYXRoIiAvPgorICAgICAgICA8L01TQnVpbGQ+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0Jvb3RzdHJhcEFwcD0kKEJvb3RzdHJhcEFwcFBhdGgpPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODRlMGRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hsCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgIDxTdHJpbmcgSWQ9IkNSVERlc2NyaXB0aW9uIj5DIFJ1bnRpbWUgVXBkYXRlIChLQjI5OTkyMjYpPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkNvbXBpbGVBbGxEZXNjcmlwdGlvbiI+UHJlY29tcGlsaW5nIHN0YW5kYXJkIGxpYnJhcnk8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZTg3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKQEAgLTAsMCArMSw4MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIgorICAgICB4bWxuczpiYWw9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4L0JhbEV4dGVuc2lvbiI+CisgIDxCdW5kbGUgTmFtZT0iIShsb2MuRnVsbFByb2R1Y3ROYW1lKSIKKyAgICAgICAgICBVcGdyYWRlQ29kZT0iJCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSIKKyAgICAgICAgICBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIKKyAgICAgICAgICBJY29uU291cmNlRmlsZT0iYnVuZGxlLmljbyIKKyAgICAgICAgICBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiCisgICAgICAgICAgQWJvdXRVcmw9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy8iCisgICAgICAgICAgRGlzYWJsZU1vZGlmeT0iYnV0dG9uIgorICAgICAgICAgIENvbXByZXNzZWQ9Im5vIj4KKyAgICA8Qm9vdHN0cmFwcGVyQXBwbGljYXRpb24gSWQ9IlB5dGhvbkJBIiBTb3VyY2VGaWxlPSIkKHZhci5Cb290c3RyYXBBcHApIj4KKyAgICAgICAgPFBheWxvYWQgQ29tcHJlc3NlZD0neWVzJyBTb3VyY2VGaWxlPSdEZWZhdWx0LnRobScgLz4KKyAgICAgICAgPFBheWxvYWQgQ29tcHJlc3NlZD0neWVzJyBTb3VyY2VGaWxlPSdEZWZhdWx0Lnd4bCcgLz4KKyAgICAgICAgPFBheWxvYWQgQ29tcHJlc3NlZD0neWVzJyBTb3VyY2VGaWxlPSdTaWRlQmFyLnBuZycgLz4KKyAgICA8L0Jvb3RzdHJhcHBlckFwcGxpY2F0aW9uPgorCisgICAgPCEtLSBNYXkgYmUgc2V0IHRvICJSZW1vdmluZyIgb3IgIlJlcGFpcmluZyIgLS0+CisgICAgPFZhcmlhYmxlIE5hbWU9IkFjdGlvbkxpa2VJbnN0YWxsaW5nIiBWYWx1ZT0iSW5zdGFsbGluZyIgLz4KKyAgICA8IS0tIE1heSBiZSBzZXQgdG8gIlVuaW5zdGFsbGF0aW9uIiBvciAiUmVwYWlyIiAtLT4KKyAgICA8VmFyaWFibGUgTmFtZT0iQWN0aW9uTGlrZUluc3RhbGxhdGlvbiIgVmFsdWU9IlNldHVwIiAvPgorCisgICAgPFZhcmlhYmxlIE5hbWU9IlNob3J0VmVyc2lvbiIgVmFsdWU9IiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikuJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iU2hvcnRWZXJzaW9uTm9Eb3QiIFZhbHVlPSIkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJJbnN0YWxsQWxsVXNlcnMiIFZhbHVlPSIwIiBQZXJzaXN0ZWQ9InllcyIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpciIgVmFsdWU9IiIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDw/aWYgJCh2YXIuUGxhdGZvcm0pfj0ieDY0IiA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIFZhbHVlPSJbUHJvZ3JhbUZpbGVzNjRGb2xkZXJdUHl0aG9uIFtTaG9ydFZlcnNpb25dIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8P2Vsc2UgPz4KKyAgICA8VmFyaWFibGUgTmFtZT0iRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiBWYWx1ZT0iW1Byb2dyYW1GaWxlc0ZvbGRlcl1QeXRob24gW1Nob3J0VmVyc2lvbl0iIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDw/ZW5kaWYgPz4KKyAgICA8VmFyaWFibGUgTmFtZT0iRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpciIgVmFsdWU9IltMb2NhbEFwcERhdGFGb2xkZXJdUHJvZ3JhbXNcUHl0aG9uXFB5dGhvbltTaG9ydFZlcnNpb25Ob0RvdF0kKHZhci5TdWZmaXgzMikiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDwhLS0KKyAgICBBbiBlbXB0eSBzdHJpbmcgd2lsbCB1c2UgdGhlIG90aGVyIGRlZmF1bHRzIGJhc2VkIG9uIEluc3RhbGxBbGxVc2VycworICAgIChhbmQgc3dpdGNoIGR5bmFtaWNhbGx5IGluIHRoZSBVSSkuIFRvIGdldCB0aGUgb2xkIGRlZmF1bHQsIHBhc3MKKyAgICB0aGlzIHByb3BlcnR5IG9uIHRoZSBjb21tYW5kIGxpbmU6CisgICAgICAgIERlZmF1bHRDdXN0b21UYXJnZXREaXI9W1dpbmRvd3NWb2x1bWVdUHl0aG9uW1Nob3J0VmVyc2lvbk5vRG90XQorICAgIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0Q3VzdG9tVGFyZ2V0RGlyIiBWYWx1ZT0iIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJJbnN0YWxsQWxsVXNlcnNTdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpclN0YXRlIiBWYWx1ZT0iZW5hYmxlZCIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ3VzdG9tQnJvd3NlQnV0dG9uU3RhdGUiIFZhbHVlPSJlbmFibGVkIiAvPgorCisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfY29yZSIgVmFsdWU9IjEiIFBlcnNpc3RlZD0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2V4ZSIgVmFsdWU9IjEiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9kZXYiIFZhbHVlPSIxIiBQZXJzaXN0ZWQ9InllcyIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfbGliIiBWYWx1ZT0iMSIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3Rlc3QiIFZhbHVlPSIxIiBQZXJzaXN0ZWQ9InllcyIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfZG9jIiBWYWx1ZT0iMSIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3Rvb2xzIiBWYWx1ZT0iMSIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3RjbHRrIiBWYWx1ZT0iMSIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3BpcCIgVmFsdWU9IjEiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgVmFsdWU9IjEiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9zeW1ib2xzIiBWYWx1ZT0iMCIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2RlYnVnIiBWYWx1ZT0iMCIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxWYXJpYWJsZSBOYW1lPSJBc3NvY2lhdGVGaWxlcyIgVmFsdWU9IjEiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iU2hvcnRjdXRzIiBWYWx1ZT0iMSIgUGVyc2lzdGVkPSJ5ZXMiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJQcmVwZW5kUGF0aCIgVmFsdWU9IjAiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ29tcGlsZUFsbCIgVmFsdWU9IjAiIFBlcnNpc3RlZD0ieWVzIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICAKKyAgICA8VmFyaWFibGUgTmFtZT0iU2ltcGxlSW5zdGFsbCIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxDaGFpbiBQYXJhbGxlbENhY2hlPSJ5ZXMiPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0IiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY29yZSIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImRldiIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImV4ZSIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImxpYiIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InRlc3QiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJkb2MiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJ0b29scyIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InRjbHRrIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0ibGF1bmNoZXIiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJwb3N0aW5zdGFsbCIgLz4KKyAgICA8L0NoYWluPgorICA8L0J1bmRsZT4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9mdWxsLndpeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJkZDhlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9mdWxsLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezNFMjA0QURELTIzOEQtNEQxMC04NTJDLTRGODU5MzI1QzgzOX08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+ZnVsbDwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc01TST15ZXM7CisgICAgICAgICAgICBDb21wcmVzc1BEQj15ZXM7CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPXllczsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NvcmUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NvcmUud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZjZiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMKQEAgLTAsMCArMSw1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNvcmUiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jcnQud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA3OTcwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jcnQud3hzCkBAIC0wLDAgKzEsNjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJjcnQiPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMCIgLz4KKyAgICAgICAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNydF8xNC4wX3Y2LjEiIC8+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4yIiAvPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMyIgLz4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNydF9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNydC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkiPgorICAgICAgICAgICAgICAgIDwhLS0gVEFSR0VURElSIHdpbGwgYmUgaWdub3JlZCwgYnV0IG11c3Qgc3RpbGwgYmUgcHJvdmlkZWQgLS0+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY3J0X0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNydC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDw/Zm9yZWFjaCB2ZXIgaW4gdjYuMDt2Ni4xO3Y2LjI7djYuMyA/PgorICAgIDw/aWYgIiQodmFyLnZlcikiID0gInY2LjAiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTYuMCA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4xIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj02LjEgPz4KKyAgICA8P2Vsc2VpZiAiJCh2YXIudmVyKSIgPSAidjYuMiIgPz4KKyAgICA8P2RlZmluZSBtc3V2ZXI9OC1SVCA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4zIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj04LjEgPz4KKyAgICA8P2Vsc2UgPz4KKyAgICA8P2Vycm9yIHVua25vd24gdmVyc2lvbiAkKHZhci52ZXIpID8+CisgICAgPD9lbmRpZiA/PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpIj4KKyAgICAgICAgICAgIDxNc3VQYWNrYWdlIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpX3g4NiIKKyAgICAgICAgICAgICAgICAgICAgICAgIEtCPSIyOTk5MjI2IgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iIShiaW5kcGF0aC5yZWRpc3QpXFdpbmRvd3MkKHZhci5tc3V2ZXIpLUtCMjk5OTIyNi14ODYubXN1IgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IENSVEluc3RhbGxlZCBhbmQgVmVyc2lvbk5UID0gJCh2YXIudmVyKSBhbmQgbm90IFZlcnNpb25OVDY0IGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIiAvPgorCisgICAgICAgICAgICA8TXN1UGFja2FnZSBJZD0iY3J0XzE0LjBfJCh2YXIudmVyKV94NjQiCisgICAgICAgICAgICAgICAgICAgICAgICBLQj0iMjk5OTIyNiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9IiEoYmluZHBhdGgucmVkaXN0KVxXaW5kb3dzJCh2YXIubXN1dmVyKS1LQjI5OTkyMjYteDY0Lm1zdSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuQ1JURGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBDUlRJbnN0YWxsZWQgYW5kIFZlcnNpb25OVDY0ID0gJCh2YXIudmVyKSBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDw/dW5kZWYgbXN1dmVyID8+CisgICAgPD9lbmRmb3JlYWNoID8+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZGV2Lnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZWEyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZGV2Lnd4cwpAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0iZGV2Ij4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkZXYubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZGV2X2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBJbmNsdWRlX2RlYnVnIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZGV2Lm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9kZXYiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkZXZfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJkZXZfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9kZXYgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2RvYy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0M2Y0NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRvY19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRvYy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZG9jIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJkb2NfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZG9jLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9kb2MiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9leGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAzNDZkOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9leGUud3hzCkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJleGUiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGUubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGF1bmNoZXIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOTE3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvbGF1bmNoZXIud3hzCkBAIC0wLDAgKzEsMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJsYXVuY2hlciI+CisgICAgICAgICAgICA8IS0tIFRoZSBBbGwgVXNlcnMgbGF1bmNoZXIgaXMgYWx3YXlzIHRoZSAzMi1iaXQgdmVyc2lvbiAtLT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsYXVuY2hlcl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxhdW5jaGVyLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9sYXVuY2hlciIgLz4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxhdW5jaGVyX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxhdW5jaGVyLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9sYXVuY2hlciIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2xpYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhOTdmMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzCkBAIC0wLDAgKzEsNTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJsaWIiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfbGliIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0ibGliX0FsbFVzZXJzX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9zeW1ib2xzIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0ibGliX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWVfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGliX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfbGliIGFuZCBJbmNsdWRlX3N5bWJvbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9wb3N0aW5zdGFsbC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMGNjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJwb3N0aW5zdGFsbCI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGlwX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGlwLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9waXAiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJwaXBfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGlwLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9waXAiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InBhdGhfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJwYXRoLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgUHJlcGVuZFBhdGgiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJwYXRoX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBhdGgubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBQcmVwZW5kUGF0aCI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2RlZmluZSBDb21waWxlQWxsQ29tbWFuZD0tJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtV2kgIltUYXJnZXREaXJdXExpYlxjb21waWxlYWxsLnB5IiAtZiAteCAiYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xweTJffGxpYjJ0bzNcXHRlc3RzfHZlbnZcXHNjcmlwdHMiICJbVGFyZ2V0RGlyXVxMaWIiPz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icHkuZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNvbXBpbGVBbGxEZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29tbWFuZD0nJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUGVybWFuZW50PSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIENvbXBpbGVBbGwiIC8+CisgICAgICAgICAgICA8RXhlUGFja2FnZSBJZD0iY29tcGlsZWFsbF9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSckKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSckKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90Y2x0ay53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGNsdGsud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZTM5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGNsdGsud3hzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJ0Y2x0ayI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0ay5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0a19wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBJbmNsdWRlX3N5bWJvbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9kZWJ1ZyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGsubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIEluY2x1ZGVfc3ltYm9scyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9kZWJ1ZyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rlc3Qud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rlc3Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NGU4ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGVzdC53eHMKQEAgLTAsMCArMSw1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InRlc3QiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0Lm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0X3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgSW5jbHVkZV9zeW1ib2xzIj4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3RfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBJbmNsdWRlX3N5bWJvbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfZGVidWciPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90b29scy53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdG9vbHMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YWY1YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdG9vbHMud3hzCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJ0b29scyI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idG9vbHNfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0b29scy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdG9vbHMiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRvb2xzX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRvb2xzLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90b29scyI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNlbG9jYWwud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZWxvY2FsLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzZGVlNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZWxvY2FsLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0ZDRDQzQUM5LTk2OUYtNDlBMS04QUM1LUVEQzI3NTk5RDFFQn08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+PC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPXllczsKKyAgICAgICAgICAgIENvbXByZXNzUERCPW5vOworICAgICAgICAgICAgQ29tcHJlc3NNU0lfRD1ubworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2V3ZWIud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZXdlYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MGM3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2V3ZWIud2l4cHJvagpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NzFDREUyMTMtQ0IzOS00QkQ5LUI4OUQtQkJCODc4Njg5MTQ0fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD53ZWJpbnN0YWxsPC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPW5vOworICAgICAgICAgICAgQ29tcHJlc3NQREI9bm87CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPW5vCisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvc25hcHNob3Qud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvc25hcHNob3Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmU5NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9zbmFwc2hvdC53aXhwcm9qCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns4QTRBMTE2Mi00QkY5LTRGRjYtOUE5OC0zMTVGMDFFNDQ5MzJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc01TST1ubzsKKyAgICAgICAgICAgIENvbXByZXNzUERCPW5vOworICAgICAgICAgICAgQ29tcHJlc3NNU0lfRD1ubzsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbi53eHMgYi9Ub29scy9tc2kvY29tbW9uLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTI5YWFiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKQEAgLTAsMCArMSwxMDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25Db3JlXCQodmFyLlNob3J0VmVyc2lvbikkKHZhci5TdWZmaXgzMikiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iVXBncmFkZVRhYmxlIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgCisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iJCh2YXIuVXBncmFkZU1pbmltdW1WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICAKKyAgICAgICAgPD9pZiAkKHZhci5VcGdyYWRlQ29kZSkhPSQodmFyLkNvcmVVcGdyYWRlQ29kZSkgPz4KKyAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLkNvcmVVcGdyYWRlQ29kZSkiPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJNSVNTSU5HX0NPUkUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09InllcyIgT25seURldGVjdD0ieWVzIiAvPgorICAgICAgICA8L1VwZ3JhZGU+CisgICAgICAgIDw/ZW5kaWYgPz4KKyAgICAgICAgCisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9Eb3duZ3JhZGUpIj5JbnN0YWxsZWQgT1IgTk9UIERPV05HUkFERTwvQ29uZGl0aW9uPgorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLkluY29ycmVjdENvcmUpIj5JbnN0YWxsZWQgT1IgTk9UIE1JU1NJTkdfQ09SRTwvQ29uZGl0aW9uPgorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vVGFyZ2V0RGlyKSI+SW5zdGFsbGVkIE9SIFRBUkdFVERJUiBPUiBTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2s8L0NvbmRpdGlvbj4KKworICAgICAgICA8SW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsSW5pdGlhbGl6ZSI+VVBHUkFERTwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KKyAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8IS0tIEluY2x1ZGUgYW4gaWNvbiBmb3IgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBkaWFsb2cgLS0+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbi5pY28iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlRBUkdFVERJUiIgTmFtZT0iU291cmNlRGlyIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiIENvbXBvbmVudEd1aWRHZW5lcmF0aW9uU2VlZD0iJCh2YXIuSW5zdGFsbERpcmVjdG9yeUd1aWRTZWVkKSIgLz4KKyAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8IS0tIFRvcC1sZXZlbCBkaXJlY3RvcmllcyAtLT4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJEb2MiIE5hbWU9IkRvYyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJpbmNsdWRlIiBOYW1lPSJpbmNsdWRlIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxpYiIgTmFtZT0iTGliIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9ImxpYnMiIE5hbWU9ImxpYnMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iU2NyaXB0cyIgTmFtZT0iU2NyaXB0cyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJ0Y2wiIE5hbWU9InRjbCIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJUb29scyIgTmFtZT0iVG9vbHMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPCEtLSBTdGFydCBNZW51IGZvbGRlciAtLT4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IlRBUkdFVERJUiI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJQcm9ncmFtTWVudUZvbGRlciI+CisgICAgICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTWVudURpciIgTmFtZT0iIShsb2MuUHJvZHVjdE5hbWUpIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQwMzUyNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkxDSUQiPjEwMzM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJDdWx0dXJlIj5lbi11czwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlByb2R1Y3ROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkZ1bGxQcm9kdWN0TmFtZSI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iVGl0bGUiPlB5dGhvbiB7e0xvbmdWZXJzaW9ufX0gIShsb2MuRGVzY3JpcHRvcikgKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0aW9uIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJUaXRsZVBkYiI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gc3ltYm9scyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdGlvblBkYiI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gc3ltYm9scyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJUaXRsZV9kIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSBkZWJ1Zyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdGlvbl9kIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSBkZWJ1Zyk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJNYW51ZmFjdHVyZXIiPlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9Eb3duZ3JhZGUiPkEgbmV3ZXIgdmVyc2lvbiBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgaXMgYWxyZWFkeSBpbnN0YWxsZWQuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iSW5jb3JyZWN0Q29yZSI+QW4gaW5jb3JyZWN0IHZlcnNpb24gb2YgYSBwcmVyZXF1aXNpdGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSB1bmluc3RhbGwgYW55IG90aGVyIHZlcnNpb25zIG9mICEobG9jLlByb2R1Y3ROYW1lKSBhbmQgdHJ5IGluc3RhbGxpbmcgdGhpcyBhZ2Fpbi48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOb1RhcmdldERpciI+VGhlIFRBUkdFVERJUiB2YXJpYWJsZSBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gaW52b2tpbmcgdGhpcyBpbnN0YWxsZXIuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmUud2l4cHJvaiBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGU4YmFiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZS53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsxQjQ1MDJENS1CNjI3LTRGNTAtQUJFQS00Q0M1QThFODgyNjV9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5jb3JlPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmUud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0ZmJkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImNvcmVfZGxsIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMjk2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX2Qud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RDM2NzdEQ0YtMDk4QS00Mzk4LTlGQTUtOEU3NEFDMzdFMERGfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y29yZV9kPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9kLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyMjExNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iY29yZV9kbGxfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9lbi1VUy53eGwgYi9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTc3NDcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5Db3JlIEludGVycHJldGVyPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5jb3JlPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1ZTE0NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZmlsZXMud3hzCkBAIC0wLDAgKzEsMzEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9kbGwiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX3N0YWJsZS5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbl9zdGFibGUuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24uZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24uZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKS5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImNvcmVfc3ltYm9scyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24ucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24ucGRiIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKS5wZGIiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImNvcmVfZGxsX2QiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX3N0YWJsZV9kLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX3N0YWJsZV9kLmRsbCIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKV9kLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fZC5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbl9kLmRsbCIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcilfZC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX2QucGRiIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKV9kLnBkYiIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzg4Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RTk4RTc1MzktNjRFNy00RENFLUFBQ0QtMDFFM0FERTQwRUZEfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y29yZV9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImNvcmVfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWE1NThkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iU3ltYm9scyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVQZGIpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25QZGIpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iY29yZV9zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3J0L2NydC53aXhwcm9qIGIvVG9vbHMvbXNpL2NydC9jcnQud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTI5NWJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NydC9jcnQud2l4cHJvagpAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OTFDOTkyOTgtOEUyRS00NDIyLUE1QUYtQ0M0RkZGOUE1OEQzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y3J0PC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgICAgICA8U3VwcHJlc3NJY2VzPklDRTcxPC9TdXBwcmVzc0ljZXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImNydC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImNydF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3J0L2NydC53eHMgYi9Ub29scy9tc2kvY3J0L2NydC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxMDA5NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jcnQvY3J0Lnd4cwpAQCAtMCwwICsxLDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PXg2NCA/PgorICAgICAgICA8P2RlZmluZSBEaXJOYW1lPVN5c3RlbTY0Pz4KKyAgICAgICAgPD9lbHNlID8+CisgICAgICAgIDw/ZGVmaW5lIERpck5hbWU9U3lzdGVtPz4KKyAgICAgICAgPD9lbmRpZiA/PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJUQVJHRVRESVIiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iJCh2YXIuRGlyTmFtZSlGb2xkZXIiIE5hbWU9IiQodmFyLkRpck5hbWUpIj4KKyAgICAgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJTeXN0ZW1JbnN0YWxsRGlyZWN0b3J5IiBOYW1lPSIuIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgICAgICA8P3VuZGVmIERpck5hbWUgPz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iY3J0X2ZpbGVzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CisKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jcnQvY3J0X2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9jcnQvY3J0X2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUzYzhhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NydC9jcnRfZW4tVVMud3hsCkBAIC0wLDAgKzEsNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+QyBSdW50aW1lPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5jcnQ8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NydC9jcnRfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2NydC9jcnRfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZjdkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY3J0L2NydF9maWxlcy53eHMKQEAgLTAsMCArMSwyMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PXg2NCA/PgorICAgICAgICA8P2RlZmluZSB2Y3J1bnRpbWUxNDBHdWlkPXtCMzMyNThGRC03NTBDLTNCNDItOEJFNC01MzVCNDhFOTdEQjR9Pz4KKyAgICAgICAgPD9lbHNlID8+CisgICAgICAgIDw/ZGVmaW5lIHZjcnVudGltZTE0MEd1aWQ9e0U4RTM5RDNCLTRGMzUtMzZEOC1CODkyLTRCMjgzMzZGRTA0MX0/PgorICAgICAgICA8P2VuZGlmID8+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY3J0X2ZpbGVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InZjcnVudGltZTE0MC5kbGxfTE0iIERpcmVjdG9yeT0iU3lzdGVtSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIudmNydW50aW1lMTQwR3VpZCkiIFNoYXJlZD0ieWVzIiBTaGFyZWREbGxSZWZDb3VudD0ieWVzIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPkFMTFVTRVJTPTE8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0idmNydW50aW1lMTQwLmRsbF9MTSIgU291cmNlPSIhKGJpbmRwYXRoLmNydClcdmNydW50aW1lMTQwLmRsbCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idmNydW50aW1lMTQwLmRsbF9DVSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InZjcnVudGltZTE0MC5kbGxfQ1UiIFNvdXJjZT0iIShiaW5kcGF0aC5jcnQpXHZjcnVudGltZTE0MC5kbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3J0L2NydGxpY2Vuc2UudHh0IGIvVG9vbHMvbXNpL2NydC9jcnRsaWNlbnNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjBmMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NydC9jcnRsaWNlbnNlLnR4dApAQCAtMCwwICsxLDQ3IEBACisKKworQWRkaXRpb25hbCBDb25kaXRpb25zIGZvciB0aGlzIFdpbmRvd3MgYmluYXJ5IGJ1aWxkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGFuZCB1c2VzIE1pY3Jvc29mdCBEaXN0cmlidXRhYmxlIENvZGUsCitjb3B5cmlnaHRlZCBieSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIFRoZSBNaWNyb3NvZnQgRGlzdHJpYnV0YWJsZSBDb2RlCitpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGZpbGVzOgorCithcHBjcnQxNDAuZGxsCitkZXNrdG9wY3J0MTQwLmRsbAordmNydW50aW1lMTQwLmRsbAorbXN2Y3AxNDAuZGxsCitjb25jcnQxNDAuZGxsCit2Y2NvcmxpYjE0MC5kbGwKKworSWYgeW91IGZ1cnRoZXIgZGlzdHJpYnV0ZSBwcm9ncmFtcyB0aGF0IGluY2x1ZGUgdGhlIE1pY3Jvc29mdAorRGlzdHJpYnV0YWJsZSBDb2RlLCB5b3UgbXVzdCBjb21wbHkgd2l0aCB0aGUgcmVzdHJpY3Rpb25zIG9uCitkaXN0cmlidXRpb24gc3BlY2lmaWVkIGJ5IE1pY3Jvc29mdC4gSW4gcGFydGljdWxhciwgeW91IG11c3QgcmVxdWlyZQorZGlzdHJpYnV0b3JzIGFuZCBleHRlcm5hbCBlbmQgdXNlcnMgdG8gYWdyZWUgdG8gdGVybXMgdGhhdCBwcm90ZWN0IHRoZQorTWljcm9zb2Z0IERpc3RyaWJ1dGFibGUgQ29kZSBhdCBsZWFzdCBhcyBtdWNoIGFzIE1pY3Jvc29mdCdzIG93bgorcmVxdWlyZW1lbnRzIGZvciB0aGUgRGlzdHJpYnV0YWJsZSBDb2RlLiBTZWUgTWljcm9zb2Z0J3MgZG9jdW1lbnRhdGlvbgorKGluY2x1ZGVkIGluIGl0cyBkZXZlbG9wZXIgdG9vbHMgYW5kIG9uIGl0cyB3ZWJzaXRlIGF0IG1pY3Jvc29mdC5jb20pCitmb3Igc3BlY2lmaWMgZGV0YWlscy4KKworUmVkaXN0cmlidXRpb24gb2YgdGhlIFdpbmRvd3MgYmluYXJ5IGJ1aWxkIG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKK2NvbXBsaWVzIHdpdGggdGhpcyBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQgeW91IGRvIG5vdDoKKworLSBhbHRlciBhbnkgY29weXJpZ2h0LCB0cmFkZW1hcmsgb3IgcGF0ZW50IG5vdGljZSBpbiBNaWNyb3NvZnQncworRGlzdHJpYnV0YWJsZSBDb2RlOworCistIHVzZSBNaWNyb3NvZnQncyB0cmFkZW1hcmtzIGluIHlvdXIgcHJvZ3JhbXMnIG5hbWVzIG9yIGluIGEgd2F5IHRoYXQKK3N1Z2dlc3RzIHlvdXIgcHJvZ3JhbXMgY29tZSBmcm9tIG9yIGFyZSBlbmRvcnNlZCBieSBNaWNyb3NvZnQ7CisKKy0gZGlzdHJpYnV0ZSBNaWNyb3NvZnQncyBEaXN0cmlidXRhYmxlIENvZGUgdG8gcnVuIG9uIGEgcGxhdGZvcm0gb3RoZXIKK3RoYW4gTWljcm9zb2Z0IG9wZXJhdGluZyBzeXN0ZW1zLCBydW4tdGltZSB0ZWNobm9sb2dpZXMgb3IgYXBwbGljYXRpb24KK3BsYXRmb3Jtczsgb3IKKworLSBpbmNsdWRlIE1pY3Jvc29mdCBEaXN0cmlidXRhYmxlIENvZGUgaW4gbWFsaWNpb3VzLCBkZWNlcHRpdmUgb3IKK3VubGF3ZnVsIHByb2dyYW1zLgorCitUaGVzZSByZXN0cmljdGlvbnMgYXBwbHkgb25seSB0byB0aGUgTWljcm9zb2Z0IERpc3RyaWJ1dGFibGUgQ29kZSBhcworZGVmaW5lZCBhYm92ZSwgbm90IHRvIFB5dGhvbiBpdHNlbGYgb3IgYW55IHByb2dyYW1zIHJ1bm5pbmcgb24gdGhlCitQeXRob24gaW50ZXJwcmV0ZXIuIFRoZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyIGFuZAorbGlicmFyaWVzIGlzIGdvdmVybmVkIGJ5IHRoZSBQeXRob24gU29mdHdhcmUgTGljZW5zZSBpbmNsdWRlZCB3aXRoIHRoaXMKK2ZpbGUsIG9yIGJ5IG90aGVyIGxpY2Vuc2VzIGFzIG1hcmtlZC4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Nzdl90b193eHMucHkgYi9Ub29scy9tc2kvY3N2X3RvX3d4cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzVjOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Nzdl90b193eHMucHkKQEAgLTAsMCArMSwxMjcgQEAKKycnJworUHJvY2Vzc2VzIGEgQ1NWIGZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZXMgaW50byBhIFdYUyBmaWxlIHdpdGgKK2NvbXBvbmVudHMgZm9yIGVhY2ggbGlzdGVkIGZpbGUuCisKK1RoZSBDU1YgY29sdW1ucyBhcmU6CisgICAgc291cmNlIG9mIGZpbGUsIHRhcmdldCBmb3IgZmlsZSwgZ3JvdXAgbmFtZQorCitVc2FnZTo6CisgICAgcHkgdHh0X3RvX3d4cy5weSBbcGF0aCB0byBmaWxlIGxpc3QgLmNzdl0gW3BhdGggdG8gZGVzdGluYXRpb24gLnd4c10KKworVGhpcyBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIHN0cnVjdHVyZXMgd2hlcmUgc29tZSBkaXJlY3RvcmllcyBvbmx5Citjb250YWluIG90aGVyIGRpcmVjdG9yaWVzLiBNU0J1aWxkIGlzIG5vdCBhYmxlIHRvIGdlbmVyYXRlIHRoZQorRGlyZWN0b3J5IGVudHJpZXMgaW4gdGhlIFdYUyBmaWxlIGNvcnJlY3RseSwgYXMgaXQgb3BlcmF0ZXMgb24gZmlsZXMuCitQeXRob24sIGhvd2V2ZXIsIGNhbiBlYXNpbHkgZmlsbCBpbiB0aGUgZ2FwLgorJycnCisKK19fYXV0aG9yX18gPSAiU3RldmUgRG93ZXIgPHN0ZXZlLmRvd2VyQG1pY3Jvc29mdC5jb20+IgorCitpbXBvcnQgY3N2CitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbiwgemlwX2xvbmdlc3QKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUHVyZVdpbmRvd3NQYXRoCitmcm9tIHV1aWQgaW1wb3J0IHV1aWQxCisKK0lEX0NIQVJfU1VCUyA9IHsKKyAgICAnLSc6ICdfJywKKyAgICAnKyc6ICdfUCcsCit9CisKK2RlZiBtYWtlX2lkKHBhdGgpOgorICAgIHJldHVybiByZS5zdWIoCisgICAgICAgIHInW15BLVphLXowLTlfLl0nLAorICAgICAgICBsYW1iZGEgbTogSURfQ0hBUl9TVUJTLmdldChtLmdyb3VwKDApLCAnXycpLAorICAgICAgICBzdHIocGF0aCkucnN0cmlwKCcvXFwnKSwKKyAgICAgICAgZmxhZ3M9cmUuSQorICAgICkKKworRElSRUNUT1JJRVMgPSBzZXQoKQorCitkZWYgbWFpbihmaWxlX3NvdXJjZSwgaW5zdGFsbF90YXJnZXQpOgorICAgIHdpdGggb3BlbihmaWxlX3NvdXJjZSwgJ3InLCBuZXdsaW5lPScnKSBhcyBmOgorICAgICAgICBmaWxlcyA9IGxpc3QoY3N2LnJlYWRlcihmKSkKKworICAgIGFzc2VydCBsZW4oZmlsZXMpID09IGxlbihzZXQobWFrZV9pZChmWzFdKSBmb3IgZiBpbiBmaWxlcykpLCAiRHVwbGljYXRlIGZpbGUgSURzIGV4aXN0IgorCisgICAgZGlyZWN0b3JpZXMgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgY2FjaGVfZGlyZWN0b3JpZXMgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3Igc291cmNlLCB0YXJnZXQsIGdyb3VwLCBkaXNrX2lkLCBjb25kaXRpb24gaW4gZmlsZXM6CisgICAgICAgIHRhcmdldCA9IFB1cmVXaW5kb3dzUGF0aCh0YXJnZXQpCisgICAgICAgIGdyb3Vwc1tncm91cF0uYXBwZW5kKChzb3VyY2UsIHRhcmdldCwgZGlza19pZCwgY29uZGl0aW9uKSkKKworICAgICAgICBpZiB0YXJnZXQuc3VmZml4Lmxvd2VyKCkgaW4geyIucHkiLCAiLnB5dyJ9OgorICAgICAgICAgICAgY2FjaGVfZGlyZWN0b3JpZXNbZ3JvdXBdLmFkZCh0YXJnZXQucGFyZW50KQorCisgICAgICAgIGZvciBkaXJuYW1lIGluIHRhcmdldC5wYXJlbnRzOgorICAgICAgICAgICAgcGFyZW50ID0gbWFrZV9pZChkaXJuYW1lLnBhcmVudCkKKyAgICAgICAgICAgIGlmIHBhcmVudCBhbmQgcGFyZW50ICE9ICcuJzoKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcmllc1twYXJlbnRdLmFkZChkaXJuYW1lLm5hbWUpCisKKyAgICBsaW5lcyA9IFsKKyAgICAgICAgJzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPicsCisgICAgICAgICcgICAgPEZyYWdtZW50PicsCisgICAgXQorICAgIGZvciBkaXJfcGFyZW50IGluIHNvcnRlZChkaXJlY3Rvcmllcyk6CisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJ7fSI+Jy5mb3JtYXQoZGlyX3BhcmVudCkpCisgICAgICAgIGZvciBkaXJfbmFtZSBpbiBzb3J0ZWQoZGlyZWN0b3JpZXNbZGlyX3BhcmVudF0pOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJ7fV97fSIgTmFtZT0ie30iIC8+Jy5mb3JtYXQoZGlyX3BhcmVudCwgbWFrZV9pZChkaXJfbmFtZSksIGRpcl9uYW1lKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIDwvRGlyZWN0b3J5UmVmPicpCisgICAgZm9yIGRpcl9wYXJlbnQgaW4gKG1ha2VfaWQoZCkgZm9yIGdyb3VwIGluIGNhY2hlX2RpcmVjdG9yaWVzLnZhbHVlcygpIGZvciBkIGluIGdyb3VwKToKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Int9Ij4nLmZvcm1hdChkaXJfcGFyZW50KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJ7fV9fX3B5Y2FjaGVfXyIgTmFtZT0iX19weWNhY2hlX18iIC8+Jy5mb3JtYXQoZGlyX3BhcmVudCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8L0RpcmVjdG9yeVJlZj4nKQorICAgIGxpbmVzLmFwcGVuZCgnICAgIDwvRnJhZ21lbnQ+JykKKworICAgIGZvciBncm91cCBpbiBzb3J0ZWQoZ3JvdXBzKToKKyAgICAgICAgbGluZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgICcgICAgPEZyYWdtZW50PicsCisgICAgICAgICAgICAnICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9Int9Ij4nLmZvcm1hdChncm91cCksCisgICAgICAgIF0pCisgICAgICAgIGZvciBzb3VyY2UsIHRhcmdldCwgZGlza19pZCwgY29uZGl0aW9uIGluIGdyb3Vwc1tncm91cF06CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Int9IiBEaXJlY3Rvcnk9Int9IiBHdWlkPSIqIj4nLmZvcm1hdChtYWtlX2lkKHRhcmdldCksIG1ha2VfaWQodGFyZ2V0LnBhcmVudCkpKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgICAgIDxDb25kaXRpb24+e308L0NvbmRpdGlvbj4nLmZvcm1hdChjb25kaXRpb24pKQorCisgICAgICAgICAgICBpZiBkaXNrX2lkOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgICAgIDxGaWxlIElkPSJ7fSIgTmFtZT0ie30iIFNvdXJjZT0ie30iIERpc2tJZD0ie30iIC8+Jy5mb3JtYXQobWFrZV9pZCh0YXJnZXQpLCB0YXJnZXQubmFtZSwgc291cmNlLCBkaXNrX2lkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Int9IiBOYW1lPSJ7fSIgU291cmNlPSJ7fSIgLz4nLmZvcm1hdChtYWtlX2lkKHRhcmdldCksIHRhcmdldC5uYW1lLCBzb3VyY2UpKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8L0NvbXBvbmVudD4nKQorCisgICAgICAgIGNyZWF0ZV9mb2xkZXJzID0ge21ha2VfaWQocCkgKyAiX19fcHljYWNoZV9fIiBmb3IgcCBpbiBjYWNoZV9kaXJlY3Rvcmllc1tncm91cF19CisgICAgICAgIHJlbW92ZV9mb2xkZXJzID0ge21ha2VfaWQocDIpIGZvciBwMSBpbiBjYWNoZV9kaXJlY3Rvcmllc1tncm91cF0gZm9yIHAyIGluIGNoYWluKChwMSwpLCBwMS5wYXJlbnRzKX0KKyAgICAgICAgY3JlYXRlX2ZvbGRlcnMuZGlzY2FyZCgiLiIpCisgICAgICAgIHJlbW92ZV9mb2xkZXJzLmRpc2NhcmQoIi4iKQorICAgICAgICBpZiBjcmVhdGVfZm9sZGVycyBvciByZW1vdmVfZm9sZGVyczoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ie31fX3B5Y2FjaGVfX2ZvbGRlcnMiIERpcmVjdG9yeT0iVEFSR0VURElSIiBHdWlkPSJ7fSI+Jy5mb3JtYXQoZ3JvdXAsIHV1aWQxKCkpKQorICAgICAgICAgICAgbGluZXMuZXh0ZW5kKCcgICAgICAgICAgICAgICAgPENyZWF0ZUZvbGRlciBEaXJlY3Rvcnk9Int9IiAvPicuZm9ybWF0KHApIGZvciBwIGluIGNyZWF0ZV9mb2xkZXJzKQorICAgICAgICAgICAgbGluZXMuZXh0ZW5kKCcgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IlJlbW92ZV97MH1fZmlsZXMiIE5hbWU9IioiIE9uPSJ1bmluc3RhbGwiIERpcmVjdG9yeT0iezB9IiAvPicuZm9ybWF0KHApIGZvciBwIGluIGNyZWF0ZV9mb2xkZXJzKQorICAgICAgICAgICAgbGluZXMuZXh0ZW5kKCcgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX3swfV9mb2xkZXIiIE9uPSJ1bmluc3RhbGwiIERpcmVjdG9yeT0iezB9IiAvPicuZm9ybWF0KHApIGZvciBwIGluIGNyZWF0ZV9mb2xkZXJzIHwgcmVtb3ZlX2ZvbGRlcnMpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDwvQ29tcG9uZW50PicpCisKKyAgICAgICAgbGluZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgICcgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+JywKKyAgICAgICAgICAgICcgICAgPC9GcmFnbWVudD4nLAorICAgICAgICBdKQorICAgIGxpbmVzLmFwcGVuZCgnPC9XaXg+JykKKworICAgICMgQ2hlY2sgaWYgdGhlIGZpbGUgbWF0Y2hlcy4gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gdG91Y2ggaXQgc28KKyAgICAjIHRoYXQgd2UgY2FuIHNraXAgcmVidWlsZGluZy4KKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihpbnN0YWxsX3RhcmdldCwgJ3InKSBhcyBmOgorICAgICAgICAgICAgaWYgYWxsKHgucnN0cmlwKCdcclxuJykgPT0geSBmb3IgeCwgeSBpbiB6aXBfbG9uZ2VzdChmLCBsaW5lcykpOgorICAgICAgICAgICAgICAgIHByaW50KCdGaWxlIGlzIHVwIHRvIGRhdGUnKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBwYXNzCisKKyAgICB3aXRoIG9wZW4oaW5zdGFsbF90YXJnZXQsICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZWxpbmVzKGxpbmUgKyAnXG4nIGZvciBsaW5lIGluIGxpbmVzKQorICAgIHByaW50KCdXcm90ZSB7fSBsaW5lcyB0byB7fScuZm9ybWF0KGxlbihsaW5lcyksIGluc3RhbGxfdGFyZ2V0KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKHN5cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2LndpeHByb2ogYi9Ub29scy9tc2kvZGV2L2Rldi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MmI2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldi53aXhwcm9qCkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns1RjIzRjYwOC1ENzRCLTQyNTktQTBDRS04REM2NUNDN0ZFNTN9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IickKE91dHB1dE5hbWUpJyA9PSAnJyI+ZGV2PC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoQnVpbGRGb3JSZWxlYXNlKSI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBJbmNsdWRlTWluR1dMaWI9MTsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRldi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRldl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClpbmNsdWRlXCouaCI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aCk8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPmRldl9pbmNsdWRlPC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZE1pbkdXTGliIgorICAgICAgICAgICAgSW5wdXRzPSIkKEJ1aWxkUGF0aCkkKFB5RGxsTmFtZSkuZGxsIgorICAgICAgICAgICAgT3V0cHV0cz0iJChCdWlsZFBhdGgpbGliJChQeURsbE5hbWUpLmEiCisgICAgICAgICAgICBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIKKyAgICAgICAgICAgIENvbmRpdGlvbj0iJChCdWlsZEZvclJlbGVhc2UpIj4KKyAgICAgICAgPCEtLSBCdWlsZCBsaWJweXRob24jIy5hIGFzIHBhcnQgb2YgdGhpcyBwcm9qZWN0LiBUaGlzIHJlcXVpcmVzIGdlbmRlZiBhbmQgZGxsdG9vbCBvbiB0aGUgcGF0aC4gLS0+CisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPF9EbGxUb29sT3B0cz4tbSBpMzg2IC0tYXMtZmxhZ3M9LS0zMjwvX0RsbFRvb2xPcHRzPgorICAgICAgICAgICAgPF9EbGxUb29sT3B0cyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4tbSBpMzg2Ong4Ni02NDwvX0RsbFRvb2xPcHRzPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nZ2VuZGVmIC0gIiQoQnVpbGRQYXRoKSQoUHlEbGxOYW1lKS5kbGwiICZndDsgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCltaW5nd2xpYi5kZWYiJyBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSdkbGx0b29sIC0tZGxsbmFtZSAkKFB5RGxsTmFtZSkuZGxsIC0tZGVmICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpbWluZ3dsaWIuZGVmIiAtLW91dHB1dC1saWIgIiQoQnVpbGRQYXRoKWxpYiQoUHlEbGxOYW1lKS5hIiAkKF9EbGxUb29sT3B0cyknIC8+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2Lnd4cyBiL1Rvb2xzL21zaS9kZXYvZGV2Lnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGFmOWFhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXYud3hzCkBAIC0wLDAgKzEsMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9pbmNsdWRlIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfcHljb25maWciIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9saWJzIiAvPgorPD9pZmRlZiBJbmNsdWRlTWluR1dMaWIgPz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X21pbmd3IiAvPgorPD9lbmRpZiA/PgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldl9kLndpeHByb2ogYi9Ub29scy9tc2kvZGV2L2Rldl9kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiMDUzMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2X2Qud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57QzExQjQ5NDUtNzZCRC00MTM3LUIyRTMtNjQ5NDYwMTE3QTc3fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+ZGV2X2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRldl9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZGV2X2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZC53eHMgYi9Ub29scy9tc2kvZGV2L2Rldl9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2NiMmVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X2xpYnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2Rldi9kZXZfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NDZlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5EZXZlbG9wbWVudCBMaWJyYXJpZXM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmRldjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldl9maWxlcy53eHMgYi9Ub29scy9tc2kvZGV2L2Rldl9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1NGQyZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2X2ZpbGVzLnd4cwpAQCAtMCwwICsxLDQyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImRldl9weWNvbmZpZyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpbmNsdWRlX3B5Y29uZmlnLmgiIERpcmVjdG9yeT0iaW5jbHVkZSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImluY2x1ZGVfcHljb25maWcuaCIgTmFtZT0icHljb25maWcuaCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbmZpZy5oIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbGlicyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbjMubGliIiBEaXJlY3Rvcnk9ImxpYnMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJsaWJzX3B5dGhvbl9zdGFibGUubGliIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLmxpYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbi5saWIiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImxpYnNfcHl0aG9uLmxpYiIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikubGliIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbGlic19kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxpYnNfcHl0aG9uM19kLmxpYiIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19weXRob25fc3RhYmxlX2QubGliIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpX2QubGliIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbl9kLmxpYiIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19weXRob25fZC5saWIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpX2QubGliIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8P2lmZGVmIEluY2x1ZGVNaW5HV0xpYiA/PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfbWluZ3ciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGlic19saWJweXRob24uYSIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19saWJweXRob24uYSIgTmFtZT0ibGlicHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikuYSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8P2VuZGlmID8+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jLndpeHByb2ogYi9Ub29scy9tc2kvZG9jL2RvYy53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOTkyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvYy53aXhwcm9qCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnswRDYyQTJCQi01RjcxLTQ0NDctOEM4Qy05NzA4NDA3QjM2NzR9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5kb2M8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgICAgIDwhLS0gU2hvcnRjdXQgdmFsaWRhdGlvbiBpcyBub3QgbmVjZXNzYXJ5IC0tPgorICAgICAgICA8U3VwcHJlc3NJQ0VzPklDRTQzPC9TdXBwcmVzc0lDRXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RG9jRmlsZW5hbWU+cHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpJChNaWNyb1ZlcnNpb25OdW1iZXIpJChSZWxlYXNlTGV2ZWxOYW1lKS5jaG08L0RvY0ZpbGVuYW1lPgorICAgICAgICA8SW5jbHVkZURvY0ZpbGU+ZmFsc2U8L0luY2x1ZGVEb2NGaWxlPgorICAgICAgICA8SW5jbHVkZURvY0ZpbGUgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkgb3IgRXhpc3RzKCckKFB5U291cmNlUGF0aClEb2NcYnVpbGRcaHRtbGhlbHBcJChEb2NGaWxlbmFtZSknKSI+dHJ1ZTwvSW5jbHVkZURvY0ZpbGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJChJbmNsdWRlRG9jRmlsZSkiPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtEb2NGaWxlbmFtZT0kKERvY0ZpbGVuYW1lKTs8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jX2ZpbGVzLnd4cyIgQ29uZGl0aW9uPSIkKEluY2x1ZGVEb2NGaWxlKSIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZG9jX25vX2ZpbGVzLnd4cyIgQ29uZGl0aW9uPSIhJChJbmNsdWRlRG9jRmlsZSkiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2Mud3hzIGIvVG9vbHMvbXNpL2RvYy9kb2Mud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjAyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvYy53eHMKQEAgLTAsMCArMSwyOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2lmZGVmIERvY0ZpbGVuYW1lID8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJkb2Nfc2hvcnRjdXQiIERpcmVjdG9yeT0iTWVudURpciIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldXERvY1Nob3J0Y3V0cyIgVHlwZT0iaW50ZWdlciIgVmFsdWU9IjEiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5dGhvbi5jaG0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iWyNweXRob24uY2htXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8P2VuZGlmID8+CisKKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2NfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2RvYy9kb2NfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTU1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmRvYzwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkRvY3VtZW50YXRpb248L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19IE1hbnVhbHMgKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPlZpZXcgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBkb2N1bWVudGF0aW9uLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZG9jL2RvY19maWxlcy53eHMgYi9Ub29scy9tc2kvZG9jL2RvY19maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwOWFmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDE1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLmNobSIgRGlyZWN0b3J5PSJEb2MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24uY2htIiBOYW1lPSIkKHZhci5Eb2NGaWxlbmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJIZWxwXE1haW4gUHl0aG9uIERvY3VtZW50YXRpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjcHl0aG9uLmNobV0iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jX25vX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9kb2MvZG9jX25vX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWI3YzI2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzCkBAIC0wLDAgKzEsMTcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZG9jIj4KKyAgICAgICAgICAgIDwhLS0KKyAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCB3aGVuIHRoZSBDSE0gaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgVGhpcyB3YXksIHNuYXBzaG90IGJ1aWxkcyBjYW4gc3VjY2VlZCB3aXRob3V0IGhhdmluZyB0bworICAgICAgICAgICAgYnVpbGQgdGhlIGRvY3MuCisgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkVtcHR5RG9jRm9sZGVyIiBEaXJlY3Rvcnk9IkRvYyIgR3VpZD0iezIyRkQ0MkRCLUVDNjYtNEIxQy1CMUZDLTQ0RTBDRjdCMjQ2Mn0iPgorICAgICAgICAgICAgICAgIDxDcmVhdGVGb2xkZXIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfRW1wdHlEb2NGb2xkZXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3J0bGljZW5zZS50eHQgYi9Ub29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBUb29scy9tc2kvY3J0bGljZW5zZS50eHQKcmVuYW1lIHRvIFRvb2xzL21zaS9leGUvY3J0bGljZW5zZS50eHQKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNmE2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns2QkQ1MzMwNS1CMDNFLTQ5REMtODVGQi01NTUxQjhDQ0M4NDN9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGU8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8IS0tIFNob3J0Y3V0IHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAtLT4KKyAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U0MzwvU3VwcHJlc3NJQ0VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVMaWNlbnNlIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8TGljZW5zZUZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxJQ0VOU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNydGxpY2Vuc2UudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ6MkRpcilMSUNFTlNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wZW5zc2xEaXIpTElDRU5TRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0Y2xEaXIpbGljZW5zZS50ZXJtczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0a0RpcilsaWNlbnNlLnRlcm1zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRpeERpcilsaWNlbnNlLnRlcm1zIiAvPgorICAgICAgICAgICAgPF9MaWNlbnNlRmlsZXMgSW5jbHVkZT0iQChMaWNlbnNlRmlsZXMpIj4KKyAgICAgICAgICAgICAgICA8Q29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoRnVsbFBhdGgpKSk8L0NvbnRlbnQ+CisgICAgICAgICAgICA8L19MaWNlbnNlRmlsZXM+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChCdWlsZFBhdGgpTElDRU5TRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iQChfTGljZW5zZUZpbGVzLT4nJShDb250ZW50KScpIiAvPgorICAgIDwvVGFyZ2V0PgorICAgICAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGIwNWUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC0wLDAgKzEsMzAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImV4ZV9zaG9ydGN1dCIgRGlyZWN0b3J5PSJNZW51RGlyIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5dGhvbi5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iWyNweXRob24uZXhlXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU0NWNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntCMUNBNzM5Qy04REIwLTQwM0ItOTAxMC1ENzk1MDc1MDdDRTl9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGVfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJjYjAxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob25fZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3N2ZiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5FeGVjdXRhYmxlczwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZXhlY3V0YWJsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIHRoZSAhKGxvYy5Qcm9kdWN0TmFtZSkgaW50ZXJwcmV0ZXIuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDIyMzcyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCkBAIC0wLDAgKzEsNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3R4dCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMSUNFTlNFLnR4dCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJMSUNFTlNFLnR4dCIgU291cmNlPSJMSUNFTlNFIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Ik5FV1MudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Ik5FV1MudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKU1pc2NcTkVXUyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJSRUFETUUudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbi5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253LmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob253RXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbncuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9weXRob25fc3ltYm9scyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24ucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbi5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbncucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbncucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9weXRob25fZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fZC5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX2QuZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fZC5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253X2QuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbndfZC5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbndfZC5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9ud19kLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9pY29ucyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweS5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHkuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5LmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweWMuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5Yy5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHljLmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjRjODY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezRBMUY3MDQ1LThFRTItNDI3Ni1BQkI4LTVFMEM0MEU1RjM4Qn08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmV4ZV9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjllYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iU3ltYm9scyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVQZGIpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25QZGIpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbl9zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZ2VuZXJhdGVfbWQ1LnB5IGIvVG9vbHMvbXNpL2dlbmVyYXRlX21kNS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTRjMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2dlbmVyYXRlX21kNS5weQpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2RlZiBtYWluKCk6CisgICAgZmlsZW5hbWVzLCBoYXNoZXMsIHNpemVzID0gW10sIFtdLCBbXQorCisgICAgZm9yIGZpbGUgaW4gc3lzLmFyZ3ZbMTpdOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgICAgICBtZDUgPSBoYXNobGliLm1kNSgpCisgICAgICAgICAgICBtZDUudXBkYXRlKGRhdGEpCisgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKG9zLnBhdGguc3BsaXQoZmlsZSlbMV0pCisgICAgICAgICAgICBoYXNoZXMuYXBwZW5kKG1kNS5oZXhkaWdlc3QoKSkKKyAgICAgICAgICAgIHNpemVzLmFwcGVuZChzdHIobGVuKGRhdGEpKSkKKworICAgIHByaW50KCd7OjQwc30gIHs6PDMyc30gIHs6PDlzfScuZm9ybWF0KCdGaWxlJywgJ01ENScsICdTaXplJykpCisgICAgZm9yIGYsIGgsIHMgaW4gemlwKGZpbGVuYW1lcywgaGFzaGVzLCBzaXplcyk6CisgICAgICAgIHByaW50KCd7OjQwc30gIHs6PjMyc30gIHs6PjlzfScuZm9ybWF0KGYsIGgsIHMpKQorCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChpbnQobWFpbigpIG9yIDApKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2dldF93aXgucHkgYi9Ub29scy9tc2kvZ2V0X3dpeC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmNmNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2dldF93aXgucHkKQEAgLTAsMCArMSw0OSBAQAorJycnCitEb3dubG9hZHMgYW5kIGV4dHJhY3RzIFdpWCB0byBhIGxvY2FsIGRpcmVjdG9yeQorJycnCisKK19fYXV0aG9yX18gPSAnU3RldmUgRG93ZXIgPHN0ZXZlLmRvd2VyQG1pY3Jvc29mdC5jb20+JworCitpbXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4KK2Zyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZQorCitFWFRFUk5BTFNfRElSID0gTm9uZQorZm9yIHAgaW4gUGF0aChfX2ZpbGVfXykucGFyZW50czoKKyAgICBpZiBhbnkocC5nbG9iKCJQQ0J1aWxkLyoudmN4cHJvaiIpKToKKyAgICAgICAgRVhURVJOQUxTX0RJUiA9IHAgLyAiZXh0ZXJuYWxzIgorICAgICAgICBicmVhaworCitpZiBub3QgRVhURVJOQUxTX0RJUjoKKyAgICBwcmludCgiQ2Fubm90IGZpbmQgcHJvamVjdCByb290IikKKyAgICBzeXMuZXhpdCgxKQorCitXSVhfQklOQVJJRVNfWklQID0gJ2h0dHA6Ly93aXh0b29sc2V0Lm9yZy9kb3dubG9hZHMvdjMuMTAuMC4xNTE5L3dpeDMxMC1iaW5hcmllcy56aXAnCitUQVJHRVRfQklOX1pJUCA9IEVYVEVSTkFMU19ESVIgLyAid2l4LnppcCIKK1RBUkdFVF9CSU5fRElSID0gRVhURVJOQUxTX0RJUiAvICJ3aXgiCisKK1BPV0VSU0hFTExfQ09NTUFORCA9ICJbSU8uRmlsZV06OldyaXRlQWxsQnl0ZXMoJ3t9JywgKEludm9rZS1XZWJSZXF1ZXN0IHt9IC1Vc2VCYXNpY1BhcnNpbmcpLkNvbnRlbnQpIgorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGlmIFRBUkdFVF9CSU5fRElSLmV4aXN0cygpIGFuZCBhbnkoVEFSR0VUX0JJTl9ESVIuZ2xvYigiKiIpKToKKyAgICAgICAgcHJpbnQoJ1dpWCBpcyBhbHJlYWR5IGluc3RhbGxlZCcpCisgICAgICAgIHN5cy5leGl0KDApCisKKyAgICB0cnk6CisgICAgICAgIFRBUkdFVF9CSU5fRElSLm1rZGlyKCkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisKKyAgICBwcmludCgnRG93bmxvYWRpbmcgV2lYIHRvJywgVEFSR0VUX0JJTl9aSVApCisgICAgcCA9IFBvcGVuKFsicG93ZXJzaGVsbC5leGUiLCAiLUNvbW1hbmQiLCBQT1dFUlNIRUxMX0NPTU1BTkQuZm9ybWF0KFRBUkdFVF9CSU5fWklQLCBXSVhfQklOQVJJRVNfWklQKV0pCisgICAgcC53YWl0KCkKKyAgICBwcmludCgnRXh0cmFjdGluZyBXaVggdG8nLCBUQVJHRVRfQklOX0RJUikKKyAgICB3aXRoIFppcEZpbGUoc3RyKFRBUkdFVF9CSU5fWklQKSkgYXMgejoKKyAgICAgICAgei5leHRyYWN0YWxsKHN0cihUQVJHRVRfQklOX0RJUikpCisgICAgVEFSR0VUX0JJTl9aSVAudW5saW5rKCkKKworICAgIHByaW50KCdFeHRyYWN0ZWQgV2lYJykKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNmMjZhOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns5MjFDRjBFNi1BRUJDLTQzNzYtQkExRC1DRDQ2RUJGRTZEQTV9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5sYXVuY2hlcjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGF1bmNoZXIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsYXVuY2hlcl9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxhdW5jaGVyX3JlZy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBjZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwpAQCAtMCwwICsxLDMxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eSBJZD0iU3VwcHJlc3NfVEFSR0VURElSX0NoZWNrIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iQVJQUFJPRFVDVElDT04iIC8+CisKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9leGUiIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICA8RmVhdHVyZSBJZD0iQXNzb2NpYXRlRmlsZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX2V4ZSIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfcmVnIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIAorICAgICAgICA8RGlyZWN0b3J5IElkPSJUQVJHRVRESVIiIE5hbWU9IlNvdXJjZURpciI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5PgorICAgICAgICAKKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iIFByb3BlcnR5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIFZhbHVlPSJbV2luZG93c0ZvbGRlcl0iIC8+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUNVIiBQcm9wZXJ0eT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBWYWx1ZT0iW0xvY2FsQXBwRGF0YUZvbGRlcl1Qcm9ncmFtc1xQeXRob25cTGF1bmNoZXIiIC8+CisgICAgICAgIAorICAgICAgICA8SW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlDVSI+Tk9UIEluc3RhbGxlZCBBTkQgTk9UIEFMTFVTRVJTPTE8L0N1c3RvbT4KKyAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJDb3N0RmluYWxpemUiIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iPk5PVCBJbnN0YWxsZWQgQU5EIEFMTFVTRVJTPTE8L0N1c3RvbT4KKyAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk2MWZmZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKQEAgLTAsMCArMSwxMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+TGF1bmNoZXI8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmxhdW5jaGVyPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25Db21waWxlZEZpbGVEZXNjcmlwdGlvbiI+Q29tcGlsZWQgUHl0aG9uIEZpbGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwNmRjNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9maWxlcy53eHMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsYXVuY2hlcl9leGUiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuZXhlIiBEaXJlY3Rvcnk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgR3VpZD0ie0I1MTA3NDAyLTY5NTgtNDYxQi04QjBBLTQwMzdEMzMyNzE2MH0iPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweS5leGUiIE5hbWU9InB5LmV4ZSIgU291cmNlPSJweS5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl3LmV4ZSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins4RTUyQjhDRC00OEJCLTRENzQtODRDRC02MjM4QkNEMTFGMjB9Ij4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl3LmV4ZSIgTmFtZT0icHl3LmV4ZSIgU291cmNlPSJweXcuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKworICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGF1bmNoZXJfcGF0aF9jdSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins5NUFFQjkzMC0zNjdDLTQ3NUMtQTE3RS1BODlCRkNENEM2NzB9Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXFB5dGhvblxQeUxhdW5jaGVyXEluc3RhbGxEaXIiIFZhbHVlPSJbTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5XSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0xhdW5jaGVySW5zdGFsbERpcmVjdG9yeV0iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxhdW5jaGVyX3BhdGhfbG0iIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7NEE0MUMzNjUtNEUyNy00RDM4LUE2RDEtNEEwMUI0QTY1MDBDfSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5BTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXFB5dGhvblxQeUxhdW5jaGVyXEluc3RhbGxEaXIiIFZhbHVlPSJbTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5XSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDRiNGVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKQEAgLTAsMCArMSw0NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsYXVuY2hlcl9yZWciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iZmlsZV9hc3NvY2lhdGlvbiIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins1QUY4NEQ5QS1EODIwLTQ1NkItQjIzMC02RTAxMDVBNTAyNzZ9Ij4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXlQYXRoPSJ5ZXMiIFJvb3Q9IkhLTVUiIEtleT0iU29mdHdhcmVcUHl0aG9uXFB5TGF1bmNoZXJcQXNzb2NpYXRlRmlsZXMiIFZhbHVlPSIxIiBUeXBlPSJpbnRlZ2VyIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25GaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pIiBDb250ZW50VHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil3IiBDb250ZW50VHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Db21waWxlZEZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Db21waWxlZEZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbiljIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweS5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pbyIgLz4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKworICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil6IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uQXJjaGl2ZUZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil6dyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRlNTg3OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezExMzY3RTc2LTMzMzctNDYwMi04RjFFLTc3REI0RjM3MEQ3RX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxpYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RXhjbHVkZUZvbGRlcnMgSW5jbHVkZT0iTGliXHRlc3Q7TGliXHRlc3RzO0xpYlx0a2ludGVyO0xpYlxpZGxlbGliO0xpYlx0dXJ0bGVkZW1vIiAvPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5YzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClMaWJcKipcKi5weW87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAoRXhjbHVkZUZvbGRlcnMtPickKFB5U291cmNlUGF0aCklKElkZW50aXR5KVwqJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChFeGNsdWRlRm9sZGVycy0+JyQoUHlTb3VyY2VQYXRoKSUoSWRlbnRpdHkpXCoqXConKSI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKUxpYlw8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKUxpYjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPkxpYlw8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+bGliX3B5PC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53eHMgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhZWM3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfcHkiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9maWxlcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnMiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODdhODJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns2QzQ0M0NEMy04MjU4LTQzMzUtQkEwMy00OURBOUMzNENFNER9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5saWJfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsaWJfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMgYi9Ub29scy9tc2kvbGliL2xpYl9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTVjZjcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNWJjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5TdGFuZGFyZCBMaWJyYXJ5PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5saWI8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzlhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKQEAgLTAsMCArMSw3OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzID8+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InNxbGl0ZTMuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTMuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlNZTUJPTFM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zX2QiPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dClfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KV9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzX2QuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTNfZC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ic3FsaXRlM19kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzX2QucGRiIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2ZpbGVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlB5dGhvblBhdGhSZWdpc3RyeSIgRGlyZWN0b3J5PSJMaWIiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IlB5dGhvblBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IltMaWJdO1tETExzXSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIERpcmVjdG9yeT0iTGliX3NpdGVfcGFja2FnZXMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZSIgRGlyZWN0b3J5PSJMaWJfbGliMnRvMyIgR3VpZD0iJCh2YXIuUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRmlsZSBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZpbGVzIiBOYW1lPSIqLnBpY2tsZSIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZm9sZGVyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IkxpYiI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMaWJfc2l0ZV9wYWNrYWdlcyIgTmFtZT0ic2l0ZS1wYWNrYWdlcyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYl9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjFiNWJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezVFMEJDRTkzLUQxQUMtNDU5MS1CQkNCLTNBMkJFNUE0QjNEMX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxpYl9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsaWJfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiZTBjOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHJvaiBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMTYwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbWFrZV96aXAucHJvagpAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MTA0ODc5NDUtMTVEMS00MDkyLUEyMTQtMzM4Mzk1QzQxMTZCfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICAgICAgPFN1cHBvcnRTaWduaW5nPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Im1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8U2lnbk91dHB1dD5mYWxzZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPFRhcmdldE5hbWU+cHl0aG9uLSQoUHl0aG9uVmVyc2lvbiktZW1iZWQtJChBcmNoTmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxUYXJnZXRFeHQ+LnppcDwvVGFyZ2V0RXh0PgorICAgICAgICA8VGFyZ2V0UGF0aD4kKE91dHB1dFBhdGgpXGVuLXVzXCQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L1RhcmdldFBhdGg+CisgICAgICAgIDxBcmd1bWVudHM+IiQoUHl0aG9uRXhlKSIgIiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxtYWtlX3ppcC5weSI8L0FyZ3VtZW50cz4KKyAgICAgICAgPEFyZ3VtZW50cz4kKEFyZ3VtZW50cykgLWUgLW8gIiQoVGFyZ2V0UGF0aCkiIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSIgLWEgJChBcmNoTmFtZSk8L0FyZ3VtZW50cz4KKyAgICAgICAgPEVudmlyb25tZW50PnNldCBET0NfRklMRU5BTUU9cHl0aG9uJChQeXRob25WZXJzaW9uKS5jaG08L0Vudmlyb25tZW50PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxUYXJnZXQgTmFtZT0iX0J1aWxkIj4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0ic2V0bG9jYWwKKyQoRW52aXJvbm1lbnQpCiskKEFyZ3VtZW50cykiIC8+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8VGFyZ2V0IE5hbWU9IkFmdGVyQnVpbGQiIC8+CisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iX0J1aWxkO0FmdGVyQnVpbGQiIC8+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlNob3dIYXNoZXMiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPFVzZXJGaWxlcyBJbmNsdWRlPSJAKEZpbGUpIiBDb25kaXRpb249IiclKEZpbGUuQ29weVRvKScgPT0gJyQoRVhFVGFyZ2V0KSciIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBnZW5lcmF0ZV9tZDUucHkgQChVc2VyRmlsZXMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFiYTkzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0wLDAgKzEsMTYxIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHNodXRpbAoraW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKKworZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCitmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUsIFpJUF9ERUZMQVRFRAoraW1wb3J0IHN1YnByb2Nlc3MKKworVEtUQ0xfUkUgPSByZS5jb21waWxlKHInXihfP3RrfHRjbCkuK1wuKHB5ZHxkbGwpJywgcmUuSUdOT1JFQ0FTRSkKK0RFQlVHX1JFID0gcmUuY29tcGlsZShyJ19kXC4ocHlkfGRsbHxleGUpJCcsIHJlLklHTk9SRUNBU0UpCitQWVRIT05fRExMX1JFID0gcmUuY29tcGlsZShyJ3B5dGhvblxkXGQ/XC5kbGwkJywgcmUuSUdOT1JFQ0FTRSkKKworZGVmIGlzX25vdF9kZWJ1ZyhwKToKKyAgICBpZiBERUJVR19SRS5zZWFyY2gocC5uYW1lKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBpZiBUS1RDTF9SRS5zZWFyY2gocC5uYW1lKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICByZXR1cm4gcC5uYW1lLmxvd2VyKCkgbm90IGluIHsKKyAgICAgICAgJ19jdHlwZXNfdGVzdC5weWQnLAorICAgICAgICAnX3Rlc3RidWZmZXIucHlkJywKKyAgICAgICAgJ190ZXN0Y2FwaS5weWQnLAorICAgICAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQnLAorICAgICAgICAnX3Rlc3RtdWx0aXBoYXNlLnB5ZCcsCisgICAgICAgICd4eGxpbWl0ZWQucHlkJywKKyAgICB9CisKK2RlZiBpc19ub3RfZGVidWdfb3JfcHl0aG9uKHApOgorICAgIHJldHVybiBpc19ub3RfZGVidWcocCkgYW5kIG5vdCBQWVRIT05fRExMX1JFLnNlYXJjaChwLm5hbWUpCisKK2RlZiBpbmNsdWRlX2luX2xpYihwKToKKyAgICBuYW1lID0gcC5uYW1lLmxvd2VyKCkKKyAgICBpZiBwLmlzX2RpcigpOgorICAgICAgICBpZiBuYW1lIGluIHsnX19weWNhY2hlX18nLCAnZW5zdXJlcGlwJywgJ2lkbGVsaWInLCAncHlkb2NfZGF0YScsICd0a2ludGVyJywgJ3R1cnRsZWRlbW8nfToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ3BsYXQtJyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbmFtZSA9PSAndGVzdCcgYW5kIHAucGFydHNbLTJdLmxvd2VyKCkgPT0gJ2xpYic6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIHN1ZmZpeCA9IHAuc3VmZml4Lmxvd2VyKCkKKyAgICByZXR1cm4gc3VmZml4IG5vdCBpbiB7Jy5weWMnLCAnLnB5byd9CisKK2RlZiBpbmNsdWRlX2luX3Rvb2xzKHApOgorICAgIGlmIHAuaXNfZGlyKCkgYW5kIHAubmFtZS5sb3dlcigpIGluIHsnc2NyaXB0cycsICdpMThuJywgJ3B5bmNoZScsICdkZW1vJywgJ3BhcnNlcid9OgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgcmV0dXJuIHAuc3VmZml4Lmxvd2VyKCkgaW4geycucHknLCAnLnB5dycsICcudHh0J30KKworRlVMTF9MQVlPVVQgPSBbCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uKi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAorICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAorICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCitdCisKK2lmIG9zLmdldGVudignRE9DX0ZJTEVOQU1FJyk6CisgICAgRlVMTF9MQVlPVVQuYXBwZW5kKCgnRG9jLycsICdEb2MvYnVpbGQvaHRtbGhlbHAnLCBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpLCBOb25lKSkKKworRU1CRURfTEFZT1VUID0gWworICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgncHl0aG9uMzUuemlwJywgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorXQorCitkZWYgY29weV90b19sYXlvdXQodGFyZ2V0LCByZWxfc291cmNlcyk6CisgICAgY291bnQgPSAwCisKKyAgICBpZiB0YXJnZXQuc3VmZml4Lmxvd2VyKCkgPT0gJy56aXAnOgorICAgICAgICBpZiB0YXJnZXQuZXhpc3RzKCk6CisgICAgICAgICAgICB0YXJnZXQudW5saW5rKCkKKworICAgICAgICB3aXRoIFppcEZpbGUoc3RyKHRhcmdldCksICd3JywgWklQX0RFRkxBVEVEKSBhcyBmOgorICAgICAgICAgICAgZm9yIHMsIHJlbCBpbiByZWxfc291cmNlczoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHN0cihzKSwgc3RyKHJlbCkpCisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgZWxzZToKKyAgICAgICAgZm9yIHMsIHJlbCBpbiByZWxfc291cmNlczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAodGFyZ2V0IC8gcmVsKS5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzaHV0aWwuY29weShzdHIocyksIHN0cih0YXJnZXQgLyByZWwpKQorICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgcmV0dXJuIGNvdW50CisKK2RlZiByZ2xvYihyb290LCBwYXR0ZXJuLCBjb25kaXRpb24pOgorICAgIGRpcnMgPSBbcm9vdF0KKyAgICByZWN1cnNlID0gcGF0dGVybls6M10gaW4geycqKi8nLCAnKipcXCd9CisgICAgd2hpbGUgZGlyczoKKyAgICAgICAgZCA9IGRpcnMucG9wKDApCisgICAgICAgIGZvciBmIGluIGQuZ2xvYihwYXR0ZXJuWzM6XSBpZiByZWN1cnNlIGVsc2UgcGF0dGVybik6CisgICAgICAgICAgICBpZiByZWN1cnNlIGFuZCBmLmlzX2RpcigpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGYpCisgICAgICAgICAgICBlbGlmIGYuaXNfZmlsZSgpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIHlpZWxkIGYsIGYucmVsYXRpdmVfdG8ocm9vdCkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zb3VyY2UnLCBtZXRhdmFyPSdkaXInLCBoZWxwPSdUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJlcG9zaXRvcnkgcm9vdCcsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW91dCcsIG1ldGF2YXI9J2ZpbGUnLCBoZWxwPSdUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IHNlbGYtZXh0cmFjdGluZyBhcmNoaXZlJywgdHlwZT1QYXRoLCByZXF1aXJlZD1UcnVlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hcmNoJywgaGVscD0nU3BlY2lmeSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZSAod2luMzIvYW1kNjQpJywgdHlwZT1zdHIsIGRlZmF1bHQ9IndpbjMyIikKKyAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHNvdXJjZSA9IG5zLnNvdXJjZSBvciAoUGF0aChfX2ZpbGVfXykucGFyZW50LnBhcmVudC5wYXJlbnQpCisgICAgb3V0ID0gbnMub3V0CisgICAgYXJjaCA9IG5zLmFyY2gKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIFBhdGgpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3V0LCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKKworICAgIGlmIG5zLnRlbXA6CisgICAgICAgIHRlbXAgPSBucy50ZW1wCisgICAgICAgIGRlbGV0ZV90ZW1wID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICB0ZW1wID0gUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCisgICAgICAgIGRlbGV0ZV90ZW1wID0gVHJ1ZQorCisgICAgdHJ5OgorICAgICAgICBvdXQucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICB0ZW1wLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisKKyAgICBsYXlvdXQgPSBFTUJFRF9MQVlPVVQgaWYgbnMuZW1iZWQgZWxzZSBGVUxMX0xBWU9VVAorCisgICAgdHJ5OgorICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6CisgICAgICAgICAgICBzID0gc291cmNlIC8gcy5yZXBsYWNlKCIkYXJjaCIsIGFyY2gpCisgICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgcmdsb2IocywgcCwgYykpCisgICAgICAgICAgICBwcmludCgnQ29waWVkIHt9IGZpbGVzJy5mb3JtYXQoY29waWVkKSkKKworICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAncHl2ZW52LmNmZycpLCAndycpIGFzIGY6CisgICAgICAgICAgICBwcmludCgnYXBwbG9jYWwgPSB0cnVlJywgZmlsZT1mKQorCisgICAgICAgIHRvdGFsID0gY29weV90b19sYXlvdXQob3V0LCByZ2xvYih0ZW1wLCAnKicsIE5vbmUpKQorICAgICAgICBwcmludCgnV3JvdGUge30gZmlsZXMgdG8ge30nLmZvcm1hdCh0b3RhbCwgb3V0KSkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBkZWxldGVfdGVtcDoKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcCwgVHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KGludChtYWluKCkgb3IgMCkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDIyMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMCwwICsxLDE2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIiBUcmVhdEFzTG9jYWxQcm9wZXJ0eT0iUmVsZWFzZVVyaSI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxEZWZpbmVTb2x1dGlvblByb3BlcnRpZXM+ZmFsc2U8L0RlZmluZVNvbHV0aW9uUHJvcGVydGllcz4KKyAgICAgICAgPFRyZWF0V2FybmluZ3NBc0Vycm9ycz5mYWxzZTwvVHJlYXRXYXJuaW5nc0FzRXJyb3JzPgorICAgICAgICA8U3VwcHJlc3NJY2VzPiQoU3VwcHJlc3NJY2VzKTtJQ0UwMztJQ0U1NztJQ0U2MTwvU3VwcHJlc3NJY2VzPgorICAgICAgICA8Q29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+MTAyNjwvQ29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+CisgICAgICAgIDxCdWlsZEZvclJlbGVhc2UgQ29uZGl0aW9uPSInJChCdWlsZEZvclJlbGVhc2UpJyA9PSAnJyI+ZmFsc2U8L0J1aWxkRm9yUmVsZWFzZT4KKyAgICAgICAgPFNpZ25PdXRwdXQgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyI+dHJ1ZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CisgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICAgICAgPCEtLQorICAgICAgICBUaGlzIFVSSSBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIEdVSURzIHVzZWQgYnkgdGhlIGluc3RhbGxlci4KKyAgICAgICAgSW5zdGFsbGVycyBidWlsdCB3aXRoIHRoZSBzYW1lIFVSSSB3aWxsIHVwZ3JhZGUgZWFjaCBvdGhlciBvciBibG9jaworICAgICAgICB3aGVuIGF0dGVtcHRpbmcgdG8gZG93bmdyYWRlLgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgbG9jYWwgY29tcHV0ZXIgbmFtZSwgd2hpY2ggd2lsbCBwcm9kdWNlCisgICAgICAgIGluc3RhbGxlcnMgdGhhdCBkbyBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgaW5zdGFsbGVycy4gUHJvZHVjdHMKKyAgICAgICAgdGhhdCBpbnRlbmQgdG8gYnVuZGxlIFB5dGhvbiBzaG91bGQgcmVidWlsZCB0aGVzZSBtb2R1bGVzIHdpdGggdGhlaXIKKyAgICAgICAgb3duIFVSSSB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRoZSBvZmZpY2lhbCByZWxlYXNlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvZmZpY2lhbCByZWxlYXNlcyBhcmUgYnVpbHQgd2l0aCBodHRwOi8vd3d3LnB5dGhvbi5vcmcvLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIERvd25sb2FkVXJsIHByb3BlcnR5IHVzZWQgaW4gdGhlIGJ1bmRsZQorICAgICAgICBwcm9qZWN0cy4KKyAgICAgICAgLS0+CisgICAgICAgIDxSZWxlYXNlVXJpIENvbmRpdGlvbj0iJyQoUmVsZWFzZVVyaSknID09ICcnIj4kKENvbXB1dGVyTmFtZSk8L1JlbGVhc2VVcmk+CisgICAgICAgIDxSZWxlYXNlVXJpIENvbmRpdGlvbj0iISQoUmVsZWFzZVVyaS5FbmRzV2l0aChgL2ApKSI+JChSZWxlYXNlVXJpKS88L1JlbGVhc2VVcmk+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSJ3aXgucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHRjbHRrLnByb3BzIiAvPgorICAgIAorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KWNvbW1vbi53eHMiIC8+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcKi53eGxfdGVtcGxhdGUiIC8+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4VXRpbEV4dGVuc2lvbiI+CisgICAgICAgICAgICA8SGludFBhdGg+V2l4VXRpbEV4dGVuc2lvbjwvSGludFBhdGg+CisgICAgICAgICAgICA8TmFtZT5XaXhVdGlsRXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8SW50ZXJtZWRpYXRlT3V0cHV0UGF0aD4kKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcb2JqXCQoQ29uZmlndXJhdGlvbilfJChQbGF0Zm9ybSlcJChPdXRwdXROYW1lKTwvSW50ZXJtZWRpYXRlT3V0cHV0UGF0aD4KKyAgICAgICAgPEludGVybWVkaWF0ZU91dHB1dFBhdGggQ29uZGl0aW9uPSInJChPdXRwdXRTdWZmaXgpJyAhPSAnJyI+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKV8kKE91dHB1dFN1ZmZpeCk8L0ludGVybWVkaWF0ZU91dHB1dFBhdGg+CisgICAgICAgIDxPdXRwdXRQYXRoIENvbmRpdGlvbj0iJyQoT3V0cHV0UGF0aCknID09ICcnIj4kKEJ1aWxkUGF0aCk8L091dHB1dFBhdGg+CisgICAgICAgIDxPdXRwdXRQYXRoIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXRwdXRQYXRoKSkiPiQoT3V0cHV0UGF0aClcPC9PdXRwdXRQYXRoPgorICAgICAgICA8T3V0RGlyPiQoT3V0cHV0UGF0aCk8L091dERpcj4KKyAgICAgICAgPFJldXNlQ2FiaW5ldENhY2hlPnRydWU8L1JldXNlQ2FiaW5ldENhY2hlPgorICAgICAgICA8Q1JUUmVkaXN0IENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgPT0gJyciPiQoRXh0ZXJuYWxzRGlyKVxyZWRpc3Q8L0NSVFJlZGlzdD4KKyAgICAgICAgPENSVFJlZGlzdCBDb25kaXRpb249IiFFeGlzdHMoJChDUlRSZWRpc3QpKSI+PC9DUlRSZWRpc3Q+CisgICAgICAgIDxEb2NGaWxlbmFtZT5weXRob24kKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlcikkKE1pY3JvVmVyc2lvbk51bWJlcikkKFJlbGVhc2VMZXZlbE5hbWUpLmNobTwvRG9jRmlsZW5hbWU+CisKKyAgICAgICAgPFJldmlzaW9uTnVtYmVyPiQoUmVsZWFzZUxldmVsTnVtYmVyKTwvUmV2aXNpb25OdW1iZXI+CisgICAgICAgIDxSZXZpc2lvbk51bWJlciBDb25kaXRpb249IiEkKEJ1aWxkRm9yUmVsZWFzZSkiPiQoW1N5c3RlbS5NYXRoXTo6Rmxvb3IoJChbU3lzdGVtLkRhdGVUaW1lXTo6Tm93LlN1YnRyYWN0KCQoW1N5c3RlbS5EYXRlVGltZV06Om5ldygyMDAxLCAxLCAxKSkpLlRvdGFsRGF5cykpKTwvUmV2aXNpb25OdW1iZXI+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8Qml0bmVzcz4zMi1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxCaXRuZXNzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0LWJpdDwvQml0bmVzcz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIFZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKEZpZWxkM1ZhbHVlKS4wOworICAgICAgICAgICAgU2hvcnRWZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcik7CisgICAgICAgICAgICBMb25nVmVyc2lvbj0kKFB5dGhvblZlcnNpb24pOworICAgICAgICAgICAgTWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKTsKKyAgICAgICAgICAgIE1pbm9yVmVyc2lvbk51bWJlcj0kKE1pbm9yVmVyc2lvbk51bWJlcik7CisgICAgICAgICAgICBVcGdyYWRlTWluaW11bVZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4wLjA7CisgICAgICAgICAgICBOZXh0TWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKFttc2J1aWxkXTo6QWRkKCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgMSkpLjAuMDsKKyAgICAgICAgICAgIEJpdG5lc3M9JChCaXRuZXNzKTsKKyAgICAgICAgICAgIFB5RGVidWdFeHQ9JChQeURlYnVnRXh0KTsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChDUlRSZWRpc3QpJyAhPSAnJyI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7Q1JUUmVkaXN0PSQoQ1JUUmVkaXN0KTsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pICE9ICdEZWJ1ZyciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO1Rlc3RQcmVmaXg9O0ZpbGVFeHRlbnNpb249cHk7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtUZXN0UHJlZml4PXg7RmlsZUV4dGVuc2lvbj1weDsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSAhPSAneDY0JyI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7U3VmZml4MzI9LTMyOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtTdWZmaXgzMj07CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgPEdyb3VwPmdlbmVyYXRlZF9maWxlbGlzdDwvR3JvdXA+CisgICAgICAgICAgICA8Q29uZGl0aW9uPjwvQ29uZGl0aW9uPgorICAgICAgICAgICAgPERpc2tJZD48L0Rpc2tJZD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgICAgIDxWaXNpYmxlPmZhbHNlPC9WaXNpYmxlPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJChCdWlsZFBhdGgpOyQoUHlTb3VyY2VQYXRoKURvY1xidWlsZFxodG1saGVscCI+CisgICAgICAgICAgICA8QmluZE5hbWU+PC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKSI+CisgICAgICAgICAgICA8QmluZE5hbWU+c3JjPC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQodGNsdGtEaXIpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT50Y2x0azwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKENSVFJlZGlzdCkiIENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgIT0gJyciPgorICAgICAgICAgICAgPEJpbmROYW1lPnJlZGlzdDwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKENSVFJlZGlzdClcJChQbGF0Zm9ybSkiIENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgIT0gJyciPgorICAgICAgICAgICAgPEJpbmROYW1lPmNydDwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8VGFyZ2V0IE5hbWU9Il9WYWxpZGF0ZU1zaVByb3BzIiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgICAgICA8RXJyb3IgVGV4dD0iUGxhdGZvcm0gJyQoUGxhdGZvcm0pJyBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgJ3g4Nicgb3IgJ3g2NCcuIiBDb25kaXRpb249IiQoUGxhdGZvcm0pICE9ICd4ODYnIGFuZCAkKFBsYXRmb3JtKSAhPSAneDY0JyIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iQ29yZVVwZ3JhZGVDb2RlIj4KKyAgICAgICAgICAgIDxVcmk+dXBncmFkZWNvZGU8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlVwZ3JhZGVDb2RlIj4KKyAgICAgICAgICAgIDxVcmk+dXBncmFkZWNvZGUvJChPdXRwdXROYW1lKTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iSW5zdGFsbERpcmVjdG9yeUd1aWRTZWVkIj4KKyAgICAgICAgICAgIDxVcmk+aW5zdGFsbGRpcmVjdG9yeXNlZWQ8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvbkV4ZUNvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5weXRob24uZXhlPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob253RXhlQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPnB5dGhvbncuZXhlPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJSZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPmxpYjJ0bzMvcGlja2xlczwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxUYXJnZXQgTmFtZT0iX0dlbmVyYXRlR3VpZHMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X1V1aWRzPkAoX1V1aWQtPicoIiUoSWRlbnRpdHkpIiwgIiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikvJShVcmkpIiknLCcsJyk8L19VdWlkcz4KKyAgICAgICAgICAgIDxfR2VuZXJhdGVDb21tYW5kPmltcG9ydCB1dWlkOyBwcmludCgnXG4nLmpvaW4oJ3t9PXt9Jy5mb3JtYXQoaSwgdXVpZC51dWlkNSh1dWlkLlVVSUQoJ2M4ZDk3MzNlLWE3MGMtNDNmZi1hYjBjLWUyNjQ1NmYxMTA4MycpLCAnJChSZWxlYXNlVXJpKScgKyBqKSkgZm9yIGksaiBpbiBbJChfVXVpZHMuUmVwbGFjZShgImAsYCdgKSldKSk8L19HZW5lcmF0ZUNvbW1hbmQ+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAgICAgCisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyIkKFB5dGhvbkV4ZSkiIC1jICIkKF9HZW5lcmF0ZUNvbW1hbmQpIiAmZ3Q7ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChPdXRwdXROYW1lKWd1aWRzLnR4dCInCisgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIKKyAgICAgICAgICAgICAgSWdub3JlRXhpdENvZGU9ImZhbHNlIiAvPgorICAgICAgICAKKyAgICAgICAgPFJlYWRMaW5lc0Zyb21GaWxlIEZpbGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkkKE91dHB1dE5hbWUpZ3VpZHMudHh0Ij4KKyAgICAgICAgICAgIDxPdXRwdXQgVGFza1BhcmFtZXRlcj0iTGluZXMiIEl0ZW1OYW1lPSJfVXVpZFZhbHVlIiAvPgorICAgICAgICA8L1JlYWRMaW5lc0Zyb21GaWxlPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtAKF9VdWlkVmFsdWUsJzsnKTs8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTAwNTZhLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDU0ICswLDAgQEAKLSMgUHl0aG9uIE1TSSBHZW5lcmF0b3IKLSMgKEMpIDIwMDMgTWFydGluIHYuIExvZXdpcwotIyBTZWUgIkZPTyIgaW4gY29tbWVudHMgcmVmZXJzIHRvIE1TRE4gc2VjdGlvbnMgd2l0aCB0aGUgdGl0bGUgRk9PLgotaW1wb3J0IG1zaWxpYiwgc2NoZW1hLCBzZXF1ZW5jZSwgb3MsIGdsb2IsIHRpbWUsIHJlLCBzaHV0aWwsIHppcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzLCB0ZW1wZmlsZQotZnJvbSBtc2lsaWIgaW1wb3J0IEZlYXR1cmUsIENBQiwgRGlyZWN0b3J5LCBEaWFsb2csIEJpbmFyeSwgYWRkX2RhdGEKLWltcG9ydCB1aXNhbXBsZQotZnJvbSB3aW4zMmNvbS5jbGllbnQgaW1wb3J0IGNvbnN0YW50cwotZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotCi0jIFNldHRpbmdzIGNhbiBiZSBvdmVycmlkZGVuIGluIGNvbmZpZy5weSBiZWxvdwotIyAwIGZvciBvZmZpY2lhbCBweXRob24ub3JnIHJlbGVhc2VzCi0jIDEgZm9yIGludGVybWVkaWF0ZSByZWxlYXNlcyBieSBhbnlib2R5LCB3aXRoCi0jIGEgbmV3IHByb2R1Y3QgY29kZSBmb3IgZXZlcnkgcGFja2FnZS4KLXNuYXBzaG90ID0gMQotIyAxIG1lYW5zIHRoYXQgZmlsZSBleHRlbnNpb24gaXMgcHgsIG5vdCBweSwKLSMgYW5kIGJpbmFyaWVzIHN0YXJ0IHdpdGggeAotdGVzdHBhY2thZ2UgPSAwCi0jIExvY2F0aW9uIG9mIGJ1aWxkIHRyZWUKLXNyY2RpciA9IG9zLnBhdGguYWJzcGF0aCgiLi4vLi4iKQotIyBUZXh0IHRvIGJlIGRpc3BsYXllZCBhcyB0aGUgdmVyc2lvbiBpbiBkaWFsb2dzIGV0Yy4KLSMgZ29lcyBpbnRvIGZpbGUgbmFtZSBhbmQgUHJvZHVjdENvZGUuIERlZmF1bHRzIHRvCi0jIGN1cnJlbnRfdmVyc2lvbi5kYXkgZm9yIFNuYXBzaG90LCBjdXJyZW50X3ZlcnNpb24gb3RoZXJ3aXNlCi1mdWxsX2N1cnJlbnRfdmVyc2lvbiA9IE5vbmUKLSMgSXMgVGNsIGF2YWlsYWJsZSBhdCBhbGw/Ci1oYXZlX3RjbCA9IFRydWUKLSMgcGF0aCB0byBQQ2J1aWxkIGRpcmVjdG9yeQotUENCVUlMRD0iUENidWlsZCIKLSMgbXN2Y3J0IHZlcnNpb24KLU1TVkNSID0gIjEwMCIKLSMgTmFtZSBvZiBjZXJ0aWZpY2F0ZSBpbiBkZWZhdWx0IHN0b3JlIHRvIHNpZ24gTVNJIHdpdGgKLWNlcnRuYW1lID0gTm9uZQotIyBNYWtlIGEgemlwIGZpbGUgY29udGFpbmluZyB0aGUgUERCIGZpbGVzIGZvciB0aGlzIGJ1aWxkPwotcGRiemlwID0gVHJ1ZQotCi10cnk6Ci0gICAgZnJvbSBjb25maWcgaW1wb3J0ICoKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLSMgRXh0cmFjdCBjdXJyZW50IHZlcnNpb24gZnJvbSBJbmNsdWRlL3BhdGNobGV2ZWwuaAotbGluZXMgPSBvcGVuKHNyY2RpciArICIvSW5jbHVkZS9wYXRjaGxldmVsLmgiKS5yZWFkbGluZXMoKQotbWFqb3IgPSBtaW5vciA9IG1pY3JvID0gbGV2ZWwgPSBzZXJpYWwgPSBOb25lCi1sZXZlbHMgPSB7Ci0gICAgJ1BZX1JFTEVBU0VfTEVWRUxfQUxQSEEnOjB4QSwKLSAgICAnUFlfUkVMRUFTRV9MRVZFTF9CRVRBJzogMHhCLAotICAgICdQWV9SRUxFQVNFX0xFVkVMX0dBTU1BJzoweEMsCi0gICAgJ1BZX1JFTEVBU0VfTEVWRUxfRklOQUwnOjB4RgotICAgIH0KLWZvciBsIGluIGxpbmVzOgotICAgIGlmIG5vdCBsLnN0YXJ0c3dpdGgoIiNkZWZpbmUiKToKLSAgICAgICAgY29udGludWUKLSAgICBsID0gbC5zcGxpdCgpCi0gICAgaWYgbGVuKGwpICE9IDM6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgXywgbmFtZSwgdmFsdWUgPSBsCi0gICAgaWYgbmFtZSA9PSAnUFlfTUFKT1JfVkVSU0lPTic6IG1ham9yID0gdmFsdWUKLSAgICBpZiBuYW1lID09ICdQWV9NSU5PUl9WRVJTSU9OJzogbWlub3IgPSB2YWx1ZQotICAgIGlmIG5hbWUgPT0gJ1BZX01JQ1JPX1ZFUlNJT04nOiBtaWNybyA9IHZhbHVlCi0gICAgaWYgbmFtZSA9PSAnUFlfUkVMRUFTRV9MRVZFTCc6IGxldmVsID0gbGV2ZWxzW3ZhbHVlXQotICAgIGlmIG5hbWUgPT0gJ1BZX1JFTEVBU0VfU0VSSUFMJzogc2VyaWFsID0gdmFsdWUKLQotc2hvcnRfdmVyc2lvbiA9IG1ham9yKyIuIittaW5vcgotIyBTZWUgUEMvbWFrZV92ZXJzaW9uaW5mby5jCi1GSUVMRDMgPSAxMDAwKmludChtaWNybykgKyAxMCpsZXZlbCArIGludChzZXJpYWwpCi1jdXJyZW50X3ZlcnNpb24gPSAiJXMuJWQiICUgKHNob3J0X3ZlcnNpb24sIEZJRUxEMykKLQotIyBUaGlzIHNob3VsZCBuZXZlciBjaGFuZ2UuIFRoZSBVcGdyYWRlQ29kZSBvZiB0aGlzIHBhY2thZ2UgY2FuIGJlCi0jIHVzZWQgaW4gdGhlIFVwZ3JhZGUgdGFibGUgb2YgZnV0dXJlIHBhY2thZ2VzIHRvIG1ha2UgdGhlIGZ1dHVyZQotIyBwYWNrYWdlIHJlcGxhY2UgdGhpcyBvbmUuIFNlZSAiVXBncmFkZUNvZGUgUHJvcGVydHkiLgotIyB1cGdyYWRlX2NvZGUgZ2V0cyBzZXQgdG8gdXBncmFkZV9jb2RlXzY0IHdoZW4gd2UgaGF2ZSBkZXRlcm1pbmVkCi0jIHRoYXQgdGhlIHRhcmdldCBpcyBXaW42NC4KLXVwZ3JhZGVfY29kZV9zbmFwc2hvdD0nezkyQTI0NDgxLTNFQ0ItNDBGQy04ODM2LTA0Qjc5NjZFQzBENX0nCi11cGdyYWRlX2NvZGU9J3s2NUU2REU0OC1BMzU4LTQzNEQtQUE0Ri00QUY3MkRCNDcxOEZ9JwotdXBncmFkZV9jb2RlXzY0PSd7NkE5NjVBMEMtNkVFNi00RTNBLTk5ODMtMzI2M0Y1NjMxMUVDfScKLQotaWYgc25hcHNob3Q6Ci0gICAgY3VycmVudF92ZXJzaW9uID0gIiVzLiVzLiVzIiAlIChtYWpvciwgbWlub3IsIGludCh0aW1lLnRpbWUoKS8zNjAwLzI0KSkKLQotaWYgZnVsbF9jdXJyZW50X3ZlcnNpb24gaXMgTm9uZToKLSAgICBmdWxsX2N1cnJlbnRfdmVyc2lvbiA9IGN1cnJlbnRfdmVyc2lvbgotCi1leHRlbnNpb25zID0gWwotICAgICdweWV4cGF0LnB5ZCcsCi0gICAgJ3NlbGVjdC5weWQnLAotICAgICd1bmljb2RlZGF0YS5weWQnLAotICAgICd3aW5zb3VuZC5weWQnLAotICAgICdfYnoyLnB5ZCcsCi0gICAgJ19lbGVtZW50dHJlZS5weWQnLAotICAgICdfc29ja2V0LnB5ZCcsCi0gICAgJ19zc2wucHlkJywKLSAgICAnX3Rlc3RjYXBpLnB5ZCcsCi0gICAgJ190a2ludGVyLnB5ZCcsCi0gICAgJ19tc2kucHlkJywKLSAgICAnX2N0eXBlcy5weWQnLAotICAgICdfY3R5cGVzX3Rlc3QucHlkJywKLSAgICAnX3NxbGl0ZTMucHlkJywKLSAgICAnX2hhc2hsaWIucHlkJywKLSAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnLAotICAgICdfbHptYS5weWQnLAotICAgICdfZGVjaW1hbC5weWQnLAotICAgICdfdGVzdGJ1ZmZlci5weWQnLAotICAgICdfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCcsCi0gICAgJ19vdmVybGFwcGVkLnB5ZCcsCi1dCi0KLSMgV2VsbC1rbm93biBjb21wb25lbnQgVVVJRHMKLSMgVGhlc2UgYXJlIG5lZWRlZCBmb3IgU2hhcmVkRExMcyByZWZlcmVuY2UgY291bnRlcjsgaWYKLSMgYSBkaWZmZXJlbnQgVVVJRCB3YXMgdXNlZCBmb3IgZWFjaCBpbmNhcm5hdGlvbiBvZiwgc2F5LAotIyBweXRob24yNC5kbGwsIGFuIHVwZ3JhZGUgd291bGQgc2V0IHRoZSByZWZlcmVuY2UgY291bnRlcgotIyBmcm9tIDEgdG8gMiAoZHVlIHRvIHdoYXQgSSBjb25zaWRlciBhIGJ1ZyBpbiBNU0kpCi0jIFVzaW5nIHRoZSBzYW1lIFVVSUQgaXMgZmluZSBzaW5jZSB0aGVzZSBmaWxlcyBhcmUgdmVyc2lvbmVkLAotIyBzbyBJbnN0YWxsZXIgd2lsbCBhbHdheXMga2VlcCB0aGUgbmV3ZXN0IHZlcnNpb24uCi0jIE5PVEU6IEFsbCB1dWlkcyBhcmUgc2VsZiBnZW5lcmF0ZWQuCi1weXRob25kbGxfdXVpZCA9IHsKLSAgICAiMjQiOiJ7OUI4MUU2MTgtMjMwMS00MDM1LUFDNzctNzVEOUFCRUI3MzAxfSIsCi0gICAgIjI1IjoiezJlNDFiMTE4LTM4YmQtNGMxYi1hODQwLTY5NzdlZmQxYjkxMX0iLAotICAgICIyNiI6InszNGViZWNhYy1mMDQ2LTRlMWMtYjBlMy05YmFjM2NkYWFjZmF9IiwKLSAgICAiMjciOiJ7NGZlMjFjNzYtMTc2MC00MzdiLWEyZjItOTk5MDkxMzBhMTc1fSIsCi0gICAgIjMwIjoiezY5NTNiYzNiLTY3NjgtNDI5MS04NDEwLTc5MTRjZTZlMmNhOH0iLAotICAgICIzMSI6Ins0YWZjYmEwYi0xM2U0LTQ3YzMtYmViZS00Nzc0MjhiNDY5MTN9IiwKLSAgICAiMzIiOiJ7M2ZmOTUzMTUtMTA5Ni00ZDMxLWJkODYtNjAxZDU0MzhhZDVlfSIsCi0gICAgIjMzIjoie2Y3NTgxY2E0LWQzNjgtNGVlYS04ZjgyLWQ0OGM2NGM0ZjA0N30iLAotICAgICIzNCI6Ins3QTBDNTgxMi0yNTgzLTQwRDktQkNCQi1DRDc0ODVGMTEzNzd9IiwKLSAgICB9IFttYWpvcittaW5vcl0KLQotIyBDb21wdXRlIHRoZSBuYW1lIHRoYXQgU3BoaW54IGdpdmVzIHRvIHRoZSBkb2NmaWxlCi1kb2NmaWxlID0gbWljcm8KLWlmIGxldmVsIDwgMHhmOgotICAgIGlmIGxldmVsID09IDB4QzoKLSAgICAgICAgZG9jZmlsZSArPSAicmMlcyIgJSAoc2VyaWFsLCkKLSAgICBlbHNlOgotICAgICAgICBkb2NmaWxlICs9ICcleCVzJyAlIChsZXZlbCwgc2VyaWFsKQotZG9jZmlsZSA9ICdweXRob24lcyVzJXMuY2htJyAlIChtYWpvciwgbWlub3IsIGRvY2ZpbGUpCi0KLSMgQnVpbGQgdGhlIG1pbmd3IGltcG9ydCBsaWJyYXJ5LCBsaWJweXRob25YWS5hCi0jIFRoaXMgcmVxdWlyZXMgJ25tJyBhbmQgJ2RsbHRvb2wnIGV4ZWN1dGFibGVzIG9uIHlvdXIgUEFUSAotZGVmIGJ1aWxkX21pbmd3X2xpYihsaWJfZmlsZSwgZGVmX2ZpbGUsIGRsbF9maWxlLCBtaW5nd19saWIpOgotICAgIHdhcm5pbmcgPSAiV0FSTklORzogJXMgLSBsaWJweXRob25YWC5hIG5vdCBidWlsdCIKLSAgICBubSA9IGZpbmRfZXhlY3V0YWJsZSgnbm0nKQotICAgIGRsbHRvb2wgPSBmaW5kX2V4ZWN1dGFibGUoJ2RsbHRvb2wnKQotCi0gICAgaWYgbm90IG5tIG9yIG5vdCBkbGx0b29sOgotICAgICAgICBwcmludCh3YXJuaW5nICUgIm5tIGFuZC9vciBkbGx0b29sIHdlcmUgbm90IGZvdW5kIikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBubV9jb21tYW5kID0gJyVzIC1DcyAlcycgJSAobm0sIGxpYl9maWxlKQotICAgIGRsbHRvb2xfY29tbWFuZCA9ICIlcyAtLWRsbG5hbWUgJXMgLS1kZWYgJXMgLS1vdXRwdXQtbGliICVzIiAlIFwKLSAgICAgICAgKGRsbHRvb2wsIGRsbF9maWxlLCBkZWZfZmlsZSwgbWluZ3dfbGliKQotICAgIGV4cG9ydF9tYXRjaCA9IHJlLmNvbXBpbGUociJeX2ltcF9fKC4qKSBpbiBweXRob25cZCtcLmRsbCIpLm1hdGNoCi0KLSAgICBmID0gb3BlbihkZWZfZmlsZSwndycpCi0gICAgZi53cml0ZSgiTElCUkFSWSAlc1xuIiAlIGRsbF9maWxlKQotICAgIGYud3JpdGUoIkVYUE9SVFNcbiIpCi0KLSAgICBubV9waXBlID0gb3MucG9wZW4obm1fY29tbWFuZCkKLSAgICBmb3IgbGluZSBpbiBubV9waXBlLnJlYWRsaW5lcygpOgotICAgICAgICBtID0gZXhwb3J0X21hdGNoKGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICBmLndyaXRlKG0uZ3JvdXAoMSkrIlxuIikKLSAgICBmLmNsb3NlKCkKLSAgICBleGl0ID0gbm1fcGlwZS5jbG9zZSgpCi0KLSAgICBpZiBleGl0OgotICAgICAgICBwcmludCh3YXJuaW5nICUgIm5tIGRpZCBub3QgcnVuIHN1Y2Nlc3NmdWxseSIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgb3Muc3lzdGVtKGRsbHRvb2xfY29tbWFuZCkgIT0gMDoKLSAgICAgICAgcHJpbnQod2FybmluZyAlICJkbGx0b29sIGRpZCBub3QgcnVuIHN1Y2Nlc3NmdWxseSIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotIyBUYXJnZXQgZmlsZXMgKC5kZWYgYW5kIC5hKSBnbyBpbiBQQ0J1aWxkIGRpcmVjdG9yeQotbGliX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCAicHl0aG9uJXMlcy5saWIiICUgKG1ham9yLCBtaW5vcikpCi1kZWZfZmlsZSA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsICJweXRob24lcyVzLmRlZiIgJSAobWFqb3IsIG1pbm9yKSkKLWRsbF9maWxlID0gInB5dGhvbiVzJXMuZGxsIiAlIChtYWpvciwgbWlub3IpCi1taW5nd19saWIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCAibGlicHl0aG9uJXMlcy5hIiAlIChtYWpvciwgbWlub3IpKQotCi1oYXZlX21pbmd3ID0gYnVpbGRfbWluZ3dfbGliKGxpYl9maWxlLCBkZWZfZmlsZSwgZGxsX2ZpbGUsIG1pbmd3X2xpYikKLQotIyBEZXRlcm1pbmUgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUKLWlmIG9zLnN5c3RlbSgibm1ha2UgL25vbG9nbyAvYyAvZiBtc2lzdXBwb3J0Lm1hayIpICE9IDA6Ci0gICAgcmFpc2UgUnVudGltZUVycm9yKCInbm1ha2UgL2YgbXNpc3VwcG9ydC5tYWsnIGZhaWxlZCIpCi1kbGxfcGF0aCA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsIGRsbF9maWxlKQotbXNpbGliLnNldF9hcmNoX2Zyb21fZmlsZShkbGxfcGF0aCkKLWlmIG1zaWxpYi5wZV90eXBlKGRsbF9wYXRoKSAhPSBtc2lsaWIucGVfdHlwZSgibXNpc3VwcG9ydC5kbGwiKToKLSAgICByYWlzZSBTeXN0ZW1FcnJvcigibXNpc3VwcG9ydC5kbGwgZm9yIGluY29ycmVjdCBhcmNoaXRlY3R1cmUiKQotCi1pZiBtc2lsaWIuV2luNjQ6Ci0gICAgdXBncmFkZV9jb2RlID0gdXBncmFkZV9jb2RlXzY0Ci0KLWlmIHNuYXBzaG90OgotICAgIHByb2R1Y3RfY29kZSA9IG1zaWxpYi5nZW5fdXVpZCgpCi1lbHNlOgotICAgICMgb2ZmaWNpYWwgcmVsZWFzZTogZ2VuZXJhdGUgVVVJRCBmcm9tIHRoZSBkb3dubG9hZCBsaW5rIHRoYXQgdGhlIGZpbGUgd2lsbCBoYXZlCi0gICAgaW1wb3J0IHV1aWQKLSAgICBwcm9kdWN0X2NvZGUgPSB1dWlkLnV1aWQzKHV1aWQuTkFNRVNQQUNFX1VSTCwKLSAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyVzLiVzLiVzL3B5dGhvbi0lcyVzLm1zaScgJQotICAgICAgICAgICAgICAgICAgICAobWFqb3IsIG1pbm9yLCBtaWNybywgZnVsbF9jdXJyZW50X3ZlcnNpb24sIG1zaWxpYi5hcmNoX2V4dCkpCi0gICAgcHJvZHVjdF9jb2RlID0gJ3slc30nICUgcHJvZHVjdF9jb2RlCi0KLWlmIHRlc3RwYWNrYWdlOgotICAgIGV4dCA9ICdweCcKLSAgICB0ZXN0cHJlZml4ID0gJ3gnCi1lbHNlOgotICAgIGV4dCA9ICdweScKLSAgICB0ZXN0cHJlZml4ID0gJycKLQotaWYgbXNpbGliLldpbjY0OgotICAgIFN5c3RlbUZvbGRlck5hbWUgPSAiW1N5c3RlbTY0Rm9sZGVyXSIKLSAgICByZWdpc3RyeV9jb21wb25lbnQgPSA0fDI1NgotZWxzZToKLSAgICBTeXN0ZW1Gb2xkZXJOYW1lID0gIltTeXN0ZW1Gb2xkZXJdIgotICAgIHJlZ2lzdHJ5X2NvbXBvbmVudCA9IDQKLQotbXNpbGliLnJlc2V0KCkKLQotIyBjb25kaXRpb24gaW4gd2hpY2ggdG8gaW5zdGFsbCBweXRob254eS5kbGwgaW4gc3lzdGVtMzI6Ci0jIGEpIGl0IGlzIFdpbmRvd3MgOXggb3IKLSMgYikgaXQgaXMgTlQsIHRoZSB1c2VyIGlzIHByaXZpbGVnZWQsIGFuZCBoYXMgY2hvc2VuIHBlci1tYWNoaW5lIGluc3RhbGxhdGlvbgotc3lzMzJjb25kID0gIihXaW5kb3dzOXggb3IgKFByaXZpbGVnZWQgYW5kIEFMTFVTRVJTKSkiCi0KLWRlZiBidWlsZF9kYXRhYmFzZSgpOgotICAgICIiIkdlbmVyYXRlIGFuIGVtcHR5IGRhdGFiYXNlLCB3aXRoIGp1c3QgdGhlIHNjaGVtYSBhbmQgdGhlCi0gICAgU3VtbWFyeSBpbmZvcm1hdGlvbiBzdHJlYW0uIiIiCi0gICAgaWYgc25hcHNob3Q6Ci0gICAgICAgIHVjID0gdXBncmFkZV9jb2RlX3NuYXBzaG90Ci0gICAgZWxzZToKLSAgICAgICAgdWMgPSB1cGdyYWRlX2NvZGUKLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIHByb2R1Y3RzdWZmaXggPSAiICg2NC1iaXQpIgotICAgIGVsc2U6Ci0gICAgICAgIHByb2R1Y3RzdWZmaXggPSAiIgotICAgICMgc2NoZW1hIHJlcHJlc2VudHMgdGhlIGluc3RhbGxlciAyLjAgZGF0YWJhc2Ugc2NoZW1hLgotICAgICMgc2VxdWVuY2UgaXMgdGhlIHNldCBvZiBzdGFuZGFyZCBzZXF1ZW5jZXMKLSAgICAjICh1aS9leGVjdXRlLCBhZG1pbi9hZHZ0L2luc3RhbGwpCi0gICAgbXNpbmFtZSA9ICJweXRob24tJXMlcy5tc2kiICUgKGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpCi0gICAgZGIgPSBtc2lsaWIuaW5pdF9kYXRhYmFzZShtc2luYW1lLAotICAgICAgICAgICAgICAgICAgc2NoZW1hLCBQcm9kdWN0TmFtZT0iUHl0aG9uICIrZnVsbF9jdXJyZW50X3ZlcnNpb24rcHJvZHVjdHN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgIFByb2R1Y3RDb2RlPXByb2R1Y3RfY29kZSwKLSAgICAgICAgICAgICAgICAgIFByb2R1Y3RWZXJzaW9uPWN1cnJlbnRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgIE1hbnVmYWN0dXJlcj11IlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIiwKLSAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdWFjID0gVHJ1ZSkKLSAgICAjIFRoZSBkZWZhdWx0IHNlcXVlbmNpbmcgb2YgdGhlIFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgYWN0aW9uIGNhdXNlcwotICAgICMgcmVtb3ZhbCBvZiBmaWxlcyB0aGF0IGdvdCBqdXN0IGluc3RhbGxlZC4gUGxhY2UgaXQgYWZ0ZXIKLSAgICAjIEluc3RhbGxJbml0aWFsaXplLCBzbyB3ZSBmaXJzdCB1bmluc3RhbGwgZXZlcnl0aGluZywgYnV0IHN0aWxsIHJvbGwKLSAgICAjIGJhY2sgaW4gY2FzZSB0aGUgaW5zdGFsbGF0aW9uIGlzIGludGVycnVwdGVkCi0gICAgbXNpbGliLmNoYW5nZV9zZXF1ZW5jZShzZXF1ZW5jZS5JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW92ZUV4aXN0aW5nUHJvZHVjdHMiLCAxNTEwKQotICAgIG1zaWxpYi5hZGRfdGFibGVzKGRiLCBzZXF1ZW5jZSkKLSAgICAjIFdlIGNhbm5vdCBzZXQgQUxMVVNFUlMgaW4gdGhlIHByb3BlcnR5IHRhYmxlLCBhcyB0aGlzIGNhbm5vdCBiZQotICAgICMgcmVzZXQgaWYgdGhlIHVzZXIgY2hvc2VzIGEgcGVyLXVzZXIgaW5zdGFsbGF0aW9uLiBJbnN0ZWFkLCB3ZQotICAgICMgbWFpbnRhaW4gV2hpY2hVc2Vycywgd2hpY2ggY2FuIGJlICJBTEwiIG9yICJKVVNUTUUiLiBUaGUgVUkgbWFuYWdlcwotICAgICMgdGhpcyBwcm9wZXJ0eSwgYW5kIHdoZW4gdGhlIGV4ZWN1dGlvbiBzdGFydHMsIEFMTFVTRVJTIGlzIHNldAotICAgICMgYWNjb3JkaW5nbHkuCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsIFsoIlVwZ3JhZGVDb2RlIiwgdWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJXaGljaFVzZXJzIiwgIkFMTCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJQcm9kdWN0TGluZSIsICJQeXRob24lcyVzIiAlIChtYWpvciwgbWlub3IpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICBkYi5Db21taXQoKQotICAgIHJldHVybiBkYiwgbXNpbmFtZQotCi1kZWYgcmVtb3ZlX29sZF92ZXJzaW9ucyhkYik6Ci0gICAgIkZpbGwgdGhlIHVwZ3JhZGUgdGFibGUuIgotICAgIHN0YXJ0ID0gIiVzLiVzLjAiICUgKG1ham9yLCBtaW5vcikKLSAgICAjIFRoaXMgcmVxdWVzdHMgdGhhdCBmZWF0dXJlIHNlbGVjdGlvbiBzdGF0ZXMgb2YgYW4gb2xkZXIKLSAgICAjIGluc3RhbGxhdGlvbiBzaG91bGQgYmUgZm9yd2FyZGVkIGludG8gdGhpcyBvbmUuIFVwZ3JhZGluZwotICAgICMgcmVxdWlyZXMgdGhhdCBib3RoIHRoZSBvbGQgYW5kIHRoZSBuZXcgaW5zdGFsbGF0aW9uIGFyZQotICAgICMgZWl0aGVyIGJvdGggcGVyLW1hY2hpbmUgb3IgcGVyLXVzZXIuCi0gICAgbWlncmF0ZV9mZWF0dXJlcyA9IDEKLSAgICAjIFNlZSAiVXBncmFkZSBUYWJsZSIuIFdlIHJlbW92ZSByZWxlYXNlcyB3aXRoIHRoZSBzYW1lIG1ham9yIGFuZAotICAgICMgbWlub3IgdmVyc2lvbi4gRm9yIGFuIHNuYXBzaG90LCB3ZSByZW1vdmUgYWxsIGVhcmxpZXIgc25hcHNob3RzLiBGb3IKLSAgICAjIGEgcmVsZWFzZSwgd2UgcmVtb3ZlIGFsbCBzbmFwc2hvdHMsIGFuZCBhbGwgZWFybGllciByZWxlYXNlcy4KLSAgICBpZiBzbmFwc2hvdDoKLSAgICAgICAgYWRkX2RhdGEoZGIsICJVcGdyYWRlIiwKLSAgICAgICAgICAgIFsodXBncmFkZV9jb2RlX3NuYXBzaG90LCBzdGFydCwKLSAgICAgICAgICAgICAgY3VycmVudF92ZXJzaW9uLAotICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGxhbmd1YWdlCi0gICAgICAgICAgICAgIG1pZ3JhdGVfZmVhdHVyZXMsCi0gICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICAgICAgICAgICAgIyBNaWdyYXRlIEFMTCBmZWF0dXJlcwotICAgICAgICAgICAgICAiUkVNT1ZFT0xEU05BUFNIT1QiKV0pCi0gICAgICAgIHByb3BzID0gIlJFTU9WRU9MRFNOQVBTSE9UIgotICAgIGVsc2U6Ci0gICAgICAgIGFkZF9kYXRhKGRiLCAiVXBncmFkZSIsCi0gICAgICAgICAgICBbKHVwZ3JhZGVfY29kZSwgc3RhcnQsIGN1cnJlbnRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgTm9uZSwgbWlncmF0ZV9mZWF0dXJlcywgTm9uZSwgIlJFTU9WRU9MRFZFUlNJT04iKSwKLSAgICAgICAgICAgICAodXBncmFkZV9jb2RlX3NuYXBzaG90LCBzdGFydCwgIiVzLiVkLjAiICUgKG1ham9yLCBpbnQobWlub3IpKzEpLAotICAgICAgICAgICAgICBOb25lLCBtaWdyYXRlX2ZlYXR1cmVzLCBOb25lLCAiUkVNT1ZFT0xEU05BUFNIT1QiKV0pCi0gICAgICAgIHByb3BzID0gIlJFTU9WRU9MRFNOQVBTSE9UO1JFTU9WRU9MRFZFUlNJT04iCi0KLSAgICBwcm9wcyArPSAiO1RBUkdFVERJUjtETExESVI7TEFVTkNIRVJESVIiCi0gICAgIyBJbnN0YWxsZXIgY29sbGVjdHMgdGhlIHByb2R1Y3QgY29kZXMgb2YgdGhlIGVhcmxpZXIgcmVsZWFzZXMgaW4KLSAgICAjIHRoZXNlIHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiB0aGUgcHJvcGVydGllcywKLSAgICAjIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBhcyBzZWN1cmUuIFNlZSAiU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBQcm9wZXJ0eSIKLSAgICBhZGRfZGF0YShkYiwgIlByb3BlcnR5IiwgWygiU2VjdXJlQ3VzdG9tUHJvcGVydGllcyIsIHByb3BzKV0pCi0KLWNsYXNzIFB5RGlhbG9nKERpYWxvZyk6Ci0gICAgIiIiRGlhbG9nIGNsYXNzIHdpdGggYSBmaXhlZCBsYXlvdXQ6IGNvbnRyb2xzIGF0IHRoZSB0b3AsIHRoZW4gYSBydWxlciwKLSAgICB0aGVuIGEgbGlzdCBvZiBidXR0b25zOiBiYWNrLCBuZXh0LCBjYW5jZWwuIE9wdGlvbmFsbHkgYSBiaXRtYXAgYXQgdGhlCi0gICAgbGVmdC4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgotICAgICAgICAiIiJEaWFsb2coZGF0YWJhc2UsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHJpYnV0ZXMsIHRpdGxlLCBmaXJzdCwKLSAgICAgICAgZGVmYXVsdCwgY2FuY2VsLCBiaXRtYXA9dHJ1ZSkiIiIKLSAgICAgICAgRGlhbG9nLl9faW5pdF9fKHNlbGYsICphcmdzKQotICAgICAgICBydWxlciA9IHNlbGYuaCAtIDM2Ci0gICAgICAgIGJtd2lkdGggPSAxNTIqcnVsZXIvMzI4Ci0gICAgICAgIGlmIGt3LmdldCgiYml0bWFwIiwgVHJ1ZSk6Ci0gICAgICAgICAgICBzZWxmLmJpdG1hcCgiQml0bWFwIiwgMCwgMCwgYm13aWR0aCwgcnVsZXIsICJQeXRob25XaW4iKQotICAgICAgICBzZWxmLmxpbmUoIkJvdHRvbUxpbmUiLCAwLCBydWxlciwgc2VsZi53LCAwKQotCi0gICAgZGVmIHRpdGxlKHNlbGYsIHRpdGxlKToKLSAgICAgICAgIlNldCB0aGUgdGl0bGUgdGV4dCBvZiB0aGUgZGlhbG9nIGF0IHRoZSB0b3AuIgotICAgICAgICAjIG5hbWUsIHgsIHksIHcsIGgsIGZsYWdzPVZpc2libGV8RW5hYmxlZHxUcmFuc3BhcmVudHxOb1ByZWZpeCwKLSAgICAgICAgIyB0ZXh0LCBpbiBWZXJkYW5hQm9sZDEwCi0gICAgICAgIHNlbGYudGV4dCgiVGl0bGUiLCAxMzUsIDEwLCAyMjAsIDYwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgciJ7XFZlcmRhbmFCb2xkMTB9JXMiICUgdGl0bGUpCi0KLSAgICBkZWYgYmFjayhzZWxmLCB0aXRsZSwgbmV4dCwgbmFtZSA9ICJCYWNrIiwgYWN0aXZlID0gMSk6Ci0gICAgICAgICIiIkFkZCBhIGJhY2sgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIHBvc3NpYmx5IGluaXRpYWxseSBkaXNhYmxlZC4KLQotICAgICAgICBSZXR1cm4gdGhlIGJ1dHRvbiwgc28gdGhhdCBldmVudHMgY2FuIGJlIGFzc29jaWF0ZWQiIiIKLSAgICAgICAgaWYgYWN0aXZlOgotICAgICAgICAgICAgZmxhZ3MgPSAzICMgVmlzaWJsZXxFbmFibGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbGFncyA9IDEgIyBWaXNpYmxlCi0gICAgICAgIHJldHVybiBzZWxmLnB1c2hidXR0b24obmFtZSwgMTgwLCBzZWxmLmgtMjcgLCA1NiwgMTcsIGZsYWdzLCB0aXRsZSwgbmV4dCkKLQotICAgIGRlZiBjYW5jZWwoc2VsZiwgdGl0bGUsIG5leHQsIG5hbWUgPSAiQ2FuY2VsIiwgYWN0aXZlID0gMSk6Ci0gICAgICAgICIiIkFkZCBhIGNhbmNlbCBidXR0b24gd2l0aCBhIGdpdmVuIHRpdGxlLCB0aGUgdGFiLW5leHQgYnV0dG9uLAotICAgICAgICBpdHMgbmFtZSBpbiB0aGUgQ29udHJvbCB0YWJsZSwgcG9zc2libHkgaW5pdGlhbGx5IGRpc2FibGVkLgotCi0gICAgICAgIFJldHVybiB0aGUgYnV0dG9uLCBzbyB0aGF0IGV2ZW50cyBjYW4gYmUgYXNzb2NpYXRlZCIiIgotICAgICAgICBpZiBhY3RpdmU6Ci0gICAgICAgICAgICBmbGFncyA9IDMgIyBWaXNpYmxlfEVuYWJsZWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZsYWdzID0gMSAjIFZpc2libGUKLSAgICAgICAgcmV0dXJuIHNlbGYucHVzaGJ1dHRvbihuYW1lLCAzMDQsIHNlbGYuaC0yNywgNTYsIDE3LCBmbGFncywgdGl0bGUsIG5leHQpCi0KLSAgICBkZWYgbmV4dChzZWxmLCB0aXRsZSwgbmV4dCwgbmFtZSA9ICJOZXh0IiwgYWN0aXZlID0gMSk6Ci0gICAgICAgICIiIkFkZCBhIE5leHQgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIHBvc3NpYmx5IGluaXRpYWxseSBkaXNhYmxlZC4KLQotICAgICAgICBSZXR1cm4gdGhlIGJ1dHRvbiwgc28gdGhhdCBldmVudHMgY2FuIGJlIGFzc29jaWF0ZWQiIiIKLSAgICAgICAgaWYgYWN0aXZlOgotICAgICAgICAgICAgZmxhZ3MgPSAzICMgVmlzaWJsZXxFbmFibGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbGFncyA9IDEgIyBWaXNpYmxlCi0gICAgICAgIHJldHVybiBzZWxmLnB1c2hidXR0b24obmFtZSwgMjM2LCBzZWxmLmgtMjcsIDU2LCAxNywgZmxhZ3MsIHRpdGxlLCBuZXh0KQotCi0gICAgZGVmIHhidXR0b24oc2VsZiwgbmFtZSwgdGl0bGUsIG5leHQsIHhwb3MpOgotICAgICAgICAiIiJBZGQgYSBidXR0b24gd2l0aCBhIGdpdmVuIHRpdGxlLCB0aGUgdGFiLW5leHQgYnV0dG9uLAotICAgICAgICBpdHMgbmFtZSBpbiB0aGUgQ29udHJvbCB0YWJsZSwgZ2l2aW5nIGl0cyB4IHBvc2l0aW9uOyB0aGUKLSAgICAgICAgeS1wb3NpdGlvbiBpcyBhbGlnbmVkIHdpdGggdGhlIG90aGVyIGJ1dHRvbnMuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnB1c2hidXR0b24obmFtZSwgaW50KHNlbGYudyp4cG9zIC0gMjgpLCBzZWxmLmgtMjcsIDU2LCAxNywgMywgdGl0bGUsIG5leHQpCi0KLWRlZiBhZGRfdWkoZGIpOgotICAgIHggPSB5ID0gNTAKLSAgICB3ID0gMzcwCi0gICAgaCA9IDMwMAotICAgIHRpdGxlID0gIltQcm9kdWN0TmFtZV0gU2V0dXAiCi0KLSAgICAjIHNlZSAiRGlhbG9nIFN0eWxlIEJpdHMiCi0gICAgbW9kYWwgPSAzICAgICAgIyB2aXNpYmxlIHwgbW9kYWwKLSAgICBtb2RlbGVzcyA9IDEgICAjIHZpc2libGUKLSAgICB0cmFja19kaXNrX3NwYWNlID0gMzIKLQotICAgIGFkZF9kYXRhKGRiLCAnQWN0aW9uVGV4dCcsIHVpc2FtcGxlLkFjdGlvblRleHQpCi0gICAgYWRkX2RhdGEoZGIsICdVSVRleHQnLCB1aXNhbXBsZS5VSVRleHQpCi0KLSAgICAjIEJpdG1hcHMKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3JjZGlyK3IiXFBDXHB5dGhvbl9pY29uLmV4ZSIpOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlJ1biBpY29ucy5tYWsgaW4gUEMgZGlyZWN0b3J5IikKLSAgICBhZGRfZGF0YShkYiwgIkJpbmFyeSIsCi0gICAgICAgICAgICAgWygiUHl0aG9uV2luIiwgbXNpbGliLkJpbmFyeShyIiVzXFBDYnVpbGRcaW5zdGFsbGVyLmJtcCIgJSBzcmNkaXIpKSwgIyAxNTJ4MzI4IHBpeGVscwotICAgICAgICAgICAgICAoInB5LmljbyIsbXNpbGliLkJpbmFyeShzcmNkaXIrciJcUENccHkuaWNvIikpLAotICAgICAgICAgICAgIF0pCi0gICAgYWRkX2RhdGEoZGIsICJJY29uIiwKLSAgICAgICAgICAgICBbKCJweXRob25faWNvbi5leGUiLCBtc2lsaWIuQmluYXJ5KHNyY2RpcityIlxQQ1xweXRob25faWNvbi5leGUiKSldKQotCi0gICAgIyBTY3JpcHRzCi0gICAgIyBDaGVja0RpciBzZXRzIFRhcmdldEV4aXN0cyBpZiBUQVJHRVRESVIgZXhpc3RzLgotICAgICMgVXBkYXRlRWRpdElETEUgc2V0cyB0aGUgUkVHSVNUUlkudGNsIGNvbXBvbmVudCBpbnRvCi0gICAgIyB0aGUgaW5zdGFsbGVkL3VuaW5zdGFsbGVkIHN0YXRlIGFjY29yZGluZyB0byBib3RoIHRoZQotICAgICMgRXh0ZW5zaW9ucyBhbmQgVGNsVGsgZmVhdHVyZXMuCi0gICAgYWRkX2RhdGEoZGIsICJCaW5hcnkiLCBbKCJTY3JpcHQiLCBtc2lsaWIuQmluYXJ5KCJtc2lzdXBwb3J0LmRsbCIpKV0pCi0gICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSAxIgotICAgIGlmIG1zaWxpYi5XaW42NDoKLSAgICAgICAgQ2hlY2tEaXIgPSAiQ2hlY2tEaXIiCi0gICAgICAgIFVwZGF0ZUVkaXRJRExFID0gIlVwZGF0ZUVkaXRJRExFIgotICAgIGVsc2U6Ci0gICAgICAgIENoZWNrRGlyID0gICJfQ2hlY2tEaXJANCIKLSAgICAgICAgVXBkYXRlRWRpdElETEUgPSAiX1VwZGF0ZUVkaXRJRExFQDQiCi0gICAgYWRkX2RhdGEoZGIsICJDdXN0b21BY3Rpb24iLAotICAgICAgICBbKCJDaGVja0RpciIsIDEsICJTY3JpcHQiLCBDaGVja0RpcildKQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICBhZGRfZGF0YShkYiwgIkN1c3RvbUFjdGlvbiIsCi0gICAgICAgIFsoIlVwZGF0ZUVkaXRJRExFIiwgMSwgIlNjcmlwdCIsIFVwZGF0ZUVkaXRJRExFKV0pCi0KLSAgICAjIFVJIGN1c3RvbWl6YXRpb24gcHJvcGVydGllcwotICAgIGFkZF9kYXRhKGRiLCAiUHJvcGVydHkiLAotICAgICAgICAgICAgICMgU2VlICJEZWZhdWx0VUlGb250IFByb3BlcnR5IgotICAgICAgICAgICAgIFsoIkRlZmF1bHRVSUZvbnQiLCAiRGxnRm9udDgiKSwKLSAgICAgICAgICAgICAgIyBTZWUgIkVycm9yRGlhbG9nIFN0eWxlIEJpdCIKLSAgICAgICAgICAgICAgKCJFcnJvckRpYWxvZyIsICJFcnJvckRsZyIpLAotICAgICAgICAgICAgICAoIlByb2dyZXNzMSIsICJJbnN0YWxsIiksICAgIyBtb2RpZmllZCBpbiBtYWludGVuYW5jZSB0eXBlIGRsZwotICAgICAgICAgICAgICAoIlByb2dyZXNzMiIsICJpbnN0YWxscyIpLAotICAgICAgICAgICAgICAoIk1haW50ZW5hbmNlRm9ybV9BY3Rpb24iLCAiUmVwYWlyIildKQotCi0gICAgIyBGb250cywgc2VlICJUZXh0U3R5bGUgVGFibGUiCi0gICAgYWRkX2RhdGEoZGIsICJUZXh0U3R5bGUiLAotICAgICAgICAgICAgIFsoIkRsZ0ZvbnQ4IiwgIlRhaG9tYSIsIDksIE5vbmUsIDApLAotICAgICAgICAgICAgICAoIkRsZ0ZvbnRCb2xkOCIsICJUYWhvbWEiLCA4LCBOb25lLCAxKSwgI2JvbGQKLSAgICAgICAgICAgICAgKCJWZXJkYW5hQm9sZDEwIiwgIlZlcmRhbmEiLCAxMCwgTm9uZSwgMSksCi0gICAgICAgICAgICAgICgiVmVyZGFuYVJlZDkiLCAiVmVyZGFuYSIsIDksIDI1NSwgMCksCi0gICAgICAgICAgICAgXSkKLQotICAgIGNvbXBpbGVhcmdzID0gcictV2kgIltUQVJHRVRESVJdTGliXGNvbXBpbGVhbGwucHkiIC1mIC14ICJiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfHB5Ml98bGliMnRvM1xcdGVzdHN8dmVudlxcc2NyaXB0cyIgIltUQVJHRVRESVJdTGliIicKLSAgICBsaWIydG8zYXJncyA9IHInLWMgImltcG9ydCBsaWIydG8zLnB5Z3JhbSwgbGliMnRvMy5wYXRjb21wO2xpYjJ0bzMucGF0Y29tcC5QYXR0ZXJuQ29tcGlsZXIoKSInCi0gICAgdXBkYXRlcGlwYXJncyA9IHInLW0gZW5zdXJlcGlwIC1VIC0tZGVmYXVsdC1waXAnCi0gICAgcmVtb3ZlcGlwYXJncyA9IHInLUIgLW0gZW5zdXJlcGlwLl91bmluc3RhbGwnCi0gICAgIyBTZWUgIkN1c3RvbUFjdGlvbiBUYWJsZSIKLSAgICBhZGRfZGF0YShkYiwgIkN1c3RvbUFjdGlvbiIsIFsKLSAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVGaXJzdFNlcXVlbmNlICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlVGV4dERhdGEgKyBtc2lkYkN1c3RvbUFjdGlvblR5cGVQcm9wZXJ0eQotICAgICAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDUxIiwKLSAgICAgICAgIyAiQ3VzdG9tIEFjdGlvbiBFeGVjdXRpb24gU2NoZWR1bGluZyBPcHRpb25zIgotICAgICAgICAoIkluaXRpYWxUYXJnZXREaXIiLCAzMDcsICJUQVJHRVRESVIiLAotICAgICAgICAgIltXaW5kb3dzVm9sdW1lXVB5dGhvbiVzJXMiICUgKG1ham9yLCBtaW5vcikpLAotICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgMzA3LCAiRExMRElSIiwgIltUQVJHRVRESVJdIiksCi0gICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsIDMwNywgIkRMTERJUiIsIFN5c3RlbUZvbGRlck5hbWUpLAotICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbVEFSR0VURElSXSIpLAotICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1dpbmRvd3NGb2xkZXJdIiksCi0gICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRXhlICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlU291cmNlRmlsZQotICAgICAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDE4IgotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZUluU2NyaXB0ICgxMDI0KTsgcnVuIGR1cmluZyBhY3R1YWwgaW5zdGFsbGF0aW9uCi0gICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlTm9JbXBlcnNvbmF0ZSAoMjA0OCk7IHJ1biBhY3Rpb24gaW4gc3lzdGVtIGFjY291bnQsIG5vdCB1c2VyIGFjY291bnQKLSAgICAgICAgKCJDb21waWxlUHljIiwgMTgrMTAyNCsyMDQ4LCAicHl0aG9uLmV4ZSIsIGNvbXBpbGVhcmdzKSwKLSAgICAgICAgKCJDb21waWxlUHlvIiwgMTgrMTAyNCsyMDQ4LCAicHl0aG9uLmV4ZSIsICItTyAiK2NvbXBpbGVhcmdzKSwKLSAgICAgICAgKCJDb21waWxlR3JhbW1hciIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCBsaWIydG8zYXJncyksCi0gICAgICAgICgiVXBkYXRlUGlwIiwgMTgrMTAyNCsyMDQ4LCAicHl0aG9uLmV4ZSIsIHVwZGF0ZXBpcGFyZ3MpLAotICAgICAgICAoIlJlbW92ZVBpcCIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCByZW1vdmVwaXBhcmdzKSwKLSAgICAgICAgXSkKLQotICAgICMgVUkgU2VxdWVuY2VzLCBzZWUgIkluc3RhbGxVSVNlcXVlbmNlIFRhYmxlIiwgIlVzaW5nIGEgU2VxdWVuY2UgVGFibGUiCi0gICAgIyBOdW1iZXJzIGluZGljYXRlIHNlcXVlbmNlOyBzZWUgc2VxdWVuY2UucHkgZm9yIGhvdyB0aGVzZSBhY3Rpb24gaW50ZWdyYXRlCi0gICAgYWRkX2RhdGEoZGIsICJJbnN0YWxsVUlTZXF1ZW5jZSIsCi0gICAgICAgICAgICAgWygiUHJlcGFyZURsZyIsICJOb3QgUHJpdmlsZWdlZCBvciBXaW5kb3dzOXggb3IgSW5zdGFsbGVkIiwgMTQwKSwKLSAgICAgICAgICAgICAgKCJXaGljaFVzZXJzRGxnIiwgIlByaXZpbGVnZWQgYW5kIG5vdCBXaW5kb3dzOXggYW5kIG5vdCBJbnN0YWxsZWQiLCAxNDEpLAotICAgICAgICAgICAgICAoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKLSAgICAgICAgICAgICAgIyBJbiB0aGUgdXNlciBpbnRlcmZhY2UsIGFzc3VtZSBhbGwtdXNlcnMgaW5zdGFsbGF0aW9uIGlmIHByaXZpbGVnZWQuCi0gICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCi0gICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKLSAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKLSAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKLSAgICAgICAgICAgICAgKCJTZWxlY3REaXJlY3RvcnlEbGciLCAiTm90IEluc3RhbGxlZCIsIDEyMzApLAotICAgICAgICAgICAgICAjIFhYWCBubyBzdXBwb3J0IGZvciByZXN1bWUgaW5zdGFsbGF0aW9ucyB5ZXQKLSAgICAgICAgICAgICAgIygiUmVzdW1lRGxnIiwgIkluc3RhbGxlZCBBTkQgKFJFU1VNRSBPUiBQcmVzZWxlY3RlZCkiLCAxMjQwKSwKLSAgICAgICAgICAgICAgKCJNYWludGVuYW5jZVR5cGVEbGciLCAiSW5zdGFsbGVkIEFORCBOT1QgUkVTVU1FIEFORCBOT1QgUHJlc2VsZWN0ZWQiLCAxMjUwKSwKLSAgICAgICAgICAgICAgKCJQcm9ncmVzc0RsZyIsIE5vbmUsIDEyODApXSkKLSAgICBhZGRfZGF0YShkYiwgIkFkbWluVUlTZXF1ZW5jZSIsCi0gICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAotICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIicsIDc1MSksCi0gICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCi0gICAgICAgICAgICAgXSkKLQotICAgICMgUHJlcGVuZCBUQVJHRVRESVIgdG8gdGhlIHN5c3RlbSBwYXRoLCBhbmQgcmVtb3ZlIGl0IG9uIHVuaW5zdGFsbC4KLSAgICBhZGRfZGF0YShkYiwgIkVudmlyb25tZW50IiwKLSAgICAgICAgICAgICBbKCJQYXRoQWRkaXRpb24iLCAiPS0qUGF0aCIsICJbVEFSR0VURElSXTtbVEFSR0VURElSXVNjcmlwdHM7W35dIiwgIlJFR0lTVFJZLnBhdGgiKV0pCi0KLSAgICAjIEV4ZWN1dGUgU2VxdWVuY2VzCi0gICAgYWRkX2RhdGEoZGIsICJJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlIiwKLSAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKLSAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAotICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKLSAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAotICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCi0gICAgICAgICAgICAgKCJVcGRhdGVFZGl0SURMRSIsIE5vbmUsIDEwNTApLAotICAgICAgICAgICAgICMgcnVuIGNvbW1hbmQgaWYgaW5zdGFsbCBzdGF0ZSBvZiBwaXAgY2hhbmdlcyB0byBJTlNUQUxMU1RBVEVfTE9DQUwKLSAgICAgICAgICAgICAjIHJ1biBhZnRlciBJbnN0YWxsRmlsZXMKLSAgICAgICAgICAgICAoIlVwZGF0ZVBpcCIsICImcGlwX2ZlYXR1cmU9MyIsIDQwMDEpLAotICAgICAgICAgICAgICMgcmVtb3ZlIHBpcCB3aGVuIHN0YXRlIGNoYW5nZXMgdG8gSU5TVEFMTFNUQVRFX0FCU0VOVAotICAgICAgICAgICAgICMgcnVuIGJlZm9yZSBSZW1vdmVGaWxlcwotICAgICAgICAgICAgICgiUmVtb3ZlUGlwIiwgIiZwaXBfZmVhdHVyZT0yIiwgMzQ5OSksCi0gICAgICAgICAgICAgKCJDb21waWxlUHljIiwgIkNPTVBJTEVBTEwiLCA0MDAyKSwKLSAgICAgICAgICAgICAoIkNvbXBpbGVQeW8iLCAiQ09NUElMRUFMTCIsIDQwMDMpLAotICAgICAgICAgICAgICgiQ29tcGlsZUdyYW1tYXIiLCAiQ09NUElMRUFMTCIsIDQwMDQpLAotICAgICAgICAgICAgXSkKLSAgICBhZGRfZGF0YShkYiwgIkFkbWluRXhlY3V0ZVNlcXVlbmNlIiwKLSAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKLSAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIicsIDc1MSksCi0gICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiJywgNzUyKSwKLSAgICAgICAgICAgIF0pCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFN0YW5kYXJkIGRpYWxvZ3M6IEZhdGFsRXJyb3IsIFVzZXJFeGl0LCBFeGl0RGlhbG9nCi0gICAgZmF0YWw9UHlEaWFsb2coZGIsICJGYXRhbEVycm9yIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAiRmluaXNoIiwgIkZpbmlzaCIsICJGaW5pc2giKQotICAgIGZhdGFsLnRpdGxlKCJbUHJvZHVjdE5hbWVdIEluc3RhbGxlciBlbmRlZCBwcmVtYXR1cmVseSIpCi0gICAgZmF0YWwuYmFjaygiPCBCYWNrIiwgIkZpbmlzaCIsIGFjdGl2ZSA9IDApCi0gICAgZmF0YWwuY2FuY2VsKCJDYW5jZWwiLCAiQmFjayIsIGFjdGl2ZSA9IDApCi0gICAgZmF0YWwudGV4dCgiRGVzY3JpcHRpb24xIiwgMTM1LCA3MCwgMjIwLCA4MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJbUHJvZHVjdE5hbWVdIHNldHVwIGVuZGVkIHByZW1hdHVyZWx5IGJlY2F1c2Ugb2YgYW4gZXJyb3IuICBZb3VyIHN5c3RlbSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuICBUbyBpbnN0YWxsIHRoaXMgcHJvZ3JhbSBhdCBhIGxhdGVyIHRpbWUsIHBsZWFzZSBydW4gdGhlIGluc3RhbGxhdGlvbiBhZ2Fpbi4iKQotICAgIGZhdGFsLnRleHQoIkRlc2NyaXB0aW9uMiIsIDEzNSwgMTU1LCAyMjAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIkNsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIEluc3RhbGxlci4iKQotICAgIGM9ZmF0YWwubmV4dCgiRmluaXNoIiwgIkNhbmNlbCIsIG5hbWU9IkZpbmlzaCIpCi0gICAgIyBTZWUgIkNvbnRyb2xFdmVudCBUYWJsZSIuIFBhcmFtZXRlcnMgYXJlIHRoZSBldmVudCwgdGhlIHBhcmFtZXRlcgotICAgICMgdG8gdGhlIGFjdGlvbiwgYW5kIG9wdGlvbmFsbHkgdGhlIGNvbmRpdGlvbiBmb3IgdGhlIGV2ZW50LCBhbmQgdGhlIG9yZGVyCi0gICAgIyBvZiBldmVudHMuCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotCi0gICAgdXNlcl9leGl0PVB5RGlhbG9nKGRiLCAiVXNlckV4aXQiLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICJGaW5pc2giLCAiRmluaXNoIiwgIkZpbmlzaCIpCi0gICAgdXNlcl9leGl0LnRpdGxlKCJbUHJvZHVjdE5hbWVdIEluc3RhbGxlciB3YXMgaW50ZXJydXB0ZWQiKQotICAgIHVzZXJfZXhpdC5iYWNrKCI8IEJhY2siLCAiRmluaXNoIiwgYWN0aXZlID0gMCkKLSAgICB1c2VyX2V4aXQuY2FuY2VsKCJDYW5jZWwiLCAiQmFjayIsIGFjdGl2ZSA9IDApCi0gICAgdXNlcl9leGl0LnRleHQoIkRlc2NyaXB0aW9uMSIsIDEzNSwgNzAsIDIyMCwgODAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiW1Byb2R1Y3ROYW1lXSBzZXR1cCB3YXMgaW50ZXJydXB0ZWQuICBZb3VyIHN5c3RlbSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuICAiCi0gICAgICAgICAgICAgICAiVG8gaW5zdGFsbCB0aGlzIHByb2dyYW0gYXQgYSBsYXRlciB0aW1lLCBwbGVhc2UgcnVuIHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uIikKLSAgICB1c2VyX2V4aXQudGV4dCgiRGVzY3JpcHRpb24yIiwgMTM1LCAxNTUsIDIyMCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgSW5zdGFsbGVyLiIpCi0gICAgYyA9IHVzZXJfZXhpdC5uZXh0KCJGaW5pc2giLCAiQ2FuY2VsIiwgbmFtZT0iRmluaXNoIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0KLSAgICBleGl0X2RpYWxvZyA9IFB5RGlhbG9nKGRiLCAiRXhpdERpYWxvZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoIiwgIkZpbmlzaCIsICJGaW5pc2giKQotICAgIGV4aXRfZGlhbG9nLnRpdGxlKCJDb21wbGV0ZSB0aGUgW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIiKQotICAgIGV4aXRfZGlhbG9nLmJhY2soIjwgQmFjayIsICJGaW5pc2giLCBhY3RpdmUgPSAwKQotICAgIGV4aXRfZGlhbG9nLmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siLCBhY3RpdmUgPSAwKQotICAgIGV4aXRfZGlhbG9nLnRleHQoIkFja25vd2xlZGdlbWVudHMiLCAxMzUsIDk1LCAyMjAsIDEyMCwgMHgzMDAwMywKLSAgICAgICJTcGVjaWFsIFdpbmRvd3MgdGhhbmtzIHRvOlxuIgotICAgICAgIiAgICBNYXJrIEhhbW1vbmQsIHdpdGhvdXQgd2hvc2UgeWVhcnMgb2YgZnJlZWx5IFxuIgotICAgICAgIiAgICBzaGFyZWQgV2luZG93cyBleHBlcnRpc2UsIFB5dGhvbiBmb3IgV2luZG93cyBcbiIKLSAgICAgICIgICAgd291bGQgc3RpbGwgYmUgUHl0aG9uIGZvciBET1MuIikKLQotICAgIGMgPSBleGl0X2RpYWxvZy50ZXh0KCJ3YXJuaW5nIiwgMTM1LCAyMDAsIDIyMCwgNDAsIDB4MzAwMDMsCi0gICAgICAgICAgICAie1xcVmVyZGFuYVJlZDl9V2FybmluZzogUHl0aG9uIDIuNS54IGlzIHRoZSBsYXN0ICIKLSAgICAgICAgICAgICJQeXRob24gcmVsZWFzZSBmb3IgV2luZG93cyA5eC4iKQotICAgIGMuY29uZGl0aW9uKCJIaWRlIiwgIk5PVCBWZXJzaW9uOVgiKQotCi0gICAgZXhpdF9kaWFsb2cudGV4dCgiRGVzY3JpcHRpb24iLCAxMzUsIDIzNSwgMjIwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBJbnN0YWxsZXIuIikKLSAgICBjID0gZXhpdF9kaWFsb2cubmV4dCgiRmluaXNoIiwgIkNhbmNlbCIsIG5hbWU9IkZpbmlzaCIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFJlcXVpcmVkIGRpYWxvZzogRmlsZXNJblVzZSwgRXJyb3JEbGcKLSAgICBpbnVzZSA9IFB5RGlhbG9nKGRiLCAiRmlsZXNJblVzZSIsCi0gICAgICAgICAgICAgICAgICAgICB4LCB5LCB3LCBoLAotICAgICAgICAgICAgICAgICAgICAgMTksICAgICAgICAgICAgICAgICMgS2VlcE1vZGVsZXNzfE1vZGFsfFZpc2libGUKLSAgICAgICAgICAgICAgICAgICAgIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgIlJldHJ5IiwgIlJldHJ5IiwgIlJldHJ5IiwgYml0bWFwPUZhbHNlKQotICAgIGludXNlLnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fUZpbGVzIGluIFVzZSIpCi0gICAgaW51c2UudGV4dCgiRGVzY3JpcHRpb24iLCAyMCwgMjMsIDI4MCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiU29tZSBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBhcmUgY3VycmVudGx5IGluIHVzZS4iKQotICAgIGludXNlLnRleHQoIlRleHQiLCAyMCwgNTUsIDMzMCwgNTAsIDMsCi0gICAgICAgICAgICAgICAiVGhlIGZvbGxvd2luZyBhcHBsaWNhdGlvbnMgYXJlIHVzaW5nIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB1cGRhdGVkIGJ5IHRoaXMgc2V0dXAuIENsb3NlIHRoZXNlIGFwcGxpY2F0aW9ucyBhbmQgdGhlbiBjbGljayBSZXRyeSB0byBjb250aW51ZSB0aGUgaW5zdGFsbGF0aW9uIG9yIENhbmNlbCB0byBleGl0IGl0LiIpCi0gICAgaW51c2UuY29udHJvbCgiTGlzdCIsICJMaXN0Qm94IiwgMjAsIDEwNywgMzMwLCAxMzAsIDcsICJGaWxlSW5Vc2VQcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgYz1pbnVzZS5iYWNrKCJFeGl0IiwgIklnbm9yZSIsIG5hbWU9IkV4aXQiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLSAgICBjPWludXNlLm5leHQoIklnbm9yZSIsICJSZXRyeSIsIG5hbWU9Iklnbm9yZSIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIklnbm9yZSIpCi0gICAgYz1pbnVzZS5jYW5jZWwoIlJldHJ5IiwgIkV4aXQiLCBuYW1lPSJSZXRyeSIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwiUmV0cnkiKQotCi0KLSAgICAjIFNlZSAiRXJyb3IgRGlhbG9nIi4gU2VlICJJQ0UyMCIgZm9yIHRoZSByZXF1aXJlZCBuYW1lcyBvZiB0aGUgY29udHJvbHMuCi0gICAgZXJyb3IgPSBEaWFsb2coZGIsICJFcnJvckRsZyIsCi0gICAgICAgICAgICAgICAgICAgNTAsIDEwLCAzMzAsIDEwMSwKLSAgICAgICAgICAgICAgICAgICA2NTU0MywgICAgICAgIyBFcnJvcnxNaW5pbWl6ZXxNb2RhbHxWaXNpYmxlCi0gICAgICAgICAgICAgICAgICAgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIkVycm9yVGV4dCIsIE5vbmUsIE5vbmUpCi0gICAgZXJyb3IudGV4dCgiRXJyb3JUZXh0IiwgNTAsOSwyODAsNDgsMywgIiIpCi0gICAgZXJyb3IuY29udHJvbCgiRXJyb3JJY29uIiwgIkljb24iLCAxNSwgOSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLCAicHkuaWNvIiwgTm9uZSwgTm9uZSkKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJOIiwxMjAsNzIsODEsMjEsMywiTm8iLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvck5vIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJZIiwyNDAsNzIsODEsMjEsMywiWWVzIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JZZXMiKQotICAgIGVycm9yLnB1c2hidXR0b24oIkEiLDAsNzIsODEsMjEsMywiQWJvcnQiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvckFib3J0IikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJDIiw0Miw3Miw4MSwyMSwzLCJDYW5jZWwiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvckNhbmNlbCIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiSSIsODEsNzIsODEsMjEsMywiSWdub3JlIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JJZ25vcmUiKQotICAgIGVycm9yLnB1c2hidXR0b24oIk8iLDE1OSw3Miw4MSwyMSwzLCJPayIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yT2siKQotICAgIGVycm9yLnB1c2hidXR0b24oIlIiLDE5OCw3Miw4MSwyMSwzLCJSZXRyeSIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yUmV0cnkiKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBHbG9iYWwgIlF1ZXJ5IENhbmNlbCIgZGlhbG9nCi0gICAgY2FuY2VsID0gRGlhbG9nKGRiLCAiQ2FuY2VsRGxnIiwgNTAsIDEwLCAyNjAsIDg1LCAzLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgIk5vIiwgIk5vIiwgIk5vIikKLSAgICBjYW5jZWwudGV4dCgiVGV4dCIsIDQ4LCAxNSwgMTk0LCAzMCwgMywKLSAgICAgICAgICAgICAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbCBbUHJvZHVjdE5hbWVdIGluc3RhbGxhdGlvbj8iKQotICAgIGNhbmNlbC5jb250cm9sKCJJY29uIiwgIkljb24iLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAicHkuaWNvIiwgTm9uZSwgTm9uZSkKLSAgICBjPWNhbmNlbC5wdXNoYnV0dG9uKCJZZXMiLCA3MiwgNTcsIDU2LCAxNywgMywgIlllcyIsICJObyIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotCi0gICAgYz1jYW5jZWwucHVzaGJ1dHRvbigiTm8iLCAxMzIsIDU3LCA1NiwgMTcsIDMsICJObyIsICJZZXMiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBHbG9iYWwgIldhaXQgZm9yIGNvc3RpbmciIGRpYWxvZwotICAgIGNvc3RpbmcgPSBEaWFsb2coZGIsICJXYWl0Rm9yQ29zdGluZ0RsZyIsIDUwLCAxMCwgMjYwLCA4NSwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgIlJldHVybiIsICJSZXR1cm4iLCAiUmV0dXJuIikKLSAgICBjb3N0aW5nLnRleHQoIlRleHQiLCA0OCwgMTUsIDE5NCwgMzAsIDMsCi0gICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgaW5zdGFsbGVyIGZpbmlzaGVzIGRldGVybWluaW5nIHlvdXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMuIikKLSAgICBjb3N0aW5nLmNvbnRyb2woIkljb24iLCAiSWNvbiIsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAicHkuaWNvIiwgTm9uZSwgTm9uZSkKLSAgICBjID0gY29zdGluZy5wdXNoYnV0dG9uKCJSZXR1cm4iLCAxMDIsIDU3LCA1NiwgMTcsIDMsICJSZXR1cm4iLCBOb25lKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgUHJlcGFyYXRpb24gZGlhbG9nOiBubyB1c2VyIGlucHV0IGV4Y2VwdCBjYW5jZWxsYXRpb24KLSAgICBwcmVwID0gUHlEaWFsb2coZGIsICJQcmVwYXJlRGxnIiwgeCwgeSwgdywgaCwgbW9kZWxlc3MsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiKQotICAgIHByZXAudGV4dCgiRGVzY3JpcHRpb24iLCAxMzUsIDcwLCAyMjAsIDQwLCAweDMwMDAzLAotICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIEluc3RhbGxlciBwcmVwYXJlcyB0byBndWlkZSB5b3UgdGhyb3VnaCB0aGUgaW5zdGFsbGF0aW9uLiIpCi0gICAgcHJlcC50aXRsZSgiV2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIiKQotICAgIGM9cHJlcC50ZXh0KCJBY3Rpb25UZXh0IiwgMTM1LCAxMTAsIDIyMCwgMjAsIDB4MzAwMDMsICJQb25kZXJpbmcuLi4iKQotICAgIGMubWFwcGluZygiQWN0aW9uVGV4dCIsICJUZXh0IikKLSAgICBjPXByZXAudGV4dCgiQWN0aW9uRGF0YSIsIDEzNSwgMTM1LCAyMjAsIDMwLCAweDMwMDAzLCBOb25lKQotICAgIGMubWFwcGluZygiQWN0aW9uRGF0YSIsICJUZXh0IikKLSAgICBwcmVwLmJhY2soIkJhY2siLCBOb25lLCBhY3RpdmU9MCkKLSAgICBwcmVwLm5leHQoIk5leHQiLCBOb25lLCBhY3RpdmU9MCkKLSAgICBjPXByZXAuY2FuY2VsKCJDYW5jZWwiLCBOb25lKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFRhcmdldCBkaXJlY3Rvcnkgc2VsZWN0aW9uCi0gICAgc2VsZGxnID0gUHlEaWFsb2coZGIsICJTZWxlY3REaXJlY3RvcnlEbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICJOZXh0IiwgIk5leHQiLCAiQ2FuY2VsIikKLSAgICBzZWxkbGcudGl0bGUoIlNlbGVjdCBEZXN0aW5hdGlvbiBEaXJlY3RvcnkiKQotICAgIGMgPSBzZWxkbGcudGV4dCgiRXhpc3RpbmciLCAxMzUsIDI1LCAyMzUsIDMwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgICAie1xWZXJkYW5hUmVkOX1UaGlzIHVwZGF0ZSB3aWxsIHJlcGxhY2UgeW91ciBleGlzdGluZyBbUHJvZHVjdExpbmVdIGluc3RhbGxhdGlvbi4iKQotICAgIGMuY29uZGl0aW9uKCJIaWRlIiwgJ1JFTU9WRU9MRFZFUlNJT049IiIgYW5kIFJFTU9WRU9MRFNOQVBTSE9UPSIiJykKLSAgICBzZWxkbGcudGV4dCgiRGVzY3JpcHRpb24iLCAxMzUsIDUwLCAyMjAsIDQwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIlBsZWFzZSBzZWxlY3QgYSBkaXJlY3RvcnkgZm9yIHRoZSBbUHJvZHVjdE5hbWVdIGZpbGVzLiIpCi0KLSAgICBzZWxkbGcuYmFjaygiPCBCYWNrIiwgTm9uZSwgYWN0aXZlPTApCi0gICAgYyA9IHNlbGRsZy5uZXh0KCJOZXh0ID4iLCAiQ2FuY2VsIikKLSAgICBjLmV2ZW50KCJEb0FjdGlvbiIsICJDaGVja0RpciIsICJUYXJnZXRFeGlzdHNPazw+MSIsIG9yZGVyPTEpCi0gICAgIyBJZiB0aGUgdGFyZ2V0IGV4aXN0cywgYnV0IHdlIGZvdW5kIHRoYXQgd2UgYXJlIGdvaW5nIHRvIHJlbW92ZSBvbGQgdmVyc2lvbnMsIGRvbid0IGJvdGhlcgotICAgICMgY29uZmlybWluZyB0aGF0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cy4gU3RyaWN0bHkgc3BlYWtpbmcsIHdlIHNob3VsZCBkZXRlcm1pbmUgdGhhdAotICAgICMgdGhlIHRhcmdldCBkaXJlY3RvcnkgaXMgaW5kZWVkIHRoZSB0YXJnZXQgb2YgdGhlIHByb2R1Y3QgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gcmVtb3ZlLCBidXQKLSAgICAjIEkgZG9uJ3Qga25vdyBob3cgdG8gZG8gdGhhdC4KLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJFeGlzdGluZ0RpcmVjdG9yeURsZyIsICdUYXJnZXRFeGlzdHM9MSBhbmQgUkVNT1ZFT0xEVkVSU0lPTj0iIiBhbmQgUkVNT1ZFT0xEU05BUFNIT1Q9IiInLCAyKQotICAgIGMuZXZlbnQoIlNldFRhcmdldFBhdGgiLCAiVEFSR0VURElSIiwgJ1RhcmdldEV4aXN0cz0wIG9yIFJFTU9WRU9MRFZFUlNJT048PiIiIG9yIFJFTU9WRU9MRFNOQVBTSE9UPD4iIicsIDMpCi0gICAgYy5ldmVudCgiU3Bhd25XYWl0RGlhbG9nIiwgIldhaXRGb3JDb3N0aW5nRGxnIiwgIkNvc3RpbmdDb21wbGV0ZT0xIiwgNCkKLSAgICBjLmV2ZW50KCJOZXdEaWFsb2ciLCAiU2VsZWN0RmVhdHVyZXNEbGciLCAnVGFyZ2V0RXhpc3RzPTAgb3IgUkVNT1ZFT0xEVkVSU0lPTjw+IiIgb3IgUkVNT1ZFT0xEU05BUFNIT1Q8PiIiJywgNSkKLQotICAgIGMgPSBzZWxkbGcuY2FuY2VsKCJDYW5jZWwiLCAiRGlyZWN0b3J5Q29tYm8iKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICBzZWxkbGcuY29udHJvbCgiRGlyZWN0b3J5Q29tYm8iLCAiRGlyZWN0b3J5Q29tYm8iLCAxMzUsIDcwLCAxNzIsIDgwLCAzOTMyMTksCi0gICAgICAgICAgICAgICAgICAgIlRBUkdFVERJUiIsIE5vbmUsICJEaXJlY3RvcnlMaXN0IiwgTm9uZSkKLSAgICBzZWxkbGcuY29udHJvbCgiRGlyZWN0b3J5TGlzdCIsICJEaXJlY3RvcnlMaXN0IiwgMTM1LCA5MCwgMjA4LCAxMzYsIDMsICJUQVJHRVRESVIiLAotICAgICAgICAgICAgICAgICAgIE5vbmUsICJQYXRoRWRpdCIsIE5vbmUpCi0gICAgc2VsZGxnLmNvbnRyb2woIlBhdGhFZGl0IiwgIlBhdGhFZGl0IiwgMTM1LCAyMzAsIDIwNiwgMTYsIDMsICJUQVJHRVRESVIiLCBOb25lLCAiTmV4dCIsIE5vbmUpCi0gICAgYyA9IHNlbGRsZy5wdXNoYnV0dG9uKCJVcCIsIDMwNiwgNzAsIDE4LCAxOCwgMywgIlVwIiwgTm9uZSkKLSAgICBjLmV2ZW50KCJEaXJlY3RvcnlMaXN0VXAiLCAiMCIpCi0gICAgYyA9IHNlbGRsZy5wdXNoYnV0dG9uKCJOZXdEaXIiLCAzMjQsIDcwLCAzMCwgMTgsIDMsICJOZXciLCBOb25lKQotICAgIGMuZXZlbnQoIkRpcmVjdG9yeUxpc3ROZXciLCAiMCIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFNlbGVjdEZlYXR1cmVzRGxnCi0gICAgZmVhdHVyZXMgPSBQeURpYWxvZyhkYiwgIlNlbGVjdEZlYXR1cmVzRGxnIiwgeCwgeSwgdywgaCwgbW9kYWx8dHJhY2tfZGlza19zcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLCAiVHJlZSIsICJOZXh0IiwgIkNhbmNlbCIpCi0gICAgZmVhdHVyZXMudGl0bGUoIkN1c3RvbWl6ZSBbUHJvZHVjdE5hbWVdIikKLSAgICBmZWF0dXJlcy50ZXh0KCJEZXNjcmlwdGlvbiIsIDEzNSwgMzUsIDIyMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAiU2VsZWN0IHRoZSB3YXkgeW91IHdhbnQgZmVhdHVyZXMgdG8gYmUgaW5zdGFsbGVkLiIpCi0gICAgZmVhdHVyZXMudGV4dCgiVGV4dCIsIDEzNSw0NSwyMjAsMzAsIDMsCi0gICAgICAgICAgICAgICAgICAiQ2xpY2sgb24gdGhlIGljb25zIGluIHRoZSB0cmVlIGJlbG93IHRvIGNoYW5nZSB0aGUgd2F5IGZlYXR1cmVzIHdpbGwgYmUgaW5zdGFsbGVkLiIpCi0KLSAgICBjPWZlYXR1cmVzLmJhY2soIjwgQmFjayIsICJOZXh0IikKLSAgICBjLmV2ZW50KCJOZXdEaWFsb2ciLCAiU2VsZWN0RGlyZWN0b3J5RGxnIikKLQotICAgIGM9ZmVhdHVyZXMubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIpCi0gICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25Ob0l0ZW1zIiwgIkVuYWJsZWQiKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkRpc2tDb3N0RGxnIiwgIk91dE9mRGlza1NwYWNlPTEiLCBvcmRlcj0xKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iLCAiT3V0T2ZEaXNrU3BhY2U8PjEiLCBvcmRlcj0yKQotCi0gICAgYz1mZWF0dXJlcy5jYW5jZWwoIkNhbmNlbCIsICJUcmVlIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgIyBUaGUgYnJvd3NlIHByb3BlcnR5IGlzIG5vdCB1c2VkLCBzaW5jZSB3ZSBoYXZlIG9ubHkgYSBzaW5nbGUgdGFyZ2V0IHBhdGggKHNlbGVjdGVkIGFscmVhZHkpCi0gICAgZmVhdHVyZXMuY29udHJvbCgiVHJlZSIsICJTZWxlY3Rpb25UcmVlIiwgMTM1LCA3NSwgMjIwLCA5NSwgNywgIl9Ccm93c2VQcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAiVHJlZSBvZiBzZWxlY3Rpb25zIiwgIkJhY2siLCBOb25lKQotCi0gICAgI2M9ZmVhdHVyZXMucHVzaGJ1dHRvbigiUmVzZXQiLCA0MiwgMjQzLCA1NiwgMTcsIDMsICJSZXNldCIsICJEaXNrQ29zdCIpCi0gICAgI2MubWFwcGluZygiU2VsZWN0aW9uTm9JdGVtcyIsICJFbmFibGVkIikKLSAgICAjYy5ldmVudCgiUmVzZXQiLCAiMCIpCi0KLSAgICBmZWF0dXJlcy5jb250cm9sKCJCb3giLCAiR3JvdXBCb3giLCAxMzUsIDE3MCwgMjI1LCA5MCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkKLQotICAgIGM9ZmVhdHVyZXMueGJ1dHRvbigiRGlza0Nvc3QiLCAiRGlzayAmVXNhZ2UiLCBOb25lLCAwLjEwKQotICAgIGMubWFwcGluZygiU2VsZWN0aW9uTm9JdGVtcyIsIkVuYWJsZWQiKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkRpc2tDb3N0RGxnIikKLQotICAgIGM9ZmVhdHVyZXMueGJ1dHRvbigiQWR2YW5jZWQiLCAiQWR2YW5jZWQiLCBOb25lLCAwLjMwKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkFkdmFuY2VkRGxnIikKLQotICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbURlc2NyaXB0aW9uIiwgMTQwLCAxODAsIDIxMCwgNDAsIDMsCi0gICAgICAgICAgICAgICAgICAiTXVsdGlsaW5lIGRlc2NyaXB0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4iKQotICAgIGMubWFwcGluZygiU2VsZWN0aW9uRGVzY3JpcHRpb24iLCJUZXh0IikKLQotICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbVNpemUiLCAxNDAsIDIyNSwgMjEwLCAzMywgMywKLSAgICAgICAgICAgICAgICAgICAgIlRoZSBzaXplIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4iKQotICAgIGMubWFwcGluZygiU2VsZWN0aW9uU2l6ZSIsICJUZXh0IikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgRGlzayBjb3N0Ci0gICAgY29zdCA9IFB5RGlhbG9nKGRiLCAiRGlza0Nvc3REbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICJPSyIsICJPSyIsICJPSyIsIGJpdG1hcD1GYWxzZSkKLSAgICBjb3N0LnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cyIpCi0gICAgY29zdC50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMCwgMjgwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgIlRoZSBkaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBmZWF0dXJlcy4iKQotICAgIGNvc3QudGV4dCgiVGV4dCIsIDIwLCA1MywgMzMwLCA2MCwgMywKLSAgICAgICAgICAgICAgIlRoZSBoaWdobGlnaHRlZCB2b2x1bWVzIChpZiBhbnkpIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlICIKLSAgICAgICAgICAgICAgImF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyICIKLSAgICAgICAgICAgICAgInJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byAiCi0gICAgICAgICAgICAgICJpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCAiCi0gICAgICAgICAgICAgICJkZXN0aW5hdGlvbiBkcml2ZShzKS4iKQotICAgIGNvc3QuY29udHJvbCgiVm9sdW1lTGlzdCIsICJWb2x1bWVDb3N0TGlzdCIsIDIwLCAxMDAsIDMzMCwgMTUwLCAzOTMyMjMsCi0gICAgICAgICAgICAgICAgIE5vbmUsICJ7MTIwfXs3MH17NzB9ezcwfXs3MH0iLCBOb25lLCBOb25lKQotICAgIGNvc3QueGJ1dHRvbigiT0siLCAiT2siLCBOb25lLCAwLjUpLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgV2hpY2hVc2VycyBEaWFsb2cuIE9ubHkgYXZhaWxhYmxlIG9uIE5ULCBhbmQgZm9yIHByaXZpbGVnZWQgdXNlcnMuCi0gICAgIyBUaGlzIG11c3QgYmUgcnVuIGJlZm9yZSBGaW5kUmVsYXRlZFByb2R1Y3RzLCBiZWNhdXNlIHRoYXQgd2lsbAotICAgICMgdGFrZSBpbnRvIGFjY291bnQgd2hldGhlciB0aGUgcHJldmlvdXMgaW5zdGFsbGF0aW9uIHdhcyBwZXItdXNlcgotICAgICMgb3IgcGVyLW1hY2hpbmUuIFdlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGdvaW5nIGJhY2sgdG8gdGhpcwotICAgICMgZGlhbG9nIGFmdGVyICJOZXh0IiB3YXMgc2VsZWN0ZWQ7IHRvIHN1cHBvcnQgdGhpcywgd2Ugd291bGQgbmVlZCB0bwotICAgICMgZmluZCBob3cgdG8gcmVzZXQgdGhlIEFMTFVTRVJTIHByb3BlcnR5LCBhbmQgaG93IHRvIHJlLXJ1bgotICAgICMgRmluZFJlbGF0ZWRQcm9kdWN0cy4KLSAgICAjIE9uIFdpbmRvd3M5eCwgdGhlIEFMTFVTRVJTIHByb3BlcnR5IGlzIGlnbm9yZWQgb24gdGhlIGNvbW1hbmQgbGluZQotICAgICMgYW5kIGluIHRoZSBQcm9wZXJ0eSB0YWJsZSwgYnV0IGluc3RhbGxlciBmYWlscyBhY2NvcmRpbmcgdG8gdGhlIGRvY3VtZW50YXRpb24KLSAgICAjIGlmIGEgZGlhbG9nIGF0dGVtcHRzIHRvIHNldCBBTExVU0VSUy4KLSAgICB3aGljaHVzZXJzID0gUHlEaWFsb2coZGIsICJXaGljaFVzZXJzRGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIkFkbWluSW5zdGFsbCIsICJOZXh0IiwgIkNhbmNlbCIpCi0gICAgd2hpY2h1c2Vycy50aXRsZSgiU2VsZWN0IHdoZXRoZXIgdG8gaW5zdGFsbCBbUHJvZHVjdE5hbWVdIGZvciBhbGwgdXNlcnMgb2YgdGhpcyBjb21wdXRlci4iKQotICAgICMgQSByYWRpbyBncm91cCB3aXRoIHR3byBvcHRpb25zOiBhbGx1c2VycywganVzdG1lCi0gICAgZyA9IHdoaWNodXNlcnMucmFkaW9ncm91cCgiQWRtaW5JbnN0YWxsIiwgMTM1LCA2MCwgMjM1LCA4MCwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGljaFVzZXJzIiwgIiIsICJOZXh0IikKLSAgICBnLmNvbmRpdGlvbigiRGlzYWJsZSIsICJWZXJzaW9uTlQ9NjAwIikgIyBOb3QgYXZhaWxhYmxlIG9uIFZpc3RhIGFuZCBXaW5kb3dzIDIwMDgKLSAgICBnLmFkZCgiQUxMIiwgMCwgNSwgMTUwLCAyMCwgIkluc3RhbGwgZm9yIGFsbCB1c2VycyIpCi0gICAgZy5hZGQoIkpVU1RNRSIsIDAsIDI1LCAyMzUsIDIwLCAiSW5zdGFsbCBqdXN0IGZvciBtZSAobm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIFZpc3RhKSIpCi0KLSAgICB3aGljaHVzZXJzLmJhY2soIkJhY2siLCBOb25lLCBhY3RpdmU9MCkKLQotICAgIGMgPSB3aGljaHVzZXJzLm5leHQoIk5leHQgPiIsICJDYW5jZWwiKQotICAgIGMuZXZlbnQoIltBTExVU0VSU10iLCAiMSIsICdXaGljaFVzZXJzPSJBTEwiJywgMSkKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgb3JkZXIgPSAyKQotCi0gICAgYyA9IHdoaWNodXNlcnMuY2FuY2VsKCJDYW5jZWwiLCAiQWRtaW5JbnN0YWxsIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBBZHZhbmNlZCBEaWFsb2cuCi0gICAgYWR2YW5jZWQgPSBQeURpYWxvZyhkYiwgIkFkdmFuY2VkRGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXBpbGVQeWMiLCAiT2siLCAiT2siKQotICAgIGFkdmFuY2VkLnRpdGxlKCJBZHZhbmNlZCBPcHRpb25zIGZvciBbUHJvZHVjdE5hbWVdIikKLQotICAgICMgQSBjaGVja2JveCB3aGV0aGVyIHRvIGJ1aWxkIHB5YyBmaWxlcwotICAgIGFkdmFuY2VkLmNoZWNrYm94KCJDb21waWxlUHljIiwgMTM1LCA2MCwgMjMwLCA1MCwgMywKLSAgICAgICAgICAgICAgICAgICAgICAiQ09NUElMRUFMTCIsICJDb21waWxlIC5weSBmaWxlcyB0byBieXRlIGNvZGUgYWZ0ZXIgaW5zdGFsbGF0aW9uIiwgIk9rIikKLQotICAgIGMgPSBhZHZhbmNlZC5jYW5jZWwoIk9rIiwgIkNvbXBpbGVQeWMiLCBuYW1lPSJPayIpICMgQnV0dG9uIGp1c3QgaGFzIGxvY2F0aW9uIG9mIGNhbmNlbCBidXR0b24uCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIEV4aXN0aW5nIERpcmVjdG9yeSBkaWFsb2cKLSAgICBkbGcgPSBEaWFsb2coZGIsICJFeGlzdGluZ0RpcmVjdG9yeURsZyIsIDUwLCAzMCwgMjAwLCA4MCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICJObyIsICJObyIsICJObyIpCi0gICAgZGxnLnRleHQoIlRpdGxlIiwgMTAsIDIwLCAxODAsIDQwLCAzLAotICAgICAgICAgICAgICJbVEFSR0VURElSXSBleGlzdHMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXM/IikKLSAgICBjPWRsZy5wdXNoYnV0dG9uKCJZZXMiLCAzMCwgNjAsIDU1LCAxNywgMywgIlllcyIsICJObyIpCi0gICAgYy5ldmVudCgiW1RhcmdldEV4aXN0c10iLCAiMCIsIG9yZGVyPTEpCi0gICAgYy5ldmVudCgiW1RhcmdldEV4aXN0c09rXSIsICIxIiwgb3JkZXI9MikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgb3JkZXI9MykKLSAgICBjPWRsZy5wdXNoYnV0dG9uKCJObyIsIDExNSwgNjAsIDU1LCAxNywgMywgIk5vIiwgIlllcyIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIEluc3RhbGxhdGlvbiBQcm9ncmVzcyBkaWFsb2cgKG1vZGVsZXNzKQotICAgIHByb2dyZXNzID0gUHlEaWFsb2coZGIsICJQcm9ncmVzc0RsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWwiLCAiQ2FuY2VsIiwgIkNhbmNlbCIsIGJpdG1hcD1GYWxzZSkKLSAgICBwcm9ncmVzcy50ZXh0KCJUaXRsZSIsIDIwLCAxNSwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKLSAgICBwcm9ncmVzcy50ZXh0KCJUZXh0IiwgMzUsIDY1LCAzMDAsIDMwLCAzLAotICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIgotICAgICAgICAgICAgICAgICAgIlRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLiIpCi0gICAgcHJvZ3Jlc3MudGV4dCgiU3RhdHVzTGFiZWwiLCAzNSwgMTAwLCAzNSwgMjAsIDMsICJTdGF0dXM6IikKLQotICAgIGM9cHJvZ3Jlc3MudGV4dCgiQWN0aW9uVGV4dCIsIDcwLCAxMDAsIHctNzAsIDIwLCAzLCAiUG9uZGVyaW5nLi4uIikKLSAgICBjLm1hcHBpbmcoIkFjdGlvblRleHQiLCAiVGV4dCIpCi0KLSAgICAjYz1wcm9ncmVzcy50ZXh0KCJBY3Rpb25EYXRhIiwgMzUsIDE0MCwgMzAwLCAyMCwgMywgTm9uZSkKLSAgICAjYy5tYXBwaW5nKCJBY3Rpb25EYXRhIiwgIlRleHQiKQotCi0gICAgYz1wcm9ncmVzcy5jb250cm9sKCJQcm9ncmVzc0JhciIsICJQcm9ncmVzc0JhciIsIDM1LCAxMjAsIDMwMCwgMTAsIDY1NTM3LAotICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAiUHJvZ3Jlc3MgZG9uZSIsIE5vbmUsIE5vbmUpCi0gICAgYy5tYXBwaW5nKCJTZXRQcm9ncmVzcyIsICJQcm9ncmVzcyIpCi0KLSAgICBwcm9ncmVzcy5iYWNrKCI8IEJhY2siLCAiTmV4dCIsIGFjdGl2ZT1GYWxzZSkKLSAgICBwcm9ncmVzcy5uZXh0KCJOZXh0ID4iLCAiQ2FuY2VsIiwgYWN0aXZlPUZhbHNlKQotICAgIHByb2dyZXNzLmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siKS5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMgTWFpbnRlbmFuY2UgdHlwZTogcmVwYWlyL3VuaW5zdGFsbAotICAgIG1haW50ID0gUHlEaWFsb2coZGIsICJNYWludGVuYW5jZVR5cGVEbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAiTmV4dCIsICJOZXh0IiwgIkNhbmNlbCIpCi0gICAgbWFpbnQudGl0bGUoIldlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gU2V0dXAgV2l6YXJkIikKLSAgICBtYWludC50ZXh0KCJCb2R5VGV4dCIsIDEzNSwgNjMsIDIzMCwgNDIsIDMsCi0gICAgICAgICAgICAgICAiU2VsZWN0IHdoZXRoZXIgeW91IHdhbnQgdG8gcmVwYWlyIG9yIHJlbW92ZSBbUHJvZHVjdE5hbWVdLiIpCi0gICAgZz1tYWludC5yYWRpb2dyb3VwKCJSZXBhaXJSYWRpb0dyb3VwIiwgMTM1LCAxMDgsIDIzMCwgNjAsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiTWFpbnRlbmFuY2VGb3JtX0FjdGlvbiIsICIiLCAiTmV4dCIpCi0gICAgZy5hZGQoIkNoYW5nZSIsIDAsIDAsIDIwMCwgMTcsICImQ2hhbmdlIFtQcm9kdWN0TmFtZV0iKQotICAgIGcuYWRkKCJSZXBhaXIiLCAwLCAxOCwgMjAwLCAxNywgIiZSZXBhaXIgW1Byb2R1Y3ROYW1lXSIpCi0gICAgZy5hZGQoIlJlbW92ZSIsIDAsIDM2LCAyMDAsIDE3LCAiUmUmbW92ZSBbUHJvZHVjdE5hbWVdIikKLQotICAgIG1haW50LmJhY2soIjwgQmFjayIsIE5vbmUsIGFjdGl2ZT1GYWxzZSkKLSAgICBjPW1haW50Lm5leHQoIkZpbmlzaCIsICJDYW5jZWwiKQotICAgICMgQ2hhbmdlIGluc3RhbGxhdGlvbjogQ2hhbmdlIHByb2dyZXNzIGRpYWxvZyB0byAiQ2hhbmdlIiwgdGhlbiBhc2sKLSAgICAjIGZvciBmZWF0dXJlIHNlbGVjdGlvbgotICAgIGMuZXZlbnQoIltQcm9ncmVzczFdIiwgIkNoYW5nZSIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJDaGFuZ2UiJywgMSkKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MyXSIsICJjaGFuZ2VzIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IkNoYW5nZSInLCAyKQotCi0gICAgIyBSZWluc3RhbGw6IENoYW5nZSBwcm9ncmVzcyBkaWFsb2cgdG8gIlJlcGFpciIsIHRoZW4gaW52b2tlIHJlaW5zdGFsbAotICAgICMgQWxzbyBzZXQgbGlzdCBvZiByZWluc3RhbGxlZCBmZWF0dXJlcyB0byAiQUxMIgotICAgIGMuZXZlbnQoIltSRUlOU1RBTExdIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZXBhaXIiJywgNSkKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MxXSIsICJSZXBhaXJpbmciLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDYpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMl0iLCAicmVwYWlycyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZXBhaXIiJywgNykKLSAgICBjLmV2ZW50KCJSZWluc3RhbGwiLCAiQUxMIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlcGFpciInLCA4KQotCi0gICAgIyBVbmluc3RhbGw6IENoYW5nZSBwcm9ncmVzcyB0byAiUmVtb3ZlIiwgdGhlbiBpbnZva2UgdW5pbnN0YWxsCi0gICAgIyBBbHNvIHNldCBsaXN0IG9mIHJlbW92ZWQgZmVhdHVyZXMgdG8gIkFMTCIKLSAgICBjLmV2ZW50KCJbUkVNT1ZFXSIsICJBTEwiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVtb3ZlIicsIDExKQotICAgIGMuZXZlbnQoIltQcm9ncmVzczFdIiwgIlJlbW92aW5nIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlbW92ZSInLCAxMikKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MyXSIsICJyZW1vdmVzIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlbW92ZSInLCAxMykKLSAgICBjLmV2ZW50KCJSZW1vdmUiLCAiQUxMIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlbW92ZSInLCAxNCkKLQotICAgICMgQ2xvc2UgZGlhbG9nIHdoZW4gbWFpbnRlbmFuY2UgYWN0aW9uIHNjaGVkdWxlZAotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbjw+IkNoYW5nZSInLCAyMCkKLSAgICBjLmV2ZW50KCJOZXdEaWFsb2ciLCAiU2VsZWN0RmVhdHVyZXNEbGciLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iQ2hhbmdlIicsIDIxKQotCi0gICAgbWFpbnQuY2FuY2VsKCJDYW5jZWwiLCAiUmVwYWlyUmFkaW9Hcm91cCIpLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0KLSMgU2VlICJGZWF0dXJlIFRhYmxlIi4gVGhlIGZlYXR1cmUgbGV2ZWwgaXMgMSBmb3IgYWxsIGZlYXR1cmVzLAotIyBhbmQgdGhlIGZlYXR1cmUgYXR0cmlidXRlcyBhcmUgMCBmb3IgdGhlIERlZmF1bHRGZWF0dXJlLCBhbmQKLSMgRm9sbG93UGFyZW50IGZvciBhbGwgb3RoZXIgZmVhdHVyZXMuIFRoZSBudW1iZXJzIGFyZSB0aGUgRGlzcGxheQotIyBjb2x1bW4uCi1kZWYgYWRkX2ZlYXR1cmVzKGRiKToKLSAgICAjIGZlYXR1cmUgYXR0cmlidXRlczoKLSAgICAjIG1zaWRiRmVhdHVyZUF0dHJpYnV0ZXNGb2xsb3dQYXJlbnQgPT0gMgotICAgICMgbXNpZGJGZWF0dXJlQXR0cmlidXRlc0Rpc2FsbG93QWR2ZXJ0aXNlID09IDgKLSAgICAjIEZlYXR1cmVzIHRoYXQgbmVlZCB0byBiZSBpbnN0YWxsZWQgd2l0aCB0b2dldGhlciB3aXRoIHRoZSBtYWluIGZlYXR1cmUKLSAgICAjIChpLmUuIGFkZGl0aW9uYWwgUHl0aG9uIGxpYnJhcmllcykgbmVlZCB0byBmb2xsb3cgdGhlIHBhcmVudCBmZWF0dXJlLgotICAgICMgRmVhdHVyZXMgdGhhdCBoYXZlIG5vIGFkdmVydGlzZW1lbnQgdHJpZ2dlciAoZS5nLiB0aGUgdGVzdCBzdWl0ZSkKLSAgICAjIG11c3Qgbm90IHN1cHBvcnQgYWR2ZXJ0aXNlbWVudAotICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUKLSAgICBnbG9iYWwgZXh0X2ZlYXR1cmUsIHByaXZhdGVfY3J0LCBwcmVwZW5kX3BhdGgsIHBpcF9mZWF0dXJlCi0gICAgZGVmYXVsdF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkRlZmF1bHRGZWF0dXJlIiwgIlB5dGhvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEludGVycHJldGVyIGFuZCBMaWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZGlyZWN0b3J5ID0gIlRBUkdFVERJUiIpCi0gICAgc2hhcmVkX2NydCA9IEZlYXR1cmUoZGIsICJTaGFyZWRDUlQiLCAiTVNWQ1JUIiwgIkMgUnVuLVRpbWUgKHN5c3RlbS13aWRlKSIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKLSAgICBwcml2YXRlX2NydCA9IEZlYXR1cmUoZGIsICJQcml2YXRlQ1JUIiwgIk1TVkNSVCIsICJDIFJ1bi1UaW1lIChwcml2YXRlKSIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCi0gICAgYWRkX2RhdGEoZGIsICJDb25kaXRpb24iLCBbKCJTaGFyZWRDUlQiLCAxLCBzeXMzMmNvbmQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiUHJpdmF0ZUNSVCIsIDEsICJub3QgIitzeXMzMmNvbmQpXSkKLSAgICAjIFdlIGRvbid0IHN1cHBvcnQgYWR2ZXJ0aXNlbWVudCBvZiBleHRlbnNpb25zCi0gICAgZXh0X2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAiRXh0ZW5zaW9ucyIsICJSZWdpc3RlciBFeHRlbnNpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ha2UgdGhpcyBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBkZWZhdWx0IFB5dGhvbiBpbnN0YWxsYXRpb24iLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbHRrID0gRmVhdHVyZShkYiwgIlRjbFRrIiwgIlRjbC9UayIsICJUa2ludGVyLCBJRExFLCBweWRvYyIsIDUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQotICAgIGh0bWxmaWxlcyA9IEZlYXR1cmUoZGIsICJEb2N1bWVudGF0aW9uIiwgIkRvY3VtZW50YXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBIVE1MSGVscCBGaWxlIiwgNywgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlKQotICAgIHRvb2xzID0gRmVhdHVyZShkYiwgIlRvb2xzIiwgIlV0aWxpdHkgU2NyaXB0cyIsCi0gICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8pIiwgOSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTIpCi0gICAgIyBwaXAgaW5zdGFsbGF0aW9uIGlzbid0IGVuYWJsZWQgYnkgZGVmYXVsdCB1bnRpbCBhIGNsZWFuIHVuaW5zdGFsbCBwcm9jZWR1cmUKLSAgICAjIGJlY29tZXMgcG9zc2libGUKLSAgICBwaXBfZmVhdHVyZSA9IEZlYXR1cmUoZGIsICJwaXBfZmVhdHVyZSIsICJwaXAiLAotICAgICAgICAgICAgICAgICAgICAiSW5zdGFsbCAob3IgdXBncmFkZSBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbikgcGlwLCAiCi0gICAgICAgICAgICAgICAgICAgICJhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcy4iLCAxMSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKLSAgICB0ZXN0c3VpdGUgPSBGZWF0dXJlKGRiLCAiVGVzdHN1aXRlIiwgIlRlc3Qgc3VpdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB0ZXN0IHN1aXRlIChMaWIvdGVzdC8pIiwgMTMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4KQotICAgICMgcHJlcGVuZF9wYXRoIGlzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSB3aGljaCBpcyB0byBiZSBvZmYgYnkgZGVmYXVsdC4KLSAgICAjIFNpbmNlIHRoZSBkZWZhdWx0IGxldmVsIGZvciB0aGUgYWJvdmUgZmVhdHVyZXMgaXMgMSwgdGhpcyBuZWVkcyB0byBiZQotICAgICMgYXQgbGVhc3QgbGV2ZWwgaGlnaGVyLgotICAgIHByZXBlbmRfcGF0aCA9IEZlYXR1cmUoZGIsICJQcmVwZW5kUGF0aCIsICJBZGQgcHl0aG9uLmV4ZSB0byBQYXRoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQcmVwZW5kIFtUQVJHRVRESVJdIHRvIHRoZSBzeXN0ZW0gUGF0aCB2YXJpYWJsZS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgYWxsb3dzIHlvdSB0byB0eXBlICdweXRob24nIGludG8gYSBjb21tYW5kICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcm9tcHQgd2l0aG91dCBuZWVkaW5nIHRoZSBmdWxsIHBhdGguIiwgMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4LAotICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MikKLQotZGVmIGV4dHJhY3RfbXN2Y3IxMDAoKToKLSAgICAjIEZpbmQgdGhlIHJlZGlzdHJpYnV0YWJsZSBmaWxlcwotICAgIGlmIG1zaWxpYi5XaW42NDoKLSAgICAgICAgYXJjaCA9ICJ4NjQiCi0gICAgZWxzZToKLSAgICAgICAgYXJjaCA9ICJ4ODYiCi0gICAgZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1ZTMTAwQ09NTlRPT0xTJ10sIHIiLi5cLi5cVkNccmVkaXN0XCVzXE1pY3Jvc29mdC5WQzEwMC5DUlQiICUgYXJjaCkKLQotICAgIHJlc3VsdCA9IFtdCi0gICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQotICAgICMgQXQgbGVhc3QgZm9yIFZTMjAxMCwgbWFuaWZlc3RzIGFyZSBubyBsb25nZXIgcHJvdmlkZWQKLSAgICBuYW1lID0gIm1zdmNyMTAwLmRsbCIKLSAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpciwgbmFtZSkKLSAgICBrdyA9IHsnc3JjJzpwYXRofQotICAgIGt3Wyd2ZXJzaW9uJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMCkKLSAgICBrd1snbGFuZ3VhZ2UnXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAxKQotICAgIHJldHVybiBuYW1lLCBrdwotCi1kZWYgZ2VuZXJhdGVfbGljZW5zZSgpOgotICAgIGltcG9ydCBzaHV0aWwsIGdsb2IKLSAgICBvdXQgPSBvcGVuKCJMSUNFTlNFLnR4dCIsICJ3IikKLSAgICBzaHV0aWwuY29weWZpbGVvYmoob3Blbihvcy5wYXRoLmpvaW4oc3JjZGlyLCAiTElDRU5TRSIpKSwgb3V0KQotICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKCJjcnRsaWNlbnNlLnR4dCIpLCBvdXQpCi0gICAgZm9yIG5hbWUsIHBhdCwgZmlsZSBpbiAoKCJiemlwMiIsImJ6aXAyLSoiLCAiTElDRU5TRSIpLAotICAgICAgICAgICAgICAgICAgICAgICgib3BlbnNzbCIsICJvcGVuc3NsLSoiLCAiTElDRU5TRSIpLAotICAgICAgICAgICAgICAgICAgICAgICgiVGNsIiwgInRjbDgqIiwgImxpY2Vuc2UudGVybXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIlRrIiwgInRrOCoiLCAibGljZW5zZS50ZXJtcyIpLAotICAgICAgICAgICAgICAgICAgICAgICgiVGl4IiwgInRpeC0qIiwgImxpY2Vuc2UudGVybXMiKSk6Ci0gICAgICAgIG91dC53cml0ZSgiXG5UaGlzIGNvcHkgb2YgUHl0aG9uIGluY2x1ZGVzIGEgY29weSBvZiAlcywgd2hpY2ggaXMgbGljZW5zZWQgdW5kZXIgdGhlIGZvbGxvd2luZyB0ZXJtczpcblxuIiAlIG5hbWUpCi0gICAgICAgIGRpcnMgPSBnbG9iLmdsb2Ioc3JjZGlyKyIvZXh0ZXJuYWxzLyIrcGF0KQotICAgICAgICBpZiBub3QgZGlyczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJDb3VsZCBub3QgZmluZCAiK3NyY2RpcisiL2V4dGVybmFscy8iK3BhdAotICAgICAgICBpZiBsZW4oZGlycykgPiAyIGFuZCBub3Qgc25hcHNob3Q6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiTXVsdGlwbGUgY29waWVzIG9mICIrcGF0Ci0gICAgICAgIGRpciA9IGRpcnNbMF0KLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpLCBvdXQpCi0gICAgb3V0LmNsb3NlKCkKLQotCi1jbGFzcyBQeURpcmVjdG9yeShEaXJlY3RvcnkpOgotICAgICIiIkJ5IGRlZmF1bHQsIGFsbCBjb21wb25lbnRzIGluIHRoZSBQeXRob24gaW5zdGFsbGVyCi0gICAgY2FuIHJ1biBmcm9tIHNvdXJjZS4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgotICAgICAgICBpZiAiY29tcG9uZW50ZmxhZ3MiIG5vdCBpbiBrdzoKLSAgICAgICAgICAgIGt3Wydjb21wb25lbnRmbGFncyddID0gMiAjbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzT3B0aW9uYWwKLSAgICAgICAgRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQotCi1kZWYgaGdtYW5pZmVzdCgpOgotICAgICMgRmV0Y2ggZmlsZSBsaXN0IGZyb20gTWVyY3VyaWFsCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICdtYW5pZmVzdCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgIyBDcmVhdGUgbmVzdGVkIGRpcmVjdG9yaWVzIGZvciBmaWxlIHRyZWUKLSAgICByZXN1bHQgPSB7fQotICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgIGNvbXBvbmVudHMgPSBsaW5lLnNwbGl0KCcvJykKLSAgICAgICAgZCA9IHJlc3VsdAotICAgICAgICB3aGlsZSBsZW4oY29tcG9uZW50cykgPiAxOgotICAgICAgICAgICAgZDEgPSBkLnNldGRlZmF1bHQoY29tcG9uZW50c1swXSwge30pCi0gICAgICAgICAgICBkID0gZDEKLSAgICAgICAgICAgIGRlbCBjb21wb25lbnRzWzBdCi0gICAgICAgIGRbY29tcG9uZW50c1swXV0gPSBOb25lCi0gICAgcmV0dXJuIHJlc3VsdAotCi0KLSMgU2VlICJGaWxlIFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIsICJEaXJlY3RvcnkgVGFibGUiLAotIyAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiCi1kZWYgYWRkX2ZpbGVzKGRiKToKLSAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgaGdmaWxlcyA9IGhnbWFuaWZlc3QoKQotICAgIGNhYiA9IENBQigicHl0aG9uIikKLSAgICB0bXBmaWxlcyA9IFtdCi0gICAgIyBBZGQgYWxsIGV4ZWN1dGFibGVzLCBpY29ucywgdGV4dCBmaWxlcyBpbnRvIHRoZSBUQVJHRVRESVIgY29tcG9uZW50Ci0gICAgcm9vdCA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIE5vbmUsIHNyY2RpciwgIlRBUkdFVERJUiIsICJTb3VyY2VEaXIiKQotICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCi0gICAgcm9vdC5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKLSAgICByb290LmFkZF9maWxlKCJORVdTLnR4dCIsIHNyYz0iTWlzYy9ORVdTIikKLSAgICBnZW5lcmF0ZV9saWNlbnNlKCkKLSAgICByb290LmFkZF9maWxlKCJMSUNFTlNFLnR4dCIsIHNyYz1vcy5wYXRoLmFic3BhdGgoIkxJQ0VOU0UudHh0IikpCi0gICAgcm9vdC5zdGFydF9jb21wb25lbnQoInB5dGhvbi5leGUiLCBrZXlmaWxlPSJweXRob24uZXhlIikKLSAgICByb290LmFkZF9maWxlKCIlcy9weXRob24uZXhlIiAlIFBDQlVJTEQpCi0gICAgcm9vdC5zdGFydF9jb21wb25lbnQoInB5dGhvbncuZXhlIiwga2V5ZmlsZT0icHl0aG9udy5leGUiKQotICAgIHJvb3QuYWRkX2ZpbGUoIiVzL3B5dGhvbncuZXhlIiAlIFBDQlVJTEQpCi0KLSAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlc1NoYXJlZERsbFJlZkNvdW50ID0gOCwgc2VlICJDb21wb25lbnQgVGFibGUiCi0gICAgZGxsZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiRExMRElSIiwgIi4iKQotICAgIGxhdW5jaGVyZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiTEFVTkNIRVJESVIiLCAiLiIpCi0KLSAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlczY0Yml0ID0gMjU2OyB0aGlzIGRpc2FibGVzIHJlZ2lzdHJ5IHJlZGlyZWN0aW9uCi0gICAgIyB0byBhbGxvdyBzZXR0aW5nIHRoZSBTaGFyZWRETExzIGtleSBpbiB0aGUgNjQtYml0IHBvcnRpb24gZXZlbiBmb3IgYQotICAgICMgMzItYml0IGluc3RhbGxlci4KLSAgICAjIFhYWCBkb2VzIHRoaXMgc3RpbGwgYWxsb3cgdG8gaW5zdGFsbCB0aGUgY29tcG9uZW50IG9uIGEgMzItYml0IHN5c3RlbT8KLSAgICAjIFBpY2sgdXAgMzItYml0IGJpbmFyeSBhbHdheXMKLSAgICBsYXVuY2hlcnNyYyA9IFBDQlVJTEQKLSAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFx4NjQtcGdvJzoKLSAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZFxcd2luMzItcGdvJwotICAgIGlmIGxhdW5jaGVyc3JjLmxvd2VyKCkgPT0gJ3BjYnVpbGRcXGFtZDY0JzoKLSAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZCcKLSAgICBsYXVuY2hlciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHkuZXhlIikKLSAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVyIiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHkuZXhlIikKLSAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAxKSkKLSAgICBsYXVuY2hlcncgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5dy5leGUiKQotICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXJ3IiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHl3LmV4ZSIpCi0gICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXJ3LAotICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMSkpCi0KLSAgICBweWRsbCA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQotICAgIHB5ZGxsc3JjID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgcHlkbGwpCi0gICAgZGxsZGlyLnN0YXJ0X2NvbXBvbmVudCgiRExMRElSIiwgZmxhZ3MgPSA4LCBrZXlmaWxlID0gcHlkbGwsIHV1aWQgPSBweXRob25kbGxfdXVpZCkKLSAgICBweXZlcnNpb24gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocHlkbGxzcmMsIDApCi0gICAgaWYgbm90IHNuYXBzaG90OgotICAgICAgICAjIEZvciByZWxlYXNlcywgdGhlIFB5dGhvbiBETEwgaGFzIHRoZSBzYW1lIHZlcnNpb24gYXMgdGhlCi0gICAgICAgICMgaW5zdGFsbGVyIHBhY2thZ2UuCi0gICAgICAgIGFzc2VydCBweXZlcnNpb24uc3BsaXQoIi4iKVs6M10gPT0gY3VycmVudF92ZXJzaW9uLnNwbGl0KCIuIikKLSAgICBkbGxkaXIuYWRkX2ZpbGUoIiVzL3B5dGhvbiVzJXMuZGxsIiAlIChQQ0JVSUxELCBtYWpvciwgbWlub3IpLAotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXB5dmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKHB5ZGxsc3JjLCAxKSkKLSAgICBETExzID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyICsgIi8iICsgUENCVUlMRCwgIkRMTHMiLCAiRExMU3xETExzIikKLQotICAgICMgbXN2Y3I5MC5kbGw6IE5lZWQgdG8gcGxhY2UgdGhlIERMTCBhbmQgdGhlIG1hbmlmZXN0IGludG8gdGhlIHJvb3QgZGlyZWN0b3J5LAotICAgICMgcGx1cyBhbm90aGVyIGNvcHkgb2YgdGhlIG1hbmlmZXN0IGluIHRoZSBETExzIGRpcmVjdG9yeSwgd2l0aCB0aGUgbWFuaWZlc3QKLSAgICAjIHBvaW50aW5nIHRvIHRoZSByb290IGRpcmVjdG9yeQotICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJtc3ZjcjkwIiwgZmVhdHVyZT1wcml2YXRlX2NydCkKLSAgICAjIFJlc3VsdHMgYXJlIElELGtleXdvcmQgcGFpcnMKLSAgICBjcnRkbGwsIGt3ZHMgPSBleHRyYWN0X21zdmNyMTAwKCkKLSAgICByb290LmFkZF9maWxlKGNydGRsbCwgKiprd2RzKQotICAgICMgQ29weSB0aGUgbWFuaWZlc3QKLSAgICAjIEFjdHVhbGx5LCBkb24ndCBkbyB0aGF0IGFueW1vcmUgLSBubyBETEwgaW4gRExMcyBzaG91bGQgaGF2ZSBhIG1hbmlmZXN0Ci0gICAgIyBkZXBlbmRlbmN5IG9uIG1zdmNyOTAuZGxsIGFueW1vcmUsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkKLSAgICAjbWFuaWZlc3RfZGxscyA9IG1hbmlmZXN0WzBdKyIucm9vdCIKLSAgICAjb3BlbihtYW5pZmVzdF9kbGxzLCAidyIpLndyaXRlKG9wZW4obWFuaWZlc3RbMV1bJ3NyYyddKS5yZWFkKCkucmVwbGFjZSgibXN2Y3IiLCIuLi9tc3ZjciIpKQotICAgICNETExzLnN0YXJ0X2NvbXBvbmVudCgibXN2Y3I5MF9kbGxzIiwgZmVhdHVyZT1wcml2YXRlX2NydCkKLSAgICAjRExMcy5hZGRfZmlsZShtYW5pZmVzdFswXSwgc3JjPW9zLnBhdGguYWJzcGF0aChtYW5pZmVzdF9kbGxzKSkKLQotICAgICMgTm93IHN0YXJ0IHRoZSBtYWluIGNvbXBvbmVudCBmb3IgdGhlIERMTHMgZGlyZWN0b3J5OwotICAgICMgbm8gcmVndWxhciBmaWxlcyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGRpcmVjdG9yeSB5ZXQuCi0gICAgRExMcy5zdGFydF9jb21wb25lbnQoKQotCi0gICAgIyBDaGVjayBpZiBfY3R5cGVzLnB5ZCBleGlzdHMKLSAgICBoYXZlX2N0eXBlcyA9IG9zLnBhdGguZXhpc3RzKHNyY2RpcisiLyVzL19jdHlwZXMucHlkIiAlIFBDQlVJTEQpCi0gICAgaWYgbm90IGhhdmVfY3R5cGVzOgotICAgICAgICBwcmludCgiV0FSTklORzogX2N0eXBlcy5weWQgbm90IGZvdW5kLCBjdHlwZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQiKQotICAgICAgICBleHRlbnNpb25zLnJlbW92ZSgiX2N0eXBlcy5weWQiKQotCi0gICAgIyBBZGQgYWxsIC5weSBmaWxlcyBpbiBMaWIsIGV4Y2VwdCB0a2ludGVyLCB0ZXN0Ci0gICAgZGlycyA9IFtdCi0gICAgcHlkaXJzID0gWyhyb290LCAiTGliIiwgaGdmaWxlc1siTGliIl0sIGRlZmF1bHRfZmVhdHVyZSldCi0gICAgd2hpbGUgcHlkaXJzOgotICAgICAgICAjIENvbW1pdCBldmVyeSBub3cgYW5kIHRoZW4sIG9yIGVsc2UgaW5zdGFsbGVyIHdpbGwgY29tcGxhaW4KLSAgICAgICAgZGIuQ29tbWl0KCkKLSAgICAgICAgcGFyZW50LCBkaXIsIGZpbGVzLCBmZWF0dXJlID0gcHlkaXJzLnBvcCgpCi0gICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgZGlyIGluIFsidGtpbnRlciIsICJpZGxlbGliIiwgInR1cnRsZWRlbW8iXToKLSAgICAgICAgICAgIGlmIG5vdCBoYXZlX3RjbDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmVhdHVyZSA9IHRjbHRrCi0gICAgICAgICAgICB0Y2x0ay5zZXRfY3VycmVudCgpCi0gICAgICAgIGVsaWYgZGlyIGluICgndGVzdCcsICd0ZXN0cycpOgotICAgICAgICAgICAgZmVhdHVyZSA9IHRlc3RzdWl0ZQotICAgICAgICBlbGlmIG5vdCBoYXZlX2N0eXBlcyBhbmQgZGlyID09ICJjdHlwZXMiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZmVhdHVyZS5zZXRfY3VycmVudCgpCi0gICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHBhcmVudCwgZGlyLCBkaXIsICIlc3wlcyIgJSAocGFyZW50Lm1ha2Vfc2hvcnQoZGlyKSwgZGlyKSkKLSAgICAgICAgZGlycy5hcHBlbmQobGliKQotICAgICAgICBoYXNfcHkgPSBGYWxzZQotICAgICAgICBmb3IgbmFtZSwgc3ViZGlyIGluIGZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBzdWJkaXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCi0gICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnUkVBRE1FJzoKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShuYW1lKQotICAgICAgICAgICAgICAgICAgICBoYXNfcHkgPSBoYXNfcHkgb3IgbmFtZS5lbmRzd2l0aCgiLnB5Iikgb3IgbmFtZS5lbmRzd2l0aCgiLnB5dyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQotICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgbmFtZSwgc3ViZGlyLCBmZWF0dXJlKSkKLQotICAgICAgICBpZiBoYXNfcHk6Ci0gICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCi0gICAgIyBBZGQgRExMcwotICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCi0gICAgbGliID0gRExMcwotICAgIGxpYi5hZGRfZmlsZSgicHkuaWNvIiwgc3JjPXNyY2RpcisiL1BDL3B5LmljbyIpCi0gICAgbGliLmFkZF9maWxlKCJweWMuaWNvIiwgc3JjPXNyY2RpcisiL1BDL3B5Yy5pY28iKQotICAgIGRsbHMgPSBbXQotICAgIHRjbGZpbGVzID0gW10KLSAgICBmb3IgZiBpbiBleHRlbnNpb25zOgotICAgICAgICBpZiBmPT0iX3RraW50ZXIucHlkIjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmNkaXIgKyAiLyIgKyBQQ0JVSUxEICsgIi8iICsgZik6Ci0gICAgICAgICAgICBwcmludCgiV0FSTklORzogTWlzc2luZyBleHRlbnNpb24iLCBmKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZGxscy5hcHBlbmQoZikKLSAgICAgICAgbGliLmFkZF9maWxlKGYpCi0gICAgbGliLmFkZF9maWxlKCdweXRob24zLmRsbCcpCi0gICAgIyBBZGQgc3FsaXRlCi0gICAgaWYgbXNpbGliLm1zaV90eXBlPT0iSW50ZWw2NDsxMDMzIjoKLSAgICAgICAgc3FsaXRlX2FyY2ggPSAiL2lhNjQiCi0gICAgZWxpZiBtc2lsaWIubXNpX3R5cGU9PSJ4NjQ7MTAzMyI6Ci0gICAgICAgIHNxbGl0ZV9hcmNoID0gIi9hbWQ2NCIKLSAgICAgICAgdGNsc3VmZml4ID0gIjY0IgotICAgIGVsc2U6Ci0gICAgICAgIHNxbGl0ZV9hcmNoID0gIiIKLSAgICAgICAgdGNsc3VmZml4ID0gIiIKLSAgICBsaWIuYWRkX2ZpbGUoInNxbGl0ZTMuZGxsIikKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCIlcy8lcy9fdGtpbnRlci5weWQiICUgKHNyY2RpciwgUENCVUlMRCkpOgotICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IE1pc3NpbmcgX3RraW50ZXIucHlkIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpYi5zdGFydF9jb21wb25lbnQoIlRrRExMcyIsIHRjbHRrKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJfdGtpbnRlci5weWQiKQotICAgICAgICAgICAgZGxscy5hcHBlbmQoIl90a2ludGVyLnB5ZCIpCi0gICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcisoIi9leHRlcm5hbHMvdGNsdGslcy9iaW4iICUgdGNsc3VmZml4KSkKLSAgICAgICAgICAgIGZvciBmIGluIGdsb2IuZ2xvYjEodGNsZGlyLCAiKi5kbGwiKToKLSAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZiwgc3JjPW9zLnBhdGguam9pbih0Y2xkaXIsIGYpKQotICAgICMgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IHVua25vd24gZXh0ZW5zaW9ucwotICAgIGZvciBmIGluIGdsb2IuZ2xvYjEoc3JjZGlyKyIvIitQQ0JVSUxELCAiKi5weWQiKToKLSAgICAgICAgaWYgZi5lbmRzd2l0aCgiX2QucHlkIik6IGNvbnRpbnVlICMgZGVidWcgdmVyc2lvbgotICAgICAgICBpZiBmIGluIGRsbHM6IGNvbnRpbnVlCi0gICAgICAgIHByaW50KCJXQVJOSU5HOiBVbmtub3duIGV4dGVuc2lvbiIsIGYpCi0KLSAgICAjIEFkZCBoZWFkZXJzCi0gICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCAiaW5jbHVkZSIsICJpbmNsdWRlIiwgIklOQ0xVREV8aW5jbHVkZSIpCi0gICAgbGliLmdsb2IoIiouaCIpCi0gICAgbGliLmFkZF9maWxlKCJweWNvbmZpZy5oIiwgc3JjPSIuLi9QQy9weWNvbmZpZy5oIikKLSAgICAjIEFkZCBpbXBvcnQgbGlicmFyaWVzCi0gICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgUENCVUlMRCwgImxpYnMiLCAiTElCU3xsaWJzIikKLSAgICBmb3IgZiBpbiBkbGxzOgotICAgICAgICBsaWIuYWRkX2ZpbGUoZi5yZXBsYWNlKCdweWQnLCdsaWInKSkKLSAgICBsaWIuYWRkX2ZpbGUoJ3B5dGhvbiVzJXMubGliJyAlIChtYWpvciwgbWlub3IpKQotICAgIGxpYi5hZGRfZmlsZSgncHl0aG9uMy5saWInKQotICAgICMgQWRkIHRoZSBtaW5ndy1mb3JtYXQgbGlicmFyeQotICAgIGlmIGhhdmVfbWluZ3c6Ci0gICAgICAgIGxpYi5hZGRfZmlsZSgnbGlicHl0aG9uJXMlcy5hJyAlIChtYWpvciwgbWlub3IpKQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICAjIEFkZCBUY2wvVGsKLSAgICAgICAgdGNsZGlycyA9IFsocm9vdCwgJ2V4dGVybmFscy90Y2x0ayVzL2xpYicgJSB0Y2xzdWZmaXgsICd0Y2wnKV0KLSAgICAgICAgdGNsdGsuc2V0X2N1cnJlbnQoKQotICAgICAgICB3aGlsZSB0Y2xkaXJzOgotICAgICAgICAgICAgcGFyZW50LCBwaHlzLCBkaXIgPSB0Y2xkaXJzLnBvcCgpCi0gICAgICAgICAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCBwYXJlbnQsIHBoeXMsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIGYpKToKLSAgICAgICAgICAgICAgICAgICAgdGNsZGlycy5hcHBlbmQoKGxpYiwgZiwgZikpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKGYpCi0gICAgIyBBZGQgdG9vbHMKLSAgICB0b29scy5zZXRfY3VycmVudCgpCi0gICAgdG9vbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsICJUb29scyIsICJUb29scyIsICJUT09MU3xUb29scyIpCi0gICAgZm9yIGYgaW4gWydpMThuJywgJ3B5bmNoZScsICdTY3JpcHRzJ106Ci0gICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHRvb2xkaXIsIGYsIGYsICIlc3wlcyIgJSAodG9vbGRpci5tYWtlX3Nob3J0KGYpLCBmKSkKLSAgICAgICAgbGliLmdsb2IoIioucHkiKQotICAgICAgICBsaWIuZ2xvYigiKi5weXciKQotICAgICAgICBsaWIucmVtb3ZlX3B5YygpCi0gICAgICAgIGxpYi5nbG9iKCIqLnR4dCIpCi0gICAgICAgIGlmIGYgPT0gInB5bmNoZSI6Ci0gICAgICAgICAgICB4ID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgbGliLCAiWCIsICJYIiwgIlh8WCIpCi0gICAgICAgICAgICB4Lmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgIlJFQURNRSIpKToKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKLSAgICAgICAgaWYgZiA9PSAnU2NyaXB0cyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIjJ0bzMucHkiLCBzcmM9IjJ0bzMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvYzMucHkiLCBzcmM9InB5ZG9jMyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5dmVudi5weSIsIHNyYz0icHl2ZW52IikKLSAgICAjIEFkZCBkb2N1bWVudGF0aW9uCi0gICAgaHRtbGZpbGVzLnNldF9jdXJyZW50KCkKLSAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCAiRG9jIiwgIkRvYyIsICJET0N8RG9jIikKLSAgICBsaWIuc3RhcnRfY29tcG9uZW50KCJkb2N1bWVudGF0aW9uIiwga2V5ZmlsZT1kb2NmaWxlKQotICAgIGxpYi5hZGRfZmlsZShkb2NmaWxlLCBzcmM9ImJ1aWxkL2h0bWxoZWxwLyIrZG9jZmlsZSkKLQotICAgIGNhYi5jb21taXQoZGIpCi0KLSAgICBmb3IgZiBpbiB0bXBmaWxlczoKLSAgICAgICAgb3MudW5saW5rKGYpCi0KLSMgU2VlICJSZWdpc3RyeSBUYWJsZSIsICJDb21wb25lbnQgVGFibGUiCi1kZWYgYWRkX3JlZ2lzdHJ5KGRiKToKLSAgICAjIEZpbGUgZXh0ZW5zaW9ucywgYXNzb2NpYXRlZCB3aXRoIHRoZSBSRUdJU1RSWS5kZWYgY29tcG9uZW50Ci0gICAgIyBJRExFIHZlcmJzIGRlcGVuZCBvbiB0aGUgdGNsdGsgZmVhdHVyZS4KLSAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlc1JlZ2lzdHJ5S2V5UGF0aCA9IDQKLSAgICAjIC0xIGZvciBSb290IHNwZWNpZmllcyAiZGVwZW5kZW50IG9uIEFMTFVTRVJTIHByb3BlcnR5IgotICAgIHRjbGRhdGEgPSBbXQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2xkYXRhID0gWwotICAgICAgICAgICAgKCJSRUdJU1RSWS50Y2wiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKLSAgICAgICAgICAgICAicHkuSURMRSIpXQotICAgIGFkZF9kYXRhKGRiLCAiQ29tcG9uZW50IiwKLSAgICAgICAgICAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlc1JlZ2lzdHJ5S2V5UGF0aCA9IDQKLSAgICAgICAgICAgICBbKCJSRUdJU1RSWSIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICAgIkluc3RhbGxQYXRoIiksCi0gICAgICAgICAgICAgICgiUkVHSVNUUlkuZG9jIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCi0gICAgICAgICAgICAgICAiRG9jdW1lbnRhdGlvbiIpLAotICAgICAgICAgICAgICAoIlJFR0lTVFJZLnBhdGgiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKLSAgICAgICAgICAgICAgTm9uZSksCi0gICAgICAgICAgICAgICgiUkVHSVNUUlkuZW5zdXJlcGlwIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsICJFbnN1cmVQaXBSdW4iLAotICAgICAgICAgICAgICBOb25lKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kZWYiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUpXSArIHRjbGRhdGEpCi0gICAgIyBTZWUgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIi4KLSAgICAjIFRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIFRjbFRrIGFuZCBweXRob253LmV4ZSBpcyBuZWNlc3NhcnkgdG8gbWFrZSBJQ0U1OQotICAgICMgaGFwcHksIGJlY2F1c2UgdGhlIGluc3RhbGxlciBvdGhlcndpc2UgYmVsaWV2ZXMgdGhhdCB0aGUgSURMRSBhbmQgUHlEb2MKLSAgICAjIHNob3J0Y3V0cyBtaWdodCBnZXQgaW5zdGFsbGVkIHdpdGhvdXQgcHl0aG9udy5leGUgYmVpbmcgaW5zdGFsbC4gVGhpcwotICAgICMgaXMgbm90IHRydWUsIHNpbmNlIGluc3RhbGxpbmcgVGNsVGsgd2lsbCBpbnN0YWxsIHRoZSBkZWZhdWx0IGZlYXR1cmUsIHdoaWNoCi0gICAgIyB3aWxsIGNhdXNlIHB5dGhvbncuZXhlIHRvIGJlIGluc3RhbGxlZC4KLSAgICAjIFJFR0lTVFJZLnRjbCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBmZWF0dXJlLCBhcyBpdCB3aWxsIGJlIHJlcXVlc3RlZAotICAgICMgdGhyb3VnaCBhIGN1c3RvbSBhY3Rpb24KLSAgICB0Y2xkYXRhID0gW10KLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsZGF0YSA9IFsodGNsdGsuaWQsICJweXRob253LmV4ZSIpXQotICAgIGFkZF9kYXRhKGRiLCAiRmVhdHVyZUNvbXBvbmVudHMiLAotICAgICAgICAgICAgIFsoZGVmYXVsdF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKGh0bWxmaWxlcy5pZCwgIlJFR0lTVFJZLmRvYyIpLAotICAgICAgICAgICAgICAocHJlcGVuZF9wYXRoLmlkLCAiUkVHSVNUUlkucGF0aCIpLAotICAgICAgICAgICAgICAocGlwX2ZlYXR1cmUuaWQsICJSRUdJU1RSWS5lbnN1cmVwaXAiKSwKLSAgICAgICAgICAgICAgKGV4dF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkuZGVmIildICsKLSAgICAgICAgICAgICAgdGNsZGF0YQotICAgICAgICAgICAgICApCi0gICAgIyBFeHRlbnNpb25zIGFyZSBub3QgYWR2ZXJ0aXNlZC4gRm9yIGFkdmVydGlzZWQgZXh0ZW5zaW9ucywKLSAgICAjIHdlIHdvdWxkIG5lZWQgc2VwYXJhdGUgYmluYXJpZXMgdGhhdCBpbnN0YWxsIGFsb25nIHdpdGggdGhlCi0gICAgIyBleHRlbnNpb24uCi0gICAgcGF0ID0gciJTb2Z0d2FyZVxDbGFzc2VzXCVzUHl0aG9uLiVzRmlsZVxzaGVsbFwlc1xjb21tYW5kIgotICAgIGV3aSA9ICJFZGl0IHdpdGggSURMRSIKLSAgICBwYXQyID0gciJTb2Z0d2FyZVxDbGFzc2VzXCVzUHl0aG9uLiVzRmlsZVxEZWZhdWx0SWNvbiIKLSAgICBwYXQzID0gciJTb2Z0d2FyZVxDbGFzc2VzXCVzUHl0aG9uLiVzRmlsZSIKLSAgICBwYXQ0ID0gciJTb2Z0d2FyZVxDbGFzc2VzXCVzUHl0aG9uLiVzRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIgotICAgIHRjbF92ZXJicyA9IFtdCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbF92ZXJicz1bCi0gICAgICAgICAgICAgKCJweS5JRExFIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiIiwgZXdpKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICJbVEFSR0VURElSXUxpYlxpZGxlbGliXGlkbGUucHl3IiAtZSAiJTEiJywKLSAgICAgICAgICAgICAgIlJFR0lTVFJZLnRjbCIpLAotICAgICAgICAgICAgICgicHl3LklETEUiLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIsIGV3aSksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbncuZXhlIiAiW1RBUkdFVERJUl1MaWJcaWRsZWxpYlxpZGxlLnB5dyIgLWUgIiUxIicsCi0gICAgICAgICAgICAgICJSRUdJU1RSWS50Y2wiKSwKLSAgICAgICAgXQotICAgIGFkZF9kYXRhKGRiLCAiUmVnaXN0cnkiLAotICAgICAgICAgICAgWyMgRXh0ZW5zaW9ucwotICAgICAgICAgICAgICgicHkuZXh0IiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLkZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcuZXh0IiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQrJ3cnLCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbi5Ob0NvbkZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMuZXh0IiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQrJ2MnLCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbi5Db21waWxlZEZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweW8uZXh0IiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQrJ28nLCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbi5Db21waWxlZEZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgIyBNSU1FIHR5cGVzCi0gICAgICAgICAgICAgKCJweS5taW1lIiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQsICJDb250ZW50IFR5cGUiLAotICAgICAgICAgICAgICAidGV4dC9wbGFpbiIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5taW1lIiwgLTEsIHIiU29mdHdhcmVcQ2xhc3Nlc1wuIitleHQrJ3cnLCAiQ29udGVudCBUeXBlIiwKLSAgICAgICAgICAgICAgInRleHQvcGxhaW4iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgI1ZlcmJzCi0gICAgICAgICAgICAgKCJweS5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weXcuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgIF0gKyB0Y2xfdmVyYnMgKyBbCi0gICAgICAgICAgICAgI0ljb25zCi0gICAgICAgICAgICAgKCJweS5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIiIpLCAiIiwKLSAgICAgICAgICAgICAgcidbRExMc11weS5pY28nLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcuaWNvbiIsIC0xLCBwYXQyICUgKHRlc3RwcmVmaXgsICJOb0NvbiIpLCAiIiwKLSAgICAgICAgICAgICAgcidbRExMc11weS5pY28nLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMuaWNvbiIsIC0xLCBwYXQyICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIpLCAiIiwKLSAgICAgICAgICAgICAgcidbRExMc11weWMuaWNvJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICMgRGVzY3JpcHRpb25zCi0gICAgICAgICAgICAgKCJweS50eHQiLCAtMSwgcGF0MyAlICh0ZXN0cHJlZml4LCAiIiksICIiLAotICAgICAgICAgICAgICAiUHl0aG9uIEZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcudHh0IiwgLTEsIHBhdDMgJSAodGVzdHByZWZpeCwgIk5vQ29uIiksICIiLAotICAgICAgICAgICAgICAiUHl0aG9uIEZpbGUgKG5vIGNvbnNvbGUpIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLnR4dCIsIC0xLCBwYXQzICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIpLCAiIiwKLSAgICAgICAgICAgICAgIkNvbXBpbGVkIFB5dGhvbiBGaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICMgRHJvcCBIYW5kbGVyCi0gICAgICAgICAgICAgKCJweS5kcm9wIiwgLTEsIHBhdDQgJSAodGVzdHByZWZpeCwgIiIpLCAiIiwKLSAgICAgICAgICAgICAgIns2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3LmRyb3AiLCAtMSwgcGF0NCAlICh0ZXN0cHJlZml4LCAiTm9Db24iKSwgIiIsCi0gICAgICAgICAgICAgICJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5kcm9wIiwgLTEsIHBhdDQgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiksICIiLAotICAgICAgICAgICAgICAiezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICBdKQotCi0gICAgIyBQQVRIRVhUCi0gICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCi0gICAgICAgICAgICAgWygiUGF0aEV4dEFkZGl0aW9uIiwgIj0tKlBhdGhFeHQiLCAiW35dOy5QWSIsICJSRUdJU1RSWS5kZWYiKV0pCi0KLSAgICAjIFJlZ2lzdHJ5IGtleXMKLSAgICBwcmVmaXggPSByIlNvZnR3YXJlXCVzUHl0aG9uXFB5dGhvbkNvcmVcJXMiICUgKHRlc3RwcmVmaXgsIHNob3J0X3ZlcnNpb24pCi0gICAgYWRkX2RhdGEoZGIsICJSZWdpc3RyeSIsCi0gICAgICAgICAgICAgWygiSW5zdGFsbFBhdGgiLCAtMSwgcHJlZml4K3IiXEluc3RhbGxQYXRoIiwgIiIsICJbVEFSR0VURElSXSIsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoIkluc3RhbGxHcm91cCIsIC0xLCBwcmVmaXgrciJcSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiwgIiIsCi0gICAgICAgICAgICAgICAiUHl0aG9uICVzIiAlIHNob3J0X3ZlcnNpb24sICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoIlB5dGhvblBhdGgiLCAtMSwgcHJlZml4K3IiXFB5dGhvblBhdGgiLCAiIiwKLSAgICAgICAgICAgICAgIHIiW1RBUkdFVERJUl1MaWI7W1RBUkdFVERJUl1ETExzIiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiRG9jdW1lbnRhdGlvbiIsIC0xLCBwcmVmaXgrciJcSGVscFxNYWluIFB5dGhvbiBEb2N1bWVudGF0aW9uIiwgIiIsCi0gICAgICAgICAgICAgICAiW1RBUkdFVERJUl1Eb2NcXCIrZG9jZmlsZSAsICJSRUdJU1RSWS5kb2MiKSwKLSAgICAgICAgICAgICAgKCJNb2R1bGVzIiwgLTEsIHByZWZpeCtyIlxNb2R1bGVzIiwgIisiLCBOb25lLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKCJBcHBQYXRocyIsIC0xLCByIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEFwcCBQYXRoc1xQeXRob24uZXhlIiwKLSAgICAgICAgICAgICAgICIiLCByIltUQVJHRVRESVJdUHl0aG9uLmV4ZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAgKCJEaXNwbGF5SWNvbiIsIC0xLAotICAgICAgICAgICAgICAgciJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJXMiICUgcHJvZHVjdF9jb2RlLAotICAgICAgICAgICAgICAgIkRpc3BsYXlJY29uIiwgIltUQVJHRVRESVJdcHl0aG9uLmV4ZSIsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAjIEZha2UgcmVnaXN0cnkgZW50cnkgdG8gYWxsb3cgaW5zdGFsbGVyIHRvIHRyYWNrIHdoZXRoZXIgZW5zdXJlcGlwIGhhcyBiZWVuIHJ1bgotICAgICAgICAgICAgICAoIkVuc3VyZVBpcFJ1biIsIC0xLCBwcmVmaXgrciJcRW5zdXJlUGlwUnVuIiwgIiIsICIjMSIsICJSRUdJU1RSWS5lbnN1cmVwaXAiKSwKLSAgICAgICAgICAgICAgXSkKLSAgICAjIFNob3J0Y3V0cywgc2VlICJTaG9ydGN1dCBUYWJsZSIKLSAgICBhZGRfZGF0YShkYiwgIkRpcmVjdG9yeSIsCi0gICAgICAgICAgICAgWygiUHJvZ3JhbU1lbnVGb2xkZXIiLCAiVEFSR0VURElSIiwgIi4iKSwKLSAgICAgICAgICAgICAgKCJNZW51RGlyIiwgIlByb2dyYW1NZW51Rm9sZGVyIiwgIlBZJXMlc3wlc1B5dGhvbiAlcy4lcyIgJSAobWFqb3IsbWlub3IsdGVzdHByZWZpeCxtYWpvcixtaW5vcikpXSkKLSAgICBhZGRfZGF0YShkYiwgIlJlbW92ZUZpbGUiLAotICAgICAgICAgICAgIFsoIk1lbnVEaXIiLCAiVEFSR0VURElSIiwgTm9uZSwgIk1lbnVEaXIiLCAyKV0pCi0gICAgdGNsdGtzaG9ydGN1dHMgPSBbXQotICAgIGlmIG1zaWxpYi5XaW42NDoKLSAgICAgICAgYml0dGVkID0gIjY0IGJpdCIKLSAgICBlbHNlOgotICAgICAgICBiaXR0ZWQgPSAiMzIgYml0IgotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2x0a3Nob3J0Y3V0cyA9IFsKLSAgICAgICAgICAgICAgKCJJRExFIiwgIk1lbnVEaXIiLAotICAgICAgICAgICAgICAgIklETEV8SURMRSAoUHl0aG9uICIrc2hvcnRfdmVyc2lvbisiIEdVSSAtICIrYml0dGVkKyIpIiwKLSAgICAgICAgICAgICAgICJweXRob253LmV4ZSIsIHRjbHRrLmlkLCByJyJbVEFSR0VURElSXUxpYlxpZGxlbGliXGlkbGUucHl3IicsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lLCAicHl0aG9uX2ljb24uZXhlIiwgMCwgTm9uZSwgIlRBUkdFVERJUiIpLAotICAgICAgICAgICAgICBdCi0gICAgYWRkX2RhdGEoZGIsICJTaG9ydGN1dCIsCi0gICAgICAgICAgICAgdGNsdGtzaG9ydGN1dHMgKwotICAgICAgICAgICAgIFsjIEFkdmVydGlzZWQgc2hvcnRjdXRzOiB0YXJnZXRzIGFyZSBmZWF0dXJlcywgbm90IGZpbGVzCi0gICAgICAgICAgICAgICgiUHl0aG9uIiwgIk1lbnVEaXIiLAotICAgICAgICAgICAgICAgIlBZVEhPTnxQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgKGNvbW1hbmQgbGluZSAtICIrYml0dGVkKyIpIiwKLSAgICAgICAgICAgICAgICJweXRob24uZXhlIiwgZGVmYXVsdF9mZWF0dXJlLmlkLCBOb25lLCBOb25lLCBOb25lLAotICAgICAgICAgICAgICAgInB5dGhvbl9pY29uLmV4ZSIsIDIsIE5vbmUsICJUQVJHRVRESVIiKSwKLSAgICAgICAgICAgICAgIyBBZHZlcnRpc2luZyB0aGUgTWFudWFsIGJyZWFrcyBvbiAoc29tZT8pIFdpbjk4LCBhbmQgdGhlIHNob3J0Y3V0IGxhY2tzIGFuCi0gICAgICAgICAgICAgICMgaWNvbiBmaXJzdC4KLSAgICAgICAgICAgICAgIygiTWFudWFsIiwgIk1lbnVEaXIiLCAiTUFOVUFMfFB5dGhvbiBNYW51YWxzIiwgImRvY3VtZW50YXRpb24iLAotICAgICAgICAgICAgICAjIGh0bWxmaWxlcy5pZCwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0gICAgICAgICAgICAgICMjIE5vbi1hZHZlcnRpc2VkIHNob3J0Y3V0czogbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYSByZWdpc3RyeSBjb21wb25lbnQKLSAgICAgICAgICAgICAgKCJNYW51YWwiLCAiTWVudURpciIsICJNQU5VQUx8UHl0aG9uICIrc2hvcnRfdmVyc2lvbisiIE1hbnVhbHMiLAotICAgICAgICAgICAgICAgIlJFR0lTVFJZLmRvYyIsICJbIyVzXSIgJSBkb2NmaWxlLAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0gICAgICAgICAgICAgICgiUHlEb2MiLCAiTWVudURpciIsCi0gICAgICAgICAgICAgICAiTU9ERE9DU3xQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgRG9jcyBTZXJ2ZXIgKHB5ZG9jIC0gIisKLSAgICAgICAgICAgICAgIGJpdHRlZCsiKSIsICJweXRob24uZXhlIiwgZGVmYXVsdF9mZWF0dXJlLmlkLCByJy1tIHB5ZG9jIC1iJywKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsICJweXRob25faWNvbi5leGUiLCAwLCBOb25lLCAiVEFSR0VURElSIiksCi0gICAgICAgICAgICAgICgiVW5pbnN0YWxsIiwgIk1lbnVEaXIiLCAiVU5JTlNUfFVuaW5zdGFsbCBQeXRob24gIisKLSAgICAgICAgICAgICAgIHNob3J0X3ZlcnNpb24rIiAoIitiaXR0ZWQrIikiLCAiUkVHSVNUUlkiLAotICAgICAgICAgICAgICAgU3lzdGVtRm9sZGVyTmFtZSsibXNpZXhlYyIsICAiL3glcyIgJSBwcm9kdWN0X2NvZGUsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgXSkKLSAgICBkYi5Db21taXQoKQotCi1kZWYgYnVpbGRfcGRiemlwKCk6Ci0gICAgcGRiZXhjbHVkZSA9IFsna2lsbF9weXRob24ucGRiJywgJ21ha2VfYnVpbGRpbmZvLnBkYicsCi0gICAgICAgICAgICAgICAgICAnbWFrZV92ZXJzaW9uaW5mby5wZGInXQotICAgIHBhdGggPSAicHl0aG9uLSVzJXMtcGRiLnppcCIgJSAoZnVsbF9jdXJyZW50X3ZlcnNpb24sIG1zaWxpYi5hcmNoX2V4dCkKLSAgICBwZGJ6aXAgPSB6aXBmaWxlLlppcEZpbGUocGF0aCwgJ3cnKQotICAgIGZvciBmIGluIGdsb2IuZ2xvYjEob3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCksICIqLnBkYiIpOgotICAgICAgICBpZiBmIG5vdCBpbiBwZGJleGNsdWRlIGFuZCBub3QgZi5lbmRzd2l0aCgnX2QucGRiJyk6Ci0gICAgICAgICAgICBwZGJ6aXAud3JpdGUob3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgZiksIGYpCi0gICAgcGRiemlwLmNsb3NlKCkKLQotZGIsbXNpbmFtZSA9IGJ1aWxkX2RhdGFiYXNlKCkKLXRyeToKLSAgICBhZGRfZmVhdHVyZXMoZGIpCi0gICAgYWRkX3VpKGRiKQotICAgIGFkZF9maWxlcyhkYikKLSAgICBhZGRfcmVnaXN0cnkoZGIpCi0gICAgcmVtb3ZlX29sZF92ZXJzaW9ucyhkYikKLSAgICBkYi5Db21taXQoKQotZmluYWxseToKLSAgICBkZWwgZGIKLQotIyBNZXJnZSBDUlQgaW50byBNU0kgZmlsZS4gVGhpcyByZXF1aXJlcyB0aGUgZGF0YWJhc2UgdG8gYmUgY2xvc2VkLgotbW9kX2RpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWyJQcm9ncmFtRmlsZXMiXSwgIkNvbW1vbiBGaWxlcyIsICJNZXJnZSBNb2R1bGVzIikKLWlmIG1zaWxpYi5XaW42NDoKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g2NC5tc20iXQotZWxzZToKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g4Ni5tc20iXQotCi1mb3IgaSwgbiBpbiBlbnVtZXJhdGUobW9kdWxlcyk6Ci0gICAgbW9kdWxlc1tpXSA9IG9zLnBhdGguam9pbihtb2RfZGlyLCBuKQotCi1kZWYgbWVyZ2UobXNpLCBmZWF0dXJlLCByb290ZGlyLCBtb2R1bGVzKToKLSAgICBjYWJfYW5kX2ZpbGVjb3VudCA9IFtdCi0gICAgIyBTdGVwIDE6IE1lcmdlIGRhdGFiYXNlcywgZXh0cmFjdCBjYWJmaWxlcwotICAgIG0gPSBtc2lsaWIuTWFrZU1lcmdlMigpCi0gICAgbS5PcGVuTG9nKCJtZXJnZS5sb2ciKQotICAgIG0uT3BlbkRhdGFiYXNlKG1zaSkKLSAgICBmb3IgbW9kdWxlIGluIG1vZHVsZXM6Ci0gICAgICAgIHByaW50IG1vZHVsZQotICAgICAgICBtLk9wZW5Nb2R1bGUobW9kdWxlLDApCi0gICAgICAgIG0uTWVyZ2UoZmVhdHVyZSwgcm9vdGRpcikKLSAgICAgICAgcHJpbnQgIkVycm9yczoiCi0gICAgICAgIGZvciBlIGluIG0uRXJyb3JzOgotICAgICAgICAgICAgcHJpbnQgZS5UeXBlLCBlLk1vZHVsZVRhYmxlLCBlLkRhdGFiYXNlVGFibGUKLSAgICAgICAgICAgIHByaW50ICIgICBNb2RrZXlzOiIsCi0gICAgICAgICAgICBmb3IgcyBpbiBlLk1vZHVsZUtleXM6IHByaW50IHMsCi0gICAgICAgICAgICBwcmludAotICAgICAgICAgICAgcHJpbnQgIiAgIERCS2V5czoiLAotICAgICAgICAgICAgZm9yIHMgaW4gZS5EYXRhYmFzZUtleXM6IHByaW50IHMsCi0gICAgICAgICAgICBwcmludAotICAgICAgICBjYWJuYW1lID0gdGVtcGZpbGUubWt0ZW1wKHN1ZmZpeD0iLmNhYiIpCi0gICAgICAgIG0uRXh0cmFjdENBQihjYWJuYW1lKQotICAgICAgICBjYWJfYW5kX2ZpbGVjb3VudC5hcHBlbmQoKGNhYm5hbWUsIGxlbihtLk1vZHVsZUZpbGVzKSkpCi0gICAgICAgIG0uQ2xvc2VNb2R1bGUoKQotICAgIG0uQ2xvc2VEYXRhYmFzZShUcnVlKQotICAgIG0uQ2xvc2VMb2coKQotCi0gICAgIyBTdGVwIDI6IEFkZCBDQUIgZmlsZXMKLSAgICBpID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQotICAgIGRiID0gaS5PcGVuRGF0YWJhc2UobXNpLCBjb25zdGFudHMubXNpT3BlbkRhdGFiYXNlTW9kZVRyYW5zYWN0KQotCi0gICAgdiA9IGRiLk9wZW5WaWV3KCJTRUxFQ1QgTGFzdFNlcXVlbmNlIEZST00gTWVkaWEiKQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIG1heG1lZGlhID0gLTEKLSAgICB3aGlsZSAxOgotICAgICAgICByID0gdi5GZXRjaCgpCi0gICAgICAgIGlmIG5vdCByOiBicmVhawotICAgICAgICBzZXEgPSByLkludGVnZXJEYXRhKDEpCi0gICAgICAgIGlmIHNlcSA+IG1heG1lZGlhOgotICAgICAgICAgICAgbWF4bWVkaWEgPSBzZXEKLSAgICBwcmludCAiU3RhcnQgb2YgTWVkaWEiLCBtYXhtZWRpYQotCi0gICAgZm9yIGNhYm5hbWUsIGNvdW50IGluIGNhYl9hbmRfZmlsZWNvdW50OgotICAgICAgICBzdHJlYW0gPSAibWVyZ2VkJWQiICUgbWF4bWVkaWEKLSAgICAgICAgbXNpbGliLmFkZF9kYXRhKGRiLCAiTWVkaWEiLAotICAgICAgICAgICAgICAgIFsobWF4bWVkaWErMSwgbWF4bWVkaWErY291bnQsIE5vbmUsICIjIitzdHJlYW0sIE5vbmUsIE5vbmUpXSkKLSAgICAgICAgbXNpbGliLmFkZF9zdHJlYW0oZGIsIHN0cmVhbSwgIGNhYm5hbWUpCi0gICAgICAgIG9zLnVubGluayhjYWJuYW1lKQotICAgICAgICBtYXhtZWRpYSArPSBjb3VudAotICAgICMgVGhlIG1lcmdlIG1vZHVsZSBzZXRzIEFMTFVTRVJTIHRvIDEgaW4gdGhlIHByb3BlcnR5IHRhYmxlLgotICAgICMgVGhpcyBpcyB1bmRlc2lyZWQ7IGRlbGV0ZSB0aGF0Ci0gICAgdiA9IGRiLk9wZW5WaWV3KCJERUxFVEUgRlJPTSBQcm9wZXJ0eSBXSEVSRSBQcm9wZXJ0eT0nQUxMVVNFUlMnIikKLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICB2LkNsb3NlKCkKLSAgICBkYi5Db21taXQoKQotCi1tZXJnZShtc2luYW1lLCAiU2hhcmVkQ1JUIiwgIlRBUkdFVERJUiIsIG1vZHVsZXMpCi0KLSMgY2VydG5hbWUgKGZyb20gY29uZmlnLnB5KSBzaG91bGQgYmUgKGEgc3Vic3RyaW5nIG9mKQotIyB0aGUgY2VydGlmaWNhdGUgc3ViamVjdCwgZS5nLiAiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCi1pZiBjZXJ0bmFtZToKLSAgICBvcy5zeXN0ZW0oJ3NpZ250b29sIHNpZ24gL24gIiVzIiAnCi0gICAgICAnL3QgaHR0cDovL3RpbWVzdGFtcC52ZXJpc2lnbi5jb20vc2NyaXB0cy90aW1lc3RhbXAuZGxsICcKLSAgICAgICcvZCAiUHl0aG9uICVzIiAnCi0gICAgICAnJXMnICUgKGNlcnRuYW1lLCBmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbmFtZSkpCi0KLWlmIHBkYnppcDoKLSAgICBidWlsZF9wZGJ6aXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS50YXJnZXRzIGIvVG9vbHMvbXNpL21zaS50YXJnZXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MDdkYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKQEAgLTAsMCArMSw2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKworICAgIDxUYXJnZXQgTmFtZT0iUHJvY2Vzc0luc3RhbGxGaWxlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iQChJbnN0YWxsRmlsZXMpICE9ICcnIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0ZpbGVMaXN0VGFyZ2V0PiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkkKE1TQnVpbGRQcm9qZWN0TmFtZSkuZy5jc3Y8L19GaWxlTGlzdFRhcmdldD4KKyAgICAgICAgICAgIDxfSW5zdGFsbEZpbGVzVGFyZ2V0PiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkkKE1TQnVpbGRQcm9qZWN0TmFtZSkuZy53eHM8L19JbnN0YWxsRmlsZXNUYXJnZXQ+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAgICAgCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8SW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgICAgIDxfU291cmNlPiUoU291cmNlKSQoW21zYnVpbGRdOjpNYWtlUmVsYXRpdmUoJShTb3VyY2VCYXNlKSwgJShGdWxsUGF0aCkpKTwvX1NvdXJjZT4KKyAgICAgICAgICAgICAgICA8X1RhcmdldD4lKFRhcmdldF8pJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFRhcmdldEJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fVGFyZ2V0PgorICAgICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfRmlsZUxpc3RUYXJnZXQpIiBMaW5lcz0iQChJbnN0YWxsRmlsZXMtPicmcXVvdDslKF9Tb3VyY2UpJnF1b3Q7LCZxdW90OyUoX1RhcmdldCkmcXVvdDssJnF1b3Q7JShHcm91cCkmcXVvdDssJnF1b3Q7JShEaXNrSWQpJnF1b3Q7LCZxdW90OyUoQ29uZGl0aW9uKSZxdW90OycpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyIkKFB5dGhvbkV4ZSkiIGNzdl90b193eHMucHkgIiQoX0ZpbGVMaXN0VGFyZ2V0KSIgIiQoX0luc3RhbGxGaWxlc1RhcmdldCkiJworICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CisKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoX0ZpbGVMaXN0VGFyZ2V0KTskKF9JbnN0YWxsRmlsZXNUYXJnZXQpIiAvPgorICAgICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8VGFyZ2V0IE5hbWU9Il9UcmFuc2Zvcm1XeGxUZW1wbGF0ZXMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBJbnB1dHM9IkAoV3hsVGVtcGxhdGUpIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShGaWxlbmFtZSkud3hsIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0NvbnRlbnQ+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCglKFd4bFRlbXBsYXRlLkZ1bGxQYXRoKSkuUmVwbGFjZShge3tTaG9ydFZlcnNpb259fWAsIGAkKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpYCkuUmVwbGFjZShge3tMb25nVmVyc2lvbn19YCwgYCQoUHl0aG9uVmVyc2lvbilgKS5SZXBsYWNlKGB7e0JpdG5lc3N9fWAsIGAkKEJpdG5lc3MpYCkpPC9fQ29udGVudD4KKyAgICAgICAgICAgIDxfRXhpc3RpbmdDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCckKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsJykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCkpPC9fRXhpc3RpbmdDb250ZW50PgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgICAgIAorICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsIgorICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iJChfQ29udGVudCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJ3cml0ZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uPSIkKF9Db250ZW50KSAhPSAkKF9FeGlzdGluZ0NvbnRlbnQpIiAvPgorICAgICAgICAKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwiIC8+CisgICAgICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iJChXaXhUYXJnZXRzUGF0aCkiIC8+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlNpZ25DYWJzIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduQ2Ficy0+JyZxdW90OyUoRnVsbFBhdGgpJnF1b3Q7JywnICcpIiBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIDxUYXJnZXQgTmFtZT0iU2lnbk1zaSI+CisgICAgICAgIDxFcnJvciBUZXh0PSJVbmFibGUgdG8gbG9jYXRlIHNpZ250b29sLmV4ZS4gU2V0IC9wOlNpZ25Ub29sUGF0aCBhbmQgcmVidWlsZCIgQ29uZGl0aW9uPSInJChfU2lnbkNvbW1hbmQpJyA9PSAnJyIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJChfU2lnbkNvbW1hbmQpIEAoU2lnbk1zaS0+JyZxdW90OyUoRnVsbFBhdGgpJnF1b3Q7JywnICcpIiBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIDxUYXJnZXQgTmFtZT0iU2lnbkJ1bmRsZUVuZ2luZSI+CisgICAgICAgIDxFcnJvciBUZXh0PSJVbmFibGUgdG8gbG9jYXRlIHNpZ250b29sLmV4ZS4gU2V0IC9wOlNpZ25Ub29sUGF0aCBhbmQgcmVidWlsZCIgQ29uZGl0aW9uPSInJChfU2lnbkNvbW1hbmQpJyA9PSAnJyIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJChfU2lnbkNvbW1hbmQpIEAoU2lnbkJ1bmRsZUVuZ2luZS0+JyZxdW90OyUoRnVsbFBhdGgpJnF1b3Q7JywnICcpIiBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIDxUYXJnZXQgTmFtZT0iU2lnbkJ1bmRsZSI+CisgICAgICAgIDxFcnJvciBUZXh0PSJVbmFibGUgdG8gbG9jYXRlIHNpZ250b29sLmV4ZS4gU2V0IC9wOlNpZ25Ub29sUGF0aCBhbmQgcmVidWlsZCIgQ29uZGl0aW9uPSInJChfU2lnbkNvbW1hbmQpJyA9PSAnJyIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJChfU2lnbkNvbW1hbmQpIEAoU2lnbkJ1bmRsZS0+JyZxdW90OyUoRnVsbFBhdGgpJnF1b3Q7JywnICcpIiBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2lsaWIucHkgYi9Ub29scy9tc2kvbXNpbGliLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjA4YjkxLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2lsaWIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NzkgKzAsMCBAQAotIyBNaWNyb3NvZnQgSW5zdGFsbGVyIExpYnJhcnkKLSMgKEMpIDIwMDMgTWFydGluIHYuIExvZXdpcwotCi1pbXBvcnQgd2luMzJjb20uY2xpZW50LmdlbmNhY2hlCi1pbXBvcnQgd2luMzJjb20uY2xpZW50Ci1pbXBvcnQgcHl0aG9uY29tLCBweXdpbnR5cGVzCi1mcm9tIHdpbjMyY29tLmNsaWVudCBpbXBvcnQgY29uc3RhbnRzCi1pbXBvcnQgcmUsIHN0cmluZywgb3MsIHNldHMsIGdsb2IsIHN1YnByb2Nlc3MsIHN5cywgX3dpbnJlZywgc3RydWN0LCBfbXNpCi0KLXRyeToKLSAgICBiYXNlc3RyaW5nCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGJhc2VzdHJpbmcgPSAoc3RyLCB1bmljb2RlKQotCi0jIFBhcnRpYWxseSB0YWtlbiBmcm9tIFdpbmUKLWRhdGFzaXplbWFzaz0gICAgICAweDAwZmYKLXR5cGVfdmFsaWQ9ICAgICAgICAweDAxMDAKLXR5cGVfbG9jYWxpemFibGU9ICAweDAyMDAKLQotdHlwZW1hc2s9ICAgICAgICAgIDB4MGMwMAotdHlwZV9sb25nPSAgICAgICAgIDB4MDAwMAotdHlwZV9zaG9ydD0gICAgICAgIDB4MDQwMAotdHlwZV9zdHJpbmc9ICAgICAgIDB4MGMwMAotdHlwZV9iaW5hcnk9ICAgICAgIDB4MDgwMAotCi10eXBlX251bGxhYmxlPSAgICAgMHgxMDAwCi10eXBlX2tleT0gICAgICAgICAgMHgyMDAwCi0jIFhYWCB0ZW1wb3JhcnksIGxvY2FsaXphYmxlPwota25vd25iaXRzID0gZGF0YXNpemVtYXNrIHwgdHlwZV92YWxpZCB8IHR5cGVfbG9jYWxpemFibGUgfCBcCi0gICAgICAgICAgICB0eXBlbWFzayB8IHR5cGVfbnVsbGFibGUgfCB0eXBlX2tleQotCi0jIFN1bW1hcnkgSW5mbyBQcm9wZXJ0eSBJRHMKLVBJRF9DT0RFUEFHRT0xCi1QSURfVElUTEU9MgotUElEX1NVQkpFQ1Q9MwotUElEX0FVVEhPUj00Ci1QSURfS0VZV09SRFM9NQotUElEX0NPTU1FTlRTPTYKLVBJRF9URU1QTEFURT03Ci1QSURfTEFTVEFVVEhPUj04Ci1QSURfUkVWTlVNQkVSPTkKLVBJRF9MQVNUUFJJTlRFRD0xMQotUElEX0NSRUFURV9EVE09MTIKLVBJRF9MQVNUU0FWRV9EVE09MTMKLVBJRF9QQUdFQ09VTlQ9MTQKLVBJRF9XT1JEQ09VTlQ9MTUKLVBJRF9DSEFSQ09VTlQ9MTYKLVBJRF9BUFBOQU1FPTE4Ci1QSURfU0VDVVJJVFk9MTkKLQotZGVmIHJlc2V0KCk6Ci0gICAgZ2xvYmFsIF9kaXJlY3RvcmllcwotICAgIF9kaXJlY3RvcmllcyA9IHNldHMuU2V0KCkKLQotZGVmIEVuc3VyZU1TSSgpOgotICAgIHdpbjMyY29tLmNsaWVudC5nZW5jYWNoZS5FbnN1cmVNb2R1bGUoJ3swMDBDMTA5Mi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDZ9JywgMTAzMywgMSwgMCkKLQotZGVmIEVuc3VyZU1TTSgpOgotICAgIHRyeToKLSAgICAgICAgd2luMzJjb20uY2xpZW50LmdlbmNhY2hlLkVuc3VyZU1vZHVsZSgnezBBRERBODJGLTJDMjYtMTFEMi1BRDY1LTAwQTBDOUFGMTFBNn0nLCAwLCAxLCAwKQotICAgIGV4Y2VwdCBweXdpbnR5cGVzLmNvbV9lcnJvcjoKLSAgICAgICAgd2luMzJjb20uY2xpZW50LmdlbmNhY2hlLkVuc3VyZU1vZHVsZSgnezBBRERBODJGLTJDMjYtMTFEMi1BRDY1LTAwQTBDOUFGMTFBNn0nLCAwLCAyLCAwKQotCi1fSW5zdGFsbGVyPU5vbmUKLWRlZiBNYWtlSW5zdGFsbGVyKCk6Ci0gICAgZ2xvYmFsIF9JbnN0YWxsZXIKLSAgICBpZiBfSW5zdGFsbGVyIGlzIE5vbmU6Ci0gICAgICAgIEVuc3VyZU1TSSgpCi0gICAgICAgIF9JbnN0YWxsZXIgPSB3aW4zMmNvbS5jbGllbnQuRGlzcGF0Y2goJ1dpbmRvd3NJbnN0YWxsZXIuSW5zdGFsbGVyJywKLSAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENMU0lEPSd7MDAwQzEwOTAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2fScpCi0gICAgcmV0dXJuIF9JbnN0YWxsZXIKLQotX01lcmdlPU5vbmUKLWRlZiBNYWtlTWVyZ2UyKCk6Ci0gICAgZ2xvYmFsIF9NZXJnZQotICAgIGlmIF9NZXJnZSBpcyBOb25lOgotICAgICAgICBFbnN1cmVNU00oKQotICAgICAgICBfTWVyZ2UgPSB3aW4zMmNvbS5jbGllbnQuRGlzcGF0Y2goIk1zbS5NZXJnZTIuMSIpCi0gICAgcmV0dXJuIF9NZXJnZQotCi1jbGFzcyBUYWJsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5maWVsZHMgPSBbXQotCi0gICAgZGVmIGFkZF9maWVsZChzZWxmLCBpbmRleCwgbmFtZSwgdHlwZSk6Ci0gICAgICAgIHNlbGYuZmllbGRzLmFwcGVuZCgoaW5kZXgsbmFtZSx0eXBlKSkKLQotICAgIGRlZiBzcWwoc2VsZik6Ci0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgIGtleXMgPSBbXQotICAgICAgICBzZWxmLmZpZWxkcy5zb3J0KCkKLSAgICAgICAgZmllbGRzID0gW05vbmVdKmxlbihzZWxmLmZpZWxkcykKLSAgICAgICAgZm9yIGluZGV4LCBuYW1lLCB0eXBlIGluIHNlbGYuZmllbGRzOgotICAgICAgICAgICAgaW5kZXggLT0gMQotICAgICAgICAgICAgdW5rID0gdHlwZSAmIH5rbm93bmJpdHMKLSAgICAgICAgICAgIGlmIHVuazoKLSAgICAgICAgICAgICAgICBwcmludCAiJXMuJXMgdW5rbm93biBiaXRzICV4IiAlIChzZWxmLm5hbWUsIG5hbWUsIHVuaykKLSAgICAgICAgICAgIHNpemUgPSB0eXBlICYgZGF0YXNpemVtYXNrCi0gICAgICAgICAgICBkdHlwZSA9IHR5cGUgJiB0eXBlbWFzawotICAgICAgICAgICAgaWYgZHR5cGUgPT0gdHlwZV9zdHJpbmc6Ci0gICAgICAgICAgICAgICAgaWYgc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgdG5hbWU9IkNIQVIoJWQpIiAlIHNpemUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0bmFtZT0iQ0hBUiIKLSAgICAgICAgICAgIGVsaWYgZHR5cGUgPT0gdHlwZV9zaG9ydDoKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2l6ZT09MgotICAgICAgICAgICAgICAgIHRuYW1lID0gIlNIT1JUIgotICAgICAgICAgICAgZWxpZiBkdHlwZSA9PSB0eXBlX2xvbmc6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNpemU9PTQKLSAgICAgICAgICAgICAgICB0bmFtZT0iTE9ORyIKLSAgICAgICAgICAgIGVsaWYgZHR5cGUgPT0gdHlwZV9iaW5hcnk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNpemU9PTAKLSAgICAgICAgICAgICAgICB0bmFtZT0iT0JKRUNUIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0bmFtZT0idW5rbm93biIKLSAgICAgICAgICAgICAgICBwcmludCAiJXMuJXN1bmtub3duIGludGVnZXIgdHlwZSAlZCIgJSAoc2VsZi5uYW1lLCBuYW1lLCBzaXplKQotICAgICAgICAgICAgaWYgdHlwZSAmIHR5cGVfbnVsbGFibGU6Ci0gICAgICAgICAgICAgICAgZmxhZ3MgPSAiIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmbGFncyA9ICIgTk9UIE5VTEwiCi0gICAgICAgICAgICBpZiB0eXBlICYgdHlwZV9sb2NhbGl6YWJsZToKLSAgICAgICAgICAgICAgICBmbGFncyArPSAiIExPQ0FMSVpBQkxFIgotICAgICAgICAgICAgZmllbGRzW2luZGV4XSA9ICJgJXNgICVzJXMiICUgKG5hbWUsIHRuYW1lLCBmbGFncykKLSAgICAgICAgICAgIGlmIHR5cGUgJiB0eXBlX2tleToKLSAgICAgICAgICAgICAgICBrZXlzLmFwcGVuZCgiYCVzYCIgJSBuYW1lKQotICAgICAgICBmaWVsZHMgPSAiLCAiLmpvaW4oZmllbGRzKQotICAgICAgICBrZXlzID0gIiwgIi5qb2luKGtleXMpCi0gICAgICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFICVzICglcyBQUklNQVJZIEtFWSAlcykiICUgKHNlbGYubmFtZSwgZmllbGRzLCBrZXlzKQotCi0gICAgZGVmIGNyZWF0ZShzZWxmLCBkYik6Ci0gICAgICAgIHYgPSBkYi5PcGVuVmlldyhzZWxmLnNxbCgpKQotICAgICAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICAgICAgdi5DbG9zZSgpCi0KLWNsYXNzIEJpbmFyeToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZm5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBmbmFtZQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCIlcyIpKScgJSBzZWxmLm5hbWUKLQotZGVmIGdlbl9zY2hlbWEoZGVzdHBhdGgsIHNjaGVtYXBhdGgpOgotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICBzY2hlbWEgPSBkLk9wZW5EYXRhYmFzZShzY2hlbWFwYXRoLAotICAgICAgICAgICAgd2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlUmVhZE9ubHkpCi0KLSAgICAjIFhYWCBPUkJFUiBCWQotICAgIHY9c2NoZW1hLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIF9Db2x1bW5zIikKLSAgICBjdXJ0YWJsZT1Ob25lCi0gICAgdGFibGVzID0gW10KLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICBmID0gb3BlbihkZXN0cGF0aCwgInd0IikKLSAgICBmLndyaXRlKCJmcm9tIG1zaWxpYiBpbXBvcnQgVGFibGVcbiIpCi0gICAgd2hpbGUgMToKLSAgICAgICAgcj12LkZldGNoKCkKLSAgICAgICAgaWYgbm90IHI6YnJlYWsKLSAgICAgICAgbmFtZT1yLlN0cmluZ0RhdGEoMSkKLSAgICAgICAgaWYgY3VydGFibGUgIT0gbmFtZToKLSAgICAgICAgICAgIGYud3JpdGUoIlxuJXMgPSBUYWJsZSgnJXMnKVxuIiAlIChuYW1lLG5hbWUpKQotICAgICAgICAgICAgY3VydGFibGUgPSBuYW1lCi0gICAgICAgICAgICB0YWJsZXMuYXBwZW5kKG5hbWUpCi0gICAgICAgIGYud3JpdGUoIiVzLmFkZF9maWVsZCglZCwnJXMnLCVkKVxuIiAlCi0gICAgICAgICAgICAgICAgKG5hbWUsIHIuSW50ZWdlckRhdGEoMiksIHIuU3RyaW5nRGF0YSgzKSwgci5JbnRlZ2VyRGF0YSg0KSkpCi0gICAgdi5DbG9zZSgpCi0KLSAgICBmLndyaXRlKCJcbnRhYmxlcz1bJXNdXG5cbiIgJSAoIiwgIi5qb2luKHRhYmxlcykpKQotCi0gICAgIyBGaWxsIHRoZSBfVmFsaWRhdGlvbiB0YWJsZQotICAgIGYud3JpdGUoIl9WYWxpZGF0aW9uX3JlY29yZHMgPSBbXG4iKQotICAgIHYgPSBzY2hlbWEuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gX1ZhbGlkYXRpb24iKQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHIgPSB2LkZldGNoKCkKLSAgICAgICAgaWYgbm90IHI6YnJlYWsKLSAgICAgICAgIyBUYWJsZSwgQ29sdW1uLCBOdWxsYWJsZQotICAgICAgICBmLndyaXRlKCIoJXMsJXMsJXMsIiAlCi0gICAgICAgICAgICAgICAgKGByLlN0cmluZ0RhdGEoMSlgLCBgci5TdHJpbmdEYXRhKDIpYCwgYHIuU3RyaW5nRGF0YSgzKWApKQotICAgICAgICBkZWYgcHV0X2ludChpKToKLSAgICAgICAgICAgIGlmIHIuSXNOdWxsKGkpOmYud3JpdGUoIk5vbmUsICIpCi0gICAgICAgICAgICBlbHNlOmYud3JpdGUoIiVkLCIgJSByLkludGVnZXJEYXRhKGkpKQotICAgICAgICBkZWYgcHV0X3N0cihpKToKLSAgICAgICAgICAgIGlmIHIuSXNOdWxsKGkpOmYud3JpdGUoIk5vbmUsICIpCi0gICAgICAgICAgICBlbHNlOmYud3JpdGUoIiVzLCIgJSBgci5TdHJpbmdEYXRhKGkpYCkKLSAgICAgICAgcHV0X2ludCg0KSAjIE1pblZhbHVlCi0gICAgICAgIHB1dF9pbnQoNSkgIyBNYXhWYWx1ZQotICAgICAgICBwdXRfc3RyKDYpICMgS2V5VGFibGUKLSAgICAgICAgcHV0X2ludCg3KSAjIEtleUNvbHVtbgotICAgICAgICBwdXRfc3RyKDgpICMgQ2F0ZWdvcnkKLSAgICAgICAgcHV0X3N0cig5KSAjIFNldAotICAgICAgICBwdXRfc3RyKDEwKSMgRGVzY3JpcHRpb24KLSAgICAgICAgZi53cml0ZSgiKSxcbiIpCi0gICAgZi53cml0ZSgiXVxuXG4iKQotCi0gICAgZi5jbG9zZSgpCi0KLWRlZiBnZW5fc2VxdWVuY2UoZGVzdHBhdGgsIG1zaXBhdGgpOgotICAgIGRpciA9IG9zLnBhdGguZGlybmFtZShkZXN0cGF0aCkKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgc2VxbXNpID0gZC5PcGVuRGF0YWJhc2UobXNpcGF0aCwKLSAgICAgICAgICAgIHdpbjMyY29tLmNsaWVudC5jb25zdGFudHMubXNpT3BlbkRhdGFiYXNlTW9kZVJlYWRPbmx5KQotCi0gICAgdiA9IHNlcW1zaS5PcGVuVmlldygiU0VMRUNUICogRlJPTSBfVGFibGVzIik7Ci0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgZiA9IG9wZW4oZGVzdHBhdGgsICJ3IikKLSAgICBwcmludCA+PmYsICJpbXBvcnQgbXNpbGliLG9zO2Rpcm5hbWU9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSIKLSAgICB0YWJsZXMgPSBbXQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHIgPSB2LkZldGNoKCkKLSAgICAgICAgaWYgbm90IHI6YnJlYWsKLSAgICAgICAgdGFibGUgPSByLlN0cmluZ0RhdGEoMSkKLSAgICAgICAgdGFibGVzLmFwcGVuZCh0YWJsZSkKLSAgICAgICAgZi53cml0ZSgiJXMgPSBbXG4iICUgdGFibGUpCi0gICAgICAgIHYxID0gc2VxbXNpLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIGAlc2AiICUgdGFibGUpCi0gICAgICAgIHYxLkV4ZWN1dGUoTm9uZSkKLSAgICAgICAgaW5mbyA9IHYxLkNvbHVtbkluZm8oY29uc3RhbnRzLm1zaUNvbHVtbkluZm9UeXBlcykKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHIgPSB2MS5GZXRjaCgpCi0gICAgICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICAgICAgcmVjID0gW10KLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsci5GaWVsZENvdW50KzEpOgotICAgICAgICAgICAgICAgIGlmIHIuSXNOdWxsKGkpOgotICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKE5vbmUpCi0gICAgICAgICAgICAgICAgZWxpZiBpbmZvLlN0cmluZ0RhdGEoaSlbMF0gaW4gImlJIjoKLSAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChyLkludGVnZXJEYXRhKGkpKQotICAgICAgICAgICAgICAgIGVsaWYgaW5mby5TdHJpbmdEYXRhKGkpWzBdIGluICJzbFNMIjoKLSAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChyLlN0cmluZ0RhdGEoaSkpCi0gICAgICAgICAgICAgICAgZWxpZiBpbmZvLlN0cmluZ0RhdGEoaSlbMF09PSJ2IjoKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHIuRGF0YVNpemUoaSkKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSByLlJlYWRTdHJlYW0oaSwgc2l6ZSwgY29uc3RhbnRzLm1zaVJlYWRTdHJlYW1CeXRlcykKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSBieXRlcy5lbmNvZGUoImxhdGluLTEiKSAjIGJpbmFyeSBkYXRhIHJlcHJlc2VudGVkICJhcy1pcyIKLSAgICAgICAgICAgICAgICAgICAgaWYgdGFibGUgPT0gIkJpbmFyeSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHJlY1swXSsiLmJpbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKGRpcixmbmFtZSksIndiIikud3JpdGUoYnl0ZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKEJpbmFyeShmbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKGJ5dGVzKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlICJVbnN1cHBvcnRlZCBjb2x1bW4gdHlwZSIsIGluZm8uU3RyaW5nRGF0YShpKQotICAgICAgICAgICAgZi53cml0ZShyZXByKHR1cGxlKHJlYykpKyIsXG4iKQotICAgICAgICB2MS5DbG9zZSgpCi0gICAgICAgIGYud3JpdGUoIl1cblxuIikKLSAgICB2LkNsb3NlKCkKLSAgICBmLndyaXRlKCJ0YWJsZXM9JXNcbiIgJSByZXByKG1hcChzdHIsdGFibGVzKSkpCi0gICAgZi5jbG9zZSgpCi0KLWNsYXNzIF9VbnNwZWNpZmllZDpwYXNzCi1kZWYgY2hhbmdlX3NlcXVlbmNlKHNlcSwgYWN0aW9uLCBzZXFubz1fVW5zcGVjaWZpZWQsIGNvbmQgPSBfVW5zcGVjaWZpZWQpOgotICAgICJDaGFuZ2UgdGhlIHNlcXVlbmNlIG51bWJlciBvZiBhbiBhY3Rpb24gaW4gYSBzZXF1ZW5jZSBsaXN0IgotICAgIGZvciBpIGluIHJhbmdlKGxlbihzZXEpKToKLSAgICAgICAgaWYgc2VxW2ldWzBdID09IGFjdGlvbjoKLSAgICAgICAgICAgIGlmIGNvbmQgaXMgX1Vuc3BlY2lmaWVkOgotICAgICAgICAgICAgICAgIGNvbmQgPSBzZXFbaV1bMV0KLSAgICAgICAgICAgIGlmIHNlcW5vIGlzIF9VbnNwZWNpZmllZDoKLSAgICAgICAgICAgICAgICBzZXFubyA9IHNlcVtpXVsyXQotICAgICAgICAgICAgc2VxW2ldID0gKGFjdGlvbiwgY29uZCwgc2Vxbm8pCi0gICAgICAgICAgICByZXR1cm4KLSAgICByYWlzZSBWYWx1ZUVycm9yLCAiQWN0aW9uIG5vdCBmb3VuZCBpbiBzZXF1ZW5jZSIKLQotZGVmIGFkZF9kYXRhKGRiLCB0YWJsZSwgdmFsdWVzKToKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgdiA9IGRiLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIGAlc2AiICUgdGFibGUpCi0gICAgY291bnQgPSB2LkNvbHVtbkluZm8oMCkuRmllbGRDb3VudAotICAgIHIgPSBkLkNyZWF0ZVJlY29yZChjb3VudCkKLSAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICBhc3NlcnQgbGVuKHZhbHVlKSA9PSBjb3VudCwgdmFsdWUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQpOgotICAgICAgICAgICAgZmllbGQgPSB2YWx1ZVtpXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWVsZCwgKGludCwgbG9uZykpOgotICAgICAgICAgICAgICAgIHIuU2V0SW50ZWdlckRhdGEoaSsxLGZpZWxkKQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpZWxkLCBiYXNlc3RyaW5nKToKLSAgICAgICAgICAgICAgICByLlNldFN0cmluZ0RhdGEoaSsxLGZpZWxkKQotICAgICAgICAgICAgZWxpZiBmaWVsZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWVsZCwgQmluYXJ5KToKLSAgICAgICAgICAgICAgICByLlNldFN0cmVhbShpKzEsIGZpZWxkLm5hbWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgIlVuc3VwcG9ydGVkIHR5cGUgJXMiICUgZmllbGQuX19jbGFzc19fLl9fbmFtZV9fCi0gICAgICAgIHYuTW9kaWZ5KHdpbjMyY29tLmNsaWVudC5jb25zdGFudHMubXNpVmlld01vZGlmeUluc2VydCwgcikKLSAgICAgICAgci5DbGVhckRhdGEoKQotICAgIHYuQ2xvc2UoKQotCi1kZWYgYWRkX3N0cmVhbShkYiwgbmFtZSwgcGF0aCk6Ci0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgIHYgPSBkYi5PcGVuVmlldygiSU5TRVJUIElOVE8gX1N0cmVhbXMgKE5hbWUsIERhdGEpIFZBTFVFUyAoJyVzJywgPykiICUgbmFtZSkKLSAgICByID0gZC5DcmVhdGVSZWNvcmQoMSkKLSAgICByLlNldFN0cmVhbSgxLCBwYXRoKQotICAgIHYuRXhlY3V0ZShyKQotICAgIHYuQ2xvc2UoKQotCi1kZWYgaW5pdF9kYXRhYmFzZShuYW1lLCBzY2hlbWEsCi0gICAgICAgICAgICAgICAgICBQcm9kdWN0TmFtZSwgUHJvZHVjdENvZGUsIFByb2R1Y3RWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgTWFudWZhY3R1cmVyLAotICAgICAgICAgICAgICAgICAgcmVxdWVzdF91YWMgPSBGYWxzZSk6Ci0gICAgdHJ5OgotICAgICAgICBvcy51bmxpbmsobmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIFByb2R1Y3RDb2RlID0gUHJvZHVjdENvZGUudXBwZXIoKQotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICAjIENyZWF0ZSB0aGUgZGF0YWJhc2UKLSAgICBkYiA9IGQuT3BlbkRhdGFiYXNlKG5hbWUsCi0gICAgICAgICB3aW4zMmNvbS5jbGllbnQuY29uc3RhbnRzLm1zaU9wZW5EYXRhYmFzZU1vZGVDcmVhdGUpCi0gICAgIyBDcmVhdGUgdGhlIHRhYmxlcwotICAgIGZvciB0IGluIHNjaGVtYS50YWJsZXM6Ci0gICAgICAgIHQuY3JlYXRlKGRiKQotICAgICMgRmlsbCB0aGUgdmFsaWRhdGlvbiB0YWJsZQotICAgIGFkZF9kYXRhKGRiLCAiX1ZhbGlkYXRpb24iLCBzY2hlbWEuX1ZhbGlkYXRpb25fcmVjb3JkcykKLSAgICAjIEluaXRpYWxpemUgdGhlIHN1bW1hcnkgaW5mb3JtYXRpb24sIGFsbG93aW5nIGF0IG1vc3QgMjAgcHJvcGVydGllcwotICAgIHNpID0gZGIuR2V0U3VtbWFyeUluZm9ybWF0aW9uKDIwKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9USVRMRSwgIkluc3RhbGxhdGlvbiBEYXRhYmFzZSIpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1NVQkpFQ1QsIFByb2R1Y3ROYW1lKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9BVVRIT1IsIE1hbnVmYWN0dXJlcikKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfVEVNUExBVEUsIG1zaV90eXBlKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9SRVZOVU1CRVIsIGdlbl91dWlkKCkpCi0gICAgaWYgcmVxdWVzdF91YWM6Ci0gICAgICAgIHdjID0gMiAjIGxvbmcgZmlsZSBuYW1lcywgY29tcHJlc3NlZCwgb3JpZ2luYWwgbWVkaWEKLSAgICBlbHNlOgotICAgICAgICB3YyA9IDIgfCA4ICMgK25ldmVyIGludm9rZSBVQUMKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfV09SRENPVU5ULCB3YykKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfUEFHRUNPVU5ULCAyMDApCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX0FQUE5BTUUsICJQeXRob24gTVNJIExpYnJhcnkiKQotICAgICMgWFhYIG1vcmUgcHJvcGVydGllcwotICAgIHNpLlBlcnNpc3QoKQotICAgIGFkZF9kYXRhKGRiLCAiUHJvcGVydHkiLCBbCi0gICAgICAgICgiUHJvZHVjdE5hbWUiLCBQcm9kdWN0TmFtZSksCi0gICAgICAgICgiUHJvZHVjdENvZGUiLCBQcm9kdWN0Q29kZSksCi0gICAgICAgICgiUHJvZHVjdFZlcnNpb24iLCBQcm9kdWN0VmVyc2lvbiksCi0gICAgICAgICgiTWFudWZhY3R1cmVyIiwgTWFudWZhY3R1cmVyKSwKLSAgICAgICAgKCJQcm9kdWN0TGFuZ3VhZ2UiLCAiMTAzMyIpXSkKLSAgICBkYi5Db21taXQoKQotICAgIHJldHVybiBkYgotCi1kZWYgYWRkX3RhYmxlcyhkYiwgbW9kdWxlKToKLSAgICBmb3IgdGFibGUgaW4gbW9kdWxlLnRhYmxlczoKLSAgICAgICAgYWRkX2RhdGEoZGIsIHRhYmxlLCBnZXRhdHRyKG1vZHVsZSwgdGFibGUpKQotCi1kZWYgbWFrZV9pZChzdHIpOgotICAgICNzdHIgPSBzdHIucmVwbGFjZSgiLiIsICJfIikgIyBjb2xvbnMgYXJlIGFsbG93ZWQKLSAgICBzdHIgPSBzdHIucmVwbGFjZSgiICIsICJfIikKLSAgICBzdHIgPSBzdHIucmVwbGFjZSgiLSIsICJfIikKLSAgICBzdHIgPSBzdHIucmVwbGFjZSgiKyIsICJfIikKLSAgICBpZiBzdHJbMF0gaW4gc3RyaW5nLmRpZ2l0czoKLSAgICAgICAgc3RyID0gIl8iK3N0cgotICAgIGFzc2VydCByZS5tYXRjaCgiXltBLVphLXpfXVtBLVphLXowLTlfLl0qJCIsIHN0ciksICJGSUxFIitzdHIKLSAgICByZXR1cm4gc3RyCi0KLWRlZiBnZW5fdXVpZCgpOgotICAgIHJldHVybiBzdHIocHl0aG9uY29tLkNyZWF0ZUd1aWQoKSkKLQotY2xhc3MgQ0FCOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLmZpbGVzID0gW10KLSAgICAgICAgc2VsZi5maWxlbmFtZXMgPSBzZXRzLlNldCgpCi0gICAgICAgIHNlbGYuaW5kZXggPSAwCi0KLSAgICBkZWYgZ2VuX2lkKHNlbGYsIGRpciwgZmlsZSk6Ci0gICAgICAgIGxvZ2ljYWwgPSBfbG9naWNhbCA9IG1ha2VfaWQoZmlsZSkKLSAgICAgICAgcG9zID0gMQotICAgICAgICB3aGlsZSBsb2dpY2FsIGluIHNlbGYuZmlsZW5hbWVzOgotICAgICAgICAgICAgbG9naWNhbCA9ICIlcy4lZCIgJSAoX2xvZ2ljYWwsIHBvcykKLSAgICAgICAgICAgIHBvcyArPSAxCi0gICAgICAgIHNlbGYuZmlsZW5hbWVzLmFkZChsb2dpY2FsKQotICAgICAgICByZXR1cm4gbG9naWNhbAotCi0gICAgZGVmIGFwcGVuZChzZWxmLCBmdWxsLCBmaWxlLCBsb2dpY2FsID0gTm9uZSk6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZnVsbCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IGxvZ2ljYWw6Ci0gICAgICAgICAgICBsb2dpY2FsID0gc2VsZi5nZW5faWQoZGlyLCBmaWxlKQotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLSAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKGZ1bGwsIGxvZ2ljYWwpKQotICAgICAgICByZXR1cm4gc2VsZi5pbmRleCwgbG9naWNhbAotCi0gICAgZGVmIGNvbW1pdChzZWxmLCBkYik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLm5hbWUrIi5jYWIiKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgX21zaS5GQ0lDcmVhdGUoc2VsZi5uYW1lKyIuY2FiIiwgc2VsZi5maWxlcykKLSAgICAgICAgYWRkX2RhdGEoZGIsICJNZWRpYSIsCi0gICAgICAgICAgICAgICAgWygxLCBzZWxmLmluZGV4LCBOb25lLCAiIyIrc2VsZi5uYW1lLCBOb25lLCBOb25lKV0pCi0gICAgICAgIGFkZF9zdHJlYW0oZGIsIHNlbGYubmFtZSwgc2VsZi5uYW1lKyIuY2FiIikKLSAgICAgICAgb3MudW5saW5rKHNlbGYubmFtZSsiLmNhYiIpCi0gICAgICAgIGRiLkNvbW1pdCgpCi0KLV9kaXJlY3RvcmllcyA9IHNldHMuU2V0KCkKLWNsYXNzIERpcmVjdG9yeToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGIsIGNhYiwgYmFzZWRpciwgcGh5c2ljYWwsIF9sb2dpY2FsLCBkZWZhdWx0LCBjb21wb25lbnRmbGFncz1Ob25lKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBpbiB0aGUgRGlyZWN0b3J5IHRhYmxlLiBUaGVyZSBpcyBhIGN1cnJlbnQgY29tcG9uZW50Ci0gICAgICAgIGF0IGVhY2ggcG9pbnQgaW4gdGltZSBmb3IgdGhlIGRpcmVjdG9yeSwgd2hpY2ggaXMgZWl0aGVyIGV4cGxpY2l0bHkgY3JlYXRlZAotICAgICAgICB0aHJvdWdoIHN0YXJ0X2NvbXBvbmVudCwgb3IgaW1wbGljaXRseSB3aGVuIGZpbGVzIGFyZSBhZGRlZCBmb3IgdGhlIGZpcnN0Ci0gICAgICAgIHRpbWUuIEZpbGVzIGFyZSBhZGRlZCBpbnRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCwgYW5kIGludG8gdGhlIGNhYiBmaWxlLgotICAgICAgICBUbyBjcmVhdGUgYSBkaXJlY3RvcnksIGEgYmFzZSBkaXJlY3Rvcnkgb2JqZWN0IG5lZWRzIHRvIGJlIHNwZWNpZmllZCAoY2FuIGJlCi0gICAgICAgIE5vbmUpLCB0aGUgcGF0aCB0byB0aGUgcGh5c2ljYWwgZGlyZWN0b3J5LCBhbmQgYSBsb2dpY2FsIGRpcmVjdG9yeSBuYW1lLgotICAgICAgICBEZWZhdWx0IHNwZWNpZmllcyB0aGUgRGVmYXVsdERpciBzbG90IGluIHRoZSBkaXJlY3RvcnkgdGFibGUuIGNvbXBvbmVudGZsYWdzCi0gICAgICAgIHNwZWNpZmllcyB0aGUgZGVmYXVsdCBmbGFncyB0aGF0IG5ldyBjb21wb25lbnRzIGdldC4iIiIKLSAgICAgICAgaW5kZXggPSAxCi0gICAgICAgIF9sb2dpY2FsID0gbWFrZV9pZChfbG9naWNhbCkKLSAgICAgICAgbG9naWNhbCA9IF9sb2dpY2FsCi0gICAgICAgIHdoaWxlIGxvZ2ljYWwgaW4gX2RpcmVjdG9yaWVzOgotICAgICAgICAgICAgbG9naWNhbCA9ICIlcyVkIiAlIChfbG9naWNhbCwgaW5kZXgpCi0gICAgICAgICAgICBpbmRleCArPSAxCi0gICAgICAgIF9kaXJlY3Rvcmllcy5hZGQobG9naWNhbCkKLSAgICAgICAgc2VsZi5kYiA9IGRiCi0gICAgICAgIHNlbGYuY2FiID0gY2FiCi0gICAgICAgIHNlbGYuYmFzZWRpciA9IGJhc2VkaXIKLSAgICAgICAgc2VsZi5waHlzaWNhbCA9IHBoeXNpY2FsCi0gICAgICAgIHNlbGYubG9naWNhbCA9IGxvZ2ljYWwKLSAgICAgICAgc2VsZi5jb21wb25lbnQgPSBOb25lCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZXMgPSB7fQotICAgICAgICBzZWxmLmlkcyA9IHNldHMuU2V0KCkKLSAgICAgICAgc2VsZi5rZXlmaWxlcyA9IHt9Ci0gICAgICAgIHNlbGYuY29tcG9uZW50ZmxhZ3MgPSBjb21wb25lbnRmbGFncwotICAgICAgICBpZiBiYXNlZGlyOgotICAgICAgICAgICAgc2VsZi5hYnNvbHV0ZSA9IG9zLnBhdGguam9pbihiYXNlZGlyLmFic29sdXRlLCBwaHlzaWNhbCkKLSAgICAgICAgICAgIGJsb2dpY2FsID0gYmFzZWRpci5sb2dpY2FsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFic29sdXRlID0gcGh5c2ljYWwKLSAgICAgICAgICAgIGJsb2dpY2FsID0gTm9uZQotICAgICAgICAjIGluaXRpYWxseSBhc3N1bWUgdGhhdCBhbGwgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIHVucGFja2FnZWQKLSAgICAgICAgIyBhcyBmaWxlcyBmcm9tIHNlbGYuYWJzb2x1dGUgZ2V0IGFkZGVkLCB0aGlzIHNldCBpcyByZWR1Y2VkCi0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcyA9IHNldCgpCi0gICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIoc2VsZi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5hZGQoZikKLSAgICAgICAgYWRkX2RhdGEoZGIsICJEaXJlY3RvcnkiLCBbKGxvZ2ljYWwsIGJsb2dpY2FsLCBkZWZhdWx0KV0pCi0KLSAgICBkZWYgc3RhcnRfY29tcG9uZW50KHNlbGYsIGNvbXBvbmVudCA9IE5vbmUsIGZlYXR1cmUgPSBOb25lLCBmbGFncyA9IE5vbmUsIGtleWZpbGUgPSBOb25lLCB1dWlkPU5vbmUpOgotICAgICAgICAiIiJBZGQgYW4gZW50cnkgdG8gdGhlIENvbXBvbmVudCB0YWJsZSwgYW5kIG1ha2UgdGhpcyBjb21wb25lbnQgdGhlIGN1cnJlbnQgZm9yIHRoaXMKLSAgICAgICAgZGlyZWN0b3J5LiBJZiBubyBjb21wb25lbnQgbmFtZSBpcyBnaXZlbiwgdGhlIGRpcmVjdG9yeSBuYW1lIGlzIHVzZWQuIElmIG5vIGZlYXR1cmUKLSAgICAgICAgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGZlYXR1cmUgaXMgdXNlZC4gSWYgbm8gZmxhZ3MgYXJlIGdpdmVuLCB0aGUgZGlyZWN0b3J5J3MgZGVmYXVsdAotICAgICAgICBmbGFncyBhcmUgdXNlZC4gSWYgbm8ga2V5ZmlsZSBpcyBnaXZlbiwgdGhlIEtleVBhdGggaXMgbGVmdCBudWxsIGluIHRoZSBDb21wb25lbnQKLSAgICAgICAgdGFibGUuIiIiCi0gICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBmbGFncyA9IHNlbGYuY29tcG9uZW50ZmxhZ3MKLSAgICAgICAgaWYgdXVpZCBpcyBOb25lOgotICAgICAgICAgICAgdXVpZCA9IGdlbl91dWlkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHV1aWQgPSB1dWlkLnVwcGVyKCkKLSAgICAgICAgaWYgY29tcG9uZW50IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb21wb25lbnQgPSBzZWxmLmxvZ2ljYWwKLSAgICAgICAgc2VsZi5jb21wb25lbnQgPSBjb21wb25lbnQKLSAgICAgICAgaWYgV2luNjQ6Ci0gICAgICAgICAgICBmbGFncyB8PSAyNTYKLSAgICAgICAgaWYga2V5ZmlsZToKLSAgICAgICAgICAgIGtleWlkID0gc2VsZi5jYWIuZ2VuX2lkKHNlbGYuYWJzb2x1dGUsIGtleWZpbGUpCi0gICAgICAgICAgICBzZWxmLmtleWZpbGVzW2tleWZpbGVdID0ga2V5aWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGtleWlkID0gTm9uZQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ29tcG9uZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsoY29tcG9uZW50LCB1dWlkLCBzZWxmLmxvZ2ljYWwsIGZsYWdzLCBOb25lLCBrZXlpZCldKQotICAgICAgICBpZiBmZWF0dXJlIGlzIE5vbmU6Ci0gICAgICAgICAgICBmZWF0dXJlID0gY3VycmVudF9mZWF0dXJlCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbKGZlYXR1cmUuaWQsIGNvbXBvbmVudCldKQotCi0gICAgZGVmIG1ha2Vfc2hvcnQoc2VsZiwgZmlsZSk6Ci0gICAgICAgIGxvbmcgPSBmaWxlCi0gICAgICAgIGZpbGUgPSByZS5zdWIocidbXD98Pjw6LyoiKyw7PVxbXF1dJywgJ18nLCBmaWxlKSAjIHJlc3RyaWN0aW9ucyBvbiBzaG9ydCBuYW1lcwotICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iLCAxKQotICAgICAgICBpZiBsZW4ocGFydHMpPjE6Ci0gICAgICAgICAgICBzdWZmaXggPSBwYXJ0c1sxXS51cHBlcigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdWZmaXggPSAnJwotICAgICAgICBwcmVmaXggPSBwYXJ0c1swXS51cHBlcigpCi0gICAgICAgIGlmIGxlbihwcmVmaXgpIDw9IDggYW5kICcuJyBub3QgaW4gc3VmZml4IGFuZCBsZW4oc3VmZml4KSA8PSAzOgotICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgrIi4iK3N1ZmZpeAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4Ci0gICAgICAgICAgICBhc3NlcnQgZmlsZSBub3QgaW4gc2VsZi5zaG9ydF9uYW1lcywgKGZpbGUsIHNlbGYuc2hvcnRfbmFtZXNbZmlsZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOjZdCi0gICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgIyBsYXN0IHRocmVlIGNoYXJhY3RlcnMgb2YgbGFzdCBzdWZmaXgKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXgucnNwbGl0KCcuJylbLTFdWzozXQotICAgICAgICAgICAgcG9zID0gMQotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgPSAiJXN+JWQuJXMiICUgKHByZWZpeCwgcG9zLCBzdWZmaXgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICIlc34lZCIgJSAocHJlZml4LCBwb3MpCi0gICAgICAgICAgICAgICAgaWYgZmlsZSBub3QgaW4gc2VsZi5zaG9ydF9uYW1lczogYnJlYWsKLSAgICAgICAgICAgICAgICBwb3MgKz0gMQotICAgICAgICAgICAgICAgIGFzc2VydCBwb3MgPCAxMDAwMAotICAgICAgICAgICAgICAgIGlmIHBvcyBpbiAoMTAsIDEwMCwgMTAwMCk6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6LTFdCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZXNbZmlsZV0gPSBsb25nCi0gICAgICAgIHJldHVybiBmaWxlCi0KLSAgICBkZWYgYWRkX2ZpbGUoc2VsZiwgZmlsZSwgc3JjPU5vbmUsIHZlcnNpb249Tm9uZSwgbGFuZ3VhZ2U9Tm9uZSk6Ci0gICAgICAgICIiIkFkZCBhIGZpbGUgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IG9mIHRoZSBkaXJlY3RvcnksIHN0YXJ0aW5nIGEgbmV3IG9uZQotICAgICAgICBpZiB0aGVyZSBpcyBubyBjdXJyZW50IGNvbXBvbmVudC4gQnkgZGVmYXVsdCwgdGhlIGZpbGUgbmFtZSBpbiB0aGUgc291cmNlCi0gICAgICAgIGFuZCB0aGUgZmlsZSB0YWJsZSB3aWxsIGJlIGlkZW50aWNhbC4gSWYgdGhlIHNyYyBmaWxlIGlzIHNwZWNpZmllZCwgaXQgaXMKLSAgICAgICAgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBPcHRpb25hbGx5LCBhIHZlcnNpb24gYW5kIGEKLSAgICAgICAgbGFuZ3VhZ2UgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIGVudHJ5IGluIHRoZSBGaWxlIHRhYmxlLiIiIgotICAgICAgICBpZiBub3Qgc2VsZi5jb21wb25lbnQ6Ci0gICAgICAgICAgICBzZWxmLnN0YXJ0X2NvbXBvbmVudChzZWxmLmxvZ2ljYWwsIGN1cnJlbnRfZmVhdHVyZSkKLSAgICAgICAgaWYgbm90IHNyYzoKLSAgICAgICAgICAgICMgQWxsb3cgcmVsYXRpdmUgcGF0aHMgZm9yIGZpbGUgaWYgc3JjIGlzIG5vdCBzcGVjaWZpZWQKLSAgICAgICAgICAgIHNyYyA9IGZpbGUKLSAgICAgICAgICAgIGZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCi0gICAgICAgIGFic29sdXRlID0gb3MucGF0aC5qb2luKHNlbGYuYWJzb2x1dGUsIHNyYykKLSAgICAgICAgaWYgYWJzb2x1dGUuc3RhcnRzd2l0aChzZWxmLmFic29sdXRlKToKLSAgICAgICAgICAgICMgbWFyayBmaWxlIGFzIHBhY2thZ2VkCi0gICAgICAgICAgICByZWxhdGl2ZSA9IGFic29sdXRlW2xlbihzZWxmLmFic29sdXRlKSsxOl0KLSAgICAgICAgICAgIGlmIHJlbGF0aXZlIGluIHNlbGYudW5wYWNrYWdlZF9maWxlczoKLSAgICAgICAgICAgICAgICBzZWxmLnVucGFja2FnZWRfZmlsZXMucmVtb3ZlKHJlbGF0aXZlKQotICAgICAgICBhc3NlcnQgbm90IHJlLnNlYXJjaChyJ1tcP3w+PDovKl0iJywgZmlsZSkgIyByZXN0cmljdGlvbnMgb24gbG9uZyBuYW1lcwotICAgICAgICBpZiBzZWxmLmtleWZpbGVzLmhhc19rZXkoZmlsZSk6Ci0gICAgICAgICAgICBsb2dpY2FsID0gc2VsZi5rZXlmaWxlc1tmaWxlXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9naWNhbCA9IE5vbmUKLSAgICAgICAgc2VxdWVuY2UsIGxvZ2ljYWwgPSBzZWxmLmNhYi5hcHBlbmQoYWJzb2x1dGUsIGZpbGUsIGxvZ2ljYWwpCi0gICAgICAgIGFzc2VydCBsb2dpY2FsIG5vdCBpbiBzZWxmLmlkcwotICAgICAgICBzZWxmLmlkcy5hZGQobG9naWNhbCkKLSAgICAgICAgc2hvcnQgPSBzZWxmLm1ha2Vfc2hvcnQoZmlsZSkKLSAgICAgICAgZnVsbCA9ICIlc3wlcyIgJSAoc2hvcnQsIGZpbGUpCi0gICAgICAgIGZpbGVzaXplID0gb3Muc3RhdChhYnNvbHV0ZSkuc3Rfc2l6ZQotICAgICAgICAjIGNvbnN0YW50cy5tc2lkYkZpbGVBdHRyaWJ1dGVzVml0YWwKLSAgICAgICAgIyBDb21wcmVzc2VkIG9taXR0ZWQsIHNpbmNlIGl0IGlzIHRoZSBkYXRhYmFzZSBkZWZhdWx0Ci0gICAgICAgICMgY291bGQgYWRkIHIvbywgc3lzdGVtLCBoaWRkZW4KLSAgICAgICAgYXR0cmlidXRlcyA9IDUxMgotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiRmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbKGxvZ2ljYWwsIHNlbGYuY29tcG9uZW50LCBmdWxsLCBmaWxlc2l6ZSwgdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSwgYXR0cmlidXRlcywgc2VxdWVuY2UpXSkKLSAgICAgICAgaWYgbm90IHZlcnNpb246Ci0gICAgICAgICAgICAjIEFkZCBoYXNoIGlmIHRoZSBmaWxlIGlzIG5vdCB2ZXJzaW9uZWQKLSAgICAgICAgICAgIGZpbGVoYXNoID0gTWFrZUluc3RhbGxlcigpLkZpbGVIYXNoKGFic29sdXRlLCAwKQotICAgICAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIk1zaUZpbGVIYXNoIiwKLSAgICAgICAgICAgICAgICAgICAgIFsobG9naWNhbCwgMCwgZmlsZWhhc2guSW50ZWdlckRhdGEoMSksCi0gICAgICAgICAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDIpLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoNCkpXSkKLSAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHJlbW92ZSAucHljLy5weW8gZmlsZXMgb24gdW5pbnN0YWxsICgyKQotICAgICAgICAjIFhYWDogYWRkaW5nIHNvIG1hbnkgUmVtb3ZlRmlsZSBlbnRyaWVzIG1ha2VzIGluc3RhbGxlciB1bmJlbGlldmFibHkKLSAgICAgICAgIyBzbG93LiBTbyBpbnN0ZWFkLCB3ZSBoYXZlIHRvIHVzZSB3aWxkY2FyZCByZW1vdmUgZW50cmllcwotICAgICAgICAjIGlmIGZpbGUuZW5kc3dpdGgoIi5weSIpOgotICAgICAgICAjICAgICBhZGRfZGF0YShzZWxmLmRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICMgICAgICAgICAgICAgIFsobG9naWNhbCsiYyIsIHNlbGYuY29tcG9uZW50LCAiJXNDfCVzYyIgJSAoc2hvcnQsIGZpbGUpLAotICAgICAgICAjICAgICAgICAgICAgICAgIHNlbGYubG9naWNhbCwgMiksCi0gICAgICAgICMgICAgICAgICAgICAgICAobG9naWNhbCsibyIsIHNlbGYuY29tcG9uZW50LCAiJXNPfCVzbyIgJSAoc2hvcnQsIGZpbGUpLAotICAgICAgICAjICAgICAgICAgICAgICAgIHNlbGYubG9naWNhbCwgMildKQotCi0gICAgZGVmIGdsb2Ioc2VsZiwgcGF0dGVybiwgZXhjbHVkZSA9IE5vbmUpOgotICAgICAgICAiIiJBZGQgYSBsaXN0IG9mIGZpbGVzIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBhcyBzcGVjaWZpZWQgaW4gdGhlCi0gICAgICAgIGdsb2IgcGF0dGVybi4gSW5kaXZpZHVhbCBmaWxlcyBjYW4gYmUgZXhjbHVkZWQgaW4gdGhlIGV4Y2x1ZGUgbGlzdC4iIiIKLSAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IxKHNlbGYuYWJzb2x1dGUsIHBhdHRlcm4pCi0gICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZXhjbHVkZSBhbmQgZiBpbiBleGNsdWRlOiBjb250aW51ZQotICAgICAgICAgICAgc2VsZi5hZGRfZmlsZShmKQotICAgICAgICByZXR1cm4gZmlsZXMKLQotICAgIGRlZiByZW1vdmVfcHljKHNlbGYpOgotICAgICAgICAiUmVtb3ZlIC5weWMvLnB5byBmaWxlcyBmcm9tIF9fcHljYWNoZV9fIG9uIHVuaW5zdGFsbCIKLSAgICAgICAgZGlyZWN0b3J5ID0gc2VsZi5sb2dpY2FsICsgIl9weWNhY2hlIgotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiRGlyZWN0b3J5IiwgWyhkaXJlY3RvcnksIHNlbGYubG9naWNhbCwgIl9fUFlDQX4xfF9fcHljYWNoZV9fIildKQotICAgICAgICBmbGFncyA9IDI1NiBpZiBXaW42NCBlbHNlIDAKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbXBvbmVudCIsCi0gICAgICAgICAgICAgICAgWyhkaXJlY3RvcnksIGdlbl91dWlkKCksIGRpcmVjdG9yeSwgZmxhZ3MsIE5vbmUsIE5vbmUpXSkKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkZlYXR1cmVDb21wb25lbnRzIiwgWyhjdXJyZW50X2ZlYXR1cmUuaWQsIGRpcmVjdG9yeSldKQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ3JlYXRlRm9sZGVyIiwgWyhkaXJlY3RvcnksIGRpcmVjdG9yeSldKQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5jb21wb25lbnQsIHNlbGYuY29tcG9uZW50LCAiKi4qIiwgZGlyZWN0b3J5LCAyKSwKLSAgICAgICAgICAgICAgICAgXSkKLQotICAgIGRlZiByZW1vdmVmaWxlKHNlbGYsIGtleSwgcGF0dGVybik6Ci0gICAgICAgICJBZGQgYSBSZW1vdmVGaWxlIGVudHJ5IgotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiUmVtb3ZlRmlsZSIsIFsoc2VsZi5jb21wb25lbnQra2V5LCBzZWxmLmNvbXBvbmVudCwgcGF0dGVybiwgc2VsZi5sb2dpY2FsLCAyKV0pCi0KLQotY2xhc3MgRmVhdHVyZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGIsIGlkLCB0aXRsZSwgZGVzYywgZGlzcGxheSwgbGV2ZWwgPSAxLAotICAgICAgICAgICAgICAgICBwYXJlbnQ9Tm9uZSwgZGlyZWN0b3J5ID0gTm9uZSwgYXR0cmlidXRlcz0wKToKLSAgICAgICAgc2VsZi5pZCA9IGlkCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5pZAotICAgICAgICBhZGRfZGF0YShkYiwgIkZlYXR1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyhpZCwgcGFyZW50LCB0aXRsZSwgZGVzYywgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwsIGRpcmVjdG9yeSwgYXR0cmlidXRlcyldKQotICAgIGRlZiBzZXRfY3VycmVudChzZWxmKToKLSAgICAgICAgZ2xvYmFsIGN1cnJlbnRfZmVhdHVyZQotICAgICAgICBjdXJyZW50X2ZlYXR1cmUgPSBzZWxmCi0KLWNsYXNzIENvbnRyb2w6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRsZywgbmFtZSk6Ci0gICAgICAgIHNlbGYuZGxnID0gZGxnCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLQotICAgIGRlZiBldmVudChzZWxmLCBldiwgYXJnLCBjb25kID0gIjEiLCBvcmRlciA9IE5vbmUpOgotICAgICAgICBhZGRfZGF0YShzZWxmLmRsZy5kYiwgIkNvbnRyb2xFdmVudCIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5kbGcubmFtZSwgc2VsZi5uYW1lLCBldiwgYXJnLCBjb25kLCBvcmRlcildKQotCi0gICAgZGVmIG1hcHBpbmcoc2VsZiwgZXYsIGF0dHIpOgotICAgICAgICBhZGRfZGF0YShzZWxmLmRsZy5kYiwgIkV2ZW50TWFwcGluZyIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5kbGcubmFtZSwgc2VsZi5uYW1lLCBldiwgYXR0cildKQotCi0gICAgZGVmIGNvbmRpdGlvbihzZWxmLCBhY3Rpb24sIGNvbmRpdGlvbik6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiQ29udHJvbENvbmRpdGlvbiIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5kbGcubmFtZSwgc2VsZi5uYW1lLCBhY3Rpb24sIGNvbmRpdGlvbildKQotCi1jbGFzcyBSYWRpb0J1dHRvbkdyb3VwKENvbnRyb2wpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkbGcsIG5hbWUsIHByb3BlcnR5KToKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnByb3BlcnR5ID0gcHJvcGVydHkKLSAgICAgICAgc2VsZi5pbmRleCA9IDEKLQotICAgIGRlZiBhZGQoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgdGV4dCwgdmFsdWUgPSBOb25lKToKLSAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gbmFtZQotICAgICAgICBhZGRfZGF0YShzZWxmLmRsZy5kYiwgIlJhZGlvQnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLnByb3BlcnR5LCBzZWxmLmluZGV4LCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICB4LCB5LCB3LCBoLCB0ZXh0LCBOb25lKV0pCi0gICAgICAgIHNlbGYuaW5kZXggKz0gMQotCi1jbGFzcyBEaWFsb2c6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRiLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCB0aXRsZSwgZmlyc3QsIGRlZmF1bHQsIGNhbmNlbCk6Ci0gICAgICAgIHNlbGYuZGIgPSBkYgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYueCwgc2VsZi55LCBzZWxmLncsIHNlbGYuaCA9IHgseSx3LGgKLSAgICAgICAgYWRkX2RhdGEoZGIsICJEaWFsb2ciLCBbKG5hbWUsIHgseSx3LGgsYXR0cix0aXRsZSxmaXJzdCxkZWZhdWx0LGNhbmNlbCldKQotCi0gICAgZGVmIGNvbnRyb2woc2VsZiwgbmFtZSwgdHlwZSwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCwgaGVscCk6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDb250cm9sIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLm5hbWUsIG5hbWUsIHR5cGUsIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQsIGhlbHApXSkKLSAgICAgICAgcmV0dXJuIENvbnRyb2woc2VsZiwgbmFtZSkKLQotICAgIGRlZiB0ZXh0KHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHRleHQpOgotICAgICAgICByZXR1cm4gc2VsZi5jb250cm9sKG5hbWUsICJUZXh0IiwgeCwgeSwgdywgaCwgYXR0ciwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHRleHQsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgYml0bWFwKHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIHRleHQpOgotICAgICAgICByZXR1cm4gc2VsZi5jb250cm9sKG5hbWUsICJCaXRtYXAiLCB4LCB5LCB3LCBoLCAxLCBOb25lLCB0ZXh0LCBOb25lLCBOb25lKQotCi0gICAgZGVmIGxpbmUoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIkxpbmUiLCB4LCB5LCB3LCBoLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKQotCi0gICAgZGVmIHB1c2hidXR0b24oc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgdGV4dCwgbmV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIlB1c2hCdXR0b24iLCB4LCB5LCB3LCBoLCBhdHRyLCBOb25lLCB0ZXh0LCBuZXh0LCBOb25lKQotCi0gICAgZGVmIHJhZGlvZ3JvdXAoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCk6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDb250cm9sIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLm5hbWUsIG5hbWUsICJSYWRpb0J1dHRvbkdyb3VwIiwKLSAgICAgICAgICAgICAgICAgICB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBOb25lKV0pCi0gICAgICAgIHJldHVybiBSYWRpb0J1dHRvbkdyb3VwKHNlbGYsIG5hbWUsIHByb3ApCi0KLSAgICBkZWYgY2hlY2tib3goc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIkNoZWNrQm94IiwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCwgTm9uZSkKLQotZGVmIHBlX3R5cGUocGF0aCk6Ci0gICAgaGVhZGVyID0gb3BlbihwYXRoLCAicmIiKS5yZWFkKDEwMDApCi0gICAgIyBvZmZzZXQgb2YgUEUgaGVhZGVyIGlzIGF0IG9mZnNldCAweDNjCi0gICAgcGVfb2Zmc2V0ID0gc3RydWN0LnVucGFjaygiPGkiLCBoZWFkZXJbMHgzYzoweDQwXSlbMF0KLSAgICBhc3NlcnQgaGVhZGVyW3BlX29mZnNldDpwZV9vZmZzZXQrNF0gPT0gIlBFXDBcMCIKLSAgICBtYWNoaW5lID0gc3RydWN0LnVucGFjaygiPEgiLCBoZWFkZXJbcGVfb2Zmc2V0KzQ6cGVfb2Zmc2V0KzZdKVswXQotICAgIHJldHVybiBtYWNoaW5lCi0KLWRlZiBzZXRfYXJjaF9mcm9tX2ZpbGUocGF0aCk6Ci0gICAgZ2xvYmFsIG1zaV90eXBlLCBXaW42NCwgYXJjaF9leHQKLSAgICBtYWNoaW5lID0gcGVfdHlwZShwYXRoKQotICAgIGlmIG1hY2hpbmUgPT0gMHgxNGM6Ci0gICAgICAgICMgaTM4NgotICAgICAgICBtc2lfdHlwZSA9ICJJbnRlbCIKLSAgICAgICAgV2luNjQgPSAwCi0gICAgICAgIGFyY2hfZXh0ID0gJycKLSAgICBlbGlmIG1hY2hpbmUgPT0gMHgyMDA6Ci0gICAgICAgICMgSXRhbml1bQotICAgICAgICBtc2lfdHlwZSA9ICJJbnRlbDY0IgotICAgICAgICBXaW42NCA9IDEKLSAgICAgICAgYXJjaF9leHQgPSAnLmlhNjQnCi0gICAgZWxpZiBtYWNoaW5lID09IDB4ODY2NDoKLSAgICAgICAgIyBBTUQ2NAotICAgICAgICBtc2lfdHlwZSA9ICJ4NjQiCi0gICAgICAgIFdpbjY0ID0gMQotICAgICAgICBhcmNoX2V4dCA9ICcuYW1kNjQnCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKLSAgICBtc2lfdHlwZSArPSAiOzEwMzMiCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpc3VwcG9ydC5jIGIvVG9vbHMvbXNpL21zaXN1cHBvcnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZkMmVlNC4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvbXNpc3VwcG9ydC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotI2luY2x1ZGUgIndpbmRvd3MuaCIKLSNpbmNsdWRlICJtc2lxdWVyeS5oIgotCi0vKiBQcmludCBhIGRlYnVnIG1lc3NhZ2UgdG8gdGhlIGluc3RhbGxlciBsb2cgZmlsZS4KLSAqIFRvIHNlZSB0aGUgZGVidWcgbWVzc2FnZXMsIGluc3RhbGwgd2l0aAotICogbXNpZXhlYyAvaSBweXRob254eS5tc2kgL2wqdiBweXRob24ubG9nCi0gKi8KLXN0YXRpYyBVSU5UIGRlYnVnKE1TSUhBTkRMRSBoSW5zdGFsbCwgTFBDU1RSIG1zZykKLXsKLSAgICBNU0lIQU5ETEUgaFJlYyA9IE1zaUNyZWF0ZVJlY29yZCgxKTsKLSAgICBpZiAoIWhSZWMgfHwgTXNpUmVjb3JkU2V0U3RyaW5nQShoUmVjLCAxLCBtc2cpICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgcmV0dXJuIEVSUk9SX0lOU1RBTExfRkFJTFVSRTsKLSAgICB9Ci0gICAgTXNpUHJvY2Vzc01lc3NhZ2UoaEluc3RhbGwsIElOU1RBTExNRVNTQUdFX0lORk8sIGhSZWMpOwotICAgIE1zaUNsb3NlSGFuZGxlKGhSZWMpOwotICAgIHJldHVybiBFUlJPUl9TVUNDRVNTOwotfQotCi0vKiBDaGVjayB3aGV0aGVyIHRoZSBUQVJHRVRESVIgZXhpc3RzIGFuZCBpcyBhIGRpcmVjdG9yeS4KLSAqIFNldCBUYXJnZXRFeGlzdHMgYXBwcm9wcmlhdGVseS4KLSAqLwotVUlOVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgX19zdGRjYWxsIENoZWNrRGlyKE1TSUhBTkRMRSBoSW5zdGFsbCkKLXsKLSNkZWZpbmUgUFNJWkUgMTAyNAotICAgIFdDSEFSIHdwYXRoW1BTSVpFXTsKLSAgICBjaGFyIHBhdGhbUFNJWkVdOwotICAgIFVJTlQgcmVzdWx0OwotICAgIERXT1JEIHNpemUgPSBQU0laRTsKLSAgICBEV09SRCBhdHRyaWJ1dGVzOwotCi0KLSAgICByZXN1bHQgPSBNc2lHZXRQcm9wZXJ0eVcoaEluc3RhbGwsIEwiVEFSR0VURElSIiwgd3BhdGgsICZzaXplKTsKLSAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgd3BhdGhbc2l6ZV0gPSBMJ1wwJzsKLSAgICBwYXRoW3NpemVdID0gTCdcMCc7Ci0KLSAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdwYXRoKTsKLSAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUyB8fAotICAgICAgICAhKGF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE1zaVNldFByb3BlcnR5QShoSW5zdGFsbCwgIlRhcmdldEV4aXN0cyIsICIwIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIE1zaVNldFByb3BlcnR5QShoSW5zdGFsbCwgIlRhcmdldEV4aXN0cyIsICIxIik7Ci0gICAgfQotfQotCi0vKiBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBSRUdJU1RSWS50Y2wgY29tcG9uZW50IGFjY29yZGluZyB0byB0aGUKLSAqIEV4dGVuc2lvbiBhbmQgVGNsVGsgZmVhdHVyZXMuIFJFR0lTVFJZLnRjbCBtdXN0IGJlIGluc3RhbGxlZAotICogaWYgYm90aCBmZWF0dXJlcyBhcmUgaW5zdGFsbGVkLCBhbmQgbXVzdCBiZSBhYnNlbnQgb3RoZXJ3aXNlLgotICovCi1VSU5UIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBfX3N0ZGNhbGwgVXBkYXRlRWRpdElETEUoTVNJSEFORExFIGhJbnN0YWxsKQotewotICAgIElOU1RBTExTVEFURSBleHRfb2xkLCBleHRfbmV3LCB0Y2xfb2xkLCB0Y2xfbmV3LCByZWdfbmV3OwotICAgIFVJTlQgcmVzdWx0OwotCi0gICAgcmVzdWx0ID0gTXNpR2V0RmVhdHVyZVN0YXRlQShoSW5zdGFsbCwgIkV4dGVuc2lvbnMiLCAmZXh0X29sZCwgJmV4dF9uZXcpOwotICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXN1bHQgPSBNc2lHZXRGZWF0dXJlU3RhdGVBKGhJbnN0YWxsLCAiVGNsVGsiLCAmdGNsX29sZCwgJnRjbF9uZXcpOwotICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIC8qIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIEFic2VudCwgYW5kIHRoZSB1c2VyIGRpZCBub3Qgc2VsZWN0Ci0gICAgICAgdGhlIGZlYXR1cmUgaW4gdGhlIFVJLCBJbnN0YWxsZXIgYXBwYXJlbnRseSBzZXRzIHRoZSAic2VsZWN0ZWQiCi0gICAgICAgc3RhdGUgdG8gdW5rbm93bi4gVXBkYXRlIGl0IHRvIHRoZSBjdXJyZW50IHZhbHVlLCB0aGVuLiAqLwotICAgIGlmIChleHRfbmV3ID09IElOU1RBTExTVEFURV9VTktOT1dOKQotICAgICAgICBleHRfbmV3ID0gZXh0X29sZDsKLSAgICBpZiAodGNsX25ldyA9PSBJTlNUQUxMU1RBVEVfVU5LTk9XTikKLSAgICAgICAgdGNsX25ldyA9IHRjbF9vbGQ7Ci0KLSAgICAvLyBYWFggY29uc2lkZXIgY3VycmVudCBzdGF0ZSBvZiBSRUdJU1RSWS50Y2w/Ci0gICAgaWYgKCgodGNsX25ldyA9PSBJTlNUQUxMU1RBVEVfTE9DQUwpIHx8Ci0gICAgICAgICAgICAgKHRjbF9uZXcgPT0gSU5TVEFMTFNUQVRFX1NPVVJDRSkgfHwKLSAgICAgICAgICAgICAodGNsX25ldyA9PSBJTlNUQUxMU1RBVEVfREVGQVVMVCkpICYmCi0gICAgICAgICgoZXh0X25ldyA9PSBJTlNUQUxMU1RBVEVfTE9DQUwpIHx8Ci0gICAgICAgICAoZXh0X25ldyA9PSBJTlNUQUxMU1RBVEVfU09VUkNFKSB8fAotICAgICAgICAgKGV4dF9uZXcgPT0gSU5TVEFMTFNUQVRFX0RFRkFVTFQpKSkgewotICAgICAgICByZWdfbmV3ID0gSU5TVEFMTFNUQVRFX1NPVVJDRTsKLSAgICB9IGVsc2UgewotICAgICAgICByZWdfbmV3ID0gSU5TVEFMTFNUQVRFX0FCU0VOVDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gTXNpU2V0Q29tcG9uZW50U3RhdGVBKGhJbnN0YWxsLCAiUkVHSVNUUlkudGNsIiwgcmVnX25ldyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQk9PTCBBUElFTlRSWSBEbGxNYWluKEhBTkRMRSBoTW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgIERXT1JEICB1bF9yZWFzb25fZm9yX2NhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgTFBWT0lEIGxwUmVzZXJ2ZWQpCi17Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0Lm1hayBiL1Rvb2xzL21zaS9tc2lzdXBwb3J0Lm1hawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkwNWRiZS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvbXNpc3VwcG9ydC5tYWsKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMgL09QVDogUkVGIGFuZCBJQ0YgYXJlIGFkZGVkIGJ5IFZTLk5FVCBieSBkZWZhdWx0Ci1tc2lzdXBwb3J0LmRsbDoJbXNpc3VwcG9ydC5vYmoKLQlsaW5rLmV4ZSAvT1VUOm1zaXN1cHBvcnQuZGxsIC9JTkNSRU1FTlRBTDpOTyAvTk9MT0dPIC9ETEwgL1NVQlNZU1RFTTpXSU5ET1dTIC9PUFQ6UkVGIC9PUFQ6SUNGIG1zaXN1cHBvcnQub2JqIG1zaS5saWIga2VybmVsMzIubGliCi0KLSMgV2UgcmVxdWVzdCBhIHN0YXRpYyBDUlQsIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBubyBDUlQgZGVwZW5kZW5jaWVzCi0jIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4gV2UgY2Fubm90IGRvIHdpdGhvdXQgYSBDUlQsIHNpbmNlIGl0IHByb3ZpZGVzCi0jIHRoZSBETEwgZW50cnkgcG9pbnQuCi1tc2lzdXBwb3J0Lm9iajoJbXNpc3VwcG9ydC5jCi0JY2wgL08yIC9EIFdJTjMyIC9EIE5ERUJVRyAvRCBfV0lORE9XUyAvTVQgL1czIC9jIG1zaXN1cHBvcnQuYwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BhdGgvcGF0aC53aXhwcm9qIGIvVG9vbHMvbXNpL3BhdGgvcGF0aC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OTJlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGF0aC9wYXRoLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkxQzk5Mjk4LThFMkUtNDQyMi1BNUFGLUNDNEZGRjlBNThEM308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnBhdGg8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgICAgIDxTdXBwcmVzc0ljZXM+SUNFNzE8L1N1cHByZXNzSWNlcz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iKi53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGF0aC9wYXRoLnd4cyBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNDYyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGF0aC9wYXRoLnd4cwpAQCAtMCwwICsxLDM1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iUHJlcGVuZFBhdGhfQ1UiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5OT1QgQUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtDVSIgS2V5PSJbUkVHSVNUUllLRVldXFByZXBlbmRQYXRoIiBWYWx1ZT0iMSIgVHlwZT0iaW50ZWdlciIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0iU2NyaXB0cyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfU2NyaXB0c19DVSIgRGlyZWN0b3J5PSJTY3JpcHRzIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iU0NSSVBUU19QQVRIX0NVIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSCIgUGFydD0iZmlyc3QiIFZhbHVlPSJbU2NyaXB0c10iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlByZXBlbmRQYXRoX0xNIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+QUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtMTSIgS2V5PSJbUkVHSVNUUllLRVldXFByZXBlbmRQYXRoIiBWYWx1ZT0iMSIgVHlwZT0iaW50ZWdlciIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0iU2NyaXB0cyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfU2NyaXB0c19MTSIgRGlyZWN0b3J5PSJTY3JpcHRzIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlNDUklQVFNfUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW1NjcmlwdHNdIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZX1BBVEhFWFRfTE0iIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIRVhUIiBQYXJ0PSJsYXN0IiBWYWx1ZT0iLlBZIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZV19QQVRIRVhUX0xNIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSEVYVCIgUGFydD0ibGFzdCIgVmFsdWU9Ii5QWVciIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwgYi9Ub29scy9tc2kvcGF0aC9wYXRoX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2E3ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwKQEAgLTAsMCArMSw2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5BZGQgdG8gUGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+UGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXAud2l4cHJvaiBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4YzAyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkxQzk5Mjk4LThFMkUtNDQyMi1BNUFGLUNDNEZGRjlBNThEM308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnBpcDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICAgICAgPFN1cHByZXNzSWNlcz5JQ0U3MTwvU3VwcHJlc3NJY2VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIqLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9waXAvcGlwLnd4cyBiL1Rvb2xzL21zaS9waXAvcGlwLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzNkYzU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BpcC9waXAud3hzCkBAIC0wLDAgKzEsNDEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlBZVEhPTl9FWEUiIFNlY3VyZT0ieWVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRTZWFyY2ggSWQ9IlB5dGhvbkV4ZSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlU2VhcmNoIE5hbWU9InB5dGhvbi5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudFNlYXJjaD4KKyAgICAgICAgPC9Qcm9wZXJ0eT4KKworICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vUHl0aG9uKSI+UFlUSE9OX0VYRTwvQ29uZGl0aW9uPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icGlwIiBHdWlkPSIqIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldXEVuc3VyZVBpcFJ1biIgVmFsdWU9IjEiIFR5cGU9ImludGVnZXIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICAKKyAgICAgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PSJ4NjQiID8+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlVwZGF0ZVBpcCIgQmluYXJ5S2V5PSJXaXhDQSIgRGxsRW50cnk9IkNBUXVpZXRFeGVjNjQiIEV4ZWN1dGU9ImRlZmVycmVkIiBSZXR1cm49Imlnbm9yZSIvPgorICAgICAgICA8P2Vsc2UgPz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iVXBkYXRlUGlwIiBCaW5hcnlLZXk9IldpeENBIiBEbGxFbnRyeT0iQ0FRdWlldEV4ZWMiIEV4ZWN1dGU9ImRlZmVycmVkIiBSZXR1cm49Imlnbm9yZSIvPgorICAgICAgICA8P2VuZGlmID8+CisgICAgICAgIAorICAgICAgICA8IS0tIEluc3RhbGwvdW5pbnN0YWxsIHBpcCAtLT4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iU2V0VXBkYXRlUGlwQ29tbWFuZExpbmUiIFByb3BlcnR5PSJVcGRhdGVQaXAiIFZhbHVlPSciW1BZVEhPTl9FWEVdIiAtbSBlbnN1cmVwaXAgLVUgLS1kZWZhdWx0LXBpcCcgRXhlY3V0ZT0iaW1tZWRpYXRlIiAvPgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRSZW1vdmVQaXBDb21tYW5kTGluZSIgUHJvcGVydHk9IlVwZGF0ZVBpcCIgVmFsdWU9JyJbUFlUSE9OX0VYRV0iIC1CIC1tIGVuc3VyZXBpcC5fdW5pbnN0YWxsJyBFeGVjdXRlPSJpbW1lZGlhdGUiIC8+CisgICAgICAgIAorICAgICAgICA8SW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICAgICAgICAgIDxDdXN0b20gQWN0aW9uPSJTZXRVcGRhdGVQaXBDb21tYW5kTGluZSIgQmVmb3JlPSJVcGRhdGVQaXAiPigmYW1wO0RlZmF1bHRGZWF0dXJlPTMpIEFORCBOT1QgKCFEZWZhdWx0RmVhdHVyZT0zKTwvQ3VzdG9tPgorICAgICAgICAgICAgPEN1c3RvbSBBY3Rpb249IlNldFJlbW92ZVBpcENvbW1hbmRMaW5lIiBCZWZvcmU9IlVwZGF0ZVBpcCI+KCZhbXA7RGVmYXVsdEZlYXR1cmU9MikgQU5EICghRGVmYXVsdEZlYXR1cmU9Myk8L0N1c3RvbT4KKworICAgICAgICAgICAgPEN1c3RvbSBBY3Rpb249IlVwZGF0ZVBpcCIgQmVmb3JlPSJJbnN0YWxsRmluYWxpemUiPlVwZGF0ZVBpcDwvQ3VzdG9tPgorICAgICAgICA8L0luc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CisKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9waXAvcGlwX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9waXAvcGlwX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBkOWVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BpcC9waXBfZW4tVVMud3hsCkBAIC0wLDAgKzEsNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+cGlwIEJvb3RzdHJhcDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+cGlwPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9QeXRob24iPk5vICEobG9jLlByb2R1Y3ROYW1lKSBpbnN0YWxsYXRpb24gd2FzIGRldGVjdGVkLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvc2NoZW1hLnB5IGIvVG9vbHMvbXNpL3NjaGVtYS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY3MmU1YS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvc2NoZW1hLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAwNyArMCwwIEBACi1mcm9tIG1zaWxpYiBpbXBvcnQgVGFibGUKLQotX1ZhbGlkYXRpb24gPSBUYWJsZSgnX1ZhbGlkYXRpb24nKQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDEsJ1RhYmxlJywxMTU1MikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCgyLCdDb2x1bW4nLDExNTUyKQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDMsJ051bGxhYmxlJywzMzMyKQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDQsJ01pblZhbHVlJyw0MzU2KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDUsJ01heFZhbHVlJyw0MzU2KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDYsJ0tleVRhYmxlJyw3Njc5KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDcsJ0tleUNvbHVtbicsNTM3OCkKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg4LCdDYXRlZ29yeScsNzQ1NikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg5LCdTZXQnLDc2NzkpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMTAsJ0Rlc2NyaXB0aW9uJyw3Njc5KQotCi1BY3Rpb25UZXh0ID0gVGFibGUoJ0FjdGlvblRleHQnKQotQWN0aW9uVGV4dC5hZGRfZmllbGQoMSwnQWN0aW9uJywxMTU5MikKLUFjdGlvblRleHQuYWRkX2ZpZWxkKDIsJ0Rlc2NyaXB0aW9uJyw3OTM2KQotQWN0aW9uVGV4dC5hZGRfZmllbGQoMywnVGVtcGxhdGUnLDc5MzYpCi0KLUFkbWluRXhlY3V0ZVNlcXVlbmNlID0gVGFibGUoJ0FkbWluRXhlY3V0ZVNlcXVlbmNlJykKLUFkbWluRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUFkbWluRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUNvbmRpdGlvbiA9IFRhYmxlKCdDb25kaXRpb24nKQotQ29uZGl0aW9uLmFkZF9maWVsZCgxLCdGZWF0dXJlXycsMTE1NTgpCi1Db25kaXRpb24uYWRkX2ZpZWxkKDIsJ0xldmVsJyw5NDc0KQotQ29uZGl0aW9uLmFkZF9maWVsZCgzLCdDb25kaXRpb24nLDc2NzkpCi0KLUFkbWluVUlTZXF1ZW5jZSA9IFRhYmxlKCdBZG1pblVJU2VxdWVuY2UnKQotQWRtaW5VSVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUFkbWluVUlTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotQWRtaW5VSVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQWR2dEV4ZWN1dGVTZXF1ZW5jZSA9IFRhYmxlKCdBZHZ0RXhlY3V0ZVNlcXVlbmNlJykKLUFkdnRFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQWR2dEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotQWR2dEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUFkdnRVSVNlcXVlbmNlID0gVGFibGUoJ0FkdnRVSVNlcXVlbmNlJykKLUFkdnRVSVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDExNTkyKQotQWR2dFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUFkdnRVSVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQXBwSWQgPSBUYWJsZSgnQXBwSWQnKQotQXBwSWQuYWRkX2ZpZWxkKDEsJ0FwcElkJywxMTU1OCkKLUFwcElkLmFkZF9maWVsZCgyLCdSZW1vdGVTZXJ2ZXJOYW1lJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDMsJ0xvY2FsU2VydmljZScsNzY3OSkKLUFwcElkLmFkZF9maWVsZCg0LCdTZXJ2aWNlUGFyYW1ldGVycycsNzY3OSkKLUFwcElkLmFkZF9maWVsZCg1LCdEbGxTdXJyb2dhdGUnLDc2NzkpCi1BcHBJZC5hZGRfZmllbGQoNiwnQWN0aXZhdGVBdFN0b3JhZ2UnLDUzNzgpCi1BcHBJZC5hZGRfZmllbGQoNywnUnVuQXNJbnRlcmFjdGl2ZVVzZXInLDUzNzgpCi0KLUFwcFNlYXJjaCA9IFRhYmxlKCdBcHBTZWFyY2gnKQotQXBwU2VhcmNoLmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1BcHBTZWFyY2guYWRkX2ZpZWxkKDIsJ1NpZ25hdHVyZV8nLDExNTkyKQotCi1Qcm9wZXJ0eSA9IFRhYmxlKCdQcm9wZXJ0eScpCi1Qcm9wZXJ0eS5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotUHJvcGVydHkuYWRkX2ZpZWxkKDIsJ1ZhbHVlJywzODQwKQotCi1CQkNvbnRyb2wgPSBUYWJsZSgnQkJDb250cm9sJykKLUJCQ29udHJvbC5hZGRfZmllbGQoMSwnQmlsbGJvYXJkXycsMTE1NzApCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDIsJ0JCQ29udHJvbCcsMTE1NzApCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDMsJ1R5cGUnLDMzNzgpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDQsJ1gnLDEyODIpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDUsJ1knLDEyODIpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDYsJ1dpZHRoJywxMjgyKQotQkJDb250cm9sLmFkZF9maWVsZCg3LCdIZWlnaHQnLDEyODIpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDgsJ0F0dHJpYnV0ZXMnLDQzNTYpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDksJ1RleHQnLDc5ODYpCi0KLUJpbGxib2FyZCA9IFRhYmxlKCdCaWxsYm9hcmQnKQotQmlsbGJvYXJkLmFkZF9maWVsZCgxLCdCaWxsYm9hcmQnLDExNTcwKQotQmlsbGJvYXJkLmFkZF9maWVsZCgyLCdGZWF0dXJlXycsMzM2NikKLUJpbGxib2FyZC5hZGRfZmllbGQoMywnQWN0aW9uJyw3NDc0KQotQmlsbGJvYXJkLmFkZF9maWVsZCg0LCdPcmRlcmluZycsNTM3OCkKLQotRmVhdHVyZSA9IFRhYmxlKCdGZWF0dXJlJykKLUZlYXR1cmUuYWRkX2ZpZWxkKDEsJ0ZlYXR1cmUnLDExNTU4KQotRmVhdHVyZS5hZGRfZmllbGQoMiwnRmVhdHVyZV9QYXJlbnQnLDc0NjIpCi1GZWF0dXJlLmFkZF9maWVsZCgzLCdUaXRsZScsODAwMCkKLUZlYXR1cmUuYWRkX2ZpZWxkKDQsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotRmVhdHVyZS5hZGRfZmllbGQoNSwnRGlzcGxheScsNTM3OCkKLUZlYXR1cmUuYWRkX2ZpZWxkKDYsJ0xldmVsJywxMjgyKQotRmVhdHVyZS5hZGRfZmllbGQoNywnRGlyZWN0b3J5XycsMHgxREZGKQotRmVhdHVyZS5hZGRfZmllbGQoOCwnQXR0cmlidXRlcycsMTI4MikKLQotQmluYXJ5ID0gVGFibGUoJ0JpbmFyeScpCi1CaW5hcnkuYWRkX2ZpZWxkKDEsJ05hbWUnLDExNTkyKQotQmluYXJ5LmFkZF9maWVsZCgyLCdEYXRhJywyMzA0KQotCi1CaW5kSW1hZ2UgPSBUYWJsZSgnQmluZEltYWdlJykKLUJpbmRJbWFnZS5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLUJpbmRJbWFnZS5hZGRfZmllbGQoMiwnUGF0aCcsNzY3OSkKLQotRmlsZSA9IFRhYmxlKCdGaWxlJykKLUZpbGUuYWRkX2ZpZWxkKDEsJ0ZpbGUnLDB4MkRGRikKLUZpbGUuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotRmlsZS5hZGRfZmllbGQoMywnRmlsZU5hbWUnLDQwOTUpCi1GaWxlLmFkZF9maWVsZCg0LCdGaWxlU2l6ZScsMjYwKQotRmlsZS5hZGRfZmllbGQoNSwnVmVyc2lvbicsMHgxREZGKQotRmlsZS5hZGRfZmllbGQoNiwnTGFuZ3VhZ2UnLDc0NDQpCi1GaWxlLmFkZF9maWVsZCg3LCdBdHRyaWJ1dGVzJyw1Mzc4KQotRmlsZS5hZGRfZmllbGQoOCwnU2VxdWVuY2UnLDEyODIpCi0KLUNDUFNlYXJjaCA9IFRhYmxlKCdDQ1BTZWFyY2gnKQotQ0NQU2VhcmNoLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLQotQ2hlY2tCb3ggPSBUYWJsZSgnQ2hlY2tCb3gnKQotQ2hlY2tCb3guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUNoZWNrQm94LmFkZF9maWVsZCgyLCdWYWx1ZScsNzQ4OCkKLQotQ2xhc3MgPSBUYWJsZSgnQ2xhc3MnKQotQ2xhc3MuYWRkX2ZpZWxkKDEsJ0NMU0lEJywxMTU1OCkKLUNsYXNzLmFkZF9maWVsZCgyLCdDb250ZXh0JywxMTU1MikKLUNsYXNzLmFkZF9maWVsZCgzLCdDb21wb25lbnRfJywweDJERkYpCi1DbGFzcy5hZGRfZmllbGQoNCwnUHJvZ0lkX0RlZmF1bHQnLDc2NzkpCi1DbGFzcy5hZGRfZmllbGQoNSwnRGVzY3JpcHRpb24nLDgxOTEpCi1DbGFzcy5hZGRfZmllbGQoNiwnQXBwSWRfJyw3NDYyKQotQ2xhc3MuYWRkX2ZpZWxkKDcsJ0ZpbGVUeXBlTWFzaycsNzY3OSkKLUNsYXNzLmFkZF9maWVsZCg4LCdJY29uXycsNzQ5NikKLUNsYXNzLmFkZF9maWVsZCg5LCdJY29uSW5kZXgnLDUzNzgpCi1DbGFzcy5hZGRfZmllbGQoMTAsJ0RlZklucHJvY0hhbmRsZXInLDc0NTYpCi1DbGFzcy5hZGRfZmllbGQoMTEsJ0FyZ3VtZW50Jyw3Njc5KQotQ2xhc3MuYWRkX2ZpZWxkKDEyLCdGZWF0dXJlXycsMzM2NikKLUNsYXNzLmFkZF9maWVsZCgxMywnQXR0cmlidXRlcycsNTM3OCkKLQotQ29tcG9uZW50ID0gVGFibGUoJ0NvbXBvbmVudCcpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudCcsMHgyREZGKQotQ29tcG9uZW50LmFkZF9maWVsZCgyLCdDb21wb25lbnRJZCcsNzQ2MikKLUNvbXBvbmVudC5hZGRfZmllbGQoMywnRGlyZWN0b3J5XycsMHhERkYpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDQsJ0F0dHJpYnV0ZXMnLDEyODIpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDUsJ0NvbmRpdGlvbicsNzY3OSkKLUNvbXBvbmVudC5hZGRfZmllbGQoNiwnS2V5UGF0aCcsMHgxREZGKQotCi1JY29uID0gVGFibGUoJ0ljb24nKQotSWNvbi5hZGRfZmllbGQoMSwnTmFtZScsMTE1OTIpCi1JY29uLmFkZF9maWVsZCgyLCdEYXRhJywyMzA0KQotCi1Qcm9nSWQgPSBUYWJsZSgnUHJvZ0lkJykKLVByb2dJZC5hZGRfZmllbGQoMSwnUHJvZ0lkJywxMTc3NSkKLVByb2dJZC5hZGRfZmllbGQoMiwnUHJvZ0lkX1BhcmVudCcsNzY3OSkKLVByb2dJZC5hZGRfZmllbGQoMywnQ2xhc3NfJyw3NDYyKQotUHJvZ0lkLmFkZF9maWVsZCg0LCdEZXNjcmlwdGlvbicsODE5MSkKLVByb2dJZC5hZGRfZmllbGQoNSwnSWNvbl8nLDc0OTYpCi1Qcm9nSWQuYWRkX2ZpZWxkKDYsJ0ljb25JbmRleCcsNTM3OCkKLQotQ29tYm9Cb3ggPSBUYWJsZSgnQ29tYm9Cb3gnKQotQ29tYm9Cb3guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUNvbWJvQm94LmFkZF9maWVsZCgyLCdPcmRlcicsOTQ3NCkKLUNvbWJvQm94LmFkZF9maWVsZCgzLCdWYWx1ZScsMzM5MikKLUNvbWJvQm94LmFkZF9maWVsZCg0LCdUZXh0Jyw4MDAwKQotCi1Db21wTG9jYXRvciA9IFRhYmxlKCdDb21wTG9jYXRvcicpCi1Db21wTG9jYXRvci5hZGRfZmllbGQoMSwnU2lnbmF0dXJlXycsMTE1OTIpCi1Db21wTG9jYXRvci5hZGRfZmllbGQoMiwnQ29tcG9uZW50SWQnLDMzNjYpCi1Db21wTG9jYXRvci5hZGRfZmllbGQoMywnVHlwZScsNTM3OCkKLQotQ29tcGx1cyA9IFRhYmxlKCdDb21wbHVzJykKLUNvbXBsdXMuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudF8nLDB4MkRGRikKLUNvbXBsdXMuYWRkX2ZpZWxkKDIsJ0V4cFR5cGUnLDEzNTcwKQotCi1EaXJlY3RvcnkgPSBUYWJsZSgnRGlyZWN0b3J5JykKLURpcmVjdG9yeS5hZGRfZmllbGQoMSwnRGlyZWN0b3J5JywweDJERkYpCi1EaXJlY3RvcnkuYWRkX2ZpZWxkKDIsJ0RpcmVjdG9yeV9QYXJlbnQnLDB4MURGRikKLURpcmVjdG9yeS5hZGRfZmllbGQoMywnRGVmYXVsdERpcicsNDA5NSkKLQotQ29udHJvbCA9IFRhYmxlKCdDb250cm9sJykKLUNvbnRyb2wuYWRkX2ZpZWxkKDEsJ0RpYWxvZ18nLDExNTkyKQotQ29udHJvbC5hZGRfZmllbGQoMiwnQ29udHJvbCcsMTE1NzApCi1Db250cm9sLmFkZF9maWVsZCgzLCdUeXBlJywzMzQ4KQotQ29udHJvbC5hZGRfZmllbGQoNCwnWCcsMTI4MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDUsJ1knLDEyODIpCi1Db250cm9sLmFkZF9maWVsZCg2LCdXaWR0aCcsMTI4MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDcsJ0hlaWdodCcsMTI4MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDgsJ0F0dHJpYnV0ZXMnLDQzNTYpCi1Db250cm9sLmFkZF9maWVsZCg5LCdQcm9wZXJ0eScsNzQ3NCkKLUNvbnRyb2wuYWRkX2ZpZWxkKDEwLCdUZXh0Jyw3OTM2KQotQ29udHJvbC5hZGRfZmllbGQoMTEsJ0NvbnRyb2xfTmV4dCcsNzQ3NCkKLUNvbnRyb2wuYWRkX2ZpZWxkKDEyLCdIZWxwJyw3OTg2KQotCi1EaWFsb2cgPSBUYWJsZSgnRGlhbG9nJykKLURpYWxvZy5hZGRfZmllbGQoMSwnRGlhbG9nJywxMTU5MikKLURpYWxvZy5hZGRfZmllbGQoMiwnSENlbnRlcmluZycsMTI4MikKLURpYWxvZy5hZGRfZmllbGQoMywnVkNlbnRlcmluZycsMTI4MikKLURpYWxvZy5hZGRfZmllbGQoNCwnV2lkdGgnLDEyODIpCi1EaWFsb2cuYWRkX2ZpZWxkKDUsJ0hlaWdodCcsMTI4MikKLURpYWxvZy5hZGRfZmllbGQoNiwnQXR0cmlidXRlcycsNDM1NikKLURpYWxvZy5hZGRfZmllbGQoNywnVGl0bGUnLDgwNjQpCi1EaWFsb2cuYWRkX2ZpZWxkKDgsJ0NvbnRyb2xfRmlyc3QnLDMzNzgpCi1EaWFsb2cuYWRkX2ZpZWxkKDksJ0NvbnRyb2xfRGVmYXVsdCcsNzQ3NCkKLURpYWxvZy5hZGRfZmllbGQoMTAsJ0NvbnRyb2xfQ2FuY2VsJyw3NDc0KQotCi1Db250cm9sQ29uZGl0aW9uID0gVGFibGUoJ0NvbnRyb2xDb25kaXRpb24nKQotQ29udHJvbENvbmRpdGlvbi5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCgyLCdDb250cm9sXycsMTE1NzApCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCgzLCdBY3Rpb24nLDExNTcwKQotQ29udHJvbENvbmRpdGlvbi5hZGRfZmllbGQoNCwnQ29uZGl0aW9uJywxMTc3NSkKLQotQ29udHJvbEV2ZW50ID0gVGFibGUoJ0NvbnRyb2xFdmVudCcpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDEsJ0RpYWxvZ18nLDExNTkyKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCgyLCdDb250cm9sXycsMTE1NzApCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDMsJ0V2ZW50JywxMTU3MCkKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoNCwnQXJndW1lbnQnLDExNzc1KQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCg1LCdDb25kaXRpb24nLDE1ODcxKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCg2LCdPcmRlcmluZycsNTM3OCkKLQotQ3JlYXRlRm9sZGVyID0gVGFibGUoJ0NyZWF0ZUZvbGRlcicpCi1DcmVhdGVGb2xkZXIuYWRkX2ZpZWxkKDEsJ0RpcmVjdG9yeV8nLDB4MkRGRikKLUNyZWF0ZUZvbGRlci5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHgyREZGKQotCi1DdXN0b21BY3Rpb24gPSBUYWJsZSgnQ3VzdG9tQWN0aW9uJykKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1DdXN0b21BY3Rpb24uYWRkX2ZpZWxkKDIsJ1R5cGUnLDEyODIpCi1DdXN0b21BY3Rpb24uYWRkX2ZpZWxkKDMsJ1NvdXJjZScsMHgxREZGKQotQ3VzdG9tQWN0aW9uLmFkZF9maWVsZCg0LCdUYXJnZXQnLDc2NzkpCi0KLURyTG9jYXRvciA9IFRhYmxlKCdEckxvY2F0b3InKQotRHJMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLURyTG9jYXRvci5hZGRfZmllbGQoMiwnUGFyZW50JywxNTY4OCkKLURyTG9jYXRvci5hZGRfZmllbGQoMywnUGF0aCcsMTU4NzEpCi1EckxvY2F0b3IuYWRkX2ZpZWxkKDQsJ0RlcHRoJyw1Mzc4KQotCi1EdXBsaWNhdGVGaWxlID0gVGFibGUoJ0R1cGxpY2F0ZUZpbGUnKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoMSwnRmlsZUtleScsMTE1OTIpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDMsJ0ZpbGVfJywweERGRikKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDQsJ0Rlc3ROYW1lJyw4MTkxKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoNSwnRGVzdEZvbGRlcicsNzQ5NikKLQotRW52aXJvbm1lbnQgPSBUYWJsZSgnRW52aXJvbm1lbnQnKQotRW52aXJvbm1lbnQuYWRkX2ZpZWxkKDEsJ0Vudmlyb25tZW50JywxMTU5MikKLUVudmlyb25tZW50LmFkZF9maWVsZCgyLCdOYW1lJyw0MDk1KQotRW52aXJvbm1lbnQuYWRkX2ZpZWxkKDMsJ1ZhbHVlJyw4MTkxKQotRW52aXJvbm1lbnQuYWRkX2ZpZWxkKDQsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1FcnJvciA9IFRhYmxlKCdFcnJvcicpCi1FcnJvci5hZGRfZmllbGQoMSwnRXJyb3InLDk0NzQpCi1FcnJvci5hZGRfZmllbGQoMiwnTWVzc2FnZScsNzkzNikKLQotRXZlbnRNYXBwaW5nID0gVGFibGUoJ0V2ZW50TWFwcGluZycpCi1FdmVudE1hcHBpbmcuYWRkX2ZpZWxkKDEsJ0RpYWxvZ18nLDExNTkyKQotRXZlbnRNYXBwaW5nLmFkZF9maWVsZCgyLCdDb250cm9sXycsMTE1NzApCi1FdmVudE1hcHBpbmcuYWRkX2ZpZWxkKDMsJ0V2ZW50JywxMTU3MCkKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoNCwnQXR0cmlidXRlJywzMzc4KQotCi1FeHRlbnNpb24gPSBUYWJsZSgnRXh0ZW5zaW9uJykKLUV4dGVuc2lvbi5hZGRfZmllbGQoMSwnRXh0ZW5zaW9uJywxMTc3NSkKLUV4dGVuc2lvbi5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHgyREZGKQotRXh0ZW5zaW9uLmFkZF9maWVsZCgzLCdQcm9nSWRfJyw3Njc5KQotRXh0ZW5zaW9uLmFkZF9maWVsZCg0LCdNSU1FXycsNzQ4OCkKLUV4dGVuc2lvbi5hZGRfZmllbGQoNSwnRmVhdHVyZV8nLDMzNjYpCi0KLU1JTUUgPSBUYWJsZSgnTUlNRScpCi1NSU1FLmFkZF9maWVsZCgxLCdDb250ZW50VHlwZScsMTE1ODQpCi1NSU1FLmFkZF9maWVsZCgyLCdFeHRlbnNpb25fJywzNTgzKQotTUlNRS5hZGRfZmllbGQoMywnQ0xTSUQnLDc0NjIpCi0KLUZlYXR1cmVDb21wb25lbnRzID0gVGFibGUoJ0ZlYXR1cmVDb21wb25lbnRzJykKLUZlYXR1cmVDb21wb25lbnRzLmFkZF9maWVsZCgxLCdGZWF0dXJlXycsMTE1NTgpCi1GZWF0dXJlQ29tcG9uZW50cy5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHgyREZGKQotCi1GaWxlU0ZQQ2F0YWxvZyA9IFRhYmxlKCdGaWxlU0ZQQ2F0YWxvZycpCi1GaWxlU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLUZpbGVTRlBDYXRhbG9nLmFkZF9maWVsZCgyLCdTRlBDYXRhbG9nXycsMTE3NzUpCi0KLVNGUENhdGFsb2cgPSBUYWJsZSgnU0ZQQ2F0YWxvZycpCi1TRlBDYXRhbG9nLmFkZF9maWVsZCgxLCdTRlBDYXRhbG9nJywxMTc3NSkKLVNGUENhdGFsb2cuYWRkX2ZpZWxkKDIsJ0NhdGFsb2cnLDIzMDQpCi1TRlBDYXRhbG9nLmFkZF9maWVsZCgzLCdEZXBlbmRlbmN5Jyw3NDI0KQotCi1Gb250ID0gVGFibGUoJ0ZvbnQnKQotRm9udC5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLUZvbnQuYWRkX2ZpZWxkKDIsJ0ZvbnRUaXRsZScsNzU1MikKLQotSW5pRmlsZSA9IFRhYmxlKCdJbmlGaWxlJykKLUluaUZpbGUuYWRkX2ZpZWxkKDEsJ0luaUZpbGUnLDExNTkyKQotSW5pRmlsZS5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDQwOTUpCi1JbmlGaWxlLmFkZF9maWVsZCgzLCdEaXJQcm9wZXJ0eScsNzQ5NikKLUluaUZpbGUuYWRkX2ZpZWxkKDQsJ1NlY3Rpb24nLDM5MzYpCi1JbmlGaWxlLmFkZF9maWVsZCg1LCdLZXknLDM5NjgpCi1JbmlGaWxlLmFkZF9maWVsZCg2LCdWYWx1ZScsNDA5NSkKLUluaUZpbGUuYWRkX2ZpZWxkKDcsJ0FjdGlvbicsMTI4MikKLUluaUZpbGUuYWRkX2ZpZWxkKDgsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1JbmlMb2NhdG9yID0gVGFibGUoJ0luaUxvY2F0b3InKQotSW5pTG9jYXRvci5hZGRfZmllbGQoMSwnU2lnbmF0dXJlXycsMTE1OTIpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCgyLCdGaWxlTmFtZScsMzU4MykKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDMsJ1NlY3Rpb24nLDM0MjQpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCg0LCdLZXknLDM0NTYpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCg1LCdGaWVsZCcsNTM3OCkKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDYsJ1R5cGUnLDUzNzgpCi0KLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UgPSBUYWJsZSgnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScpCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1JbnN0YWxsVUlTZXF1ZW5jZSA9IFRhYmxlKCdJbnN0YWxsVUlTZXF1ZW5jZScpCi1JbnN0YWxsVUlTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1JbnN0YWxsVUlTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotSW5zdGFsbFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1Jc29sYXRlZENvbXBvbmVudCA9IFRhYmxlKCdJc29sYXRlZENvbXBvbmVudCcpCi1Jc29sYXRlZENvbXBvbmVudC5hZGRfZmllbGQoMSwnQ29tcG9uZW50X1NoYXJlZCcsMHgyREZGKQotSXNvbGF0ZWRDb21wb25lbnQuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF9BcHBsaWNhdGlvbicsMHgyREZGKQotCi1MYXVuY2hDb25kaXRpb24gPSBUYWJsZSgnTGF1bmNoQ29uZGl0aW9uJykKLUxhdW5jaENvbmRpdGlvbi5hZGRfZmllbGQoMSwnQ29uZGl0aW9uJywxMTc3NSkKLUxhdW5jaENvbmRpdGlvbi5hZGRfZmllbGQoMiwnRGVzY3JpcHRpb24nLDQwOTUpCi0KLUxpc3RCb3ggPSBUYWJsZSgnTGlzdEJveCcpCi1MaXN0Qm94LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1MaXN0Qm94LmFkZF9maWVsZCgyLCdPcmRlcicsOTQ3NCkKLUxpc3RCb3guYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotTGlzdEJveC5hZGRfZmllbGQoNCwnVGV4dCcsODAwMCkKLQotTGlzdFZpZXcgPSBUYWJsZSgnTGlzdFZpZXcnKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUxpc3RWaWV3LmFkZF9maWVsZCgyLCdPcmRlcicsOTQ3NCkKLUxpc3RWaWV3LmFkZF9maWVsZCgzLCdWYWx1ZScsMzM5MikKLUxpc3RWaWV3LmFkZF9maWVsZCg0LCdUZXh0Jyw4MDAwKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDUsJ0JpbmFyeV8nLDc0OTYpCi0KLUxvY2tQZXJtaXNzaW9ucyA9IFRhYmxlKCdMb2NrUGVybWlzc2lvbnMnKQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCgxLCdMb2NrT2JqZWN0JywxMTU5MikKLUxvY2tQZXJtaXNzaW9ucy5hZGRfZmllbGQoMiwnVGFibGUnLDExNTUyKQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCgzLCdEb21haW4nLDE1ODcxKQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCg0LCdVc2VyJywxMTc3NSkKLUxvY2tQZXJtaXNzaW9ucy5hZGRfZmllbGQoNSwnUGVybWlzc2lvbicsNDM1NikKLQotTWVkaWEgPSBUYWJsZSgnTWVkaWEnKQotTWVkaWEuYWRkX2ZpZWxkKDEsJ0Rpc2tJZCcsOTQ3NCkKLU1lZGlhLmFkZF9maWVsZCgyLCdMYXN0U2VxdWVuY2UnLDEyODIpCi1NZWRpYS5hZGRfZmllbGQoMywnRGlza1Byb21wdCcsODAwMCkKLU1lZGlhLmFkZF9maWVsZCg0LCdDYWJpbmV0Jyw3Njc5KQotTWVkaWEuYWRkX2ZpZWxkKDUsJ1ZvbHVtZUxhYmVsJyw3NDU2KQotTWVkaWEuYWRkX2ZpZWxkKDYsJ1NvdXJjZScsNzQ5NikKLQotTW92ZUZpbGUgPSBUYWJsZSgnTW92ZUZpbGUnKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDEsJ0ZpbGVLZXknLDExNTkyKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDMsJ1NvdXJjZU5hbWUnLDgxOTEpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoNCwnRGVzdE5hbWUnLDgxOTEpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoNSwnU291cmNlRm9sZGVyJyw3NDk2KQotTW92ZUZpbGUuYWRkX2ZpZWxkKDYsJ0Rlc3RGb2xkZXInLDM0MDApCi1Nb3ZlRmlsZS5hZGRfZmllbGQoNywnT3B0aW9ucycsMTI4MikKLQotTXNpQXNzZW1ibHkgPSBUYWJsZSgnTXNpQXNzZW1ibHknKQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudF8nLDB4MkRGRikKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCgyLCdGZWF0dXJlXycsMzM2NikKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCgzLCdGaWxlX01hbmlmZXN0JywweDFERkYpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoNCwnRmlsZV9BcHBsaWNhdGlvbicsMHgxREZGKQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDUsJ0F0dHJpYnV0ZXMnLDUzNzgpCi0KLU1zaUFzc2VtYmx5TmFtZSA9IFRhYmxlKCdNc2lBc3NlbWJseU5hbWUnKQotTXNpQXNzZW1ibHlOYW1lLmFkZF9maWVsZCgxLCdDb21wb25lbnRfJywweDJERkYpCi1Nc2lBc3NlbWJseU5hbWUuYWRkX2ZpZWxkKDIsJ05hbWUnLDExNzc1KQotTXNpQXNzZW1ibHlOYW1lLmFkZF9maWVsZCgzLCdWYWx1ZScsMzU4MykKLQotTXNpRGlnaXRhbENlcnRpZmljYXRlID0gVGFibGUoJ01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScpCi1Nc2lEaWdpdGFsQ2VydGlmaWNhdGUuYWRkX2ZpZWxkKDEsJ0RpZ2l0YWxDZXJ0aWZpY2F0ZScsMTE1OTIpCi1Nc2lEaWdpdGFsQ2VydGlmaWNhdGUuYWRkX2ZpZWxkKDIsJ0NlcnREYXRhJywyMzA0KQotCi1Nc2lEaWdpdGFsU2lnbmF0dXJlID0gVGFibGUoJ01zaURpZ2l0YWxTaWduYXR1cmUnKQotTXNpRGlnaXRhbFNpZ25hdHVyZS5hZGRfZmllbGQoMSwnVGFibGUnLDExNTUyKQotTXNpRGlnaXRhbFNpZ25hdHVyZS5hZGRfZmllbGQoMiwnU2lnbk9iamVjdCcsMTE1OTIpCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCgzLCdEaWdpdGFsQ2VydGlmaWNhdGVfJywzNDAwKQotTXNpRGlnaXRhbFNpZ25hdHVyZS5hZGRfZmllbGQoNCwnSGFzaCcsNjQwMCkKLQotTXNpRmlsZUhhc2ggPSBUYWJsZSgnTXNpRmlsZUhhc2gnKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoMiwnT3B0aW9ucycsMTI4MikKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCgzLCdIYXNoUGFydDEnLDI2MCkKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCg0LCdIYXNoUGFydDInLDI2MCkKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCg1LCdIYXNoUGFydDMnLDI2MCkKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCg2LCdIYXNoUGFydDQnLDI2MCkKLQotTXNpUGF0Y2hIZWFkZXJzID0gVGFibGUoJ01zaVBhdGNoSGVhZGVycycpCi1Nc2lQYXRjaEhlYWRlcnMuYWRkX2ZpZWxkKDEsJ1N0cmVhbVJlZicsMTE1NTgpCi1Nc2lQYXRjaEhlYWRlcnMuYWRkX2ZpZWxkKDIsJ0hlYWRlcicsMjMwNCkKLQotT0RCQ0F0dHJpYnV0ZSA9IFRhYmxlKCdPREJDQXR0cmlidXRlJykKLU9EQkNBdHRyaWJ1dGUuYWRkX2ZpZWxkKDEsJ0RyaXZlcl8nLDExNTkyKQotT0RCQ0F0dHJpYnV0ZS5hZGRfZmllbGQoMiwnQXR0cmlidXRlJywxMTU2MCkKLU9EQkNBdHRyaWJ1dGUuYWRkX2ZpZWxkKDMsJ1ZhbHVlJyw4MTkxKQotCi1PREJDRHJpdmVyID0gVGFibGUoJ09EQkNEcml2ZXInKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoMSwnRHJpdmVyJywxMTU5MikKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoMywnRGVzY3JpcHRpb24nLDM1ODMpCi1PREJDRHJpdmVyLmFkZF9maWVsZCg0LCdGaWxlXycsMHhERkYpCi1PREJDRHJpdmVyLmFkZF9maWVsZCg1LCdGaWxlX1NldHVwJywweDFERkYpCi0KLU9EQkNEYXRhU291cmNlID0gVGFibGUoJ09EQkNEYXRhU291cmNlJykKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCgxLCdEYXRhU291cmNlJywweDJERkYpCi1PREJDRGF0YVNvdXJjZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1PREJDRGF0YVNvdXJjZS5hZGRfZmllbGQoMywnRGVzY3JpcHRpb24nLDM1ODMpCi1PREJDRGF0YVNvdXJjZS5hZGRfZmllbGQoNCwnRHJpdmVyRGVzY3JpcHRpb24nLDM1ODMpCi1PREJDRGF0YVNvdXJjZS5hZGRfZmllbGQoNSwnUmVnaXN0cmF0aW9uJywxMjgyKQotCi1PREJDU291cmNlQXR0cmlidXRlID0gVGFibGUoJ09EQkNTb3VyY2VBdHRyaWJ1dGUnKQotT0RCQ1NvdXJjZUF0dHJpYnV0ZS5hZGRfZmllbGQoMSwnRGF0YVNvdXJjZV8nLDExNTkyKQotT0RCQ1NvdXJjZUF0dHJpYnV0ZS5hZGRfZmllbGQoMiwnQXR0cmlidXRlJywxMTU1MikKLU9EQkNTb3VyY2VBdHRyaWJ1dGUuYWRkX2ZpZWxkKDMsJ1ZhbHVlJyw4MTkxKQotCi1PREJDVHJhbnNsYXRvciA9IFRhYmxlKCdPREJDVHJhbnNsYXRvcicpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoMSwnVHJhbnNsYXRvcicsMTE1OTIpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoMywnRGVzY3JpcHRpb24nLDM1ODMpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoNCwnRmlsZV8nLDB4REZGKQotT0RCQ1RyYW5zbGF0b3IuYWRkX2ZpZWxkKDUsJ0ZpbGVfU2V0dXAnLDB4MURGRikKLQotUGF0Y2ggPSBUYWJsZSgnUGF0Y2gnKQotUGF0Y2guYWRkX2ZpZWxkKDEsJ0ZpbGVfJywxMTU5MikKLVBhdGNoLmFkZF9maWVsZCgyLCdTZXF1ZW5jZScsOTQ3NCkKLVBhdGNoLmFkZF9maWVsZCgzLCdQYXRjaFNpemUnLDI2MCkKLVBhdGNoLmFkZF9maWVsZCg0LCdBdHRyaWJ1dGVzJywxMjgyKQotUGF0Y2guYWRkX2ZpZWxkKDUsJ0hlYWRlcicsNjQwMCkKLVBhdGNoLmFkZF9maWVsZCg2LCdTdHJlYW1SZWZfJyw3NDYyKQotCi1QYXRjaFBhY2thZ2UgPSBUYWJsZSgnUGF0Y2hQYWNrYWdlJykKLVBhdGNoUGFja2FnZS5hZGRfZmllbGQoMSwnUGF0Y2hJZCcsMTE1NTgpCi1QYXRjaFBhY2thZ2UuYWRkX2ZpZWxkKDIsJ01lZGlhXycsMTI4MikKLQotUHVibGlzaENvbXBvbmVudCA9IFRhYmxlKCdQdWJsaXNoQ29tcG9uZW50JykKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudElkJywxMTU1OCkKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDIsJ1F1YWxpZmllcicsMTE3NzUpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCgzLCdDb21wb25lbnRfJywweDJERkYpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCg0LCdBcHBEYXRhJyw4MTkxKQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoNSwnRmVhdHVyZV8nLDMzNjYpCi0KLVJhZGlvQnV0dG9uID0gVGFibGUoJ1JhZGlvQnV0dG9uJykKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoMiwnT3JkZXInLDk0NzQpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoMywnVmFsdWUnLDMzOTIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNCwnWCcsMTI4MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg1LCdZJywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDYsJ1dpZHRoJywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDcsJ0hlaWdodCcsMTI4MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg4LCdUZXh0Jyw4MDAwKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDksJ0hlbHAnLDc5ODYpCi0KLVJlZ2lzdHJ5ID0gVGFibGUoJ1JlZ2lzdHJ5JykKLVJlZ2lzdHJ5LmFkZF9maWVsZCgxLCdSZWdpc3RyeScsMHgyREZGKQotUmVnaXN0cnkuYWRkX2ZpZWxkKDIsJ1Jvb3QnLDEyODIpCi1SZWdpc3RyeS5hZGRfZmllbGQoMywnS2V5Jyw0MDk1KQotUmVnaXN0cnkuYWRkX2ZpZWxkKDQsJ05hbWUnLDgxOTEpCi1SZWdpc3RyeS5hZGRfZmllbGQoNSwnVmFsdWUnLDc5MzYpCi1SZWdpc3RyeS5hZGRfZmllbGQoNiwnQ29tcG9uZW50XycsMHhERkYpCi0KLVJlZ0xvY2F0b3IgPSBUYWJsZSgnUmVnTG9jYXRvcicpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDIsJ1Jvb3QnLDEyODIpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCgzLCdLZXknLDM1ODMpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCg0LCdOYW1lJyw3Njc5KQotUmVnTG9jYXRvci5hZGRfZmllbGQoNSwnVHlwZScsNTM3OCkKLQotUmVtb3ZlRmlsZSA9IFRhYmxlKCdSZW1vdmVGaWxlJykKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDEsJ0ZpbGVLZXknLDExNTkyKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1SZW1vdmVGaWxlLmFkZF9maWVsZCgzLCdGaWxlTmFtZScsODE5MSkKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDQsJ0RpclByb3BlcnR5JywzNDAwKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoNSwnSW5zdGFsbE1vZGUnLDEyODIpCi0KLVJlbW92ZUluaUZpbGUgPSBUYWJsZSgnUmVtb3ZlSW5pRmlsZScpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCgxLCdSZW1vdmVJbmlGaWxlJywxMTU5MikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDIsJ0ZpbGVOYW1lJyw0MDk1KQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoMywnRGlyUHJvcGVydHknLDc0OTYpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg0LCdTZWN0aW9uJywzOTM2KQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoNSwnS2V5JywzOTY4KQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoNiwnVmFsdWUnLDgxOTEpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg3LCdBY3Rpb24nLDEyODIpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg4LCdDb21wb25lbnRfJywweERGRikKLQotUmVtb3ZlUmVnaXN0cnkgPSBUYWJsZSgnUmVtb3ZlUmVnaXN0cnknKQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDEsJ1JlbW92ZVJlZ2lzdHJ5JywxMTU5MikKLVJlbW92ZVJlZ2lzdHJ5LmFkZF9maWVsZCgyLCdSb290JywxMjgyKQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDMsJ0tleScsNDA5NSkKLVJlbW92ZVJlZ2lzdHJ5LmFkZF9maWVsZCg0LCdOYW1lJyw4MTkxKQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDUsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1SZXNlcnZlQ29zdCA9IFRhYmxlKCdSZXNlcnZlQ29zdCcpCi1SZXNlcnZlQ29zdC5hZGRfZmllbGQoMSwnUmVzZXJ2ZUtleScsMTE1OTIpCi1SZXNlcnZlQ29zdC5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1SZXNlcnZlQ29zdC5hZGRfZmllbGQoMywnUmVzZXJ2ZUZvbGRlcicsNzQ5NikKLVJlc2VydmVDb3N0LmFkZF9maWVsZCg0LCdSZXNlcnZlTG9jYWwnLDI2MCkKLVJlc2VydmVDb3N0LmFkZF9maWVsZCg1LCdSZXNlcnZlU291cmNlJywyNjApCi0KLVNlbGZSZWcgPSBUYWJsZSgnU2VsZlJlZycpCi1TZWxmUmVnLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotU2VsZlJlZy5hZGRfZmllbGQoMiwnQ29zdCcsNTM3OCkKLQotU2VydmljZUNvbnRyb2wgPSBUYWJsZSgnU2VydmljZUNvbnRyb2wnKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDEsJ1NlcnZpY2VDb250cm9sJywxMTU5MikKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCgyLCdOYW1lJyw0MDk1KQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDMsJ0V2ZW50JywxMjgyKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDQsJ0FyZ3VtZW50cycsODE5MSkKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCg1LCdXYWl0Jyw1Mzc4KQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDYsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1TZXJ2aWNlSW5zdGFsbCA9IFRhYmxlKCdTZXJ2aWNlSW5zdGFsbCcpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMSwnU2VydmljZUluc3RhbGwnLDExNTkyKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDIsJ05hbWUnLDM1ODMpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMywnRGlzcGxheU5hbWUnLDgxOTEpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoNCwnU2VydmljZVR5cGUnLDI2MCkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg1LCdTdGFydFR5cGUnLDI2MCkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg2LCdFcnJvckNvbnRyb2wnLDI2MCkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg3LCdMb2FkT3JkZXJHcm91cCcsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg4LCdEZXBlbmRlbmNpZXMnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoOSwnU3RhcnROYW1lJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDEwLCdQYXNzd29yZCcsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxMSwnQXJndW1lbnRzJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDEyLCdDb21wb25lbnRfJywweERGRikKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxMywnRGVzY3JpcHRpb24nLDgxOTEpCi0KLVNob3J0Y3V0ID0gVGFibGUoJ1Nob3J0Y3V0JykKLVNob3J0Y3V0LmFkZF9maWVsZCgxLCdTaG9ydGN1dCcsMTE1OTIpCi1TaG9ydGN1dC5hZGRfZmllbGQoMiwnRGlyZWN0b3J5XycsMHhERkYpCi1TaG9ydGN1dC5hZGRfZmllbGQoMywnTmFtZScsMzk2OCkKLVNob3J0Y3V0LmFkZF9maWVsZCg0LCdDb21wb25lbnRfJywweERGRikKLVNob3J0Y3V0LmFkZF9maWVsZCg1LCdUYXJnZXQnLDM0MDApCi1TaG9ydGN1dC5hZGRfZmllbGQoNiwnQXJndW1lbnRzJyw3Njc5KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDcsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDgsJ0hvdGtleScsNTM3OCkKLVNob3J0Y3V0LmFkZF9maWVsZCg5LCdJY29uXycsNzQ5NikKLVNob3J0Y3V0LmFkZF9maWVsZCgxMCwnSWNvbkluZGV4Jyw1Mzc4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDExLCdTaG93Q21kJyw1Mzc4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDEyLCdXa0RpcicsNzQ5NikKLQotU2lnbmF0dXJlID0gVGFibGUoJ1NpZ25hdHVyZScpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZScsMTE1OTIpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDIsJ0ZpbGVOYW1lJywzNTgzKQotU2lnbmF0dXJlLmFkZF9maWVsZCgzLCdNaW5WZXJzaW9uJyw3NDQ0KQotU2lnbmF0dXJlLmFkZF9maWVsZCg0LCdNYXhWZXJzaW9uJyw3NDQ0KQotU2lnbmF0dXJlLmFkZF9maWVsZCg1LCdNaW5TaXplJyw0MzU2KQotU2lnbmF0dXJlLmFkZF9maWVsZCg2LCdNYXhTaXplJyw0MzU2KQotU2lnbmF0dXJlLmFkZF9maWVsZCg3LCdNaW5EYXRlJyw0MzU2KQotU2lnbmF0dXJlLmFkZF9maWVsZCg4LCdNYXhEYXRlJyw0MzU2KQotU2lnbmF0dXJlLmFkZF9maWVsZCg5LCdMYW5ndWFnZXMnLDc2NzkpCi0KLVRleHRTdHlsZSA9IFRhYmxlKCdUZXh0U3R5bGUnKQotVGV4dFN0eWxlLmFkZF9maWVsZCgxLCdUZXh0U3R5bGUnLDExNTkyKQotVGV4dFN0eWxlLmFkZF9maWVsZCgyLCdGYWNlTmFtZScsMzM2MCkKLVRleHRTdHlsZS5hZGRfZmllbGQoMywnU2l6ZScsMTI4MikKLVRleHRTdHlsZS5hZGRfZmllbGQoNCwnQ29sb3InLDQzNTYpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDUsJ1N0eWxlQml0cycsNTM3OCkKLQotVHlwZUxpYiA9IFRhYmxlKCdUeXBlTGliJykKLVR5cGVMaWIuYWRkX2ZpZWxkKDEsJ0xpYklEJywxMTU1OCkKLVR5cGVMaWIuYWRkX2ZpZWxkKDIsJ0xhbmd1YWdlJyw5NDc0KQotVHlwZUxpYi5hZGRfZmllbGQoMywnQ29tcG9uZW50XycsMHgyREZGKQotVHlwZUxpYi5hZGRfZmllbGQoNCwnVmVyc2lvbicsNDM1NikKLVR5cGVMaWIuYWRkX2ZpZWxkKDUsJ0Rlc2NyaXB0aW9uJyw4MDY0KQotVHlwZUxpYi5hZGRfZmllbGQoNiwnRGlyZWN0b3J5XycsMHgxREZGKQotVHlwZUxpYi5hZGRfZmllbGQoNywnRmVhdHVyZV8nLDMzNjYpCi1UeXBlTGliLmFkZF9maWVsZCg4LCdDb3N0Jyw0MzU2KQotCi1VSVRleHQgPSBUYWJsZSgnVUlUZXh0JykKLVVJVGV4dC5hZGRfZmllbGQoMSwnS2V5JywxMTU5MikKLVVJVGV4dC5hZGRfZmllbGQoMiwnVGV4dCcsODE5MSkKLQotVXBncmFkZSA9IFRhYmxlKCdVcGdyYWRlJykKLVVwZ3JhZGUuYWRkX2ZpZWxkKDEsJ1VwZ3JhZGVDb2RlJywxMTU1OCkKLVVwZ3JhZGUuYWRkX2ZpZWxkKDIsJ1ZlcnNpb25NaW4nLDE1NjM2KQotVXBncmFkZS5hZGRfZmllbGQoMywnVmVyc2lvbk1heCcsMTU2MzYpCi1VcGdyYWRlLmFkZF9maWVsZCg0LCdMYW5ndWFnZScsMTU4NzEpCi1VcGdyYWRlLmFkZF9maWVsZCg1LCdBdHRyaWJ1dGVzJyw4NDUyKQotVXBncmFkZS5hZGRfZmllbGQoNiwnUmVtb3ZlJyw3Njc5KQotVXBncmFkZS5hZGRfZmllbGQoNywnQWN0aW9uUHJvcGVydHknLDM0MDApCi0KLVZlcmIgPSBUYWJsZSgnVmVyYicpCi1WZXJiLmFkZF9maWVsZCgxLCdFeHRlbnNpb25fJywxMTc3NSkKLVZlcmIuYWRkX2ZpZWxkKDIsJ1ZlcmInLDExNTUyKQotVmVyYi5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi1WZXJiLmFkZF9maWVsZCg0LCdDb21tYW5kJyw4MTkxKQotVmVyYi5hZGRfZmllbGQoNSwnQXJndW1lbnQnLDgxOTEpCi0KLXRhYmxlcz1bX1ZhbGlkYXRpb24sIEFjdGlvblRleHQsIEFkbWluRXhlY3V0ZVNlcXVlbmNlLCBDb25kaXRpb24sIEFkbWluVUlTZXF1ZW5jZSwgQWR2dEV4ZWN1dGVTZXF1ZW5jZSwgQWR2dFVJU2VxdWVuY2UsIEFwcElkLCBBcHBTZWFyY2gsIFByb3BlcnR5LCBCQkNvbnRyb2wsIEJpbGxib2FyZCwgRmVhdHVyZSwgQmluYXJ5LCBCaW5kSW1hZ2UsIEZpbGUsIENDUFNlYXJjaCwgQ2hlY2tCb3gsIENsYXNzLCBDb21wb25lbnQsIEljb24sIFByb2dJZCwgQ29tYm9Cb3gsIENvbXBMb2NhdG9yLCBDb21wbHVzLCBEaXJlY3RvcnksIENvbnRyb2wsIERpYWxvZywgQ29udHJvbENvbmRpdGlvbiwgQ29udHJvbEV2ZW50LCBDcmVhdGVGb2xkZXIsIEN1c3RvbUFjdGlvbiwgRHJMb2NhdG9yLCBEdXBsaWNhdGVGaWxlLCBFbnZpcm9ubWVudCwgRXJyb3IsIEV2ZW50TWFwcGluZywgRXh0ZW5zaW9uLCBNSU1FLCBGZWF0dXJlQ29tcG9uZW50cywgRmlsZVNGUENhdGFsb2csIFNGUENhdGFsb2csIEZvbnQsIEluaUZpbGUsIEluaUxvY2F0b3IsIEluc3RhbGxFeGVjdXRlU2VxdWVuY2UsIEluc3RhbGxVSVNlcXVlbmNlLCBJc29sYXRlZENvbXBvbmVudCwgTGF1bmNoQ29uZGl0aW9uLCBMaXN0Qm94LCBMaXN0VmlldywgTG9ja1Blcm1pc3Npb25zLCBNZWRpYSwgTW92ZUZpbGUsIE1zaUFzc2VtYmx5LCBNc2lBc3NlbWJseU5hbWUsIE1zaURpZ2l0YWxDZXJ0aWZpY2F0ZSwgTXNpRGlnaXRhbFNpZ25hdHVyZSwgTXNpRmlsZUhhc2gsIE1zaVBhdGNoSGVhZGVycywgT0RCQ0F0dHJpYnV0ZSwgT0RCQ0RyaXZlciwgT0RCQ0RhdGFTb3VyY2UsIE9EQkNTb3VyY2VBdHRyaWJ1dGUsIE9EQkNUcmFuc2xhdG9yLCBQYXRjaCwgUGF0Y2hQYWNrYWdlLCBQdWJsaXNoQ29tcG9uZW50LCBSYWRpb0J1dHRvbiwgUmVnaXN0cnksIFJlZ0xvY2F0b3IsIFJlbW92ZUZpbGUsIFJlbW92ZUluaUZpbGUsIFJlbW92ZVJlZ2lzdHJ5LCBSZXNlcnZlQ29zdCwgU2VsZlJlZywgU2VydmljZUNvbnRyb2wsIFNlcnZpY2VJbnN0YWxsLCBTaG9ydGN1dCwgU2lnbmF0dXJlLCBUZXh0U3R5bGUsIFR5cGVMaWIsIFVJVGV4dCwgVXBncmFkZSwgVmVyYl0KLQotX1ZhbGlkYXRpb25fcmVjb3JkcyA9IFsKLSh1J19WYWxpZGF0aW9uJyx1J1RhYmxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRhYmxlJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnQ29sdW1uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGNvbHVtbicsKSwKLSh1J19WYWxpZGF0aW9uJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdEZXNjcmlwdGlvbiBvZiBjb2x1bW4nLCksCi0odSdfVmFsaWRhdGlvbicsdSdTZXQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1NldCBvZiB2YWx1ZXMgdGhhdCBhcmUgcGVybWl0dGVkJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnQ2F0ZWdvcnknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0O0Zvcm1hdHRlZDtUZW1wbGF0ZTtDb25kaXRpb247R3VpZDtQYXRoO1ZlcnNpb247TGFuZ3VhZ2U7SWRlbnRpZmllcjtCaW5hcnk7VXBwZXJDYXNlO0xvd2VyQ2FzZTtGaWxlbmFtZTtQYXRocztBbnlQYXRoO1dpbGRDYXJkRmlsZW5hbWU7UmVnUGF0aDtLZXlGb3JtYXR0ZWQ7Q3VzdG9tU291cmNlO1Byb3BlcnR5O0NhYmluZXQ7U2hvcnRjdXQ7VVJMJyx1J1N0cmluZyBjYXRlZ29yeScsKSwKLSh1J19WYWxpZGF0aW9uJyx1J0tleUNvbHVtbicsdSdZJywxLDMyLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29sdW1uIHRvIHdoaWNoIGZvcmVpZ24ga2V5IGNvbm5lY3RzJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnS2V5VGFibGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvciBmb3JlaWduIGtleSwgTmFtZSBvZiB0YWJsZSB0byB3aGljaCBkYXRhIG11c3QgbGluaycsKSwKLSh1J19WYWxpZGF0aW9uJyx1J01heFZhbHVlJyx1J1knLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNYXhpbXVtIHZhbHVlIGFsbG93ZWQnLCksCi0odSdfVmFsaWRhdGlvbicsdSdNaW5WYWx1ZScsdSdZJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWluaW11bSB2YWx1ZSBhbGxvd2VkJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnTnVsbGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdZO047QCcsdSdXaGV0aGVyIHRoZSBjb2x1bW4gaXMgbnVsbGFibGUnLCksCi0odSdBY3Rpb25UZXh0Jyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZGlzcGxheWVkIGluIHByb2dyZXNzIGRpYWxvZyBhbmQgbG9nIHdoZW4gYWN0aW9uIGlzIGV4ZWN1dGluZy4nLCksCi0odSdBY3Rpb25UZXh0Jyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gYmUgZGVzY3JpYmVkLicsKSwKLSh1J0FjdGlvblRleHQnLHUnVGVtcGxhdGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZW1wbGF0ZScsTm9uZSwgdSdPcHRpb25hbCBsb2NhbGl6ZWQgZm9ybWF0IHRlbXBsYXRlIHVzZWQgdG8gZm9ybWF0IGFjdGlvbiBkYXRhIHJlY29yZHMgZm9yIGRpc3BsYXkgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24uJywpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdDb25kaXRpb24nLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J0V4cHJlc3Npb24gZXZhbHVhdGVkIHRvIGRldGVybWluZSBpZiBMZXZlbCBpbiB0aGUgRmVhdHVyZSB0YWJsZSBpcyB0byBjaGFuZ2UuJywpLAotKHUnQ29uZGl0aW9uJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGEgRmVhdHVyZSBlbnRyeSBpbiBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J0NvbmRpdGlvbicsdSdMZXZlbCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTmV3IHNlbGVjdGlvbiBMZXZlbCB0byBzZXQgaW4gRmVhdHVyZSB0YWJsZSBpZiBDb25kaXRpb24gZXZhbHVhdGVzIHRvIFRSVUUuJywpLAotKHUnQWRtaW5VSVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnQWRtaW5VSVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZG1pblVJU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0FkdnRVSVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnQWR2dFVJU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0FkdnRVSVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnQXBwSWQnLHUnQXBwSWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnQWN0aXZhdGVBdFN0b3JhZ2UnLHUnWScsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdEbGxTdXJyb2dhdGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnTG9jYWxTZXJ2aWNlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J1JlbW90ZVNlcnZlck5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdSdW5Bc0ludGVyYWN0aXZlVXNlcicsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J1NlcnZpY2VQYXJhbWV0ZXJzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcFNlYXJjaCcsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCBhIFNpZ25hdHVyZScsKSwKLSh1J0FwcFNlYXJjaCcsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJywpLAotKHUnUHJvcGVydHknLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgcHJvcGVydHksIHVwcGVyY2FzZSBpZiBzZXR0YWJsZSBieSBsYXVuY2hlciBvciBsb2FkZXIuJywpLAotKHUnUHJvcGVydHknLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1N0cmluZyB2YWx1ZSBmb3IgcHJvcGVydHkuICBOZXZlciBudWxsIG9yIGVtcHR5LicsKSwKLSh1J0JCQ29udHJvbCcsdSdUeXBlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdCQkNvbnRyb2wnLHUnWScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdCQkNvbnRyb2wnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnQSBzdHJpbmcgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgdGV4dCBjb250YWluZWQgd2l0aGluIGEgY29udHJvbCAoaWYgYXBwcm9wcmlhdGUpLicsKSwKLSh1J0JCQ29udHJvbCcsdSdCQkNvbnRyb2wnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBiaWxsYm9hcmQsIGJ1dCBjYW4gcmVwZWF0IG9uIGRpZmZlcmVudCBiaWxsYm9hcmQuJywpLAotKHUnQkJDb250cm9sJyx1J0F0dHJpYnV0ZXMnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdCaWxsYm9hcmRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQmlsbGJvYXJkJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIEJpbGxib2FyZCB0YWJsZSwgbmFtZSBvZiB0aGUgYmlsbGJvYXJkLicsKSwKLSh1J0JCQ29udHJvbCcsdSdIZWlnaHQnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdXaWR0aCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdCQkNvbnRyb2wnLHUnWCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JpbGxib2FyZCcsdSdBY3Rpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIGFuIGFjdGlvbi4gVGhlIGJpbGxib2FyZCBpcyBkaXNwbGF5ZWQgZHVyaW5nIHRoZSBwcm9ncmVzcyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoaXMgYWN0aW9uLicsKSwKLSh1J0JpbGxib2FyZCcsdSdCaWxsYm9hcmQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIGJpbGxib2FyZC4nLCksCi0odSdCaWxsYm9hcmQnLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBbiBleHRlcm5hbCBrZXkgdG8gdGhlIEZlYXR1cmUgVGFibGUuIFRoZSBiaWxsYm9hcmQgaXMgc2hvd24gb25seSBpZiB0aGlzIGZlYXR1cmUgaXMgYmVpbmcgaW5zdGFsbGVkLicsKSwKLSh1J0JpbGxib2FyZCcsdSdPcmRlcmluZycsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGJpbGxib2FyZCBjb3JyZXNwb25kaW5nIHRvIGFuIGFjdGlvbiB0aGV5IHdpbGwgYmUgc2hvd24gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhpcyBjb2x1bW4uJywpLAotKHUnRmVhdHVyZScsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTG9uZ2VyIGRlc2NyaXB0aXZlIHRleHQgZGVzY3JpYmluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLicsKSwKLSh1J0ZlYXR1cmUnLHUnQXR0cmlidXRlcycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzA7MTsyOzQ7NTs2Ozg7OTsxMDsxNjsxNzsxODsyMDsyMTsyMjsyNDsyNTsyNjszMjszMzszNDszNjszNzszODs0ODs0OTs1MDs1Mjs1Mzs1NCcsdSdGZWF0dXJlIGF0dHJpYnV0ZXMnLCksCi0odSdGZWF0dXJlJyx1J0ZlYXR1cmUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgcmVjb3JkLicsKSwKLSh1J0ZlYXR1cmUnLHUnRGlyZWN0b3J5XycsdSdZJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J1VwcGVyQ2FzZScsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgRGlyZWN0b3J5IHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgdGhlIFVJLiBBIG5vbi1udWxsIHZhbHVlIHdpbGwgZW5hYmxlIHRoZSBicm93c2UgYnV0dG9uLicsKSwKLSh1J0ZlYXR1cmUnLHUnTGV2ZWwnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpbnN0YWxsIGxldmVsIGF0IHdoaWNoIHJlY29yZCB3aWxsIGJlIGluaXRpYWxseSBzZWxlY3RlZC4gQW4gaW5zdGFsbCBsZXZlbCBvZiAwIHdpbGwgZGlzYWJsZSBhbiBpdGVtIGFuZCBwcmV2ZW50IGl0cyBkaXNwbGF5LicsKSwKLSh1J0ZlYXR1cmUnLHUnVGl0bGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1Nob3J0IHRleHQgaWRlbnRpZnlpbmcgYSB2aXNpYmxlIGZlYXR1cmUgaXRlbS4nLCksCi0odSdGZWF0dXJlJyx1J0Rpc3BsYXknLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWVyaWMgc29ydCBvcmRlciwgdXNlZCB0byBmb3JjZSBhIHNwZWNpZmljIGRpc3BsYXkgb3JkZXJpbmcuJywpLAotKHUnRmVhdHVyZScsdSdGZWF0dXJlX1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIGtleSBvZiBhIHBhcmVudCByZWNvcmQgaW4gdGhlIHNhbWUgdGFibGUuIElmIHRoZSBwYXJlbnQgaXMgbm90IHNlbGVjdGVkLCB0aGVuIHRoZSByZWNvcmQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLiBOdWxsIGluZGljYXRlcyBhIHJvb3QgaXRlbS4nLCksCi0odSdCaW5hcnknLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVW5pcXVlIGtleSBpZGVudGlmeWluZyB0aGUgYmluYXJ5IGRhdGEuJywpLAotKHUnQmluYXJ5Jyx1J0RhdGEnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnVGhlIHVuZm9ybWF0dGVkIGJpbmFyeSBkYXRhLicsKSwKLSh1J0JpbmRJbWFnZScsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBpbmRleCBpbnRvIHRoZSBGaWxlIHRhYmxlLiBUaGlzIG11c3QgYmUgYW4gZXhlY3V0YWJsZSBmaWxlLicsKSwKLSh1J0JpbmRJbWFnZScsdSdQYXRoJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGF0aHMnLE5vbmUsIHUnQSBsaXN0IG9mIDsgIGRlbGltaXRlZCBwYXRocyB0aGF0IHJlcHJlc2VudCB0aGUgcGF0aHMgdG8gYmUgc2VhcmNoZWQgZm9yIHRoZSBpbXBvcnQgRExMUy4gVGhlIGxpc3QgaXMgdXN1YWxseSBhIGxpc3Qgb2YgcHJvcGVydGllcyBlYWNoIGVuY2xvc2VkIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgW10gLicsKSwKLSh1J0ZpbGUnLHUnU2VxdWVuY2UnLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJywpLAotKHUnRmlsZScsdSdBdHRyaWJ1dGVzJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBmaWxlIGF0dHJpYnV0ZXMgKHdpdGggdGhlIGRlY2ltYWwgdmFsdWUgb2YgZWFjaCBiaXQgcG9zaXRpb24gaW4gcGFyZW50aGVzZXMpJywpLAotKHUnRmlsZScsdSdGaWxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbiwgbXVzdCBtYXRjaCBpZGVudGlmaWVyIGluIGNhYmluZXQuICBGb3IgdW5jb21wcmVzc2VkIGZpbGVzLCB0aGlzIGZpZWxkIGlzIGlnbm9yZWQuJywpLAotKHUnRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZS4nLCksCi0odSdGaWxlJyx1J0ZpbGVOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnRmlsZSBuYW1lIHVzZWQgZm9yIGluc3RhbGxhdGlvbiwgbWF5IGJlIGxvY2FsaXplZC4gIFRoaXMgbWF5IGNvbnRhaW4gYSAic2hvcnQgbmFtZXxsb25nIG5hbWUiIHBhaXIuJywpLAotKHUnRmlsZScsdSdGaWxlU2l6ZScsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnRmlsZScsdSdMYW5ndWFnZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJyxOb25lLCB1J0xpc3Qgb2YgZGVjaW1hbCBsYW5ndWFnZSBJZHMsIGNvbW1hLXNlcGFyYXRlZCBpZiBtb3JlIHRoYW4gb25lLicsKSwKLSh1J0ZpbGUnLHUnVmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdWZXJzaW9uJyxOb25lLCB1J1ZlcnNpb24gc3RyaW5nIGZvciB2ZXJzaW9uZWQgZmlsZXM7ICBCbGFuayBmb3IgdW52ZXJzaW9uZWQgZmlsZXMuJywpLAotKHUnQ0NQU2VhcmNoJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nLCksCi0odSdDaGVja0JveCcsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoZSBpdGVtLicsKSwKLSh1J0NoZWNrQm94Jyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLicsKSwKLSh1J0NsYXNzJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBDbGFzcy4nLCksCi0odSdDbGFzcycsdSdBdHRyaWJ1dGVzJyx1J1knLE5vbmUsIDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ2xhc3MgcmVnaXN0cmF0aW9uIGF0dHJpYnV0ZXMuJywpLAotKHUnQ2xhc3MnLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicsKSwKLSh1J0NsYXNzJyx1J0FwcElkXycsdSdZJyxOb25lLCBOb25lLCB1J0FwcElkJywxLHUnR3VpZCcsTm9uZSwgdSdPcHRpb25hbCBBcHBJRCBjb250YWluaW5nIERDT00gaW5mb3JtYXRpb24gZm9yIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gKHN0cmluZyBHVUlEKS4nLCksCi0odSdDbGFzcycsdSdBcmd1bWVudCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdvcHRpb25hbCBhcmd1bWVudCBmb3IgTG9jYWxTZXJ2ZXJzLicsKSwKLSh1J0NsYXNzJyx1J0NMU0lEJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkuJywpLAotKHUnQ2xhc3MnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJywpLAotKHUnQ2xhc3MnLHUnQ29udGV4dCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG51bWVyaWMgc2VydmVyIGNvbnRleHQgZm9yIHRoaXMgc2VydmVyLiBDTFNDVFhfeHh4eCcsKSwKLSh1J0NsYXNzJyx1J0RlZklucHJvY0hhbmRsZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsdScxOzI7MycsdSdPcHRpb25hbCBkZWZhdWx0IGlucHJvYyBoYW5kbGVyLiAgT25seSBvcHRpb25hbGx5IHByb3ZpZGVkIGlmIENvbnRleHQ9Q0xTQ1RYX0xPQ0FMX1NFUlZFUi4gIFR5cGljYWxseSAib2xlMzIuZGxsIiBvciAibWFwaTMyLmRsbCInLCksCi0odSdDbGFzcycsdSdGaWxlVHlwZU1hc2snLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIHN0cmluZyBjb250YWluaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgSEtDUnRoaXMgQ0xTSUQpIGtleS4gSWYgbXVsdGlwbGUgcGF0dGVybnMgZXhpc3QsIHRoZXkgbXVzdCBiZSBkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24sIGFuZCBudW1lcmljIHN1YmtleXMgd2lsbCBiZSBnZW5lcmF0ZWQ6IDAsMSwyLi4uJywpLAotKHUnQ2xhc3MnLHUnSWNvbl8nLHUnWScsTm9uZSwgTm9uZSwgdSdJY29uJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbCBmb3JlaWduIGtleSBpbnRvIHRoZSBJY29uIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBpY29uIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ0xTSUQuIFdpbGwgYmUgd3JpdHRlbiB1bmRlciB0aGUgRGVmYXVsdEljb24ga2V5LicsKSwKLSh1J0NsYXNzJyx1J0ljb25JbmRleCcsdSdZJywtMzI3NjcsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicsKSwKLSh1J0NsYXNzJyx1J1Byb2dJZF9EZWZhdWx0Jyx1J1knLE5vbmUsIE5vbmUsIHUnUHJvZ0lkJywxLHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBQcm9nSWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQ0xTSUQuJywpLAotKHUnQ29tcG9uZW50Jyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSJBIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHdpbGwgZGlzYWJsZSB0aGlzIGNvbXBvbmVudCBpZiB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdGhlICdUcnVlJyBzdGF0ZS4gSWYgYSBjb21wb25lbnQgaXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGJlIGluc3RhbGxlZCwgcmVnYXJkbGVzcyBvZiB0aGUgJ0FjdGlvbicgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wb25lbnQuIiwpLAotKHUnQ29tcG9uZW50Jyx1J0F0dHJpYnV0ZXMnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZW1vdGUgZXhlY3V0aW9uIG9wdGlvbiwgb25lIG9mIGlyc0VudW0nLCksCi0odSdDb21wb25lbnQnLHUnQ29tcG9uZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBjb21wb25lbnQgcmVjb3JkLicsKSwKLSh1J0NvbXBvbmVudCcsdSdDb21wb25lbnRJZCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQsIHZlcnNpb24sIGFuZCBsYW5ndWFnZS4nLCksCi0odSdDb21wb25lbnQnLHUnRGlyZWN0b3J5XycsdSdOJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQga2V5IG9mIGEgRGlyZWN0b3J5IHRhYmxlIHJlY29yZC4gVGhpcyBpcyBhY3R1YWxseSBhIHByb3BlcnR5IG5hbWUgd2hvc2UgdmFsdWUgY29udGFpbnMgdGhlIGFjdHVhbCBwYXRoLCBzZXQgZWl0aGVyIGJ5IHRoZSBBcHBTZWFyY2ggYWN0aW9uIG9yIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZyBvYnRhaW5lZCBmcm9tIHRoZSBEaXJlY3RvcnkgdGFibGUuJywpLAotKHUnQ29tcG9uZW50Jyx1J0tleVBhdGgnLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlO1JlZ2lzdHJ5O09EQkNEYXRhU291cmNlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdFaXRoZXIgdGhlIHByaW1hcnkga2V5IGludG8gdGhlIEZpbGUgdGFibGUsIFJlZ2lzdHJ5IHRhYmxlLCBvciBPREJDRGF0YVNvdXJjZSB0YWJsZS4gVGhpcyBleHRyYWN0IHBhdGggaXMgc3RvcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQsIGFuZCBpcyB1c2VkIHRvIGRldGVjdCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGNvbXBvbmVudCBhbmQgdG8gcmV0dXJuIHRoZSBwYXRoIHRvIGl0LicsKSwKLSh1J0ljb24nLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkuIE5hbWUgb2YgdGhlIGljb24gZmlsZS4nLCksCi0odSdJY29uJyx1J0RhdGEnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIGJpbmFyeSBpY29uIGRhdGEgaW4gUEUgKC5ETEwgb3IgLkVYRSkgb3IgaWNvbiAoLklDTykgZm9ybWF0LicsKSwKLSh1J1Byb2dJZCcsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTG9jYWxpemVkIGRlc2NyaXB0aW9uIGZvciB0aGUgUHJvZ3JhbSBpZGVudGlmaWVyLicsKSwKLSh1J1Byb2dJZCcsdSdJY29uXycsdSdZJyxOb25lLCBOb25lLCB1J0ljb24nLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBQcm9nSWQuIFdpbGwgYmUgd3JpdHRlbiB1bmRlciB0aGUgRGVmYXVsdEljb24ga2V5LicsKSwKLSh1J1Byb2dJZCcsdSdJY29uSW5kZXgnLHUnWScsLTMyNzY3LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnT3B0aW9uYWwgaWNvbiBpbmRleC4nLCksCi0odSdQcm9nSWQnLHUnUHJvZ0lkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgUHJvZ3JhbSBJZGVudGlmaWVyLiBQcmltYXJ5IGtleS4nLCksCi0odSdQcm9nSWQnLHUnQ2xhc3NfJyx1J1knLE5vbmUsIE5vbmUsIHUnQ2xhc3MnLDEsdSdHdWlkJyxOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQcm9nSWQuJywpLAotKHUnUHJvZ0lkJyx1J1Byb2dJZF9QYXJlbnQnLHUnWScsTm9uZSwgTm9uZSwgdSdQcm9nSWQnLDEsdSdUZXh0JyxOb25lLCB1J1RoZSBQYXJlbnQgUHJvZ3JhbSBJZGVudGlmaWVyLiBJZiBzcGVjaWZpZWQsIHRoZSBQcm9nSWQgY29sdW1uIGJlY29tZXMgYSB2ZXJzaW9uIGluZGVwZW5kZW50IHByb2cgaWQuJywpLAotKHUnQ29tYm9Cb3gnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJywpLAotKHUnQ29tYm9Cb3gnLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBjb21ib2JveC4nLCksCi0odSdDb21ib0JveCcsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uIFNlbGVjdGluZyB0aGUgbGluZSB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicsKSwKLSh1J0NvbWJvQm94Jyx1J09yZGVyJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuXHRUaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJywpLAotKHUnQ29tcExvY2F0b3InLHUnVHlwZScsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGJvb2xlYW4gdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uLicsKSwKLSh1J0NvbXBMb2NhdG9yJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJywpLAotKHUnQ29tcExvY2F0b3InLHUnQ29tcG9uZW50SWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJywpLAotKHUnQ29tcGx1cycsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgQ29tUGx1cyBjb21wb25lbnQuJywpLAotKHUnQ29tcGx1cycsdSdFeHBUeXBlJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb21QbHVzIGNvbXBvbmVudCBhdHRyaWJ1dGVzLicsKSwKLSh1J0RpcmVjdG9yeScsdSdEaXJlY3RvcnknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciBkaXJlY3RvcnkgZW50cnksIHByaW1hcnkga2V5LiBJZiBhIHByb3BlcnR5IGJ5IHRoaXMgbmFtZSBpcyBkZWZpbmVkLCBpdCBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkaXJlY3RvcnkuJywpLAotKHUnRGlyZWN0b3J5Jyx1J0RlZmF1bHREaXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0RGlyJyxOb25lLCB1IlRoZSBkZWZhdWx0IHN1Yi1wYXRoIHVuZGVyIHBhcmVudCdzIHBhdGguIiwpLAotKHUnRGlyZWN0b3J5Jyx1J0RpcmVjdG9yeV9QYXJlbnQnLHUnWScsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byB0aGUgZW50cnkgaW4gdGhpcyB0YWJsZSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IHBhcmVudCBkaXJlY3RvcnkuIEEgcmVjb3JkIHBhcmVudGVkIHRvIGl0c2VsZiBvciB3aXRoIGEgTnVsbCBwYXJlbnQgcmVwcmVzZW50cyBhIHJvb3Qgb2YgdGhlIGluc3RhbGwgdHJlZS4nLCksCi0odSdDb250cm9sJyx1J1R5cGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnWScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQSBzdHJpbmcgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgdGV4dCBjb250YWluZWQgd2l0aGluIGEgY29udHJvbCAoaWYgYXBwcm9wcmlhdGUpLicsKSwKLSh1J0NvbnRyb2wnLHUnUHJvcGVydHknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIGEgZGVmaW5lZCBwcm9wZXJ0eSB0byBiZSBsaW5rZWQgdG8gdGhpcyBjb250cm9sLiAnLCksCi0odSdDb250cm9sJyx1J0F0dHJpYnV0ZXMnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnSGVpZ2h0Jyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnWCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnQ29udHJvbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGRpYWxvZywgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGRpYWxvZ3MuICcsKSwKLSh1J0NvbnRyb2wnLHUnQ29udHJvbF9OZXh0Jyx1J1knLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgYW4gb3RoZXIgY29udHJvbCBvbiB0aGUgc2FtZSBkaWFsb2cuIFRoaXMgbGluayBkZWZpbmVzIHRoZSB0YWIgb3JkZXIgb2YgdGhlIGNvbnRyb2xzLiBUaGUgbGlua3MgaGF2ZSB0byBmb3JtIG9uZSBvciBtb3JlIGN5Y2xlcyEnLCksCi0odSdDb250cm9sJyx1J0RpYWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdEaWFsb2cnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0V4dGVybmFsIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnQ29udHJvbCcsdSdIZWxwJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4gJywpLAotKHUnRGlhbG9nJyx1J0F0dHJpYnV0ZXMnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBkaWFsb2cuJywpLAotKHUnRGlhbG9nJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnV2lkdGgnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnRGlhbG9nJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnRGlhbG9nJyx1J0NvbnRyb2xfQ2FuY2VsJyx1J1knLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnRGVmaW5lcyB0aGUgY2FuY2VsIGNvbnRyb2wuIEhpdHRpbmcgZXNjYXBlIG9yIGNsaWNraW5nIG9uIHRoZSBjbG9zZSBpY29uIG9uIHRoZSBkaWFsb2cgaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicsKSwKLSh1J0RpYWxvZycsdSdDb250cm9sX0RlZmF1bHQnLHUnWScsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbnRyb2wuIEhpdHRpbmcgcmV0dXJuIGlzIGVxdWl2YWxlbnQgdG8gcHVzaGluZyB0aGlzIGJ1dHRvbi4nLCksCi0odSdEaWFsb2cnLHUnQ29udHJvbF9GaXJzdCcsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0RlZmluZXMgdGhlIGNvbnRyb2wgdGhhdCBoYXMgdGhlIGZvY3VzIHdoZW4gdGhlIGRpYWxvZyBpcyBjcmVhdGVkLicsKSwKLSh1J0RpYWxvZycsdSdIQ2VudGVyaW5nJyx1J04nLDAsMTAwLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIG9uIGEgMC0xMDAgc2NhbGUuIDAgbWVhbnMgbGVmdCBlbmQsIDEwMCBtZWFucyByaWdodCBlbmQgb2YgdGhlIHNjcmVlbiwgNTAgY2VudGVyLicsKSwKLSh1J0RpYWxvZycsdSdUaXRsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSJBIHRleHQgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHRpdGxlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdGl0bGUgYmFyIG9mIHRoZSBkaWFsb2cncyB3aW5kb3cuIiwpLAotKHUnRGlhbG9nJyx1J1ZDZW50ZXJpbmcnLHUnTicsMCwxMDAsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIG9uIGEgMC0xMDAgc2NhbGUuIDAgbWVhbnMgdG9wIGVuZCwgMTAwIG1lYW5zIGJvdHRvbSBlbmQgb2YgdGhlIHNjcmVlbiwgNTAgY2VudGVyLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdDtEaXNhYmxlO0VuYWJsZTtIaWRlO1Nob3cnLHUnVGhlIGRlc2lyZWQgYWN0aW9uIHRvIGJlIHRha2VuIG9uIHRoZSBzcGVjaWZpZWQgY29udHJvbC4nLCksCi0odSdDb250cm9sQ29uZGl0aW9uJyx1J0NvbmRpdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdBIHN0YW5kYXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHNwZWNpZmllcyB1bmRlciB3aGljaCBjb25kaXRpb25zIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHRyaWdnZXJlZC4nLCksCi0odSdDb250cm9sQ29uZGl0aW9uJyx1J0RpYWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdEaWFsb2cnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnQ29udHJvbF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnQSBzdGFuZGFyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBzcGVjaWZpZXMgdW5kZXIgd2hpY2ggY29uZGl0aW9ucyBhbiBldmVudCBzaG91bGQgYmUgdHJpZ2dlcmVkLicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdPcmRlcmluZycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHVzZWQgdG8gb3JkZXIgc2V2ZXJhbCBldmVudHMgdGllZCB0byB0aGUgc2FtZSBjb250cm9sLiBDYW4gYmUgbGVmdCBibGFuay4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnQXJndW1lbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQSB2YWx1ZSB0byBiZSB1c2VkIGFzIGEgbW9kaWZpZXIgd2hlbiB0cmlnZ2VyaW5nIGEgcGFydGljdWxhciBldmVudC4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0NvbnRyb2xfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbCcsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdFdmVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBbiBpZGVudGlmaWVyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBldmVudCB0aGF0IHNob3VsZCB0YWtlIHBsYWNlIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IHR3byBlbnRyaWVzLicsKSwKLSh1J0NyZWF0ZUZvbGRlcicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUuJywpLAotKHUnQ3JlYXRlRm9sZGVyJyx1J0RpcmVjdG9yeV8nLHUnTicsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBjb3VsZCBiZSBmb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J1R5cGUnLHUnTicsMSwxNjM4MyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBudW1lcmljIGN1c3RvbSBhY3Rpb24gdHlwZSwgY29uc2lzdGluZyBvZiBzb3VyY2UgbG9jYXRpb24sIGNvZGUgdHlwZSwgZW50cnksIG9wdGlvbiBmbGFncy4nLCksCi0odSdDdXN0b21BY3Rpb24nLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbmFtZSBvZiBhY3Rpb24sIG5vcm1hbGx5IGFwcGVhcnMgaW4gc2VxdWVuY2UgdGFibGUgdW5sZXNzIHByaXZhdGUgdXNlLicsKSwKLSh1J0N1c3RvbUFjdGlvbicsdSdTb3VyY2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDdXN0b21Tb3VyY2UnLE5vbmUsIHUnVGhlIHRhYmxlIHJlZmVyZW5jZSBvZiB0aGUgc291cmNlIG9mIHRoZSBjb2RlLicsKSwKLSh1J0N1c3RvbUFjdGlvbicsdSdUYXJnZXQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnRXhjZWN1dGlvbiBwYXJhbWV0ZXIsIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgY3VzdG9tIGFjdGlvbicsKSwKLSh1J0RyTG9jYXRvcicsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicsKSwKLSh1J0RyTG9jYXRvcicsdSdQYXRoJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW55UGF0aCcsTm9uZSwgdSdUaGUgcGF0aCBvbiB0aGUgdXNlciBzeXN0ZW0uIFRoaXMgaXMgYSBlaXRoZXIgYSBzdWJwYXRoIGJlbG93IHRoZSB2YWx1ZSBvZiB0aGUgUGFyZW50IG9yIGEgZnVsbCBwYXRoLiBUaGUgcGF0aCBtYXkgY29udGFpbiBwcm9wZXJ0aWVzIGVuY2xvc2VkIHdpdGhpbiBbIF0gdGhhdCB3aWxsIGJlIGV4cGFuZGVkLicsKSwKLSh1J0RyTG9jYXRvcicsdSdEZXB0aCcsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGRlcHRoIGJlbG93IHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBTaWduYXR1cmVfIGlzIHJlY3Vyc2l2ZWx5IHNlYXJjaGVkLiBJZiBhYnNlbnQsIHRoZSBkZXB0aCBpcyBhc3N1bWVkIHRvIGJlIDAuJywpLAotKHUnRHJMb2NhdG9yJyx1J1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHBhcmVudCBmaWxlIHNpZ25hdHVyZS4gSXQgaXMgYWxzbyBhIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuIElmIG51bGwgYW5kIHRoZSBQYXRoIGNvbHVtbiBkb2VzIG5vdCBleHBhbmQgdG8gYSBmdWxsIHBhdGgsIHRoZW4gYWxsIHRoZSBmaXhlZCBkcml2ZXMgb2YgdGhlIHVzZXIgc3lzdGVtIGFyZSBzZWFyY2hlZCB1c2luZyB0aGUgUGF0aC4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgdGhlIHNvdXJjZSBmaWxlIHRvIGJlIGR1cGxpY2F0ZWQuJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZHVwbGljYXRlIGZpbGUuJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdEZXN0Rm9sZGVyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGhuYW1lIHRvIGEgZGVzdGluYXRpb24gZm9sZGVyLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnRGVzdE5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdGaWxlbmFtZSB0byBiZSBnaXZlbiB0byB0aGUgZHVwbGljYXRlIGZpbGUuJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdGaWxlS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmaWxlIGVudHJ5JywpLAotKHUnRW52aXJvbm1lbnQnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50YWwgdmFsdWUuJywpLAotKHUnRW52aXJvbm1lbnQnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHRvIHNldCBpbiB0aGUgZW52aXJvbm1lbnRhbCBzZXR0aW5ncy4nLCksCi0odSdFbnZpcm9ubWVudCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIGVudmlyb25tZW50YWwgdmFsdWUuJywpLAotKHUnRW52aXJvbm1lbnQnLHUnRW52aXJvbm1lbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBzZXR0aW5nJywpLAotKHUnRXJyb3InLHUnRXJyb3InLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgZXJyb3IgbnVtYmVyLCBvYnRhaW5lZCBmcm9tIGhlYWRlciBmaWxlIElFcnJvciguLi4pIG1hY3Jvcy4nLCksCi0odSdFcnJvcicsdSdNZXNzYWdlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGVtcGxhdGUnLE5vbmUsIHUnRXJyb3IgZm9ybWF0dGluZyB0ZW1wbGF0ZSwgb2J0YWluZWQgZnJvbSB1c2VyIGVkLiBvciBsb2NhbGl6ZXJzLicsKSwKLSh1J0V2ZW50TWFwcGluZycsdSdEaWFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlhbG9nJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIERpYWxvZy4nLCksCi0odSdFdmVudE1hcHBpbmcnLHUnQ29udHJvbF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0V2ZW50TWFwcGluZycsdSdFdmVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQW4gaWRlbnRpZmllciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCB0aGUgY29udHJvbCBzdWJzY3JpYmVzIHRvLicsKSwKLSh1J0V2ZW50TWFwcGluZycsdSdBdHRyaWJ1dGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBjb250cm9sIGF0dHJpYnV0ZSwgdGhhdCBpcyBzZXQgd2hlbiB0aGlzIGV2ZW50IGlzIHJlY2VpdmVkLicsKSwKLSh1J0V4dGVuc2lvbicsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJywpLAotKHUnRXh0ZW5zaW9uJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicsKSwKLSh1J0V4dGVuc2lvbicsdSdFeHRlbnNpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJywpLAotKHUnRXh0ZW5zaW9uJyx1J01JTUVfJyx1J1knLE5vbmUsIE5vbmUsIHUnTUlNRScsMSx1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgQ29udGV4dCBpZGVudGlmaWVyLCB0eXBpY2FsbHkgInR5cGUvZm9ybWF0IiBhc3NvY2lhdGVkIHdpdGggdGhlIGV4dGVuc2lvbicsKSwKLSh1J0V4dGVuc2lvbicsdSdQcm9nSWRfJyx1J1knLE5vbmUsIE5vbmUsIHUnUHJvZ0lkJywxLHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBQcm9nSWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uLicsKSwKLSh1J01JTUUnLHUnQ0xTSUQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgQ0xTSUQuJywpLAotKHUnTUlNRScsdSdDb250ZW50VHlwZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnUHJpbWFyeSBrZXkuIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIuJywpLAotKHUnTUlNRScsdSdFeHRlbnNpb25fJyx1J04nLE5vbmUsIE5vbmUsIHUnRXh0ZW5zaW9uJywxLHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIGV4dGVuc2lvbiAod2l0aG91dCBkb3QpJywpLAotKHUnRmVhdHVyZUNvbXBvbmVudHMnLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIEZlYXR1cmUgdGFibGUuJywpLAotKHUnRmVhdHVyZUNvbXBvbmVudHMnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJywpLAotKHUnRmlsZVNGUENhdGFsb2cnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2F0YWxvZycsKSwKLSh1J0ZpbGVTRlBDYXRhbG9nJyx1J1NGUENhdGFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnU0ZQQ2F0YWxvZycsMSx1J0ZpbGVuYW1lJyxOb25lLCB1J0NhdGFsb2cgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlJywpLAotKHUnU0ZQQ2F0YWxvZycsdSdTRlBDYXRhbG9nJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnRmlsZSBuYW1lIGZvciB0aGUgY2F0YWxvZy4nLCksCi0odSdTRlBDYXRhbG9nJyx1J0NhdGFsb2cnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnU0ZQIENhdGFsb2cnLCksCi0odSdTRlBDYXRhbG9nJyx1J0RlcGVuZGVuY3knLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnUGFyZW50IGNhdGFsb2cgLSBvbmx5IHVzZWQgYnkgU0ZQJywpLAotKHUnRm9udCcsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZm9udCBmaWxlLicsKSwKLSh1J0ZvbnQnLHUnRm9udFRpdGxlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdGb250IG5hbWUuJywpLAotKHUnSW5pRmlsZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7MycsdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0nLCksCi0odSdJbmlGaWxlJyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSB3cml0dGVuLicsKSwKLSh1J0luaUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSAuSU5JIHZhbHVlLicsKSwKLSh1J0luaUZpbGUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUgaW4gd2hpY2ggdG8gd3JpdGUgdGhlIGluZm9ybWF0aW9uJywpLAotKHUnSW5pRmlsZScsdSdJbmlGaWxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdJbmlGaWxlJyx1J0RpclByb3BlcnR5Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLklOSSBmaWxlIGlzLicsKSwKLSh1J0luaUZpbGUnLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJywpLAotKHUnSW5pRmlsZScsdSdTZWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgU2VjdGlvbi4nLCksCi0odSdJbmlMb2NhdG9yJyx1J1R5cGUnLHUnWScsMCwyLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIC5JTkkgdmFsdWUgcmVhZCBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicsKSwKLSh1J0luaUxvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4nLCksCi0odSdJbmlMb2NhdG9yJyx1J0ZpbGVOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lLicsKSwKLSh1J0luaUxvY2F0b3InLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdLZXkgdmFsdWUgKGZvbGxvd2VkIGJ5IGFuIGVxdWFscyBzaWduIGluIElOSSBmaWxlKS4nLCksCi0odSdJbmlMb2NhdG9yJyx1J1NlY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1NlY3Rpb24gbmFtZSB3aXRoaW4gaW4gZmlsZSAod2l0aGluIHNxdWFyZSBicmFja2V0cyBpbiBJTkkgZmlsZSkuJywpLAotKHUnSW5pTG9jYXRvcicsdSdGaWVsZCcsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGZpZWxkIGluIHRoZSAuSU5JIGxpbmUuIElmIEZpZWxkIGlzIG51bGwgb3IgMCB0aGUgZW50aXJlIGxpbmUgaXMgcmVhZC4nLCksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnSXNvbGF0ZWRDb21wb25lbnQnLHUnQ29tcG9uZW50X0FwcGxpY2F0aW9uJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gZm9yIGFwcGxpY2F0aW9uJywpLAotKHUnSXNvbGF0ZWRDb21wb25lbnQnLHUnQ29tcG9uZW50X1NoYXJlZCcsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnS2V5IHRvIENvbXBvbmVudCB0YWJsZSBpdGVtIHRvIGJlIGlzb2xhdGVkJywpLAotKHUnTGF1bmNoQ29uZGl0aW9uJyx1J0Rlc2NyaXB0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0xvY2FsaXphYmxlIHRleHQgdG8gZGlzcGxheSB3aGVuIGNvbmRpdGlvbiBmYWlscyBhbmQgaW5zdGFsbCBtdXN0IGFib3J0LicsKSwKLSh1J0xhdW5jaENvbmRpdGlvbicsdSdDb25kaXRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnRXhwcmVzc2lvbiB3aGljaCBtdXN0IGV2YWx1YXRlIHRvIFRSVUUgaW4gb3JkZXIgZm9yIGluc3RhbGwgdG8gY29tbWVuY2UuJywpLAotKHUnTGlzdEJveCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJywpLAotKHUnTGlzdEJveCcsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGxpc3Rib3guJywpLAotKHUnTGlzdEJveCcsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uIFNlbGVjdGluZyB0aGUgbGluZSB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicsKSwKLSh1J0xpc3RCb3gnLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nLCksCi0odSdMaXN0VmlldycsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGxpc3R2aWV3LicsKSwKLSh1J0xpc3RWaWV3Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uIFNlbGVjdGluZyB0aGUgbGluZSB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J09yZGVyJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nLCksCi0odSdMaXN0VmlldycsdSdCaW5hcnlfJyx1J1knLE5vbmUsIE5vbmUsIHUnQmluYXJ5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgaWNvbiB0byBiZSBkaXNwbGF5ZWQgd2l0aCB0aGUgaWNvbi4gVGhlIGJpbmFyeSBpbmZvcm1hdGlvbiBpcyBsb29rZWQgdXAgZnJvbSB0aGUgQmluYXJ5IFRhYmxlLicsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdUYWJsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLHUnRGlyZWN0b3J5O0ZpbGU7UmVnaXN0cnknLHUnUmVmZXJlbmNlIHRvIGFub3RoZXIgdGFibGUgbmFtZScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdEb21haW4nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnRG9tYWluIG5hbWUgZm9yIHVzZXIgd2hvc2UgcGVybWlzc2lvbnMgYXJlIGJlaW5nIHNldC4gKHVzdWFsbHkgYSBwcm9wZXJ0eSknLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnTG9ja09iamVjdCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBSZWdpc3RyeSBvciBGaWxlIHRhYmxlJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J1Blcm1pc3Npb24nLHUnWScsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Blcm1pc3Npb24gQWNjZXNzIG1hc2suICBGdWxsIENvbnRyb2wgPSAyNjg0MzU0NTYgKEdFTkVSSUNfQUxMID0gMHgxMDAwMDAwMCknLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnVXNlcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdVc2VyIGZvciBwZXJtaXNzaW9ucyB0byBiZSBzZXQuICAodXN1YWxseSBhIHByb3BlcnR5KScsKSwKLSh1J01lZGlhJyx1J1NvdXJjZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Byb3BlcnR5JyxOb25lLCB1J1RoZSBwcm9wZXJ0eSBkZWZpbmluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhYmluZXQgZmlsZS4nLCksCi0odSdNZWRpYScsdSdDYWJpbmV0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ2FiaW5ldCcsTm9uZSwgdSdJZiBzb21lIG9yIGFsbCBvZiB0aGUgZmlsZXMgc3RvcmVkIG9uIHRoZSBtZWRpYSBhcmUgY29tcHJlc3NlZCBpbiBhIGNhYmluZXQsIHRoZSBuYW1lIG9mIHRoYXQgY2FiaW5ldC4nLCksCi0odSdNZWRpYScsdSdEaXNrSWQnLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBpbnRlZ2VyIHRvIGRldGVybWluZSBzb3J0IG9yZGVyIGZvciB0YWJsZS4nLCksCi0odSdNZWRpYScsdSdEaXNrUHJvbXB0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdEaXNrIG5hbWU6IHRoZSB2aXNpYmxlIHRleHQgYWN0dWFsbHkgcHJpbnRlZCBvbiB0aGUgZGlzay4gIFRoaXMgd2lsbCBiZSB1c2VkIHRvIHByb21wdCB0aGUgdXNlciB3aGVuIHRoaXMgZGlzayBuZWVkcyB0byBiZSBpbnNlcnRlZC4nLCksCi0odSdNZWRpYScsdSdMYXN0U2VxdWVuY2UnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGUgc2VxdWVuY2UgbnVtYmVyIGZvciB0aGUgbGFzdCBmaWxlIGZvciB0aGlzIG1lZGlhLicsKSwKLSh1J01lZGlhJyx1J1ZvbHVtZUxhYmVsJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbGFiZWwgYXR0cmlidXRlZCB0byB0aGUgdm9sdW1lLicsKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLHUnQ29tcG9uZW50Jyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdDb21wb25lbnQgY29udGFpbmVkIGluIHRoZSBtb2R1bGUuJywpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsdSdMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMixOb25lLCBOb25lLCB1J0RlZmF1bHQgbGFuZ3VhZ2UgSUQgZm9yIG1vZHVsZSAobWF5IGJlIGNoYW5nZWQgYnkgdHJhbnNmb3JtKS4nLCksCi0odSdNb2R1bGVDb21wb25lbnRzJyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdNb2R1bGUgY29udGFpbmluZyB0aGUgY29tcG9uZW50LicsKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsdSdMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQgZGVjaW1hbCBsYW5ndWFnZSBvZiBtb2R1bGUuJywpLAotKHUnTW9kdWxlU2lnbmF0dXJlJyx1J1ZlcnNpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJyxOb25lLCB1J1ZlcnNpb24gb2YgdGhlIG1vZHVsZS4nLCksCi0odSdNb2R1bGVTaWduYXR1cmUnLHUnTW9kdWxlSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J01vZHVsZSBpZGVudGlmaWVyIChTdHJpbmcuR1VJRCkuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdNb2R1bGVJRCcsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnTW9kdWxlIHJlcXVpcmluZyB0aGUgZGVwZW5kZW5jeS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J01vZHVsZUxhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywyLE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2Ugb2YgbW9kdWxlIHJlcXVpcmluZyB0aGUgZGVwZW5kZW5jeS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J1JlcXVpcmVkSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiByZXF1aXJlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdSZXF1aXJlZExhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2VJRCBvZiB0aGUgcmVxdWlyZWQgbW9kdWxlLicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnUmVxdWlyZWRWZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsTm9uZSwgdSdWZXJzaW9uIG9mIHRoZSByZXF1aXJlZCB2ZXJzaW9uLicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdNb2R1bGVJRCcsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdNb2R1bGVMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMixOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdFeGNsdWRlZElEJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgZXhjbHVkZWQgbW9kdWxlLicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdFeGNsdWRlZExhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2Ugb2YgZXhjbHVkZWQgbW9kdWxlLicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdFeGNsdWRlZE1heFZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJyxOb25lLCB1J01heGltdW0gdmVyc2lvbiBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkTWluVmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnTWluaW11bSB2ZXJzaW9uIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nLCksCi0odSdNb3ZlRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdJZiB0aGlzIGNvbXBvbmVudCBpcyBub3QgInNlbGVjdGVkIiBmb3IgaW5zdGFsbGF0aW9uIG9yIHJlbW92YWwsIG5vIGFjdGlvbiB3aWxsIGJlIHRha2VuIG9uIHRoZSBhc3NvY2lhdGVkIE1vdmVGaWxlIGVudHJ5JywpLAotKHUnTW92ZUZpbGUnLHUnRGVzdEZvbGRlcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnknLCksCi0odSdNb3ZlRmlsZScsdSdEZXN0TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J05hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIG9yaWdpbmFsIGZpbGUgYWZ0ZXIgaXQgaXMgbW92ZWQgb3IgY29waWVkLiAgSWYgYmxhbmssIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHdpbGwgYmUgZ2l2ZW4gdGhlIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlIGZpbGUnLCksCi0odSdNb3ZlRmlsZScsdSdGaWxlS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIE1vdmVGaWxlIHJlY29yZCcsKSwKLSh1J01vdmVGaWxlJyx1J09wdGlvbnMnLHUnTicsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBNb3ZlRmlsZSBvcGVyYXRpbmcgbW9kZSwgb25lIG9mIGltZm9FbnVtJywpLAotKHUnTW92ZUZpbGUnLHUnU291cmNlRm9sZGVyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnknLCksCi0odSdNb3ZlRmlsZScsdSdTb3VyY2VOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSJOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZShzKSB0byBiZSBtb3ZlZCBvciBjb3BpZWQuICBDYW4gY29udGFpbiB0aGUgJyonIG9yICc/JyB3aWxkY2FyZHMuIiwpLAotKHUnTXNpQXNzZW1ibHknLHUnQXR0cmlidXRlcycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Fzc2VtYmx5IGF0dHJpYnV0ZXMnLCksCi0odSdNc2lBc3NlbWJseScsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nLCksCi0odSdNc2lBc3NlbWJseScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdNc2lBc3NlbWJseScsdSdGaWxlX0FwcGxpY2F0aW9uJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlLCBkZW5vdGluZyB0aGUgYXBwbGljYXRpb24gY29udGV4dCBmb3IgcHJpdmF0ZSBhc3NlbWJsaWVzLiBOdWxsIGZvciBnbG9iYWwgYXNzZW1ibGllcy4nLCksCi0odSdNc2lBc3NlbWJseScsdSdGaWxlX01hbmlmZXN0Jyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGFzc2VtYmx5LicsKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbmFtZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nLCksCi0odSdNc2lBc3NlbWJseU5hbWUnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2YWx1ZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nLCksCi0odSdNc2lBc3NlbWJseU5hbWUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJywpLAotKHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJyx1J0NlcnREYXRhJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J0EgY2VydGlmaWNhdGUgY29udGV4dCBibG9iIGZvciBhIHNpZ25lciBjZXJ0aWZpY2F0ZScsKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsdSdEaWdpdGFsQ2VydGlmaWNhdGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByb3cnLCksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJyx1J1RhYmxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWVkaWEnLHUnUmVmZXJlbmNlIHRvIGFub3RoZXIgdGFibGUgbmFtZSAob25seSBNZWRpYSB0YWJsZSBpcyBzdXBwb3J0ZWQpJywpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsdSdEaWdpdGFsQ2VydGlmaWNhdGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSB0byBNc2lEaWdpdGFsQ2VydGlmaWNhdGUgdGFibGUgaWRlbnRpZnlpbmcgdGhlIHNpZ25lciBjZXJ0aWZpY2F0ZScsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnSGFzaCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdUaGUgZW5jb2RlZCBoYXNoIGJsb2IgZnJvbSB0aGUgZGlnaXRhbCBzaWduYXR1cmUnLCksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJyx1J1NpZ25PYmplY3QnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIE1lZGlhIHRhYmxlJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZpbGUgd2l0aCB0aGlzIGhhc2gnLCksCi0odSdNc2lGaWxlSGFzaCcsdSdPcHRpb25zJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWYXJpb3VzIG9wdGlvbnMgYW5kIGF0dHJpYnV0ZXMgZm9yIHRoaXMgaGFzaC4nLCksCi0odSdNc2lGaWxlSGFzaCcsdSdIYXNoUGFydDEnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnSGFzaFBhcnQyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0MycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lGaWxlSGFzaCcsdSdIYXNoUGFydDQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnTXNpUGF0Y2hIZWFkZXJzJyx1J1N0cmVhbVJlZicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkuIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByb3cuJywpLAotKHUnTXNpUGF0Y2hIZWFkZXJzJyx1J0hlYWRlcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicsKSwKLSh1J09EQkNBdHRyaWJ1dGUnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRyaXZlciBhdHRyaWJ1dGUnLCksCi0odSdPREJDQXR0cmlidXRlJyx1J0F0dHJpYnV0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTmFtZSBvZiBPREJDIGRyaXZlciBhdHRyaWJ1dGUnLCksCi0odSdPREJDQXR0cmlidXRlJyx1J0RyaXZlcl8nLHUnTicsTm9uZSwgTm9uZSwgdSdPREJDRHJpdmVyJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gT0RCQyBkcml2ZXIgaW4gT0RCQ0RyaXZlciB0YWJsZScsKSwKLSh1J09EQkNEcml2ZXInLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIGRyaXZlciwgbm9uLWxvY2FsaXplZCcsKSwKLSh1J09EQkNEcml2ZXInLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBmaWxlJywpLAotKHUnT0RCQ0RyaXZlcicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnLCksCi0odSdPREJDRHJpdmVyJyx1J0RyaXZlcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIGRyaXZlcicsKSwKLSh1J09EQkNEcml2ZXInLHUnRmlsZV9TZXR1cCcsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIHJlZmVyZW5jZSB0byBrZXkgZHJpdmVyIHNldHVwIERMTCcsKSwKLSh1J09EQkNEYXRhU291cmNlJyx1J0Rlc2NyaXB0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciBkYXRhIHNvdXJjZScsKSwKLSh1J09EQkNEYXRhU291cmNlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcsKSwKLSh1J09EQkNEYXRhU291cmNlJyx1J0RhdGFTb3VyY2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciBkYXRhIHNvdXJjZScsKSwKLSh1J09EQkNEYXRhU291cmNlJyx1J0RyaXZlckRlc2NyaXB0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdSZWZlcmVuY2UgdG8gZHJpdmVyIGRlc2NyaXB0aW9uLCBtYXkgYmUgZXhpc3RpbmcgZHJpdmVyJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnUmVnaXN0cmF0aW9uJyx1J04nLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ2lzdHJhdGlvbiBvcHRpb246IDA9bWFjaGluZSwgMT11c2VyLCBvdGhlcnMgdC5iLmQuJywpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVmFsdWUgZm9yIE9EQkMgZGF0YSBzb3VyY2UgYXR0cmlidXRlJywpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsdSdBdHRyaWJ1dGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J05hbWUgb2YgT0RCQyBkYXRhIHNvdXJjZSBhdHRyaWJ1dGUnLCksCi0odSdPREJDU291cmNlQXR0cmlidXRlJyx1J0RhdGFTb3VyY2VfJyx1J04nLE5vbmUsIE5vbmUsIHUnT0RCQ0RhdGFTb3VyY2UnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRhdGEgc291cmNlIGluIE9EQkNEYXRhU291cmNlIHRhYmxlJywpLAotKHUnT0RCQ1RyYW5zbGF0b3InLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIHRyYW5zbGF0b3InLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBmaWxlJywpLAotKHUnT0RCQ1RyYW5zbGF0b3InLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGFzc29jaWF0ZWQgY29tcG9uZW50JywpLAotKHUnT0RCQ1RyYW5zbGF0b3InLHUnRmlsZV9TZXR1cCcsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIHJlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBzZXR1cCBETEwnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdUcmFuc2xhdG9yJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgdHJhbnNsYXRvcicsKSwKLSh1J1BhdGNoJyx1J1NlcXVlbmNlJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcmltYXJ5IGtleSwgc2VxdWVuY2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBtZWRpYSBpbWFnZXM7IG9yZGVyIG11c3QgdHJhY2sgY2FiaW5ldCBvcmRlci4nLCksCi0odSdQYXRjaCcsdSdBdHRyaWJ1dGVzJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBwYXRjaCBhdHRyaWJ1dGVzJywpLAotKHUnUGF0Y2gnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLCBmb3JlaWduIGtleSB0byBGaWxlIHRhYmxlLCBtdXN0IG1hdGNoIGlkZW50aWZpZXIgaW4gY2FiaW5ldC4nLCksCi0odSdQYXRjaCcsdSdIZWFkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIHBhdGNoIGhlYWRlciwgdXNlZCBmb3IgcGF0Y2ggdmFsaWRhdGlvbi4nLCksCi0odSdQYXRjaCcsdSdQYXRjaFNpemUnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBwYXRjaCBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdQYXRjaCcsdSdTdHJlYW1SZWZfJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdJZGVudGlmaWVyLiBGb3JlaWduIGtleSB0byB0aGUgU3RyZWFtUmVmIGNvbHVtbiBvZiB0aGUgTXNpUGF0Y2hIZWFkZXJzIHRhYmxlLicsKSwKLSh1J1BhdGNoUGFja2FnZScsdSdNZWRpYV8nLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIERpc2tJZCBjb2x1bW4gb2YgTWVkaWEgdGFibGUuIEluZGljYXRlcyB0aGUgZGlzayBjb250YWluaW5nIHRoZSBwYXRjaCBwYWNrYWdlLicsKSwKLSh1J1BhdGNoUGFja2FnZScsdSdQYXRjaElkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdBIHVuaXF1ZSBzdHJpbmcgR1VJRCByZXByZXNlbnRpbmcgdGhpcyBwYXRjaC4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSB0YWJsZS4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J0NvbXBvbmVudElkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdBIHN0cmluZyBHVUlEIHRoYXQgcmVwcmVzZW50cyB0aGUgY29tcG9uZW50IGlkIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgYnkgdGhlIGFsaWVuIHByb2R1Y3QuJywpLAotKHUnUHVibGlzaENvbXBvbmVudCcsdSdBcHBEYXRhJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGlzIGlzIGxvY2FsaXNhYmxlIEFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUXVhbGlmaWVkIENvbXBvbmVudC4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J1F1YWxpZmllcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhpcyBpcyBkZWZpbmVkIG9ubHkgd2hlbiB0aGUgQ29tcG9uZW50SWQgY29sdW1uIGlzIGFuIFF1YWxpZmllZCBDb21wb25lbnQgSWQuIFRoaXMgaXMgdGhlIFF1YWxpZmllciBmb3IgUHJvdmlkZUNvbXBvbmVudEluZGlyZWN0LicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1knLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB2ZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSByYWRpbyBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZpc2libGUgdGl0bGUgdG8gYmUgYXNzaWduZWQgdG8gdGhlIHJhZGlvIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgcmFkaW8gYnV0dG9uLiBBbGwgdGhlIGJ1dHRvbnMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBncm91cC4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdIZWlnaHQnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdXaWR0aCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHdpZHRoIG9mIHRoZSBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnWCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnV0dG9uLiBTZWxlY3RpbmcgdGhlIGJ1dHRvbiB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J09yZGVyJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdIZWxwJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4nLCksCi0odSdSZWdpc3RyeScsdSdOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZWdpc3RyeScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ1BhdGgnLE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J1JlZ2lzdHJ5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdSZWdpc3RyeScsdSdSb290Jyx1J04nLC0xLDMsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bS4nLCksCi0odSdSZWdMb2NhdG9yJyx1J05hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJywpLAotKHUnUmVnTG9jYXRvcicsdSdUeXBlJyx1J1knLDAsMTgsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nLCksCi0odSdSZWdMb2NhdG9yJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuIElmIHRoZSB0eXBlIGlzIDAsIHRoZSByZWdpc3RyeSB2YWx1ZXMgcmVmZXJzIGEgZGlyZWN0b3J5LCBhbmQgX1NpZ25hdHVyZSBpcyBub3QgYSBmb3JlaWduIGtleS4nLCksCi0odSdSZWdMb2NhdG9yJyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ1BhdGgnLE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnUm9vdCcsdSdOJywwLDMsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bS4nLCksCi0odSdSZW1vdmVGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJywpLAotKHUnUmVtb3ZlRmlsZScsdSdGaWxlS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmaWxlIGVudHJ5JywpLAotKHUnUmVtb3ZlRmlsZScsdSdGaWxlTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpbGRDYXJkRmlsZW5hbWUnLE5vbmUsIHUnTmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicsKSwKLSh1J1JlbW92ZUZpbGUnLHUnRGlyUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gdGhlIGZvbGRlciBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicsKSwKLSh1J1JlbW92ZUZpbGUnLHUnSW5zdGFsbE1vZGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzI7MycsdSdJbnN0YWxsYXRpb24gb3B0aW9uLCBvbmUgb2YgaWltRW51bS4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzI7NCcsdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0uJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgZGVsZXRlZC4gVGhlIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gQWN0aW9uIGlzIGlpZkluaVJlbW92ZVRhZycsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgLklOSSB2YWx1ZS4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J0ZpbGVOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIGRlbGV0ZSB0aGUgaW5mb3JtYXRpb24nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J0RpclByb3BlcnR5Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLklOSSBmaWxlIGlzLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdTZWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgU2VjdGlvbi4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J1JlbW92ZUluaUZpbGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J05hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnUm9vdCcsdSdOJywtMSwzLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdSZW1vdmVSZWdpc3RyeScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVzZXJ2ZSBhIHNwZWNpZmllZCBhbW91bnQgb2Ygc3BhY2UgaWYgdGhpcyBjb21wb25lbnQgaXMgdG8gYmUgaW5zdGFsbGVkLicsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J1Jlc2VydmVGb2xkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnUmVzZXJ2ZUtleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBSZXNlcnZlQ29zdCByZWNvcmQnLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlTG9jYWwnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGlzayBzcGFjZSB0byByZXNlcnZlIGlmIGxpbmtlZCBjb21wb25lbnQgaXMgaW5zdGFsbGVkIGxvY2FsbHkuJywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnUmVzZXJ2ZVNvdXJjZScsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgdG8gcnVuIGZyb20gdGhlIHNvdXJjZSBsb2NhdGlvbi4nLCksCi0odSdTZWxmUmVnJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZC4nLCksCi0odSdTZWxmUmVnJyx1J0Nvc3QnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IG9mIHJlZ2lzdGVyaW5nIHRoZSBtb2R1bGUuJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdOYW1lIG9mIGEgc2VydmljZS4gLywgXFwsIGNvbW1hIGFuZCBzcGFjZSBhcmUgaW52YWxpZCcsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnRXZlbnQnLHUnTicsMCwxODcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaXQgZmllbGQ6ICBJbnN0YWxsOiAgMHgxID0gU3RhcnQsIDB4MiA9IFN0b3AsIDB4OCA9IERlbGV0ZSwgVW5pbnN0YWxsOiAweDEwID0gU3RhcnQsIDB4MjAgPSBTdG9wLCAweDgwID0gRGVsZXRlJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnU2VydmljZUNvbnRyb2wnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J0FyZ3VtZW50cycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBcmd1bWVudHMgZm9yIHRoZSBzZXJ2aWNlLiAgU2VwYXJhdGUgYnkgW35dLicsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J1dhaXQnLHUnWScsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQm9vbGVhbiBmb3Igd2hldGhlciB0byB3YWl0IGZvciB0aGUgc2VydmljZSB0byBmdWxseSBzdGFydCcsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnSW50ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdEZXNjcmlwdGlvbiBvZiBzZXJ2aWNlLicsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnQXJndW1lbnRzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0FyZ3VtZW50cyB0byBpbmNsdWRlIGluIGV2ZXJ5IHN0YXJ0IG9mIHRoZSBzZXJ2aWNlLCBwYXNzZWQgdG8gV2luTWFpbicsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1NlcnZpY2VJbnN0YWxsJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdEZXBlbmRlbmNpZXMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnT3RoZXIgc2VydmljZXMgdGhpcyBkZXBlbmRzIG9uIHRvIHN0YXJ0LiAgU2VwYXJhdGUgYnkgW35dLCBhbmQgZW5kIHdpdGggW35dW35dJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRGlzcGxheU5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnRXh0ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0Vycm9yQ29udHJvbCcsdSdOJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2V2ZXJpdHkgb2YgZXJyb3IgaWYgc2VydmljZSBmYWlscyB0byBzdGFydCcsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0xvYWRPcmRlckdyb3VwJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0xvYWRPcmRlckdyb3VwJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnUGFzc3dvcmQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUncGFzc3dvcmQgdG8gcnVuIHNlcnZpY2Ugd2l0aC4gICh3aXRoIFN0YXJ0TmFtZSknLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdTZXJ2aWNlVHlwZScsdSdOJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVHlwZSBvZiB0aGUgc2VydmljZScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1N0YXJ0TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdVc2VyIG9yIG9iamVjdCBuYW1lIHRvIHJ1biBzZXJ2aWNlIGFzJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU3RhcnRUeXBlJyx1J04nLDAsNCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTaG9ydGN1dCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIHNob3J0Y3V0IHRvIGJlIGNyZWF0ZWQuJywpLAotKHUnU2hvcnRjdXQnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSBkZW5vdGluZyB0aGUgY29tcG9uZW50IHdob3NlIHNlbGVjdGlvbiBnYXRlcyB0aGUgc2hvcnRjdXQgY3JlYXRpb24vZGVsZXRpb24uJywpLAotKHUnU2hvcnRjdXQnLHUnSWNvbl8nLHUnWScsTm9uZSwgTm9uZSwgdSdJY29uJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBleHRlcm5hbCBpY29uIGZpbGUgZm9yIHRoZSBzaG9ydGN1dC4nLCksCi0odSdTaG9ydGN1dCcsdSdJY29uSW5kZXgnLHUnWScsLTMyNzY3LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGljb24gaW5kZXggZm9yIHRoZSBzaG9ydGN1dC4nLCksCi0odSdTaG9ydGN1dCcsdSdEaXJlY3RvcnlfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2hvcnRjdXQgZmlsZSBpcyBjcmVhdGVkLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J1RhcmdldCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Nob3J0Y3V0JyxOb25lLCB1J1RoZSBzaG9ydGN1dCB0YXJnZXQuIFRoaXMgaXMgdXN1YWxseSBhIHByb3BlcnR5IHRoYXQgaXMgZXhwYW5kZWQgdG8gYSBmaWxlIG9yIGEgZm9sZGVyIHRoYXQgdGhlIHNob3J0Y3V0IHBvaW50cyB0by4nLCksCi0odSdTaG9ydGN1dCcsdSdBcmd1bWVudHMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRoZSBzaG9ydGN1dC4nLCksCi0odSdTaG9ydGN1dCcsdSdTaG9ydGN1dCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnU2hvcnRjdXQnLHUnSG90a2V5Jyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaG90a2V5IGZvciB0aGUgc2hvcnRjdXQuIEl0IGhhcyB0aGUgdmlydHVhbC1rZXkgY29kZSBmb3IgdGhlIGtleSBpbiB0aGUgbG93LW9yZGVyIGJ5dGUsIGFuZCB0aGUgbW9kaWZpZXIgZmxhZ3MgaW4gdGhlIGhpZ2gtb3JkZXIgYnl0ZS4gJywpLAotKHUnU2hvcnRjdXQnLHUnU2hvd0NtZCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzE7Mzs3Jyx1J1RoZSBzaG93IGNvbW1hbmQgZm9yIHRoZSBhcHBsaWNhdGlvbiB3aW5kb3cuVGhlIGZvbGxvd2luZyB2YWx1ZXMgbWF5IGJlIHVzZWQuJywpLAotKHUnU2hvcnRjdXQnLHUnV2tEaXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgcHJvcGVydHkgZGVmaW5pbmcgbG9jYXRpb24gb2Ygd29ya2luZyBkaXJlY3RvcnkuJywpLAotKHUnU2lnbmF0dXJlJyx1J0ZpbGVOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGZpbGUuIFRoaXMgbWF5IGNvbnRhaW4gYSAic2hvcnQgbmFtZXxsb25nIG5hbWUiIHBhaXIuJywpLAotKHUnU2lnbmF0dXJlJyx1J1NpZ25hdHVyZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZSByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdMYW5ndWFnZXMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsTm9uZSwgdSdUaGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWF4RGF0ZScsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNYXhTaXplJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZpbGUuICcsKSwKLSh1J1NpZ25hdHVyZScsdSdNYXhWZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWF4aW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNaW5EYXRlJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtaW5pbXVtIGNyZWF0aW9uIGRhdGUgb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01pblNpemUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWluVmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nLCksCi0odSdUZXh0U3R5bGUnLHUnVGV4dFN0eWxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBzdHlsZS4gVGhlIHByaW1hcnkga2V5IG9mIHRoaXMgdGFibGUuIFRoaXMgbmFtZSBpcyBlbWJlZGRlZCBpbiB0aGUgdGV4dHMgdG8gaW5kaWNhdGUgYSBzdHlsZSBjaGFuZ2UuJywpLAotKHUnVGV4dFN0eWxlJyx1J0NvbG9yJyx1J1knLDAsMTY3NzcyMTUsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGxvbmcgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb2xvciBvZiB0aGUgc3RyaW5nIGluIHRoZSBSR0IgZm9ybWF0IChSZWQsIEdyZWVuLCBCbHVlIGVhY2ggMC0yNTUsIFJHQiA9IFIgKyAyNTYqRyArIDI1Nl4yKkIpLicsKSwKLSh1J1RleHRTdHlsZScsdSdGYWNlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbmFtZSBvZiB0aGUgZm9udCB1c2VkLiBSZXF1aXJlZC4gVGhlIHN0cmluZyBtdXN0IGJlIGF0IG1vc3QgMzEgY2hhcmFjdGVycyBsb25nLicsKSwKLSh1J1RleHRTdHlsZScsdSdTaXplJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgc2l6ZSBvZiB0aGUgZm9udCB1c2VkLiBUaGlzIHNpemUgaXMgZ2l2ZW4gaW4gb3VyIHVuaXRzICgxLzEyIG9mIHRoZSBzeXN0ZW0gZm9udCBoZWlnaHQpLiBBc3N1bWluZyB0aGF0IHRoZSBzeXN0ZW0gZm9udCBpcyBzZXQgdG8gMTIgcG9pbnQgc2l6ZSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBwb2ludCBzaXplLicsKSwKLSh1J1RleHRTdHlsZScsdSdTdHlsZUJpdHMnLHUnWScsMCwxNSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgY29tYmluYXRpb24gb2Ygc3R5bGUgYml0cy4nLCksCi0odSdUeXBlTGliJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgTm9uZSwgKSwKLSh1J1R5cGVMaWInLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSB0eXBlIGxpYnJhcnkgdG8gYmUgb3BlcmF0aW9uYWwuJywpLAotKHUnVHlwZUxpYicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nLCksCi0odSdUeXBlTGliJyx1J0RpcmVjdG9yeV8nLHUnWScsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsLiBUaGUgZm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBwYXRoIHRvIHRoZSBoZWxwIGZpbGUgZm9yIHRoZSB0eXBlIGxpYnJhcnkuJywpLAotKHUnVHlwZUxpYicsdSdMYW5ndWFnZScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGxhbmd1YWdlIG9mIHRoZSBsaWJyYXJ5LicsKSwKLSh1J1R5cGVMaWInLHUnVmVyc2lvbicsdSdZJywwLDE2Nzc3MjE1LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuIFRoZSBtaW5vciB2ZXJzaW9uIGlzIGluIHRoZSBsb3dlciA4IGJpdHMgb2YgdGhlIGludGVnZXIuIFRoZSBtYWpvciB2ZXJzaW9uIGlzIGluIHRoZSBuZXh0IDE2IGJpdHMuICcsKSwKLSh1J1R5cGVMaWInLHUnQ29zdCcsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgY29zdCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgdHlwZWxpYi4gVGhpcyBjb2x1bW4gaXMgY3VycmVudGx5IG9wdGlvbmFsLicsKSwKLSh1J1R5cGVMaWInLHUnTGliSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J1RoZSBHVUlEIHRoYXQgcmVwcmVzZW50cyB0aGUgbGlicmFyeS4nLCksCi0odSdVSVRleHQnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGxvY2FsaXplZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuJywpLAotKHUnVUlUZXh0Jyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSB1bmlxdWUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgcGFydGljdWxhciBzdHJpbmcuJywpLAotKHUnVXBncmFkZScsdSdBdHRyaWJ1dGVzJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgcHJvZHVjdCBzZXQuJywpLAotKHUnVXBncmFkZScsdSdMYW5ndWFnZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJyxOb25lLCB1J0EgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIGZvciBlaXRoZXIgcHJvZHVjdHMgaW4gdGhpcyBzZXQgb3IgcHJvZHVjdHMgbm90IGluIHRoaXMgc2V0LicsKSwKLSh1J1VwZ3JhZGUnLHUnQWN0aW9uUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdVcHBlckNhc2UnLE5vbmUsIHUnVGhlIHByb3BlcnR5IHRvIHNldCB3aGVuIGEgcHJvZHVjdCBpbiB0aGlzIHNldCBpcyBmb3VuZC4nLCksCi0odSdVcGdyYWRlJyx1J1JlbW92ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgbGlzdCBvZiBmZWF0dXJlcyB0byByZW1vdmUgd2hlbiB1bmluc3RhbGxpbmcgYSBwcm9kdWN0IGZyb20gdGhpcyBzZXQuICBUaGUgZGVmYXVsdCBpcyAiQUxMIi4nLCksCi0odSdVcGdyYWRlJyx1J1VwZ3JhZGVDb2RlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdUaGUgVXBncmFkZUNvZGUgR1VJRCBiZWxvbmdpbmcgdG8gdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LicsKSwKLSh1J1VwZ3JhZGUnLHUnVmVyc2lvbk1heCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG1heGltdW0gUHJvZHVjdFZlcnNpb24gb2YgdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LiAgVGhlIHNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHByb2R1Y3RzIHdpdGggdGhpcyBwYXJ0aWN1bGFyIHZlcnNpb24uJywpLAotKHUnVXBncmFkZScsdSdWZXJzaW9uTWluJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWluaW11bSBQcm9kdWN0VmVyc2lvbiBvZiB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuICBUaGUgc2V0IG1heSBvciBtYXkgbm90IGluY2x1ZGUgcHJvZHVjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVyc2lvbi4nLCksCi0odSdWZXJiJyx1J1NlcXVlbmNlJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcmRlciB3aXRoaW4gdGhlIHZlcmJzIGZvciBhIHBhcnRpY3VsYXIgZXh0ZW5zaW9uLiBBbHNvIHVzZWQgc2ltcGx5IHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmVyYi4nLCksCi0odSdWZXJiJyx1J0FyZ3VtZW50Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J09wdGlvbmFsIHZhbHVlIGZvciB0aGUgY29tbWFuZCBhcmd1bWVudHMuJywpLAotKHUnVmVyYicsdSdFeHRlbnNpb25fJyx1J04nLE5vbmUsIE5vbmUsIHUnRXh0ZW5zaW9uJywxLHUnVGV4dCcsTm9uZSwgdSdUaGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUgcm93LicsKSwKLSh1J1ZlcmInLHUnVmVyYicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZlcmIgZm9yIHRoZSBjb21tYW5kLicsKSwKLSh1J1ZlcmInLHUnQ29tbWFuZCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgY29tbWFuZCB0ZXh0LicsKSwKLV0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9zZXF1ZW5jZS5weSBiL1Rvb2xzL21zaS9zZXF1ZW5jZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEzOGY3YS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvc2VxdWVuY2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotQWRtaW5FeGVjdXRlU2VxdWVuY2UgPSBbCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0luc3RhbGxBZG1pblBhY2thZ2UnLCBOb25lLCAzOTAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi1dCi0KLUFkbWluVUlTZXF1ZW5jZSA9IFsKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSh1J0ZhdGFsRXJyb3InLCBOb25lLCAtMyksCi0odSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLV0KLQotQWR2dEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCBOb25lLCA0NTAwKSwKLSh1J01zaVB1Ymxpc2hBc3NlbWJsaWVzJywgTm9uZSwgNjI1MCksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDYyMDApLAotKHUnUHVibGlzaEZlYXR1cmVzJywgTm9uZSwgNjMwMCksCi0odSdQdWJsaXNoUHJvZHVjdCcsIE5vbmUsIDY0MDApLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCA0NjAwKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDQ3MDApLAotKHUnUmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDQ5MDApLAotKHUnUmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgNDgwMCksCi1dCi0KLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UgPSBbCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCBOb25lLCA0NTAwKSwKLSh1J01zaVB1Ymxpc2hBc3NlbWJsaWVzJywgTm9uZSwgNjI1MCksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDYyMDApLAotKHUnUHVibGlzaEZlYXR1cmVzJywgTm9uZSwgNjMwMCksCi0odSdQdWJsaXNoUHJvZHVjdCcsIE5vbmUsIDY0MDApLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCA0NjAwKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDQ3MDApLAotKHUnUmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDQ5MDApLAotKHUnUmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgNDgwMCksCi0odSdBbGxvY2F0ZVJlZ2lzdHJ5U3BhY2UnLCB1J05PVCBJbnN0YWxsZWQnLCAxNTUwKSwKLSh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0odSdCaW5kSW1hZ2UnLCBOb25lLCA0MzAwKSwKLSh1J0NDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDUwMCksCi0odSdDcmVhdGVGb2xkZXJzJywgTm9uZSwgMzcwMCksCi0odSdEZWxldGVTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMjAwMCksCi0odSdEdXBsaWNhdGVGaWxlcycsIE5vbmUsIDQyMTApLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIE5vbmUsIDIwMCksCi0odSdJbnN0YWxsT0RCQycsIE5vbmUsIDU0MDApLAotKHUnSW5zdGFsbFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1ODAwKSwKLSh1J0lzb2xhdGVDb21wb25lbnRzJywgTm9uZSwgOTUwKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotKHUnTWlncmF0ZUZlYXR1cmVTdGF0ZXMnLCBOb25lLCAxMjAwKSwKLSh1J01vdmVGaWxlcycsIE5vbmUsIDM4MDApLAotKHUnUGF0Y2hGaWxlcycsIE5vbmUsIDQwOTApLAotKHUnUHJvY2Vzc0NvbXBvbmVudHMnLCBOb25lLCAxNjAwKSwKLSh1J1JlZ2lzdGVyQ29tUGx1cycsIE5vbmUsIDU3MDApLAotKHUnUmVnaXN0ZXJGb250cycsIE5vbmUsIDUzMDApLAotKHUnUmVnaXN0ZXJQcm9kdWN0JywgTm9uZSwgNjEwMCksCi0odSdSZWdpc3RlclR5cGVMaWJyYXJpZXMnLCBOb25lLCA1NTAwKSwKLSh1J1JlZ2lzdGVyVXNlcicsIE5vbmUsIDYwMDApLAotKHUnUmVtb3ZlRHVwbGljYXRlRmlsZXMnLCBOb25lLCAzNDAwKSwKLSh1J1JlbW92ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDMzMDApLAotKHUnUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cycsIE5vbmUsIDY3MDApLAotKHUnUmVtb3ZlRmlsZXMnLCBOb25lLCAzNTAwKSwKLSh1J1JlbW92ZUZvbGRlcnMnLCBOb25lLCAzNjAwKSwKLSh1J1JlbW92ZUluaVZhbHVlcycsIE5vbmUsIDMxMDApLAotKHUnUmVtb3ZlT0RCQycsIE5vbmUsIDI0MDApLAotKHUnUmVtb3ZlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCAyNjAwKSwKLSh1J1JlbW92ZVNob3J0Y3V0cycsIE5vbmUsIDMyMDApLAotKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotKHUnU2VsZlJlZ01vZHVsZXMnLCBOb25lLCA1NjAwKSwKLSh1J1NlbGZVbnJlZ01vZHVsZXMnLCBOb25lLCAyMjAwKSwKLSh1J1NldE9EQkNGb2xkZXJzJywgTm9uZSwgMTEwMCksCi0odSdTdGFydFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1OTAwKSwKLSh1J1N0b3BTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMTkwMCksCi0odSdNc2lVbnB1Ymxpc2hBc3NlbWJsaWVzJywgTm9uZSwgMTc1MCksCi0odSdVbnB1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgMTcwMCksCi0odSdVbnB1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDE4MDApLAotKHUnVW5yZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDI3MDApLAotKHUnVW5yZWdpc3RlckNvbVBsdXMnLCBOb25lLCAyMTAwKSwKLSh1J1VucmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgMjgwMCksCi0odSdVbnJlZ2lzdGVyRm9udHMnLCBOb25lLCAyNTAwKSwKLSh1J1VucmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDMwMDApLAotKHUnVW5yZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCAyOTAwKSwKLSh1J1VucmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgMjMwMCksCi0odSdWYWxpZGF0ZVByb2R1Y3RJRCcsIE5vbmUsIDcwMCksCi0odSdXcml0ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDUyMDApLAotKHUnV3JpdGVJbmlWYWx1ZXMnLCBOb25lLCA1MTAwKSwKLSh1J1dyaXRlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCA1MDAwKSwKLV0KLQotSW5zdGFsbFVJU2VxdWVuY2UgPSBbCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0V4ZWN1dGVBY3Rpb24nLCBOb25lLCAxMzAwKSwKLSh1J0V4aXREaWFsb2cnLCBOb25lLCAtMSksCi0odSdGYXRhbEVycm9yJywgTm9uZSwgLTMpLAotKHUnVXNlckV4aXQnLCBOb25lLCAtMiksCi0odSdBcHBTZWFyY2gnLCBOb25lLCA0MDApLAotKHUnQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNTAwKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotKHUnSXNvbGF0ZUNvbXBvbmVudHMnLCBOb25lLCA5NTApLAotKHUnTGF1bmNoQ29uZGl0aW9ucycsIE5vbmUsIDEwMCksCi0odSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIE5vbmUsIDEyMDApLAotKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotKHUnVmFsaWRhdGVQcm9kdWN0SUQnLCBOb25lLCA3MDApLAotXQotCi10YWJsZXM9WydBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsICdBZG1pblVJU2VxdWVuY2UnLCAnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsICdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJywgJ0luc3RhbGxVSVNlcXVlbmNlJ10KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53aXhwcm9qIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY2ZmMxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53aXhwcm9qCkBAIC0wLDAgKzEsNTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntEQjM1MDYwMC0xODZDLTRFNTItQkE5OC0yNkE3Q0VDQjA2N0Z9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT50Y2x0azwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDwhLS0gU2hvcnRjdXQgdmFsaWRhdGlvbiBpcyBub3QgbmVjZXNzYXJ5IC0tPgorICAgICAgICA8U3VwcHJlc3NJQ0VzPklDRTQzPC9TdXBwcmVzc0lDRXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19yZWcud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQodGNsdGtEaXIpYmluXCouZGxsIiBFeGNsdWRlPSIkKHRjbHRrRGlyKWJpblwqZy5kbGwiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JCh0Y2x0a0Rpcik8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGgudGNsdGspPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKHRjbHRrRGlyKWJpbjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPkRMTHNcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRjbHRrX2RsbHM8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKworICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQodGNsdGtEaXIpbGliXCoqXCoiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JCh0Y2x0a0Rpcik8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGgudGNsdGspPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKHRjbHRrRGlyKWxpYjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPnRjbFw8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+dGNsdGtfbGliPC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisKKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcdGtpbnRlclwqKlwqOyQoUHlTb3VyY2VQYXRoKUxpYlxpZGxlbGliXCoqXCo7JChQeVNvdXJjZVBhdGgpTGliXHR1cnRsZWRlbW9cKipcKiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcKipcKi5weWM7JChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHlvIj4KKyAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQoUHlTb3VyY2VQYXRoKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC5zcmMpPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aCk8L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+dGtpbnRlcl9saWI8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGsud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZWY1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGsud3hzCkBAIC0wLDAgKzEsNjMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlBZVEhPTl9FWEUiIFNlY3VyZT0ieWVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRTZWFyY2ggSWQ9IlB5dGhvbkV4ZSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlU2VhcmNoIE5hbWU9InB5dGhvbi5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudFNlYXJjaD4KKyAgICAgICAgPC9Qcm9wZXJ0eT4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUFlUSE9OV19FWEUiIFNlY3VyZT0ieWVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRTZWFyY2ggSWQ9IlB5dGhvbndFeGUiIEd1aWQ9IiQodmFyLlB5dGhvbndFeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGVTZWFyY2ggTmFtZT0icHl0aG9udy5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudFNlYXJjaD4KKyAgICAgICAgPC9Qcm9wZXJ0eT4KKyAgICAgICAgCisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9QeXRob24pIj5QWVRIT05fRVhFIGFuZCBQWVRIT05XX0VYRTwvQ29uZGl0aW9uPgorCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9leHRlbnNpb24iIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRjbHRrX2RsbHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRjbHRrX2xpYiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9saWIiIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iaWRsZV9yZWciIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV1cSWRsZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNMaWJfaWRsZWxpYl9pZGxlLnB5d10iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICA8RmVhdHVyZSBJZD0iQXNzb2NpYXRlRmlsZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfbGliIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJpZGxlX3JlZyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICA8RmVhdHVyZSBJZD0iU2hvcnRjdXRzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2xpYiIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iaWRsZV9zaG9ydGN1dCIgRGlyZWN0b3J5PSJNZW51RGlyIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV1cSWRsZVNob3J0Y3V0cyIgVHlwZT0iaW50ZWdlciIgVmFsdWU9IjEiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfTWVudURpciIgT249InVuaW5zdGFsbCIgLz4KKworICAgICAgICAgICAgICAgIDxTaG9ydGN1dCBJZD0iSURMRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5PSJNZW51RGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSIhKGxvYy5TaG9ydGN1dE5hbWUpIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuU2hvcnRjdXREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iW1BZVEhPTldfRVhFXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzPSciWyNMaWJfaWRsZWxpYl9pZGxlLnB5d10iJworICAgICAgICAgICAgICAgICAgICAgICAgICBJY29uPSJpZGxlLmV4ZSI+CisgICAgICAgICAgICAgICAgICAgIDxJY29uIElkPSJpZGxlLmV4ZSIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpTGliXGlkbGVsaWJcSWNvbnNcaWRsZS5pY28iIC8+CisgICAgICAgICAgICAgICAgPC9TaG9ydGN1dD4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5ZG9jLnB5IgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQ9IltQWVRIT05fRVhFXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzPSctbSBweWRvYyAtYicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuUHlEb2NTaG9ydGN1dE5hbWUpIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuUHlEb2NTaG9ydGN1dERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSWNvbj0iaWRsZS5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI2NjE5MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLndpeHByb2oKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0VEQTFGQTVBLUUyQUEtNEVBRi1CNDlCLTg3RDk4MUNEMEYxNn08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRjbHRrX2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJCh0Y2x0a0RpciliaW5cKmcuZGxsIj4KKyAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQodGNsdGtEaXIpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnRjbHRrKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JCh0Y2x0a0RpciliaW48L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz5ETExzXDwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50Y2x0a19kbGxzX2Q8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLnd4cyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjUwNDhmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud3hzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfZXh0ZW5zaW9uX2QiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRjbHRrX2RsbHNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwZmQ2MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTAsMCArMSwxMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+VGNsL1RrIFN1cHBvcnQ8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnRjbHRrPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9QeXRob24iPk5vICEobG9jLlByb2R1Y3ROYW1lKSBpbnN0YWxsYXRpb24gd2FzIGRldGVjdGVkLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+SURMRSAoUHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0ge3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+TGF1bmNoZXMgSURMRSwgdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50IGZvciAhKGxvYy5Qcm9kdWN0TmFtZSkuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHlEb2NTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19IE1vZHVsZSBEb2NzICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeURvY1Nob3J0Y3V0RGVzY3JpcHRpb24iPlN0YXJ0IHRoZSAhKGxvYy5Qcm9kdWN0TmFtZSkgZG9jdW1lbnRhdGlvbiBzZXJ2ZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRWRpdE1lbnUiPiZhbXA7RWRpdCB3aXRoIElETEU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJFZGl0U3ViTWVudSI+RWRpdCB3aXRoIElETEUge3tTaG9ydFZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19maWxlcy53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMWI0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZmlsZXMud3hzCkBAIC0wLDAgKzEsMzUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGtpbnRlcl9leHRlbnNpb24iPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXIucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlci5saWIiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXIubGliIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0a2ludGVyX2V4dGVuc2lvbl9zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlci5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0a2ludGVyX2V4dGVuc2lvbl9kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlcl9kLmxpYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlcl9kLmxpYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXJfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXJfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3MDc5OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MDIwNTNBRkEtMTgzMS00OTlBLUIzRUEtRDhCMjIzRDNDNDBEfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGNsdGtfcGRiPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWM2MmJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2V4dGVuc2lvbl9zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcmVnLnd4cyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19yZWcud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOTg5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcmVnLnd4cwpAQCAtMCwwICsxLDQ4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImlkbGVfcmVnIj4KKyAgICAgICAgICAgIDwhLS0gV2UgZml4IHRoZSBndWlkIG9mIHRoZSBTdWJjb21tYW5kcyBrZXkgc28gdGhhdCBpdCBpcyBjb3JyZWN0bHkgcmVmZXJlbmNlIGNvdW50ZWQgLS0+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJhc3NvY19zdWJjb21tYW5kcyIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7NTdENDdCNEMtOTZFNi00MEEwLUE5NTgtNTcwODNENzQ0MjNGfSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5WZXJzaW9uTlQgPiA2MDA8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlIiBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdE1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlIiBOYW1lPSJTdWJjb21tYW5kcyIgVmFsdWU9IiIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2Nfc3ViY29tbWFuZHNfbm9jb24iIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezA3MDYxRDg1LTkxNTEtNEZDNC1CQjc4LTEzNjI4MDIwRDAyNn0iPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID4gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlIiBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdE1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGUiIE5hbWU9IlN1YmNvbW1hbmRzIiBWYWx1ZT0iIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX2VkaXR3aXRoaWRsZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA+IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlXHNoZWxsXGVkaXQkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSQodmFyLlN1ZmZpeDMyKSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9Ik1VSVZlcmIiIFZhbHVlPSIhKGxvYy5FZGl0U3ViTWVudSkiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9ImNvbW1hbmQiIFZhbHVlPSciW1BZVEhPTldfRVhFXSIgLW0gaWRsZWxpYiAiJUwiICUqJyBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX25vY29uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID4gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZVxzaGVsbFxlZGl0JCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5TdWZmaXgzMikiPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdFN1Yk1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJjb21tYW5kIiBWYWx1ZT0nIltQWVRIT05XX0VYRV0iIC1tIGlkbGVsaWIgIiVMIiAlKicgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX3Zpc3RhIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID0gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGUkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSQodmFyLlN1ZmZpeDMyKSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFZhbHVlPSIhKGxvYy5FZGl0U3ViTWVudSkiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9ImNvbW1hbmQiIFZhbHVlPSciW1BZVEhPTldfRVhFXSIgLW0gaWRsZWxpYiAiJUwiICUqJyBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2NfZWRpdHdpdGhpZGxlX25vY29uX3Zpc3RhIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID0gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpJCh2YXIuU3VmZml4MzIpIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgVmFsdWU9IiEobG9jLkVkaXRTdWJNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iY29tbWFuZCIgVmFsdWU9JyJbUFlUSE9OV19FWEVdIiAtbSBpZGxlbGliICIlTCIgJSonIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdC53aXhwcm9qIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDdlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0LndpeHByb2oKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0RFMEI3Q0MyLTQzNTgtNDEzMS1CM0Y0LUMzMUM3RjJDRDQ2OH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0ZXN0X2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlx0ZXN0XCoqXCoiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZT0iJChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHljOyQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5byI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aCk8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRlc3RfcHk8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU0Nzc4NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzCkBAIC0wLDAgKzEsMTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfcHkiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2ogYi9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2IwNGJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezQxRjVBRThELTI0Q0QtNEQwMy1CRTc1LUFBNkY3RkFCNDA5N308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3RfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjVhZmRkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X2V4dGVuc2lvbnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9lbi1VUy53eGwgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjE1YzdhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9lbi1VUy53eGwKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5UZXN0IFN1aXRlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj50ZXN0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTmF0aXZlTW9kdWxlc1RpdGxlIj4hKGxvYy5GdWxsUHJvZHVjdE5hbWUpIG5hdGl2ZSBsaWJ0ZXN0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTmF0aXZlTW9kdWxlc0Rlc2NyaXB0aW9uIj4hKGxvYy5Qcm9kdWN0TmFtZSkgTmF0aXZlIFRlc3QgTW9kdWxlczwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDNhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwpAQCAtMCwwICsxLDc3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9ucyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGkucHlkIiBOYW1lPSJfdGVzdGNhcGkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIE5hbWU9Il9jdHlwZXNfdGVzdC5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5weWQiIE5hbWU9Il90ZXN0YnVmZmVyLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5wZGIiIE5hbWU9Il90ZXN0Y2FwaS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIE5hbWU9Il9jdHlwZXNfdGVzdC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXIucGRiIiBOYW1lPSJfdGVzdGJ1ZmZlci5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnNfZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgTmFtZT0iX3Rlc3RjYXBpX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0X2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5weWQiIE5hbWU9Il90ZXN0YnVmZmVyX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgTmFtZT0iX3Rlc3RjYXBpX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0X2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1ZjBlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezdDRjQ4QURELUNGQUEtNDk5Ri05QTA1LUJBMTg0NDBBMzM0NH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3RfcGRiPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0ZXN0X3BkYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MTBhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X2V4dGVuc2lvbnNfc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdCBiL1Rvb2xzL21zaS90ZXN0cmVsZWFzZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4OTU3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0cmVsZWFzZS5iYXQKQEAgLTAsMCArMSwxMTcgQEAKK0BzZXRsb2NhbCBlbmFibGVleHRlbnNpb25zDQorQGVjaG8gb2ZmDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lRCUuLlwuLlxQQ0J1aWxkXA0KKw0KK3NldCBUQVJHRVRESVI9JVRFTVAlDQorc2V0IFRFU1RYODY9DQorc2V0IFRFU1RYNjQ9DQorc2V0IFRFU1RBTExVU0VSPQ0KK3NldCBURVNUUEVSVVNFUj0NCisNCis6Q2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1oIiBnb3RvIEhlbHANCitpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBURVNUWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi14NjQiIChzZXQgVEVTVFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdCIgKHNldCBUQVJHRVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRhcmdldCIgKHNldCBUQVJHRVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItYSIgKHNldCBURVNUQUxMVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWFsbHVzZXIiIChzZXQgVEVTVEFMTFVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXAiIChzZXQgVEVTVFBFUlVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1wZXJ1c2VyIiAoc2V0IFRFU1RQRVJVU0VSPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgVEVTVFg4NiBpZiBub3QgZGVmaW5lZCBURVNUWDY0IChzZXQgVEVTVFg4Nj0xKSAmJiAoc2V0IFRFU1RYNjQ9MSkNCitpZiBub3QgZGVmaW5lZCBURVNUQUxMVVNFUiBpZiBub3QgZGVmaW5lZCBURVNUUEVSVVNFUiAoc2V0IFRFU1RBTExVU0VSPTEpICYmIChzZXQgVEVTVFBFUlVTRVI9MSkNCisNCisNCitpZiBkZWZpbmVkIFRFU1RYODYgKA0KKyAgICBmb3IgJSVmIGluICgiJVBDQlVJTEQld2luMzJcZW4tdXNcKi5leGUiKSBkbyAoDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RBTExVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtYWxsdXNlciIgIkluc3RhbGxBbGxVc2Vycz0xIENvbXBpbGVBbGw9MSINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RQRVJVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtcGVydXNlciIgIkluc3RhbGxBbGxVc2Vycz0wIENvbXBpbGVBbGw9MCINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICkNCispDQorDQoraWYgZGVmaW5lZCBURVNUWDY0ICgNCisgICAgZm9yICUlZiBpbiAoIiVQQ0JVSUxEJWFtZDY0XGVuLXVzXCouZXhlIikgZG8gKA0KKyAgICAgICAgaWYgZGVmaW5lZCBURVNUQUxMVVNFUiBjYWxsIDp0ZXN0ICIlJX5mZiIgIiVUQVJHRVRESVIlXCUlfm5mLWFsbHVzZXIiICJJbnN0YWxsQWxsVXNlcnM9MSBDb21waWxlQWxsPTEiDQorICAgICAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICAgICAgaWYgZGVmaW5lZCBURVNUUEVSVVNFUiBjYWxsIDp0ZXN0ICIlJX5mZiIgIiVUQVJHRVRESVIlXCUlfm5mLXBlcnVzZXIiICJJbnN0YWxsQWxsVXNlcnM9MCBDb21waWxlQWxsPTAiDQorICAgICAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICApDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzp0ZXN0DQorQHNldGxvY2FsDQorQGVjaG8gb24NCisNCitAaWYgbm90IGV4aXN0ICIlfjEiIGV4aXQgL0IgMQ0KKw0KK0BzZXQgRVhFPSV+MQ0KK0BpZiBub3QgIiVFWEU6ZW1iZWQ9JSI9PSIlRVhFJSIgZXhpdCAvQiAwDQorDQorQHNldCBFWElUQ09ERT0wDQorQGVjaG8gSW5zdGFsbGluZyAlMSBpbnRvICUyDQorIiV+MSIgL3Bhc3NpdmUgL2xvZyAiJX4yXGluc3RhbGxcbG9nLnR4dCIgVGFyZ2V0RGlyPSIlfjJcUHl0aG9uIiBJbmNsdWRlX2RlYnVnPTEgSW5jbHVkZV9zeW1ib2xzPTEgJX4zDQorDQorQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICBAZWNobyBQcmludGluZyB2ZXJzaW9uDQorICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1jICJpbXBvcnQgc3lzOyBwcmludChzeXMudmVyc2lvbikiID4gIiV+Mlx2ZXJzaW9uLnR4dCIgMj4mMQ0KKykNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIENhcHR1cmluZyBTdGFydCBNZW51DQorICAgIEBkaXIgL3MvYiAiJVBST0dSQU1EQVRBJVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zIiB8IGZpbmRzdHIgL2ljOiJweXRob24iID4gIiV+MlxzdGFydG1lbnUudHh0IiAyPiYxDQorICAgIEBkaXIgL3MvYiAiJUFQUERBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXMiIHwgZmluZHN0ciAvaWM6InB5dGhvbiIgID4+ICIlfjJcc3RhcnRtZW51LnR4dCIgMj4mMQ0KKw0KKyAgICBAZWNobyBDYXB0dXJpbmcgcmVnaXN0cnkNCisgICAgQGZvciAvRiAidXNlYmFja3EiICUlZiBpbiAoYHJlZyBxdWVyeSBIS0NSIC9zIC9mIHB5dGhvbiAva2ApIGRvIEAoDQorICAgICAgICBlY2hvICUlZiA+PiAiJX4yXGhrY3IudHh0Ig0KKyAgICAgICAgcmVnIHF1ZXJ5ICIlJWYiIC9zID4+ICIlfjJcaGtjci50eHQiIDI+JjENCisgICAgKQ0KKyAgICBAcmVnIHF1ZXJ5IEhLQ1VcU29mdHdhcmVcUHl0aG9uIC9zID4gIiV+Mlxoa2N1LnR4dCIgMj4mMQ0KKyAgICBAcmVnIHF1ZXJ5IEhLTE1cU29mdHdhcmVcUHl0aG9uIC9yZWc6MzIgL3MgPiAiJX4yXGhrbG0udHh0IiAyPiYxDQorICAgIEByZWcgcXVlcnkgSEtMTVxTb2Z0d2FyZVxQeXRob24gL3JlZzo2NCAvcyA+PiAiJX4yXGhrbG0udHh0IiAyPiYxDQorICAgIGNtZCAvayBleGl0IDANCispDQorDQorQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICBAZWNobyBJbnN0YWxsaW5nIHBhY2thZ2UNCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gcGlwIGluc3RhbGwgImF6dXJlPDAuMTAiID4gIiV+MlxwaXAudHh0IiAyPiYxDQorICAgIEBpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1tIHBpcCB1bmluc3RhbGwgLXkgYXp1cmUgcHl0aG9uLWRhdGV1dGlsIHNpeCA+PiAiJX4yXHBpcC50eHQiIDI+JjENCisgICAgKQ0KKykNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIFRlc3RpbmcgVGNsL3RrDQorICAgIEBzZXQgVENMX0xJQlJBUlk9JX4yXFB5dGhvblx0Y2xcdGNsOC42DQorICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1tIHRlc3QgLXVhbGwgLXYgdGVzdF90dGtfZ3Vpb25seSB0ZXN0X3RrIHRlc3RfaWRsZSA+ICIlfjJcdGNsdGsudHh0IiAyPiYxDQorICAgIEBzZXQgVENMX0xJQlJBUlk9DQorKQ0KKw0KK0BzZXQgRVhJVENPREU9JUVSUk9STEVWRUwlDQorDQorQGVjaG8gUmVzdWx0IHdhcyAlRVhJVENPREUlDQorQGVjaG8gUmVtb3ZpbmcgJTENCisiJX4xIiAvcGFzc2l2ZSAvdW5pbnN0YWxsIC9sb2cgIiV+Mlx1bmluc3RhbGxcbG9nLnR4dCINCisNCitAZWNobyBvZmYNCitleGl0IC9CICVFWElUQ09ERSUNCisNCis6SGVscA0KK2VjaG8gdGVzdHJlbGVhc2UuYmF0IFstLXRhcmdldCBUQVJHRVRdIFsteDg2XSBbLXg2NF0gWy0tYWxsdXNlcl0gWy0tcGVydXNlcl0gWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLXRhcmdldCAoLXQpICAgU3BlY2lmeSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbHMgYW5kIGxvZ3MNCitlY2hvICAgIC14ODYgICAgICAgICAgICBSdW4gdGVzdHMgZm9yIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgUnVuIHRlc3RzIGZvciB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1hbGx1c2VyICgtYSkgIFJ1biB0ZXN0cyBmb3IgYWxsLXVzZXIgaW5zdGFsbHMgKHJlcXVpcmVzIEFkbWluaXN0cmF0b3IpDQorZWNobyAgICAtLXBlcnVzZXIgKC1wKSAgUnVuIHRlc3RzIGZvciBwZXItdXNlciBpbnN0YWxscw0KK2VjaG8gICAgLWggICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQorZWNoby4NCitlY2hvIElmIG5vIHRlc3QgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmllZCwgYWxsIGFyY2hpdGVjdHVyZXMgd2lsbCBiZSB0ZXN0ZWQuDQorZWNobyBJZiBubyBpbnN0YWxsIHR5cGUgaXMgc2VsZWN0ZWQsIGFsbCBpbnN0YWxsIHR5cGVzIHdpbGwgYmUgdGVzdGVkLg0KK2VjaG8uDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2ogYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDNjZjMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezI0Q0JFQjk1LUJDMUUtNEVBOS1BRUE5LTMzODM0QkNDRDBFQ308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRvb2xzPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29scy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xzX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8VG9vbERpcmVjdG9yaWVzIEluY2x1ZGU9InNjcmlwdHM7aTE4bjtweW5jaGU7cHluY2hlXFg7ZGVtbyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xzY3JpcHRzXCoqXCoucHl3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGkxOG5cKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNccHluY2hlXCoqXCoudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xkZW1vXCoqXCoucHl3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNccGFyc2VyXCoqXCoucHkiPgorICAgICAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQoUHlTb3VyY2VQYXRoKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CisgICAgICAgICAgICAgICAgPEdyb3VwPnRvb2xzX3B5PC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjZkNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19weSIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfc2NyaXB0cyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS90b29scy90b29sc19lbi1VUy53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzODQxNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5VdGlsaXR5IFNjcmlwdHM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnRvb2xzPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZTBkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idG9vbHNfc2NyaXB0cyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJUb29sc19zY3JpcHRzXzJ0bzMucHkiIERpcmVjdG9yeT0iVG9vbHNfc2NyaXB0cyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9IlRvb2xzX3NjcmlwdHNfMnRvMy5weSIgTmFtZT0iMnRvMy5weSIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylUb29sc1xzY3JpcHRzXDJ0bzMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfcHlkb2MzLnB5IiBEaXJlY3Rvcnk9IlRvb2xzX3NjcmlwdHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJUb29sc19zY3JpcHRzX3B5ZG9jMy5weSIgTmFtZT0icHlkb2MzLnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNccHlkb2MzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJUb29sc19zY3JpcHRzX3B5dmVudi5weSIgRGlyZWN0b3J5PSJUb29sc19zY3JpcHRzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iVG9vbHNfc2NyaXB0c19weXZlbnYucHkiIE5hbWU9InB5dmVudi5weSIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylUb29sc1xzY3JpcHRzXHB5dmVudiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91aXNhbXBsZS5weSBiL1Rvb2xzL21zaS91aXNhbXBsZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQzMDgwNS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvdWlzYW1wbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAwICswLDAgQEAKLQotaW1wb3J0IG1zaWxpYixvcztkaXJuYW1lPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLUFkbWluRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0luc3RhbGxBZG1pblBhY2thZ2UnLCBOb25lLCAzOTAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotXQotCi1BZG1pblVJU2VxdWVuY2UgPSBbCi0odSdBZG1pbldlbGNvbWVEbGcnLCBOb25lLCAxMjMwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSh1J0ZhdGFsRXJyb3InLCBOb25lLCAtMyksCi0odSdQcmVwYXJlRGxnJywgTm9uZSwgMTQwKSwKLSh1J1Byb2dyZXNzRGxnJywgTm9uZSwgMTI4MCksCi0odSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLV0KLQotQWR2dEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCBOb25lLCA0NTAwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLV0KLQotQkJDb250cm9sID0gWwotXQotCi1CaWxsYm9hcmQgPSBbCi1dCi0KLUJpbmFyeSA9IFsKLSh1J2Jhbm5yYm1wJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiYmFubnJibXAuYmluIikpKSwKLSh1J2NvbXBsZXRpJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiY29tcGxldGkuYmluIikpKSwKLSh1J2N1c3RpY29uJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiY3VzdGljb24uYmluIikpKSwKLSh1J2RsZ2JtcCcsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImRsZ2JtcC5iaW4iKSkpLAotKHUnZXhjbGFtaWMnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJleGNsYW1pYy5iaW4iKSkpLAotKHUnaW5mbycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImluZm8uYmluIikpKSwKLSh1J2luc3RpY29uJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiaW5zdGljb24uYmluIikpKSwKLSh1J05ldycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIk5ldy5iaW4iKSkpLAotKHUncmVtb3ZpY28nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJyZW1vdmljby5iaW4iKSkpLAotKHUncmVwYWlyaWMnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJyZXBhaXJpYy5iaW4iKSkpLAotKHUnVXAnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJVcC5iaW4iKSkpLAotXQotCi1DaGVja0JveCA9IFsKLV0KLQotUHJvcGVydHkgPSBbCi0odSdCYW5uZXJCaXRtYXAnLCB1J2Jhbm5yYm1wJyksCi0odSdJQWdyZWUnLCB1J05vJyksCi0odSdQcm9kdWN0SUQnLCB1J25vbmUnKSwKLSh1J0FSUEhFTFBMSU5LJywgdSdodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vbWFuYWdlbWVudCcpLAotKHUnQnV0dG9uVGV4dF9CYWNrJywgdSc8ICZCYWNrJyksCi0odSdCdXR0b25UZXh0X0Jyb3dzZScsIHUnQnImb3dzZScpLAotKHUnQnV0dG9uVGV4dF9DYW5jZWwnLCB1J0NhbmNlbCcpLAotKHUnQnV0dG9uVGV4dF9FeGl0JywgdScmRXhpdCcpLAotKHUnQnV0dG9uVGV4dF9GaW5pc2gnLCB1JyZGaW5pc2gnKSwKLSh1J0J1dHRvblRleHRfSWdub3JlJywgdScmSWdub3JlJyksCi0odSdCdXR0b25UZXh0X0luc3RhbGwnLCB1JyZJbnN0YWxsJyksCi0odSdCdXR0b25UZXh0X05leHQnLCB1JyZOZXh0ID4nKSwKLSh1J0J1dHRvblRleHRfTm8nLCB1JyZObycpLAotKHUnQnV0dG9uVGV4dF9PSycsIHUnT0snKSwKLSh1J0J1dHRvblRleHRfUmVtb3ZlJywgdScmUmVtb3ZlJyksCi0odSdCdXR0b25UZXh0X1JlcGFpcicsIHUnJlJlcGFpcicpLAotKHUnQnV0dG9uVGV4dF9SZXNldCcsIHUnJlJlc2V0JyksCi0odSdCdXR0b25UZXh0X1Jlc3VtZScsIHUnJlJlc3VtZScpLAotKHUnQnV0dG9uVGV4dF9SZXRyeScsIHUnJlJldHJ5JyksCi0odSdCdXR0b25UZXh0X1JldHVybicsIHUnJlJldHVybicpLAotKHUnQnV0dG9uVGV4dF9ZZXMnLCB1JyZZZXMnKSwKLSh1J0NvbXBsZXRlU2V0dXBJY29uJywgdSdjb21wbGV0aScpLAotKHUnQ29tcG9uZW50RG93bmxvYWQnLCB1J2Z0cDovL2Fub255bW91c0BtaWNyb3NvZnQuY29tL2NvbXBvbmVudHMvJyksCi0odSdDdXN0b21TZXR1cEljb24nLCB1J2N1c3RpY29uJyksCi0odSdEZWZhdWx0VUlGb250JywgdSdEbGdGb250OCcpLAotKHUnRGlhbG9nQml0bWFwJywgdSdkbGdibXAnKSwKLSh1J0RsZ1RpdGxlRm9udCcsIHUneyZEbGdGb250Qm9sZDh9JyksCi0odSdFcnJvckRpYWxvZycsIHUnRXJyb3JEbGcnKSwKLSh1J0V4Y2xhbWF0aW9uSWNvbicsIHUnZXhjbGFtaWMnKSwKLSh1J0luZm9JY29uJywgdSdpbmZvJyksCi0odSdJbnN0YWxsZXJJY29uJywgdSdpbnN0aWNvbicpLAotKHUnSU5TVEFMTExFVkVMJywgdSczJyksCi0odSdJbnN0YWxsTW9kZScsIHUnVHlwaWNhbCcpLAotKHUnUElEVGVtcGxhdGUnLCB1JzEyMzQ1PCMjIy0lJSUlJSUlPkBAQEBAJyksCi0jKHUnUHJvZHVjdExhbmd1YWdlJywgdScxMDMzJyksCi0odSdQcm9ncmVzczEnLCB1J0luc3RhbGxpbmcnKSwKLSh1J1Byb2dyZXNzMicsIHUnaW5zdGFsbHMnKSwKLSh1J1BST01QVFJPTExCQUNLQ09TVCcsIHUnUCcpLAotKHUnUmVtb3ZlSWNvbicsIHUncmVtb3ZpY28nKSwKLSh1J1JlcGFpckljb24nLCB1J3JlcGFpcmljJyksCi0odSdTZXR1cCcsIHUnU2V0dXAnKSwKLSh1J1Nob3dVc2VyUmVnaXN0cmF0aW9uRGxnJywgdScxJyksCi0odSdXaXphcmQnLCB1J1NldHVwIFdpemFyZCcpLAotXQotCi1Db21ib0JveCA9IFsKLV0KLQotQ29udHJvbCA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBjcmVhdGUgYSBzZXJ2ZXIgaW1hZ2Ugb2YgW1Byb2R1Y3ROYW1lXSwgYXQgYSBzcGVjaWZpZWQgbmV0d29yayBsb2NhdGlvbi4gIENsaWNrIE5leHQgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9Q29tcGxldGluZyB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0ZpbmlzaCcsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnRmluaXNoJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9GaW5pc2hdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31bUHJvZHVjdE5hbWVdIFtXaXphcmRdIGVuZGVkIHByZW1hdHVyZWx5JywgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnRGVzY3JpcHRpb24xJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCA0MCwgMTk2NjExLCBOb25lLCB1J1tQcm9kdWN0TmFtZV0gc2V0dXAgZW5kZWQgcHJlbWF0dXJlbHkgYmVjYXVzZSBvZiBhbiBlcnJvci4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gIFRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLicsIE5vbmUsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnRGVzY3JpcHRpb24yJywgdSdUZXh0JywgMTM1LCAxMTUsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgW1dpemFyZF0gcHJlcGFyZXMgdG8gZ3VpZGUgeW91IHRocm91Z2ggdGhlIGluc3RhbGxhdGlvbi4nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25EYXRhJywgdSdUZXh0JywgMTM1LCAxMjUsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JywgMTM1LCAxMDAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDM1LCA2NSwgMzAwLCAyMCwgMywgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgW1dpemFyZF0gW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIFRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLicsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAyMCwgMTUsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0nLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JywgNzAsIDEwMCwgMjY1LCAxMCwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnUHJvZ3Jlc3NCYXInLCB1J1Byb2dyZXNzQmFyJywgMzUsIDExNSwgMzAwLCAxMCwgNjU1MzcsIE5vbmUsIHUnUHJvZ3Jlc3MgZG9uZScsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J1N0YXR1c0xhYmVsJywgdSdUZXh0JywgMzUsIDEwMCwgMzUsIDEwLCAzLCBOb25lLCB1J1N0YXR1czonLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9W1Byb2R1Y3ROYW1lXSBbV2l6YXJkXSB3YXMgaW50ZXJydXB0ZWQnLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnRmluaXNoJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9GaW5pc2hdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdEZXNjcmlwdGlvbjEnLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDQwLCAxOTY2MTEsIE5vbmUsIHUnW1Byb2R1Y3ROYW1lXSBzZXR1cCB3YXMgaW50ZXJydXB0ZWQuICBZb3VyIHN5c3RlbSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuICBUbyBpbnN0YWxsIHRoaXMgcHJvZ3JhbSBhdCBhIGxhdGVyIHRpbWUsIHBsZWFzZSBydW4gdGhlIGluc3RhbGxhdGlvbiBhZ2Fpbi4nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdEZXNjcmlwdGlvbjInLCB1J1RleHQnLCAxMzUsIDExNSwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J1VwJywgdSdQdXNoQnV0dG9uJywgMjk4LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J1VwJywgdSdOZXdGb2xkZXInLCB1J1VwIE9uZSBMZXZlbHwnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1BhdGhFZGl0JywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgODQsIDIwMiwgMjYxLCAxNywgMywgdSdUQVJHRVRESVInLCBOb25lLCB1J09LJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMjQwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdDb21ib0xhYmVsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ29tYm9MYWJlbCcsIHUnVGV4dCcsIDI1LCA1OCwgNDQsIDEwLCAzLCBOb25lLCB1JyZMb29rIGluOicsIHUnRGlyZWN0b3J5Q29tYm8nLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnRGlyZWN0b3J5Q29tYm8nLCA3MCwgNTUsIDIyMCwgODAsIDQ1ODc1NSwgdSdUQVJHRVRESVInLCBOb25lLCB1J1VwJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdCcm93c2UgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0RpcmVjdG9yeUxpc3QnLCB1J0RpcmVjdG9yeUxpc3QnLCAyNSwgODMsIDMyMCwgMTEwLCA3LCB1J1RBUkdFVERJUicsIE5vbmUsIHUnUGF0aExhYmVsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnUGF0aExhYmVsJywgdSdUZXh0JywgMjUsIDIwNSwgNTksIDEwLCAzLCBOb25lLCB1JyZGb2xkZXIgbmFtZTonLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J05ld0ZvbGRlcicsIHUnUHVzaEJ1dHRvbicsIDMyNSwgNTUsIDE5LCAxOSwgMzY3MDAxOSwgTm9uZSwgdSdOZXcnLCB1J0RpcmVjdG9yeUxpc3QnLCB1J0NyZWF0ZSBBIE5ldyBGb2xkZXJ8JyksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ2hhbmdlIGN1cnJlbnQgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA4MCwgMzIwLCAxMCwgMywgTm9uZSwgdScmRW50ZXIgYSBuZXcgbmV0d29yayBsb2NhdGlvbiBvciBjbGljayBCcm93c2UgdG8gYnJvd3NlIHRvIG9uZS4nLCB1J1BhdGhFZGl0JywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUZXh0JywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgMjUsIDkzLCAzMjAsIDE4LCAzLCB1J1RBUkdFVERJUicsIE5vbmUsIHUnQnJvd3NlJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBzcGVjaWZ5IGEgbmV0d29yayBsb2NhdGlvbiBmb3IgdGhlIHNlcnZlciBpbWFnZSBvZiBbUHJvZHVjdE5hbWVdIHByb2R1Y3QnLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1OZXR3b3JrIExvY2F0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQnJvd3NlJywgdSdQdXNoQnV0dG9uJywgMjg5LCAxMTksIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ccm93c2VdJywgdSdCYWNrJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2UgZW50ZXIgeW91ciBjb21wYW55IGluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ29tcGFueSBJbmZvcm1hdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCA2NTUzOSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIHUnVGV4dCcsIDQ1LCA3MSwgMjg1LCAzMCwgMywgTm9uZSwgdScmUGxlYXNlIGVudGVyIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pemF0aW9uIGluIHRoZSBib3ggYmVsb3cuICBUaGlzIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNvbXBhbnkgbmFtZSBmb3Igc3Vic2VxdWVudCBpbnN0YWxsYXRpb25zIG9mIFtQcm9kdWN0TmFtZV06JywgdSdPcmdhbml6YXRpb25FZGl0JywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlFZGl0JywgdSdNYXNrZWRFZGl0JywgNDUsIDE0MywgMjUwLCAxNiwgMywgdSdQSURLRVknLCB1J1tQSURUZW1wbGF0ZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUxhYmVsJywgdSdUZXh0JywgNDUsIDEzMCwgNTAsIDEwLCAzLCBOb25lLCB1J0NEICZLZXk6JywgdSdDREtleUVkaXQnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25FZGl0JywgdSdFZGl0JywgNDUsIDEwNSwgMjIwLCAxOCwgMywgdSdDT01QQU5ZTkFNRScsIHUnezgwfScsIHUnQ0RLZXlMYWJlbCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdVcCcsIHUnUHVzaEJ1dHRvbicsIDI5OCwgNTUsIDE5LCAxOSwgMzY3MDAxOSwgTm9uZSwgdSdVcCcsIHUnTmV3Rm9sZGVyJywgdSdVcCBPbmUgTGV2ZWx8JyksCi0odSdCcm93c2VEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgODQsIDIwMiwgMjYxLCAxOCwgMTEsIHUnX0Jyb3dzZVByb3BlcnR5JywgTm9uZSwgdSdPSycsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDI0MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQ29tYm9MYWJlbCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdDb21ib0xhYmVsJywgdSdUZXh0JywgMjUsIDU4LCA0NCwgMTAsIDMsIE5vbmUsIHUnJkxvb2sgaW46JywgdSdEaXJlY3RvcnlDb21ibycsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnRGlyZWN0b3J5Q29tYm8nLCA3MCwgNTUsIDIyMCwgODAsIDM5MzIyNywgdSdfQnJvd3NlUHJvcGVydHknLCBOb25lLCB1J1VwJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnQnJvd3NlIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXInLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnRGlyZWN0b3J5TGlzdCcsIDI1LCA4MywgMzIwLCAxMTAsIDE1LCB1J19Ccm93c2VQcm9wZXJ0eScsIE5vbmUsIHUnUGF0aExhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1BhdGhMYWJlbCcsIHUnVGV4dCcsIDI1LCAyMDUsIDU5LCAxMCwgMywgTm9uZSwgdScmRm9sZGVyIG5hbWU6JywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdQdXNoQnV0dG9uJywgMzI1LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J05ldycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnQ3JlYXRlIEEgTmV3IEZvbGRlcnwnKSwKLSh1J0Jyb3dzZURsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUNoYW5nZSBjdXJyZW50IGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQ2FuY2VsRGxnJywgdSdUZXh0JywgdSdUZXh0JywgNDgsIDE1LCAxOTQsIDMwLCAzLCBOb25lLCB1J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgW1Byb2R1Y3ROYW1lXSBpbnN0YWxsYXRpb24/JywgTm9uZSwgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J0ljb24nLCB1J0ljb24nLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgdSdbSW5mb0ljb25dJywgTm9uZSwgdSdJbmZvcm1hdGlvbiBpY29ufCcpLAotKHUnQ2FuY2VsRGxnJywgdSdObycsIHUnUHVzaEJ1dHRvbicsIDEzMiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCB1J1llcycsIE5vbmUpLAotKHUnQ2FuY2VsRGxnJywgdSdZZXMnLCB1J1B1c2hCdXR0b24nLCA3MiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9ZZXNdJywgdSdObycsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDU1LCAzMjAsIDIwLCAzLCBOb25lLCB1J0NsaWNrIG9uIHRoZSBpY29ucyBpbiB0aGUgdHJlZSBiZWxvdyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUcmVlJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdTZWxlY3QgdGhlIHdheSB5b3Ugd2FudCBmZWF0dXJlcyB0byBiZSBpbnN0YWxsZWQuJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUN1c3RvbSBTZXR1cCcsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjAwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQnJvd3NlXScsIHUnUmVzZXQnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnVHJlZScsIHUnU2VsZWN0aW9uVHJlZScsIDI1LCA4NSwgMTc1LCA5NSwgNywgdSdfQnJvd3NlUHJvcGVydHknLCB1J1RyZWUgb2Ygc2VsZWN0aW9ucycsIHUnQnJvd3NlJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JveCcsIHUnR3JvdXBCb3gnLCAyMTAsIDgxLCAxNDAsIDk4LCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1B1c2hCdXR0b24nLCA0MiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmVzZXRdJywgdSdEaXNrQ29zdCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdEaXNrQ29zdCcsIHUnUHVzaEJ1dHRvbicsIDExMSwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnRGlzayAmVXNhZ2UnLCB1J0JhY2snLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbURlc2NyaXB0aW9uJywgdSdUZXh0JywgMjE1LCA5MCwgMTMxLCAzMCwgMywgTm9uZSwgdSdNdWx0aWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtU2l6ZScsIHUnVGV4dCcsIDIxNSwgMTMwLCAxMzEsIDQ1LCAzLCBOb25lLCB1J1RoZSBzaXplIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1RleHQnLCA3NSwgMjAwLCAyMTUsIDIwLCAzLCBOb25lLCB1IjxUaGUgc2VsZWN0aW9uJ3MgcGF0aD4iLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb25MYWJlbCcsIHUnVGV4dCcsIDI1LCAyMDAsIDUwLCAxMCwgMywgTm9uZSwgdSdMb2NhdGlvbjonLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIChpZiBhbnkpIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J09LJywgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjAsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuJywgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRGlzayBTcGFjZSBSZXF1aXJlbWVudHMnLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdWb2x1bWVMaXN0JywgdSdWb2x1bWVDb3N0TGlzdCcsIDIwLCAxMDAsIDMzMCwgMTIwLCAzOTMyMjMsIE5vbmUsIHUnezEyMH17NzB9ezcwfXs3MH17NzB9JywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnWScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9ZZXNdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQycsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnRXJyb3JJY29uJywgdSdJY29uJywgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsIHUnW0luZm9JY29uXScsIE5vbmUsIHUnSW5mb3JtYXRpb24gaWNvbnwnKSwKLSh1J0Vycm9yRGxnJywgdSdFcnJvclRleHQnLCB1J1RleHQnLCA0OCwgMTUsIDIwNSwgNjAsIDMsIE5vbmUsIHUnSW5mb3JtYXRpb24gdGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J0knLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSWdub3JlXScsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J04nLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTm9dJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnTycsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9PS10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdSJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JldHJ5XScsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnVGV4dCcsIHUnVGV4dCcsIDIwLCA1NSwgMzMwLCAzMCwgMywgTm9uZSwgdSdUaGUgZm9sbG93aW5nIGFwcGxpY2F0aW9ucyBhcmUgdXNpbmcgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYnkgdGhpcyBzZXR1cC4gQ2xvc2UgdGhlc2UgYXBwbGljYXRpb25zIGFuZCB0aGVuIGNsaWNrIFJldHJ5IHRvIGNvbnRpbnVlIHRoZSBpbnN0YWxsYXRpb24gb3IgQ2FuY2VsIHRvIGV4aXQgaXQuJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1JldHJ5JywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjMsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdTb21lIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB1cGRhdGVkIGFyZSBjdXJyZW50bHkgaW4gdXNlLicsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRmlsZXMgaW4gVXNlJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdSZXRyeScsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmV0cnldJywgdSdJZ25vcmUnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0V4aXQnLCB1J1B1c2hCdXR0b24nLCAxNjYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0V4aXRdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0lnbm9yZScsIHUnUHVzaEJ1dHRvbicsIDIzNSwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSWdub3JlXScsIHUnRXhpdCcsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnTGlzdCcsIHUnTGlzdEJveCcsIDIwLCA4NywgMzMwLCAxMzAsIDcsIHUnRmlsZUluVXNlUHJvY2VzcycsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdBZ3JlZW1lbnRUZXh0JywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIHJlYWQgdGhlIGZvbGxvd2luZyBsaWNlbnNlIGFncmVlbWVudCBjYXJlZnVsbHknLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUVuZC1Vc2VyIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQWdyZWVtZW50VGV4dCcsIHUnU2Nyb2xsYWJsZVRleHQnLCAyMCwgNjAsIDMzMCwgMTIwLCA3LCBOb25lLCB1J3tcXHJ0ZjFcXGFuc2lcXGFuc2ljcGcxMjUyXFxkZWZmMFxcZGVmdGFiNzIwe1xcZm9udHRibHtcXGYwXFxmcm9tYW5cXGZwcnEyIFRpbWVzIE5ldyBSb21hbjt9fXtcXGNvbG9ydGJsXFxyZWQwXFxncmVlbjBcXGJsdWUwO30gXFxkZWZsYW5nMTAzM1xcaG9yemRvY3tcXCpcXGZjaGFycyB9e1xcKlxcbGNoYXJzIH1cXHBhcmRcXHBsYWluXFxmMFxcZnMyMCA8WW91ciBsaWNlbnNlIGFncmVlbWVudCBzaG91bGQgZ28gaGVyZS4+XFxwYXIgfScsIHUnQnV0dG9ucycsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQnV0dG9ucycsIHUnUmFkaW9CdXR0b25Hcm91cCcsIDIwLCAxODcsIDMzMCwgNDAsIDMsIHUnSUFncmVlJywgTm9uZSwgdSdCYWNrJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQ2hhbmdlTGFiZWwnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1NlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdSB3aXNoIHRvIHBlcmZvcm0uJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDI0MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU1vZGlmeSwgUmVwYWlyIG9yIFJlbW92ZSBpbnN0YWxsYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VMYWJlbCcsIHUnVGV4dCcsIDEwNSwgNjUsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mTW9kaWZ5JywgdSdDaGFuZ2VCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDY1LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0N1c3RvbVNldHVwSWNvbl0nLCB1J1JlcGFpckxhYmVsJywgdSdNb2RpZnkgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTE0LCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmUmcGFpcicsIHUnUmVwYWlyQnV0dG9uJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZVRleHQnLCB1J1RleHQnLCAxMDUsIDc4LCAyMzAsIDIwLCAzLCBOb25lLCB1J0FsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyBhcmUgaW5zdGFsbGVkLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTYzLCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW1JlbW92ZUljb25dJywgdSdCYWNrJywgdSdSZW1vdmUgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTYzLCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdJlJlbW92ZScsIHUnUmVtb3ZlQnV0dG9uJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZVRleHQnLCB1J1RleHQnLCAxMDUsIDE3NiwgMjMwLCAyMCwgMywgTm9uZSwgdSdSZW1vdmVzIFtQcm9kdWN0TmFtZV0gZnJvbSB5b3VyIGNvbXB1dGVyLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTE0LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW1JlcGFpckljb25dJywgdSdSZW1vdmVMYWJlbCcsIHUnUmVwYWlyIEluc3RhbGxhdGlvbnwnKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTI3LCAyMzAsIDMwLCAzLCBOb25lLCB1J1JlcGFpcnMgZXJyb3JzIGluIHRoZSBtb3N0IHJlY2VudCBpbnN0YWxsYXRpb24gc3RhdGUgLSBmaXhlcyBtaXNzaW5nIG9yIGNvcnJ1cHQgZmlsZXMsIHNob3J0Y3V0cyBhbmQgcmVnaXN0cnkgZW50cmllcy4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBhbGxvdyB5b3UgdG8gY2hhbmdlIHRoZSB3YXkgW1Byb2R1Y3ROYW1lXSBmZWF0dXJlcyBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgY29tcHV0ZXIgb3IgZXZlbiB0byByZW1vdmUgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuICBDbGljayBOZXh0IHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31XZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDIwLCA1MywgMzMwLCA0MCwgMywgTm9uZSwgdSdUaGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcyBkbyBub3QgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmVhdHVyZXMuICBZb3UgY2FuIGVpdGhlciByZW1vdmUgc29tZSBmaWxlcyBmcm9tIHRoZSBoaWdobGlnaHRlZCB2b2x1bWVzLCBvciBjaG9vc2UgdG8gaW5zdGFsbCBsZXNzIGZlYXR1cmVzIG9udG8gbG9jYWwgZHJpdmUocyksIG9yIHNlbGVjdCBkaWZmZXJlbnQgZGVzdGluYXRpb24gZHJpdmUocykuJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnT0snLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J0Rpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gZXhjZWVkcyBhdmFpbGFibGUgZGlzayBzcGFjZS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU91dCBvZiBEaXNrIFNwYWNlJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDEwMCwgMzMwLCAxMjAsIDM5MzIyMywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J05vJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjAsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdEaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIGV4Y2VlZHMgYXZhaWxhYmxlIGRpc2sgc3BhY2UuJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdT3V0IG9mIERpc2sgU3BhY2UnLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdObycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTm9dJywgdSdZZXMnLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdZZXMnLCB1J1B1c2hCdXR0b24nLCAyNDAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDE0MCwgMzMwLCA4MCwgNDU4NzUyNywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUZXh0MicsIHUnVGV4dCcsIDIwLCA5NCwgMzMwLCA0MCwgMywgTm9uZSwgdSJBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGNob29zZSB0byBkaXNhYmxlIHRoZSBpbnN0YWxsZXIncyByb2xsYmFjayBmdW5jdGlvbmFsaXR5LiAgVGhpcyBhbGxvd3MgdGhlIGluc3RhbGxlciB0byByZXN0b3JlIHlvdXIgY29tcHV0ZXIncyBvcmlnaW5hbCBzdGF0ZSBzaG91bGQgdGhlIGluc3RhbGxhdGlvbiBiZSBpbnRlcnJ1cHRlZCBpbiBhbnkgd2F5LiAgQ2xpY2sgWWVzIGlmIHlvdSB3aXNoIHRvIHRha2UgdGhlIHJpc2sgdG8gZGlzYWJsZSByb2xsYmFjay4iLCBOb25lLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIFtQcm9kdWN0TmFtZV0gb24geW91ciBjb21wdXRlci4gIENsaWNrIEluc3RhbGwgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVJlc3VtaW5nIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdJbnN0YWxsJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0luc3RhbGxdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUeXBpY2FsTGFiZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J0Nob29zZSB0aGUgc2V0dXAgdHlwZSB0aGF0IGJlc3Qgc3VpdHMgeW91ciBuZWVkcycsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DaG9vc2UgU2V0dXAgVHlwZScsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxMYWJlbCcsIHUnVGV4dCcsIDEwNSwgNjUsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mVHlwaWNhbCcsIHUnVHlwaWNhbEJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxNzEsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ29tcGxldGVTZXR1cEljb25dJywgdSdCYWNrJywgdSdDb21wbGV0ZSBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlTGFiZWwnLCB1J1RleHQnLCAxMDUsIDE3MSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XUMmb21wbGV0ZScsIHUnQ29tcGxldGVCdXR0b24nLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVUZXh0JywgdSdUZXh0JywgMTA1LCAxODQsIDIzMCwgMjAsIDMsIE5vbmUsIHUnQWxsIHByb2dyYW0gZmVhdHVyZXMgd2lsbCBiZSBpbnN0YWxsZWQuICAoUmVxdWlyZXMgbW9zdCBkaXNrIHNwYWNlKScsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21CdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTE4LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0N1c3RvbVNldHVwSWNvbl0nLCB1J0NvbXBsZXRlTGFiZWwnLCB1J0N1c3RvbSBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUxhYmVsJywgdSdUZXh0JywgMTA1LCAxMTgsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DJnVzdG9tJywgdSdDdXN0b21CdXR0b24nLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTMxLCAyMzAsIDMwLCAzLCBOb25lLCB1J0FsbG93cyB1c2VycyB0byBjaG9vc2Ugd2hpY2ggcHJvZ3JhbSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZCBhbmQgd2hlcmUgdGhleSB3aWxsIGJlIGluc3RhbGxlZC4gUmVjb21tZW5kZWQgZm9yIGFkdmFuY2VkIHVzZXJzLicsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDY1LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0luc3RhbGxlckljb25dJywgdSdDdXN0b21MYWJlbCcsIHUnVHlwaWNhbCBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxUZXh0JywgdSdUZXh0JywgMTA1LCA3OCwgMjMwLCAyMCwgMywgTm9uZSwgdSdJbnN0YWxscyB0aGUgbW9zdCBjb21tb24gcHJvZ3JhbSBmZWF0dXJlcy4gUmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlcnMuJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J05hbWVMYWJlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBlbnRlciB5b3VyIGN1c3RvbWVyIGluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DdXN0b21lciBJbmZvcm1hdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdUZXh0JywgNDUsIDExMCwgMTAwLCAxNSwgMywgTm9uZSwgdScmT3JnYW5pemF0aW9uOicsIHUnT3JnYW5pemF0aW9uRWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlFZGl0JywgdSdNYXNrZWRFZGl0JywgNDUsIDE1OSwgMjUwLCAxNiwgMywgdSdQSURLRVknLCB1J1tQSURUZW1wbGF0ZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0NES2V5TGFiZWwnLCB1J1RleHQnLCA0NSwgMTQ3LCA1MCwgMTAsIDMsIE5vbmUsIHUnQ0QgJktleTonLCB1J0NES2V5RWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnT3JnYW5pemF0aW9uRWRpdCcsIHUnRWRpdCcsIDQ1LCAxMjIsIDIyMCwgMTgsIDMsIHUnQ09NUEFOWU5BTUUnLCB1J3s4MH0nLCB1J0NES2V5TGFiZWwnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05hbWVMYWJlbCcsIHUnVGV4dCcsIDQ1LCA3MywgMTAwLCAxNSwgMywgTm9uZSwgdScmVXNlciBOYW1lOicsIHUnTmFtZUVkaXQnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05hbWVFZGl0JywgdSdFZGl0JywgNDUsIDg1LCAyMjAsIDE4LCAzLCB1J1VTRVJOQU1FJywgdSd7ODB9JywgdSdPcmdhbml6YXRpb25MYWJlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNzAsIDMyMCwgMjAsIDMsIE5vbmUsIHUnQ2xpY2sgSW5zdGFsbCB0byBiZWdpbiB0aGUgaW5zdGFsbGF0aW9uLiAgSWYgeW91IHdhbnQgdG8gcmV2aWV3IG9yIGNoYW5nZSBhbnkgb2YgeW91ciBpbnN0YWxsYXRpb24gc2V0dGluZ3MsIGNsaWNrIEJhY2suICBDbGljayBDYW5jZWwgdG8gZXhpdCB0aGUgd2l6YXJkLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gaXMgcmVhZHkgdG8gYmVnaW4gdGhlIFtJbnN0YWxsTW9kZV0gaW5zdGFsbGF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmVhZHkgdG8gSW5zdGFsbCcsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdJbnN0YWxsJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSW5zdGFsbF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDcwLCAzMjAsIDMwLCAzLCBOb25lLCB1J0NsaWNrIFJlbW92ZSB0byByZW1vdmUgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuICBJZiB5b3Ugd2FudCB0byByZXZpZXcgb3IgY2hhbmdlIGFueSBvZiB5b3VyIGluc3RhbGxhdGlvbiBzZXR0aW5ncywgY2xpY2sgQmFjay4gIENsaWNrIENhbmNlbCB0byBleGl0IHRoZSB3aXphcmQuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnWW91IGhhdmUgY2hvc2VuIHRvIHJlbW92ZSB0aGUgcHJvZ3JhbSBmcm9tIHlvdXIgY29tcHV0ZXIuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVJlbW92ZSBbUHJvZHVjdE5hbWVdJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdSZW1vdmUnLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZW1vdmVdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA3MCwgMzIwLCAzMCwgMywgTm9uZSwgdSdDbGljayBSZXBhaXIgdG8gcmVwYWlyIHRoZSBpbnN0YWxsYXRpb24gb2YgW1Byb2R1Y3ROYW1lXS4gIElmIHlvdSB3YW50IHRvIHJldmlldyBvciBjaGFuZ2UgYW55IG9mIHlvdXIgaW5zdGFsbGF0aW9uIHNldHRpbmdzLCBjbGljayBCYWNrLiAgQ2xpY2sgQ2FuY2VsIHRvIGV4aXQgdGhlIHdpemFyZC4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gaXMgcmVhZHkgdG8gYmVnaW4gdGhlIHJlcGFpciBvZiBbUHJvZHVjdE5hbWVdLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZXBhaXIgW1Byb2R1Y3ROYW1lXScsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnUmVwYWlyJywgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmVwYWlyXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDQ4LCAxNSwgMTk0LCAzMCwgMywgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgaW5zdGFsbGVyIGZpbmlzaGVzIGRldGVybWluaW5nIHlvdXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMuJywgTm9uZSwgTm9uZSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnSWNvbicsIHUnSWNvbicsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLCB1J1tFeGNsYW1hdGlvbkljb25dJywgTm9uZSwgdSdFeGNsYW1hdGlvbiBpY29ufCcpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J1JldHVybicsIHUnUHVzaEJ1dHRvbicsIDEwMiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXR1cm5dJywgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGluc3RhbGwgW1Byb2R1Y3ROYW1lXSBvbiB5b3VyIGNvbXB1dGVyLiAgQ2xpY2sgTmV4dCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi1dCi0KLUxpc3RCb3ggPSBbCi1dCi0KLUFjdGlvblRleHQgPSBbCi0odSdJbnN0YWxsVmFsaWRhdGUnLCB1J1ZhbGlkYXRpbmcgaW5zdGFsbCcsIE5vbmUpLAotKHUnSW5zdGFsbEZpbGVzJywgdSdDb3B5aW5nIG5ldyBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbOV0sICBTaXplOiBbNl0nKSwKLSh1J0luc3RhbGxBZG1pblBhY2thZ2UnLCB1J0NvcHlpbmcgbmV0d29yayBpbnN0YWxsIGZpbGVzJywgdSdGaWxlOiBbMV0sIERpcmVjdG9yeTogWzldLCBTaXplOiBbNl0nKSwKLSh1J0ZpbGVDb3N0JywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDb3N0SW5pdGlhbGl6ZScsIHUnQ29tcHV0aW5nIHNwYWNlIHJlcXVpcmVtZW50cycsIE5vbmUpLAotKHUnQ29zdEZpbmFsaXplJywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCB1J0NyZWF0aW5nIHNob3J0Y3V0cycsIHUnU2hvcnRjdXQ6IFsxXScpLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCB1J1B1Ymxpc2hpbmcgUXVhbGlmaWVkIENvbXBvbmVudHMnLCB1J0NvbXBvbmVudCBJRDogWzFdLCBRdWFsaWZpZXI6IFsyXScpLAotKHUnUHVibGlzaEZlYXR1cmVzJywgdSdQdWJsaXNoaW5nIFByb2R1Y3QgRmVhdHVyZXMnLCB1J0ZlYXR1cmU6IFsxXScpLAotKHUnUHVibGlzaFByb2R1Y3QnLCB1J1B1Ymxpc2hpbmcgcHJvZHVjdCBpbmZvcm1hdGlvbicsIE5vbmUpLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCB1J1JlZ2lzdGVyaW5nIENsYXNzIHNlcnZlcnMnLCB1J0NsYXNzIElkOiBbMV0nKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIHUnUmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIHNlcnZlcnMnLCB1J0V4dGVuc2lvbjogWzFdJyksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgdSdSZWdpc3RlcmluZyBNSU1FIGluZm8nLCB1J01JTUUgQ29udGVudCBUeXBlOiBbMV0sIEV4dGVuc2lvbjogWzJdJyksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCB1J1JlZ2lzdGVyaW5nIHByb2dyYW0gaWRlbnRpZmllcnMnLCB1J1Byb2dJZDogWzFdJyksCi0odSdBbGxvY2F0ZVJlZ2lzdHJ5U3BhY2UnLCB1J0FsbG9jYXRpbmcgcmVnaXN0cnkgc3BhY2UnLCB1J0ZyZWUgc3BhY2U6IFsxXScpLAotKHUnQXBwU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIGluc3RhbGxlZCBhcHBsaWNhdGlvbnMnLCB1J1Byb3BlcnR5OiBbMV0sIFNpZ25hdHVyZTogWzJdJyksCi0odSdCaW5kSW1hZ2UnLCB1J0JpbmRpbmcgZXhlY3V0YWJsZXMnLCB1J0ZpbGU6IFsxXScpLAotKHUnQ0NQU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIHF1YWxpZnlpbmcgcHJvZHVjdHMnLCBOb25lKSwKLSh1J0NyZWF0ZUZvbGRlcnMnLCB1J0NyZWF0aW5nIGZvbGRlcnMnLCB1J0ZvbGRlcjogWzFdJyksCi0odSdEZWxldGVTZXJ2aWNlcycsIHUnRGVsZXRpbmcgc2VydmljZXMnLCB1J1NlcnZpY2U6IFsxXScpLAotKHUnRHVwbGljYXRlRmlsZXMnLCB1J0NyZWF0aW5nIGR1cGxpY2F0ZSBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbOV0sICBTaXplOiBbNl0nKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCB1J1NlYXJjaGluZyBmb3IgcmVsYXRlZCBhcHBsaWNhdGlvbnMnLCB1J0ZvdW5kIGFwcGxpY2F0aW9uOiBbMV0nKSwKLSh1J0luc3RhbGxPREJDJywgdSdJbnN0YWxsaW5nIE9EQkMgY29tcG9uZW50cycsIE5vbmUpLAotKHUnSW5zdGFsbFNlcnZpY2VzJywgdSdJbnN0YWxsaW5nIG5ldyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzJdJyksCi0odSdMYXVuY2hDb25kaXRpb25zJywgdSdFdmFsdWF0aW5nIGxhdW5jaCBjb25kaXRpb25zJywgTm9uZSksCi0odSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIHUnTWlncmF0aW5nIGZlYXR1cmUgc3RhdGVzIGZyb20gcmVsYXRlZCBhcHBsaWNhdGlvbnMnLCB1J0FwcGxpY2F0aW9uOiBbMV0nKSwKLSh1J01vdmVGaWxlcycsIHUnTW92aW5nIGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnUGF0Y2hGaWxlcycsIHUnUGF0Y2hpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgIERpcmVjdG9yeTogWzJdLCAgU2l6ZTogWzNdJyksCi0odSdQcm9jZXNzQ29tcG9uZW50cycsIHUnVXBkYXRpbmcgY29tcG9uZW50IHJlZ2lzdHJhdGlvbicsIE5vbmUpLAotKHUnUmVnaXN0ZXJDb21QbHVzJywgdSdSZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9ucyBhbmQgQ29tcG9uZW50cycsIHUnQXBwSWQ6IFsxXXt7LCBBcHBUeXBlOiBbMl0sIFVzZXJzOiBbM10sIFJTTjogWzRdfX0nKSwKLSh1J1JlZ2lzdGVyRm9udHMnLCB1J1JlZ2lzdGVyaW5nIGZvbnRzJywgdSdGb250OiBbMV0nKSwKLSh1J1JlZ2lzdGVyUHJvZHVjdCcsIHUnUmVnaXN0ZXJpbmcgcHJvZHVjdCcsIHUnWzFdJyksCi0odSdSZWdpc3RlclR5cGVMaWJyYXJpZXMnLCB1J1JlZ2lzdGVyaW5nIHR5cGUgbGlicmFyaWVzJywgdSdMaWJJRDogWzFdJyksCi0odSdSZWdpc3RlclVzZXInLCB1J1JlZ2lzdGVyaW5nIHVzZXInLCB1J1sxXScpLAotKHUnUmVtb3ZlRHVwbGljYXRlRmlsZXMnLCB1J1JlbW92aW5nIGR1cGxpY2F0ZWQgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1JlbW92ZUVudmlyb25tZW50U3RyaW5ncycsIHUnVXBkYXRpbmcgZW52aXJvbm1lbnQgc3RyaW5ncycsIHUnTmFtZTogWzFdLCBWYWx1ZTogWzJdLCBBY3Rpb24gWzNdJyksCi0odSdSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzJywgdSdSZW1vdmluZyBhcHBsaWNhdGlvbnMnLCB1J0FwcGxpY2F0aW9uOiBbMV0sIENvbW1hbmQgbGluZTogWzJdJyksCi0odSdSZW1vdmVGaWxlcycsIHUnUmVtb3ZpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1JlbW92ZUZvbGRlcnMnLCB1J1JlbW92aW5nIGZvbGRlcnMnLCB1J0ZvbGRlcjogWzFdJyksCi0odSdSZW1vdmVJbmlWYWx1ZXMnLCB1J1JlbW92aW5nIElOSSBmaWxlcyBlbnRyaWVzJywgdSdGaWxlOiBbMV0sICBTZWN0aW9uOiBbMl0sICBLZXk6IFszXSwgVmFsdWU6IFs0XScpLAotKHUnUmVtb3ZlT0RCQycsIHUnUmVtb3ZpbmcgT0RCQyBjb21wb25lbnRzJywgTm9uZSksCi0odSdSZW1vdmVSZWdpc3RyeVZhbHVlcycsIHUnUmVtb3Zpbmcgc3lzdGVtIHJlZ2lzdHJ5IHZhbHVlcycsIHUnS2V5OiBbMV0sIE5hbWU6IFsyXScpLAotKHUnUmVtb3ZlU2hvcnRjdXRzJywgdSdSZW1vdmluZyBzaG9ydGN1dHMnLCB1J1Nob3J0Y3V0OiBbMV0nKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIHF1YWxpZnlpbmcgcHJvZHVjdHMnLCBOb25lKSwKLSh1J1NlbGZSZWdNb2R1bGVzJywgdSdSZWdpc3RlcmluZyBtb2R1bGVzJywgdSdGaWxlOiBbMV0sIEZvbGRlcjogWzJdJyksCi0odSdTZWxmVW5yZWdNb2R1bGVzJywgdSdVbnJlZ2lzdGVyaW5nIG1vZHVsZXMnLCB1J0ZpbGU6IFsxXSwgRm9sZGVyOiBbMl0nKSwKLSh1J1NldE9EQkNGb2xkZXJzJywgdSdJbml0aWFsaXppbmcgT0RCQyBkaXJlY3RvcmllcycsIE5vbmUpLAotKHUnU3RhcnRTZXJ2aWNlcycsIHUnU3RhcnRpbmcgc2VydmljZXMnLCB1J1NlcnZpY2U6IFsxXScpLAotKHUnU3RvcFNlcnZpY2VzJywgdSdTdG9wcGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdVbnB1Ymxpc2hDb21wb25lbnRzJywgdSdVbnB1Ymxpc2hpbmcgUXVhbGlmaWVkIENvbXBvbmVudHMnLCB1J0NvbXBvbmVudCBJRDogWzFdLCBRdWFsaWZpZXI6IFsyXScpLAotKHUnVW5wdWJsaXNoRmVhdHVyZXMnLCB1J1VucHVibGlzaGluZyBQcm9kdWN0IEZlYXR1cmVzJywgdSdGZWF0dXJlOiBbMV0nKSwKLSh1J1VucmVnaXN0ZXJDbGFzc0luZm8nLCB1J1VucmVnaXN0ZXIgQ2xhc3Mgc2VydmVycycsIHUnQ2xhc3MgSWQ6IFsxXScpLAotKHUnVW5yZWdpc3RlckNvbVBsdXMnLCB1J1VucmVnaXN0ZXJpbmcgQ09NKyBBcHBsaWNhdGlvbnMgYW5kIENvbXBvbmVudHMnLCB1J0FwcElkOiBbMV17eywgQXBwVHlwZTogWzJdfX0nKSwKLSh1J1VucmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgdSdVbnJlZ2lzdGVyaW5nIGV4dGVuc2lvbiBzZXJ2ZXJzJywgdSdFeHRlbnNpb246IFsxXScpLAotKHUnVW5yZWdpc3RlckZvbnRzJywgdSdVbnJlZ2lzdGVyaW5nIGZvbnRzJywgdSdGb250OiBbMV0nKSwKLSh1J1VucmVnaXN0ZXJNSU1FSW5mbycsIHUnVW5yZWdpc3RlcmluZyBNSU1FIGluZm8nLCB1J01JTUUgQ29udGVudCBUeXBlOiBbMV0sIEV4dGVuc2lvbjogWzJdJyksCi0odSdVbnJlZ2lzdGVyUHJvZ0lkSW5mbycsIHUnVW5yZWdpc3RlcmluZyBwcm9ncmFtIGlkZW50aWZpZXJzJywgdSdQcm9nSWQ6IFsxXScpLAotKHUnVW5yZWdpc3RlclR5cGVMaWJyYXJpZXMnLCB1J1VucmVnaXN0ZXJpbmcgdHlwZSBsaWJyYXJpZXMnLCB1J0xpYklEOiBbMV0nKSwKLSh1J1dyaXRlRW52aXJvbm1lbnRTdHJpbmdzJywgdSdVcGRhdGluZyBlbnZpcm9ubWVudCBzdHJpbmdzJywgdSdOYW1lOiBbMV0sIFZhbHVlOiBbMl0sIEFjdGlvbiBbM10nKSwKLSh1J1dyaXRlSW5pVmFsdWVzJywgdSdXcml0aW5nIElOSSBmaWxlcyB2YWx1ZXMnLCB1J0ZpbGU6IFsxXSwgIFNlY3Rpb246IFsyXSwgIEtleTogWzNdLCBWYWx1ZTogWzRdJyksCi0odSdXcml0ZVJlZ2lzdHJ5VmFsdWVzJywgdSdXcml0aW5nIHN5c3RlbSByZWdpc3RyeSB2YWx1ZXMnLCB1J0tleTogWzFdLCBOYW1lOiBbMl0sIFZhbHVlOiBbM10nKSwKLSh1J0FkdmVydGlzZScsIHUnQWR2ZXJ0aXNpbmcgYXBwbGljYXRpb24nLCBOb25lKSwKLSh1J0dlbmVyYXRlU2NyaXB0JywgdSdHZW5lcmF0aW5nIHNjcmlwdCBvcGVyYXRpb25zIGZvciBhY3Rpb246JywgdSdbMV0nKSwKLSh1J0luc3RhbGxTRlBDYXRhbG9nRmlsZScsIHUnSW5zdGFsbGluZyBzeXN0ZW0gY2F0YWxvZycsIHUnRmlsZTogWzFdLCAgRGVwZW5kZW5jaWVzOiBbMl0nKSwKLSh1J01zaVB1Ymxpc2hBc3NlbWJsaWVzJywgdSdQdWJsaXNoaW5nIGFzc2VtYmx5IGluZm9ybWF0aW9uJywgdSdBcHBsaWNhdGlvbiBDb250ZXh0OlsxXSwgQXNzZW1ibHkgTmFtZTpbMl0nKSwKLSh1J01zaVVucHVibGlzaEFzc2VtYmxpZXMnLCB1J1VucHVibGlzaGluZyBhc3NlbWJseSBpbmZvcm1hdGlvbicsIHUnQXBwbGljYXRpb24gQ29udGV4dDpbMV0sIEFzc2VtYmx5IE5hbWU6WzJdJyksCi0odSdSb2xsYmFjaycsIHUnUm9sbGluZyBiYWNrIGFjdGlvbjonLCB1J1sxXScpLAotKHUnUm9sbGJhY2tDbGVhbnVwJywgdSdSZW1vdmluZyBiYWNrdXAgZmlsZXMnLCB1J0ZpbGU6IFsxXScpLAotKHUnVW5tb3ZlRmlsZXMnLCB1J1JlbW92aW5nIG1vdmVkIGZpbGVzJywgdSdGaWxlOiBbMV0sIERpcmVjdG9yeTogWzldJyksCi0odSdVbnB1Ymxpc2hQcm9kdWN0JywgdSdVbnB1Ymxpc2hpbmcgcHJvZHVjdCBpbmZvcm1hdGlvbicsIE5vbmUpLAotXQotCi1Db250cm9sQ29uZGl0aW9uID0gWwotKHUnQ3VzdG9taXplRGxnJywgdSdCcm93c2UnLCB1J0hpZGUnLCB1J0luc3RhbGxlZCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uTGFiZWwnLCB1J0hpZGUnLCB1J0luc3RhbGxlZCcpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnRGlzYWJsZScsIHUnSUFncmVlIDw+ICJZZXMiJyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdFbmFibGUnLCB1J0lBZ3JlZSA9ICJZZXMiJyksCi1dCi0KLUNvbnRyb2xFdmVudCA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1JzEnLCAyKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnW0luc3RhbGxNb2RlXScsIHUnU2VydmVyIEltYWdlJywgdScxJywgMSksCi0odSdFeGl0RGlhbG9nJywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnRmluaXNoJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdVcCcsIHUnRGlyZWN0b3J5TGlzdFVwJywgdScwJywgdScxJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdSZXNldCcsIHUnMCcsIHUnMScsIDEpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J0RpcmVjdG9yeUxpc3ROZXcnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnVEFSR0VURElSJywgdScxJywgMSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J1NldFRhcmdldFBhdGgnLCB1J1RBUkdFVERJUicsIHUnMScsIDEpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCAyKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCcm93c2UnLCB1J1NwYXduRGlhbG9nJywgdSdBZG1pbkJyb3dzZURsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnQWRtaW5XZWxjb21lRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnUHJvZHVjdElEJywgMiksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnVmFsaWRhdGVQcm9kdWN0SUQnLCB1JzAnLCB1JzAnLCAxKSwKLSh1J0Jyb3dzZURsZycsIHUnVXAnLCB1J0RpcmVjdG9yeUxpc3RVcCcsIHUnMCcsIHUnMScsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1Jlc2V0JywgdScwJywgdScxJywgMSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0Jyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdEaXJlY3RvcnlMaXN0TmV3JywgdScwJywgdScxJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQnJvd3NlRGxnJywgdSdPSycsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnW19Ccm93c2VQcm9wZXJ0eV0nLCB1JzEnLCAxKSwKLSh1J0NhbmNlbERsZycsIHUnTm8nLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1llcycsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiQ2hhbmdlIicsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J1NldHVwVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiQ3VzdG9tIicsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnU2VsZWN0aW9uQnJvd3NlJywgdSdCcm93c2VEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1Jlc2V0JywgdScwJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdTcGF3bkRpYWxvZycsIHUnRGlza0Nvc3REbGcnLCB1JzEnLCAyKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdPSycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdZJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yWWVzJywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQScsIHUnRW5kRGlhbG9nJywgdSdFcnJvckFib3J0JywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQycsIHUnRW5kRGlhbG9nJywgdSdFcnJvckNhbmNlbCcsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J0knLCB1J0VuZERpYWxvZycsIHUnRXJyb3JJZ25vcmUnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdOJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yTm8nLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdPJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yT2snLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdSJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yUmV0cnknLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J1JldHJ5JywgdSdFbmREaWFsb2cnLCB1J1JldHJ5JywgdScxJywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdFeGl0JywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0lnbm9yZScsIHUnRW5kRGlhbG9nJywgdSdJZ25vcmUnLCB1JzEnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdXZWxjb21lRGxnJywgdScxJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J1NldHVwVHlwZURsZycsIHUnSUFncmVlID0gIlllcyIgQU5EIFNob3dVc2VyUmVnaXN0cmF0aW9uRGxnIDw+IDEnLCAzKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnSUFncmVlID0gIlllcyIgQU5EIFNob3dVc2VyUmVnaXN0cmF0aW9uRGxnID0gMScsIDEpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnU3Bhd25XYWl0RGlhbG9nJywgdSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnQ29zdGluZ0NvbXBsZXRlID0gMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J0N1c3RvbWl6ZURsZycsIHUnMScsIDQpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0NoYW5nZScsIHUnMScsIDEpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tQcm9ncmVzczFdJywgdSdDaGFuZ2luZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdjaGFuZ2VzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZW1vdmVEbGcnLCB1JzEnLCA0KSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdSZW1vdmUnLCB1JzEnLCAxKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbUHJvZ3Jlc3MxXScsIHUnUmVtb3ZpbmcnLCB1JzEnLCAyKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbUHJvZ3Jlc3MyXScsIHUncmVtb3ZlcycsIHUnMScsIDMpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVwYWlyRGxnJywgdScxJywgNCksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW0luc3RhbGxNb2RlXScsIHUnUmVwYWlyJywgdScxJywgMSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW1Byb2dyZXNzMV0nLCB1J1JlcGFpcmluZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdyZXBhaXJzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J05vJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdZZXMnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnMScsIDEpLAotKHUnUmVzdW1lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDQpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDIpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDYpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZSYkRpc2tEbGcnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgKFBST01QVFJPTExCQUNLQ09TVD0iUCIgT1IgTk9UIFBST01QVFJPTExCQUNLQ09TVCknLCAzKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnU3Bhd25XYWl0RGlhbG9nJywgdSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnQ29zdGluZ0NvbXBsZXRlID0gMScsIDEpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmFibGVSb2xsYmFjaycsIHUnRmFsc2UnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdTaG93VXNlclJlZ2lzdHJhdGlvbkRsZyA8PiAxJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPSAxJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgMyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdDb21wbGV0ZScsIHUnMScsIDEpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZUJ1dHRvbicsIHUnU2V0SW5zdGFsbExldmVsJywgdScxMDAwJywgdScxJywgMiksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdDdXN0b21pemVEbGcnLCB1JzEnLCAyKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdDdXN0b20nLCB1JzEnLCAxKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbEJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZWFkeURsZycsIHUnMScsIDMpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdUeXBpY2FsJywgdScxJywgMSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1NldEluc3RhbGxMZXZlbCcsIHUnMycsIHUnMScsIDIpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdQcm9kdWN0SUQnLCAzKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1ZhbGlkYXRlUHJvZHVjdElEJywgdScwJywgdScwJywgMSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMiksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnSW5zdGFsbE1vZGUgPSAiU2VydmVyIEltYWdlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnQ3VzdG9taXplRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDdXN0b20iIE9SIEluc3RhbGxNb2RlID0gIkNoYW5nZSInLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiUmVwYWlyIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJUeXBpY2FsIiBPUiBJbnN0YWxsTW9kZSA9ICJDb21wbGV0ZSInLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgMyksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAxKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDIpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1JlbW92ZScsIHUnQWxsJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDQpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMiksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mRGlza0RsZycsIHUnKE91dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMSkgT1IgKE91dE9mRGlza1NwYWNlID0gMSBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJGIiknLCA2KSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZSYkRpc2tEbGcnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgKFBST01QVFJPTExCQUNLQ09TVD0iUCIgT1IgTk9UIFBST01QVFJPTExCQUNLQ09TVCknLCAzKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdFbmFibGVSb2xsYmFjaycsIHUnRmFsc2UnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdNYWludGVuYW5jZVR5cGVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAzKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDcpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDQpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNiksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnUmVpbnN0YWxsJywgdSdBbGwnLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAyKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdSZWluc3RhbGxNb2RlJywgdSdlY211cycsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDEpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J1JldHVybicsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnMScsIE5vbmUpLAotXQotCi1EaWFsb2cgPSBbCi0odSdBZG1pbldlbGNvbWVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTmV4dCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdFeGl0RGlhbG9nJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0ZpbmlzaCcsIHUnRmluaXNoJywgdSdGaW5pc2gnKSwKLSh1J0ZhdGFsRXJyb3InLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnRmluaXNoJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcpLAotKHUnUHJlcGFyZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDEsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDYW5jZWwnLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdQcm9ncmVzc0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDEsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDYW5jZWwnLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdVc2VyRXhpdCcsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcsIHUnRmluaXNoJyksCi0odSdBZG1pbkJyb3dzZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdQYXRoRWRpdCcsIHUnT0snLCB1J0NhbmNlbCcpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVGV4dCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdCcm93c2VEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUGF0aEVkaXQnLCB1J09LJywgdSdDYW5jZWwnKSwKLSh1J0NhbmNlbERsZycsIDUwLCAxMCwgMjYwLCA4NSwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05vJywgdSdObycsIHUnTm8nKSwKLSh1J0N1c3RvbWl6ZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVHJlZScsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdEaXNrQ29zdERsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPSycsIHUnT0snLCB1J09LJyksCi0odSdFcnJvckRsZycsIDUwLCAxMCwgMjcwLCAxMDUsIDY1NTM5LCB1J0luc3RhbGxlciBJbmZvcm1hdGlvbicsIHUnRXJyb3JUZXh0JywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgNTAsIDUwLCAzNzAsIDI3MCwgMTksIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdSZXRyeScsIHUnUmV0cnknLCB1J1JldHJ5JyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIExpY2Vuc2UgQWdyZWVtZW50JywgdSdCdXR0b25zJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDaGFuZ2VMYWJlbCcsIHUnQ2hhbmdlQnV0dG9uJywgdSdDYW5jZWwnKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J091dE9mRGlza0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPSycsIHUnT0snLCB1J09LJyksCi0odSdPdXRPZlJiRGlza0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdObycsIHUnTm8nLCB1J05vJyksCi0odSdSZXN1bWVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnSW5zdGFsbCcsIHUnSW5zdGFsbCcsIHUnQ2FuY2VsJyksCi0odSdTZXR1cFR5cGVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVHlwaWNhbExhYmVsJywgdSdUeXBpY2FsQnV0dG9uJywgdSdDYW5jZWwnKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTmFtZUxhYmVsJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdJbnN0YWxsJywgdSdJbnN0YWxsJywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnQmFjaycsIHUnQmFjaycsIHUnQ2FuY2VsJyksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzNSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1JlcGFpcicsIHUnUmVwYWlyJywgdSdDYW5jZWwnKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgNTAsIDEwLCAyNjAsIDg1LCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUmV0dXJuJywgdSdSZXR1cm4nLCB1J1JldHVybicpLAotKHUnV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLV0KLQotRXZlbnRNYXBwaW5nID0gWwotKHUnUHJlcGFyZURsZycsIHUnQWN0aW9uRGF0YScsIHUnQWN0aW9uRGF0YScsIHUnVGV4dCcpLAotKHUnUHJlcGFyZURsZycsIHUnQWN0aW9uVGV4dCcsIHUnQWN0aW9uVGV4dCcsIHUnVGV4dCcpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0FjdGlvblRleHQnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdQcm9ncmVzc0JhcicsIHUnU2V0UHJvZ3Jlc3MnLCB1J1Byb2dyZXNzJyksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGlyZWN0b3J5Q29tYm8nLCB1J0lnbm9yZUNoYW5nZScsIHUnSWdub3JlQ2hhbmdlJyksCi0odSdCcm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdJZ25vcmVDaGFuZ2UnLCB1J0lnbm9yZUNoYW5nZScpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J1Jlc2V0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0l0ZW1EZXNjcmlwdGlvbicsIHUnU2VsZWN0aW9uRGVzY3JpcHRpb24nLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbVNpemUnLCB1J1NlbGVjdGlvblNpemUnLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1NlbGVjdGlvblBhdGgnLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1NlbGVjdGlvblBhdGhPbicsIHUnVmlzaWJsZScpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbkxhYmVsJywgdSdTZWxlY3Rpb25QYXRoT24nLCB1J1Zpc2libGUnKSwKLV0KLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnSW5zdGFsbEZpbGVzJywgTm9uZSwgNDAwMCksCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotKHUnVmFsaWRhdGVQcm9kdWN0SUQnLCBOb25lLCA3MDApLAotKHUnQWxsb2NhdGVSZWdpc3RyeVNwYWNlJywgdSdOT1QgSW5zdGFsbGVkJywgMTU1MCksCi0odSdBcHBTZWFyY2gnLCBOb25lLCA0MDApLAotKHUnQmluZEltYWdlJywgTm9uZSwgNDMwMCksCi0odSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotKHUnQ3JlYXRlRm9sZGVycycsIE5vbmUsIDM3MDApLAotKHUnRGVsZXRlU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDIwMDApLAotKHUnRHVwbGljYXRlRmlsZXMnLCBOb25lLCA0MjEwKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotKHUnSW5zdGFsbE9EQkMnLCBOb25lLCA1NDAwKSwKLSh1J0luc3RhbGxTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTgwMCksCi0odSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0odSdNb3ZlRmlsZXMnLCBOb25lLCAzODAwKSwKLSh1J1BhdGNoRmlsZXMnLCBOb25lLCA0MDkwKSwKLSh1J1Byb2Nlc3NDb21wb25lbnRzJywgTm9uZSwgMTYwMCksCi0odSdSZWdpc3RlckNvbVBsdXMnLCBOb25lLCA1NzAwKSwKLSh1J1JlZ2lzdGVyRm9udHMnLCBOb25lLCA1MzAwKSwKLSh1J1JlZ2lzdGVyUHJvZHVjdCcsIE5vbmUsIDYxMDApLAotKHUnUmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgNTUwMCksCi0odSdSZWdpc3RlclVzZXInLCBOb25lLCA2MDAwKSwKLSh1J1JlbW92ZUR1cGxpY2F0ZUZpbGVzJywgTm9uZSwgMzQwMCksCi0odSdSZW1vdmVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCAzMzAwKSwKLSh1J1JlbW92ZUV4aXN0aW5nUHJvZHVjdHMnLCBOb25lLCA2NzAwKSwKLSh1J1JlbW92ZUZpbGVzJywgTm9uZSwgMzUwMCksCi0odSdSZW1vdmVGb2xkZXJzJywgTm9uZSwgMzYwMCksCi0odSdSZW1vdmVJbmlWYWx1ZXMnLCBOb25lLCAzMTAwKSwKLSh1J1JlbW92ZU9EQkMnLCBOb25lLCAyNDAwKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgMjYwMCksCi0odSdSZW1vdmVTaG9ydGN1dHMnLCBOb25lLCAzMjAwKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLSh1J1NlbGZSZWdNb2R1bGVzJywgTm9uZSwgNTYwMCksCi0odSdTZWxmVW5yZWdNb2R1bGVzJywgTm9uZSwgMjIwMCksCi0odSdTZXRPREJDRm9sZGVycycsIE5vbmUsIDExMDApLAotKHUnU3RhcnRTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTkwMCksCi0odSdTdG9wU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDE5MDApLAotKHUnVW5wdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDE3MDApLAotKHUnVW5wdWJsaXNoRmVhdHVyZXMnLCBOb25lLCAxODAwKSwKLSh1J1VucmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCAyNzAwKSwKLSh1J1VucmVnaXN0ZXJDb21QbHVzJywgTm9uZSwgMjEwMCksCi0odSdVbnJlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDI4MDApLAotKHUnVW5yZWdpc3RlckZvbnRzJywgTm9uZSwgMjUwMCksCi0odSdVbnJlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCAzMDAwKSwKLSh1J1VucmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgMjkwMCksCi0odSdVbnJlZ2lzdGVyVHlwZUxpYnJhcmllcycsIE5vbmUsIDIzMDApLAotKHUnV3JpdGVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCA1MjAwKSwKLSh1J1dyaXRlSW5pVmFsdWVzJywgTm9uZSwgNTEwMCksCi0odSdXcml0ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgNTAwMCksCi1dCi0KLUluc3RhbGxVSVNlcXVlbmNlID0gWwotIyh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSModSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0jKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0jKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotIyh1J0V4aXREaWFsb2cnLCBOb25lLCAtMSksCi0jKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1ByZXBhcmVEbGcnLCBOb25lLCAxNDApLAotKHUnUHJvZ3Jlc3NEbGcnLCBOb25lLCAxMjgwKSwKLSModSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnSW5zdGFsbGVkIEFORCBOT1QgUkVTVU1FIEFORCBOT1QgUHJlc2VsZWN0ZWQnLCAxMjUwKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbGVkIEFORCAoUkVTVU1FIE9SIFByZXNlbGVjdGVkKScsIDEyNDApLAotKHUnV2VsY29tZURsZycsIHUnTk9UIEluc3RhbGxlZCcsIDEyMzApLAotIyh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0jKHUnQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNTAwKSwKLSModSdGaW5kUmVsYXRlZFByb2R1Y3RzJywgTm9uZSwgMjAwKSwKLSModSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSModSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIE5vbmUsIDEyMDApLAotIyh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLV0KLQotTGlzdFZpZXcgPSBbCi1dCi0KLVJhZGlvQnV0dG9uID0gWwotKHUnSUFncmVlJywgMSwgdSdZZXMnLCA1LCAwLCAyNTAsIDE1LCB1J3tcXERsZ0ZvbnQ4fUkgJmFjY2VwdCB0aGUgdGVybXMgaW4gdGhlIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSksCi0odSdJQWdyZWUnLCAyLCB1J05vJywgNSwgMjAsIDI1MCwgMTUsIHUne1xcRGxnRm9udDh9SSAmZG8gbm90IGFjY2VwdCB0aGUgdGVybXMgaW4gdGhlIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSksCi1dCi0KLVRleHRTdHlsZSA9IFsKLSh1J0RsZ0ZvbnQ4JywgdSdUYWhvbWEnLCA4LCBOb25lLCAwKSwKLSh1J0RsZ0ZvbnRCb2xkOCcsIHUnVGFob21hJywgOCwgTm9uZSwgMSksCi0odSdWZXJkYW5hQm9sZDEzJywgdSdWZXJkYW5hJywgMTMsIE5vbmUsIDEpLAotXQotCi1VSVRleHQgPSBbCi0odSdBYnNlbnRQYXRoJywgTm9uZSksCi0odSdieXRlcycsIHUnYnl0ZXMnKSwKLSh1J0dCJywgdSdHQicpLAotKHUnS0InLCB1J0tCJyksCi0odSdNQicsIHUnTUInKSwKLSh1J01lbnVBYnNlbnQnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgdW5hdmFpbGFibGUnKSwKLSh1J01lbnVBZHZlcnRpc2UnLCB1J0ZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnTWVudUFsbENEJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnTWVudUFsbExvY2FsJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdNZW51QWxsTmV0d29yaycsIHUnRW50aXJlIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gbmV0d29yaycpLAotKHUnTWVudUNEJywgdSdXaWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnTWVudUxvY2FsJywgdSdXaWxsIGJlIGluc3RhbGxlZCBvbiBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdNZW51TmV0d29yaycsIHUnV2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gbmV0d29yaycpLAotKHUnU2NyaXB0SW5Qcm9ncmVzcycsIHUnR2F0aGVyaW5nIHJlcXVpcmVkIGluZm9ybWF0aW9uLi4uJyksCi0odSdTZWxBYnNlbnRBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB1bmluc3RhbGxlZCcpLAotKHUnU2VsQWJzZW50QWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbEFic2VudENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gQ0QnKSwKLSh1J1NlbEFic2VudExvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgb24gdGhlIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbEFic2VudE5ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsQWR2ZXJ0aXNlQWJzZW50JywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZWNvbWUgdW5hdmFpbGFibGUnKSwKLSh1J1NlbEFkdmVydGlzZUFkdmVydGlzZScsIHUnV2lsbCBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsQWR2ZXJ0aXNlQ0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGF2YWlsYWJsZSB0byBydW4gZnJvbSBDRCcpLAotKHUnU2VsQWR2ZXJ0aXNlTG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiB5b3VyIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbEFkdmVydGlzZU5ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGF2YWlsYWJsZSB0byBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsQ0RBYnNlbnQnLCB1IlRoaXMgZmVhdHVyZSB3aWxsIGJlIHVuaW5zdGFsbGVkIGNvbXBsZXRlbHksIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1biBpdCBmcm9tIENEIiksCi0odSdTZWxDREFkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gQ0Qgc3RhdGUgdG8gc2V0IHRvIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxDRENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gdG8gYmUgcnVuIGZyb20gQ0QnKSwKLSh1J1NlbENETG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGNoYW5nZSBmcm9tIHJ1biBmcm9tIENEIHN0YXRlIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQ2hpbGRDb3N0TmVnJywgdSdUaGlzIGZlYXR1cmUgZnJlZXMgdXAgWzFdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbENoaWxkQ29zdFBvcycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuJyksCi0odSdTZWxDb3N0UGVuZGluZycsIHUnQ29tcGlsaW5nIGNvc3QgZm9yIHRoaXMgZmVhdHVyZS4uLicpLAotKHUnU2VsTG9jYWxBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVtb3ZlZCcpLAotKHUnU2VsTG9jYWxBZHZlcnRpc2UnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB5b3VyIGxvY2FsIGhhcmQgZHJpdmUsIGJ1dCB3aWxsIGJlIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsTG9jYWxDRCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc3RpbGwgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIENEJyksCi0odSdTZWxMb2NhbExvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gb24geW91IGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbExvY2FsTmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc3RpbGwgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxOZXR3b3JrQWJzZW50JywgdSJUaGlzIGZlYXR1cmUgd2lsbCBiZSB1bmluc3RhbGxlZCBjb21wbGV0ZWx5LCB5b3Ugd29uJ3QgYmUgYWJsZSB0byBydW4gaXQgZnJvbSB0aGUgbmV0d29yayIpLAotKHUnU2VsTmV0d29ya0FkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gbmV0d29yayBzdGF0ZSB0byBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbE5ldHdvcmtMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gbmV0d29yayBzdGF0ZSB0byBiZSBpbnN0YWxsZWQgb24gdGhlIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbE5ldHdvcmtOZXR3b3JrJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gdG8gYmUgcnVuIGZyb20gdGhlIG5ldHdvcmsnKSwKLSh1J1NlbFBhcmVudENvc3ROZWdOZWcnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIGZyZWUgdXAgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3ROZWdQb3MnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIHJlcXVpcmUgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3RQb3NOZWcnLCB1J1RoaXMgZmVhdHVyZSByZXF1aXJlcyBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIGZyZWUgdXAgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3RQb3NQb3MnLCB1J1RoaXMgZmVhdHVyZSByZXF1aXJlcyBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIHJlcXVpcmUgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1RpbWVSZW1haW5pbmcnLCB1J1RpbWUgcmVtYWluaW5nOiB7WzFdIG1pbnV0ZXMgfXtbMl0gc2Vjb25kc30nKSwKLSh1J1ZvbHVtZUNvc3RBdmFpbGFibGUnLCB1J0F2YWlsYWJsZScpLAotKHUnVm9sdW1lQ29zdERpZmZlcmVuY2UnLCB1J0RpZmZlcmVuY2UnKSwKLSh1J1ZvbHVtZUNvc3RSZXF1aXJlZCcsIHUnUmVxdWlyZWQnKSwKLSh1J1ZvbHVtZUNvc3RTaXplJywgdSdEaXNrIFNpemUnKSwKLSh1J1ZvbHVtZUNvc3RWb2x1bWUnLCB1J1ZvbHVtZScpLAotXQotCi1fVmFsaWRhdGlvbiA9IFsKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZG1pblVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0V4cHJlc3Npb24gZXZhbHVhdGVkIHRvIGRldGVybWluZSBpZiBMZXZlbCBpbiB0aGUgRmVhdHVyZSB0YWJsZSBpcyB0byBjaGFuZ2UuJyksCi0odSdDb25kaXRpb24nLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYSBGZWF0dXJlIGVudHJ5IGluIEZlYXR1cmUgdGFibGUuJyksCi0odSdDb25kaXRpb24nLCB1J0xldmVsJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTmV3IHNlbGVjdGlvbiBMZXZlbCB0byBzZXQgaW4gRmVhdHVyZSB0YWJsZSBpZiBDb25kaXRpb24gZXZhbHVhdGVzIHRvIFRSVUUuJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJyksCi0odSdCQkNvbnRyb2wnLCB1J1R5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdCQkNvbnRyb2wnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBiaWxsYm9hcmQsIGJ1dCBjYW4gcmVwZWF0IG9uIGRpZmZlcmVudCBiaWxsYm9hcmQuJyksCi0odSdCQkNvbnRyb2wnLCB1J0JpbGxib2FyZF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0JpbGxib2FyZCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRXh0ZXJuYWwga2V5IHRvIHRoZSBCaWxsYm9hcmQgdGFibGUsIG5hbWUgb2YgdGhlIGJpbGxib2FyZC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnWScsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgMzItYml0IHdvcmQgdGhhdCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZSBmbGFncyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnQSBzdHJpbmcgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgdGV4dCBjb250YWluZWQgd2l0aGluIGEgY29udHJvbCAoaWYgYXBwcm9wcmlhdGUpLicpLAotKHUnQmlsbGJvYXJkJywgdSdBY3Rpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIGFuIGFjdGlvbi4gVGhlIGJpbGxib2FyZCBpcyBkaXNwbGF5ZWQgZHVyaW5nIHRoZSBwcm9ncmVzcyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoaXMgYWN0aW9uLicpLAotKHUnQmlsbGJvYXJkJywgdSdCaWxsYm9hcmQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGJpbGxib2FyZC4nKSwKLSh1J0JpbGxib2FyZCcsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0FuIGV4dGVybmFsIGtleSB0byB0aGUgRmVhdHVyZSBUYWJsZS4gVGhlIGJpbGxib2FyZCBpcyBzaG93biBvbmx5IGlmIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBpbnN0YWxsZWQuJyksCi0odSdCaWxsYm9hcmQnLCB1J09yZGVyaW5nJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGJpbGxib2FyZCBjb3JyZXNwb25kaW5nIHRvIGFuIGFjdGlvbiB0aGV5IHdpbGwgYmUgc2hvd24gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhpcyBjb2x1bW4uJyksCi0odSdCaW5hcnknLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBrZXkgaWRlbnRpZnlpbmcgdGhlIGJpbmFyeSBkYXRhLicpLAotKHUnQmluYXJ5JywgdSdEYXRhJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J1RoZSB1bmZvcm1hdHRlZCBiaW5hcnkgZGF0YS4nKSwKLSh1J0NoZWNrQm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoZSBpdGVtLicpLAotKHUnQ2hlY2tCb3gnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLicpLAotKHUnUHJvcGVydHknLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5LCB1cHBlcmNhc2UgaWYgc2V0dGFibGUgYnkgbGF1bmNoZXIgb3IgbG9hZGVyLicpLAotKHUnUHJvcGVydHknLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTdHJpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiAgTmV2ZXIgbnVsbCBvciBlbXB0eS4nKSwKLSh1J0NvbWJvQm94JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nKSwKLSh1J0NvbWJvQm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGNvbWJvYm94LicpLAotKHUnQ29tYm9Cb3gnLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdDb21ib0JveCcsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuXHRUaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdDb250cm9sJywgdSdUeXBlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1gnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J0hlaWdodCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJyksCi0odSdDb250cm9sJywgdSdQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgYSBkZWZpbmVkIHByb3BlcnR5IHRvIGJlIGxpbmtlZCB0byB0aGlzIGNvbnRyb2wuICcpLAotKHUnQ29udHJvbCcsIHUnQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGRpYWxvZywgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGRpYWxvZ3MuICcpLAotKHUnQ29udHJvbCcsIHUnRGlhbG9nXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlhbG9nJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnQ29udHJvbCcsIHUnQ29udHJvbF9OZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiBhbiBvdGhlciBjb250cm9sIG9uIHRoZSBzYW1lIGRpYWxvZy4gVGhpcyBsaW5rIGRlZmluZXMgdGhlIHRhYiBvcmRlciBvZiB0aGUgY29udHJvbHMuIFRoZSBsaW5rcyBoYXZlIHRvIGZvcm0gb25lIG9yIG1vcmUgY3ljbGVzIScpLAotKHUnQ29udHJvbCcsIHUnSGVscCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuICcpLAotKHUnSWNvbicsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIE5hbWUgb2YgdGhlIGljb24gZmlsZS4nKSwKLSh1J0ljb24nLCB1J0RhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIGJpbmFyeSBpY29uIGRhdGEgaW4gUEUgKC5ETEwgb3IgLkVYRSkgb3IgaWNvbiAoLklDTykgZm9ybWF0LicpLAotKHUnTGlzdEJveCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnTGlzdEJveCcsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0Ym94LicpLAotKHUnTGlzdEJveCcsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0xpc3RCb3gnLCB1J09yZGVyJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdBY3Rpb25UZXh0JywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGJlIGRlc2NyaWJlZC4nKSwKLSh1J0FjdGlvblRleHQnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZGlzcGxheWVkIGluIHByb2dyZXNzIGRpYWxvZyBhbmQgbG9nIHdoZW4gYWN0aW9uIGlzIGV4ZWN1dGluZy4nKSwKLSh1J0FjdGlvblRleHQnLCB1J1RlbXBsYXRlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZW1wbGF0ZScsIE5vbmUsIHUnT3B0aW9uYWwgbG9jYWxpemVkIGZvcm1hdCB0ZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBhY3Rpb24gZGF0YSByZWNvcmRzIGZvciBkaXNwbGF5IGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0O0Rpc2FibGU7RW5hYmxlO0hpZGU7U2hvdycsIHUnVGhlIGRlc2lyZWQgYWN0aW9uIHRvIGJlIHRha2VuIG9uIHRoZSBzcGVjaWZpZWQgY29udHJvbC4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0NvbmRpdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdBIHN0YW5kYXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHNwZWNpZmllcyB1bmRlciB3aGljaCBjb25kaXRpb25zIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHRyaWdnZXJlZC4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sQ29uZGl0aW9uJywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2xFdmVudCcsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgYW4gZXZlbnQgc2hvdWxkIGJlIHRyaWdnZXJlZC4nKSwKLSh1J0NvbnRyb2xFdmVudCcsIHUnT3JkZXJpbmcnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdXNlZCB0byBvcmRlciBzZXZlcmFsIGV2ZW50cyB0aWVkIHRvIHRoZSBzYW1lIGNvbnRyb2wuIENhbiBiZSBsZWZ0IGJsYW5rLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbCcpLAotKHUnQ29udHJvbEV2ZW50JywgdSdFdmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBbiBpZGVudGlmaWVyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBldmVudCB0aGF0IHNob3VsZCB0YWtlIHBsYWNlIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IHR3byBlbnRyaWVzLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdBcmd1bWVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBIHZhbHVlIHRvIGJlIHVzZWQgYXMgYSBtb2RpZmllciB3aGVuIHRyaWdnZXJpbmcgYSBwYXJ0aWN1bGFyIGV2ZW50LicpLAotKHUnRGlhbG9nJywgdSdXaWR0aCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBkaWFsb2cuJyksCi0odSdEaWFsb2cnLCB1J1RpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1IkEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0aXRsZSBiYXIgb2YgdGhlIGRpYWxvZydzIHdpbmRvdy4iKSwKLSh1J0RpYWxvZycsIHUnRGlhbG9nJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdEaWFsb2cnLCB1J0hDZW50ZXJpbmcnLCB1J04nLCAwLCAxMDAsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIG9uIGEgMC0xMDAgc2NhbGUuIDAgbWVhbnMgbGVmdCBlbmQsIDEwMCBtZWFucyByaWdodCBlbmQgb2YgdGhlIHNjcmVlbiwgNTAgY2VudGVyLicpLAotKHUnRGlhbG9nJywgdSdWQ2VudGVyaW5nJywgdSdOJywgMCwgMTAwLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyB0b3AgZW5kLCAxMDAgbWVhbnMgYm90dG9tIGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfRmlyc3QnLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0RlZmluZXMgdGhlIGNvbnRyb2wgdGhhdCBoYXMgdGhlIGZvY3VzIHdoZW4gdGhlIGRpYWxvZyBpcyBjcmVhdGVkLicpLAotKHUnRGlhbG9nJywgdSdDb250cm9sX0RlZmF1bHQnLCB1J1knLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0RlZmluZXMgdGhlIGRlZmF1bHQgY29udHJvbC4gSGl0dGluZyByZXR1cm4gaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicpLAotKHUnRGlhbG9nJywgdSdDb250cm9sX0NhbmNlbCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgY2FuY2VsIGNvbnRyb2wuIEhpdHRpbmcgZXNjYXBlIG9yIGNsaWNraW5nIG9uIHRoZSBjbG9zZSBpY29uIG9uIHRoZSBkaWFsb2cgaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgRGlhbG9nLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0V2ZW50TWFwcGluZycsIHUnRXZlbnQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgdGhlIGNvbnRyb2wgc3Vic2NyaWJlcyB0by4nKSwKLSh1J0V2ZW50TWFwcGluZycsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBhdHRyaWJ1dGUsIHRoYXQgaXMgc2V0IHdoZW4gdGhpcyBldmVudCBpcyByZWNlaXZlZC4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FwcFNlYXJjaCcsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHdpdGggYSBTaWduYXR1cmUnKSwKLSh1J0FwcFNlYXJjaCcsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJyksCi0odSdCaW5kSW1hZ2UnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgaW5kZXggaW50byB0aGUgRmlsZSB0YWJsZS4gVGhpcyBtdXN0IGJlIGFuIGV4ZWN1dGFibGUgZmlsZS4nKSwKLSh1J0JpbmRJbWFnZScsIHUnUGF0aCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGF0aHMnLCBOb25lLCB1J0EgbGlzdCBvZiA7ICBkZWxpbWl0ZWQgcGF0aHMgdGhhdCByZXByZXNlbnQgdGhlIHBhdGhzIHRvIGJlIHNlYXJjaGVkIGZvciB0aGUgaW1wb3J0IERMTFMuIFRoZSBsaXN0IGlzIHVzdWFsbHkgYSBsaXN0IG9mIHByb3BlcnRpZXMgZWFjaCBlbmNsb3NlZCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzIFtdIC4nKSwKLSh1J0NDUFNlYXJjaCcsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJyksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJyksCi0odSdMaXN0VmlldycsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnTGlzdFZpZXcnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdHZpZXcuJyksCi0odSdMaXN0VmlldycsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdMaXN0VmlldycsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0xpc3RWaWV3JywgdSdCaW5hcnlfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBpY29uLiBUaGUgYmluYXJ5IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBCaW5hcnkgVGFibGUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdXaWR0aCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB3aWR0aCBvZiB0aGUgYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J0hlaWdodCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0aXRsZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyByYWRpbyBidXR0b24uIEFsbCB0aGUgYnV0dG9ucyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGdyb3VwLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnV0dG9uLiBTZWxlY3RpbmcgdGhlIGJ1dHRvbiB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J09yZGVyJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnSGVscCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuJyksCi0odSdUZXh0U3R5bGUnLCB1J1RleHRTdHlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgc3R5bGUuIFRoZSBwcmltYXJ5IGtleSBvZiB0aGlzIHRhYmxlLiBUaGlzIG5hbWUgaXMgZW1iZWRkZWQgaW4gdGhlIHRleHRzIHRvIGluZGljYXRlIGEgc3R5bGUgY2hhbmdlLicpLAotKHUnVGV4dFN0eWxlJywgdSdGYWNlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbmFtZSBvZiB0aGUgZm9udCB1c2VkLiBSZXF1aXJlZC4gVGhlIHN0cmluZyBtdXN0IGJlIGF0IG1vc3QgMzEgY2hhcmFjdGVycyBsb25nLicpLAotKHUnVGV4dFN0eWxlJywgdSdTaXplJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHNpemUgb2YgdGhlIGZvbnQgdXNlZC4gVGhpcyBzaXplIGlzIGdpdmVuIGluIG91ciB1bml0cyAoMS8xMiBvZiB0aGUgc3lzdGVtIGZvbnQgaGVpZ2h0KS4gQXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGZvbnQgaXMgc2V0IHRvIDEyIHBvaW50IHNpemUsIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgcG9pbnQgc2l6ZS4nKSwKLSh1J1RleHRTdHlsZScsIHUnQ29sb3InLCB1J1knLCAwLCAxNjc3NzIxNSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGxvbmcgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb2xvciBvZiB0aGUgc3RyaW5nIGluIHRoZSBSR0IgZm9ybWF0IChSZWQsIEdyZWVuLCBCbHVlIGVhY2ggMC0yNTUsIFJHQiA9IFIgKyAyNTYqRyArIDI1Nl4yKkIpLicpLAotKHUnVGV4dFN0eWxlJywgdSdTdHlsZUJpdHMnLCB1J1knLCAwLCAxNSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGNvbWJpbmF0aW9uIG9mIHN0eWxlIGJpdHMuJyksCi0odSdVSVRleHQnLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBsb2NhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLicpLAotKHUnVUlUZXh0JywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgdW5pcXVlIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIHBhcnRpY3VsYXIgc3RyaW5nLicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J1RhYmxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRhYmxlJyksCi0odSdfVmFsaWRhdGlvbicsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIGNvbHVtbicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J0NvbHVtbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBjb2x1bW4nKSwKLSh1J19WYWxpZGF0aW9uJywgdSdOdWxsYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnWTtOO0AnLCB1J1doZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZScpLAotKHUnX1ZhbGlkYXRpb24nLCB1J01pblZhbHVlJywgdSdZJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWluaW11bSB2YWx1ZSBhbGxvd2VkJyksCi0odSdfVmFsaWRhdGlvbicsIHUnTWF4VmFsdWUnLCB1J1knLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNYXhpbXVtIHZhbHVlIGFsbG93ZWQnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdLZXlUYWJsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yIGZvcmVpZ24ga2V5LCBOYW1lIG9mIHRhYmxlIHRvIHdoaWNoIGRhdGEgbXVzdCBsaW5rJyksCi0odSdfVmFsaWRhdGlvbicsIHUnS2V5Q29sdW1uJywgdSdZJywgMSwgMzIsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29sdW1uIHRvIHdoaWNoIGZvcmVpZ24ga2V5IGNvbm5lY3RzJyksCi0odSdfVmFsaWRhdGlvbicsIHUnQ2F0ZWdvcnknLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQ7Rm9ybWF0dGVkO1RlbXBsYXRlO0NvbmRpdGlvbjtHdWlkO1BhdGg7VmVyc2lvbjtMYW5ndWFnZTtJZGVudGlmaWVyO0JpbmFyeTtVcHBlckNhc2U7TG93ZXJDYXNlO0ZpbGVuYW1lO1BhdGhzO0FueVBhdGg7V2lsZENhcmRGaWxlbmFtZTtSZWdQYXRoO0tleUZvcm1hdHRlZDtDdXN0b21Tb3VyY2U7UHJvcGVydHk7Q2FiaW5ldDtTaG9ydGN1dDtVUkwnLCB1J1N0cmluZyBjYXRlZ29yeScpLAotKHUnX1ZhbGlkYXRpb24nLCB1J1NldCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnU2V0IG9mIHZhbHVlcyB0aGF0IGFyZSBwZXJtaXR0ZWQnKSwKLSh1J0FkdnRVSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FwcElkJywgdSdBcHBJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIE5vbmUpLAotKHUnQXBwSWQnLCB1J0FjdGl2YXRlQXRTdG9yYWdlJywgdSdZJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnRGxsU3Vycm9nYXRlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnTG9jYWxTZXJ2aWNlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnUmVtb3RlU2VydmVyTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnUnVuQXNJbnRlcmFjdGl2ZVVzZXInLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdTZXJ2aWNlUGFyYW1ldGVycycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnRmVhdHVyZScsIHUnQXR0cmlidXRlcycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMDsxOzI7NDs1OzY7ODs5OzEwOzE2OzE3OzE4OzIwOzIxOzIyOzI0OzI1OzI2OzMyOzMzOzM0OzM2OzM3OzM4OzQ4OzQ5OzUwOzUyOzUzOzU0JywgdSdGZWF0dXJlIGF0dHJpYnV0ZXMnKSwKLSh1J0ZlYXR1cmUnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb25nZXIgZGVzY3JpcHRpdmUgdGV4dCBkZXNjcmliaW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJyksCi0odSdGZWF0dXJlJywgdSdUaXRsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnU2hvcnQgdGV4dCBpZGVudGlmeWluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLicpLAotKHUnRmVhdHVyZScsIHUnRmVhdHVyZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmVhdHVyZSByZWNvcmQuJyksCi0odSdGZWF0dXJlJywgdSdEaXJlY3RvcnlfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLCAxLCB1J1VwcGVyQ2FzZScsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIERpcmVjdG9yeSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBVSS4gQSBub24tbnVsbCB2YWx1ZSB3aWxsIGVuYWJsZSB0aGUgYnJvd3NlIGJ1dHRvbi4nKSwKLSh1J0ZlYXR1cmUnLCB1J0xldmVsJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGluc3RhbGwgbGV2ZWwgYXQgd2hpY2ggcmVjb3JkIHdpbGwgYmUgaW5pdGlhbGx5IHNlbGVjdGVkLiBBbiBpbnN0YWxsIGxldmVsIG9mIDAgd2lsbCBkaXNhYmxlIGFuIGl0ZW0gYW5kIHByZXZlbnQgaXRzIGRpc3BsYXkuJyksCi0odSdGZWF0dXJlJywgdSdEaXNwbGF5JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtZXJpYyBzb3J0IG9yZGVyLCB1c2VkIHRvIGZvcmNlIGEgc3BlY2lmaWMgZGlzcGxheSBvcmRlcmluZy4nKSwKLSh1J0ZlYXR1cmUnLCB1J0ZlYXR1cmVfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCBrZXkgb2YgYSBwYXJlbnQgcmVjb3JkIGluIHRoZSBzYW1lIHRhYmxlLiBJZiB0aGUgcGFyZW50IGlzIG5vdCBzZWxlY3RlZCwgdGhlbiB0aGUgcmVjb3JkIHdpbGwgbm90IGJlIGluc3RhbGxlZC4gTnVsbCBpbmRpY2F0ZXMgYSByb290IGl0ZW0uJyksCi0odSdGaWxlJywgdSdTZXF1ZW5jZScsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJyksCi0odSdGaWxlJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBjb250YWluaW5nIGJpdCBmbGFncyByZXByZXNlbnRpbmcgZmlsZSBhdHRyaWJ1dGVzICh3aXRoIHRoZSBkZWNpbWFsIHZhbHVlIG9mIGVhY2ggYml0IHBvc2l0aW9uIGluIHBhcmVudGhlc2VzKScpLAotKHUnRmlsZScsIHUnRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LiAgRm9yIHVuY29tcHJlc3NlZCBmaWxlcywgdGhpcyBmaWVsZCBpcyBpZ25vcmVkLicpLAotKHUnRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZS4nKSwKLSh1J0ZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnRmlsZSBuYW1lIHVzZWQgZm9yIGluc3RhbGxhdGlvbiwgbWF5IGJlIGxvY2FsaXplZC4gIFRoaXMgbWF5IGNvbnRhaW4gYSAic2hvcnQgbmFtZXxsb25nIG5hbWUiIHBhaXIuJyksCi0odSdGaWxlJywgdSdGaWxlU2l6ZScsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicpLAotKHUnRmlsZScsIHUnTGFuZ3VhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJywgTm9uZSwgdSdMaXN0IG9mIGRlY2ltYWwgbGFuZ3VhZ2UgSWRzLCBjb21tYS1zZXBhcmF0ZWQgaWYgbW9yZSB0aGFuIG9uZS4nKSwKLSh1J0ZpbGUnLCB1J1ZlcnNpb24nLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J1ZlcnNpb24nLCBOb25lLCB1J1ZlcnNpb24gc3RyaW5nIGZvciB2ZXJzaW9uZWQgZmlsZXM7ICBCbGFuayBmb3IgdW52ZXJzaW9uZWQgZmlsZXMuJyksCi0odSdDbGFzcycsIHUnQXR0cmlidXRlcycsIHUnWScsIE5vbmUsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NsYXNzIHJlZ2lzdHJhdGlvbiBhdHRyaWJ1dGVzLicpLAotKHUnQ2xhc3MnLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicpLAotKHUnQ2xhc3MnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBDbGFzcy4nKSwKLSh1J0NsYXNzJywgdSdBcmd1bWVudCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdvcHRpb25hbCBhcmd1bWVudCBmb3IgTG9jYWxTZXJ2ZXJzLicpLAotKHUnQ2xhc3MnLCB1J0FwcElkXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnQXBwSWQnLCAxLCB1J0d1aWQnLCBOb25lLCB1J09wdGlvbmFsIEFwcElEIGNvbnRhaW5pbmcgRENPTSBpbmZvcm1hdGlvbiBmb3IgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiAoc3RyaW5nIEdVSUQpLicpLAotKHUnQ2xhc3MnLCB1J0NMU0lEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkuJyksCi0odSdDbGFzcycsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nKSwKLSh1J0NsYXNzJywgdSdDb250ZXh0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbnVtZXJpYyBzZXJ2ZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2ZXIuIENMU0NUWF94eHh4JyksCi0odSdDbGFzcycsIHUnRGVmSW5wcm9jSGFuZGxlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCB1JzE7MjszJywgdSdPcHRpb25hbCBkZWZhdWx0IGlucHJvYyBoYW5kbGVyLiAgT25seSBvcHRpb25hbGx5IHByb3ZpZGVkIGlmIENvbnRleHQ9Q0xTQ1RYX0xPQ0FMX1NFUlZFUi4gIFR5cGljYWxseSAib2xlMzIuZGxsIiBvciAibWFwaTMyLmRsbCInKSwKLSh1J0NsYXNzJywgdSdGaWxlVHlwZU1hc2snLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIHN0cmluZyBjb250YWluaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgSEtDUnRoaXMgQ0xTSUQpIGtleS4gSWYgbXVsdGlwbGUgcGF0dGVybnMgZXhpc3QsIHRoZXkgbXVzdCBiZSBkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24sIGFuZCBudW1lcmljIHN1YmtleXMgd2lsbCBiZSBnZW5lcmF0ZWQ6IDAsMSwyLi4uJyksCi0odSdDbGFzcycsIHUnSWNvbl8nLCB1J1knLCBOb25lLCBOb25lLCB1J0ljb24nLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJyksCi0odSdDbGFzcycsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicpLAotKHUnQ2xhc3MnLCB1J1Byb2dJZF9EZWZhdWx0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdQcm9nSWQnLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1IkEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgd2lsbCBkaXNhYmxlIHRoaXMgY29tcG9uZW50IGlmIHRoZSBzcGVjaWZpZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0aGUgJ1RydWUnIHN0YXRlLiBJZiBhIGNvbXBvbmVudCBpcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSAnQWN0aW9uJyBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudC4iKSwKLSh1J0NvbXBvbmVudCcsIHUnQXR0cmlidXRlcycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVtb3RlIGV4ZWN1dGlvbiBvcHRpb24sIG9uZSBvZiBpcnNFbnVtJyksCi0odSdDb21wb25lbnQnLCB1J0NvbXBvbmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgY29tcG9uZW50IHJlY29yZC4nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29tcG9uZW50SWQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJyksCi0odSdDb21wb25lbnQnLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQga2V5IG9mIGEgRGlyZWN0b3J5IHRhYmxlIHJlY29yZC4gVGhpcyBpcyBhY3R1YWxseSBhIHByb3BlcnR5IG5hbWUgd2hvc2UgdmFsdWUgY29udGFpbnMgdGhlIGFjdHVhbCBwYXRoLCBzZXQgZWl0aGVyIGJ5IHRoZSBBcHBTZWFyY2ggYWN0aW9uIG9yIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZyBvYnRhaW5lZCBmcm9tIHRoZSBEaXJlY3RvcnkgdGFibGUuJyksCi0odSdDb21wb25lbnQnLCB1J0tleVBhdGgnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGU7UmVnaXN0cnk7T0RCQ0RhdGFTb3VyY2UnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0VpdGhlciB0aGUgcHJpbWFyeSBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSwgUmVnaXN0cnkgdGFibGUsIG9yIE9EQkNEYXRhU291cmNlIHRhYmxlLiBUaGlzIGV4dHJhY3QgcGF0aCBpcyBzdG9yZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluc3RhbGxlZCwgYW5kIGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgY29tcG9uZW50IGFuZCB0byByZXR1cm4gdGhlIHBhdGggdG8gaXQuJyksCi0odSdQcm9nSWQnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBQcm9ncmFtIGlkZW50aWZpZXIuJyksCi0odSdQcm9nSWQnLCB1J0ljb25fJywgdSdZJywgTm9uZSwgTm9uZSwgdSdJY29uJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCBmb3JlaWduIGtleSBpbnRvIHRoZSBJY29uIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBpY29uIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZ0lkLiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nKSwKLSh1J1Byb2dJZCcsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicpLAotKHUnUHJvZ0lkJywgdSdQcm9nSWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBQcm9ncmFtIElkZW50aWZpZXIuIFByaW1hcnkga2V5LicpLAotKHUnUHJvZ0lkJywgdSdDbGFzc18nLCB1J1knLCBOb25lLCBOb25lLCB1J0NsYXNzJywgMSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgUHJvZ0lkLicpLAotKHUnUHJvZ0lkJywgdSdQcm9nSWRfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdQcm9nSWQnLCAxLCB1J1RleHQnLCBOb25lLCB1J1RoZSBQYXJlbnQgUHJvZ3JhbSBJZGVudGlmaWVyLiBJZiBzcGVjaWZpZWQsIHRoZSBQcm9nSWQgY29sdW1uIGJlY29tZXMgYSB2ZXJzaW9uIGluZGVwZW5kZW50IHByb2cgaWQuJyksCi0odSdDb21wTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBib29sZWFuIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbi4nKSwKLSh1J0NvbXBMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnQ29tcExvY2F0b3InLCB1J0NvbXBvbmVudElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLicpLAotKHUnQ29tcGx1cycsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgQ29tUGx1cyBjb21wb25lbnQuJyksCi0odSdDb21wbHVzJywgdSdFeHBUeXBlJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29tUGx1cyBjb21wb25lbnQgYXR0cmlidXRlcy4nKSwKLSh1J0RpcmVjdG9yeScsIHUnRGlyZWN0b3J5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgZGlyZWN0b3J5IGVudHJ5LCBwcmltYXJ5IGtleS4gSWYgYSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUgaXMgZGVmaW5lZCwgaXQgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGlyZWN0b3J5LicpLAotKHUnRGlyZWN0b3J5JywgdSdEZWZhdWx0RGlyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0RGlyJywgTm9uZSwgdSJUaGUgZGVmYXVsdCBzdWItcGF0aCB1bmRlciBwYXJlbnQncyBwYXRoLiIpLAotKHUnRGlyZWN0b3J5JywgdSdEaXJlY3RvcnlfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byB0aGUgZW50cnkgaW4gdGhpcyB0YWJsZSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IHBhcmVudCBkaXJlY3RvcnkuIEEgcmVjb3JkIHBhcmVudGVkIHRvIGl0c2VsZiBvciB3aXRoIGEgTnVsbCBwYXJlbnQgcmVwcmVzZW50cyBhIHJvb3Qgb2YgdGhlIGluc3RhbGwgdHJlZS4nKSwKLSh1J0NyZWF0ZUZvbGRlcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUuJyksCi0odSdDcmVhdGVGb2xkZXInLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIGNvdWxkIGJlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZS4nKSwKLSh1J0N1c3RvbUFjdGlvbicsIHUnVHlwZScsIHUnTicsIDEsIDE2MzgzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBudW1lcmljIGN1c3RvbSBhY3Rpb24gdHlwZSwgY29uc2lzdGluZyBvZiBzb3VyY2UgbG9jYXRpb24sIGNvZGUgdHlwZSwgZW50cnksIG9wdGlvbiBmbGFncy4nKSwKLSh1J0N1c3RvbUFjdGlvbicsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbmFtZSBvZiBhY3Rpb24sIG5vcm1hbGx5IGFwcGVhcnMgaW4gc2VxdWVuY2UgdGFibGUgdW5sZXNzIHByaXZhdGUgdXNlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdTb3VyY2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0N1c3RvbVNvdXJjZScsIE5vbmUsIHUnVGhlIHRhYmxlIHJlZmVyZW5jZSBvZiB0aGUgc291cmNlIG9mIHRoZSBjb2RlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdUYXJnZXQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnRXhjZWN1dGlvbiBwYXJhbWV0ZXIsIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgY3VzdG9tIGFjdGlvbicpLAotKHUnRHJMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnRHJMb2NhdG9yJywgdSdQYXRoJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbnlQYXRoJywgTm9uZSwgdSdUaGUgcGF0aCBvbiB0aGUgdXNlciBzeXN0ZW0uIFRoaXMgaXMgYSBlaXRoZXIgYSBzdWJwYXRoIGJlbG93IHRoZSB2YWx1ZSBvZiB0aGUgUGFyZW50IG9yIGEgZnVsbCBwYXRoLiBUaGUgcGF0aCBtYXkgY29udGFpbiBwcm9wZXJ0aWVzIGVuY2xvc2VkIHdpdGhpbiBbIF0gdGhhdCB3aWxsIGJlIGV4cGFuZGVkLicpLAotKHUnRHJMb2NhdG9yJywgdSdEZXB0aCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBkZXB0aCBiZWxvdyB0aGUgcGF0aCB0byB3aGljaCB0aGUgU2lnbmF0dXJlXyBpcyByZWN1cnNpdmVseSBzZWFyY2hlZC4gSWYgYWJzZW50LCB0aGUgZGVwdGggaXMgYXNzdW1lZCB0byBiZSAwLicpLAotKHUnRHJMb2NhdG9yJywgdSdQYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBwYXJlbnQgZmlsZSBzaWduYXR1cmUuIEl0IGlzIGFsc28gYSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiBudWxsIGFuZCB0aGUgUGF0aCBjb2x1bW4gZG9lcyBub3QgZXhwYW5kIHRvIGEgZnVsbCBwYXRoLCB0aGVuIGFsbCB0aGUgZml4ZWQgZHJpdmVzIG9mIHRoZSB1c2VyIHN5c3RlbSBhcmUgc2VhcmNoZWQgdXNpbmcgdGhlIFBhdGguJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgdGhlIHNvdXJjZSBmaWxlIHRvIGJlIGR1cGxpY2F0ZWQuJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkdXBsaWNhdGUgZmlsZS4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0Rlc3RGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gYSBkZXN0aW5hdGlvbiBmb2xkZXIuJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdEZXN0TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J0ZpbGVuYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBkdXBsaWNhdGUgZmlsZS4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0ZpbGVLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknKSwKLSh1J0Vudmlyb25tZW50JywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nKSwKLSh1J0Vudmlyb25tZW50JywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gc2V0IGluIHRoZSBlbnZpcm9ubWVudGFsIHNldHRpbmdzLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J0Vudmlyb25tZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgc2V0dGluZycpLAotKHUnRXJyb3InLCB1J0Vycm9yJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBlcnJvciBudW1iZXIsIG9idGFpbmVkIGZyb20gaGVhZGVyIGZpbGUgSUVycm9yKC4uLikgbWFjcm9zLicpLAotKHUnRXJyb3InLCB1J01lc3NhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJywgTm9uZSwgdSdFcnJvciBmb3JtYXR0aW5nIHRlbXBsYXRlLCBvYnRhaW5lZCBmcm9tIHVzZXIgZWQuIG9yIGxvY2FsaXplcnMuJyksCi0odSdFeHRlbnNpb24nLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicpLAotKHUnRXh0ZW5zaW9uJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnRXh0ZW5zaW9uJywgdSdFeHRlbnNpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJyksCi0odSdFeHRlbnNpb24nLCB1J01JTUVfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdNSU1FJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXh0ZW5zaW9uJyksCi0odSdFeHRlbnNpb24nLCB1J1Byb2dJZF8nLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbi4nKSwKLSh1J01JTUUnLCB1J0NMU0lEJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIENMU0lELicpLAotKHUnTUlNRScsIHUnQ29udGVudFR5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ByaW1hcnkga2V5LiBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiLicpLAotKHUnTUlNRScsIHUnRXh0ZW5zaW9uXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRXh0ZW5zaW9uJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIGV4dGVuc2lvbiAod2l0aG91dCBkb3QpJyksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnRmlsZVNGUENhdGFsb2cnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2F0YWxvZycpLAotKHUnRmlsZVNGUENhdGFsb2cnLCB1J1NGUENhdGFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTRlBDYXRhbG9nJywgMSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnQ2F0YWxvZyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUnKSwKLSh1J1NGUENhdGFsb2cnLCB1J1NGUENhdGFsb2cnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdGaWxlIG5hbWUgZm9yIHRoZSBjYXRhbG9nLicpLAotKHUnU0ZQQ2F0YWxvZycsIHUnQ2F0YWxvZycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdTRlAgQ2F0YWxvZycpLAotKHUnU0ZQQ2F0YWxvZycsIHUnRGVwZW5kZW5jeScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdQYXJlbnQgY2F0YWxvZyAtIG9ubHkgdXNlZCBieSBTRlAnKSwKLSh1J0ZvbnQnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZvbnQgZmlsZS4nKSwKLSh1J0ZvbnQnLCB1J0ZvbnRUaXRsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRm9udCBuYW1lLicpLAotKHUnSW5pRmlsZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7MycsIHUnVGhlIHR5cGUgb2YgbW9kaWZpY2F0aW9uIHRvIGJlIG1hZGUsIG9uZSBvZiBpaWZFbnVtJyksCi0odSdJbmlGaWxlJywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbi4nKSwKLSh1J0luaUZpbGUnLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIGtleSBiZWxvdyBTZWN0aW9uLicpLAotKHUnSW5pRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIC5JTkkgdmFsdWUuJyksCi0odSdJbmlGaWxlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgaW5mb3JtYXRpb24nKSwKLSh1J0luaUZpbGUnLCB1J0luaUZpbGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnSW5pRmlsZScsIHUnRGlyUHJvcGVydHknLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJyksCi0odSdJbmlGaWxlJywgdSdTZWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgU2VjdGlvbi4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1R5cGUnLCB1J1knLCAwLCAyLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSAuSU5JIHZhbHVlIHJlYWQgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nKSwKLSh1J0luaUxvY2F0b3InLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnS2V5IHZhbHVlIChmb2xsb3dlZCBieSBhbiBlcXVhbHMgc2lnbiBpbiBJTkkgZmlsZSkuJyksCi0odSdJbmlMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnSW5pTG9jYXRvcicsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUuJyksCi0odSdJbmlMb2NhdG9yJywgdSdTZWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTZWN0aW9uIG5hbWUgd2l0aGluIGluIGZpbGUgKHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgaW4gSU5JIGZpbGUpLicpLAotKHUnSW5pTG9jYXRvcicsIHUnRmllbGQnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZmllbGQgaW4gdGhlIC5JTkkgbGluZS4gSWYgRmllbGQgaXMgbnVsbCBvciAwIHRoZSBlbnRpcmUgbGluZSBpcyByZWFkLicpLAotKHUnSXNvbGF0ZWRDb21wb25lbnQnLCB1J0NvbXBvbmVudF9BcHBsaWNhdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gZm9yIGFwcGxpY2F0aW9uJyksCi0odSdJc29sYXRlZENvbXBvbmVudCcsIHUnQ29tcG9uZW50X1NoYXJlZCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gdG8gYmUgaXNvbGF0ZWQnKSwKLSh1J0xhdW5jaENvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0V4cHJlc3Npb24gd2hpY2ggbXVzdCBldmFsdWF0ZSB0byBUUlVFIGluIG9yZGVyIGZvciBpbnN0YWxsIHRvIGNvbW1lbmNlLicpLAotKHUnTGF1bmNoQ29uZGl0aW9uJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdMb2NhbGl6YWJsZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBjb25kaXRpb24gZmFpbHMgYW5kIGluc3RhbGwgbXVzdCBhYm9ydC4nKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCB1J0RpcmVjdG9yeTtGaWxlO1JlZ2lzdHJ5JywgdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lJyksCi0odSdMb2NrUGVybWlzc2lvbnMnLCB1J0RvbWFpbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdEb21haW4gbmFtZSBmb3IgdXNlciB3aG9zZSBwZXJtaXNzaW9ucyBhcmUgYmVpbmcgc2V0LiAodXN1YWxseSBhIHByb3BlcnR5KScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdMb2NrT2JqZWN0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIFJlZ2lzdHJ5IG9yIEZpbGUgdGFibGUnKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnUGVybWlzc2lvbicsIHUnWScsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Blcm1pc3Npb24gQWNjZXNzIG1hc2suICBGdWxsIENvbnRyb2wgPSAyNjg0MzU0NTYgKEdFTkVSSUNfQUxMID0gMHgxMDAwMDAwMCknKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnVXNlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdVc2VyIGZvciBwZXJtaXNzaW9ucyB0byBiZSBzZXQuICAodXN1YWxseSBhIHByb3BlcnR5KScpLAotKHUnTWVkaWEnLCB1J1NvdXJjZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJvcGVydHknLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSBkZWZpbmluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhYmluZXQgZmlsZS4nKSwKLSh1J01lZGlhJywgdSdDYWJpbmV0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDYWJpbmV0JywgTm9uZSwgdSdJZiBzb21lIG9yIGFsbCBvZiB0aGUgZmlsZXMgc3RvcmVkIG9uIHRoZSBtZWRpYSBhcmUgY29tcHJlc3NlZCBpbiBhIGNhYmluZXQsIHRoZSBuYW1lIG9mIHRoYXQgY2FiaW5ldC4nKSwKLSh1J01lZGlhJywgdSdEaXNrSWQnLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcmltYXJ5IGtleSwgaW50ZWdlciB0byBkZXRlcm1pbmUgc29ydCBvcmRlciBmb3IgdGFibGUuJyksCi0odSdNZWRpYScsIHUnRGlza1Byb21wdCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGlzayBuYW1lOiB0aGUgdmlzaWJsZSB0ZXh0IGFjdHVhbGx5IHByaW50ZWQgb24gdGhlIGRpc2suICBUaGlzIHdpbGwgYmUgdXNlZCB0byBwcm9tcHQgdGhlIHVzZXIgd2hlbiB0aGlzIGRpc2sgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQuJyksCi0odSdNZWRpYScsIHUnTGFzdFNlcXVlbmNlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGZpbGUgZm9yIHRoaXMgbWVkaWEuJyksCi0odSdNZWRpYScsIHUnVm9sdW1lTGFiZWwnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBsYWJlbCBhdHRyaWJ1dGVkIHRvIHRoZSB2b2x1bWUuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdDb21wb25lbnQnLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQ29tcG9uZW50IGNvbnRhaW5lZCBpbiB0aGUgbW9kdWxlLicpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsIHUnTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDIsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBsYW5ndWFnZSBJRCBmb3IgbW9kdWxlIChtYXkgYmUgY2hhbmdlZCBieSB0cmFuc2Zvcm0pLicpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTW9kdWxlIGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudC4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQgZGVjaW1hbCBsYW5ndWFnZSBvZiBtb2R1bGUuJyksCi0odSdNb2R1bGVTaWduYXR1cmUnLCB1J1ZlcnNpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLCBOb25lLCB1J1ZlcnNpb24gb2YgdGhlIG1vZHVsZS4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J01vZHVsZSBpZGVudGlmaWVyIChTdHJpbmcuR1VJRCkuJyksCi0odSdNb2R1bGVEZXBlbmRlbmN5JywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdNb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnTW9kdWxlTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDIsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2Ugb2YgbW9kdWxlIHJlcXVpcmluZyB0aGUgZGVwZW5kZW5jeS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1N0cmluZy5HVUlEIG9mIHJlcXVpcmVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgdGhlIHJlcXVpcmVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgcmVxdWlyZWQgdmVyc2lvbi4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdNb2R1bGVMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZUlEIG9mIG1vZHVsZSB3aXRoIGV4Y2x1c2lvbiByZXF1aXJlbWVudC4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZExhbmd1YWdlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J0V4Y2x1ZGVkTWF4VmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnTWF4aW11bSB2ZXJzaW9uIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRNaW5WZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdNaW5pbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW92ZUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnSWYgdGhpcyBjb21wb25lbnQgaXMgbm90ICJzZWxlY3RlZCIgZm9yIGluc3RhbGxhdGlvbiBvciByZW1vdmFsLCBubyBhY3Rpb24gd2lsbCBiZSB0YWtlbiBvbiB0aGUgYXNzb2NpYXRlZCBNb3ZlRmlsZSBlbnRyeScpLAotKHUnTW92ZUZpbGUnLCB1J0Rlc3RGb2xkZXInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JyksCi0odSdNb3ZlRmlsZScsIHUnRGVzdE5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdOYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBvcmlnaW5hbCBmaWxlIGFmdGVyIGl0IGlzIG1vdmVkIG9yIGNvcGllZC4gIElmIGJsYW5rLCB0aGUgZGVzdGluYXRpb24gZmlsZSB3aWxsIGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNvdXJjZSBmaWxlJyksCi0odSdNb3ZlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBNb3ZlRmlsZSByZWNvcmQnKSwKLSh1J01vdmVGaWxlJywgdSdPcHRpb25zJywgdSdOJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIE1vdmVGaWxlIG9wZXJhdGluZyBtb2RlLCBvbmUgb2YgaW1mb0VudW0nKSwKLSh1J01vdmVGaWxlJywgdSdTb3VyY2VGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeScpLAotKHUnTW92ZUZpbGUnLCB1J1NvdXJjZU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1Ik5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlKHMpIHRvIGJlIG1vdmVkIG9yIGNvcGllZC4gIENhbiBjb250YWluIHRoZSAnKicgb3IgJz8nIHdpbGRjYXJkcy4iKSwKLSh1J01zaUFzc2VtYmx5JywgdSdBdHRyaWJ1dGVzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBc3NlbWJseSBhdHRyaWJ1dGVzJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J01zaUFzc2VtYmx5JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnTXNpQXNzZW1ibHknLCB1J0ZpbGVfQXBwbGljYXRpb24nLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSwgZGVub3RpbmcgdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgZm9yIHByaXZhdGUgYXNzZW1ibGllcy4gTnVsbCBmb3IgZ2xvYmFsIGFzc2VtYmxpZXMuJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmlsZV9NYW5pZmVzdCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGFzc2VtYmx5LicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbmFtZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2YWx1ZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnQ2VydERhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQSBjZXJ0aWZpY2F0ZSBjb250ZXh0IGJsb2IgZm9yIGEgc2lnbmVyIGNlcnRpZmljYXRlJyksCi0odSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLCB1J0RpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdycpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01lZGlhJywgdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lIChvbmx5IE1lZGlhIHRhYmxlIGlzIHN1cHBvcnRlZCknKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gTXNpRGlnaXRhbENlcnRpZmljYXRlIHRhYmxlIGlkZW50aWZ5aW5nIHRoZSBzaWduZXIgY2VydGlmaWNhdGUnKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J0hhc2gnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnVGhlIGVuY29kZWQgaGFzaCBibG9iIGZyb20gdGhlIGRpZ2l0YWwgc2lnbmF0dXJlJyksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJywgdSdTaWduT2JqZWN0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdGb3JlaWduIGtleSB0byBNZWRpYSB0YWJsZScpLAotKHUnTXNpRmlsZUhhc2gnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZpbGUgd2l0aCB0aGlzIGhhc2gnKSwKLSh1J01zaUZpbGVIYXNoJywgdSdPcHRpb25zJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmFyaW91cyBvcHRpb25zIGFuZCBhdHRyaWJ1dGVzIGZvciB0aGlzIGhhc2guJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQxJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQ0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lQYXRjaEhlYWRlcnMnLCB1J1N0cmVhbVJlZicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByb3cuJyksCi0odSdNc2lQYXRjaEhlYWRlcnMnLCB1J0hlYWRlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRyaXZlciBhdHRyaWJ1dGUnKSwKLSh1J09EQkNBdHRyaWJ1dGUnLCB1J0F0dHJpYnV0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnTmFtZSBvZiBPREJDIGRyaXZlciBhdHRyaWJ1dGUnKSwKLSh1J09EQkNBdHRyaWJ1dGUnLCB1J0RyaXZlcl8nLCB1J04nLCBOb25lLCBOb25lLCB1J09EQkNEcml2ZXInLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRyaXZlciBpbiBPREJDRHJpdmVyIHRhYmxlJyksCi0odSdPREJDRHJpdmVyJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZHJpdmVyLCBub24tbG9jYWxpemVkJyksCi0odSdPREJDRHJpdmVyJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgZmlsZScpLAotKHUnT0RCQ0RyaXZlcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNEcml2ZXInLCB1J0RyaXZlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIGRyaXZlcicpLAotKHUnT0RCQ0RyaXZlcicsIHUnRmlsZV9TZXR1cCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgc2V0dXAgRExMJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnRGVzY3JpcHRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIGRhdGEgc291cmNlJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEYXRhU291cmNlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZGF0YSBzb3VyY2UnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEcml2ZXJEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGRyaXZlciBkZXNjcmlwdGlvbiwgbWF5IGJlIGV4aXN0aW5nIGRyaXZlcicpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J1JlZ2lzdHJhdGlvbicsIHUnTicsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnaXN0cmF0aW9uIG9wdGlvbjogMD1tYWNoaW5lLCAxPXVzZXIsIG90aGVycyB0LmIuZC4nKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdWYWx1ZSBmb3IgT0RCQyBkYXRhIHNvdXJjZSBhdHRyaWJ1dGUnKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLCB1J0F0dHJpYnV0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnTmFtZSBvZiBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnRGF0YVNvdXJjZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J09EQkNEYXRhU291cmNlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gT0RCQyBkYXRhIHNvdXJjZSBpbiBPREJDRGF0YVNvdXJjZSB0YWJsZScpLAotKHUnT0RCQ1RyYW5zbGF0b3InLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciB0cmFuc2xhdG9yJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBmaWxlJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdGaWxlX1NldHVwJywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IHRyYW5zbGF0b3Igc2V0dXAgRExMJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnVHJhbnNsYXRvcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIHRyYW5zbGF0b3InKSwKLSh1J1BhdGNoJywgdSdTZXF1ZW5jZScsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBzZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLicpLAotKHUnUGF0Y2gnLCB1J0F0dHJpYnV0ZXMnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBwYXRjaCBhdHRyaWJ1dGVzJyksCi0odSdQYXRjaCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLCBmb3JlaWduIGtleSB0byBGaWxlIHRhYmxlLCBtdXN0IG1hdGNoIGlkZW50aWZpZXIgaW4gY2FiaW5ldC4nKSwKLSh1J1BhdGNoJywgdSdIZWFkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIHBhdGNoIGhlYWRlciwgdXNlZCBmb3IgcGF0Y2ggdmFsaWRhdGlvbi4nKSwKLSh1J1BhdGNoJywgdSdQYXRjaFNpemUnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgcGF0Y2ggaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdQYXRjaCcsIHUnU3RyZWFtUmVmXycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnSWRlbnRpZmllci4gRm9yZWlnbiBrZXkgdG8gdGhlIFN0cmVhbVJlZiBjb2x1bW4gb2YgdGhlIE1zaVBhdGNoSGVhZGVycyB0YWJsZS4nKSwKLSh1J1BhdGNoUGFja2FnZScsIHUnTWVkaWFfJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gRGlza0lkIGNvbHVtbiBvZiBNZWRpYSB0YWJsZS4gSW5kaWNhdGVzIHRoZSBkaXNrIGNvbnRhaW5pbmcgdGhlIHBhdGNoIHBhY2thZ2UuJyksCi0odSdQYXRjaFBhY2thZ2UnLCB1J1BhdGNoSWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0EgdW5pcXVlIHN0cmluZyBHVUlEIHJlcHJlc2VudGluZyB0aGlzIHBhdGNoLicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgdGFibGUuJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0NvbXBvbmVudElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdBIHN0cmluZyBHVUlEIHRoYXQgcmVwcmVzZW50cyB0aGUgY29tcG9uZW50IGlkIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgYnkgdGhlIGFsaWVuIHByb2R1Y3QuJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdBcHBEYXRhJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGlzIGlzIGxvY2FsaXNhYmxlIEFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUXVhbGlmaWVkIENvbXBvbmVudC4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J1F1YWxpZmllcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhpcyBpcyBkZWZpbmVkIG9ubHkgd2hlbiB0aGUgQ29tcG9uZW50SWQgY29sdW1uIGlzIGFuIFF1YWxpZmllZCBDb21wb25lbnQgSWQuIFRoaXMgaXMgdGhlIFF1YWxpZmllciBmb3IgUHJvdmlkZUNvbXBvbmVudEluZGlyZWN0LicpLAotKHUnUmVnaXN0cnknLCB1J05hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJyksCi0odSdSZWdpc3RyeScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSByZWdpc3RyeSB2YWx1ZS4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdSZWdpc3RyeScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdSZWdpc3RyeScsIHUnUm9vdCcsIHUnTicsIC0xLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicpLAotKHUnUmVnTG9jYXRvcicsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlZ0xvY2F0b3InLCB1J1R5cGUnLCB1J1knLCAwLCAxOCwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nKSwKLSh1J1JlZ0xvY2F0b3InLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnTG9jYXRvcicsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgdGhlIHR5cGUgaXMgMCwgdGhlIHJlZ2lzdHJ5IHZhbHVlcyByZWZlcnMgYSBkaXJlY3RvcnksIGFuZCBfU2lnbmF0dXJlIGlzIG5vdCBhIGZvcmVpZ24ga2V5LicpLAotKHUnUmVnTG9jYXRvcicsIHUnUm9vdCcsIHUnTicsIDAsIDMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJyksCi0odSdSZW1vdmVGaWxlJywgdSdJbnN0YWxsTW9kZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMTsyOzMnLCB1J0luc3RhbGxhdGlvbiBvcHRpb24sIG9uZSBvZiBpaW1FbnVtLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScpLAotKHUnUmVtb3ZlRmlsZScsIHUnRmlsZU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpbGRDYXJkRmlsZW5hbWUnLCBOb25lLCB1J05hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nKSwKLSh1J1JlbW92ZUZpbGUnLCB1J0RpclByb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGhuYW1lIHRvIHRoZSBmb2xkZXIgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMjs0JywgdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgZGVsZXRlZC4gVGhlIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gQWN0aW9uIGlzIGlpZkluaVJlbW92ZVRhZycpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIC5JTkkgdmFsdWUuJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byBkZWxldGUgdGhlIGluZm9ybWF0aW9uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdEaXJQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnUmVtb3ZlSW5pRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ1BhdGgnLCBOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J1Jvb3QnLCB1J04nLCAtMSwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bScpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J1JlbW92ZVJlZ2lzdHJ5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1Jlc2VydmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mIHNwYWNlIGlmIHRoaXMgY29tcG9uZW50IGlzIHRvIGJlIGluc3RhbGxlZC4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlRm9sZGVyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeScpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgUmVzZXJ2ZUNvc3QgcmVjb3JkJyksCi0odSdSZXNlcnZlQ29zdCcsIHUnUmVzZXJ2ZUxvY2FsJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgbG9jYWxseS4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlU291cmNlJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgdG8gcnVuIGZyb20gdGhlIHNvdXJjZSBsb2NhdGlvbi4nKSwKLSh1J1NlbGZSZWcnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSByZWdpc3RlcmVkLicpLAotKHUnU2VsZlJlZycsIHUnQ29zdCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IG9mIHJlZ2lzdGVyaW5nIHRoZSBtb2R1bGUuJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdOYW1lIG9mIGEgc2VydmljZS4gLywgXFwsIGNvbW1hIGFuZCBzcGFjZSBhcmUgaW52YWxpZCcpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0V2ZW50JywgdSdOJywgMCwgMTg3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpdCBmaWVsZDogIEluc3RhbGw6ICAweDEgPSBTdGFydCwgMHgyID0gU3RvcCwgMHg4ID0gRGVsZXRlLCBVbmluc3RhbGw6IDB4MTAgPSBTdGFydCwgMHgyMCA9IFN0b3AsIDB4ODAgPSBEZWxldGUnKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnU2VydmljZUNvbnRyb2wnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0FyZ3VtZW50cycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBcmd1bWVudHMgZm9yIHRoZSBzZXJ2aWNlLiAgU2VwYXJhdGUgYnkgW35dLicpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J1dhaXQnLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Jvb2xlYW4gZm9yIHdoZXRoZXIgdG8gd2FpdCBmb3IgdGhlIHNlcnZpY2UgdG8gZnVsbHkgc3RhcnQnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0ludGVybmFsIE5hbWUgb2YgdGhlIFNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGVzY3JpcHRpb24gb2Ygc2VydmljZS4nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FyZ3VtZW50cyB0byBpbmNsdWRlIGluIGV2ZXJ5IHN0YXJ0IG9mIHRoZSBzZXJ2aWNlLCBwYXNzZWQgdG8gV2luTWFpbicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1NlcnZpY2VJbnN0YWxsJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEZXBlbmRlbmNpZXMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnT3RoZXIgc2VydmljZXMgdGhpcyBkZXBlbmRzIG9uIHRvIHN0YXJ0LiAgU2VwYXJhdGUgYnkgW35dLCBhbmQgZW5kIHdpdGggW35dW35dJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnRGlzcGxheU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnRXh0ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0Vycm9yQ29udHJvbCcsIHUnTicsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NldmVyaXR5IG9mIGVycm9yIGlmIHNlcnZpY2UgZmFpbHMgdG8gc3RhcnQnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdMb2FkT3JkZXJHcm91cCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdMb2FkT3JkZXJHcm91cCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1Bhc3N3b3JkJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J3Bhc3N3b3JkIHRvIHJ1biBzZXJ2aWNlIHdpdGguICAod2l0aCBTdGFydE5hbWUpJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU2VydmljZVR5cGUnLCB1J04nLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU3RhcnROYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1VzZXIgb3Igb2JqZWN0IG5hbWUgdG8gcnVuIHNlcnZpY2UgYXMnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTdGFydFR5cGUnLCB1J04nLCAwLCA0LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1Nob3J0Y3V0JywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIHNob3J0Y3V0IHRvIGJlIGNyZWF0ZWQuJyksCi0odSdTaG9ydGN1dCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNob3J0Y3V0LicpLAotKHUnU2hvcnRjdXQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIGRlbm90aW5nIHRoZSBjb21wb25lbnQgd2hvc2Ugc2VsZWN0aW9uIGdhdGVzIHRoZSBzaG9ydGN1dCBjcmVhdGlvbi9kZWxldGlvbi4nKSwKLSh1J1Nob3J0Y3V0JywgdSdJY29uXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnSWNvbicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgZXh0ZXJuYWwgaWNvbiBmaWxlIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaWNvbiBpbmRleCBmb3IgdGhlIHNob3J0Y3V0LicpLAotKHUnU2hvcnRjdXQnLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNob3J0Y3V0IGZpbGUgaXMgY3JlYXRlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdUYXJnZXQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Nob3J0Y3V0JywgTm9uZSwgdSdUaGUgc2hvcnRjdXQgdGFyZ2V0LiBUaGlzIGlzIHVzdWFsbHkgYSBwcm9wZXJ0eSB0aGF0IGlzIGV4cGFuZGVkIHRvIGEgZmlsZSBvciBhIGZvbGRlciB0aGF0IHRoZSBzaG9ydGN1dCBwb2ludHMgdG8uJyksCi0odSdTaG9ydGN1dCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnU2hvcnRjdXQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2hvcnRjdXQnLCB1J0hvdGtleScsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3RrZXkgZm9yIHRoZSBzaG9ydGN1dC4gSXQgaGFzIHRoZSB2aXJ0dWFsLWtleSBjb2RlIGZvciB0aGUga2V5IGluIHRoZSBsb3ctb3JkZXIgYnl0ZSwgYW5kIHRoZSBtb2RpZmllciBmbGFncyBpbiB0aGUgaGlnaC1vcmRlciBieXRlLiAnKSwKLSh1J1Nob3J0Y3V0JywgdSdTaG93Q21kJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzM7NycsIHUnVGhlIHNob3cgY29tbWFuZCBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdy5UaGUgZm9sbG93aW5nIHZhbHVlcyBtYXkgYmUgdXNlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdXa0RpcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSBkZWZpbmluZyBsb2NhdGlvbiBvZiB3b3JraW5nIGRpcmVjdG9yeS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZmlsZS4gVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nKSwKLSh1J1NpZ25hdHVyZScsIHUnU2lnbmF0dXJlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUuJyksCi0odSdTaWduYXR1cmUnLCB1J0xhbmd1YWdlcycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLCBOb25lLCB1J1RoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhEYXRlJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhTaXplJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBmaWxlLiAnKSwKLSh1J1NpZ25hdHVyZScsIHUnTWF4VmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1heGltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluRGF0ZScsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gY3JlYXRpb24gZGF0ZSBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluU2l6ZScsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nKSwKLSh1J1R5cGVMaWInLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSB0eXBlIGxpYnJhcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdUeXBlTGliJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnVHlwZUxpYicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nKSwKLSh1J1R5cGVMaWInLCB1J0RpcmVjdG9yeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwuIFRoZSBmb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIHBhdGggdG8gdGhlIGhlbHAgZmlsZSBmb3IgdGhlIHR5cGUgbGlicmFyeS4nKSwKLSh1J1R5cGVMaWInLCB1J0xhbmd1YWdlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGxhbmd1YWdlIG9mIHRoZSBsaWJyYXJ5LicpLAotKHUnVHlwZUxpYicsIHUnVmVyc2lvbicsIHUnWScsIDAsIDE2Nzc3MjE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiBUaGUgbWlub3IgdmVyc2lvbiBpcyBpbiB0aGUgbG93ZXIgOCBiaXRzIG9mIHRoZSBpbnRlZ2VyLiBUaGUgbWFqb3IgdmVyc2lvbiBpcyBpbiB0aGUgbmV4dCAxNiBiaXRzLiAnKSwKLSh1J1R5cGVMaWInLCB1J0Nvc3QnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSB0eXBlbGliLiBUaGlzIGNvbHVtbiBpcyBjdXJyZW50bHkgb3B0aW9uYWwuJyksCi0odSdUeXBlTGliJywgdSdMaWJJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnVGhlIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBsaWJyYXJ5LicpLAotKHUnVXBncmFkZScsIHUnQXR0cmlidXRlcycsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBwcm9kdWN0IHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J1JlbW92ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgbGlzdCBvZiBmZWF0dXJlcyB0byByZW1vdmUgd2hlbiB1bmluc3RhbGxpbmcgYSBwcm9kdWN0IGZyb20gdGhpcyBzZXQuICBUaGUgZGVmYXVsdCBpcyAiQUxMIi4nKSwKLSh1J1VwZ3JhZGUnLCB1J0xhbmd1YWdlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsIE5vbmUsIHUnQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgZm9yIGVpdGhlciBwcm9kdWN0cyBpbiB0aGlzIHNldCBvciBwcm9kdWN0cyBub3QgaW4gdGhpcyBzZXQuJyksCi0odSdVcGdyYWRlJywgdSdBY3Rpb25Qcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVXBwZXJDYXNlJywgTm9uZSwgdSdUaGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBwcm9kdWN0IGluIHRoaXMgc2V0IGlzIGZvdW5kLicpLAotKHUnVXBncmFkZScsIHUnVXBncmFkZUNvZGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBVcGdyYWRlQ29kZSBHVUlEIGJlbG9uZ2luZyB0byB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuJyksCi0odSdVcGdyYWRlJywgdSdWZXJzaW9uTWF4JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWF4aW11bSBQcm9kdWN0VmVyc2lvbiBvZiB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuICBUaGUgc2V0IG1heSBvciBtYXkgbm90IGluY2x1ZGUgcHJvZHVjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVyc2lvbi4nKSwKLSh1J1VwZ3JhZGUnLCB1J1ZlcnNpb25NaW4nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBtaW5pbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicpLAotKHUnVmVyYicsIHUnU2VxdWVuY2UnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcmRlciB3aXRoaW4gdGhlIHZlcmJzIGZvciBhIHBhcnRpY3VsYXIgZXh0ZW5zaW9uLiBBbHNvIHVzZWQgc2ltcGx5IHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmVyYi4nKSwKLSh1J1ZlcmInLCB1J0FyZ3VtZW50JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J09wdGlvbmFsIHZhbHVlIGZvciB0aGUgY29tbWFuZCBhcmd1bWVudHMuJyksCi0odSdWZXJiJywgdSdFeHRlbnNpb25fJywgdSdOJywgTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLCAxLCB1J1RleHQnLCBOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJyksCi0odSdWZXJiJywgdSdWZXJiJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmVyYiBmb3IgdGhlIGNvbW1hbmQuJyksCi0odSdWZXJiJywgdSdDb21tYW5kJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBjb21tYW5kIHRleHQuJyksCi1dCi0KLUVycm9yID0gWwotKDAsIHUne3tGYXRhbCBlcnJvcjogfX0nKSwKLSgxLCB1J3t7RXJyb3IgWzFdLiB9fScpLAotKDIsIHUnV2FybmluZyBbMV0uICcpLAotKDMsIE5vbmUpLAotKDQsIHUnSW5mbyBbMV0uICcpLAotKDUsIHUnVGhlIGluc3RhbGxlciBoYXMgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCBlcnJvciBpbnN0YWxsaW5nIHRoaXMgcGFja2FnZS4gVGhpcyBtYXkgaW5kaWNhdGUgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiBUaGUgZXJyb3IgY29kZSBpcyBbMV0uIHt7VGhlIGFyZ3VtZW50cyBhcmU6IFsyXSwgWzNdLCBbNF19fScpLAotKDYsIE5vbmUpLAotKDcsIHUne3tEaXNrIGZ1bGw6IH19JyksCi0oOCwgdSdBY3Rpb24gW1RpbWVdOiBbMV0uIFsyXScpLAotKDksIHUnW1Byb2R1Y3ROYW1lXScpLAotKDEwLCB1J3tbMl19eywgWzNdfXssIFs0XX0nKSwKLSgxMSwgdSdNZXNzYWdlIHR5cGU6IFsxXSwgQXJndW1lbnQ6IFsyXScpLAotKDEyLCB1Jz09PSBMb2dnaW5nIHN0YXJ0ZWQ6IFtEYXRlXSAgW1RpbWVdID09PScpLAotKDEzLCB1Jz09PSBMb2dnaW5nIHN0b3BwZWQ6IFtEYXRlXSAgW1RpbWVdID09PScpLAotKDE0LCB1J0FjdGlvbiBzdGFydCBbVGltZV06IFsxXS4nKSwKLSgxNSwgdSdBY3Rpb24gZW5kZWQgW1RpbWVdOiBbMV0uIFJldHVybiB2YWx1ZSBbMl0uJyksCi0oMTYsIHUnVGltZSByZW1haW5pbmc6IHtbMV0gbWludXRlcyB9e1syXSBzZWNvbmRzfScpLAotKDE3LCB1J091dCBvZiBtZW1vcnkuIFNodXQgZG93biBvdGhlciBhcHBsaWNhdGlvbnMgYmVmb3JlIHJldHJ5aW5nLicpLAotKDE4LCB1J0luc3RhbGxlciBpcyBubyBsb25nZXIgcmVzcG9uZGluZy4nKSwKLSgxOSwgdSdJbnN0YWxsZXIgc3RvcHBlZCBwcmVtYXR1cmVseS4nKSwKLSgyMCwgdSdQbGVhc2Ugd2FpdCB3aGlsZSBXaW5kb3dzIGNvbmZpZ3VyZXMgW1Byb2R1Y3ROYW1lXScpLAotKDIxLCB1J0dhdGhlcmluZyByZXF1aXJlZCBpbmZvcm1hdGlvbi4uLicpLAotKDIyLCB1J1JlbW92aW5nIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgYXBwbGljYXRpb24uLi4nKSwKLSgyMywgdSdQcmVwYXJpbmcgdG8gcmVtb3ZlIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgYXBwbGljYXRpb24uLi4nKSwKLSgzMiwgdSd7W1Byb2R1Y3ROYW1lXSB9U2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgzMywgdSd7W1Byb2R1Y3ROYW1lXSB9U2V0dXAgZmFpbGVkLicpLAotKDExMDEsIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGU6IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDEsIHUiQ2Fubm90IGNyZWF0ZSB0aGUgZmlsZSAnWzJdJy4gIEEgZGlyZWN0b3J5IHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiAgQ2FuY2VsIHRoZSBpbnN0YWxsIGFuZCB0cnkgaW5zdGFsbGluZyB0byBhIGRpZmZlcmVudCBsb2NhdGlvbi4iKSwKLSgxMzAyLCB1J1BsZWFzZSBpbnNlcnQgdGhlIGRpc2s6IFsyXScpLAotKDEzMDMsIHUnVGhlIGluc3RhbGxlciBoYXMgaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gYWNjZXNzIHRoaXMgZGlyZWN0b3J5OiBbMl0uICBUaGUgaW5zdGFsbGF0aW9uIGNhbm5vdCBjb250aW51ZS4gIExvZyBvbiBhcyBhZG1pbmlzdHJhdG9yIG9yIGNvbnRhY3QgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvci4nKSwKLSgxMzA0LCB1J0Vycm9yIHdyaXRpbmcgdG8gZmlsZTogWzJdLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5LicpLAotKDEzMDUsIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGUgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19IFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzA2LCB1IkFub3RoZXIgYXBwbGljYXRpb24gaGFzIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGZpbGUgJ1syXScuICBQbGVhc2Ugc2h1dCBkb3duIGFsbCBvdGhlciBhcHBsaWNhdGlvbnMsIHRoZW4gY2xpY2sgUmV0cnkuIiksCi0oMTMwNywgdSdUaGVyZSBpcyBub3QgZW5vdWdoIGRpc2sgc3BhY2UgdG8gaW5zdGFsbCB0aGlzIGZpbGU6IFsyXS4gIEZyZWUgc29tZSBkaXNrIHNwYWNlIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGV4aXQuJyksCi0oMTMwOCwgdSdTb3VyY2UgZmlsZSBub3QgZm91bmQ6IFsyXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzA5LCB1J0Vycm9yIHJlYWRpbmcgZnJvbSBmaWxlOiBbM10uIHt7IFN5c3RlbSBlcnJvciBbMl0ufX0gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzEwLCB1J0Vycm9yIHdyaXRpbmcgdG8gZmlsZTogWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzJdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkuJyksCi0oMTMxMSwgdSdTb3VyY2UgZmlsZSBub3QgZm91bmR7eyhjYWJpbmV0KX19OiBbMl0uICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTMxMiwgdSJDYW5ub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgJ1syXScuICBBIGZpbGUgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuICBQbGVhc2UgcmVuYW1lIG9yIHJlbW92ZSB0aGUgZmlsZSBhbmQgY2xpY2sgcmV0cnksIG9yIGNsaWNrIENhbmNlbCB0byBleGl0LiIpLAotKDEzMTMsIHUnVGhlIHZvbHVtZSBbMl0gaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLiAgUGxlYXNlIHNlbGVjdCBhbm90aGVyLicpLAotKDEzMTQsIHUiVGhlIHNwZWNpZmllZCBwYXRoICdbMl0nIGlzIHVuYXZhaWxhYmxlLiIpLAotKDEzMTUsIHUnVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBzcGVjaWZpZWQgZm9sZGVyOiBbMl0uJyksCi0oMTMxNiwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byByZWFkIGZyb20gdGhlIGZpbGU6IFsyXScpLAotKDEzMTcsIHUnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeTogWzJdJyksCi0oMTMxOCwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeTogWzJdJyksCi0oMTMxOSwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBvcGVuIHRoZSBzb3VyY2UgZmlsZSBjYWJpbmV0OiBbMl0nKSwKLSgxMzIwLCB1J1RoZSBzcGVjaWZpZWQgcGF0aCBpcyB0b28gbG9uZzogWzJdJyksCi0oMTMyMSwgdSdUaGUgSW5zdGFsbGVyIGhhcyBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgdGhpcyBmaWxlOiBbMl0uJyksCi0oMTMyMiwgdSJBIHBvcnRpb24gb2YgdGhlIGZvbGRlciBwYXRoICdbMl0nIGlzIGludmFsaWQuICBJdCBpcyBlaXRoZXIgZW1wdHkgb3IgZXhjZWVkcyB0aGUgbGVuZ3RoIGFsbG93ZWQgYnkgdGhlIHN5c3RlbS4iKSwKLSgxMzIzLCB1IlRoZSBmb2xkZXIgcGF0aCAnWzJdJyBjb250YWlucyB3b3JkcyB0aGF0IGFyZSBub3QgdmFsaWQgaW4gZm9sZGVyIHBhdGhzLiIpLAotKDEzMjQsIHUiVGhlIGZvbGRlciBwYXRoICdbMl0nIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcmFjdGVyLiIpLAotKDEzMjUsIHUiJ1syXScgaXMgbm90IGEgdmFsaWQgc2hvcnQgZmlsZSBuYW1lLiIpLAotKDEzMjYsIHUnRXJyb3IgZ2V0dGluZyBmaWxlIHNlY3VyaXR5OiBbM10gR2V0TGFzdEVycm9yOiBbMl0nKSwKLSgxMzI3LCB1J0ludmFsaWQgRHJpdmU6IFsyXScpLAotKDEzMjgsIHUnRXJyb3IgYXBwbHlpbmcgcGF0Y2ggdG8gZmlsZSBbMl0uICBJdCBoYXMgcHJvYmFibHkgYmVlbiB1cGRhdGVkIGJ5IG90aGVyIG1lYW5zLCBhbmQgY2FuIG5vIGxvbmdlciBiZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gY29udGFjdCB5b3VyIHBhdGNoIHZlbmRvci4gIHt7U3lzdGVtIEVycm9yOiBbM119fScpLAotKDEzMjksIHUnQSBmaWxlIHRoYXQgaXMgcmVxdWlyZWQgY2Fubm90IGJlIGluc3RhbGxlZCBiZWNhdXNlIHRoZSBjYWJpbmV0IGZpbGUgWzJdIGlzIG5vdCBkaWdpdGFsbHkgc2lnbmVkLiAgVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgY2FiaW5ldCBmaWxlIGlzIGNvcnJ1cHQuJyksCi0oMTMzMCwgdSdBIGZpbGUgdGhhdCBpcyByZXF1aXJlZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGJlY2F1c2UgdGhlIGNhYmluZXQgZmlsZSBbMl0gaGFzIGFuIGludmFsaWQgZGlnaXRhbCBzaWduYXR1cmUuICBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBjYWJpbmV0IGZpbGUgaXMgY29ycnVwdC57eyAgRXJyb3IgWzNdIHdhcyByZXR1cm5lZCBieSBXaW5WZXJpZnlUcnVzdC59fScpLAotKDEzMzEsIHUnRmFpbGVkIHRvIGNvcnJlY3RseSBjb3B5IFsyXSBmaWxlOiBDUkMgZXJyb3IuJyksCi0oMTMzMiwgdSdGYWlsZWQgdG8gY29ycmVjdGx5IG1vdmUgWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzMzLCB1J0ZhaWxlZCB0byBjb3JyZWN0bHkgcGF0Y2ggWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzM0LCB1IlRoZSBmaWxlICdbMl0nIGNhbm5vdCBiZSBpbnN0YWxsZWQgYmVjYXVzZSB0aGUgZmlsZSBjYW5ub3QgYmUgZm91bmQgaW4gY2FiaW5ldCBmaWxlICdbM10nLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgbmV0d29yayBlcnJvciwgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBDRC1ST00sIG9yIGEgcHJvYmxlbSB3aXRoIHRoaXMgcGFja2FnZS4iKSwKLSgxMzM1LCB1IlRoZSBjYWJpbmV0IGZpbGUgJ1syXScgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIGlzIGNvcnJ1cHQgYW5kIGNhbm5vdCBiZSB1c2VkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgbmV0d29yayBlcnJvciwgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBDRC1ST00sIG9yIGEgcHJvYmxlbSB3aXRoIHRoaXMgcGFja2FnZS4iKSwKLSgxMzM2LCB1J1RoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyBhIHRlbXBvcmFyeSBmaWxlIHRoYXQgaXMgbmVlZGVkIHRvIGNvbXBsZXRlIHRoaXMgaW5zdGFsbGF0aW9uLnt7ICBGb2xkZXI6IFszXS4gU3lzdGVtIGVycm9yIGNvZGU6IFsyXX19JyksCi0oMTQwMSwgdSdDb3VsZCBub3QgY3JlYXRlIGtleTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDAyLCB1J0NvdWxkIG5vdCBvcGVuIGtleTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDAzLCB1J0NvdWxkIG5vdCBkZWxldGUgdmFsdWUgWzJdIGZyb20ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNCwgdSdDb3VsZCBub3QgZGVsZXRlIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDUsIHUnQ291bGQgbm90IHJlYWQgdmFsdWUgWzJdIGZyb20ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNiwgdSdDb3VsZCBub3Qgd3JpdGUgdmFsdWUgWzJdIHRvIGtleSBbM10uIHt7IFN5c3RlbSBlcnJvciBbNF0ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwNywgdSdDb3VsZCBub3QgZ2V0IHZhbHVlIG5hbWVzIGZvciBrZXkgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE0MDgsIHUnQ291bGQgbm90IGdldCBzdWIga2V5IG5hbWVzIGZvciBrZXkgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE0MDksIHUnQ291bGQgbm90IHJlYWQgc2VjdXJpdHkgaW5mb3JtYXRpb24gZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQxMCwgdSdDb3VsZCBub3QgaW5jcmVhc2UgdGhlIGF2YWlsYWJsZSByZWdpc3RyeSBzcGFjZS4gWzJdIEtCIG9mIGZyZWUgcmVnaXN0cnkgc3BhY2UgaXMgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhpcyBhcHBsaWNhdGlvbi4nKSwKLSgxNTAwLCB1J0Fub3RoZXIgaW5zdGFsbGF0aW9uIGlzIGluIHByb2dyZXNzLiBZb3UgbXVzdCBjb21wbGV0ZSB0aGF0IGluc3RhbGxhdGlvbiBiZWZvcmUgY29udGludWluZyB0aGlzIG9uZS4nKSwKLSgxNTAxLCB1J0Vycm9yIGFjY2Vzc2luZyBzZWN1cmVkIGRhdGEuIFBsZWFzZSBtYWtlIHN1cmUgdGhlIFdpbmRvd3MgSW5zdGFsbGVyIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkgYW5kIHRyeSB0aGUgaW5zdGFsbCBhZ2Fpbi4nKSwKLSgxNTAyLCB1IlVzZXIgJ1syXScgaGFzIHByZXZpb3VzbHkgaW5pdGlhdGVkIGFuIGluc3RhbGwgZm9yIHByb2R1Y3QgJ1szXScuICBUaGF0IHVzZXIgd2lsbCBuZWVkIHRvIHJ1biB0aGF0IGluc3RhbGwgYWdhaW4gYmVmb3JlIHRoZXkgY2FuIHVzZSB0aGF0IHByb2R1Y3QuICBZb3VyIGN1cnJlbnQgaW5zdGFsbCB3aWxsIG5vdyBjb250aW51ZS4iKSwKLSgxNTAzLCB1IlVzZXIgJ1syXScgaGFzIHByZXZpb3VzbHkgaW5pdGlhdGVkIGFuIGluc3RhbGwgZm9yIHByb2R1Y3QgJ1szXScuICBUaGF0IHVzZXIgd2lsbCBuZWVkIHRvIHJ1biB0aGF0IGluc3RhbGwgYWdhaW4gYmVmb3JlIHRoZXkgY2FuIHVzZSB0aGF0IHByb2R1Y3QuIiksCi0oMTYwMSwgdSJPdXQgb2YgZGlzayBzcGFjZSAtLSBWb2x1bWU6ICdbMl0nOyByZXF1aXJlZCBzcGFjZTogWzNdIEtCOyBhdmFpbGFibGUgc3BhY2U6IFs0XSBLQi4gIEZyZWUgc29tZSBkaXNrIHNwYWNlIGFuZCByZXRyeS4iKSwKLSgxNjAyLCB1J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/JyksCi0oMTYwMywgdSJUaGUgZmlsZSBbMl1bM10gaXMgYmVpbmcgaGVsZCBpbiB1c2V7IGJ5IHRoZSBmb2xsb3dpbmcgcHJvY2VzczogTmFtZTogWzRdLCBJZDogWzVdLCBXaW5kb3cgVGl0bGU6ICdbNl0nfS4gIENsb3NlIHRoYXQgYXBwbGljYXRpb24gYW5kIHJldHJ5LiIpLAotKDE2MDQsIHUiVGhlIHByb2R1Y3QgJ1syXScgaXMgYWxyZWFkeSBpbnN0YWxsZWQsIHByZXZlbnRpbmcgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIHByb2R1Y3QuICBUaGUgdHdvIHByb2R1Y3RzIGFyZSBpbmNvbXBhdGlibGUuIiksCi0oMTYwNSwgdSJUaGVyZSBpcyBub3QgZW5vdWdoIGRpc2sgc3BhY2Ugb24gdGhlIHZvbHVtZSAnWzJdJyB0byBjb250aW51ZSB0aGUgaW5zdGFsbCB3aXRoIHJlY292ZXJ5IGVuYWJsZWQuIFszXSBLQiBhcmUgcmVxdWlyZWQsIGJ1dCBvbmx5IFs0XSBLQiBhcmUgYXZhaWxhYmxlLiBDbGljayBJZ25vcmUgdG8gY29udGludWUgdGhlIGluc3RhbGwgd2l0aG91dCBzYXZpbmcgcmVjb3ZlcnkgaW5mb3JtYXRpb24sIGNsaWNrIFJldHJ5IHRvIGNoZWNrIGZvciBhdmFpbGFibGUgc3BhY2UgYWdhaW4sIG9yIGNsaWNrIENhbmNlbCB0byBxdWl0IHRoZSBpbnN0YWxsYXRpb24uIiksCi0oMTYwNiwgdSdDb3VsZCBub3QgYWNjZXNzIG5ldHdvcmsgbG9jYXRpb24gWzJdLicpLAotKDE2MDcsIHUnVGhlIGZvbGxvd2luZyBhcHBsaWNhdGlvbnMgc2hvdWxkIGJlIGNsb3NlZCBiZWZvcmUgY29udGludWluZyB0aGUgaW5zdGFsbDonKSwKLSgxNjA4LCB1J0NvdWxkIG5vdCBmaW5kIGFueSBwcmV2aW91c2x5IGluc3RhbGxlZCBjb21wbGlhbnQgcHJvZHVjdHMgb24gdGhlIG1hY2hpbmUgZm9yIGluc3RhbGxpbmcgdGhpcyBwcm9kdWN0LicpLAotKDE2MDksIHUiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXBwbHlpbmcgc2VjdXJpdHkgc2V0dGluZ3MuIFsyXSBpcyBub3QgYSB2YWxpZCB1c2VyIG9yIGdyb3VwLiBUaGlzIGNvdWxkIGJlIGEgcHJvYmxlbSB3aXRoIHRoZSBwYWNrYWdlLCBvciBhIHByb2JsZW0gY29ubmVjdGluZyB0byBhIGRvbWFpbiBjb250cm9sbGVyIG9uIHRoZSBuZXR3b3JrLiBDaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgY2xpY2sgUmV0cnksIG9yIENhbmNlbCB0byBlbmQgdGhlIGluc3RhbGwuIHt7VW5hYmxlIHRvIGxvY2F0ZSB0aGUgdXNlcidzIFNJRCwgc3lzdGVtIGVycm9yIFszXX19IiksCi0oMTcwMSwgdSdUaGUga2V5IFsyXSBpcyBub3QgdmFsaWQuICBWZXJpZnkgdGhhdCB5b3UgZW50ZXJlZCB0aGUgY29ycmVjdCBrZXkuJyksCi0oMTcwMiwgdSdUaGUgaW5zdGFsbGVyIG11c3QgcmVzdGFydCB5b3VyIHN5c3RlbSBiZWZvcmUgY29uZmlndXJhdGlvbiBvZiBbMl0gY2FuIGNvbnRpbnVlLiAgQ2xpY2sgWWVzIHRvIHJlc3RhcnQgbm93IG9yIE5vIGlmIHlvdSBwbGFuIHRvIG1hbnVhbGx5IHJlc3RhcnQgbGF0ZXIuJyksCi0oMTcwMywgdSdZb3UgbXVzdCByZXN0YXJ0IHlvdXIgc3lzdGVtIGZvciB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG1hZGUgdG8gWzJdIHRvIHRha2UgZWZmZWN0LiBDbGljayBZZXMgdG8gcmVzdGFydCBub3cgb3IgTm8gaWYgeW91IHBsYW4gdG8gbWFudWFsbHkgcmVzdGFydCBsYXRlci4nKSwKLSgxNzA0LCB1J0FuIGluc3RhbGxhdGlvbiBmb3IgWzJdIGlzIGN1cnJlbnRseSBzdXNwZW5kZWQuICBZb3UgbXVzdCB1bmRvIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhhdCBpbnN0YWxsYXRpb24gdG8gY29udGludWUuICBEbyB5b3Ugd2FudCB0byB1bmRvIHRob3NlIGNoYW5nZXM/JyksCi0oMTcwNSwgdSdBIHByZXZpb3VzIGluc3RhbGxhdGlvbiBmb3IgdGhpcyBwcm9kdWN0IGlzIGluIHByb2dyZXNzLiAgWW91IG11c3QgdW5kbyB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoYXQgaW5zdGFsbGF0aW9uIHRvIGNvbnRpbnVlLiAgRG8geW91IHdhbnQgdG8gdW5kbyB0aG9zZSBjaGFuZ2VzPycpLAotKDE3MDYsIHUiQW4gaW5zdGFsbGF0aW9uIHBhY2thZ2UgZm9yIHRoZSBwcm9kdWN0IFsyXSBjYW5ub3QgYmUgZm91bmQuIFRyeSB0aGUgaW5zdGFsbGF0aW9uIGFnYWluIHVzaW5nIGEgdmFsaWQgY29weSBvZiB0aGUgaW5zdGFsbGF0aW9uIHBhY2thZ2UgJ1szXScuIiksCi0oMTcwNywgdSdJbnN0YWxsYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzA4LCB1J0luc3RhbGxhdGlvbiBmYWlsZWQuJyksCi0oMTcwOSwgdSdQcm9kdWN0OiBbMl0gLS0gWzNdJyksCi0oMTcxMCwgdSdZb3UgbWF5IGVpdGhlciByZXN0b3JlIHlvdXIgY29tcHV0ZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlIG9yIGNvbnRpbnVlIHRoZSBpbnN0YWxsIGxhdGVyLiBXb3VsZCB5b3UgbGlrZSB0byByZXN0b3JlPycpLAotKDE3MTEsIHUnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgd3JpdGluZyBpbnN0YWxsYXRpb24gaW5mb3JtYXRpb24gdG8gZGlzay4gIENoZWNrIHRvIG1ha2Ugc3VyZSBlbm91Z2ggZGlzayBzcGFjZSBpcyBhdmFpbGFibGUsIGFuZCBjbGljayBSZXRyeSwgb3IgQ2FuY2VsIHRvIGVuZCB0aGUgaW5zdGFsbC4nKSwKLSgxNzEyLCB1J09uZSBvciBtb3JlIG9mIHRoZSBmaWxlcyByZXF1aXJlZCB0byByZXN0b3JlIHlvdXIgY29tcHV0ZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gIFJlc3RvcmF0aW9uIHdpbGwgbm90IGJlIHBvc3NpYmxlLicpLAotKDE3MTMsIHUnWzJdIGNhbm5vdCBpbnN0YWxsIG9uZSBvZiBpdHMgcmVxdWlyZWQgcHJvZHVjdHMuIENvbnRhY3QgeW91ciB0ZWNobmljYWwgc3VwcG9ydCBncm91cC4gIHt7U3lzdGVtIEVycm9yOiBbM10ufX0nKSwKLSgxNzE0LCB1J1RoZSBvbGRlciB2ZXJzaW9uIG9mIFsyXSBjYW5ub3QgYmUgcmVtb3ZlZC4gIENvbnRhY3QgeW91ciB0ZWNobmljYWwgc3VwcG9ydCBncm91cC4gIHt7U3lzdGVtIEVycm9yIFszXS59fScpLAotKDE3MTUsIHUnSW5zdGFsbGVkIFsyXScpLAotKDE3MTYsIHUnQ29uZmlndXJlZCBbMl0nKSwKLSgxNzE3LCB1J1JlbW92ZWQgWzJdJyksCi0oMTcxOCwgdSdGaWxlIFsyXSB3YXMgcmVqZWN0ZWQgYnkgZGlnaXRhbCBzaWduYXR1cmUgcG9saWN5LicpLAotKDE3MTksIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIFNlcnZpY2UgY291bGQgbm90IGJlIGFjY2Vzc2VkLiBUaGlzIGNhbiBvY2N1ciBpZiB5b3UgYXJlIHJ1bm5pbmcgV2luZG93cyBpbiBzYWZlIG1vZGUsIG9yIGlmIHRoZSBXaW5kb3dzIEluc3RhbGxlciBpcyBub3QgY29ycmVjdGx5IGluc3RhbGxlZC4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBhc3Npc3RhbmNlLicpLAotKDE3MjAsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHNjcmlwdCByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7Q3VzdG9tIGFjdGlvbiBbMl0gc2NyaXB0IGVycm9yIFszXSwgWzRdOiBbNV0gTGluZSBbNl0sIENvbHVtbiBbN10sIFs4XSB9fScpLAotKDE3MjEsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHByb2dyYW0gcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbCB0byBjb21wbGV0ZSBjb3VsZCBub3QgYmUgcnVuLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgb3IgcGFja2FnZSB2ZW5kb3IuIHt7QWN0aW9uOiBbMl0sIGxvY2F0aW9uOiBbM10sIGNvbW1hbmQ6IFs0XSB9fScpLAotKDE3MjIsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHByb2dyYW0gcnVuIGFzIHBhcnQgb2YgdGhlIHNldHVwIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgb3IgcGFja2FnZSB2ZW5kb3IuICB7e0FjdGlvbiBbMl0sIGxvY2F0aW9uOiBbM10sIGNvbW1hbmQ6IFs0XSB9fScpLAotKDE3MjMsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIERMTCByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7QWN0aW9uIFsyXSwgZW50cnk6IFszXSwgbGlicmFyeTogWzRdIH19JyksCi0oMTcyNCwgdSdSZW1vdmFsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuJyksCi0oMTcyNSwgdSdSZW1vdmFsIGZhaWxlZC4nKSwKLSgxNzI2LCB1J0FkdmVydGlzZW1lbnQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzI3LCB1J0FkdmVydGlzZW1lbnQgZmFpbGVkLicpLAotKDE3MjgsIHUnQ29uZmlndXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MjksIHUnQ29uZmlndXJhdGlvbiBmYWlsZWQuJyksCi0oMTczMCwgdSdZb3UgbXVzdCBiZSBhbiBBZG1pbmlzdHJhdG9yIHRvIHJlbW92ZSB0aGlzIGFwcGxpY2F0aW9uLiBUbyByZW1vdmUgdGhpcyBhcHBsaWNhdGlvbiwgeW91IGNhbiBsb2cgb24gYXMgYW4gQWRtaW5pc3RyYXRvciwgb3IgY29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwIGZvciBhc3Npc3RhbmNlLicpLAotKDE4MDEsIHUnVGhlIHBhdGggWzJdIGlzIG5vdCB2YWxpZC4gIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgcGF0aC4nKSwKLSgxODAyLCB1J091dCBvZiBtZW1vcnkuIFNodXQgZG93biBvdGhlciBhcHBsaWNhdGlvbnMgYmVmb3JlIHJldHJ5aW5nLicpLAotKDE4MDMsIHUnVGhlcmUgaXMgbm8gZGlzayBpbiBkcml2ZSBbMl0uIFBsZWFzZSBpbnNlcnQgb25lIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGdvIGJhY2sgdG8gdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgdm9sdW1lLicpLAotKDE4MDQsIHUnVGhlcmUgaXMgbm8gZGlzayBpbiBkcml2ZSBbMl0uIFBsZWFzZSBpbnNlcnQgb25lIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIHJldHVybiB0byB0aGUgYnJvd3NlIGRpYWxvZyBhbmQgc2VsZWN0IGEgZGlmZmVyZW50IHZvbHVtZS4nKSwKLSgxODA1LCB1J1RoZSBmb2xkZXIgWzJdIGRvZXMgbm90IGV4aXN0LiAgUGxlYXNlIGVudGVyIGEgcGF0aCB0byBhbiBleGlzdGluZyBmb2xkZXIuJyksCi0oMTgwNiwgdSdZb3UgaGF2ZSBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byByZWFkIHRoaXMgZm9sZGVyLicpLAotKDE4MDcsIHUnQSB2YWxpZCBkZXN0aW5hdGlvbiBmb2xkZXIgZm9yIHRoZSBpbnN0YWxsIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLicpLAotKDE5MDEsIHUnRXJyb3IgYXR0ZW1wdGluZyB0byByZWFkIGZyb20gdGhlIHNvdXJjZSBpbnN0YWxsIGRhdGFiYXNlOiBbMl0uJyksCi0oMTkwMiwgdSdTY2hlZHVsaW5nIHJlYm9vdCBvcGVyYXRpb246IFJlbmFtaW5nIGZpbGUgWzJdIHRvIFszXS4gTXVzdCByZWJvb3QgdG8gY29tcGxldGUgb3BlcmF0aW9uLicpLAotKDE5MDMsIHUnU2NoZWR1bGluZyByZWJvb3Qgb3BlcmF0aW9uOiBEZWxldGluZyBmaWxlIFsyXS4gTXVzdCByZWJvb3QgdG8gY29tcGxldGUgb3BlcmF0aW9uLicpLAotKDE5MDQsIHUnTW9kdWxlIFsyXSBmYWlsZWQgdG8gcmVnaXN0ZXIuICBIUkVTVUxUIFszXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTA1LCB1J01vZHVsZSBbMl0gZmFpbGVkIHRvIHVucmVnaXN0ZXIuICBIUkVTVUxUIFszXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTA2LCB1J0ZhaWxlZCB0byBjYWNoZSBwYWNrYWdlIFsyXS4gRXJyb3I6IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDcsIHUnQ291bGQgbm90IHJlZ2lzdGVyIGZvbnQgWzJdLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBpbnN0YWxsIGZvbnRzLCBhbmQgdGhhdCB0aGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMgZm9udC4nKSwKLSgxOTA4LCB1J0NvdWxkIG5vdCB1bnJlZ2lzdGVyIGZvbnQgWzJdLiBWZXJpZnkgdGhhdCB5b3UgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHJlbW92ZSBmb250cy4nKSwKLSgxOTA5LCB1J0NvdWxkIG5vdCBjcmVhdGUgU2hvcnRjdXQgWzJdLiBWZXJpZnkgdGhhdCB0aGUgZGVzdGluYXRpb24gZm9sZGVyIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTEwLCB1J0NvdWxkIG5vdCByZW1vdmUgU2hvcnRjdXQgWzJdLiBWZXJpZnkgdGhhdCB0aGUgc2hvcnRjdXQgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxMSwgdSdDb3VsZCBub3QgcmVnaXN0ZXIgdHlwZSBsaWJyYXJ5IGZvciBmaWxlIFsyXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTEyLCB1J0NvdWxkIG5vdCB1bnJlZ2lzdGVyIHR5cGUgbGlicmFyeSBmb3IgZmlsZSBbMl0uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkxMywgdSdDb3VsZCBub3QgdXBkYXRlIHRoZSBpbmkgZmlsZSBbMl1bM10uICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxNCwgdSdDb3VsZCBub3Qgc2NoZWR1bGUgZmlsZSBbMl0gdG8gcmVwbGFjZSBmaWxlIFszXSBvbiByZWJvb3QuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyB0byBmaWxlIFszXS4nKSwKLSgxOTE1LCB1J0Vycm9yIHJlbW92aW5nIE9EQkMgZHJpdmVyIG1hbmFnZXIsIE9EQkMgZXJyb3IgWzJdOiBbM10uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTE2LCB1J0Vycm9yIGluc3RhbGxpbmcgT0RCQyBkcml2ZXIgbWFuYWdlciwgT0RCQyBlcnJvciBbMl06IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTcsIHUnRXJyb3IgcmVtb3ZpbmcgT0RCQyBkcml2ZXI6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlbW92ZSBPREJDIGRyaXZlcnMuJyksCi0oMTkxOCwgdSdFcnJvciBpbnN0YWxsaW5nIE9EQkMgZHJpdmVyOiBbNF0sIE9EQkMgZXJyb3IgWzJdOiBbM10uIFZlcmlmeSB0aGF0IHRoZSBmaWxlIFs0XSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxOSwgdSdFcnJvciBjb25maWd1cmluZyBPREJDIGRhdGEgc291cmNlOiBbNF0sIE9EQkMgZXJyb3IgWzJdOiBbM10uIFZlcmlmeSB0aGF0IHRoZSBmaWxlIFs0XSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkyMCwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGZhaWxlZCB0byBzdGFydC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBzdGFydCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMSwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBzdG9wcGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHN0b3Agc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjIsIHUiU2VydmljZSAnWzJdJyAoWzNdKSBjb3VsZCBub3QgYmUgZGVsZXRlZC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byByZW1vdmUgc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjMsIHUiU2VydmljZSAnWzJdJyAoWzNdKSBjb3VsZCBub3QgYmUgaW5zdGFsbGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIGluc3RhbGwgc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjQsIHUiQ291bGQgbm90IHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAnWzJdJy4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIpLAotKDE5MjUsIHUnWW91IGRvIG5vdCBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBjb21wbGV0ZSB0aGlzIGluc3RhbGxhdGlvbiBmb3IgYWxsIHVzZXJzIG9mIHRoZSBtYWNoaW5lLiAgTG9nIG9uIGFzIGFkbWluaXN0cmF0b3IgYW5kIHRoZW4gcmV0cnkgdGhpcyBpbnN0YWxsYXRpb24uJyksCi0oMTkyNiwgdSJDb3VsZCBub3Qgc2V0IGZpbGUgc2VjdXJpdHkgZm9yIGZpbGUgJ1szXScuIEVycm9yOiBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gbW9kaWZ5IHRoZSBzZWN1cml0eSBwZXJtaXNzaW9ucyBmb3IgdGhpcyBmaWxlLiIpLAotKDE5MjcsIHUnQ29tcG9uZW50IFNlcnZpY2VzIChDT00rIDEuMCkgYXJlIG5vdCBpbnN0YWxsZWQgb24gdGhpcyBjb21wdXRlci4gIFRoaXMgaW5zdGFsbGF0aW9uIHJlcXVpcmVzIENvbXBvbmVudCBTZXJ2aWNlcyBpbiBvcmRlciB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuICBDb21wb25lbnQgU2VydmljZXMgYXJlIGF2YWlsYWJsZSBvbiBXaW5kb3dzIDIwMDAuJyksCi0oMTkyOCwgdSdFcnJvciByZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9uLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBtb3JlIGluZm9ybWF0aW9uLicpLAotKDE5MjksIHUnRXJyb3IgdW5yZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9uLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBtb3JlIGluZm9ybWF0aW9uLicpLAotKDE5MzAsIHUiVGhlIGRlc2NyaXB0aW9uIGZvciBzZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBjaGFuZ2VkLiIpLAotKDE5MzEsIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIHNlcnZpY2UgY2Fubm90IHVwZGF0ZSB0aGUgc3lzdGVtIGZpbGUgWzJdIGJlY2F1c2UgdGhlIGZpbGUgaXMgcHJvdGVjdGVkIGJ5IFdpbmRvd3MuICBZb3UgbWF5IG5lZWQgdG8gdXBkYXRlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBmb3IgdGhpcyBwcm9ncmFtIHRvIHdvcmsgY29ycmVjdGx5LiB7e1BhY2thZ2UgdmVyc2lvbjogWzNdLCBPUyBQcm90ZWN0ZWQgdmVyc2lvbjogWzRdfX0nKSwKLSgxOTMyLCB1J1RoZSBXaW5kb3dzIEluc3RhbGxlciBzZXJ2aWNlIGNhbm5vdCB1cGRhdGUgdGhlIHByb3RlY3RlZCBXaW5kb3dzIGZpbGUgWzJdLiB7e1BhY2thZ2UgdmVyc2lvbjogWzNdLCBPUyBQcm90ZWN0ZWQgdmVyc2lvbjogWzRdLCBTRlAgRXJyb3I6IFs1XX19JyksCi0oMTkzMywgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgc2VydmljZSBjYW5ub3QgdXBkYXRlIG9uZSBvciBtb3JlIHByb3RlY3RlZCBXaW5kb3dzIGZpbGVzLiB7e1NGUCBFcnJvcjogWzJdLiAgTGlzdCBvZiBwcm90ZWN0ZWQgZmlsZXM6XFxyXFxuWzNdfX0nKSwKLSgxOTM0LCB1J1VzZXIgaW5zdGFsbGF0aW9ucyBhcmUgZGlzYWJsZWQgdmlhIHBvbGljeSBvbiB0aGUgbWFjaGluZS4nKSwKLSgxOTM1LCB1J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIGFzc2VtYmx5IGNvbXBvbmVudCBbMl0uIEhSRVNVTFQ6IFszXS4ge3thc3NlbWJseSBpbnRlcmZhY2U6IFs0XSwgZnVuY3Rpb246IFs1XSwgYXNzZW1ibHkgbmFtZTogWzZdfX0nKSwKLV0KLQotdGFibGVzPVsnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCAnQWRtaW5VSVNlcXVlbmNlJywgJ0FkdnRFeGVjdXRlU2VxdWVuY2UnLCAnQkJDb250cm9sJywgJ0JpbGxib2FyZCcsICdCaW5hcnknLCAnQ2hlY2tCb3gnLCAnUHJvcGVydHknLCAnQ29tYm9Cb3gnLCAnQ29udHJvbCcsICdMaXN0Qm94JywgJ0FjdGlvblRleHQnLCAnQ29udHJvbENvbmRpdGlvbicsICdDb250cm9sRXZlbnQnLCAnRGlhbG9nJywgJ0V2ZW50TWFwcGluZycsICdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJywgJ0luc3RhbGxVSVNlcXVlbmNlJywgJ0xpc3RWaWV3JywgJ1JhZGlvQnV0dG9uJywgJ1RleHRTdHlsZScsICdVSVRleHQnLCAnX1ZhbGlkYXRpb24nLCAnRXJyb3InXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Njc2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQKQEAgLTAsMCArMSw1NiBAQAorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lRCUuLlwuLlxQQ0J1aWxkXA0KKw0KK3NldCBIT1NUPQ0KK3NldCBVU0VSPQ0KK3NldCBUQVJHRVQ9DQorc2V0IERSWVJVTj1mYWxzZQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICItbyIgKHNldCBIT1NUPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1ob3N0IiAoc2V0IEhPU1Q9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdSIgKHNldCBVU0VSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS11c2VyIiAoc2V0IFVTRVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRhcmdldCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWRyeS1ydW4iIChzZXQgRFJZUlVOPXRydWUpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgcGxpbmsgPiAiJVRFTVAlXHBsaW5rLmxvYyIgMj4gbnVsICYmIHNldCAvUCBQTElOSz0gPCAiJVRFTVAlXHBsaW5rLmxvYyIgJiBkZWwgIiVURU1QJVxwbGluay5sb2MiDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBsaW5rID4gIiVURU1QJVxwbGluay5sb2MiIDI+IG51bCAmJiBzZXQgL1AgUExJTks9IDwgIiVURU1QJVxwbGluay5sb2MiICYgZGVsICIlVEVNUCVccGxpbmsubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBMSU5LIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwbGluayA+ICIlVEVNUCVccGxpbmsubG9jIiAyPiBudWwgJiYgc2V0IC9QIFBMSU5LPSA8ICIlVEVNUCVccGxpbmsubG9jIiAmIGRlbCAiJVRFTVAlXHBsaW5rLmxvYyINCitpZiBub3QgZGVmaW5lZCBQTElOSyBlY2hvIENhbm5vdCBsb2NhdGUgcGxpbmsuZXhlICYgZXhpdCAvQiAxDQorZWNobyBGb3VuZCBwbGluay5leGUgYXQgJVBMSU5LJQ0KKw0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgcHNjcCA+ICIlVEVNUCVccHNjcC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgcHNjcD0gPCAiJVRFTVAlXHBzY3AubG9jIiAmIGRlbCAiJVRFTVAlXHBzY3AubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBzY3AgPiAiJVRFTVAlXHBzY3AubG9jIiAyPiBudWwgJiYgc2V0IC9QIHBzY3A9IDwgIiVURU1QJVxwc2NwLmxvYyIgJiBkZWwgIiVURU1QJVxwc2NwLmxvYyINCitpZiBub3QgZGVmaW5lZCBQU0NQIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwc2NwID4gIiVURU1QJVxwc2NwLmxvYyIgMj4gbnVsICYmIHNldCAvUCBwc2NwPSA8ICIlVEVNUCVccHNjcC5sb2MiICYgZGVsICIlVEVNUCVccHNjcC5sb2MiDQoraWYgbm90IGRlZmluZWQgUFNDUCBlY2hvIENhbm5vdCBsb2NhdGUgcHNjcC5leGUgJiBleGl0IC9CIDENCitlY2hvIEZvdW5kIHBzY3AuZXhlIGF0ICVQU0NQJQ0KKw0KK2lmIG5vdCBkZWZpbmVkIEdQRyB3aGVyZSBncGcyID4gIiVURU1QJVxncGcubG9jIiAyPiBudWwgJiYgc2V0IC9QIEdQRz0gPCAiJVRFTVAlXGdwZy5sb2MiICYgZGVsICIlVEVNUCVcZ3BnLmxvYyINCitpZiBub3QgZGVmaW5lZCBHUEcgd2hlcmUgL1IgIiVQQ0JVSUxEJS4uXGV4dGVybmFscyIgZ3BnMiA+ICIlVEVNUCVcZ3BnLmxvYyIgMj4gbnVsICYmIHNldCAvUCBHUEc9IDwgIiVURU1QJVxncGcubG9jIiAmIGRlbCAiJVRFTVAlXGdwZy5sb2MiDQoraWYgbm90IGRlZmluZWQgR1BHIGVjaG8gQ2Fubm90IGxvY2F0ZSBncGcyLmV4ZS4gU2lnbmF0dXJlcyB3aWxsIG5vdCBiZSB1cGxvYWRlZCAmIHBhdXNlDQorZWNobyBGb3VuZCBncGcyLmV4ZSBhdCAlR1BHJQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiID4gbnVsIDI+IG51bA0KK3B1c2hkICIlRCUiDQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlVwbG9hZCAvcDpQbGF0Zm9ybT14ODYNCittc2J1aWxkIC92Om0gL25vbG9nbyB1cGxvYWRyZWxlYXNlLnByb2ogL3Q6VXBsb2FkIC9wOlBsYXRmb3JtPXg2NCAvcDpJbmNsdWRlRG9jPWZhbHNlDQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlNob3dIYXNoZXMgL3A6UGxhdGZvcm09eDg2DQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlNob3dIYXNoZXMgL3A6UGxhdGZvcm09eDY0IC9wOkluY2x1ZGVEb2M9ZmFsc2UNCitwb3BkDQorZXhpdCAvQiAwDQorDQorOkhlbHANCitlY2hvIHVwbG9hZHJlbGVhc2UuYmF0IC0taG9zdCBIT1NUIC0tdXNlciBVU0VSTkFNRSBbLS10YXJnZXQgVEFSR0VUXSBbLS1kcnktcnVuXSBbLWhdDQorZWNoby4NCitlY2hvICAgIC0taG9zdCAoLW8pICAgICBTcGVjaWZ5IHRoZSB1cGxvYWQgaG9zdCAocmVxdWlyZWQpDQorZWNobyAgICAtLXVzZXIgKC11KSAgICAgU3BlY2lmeSB0aGUgdXNlciBvbiB0aGUgaG9zdCAocmVxdWlyZWQpDQorZWNobyAgICAtLXRhcmdldCAoLXQpICAgU3BlY2lmeSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBvbiB0aGUgaG9zdA0KK2VjaG8gICAgLS1kcnktcnVuICAgICAgIERpc3BsYXkgY29tbWFuZHMgYW5kIGZpbGVuYW1lcyB3aXRob3V0IGV4ZWN1dGluZyB0aGVtDQorZWNobyAgICAtaCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLnByb2ogYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNGVkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5wcm9qCkBAIC0wLDAgKzEsODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsyRDY5RjJBQi1ENUQwLTQzNDQtODRCNS1FRjZEQjM0QTlCQzl9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgICAgICAKKyAgICAgICAgPERvd25sb2FkVXJsQmFzZSBDb25kaXRpb249IickKERvd25sb2FkVXJsQmFzZSknID09ICcnIj4kKFRBUkdFVCk8L0Rvd25sb2FkVXJsQmFzZT4KKyAgICAgICAgPERvd25sb2FkVXJsQmFzZSBDb25kaXRpb249IickKERvd25sb2FkVXJsQmFzZSknID09ICcnIj4vc3J2L3d3dy5weXRob24ub3JnL2Z0cC9weXRob248L0Rvd25sb2FkVXJsQmFzZT4KKyAgICAgICAgPEluY2x1ZGVEb2MgQ29uZGl0aW9uPSInJChJbmNsdWRlRG9jKScgPT0gJyciPnRydWU8L0luY2x1ZGVEb2M+CisgICAgICAgIDxEcnlSdW4gQ29uZGl0aW9uPSInJChEcnlSdW4pJyA9PSAnJyI+ZmFsc2U8L0RyeVJ1bj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Im1zaS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZVxidW5kbGUudGFyZ2V0cyIgLz4KKyAgICAKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPEVYRVRhcmdldD4kKERvd25sb2FkVXJsQmFzZS5UcmltRW5kKGAvYCkpLyQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpPC9FWEVUYXJnZXQ+CisgICAgICAgIDxNU0lUYXJnZXQ+JChEb3dubG9hZFVybC5UcmltRW5kKGAvYCkpPC9NU0lUYXJnZXQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoT3V0cHV0UGF0aClcKi5tc2k7JChPdXRwdXRQYXRoKVwqLm1zdSI+CisgICAgICAgICAgICA8Q29weVRvPiQoTVNJVGFyZ2V0KTwvQ29weVRvPgorICAgICAgICA8L0ZpbGU+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoT3V0cHV0UGF0aClcKi5leGU7JChPdXRwdXRQYXRoKVwqLnppcCI+CisgICAgICAgICAgICA8Q29weVRvPiQoRVhFVGFyZ2V0KTwvQ29weVRvPgorICAgICAgICA8L0ZpbGU+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKURvY1xidWlsZFxodG1saGVscFxweXRob24kKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlcikkKE1pY3JvVmVyc2lvbk51bWJlcikkKFJlbGVhc2VMZXZlbE5hbWUpLmNobSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVEb2MpIj4KKyAgICAgICAgICAgIDxDb3B5VG8+JChFWEVUYXJnZXQpPC9Db3B5VG8+CisgICAgICAgIDwvRmlsZT4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9WYWxpZGF0ZVByb3BlcnRpZXMiPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gdmFsdWUgZm9yIEhvc3QgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoSG9zdCknID09ICcnIiAvPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gdmFsdWUgZm9yIFVzZXIgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoVXNlciknID09ICcnIiAvPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gcGF0aCBmb3IgUFNDUCBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChQU0NQKScgPT0gJyciIC8+CisgICAgICAgIDxFcnJvciBUZXh0PSJObyBwYXRoIGZvciBQTElOSyBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChQTElOSyknID09ICcnIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1J1bkdwZyIgQ29uZGl0aW9uPSInJChHUEcpJyAhPSAnJyIgSW5wdXRzPSJAKEZpbGUpIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGVOYW1lKSUoRXh0ZW5zaW9uKS5hc2MiPgorICAgICAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKWdwZyIgLz4KKyAgICAgICAgPERlbGV0ZSBGaWxlcz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlLkZpbGVOYW1lKSUoRmlsZS5FeHRlbnNpb24pLmFzYyIgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZS5GaWxlTmFtZSklKEZpbGUuRXh0ZW5zaW9uKS5hc2MnKSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJnF1b3Q7JChHUEcpJnF1b3Q7IC1iYSAtbyAmcXVvdDskKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjJnF1b3Q7ICZxdW90OyUoRmlsZS5GdWxsUGF0aCkmcXVvdDsiIC8+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZSBJbmNsdWRlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjIj4KKyAgICAgICAgICAgICAgICA8Q29weVRvPiUoRmlsZS5Db3B5VG8pPC9Db3B5VG8+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1VwbG9hZCIgQ29uZGl0aW9uPSIhJChEcnlSdW4pIj4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIG1rZGlyICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNobW9kIGctdyxvK3J4ICUoRmlsZS5Db3B5VG8pCismcXVvdDskKFBTQ1ApJnF1b3Q7IEAoRmlsZSwnICcpICQoVXNlcilAJChIb3N0KTolKEZpbGUuQ29weVRvKQorJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIGNoZ3JwIGRvd25sb2FkcyAlKEZpbGUuQ29weVRvKS8qOyBjaG1vZCBnLXcsbytyICUoRmlsZS5Db3B5VG8pLyoKKyIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9QcmludE5hbWVzIiBDb25kaXRpb249IiQoRHJ5UnVuKSI+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9ImVjaG8gJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIG1rZGlyICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNobW9kIGctdyxvK3J4ICUoRmlsZS5Db3B5VG8pCitlY2hvICZxdW90OyQoUFNDUCkmcXVvdDsgQChGaWxlLCcgJykgJChVc2VyKUAkKEhvc3QpOiUoRmlsZS5Db3B5VG8pCitlY2hvICZxdW90OyQoUExJTkspJnF1b3Q7ICQoVXNlcilAJChIb3N0KSBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykvKjsgY2htb2QgZy13LG8rciAlKEZpbGUuQ29weVRvKS8qCitlY2hvLgorZWNoby4iIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJVcGxvYWQiIERlcGVuZHNPblRhcmdldHM9Il9WYWxpZGF0ZVByb3BlcnRpZXM7X1J1bkdwZztfUHJpbnROYW1lcztfVXBsb2FkIiAvPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iU2hvd0hhc2hlcyI+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8VXNlckZpbGVzIEluY2x1ZGU9IkAoRmlsZSkiIENvbmRpdGlvbj0iJyUoRmlsZS5Db3B5VG8pJyA9PSAnJChFWEVUYXJnZXQpJyIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgICAgIAorICAgICAgICA8RXhlYyBDb21tYW5kPSImcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgZ2VuZXJhdGVfbWQ1LnB5IEAoVXNlckZpbGVzLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCI+CisgICAgICAgIDxFcnJvciBUZXh0PSJUaGlzIHNjcmlwdCBzaG91bGQgYmUgaW52b2tlZCB1c2luZyB1cGxvYWRyZWxlYXNlLmJhdC4iIC8+CisgICAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvd2l4LnByb3BzIGIvVG9vbHMvbXNpL3dpeC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ5MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3dpeC5wcm9wcwpAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHl0aG9uLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyBhbmQgRXhpc3RzKCckKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcV2l4JykiPiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxXaXhcPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIGFuZCBFeGlzdHMoJyQoRXh0ZXJuYWxzRGlyKVxXaXgnKSI+JChFeHRlcm5hbHNEaXIpXFdpeFw8L1dpeEluc3RhbGxQYXRoPgorICAgIDxXaXhJbnN0YWxsUGF0aCBDb25kaXRpb249IickKFdpeEluc3RhbGxQYXRoKScgPT0gJyciPiQoUmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzIEluc3RhbGxlciBYTUxcMy45QEluc3RhbGxSb290KTwvV2l4SW5zdGFsbFBhdGg+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyI+JChSZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcV293NjQzMk5vZGVcTWljcm9zb2Z0XFdpbmRvd3MgSW5zdGFsbGVyIFhNTFwzLjlASW5zdGFsbFJvb3QpPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4VGFyZ2V0c1BhdGg+JChXaXhJbnN0YWxsUGF0aClcV2l4LnRhcmdldHM8L1dpeFRhcmdldHNQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCA4MzdjZDgxLi5jODI4NTc3IDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTM4LDYgKzEzOCwxNCBAQAogICAgICAgICBzZWxmLmZpbGwoIm5vbmxvY2FsICIpCiAgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLndyaXRlLCB0Lm5hbWVzKQogCisgICAgZGVmIF9Bd2FpdChzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgIHNlbGYud3JpdGUoImF3YWl0IikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorICAgICAgICBzZWxmLndyaXRlKCIpIikKKwogICAgIGRlZiBfWWllbGQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUoIigiKQogICAgICAgICBzZWxmLndyaXRlKCJ5aWVsZCIpCkBAIC0yMTEsMTYgKzIxOSw2IEBACiAgICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGUpCi0gICAgICAgIGlmIHQuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5zdGFyYXJncykKLSAgICAgICAgaWYgdC5rd2FyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmdzKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAogICAgICAgICBzZWxmLmVudGVyKCkKQEAgLTIyOCwxMSArMjI2LDE4IEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9GdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiZGVmIikKKworICAgIGRlZiBfQXN5bmNGdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiYXN5bmMgZGVmIikKKworICAgIGRlZiBfX0Z1bmN0aW9uRGVmX2hlbHBlcihzZWxmLCB0LCBmaWxsX3N1ZmZpeCk6CiAgICAgICAgIHNlbGYud3JpdGUoIlxuIikKICAgICAgICAgZm9yIGRlY28gaW4gdC5kZWNvcmF0b3JfbGlzdDoKICAgICAgICAgICAgIHNlbGYuZmlsbCgiQCIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGRlY28pCi0gICAgICAgIHNlbGYuZmlsbCgiZGVmICIrdC5uYW1lICsgIigiKQorICAgICAgICBkZWZfc3RyID0gZmlsbF9zdWZmaXgrIiAiK3QubmFtZSArICIoIgorICAgICAgICBzZWxmLmZpbGwoZGVmX3N0cikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmFyZ3MpCiAgICAgICAgIHNlbGYud3JpdGUoIikiKQogICAgICAgICBpZiB0LnJldHVybnM6CkBAIC0yNDMsNyArMjQ4LDEzIEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9Gb3Ioc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYuZmlsbCgiZm9yICIpCisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJmb3IgIiwgdCkKKworICAgIGRlZiBfQXN5bmNGb3Ioc2VsZiwgdCk6CisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJhc3luYyBmb3IgIiwgdCkKKworICAgIGRlZiBfX0Zvcl9oZWxwZXIoc2VsZiwgZmlsbCwgdCk6CisgICAgICAgIHNlbGYuZmlsbChmaWxsKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC0yOTcsNiArMzA4LDEzIEBACiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKIAorICAgIGRlZiBfQXN5bmNXaXRoKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoImFzeW5jIHdpdGggIikKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCisgICAgICAgIHNlbGYuZW50ZXIoKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgc2VsZi5sZWF2ZSgpCisKICAgICAjIGV4cHIKICAgICBkZWYgX0J5dGVzKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC5zKSkKQEAgLTQwMSw3ICs0MTksNyBAQAogICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3BlcmFuZCkKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKLSAgICBiaW5vcCA9IHsgIkFkZCI6IisiLCAiU3ViIjoiLSIsICJNdWx0IjoiKiIsICJEaXYiOiIvIiwgIk1vZCI6IiUiLAorICAgIGJpbm9wID0geyAiQWRkIjoiKyIsICJTdWIiOiItIiwgIk11bHQiOiIqIiwgIk1hdE11bHQiOiJAIiwgIkRpdiI6Ii8iLCAiTW9kIjoiJSIsCiAgICAgICAgICAgICAgICAgICAgICJMU2hpZnQiOiI8PCIsICJSU2hpZnQiOiI+PiIsICJCaXRPciI6InwiLCAiQml0WG9yIjoiXiIsICJCaXRBbmQiOiImIiwKICAgICAgICAgICAgICAgICAgICAgIkZsb29yRGl2IjoiLy8iLCAiUG93IjogIioqIn0KICAgICBkZWYgX0Jpbk9wKHNlbGYsIHQpOgpAQCAtNDUwLDE2ICs0NjgsNiBAQAogICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKICAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlKQotICAgICAgICBpZiB0LnN0YXJhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuc3RhcmFyZ3MpCi0gICAgICAgIGlmIHQua3dhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lmt3YXJncykKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKICAgICBkZWYgX1N1YnNjcmlwdChzZWxmLCB0KToKQEAgLTU0Myw4ICs1NTEsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmcuYW5ub3RhdGlvbikKIAogICAgIGRlZiBfa2V5d29yZChzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSh0LmFyZykKLSAgICAgICAgc2VsZi53cml0ZSgiPSIpCisgICAgICAgIGlmIHQuYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHQuYXJnKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiPSIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAogICAgIGRlZiBfTGFtYmRhKHNlbGYsIHQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9SRUFETUUgYi9Ub29scy9weWJlbmNoL1JFQURNRQppbmRleCBlNTllNmMwLi40MGY3ZWVjIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1JFQURNRQorKysgYi9Ub29scy9weWJlbmNoL1JFQURNRQpAQCAtNCw3ICs0LDcgQEAKIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgIEV4dGVuZGFibGUgc3VpdGUgb2YgbG93LWxldmVsIGJlbmNobWFya3MgZm9yIG1lYXN1cmluZwotICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIAorICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgIChpbnRlcnByZXRlciwgY29tcGlsZXIgb3IgVk0pLgogCiBweWJlbmNoIGlzIGEgY29sbGVjdGlvbiBvZiB0ZXN0cyB0aGF0IHByb3ZpZGVzIGEgc3RhbmRhcmRpemVkIHdheSB0bwpAQCAtMzQsMTEgKzM0LDExIEBACiAKIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8gcnVuIHB5YmVuY2gucHkgbXVsdGlwbGUgdGltZXMgdG8gc2VlCiB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCwgdGltZXJzIGFuZCBiZW5jaG1hcmsgcnVuLXRpbWVzIGFyZSBzdWl0YWJsZQotZm9yIGRvaW5nIGJlbmNobWFyayB0ZXN0cy4gCitmb3IgZG9pbmcgYmVuY2htYXJrIHRlc3RzLgogCiBZb3UgY2FuIHVzZSB0aGUgY29tcGFyaXNvbiBmZWF0dXJlIG9mIHB5YmVuY2gucHkgKCdweWJlbmNoLnB5IC1jCiA8ZmlsZT4nKSB0byBjaGVjayBob3cgd2VsbCB0aGUgc3lzdGVtIGJlaGF2ZXMgaW4gY29tcGFyaXNvbiB0byBhCi1yZWZlcmVuY2UgcnVuLiAKK3JlZmVyZW5jZSBydW4uCiAKIElmIHRoZSBkaWZmZXJlbmNlcyBhcmUgd2VsbCBiZWxvdyAxMCUgZm9yIGVhY2ggdGVzdCwgdGhlbiB5b3UgaGF2ZSBhCiBzeXN0ZW0gdGhhdCBpcyBnb29kIGZvciBkb2luZyBiZW5jaG1hcmsgdGVzdGluZ3MuICBPZiB5b3UgZ2V0IHJhbmRvbQpAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgIyBmb3IgY29tcGFyaXNvbnMgb2YgYmVuY2htYXJrIHJ1bnMgLSB0ZXN0cyB3aXRoIHVuZXF1YWwgdmVyc2lvbgogICAgICMgbnVtYmVyIHdpbGwgbm90IGdldCBjb21wYXJlZC4KICAgICB2ZXJzaW9uID0gMS4wCi0gICAgCisKICAgICAjIFRoZSBudW1iZXIgb2YgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkb25lIGluIGVhY2ggcm91bmQgb2YgdGhlCiAgICAgIyB0ZXN0LiBBbiBvcGVyYXRpb24gaXMgdGhlIGJhc2ljIHVuaXQgb2Ygd2hhdCB5b3Ugd2FudCB0bwogICAgICMgbWVhc3VyZS4gVGhlIGJlbmNobWFyayB3aWxsIG91dHB1dCB0aGUgYW1vdW50IG9mIHJ1bi10aW1lIHBlcgpAQCAtMjY0LDcgKzI2NCw3IEBACiAKICAgICAgICAgICAgICMgUmVwZWF0IHRoZSBvcGVyYXRpb25zIHBlciByb3VuZCB0byByYWlzZSB0aGUgcnVuLXRpbWUKICAgICAgICAgICAgICMgcGVyIG9wZXJhdGlvbiBzaWduaWZpY2FudGx5IGFib3ZlIHRoZSBub2lzZSBsZXZlbCBvZiB0aGUKLSAgICAgICAgICAgICMgZm9yLWxvb3Agb3ZlcmhlYWQuIAorICAgICAgICAgICAgIyBmb3ItbG9vcCBvdmVyaGVhZC4KIAogCSAgICAjIEV4ZWN1dGUgMjAgb3BlcmF0aW9ucyAoYSArPSAxKToKICAgICAgICAgICAgIGEgKz0gMQpAQCAtMzU4LDggKzM1OCw4IEBACiAgICAgICAgIC0gY2hhbmdlZCB0aGUgb3V0cHV0IGZvcm1hdCBhIGJpdCB0byBtYWtlIGl0IGxvb2sKICAgICAgICAgICBuaWNlcgogICAgICAgICAtIHJlZmFjdG9yZWQgdGhlIEFQSXMgc29tZXdoYXQKLSAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZyAKLSAgICAgICBvcHRpb24gZHVyaW5nIHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50OyB0aGlzIGFsc28gdHJpZ2dlcmVkIGEgbG9uZyAKKyAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZworICAgICAgIG9wdGlvbiBkdXJpbmcgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQ7IHRoaXMgYWxzbyB0cmlnZ2VyZWQgYSBsb25nCiAgICAgICAgZGlzY3Vzc2lvbiBvbiBob3cgdG8gaW1wcm92ZSBiZW5jaG1hcmsgdGltaW5nIGFuZCBmaW5hbGx5CiAgICAgICAgcmVzdWx0ZWQgaW4gdGhlIHJlbGVhc2Ugb2YgMi4wCiAgIDEuMzogaW5pdGlhbCBjaGVja2luIGludG8gdGhlIFB5dGhvbiBTVk4gcmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL1JFQURNRSBiL1Rvb2xzL3B5bmNoZS9SRUFETUUKaW5kZXggZDIwZWZjMy4uZTAyNjE1OSAxMDA2NDQKLS0tIGEvVG9vbHMvcHluY2hlL1JFQURNRQorKysgYi9Ub29scy9weW5jaGUvUkVBRE1FCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAtLWluaXRmaWxlIGZpbGUKICAgICAtaSBmaWxlCi0gICAgICAgIEFsdGVybmF0ZSBsb2NhdGlvbiBvZiB0aGUgcGVyc2lzdGVudCBpbml0aWFsaXphdGlvbiBmaWxlLiAgU2VlIAorICAgICAgICBBbHRlcm5hdGUgbG9jYXRpb24gb2YgdGhlIHBlcnNpc3RlbnQgaW5pdGlhbGl6YXRpb24gZmlsZS4gIFNlZQogICAgICAgICB0aGUgc2VjdGlvbiBvbiBQZXJzaXN0ZW5jeSBiZWxvdy4KIAogICAgIC0taWdub3JlCkBAIC04MCw3ICs4MCw3IEBACiAKICAgICAgICAgcHlDb2xvckNob29zZXIuYXNrY29sb3IoKQogCi0gICAgd2hpY2ggd2lsbCBwb3B1cCBQeW5jaGUgYXMgYSBtb2RhbCBkaWFsb2csIGFuZCByZXR1cm4gdGhlIHNlbGVjdGVkIAorICAgIHdoaWNoIHdpbGwgcG9wdXAgUHluY2hlIGFzIGEgbW9kYWwgZGlhbG9nLCBhbmQgcmV0dXJuIHRoZSBzZWxlY3RlZAogICAgIGNvbG9yLgogCiAgICAgVGhlcmUgYXJlIHNvbWUgVUkgZGlmZmVyZW5jZXMgd2hlbiBydW5uaW5nIGFzIGEgbW9kYWwKQEAgLTEwNiw3ICsxMDYsNyBAQAogCiAgICAgICAgIG1hc3RlclsqXQogICAgICAgICAgICAgdGhlIG1hc3RlciB3aW5kb3cgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgdGhlIG1vZGFsCi0gICAgICAgICAgICBkaWFsb2cuICBXaXRob3V0IHRoaXMgYXJndW1lbnQsIHB5Q29sb3JDaG9vc2VyIHdpbGwgY3JlYXRlIAorICAgICAgICAgICAgZGlhbG9nLiAgV2l0aG91dCB0aGlzIGFyZ3VtZW50LCBweUNvbG9yQ2hvb3NlciB3aWxsIGNyZWF0ZQogICAgICAgICAgICAgaXRzIG93biBUa2ludGVyLlRrIGluc3RhbmNlIGFzIHRoZSBtYXN0ZXIuICBUaGlzIG1heSBub3QKICAgICAgICAgICAgIGJlIHdoYXQgeW91IHdhbnQuCiAKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgIFNlbGVjdGVkIGNoaXAgY29sb3IgZXhhY3RseSBtYXRjaGVzIHRoZSBOZWFyZXN0IGNoaXAgY29sb3IsIHlvdQogICAgIHdpbGwgc2VlIHRoZSBjb2xvciBuYW1lIGFwcGVhciBiZWxvdyB0aGUgY29sb3Igc3BlY2lmaWNhdGlvbiBmb3IKICAgICB0aGUgU2VsZWN0ZWQgY2hpcC4KLSAgICAKKwogICAgIENsaWNraW5nIG9uIHRoZSBOZWFyZXN0IGNvbG9yIGNoaXAgc2VsZWN0cyB0aGF0IGNvbG9yLiAgQ29sb3IKICAgICBkaXN0YW5jZSBpcyBjYWxjdWxhdGVkIGluIHRoZSAzRCBzcGFjZSBvZiB0aGUgUkdCIGNvbG9yIHNvbGlkIGFuZAogICAgIGlmIG1vcmUgdGhhbiBvbmUgY29sb3IgbmFtZSBpcyB0aGUgc2FtZSBkaXN0YW5jZSBmcm9tIHRoZSBzZWxlY3RlZApAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgZm9ybWF0IGZvciBib3RoIHZhbHVlcyBhbmQgbmFtZXMKIAogICAgIHdlYmNvbG9ycy50eHQgLS0gVGhlIDE0MCBjb2xvciBuYW1lcyB0aGF0IFRpbSBQZXRlcnMgYW5kIGhpcwotICAgIHNpc3RlciBzYXkgTlMgYW5kIE1TSUUgYm90aCB1bmRlcnN0YW5kICh3aXRoIHNvbWUgY29udHJvdmVyc3kgb3ZlciAKKyAgICBzaXN0ZXIgc2F5IE5TIGFuZCBNU0lFIGJvdGggdW5kZXJzdGFuZCAod2l0aCBzb21lIGNvbnRyb3ZlcnN5IG92ZXIKICAgICBBbGljZUJsdWUpLgogCiAgICAgbmFtZWRjb2xvcnMudHh0IC0tIGFuIGFsdGVybmF0aXZlIHNldCBvZiBOZXRzY2FwZSBjb2xvcnMuCkBAIC0zNjksOCArMzY5LDggQEAKICAgICBZb3UgY2FuIHN3aXRjaCBiZXR3ZWVuIGZpbGVzIGJ5IGNob29zaW5nICJMb2FkIHBhbGV0dGUuLi4iIGZyb20KICAgICB0aGUgIkZpbGUiIG1lbnUuICBUaGlzIGJyaW5ncyB1cCBhIHN0YW5kYXJkIFRrIGZpbGUgZGlhbG9nLgogICAgIENob29zZSB0aGUgZmlsZSB5b3Ugd2FudCBhbmQgdGhlbiBjbGljayAiT2siLiAgSWYgUHluY2hlCi0gICAgdW5kZXJzdGFuZHMgdGhlIGZvcm1hdCBpbiB0aGlzIGZpbGUsIGl0IHdpbGwgbG9hZCB0aGUgZGF0YWJhc2UgYW5kIAotICAgIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgd2luZG93cy4gIElmIG5vdCwgaXQgd2lsbCBicmluZyB1cCBhbiBlcnJvciAKKyAgICB1bmRlcnN0YW5kcyB0aGUgZm9ybWF0IGluIHRoaXMgZmlsZSwgaXQgd2lsbCBsb2FkIHRoZSBkYXRhYmFzZSBhbmQKKyAgICB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIHdpbmRvd3MuICBJZiBub3QsIGl0IHdpbGwgYnJpbmcgdXAgYW4gZXJyb3IKICAgICBkaWFsb2cuCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDhiZTUyN2YuLjk3MjBhNDMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgb3B0cGFyc2UKK2ltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpAQCAtMTgsMjMgKzE4LDI1IEBACiAKIGRlZiBtYWluKCk6CiAKLSAgICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIGZyb21maWxlIHRvZmlsZSIKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBhIGNvbnRleHQgZm9ybWF0IGRpZmYgKGRlZmF1bHQpJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9kdWNlIGEgdW5pZmllZCBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBIVE1MIHNpZGUgYnkgc2lkZSBkaWZmIChjYW4gdXNlIC1jIGFuZCAtbCBpbiBjb25qdW5jdGlvbiknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1Byb2R1Y2UgYSBuZGlmZiBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1sIiwgIi0tbGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgcGFyc2VyLmVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYm90aCBhIGZyb21maWxlIGFuZCB0b2ZpbGUiKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgY29udGV4dCBmb3JtYXQgZGlmZiAoZGVmYXVsdCknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSB1bmlmaWVkIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIEhUTUwgc2lkZSBieSBzaWRlIGRpZmYgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGNhbiB1c2UgLWMgYW5kIC1sIGluIGNvbmp1bmN0aW9uKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIG5kaWZmIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpbmVzJywgdHlwZT1pbnQsIGRlZmF1bHQ9MywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZnJvbWZpbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3RvZmlsZScpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIG4gPSBvcHRpb25zLmxpbmVzCi0gICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKKyAgICBmcm9tZmlsZSA9IG9wdGlvbnMuZnJvbWZpbGUKKyAgICB0b2ZpbGUgPSBvcHRpb25zLnRvZmlsZQogCiAgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQogICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jIGIvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jCmluZGV4IDJhMDk0MjYuLjk3YmQyZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZHV0cmVlLmRvYworKysgYi9Ub29scy9zY3JpcHRzL2R1dHJlZS5kb2MKQEAgLTM0LDEzICszNCwxMyBAQAogOiAgICAgIHwgICAgICAgMSBzbS5iYWsKIAogQXQgZmlyc3QgSSB0aG91Z2h0IEkgY291bGQganVzdCBrZWVwIG9uZSBsb2NhbCBsaXN0IGFyb3VuZAotYXQgb25jZSwgYnV0IHRoaXMgc2VlbXMgaW5oZXJlbnRseSByZWN1cnNpdmUuICBXaGljaCBtZWFucyAKK2F0IG9uY2UsIGJ1dCB0aGlzIHNlZW1zIGluaGVyZW50bHkgcmVjdXJzaXZlLiAgV2hpY2ggbWVhbnMKIEkgbmVlZCBhbiByZWFsIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIE1heWJlIHlvdSBjb3VsZAogZG8gaXQgd2l0aCBvbmUgb2YgdGhlICVhc3NvYyBhcnJheXMgTGFycnkgdXNlcyBpbiB0aGUgYmVnYXQKIHByb2dyYW1zLCBidXQgSSBicm9rZSBkb3duIGFuZCBnb3QgZGlydHkuICBJIHRoaW5rIHRoZSBoYXJkZXN0Ci1wYXJ0IHdhcyBtYXRjaGluZyBGZWxpeCdzIGRlc2lyZWQgb3V0cHV0IGV4YWN0bHkuICBJdCdzIG5vdCAKK3BhcnQgd2FzIG1hdGNoaW5nIEZlbGl4J3MgZGVzaXJlZCBvdXRwdXQgZXhhY3RseS4gIEl0J3Mgbm90CiBibGF6aW5nbHkgZmFzdDogSSBzaG91bGQgcHJvYmFibHkgaW5saW5lIHRoZSAmY2hpbGRvZiByb3V0aW5lLAotYnV0IGl0ICp3YXMqIGZhc3RlciB0byB3cml0ZSB0aGFuIEkgY291bGQgaGF2ZSB3cml0dGVuIHRoZSAKK2J1dCBpdCAqd2FzKiBmYXN0ZXIgdG8gd3JpdGUgdGhhbiBJIGNvdWxkIGhhdmUgd3JpdHRlbiB0aGUKIGVxdWl2YWxlbnQgQyBwcm9ncmFtLgogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZXB0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKaW5kZXggNjcxZmYxMS4uNDAxYWM3ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAiIiJBcHBlbmQgdGFncyBmb3VuZCBpbiBmaWxlIG5hbWVkICdmaWxlbmFtZScgdG8gdGhlIG9wZW4gZmlsZSAnb3V0ZnAnIiIiCiAgICAgdHJ5OgogICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICdyJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0Nhbm5vdCBvcGVuICVzXG4nJWZpbGVuYW1lKQogICAgICAgICByZXR1cm4KICAgICBjaGFybm8gPSAwCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjJmOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMCwwICsxLDU0IEBACisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IHN5cworaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLworI2lmbmRlZiBQeV9PUENPREVfSAorI2RlZmluZSBQeV9PUENPREVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCisiIiIKKworZm9vdGVyID0gIiIiCisvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCisgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKKyAgIGFzIHdlIHdhbnQgaXQgdG8gYmUgYXZhaWxhYmxlIHRvIGJvdGggZnJhbWVvYmplY3QuYyBhbmQgY2V2YWwuYywgd2hpbGUKKyAgIHJlbWFpbmluZyBwcml2YXRlLiovCisjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NworCisKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworCisjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09QQ09ERV9IICovCisiIiIKKworCitkZWYgbWFpbihvcGNvZGVfcHksIG91dGZpbGU9J0luY2x1ZGUvb3Bjb2RlLmgnKToKKyAgICBvcGNvZGUgPSB7fQorICAgIGV4ZWMob3BlbihvcGNvZGVfcHkpLnJlYWQoKSwgb3Bjb2RlKQorICAgIG9wbWFwID0gb3Bjb2RlWydvcG1hcCddCisgICAgd2l0aCBvcGVuKG91dGZpbGUsICd3JykgYXMgZm9iajoKKyAgICAgICAgZm9iai53cml0ZShoZWFkZXIpCisgICAgICAgIGZvciBuYW1lIGluIG9wY29kZVsnb3BuYW1lJ106CisgICAgICAgICAgICBpZiBuYW1lIGluIG9wbWFwOgorICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoIiNkZWZpbmUgJS0yM3MgJTNzXG4iICUgKG5hbWUsIG9wbWFwW25hbWVdKSkKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1BPUF9FWENFUFQnOiAjIFNwZWNpYWwgZW50cnkgZm9yIEhBVkVfQVJHVU1FTlQKKyAgICAgICAgICAgICAgICBmb2JqLndyaXRlKCIjZGVmaW5lICUtMjNzICUzZFxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdIQVZFX0FSR1VNRU5UJywgb3Bjb2RlWydIQVZFX0FSR1VNRU5UJ10pKQorICAgICAgICBmb2JqLndyaXRlKGZvb3RlcikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQppbmRleCBhNmM1ZGEzLi5iNTgyZTEzIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorKysgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpAQCAtMzMsOCArMzMsNiBAQAogICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCiAgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQogCi0gICAgIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMjAzNTUKLSAgICBvcy5lbnZpcm9uLnBvcCgiUFlUSE9OV0FSTklOR1MiLCBOb25lKQogICAgICMgV29ya2Fyb3VuZCBmb3IgaXNzdWUgIzIwMzYxCiAgICAgYXJncy5leHRlbmQoWyctVycsICdlcnJvcjo6Qnl0ZXNXYXJuaW5nJ10pCiAKQEAgLTUwLDcgKzQ4LDExIEBACiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLXUnLCAnYWxsLC1sYXJnZWZpbGUsLWF1ZGlvLC1ndWknXSkKICAgICBhcmdzLmV4dGVuZChyZWdydGVzdF9hcmdzKQogICAgIHByaW50KCcgJy5qb2luKGFyZ3MpKQotICAgIG9zLmV4ZWN2KHN5cy5leGVjdXRhYmxlLCBhcmdzKQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoY2FsbChhcmdzKSkKKyAgICBlbHNlOgorICAgICAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgYXJncykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy93aW5fYWRkMnBhdGgucHkgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQppbmRleCBjODViZWE1Li4xYzlhZWRjIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQorKysgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQpAQCAtMjIsNyArMjIsOCBAQAogICAgIHNjcmlwdHMgPSBvcy5wYXRoLmpvaW4ocHl0aG9ucGF0aCwgIlNjcmlwdHMiKQogICAgIGFwcGRhdGEgPSBvcy5lbnZpcm9uWyJBUFBEQVRBIl0KICAgICBpZiBoYXNhdHRyKHNpdGUsICJVU0VSX1NJVEUiKToKLSAgICAgICAgdXNlcnBhdGggPSBzaXRlLlVTRVJfU0lURS5yZXBsYWNlKGFwcGRhdGEsICIlQVBQREFUQSUiKQorICAgICAgICB1c2Vyc2l0ZSA9IHNpdGUuVVNFUl9TSVRFLnJlcGxhY2UoYXBwZGF0YSwgIiVBUFBEQVRBJSIpCisgICAgICAgIHVzZXJwYXRoID0gb3MucGF0aC5kaXJuYW1lKHVzZXJzaXRlKQogICAgICAgICB1c2Vyc2NyaXB0cyA9IG9zLnBhdGguam9pbih1c2VycGF0aCwgIlNjcmlwdHMiKQogICAgIGVsc2U6CiAgICAgICAgIHVzZXJzY3JpcHRzID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2ogYi9Ub29scy9zc2wvc3Nsc3BlZWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM0MTA2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2oKQEAgLTAsMCArMSw3MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGMDY4QkNDRi1DMEQ2LTQ3OEQtQTJDNS0yNkJBMzIzN0M5OTJ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2xzcGVlZDwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXG9wZW5zc2wucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPE9yaWdpbmFsT3V0RGlyPiQoT3V0RGlyKTwvT3JpZ2luYWxPdXREaXI+CisgICAgPE91dERpcj4kKE1TQnVpbGRQcm9qZWN0RGlyZWN0b3J5KVwkKEFyY2hOYW1lKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoTVNCdWlsZFByb2plY3REaXJlY3RvcnkpXCQoQXJjaE5hbWUpXG9ialw8L0ludERpcj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilhcHBzXHNwZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpYXBwc1xhcHBzLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xJbmNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliO2xpYmVheSQoUHlEZWJ1Z0V4dCkubGliO3NzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4kKE9yaWdpbmFsT3V0RGlyKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlxQQ0J1aWxkXHNzbGVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMDYxNWIyNC03M2JmLTRlZmEtOTNhYS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cLi5cUENCdWlsZFxsaWJlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDk4YjM5NzUuLjRjMjE0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgIHJldHVybiAnTm9uZScKICAgICB0cnk6CiAgICAgICAgIGxlbih0KQotICAgIGV4Y2VwdDoKKyAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICByZXR1cm4gJzB4JTAqWCcgJSAocHJlY2lzaW9uLCB0KQogICAgIHRyeToKICAgICAgICAgcmV0dXJuICcoJyArICcsICcuam9pbihbJzB4JTAqWCcgJSAocHJlY2lzaW9uLCBpdGVtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCA3NjM2YTk1Li5iN2QzMWU4IDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtNDIsNyArNDIsNyBAQAogIyAgICogRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0LCBhbmQKICMgICAqIERvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAogIyAgICogRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCAodHdvIG9jY3VycmVuY2VzKQotVU5JREFUQV9WRVJTSU9OID0gIjYuMy4wIgorVU5JREFUQV9WRVJTSU9OID0gIjcuMC4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCmRpZmYgLS1naXQgYS9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0IGIvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dAppbmRleCA0ZDgwOWRmLi4wYTQ3N2UxIDEwMDY0NAotLS0gYS9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0CisrKyBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL1JFQURNRS50eHQKQEAgLTEsNSArMSw1IEBACi11bml0dGVzdGd1aS5weSBpcyBHVUkgZnJhbWV3b3JrIGFuZCBhcHBsaWNhdGlvbiBmb3IgdXNlIHdpdGggUHl0aG9uIHVuaXQgCi10ZXN0aW5nIGZyYW1ld29yay4gSXQgZXhlY3V0ZXMgdGVzdHMgd3JpdHRlbiB1c2luZyB0aGUgZnJhbWV3b3JrIHByb3ZpZGVkIAordW5pdHRlc3RndWkucHkgaXMgR1VJIGZyYW1ld29yayBhbmQgYXBwbGljYXRpb24gZm9yIHVzZSB3aXRoIFB5dGhvbiB1bml0Cit0ZXN0aW5nIGZyYW1ld29yay4gSXQgZXhlY3V0ZXMgdGVzdHMgd3JpdHRlbiB1c2luZyB0aGUgZnJhbWV3b3JrIHByb3ZpZGVkCiBieSB0aGUgJ3VuaXR0ZXN0JyBtb2R1bGUuCiAKIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieSBTdGV2ZSBQdXJjZWxsLCBmcm9tOgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDdiOTFmOTEuLmI2YmNiYmUgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNiArMSw2IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNC4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy41LgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy8+LgogIwpAQCAtNTgwLDggKzU4MCw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0ncHl0aG9uJwogUEFDS0FHRV9UQVJOQU1FPSdweXRob24nCi1QQUNLQUdFX1ZFUlNJT049JzMuNCcKLVBBQ0tBR0VfU1RSSU5HPSdweXRob24gMy40JworUEFDS0FHRV9WRVJTSU9OPSczLjUnCitQQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNScKIFBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY3Myw2ICs2NzMsNyBAQAogSU5TVEFMTF9EQVRBCiBJTlNUQUxMX1NDUklQVAogSU5TVEFMTF9QUk9HUkFNCitPUENPREVIR0VOCiBQWVRIT04KIEFTRExHRU4KIGFjX2N0X1JFQURFTEYKQEAgLTY5MywxNSArNjk0LDE3IEBACiBETExMSUJSQVJZCiBMRExJQlJBUlkKIExJQlJBUlkKLU1VTFRJQVJDSAogQlVJTERFWEVFWFQKIEVHUkVQCi1HUkVQCi1DUFAKIE5PX0FTX05FRURFRAorUExBVEZPUk1fVFJJUExFVAorUExBVERJUgorTVVMVElBUkNICiBhY19jdF9DWFgKIE1BSU5DQwogQ1hYCitHUkVQCitDUFAKIE9CSkVYVAogRVhFRVhUCiBhY19jdF9DQwpAQCAtNzExLDcgKzcxNCw2IEBACiBDQwogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotUExBVERJUgogU0dJX0FCSQogX1BZVEhPTl9IT1NUX1BMQVRGT1JNCiBNQUNIREVQCkBAIC03OTksNiArODAxLDcgQEAKIGVuYWJsZV9wcm9maWxpbmcKIHdpdGhfcHlkZWJ1Zwogd2l0aF9oYXNoX2FsZ29yaXRobQord2l0aF9hZGRyZXNzX3Nhbml0aXplcgogd2l0aF9saWJzCiB3aXRoX3N5c3RlbV9leHBhdAogd2l0aF9zeXN0ZW1fZmZpCkBAIC0xMzc1LDcgKzEzNzgsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjQgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDQwLDcgKzE0NDMsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjQ6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy41OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE0NzgsNiArMTQ4MSw4IEBACiAgIC0td2l0aC1weWRlYnVnICAgICAgICAgIGJ1aWxkIHdpdGggUHlfREVCVUcgZGVmaW5lZAogICAtLXdpdGgtaGFzaC1hbGdvcml0aG09W2ZudnxzaXBoYXNoMjRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBoYXNoIGFsZ29yaXRobQorICAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIEFkZHJlc3NTYW5pdGl6ZXIKICAgLS13aXRoLWxpYnM9J2xpYjEgLi4uJyAgbGluayBhZ2FpbnN0IGFkZGl0aW9uYWwgbGlicwogICAtLXdpdGgtc3lzdGVtLWV4cGF0ICAgICBidWlsZCBweWV4cGF0IG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZXhwYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQpAQCAtMTU5Miw3ICsxNTk3LDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1weXRob24gY29uZmlndXJlIDMuNAorcHl0aG9uIGNvbmZpZ3VyZSAzLjUKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQogCiBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNjQ0LDYgKzE2NDksNDMgQEAKIAogfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKIAorIyBhY19mbl9jX3RyeV9jcHAgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIHByZXByb2Nlc3MgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgorYWNfZm5fY190cnlfY3BwICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+IGNvbmZ0ZXN0LmkgJiYgeworCSB0ZXN0IC16ICIkYWNfY19wcmVwcm9jX3dhcm5fZmxhZyRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgYWNfcmV0dmFsPTEKK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCiAjIGFjX2ZuX2NfdHJ5X2xpbmsgTElORU5PCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyeSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KQEAgLTE2OTAsNDMgKzE3MzIsNiBAQAogCiB9ICMgYWNfZm5fY190cnlfbGluawogCi0jIGFjX2ZuX2NfdHJ5X2NwcCBMSU5FTk8KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUcnkgdG8gcHJlcHJvY2VzcyBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCi1hY19mbl9jX3RyeV9jcHAgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IHsgYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+Y29uZnRlc3QuZXJyCi0gIGFjX3N0YXR1cz0kPwotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCi0gICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKLSAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gIGZpCi0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7Ci0JIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8Ci0JIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKLSAgICAgICB9OyB0aGVuIDoKLSAgYWNfcmV0dmFsPTAKLWVsc2UKLSAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSAgICBhY19yZXR2YWw9MQotZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfY3BwCi0KICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKQEAgLTI0MzEsNyArMjQzNiw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzAwNCw3ICszMDA5LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNAorVkVSU0lPTj0zLjUKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMzQ5NCw5ICszNDk5LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFDSERFUCIgPiY1CiAkYXNfZWNobyAiJE1BQ0hERVAiID4mNjsgfQogCi0KLVBMQVRESVI9cGxhdC0kTUFDSERFUAotCiAjIFJlY29yZCB0aGUgY29uZmlndXJlLXRpbWUgdmFsdWUgb2YgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULAogIyBpdCBtYXkgaW5mbHVlbmNlIHRoZSB3YXkgd2UgY2FuIGJ1aWxkIGV4dGVuc2lvbnMsIHNvIGRpc3R1dGlscwogIyBuZWVkcyB0byBjaGVjayBpdApAQCAtNDQwMyw2ICs0NDA1LDIwNiBAQAogYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKIAorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQorIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQUD0KK2ZpCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAorICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCisgICAgZG8KKyAgICAgIGFjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorICBicmVhaworZmkKKworICAgIGRvbmUKKyAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCisKK2ZpCisgIENQUD0kYWNfY3ZfcHJvZ19DUFAKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19DUFA9JENQUAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKKyRhc19lY2hvICIkQ1BQIiA+JjY7IH0KK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorCitlbHNlCisgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9HUkVQIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9CisgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKKworCiAKIAogCkBAIC00ODYxLDYgKzUwNjMsMTQ1IEBACiBmaQogCiAKK01VTFRJQVJDSD0kKCRDQyAtLXByaW50LW11bHRpYXJjaCAyPi9kZXYvbnVsbCkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0IGJhc2VkIG9uIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBMQVRGT1JNX1RSSVBMRVQiID4mNQorJGFzX2VjaG8gIiRQTEFURk9STV9UUklQTEVUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCIgIiRMSU5FTk8iIDUKKyAgZmkKK2ZpCitQTEFURElSPXBsYXQtJE1BQ0hERVAKKworCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLVdsLC0tbm8tYXMtbmVlZGVkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQuLi4gIiA+JjY7IH0KIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC00ODkzLDIwNiArNTIzNCw2IEBACiAKIAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCi1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9Ci0jIE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgotaWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KLSAgQ1BQPQotZmkKLWlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0gIGlmICR7YWNfY3ZfcHJvZ19DUFArOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCi0gICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKLSAgICBkbwotICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQotZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi1kbwotICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCi0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLSAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCi0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZkZWYgX19TVERDX18KLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4KLSNlbmRpZgotCQkgICAgIFN5bnRheCBlcnJvcgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi1jb250aW51ZQotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotZG9uZQotIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1pZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6Ci0gIGJyZWFrCi1maQotCi0gICAgZG9uZQotICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKLQotZmkKLSAgQ1BQPSRhY19jdl9wcm9nX0NQUAotZWxzZQotICBhY19jdl9wcm9nX0NQUD0kQ1BQCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDUFAiID4mNQotJGFzX2VjaG8gIiRDUFAiID4mNjsgfQotYWNfcHJlcHJvY19vaz1mYWxzZQotZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi1kbwotICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCi0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLSAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCi0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZkZWYgX19TVERDX18KLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4KLSNlbmRpZgotCQkgICAgIFN5bnRheCBlcnJvcgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi1jb250aW51ZQotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotZG9uZQotIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1pZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6Ci0KLWVsc2UKLSAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQotZmkKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZS4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0dSRVArOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0IC16ICIkR1JFUCI7IHRoZW4KLSAgYWNfcGF0aF9HUkVQX2ZvdW5kPWZhbHNlCi0gICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluCi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX3Byb2cgaW4gZ3JlcCBnZ3JlcDsgZG8KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgICAgIGFjX3BhdGhfR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfR1JFUCIgfHwgY29udGludWUKLSMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0dSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KLSAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0dSRVAKLWNhc2UgYCIkYWNfcGF0aF9HUkVQIiAtLXZlcnNpb24gMj4mMWAgaW4KLSpHTlUqKQotICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiIGFjX3BhdGhfR1JFUF9mb3VuZD06OzsKLSopCi0gIGFjX2NvdW50PTAKLSAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3QuaW4iCi0gIHdoaWxlIDoKLSAgZG8KLSAgICBjYXQgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgotICAgIG12ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKLSAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKLSAgICAkYXNfZWNobyAnR1JFUCcgPj4gImNvbmZ0ZXN0Lm5sIgotICAgICIkYWNfcGF0aF9HUkVQIiAtZSAnR1JFUCQnIC1lICctKGNhbm5vdCBtYXRjaCktJyA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCi0gICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhawotICAgIGFzX2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAotICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfR1JFUF9tYXgtMH07IHRoZW4KLSAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQotICAgICAgYWNfY3ZfcGF0aF9HUkVQPSIkYWNfcGF0aF9HUkVQIgotICAgICAgYWNfcGF0aF9HUkVQX21heD0kYWNfY291bnQKLSAgICBmaQotICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKLSAgZG9uZQotICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKLWVzYWMKLQotICAgICAgJGFjX3BhdGhfR1JFUF9mb3VuZCAmJiBicmVhayAzCi0gICAgZG9uZQotICBkb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLSAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKLSAgZmkKLWVsc2UKLSAgYWNfY3ZfcGF0aF9HUkVQPSRHUkVQCi1maQotCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX0dSRVAiID4mNQotJGFzX2VjaG8gIiRhY19jdl9wYXRoX0dSRVAiID4mNjsgfQotIEdSRVA9IiRhY19jdl9wYXRoX0dSRVAiCi0KIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICIgPiY2OyB9CkBAIC01NDEyLDEwICs1NTUzLDYgQEAKICAgICBlc2FjOzsKIGVzYWMKIAotTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQotCi0KLQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIExJQlJBUlkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgTElCUkFSWS4uLiAiID4mNjsgfQpAQCAtNTY1NCwxMSArNTc5MSw2IEBACiAJICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKIAkgIEJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKIAkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGAke0xEX0xJQlJBUllfUEFUSDorOiR7TERfTElCUkFSWV9QQVRIfX0KLQkgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLQkgICAgICBGcmVlQlNEKikKLQkJU09WRVJTSU9OPWBlY2hvICRTT1ZFUlNJT058Y3V0IC1kICIuIiAtZiAxYAotCQk7OwotCSAgZXNhYwogCSAgSU5TVFNPTkFNRT0iJExETElCUkFSWSIuJFNPVkVSU0lPTgogCSAgaWYgdGVzdCAiJHdpdGhfcHlkZWJ1ZyIgIT0geWVzCiAgICAgICAgICAgdGhlbgpAQCAtNjA2Niw2ICs2MTk4LDU3IEBACiBmaQogCiAKK2ZvciBhY19wcm9nIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24KK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19QWVRIT04rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkUFlUSE9OIjsgdGhlbgorICBhY19jdl9wcm9nX1BZVEhPTj0iJFBZVEhPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX1BZVEhPTj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorUFlUSE9OPSRhY19jdl9wcm9nX1BZVEhPTgoraWYgdGVzdCAtbiAiJFBZVEhPTiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQWVRIT04iID4mNQorJGFzX2VjaG8gIiRQWVRIT04iID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkUFlUSE9OIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJFBZVEhPTiIgfHwgUFlUSE9OPSJub3QtZm91bmQiCisKK2lmIHRlc3QgIiRQWVRIT04iID0gbm90LWZvdW5kOyB0aGVuCisgICAgT1BDT0RFSEdFTj0iQGVjaG8gcHl0aG9uOiAkUFlUSE9OISBjYW5ub3QgcnVuIFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkiCitlbHNlCisgICAgT1BDT0RFSEdFTj0iJFBZVEhPTiIKK2ZpCisKKworCiBjYXNlICRNQUNIREVQIGluCiBic2Rvcyp8aHAqfEhQKikKIAkjIGluc3RhbGwgLWQgZG9lcyBub3Qgd29yayBvbiBCU0RJIG9yIEhQLVVYCkBAIC02NDc4LDYgKzY2NjEsOTQgQEAKICAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgogICAgIGZpCiAKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgbWl4ZWQgc2lnbiBjb21wYXJpc29uIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1Xc2lnbi1jb21wYXJlIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgaWYgJHthY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3NpZ24tY29tcGFyZSIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIGlmICR7YWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZyIgPiY2OyB9CisKKyAgICAjIERvbid0IGVuYWJsZSB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcgaW4gZGVidWcgbW9kZSwgc2luY2UgaXQgdXN1YWxseQorICAgICMgcmVzdWx0cyBpbiBub24tc3RhbmRhcmQgY29kZSBwYXRocy4KKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nID0geWVzICYmIHRlc3QgIiRQeV9ERUJVRyIgIT0gInRydWUiCisgICAgdGhlbgorICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVd1bnJlYWNoYWJsZS1jb2RlIgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCkBAIC05MTgwLDYgKzk0NTEsMjMgQEAKIGZpCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWFkZHJlc3Mtc2FuaXRpemVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hZGRyZXNzX3Nhbml0aXplciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWRkcmVzc19zYW5pdGl6ZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2FkZHJlc3Nfc2FuaXRpemVyOworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRodmFsIiA+JjUKKyRhc19lY2hvICIkd2l0aHZhbCIgPiY2OyB9CitCQVNFQ0ZMQUdTPSItZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgJEJBU0VDRkxBR1MiCitMREZMQUdTPSItZnNhbml0aXplPWFkZHJlc3MgJExERkxBR1MiCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKICMgTW9zdCBTVlI0IHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzKSBuZWVkIC1sc29ja2V0IGFuZCAtbG5zbC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRfb3BlbiBpbiAtbG5zbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdF9vcGVuIGluIC1sbnNsLi4uICIgPiY2OyB9CkBAIC0xMDM0MCw2ICsxMDYyOCwzNiBAQAogCWZpCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDQU5fUkFXX0ZEX0ZSQU1FUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ0FOX1JBV19GRF9GUkFNRVMuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAvKiBDQU5fUkFXX0ZEX0ZSQU1FUyBhdmFpbGFibGUgY2hlY2sgKi8KKyNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+CitpbnQKK21haW4gKCkKK3sKK2ludCBjYW5fcmF3X2ZkX2ZyYW1lcyA9IENBTl9SQVdfRkRfRlJBTUVTOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUyAxIiA+PmNvbmZkZWZzLmgKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCitlbHNlCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExODI2LDYgKzEyMTQ0LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKIAorICAgICAgICBMSUJTPSIkTElCUyAtbHJ0IgogICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5jb25mZGVmcy5oCiAKIApAQCAtMTMyNjksNiArMTM1ODgsMzggQEAKIAogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgdW5zaWduZWQgaW50IGZwY3I7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAoZnBjcikpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChmcGNyKSk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2djY19hc21fZm9yX21jNjg4ODE9eWVzCitlbHNlCisgIGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNQorJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSIgPSB5ZXMKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIERldGVjdCB3aGV0aGVyIHN5c3RlbSBhcml0aG1ldGljIGlzIHN1YmplY3QgdG8geDg3LXN0eWxlIGRvdWJsZQogIyByb3VuZGluZyBpc3N1ZXMuICBUaGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBoYXMgbGl0dGxlIG1lYW5pbmcgb24gbm9uCiAjIElFRUUgNzU0IHBsYXRmb3Jtcy4gIE9uIElFRUUgNzU0LCB0ZXN0IHNob3VsZCByZXR1cm4gMSBpZiByb3VuZGluZwpAQCAtMTQwMTEsMTMgKzE0MzYyLDEzIEBACiAkYXNfZWNobyAiJEFCSUZMQUdTIiA+JjY7IH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgU09BQkkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgU09BQkkuLi4gIiA+JjY7IH0KLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU09BQkkiID4mNQogJGFzX2VjaG8gIiRTT0FCSSIgPiY2OyB9CiAKIAogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC0xNDQxOCw2ICsxNDc2OSw0OSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scmVhZGxpbmUgJFJFQURMSU5FX0xJQlMgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgYXBwZW5kX2hpc3RvcnkgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBhcHBlbmRfaGlzdG9yeSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3Rvcnk9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkxfQVBQRU5EX0hJU1RPUlkgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtMTUzMzQsNyArMTU3MjgsNyBAQAogZG9uZQogCiAKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBidWlsZCBkaXJlY3RvcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYnVpbGQgZGlyZWN0b3JpZXMuLi4gIiA+JjY7IH0KIGZvciBkaXIgaW4gJFNSQ0RJUlM7IGRvCkBAIC0xNTQ3NSw2ICsxNTg2OSw3MiBAQAogICAgIGVzYWMKIGZpCiAKKyMgQ2hlY2sgZm9yIHN0ZGF0b21pYy5oCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdGRhdG9taWMuaCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3RkYXRvbWljLmguLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgorICAgIGF0b21pY19pbnQgdmFsdWUgPSBBVE9NSUNfVkFSX0lOSVQoMSk7CisgICAgX0F0b21pYyB2b2lkICpweV9hdG9taWNfYWRkcmVzcyA9ICh2b2lkKikgJnZhbHVlOworICAgIGludCBtYWluKCkgeworICAgICAgaW50IGxvYWRlZF92YWx1ZSA9IGF0b21pY19sb2FkKCZ2YWx1ZSk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfc3RkYXRvbWljX2g9eWVzCitlbHNlCisgIGhhdmVfc3RkYXRvbWljX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3RkYXRvbWljX2giID4mNQorJGFzX2VjaG8gIiRoYXZlX3N0ZGF0b21pY19oIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfc3RkYXRvbWljX2giID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1REX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucy4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICB2b2xhdGlsZSBpbnQgdmFsID0gMTsKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIF9fYXRvbWljX2xvYWRfbigmdmFsLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9idWlsdGluX2F0b21pYz15ZXMKK2Vsc2UKKyAgaGF2ZV9idWlsdGluX2F0b21pYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9idWlsdGluX2F0b21pYyIgPiY1CiskYXNfZWNobyAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9idWlsdGluX2F0b21pYyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9CVUlMVElOX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyBlbnN1cmVwaXAgb3B0aW9uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlbnN1cmVwaXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVuc3VyZXBpcC4uLiAiID4mNjsgfQpAQCAtMTU1MDAsNiArMTU5NjAsNzQgQEAKICRhc19lY2hvICIkRU5TVVJFUElQIiA+JjY7IH0KIAogCisjIGNoZWNrIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIG9mIGEgZF90eXBlIGZpZWxkIGFuZCBEVF9VTktOT1dOIGlzIGRlZmluZWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPGRpcmVudC5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICBzdHJ1Y3QgZGlyZW50IGVudHJ5OworICAgICAgcmV0dXJuIGVudHJ5LmRfdHlwZSA9PSBEVF9VTktOT1dOOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9kaXJlbnRfZF90eXBlPXllcworZWxzZQorICBoYXZlX2RpcmVudF9kX3R5cGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2RpcmVudF9kX3R5cGUiID4mNQorJGFzX2VjaG8gIiRoYXZlX2RpcmVudF9kX3R5cGUiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0RJUkVOVF9EX1RZUEUgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgY2hlY2sgaWYgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgYXZhaWxhYmxlCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICAgICAgY2hhciBidWZmZXJbMV07CisgICAgICAgIGludCBuOworICAgICAgICAvKiBpZ25vcmUgdGhlIHJlc3VsdCwgUHl0aG9uIGNoZWNrcyBmb3IgRU5PU1lTIGF0IHJ1bnRpbWUgKi8KKyAgICAgICAgKHZvaWQpc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCBmbGFncyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD15ZXMKK2Vsc2UKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID4mNQorJGFzX2VjaG8gIiRoYXZlX2dldHJhbmRvbV9zeXNjYWxsIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjIE1pc2MvcHl0aG9uLWNvbmZpZy5zaCIKIApAQCAtMTYwMTIsNyArMTY1NDAsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNjA3NCw3ICsxNjYwMiw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy40CitweXRob24gY29uZmlnLnN0YXR1cyAzLjUKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzMzk0ZDg0Li40MDMwZTMzIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDcgKzMsNyBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjQpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKIAogQUNfUFJFUkVRKDIuNjUpCiAKQEAgLTQyNSw3ICs0MjUsNyBAQAogCWVzYWMKIAlfUFlUSE9OX0hPU1RfUExBVEZPUk09IiRNQUNIREVQJHtfaG9zdF9jcHU6Ky0kX2hvc3RfY3B1fSIKIGZpCi0JCisKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CiAjIGRpc2FibGUgZmVhdHVyZXMgaWYgaXQgaXMgZGVmaW5lZCwgd2l0aG91dCBhbnkgbWVhbnMgdG8gYWNjZXNzIHRoZXNlCiAjIGZlYXR1cmVzIGFzIGV4dGVuc2lvbnMuIEZvciB0aGVzZSBzeXN0ZW1zLCB3ZSBza2lwIHRoZSBkZWZpbml0aW9uIG9mCkBAIC01NTYsOSArNTU2LDYgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCRNQUNIREVQKQogCi1BQ19TVUJTVChQTEFURElSKQotUExBVERJUj1wbGF0LSRNQUNIREVQCi0KICMgUmVjb3JkIHRoZSBjb25maWd1cmUtdGltZSB2YWx1ZSBvZiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQsCiAjIGl0IG1heSBpbmZsdWVuY2UgdGhlIHdheSB3ZSBjYW4gYnVpbGQgZXh0ZW5zaW9ucywgc28gZGlzdHV0aWxzCiAjIG5lZWRzIHRvIGNoZWNrIGl0CkBAIC02NjcsNiArNjY0LDggQEAKIAlmaQogZmkKIEFDX1BST0dfQ0MKK0FDX1BST0dfQ1BQCitBQ19QUk9HX0dSRVAKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzI0LDYgKzcyMywxNDIgQEAKIGZpCiAKIAorTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQorQUNfU1VCU1QoTVVMVElBUkNIKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3NdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICBBQ19NU0dfUkVTVUxUKFskUExBVEZPUk1fVFJJUExFVF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQorICBmaQorZmkgCitQTEFURElSPXBsYXQtJE1BQ0hERVAKK0FDX1NVQlNUKFBMQVRESVIpCitBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQorCisKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgogTERGTEFHUz0iJExERkxBR1MgLVdsLC0tbm8tYXMtbmVlZGVkIgpAQCAtNzkxLDEwICs5MjYsNiBAQAogICAgIGVzYWM7OwogZXNhYwogCi1NVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCi1BQ19TVUJTVChNVUxUSUFSQ0gpCi0KLQogQUNfU1VCU1QoTElCUkFSWSkKIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQogaWYgdGVzdCAteiAiJExJQlJBUlkiCkBAIC05NjMsMTEgKzEwOTQsNiBAQAogCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCiAJICBCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgJHtMRF9MSUJSQVJZX1BBVEg6Kzoke0xEX0xJQlJBUllfUEFUSH19Ci0JICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0JICAgICAgRnJlZUJTRCopCi0JCVNPVkVSU0lPTj1gZWNobyAkU09WRVJTSU9OfGN1dCAtZCAiLiIgLWYgMWAKLQkJOzsKLQkgIGVzYWMKIAkgIElOU1RTT05BTUU9IiRMRExJQlJBUlkiLiRTT1ZFUlNJT04KIAkgIGlmIHRlc3QgIiR3aXRoX3B5ZGVidWciICE9IHllcwogICAgICAgICAgIHRoZW4KQEAgLTEwNDIsNiArMTE2OCwxNSBAQAogICAgIEFTRExHRU49IiRQWVRIT04iCiBmaQogCitBQ19TVUJTVChPUENPREVIR0VOKQorQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OLCBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uLCBub3QtZm91bmQpCitpZiB0ZXN0ICIkUFlUSE9OIiA9IG5vdC1mb3VuZDsgdGhlbgorICAgIE9QQ09ERUhHRU49IkBlY2hvIHB5dGhvbjogJFBZVEhPTiEgY2Fubm90IHJ1biBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IgorZWxzZQorICAgIE9QQ09ERUhHRU49IiRQWVRIT04iCitmaQorCisKIAogY2FzZSAkTUFDSERFUCBpbgogYnNkb3MqfGhwKnxIUCopCkBAIC0xMjM2LDYgKzEzNzEsNTIgQEAKICAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdzaWduLWNvbXBhcmUiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZykKKworICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xc2lnbi1jb21wYXJlIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZykKKworICAgICMgRG9uJ3QgZW5hYmxlIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyBpbiBkZWJ1ZyBtb2RlLCBzaW5jZSBpdCB1c3VhbGx5CisgICAgIyByZXN1bHRzIGluIG5vbi1zdGFuZGFyZCBjb2RlIHBhdGhzLgorICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmcgPSB5ZXMgJiYgdGVzdCAiJFB5X0RFQlVHIiAhPSAidHJ1ZSIKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3VucmVhY2hhYmxlLWNvZGUiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KQEAgLTIzMzIsNiArMjUxMywxNyBAQAogXSwKIFtBQ19NU0dfUkVTVUxUKGRlZmF1bHQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIpCitBQ19BUkdfV0lUSChhZGRyZXNzX3Nhbml0aXplciwKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBBZGRyZXNzU2FuaXRpemVyXSksCitbCitBQ19NU0dfUkVTVUxUKCR3aXRodmFsKQorQkFTRUNGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICRCQVNFQ0ZMQUdTIgorTERGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzICRMREZMQUdTIgorXSwKK1tBQ19NU0dfUkVTVUxUKG5vKV0pCisKICMgTW9zdCBTVlI0IHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzKSBuZWVkIC1sc29ja2V0IGFuZCAtbG5zbC4KIEFDX0NIRUNLX0xJQihuc2wsIHRfb3BlbiwgW0xJQlM9Ii1sbnNsICRMSUJTIl0pICMgU1ZSNAogQUNfQ0hFQ0tfTElCKHNvY2tldCwgc29ja2V0LCBbTElCUz0iLWxzb2NrZXQgJExJQlMiXSwgW10sICRMSUJTKSAjIFNWUjQgc29ja2V0cwpAQCAtMjgxNSw2ICszMDA3LDE2IEBACiAJZmkKIGZpCiAKK0FDX01TR19DSEVDS0lORyhmb3IgQ0FOX1JBV19GRF9GUkFNRVMpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIC8qIENBTl9SQVdfRkRfRlJBTUVTIGF2YWlsYWJsZSBjaGVjayAqLworI2luY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD5dXSwKK1tbaW50IGNhbl9yYXdfZmRfZnJhbWVzID0gQ0FOX1JBV19GRF9GUkFNRVM7XV0pXSxbCisgIEFDX0RFRklORShIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTLCAxLCBbRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBMaW51eCAzLjYgb3IgbGF0ZXIuXSkKKyAgQUNfTVNHX1JFU1VMVCh5ZXMpCitdLFsKKyAgQUNfTVNHX1JFU1VMVChubykKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyKQogQUNfQ09NUElMRV9JRkVMU0UoWwogICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPl1dLCBbW0ZTSU9SZWZOdW0gZlJlZiA9IDBdXSkKQEAgLTMyNjMsNiArMzQ2NSw3IEBACiAKIEFDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCiAgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIExJQlM9IiRMSUJTIC1scnQiCiAgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCiAgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKICAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCkBAIC0zODE3LDYgKzQwMjAsMTkgQEAKICAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgeDg3IGNvbnRyb2wgd29yZF0pCiBmaQogCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjcikKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKKyAgdW5zaWduZWQgaW50IGZwY3I7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAoZnBjcikpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChmcGNyKSk7CitdXSldLFtoYXZlX2djY19hc21fZm9yX21jNjg4ODE9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSkKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MSwgMSwKKyAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyXSkKK2ZpCisKICMgRGV0ZWN0IHdoZXRoZXIgc3lzdGVtIGFyaXRobWV0aWMgaXMgc3ViamVjdCB0byB4ODctc3R5bGUgZG91YmxlCiAjIHJvdW5kaW5nIGlzc3Vlcy4gIFRoZSByZXN1bHQgb2YgdGhpcyB0ZXN0IGhhcyBsaXR0bGUgbWVhbmluZyBvbiBub24KICMgSUVFRSA3NTQgcGxhdGZvcm1zLiAgT24gSUVFRSA3NTQsIHRlc3Qgc2hvdWxkIHJldHVybiAxIGlmIHJvdW5kaW5nCkBAIC00MDk4LDEyICs0MzE0LDEyIEBACiBBQ19NU0dfQ0hFQ0tJTkcoQUJJRkxBR1MpCiBBQ19NU0dfUkVTVUxUKCRBQklGTEFHUykKIEFDX01TR19DSEVDS0lORyhTT0FCSSkKLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIEFDX01TR19SRVNVTFQoJFNPQUJJKQogCiBBQ19TVUJTVChFWFRfU1VGRklYKQogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC00MjM4LDYgKzQ0NTQsMTAgQEAKICAgW0RlZmluZSBpZiB5b3UgY2FuIHR1cm4gb2ZmIHJlYWRsaW5lJ3Mgc2lnbmFsIGhhbmRsaW5nLl0pLCApCiBmaQogCitBQ19DSEVDS19MSUIocmVhZGxpbmUsIGFwcGVuZF9oaXN0b3J5LAorCUFDX0RFRklORShIQVZFX1JMX0FQUEVORF9ISVNUT1JZLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5XSksICwkUkVBRExJTkVfTElCUykKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtNDcxNSw3ICs0OTM1LDcgQEAKIGRvbmUKIAogQUNfU1VCU1QoU1JDRElSUykKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGJ1aWxkIGRpcmVjdG9yaWVzKQogZm9yIGRpciBpbiAkU1JDRElSUzsgZG8KICAgICBpZiB0ZXN0ICEgLWQgJGRpcjsgdGhlbgpAQCAtNDgwNyw2ICs1MDI3LDQ3IEBACiAgICAgZXNhYwogZmkKIAorIyBDaGVjayBmb3Igc3RkYXRvbWljLmgKK0FDX01TR19DSEVDS0lORyhmb3Igc3RkYXRvbWljLmgpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3RkYXRvbWljLmg+CisgICAgYXRvbWljX2ludCB2YWx1ZSA9IEFUT01JQ19WQVJfSU5JVCgxKTsKKyAgICBfQXRvbWljIHZvaWQgKnB5X2F0b21pY19hZGRyZXNzID0gKHZvaWQqKSAmdmFsdWU7CisgICAgaW50IG1haW4oKSB7CisgICAgICBpbnQgbG9hZGVkX3ZhbHVlID0gYXRvbWljX2xvYWQoJnZhbHVlKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgXV0pCitdLFtoYXZlX3N0ZGF0b21pY19oPXllc10sW2hhdmVfc3RkYXRvbWljX2g9bm9dKQorCitBQ19NU0dfUkVTVUxUKCRoYXZlX3N0ZGF0b21pY19oKQorCitpZiB0ZXN0ICIkaGF2ZV9zdGRhdG9taWNfaCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9TVERfQVRPTUlDLCAxLAorICAgICAgICAgICAgICBbSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmtdKQorZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworQUNfTVNHX0NIRUNLSU5HKGZvciBHQ0MgPj0gNC43IF9fYXRvbWljIGJ1aWx0aW5zKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgdm9sYXRpbGUgaW50IHZhbCA9IDE7CisgICAgaW50IG1haW4oKSB7CisgICAgICBfX2F0b21pY19sb2FkX24oJnZhbCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIF1dKQorXSxbaGF2ZV9idWlsdGluX2F0b21pYz15ZXNdLFtoYXZlX2J1aWx0aW5fYXRvbWljPW5vXSkKKworQUNfTVNHX1JFU1VMVCgkaGF2ZV9idWlsdGluX2F0b21pYykKKworaWYgdGVzdCAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfQlVJTFRJTl9BVE9NSUMsIDEsIFtIYXMgYnVpbHRpbiBhdG9taWNzXSkKK2ZpCisKICMgZW5zdXJlcGlwIG9wdGlvbgogQUNfTVNHX0NIRUNLSU5HKGZvciBlbnN1cmVwaXApCiBBQ19BUkdfV0lUSChlbnN1cmVwaXAsCkBAIC00ODIyLDYgKzUwODMsNTAgQEAKIEFDX01TR19SRVNVTFQoJEVOU1VSRVBJUCkKIEFDX1NVQlNUKEVOU1VSRVBJUCkKIAorIyBjaGVjayBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBvZiBhIGRfdHlwZSBmaWVsZCBhbmQgRFRfVU5LTk9XTiBpcyBkZWZpbmVkCitBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIHN0cnVjdCBkaXJlbnQgZW50cnk7CisgICAgICByZXR1cm4gZW50cnkuZF90eXBlID09IERUX1VOS05PV047CisgICAgfQorICBdXSkKK10sW2hhdmVfZGlyZW50X2RfdHlwZT15ZXNdLFtoYXZlX2RpcmVudF9kX3R5cGU9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9kaXJlbnRfZF90eXBlKQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX0RJUkVOVF9EX1RZUEUsIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBoYXMgYSBkX3R5cGUgZmllbGRdKQorZmkKKworIyBjaGVjayBpZiB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBhdmFpbGFibGUKK0FDX01TR19DSEVDS0lORyhmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworICAgIGludCBtYWluKCkgeworICAgICAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgICAgICBjaGFyIGJ1ZmZlclsxXTsKKyAgICAgICAgaW50IG47CisgICAgICAgIC8qIGlnbm9yZSB0aGUgcmVzdWx0LCBQeXRob24gY2hlY2tzIGZvciBFTk9TWVMgYXQgcnVudGltZSAqLworICAgICAgICAodm9pZClzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICBdXSkKK10sW2hhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9eWVzXSxbaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dldHJhbmRvbV9zeXNjYWxsKQorCitpZiB0ZXN0ICIkaGF2ZV9nZXRyYW5kb21fc3lzY2FsbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZV0pCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyBNaXNjL3B5dGhvbi1jb25maWcuc2gpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDg1NDkwYzguLjBkNDBjOTQgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTAxLDYgKzEwMSw5IEBACiAvKiBEZWZpbmUgaWYgYHVuc2V0ZW52YCBkb2VzIG5vdCByZXR1cm4gYW4gaW50LiAqLwogI3VuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAKKy8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KKyN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwogI3VuZGVmIEhBVkVfQzk5X0JPT0wKIApAQCAtMTgwLDYgKzE4Myw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RJUkVDVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIGhhcyBhIGRfdHlwZSBmaWVsZCAqLworI3VuZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfRElSRU5UX0gKQEAgLTMxMyw2ICszMTksOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX01DNjg4ODEKKwogLyogRGVmaW5lIGlmIHdlIGNhbiB1c2UgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YNjQKIApAQCAtMzg2LDYgKzM5NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3ZW50JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFBXRU5UCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRyZXNnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUUkVTR0lECiAKQEAgLTUxOSw2ICs1MzEsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAogCisvKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIExpbnV4IDMuNiBvciBsYXRlci4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuL3Jhdy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAogCkBAIC02OTMsNiArNzA4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVuYW1lYXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVOQU1FQVQKIAorLyogRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5ICovCisjdW5kZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC04NzEsNiArODg5LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1RETElCX0gKIAorLyogSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmsgKi8KKyN1bmRlZiBIQVZFX1NURF9BVE9NSUMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSRFVQCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMjc3OTY1OC4uZGE2NzczMSAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTI1LDYgKzI1LDExIEBACiBweV9jZmxhZ3Nfbm9kaXN0ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWV9DRkxBR1NfTk9ESVNUJykKIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSBjZmxhZ3MgKyAnICcgKyBweV9jZmxhZ3Nfbm9kaXN0CiAKK2NsYXNzIER1bW15OgorICAgICIiIkhhY2sgZm9yIHBhcmFsbGVsIGJ1aWxkIiIiCisgICAgUHJvY2Vzc1Bvb2xFeGVjdXRvciA9IE5vbmUKK3N5cy5tb2R1bGVzWydjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcyddID0gRHVtbXkKKwogZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgICMgY3Jvc3MgYnVpbGQKICAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgpAQCAtMTczLDYgKzE3OCw5IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3QpOgogICAgICAgICBidWlsZF9leHQuX19pbml0X18oc2VsZiwgZGlzdCkKICAgICAgICAgc2VsZi5mYWlsZWQgPSBbXQorICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQgPSBbXQorICAgICAgICBpZiAnLWonIGluIG9zLmVudmlyb24uZ2V0KCdNQUtFRkxBR1MnLCAnJyk6CisgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gVHJ1ZQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbnMoc2VsZik6CiAKQEAgLTI1Miw5ICsyNjAsMTMgQEAKIAogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCisgICAgICAgIGZvciBleHQgaW4gc2VsZi5leHRlbnNpb25zOgorICAgICAgICAgICAgc2VsZi5jaGVja19leHRlbnNpb25faW1wb3J0KGV4dCkKKwogICAgICAgICBsb25nZXN0ID0gbWF4KFtsZW4oZS5uYW1lKSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdLCBkZWZhdWx0PTApCi0gICAgICAgIGlmIHNlbGYuZmFpbGVkOgotICAgICAgICAgICAgbG9uZ2VzdCA9IG1heChsb25nZXN0LCBtYXgoW2xlbihuYW1lKSBmb3IgbmFtZSBpbiBzZWxmLmZhaWxlZF0pKQorICAgICAgICBpZiBzZWxmLmZhaWxlZCBvciBzZWxmLmZhaWxlZF9vbl9pbXBvcnQ6CisgICAgICAgICAgICBhbGxfZmFpbGVkID0gc2VsZi5mYWlsZWQgKyBzZWxmLmZhaWxlZF9vbl9pbXBvcnQKKyAgICAgICAgICAgIGxvbmdlc3QgPSBtYXgobG9uZ2VzdCwgbWF4KFtsZW4obmFtZSkgZm9yIG5hbWUgaW4gYWxsX2ZhaWxlZF0pKQogCiAgICAgICAgIGRlZiBwcmludF90aHJlZV9jb2x1bW4obHN0KToKICAgICAgICAgICAgIGxzdC5zb3J0KGtleT1zdHIubG93ZXIpCkBAIC0yODIsNiArMjk0LDE0IEBACiAgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQogICAgICAgICAgICAgcHJpbnQoKQogCisgICAgICAgIGlmIHNlbGYuZmFpbGVkX29uX2ltcG9ydDoKKyAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYuZmFpbGVkX29uX2ltcG9ydFs6XQorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIkZvbGxvd2luZyBtb2R1bGVzIGJ1aWx0IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICAgICIgYnV0IHdlcmUgcmVtb3ZlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIGltcG9ydGVkOiIpCisgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQorICAgICAgICAgICAgcHJpbnQoKQorCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogCiAgICAgICAgIGlmIGV4dC5uYW1lID09ICdfY3R5cGVzJzoKQEAgLTI5NSw2ICszMTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBzeXMuZXhjX2luZm8oKVsxXSkpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiBjaGVja19leHRlbnNpb25faW1wb3J0KHNlbGYsIGV4dCk6CisgICAgICAgICMgRG9uJ3QgdHJ5IHRvIGltcG9ydCBhbiBleHRlbnNpb24gdGhhdCBoYXMgZmFpbGVkIHRvIGNvbXBpbGUKKyAgICAgICAgaWYgZXh0Lm5hbWUgaW4gc2VsZi5mYWlsZWQ6CisgICAgICAgICAgICBzZWxmLmFubm91bmNlKAorICAgICAgICAgICAgICAgICdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIGZhaWxlZCBidWlsZCAiJXMiJyAlCisgICAgICAgICAgICAgICAgZXh0Lm5hbWUsIGxldmVsPTEpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAjIFdvcmthcm91bmQgZm9yIE1hYyBPUyBYOiBUaGUgQ2FyYm9uLWJhc2VkIG1vZHVsZXMgY2Fubm90IGJlCiAgICAgICAgICMgcmVsaWFibHkgaW1wb3J0ZWQgaW50byBhIGNvbW1hbmQtbGluZSBQeXRob24KICAgICAgICAgaWYgJ0NhcmJvbicgaW4gZXh0LmV4dHJhX2xpbmtfYXJnczoKQEAgLTMzOCw5ICszNjcsOSBAQAogICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZXh0Lm5hbWUsIGV4dF9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB3aHk6Ci0gICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCisgICAgICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQuYXBwZW5kKGV4dC5uYW1lKQogICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgnKioqIFdBUk5JTkc6IHJlbmFtaW5nICIlcyIgc2luY2UgaW1wb3J0aW5nIGl0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQogICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmlucGxhY2UKQEAgLTM1MCwxNyArMzc5LDYgQEAKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUobmV3bmFtZSkKICAgICAgICAgICAgIG9zLnJlbmFtZShleHRfZmlsZW5hbWUsIG5ld25hbWUpCiAKLSAgICAgICAgICAgICMgWFhYIC0tIFRoaXMgcmVsaWVzIG9uIGEgVmlsZSBIQUNLIGluCi0gICAgICAgICAgICAjIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb24oKS4gIFRoZQotICAgICAgICAgICAgIyBfYnVpbHRfb2JqZWN0cyBhdHRyaWJ1dGUgaXMgc3RvcmVkIHRoZXJlIHN0cmljdGx5IGZvcgotICAgICAgICAgICAgIyB1c2UgaGVyZS4KLSAgICAgICAgICAgICMgSWYgdGhlcmUgaXMgYSBmYWlsdXJlLCBfYnVpbHRfb2JqZWN0cyBtYXkgbm90IGJlIHRoZXJlLAotICAgICAgICAgICAgIyBzbyBjYXRjaCB0aGUgQXR0cmlidXRlRXJyb3IgYW5kIG1vdmUgb24uCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX2J1aWx0X29iamVjdHM6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCd1bmFibGUgdG8gcmVtb3ZlIGZpbGVzIChpZ25vcmVkKScpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGV4Y190eXBlLCB3aHksIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoJyoqKiBXQVJOSU5HOiBpbXBvcnRpbmcgZXh0ZW5zaW9uICIlcyIgJwpAQCAtNjAyLDYgKzYyMCw4IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0YnVmZmVyJywgWydfdGVzdGJ1ZmZlci5jJ10pICkKICAgICAgICAgIyBUZXN0IGxvYWRpbmcgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIG9uZSBjb21waWxlZCBmaWxlIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTY0MjEpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0aW1wb3J0bXVsdGlwbGUnLCBbJ190ZXN0aW1wb3J0bXVsdGlwbGUuYyddKSApCisgICAgICAgICMgVGVzdCBtdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXQgKFBFUCA0ODkpCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0bXVsdGlwaGFzZScsIFsnX3Rlc3RtdWx0aXBoYXNlLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTE1NTcsNyArMTU3Nyw3IEBACiAKICAgICAgICAgaWYgJ2QnIG5vdCBpbiBzeXMuYWJpZmxhZ3M6CiAgICAgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4bGltaXRlZCcsIFsneHhsaW1pdGVkLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsoJ1B5X0xJTUlURURfQVBJJywgJzB4MDMwNDAwMDAnKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDUwMDAwJyldKQogICAgICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCiAKICAgICAgICAgcmV0dXJuIG1pc3NpbmcK